'use strict';
var obsidian = require('obsidian');
var fs = require('fs');
class DataStoreEvents extends obsidian.Events {
trigger(name, ...data) {
super.trigger(name, ...data);
}
on(name, callback, ctx) {
return super.on(name, callback, ctx);
}
}
const CLASS_PINNED = 'pinned';
const CLASS_EXPANDED = 'expanded';
const CLASS_ACTIVE_NODE = 'active-node';
const CLASS_INACTIVE_NODE = 'inactive-node';
const CLASS_CONNECTED_ACTIVE_NODE = 'connected-active-node';
const CLASS_HOVER = 'hover';
const CLASS_UNHOVER = 'unhover';
const CLASS_PROTECTED = 'protected';
const CLASS_CONNECTED_HOVER = 'connected-hover';
const CLASS_FILTERED = 'filtered';
const CLASS_HARD_FILTERED = 'hard-filtered';
const CLASSES = [CLASS_PINNED, CLASS_EXPANDED, CLASS_ACTIVE_NODE,
CLASS_INACTIVE_NODE, CLASS_CONNECTED_ACTIVE_NODE, CLASS_HOVER, CLASS_UNHOVER,
CLASS_CONNECTED_HOVER, CLASS_PROTECTED, CLASS_FILTERED, CLASS_HARD_FILTERED];
const VIEWPORT_ANIMATION_TIME = 250;
const LAYOUT_ANIMATION_TIME = 1500;
const DISCRETE_LAYOUT_ANIMATION_TIME = 500;
const DISCRETE_SPACING_FACTOR = 0.5;
const DEBOUNCE_FOLLOW = 500;
const DEBOUNCE_LAYOUT = 2300;
const MIN_NODE_SIZE = 5;
const MAX_NODE_SIZE = 35;
const MIN_FONT_SIZE = 5;
const MAX_FONT_SIZE = 11;
const MIN_TEXT_WIDTH = 65;
const MAX_TEXT_WIDTH = 100;
const JUGGL_VIEW_TYPE = 'juggl_view';
const JUGGL_NODES_VIEW_TYPE = 'juggl_nodes';
const JUGGL_STYLE_VIEW_TYPE = 'juggl_style';
const JUGGL_HELP_VIEW = 'juggl-help';
const DATA_FOLDER = function (vault) {
return `${vault.configDir}/plugins/juggl/`;
};
const CAT_DANGLING = 'dangling';
const CORE_STORE_ID = 'core';
class VizId {
constructor(id, storeId) {
this.id = id;
this.storeId = storeId;
}
toString() {
return `${this.storeId}:${this.id}`;
}
toId() {
return this.toString();
}
static fromId(id) {
const split = id.split(':');
const storeId = split[0];
const _id = split.slice(1).join(':');
return new VizId(_id, storeId);
}
static fromNode(node) {
return VizId.fromId(node.id());
}
static fromNodes(nodes) {
return nodes.map((n) => VizId.fromNode(n));
}
static fromFile(file) {
return new VizId(file.name, 'core');
}
static toId(id, storeId) {
return new VizId(id, storeId).toId();
}
}
const _parseTags = function (tags) {
return [].concat(...tags
.map((tag) => {
tag = tag.slice(1);
const hSplit = tag.split('/');
const tags = [];
for (const i in hSplit) {
const hTag = hSplit.slice(0, parseInt(i) + 1).join('-');
tags.push(`tag-${hTag}`);
}
return tags;
}));
};
const getClasses = function (file, metadataCache) {
if (file) {
const classes = [];
if (['png', 'jpg', 'jpeg', 'gif', 'bmp', 'svg', 'tiff'].contains(file.extension)) {
classes.push('image');
}
else if (['mp3', 'webm', 'wav', 'm4a', 'ogg', '3gp', 'flac'].contains(file.extension)) {
classes.push('audio');
}
else if (['mp4', 'webm', 'ogv'].contains(file.extension)) {
classes.push('video');
}
else if (file.extension === 'pdf') {
classes.push('pdf');
}
// This is replaced by the 'path' data attribute.
// if (!(file.parent.name === '/' || file.parent.name === '')) {
// classes.push(`folder-${file.parent.name
// .replace(' ', '_')}`);
// } else {
// classes.push('root');
// }
if (file.extension === 'md') {
classes.push('note');
const cache = metadataCache.getFileCache(file);
if (cache?.frontmatter) {
if ('image' in cache.frontmatter) {
classes.push('image');
}
if ('tags' in cache.frontmatter) {
const tags = obsidian.parseFrontMatterTags(cache.frontmatter);
if (tags) {
classes.push(..._parseTags(tags));
}
}
if ('cssclass' in cache.frontmatter) {
const clazzes = obsidian.parseFrontMatterStringArray(cache.frontmatter, 'cssclass');
if (clazzes) {
classes.push(...clazzes);
}
}
}
if (cache?.tags) {
classes.push(..._parseTags(cache.tags.map((t) => t.tag)));
}
}
else {
classes.push('file');
}
return classes;
}
return [CAT_DANGLING];
};
const nodeFromFile = async function (file, plugin, settings, id) {
if (!id) {
id = VizId.toId(file.name, CORE_STORE_ID);
}
const cache = plugin.app.metadataCache.getFileCache(file);
const name = file.extension === 'md' ? file.basename : file.name;
const classes = getClasses(file, plugin.app.metadataCache).join(' ');
const data = {
id,
name,
path: file.path,
};
if (['png', 'jpg', 'jpeg', 'gif', 'bmp', 'svg', 'tiff'].contains(file.extension)) {
try {
// @ts-ignore
data['resource_url'] = `http://localhost:${plugin.settings.imgServerPort}/${encodeURI(file.path)}`;
}
catch { }
}
if (settings.readContent && file.extension == 'md') {
data['content'] = await plugin.app.vault.cachedRead(file);
}
const frontmatter = cache?.frontmatter;
if (frontmatter) {
Object.keys(frontmatter).forEach((k) => {
if (!(k === 'position')) {
if (k === 'image') {
const imageField = frontmatter[k];
try {
// Check if url. throws error otherwise
new URL(imageField);
data[k] = imageField;
}
catch {
try {
// @ts-ignore
data[k] = `http://localhost:${plugin.settings.imgServerPort}/${encodeURI(imageField)}`;
}
catch { }
}
}
else {
data[k] = frontmatter[k];
}
}
});
}
return {
group: 'nodes',
data: data,
classes: classes,
};
};
const nodeDangling = function (path) {
return {
group: 'nodes',
data: {
id: VizId.toId(path, CORE_STORE_ID),
name: path,
},
classes: 'dangling',
};
};
const wikilinkRegex = '\\[\\[([^\\]\\r\\n]+?)\\]\\]';
const nameRegex = '[^\\W\\d]\\w*';
const regexEscape = function (str) {
return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
};
const parseTypedLink = function (link, line, typedLinkPrefix) {
// TODO: This is something specific I use, but shouldn't keep being in this repo.
const regexPublishedIn = new RegExp(`^${regexEscape(typedLinkPrefix)} (publishedIn) (\\d\\d\\d\\d) (${wikilinkRegex},? *)+$`);
const matchPI = regexPublishedIn.exec(line);
if (!(matchPI === null)) {
return {
class: 'type-publishedIn',
isInline: false,
properties: {
year: matchPI[2],
context: '',
type: 'publishedIn',
},
};
}
// Intuition: Start with the typed link prefix. Then a neo4j name (nameRegex).
// Then one or more of the wikilink group: wikilink regex separated by optional comma and multiple spaces
const regex = new RegExp(`^${regexEscape(typedLinkPrefix)} (${nameRegex}) (${wikilinkRegex},? *)+$`);
const match = regex.exec(line);
const splitLink = link.original.split('|');
let alias = null;
if (splitLink.length > 1) {
alias = splitLink.slice(1).join().slice(0, -2);
}
if (!(match === null)) {
return {
class: `type-${match[1]}`,
isInline: false,
properties: {
alias: alias,
context: '',
type: match[1],
},
};
}
return null;
};
const parseRefCache = function (ref, content, id, source, target, typedLinkPrefix) {
const line = content[ref.position.start.line];
let data = {
id: id,
source: source,
target: target,
context: line,
edgeCount: 1,
};
const splitLink = ref.original.split('|');
if (splitLink.length > 1) {
data['alias'] = splitLink.slice(1).join().slice(0, -2);
}
let classes = '';
const typedLink = parseTypedLink(ref, line, typedLinkPrefix);
if (typedLink === null) {
classes = `${classes} inline`;
}
else {
data = { ...typedLink.properties, ...data };
classes = `${classes} ${typedLink.class}`;
}
return {
group: 'edges',
data: data,
classes: classes,
};
};
const OBSIDIAN_STORE_NAME = 'Obsidian';
class ObsidianStore extends obsidian.Component {
constructor(plugin) {
super();
this.plugin = plugin;
this.events = new DataStoreEvents();
this.metadata = plugin.app.metadataCache;
this.vault = plugin.app.vault;
}
getEvents(view) {
return this.events;
}
async createEdges(srcFile, srcId, toNodes, view) {
if (!(srcFile.extension === 'md')) {
return [];
}
const cache = this.metadata.getFileCache(srcFile);
if (!cache) {
return [];
}
const edges = {};
const content = (await this.vault.cachedRead(srcFile)).split('\n');
obsidian.iterateCacheRefs(cache, (ref) => {
const otherId = this.getOtherId(ref, srcFile.path).toId();
if (toNodes.$id(otherId).length > 0) {
const edgeId = `${srcId}->${otherId}`;
const count = edgeId in edges ? edges[edgeId].length + 1 : 1;
const edge = parseRefCache(ref, content, `${edgeId}${count}`, srcId, otherId, this.plugin.settings.typedLinkPrefix);
if (edgeId in edges) {
edges[edgeId].push(edge);
}
else {
edges[edgeId] = [edge];
}
}
});
if (view.settings.mergeEdges) {
// Merges inline edges.
const returnEdges = [];
for (const edgeId of Object.keys(edges)) {
const connectedEdges = edges[edgeId];
let inlineEdge = null;
let countInline = 0;
for (const edge of connectedEdges) {
if (edge.classes === ' inline') {
if (inlineEdge) {
inlineEdge.data.context += `
---
${edge.data.context}`;
countInline += 1;
}
else {
inlineEdge = edge;
countInline = 1;
}
}
else {
returnEdges.push(edge);
}
}
if (inlineEdge) {
inlineEdge.data.edgeCount = countInline;
returnEdges.push(inlineEdge);
}
}
return returnEdges;
}
return [].concat(...Object.values(edges));
}
async connectNodes(allNodes, newNodes, view) {
const edges = [];
// Find edges from newNodes to other nodes
// @ts-ignore
for (const node of newNodes) {
const id = VizId.fromNode(node);
if (id.storeId === this.storeId()) {
const file = this.getFile(id);
if (file) {
const srcId = id.toId();
edges.push(...await this.createEdges(file, srcId, allNodes, view));
}
}
}
// @ts-ignore
for (const node of allNodes.difference(newNodes)) {
// For all nodes other than the new nodes
const id = VizId.fromNode(node);
if (id.storeId === this.storeId()) {
const file = this.getFile(id);
if (file) {
const srcId = id.toId();
// Connect only to newNodes!
edges.push(...await this.createEdges(file, srcId, newNodes, view));
}
}
}
return edges;
}
getOtherId(link, sourcePath) {
const path = obsidian.getLinkpath(link.link);
const file = this.metadata.getFirstLinkpathDest(path, sourcePath);
if (file) {
return new VizId(file.name, this.storeId());
}
else {
return new VizId(path, this.storeId());
}
}
async getNodeFromLink(link, sourcePath, graph) {
const path = obsidian.getLinkpath(link.link);
const file = this.metadata.getFirstLinkpathDest(path, sourcePath);
if (file) {
return await nodeFromFile(file, this.plugin, graph.settings);
}
else {
return nodeDangling(path);
}
}
getFile(nodeId) {
return this.metadata.getFirstLinkpathDest(nodeId.id, '');
}
async fillWithBacklinks(nodes, nodeId, graph) {
// Could be an expensive operation... No cached backlinks implementation is available in the Obsidian API though.
if (nodeId.storeId === 'core') {
const path = this.getFile(nodeId).path;
// @ts-ignore
const resolvedLinks = this.metadata.resolvedLinks;
for (const otherPath of Object.keys(resolvedLinks)) {
if (path in resolvedLinks[otherPath]) {
const file = this.vault.getAbstractFileByPath(otherPath);
const id = VizId.fromFile(file).toId();
if (!(id in nodes)) {
nodes[id] = await nodeFromFile(file, this.plugin, graph.settings);
}
}
}
}
}
async getNeighbourhood(nodeIds, viz) {
const nodes = {};
for (const nodeId of nodeIds) {
if (nodeId.storeId === this.storeId()) {
const file = this.getFile(nodeId);
if (file === null) {
continue;
}
const cache = this.metadata.getFileCache(file);
if (cache === null) {
continue;
}
if (!(nodeId.toId() in nodes)) {
nodes[nodeId.toId()] = await nodeFromFile(file, this.plugin, viz.settings);
}
const promiseNodes = {};
obsidian.iterateCacheRefs(cache, (ref) => {
const id = this.getOtherId(ref, file.path).toId();
if (!(id in nodes)) {
promiseNodes[id] = this.getNodeFromLink(ref, file.path, viz);
}
});
for (const id of Object.keys(promiseNodes)) {
if (!(id in nodes)) {
nodes[id] = await promiseNodes[id];
}
}
await this.fillWithBacklinks(nodes, nodeId, viz);
}
}
return Object.values(nodes);
}
storeId() {
return 'core';
}
get(nodeId, view) {
const file = this.getFile(nodeId);
if (file === null) {
return null;
}
const cache = this.metadata.getFileCache(file);
if (cache === null) {
console.log('returning empty cache', nodeId, view);
return null;
}
return Promise.resolve(nodeFromFile(file, this.plugin, view.settings));
}
async refreshNode(id, view) {
const idS = id.toId();
let correctEdges;
let node = view.viz.$id(idS);
if (this.getFile(id) === null) {
// File does not exist
if (node) {
// If a node exists for this file, remove it.
node.remove();
view.onGraphChanged(true, true);
}
return;
}
if (node.length > 0 && node.hasClass(CLASS_EXPANDED)) {
correctEdges = await view.expand(node, true, false);
}
else {
const nodeDef = await this.get(id, view);
view.mergeToGraph([nodeDef], true, false);
node = view.viz.$id(idS);
const edges = await view.buildEdges(node);
correctEdges = view.mergeToGraph(edges, true, false);
}
// Remove outgoing edges that no longer exist.
const removed = node.connectedEdges()
.difference(correctEdges.merged)
.remove();
if (removed.length > 0 || correctEdges.added.length > 0) {
view.onGraphChanged(true, true);
}
}
onload() {
super.onload();
const store = this;
this.registerEvent(this.metadata.on('changed', (file) => {
store.plugin.activeGraphs().forEach(async (v) => {
await store.refreshNode(VizId.fromFile(file), v);
});
}));
this.registerEvent(this.vault.on('rename', (file, oldPath) => {
if (file instanceof obsidian.TFile) {
const id = VizId.fromFile(file);
const oldId = VizId.fromPath(oldPath);
store.plugin.activeGraphs().forEach(async (v) => {
setTimeout(async () => {
// Changing the ID of a node in Cytoscape is not allowed, so remove and then restore.
// Put in setTimeout because Obsidian doesn't immediately update the metadata on rename...
v.viz.$id(oldId.toId()).remove();
await store.refreshNode(id, v);
}, 500);
});
}
}));
this.registerEvent(this.vault.on('delete', (file) => {
if (file instanceof obsidian.TFile) {
store.plugin.activeGraphs().forEach((v) => {
v.viz.$id(VizId.fromFile(file).toId()).remove();
});
}
}));
}
}
function noop$2() { }
function run$3(fn) {
return fn();
}
function blank_object() {
return Object.create(null);
}
function run_all(fns) {
fns.forEach(run$3);
}
function is_function(thing) {
return typeof thing === 'function';
}
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
let src_url_equal_anchor;
function src_url_equal(element_src, url) {
if (!src_url_equal_anchor) {
src_url_equal_anchor = document.createElement('a');
}
src_url_equal_anchor.href = url;
return element_src === src_url_equal_anchor.href;
}
function is_empty(obj) {
return Object.keys(obj).length === 0;
}
function append(target, node) {
target.appendChild(node);
}
function insert(target, node, anchor) {
target.insertBefore(node, anchor || null);
}
function detach(node) {
node.parentNode.removeChild(node);
}
function destroy_each(iterations, detaching) {
for (let i = 0; i < iterations.length; i += 1) {
if (iterations[i])
iterations[i].d(detaching);
}
}
function element$1(name) {
return document.createElement(name);
}
function svg_element(name) {
return document.createElementNS('http://www.w3.org/2000/svg', name);
}
function text(data) {
return document.createTextNode(data);
}
function space() {
return text(' ');
}
function empty() {
return text('');
}
function listen(node, event, handler, options) {
node.addEventListener(event, handler, options);
return () => node.removeEventListener(event, handler, options);
}
function attr(node, attribute, value) {
if (value == null)
node.removeAttribute(attribute);
else if (node.getAttribute(attribute) !== value)
node.setAttribute(attribute, value);
}
function to_number(value) {
return value === '' ? null : +value;
}
function children(element) {
return Array.from(element.childNodes);
}
function set_data(text, data) {
data = '' + data;
if (text.wholeText !== data)
text.data = data;
}
function set_input_value(input, value) {
input.value = value == null ? '' : value;
}
function set_style(node, key, value, important) {
node.style.setProperty(key, value, important ? 'important' : '');
}
function select_option(select, value) {
for (let i = 0; i < select.options.length; i += 1) {
const option = select.options[i];
if (option.__value === value) {
option.selected = true;
return;
}
}
select.selectedIndex = -1; // no option should be selected
}
function select_value(select) {
const selected_option = select.querySelector(':checked') || select.options[0];
return selected_option && selected_option.__value;
}
let current_component;
function set_current_component(component) {
current_component = component;
}
const dirty_components = [];
const binding_callbacks = [];
const render_callbacks = [];
const flush_callbacks = [];
const resolved_promise = Promise.resolve();
let update_scheduled = false;
function schedule_update() {
if (!update_scheduled) {
update_scheduled = true;
resolved_promise.then(flush);
}
}
function add_render_callback(fn) {
render_callbacks.push(fn);
}
// flush() calls callbacks in this order:
// 1. All beforeUpdate callbacks, in order: parents before children
// 2. All bind:this callbacks, in reverse order: children before parents.
// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT
// for afterUpdates called during the initial onMount, which are called in
// reverse order: children before parents.
// Since callbacks might update component values, which could trigger another
// call to flush(), the following steps guard against this:
// 1. During beforeUpdate, any updated components will be added to the
// dirty_components array and will cause a reentrant call to flush(). Because
// the flush index is kept outside the function, the reentrant call will pick
// up where the earlier call left off and go through all dirty components. The
// current_component value is saved and restored so that the reentrant call will
// not interfere with the "parent" flush() call.
// 2. bind:this callbacks cannot trigger new flush() calls.
// 3. During afterUpdate, any updated components will NOT have their afterUpdate
// callback called a second time; the seen_callbacks set, outside the flush()
// function, guarantees this behavior.
const seen_callbacks = new Set();
let flushidx = 0; // Do *not* move this inside the flush() function
function flush() {
const saved_component = current_component;
do {
// first, call beforeUpdate functions
// and update components
while (flushidx < dirty_components.length) {
const component = dirty_components[flushidx];
flushidx++;
set_current_component(component);
update$1(component.$$);
}
set_current_component(null);
dirty_components.length = 0;
flushidx = 0;
while (binding_callbacks.length)
binding_callbacks.pop()();
// then, once components are updated, call
// afterUpdate functions. This may cause
// subsequent updates...
for (let i = 0; i < render_callbacks.length; i += 1) {
const callback = render_callbacks[i];
if (!seen_callbacks.has(callback)) {
// ...so guard against infinite loops
seen_callbacks.add(callback);
callback();
}
}
render_callbacks.length = 0;
} while (dirty_components.length);
while (flush_callbacks.length) {
flush_callbacks.pop()();
}
update_scheduled = false;
seen_callbacks.clear();
set_current_component(saved_component);
}
function update$1($$) {
if ($$.fragment !== null) {
$$.update();
run_all($$.before_update);
const dirty = $$.dirty;
$$.dirty = [-1];
$$.fragment && $$.fragment.p($$.ctx, dirty);
$$.after_update.forEach(add_render_callback);
}
}
const outroing = new Set();
let outros;
function group_outros() {
outros = {
r: 0,
c: [],
p: outros // parent group
};
}
function check_outros() {
if (!outros.r) {
run_all(outros.c);
}
outros = outros.p;
}
function transition_in(block, local) {
if (block && block.i) {
outroing.delete(block);
block.i(local);
}
}
function transition_out(block, local, detach, callback) {
if (block && block.o) {
if (outroing.has(block))
return;
outroing.add(block);
outros.c.push(() => {
outroing.delete(block);
if (callback) {
if (detach)
block.d(1);
callback();
}
});
block.o(local);
}
}
function create_component(block) {
block && block.c();
}
function mount_component(component, target, anchor, customElement) {
const { fragment, on_mount, on_destroy, after_update } = component.$$;
fragment && fragment.m(target, anchor);
if (!customElement) {
// onMount happens before the initial afterUpdate
add_render_callback(() => {
const new_on_destroy = on_mount.map(run$3).filter(is_function);
if (on_destroy) {
on_destroy.push(...new_on_destroy);
}
else {
// Edge case - component was destroyed immediately,
// most likely as a result of a binding initialising
run_all(new_on_destroy);
}
component.$$.on_mount = [];
});
}
after_update.forEach(add_render_callback);
}
function destroy_component(component, detaching) {
const $$ = component.$$;
if ($$.fragment !== null) {
run_all($$.on_destroy);
$$.fragment && $$.fragment.d(detaching);
// TODO null out other refs, including component.$$ (but need to
// preserve final state?)
$$.on_destroy = $$.fragment = null;
$$.ctx = [];
}
}
function make_dirty(component, i) {
if (component.$$.dirty[0] === -1) {
dirty_components.push(component);
schedule_update();
component.$$.dirty.fill(0);
}
component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));
}
function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {
const parent_component = current_component;
set_current_component(component);
const $$ = component.$$ = {
fragment: null,
ctx: null,
// state
props,
update: noop$2,
not_equal,
bound: blank_object(),
// lifecycle
on_mount: [],
on_destroy: [],
on_disconnect: [],
before_update: [],
after_update: [],
context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
// everything else
callbacks: blank_object(),
dirty,
skip_bound: false,
root: options.target || parent_component.$$.root
};
append_styles && append_styles($$.root);
let ready = false;
$$.ctx = instance
? instance(component, options.props || {}, (i, ret, ...rest) => {
const value = rest.length ? rest[0] : ret;
if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
if (!$$.skip_bound && $$.bound[i])
$$.bound[i](value);
if (ready)
make_dirty(component, i);
}
return ret;
})
: [];
$$.update();
ready = true;
run_all($$.before_update);
// `false` as a special case of no DOM component
$$.fragment = create_fragment ? create_fragment($$.ctx) : false;
if (options.target) {
if (options.hydrate) {
const nodes = children(options.target);
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
$$.fragment && $$.fragment.l(nodes);
nodes.forEach(detach);
}
else {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
$$.fragment && $$.fragment.c();
}
if (options.intro)
transition_in(component.$$.fragment);
mount_component(component, options.target, options.anchor, options.customElement);
flush();
}
set_current_component(parent_component);
}
/**
* Base class for Svelte components. Used when dev=false.
*/
class SvelteComponent {
$destroy() {
destroy_component(this, 1);
this.$destroy = noop$2;
}
$on(type, callback) {
const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));
callbacks.push(callback);
return () => {
const index = callbacks.indexOf(callback);
if (index !== -1)
callbacks.splice(index, 1);
};
}
$set($$props) {
if (this.$$set && !is_empty($$props)) {
this.$$.skip_bound = true;
this.$$set($$props);
this.$$.skip_bound = false;
}
}
}
const STYLESHEET_PATH = function (vault) {
return `${vault.configDir}/plugins/juggl/graph.css`;
};
const SHAPES = ['ellipse',
'rectangle',
'triangle',
'diamond',
'pentagon',
'hexagon',
'tag',
'rhomboid',
'star',
'vee',
'round-rectangle',
'round-triangle',
'round-diamond',
'round-pentagon',
'round-hexagon',
'round-tag',
];
const DEFAULT_USER_SHEET = `
/* For a full overview of styling options, see https://js.cytoscape.org/#style */
`;
const YAML_MODIFY_SHEET = `
node[title] {
label: data(title);
}
node[color] {
background-color: data(color);
}
node[shape] {
shape: data(shape);
}
node[width] {
width: data(width);
}
node[height] {
width: data(height);
}
node[image] {
background-image: data(image);
}
`;
const getGraphColor = function (clazz) {
// Hacky way to get style properties set for Obsidians graph view
const graphDiv = document.createElement('div');
graphDiv.addClass('graph-view', clazz);
document.body.appendChild(graphDiv);
const computedColor = getComputedStyle(graphDiv).getPropertyValue('color');
graphDiv.detach();
return computedColor;
};
/*
defaultSheet comes before graph.css, yamlModifySheet comes after.
*/
class GraphStyleSheet {
constructor(plugin) {
this.defaultSheet = this.getDefaultStylesheet();
this.yamlModifySheet = YAML_MODIFY_SHEET;
this.plugin = plugin;
}
async getStylesheet(viz) {
const file = this.plugin.vault.adapter.getFullPath(STYLESHEET_PATH(this.plugin.vault));
// const customSheet = '';
let customSheet = '';
try {
customSheet = await fs.promises.readFile(file, 'utf-8')
.catch(async (err) => {
if (err.code === 'ENOENT') {
const cstmSheet = DEFAULT_USER_SHEET;
await fs.promises.writeFile(file, cstmSheet);
return cstmSheet;
}
else {
throw err;
}
});
}
catch (e) {
console.log('Couldn\'t load user stylesheet. This is probably because we are on mobile');
console.log(e);
}
// TODO: Ordering: If people specify some new YAML property to take into account, style groups will override this!
let globalGroups = '';
if ('settings' in this.plugin) {
// @ts-ignore
globalGroups = this.styleGroupsToSheet(this.plugin.settings.globalStyleGroups, 'global');
}
const localGroups = this.styleGroupsToSheet(viz.settings.styleGroups, 'local');
return this.defaultSheet + globalGroups + customSheet + localGroups + this.yamlModifySheet;
}
colorToRGBA(col) {
const canvas = document.createElement('canvas');
canvas.width = canvas.height = 1;
const ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, 1, 1);
// In order to detect invalid values,
// we can't rely on col being in the same format as what fillStyle is computed as,
// but we can ask it to implicitly compute a normalized value twice and compare.
ctx.fillStyle = '#000';
ctx.fillStyle = col;
const computed = ctx.fillStyle;
ctx.fillStyle = '#fff';
ctx.fillStyle = col;
if (computed !== ctx.fillStyle) {
return; // invalid color
}
ctx.fillRect(0, 0, 1, 1);
const rgba = [...ctx.getImageData(0, 0, 1, 1).data];
return `rgb(${rgba[0]}, ${rgba[1]}, ${rgba[2]})`;
}
styleGroupsToSheet(groups, groupPrefix) {
let sheet = '';
const parser = new DOMParser;
for (const [index, val] of groups.entries()) {
if (val.show) {
let icon = '';
if (val.icon && val.icon.path) {
const svg = '' +
'' +
'';
const html = parser.parseFromString(svg, 'text/xml').documentElement.outerHTML;
icon = `background-image: url('data:image/svg+xml,${encodeURIComponent(html)}');`;
}
// Until size = 1, let text size linearly scale with node, then scale the square root.
const textSizeModifier = Math.max(Math.min(val.size, 1), Math.sqrt(val.size));
sheet += `
node.${groupPrefix}-${index} {
background-color: ${val.color};
shape: ${val.shape};
background-fit: contain;
${icon}
width: mapData(degree, 0, 60, ${MIN_NODE_SIZE * val.size}, ${MAX_NODE_SIZE * val.size});
height: mapData(degree, 0, 60, ${MIN_NODE_SIZE * val.size}, ${MAX_NODE_SIZE * val.size});
font-size: mapData(degree, 0, 60, ${MIN_FONT_SIZE * textSizeModifier}, ${MAX_FONT_SIZE * textSizeModifier});
text-max-width: mapData(degree, 0, 60, ${Math.round(MIN_TEXT_WIDTH * textSizeModifier)}px, ${Math.round(MAX_TEXT_WIDTH * textSizeModifier)}px);
}
`;
}
else {
sheet += `
node.${groupPrefix}-${index} {
display: none;
}
`;
}
}
return sheet;
}
getDefaultStylesheet() {
const style = getComputedStyle(document.body);
let font = style.getPropertyValue('--text');
font = font.replace('BlinkMacSystemFont,', ''); // This crashes electron for some reason.
if (font.length === 0) {
font = 'Helvetica Neue';
}
const fillColor = getGraphColor('color-fill');
const fillHighlightColor = getGraphColor('color-fill-highlight');
const accentBorderColor = getGraphColor('color-circle');
const lineColor = getGraphColor('color-line');
const lineHighlightColor = getGraphColor('color-line-highlight');
const textColor = getGraphColor('color-text');
const danglingColor = getGraphColor('color-fill-unresolved');
return `
node {
background-color: ${fillColor};
color: ${textColor};
font-family: ${font};
text-valign: bottom;
shape: ellipse;
border-width: 0;
text-wrap: wrap;
min-zoomed-font-size: 8;
}
node[name] {
label: data(name);
}
node[degree] {
width: mapData(degree, 0, 60, ${MIN_NODE_SIZE}, ${MAX_NODE_SIZE});
height: mapData(degree, 0, 60, ${MIN_NODE_SIZE}, ${MAX_NODE_SIZE});
font-size: mapData(degree, 0, 60, ${MIN_FONT_SIZE}, ${MAX_FONT_SIZE});
text-opacity: mapData(degree, 0, 60, 0.7, 1);
text-max-width: mapData(degree, 0, 60, ${MIN_TEXT_WIDTH}px, ${MAX_TEXT_WIDTH}px);
}
node:selected {
background-blacken: 0.3;
font-weight: bold;
}
node:selected[degree] {
border-width: mapData(degree, 0, 60, 1, 3);
}
.dangling {
background-color: ${danglingColor};
}
.image {
shape: round-rectangle;
width: 50;
height: 50;
background-opacity: 0;
background-image: data(resource_url);
background-image-crossorigin: anonymous;
background-image-opacity: 1;
background-fit: contain;
font-size: 0;
background-clip: node;
}
.image.note {
font-size: mapData(degree, 0, 60, 5, 11);
}
edge {
line-color: ${lineColor};
loop-sweep: -50deg;
loop-direction: -45deg;
width: 0.70;
target-arrow-shape: vee;
target-arrow-fill: filled;
target-arrow-color: ${lineColor};
arrow-scale: 0.55;
font-size: 6;
font-family: ${font};
color: ${textColor};
curve-style: straight;
}
edge[edgeCount] {
width: mapData(edgeCount, 1, 50, 0.55, 3);
arrow-scale: mapData(edgeCount, 1, 50, 0.35, 1.5);
}
edge:selected {
width: 0.7;
font-weight: bold;
line-color: ${lineHighlightColor};
}
:loop {
display: none;
}
edge[type] {
label: data(type);
}
.inactive-node,
.unhover {
opacity: 0.3;
}
node.active-node,
node.hover {
background-color: ${fillHighlightColor};
font-weight: bold;
border-width: 0.4;
border-color: ${accentBorderColor};
opacity: 1;
}
edge.hover,
edge.connected-active-node,
edge.connected-hover {
width: 1;
opacity: 1;
}
edge.hover,
edge.connected-hover {
font-weight: bold;
line-color: ${lineHighlightColor};
target-arrow-color: ${lineHighlightColor};
}
node.pinned {
border-style: dotted;
border-width: 2;
}
node.protected {
ghost: yes;
ghost-offset-x: 1px;
ghost-offset-y: 1px;
ghost-opacity: 0.5;
}
node.hard-filtered,
node.filtered {
display: none;
}
`;
}
}
/* src/ui/settings/AppearanceSettings.svelte generated by Svelte v3.45.0 */
function create_fragment$c(ctx) {
let h3;
let t1;
let p;
let t2;
let t3;
let t4;
let a;
let t6;
let t7;
let button;
let mounted;
let dispose;
return {
c() {
h3 = element$1("h3");
h3.textContent = "Appearance";
t1 = space();
p = element$1("p");
t2 = text("You can style the graph with css. This is done in the ");
t3 = text(/*stylesheetPath*/ ctx[0]);
t4 = text(" file.\n See ");
a = element$1("a");
a.textContent = "this page";
t6 = text(" for help with styling.");
t7 = space();
button = element$1("button");
button.textContent = "Open graph.css in default editor.";
attr(a, "href", "https://publish.obsidian.md/semantic-obsidian/Node+styling");
},
m(target, anchor) {
insert(target, h3, anchor);
insert(target, t1, anchor);
insert(target, p, anchor);
append(p, t2);
append(p, t3);
append(p, t4);
append(p, a);
append(p, t6);
insert(target, t7, anchor);
insert(target, button, anchor);
if (!mounted) {
dispose = listen(button, "click", /*openGraphCSS*/ ctx[1]);
mounted = true;
}
},
p: noop$2,
i: noop$2,
o: noop$2,
d(detaching) {
if (detaching) detach(h3);
if (detaching) detach(t1);
if (detaching) detach(p);
if (detaching) detach(t7);
if (detaching) detach(button);
mounted = false;
dispose();
}
};
}
function instance$c($$self, $$props, $$invalidate) {
let { plugin } = $$props;
let stylesheetPath = STYLESHEET_PATH(plugin.vault);
let openGraphCSS = async function () {
let fullPath = plugin.vault.adapter.getFullPath(stylesheetPath);
// Write a file, throw an error if it already exists (flag wx). Just catch that because it's fine.
try {
const shell = require('electron').shell;
const { promises } = require("fs");
await promises.writeFile(fullPath, DEFAULT_USER_SHEET, { flag: 'wx' }).catch(e => {
});
await shell.openPath(fullPath);
} catch(e) {
console.log("Couldn't open graph.css. This is probably because we are on mobile.");
console.log(e);
}
};
$$self.$$set = $$props => {
if ('plugin' in $$props) $$invalidate(2, plugin = $$props.plugin);
};
return [stylesheetPath, openGraphCSS, plugin];
}
class AppearanceSettings extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$c, create_fragment$c, safe_not_equal, { plugin: 2 });
}
}
/* src/ui/KoFi.svelte generated by Svelte v3.45.0 */
function create_fragment$b(ctx) {
let script;
let script_src_value;
let t;
let div;
let mounted;
let dispose;
return {
c() {
script = element$1("script");
t = space();
div = element$1("div");
attr(script, "type", "text/javascript");
if (!src_url_equal(script.src, script_src_value = "https://ko-fi.com/widgets/widget_2.js")) attr(script, "src", script_src_value);
},
m(target, anchor) {
append(document.head, script);
insert(target, t, anchor);
insert(target, div, anchor);
/*div_binding*/ ctx[2](div);
if (!mounted) {
dispose = listen(script, "load", /*initializeKofi*/ ctx[1]);
mounted = true;
}
},
p: noop$2,
i: noop$2,
o: noop$2,
d(detaching) {
detach(script);
if (detaching) detach(t);
if (detaching) detach(div);
/*div_binding*/ ctx[2](null);
mounted = false;
dispose();
}
};
}
function instance$b($$self, $$props, $$invalidate) {
let button;
var initializeKofi = () => {
kofiwidget2.init('Support Juggl development!', '#29abe0', 'B0B23OPUE');
$$invalidate(0, button.innerHTML = kofiwidget2.getHTML(), button);
};
function div_binding($$value) {
binding_callbacks[$$value ? 'unshift' : 'push'](() => {
button = $$value;
$$invalidate(0, button);
});
}
return [button, initializeKofi, div_binding];
}
class KoFi extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$b, create_fragment$b, safe_not_equal, {});
}
}
const LAYOUTS = ['force-directed', 'circle', 'grid', 'hierarchy', 'cola'];
const emptyStyleGroup = { filter: '',
color: 'black',
shape: 'ellipse',
icon: { name: 'No icon', path: '', color: 'white' },
showInPane: true,
show: true,
size: 1.0 };
const genStyleGroups = function (plugin) {
const tagColorMap = {};
const colorSet = [[
'#0089BA',
'#2C73D2',
'#008E9B',
'#0081CF',
'#008F7A',
'#008E9B', // This one is double oops!
], [
'#D65DB1',
'#0082C1',
'#9270D3',
'#007F93',
'#007ED9',
'#007660',
], [
'#FF9671',
'#A36AAA',
'#F27D88',
'#6967A9',
'#D26F9D',
'#1b6299',
], [
'#FFC75F',
'#4C9A52',
'#C3BB4E',
'#00855B',
'#88AC4B',
'#006F61',
], [
'#FF6F91',
'#6F7F22',
'#E07250',
'#257A3E',
'#AC7C26',
'#006F5F',
], [
'#F9F871',
'#2FAB63',
'#B8E067',
'#008E63',
'#78C664',
'#007160',
]];
const colors = [];
for (const i of Array(6).keys()) {
for (const j of Array(6).keys()) {
colors.push(colorSet[j][i]);
}
}
let tagsIter = 0;
for (const file of plugin.vault.getMarkdownFiles()) {
const cache = plugin.metadata.getFileCache(file);
if (cache?.tags) {
cache.tags.forEach((t) => {
const tag = t.tag.slice(1);
const hSplit = tag.split('/');
const tags = [];
for (const i in hSplit) {
const hTag = hSplit.slice(0, parseInt(i) + 1).join('-');
tags.push(hTag);
}
for (const tag of tags) {
if (!(tag in tagColorMap)) {
tagColorMap[tag] = colors[tagsIter];
tagsIter += 1;
if (tagsIter >= colors.length) {
tagsIter = 0;
}
}
}
});
}
}
const genSheet = [
{ filter: `class:dangling`,
color: getGraphColor('color-fill-unresolved'),
shape: 'ellipse',
icon: { name: 'No icon', path: '', color: 'white' },
showInPane: true,
show: true,
size: 1.0 },
{ filter: `class:file -class:image`,
color: getGraphColor('color-fill'),
shape: 'ellipse',
icon: { name: 'No icon', path: '', color: 'white' },
showInPane: true,
show: true,
size: 1.0 },
];
for (const tag of Object.keys(tagColorMap)) {
genSheet.push({ filter: `tag:#${tag}`,
color: tagColorMap[tag],
shape: 'ellipse',
icon: { name: 'No icon', path: '', color: 'white' },
showInPane: true,
show: true,
size: 1.0 });
}
return genSheet;
};
const DefaultJugglSettings = {
password: '',
splitDirection: 'vertical',
typedLinkPrefix: '-',
imgServerPort: 3837,
debug: false,
globalStyleGroups: [],
globalGraphRibbon: true,
graphSettings: {
// TODO: Not currently used anywhere
animateLayout: true,
autoAddNodes: true,
autoExpand: false,
autoZoom: false,
coreStore: OBSIDIAN_STORE_NAME,
expandInitial: true,
fdgdLayout: 'd3-force',
filter: '',
height: '100%',
hoverEdges: false,
layout: 'force-directed',
limit: 10000,
mergeEdges: true,
metaKeyHover: false,
mode: 'workspace',
navigator: true,
openWithShift: false,
readContent: true,
styleGroups: [],
toolbar: true,
width: '100%',
zoomSpeed: 1,
},
embedSettings: {
animateLayout: true,
autoAddNodes: false,
autoExpand: false,
autoZoom: false,
coreStore: OBSIDIAN_STORE_NAME,
expandInitial: true,
fdgdLayout: 'cola',
filter: '',
height: '400px',
hoverEdges: false,
layout: 'force-directed',
limit: 1000,
mergeEdges: true,
metaKeyHover: false,
mode: 'local',
navigator: false,
openWithShift: false,
readContent: true,
styleGroups: [],
toolbar: false,
width: '100%',
zoomSpeed: 1,
},
globalGraphSettings: {
animateLayout: true,
autoAddNodes: true,
autoExpand: false,
autoZoom: false,
coreStore: OBSIDIAN_STORE_NAME,
expandInitial: false,
fdgdLayout: 'cola',
filter: '-class:dangling -class:file',
height: '100%',
width: '100%',
limit: 10000,
hoverEdges: false,
layout: 'force-directed',
mergeEdges: true,
metaKeyHover: false,
mode: 'workspace',
navigator: true,
openWithShift: false,
readContent: false,
styleGroups: [],
toolbar: true,
zoomSpeed: 1,
},
};
class JugglGraphSettingsTab extends obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl('h3');
containerEl.createEl('h3', { text: 'Juggl' });
new KoFi({ target: containerEl });
const doc_link = document.createElement('a');
doc_link.href = 'https://juggl.io';
doc_link.target = '_blank';
doc_link.innerHTML = 'the documentation';
const discord_link = document.createElement('a');
discord_link.href = 'https://discord.gg/sAmSGpaPgM';
discord_link.target = '_blank';
discord_link.innerHTML = 'the Discord server';
const introPar = document.createElement('p');
introPar.innerHTML =
'Check out ' + doc_link.outerHTML + ' for documentation on how to use the plugin.
' +
'Join ' + discord_link.outerHTML + ' for help, nice discussion and insight into development.';
containerEl.appendChild(introPar);
new AppearanceSettings({ target: containerEl, props: { plugin: this.plugin } });
containerEl.createEl('h3');
containerEl.createEl('h3', { text: 'Extensions' });
new obsidian.Setting(containerEl)
.setName('Use navigator')
.setDesc('Use the navigator overview in the bottom-right corner. Disabling could improve performance.')
.addToggle((toggle) => {
toggle.setValue(this.plugin.settings.graphSettings.navigator)
.onChange((newValue) => {
this.plugin.settings.graphSettings.navigator = newValue;
this.plugin.saveData(this.plugin.settings);
});
});
new obsidian.Setting(containerEl)
.setName('Default mode')
.setDesc('The default mode to open the Advanced Graph View in.')
.addDropdown((dropdown) => {
dropdown.addOption('local', 'Local Mode');
dropdown.addOption('workspace', 'Workspace Mode');
dropdown.setValue(this.plugin.settings.graphSettings.mode)
.onChange((newValue) => {
this.plugin.settings.graphSettings.mode = newValue;
this.plugin.saveData(this.plugin.settings);
});
});
new obsidian.Setting(containerEl)
.setName('Force-directed algorithm')
.setDesc('The default force-directed graph drawing algorithm to use. ' +
'Cola is nice, but unstable in some use cases. Obsidian uses D3')
.addDropdown((dropdown) => {
dropdown.addOption('cola', 'Cola');
dropdown.addOption('d3-force', 'D3');
dropdown.setValue(this.plugin.settings.graphSettings.fdgdLayout)
.onChange((newValue) => {
this.plugin.settings.graphSettings.fdgdLayout = newValue;
this.plugin.settings.embedSettings.fdgdLayout = newValue;
this.plugin.settings.globalGraphSettings.fdgdLayout = newValue;
this.plugin.saveData(this.plugin.settings);
});
});
new obsidian.Setting(containerEl)
.setName('Global Graph Icon')
.setDesc('Show the Global Graph Icon on the left ribbon.')
.addToggle((toggle) => {
toggle.setValue(this.plugin.settings.globalGraphRibbon)
.onChange((new_value) => {
this.plugin.settings.globalGraphRibbon = new_value;
this.plugin.saveData(this.plugin.settings);
this.plugin.setGlobalIcon();
});
});
new obsidian.Setting(containerEl)
.setName(`Require ⌘/ctrl for preview hovers`)
.setDesc('When set to true, you will need to hold down ⌘ (mac) or ctrl (windows) to show preview hovers of notes.')
.addToggle((toggle) => {
toggle.setValue(this.plugin.settings.graphSettings.metaKeyHover)
.onChange((new_value) => {
this.plugin.settings.graphSettings.metaKeyHover = new_value;
this.plugin.settings.globalGraphSettings.metaKeyHover = new_value;
this.plugin.settings.embedSettings.metaKeyHover = new_value;
this.plugin.saveData(this.plugin.settings);
});
});
// // Note: This isn't currently used anywhere, and the Neo4j stream plugin will likely not provide a backend.
// // Therefore this setting is disabled to prevent confusion.
// new Setting(containerEl)
// .setName('Data store')
// .setDesc('Set what database to get the Obsidian graph from. By default, only Obsidian itself is an option. ' +
// 'Later on, you will be able to install the Neo4j Stream Plugin to use a Neo4j backend which has more features and scales better to large graphs.')
// .addDropdown((dropdown) => {
// Object.keys(this.plugin.coreStores).forEach((c) => {
// dropdown.addOption(c, c);
// });
// dropdown.setValue(this.plugin.settings.graphSettings.coreStore)
// .onChange((newValue) => {
// this.plugin.settings.graphSettings.coreStore = newValue;
// this.plugin.settings.embedSettings.coreStore = newValue;
// this.plugin.saveData(this.plugin.settings);
// });
// });
containerEl.createEl('h4', { text: 'Workspace mode' });
new obsidian.Setting(containerEl)
.setName('Automatically add nodes')
.setDesc('This will automatically add nodes to the graph whenever a note is opened.')
.addToggle((toggle) => {
toggle.setValue(this.plugin.settings.graphSettings.autoAddNodes)
.onChange((new_value) => {
this.plugin.settings.graphSettings.autoAddNodes = new_value;
this.plugin.saveData(this.plugin.settings);
});
});
new obsidian.Setting(containerEl)
.setName('Automatically zoom on active nodes')
.setDesc('This will automatically keep fitting the viewport on the currently active node. ' +
'In particular, this happens when you open a file.')
.addToggle((toggle) => {
toggle.setValue(this.plugin.settings.graphSettings.autoZoom)
.onChange((new_value) => {
this.plugin.settings.graphSettings.autoZoom = new_value;
this.plugin.settings.globalGraphSettings.autoZoom = new_value;
this.plugin.saveData(this.plugin.settings);
});
});
containerEl.createEl('h3', { text: 'Advanced' });
new obsidian.Setting(containerEl)
.setName('Zoom speed')
.setDesc('Speed with which zooming in and out happens. ' +
'A value of 1 is recommended, but can be too quick for some mice.')
.addSlider((slider) => {
slider
.setDynamicTooltip()
.setLimits(0.01, 1.5, 0.01)
.setValue(this.plugin.settings.graphSettings.zoomSpeed)
.onChange((newValue) => {
this.plugin.settings.graphSettings.zoomSpeed = newValue;
this.plugin.settings.embedSettings.zoomSpeed = newValue;
this.plugin.settings.globalGraphSettings.zoomSpeed = newValue;
this.plugin.saveData(this.plugin.settings);
});
});
// Not currently implemented
// new Setting(containerEl)
// .setName('Automatic expand')
// .setDesc('This will automatically expand the neighbourhood around any nodes clicked on or added to the graph. ' +
// 'This normally only happens when pressing E or when double-clicking.')
// .addToggle((toggle) => {
// toggle.setValue(this.plugin.settings.autoExpand)
// .onChange((new_value) => {
// this.plugin.settings.autoExpand = new_value;
// this.plugin.saveData(this.plugin.settings);
// });
// });
new obsidian.Setting(containerEl)
.setName('Hover on edges')
.setDesc('Hover on edges to show what they are connected to.')
.addToggle((toggle) => {
toggle.setValue(this.plugin.settings.graphSettings.hoverEdges)
.onChange((new_value) => {
this.plugin.settings.graphSettings.hoverEdges = new_value;
this.plugin.settings.embedSettings.hoverEdges = new_value;
this.plugin.settings.globalGraphSettings.hoverEdges = new_value;
this.plugin.saveData(this.plugin.settings);
});
});
new obsidian.Setting(containerEl)
.setName('Open with shift')
.setDesc('Only opens file when clicking on a node when shift is pressed.')
.addToggle((toggle) => {
toggle.setValue(this.plugin.settings.graphSettings.openWithShift)
.onChange((new_value) => {
this.plugin.settings.graphSettings.openWithShift = new_value;
this.plugin.settings.embedSettings.openWithShift = new_value;
this.plugin.settings.globalGraphSettings.openWithShift = new_value;
this.plugin.saveData(this.plugin.settings);
});
});
// new Setting(containerEl)
// .setName('Index note content')
// .setDesc('This will full-text index the content of notes. ' +
// 'This allows searching within notes using the Neo4j Bloom search bar. However, it could decrease performance.')
// .addToggle((toggle) => {
// toggle.setValue(this.plugin.settings.indexContent)
// .onChange((new_value) => {
// this.plugin.settings.indexContent = new_value;
// this.plugin.saveData(this.plugin.settings);
// });
// });
new obsidian.Setting(containerEl)
.setName('Typed links prefix')
.setDesc('Prefix to use for typed links. Default is \'-\'. Requires a server restart.')
.addText((text) => {
text.setPlaceholder('')
.setValue(this.plugin.settings.typedLinkPrefix)
.onChange((new_folder) => {
this.plugin.settings.typedLinkPrefix = new_folder;
this.plugin.saveData(this.plugin.settings);
});
});
new obsidian.Setting(containerEl)
.setName('Image server port')
.setDesc('Set the port of the image server. If you use multiple vaults, these need to be set differently. Default 3837.')
.addText((text) => {
text.setValue(this.plugin.settings.imgServerPort + '')
.setPlaceholder('3837')
.onChange((new_value) => {
this.plugin.settings.imgServerPort = parseInt(new_value.trim());
this.plugin.saveData(this.plugin.settings);
});
});
new obsidian.Setting(containerEl)
.setName('Debug')
.setDesc('Enable debug mode, which prints a lot of stuff in the developers console.')
.addToggle((toggle) => {
toggle.setValue(this.plugin.settings.debug)
.onChange((new_value) => {
this.plugin.settings.debug = new_value;
this.plugin.saveData(this.plugin.settings);
});
});
}
}
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
function getDefaultExportFromCjs (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}
function getAugmentedNamespace(n) {
if (n.__esModule) return n;
var a = Object.defineProperty({}, '__esModule', {value: true});
Object.keys(n).forEach(function (k) {
var d = Object.getOwnPropertyDescriptor(n, k);
Object.defineProperty(a, k, d.get ? d : {
enumerable: true,
get: function () {
return n[k];
}
});
});
return a;
}
function createCommonjsModule(fn) {
var module = { exports: {} };
return fn(module, module.exports), module.exports;
}
function commonjsRequire (target) {
throw new Error('Could not dynamically require "' + target + '". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.');
}
/**
* lodash (Custom Build)
* Build: `lodash modularize exports="npm" -o ./`
* Copyright jQuery Foundation and other contributors
* Released under MIT license
* Based on Underscore.js 1.8.3
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT$1 = 'Expected a function';
/** Used as references for various `Number` constants. */
var NAN$1 = 0 / 0;
/** `Object#toString` result references. */
var symbolTag$4 = '[object Symbol]';
/** Used to match leading and trailing whitespace. */
var reTrim = /^\s+|\s+$/g;
/** Used to detect bad signed hexadecimal string values. */
var reIsBadHex$1 = /^[-+]0x[0-9a-f]+$/i;
/** Used to detect binary string values. */
var reIsBinary$1 = /^0b[01]+$/i;
/** Used to detect octal string values. */
var reIsOctal$1 = /^0o[0-7]+$/i;
/** Built-in method references without a dependency on `root`. */
var freeParseInt$1 = parseInt;
/** Detect free variable `global` from Node.js. */
var freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
/** Detect free variable `self`. */
var freeSelf$1 = typeof self == 'object' && self && self.Object === Object && self;
/** Used as a reference to the global object. */
var root$1 = freeGlobal$1 || freeSelf$1 || Function('return this')();
/** Used for built-in method references. */
var objectProto$j = Object.prototype;
/**
* Used to resolve the
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString$1 = objectProto$j.toString;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMax$3 = Math.max,
nativeMin = Math.min;
/**
* Gets the timestamp of the number of milliseconds that have elapsed since
* the Unix epoch (1 January 1970 00:00:00 UTC).
*
* @static
* @memberOf _
* @since 2.4.0
* @category Date
* @returns {number} Returns the timestamp.
* @example
*
* _.defer(function(stamp) {
* console.log(_.now() - stamp);
* }, _.now());
* // => Logs the number of milliseconds it took for the deferred invocation.
*/
var now$1 = function() {
return root$1.Date.now();
};
/**
* Creates a debounced function that delays invoking `func` until after `wait`
* milliseconds have elapsed since the last time the debounced function was
* invoked. The debounced function comes with a `cancel` method to cancel
* delayed `func` invocations and a `flush` method to immediately invoke them.
* Provide `options` to indicate whether `func` should be invoked on the
* leading and/or trailing edge of the `wait` timeout. The `func` is invoked
* with the last arguments provided to the debounced function. Subsequent
* calls to the debounced function return the result of the last `func`
* invocation.
*
* **Note:** If `leading` and `trailing` options are `true`, `func` is
* invoked on the trailing edge of the timeout only if the debounced function
* is invoked more than once during the `wait` timeout.
*
* If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
* until to the next tick, similar to `setTimeout` with a timeout of `0`.
*
* See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
* for details over the differences between `_.debounce` and `_.throttle`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Function
* @param {Function} func The function to debounce.
* @param {number} [wait=0] The number of milliseconds to delay.
* @param {Object} [options={}] The options object.
* @param {boolean} [options.leading=false]
* Specify invoking on the leading edge of the timeout.
* @param {number} [options.maxWait]
* The maximum time `func` is allowed to be delayed before it's invoked.
* @param {boolean} [options.trailing=true]
* Specify invoking on the trailing edge of the timeout.
* @returns {Function} Returns the new debounced function.
* @example
*
* // Avoid costly calculations while the window size is in flux.
* jQuery(window).on('resize', _.debounce(calculateLayout, 150));
*
* // Invoke `sendMail` when clicked, debouncing subsequent calls.
* jQuery(element).on('click', _.debounce(sendMail, 300, {
* 'leading': true,
* 'trailing': false
* }));
*
* // Ensure `batchLog` is invoked once after 1 second of debounced calls.
* var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
* var source = new EventSource('/stream');
* jQuery(source).on('message', debounced);
*
* // Cancel the trailing debounced invocation.
* jQuery(window).on('popstate', debounced.cancel);
*/
function debounce$1(func, wait, options) {
var lastArgs,
lastThis,
maxWait,
result,
timerId,
lastCallTime,
lastInvokeTime = 0,
leading = false,
maxing = false,
trailing = true;
if (typeof func != 'function') {
throw new TypeError(FUNC_ERROR_TEXT$1);
}
wait = toNumber$1(wait) || 0;
if (isObject$1(options)) {
leading = !!options.leading;
maxing = 'maxWait' in options;
maxWait = maxing ? nativeMax$3(toNumber$1(options.maxWait) || 0, wait) : maxWait;
trailing = 'trailing' in options ? !!options.trailing : trailing;
}
function invokeFunc(time) {
var args = lastArgs,
thisArg = lastThis;
lastArgs = lastThis = undefined;
lastInvokeTime = time;
result = func.apply(thisArg, args);
return result;
}
function leadingEdge(time) {
// Reset any `maxWait` timer.
lastInvokeTime = time;
// Start the timer for the trailing edge.
timerId = setTimeout(timerExpired, wait);
// Invoke the leading edge.
return leading ? invokeFunc(time) : result;
}
function remainingWait(time) {
var timeSinceLastCall = time - lastCallTime,
timeSinceLastInvoke = time - lastInvokeTime,
result = wait - timeSinceLastCall;
return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;
}
function shouldInvoke(time) {
var timeSinceLastCall = time - lastCallTime,
timeSinceLastInvoke = time - lastInvokeTime;
// Either this is the first call, activity has stopped and we're at the
// trailing edge, the system time has gone backwards and we're treating
// it as the trailing edge, or we've hit the `maxWait` limit.
return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
(timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
}
function timerExpired() {
var time = now$1();
if (shouldInvoke(time)) {
return trailingEdge(time);
}
// Restart the timer.
timerId = setTimeout(timerExpired, remainingWait(time));
}
function trailingEdge(time) {
timerId = undefined;
// Only invoke if we have `lastArgs` which means `func` has been
// debounced at least once.
if (trailing && lastArgs) {
return invokeFunc(time);
}
lastArgs = lastThis = undefined;
return result;
}
function cancel() {
if (timerId !== undefined) {
clearTimeout(timerId);
}
lastInvokeTime = 0;
lastArgs = lastCallTime = lastThis = timerId = undefined;
}
function flush() {
return timerId === undefined ? result : trailingEdge(now$1());
}
function debounced() {
var time = now$1(),
isInvoking = shouldInvoke(time);
lastArgs = arguments;
lastThis = this;
lastCallTime = time;
if (isInvoking) {
if (timerId === undefined) {
return leadingEdge(lastCallTime);
}
if (maxing) {
// Handle invocations in a tight loop.
timerId = setTimeout(timerExpired, wait);
return invokeFunc(lastCallTime);
}
}
if (timerId === undefined) {
timerId = setTimeout(timerExpired, wait);
}
return result;
}
debounced.cancel = cancel;
debounced.flush = flush;
return debounced;
}
/**
* Checks if `value` is the
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
* @example
*
* _.isObject({});
* // => true
*
* _.isObject([1, 2, 3]);
* // => true
*
* _.isObject(_.noop);
* // => true
*
* _.isObject(null);
* // => false
*/
function isObject$1(value) {
var type = typeof value;
return !!value && (type == 'object' || type == 'function');
}
/**
* Checks if `value` is object-like. A value is object-like if it's not `null`
* and has a `typeof` result of "object".
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
* @example
*
* _.isObjectLike({});
* // => true
*
* _.isObjectLike([1, 2, 3]);
* // => true
*
* _.isObjectLike(_.noop);
* // => false
*
* _.isObjectLike(null);
* // => false
*/
function isObjectLike$1(value) {
return !!value && typeof value == 'object';
}
/**
* Checks if `value` is classified as a `Symbol` primitive or object.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
* @example
*
* _.isSymbol(Symbol.iterator);
* // => true
*
* _.isSymbol('abc');
* // => false
*/
function isSymbol$1(value) {
return typeof value == 'symbol' ||
(isObjectLike$1(value) && objectToString$1.call(value) == symbolTag$4);
}
/**
* Converts `value` to a number.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to process.
* @returns {number} Returns the number.
* @example
*
* _.toNumber(3.2);
* // => 3.2
*
* _.toNumber(Number.MIN_VALUE);
* // => 5e-324
*
* _.toNumber(Infinity);
* // => Infinity
*
* _.toNumber('3.2');
* // => 3.2
*/
function toNumber$1(value) {
if (typeof value == 'number') {
return value;
}
if (isSymbol$1(value)) {
return NAN$1;
}
if (isObject$1(value)) {
var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
value = isObject$1(other) ? (other + '') : other;
}
if (typeof value != 'string') {
return value === 0 ? value : +value;
}
value = value.replace(reTrim, '');
var isBinary = reIsBinary$1.test(value);
return (isBinary || reIsOctal$1.test(value))
? freeParseInt$1(value.slice(2), isBinary ? 2 : 8)
: (reIsBadHex$1.test(value) ? NAN$1 : +value);
}
var lodash_debounce = debounce$1;
var heap$1 = createCommonjsModule(function (module, exports) {
// Generated by CoffeeScript 1.8.0
(function() {
var Heap, defaultCmp, floor, heapify, heappop, heappush, heappushpop, heapreplace, insort, min, nlargest, nsmallest, updateItem, _siftdown, _siftup;
floor = Math.floor, min = Math.min;
/*
Default comparison function to be used
*/
defaultCmp = function(x, y) {
if (x < y) {
return -1;
}
if (x > y) {
return 1;
}
return 0;
};
/*
Insert item x in list a, and keep it sorted assuming a is sorted.
If x is already in a, insert it to the right of the rightmost x.
Optional args lo (default 0) and hi (default a.length) bound the slice
of a to be searched.
*/
insort = function(a, x, lo, hi, cmp) {
var mid;
if (lo == null) {
lo = 0;
}
if (cmp == null) {
cmp = defaultCmp;
}
if (lo < 0) {
throw new Error('lo must be non-negative');
}
if (hi == null) {
hi = a.length;
}
while (lo < hi) {
mid = floor((lo + hi) / 2);
if (cmp(x, a[mid]) < 0) {
hi = mid;
} else {
lo = mid + 1;
}
}
return ([].splice.apply(a, [lo, lo - lo].concat(x)), x);
};
/*
Push item onto heap, maintaining the heap invariant.
*/
heappush = function(array, item, cmp) {
if (cmp == null) {
cmp = defaultCmp;
}
array.push(item);
return _siftdown(array, 0, array.length - 1, cmp);
};
/*
Pop the smallest item off the heap, maintaining the heap invariant.
*/
heappop = function(array, cmp) {
var lastelt, returnitem;
if (cmp == null) {
cmp = defaultCmp;
}
lastelt = array.pop();
if (array.length) {
returnitem = array[0];
array[0] = lastelt;
_siftup(array, 0, cmp);
} else {
returnitem = lastelt;
}
return returnitem;
};
/*
Pop and return the current smallest value, and add the new item.
This is more efficient than heappop() followed by heappush(), and can be
more appropriate when using a fixed size heap. Note that the value
returned may be larger than item! That constrains reasonable use of
this routine unless written as part of a conditional replacement:
if item > array[0]
item = heapreplace(array, item)
*/
heapreplace = function(array, item, cmp) {
var returnitem;
if (cmp == null) {
cmp = defaultCmp;
}
returnitem = array[0];
array[0] = item;
_siftup(array, 0, cmp);
return returnitem;
};
/*
Fast version of a heappush followed by a heappop.
*/
heappushpop = function(array, item, cmp) {
var _ref;
if (cmp == null) {
cmp = defaultCmp;
}
if (array.length && cmp(array[0], item) < 0) {
_ref = [array[0], item], item = _ref[0], array[0] = _ref[1];
_siftup(array, 0, cmp);
}
return item;
};
/*
Transform list into a heap, in-place, in O(array.length) time.
*/
heapify = function(array, cmp) {
var i, _i, _len, _ref1, _results, _results1;
if (cmp == null) {
cmp = defaultCmp;
}
_ref1 = (function() {
_results1 = [];
for (var _j = 0, _ref = floor(array.length / 2); 0 <= _ref ? _j < _ref : _j > _ref; 0 <= _ref ? _j++ : _j--){ _results1.push(_j); }
return _results1;
}).apply(this).reverse();
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
i = _ref1[_i];
_results.push(_siftup(array, i, cmp));
}
return _results;
};
/*
Update the position of the given item in the heap.
This function should be called every time the item is being modified.
*/
updateItem = function(array, item, cmp) {
var pos;
if (cmp == null) {
cmp = defaultCmp;
}
pos = array.indexOf(item);
if (pos === -1) {
return;
}
_siftdown(array, 0, pos, cmp);
return _siftup(array, pos, cmp);
};
/*
Find the n largest elements in a dataset.
*/
nlargest = function(array, n, cmp) {
var elem, result, _i, _len, _ref;
if (cmp == null) {
cmp = defaultCmp;
}
result = array.slice(0, n);
if (!result.length) {
return result;
}
heapify(result, cmp);
_ref = array.slice(n);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
elem = _ref[_i];
heappushpop(result, elem, cmp);
}
return result.sort(cmp).reverse();
};
/*
Find the n smallest elements in a dataset.
*/
nsmallest = function(array, n, cmp) {
var elem, los, result, _i, _j, _len, _ref, _ref1, _results;
if (cmp == null) {
cmp = defaultCmp;
}
if (n * 10 <= array.length) {
result = array.slice(0, n).sort(cmp);
if (!result.length) {
return result;
}
los = result[result.length - 1];
_ref = array.slice(n);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
elem = _ref[_i];
if (cmp(elem, los) < 0) {
insort(result, elem, 0, null, cmp);
result.pop();
los = result[result.length - 1];
}
}
return result;
}
heapify(array, cmp);
_results = [];
for (_j = 0, _ref1 = min(n, array.length); 0 <= _ref1 ? _j < _ref1 : _j > _ref1; 0 <= _ref1 ? ++_j : --_j) {
_results.push(heappop(array, cmp));
}
return _results;
};
_siftdown = function(array, startpos, pos, cmp) {
var newitem, parent, parentpos;
if (cmp == null) {
cmp = defaultCmp;
}
newitem = array[pos];
while (pos > startpos) {
parentpos = (pos - 1) >> 1;
parent = array[parentpos];
if (cmp(newitem, parent) < 0) {
array[pos] = parent;
pos = parentpos;
continue;
}
break;
}
return array[pos] = newitem;
};
_siftup = function(array, pos, cmp) {
var childpos, endpos, newitem, rightpos, startpos;
if (cmp == null) {
cmp = defaultCmp;
}
endpos = array.length;
startpos = pos;
newitem = array[pos];
childpos = 2 * pos + 1;
while (childpos < endpos) {
rightpos = childpos + 1;
if (rightpos < endpos && !(cmp(array[childpos], array[rightpos]) < 0)) {
childpos = rightpos;
}
array[pos] = array[childpos];
pos = childpos;
childpos = 2 * pos + 1;
}
array[pos] = newitem;
return _siftdown(array, startpos, pos, cmp);
};
Heap = (function() {
Heap.push = heappush;
Heap.pop = heappop;
Heap.replace = heapreplace;
Heap.pushpop = heappushpop;
Heap.heapify = heapify;
Heap.updateItem = updateItem;
Heap.nlargest = nlargest;
Heap.nsmallest = nsmallest;
function Heap(cmp) {
this.cmp = cmp != null ? cmp : defaultCmp;
this.nodes = [];
}
Heap.prototype.push = function(x) {
return heappush(this.nodes, x, this.cmp);
};
Heap.prototype.pop = function() {
return heappop(this.nodes, this.cmp);
};
Heap.prototype.peek = function() {
return this.nodes[0];
};
Heap.prototype.contains = function(x) {
return this.nodes.indexOf(x) !== -1;
};
Heap.prototype.replace = function(x) {
return heapreplace(this.nodes, x, this.cmp);
};
Heap.prototype.pushpop = function(x) {
return heappushpop(this.nodes, x, this.cmp);
};
Heap.prototype.heapify = function() {
return heapify(this.nodes, this.cmp);
};
Heap.prototype.updateItem = function(x) {
return updateItem(this.nodes, x, this.cmp);
};
Heap.prototype.clear = function() {
return this.nodes = [];
};
Heap.prototype.empty = function() {
return this.nodes.length === 0;
};
Heap.prototype.size = function() {
return this.nodes.length;
};
Heap.prototype.clone = function() {
var heap;
heap = new Heap();
heap.nodes = this.nodes.slice(0);
return heap;
};
Heap.prototype.toArray = function() {
return this.nodes.slice(0);
};
Heap.prototype.insert = Heap.prototype.push;
Heap.prototype.top = Heap.prototype.peek;
Heap.prototype.front = Heap.prototype.peek;
Heap.prototype.has = Heap.prototype.contains;
Heap.prototype.copy = Heap.prototype.clone;
return Heap;
})();
(function(root, factory) {
{
return module.exports = factory();
}
})(this, function() {
return Heap;
});
}).call(commonjsGlobal);
});
var heap = heap$1;
/**
* Copyright (c) 2016-2021, The Cytoscape Consortium.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the “Software”), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is furnished to do
* so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
function _interopDefault$1 (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var util$2 = _interopDefault$1(lodash_debounce);
var Heap = _interopDefault$1(heap);
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _defineProperty$1(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArrayLimit(arr, i) {
var _arr = [];
var _n = true;
var _d = false;
var _e = undefined;
try {
for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance");
}
var window$1 = typeof window === 'undefined' ? null : window; // eslint-disable-line no-undef
var navigator$1 = window$1 ? window$1.navigator : null;
window$1 ? window$1.document : null;
var typeofstr = _typeof('');
var typeofobj = _typeof({});
var typeoffn = _typeof(function () {});
var typeofhtmlele = typeof HTMLElement === "undefined" ? "undefined" : _typeof(HTMLElement);
var instanceStr = function instanceStr(obj) {
return obj && obj.instanceString && fn(obj.instanceString) ? obj.instanceString() : null;
};
var string = function string(obj) {
return obj != null && _typeof(obj) == typeofstr;
};
var fn = function fn(obj) {
return obj != null && _typeof(obj) === typeoffn;
};
var array = function array(obj) {
return !elementOrCollection(obj) && (Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array);
};
var plainObject = function plainObject(obj) {
return obj != null && _typeof(obj) === typeofobj && !array(obj) && obj.constructor === Object;
};
var object = function object(obj) {
return obj != null && _typeof(obj) === typeofobj;
};
var number = function number(obj) {
return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj);
};
var integer = function integer(obj) {
return number(obj) && Math.floor(obj) === obj;
};
var htmlElement = function htmlElement(obj) {
if ('undefined' === typeofhtmlele) {
return undefined;
} else {
return null != obj && obj instanceof HTMLElement;
}
};
var elementOrCollection = function elementOrCollection(obj) {
return element(obj) || collection(obj);
};
var element = function element(obj) {
return instanceStr(obj) === 'collection' && obj._private.single;
};
var collection = function collection(obj) {
return instanceStr(obj) === 'collection' && !obj._private.single;
};
var core = function core(obj) {
return instanceStr(obj) === 'core';
};
var stylesheet = function stylesheet(obj) {
return instanceStr(obj) === 'stylesheet';
};
var event = function event(obj) {
return instanceStr(obj) === 'event';
};
var emptyString = function emptyString(obj) {
if (obj === undefined || obj === null) {
// null is empty
return true;
} else if (obj === '' || obj.match(/^\s+$/)) {
return true; // empty string is empty
}
return false; // otherwise, we don't know what we've got
};
var domElement = function domElement(obj) {
if (typeof HTMLElement === 'undefined') {
return false; // we're not in a browser so it doesn't matter
} else {
return obj instanceof HTMLElement;
}
};
var boundingBox = function boundingBox(obj) {
return plainObject(obj) && number(obj.x1) && number(obj.x2) && number(obj.y1) && number(obj.y2);
};
var promise = function promise(obj) {
return object(obj) && fn(obj.then);
};
var ms = function ms() {
return navigator$1 && navigator$1.userAgent.match(/msie|trident|edge/i);
}; // probably a better way to detect this...
var memoize$1 = function memoize(fn, keyFn) {
if (!keyFn) {
keyFn = function keyFn() {
if (arguments.length === 1) {
return arguments[0];
} else if (arguments.length === 0) {
return 'undefined';
}
var args = [];
for (var i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
return args.join('$');
};
}
var memoizedFn = function memoizedFn() {
var self = this;
var args = arguments;
var ret;
var k = keyFn.apply(self, args);
var cache = memoizedFn.cache;
if (!(ret = cache[k])) {
ret = cache[k] = fn.apply(self, args);
}
return ret;
};
memoizedFn.cache = {};
return memoizedFn;
};
var camel2dash = memoize$1(function (str) {
return str.replace(/([A-Z])/g, function (v) {
return '-' + v.toLowerCase();
});
});
var dash2camel = memoize$1(function (str) {
return str.replace(/(-\w)/g, function (v) {
return v[1].toUpperCase();
});
});
var prependCamel = memoize$1(function (prefix, str) {
return prefix + str[0].toUpperCase() + str.substring(1);
}, function (prefix, str) {
return prefix + '$' + str;
});
var capitalize = function capitalize(str) {
if (emptyString(str)) {
return str;
}
return str.charAt(0).toUpperCase() + str.substring(1);
};
var number$1 = '(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))';
var rgba = 'rgb[a]?\\((' + number$1 + '[%]?)\\s*,\\s*(' + number$1 + '[%]?)\\s*,\\s*(' + number$1 + '[%]?)(?:\\s*,\\s*(' + number$1 + '))?\\)';
var rgbaNoBackRefs = 'rgb[a]?\\((?:' + number$1 + '[%]?)\\s*,\\s*(?:' + number$1 + '[%]?)\\s*,\\s*(?:' + number$1 + '[%]?)(?:\\s*,\\s*(?:' + number$1 + '))?\\)';
var hsla = 'hsl[a]?\\((' + number$1 + ')\\s*,\\s*(' + number$1 + '[%])\\s*,\\s*(' + number$1 + '[%])(?:\\s*,\\s*(' + number$1 + '))?\\)';
var hslaNoBackRefs = 'hsl[a]?\\((?:' + number$1 + ')\\s*,\\s*(?:' + number$1 + '[%])\\s*,\\s*(?:' + number$1 + '[%])(?:\\s*,\\s*(?:' + number$1 + '))?\\)';
var hex3 = '\\#[0-9a-fA-F]{3}';
var hex6 = '\\#[0-9a-fA-F]{6}';
var ascending = function ascending(a, b) {
if (a < b) {
return -1;
} else if (a > b) {
return 1;
} else {
return 0;
}
};
var descending = function descending(a, b) {
return -1 * ascending(a, b);
};
var extend = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {
var args = arguments;
for (var i = 1; i < args.length; i++) {
var obj = args[i];
if (obj == null) {
continue;
}
var keys = Object.keys(obj);
for (var j = 0; j < keys.length; j++) {
var k = keys[j];
tgt[k] = obj[k];
}
}
return tgt;
};
var hex2tuple = function hex2tuple(hex) {
if (!(hex.length === 4 || hex.length === 7) || hex[0] !== '#') {
return;
}
var shortHex = hex.length === 4;
var r, g, b;
var base = 16;
if (shortHex) {
r = parseInt(hex[1] + hex[1], base);
g = parseInt(hex[2] + hex[2], base);
b = parseInt(hex[3] + hex[3], base);
} else {
r = parseInt(hex[1] + hex[2], base);
g = parseInt(hex[3] + hex[4], base);
b = parseInt(hex[5] + hex[6], base);
}
return [r, g, b];
}; // get [r, g, b, a] from hsl(0, 0, 0) or hsla(0, 0, 0, 0)
var hsl2tuple = function hsl2tuple(hsl) {
var ret;
var h, s, l, a, r, g, b;
function hue2rgb(p, q, t) {
if (t < 0) t += 1;
if (t > 1) t -= 1;
if (t < 1 / 6) return p + (q - p) * 6 * t;
if (t < 1 / 2) return q;
if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
return p;
}
var m = new RegExp('^' + hsla + '$').exec(hsl);
if (m) {
// get hue
h = parseInt(m[1]);
if (h < 0) {
h = (360 - -1 * h % 360) % 360;
} else if (h > 360) {
h = h % 360;
}
h /= 360; // normalise on [0, 1]
s = parseFloat(m[2]);
if (s < 0 || s > 100) {
return;
} // saturation is [0, 100]
s = s / 100; // normalise on [0, 1]
l = parseFloat(m[3]);
if (l < 0 || l > 100) {
return;
} // lightness is [0, 100]
l = l / 100; // normalise on [0, 1]
a = m[4];
if (a !== undefined) {
a = parseFloat(a);
if (a < 0 || a > 1) {
return;
} // alpha is [0, 1]
} // now, convert to rgb
// code from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
if (s === 0) {
r = g = b = Math.round(l * 255); // achromatic
} else {
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = Math.round(255 * hue2rgb(p, q, h + 1 / 3));
g = Math.round(255 * hue2rgb(p, q, h));
b = Math.round(255 * hue2rgb(p, q, h - 1 / 3));
}
ret = [r, g, b, a];
}
return ret;
}; // get [r, g, b, a] from rgb(0, 0, 0) or rgba(0, 0, 0, 0)
var rgb2tuple = function rgb2tuple(rgb) {
var ret;
var m = new RegExp('^' + rgba + '$').exec(rgb);
if (m) {
ret = [];
var isPct = [];
for (var i = 1; i <= 3; i++) {
var channel = m[i];
if (channel[channel.length - 1] === '%') {
isPct[i] = true;
}
channel = parseFloat(channel);
if (isPct[i]) {
channel = channel / 100 * 255; // normalise to [0, 255]
}
if (channel < 0 || channel > 255) {
return;
} // invalid channel value
ret.push(Math.floor(channel));
}
var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3];
var allArePct = isPct[1] && isPct[2] && isPct[3];
if (atLeastOneIsPct && !allArePct) {
return;
} // must all be percent values if one is
var alpha = m[4];
if (alpha !== undefined) {
alpha = parseFloat(alpha);
if (alpha < 0 || alpha > 1) {
return;
} // invalid alpha value
ret.push(alpha);
}
}
return ret;
};
var colorname2tuple = function colorname2tuple(color) {
return colors[color.toLowerCase()];
};
var color2tuple = function color2tuple(color) {
return (array(color) ? color : null) || colorname2tuple(color) || hex2tuple(color) || rgb2tuple(color) || hsl2tuple(color);
};
var colors = {
// special colour names
transparent: [0, 0, 0, 0],
// NB alpha === 0
// regular colours
aliceblue: [240, 248, 255],
antiquewhite: [250, 235, 215],
aqua: [0, 255, 255],
aquamarine: [127, 255, 212],
azure: [240, 255, 255],
beige: [245, 245, 220],
bisque: [255, 228, 196],
black: [0, 0, 0],
blanchedalmond: [255, 235, 205],
blue: [0, 0, 255],
blueviolet: [138, 43, 226],
brown: [165, 42, 42],
burlywood: [222, 184, 135],
cadetblue: [95, 158, 160],
chartreuse: [127, 255, 0],
chocolate: [210, 105, 30],
coral: [255, 127, 80],
cornflowerblue: [100, 149, 237],
cornsilk: [255, 248, 220],
crimson: [220, 20, 60],
cyan: [0, 255, 255],
darkblue: [0, 0, 139],
darkcyan: [0, 139, 139],
darkgoldenrod: [184, 134, 11],
darkgray: [169, 169, 169],
darkgreen: [0, 100, 0],
darkgrey: [169, 169, 169],
darkkhaki: [189, 183, 107],
darkmagenta: [139, 0, 139],
darkolivegreen: [85, 107, 47],
darkorange: [255, 140, 0],
darkorchid: [153, 50, 204],
darkred: [139, 0, 0],
darksalmon: [233, 150, 122],
darkseagreen: [143, 188, 143],
darkslateblue: [72, 61, 139],
darkslategray: [47, 79, 79],
darkslategrey: [47, 79, 79],
darkturquoise: [0, 206, 209],
darkviolet: [148, 0, 211],
deeppink: [255, 20, 147],
deepskyblue: [0, 191, 255],
dimgray: [105, 105, 105],
dimgrey: [105, 105, 105],
dodgerblue: [30, 144, 255],
firebrick: [178, 34, 34],
floralwhite: [255, 250, 240],
forestgreen: [34, 139, 34],
fuchsia: [255, 0, 255],
gainsboro: [220, 220, 220],
ghostwhite: [248, 248, 255],
gold: [255, 215, 0],
goldenrod: [218, 165, 32],
gray: [128, 128, 128],
grey: [128, 128, 128],
green: [0, 128, 0],
greenyellow: [173, 255, 47],
honeydew: [240, 255, 240],
hotpink: [255, 105, 180],
indianred: [205, 92, 92],
indigo: [75, 0, 130],
ivory: [255, 255, 240],
khaki: [240, 230, 140],
lavender: [230, 230, 250],
lavenderblush: [255, 240, 245],
lawngreen: [124, 252, 0],
lemonchiffon: [255, 250, 205],
lightblue: [173, 216, 230],
lightcoral: [240, 128, 128],
lightcyan: [224, 255, 255],
lightgoldenrodyellow: [250, 250, 210],
lightgray: [211, 211, 211],
lightgreen: [144, 238, 144],
lightgrey: [211, 211, 211],
lightpink: [255, 182, 193],
lightsalmon: [255, 160, 122],
lightseagreen: [32, 178, 170],
lightskyblue: [135, 206, 250],
lightslategray: [119, 136, 153],
lightslategrey: [119, 136, 153],
lightsteelblue: [176, 196, 222],
lightyellow: [255, 255, 224],
lime: [0, 255, 0],
limegreen: [50, 205, 50],
linen: [250, 240, 230],
magenta: [255, 0, 255],
maroon: [128, 0, 0],
mediumaquamarine: [102, 205, 170],
mediumblue: [0, 0, 205],
mediumorchid: [186, 85, 211],
mediumpurple: [147, 112, 219],
mediumseagreen: [60, 179, 113],
mediumslateblue: [123, 104, 238],
mediumspringgreen: [0, 250, 154],
mediumturquoise: [72, 209, 204],
mediumvioletred: [199, 21, 133],
midnightblue: [25, 25, 112],
mintcream: [245, 255, 250],
mistyrose: [255, 228, 225],
moccasin: [255, 228, 181],
navajowhite: [255, 222, 173],
navy: [0, 0, 128],
oldlace: [253, 245, 230],
olive: [128, 128, 0],
olivedrab: [107, 142, 35],
orange: [255, 165, 0],
orangered: [255, 69, 0],
orchid: [218, 112, 214],
palegoldenrod: [238, 232, 170],
palegreen: [152, 251, 152],
paleturquoise: [175, 238, 238],
palevioletred: [219, 112, 147],
papayawhip: [255, 239, 213],
peachpuff: [255, 218, 185],
peru: [205, 133, 63],
pink: [255, 192, 203],
plum: [221, 160, 221],
powderblue: [176, 224, 230],
purple: [128, 0, 128],
red: [255, 0, 0],
rosybrown: [188, 143, 143],
royalblue: [65, 105, 225],
saddlebrown: [139, 69, 19],
salmon: [250, 128, 114],
sandybrown: [244, 164, 96],
seagreen: [46, 139, 87],
seashell: [255, 245, 238],
sienna: [160, 82, 45],
silver: [192, 192, 192],
skyblue: [135, 206, 235],
slateblue: [106, 90, 205],
slategray: [112, 128, 144],
slategrey: [112, 128, 144],
snow: [255, 250, 250],
springgreen: [0, 255, 127],
steelblue: [70, 130, 180],
tan: [210, 180, 140],
teal: [0, 128, 128],
thistle: [216, 191, 216],
tomato: [255, 99, 71],
turquoise: [64, 224, 208],
violet: [238, 130, 238],
wheat: [245, 222, 179],
white: [255, 255, 255],
whitesmoke: [245, 245, 245],
yellow: [255, 255, 0],
yellowgreen: [154, 205, 50]
};
var setMap = function setMap(options) {
var obj = options.map;
var keys = options.keys;
var l = keys.length;
for (var i = 0; i < l; i++) {
var key = keys[i];
if (plainObject(key)) {
throw Error('Tried to set map with object key');
}
if (i < keys.length - 1) {
// extend the map if necessary
if (obj[key] == null) {
obj[key] = {};
}
obj = obj[key];
} else {
// set the value
obj[key] = options.value;
}
}
}; // gets the value in a map even if it's not built in places
var getMap = function getMap(options) {
var obj = options.map;
var keys = options.keys;
var l = keys.length;
for (var i = 0; i < l; i++) {
var key = keys[i];
if (plainObject(key)) {
throw Error('Tried to get map with object key');
}
obj = obj[key];
if (obj == null) {
return obj;
}
}
return obj;
}; // deletes the entry in the map
var performance$1 = window$1 ? window$1.performance : null;
var pnow = performance$1 && performance$1.now ? function () {
return performance$1.now();
} : function () {
return Date.now();
};
var raf = function () {
if (window$1) {
if (window$1.requestAnimationFrame) {
return function (fn) {
window$1.requestAnimationFrame(fn);
};
} else if (window$1.mozRequestAnimationFrame) {
return function (fn) {
window$1.mozRequestAnimationFrame(fn);
};
} else if (window$1.webkitRequestAnimationFrame) {
return function (fn) {
window$1.webkitRequestAnimationFrame(fn);
};
} else if (window$1.msRequestAnimationFrame) {
return function (fn) {
window$1.msRequestAnimationFrame(fn);
};
}
}
return function (fn) {
if (fn) {
setTimeout(function () {
fn(pnow());
}, 1000 / 60);
}
};
}();
var requestAnimationFrame$1 = function requestAnimationFrame(fn) {
return raf(fn);
};
var performanceNow = pnow;
var DEFAULT_HASH_SEED = 9261;
var K = 65599; // 37 also works pretty well
var DEFAULT_HASH_SEED_ALT = 5381;
var hashIterableInts = function hashIterableInts(iterator) {
var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED;
// sdbm/string-hash
var hash = seed;
var entry;
for (;;) {
entry = iterator.next();
if (entry.done) {
break;
}
hash = hash * K + entry.value | 0;
}
return hash;
};
var hashInt = function hashInt(num) {
var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED;
// sdbm/string-hash
return seed * K + num | 0;
};
var hashIntAlt = function hashIntAlt(num) {
var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED_ALT;
// djb2/string-hash
return (seed << 5) + seed + num | 0;
};
var combineHashes = function combineHashes(hash1, hash2) {
return hash1 * 0x200000 + hash2;
};
var combineHashesArray = function combineHashesArray(hashes) {
return hashes[0] * 0x200000 + hashes[1];
};
var hashArrays = function hashArrays(hashes1, hashes2) {
return [hashInt(hashes1[0], hashes2[0]), hashIntAlt(hashes1[1], hashes2[1])];
};
var hashIntsArray = function hashIntsArray(ints, seed) {
var entry = {
value: 0,
done: false
};
var i = 0;
var length = ints.length;
var iterator = {
next: function next() {
if (i < length) {
entry.value = ints[i++];
} else {
entry.done = true;
}
return entry;
}
};
return hashIterableInts(iterator, seed);
};
var hashString = function hashString(str, seed) {
var entry = {
value: 0,
done: false
};
var i = 0;
var length = str.length;
var iterator = {
next: function next() {
if (i < length) {
entry.value = str.charCodeAt(i++);
} else {
entry.done = true;
}
return entry;
}
};
return hashIterableInts(iterator, seed);
};
var hashStrings = function hashStrings() {
return hashStringsArray(arguments);
};
var hashStringsArray = function hashStringsArray(strs) {
var hash;
for (var i = 0; i < strs.length; i++) {
var str = strs[i];
if (i === 0) {
hash = hashString(str);
} else {
hash = hashString(str, hash);
}
}
return hash;
};
/*global console */
var warningsEnabled = true;
var warnSupported = console.warn != null; // eslint-disable-line no-console
var traceSupported = console.trace != null; // eslint-disable-line no-console
var MAX_INT = Number.MAX_SAFE_INTEGER || 9007199254740991;
var trueify = function trueify() {
return true;
};
var falsify = function falsify() {
return false;
};
var zeroify = function zeroify() {
return 0;
};
var noop$1 = function noop() {};
var error = function error(msg) {
throw new Error(msg);
};
var warnings = function warnings(enabled) {
if (enabled !== undefined) {
warningsEnabled = !!enabled;
} else {
return warningsEnabled;
}
};
var warn = function warn(msg) {
/* eslint-disable no-console */
if (!warnings()) {
return;
}
if (warnSupported) {
console.warn(msg);
} else {
console.log(msg);
if (traceSupported) {
console.trace();
}
}
};
/* eslint-enable */
var clone$1 = function clone(obj) {
return extend({}, obj);
}; // gets a shallow copy of the argument
var copy = function copy(obj) {
if (obj == null) {
return obj;
}
if (array(obj)) {
return obj.slice();
} else if (plainObject(obj)) {
return clone$1(obj);
} else {
return obj;
}
};
var copyArray$1 = function copyArray(arr) {
return arr.slice();
};
var uuid = function uuid(a, b
/* placeholders */
) {
for ( // loop :)
b = a = ''; // b - result , a - numeric letiable
a++ < 36; //
b += a * 51 & 52 // if "a" is not 9 or 14 or 19 or 24
? // return a random number or 4
(a ^ 15 // if "a" is not 15
? // genetate a random number from 0 to 15
8 ^ Math.random() * (a ^ 20 ? 16 : 4) // unless "a" is 20, in which case a random number from 8 to 11
: 4 // otherwise 4
).toString(16) : '-' // in other cases (if "a" is 9,14,19,24) insert "-"
) {
}
return b;
};
var _staticEmptyObject = {};
var staticEmptyObject = function staticEmptyObject() {
return _staticEmptyObject;
};
var defaults$1 = function defaults(_defaults) {
var keys = Object.keys(_defaults);
return function (opts) {
var filledOpts = {};
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var optVal = opts == null ? undefined : opts[key];
filledOpts[key] = optVal === undefined ? _defaults[key] : optVal;
}
return filledOpts;
};
};
var removeFromArray = function removeFromArray(arr, ele, oneCopy) {
for (var i = arr.length - 1; i >= 0; i--) {
if (arr[i] === ele) {
arr.splice(i, 1);
if (oneCopy) {
break;
}
}
}
};
var clearArray = function clearArray(arr) {
arr.splice(0, arr.length);
};
var push = function push(arr, otherArr) {
for (var i = 0; i < otherArr.length; i++) {
var el = otherArr[i];
arr.push(el);
}
};
var getPrefixedProperty = function getPrefixedProperty(obj, propName, prefix) {
if (prefix) {
propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth
}
return obj[propName];
};
var setPrefixedProperty = function setPrefixedProperty(obj, propName, prefix, value) {
if (prefix) {
propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth
}
obj[propName] = value;
};
/* global Map */
var ObjectMap =
/*#__PURE__*/
function () {
function ObjectMap() {
_classCallCheck(this, ObjectMap);
this._obj = {};
}
_createClass(ObjectMap, [{
key: "set",
value: function set(key, val) {
this._obj[key] = val;
return this;
}
}, {
key: "delete",
value: function _delete(key) {
this._obj[key] = undefined;
return this;
}
}, {
key: "clear",
value: function clear() {
this._obj = {};
}
}, {
key: "has",
value: function has(key) {
return this._obj[key] !== undefined;
}
}, {
key: "get",
value: function get(key) {
return this._obj[key];
}
}]);
return ObjectMap;
}();
var Map$1$1 = typeof Map !== 'undefined' ? Map : ObjectMap;
/* global Set */
var undef = "undefined" ;
var ObjectSet =
/*#__PURE__*/
function () {
function ObjectSet(arrayOrObjectSet) {
_classCallCheck(this, ObjectSet);
this._obj = Object.create(null);
this.size = 0;
if (arrayOrObjectSet != null) {
var arr;
if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) {
arr = arrayOrObjectSet.toArray();
} else {
arr = arrayOrObjectSet;
}
for (var i = 0; i < arr.length; i++) {
this.add(arr[i]);
}
}
}
_createClass(ObjectSet, [{
key: "instanceString",
value: function instanceString() {
return 'set';
}
}, {
key: "add",
value: function add(val) {
var o = this._obj;
if (o[val] !== 1) {
o[val] = 1;
this.size++;
}
}
}, {
key: "delete",
value: function _delete(val) {
var o = this._obj;
if (o[val] === 1) {
o[val] = 0;
this.size--;
}
}
}, {
key: "clear",
value: function clear() {
this._obj = Object.create(null);
}
}, {
key: "has",
value: function has(val) {
return this._obj[val] === 1;
}
}, {
key: "toArray",
value: function toArray() {
var _this = this;
return Object.keys(this._obj).filter(function (key) {
return _this.has(key);
});
}
}, {
key: "forEach",
value: function forEach(callback, thisArg) {
return this.toArray().forEach(callback, thisArg);
}
}]);
return ObjectSet;
}();
var Set$1$1 = (typeof Set === "undefined" ? "undefined" : _typeof(Set)) !== undef ? Set : ObjectSet;
var Element$1 = function Element(cy, params) {
var restore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
if (cy === undefined || params === undefined || !core(cy)) {
error('An element must have a core reference and parameters set');
return;
}
var group = params.group; // try to automatically infer the group if unspecified
if (group == null) {
if (params.data && params.data.source != null && params.data.target != null) {
group = 'edges';
} else {
group = 'nodes';
}
} // validate group
if (group !== 'nodes' && group !== 'edges') {
error('An element must be of type `nodes` or `edges`; you specified `' + group + '`');
return;
} // make the element array-like, just like a collection
this.length = 1;
this[0] = this; // NOTE: when something is added here, add also to ele.json()
var _p = this._private = {
cy: cy,
single: true,
// indicates this is an element
data: params.data || {},
// data object
position: params.position || {
x: 0,
y: 0
},
// (x, y) position pair
autoWidth: undefined,
// width and height of nodes calculated by the renderer when set to special 'auto' value
autoHeight: undefined,
autoPadding: undefined,
compoundBoundsClean: false,
// whether the compound dimensions need to be recalculated the next time dimensions are read
listeners: [],
// array of bound listeners
group: group,
// string; 'nodes' or 'edges'
style: {},
// properties as set by the style
rstyle: {},
// properties for style sent from the renderer to the core
styleCxts: [],
// applied style contexts from the styler
styleKeys: {},
// per-group keys of style property values
removed: true,
// whether it's inside the vis; true if removed (set true here since we call restore)
selected: params.selected ? true : false,
// whether it's selected
selectable: params.selectable === undefined ? true : params.selectable ? true : false,
// whether it's selectable
locked: params.locked ? true : false,
// whether the element is locked (cannot be moved)
grabbed: false,
// whether the element is grabbed by the mouse; renderer sets this privately
grabbable: params.grabbable === undefined ? true : params.grabbable ? true : false,
// whether the element can be grabbed
pannable: params.pannable === undefined ? group === 'edges' ? true : false : params.pannable ? true : false,
// whether the element has passthrough panning enabled
active: false,
// whether the element is active from user interaction
classes: new Set$1$1(),
// map ( className => true )
animation: {
// object for currently-running animations
current: [],
queue: []
},
rscratch: {},
// object in which the renderer can store information
scratch: params.scratch || {},
// scratch objects
edges: [],
// array of connected edges
children: [],
// array of children
parent: null,
// parent ref
traversalCache: {},
// cache of output of traversal functions
backgrounding: false,
// whether background images are loading
bbCache: null,
// cache of the current bounding box
bbCacheShift: {
x: 0,
y: 0
},
// shift applied to cached bb to be applied on next get
bodyBounds: null,
// bounds cache of element body, w/o overlay
overlayBounds: null,
// bounds cache of element body, including overlay
labelBounds: {
// bounds cache of labels
all: null,
source: null,
target: null,
main: null
},
arrowBounds: {
// bounds cache of edge arrows
source: null,
target: null,
'mid-source': null,
'mid-target': null
}
};
if (_p.position.x == null) {
_p.position.x = 0;
}
if (_p.position.y == null) {
_p.position.y = 0;
} // renderedPosition overrides if specified
if (params.renderedPosition) {
var rpos = params.renderedPosition;
var pan = cy.pan();
var zoom = cy.zoom();
_p.position = {
x: (rpos.x - pan.x) / zoom,
y: (rpos.y - pan.y) / zoom
};
}
var classes = [];
if (array(params.classes)) {
classes = params.classes;
} else if (string(params.classes)) {
classes = params.classes.split(/\s+/);
}
for (var i = 0, l = classes.length; i < l; i++) {
var cls = classes[i];
if (!cls || cls === '') {
continue;
}
_p.classes.add(cls);
}
this.createEmitter();
var bypass = params.style || params.css;
if (bypass) {
warn('Setting a `style` bypass at element creation should be done only when absolutely necessary. Try to use the stylesheet instead.');
this.style(bypass);
}
if (restore === undefined || restore) {
this.restore();
}
};
var defineSearch = function defineSearch(params) {
params = {
bfs: params.bfs || !params.dfs,
dfs: params.dfs || !params.bfs
}; // from pseudocode on wikipedia
return function searchFn(roots, fn$1, directed) {
var options;
if (plainObject(roots) && !elementOrCollection(roots)) {
options = roots;
roots = options.roots || options.root;
fn$1 = options.visit;
directed = options.directed;
}
directed = arguments.length === 2 && !fn(fn$1) ? fn$1 : directed;
fn$1 = fn(fn$1) ? fn$1 : function () {};
var cy = this._private.cy;
var v = roots = string(roots) ? this.filter(roots) : roots;
var Q = [];
var connectedNodes = [];
var connectedBy = {};
var id2depth = {};
var V = {};
var j = 0;
var found;
var _this$byGroup = this.byGroup(),
nodes = _this$byGroup.nodes,
edges = _this$byGroup.edges; // enqueue v
for (var i = 0; i < v.length; i++) {
var vi = v[i];
var viId = vi.id();
if (vi.isNode()) {
Q.unshift(vi);
if (params.bfs) {
V[viId] = true;
connectedNodes.push(vi);
}
id2depth[viId] = 0;
}
}
var _loop2 = function _loop2() {
var v = params.bfs ? Q.shift() : Q.pop();
var vId = v.id();
if (params.dfs) {
if (V[vId]) {
return "continue";
}
V[vId] = true;
connectedNodes.push(v);
}
var depth = id2depth[vId];
var prevEdge = connectedBy[vId];
var src = prevEdge != null ? prevEdge.source() : null;
var tgt = prevEdge != null ? prevEdge.target() : null;
var prevNode = prevEdge == null ? undefined : v.same(src) ? tgt[0] : src[0];
var ret = void 0;
ret = fn$1(v, prevEdge, prevNode, j++, depth);
if (ret === true) {
found = v;
return "break";
}
if (ret === false) {
return "break";
}
var vwEdges = v.connectedEdges().filter(function (e) {
return (!directed || e.source().same(v)) && edges.has(e);
});
for (var _i2 = 0; _i2 < vwEdges.length; _i2++) {
var e = vwEdges[_i2];
var w = e.connectedNodes().filter(function (n) {
return !n.same(v) && nodes.has(n);
});
var wId = w.id();
if (w.length !== 0 && !V[wId]) {
w = w[0];
Q.push(w);
if (params.bfs) {
V[wId] = true;
connectedNodes.push(w);
}
connectedBy[wId] = e;
id2depth[wId] = id2depth[vId] + 1;
}
}
};
_loop: while (Q.length !== 0) {
var _ret = _loop2();
switch (_ret) {
case "continue":
continue;
case "break":
break _loop;
}
}
var connectedEles = cy.collection();
for (var _i = 0; _i < connectedNodes.length; _i++) {
var node = connectedNodes[_i];
var edge = connectedBy[node.id()];
if (edge != null) {
connectedEles.push(edge);
}
connectedEles.push(node);
}
return {
path: cy.collection(connectedEles),
found: cy.collection(found)
};
};
}; // search, spanning trees, etc
var elesfn = {
breadthFirstSearch: defineSearch({
bfs: true
}),
depthFirstSearch: defineSearch({
dfs: true
})
}; // nice, short mathemathical alias
elesfn.bfs = elesfn.breadthFirstSearch;
elesfn.dfs = elesfn.depthFirstSearch;
var dijkstraDefaults = defaults$1({
root: null,
weight: function weight(edge) {
return 1;
},
directed: false
});
var elesfn$1 = {
dijkstra: function dijkstra(options) {
if (!plainObject(options)) {
var args = arguments;
options = {
root: args[0],
weight: args[1],
directed: args[2]
};
}
var _dijkstraDefaults = dijkstraDefaults(options),
root = _dijkstraDefaults.root,
weight = _dijkstraDefaults.weight,
directed = _dijkstraDefaults.directed;
var eles = this;
var weightFn = weight;
var source = string(root) ? this.filter(root)[0] : root[0];
var dist = {};
var prev = {};
var knownDist = {};
var _this$byGroup = this.byGroup(),
nodes = _this$byGroup.nodes,
edges = _this$byGroup.edges;
edges.unmergeBy(function (ele) {
return ele.isLoop();
});
var getDist = function getDist(node) {
return dist[node.id()];
};
var setDist = function setDist(node, d) {
dist[node.id()] = d;
Q.updateItem(node);
};
var Q = new Heap(function (a, b) {
return getDist(a) - getDist(b);
});
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
dist[node.id()] = node.same(source) ? 0 : Infinity;
Q.push(node);
}
var distBetween = function distBetween(u, v) {
var uvs = (directed ? u.edgesTo(v) : u.edgesWith(v)).intersect(edges);
var smallestDistance = Infinity;
var smallestEdge;
for (var _i = 0; _i < uvs.length; _i++) {
var edge = uvs[_i];
var _weight = weightFn(edge);
if (_weight < smallestDistance || !smallestEdge) {
smallestDistance = _weight;
smallestEdge = edge;
}
}
return {
edge: smallestEdge,
dist: smallestDistance
};
};
while (Q.size() > 0) {
var u = Q.pop();
var smalletsDist = getDist(u);
var uid = u.id();
knownDist[uid] = smalletsDist;
if (smalletsDist === Infinity) {
continue;
}
var neighbors = u.neighborhood().intersect(nodes);
for (var _i2 = 0; _i2 < neighbors.length; _i2++) {
var v = neighbors[_i2];
var vid = v.id();
var vDist = distBetween(u, v);
var alt = smalletsDist + vDist.dist;
if (alt < getDist(v)) {
setDist(v, alt);
prev[vid] = {
node: u,
edge: vDist.edge
};
}
} // for
} // while
return {
distanceTo: function distanceTo(node) {
var target = string(node) ? nodes.filter(node)[0] : node[0];
return knownDist[target.id()];
},
pathTo: function pathTo(node) {
var target = string(node) ? nodes.filter(node)[0] : node[0];
var S = [];
var u = target;
var uid = u.id();
if (target.length > 0) {
S.unshift(target);
while (prev[uid]) {
var p = prev[uid];
S.unshift(p.edge);
S.unshift(p.node);
u = p.node;
uid = u.id();
}
}
return eles.spawn(S);
}
};
}
};
var elesfn$2 = {
// kruskal's algorithm (finds min spanning tree, assuming undirected graph)
// implemented from pseudocode from wikipedia
kruskal: function kruskal(weightFn) {
weightFn = weightFn || function (edge) {
return 1;
};
var _this$byGroup = this.byGroup(),
nodes = _this$byGroup.nodes,
edges = _this$byGroup.edges;
var numNodes = nodes.length;
var forest = new Array(numNodes);
var A = nodes; // assumes byGroup() creates new collections that can be safely mutated
var findSetIndex = function findSetIndex(ele) {
for (var i = 0; i < forest.length; i++) {
var eles = forest[i];
if (eles.has(ele)) {
return i;
}
}
}; // start with one forest per node
for (var i = 0; i < numNodes; i++) {
forest[i] = this.spawn(nodes[i]);
}
var S = edges.sort(function (a, b) {
return weightFn(a) - weightFn(b);
});
for (var _i = 0; _i < S.length; _i++) {
var edge = S[_i];
var u = edge.source()[0];
var v = edge.target()[0];
var setUIndex = findSetIndex(u);
var setVIndex = findSetIndex(v);
var setU = forest[setUIndex];
var setV = forest[setVIndex];
if (setUIndex !== setVIndex) {
A.merge(edge); // combine forests for u and v
setU.merge(setV);
forest.splice(setVIndex, 1);
}
}
return A;
}
};
var aStarDefaults = defaults$1({
root: null,
goal: null,
weight: function weight(edge) {
return 1;
},
heuristic: function heuristic(edge) {
return 0;
},
directed: false
});
var elesfn$3 = {
// Implemented from pseudocode from wikipedia
aStar: function aStar(options) {
var cy = this.cy();
var _aStarDefaults = aStarDefaults(options),
root = _aStarDefaults.root,
goal = _aStarDefaults.goal,
heuristic = _aStarDefaults.heuristic,
directed = _aStarDefaults.directed,
weight = _aStarDefaults.weight;
root = cy.collection(root)[0];
goal = cy.collection(goal)[0];
var sid = root.id();
var tid = goal.id();
var gScore = {};
var fScore = {};
var closedSetIds = {};
var openSet = new Heap(function (a, b) {
return fScore[a.id()] - fScore[b.id()];
});
var openSetIds = new Set$1$1();
var cameFrom = {};
var cameFromEdge = {};
var addToOpenSet = function addToOpenSet(ele, id) {
openSet.push(ele);
openSetIds.add(id);
};
var cMin, cMinId;
var popFromOpenSet = function popFromOpenSet() {
cMin = openSet.pop();
cMinId = cMin.id();
openSetIds["delete"](cMinId);
};
var isInOpenSet = function isInOpenSet(id) {
return openSetIds.has(id);
};
addToOpenSet(root, sid);
gScore[sid] = 0;
fScore[sid] = heuristic(root); // Counter
var steps = 0; // Main loop
while (openSet.size() > 0) {
popFromOpenSet();
steps++; // If we've found our goal, then we are done
if (cMinId === tid) {
var path = [];
var pathNode = goal;
var pathNodeId = tid;
var pathEdge = cameFromEdge[pathNodeId];
for (;;) {
path.unshift(pathNode);
if (pathEdge != null) {
path.unshift(pathEdge);
}
pathNode = cameFrom[pathNodeId];
if (pathNode == null) {
break;
}
pathNodeId = pathNode.id();
pathEdge = cameFromEdge[pathNodeId];
}
return {
found: true,
distance: gScore[cMinId],
path: this.spawn(path),
steps: steps
};
} // Add cMin to processed nodes
closedSetIds[cMinId] = true; // Update scores for neighbors of cMin
// Take into account if graph is directed or not
var vwEdges = cMin._private.edges;
for (var i = 0; i < vwEdges.length; i++) {
var e = vwEdges[i]; // edge must be in set of calling eles
if (!this.hasElementWithId(e.id())) {
continue;
} // cMin must be the source of edge if directed
if (directed && e.data('source') !== cMinId) {
continue;
}
var wSrc = e.source();
var wTgt = e.target();
var w = wSrc.id() !== cMinId ? wSrc : wTgt;
var wid = w.id(); // node must be in set of calling eles
if (!this.hasElementWithId(wid)) {
continue;
} // if node is in closedSet, ignore it
if (closedSetIds[wid]) {
continue;
} // New tentative score for node w
var tempScore = gScore[cMinId] + weight(e); // Update gScore for node w if:
// w not present in openSet
// OR
// tentative gScore is less than previous value
// w not in openSet
if (!isInOpenSet(wid)) {
gScore[wid] = tempScore;
fScore[wid] = tempScore + heuristic(w);
addToOpenSet(w, wid);
cameFrom[wid] = cMin;
cameFromEdge[wid] = e;
continue;
} // w already in openSet, but with greater gScore
if (tempScore < gScore[wid]) {
gScore[wid] = tempScore;
fScore[wid] = tempScore + heuristic(w);
cameFrom[wid] = cMin;
cameFromEdge[wid] = e;
}
} // End of neighbors update
} // End of main loop
// If we've reached here, then we've not reached our goal
return {
found: false,
distance: undefined,
path: undefined,
steps: steps
};
}
}; // elesfn
var floydWarshallDefaults = defaults$1({
weight: function weight(edge) {
return 1;
},
directed: false
});
var elesfn$4 = {
// Implemented from pseudocode from wikipedia
floydWarshall: function floydWarshall(options) {
var cy = this.cy();
var _floydWarshallDefault = floydWarshallDefaults(options),
weight = _floydWarshallDefault.weight,
directed = _floydWarshallDefault.directed;
var weightFn = weight;
var _this$byGroup = this.byGroup(),
nodes = _this$byGroup.nodes,
edges = _this$byGroup.edges;
var N = nodes.length;
var Nsq = N * N;
var indexOf = function indexOf(node) {
return nodes.indexOf(node);
};
var atIndex = function atIndex(i) {
return nodes[i];
}; // Initialize distance matrix
var dist = new Array(Nsq);
for (var n = 0; n < Nsq; n++) {
var j = n % N;
var i = (n - j) / N;
if (i === j) {
dist[n] = 0;
} else {
dist[n] = Infinity;
}
} // Initialize matrix used for path reconstruction
// Initialize distance matrix
var next = new Array(Nsq);
var edgeNext = new Array(Nsq); // Process edges
for (var _i = 0; _i < edges.length; _i++) {
var edge = edges[_i];
var src = edge.source()[0];
var tgt = edge.target()[0];
if (src === tgt) {
continue;
} // exclude loops
var s = indexOf(src);
var t = indexOf(tgt);
var st = s * N + t; // source to target index
var _weight = weightFn(edge); // Check if already process another edge between same 2 nodes
if (dist[st] > _weight) {
dist[st] = _weight;
next[st] = t;
edgeNext[st] = edge;
} // If undirected graph, process 'reversed' edge
if (!directed) {
var ts = t * N + s; // target to source index
if (!directed && dist[ts] > _weight) {
dist[ts] = _weight;
next[ts] = s;
edgeNext[ts] = edge;
}
}
} // Main loop
for (var k = 0; k < N; k++) {
for (var _i2 = 0; _i2 < N; _i2++) {
var ik = _i2 * N + k;
for (var _j = 0; _j < N; _j++) {
var ij = _i2 * N + _j;
var kj = k * N + _j;
if (dist[ik] + dist[kj] < dist[ij]) {
dist[ij] = dist[ik] + dist[kj];
next[ij] = next[ik];
}
}
}
}
var getArgEle = function getArgEle(ele) {
return (string(ele) ? cy.filter(ele) : ele)[0];
};
var indexOfArgEle = function indexOfArgEle(ele) {
return indexOf(getArgEle(ele));
};
var res = {
distance: function distance(from, to) {
var i = indexOfArgEle(from);
var j = indexOfArgEle(to);
return dist[i * N + j];
},
path: function path(from, to) {
var i = indexOfArgEle(from);
var j = indexOfArgEle(to);
var fromNode = atIndex(i);
if (i === j) {
return fromNode.collection();
}
if (next[i * N + j] == null) {
return cy.collection();
}
var path = cy.collection();
var prev = i;
var edge;
path.merge(fromNode);
while (i !== j) {
prev = i;
i = next[i * N + j];
edge = edgeNext[prev * N + i];
path.merge(edge);
path.merge(atIndex(i));
}
return path;
}
};
return res;
} // floydWarshall
}; // elesfn
var bellmanFordDefaults = defaults$1({
weight: function weight(edge) {
return 1;
},
directed: false,
root: null
});
var elesfn$5 = {
// Implemented from pseudocode from wikipedia
bellmanFord: function bellmanFord(options) {
var _this = this;
var _bellmanFordDefaults = bellmanFordDefaults(options),
weight = _bellmanFordDefaults.weight,
directed = _bellmanFordDefaults.directed,
root = _bellmanFordDefaults.root;
var weightFn = weight;
var eles = this;
var cy = this.cy();
var _this$byGroup = this.byGroup(),
edges = _this$byGroup.edges,
nodes = _this$byGroup.nodes;
var numNodes = nodes.length;
var infoMap = new Map$1$1();
var hasNegativeWeightCycle = false;
var negativeWeightCycles = [];
root = cy.collection(root)[0]; // in case selector passed
edges.unmergeBy(function (edge) {
return edge.isLoop();
});
var numEdges = edges.length;
var getInfo = function getInfo(node) {
var obj = infoMap.get(node.id());
if (!obj) {
obj = {};
infoMap.set(node.id(), obj);
}
return obj;
};
var getNodeFromTo = function getNodeFromTo(to) {
return (string(to) ? cy.$(to) : to)[0];
};
var distanceTo = function distanceTo(to) {
return getInfo(getNodeFromTo(to)).dist;
};
var pathTo = function pathTo(to) {
var thisStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : root;
var end = getNodeFromTo(to);
var path = [];
var node = end;
for (;;) {
if (node == null) {
return _this.spawn();
}
var _getInfo = getInfo(node),
edge = _getInfo.edge,
pred = _getInfo.pred;
path.unshift(node[0]);
if (node.same(thisStart) && path.length > 0) {
break;
}
if (edge != null) {
path.unshift(edge);
}
node = pred;
}
return eles.spawn(path);
}; // Initializations { dist, pred, edge }
for (var i = 0; i < numNodes; i++) {
var node = nodes[i];
var info = getInfo(node);
if (node.same(root)) {
info.dist = 0;
} else {
info.dist = Infinity;
}
info.pred = null;
info.edge = null;
} // Edges relaxation
var replacedEdge = false;
var checkForEdgeReplacement = function checkForEdgeReplacement(node1, node2, edge, info1, info2, weight) {
var dist = info1.dist + weight;
if (dist < info2.dist && !edge.same(info1.edge)) {
info2.dist = dist;
info2.pred = node1;
info2.edge = edge;
replacedEdge = true;
}
};
for (var _i = 1; _i < numNodes; _i++) {
replacedEdge = false;
for (var e = 0; e < numEdges; e++) {
var edge = edges[e];
var src = edge.source();
var tgt = edge.target();
var _weight = weightFn(edge);
var srcInfo = getInfo(src);
var tgtInfo = getInfo(tgt);
checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight); // If undirected graph, we need to take into account the 'reverse' edge
if (!directed) {
checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight);
}
}
if (!replacedEdge) {
break;
}
}
if (replacedEdge) {
// Check for negative weight cycles
for (var _e = 0; _e < numEdges; _e++) {
var _edge = edges[_e];
var _src = _edge.source();
var _tgt = _edge.target();
var _weight2 = weightFn(_edge);
var srcDist = getInfo(_src).dist;
var tgtDist = getInfo(_tgt).dist;
if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) {
warn('Graph contains a negative weight cycle for Bellman-Ford');
hasNegativeWeightCycle = true;
break;
}
}
}
return {
distanceTo: distanceTo,
pathTo: pathTo,
hasNegativeWeightCycle: hasNegativeWeightCycle,
negativeWeightCycles: negativeWeightCycles
};
} // bellmanFord
}; // elesfn
var sqrt2 = Math.sqrt(2); // Function which colapses 2 (meta) nodes into one
// Updates the remaining edge lists
// Receives as a paramater the edge which causes the collapse
var collapse = function collapse(edgeIndex, nodeMap, remainingEdges) {
if (remainingEdges.length === 0) {
error("Karger-Stein must be run on a connected (sub)graph");
}
var edgeInfo = remainingEdges[edgeIndex];
var sourceIn = edgeInfo[1];
var targetIn = edgeInfo[2];
var partition1 = nodeMap[sourceIn];
var partition2 = nodeMap[targetIn];
var newEdges = remainingEdges; // re-use array
// Delete all edges between partition1 and partition2
for (var i = newEdges.length - 1; i >= 0; i--) {
var edge = newEdges[i];
var src = edge[1];
var tgt = edge[2];
if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) {
newEdges.splice(i, 1);
}
} // All edges pointing to partition2 should now point to partition1
for (var _i = 0; _i < newEdges.length; _i++) {
var _edge = newEdges[_i];
if (_edge[1] === partition2) {
// Check source
newEdges[_i] = _edge.slice(); // copy
newEdges[_i][1] = partition1;
} else if (_edge[2] === partition2) {
// Check target
newEdges[_i] = _edge.slice(); // copy
newEdges[_i][2] = partition1;
}
} // Move all nodes from partition2 to partition1
for (var _i2 = 0; _i2 < nodeMap.length; _i2++) {
if (nodeMap[_i2] === partition2) {
nodeMap[_i2] = partition1;
}
}
return newEdges;
}; // Contracts a graph until we reach a certain number of meta nodes
var contractUntil = function contractUntil(metaNodeMap, remainingEdges, size, sizeLimit) {
while (size > sizeLimit) {
// Choose an edge randomly
var edgeIndex = Math.floor(Math.random() * remainingEdges.length); // Collapse graph based on edge
remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges);
size--;
}
return remainingEdges;
};
var elesfn$6 = {
// Computes the minimum cut of an undirected graph
// Returns the correct answer with high probability
kargerStein: function kargerStein() {
var _this = this;
var _this$byGroup = this.byGroup(),
nodes = _this$byGroup.nodes,
edges = _this$byGroup.edges;
edges.unmergeBy(function (edge) {
return edge.isLoop();
});
var numNodes = nodes.length;
var numEdges = edges.length;
var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2));
var stopSize = Math.floor(numNodes / sqrt2);
if (numNodes < 2) {
error('At least 2 nodes are required for Karger-Stein algorithm');
return undefined;
} // Now store edge destination as indexes
// Format for each edge (edge index, source node index, target node index)
var edgeIndexes = [];
for (var i = 0; i < numEdges; i++) {
var e = edges[i];
edgeIndexes.push([i, nodes.indexOf(e.source()), nodes.indexOf(e.target())]);
} // We will store the best cut found here
var minCutSize = Infinity;
var minCutEdgeIndexes = [];
var minCutNodeMap = new Array(numNodes); // Initial meta node partition
var metaNodeMap = new Array(numNodes);
var metaNodeMap2 = new Array(numNodes);
var copyNodesMap = function copyNodesMap(from, to) {
for (var _i3 = 0; _i3 < numNodes; _i3++) {
to[_i3] = from[_i3];
}
}; // Main loop
for (var iter = 0; iter <= numIter; iter++) {
// Reset meta node partition
for (var _i4 = 0; _i4 < numNodes; _i4++) {
metaNodeMap[_i4] = _i4;
} // Contract until stop point (stopSize nodes)
var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize);
var edgesState2 = edgesState.slice(); // copy
// Create a copy of the colapsed nodes state
copyNodesMap(metaNodeMap, metaNodeMap2); // Run 2 iterations starting in the stop state
var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2);
var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2); // Is any of the 2 results the best cut so far?
if (res1.length <= res2.length && res1.length < minCutSize) {
minCutSize = res1.length;
minCutEdgeIndexes = res1;
copyNodesMap(metaNodeMap, minCutNodeMap);
} else if (res2.length <= res1.length && res2.length < minCutSize) {
minCutSize = res2.length;
minCutEdgeIndexes = res2;
copyNodesMap(metaNodeMap2, minCutNodeMap);
}
} // end of main loop
// Construct result
var cut = this.spawn(minCutEdgeIndexes.map(function (e) {
return edges[e[0]];
}));
var partition1 = this.spawn();
var partition2 = this.spawn(); // traverse metaNodeMap for best cut
var witnessNodePartition = minCutNodeMap[0];
for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) {
var partitionId = minCutNodeMap[_i5];
var node = nodes[_i5];
if (partitionId === witnessNodePartition) {
partition1.merge(node);
} else {
partition2.merge(node);
}
} // construct components corresponding to each disjoint subset of nodes
var constructComponent = function constructComponent(subset) {
var component = _this.spawn();
subset.forEach(function (node) {
component.merge(node);
node.connectedEdges().forEach(function (edge) {
// ensure edge is within calling collection and edge is not in cut
if (_this.contains(edge) && !cut.contains(edge)) {
component.merge(edge);
}
});
});
return component;
};
var components = [constructComponent(partition1), constructComponent(partition2)];
var ret = {
cut: cut,
components: components,
// n.b. partitions are included to be compatible with the old api spec
// (could be removed in a future major version)
partition1: partition1,
partition2: partition2
};
return ret;
}
}; // elesfn
var copyPosition = function copyPosition(p) {
return {
x: p.x,
y: p.y
};
};
var modelToRenderedPosition = function modelToRenderedPosition(p, zoom, pan) {
return {
x: p.x * zoom + pan.x,
y: p.y * zoom + pan.y
};
};
var renderedToModelPosition = function renderedToModelPosition(p, zoom, pan) {
return {
x: (p.x - pan.x) / zoom,
y: (p.y - pan.y) / zoom
};
};
var array2point = function array2point(arr) {
return {
x: arr[0],
y: arr[1]
};
};
var min$2 = function min(arr) {
var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;
var min = Infinity;
for (var i = begin; i < end; i++) {
var val = arr[i];
if (isFinite(val)) {
min = Math.min(val, min);
}
}
return min;
};
var max$2 = function max(arr) {
var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;
var max = -Infinity;
for (var i = begin; i < end; i++) {
var val = arr[i];
if (isFinite(val)) {
max = Math.max(val, max);
}
}
return max;
};
var mean = function mean(arr) {
var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;
var total = 0;
var n = 0;
for (var i = begin; i < end; i++) {
var val = arr[i];
if (isFinite(val)) {
total += val;
n++;
}
}
return total / n;
};
var median = function median(arr) {
var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;
var copy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
var sort = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
var includeHoles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
if (copy) {
arr = arr.slice(begin, end);
} else {
if (end < arr.length) {
arr.splice(end, arr.length - end);
}
if (begin > 0) {
arr.splice(0, begin);
}
} // all non finite (e.g. Infinity, NaN) elements must be -Infinity so they go to the start
var off = 0; // offset from non-finite values
for (var i = arr.length - 1; i >= 0; i--) {
var v = arr[i];
if (includeHoles) {
if (!isFinite(v)) {
arr[i] = -Infinity;
off++;
}
} else {
// just remove it if we don't want to consider holes
arr.splice(i, 1);
}
}
if (sort) {
arr.sort(function (a, b) {
return a - b;
}); // requires copy = true if you don't want to change the orig
}
var len = arr.length;
var mid = Math.floor(len / 2);
if (len % 2 !== 0) {
return arr[mid + 1 + off];
} else {
return (arr[mid - 1 + off] + arr[mid + off]) / 2;
}
};
var deg2rad = function deg2rad(deg) {
return Math.PI * deg / 180;
};
var getAngleFromDisp = function getAngleFromDisp(dispX, dispY) {
return Math.atan2(dispY, dispX) - Math.PI / 2;
};
var log2 = Math.log2 || function (n) {
return Math.log(n) / Math.log(2);
};
var signum = function signum(x) {
if (x > 0) {
return 1;
} else if (x < 0) {
return -1;
} else {
return 0;
}
};
var dist$1 = function dist(p1, p2) {
return Math.sqrt(sqdist(p1, p2));
};
var sqdist = function sqdist(p1, p2) {
var dx = p2.x - p1.x;
var dy = p2.y - p1.y;
return dx * dx + dy * dy;
};
var inPlaceSumNormalize = function inPlaceSumNormalize(v) {
var length = v.length; // First, get sum of all elements
var total = 0;
for (var i = 0; i < length; i++) {
total += v[i];
} // Now, divide each by the sum of all elements
for (var _i = 0; _i < length; _i++) {
v[_i] = v[_i] / total;
}
return v;
};
var qbezierAt = function qbezierAt(p0, p1, p2, t) {
return (1 - t) * (1 - t) * p0 + 2 * (1 - t) * t * p1 + t * t * p2;
};
var qbezierPtAt = function qbezierPtAt(p0, p1, p2, t) {
return {
x: qbezierAt(p0.x, p1.x, p2.x, t),
y: qbezierAt(p0.y, p1.y, p2.y, t)
};
};
var lineAt = function lineAt(p0, p1, t, d) {
var vec = {
x: p1.x - p0.x,
y: p1.y - p0.y
};
var vecDist = dist$1(p0, p1);
var normVec = {
x: vec.x / vecDist,
y: vec.y / vecDist
};
t = t == null ? 0 : t;
d = d != null ? d : t * vecDist;
return {
x: p0.x + normVec.x * d,
y: p0.y + normVec.y * d
};
};
var bound = function bound(min, val, max) {
return Math.max(min, Math.min(max, val));
}; // makes a full bb (x1, y1, x2, y2, w, h) from implicit params
var makeBoundingBox = function makeBoundingBox(bb) {
if (bb == null) {
return {
x1: Infinity,
y1: Infinity,
x2: -Infinity,
y2: -Infinity,
w: 0,
h: 0
};
} else if (bb.x1 != null && bb.y1 != null) {
if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) {
return {
x1: bb.x1,
y1: bb.y1,
x2: bb.x2,
y2: bb.y2,
w: bb.x2 - bb.x1,
h: bb.y2 - bb.y1
};
} else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) {
return {
x1: bb.x1,
y1: bb.y1,
x2: bb.x1 + bb.w,
y2: bb.y1 + bb.h,
w: bb.w,
h: bb.h
};
}
}
};
var copyBoundingBox = function copyBoundingBox(bb) {
return {
x1: bb.x1,
x2: bb.x2,
w: bb.w,
y1: bb.y1,
y2: bb.y2,
h: bb.h
};
};
var clearBoundingBox = function clearBoundingBox(bb) {
bb.x1 = Infinity;
bb.y1 = Infinity;
bb.x2 = -Infinity;
bb.y2 = -Infinity;
bb.w = 0;
bb.h = 0;
};
var updateBoundingBox = function updateBoundingBox(bb1, bb2) {
// update bb1 with bb2 bounds
bb1.x1 = Math.min(bb1.x1, bb2.x1);
bb1.x2 = Math.max(bb1.x2, bb2.x2);
bb1.w = bb1.x2 - bb1.x1;
bb1.y1 = Math.min(bb1.y1, bb2.y1);
bb1.y2 = Math.max(bb1.y2, bb2.y2);
bb1.h = bb1.y2 - bb1.y1;
};
var expandBoundingBoxByPoint = function expandBoundingBoxByPoint(bb, x, y) {
bb.x1 = Math.min(bb.x1, x);
bb.x2 = Math.max(bb.x2, x);
bb.w = bb.x2 - bb.x1;
bb.y1 = Math.min(bb.y1, y);
bb.y2 = Math.max(bb.y2, y);
bb.h = bb.y2 - bb.y1;
};
var expandBoundingBox = function expandBoundingBox(bb) {
var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
bb.x1 -= padding;
bb.x2 += padding;
bb.y1 -= padding;
bb.y2 += padding;
bb.w = bb.x2 - bb.x1;
bb.h = bb.y2 - bb.y1;
return bb;
};
var expandBoundingBoxSides = function expandBoundingBoxSides(bb) {
var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0];
var top, right, bottom, left;
if (padding.length === 1) {
top = right = bottom = left = padding[0];
} else if (padding.length === 2) {
top = bottom = padding[0];
left = right = padding[1];
} else if (padding.length === 4) {
var _padding = _slicedToArray(padding, 4);
top = _padding[0];
right = _padding[1];
bottom = _padding[2];
left = _padding[3];
}
bb.x1 -= left;
bb.x2 += right;
bb.y1 -= top;
bb.y2 += bottom;
bb.w = bb.x2 - bb.x1;
bb.h = bb.y2 - bb.y1;
return bb;
};
var assignBoundingBox = function assignBoundingBox(bb1, bb2) {
bb1.x1 = bb2.x1;
bb1.y1 = bb2.y1;
bb1.x2 = bb2.x2;
bb1.y2 = bb2.y2;
bb1.w = bb1.x2 - bb1.x1;
bb1.h = bb1.y2 - bb1.y1;
};
var boundingBoxesIntersect = function boundingBoxesIntersect(bb1, bb2) {
// case: one bb to right of other
if (bb1.x1 > bb2.x2) {
return false;
}
if (bb2.x1 > bb1.x2) {
return false;
} // case: one bb to left of other
if (bb1.x2 < bb2.x1) {
return false;
}
if (bb2.x2 < bb1.x1) {
return false;
} // case: one bb above other
if (bb1.y2 < bb2.y1) {
return false;
}
if (bb2.y2 < bb1.y1) {
return false;
} // case: one bb below other
if (bb1.y1 > bb2.y2) {
return false;
}
if (bb2.y1 > bb1.y2) {
return false;
} // otherwise, must have some overlap
return true;
};
var inBoundingBox = function inBoundingBox(bb, x, y) {
return bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2;
};
var pointInBoundingBox = function pointInBoundingBox(bb, pt) {
return inBoundingBox(bb, pt.x, pt.y);
};
var boundingBoxInBoundingBox = function boundingBoxInBoundingBox(bb1, bb2) {
return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2);
};
var roundRectangleIntersectLine = function roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding) {
var cornerRadius = getRoundRectangleRadius(width, height);
var halfWidth = width / 2;
var halfHeight = height / 2; // Check intersections with straight line segments
var straightLineIntersections; // Top segment, left to right
{
var topStartX = nodeX - halfWidth + cornerRadius - padding;
var topStartY = nodeY - halfHeight - padding;
var topEndX = nodeX + halfWidth - cornerRadius + padding;
var topEndY = topStartY;
straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false);
if (straightLineIntersections.length > 0) {
return straightLineIntersections;
}
} // Right segment, top to bottom
{
var rightStartX = nodeX + halfWidth + padding;
var rightStartY = nodeY - halfHeight + cornerRadius - padding;
var rightEndX = rightStartX;
var rightEndY = nodeY + halfHeight - cornerRadius + padding;
straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false);
if (straightLineIntersections.length > 0) {
return straightLineIntersections;
}
} // Bottom segment, left to right
{
var bottomStartX = nodeX - halfWidth + cornerRadius - padding;
var bottomStartY = nodeY + halfHeight + padding;
var bottomEndX = nodeX + halfWidth - cornerRadius + padding;
var bottomEndY = bottomStartY;
straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false);
if (straightLineIntersections.length > 0) {
return straightLineIntersections;
}
} // Left segment, top to bottom
{
var leftStartX = nodeX - halfWidth - padding;
var leftStartY = nodeY - halfHeight + cornerRadius - padding;
var leftEndX = leftStartX;
var leftEndY = nodeY + halfHeight - cornerRadius + padding;
straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false);
if (straightLineIntersections.length > 0) {
return straightLineIntersections;
}
} // Check intersections with arc segments
var arcIntersections; // Top Left
{
var topLeftCenterX = nodeX - halfWidth + cornerRadius;
var topLeftCenterY = nodeY - halfHeight + cornerRadius;
arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle
if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) {
return [arcIntersections[0], arcIntersections[1]];
}
} // Top Right
{
var topRightCenterX = nodeX + halfWidth - cornerRadius;
var topRightCenterY = nodeY - halfHeight + cornerRadius;
arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle
if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) {
return [arcIntersections[0], arcIntersections[1]];
}
} // Bottom Right
{
var bottomRightCenterX = nodeX + halfWidth - cornerRadius;
var bottomRightCenterY = nodeY + halfHeight - cornerRadius;
arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle
if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) {
return [arcIntersections[0], arcIntersections[1]];
}
} // Bottom Left
{
var bottomLeftCenterX = nodeX - halfWidth + cornerRadius;
var bottomLeftCenterY = nodeY + halfHeight - cornerRadius;
arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle
if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) {
return [arcIntersections[0], arcIntersections[1]];
}
}
return []; // if nothing
};
var inLineVicinity = function inLineVicinity(x, y, lx1, ly1, lx2, ly2, tolerance) {
var t = tolerance;
var x1 = Math.min(lx1, lx2);
var x2 = Math.max(lx1, lx2);
var y1 = Math.min(ly1, ly2);
var y2 = Math.max(ly1, ly2);
return x1 - t <= x && x <= x2 + t && y1 - t <= y && y <= y2 + t;
};
var inBezierVicinity = function inBezierVicinity(x, y, x1, y1, x2, y2, x3, y3, tolerance) {
var bb = {
x1: Math.min(x1, x3, x2) - tolerance,
x2: Math.max(x1, x3, x2) + tolerance,
y1: Math.min(y1, y3, y2) - tolerance,
y2: Math.max(y1, y3, y2) + tolerance
}; // if outside the rough bounding box for the bezier, then it can't be a hit
if (x < bb.x1 || x > bb.x2 || y < bb.y1 || y > bb.y2) {
// console.log('bezier out of rough bb')
return false;
} else {
// console.log('do more expensive check');
return true;
}
};
var solveQuadratic = function solveQuadratic(a, b, c, val) {
c -= val;
var r = b * b - 4 * a * c;
if (r < 0) {
return [];
}
var sqrtR = Math.sqrt(r);
var denom = 2 * a;
var root1 = (-b + sqrtR) / denom;
var root2 = (-b - sqrtR) / denom;
return [root1, root2];
};
var solveCubic = function solveCubic(a, b, c, d, result) {
// Solves a cubic function, returns root in form [r1, i1, r2, i2, r3, i3], where
// r is the real component, i is the imaginary component
// An implementation of the Cardano method from the year 1545
// http://en.wikipedia.org/wiki/Cubic_function#The_nature_of_the_roots
var epsilon = 0.00001; // avoid division by zero while keeping the overall expression close in value
if (a === 0) {
a = epsilon;
}
b /= a;
c /= a;
d /= a;
var discriminant, q, r, dum1, s, t, term1, r13;
q = (3.0 * c - b * b) / 9.0;
r = -(27.0 * d) + b * (9.0 * c - 2.0 * (b * b));
r /= 54.0;
discriminant = q * q * q + r * r;
result[1] = 0;
term1 = b / 3.0;
if (discriminant > 0) {
s = r + Math.sqrt(discriminant);
s = s < 0 ? -Math.pow(-s, 1.0 / 3.0) : Math.pow(s, 1.0 / 3.0);
t = r - Math.sqrt(discriminant);
t = t < 0 ? -Math.pow(-t, 1.0 / 3.0) : Math.pow(t, 1.0 / 3.0);
result[0] = -term1 + s + t;
term1 += (s + t) / 2.0;
result[4] = result[2] = -term1;
term1 = Math.sqrt(3.0) * (-t + s) / 2;
result[3] = term1;
result[5] = -term1;
return;
}
result[5] = result[3] = 0;
if (discriminant === 0) {
r13 = r < 0 ? -Math.pow(-r, 1.0 / 3.0) : Math.pow(r, 1.0 / 3.0);
result[0] = -term1 + 2.0 * r13;
result[4] = result[2] = -(r13 + term1);
return;
}
q = -q;
dum1 = q * q * q;
dum1 = Math.acos(r / Math.sqrt(dum1));
r13 = 2.0 * Math.sqrt(q);
result[0] = -term1 + r13 * Math.cos(dum1 / 3.0);
result[2] = -term1 + r13 * Math.cos((dum1 + 2.0 * Math.PI) / 3.0);
result[4] = -term1 + r13 * Math.cos((dum1 + 4.0 * Math.PI) / 3.0);
return;
};
var sqdistToQuadraticBezier = function sqdistToQuadraticBezier(x, y, x1, y1, x2, y2, x3, y3) {
// Find minimum distance by using the minimum of the distance
// function between the given point and the curve
// This gives the coefficients of the resulting cubic equation
// whose roots tell us where a possible minimum is
// (Coefficients are divided by 4)
var a = 1.0 * x1 * x1 - 4 * x1 * x2 + 2 * x1 * x3 + 4 * x2 * x2 - 4 * x2 * x3 + x3 * x3 + y1 * y1 - 4 * y1 * y2 + 2 * y1 * y3 + 4 * y2 * y2 - 4 * y2 * y3 + y3 * y3;
var b = 1.0 * 9 * x1 * x2 - 3 * x1 * x1 - 3 * x1 * x3 - 6 * x2 * x2 + 3 * x2 * x3 + 9 * y1 * y2 - 3 * y1 * y1 - 3 * y1 * y3 - 6 * y2 * y2 + 3 * y2 * y3;
var c = 1.0 * 3 * x1 * x1 - 6 * x1 * x2 + x1 * x3 - x1 * x + 2 * x2 * x2 + 2 * x2 * x - x3 * x + 3 * y1 * y1 - 6 * y1 * y2 + y1 * y3 - y1 * y + 2 * y2 * y2 + 2 * y2 * y - y3 * y;
var d = 1.0 * x1 * x2 - x1 * x1 + x1 * x - x2 * x + y1 * y2 - y1 * y1 + y1 * y - y2 * y; // debug("coefficients: " + a / a + ", " + b / a + ", " + c / a + ", " + d / a);
var roots = []; // Use the cubic solving algorithm
solveCubic(a, b, c, d, roots);
var zeroThreshold = 0.0000001;
var params = [];
for (var index = 0; index < 6; index += 2) {
if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1.0) {
params.push(roots[index]);
}
}
params.push(1.0);
params.push(0.0);
var minDistanceSquared = -1;
var curX, curY, distSquared;
for (var i = 0; i < params.length; i++) {
curX = Math.pow(1.0 - params[i], 2.0) * x1 + 2.0 * (1 - params[i]) * params[i] * x2 + params[i] * params[i] * x3;
curY = Math.pow(1 - params[i], 2.0) * y1 + 2 * (1.0 - params[i]) * params[i] * y2 + params[i] * params[i] * y3;
distSquared = Math.pow(curX - x, 2) + Math.pow(curY - y, 2); // debug('distance for param ' + params[i] + ": " + Math.sqrt(distSquared));
if (minDistanceSquared >= 0) {
if (distSquared < minDistanceSquared) {
minDistanceSquared = distSquared;
}
} else {
minDistanceSquared = distSquared;
}
}
return minDistanceSquared;
};
var sqdistToFiniteLine = function sqdistToFiniteLine(x, y, x1, y1, x2, y2) {
var offset = [x - x1, y - y1];
var line = [x2 - x1, y2 - y1];
var lineSq = line[0] * line[0] + line[1] * line[1];
var hypSq = offset[0] * offset[0] + offset[1] * offset[1];
var dotProduct = offset[0] * line[0] + offset[1] * line[1];
var adjSq = dotProduct * dotProduct / lineSq;
if (dotProduct < 0) {
return hypSq;
}
if (adjSq > lineSq) {
return (x - x2) * (x - x2) + (y - y2) * (y - y2);
}
return hypSq - adjSq;
};
var pointInsidePolygonPoints = function pointInsidePolygonPoints(x, y, points) {
var x1, y1, x2, y2;
var y3; // Intersect with vertical line through (x, y)
var up = 0; // let down = 0;
for (var i = 0; i < points.length / 2; i++) {
x1 = points[i * 2];
y1 = points[i * 2 + 1];
if (i + 1 < points.length / 2) {
x2 = points[(i + 1) * 2];
y2 = points[(i + 1) * 2 + 1];
} else {
x2 = points[(i + 1 - points.length / 2) * 2];
y2 = points[(i + 1 - points.length / 2) * 2 + 1];
}
if (x1 == x && x2 == x) ; else if (x1 >= x && x >= x2 || x1 <= x && x <= x2) {
y3 = (x - x1) / (x2 - x1) * (y2 - y1) + y1;
if (y3 > y) {
up++;
} // if( y3 < y ){
// down++;
// }
} else {
continue;
}
}
if (up % 2 === 0) {
return false;
} else {
return true;
}
};
var pointInsidePolygon = function pointInsidePolygon(x, y, basePoints, centerX, centerY, width, height, direction, padding) {
var transformedPoints = new Array(basePoints.length); // Gives negative angle
var angle;
if (direction[0] != null) {
angle = Math.atan(direction[1] / direction[0]);
if (direction[0] < 0) {
angle = angle + Math.PI / 2;
} else {
angle = -angle - Math.PI / 2;
}
} else {
angle = direction;
}
var cos = Math.cos(-angle);
var sin = Math.sin(-angle); // console.log("base: " + basePoints);
for (var i = 0; i < transformedPoints.length / 2; i++) {
transformedPoints[i * 2] = width / 2 * (basePoints[i * 2] * cos - basePoints[i * 2 + 1] * sin);
transformedPoints[i * 2 + 1] = height / 2 * (basePoints[i * 2 + 1] * cos + basePoints[i * 2] * sin);
transformedPoints[i * 2] += centerX;
transformedPoints[i * 2 + 1] += centerY;
}
var points;
if (padding > 0) {
var expandedLineSet = expandPolygon(transformedPoints, -padding);
points = joinLines(expandedLineSet);
} else {
points = transformedPoints;
}
return pointInsidePolygonPoints(x, y, points);
};
var pointInsideRoundPolygon = function pointInsideRoundPolygon(x, y, basePoints, centerX, centerY, width, height) {
var cutPolygonPoints = new Array(basePoints.length);
var halfW = width / 2;
var halfH = height / 2;
var cornerRadius = getRoundPolygonRadius(width, height);
var squaredCornerRadius = cornerRadius * cornerRadius;
for (var i = 0; i < basePoints.length / 4; i++) {
var sourceUv = void 0,
destUv = void 0;
if (i === 0) {
sourceUv = basePoints.length - 2;
} else {
sourceUv = i * 4 - 2;
}
destUv = i * 4 + 2;
var px = centerX + halfW * basePoints[i * 4];
var py = centerY + halfH * basePoints[i * 4 + 1];
var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1];
var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2);
var cp0x = px - offset * basePoints[sourceUv];
var cp0y = py - offset * basePoints[sourceUv + 1];
var cp1x = px + offset * basePoints[destUv];
var cp1y = py + offset * basePoints[destUv + 1];
cutPolygonPoints[i * 4] = cp0x;
cutPolygonPoints[i * 4 + 1] = cp0y;
cutPolygonPoints[i * 4 + 2] = cp1x;
cutPolygonPoints[i * 4 + 3] = cp1y;
var orthx = basePoints[sourceUv + 1];
var orthy = -basePoints[sourceUv];
var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1];
if (cosAlpha < 0) {
orthx *= -1;
orthy *= -1;
}
var cx = cp0x + orthx * cornerRadius;
var cy = cp0y + orthy * cornerRadius;
var squaredDistance = Math.pow(cx - x, 2) + Math.pow(cy - y, 2);
if (squaredDistance <= squaredCornerRadius) {
return true;
}
}
return pointInsidePolygonPoints(x, y, cutPolygonPoints);
};
var joinLines = function joinLines(lineSet) {
var vertices = new Array(lineSet.length / 2);
var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY;
var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY;
for (var i = 0; i < lineSet.length / 4; i++) {
currentLineStartX = lineSet[i * 4];
currentLineStartY = lineSet[i * 4 + 1];
currentLineEndX = lineSet[i * 4 + 2];
currentLineEndY = lineSet[i * 4 + 3];
if (i < lineSet.length / 4 - 1) {
nextLineStartX = lineSet[(i + 1) * 4];
nextLineStartY = lineSet[(i + 1) * 4 + 1];
nextLineEndX = lineSet[(i + 1) * 4 + 2];
nextLineEndY = lineSet[(i + 1) * 4 + 3];
} else {
nextLineStartX = lineSet[0];
nextLineStartY = lineSet[1];
nextLineEndX = lineSet[2];
nextLineEndY = lineSet[3];
}
var intersection = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true);
vertices[i * 2] = intersection[0];
vertices[i * 2 + 1] = intersection[1];
}
return vertices;
};
var expandPolygon = function expandPolygon(points, pad) {
var expandedLineSet = new Array(points.length * 2);
var currentPointX, currentPointY, nextPointX, nextPointY;
for (var i = 0; i < points.length / 2; i++) {
currentPointX = points[i * 2];
currentPointY = points[i * 2 + 1];
if (i < points.length / 2 - 1) {
nextPointX = points[(i + 1) * 2];
nextPointY = points[(i + 1) * 2 + 1];
} else {
nextPointX = points[0];
nextPointY = points[1];
} // Current line: [currentPointX, currentPointY] to [nextPointX, nextPointY]
// Assume CCW polygon winding
var offsetX = nextPointY - currentPointY;
var offsetY = -(nextPointX - currentPointX); // Normalize
var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY);
var normalizedOffsetX = offsetX / offsetLength;
var normalizedOffsetY = offsetY / offsetLength;
expandedLineSet[i * 4] = currentPointX + normalizedOffsetX * pad;
expandedLineSet[i * 4 + 1] = currentPointY + normalizedOffsetY * pad;
expandedLineSet[i * 4 + 2] = nextPointX + normalizedOffsetX * pad;
expandedLineSet[i * 4 + 3] = nextPointY + normalizedOffsetY * pad;
}
return expandedLineSet;
};
var intersectLineEllipse = function intersectLineEllipse(x, y, centerX, centerY, ellipseWradius, ellipseHradius) {
var dispX = centerX - x;
var dispY = centerY - y;
dispX /= ellipseWradius;
dispY /= ellipseHradius;
var len = Math.sqrt(dispX * dispX + dispY * dispY);
var newLength = len - 1;
if (newLength < 0) {
return [];
}
var lenProportion = newLength / len;
return [(centerX - x) * lenProportion + x, (centerY - y) * lenProportion + y];
};
var checkInEllipse = function checkInEllipse(x, y, width, height, centerX, centerY, padding) {
x -= centerX;
y -= centerY;
x /= width / 2 + padding;
y /= height / 2 + padding;
return x * x + y * y <= 1;
}; // Returns intersections of increasing distance from line's start point
var intersectLineCircle = function intersectLineCircle(x1, y1, x2, y2, centerX, centerY, radius) {
// Calculate d, direction vector of line
var d = [x2 - x1, y2 - y1]; // Direction vector of line
var f = [x1 - centerX, y1 - centerY];
var a = d[0] * d[0] + d[1] * d[1];
var b = 2 * (f[0] * d[0] + f[1] * d[1]);
var c = f[0] * f[0] + f[1] * f[1] - radius * radius;
var discriminant = b * b - 4 * a * c;
if (discriminant < 0) {
return [];
}
var t1 = (-b + Math.sqrt(discriminant)) / (2 * a);
var t2 = (-b - Math.sqrt(discriminant)) / (2 * a);
var tMin = Math.min(t1, t2);
var tMax = Math.max(t1, t2);
var inRangeParams = [];
if (tMin >= 0 && tMin <= 1) {
inRangeParams.push(tMin);
}
if (tMax >= 0 && tMax <= 1) {
inRangeParams.push(tMax);
}
if (inRangeParams.length === 0) {
return [];
}
var nearIntersectionX = inRangeParams[0] * d[0] + x1;
var nearIntersectionY = inRangeParams[0] * d[1] + y1;
if (inRangeParams.length > 1) {
if (inRangeParams[0] == inRangeParams[1]) {
return [nearIntersectionX, nearIntersectionY];
} else {
var farIntersectionX = inRangeParams[1] * d[0] + x1;
var farIntersectionY = inRangeParams[1] * d[1] + y1;
return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY];
}
} else {
return [nearIntersectionX, nearIntersectionY];
}
};
var midOfThree = function midOfThree(a, b, c) {
if (b <= a && a <= c || c <= a && a <= b) {
return a;
} else if (a <= b && b <= c || c <= b && b <= a) {
return b;
} else {
return c;
}
}; // (x1,y1)=>(x2,y2) intersect with (x3,y3)=>(x4,y4)
var finiteLinesIntersect = function finiteLinesIntersect(x1, y1, x2, y2, x3, y3, x4, y4, infiniteLines) {
var dx13 = x1 - x3;
var dx21 = x2 - x1;
var dx43 = x4 - x3;
var dy13 = y1 - y3;
var dy21 = y2 - y1;
var dy43 = y4 - y3;
var ua_t = dx43 * dy13 - dy43 * dx13;
var ub_t = dx21 * dy13 - dy21 * dx13;
var u_b = dy43 * dx21 - dx43 * dy21;
if (u_b !== 0) {
var ua = ua_t / u_b;
var ub = ub_t / u_b;
var flptThreshold = 0.001;
var _min = 0 - flptThreshold;
var _max = 1 + flptThreshold;
if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) {
return [x1 + ua * dx21, y1 + ua * dy21];
} else {
if (!infiniteLines) {
return [];
} else {
return [x1 + ua * dx21, y1 + ua * dy21];
}
}
} else {
if (ua_t === 0 || ub_t === 0) {
// Parallel, coincident lines. Check if overlap
// Check endpoint of second line
if (midOfThree(x1, x2, x4) === x4) {
return [x4, y4];
} // Check start point of second line
if (midOfThree(x1, x2, x3) === x3) {
return [x3, y3];
} // Endpoint of first line
if (midOfThree(x3, x4, x2) === x2) {
return [x2, y2];
}
return [];
} else {
// Parallel, non-coincident
return [];
}
}
}; // math.polygonIntersectLine( x, y, basePoints, centerX, centerY, width, height, padding )
// intersect a node polygon (pts transformed)
//
// math.polygonIntersectLine( x, y, basePoints, centerX, centerY )
// intersect the points (no transform)
var polygonIntersectLine = function polygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) {
var intersections = [];
var intersection;
var transformedPoints = new Array(basePoints.length);
var doTransform = true;
if (width == null) {
doTransform = false;
}
var points;
if (doTransform) {
for (var i = 0; i < transformedPoints.length / 2; i++) {
transformedPoints[i * 2] = basePoints[i * 2] * width + centerX;
transformedPoints[i * 2 + 1] = basePoints[i * 2 + 1] * height + centerY;
}
if (padding > 0) {
var expandedLineSet = expandPolygon(transformedPoints, -padding);
points = joinLines(expandedLineSet);
} else {
points = transformedPoints;
}
} else {
points = basePoints;
}
var currentX, currentY, nextX, nextY;
for (var _i2 = 0; _i2 < points.length / 2; _i2++) {
currentX = points[_i2 * 2];
currentY = points[_i2 * 2 + 1];
if (_i2 < points.length / 2 - 1) {
nextX = points[(_i2 + 1) * 2];
nextY = points[(_i2 + 1) * 2 + 1];
} else {
nextX = points[0];
nextY = points[1];
}
intersection = finiteLinesIntersect(x, y, centerX, centerY, currentX, currentY, nextX, nextY);
if (intersection.length !== 0) {
intersections.push(intersection[0], intersection[1]);
}
}
return intersections;
};
var roundPolygonIntersectLine = function roundPolygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) {
var intersections = [];
var intersection;
var lines = new Array(basePoints.length);
var halfW = width / 2;
var halfH = height / 2;
var cornerRadius = getRoundPolygonRadius(width, height);
for (var i = 0; i < basePoints.length / 4; i++) {
var sourceUv = void 0,
destUv = void 0;
if (i === 0) {
sourceUv = basePoints.length - 2;
} else {
sourceUv = i * 4 - 2;
}
destUv = i * 4 + 2;
var px = centerX + halfW * basePoints[i * 4];
var py = centerY + halfH * basePoints[i * 4 + 1];
var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1];
var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2);
var cp0x = px - offset * basePoints[sourceUv];
var cp0y = py - offset * basePoints[sourceUv + 1];
var cp1x = px + offset * basePoints[destUv];
var cp1y = py + offset * basePoints[destUv + 1];
if (i === 0) {
lines[basePoints.length - 2] = cp0x;
lines[basePoints.length - 1] = cp0y;
} else {
lines[i * 4 - 2] = cp0x;
lines[i * 4 - 1] = cp0y;
}
lines[i * 4] = cp1x;
lines[i * 4 + 1] = cp1y;
var orthx = basePoints[sourceUv + 1];
var orthy = -basePoints[sourceUv];
var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1];
if (cosAlpha < 0) {
orthx *= -1;
orthy *= -1;
}
var cx = cp0x + orthx * cornerRadius;
var cy = cp0y + orthy * cornerRadius;
intersection = intersectLineCircle(x, y, centerX, centerY, cx, cy, cornerRadius);
if (intersection.length !== 0) {
intersections.push(intersection[0], intersection[1]);
}
}
for (var _i3 = 0; _i3 < lines.length / 4; _i3++) {
intersection = finiteLinesIntersect(x, y, centerX, centerY, lines[_i3 * 4], lines[_i3 * 4 + 1], lines[_i3 * 4 + 2], lines[_i3 * 4 + 3], false);
if (intersection.length !== 0) {
intersections.push(intersection[0], intersection[1]);
}
}
if (intersections.length > 2) {
var lowestIntersection = [intersections[0], intersections[1]];
var lowestSquaredDistance = Math.pow(lowestIntersection[0] - x, 2) + Math.pow(lowestIntersection[1] - y, 2);
for (var _i4 = 1; _i4 < intersections.length / 2; _i4++) {
var squaredDistance = Math.pow(intersections[_i4 * 2] - x, 2) + Math.pow(intersections[_i4 * 2 + 1] - y, 2);
if (squaredDistance <= lowestSquaredDistance) {
lowestIntersection[0] = intersections[_i4 * 2];
lowestIntersection[1] = intersections[_i4 * 2 + 1];
lowestSquaredDistance = squaredDistance;
}
}
return lowestIntersection;
}
return intersections;
};
var shortenIntersection = function shortenIntersection(intersection, offset, amount) {
var disp = [intersection[0] - offset[0], intersection[1] - offset[1]];
var length = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]);
var lenRatio = (length - amount) / length;
if (lenRatio < 0) {
lenRatio = 0.00001;
}
return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]];
};
var generateUnitNgonPointsFitToSquare = function generateUnitNgonPointsFitToSquare(sides, rotationRadians) {
var points = generateUnitNgonPoints(sides, rotationRadians);
points = fitPolygonToSquare(points);
return points;
};
var fitPolygonToSquare = function fitPolygonToSquare(points) {
var x, y;
var sides = points.length / 2;
var minX = Infinity,
minY = Infinity,
maxX = -Infinity,
maxY = -Infinity;
for (var i = 0; i < sides; i++) {
x = points[2 * i];
y = points[2 * i + 1];
minX = Math.min(minX, x);
maxX = Math.max(maxX, x);
minY = Math.min(minY, y);
maxY = Math.max(maxY, y);
} // stretch factors
var sx = 2 / (maxX - minX);
var sy = 2 / (maxY - minY);
for (var _i5 = 0; _i5 < sides; _i5++) {
x = points[2 * _i5] = points[2 * _i5] * sx;
y = points[2 * _i5 + 1] = points[2 * _i5 + 1] * sy;
minX = Math.min(minX, x);
maxX = Math.max(maxX, x);
minY = Math.min(minY, y);
maxY = Math.max(maxY, y);
}
if (minY < -1) {
for (var _i6 = 0; _i6 < sides; _i6++) {
y = points[2 * _i6 + 1] = points[2 * _i6 + 1] + (-1 - minY);
}
}
return points;
};
var generateUnitNgonPoints = function generateUnitNgonPoints(sides, rotationRadians) {
var increment = 1.0 / sides * 2 * Math.PI;
var startAngle = sides % 2 === 0 ? Math.PI / 2.0 + increment / 2.0 : Math.PI / 2.0;
startAngle += rotationRadians;
var points = new Array(sides * 2);
var currentAngle;
for (var i = 0; i < sides; i++) {
currentAngle = i * increment + startAngle;
points[2 * i] = Math.cos(currentAngle); // x
points[2 * i + 1] = Math.sin(-currentAngle); // y
}
return points;
}; // Set the default radius, unless half of width or height is smaller than default
var getRoundRectangleRadius = function getRoundRectangleRadius(width, height) {
return Math.min(width / 4, height / 4, 8);
}; // Set the default radius
var getRoundPolygonRadius = function getRoundPolygonRadius(width, height) {
return Math.min(width / 10, height / 10, 8);
};
var getCutRectangleCornerLength = function getCutRectangleCornerLength() {
return 8;
};
var bezierPtsToQuadCoeff = function bezierPtsToQuadCoeff(p0, p1, p2) {
return [p0 - 2 * p1 + p2, 2 * (p1 - p0), p0];
}; // get curve width, height, and control point position offsets as a percentage of node height / width
var getBarrelCurveConstants = function getBarrelCurveConstants(width, height) {
return {
heightOffset: Math.min(15, 0.05 * height),
widthOffset: Math.min(100, 0.25 * width),
ctrlPtOffsetPct: 0.05
};
};
var pageRankDefaults = defaults$1({
dampingFactor: 0.8,
precision: 0.000001,
iterations: 200,
weight: function weight(edge) {
return 1;
}
});
var elesfn$7 = {
pageRank: function pageRank(options) {
var _pageRankDefaults = pageRankDefaults(options),
dampingFactor = _pageRankDefaults.dampingFactor,
precision = _pageRankDefaults.precision,
iterations = _pageRankDefaults.iterations,
weight = _pageRankDefaults.weight;
var cy = this._private.cy;
var _this$byGroup = this.byGroup(),
nodes = _this$byGroup.nodes,
edges = _this$byGroup.edges;
var numNodes = nodes.length;
var numNodesSqd = numNodes * numNodes;
var numEdges = edges.length; // Construct transposed adjacency matrix
// First lets have a zeroed matrix of the right size
// We'll also keep track of the sum of each column
var matrix = new Array(numNodesSqd);
var columnSum = new Array(numNodes);
var additionalProb = (1 - dampingFactor) / numNodes; // Create null matrix
for (var i = 0; i < numNodes; i++) {
for (var j = 0; j < numNodes; j++) {
var n = i * numNodes + j;
matrix[n] = 0;
}
columnSum[i] = 0;
} // Now, process edges
for (var _i = 0; _i < numEdges; _i++) {
var edge = edges[_i];
var srcId = edge.data('source');
var tgtId = edge.data('target'); // Don't include loops in the matrix
if (srcId === tgtId) {
continue;
}
var s = nodes.indexOfId(srcId);
var t = nodes.indexOfId(tgtId);
var w = weight(edge);
var _n = t * numNodes + s; // Update matrix
matrix[_n] += w; // Update column sum
columnSum[s] += w;
} // Add additional probability based on damping factor
// Also, take into account columns that have sum = 0
var p = 1.0 / numNodes + additionalProb; // Shorthand
// Traverse matrix, column by column
for (var _j = 0; _j < numNodes; _j++) {
if (columnSum[_j] === 0) {
// No 'links' out from node jth, assume equal probability for each possible node
for (var _i2 = 0; _i2 < numNodes; _i2++) {
var _n2 = _i2 * numNodes + _j;
matrix[_n2] = p;
}
} else {
// Node jth has outgoing link, compute normalized probabilities
for (var _i3 = 0; _i3 < numNodes; _i3++) {
var _n3 = _i3 * numNodes + _j;
matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb;
}
}
} // Compute dominant eigenvector using power method
var eigenvector = new Array(numNodes);
var temp = new Array(numNodes);
var previous; // Start with a vector of all 1's
// Also, initialize a null vector which will be used as shorthand
for (var _i4 = 0; _i4 < numNodes; _i4++) {
eigenvector[_i4] = 1;
}
for (var iter = 0; iter < iterations; iter++) {
// Temp array with all 0's
for (var _i5 = 0; _i5 < numNodes; _i5++) {
temp[_i5] = 0;
} // Multiply matrix with previous result
for (var _i6 = 0; _i6 < numNodes; _i6++) {
for (var _j2 = 0; _j2 < numNodes; _j2++) {
var _n4 = _i6 * numNodes + _j2;
temp[_i6] += matrix[_n4] * eigenvector[_j2];
}
}
inPlaceSumNormalize(temp);
previous = eigenvector;
eigenvector = temp;
temp = previous;
var diff = 0; // Compute difference (squared module) of both vectors
for (var _i7 = 0; _i7 < numNodes; _i7++) {
var delta = previous[_i7] - eigenvector[_i7];
diff += delta * delta;
} // If difference is less than the desired threshold, stop iterating
if (diff < precision) {
break;
}
} // Construct result
var res = {
rank: function rank(node) {
node = cy.collection(node)[0];
return eigenvector[nodes.indexOf(node)];
}
};
return res;
} // pageRank
}; // elesfn
var defaults$1$1 = defaults$1({
root: null,
weight: function weight(edge) {
return 1;
},
directed: false,
alpha: 0
});
var elesfn$8 = {
degreeCentralityNormalized: function degreeCentralityNormalized(options) {
options = defaults$1$1(options);
var cy = this.cy();
var nodes = this.nodes();
var numNodes = nodes.length;
if (!options.directed) {
var degrees = {};
var maxDegree = 0;
for (var i = 0; i < numNodes; i++) {
var node = nodes[i]; // add current node to the current options object and call degreeCentrality
options.root = node;
var currDegree = this.degreeCentrality(options);
if (maxDegree < currDegree.degree) {
maxDegree = currDegree.degree;
}
degrees[node.id()] = currDegree.degree;
}
return {
degree: function degree(node) {
if (maxDegree === 0) {
return 0;
}
if (string(node)) {
// from is a selector string
node = cy.filter(node);
}
return degrees[node.id()] / maxDegree;
}
};
} else {
var indegrees = {};
var outdegrees = {};
var maxIndegree = 0;
var maxOutdegree = 0;
for (var _i = 0; _i < numNodes; _i++) {
var _node = nodes[_i];
var id = _node.id(); // add current node to the current options object and call degreeCentrality
options.root = _node;
var _currDegree = this.degreeCentrality(options);
if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree;
if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree;
indegrees[id] = _currDegree.indegree;
outdegrees[id] = _currDegree.outdegree;
}
return {
indegree: function indegree(node) {
if (maxIndegree == 0) {
return 0;
}
if (string(node)) {
// from is a selector string
node = cy.filter(node);
}
return indegrees[node.id()] / maxIndegree;
},
outdegree: function outdegree(node) {
if (maxOutdegree === 0) {
return 0;
}
if (string(node)) {
// from is a selector string
node = cy.filter(node);
}
return outdegrees[node.id()] / maxOutdegree;
}
};
}
},
// degreeCentralityNormalized
// Implemented from the algorithm in Opsahl's paper
// "Node centrality in weighted networks: Generalizing degree and shortest paths"
// check the heading 2 "Degree"
degreeCentrality: function degreeCentrality(options) {
options = defaults$1$1(options);
var cy = this.cy();
var callingEles = this;
var _options = options,
root = _options.root,
weight = _options.weight,
directed = _options.directed,
alpha = _options.alpha;
root = cy.collection(root)[0];
if (!directed) {
var connEdges = root.connectedEdges().intersection(callingEles);
var k = connEdges.length;
var s = 0; // Now, sum edge weights
for (var i = 0; i < connEdges.length; i++) {
s += weight(connEdges[i]);
}
return {
degree: Math.pow(k, 1 - alpha) * Math.pow(s, alpha)
};
} else {
var edges = root.connectedEdges();
var incoming = edges.filter(function (edge) {
return edge.target().same(root) && callingEles.has(edge);
});
var outgoing = edges.filter(function (edge) {
return edge.source().same(root) && callingEles.has(edge);
});
var k_in = incoming.length;
var k_out = outgoing.length;
var s_in = 0;
var s_out = 0; // Now, sum incoming edge weights
for (var _i2 = 0; _i2 < incoming.length; _i2++) {
s_in += weight(incoming[_i2]);
} // Now, sum outgoing edge weights
for (var _i3 = 0; _i3 < outgoing.length; _i3++) {
s_out += weight(outgoing[_i3]);
}
return {
indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha),
outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha)
};
}
} // degreeCentrality
}; // elesfn
// nice, short mathemathical alias
elesfn$8.dc = elesfn$8.degreeCentrality;
elesfn$8.dcn = elesfn$8.degreeCentralityNormalised = elesfn$8.degreeCentralityNormalized;
var defaults$2 = defaults$1({
harmonic: true,
weight: function weight() {
return 1;
},
directed: false,
root: null
});
var elesfn$9 = {
closenessCentralityNormalized: function closenessCentralityNormalized(options) {
var _defaults = defaults$2(options),
harmonic = _defaults.harmonic,
weight = _defaults.weight,
directed = _defaults.directed;
var cy = this.cy();
var closenesses = {};
var maxCloseness = 0;
var nodes = this.nodes();
var fw = this.floydWarshall({
weight: weight,
directed: directed
}); // Compute closeness for every node and find the maximum closeness
for (var i = 0; i < nodes.length; i++) {
var currCloseness = 0;
var node_i = nodes[i];
for (var j = 0; j < nodes.length; j++) {
if (i !== j) {
var d = fw.distance(node_i, nodes[j]);
if (harmonic) {
currCloseness += 1 / d;
} else {
currCloseness += d;
}
}
}
if (!harmonic) {
currCloseness = 1 / currCloseness;
}
if (maxCloseness < currCloseness) {
maxCloseness = currCloseness;
}
closenesses[node_i.id()] = currCloseness;
}
return {
closeness: function closeness(node) {
if (maxCloseness == 0) {
return 0;
}
if (string(node)) {
// from is a selector string
node = cy.filter(node)[0].id();
} else {
// from is a node
node = node.id();
}
return closenesses[node] / maxCloseness;
}
};
},
// Implemented from pseudocode from wikipedia
closenessCentrality: function closenessCentrality(options) {
var _defaults2 = defaults$2(options),
root = _defaults2.root,
weight = _defaults2.weight,
directed = _defaults2.directed,
harmonic = _defaults2.harmonic;
root = this.filter(root)[0]; // we need distance from this node to every other node
var dijkstra = this.dijkstra({
root: root,
weight: weight,
directed: directed
});
var totalDistance = 0;
var nodes = this.nodes();
for (var i = 0; i < nodes.length; i++) {
var n = nodes[i];
if (!n.same(root)) {
var d = dijkstra.distanceTo(n);
if (harmonic) {
totalDistance += 1 / d;
} else {
totalDistance += d;
}
}
}
return harmonic ? totalDistance : 1 / totalDistance;
} // closenessCentrality
}; // elesfn
// nice, short mathemathical alias
elesfn$9.cc = elesfn$9.closenessCentrality;
elesfn$9.ccn = elesfn$9.closenessCentralityNormalised = elesfn$9.closenessCentralityNormalized;
var defaults$3 = defaults$1({
weight: null,
directed: false
});
var elesfn$a = {
// Implemented from the algorithm in the paper "On Variants of Shortest-Path Betweenness Centrality and their Generic Computation" by Ulrik Brandes
betweennessCentrality: function betweennessCentrality(options) {
var _defaults = defaults$3(options),
directed = _defaults.directed,
weight = _defaults.weight;
var weighted = weight != null;
var cy = this.cy(); // starting
var V = this.nodes();
var A = {};
var _C = {};
var max = 0;
var C = {
set: function set(key, val) {
_C[key] = val;
if (val > max) {
max = val;
}
},
get: function get(key) {
return _C[key];
}
}; // A contains the neighborhoods of every node
for (var i = 0; i < V.length; i++) {
var v = V[i];
var vid = v.id();
if (directed) {
A[vid] = v.outgoers().nodes(); // get outgoers of every node
} else {
A[vid] = v.openNeighborhood().nodes(); // get neighbors of every node
}
C.set(vid, 0);
}
var _loop = function _loop(s) {
var sid = V[s].id();
var S = []; // stack
var P = {};
var g = {};
var d = {};
var Q = new Heap(function (a, b) {
return d[a] - d[b];
}); // queue
// init dictionaries
for (var _i = 0; _i < V.length; _i++) {
var _vid = V[_i].id();
P[_vid] = [];
g[_vid] = 0;
d[_vid] = Infinity;
}
g[sid] = 1; // sigma
d[sid] = 0; // distance to s
Q.push(sid);
while (!Q.empty()) {
var _v = Q.pop();
S.push(_v);
if (weighted) {
for (var j = 0; j < A[_v].length; j++) {
var w = A[_v][j];
var vEle = cy.getElementById(_v);
var edge = void 0;
if (vEle.edgesTo(w).length > 0) {
edge = vEle.edgesTo(w)[0];
} else {
edge = w.edgesTo(vEle)[0];
}
var edgeWeight = weight(edge);
w = w.id();
if (d[w] > d[_v] + edgeWeight) {
d[w] = d[_v] + edgeWeight;
if (Q.nodes.indexOf(w) < 0) {
//if w is not in Q
Q.push(w);
} else {
// update position if w is in Q
Q.updateItem(w);
}
g[w] = 0;
P[w] = [];
}
if (d[w] == d[_v] + edgeWeight) {
g[w] = g[w] + g[_v];
P[w].push(_v);
}
}
} else {
for (var _j = 0; _j < A[_v].length; _j++) {
var _w = A[_v][_j].id();
if (d[_w] == Infinity) {
Q.push(_w);
d[_w] = d[_v] + 1;
}
if (d[_w] == d[_v] + 1) {
g[_w] = g[_w] + g[_v];
P[_w].push(_v);
}
}
}
}
var e = {};
for (var _i2 = 0; _i2 < V.length; _i2++) {
e[V[_i2].id()] = 0;
}
while (S.length > 0) {
var _w2 = S.pop();
for (var _j2 = 0; _j2 < P[_w2].length; _j2++) {
var _v2 = P[_w2][_j2];
e[_v2] = e[_v2] + g[_v2] / g[_w2] * (1 + e[_w2]);
}
if (_w2 != V[s].id()) {
C.set(_w2, C.get(_w2) + e[_w2]);
}
}
};
for (var s = 0; s < V.length; s++) {
_loop(s);
}
var ret = {
betweenness: function betweenness(node) {
var id = cy.collection(node).id();
return C.get(id);
},
betweennessNormalized: function betweennessNormalized(node) {
if (max == 0) {
return 0;
}
var id = cy.collection(node).id();
return C.get(id) / max;
}
}; // alias
ret.betweennessNormalised = ret.betweennessNormalized;
return ret;
} // betweennessCentrality
}; // elesfn
// nice, short mathemathical alias
elesfn$a.bc = elesfn$a.betweennessCentrality;
// Implemented by Zoe Xi @zoexi for GSOC 2016
/* eslint-disable no-unused-vars */
var defaults$4 = defaults$1({
expandFactor: 2,
// affects time of computation and cluster granularity to some extent: M * M
inflateFactor: 2,
// affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j)
multFactor: 1,
// optional self loops for each node. Use a neutral value to improve cluster computations.
maxIterations: 20,
// maximum number of iterations of the MCL algorithm in a single run
attributes: [// attributes/features used to group nodes, ie. similarity values between nodes
function (edge) {
return 1;
}]
});
/* eslint-enable */
var setOptions = function setOptions(options) {
return defaults$4(options);
};
/* eslint-enable */
var getSimilarity = function getSimilarity(edge, attributes) {
var total = 0;
for (var i = 0; i < attributes.length; i++) {
total += attributes[i](edge);
}
return total;
};
var addLoops = function addLoops(M, n, val) {
for (var i = 0; i < n; i++) {
M[i * n + i] = val;
}
};
var normalize$1 = function normalize(M, n) {
var sum;
for (var col = 0; col < n; col++) {
sum = 0;
for (var row = 0; row < n; row++) {
sum += M[row * n + col];
}
for (var _row = 0; _row < n; _row++) {
M[_row * n + col] = M[_row * n + col] / sum;
}
}
}; // TODO: blocked matrix multiplication?
var mmult = function mmult(A, B, n) {
var C = new Array(n * n);
for (var i = 0; i < n; i++) {
for (var j = 0; j < n; j++) {
C[i * n + j] = 0;
}
for (var k = 0; k < n; k++) {
for (var _j = 0; _j < n; _j++) {
C[i * n + _j] += A[i * n + k] * B[k * n + _j];
}
}
}
return C;
};
var expand = function expand(M, n, expandFactor
/** power **/
) {
var _M = M.slice(0);
for (var p = 1; p < expandFactor; p++) {
M = mmult(M, _M, n);
}
return M;
};
var inflate = function inflate(M, n, inflateFactor
/** r **/
) {
var _M = new Array(n * n); // M(i,j) ^ inflatePower
for (var i = 0; i < n * n; i++) {
_M[i] = Math.pow(M[i], inflateFactor);
}
normalize$1(_M, n);
return _M;
};
var hasConverged = function hasConverged(M, _M, n2, roundFactor) {
// Check that both matrices have the same elements (i,j)
for (var i = 0; i < n2; i++) {
var v1 = Math.round(M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); // truncate to 'roundFactor' decimal places
var v2 = Math.round(_M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor);
if (v1 !== v2) {
return false;
}
}
return true;
};
var assign = function assign(M, n, nodes, cy) {
var clusters = [];
for (var i = 0; i < n; i++) {
var cluster = [];
for (var j = 0; j < n; j++) {
// Row-wise attractors and elements that they attract belong in same cluster
if (Math.round(M[i * n + j] * 1000) / 1000 > 0) {
cluster.push(nodes[j]);
}
}
if (cluster.length !== 0) {
clusters.push(cy.collection(cluster));
}
}
return clusters;
};
var isDuplicate = function isDuplicate(c1, c2) {
for (var i = 0; i < c1.length; i++) {
if (!c2[i] || c1[i].id() !== c2[i].id()) {
return false;
}
}
return true;
};
var removeDuplicates = function removeDuplicates(clusters) {
for (var i = 0; i < clusters.length; i++) {
for (var j = 0; j < clusters.length; j++) {
if (i != j && isDuplicate(clusters[i], clusters[j])) {
clusters.splice(j, 1);
}
}
}
return clusters;
};
var markovClustering = function markovClustering(options) {
var nodes = this.nodes();
var edges = this.edges();
var cy = this.cy(); // Set parameters of algorithm:
var opts = setOptions(options); // Map each node to its position in node array
var id2position = {};
for (var i = 0; i < nodes.length; i++) {
id2position[nodes[i].id()] = i;
} // Generate stochastic matrix M from input graph G (should be symmetric/undirected)
var n = nodes.length,
n2 = n * n;
var M = new Array(n2),
_M;
for (var _i = 0; _i < n2; _i++) {
M[_i] = 0;
}
for (var e = 0; e < edges.length; e++) {
var edge = edges[e];
var _i2 = id2position[edge.source().id()];
var j = id2position[edge.target().id()];
var sim = getSimilarity(edge, opts.attributes);
M[_i2 * n + j] += sim; // G should be symmetric and undirected
M[j * n + _i2] += sim;
} // Begin Markov cluster algorithm
// Step 1: Add self loops to each node, ie. add multFactor to matrix diagonal
addLoops(M, n, opts.multFactor); // Step 2: M = normalize( M );
normalize$1(M, n);
var isStillMoving = true;
var iterations = 0;
while (isStillMoving && iterations < opts.maxIterations) {
isStillMoving = false; // Step 3:
_M = expand(M, n, opts.expandFactor); // Step 4:
M = inflate(_M, n, opts.inflateFactor); // Step 5: check to see if ~steady state has been reached
if (!hasConverged(M, _M, n2, 4)) {
isStillMoving = true;
}
iterations++;
} // Build clusters from matrix
var clusters = assign(M, n, nodes, cy); // Remove duplicate clusters due to symmetry of graph and M matrix
clusters = removeDuplicates(clusters);
return clusters;
};
var markovClustering$1 = {
markovClustering: markovClustering,
mcl: markovClustering
};
// Common distance metrics for clustering algorithms
var identity$1 = function identity(x) {
return x;
};
var absDiff = function absDiff(p, q) {
return Math.abs(q - p);
};
var addAbsDiff = function addAbsDiff(total, p, q) {
return total + absDiff(p, q);
};
var addSquaredDiff = function addSquaredDiff(total, p, q) {
return total + Math.pow(q - p, 2);
};
var sqrt = function sqrt(x) {
return Math.sqrt(x);
};
var maxAbsDiff = function maxAbsDiff(currentMax, p, q) {
return Math.max(currentMax, absDiff(p, q));
};
var getDistance = function getDistance(length, getP, getQ, init, visit) {
var post = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : identity$1;
var ret = init;
var p, q;
for (var dim = 0; dim < length; dim++) {
p = getP(dim);
q = getQ(dim);
ret = visit(ret, p, q);
}
return post(ret);
};
var distances = {
euclidean: function euclidean(length, getP, getQ) {
if (length >= 2) {
return getDistance(length, getP, getQ, 0, addSquaredDiff, sqrt);
} else {
// for single attr case, more efficient to avoid sqrt
return getDistance(length, getP, getQ, 0, addAbsDiff);
}
},
squaredEuclidean: function squaredEuclidean(length, getP, getQ) {
return getDistance(length, getP, getQ, 0, addSquaredDiff);
},
manhattan: function manhattan(length, getP, getQ) {
return getDistance(length, getP, getQ, 0, addAbsDiff);
},
max: function max(length, getP, getQ) {
return getDistance(length, getP, getQ, -Infinity, maxAbsDiff);
}
}; // in case the user accidentally doesn't use camel case
distances['squared-euclidean'] = distances['squaredEuclidean'];
distances['squaredeuclidean'] = distances['squaredEuclidean'];
function clusteringDistance (method, length, getP, getQ, nodeP, nodeQ) {
var impl;
if (fn(method)) {
impl = method;
} else {
impl = distances[method] || distances.euclidean;
}
if (length === 0 && fn(method)) {
return impl(nodeP, nodeQ);
} else {
return impl(length, getP, getQ, nodeP, nodeQ);
}
}
var defaults$5 = defaults$1({
k: 2,
m: 2,
sensitivityThreshold: 0.0001,
distance: 'euclidean',
maxIterations: 10,
attributes: [],
testMode: false,
testCentroids: null
});
var setOptions$1 = function setOptions(options) {
return defaults$5(options);
};
/* eslint-enable */
var getDist = function getDist(type, node, centroid, attributes, mode) {
var noNodeP = mode !== 'kMedoids';
var getP = noNodeP ? function (i) {
return centroid[i];
} : function (i) {
return attributes[i](centroid);
};
var getQ = function getQ(i) {
return attributes[i](node);
};
var nodeP = centroid;
var nodeQ = node;
return clusteringDistance(type, attributes.length, getP, getQ, nodeP, nodeQ);
};
var randomCentroids = function randomCentroids(nodes, k, attributes) {
var ndim = attributes.length;
var min = new Array(ndim);
var max = new Array(ndim);
var centroids = new Array(k);
var centroid = null; // Find min, max values for each attribute dimension
for (var i = 0; i < ndim; i++) {
min[i] = nodes.min(attributes[i]).value;
max[i] = nodes.max(attributes[i]).value;
} // Build k centroids, each represented as an n-dim feature vector
for (var c = 0; c < k; c++) {
centroid = [];
for (var _i = 0; _i < ndim; _i++) {
centroid[_i] = Math.random() * (max[_i] - min[_i]) + min[_i]; // random initial value
}
centroids[c] = centroid;
}
return centroids;
};
var classify = function classify(node, centroids, distance, attributes, type) {
var min = Infinity;
var index = 0;
for (var i = 0; i < centroids.length; i++) {
var dist = getDist(distance, node, centroids[i], attributes, type);
if (dist < min) {
min = dist;
index = i;
}
}
return index;
};
var buildCluster = function buildCluster(centroid, nodes, assignment) {
var cluster = [];
var node = null;
for (var n = 0; n < nodes.length; n++) {
node = nodes[n];
if (assignment[node.id()] === centroid) {
//console.log("Node " + node.id() + " is associated with medoid #: " + m);
cluster.push(node);
}
}
return cluster;
};
var haveValuesConverged = function haveValuesConverged(v1, v2, sensitivityThreshold) {
return Math.abs(v2 - v1) <= sensitivityThreshold;
};
var haveMatricesConverged = function haveMatricesConverged(v1, v2, sensitivityThreshold) {
for (var i = 0; i < v1.length; i++) {
for (var j = 0; j < v1[i].length; j++) {
var diff = Math.abs(v1[i][j] - v2[i][j]);
if (diff > sensitivityThreshold) {
return false;
}
}
}
return true;
};
var seenBefore = function seenBefore(node, medoids, n) {
for (var i = 0; i < n; i++) {
if (node === medoids[i]) return true;
}
return false;
};
var randomMedoids = function randomMedoids(nodes, k) {
var medoids = new Array(k); // For small data sets, the probability of medoid conflict is greater,
// so we need to check to see if we've already seen or chose this node before.
if (nodes.length < 50) {
// Randomly select k medoids from the n nodes
for (var i = 0; i < k; i++) {
var node = nodes[Math.floor(Math.random() * nodes.length)]; // If we've already chosen this node to be a medoid, don't choose it again (for small data sets).
// Instead choose a different random node.
while (seenBefore(node, medoids, i)) {
node = nodes[Math.floor(Math.random() * nodes.length)];
}
medoids[i] = node;
}
} else {
// Relatively large data set, so pretty safe to not check and just select random nodes
for (var _i2 = 0; _i2 < k; _i2++) {
medoids[_i2] = nodes[Math.floor(Math.random() * nodes.length)];
}
}
return medoids;
};
var findCost = function findCost(potentialNewMedoid, cluster, attributes) {
var cost = 0;
for (var n = 0; n < cluster.length; n++) {
cost += getDist('manhattan', cluster[n], potentialNewMedoid, attributes, 'kMedoids');
}
return cost;
};
var kMeans = function kMeans(options) {
var cy = this.cy();
var nodes = this.nodes();
var node = null; // Set parameters of algorithm: # of clusters, distance metric, etc.
var opts = setOptions$1(options); // Begin k-means algorithm
var clusters = new Array(opts.k);
var assignment = {};
var centroids; // Step 1: Initialize centroid positions
if (opts.testMode) {
if (typeof opts.testCentroids === 'number') {
centroids = randomCentroids(nodes, opts.k, opts.attributes);
} else if (_typeof(opts.testCentroids) === 'object') {
centroids = opts.testCentroids;
} else {
centroids = randomCentroids(nodes, opts.k, opts.attributes);
}
} else {
centroids = randomCentroids(nodes, opts.k, opts.attributes);
}
var isStillMoving = true;
var iterations = 0;
while (isStillMoving && iterations < opts.maxIterations) {
// Step 2: Assign nodes to the nearest centroid
for (var n = 0; n < nodes.length; n++) {
node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster #
assignment[node.id()] = classify(node, centroids, opts.distance, opts.attributes, 'kMeans');
} // Step 3: For each of the k clusters, update its centroid
isStillMoving = false;
for (var c = 0; c < opts.k; c++) {
// Get all nodes that belong to this cluster
var cluster = buildCluster(c, nodes, assignment);
if (cluster.length === 0) {
// If cluster is empty, break out early & move to next cluster
continue;
} // Update centroids by calculating avg of all nodes within the cluster.
var ndim = opts.attributes.length;
var centroid = centroids[c]; // [ dim_1, dim_2, dim_3, ... , dim_n ]
var newCentroid = new Array(ndim);
var sum = new Array(ndim);
for (var d = 0; d < ndim; d++) {
sum[d] = 0.0;
for (var i = 0; i < cluster.length; i++) {
node = cluster[i];
sum[d] += opts.attributes[d](node);
}
newCentroid[d] = sum[d] / cluster.length; // Check to see if algorithm has converged, i.e. when centroids no longer change
if (!haveValuesConverged(newCentroid[d], centroid[d], opts.sensitivityThreshold)) {
isStillMoving = true;
}
}
centroids[c] = newCentroid;
clusters[c] = cy.collection(cluster);
}
iterations++;
}
return clusters;
};
var kMedoids = function kMedoids(options) {
var cy = this.cy();
var nodes = this.nodes();
var node = null;
var opts = setOptions$1(options); // Begin k-medoids algorithm
var clusters = new Array(opts.k);
var medoids;
var assignment = {};
var curCost;
var minCosts = new Array(opts.k); // minimum cost configuration for each cluster
// Step 1: Initialize k medoids
if (opts.testMode) {
if (typeof opts.testCentroids === 'number') ; else if (_typeof(opts.testCentroids) === 'object') {
medoids = opts.testCentroids;
} else {
medoids = randomMedoids(nodes, opts.k);
}
} else {
medoids = randomMedoids(nodes, opts.k);
}
var isStillMoving = true;
var iterations = 0;
while (isStillMoving && iterations < opts.maxIterations) {
// Step 2: Assign nodes to the nearest medoid
for (var n = 0; n < nodes.length; n++) {
node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster #
assignment[node.id()] = classify(node, medoids, opts.distance, opts.attributes, 'kMedoids');
}
isStillMoving = false; // Step 3: For each medoid m, and for each node assciated with mediod m,
// select the node with the lowest configuration cost as new medoid.
for (var m = 0; m < medoids.length; m++) {
// Get all nodes that belong to this medoid
var cluster = buildCluster(m, nodes, assignment);
if (cluster.length === 0) {
// If cluster is empty, break out early & move to next cluster
continue;
}
minCosts[m] = findCost(medoids[m], cluster, opts.attributes); // original cost
// Select different medoid if its configuration has the lowest cost
for (var _n = 0; _n < cluster.length; _n++) {
curCost = findCost(cluster[_n], cluster, opts.attributes);
if (curCost < minCosts[m]) {
minCosts[m] = curCost;
medoids[m] = cluster[_n];
isStillMoving = true;
}
}
clusters[m] = cy.collection(cluster);
}
iterations++;
}
return clusters;
};
var updateCentroids = function updateCentroids(centroids, nodes, U, weight, opts) {
var numerator, denominator;
for (var n = 0; n < nodes.length; n++) {
for (var c = 0; c < centroids.length; c++) {
weight[n][c] = Math.pow(U[n][c], opts.m);
}
}
for (var _c = 0; _c < centroids.length; _c++) {
for (var dim = 0; dim < opts.attributes.length; dim++) {
numerator = 0;
denominator = 0;
for (var _n2 = 0; _n2 < nodes.length; _n2++) {
numerator += weight[_n2][_c] * opts.attributes[dim](nodes[_n2]);
denominator += weight[_n2][_c];
}
centroids[_c][dim] = numerator / denominator;
}
}
};
var updateMembership = function updateMembership(U, _U, centroids, nodes, opts) {
// Save previous step
for (var i = 0; i < U.length; i++) {
_U[i] = U[i].slice();
}
var sum, numerator, denominator;
var pow = 2 / (opts.m - 1);
for (var c = 0; c < centroids.length; c++) {
for (var n = 0; n < nodes.length; n++) {
sum = 0;
for (var k = 0; k < centroids.length; k++) {
// against all other centroids
numerator = getDist(opts.distance, nodes[n], centroids[c], opts.attributes, 'cmeans');
denominator = getDist(opts.distance, nodes[n], centroids[k], opts.attributes, 'cmeans');
sum += Math.pow(numerator / denominator, pow);
}
U[n][c] = 1 / sum;
}
}
};
var assign$1 = function assign(nodes, U, opts, cy) {
var clusters = new Array(opts.k);
for (var c = 0; c < clusters.length; c++) {
clusters[c] = [];
}
var max;
var index;
for (var n = 0; n < U.length; n++) {
// for each node (U is N x C matrix)
max = -Infinity;
index = -1; // Determine which cluster the node is most likely to belong in
for (var _c2 = 0; _c2 < U[0].length; _c2++) {
if (U[n][_c2] > max) {
max = U[n][_c2];
index = _c2;
}
}
clusters[index].push(nodes[n]);
} // Turn every array into a collection of nodes
for (var _c3 = 0; _c3 < clusters.length; _c3++) {
clusters[_c3] = cy.collection(clusters[_c3]);
}
return clusters;
};
var fuzzyCMeans = function fuzzyCMeans(options) {
var cy = this.cy();
var nodes = this.nodes();
var opts = setOptions$1(options); // Begin fuzzy c-means algorithm
var clusters;
var centroids;
var U;
var _U;
var weight; // Step 1: Initialize letiables.
_U = new Array(nodes.length);
for (var i = 0; i < nodes.length; i++) {
// N x C matrix
_U[i] = new Array(opts.k);
}
U = new Array(nodes.length);
for (var _i3 = 0; _i3 < nodes.length; _i3++) {
// N x C matrix
U[_i3] = new Array(opts.k);
}
for (var _i4 = 0; _i4 < nodes.length; _i4++) {
var total = 0;
for (var j = 0; j < opts.k; j++) {
U[_i4][j] = Math.random();
total += U[_i4][j];
}
for (var _j = 0; _j < opts.k; _j++) {
U[_i4][_j] = U[_i4][_j] / total;
}
}
centroids = new Array(opts.k);
for (var _i5 = 0; _i5 < opts.k; _i5++) {
centroids[_i5] = new Array(opts.attributes.length);
}
weight = new Array(nodes.length);
for (var _i6 = 0; _i6 < nodes.length; _i6++) {
// N x C matrix
weight[_i6] = new Array(opts.k);
} // end init FCM
var isStillMoving = true;
var iterations = 0;
while (isStillMoving && iterations < opts.maxIterations) {
isStillMoving = false; // Step 2: Calculate the centroids for each step.
updateCentroids(centroids, nodes, U, weight, opts); // Step 3: Update the partition matrix U.
updateMembership(U, _U, centroids, nodes, opts); // Step 4: Check for convergence.
if (!haveMatricesConverged(U, _U, opts.sensitivityThreshold)) {
isStillMoving = true;
}
iterations++;
} // Assign nodes to clusters with highest probability.
clusters = assign$1(nodes, U, opts, cy);
return {
clusters: clusters,
degreeOfMembership: U
};
};
var kClustering = {
kMeans: kMeans,
kMedoids: kMedoids,
fuzzyCMeans: fuzzyCMeans,
fcm: fuzzyCMeans
};
// Implemented by Zoe Xi @zoexi for GSOC 2016
var defaults$6 = defaults$1({
distance: 'euclidean',
// distance metric to compare nodes
linkage: 'min',
// linkage criterion : how to determine the distance between clusters of nodes
mode: 'threshold',
// mode:'threshold' => clusters must be threshold distance apart
threshold: Infinity,
// the distance threshold
// mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters
addDendrogram: false,
// whether to add the dendrogram to the graph for viz
dendrogramDepth: 0,
// depth at which dendrogram branches are merged into the returned clusters
attributes: [] // array of attr functions
});
var linkageAliases = {
'single': 'min',
'complete': 'max'
};
var setOptions$2 = function setOptions(options) {
var opts = defaults$6(options);
var preferredAlias = linkageAliases[opts.linkage];
if (preferredAlias != null) {
opts.linkage = preferredAlias;
}
return opts;
};
var mergeClosest = function mergeClosest(clusters, index, dists, mins, opts) {
// Find two closest clusters from cached mins
var minKey = 0;
var min = Infinity;
var dist;
var attrs = opts.attributes;
var getDist = function getDist(n1, n2) {
return clusteringDistance(opts.distance, attrs.length, function (i) {
return attrs[i](n1);
}, function (i) {
return attrs[i](n2);
}, n1, n2);
};
for (var i = 0; i < clusters.length; i++) {
var key = clusters[i].key;
var _dist = dists[key][mins[key]];
if (_dist < min) {
minKey = key;
min = _dist;
}
}
if (opts.mode === 'threshold' && min >= opts.threshold || opts.mode === 'dendrogram' && clusters.length === 1) {
return false;
}
var c1 = index[minKey];
var c2 = index[mins[minKey]];
var merged; // Merge two closest clusters
if (opts.mode === 'dendrogram') {
merged = {
left: c1,
right: c2,
key: c1.key
};
} else {
merged = {
value: c1.value.concat(c2.value),
key: c1.key
};
}
clusters[c1.index] = merged;
clusters.splice(c2.index, 1);
index[c1.key] = merged; // Update distances with new merged cluster
for (var _i = 0; _i < clusters.length; _i++) {
var cur = clusters[_i];
if (c1.key === cur.key) {
dist = Infinity;
} else if (opts.linkage === 'min') {
dist = dists[c1.key][cur.key];
if (dists[c1.key][cur.key] > dists[c2.key][cur.key]) {
dist = dists[c2.key][cur.key];
}
} else if (opts.linkage === 'max') {
dist = dists[c1.key][cur.key];
if (dists[c1.key][cur.key] < dists[c2.key][cur.key]) {
dist = dists[c2.key][cur.key];
}
} else if (opts.linkage === 'mean') {
dist = (dists[c1.key][cur.key] * c1.size + dists[c2.key][cur.key] * c2.size) / (c1.size + c2.size);
} else {
if (opts.mode === 'dendrogram') dist = getDist(cur.value, c1.value);else dist = getDist(cur.value[0], c1.value[0]);
}
dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist; // distance matrix is symmetric
} // Update cached mins
for (var _i2 = 0; _i2 < clusters.length; _i2++) {
var key1 = clusters[_i2].key;
if (mins[key1] === c1.key || mins[key1] === c2.key) {
var _min = key1;
for (var j = 0; j < clusters.length; j++) {
var key2 = clusters[j].key;
if (dists[key1][key2] < dists[key1][_min]) {
_min = key2;
}
}
mins[key1] = _min;
}
clusters[_i2].index = _i2;
} // Clean up meta data used for clustering
c1.key = c2.key = c1.index = c2.index = null;
return true;
};
var getAllChildren = function getAllChildren(root, arr, cy) {
if (!root) return;
if (root.value) {
arr.push(root.value);
} else {
if (root.left) getAllChildren(root.left, arr);
if (root.right) getAllChildren(root.right, arr);
}
};
var buildDendrogram = function buildDendrogram(root, cy) {
if (!root) return '';
if (root.left && root.right) {
var leftStr = buildDendrogram(root.left, cy);
var rightStr = buildDendrogram(root.right, cy);
var node = cy.add({
group: 'nodes',
data: {
id: leftStr + ',' + rightStr
}
});
cy.add({
group: 'edges',
data: {
source: leftStr,
target: node.id()
}
});
cy.add({
group: 'edges',
data: {
source: rightStr,
target: node.id()
}
});
return node.id();
} else if (root.value) {
return root.value.id();
}
};
var buildClustersFromTree = function buildClustersFromTree(root, k, cy) {
if (!root) return [];
var left = [],
right = [],
leaves = [];
if (k === 0) {
// don't cut tree, simply return all nodes as 1 single cluster
if (root.left) getAllChildren(root.left, left);
if (root.right) getAllChildren(root.right, right);
leaves = left.concat(right);
return [cy.collection(leaves)];
} else if (k === 1) {
// cut at root
if (root.value) {
// leaf node
return [cy.collection(root.value)];
} else {
if (root.left) getAllChildren(root.left, left);
if (root.right) getAllChildren(root.right, right);
return [cy.collection(left), cy.collection(right)];
}
} else {
if (root.value) {
return [cy.collection(root.value)];
} else {
if (root.left) left = buildClustersFromTree(root.left, k - 1, cy);
if (root.right) right = buildClustersFromTree(root.right, k - 1, cy);
return left.concat(right);
}
}
};
/* eslint-enable */
var hierarchicalClustering = function hierarchicalClustering(options) {
var cy = this.cy();
var nodes = this.nodes(); // Set parameters of algorithm: linkage type, distance metric, etc.
var opts = setOptions$2(options);
var attrs = opts.attributes;
var getDist = function getDist(n1, n2) {
return clusteringDistance(opts.distance, attrs.length, function (i) {
return attrs[i](n1);
}, function (i) {
return attrs[i](n2);
}, n1, n2);
}; // Begin hierarchical algorithm
var clusters = [];
var dists = []; // distances between each pair of clusters
var mins = []; // closest cluster for each cluster
var index = []; // hash of all clusters by key
// In agglomerative (bottom-up) clustering, each node starts as its own cluster
for (var n = 0; n < nodes.length; n++) {
var cluster = {
value: opts.mode === 'dendrogram' ? nodes[n] : [nodes[n]],
key: n,
index: n
};
clusters[n] = cluster;
index[n] = cluster;
dists[n] = [];
mins[n] = 0;
} // Calculate the distance between each pair of clusters
for (var i = 0; i < clusters.length; i++) {
for (var j = 0; j <= i; j++) {
var dist = void 0;
if (opts.mode === 'dendrogram') {
// modes store cluster values differently
dist = i === j ? Infinity : getDist(clusters[i].value, clusters[j].value);
} else {
dist = i === j ? Infinity : getDist(clusters[i].value[0], clusters[j].value[0]);
}
dists[i][j] = dist;
dists[j][i] = dist;
if (dist < dists[i][mins[i]]) {
mins[i] = j; // Cache mins: closest cluster to cluster i is cluster j
}
}
} // Find the closest pair of clusters and merge them into a single cluster.
// Update distances between new cluster and each of the old clusters, and loop until threshold reached.
var merged = mergeClosest(clusters, index, dists, mins, opts);
while (merged) {
merged = mergeClosest(clusters, index, dists, mins, opts);
}
var retClusters; // Dendrogram mode builds the hierarchy and adds intermediary nodes + edges
// in addition to returning the clusters.
if (opts.mode === 'dendrogram') {
retClusters = buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy);
if (opts.addDendrogram) buildDendrogram(clusters[0], cy);
} else {
// Regular mode simply returns the clusters
retClusters = new Array(clusters.length);
clusters.forEach(function (cluster, i) {
// Clean up meta data used for clustering
cluster.key = cluster.index = null;
retClusters[i] = cy.collection(cluster.value);
});
}
return retClusters;
};
var hierarchicalClustering$1 = {
hierarchicalClustering: hierarchicalClustering,
hca: hierarchicalClustering
};
// Implemented by Zoe Xi @zoexi for GSOC 2016
var defaults$7 = defaults$1({
distance: 'euclidean',
// distance metric to compare attributes between two nodes
preference: 'median',
// suitability of a data point to serve as an exemplar
damping: 0.8,
// damping factor between [0.5, 1)
maxIterations: 1000,
// max number of iterations to run
minIterations: 100,
// min number of iterations to run in order for clustering to stop
attributes: [// functions to quantify the similarity between any two points
// e.g. node => node.data('weight')
]
});
var setOptions$3 = function setOptions(options) {
var dmp = options.damping;
var pref = options.preference;
if (!(0.5 <= dmp && dmp < 1)) {
error("Damping must range on [0.5, 1). Got: ".concat(dmp));
}
var validPrefs = ['median', 'mean', 'min', 'max'];
if (!(validPrefs.some(function (v) {
return v === pref;
}) || number(pref))) {
error("Preference must be one of [".concat(validPrefs.map(function (p) {
return "'".concat(p, "'");
}).join(', '), "] or a number. Got: ").concat(pref));
}
return defaults$7(options);
};
/* eslint-enable */
var getSimilarity$1 = function getSimilarity(type, n1, n2, attributes) {
var attr = function attr(n, i) {
return attributes[i](n);
}; // nb negative because similarity should have an inverse relationship to distance
return -clusteringDistance(type, attributes.length, function (i) {
return attr(n1, i);
}, function (i) {
return attr(n2, i);
}, n1, n2);
};
var getPreference = function getPreference(S, preference) {
// larger preference = greater # of clusters
var p = null;
if (preference === 'median') {
p = median(S);
} else if (preference === 'mean') {
p = mean(S);
} else if (preference === 'min') {
p = min$2(S);
} else if (preference === 'max') {
p = max$2(S);
} else {
// Custom preference number, as set by user
p = preference;
}
return p;
};
var findExemplars = function findExemplars(n, R, A) {
var indices = [];
for (var i = 0; i < n; i++) {
if (R[i * n + i] + A[i * n + i] > 0) {
indices.push(i);
}
}
return indices;
};
var assignClusters = function assignClusters(n, S, exemplars) {
var clusters = [];
for (var i = 0; i < n; i++) {
var index = -1;
var max = -Infinity;
for (var ei = 0; ei < exemplars.length; ei++) {
var e = exemplars[ei];
if (S[i * n + e] > max) {
index = e;
max = S[i * n + e];
}
}
if (index > 0) {
clusters.push(index);
}
}
for (var _ei = 0; _ei < exemplars.length; _ei++) {
clusters[exemplars[_ei]] = exemplars[_ei];
}
return clusters;
};
var assign$2 = function assign(n, S, exemplars) {
var clusters = assignClusters(n, S, exemplars);
for (var ei = 0; ei < exemplars.length; ei++) {
var ii = [];
for (var c = 0; c < clusters.length; c++) {
if (clusters[c] === exemplars[ei]) {
ii.push(c);
}
}
var maxI = -1;
var maxSum = -Infinity;
for (var i = 0; i < ii.length; i++) {
var sum = 0;
for (var j = 0; j < ii.length; j++) {
sum += S[ii[j] * n + ii[i]];
}
if (sum > maxSum) {
maxI = i;
maxSum = sum;
}
}
exemplars[ei] = ii[maxI];
}
clusters = assignClusters(n, S, exemplars);
return clusters;
};
var affinityPropagation = function affinityPropagation(options) {
var cy = this.cy();
var nodes = this.nodes();
var opts = setOptions$3(options); // Map each node to its position in node array
var id2position = {};
for (var i = 0; i < nodes.length; i++) {
id2position[nodes[i].id()] = i;
} // Begin affinity propagation algorithm
var n; // number of data points
var n2; // size of matrices
var S; // similarity matrix (1D array)
var p; // preference/suitability of a data point to serve as an exemplar
var R; // responsibility matrix (1D array)
var A; // availability matrix (1D array)
n = nodes.length;
n2 = n * n; // Initialize and build S similarity matrix
S = new Array(n2);
for (var _i = 0; _i < n2; _i++) {
S[_i] = -Infinity; // for cases where two data points shouldn't be linked together
}
for (var _i2 = 0; _i2 < n; _i2++) {
for (var j = 0; j < n; j++) {
if (_i2 !== j) {
S[_i2 * n + j] = getSimilarity$1(opts.distance, nodes[_i2], nodes[j], opts.attributes);
}
}
} // Place preferences on the diagonal of S
p = getPreference(S, opts.preference);
for (var _i3 = 0; _i3 < n; _i3++) {
S[_i3 * n + _i3] = p;
} // Initialize R responsibility matrix
R = new Array(n2);
for (var _i4 = 0; _i4 < n2; _i4++) {
R[_i4] = 0.0;
} // Initialize A availability matrix
A = new Array(n2);
for (var _i5 = 0; _i5 < n2; _i5++) {
A[_i5] = 0.0;
}
var old = new Array(n);
var Rp = new Array(n);
var se = new Array(n);
for (var _i6 = 0; _i6 < n; _i6++) {
old[_i6] = 0.0;
Rp[_i6] = 0.0;
se[_i6] = 0;
}
var e = new Array(n * opts.minIterations);
for (var _i7 = 0; _i7 < e.length; _i7++) {
e[_i7] = 0;
}
var iter;
for (iter = 0; iter < opts.maxIterations; iter++) {
// main algorithmic loop
// Update R responsibility matrix
for (var _i8 = 0; _i8 < n; _i8++) {
var max = -Infinity,
max2 = -Infinity,
maxI = -1,
AS = 0.0;
for (var _j = 0; _j < n; _j++) {
old[_j] = R[_i8 * n + _j];
AS = A[_i8 * n + _j] + S[_i8 * n + _j];
if (AS >= max) {
max2 = max;
max = AS;
maxI = _j;
} else if (AS > max2) {
max2 = AS;
}
}
for (var _j2 = 0; _j2 < n; _j2++) {
R[_i8 * n + _j2] = (1 - opts.damping) * (S[_i8 * n + _j2] - max) + opts.damping * old[_j2];
}
R[_i8 * n + maxI] = (1 - opts.damping) * (S[_i8 * n + maxI] - max2) + opts.damping * old[maxI];
} // Update A availability matrix
for (var _i9 = 0; _i9 < n; _i9++) {
var sum = 0;
for (var _j3 = 0; _j3 < n; _j3++) {
old[_j3] = A[_j3 * n + _i9];
Rp[_j3] = Math.max(0, R[_j3 * n + _i9]);
sum += Rp[_j3];
}
sum -= Rp[_i9];
Rp[_i9] = R[_i9 * n + _i9];
sum += Rp[_i9];
for (var _j4 = 0; _j4 < n; _j4++) {
A[_j4 * n + _i9] = (1 - opts.damping) * Math.min(0, sum - Rp[_j4]) + opts.damping * old[_j4];
}
A[_i9 * n + _i9] = (1 - opts.damping) * (sum - Rp[_i9]) + opts.damping * old[_i9];
} // Check for convergence
var K = 0;
for (var _i10 = 0; _i10 < n; _i10++) {
var E = A[_i10 * n + _i10] + R[_i10 * n + _i10] > 0 ? 1 : 0;
e[iter % opts.minIterations * n + _i10] = E;
K += E;
}
if (K > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) {
var _sum = 0;
for (var _i11 = 0; _i11 < n; _i11++) {
se[_i11] = 0;
for (var _j5 = 0; _j5 < opts.minIterations; _j5++) {
se[_i11] += e[_j5 * n + _i11];
}
if (se[_i11] === 0 || se[_i11] === opts.minIterations) {
_sum++;
}
}
if (_sum === n) {
// then we have convergence
break;
}
}
} // Identify exemplars (cluster centers)
var exemplarsIndices = findExemplars(n, R, A); // Assign nodes to clusters
var clusterIndices = assign$2(n, S, exemplarsIndices);
var clusters = {};
for (var c = 0; c < exemplarsIndices.length; c++) {
clusters[exemplarsIndices[c]] = [];
}
for (var _i12 = 0; _i12 < nodes.length; _i12++) {
var pos = id2position[nodes[_i12].id()];
var clusterIndex = clusterIndices[pos];
if (clusterIndex != null) {
// the node may have not been assigned a cluster if no valid attributes were specified
clusters[clusterIndex].push(nodes[_i12]);
}
}
var retClusters = new Array(exemplarsIndices.length);
for (var _c = 0; _c < exemplarsIndices.length; _c++) {
retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]);
}
return retClusters;
};
var affinityPropagation$1 = {
affinityPropagation: affinityPropagation,
ap: affinityPropagation
};
var hierholzerDefaults = defaults$1({
root: undefined,
directed: false
});
var elesfn$b = {
hierholzer: function hierholzer(options) {
if (!plainObject(options)) {
var args = arguments;
options = {
root: args[0],
directed: args[1]
};
}
var _hierholzerDefaults = hierholzerDefaults(options),
root = _hierholzerDefaults.root,
directed = _hierholzerDefaults.directed;
var eles = this;
var dflag = false;
var oddIn;
var oddOut;
var startVertex;
if (root) startVertex = string(root) ? this.filter(root)[0].id() : root[0].id();
var nodes = {};
var edges = {};
if (directed) {
eles.forEach(function (ele) {
var id = ele.id();
if (ele.isNode()) {
var ind = ele.indegree(true);
var outd = ele.outdegree(true);
var d1 = ind - outd;
var d2 = outd - ind;
if (d1 == 1) {
if (oddIn) dflag = true;else oddIn = id;
} else if (d2 == 1) {
if (oddOut) dflag = true;else oddOut = id;
} else if (d2 > 1 || d1 > 1) {
dflag = true;
}
nodes[id] = [];
ele.outgoers().forEach(function (e) {
if (e.isEdge()) nodes[id].push(e.id());
});
} else {
edges[id] = [undefined, ele.target().id()];
}
});
} else {
eles.forEach(function (ele) {
var id = ele.id();
if (ele.isNode()) {
var d = ele.degree(true);
if (d % 2) {
if (!oddIn) oddIn = id;else if (!oddOut) oddOut = id;else dflag = true;
}
nodes[id] = [];
ele.connectedEdges().forEach(function (e) {
return nodes[id].push(e.id());
});
} else {
edges[id] = [ele.source().id(), ele.target().id()];
}
});
}
var result = {
found: false,
trail: undefined
};
if (dflag) return result;else if (oddOut && oddIn) {
if (directed) {
if (startVertex && oddOut != startVertex) {
return result;
}
startVertex = oddOut;
} else {
if (startVertex && oddOut != startVertex && oddIn != startVertex) {
return result;
} else if (!startVertex) {
startVertex = oddOut;
}
}
} else {
if (!startVertex) startVertex = eles[0].id();
}
var walk = function walk(v) {
var currentNode = v;
var subtour = [v];
var adj, adjTail, adjHead;
while (nodes[currentNode].length) {
adj = nodes[currentNode].shift();
adjTail = edges[adj][0];
adjHead = edges[adj][1];
if (currentNode != adjHead) {
nodes[adjHead] = nodes[adjHead].filter(function (e) {
return e != adj;
});
currentNode = adjHead;
} else if (!directed && currentNode != adjTail) {
nodes[adjTail] = nodes[adjTail].filter(function (e) {
return e != adj;
});
currentNode = adjTail;
}
subtour.unshift(adj);
subtour.unshift(currentNode);
}
return subtour;
};
var trail = [];
var subtour = [];
subtour = walk(startVertex);
while (subtour.length != 1) {
if (nodes[subtour[0]].length == 0) {
trail.unshift(eles.getElementById(subtour.shift()));
trail.unshift(eles.getElementById(subtour.shift()));
} else {
subtour = walk(subtour.shift()).concat(subtour);
}
}
trail.unshift(eles.getElementById(subtour.shift())); // final node
for (var d in nodes) {
if (nodes[d].length) {
return result;
}
}
result.found = true;
result.trail = this.spawn(trail, true);
return result;
}
};
var hopcroftTarjanBiconnected = function hopcroftTarjanBiconnected() {
var eles = this;
var nodes = {};
var id = 0;
var edgeCount = 0;
var components = [];
var stack = [];
var visitedEdges = {};
var buildComponent = function buildComponent(x, y) {
var i = stack.length - 1;
var cutset = [];
var component = eles.spawn();
while (stack[i].x != x || stack[i].y != y) {
cutset.push(stack.pop().edge);
i--;
}
cutset.push(stack.pop().edge);
cutset.forEach(function (edge) {
var connectedNodes = edge.connectedNodes().intersection(eles);
component.merge(edge);
connectedNodes.forEach(function (node) {
var nodeId = node.id();
var connectedEdges = node.connectedEdges().intersection(eles);
component.merge(node);
if (!nodes[nodeId].cutVertex) {
component.merge(connectedEdges);
} else {
component.merge(connectedEdges.filter(function (edge) {
return edge.isLoop();
}));
}
});
});
components.push(component);
};
var biconnectedSearch = function biconnectedSearch(root, currentNode, parent) {
if (root === parent) edgeCount += 1;
nodes[currentNode] = {
id: id,
low: id++,
cutVertex: false
};
var edges = eles.getElementById(currentNode).connectedEdges().intersection(eles);
if (edges.size() === 0) {
components.push(eles.spawn(eles.getElementById(currentNode)));
} else {
var sourceId, targetId, otherNodeId, edgeId;
edges.forEach(function (edge) {
sourceId = edge.source().id();
targetId = edge.target().id();
otherNodeId = sourceId === currentNode ? targetId : sourceId;
if (otherNodeId !== parent) {
edgeId = edge.id();
if (!visitedEdges[edgeId]) {
visitedEdges[edgeId] = true;
stack.push({
x: currentNode,
y: otherNodeId,
edge: edge
});
}
if (!(otherNodeId in nodes)) {
biconnectedSearch(root, otherNodeId, currentNode);
nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].low);
if (nodes[currentNode].id <= nodes[otherNodeId].low) {
nodes[currentNode].cutVertex = true;
buildComponent(currentNode, otherNodeId);
}
} else {
nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].id);
}
}
});
}
};
eles.forEach(function (ele) {
if (ele.isNode()) {
var nodeId = ele.id();
if (!(nodeId in nodes)) {
edgeCount = 0;
biconnectedSearch(nodeId, nodeId);
nodes[nodeId].cutVertex = edgeCount > 1;
}
}
});
var cutVertices = Object.keys(nodes).filter(function (id) {
return nodes[id].cutVertex;
}).map(function (id) {
return eles.getElementById(id);
});
return {
cut: eles.spawn(cutVertices),
components: components
};
};
var hopcroftTarjanBiconnected$1 = {
hopcroftTarjanBiconnected: hopcroftTarjanBiconnected,
htbc: hopcroftTarjanBiconnected,
htb: hopcroftTarjanBiconnected,
hopcroftTarjanBiconnectedComponents: hopcroftTarjanBiconnected
};
var tarjanStronglyConnected = function tarjanStronglyConnected() {
var eles = this;
var nodes = {};
var index = 0;
var components = [];
var stack = [];
var cut = eles.spawn(eles);
var stronglyConnectedSearch = function stronglyConnectedSearch(sourceNodeId) {
stack.push(sourceNodeId);
nodes[sourceNodeId] = {
index: index,
low: index++,
explored: false
};
var connectedEdges = eles.getElementById(sourceNodeId).connectedEdges().intersection(eles);
connectedEdges.forEach(function (edge) {
var targetNodeId = edge.target().id();
if (targetNodeId !== sourceNodeId) {
if (!(targetNodeId in nodes)) {
stronglyConnectedSearch(targetNodeId);
}
if (!nodes[targetNodeId].explored) {
nodes[sourceNodeId].low = Math.min(nodes[sourceNodeId].low, nodes[targetNodeId].low);
}
}
});
if (nodes[sourceNodeId].index === nodes[sourceNodeId].low) {
var componentNodes = eles.spawn();
for (;;) {
var nodeId = stack.pop();
componentNodes.merge(eles.getElementById(nodeId));
nodes[nodeId].low = nodes[sourceNodeId].index;
nodes[nodeId].explored = true;
if (nodeId === sourceNodeId) {
break;
}
}
var componentEdges = componentNodes.edgesWith(componentNodes);
var component = componentNodes.merge(componentEdges);
components.push(component);
cut = cut.difference(component);
}
};
eles.forEach(function (ele) {
if (ele.isNode()) {
var nodeId = ele.id();
if (!(nodeId in nodes)) {
stronglyConnectedSearch(nodeId);
}
}
});
return {
cut: cut,
components: components
};
};
var tarjanStronglyConnected$1 = {
tarjanStronglyConnected: tarjanStronglyConnected,
tsc: tarjanStronglyConnected,
tscc: tarjanStronglyConnected,
tarjanStronglyConnectedComponents: tarjanStronglyConnected
};
var elesfn$c = {};
[elesfn, elesfn$1, elesfn$2, elesfn$3, elesfn$4, elesfn$5, elesfn$6, elesfn$7, elesfn$8, elesfn$9, elesfn$a, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1, elesfn$b, hopcroftTarjanBiconnected$1, tarjanStronglyConnected$1].forEach(function (props) {
extend(elesfn$c, props);
});
/*!
Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable
Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com)
Licensed under The MIT License (http://opensource.org/licenses/MIT)
*/
/* promise states [Promises/A+ 2.1] */
var STATE_PENDING = 0;
/* [Promises/A+ 2.1.1] */
var STATE_FULFILLED = 1;
/* [Promises/A+ 2.1.2] */
var STATE_REJECTED = 2;
/* [Promises/A+ 2.1.3] */
/* promise object constructor */
var api = function api(executor) {
/* optionally support non-constructor/plain-function call */
if (!(this instanceof api)) return new api(executor);
/* initialize object */
this.id = 'Thenable/1.0.7';
this.state = STATE_PENDING;
/* initial state */
this.fulfillValue = undefined;
/* initial value */
/* [Promises/A+ 1.3, 2.1.2.2] */
this.rejectReason = undefined;
/* initial reason */
/* [Promises/A+ 1.5, 2.1.3.2] */
this.onFulfilled = [];
/* initial handlers */
this.onRejected = [];
/* initial handlers */
/* provide optional information-hiding proxy */
this.proxy = {
then: this.then.bind(this)
};
/* support optional executor function */
if (typeof executor === 'function') executor.call(this, this.fulfill.bind(this), this.reject.bind(this));
};
/* promise API methods */
api.prototype = {
/* promise resolving methods */
fulfill: function fulfill(value) {
return deliver(this, STATE_FULFILLED, 'fulfillValue', value);
},
reject: function reject(value) {
return deliver(this, STATE_REJECTED, 'rejectReason', value);
},
/* "The then Method" [Promises/A+ 1.1, 1.2, 2.2] */
then: function then(onFulfilled, onRejected) {
var curr = this;
var next = new api();
/* [Promises/A+ 2.2.7] */
curr.onFulfilled.push(resolver(onFulfilled, next, 'fulfill'));
/* [Promises/A+ 2.2.2/2.2.6] */
curr.onRejected.push(resolver(onRejected, next, 'reject'));
/* [Promises/A+ 2.2.3/2.2.6] */
execute(curr);
return next.proxy;
/* [Promises/A+ 2.2.7, 3.3] */
}
};
/* deliver an action */
var deliver = function deliver(curr, state, name, value) {
if (curr.state === STATE_PENDING) {
curr.state = state;
/* [Promises/A+ 2.1.2.1, 2.1.3.1] */
curr[name] = value;
/* [Promises/A+ 2.1.2.2, 2.1.3.2] */
execute(curr);
}
return curr;
};
/* execute all handlers */
var execute = function execute(curr) {
if (curr.state === STATE_FULFILLED) execute_handlers(curr, 'onFulfilled', curr.fulfillValue);else if (curr.state === STATE_REJECTED) execute_handlers(curr, 'onRejected', curr.rejectReason);
};
/* execute particular set of handlers */
var execute_handlers = function execute_handlers(curr, name, value) {
/* global setImmediate: true */
/* global setTimeout: true */
/* short-circuit processing */
if (curr[name].length === 0) return;
/* iterate over all handlers, exactly once */
var handlers = curr[name];
curr[name] = [];
/* [Promises/A+ 2.2.2.3, 2.2.3.3] */
var func = function func() {
for (var i = 0; i < handlers.length; i++) {
handlers[i](value);
}
/* [Promises/A+ 2.2.5] */
};
/* execute procedure asynchronously */
/* [Promises/A+ 2.2.4, 3.1] */
if (typeof setImmediate === 'function') setImmediate(func);else setTimeout(func, 0);
};
/* generate a resolver function */
var resolver = function resolver(cb, next, method) {
return function (value) {
if (typeof cb !== 'function')
/* [Promises/A+ 2.2.1, 2.2.7.3, 2.2.7.4] */
next[method].call(next, value);
/* [Promises/A+ 2.2.7.3, 2.2.7.4] */
else {
var result;
try {
result = cb(value);
}
/* [Promises/A+ 2.2.2.1, 2.2.3.1, 2.2.5, 3.2] */
catch (e) {
next.reject(e);
/* [Promises/A+ 2.2.7.2] */
return;
}
resolve(next, result);
/* [Promises/A+ 2.2.7.1] */
}
};
};
/* "Promise Resolution Procedure" */
/* [Promises/A+ 2.3] */
var resolve = function resolve(promise, x) {
/* sanity check arguments */
/* [Promises/A+ 2.3.1] */
if (promise === x || promise.proxy === x) {
promise.reject(new TypeError('cannot resolve promise with itself'));
return;
}
/* surgically check for a "then" method
(mainly to just call the "getter" of "then" only once) */
var then;
if (_typeof(x) === 'object' && x !== null || typeof x === 'function') {
try {
then = x.then;
}
/* [Promises/A+ 2.3.3.1, 3.5] */
catch (e) {
promise.reject(e);
/* [Promises/A+ 2.3.3.2] */
return;
}
}
/* handle own Thenables [Promises/A+ 2.3.2]
and similar "thenables" [Promises/A+ 2.3.3] */
if (typeof then === 'function') {
var resolved = false;
try {
/* call retrieved "then" method */
/* [Promises/A+ 2.3.3.3] */
then.call(x,
/* resolvePromise */
/* [Promises/A+ 2.3.3.3.1] */
function (y) {
if (resolved) return;
resolved = true;
/* [Promises/A+ 2.3.3.3.3] */
if (y === x)
/* [Promises/A+ 3.6] */
promise.reject(new TypeError('circular thenable chain'));else resolve(promise, y);
},
/* rejectPromise */
/* [Promises/A+ 2.3.3.3.2] */
function (r) {
if (resolved) return;
resolved = true;
/* [Promises/A+ 2.3.3.3.3] */
promise.reject(r);
});
} catch (e) {
if (!resolved)
/* [Promises/A+ 2.3.3.3.3] */
promise.reject(e);
/* [Promises/A+ 2.3.3.3.4] */
}
return;
}
/* handle other values */
promise.fulfill(x);
/* [Promises/A+ 2.3.4, 2.3.3.4] */
}; // so we always have Promise.all()
api.all = function (ps) {
return new api(function (resolveAll, rejectAll) {
var vals = new Array(ps.length);
var doneCount = 0;
var fulfill = function fulfill(i, val) {
vals[i] = val;
doneCount++;
if (doneCount === ps.length) {
resolveAll(vals);
}
};
for (var i = 0; i < ps.length; i++) {
(function (i) {
var p = ps[i];
var isPromise = p != null && p.then != null;
if (isPromise) {
p.then(function (val) {
fulfill(i, val);
}, function (err) {
rejectAll(err);
});
} else {
var val = p;
fulfill(i, val);
}
})(i);
}
});
};
api.resolve = function (val) {
return new api(function (resolve, reject) {
resolve(val);
});
};
api.reject = function (val) {
return new api(function (resolve, reject) {
reject(val);
});
};
var Promise$1$1 = typeof Promise !== 'undefined' ? Promise : api; // eslint-disable-line no-undef
var Animation = function Animation(target, opts, opts2) {
var isCore = core(target);
var isEle = !isCore;
var _p = this._private = extend({
duration: 1000
}, opts, opts2);
_p.target = target;
_p.style = _p.style || _p.css;
_p.started = false;
_p.playing = false;
_p.hooked = false;
_p.applying = false;
_p.progress = 0;
_p.completes = [];
_p.frames = [];
if (_p.complete && fn(_p.complete)) {
_p.completes.push(_p.complete);
}
if (isEle) {
var pos = target.position();
_p.startPosition = _p.startPosition || {
x: pos.x,
y: pos.y
};
_p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style);
}
if (isCore) {
var pan = target.pan();
_p.startPan = {
x: pan.x,
y: pan.y
};
_p.startZoom = target.zoom();
} // for future timeline/animations impl
this.length = 1;
this[0] = this;
};
var anifn = Animation.prototype;
extend(anifn, {
instanceString: function instanceString() {
return 'animation';
},
hook: function hook() {
var _p = this._private;
if (!_p.hooked) {
// add to target's animation queue
var q;
var tAni = _p.target._private.animation;
if (_p.queue) {
q = tAni.queue;
} else {
q = tAni.current;
}
q.push(this); // add to the animation loop pool
if (elementOrCollection(_p.target)) {
_p.target.cy().addToAnimationPool(_p.target);
}
_p.hooked = true;
}
return this;
},
play: function play() {
var _p = this._private; // autorewind
if (_p.progress === 1) {
_p.progress = 0;
}
_p.playing = true;
_p.started = false; // needs to be started by animation loop
_p.stopped = false;
this.hook(); // the animation loop will start the animation...
return this;
},
playing: function playing() {
return this._private.playing;
},
apply: function apply() {
var _p = this._private;
_p.applying = true;
_p.started = false; // needs to be started by animation loop
_p.stopped = false;
this.hook(); // the animation loop will apply the animation at this progress
return this;
},
applying: function applying() {
return this._private.applying;
},
pause: function pause() {
var _p = this._private;
_p.playing = false;
_p.started = false;
return this;
},
stop: function stop() {
var _p = this._private;
_p.playing = false;
_p.started = false;
_p.stopped = true; // to be removed from animation queues
return this;
},
rewind: function rewind() {
return this.progress(0);
},
fastforward: function fastforward() {
return this.progress(1);
},
time: function time(t) {
var _p = this._private;
if (t === undefined) {
return _p.progress * _p.duration;
} else {
return this.progress(t / _p.duration);
}
},
progress: function progress(p) {
var _p = this._private;
var wasPlaying = _p.playing;
if (p === undefined) {
return _p.progress;
} else {
if (wasPlaying) {
this.pause();
}
_p.progress = p;
_p.started = false;
if (wasPlaying) {
this.play();
}
}
return this;
},
completed: function completed() {
return this._private.progress === 1;
},
reverse: function reverse() {
var _p = this._private;
var wasPlaying = _p.playing;
if (wasPlaying) {
this.pause();
}
_p.progress = 1 - _p.progress;
_p.started = false;
var swap = function swap(a, b) {
var _pa = _p[a];
if (_pa == null) {
return;
}
_p[a] = _p[b];
_p[b] = _pa;
};
swap('zoom', 'startZoom');
swap('pan', 'startPan');
swap('position', 'startPosition'); // swap styles
if (_p.style) {
for (var i = 0; i < _p.style.length; i++) {
var prop = _p.style[i];
var name = prop.name;
var startStyleProp = _p.startStyle[name];
_p.startStyle[name] = prop;
_p.style[i] = startStyleProp;
}
}
if (wasPlaying) {
this.play();
}
return this;
},
promise: function promise(type) {
var _p = this._private;
var arr;
switch (type) {
case 'frame':
arr = _p.frames;
break;
default:
case 'complete':
case 'completed':
arr = _p.completes;
}
return new Promise$1$1(function (resolve, reject) {
arr.push(function () {
resolve();
});
});
}
});
anifn.complete = anifn.completed;
anifn.run = anifn.play;
anifn.running = anifn.playing;
var define = {
animated: function animated() {
return function animatedImpl() {
var self = this;
var selfIsArrayLike = self.length !== undefined;
var all = selfIsArrayLike ? self : [self]; // put in array if not array-like
var cy = this._private.cy || this;
if (!cy.styleEnabled()) {
return false;
}
var ele = all[0];
if (ele) {
return ele._private.animation.current.length > 0;
}
};
},
// animated
clearQueue: function clearQueue() {
return function clearQueueImpl() {
var self = this;
var selfIsArrayLike = self.length !== undefined;
var all = selfIsArrayLike ? self : [self]; // put in array if not array-like
var cy = this._private.cy || this;
if (!cy.styleEnabled()) {
return this;
}
for (var i = 0; i < all.length; i++) {
var ele = all[i];
ele._private.animation.queue = [];
}
return this;
};
},
// clearQueue
delay: function delay() {
return function delayImpl(time, complete) {
var cy = this._private.cy || this;
if (!cy.styleEnabled()) {
return this;
}
return this.animate({
delay: time,
duration: time,
complete: complete
});
};
},
// delay
delayAnimation: function delayAnimation() {
return function delayAnimationImpl(time, complete) {
var cy = this._private.cy || this;
if (!cy.styleEnabled()) {
return this;
}
return this.animation({
delay: time,
duration: time,
complete: complete
});
};
},
// delay
animation: function animation() {
return function animationImpl(properties, params) {
var self = this;
var selfIsArrayLike = self.length !== undefined;
var all = selfIsArrayLike ? self : [self]; // put in array if not array-like
var cy = this._private.cy || this;
var isCore = !selfIsArrayLike;
var isEles = !isCore;
if (!cy.styleEnabled()) {
return this;
}
var style = cy.style();
properties = extend({}, properties, params);
var propertiesEmpty = Object.keys(properties).length === 0;
if (propertiesEmpty) {
return new Animation(all[0], properties); // nothing to animate
}
if (properties.duration === undefined) {
properties.duration = 400;
}
switch (properties.duration) {
case 'slow':
properties.duration = 600;
break;
case 'fast':
properties.duration = 200;
break;
}
if (isEles) {
properties.style = style.getPropsList(properties.style || properties.css);
properties.css = undefined;
}
if (isEles && properties.renderedPosition != null) {
var rpos = properties.renderedPosition;
var pan = cy.pan();
var zoom = cy.zoom();
properties.position = renderedToModelPosition(rpos, zoom, pan);
} // override pan w/ panBy if set
if (isCore && properties.panBy != null) {
var panBy = properties.panBy;
var cyPan = cy.pan();
properties.pan = {
x: cyPan.x + panBy.x,
y: cyPan.y + panBy.y
};
} // override pan w/ center if set
var center = properties.center || properties.centre;
if (isCore && center != null) {
var centerPan = cy.getCenterPan(center.eles, properties.zoom);
if (centerPan != null) {
properties.pan = centerPan;
}
} // override pan & zoom w/ fit if set
if (isCore && properties.fit != null) {
var fit = properties.fit;
var fitVp = cy.getFitViewport(fit.eles || fit.boundingBox, fit.padding);
if (fitVp != null) {
properties.pan = fitVp.pan;
properties.zoom = fitVp.zoom;
}
} // override zoom (& potentially pan) w/ zoom obj if set
if (isCore && plainObject(properties.zoom)) {
var vp = cy.getZoomedViewport(properties.zoom);
if (vp != null) {
if (vp.zoomed) {
properties.zoom = vp.zoom;
}
if (vp.panned) {
properties.pan = vp.pan;
}
} else {
properties.zoom = null; // an inavalid zoom (e.g. no delta) gets automatically destroyed
}
}
return new Animation(all[0], properties);
};
},
// animate
animate: function animate() {
return function animateImpl(properties, params) {
var self = this;
var selfIsArrayLike = self.length !== undefined;
var all = selfIsArrayLike ? self : [self]; // put in array if not array-like
var cy = this._private.cy || this;
if (!cy.styleEnabled()) {
return this;
}
if (params) {
properties = extend({}, properties, params);
} // manually hook and run the animation
for (var i = 0; i < all.length; i++) {
var ele = all[i];
var queue = ele.animated() && (properties.queue === undefined || properties.queue);
var ani = ele.animation(properties, queue ? {
queue: true
} : undefined);
ani.play();
}
return this; // chaining
};
},
// animate
stop: function stop() {
return function stopImpl(clearQueue, jumpToEnd) {
var self = this;
var selfIsArrayLike = self.length !== undefined;
var all = selfIsArrayLike ? self : [self]; // put in array if not array-like
var cy = this._private.cy || this;
if (!cy.styleEnabled()) {
return this;
}
for (var i = 0; i < all.length; i++) {
var ele = all[i];
var _p = ele._private;
var anis = _p.animation.current;
for (var j = 0; j < anis.length; j++) {
var ani = anis[j];
var ani_p = ani._private;
if (jumpToEnd) {
// next iteration of the animation loop, the animation
// will go straight to the end and be removed
ani_p.duration = 0;
}
} // clear the queue of future animations
if (clearQueue) {
_p.animation.queue = [];
}
if (!jumpToEnd) {
_p.animation.current = [];
}
} // we have to notify (the animation loop doesn't do it for us on `stop`)
cy.notify('draw');
return this;
};
} // stop
}; // define
var define$1 = {
// access data field
data: function data(params) {
var defaults = {
field: 'data',
bindingEvent: 'data',
allowBinding: false,
allowSetting: false,
allowGetting: false,
settingEvent: 'data',
settingTriggersEvent: false,
triggerFnName: 'trigger',
immutableKeys: {},
// key => true if immutable
updateStyle: false,
beforeGet: function beforeGet(self) {},
beforeSet: function beforeSet(self, obj) {},
onSet: function onSet(self) {},
canSet: function canSet(self) {
return true;
}
};
params = extend({}, defaults, params);
return function dataImpl(name, value) {
var p = params;
var self = this;
var selfIsArrayLike = self.length !== undefined;
var all = selfIsArrayLike ? self : [self]; // put in array if not array-like
var single = selfIsArrayLike ? self[0] : self; // .data('foo', ...)
if (string(name)) {
// set or get property
// .data('foo')
if (p.allowGetting && value === undefined) {
// get
var ret;
if (single) {
p.beforeGet(single);
ret = single._private[p.field][name];
}
return ret; // .data('foo', 'bar')
} else if (p.allowSetting && value !== undefined) {
// set
var valid = !p.immutableKeys[name];
if (valid) {
var change = _defineProperty$1({}, name, value);
p.beforeSet(self, change);
for (var i = 0, l = all.length; i < l; i++) {
var ele = all[i];
if (p.canSet(ele)) {
ele._private[p.field][name] = value;
}
} // update mappers if asked
if (p.updateStyle) {
self.updateStyle();
} // call onSet callback
p.onSet(self);
if (p.settingTriggersEvent) {
self[p.triggerFnName](p.settingEvent);
}
}
} // .data({ 'foo': 'bar' })
} else if (p.allowSetting && plainObject(name)) {
// extend
var obj = name;
var k, v;
var keys = Object.keys(obj);
p.beforeSet(self, obj);
for (var _i = 0; _i < keys.length; _i++) {
k = keys[_i];
v = obj[k];
var _valid = !p.immutableKeys[k];
if (_valid) {
for (var j = 0; j < all.length; j++) {
var _ele = all[j];
if (p.canSet(_ele)) {
_ele._private[p.field][k] = v;
}
}
}
} // update mappers if asked
if (p.updateStyle) {
self.updateStyle();
} // call onSet callback
p.onSet(self);
if (p.settingTriggersEvent) {
self[p.triggerFnName](p.settingEvent);
} // .data(function(){ ... })
} else if (p.allowBinding && fn(name)) {
// bind to event
var fn$1 = name;
self.on(p.bindingEvent, fn$1); // .data()
} else if (p.allowGetting && name === undefined) {
// get whole object
var _ret;
if (single) {
p.beforeGet(single);
_ret = single._private[p.field];
}
return _ret;
}
return self; // maintain chainability
}; // function
},
// data
// remove data field
removeData: function removeData(params) {
var defaults = {
field: 'data',
event: 'data',
triggerFnName: 'trigger',
triggerEvent: false,
immutableKeys: {} // key => true if immutable
};
params = extend({}, defaults, params);
return function removeDataImpl(names) {
var p = params;
var self = this;
var selfIsArrayLike = self.length !== undefined;
var all = selfIsArrayLike ? self : [self]; // put in array if not array-like
// .removeData('foo bar')
if (string(names)) {
// then get the list of keys, and delete them
var keys = names.split(/\s+/);
var l = keys.length;
for (var i = 0; i < l; i++) {
// delete each non-empty key
var key = keys[i];
if (emptyString(key)) {
continue;
}
var valid = !p.immutableKeys[key]; // not valid if immutable
if (valid) {
for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) {
all[i_a]._private[p.field][key] = undefined;
}
}
}
if (p.triggerEvent) {
self[p.triggerFnName](p.event);
} // .removeData()
} else if (names === undefined) {
// then delete all keys
for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) {
var _privateFields = all[_i_a]._private[p.field];
var _keys = Object.keys(_privateFields);
for (var _i2 = 0; _i2 < _keys.length; _i2++) {
var _key = _keys[_i2];
var validKeyToDelete = !p.immutableKeys[_key];
if (validKeyToDelete) {
_privateFields[_key] = undefined;
}
}
}
if (p.triggerEvent) {
self[p.triggerFnName](p.event);
}
}
return self; // maintain chaining
}; // function
} // removeData
}; // define
var define$2 = {
eventAliasesOn: function eventAliasesOn(proto) {
var p = proto;
p.addListener = p.listen = p.bind = p.on;
p.unlisten = p.unbind = p.off = p.removeListener;
p.trigger = p.emit; // this is just a wrapper alias of .on()
p.pon = p.promiseOn = function (events, selector) {
var self = this;
var args = Array.prototype.slice.call(arguments, 0);
return new Promise$1$1(function (resolve, reject) {
var callback = function callback(e) {
self.off.apply(self, offArgs);
resolve(e);
};
var onArgs = args.concat([callback]);
var offArgs = onArgs.concat([]);
self.on.apply(self, onArgs);
});
};
}
}; // define
// use this module to cherry pick functions into your prototype
var define$3 = {};
[define, define$1, define$2].forEach(function (m) {
extend(define$3, m);
});
var elesfn$d = {
animate: define$3.animate(),
animation: define$3.animation(),
animated: define$3.animated(),
clearQueue: define$3.clearQueue(),
delay: define$3.delay(),
delayAnimation: define$3.delayAnimation(),
stop: define$3.stop()
};
var elesfn$e = {
classes: function classes(_classes) {
var self = this;
if (_classes === undefined) {
var ret = [];
self[0]._private.classes.forEach(function (cls) {
return ret.push(cls);
});
return ret;
} else if (!array(_classes)) {
// extract classes from string
_classes = (_classes || '').match(/\S+/g) || [];
}
var changed = [];
var classesSet = new Set$1$1(_classes); // check and update each ele
for (var j = 0; j < self.length; j++) {
var ele = self[j];
var _p = ele._private;
var eleClasses = _p.classes;
var changedEle = false; // check if ele has all of the passed classes
for (var i = 0; i < _classes.length; i++) {
var cls = _classes[i];
var eleHasClass = eleClasses.has(cls);
if (!eleHasClass) {
changedEle = true;
break;
}
} // check if ele has classes outside of those passed
if (!changedEle) {
changedEle = eleClasses.size !== _classes.length;
}
if (changedEle) {
_p.classes = classesSet;
changed.push(ele);
}
} // trigger update style on those eles that had class changes
if (changed.length > 0) {
this.spawn(changed).updateStyle().emit('class');
}
return self;
},
addClass: function addClass(classes) {
return this.toggleClass(classes, true);
},
hasClass: function hasClass(className) {
var ele = this[0];
return ele != null && ele._private.classes.has(className);
},
toggleClass: function toggleClass(classes, toggle) {
if (!array(classes)) {
// extract classes from string
classes = classes.match(/\S+/g) || [];
}
var self = this;
var toggleUndefd = toggle === undefined;
var changed = []; // eles who had classes changed
for (var i = 0, il = self.length; i < il; i++) {
var ele = self[i];
var eleClasses = ele._private.classes;
var changedEle = false;
for (var j = 0; j < classes.length; j++) {
var cls = classes[j];
var hasClass = eleClasses.has(cls);
var changedNow = false;
if (toggle || toggleUndefd && !hasClass) {
eleClasses.add(cls);
changedNow = true;
} else if (!toggle || toggleUndefd && hasClass) {
eleClasses["delete"](cls);
changedNow = true;
}
if (!changedEle && changedNow) {
changed.push(ele);
changedEle = true;
}
} // for j classes
} // for i eles
// trigger update style on those eles that had class changes
if (changed.length > 0) {
this.spawn(changed).updateStyle().emit('class');
}
return self;
},
removeClass: function removeClass(classes) {
return this.toggleClass(classes, false);
},
flashClass: function flashClass(classes, duration) {
var self = this;
if (duration == null) {
duration = 250;
} else if (duration === 0) {
return self; // nothing to do really
}
self.addClass(classes);
setTimeout(function () {
self.removeClass(classes);
}, duration);
return self;
}
};
elesfn$e.className = elesfn$e.classNames = elesfn$e.classes;
var tokens = {
metaChar: '[\\!\\"\\#\\$\\%\\&\\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]',
// chars we need to escape in let names, etc
comparatorOp: '=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=',
// binary comparison op (used in data selectors)
boolOp: '\\?|\\!|\\^',
// boolean (unary) operators (used in data selectors)
string: '"(?:\\\\"|[^"])*"' + '|' + "'(?:\\\\'|[^'])*'",
// string literals (used in data selectors) -- doublequotes | singlequotes
number: number$1,
// number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123
meta: 'degree|indegree|outdegree',
// allowed metadata fields (i.e. allowed functions to use from Collection)
separator: '\\s*,\\s*',
// queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass
descendant: '\\s+',
child: '\\s+>\\s+',
subject: '\\$',
group: 'node|edge|\\*',
directedEdge: '\\s+->\\s+',
undirectedEdge: '\\s+<->\\s+'
};
tokens.variable = '(?:[\\w-]|(?:\\\\' + tokens.metaChar + '))+'; // a variable name
tokens.value = tokens.string + '|' + tokens.number; // a value literal, either a string or number
tokens.className = tokens.variable; // a class name (follows variable conventions)
tokens.id = tokens.variable; // an element id (follows variable conventions)
(function () {
var ops, op, i; // add @ variants to comparatorOp
ops = tokens.comparatorOp.split('|');
for (i = 0; i < ops.length; i++) {
op = ops[i];
tokens.comparatorOp += '|@' + op;
} // add ! variants to comparatorOp
ops = tokens.comparatorOp.split('|');
for (i = 0; i < ops.length; i++) {
op = ops[i];
if (op.indexOf('!') >= 0) {
continue;
} // skip ops that explicitly contain !
if (op === '=') {
continue;
} // skip = b/c != is explicitly defined
tokens.comparatorOp += '|\\!' + op;
}
})();
/**
* Make a new query object
*
* @prop type {Type} The type enum (int) of the query
* @prop checks List of checks to make against an ele to test for a match
*/
var newQuery = function newQuery() {
return {
checks: []
};
};
/**
* A check type enum-like object. Uses integer values for fast match() lookup.
* The ordering does not matter as long as the ints are unique.
*/
var Type = {
/** E.g. node */
GROUP: 0,
/** A collection of elements */
COLLECTION: 1,
/** A filter(ele) function */
FILTER: 2,
/** E.g. [foo > 1] */
DATA_COMPARE: 3,
/** E.g. [foo] */
DATA_EXIST: 4,
/** E.g. [?foo] */
DATA_BOOL: 5,
/** E.g. [[degree > 2]] */
META_COMPARE: 6,
/** E.g. :selected */
STATE: 7,
/** E.g. #foo */
ID: 8,
/** E.g. .foo */
CLASS: 9,
/** E.g. #foo <-> #bar */
UNDIRECTED_EDGE: 10,
/** E.g. #foo -> #bar */
DIRECTED_EDGE: 11,
/** E.g. $#foo -> #bar */
NODE_SOURCE: 12,
/** E.g. #foo -> $#bar */
NODE_TARGET: 13,
/** E.g. $#foo <-> #bar */
NODE_NEIGHBOR: 14,
/** E.g. #foo > #bar */
CHILD: 15,
/** E.g. #foo #bar */
DESCENDANT: 16,
/** E.g. $#foo > #bar */
PARENT: 17,
/** E.g. $#foo #bar */
ANCESTOR: 18,
/** E.g. #foo > $bar > #baz */
COMPOUND_SPLIT: 19,
/** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */
TRUE: 20
};
var stateSelectors = [{
selector: ':selected',
matches: function matches(ele) {
return ele.selected();
}
}, {
selector: ':unselected',
matches: function matches(ele) {
return !ele.selected();
}
}, {
selector: ':selectable',
matches: function matches(ele) {
return ele.selectable();
}
}, {
selector: ':unselectable',
matches: function matches(ele) {
return !ele.selectable();
}
}, {
selector: ':locked',
matches: function matches(ele) {
return ele.locked();
}
}, {
selector: ':unlocked',
matches: function matches(ele) {
return !ele.locked();
}
}, {
selector: ':visible',
matches: function matches(ele) {
return ele.visible();
}
}, {
selector: ':hidden',
matches: function matches(ele) {
return !ele.visible();
}
}, {
selector: ':transparent',
matches: function matches(ele) {
return ele.transparent();
}
}, {
selector: ':grabbed',
matches: function matches(ele) {
return ele.grabbed();
}
}, {
selector: ':free',
matches: function matches(ele) {
return !ele.grabbed();
}
}, {
selector: ':removed',
matches: function matches(ele) {
return ele.removed();
}
}, {
selector: ':inside',
matches: function matches(ele) {
return !ele.removed();
}
}, {
selector: ':grabbable',
matches: function matches(ele) {
return ele.grabbable();
}
}, {
selector: ':ungrabbable',
matches: function matches(ele) {
return !ele.grabbable();
}
}, {
selector: ':animated',
matches: function matches(ele) {
return ele.animated();
}
}, {
selector: ':unanimated',
matches: function matches(ele) {
return !ele.animated();
}
}, {
selector: ':parent',
matches: function matches(ele) {
return ele.isParent();
}
}, {
selector: ':childless',
matches: function matches(ele) {
return ele.isChildless();
}
}, {
selector: ':child',
matches: function matches(ele) {
return ele.isChild();
}
}, {
selector: ':orphan',
matches: function matches(ele) {
return ele.isOrphan();
}
}, {
selector: ':nonorphan',
matches: function matches(ele) {
return ele.isChild();
}
}, {
selector: ':compound',
matches: function matches(ele) {
if (ele.isNode()) {
return ele.isParent();
} else {
return ele.source().isParent() || ele.target().isParent();
}
}
}, {
selector: ':loop',
matches: function matches(ele) {
return ele.isLoop();
}
}, {
selector: ':simple',
matches: function matches(ele) {
return ele.isSimple();
}
}, {
selector: ':active',
matches: function matches(ele) {
return ele.active();
}
}, {
selector: ':inactive',
matches: function matches(ele) {
return !ele.active();
}
}, {
selector: ':backgrounding',
matches: function matches(ele) {
return ele.backgrounding();
}
}, {
selector: ':nonbackgrounding',
matches: function matches(ele) {
return !ele.backgrounding();
}
}].sort(function (a, b) {
// n.b. selectors that are starting substrings of others must have the longer ones first
return descending(a.selector, b.selector);
});
var lookup = function () {
var selToFn = {};
var s;
for (var i = 0; i < stateSelectors.length; i++) {
s = stateSelectors[i];
selToFn[s.selector] = s.matches;
}
return selToFn;
}();
var stateSelectorMatches = function stateSelectorMatches(sel, ele) {
return lookup[sel](ele);
};
var stateSelectorRegex = '(' + stateSelectors.map(function (s) {
return s.selector;
}).join('|') + ')';
// so that values get compared properly in Selector.filter()
var cleanMetaChars = function cleanMetaChars(str) {
return str.replace(new RegExp('\\\\(' + tokens.metaChar + ')', 'g'), function (match, $1) {
return $1;
});
};
var replaceLastQuery = function replaceLastQuery(selector, examiningQuery, replacementQuery) {
selector[selector.length - 1] = replacementQuery;
}; // NOTE: add new expression syntax here to have it recognised by the parser;
// - a query contains all adjacent (i.e. no separator in between) expressions;
// - the current query is stored in selector[i]
// - you need to check the query objects in match() for it actually filter properly, but that's pretty straight forward
var exprs = [{
name: 'group',
// just used for identifying when debugging
query: true,
regex: '(' + tokens.group + ')',
populate: function populate(selector, query, _ref) {
var _ref2 = _slicedToArray(_ref, 1),
group = _ref2[0];
query.checks.push({
type: Type.GROUP,
value: group === '*' ? group : group + 's'
});
}
}, {
name: 'state',
query: true,
regex: stateSelectorRegex,
populate: function populate(selector, query, _ref3) {
var _ref4 = _slicedToArray(_ref3, 1),
state = _ref4[0];
query.checks.push({
type: Type.STATE,
value: state
});
}
}, {
name: 'id',
query: true,
regex: '\\#(' + tokens.id + ')',
populate: function populate(selector, query, _ref5) {
var _ref6 = _slicedToArray(_ref5, 1),
id = _ref6[0];
query.checks.push({
type: Type.ID,
value: cleanMetaChars(id)
});
}
}, {
name: 'className',
query: true,
regex: '\\.(' + tokens.className + ')',
populate: function populate(selector, query, _ref7) {
var _ref8 = _slicedToArray(_ref7, 1),
className = _ref8[0];
query.checks.push({
type: Type.CLASS,
value: cleanMetaChars(className)
});
}
}, {
name: 'dataExists',
query: true,
regex: '\\[\\s*(' + tokens.variable + ')\\s*\\]',
populate: function populate(selector, query, _ref9) {
var _ref10 = _slicedToArray(_ref9, 1),
variable = _ref10[0];
query.checks.push({
type: Type.DATA_EXIST,
field: cleanMetaChars(variable)
});
}
}, {
name: 'dataCompare',
query: true,
regex: '\\[\\s*(' + tokens.variable + ')\\s*(' + tokens.comparatorOp + ')\\s*(' + tokens.value + ')\\s*\\]',
populate: function populate(selector, query, _ref11) {
var _ref12 = _slicedToArray(_ref11, 3),
variable = _ref12[0],
comparatorOp = _ref12[1],
value = _ref12[2];
var valueIsString = new RegExp('^' + tokens.string + '$').exec(value) != null;
if (valueIsString) {
value = value.substring(1, value.length - 1);
} else {
value = parseFloat(value);
}
query.checks.push({
type: Type.DATA_COMPARE,
field: cleanMetaChars(variable),
operator: comparatorOp,
value: value
});
}
}, {
name: 'dataBool',
query: true,
regex: '\\[\\s*(' + tokens.boolOp + ')\\s*(' + tokens.variable + ')\\s*\\]',
populate: function populate(selector, query, _ref13) {
var _ref14 = _slicedToArray(_ref13, 2),
boolOp = _ref14[0],
variable = _ref14[1];
query.checks.push({
type: Type.DATA_BOOL,
field: cleanMetaChars(variable),
operator: boolOp
});
}
}, {
name: 'metaCompare',
query: true,
regex: '\\[\\[\\s*(' + tokens.meta + ')\\s*(' + tokens.comparatorOp + ')\\s*(' + tokens.number + ')\\s*\\]\\]',
populate: function populate(selector, query, _ref15) {
var _ref16 = _slicedToArray(_ref15, 3),
meta = _ref16[0],
comparatorOp = _ref16[1],
number = _ref16[2];
query.checks.push({
type: Type.META_COMPARE,
field: cleanMetaChars(meta),
operator: comparatorOp,
value: parseFloat(number)
});
}
}, {
name: 'nextQuery',
separator: true,
regex: tokens.separator,
populate: function populate(selector, query) {
var currentSubject = selector.currentSubject;
var edgeCount = selector.edgeCount;
var compoundCount = selector.compoundCount;
var lastQ = selector[selector.length - 1];
if (currentSubject != null) {
lastQ.subject = currentSubject;
selector.currentSubject = null;
}
lastQ.edgeCount = edgeCount;
lastQ.compoundCount = compoundCount;
selector.edgeCount = 0;
selector.compoundCount = 0; // go on to next query
var nextQuery = selector[selector.length++] = newQuery();
return nextQuery; // this is the new query to be filled by the following exprs
}
}, {
name: 'directedEdge',
separator: true,
regex: tokens.directedEdge,
populate: function populate(selector, query) {
if (selector.currentSubject == null) {
// undirected edge
var edgeQuery = newQuery();
var source = query;
var target = newQuery();
edgeQuery.checks.push({
type: Type.DIRECTED_EDGE,
source: source,
target: target
}); // the query in the selector should be the edge rather than the source
replaceLastQuery(selector, query, edgeQuery);
selector.edgeCount++; // we're now populating the target query with expressions that follow
return target;
} else {
// source/target
var srcTgtQ = newQuery();
var _source = query;
var _target = newQuery();
srcTgtQ.checks.push({
type: Type.NODE_SOURCE,
source: _source,
target: _target
}); // the query in the selector should be the neighbourhood rather than the node
replaceLastQuery(selector, query, srcTgtQ);
selector.edgeCount++;
return _target; // now populating the target with the following expressions
}
}
}, {
name: 'undirectedEdge',
separator: true,
regex: tokens.undirectedEdge,
populate: function populate(selector, query) {
if (selector.currentSubject == null) {
// undirected edge
var edgeQuery = newQuery();
var source = query;
var target = newQuery();
edgeQuery.checks.push({
type: Type.UNDIRECTED_EDGE,
nodes: [source, target]
}); // the query in the selector should be the edge rather than the source
replaceLastQuery(selector, query, edgeQuery);
selector.edgeCount++; // we're now populating the target query with expressions that follow
return target;
} else {
// neighbourhood
var nhoodQ = newQuery();
var node = query;
var neighbor = newQuery();
nhoodQ.checks.push({
type: Type.NODE_NEIGHBOR,
node: node,
neighbor: neighbor
}); // the query in the selector should be the neighbourhood rather than the node
replaceLastQuery(selector, query, nhoodQ);
return neighbor; // now populating the neighbor with following expressions
}
}
}, {
name: 'child',
separator: true,
regex: tokens.child,
populate: function populate(selector, query) {
if (selector.currentSubject == null) {
// default: child query
var parentChildQuery = newQuery();
var child = newQuery();
var parent = selector[selector.length - 1];
parentChildQuery.checks.push({
type: Type.CHILD,
parent: parent,
child: child
}); // the query in the selector should be the '>' itself
replaceLastQuery(selector, query, parentChildQuery);
selector.compoundCount++; // we're now populating the child query with expressions that follow
return child;
} else if (selector.currentSubject === query) {
// compound split query
var compound = newQuery();
var left = selector[selector.length - 1];
var right = newQuery();
var subject = newQuery();
var _child = newQuery();
var _parent = newQuery(); // set up the root compound q
compound.checks.push({
type: Type.COMPOUND_SPLIT,
left: left,
right: right,
subject: subject
}); // populate the subject and replace the q at the old spot (within left) with TRUE
subject.checks = query.checks; // take the checks from the left
query.checks = [{
type: Type.TRUE
}]; // checks under left refs the subject implicitly
// set up the right q
_parent.checks.push({
type: Type.TRUE
}); // parent implicitly refs the subject
right.checks.push({
type: Type.PARENT,
// type is swapped on right side queries
parent: _parent,
child: _child // empty for now
});
replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query`
selector.currentSubject = subject;
selector.compoundCount++;
return _child; // now populating the right side's child
} else {
// parent query
// info for parent query
var _parent2 = newQuery();
var _child2 = newQuery();
var pcQChecks = [{
type: Type.PARENT,
parent: _parent2,
child: _child2
}]; // the parent-child query takes the place of the query previously being populated
_parent2.checks = query.checks; // the previous query contains the checks for the parent
query.checks = pcQChecks; // pc query takes over
selector.compoundCount++;
return _child2; // we're now populating the child
}
}
}, {
name: 'descendant',
separator: true,
regex: tokens.descendant,
populate: function populate(selector, query) {
if (selector.currentSubject == null) {
// default: descendant query
var ancChQuery = newQuery();
var descendant = newQuery();
var ancestor = selector[selector.length - 1];
ancChQuery.checks.push({
type: Type.DESCENDANT,
ancestor: ancestor,
descendant: descendant
}); // the query in the selector should be the '>' itself
replaceLastQuery(selector, query, ancChQuery);
selector.compoundCount++; // we're now populating the descendant query with expressions that follow
return descendant;
} else if (selector.currentSubject === query) {
// compound split query
var compound = newQuery();
var left = selector[selector.length - 1];
var right = newQuery();
var subject = newQuery();
var _descendant = newQuery();
var _ancestor = newQuery(); // set up the root compound q
compound.checks.push({
type: Type.COMPOUND_SPLIT,
left: left,
right: right,
subject: subject
}); // populate the subject and replace the q at the old spot (within left) with TRUE
subject.checks = query.checks; // take the checks from the left
query.checks = [{
type: Type.TRUE
}]; // checks under left refs the subject implicitly
// set up the right q
_ancestor.checks.push({
type: Type.TRUE
}); // ancestor implicitly refs the subject
right.checks.push({
type: Type.ANCESTOR,
// type is swapped on right side queries
ancestor: _ancestor,
descendant: _descendant // empty for now
});
replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query`
selector.currentSubject = subject;
selector.compoundCount++;
return _descendant; // now populating the right side's descendant
} else {
// ancestor query
// info for parent query
var _ancestor2 = newQuery();
var _descendant2 = newQuery();
var adQChecks = [{
type: Type.ANCESTOR,
ancestor: _ancestor2,
descendant: _descendant2
}]; // the parent-child query takes the place of the query previously being populated
_ancestor2.checks = query.checks; // the previous query contains the checks for the parent
query.checks = adQChecks; // pc query takes over
selector.compoundCount++;
return _descendant2; // we're now populating the child
}
}
}, {
name: 'subject',
modifier: true,
regex: tokens.subject,
populate: function populate(selector, query) {
if (selector.currentSubject != null && selector.currentSubject !== query) {
warn('Redefinition of subject in selector `' + selector.toString() + '`');
return false;
}
selector.currentSubject = query;
var topQ = selector[selector.length - 1];
var topChk = topQ.checks[0];
var topType = topChk == null ? null : topChk.type;
if (topType === Type.DIRECTED_EDGE) {
// directed edge with subject on the target
// change to target node check
topChk.type = Type.NODE_TARGET;
} else if (topType === Type.UNDIRECTED_EDGE) {
// undirected edge with subject on the second node
// change to neighbor check
topChk.type = Type.NODE_NEIGHBOR;
topChk.node = topChk.nodes[1]; // second node is subject
topChk.neighbor = topChk.nodes[0]; // clean up unused fields for new type
topChk.nodes = null;
}
}
}];
exprs.forEach(function (e) {
return e.regexObj = new RegExp('^' + e.regex);
});
/**
* Of all the expressions, find the first match in the remaining text.
* @param {string} remaining The remaining text to parse
* @returns The matched expression and the newly remaining text `{ expr, match, name, remaining }`
*/
var consumeExpr = function consumeExpr(remaining) {
var expr;
var match;
var name;
for (var j = 0; j < exprs.length; j++) {
var e = exprs[j];
var n = e.name;
var m = remaining.match(e.regexObj);
if (m != null) {
match = m;
expr = e;
name = n;
var consumed = m[0];
remaining = remaining.substring(consumed.length);
break; // we've consumed one expr, so we can return now
}
}
return {
expr: expr,
match: match,
name: name,
remaining: remaining
};
};
/**
* Consume all the leading whitespace
* @param {string} remaining The text to consume
* @returns The text with the leading whitespace removed
*/
var consumeWhitespace = function consumeWhitespace(remaining) {
var match = remaining.match(/^\s+/);
if (match) {
var consumed = match[0];
remaining = remaining.substring(consumed.length);
}
return remaining;
};
/**
* Parse the string and store the parsed representation in the Selector.
* @param {string} selector The selector string
* @returns `true` if the selector was successfully parsed, `false` otherwise
*/
var parse = function parse(selector) {
var self = this;
var remaining = self.inputText = selector;
var currentQuery = self[0] = newQuery();
self.length = 1;
remaining = consumeWhitespace(remaining); // get rid of leading whitespace
for (;;) {
var exprInfo = consumeExpr(remaining);
if (exprInfo.expr == null) {
warn('The selector `' + selector + '`is invalid');
return false;
} else {
var args = exprInfo.match.slice(1); // let the token populate the selector object in currentQuery
var ret = exprInfo.expr.populate(self, currentQuery, args);
if (ret === false) {
return false; // exit if population failed
} else if (ret != null) {
currentQuery = ret; // change the current query to be filled if the expr specifies
}
}
remaining = exprInfo.remaining; // we're done when there's nothing left to parse
if (remaining.match(/^\s*$/)) {
break;
}
}
var lastQ = self[self.length - 1];
if (self.currentSubject != null) {
lastQ.subject = self.currentSubject;
}
lastQ.edgeCount = self.edgeCount;
lastQ.compoundCount = self.compoundCount;
for (var i = 0; i < self.length; i++) {
var q = self[i]; // in future, this could potentially be allowed if there were operator precedence and detection of invalid combinations
if (q.compoundCount > 0 && q.edgeCount > 0) {
warn('The selector `' + selector + '` is invalid because it uses both a compound selector and an edge selector');
return false;
}
if (q.edgeCount > 1) {
warn('The selector `' + selector + '` is invalid because it uses multiple edge selectors');
return false;
} else if (q.edgeCount === 1) {
warn('The selector `' + selector + '` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.');
}
}
return true; // success
};
/**
* Get the selector represented as a string. This value uses default formatting,
* so things like spacing may differ from the input text passed to the constructor.
* @returns {string} The selector string
*/
var toString$1 = function toString() {
if (this.toStringCache != null) {
return this.toStringCache;
}
var clean = function clean(obj) {
if (obj == null) {
return '';
} else {
return obj;
}
};
var cleanVal = function cleanVal(val) {
if (string(val)) {
return '"' + val + '"';
} else {
return clean(val);
}
};
var space = function space(val) {
return ' ' + val + ' ';
};
var checkToString = function checkToString(check, subject) {
var type = check.type,
value = check.value;
switch (type) {
case Type.GROUP:
{
var group = clean(value);
return group.substring(0, group.length - 1);
}
case Type.DATA_COMPARE:
{
var field = check.field,
operator = check.operator;
return '[' + field + space(clean(operator)) + cleanVal(value) + ']';
}
case Type.DATA_BOOL:
{
var _operator = check.operator,
_field = check.field;
return '[' + clean(_operator) + _field + ']';
}
case Type.DATA_EXIST:
{
var _field2 = check.field;
return '[' + _field2 + ']';
}
case Type.META_COMPARE:
{
var _operator2 = check.operator,
_field3 = check.field;
return '[[' + _field3 + space(clean(_operator2)) + cleanVal(value) + ']]';
}
case Type.STATE:
{
return value;
}
case Type.ID:
{
return '#' + value;
}
case Type.CLASS:
{
return '.' + value;
}
case Type.PARENT:
case Type.CHILD:
{
return queryToString(check.parent, subject) + space('>') + queryToString(check.child, subject);
}
case Type.ANCESTOR:
case Type.DESCENDANT:
{
return queryToString(check.ancestor, subject) + ' ' + queryToString(check.descendant, subject);
}
case Type.COMPOUND_SPLIT:
{
var lhs = queryToString(check.left, subject);
var sub = queryToString(check.subject, subject);
var rhs = queryToString(check.right, subject);
return lhs + (lhs.length > 0 ? ' ' : '') + sub + rhs;
}
case Type.TRUE:
{
return '';
}
}
};
var queryToString = function queryToString(query, subject) {
return query.checks.reduce(function (str, chk, i) {
return str + (subject === query && i === 0 ? '$' : '') + checkToString(chk, subject);
}, '');
};
var str = '';
for (var i = 0; i < this.length; i++) {
var query = this[i];
str += queryToString(query, query.subject);
if (this.length > 1 && i < this.length - 1) {
str += ', ';
}
}
this.toStringCache = str;
return str;
};
var parse$1 = {
parse: parse,
toString: toString$1
};
var valCmp = function valCmp(fieldVal, operator, value) {
var matches;
var isFieldStr = string(fieldVal);
var isFieldNum = number(fieldVal);
var isValStr = string(value);
var fieldStr, valStr;
var caseInsensitive = false;
var notExpr = false;
var isIneqCmp = false;
if (operator.indexOf('!') >= 0) {
operator = operator.replace('!', '');
notExpr = true;
}
if (operator.indexOf('@') >= 0) {
operator = operator.replace('@', '');
caseInsensitive = true;
}
if (isFieldStr || isValStr || caseInsensitive) {
fieldStr = !isFieldStr && !isFieldNum ? '' : '' + fieldVal;
valStr = '' + value;
} // if we're doing a case insensitive comparison, then we're using a STRING comparison
// even if we're comparing numbers
if (caseInsensitive) {
fieldVal = fieldStr = fieldStr.toLowerCase();
value = valStr = valStr.toLowerCase();
}
switch (operator) {
case '*=':
matches = fieldStr.indexOf(valStr) >= 0;
break;
case '$=':
matches = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0;
break;
case '^=':
matches = fieldStr.indexOf(valStr) === 0;
break;
case '=':
matches = fieldVal === value;
break;
case '>':
isIneqCmp = true;
matches = fieldVal > value;
break;
case '>=':
isIneqCmp = true;
matches = fieldVal >= value;
break;
case '<':
isIneqCmp = true;
matches = fieldVal < value;
break;
case '<=':
isIneqCmp = true;
matches = fieldVal <= value;
break;
default:
matches = false;
break;
} // apply the not op, but null vals for inequalities should always stay non-matching
if (notExpr && (fieldVal != null || !isIneqCmp)) {
matches = !matches;
}
return matches;
};
var boolCmp = function boolCmp(fieldVal, operator) {
switch (operator) {
case '?':
return fieldVal ? true : false;
case '!':
return fieldVal ? false : true;
case '^':
return fieldVal === undefined;
}
};
var existCmp = function existCmp(fieldVal) {
return fieldVal !== undefined;
};
var data = function data(ele, field) {
return ele.data(field);
};
var meta = function meta(ele, field) {
return ele[field]();
};
/** A lookup of `match(check, ele)` functions by `Type` int */
var match = [];
/**
* Returns whether the query matches for the element
* @param query The `{ type, value, ... }` query object
* @param ele The element to compare against
*/
var matches = function matches(query, ele) {
return query.checks.every(function (chk) {
return match[chk.type](chk, ele);
});
};
match[Type.GROUP] = function (check, ele) {
var group = check.value;
return group === '*' || group === ele.group();
};
match[Type.STATE] = function (check, ele) {
var stateSelector = check.value;
return stateSelectorMatches(stateSelector, ele);
};
match[Type.ID] = function (check, ele) {
var id = check.value;
return ele.id() === id;
};
match[Type.CLASS] = function (check, ele) {
var cls = check.value;
return ele.hasClass(cls);
};
match[Type.META_COMPARE] = function (check, ele) {
var field = check.field,
operator = check.operator,
value = check.value;
return valCmp(meta(ele, field), operator, value);
};
match[Type.DATA_COMPARE] = function (check, ele) {
var field = check.field,
operator = check.operator,
value = check.value;
return valCmp(data(ele, field), operator, value);
};
match[Type.DATA_BOOL] = function (check, ele) {
var field = check.field,
operator = check.operator;
return boolCmp(data(ele, field), operator);
};
match[Type.DATA_EXIST] = function (check, ele) {
var field = check.field;
check.operator;
return existCmp(data(ele, field));
};
match[Type.UNDIRECTED_EDGE] = function (check, ele) {
var qA = check.nodes[0];
var qB = check.nodes[1];
var src = ele.source();
var tgt = ele.target();
return matches(qA, src) && matches(qB, tgt) || matches(qB, src) && matches(qA, tgt);
};
match[Type.NODE_NEIGHBOR] = function (check, ele) {
return matches(check.node, ele) && ele.neighborhood().some(function (n) {
return n.isNode() && matches(check.neighbor, n);
});
};
match[Type.DIRECTED_EDGE] = function (check, ele) {
return matches(check.source, ele.source()) && matches(check.target, ele.target());
};
match[Type.NODE_SOURCE] = function (check, ele) {
return matches(check.source, ele) && ele.outgoers().some(function (n) {
return n.isNode() && matches(check.target, n);
});
};
match[Type.NODE_TARGET] = function (check, ele) {
return matches(check.target, ele) && ele.incomers().some(function (n) {
return n.isNode() && matches(check.source, n);
});
};
match[Type.CHILD] = function (check, ele) {
return matches(check.child, ele) && matches(check.parent, ele.parent());
};
match[Type.PARENT] = function (check, ele) {
return matches(check.parent, ele) && ele.children().some(function (c) {
return matches(check.child, c);
});
};
match[Type.DESCENDANT] = function (check, ele) {
return matches(check.descendant, ele) && ele.ancestors().some(function (a) {
return matches(check.ancestor, a);
});
};
match[Type.ANCESTOR] = function (check, ele) {
return matches(check.ancestor, ele) && ele.descendants().some(function (d) {
return matches(check.descendant, d);
});
};
match[Type.COMPOUND_SPLIT] = function (check, ele) {
return matches(check.subject, ele) && matches(check.left, ele) && matches(check.right, ele);
};
match[Type.TRUE] = function () {
return true;
};
match[Type.COLLECTION] = function (check, ele) {
var collection = check.value;
return collection.has(ele);
};
match[Type.FILTER] = function (check, ele) {
var filter = check.value;
return filter(ele);
};
var filter$2 = function filter(collection) {
var self = this; // for 1 id #foo queries, just get the element
if (self.length === 1 && self[0].checks.length === 1 && self[0].checks[0].type === Type.ID) {
return collection.getElementById(self[0].checks[0].value).collection();
}
var selectorFunction = function selectorFunction(element) {
for (var j = 0; j < self.length; j++) {
var query = self[j];
if (matches(query, element)) {
return true;
}
}
return false;
};
if (self.text() == null) {
selectorFunction = function selectorFunction() {
return true;
};
}
return collection.filter(selectorFunction);
}; // filter
// does selector match a single element?
var matches$1 = function matches$1(ele) {
var self = this;
for (var j = 0; j < self.length; j++) {
var query = self[j];
if (matches(query, ele)) {
return true;
}
}
return false;
}; // matches
var matching = {
matches: matches$1,
filter: filter$2
};
var Selector = function Selector(selector) {
this.inputText = selector;
this.currentSubject = null;
this.compoundCount = 0;
this.edgeCount = 0;
this.length = 0;
if (selector == null || string(selector) && selector.match(/^\s*$/)) ; else if (elementOrCollection(selector)) {
this.addQuery({
checks: [{
type: Type.COLLECTION,
value: selector.collection()
}]
});
} else if (fn(selector)) {
this.addQuery({
checks: [{
type: Type.FILTER,
value: selector
}]
});
} else if (string(selector)) {
if (!this.parse(selector)) {
this.invalid = true;
}
} else {
error('A selector must be created from a string; found ');
}
};
var selfn = Selector.prototype;
[parse$1, matching].forEach(function (p) {
return extend(selfn, p);
});
selfn.text = function () {
return this.inputText;
};
selfn.size = function () {
return this.length;
};
selfn.eq = function (i) {
return this[i];
};
selfn.sameText = function (otherSel) {
return !this.invalid && !otherSel.invalid && this.text() === otherSel.text();
};
selfn.addQuery = function (q) {
this[this.length++] = q;
};
selfn.selector = selfn.toString;
var elesfn$f = {
allAre: function allAre(selector) {
var selObj = new Selector(selector);
return this.every(function (ele) {
return selObj.matches(ele);
});
},
is: function is(selector) {
var selObj = new Selector(selector);
return this.some(function (ele) {
return selObj.matches(ele);
});
},
some: function some(fn, thisArg) {
for (var i = 0; i < this.length; i++) {
var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]);
if (ret) {
return true;
}
}
return false;
},
every: function every(fn, thisArg) {
for (var i = 0; i < this.length; i++) {
var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]);
if (!ret) {
return false;
}
}
return true;
},
same: function same(collection) {
// cheap collection ref check
if (this === collection) {
return true;
}
collection = this.cy().collection(collection);
var thisLength = this.length;
var collectionLength = collection.length; // cheap length check
if (thisLength !== collectionLength) {
return false;
} // cheap element ref check
if (thisLength === 1) {
return this[0] === collection[0];
}
return this.every(function (ele) {
return collection.hasElementWithId(ele.id());
});
},
anySame: function anySame(collection) {
collection = this.cy().collection(collection);
return this.some(function (ele) {
return collection.hasElementWithId(ele.id());
});
},
allAreNeighbors: function allAreNeighbors(collection) {
collection = this.cy().collection(collection);
var nhood = this.neighborhood();
return collection.every(function (ele) {
return nhood.hasElementWithId(ele.id());
});
},
contains: function contains(collection) {
collection = this.cy().collection(collection);
var self = this;
return collection.every(function (ele) {
return self.hasElementWithId(ele.id());
});
}
};
elesfn$f.allAreNeighbours = elesfn$f.allAreNeighbors;
elesfn$f.has = elesfn$f.contains;
elesfn$f.equal = elesfn$f.equals = elesfn$f.same;
var cache = function cache(fn, name) {
return function traversalCache(arg1, arg2, arg3, arg4) {
var selectorOrEles = arg1;
var eles = this;
var key;
if (selectorOrEles == null) {
key = '';
} else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) {
key = selectorOrEles.id();
}
if (eles.length === 1 && key) {
var _p = eles[0]._private;
var tch = _p.traversalCache = _p.traversalCache || {};
var ch = tch[name] = tch[name] || [];
var hash = hashString(key);
var cacheHit = ch[hash];
if (cacheHit) {
return cacheHit;
} else {
return ch[hash] = fn.call(eles, arg1, arg2, arg3, arg4);
}
} else {
return fn.call(eles, arg1, arg2, arg3, arg4);
}
};
};
var elesfn$g = {
parent: function parent(selector) {
var parents = []; // optimisation for single ele call
if (this.length === 1) {
var parent = this[0]._private.parent;
if (parent) {
return parent;
}
}
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var _parent = ele._private.parent;
if (_parent) {
parents.push(_parent);
}
}
return this.spawn(parents, true).filter(selector);
},
parents: function parents(selector) {
var parents = [];
var eles = this.parent();
while (eles.nonempty()) {
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
parents.push(ele);
}
eles = eles.parent();
}
return this.spawn(parents, true).filter(selector);
},
commonAncestors: function commonAncestors(selector) {
var ancestors;
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var parents = ele.parents();
ancestors = ancestors || parents;
ancestors = ancestors.intersect(parents); // current list must be common with current ele parents set
}
return ancestors.filter(selector);
},
orphans: function orphans(selector) {
return this.stdFilter(function (ele) {
return ele.isOrphan();
}).filter(selector);
},
nonorphans: function nonorphans(selector) {
return this.stdFilter(function (ele) {
return ele.isChild();
}).filter(selector);
},
children: cache(function (selector) {
var children = [];
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var eleChildren = ele._private.children;
for (var j = 0; j < eleChildren.length; j++) {
children.push(eleChildren[j]);
}
}
return this.spawn(children, true).filter(selector);
}, 'children'),
siblings: function siblings(selector) {
return this.parent().children().not(this).filter(selector);
},
isParent: function isParent() {
var ele = this[0];
if (ele) {
return ele.isNode() && ele._private.children.length !== 0;
}
},
isChildless: function isChildless() {
var ele = this[0];
if (ele) {
return ele.isNode() && ele._private.children.length === 0;
}
},
isChild: function isChild() {
var ele = this[0];
if (ele) {
return ele.isNode() && ele._private.parent != null;
}
},
isOrphan: function isOrphan() {
var ele = this[0];
if (ele) {
return ele.isNode() && ele._private.parent == null;
}
},
descendants: function descendants(selector) {
var elements = [];
function add(eles) {
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
elements.push(ele);
if (ele.children().nonempty()) {
add(ele.children());
}
}
}
add(this.children());
return this.spawn(elements, true).filter(selector);
}
};
function forEachCompound(eles, fn, includeSelf, recursiveStep) {
var q = [];
var did = new Set$1$1();
var cy = eles.cy();
var hasCompounds = cy.hasCompoundNodes();
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
if (includeSelf) {
q.push(ele);
} else if (hasCompounds) {
recursiveStep(q, did, ele);
}
}
while (q.length > 0) {
var _ele = q.shift();
fn(_ele);
did.add(_ele.id());
if (hasCompounds) {
recursiveStep(q, did, _ele);
}
}
return eles;
}
function addChildren(q, did, ele) {
if (ele.isParent()) {
var children = ele._private.children;
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (!did.has(child.id())) {
q.push(child);
}
}
}
} // very efficient version of eles.add( eles.descendants() ).forEach()
// for internal use
elesfn$g.forEachDown = function (fn) {
var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
return forEachCompound(this, fn, includeSelf, addChildren);
};
function addParent(q, did, ele) {
if (ele.isChild()) {
var parent = ele._private.parent;
if (!did.has(parent.id())) {
q.push(parent);
}
}
}
elesfn$g.forEachUp = function (fn) {
var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
return forEachCompound(this, fn, includeSelf, addParent);
};
function addParentAndChildren(q, did, ele) {
addParent(q, did, ele);
addChildren(q, did, ele);
}
elesfn$g.forEachUpAndDown = function (fn) {
var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
return forEachCompound(this, fn, includeSelf, addParentAndChildren);
}; // aliases
elesfn$g.ancestors = elesfn$g.parents;
var fn$1, elesfn$h;
fn$1 = elesfn$h = {
data: define$3.data({
field: 'data',
bindingEvent: 'data',
allowBinding: true,
allowSetting: true,
settingEvent: 'data',
settingTriggersEvent: true,
triggerFnName: 'trigger',
allowGetting: true,
immutableKeys: {
'id': true,
'source': true,
'target': true,
'parent': true
},
updateStyle: true
}),
removeData: define$3.removeData({
field: 'data',
event: 'data',
triggerFnName: 'trigger',
triggerEvent: true,
immutableKeys: {
'id': true,
'source': true,
'target': true,
'parent': true
},
updateStyle: true
}),
scratch: define$3.data({
field: 'scratch',
bindingEvent: 'scratch',
allowBinding: true,
allowSetting: true,
settingEvent: 'scratch',
settingTriggersEvent: true,
triggerFnName: 'trigger',
allowGetting: true,
updateStyle: true
}),
removeScratch: define$3.removeData({
field: 'scratch',
event: 'scratch',
triggerFnName: 'trigger',
triggerEvent: true,
updateStyle: true
}),
rscratch: define$3.data({
field: 'rscratch',
allowBinding: false,
allowSetting: true,
settingTriggersEvent: false,
allowGetting: true
}),
removeRscratch: define$3.removeData({
field: 'rscratch',
triggerEvent: false
}),
id: function id() {
var ele = this[0];
if (ele) {
return ele._private.data.id;
}
}
}; // aliases
fn$1.attr = fn$1.data;
fn$1.removeAttr = fn$1.removeData;
var data$1 = elesfn$h;
var elesfn$i = {};
function defineDegreeFunction(callback) {
return function (includeLoops) {
var self = this;
if (includeLoops === undefined) {
includeLoops = true;
}
if (self.length === 0) {
return;
}
if (self.isNode() && !self.removed()) {
var degree = 0;
var node = self[0];
var connectedEdges = node._private.edges;
for (var i = 0; i < connectedEdges.length; i++) {
var edge = connectedEdges[i];
if (!includeLoops && edge.isLoop()) {
continue;
}
degree += callback(node, edge);
}
return degree;
} else {
return;
}
};
}
extend(elesfn$i, {
degree: defineDegreeFunction(function (node, edge) {
if (edge.source().same(edge.target())) {
return 2;
} else {
return 1;
}
}),
indegree: defineDegreeFunction(function (node, edge) {
if (edge.target().same(node)) {
return 1;
} else {
return 0;
}
}),
outdegree: defineDegreeFunction(function (node, edge) {
if (edge.source().same(node)) {
return 1;
} else {
return 0;
}
})
});
function defineDegreeBoundsFunction(degreeFn, callback) {
return function (includeLoops) {
var ret;
var nodes = this.nodes();
for (var i = 0; i < nodes.length; i++) {
var ele = nodes[i];
var degree = ele[degreeFn](includeLoops);
if (degree !== undefined && (ret === undefined || callback(degree, ret))) {
ret = degree;
}
}
return ret;
};
}
extend(elesfn$i, {
minDegree: defineDegreeBoundsFunction('degree', function (degree, min) {
return degree < min;
}),
maxDegree: defineDegreeBoundsFunction('degree', function (degree, max) {
return degree > max;
}),
minIndegree: defineDegreeBoundsFunction('indegree', function (degree, min) {
return degree < min;
}),
maxIndegree: defineDegreeBoundsFunction('indegree', function (degree, max) {
return degree > max;
}),
minOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, min) {
return degree < min;
}),
maxOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, max) {
return degree > max;
})
});
extend(elesfn$i, {
totalDegree: function totalDegree(includeLoops) {
var total = 0;
var nodes = this.nodes();
for (var i = 0; i < nodes.length; i++) {
total += nodes[i].degree(includeLoops);
}
return total;
}
});
var fn$2, elesfn$j;
var beforePositionSet = function beforePositionSet(eles, newPos, silent) {
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
if (!ele.locked()) {
var oldPos = ele._private.position;
var delta = {
x: newPos.x != null ? newPos.x - oldPos.x : 0,
y: newPos.y != null ? newPos.y - oldPos.y : 0
};
if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) {
ele.children().shift(delta, silent);
}
ele.dirtyBoundingBoxCache();
}
}
};
var positionDef = {
field: 'position',
bindingEvent: 'position',
allowBinding: true,
allowSetting: true,
settingEvent: 'position',
settingTriggersEvent: true,
triggerFnName: 'emitAndNotify',
allowGetting: true,
validKeys: ['x', 'y'],
beforeGet: function beforeGet(ele) {
ele.updateCompoundBounds();
},
beforeSet: function beforeSet(eles, newPos) {
beforePositionSet(eles, newPos, false);
},
onSet: function onSet(eles) {
eles.dirtyCompoundBoundsCache();
},
canSet: function canSet(ele) {
return !ele.locked();
}
};
fn$2 = elesfn$j = {
position: define$3.data(positionDef),
// position but no notification to renderer
silentPosition: define$3.data(extend({}, positionDef, {
allowBinding: false,
allowSetting: true,
settingTriggersEvent: false,
allowGetting: false,
beforeSet: function beforeSet(eles, newPos) {
beforePositionSet(eles, newPos, true);
},
onSet: function onSet(eles) {
eles.dirtyCompoundBoundsCache();
}
})),
positions: function positions(pos, silent) {
if (plainObject(pos)) {
if (silent) {
this.silentPosition(pos);
} else {
this.position(pos);
}
} else if (fn(pos)) {
var _fn = pos;
var cy = this.cy();
cy.startBatch();
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var _pos = void 0;
if (_pos = _fn(ele, i)) {
if (silent) {
ele.silentPosition(_pos);
} else {
ele.position(_pos);
}
}
}
cy.endBatch();
}
return this; // chaining
},
silentPositions: function silentPositions(pos) {
return this.positions(pos, true);
},
shift: function shift(dim, val, silent) {
var delta;
if (plainObject(dim)) {
delta = {
x: number(dim.x) ? dim.x : 0,
y: number(dim.y) ? dim.y : 0
};
silent = val;
} else if (string(dim) && number(val)) {
delta = {
x: 0,
y: 0
};
delta[dim] = val;
}
if (delta != null) {
var cy = this.cy();
cy.startBatch();
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var pos = ele.position();
var newPos = {
x: pos.x + delta.x,
y: pos.y + delta.y
};
if (silent) {
ele.silentPosition(newPos);
} else {
ele.position(newPos);
}
}
cy.endBatch();
}
return this;
},
silentShift: function silentShift(dim, val) {
if (plainObject(dim)) {
this.shift(dim, true);
} else if (string(dim) && number(val)) {
this.shift(dim, val, true);
}
return this;
},
// get/set the rendered (i.e. on screen) positon of the element
renderedPosition: function renderedPosition(dim, val) {
var ele = this[0];
var cy = this.cy();
var zoom = cy.zoom();
var pan = cy.pan();
var rpos = plainObject(dim) ? dim : undefined;
var setting = rpos !== undefined || val !== undefined && string(dim);
if (ele && ele.isNode()) {
// must have an element and must be a node to return position
if (setting) {
for (var i = 0; i < this.length; i++) {
var _ele = this[i];
if (val !== undefined) {
// set one dimension
_ele.position(dim, (val - pan[dim]) / zoom);
} else if (rpos !== undefined) {
// set whole position
_ele.position(renderedToModelPosition(rpos, zoom, pan));
}
}
} else {
// getting
var pos = ele.position();
rpos = modelToRenderedPosition(pos, zoom, pan);
if (dim === undefined) {
// then return the whole rendered position
return rpos;
} else {
// then return the specified dimension
return rpos[dim];
}
}
} else if (!setting) {
return undefined; // for empty collection case
}
return this; // chaining
},
// get/set the position relative to the parent
relativePosition: function relativePosition(dim, val) {
var ele = this[0];
var cy = this.cy();
var ppos = plainObject(dim) ? dim : undefined;
var setting = ppos !== undefined || val !== undefined && string(dim);
var hasCompoundNodes = cy.hasCompoundNodes();
if (ele && ele.isNode()) {
// must have an element and must be a node to return position
if (setting) {
for (var i = 0; i < this.length; i++) {
var _ele2 = this[i];
var parent = hasCompoundNodes ? _ele2.parent() : null;
var hasParent = parent && parent.length > 0;
var relativeToParent = hasParent;
if (hasParent) {
parent = parent[0];
}
var origin = relativeToParent ? parent.position() : {
x: 0,
y: 0
};
if (val !== undefined) {
// set one dimension
_ele2.position(dim, val + origin[dim]);
} else if (ppos !== undefined) {
// set whole position
_ele2.position({
x: ppos.x + origin.x,
y: ppos.y + origin.y
});
}
}
} else {
// getting
var pos = ele.position();
var _parent = hasCompoundNodes ? ele.parent() : null;
var _hasParent = _parent && _parent.length > 0;
var _relativeToParent = _hasParent;
if (_hasParent) {
_parent = _parent[0];
}
var _origin = _relativeToParent ? _parent.position() : {
x: 0,
y: 0
};
ppos = {
x: pos.x - _origin.x,
y: pos.y - _origin.y
};
if (dim === undefined) {
// then return the whole rendered position
return ppos;
} else {
// then return the specified dimension
return ppos[dim];
}
}
} else if (!setting) {
return undefined; // for empty collection case
}
return this; // chaining
}
}; // aliases
fn$2.modelPosition = fn$2.point = fn$2.position;
fn$2.modelPositions = fn$2.points = fn$2.positions;
fn$2.renderedPoint = fn$2.renderedPosition;
fn$2.relativePoint = fn$2.relativePosition;
var position$1 = elesfn$j;
var fn$3, elesfn$k;
fn$3 = elesfn$k = {};
elesfn$k.renderedBoundingBox = function (options) {
var bb = this.boundingBox(options);
var cy = this.cy();
var zoom = cy.zoom();
var pan = cy.pan();
var x1 = bb.x1 * zoom + pan.x;
var x2 = bb.x2 * zoom + pan.x;
var y1 = bb.y1 * zoom + pan.y;
var y2 = bb.y2 * zoom + pan.y;
return {
x1: x1,
x2: x2,
y1: y1,
y2: y2,
w: x2 - x1,
h: y2 - y1
};
};
elesfn$k.dirtyCompoundBoundsCache = function () {
var silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var cy = this.cy();
if (!cy.styleEnabled() || !cy.hasCompoundNodes()) {
return this;
}
this.forEachUp(function (ele) {
if (ele.isParent()) {
var _p = ele._private;
_p.compoundBoundsClean = false;
_p.bbCache = null;
if (!silent) {
ele.emitAndNotify('bounds');
}
}
});
return this;
};
elesfn$k.updateCompoundBounds = function () {
var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var cy = this.cy(); // not possible to do on non-compound graphs or with the style disabled
if (!cy.styleEnabled() || !cy.hasCompoundNodes()) {
return this;
} // save cycles when batching -- but bounds will be stale (or not exist yet)
if (!force && cy.batching()) {
return this;
}
function update(parent) {
if (!parent.isParent()) {
return;
}
var _p = parent._private;
var children = parent.children();
var includeLabels = parent.pstyle('compound-sizing-wrt-labels').value === 'include';
var min = {
width: {
val: parent.pstyle('min-width').pfValue,
left: parent.pstyle('min-width-bias-left'),
right: parent.pstyle('min-width-bias-right')
},
height: {
val: parent.pstyle('min-height').pfValue,
top: parent.pstyle('min-height-bias-top'),
bottom: parent.pstyle('min-height-bias-bottom')
}
};
var bb = children.boundingBox({
includeLabels: includeLabels,
includeOverlays: false,
// updating the compound bounds happens outside of the regular
// cache cycle (i.e. before fired events)
useCache: false
});
var pos = _p.position; // if children take up zero area then keep position and fall back on stylesheet w/h
if (bb.w === 0 || bb.h === 0) {
bb = {
w: parent.pstyle('width').pfValue,
h: parent.pstyle('height').pfValue
};
bb.x1 = pos.x - bb.w / 2;
bb.x2 = pos.x + bb.w / 2;
bb.y1 = pos.y - bb.h / 2;
bb.y2 = pos.y + bb.h / 2;
}
function computeBiasValues(propDiff, propBias, propBiasComplement) {
var biasDiff = 0;
var biasComplementDiff = 0;
var biasTotal = propBias + propBiasComplement;
if (propDiff > 0 && biasTotal > 0) {
biasDiff = propBias / biasTotal * propDiff;
biasComplementDiff = propBiasComplement / biasTotal * propDiff;
}
return {
biasDiff: biasDiff,
biasComplementDiff: biasComplementDiff
};
}
function computePaddingValues(width, height, paddingObject, relativeTo) {
// Assuming percentage is number from 0 to 1
if (paddingObject.units === '%') {
switch (relativeTo) {
case 'width':
return width > 0 ? paddingObject.pfValue * width : 0;
case 'height':
return height > 0 ? paddingObject.pfValue * height : 0;
case 'average':
return width > 0 && height > 0 ? paddingObject.pfValue * (width + height) / 2 : 0;
case 'min':
return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * height : paddingObject.pfValue * width : 0;
case 'max':
return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * width : paddingObject.pfValue * height : 0;
default:
return 0;
}
} else if (paddingObject.units === 'px') {
return paddingObject.pfValue;
} else {
return 0;
}
}
var leftVal = min.width.left.value;
if (min.width.left.units === 'px' && min.width.val > 0) {
leftVal = leftVal * 100 / min.width.val;
}
var rightVal = min.width.right.value;
if (min.width.right.units === 'px' && min.width.val > 0) {
rightVal = rightVal * 100 / min.width.val;
}
var topVal = min.height.top.value;
if (min.height.top.units === 'px' && min.height.val > 0) {
topVal = topVal * 100 / min.height.val;
}
var bottomVal = min.height.bottom.value;
if (min.height.bottom.units === 'px' && min.height.val > 0) {
bottomVal = bottomVal * 100 / min.height.val;
}
var widthBiasDiffs = computeBiasValues(min.width.val - bb.w, leftVal, rightVal);
var diffLeft = widthBiasDiffs.biasDiff;
var diffRight = widthBiasDiffs.biasComplementDiff;
var heightBiasDiffs = computeBiasValues(min.height.val - bb.h, topVal, bottomVal);
var diffTop = heightBiasDiffs.biasDiff;
var diffBottom = heightBiasDiffs.biasComplementDiff;
_p.autoPadding = computePaddingValues(bb.w, bb.h, parent.pstyle('padding'), parent.pstyle('padding-relative-to').value);
_p.autoWidth = Math.max(bb.w, min.width.val);
pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2;
_p.autoHeight = Math.max(bb.h, min.height.val);
pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2;
}
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var _p = ele._private;
if (!_p.compoundBoundsClean || force) {
update(ele);
if (!cy.batching()) {
_p.compoundBoundsClean = true;
}
}
}
return this;
};
var noninf = function noninf(x) {
if (x === Infinity || x === -Infinity) {
return 0;
}
return x;
};
var updateBounds = function updateBounds(b, x1, y1, x2, y2) {
// don't update with zero area boxes
if (x2 - x1 === 0 || y2 - y1 === 0) {
return;
} // don't update with null dim
if (x1 == null || y1 == null || x2 == null || y2 == null) {
return;
}
b.x1 = x1 < b.x1 ? x1 : b.x1;
b.x2 = x2 > b.x2 ? x2 : b.x2;
b.y1 = y1 < b.y1 ? y1 : b.y1;
b.y2 = y2 > b.y2 ? y2 : b.y2;
b.w = b.x2 - b.x1;
b.h = b.y2 - b.y1;
};
var updateBoundsFromBox = function updateBoundsFromBox(b, b2) {
if (b2 == null) {
return b;
}
return updateBounds(b, b2.x1, b2.y1, b2.x2, b2.y2);
};
var prefixedProperty = function prefixedProperty(obj, field, prefix) {
return getPrefixedProperty(obj, field, prefix);
};
var updateBoundsFromArrow = function updateBoundsFromArrow(bounds, ele, prefix) {
if (ele.cy().headless()) {
return;
}
var _p = ele._private;
var rstyle = _p.rstyle;
var halfArW = rstyle.arrowWidth / 2;
var arrowType = ele.pstyle(prefix + '-arrow-shape').value;
var x;
var y;
if (arrowType !== 'none') {
if (prefix === 'source') {
x = rstyle.srcX;
y = rstyle.srcY;
} else if (prefix === 'target') {
x = rstyle.tgtX;
y = rstyle.tgtY;
} else {
x = rstyle.midX;
y = rstyle.midY;
} // always store the individual arrow bounds
var bbs = _p.arrowBounds = _p.arrowBounds || {};
var bb = bbs[prefix] = bbs[prefix] || {};
bb.x1 = x - halfArW;
bb.y1 = y - halfArW;
bb.x2 = x + halfArW;
bb.y2 = y + halfArW;
bb.w = bb.x2 - bb.x1;
bb.h = bb.y2 - bb.y1;
expandBoundingBox(bb, 1);
updateBounds(bounds, bb.x1, bb.y1, bb.x2, bb.y2);
}
};
var updateBoundsFromLabel = function updateBoundsFromLabel(bounds, ele, prefix) {
if (ele.cy().headless()) {
return;
}
var prefixDash;
if (prefix) {
prefixDash = prefix + '-';
} else {
prefixDash = '';
}
var _p = ele._private;
var rstyle = _p.rstyle;
var label = ele.pstyle(prefixDash + 'label').strValue;
if (label) {
var halign = ele.pstyle('text-halign');
var valign = ele.pstyle('text-valign');
var labelWidth = prefixedProperty(rstyle, 'labelWidth', prefix);
var labelHeight = prefixedProperty(rstyle, 'labelHeight', prefix);
var labelX = prefixedProperty(rstyle, 'labelX', prefix);
var labelY = prefixedProperty(rstyle, 'labelY', prefix);
var marginX = ele.pstyle(prefixDash + 'text-margin-x').pfValue;
var marginY = ele.pstyle(prefixDash + 'text-margin-y').pfValue;
var isEdge = ele.isEdge();
var rotation = ele.pstyle(prefixDash + 'text-rotation');
var outlineWidth = ele.pstyle('text-outline-width').pfValue;
var borderWidth = ele.pstyle('text-border-width').pfValue;
var halfBorderWidth = borderWidth / 2;
var padding = ele.pstyle('text-background-padding').pfValue;
var marginOfError = 2; // expand to work around browser dimension inaccuracies
var lh = labelHeight;
var lw = labelWidth;
var lw_2 = lw / 2;
var lh_2 = lh / 2;
var lx1, lx2, ly1, ly2;
if (isEdge) {
lx1 = labelX - lw_2;
lx2 = labelX + lw_2;
ly1 = labelY - lh_2;
ly2 = labelY + lh_2;
} else {
switch (halign.value) {
case 'left':
lx1 = labelX - lw;
lx2 = labelX;
break;
case 'center':
lx1 = labelX - lw_2;
lx2 = labelX + lw_2;
break;
case 'right':
lx1 = labelX;
lx2 = labelX + lw;
break;
}
switch (valign.value) {
case 'top':
ly1 = labelY - lh;
ly2 = labelY;
break;
case 'center':
ly1 = labelY - lh_2;
ly2 = labelY + lh_2;
break;
case 'bottom':
ly1 = labelY;
ly2 = labelY + lh;
break;
}
} // shift by margin and expand by outline and border
lx1 += marginX - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError;
lx2 += marginX + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError;
ly1 += marginY - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError;
ly2 += marginY + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError; // always store the unrotated label bounds separately
var bbPrefix = prefix || 'main';
var bbs = _p.labelBounds;
var bb = bbs[bbPrefix] = bbs[bbPrefix] || {};
bb.x1 = lx1;
bb.y1 = ly1;
bb.x2 = lx2;
bb.y2 = ly2;
bb.w = lx2 - lx1;
bb.h = ly2 - ly1;
var isAutorotate = isEdge && rotation.strValue === 'autorotate';
var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0;
if (isAutorotate || isPfValue) {
var theta = isAutorotate ? prefixedProperty(_p.rstyle, 'labelAngle', prefix) : rotation.pfValue;
var cos = Math.cos(theta);
var sin = Math.sin(theta); // rotation point (default value for center-center)
var xo = (lx1 + lx2) / 2;
var yo = (ly1 + ly2) / 2;
if (!isEdge) {
switch (halign.value) {
case 'left':
xo = lx2;
break;
case 'right':
xo = lx1;
break;
}
switch (valign.value) {
case 'top':
yo = ly2;
break;
case 'bottom':
yo = ly1;
break;
}
}
var rotate = function rotate(x, y) {
x = x - xo;
y = y - yo;
return {
x: x * cos - y * sin + xo,
y: x * sin + y * cos + yo
};
};
var px1y1 = rotate(lx1, ly1);
var px1y2 = rotate(lx1, ly2);
var px2y1 = rotate(lx2, ly1);
var px2y2 = rotate(lx2, ly2);
lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x);
lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x);
ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y);
ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y);
}
var bbPrefixRot = bbPrefix + 'Rot';
var bbRot = bbs[bbPrefixRot] = bbs[bbPrefixRot] || {};
bbRot.x1 = lx1;
bbRot.y1 = ly1;
bbRot.x2 = lx2;
bbRot.y2 = ly2;
bbRot.w = lx2 - lx1;
bbRot.h = ly2 - ly1;
updateBounds(bounds, lx1, ly1, lx2, ly2);
updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2);
}
return bounds;
}; // get the bounding box of the elements (in raw model position)
var boundingBoxImpl = function boundingBoxImpl(ele, options) {
var cy = ele._private.cy;
var styleEnabled = cy.styleEnabled();
var headless = cy.headless();
var bounds = makeBoundingBox();
var _p = ele._private;
var isNode = ele.isNode();
var isEdge = ele.isEdge();
var ex1, ex2, ey1, ey2; // extrema of body / lines
var x, y; // node pos
var rstyle = _p.rstyle;
var manualExpansion = isNode && styleEnabled ? ele.pstyle('bounds-expansion').pfValue : [0]; // must use `display` prop only, as reading `compound.width()` causes recursion
// (other factors like width values will be considered later in this function anyway)
var isDisplayed = function isDisplayed(ele) {
return ele.pstyle('display').value !== 'none';
};
var displayed = !styleEnabled || isDisplayed(ele) // must take into account connected nodes b/c of implicit edge hiding on display:none node
&& (!isEdge || isDisplayed(ele.source()) && isDisplayed(ele.target()));
if (displayed) {
// displayed suffices, since we will find zero area eles anyway
var overlayOpacity = 0;
var overlayPadding = 0;
if (styleEnabled && options.includeOverlays) {
overlayOpacity = ele.pstyle('overlay-opacity').value;
if (overlayOpacity !== 0) {
overlayPadding = ele.pstyle('overlay-padding').value;
}
}
var w = 0;
var wHalf = 0;
if (styleEnabled) {
w = ele.pstyle('width').pfValue;
wHalf = w / 2;
}
if (isNode && options.includeNodes) {
var pos = ele.position();
x = pos.x;
y = pos.y;
var _w = ele.outerWidth();
var halfW = _w / 2;
var h = ele.outerHeight();
var halfH = h / 2; // handle node dimensions
/////////////////////////
ex1 = x - halfW;
ex2 = x + halfW;
ey1 = y - halfH;
ey2 = y + halfH;
updateBounds(bounds, ex1, ey1, ex2, ey2);
} else if (isEdge && options.includeEdges) {
if (styleEnabled && !headless) {
var curveStyle = ele.pstyle('curve-style').strValue; // handle edge dimensions (rough box estimate)
//////////////////////////////////////////////
ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX);
ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX);
ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY);
ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY); // take into account edge width
ex1 -= wHalf;
ex2 += wHalf;
ey1 -= wHalf;
ey2 += wHalf;
updateBounds(bounds, ex1, ey1, ex2, ey2); // precise edges
////////////////
if (curveStyle === 'haystack') {
var hpts = rstyle.haystackPts;
if (hpts && hpts.length === 2) {
ex1 = hpts[0].x;
ey1 = hpts[0].y;
ex2 = hpts[1].x;
ey2 = hpts[1].y;
if (ex1 > ex2) {
var temp = ex1;
ex1 = ex2;
ex2 = temp;
}
if (ey1 > ey2) {
var _temp = ey1;
ey1 = ey2;
ey2 = _temp;
}
updateBounds(bounds, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf);
}
} else if (curveStyle === 'bezier' || curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'taxi') {
var pts;
switch (curveStyle) {
case 'bezier':
case 'unbundled-bezier':
pts = rstyle.bezierPts;
break;
case 'segments':
case 'taxi':
pts = rstyle.linePts;
break;
}
if (pts != null) {
for (var j = 0; j < pts.length; j++) {
var pt = pts[j];
ex1 = pt.x - wHalf;
ex2 = pt.x + wHalf;
ey1 = pt.y - wHalf;
ey2 = pt.y + wHalf;
updateBounds(bounds, ex1, ey1, ex2, ey2);
}
}
} // bezier-like or segment-like edge
} else {
// headless or style disabled
// fallback on source and target positions
//////////////////////////////////////////
var n1 = ele.source();
var n1pos = n1.position();
var n2 = ele.target();
var n2pos = n2.position();
ex1 = n1pos.x;
ex2 = n2pos.x;
ey1 = n1pos.y;
ey2 = n2pos.y;
if (ex1 > ex2) {
var _temp2 = ex1;
ex1 = ex2;
ex2 = _temp2;
}
if (ey1 > ey2) {
var _temp3 = ey1;
ey1 = ey2;
ey2 = _temp3;
} // take into account edge width
ex1 -= wHalf;
ex2 += wHalf;
ey1 -= wHalf;
ey2 += wHalf;
updateBounds(bounds, ex1, ey1, ex2, ey2);
} // headless or style disabled
} // edges
// handle edge arrow size
/////////////////////////
if (styleEnabled && options.includeEdges && isEdge) {
updateBoundsFromArrow(bounds, ele, 'mid-source');
updateBoundsFromArrow(bounds, ele, 'mid-target');
updateBoundsFromArrow(bounds, ele, 'source');
updateBoundsFromArrow(bounds, ele, 'target');
} // ghost
////////
if (styleEnabled) {
var ghost = ele.pstyle('ghost').value === 'yes';
if (ghost) {
var gx = ele.pstyle('ghost-offset-x').pfValue;
var gy = ele.pstyle('ghost-offset-y').pfValue;
updateBounds(bounds, bounds.x1 + gx, bounds.y1 + gy, bounds.x2 + gx, bounds.y2 + gy);
}
} // always store the body bounds separately from the labels
var bbBody = _p.bodyBounds = _p.bodyBounds || {};
assignBoundingBox(bbBody, bounds);
expandBoundingBoxSides(bbBody, manualExpansion);
expandBoundingBox(bbBody, 1); // expand to work around browser dimension inaccuracies
// overlay
//////////
if (styleEnabled) {
ex1 = bounds.x1;
ex2 = bounds.x2;
ey1 = bounds.y1;
ey2 = bounds.y2;
updateBounds(bounds, ex1 - overlayPadding, ey1 - overlayPadding, ex2 + overlayPadding, ey2 + overlayPadding);
} // always store the body bounds separately from the labels
var bbOverlay = _p.overlayBounds = _p.overlayBounds || {};
assignBoundingBox(bbOverlay, bounds);
expandBoundingBoxSides(bbOverlay, manualExpansion);
expandBoundingBox(bbOverlay, 1); // expand to work around browser dimension inaccuracies
// handle label dimensions
//////////////////////////
var bbLabels = _p.labelBounds = _p.labelBounds || {};
if (bbLabels.all != null) {
clearBoundingBox(bbLabels.all);
} else {
bbLabels.all = makeBoundingBox();
}
if (styleEnabled && options.includeLabels) {
if (options.includeMainLabels) {
updateBoundsFromLabel(bounds, ele, null);
}
if (isEdge) {
if (options.includeSourceLabels) {
updateBoundsFromLabel(bounds, ele, 'source');
}
if (options.includeTargetLabels) {
updateBoundsFromLabel(bounds, ele, 'target');
}
}
} // style enabled for labels
} // if displayed
bounds.x1 = noninf(bounds.x1);
bounds.y1 = noninf(bounds.y1);
bounds.x2 = noninf(bounds.x2);
bounds.y2 = noninf(bounds.y2);
bounds.w = noninf(bounds.x2 - bounds.x1);
bounds.h = noninf(bounds.y2 - bounds.y1);
if (bounds.w > 0 && bounds.h > 0 && displayed) {
expandBoundingBoxSides(bounds, manualExpansion); // expand bounds by 1 because antialiasing can increase the visual/effective size by 1 on all sides
expandBoundingBox(bounds, 1);
}
return bounds;
};
var getKey = function getKey(opts) {
var i = 0;
var tf = function tf(val) {
return (val ? 1 : 0) << i++;
};
var key = 0;
key += tf(opts.incudeNodes);
key += tf(opts.includeEdges);
key += tf(opts.includeLabels);
key += tf(opts.includeMainLabels);
key += tf(opts.includeSourceLabels);
key += tf(opts.includeTargetLabels);
key += tf(opts.includeOverlays);
return key;
};
var getBoundingBoxPosKey = function getBoundingBoxPosKey(ele) {
if (ele.isEdge()) {
var p1 = ele.source().position();
var p2 = ele.target().position();
var r = function r(x) {
return Math.round(x);
};
return hashIntsArray([r(p1.x), r(p1.y), r(p2.x), r(p2.y)]);
} else {
return 0;
}
};
var cachedBoundingBoxImpl = function cachedBoundingBoxImpl(ele, opts) {
var _p = ele._private;
var bb;
var isEdge = ele.isEdge();
var key = opts == null ? defBbOptsKey : getKey(opts);
var usingDefOpts = key === defBbOptsKey;
var currPosKey = getBoundingBoxPosKey(ele);
var isPosKeySame = _p.bbCachePosKey === currPosKey;
var useCache = opts.useCache && isPosKeySame;
var isDirty = function isDirty(ele) {
return ele._private.bbCache == null || ele._private.styleDirty;
};
var needRecalc = !useCache || isDirty(ele) || isEdge && isDirty(ele.source()) || isDirty(ele.target());
if (needRecalc) {
if (!isPosKeySame) {
ele.recalculateRenderedStyle(useCache);
}
bb = boundingBoxImpl(ele, defBbOpts);
_p.bbCache = bb;
_p.bbCachePosKey = currPosKey;
} else {
bb = _p.bbCache;
} // not using def opts => need to build up bb from combination of sub bbs
if (!usingDefOpts) {
var isNode = ele.isNode();
bb = makeBoundingBox();
if (opts.includeNodes && isNode || opts.includeEdges && !isNode) {
if (opts.includeOverlays) {
updateBoundsFromBox(bb, _p.overlayBounds);
} else {
updateBoundsFromBox(bb, _p.bodyBounds);
}
}
if (opts.includeLabels) {
if (opts.includeMainLabels && (!isEdge || opts.includeSourceLabels && opts.includeTargetLabels)) {
updateBoundsFromBox(bb, _p.labelBounds.all);
} else {
if (opts.includeMainLabels) {
updateBoundsFromBox(bb, _p.labelBounds.mainRot);
}
if (opts.includeSourceLabels) {
updateBoundsFromBox(bb, _p.labelBounds.sourceRot);
}
if (opts.includeTargetLabels) {
updateBoundsFromBox(bb, _p.labelBounds.targetRot);
}
}
}
bb.w = bb.x2 - bb.x1;
bb.h = bb.y2 - bb.y1;
}
return bb;
};
var defBbOpts = {
includeNodes: true,
includeEdges: true,
includeLabels: true,
includeMainLabels: true,
includeSourceLabels: true,
includeTargetLabels: true,
includeOverlays: true,
useCache: true
};
var defBbOptsKey = getKey(defBbOpts);
var filledBbOpts = defaults$1(defBbOpts);
elesfn$k.boundingBox = function (options) {
var bounds; // the main usecase is ele.boundingBox() for a single element with no/def options
// specified s.t. the cache is used, so check for this case to make it faster by
// avoiding the overhead of the rest of the function
if (this.length === 1 && this[0]._private.bbCache != null && !this[0]._private.styleDirty && (options === undefined || options.useCache === undefined || options.useCache === true)) {
if (options === undefined) {
options = defBbOpts;
} else {
options = filledBbOpts(options);
}
bounds = cachedBoundingBoxImpl(this[0], options);
} else {
bounds = makeBoundingBox();
options = options || defBbOpts;
var opts = filledBbOpts(options);
var eles = this;
var cy = eles.cy();
var styleEnabled = cy.styleEnabled();
if (styleEnabled) {
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var _p = ele._private;
var currPosKey = getBoundingBoxPosKey(ele);
var isPosKeySame = _p.bbCachePosKey === currPosKey;
var useCache = opts.useCache && isPosKeySame && !_p.styleDirty;
ele.recalculateRenderedStyle(useCache);
}
}
this.updateCompoundBounds(!options.useCache);
for (var _i = 0; _i < eles.length; _i++) {
var _ele = eles[_i];
updateBoundsFromBox(bounds, cachedBoundingBoxImpl(_ele, opts));
}
}
bounds.x1 = noninf(bounds.x1);
bounds.y1 = noninf(bounds.y1);
bounds.x2 = noninf(bounds.x2);
bounds.y2 = noninf(bounds.y2);
bounds.w = noninf(bounds.x2 - bounds.x1);
bounds.h = noninf(bounds.y2 - bounds.y1);
return bounds;
};
elesfn$k.dirtyBoundingBoxCache = function () {
for (var i = 0; i < this.length; i++) {
var _p = this[i]._private;
_p.bbCache = null;
_p.bbCachePosKey = null;
_p.bodyBounds = null;
_p.overlayBounds = null;
_p.labelBounds.all = null;
_p.labelBounds.source = null;
_p.labelBounds.target = null;
_p.labelBounds.main = null;
_p.labelBounds.sourceRot = null;
_p.labelBounds.targetRot = null;
_p.labelBounds.mainRot = null;
_p.arrowBounds.source = null;
_p.arrowBounds.target = null;
_p.arrowBounds['mid-source'] = null;
_p.arrowBounds['mid-target'] = null;
}
this.emitAndNotify('bounds');
return this;
}; // private helper to get bounding box for custom node positions
// - good for perf in certain cases but currently requires dirtying the rendered style
// - would be better to not modify the nodes but the nodes are read directly everywhere in the renderer...
// - try to use for only things like discrete layouts where the node position would change anyway
elesfn$k.boundingBoxAt = function (fn) {
var nodes = this.nodes();
var cy = this.cy();
var hasCompoundNodes = cy.hasCompoundNodes();
var parents = cy.collection();
if (hasCompoundNodes) {
parents = nodes.filter(function (node) {
return node.isParent();
});
nodes = nodes.not(parents);
}
if (plainObject(fn)) {
var obj = fn;
fn = function fn() {
return obj;
};
}
var storeOldPos = function storeOldPos(node, i) {
return node._private.bbAtOldPos = fn(node, i);
};
var getOldPos = function getOldPos(node) {
return node._private.bbAtOldPos;
};
cy.startBatch();
nodes.forEach(storeOldPos).silentPositions(fn);
if (hasCompoundNodes) {
parents.dirtyCompoundBoundsCache();
parents.dirtyBoundingBoxCache();
parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle
}
var bb = copyBoundingBox(this.boundingBox({
useCache: false
}));
nodes.silentPositions(getOldPos);
if (hasCompoundNodes) {
parents.dirtyCompoundBoundsCache();
parents.dirtyBoundingBoxCache();
parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle
}
cy.endBatch();
return bb;
};
fn$3.boundingbox = fn$3.bb = fn$3.boundingBox;
fn$3.renderedBoundingbox = fn$3.renderedBoundingBox;
var bounds = elesfn$k;
var fn$4, elesfn$l;
fn$4 = elesfn$l = {};
var defineDimFns = function defineDimFns(opts) {
opts.uppercaseName = capitalize(opts.name);
opts.autoName = 'auto' + opts.uppercaseName;
opts.labelName = 'label' + opts.uppercaseName;
opts.outerName = 'outer' + opts.uppercaseName;
opts.uppercaseOuterName = capitalize(opts.outerName);
fn$4[opts.name] = function dimImpl() {
var ele = this[0];
var _p = ele._private;
var cy = _p.cy;
var styleEnabled = cy._private.styleEnabled;
if (ele) {
if (styleEnabled) {
if (ele.isParent()) {
ele.updateCompoundBounds();
return _p[opts.autoName] || 0;
}
var d = ele.pstyle(opts.name);
switch (d.strValue) {
case 'label':
ele.recalculateRenderedStyle();
return _p.rstyle[opts.labelName] || 0;
default:
return d.pfValue;
}
} else {
return 1;
}
}
};
fn$4['outer' + opts.uppercaseName] = function outerDimImpl() {
var ele = this[0];
var _p = ele._private;
var cy = _p.cy;
var styleEnabled = cy._private.styleEnabled;
if (ele) {
if (styleEnabled) {
var dim = ele[opts.name]();
var border = ele.pstyle('border-width').pfValue; // n.b. 1/2 each side
var padding = 2 * ele.padding();
return dim + border + padding;
} else {
return 1;
}
}
};
fn$4['rendered' + opts.uppercaseName] = function renderedDimImpl() {
var ele = this[0];
if (ele) {
var d = ele[opts.name]();
return d * this.cy().zoom();
}
};
fn$4['rendered' + opts.uppercaseOuterName] = function renderedOuterDimImpl() {
var ele = this[0];
if (ele) {
var od = ele[opts.outerName]();
return od * this.cy().zoom();
}
};
};
defineDimFns({
name: 'width'
});
defineDimFns({
name: 'height'
});
elesfn$l.padding = function () {
var ele = this[0];
var _p = ele._private;
if (ele.isParent()) {
ele.updateCompoundBounds();
if (_p.autoPadding !== undefined) {
return _p.autoPadding;
} else {
return ele.pstyle('padding').pfValue;
}
} else {
return ele.pstyle('padding').pfValue;
}
};
elesfn$l.paddedHeight = function () {
var ele = this[0];
return ele.height() + 2 * ele.padding();
};
elesfn$l.paddedWidth = function () {
var ele = this[0];
return ele.width() + 2 * ele.padding();
};
var widthHeight = elesfn$l;
var ifEdge = function ifEdge(ele, getValue) {
if (ele.isEdge()) {
return getValue(ele);
}
};
var ifEdgeRenderedPosition = function ifEdgeRenderedPosition(ele, getPoint) {
if (ele.isEdge()) {
var cy = ele.cy();
return modelToRenderedPosition(getPoint(ele), cy.zoom(), cy.pan());
}
};
var ifEdgeRenderedPositions = function ifEdgeRenderedPositions(ele, getPoints) {
if (ele.isEdge()) {
var cy = ele.cy();
var pan = cy.pan();
var zoom = cy.zoom();
return getPoints(ele).map(function (p) {
return modelToRenderedPosition(p, zoom, pan);
});
}
};
var controlPoints = function controlPoints(ele) {
return ele.renderer().getControlPoints(ele);
};
var segmentPoints = function segmentPoints(ele) {
return ele.renderer().getSegmentPoints(ele);
};
var sourceEndpoint = function sourceEndpoint(ele) {
return ele.renderer().getSourceEndpoint(ele);
};
var targetEndpoint = function targetEndpoint(ele) {
return ele.renderer().getTargetEndpoint(ele);
};
var midpoint = function midpoint(ele) {
return ele.renderer().getEdgeMidpoint(ele);
};
var pts = {
controlPoints: {
get: controlPoints,
mult: true
},
segmentPoints: {
get: segmentPoints,
mult: true
},
sourceEndpoint: {
get: sourceEndpoint
},
targetEndpoint: {
get: targetEndpoint
},
midpoint: {
get: midpoint
}
};
var renderedName = function renderedName(name) {
return 'rendered' + name[0].toUpperCase() + name.substr(1);
};
var edgePoints = Object.keys(pts).reduce(function (obj, name) {
var spec = pts[name];
var rName = renderedName(name);
obj[name] = function () {
return ifEdge(this, spec.get);
};
if (spec.mult) {
obj[rName] = function () {
return ifEdgeRenderedPositions(this, spec.get);
};
} else {
obj[rName] = function () {
return ifEdgeRenderedPosition(this, spec.get);
};
}
return obj;
}, {});
var dimensions = extend({}, position$1, bounds, widthHeight, edgePoints);
/*!
Event object based on jQuery events, MIT license
https://jquery.org/license/
https://tldrlegal.com/license/mit-license
https://github.com/jquery/jquery/blob/master/src/event.js
*/
var Event$1 = function Event(src, props) {
this.recycle(src, props);
};
function returnFalse() {
return false;
}
function returnTrue() {
return true;
} // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
Event$1.prototype = {
instanceString: function instanceString() {
return 'event';
},
recycle: function recycle(src, props) {
this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse;
if (src != null && src.preventDefault) {
// Browser Event object
this.type = src.type; // Events bubbling up the document may have been marked as prevented
// by a handler lower down the tree; reflect the correct value.
this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse;
} else if (src != null && src.type) {
// Plain object containing all event details
props = src;
} else {
// Event string
this.type = src;
} // Put explicitly provided properties onto the event object
if (props != null) {
// more efficient to manually copy fields we use
this.originalEvent = props.originalEvent;
this.type = props.type != null ? props.type : this.type;
this.cy = props.cy;
this.target = props.target;
this.position = props.position;
this.renderedPosition = props.renderedPosition;
this.namespace = props.namespace;
this.layout = props.layout;
}
if (this.cy != null && this.position != null && this.renderedPosition == null) {
// create a rendered position based on the passed position
var pos = this.position;
var zoom = this.cy.zoom();
var pan = this.cy.pan();
this.renderedPosition = {
x: pos.x * zoom + pan.x,
y: pos.y * zoom + pan.y
};
} // Create a timestamp if incoming event doesn't have one
this.timeStamp = src && src.timeStamp || Date.now();
},
preventDefault: function preventDefault() {
this.isDefaultPrevented = returnTrue;
var e = this.originalEvent;
if (!e) {
return;
} // if preventDefault exists run it on the original event
if (e.preventDefault) {
e.preventDefault();
}
},
stopPropagation: function stopPropagation() {
this.isPropagationStopped = returnTrue;
var e = this.originalEvent;
if (!e) {
return;
} // if stopPropagation exists run it on the original event
if (e.stopPropagation) {
e.stopPropagation();
}
},
stopImmediatePropagation: function stopImmediatePropagation() {
this.isImmediatePropagationStopped = returnTrue;
this.stopPropagation();
},
isDefaultPrevented: returnFalse,
isPropagationStopped: returnFalse,
isImmediatePropagationStopped: returnFalse
};
var eventRegex = /^([^.]+)(\.(?:[^.]+))?$/; // regex for matching event strings (e.g. "click.namespace")
var universalNamespace = '.*'; // matches as if no namespace specified and prevents users from unbinding accidentally
var defaults$8 = {
qualifierCompare: function qualifierCompare(q1, q2) {
return q1 === q2;
},
eventMatches: function eventMatches()
/*context, listener, eventObj*/
{
return true;
},
addEventFields: function addEventFields()
/*context, evt*/
{},
callbackContext: function callbackContext(context
/*, listener, eventObj*/
) {
return context;
},
beforeEmit: function beforeEmit()
/* context, listener, eventObj */
{},
afterEmit: function afterEmit()
/* context, listener, eventObj */
{},
bubble: function bubble()
/*context*/
{
return false;
},
parent: function parent()
/*context*/
{
return null;
},
context: null
};
var defaultsKeys = Object.keys(defaults$8);
var emptyOpts = {};
function Emitter() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyOpts;
var context = arguments.length > 1 ? arguments[1] : undefined;
// micro-optimisation vs Object.assign() -- reduces Element instantiation time
for (var i = 0; i < defaultsKeys.length; i++) {
var key = defaultsKeys[i];
this[key] = opts[key] || defaults$8[key];
}
this.context = context || this.context;
this.listeners = [];
this.emitting = 0;
}
var p = Emitter.prototype;
var forEachEvent = function forEachEvent(self, handler, events, qualifier, callback, conf, confOverrides) {
if (fn(qualifier)) {
callback = qualifier;
qualifier = null;
}
if (confOverrides) {
if (conf == null) {
conf = confOverrides;
} else {
conf = extend({}, conf, confOverrides);
}
}
var eventList = array(events) ? events : events.split(/\s+/);
for (var i = 0; i < eventList.length; i++) {
var evt = eventList[i];
if (emptyString(evt)) {
continue;
}
var match = evt.match(eventRegex); // type[.namespace]
if (match) {
var type = match[1];
var namespace = match[2] ? match[2] : null;
var ret = handler(self, evt, type, namespace, qualifier, callback, conf);
if (ret === false) {
break;
} // allow exiting early
}
}
};
var makeEventObj = function makeEventObj(self, obj) {
self.addEventFields(self.context, obj);
return new Event$1(obj.type, obj);
};
var forEachEventObj = function forEachEventObj(self, handler, events) {
if (event(events)) {
handler(self, events);
return;
} else if (plainObject(events)) {
handler(self, makeEventObj(self, events));
return;
}
var eventList = array(events) ? events : events.split(/\s+/);
for (var i = 0; i < eventList.length; i++) {
var evt = eventList[i];
if (emptyString(evt)) {
continue;
}
var match = evt.match(eventRegex); // type[.namespace]
if (match) {
var type = match[1];
var namespace = match[2] ? match[2] : null;
var eventObj = makeEventObj(self, {
type: type,
namespace: namespace,
target: self.context
});
handler(self, eventObj);
}
}
};
p.on = p.addListener = function (events, qualifier, callback, conf, confOverrides) {
forEachEvent(this, function (self, event, type, namespace, qualifier, callback, conf) {
if (fn(callback)) {
self.listeners.push({
event: event,
// full event string
callback: callback,
// callback to run
type: type,
// the event type (e.g. 'click')
namespace: namespace,
// the event namespace (e.g. ".foo")
qualifier: qualifier,
// a restriction on whether to match this emitter
conf: conf // additional configuration
});
}
}, events, qualifier, callback, conf, confOverrides);
return this;
};
p.one = function (events, qualifier, callback, conf) {
return this.on(events, qualifier, callback, conf, {
one: true
});
};
p.removeListener = p.off = function (events, qualifier, callback, conf) {
var _this = this;
if (this.emitting !== 0) {
this.listeners = copyArray$1(this.listeners);
}
var listeners = this.listeners;
var _loop = function _loop(i) {
var listener = listeners[i];
forEachEvent(_this, function (self, event, type, namespace, qualifier, callback
/*, conf*/
) {
if ((listener.type === type || events === '*') && (!namespace && listener.namespace !== '.*' || listener.namespace === namespace) && (!qualifier || self.qualifierCompare(listener.qualifier, qualifier)) && (!callback || listener.callback === callback)) {
listeners.splice(i, 1);
return false;
}
}, events, qualifier, callback, conf);
};
for (var i = listeners.length - 1; i >= 0; i--) {
_loop(i);
}
return this;
};
p.removeAllListeners = function () {
return this.removeListener('*');
};
p.emit = p.trigger = function (events, extraParams, manualCallback) {
var listeners = this.listeners;
var numListenersBeforeEmit = listeners.length;
this.emitting++;
if (!array(extraParams)) {
extraParams = [extraParams];
}
forEachEventObj(this, function (self, eventObj) {
if (manualCallback != null) {
listeners = [{
event: eventObj.event,
type: eventObj.type,
namespace: eventObj.namespace,
callback: manualCallback
}];
numListenersBeforeEmit = listeners.length;
}
var _loop2 = function _loop2(i) {
var listener = listeners[i];
if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self.eventMatches(self.context, listener, eventObj)) {
var args = [eventObj];
if (extraParams != null) {
push(args, extraParams);
}
self.beforeEmit(self.context, listener, eventObj);
if (listener.conf && listener.conf.one) {
self.listeners = self.listeners.filter(function (l) {
return l !== listener;
});
}
var context = self.callbackContext(self.context, listener, eventObj);
var ret = listener.callback.apply(context, args);
self.afterEmit(self.context, listener, eventObj);
if (ret === false) {
eventObj.stopPropagation();
eventObj.preventDefault();
}
} // if listener matches
};
for (var i = 0; i < numListenersBeforeEmit; i++) {
_loop2(i);
} // for listener
if (self.bubble(self.context) && !eventObj.isPropagationStopped()) {
self.parent(self.context).emit(eventObj, extraParams);
}
}, events);
this.emitting--;
return this;
};
var emitterOptions = {
qualifierCompare: function qualifierCompare(selector1, selector2) {
if (selector1 == null || selector2 == null) {
return selector1 == null && selector2 == null;
} else {
return selector1.sameText(selector2);
}
},
eventMatches: function eventMatches(ele, listener, eventObj) {
var selector = listener.qualifier;
if (selector != null) {
return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target);
}
return true;
},
addEventFields: function addEventFields(ele, evt) {
evt.cy = ele.cy();
evt.target = ele;
},
callbackContext: function callbackContext(ele, listener, eventObj) {
return listener.qualifier != null ? eventObj.target : ele;
},
beforeEmit: function beforeEmit(context, listener
/*, eventObj*/
) {
if (listener.conf && listener.conf.once) {
listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback);
}
},
bubble: function bubble() {
return true;
},
parent: function parent(ele) {
return ele.isChild() ? ele.parent() : ele.cy();
}
};
var argSelector = function argSelector(arg) {
if (string(arg)) {
return new Selector(arg);
} else {
return arg;
}
};
var elesfn$m = {
createEmitter: function createEmitter() {
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var _p = ele._private;
if (!_p.emitter) {
_p.emitter = new Emitter(emitterOptions, ele);
}
}
return this;
},
emitter: function emitter() {
return this._private.emitter;
},
on: function on(events, selector, callback) {
var argSel = argSelector(selector);
for (var i = 0; i < this.length; i++) {
var ele = this[i];
ele.emitter().on(events, argSel, callback);
}
return this;
},
removeListener: function removeListener(events, selector, callback) {
var argSel = argSelector(selector);
for (var i = 0; i < this.length; i++) {
var ele = this[i];
ele.emitter().removeListener(events, argSel, callback);
}
return this;
},
removeAllListeners: function removeAllListeners() {
for (var i = 0; i < this.length; i++) {
var ele = this[i];
ele.emitter().removeAllListeners();
}
return this;
},
one: function one(events, selector, callback) {
var argSel = argSelector(selector);
for (var i = 0; i < this.length; i++) {
var ele = this[i];
ele.emitter().one(events, argSel, callback);
}
return this;
},
once: function once(events, selector, callback) {
var argSel = argSelector(selector);
for (var i = 0; i < this.length; i++) {
var ele = this[i];
ele.emitter().on(events, argSel, callback, {
once: true,
onceCollection: this
});
}
},
emit: function emit(events, extraParams) {
for (var i = 0; i < this.length; i++) {
var ele = this[i];
ele.emitter().emit(events, extraParams);
}
return this;
},
emitAndNotify: function emitAndNotify(event, extraParams) {
// for internal use only
if (this.length === 0) {
return;
} // empty collections don't need to notify anything
// notify renderer
this.cy().notify(event, this);
this.emit(event, extraParams);
return this;
}
};
define$3.eventAliasesOn(elesfn$m);
var elesfn$n = {
nodes: function nodes(selector) {
return this.filter(function (ele) {
return ele.isNode();
}).filter(selector);
},
edges: function edges(selector) {
return this.filter(function (ele) {
return ele.isEdge();
}).filter(selector);
},
// internal helper to get nodes and edges as separate collections with single iteration over elements
byGroup: function byGroup() {
var nodes = this.spawn();
var edges = this.spawn();
for (var i = 0; i < this.length; i++) {
var ele = this[i];
if (ele.isNode()) {
nodes.push(ele);
} else {
edges.push(ele);
}
}
return {
nodes: nodes,
edges: edges
};
},
filter: function filter(_filter, thisArg) {
if (_filter === undefined) {
// check this first b/c it's the most common/performant case
return this;
} else if (string(_filter) || elementOrCollection(_filter)) {
return new Selector(_filter).filter(this);
} else if (fn(_filter)) {
var filterEles = this.spawn();
var eles = this;
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var include = thisArg ? _filter.apply(thisArg, [ele, i, eles]) : _filter(ele, i, eles);
if (include) {
filterEles.push(ele);
}
}
return filterEles;
}
return this.spawn(); // if not handled by above, give 'em an empty collection
},
not: function not(toRemove) {
if (!toRemove) {
return this;
} else {
if (string(toRemove)) {
toRemove = this.filter(toRemove);
}
var elements = this.spawn();
for (var i = 0; i < this.length; i++) {
var element = this[i];
var remove = toRemove.has(element);
if (!remove) {
elements.push(element);
}
}
return elements;
}
},
absoluteComplement: function absoluteComplement() {
var cy = this.cy();
return cy.mutableElements().not(this);
},
intersect: function intersect(other) {
// if a selector is specified, then filter by it instead
if (string(other)) {
var selector = other;
return this.filter(selector);
}
var elements = this.spawn();
var col1 = this;
var col2 = other;
var col1Smaller = this.length < other.length;
var colS = col1Smaller ? col1 : col2;
var colL = col1Smaller ? col2 : col1;
for (var i = 0; i < colS.length; i++) {
var ele = colS[i];
if (colL.has(ele)) {
elements.push(ele);
}
}
return elements;
},
xor: function xor(other) {
var cy = this._private.cy;
if (string(other)) {
other = cy.$(other);
}
var elements = this.spawn();
var col1 = this;
var col2 = other;
var add = function add(col, other) {
for (var i = 0; i < col.length; i++) {
var ele = col[i];
var id = ele._private.data.id;
var inOther = other.hasElementWithId(id);
if (!inOther) {
elements.push(ele);
}
}
};
add(col1, col2);
add(col2, col1);
return elements;
},
diff: function diff(other) {
var cy = this._private.cy;
if (string(other)) {
other = cy.$(other);
}
var left = this.spawn();
var right = this.spawn();
var both = this.spawn();
var col1 = this;
var col2 = other;
var add = function add(col, other, retEles) {
for (var i = 0; i < col.length; i++) {
var ele = col[i];
var id = ele._private.data.id;
var inOther = other.hasElementWithId(id);
if (inOther) {
both.merge(ele);
} else {
retEles.push(ele);
}
}
};
add(col1, col2, left);
add(col2, col1, right);
return {
left: left,
right: right,
both: both
};
},
add: function add(toAdd) {
var cy = this._private.cy;
if (!toAdd) {
return this;
}
if (string(toAdd)) {
var selector = toAdd;
toAdd = cy.mutableElements().filter(selector);
}
var elements = this.spawnSelf();
for (var i = 0; i < toAdd.length; i++) {
var ele = toAdd[i];
var add = !this.has(ele);
if (add) {
elements.push(ele);
}
}
return elements;
},
// in place merge on calling collection
merge: function merge(toAdd) {
var _p = this._private;
var cy = _p.cy;
if (!toAdd) {
return this;
}
if (toAdd && string(toAdd)) {
var selector = toAdd;
toAdd = cy.mutableElements().filter(selector);
}
var map = _p.map;
for (var i = 0; i < toAdd.length; i++) {
var toAddEle = toAdd[i];
var id = toAddEle._private.data.id;
var add = !map.has(id);
if (add) {
var index = this.length++;
this[index] = toAddEle;
map.set(id, {
ele: toAddEle,
index: index
});
}
}
return this; // chaining
},
unmergeAt: function unmergeAt(i) {
var ele = this[i];
var id = ele.id();
var _p = this._private;
var map = _p.map; // remove ele
this[i] = undefined;
map["delete"](id);
var unmergedLastEle = i === this.length - 1; // replace empty spot with last ele in collection
if (this.length > 1 && !unmergedLastEle) {
var lastEleI = this.length - 1;
var lastEle = this[lastEleI];
var lastEleId = lastEle._private.data.id;
this[lastEleI] = undefined;
this[i] = lastEle;
map.set(lastEleId, {
ele: lastEle,
index: i
});
} // the collection is now 1 ele smaller
this.length--;
return this;
},
// remove single ele in place in calling collection
unmergeOne: function unmergeOne(ele) {
ele = ele[0];
var _p = this._private;
var id = ele._private.data.id;
var map = _p.map;
var entry = map.get(id);
if (!entry) {
return this; // no need to remove
}
var i = entry.index;
this.unmergeAt(i);
return this;
},
// remove eles in place on calling collection
unmerge: function unmerge(toRemove) {
var cy = this._private.cy;
if (!toRemove) {
return this;
}
if (toRemove && string(toRemove)) {
var selector = toRemove;
toRemove = cy.mutableElements().filter(selector);
}
for (var i = 0; i < toRemove.length; i++) {
this.unmergeOne(toRemove[i]);
}
return this; // chaining
},
unmergeBy: function unmergeBy(toRmFn) {
for (var i = this.length - 1; i >= 0; i--) {
var ele = this[i];
if (toRmFn(ele)) {
this.unmergeAt(i);
}
}
return this;
},
map: function map(mapFn, thisArg) {
var arr = [];
var eles = this;
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var ret = thisArg ? mapFn.apply(thisArg, [ele, i, eles]) : mapFn(ele, i, eles);
arr.push(ret);
}
return arr;
},
reduce: function reduce(fn, initialValue) {
var val = initialValue;
var eles = this;
for (var i = 0; i < eles.length; i++) {
val = fn(val, eles[i], i, eles);
}
return val;
},
max: function max(valFn, thisArg) {
var max = -Infinity;
var maxEle;
var eles = this;
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles);
if (val > max) {
max = val;
maxEle = ele;
}
}
return {
value: max,
ele: maxEle
};
},
min: function min(valFn, thisArg) {
var min = Infinity;
var minEle;
var eles = this;
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles);
if (val < min) {
min = val;
minEle = ele;
}
}
return {
value: min,
ele: minEle
};
}
}; // aliases
var fn$5 = elesfn$n;
fn$5['u'] = fn$5['|'] = fn$5['+'] = fn$5.union = fn$5.or = fn$5.add;
fn$5['\\'] = fn$5['!'] = fn$5['-'] = fn$5.difference = fn$5.relativeComplement = fn$5.subtract = fn$5.not;
fn$5['n'] = fn$5['&'] = fn$5['.'] = fn$5.and = fn$5.intersection = fn$5.intersect;
fn$5['^'] = fn$5['(+)'] = fn$5['(-)'] = fn$5.symmetricDifference = fn$5.symdiff = fn$5.xor;
fn$5.fnFilter = fn$5.filterFn = fn$5.stdFilter = fn$5.filter;
fn$5.complement = fn$5.abscomp = fn$5.absoluteComplement;
var elesfn$o = {
isNode: function isNode() {
return this.group() === 'nodes';
},
isEdge: function isEdge() {
return this.group() === 'edges';
},
isLoop: function isLoop() {
return this.isEdge() && this.source()[0] === this.target()[0];
},
isSimple: function isSimple() {
return this.isEdge() && this.source()[0] !== this.target()[0];
},
group: function group() {
var ele = this[0];
if (ele) {
return ele._private.group;
}
}
};
/**
* Elements are drawn in a specific order based on compound depth (low to high), the element type (nodes above edges),
* and z-index (low to high). These styles affect how this applies:
*
* z-compound-depth: May be `bottom | orphan | auto | top`. The first drawn is `bottom`, then `orphan` which is the
* same depth as the root of the compound graph, followed by the default value `auto` which draws in order from
* root to leaves of the compound graph. The last drawn is `top`.
* z-index-compare: May be `auto | manual`. The default value is `auto` which always draws edges under nodes.
* `manual` ignores this convention and draws based on the `z-index` value setting.
* z-index: An integer value that affects the relative draw order of elements. In general, an element with a higher
* `z-index` will be drawn on top of an element with a lower `z-index`.
*/
var zIndexSort = function zIndexSort(a, b) {
var cy = a.cy();
var hasCompoundNodes = cy.hasCompoundNodes();
function getDepth(ele) {
var style = ele.pstyle('z-compound-depth');
if (style.value === 'auto') {
return hasCompoundNodes ? ele.zDepth() : 0;
} else if (style.value === 'bottom') {
return -1;
} else if (style.value === 'top') {
return MAX_INT;
} // 'orphan'
return 0;
}
var depthDiff = getDepth(a) - getDepth(b);
if (depthDiff !== 0) {
return depthDiff;
}
function getEleDepth(ele) {
var style = ele.pstyle('z-index-compare');
if (style.value === 'auto') {
return ele.isNode() ? 1 : 0;
} // 'manual'
return 0;
}
var eleDiff = getEleDepth(a) - getEleDepth(b);
if (eleDiff !== 0) {
return eleDiff;
}
var zDiff = a.pstyle('z-index').value - b.pstyle('z-index').value;
if (zDiff !== 0) {
return zDiff;
} // compare indices in the core (order added to graph w/ last on top)
return a.poolIndex() - b.poolIndex();
};
var elesfn$p = {
forEach: function forEach(fn$1, thisArg) {
if (fn(fn$1)) {
var N = this.length;
for (var i = 0; i < N; i++) {
var ele = this[i];
var ret = thisArg ? fn$1.apply(thisArg, [ele, i, this]) : fn$1(ele, i, this);
if (ret === false) {
break;
} // exit each early on return false
}
}
return this;
},
toArray: function toArray() {
var array = [];
for (var i = 0; i < this.length; i++) {
array.push(this[i]);
}
return array;
},
slice: function slice(start, end) {
var array = [];
var thisSize = this.length;
if (end == null) {
end = thisSize;
}
if (start == null) {
start = 0;
}
if (start < 0) {
start = thisSize + start;
}
if (end < 0) {
end = thisSize + end;
}
for (var i = start; i >= 0 && i < end && i < thisSize; i++) {
array.push(this[i]);
}
return this.spawn(array);
},
size: function size() {
return this.length;
},
eq: function eq(i) {
return this[i] || this.spawn();
},
first: function first() {
return this[0] || this.spawn();
},
last: function last() {
return this[this.length - 1] || this.spawn();
},
empty: function empty() {
return this.length === 0;
},
nonempty: function nonempty() {
return !this.empty();
},
sort: function sort(sortFn) {
if (!fn(sortFn)) {
return this;
}
var sorted = this.toArray().sort(sortFn);
return this.spawn(sorted);
},
sortByZIndex: function sortByZIndex() {
return this.sort(zIndexSort);
},
zDepth: function zDepth() {
var ele = this[0];
if (!ele) {
return undefined;
} // let cy = ele.cy();
var _p = ele._private;
var group = _p.group;
if (group === 'nodes') {
var depth = _p.data.parent ? ele.parents().size() : 0;
if (!ele.isParent()) {
return MAX_INT - 1; // childless nodes always on top
}
return depth;
} else {
var src = _p.source;
var tgt = _p.target;
var srcDepth = src.zDepth();
var tgtDepth = tgt.zDepth();
return Math.max(srcDepth, tgtDepth, 0); // depth of deepest parent
}
}
};
elesfn$p.each = elesfn$p.forEach;
var defineSymbolIterator = function defineSymbolIterator() {
var typeofUndef = "undefined" ;
var isIteratorSupported = (typeof Symbol === "undefined" ? "undefined" : _typeof(Symbol)) != typeofUndef && _typeof(Symbol.iterator) != typeofUndef; // eslint-disable-line no-undef
if (isIteratorSupported) {
elesfn$p[Symbol.iterator] = function () {
var _this = this;
// eslint-disable-line no-undef
var entry = {
value: undefined,
done: false
};
var i = 0;
var length = this.length;
return _defineProperty$1({
next: function next() {
if (i < length) {
entry.value = _this[i++];
} else {
entry.value = undefined;
entry.done = true;
}
return entry;
}
}, Symbol.iterator, function () {
// eslint-disable-line no-undef
return this;
});
};
}
};
defineSymbolIterator();
var getLayoutDimensionOptions = defaults$1({
nodeDimensionsIncludeLabels: false
});
var elesfn$q = {
// Calculates and returns node dimensions { x, y } based on options given
layoutDimensions: function layoutDimensions(options) {
options = getLayoutDimensionOptions(options);
var dims;
if (!this.takesUpSpace()) {
dims = {
w: 0,
h: 0
};
} else if (options.nodeDimensionsIncludeLabels) {
var bbDim = this.boundingBox();
dims = {
w: bbDim.w,
h: bbDim.h
};
} else {
dims = {
w: this.outerWidth(),
h: this.outerHeight()
};
} // sanitise the dimensions for external layouts (avoid division by zero)
if (dims.w === 0 || dims.h === 0) {
dims.w = dims.h = 1;
}
return dims;
},
// using standard layout options, apply position function (w/ or w/o animation)
layoutPositions: function layoutPositions(layout, options, fn) {
var nodes = this.nodes().filter(function (n) {
return !n.isParent();
});
var cy = this.cy();
var layoutEles = options.eles; // nodes & edges
var getMemoizeKey = function getMemoizeKey(node) {
return node.id();
};
var fnMem = memoize$1(fn, getMemoizeKey); // memoized version of position function
layout.emit({
type: 'layoutstart',
layout: layout
});
layout.animations = [];
var calculateSpacing = function calculateSpacing(spacing, nodesBb, pos) {
var center = {
x: nodesBb.x1 + nodesBb.w / 2,
y: nodesBb.y1 + nodesBb.h / 2
};
var spacingVector = {
// scale from center of bounding box (not necessarily 0,0)
x: (pos.x - center.x) * spacing,
y: (pos.y - center.y) * spacing
};
return {
x: center.x + spacingVector.x,
y: center.y + spacingVector.y
};
};
var useSpacingFactor = options.spacingFactor && options.spacingFactor !== 1;
var spacingBb = function spacingBb() {
if (!useSpacingFactor) {
return null;
}
var bb = makeBoundingBox();
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
var pos = fnMem(node, i);
expandBoundingBoxByPoint(bb, pos.x, pos.y);
}
return bb;
};
var bb = spacingBb();
var getFinalPos = memoize$1(function (node, i) {
var newPos = fnMem(node, i);
if (useSpacingFactor) {
var spacing = Math.abs(options.spacingFactor);
newPos = calculateSpacing(spacing, bb, newPos);
}
if (options.transform != null) {
newPos = options.transform(node, newPos);
}
return newPos;
}, getMemoizeKey);
if (options.animate) {
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
var newPos = getFinalPos(node, i);
var animateNode = options.animateFilter == null || options.animateFilter(node, i);
if (animateNode) {
var ani = node.animation({
position: newPos,
duration: options.animationDuration,
easing: options.animationEasing
});
layout.animations.push(ani);
} else {
node.position(newPos);
}
}
if (options.fit) {
var fitAni = cy.animation({
fit: {
boundingBox: layoutEles.boundingBoxAt(getFinalPos),
padding: options.padding
},
duration: options.animationDuration,
easing: options.animationEasing
});
layout.animations.push(fitAni);
} else if (options.zoom !== undefined && options.pan !== undefined) {
var zoomPanAni = cy.animation({
zoom: options.zoom,
pan: options.pan,
duration: options.animationDuration,
easing: options.animationEasing
});
layout.animations.push(zoomPanAni);
}
layout.animations.forEach(function (ani) {
return ani.play();
});
layout.one('layoutready', options.ready);
layout.emit({
type: 'layoutready',
layout: layout
});
Promise$1$1.all(layout.animations.map(function (ani) {
return ani.promise();
})).then(function () {
layout.one('layoutstop', options.stop);
layout.emit({
type: 'layoutstop',
layout: layout
});
});
} else {
nodes.positions(getFinalPos);
if (options.fit) {
cy.fit(options.eles, options.padding);
}
if (options.zoom != null) {
cy.zoom(options.zoom);
}
if (options.pan) {
cy.pan(options.pan);
}
layout.one('layoutready', options.ready);
layout.emit({
type: 'layoutready',
layout: layout
});
layout.one('layoutstop', options.stop);
layout.emit({
type: 'layoutstop',
layout: layout
});
}
return this; // chaining
},
layout: function layout(options) {
var cy = this.cy();
return cy.makeLayout(extend({}, options, {
eles: this
}));
}
}; // aliases:
elesfn$q.createLayout = elesfn$q.makeLayout = elesfn$q.layout;
function styleCache(key, fn, ele) {
var _p = ele._private;
var cache = _p.styleCache = _p.styleCache || [];
var val;
if ((val = cache[key]) != null) {
return val;
} else {
val = cache[key] = fn(ele);
return val;
}
}
function cacheStyleFunction(key, fn) {
key = hashString(key);
return function cachedStyleFunction(ele) {
return styleCache(key, fn, ele);
};
}
function cachePrototypeStyleFunction(key, fn) {
key = hashString(key);
var selfFn = function selfFn(ele) {
return fn.call(ele);
};
return function cachedPrototypeStyleFunction() {
var ele = this[0];
if (ele) {
return styleCache(key, selfFn, ele);
}
};
}
var elesfn$r = {
recalculateRenderedStyle: function recalculateRenderedStyle(useCache) {
var cy = this.cy();
var renderer = cy.renderer();
var styleEnabled = cy.styleEnabled();
if (renderer && styleEnabled) {
renderer.recalculateRenderedStyle(this, useCache);
}
return this;
},
dirtyStyleCache: function dirtyStyleCache() {
var cy = this.cy();
var dirty = function dirty(ele) {
return ele._private.styleCache = null;
};
if (cy.hasCompoundNodes()) {
var eles;
eles = this.spawnSelf().merge(this.descendants()).merge(this.parents());
eles.merge(eles.connectedEdges());
eles.forEach(dirty);
} else {
this.forEach(function (ele) {
dirty(ele);
ele.connectedEdges().forEach(dirty);
});
}
return this;
},
// fully updates (recalculates) the style for the elements
updateStyle: function updateStyle(notifyRenderer) {
var cy = this._private.cy;
if (!cy.styleEnabled()) {
return this;
}
if (cy.batching()) {
var bEles = cy._private.batchStyleEles;
bEles.merge(this);
return this; // chaining and exit early when batching
}
var hasCompounds = cy.hasCompoundNodes();
var updatedEles = this;
notifyRenderer = notifyRenderer || notifyRenderer === undefined ? true : false;
if (hasCompounds) {
// then add everything up and down for compound selector checks
updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents());
} // let changedEles = style.apply( updatedEles );
var changedEles = updatedEles;
if (notifyRenderer) {
changedEles.emitAndNotify('style'); // let renderer know we changed style
} else {
changedEles.emit('style'); // just fire the event
}
updatedEles.forEach(function (ele) {
return ele._private.styleDirty = true;
});
return this; // chaining
},
// private: clears dirty flag and recalculates style
cleanStyle: function cleanStyle() {
var cy = this.cy();
if (!cy.styleEnabled()) {
return;
}
for (var i = 0; i < this.length; i++) {
var ele = this[i];
if (ele._private.styleDirty) {
// n.b. this flag should be set before apply() to avoid potential infinite recursion
ele._private.styleDirty = false;
cy.style().apply(ele);
}
}
},
// get the internal parsed style object for the specified property
parsedStyle: function parsedStyle(property) {
var includeNonDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var ele = this[0];
var cy = ele.cy();
if (!cy.styleEnabled()) {
return;
}
if (ele) {
this.cleanStyle();
var overriddenStyle = ele._private.style[property];
if (overriddenStyle != null) {
return overriddenStyle;
} else if (includeNonDefault) {
return cy.style().getDefaultProperty(property);
} else {
return null;
}
}
},
numericStyle: function numericStyle(property) {
var ele = this[0];
if (!ele.cy().styleEnabled()) {
return;
}
if (ele) {
var pstyle = ele.pstyle(property);
return pstyle.pfValue !== undefined ? pstyle.pfValue : pstyle.value;
}
},
numericStyleUnits: function numericStyleUnits(property) {
var ele = this[0];
if (!ele.cy().styleEnabled()) {
return;
}
if (ele) {
return ele.pstyle(property).units;
}
},
// get the specified css property as a rendered value (i.e. on-screen value)
// or get the whole rendered style if no property specified (NB doesn't allow setting)
renderedStyle: function renderedStyle(property) {
var cy = this.cy();
if (!cy.styleEnabled()) {
return this;
}
var ele = this[0];
if (ele) {
return cy.style().getRenderedStyle(ele, property);
}
},
// read the calculated css style of the element or override the style (via a bypass)
style: function style(name, value) {
var cy = this.cy();
if (!cy.styleEnabled()) {
return this;
}
var updateTransitions = false;
var style = cy.style();
if (plainObject(name)) {
// then extend the bypass
var props = name;
style.applyBypass(this, props, updateTransitions);
this.emitAndNotify('style'); // let the renderer know we've updated style
} else if (string(name)) {
if (value === undefined) {
// then get the property from the style
var ele = this[0];
if (ele) {
return style.getStylePropertyValue(ele, name);
} else {
// empty collection => can't get any value
return;
}
} else {
// then set the bypass with the property value
style.applyBypass(this, name, value, updateTransitions);
this.emitAndNotify('style'); // let the renderer know we've updated style
}
} else if (name === undefined) {
var _ele = this[0];
if (_ele) {
return style.getRawStyle(_ele);
} else {
// empty collection => can't get any value
return;
}
}
return this; // chaining
},
removeStyle: function removeStyle(names) {
var cy = this.cy();
if (!cy.styleEnabled()) {
return this;
}
var updateTransitions = false;
var style = cy.style();
var eles = this;
if (names === undefined) {
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
style.removeAllBypasses(ele, updateTransitions);
}
} else {
names = names.split(/\s+/);
for (var _i = 0; _i < eles.length; _i++) {
var _ele2 = eles[_i];
style.removeBypasses(_ele2, names, updateTransitions);
}
}
this.emitAndNotify('style'); // let the renderer know we've updated style
return this; // chaining
},
show: function show() {
this.css('display', 'element');
return this; // chaining
},
hide: function hide() {
this.css('display', 'none');
return this; // chaining
},
effectiveOpacity: function effectiveOpacity() {
var cy = this.cy();
if (!cy.styleEnabled()) {
return 1;
}
var hasCompoundNodes = cy.hasCompoundNodes();
var ele = this[0];
if (ele) {
var _p = ele._private;
var parentOpacity = ele.pstyle('opacity').value;
if (!hasCompoundNodes) {
return parentOpacity;
}
var parents = !_p.data.parent ? null : ele.parents();
if (parents) {
for (var i = 0; i < parents.length; i++) {
var parent = parents[i];
var opacity = parent.pstyle('opacity').value;
parentOpacity = opacity * parentOpacity;
}
}
return parentOpacity;
}
},
transparent: function transparent() {
var cy = this.cy();
if (!cy.styleEnabled()) {
return false;
}
var ele = this[0];
var hasCompoundNodes = ele.cy().hasCompoundNodes();
if (ele) {
if (!hasCompoundNodes) {
return ele.pstyle('opacity').value === 0;
} else {
return ele.effectiveOpacity() === 0;
}
}
},
backgrounding: function backgrounding() {
var cy = this.cy();
if (!cy.styleEnabled()) {
return false;
}
var ele = this[0];
return ele._private.backgrounding ? true : false;
}
};
function checkCompound(ele, parentOk) {
var _p = ele._private;
var parents = _p.data.parent ? ele.parents() : null;
if (parents) {
for (var i = 0; i < parents.length; i++) {
var parent = parents[i];
if (!parentOk(parent)) {
return false;
}
}
}
return true;
}
function defineDerivedStateFunction(specs) {
var ok = specs.ok;
var edgeOkViaNode = specs.edgeOkViaNode || specs.ok;
var parentOk = specs.parentOk || specs.ok;
return function () {
var cy = this.cy();
if (!cy.styleEnabled()) {
return true;
}
var ele = this[0];
var hasCompoundNodes = cy.hasCompoundNodes();
if (ele) {
var _p = ele._private;
if (!ok(ele)) {
return false;
}
if (ele.isNode()) {
return !hasCompoundNodes || checkCompound(ele, parentOk);
} else {
var src = _p.source;
var tgt = _p.target;
return edgeOkViaNode(src) && (!hasCompoundNodes || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes || checkCompound(tgt, edgeOkViaNode)));
}
}
};
}
var eleTakesUpSpace = cacheStyleFunction('eleTakesUpSpace', function (ele) {
return ele.pstyle('display').value === 'element' && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true);
});
elesfn$r.takesUpSpace = cachePrototypeStyleFunction('takesUpSpace', defineDerivedStateFunction({
ok: eleTakesUpSpace
}));
var eleInteractive = cacheStyleFunction('eleInteractive', function (ele) {
return ele.pstyle('events').value === 'yes' && ele.pstyle('visibility').value === 'visible' && eleTakesUpSpace(ele);
});
var parentInteractive = cacheStyleFunction('parentInteractive', function (parent) {
return parent.pstyle('visibility').value === 'visible' && eleTakesUpSpace(parent);
});
elesfn$r.interactive = cachePrototypeStyleFunction('interactive', defineDerivedStateFunction({
ok: eleInteractive,
parentOk: parentInteractive,
edgeOkViaNode: eleTakesUpSpace
}));
elesfn$r.noninteractive = function () {
var ele = this[0];
if (ele) {
return !ele.interactive();
}
};
var eleVisible = cacheStyleFunction('eleVisible', function (ele) {
return ele.pstyle('visibility').value === 'visible' && ele.pstyle('opacity').pfValue !== 0 && eleTakesUpSpace(ele);
});
var edgeVisibleViaNode = eleTakesUpSpace;
elesfn$r.visible = cachePrototypeStyleFunction('visible', defineDerivedStateFunction({
ok: eleVisible,
edgeOkViaNode: edgeVisibleViaNode
}));
elesfn$r.hidden = function () {
var ele = this[0];
if (ele) {
return !ele.visible();
}
};
elesfn$r.isBundledBezier = cachePrototypeStyleFunction('isBundledBezier', function () {
if (!this.cy().styleEnabled()) {
return false;
}
return !this.removed() && this.pstyle('curve-style').value === 'bezier' && this.takesUpSpace();
});
elesfn$r.bypass = elesfn$r.css = elesfn$r.style;
elesfn$r.renderedCss = elesfn$r.renderedStyle;
elesfn$r.removeBypass = elesfn$r.removeCss = elesfn$r.removeStyle;
elesfn$r.pstyle = elesfn$r.parsedStyle;
var elesfn$s = {};
function defineSwitchFunction(params) {
return function () {
var args = arguments;
var changedEles = []; // e.g. cy.nodes().select( data, handler )
if (args.length === 2) {
var data = args[0];
var handler = args[1];
this.on(params.event, data, handler);
} // e.g. cy.nodes().select( handler )
else if (args.length === 1 && fn(args[0])) {
var _handler = args[0];
this.on(params.event, _handler);
} // e.g. cy.nodes().select()
// e.g. (private) cy.nodes().select(['tapselect'])
else if (args.length === 0 || args.length === 1 && array(args[0])) {
var addlEvents = args.length === 1 ? args[0] : null;
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var able = !params.ableField || ele._private[params.ableField];
var changed = ele._private[params.field] != params.value;
if (params.overrideAble) {
var overrideAble = params.overrideAble(ele);
if (overrideAble !== undefined) {
able = overrideAble;
if (!overrideAble) {
return this;
} // to save cycles assume not able for all on override
}
}
if (able) {
ele._private[params.field] = params.value;
if (changed) {
changedEles.push(ele);
}
}
}
var changedColl = this.spawn(changedEles);
changedColl.updateStyle(); // change of state => possible change of style
changedColl.emit(params.event);
if (addlEvents) {
changedColl.emit(addlEvents);
}
}
return this;
};
}
function defineSwitchSet(params) {
elesfn$s[params.field] = function () {
var ele = this[0];
if (ele) {
if (params.overrideField) {
var val = params.overrideField(ele);
if (val !== undefined) {
return val;
}
}
return ele._private[params.field];
}
};
elesfn$s[params.on] = defineSwitchFunction({
event: params.on,
field: params.field,
ableField: params.ableField,
overrideAble: params.overrideAble,
value: true
});
elesfn$s[params.off] = defineSwitchFunction({
event: params.off,
field: params.field,
ableField: params.ableField,
overrideAble: params.overrideAble,
value: false
});
}
defineSwitchSet({
field: 'locked',
overrideField: function overrideField(ele) {
return ele.cy().autolock() ? true : undefined;
},
on: 'lock',
off: 'unlock'
});
defineSwitchSet({
field: 'grabbable',
overrideField: function overrideField(ele) {
return ele.cy().autoungrabify() || ele.pannable() ? false : undefined;
},
on: 'grabify',
off: 'ungrabify'
});
defineSwitchSet({
field: 'selected',
ableField: 'selectable',
overrideAble: function overrideAble(ele) {
return ele.cy().autounselectify() ? false : undefined;
},
on: 'select',
off: 'unselect'
});
defineSwitchSet({
field: 'selectable',
overrideField: function overrideField(ele) {
return ele.cy().autounselectify() ? false : undefined;
},
on: 'selectify',
off: 'unselectify'
});
elesfn$s.deselect = elesfn$s.unselect;
elesfn$s.grabbed = function () {
var ele = this[0];
if (ele) {
return ele._private.grabbed;
}
};
defineSwitchSet({
field: 'active',
on: 'activate',
off: 'unactivate'
});
defineSwitchSet({
field: 'pannable',
on: 'panify',
off: 'unpanify'
});
elesfn$s.inactive = function () {
var ele = this[0];
if (ele) {
return !ele._private.active;
}
};
var elesfn$t = {}; // DAG functions
////////////////
var defineDagExtremity = function defineDagExtremity(params) {
return function dagExtremityImpl(selector) {
var eles = this;
var ret = [];
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
if (!ele.isNode()) {
continue;
}
var disqualified = false;
var edges = ele.connectedEdges();
for (var j = 0; j < edges.length; j++) {
var edge = edges[j];
var src = edge.source();
var tgt = edge.target();
if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) {
disqualified = true;
break;
}
}
if (!disqualified) {
ret.push(ele);
}
}
return this.spawn(ret, true).filter(selector);
};
};
var defineDagOneHop = function defineDagOneHop(params) {
return function (selector) {
var eles = this;
var oEles = [];
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
if (!ele.isNode()) {
continue;
}
var edges = ele.connectedEdges();
for (var j = 0; j < edges.length; j++) {
var edge = edges[j];
var src = edge.source();
var tgt = edge.target();
if (params.outgoing && src === ele) {
oEles.push(edge);
oEles.push(tgt);
} else if (params.incoming && tgt === ele) {
oEles.push(edge);
oEles.push(src);
}
}
}
return this.spawn(oEles, true).filter(selector);
};
};
var defineDagAllHops = function defineDagAllHops(params) {
return function (selector) {
var eles = this;
var sEles = [];
var sElesIds = {};
for (;;) {
var next = params.outgoing ? eles.outgoers() : eles.incomers();
if (next.length === 0) {
break;
} // done if none left
var newNext = false;
for (var i = 0; i < next.length; i++) {
var n = next[i];
var nid = n.id();
if (!sElesIds[nid]) {
sElesIds[nid] = true;
sEles.push(n);
newNext = true;
}
}
if (!newNext) {
break;
} // done if touched all outgoers already
eles = next;
}
return this.spawn(sEles, true).filter(selector);
};
};
elesfn$t.clearTraversalCache = function () {
for (var i = 0; i < this.length; i++) {
this[i]._private.traversalCache = null;
}
};
extend(elesfn$t, {
// get the root nodes in the DAG
roots: defineDagExtremity({
noIncomingEdges: true
}),
// get the leaf nodes in the DAG
leaves: defineDagExtremity({
noOutgoingEdges: true
}),
// normally called children in graph theory
// these nodes =edges=> outgoing nodes
outgoers: cache(defineDagOneHop({
outgoing: true
}), 'outgoers'),
// aka DAG descendants
successors: defineDagAllHops({
outgoing: true
}),
// normally called parents in graph theory
// these nodes <=edges= incoming nodes
incomers: cache(defineDagOneHop({
incoming: true
}), 'incomers'),
// aka DAG ancestors
predecessors: defineDagAllHops({
incoming: true
})
}); // Neighbourhood functions
//////////////////////////
extend(elesfn$t, {
neighborhood: cache(function (selector) {
var elements = [];
var nodes = this.nodes();
for (var i = 0; i < nodes.length; i++) {
// for all nodes
var node = nodes[i];
var connectedEdges = node.connectedEdges(); // for each connected edge, add the edge and the other node
for (var j = 0; j < connectedEdges.length; j++) {
var edge = connectedEdges[j];
var src = edge.source();
var tgt = edge.target();
var otherNode = node === src ? tgt : src; // need check in case of loop
if (otherNode.length > 0) {
elements.push(otherNode[0]); // add node 1 hop away
} // add connected edge
elements.push(edge[0]);
}
}
return this.spawn(elements, true).filter(selector);
}, 'neighborhood'),
closedNeighborhood: function closedNeighborhood(selector) {
return this.neighborhood().add(this).filter(selector);
},
openNeighborhood: function openNeighborhood(selector) {
return this.neighborhood(selector);
}
}); // aliases
elesfn$t.neighbourhood = elesfn$t.neighborhood;
elesfn$t.closedNeighbourhood = elesfn$t.closedNeighborhood;
elesfn$t.openNeighbourhood = elesfn$t.openNeighborhood; // Edge functions
/////////////////
extend(elesfn$t, {
source: cache(function sourceImpl(selector) {
var ele = this[0];
var src;
if (ele) {
src = ele._private.source || ele.cy().collection();
}
return src && selector ? src.filter(selector) : src;
}, 'source'),
target: cache(function targetImpl(selector) {
var ele = this[0];
var tgt;
if (ele) {
tgt = ele._private.target || ele.cy().collection();
}
return tgt && selector ? tgt.filter(selector) : tgt;
}, 'target'),
sources: defineSourceFunction({
attr: 'source'
}),
targets: defineSourceFunction({
attr: 'target'
})
});
function defineSourceFunction(params) {
return function sourceImpl(selector) {
var sources = [];
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var src = ele._private[params.attr];
if (src) {
sources.push(src);
}
}
return this.spawn(sources, true).filter(selector);
};
}
extend(elesfn$t, {
edgesWith: cache(defineEdgesWithFunction(), 'edgesWith'),
edgesTo: cache(defineEdgesWithFunction({
thisIsSrc: true
}), 'edgesTo')
});
function defineEdgesWithFunction(params) {
return function edgesWithImpl(otherNodes) {
var elements = [];
var cy = this._private.cy;
var p = params || {}; // get elements if a selector is specified
if (string(otherNodes)) {
otherNodes = cy.$(otherNodes);
}
for (var h = 0; h < otherNodes.length; h++) {
var edges = otherNodes[h]._private.edges;
for (var i = 0; i < edges.length; i++) {
var edge = edges[i];
var edgeData = edge._private.data;
var thisToOther = this.hasElementWithId(edgeData.source) && otherNodes.hasElementWithId(edgeData.target);
var otherToThis = otherNodes.hasElementWithId(edgeData.source) && this.hasElementWithId(edgeData.target);
var edgeConnectsThisAndOther = thisToOther || otherToThis;
if (!edgeConnectsThisAndOther) {
continue;
}
if (p.thisIsSrc || p.thisIsTgt) {
if (p.thisIsSrc && !thisToOther) {
continue;
}
if (p.thisIsTgt && !otherToThis) {
continue;
}
}
elements.push(edge);
}
}
return this.spawn(elements, true);
};
}
extend(elesfn$t, {
connectedEdges: cache(function (selector) {
var retEles = [];
var eles = this;
for (var i = 0; i < eles.length; i++) {
var node = eles[i];
if (!node.isNode()) {
continue;
}
var edges = node._private.edges;
for (var j = 0; j < edges.length; j++) {
var edge = edges[j];
retEles.push(edge);
}
}
return this.spawn(retEles, true).filter(selector);
}, 'connectedEdges'),
connectedNodes: cache(function (selector) {
var retEles = [];
var eles = this;
for (var i = 0; i < eles.length; i++) {
var edge = eles[i];
if (!edge.isEdge()) {
continue;
}
retEles.push(edge.source()[0]);
retEles.push(edge.target()[0]);
}
return this.spawn(retEles, true).filter(selector);
}, 'connectedNodes'),
parallelEdges: cache(defineParallelEdgesFunction(), 'parallelEdges'),
codirectedEdges: cache(defineParallelEdgesFunction({
codirected: true
}), 'codirectedEdges')
});
function defineParallelEdgesFunction(params) {
var defaults = {
codirected: false
};
params = extend({}, defaults, params);
return function parallelEdgesImpl(selector) {
// micro-optimised for renderer
var elements = [];
var edges = this.edges();
var p = params; // look at all the edges in the collection
for (var i = 0; i < edges.length; i++) {
var edge1 = edges[i];
var edge1_p = edge1._private;
var src1 = edge1_p.source;
var srcid1 = src1._private.data.id;
var tgtid1 = edge1_p.data.target;
var srcEdges1 = src1._private.edges; // look at edges connected to the src node of this edge
for (var j = 0; j < srcEdges1.length; j++) {
var edge2 = srcEdges1[j];
var edge2data = edge2._private.data;
var tgtid2 = edge2data.target;
var srcid2 = edge2data.source;
var codirected = tgtid2 === tgtid1 && srcid2 === srcid1;
var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2;
if (p.codirected && codirected || !p.codirected && (codirected || oppdirected)) {
elements.push(edge2);
}
}
}
return this.spawn(elements, true).filter(selector);
};
} // Misc functions
/////////////////
extend(elesfn$t, {
components: function components(root) {
var self = this;
var cy = self.cy();
var visited = cy.collection();
var unvisited = root == null ? self.nodes() : root.nodes();
var components = [];
if (root != null && unvisited.empty()) {
// root may contain only edges
unvisited = root.sources(); // doesn't matter which node to use (undirected), so just use the source sides
}
var visitInComponent = function visitInComponent(node, component) {
visited.merge(node);
unvisited.unmerge(node);
component.merge(node);
};
if (unvisited.empty()) {
return self.spawn();
}
var _loop = function _loop() {
// each iteration yields a component
var cmpt = cy.collection();
components.push(cmpt);
var root = unvisited[0];
visitInComponent(root, cmpt);
self.bfs({
directed: false,
roots: root,
visit: function visit(v) {
return visitInComponent(v, cmpt);
}
});
cmpt.forEach(function (node) {
node.connectedEdges().forEach(function (e) {
// connectedEdges() usually cached
if (self.has(e) && cmpt.has(e.source()) && cmpt.has(e.target())) {
// has() is cheap
cmpt.merge(e); // forEach() only considers nodes -- sets N at call time
}
});
});
};
do {
_loop();
} while (unvisited.length > 0);
return components;
},
component: function component() {
var ele = this[0];
return ele.cy().mutableElements().components(ele)[0];
}
});
elesfn$t.componentsOf = elesfn$t.components;
var Collection = function Collection(cy, elements) {
var unique = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (cy === undefined) {
error('A collection must have a reference to the core');
return;
}
var map = new Map$1$1();
var createdElements = false;
if (!elements) {
elements = [];
} else if (elements.length > 0 && plainObject(elements[0]) && !element(elements[0])) {
createdElements = true; // make elements from json and restore all at once later
var eles = [];
var elesIds = new Set$1$1();
for (var i = 0, l = elements.length; i < l; i++) {
var json = elements[i];
if (json.data == null) {
json.data = {};
}
var _data = json.data; // make sure newly created elements have valid ids
if (_data.id == null) {
_data.id = uuid();
} else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) {
continue; // can't create element if prior id already exists
}
var ele = new Element$1(cy, json, false);
eles.push(ele);
elesIds.add(_data.id);
}
elements = eles;
}
this.length = 0;
for (var _i = 0, _l = elements.length; _i < _l; _i++) {
var element$1 = elements[_i][0]; // [0] in case elements is an array of collections, rather than array of elements
if (element$1 == null) {
continue;
}
var id = element$1._private.data.id;
if (!unique || !map.has(id)) {
if (unique) {
map.set(id, {
index: this.length,
ele: element$1
});
}
this[this.length] = element$1;
this.length++;
}
}
this._private = {
eles: this,
cy: cy,
get map() {
if (this.lazyMap == null) {
this.rebuildMap();
}
return this.lazyMap;
},
set map(m) {
this.lazyMap = m;
},
rebuildMap: function rebuildMap() {
var m = this.lazyMap = new Map$1$1();
var eles = this.eles;
for (var _i2 = 0; _i2 < eles.length; _i2++) {
var _ele = eles[_i2];
m.set(_ele.id(), {
index: _i2,
ele: _ele
});
}
}
};
if (unique) {
this._private.map = map;
} // restore the elements if we created them from json
if (createdElements) {
this.restore();
}
}; // Functions
////////////////////////////////////////////////////////////////////////////////////////////////////
// keep the prototypes in sync (an element has the same functions as a collection)
// and use elefn and elesfn as shorthands to the prototypes
var elesfn$u = Element$1.prototype = Collection.prototype = Object.create(Array.prototype);
elesfn$u.instanceString = function () {
return 'collection';
};
elesfn$u.spawn = function (eles, unique) {
return new Collection(this.cy(), eles, unique);
};
elesfn$u.spawnSelf = function () {
return this.spawn(this);
};
elesfn$u.cy = function () {
return this._private.cy;
};
elesfn$u.renderer = function () {
return this._private.cy.renderer();
};
elesfn$u.element = function () {
return this[0];
};
elesfn$u.collection = function () {
if (collection(this)) {
return this;
} else {
// an element
return new Collection(this._private.cy, [this]);
}
};
elesfn$u.unique = function () {
return new Collection(this._private.cy, this, true);
};
elesfn$u.hasElementWithId = function (id) {
id = '' + id; // id must be string
return this._private.map.has(id);
};
elesfn$u.getElementById = function (id) {
id = '' + id; // id must be string
var cy = this._private.cy;
var entry = this._private.map.get(id);
return entry ? entry.ele : new Collection(cy); // get ele or empty collection
};
elesfn$u.$id = elesfn$u.getElementById;
elesfn$u.poolIndex = function () {
var cy = this._private.cy;
var eles = cy._private.elements;
var id = this[0]._private.data.id;
return eles._private.map.get(id).index;
};
elesfn$u.indexOf = function (ele) {
var id = ele[0]._private.data.id;
return this._private.map.get(id).index;
};
elesfn$u.indexOfId = function (id) {
id = '' + id; // id must be string
return this._private.map.get(id).index;
};
elesfn$u.json = function (obj) {
var ele = this.element();
var cy = this.cy();
if (ele == null && obj) {
return this;
} // can't set to no eles
if (ele == null) {
return undefined;
} // can't get from no eles
var p = ele._private;
if (plainObject(obj)) {
// set
cy.startBatch();
if (obj.data) {
ele.data(obj.data);
var _data2 = p.data;
if (ele.isEdge()) {
// source and target are immutable via data()
var move = false;
var spec = {};
var src = obj.data.source;
var tgt = obj.data.target;
if (src != null && src != _data2.source) {
spec.source = '' + src; // id must be string
move = true;
}
if (tgt != null && tgt != _data2.target) {
spec.target = '' + tgt; // id must be string
move = true;
}
if (move) {
ele = ele.move(spec);
}
} else {
// parent is immutable via data()
var newParentValSpecd = 'parent' in obj.data;
var parent = obj.data.parent;
if (newParentValSpecd && (parent != null || _data2.parent != null) && parent != _data2.parent) {
if (parent === undefined) {
// can't set undefined imperatively, so use null
parent = null;
}
if (parent != null) {
parent = '' + parent; // id must be string
}
ele = ele.move({
parent: parent
});
}
}
}
if (obj.position) {
ele.position(obj.position);
} // ignore group -- immutable
var checkSwitch = function checkSwitch(k, trueFnName, falseFnName) {
var obj_k = obj[k];
if (obj_k != null && obj_k !== p[k]) {
if (obj_k) {
ele[trueFnName]();
} else {
ele[falseFnName]();
}
}
};
checkSwitch('removed', 'remove', 'restore');
checkSwitch('selected', 'select', 'unselect');
checkSwitch('selectable', 'selectify', 'unselectify');
checkSwitch('locked', 'lock', 'unlock');
checkSwitch('grabbable', 'grabify', 'ungrabify');
checkSwitch('pannable', 'panify', 'unpanify');
if (obj.classes != null) {
ele.classes(obj.classes);
}
cy.endBatch();
return this;
} else if (obj === undefined) {
// get
var json = {
data: copy(p.data),
position: copy(p.position),
group: p.group,
removed: p.removed,
selected: p.selected,
selectable: p.selectable,
locked: p.locked,
grabbable: p.grabbable,
pannable: p.pannable,
classes: null
};
json.classes = '';
var i = 0;
p.classes.forEach(function (cls) {
return json.classes += i++ === 0 ? cls : ' ' + cls;
});
return json;
}
};
elesfn$u.jsons = function () {
var jsons = [];
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var json = ele.json();
jsons.push(json);
}
return jsons;
};
elesfn$u.clone = function () {
var cy = this.cy();
var elesArr = [];
for (var i = 0; i < this.length; i++) {
var ele = this[i];
var json = ele.json();
var clone = new Element$1(cy, json, false); // NB no restore
elesArr.push(clone);
}
return new Collection(cy, elesArr);
};
elesfn$u.copy = elesfn$u.clone;
elesfn$u.restore = function () {
var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var addToPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var self = this;
var cy = self.cy();
var cy_p = cy._private; // create arrays of nodes and edges, since we need to
// restore the nodes first
var nodes = [];
var edges = [];
var elements;
for (var _i3 = 0, l = self.length; _i3 < l; _i3++) {
var ele = self[_i3];
if (addToPool && !ele.removed()) {
// don't need to handle this ele
continue;
} // keep nodes first in the array and edges after
if (ele.isNode()) {
// put to front of array if node
nodes.push(ele);
} else {
// put to end of array if edge
edges.push(ele);
}
}
elements = nodes.concat(edges);
var i;
var removeFromElements = function removeFromElements() {
elements.splice(i, 1);
i--;
}; // now, restore each element
for (i = 0; i < elements.length; i++) {
var _ele2 = elements[i];
var _private = _ele2._private;
var _data3 = _private.data; // the traversal cache should start fresh when ele is added
_ele2.clearTraversalCache(); // set id and validate
if (!addToPool && !_private.removed) ; else if (_data3.id === undefined) {
_data3.id = uuid();
} else if (number(_data3.id)) {
_data3.id = '' + _data3.id; // now it's a string
} else if (emptyString(_data3.id) || !string(_data3.id)) {
error('Can not create element with invalid string ID `' + _data3.id + '`'); // can't create element if it has empty string as id or non-string id
removeFromElements();
continue;
} else if (cy.hasElementWithId(_data3.id)) {
error('Can not create second element with ID `' + _data3.id + '`'); // can't create element if one already has that id
removeFromElements();
continue;
}
var id = _data3.id; // id is finalised, now let's keep a ref
if (_ele2.isNode()) {
// extra checks for nodes
var pos = _private.position; // make sure the nodes have a defined position
if (pos.x == null) {
pos.x = 0;
}
if (pos.y == null) {
pos.y = 0;
}
}
if (_ele2.isEdge()) {
// extra checks for edges
var edge = _ele2;
var fields = ['source', 'target'];
var fieldsLength = fields.length;
var badSourceOrTarget = false;
for (var j = 0; j < fieldsLength; j++) {
var field = fields[j];
var val = _data3[field];
if (number(val)) {
val = _data3[field] = '' + _data3[field]; // now string
}
if (val == null || val === '') {
// can't create if source or target is not defined properly
error('Can not create edge `' + id + '` with unspecified ' + field);
badSourceOrTarget = true;
} else if (!cy.hasElementWithId(val)) {
// can't create edge if one of its nodes doesn't exist
error('Can not create edge `' + id + '` with nonexistant ' + field + ' `' + val + '`');
badSourceOrTarget = true;
}
}
if (badSourceOrTarget) {
removeFromElements();
continue;
} // can't create this
var src = cy.getElementById(_data3.source);
var tgt = cy.getElementById(_data3.target); // only one edge in node if loop
if (src.same(tgt)) {
src._private.edges.push(edge);
} else {
src._private.edges.push(edge);
tgt._private.edges.push(edge);
}
edge._private.source = src;
edge._private.target = tgt;
} // if is edge
// create mock ids / indexes maps for element so it can be used like collections
_private.map = new Map$1$1();
_private.map.set(id, {
ele: _ele2,
index: 0
});
_private.removed = false;
if (addToPool) {
cy.addToPool(_ele2);
}
} // for each element
// do compound node sanity checks
for (var _i4 = 0; _i4 < nodes.length; _i4++) {
// each node
var node = nodes[_i4];
var _data4 = node._private.data;
if (number(_data4.parent)) {
// then automake string
_data4.parent = '' + _data4.parent;
}
var parentId = _data4.parent;
var specifiedParent = parentId != null;
if (specifiedParent) {
var parent = cy.getElementById(parentId);
if (parent.empty()) {
// non-existant parent; just remove it
_data4.parent = undefined;
} else {
var selfAsParent = false;
var ancestor = parent;
while (!ancestor.empty()) {
if (node.same(ancestor)) {
// mark self as parent and remove from data
selfAsParent = true;
_data4.parent = undefined; // remove parent reference
// exit or we loop forever
break;
}
ancestor = ancestor.parent();
}
if (!selfAsParent) {
// connect with children
parent[0]._private.children.push(node);
node._private.parent = parent[0]; // let the core know we have a compound graph
cy_p.hasCompoundNodes = true;
}
} // else
} // if specified parent
} // for each node
if (elements.length > 0) {
var restored = elements.length === self.length ? self : new Collection(cy, elements);
for (var _i5 = 0; _i5 < restored.length; _i5++) {
var _ele3 = restored[_i5];
if (_ele3.isNode()) {
continue;
} // adding an edge invalidates the traversal caches for the parallel edges
_ele3.parallelEdges().clearTraversalCache(); // adding an edge invalidates the traversal cache for the connected nodes
_ele3.source().clearTraversalCache();
_ele3.target().clearTraversalCache();
}
var toUpdateStyle;
if (cy_p.hasCompoundNodes) {
toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent());
} else {
toUpdateStyle = restored;
}
toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer);
if (notifyRenderer) {
restored.emitAndNotify('add');
} else if (addToPool) {
restored.emit('add');
}
}
return self; // chainability
};
elesfn$u.removed = function () {
var ele = this[0];
return ele && ele._private.removed;
};
elesfn$u.inside = function () {
var ele = this[0];
return ele && !ele._private.removed;
};
elesfn$u.remove = function () {
var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var removeFromPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var self = this;
var elesToRemove = [];
var elesToRemoveIds = {};
var cy = self._private.cy; // add connected edges
function addConnectedEdges(node) {
var edges = node._private.edges;
for (var i = 0; i < edges.length; i++) {
add(edges[i]);
}
} // add descendant nodes
function addChildren(node) {
var children = node._private.children;
for (var i = 0; i < children.length; i++) {
add(children[i]);
}
}
function add(ele) {
var alreadyAdded = elesToRemoveIds[ele.id()];
if (removeFromPool && ele.removed() || alreadyAdded) {
return;
} else {
elesToRemoveIds[ele.id()] = true;
}
if (ele.isNode()) {
elesToRemove.push(ele); // nodes are removed last
addConnectedEdges(ele);
addChildren(ele);
} else {
elesToRemove.unshift(ele); // edges are removed first
}
} // make the list of elements to remove
// (may be removing more than specified due to connected edges etc)
for (var i = 0, l = self.length; i < l; i++) {
var ele = self[i];
add(ele);
}
function removeEdgeRef(node, edge) {
var connectedEdges = node._private.edges;
removeFromArray(connectedEdges, edge); // removing an edges invalidates the traversal cache for its nodes
node.clearTraversalCache();
}
function removeParallelRef(pllEdge) {
// removing an edge invalidates the traversal caches for the parallel edges
pllEdge.clearTraversalCache();
}
var alteredParents = [];
alteredParents.ids = {};
function removeChildRef(parent, ele) {
ele = ele[0];
parent = parent[0];
var children = parent._private.children;
var pid = parent.id();
removeFromArray(children, ele); // remove parent => child ref
ele._private.parent = null; // remove child => parent ref
if (!alteredParents.ids[pid]) {
alteredParents.ids[pid] = true;
alteredParents.push(parent);
}
}
self.dirtyCompoundBoundsCache();
if (removeFromPool) {
cy.removeFromPool(elesToRemove); // remove from core pool
}
for (var _i6 = 0; _i6 < elesToRemove.length; _i6++) {
var _ele4 = elesToRemove[_i6];
if (_ele4.isEdge()) {
// remove references to this edge in its connected nodes
var src = _ele4.source()[0];
var tgt = _ele4.target()[0];
removeEdgeRef(src, _ele4);
removeEdgeRef(tgt, _ele4);
var pllEdges = _ele4.parallelEdges();
for (var j = 0; j < pllEdges.length; j++) {
var pllEdge = pllEdges[j];
removeParallelRef(pllEdge);
if (pllEdge.isBundledBezier()) {
pllEdge.dirtyBoundingBoxCache();
}
}
} else {
// remove reference to parent
var parent = _ele4.parent();
if (parent.length !== 0) {
removeChildRef(parent, _ele4);
}
}
if (removeFromPool) {
// mark as removed
_ele4._private.removed = true;
}
} // check to see if we have a compound graph or not
var elesStillInside = cy._private.elements;
cy._private.hasCompoundNodes = false;
for (var _i7 = 0; _i7 < elesStillInside.length; _i7++) {
var _ele5 = elesStillInside[_i7];
if (_ele5.isParent()) {
cy._private.hasCompoundNodes = true;
break;
}
}
var removedElements = new Collection(this.cy(), elesToRemove);
if (removedElements.size() > 0) {
// must manually notify since trigger won't do this automatically once removed
if (notifyRenderer) {
removedElements.emitAndNotify('remove');
} else if (removeFromPool) {
removedElements.emit('remove');
}
} // the parents who were modified by the removal need their style updated
for (var _i8 = 0; _i8 < alteredParents.length; _i8++) {
var _ele6 = alteredParents[_i8];
if (!removeFromPool || !_ele6.removed()) {
_ele6.updateStyle();
}
}
return removedElements;
};
elesfn$u.move = function (struct) {
var cy = this._private.cy;
var eles = this; // just clean up refs, caches, etc. in the same way as when removing and then restoring
// (our calls to remove/restore do not remove from the graph or make events)
var notifyRenderer = false;
var modifyPool = false;
var toString = function toString(id) {
return id == null ? id : '' + id;
}; // id must be string
if (struct.source !== undefined || struct.target !== undefined) {
var srcId = toString(struct.source);
var tgtId = toString(struct.target);
var srcExists = srcId != null && cy.hasElementWithId(srcId);
var tgtExists = tgtId != null && cy.hasElementWithId(tgtId);
if (srcExists || tgtExists) {
cy.batch(function () {
// avoid duplicate style updates
eles.remove(notifyRenderer, modifyPool); // clean up refs etc.
eles.emitAndNotify('moveout');
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var _data5 = ele._private.data;
if (ele.isEdge()) {
if (srcExists) {
_data5.source = srcId;
}
if (tgtExists) {
_data5.target = tgtId;
}
}
}
eles.restore(notifyRenderer, modifyPool); // make new refs, style, etc.
});
eles.emitAndNotify('move');
}
} else if (struct.parent !== undefined) {
// move node to new parent
var parentId = toString(struct.parent);
var parentExists = parentId === null || cy.hasElementWithId(parentId);
if (parentExists) {
var pidToAssign = parentId === null ? undefined : parentId;
cy.batch(function () {
// avoid duplicate style updates
var updated = eles.remove(notifyRenderer, modifyPool); // clean up refs etc.
updated.emitAndNotify('moveout');
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var _data6 = ele._private.data;
if (ele.isNode()) {
_data6.parent = pidToAssign;
}
}
updated.restore(notifyRenderer, modifyPool); // make new refs, style, etc.
});
eles.emitAndNotify('move');
}
}
return this;
};
[elesfn$c, elesfn$d, elesfn$e, elesfn$f, elesfn$g, data$1, elesfn$i, dimensions, elesfn$m, elesfn$n, elesfn$o, elesfn$p, elesfn$q, elesfn$r, elesfn$s, elesfn$t].forEach(function (props) {
extend(elesfn$u, props);
});
var corefn = {
add: function add(opts) {
var elements;
var cy = this; // add the elements
if (elementOrCollection(opts)) {
var eles = opts;
if (eles._private.cy === cy) {
// same instance => just restore
elements = eles.restore();
} else {
// otherwise, copy from json
var jsons = [];
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
jsons.push(ele.json());
}
elements = new Collection(cy, jsons);
}
} // specify an array of options
else if (array(opts)) {
var _jsons = opts;
elements = new Collection(cy, _jsons);
} // specify via opts.nodes and opts.edges
else if (plainObject(opts) && (array(opts.nodes) || array(opts.edges))) {
var elesByGroup = opts;
var _jsons2 = [];
var grs = ['nodes', 'edges'];
for (var _i = 0, il = grs.length; _i < il; _i++) {
var group = grs[_i];
var elesArray = elesByGroup[group];
if (array(elesArray)) {
for (var j = 0, jl = elesArray.length; j < jl; j++) {
var json = extend({
group: group
}, elesArray[j]);
_jsons2.push(json);
}
}
}
elements = new Collection(cy, _jsons2);
} // specify options for one element
else {
var _json = opts;
elements = new Element$1(cy, _json).collection();
}
return elements;
},
remove: function remove(collection) {
if (elementOrCollection(collection)) ; else if (string(collection)) {
var selector = collection;
collection = this.$(selector);
}
return collection.remove();
}
};
/* global Float32Array */
/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */
function generateCubicBezier(mX1, mY1, mX2, mY2) {
var NEWTON_ITERATIONS = 4,
NEWTON_MIN_SLOPE = 0.001,
SUBDIVISION_PRECISION = 0.0000001,
SUBDIVISION_MAX_ITERATIONS = 10,
kSplineTableSize = 11,
kSampleStepSize = 1.0 / (kSplineTableSize - 1.0),
float32ArraySupported = typeof Float32Array !== 'undefined';
/* Must contain four arguments. */
if (arguments.length !== 4) {
return false;
}
/* Arguments must be numbers. */
for (var i = 0; i < 4; ++i) {
if (typeof arguments[i] !== "number" || isNaN(arguments[i]) || !isFinite(arguments[i])) {
return false;
}
}
/* X values must be in the [0, 1] range. */
mX1 = Math.min(mX1, 1);
mX2 = Math.min(mX2, 1);
mX1 = Math.max(mX1, 0);
mX2 = Math.max(mX2, 0);
var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
function A(aA1, aA2) {
return 1.0 - 3.0 * aA2 + 3.0 * aA1;
}
function B(aA1, aA2) {
return 3.0 * aA2 - 6.0 * aA1;
}
function C(aA1) {
return 3.0 * aA1;
}
function calcBezier(aT, aA1, aA2) {
return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;
}
function getSlope(aT, aA1, aA2) {
return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);
}
function newtonRaphsonIterate(aX, aGuessT) {
for (var _i = 0; _i < NEWTON_ITERATIONS; ++_i) {
var currentSlope = getSlope(aGuessT, mX1, mX2);
if (currentSlope === 0.0) {
return aGuessT;
}
var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
aGuessT -= currentX / currentSlope;
}
return aGuessT;
}
function calcSampleValues() {
for (var _i2 = 0; _i2 < kSplineTableSize; ++_i2) {
mSampleValues[_i2] = calcBezier(_i2 * kSampleStepSize, mX1, mX2);
}
}
function binarySubdivide(aX, aA, aB) {
var currentX,
currentT,
i = 0;
do {
currentT = aA + (aB - aA) / 2.0;
currentX = calcBezier(currentT, mX1, mX2) - aX;
if (currentX > 0.0) {
aB = currentT;
} else {
aA = currentT;
}
} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
return currentT;
}
function getTForX(aX) {
var intervalStart = 0.0,
currentSample = 1,
lastSample = kSplineTableSize - 1;
for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {
intervalStart += kSampleStepSize;
}
--currentSample;
var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),
guessForT = intervalStart + dist * kSampleStepSize,
initialSlope = getSlope(guessForT, mX1, mX2);
if (initialSlope >= NEWTON_MIN_SLOPE) {
return newtonRaphsonIterate(aX, guessForT);
} else if (initialSlope === 0.0) {
return guessForT;
} else {
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);
}
}
var _precomputed = false;
function precompute() {
_precomputed = true;
if (mX1 !== mY1 || mX2 !== mY2) {
calcSampleValues();
}
}
var f = function f(aX) {
if (!_precomputed) {
precompute();
}
if (mX1 === mY1 && mX2 === mY2) {
return aX;
}
if (aX === 0) {
return 0;
}
if (aX === 1) {
return 1;
}
return calcBezier(getTForX(aX), mY1, mY2);
};
f.getControlPoints = function () {
return [{
x: mX1,
y: mY1
}, {
x: mX2,
y: mY2
}];
};
var str = "generateBezier(" + [mX1, mY1, mX2, mY2] + ")";
f.toString = function () {
return str;
};
return f;
}
/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */
/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass
then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */
var generateSpringRK4 = function () {
function springAccelerationForState(state) {
return -state.tension * state.x - state.friction * state.v;
}
function springEvaluateStateWithDerivative(initialState, dt, derivative) {
var state = {
x: initialState.x + derivative.dx * dt,
v: initialState.v + derivative.dv * dt,
tension: initialState.tension,
friction: initialState.friction
};
return {
dx: state.v,
dv: springAccelerationForState(state)
};
}
function springIntegrateState(state, dt) {
var a = {
dx: state.v,
dv: springAccelerationForState(state)
},
b = springEvaluateStateWithDerivative(state, dt * 0.5, a),
c = springEvaluateStateWithDerivative(state, dt * 0.5, b),
d = springEvaluateStateWithDerivative(state, dt, c),
dxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),
dvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);
state.x = state.x + dxdt * dt;
state.v = state.v + dvdt * dt;
return state;
}
return function springRK4Factory(tension, friction, duration) {
var initState = {
x: -1,
v: 0,
tension: null,
friction: null
},
path = [0],
time_lapsed = 0,
tolerance = 1 / 10000,
DT = 16 / 1000,
have_duration,
dt,
last_state;
tension = parseFloat(tension) || 500;
friction = parseFloat(friction) || 20;
duration = duration || null;
initState.tension = tension;
initState.friction = friction;
have_duration = duration !== null;
/* Calculate the actual time it takes for this animation to complete with the provided conditions. */
if (have_duration) {
/* Run the simulation without a duration. */
time_lapsed = springRK4Factory(tension, friction);
/* Compute the adjusted time delta. */
dt = time_lapsed / duration * DT;
} else {
dt = DT;
}
for (;;) {
/* Next/step function .*/
last_state = springIntegrateState(last_state || initState, dt);
/* Store the position. */
path.push(1 + last_state.x);
time_lapsed += 16;
/* If the change threshold is reached, break. */
if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {
break;
}
}
/* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the
computed path and returns a snapshot of the position according to a given percentComplete. */
return !have_duration ? time_lapsed : function (percentComplete) {
return path[percentComplete * (path.length - 1) | 0];
};
};
}();
var cubicBezier = function cubicBezier(t1, p1, t2, p2) {
var bezier = generateCubicBezier(t1, p1, t2, p2);
return function (start, end, percent) {
return start + (end - start) * bezier(percent);
};
};
var easings = {
'linear': function linear(start, end, percent) {
return start + (end - start) * percent;
},
// default easings
'ease': cubicBezier(0.25, 0.1, 0.25, 1),
'ease-in': cubicBezier(0.42, 0, 1, 1),
'ease-out': cubicBezier(0, 0, 0.58, 1),
'ease-in-out': cubicBezier(0.42, 0, 0.58, 1),
// sine
'ease-in-sine': cubicBezier(0.47, 0, 0.745, 0.715),
'ease-out-sine': cubicBezier(0.39, 0.575, 0.565, 1),
'ease-in-out-sine': cubicBezier(0.445, 0.05, 0.55, 0.95),
// quad
'ease-in-quad': cubicBezier(0.55, 0.085, 0.68, 0.53),
'ease-out-quad': cubicBezier(0.25, 0.46, 0.45, 0.94),
'ease-in-out-quad': cubicBezier(0.455, 0.03, 0.515, 0.955),
// cubic
'ease-in-cubic': cubicBezier(0.55, 0.055, 0.675, 0.19),
'ease-out-cubic': cubicBezier(0.215, 0.61, 0.355, 1),
'ease-in-out-cubic': cubicBezier(0.645, 0.045, 0.355, 1),
// quart
'ease-in-quart': cubicBezier(0.895, 0.03, 0.685, 0.22),
'ease-out-quart': cubicBezier(0.165, 0.84, 0.44, 1),
'ease-in-out-quart': cubicBezier(0.77, 0, 0.175, 1),
// quint
'ease-in-quint': cubicBezier(0.755, 0.05, 0.855, 0.06),
'ease-out-quint': cubicBezier(0.23, 1, 0.32, 1),
'ease-in-out-quint': cubicBezier(0.86, 0, 0.07, 1),
// expo
'ease-in-expo': cubicBezier(0.95, 0.05, 0.795, 0.035),
'ease-out-expo': cubicBezier(0.19, 1, 0.22, 1),
'ease-in-out-expo': cubicBezier(1, 0, 0, 1),
// circ
'ease-in-circ': cubicBezier(0.6, 0.04, 0.98, 0.335),
'ease-out-circ': cubicBezier(0.075, 0.82, 0.165, 1),
'ease-in-out-circ': cubicBezier(0.785, 0.135, 0.15, 0.86),
// user param easings...
'spring': function spring(tension, friction, duration) {
if (duration === 0) {
// can't get a spring w/ duration 0
return easings.linear; // duration 0 => jump to end so impl doesn't matter
}
var spring = generateSpringRK4(tension, friction, duration);
return function (start, end, percent) {
return start + (end - start) * spring(percent);
};
},
'cubic-bezier': cubicBezier
};
function getEasedValue(type, start, end, percent, easingFn) {
if (percent === 1) {
return end;
}
if (start === end) {
return end;
}
var val = easingFn(start, end, percent);
if (type == null) {
return val;
}
if (type.roundValue || type.color) {
val = Math.round(val);
}
if (type.min !== undefined) {
val = Math.max(val, type.min);
}
if (type.max !== undefined) {
val = Math.min(val, type.max);
}
return val;
}
function getValue$1(prop, spec) {
if (prop.pfValue != null || prop.value != null) {
if (prop.pfValue != null && (spec == null || spec.type.units !== '%')) {
return prop.pfValue;
} else {
return prop.value;
}
} else {
return prop;
}
}
function ease(startProp, endProp, percent, easingFn, propSpec) {
var type = propSpec != null ? propSpec.type : null;
if (percent < 0) {
percent = 0;
} else if (percent > 1) {
percent = 1;
}
var start = getValue$1(startProp, propSpec);
var end = getValue$1(endProp, propSpec);
if (number(start) && number(end)) {
return getEasedValue(type, start, end, percent, easingFn);
} else if (array(start) && array(end)) {
var easedArr = [];
for (var i = 0; i < end.length; i++) {
var si = start[i];
var ei = end[i];
if (si != null && ei != null) {
var val = getEasedValue(type, si, ei, percent, easingFn);
easedArr.push(val);
} else {
easedArr.push(ei);
}
}
return easedArr;
}
return undefined;
}
function step(self, ani, now, isCore) {
var isEles = !isCore;
var _p = self._private;
var ani_p = ani._private;
var pEasing = ani_p.easing;
var startTime = ani_p.startTime;
var cy = isCore ? self : self.cy();
var style = cy.style();
if (!ani_p.easingImpl) {
if (pEasing == null) {
// use default
ani_p.easingImpl = easings['linear'];
} else {
// then define w/ name
var easingVals;
if (string(pEasing)) {
var easingProp = style.parse('transition-timing-function', pEasing);
easingVals = easingProp.value;
} else {
// then assume preparsed array
easingVals = pEasing;
}
var name, args;
if (string(easingVals)) {
name = easingVals;
args = [];
} else {
name = easingVals[1];
args = easingVals.slice(2).map(function (n) {
return +n;
});
}
if (args.length > 0) {
// create with args
if (name === 'spring') {
args.push(ani_p.duration); // need duration to generate spring
}
ani_p.easingImpl = easings[name].apply(null, args);
} else {
// static impl by name
ani_p.easingImpl = easings[name];
}
}
}
var easing = ani_p.easingImpl;
var percent;
if (ani_p.duration === 0) {
percent = 1;
} else {
percent = (now - startTime) / ani_p.duration;
}
if (ani_p.applying) {
percent = ani_p.progress;
}
if (percent < 0) {
percent = 0;
} else if (percent > 1) {
percent = 1;
}
if (ani_p.delay == null) {
// then update
var startPos = ani_p.startPosition;
var endPos = ani_p.position;
if (endPos && isEles && !self.locked()) {
var newPos = {};
if (valid(startPos.x, endPos.x)) {
newPos.x = ease(startPos.x, endPos.x, percent, easing);
}
if (valid(startPos.y, endPos.y)) {
newPos.y = ease(startPos.y, endPos.y, percent, easing);
}
self.position(newPos);
}
var startPan = ani_p.startPan;
var endPan = ani_p.pan;
var pan = _p.pan;
var animatingPan = endPan != null && isCore;
if (animatingPan) {
if (valid(startPan.x, endPan.x)) {
pan.x = ease(startPan.x, endPan.x, percent, easing);
}
if (valid(startPan.y, endPan.y)) {
pan.y = ease(startPan.y, endPan.y, percent, easing);
}
self.emit('pan');
}
var startZoom = ani_p.startZoom;
var endZoom = ani_p.zoom;
var animatingZoom = endZoom != null && isCore;
if (animatingZoom) {
if (valid(startZoom, endZoom)) {
_p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom);
}
self.emit('zoom');
}
if (animatingPan || animatingZoom) {
self.emit('viewport');
}
var props = ani_p.style;
if (props && props.length > 0 && isEles) {
for (var i = 0; i < props.length; i++) {
var prop = props[i];
var _name = prop.name;
var end = prop;
var start = ani_p.startStyle[_name];
var propSpec = style.properties[start.name];
var easedVal = ease(start, end, percent, easing, propSpec);
style.overrideBypass(self, _name, easedVal);
} // for props
self.emit('style');
} // if
}
ani_p.progress = percent;
return percent;
}
function valid(start, end) {
if (start == null || end == null) {
return false;
}
if (number(start) && number(end)) {
return true;
} else if (start && end) {
return true;
}
return false;
}
function startAnimation(self, ani, now, isCore) {
var ani_p = ani._private;
ani_p.started = true;
ani_p.startTime = now - ani_p.progress * ani_p.duration;
}
function stepAll(now, cy) {
var eles = cy._private.aniEles;
var doneEles = [];
function stepOne(ele, isCore) {
var _p = ele._private;
var current = _p.animation.current;
var queue = _p.animation.queue;
var ranAnis = false; // if nothing currently animating, get something from the queue
if (current.length === 0) {
var next = queue.shift();
if (next) {
current.push(next);
}
}
var callbacks = function callbacks(_callbacks) {
for (var j = _callbacks.length - 1; j >= 0; j--) {
var cb = _callbacks[j];
cb();
}
_callbacks.splice(0, _callbacks.length);
}; // step and remove if done
for (var i = current.length - 1; i >= 0; i--) {
var ani = current[i];
var ani_p = ani._private;
if (ani_p.stopped) {
current.splice(i, 1);
ani_p.hooked = false;
ani_p.playing = false;
ani_p.started = false;
callbacks(ani_p.frames);
continue;
}
if (!ani_p.playing && !ani_p.applying) {
continue;
} // an apply() while playing shouldn't do anything
if (ani_p.playing && ani_p.applying) {
ani_p.applying = false;
}
if (!ani_p.started) {
startAnimation(ele, ani, now);
}
step(ele, ani, now, isCore);
if (ani_p.applying) {
ani_p.applying = false;
}
callbacks(ani_p.frames);
if (ani_p.step != null) {
ani_p.step(now);
}
if (ani.completed()) {
current.splice(i, 1);
ani_p.hooked = false;
ani_p.playing = false;
ani_p.started = false;
callbacks(ani_p.completes);
}
ranAnis = true;
}
if (!isCore && current.length === 0 && queue.length === 0) {
doneEles.push(ele);
}
return ranAnis;
} // stepElement
// handle all eles
var ranEleAni = false;
for (var e = 0; e < eles.length; e++) {
var ele = eles[e];
var handledThisEle = stepOne(ele);
ranEleAni = ranEleAni || handledThisEle;
} // each element
var ranCoreAni = stepOne(cy, true); // notify renderer
if (ranEleAni || ranCoreAni) {
if (eles.length > 0) {
cy.notify('draw', eles);
} else {
cy.notify('draw');
}
} // remove elements from list of currently animating if its queues are empty
eles.unmerge(doneEles);
cy.emit('step');
} // stepAll
var corefn$1 = {
// pull in animation functions
animate: define$3.animate(),
animation: define$3.animation(),
animated: define$3.animated(),
clearQueue: define$3.clearQueue(),
delay: define$3.delay(),
delayAnimation: define$3.delayAnimation(),
stop: define$3.stop(),
addToAnimationPool: function addToAnimationPool(eles) {
var cy = this;
if (!cy.styleEnabled()) {
return;
} // save cycles when no style used
cy._private.aniEles.merge(eles);
},
stopAnimationLoop: function stopAnimationLoop() {
this._private.animationsRunning = false;
},
startAnimationLoop: function startAnimationLoop() {
var cy = this;
cy._private.animationsRunning = true;
if (!cy.styleEnabled()) {
return;
} // save cycles when no style used
// NB the animation loop will exec in headless environments if style enabled
// and explicit cy.destroy() is necessary to stop the loop
function headlessStep() {
if (!cy._private.animationsRunning) {
return;
}
requestAnimationFrame$1(function animationStep(now) {
stepAll(now, cy);
headlessStep();
});
}
var renderer = cy.renderer();
if (renderer && renderer.beforeRender) {
// let the renderer schedule animations
renderer.beforeRender(function rendererAnimationStep(willDraw, now) {
stepAll(now, cy);
}, renderer.beforeRenderPriorities.animations);
} else {
// manage the animation loop ourselves
headlessStep(); // first call
}
}
};
var emitterOptions$1 = {
qualifierCompare: function qualifierCompare(selector1, selector2) {
if (selector1 == null || selector2 == null) {
return selector1 == null && selector2 == null;
} else {
return selector1.sameText(selector2);
}
},
eventMatches: function eventMatches(cy, listener, eventObj) {
var selector = listener.qualifier;
if (selector != null) {
return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target);
}
return true;
},
addEventFields: function addEventFields(cy, evt) {
evt.cy = cy;
evt.target = cy;
},
callbackContext: function callbackContext(cy, listener, eventObj) {
return listener.qualifier != null ? eventObj.target : cy;
}
};
var argSelector$1 = function argSelector(arg) {
if (string(arg)) {
return new Selector(arg);
} else {
return arg;
}
};
var elesfn$v = {
createEmitter: function createEmitter() {
var _p = this._private;
if (!_p.emitter) {
_p.emitter = new Emitter(emitterOptions$1, this);
}
return this;
},
emitter: function emitter() {
return this._private.emitter;
},
on: function on(events, selector, callback) {
this.emitter().on(events, argSelector$1(selector), callback);
return this;
},
removeListener: function removeListener(events, selector, callback) {
this.emitter().removeListener(events, argSelector$1(selector), callback);
return this;
},
removeAllListeners: function removeAllListeners() {
this.emitter().removeAllListeners();
return this;
},
one: function one(events, selector, callback) {
this.emitter().one(events, argSelector$1(selector), callback);
return this;
},
once: function once(events, selector, callback) {
this.emitter().one(events, argSelector$1(selector), callback);
return this;
},
emit: function emit(events, extraParams) {
this.emitter().emit(events, extraParams);
return this;
},
emitAndNotify: function emitAndNotify(event, eles) {
this.emit(event);
this.notify(event, eles);
return this;
}
};
define$3.eventAliasesOn(elesfn$v);
var corefn$2 = {
png: function png(options) {
var renderer = this._private.renderer;
options = options || {};
return renderer.png(options);
},
jpg: function jpg(options) {
var renderer = this._private.renderer;
options = options || {};
options.bg = options.bg || '#fff';
return renderer.jpg(options);
}
};
corefn$2.jpeg = corefn$2.jpg;
var corefn$3 = {
layout: function layout(options) {
var cy = this;
if (options == null) {
error('Layout options must be specified to make a layout');
return;
}
if (options.name == null) {
error('A `name` must be specified to make a layout');
return;
}
var name = options.name;
var Layout = cy.extension('layout', name);
if (Layout == null) {
error('No such layout `' + name + '` found. Did you forget to import it and `cytoscape.use()` it?');
return;
}
var eles;
if (string(options.eles)) {
eles = cy.$(options.eles);
} else {
eles = options.eles != null ? options.eles : cy.$();
}
var layout = new Layout(extend({}, options, {
cy: cy,
eles: eles
}));
return layout;
}
};
corefn$3.createLayout = corefn$3.makeLayout = corefn$3.layout;
var corefn$4 = {
notify: function notify(eventName, eventEles) {
var _p = this._private;
if (this.batching()) {
_p.batchNotifications = _p.batchNotifications || {};
var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection();
if (eventEles != null) {
eles.merge(eventEles);
}
return; // notifications are disabled during batching
}
if (!_p.notificationsEnabled) {
return;
} // exit on disabled
var renderer = this.renderer(); // exit if destroy() called on core or renderer in between frames #1499 #1528
if (this.destroyed() || !renderer) {
return;
}
renderer.notify(eventName, eventEles);
},
notifications: function notifications(bool) {
var p = this._private;
if (bool === undefined) {
return p.notificationsEnabled;
} else {
p.notificationsEnabled = bool ? true : false;
}
return this;
},
noNotifications: function noNotifications(callback) {
this.notifications(false);
callback();
this.notifications(true);
},
batching: function batching() {
return this._private.batchCount > 0;
},
startBatch: function startBatch() {
var _p = this._private;
if (_p.batchCount == null) {
_p.batchCount = 0;
}
if (_p.batchCount === 0) {
_p.batchStyleEles = this.collection();
_p.batchNotifications = {};
}
_p.batchCount++;
return this;
},
endBatch: function endBatch() {
var _p = this._private;
if (_p.batchCount === 0) {
return this;
}
_p.batchCount--;
if (_p.batchCount === 0) {
// update style for dirty eles
_p.batchStyleEles.updateStyle();
var renderer = this.renderer(); // notify the renderer of queued eles and event types
Object.keys(_p.batchNotifications).forEach(function (eventName) {
var eles = _p.batchNotifications[eventName];
if (eles.empty()) {
renderer.notify(eventName);
} else {
renderer.notify(eventName, eles);
}
});
}
return this;
},
batch: function batch(callback) {
this.startBatch();
callback();
this.endBatch();
return this;
},
// for backwards compatibility
batchData: function batchData(map) {
var cy = this;
return this.batch(function () {
var ids = Object.keys(map);
for (var i = 0; i < ids.length; i++) {
var id = ids[i];
var data = map[id];
var ele = cy.getElementById(id);
ele.data(data);
}
});
}
};
var rendererDefaults = defaults$1({
hideEdgesOnViewport: false,
textureOnViewport: false,
motionBlur: false,
motionBlurOpacity: 0.05,
pixelRatio: undefined,
desktopTapThreshold: 4,
touchTapThreshold: 8,
wheelSensitivity: 1,
debug: false,
showFps: false
});
var corefn$5 = {
renderTo: function renderTo(context, zoom, pan, pxRatio) {
var r = this._private.renderer;
r.renderTo(context, zoom, pan, pxRatio);
return this;
},
renderer: function renderer() {
return this._private.renderer;
},
forceRender: function forceRender() {
this.notify('draw');
return this;
},
resize: function resize() {
this.invalidateSize();
this.emitAndNotify('resize');
return this;
},
initRenderer: function initRenderer(options) {
var cy = this;
var RendererProto = cy.extension('renderer', options.name);
if (RendererProto == null) {
error("Can not initialise: No such renderer `".concat(options.name, "` found. Did you forget to import it and `cytoscape.use()` it?"));
return;
}
if (options.wheelSensitivity !== undefined) {
warn("You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine.");
}
var rOpts = rendererDefaults(options);
rOpts.cy = cy;
cy._private.renderer = new RendererProto(rOpts);
this.notify('init');
},
destroyRenderer: function destroyRenderer() {
var cy = this;
cy.notify('destroy'); // destroy the renderer
var domEle = cy.container();
if (domEle) {
domEle._cyreg = null;
while (domEle.childNodes.length > 0) {
domEle.removeChild(domEle.childNodes[0]);
}
}
cy._private.renderer = null; // to be extra safe, remove the ref
cy.mutableElements().forEach(function (ele) {
var _p = ele._private;
_p.rscratch = {};
_p.rstyle = {};
_p.animation.current = [];
_p.animation.queue = [];
});
},
onRender: function onRender(fn) {
return this.on('render', fn);
},
offRender: function offRender(fn) {
return this.off('render', fn);
}
};
corefn$5.invalidateDimensions = corefn$5.resize;
var corefn$6 = {
// get a collection
// - empty collection on no args
// - collection of elements in the graph on selector arg
// - guarantee a returned collection when elements or collection specified
collection: function collection(eles, opts) {
if (string(eles)) {
return this.$(eles);
} else if (elementOrCollection(eles)) {
return eles.collection();
} else if (array(eles)) {
return new Collection(this, eles, opts);
}
return new Collection(this);
},
nodes: function nodes(selector) {
var nodes = this.$(function (ele) {
return ele.isNode();
});
if (selector) {
return nodes.filter(selector);
}
return nodes;
},
edges: function edges(selector) {
var edges = this.$(function (ele) {
return ele.isEdge();
});
if (selector) {
return edges.filter(selector);
}
return edges;
},
// search the graph like jQuery
$: function $(selector) {
var eles = this._private.elements;
if (selector) {
return eles.filter(selector);
} else {
return eles.spawnSelf();
}
},
mutableElements: function mutableElements() {
return this._private.elements;
}
}; // aliases
corefn$6.elements = corefn$6.filter = corefn$6.$;
var styfn = {}; // keys for style blocks, e.g. ttfftt
var TRUE = 't';
var FALSE = 'f'; // (potentially expensive calculation)
// apply the style to the element based on
// - its bypass
// - what selectors match it
styfn.apply = function (eles) {
var self = this;
var _p = self._private;
var cy = _p.cy;
var updatedEles = cy.collection();
for (var ie = 0; ie < eles.length; ie++) {
var ele = eles[ie];
var cxtMeta = self.getContextMeta(ele);
if (cxtMeta.empty) {
continue;
}
var cxtStyle = self.getContextStyle(cxtMeta);
var app = self.applyContextStyle(cxtMeta, cxtStyle, ele);
if (ele._private.appliedInitStyle) {
self.updateTransitions(ele, app.diffProps);
} else {
ele._private.appliedInitStyle = true;
}
var hintsDiff = self.updateStyleHints(ele);
if (hintsDiff) {
updatedEles.push(ele);
}
} // for elements
return updatedEles;
};
styfn.getPropertiesDiff = function (oldCxtKey, newCxtKey) {
var self = this;
var cache = self._private.propDiffs = self._private.propDiffs || {};
var dualCxtKey = oldCxtKey + '-' + newCxtKey;
var cachedVal = cache[dualCxtKey];
if (cachedVal) {
return cachedVal;
}
var diffProps = [];
var addedProp = {};
for (var i = 0; i < self.length; i++) {
var cxt = self[i];
var oldHasCxt = oldCxtKey[i] === TRUE;
var newHasCxt = newCxtKey[i] === TRUE;
var cxtHasDiffed = oldHasCxt !== newHasCxt;
var cxtHasMappedProps = cxt.mappedProperties.length > 0;
if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) {
var props = void 0;
if (cxtHasDiffed && cxtHasMappedProps) {
props = cxt.properties; // suffices b/c mappedProperties is a subset of properties
} else if (cxtHasDiffed) {
props = cxt.properties; // need to check them all
} else if (cxtHasMappedProps) {
props = cxt.mappedProperties; // only need to check mapped
}
for (var j = 0; j < props.length; j++) {
var prop = props[j];
var name = prop.name; // if a later context overrides this property, then the fact that this context has switched/diffed doesn't matter
// (semi expensive check since it makes this function O(n^2) on context length, but worth it since overall result
// is cached)
var laterCxtOverrides = false;
for (var k = i + 1; k < self.length; k++) {
var laterCxt = self[k];
var hasLaterCxt = newCxtKey[k] === TRUE;
if (!hasLaterCxt) {
continue;
} // can't override unless the context is active
laterCxtOverrides = laterCxt.properties[prop.name] != null;
if (laterCxtOverrides) {
break;
} // exit early as long as one later context overrides
}
if (!addedProp[name] && !laterCxtOverrides) {
addedProp[name] = true;
diffProps.push(name);
}
} // for props
} // if
} // for contexts
cache[dualCxtKey] = diffProps;
return diffProps;
};
styfn.getContextMeta = function (ele) {
var self = this;
var cxtKey = '';
var diffProps;
var prevKey = ele._private.styleCxtKey || ''; // get the cxt key
for (var i = 0; i < self.length; i++) {
var context = self[i];
var contextSelectorMatches = context.selector && context.selector.matches(ele); // NB: context.selector may be null for 'core'
if (contextSelectorMatches) {
cxtKey += TRUE;
} else {
cxtKey += FALSE;
}
} // for context
diffProps = self.getPropertiesDiff(prevKey, cxtKey);
ele._private.styleCxtKey = cxtKey;
return {
key: cxtKey,
diffPropNames: diffProps,
empty: diffProps.length === 0
};
}; // gets a computed ele style object based on matched contexts
styfn.getContextStyle = function (cxtMeta) {
var cxtKey = cxtMeta.key;
var self = this;
var cxtStyles = this._private.contextStyles = this._private.contextStyles || {}; // if already computed style, returned cached copy
if (cxtStyles[cxtKey]) {
return cxtStyles[cxtKey];
}
var style = {
_private: {
key: cxtKey
}
};
for (var i = 0; i < self.length; i++) {
var cxt = self[i];
var hasCxt = cxtKey[i] === TRUE;
if (!hasCxt) {
continue;
}
for (var j = 0; j < cxt.properties.length; j++) {
var prop = cxt.properties[j];
style[prop.name] = prop;
}
}
cxtStyles[cxtKey] = style;
return style;
};
styfn.applyContextStyle = function (cxtMeta, cxtStyle, ele) {
var self = this;
var diffProps = cxtMeta.diffPropNames;
var retDiffProps = {};
var types = self.types;
for (var i = 0; i < diffProps.length; i++) {
var diffPropName = diffProps[i];
var cxtProp = cxtStyle[diffPropName];
var eleProp = ele.pstyle(diffPropName);
if (!cxtProp) {
// no context prop means delete
if (!eleProp) {
continue; // no existing prop means nothing needs to be removed
// nb affects initial application on mapped values like control-point-distances
} else if (eleProp.bypass) {
cxtProp = {
name: diffPropName,
deleteBypassed: true
};
} else {
cxtProp = {
name: diffPropName,
"delete": true
};
}
} // save cycles when the context prop doesn't need to be applied
if (eleProp === cxtProp) {
continue;
} // save cycles when a mapped context prop doesn't need to be applied
if (cxtProp.mapped === types.fn // context prop is function mapper
&& eleProp != null // some props can be null even by default (e.g. a prop that overrides another one)
&& eleProp.mapping != null // ele prop is a concrete value from from a mapper
&& eleProp.mapping.value === cxtProp.value // the current prop on the ele is a flat prop value for the function mapper
) {
// NB don't write to cxtProp, as it's shared among eles (stored in stylesheet)
var mapping = eleProp.mapping; // can write to mapping, as it's a per-ele copy
var fnValue = mapping.fnValue = cxtProp.value(ele); // temporarily cache the value in case of a miss
if (fnValue === mapping.prevFnValue) {
continue;
}
}
var retDiffProp = retDiffProps[diffPropName] = {
prev: eleProp
};
self.applyParsedProperty(ele, cxtProp);
retDiffProp.next = ele.pstyle(diffPropName);
if (retDiffProp.next && retDiffProp.next.bypass) {
retDiffProp.next = retDiffProp.next.bypassed;
}
}
return {
diffProps: retDiffProps
};
};
styfn.updateStyleHints = function (ele) {
var _p = ele._private;
var self = this;
var propNames = self.propertyGroupNames;
var propGrKeys = self.propertyGroupKeys;
var propHash = function propHash(ele, propNames, seedKey) {
return self.getPropertiesHash(ele, propNames, seedKey);
};
var oldStyleKey = _p.styleKey;
if (ele.removed()) {
return false;
}
var isNode = _p.group === 'nodes'; // get the style key hashes per prop group
// but lazily -- only use non-default prop values to reduce the number of hashes
//
var overriddenStyles = ele._private.style;
propNames = Object.keys(overriddenStyles);
for (var i = 0; i < propGrKeys.length; i++) {
var grKey = propGrKeys[i];
_p.styleKeys[grKey] = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT];
}
var updateGrKey1 = function updateGrKey1(val, grKey) {
return _p.styleKeys[grKey][0] = hashInt(val, _p.styleKeys[grKey][0]);
};
var updateGrKey2 = function updateGrKey2(val, grKey) {
return _p.styleKeys[grKey][1] = hashIntAlt(val, _p.styleKeys[grKey][1]);
};
var updateGrKey = function updateGrKey(val, grKey) {
updateGrKey1(val, grKey);
updateGrKey2(val, grKey);
};
var updateGrKeyWStr = function updateGrKeyWStr(strVal, grKey) {
for (var j = 0; j < strVal.length; j++) {
var ch = strVal.charCodeAt(j);
updateGrKey1(ch, grKey);
updateGrKey2(ch, grKey);
}
}; // - hashing works on 32 bit ints b/c we use bitwise ops
// - small numbers get cut off (e.g. 0.123 is seen as 0 by the hashing function)
// - raise up small numbers so more significant digits are seen by hashing
// - make small numbers larger than a normal value to avoid collisions
// - works in practice and it's relatively cheap
var N = 2000000000;
var cleanNum = function cleanNum(val) {
return -128 < val && val < 128 && Math.floor(val) !== val ? N - (val * 1024 | 0) : val;
};
for (var _i = 0; _i < propNames.length; _i++) {
var name = propNames[_i];
var parsedProp = overriddenStyles[name];
if (parsedProp == null) {
continue;
}
var propInfo = this.properties[name];
var type = propInfo.type;
var _grKey = propInfo.groupKey;
var normalizedNumberVal = void 0;
if (propInfo.hashOverride != null) {
normalizedNumberVal = propInfo.hashOverride(ele, parsedProp);
} else if (parsedProp.pfValue != null) {
normalizedNumberVal = parsedProp.pfValue;
} // might not be a number if it allows enums
var numberVal = propInfo.enums == null ? parsedProp.value : null;
var haveNormNum = normalizedNumberVal != null;
var haveUnitedNum = numberVal != null;
var haveNum = haveNormNum || haveUnitedNum;
var units = parsedProp.units; // numbers are cheaper to hash than strings
// 1 hash op vs n hash ops (for length n string)
if (type.number && haveNum && !type.multiple) {
var v = haveNormNum ? normalizedNumberVal : numberVal;
updateGrKey(cleanNum(v), _grKey);
if (!haveNormNum && units != null) {
updateGrKeyWStr(units, _grKey);
}
} else {
updateGrKeyWStr(parsedProp.strValue, _grKey);
}
} // overall style key
//
var hash = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT];
for (var _i2 = 0; _i2 < propGrKeys.length; _i2++) {
var _grKey2 = propGrKeys[_i2];
var grHash = _p.styleKeys[_grKey2];
hash[0] = hashInt(grHash[0], hash[0]);
hash[1] = hashIntAlt(grHash[1], hash[1]);
}
_p.styleKey = combineHashes(hash[0], hash[1]); // label dims
//
var sk = _p.styleKeys;
_p.labelDimsKey = combineHashesArray(sk.labelDimensions);
var labelKeys = propHash(ele, ['label'], sk.labelDimensions);
_p.labelKey = combineHashesArray(labelKeys);
_p.labelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, labelKeys));
if (!isNode) {
var sourceLabelKeys = propHash(ele, ['source-label'], sk.labelDimensions);
_p.sourceLabelKey = combineHashesArray(sourceLabelKeys);
_p.sourceLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, sourceLabelKeys));
var targetLabelKeys = propHash(ele, ['target-label'], sk.labelDimensions);
_p.targetLabelKey = combineHashesArray(targetLabelKeys);
_p.targetLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, targetLabelKeys));
} // node
//
if (isNode) {
var _p$styleKeys = _p.styleKeys,
nodeBody = _p$styleKeys.nodeBody,
nodeBorder = _p$styleKeys.nodeBorder,
backgroundImage = _p$styleKeys.backgroundImage,
compound = _p$styleKeys.compound,
pie = _p$styleKeys.pie;
var nodeKeys = [nodeBody, nodeBorder, backgroundImage, compound, pie].filter(function (k) {
return k != null;
}).reduce(hashArrays, [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]);
_p.nodeKey = combineHashesArray(nodeKeys);
_p.hasPie = pie != null && pie[0] !== DEFAULT_HASH_SEED && pie[1] !== DEFAULT_HASH_SEED_ALT;
}
return oldStyleKey !== _p.styleKey;
};
styfn.clearStyleHints = function (ele) {
var _p = ele._private;
_p.styleCxtKey = '';
_p.styleKeys = {};
_p.styleKey = null;
_p.labelKey = null;
_p.labelStyleKey = null;
_p.sourceLabelKey = null;
_p.sourceLabelStyleKey = null;
_p.targetLabelKey = null;
_p.targetLabelStyleKey = null;
_p.nodeKey = null;
_p.hasPie = null;
}; // apply a property to the style (for internal use)
// returns whether application was successful
//
// now, this function flattens the property, and here's how:
//
// for parsedProp:{ bypass: true, deleteBypass: true }
// no property is generated, instead the bypass property in the
// element's style is replaced by what's pointed to by the `bypassed`
// field in the bypass property (i.e. restoring the property the
// bypass was overriding)
//
// for parsedProp:{ mapped: truthy }
// the generated flattenedProp:{ mapping: prop }
//
// for parsedProp:{ bypass: true }
// the generated flattenedProp:{ bypassed: parsedProp }
styfn.applyParsedProperty = function (ele, parsedProp) {
var self = this;
var prop = parsedProp;
var style = ele._private.style;
var flatProp;
var types = self.types;
var type = self.properties[prop.name].type;
var propIsBypass = prop.bypass;
var origProp = style[prop.name];
var origPropIsBypass = origProp && origProp.bypass;
var _p = ele._private;
var flatPropMapping = 'mapping';
var getVal = function getVal(p) {
if (p == null) {
return null;
} else if (p.pfValue != null) {
return p.pfValue;
} else {
return p.value;
}
};
var checkTriggers = function checkTriggers() {
var fromVal = getVal(origProp);
var toVal = getVal(prop);
self.checkTriggers(ele, prop.name, fromVal, toVal);
};
if (prop && prop.name.substr(0, 3) === 'pie') {
warn('The pie style properties are deprecated. Create charts using background images instead.');
} // edge sanity checks to prevent the client from making serious mistakes
if (parsedProp.name === 'curve-style' && ele.isEdge() && ( // loops must be bundled beziers
parsedProp.value !== 'bezier' && ele.isLoop() || // edges connected to compound nodes can not be haystacks
parsedProp.value === 'haystack' && (ele.source().isParent() || ele.target().isParent()))) {
prop = parsedProp = this.parse(parsedProp.name, 'bezier', propIsBypass);
}
if (prop["delete"]) {
// delete the property and use the default value on falsey value
style[prop.name] = undefined;
checkTriggers();
return true;
}
if (prop.deleteBypassed) {
// delete the property that the
if (!origProp) {
checkTriggers();
return true; // can't delete if no prop
} else if (origProp.bypass) {
// delete bypassed
origProp.bypassed = undefined;
checkTriggers();
return true;
} else {
return false; // we're unsuccessful deleting the bypassed
}
} // check if we need to delete the current bypass
if (prop.deleteBypass) {
// then this property is just here to indicate we need to delete
if (!origProp) {
checkTriggers();
return true; // property is already not defined
} else if (origProp.bypass) {
// then replace the bypass property with the original
// because the bypassed property was already applied (and therefore parsed), we can just replace it (no reapplying necessary)
style[prop.name] = origProp.bypassed;
checkTriggers();
return true;
} else {
return false; // we're unsuccessful deleting the bypass
}
}
var printMappingErr = function printMappingErr() {
warn('Do not assign mappings to elements without corresponding data (i.e. ele `' + ele.id() + '` has no mapping for property `' + prop.name + '` with data field `' + prop.field + '`); try a `[' + prop.field + ']` selector to limit scope to elements with `' + prop.field + '` defined');
}; // put the property in the style objects
switch (prop.mapped) {
// flatten the property if mapped
case types.mapData:
{
// flatten the field (e.g. data.foo.bar)
var fields = prop.field.split('.');
var fieldVal = _p.data;
for (var i = 0; i < fields.length && fieldVal; i++) {
var field = fields[i];
fieldVal = fieldVal[field];
}
if (fieldVal == null) {
printMappingErr();
return false;
}
var percent;
if (!number(fieldVal)) {
// then don't apply and fall back on the existing style
warn('Do not use continuous mappers without specifying numeric data (i.e. `' + prop.field + ': ' + fieldVal + '` for `' + ele.id() + '` is non-numeric)');
return false;
} else {
var fieldWidth = prop.fieldMax - prop.fieldMin;
if (fieldWidth === 0) {
// safety check -- not strictly necessary as no props of zero range should be passed here
percent = 0;
} else {
percent = (fieldVal - prop.fieldMin) / fieldWidth;
}
} // make sure to bound percent value
if (percent < 0) {
percent = 0;
} else if (percent > 1) {
percent = 1;
}
if (type.color) {
var r1 = prop.valueMin[0];
var r2 = prop.valueMax[0];
var g1 = prop.valueMin[1];
var g2 = prop.valueMax[1];
var b1 = prop.valueMin[2];
var b2 = prop.valueMax[2];
var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3];
var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3];
var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b2 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)];
flatProp = {
// colours are simple, so just create the flat property instead of expensive string parsing
bypass: prop.bypass,
// we're a bypass if the mapping property is a bypass
name: prop.name,
value: clr,
strValue: 'rgb(' + clr[0] + ', ' + clr[1] + ', ' + clr[2] + ')'
};
} else if (type.number) {
var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent;
flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping);
} else {
return false; // can only map to colours and numbers
}
if (!flatProp) {
// if we can't flatten the property, then don't apply the property and fall back on the existing style
printMappingErr();
return false;
}
flatProp.mapping = prop; // keep a reference to the mapping
prop = flatProp; // the flattened (mapped) property is the one we want
break;
}
// direct mapping
case types.data:
{
// flatten the field (e.g. data.foo.bar)
var _fields = prop.field.split('.');
var _fieldVal = _p.data;
for (var _i3 = 0; _i3 < _fields.length && _fieldVal; _i3++) {
var _field = _fields[_i3];
_fieldVal = _fieldVal[_field];
}
if (_fieldVal != null) {
flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping);
}
if (!flatProp) {
// if we can't flatten the property, then don't apply and fall back on the existing style
printMappingErr();
return false;
}
flatProp.mapping = prop; // keep a reference to the mapping
prop = flatProp; // the flattened (mapped) property is the one we want
break;
}
case types.fn:
{
var fn = prop.value;
var fnRetVal = prop.fnValue != null ? prop.fnValue : fn(ele); // check for cached value before calling function
prop.prevFnValue = fnRetVal;
if (fnRetVal == null) {
warn('Custom function mappers may not return null (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is null)');
return false;
}
flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping);
if (!flatProp) {
warn('Custom function mappers may not return invalid values for the property type (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is invalid)');
return false;
}
flatProp.mapping = copy(prop); // keep a reference to the mapping
prop = flatProp; // the flattened (mapped) property is the one we want
break;
}
case undefined:
break;
// just set the property
default:
return false;
// not a valid mapping
} // if the property is a bypass property, then link the resultant property to the original one
if (propIsBypass) {
if (origPropIsBypass) {
// then this bypass overrides the existing one
prop.bypassed = origProp.bypassed; // steal bypassed prop from old bypass
} else {
// then link the orig prop to the new bypass
prop.bypassed = origProp;
}
style[prop.name] = prop; // and set
} else {
// prop is not bypass
if (origPropIsBypass) {
// then keep the orig prop (since it's a bypass) and link to the new prop
origProp.bypassed = prop;
} else {
// then just replace the old prop with the new one
style[prop.name] = prop;
}
}
checkTriggers();
return true;
};
styfn.cleanElements = function (eles, keepBypasses) {
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
this.clearStyleHints(ele);
ele.dirtyCompoundBoundsCache();
ele.dirtyBoundingBoxCache();
if (!keepBypasses) {
ele._private.style = {};
} else {
var style = ele._private.style;
var propNames = Object.keys(style);
for (var j = 0; j < propNames.length; j++) {
var propName = propNames[j];
var eleProp = style[propName];
if (eleProp != null) {
if (eleProp.bypass) {
eleProp.bypassed = null;
} else {
style[propName] = null;
}
}
}
}
}
}; // updates the visual style for all elements (useful for manual style modification after init)
styfn.update = function () {
var cy = this._private.cy;
var eles = cy.mutableElements();
eles.updateStyle();
}; // diffProps : { name => { prev, next } }
styfn.updateTransitions = function (ele, diffProps) {
var self = this;
var _p = ele._private;
var props = ele.pstyle('transition-property').value;
var duration = ele.pstyle('transition-duration').pfValue;
var delay = ele.pstyle('transition-delay').pfValue;
if (props.length > 0 && duration > 0) {
var style = {}; // build up the style to animate towards
var anyPrev = false;
for (var i = 0; i < props.length; i++) {
var prop = props[i];
var styProp = ele.pstyle(prop);
var diffProp = diffProps[prop];
if (!diffProp) {
continue;
}
var prevProp = diffProp.prev;
var fromProp = prevProp;
var toProp = diffProp.next != null ? diffProp.next : styProp;
var diff = false;
var initVal = void 0;
var initDt = 0.000001; // delta time % value for initVal (allows animating out of init zero opacity)
if (!fromProp) {
continue;
} // consider px values
if (number(fromProp.pfValue) && number(toProp.pfValue)) {
diff = toProp.pfValue - fromProp.pfValue; // nonzero is truthy
initVal = fromProp.pfValue + initDt * diff; // consider numerical values
} else if (number(fromProp.value) && number(toProp.value)) {
diff = toProp.value - fromProp.value; // nonzero is truthy
initVal = fromProp.value + initDt * diff; // consider colour values
} else if (array(fromProp.value) && array(toProp.value)) {
diff = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2];
initVal = fromProp.strValue;
} // the previous value is good for an animation only if it's different
if (diff) {
style[prop] = toProp.strValue; // to val
this.applyBypass(ele, prop, initVal); // from val
anyPrev = true;
}
} // end if props allow ani
// can't transition if there's nothing previous to transition from
if (!anyPrev) {
return;
}
_p.transitioning = true;
new Promise$1$1(function (resolve) {
if (delay > 0) {
ele.delayAnimation(delay).play().promise().then(resolve);
} else {
resolve();
}
}).then(function () {
return ele.animation({
style: style,
duration: duration,
easing: ele.pstyle('transition-timing-function').value,
queue: false
}).play().promise();
}).then(function () {
// if( !isBypass ){
self.removeBypasses(ele, props);
ele.emitAndNotify('style'); // }
_p.transitioning = false;
});
} else if (_p.transitioning) {
this.removeBypasses(ele, props);
ele.emitAndNotify('style');
_p.transitioning = false;
}
};
styfn.checkTrigger = function (ele, name, fromValue, toValue, getTrigger, onTrigger) {
var prop = this.properties[name];
var triggerCheck = getTrigger(prop);
if (triggerCheck != null && triggerCheck(fromValue, toValue)) {
onTrigger(prop);
}
};
styfn.checkZOrderTrigger = function (ele, name, fromValue, toValue) {
var _this = this;
this.checkTrigger(ele, name, fromValue, toValue, function (prop) {
return prop.triggersZOrder;
}, function () {
_this._private.cy.notify('zorder', ele);
});
};
styfn.checkBoundsTrigger = function (ele, name, fromValue, toValue) {
this.checkTrigger(ele, name, fromValue, toValue, function (prop) {
return prop.triggersBounds;
}, function (prop) {
ele.dirtyCompoundBoundsCache();
ele.dirtyBoundingBoxCache(); // if the prop change makes the bb of pll bezier edges invalid,
// then dirty the pll edge bb cache as well
if ( // only for beziers -- so performance of other edges isn't affected
name === 'curve-style' && (fromValue === 'bezier' || toValue === 'bezier') && prop.triggersBoundsOfParallelBeziers) {
ele.parallelEdges().forEach(function (pllEdge) {
if (pllEdge.isBundledBezier()) {
pllEdge.dirtyBoundingBoxCache();
}
});
}
});
};
styfn.checkTriggers = function (ele, name, fromValue, toValue) {
ele.dirtyStyleCache();
this.checkZOrderTrigger(ele, name, fromValue, toValue);
this.checkBoundsTrigger(ele, name, fromValue, toValue);
};
var styfn$1 = {}; // bypasses are applied to an existing style on an element, and just tacked on temporarily
// returns true iff application was successful for at least 1 specified property
styfn$1.applyBypass = function (eles, name, value, updateTransitions) {
var self = this;
var props = [];
var isBypass = true; // put all the properties (can specify one or many) in an array after parsing them
if (name === '*' || name === '**') {
// apply to all property names
if (value !== undefined) {
for (var i = 0; i < self.properties.length; i++) {
var prop = self.properties[i];
var _name = prop.name;
var parsedProp = this.parse(_name, value, true);
if (parsedProp) {
props.push(parsedProp);
}
}
}
} else if (string(name)) {
// then parse the single property
var _parsedProp = this.parse(name, value, true);
if (_parsedProp) {
props.push(_parsedProp);
}
} else if (plainObject(name)) {
// then parse each property
var specifiedProps = name;
updateTransitions = value;
var names = Object.keys(specifiedProps);
for (var _i = 0; _i < names.length; _i++) {
var _name2 = names[_i];
var _value = specifiedProps[_name2];
if (_value === undefined) {
// try camel case name too
_value = specifiedProps[dash2camel(_name2)];
}
if (_value !== undefined) {
var _parsedProp2 = this.parse(_name2, _value, true);
if (_parsedProp2) {
props.push(_parsedProp2);
}
}
}
} else {
// can't do anything without well defined properties
return false;
} // we've failed if there are no valid properties
if (props.length === 0) {
return false;
} // now, apply the bypass properties on the elements
var ret = false; // return true if at least one succesful bypass applied
for (var _i2 = 0; _i2 < eles.length; _i2++) {
// for each ele
var ele = eles[_i2];
var diffProps = {};
var diffProp = void 0;
for (var j = 0; j < props.length; j++) {
// for each prop
var _prop = props[j];
if (updateTransitions) {
var prevProp = ele.pstyle(_prop.name);
diffProp = diffProps[_prop.name] = {
prev: prevProp
};
}
ret = this.applyParsedProperty(ele, copy(_prop)) || ret;
if (updateTransitions) {
diffProp.next = ele.pstyle(_prop.name);
}
} // for props
if (ret) {
this.updateStyleHints(ele);
}
if (updateTransitions) {
this.updateTransitions(ele, diffProps, isBypass);
}
} // for eles
return ret;
}; // only useful in specific cases like animation
styfn$1.overrideBypass = function (eles, name, value) {
name = camel2dash(name);
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var prop = ele._private.style[name];
var type = this.properties[name].type;
var isColor = type.color;
var isMulti = type.mutiple;
var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value;
if (!prop || !prop.bypass) {
// need a bypass if one doesn't exist
this.applyBypass(ele, name, value);
} else {
prop.value = value;
if (prop.pfValue != null) {
prop.pfValue = value;
}
if (isColor) {
prop.strValue = 'rgb(' + value.join(',') + ')';
} else if (isMulti) {
prop.strValue = value.join(' ');
} else {
prop.strValue = '' + value;
}
this.updateStyleHints(ele);
}
this.checkTriggers(ele, name, oldValue, value);
}
};
styfn$1.removeAllBypasses = function (eles, updateTransitions) {
return this.removeBypasses(eles, this.propertyNames, updateTransitions);
};
styfn$1.removeBypasses = function (eles, props, updateTransitions) {
var isBypass = true;
for (var j = 0; j < eles.length; j++) {
var ele = eles[j];
var diffProps = {};
for (var i = 0; i < props.length; i++) {
var name = props[i];
var prop = this.properties[name];
var prevProp = ele.pstyle(prop.name);
if (!prevProp || !prevProp.bypass) {
// if a bypass doesn't exist for the prop, nothing needs to be removed
continue;
}
var value = ''; // empty => remove bypass
var parsedProp = this.parse(name, value, true);
var diffProp = diffProps[prop.name] = {
prev: prevProp
};
this.applyParsedProperty(ele, parsedProp);
diffProp.next = ele.pstyle(prop.name);
} // for props
this.updateStyleHints(ele);
if (updateTransitions) {
this.updateTransitions(ele, diffProps, isBypass);
}
} // for eles
};
var styfn$2 = {}; // gets what an em size corresponds to in pixels relative to a dom element
styfn$2.getEmSizeInPixels = function () {
var px = this.containerCss('font-size');
if (px != null) {
return parseFloat(px);
} else {
return 1; // for headless
}
}; // gets css property from the core container
styfn$2.containerCss = function (propName) {
var cy = this._private.cy;
var domElement = cy.container();
if (window$1 && domElement && window$1.getComputedStyle) {
return window$1.getComputedStyle(domElement).getPropertyValue(propName);
}
};
var styfn$3 = {}; // gets the rendered style for an element
styfn$3.getRenderedStyle = function (ele, prop) {
if (prop) {
return this.getStylePropertyValue(ele, prop, true);
} else {
return this.getRawStyle(ele, true);
}
}; // gets the raw style for an element
styfn$3.getRawStyle = function (ele, isRenderedVal) {
var self = this;
ele = ele[0]; // insure it's an element
if (ele) {
var rstyle = {};
for (var i = 0; i < self.properties.length; i++) {
var prop = self.properties[i];
var val = self.getStylePropertyValue(ele, prop.name, isRenderedVal);
if (val != null) {
rstyle[prop.name] = val;
rstyle[dash2camel(prop.name)] = val;
}
}
return rstyle;
}
};
styfn$3.getIndexedStyle = function (ele, property, subproperty, index) {
var pstyle = ele.pstyle(property)[subproperty][index];
return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property)[subproperty][0];
};
styfn$3.getStylePropertyValue = function (ele, propName, isRenderedVal) {
var self = this;
ele = ele[0]; // insure it's an element
if (ele) {
var prop = self.properties[propName];
if (prop.alias) {
prop = prop.pointsTo;
}
var type = prop.type;
var styleProp = ele.pstyle(prop.name);
if (styleProp) {
var value = styleProp.value,
units = styleProp.units,
strValue = styleProp.strValue;
if (isRenderedVal && type.number && value != null && number(value)) {
var zoom = ele.cy().zoom();
var getRenderedValue = function getRenderedValue(val) {
return val * zoom;
};
var getValueStringWithUnits = function getValueStringWithUnits(val, units) {
return getRenderedValue(val) + units;
};
var isArrayValue = array(value);
var haveUnits = isArrayValue ? units.every(function (u) {
return u != null;
}) : units != null;
if (haveUnits) {
if (isArrayValue) {
return value.map(function (v, i) {
return getValueStringWithUnits(v, units[i]);
}).join(' ');
} else {
return getValueStringWithUnits(value, units);
}
} else {
if (isArrayValue) {
return value.map(function (v) {
return string(v) ? v : '' + getRenderedValue(v);
}).join(' ');
} else {
return '' + getRenderedValue(value);
}
}
} else if (strValue != null) {
return strValue;
}
}
return null;
}
};
styfn$3.getAnimationStartStyle = function (ele, aniProps) {
var rstyle = {};
for (var i = 0; i < aniProps.length; i++) {
var aniProp = aniProps[i];
var name = aniProp.name;
var styleProp = ele.pstyle(name);
if (styleProp !== undefined) {
// then make a prop of it
if (plainObject(styleProp)) {
styleProp = this.parse(name, styleProp.strValue);
} else {
styleProp = this.parse(name, styleProp);
}
}
if (styleProp) {
rstyle[name] = styleProp;
}
}
return rstyle;
};
styfn$3.getPropsList = function (propsObj) {
var self = this;
var rstyle = [];
var style = propsObj;
var props = self.properties;
if (style) {
var names = Object.keys(style);
for (var i = 0; i < names.length; i++) {
var name = names[i];
var val = style[name];
var prop = props[name] || props[camel2dash(name)];
var styleProp = this.parse(prop.name, val);
if (styleProp) {
rstyle.push(styleProp);
}
}
}
return rstyle;
};
styfn$3.getNonDefaultPropertiesHash = function (ele, propNames, seed) {
var hash = seed.slice();
var name, val, strVal, chVal;
var i, j;
for (i = 0; i < propNames.length; i++) {
name = propNames[i];
val = ele.pstyle(name, false);
if (val == null) {
continue;
} else if (val.pfValue != null) {
hash[0] = hashInt(chVal, hash[0]);
hash[1] = hashIntAlt(chVal, hash[1]);
} else {
strVal = val.strValue;
for (j = 0; j < strVal.length; j++) {
chVal = strVal.charCodeAt(j);
hash[0] = hashInt(chVal, hash[0]);
hash[1] = hashIntAlt(chVal, hash[1]);
}
}
}
return hash;
};
styfn$3.getPropertiesHash = styfn$3.getNonDefaultPropertiesHash;
var styfn$4 = {};
styfn$4.appendFromJson = function (json) {
var style = this;
for (var i = 0; i < json.length; i++) {
var context = json[i];
var selector = context.selector;
var props = context.style || context.css;
var names = Object.keys(props);
style.selector(selector); // apply selector
for (var j = 0; j < names.length; j++) {
var name = names[j];
var value = props[name];
style.css(name, value); // apply property
}
}
return style;
}; // accessible cy.style() function
styfn$4.fromJson = function (json) {
var style = this;
style.resetToDefault();
style.appendFromJson(json);
return style;
}; // get json from cy.style() api
styfn$4.json = function () {
var json = [];
for (var i = this.defaultLength; i < this.length; i++) {
var cxt = this[i];
var selector = cxt.selector;
var props = cxt.properties;
var css = {};
for (var j = 0; j < props.length; j++) {
var prop = props[j];
css[prop.name] = prop.strValue;
}
json.push({
selector: !selector ? 'core' : selector.toString(),
style: css
});
}
return json;
};
var styfn$5 = {};
styfn$5.appendFromString = function (string) {
var self = this;
var style = this;
var remaining = '' + string;
var selAndBlockStr;
var blockRem;
var propAndValStr; // remove comments from the style string
remaining = remaining.replace(/[/][*](\s|.)+?[*][/]/g, '');
function removeSelAndBlockFromRemaining() {
// remove the parsed selector and block from the remaining text to parse
if (remaining.length > selAndBlockStr.length) {
remaining = remaining.substr(selAndBlockStr.length);
} else {
remaining = '';
}
}
function removePropAndValFromRem() {
// remove the parsed property and value from the remaining block text to parse
if (blockRem.length > propAndValStr.length) {
blockRem = blockRem.substr(propAndValStr.length);
} else {
blockRem = '';
}
}
for (;;) {
var nothingLeftToParse = remaining.match(/^\s*$/);
if (nothingLeftToParse) {
break;
}
var selAndBlock = remaining.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);
if (!selAndBlock) {
warn('Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: ' + remaining);
break;
}
selAndBlockStr = selAndBlock[0]; // parse the selector
var selectorStr = selAndBlock[1];
if (selectorStr !== 'core') {
var selector = new Selector(selectorStr);
if (selector.invalid) {
warn('Skipping parsing of block: Invalid selector found in string stylesheet: ' + selectorStr); // skip this selector and block
removeSelAndBlockFromRemaining();
continue;
}
} // parse the block of properties and values
var blockStr = selAndBlock[2];
var invalidBlock = false;
blockRem = blockStr;
var props = [];
for (;;) {
var _nothingLeftToParse = blockRem.match(/^\s*$/);
if (_nothingLeftToParse) {
break;
}
var propAndVal = blockRem.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/);
if (!propAndVal) {
warn('Skipping parsing of block: Invalid formatting of style property and value definitions found in:' + blockStr);
invalidBlock = true;
break;
}
propAndValStr = propAndVal[0];
var propStr = propAndVal[1];
var valStr = propAndVal[2];
var prop = self.properties[propStr];
if (!prop) {
warn('Skipping property: Invalid property name in: ' + propAndValStr); // skip this property in the block
removePropAndValFromRem();
continue;
}
var parsedProp = style.parse(propStr, valStr);
if (!parsedProp) {
warn('Skipping property: Invalid property definition in: ' + propAndValStr); // skip this property in the block
removePropAndValFromRem();
continue;
}
props.push({
name: propStr,
val: valStr
});
removePropAndValFromRem();
}
if (invalidBlock) {
removeSelAndBlockFromRemaining();
break;
} // put the parsed block in the style
style.selector(selectorStr);
for (var i = 0; i < props.length; i++) {
var _prop = props[i];
style.css(_prop.name, _prop.val);
}
removeSelAndBlockFromRemaining();
}
return style;
};
styfn$5.fromString = function (string) {
var style = this;
style.resetToDefault();
style.appendFromString(string);
return style;
};
var styfn$6 = {};
(function () {
var number = number$1;
var rgba = rgbaNoBackRefs;
var hsla = hslaNoBackRefs;
var hex3$1 = hex3;
var hex6$1 = hex6;
var data = function data(prefix) {
return '^' + prefix + '\\s*\\(\\s*([\\w\\.]+)\\s*\\)$';
};
var mapData = function mapData(prefix) {
var mapArg = number + '|\\w+|' + rgba + '|' + hsla + '|' + hex3$1 + '|' + hex6$1;
return '^' + prefix + '\\s*\\(([\\w\\.]+)\\s*\\,\\s*(' + number + ')\\s*\\,\\s*(' + number + ')\\s*,\\s*(' + mapArg + ')\\s*\\,\\s*(' + mapArg + ')\\)$';
};
var urlRegexes = ['^url\\s*\\(\\s*[\'"]?(.+?)[\'"]?\\s*\\)$', '^(none)$', '^(.+)$']; // each visual style property has a type and needs to be validated according to it
styfn$6.types = {
time: {
number: true,
min: 0,
units: 's|ms',
implicitUnits: 'ms'
},
percent: {
number: true,
min: 0,
max: 100,
units: '%',
implicitUnits: '%'
},
percentages: {
number: true,
min: 0,
max: 100,
units: '%',
implicitUnits: '%',
multiple: true
},
zeroOneNumber: {
number: true,
min: 0,
max: 1,
unitless: true
},
zeroOneNumbers: {
number: true,
min: 0,
max: 1,
unitless: true,
multiple: true
},
nOneOneNumber: {
number: true,
min: -1,
max: 1,
unitless: true
},
nonNegativeInt: {
number: true,
min: 0,
integer: true,
unitless: true
},
position: {
enums: ['parent', 'origin']
},
nodeSize: {
number: true,
min: 0,
enums: ['label']
},
number: {
number: true,
unitless: true
},
numbers: {
number: true,
unitless: true,
multiple: true
},
positiveNumber: {
number: true,
unitless: true,
min: 0,
strictMin: true
},
size: {
number: true,
min: 0
},
bidirectionalSize: {
number: true
},
// allows negative
bidirectionalSizeMaybePercent: {
number: true,
allowPercent: true
},
// allows negative
bidirectionalSizes: {
number: true,
multiple: true
},
// allows negative
sizeMaybePercent: {
number: true,
min: 0,
allowPercent: true
},
axisDirection: {
enums: ['horizontal', 'leftward', 'rightward', 'vertical', 'upward', 'downward', 'auto']
},
paddingRelativeTo: {
enums: ['width', 'height', 'average', 'min', 'max']
},
bgWH: {
number: true,
min: 0,
allowPercent: true,
enums: ['auto'],
multiple: true
},
bgPos: {
number: true,
allowPercent: true,
multiple: true
},
bgRelativeTo: {
enums: ['inner', 'include-padding'],
multiple: true
},
bgRepeat: {
enums: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'],
multiple: true
},
bgFit: {
enums: ['none', 'contain', 'cover'],
multiple: true
},
bgCrossOrigin: {
enums: ['anonymous', 'use-credentials'],
multiple: true
},
bgClip: {
enums: ['none', 'node'],
multiple: true
},
bgContainment: {
enums: ['inside', 'over'],
multiple: true
},
color: {
color: true
},
colors: {
color: true,
multiple: true
},
fill: {
enums: ['solid', 'linear-gradient', 'radial-gradient']
},
bool: {
enums: ['yes', 'no']
},
bools: {
enums: ['yes', 'no'],
multiple: true
},
lineStyle: {
enums: ['solid', 'dotted', 'dashed']
},
lineCap: {
enums: ['butt', 'round', 'square']
},
borderStyle: {
enums: ['solid', 'dotted', 'dashed', 'double']
},
curveStyle: {
enums: ['bezier', 'unbundled-bezier', 'haystack', 'segments', 'straight', 'straight-triangle', 'taxi']
},
fontFamily: {
regex: '^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$'
},
fontStyle: {
enums: ['italic', 'normal', 'oblique']
},
fontWeight: {
enums: ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '800', '900', 100, 200, 300, 400, 500, 600, 700, 800, 900]
},
textDecoration: {
enums: ['none', 'underline', 'overline', 'line-through']
},
textTransform: {
enums: ['none', 'uppercase', 'lowercase']
},
textWrap: {
enums: ['none', 'wrap', 'ellipsis']
},
textOverflowWrap: {
enums: ['whitespace', 'anywhere']
},
textBackgroundShape: {
enums: ['rectangle', 'roundrectangle', 'round-rectangle']
},
nodeShape: {
enums: ['rectangle', 'roundrectangle', 'round-rectangle', 'cutrectangle', 'cut-rectangle', 'bottomroundrectangle', 'bottom-round-rectangle', 'barrel', 'ellipse', 'triangle', 'round-triangle', 'square', 'pentagon', 'round-pentagon', 'hexagon', 'round-hexagon', 'concavehexagon', 'concave-hexagon', 'heptagon', 'round-heptagon', 'octagon', 'round-octagon', 'tag', 'round-tag', 'star', 'diamond', 'round-diamond', 'vee', 'rhomboid', 'polygon']
},
overlayShape: {
enums: ['roundrectangle', 'round-rectangle', 'ellipse']
},
compoundIncludeLabels: {
enums: ['include', 'exclude']
},
arrowShape: {
enums: ['tee', 'triangle', 'triangle-tee', 'circle-triangle', 'triangle-cross', 'triangle-backcurve', 'vee', 'square', 'circle', 'diamond', 'chevron', 'none']
},
arrowFill: {
enums: ['filled', 'hollow']
},
display: {
enums: ['element', 'none']
},
visibility: {
enums: ['hidden', 'visible']
},
zCompoundDepth: {
enums: ['bottom', 'orphan', 'auto', 'top']
},
zIndexCompare: {
enums: ['auto', 'manual']
},
valign: {
enums: ['top', 'center', 'bottom']
},
halign: {
enums: ['left', 'center', 'right']
},
justification: {
enums: ['left', 'center', 'right', 'auto']
},
text: {
string: true
},
data: {
mapping: true,
regex: data('data')
},
layoutData: {
mapping: true,
regex: data('layoutData')
},
scratch: {
mapping: true,
regex: data('scratch')
},
mapData: {
mapping: true,
regex: mapData('mapData')
},
mapLayoutData: {
mapping: true,
regex: mapData('mapLayoutData')
},
mapScratch: {
mapping: true,
regex: mapData('mapScratch')
},
fn: {
mapping: true,
fn: true
},
url: {
regexes: urlRegexes,
singleRegexMatchValue: true
},
urls: {
regexes: urlRegexes,
singleRegexMatchValue: true,
multiple: true
},
propList: {
propList: true
},
angle: {
number: true,
units: 'deg|rad',
implicitUnits: 'rad'
},
textRotation: {
number: true,
units: 'deg|rad',
implicitUnits: 'rad',
enums: ['none', 'autorotate']
},
polygonPointList: {
number: true,
multiple: true,
evenMultiple: true,
min: -1,
max: 1,
unitless: true
},
edgeDistances: {
enums: ['intersection', 'node-position']
},
edgeEndpoint: {
number: true,
multiple: true,
units: '%|px|em|deg|rad',
implicitUnits: 'px',
enums: ['inside-to-node', 'outside-to-node', 'outside-to-node-or-label', 'outside-to-line', 'outside-to-line-or-label'],
singleEnum: true,
validate: function validate(valArr, unitsArr) {
switch (valArr.length) {
case 2:
// can be % or px only
return unitsArr[0] !== 'deg' && unitsArr[0] !== 'rad' && unitsArr[1] !== 'deg' && unitsArr[1] !== 'rad';
case 1:
// can be enum, deg, or rad only
return string(valArr[0]) || unitsArr[0] === 'deg' || unitsArr[0] === 'rad';
default:
return false;
}
}
},
easing: {
regexes: ['^(spring)\\s*\\(\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*\\)$', '^(cubic-bezier)\\s*\\(\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*\\)$'],
enums: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'ease-in-sine', 'ease-out-sine', 'ease-in-out-sine', 'ease-in-quad', 'ease-out-quad', 'ease-in-out-quad', 'ease-in-cubic', 'ease-out-cubic', 'ease-in-out-cubic', 'ease-in-quart', 'ease-out-quart', 'ease-in-out-quart', 'ease-in-quint', 'ease-out-quint', 'ease-in-out-quint', 'ease-in-expo', 'ease-out-expo', 'ease-in-out-expo', 'ease-in-circ', 'ease-out-circ', 'ease-in-out-circ']
},
gradientDirection: {
enums: ['to-bottom', 'to-top', 'to-left', 'to-right', 'to-bottom-right', 'to-bottom-left', 'to-top-right', 'to-top-left', 'to-right-bottom', 'to-left-bottom', 'to-right-top', 'to-left-top']
},
boundsExpansion: {
number: true,
multiple: true,
min: 0,
validate: function validate(valArr) {
var length = valArr.length;
return length === 1 || length === 2 || length === 4;
}
}
};
var diff = {
zeroNonZero: function zeroNonZero(val1, val2) {
if ((val1 == null || val2 == null) && val1 !== val2) {
return true; // null cases could represent any value
}
if (val1 == 0 && val2 != 0) {
return true;
} else if (val1 != 0 && val2 == 0) {
return true;
} else {
return false;
}
},
any: function any(val1, val2) {
return val1 != val2;
},
emptyNonEmpty: function emptyNonEmpty(str1, str2) {
var empty1 = emptyString(str1);
var empty2 = emptyString(str2);
return empty1 && !empty2 || !empty1 && empty2;
}
}; // define visual style properties
//
// - n.b. adding a new group of props may require updates to updateStyleHints()
// - adding new props to an existing group gets handled automatically
var t = styfn$6.types;
var mainLabel = [{
name: 'label',
type: t.text,
triggersBounds: diff.any,
triggersZOrder: diff.emptyNonEmpty
}, {
name: 'text-rotation',
type: t.textRotation,
triggersBounds: diff.any
}, {
name: 'text-margin-x',
type: t.bidirectionalSize,
triggersBounds: diff.any
}, {
name: 'text-margin-y',
type: t.bidirectionalSize,
triggersBounds: diff.any
}];
var sourceLabel = [{
name: 'source-label',
type: t.text,
triggersBounds: diff.any
}, {
name: 'source-text-rotation',
type: t.textRotation,
triggersBounds: diff.any
}, {
name: 'source-text-margin-x',
type: t.bidirectionalSize,
triggersBounds: diff.any
}, {
name: 'source-text-margin-y',
type: t.bidirectionalSize,
triggersBounds: diff.any
}, {
name: 'source-text-offset',
type: t.size,
triggersBounds: diff.any
}];
var targetLabel = [{
name: 'target-label',
type: t.text,
triggersBounds: diff.any
}, {
name: 'target-text-rotation',
type: t.textRotation,
triggersBounds: diff.any
}, {
name: 'target-text-margin-x',
type: t.bidirectionalSize,
triggersBounds: diff.any
}, {
name: 'target-text-margin-y',
type: t.bidirectionalSize,
triggersBounds: diff.any
}, {
name: 'target-text-offset',
type: t.size,
triggersBounds: diff.any
}];
var labelDimensions = [{
name: 'font-family',
type: t.fontFamily,
triggersBounds: diff.any
}, {
name: 'font-style',
type: t.fontStyle,
triggersBounds: diff.any
}, {
name: 'font-weight',
type: t.fontWeight,
triggersBounds: diff.any
}, {
name: 'font-size',
type: t.size,
triggersBounds: diff.any
}, {
name: 'text-transform',
type: t.textTransform,
triggersBounds: diff.any
}, {
name: 'text-wrap',
type: t.textWrap,
triggersBounds: diff.any
}, {
name: 'text-overflow-wrap',
type: t.textOverflowWrap,
triggersBounds: diff.any
}, {
name: 'text-max-width',
type: t.size,
triggersBounds: diff.any
}, {
name: 'text-outline-width',
type: t.size,
triggersBounds: diff.any
}, {
name: 'line-height',
type: t.positiveNumber,
triggersBounds: diff.any
}];
var commonLabel = [{
name: 'text-valign',
type: t.valign,
triggersBounds: diff.any
}, {
name: 'text-halign',
type: t.halign,
triggersBounds: diff.any
}, {
name: 'color',
type: t.color
}, {
name: 'text-outline-color',
type: t.color
}, {
name: 'text-outline-opacity',
type: t.zeroOneNumber
}, {
name: 'text-background-color',
type: t.color
}, {
name: 'text-background-opacity',
type: t.zeroOneNumber
}, {
name: 'text-background-padding',
type: t.size,
triggersBounds: diff.any
}, {
name: 'text-border-opacity',
type: t.zeroOneNumber
}, {
name: 'text-border-color',
type: t.color
}, {
name: 'text-border-width',
type: t.size,
triggersBounds: diff.any
}, {
name: 'text-border-style',
type: t.borderStyle,
triggersBounds: diff.any
}, {
name: 'text-background-shape',
type: t.textBackgroundShape,
triggersBounds: diff.any
}, {
name: 'text-justification',
type: t.justification
}];
var behavior = [{
name: 'events',
type: t.bool
}, {
name: 'text-events',
type: t.bool
}];
var visibility = [{
name: 'display',
type: t.display,
triggersZOrder: diff.any,
triggersBounds: diff.any,
triggersBoundsOfParallelBeziers: true
}, {
name: 'visibility',
type: t.visibility,
triggersZOrder: diff.any
}, {
name: 'opacity',
type: t.zeroOneNumber,
triggersZOrder: diff.zeroNonZero
}, {
name: 'text-opacity',
type: t.zeroOneNumber
}, {
name: 'min-zoomed-font-size',
type: t.size
}, {
name: 'z-compound-depth',
type: t.zCompoundDepth,
triggersZOrder: diff.any
}, {
name: 'z-index-compare',
type: t.zIndexCompare,
triggersZOrder: diff.any
}, {
name: 'z-index',
type: t.nonNegativeInt,
triggersZOrder: diff.any
}];
var overlay = [{
name: 'overlay-padding',
type: t.size,
triggersBounds: diff.any
}, {
name: 'overlay-color',
type: t.color
}, {
name: 'overlay-opacity',
type: t.zeroOneNumber,
triggersBounds: diff.zeroNonZero
}, {
name: 'overlay-shape',
type: t.overlayShape,
triggersBounds: diff.any
}];
var underlay = [{
name: 'underlay-padding',
type: t.size,
triggersBounds: diff.any
}, {
name: 'underlay-color',
type: t.color
}, {
name: 'underlay-opacity',
type: t.zeroOneNumber,
triggersBounds: diff.zeroNonZero
}, {
name: 'underlay-shape',
type: t.overlayShape,
triggersBounds: diff.any
}];
var transition = [{
name: 'transition-property',
type: t.propList
}, {
name: 'transition-duration',
type: t.time
}, {
name: 'transition-delay',
type: t.time
}, {
name: 'transition-timing-function',
type: t.easing
}];
var nodeSizeHashOverride = function nodeSizeHashOverride(ele, parsedProp) {
if (parsedProp.value === 'label') {
return -ele.poolIndex(); // no hash key hits is using label size (hitrate for perf probably low anyway)
} else {
return parsedProp.pfValue;
}
};
var nodeBody = [{
name: 'height',
type: t.nodeSize,
triggersBounds: diff.any,
hashOverride: nodeSizeHashOverride
}, {
name: 'width',
type: t.nodeSize,
triggersBounds: diff.any,
hashOverride: nodeSizeHashOverride
}, {
name: 'shape',
type: t.nodeShape,
triggersBounds: diff.any
}, {
name: 'shape-polygon-points',
type: t.polygonPointList,
triggersBounds: diff.any
}, {
name: 'background-color',
type: t.color
}, {
name: 'background-fill',
type: t.fill
}, {
name: 'background-opacity',
type: t.zeroOneNumber
}, {
name: 'background-blacken',
type: t.nOneOneNumber
}, {
name: 'background-gradient-stop-colors',
type: t.colors
}, {
name: 'background-gradient-stop-positions',
type: t.percentages
}, {
name: 'background-gradient-direction',
type: t.gradientDirection
}, {
name: 'padding',
type: t.sizeMaybePercent,
triggersBounds: diff.any
}, {
name: 'padding-relative-to',
type: t.paddingRelativeTo,
triggersBounds: diff.any
}, {
name: 'bounds-expansion',
type: t.boundsExpansion,
triggersBounds: diff.any
}];
var nodeBorder = [{
name: 'border-color',
type: t.color
}, {
name: 'border-opacity',
type: t.zeroOneNumber
}, {
name: 'border-width',
type: t.size,
triggersBounds: diff.any
}, {
name: 'border-style',
type: t.borderStyle
}];
var backgroundImage = [{
name: 'background-image',
type: t.urls
}, {
name: 'background-image-crossorigin',
type: t.bgCrossOrigin
}, {
name: 'background-image-opacity',
type: t.zeroOneNumbers
}, {
name: 'background-image-containment',
type: t.bgContainment
}, {
name: 'background-image-smoothing',
type: t.bools
}, {
name: 'background-position-x',
type: t.bgPos
}, {
name: 'background-position-y',
type: t.bgPos
}, {
name: 'background-width-relative-to',
type: t.bgRelativeTo
}, {
name: 'background-height-relative-to',
type: t.bgRelativeTo
}, {
name: 'background-repeat',
type: t.bgRepeat
}, {
name: 'background-fit',
type: t.bgFit
}, {
name: 'background-clip',
type: t.bgClip
}, {
name: 'background-width',
type: t.bgWH
}, {
name: 'background-height',
type: t.bgWH
}, {
name: 'background-offset-x',
type: t.bgPos
}, {
name: 'background-offset-y',
type: t.bgPos
}];
var compound = [{
name: 'position',
type: t.position,
triggersBounds: diff.any
}, {
name: 'compound-sizing-wrt-labels',
type: t.compoundIncludeLabels,
triggersBounds: diff.any
}, {
name: 'min-width',
type: t.size,
triggersBounds: diff.any
}, {
name: 'min-width-bias-left',
type: t.sizeMaybePercent,
triggersBounds: diff.any
}, {
name: 'min-width-bias-right',
type: t.sizeMaybePercent,
triggersBounds: diff.any
}, {
name: 'min-height',
type: t.size,
triggersBounds: diff.any
}, {
name: 'min-height-bias-top',
type: t.sizeMaybePercent,
triggersBounds: diff.any
}, {
name: 'min-height-bias-bottom',
type: t.sizeMaybePercent,
triggersBounds: diff.any
}];
var edgeLine = [{
name: 'line-style',
type: t.lineStyle
}, {
name: 'line-color',
type: t.color
}, {
name: 'line-fill',
type: t.fill
}, {
name: 'line-cap',
type: t.lineCap
}, {
name: 'line-opacity',
type: t.zeroOneNumber
}, {
name: 'line-dash-pattern',
type: t.numbers
}, {
name: 'line-dash-offset',
type: t.number
}, {
name: 'line-gradient-stop-colors',
type: t.colors
}, {
name: 'line-gradient-stop-positions',
type: t.percentages
}, {
name: 'curve-style',
type: t.curveStyle,
triggersBounds: diff.any,
triggersBoundsOfParallelBeziers: true
}, {
name: 'haystack-radius',
type: t.zeroOneNumber,
triggersBounds: diff.any
}, {
name: 'source-endpoint',
type: t.edgeEndpoint,
triggersBounds: diff.any
}, {
name: 'target-endpoint',
type: t.edgeEndpoint,
triggersBounds: diff.any
}, {
name: 'control-point-step-size',
type: t.size,
triggersBounds: diff.any
}, {
name: 'control-point-distances',
type: t.bidirectionalSizes,
triggersBounds: diff.any
}, {
name: 'control-point-weights',
type: t.numbers,
triggersBounds: diff.any
}, {
name: 'segment-distances',
type: t.bidirectionalSizes,
triggersBounds: diff.any
}, {
name: 'segment-weights',
type: t.numbers,
triggersBounds: diff.any
}, {
name: 'taxi-turn',
type: t.bidirectionalSizeMaybePercent,
triggersBounds: diff.any
}, {
name: 'taxi-turn-min-distance',
type: t.size,
triggersBounds: diff.any
}, {
name: 'taxi-direction',
type: t.axisDirection,
triggersBounds: diff.any
}, {
name: 'edge-distances',
type: t.edgeDistances,
triggersBounds: diff.any
}, {
name: 'arrow-scale',
type: t.positiveNumber,
triggersBounds: diff.any
}, {
name: 'loop-direction',
type: t.angle,
triggersBounds: diff.any
}, {
name: 'loop-sweep',
type: t.angle,
triggersBounds: diff.any
}, {
name: 'source-distance-from-node',
type: t.size,
triggersBounds: diff.any
}, {
name: 'target-distance-from-node',
type: t.size,
triggersBounds: diff.any
}];
var ghost = [{
name: 'ghost',
type: t.bool,
triggersBounds: diff.any
}, {
name: 'ghost-offset-x',
type: t.bidirectionalSize,
triggersBounds: diff.any
}, {
name: 'ghost-offset-y',
type: t.bidirectionalSize,
triggersBounds: diff.any
}, {
name: 'ghost-opacity',
type: t.zeroOneNumber
}];
var core = [{
name: 'selection-box-color',
type: t.color
}, {
name: 'selection-box-opacity',
type: t.zeroOneNumber
}, {
name: 'selection-box-border-color',
type: t.color
}, {
name: 'selection-box-border-width',
type: t.size
}, {
name: 'active-bg-color',
type: t.color
}, {
name: 'active-bg-opacity',
type: t.zeroOneNumber
}, {
name: 'active-bg-size',
type: t.size
}, {
name: 'outside-texture-bg-color',
type: t.color
}, {
name: 'outside-texture-bg-opacity',
type: t.zeroOneNumber
}]; // pie backgrounds for nodes
var pie = [];
styfn$6.pieBackgroundN = 16; // because the pie properties are numbered, give access to a constant N (for renderer use)
pie.push({
name: 'pie-size',
type: t.sizeMaybePercent
});
for (var i = 1; i <= styfn$6.pieBackgroundN; i++) {
pie.push({
name: 'pie-' + i + '-background-color',
type: t.color
});
pie.push({
name: 'pie-' + i + '-background-size',
type: t.percent
});
pie.push({
name: 'pie-' + i + '-background-opacity',
type: t.zeroOneNumber
});
} // edge arrows
var edgeArrow = [];
var arrowPrefixes = styfn$6.arrowPrefixes = ['source', 'mid-source', 'target', 'mid-target'];
[{
name: 'arrow-shape',
type: t.arrowShape,
triggersBounds: diff.any
}, {
name: 'arrow-color',
type: t.color
}, {
name: 'arrow-fill',
type: t.arrowFill
}].forEach(function (prop) {
arrowPrefixes.forEach(function (prefix) {
var name = prefix + '-' + prop.name;
var type = prop.type,
triggersBounds = prop.triggersBounds;
edgeArrow.push({
name: name,
type: type,
triggersBounds: triggersBounds
});
});
}, {});
var props = styfn$6.properties = [].concat(behavior, transition, visibility, overlay, underlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, backgroundImage, pie, compound, edgeLine, edgeArrow, core);
var propGroups = styfn$6.propertyGroups = {
// common to all eles
behavior: behavior,
transition: transition,
visibility: visibility,
overlay: overlay,
underlay: underlay,
ghost: ghost,
// labels
commonLabel: commonLabel,
labelDimensions: labelDimensions,
mainLabel: mainLabel,
sourceLabel: sourceLabel,
targetLabel: targetLabel,
// node props
nodeBody: nodeBody,
nodeBorder: nodeBorder,
backgroundImage: backgroundImage,
pie: pie,
compound: compound,
// edge props
edgeLine: edgeLine,
edgeArrow: edgeArrow,
core: core
};
var propGroupNames = styfn$6.propertyGroupNames = {};
var propGroupKeys = styfn$6.propertyGroupKeys = Object.keys(propGroups);
propGroupKeys.forEach(function (key) {
propGroupNames[key] = propGroups[key].map(function (prop) {
return prop.name;
});
propGroups[key].forEach(function (prop) {
return prop.groupKey = key;
});
}); // define aliases
var aliases = styfn$6.aliases = [{
name: 'content',
pointsTo: 'label'
}, {
name: 'control-point-distance',
pointsTo: 'control-point-distances'
}, {
name: 'control-point-weight',
pointsTo: 'control-point-weights'
}, {
name: 'edge-text-rotation',
pointsTo: 'text-rotation'
}, {
name: 'padding-left',
pointsTo: 'padding'
}, {
name: 'padding-right',
pointsTo: 'padding'
}, {
name: 'padding-top',
pointsTo: 'padding'
}, {
name: 'padding-bottom',
pointsTo: 'padding'
}]; // list of property names
styfn$6.propertyNames = props.map(function (p) {
return p.name;
}); // allow access of properties by name ( e.g. style.properties.height )
for (var _i = 0; _i < props.length; _i++) {
var prop = props[_i];
props[prop.name] = prop; // allow lookup by name
} // map aliases
for (var _i2 = 0; _i2 < aliases.length; _i2++) {
var alias = aliases[_i2];
var pointsToProp = props[alias.pointsTo];
var aliasProp = {
name: alias.name,
alias: true,
pointsTo: pointsToProp
}; // add alias prop for parsing
props.push(aliasProp);
props[alias.name] = aliasProp; // allow lookup by name
}
})();
styfn$6.getDefaultProperty = function (name) {
return this.getDefaultProperties()[name];
};
styfn$6.getDefaultProperties = function () {
var _p = this._private;
if (_p.defaultProperties != null) {
return _p.defaultProperties;
}
var rawProps = extend({
// core props
'selection-box-color': '#ddd',
'selection-box-opacity': 0.65,
'selection-box-border-color': '#aaa',
'selection-box-border-width': 1,
'active-bg-color': 'black',
'active-bg-opacity': 0.15,
'active-bg-size': 30,
'outside-texture-bg-color': '#000',
'outside-texture-bg-opacity': 0.125,
// common node/edge props
'events': 'yes',
'text-events': 'no',
'text-valign': 'top',
'text-halign': 'center',
'text-justification': 'auto',
'line-height': 1,
'color': '#000',
'text-outline-color': '#000',
'text-outline-width': 0,
'text-outline-opacity': 1,
'text-opacity': 1,
'text-decoration': 'none',
'text-transform': 'none',
'text-wrap': 'none',
'text-overflow-wrap': 'whitespace',
'text-max-width': 9999,
'text-background-color': '#000',
'text-background-opacity': 0,
'text-background-shape': 'rectangle',
'text-background-padding': 0,
'text-border-opacity': 0,
'text-border-width': 0,
'text-border-style': 'solid',
'text-border-color': '#000',
'font-family': 'Helvetica Neue, Helvetica, sans-serif',
'font-style': 'normal',
'font-weight': 'normal',
'font-size': 16,
'min-zoomed-font-size': 0,
'text-rotation': 'none',
'source-text-rotation': 'none',
'target-text-rotation': 'none',
'visibility': 'visible',
'display': 'element',
'opacity': 1,
'z-compound-depth': 'auto',
'z-index-compare': 'auto',
'z-index': 0,
'label': '',
'text-margin-x': 0,
'text-margin-y': 0,
'source-label': '',
'source-text-offset': 0,
'source-text-margin-x': 0,
'source-text-margin-y': 0,
'target-label': '',
'target-text-offset': 0,
'target-text-margin-x': 0,
'target-text-margin-y': 0,
'overlay-opacity': 0,
'overlay-color': '#000',
'overlay-padding': 10,
'overlay-shape': 'round-rectangle',
'underlay-opacity': 0,
'underlay-color': '#000',
'underlay-padding': 10,
'underlay-shape': 'round-rectangle',
'transition-property': 'none',
'transition-duration': 0,
'transition-delay': 0,
'transition-timing-function': 'linear',
// node props
'background-blacken': 0,
'background-color': '#999',
'background-fill': 'solid',
'background-opacity': 1,
'background-image': 'none',
'background-image-crossorigin': 'anonymous',
'background-image-opacity': 1,
'background-image-containment': 'inside',
'background-image-smoothing': 'yes',
'background-position-x': '50%',
'background-position-y': '50%',
'background-offset-x': 0,
'background-offset-y': 0,
'background-width-relative-to': 'include-padding',
'background-height-relative-to': 'include-padding',
'background-repeat': 'no-repeat',
'background-fit': 'none',
'background-clip': 'node',
'background-width': 'auto',
'background-height': 'auto',
'border-color': '#000',
'border-opacity': 1,
'border-width': 0,
'border-style': 'solid',
'height': 30,
'width': 30,
'shape': 'ellipse',
'shape-polygon-points': '-1, -1, 1, -1, 1, 1, -1, 1',
'bounds-expansion': 0,
// node gradient
'background-gradient-direction': 'to-bottom',
'background-gradient-stop-colors': '#999',
'background-gradient-stop-positions': '0%',
// ghost props
'ghost': 'no',
'ghost-offset-y': 0,
'ghost-offset-x': 0,
'ghost-opacity': 0,
// compound props
'padding': 0,
'padding-relative-to': 'width',
'position': 'origin',
'compound-sizing-wrt-labels': 'include',
'min-width': 0,
'min-width-bias-left': 0,
'min-width-bias-right': 0,
'min-height': 0,
'min-height-bias-top': 0,
'min-height-bias-bottom': 0
}, {
// node pie bg
'pie-size': '100%'
}, [{
name: 'pie-{{i}}-background-color',
value: 'black'
}, {
name: 'pie-{{i}}-background-size',
value: '0%'
}, {
name: 'pie-{{i}}-background-opacity',
value: 1
}].reduce(function (css, prop) {
for (var i = 1; i <= styfn$6.pieBackgroundN; i++) {
var name = prop.name.replace('{{i}}', i);
var val = prop.value;
css[name] = val;
}
return css;
}, {}), {
// edge props
'line-style': 'solid',
'line-color': '#999',
'line-fill': 'solid',
'line-cap': 'butt',
'line-opacity': 1,
'line-gradient-stop-colors': '#999',
'line-gradient-stop-positions': '0%',
'control-point-step-size': 40,
'control-point-weights': 0.5,
'segment-weights': 0.5,
'segment-distances': 20,
'taxi-turn': '50%',
'taxi-turn-min-distance': 10,
'taxi-direction': 'auto',
'edge-distances': 'intersection',
'curve-style': 'haystack',
'haystack-radius': 0,
'arrow-scale': 1,
'loop-direction': '-45deg',
'loop-sweep': '-90deg',
'source-distance-from-node': 0,
'target-distance-from-node': 0,
'source-endpoint': 'outside-to-node',
'target-endpoint': 'outside-to-node',
'line-dash-pattern': [6, 3],
'line-dash-offset': 0
}, [{
name: 'arrow-shape',
value: 'none'
}, {
name: 'arrow-color',
value: '#999'
}, {
name: 'arrow-fill',
value: 'filled'
}].reduce(function (css, prop) {
styfn$6.arrowPrefixes.forEach(function (prefix) {
var name = prefix + '-' + prop.name;
var val = prop.value;
css[name] = val;
});
return css;
}, {}));
var parsedProps = {};
for (var i = 0; i < this.properties.length; i++) {
var prop = this.properties[i];
if (prop.pointsTo) {
continue;
}
var name = prop.name;
var val = rawProps[name];
var parsedProp = this.parse(name, val);
parsedProps[name] = parsedProp;
}
_p.defaultProperties = parsedProps;
return _p.defaultProperties;
};
styfn$6.addDefaultStylesheet = function () {
this.selector(':parent').css({
'shape': 'rectangle',
'padding': 10,
'background-color': '#eee',
'border-color': '#ccc',
'border-width': 1
}).selector('edge').css({
'width': 3
}).selector(':loop').css({
'curve-style': 'bezier'
}).selector('edge:compound').css({
'curve-style': 'bezier',
'source-endpoint': 'outside-to-line',
'target-endpoint': 'outside-to-line'
}).selector(':selected').css({
'background-color': '#0169D9',
'line-color': '#0169D9',
'source-arrow-color': '#0169D9',
'target-arrow-color': '#0169D9',
'mid-source-arrow-color': '#0169D9',
'mid-target-arrow-color': '#0169D9'
}).selector(':parent:selected').css({
'background-color': '#CCE1F9',
'border-color': '#aec8e5'
}).selector(':active').css({
'overlay-color': 'black',
'overlay-padding': 10,
'overlay-opacity': 0.25
});
this.defaultLength = this.length;
};
var styfn$7 = {}; // a caching layer for property parsing
styfn$7.parse = function (name, value, propIsBypass, propIsFlat) {
var self = this; // function values can't be cached in all cases, and there isn't much benefit of caching them anyway
if (fn(value)) {
return self.parseImplWarn(name, value, propIsBypass, propIsFlat);
}
var flatKey = propIsFlat === 'mapping' || propIsFlat === true || propIsFlat === false || propIsFlat == null ? 'dontcare' : propIsFlat;
var bypassKey = propIsBypass ? 't' : 'f';
var valueKey = '' + value;
var argHash = hashStrings(name, valueKey, bypassKey, flatKey);
var propCache = self.propCache = self.propCache || [];
var ret;
if (!(ret = propCache[argHash])) {
ret = propCache[argHash] = self.parseImplWarn(name, value, propIsBypass, propIsFlat);
} // - bypasses can't be shared b/c the value can be changed by animations or otherwise overridden
// - mappings can't be shared b/c mappings are per-element
if (propIsBypass || propIsFlat === 'mapping') {
// need a copy since props are mutated later in their lifecycles
ret = copy(ret);
if (ret) {
ret.value = copy(ret.value); // because it could be an array, e.g. colour
}
}
return ret;
};
styfn$7.parseImplWarn = function (name, value, propIsBypass, propIsFlat) {
var prop = this.parseImpl(name, value, propIsBypass, propIsFlat);
if (!prop && value != null) {
warn("The style property `".concat(name, ": ").concat(value, "` is invalid"));
}
if (prop && (prop.name === 'width' || prop.name === 'height') && value === 'label') {
warn('The style value of `label` is deprecated for `' + prop.name + '`');
}
return prop;
}; // parse a property; return null on invalid; return parsed property otherwise
// fields :
// - name : the name of the property
// - value : the parsed, native-typed value of the property
// - strValue : a string value that represents the property value in valid css
// - bypass : true iff the property is a bypass property
styfn$7.parseImpl = function (name, value, propIsBypass, propIsFlat) {
var self = this;
name = camel2dash(name); // make sure the property name is in dash form (e.g. 'property-name' not 'propertyName')
var property = self.properties[name];
var passedValue = value;
var types = self.types;
if (!property) {
return null;
} // return null on property of unknown name
if (value === undefined) {
return null;
} // can't assign undefined
// the property may be an alias
if (property.alias) {
property = property.pointsTo;
name = property.name;
}
var valueIsString = string(value);
if (valueIsString) {
// trim the value to make parsing easier
value = value.trim();
}
var type = property.type;
if (!type) {
return null;
} // no type, no luck
// check if bypass is null or empty string (i.e. indication to delete bypass property)
if (propIsBypass && (value === '' || value === null)) {
return {
name: name,
value: value,
bypass: true,
deleteBypass: true
};
} // check if value is a function used as a mapper
if (fn(value)) {
return {
name: name,
value: value,
strValue: 'fn',
mapped: types.fn,
bypass: propIsBypass
};
} // check if value is mapped
var data, mapData;
if (!valueIsString || propIsFlat || value.length < 7 || value[1] !== 'a') ; else if (value.length >= 7 && value[0] === 'd' && (data = new RegExp(types.data.regex).exec(value))) {
if (propIsBypass) {
return false;
} // mappers not allowed in bypass
var mapped = types.data;
return {
name: name,
value: data,
strValue: '' + value,
mapped: mapped,
field: data[1],
bypass: propIsBypass
};
} else if (value.length >= 10 && value[0] === 'm' && (mapData = new RegExp(types.mapData.regex).exec(value))) {
if (propIsBypass) {
return false;
} // mappers not allowed in bypass
if (type.multiple) {
return false;
} // impossible to map to num
var _mapped = types.mapData; // we can map only if the type is a colour or a number
if (!(type.color || type.number)) {
return false;
}
var valueMin = this.parse(name, mapData[4]); // parse to validate
if (!valueMin || valueMin.mapped) {
return false;
} // can't be invalid or mapped
var valueMax = this.parse(name, mapData[5]); // parse to validate
if (!valueMax || valueMax.mapped) {
return false;
} // can't be invalid or mapped
// check if valueMin and valueMax are the same
if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) {
warn('`' + name + ': ' + value + '` is not a valid mapper because the output range is zero; converting to `' + name + ': ' + valueMin.strValue + '`');
return this.parse(name, valueMin.strValue); // can't make much of a mapper without a range
} else if (type.color) {
var c1 = valueMin.value;
var c2 = valueMax.value;
var same = c1[0] === c2[0] // red
&& c1[1] === c2[1] // green
&& c1[2] === c2[2] // blue
&& ( // optional alpha
c1[3] === c2[3] // same alpha outright
|| (c1[3] == null || c1[3] === 1) && ( // full opacity for colour 1?
c2[3] == null || c2[3] === 1) // full opacity for colour 2?
);
if (same) {
return false;
} // can't make a mapper without a range
}
return {
name: name,
value: mapData,
strValue: '' + value,
mapped: _mapped,
field: mapData[1],
fieldMin: parseFloat(mapData[2]),
// min & max are numeric
fieldMax: parseFloat(mapData[3]),
valueMin: valueMin.value,
valueMax: valueMax.value,
bypass: propIsBypass
};
}
if (type.multiple && propIsFlat !== 'multiple') {
var vals;
if (valueIsString) {
vals = value.split(/\s+/);
} else if (array(value)) {
vals = value;
} else {
vals = [value];
}
if (type.evenMultiple && vals.length % 2 !== 0) {
return null;
}
var valArr = [];
var unitsArr = [];
var pfValArr = [];
var strVal = '';
var hasEnum = false;
for (var i = 0; i < vals.length; i++) {
var p = self.parse(name, vals[i], propIsBypass, 'multiple');
hasEnum = hasEnum || string(p.value);
valArr.push(p.value);
pfValArr.push(p.pfValue != null ? p.pfValue : p.value);
unitsArr.push(p.units);
strVal += (i > 0 ? ' ' : '') + p.strValue;
}
if (type.validate && !type.validate(valArr, unitsArr)) {
return null;
}
if (type.singleEnum && hasEnum) {
if (valArr.length === 1 && string(valArr[0])) {
return {
name: name,
value: valArr[0],
strValue: valArr[0],
bypass: propIsBypass
};
} else {
return null;
}
}
return {
name: name,
value: valArr,
pfValue: pfValArr,
strValue: strVal,
bypass: propIsBypass,
units: unitsArr
};
} // several types also allow enums
var checkEnums = function checkEnums() {
for (var _i = 0; _i < type.enums.length; _i++) {
var en = type.enums[_i];
if (en === value) {
return {
name: name,
value: value,
strValue: '' + value,
bypass: propIsBypass
};
}
}
return null;
}; // check the type and return the appropriate object
if (type.number) {
var units;
var implicitUnits = 'px'; // not set => px
if (type.units) {
// use specified units if set
units = type.units;
}
if (type.implicitUnits) {
implicitUnits = type.implicitUnits;
}
if (!type.unitless) {
if (valueIsString) {
var unitsRegex = 'px|em' + (type.allowPercent ? '|\\%' : '');
if (units) {
unitsRegex = units;
} // only allow explicit units if so set
var match = value.match('^(' + number$1 + ')(' + unitsRegex + ')?' + '$');
if (match) {
value = match[1];
units = match[2] || implicitUnits;
}
} else if (!units || type.implicitUnits) {
units = implicitUnits; // implicitly px if unspecified
}
}
value = parseFloat(value); // if not a number and enums not allowed, then the value is invalid
if (isNaN(value) && type.enums === undefined) {
return null;
} // check if this number type also accepts special keywords in place of numbers
// (i.e. `left`, `auto`, etc)
if (isNaN(value) && type.enums !== undefined) {
value = passedValue;
return checkEnums();
} // check if value must be an integer
if (type.integer && !integer(value)) {
return null;
} // check value is within range
if (type.min !== undefined && (value < type.min || type.strictMin && value === type.min) || type.max !== undefined && (value > type.max || type.strictMax && value === type.max)) {
return null;
}
var ret = {
name: name,
value: value,
strValue: '' + value + (units ? units : ''),
units: units,
bypass: propIsBypass
}; // normalise value in pixels
if (type.unitless || units !== 'px' && units !== 'em') {
ret.pfValue = value;
} else {
ret.pfValue = units === 'px' || !units ? value : this.getEmSizeInPixels() * value;
} // normalise value in ms
if (units === 'ms' || units === 's') {
ret.pfValue = units === 'ms' ? value : 1000 * value;
} // normalise value in rad
if (units === 'deg' || units === 'rad') {
ret.pfValue = units === 'rad' ? value : deg2rad(value);
} // normalize value in %
if (units === '%') {
ret.pfValue = value / 100;
}
return ret;
} else if (type.propList) {
var props = [];
var propsStr = '' + value;
if (propsStr === 'none') ; else {
// go over each prop
var propsSplit = propsStr.split(/\s*,\s*|\s+/);
for (var _i2 = 0; _i2 < propsSplit.length; _i2++) {
var propName = propsSplit[_i2].trim();
if (self.properties[propName]) {
props.push(propName);
} else {
warn('`' + propName + '` is not a valid property name');
}
}
if (props.length === 0) {
return null;
}
}
return {
name: name,
value: props,
strValue: props.length === 0 ? 'none' : props.join(' '),
bypass: propIsBypass
};
} else if (type.color) {
var tuple = color2tuple(value);
if (!tuple) {
return null;
}
return {
name: name,
value: tuple,
pfValue: tuple,
strValue: 'rgb(' + tuple[0] + ',' + tuple[1] + ',' + tuple[2] + ')',
// n.b. no spaces b/c of multiple support
bypass: propIsBypass
};
} else if (type.regex || type.regexes) {
// first check enums
if (type.enums) {
var enumProp = checkEnums();
if (enumProp) {
return enumProp;
}
}
var regexes = type.regexes ? type.regexes : [type.regex];
for (var _i3 = 0; _i3 < regexes.length; _i3++) {
var regex = new RegExp(regexes[_i3]); // make a regex from the type string
var m = regex.exec(value);
if (m) {
// regex matches
return {
name: name,
value: type.singleRegexMatchValue ? m[1] : m,
strValue: '' + value,
bypass: propIsBypass
};
}
}
return null; // didn't match any
} else if (type.string) {
// just return
return {
name: name,
value: '' + value,
strValue: '' + value,
bypass: propIsBypass
};
} else if (type.enums) {
// check enums last because it's a combo type in others
return checkEnums();
} else {
return null; // not a type we can handle
}
};
var Style = function Style(cy) {
if (!(this instanceof Style)) {
return new Style(cy);
}
if (!core(cy)) {
error('A style must have a core reference');
return;
}
this._private = {
cy: cy,
coreStyle: {}
};
this.length = 0;
this.resetToDefault();
};
var styfn$8 = Style.prototype;
styfn$8.instanceString = function () {
return 'style';
}; // remove all contexts
styfn$8.clear = function () {
var _p = this._private;
var cy = _p.cy;
var eles = cy.elements();
for (var i = 0; i < this.length; i++) {
this[i] = undefined;
}
this.length = 0;
_p.contextStyles = {};
_p.propDiffs = {};
this.cleanElements(eles, true);
eles.forEach(function (ele) {
var ele_p = ele[0]._private;
ele_p.styleDirty = true;
ele_p.appliedInitStyle = false;
});
return this; // chaining
};
styfn$8.resetToDefault = function () {
this.clear();
this.addDefaultStylesheet();
return this;
}; // builds a style object for the 'core' selector
styfn$8.core = function (propName) {
return this._private.coreStyle[propName] || this.getDefaultProperty(propName);
}; // create a new context from the specified selector string and switch to that context
styfn$8.selector = function (selectorStr) {
// 'core' is a special case and does not need a selector
var selector = selectorStr === 'core' ? null : new Selector(selectorStr);
var i = this.length++; // new context means new index
this[i] = {
selector: selector,
properties: [],
mappedProperties: [],
index: i
};
return this; // chaining
}; // add one or many css rules to the current context
styfn$8.css = function () {
var self = this;
var args = arguments;
if (args.length === 1) {
var map = args[0];
for (var i = 0; i < self.properties.length; i++) {
var prop = self.properties[i];
var mapVal = map[prop.name];
if (mapVal === undefined) {
mapVal = map[dash2camel(prop.name)];
}
if (mapVal !== undefined) {
this.cssRule(prop.name, mapVal);
}
}
} else if (args.length === 2) {
this.cssRule(args[0], args[1]);
} // do nothing if args are invalid
return this; // chaining
};
styfn$8.style = styfn$8.css; // add a single css rule to the current context
styfn$8.cssRule = function (name, value) {
// name-value pair
var property = this.parse(name, value); // add property to current context if valid
if (property) {
var i = this.length - 1;
this[i].properties.push(property);
this[i].properties[property.name] = property; // allow access by name as well
if (property.name.match(/pie-(\d+)-background-size/) && property.value) {
this._private.hasPie = true;
}
if (property.mapped) {
this[i].mappedProperties.push(property);
} // add to core style if necessary
var currentSelectorIsCore = !this[i].selector;
if (currentSelectorIsCore) {
this._private.coreStyle[property.name] = property;
}
}
return this; // chaining
};
styfn$8.append = function (style) {
if (stylesheet(style)) {
style.appendToStyle(this);
} else if (array(style)) {
this.appendFromJson(style);
} else if (string(style)) {
this.appendFromString(style);
} // you probably wouldn't want to append a Style, since you'd duplicate the default parts
return this;
}; // static function
Style.fromJson = function (cy, json) {
var style = new Style(cy);
style.fromJson(json);
return style;
};
Style.fromString = function (cy, string) {
return new Style(cy).fromString(string);
};
[styfn, styfn$1, styfn$2, styfn$3, styfn$4, styfn$5, styfn$6, styfn$7].forEach(function (props) {
extend(styfn$8, props);
});
Style.types = styfn$8.types;
Style.properties = styfn$8.properties;
Style.propertyGroups = styfn$8.propertyGroups;
Style.propertyGroupNames = styfn$8.propertyGroupNames;
Style.propertyGroupKeys = styfn$8.propertyGroupKeys;
var corefn$7 = {
style: function style(newStyle) {
if (newStyle) {
var s = this.setStyle(newStyle);
s.update();
}
return this._private.style;
},
setStyle: function setStyle(style) {
var _p = this._private;
if (stylesheet(style)) {
_p.style = style.generateStyle(this);
} else if (array(style)) {
_p.style = Style.fromJson(this, style);
} else if (string(style)) {
_p.style = Style.fromString(this, style);
} else {
_p.style = Style(this);
}
return _p.style;
},
// e.g. cy.data() changed => recalc ele mappers
updateStyle: function updateStyle() {
this.mutableElements().updateStyle(); // just send to all eles
}
};
var defaultSelectionType = 'single';
var corefn$8 = {
autolock: function autolock(bool) {
if (bool !== undefined) {
this._private.autolock = bool ? true : false;
} else {
return this._private.autolock;
}
return this; // chaining
},
autoungrabify: function autoungrabify(bool) {
if (bool !== undefined) {
this._private.autoungrabify = bool ? true : false;
} else {
return this._private.autoungrabify;
}
return this; // chaining
},
autounselectify: function autounselectify(bool) {
if (bool !== undefined) {
this._private.autounselectify = bool ? true : false;
} else {
return this._private.autounselectify;
}
return this; // chaining
},
selectionType: function selectionType(selType) {
var _p = this._private;
if (_p.selectionType == null) {
_p.selectionType = defaultSelectionType;
}
if (selType !== undefined) {
if (selType === 'additive' || selType === 'single') {
_p.selectionType = selType;
}
} else {
return _p.selectionType;
}
return this;
},
panningEnabled: function panningEnabled(bool) {
if (bool !== undefined) {
this._private.panningEnabled = bool ? true : false;
} else {
return this._private.panningEnabled;
}
return this; // chaining
},
userPanningEnabled: function userPanningEnabled(bool) {
if (bool !== undefined) {
this._private.userPanningEnabled = bool ? true : false;
} else {
return this._private.userPanningEnabled;
}
return this; // chaining
},
zoomingEnabled: function zoomingEnabled(bool) {
if (bool !== undefined) {
this._private.zoomingEnabled = bool ? true : false;
} else {
return this._private.zoomingEnabled;
}
return this; // chaining
},
userZoomingEnabled: function userZoomingEnabled(bool) {
if (bool !== undefined) {
this._private.userZoomingEnabled = bool ? true : false;
} else {
return this._private.userZoomingEnabled;
}
return this; // chaining
},
boxSelectionEnabled: function boxSelectionEnabled(bool) {
if (bool !== undefined) {
this._private.boxSelectionEnabled = bool ? true : false;
} else {
return this._private.boxSelectionEnabled;
}
return this; // chaining
},
pan: function pan() {
var args = arguments;
var pan = this._private.pan;
var dim, val, dims, x, y;
switch (args.length) {
case 0:
// .pan()
return pan;
case 1:
if (string(args[0])) {
// .pan('x')
dim = args[0];
return pan[dim];
} else if (plainObject(args[0])) {
// .pan({ x: 0, y: 100 })
if (!this._private.panningEnabled) {
return this;
}
dims = args[0];
x = dims.x;
y = dims.y;
if (number(x)) {
pan.x = x;
}
if (number(y)) {
pan.y = y;
}
this.emit('pan viewport');
}
break;
case 2:
// .pan('x', 100)
if (!this._private.panningEnabled) {
return this;
}
dim = args[0];
val = args[1];
if ((dim === 'x' || dim === 'y') && number(val)) {
pan[dim] = val;
}
this.emit('pan viewport');
break;
// invalid
}
this.notify('viewport');
return this; // chaining
},
panBy: function panBy(arg0, arg1) {
var args = arguments;
var pan = this._private.pan;
var dim, val, dims, x, y;
if (!this._private.panningEnabled) {
return this;
}
switch (args.length) {
case 1:
if (plainObject(arg0)) {
// .panBy({ x: 0, y: 100 })
dims = args[0];
x = dims.x;
y = dims.y;
if (number(x)) {
pan.x += x;
}
if (number(y)) {
pan.y += y;
}
this.emit('pan viewport');
}
break;
case 2:
// .panBy('x', 100)
dim = arg0;
val = arg1;
if ((dim === 'x' || dim === 'y') && number(val)) {
pan[dim] += val;
}
this.emit('pan viewport');
break;
// invalid
}
this.notify('viewport');
return this; // chaining
},
fit: function fit(elements, padding) {
var viewportState = this.getFitViewport(elements, padding);
if (viewportState) {
var _p = this._private;
_p.zoom = viewportState.zoom;
_p.pan = viewportState.pan;
this.emit('pan zoom viewport');
this.notify('viewport');
}
return this; // chaining
},
getFitViewport: function getFitViewport(elements, padding) {
if (number(elements) && padding === undefined) {
// elements is optional
padding = elements;
elements = undefined;
}
if (!this._private.panningEnabled || !this._private.zoomingEnabled) {
return;
}
var bb;
if (string(elements)) {
var sel = elements;
elements = this.$(sel);
} else if (boundingBox(elements)) {
// assume bb
var bbe = elements;
bb = {
x1: bbe.x1,
y1: bbe.y1,
x2: bbe.x2,
y2: bbe.y2
};
bb.w = bb.x2 - bb.x1;
bb.h = bb.y2 - bb.y1;
} else if (!elementOrCollection(elements)) {
elements = this.mutableElements();
}
if (elementOrCollection(elements) && elements.empty()) {
return;
} // can't fit to nothing
bb = bb || elements.boundingBox();
var w = this.width();
var h = this.height();
var zoom;
padding = number(padding) ? padding : 0;
if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) {
zoom = Math.min((w - 2 * padding) / bb.w, (h - 2 * padding) / bb.h); // crop zoom
zoom = zoom > this._private.maxZoom ? this._private.maxZoom : zoom;
zoom = zoom < this._private.minZoom ? this._private.minZoom : zoom;
var pan = {
// now pan to middle
x: (w - zoom * (bb.x1 + bb.x2)) / 2,
y: (h - zoom * (bb.y1 + bb.y2)) / 2
};
return {
zoom: zoom,
pan: pan
};
}
return;
},
zoomRange: function zoomRange(min, max) {
var _p = this._private;
if (max == null) {
var opts = min;
min = opts.min;
max = opts.max;
}
if (number(min) && number(max) && min <= max) {
_p.minZoom = min;
_p.maxZoom = max;
} else if (number(min) && max === undefined && min <= _p.maxZoom) {
_p.minZoom = min;
} else if (number(max) && min === undefined && max >= _p.minZoom) {
_p.maxZoom = max;
}
return this;
},
minZoom: function minZoom(zoom) {
if (zoom === undefined) {
return this._private.minZoom;
} else {
return this.zoomRange({
min: zoom
});
}
},
maxZoom: function maxZoom(zoom) {
if (zoom === undefined) {
return this._private.maxZoom;
} else {
return this.zoomRange({
max: zoom
});
}
},
getZoomedViewport: function getZoomedViewport(params) {
var _p = this._private;
var currentPan = _p.pan;
var currentZoom = _p.zoom;
var pos; // in rendered px
var zoom;
var bail = false;
if (!_p.zoomingEnabled) {
// zooming disabled
bail = true;
}
if (number(params)) {
// then set the zoom
zoom = params;
} else if (plainObject(params)) {
// then zoom about a point
zoom = params.level;
if (params.position != null) {
pos = modelToRenderedPosition(params.position, currentZoom, currentPan);
} else if (params.renderedPosition != null) {
pos = params.renderedPosition;
}
if (pos != null && !_p.panningEnabled) {
// panning disabled
bail = true;
}
} // crop zoom
zoom = zoom > _p.maxZoom ? _p.maxZoom : zoom;
zoom = zoom < _p.minZoom ? _p.minZoom : zoom; // can't zoom with invalid params
if (bail || !number(zoom) || zoom === currentZoom || pos != null && (!number(pos.x) || !number(pos.y))) {
return null;
}
if (pos != null) {
// set zoom about position
var pan1 = currentPan;
var zoom1 = currentZoom;
var zoom2 = zoom;
var pan2 = {
x: -zoom2 / zoom1 * (pos.x - pan1.x) + pos.x,
y: -zoom2 / zoom1 * (pos.y - pan1.y) + pos.y
};
return {
zoomed: true,
panned: true,
zoom: zoom2,
pan: pan2
};
} else {
// just set the zoom
return {
zoomed: true,
panned: false,
zoom: zoom,
pan: currentPan
};
}
},
zoom: function zoom(params) {
if (params === undefined) {
// get
return this._private.zoom;
} else {
// set
var vp = this.getZoomedViewport(params);
var _p = this._private;
if (vp == null || !vp.zoomed) {
return this;
}
_p.zoom = vp.zoom;
if (vp.panned) {
_p.pan.x = vp.pan.x;
_p.pan.y = vp.pan.y;
}
this.emit('zoom' + (vp.panned ? ' pan' : '') + ' viewport');
this.notify('viewport');
return this; // chaining
}
},
viewport: function viewport(opts) {
var _p = this._private;
var zoomDefd = true;
var panDefd = true;
var events = []; // to trigger
var zoomFailed = false;
var panFailed = false;
if (!opts) {
return this;
}
if (!number(opts.zoom)) {
zoomDefd = false;
}
if (!plainObject(opts.pan)) {
panDefd = false;
}
if (!zoomDefd && !panDefd) {
return this;
}
if (zoomDefd) {
var z = opts.zoom;
if (z < _p.minZoom || z > _p.maxZoom || !_p.zoomingEnabled) {
zoomFailed = true;
} else {
_p.zoom = z;
events.push('zoom');
}
}
if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) {
var p = opts.pan;
if (number(p.x)) {
_p.pan.x = p.x;
panFailed = false;
}
if (number(p.y)) {
_p.pan.y = p.y;
panFailed = false;
}
if (!panFailed) {
events.push('pan');
}
}
if (events.length > 0) {
events.push('viewport');
this.emit(events.join(' '));
this.notify('viewport');
}
return this; // chaining
},
center: function center(elements) {
var pan = this.getCenterPan(elements);
if (pan) {
this._private.pan = pan;
this.emit('pan viewport');
this.notify('viewport');
}
return this; // chaining
},
getCenterPan: function getCenterPan(elements, zoom) {
if (!this._private.panningEnabled) {
return;
}
if (string(elements)) {
var selector = elements;
elements = this.mutableElements().filter(selector);
} else if (!elementOrCollection(elements)) {
elements = this.mutableElements();
}
if (elements.length === 0) {
return;
} // can't centre pan to nothing
var bb = elements.boundingBox();
var w = this.width();
var h = this.height();
zoom = zoom === undefined ? this._private.zoom : zoom;
var pan = {
// middle
x: (w - zoom * (bb.x1 + bb.x2)) / 2,
y: (h - zoom * (bb.y1 + bb.y2)) / 2
};
return pan;
},
reset: function reset() {
if (!this._private.panningEnabled || !this._private.zoomingEnabled) {
return this;
}
this.viewport({
pan: {
x: 0,
y: 0
},
zoom: 1
});
return this; // chaining
},
invalidateSize: function invalidateSize() {
this._private.sizeCache = null;
},
size: function size() {
var _p = this._private;
var container = _p.container;
return _p.sizeCache = _p.sizeCache || (container ? function () {
var style = window$1.getComputedStyle(container);
var val = function val(name) {
return parseFloat(style.getPropertyValue(name));
};
return {
width: container.clientWidth - val('padding-left') - val('padding-right'),
height: container.clientHeight - val('padding-top') - val('padding-bottom')
};
}() : {
// fallback if no container (not 0 b/c can be used for dividing etc)
width: 1,
height: 1
});
},
width: function width() {
return this.size().width;
},
height: function height() {
return this.size().height;
},
extent: function extent() {
var pan = this._private.pan;
var zoom = this._private.zoom;
var rb = this.renderedExtent();
var b = {
x1: (rb.x1 - pan.x) / zoom,
x2: (rb.x2 - pan.x) / zoom,
y1: (rb.y1 - pan.y) / zoom,
y2: (rb.y2 - pan.y) / zoom
};
b.w = b.x2 - b.x1;
b.h = b.y2 - b.y1;
return b;
},
renderedExtent: function renderedExtent() {
var width = this.width();
var height = this.height();
return {
x1: 0,
y1: 0,
x2: width,
y2: height,
w: width,
h: height
};
},
multiClickDebounceTime: function multiClickDebounceTime(_int) {
if (_int) this._private.multiClickDebounceTime = _int;else return this._private.multiClickDebounceTime;
return this; // chaining
}
}; // aliases
corefn$8.centre = corefn$8.center; // backwards compatibility
corefn$8.autolockNodes = corefn$8.autolock;
corefn$8.autoungrabifyNodes = corefn$8.autoungrabify;
var fn$6 = {
data: define$3.data({
field: 'data',
bindingEvent: 'data',
allowBinding: true,
allowSetting: true,
settingEvent: 'data',
settingTriggersEvent: true,
triggerFnName: 'trigger',
allowGetting: true,
updateStyle: true
}),
removeData: define$3.removeData({
field: 'data',
event: 'data',
triggerFnName: 'trigger',
triggerEvent: true,
updateStyle: true
}),
scratch: define$3.data({
field: 'scratch',
bindingEvent: 'scratch',
allowBinding: true,
allowSetting: true,
settingEvent: 'scratch',
settingTriggersEvent: true,
triggerFnName: 'trigger',
allowGetting: true,
updateStyle: true
}),
removeScratch: define$3.removeData({
field: 'scratch',
event: 'scratch',
triggerFnName: 'trigger',
triggerEvent: true,
updateStyle: true
})
}; // aliases
fn$6.attr = fn$6.data;
fn$6.removeAttr = fn$6.removeData;
var Core = function Core(opts) {
var cy = this;
opts = extend({}, opts);
var container = opts.container; // allow for passing a wrapped jquery object
// e.g. cytoscape({ container: $('#cy') })
if (container && !htmlElement(container) && htmlElement(container[0])) {
container = container[0];
}
var reg = container ? container._cyreg : null; // e.g. already registered some info (e.g. readies) via jquery
reg = reg || {};
if (reg && reg.cy) {
reg.cy.destroy();
reg = {}; // old instance => replace reg completely
}
var readies = reg.readies = reg.readies || [];
if (container) {
container._cyreg = reg;
} // make sure container assoc'd reg points to this cy
reg.cy = cy;
var head = window$1 !== undefined && container !== undefined && !opts.headless;
var options = opts;
options.layout = extend({
name: head ? 'grid' : 'null'
}, options.layout);
options.renderer = extend({
name: head ? 'canvas' : 'null'
}, options.renderer);
var defVal = function defVal(def, val, altVal) {
if (val !== undefined) {
return val;
} else if (altVal !== undefined) {
return altVal;
} else {
return def;
}
};
var _p = this._private = {
container: container,
// html dom ele container
ready: false,
// whether ready has been triggered
options: options,
// cached options
elements: new Collection(this),
// elements in the graph
listeners: [],
// list of listeners
aniEles: new Collection(this),
// elements being animated
data: options.data || {},
// data for the core
scratch: {},
// scratch object for core
layout: null,
renderer: null,
destroyed: false,
// whether destroy was called
notificationsEnabled: true,
// whether notifications are sent to the renderer
minZoom: 1e-50,
maxZoom: 1e50,
zoomingEnabled: defVal(true, options.zoomingEnabled),
userZoomingEnabled: defVal(true, options.userZoomingEnabled),
panningEnabled: defVal(true, options.panningEnabled),
userPanningEnabled: defVal(true, options.userPanningEnabled),
boxSelectionEnabled: defVal(true, options.boxSelectionEnabled),
autolock: defVal(false, options.autolock, options.autolockNodes),
autoungrabify: defVal(false, options.autoungrabify, options.autoungrabifyNodes),
autounselectify: defVal(false, options.autounselectify),
styleEnabled: options.styleEnabled === undefined ? head : options.styleEnabled,
zoom: number(options.zoom) ? options.zoom : 1,
pan: {
x: plainObject(options.pan) && number(options.pan.x) ? options.pan.x : 0,
y: plainObject(options.pan) && number(options.pan.y) ? options.pan.y : 0
},
animation: {
// object for currently-running animations
current: [],
queue: []
},
hasCompoundNodes: false,
multiClickDebounceTime: defVal(250, options.multiClickDebounceTime)
};
this.createEmitter(); // set selection type
this.selectionType(options.selectionType); // init zoom bounds
this.zoomRange({
min: options.minZoom,
max: options.maxZoom
});
var loadExtData = function loadExtData(extData, next) {
var anyIsPromise = extData.some(promise);
if (anyIsPromise) {
return Promise$1$1.all(extData).then(next); // load all data asynchronously, then exec rest of init
} else {
next(extData); // exec synchronously for convenience
}
}; // start with the default stylesheet so we have something before loading an external stylesheet
if (_p.styleEnabled) {
cy.setStyle([]);
} // create the renderer
var rendererOptions = extend({}, options, options.renderer); // allow rendering hints in top level options
cy.initRenderer(rendererOptions);
var setElesAndLayout = function setElesAndLayout(elements, onload, ondone) {
cy.notifications(false); // remove old elements
var oldEles = cy.mutableElements();
if (oldEles.length > 0) {
oldEles.remove();
}
if (elements != null) {
if (plainObject(elements) || array(elements)) {
cy.add(elements);
}
}
cy.one('layoutready', function (e) {
cy.notifications(true);
cy.emit(e); // we missed this event by turning notifications off, so pass it on
cy.one('load', onload);
cy.emitAndNotify('load');
}).one('layoutstop', function () {
cy.one('done', ondone);
cy.emit('done');
});
var layoutOpts = extend({}, cy._private.options.layout);
layoutOpts.eles = cy.elements();
cy.layout(layoutOpts).run();
};
loadExtData([options.style, options.elements], function (thens) {
var initStyle = thens[0];
var initEles = thens[1]; // init style
if (_p.styleEnabled) {
cy.style().append(initStyle);
} // initial load
setElesAndLayout(initEles, function () {
// onready
cy.startAnimationLoop();
_p.ready = true; // if a ready callback is specified as an option, the bind it
if (fn(options.ready)) {
cy.on('ready', options.ready);
} // bind all the ready handlers registered before creating this instance
for (var i = 0; i < readies.length; i++) {
var fn$1 = readies[i];
cy.on('ready', fn$1);
}
if (reg) {
reg.readies = [];
} // clear b/c we've bound them all and don't want to keep it around in case a new core uses the same div etc
cy.emit('ready');
}, options.done);
});
};
var corefn$9 = Core.prototype; // short alias
extend(corefn$9, {
instanceString: function instanceString() {
return 'core';
},
isReady: function isReady() {
return this._private.ready;
},
destroyed: function destroyed() {
return this._private.destroyed;
},
ready: function ready(fn) {
if (this.isReady()) {
this.emitter().emit('ready', [], fn); // just calls fn as though triggered via ready event
} else {
this.on('ready', fn);
}
return this;
},
destroy: function destroy() {
var cy = this;
if (cy.destroyed()) return;
cy.stopAnimationLoop();
cy.destroyRenderer();
this.emit('destroy');
cy._private.destroyed = true;
return cy;
},
hasElementWithId: function hasElementWithId(id) {
return this._private.elements.hasElementWithId(id);
},
getElementById: function getElementById(id) {
return this._private.elements.getElementById(id);
},
hasCompoundNodes: function hasCompoundNodes() {
return this._private.hasCompoundNodes;
},
headless: function headless() {
return this._private.renderer.isHeadless();
},
styleEnabled: function styleEnabled() {
return this._private.styleEnabled;
},
addToPool: function addToPool(eles) {
this._private.elements.merge(eles);
return this; // chaining
},
removeFromPool: function removeFromPool(eles) {
this._private.elements.unmerge(eles);
return this;
},
container: function container() {
return this._private.container || null;
},
mount: function mount(container) {
if (container == null) {
return;
}
var cy = this;
var _p = cy._private;
var options = _p.options;
if (!htmlElement(container) && htmlElement(container[0])) {
container = container[0];
}
cy.stopAnimationLoop();
cy.destroyRenderer();
_p.container = container;
_p.styleEnabled = true;
cy.invalidateSize();
cy.initRenderer(extend({}, options, options.renderer, {
// allow custom renderer name to be re-used, otherwise use canvas
name: options.renderer.name === 'null' ? 'canvas' : options.renderer.name
}));
cy.startAnimationLoop();
cy.style(options.style);
cy.emit('mount');
return cy;
},
unmount: function unmount() {
var cy = this;
cy.stopAnimationLoop();
cy.destroyRenderer();
cy.initRenderer({
name: 'null'
});
cy.emit('unmount');
return cy;
},
options: function options() {
return copy(this._private.options);
},
json: function json(obj) {
var cy = this;
var _p = cy._private;
var eles = cy.mutableElements();
var getFreshRef = function getFreshRef(ele) {
return cy.getElementById(ele.id());
};
if (plainObject(obj)) {
// set
cy.startBatch();
if (obj.elements) {
var idInJson = {};
var updateEles = function updateEles(jsons, gr) {
var toAdd = [];
var toMod = [];
for (var i = 0; i < jsons.length; i++) {
var json = jsons[i];
if (!json.data.id) {
warn('cy.json() cannot handle elements without an ID attribute');
continue;
}
var id = '' + json.data.id; // id must be string
var ele = cy.getElementById(id);
idInJson[id] = true;
if (ele.length !== 0) {
// existing element should be updated
toMod.push({
ele: ele,
json: json
});
} else {
// otherwise should be added
if (gr) {
json.group = gr;
toAdd.push(json);
} else {
toAdd.push(json);
}
}
}
cy.add(toAdd);
for (var _i = 0; _i < toMod.length; _i++) {
var _toMod$_i = toMod[_i],
_ele = _toMod$_i.ele,
_json = _toMod$_i.json;
_ele.json(_json);
}
};
if (array(obj.elements)) {
// elements: []
updateEles(obj.elements);
} else {
// elements: { nodes: [], edges: [] }
var grs = ['nodes', 'edges'];
for (var i = 0; i < grs.length; i++) {
var gr = grs[i];
var elements = obj.elements[gr];
if (array(elements)) {
updateEles(elements, gr);
}
}
}
var parentsToRemove = cy.collection();
eles.filter(function (ele) {
return !idInJson[ele.id()];
}).forEach(function (ele) {
if (ele.isParent()) {
parentsToRemove.merge(ele);
} else {
ele.remove();
}
}); // so that children are not removed w/parent
parentsToRemove.forEach(function (ele) {
return ele.children().move({
parent: null
});
}); // intermediate parents may be moved by prior line, so make sure we remove by fresh refs
parentsToRemove.forEach(function (ele) {
return getFreshRef(ele).remove();
});
}
if (obj.style) {
cy.style(obj.style);
}
if (obj.zoom != null && obj.zoom !== _p.zoom) {
cy.zoom(obj.zoom);
}
if (obj.pan) {
if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) {
cy.pan(obj.pan);
}
}
if (obj.data) {
cy.data(obj.data);
}
var fields = ['minZoom', 'maxZoom', 'zoomingEnabled', 'userZoomingEnabled', 'panningEnabled', 'userPanningEnabled', 'boxSelectionEnabled', 'autolock', 'autoungrabify', 'autounselectify', 'multiClickDebounceTime'];
for (var _i2 = 0; _i2 < fields.length; _i2++) {
var f = fields[_i2];
if (obj[f] != null) {
cy[f](obj[f]);
}
}
cy.endBatch();
return this; // chaining
} else {
// get
var flat = !!obj;
var json = {};
if (flat) {
json.elements = this.elements().map(function (ele) {
return ele.json();
});
} else {
json.elements = {};
eles.forEach(function (ele) {
var group = ele.group();
if (!json.elements[group]) {
json.elements[group] = [];
}
json.elements[group].push(ele.json());
});
}
if (this._private.styleEnabled) {
json.style = cy.style().json();
}
json.data = copy(cy.data());
var options = _p.options;
json.zoomingEnabled = _p.zoomingEnabled;
json.userZoomingEnabled = _p.userZoomingEnabled;
json.zoom = _p.zoom;
json.minZoom = _p.minZoom;
json.maxZoom = _p.maxZoom;
json.panningEnabled = _p.panningEnabled;
json.userPanningEnabled = _p.userPanningEnabled;
json.pan = copy(_p.pan);
json.boxSelectionEnabled = _p.boxSelectionEnabled;
json.renderer = copy(options.renderer);
json.hideEdgesOnViewport = options.hideEdgesOnViewport;
json.textureOnViewport = options.textureOnViewport;
json.wheelSensitivity = options.wheelSensitivity;
json.motionBlur = options.motionBlur;
json.multiClickDebounceTime = options.multiClickDebounceTime;
return json;
}
}
});
corefn$9.$id = corefn$9.getElementById;
[corefn, corefn$1, elesfn$v, corefn$2, corefn$3, corefn$4, corefn$5, corefn$6, corefn$7, corefn$8, fn$6].forEach(function (props) {
extend(corefn$9, props);
});
/* eslint-disable no-unused-vars */
var defaults$9 = {
fit: true,
// whether to fit the viewport to the graph
directed: false,
// whether the tree is directed downwards (or edges can point in any direction if false)
padding: 30,
// padding on fit
circle: false,
// put depths in concentric circles if true, put depths top down if false
grid: false,
// whether to create an even grid into which the DAG is placed (circle:false only)
spacingFactor: 1.75,
// positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap)
boundingBox: undefined,
// constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
avoidOverlap: true,
// prevents node overlap, may overflow boundingBox if not enough space
nodeDimensionsIncludeLabels: false,
// Excludes the label when calculating node bounding boxes for the layout algorithm
roots: undefined,
// the roots of the trees
maximal: false,
// whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only)
animate: false,
// whether to transition the node positions
animationDuration: 500,
// duration of animation in ms if enabled
animationEasing: undefined,
// easing of animation if enabled,
animateFilter: function animateFilter(node, i) {
return true;
},
// a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts
ready: undefined,
// callback on layoutready
stop: undefined,
// callback on layoutstop
transform: function transform(node, position) {
return position;
} // transform a given node position. Useful for changing flow direction in discrete layouts
};
/* eslint-enable */
var getInfo = function getInfo(ele) {
return ele.scratch('breadthfirst');
};
var setInfo = function setInfo(ele, obj) {
return ele.scratch('breadthfirst', obj);
};
function BreadthFirstLayout(options) {
this.options = extend({}, defaults$9, options);
}
BreadthFirstLayout.prototype.run = function () {
var params = this.options;
var options = params;
var cy = params.cy;
var eles = options.eles;
var nodes = eles.nodes().filter(function (n) {
return !n.isParent();
});
var graph = eles;
var directed = options.directed;
var maximal = options.maximal || options.maximalAdjustments > 0; // maximalAdjustments for compat. w/ old code
var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {
x1: 0,
y1: 0,
w: cy.width(),
h: cy.height()
});
var roots;
if (elementOrCollection(options.roots)) {
roots = options.roots;
} else if (array(options.roots)) {
var rootsArray = [];
for (var i = 0; i < options.roots.length; i++) {
var id = options.roots[i];
var ele = cy.getElementById(id);
rootsArray.push(ele);
}
roots = cy.collection(rootsArray);
} else if (string(options.roots)) {
roots = cy.$(options.roots);
} else {
if (directed) {
roots = nodes.roots();
} else {
var components = eles.components();
roots = cy.collection();
var _loop = function _loop(_i) {
var comp = components[_i];
var maxDegree = comp.maxDegree(false);
var compRoots = comp.filter(function (ele) {
return ele.degree(false) === maxDegree;
});
roots = roots.add(compRoots);
};
for (var _i = 0; _i < components.length; _i++) {
_loop(_i);
}
}
}
var depths = [];
var foundByBfs = {};
var addToDepth = function addToDepth(ele, d) {
if (depths[d] == null) {
depths[d] = [];
}
var i = depths[d].length;
depths[d].push(ele);
setInfo(ele, {
index: i,
depth: d
});
};
var changeDepth = function changeDepth(ele, newDepth) {
var _getInfo = getInfo(ele),
depth = _getInfo.depth,
index = _getInfo.index;
depths[depth][index] = null;
addToDepth(ele, newDepth);
}; // find the depths of the nodes
graph.bfs({
roots: roots,
directed: options.directed,
visit: function visit(node, edge, pNode, i, depth) {
var ele = node[0];
var id = ele.id();
addToDepth(ele, depth);
foundByBfs[id] = true;
}
}); // check for nodes not found by bfs
var orphanNodes = [];
for (var _i2 = 0; _i2 < nodes.length; _i2++) {
var _ele = nodes[_i2];
if (foundByBfs[_ele.id()]) {
continue;
} else {
orphanNodes.push(_ele);
}
} // assign the nodes a depth and index
var assignDepthsAt = function assignDepthsAt(i) {
var eles = depths[i];
for (var j = 0; j < eles.length; j++) {
var _ele2 = eles[j];
if (_ele2 == null) {
eles.splice(j, 1);
j--;
continue;
}
setInfo(_ele2, {
depth: i,
index: j
});
}
};
var assignDepths = function assignDepths() {
for (var _i3 = 0; _i3 < depths.length; _i3++) {
assignDepthsAt(_i3);
}
};
var adjustMaximally = function adjustMaximally(ele, shifted) {
var eInfo = getInfo(ele);
var incomers = ele.incomers().filter(function (el) {
return el.isNode() && eles.has(el);
});
var maxDepth = -1;
var id = ele.id();
for (var k = 0; k < incomers.length; k++) {
var incmr = incomers[k];
var iInfo = getInfo(incmr);
maxDepth = Math.max(maxDepth, iInfo.depth);
}
if (eInfo.depth <= maxDepth) {
if (shifted[id]) {
return null;
}
changeDepth(ele, maxDepth + 1);
shifted[id] = true;
return true;
}
return false;
}; // for the directed case, try to make the edges all go down (i.e. depth i => depth i + 1)
if (directed && maximal) {
var Q = [];
var shifted = {};
var enqueue = function enqueue(n) {
return Q.push(n);
};
var dequeue = function dequeue() {
return Q.shift();
};
nodes.forEach(function (n) {
return Q.push(n);
});
while (Q.length > 0) {
var _ele3 = dequeue();
var didShift = adjustMaximally(_ele3, shifted);
if (didShift) {
_ele3.outgoers().filter(function (el) {
return el.isNode() && eles.has(el);
}).forEach(enqueue);
} else if (didShift === null) {
warn('Detected double maximal shift for node `' + _ele3.id() + '`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.');
break; // exit on failure
}
}
}
assignDepths(); // clear holes
// find min distance we need to leave between nodes
var minDistance = 0;
if (options.avoidOverlap) {
for (var _i4 = 0; _i4 < nodes.length; _i4++) {
var n = nodes[_i4];
var nbb = n.layoutDimensions(options);
var w = nbb.w;
var h = nbb.h;
minDistance = Math.max(minDistance, w, h);
}
} // get the weighted percent for an element based on its connectivity to other levels
var cachedWeightedPercent = {};
var getWeightedPercent = function getWeightedPercent(ele) {
if (cachedWeightedPercent[ele.id()]) {
return cachedWeightedPercent[ele.id()];
}
var eleDepth = getInfo(ele).depth;
var neighbors = ele.neighborhood();
var percent = 0;
var samples = 0;
for (var _i5 = 0; _i5 < neighbors.length; _i5++) {
var neighbor = neighbors[_i5];
if (neighbor.isEdge() || neighbor.isParent() || !nodes.has(neighbor)) {
continue;
}
var bf = getInfo(neighbor);
if (bf == null) {
continue;
}
var index = bf.index;
var depth = bf.depth; // unassigned neighbours shouldn't affect the ordering
if (index == null || depth == null) {
continue;
}
var nDepth = depths[depth].length;
if (depth < eleDepth) {
// only get influenced by elements above
percent += index / nDepth;
samples++;
}
}
samples = Math.max(1, samples);
percent = percent / samples;
if (samples === 0) {
// put lone nodes at the start
percent = 0;
}
cachedWeightedPercent[ele.id()] = percent;
return percent;
}; // rearrange the indices in each depth level based on connectivity
var sortFn = function sortFn(a, b) {
var apct = getWeightedPercent(a);
var bpct = getWeightedPercent(b);
var diff = apct - bpct;
if (diff === 0) {
return ascending(a.id(), b.id()); // make sure sort doesn't have don't-care comparisons
} else {
return diff;
}
}; // sort each level to make connected nodes closer
for (var _i6 = 0; _i6 < depths.length; _i6++) {
depths[_i6].sort(sortFn);
assignDepthsAt(_i6);
} // assign orphan nodes to a new top-level depth
var orphanDepth = [];
for (var _i7 = 0; _i7 < orphanNodes.length; _i7++) {
orphanDepth.push(orphanNodes[_i7]);
}
depths.unshift(orphanDepth);
assignDepths();
var biggestDepthSize = 0;
for (var _i8 = 0; _i8 < depths.length; _i8++) {
biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize);
}
var center = {
x: bb.x1 + bb.w / 2,
y: bb.x1 + bb.h / 2
};
var maxDepthSize = depths.reduce(function (max, eles) {
return Math.max(max, eles.length);
}, 0);
var getPosition = function getPosition(ele) {
var _getInfo2 = getInfo(ele),
depth = _getInfo2.depth,
index = _getInfo2.index;
var depthSize = depths[depth].length;
var distanceX = Math.max(bb.w / ((options.grid ? maxDepthSize : depthSize) + 1), minDistance);
var distanceY = Math.max(bb.h / (depths.length + 1), minDistance);
var radiusStepSize = Math.min(bb.w / 2 / depths.length, bb.h / 2 / depths.length);
radiusStepSize = Math.max(radiusStepSize, minDistance);
if (!options.circle) {
var epos = {
x: center.x + (index + 1 - (depthSize + 1) / 2) * distanceX,
y: (depth + 1) * distanceY
};
return epos;
} else {
var radius = radiusStepSize * depth + radiusStepSize - (depths.length > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0);
var theta = 2 * Math.PI / depths[depth].length * index;
if (depth === 0 && depths[0].length === 1) {
radius = 1;
}
return {
x: center.x + radius * Math.cos(theta),
y: center.y + radius * Math.sin(theta)
};
}
};
eles.nodes().layoutPositions(this, options, getPosition);
return this; // chaining
};
var defaults$a = {
fit: true,
// whether to fit the viewport to the graph
padding: 30,
// the padding on fit
boundingBox: undefined,
// constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
avoidOverlap: true,
// prevents node overlap, may overflow boundingBox and radius if not enough space
nodeDimensionsIncludeLabels: false,
// Excludes the label when calculating node bounding boxes for the layout algorithm
spacingFactor: undefined,
// Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up
radius: undefined,
// the radius of the circle
startAngle: 3 / 2 * Math.PI,
// where nodes start in radians
sweep: undefined,
// how many radians should be between the first and last node (defaults to full circle)
clockwise: true,
// whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false)
sort: undefined,
// a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') }
animate: false,
// whether to transition the node positions
animationDuration: 500,
// duration of animation in ms if enabled
animationEasing: undefined,
// easing of animation if enabled
animateFilter: function animateFilter(node, i) {
return true;
},
// a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts
ready: undefined,
// callback on layoutready
stop: undefined,
// callback on layoutstop
transform: function transform(node, position) {
return position;
} // transform a given node position. Useful for changing flow direction in discrete layouts
};
function CircleLayout(options) {
this.options = extend({}, defaults$a, options);
}
CircleLayout.prototype.run = function () {
var params = this.options;
var options = params;
var cy = params.cy;
var eles = options.eles;
var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise;
var nodes = eles.nodes().not(':parent');
if (options.sort) {
nodes = nodes.sort(options.sort);
}
var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {
x1: 0,
y1: 0,
w: cy.width(),
h: cy.height()
});
var center = {
x: bb.x1 + bb.w / 2,
y: bb.y1 + bb.h / 2
};
var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / nodes.length : options.sweep;
var dTheta = sweep / Math.max(1, nodes.length - 1);
var r;
var minDistance = 0;
for (var i = 0; i < nodes.length; i++) {
var n = nodes[i];
var nbb = n.layoutDimensions(options);
var w = nbb.w;
var h = nbb.h;
minDistance = Math.max(minDistance, w, h);
}
if (number(options.radius)) {
r = options.radius;
} else if (nodes.length <= 1) {
r = 0;
} else {
r = Math.min(bb.h, bb.w) / 2 - minDistance;
} // calculate the radius
if (nodes.length > 1 && options.avoidOverlap) {
// but only if more than one node (can't overlap)
minDistance *= 1.75; // just to have some nice spacing
var dcos = Math.cos(dTheta) - Math.cos(0);
var dsin = Math.sin(dTheta) - Math.sin(0);
var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping
r = Math.max(rMin, r);
}
var getPos = function getPos(ele, i) {
var theta = options.startAngle + i * dTheta * (clockwise ? 1 : -1);
var rx = r * Math.cos(theta);
var ry = r * Math.sin(theta);
var pos = {
x: center.x + rx,
y: center.y + ry
};
return pos;
};
eles.nodes().layoutPositions(this, options, getPos);
return this; // chaining
};
var defaults$b = {
fit: true,
// whether to fit the viewport to the graph
padding: 30,
// the padding on fit
startAngle: 3 / 2 * Math.PI,
// where nodes start in radians
sweep: undefined,
// how many radians should be between the first and last node (defaults to full circle)
clockwise: true,
// whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false)
equidistant: false,
// whether levels have an equal radial distance betwen them, may cause bounding box overflow
minNodeSpacing: 10,
// min spacing between outside of nodes (used for radius adjustment)
boundingBox: undefined,
// constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
avoidOverlap: true,
// prevents node overlap, may overflow boundingBox if not enough space
nodeDimensionsIncludeLabels: false,
// Excludes the label when calculating node bounding boxes for the layout algorithm
height: undefined,
// height of layout area (overrides container height)
width: undefined,
// width of layout area (overrides container width)
spacingFactor: undefined,
// Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up
concentric: function concentric(node) {
// returns numeric value for each node, placing higher nodes in levels towards the centre
return node.degree();
},
levelWidth: function levelWidth(nodes) {
// the variation of concentric values in each level
return nodes.maxDegree() / 4;
},
animate: false,
// whether to transition the node positions
animationDuration: 500,
// duration of animation in ms if enabled
animationEasing: undefined,
// easing of animation if enabled
animateFilter: function animateFilter(node, i) {
return true;
},
// a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts
ready: undefined,
// callback on layoutready
stop: undefined,
// callback on layoutstop
transform: function transform(node, position) {
return position;
} // transform a given node position. Useful for changing flow direction in discrete layouts
};
function ConcentricLayout$1(options) {
this.options = extend({}, defaults$b, options);
}
ConcentricLayout$1.prototype.run = function () {
var params = this.options;
var options = params;
var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise;
var cy = params.cy;
var eles = options.eles;
var nodes = eles.nodes().not(':parent');
var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {
x1: 0,
y1: 0,
w: cy.width(),
h: cy.height()
});
var center = {
x: bb.x1 + bb.w / 2,
y: bb.y1 + bb.h / 2
};
var nodeValues = []; // { node, value }
var maxNodeSize = 0;
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
var value = void 0; // calculate the node value
value = options.concentric(node);
nodeValues.push({
value: value,
node: node
}); // for style mapping
node._private.scratch.concentric = value;
} // in case we used the `concentric` in style
nodes.updateStyle(); // calculate max size now based on potentially updated mappers
for (var _i = 0; _i < nodes.length; _i++) {
var _node = nodes[_i];
var nbb = _node.layoutDimensions(options);
maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h);
} // sort node values in descreasing order
nodeValues.sort(function (a, b) {
return b.value - a.value;
});
var levelWidth = options.levelWidth(nodes); // put the values into levels
var levels = [[]];
var currentLevel = levels[0];
for (var _i2 = 0; _i2 < nodeValues.length; _i2++) {
var val = nodeValues[_i2];
if (currentLevel.length > 0) {
var diff = Math.abs(currentLevel[0].value - val.value);
if (diff >= levelWidth) {
currentLevel = [];
levels.push(currentLevel);
}
}
currentLevel.push(val);
} // create positions from levels
var minDist = maxNodeSize + options.minNodeSpacing; // min dist between nodes
if (!options.avoidOverlap) {
// then strictly constrain to bb
var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1;
var maxR = Math.min(bb.w, bb.h) / 2 - minDist;
var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0);
minDist = Math.min(minDist, rStep);
} // find the metrics for each level
var r = 0;
for (var _i3 = 0; _i3 < levels.length; _i3++) {
var level = levels[_i3];
var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / level.length : options.sweep;
var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1); // calculate the radius
if (level.length > 1 && options.avoidOverlap) {
// but only if more than one node (can't overlap)
var dcos = Math.cos(dTheta) - Math.cos(0);
var dsin = Math.sin(dTheta) - Math.sin(0);
var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping
r = Math.max(rMin, r);
}
level.r = r;
r += minDist;
}
if (options.equidistant) {
var rDeltaMax = 0;
var _r = 0;
for (var _i4 = 0; _i4 < levels.length; _i4++) {
var _level = levels[_i4];
var rDelta = _level.r - _r;
rDeltaMax = Math.max(rDeltaMax, rDelta);
}
_r = 0;
for (var _i5 = 0; _i5 < levels.length; _i5++) {
var _level2 = levels[_i5];
if (_i5 === 0) {
_r = _level2.r;
}
_level2.r = _r;
_r += rDeltaMax;
}
} // calculate the node positions
var pos = {}; // id => position
for (var _i6 = 0; _i6 < levels.length; _i6++) {
var _level3 = levels[_i6];
var _dTheta = _level3.dTheta;
var _r2 = _level3.r;
for (var j = 0; j < _level3.length; j++) {
var _val = _level3[j];
var theta = options.startAngle + (clockwise ? 1 : -1) * _dTheta * j;
var p = {
x: center.x + _r2 * Math.cos(theta),
y: center.y + _r2 * Math.sin(theta)
};
pos[_val.node.id()] = p;
}
} // position the nodes
eles.nodes().layoutPositions(this, options, function (ele) {
var id = ele.id();
return pos[id];
});
return this; // chaining
};
/*
The CoSE layout was written by Gerardo Huck.
https://www.linkedin.com/in/gerardohuck/
Based on the following article:
http://dl.acm.org/citation.cfm?id=1498047
Modifications tracked on Github.
*/
var DEBUG;
/**
* @brief : default layout options
*/
var defaults$c = {
// Called on `layoutready`
ready: function ready() {},
// Called on `layoutstop`
stop: function stop() {},
// Whether to animate while running the layout
// true : Animate continuously as the layout is running
// false : Just show the end result
// 'end' : Animate with the end result, from the initial positions to the end positions
animate: true,
// Easing of the animation for animate:'end'
animationEasing: undefined,
// The duration of the animation for animate:'end'
animationDuration: undefined,
// A function that determines whether the node should be animated
// All nodes animated by default on animate enabled
// Non-animated nodes are positioned immediately when the layout starts
animateFilter: function animateFilter(node, i) {
return true;
},
// The layout animates only after this many milliseconds for animate:true
// (prevents flashing on fast runs)
animationThreshold: 250,
// Number of iterations between consecutive screen positions update
refresh: 20,
// Whether to fit the network view after when done
fit: true,
// Padding on fit
padding: 30,
// Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
boundingBox: undefined,
// Excludes the label when calculating node bounding boxes for the layout algorithm
nodeDimensionsIncludeLabels: false,
// Randomize the initial positions of the nodes (true) or use existing positions (false)
randomize: false,
// Extra spacing between components in non-compound graphs
componentSpacing: 40,
// Node repulsion (non overlapping) multiplier
nodeRepulsion: function nodeRepulsion(node) {
return 2048;
},
// Node repulsion (overlapping) multiplier
nodeOverlap: 4,
// Ideal edge (non nested) length
idealEdgeLength: function idealEdgeLength(edge) {
return 32;
},
// Divisor to compute edge forces
edgeElasticity: function edgeElasticity(edge) {
return 32;
},
// Nesting factor (multiplier) to compute ideal edge length for nested edges
nestingFactor: 1.2,
// Gravity force (constant)
gravity: 1,
// Maximum number of iterations to perform
numIter: 1000,
// Initial temperature (maximum node displacement)
initialTemp: 1000,
// Cooling factor (how the temperature is reduced between consecutive iterations
coolingFactor: 0.99,
// Lower temperature threshold (below this point the layout will end)
minTemp: 1.0
};
/**
* @brief : constructor
* @arg options : object containing layout options
*/
function CoseLayout(options) {
this.options = extend({}, defaults$c, options);
this.options.layout = this;
}
/**
* @brief : runs the layout
*/
CoseLayout.prototype.run = function () {
var options = this.options;
var cy = options.cy;
var layout = this;
layout.stopped = false;
if (options.animate === true || options.animate === false) {
layout.emit({
type: 'layoutstart',
layout: layout
});
} // Set DEBUG - Global variable
if (true === options.debug) {
DEBUG = true;
} else {
DEBUG = false;
} // Initialize layout info
var layoutInfo = createLayoutInfo(cy, layout, options); // Show LayoutInfo contents if debugging
if (DEBUG) {
printLayoutInfo(layoutInfo);
} // If required, randomize node positions
if (options.randomize) {
randomizePositions(layoutInfo);
}
var startTime = performanceNow();
var refresh = function refresh() {
refreshPositions(layoutInfo, cy, options); // Fit the graph if necessary
if (true === options.fit) {
cy.fit(options.padding);
}
};
var mainLoop = function mainLoop(i) {
if (layout.stopped || i >= options.numIter) {
// logDebug("Layout manually stopped. Stopping computation in step " + i);
return false;
} // Do one step in the phisical simulation
step$1(layoutInfo, options); // Update temperature
layoutInfo.temperature = layoutInfo.temperature * options.coolingFactor; // logDebug("New temperature: " + layoutInfo.temperature);
if (layoutInfo.temperature < options.minTemp) {
// logDebug("Temperature drop below minimum threshold. Stopping computation in step " + i);
return false;
}
return true;
};
var done = function done() {
if (options.animate === true || options.animate === false) {
refresh(); // Layout has finished
layout.one('layoutstop', options.stop);
layout.emit({
type: 'layoutstop',
layout: layout
});
} else {
var nodes = options.eles.nodes();
var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes);
nodes.layoutPositions(layout, options, getScaledPos);
}
};
var i = 0;
var loopRet = true;
if (options.animate === true) {
var frame = function frame() {
var f = 0;
while (loopRet && f < options.refresh) {
loopRet = mainLoop(i);
i++;
f++;
}
if (!loopRet) {
// it's done
separateComponents(layoutInfo, options);
done();
} else {
var now = performanceNow();
if (now - startTime >= options.animationThreshold) {
refresh();
}
requestAnimationFrame$1(frame);
}
};
frame();
} else {
while (loopRet) {
loopRet = mainLoop(i);
i++;
}
separateComponents(layoutInfo, options);
done();
}
return this; // chaining
};
/**
* @brief : called on continuous layouts to stop them before they finish
*/
CoseLayout.prototype.stop = function () {
this.stopped = true;
if (this.thread) {
this.thread.stop();
}
this.emit('layoutstop');
return this; // chaining
};
CoseLayout.prototype.destroy = function () {
if (this.thread) {
this.thread.stop();
}
return this; // chaining
};
/**
* @brief : Creates an object which is contains all the data
* used in the layout process
* @arg cy : cytoscape.js object
* @return : layoutInfo object initialized
*/
var createLayoutInfo = function createLayoutInfo(cy, layout, options) {
// Shortcut
var edges = options.eles.edges();
var nodes = options.eles.nodes();
var layoutInfo = {
isCompound: cy.hasCompoundNodes(),
layoutNodes: [],
idToIndex: {},
nodeSize: nodes.size(),
graphSet: [],
indexToGraph: [],
layoutEdges: [],
edgeSize: edges.size(),
temperature: options.initialTemp,
clientWidth: cy.width(),
clientHeight: cy.width(),
boundingBox: makeBoundingBox(options.boundingBox ? options.boundingBox : {
x1: 0,
y1: 0,
w: cy.width(),
h: cy.height()
})
};
var components = options.eles.components();
var id2cmptId = {};
for (var i = 0; i < components.length; i++) {
var component = components[i];
for (var j = 0; j < component.length; j++) {
var node = component[j];
id2cmptId[node.id()] = i;
}
} // Iterate over all nodes, creating layout nodes
for (var i = 0; i < layoutInfo.nodeSize; i++) {
var n = nodes[i];
var nbb = n.layoutDimensions(options);
var tempNode = {};
tempNode.isLocked = n.locked();
tempNode.id = n.data('id');
tempNode.parentId = n.data('parent');
tempNode.cmptId = id2cmptId[n.id()];
tempNode.children = [];
tempNode.positionX = n.position('x');
tempNode.positionY = n.position('y');
tempNode.offsetX = 0;
tempNode.offsetY = 0;
tempNode.height = nbb.w;
tempNode.width = nbb.h;
tempNode.maxX = tempNode.positionX + tempNode.width / 2;
tempNode.minX = tempNode.positionX - tempNode.width / 2;
tempNode.maxY = tempNode.positionY + tempNode.height / 2;
tempNode.minY = tempNode.positionY - tempNode.height / 2;
tempNode.padLeft = parseFloat(n.style('padding'));
tempNode.padRight = parseFloat(n.style('padding'));
tempNode.padTop = parseFloat(n.style('padding'));
tempNode.padBottom = parseFloat(n.style('padding')); // forces
tempNode.nodeRepulsion = fn(options.nodeRepulsion) ? options.nodeRepulsion(n) : options.nodeRepulsion; // Add new node
layoutInfo.layoutNodes.push(tempNode); // Add entry to id-index map
layoutInfo.idToIndex[tempNode.id] = i;
} // Inline implementation of a queue, used for traversing the graph in BFS order
var queue = [];
var start = 0; // Points to the start the queue
var end = -1; // Points to the end of the queue
var tempGraph = []; // Second pass to add child information and
// initialize queue for hierarchical traversal
for (var i = 0; i < layoutInfo.nodeSize; i++) {
var n = layoutInfo.layoutNodes[i];
var p_id = n.parentId; // Check if node n has a parent node
if (null != p_id) {
// Add node Id to parent's list of children
layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n.id);
} else {
// If a node doesn't have a parent, then it's in the root graph
queue[++end] = n.id;
tempGraph.push(n.id);
}
} // Add root graph to graphSet
layoutInfo.graphSet.push(tempGraph); // Traverse the graph, level by level,
while (start <= end) {
// Get the node to visit and remove it from queue
var node_id = queue[start++];
var node_ix = layoutInfo.idToIndex[node_id];
var node = layoutInfo.layoutNodes[node_ix];
var children = node.children;
if (children.length > 0) {
// Add children nodes as a new graph to graph set
layoutInfo.graphSet.push(children); // Add children to que queue to be visited
for (var i = 0; i < children.length; i++) {
queue[++end] = children[i];
}
}
} // Create indexToGraph map
for (var i = 0; i < layoutInfo.graphSet.length; i++) {
var graph = layoutInfo.graphSet[i];
for (var j = 0; j < graph.length; j++) {
var index = layoutInfo.idToIndex[graph[j]];
layoutInfo.indexToGraph[index] = i;
}
} // Iterate over all edges, creating Layout Edges
for (var i = 0; i < layoutInfo.edgeSize; i++) {
var e = edges[i];
var tempEdge = {};
tempEdge.id = e.data('id');
tempEdge.sourceId = e.data('source');
tempEdge.targetId = e.data('target'); // Compute ideal length
var idealLength = fn(options.idealEdgeLength) ? options.idealEdgeLength(e) : options.idealEdgeLength;
var elasticity = fn(options.edgeElasticity) ? options.edgeElasticity(e) : options.edgeElasticity; // Check if it's an inter graph edge
var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId];
var targetIx = layoutInfo.idToIndex[tempEdge.targetId];
var sourceGraph = layoutInfo.indexToGraph[sourceIx];
var targetGraph = layoutInfo.indexToGraph[targetIx];
if (sourceGraph != targetGraph) {
// Find lowest common graph ancestor
var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo); // Compute sum of node depths, relative to lca graph
var lcaGraph = layoutInfo.graphSet[lca];
var depth = 0; // Source depth
var tempNode = layoutInfo.layoutNodes[sourceIx];
while (-1 === lcaGraph.indexOf(tempNode.id)) {
tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]];
depth++;
} // Target depth
tempNode = layoutInfo.layoutNodes[targetIx];
while (-1 === lcaGraph.indexOf(tempNode.id)) {
tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]];
depth++;
} // logDebug('LCA of nodes ' + tempEdge.sourceId + ' and ' + tempEdge.targetId +
// ". Index: " + lca + " Contents: " + lcaGraph.toString() +
// ". Depth: " + depth);
// Update idealLength
idealLength *= depth * options.nestingFactor;
}
tempEdge.idealLength = idealLength;
tempEdge.elasticity = elasticity;
layoutInfo.layoutEdges.push(tempEdge);
} // Finally, return layoutInfo object
return layoutInfo;
};
/**
* @brief : This function finds the index of the lowest common
* graph ancestor between 2 nodes in the subtree
* (from the graph hierarchy induced tree) whose
* root is graphIx
*
* @arg node1: node1's ID
* @arg node2: node2's ID
* @arg layoutInfo: layoutInfo object
*
*/
var findLCA = function findLCA(node1, node2, layoutInfo) {
// Find their common ancester, starting from the root graph
var res = findLCA_aux(node1, node2, 0, layoutInfo);
if (2 > res.count) {
// If aux function couldn't find the common ancester,
// then it is the root graph
return 0;
} else {
return res.graph;
}
};
/**
* @brief : Auxiliary function used for LCA computation
*
* @arg node1 : node1's ID
* @arg node2 : node2's ID
* @arg graphIx : subgraph index
* @arg layoutInfo : layoutInfo object
*
* @return : object of the form {count: X, graph: Y}, where:
* X is the number of ancesters (max: 2) found in
* graphIx (and it's subgraphs),
* Y is the graph index of the lowest graph containing
* all X nodes
*/
var findLCA_aux = function findLCA_aux(node1, node2, graphIx, layoutInfo) {
var graph = layoutInfo.graphSet[graphIx]; // If both nodes belongs to graphIx
if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) {
return {
count: 2,
graph: graphIx
};
} // Make recursive calls for all subgraphs
var c = 0;
for (var i = 0; i < graph.length; i++) {
var nodeId = graph[i];
var nodeIx = layoutInfo.idToIndex[nodeId];
var children = layoutInfo.layoutNodes[nodeIx].children; // If the node has no child, skip it
if (0 === children.length) {
continue;
}
var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children[0]]];
var result = findLCA_aux(node1, node2, childGraphIx, layoutInfo);
if (0 === result.count) {
// Neither node1 nor node2 are present in this subgraph
continue;
} else if (1 === result.count) {
// One of (node1, node2) is present in this subgraph
c++;
if (2 === c) {
// We've already found both nodes, no need to keep searching
break;
}
} else {
// Both nodes are present in this subgraph
return result;
}
}
return {
count: c,
graph: graphIx
};
};
/**
* @brief: printsLayoutInfo into js console
* Only used for debbuging
*/
var printLayoutInfo;
/**
* @brief : Randomizes the position of all nodes
*/
var randomizePositions = function randomizePositions(layoutInfo, cy) {
var width = layoutInfo.clientWidth;
var height = layoutInfo.clientHeight;
for (var i = 0; i < layoutInfo.nodeSize; i++) {
var n = layoutInfo.layoutNodes[i]; // No need to randomize compound nodes or locked nodes
if (0 === n.children.length && !n.isLocked) {
n.positionX = Math.random() * width;
n.positionY = Math.random() * height;
}
}
};
var getScaleInBoundsFn = function getScaleInBoundsFn(layoutInfo, options, nodes) {
var bb = layoutInfo.boundingBox;
var coseBB = {
x1: Infinity,
x2: -Infinity,
y1: Infinity,
y2: -Infinity
};
if (options.boundingBox) {
nodes.forEach(function (node) {
var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node.data('id')]];
coseBB.x1 = Math.min(coseBB.x1, lnode.positionX);
coseBB.x2 = Math.max(coseBB.x2, lnode.positionX);
coseBB.y1 = Math.min(coseBB.y1, lnode.positionY);
coseBB.y2 = Math.max(coseBB.y2, lnode.positionY);
});
coseBB.w = coseBB.x2 - coseBB.x1;
coseBB.h = coseBB.y2 - coseBB.y1;
}
return function (ele, i) {
var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data('id')]];
if (options.boundingBox) {
// then add extra bounding box constraint
var pctX = (lnode.positionX - coseBB.x1) / coseBB.w;
var pctY = (lnode.positionY - coseBB.y1) / coseBB.h;
return {
x: bb.x1 + pctX * bb.w,
y: bb.y1 + pctY * bb.h
};
} else {
return {
x: lnode.positionX,
y: lnode.positionY
};
}
};
};
/**
* @brief : Updates the positions of nodes in the network
* @arg layoutInfo : LayoutInfo object
* @arg cy : Cytoscape object
* @arg options : Layout options
*/
var refreshPositions = function refreshPositions(layoutInfo, cy, options) {
// var s = 'Refreshing positions';
// logDebug(s);
var layout = options.layout;
var nodes = options.eles.nodes();
var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes);
nodes.positions(getScaledPos); // Trigger layoutReady only on first call
if (true !== layoutInfo.ready) {
// s = 'Triggering layoutready';
// logDebug(s);
layoutInfo.ready = true;
layout.one('layoutready', options.ready);
layout.emit({
type: 'layoutready',
layout: this
});
}
};
/**
* @brief : Logs a debug message in JS console, if DEBUG is ON
*/
// var logDebug = function(text) {
// if (DEBUG) {
// console.debug(text);
// }
// };
/**
* @brief : Performs one iteration of the physical simulation
* @arg layoutInfo : LayoutInfo object already initialized
* @arg cy : Cytoscape object
* @arg options : Layout options
*/
var step$1 = function step(layoutInfo, options, _step) {
// var s = "\n\n###############################";
// s += "\nSTEP: " + step;
// s += "\n###############################\n";
// logDebug(s);
// Calculate node repulsions
calculateNodeForces(layoutInfo, options); // Calculate edge forces
calculateEdgeForces(layoutInfo); // Calculate gravity forces
calculateGravityForces(layoutInfo, options); // Propagate forces from parent to child
propagateForces(layoutInfo); // Update positions based on calculated forces
updatePositions(layoutInfo);
};
/**
* @brief : Computes the node repulsion forces
*/
var calculateNodeForces = function calculateNodeForces(layoutInfo, options) {
// Go through each of the graphs in graphSet
// Nodes only repel each other if they belong to the same graph
// var s = 'calculateNodeForces';
// logDebug(s);
for (var i = 0; i < layoutInfo.graphSet.length; i++) {
var graph = layoutInfo.graphSet[i];
var numNodes = graph.length; // s = "Set: " + graph.toString();
// logDebug(s);
// Now get all the pairs of nodes
// Only get each pair once, (A, B) = (B, A)
for (var j = 0; j < numNodes; j++) {
var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]];
for (var k = j + 1; k < numNodes; k++) {
var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k]]];
nodeRepulsion(node1, node2, layoutInfo, options);
}
}
}
};
var randomDistance = function randomDistance(max) {
return -max + 2 * max * Math.random();
};
/**
* @brief : Compute the node repulsion forces between a pair of nodes
*/
var nodeRepulsion = function nodeRepulsion(node1, node2, layoutInfo, options) {
// var s = "Node repulsion. Node1: " + node1.id + " Node2: " + node2.id;
var cmptId1 = node1.cmptId;
var cmptId2 = node2.cmptId;
if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) {
return;
} // Get direction of line connecting both node centers
var directionX = node2.positionX - node1.positionX;
var directionY = node2.positionY - node1.positionY;
var maxRandDist = 1; // s += "\ndirectionX: " + directionX + ", directionY: " + directionY;
// If both centers are the same, apply a random force
if (0 === directionX && 0 === directionY) {
directionX = randomDistance(maxRandDist);
directionY = randomDistance(maxRandDist);
}
var overlap = nodesOverlap(node1, node2, directionX, directionY);
if (overlap > 0) {
// s += "\nNodes DO overlap.";
// s += "\nOverlap: " + overlap;
// If nodes overlap, repulsion force is proportional
// to the overlap
var force = options.nodeOverlap * overlap; // Compute the module and components of the force vector
var distance = Math.sqrt(directionX * directionX + directionY * directionY); // s += "\nDistance: " + distance;
var forceX = force * directionX / distance;
var forceY = force * directionY / distance;
} else {
// s += "\nNodes do NOT overlap.";
// If there's no overlap, force is inversely proportional
// to squared distance
// Get clipping points for both nodes
var point1 = findClippingPoint(node1, directionX, directionY);
var point2 = findClippingPoint(node2, -1 * directionX, -1 * directionY); // Use clipping points to compute distance
var distanceX = point2.x - point1.x;
var distanceY = point2.y - point1.y;
var distanceSqr = distanceX * distanceX + distanceY * distanceY;
var distance = Math.sqrt(distanceSqr); // s += "\nDistance: " + distance;
// Compute the module and components of the force vector
var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr;
var forceX = force * distanceX / distance;
var forceY = force * distanceY / distance;
} // Apply force
if (!node1.isLocked) {
node1.offsetX -= forceX;
node1.offsetY -= forceY;
}
if (!node2.isLocked) {
node2.offsetX += forceX;
node2.offsetY += forceY;
} // s += "\nForceX: " + forceX + " ForceY: " + forceY;
// logDebug(s);
return;
};
/**
* @brief : Determines whether two nodes overlap or not
* @return : Amount of overlapping (0 => no overlap)
*/
var nodesOverlap = function nodesOverlap(node1, node2, dX, dY) {
if (dX > 0) {
var overlapX = node1.maxX - node2.minX;
} else {
var overlapX = node2.maxX - node1.minX;
}
if (dY > 0) {
var overlapY = node1.maxY - node2.minY;
} else {
var overlapY = node2.maxY - node1.minY;
}
if (overlapX >= 0 && overlapY >= 0) {
return Math.sqrt(overlapX * overlapX + overlapY * overlapY);
} else {
return 0;
}
};
/**
* @brief : Finds the point in which an edge (direction dX, dY) intersects
* the rectangular bounding box of it's source/target node
*/
var findClippingPoint = function findClippingPoint(node, dX, dY) {
// Shorcuts
var X = node.positionX;
var Y = node.positionY;
var H = node.height || 1;
var W = node.width || 1;
var dirSlope = dY / dX;
var nodeSlope = H / W; // var s = 'Computing clipping point of node ' + node.id +
// " . Height: " + H + ", Width: " + W +
// "\nDirection " + dX + ", " + dY;
//
// Compute intersection
var res = {}; // Case: Vertical direction (up)
if (0 === dX && 0 < dY) {
res.x = X; // s += "\nUp direction";
res.y = Y + H / 2;
return res;
} // Case: Vertical direction (down)
if (0 === dX && 0 > dY) {
res.x = X;
res.y = Y + H / 2; // s += "\nDown direction";
return res;
} // Case: Intersects the right border
if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) {
res.x = X + W / 2;
res.y = Y + W * dY / 2 / dX; // s += "\nRightborder";
return res;
} // Case: Intersects the left border
if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) {
res.x = X - W / 2;
res.y = Y - W * dY / 2 / dX; // s += "\nLeftborder";
return res;
} // Case: Intersects the top border
if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) {
res.x = X + H * dX / 2 / dY;
res.y = Y + H / 2; // s += "\nTop border";
return res;
} // Case: Intersects the bottom border
if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) {
res.x = X - H * dX / 2 / dY;
res.y = Y - H / 2; // s += "\nBottom border";
return res;
} // s += "\nClipping point found at " + res.x + ", " + res.y;
// logDebug(s);
return res;
};
/**
* @brief : Calculates all edge forces
*/
var calculateEdgeForces = function calculateEdgeForces(layoutInfo, options) {
// Iterate over all edges
for (var i = 0; i < layoutInfo.edgeSize; i++) {
// Get edge, source & target nodes
var edge = layoutInfo.layoutEdges[i];
var sourceIx = layoutInfo.idToIndex[edge.sourceId];
var source = layoutInfo.layoutNodes[sourceIx];
var targetIx = layoutInfo.idToIndex[edge.targetId];
var target = layoutInfo.layoutNodes[targetIx]; // Get direction of line connecting both node centers
var directionX = target.positionX - source.positionX;
var directionY = target.positionY - source.positionY; // If both centers are the same, do nothing.
// A random force has already been applied as node repulsion
if (0 === directionX && 0 === directionY) {
continue;
} // Get clipping points for both nodes
var point1 = findClippingPoint(source, directionX, directionY);
var point2 = findClippingPoint(target, -1 * directionX, -1 * directionY);
var lx = point2.x - point1.x;
var ly = point2.y - point1.y;
var l = Math.sqrt(lx * lx + ly * ly);
var force = Math.pow(edge.idealLength - l, 2) / edge.elasticity;
if (0 !== l) {
var forceX = force * lx / l;
var forceY = force * ly / l;
} else {
var forceX = 0;
var forceY = 0;
} // Add this force to target and source nodes
if (!source.isLocked) {
source.offsetX += forceX;
source.offsetY += forceY;
}
if (!target.isLocked) {
target.offsetX -= forceX;
target.offsetY -= forceY;
} // var s = 'Edge force between nodes ' + source.id + ' and ' + target.id;
// s += "\nDistance: " + l + " Force: (" + forceX + ", " + forceY + ")";
// logDebug(s);
}
};
/**
* @brief : Computes gravity forces for all nodes
*/
var calculateGravityForces = function calculateGravityForces(layoutInfo, options) {
if (options.gravity === 0) {
return;
}
var distThreshold = 1; // var s = 'calculateGravityForces';
// logDebug(s);
for (var i = 0; i < layoutInfo.graphSet.length; i++) {
var graph = layoutInfo.graphSet[i];
var numNodes = graph.length; // s = "Set: " + graph.toString();
// logDebug(s);
// Compute graph center
if (0 === i) {
var centerX = layoutInfo.clientHeight / 2;
var centerY = layoutInfo.clientWidth / 2;
} else {
// Get Parent node for this graph, and use its position as center
var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]];
var parent = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]];
var centerX = parent.positionX;
var centerY = parent.positionY;
} // s = "Center found at: " + centerX + ", " + centerY;
// logDebug(s);
// Apply force to all nodes in graph
for (var j = 0; j < numNodes; j++) {
var node = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; // s = "Node: " + node.id;
if (node.isLocked) {
continue;
}
var dx = centerX - node.positionX;
var dy = centerY - node.positionY;
var d = Math.sqrt(dx * dx + dy * dy);
if (d > distThreshold) {
var fx = options.gravity * dx / d;
var fy = options.gravity * dy / d;
node.offsetX += fx;
node.offsetY += fy; // s += ": Applied force: " + fx + ", " + fy;
} // s += ": skypped since it's too close to center";
// logDebug(s);
}
}
};
/**
* @brief : This function propagates the existing offsets from
* parent nodes to its descendents.
* @arg layoutInfo : layoutInfo Object
* @arg cy : cytoscape Object
* @arg options : Layout options
*/
var propagateForces = function propagateForces(layoutInfo, options) {
// Inline implementation of a queue, used for traversing the graph in BFS order
var queue = [];
var start = 0; // Points to the start the queue
var end = -1; // Points to the end of the queue
// logDebug('propagateForces');
// Start by visiting the nodes in the root graph
queue.push.apply(queue, layoutInfo.graphSet[0]);
end += layoutInfo.graphSet[0].length; // Traverse the graph, level by level,
while (start <= end) {
// Get the node to visit and remove it from queue
var nodeId = queue[start++];
var nodeIndex = layoutInfo.idToIndex[nodeId];
var node = layoutInfo.layoutNodes[nodeIndex];
var children = node.children; // We only need to process the node if it's compound
if (0 < children.length && !node.isLocked) {
var offX = node.offsetX;
var offY = node.offsetY; // var s = "Propagating offset from parent node : " + node.id +
// ". OffsetX: " + offX + ". OffsetY: " + offY;
// s += "\n Children: " + children.toString();
// logDebug(s);
for (var i = 0; i < children.length; i++) {
var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children[i]]]; // Propagate offset
childNode.offsetX += offX;
childNode.offsetY += offY; // Add children to queue to be visited
queue[++end] = children[i];
} // Reset parent offsets
node.offsetX = 0;
node.offsetY = 0;
}
}
};
/**
* @brief : Updates the layout model positions, based on
* the accumulated forces
*/
var updatePositions = function updatePositions(layoutInfo, options) {
// var s = 'Updating positions';
// logDebug(s);
// Reset boundaries for compound nodes
for (var i = 0; i < layoutInfo.nodeSize; i++) {
var n = layoutInfo.layoutNodes[i];
if (0 < n.children.length) {
// logDebug("Resetting boundaries of compound node: " + n.id);
n.maxX = undefined;
n.minX = undefined;
n.maxY = undefined;
n.minY = undefined;
}
}
for (var i = 0; i < layoutInfo.nodeSize; i++) {
var n = layoutInfo.layoutNodes[i];
if (0 < n.children.length || n.isLocked) {
// No need to set compound or locked node position
// logDebug("Skipping position update of node: " + n.id);
continue;
} // s = "Node: " + n.id + " Previous position: (" +
// n.positionX + ", " + n.positionY + ").";
// Limit displacement in order to improve stability
var tempForce = limitForce(n.offsetX, n.offsetY, layoutInfo.temperature);
n.positionX += tempForce.x;
n.positionY += tempForce.y;
n.offsetX = 0;
n.offsetY = 0;
n.minX = n.positionX - n.width;
n.maxX = n.positionX + n.width;
n.minY = n.positionY - n.height;
n.maxY = n.positionY + n.height; // s += " New Position: (" + n.positionX + ", " + n.positionY + ").";
// logDebug(s);
// Update ancestry boudaries
updateAncestryBoundaries(n, layoutInfo);
} // Update size, position of compund nodes
for (var i = 0; i < layoutInfo.nodeSize; i++) {
var n = layoutInfo.layoutNodes[i];
if (0 < n.children.length && !n.isLocked) {
n.positionX = (n.maxX + n.minX) / 2;
n.positionY = (n.maxY + n.minY) / 2;
n.width = n.maxX - n.minX;
n.height = n.maxY - n.minY; // s = "Updating position, size of compound node " + n.id;
// s += "\nPositionX: " + n.positionX + ", PositionY: " + n.positionY;
// s += "\nWidth: " + n.width + ", Height: " + n.height;
// logDebug(s);
}
}
};
/**
* @brief : Limits a force (forceX, forceY) to be not
* greater (in modulo) than max.
8 Preserves force direction.
*/
var limitForce = function limitForce(forceX, forceY, max) {
// var s = "Limiting force: (" + forceX + ", " + forceY + "). Max: " + max;
var force = Math.sqrt(forceX * forceX + forceY * forceY);
if (force > max) {
var res = {
x: max * forceX / force,
y: max * forceY / force
};
} else {
var res = {
x: forceX,
y: forceY
};
} // s += ".\nResult: (" + res.x + ", " + res.y + ")";
// logDebug(s);
return res;
};
/**
* @brief : Function used for keeping track of compound node
* sizes, since they should bound all their subnodes.
*/
var updateAncestryBoundaries = function updateAncestryBoundaries(node, layoutInfo) {
// var s = "Propagating new position/size of node " + node.id;
var parentId = node.parentId;
if (null == parentId) {
// If there's no parent, we are done
// s += ". No parent node.";
// logDebug(s);
return;
} // Get Parent Node
var p = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]];
var flag = false; // MaxX
if (null == p.maxX || node.maxX + p.padRight > p.maxX) {
p.maxX = node.maxX + p.padRight;
flag = true; // s += "\nNew maxX for parent node " + p.id + ": " + p.maxX;
} // MinX
if (null == p.minX || node.minX - p.padLeft < p.minX) {
p.minX = node.minX - p.padLeft;
flag = true; // s += "\nNew minX for parent node " + p.id + ": " + p.minX;
} // MaxY
if (null == p.maxY || node.maxY + p.padBottom > p.maxY) {
p.maxY = node.maxY + p.padBottom;
flag = true; // s += "\nNew maxY for parent node " + p.id + ": " + p.maxY;
} // MinY
if (null == p.minY || node.minY - p.padTop < p.minY) {
p.minY = node.minY - p.padTop;
flag = true; // s += "\nNew minY for parent node " + p.id + ": " + p.minY;
} // If updated boundaries, propagate changes upward
if (flag) {
// logDebug(s);
return updateAncestryBoundaries(p, layoutInfo);
} // s += ". No changes in boundaries/position of parent node " + p.id;
// logDebug(s);
return;
};
var separateComponents = function separateComponents(layoutInfo, options) {
var nodes = layoutInfo.layoutNodes;
var components = [];
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
var cid = node.cmptId;
var component = components[cid] = components[cid] || [];
component.push(node);
}
var totalA = 0;
for (var i = 0; i < components.length; i++) {
var c = components[i];
if (!c) {
continue;
}
c.x1 = Infinity;
c.x2 = -Infinity;
c.y1 = Infinity;
c.y2 = -Infinity;
for (var j = 0; j < c.length; j++) {
var n = c[j];
c.x1 = Math.min(c.x1, n.positionX - n.width / 2);
c.x2 = Math.max(c.x2, n.positionX + n.width / 2);
c.y1 = Math.min(c.y1, n.positionY - n.height / 2);
c.y2 = Math.max(c.y2, n.positionY + n.height / 2);
}
c.w = c.x2 - c.x1;
c.h = c.y2 - c.y1;
totalA += c.w * c.h;
}
components.sort(function (c1, c2) {
return c2.w * c2.h - c1.w * c1.h;
});
var x = 0;
var y = 0;
var usedW = 0;
var rowH = 0;
var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight;
for (var i = 0; i < components.length; i++) {
var c = components[i];
if (!c) {
continue;
}
for (var j = 0; j < c.length; j++) {
var n = c[j];
if (!n.isLocked) {
n.positionX += x - c.x1;
n.positionY += y - c.y1;
}
}
x += c.w + options.componentSpacing;
usedW += c.w + options.componentSpacing;
rowH = Math.max(rowH, c.h);
if (usedW > maxRowW) {
y += rowH + options.componentSpacing;
x = 0;
usedW = 0;
rowH = 0;
}
}
};
var defaults$d = {
fit: true,
// whether to fit the viewport to the graph
padding: 30,
// padding used on fit
boundingBox: undefined,
// constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
avoidOverlap: true,
// prevents node overlap, may overflow boundingBox if not enough space
avoidOverlapPadding: 10,
// extra spacing around nodes when avoidOverlap: true
nodeDimensionsIncludeLabels: false,
// Excludes the label when calculating node bounding boxes for the layout algorithm
spacingFactor: undefined,
// Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up
condense: false,
// uses all available space on false, uses minimal space on true
rows: undefined,
// force num of rows in the grid
cols: undefined,
// force num of columns in the grid
position: function position(node) {},
// returns { row, col } for element
sort: undefined,
// a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') }
animate: false,
// whether to transition the node positions
animationDuration: 500,
// duration of animation in ms if enabled
animationEasing: undefined,
// easing of animation if enabled
animateFilter: function animateFilter(node, i) {
return true;
},
// a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts
ready: undefined,
// callback on layoutready
stop: undefined,
// callback on layoutstop
transform: function transform(node, position) {
return position;
} // transform a given node position. Useful for changing flow direction in discrete layouts
};
function GridLayout(options) {
this.options = extend({}, defaults$d, options);
}
GridLayout.prototype.run = function () {
var params = this.options;
var options = params;
var cy = params.cy;
var eles = options.eles;
var nodes = eles.nodes().not(':parent');
if (options.sort) {
nodes = nodes.sort(options.sort);
}
var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {
x1: 0,
y1: 0,
w: cy.width(),
h: cy.height()
});
if (bb.h === 0 || bb.w === 0) {
eles.nodes().layoutPositions(this, options, function (ele) {
return {
x: bb.x1,
y: bb.y1
};
});
} else {
// width/height * splits^2 = cells where splits is number of times to split width
var cells = nodes.size();
var splits = Math.sqrt(cells * bb.h / bb.w);
var rows = Math.round(splits);
var cols = Math.round(bb.w / bb.h * splits);
var small = function small(val) {
if (val == null) {
return Math.min(rows, cols);
} else {
var min = Math.min(rows, cols);
if (min == rows) {
rows = val;
} else {
cols = val;
}
}
};
var large = function large(val) {
if (val == null) {
return Math.max(rows, cols);
} else {
var max = Math.max(rows, cols);
if (max == rows) {
rows = val;
} else {
cols = val;
}
}
};
var oRows = options.rows;
var oCols = options.cols != null ? options.cols : options.columns; // if rows or columns were set in options, use those values
if (oRows != null && oCols != null) {
rows = oRows;
cols = oCols;
} else if (oRows != null && oCols == null) {
rows = oRows;
cols = Math.ceil(cells / rows);
} else if (oRows == null && oCols != null) {
cols = oCols;
rows = Math.ceil(cells / cols);
} // otherwise use the automatic values and adjust accordingly
// if rounding was up, see if we can reduce rows or columns
else if (cols * rows > cells) {
var sm = small();
var lg = large(); // reducing the small side takes away the most cells, so try it first
if ((sm - 1) * lg >= cells) {
small(sm - 1);
} else if ((lg - 1) * sm >= cells) {
large(lg - 1);
}
} else {
// if rounding was too low, add rows or columns
while (cols * rows < cells) {
var _sm = small();
var _lg = large(); // try to add to larger side first (adds less in multiplication)
if ((_lg + 1) * _sm >= cells) {
large(_lg + 1);
} else {
small(_sm + 1);
}
}
}
var cellWidth = bb.w / cols;
var cellHeight = bb.h / rows;
if (options.condense) {
cellWidth = 0;
cellHeight = 0;
}
if (options.avoidOverlap) {
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
var pos = node._private.position;
if (pos.x == null || pos.y == null) {
// for bb
pos.x = 0;
pos.y = 0;
}
var nbb = node.layoutDimensions(options);
var p = options.avoidOverlapPadding;
var w = nbb.w + p;
var h = nbb.h + p;
cellWidth = Math.max(cellWidth, w);
cellHeight = Math.max(cellHeight, h);
}
}
var cellUsed = {}; // e.g. 'c-0-2' => true
var used = function used(row, col) {
return cellUsed['c-' + row + '-' + col] ? true : false;
};
var use = function use(row, col) {
cellUsed['c-' + row + '-' + col] = true;
}; // to keep track of current cell position
var row = 0;
var col = 0;
var moveToNextCell = function moveToNextCell() {
col++;
if (col >= cols) {
col = 0;
row++;
}
}; // get a cache of all the manual positions
var id2manPos = {};
for (var _i = 0; _i < nodes.length; _i++) {
var _node = nodes[_i];
var rcPos = options.position(_node);
if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) {
// must have at least row or col def'd
var _pos = {
row: rcPos.row,
col: rcPos.col
};
if (_pos.col === undefined) {
// find unused col
_pos.col = 0;
while (used(_pos.row, _pos.col)) {
_pos.col++;
}
} else if (_pos.row === undefined) {
// find unused row
_pos.row = 0;
while (used(_pos.row, _pos.col)) {
_pos.row++;
}
}
id2manPos[_node.id()] = _pos;
use(_pos.row, _pos.col);
}
}
var getPos = function getPos(element, i) {
var x, y;
if (element.locked() || element.isParent()) {
return false;
} // see if we have a manual position set
var rcPos = id2manPos[element.id()];
if (rcPos) {
x = rcPos.col * cellWidth + cellWidth / 2 + bb.x1;
y = rcPos.row * cellHeight + cellHeight / 2 + bb.y1;
} else {
// otherwise set automatically
while (used(row, col)) {
moveToNextCell();
}
x = col * cellWidth + cellWidth / 2 + bb.x1;
y = row * cellHeight + cellHeight / 2 + bb.y1;
use(row, col);
moveToNextCell();
}
return {
x: x,
y: y
};
};
nodes.layoutPositions(this, options, getPos);
}
return this; // chaining
};
var defaults$e = {
ready: function ready() {},
// on layoutready
stop: function stop() {} // on layoutstop
}; // constructor
// options : object containing layout options
function NullLayout(options) {
this.options = extend({}, defaults$e, options);
} // runs the layout
NullLayout.prototype.run = function () {
var options = this.options;
var eles = options.eles; // elements to consider in the layout
var layout = this; // cy is automatically populated for us in the constructor
// (disable eslint for next line as this serves as example layout code to external developers)
// eslint-disable-next-line no-unused-vars
options.cy;
layout.emit('layoutstart'); // puts all nodes at (0, 0)
// n.b. most layouts would use layoutPositions(), instead of positions() and manual events
eles.nodes().positions(function () {
return {
x: 0,
y: 0
};
}); // trigger layoutready when each node has had its position set at least once
layout.one('layoutready', options.ready);
layout.emit('layoutready'); // trigger layoutstop when the layout stops (e.g. finishes)
layout.one('layoutstop', options.stop);
layout.emit('layoutstop');
return this; // chaining
}; // called on continuous layouts to stop them before they finish
NullLayout.prototype.stop = function () {
return this; // chaining
};
var defaults$f = {
positions: undefined,
// map of (node id) => (position obj); or function(node){ return somPos; }
zoom: undefined,
// the zoom level to set (prob want fit = false if set)
pan: undefined,
// the pan level to set (prob want fit = false if set)
fit: true,
// whether to fit to viewport
padding: 30,
// padding on fit
animate: false,
// whether to transition the node positions
animationDuration: 500,
// duration of animation in ms if enabled
animationEasing: undefined,
// easing of animation if enabled
animateFilter: function animateFilter(node, i) {
return true;
},
// a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts
ready: undefined,
// callback on layoutready
stop: undefined,
// callback on layoutstop
transform: function transform(node, position) {
return position;
} // transform a given node position. Useful for changing flow direction in discrete layouts
};
function PresetLayout(options) {
this.options = extend({}, defaults$f, options);
}
PresetLayout.prototype.run = function () {
var options = this.options;
var eles = options.eles;
var nodes = eles.nodes();
var posIsFn = fn(options.positions);
function getPosition(node) {
if (options.positions == null) {
return copyPosition(node.position());
}
if (posIsFn) {
return options.positions(node);
}
var pos = options.positions[node._private.data.id];
if (pos == null) {
return null;
}
return pos;
}
nodes.layoutPositions(this, options, function (node, i) {
var position = getPosition(node);
if (node.locked() || position == null) {
return false;
}
return position;
});
return this; // chaining
};
var defaults$g = {
fit: true,
// whether to fit to viewport
padding: 30,
// fit padding
boundingBox: undefined,
// constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
animate: false,
// whether to transition the node positions
animationDuration: 500,
// duration of animation in ms if enabled
animationEasing: undefined,
// easing of animation if enabled
animateFilter: function animateFilter(node, i) {
return true;
},
// a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts
ready: undefined,
// callback on layoutready
stop: undefined,
// callback on layoutstop
transform: function transform(node, position) {
return position;
} // transform a given node position. Useful for changing flow direction in discrete layouts
};
function RandomLayout(options) {
this.options = extend({}, defaults$g, options);
}
RandomLayout.prototype.run = function () {
var options = this.options;
var cy = options.cy;
var eles = options.eles;
var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {
x1: 0,
y1: 0,
w: cy.width(),
h: cy.height()
});
var getPos = function getPos(node, i) {
return {
x: bb.x1 + Math.round(Math.random() * bb.w),
y: bb.y1 + Math.round(Math.random() * bb.h)
};
};
eles.nodes().layoutPositions(this, options, getPos);
return this; // chaining
};
var layout$2 = [{
name: 'breadthfirst',
impl: BreadthFirstLayout
}, {
name: 'circle',
impl: CircleLayout
}, {
name: 'concentric',
impl: ConcentricLayout$1
}, {
name: 'cose',
impl: CoseLayout
}, {
name: 'grid',
impl: GridLayout
}, {
name: 'null',
impl: NullLayout
}, {
name: 'preset',
impl: PresetLayout
}, {
name: 'random',
impl: RandomLayout
}];
function NullRenderer(options) {
this.options = options;
this.notifications = 0; // for testing
}
var noop$1$1 = function noop() {};
var throwImgErr = function throwImgErr() {
throw new Error('A headless instance can not render images');
};
NullRenderer.prototype = {
recalculateRenderedStyle: noop$1$1,
notify: function notify() {
this.notifications++;
},
init: noop$1$1,
isHeadless: function isHeadless() {
return true;
},
png: throwImgErr,
jpg: throwImgErr
};
var BRp = {};
BRp.arrowShapeWidth = 0.3;
BRp.registerArrowShapes = function () {
var arrowShapes = this.arrowShapes = {};
var renderer = this; // Contract for arrow shapes:
// 0, 0 is arrow tip
// (0, 1) is direction towards node
// (1, 0) is right
//
// functional api:
// collide: check x, y in shape
// roughCollide: called before collide, no false negatives
// draw: draw
// spacing: dist(arrowTip, nodeBoundary)
// gap: dist(edgeTip, nodeBoundary), edgeTip may != arrowTip
var bbCollide = function bbCollide(x, y, size, angle, translation, edgeWidth, padding) {
var x1 = translation.x - size / 2 - padding;
var x2 = translation.x + size / 2 + padding;
var y1 = translation.y - size / 2 - padding;
var y2 = translation.y + size / 2 + padding;
var inside = x1 <= x && x <= x2 && y1 <= y && y <= y2;
return inside;
};
var transform = function transform(x, y, size, angle, translation) {
var xRotated = x * Math.cos(angle) - y * Math.sin(angle);
var yRotated = x * Math.sin(angle) + y * Math.cos(angle);
var xScaled = xRotated * size;
var yScaled = yRotated * size;
var xTranslated = xScaled + translation.x;
var yTranslated = yScaled + translation.y;
return {
x: xTranslated,
y: yTranslated
};
};
var transformPoints = function transformPoints(pts, size, angle, translation) {
var retPts = [];
for (var i = 0; i < pts.length; i += 2) {
var x = pts[i];
var y = pts[i + 1];
retPts.push(transform(x, y, size, angle, translation));
}
return retPts;
};
var pointsToArr = function pointsToArr(pts) {
var ret = [];
for (var i = 0; i < pts.length; i++) {
var p = pts[i];
ret.push(p.x, p.y);
}
return ret;
};
var standardGap = function standardGap(edge) {
return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').pfValue * 2;
};
var defineArrowShape = function defineArrowShape(name, defn) {
if (string(defn)) {
defn = arrowShapes[defn];
}
arrowShapes[name] = extend({
name: name,
points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3],
collide: function collide(x, y, size, angle, translation, padding) {
var points = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));
var inside = pointInsidePolygonPoints(x, y, points);
return inside;
},
roughCollide: bbCollide,
draw: function draw(context, size, angle, translation) {
var points = transformPoints(this.points, size, angle, translation);
renderer.arrowShapeImpl('polygon')(context, points);
},
spacing: function spacing(edge) {
return 0;
},
gap: standardGap
}, defn);
};
defineArrowShape('none', {
collide: falsify,
roughCollide: falsify,
draw: noop$1,
spacing: zeroify,
gap: zeroify
});
defineArrowShape('triangle', {
points: [-0.15, -0.3, 0, 0, 0.15, -0.3]
});
defineArrowShape('arrow', 'triangle');
defineArrowShape('triangle-backcurve', {
points: arrowShapes['triangle'].points,
controlPoint: [0, -0.15],
roughCollide: bbCollide,
draw: function draw(context, size, angle, translation, edgeWidth) {
var ptsTrans = transformPoints(this.points, size, angle, translation);
var ctrlPt = this.controlPoint;
var ctrlPtTrans = transform(ctrlPt[0], ctrlPt[1], size, angle, translation);
renderer.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans);
},
gap: function gap(edge) {
return standardGap(edge) * 0.8;
}
});
defineArrowShape('triangle-tee', {
points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],
pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4],
collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {
var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));
var teePts = pointsToArr(transformPoints(this.pointsTee, size + 2 * padding, angle, translation));
var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts);
return inside;
},
draw: function draw(context, size, angle, translation, edgeWidth) {
var triPts = transformPoints(this.points, size, angle, translation);
var teePts = transformPoints(this.pointsTee, size, angle, translation);
renderer.arrowShapeImpl(this.name)(context, triPts, teePts);
}
});
defineArrowShape('circle-triangle', {
radius: 0.15,
pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15],
collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {
var t = translation;
var circleInside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2);
var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));
return pointInsidePolygonPoints(x, y, triPts) || circleInside;
},
draw: function draw(context, size, angle, translation, edgeWidth) {
var triPts = transformPoints(this.pointsTr, size, angle, translation);
renderer.arrowShapeImpl(this.name)(context, triPts, translation.x, translation.y, this.radius * size);
},
spacing: function spacing(edge) {
return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius;
}
});
defineArrowShape('triangle-cross', {
points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],
baseCrossLinePts: [-0.15, -0.4, // first half of the rectangle
-0.15, -0.4, 0.15, -0.4, // second half of the rectangle
0.15, -0.4],
crossLinePts: function crossLinePts(size, edgeWidth) {
// shift points so that the distance between the cross points matches edge width
var p = this.baseCrossLinePts.slice();
var shiftFactor = edgeWidth / size;
var y0 = 3;
var y1 = 5;
p[y0] = p[y0] - shiftFactor;
p[y1] = p[y1] - shiftFactor;
return p;
},
collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {
var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));
var teePts = pointsToArr(transformPoints(this.crossLinePts(size, edgeWidth), size + 2 * padding, angle, translation));
var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts);
return inside;
},
draw: function draw(context, size, angle, translation, edgeWidth) {
var triPts = transformPoints(this.points, size, angle, translation);
var crossLinePts = transformPoints(this.crossLinePts(size, edgeWidth), size, angle, translation);
renderer.arrowShapeImpl(this.name)(context, triPts, crossLinePts);
}
});
defineArrowShape('vee', {
points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15],
gap: function gap(edge) {
return standardGap(edge) * 0.525;
}
});
defineArrowShape('circle', {
radius: 0.15,
collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {
var t = translation;
var inside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2);
return inside;
},
draw: function draw(context, size, angle, translation, edgeWidth) {
renderer.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size);
},
spacing: function spacing(edge) {
return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius;
}
});
defineArrowShape('tee', {
points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0],
spacing: function spacing(edge) {
return 1;
},
gap: function gap(edge) {
return 1;
}
});
defineArrowShape('square', {
points: [-0.15, 0.00, 0.15, 0.00, 0.15, -0.3, -0.15, -0.3]
});
defineArrowShape('diamond', {
points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0],
gap: function gap(edge) {
return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value;
}
});
defineArrowShape('chevron', {
points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15],
gap: function gap(edge) {
return 0.95 * edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value;
}
});
};
var BRp$1 = {}; // Project mouse
BRp$1.projectIntoViewport = function (clientX, clientY) {
var cy = this.cy;
var offsets = this.findContainerClientCoords();
var offsetLeft = offsets[0];
var offsetTop = offsets[1];
var scale = offsets[4];
var pan = cy.pan();
var zoom = cy.zoom();
var x = ((clientX - offsetLeft) / scale - pan.x) / zoom;
var y = ((clientY - offsetTop) / scale - pan.y) / zoom;
return [x, y];
};
BRp$1.findContainerClientCoords = function () {
if (this.containerBB) {
return this.containerBB;
}
var container = this.container;
var rect = container.getBoundingClientRect();
var style = window$1.getComputedStyle(container);
var styleValue = function styleValue(name) {
return parseFloat(style.getPropertyValue(name));
};
var padding = {
left: styleValue('padding-left'),
right: styleValue('padding-right'),
top: styleValue('padding-top'),
bottom: styleValue('padding-bottom')
};
var border = {
left: styleValue('border-left-width'),
right: styleValue('border-right-width'),
top: styleValue('border-top-width'),
bottom: styleValue('border-bottom-width')
};
var clientWidth = container.clientWidth;
var clientHeight = container.clientHeight;
var paddingHor = padding.left + padding.right;
var paddingVer = padding.top + padding.bottom;
var borderHor = border.left + border.right;
var scale = rect.width / (clientWidth + borderHor);
var unscaledW = clientWidth - paddingHor;
var unscaledH = clientHeight - paddingVer;
var left = rect.left + padding.left + border.left;
var top = rect.top + padding.top + border.top;
return this.containerBB = [left, top, unscaledW, unscaledH, scale];
};
BRp$1.invalidateContainerClientCoordsCache = function () {
this.containerBB = null;
};
BRp$1.findNearestElement = function (x, y, interactiveElementsOnly, isTouch) {
return this.findNearestElements(x, y, interactiveElementsOnly, isTouch)[0];
};
BRp$1.findNearestElements = function (x, y, interactiveElementsOnly, isTouch) {
var self = this;
var r = this;
var eles = r.getCachedZSortedEles();
var near = []; // 1 node max, 1 edge max
var zoom = r.cy.zoom();
var hasCompounds = r.cy.hasCompoundNodes();
var edgeThreshold = (isTouch ? 24 : 8) / zoom;
var nodeThreshold = (isTouch ? 8 : 2) / zoom;
var labelThreshold = (isTouch ? 8 : 2) / zoom;
var minSqDist = Infinity;
var nearEdge;
var nearNode;
if (interactiveElementsOnly) {
eles = eles.interactive;
}
function addEle(ele, sqDist) {
if (ele.isNode()) {
if (nearNode) {
return; // can't replace node
} else {
nearNode = ele;
near.push(ele);
}
}
if (ele.isEdge() && (sqDist == null || sqDist < minSqDist)) {
if (nearEdge) {
// then replace existing edge
// can replace only if same z-index
if (nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value && nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value) {
for (var i = 0; i < near.length; i++) {
if (near[i].isEdge()) {
near[i] = ele;
nearEdge = ele;
minSqDist = sqDist != null ? sqDist : minSqDist;
break;
}
}
}
} else {
near.push(ele);
nearEdge = ele;
minSqDist = sqDist != null ? sqDist : minSqDist;
}
}
}
function checkNode(node) {
var width = node.outerWidth() + 2 * nodeThreshold;
var height = node.outerHeight() + 2 * nodeThreshold;
var hw = width / 2;
var hh = height / 2;
var pos = node.position();
if (pos.x - hw <= x && x <= pos.x + hw // bb check x
&& pos.y - hh <= y && y <= pos.y + hh // bb check y
) {
var shape = r.nodeShapes[self.getNodeShape(node)];
if (shape.checkPoint(x, y, 0, width, height, pos.x, pos.y)) {
addEle(node, 0);
return true;
}
}
}
function checkEdge(edge) {
var _p = edge._private;
var rs = _p.rscratch;
var styleWidth = edge.pstyle('width').pfValue;
var scale = edge.pstyle('arrow-scale').value;
var width = styleWidth / 2 + edgeThreshold; // more like a distance radius from centre
var widthSq = width * width;
var width2 = width * 2;
var src = _p.source;
var tgt = _p.target;
var sqDist;
if (rs.edgeType === 'segments' || rs.edgeType === 'straight' || rs.edgeType === 'haystack') {
var pts = rs.allpts;
for (var i = 0; i + 3 < pts.length; i += 2) {
if (inLineVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], width2) && widthSq > (sqDist = sqdistToFiniteLine(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3]))) {
addEle(edge, sqDist);
return true;
}
}
} else if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') {
var pts = rs.allpts;
for (var i = 0; i + 5 < rs.allpts.length; i += 4) {
if (inBezierVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5], width2) && widthSq > (sqDist = sqdistToQuadraticBezier(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5]))) {
addEle(edge, sqDist);
return true;
}
}
} // if we're close to the edge but didn't hit it, maybe we hit its arrows
var src = src || _p.source;
var tgt = tgt || _p.target;
var arSize = self.getArrowWidth(styleWidth, scale);
var arrows = [{
name: 'source',
x: rs.arrowStartX,
y: rs.arrowStartY,
angle: rs.srcArrowAngle
}, {
name: 'target',
x: rs.arrowEndX,
y: rs.arrowEndY,
angle: rs.tgtArrowAngle
}, {
name: 'mid-source',
x: rs.midX,
y: rs.midY,
angle: rs.midsrcArrowAngle
}, {
name: 'mid-target',
x: rs.midX,
y: rs.midY,
angle: rs.midtgtArrowAngle
}];
for (var i = 0; i < arrows.length; i++) {
var ar = arrows[i];
var shape = r.arrowShapes[edge.pstyle(ar.name + '-arrow-shape').value];
var edgeWidth = edge.pstyle('width').pfValue;
if (shape.roughCollide(x, y, arSize, ar.angle, {
x: ar.x,
y: ar.y
}, edgeWidth, edgeThreshold) && shape.collide(x, y, arSize, ar.angle, {
x: ar.x,
y: ar.y
}, edgeWidth, edgeThreshold)) {
addEle(edge);
return true;
}
} // for compound graphs, hitting edge may actually want a connected node instead (b/c edge may have greater z-index precedence)
if (hasCompounds && near.length > 0) {
checkNode(src);
checkNode(tgt);
}
}
function preprop(obj, name, pre) {
return getPrefixedProperty(obj, name, pre);
}
function checkLabel(ele, prefix) {
var _p = ele._private;
var th = labelThreshold;
var prefixDash;
if (prefix) {
prefixDash = prefix + '-';
} else {
prefixDash = '';
}
ele.boundingBox();
var bb = _p.labelBounds[prefix || 'main'];
var text = ele.pstyle(prefixDash + 'label').value;
var eventsEnabled = ele.pstyle('text-events').strValue === 'yes';
if (!eventsEnabled || !text) {
return;
}
var lx = preprop(_p.rscratch, 'labelX', prefix);
var ly = preprop(_p.rscratch, 'labelY', prefix);
var theta = preprop(_p.rscratch, 'labelAngle', prefix);
var ox = ele.pstyle(prefixDash + 'text-margin-x').pfValue;
var oy = ele.pstyle(prefixDash + 'text-margin-y').pfValue;
var lx1 = bb.x1 - th - ox; // (-ox, -oy) as bb already includes margin
var lx2 = bb.x2 + th - ox; // and rotation is about (lx, ly)
var ly1 = bb.y1 - th - oy;
var ly2 = bb.y2 + th - oy;
if (theta) {
var cos = Math.cos(theta);
var sin = Math.sin(theta);
var rotate = function rotate(x, y) {
x = x - lx;
y = y - ly;
return {
x: x * cos - y * sin + lx,
y: x * sin + y * cos + ly
};
};
var px1y1 = rotate(lx1, ly1);
var px1y2 = rotate(lx1, ly2);
var px2y1 = rotate(lx2, ly1);
var px2y2 = rotate(lx2, ly2);
var points = [// with the margin added after the rotation is applied
px1y1.x + ox, px1y1.y + oy, px2y1.x + ox, px2y1.y + oy, px2y2.x + ox, px2y2.y + oy, px1y2.x + ox, px1y2.y + oy];
if (pointInsidePolygonPoints(x, y, points)) {
addEle(ele);
return true;
}
} else {
// do a cheaper bb check
if (inBoundingBox(bb, x, y)) {
addEle(ele);
return true;
}
}
}
for (var i = eles.length - 1; i >= 0; i--) {
// reverse order for precedence
var ele = eles[i];
if (ele.isNode()) {
checkNode(ele) || checkLabel(ele);
} else {
// then edge
checkEdge(ele) || checkLabel(ele) || checkLabel(ele, 'source') || checkLabel(ele, 'target');
}
}
return near;
}; // 'Give me everything from this box'
BRp$1.getAllInBox = function (x1, y1, x2, y2) {
var eles = this.getCachedZSortedEles().interactive;
var box = [];
var x1c = Math.min(x1, x2);
var x2c = Math.max(x1, x2);
var y1c = Math.min(y1, y2);
var y2c = Math.max(y1, y2);
x1 = x1c;
x2 = x2c;
y1 = y1c;
y2 = y2c;
var boxBb = makeBoundingBox({
x1: x1,
y1: y1,
x2: x2,
y2: y2
});
for (var e = 0; e < eles.length; e++) {
var ele = eles[e];
if (ele.isNode()) {
var node = ele;
var nodeBb = node.boundingBox({
includeNodes: true,
includeEdges: false,
includeLabels: false
});
if (boundingBoxesIntersect(boxBb, nodeBb) && !boundingBoxInBoundingBox(nodeBb, boxBb)) {
box.push(node);
}
} else {
var edge = ele;
var _p = edge._private;
var rs = _p.rscratch;
if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) {
continue;
}
if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) {
continue;
}
if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound' || rs.edgeType === 'segments' || rs.edgeType === 'haystack') {
var pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts;
var allInside = true;
for (var i = 0; i < pts.length; i++) {
if (!pointInBoundingBox(boxBb, pts[i])) {
allInside = false;
break;
}
}
if (allInside) {
box.push(edge);
}
} else if (rs.edgeType === 'haystack' || rs.edgeType === 'straight') {
box.push(edge);
}
}
}
return box;
};
var BRp$2 = {};
BRp$2.calculateArrowAngles = function (edge) {
var rs = edge._private.rscratch;
var isHaystack = rs.edgeType === 'haystack';
var isBezier = rs.edgeType === 'bezier';
var isMultibezier = rs.edgeType === 'multibezier';
var isSegments = rs.edgeType === 'segments';
var isCompound = rs.edgeType === 'compound';
var isSelf = rs.edgeType === 'self'; // Displacement gives direction for arrowhead orientation
var dispX, dispY;
var startX, startY, endX, endY, midX, midY;
if (isHaystack) {
startX = rs.haystackPts[0];
startY = rs.haystackPts[1];
endX = rs.haystackPts[2];
endY = rs.haystackPts[3];
} else {
startX = rs.arrowStartX;
startY = rs.arrowStartY;
endX = rs.arrowEndX;
endY = rs.arrowEndY;
}
midX = rs.midX;
midY = rs.midY; // source
//
if (isSegments) {
dispX = startX - rs.segpts[0];
dispY = startY - rs.segpts[1];
} else if (isMultibezier || isCompound || isSelf || isBezier) {
var pts = rs.allpts;
var bX = qbezierAt(pts[0], pts[2], pts[4], 0.1);
var bY = qbezierAt(pts[1], pts[3], pts[5], 0.1);
dispX = startX - bX;
dispY = startY - bY;
} else {
dispX = startX - midX;
dispY = startY - midY;
}
rs.srcArrowAngle = getAngleFromDisp(dispX, dispY); // mid target
//
var midX = rs.midX;
var midY = rs.midY;
if (isHaystack) {
midX = (startX + endX) / 2;
midY = (startY + endY) / 2;
}
dispX = endX - startX;
dispY = endY - startY;
if (isSegments) {
var pts = rs.allpts;
if (pts.length / 2 % 2 === 0) {
var i2 = pts.length / 2;
var i1 = i2 - 2;
dispX = pts[i2] - pts[i1];
dispY = pts[i2 + 1] - pts[i1 + 1];
} else {
var i2 = pts.length / 2 - 1;
var i1 = i2 - 2;
var i3 = i2 + 2;
dispX = pts[i2] - pts[i1];
dispY = pts[i2 + 1] - pts[i1 + 1];
}
} else if (isMultibezier || isCompound || isSelf) {
var pts = rs.allpts;
var cpts = rs.ctrlpts;
var bp0x, bp0y;
var bp1x, bp1y;
if (cpts.length / 2 % 2 === 0) {
var p0 = pts.length / 2 - 1; // startpt
var ic = p0 + 2;
var p1 = ic + 2;
bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0);
bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0);
bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0001);
bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0001);
} else {
var ic = pts.length / 2 - 1; // ctrpt
var p0 = ic - 2; // startpt
var p1 = ic + 2; // endpt
bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.4999);
bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.4999);
bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.5);
bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.5);
}
dispX = bp1x - bp0x;
dispY = bp1y - bp0y;
}
rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY);
rs.midDispX = dispX;
rs.midDispY = dispY; // mid source
//
dispX *= -1;
dispY *= -1;
if (isSegments) {
var pts = rs.allpts;
if (pts.length / 2 % 2 === 0) ; else {
var i2 = pts.length / 2 - 1;
var i3 = i2 + 2;
dispX = -(pts[i3] - pts[i2]);
dispY = -(pts[i3 + 1] - pts[i2 + 1]);
}
}
rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY); // target
//
if (isSegments) {
dispX = endX - rs.segpts[rs.segpts.length - 2];
dispY = endY - rs.segpts[rs.segpts.length - 1];
} else if (isMultibezier || isCompound || isSelf || isBezier) {
var pts = rs.allpts;
var l = pts.length;
var bX = qbezierAt(pts[l - 6], pts[l - 4], pts[l - 2], 0.9);
var bY = qbezierAt(pts[l - 5], pts[l - 3], pts[l - 1], 0.9);
dispX = endX - bX;
dispY = endY - bY;
} else {
dispX = endX - midX;
dispY = endY - midY;
}
rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY);
};
BRp$2.getArrowWidth = BRp$2.getArrowHeight = function (edgeWidth, scale) {
var cache = this.arrowWidthCache = this.arrowWidthCache || {};
var cachedVal = cache[edgeWidth + ', ' + scale];
if (cachedVal) {
return cachedVal;
}
cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale;
cache[edgeWidth + ', ' + scale] = cachedVal;
return cachedVal;
};
var BRp$3 = {};
BRp$3.findHaystackPoints = function (edges) {
for (var i = 0; i < edges.length; i++) {
var edge = edges[i];
var _p = edge._private;
var rs = _p.rscratch;
if (!rs.haystack) {
var angle = Math.random() * 2 * Math.PI;
rs.source = {
x: Math.cos(angle),
y: Math.sin(angle)
};
angle = Math.random() * 2 * Math.PI;
rs.target = {
x: Math.cos(angle),
y: Math.sin(angle)
};
}
var src = _p.source;
var tgt = _p.target;
var srcPos = src.position();
var tgtPos = tgt.position();
var srcW = src.width();
var tgtW = tgt.width();
var srcH = src.height();
var tgtH = tgt.height();
var radius = edge.pstyle('haystack-radius').value;
var halfRadius = radius / 2; // b/c have to half width/height
rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y];
rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2;
rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2; // always override as haystack in case set to different type previously
rs.edgeType = 'haystack';
rs.haystack = true;
this.storeEdgeProjections(edge);
this.calculateArrowAngles(edge);
this.recalculateEdgeLabelProjections(edge);
this.calculateLabelAngles(edge);
}
};
BRp$3.findSegmentsPoints = function (edge, pairInfo) {
// Segments (multiple straight lines)
var rs = edge._private.rscratch;
var posPts = pairInfo.posPts,
intersectionPts = pairInfo.intersectionPts,
vectorNormInverse = pairInfo.vectorNormInverse;
var edgeDistances = edge.pstyle('edge-distances').value;
var segmentWs = edge.pstyle('segment-weights');
var segmentDs = edge.pstyle('segment-distances');
var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length);
rs.edgeType = 'segments';
rs.segpts = [];
for (var s = 0; s < segmentsN; s++) {
var w = segmentWs.pfValue[s];
var d = segmentDs.pfValue[s];
var w1 = 1 - w;
var w2 = w;
var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts;
var adjustedMidpt = {
x: midptPts.x1 * w1 + midptPts.x2 * w2,
y: midptPts.y1 * w1 + midptPts.y2 * w2
};
rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d, adjustedMidpt.y + vectorNormInverse.y * d);
}
};
BRp$3.findLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) {
// Self-edge
var rs = edge._private.rscratch;
var dirCounts = pairInfo.dirCounts,
srcPos = pairInfo.srcPos;
var ctrlptDists = edge.pstyle('control-point-distances');
var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;
var loopDir = edge.pstyle('loop-direction').pfValue;
var loopSwp = edge.pstyle('loop-sweep').pfValue;
var stepSize = edge.pstyle('control-point-step-size').pfValue;
rs.edgeType = 'self';
var j = i;
var loopDist = stepSize;
if (edgeIsUnbundled) {
j = 0;
loopDist = ctrlptDist;
}
var loopAngle = loopDir - Math.PI / 2;
var outAngle = loopAngle - loopSwp / 2;
var inAngle = loopAngle + loopSwp / 2; // increase by step size for overlapping loops, keyed on direction and sweep values
var dc = String(loopDir + '_' + loopSwp);
j = dirCounts[dc] === undefined ? dirCounts[dc] = 0 : ++dirCounts[dc];
rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j / 3 + 1)];
};
BRp$3.findCompoundLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) {
// Compound edge
var rs = edge._private.rscratch;
rs.edgeType = 'compound';
var srcPos = pairInfo.srcPos,
tgtPos = pairInfo.tgtPos,
srcW = pairInfo.srcW,
srcH = pairInfo.srcH,
tgtW = pairInfo.tgtW,
tgtH = pairInfo.tgtH;
var stepSize = edge.pstyle('control-point-step-size').pfValue;
var ctrlptDists = edge.pstyle('control-point-distances');
var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;
var j = i;
var loopDist = stepSize;
if (edgeIsUnbundled) {
j = 0;
loopDist = ctrlptDist;
}
var loopW = 50;
var loopaPos = {
x: srcPos.x - srcW / 2,
y: srcPos.y - srcH / 2
};
var loopbPos = {
x: tgtPos.x - tgtW / 2,
y: tgtPos.y - tgtH / 2
};
var loopPos = {
x: Math.min(loopaPos.x, loopbPos.x),
y: Math.min(loopaPos.y, loopbPos.y)
}; // avoids cases with impossible beziers
var minCompoundStretch = 0.5;
var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * 0.01));
var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * 0.01));
rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchB, loopPos.y];
};
BRp$3.findStraightEdgePoints = function (edge) {
// Straight edge within bundle
edge._private.rscratch.edgeType = 'straight';
};
BRp$3.findBezierPoints = function (edge, pairInfo, i, edgeIsUnbundled, edgeIsSwapped) {
var rs = edge._private.rscratch;
var vectorNormInverse = pairInfo.vectorNormInverse,
posPts = pairInfo.posPts,
intersectionPts = pairInfo.intersectionPts;
var edgeDistances = edge.pstyle('edge-distances').value;
var stepSize = edge.pstyle('control-point-step-size').pfValue;
var ctrlptDists = edge.pstyle('control-point-distances');
var ctrlptWs = edge.pstyle('control-point-weights');
var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1;
var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;
var ctrlptWeight = ctrlptWs.value[0]; // (Multi)bezier
var multi = edgeIsUnbundled;
rs.edgeType = multi ? 'multibezier' : 'bezier';
rs.ctrlpts = [];
for (var b = 0; b < bezierN; b++) {
var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i) * stepSize * (edgeIsSwapped ? -1 : 1);
var manctrlptDist = void 0;
var sign = signum(normctrlptDist);
if (multi) {
ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b] : stepSize; // fall back on step size
ctrlptWeight = ctrlptWs.value[b];
}
if (edgeIsUnbundled) {
// multi or single unbundled
manctrlptDist = ctrlptDist;
} else {
manctrlptDist = ctrlptDist !== undefined ? sign * ctrlptDist : undefined;
}
var distanceFromMidpoint = manctrlptDist !== undefined ? manctrlptDist : normctrlptDist;
var w1 = 1 - ctrlptWeight;
var w2 = ctrlptWeight;
var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts;
var adjustedMidpt = {
x: midptPts.x1 * w1 + midptPts.x2 * w2,
y: midptPts.y1 * w1 + midptPts.y2 * w2
};
rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint);
}
};
BRp$3.findTaxiPoints = function (edge, pairInfo) {
// Taxicab geometry with two turns maximum
var rs = edge._private.rscratch;
rs.edgeType = 'segments';
var VERTICAL = 'vertical';
var HORIZONTAL = 'horizontal';
var LEFTWARD = 'leftward';
var RIGHTWARD = 'rightward';
var DOWNWARD = 'downward';
var UPWARD = 'upward';
var AUTO = 'auto';
var posPts = pairInfo.posPts,
srcW = pairInfo.srcW,
srcH = pairInfo.srcH,
tgtW = pairInfo.tgtW,
tgtH = pairInfo.tgtH;
var edgeDistances = edge.pstyle('edge-distances').value;
var dIncludesNodeBody = edgeDistances !== 'node-position';
var taxiDir = edge.pstyle('taxi-direction').value;
var rawTaxiDir = taxiDir; // unprocessed value
var taxiTurn = edge.pstyle('taxi-turn');
var turnIsPercent = taxiTurn.units === '%';
var taxiTurnPfVal = taxiTurn.pfValue;
var turnIsNegative = taxiTurnPfVal < 0; // i.e. from target side
var minD = edge.pstyle('taxi-turn-min-distance').pfValue;
var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0;
var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0;
var pdx = posPts.x2 - posPts.x1;
var pdy = posPts.y2 - posPts.y1; // take away the effective w/h from the magnitude of the delta value
var subDWH = function subDWH(dxy, dwh) {
if (dxy > 0) {
return Math.max(dxy - dwh, 0);
} else {
return Math.min(dxy + dwh, 0);
}
};
var dx = subDWH(pdx, dw);
var dy = subDWH(pdy, dh);
var isExplicitDir = false;
if (rawTaxiDir === AUTO) {
taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL;
} else if (rawTaxiDir === UPWARD || rawTaxiDir === DOWNWARD) {
taxiDir = VERTICAL;
isExplicitDir = true;
} else if (rawTaxiDir === LEFTWARD || rawTaxiDir === RIGHTWARD) {
taxiDir = HORIZONTAL;
isExplicitDir = true;
}
var isVert = taxiDir === VERTICAL;
var l = isVert ? dy : dx;
var pl = isVert ? pdy : pdx;
var sgnL = signum(pl);
var forcedDir = false;
if (!(isExplicitDir && (turnIsPercent || turnIsNegative)) // forcing in this case would cause weird growing in the opposite direction
&& (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) {
sgnL *= -1;
l = sgnL * Math.abs(l);
forcedDir = true;
}
var d;
if (turnIsPercent) {
var p = taxiTurnPfVal < 0 ? 1 + taxiTurnPfVal : taxiTurnPfVal;
d = p * l;
} else {
var k = taxiTurnPfVal < 0 ? l : 0;
d = k + taxiTurnPfVal * sgnL;
}
var getIsTooClose = function getIsTooClose(d) {
return Math.abs(d) < minD || Math.abs(d) >= Math.abs(l);
};
var isTooCloseSrc = getIsTooClose(d);
var isTooCloseTgt = getIsTooClose(Math.abs(l) - Math.abs(d));
var isTooClose = isTooCloseSrc || isTooCloseTgt;
if (isTooClose && !forcedDir) {
// non-ideal routing
if (isVert) {
// vertical fallbacks
var lShapeInsideSrc = Math.abs(pl) <= srcH / 2;
var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2;
if (lShapeInsideSrc) {
// horizontal Z-shape (direction not respected)
var x = (posPts.x1 + posPts.x2) / 2;
var y1 = posPts.y1,
y2 = posPts.y2;
rs.segpts = [x, y1, x, y2];
} else if (lShapeInsideTgt) {
// vertical Z-shape (distance not respected)
var y = (posPts.y1 + posPts.y2) / 2;
var x1 = posPts.x1,
x2 = posPts.x2;
rs.segpts = [x1, y, x2, y];
} else {
// L-shape fallback (turn distance not respected, but works well with tree siblings)
rs.segpts = [posPts.x1, posPts.y2];
}
} else {
// horizontal fallbacks
var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2;
var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2;
if (_lShapeInsideSrc) {
// vertical Z-shape (direction not respected)
var _y = (posPts.y1 + posPts.y2) / 2;
var _x = posPts.x1,
_x2 = posPts.x2;
rs.segpts = [_x, _y, _x2, _y];
} else if (_lShapeInsideTgt) {
// horizontal Z-shape (turn distance not respected)
var _x3 = (posPts.x1 + posPts.x2) / 2;
var _y2 = posPts.y1,
_y3 = posPts.y2;
rs.segpts = [_x3, _y2, _x3, _y3];
} else {
// L-shape (turn distance not respected, but works well for tree siblings)
rs.segpts = [posPts.x2, posPts.y1];
}
}
} else {
// ideal routing
if (isVert) {
var _y4 = posPts.y1 + d + (dIncludesNodeBody ? srcH / 2 * sgnL : 0);
var _x4 = posPts.x1,
_x5 = posPts.x2;
rs.segpts = [_x4, _y4, _x5, _y4];
} else {
// horizontal
var _x6 = posPts.x1 + d + (dIncludesNodeBody ? srcW / 2 * sgnL : 0);
var _y5 = posPts.y1,
_y6 = posPts.y2;
rs.segpts = [_x6, _y5, _x6, _y6];
}
}
};
BRp$3.tryToCorrectInvalidPoints = function (edge, pairInfo) {
var rs = edge._private.rscratch; // can only correct beziers for now...
if (rs.edgeType === 'bezier') {
var srcPos = pairInfo.srcPos,
tgtPos = pairInfo.tgtPos,
srcW = pairInfo.srcW,
srcH = pairInfo.srcH,
tgtW = pairInfo.tgtW,
tgtH = pairInfo.tgtH,
srcShape = pairInfo.srcShape,
tgtShape = pairInfo.tgtShape;
var badStart = !number(rs.startX) || !number(rs.startY);
var badAStart = !number(rs.arrowStartX) || !number(rs.arrowStartY);
var badEnd = !number(rs.endX) || !number(rs.endY);
var badAEnd = !number(rs.arrowEndX) || !number(rs.arrowEndY);
var minCpADistFactor = 3;
var arrowW = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth;
var minCpADist = minCpADistFactor * arrowW;
var startACpDist = dist$1({
x: rs.ctrlpts[0],
y: rs.ctrlpts[1]
}, {
x: rs.startX,
y: rs.startY
});
var closeStartACp = startACpDist < minCpADist;
var endACpDist = dist$1({
x: rs.ctrlpts[0],
y: rs.ctrlpts[1]
}, {
x: rs.endX,
y: rs.endY
});
var closeEndACp = endACpDist < minCpADist;
var overlapping = false;
if (badStart || badAStart || closeStartACp) {
overlapping = true; // project control point along line from src centre to outside the src shape
// (otherwise intersection will yield nothing)
var cpD = {
// delta
x: rs.ctrlpts[0] - srcPos.x,
y: rs.ctrlpts[1] - srcPos.y
};
var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); // length of line
var cpM = {
// normalised delta
x: cpD.x / cpL,
y: cpD.y / cpL
};
var radius = Math.max(srcW, srcH);
var cpProj = {
// *2 radius guarantees outside shape
x: rs.ctrlpts[0] + cpM.x * 2 * radius,
y: rs.ctrlpts[1] + cpM.y * 2 * radius
};
var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0);
if (closeStartACp) {
rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist);
rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist);
} else {
rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist;
rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist;
}
}
if (badEnd || badAEnd || closeEndACp) {
overlapping = true; // project control point along line from tgt centre to outside the tgt shape
// (otherwise intersection will yield nothing)
var _cpD = {
// delta
x: rs.ctrlpts[0] - tgtPos.x,
y: rs.ctrlpts[1] - tgtPos.y
};
var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); // length of line
var _cpM = {
// normalised delta
x: _cpD.x / _cpL,
y: _cpD.y / _cpL
};
var _radius = Math.max(srcW, srcH);
var _cpProj = {
// *2 radius guarantees outside shape
x: rs.ctrlpts[0] + _cpM.x * 2 * _radius,
y: rs.ctrlpts[1] + _cpM.y * 2 * _radius
};
var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0);
if (closeEndACp) {
rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist);
rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist);
} else {
rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist;
rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist;
}
}
if (overlapping) {
// recalc endpts
this.findEndpoints(edge);
}
}
};
BRp$3.storeAllpts = function (edge) {
var rs = edge._private.rscratch;
if (rs.edgeType === 'multibezier' || rs.edgeType === 'bezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') {
rs.allpts = [];
rs.allpts.push(rs.startX, rs.startY);
for (var b = 0; b + 1 < rs.ctrlpts.length; b += 2) {
// ctrl pt itself
rs.allpts.push(rs.ctrlpts[b], rs.ctrlpts[b + 1]); // the midpt between ctrlpts as intermediate destination pts
if (b + 3 < rs.ctrlpts.length) {
rs.allpts.push((rs.ctrlpts[b] + rs.ctrlpts[b + 2]) / 2, (rs.ctrlpts[b + 1] + rs.ctrlpts[b + 3]) / 2);
}
}
rs.allpts.push(rs.endX, rs.endY);
var m, mt;
if (rs.ctrlpts.length / 2 % 2 === 0) {
m = rs.allpts.length / 2 - 1;
rs.midX = rs.allpts[m];
rs.midY = rs.allpts[m + 1];
} else {
m = rs.allpts.length / 2 - 3;
mt = 0.5;
rs.midX = qbezierAt(rs.allpts[m], rs.allpts[m + 2], rs.allpts[m + 4], mt);
rs.midY = qbezierAt(rs.allpts[m + 1], rs.allpts[m + 3], rs.allpts[m + 5], mt);
}
} else if (rs.edgeType === 'straight') {
// need to calc these after endpts
rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY]; // default midpt for labels etc
rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4;
rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4;
} else if (rs.edgeType === 'segments') {
rs.allpts = [];
rs.allpts.push(rs.startX, rs.startY);
rs.allpts.push.apply(rs.allpts, rs.segpts);
rs.allpts.push(rs.endX, rs.endY);
if (rs.segpts.length % 4 === 0) {
var i2 = rs.segpts.length / 2;
var i1 = i2 - 2;
rs.midX = (rs.segpts[i1] + rs.segpts[i2]) / 2;
rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i2 + 1]) / 2;
} else {
var _i = rs.segpts.length / 2 - 1;
rs.midX = rs.segpts[_i];
rs.midY = rs.segpts[_i + 1];
}
}
};
BRp$3.checkForInvalidEdgeWarning = function (edge) {
var rs = edge[0]._private.rscratch;
if (rs.nodesOverlap || number(rs.startX) && number(rs.startY) && number(rs.endX) && number(rs.endY)) {
rs.loggedErr = false;
} else {
if (!rs.loggedErr) {
rs.loggedErr = true;
warn('Edge `' + edge.id() + '` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap.');
}
}
};
BRp$3.findEdgeControlPoints = function (edges) {
var _this = this;
if (!edges || edges.length === 0) {
return;
}
var r = this;
var cy = r.cy;
var hasCompounds = cy.hasCompoundNodes();
var hashTable = {
map: new Map$1$1(),
get: function get(pairId) {
var map2 = this.map.get(pairId[0]);
if (map2 != null) {
return map2.get(pairId[1]);
} else {
return null;
}
},
set: function set(pairId, val) {
var map2 = this.map.get(pairId[0]);
if (map2 == null) {
map2 = new Map$1$1();
this.map.set(pairId[0], map2);
}
map2.set(pairId[1], val);
}
};
var pairIds = [];
var haystackEdges = []; // create a table of edge (src, tgt) => list of edges between them
for (var i = 0; i < edges.length; i++) {
var edge = edges[i];
var _p = edge._private;
var curveStyle = edge.pstyle('curve-style').value; // ignore edges who are not to be displayed
// they shouldn't take up space
if (edge.removed() || !edge.takesUpSpace()) {
continue;
}
if (curveStyle === 'haystack') {
haystackEdges.push(edge);
continue;
}
var edgeIsUnbundled = curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'straight' || curveStyle === 'straight-triangle' || curveStyle === 'taxi';
var edgeIsBezier = curveStyle === 'unbundled-bezier' || curveStyle === 'bezier';
var src = _p.source;
var tgt = _p.target;
var srcIndex = src.poolIndex();
var tgtIndex = tgt.poolIndex();
var pairId = [srcIndex, tgtIndex].sort();
var tableEntry = hashTable.get(pairId);
if (tableEntry == null) {
tableEntry = {
eles: []
};
hashTable.set(pairId, tableEntry);
pairIds.push(pairId);
}
tableEntry.eles.push(edge);
if (edgeIsUnbundled) {
tableEntry.hasUnbundled = true;
}
if (edgeIsBezier) {
tableEntry.hasBezier = true;
}
} // for each pair (src, tgt), create the ctrl pts
// Nested for loop is OK; total number of iterations for both loops = edgeCount
var _loop = function _loop(p) {
var pairId = pairIds[p];
var pairInfo = hashTable.get(pairId);
var swappedpairInfo = void 0;
if (!pairInfo.hasUnbundled) {
var pllEdges = pairInfo.eles[0].parallelEdges().filter(function (e) {
return e.isBundledBezier();
});
clearArray(pairInfo.eles);
pllEdges.forEach(function (edge) {
return pairInfo.eles.push(edge);
}); // for each pair id, the edges should be sorted by index
pairInfo.eles.sort(function (edge1, edge2) {
return edge1.poolIndex() - edge2.poolIndex();
});
}
var firstEdge = pairInfo.eles[0];
var src = firstEdge.source();
var tgt = firstEdge.target(); // make sure src/tgt distinction is consistent w.r.t. pairId
if (src.poolIndex() > tgt.poolIndex()) {
var temp = src;
src = tgt;
tgt = temp;
}
var srcPos = pairInfo.srcPos = src.position();
var tgtPos = pairInfo.tgtPos = tgt.position();
var srcW = pairInfo.srcW = src.outerWidth();
var srcH = pairInfo.srcH = src.outerHeight();
var tgtW = pairInfo.tgtW = tgt.outerWidth();
var tgtH = pairInfo.tgtH = tgt.outerHeight();
var srcShape = pairInfo.srcShape = r.nodeShapes[_this.getNodeShape(src)];
var tgtShape = pairInfo.tgtShape = r.nodeShapes[_this.getNodeShape(tgt)];
pairInfo.dirCounts = {
'north': 0,
'west': 0,
'south': 0,
'east': 0,
'northwest': 0,
'southwest': 0,
'northeast': 0,
'southeast': 0
};
for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) {
var _edge = pairInfo.eles[_i2];
var rs = _edge[0]._private.rscratch;
var _curveStyle = _edge.pstyle('curve-style').value;
var _edgeIsUnbundled = _curveStyle === 'unbundled-bezier' || _curveStyle === 'segments' || _curveStyle === 'taxi'; // whether the normalised pair order is the reverse of the edge's src-tgt order
var edgeIsSwapped = !src.same(_edge.source());
if (!pairInfo.calculatedIntersection && src !== tgt && (pairInfo.hasBezier || pairInfo.hasUnbundled)) {
pairInfo.calculatedIntersection = true; // pt outside src shape to calc distance/displacement from src to tgt
var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0);
var srcIntn = pairInfo.srcIntn = srcOutside; // pt outside tgt shape to calc distance/displacement from src to tgt
var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0);
var tgtIntn = pairInfo.tgtIntn = tgtOutside;
var intersectionPts = pairInfo.intersectionPts = {
x1: srcOutside[0],
x2: tgtOutside[0],
y1: srcOutside[1],
y2: tgtOutside[1]
};
var posPts = pairInfo.posPts = {
x1: srcPos.x,
x2: tgtPos.x,
y1: srcPos.y,
y2: tgtPos.y
};
var dy = tgtOutside[1] - srcOutside[1];
var dx = tgtOutside[0] - srcOutside[0];
var l = Math.sqrt(dx * dx + dy * dy);
var vector = pairInfo.vector = {
x: dx,
y: dy
};
var vectorNorm = pairInfo.vectorNorm = {
x: vector.x / l,
y: vector.y / l
};
var vectorNormInverse = {
x: -vectorNorm.y,
y: vectorNorm.x
}; // if node shapes overlap, then no ctrl pts to draw
pairInfo.nodesOverlap = !number(l) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y);
pairInfo.vectorNormInverse = vectorNormInverse;
swappedpairInfo = {
nodesOverlap: pairInfo.nodesOverlap,
dirCounts: pairInfo.dirCounts,
calculatedIntersection: true,
hasBezier: pairInfo.hasBezier,
hasUnbundled: pairInfo.hasUnbundled,
eles: pairInfo.eles,
srcPos: tgtPos,
tgtPos: srcPos,
srcW: tgtW,
srcH: tgtH,
tgtW: srcW,
tgtH: srcH,
srcIntn: tgtIntn,
tgtIntn: srcIntn,
srcShape: tgtShape,
tgtShape: srcShape,
posPts: {
x1: posPts.x2,
y1: posPts.y2,
x2: posPts.x1,
y2: posPts.y1
},
intersectionPts: {
x1: intersectionPts.x2,
y1: intersectionPts.y2,
x2: intersectionPts.x1,
y2: intersectionPts.y1
},
vector: {
x: -vector.x,
y: -vector.y
},
vectorNorm: {
x: -vectorNorm.x,
y: -vectorNorm.y
},
vectorNormInverse: {
x: -vectorNormInverse.x,
y: -vectorNormInverse.y
}
};
}
var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo;
rs.nodesOverlap = passedPairInfo.nodesOverlap;
rs.srcIntn = passedPairInfo.srcIntn;
rs.tgtIntn = passedPairInfo.tgtIntn;
if (hasCompounds && (src.isParent() || src.isChild() || tgt.isParent() || tgt.isChild()) && (src.parents().anySame(tgt) || tgt.parents().anySame(src) || src.same(tgt) && src.isParent())) {
_this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled);
} else if (src === tgt) {
_this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled);
} else if (_curveStyle === 'segments') {
_this.findSegmentsPoints(_edge, passedPairInfo);
} else if (_curveStyle === 'taxi') {
_this.findTaxiPoints(_edge, passedPairInfo);
} else if (_curveStyle === 'straight' || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) {
_this.findStraightEdgePoints(_edge);
} else {
_this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped);
}
_this.findEndpoints(_edge);
_this.tryToCorrectInvalidPoints(_edge, passedPairInfo);
_this.checkForInvalidEdgeWarning(_edge);
_this.storeAllpts(_edge);
_this.storeEdgeProjections(_edge);
_this.calculateArrowAngles(_edge);
_this.recalculateEdgeLabelProjections(_edge);
_this.calculateLabelAngles(_edge);
} // for pair edges
};
for (var p = 0; p < pairIds.length; p++) {
_loop(p);
} // for pair ids
// haystacks avoid the expense of pairInfo stuff (intersections etc.)
this.findHaystackPoints(haystackEdges);
};
function getPts(pts) {
var retPts = [];
if (pts == null) {
return;
}
for (var i = 0; i < pts.length; i += 2) {
var x = pts[i];
var y = pts[i + 1];
retPts.push({
x: x,
y: y
});
}
return retPts;
}
BRp$3.getSegmentPoints = function (edge) {
var rs = edge[0]._private.rscratch;
var type = rs.edgeType;
if (type === 'segments') {
this.recalculateRenderedStyle(edge);
return getPts(rs.segpts);
}
};
BRp$3.getControlPoints = function (edge) {
var rs = edge[0]._private.rscratch;
var type = rs.edgeType;
if (type === 'bezier' || type === 'multibezier' || type === 'self' || type === 'compound') {
this.recalculateRenderedStyle(edge);
return getPts(rs.ctrlpts);
}
};
BRp$3.getEdgeMidpoint = function (edge) {
var rs = edge[0]._private.rscratch;
this.recalculateRenderedStyle(edge);
return {
x: rs.midX,
y: rs.midY
};
};
var BRp$4 = {};
BRp$4.manualEndptToPx = function (node, prop) {
var r = this;
var npos = node.position();
var w = node.outerWidth();
var h = node.outerHeight();
if (prop.value.length === 2) {
var p = [prop.pfValue[0], prop.pfValue[1]];
if (prop.units[0] === '%') {
p[0] = p[0] * w;
}
if (prop.units[1] === '%') {
p[1] = p[1] * h;
}
p[0] += npos.x;
p[1] += npos.y;
return p;
} else {
var angle = prop.pfValue[0];
angle = -Math.PI / 2 + angle; // start at 12 o'clock
var l = 2 * Math.max(w, h);
var _p = [npos.x + Math.cos(angle) * l, npos.y + Math.sin(angle) * l];
return r.nodeShapes[this.getNodeShape(node)].intersectLine(npos.x, npos.y, w, h, _p[0], _p[1], 0);
}
};
BRp$4.findEndpoints = function (edge) {
var r = this;
var intersect;
var source = edge.source()[0];
var target = edge.target()[0];
var srcPos = source.position();
var tgtPos = target.position();
var tgtArShape = edge.pstyle('target-arrow-shape').value;
var srcArShape = edge.pstyle('source-arrow-shape').value;
var tgtDist = edge.pstyle('target-distance-from-node').pfValue;
var srcDist = edge.pstyle('source-distance-from-node').pfValue;
var curveStyle = edge.pstyle('curve-style').value;
var rs = edge._private.rscratch;
var et = rs.edgeType;
var taxi = curveStyle === 'taxi';
var self = et === 'self' || et === 'compound';
var bezier = et === 'bezier' || et === 'multibezier' || self;
var multi = et !== 'bezier';
var lines = et === 'straight' || et === 'segments';
var segments = et === 'segments';
var hasEndpts = bezier || multi || lines;
var overrideEndpts = self || taxi;
var srcManEndpt = edge.pstyle('source-endpoint');
var srcManEndptVal = overrideEndpts ? 'outside-to-node' : srcManEndpt.value;
var tgtManEndpt = edge.pstyle('target-endpoint');
var tgtManEndptVal = overrideEndpts ? 'outside-to-node' : tgtManEndpt.value;
rs.srcManEndpt = srcManEndpt;
rs.tgtManEndpt = tgtManEndpt;
var p1; // last known point of edge on target side
var p2; // last known point of edge on source side
var p1_i; // point to intersect with target shape
var p2_i; // point to intersect with source shape
if (bezier) {
var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]];
var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart;
p1 = cpEnd;
p2 = cpStart;
} else if (lines) {
var srcArrowFromPt = !segments ? [tgtPos.x, tgtPos.y] : rs.segpts.slice(0, 2);
var tgtArrowFromPt = !segments ? [srcPos.x, srcPos.y] : rs.segpts.slice(rs.segpts.length - 2);
p1 = tgtArrowFromPt;
p2 = srcArrowFromPt;
}
if (tgtManEndptVal === 'inside-to-node') {
intersect = [tgtPos.x, tgtPos.y];
} else if (tgtManEndpt.units) {
intersect = this.manualEndptToPx(target, tgtManEndpt);
} else if (tgtManEndptVal === 'outside-to-line') {
intersect = rs.tgtIntn; // use cached value from ctrlpt calc
} else {
if (tgtManEndptVal === 'outside-to-node' || tgtManEndptVal === 'outside-to-node-or-label') {
p1_i = p1;
} else if (tgtManEndptVal === 'outside-to-line' || tgtManEndptVal === 'outside-to-line-or-label') {
p1_i = [srcPos.x, srcPos.y];
}
intersect = r.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0);
if (tgtManEndptVal === 'outside-to-node-or-label' || tgtManEndptVal === 'outside-to-line-or-label') {
var trs = target._private.rscratch;
var lw = trs.labelWidth;
var lh = trs.labelHeight;
var lx = trs.labelX;
var ly = trs.labelY;
var lw2 = lw / 2;
var lh2 = lh / 2;
var va = target.pstyle('text-valign').value;
if (va === 'top') {
ly -= lh2;
} else if (va === 'bottom') {
ly += lh2;
}
var ha = target.pstyle('text-halign').value;
if (ha === 'left') {
lx -= lw2;
} else if (ha === 'right') {
lx += lw2;
}
var labelIntersect = polygonIntersectLine(p1_i[0], p1_i[1], [lx - lw2, ly - lh2, lx + lw2, ly - lh2, lx + lw2, ly + lh2, lx - lw2, ly + lh2], tgtPos.x, tgtPos.y);
if (labelIntersect.length > 0) {
var refPt = srcPos;
var intSqdist = sqdist(refPt, array2point(intersect));
var labIntSqdist = sqdist(refPt, array2point(labelIntersect));
var minSqDist = intSqdist;
if (labIntSqdist < intSqdist) {
intersect = labelIntersect;
minSqDist = labIntSqdist;
}
if (labelIntersect.length > 2) {
var labInt2SqDist = sqdist(refPt, {
x: labelIntersect[2],
y: labelIntersect[3]
});
if (labInt2SqDist < minSqDist) {
intersect = [labelIntersect[2], labelIntersect[3]];
}
}
}
}
}
var arrowEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].spacing(edge) + tgtDist);
var edgeEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].gap(edge) + tgtDist);
rs.endX = edgeEnd[0];
rs.endY = edgeEnd[1];
rs.arrowEndX = arrowEnd[0];
rs.arrowEndY = arrowEnd[1];
if (srcManEndptVal === 'inside-to-node') {
intersect = [srcPos.x, srcPos.y];
} else if (srcManEndpt.units) {
intersect = this.manualEndptToPx(source, srcManEndpt);
} else if (srcManEndptVal === 'outside-to-line') {
intersect = rs.srcIntn; // use cached value from ctrlpt calc
} else {
if (srcManEndptVal === 'outside-to-node' || srcManEndptVal === 'outside-to-node-or-label') {
p2_i = p2;
} else if (srcManEndptVal === 'outside-to-line' || srcManEndptVal === 'outside-to-line-or-label') {
p2_i = [tgtPos.x, tgtPos.y];
}
intersect = r.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0);
if (srcManEndptVal === 'outside-to-node-or-label' || srcManEndptVal === 'outside-to-line-or-label') {
var srs = source._private.rscratch;
var _lw = srs.labelWidth;
var _lh = srs.labelHeight;
var _lx = srs.labelX;
var _ly = srs.labelY;
var _lw2 = _lw / 2;
var _lh2 = _lh / 2;
var _va = source.pstyle('text-valign').value;
if (_va === 'top') {
_ly -= _lh2;
} else if (_va === 'bottom') {
_ly += _lh2;
}
var _ha = source.pstyle('text-halign').value;
if (_ha === 'left') {
_lx -= _lw2;
} else if (_ha === 'right') {
_lx += _lw2;
}
var _labelIntersect = polygonIntersectLine(p2_i[0], p2_i[1], [_lx - _lw2, _ly - _lh2, _lx + _lw2, _ly - _lh2, _lx + _lw2, _ly + _lh2, _lx - _lw2, _ly + _lh2], srcPos.x, srcPos.y);
if (_labelIntersect.length > 0) {
var _refPt = tgtPos;
var _intSqdist = sqdist(_refPt, array2point(intersect));
var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect));
var _minSqDist = _intSqdist;
if (_labIntSqdist < _intSqdist) {
intersect = [_labelIntersect[0], _labelIntersect[1]];
_minSqDist = _labIntSqdist;
}
if (_labelIntersect.length > 2) {
var _labInt2SqDist = sqdist(_refPt, {
x: _labelIntersect[2],
y: _labelIntersect[3]
});
if (_labInt2SqDist < _minSqDist) {
intersect = [_labelIntersect[2], _labelIntersect[3]];
}
}
}
}
}
var arrowStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].spacing(edge) + srcDist);
var edgeStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].gap(edge) + srcDist);
rs.startX = edgeStart[0];
rs.startY = edgeStart[1];
rs.arrowStartX = arrowStart[0];
rs.arrowStartY = arrowStart[1];
if (hasEndpts) {
if (!number(rs.startX) || !number(rs.startY) || !number(rs.endX) || !number(rs.endY)) {
rs.badLine = true;
} else {
rs.badLine = false;
}
}
};
BRp$4.getSourceEndpoint = function (edge) {
var rs = edge[0]._private.rscratch;
this.recalculateRenderedStyle(edge);
switch (rs.edgeType) {
case 'haystack':
return {
x: rs.haystackPts[0],
y: rs.haystackPts[1]
};
default:
return {
x: rs.arrowStartX,
y: rs.arrowStartY
};
}
};
BRp$4.getTargetEndpoint = function (edge) {
var rs = edge[0]._private.rscratch;
this.recalculateRenderedStyle(edge);
switch (rs.edgeType) {
case 'haystack':
return {
x: rs.haystackPts[2],
y: rs.haystackPts[3]
};
default:
return {
x: rs.arrowEndX,
y: rs.arrowEndY
};
}
};
var BRp$5 = {};
function pushBezierPts(r, edge, pts) {
var qbezierAt$1 = function qbezierAt$1(p1, p2, p3, t) {
return qbezierAt(p1, p2, p3, t);
};
var _p = edge._private;
var bpts = _p.rstyle.bezierPts;
for (var i = 0; i < r.bezierProjPcts.length; i++) {
var p = r.bezierProjPcts[i];
bpts.push({
x: qbezierAt$1(pts[0], pts[2], pts[4], p),
y: qbezierAt$1(pts[1], pts[3], pts[5], p)
});
}
}
BRp$5.storeEdgeProjections = function (edge) {
var _p = edge._private;
var rs = _p.rscratch;
var et = rs.edgeType; // clear the cached points state
_p.rstyle.bezierPts = null;
_p.rstyle.linePts = null;
_p.rstyle.haystackPts = null;
if (et === 'multibezier' || et === 'bezier' || et === 'self' || et === 'compound') {
_p.rstyle.bezierPts = [];
for (var i = 0; i + 5 < rs.allpts.length; i += 4) {
pushBezierPts(this, edge, rs.allpts.slice(i, i + 6));
}
} else if (et === 'segments') {
var lpts = _p.rstyle.linePts = [];
for (var i = 0; i + 1 < rs.allpts.length; i += 2) {
lpts.push({
x: rs.allpts[i],
y: rs.allpts[i + 1]
});
}
} else if (et === 'haystack') {
var hpts = rs.haystackPts;
_p.rstyle.haystackPts = [{
x: hpts[0],
y: hpts[1]
}, {
x: hpts[2],
y: hpts[3]
}];
}
_p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth;
};
BRp$5.recalculateEdgeProjections = function (edges) {
this.findEdgeControlPoints(edges);
};
/* global document */
var BRp$6 = {};
BRp$6.recalculateNodeLabelProjection = function (node) {
var content = node.pstyle('label').strValue;
if (emptyString(content)) {
return;
}
var textX, textY;
var _p = node._private;
var nodeWidth = node.width();
var nodeHeight = node.height();
var padding = node.padding();
var nodePos = node.position();
var textHalign = node.pstyle('text-halign').strValue;
var textValign = node.pstyle('text-valign').strValue;
var rs = _p.rscratch;
var rstyle = _p.rstyle;
switch (textHalign) {
case 'left':
textX = nodePos.x - nodeWidth / 2 - padding;
break;
case 'right':
textX = nodePos.x + nodeWidth / 2 + padding;
break;
default:
// e.g. center
textX = nodePos.x;
}
switch (textValign) {
case 'top':
textY = nodePos.y - nodeHeight / 2 - padding;
break;
case 'bottom':
textY = nodePos.y + nodeHeight / 2 + padding;
break;
default:
// e.g. middle
textY = nodePos.y;
}
rs.labelX = textX;
rs.labelY = textY;
rstyle.labelX = textX;
rstyle.labelY = textY;
this.calculateLabelAngles(node);
this.applyLabelDimensions(node);
};
var lineAngleFromDelta = function lineAngleFromDelta(dx, dy) {
var angle = Math.atan(dy / dx);
if (dx === 0 && angle < 0) {
angle = angle * -1;
}
return angle;
};
var lineAngle = function lineAngle(p0, p1) {
var dx = p1.x - p0.x;
var dy = p1.y - p0.y;
return lineAngleFromDelta(dx, dy);
};
var bezierAngle = function bezierAngle(p0, p1, p2, t) {
var t0 = bound(0, t - 0.001, 1);
var t1 = bound(0, t + 0.001, 1);
var lp0 = qbezierPtAt(p0, p1, p2, t0);
var lp1 = qbezierPtAt(p0, p1, p2, t1);
return lineAngle(lp0, lp1);
};
BRp$6.recalculateEdgeLabelProjections = function (edge) {
var p;
var _p = edge._private;
var rs = _p.rscratch;
var r = this;
var content = {
mid: edge.pstyle('label').strValue,
source: edge.pstyle('source-label').strValue,
target: edge.pstyle('target-label').strValue
};
if (content.mid || content.source || content.target) ; else {
return; // no labels => no calcs
} // add center point to style so bounding box calculations can use it
//
p = {
x: rs.midX,
y: rs.midY
};
var setRs = function setRs(propName, prefix, value) {
setPrefixedProperty(_p.rscratch, propName, prefix, value);
setPrefixedProperty(_p.rstyle, propName, prefix, value);
};
setRs('labelX', null, p.x);
setRs('labelY', null, p.y);
var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY);
setRs('labelAutoAngle', null, midAngle);
var createControlPointInfo = function createControlPointInfo() {
if (createControlPointInfo.cache) {
return createControlPointInfo.cache;
} // use cache so only 1x per edge
var ctrlpts = []; // store each ctrlpt info init
for (var i = 0; i + 5 < rs.allpts.length; i += 4) {
var p0 = {
x: rs.allpts[i],
y: rs.allpts[i + 1]
};
var p1 = {
x: rs.allpts[i + 2],
y: rs.allpts[i + 3]
}; // ctrlpt
var p2 = {
x: rs.allpts[i + 4],
y: rs.allpts[i + 5]
};
ctrlpts.push({
p0: p0,
p1: p1,
p2: p2,
startDist: 0,
length: 0,
segments: []
});
}
var bpts = _p.rstyle.bezierPts;
var nProjs = r.bezierProjPcts.length;
function addSegment(cp, p0, p1, t0, t1) {
var length = dist$1(p0, p1);
var prevSegment = cp.segments[cp.segments.length - 1];
var segment = {
p0: p0,
p1: p1,
t0: t0,
t1: t1,
startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0,
length: length
};
cp.segments.push(segment);
cp.length += length;
} // update each ctrlpt with segment info
for (var _i = 0; _i < ctrlpts.length; _i++) {
var cp = ctrlpts[_i];
var prevCp = ctrlpts[_i - 1];
if (prevCp) {
cp.startDist = prevCp.startDist + prevCp.length;
}
addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r.bezierProjPcts[0]); // first
for (var j = 0; j < nProjs - 1; j++) {
addSegment(cp, bpts[_i * nProjs + j], bpts[_i * nProjs + j + 1], r.bezierProjPcts[j], r.bezierProjPcts[j + 1]);
}
addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r.bezierProjPcts[nProjs - 1], 1); // last
}
return createControlPointInfo.cache = ctrlpts;
};
var calculateEndProjection = function calculateEndProjection(prefix) {
var angle;
var isSrc = prefix === 'source';
if (!content[prefix]) {
return;
}
var offset = edge.pstyle(prefix + '-text-offset').pfValue;
switch (rs.edgeType) {
case 'self':
case 'compound':
case 'bezier':
case 'multibezier':
{
var cps = createControlPointInfo();
var selected;
var startDist = 0;
var totalDist = 0; // find the segment we're on
for (var i = 0; i < cps.length; i++) {
var _cp = cps[isSrc ? i : cps.length - 1 - i];
for (var j = 0; j < _cp.segments.length; j++) {
var _seg = _cp.segments[isSrc ? j : _cp.segments.length - 1 - j];
var lastSeg = i === cps.length - 1 && j === _cp.segments.length - 1;
startDist = totalDist;
totalDist += _seg.length;
if (totalDist >= offset || lastSeg) {
selected = {
cp: _cp,
segment: _seg
};
break;
}
}
if (selected) {
break;
}
}
var cp = selected.cp;
var seg = selected.segment;
var tSegment = (offset - startDist) / seg.length;
var segDt = seg.t1 - seg.t0;
var t = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment;
t = bound(0, t, 1);
p = qbezierPtAt(cp.p0, cp.p1, cp.p2, t);
angle = bezierAngle(cp.p0, cp.p1, cp.p2, t);
break;
}
case 'straight':
case 'segments':
case 'haystack':
{
var d = 0,
di,
d0;
var p0, p1;
var l = rs.allpts.length;
for (var _i2 = 0; _i2 + 3 < l; _i2 += 2) {
if (isSrc) {
p0 = {
x: rs.allpts[_i2],
y: rs.allpts[_i2 + 1]
};
p1 = {
x: rs.allpts[_i2 + 2],
y: rs.allpts[_i2 + 3]
};
} else {
p0 = {
x: rs.allpts[l - 2 - _i2],
y: rs.allpts[l - 1 - _i2]
};
p1 = {
x: rs.allpts[l - 4 - _i2],
y: rs.allpts[l - 3 - _i2]
};
}
di = dist$1(p0, p1);
d0 = d;
d += di;
if (d >= offset) {
break;
}
}
var pD = offset - d0;
var _t = pD / di;
_t = bound(0, _t, 1);
p = lineAt(p0, p1, _t);
angle = lineAngle(p0, p1);
break;
}
}
setRs('labelX', prefix, p.x);
setRs('labelY', prefix, p.y);
setRs('labelAutoAngle', prefix, angle);
};
calculateEndProjection('source');
calculateEndProjection('target');
this.applyLabelDimensions(edge);
};
BRp$6.applyLabelDimensions = function (ele) {
this.applyPrefixedLabelDimensions(ele);
if (ele.isEdge()) {
this.applyPrefixedLabelDimensions(ele, 'source');
this.applyPrefixedLabelDimensions(ele, 'target');
}
};
BRp$6.applyPrefixedLabelDimensions = function (ele, prefix) {
var _p = ele._private;
var text = this.getLabelText(ele, prefix);
var labelDims = this.calculateLabelDimensions(ele, text);
var lineHeight = ele.pstyle('line-height').pfValue;
var textWrap = ele.pstyle('text-wrap').strValue;
var lines = getPrefixedProperty(_p.rscratch, 'labelWrapCachedLines', prefix) || [];
var numLines = textWrap !== 'wrap' ? 1 : Math.max(lines.length, 1);
var normPerLineHeight = labelDims.height / numLines;
var labelLineHeight = normPerLineHeight * lineHeight;
var width = labelDims.width;
var height = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight;
setPrefixedProperty(_p.rstyle, 'labelWidth', prefix, width);
setPrefixedProperty(_p.rscratch, 'labelWidth', prefix, width);
setPrefixedProperty(_p.rstyle, 'labelHeight', prefix, height);
setPrefixedProperty(_p.rscratch, 'labelHeight', prefix, height);
setPrefixedProperty(_p.rscratch, 'labelLineHeight', prefix, labelLineHeight);
};
BRp$6.getLabelText = function (ele, prefix) {
var _p = ele._private;
var pfd = prefix ? prefix + '-' : '';
var text = ele.pstyle(pfd + 'label').strValue;
var textTransform = ele.pstyle('text-transform').value;
var rscratch = function rscratch(propName, value) {
if (value) {
setPrefixedProperty(_p.rscratch, propName, prefix, value);
return value;
} else {
return getPrefixedProperty(_p.rscratch, propName, prefix);
}
}; // for empty text, skip all processing
if (!text) {
return '';
}
if (textTransform == 'none') ; else if (textTransform == 'uppercase') {
text = text.toUpperCase();
} else if (textTransform == 'lowercase') {
text = text.toLowerCase();
}
var wrapStyle = ele.pstyle('text-wrap').value;
if (wrapStyle === 'wrap') {
var labelKey = rscratch('labelKey'); // save recalc if the label is the same as before
if (labelKey != null && rscratch('labelWrapKey') === labelKey) {
return rscratch('labelWrapCachedText');
}
var zwsp = "\u200B";
var lines = text.split('\n');
var maxW = ele.pstyle('text-max-width').pfValue;
var overflow = ele.pstyle('text-overflow-wrap').value;
var overflowAny = overflow === 'anywhere';
var wrappedLines = [];
var wordsRegex = /[\s\u200b]+/;
var wordSeparator = overflowAny ? '' : ' ';
for (var l = 0; l < lines.length; l++) {
var line = lines[l];
var lineDims = this.calculateLabelDimensions(ele, line);
var lineW = lineDims.width;
if (overflowAny) {
var processedLine = line.split('').join(zwsp);
line = processedLine;
}
if (lineW > maxW) {
// line is too long
var words = line.split(wordsRegex);
var subline = '';
for (var w = 0; w < words.length; w++) {
var word = words[w];
var testLine = subline.length === 0 ? word : subline + wordSeparator + word;
var testDims = this.calculateLabelDimensions(ele, testLine);
var testW = testDims.width;
if (testW <= maxW) {
// word fits on current line
subline += word + wordSeparator;
} else {
// word starts new line
if (subline) {
wrappedLines.push(subline);
}
subline = word + wordSeparator;
}
} // if there's remaining text, put it in a wrapped line
if (!subline.match(/^[\s\u200b]+$/)) {
wrappedLines.push(subline);
}
} else {
// line is already short enough
wrappedLines.push(line);
}
} // for
rscratch('labelWrapCachedLines', wrappedLines);
text = rscratch('labelWrapCachedText', wrappedLines.join('\n'));
rscratch('labelWrapKey', labelKey);
} else if (wrapStyle === 'ellipsis') {
var _maxW = ele.pstyle('text-max-width').pfValue;
var ellipsized = '';
var ellipsis = "\u2026";
var incLastCh = false;
if (this.calculateLabelDimensions(ele, text).width < _maxW) {
// the label already fits
return text;
}
for (var i = 0; i < text.length; i++) {
var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text[i] + ellipsis).width;
if (widthWithNextCh > _maxW) {
break;
}
ellipsized += text[i];
if (i === text.length - 1) {
incLastCh = true;
}
}
if (!incLastCh) {
ellipsized += ellipsis;
}
return ellipsized;
} // if ellipsize
return text;
};
BRp$6.getLabelJustification = function (ele) {
var justification = ele.pstyle('text-justification').strValue;
var textHalign = ele.pstyle('text-halign').strValue;
if (justification === 'auto') {
if (ele.isNode()) {
switch (textHalign) {
case 'left':
return 'right';
case 'right':
return 'left';
default:
return 'center';
}
} else {
return 'center';
}
} else {
return justification;
}
};
BRp$6.calculateLabelDimensions = function (ele, text) {
var r = this;
var cacheKey = hashString(text, ele._private.labelDimsKey);
var cache = r.labelDimCache || (r.labelDimCache = []);
var existingVal = cache[cacheKey];
if (existingVal != null) {
return existingVal;
}
var padding = 0; // add padding around text dims, as the measurement isn't that accurate
var fStyle = ele.pstyle('font-style').strValue;
var size = ele.pstyle('font-size').pfValue;
var family = ele.pstyle('font-family').strValue;
var weight = ele.pstyle('font-weight').strValue;
var canvas = this.labelCalcCanvas;
var c2d = this.labelCalcCanvasContext;
if (!canvas) {
canvas = this.labelCalcCanvas = document.createElement('canvas');
c2d = this.labelCalcCanvasContext = canvas.getContext('2d');
var ds = canvas.style;
ds.position = 'absolute';
ds.left = '-9999px';
ds.top = '-9999px';
ds.zIndex = '-1';
ds.visibility = 'hidden';
ds.pointerEvents = 'none';
}
c2d.font = "".concat(fStyle, " ").concat(weight, " ").concat(size, "px ").concat(family);
var width = 0;
var height = 0;
var lines = text.split('\n');
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
var metrics = c2d.measureText(line);
var w = Math.ceil(metrics.width);
var h = size;
width = Math.max(w, width);
height += h;
}
width += padding;
height += padding;
return cache[cacheKey] = {
width: width,
height: height
};
};
BRp$6.calculateLabelAngle = function (ele, prefix) {
var _p = ele._private;
var rs = _p.rscratch;
var isEdge = ele.isEdge();
var prefixDash = prefix ? prefix + '-' : '';
var rot = ele.pstyle(prefixDash + 'text-rotation');
var rotStr = rot.strValue;
if (rotStr === 'none') {
return 0;
} else if (isEdge && rotStr === 'autorotate') {
return rs.labelAutoAngle;
} else if (rotStr === 'autorotate') {
return 0;
} else {
return rot.pfValue;
}
};
BRp$6.calculateLabelAngles = function (ele) {
var r = this;
var isEdge = ele.isEdge();
var _p = ele._private;
var rs = _p.rscratch;
rs.labelAngle = r.calculateLabelAngle(ele);
if (isEdge) {
rs.sourceLabelAngle = r.calculateLabelAngle(ele, 'source');
rs.targetLabelAngle = r.calculateLabelAngle(ele, 'target');
}
};
var BRp$7 = {};
var TOO_SMALL_CUT_RECT = 28;
var warnedCutRect = false;
BRp$7.getNodeShape = function (node) {
var r = this;
var shape = node.pstyle('shape').value;
if (shape === 'cutrectangle' && (node.width() < TOO_SMALL_CUT_RECT || node.height() < TOO_SMALL_CUT_RECT)) {
if (!warnedCutRect) {
warn('The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead');
warnedCutRect = true;
}
return 'rectangle';
}
if (node.isParent()) {
if (shape === 'rectangle' || shape === 'roundrectangle' || shape === 'round-rectangle' || shape === 'cutrectangle' || shape === 'cut-rectangle' || shape === 'barrel') {
return shape;
} else {
return 'rectangle';
}
}
if (shape === 'polygon') {
var points = node.pstyle('shape-polygon-points').value;
return r.nodeShapes.makePolygon(points).name;
}
return shape;
};
var BRp$8 = {};
BRp$8.registerCalculationListeners = function () {
var cy = this.cy;
var elesToUpdate = cy.collection();
var r = this;
var enqueue = function enqueue(eles) {
var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
elesToUpdate.merge(eles);
if (dirtyStyleCaches) {
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var _p = ele._private;
var rstyle = _p.rstyle;
rstyle.clean = false;
rstyle.cleanConnected = false;
}
}
};
r.binder(cy).on('bounds.* dirty.*', function onDirtyBounds(e) {
var ele = e.target;
enqueue(ele);
}).on('style.* background.*', function onDirtyStyle(e) {
var ele = e.target;
enqueue(ele, false);
});
var updateEleCalcs = function updateEleCalcs(willDraw) {
if (willDraw) {
var fns = r.onUpdateEleCalcsFns; // because we need to have up-to-date style (e.g. stylesheet mappers)
// before calculating rendered style (and pstyle might not be called yet)
elesToUpdate.cleanStyle();
for (var i = 0; i < elesToUpdate.length; i++) {
var ele = elesToUpdate[i];
var rstyle = ele._private.rstyle;
if (ele.isNode() && !rstyle.cleanConnected) {
enqueue(ele.connectedEdges());
rstyle.cleanConnected = true;
}
}
if (fns) {
for (var _i = 0; _i < fns.length; _i++) {
var fn = fns[_i];
fn(willDraw, elesToUpdate);
}
}
r.recalculateRenderedStyle(elesToUpdate);
elesToUpdate = cy.collection();
}
};
r.flushRenderedStyleQueue = function () {
updateEleCalcs(true);
};
r.beforeRender(updateEleCalcs, r.beforeRenderPriorities.eleCalcs);
};
BRp$8.onUpdateEleCalcs = function (fn) {
var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || [];
fns.push(fn);
};
BRp$8.recalculateRenderedStyle = function (eles, useCache) {
var isCleanConnected = function isCleanConnected(ele) {
return ele._private.rstyle.cleanConnected;
};
var edges = [];
var nodes = []; // the renderer can't be used for calcs when destroyed, e.g. ele.boundingBox()
if (this.destroyed) {
return;
} // use cache by default for perf
if (useCache === undefined) {
useCache = true;
}
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var _p = ele._private;
var rstyle = _p.rstyle; // an edge may be implicitly dirty b/c of one of its connected nodes
// (and a request for recalc may come in between frames)
if (ele.isEdge() && (!isCleanConnected(ele.source()) || !isCleanConnected(ele.target()))) {
rstyle.clean = false;
} // only update if dirty and in graph
if (useCache && rstyle.clean || ele.removed()) {
continue;
} // only update if not display: none
if (ele.pstyle('display').value === 'none') {
continue;
}
if (_p.group === 'nodes') {
nodes.push(ele);
} else {
// edges
edges.push(ele);
}
rstyle.clean = true;
} // update node data from projections
for (var _i2 = 0; _i2 < nodes.length; _i2++) {
var _ele = nodes[_i2];
var _p2 = _ele._private;
var _rstyle = _p2.rstyle;
var pos = _ele.position();
this.recalculateNodeLabelProjection(_ele);
_rstyle.nodeX = pos.x;
_rstyle.nodeY = pos.y;
_rstyle.nodeW = _ele.pstyle('width').pfValue;
_rstyle.nodeH = _ele.pstyle('height').pfValue;
}
this.recalculateEdgeProjections(edges); // update edge data from projections
for (var _i3 = 0; _i3 < edges.length; _i3++) {
var _ele2 = edges[_i3];
var _p3 = _ele2._private;
var _rstyle2 = _p3.rstyle;
var rs = _p3.rscratch; // update rstyle positions
_rstyle2.srcX = rs.arrowStartX;
_rstyle2.srcY = rs.arrowStartY;
_rstyle2.tgtX = rs.arrowEndX;
_rstyle2.tgtY = rs.arrowEndY;
_rstyle2.midX = rs.midX;
_rstyle2.midY = rs.midY;
_rstyle2.labelAngle = rs.labelAngle;
_rstyle2.sourceLabelAngle = rs.sourceLabelAngle;
_rstyle2.targetLabelAngle = rs.targetLabelAngle;
}
};
var BRp$9 = {};
BRp$9.updateCachedGrabbedEles = function () {
var eles = this.cachedZSortedEles;
if (!eles) {
// just let this be recalculated on the next z sort tick
return;
}
eles.drag = [];
eles.nondrag = [];
var grabTargets = [];
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var rs = ele._private.rscratch;
if (ele.grabbed() && !ele.isParent()) {
grabTargets.push(ele);
} else if (rs.inDragLayer) {
eles.drag.push(ele);
} else {
eles.nondrag.push(ele);
}
} // put the grab target nodes last so it's on top of its neighbourhood
for (var i = 0; i < grabTargets.length; i++) {
var ele = grabTargets[i];
eles.drag.push(ele);
}
};
BRp$9.invalidateCachedZSortedEles = function () {
this.cachedZSortedEles = null;
};
BRp$9.getCachedZSortedEles = function (forceRecalc) {
if (forceRecalc || !this.cachedZSortedEles) {
var eles = this.cy.mutableElements().toArray();
eles.sort(zIndexSort);
eles.interactive = eles.filter(function (ele) {
return ele.interactive();
});
this.cachedZSortedEles = eles;
this.updateCachedGrabbedEles();
} else {
eles = this.cachedZSortedEles;
}
return eles;
};
var BRp$a = {};
[BRp$1, BRp$2, BRp$3, BRp$4, BRp$5, BRp$6, BRp$7, BRp$8, BRp$9].forEach(function (props) {
extend(BRp$a, props);
});
var BRp$b = {};
BRp$b.getCachedImage = function (url, crossOrigin, onLoad) {
var r = this;
var imageCache = r.imageCache = r.imageCache || {};
var cache = imageCache[url];
if (cache) {
if (!cache.image.complete) {
cache.image.addEventListener('load', onLoad);
}
return cache.image;
} else {
cache = imageCache[url] = imageCache[url] || {};
var image = cache.image = new Image(); // eslint-disable-line no-undef
image.addEventListener('load', onLoad);
image.addEventListener('error', function () {
image.error = true;
}); // #1582 safari doesn't load data uris with crossOrigin properly
// https://bugs.webkit.org/show_bug.cgi?id=123978
var dataUriPrefix = 'data:';
var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix;
if (!isDataUri) {
image.crossOrigin = crossOrigin; // prevent tainted canvas
}
image.src = url;
return image;
}
};
var BRp$c = {};
/* global document, window, ResizeObserver, MutationObserver */
BRp$c.registerBinding = function (target, event, handler, useCapture) {
// eslint-disable-line no-unused-vars
var args = Array.prototype.slice.apply(arguments, [1]); // copy
var b = this.binder(target);
return b.on.apply(b, args);
};
BRp$c.binder = function (tgt) {
var r = this;
var tgtIsDom = tgt === window || tgt === document || tgt === document.body || domElement(tgt);
if (r.supportsPassiveEvents == null) {
// from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection
var supportsPassive = false;
try {
var opts = Object.defineProperty({}, 'passive', {
get: function get() {
supportsPassive = true;
return true;
}
});
window.addEventListener('test', null, opts);
} catch (err) {// not supported
}
r.supportsPassiveEvents = supportsPassive;
}
var on = function on(event, handler, useCapture) {
var args = Array.prototype.slice.call(arguments);
if (tgtIsDom && r.supportsPassiveEvents) {
// replace useCapture w/ opts obj
args[2] = {
capture: useCapture != null ? useCapture : false,
passive: false,
once: false
};
}
r.bindings.push({
target: tgt,
args: args
});
(tgt.addEventListener || tgt.on).apply(tgt, args);
return this;
};
return {
on: on,
addEventListener: on,
addListener: on,
bind: on
};
};
BRp$c.nodeIsDraggable = function (node) {
return node && node.isNode() && !node.locked() && node.grabbable();
};
BRp$c.nodeIsGrabbable = function (node) {
return this.nodeIsDraggable(node) && node.interactive();
};
BRp$c.load = function () {
var r = this;
var isSelected = function isSelected(ele) {
return ele.selected();
};
var triggerEvents = function triggerEvents(target, names, e, position) {
if (target == null) {
target = r.cy;
}
for (var i = 0; i < names.length; i++) {
var name = names[i];
target.emit({
originalEvent: e,
type: name,
position: position
});
}
};
var isMultSelKeyDown = function isMultSelKeyDown(e) {
return e.shiftKey || e.metaKey || e.ctrlKey; // maybe e.altKey
};
var allowPanningPassthrough = function allowPanningPassthrough(down, downs) {
var allowPassthrough = true;
if (r.cy.hasCompoundNodes() && down && down.pannable()) {
// a grabbable compound node below the ele => no passthrough panning
for (var i = 0; downs && i < downs.length; i++) {
var down = downs[i]; //if any parent node in event hierarchy isn't pannable, reject passthrough
if (down.isNode() && down.isParent() && !down.pannable()) {
allowPassthrough = false;
break;
}
}
} else {
allowPassthrough = true;
}
return allowPassthrough;
};
var setGrabbed = function setGrabbed(ele) {
ele[0]._private.grabbed = true;
};
var setFreed = function setFreed(ele) {
ele[0]._private.grabbed = false;
};
var setInDragLayer = function setInDragLayer(ele) {
ele[0]._private.rscratch.inDragLayer = true;
};
var setOutDragLayer = function setOutDragLayer(ele) {
ele[0]._private.rscratch.inDragLayer = false;
};
var setGrabTarget = function setGrabTarget(ele) {
ele[0]._private.rscratch.isGrabTarget = true;
};
var removeGrabTarget = function removeGrabTarget(ele) {
ele[0]._private.rscratch.isGrabTarget = false;
};
var addToDragList = function addToDragList(ele, opts) {
var list = opts.addToList;
var listHasEle = list.has(ele);
if (!listHasEle) {
list.merge(ele);
setGrabbed(ele);
}
}; // helper function to determine which child nodes and inner edges
// of a compound node to be dragged as well as the grabbed and selected nodes
var addDescendantsToDrag = function addDescendantsToDrag(node, opts) {
if (!node.cy().hasCompoundNodes()) {
return;
}
if (opts.inDragLayer == null && opts.addToList == null) {
return;
} // nothing to do
var innerNodes = node.descendants();
if (opts.inDragLayer) {
innerNodes.forEach(setInDragLayer);
innerNodes.connectedEdges().forEach(setInDragLayer);
}
if (opts.addToList) {
opts.addToList.unmerge(innerNodes);
}
}; // adds the given nodes and its neighbourhood to the drag layer
var addNodesToDrag = function addNodesToDrag(nodes, opts) {
opts = opts || {};
var hasCompoundNodes = nodes.cy().hasCompoundNodes();
if (opts.inDragLayer) {
nodes.forEach(setInDragLayer);
nodes.neighborhood().stdFilter(function (ele) {
return !hasCompoundNodes || ele.isEdge();
}).forEach(setInDragLayer);
}
if (opts.addToList) {
nodes.forEach(function (ele) {
addToDragList(ele, opts);
});
}
addDescendantsToDrag(nodes, opts); // always add to drag
// also add nodes and edges related to the topmost ancestor
updateAncestorsInDragLayer(nodes, {
inDragLayer: opts.inDragLayer
});
r.updateCachedGrabbedEles();
};
var addNodeToDrag = addNodesToDrag;
var freeDraggedElements = function freeDraggedElements(grabbedEles) {
if (!grabbedEles) {
return;
} // just go over all elements rather than doing a bunch of (possibly expensive) traversals
r.getCachedZSortedEles().forEach(function (ele) {
setFreed(ele);
setOutDragLayer(ele);
removeGrabTarget(ele);
});
r.updateCachedGrabbedEles();
}; // helper function to determine which ancestor nodes and edges should go
// to the drag layer (or should be removed from drag layer).
var updateAncestorsInDragLayer = function updateAncestorsInDragLayer(node, opts) {
if (opts.inDragLayer == null && opts.addToList == null) {
return;
} // nothing to do
if (!node.cy().hasCompoundNodes()) {
return;
} // find top-level parent
var parent = node.ancestors().orphans(); // no parent node: no nodes to add to the drag layer
if (parent.same(node)) {
return;
}
var nodes = parent.descendants().spawnSelf().merge(parent).unmerge(node).unmerge(node.descendants());
var edges = nodes.connectedEdges();
if (opts.inDragLayer) {
edges.forEach(setInDragLayer);
nodes.forEach(setInDragLayer);
}
if (opts.addToList) {
nodes.forEach(function (ele) {
addToDragList(ele, opts);
});
}
};
var blurActiveDomElement = function blurActiveDomElement() {
if (document.activeElement != null && document.activeElement.blur != null) {
document.activeElement.blur();
}
};
var haveMutationsApi = typeof MutationObserver !== 'undefined';
var haveResizeObserverApi = typeof ResizeObserver !== 'undefined'; // watch for when the cy container is removed from the dom
if (haveMutationsApi) {
r.removeObserver = new MutationObserver(function (mutns) {
// eslint-disable-line no-undef
for (var i = 0; i < mutns.length; i++) {
var mutn = mutns[i];
var rNodes = mutn.removedNodes;
if (rNodes) {
for (var j = 0; j < rNodes.length; j++) {
var rNode = rNodes[j];
if (rNode === r.container) {
r.destroy();
break;
}
}
}
}
});
if (r.container.parentNode) {
r.removeObserver.observe(r.container.parentNode, {
childList: true
});
}
} else {
r.registerBinding(r.container, 'DOMNodeRemoved', function (e) {
// eslint-disable-line no-unused-vars
r.destroy();
});
}
var onResize = util$2(function () {
r.cy.resize();
}, 100);
if (haveMutationsApi) {
r.styleObserver = new MutationObserver(onResize); // eslint-disable-line no-undef
r.styleObserver.observe(r.container, {
attributes: true
});
} // auto resize
r.registerBinding(window, 'resize', onResize); // eslint-disable-line no-undef
if (haveResizeObserverApi) {
r.resizeObserver = new ResizeObserver(onResize); // eslint-disable-line no-undef
r.resizeObserver.observe(r.container);
}
var forEachUp = function forEachUp(domEle, fn) {
while (domEle != null) {
fn(domEle);
domEle = domEle.parentNode;
}
};
var invalidateCoords = function invalidateCoords() {
r.invalidateContainerClientCoordsCache();
};
forEachUp(r.container, function (domEle) {
r.registerBinding(domEle, 'transitionend', invalidateCoords);
r.registerBinding(domEle, 'animationend', invalidateCoords);
r.registerBinding(domEle, 'scroll', invalidateCoords);
}); // stop right click menu from appearing on cy
r.registerBinding(r.container, 'contextmenu', function (e) {
e.preventDefault();
});
var inBoxSelection = function inBoxSelection() {
return r.selection[4] !== 0;
};
var eventInContainer = function eventInContainer(e) {
// save cycles if mouse events aren't to be captured
var containerPageCoords = r.findContainerClientCoords();
var x = containerPageCoords[0];
var y = containerPageCoords[1];
var width = containerPageCoords[2];
var height = containerPageCoords[3];
var positions = e.touches ? e.touches : [e];
var atLeastOnePosInside = false;
for (var i = 0; i < positions.length; i++) {
var p = positions[i];
if (x <= p.clientX && p.clientX <= x + width && y <= p.clientY && p.clientY <= y + height) {
atLeastOnePosInside = true;
break;
}
}
if (!atLeastOnePosInside) {
return false;
}
var container = r.container;
var target = e.target;
var tParent = target.parentNode;
var containerIsTarget = false;
while (tParent) {
if (tParent === container) {
containerIsTarget = true;
break;
}
tParent = tParent.parentNode;
}
if (!containerIsTarget) {
return false;
} // if target is outisde cy container, then this event is not for us
return true;
}; // Primary key
r.registerBinding(r.container, 'mousedown', function mousedownHandler(e) {
if (!eventInContainer(e)) {
return;
}
e.preventDefault();
blurActiveDomElement();
r.hoverData.capture = true;
r.hoverData.which = e.which;
var cy = r.cy;
var gpos = [e.clientX, e.clientY];
var pos = r.projectIntoViewport(gpos[0], gpos[1]);
var select = r.selection;
var nears = r.findNearestElements(pos[0], pos[1], true, false);
var near = nears[0];
var draggedElements = r.dragData.possibleDragElements;
r.hoverData.mdownPos = pos;
r.hoverData.mdownGPos = gpos;
var checkForTaphold = function checkForTaphold() {
r.hoverData.tapholdCancelled = false;
clearTimeout(r.hoverData.tapholdTimeout);
r.hoverData.tapholdTimeout = setTimeout(function () {
if (r.hoverData.tapholdCancelled) {
return;
} else {
var ele = r.hoverData.down;
if (ele) {
ele.emit({
originalEvent: e,
type: 'taphold',
position: {
x: pos[0],
y: pos[1]
}
});
} else {
cy.emit({
originalEvent: e,
type: 'taphold',
position: {
x: pos[0],
y: pos[1]
}
});
}
}
}, r.tapholdDuration);
}; // Right click button
if (e.which == 3) {
r.hoverData.cxtStarted = true;
var cxtEvt = {
originalEvent: e,
type: 'cxttapstart',
position: {
x: pos[0],
y: pos[1]
}
};
if (near) {
near.activate();
near.emit(cxtEvt);
r.hoverData.down = near;
} else {
cy.emit(cxtEvt);
}
r.hoverData.downTime = new Date().getTime();
r.hoverData.cxtDragged = false; // Primary button
} else if (e.which == 1) {
if (near) {
near.activate();
} // Element dragging
{
// If something is under the cursor and it is draggable, prepare to grab it
if (near != null) {
if (r.nodeIsGrabbable(near)) {
var makeEvent = function makeEvent(type) {
return {
originalEvent: e,
type: type,
position: {
x: pos[0],
y: pos[1]
}
};
};
var triggerGrab = function triggerGrab(ele) {
ele.emit(makeEvent('grab'));
};
setGrabTarget(near);
if (!near.selected()) {
draggedElements = r.dragData.possibleDragElements = cy.collection();
addNodeToDrag(near, {
addToList: draggedElements
});
near.emit(makeEvent('grabon')).emit(makeEvent('grab'));
} else {
draggedElements = r.dragData.possibleDragElements = cy.collection();
var selectedNodes = cy.$(function (ele) {
return ele.isNode() && ele.selected() && r.nodeIsGrabbable(ele);
});
addNodesToDrag(selectedNodes, {
addToList: draggedElements
});
near.emit(makeEvent('grabon'));
selectedNodes.forEach(triggerGrab);
}
r.redrawHint('eles', true);
r.redrawHint('drag', true);
}
}
r.hoverData.down = near;
r.hoverData.downs = nears;
r.hoverData.downTime = new Date().getTime();
}
triggerEvents(near, ['mousedown', 'tapstart', 'vmousedown'], e, {
x: pos[0],
y: pos[1]
});
if (near == null) {
select[4] = 1;
r.data.bgActivePosistion = {
x: pos[0],
y: pos[1]
};
r.redrawHint('select', true);
r.redraw();
} else if (near.pannable()) {
select[4] = 1; // for future pan
}
checkForTaphold();
} // Initialize selection box coordinates
select[0] = select[2] = pos[0];
select[1] = select[3] = pos[1];
}, false);
r.registerBinding(window, 'mousemove', function mousemoveHandler(e) {
// eslint-disable-line no-undef
var capture = r.hoverData.capture;
if (!capture && !eventInContainer(e)) {
return;
}
var preventDefault = false;
var cy = r.cy;
var zoom = cy.zoom();
var gpos = [e.clientX, e.clientY];
var pos = r.projectIntoViewport(gpos[0], gpos[1]);
var mdownPos = r.hoverData.mdownPos;
var mdownGPos = r.hoverData.mdownGPos;
var select = r.selection;
var near = null;
if (!r.hoverData.draggingEles && !r.hoverData.dragging && !r.hoverData.selecting) {
near = r.findNearestElement(pos[0], pos[1], true, false);
}
var last = r.hoverData.last;
var down = r.hoverData.down;
var disp = [pos[0] - select[2], pos[1] - select[3]];
var draggedElements = r.dragData.possibleDragElements;
var isOverThresholdDrag;
if (mdownGPos) {
var dx = gpos[0] - mdownGPos[0];
var dx2 = dx * dx;
var dy = gpos[1] - mdownGPos[1];
var dy2 = dy * dy;
var dist2 = dx2 + dy2;
r.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist2 >= r.desktopTapThreshold2;
}
var multSelKeyDown = isMultSelKeyDown(e);
if (isOverThresholdDrag) {
r.hoverData.tapholdCancelled = true;
}
var updateDragDelta = function updateDragDelta() {
var dragDelta = r.hoverData.dragDelta = r.hoverData.dragDelta || [];
if (dragDelta.length === 0) {
dragDelta.push(disp[0]);
dragDelta.push(disp[1]);
} else {
dragDelta[0] += disp[0];
dragDelta[1] += disp[1];
}
};
preventDefault = true;
triggerEvents(near, ['mousemove', 'vmousemove', 'tapdrag'], e, {
x: pos[0],
y: pos[1]
});
var goIntoBoxMode = function goIntoBoxMode() {
r.data.bgActivePosistion = undefined;
if (!r.hoverData.selecting) {
cy.emit({
originalEvent: e,
type: 'boxstart',
position: {
x: pos[0],
y: pos[1]
}
});
}
select[4] = 1;
r.hoverData.selecting = true;
r.redrawHint('select', true);
r.redraw();
}; // trigger context drag if rmouse down
if (r.hoverData.which === 3) {
// but only if over threshold
if (isOverThresholdDrag) {
var cxtEvt = {
originalEvent: e,
type: 'cxtdrag',
position: {
x: pos[0],
y: pos[1]
}
};
if (down) {
down.emit(cxtEvt);
} else {
cy.emit(cxtEvt);
}
r.hoverData.cxtDragged = true;
if (!r.hoverData.cxtOver || near !== r.hoverData.cxtOver) {
if (r.hoverData.cxtOver) {
r.hoverData.cxtOver.emit({
originalEvent: e,
type: 'cxtdragout',
position: {
x: pos[0],
y: pos[1]
}
});
}
r.hoverData.cxtOver = near;
if (near) {
near.emit({
originalEvent: e,
type: 'cxtdragover',
position: {
x: pos[0],
y: pos[1]
}
});
}
}
} // Check if we are drag panning the entire graph
} else if (r.hoverData.dragging) {
preventDefault = true;
if (cy.panningEnabled() && cy.userPanningEnabled()) {
var deltaP;
if (r.hoverData.justStartedPan) {
var mdPos = r.hoverData.mdownPos;
deltaP = {
x: (pos[0] - mdPos[0]) * zoom,
y: (pos[1] - mdPos[1]) * zoom
};
r.hoverData.justStartedPan = false;
} else {
deltaP = {
x: disp[0] * zoom,
y: disp[1] * zoom
};
}
cy.panBy(deltaP);
cy.emit('dragpan');
r.hoverData.dragged = true;
} // Needs reproject due to pan changing viewport
pos = r.projectIntoViewport(e.clientX, e.clientY); // Checks primary button down & out of time & mouse not moved much
} else if (select[4] == 1 && (down == null || down.pannable())) {
if (isOverThresholdDrag) {
if (!r.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) {
goIntoBoxMode();
} else if (!r.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) {
var allowPassthrough = allowPanningPassthrough(down, r.hoverData.downs);
if (allowPassthrough) {
r.hoverData.dragging = true;
r.hoverData.justStartedPan = true;
select[4] = 0;
r.data.bgActivePosistion = array2point(mdownPos);
r.redrawHint('select', true);
r.redraw();
}
}
if (down && down.pannable() && down.active()) {
down.unactivate();
}
}
} else {
if (down && down.pannable() && down.active()) {
down.unactivate();
}
if ((!down || !down.grabbed()) && near != last) {
if (last) {
triggerEvents(last, ['mouseout', 'tapdragout'], e, {
x: pos[0],
y: pos[1]
});
}
if (near) {
triggerEvents(near, ['mouseover', 'tapdragover'], e, {
x: pos[0],
y: pos[1]
});
}
r.hoverData.last = near;
}
if (down) {
if (isOverThresholdDrag) {
// then we can take action
if (cy.boxSelectionEnabled() && multSelKeyDown) {
// then selection overrides
if (down && down.grabbed()) {
freeDraggedElements(draggedElements);
down.emit('freeon');
draggedElements.emit('free');
if (r.dragData.didDrag) {
down.emit('dragfreeon');
draggedElements.emit('dragfree');
}
}
goIntoBoxMode();
} else if (down && down.grabbed() && r.nodeIsDraggable(down)) {
// drag node
var justStartedDrag = !r.dragData.didDrag;
if (justStartedDrag) {
r.redrawHint('eles', true);
}
r.dragData.didDrag = true; // indicate that we actually did drag the node
var toTrigger = cy.collection(); // now, add the elements to the drag layer if not done already
if (!r.hoverData.draggingEles) {
addNodesToDrag(draggedElements, {
inDragLayer: true
});
}
var totalShift = {
x: 0,
y: 0
};
if (number(disp[0]) && number(disp[1])) {
totalShift.x += disp[0];
totalShift.y += disp[1];
if (justStartedDrag) {
var dragDelta = r.hoverData.dragDelta;
if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) {
totalShift.x += dragDelta[0];
totalShift.y += dragDelta[1];
}
}
}
for (var i = 0; i < draggedElements.length; i++) {
var dEle = draggedElements[i];
if (r.nodeIsDraggable(dEle) && dEle.grabbed()) {
toTrigger.push(dEle);
}
}
r.hoverData.draggingEles = true;
toTrigger.silentShift(totalShift).emit('position drag');
r.redrawHint('drag', true);
r.redraw();
}
} else {
// otherwise save drag delta for when we actually start dragging so the relative grab pos is constant
updateDragDelta();
}
} // prevent the dragging from triggering text selection on the page
preventDefault = true;
}
select[2] = pos[0];
select[3] = pos[1];
if (preventDefault) {
if (e.stopPropagation) e.stopPropagation();
if (e.preventDefault) e.preventDefault();
return false;
}
}, false);
var clickTimeout, didDoubleClick, prevClickTimeStamp;
r.registerBinding(window, 'mouseup', function mouseupHandler(e) {
// eslint-disable-line no-undef
var capture = r.hoverData.capture;
if (!capture) {
return;
}
r.hoverData.capture = false;
var cy = r.cy;
var pos = r.projectIntoViewport(e.clientX, e.clientY);
var select = r.selection;
var near = r.findNearestElement(pos[0], pos[1], true, false);
var draggedElements = r.dragData.possibleDragElements;
var down = r.hoverData.down;
var multSelKeyDown = isMultSelKeyDown(e);
if (r.data.bgActivePosistion) {
r.redrawHint('select', true);
r.redraw();
}
r.hoverData.tapholdCancelled = true;
r.data.bgActivePosistion = undefined; // not active bg now
if (down) {
down.unactivate();
}
if (r.hoverData.which === 3) {
var cxtEvt = {
originalEvent: e,
type: 'cxttapend',
position: {
x: pos[0],
y: pos[1]
}
};
if (down) {
down.emit(cxtEvt);
} else {
cy.emit(cxtEvt);
}
if (!r.hoverData.cxtDragged) {
var cxtTap = {
originalEvent: e,
type: 'cxttap',
position: {
x: pos[0],
y: pos[1]
}
};
if (down) {
down.emit(cxtTap);
} else {
cy.emit(cxtTap);
}
}
r.hoverData.cxtDragged = false;
r.hoverData.which = null;
} else if (r.hoverData.which === 1) {
triggerEvents(near, ['mouseup', 'tapend', 'vmouseup'], e, {
x: pos[0],
y: pos[1]
});
if (!r.dragData.didDrag && // didn't move a node around
!r.hoverData.dragged && // didn't pan
!r.hoverData.selecting && // not box selection
!r.hoverData.isOverThresholdDrag // didn't move too much
) {
triggerEvents(down, ["click", "tap", "vclick"], e, {
x: pos[0],
y: pos[1]
});
didDoubleClick = false;
if (e.timeStamp - prevClickTimeStamp <= cy.multiClickDebounceTime()) {
clickTimeout && clearTimeout(clickTimeout);
didDoubleClick = true;
prevClickTimeStamp = null;
triggerEvents(down, ["dblclick", "dbltap", "vdblclick"], e, {
x: pos[0],
y: pos[1]
});
} else {
clickTimeout = setTimeout(function () {
if (didDoubleClick) return;
triggerEvents(down, ["oneclick", "onetap", "voneclick"], e, {
x: pos[0],
y: pos[1]
});
}, cy.multiClickDebounceTime());
prevClickTimeStamp = e.timeStamp;
}
} // Deselect all elements if nothing is currently under the mouse cursor and we aren't dragging something
if (down == null && // not mousedown on node
!r.dragData.didDrag // didn't move the node around
&& !r.hoverData.selecting // not box selection
&& !r.hoverData.dragged // didn't pan
&& !isMultSelKeyDown(e)) {
cy.$(isSelected).unselect(['tapunselect']);
if (draggedElements.length > 0) {
r.redrawHint('eles', true);
}
r.dragData.possibleDragElements = draggedElements = cy.collection();
} // Single selection
if (near == down && !r.dragData.didDrag && !r.hoverData.selecting) {
if (near != null && near._private.selectable) {
if (r.hoverData.dragging) ; else if (cy.selectionType() === 'additive' || multSelKeyDown) {
if (near.selected()) {
near.unselect(['tapunselect']);
} else {
near.select(['tapselect']);
}
} else {
if (!multSelKeyDown) {
cy.$(isSelected).unmerge(near).unselect(['tapunselect']);
near.select(['tapselect']);
}
}
r.redrawHint('eles', true);
}
}
if (r.hoverData.selecting) {
var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3]));
r.redrawHint('select', true);
if (box.length > 0) {
r.redrawHint('eles', true);
}
cy.emit({
type: 'boxend',
originalEvent: e,
position: {
x: pos[0],
y: pos[1]
}
});
var eleWouldBeSelected = function eleWouldBeSelected(ele) {
return ele.selectable() && !ele.selected();
};
if (cy.selectionType() === 'additive') {
box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');
} else {
if (!multSelKeyDown) {
cy.$(isSelected).unmerge(box).unselect();
}
box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');
} // always need redraw in case eles unselectable
r.redraw();
} // Cancel drag pan
if (r.hoverData.dragging) {
r.hoverData.dragging = false;
r.redrawHint('select', true);
r.redrawHint('eles', true);
r.redraw();
}
if (!select[4]) {
r.redrawHint('drag', true);
r.redrawHint('eles', true);
var downWasGrabbed = down && down.grabbed();
freeDraggedElements(draggedElements);
if (downWasGrabbed) {
down.emit('freeon');
draggedElements.emit('free');
if (r.dragData.didDrag) {
down.emit('dragfreeon');
draggedElements.emit('dragfree');
}
}
}
} // else not right mouse
select[4] = 0;
r.hoverData.down = null;
r.hoverData.cxtStarted = false;
r.hoverData.draggingEles = false;
r.hoverData.selecting = false;
r.hoverData.isOverThresholdDrag = false;
r.dragData.didDrag = false;
r.hoverData.dragged = false;
r.hoverData.dragDelta = [];
r.hoverData.mdownPos = null;
r.hoverData.mdownGPos = null;
}, false);
var wheelHandler = function wheelHandler(e) {
if (r.scrollingPage) {
return;
} // while scrolling, ignore wheel-to-zoom
var cy = r.cy;
var zoom = cy.zoom();
var pan = cy.pan();
var pos = r.projectIntoViewport(e.clientX, e.clientY);
var rpos = [pos[0] * zoom + pan.x, pos[1] * zoom + pan.y];
if (r.hoverData.draggingEles || r.hoverData.dragging || r.hoverData.cxtStarted || inBoxSelection()) {
// if pan dragging or cxt dragging, wheel movements make no zoom
e.preventDefault();
return;
}
if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) {
e.preventDefault();
r.data.wheelZooming = true;
clearTimeout(r.data.wheelTimeout);
r.data.wheelTimeout = setTimeout(function () {
r.data.wheelZooming = false;
r.redrawHint('eles', true);
r.redraw();
}, 150);
var diff;
if (e.deltaY != null) {
diff = e.deltaY / -250;
} else if (e.wheelDeltaY != null) {
diff = e.wheelDeltaY / 1000;
} else {
diff = e.wheelDelta / 1000;
}
diff = diff * r.wheelSensitivity;
var needsWheelFix = e.deltaMode === 1;
if (needsWheelFix) {
// fixes slow wheel events on ff/linux and ff/windows
diff *= 33;
}
var newZoom = cy.zoom() * Math.pow(10, diff);
if (e.type === 'gesturechange') {
newZoom = r.gestureStartZoom * e.scale;
}
cy.zoom({
level: newZoom,
renderedPosition: {
x: rpos[0],
y: rpos[1]
}
});
cy.emit(e.type === 'gesturechange' ? 'pinchzoom' : 'scrollzoom');
}
}; // Functions to help with whether mouse wheel should trigger zooming
// --
r.registerBinding(r.container, 'wheel', wheelHandler, true); // disable nonstandard wheel events
// r.registerBinding(r.container, 'mousewheel', wheelHandler, true);
// r.registerBinding(r.container, 'DOMMouseScroll', wheelHandler, true);
// r.registerBinding(r.container, 'MozMousePixelScroll', wheelHandler, true); // older firefox
r.registerBinding(window, 'scroll', function scrollHandler(e) {
// eslint-disable-line no-unused-vars
r.scrollingPage = true;
clearTimeout(r.scrollingPageTimeout);
r.scrollingPageTimeout = setTimeout(function () {
r.scrollingPage = false;
}, 250);
}, true); // desktop safari pinch to zoom start
r.registerBinding(r.container, 'gesturestart', function gestureStartHandler(e) {
r.gestureStartZoom = r.cy.zoom();
if (!r.hasTouchStarted) {
// don't affect touch devices like iphone
e.preventDefault();
}
}, true);
r.registerBinding(r.container, 'gesturechange', function (e) {
if (!r.hasTouchStarted) {
// don't affect touch devices like iphone
wheelHandler(e);
}
}, true); // Functions to help with handling mouseout/mouseover on the Cytoscape container
// Handle mouseout on Cytoscape container
r.registerBinding(r.container, 'mouseout', function mouseOutHandler(e) {
var pos = r.projectIntoViewport(e.clientX, e.clientY);
r.cy.emit({
originalEvent: e,
type: 'mouseout',
position: {
x: pos[0],
y: pos[1]
}
});
}, false);
r.registerBinding(r.container, 'mouseover', function mouseOverHandler(e) {
var pos = r.projectIntoViewport(e.clientX, e.clientY);
r.cy.emit({
originalEvent: e,
type: 'mouseover',
position: {
x: pos[0],
y: pos[1]
}
});
}, false);
var f1x1, f1y1, f2x1, f2y1; // starting points for pinch-to-zoom
var distance1, distance1Sq; // initial distance between finger 1 and finger 2 for pinch-to-zoom
var center1, modelCenter1; // center point on start pinch to zoom
var offsetLeft, offsetTop;
var containerWidth, containerHeight;
var twoFingersStartInside;
var distance = function distance(x1, y1, x2, y2) {
return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
};
var distanceSq = function distanceSq(x1, y1, x2, y2) {
return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
};
var touchstartHandler;
r.registerBinding(r.container, 'touchstart', touchstartHandler = function touchstartHandler(e) {
r.hasTouchStarted = true;
if (!eventInContainer(e)) {
return;
}
blurActiveDomElement();
r.touchData.capture = true;
r.data.bgActivePosistion = undefined;
var cy = r.cy;
var now = r.touchData.now;
var earlier = r.touchData.earlier;
if (e.touches[0]) {
var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);
now[0] = pos[0];
now[1] = pos[1];
}
if (e.touches[1]) {
var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);
now[2] = pos[0];
now[3] = pos[1];
}
if (e.touches[2]) {
var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);
now[4] = pos[0];
now[5] = pos[1];
} // record starting points for pinch-to-zoom
if (e.touches[1]) {
r.touchData.singleTouchMoved = true;
freeDraggedElements(r.dragData.touchDragEles);
var offsets = r.findContainerClientCoords();
offsetLeft = offsets[0];
offsetTop = offsets[1];
containerWidth = offsets[2];
containerHeight = offsets[3];
f1x1 = e.touches[0].clientX - offsetLeft;
f1y1 = e.touches[0].clientY - offsetTop;
f2x1 = e.touches[1].clientX - offsetLeft;
f2y1 = e.touches[1].clientY - offsetTop;
twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight;
var pan = cy.pan();
var zoom = cy.zoom();
distance1 = distance(f1x1, f1y1, f2x1, f2y1);
distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1);
center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2];
modelCenter1 = [(center1[0] - pan.x) / zoom, (center1[1] - pan.y) / zoom]; // consider context tap
var cxtDistThreshold = 200;
var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold;
if (distance1Sq < cxtDistThresholdSq && !e.touches[2]) {
var near1 = r.findNearestElement(now[0], now[1], true, true);
var near2 = r.findNearestElement(now[2], now[3], true, true);
if (near1 && near1.isNode()) {
near1.activate().emit({
originalEvent: e,
type: 'cxttapstart',
position: {
x: now[0],
y: now[1]
}
});
r.touchData.start = near1;
} else if (near2 && near2.isNode()) {
near2.activate().emit({
originalEvent: e,
type: 'cxttapstart',
position: {
x: now[0],
y: now[1]
}
});
r.touchData.start = near2;
} else {
cy.emit({
originalEvent: e,
type: 'cxttapstart',
position: {
x: now[0],
y: now[1]
}
});
}
if (r.touchData.start) {
r.touchData.start._private.grabbed = false;
}
r.touchData.cxt = true;
r.touchData.cxtDragged = false;
r.data.bgActivePosistion = undefined;
r.redraw();
return;
}
}
if (e.touches[2]) {
// ignore
// safari on ios pans the page otherwise (normally you should be able to preventdefault on touchmove...)
if (cy.boxSelectionEnabled()) {
e.preventDefault();
}
} else if (e.touches[1]) ; else if (e.touches[0]) {
var nears = r.findNearestElements(now[0], now[1], true, true);
var near = nears[0];
if (near != null) {
near.activate();
r.touchData.start = near;
r.touchData.starts = nears;
if (r.nodeIsGrabbable(near)) {
var draggedEles = r.dragData.touchDragEles = cy.collection();
var selectedNodes = null;
r.redrawHint('eles', true);
r.redrawHint('drag', true);
if (near.selected()) {
// reset drag elements, since near will be added again
selectedNodes = cy.$(function (ele) {
return ele.selected() && r.nodeIsGrabbable(ele);
});
addNodesToDrag(selectedNodes, {
addToList: draggedEles
});
} else {
addNodeToDrag(near, {
addToList: draggedEles
});
}
setGrabTarget(near);
var makeEvent = function makeEvent(type) {
return {
originalEvent: e,
type: type,
position: {
x: now[0],
y: now[1]
}
};
};
near.emit(makeEvent('grabon'));
if (selectedNodes) {
selectedNodes.forEach(function (n) {
n.emit(makeEvent('grab'));
});
} else {
near.emit(makeEvent('grab'));
}
}
}
triggerEvents(near, ['touchstart', 'tapstart', 'vmousedown'], e, {
x: now[0],
y: now[1]
});
if (near == null) {
r.data.bgActivePosistion = {
x: pos[0],
y: pos[1]
};
r.redrawHint('select', true);
r.redraw();
} // Tap, taphold
// -----
r.touchData.singleTouchMoved = false;
r.touchData.singleTouchStartTime = +new Date();
clearTimeout(r.touchData.tapholdTimeout);
r.touchData.tapholdTimeout = setTimeout(function () {
if (r.touchData.singleTouchMoved === false && !r.pinching // if pinching, then taphold unselect shouldn't take effect
&& !r.touchData.selecting // box selection shouldn't allow taphold through
) {
triggerEvents(r.touchData.start, ['taphold'], e, {
x: now[0],
y: now[1]
});
}
}, r.tapholdDuration);
}
if (e.touches.length >= 1) {
var sPos = r.touchData.startPosition = [];
for (var i = 0; i < now.length; i++) {
sPos[i] = earlier[i] = now[i];
}
var touch0 = e.touches[0];
r.touchData.startGPosition = [touch0.clientX, touch0.clientY];
}
}, false);
var touchmoveHandler;
r.registerBinding(window, 'touchmove', touchmoveHandler = function touchmoveHandler(e) {
// eslint-disable-line no-undef
var capture = r.touchData.capture;
if (!capture && !eventInContainer(e)) {
return;
}
var select = r.selection;
var cy = r.cy;
var now = r.touchData.now;
var earlier = r.touchData.earlier;
var zoom = cy.zoom();
if (e.touches[0]) {
var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);
now[0] = pos[0];
now[1] = pos[1];
}
if (e.touches[1]) {
var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);
now[2] = pos[0];
now[3] = pos[1];
}
if (e.touches[2]) {
var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);
now[4] = pos[0];
now[5] = pos[1];
}
var startGPos = r.touchData.startGPosition;
var isOverThresholdDrag;
if (capture && e.touches[0] && startGPos) {
var disp = [];
for (var j = 0; j < now.length; j++) {
disp[j] = now[j] - earlier[j];
}
var dx = e.touches[0].clientX - startGPos[0];
var dx2 = dx * dx;
var dy = e.touches[0].clientY - startGPos[1];
var dy2 = dy * dy;
var dist2 = dx2 + dy2;
isOverThresholdDrag = dist2 >= r.touchTapThreshold2;
} // context swipe cancelling
if (capture && r.touchData.cxt) {
e.preventDefault();
var f1x2 = e.touches[0].clientX - offsetLeft,
f1y2 = e.touches[0].clientY - offsetTop;
var f2x2 = e.touches[1].clientX - offsetLeft,
f2y2 = e.touches[1].clientY - offsetTop; // var distance2 = distance( f1x2, f1y2, f2x2, f2y2 );
var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2);
var factorSq = distance2Sq / distance1Sq;
var distThreshold = 150;
var distThresholdSq = distThreshold * distThreshold;
var factorThreshold = 1.5;
var factorThresholdSq = factorThreshold * factorThreshold; // cancel ctx gestures if the distance b/t the fingers increases
if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) {
r.touchData.cxt = false;
r.data.bgActivePosistion = undefined;
r.redrawHint('select', true);
var cxtEvt = {
originalEvent: e,
type: 'cxttapend',
position: {
x: now[0],
y: now[1]
}
};
if (r.touchData.start) {
r.touchData.start.unactivate().emit(cxtEvt);
r.touchData.start = null;
} else {
cy.emit(cxtEvt);
}
}
} // context swipe
if (capture && r.touchData.cxt) {
var cxtEvt = {
originalEvent: e,
type: 'cxtdrag',
position: {
x: now[0],
y: now[1]
}
};
r.data.bgActivePosistion = undefined;
r.redrawHint('select', true);
if (r.touchData.start) {
r.touchData.start.emit(cxtEvt);
} else {
cy.emit(cxtEvt);
}
if (r.touchData.start) {
r.touchData.start._private.grabbed = false;
}
r.touchData.cxtDragged = true;
var near = r.findNearestElement(now[0], now[1], true, true);
if (!r.touchData.cxtOver || near !== r.touchData.cxtOver) {
if (r.touchData.cxtOver) {
r.touchData.cxtOver.emit({
originalEvent: e,
type: 'cxtdragout',
position: {
x: now[0],
y: now[1]
}
});
}
r.touchData.cxtOver = near;
if (near) {
near.emit({
originalEvent: e,
type: 'cxtdragover',
position: {
x: now[0],
y: now[1]
}
});
}
} // box selection
} else if (capture && e.touches[2] && cy.boxSelectionEnabled()) {
e.preventDefault();
r.data.bgActivePosistion = undefined;
this.lastThreeTouch = +new Date();
if (!r.touchData.selecting) {
cy.emit({
originalEvent: e,
type: 'boxstart',
position: {
x: now[0],
y: now[1]
}
});
}
r.touchData.selecting = true;
r.touchData.didSelect = true;
select[4] = 1;
if (!select || select.length === 0 || select[0] === undefined) {
select[0] = (now[0] + now[2] + now[4]) / 3;
select[1] = (now[1] + now[3] + now[5]) / 3;
select[2] = (now[0] + now[2] + now[4]) / 3 + 1;
select[3] = (now[1] + now[3] + now[5]) / 3 + 1;
} else {
select[2] = (now[0] + now[2] + now[4]) / 3;
select[3] = (now[1] + now[3] + now[5]) / 3;
}
r.redrawHint('select', true);
r.redraw(); // pinch to zoom
} else if (capture && e.touches[1] && !r.touchData.didSelect // don't allow box selection to degrade to pinch-to-zoom
&& cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) {
// two fingers => pinch to zoom
e.preventDefault();
r.data.bgActivePosistion = undefined;
r.redrawHint('select', true);
var draggedEles = r.dragData.touchDragEles;
if (draggedEles) {
r.redrawHint('drag', true);
for (var i = 0; i < draggedEles.length; i++) {
var de_p = draggedEles[i]._private;
de_p.grabbed = false;
de_p.rscratch.inDragLayer = false;
}
}
var _start = r.touchData.start; // (x2, y2) for fingers 1 and 2
var f1x2 = e.touches[0].clientX - offsetLeft,
f1y2 = e.touches[0].clientY - offsetTop;
var f2x2 = e.touches[1].clientX - offsetLeft,
f2y2 = e.touches[1].clientY - offsetTop;
var distance2 = distance(f1x2, f1y2, f2x2, f2y2); // var distance2Sq = distanceSq( f1x2, f1y2, f2x2, f2y2 );
// var factor = Math.sqrt( distance2Sq ) / Math.sqrt( distance1Sq );
var factor = distance2 / distance1;
if (twoFingersStartInside) {
// delta finger1
var df1x = f1x2 - f1x1;
var df1y = f1y2 - f1y1; // delta finger 2
var df2x = f2x2 - f2x1;
var df2y = f2y2 - f2y1; // translation is the normalised vector of the two fingers movement
// i.e. so pinching cancels out and moving together pans
var tx = (df1x + df2x) / 2;
var ty = (df1y + df2y) / 2; // now calculate the zoom
var zoom1 = cy.zoom();
var zoom2 = zoom1 * factor;
var pan1 = cy.pan(); // the model center point converted to the current rendered pos
var ctrx = modelCenter1[0] * zoom1 + pan1.x;
var ctry = modelCenter1[1] * zoom1 + pan1.y;
var pan2 = {
x: -zoom2 / zoom1 * (ctrx - pan1.x - tx) + ctrx,
y: -zoom2 / zoom1 * (ctry - pan1.y - ty) + ctry
}; // remove dragged eles
if (_start && _start.active()) {
var draggedEles = r.dragData.touchDragEles;
freeDraggedElements(draggedEles);
r.redrawHint('drag', true);
r.redrawHint('eles', true);
_start.unactivate().emit('freeon');
draggedEles.emit('free');
if (r.dragData.didDrag) {
_start.emit('dragfreeon');
draggedEles.emit('dragfree');
}
}
cy.viewport({
zoom: zoom2,
pan: pan2,
cancelOnFailedZoom: true
});
cy.emit('pinchzoom');
distance1 = distance2;
f1x1 = f1x2;
f1y1 = f1y2;
f2x1 = f2x2;
f2y1 = f2y2;
r.pinching = true;
} // Re-project
if (e.touches[0]) {
var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);
now[0] = pos[0];
now[1] = pos[1];
}
if (e.touches[1]) {
var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);
now[2] = pos[0];
now[3] = pos[1];
}
if (e.touches[2]) {
var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);
now[4] = pos[0];
now[5] = pos[1];
}
} else if (e.touches[0] && !r.touchData.didSelect // don't allow box selection to degrade to single finger events like panning
) {
var start = r.touchData.start;
var last = r.touchData.last;
var near;
if (!r.hoverData.draggingEles && !r.swipePanning) {
near = r.findNearestElement(now[0], now[1], true, true);
}
if (capture && start != null) {
e.preventDefault();
} // dragging nodes
if (capture && start != null && r.nodeIsDraggable(start)) {
if (isOverThresholdDrag) {
// then dragging can happen
var draggedEles = r.dragData.touchDragEles;
var justStartedDrag = !r.dragData.didDrag;
if (justStartedDrag) {
addNodesToDrag(draggedEles, {
inDragLayer: true
});
}
r.dragData.didDrag = true;
var totalShift = {
x: 0,
y: 0
};
if (number(disp[0]) && number(disp[1])) {
totalShift.x += disp[0];
totalShift.y += disp[1];
if (justStartedDrag) {
r.redrawHint('eles', true);
var dragDelta = r.touchData.dragDelta;
if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) {
totalShift.x += dragDelta[0];
totalShift.y += dragDelta[1];
}
}
}
r.hoverData.draggingEles = true;
draggedEles.silentShift(totalShift).emit('position drag');
r.redrawHint('drag', true);
if (r.touchData.startPosition[0] == earlier[0] && r.touchData.startPosition[1] == earlier[1]) {
r.redrawHint('eles', true);
}
r.redraw();
} else {
// otherise keep track of drag delta for later
var dragDelta = r.touchData.dragDelta = r.touchData.dragDelta || [];
if (dragDelta.length === 0) {
dragDelta.push(disp[0]);
dragDelta.push(disp[1]);
} else {
dragDelta[0] += disp[0];
dragDelta[1] += disp[1];
}
}
} // touchmove
{
triggerEvents(start || near, ['touchmove', 'tapdrag', 'vmousemove'], e, {
x: now[0],
y: now[1]
});
if ((!start || !start.grabbed()) && near != last) {
if (last) {
last.emit({
originalEvent: e,
type: 'tapdragout',
position: {
x: now[0],
y: now[1]
}
});
}
if (near) {
near.emit({
originalEvent: e,
type: 'tapdragover',
position: {
x: now[0],
y: now[1]
}
});
}
}
r.touchData.last = near;
} // check to cancel taphold
if (capture) {
for (var i = 0; i < now.length; i++) {
if (now[i] && r.touchData.startPosition[i] && isOverThresholdDrag) {
r.touchData.singleTouchMoved = true;
}
}
} // panning
if (capture && (start == null || start.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) {
var allowPassthrough = allowPanningPassthrough(start, r.touchData.starts);
if (allowPassthrough) {
e.preventDefault();
if (!r.data.bgActivePosistion) {
r.data.bgActivePosistion = array2point(r.touchData.startPosition);
}
if (r.swipePanning) {
cy.panBy({
x: disp[0] * zoom,
y: disp[1] * zoom
});
cy.emit('dragpan');
} else if (isOverThresholdDrag) {
r.swipePanning = true;
cy.panBy({
x: dx * zoom,
y: dy * zoom
});
cy.emit('dragpan');
if (start) {
start.unactivate();
r.redrawHint('select', true);
r.touchData.start = null;
}
}
} // Re-project
var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);
now[0] = pos[0];
now[1] = pos[1];
}
}
for (var j = 0; j < now.length; j++) {
earlier[j] = now[j];
} // the active bg indicator should be removed when making a swipe that is neither for dragging nodes or panning
if (capture && e.touches.length > 0 && !r.hoverData.draggingEles && !r.swipePanning && r.data.bgActivePosistion != null) {
r.data.bgActivePosistion = undefined;
r.redrawHint('select', true);
r.redraw();
}
}, false);
var touchcancelHandler;
r.registerBinding(window, 'touchcancel', touchcancelHandler = function touchcancelHandler(e) {
// eslint-disable-line no-unused-vars
var start = r.touchData.start;
r.touchData.capture = false;
if (start) {
start.unactivate();
}
});
var touchendHandler, didDoubleTouch, touchTimeout, prevTouchTimeStamp;
r.registerBinding(window, 'touchend', touchendHandler = function touchendHandler(e) {
// eslint-disable-line no-unused-vars
var start = r.touchData.start;
var capture = r.touchData.capture;
if (capture) {
if (e.touches.length === 0) {
r.touchData.capture = false;
}
e.preventDefault();
} else {
return;
}
var select = r.selection;
r.swipePanning = false;
r.hoverData.draggingEles = false;
var cy = r.cy;
var zoom = cy.zoom();
var now = r.touchData.now;
var earlier = r.touchData.earlier;
if (e.touches[0]) {
var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);
now[0] = pos[0];
now[1] = pos[1];
}
if (e.touches[1]) {
var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);
now[2] = pos[0];
now[3] = pos[1];
}
if (e.touches[2]) {
var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);
now[4] = pos[0];
now[5] = pos[1];
}
if (start) {
start.unactivate();
}
var ctxTapend;
if (r.touchData.cxt) {
ctxTapend = {
originalEvent: e,
type: 'cxttapend',
position: {
x: now[0],
y: now[1]
}
};
if (start) {
start.emit(ctxTapend);
} else {
cy.emit(ctxTapend);
}
if (!r.touchData.cxtDragged) {
var ctxTap = {
originalEvent: e,
type: 'cxttap',
position: {
x: now[0],
y: now[1]
}
};
if (start) {
start.emit(ctxTap);
} else {
cy.emit(ctxTap);
}
}
if (r.touchData.start) {
r.touchData.start._private.grabbed = false;
}
r.touchData.cxt = false;
r.touchData.start = null;
r.redraw();
return;
} // no more box selection if we don't have three fingers
if (!e.touches[2] && cy.boxSelectionEnabled() && r.touchData.selecting) {
r.touchData.selecting = false;
var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3]));
select[0] = undefined;
select[1] = undefined;
select[2] = undefined;
select[3] = undefined;
select[4] = 0;
r.redrawHint('select', true);
cy.emit({
type: 'boxend',
originalEvent: e,
position: {
x: now[0],
y: now[1]
}
});
var eleWouldBeSelected = function eleWouldBeSelected(ele) {
return ele.selectable() && !ele.selected();
};
box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');
if (box.nonempty()) {
r.redrawHint('eles', true);
}
r.redraw();
}
if (start != null) {
start.unactivate();
}
if (e.touches[2]) {
r.data.bgActivePosistion = undefined;
r.redrawHint('select', true);
} else if (e.touches[1]) ; else if (e.touches[0]) ; else if (!e.touches[0]) {
r.data.bgActivePosistion = undefined;
r.redrawHint('select', true);
var draggedEles = r.dragData.touchDragEles;
if (start != null) {
var startWasGrabbed = start._private.grabbed;
freeDraggedElements(draggedEles);
r.redrawHint('drag', true);
r.redrawHint('eles', true);
if (startWasGrabbed) {
start.emit('freeon');
draggedEles.emit('free');
if (r.dragData.didDrag) {
start.emit('dragfreeon');
draggedEles.emit('dragfree');
}
}
triggerEvents(start, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, {
x: now[0],
y: now[1]
});
start.unactivate();
r.touchData.start = null;
} else {
var near = r.findNearestElement(now[0], now[1], true, true);
triggerEvents(near, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, {
x: now[0],
y: now[1]
});
}
var dx = r.touchData.startPosition[0] - now[0];
var dx2 = dx * dx;
var dy = r.touchData.startPosition[1] - now[1];
var dy2 = dy * dy;
var dist2 = dx2 + dy2;
var rdist2 = dist2 * zoom * zoom; // Tap event, roughly same as mouse click event for touch
if (!r.touchData.singleTouchMoved) {
if (!start) {
cy.$(':selected').unselect(['tapunselect']);
}
triggerEvents(start, ['tap', 'vclick'], e, {
x: now[0],
y: now[1]
});
didDoubleTouch = false;
if (e.timeStamp - prevTouchTimeStamp <= cy.multiClickDebounceTime()) {
touchTimeout && clearTimeout(touchTimeout);
didDoubleTouch = true;
prevTouchTimeStamp = null;
triggerEvents(start, ['dbltap', 'vdblclick'], e, {
x: now[0],
y: now[1]
});
} else {
touchTimeout = setTimeout(function () {
if (didDoubleTouch) return;
triggerEvents(start, ['onetap', 'voneclick'], e, {
x: now[0],
y: now[1]
});
}, cy.multiClickDebounceTime());
prevTouchTimeStamp = e.timeStamp;
}
} // Prepare to select the currently touched node, only if it hasn't been dragged past a certain distance
if (start != null && !r.dragData.didDrag // didn't drag nodes around
&& start._private.selectable && rdist2 < r.touchTapThreshold2 && !r.pinching // pinch to zoom should not affect selection
) {
if (cy.selectionType() === 'single') {
cy.$(isSelected).unmerge(start).unselect(['tapunselect']);
start.select(['tapselect']);
} else {
if (start.selected()) {
start.unselect(['tapunselect']);
} else {
start.select(['tapselect']);
}
}
r.redrawHint('eles', true);
}
r.touchData.singleTouchMoved = true;
}
for (var j = 0; j < now.length; j++) {
earlier[j] = now[j];
}
r.dragData.didDrag = false; // reset for next touchstart
if (e.touches.length === 0) {
r.touchData.dragDelta = [];
r.touchData.startPosition = null;
r.touchData.startGPosition = null;
r.touchData.didSelect = false;
}
if (e.touches.length < 2) {
if (e.touches.length === 1) {
// the old start global pos'n may not be the same finger that remains
r.touchData.startGPosition = [e.touches[0].clientX, e.touches[0].clientY];
}
r.pinching = false;
r.redrawHint('eles', true);
r.redraw();
} //r.redraw();
}, false); // fallback compatibility layer for ms pointer events
if (typeof TouchEvent === 'undefined') {
var pointers = [];
var makeTouch = function makeTouch(e) {
return {
clientX: e.clientX,
clientY: e.clientY,
force: 1,
identifier: e.pointerId,
pageX: e.pageX,
pageY: e.pageY,
radiusX: e.width / 2,
radiusY: e.height / 2,
screenX: e.screenX,
screenY: e.screenY,
target: e.target
};
};
var makePointer = function makePointer(e) {
return {
event: e,
touch: makeTouch(e)
};
};
var addPointer = function addPointer(e) {
pointers.push(makePointer(e));
};
var removePointer = function removePointer(e) {
for (var i = 0; i < pointers.length; i++) {
var p = pointers[i];
if (p.event.pointerId === e.pointerId) {
pointers.splice(i, 1);
return;
}
}
};
var updatePointer = function updatePointer(e) {
var p = pointers.filter(function (p) {
return p.event.pointerId === e.pointerId;
})[0];
p.event = e;
p.touch = makeTouch(e);
};
var addTouchesToEvent = function addTouchesToEvent(e) {
e.touches = pointers.map(function (p) {
return p.touch;
});
};
var pointerIsMouse = function pointerIsMouse(e) {
return e.pointerType === 'mouse' || e.pointerType === 4;
};
r.registerBinding(r.container, 'pointerdown', function (e) {
if (pointerIsMouse(e)) {
return;
} // mouse already handled
e.preventDefault();
addPointer(e);
addTouchesToEvent(e);
touchstartHandler(e);
});
r.registerBinding(r.container, 'pointerup', function (e) {
if (pointerIsMouse(e)) {
return;
} // mouse already handled
removePointer(e);
addTouchesToEvent(e);
touchendHandler(e);
});
r.registerBinding(r.container, 'pointercancel', function (e) {
if (pointerIsMouse(e)) {
return;
} // mouse already handled
removePointer(e);
addTouchesToEvent(e);
touchcancelHandler(e);
});
r.registerBinding(r.container, 'pointermove', function (e) {
if (pointerIsMouse(e)) {
return;
} // mouse already handled
e.preventDefault();
updatePointer(e);
addTouchesToEvent(e);
touchmoveHandler(e);
});
}
};
var BRp$d = {};
BRp$d.generatePolygon = function (name, points) {
return this.nodeShapes[name] = {
renderer: this,
name: name,
points: points,
draw: function draw(context, centerX, centerY, width, height) {
this.renderer.nodeShapeImpl('polygon', context, centerX, centerY, width, height, this.points);
},
intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {
return polygonIntersectLine(x, y, this.points, nodeX, nodeY, width / 2, height / 2, padding);
},
checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {
return pointInsidePolygon(x, y, this.points, centerX, centerY, width, height, [0, -1], padding);
}
};
};
BRp$d.generateEllipse = function () {
return this.nodeShapes['ellipse'] = {
renderer: this,
name: 'ellipse',
draw: function draw(context, centerX, centerY, width, height) {
this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);
},
intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {
return intersectLineEllipse(x, y, nodeX, nodeY, width / 2 + padding, height / 2 + padding);
},
checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {
return checkInEllipse(x, y, width, height, centerX, centerY, padding);
}
};
};
BRp$d.generateRoundPolygon = function (name, points) {
// Pre-compute control points
// Since these points depend on the radius length (which in turns depend on the width/height of the node) we will only pre-compute
// the unit vectors.
// For simplicity the layout will be:
// [ p0, UnitVectorP0P1, p1, UniVectorP1P2, ..., pn, UnitVectorPnP0 ]
var allPoints = new Array(points.length * 2);
for (var i = 0; i < points.length / 2; i++) {
var sourceIndex = i * 2;
var destIndex = void 0;
if (i < points.length / 2 - 1) {
destIndex = (i + 1) * 2;
} else {
destIndex = 0;
}
allPoints[i * 4] = points[sourceIndex];
allPoints[i * 4 + 1] = points[sourceIndex + 1];
var xDest = points[destIndex] - points[sourceIndex];
var yDest = points[destIndex + 1] - points[sourceIndex + 1];
var norm = Math.sqrt(xDest * xDest + yDest * yDest);
allPoints[i * 4 + 2] = xDest / norm;
allPoints[i * 4 + 3] = yDest / norm;
}
return this.nodeShapes[name] = {
renderer: this,
name: name,
points: allPoints,
draw: function draw(context, centerX, centerY, width, height) {
this.renderer.nodeShapeImpl('round-polygon', context, centerX, centerY, width, height, this.points);
},
intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {
return roundPolygonIntersectLine(x, y, this.points, nodeX, nodeY, width, height);
},
checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {
return pointInsideRoundPolygon(x, y, this.points, centerX, centerY, width, height);
}
};
};
BRp$d.generateRoundRectangle = function () {
return this.nodeShapes['round-rectangle'] = this.nodeShapes['roundrectangle'] = {
renderer: this,
name: 'round-rectangle',
points: generateUnitNgonPointsFitToSquare(4, 0),
draw: function draw(context, centerX, centerY, width, height) {
this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);
},
intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {
return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding);
},
checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {
var cornerRadius = getRoundRectangleRadius(width, height);
var diam = cornerRadius * 2; // Check hBox
if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) {
return true;
} // Check vBox
if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) {
return true;
} // Check top left quarter circle
if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY - height / 2 + cornerRadius, padding)) {
return true;
} // Check top right quarter circle
if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY - height / 2 + cornerRadius, padding)) {
return true;
} // Check bottom right quarter circle
if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) {
return true;
} // Check bottom left quarter circle
if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) {
return true;
}
return false;
}
};
};
BRp$d.generateCutRectangle = function () {
return this.nodeShapes['cut-rectangle'] = this.nodeShapes['cutrectangle'] = {
renderer: this,
name: 'cut-rectangle',
cornerLength: getCutRectangleCornerLength(),
points: generateUnitNgonPointsFitToSquare(4, 0),
draw: function draw(context, centerX, centerY, width, height) {
this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);
},
generateCutTrianglePts: function generateCutTrianglePts(width, height, centerX, centerY) {
var cl = this.cornerLength;
var hh = height / 2;
var hw = width / 2;
var xBegin = centerX - hw;
var xEnd = centerX + hw;
var yBegin = centerY - hh;
var yEnd = centerY + hh; // points are in clockwise order, inner (imaginary) triangle pt on [4, 5]
return {
topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl],
topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl],
bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl],
bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl]
};
},
intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {
var cPts = this.generateCutTrianglePts(width + 2 * padding, height + 2 * padding, nodeX, nodeY);
var pts = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]);
return polygonIntersectLine(x, y, pts, nodeX, nodeY);
},
checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {
// Check hBox
if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * this.cornerLength, [0, -1], padding)) {
return true;
} // Check vBox
if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * this.cornerLength, height, [0, -1], padding)) {
return true;
}
var cutTrianglePts = this.generateCutTrianglePts(width, height, centerX, centerY);
return pointInsidePolygonPoints(x, y, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x, y, cutTrianglePts.topRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomLeft);
}
};
};
BRp$d.generateBarrel = function () {
return this.nodeShapes['barrel'] = {
renderer: this,
name: 'barrel',
points: generateUnitNgonPointsFitToSquare(4, 0),
draw: function draw(context, centerX, centerY, width, height) {
this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);
},
intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {
// use two fixed t values for the bezier curve approximation
var t0 = 0.15;
var t1 = 0.5;
var t2 = 0.85;
var bPts = this.generateBarrelBezierPts(width + 2 * padding, height + 2 * padding, nodeX, nodeY);
var approximateBarrelCurvePts = function approximateBarrelCurvePts(pts) {
// approximate curve pts based on the two t values
var m0 = qbezierPtAt({
x: pts[0],
y: pts[1]
}, {
x: pts[2],
y: pts[3]
}, {
x: pts[4],
y: pts[5]
}, t0);
var m1 = qbezierPtAt({
x: pts[0],
y: pts[1]
}, {
x: pts[2],
y: pts[3]
}, {
x: pts[4],
y: pts[5]
}, t1);
var m2 = qbezierPtAt({
x: pts[0],
y: pts[1]
}, {
x: pts[2],
y: pts[3]
}, {
x: pts[4],
y: pts[5]
}, t2);
return [pts[0], pts[1], m0.x, m0.y, m1.x, m1.y, m2.x, m2.y, pts[4], pts[5]];
};
var pts = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft));
return polygonIntersectLine(x, y, pts, nodeX, nodeY);
},
generateBarrelBezierPts: function generateBarrelBezierPts(width, height, centerX, centerY) {
var hh = height / 2;
var hw = width / 2;
var xBegin = centerX - hw;
var xEnd = centerX + hw;
var yBegin = centerY - hh;
var yEnd = centerY + hh;
var curveConstants = getBarrelCurveConstants(width, height);
var hOffset = curveConstants.heightOffset;
var wOffset = curveConstants.widthOffset;
var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width; // points are in clockwise order, inner (imaginary) control pt on [4, 5]
var pts = {
topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin],
topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset],
bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd],
bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset]
};
pts.topLeft.isTop = true;
pts.topRight.isTop = true;
pts.bottomLeft.isBottom = true;
pts.bottomRight.isBottom = true;
return pts;
},
checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {
var curveConstants = getBarrelCurveConstants(width, height);
var hOffset = curveConstants.heightOffset;
var wOffset = curveConstants.widthOffset; // Check hBox
if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * hOffset, [0, -1], padding)) {
return true;
} // Check vBox
if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * wOffset, height, [0, -1], padding)) {
return true;
}
var barrelCurvePts = this.generateBarrelBezierPts(width, height, centerX, centerY);
var getCurveT = function getCurveT(x, y, curvePts) {
var x0 = curvePts[4];
var x1 = curvePts[2];
var x2 = curvePts[0];
var y0 = curvePts[5]; // var y1 = curvePts[ 3 ];
var y2 = curvePts[1];
var xMin = Math.min(x0, x2);
var xMax = Math.max(x0, x2);
var yMin = Math.min(y0, y2);
var yMax = Math.max(y0, y2);
if (xMin <= x && x <= xMax && yMin <= y && y <= yMax) {
var coeff = bezierPtsToQuadCoeff(x0, x1, x2);
var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x);
var validRoots = roots.filter(function (r) {
return 0 <= r && r <= 1;
});
if (validRoots.length > 0) {
return validRoots[0];
}
}
return null;
};
var curveRegions = Object.keys(barrelCurvePts);
for (var i = 0; i < curveRegions.length; i++) {
var corner = curveRegions[i];
var cornerPts = barrelCurvePts[corner];
var t = getCurveT(x, y, cornerPts);
if (t == null) {
continue;
}
var y0 = cornerPts[5];
var y1 = cornerPts[3];
var y2 = cornerPts[1];
var bezY = qbezierAt(y0, y1, y2, t);
if (cornerPts.isTop && bezY <= y) {
return true;
}
if (cornerPts.isBottom && y <= bezY) {
return true;
}
}
return false;
}
};
};
BRp$d.generateBottomRoundrectangle = function () {
return this.nodeShapes['bottom-round-rectangle'] = this.nodeShapes['bottomroundrectangle'] = {
renderer: this,
name: 'bottom-round-rectangle',
points: generateUnitNgonPointsFitToSquare(4, 0),
draw: function draw(context, centerX, centerY, width, height) {
this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);
},
intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {
var topStartX = nodeX - (width / 2 + padding);
var topStartY = nodeY - (height / 2 + padding);
var topEndY = topStartY;
var topEndX = nodeX + (width / 2 + padding);
var topIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false);
if (topIntersections.length > 0) {
return topIntersections;
}
return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding);
},
checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {
var cornerRadius = getRoundRectangleRadius(width, height);
var diam = 2 * cornerRadius; // Check hBox
if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) {
return true;
} // Check vBox
if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) {
return true;
} // check non-rounded top side
var outerWidth = width / 2 + 2 * padding;
var outerHeight = height / 2 + 2 * padding;
var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight];
if (pointInsidePolygonPoints(x, y, points)) {
return true;
} // Check bottom right quarter circle
if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) {
return true;
} // Check bottom left quarter circle
if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) {
return true;
}
return false;
}
};
};
BRp$d.registerNodeShapes = function () {
var nodeShapes = this.nodeShapes = {};
var renderer = this;
this.generateEllipse();
this.generatePolygon('triangle', generateUnitNgonPointsFitToSquare(3, 0));
this.generateRoundPolygon('round-triangle', generateUnitNgonPointsFitToSquare(3, 0));
this.generatePolygon('rectangle', generateUnitNgonPointsFitToSquare(4, 0));
nodeShapes['square'] = nodeShapes['rectangle'];
this.generateRoundRectangle();
this.generateCutRectangle();
this.generateBarrel();
this.generateBottomRoundrectangle();
{
var diamondPoints = [0, 1, 1, 0, 0, -1, -1, 0];
this.generatePolygon('diamond', diamondPoints);
this.generateRoundPolygon('round-diamond', diamondPoints);
}
this.generatePolygon('pentagon', generateUnitNgonPointsFitToSquare(5, 0));
this.generateRoundPolygon('round-pentagon', generateUnitNgonPointsFitToSquare(5, 0));
this.generatePolygon('hexagon', generateUnitNgonPointsFitToSquare(6, 0));
this.generateRoundPolygon('round-hexagon', generateUnitNgonPointsFitToSquare(6, 0));
this.generatePolygon('heptagon', generateUnitNgonPointsFitToSquare(7, 0));
this.generateRoundPolygon('round-heptagon', generateUnitNgonPointsFitToSquare(7, 0));
this.generatePolygon('octagon', generateUnitNgonPointsFitToSquare(8, 0));
this.generateRoundPolygon('round-octagon', generateUnitNgonPointsFitToSquare(8, 0));
var star5Points = new Array(20);
{
var outerPoints = generateUnitNgonPoints(5, 0);
var innerPoints = generateUnitNgonPoints(5, Math.PI / 5); // Outer radius is 1; inner radius of star is smaller
var innerRadius = 0.5 * (3 - Math.sqrt(5));
innerRadius *= 1.57;
for (var i = 0; i < innerPoints.length / 2; i++) {
innerPoints[i * 2] *= innerRadius;
innerPoints[i * 2 + 1] *= innerRadius;
}
for (var i = 0; i < 20 / 4; i++) {
star5Points[i * 4] = outerPoints[i * 2];
star5Points[i * 4 + 1] = outerPoints[i * 2 + 1];
star5Points[i * 4 + 2] = innerPoints[i * 2];
star5Points[i * 4 + 3] = innerPoints[i * 2 + 1];
}
}
star5Points = fitPolygonToSquare(star5Points);
this.generatePolygon('star', star5Points);
this.generatePolygon('vee', [-1, -1, 0, -0.333, 1, -1, 0, 1]);
this.generatePolygon('rhomboid', [-1, -1, 0.333, -1, 1, 1, -0.333, 1]);
this.nodeShapes['concavehexagon'] = this.generatePolygon('concave-hexagon', [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]);
{
var tagPoints = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1];
this.generatePolygon('tag', tagPoints);
this.generateRoundPolygon('round-tag', tagPoints);
}
nodeShapes.makePolygon = function (points) {
// use caching on user-specified polygons so they are as fast as native shapes
var key = points.join('$');
var name = 'polygon-' + key;
var shape;
if (shape = this[name]) {
// got cached shape
return shape;
} // create and cache new shape
return renderer.generatePolygon(name, points);
};
};
var BRp$e = {};
BRp$e.timeToRender = function () {
return this.redrawTotalTime / this.redrawCount;
};
BRp$e.redraw = function (options) {
options = options || staticEmptyObject();
var r = this;
if (r.averageRedrawTime === undefined) {
r.averageRedrawTime = 0;
}
if (r.lastRedrawTime === undefined) {
r.lastRedrawTime = 0;
}
if (r.lastDrawTime === undefined) {
r.lastDrawTime = 0;
}
r.requestedFrame = true;
r.renderOptions = options;
};
BRp$e.beforeRender = function (fn, priority) {
// the renderer can't add tick callbacks when destroyed
if (this.destroyed) {
return;
}
if (priority == null) {
error('Priority is not optional for beforeRender');
}
var cbs = this.beforeRenderCallbacks;
cbs.push({
fn: fn,
priority: priority
}); // higher priority callbacks executed first
cbs.sort(function (a, b) {
return b.priority - a.priority;
});
};
var beforeRenderCallbacks = function beforeRenderCallbacks(r, willDraw, startTime) {
var cbs = r.beforeRenderCallbacks;
for (var i = 0; i < cbs.length; i++) {
cbs[i].fn(willDraw, startTime);
}
};
BRp$e.startRenderLoop = function () {
var r = this;
var cy = r.cy;
if (r.renderLoopStarted) {
return;
} else {
r.renderLoopStarted = true;
}
var renderFn = function renderFn(requestTime) {
if (r.destroyed) {
return;
}
if (cy.batching()) ; else if (r.requestedFrame && !r.skipFrame) {
beforeRenderCallbacks(r, true, requestTime);
var startTime = performanceNow();
r.render(r.renderOptions);
var endTime = r.lastDrawTime = performanceNow();
if (r.averageRedrawTime === undefined) {
r.averageRedrawTime = endTime - startTime;
}
if (r.redrawCount === undefined) {
r.redrawCount = 0;
}
r.redrawCount++;
if (r.redrawTotalTime === undefined) {
r.redrawTotalTime = 0;
}
var duration = endTime - startTime;
r.redrawTotalTime += duration;
r.lastRedrawTime = duration; // use a weighted average with a bias from the previous average so we don't spike so easily
r.averageRedrawTime = r.averageRedrawTime / 2 + duration / 2;
r.requestedFrame = false;
} else {
beforeRenderCallbacks(r, false, requestTime);
}
r.skipFrame = false;
requestAnimationFrame$1(renderFn);
};
requestAnimationFrame$1(renderFn);
};
var BaseRenderer = function BaseRenderer(options) {
this.init(options);
};
var BR = BaseRenderer;
var BRp$f = BR.prototype;
BRp$f.clientFunctions = ['redrawHint', 'render', 'renderTo', 'matchCanvasSize', 'nodeShapeImpl', 'arrowShapeImpl'];
BRp$f.init = function (options) {
var r = this;
r.options = options;
r.cy = options.cy;
var ctr = r.container = options.cy.container(); // prepend a stylesheet in the head such that
if (window$1) {
var document = window$1.document;
var head = document.head;
var stylesheetId = '__________cytoscape_stylesheet';
var className = '__________cytoscape_container';
var stylesheetAlreadyExists = document.getElementById(stylesheetId) != null;
if (ctr.className.indexOf(className) < 0) {
ctr.className = (ctr.className || '') + ' ' + className;
}
if (!stylesheetAlreadyExists) {
var stylesheet = document.createElement('style');
stylesheet.id = stylesheetId;
stylesheet.innerHTML = '.' + className + ' { position: relative; }';
head.insertBefore(stylesheet, head.children[0]); // first so lowest priority
}
var computedStyle = window$1.getComputedStyle(ctr);
var position = computedStyle.getPropertyValue('position');
if (position === 'static') {
warn('A Cytoscape container has style position:static and so can not use UI extensions properly');
}
}
r.selection = [undefined, undefined, undefined, undefined, 0]; // Coordinates for selection box, plus enabled flag
r.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95]; //--Pointer-related data
r.hoverData = {
down: null,
last: null,
downTime: null,
triggerMode: null,
dragging: false,
initialPan: [null, null],
capture: false
};
r.dragData = {
possibleDragElements: []
};
r.touchData = {
start: null,
capture: false,
// These 3 fields related to tap, taphold events
startPosition: [null, null, null, null, null, null],
singleTouchStartTime: null,
singleTouchMoved: true,
now: [null, null, null, null, null, null],
earlier: [null, null, null, null, null, null]
};
r.redraws = 0;
r.showFps = options.showFps;
r.debug = options.debug;
r.hideEdgesOnViewport = options.hideEdgesOnViewport;
r.textureOnViewport = options.textureOnViewport;
r.wheelSensitivity = options.wheelSensitivity;
r.motionBlurEnabled = options.motionBlur; // on by default
r.forcedPixelRatio = number(options.pixelRatio) ? options.pixelRatio : null;
r.motionBlur = options.motionBlur; // for initial kick off
r.motionBlurOpacity = options.motionBlurOpacity;
r.motionBlurTransparency = 1 - r.motionBlurOpacity;
r.motionBlurPxRatio = 1;
r.mbPxRBlurry = 1; //0.8;
r.minMbLowQualFrames = 4;
r.fullQualityMb = false;
r.clearedForMotionBlur = [];
r.desktopTapThreshold = options.desktopTapThreshold;
r.desktopTapThreshold2 = options.desktopTapThreshold * options.desktopTapThreshold;
r.touchTapThreshold = options.touchTapThreshold;
r.touchTapThreshold2 = options.touchTapThreshold * options.touchTapThreshold;
r.tapholdDuration = 500;
r.bindings = [];
r.beforeRenderCallbacks = [];
r.beforeRenderPriorities = {
// higher priority execs before lower one
animations: 400,
eleCalcs: 300,
eleTxrDeq: 200,
lyrTxrDeq: 150,
lyrTxrSkip: 100
};
r.registerNodeShapes();
r.registerArrowShapes();
r.registerCalculationListeners();
};
BRp$f.notify = function (eventName, eles) {
var r = this;
var cy = r.cy; // the renderer can't be notified after it's destroyed
if (this.destroyed) {
return;
}
if (eventName === 'init') {
r.load();
return;
}
if (eventName === 'destroy') {
r.destroy();
return;
}
if (eventName === 'add' || eventName === 'remove' || eventName === 'move' && cy.hasCompoundNodes() || eventName === 'load' || eventName === 'zorder' || eventName === 'mount') {
r.invalidateCachedZSortedEles();
}
if (eventName === 'viewport') {
r.redrawHint('select', true);
}
if (eventName === 'load' || eventName === 'resize' || eventName === 'mount') {
r.invalidateContainerClientCoordsCache();
r.matchCanvasSize(r.container);
}
r.redrawHint('eles', true);
r.redrawHint('drag', true);
this.startRenderLoop();
this.redraw();
};
BRp$f.destroy = function () {
var r = this;
r.destroyed = true;
r.cy.stopAnimationLoop();
for (var i = 0; i < r.bindings.length; i++) {
var binding = r.bindings[i];
var b = binding;
var tgt = b.target;
(tgt.off || tgt.removeEventListener).apply(tgt, b.args);
}
r.bindings = [];
r.beforeRenderCallbacks = [];
r.onUpdateEleCalcsFns = [];
if (r.removeObserver) {
r.removeObserver.disconnect();
}
if (r.styleObserver) {
r.styleObserver.disconnect();
}
if (r.resizeObserver) {
r.resizeObserver.disconnect();
}
if (r.labelCalcDiv) {
try {
document.body.removeChild(r.labelCalcDiv); // eslint-disable-line no-undef
} catch (e) {// ie10 issue #1014
}
}
};
BRp$f.isHeadless = function () {
return false;
};
[BRp, BRp$a, BRp$b, BRp$c, BRp$d, BRp$e].forEach(function (props) {
extend(BRp$f, props);
});
var fullFpsTime = 1000 / 60; // assume 60 frames per second
var defs = {
setupDequeueing: function setupDequeueing(opts) {
return function setupDequeueingImpl() {
var self = this;
var r = this.renderer;
if (self.dequeueingSetup) {
return;
} else {
self.dequeueingSetup = true;
}
var queueRedraw = util$2(function () {
r.redrawHint('eles', true);
r.redrawHint('drag', true);
r.redraw();
}, opts.deqRedrawThreshold);
var dequeue = function dequeue(willDraw, frameStartTime) {
var startTime = performanceNow();
var avgRenderTime = r.averageRedrawTime;
var renderTime = r.lastRedrawTime;
var deqd = [];
var extent = r.cy.extent();
var pixelRatio = r.getPixelRatio(); // if we aren't in a tick that causes a draw, then the rendered style
// queue won't automatically be flushed before dequeueing starts
if (!willDraw) {
r.flushRenderedStyleQueue();
}
while (true) {
// eslint-disable-line no-constant-condition
var now = performanceNow();
var duration = now - startTime;
var frameDuration = now - frameStartTime;
if (renderTime < fullFpsTime) {
// if we're rendering faster than the ideal fps, then do dequeueing
// during all of the remaining frame time
var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0);
if (frameDuration >= opts.deqFastCost * timeAvailable) {
break;
}
} else {
if (willDraw) {
if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) {
break;
}
} else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) {
break;
}
}
var thisDeqd = opts.deq(self, pixelRatio, extent);
if (thisDeqd.length > 0) {
for (var i = 0; i < thisDeqd.length; i++) {
deqd.push(thisDeqd[i]);
}
} else {
break;
}
} // callbacks on dequeue
if (deqd.length > 0) {
opts.onDeqd(self, deqd);
if (!willDraw && opts.shouldRedraw(self, deqd, pixelRatio, extent)) {
queueRedraw();
}
}
};
var priority = opts.priority || noop$1;
r.beforeRender(dequeue, priority(self));
};
}
};
// Uses keys so elements may share the same cache.
var ElementTextureCacheLookup =
/*#__PURE__*/
function () {
function ElementTextureCacheLookup(getKey) {
var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : falsify;
_classCallCheck(this, ElementTextureCacheLookup);
this.idsByKey = new Map$1$1();
this.keyForId = new Map$1$1();
this.cachesByLvl = new Map$1$1();
this.lvls = [];
this.getKey = getKey;
this.doesEleInvalidateKey = doesEleInvalidateKey;
}
_createClass(ElementTextureCacheLookup, [{
key: "getIdsFor",
value: function getIdsFor(key) {
if (key == null) {
error("Can not get id list for null key");
}
var idsByKey = this.idsByKey;
var ids = this.idsByKey.get(key);
if (!ids) {
ids = new Set$1$1();
idsByKey.set(key, ids);
}
return ids;
}
}, {
key: "addIdForKey",
value: function addIdForKey(key, id) {
if (key != null) {
this.getIdsFor(key).add(id);
}
}
}, {
key: "deleteIdForKey",
value: function deleteIdForKey(key, id) {
if (key != null) {
this.getIdsFor(key)["delete"](id);
}
}
}, {
key: "getNumberOfIdsForKey",
value: function getNumberOfIdsForKey(key) {
if (key == null) {
return 0;
} else {
return this.getIdsFor(key).size;
}
}
}, {
key: "updateKeyMappingFor",
value: function updateKeyMappingFor(ele) {
var id = ele.id();
var prevKey = this.keyForId.get(id);
var currKey = this.getKey(ele);
this.deleteIdForKey(prevKey, id);
this.addIdForKey(currKey, id);
this.keyForId.set(id, currKey);
}
}, {
key: "deleteKeyMappingFor",
value: function deleteKeyMappingFor(ele) {
var id = ele.id();
var prevKey = this.keyForId.get(id);
this.deleteIdForKey(prevKey, id);
this.keyForId["delete"](id);
}
}, {
key: "keyHasChangedFor",
value: function keyHasChangedFor(ele) {
var id = ele.id();
var prevKey = this.keyForId.get(id);
var newKey = this.getKey(ele);
return prevKey !== newKey;
}
}, {
key: "isInvalid",
value: function isInvalid(ele) {
return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele);
}
}, {
key: "getCachesAt",
value: function getCachesAt(lvl) {
var cachesByLvl = this.cachesByLvl,
lvls = this.lvls;
var caches = cachesByLvl.get(lvl);
if (!caches) {
caches = new Map$1$1();
cachesByLvl.set(lvl, caches);
lvls.push(lvl);
}
return caches;
}
}, {
key: "getCache",
value: function getCache(key, lvl) {
return this.getCachesAt(lvl).get(key);
}
}, {
key: "get",
value: function get(ele, lvl) {
var key = this.getKey(ele);
var cache = this.getCache(key, lvl); // getting for an element may need to add to the id list b/c eles can share keys
if (cache != null) {
this.updateKeyMappingFor(ele);
}
return cache;
}
}, {
key: "getForCachedKey",
value: function getForCachedKey(ele, lvl) {
var key = this.keyForId.get(ele.id()); // n.b. use cached key, not newly computed key
var cache = this.getCache(key, lvl);
return cache;
}
}, {
key: "hasCache",
value: function hasCache(key, lvl) {
return this.getCachesAt(lvl).has(key);
}
}, {
key: "has",
value: function has(ele, lvl) {
var key = this.getKey(ele);
return this.hasCache(key, lvl);
}
}, {
key: "setCache",
value: function setCache(key, lvl, cache) {
cache.key = key;
this.getCachesAt(lvl).set(key, cache);
}
}, {
key: "set",
value: function set(ele, lvl, cache) {
var key = this.getKey(ele);
this.setCache(key, lvl, cache);
this.updateKeyMappingFor(ele);
}
}, {
key: "deleteCache",
value: function deleteCache(key, lvl) {
this.getCachesAt(lvl)["delete"](key);
}
}, {
key: "delete",
value: function _delete(ele, lvl) {
var key = this.getKey(ele);
this.deleteCache(key, lvl);
}
}, {
key: "invalidateKey",
value: function invalidateKey(key) {
var _this = this;
this.lvls.forEach(function (lvl) {
return _this.deleteCache(key, lvl);
});
} // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key)
}, {
key: "invalidate",
value: function invalidate(ele) {
var id = ele.id();
var key = this.keyForId.get(id); // n.b. use stored key rather than current (potential key)
this.deleteKeyMappingFor(ele);
var entireKeyInvalidated = this.doesEleInvalidateKey(ele);
if (entireKeyInvalidated) {
// clear mapping for current key
this.invalidateKey(key);
}
return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0;
}
}]);
return ElementTextureCacheLookup;
}();
var minTxrH = 25; // the size of the texture cache for small height eles (special case)
var txrStepH = 50; // the min size of the regular cache, and the size it increases with each step up
var minLvl = -4; // when scaling smaller than that we don't need to re-render
var maxLvl = 3; // when larger than this scale just render directly (caching is not helpful)
var maxZoom = 7.99; // beyond this zoom level, layered textures are not used
var eleTxrSpacing = 8; // spacing between elements on textures to avoid blitting overlaps
var defTxrWidth = 1024; // default/minimum texture width
var maxTxrW = 1024; // the maximum width of a texture
var maxTxrH = 1024; // the maximum height of a texture
var minUtility = 0.2; // if usage of texture is less than this, it is retired
var maxFullness = 0.8; // fullness of texture after which queue removal is checked
var maxFullnessChecks = 10; // dequeued after this many checks
var deqCost = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame
var deqAvgCost = 0.1; // % of add'l rendering cost compared to average overall redraw time
var deqNoDrawCost = 0.9; // % of avg frame time that can be used for dequeueing when not drawing
var deqFastCost = 0.9; // % of frame time to be used when >60fps
var deqRedrawThreshold = 100; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile
var maxDeqSize = 1; // number of eles to dequeue and render at higher texture in each batch
var getTxrReasons = {
dequeue: 'dequeue',
downscale: 'downscale',
highQuality: 'highQuality'
};
var initDefaults = defaults$1({
getKey: null,
doesEleInvalidateKey: falsify,
drawElement: null,
getBoundingBox: null,
getRotationPoint: null,
getRotationOffset: null,
isVisible: trueify,
allowEdgeTxrCaching: true,
allowParentTxrCaching: true
});
var ElementTextureCache = function ElementTextureCache(renderer, initOptions) {
var self = this;
self.renderer = renderer;
self.onDequeues = [];
var opts = initDefaults(initOptions);
extend(self, opts);
self.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey);
self.setupDequeueing();
};
var ETCp = ElementTextureCache.prototype;
ETCp.reasons = getTxrReasons; // the list of textures in which new subtextures for elements can be placed
ETCp.getTextureQueue = function (txrH) {
var self = this;
self.eleImgCaches = self.eleImgCaches || {};
return self.eleImgCaches[txrH] = self.eleImgCaches[txrH] || [];
}; // the list of usused textures which can be recycled (in use in texture queue)
ETCp.getRetiredTextureQueue = function (txrH) {
var self = this;
var rtxtrQs = self.eleImgCaches.retired = self.eleImgCaches.retired || {};
var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || [];
return rtxtrQ;
}; // queue of element draw requests at different scale levels
ETCp.getElementQueue = function () {
var self = this;
var q = self.eleCacheQueue = self.eleCacheQueue || new Heap(function (a, b) {
return b.reqs - a.reqs;
});
return q;
}; // queue of element draw requests at different scale levels (element id lookup)
ETCp.getElementKeyToQueue = function () {
var self = this;
var k2q = self.eleKeyToCacheQueue = self.eleKeyToCacheQueue || {};
return k2q;
};
ETCp.getElement = function (ele, bb, pxRatio, lvl, reason) {
var self = this;
var r = this.renderer;
var zoom = r.cy.zoom();
var lookup = this.lookup;
if (!bb || bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible() || ele.removed()) {
return null;
}
if (!self.allowEdgeTxrCaching && ele.isEdge() || !self.allowParentTxrCaching && ele.isParent()) {
return null;
}
if (lvl == null) {
lvl = Math.ceil(log2(zoom * pxRatio));
}
if (lvl < minLvl) {
lvl = minLvl;
} else if (zoom >= maxZoom || lvl > maxLvl) {
return null;
}
var scale = Math.pow(2, lvl);
var eleScaledH = bb.h * scale;
var eleScaledW = bb.w * scale;
var scaledLabelShown = r.eleTextBiggerThanMin(ele, scale);
if (!this.isVisible(ele, scaledLabelShown)) {
return null;
}
var eleCache = lookup.get(ele, lvl); // if this get was on an unused/invalidated cache, then restore the texture usage metric
if (eleCache && eleCache.invalidated) {
eleCache.invalidated = false;
eleCache.texture.invalidatedWidth -= eleCache.width;
}
if (eleCache) {
return eleCache;
}
var txrH; // which texture height this ele belongs to
if (eleScaledH <= minTxrH) {
txrH = minTxrH;
} else if (eleScaledH <= txrStepH) {
txrH = txrStepH;
} else {
txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH;
}
if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) {
return null; // caching large elements is not efficient
}
var txrQ = self.getTextureQueue(txrH); // first try the second last one in case it has space at the end
var txr = txrQ[txrQ.length - 2];
var addNewTxr = function addNewTxr() {
return self.recycleTexture(txrH, eleScaledW) || self.addTexture(txrH, eleScaledW);
}; // try the last one if there is no second last one
if (!txr) {
txr = txrQ[txrQ.length - 1];
} // if the last one doesn't exist, we need a first one
if (!txr) {
txr = addNewTxr();
} // if there's no room in the current texture, we need a new one
if (txr.width - txr.usedWidth < eleScaledW) {
txr = addNewTxr();
}
var scalableFrom = function scalableFrom(otherCache) {
return otherCache && otherCache.scaledLabelShown === scaledLabelShown;
};
var deqing = reason && reason === getTxrReasons.dequeue;
var highQualityReq = reason && reason === getTxrReasons.highQuality;
var downscaleReq = reason && reason === getTxrReasons.downscale;
var higherCache; // the nearest cache with a higher level
for (var l = lvl + 1; l <= maxLvl; l++) {
var c = lookup.get(ele, l);
if (c) {
higherCache = c;
break;
}
}
var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null;
var downscale = function downscale() {
txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH);
}; // reset ele area in texture
txr.context.setTransform(1, 0, 0, 1, 0, 0);
txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH);
if (scalableFrom(oneUpCache)) {
// then we can relatively cheaply rescale the existing image w/o rerendering
downscale();
} else if (scalableFrom(higherCache)) {
// then use the higher cache for now and queue the next level down
// to cheaply scale towards the smaller level
if (highQualityReq) {
for (var _l = higherCache.level; _l > lvl; _l--) {
oneUpCache = self.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale);
}
downscale();
} else {
self.queueElement(ele, higherCache.level - 1);
return higherCache;
}
} else {
var lowerCache; // the nearest cache with a lower level
if (!deqing && !highQualityReq && !downscaleReq) {
for (var _l2 = lvl - 1; _l2 >= minLvl; _l2--) {
var _c = lookup.get(ele, _l2);
if (_c) {
lowerCache = _c;
break;
}
}
}
if (scalableFrom(lowerCache)) {
// then use the lower quality cache for now and queue the better one for later
self.queueElement(ele, lvl);
return lowerCache;
}
txr.context.translate(txr.usedWidth, 0);
txr.context.scale(scale, scale);
this.drawElement(txr.context, ele, bb, scaledLabelShown, false);
txr.context.scale(1 / scale, 1 / scale);
txr.context.translate(-txr.usedWidth, 0);
}
eleCache = {
x: txr.usedWidth,
texture: txr,
level: lvl,
scale: scale,
width: eleScaledW,
height: eleScaledH,
scaledLabelShown: scaledLabelShown
};
txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing);
txr.eleCaches.push(eleCache);
lookup.set(ele, lvl, eleCache);
self.checkTextureFullness(txr);
return eleCache;
};
ETCp.invalidateElements = function (eles) {
for (var i = 0; i < eles.length; i++) {
this.invalidateElement(eles[i]);
}
};
ETCp.invalidateElement = function (ele) {
var self = this;
var lookup = self.lookup;
var caches = [];
var invalid = lookup.isInvalid(ele);
if (!invalid) {
return; // override the invalidation request if the element key has not changed
}
for (var lvl = minLvl; lvl <= maxLvl; lvl++) {
var cache = lookup.getForCachedKey(ele, lvl);
if (cache) {
caches.push(cache);
}
}
var noOtherElesUseCache = lookup.invalidate(ele);
if (noOtherElesUseCache) {
for (var i = 0; i < caches.length; i++) {
var _cache = caches[i];
var txr = _cache.texture; // remove space from the texture it belongs to
txr.invalidatedWidth += _cache.width; // mark the cache as invalidated
_cache.invalidated = true; // retire the texture if its utility is low
self.checkTextureUtility(txr);
}
} // remove from queue since the old req was for the old state
self.removeFromQueue(ele);
};
ETCp.checkTextureUtility = function (txr) {
// invalidate all entries in the cache if the cache size is small
if (txr.invalidatedWidth >= minUtility * txr.width) {
this.retireTexture(txr);
}
};
ETCp.checkTextureFullness = function (txr) {
// if texture has been mostly filled and passed over several times, remove
// it from the queue so we don't need to waste time looking at it to put new things
var self = this;
var txrQ = self.getTextureQueue(txr.height);
if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) {
removeFromArray(txrQ, txr);
} else {
txr.fullnessChecks++;
}
};
ETCp.retireTexture = function (txr) {
var self = this;
var txrH = txr.height;
var txrQ = self.getTextureQueue(txrH);
var lookup = this.lookup; // retire the texture from the active / searchable queue:
removeFromArray(txrQ, txr);
txr.retired = true; // remove the refs from the eles to the caches:
var eleCaches = txr.eleCaches;
for (var i = 0; i < eleCaches.length; i++) {
var eleCache = eleCaches[i];
lookup.deleteCache(eleCache.key, eleCache.level);
}
clearArray(eleCaches); // add the texture to a retired queue so it can be recycled in future:
var rtxtrQ = self.getRetiredTextureQueue(txrH);
rtxtrQ.push(txr);
};
ETCp.addTexture = function (txrH, minW) {
var self = this;
var txrQ = self.getTextureQueue(txrH);
var txr = {};
txrQ.push(txr);
txr.eleCaches = [];
txr.height = txrH;
txr.width = Math.max(defTxrWidth, minW);
txr.usedWidth = 0;
txr.invalidatedWidth = 0;
txr.fullnessChecks = 0;
txr.canvas = self.renderer.makeOffscreenCanvas(txr.width, txr.height);
txr.context = txr.canvas.getContext('2d');
return txr;
};
ETCp.recycleTexture = function (txrH, minW) {
var self = this;
var txrQ = self.getTextureQueue(txrH);
var rtxtrQ = self.getRetiredTextureQueue(txrH);
for (var i = 0; i < rtxtrQ.length; i++) {
var txr = rtxtrQ[i];
if (txr.width >= minW) {
txr.retired = false;
txr.usedWidth = 0;
txr.invalidatedWidth = 0;
txr.fullnessChecks = 0;
clearArray(txr.eleCaches);
txr.context.setTransform(1, 0, 0, 1, 0, 0);
txr.context.clearRect(0, 0, txr.width, txr.height);
removeFromArray(rtxtrQ, txr);
txrQ.push(txr);
return txr;
}
}
};
ETCp.queueElement = function (ele, lvl) {
var self = this;
var q = self.getElementQueue();
var k2q = self.getElementKeyToQueue();
var key = this.getKey(ele);
var existingReq = k2q[key];
if (existingReq) {
// use the max lvl b/c in between lvls are cheap to make
existingReq.level = Math.max(existingReq.level, lvl);
existingReq.eles.merge(ele);
existingReq.reqs++;
q.updateItem(existingReq);
} else {
var req = {
eles: ele.spawn().merge(ele),
level: lvl,
reqs: 1,
key: key
};
q.push(req);
k2q[key] = req;
}
};
ETCp.dequeue = function (pxRatio
/*, extent*/
) {
var self = this;
var q = self.getElementQueue();
var k2q = self.getElementKeyToQueue();
var dequeued = [];
var lookup = self.lookup;
for (var i = 0; i < maxDeqSize; i++) {
if (q.size() > 0) {
var req = q.pop();
var key = req.key;
var ele = req.eles[0]; // all eles have the same key
var cacheExists = lookup.hasCache(ele, req.level); // clear out the key to req lookup
k2q[key] = null; // dequeueing isn't necessary with an existing cache
if (cacheExists) {
continue;
}
dequeued.push(req);
var bb = self.getBoundingBox(ele);
self.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue);
} else {
break;
}
}
return dequeued;
};
ETCp.removeFromQueue = function (ele) {
var self = this;
var q = self.getElementQueue();
var k2q = self.getElementKeyToQueue();
var key = this.getKey(ele);
var req = k2q[key];
if (req != null) {
if (req.eles.length === 1) {
// remove if last ele in the req
// bring to front of queue
req.reqs = MAX_INT;
q.updateItem(req);
q.pop(); // remove from queue
k2q[key] = null; // remove from lookup map
} else {
// otherwise just remove ele from req
req.eles.unmerge(ele);
}
}
};
ETCp.onDequeue = function (fn) {
this.onDequeues.push(fn);
};
ETCp.offDequeue = function (fn) {
removeFromArray(this.onDequeues, fn);
};
ETCp.setupDequeueing = defs.setupDequeueing({
deqRedrawThreshold: deqRedrawThreshold,
deqCost: deqCost,
deqAvgCost: deqAvgCost,
deqNoDrawCost: deqNoDrawCost,
deqFastCost: deqFastCost,
deq: function deq(self, pxRatio, extent) {
return self.dequeue(pxRatio, extent);
},
onDeqd: function onDeqd(self, deqd) {
for (var i = 0; i < self.onDequeues.length; i++) {
var fn = self.onDequeues[i];
fn(deqd);
}
},
shouldRedraw: function shouldRedraw(self, deqd, pxRatio, extent) {
for (var i = 0; i < deqd.length; i++) {
var eles = deqd[i].eles;
for (var j = 0; j < eles.length; j++) {
var bb = eles[j].boundingBox();
if (boundingBoxesIntersect(bb, extent)) {
return true;
}
}
}
return false;
},
priority: function priority(self) {
return self.renderer.beforeRenderPriorities.eleTxrDeq;
}
});
var defNumLayers = 1; // default number of layers to use
var minLvl$1 = -4; // when scaling smaller than that we don't need to re-render
var maxLvl$1 = 2; // when larger than this scale just render directly (caching is not helpful)
var maxZoom$1 = 3.99; // beyond this zoom level, layered textures are not used
var deqRedrawThreshold$1 = 50; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile
var refineEleDebounceTime = 50; // time to debounce sharper ele texture updates
var deqCost$1 = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame
var deqAvgCost$1 = 0.1; // % of add'l rendering cost compared to average overall redraw time
var deqNoDrawCost$1 = 0.9; // % of avg frame time that can be used for dequeueing when not drawing
var deqFastCost$1 = 0.9; // % of frame time to be used when >60fps
var maxDeqSize$1 = 1; // number of eles to dequeue and render at higher texture in each batch
var invalidThreshold = 250; // time threshold for disabling b/c of invalidations
var maxLayerArea = 4000 * 4000; // layers can't be bigger than this
var useHighQualityEleTxrReqs = true; // whether to use high quality ele txr requests (generally faster and cheaper in the longterm)
// var log = function(){ console.log.apply( console, arguments ); };
var LayeredTextureCache = function LayeredTextureCache(renderer) {
var self = this;
var r = self.renderer = renderer;
var cy = r.cy;
self.layersByLevel = {}; // e.g. 2 => [ layer1, layer2, ..., layerN ]
self.firstGet = true;
self.lastInvalidationTime = performanceNow() - 2 * invalidThreshold;
self.skipping = false;
self.eleTxrDeqs = cy.collection();
self.scheduleElementRefinement = util$2(function () {
self.refineElementTextures(self.eleTxrDeqs);
self.eleTxrDeqs.unmerge(self.eleTxrDeqs);
}, refineEleDebounceTime);
r.beforeRender(function (willDraw, now) {
if (now - self.lastInvalidationTime <= invalidThreshold) {
self.skipping = true;
} else {
self.skipping = false;
}
}, r.beforeRenderPriorities.lyrTxrSkip);
var qSort = function qSort(a, b) {
return b.reqs - a.reqs;
};
self.layersQueue = new Heap(qSort);
self.setupDequeueing();
};
var LTCp = LayeredTextureCache.prototype;
var layerIdPool = 0;
var MAX_INT$1 = Math.pow(2, 53) - 1;
LTCp.makeLayer = function (bb, lvl) {
var scale = Math.pow(2, lvl);
var w = Math.ceil(bb.w * scale);
var h = Math.ceil(bb.h * scale);
var canvas = this.renderer.makeOffscreenCanvas(w, h);
var layer = {
id: layerIdPool = ++layerIdPool % MAX_INT$1,
bb: bb,
level: lvl,
width: w,
height: h,
canvas: canvas,
context: canvas.getContext('2d'),
eles: [],
elesQueue: [],
reqs: 0
}; // log('make layer %s with w %s and h %s and lvl %s', layer.id, layer.width, layer.height, layer.level);
var cxt = layer.context;
var dx = -layer.bb.x1;
var dy = -layer.bb.y1; // do the transform on creation to save cycles (it's the same for all eles)
cxt.scale(scale, scale);
cxt.translate(dx, dy);
return layer;
};
LTCp.getLayers = function (eles, pxRatio, lvl) {
var self = this;
var r = self.renderer;
var cy = r.cy;
var zoom = cy.zoom();
var firstGet = self.firstGet;
self.firstGet = false; // log('--\nget layers with %s eles', eles.length);
//log eles.map(function(ele){ return ele.id() }) );
if (lvl == null) {
lvl = Math.ceil(log2(zoom * pxRatio));
if (lvl < minLvl$1) {
lvl = minLvl$1;
} else if (zoom >= maxZoom$1 || lvl > maxLvl$1) {
return null;
}
}
self.validateLayersElesOrdering(lvl, eles);
var layersByLvl = self.layersByLevel;
var scale = Math.pow(2, lvl);
var layers = layersByLvl[lvl] = layersByLvl[lvl] || [];
var bb;
var lvlComplete = self.levelIsComplete(lvl, eles);
var tmpLayers;
var checkTempLevels = function checkTempLevels() {
var canUseAsTmpLvl = function canUseAsTmpLvl(l) {
self.validateLayersElesOrdering(l, eles);
if (self.levelIsComplete(l, eles)) {
tmpLayers = layersByLvl[l];
return true;
}
};
var checkLvls = function checkLvls(dir) {
if (tmpLayers) {
return;
}
for (var l = lvl + dir; minLvl$1 <= l && l <= maxLvl$1; l += dir) {
if (canUseAsTmpLvl(l)) {
break;
}
}
};
checkLvls(+1);
checkLvls(-1); // remove the invalid layers; they will be replaced as needed later in this function
for (var i = layers.length - 1; i >= 0; i--) {
var layer = layers[i];
if (layer.invalid) {
removeFromArray(layers, layer);
}
}
};
if (!lvlComplete) {
// if the current level is incomplete, then use the closest, best quality layerset temporarily
// and later queue the current layerset so we can get the proper quality level soon
checkTempLevels();
} else {
// log('level complete, using existing layers\n--');
return layers;
}
var getBb = function getBb() {
if (!bb) {
bb = makeBoundingBox();
for (var i = 0; i < eles.length; i++) {
updateBoundingBox(bb, eles[i].boundingBox());
}
}
return bb;
};
var makeLayer = function makeLayer(opts) {
opts = opts || {};
var after = opts.after;
getBb();
var area = bb.w * scale * (bb.h * scale);
if (area > maxLayerArea) {
return null;
}
var layer = self.makeLayer(bb, lvl);
if (after != null) {
var index = layers.indexOf(after) + 1;
layers.splice(index, 0, layer);
} else if (opts.insert === undefined || opts.insert) {
// no after specified => first layer made so put at start
layers.unshift(layer);
} // if( tmpLayers ){
//self.queueLayer( layer );
// }
return layer;
};
if (self.skipping && !firstGet) {
// log('skip layers');
return null;
} // log('do layers');
var layer = null;
var maxElesPerLayer = eles.length / defNumLayers;
var allowLazyQueueing = !firstGet;
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
var rs = ele._private.rscratch;
var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; // log('look at ele', ele.id());
var existingLayer = caches[lvl];
if (existingLayer) {
// reuse layer for later eles
// log('reuse layer for', ele.id());
layer = existingLayer;
continue;
}
if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) {
// log('make new layer for ele %s', ele.id());
layer = makeLayer({
insert: true,
after: layer
}); // if now layer can be built then we can't use layers at this level
if (!layer) {
return null;
} // log('new layer with id %s', layer.id);
}
if (tmpLayers || allowLazyQueueing) {
// log('queue ele %s in layer %s', ele.id(), layer.id);
self.queueLayer(layer, ele);
} else {
// log('draw ele %s in layer %s', ele.id(), layer.id);
self.drawEleInLayer(layer, ele, lvl, pxRatio);
}
layer.eles.push(ele);
caches[lvl] = layer;
} // log('--');
if (tmpLayers) {
// then we only queued the current layerset and can't draw it yet
return tmpLayers;
}
if (allowLazyQueueing) {
// log('lazy queue level', lvl);
return null;
}
return layers;
}; // a layer may want to use an ele cache of a higher level to avoid blurriness
// so the layer level might not equal the ele level
LTCp.getEleLevelForLayerLevel = function (lvl, pxRatio) {
return lvl;
};
LTCp.drawEleInLayer = function (layer, ele, lvl, pxRatio) {
var self = this;
var r = this.renderer;
var context = layer.context;
var bb = ele.boundingBox();
if (bb.w === 0 || bb.h === 0 || !ele.visible()) {
return;
}
lvl = self.getEleLevelForLayerLevel(lvl, pxRatio);
{
r.setImgSmoothing(context, false);
}
{
r.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs);
}
{
r.setImgSmoothing(context, true);
}
};
LTCp.levelIsComplete = function (lvl, eles) {
var self = this;
var layers = self.layersByLevel[lvl];
if (!layers || layers.length === 0) {
return false;
}
var numElesInLayers = 0;
for (var i = 0; i < layers.length; i++) {
var layer = layers[i]; // if there are any eles needed to be drawn yet, the level is not complete
if (layer.reqs > 0) {
return false;
} // if the layer is invalid, the level is not complete
if (layer.invalid) {
return false;
}
numElesInLayers += layer.eles.length;
} // we should have exactly the number of eles passed in to be complete
if (numElesInLayers !== eles.length) {
return false;
}
return true;
};
LTCp.validateLayersElesOrdering = function (lvl, eles) {
var layers = this.layersByLevel[lvl];
if (!layers) {
return;
} // if in a layer the eles are not in the same order, then the layer is invalid
// (i.e. there is an ele in between the eles in the layer)
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
var offset = -1; // find the offset
for (var j = 0; j < eles.length; j++) {
if (layer.eles[0] === eles[j]) {
offset = j;
break;
}
}
if (offset < 0) {
// then the layer has nonexistant elements and is invalid
this.invalidateLayer(layer);
continue;
} // the eles in the layer must be in the same continuous order, else the layer is invalid
var o = offset;
for (var j = 0; j < layer.eles.length; j++) {
if (layer.eles[j] !== eles[o + j]) {
// log('invalidate based on ordering', layer.id);
this.invalidateLayer(layer);
break;
}
}
}
};
LTCp.updateElementsInLayers = function (eles, update) {
var self = this;
var isEles = element(eles[0]); // collect udpated elements (cascaded from the layers) and update each
// layer itself along the way
for (var i = 0; i < eles.length; i++) {
var req = isEles ? null : eles[i];
var ele = isEles ? eles[i] : eles[i].ele;
var rs = ele._private.rscratch;
var caches = rs.imgLayerCaches = rs.imgLayerCaches || {};
for (var l = minLvl$1; l <= maxLvl$1; l++) {
var layer = caches[l];
if (!layer) {
continue;
} // if update is a request from the ele cache, then it affects only
// the matching level
if (req && self.getEleLevelForLayerLevel(layer.level) !== req.level) {
continue;
}
update(layer, ele, req);
}
}
};
LTCp.haveLayers = function () {
var self = this;
var haveLayers = false;
for (var l = minLvl$1; l <= maxLvl$1; l++) {
var layers = self.layersByLevel[l];
if (layers && layers.length > 0) {
haveLayers = true;
break;
}
}
return haveLayers;
};
LTCp.invalidateElements = function (eles) {
var self = this;
if (eles.length === 0) {
return;
}
self.lastInvalidationTime = performanceNow(); // log('update invalidate layer time from eles');
if (eles.length === 0 || !self.haveLayers()) {
return;
}
self.updateElementsInLayers(eles, function invalAssocLayers(layer, ele, req) {
self.invalidateLayer(layer);
});
};
LTCp.invalidateLayer = function (layer) {
// log('update invalidate layer time');
this.lastInvalidationTime = performanceNow();
if (layer.invalid) {
return;
} // save cycles
var lvl = layer.level;
var eles = layer.eles;
var layers = this.layersByLevel[lvl]; // log('invalidate layer', layer.id );
removeFromArray(layers, layer); // layer.eles = [];
layer.elesQueue = [];
layer.invalid = true;
if (layer.replacement) {
layer.replacement.invalid = true;
}
for (var i = 0; i < eles.length; i++) {
var caches = eles[i]._private.rscratch.imgLayerCaches;
if (caches) {
caches[lvl] = null;
}
}
};
LTCp.refineElementTextures = function (eles) {
var self = this; // log('refine', eles.length);
self.updateElementsInLayers(eles, function refineEachEle(layer, ele, req) {
var rLyr = layer.replacement;
if (!rLyr) {
rLyr = layer.replacement = self.makeLayer(layer.bb, layer.level);
rLyr.replaces = layer;
rLyr.eles = layer.eles; // log('make replacement layer %s for %s with level %s', rLyr.id, layer.id, rLyr.level);
}
if (!rLyr.reqs) {
for (var i = 0; i < rLyr.eles.length; i++) {
self.queueLayer(rLyr, rLyr.eles[i]);
} // log('queue replacement layer refinement', rLyr.id);
}
});
};
LTCp.enqueueElementRefinement = function (ele) {
this.eleTxrDeqs.merge(ele);
this.scheduleElementRefinement();
};
LTCp.queueLayer = function (layer, ele) {
var self = this;
var q = self.layersQueue;
var elesQ = layer.elesQueue;
var hasId = elesQ.hasId = elesQ.hasId || {}; // if a layer is going to be replaced, queuing is a waste of time
if (layer.replacement) {
return;
}
if (ele) {
if (hasId[ele.id()]) {
return;
}
elesQ.push(ele);
hasId[ele.id()] = true;
}
if (layer.reqs) {
layer.reqs++;
q.updateItem(layer);
} else {
layer.reqs = 1;
q.push(layer);
}
};
LTCp.dequeue = function (pxRatio) {
var self = this;
var q = self.layersQueue;
var deqd = [];
var eleDeqs = 0;
while (eleDeqs < maxDeqSize$1) {
if (q.size() === 0) {
break;
}
var layer = q.peek(); // if a layer has been or will be replaced, then don't waste time with it
if (layer.replacement) {
// log('layer %s in queue skipped b/c it already has a replacement', layer.id);
q.pop();
continue;
} // if this is a replacement layer that has been superceded, then forget it
if (layer.replaces && layer !== layer.replaces.replacement) {
// log('layer is no longer the most uptodate replacement; dequeued', layer.id)
q.pop();
continue;
}
if (layer.invalid) {
// log('replacement layer %s is invalid; dequeued', layer.id);
q.pop();
continue;
}
var ele = layer.elesQueue.shift();
if (ele) {
// log('dequeue layer %s', layer.id);
self.drawEleInLayer(layer, ele, layer.level, pxRatio);
eleDeqs++;
}
if (deqd.length === 0) {
// we need only one entry in deqd to queue redrawing etc
deqd.push(true);
} // if the layer has all its eles done, then remove from the queue
if (layer.elesQueue.length === 0) {
q.pop();
layer.reqs = 0; // log('dequeue of layer %s complete', layer.id);
// when a replacement layer is dequeued, it replaces the old layer in the level
if (layer.replaces) {
self.applyLayerReplacement(layer);
}
self.requestRedraw();
}
}
return deqd;
};
LTCp.applyLayerReplacement = function (layer) {
var self = this;
var layersInLevel = self.layersByLevel[layer.level];
var replaced = layer.replaces;
var index = layersInLevel.indexOf(replaced); // if the replaced layer is not in the active list for the level, then replacing
// refs would be a mistake (i.e. overwriting the true active layer)
if (index < 0 || replaced.invalid) {
// log('replacement layer would have no effect', layer.id);
return;
}
layersInLevel[index] = layer; // replace level ref
// replace refs in eles
for (var i = 0; i < layer.eles.length; i++) {
var _p = layer.eles[i]._private;
var cache = _p.imgLayerCaches = _p.imgLayerCaches || {};
if (cache) {
cache[layer.level] = layer;
}
} // log('apply replacement layer %s over %s', layer.id, replaced.id);
self.requestRedraw();
};
LTCp.requestRedraw = util$2(function () {
var r = this.renderer;
r.redrawHint('eles', true);
r.redrawHint('drag', true);
r.redraw();
}, 100);
LTCp.setupDequeueing = defs.setupDequeueing({
deqRedrawThreshold: deqRedrawThreshold$1,
deqCost: deqCost$1,
deqAvgCost: deqAvgCost$1,
deqNoDrawCost: deqNoDrawCost$1,
deqFastCost: deqFastCost$1,
deq: function deq(self, pxRatio) {
return self.dequeue(pxRatio);
},
onDeqd: noop$1,
shouldRedraw: trueify,
priority: function priority(self) {
return self.renderer.beforeRenderPriorities.lyrTxrDeq;
}
});
var CRp = {};
var impl;
function polygon(context, points) {
for (var i = 0; i < points.length; i++) {
var pt = points[i];
context.lineTo(pt.x, pt.y);
}
}
function triangleBackcurve(context, points, controlPoint) {
var firstPt;
for (var i = 0; i < points.length; i++) {
var pt = points[i];
if (i === 0) {
firstPt = pt;
}
context.lineTo(pt.x, pt.y);
}
context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y);
}
function triangleTee(context, trianglePoints, teePoints) {
if (context.beginPath) {
context.beginPath();
}
var triPts = trianglePoints;
for (var i = 0; i < triPts.length; i++) {
var pt = triPts[i];
context.lineTo(pt.x, pt.y);
}
var teePts = teePoints;
var firstTeePt = teePoints[0];
context.moveTo(firstTeePt.x, firstTeePt.y);
for (var i = 1; i < teePts.length; i++) {
var pt = teePts[i];
context.lineTo(pt.x, pt.y);
}
if (context.closePath) {
context.closePath();
}
}
function circleTriangle(context, trianglePoints, rx, ry, r) {
if (context.beginPath) {
context.beginPath();
}
context.arc(rx, ry, r, 0, Math.PI * 2, false);
var triPts = trianglePoints;
var firstTrPt = triPts[0];
context.moveTo(firstTrPt.x, firstTrPt.y);
for (var i = 0; i < triPts.length; i++) {
var pt = triPts[i];
context.lineTo(pt.x, pt.y);
}
if (context.closePath) {
context.closePath();
}
}
function circle(context, rx, ry, r) {
context.arc(rx, ry, r, 0, Math.PI * 2, false);
}
CRp.arrowShapeImpl = function (name) {
return (impl || (impl = {
'polygon': polygon,
'triangle-backcurve': triangleBackcurve,
'triangle-tee': triangleTee,
'circle-triangle': circleTriangle,
'triangle-cross': triangleTee,
'circle': circle
}))[name];
};
var CRp$1 = {};
CRp$1.drawElement = function (context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) {
var r = this;
if (ele.isNode()) {
r.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity);
} else {
r.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity);
}
};
CRp$1.drawElementOverlay = function (context, ele) {
var r = this;
if (ele.isNode()) {
r.drawNodeOverlay(context, ele);
} else {
r.drawEdgeOverlay(context, ele);
}
};
CRp$1.drawElementUnderlay = function (context, ele) {
var r = this;
if (ele.isNode()) {
r.drawNodeUnderlay(context, ele);
} else {
r.drawEdgeUnderlay(context, ele);
}
};
CRp$1.drawCachedElementPortion = function (context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity) {
var r = this;
var bb = eleTxrCache.getBoundingBox(ele);
if (bb.w === 0 || bb.h === 0) {
return;
} // ignore zero size case
var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason);
if (eleCache != null) {
var opacity = getOpacity(r, ele);
if (opacity === 0) {
return;
}
var theta = getRotation(r, ele);
var x1 = bb.x1,
y1 = bb.y1,
w = bb.w,
h = bb.h;
var x, y, sx, sy, smooth;
if (theta !== 0) {
var rotPt = eleTxrCache.getRotationPoint(ele);
sx = rotPt.x;
sy = rotPt.y;
context.translate(sx, sy);
context.rotate(theta);
smooth = r.getImgSmoothing(context);
if (!smooth) {
r.setImgSmoothing(context, true);
}
var off = eleTxrCache.getRotationOffset(ele);
x = off.x;
y = off.y;
} else {
x = x1;
y = y1;
}
var oldGlobalAlpha;
if (opacity !== 1) {
oldGlobalAlpha = context.globalAlpha;
context.globalAlpha = oldGlobalAlpha * opacity;
}
context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x, y, w, h);
if (opacity !== 1) {
context.globalAlpha = oldGlobalAlpha;
}
if (theta !== 0) {
context.rotate(-theta);
context.translate(-sx, -sy);
if (!smooth) {
r.setImgSmoothing(context, false);
}
}
} else {
eleTxrCache.drawElement(context, ele); // direct draw fallback
}
};
var getZeroRotation = function getZeroRotation() {
return 0;
};
var getLabelRotation = function getLabelRotation(r, ele) {
return r.getTextAngle(ele, null);
};
var getSourceLabelRotation = function getSourceLabelRotation(r, ele) {
return r.getTextAngle(ele, 'source');
};
var getTargetLabelRotation = function getTargetLabelRotation(r, ele) {
return r.getTextAngle(ele, 'target');
};
var getOpacity = function getOpacity(r, ele) {
return ele.effectiveOpacity();
};
var getTextOpacity = function getTextOpacity(e, ele) {
return ele.pstyle('text-opacity').pfValue * ele.effectiveOpacity();
};
CRp$1.drawCachedElement = function (context, ele, pxRatio, extent, lvl, requestHighQuality) {
var r = this;
var _r$data = r.data,
eleTxrCache = _r$data.eleTxrCache,
lblTxrCache = _r$data.lblTxrCache,
slbTxrCache = _r$data.slbTxrCache,
tlbTxrCache = _r$data.tlbTxrCache;
var bb = ele.boundingBox();
var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null;
if (bb.w === 0 || bb.h === 0 || !ele.visible()) {
return;
}
if (!extent || boundingBoxesIntersect(bb, extent)) {
var isEdge = ele.isEdge();
var badLine = ele.element()._private.rscratch.badLine;
r.drawElementUnderlay(context, ele);
r.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity);
if (!isEdge || !badLine) {
r.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity);
}
if (isEdge && !badLine) {
r.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity);
r.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity);
}
r.drawElementOverlay(context, ele);
}
};
CRp$1.drawElements = function (context, eles) {
var r = this;
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
r.drawElement(context, ele);
}
};
CRp$1.drawCachedElements = function (context, eles, pxRatio, extent) {
var r = this;
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
r.drawCachedElement(context, ele, pxRatio, extent);
}
};
CRp$1.drawCachedNodes = function (context, eles, pxRatio, extent) {
var r = this;
for (var i = 0; i < eles.length; i++) {
var ele = eles[i];
if (!ele.isNode()) {
continue;
}
r.drawCachedElement(context, ele, pxRatio, extent);
}
};
CRp$1.drawLayeredElements = function (context, eles, pxRatio, extent) {
var r = this;
var layers = r.data.lyrTxrCache.getLayers(eles, pxRatio);
if (layers) {
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
var bb = layer.bb;
if (bb.w === 0 || bb.h === 0) {
continue;
}
context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h);
}
} else {
// fall back on plain caching if no layers
r.drawCachedElements(context, eles, pxRatio, extent);
}
};
/* global Path2D */
var CRp$2 = {};
CRp$2.drawEdge = function (context, edge, shiftToOriginWithBb) {
var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
var r = this;
var rs = edge._private.rscratch;
if (shouldDrawOpacity && !edge.visible()) {
return;
} // if bezier ctrl pts can not be calculated, then die
if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) {
// isNaN in case edge is impossible and browser bugs (e.g. safari)
return;
}
var bb;
if (shiftToOriginWithBb) {
bb = shiftToOriginWithBb;
context.translate(-bb.x1, -bb.y1);
}
var opacity = shouldDrawOpacity ? edge.pstyle('opacity').value : 1;
var lineOpacity = shouldDrawOpacity ? edge.pstyle('line-opacity').value : 1;
var curveStyle = edge.pstyle('curve-style').value;
var lineStyle = edge.pstyle('line-style').value;
var edgeWidth = edge.pstyle('width').pfValue;
var lineCap = edge.pstyle('line-cap').value;
var effectiveLineOpacity = opacity * lineOpacity; // separate arrow opacity would require arrow-opacity property
var effectiveArrowOpacity = opacity * lineOpacity;
var drawLine = function drawLine() {
var strokeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveLineOpacity;
if (curveStyle === 'straight-triangle') {
r.eleStrokeStyle(context, edge, strokeOpacity);
r.drawEdgeTrianglePath(edge, context, rs.allpts);
} else {
context.lineWidth = edgeWidth;
context.lineCap = lineCap;
r.eleStrokeStyle(context, edge, strokeOpacity);
r.drawEdgePath(edge, context, rs.allpts, lineStyle);
context.lineCap = 'butt'; // reset for other drawing functions
}
};
var drawOverlay = function drawOverlay() {
if (!shouldDrawOverlay) {
return;
}
r.drawEdgeOverlay(context, edge);
};
var drawUnderlay = function drawUnderlay() {
if (!shouldDrawOverlay) {
return;
}
r.drawEdgeUnderlay(context, edge);
};
var drawArrows = function drawArrows() {
var arrowOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveArrowOpacity;
r.drawArrowheads(context, edge, arrowOpacity);
};
var drawText = function drawText() {
r.drawElementText(context, edge, null, drawLabel);
};
context.lineJoin = 'round';
var ghost = edge.pstyle('ghost').value === 'yes';
if (ghost) {
var gx = edge.pstyle('ghost-offset-x').pfValue;
var gy = edge.pstyle('ghost-offset-y').pfValue;
var ghostOpacity = edge.pstyle('ghost-opacity').value;
var effectiveGhostOpacity = effectiveLineOpacity * ghostOpacity;
context.translate(gx, gy);
drawLine(effectiveGhostOpacity);
drawArrows(effectiveGhostOpacity);
context.translate(-gx, -gy);
}
drawUnderlay();
drawLine();
drawArrows();
drawOverlay();
drawText();
if (shiftToOriginWithBb) {
context.translate(bb.x1, bb.y1);
}
};
var drawEdgeOverlayUnderlay = function drawEdgeOverlayUnderlay(overlayOrUnderlay) {
if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) {
throw new Error('Invalid state');
}
return function (context, edge) {
if (!edge.visible()) {
return;
}
var opacity = edge.pstyle("".concat(overlayOrUnderlay, "-opacity")).value;
if (opacity === 0) {
return;
}
var r = this;
var usePaths = r.usePaths();
var rs = edge._private.rscratch;
var padding = edge.pstyle("".concat(overlayOrUnderlay, "-padding")).pfValue;
var width = 2 * padding;
var color = edge.pstyle("".concat(overlayOrUnderlay, "-color")).value;
context.lineWidth = width;
if (rs.edgeType === 'self' && !usePaths) {
context.lineCap = 'butt';
} else {
context.lineCap = 'round';
}
r.colorStrokeStyle(context, color[0], color[1], color[2], opacity);
r.drawEdgePath(edge, context, rs.allpts, 'solid');
};
};
CRp$2.drawEdgeOverlay = drawEdgeOverlayUnderlay('overlay');
CRp$2.drawEdgeUnderlay = drawEdgeOverlayUnderlay('underlay');
CRp$2.drawEdgePath = function (edge, context, pts, type) {
var rs = edge._private.rscratch;
var canvasCxt = context;
var path;
var pathCacheHit = false;
var usePaths = this.usePaths();
var lineDashPattern = edge.pstyle('line-dash-pattern').pfValue;
var lineDashOffset = edge.pstyle('line-dash-offset').pfValue;
if (usePaths) {
var pathCacheKey = pts.join('$');
var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey;
if (keyMatches) {
path = context = rs.pathCache;
pathCacheHit = true;
} else {
path = context = new Path2D();
rs.pathCacheKey = pathCacheKey;
rs.pathCache = path;
}
}
if (canvasCxt.setLineDash) {
// for very outofdate browsers
switch (type) {
case 'dotted':
canvasCxt.setLineDash([1, 1]);
break;
case 'dashed':
canvasCxt.setLineDash(lineDashPattern);
canvasCxt.lineDashOffset = lineDashOffset;
break;
case 'solid':
canvasCxt.setLineDash([]);
break;
}
}
if (!pathCacheHit && !rs.badLine) {
if (context.beginPath) {
context.beginPath();
}
context.moveTo(pts[0], pts[1]);
switch (rs.edgeType) {
case 'bezier':
case 'self':
case 'compound':
case 'multibezier':
for (var i = 2; i + 3 < pts.length; i += 4) {
context.quadraticCurveTo(pts[i], pts[i + 1], pts[i + 2], pts[i + 3]);
}
break;
case 'straight':
case 'segments':
case 'haystack':
for (var _i = 2; _i + 1 < pts.length; _i += 2) {
context.lineTo(pts[_i], pts[_i + 1]);
}
break;
}
}
context = canvasCxt;
if (usePaths) {
context.stroke(path);
} else {
context.stroke();
} // reset any line dashes
if (context.setLineDash) {
// for very outofdate browsers
context.setLineDash([]);
}
};
CRp$2.drawEdgeTrianglePath = function (edge, context, pts) {
// use line stroke style for triangle fill style
context.fillStyle = context.strokeStyle;
var edgeWidth = edge.pstyle('width').pfValue;
for (var i = 0; i + 1 < pts.length; i += 2) {
var vector = [pts[i + 2] - pts[i], pts[i + 3] - pts[i + 1]];
var length = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);
var normal = [vector[1] / length, -vector[0] / length];
var triangleHead = [normal[0] * edgeWidth / 2, normal[1] * edgeWidth / 2];
context.beginPath();
context.moveTo(pts[i] - triangleHead[0], pts[i + 1] - triangleHead[1]);
context.lineTo(pts[i] + triangleHead[0], pts[i + 1] + triangleHead[1]);
context.lineTo(pts[i + 2], pts[i + 3]);
context.closePath();
context.fill();
}
};
CRp$2.drawArrowheads = function (context, edge, opacity) {
var rs = edge._private.rscratch;
var isHaystack = rs.edgeType === 'haystack';
if (!isHaystack) {
this.drawArrowhead(context, edge, 'source', rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity);
}
this.drawArrowhead(context, edge, 'mid-target', rs.midX, rs.midY, rs.midtgtArrowAngle, opacity);
this.drawArrowhead(context, edge, 'mid-source', rs.midX, rs.midY, rs.midsrcArrowAngle, opacity);
if (!isHaystack) {
this.drawArrowhead(context, edge, 'target', rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity);
}
};
CRp$2.drawArrowhead = function (context, edge, prefix, x, y, angle, opacity) {
if (isNaN(x) || x == null || isNaN(y) || y == null || isNaN(angle) || angle == null) {
return;
}
var self = this;
var arrowShape = edge.pstyle(prefix + '-arrow-shape').value;
if (arrowShape === 'none') {
return;
}
var arrowClearFill = edge.pstyle(prefix + '-arrow-fill').value === 'hollow' ? 'both' : 'filled';
var arrowFill = edge.pstyle(prefix + '-arrow-fill').value;
var edgeWidth = edge.pstyle('width').pfValue;
var edgeOpacity = edge.pstyle('opacity').value;
if (opacity === undefined) {
opacity = edgeOpacity;
}
var gco = context.globalCompositeOperation;
if (opacity !== 1 || arrowFill === 'hollow') {
// then extra clear is needed
context.globalCompositeOperation = 'destination-out';
self.colorFillStyle(context, 255, 255, 255, 1);
self.colorStrokeStyle(context, 255, 255, 255, 1);
self.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, x, y, angle);
context.globalCompositeOperation = gco;
} // otherwise, the opaque arrow clears it for free :)
var color = edge.pstyle(prefix + '-arrow-color').value;
self.colorFillStyle(context, color[0], color[1], color[2], opacity);
self.colorStrokeStyle(context, color[0], color[1], color[2], opacity);
self.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, x, y, angle);
};
CRp$2.drawArrowShape = function (edge, context, fill, edgeWidth, shape, x, y, angle) {
var r = this;
var usePaths = this.usePaths() && shape !== 'triangle-cross';
var pathCacheHit = false;
var path;
var canvasContext = context;
var translation = {
x: x,
y: y
};
var scale = edge.pstyle('arrow-scale').value;
var size = this.getArrowWidth(edgeWidth, scale);
var shapeImpl = r.arrowShapes[shape];
if (usePaths) {
var cache = r.arrowPathCache = r.arrowPathCache || [];
var key = hashString(shape);
var cachedPath = cache[key];
if (cachedPath != null) {
path = context = cachedPath;
pathCacheHit = true;
} else {
path = context = new Path2D();
cache[key] = path;
}
}
if (!pathCacheHit) {
if (context.beginPath) {
context.beginPath();
}
if (usePaths) {
// store in the path cache with values easily manipulated later
shapeImpl.draw(context, 1, 0, {
x: 0,
y: 0
}, 1);
} else {
shapeImpl.draw(context, size, angle, translation, edgeWidth);
}
if (context.closePath) {
context.closePath();
}
}
context = canvasContext;
if (usePaths) {
// set transform to arrow position/orientation
context.translate(x, y);
context.rotate(angle);
context.scale(size, size);
}
if (fill === 'filled' || fill === 'both') {
if (usePaths) {
context.fill(path);
} else {
context.fill();
}
}
if (fill === 'hollow' || fill === 'both') {
context.lineWidth = (shapeImpl.matchEdgeWidth ? edgeWidth : 1) / (usePaths ? size : 1);
context.lineJoin = 'miter';
if (usePaths) {
context.stroke(path);
} else {
context.stroke();
}
}
if (usePaths) {
// reset transform by applying inverse
context.scale(1 / size, 1 / size);
context.rotate(-angle);
context.translate(-x, -y);
}
};
var CRp$3 = {};
CRp$3.safeDrawImage = function (context, img, ix, iy, iw, ih, x, y, w, h) {
// detect problematic cases for old browsers with bad images (cheaper than try-catch)
if (iw <= 0 || ih <= 0 || w <= 0 || h <= 0) {
return;
}
context.drawImage(img, ix, iy, iw, ih, x, y, w, h);
};
CRp$3.drawInscribedImage = function (context, img, node, index, nodeOpacity) {
var r = this;
var pos = node.position();
var nodeX = pos.x;
var nodeY = pos.y;
var styleObj = node.cy().style();
var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj);
var fit = getIndexedStyle(node, 'background-fit', 'value', index);
var repeat = getIndexedStyle(node, 'background-repeat', 'value', index);
var nodeW = node.width();
var nodeH = node.height();
var paddingX2 = node.padding() * 2;
var nodeTW = nodeW + (getIndexedStyle(node, 'background-width-relative-to', 'value', index) === 'inner' ? 0 : paddingX2);
var nodeTH = nodeH + (getIndexedStyle(node, 'background-height-relative-to', 'value', index) === 'inner' ? 0 : paddingX2);
var rs = node._private.rscratch;
var clip = getIndexedStyle(node, 'background-clip', 'value', index);
var shouldClip = clip === 'node';
var imgOpacity = getIndexedStyle(node, 'background-image-opacity', 'value', index) * nodeOpacity;
var smooth = getIndexedStyle(node, 'background-image-smoothing', 'value', index);
var imgW = img.width || img.cachedW;
var imgH = img.height || img.cachedH; // workaround for broken browsers like ie
if (null == imgW || null == imgH) {
document.body.appendChild(img); // eslint-disable-line no-undef
imgW = img.cachedW = img.width || img.offsetWidth;
imgH = img.cachedH = img.height || img.offsetHeight;
document.body.removeChild(img); // eslint-disable-line no-undef
}
var w = imgW;
var h = imgH;
if (getIndexedStyle(node, 'background-width', 'value', index) !== 'auto') {
if (getIndexedStyle(node, 'background-width', 'units', index) === '%') {
w = getIndexedStyle(node, 'background-width', 'pfValue', index) * nodeTW;
} else {
w = getIndexedStyle(node, 'background-width', 'pfValue', index);
}
}
if (getIndexedStyle(node, 'background-height', 'value', index) !== 'auto') {
if (getIndexedStyle(node, 'background-height', 'units', index) === '%') {
h = getIndexedStyle(node, 'background-height', 'pfValue', index) * nodeTH;
} else {
h = getIndexedStyle(node, 'background-height', 'pfValue', index);
}
}
if (w === 0 || h === 0) {
return; // no point in drawing empty image (and chrome is broken in this case)
}
if (fit === 'contain') {
var scale = Math.min(nodeTW / w, nodeTH / h);
w *= scale;
h *= scale;
} else if (fit === 'cover') {
var scale = Math.max(nodeTW / w, nodeTH / h);
w *= scale;
h *= scale;
}
var x = nodeX - nodeTW / 2; // left
var posXUnits = getIndexedStyle(node, 'background-position-x', 'units', index);
var posXPfVal = getIndexedStyle(node, 'background-position-x', 'pfValue', index);
if (posXUnits === '%') {
x += (nodeTW - w) * posXPfVal;
} else {
x += posXPfVal;
}
var offXUnits = getIndexedStyle(node, 'background-offset-x', 'units', index);
var offXPfVal = getIndexedStyle(node, 'background-offset-x', 'pfValue', index);
if (offXUnits === '%') {
x += (nodeTW - w) * offXPfVal;
} else {
x += offXPfVal;
}
var y = nodeY - nodeTH / 2; // top
var posYUnits = getIndexedStyle(node, 'background-position-y', 'units', index);
var posYPfVal = getIndexedStyle(node, 'background-position-y', 'pfValue', index);
if (posYUnits === '%') {
y += (nodeTH - h) * posYPfVal;
} else {
y += posYPfVal;
}
var offYUnits = getIndexedStyle(node, 'background-offset-y', 'units', index);
var offYPfVal = getIndexedStyle(node, 'background-offset-y', 'pfValue', index);
if (offYUnits === '%') {
y += (nodeTH - h) * offYPfVal;
} else {
y += offYPfVal;
}
if (rs.pathCache) {
x -= nodeX;
y -= nodeY;
nodeX = 0;
nodeY = 0;
}
var gAlpha = context.globalAlpha;
context.globalAlpha = imgOpacity;
var smoothingEnabled = r.getImgSmoothing(context);
var isSmoothingSwitched = false;
if (smooth === 'no' && smoothingEnabled) {
r.setImgSmoothing(context, false);
isSmoothingSwitched = true;
} else if (smooth === 'yes' && !smoothingEnabled) {
r.setImgSmoothing(context, true);
isSmoothingSwitched = true;
}
if (repeat === 'no-repeat') {
if (shouldClip) {
context.save();
if (rs.pathCache) {
context.clip(rs.pathCache);
} else {
r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH);
context.clip();
}
}
r.safeDrawImage(context, img, 0, 0, imgW, imgH, x, y, w, h);
if (shouldClip) {
context.restore();
}
} else {
var pattern = context.createPattern(img, repeat);
context.fillStyle = pattern;
r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH);
context.translate(x, y);
context.fill();
context.translate(-x, -y);
}
context.globalAlpha = gAlpha;
if (isSmoothingSwitched) {
r.setImgSmoothing(context, smoothingEnabled);
}
};
var CRp$4 = {};
CRp$4.eleTextBiggerThanMin = function (ele, scale) {
if (!scale) {
var zoom = ele.cy().zoom();
var pxRatio = this.getPixelRatio();
var lvl = Math.ceil(log2(zoom * pxRatio)); // the effective texture level
scale = Math.pow(2, lvl);
}
var computedSize = ele.pstyle('font-size').pfValue * scale;
var minSize = ele.pstyle('min-zoomed-font-size').pfValue;
if (computedSize < minSize) {
return false;
}
return true;
};
CRp$4.drawElementText = function (context, ele, shiftToOriginWithBb, force, prefix) {
var useEleOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
var r = this;
if (force == null) {
if (useEleOpacity && !r.eleTextBiggerThanMin(ele)) {
return;
}
} else if (force === false) {
return;
}
if (ele.isNode()) {
var label = ele.pstyle('label');
if (!label || !label.value) {
return;
}
var justification = r.getLabelJustification(ele);
context.textAlign = justification;
context.textBaseline = 'bottom';
} else {
var badLine = ele.element()._private.rscratch.badLine;
var _label = ele.pstyle('label');
var srcLabel = ele.pstyle('source-label');
var tgtLabel = ele.pstyle('target-label');
if (badLine || (!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) {
return;
}
context.textAlign = 'center';
context.textBaseline = 'bottom';
}
var applyRotation = !shiftToOriginWithBb;
var bb;
if (shiftToOriginWithBb) {
bb = shiftToOriginWithBb;
context.translate(-bb.x1, -bb.y1);
}
if (prefix == null) {
r.drawText(context, ele, null, applyRotation, useEleOpacity);
if (ele.isEdge()) {
r.drawText(context, ele, 'source', applyRotation, useEleOpacity);
r.drawText(context, ele, 'target', applyRotation, useEleOpacity);
}
} else {
r.drawText(context, ele, prefix, applyRotation, useEleOpacity);
}
if (shiftToOriginWithBb) {
context.translate(bb.x1, bb.y1);
}
};
CRp$4.getFontCache = function (context) {
var cache;
this.fontCaches = this.fontCaches || [];
for (var i = 0; i < this.fontCaches.length; i++) {
cache = this.fontCaches[i];
if (cache.context === context) {
return cache;
}
}
cache = {
context: context
};
this.fontCaches.push(cache);
return cache;
}; // set up canvas context with font
// returns transformed text string
CRp$4.setupTextStyle = function (context, ele) {
var useEleOpacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
// Font style
var labelStyle = ele.pstyle('font-style').strValue;
var labelSize = ele.pstyle('font-size').pfValue + 'px';
var labelFamily = ele.pstyle('font-family').strValue;
var labelWeight = ele.pstyle('font-weight').strValue;
var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle('text-opacity').value : 1;
var outlineOpacity = ele.pstyle('text-outline-opacity').value * opacity;
var color = ele.pstyle('color').value;
var outlineColor = ele.pstyle('text-outline-color').value;
context.font = labelStyle + ' ' + labelWeight + ' ' + labelSize + ' ' + labelFamily;
context.lineJoin = 'round'; // so text outlines aren't jagged
this.colorFillStyle(context, color[0], color[1], color[2], opacity);
this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity);
}; // TODO ensure re-used
function roundRect(ctx, x, y, width, height) {
var radius = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 5;
ctx.beginPath();
ctx.moveTo(x + radius, y);
ctx.lineTo(x + width - radius, y);
ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
ctx.lineTo(x + width, y + height - radius);
ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
ctx.lineTo(x + radius, y + height);
ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
ctx.lineTo(x, y + radius);
ctx.quadraticCurveTo(x, y, x + radius, y);
ctx.closePath();
ctx.fill();
}
CRp$4.getTextAngle = function (ele, prefix) {
var theta;
var _p = ele._private;
var rscratch = _p.rscratch;
var pdash = prefix ? prefix + '-' : '';
var rotation = ele.pstyle(pdash + 'text-rotation');
var textAngle = getPrefixedProperty(rscratch, 'labelAngle', prefix);
if (rotation.strValue === 'autorotate') {
theta = ele.isEdge() ? textAngle : 0;
} else if (rotation.strValue === 'none') {
theta = 0;
} else {
theta = rotation.pfValue;
}
return theta;
};
CRp$4.drawText = function (context, ele, prefix) {
var applyRotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
var useEleOpacity = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
var _p = ele._private;
var rscratch = _p.rscratch;
var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1;
if (useEleOpacity && (parentOpacity === 0 || ele.pstyle('text-opacity').value === 0)) {
return;
} // use 'main' as an alias for the main label (i.e. null prefix)
if (prefix === 'main') {
prefix = null;
}
var textX = getPrefixedProperty(rscratch, 'labelX', prefix);
var textY = getPrefixedProperty(rscratch, 'labelY', prefix);
var orgTextX, orgTextY; // used for rotation
var text = this.getLabelText(ele, prefix);
if (text != null && text !== '' && !isNaN(textX) && !isNaN(textY)) {
this.setupTextStyle(context, ele, useEleOpacity);
var pdash = prefix ? prefix + '-' : '';
var textW = getPrefixedProperty(rscratch, 'labelWidth', prefix);
var textH = getPrefixedProperty(rscratch, 'labelHeight', prefix);
var marginX = ele.pstyle(pdash + 'text-margin-x').pfValue;
var marginY = ele.pstyle(pdash + 'text-margin-y').pfValue;
var isEdge = ele.isEdge();
var halign = ele.pstyle('text-halign').value;
var valign = ele.pstyle('text-valign').value;
if (isEdge) {
halign = 'center';
valign = 'center';
}
textX += marginX;
textY += marginY;
var theta;
if (!applyRotation) {
theta = 0;
} else {
theta = this.getTextAngle(ele, prefix);
}
if (theta !== 0) {
orgTextX = textX;
orgTextY = textY;
context.translate(orgTextX, orgTextY);
context.rotate(theta);
textX = 0;
textY = 0;
}
switch (valign) {
case 'top':
break;
case 'center':
textY += textH / 2;
break;
case 'bottom':
textY += textH;
break;
}
var backgroundOpacity = ele.pstyle('text-background-opacity').value;
var borderOpacity = ele.pstyle('text-border-opacity').value;
var textBorderWidth = ele.pstyle('text-border-width').pfValue;
var backgroundPadding = ele.pstyle('text-background-padding').pfValue;
if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) {
var bgX = textX - backgroundPadding;
switch (halign) {
case 'left':
bgX -= textW;
break;
case 'center':
bgX -= textW / 2;
break;
}
var bgY = textY - textH - backgroundPadding;
var bgW = textW + 2 * backgroundPadding;
var bgH = textH + 2 * backgroundPadding;
if (backgroundOpacity > 0) {
var textFill = context.fillStyle;
var textBackgroundColor = ele.pstyle('text-background-color').value;
context.fillStyle = 'rgba(' + textBackgroundColor[0] + ',' + textBackgroundColor[1] + ',' + textBackgroundColor[2] + ',' + backgroundOpacity * parentOpacity + ')';
var styleShape = ele.pstyle('text-background-shape').strValue;
if (styleShape.indexOf('round') === 0) {
roundRect(context, bgX, bgY, bgW, bgH, 2);
} else {
context.fillRect(bgX, bgY, bgW, bgH);
}
context.fillStyle = textFill;
}
if (textBorderWidth > 0 && borderOpacity > 0) {
var textStroke = context.strokeStyle;
var textLineWidth = context.lineWidth;
var textBorderColor = ele.pstyle('text-border-color').value;
var textBorderStyle = ele.pstyle('text-border-style').value;
context.strokeStyle = 'rgba(' + textBorderColor[0] + ',' + textBorderColor[1] + ',' + textBorderColor[2] + ',' + borderOpacity * parentOpacity + ')';
context.lineWidth = textBorderWidth;
if (context.setLineDash) {
// for very outofdate browsers
switch (textBorderStyle) {
case 'dotted':
context.setLineDash([1, 1]);
break;
case 'dashed':
context.setLineDash([4, 2]);
break;
case 'double':
context.lineWidth = textBorderWidth / 4; // 50% reserved for white between the two borders
context.setLineDash([]);
break;
case 'solid':
context.setLineDash([]);
break;
}
}
context.strokeRect(bgX, bgY, bgW, bgH);
if (textBorderStyle === 'double') {
var whiteWidth = textBorderWidth / 2;
context.strokeRect(bgX + whiteWidth, bgY + whiteWidth, bgW - whiteWidth * 2, bgH - whiteWidth * 2);
}
if (context.setLineDash) {
// for very outofdate browsers
context.setLineDash([]);
}
context.lineWidth = textLineWidth;
context.strokeStyle = textStroke;
}
}
var lineWidth = 2 * ele.pstyle('text-outline-width').pfValue; // *2 b/c the stroke is drawn centred on the middle
if (lineWidth > 0) {
context.lineWidth = lineWidth;
}
if (ele.pstyle('text-wrap').value === 'wrap') {
var lines = getPrefixedProperty(rscratch, 'labelWrapCachedLines', prefix);
var lineHeight = getPrefixedProperty(rscratch, 'labelLineHeight', prefix);
var halfTextW = textW / 2;
var justification = this.getLabelJustification(ele);
if (justification === 'auto') ; else if (halign === 'left') {
// auto justification : right
if (justification === 'left') {
textX += -textW;
} else if (justification === 'center') {
textX += -halfTextW;
} // else same as auto
} else if (halign === 'center') {
// auto justfication : center
if (justification === 'left') {
textX += -halfTextW;
} else if (justification === 'right') {
textX += halfTextW;
} // else same as auto
} else if (halign === 'right') {
// auto justification : left
if (justification === 'center') {
textX += halfTextW;
} else if (justification === 'right') {
textX += textW;
} // else same as auto
}
switch (valign) {
case 'top':
textY -= (lines.length - 1) * lineHeight;
break;
case 'center':
case 'bottom':
textY -= (lines.length - 1) * lineHeight;
break;
}
for (var l = 0; l < lines.length; l++) {
if (lineWidth > 0) {
context.strokeText(lines[l], textX, textY);
}
context.fillText(lines[l], textX, textY);
textY += lineHeight;
}
} else {
if (lineWidth > 0) {
context.strokeText(text, textX, textY);
}
context.fillText(text, textX, textY);
}
if (theta !== 0) {
context.rotate(-theta);
context.translate(-orgTextX, -orgTextY);
}
}
};
/* global Path2D */
var CRp$5 = {};
CRp$5.drawNode = function (context, node, shiftToOriginWithBb) {
var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
var r = this;
var nodeWidth, nodeHeight;
var _p = node._private;
var rs = _p.rscratch;
var pos = node.position();
if (!number(pos.x) || !number(pos.y)) {
return; // can't draw node with undefined position
}
if (shouldDrawOpacity && !node.visible()) {
return;
}
var eleOpacity = shouldDrawOpacity ? node.effectiveOpacity() : 1;
var usePaths = r.usePaths();
var path;
var pathCacheHit = false;
var padding = node.padding();
nodeWidth = node.width() + 2 * padding;
nodeHeight = node.height() + 2 * padding; //
// setup shift
var bb;
if (shiftToOriginWithBb) {
bb = shiftToOriginWithBb;
context.translate(-bb.x1, -bb.y1);
} //
// load bg image
var bgImgProp = node.pstyle('background-image');
var urls = bgImgProp.value;
var urlDefined = new Array(urls.length);
var image = new Array(urls.length);
var numImages = 0;
for (var i = 0; i < urls.length; i++) {
var url = urls[i];
var defd = urlDefined[i] = url != null && url !== 'none';
if (defd) {
var bgImgCrossOrigin = node.cy().style().getIndexedStyle(node, 'background-image-crossorigin', 'value', i);
numImages++; // get image, and if not loaded then ask to redraw when later loaded
image[i] = r.getCachedImage(url, bgImgCrossOrigin, function () {
_p.backgroundTimestamp = Date.now();
node.emitAndNotify('background');
});
}
} //
// setup styles
var darkness = node.pstyle('background-blacken').value;
var borderWidth = node.pstyle('border-width').pfValue;
var bgOpacity = node.pstyle('background-opacity').value * eleOpacity;
var borderColor = node.pstyle('border-color').value;
var borderStyle = node.pstyle('border-style').value;
var borderOpacity = node.pstyle('border-opacity').value * eleOpacity;
context.lineJoin = 'miter'; // so borders are square with the node shape
var setupShapeColor = function setupShapeColor() {
var bgOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : bgOpacity;
r.eleFillStyle(context, node, bgOpy);
};
var setupBorderColor = function setupBorderColor() {
var bdrOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : borderOpacity;
r.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy);
}; //
// setup shape
var styleShape = node.pstyle('shape').strValue;
var shapePts = node.pstyle('shape-polygon-points').pfValue;
if (usePaths) {
context.translate(pos.x, pos.y);
var pathCache = r.nodePathCache = r.nodePathCache || [];
var key = hashStrings(styleShape === 'polygon' ? styleShape + ',' + shapePts.join(',') : styleShape, '' + nodeHeight, '' + nodeWidth);
var cachedPath = pathCache[key];
if (cachedPath != null) {
path = cachedPath;
pathCacheHit = true;
rs.pathCache = path;
} else {
path = new Path2D();
pathCache[key] = rs.pathCache = path;
}
}
var drawShape = function drawShape() {
if (!pathCacheHit) {
var npos = pos;
if (usePaths) {
npos = {
x: 0,
y: 0
};
}
r.nodeShapes[r.getNodeShape(node)].draw(path || context, npos.x, npos.y, nodeWidth, nodeHeight);
}
if (usePaths) {
context.fill(path);
} else {
context.fill();
}
};
var drawImages = function drawImages() {
var nodeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity;
var inside = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var prevBging = _p.backgrounding;
var totalCompleted = 0;
for (var _i = 0; _i < image.length; _i++) {
var bgContainment = node.cy().style().getIndexedStyle(node, 'background-image-containment', 'value', _i);
if (inside && bgContainment === 'over' || !inside && bgContainment === 'inside') {
totalCompleted++;
continue;
}
if (urlDefined[_i] && image[_i].complete && !image[_i].error) {
totalCompleted++;
r.drawInscribedImage(context, image[_i], node, _i, nodeOpacity);
}
}
_p.backgrounding = !(totalCompleted === numImages);
if (prevBging !== _p.backgrounding) {
// update style b/c :backgrounding state changed
node.updateStyle(false);
}
};
var drawPie = function drawPie() {
var redrawShape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var pieOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : eleOpacity;
if (r.hasPie(node)) {
r.drawPie(context, node, pieOpacity); // redraw/restore path if steps after pie need it
if (redrawShape) {
if (!usePaths) {
r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight);
}
}
}
};
var darken = function darken() {
var darkenOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity;
var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity;
var c = darkness > 0 ? 0 : 255;
if (darkness !== 0) {
r.colorFillStyle(context, c, c, c, opacity);
if (usePaths) {
context.fill(path);
} else {
context.fill();
}
}
};
var drawBorder = function drawBorder() {
if (borderWidth > 0) {
context.lineWidth = borderWidth;
context.lineCap = 'butt';
if (context.setLineDash) {
// for very outofdate browsers
switch (borderStyle) {
case 'dotted':
context.setLineDash([1, 1]);
break;
case 'dashed':
context.setLineDash([4, 2]);
break;
case 'solid':
case 'double':
context.setLineDash([]);
break;
}
}
if (usePaths) {
context.stroke(path);
} else {
context.stroke();
}
if (borderStyle === 'double') {
context.lineWidth = borderWidth / 3;
var gco = context.globalCompositeOperation;
context.globalCompositeOperation = 'destination-out';
if (usePaths) {
context.stroke(path);
} else {
context.stroke();
}
context.globalCompositeOperation = gco;
} // reset in case we changed the border style
if (context.setLineDash) {
// for very outofdate browsers
context.setLineDash([]);
}
}
};
var drawOverlay = function drawOverlay() {
if (shouldDrawOverlay) {
r.drawNodeOverlay(context, node, pos, nodeWidth, nodeHeight);
}
};
var drawUnderlay = function drawUnderlay() {
if (shouldDrawOverlay) {
r.drawNodeUnderlay(context, node, pos, nodeWidth, nodeHeight);
}
};
var drawText = function drawText() {
r.drawElementText(context, node, null, drawLabel);
};
var ghost = node.pstyle('ghost').value === 'yes';
if (ghost) {
var gx = node.pstyle('ghost-offset-x').pfValue;
var gy = node.pstyle('ghost-offset-y').pfValue;
var ghostOpacity = node.pstyle('ghost-opacity').value;
var effGhostOpacity = ghostOpacity * eleOpacity;
context.translate(gx, gy);
setupShapeColor(ghostOpacity * bgOpacity);
drawShape();
drawImages(effGhostOpacity, true);
setupBorderColor(ghostOpacity * borderOpacity);
drawBorder();
drawPie(darkness !== 0 || borderWidth !== 0);
drawImages(effGhostOpacity, false);
darken(effGhostOpacity);
context.translate(-gx, -gy);
}
if (usePaths) {
context.translate(-pos.x, -pos.y);
}
drawUnderlay();
if (usePaths) {
context.translate(pos.x, pos.y);
}
setupShapeColor();
drawShape();
drawImages(eleOpacity, true);
setupBorderColor();
drawBorder();
drawPie(darkness !== 0 || borderWidth !== 0);
drawImages(eleOpacity, false);
darken();
if (usePaths) {
context.translate(-pos.x, -pos.y);
}
drawText();
drawOverlay(); //
// clean up shift
if (shiftToOriginWithBb) {
context.translate(bb.x1, bb.y1);
}
};
var drawNodeOverlayUnderlay = function drawNodeOverlayUnderlay(overlayOrUnderlay) {
if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) {
throw new Error('Invalid state');
}
return function (context, node, pos, nodeWidth, nodeHeight) {
var r = this;
if (!node.visible()) {
return;
}
var padding = node.pstyle("".concat(overlayOrUnderlay, "-padding")).pfValue;
var opacity = node.pstyle("".concat(overlayOrUnderlay, "-opacity")).value;
var color = node.pstyle("".concat(overlayOrUnderlay, "-color")).value;
var shape = node.pstyle("".concat(overlayOrUnderlay, "-shape")).value;
if (opacity > 0) {
pos = pos || node.position();
if (nodeWidth == null || nodeHeight == null) {
var _padding = node.padding();
nodeWidth = node.width() + 2 * _padding;
nodeHeight = node.height() + 2 * _padding;
}
r.colorFillStyle(context, color[0], color[1], color[2], opacity);
r.nodeShapes[shape].draw(context, pos.x, pos.y, nodeWidth + padding * 2, nodeHeight + padding * 2);
context.fill();
}
};
};
CRp$5.drawNodeOverlay = drawNodeOverlayUnderlay('overlay');
CRp$5.drawNodeUnderlay = drawNodeOverlayUnderlay('underlay'); // does the node have at least one pie piece?
CRp$5.hasPie = function (node) {
node = node[0]; // ensure ele ref
return node._private.hasPie;
};
CRp$5.drawPie = function (context, node, nodeOpacity, pos) {
node = node[0]; // ensure ele ref
pos = pos || node.position();
var cyStyle = node.cy().style();
var pieSize = node.pstyle('pie-size');
var x = pos.x;
var y = pos.y;
var nodeW = node.width();
var nodeH = node.height();
var radius = Math.min(nodeW, nodeH) / 2; // must fit in node
var lastPercent = 0; // what % to continue drawing pie slices from on [0, 1]
var usePaths = this.usePaths();
if (usePaths) {
x = 0;
y = 0;
}
if (pieSize.units === '%') {
radius = radius * pieSize.pfValue;
} else if (pieSize.pfValue !== undefined) {
radius = pieSize.pfValue / 2;
}
for (var i = 1; i <= cyStyle.pieBackgroundN; i++) {
// 1..N
var size = node.pstyle('pie-' + i + '-background-size').value;
var color = node.pstyle('pie-' + i + '-background-color').value;
var opacity = node.pstyle('pie-' + i + '-background-opacity').value * nodeOpacity;
var percent = size / 100; // map integer range [0, 100] to [0, 1]
// percent can't push beyond 1
if (percent + lastPercent > 1) {
percent = 1 - lastPercent;
}
var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; // start at 12 o'clock and go clockwise
var angleDelta = 2 * Math.PI * percent;
var angleEnd = angleStart + angleDelta; // ignore if
// - zero size
// - we're already beyond the full circle
// - adding the current slice would go beyond the full circle
if (size === 0 || lastPercent >= 1 || lastPercent + percent > 1) {
continue;
}
context.beginPath();
context.moveTo(x, y);
context.arc(x, y, radius, angleStart, angleEnd);
context.closePath();
this.colorFillStyle(context, color[0], color[1], color[2], opacity);
context.fill();
lastPercent += percent;
}
};
var CRp$6 = {};
var motionBlurDelay = 100; // var isFirefox = typeof InstallTrigger !== 'undefined';
CRp$6.getPixelRatio = function () {
var context = this.data.contexts[0];
if (this.forcedPixelRatio != null) {
return this.forcedPixelRatio;
}
var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1;
return (window.devicePixelRatio || 1) / backingStore; // eslint-disable-line no-undef
};
CRp$6.paintCache = function (context) {
var caches = this.paintCaches = this.paintCaches || [];
var needToCreateCache = true;
var cache;
for (var i = 0; i < caches.length; i++) {
cache = caches[i];
if (cache.context === context) {
needToCreateCache = false;
break;
}
}
if (needToCreateCache) {
cache = {
context: context
};
caches.push(cache);
}
return cache;
};
CRp$6.createGradientStyleFor = function (context, shapeStyleName, ele, fill, opacity) {
var gradientStyle;
var usePaths = this.usePaths();
var colors = ele.pstyle(shapeStyleName + '-gradient-stop-colors').value,
positions = ele.pstyle(shapeStyleName + '-gradient-stop-positions').pfValue;
if (fill === 'radial-gradient') {
if (ele.isEdge()) {
var start = ele.sourceEndpoint(),
end = ele.targetEndpoint(),
mid = ele.midpoint();
var d1 = dist$1(start, mid);
var d2 = dist$1(end, mid);
gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d2));
} else {
var pos = usePaths ? {
x: 0,
y: 0
} : ele.position(),
width = ele.paddedWidth(),
height = ele.paddedHeight();
gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width, height));
}
} else {
if (ele.isEdge()) {
var _start = ele.sourceEndpoint(),
_end = ele.targetEndpoint();
gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y);
} else {
var _pos = usePaths ? {
x: 0,
y: 0
} : ele.position(),
_width = ele.paddedWidth(),
_height = ele.paddedHeight(),
halfWidth = _width / 2,
halfHeight = _height / 2;
var direction = ele.pstyle('background-gradient-direction').value;
switch (direction) {
case 'to-bottom':
gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight);
break;
case 'to-top':
gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight);
break;
case 'to-left':
gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y);
break;
case 'to-right':
gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y);
break;
case 'to-bottom-right':
case 'to-right-bottom':
gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight);
break;
case 'to-top-right':
case 'to-right-top':
gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight);
break;
case 'to-bottom-left':
case 'to-left-bottom':
gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight);
break;
case 'to-top-left':
case 'to-left-top':
gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight);
break;
}
}
}
if (!gradientStyle) return null; // invalid gradient style
var hasPositions = positions.length === colors.length;
var length = colors.length;
for (var i = 0; i < length; i++) {
gradientStyle.addColorStop(hasPositions ? positions[i] : i / (length - 1), 'rgba(' + colors[i][0] + ',' + colors[i][1] + ',' + colors[i][2] + ',' + opacity + ')');
}
return gradientStyle;
};
CRp$6.gradientFillStyle = function (context, ele, fill, opacity) {
var gradientStyle = this.createGradientStyleFor(context, 'background', ele, fill, opacity);
if (!gradientStyle) return null; // error
context.fillStyle = gradientStyle;
};
CRp$6.colorFillStyle = function (context, r, g, b, a) {
context.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching
// var cache = this.paintCache(context);
// var fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';
// if( cache.fillStyle !== fillStyle ){
// context.fillStyle = cache.fillStyle = fillStyle;
// }
};
CRp$6.eleFillStyle = function (context, ele, opacity) {
var backgroundFill = ele.pstyle('background-fill').value;
if (backgroundFill === 'linear-gradient' || backgroundFill === 'radial-gradient') {
this.gradientFillStyle(context, ele, backgroundFill, opacity);
} else {
var backgroundColor = ele.pstyle('background-color').value;
this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity);
}
};
CRp$6.gradientStrokeStyle = function (context, ele, fill, opacity) {
var gradientStyle = this.createGradientStyleFor(context, 'line', ele, fill, opacity);
if (!gradientStyle) return null; // error
context.strokeStyle = gradientStyle;
};
CRp$6.colorStrokeStyle = function (context, r, g, b, a) {
context.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching
// var cache = this.paintCache(context);
// var strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';
// if( cache.strokeStyle !== strokeStyle ){
// context.strokeStyle = cache.strokeStyle = strokeStyle;
// }
};
CRp$6.eleStrokeStyle = function (context, ele, opacity) {
var lineFill = ele.pstyle('line-fill').value;
if (lineFill === 'linear-gradient' || lineFill === 'radial-gradient') {
this.gradientStrokeStyle(context, ele, lineFill, opacity);
} else {
var lineColor = ele.pstyle('line-color').value;
this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity);
}
}; // Resize canvas
CRp$6.matchCanvasSize = function (container) {
var r = this;
var data = r.data;
var bb = r.findContainerClientCoords();
var width = bb[2];
var height = bb[3];
var pixelRatio = r.getPixelRatio();
var mbPxRatio = r.motionBlurPxRatio;
if (container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE] || container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]) {
pixelRatio = mbPxRatio;
}
var canvasWidth = width * pixelRatio;
var canvasHeight = height * pixelRatio;
var canvas;
if (canvasWidth === r.canvasWidth && canvasHeight === r.canvasHeight) {
return; // save cycles if same
}
r.fontCaches = null; // resizing resets the style
var canvasContainer = data.canvasContainer;
canvasContainer.style.width = width + 'px';
canvasContainer.style.height = height + 'px';
for (var i = 0; i < r.CANVAS_LAYERS; i++) {
canvas = data.canvases[i];
canvas.width = canvasWidth;
canvas.height = canvasHeight;
canvas.style.width = width + 'px';
canvas.style.height = height + 'px';
}
for (var i = 0; i < r.BUFFER_COUNT; i++) {
canvas = data.bufferCanvases[i];
canvas.width = canvasWidth;
canvas.height = canvasHeight;
canvas.style.width = width + 'px';
canvas.style.height = height + 'px';
}
r.textureMult = 1;
if (pixelRatio <= 1) {
canvas = data.bufferCanvases[r.TEXTURE_BUFFER];
r.textureMult = 2;
canvas.width = canvasWidth * r.textureMult;
canvas.height = canvasHeight * r.textureMult;
}
r.canvasWidth = canvasWidth;
r.canvasHeight = canvasHeight;
};
CRp$6.renderTo = function (cxt, zoom, pan, pxRatio) {
this.render({
forcedContext: cxt,
forcedZoom: zoom,
forcedPan: pan,
drawAllLayers: true,
forcedPxRatio: pxRatio
});
};
CRp$6.render = function (options) {
options = options || staticEmptyObject();
var forcedContext = options.forcedContext;
var drawAllLayers = options.drawAllLayers;
var drawOnlyNodeLayer = options.drawOnlyNodeLayer;
var forcedZoom = options.forcedZoom;
var forcedPan = options.forcedPan;
var r = this;
var pixelRatio = options.forcedPxRatio === undefined ? this.getPixelRatio() : options.forcedPxRatio;
var cy = r.cy;
var data = r.data;
var needDraw = data.canvasNeedsRedraw;
var textureDraw = r.textureOnViewport && !forcedContext && (r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming);
var motionBlur = options.motionBlur !== undefined ? options.motionBlur : r.motionBlur;
var mbPxRatio = r.motionBlurPxRatio;
var hasCompoundNodes = cy.hasCompoundNodes();
var inNodeDragGesture = r.hoverData.draggingEles;
var inBoxSelection = r.hoverData.selecting || r.touchData.selecting ? true : false;
motionBlur = motionBlur && !forcedContext && r.motionBlurEnabled && !inBoxSelection;
var motionBlurFadeEffect = motionBlur;
if (!forcedContext) {
if (r.prevPxRatio !== pixelRatio) {
r.invalidateContainerClientCoordsCache();
r.matchCanvasSize(r.container);
r.redrawHint('eles', true);
r.redrawHint('drag', true);
}
r.prevPxRatio = pixelRatio;
}
if (!forcedContext && r.motionBlurTimeout) {
clearTimeout(r.motionBlurTimeout);
}
if (motionBlur) {
if (r.mbFrames == null) {
r.mbFrames = 0;
}
r.mbFrames++;
if (r.mbFrames < 3) {
// need several frames before even high quality motionblur
motionBlurFadeEffect = false;
} // go to lower quality blurry frames when several m/b frames have been rendered (avoids flashing)
if (r.mbFrames > r.minMbLowQualFrames) {
//r.fullQualityMb = false;
r.motionBlurPxRatio = r.mbPxRBlurry;
}
}
if (r.clearingMotionBlur) {
r.motionBlurPxRatio = 1;
} // b/c drawToContext() may be async w.r.t. redraw(), keep track of last texture frame
// because a rogue async texture frame would clear needDraw
if (r.textureDrawLastFrame && !textureDraw) {
needDraw[r.NODE] = true;
needDraw[r.SELECT_BOX] = true;
}
var style = cy.style();
var zoom = cy.zoom();
var effectiveZoom = forcedZoom !== undefined ? forcedZoom : zoom;
var pan = cy.pan();
var effectivePan = {
x: pan.x,
y: pan.y
};
var vp = {
zoom: zoom,
pan: {
x: pan.x,
y: pan.y
}
};
var prevVp = r.prevViewport;
var viewportIsDiff = prevVp === undefined || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y; // we want the low quality motionblur only when the viewport is being manipulated etc (where it's not noticed)
if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes)) {
r.motionBlurPxRatio = 1;
}
if (forcedPan) {
effectivePan = forcedPan;
} // apply pixel ratio
effectiveZoom *= pixelRatio;
effectivePan.x *= pixelRatio;
effectivePan.y *= pixelRatio;
var eles = r.getCachedZSortedEles();
function mbclear(context, x, y, w, h) {
var gco = context.globalCompositeOperation;
context.globalCompositeOperation = 'destination-out';
r.colorFillStyle(context, 255, 255, 255, r.motionBlurTransparency);
context.fillRect(x, y, w, h);
context.globalCompositeOperation = gco;
}
function setContextTransform(context, clear) {
var ePan, eZoom, w, h;
if (!r.clearingMotionBlur && (context === data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] || context === data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG])) {
ePan = {
x: pan.x * mbPxRatio,
y: pan.y * mbPxRatio
};
eZoom = zoom * mbPxRatio;
w = r.canvasWidth * mbPxRatio;
h = r.canvasHeight * mbPxRatio;
} else {
ePan = effectivePan;
eZoom = effectiveZoom;
w = r.canvasWidth;
h = r.canvasHeight;
}
context.setTransform(1, 0, 0, 1, 0, 0);
if (clear === 'motionBlur') {
mbclear(context, 0, 0, w, h);
} else if (!forcedContext && (clear === undefined || clear)) {
context.clearRect(0, 0, w, h);
}
if (!drawAllLayers) {
context.translate(ePan.x, ePan.y);
context.scale(eZoom, eZoom);
}
if (forcedPan) {
context.translate(forcedPan.x, forcedPan.y);
}
if (forcedZoom) {
context.scale(forcedZoom, forcedZoom);
}
}
if (!textureDraw) {
r.textureDrawLastFrame = false;
}
if (textureDraw) {
r.textureDrawLastFrame = true;
if (!r.textureCache) {
r.textureCache = {};
r.textureCache.bb = cy.mutableElements().boundingBox();
r.textureCache.texture = r.data.bufferCanvases[r.TEXTURE_BUFFER];
var cxt = r.data.bufferContexts[r.TEXTURE_BUFFER];
cxt.setTransform(1, 0, 0, 1, 0, 0);
cxt.clearRect(0, 0, r.canvasWidth * r.textureMult, r.canvasHeight * r.textureMult);
r.render({
forcedContext: cxt,
drawOnlyNodeLayer: true,
forcedPxRatio: pixelRatio * r.textureMult
});
var vp = r.textureCache.viewport = {
zoom: cy.zoom(),
pan: cy.pan(),
width: r.canvasWidth,
height: r.canvasHeight
};
vp.mpan = {
x: (0 - vp.pan.x) / vp.zoom,
y: (0 - vp.pan.y) / vp.zoom
};
}
needDraw[r.DRAG] = false;
needDraw[r.NODE] = false;
var context = data.contexts[r.NODE];
var texture = r.textureCache.texture;
var vp = r.textureCache.viewport;
context.setTransform(1, 0, 0, 1, 0, 0);
if (motionBlur) {
mbclear(context, 0, 0, vp.width, vp.height);
} else {
context.clearRect(0, 0, vp.width, vp.height);
}
var outsideBgColor = style.core('outside-texture-bg-color').value;
var outsideBgOpacity = style.core('outside-texture-bg-opacity').value;
r.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity);
context.fillRect(0, 0, vp.width, vp.height);
var zoom = cy.zoom();
setContextTransform(context, false);
context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio);
context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio);
} else if (r.textureOnViewport && !forcedContext) {
// clear the cache since we don't need it
r.textureCache = null;
}
var extent = cy.extent();
var vpManip = r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming || r.hoverData.draggingEles || r.cy.animated();
var hideEdges = r.hideEdgesOnViewport && vpManip;
var needMbClear = [];
needMbClear[r.NODE] = !needDraw[r.NODE] && motionBlur && !r.clearedForMotionBlur[r.NODE] || r.clearingMotionBlur;
if (needMbClear[r.NODE]) {
r.clearedForMotionBlur[r.NODE] = true;
}
needMbClear[r.DRAG] = !needDraw[r.DRAG] && motionBlur && !r.clearedForMotionBlur[r.DRAG] || r.clearingMotionBlur;
if (needMbClear[r.DRAG]) {
r.clearedForMotionBlur[r.DRAG] = true;
}
if (needDraw[r.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r.NODE]) {
var useBuffer = motionBlur && !needMbClear[r.NODE] && mbPxRatio !== 1;
var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] : data.contexts[r.NODE]);
var clear = motionBlur && !useBuffer ? 'motionBlur' : undefined;
setContextTransform(context, clear);
if (hideEdges) {
r.drawCachedNodes(context, eles.nondrag, pixelRatio, extent);
} else {
r.drawLayeredElements(context, eles.nondrag, pixelRatio, extent);
}
if (r.debug) {
r.drawDebugPoints(context, eles.nondrag);
}
if (!drawAllLayers && !motionBlur) {
needDraw[r.NODE] = false;
}
}
if (!drawOnlyNodeLayer && (needDraw[r.DRAG] || drawAllLayers || needMbClear[r.DRAG])) {
var useBuffer = motionBlur && !needMbClear[r.DRAG] && mbPxRatio !== 1;
var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG] : data.contexts[r.DRAG]);
setContextTransform(context, motionBlur && !useBuffer ? 'motionBlur' : undefined);
if (hideEdges) {
r.drawCachedNodes(context, eles.drag, pixelRatio, extent);
} else {
r.drawCachedElements(context, eles.drag, pixelRatio, extent);
}
if (r.debug) {
r.drawDebugPoints(context, eles.drag);
}
if (!drawAllLayers && !motionBlur) {
needDraw[r.DRAG] = false;
}
}
if (r.showFps || !drawOnlyNodeLayer && needDraw[r.SELECT_BOX] && !drawAllLayers) {
var context = forcedContext || data.contexts[r.SELECT_BOX];
setContextTransform(context);
if (r.selection[4] == 1 && (r.hoverData.selecting || r.touchData.selecting)) {
var zoom = r.cy.zoom();
var borderWidth = style.core('selection-box-border-width').value / zoom;
context.lineWidth = borderWidth;
context.fillStyle = 'rgba(' + style.core('selection-box-color').value[0] + ',' + style.core('selection-box-color').value[1] + ',' + style.core('selection-box-color').value[2] + ',' + style.core('selection-box-opacity').value + ')';
context.fillRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]);
if (borderWidth > 0) {
context.strokeStyle = 'rgba(' + style.core('selection-box-border-color').value[0] + ',' + style.core('selection-box-border-color').value[1] + ',' + style.core('selection-box-border-color').value[2] + ',' + style.core('selection-box-opacity').value + ')';
context.strokeRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]);
}
}
if (data.bgActivePosistion && !r.hoverData.selecting) {
var zoom = r.cy.zoom();
var pos = data.bgActivePosistion;
context.fillStyle = 'rgba(' + style.core('active-bg-color').value[0] + ',' + style.core('active-bg-color').value[1] + ',' + style.core('active-bg-color').value[2] + ',' + style.core('active-bg-opacity').value + ')';
context.beginPath();
context.arc(pos.x, pos.y, style.core('active-bg-size').pfValue / zoom, 0, 2 * Math.PI);
context.fill();
}
var timeToRender = r.lastRedrawTime;
if (r.showFps && timeToRender) {
timeToRender = Math.round(timeToRender);
var fps = Math.round(1000 / timeToRender);
context.setTransform(1, 0, 0, 1, 0, 0);
context.fillStyle = 'rgba(255, 0, 0, 0.75)';
context.strokeStyle = 'rgba(255, 0, 0, 0.75)';
context.lineWidth = 1;
context.fillText('1 frame = ' + timeToRender + ' ms = ' + fps + ' fps', 0, 20);
var maxFps = 60;
context.strokeRect(0, 30, 250, 20);
context.fillRect(0, 30, 250 * Math.min(fps / maxFps, 1), 20);
}
if (!drawAllLayers) {
needDraw[r.SELECT_BOX] = false;
}
} // motionblur: blit rendered blurry frames
if (motionBlur && mbPxRatio !== 1) {
var cxtNode = data.contexts[r.NODE];
var txtNode = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE];
var cxtDrag = data.contexts[r.DRAG];
var txtDrag = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG];
var drawMotionBlur = function drawMotionBlur(cxt, txt, needClear) {
cxt.setTransform(1, 0, 0, 1, 0, 0);
if (needClear || !motionBlurFadeEffect) {
cxt.clearRect(0, 0, r.canvasWidth, r.canvasHeight);
} else {
mbclear(cxt, 0, 0, r.canvasWidth, r.canvasHeight);
}
var pxr = mbPxRatio;
cxt.drawImage(txt, // img
0, 0, // sx, sy
r.canvasWidth * pxr, r.canvasHeight * pxr, // sw, sh
0, 0, // x, y
r.canvasWidth, r.canvasHeight // w, h
);
};
if (needDraw[r.NODE] || needMbClear[r.NODE]) {
drawMotionBlur(cxtNode, txtNode, needMbClear[r.NODE]);
needDraw[r.NODE] = false;
}
if (needDraw[r.DRAG] || needMbClear[r.DRAG]) {
drawMotionBlur(cxtDrag, txtDrag, needMbClear[r.DRAG]);
needDraw[r.DRAG] = false;
}
}
r.prevViewport = vp;
if (r.clearingMotionBlur) {
r.clearingMotionBlur = false;
r.motionBlurCleared = true;
r.motionBlur = true;
}
if (motionBlur) {
r.motionBlurTimeout = setTimeout(function () {
r.motionBlurTimeout = null;
r.clearedForMotionBlur[r.NODE] = false;
r.clearedForMotionBlur[r.DRAG] = false;
r.motionBlur = false;
r.clearingMotionBlur = !textureDraw;
r.mbFrames = 0;
needDraw[r.NODE] = true;
needDraw[r.DRAG] = true;
r.redraw();
}, motionBlurDelay);
}
if (!forcedContext) {
cy.emit('render');
}
};
var CRp$7 = {}; // @O Polygon drawing
CRp$7.drawPolygonPath = function (context, x, y, width, height, points) {
var halfW = width / 2;
var halfH = height / 2;
if (context.beginPath) {
context.beginPath();
}
context.moveTo(x + halfW * points[0], y + halfH * points[1]);
for (var i = 1; i < points.length / 2; i++) {
context.lineTo(x + halfW * points[i * 2], y + halfH * points[i * 2 + 1]);
}
context.closePath();
};
CRp$7.drawRoundPolygonPath = function (context, x, y, width, height, points) {
var halfW = width / 2;
var halfH = height / 2;
var cornerRadius = getRoundPolygonRadius(width, height);
if (context.beginPath) {
context.beginPath();
}
for (var _i = 0; _i < points.length / 4; _i++) {
var sourceUv = void 0,
destUv = void 0;
if (_i === 0) {
sourceUv = points.length - 2;
} else {
sourceUv = _i * 4 - 2;
}
destUv = _i * 4 + 2;
var px = x + halfW * points[_i * 4];
var py = y + halfH * points[_i * 4 + 1];
var cosTheta = -points[sourceUv] * points[destUv] - points[sourceUv + 1] * points[destUv + 1];
var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2);
var cp0x = px - offset * points[sourceUv];
var cp0y = py - offset * points[sourceUv + 1];
var cp1x = px + offset * points[destUv];
var cp1y = py + offset * points[destUv + 1];
if (_i === 0) {
context.moveTo(cp0x, cp0y);
} else {
context.lineTo(cp0x, cp0y);
}
context.arcTo(px, py, cp1x, cp1y, cornerRadius);
}
context.closePath();
}; // Round rectangle drawing
CRp$7.drawRoundRectanglePath = function (context, x, y, width, height) {
var halfWidth = width / 2;
var halfHeight = height / 2;
var cornerRadius = getRoundRectangleRadius(width, height);
if (context.beginPath) {
context.beginPath();
} // Start at top middle
context.moveTo(x, y - halfHeight); // Arc from middle top to right side
context.arcTo(x + halfWidth, y - halfHeight, x + halfWidth, y, cornerRadius); // Arc from right side to bottom
context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); // Arc from bottom to left side
context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); // Arc from left side to topBorder
context.arcTo(x - halfWidth, y - halfHeight, x, y - halfHeight, cornerRadius); // Join line
context.lineTo(x, y - halfHeight);
context.closePath();
};
CRp$7.drawBottomRoundRectanglePath = function (context, x, y, width, height) {
var halfWidth = width / 2;
var halfHeight = height / 2;
var cornerRadius = getRoundRectangleRadius(width, height);
if (context.beginPath) {
context.beginPath();
} // Start at top middle
context.moveTo(x, y - halfHeight);
context.lineTo(x + halfWidth, y - halfHeight);
context.lineTo(x + halfWidth, y);
context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius);
context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius);
context.lineTo(x - halfWidth, y - halfHeight);
context.lineTo(x, y - halfHeight);
context.closePath();
};
CRp$7.drawCutRectanglePath = function (context, x, y, width, height) {
var halfWidth = width / 2;
var halfHeight = height / 2;
var cornerLength = getCutRectangleCornerLength();
if (context.beginPath) {
context.beginPath();
}
context.moveTo(x - halfWidth + cornerLength, y - halfHeight);
context.lineTo(x + halfWidth - cornerLength, y - halfHeight);
context.lineTo(x + halfWidth, y - halfHeight + cornerLength);
context.lineTo(x + halfWidth, y + halfHeight - cornerLength);
context.lineTo(x + halfWidth - cornerLength, y + halfHeight);
context.lineTo(x - halfWidth + cornerLength, y + halfHeight);
context.lineTo(x - halfWidth, y + halfHeight - cornerLength);
context.lineTo(x - halfWidth, y - halfHeight + cornerLength);
context.closePath();
};
CRp$7.drawBarrelPath = function (context, x, y, width, height) {
var halfWidth = width / 2;
var halfHeight = height / 2;
var xBegin = x - halfWidth;
var xEnd = x + halfWidth;
var yBegin = y - halfHeight;
var yEnd = y + halfHeight;
var barrelCurveConstants = getBarrelCurveConstants(width, height);
var wOffset = barrelCurveConstants.widthOffset;
var hOffset = barrelCurveConstants.heightOffset;
var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset;
if (context.beginPath) {
context.beginPath();
}
context.moveTo(xBegin, yBegin + hOffset);
context.lineTo(xBegin, yEnd - hOffset);
context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd);
context.lineTo(xEnd - wOffset, yEnd);
context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset);
context.lineTo(xEnd, yBegin + hOffset);
context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin);
context.lineTo(xBegin + wOffset, yBegin);
context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset);
context.closePath();
};
var sin0 = Math.sin(0);
var cos0 = Math.cos(0);
var sin = {};
var cos = {};
var ellipseStepSize = Math.PI / 40;
for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) {
sin[i] = Math.sin(i);
cos[i] = Math.cos(i);
}
CRp$7.drawEllipsePath = function (context, centerX, centerY, width, height) {
if (context.beginPath) {
context.beginPath();
}
if (context.ellipse) {
context.ellipse(centerX, centerY, width / 2, height / 2, 0, 0, 2 * Math.PI);
} else {
var xPos, yPos;
var rw = width / 2;
var rh = height / 2;
for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) {
xPos = centerX - rw * sin[i] * sin0 + rw * cos[i] * cos0;
yPos = centerY + rh * cos[i] * sin0 + rh * sin[i] * cos0;
if (i === 0) {
context.moveTo(xPos, yPos);
} else {
context.lineTo(xPos, yPos);
}
}
}
context.closePath();
};
/* global atob, ArrayBuffer, Uint8Array, Blob */
var CRp$8 = {};
CRp$8.createBuffer = function (w, h) {
var buffer = document.createElement('canvas'); // eslint-disable-line no-undef
buffer.width = w;
buffer.height = h;
return [buffer, buffer.getContext('2d')];
};
CRp$8.bufferCanvasImage = function (options) {
var cy = this.cy;
var eles = cy.mutableElements();
var bb = eles.boundingBox();
var ctrRect = this.findContainerClientCoords();
var width = options.full ? Math.ceil(bb.w) : ctrRect[2];
var height = options.full ? Math.ceil(bb.h) : ctrRect[3];
var specdMaxDims = number(options.maxWidth) || number(options.maxHeight);
var pxRatio = this.getPixelRatio();
var scale = 1;
if (options.scale !== undefined) {
width *= options.scale;
height *= options.scale;
scale = options.scale;
} else if (specdMaxDims) {
var maxScaleW = Infinity;
var maxScaleH = Infinity;
if (number(options.maxWidth)) {
maxScaleW = scale * options.maxWidth / width;
}
if (number(options.maxHeight)) {
maxScaleH = scale * options.maxHeight / height;
}
scale = Math.min(maxScaleW, maxScaleH);
width *= scale;
height *= scale;
}
if (!specdMaxDims) {
width *= pxRatio;
height *= pxRatio;
scale *= pxRatio;
}
var buffCanvas = document.createElement('canvas'); // eslint-disable-line no-undef
buffCanvas.width = width;
buffCanvas.height = height;
buffCanvas.style.width = width + 'px';
buffCanvas.style.height = height + 'px';
var buffCxt = buffCanvas.getContext('2d'); // Rasterize the layers, but only if container has nonzero size
if (width > 0 && height > 0) {
buffCxt.clearRect(0, 0, width, height);
buffCxt.globalCompositeOperation = 'source-over';
var zsortedEles = this.getCachedZSortedEles();
if (options.full) {
// draw the full bounds of the graph
buffCxt.translate(-bb.x1 * scale, -bb.y1 * scale);
buffCxt.scale(scale, scale);
this.drawElements(buffCxt, zsortedEles);
buffCxt.scale(1 / scale, 1 / scale);
buffCxt.translate(bb.x1 * scale, bb.y1 * scale);
} else {
// draw the current view
var pan = cy.pan();
var translation = {
x: pan.x * scale,
y: pan.y * scale
};
scale *= cy.zoom();
buffCxt.translate(translation.x, translation.y);
buffCxt.scale(scale, scale);
this.drawElements(buffCxt, zsortedEles);
buffCxt.scale(1 / scale, 1 / scale);
buffCxt.translate(-translation.x, -translation.y);
} // need to fill bg at end like this in order to fill cleared transparent pixels in jpgs
if (options.bg) {
buffCxt.globalCompositeOperation = 'destination-over';
buffCxt.fillStyle = options.bg;
buffCxt.rect(0, 0, width, height);
buffCxt.fill();
}
}
return buffCanvas;
};
function b64ToBlob(b64, mimeType) {
var bytes = atob(b64);
var buff = new ArrayBuffer(bytes.length);
var buffUint8 = new Uint8Array(buff);
for (var i = 0; i < bytes.length; i++) {
buffUint8[i] = bytes.charCodeAt(i);
}
return new Blob([buff], {
type: mimeType
});
}
function b64UriToB64(b64uri) {
var i = b64uri.indexOf(',');
return b64uri.substr(i + 1);
}
function output(options, canvas, mimeType) {
var getB64Uri = function getB64Uri() {
return canvas.toDataURL(mimeType, options.quality);
};
switch (options.output) {
case 'blob-promise':
return new Promise$1$1(function (resolve, reject) {
try {
canvas.toBlob(function (blob) {
if (blob != null) {
resolve(blob);
} else {
reject(new Error('`canvas.toBlob()` sent a null value in its callback'));
}
}, mimeType, options.quality);
} catch (err) {
reject(err);
}
});
case 'blob':
return b64ToBlob(b64UriToB64(getB64Uri()), mimeType);
case 'base64':
return b64UriToB64(getB64Uri());
case 'base64uri':
default:
return getB64Uri();
}
}
CRp$8.png = function (options) {
return output(options, this.bufferCanvasImage(options), 'image/png');
};
CRp$8.jpg = function (options) {
return output(options, this.bufferCanvasImage(options), 'image/jpeg');
};
var CRp$9 = {};
CRp$9.nodeShapeImpl = function (name, context, centerX, centerY, width, height, points) {
switch (name) {
case 'ellipse':
return this.drawEllipsePath(context, centerX, centerY, width, height);
case 'polygon':
return this.drawPolygonPath(context, centerX, centerY, width, height, points);
case 'round-polygon':
return this.drawRoundPolygonPath(context, centerX, centerY, width, height, points);
case 'roundrectangle':
case 'round-rectangle':
return this.drawRoundRectanglePath(context, centerX, centerY, width, height);
case 'cutrectangle':
case 'cut-rectangle':
return this.drawCutRectanglePath(context, centerX, centerY, width, height);
case 'bottomroundrectangle':
case 'bottom-round-rectangle':
return this.drawBottomRoundRectanglePath(context, centerX, centerY, width, height);
case 'barrel':
return this.drawBarrelPath(context, centerX, centerY, width, height);
}
};
var CR = CanvasRenderer;
var CRp$a = CanvasRenderer.prototype;
CRp$a.CANVAS_LAYERS = 3; //
CRp$a.SELECT_BOX = 0;
CRp$a.DRAG = 1;
CRp$a.NODE = 2;
CRp$a.BUFFER_COUNT = 3; //
CRp$a.TEXTURE_BUFFER = 0;
CRp$a.MOTIONBLUR_BUFFER_NODE = 1;
CRp$a.MOTIONBLUR_BUFFER_DRAG = 2;
function CanvasRenderer(options) {
var r = this;
r.data = {
canvases: new Array(CRp$a.CANVAS_LAYERS),
contexts: new Array(CRp$a.CANVAS_LAYERS),
canvasNeedsRedraw: new Array(CRp$a.CANVAS_LAYERS),
bufferCanvases: new Array(CRp$a.BUFFER_COUNT),
bufferContexts: new Array(CRp$a.CANVAS_LAYERS)
};
var tapHlOffAttr = '-webkit-tap-highlight-color';
var tapHlOffStyle = 'rgba(0,0,0,0)';
r.data.canvasContainer = document.createElement('div'); // eslint-disable-line no-undef
var containerStyle = r.data.canvasContainer.style;
r.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle;
containerStyle.position = 'relative';
containerStyle.zIndex = '0';
containerStyle.overflow = 'hidden';
var container = options.cy.container();
container.appendChild(r.data.canvasContainer);
container.style[tapHlOffAttr] = tapHlOffStyle;
var styleMap = {
'-webkit-user-select': 'none',
'-moz-user-select': '-moz-none',
'user-select': 'none',
'-webkit-tap-highlight-color': 'rgba(0,0,0,0)',
'outline-style': 'none'
};
if (ms()) {
styleMap['-ms-touch-action'] = 'none';
styleMap['touch-action'] = 'none';
}
for (var i = 0; i < CRp$a.CANVAS_LAYERS; i++) {
var canvas = r.data.canvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef
r.data.contexts[i] = canvas.getContext('2d');
Object.keys(styleMap).forEach(function (k) {
canvas.style[k] = styleMap[k];
});
canvas.style.position = 'absolute';
canvas.setAttribute('data-id', 'layer' + i);
canvas.style.zIndex = String(CRp$a.CANVAS_LAYERS - i);
r.data.canvasContainer.appendChild(canvas);
r.data.canvasNeedsRedraw[i] = false;
}
r.data.topCanvas = r.data.canvases[0];
r.data.canvases[CRp$a.NODE].setAttribute('data-id', 'layer' + CRp$a.NODE + '-node');
r.data.canvases[CRp$a.SELECT_BOX].setAttribute('data-id', 'layer' + CRp$a.SELECT_BOX + '-selectbox');
r.data.canvases[CRp$a.DRAG].setAttribute('data-id', 'layer' + CRp$a.DRAG + '-drag');
for (var i = 0; i < CRp$a.BUFFER_COUNT; i++) {
r.data.bufferCanvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef
r.data.bufferContexts[i] = r.data.bufferCanvases[i].getContext('2d');
r.data.bufferCanvases[i].style.position = 'absolute';
r.data.bufferCanvases[i].setAttribute('data-id', 'buffer' + i);
r.data.bufferCanvases[i].style.zIndex = String(-i - 1);
r.data.bufferCanvases[i].style.visibility = 'hidden'; //r.data.canvasContainer.appendChild(r.data.bufferCanvases[i]);
}
r.pathsEnabled = true;
var emptyBb = makeBoundingBox();
var getBoxCenter = function getBoxCenter(bb) {
return {
x: (bb.x1 + bb.x2) / 2,
y: (bb.y1 + bb.y2) / 2
};
};
var getCenterOffset = function getCenterOffset(bb) {
return {
x: -bb.w / 2,
y: -bb.h / 2
};
};
var backgroundTimestampHasChanged = function backgroundTimestampHasChanged(ele) {
var _p = ele[0]._private;
var same = _p.oldBackgroundTimestamp === _p.backgroundTimestamp;
return !same;
};
var getStyleKey = function getStyleKey(ele) {
return ele[0]._private.nodeKey;
};
var getLabelKey = function getLabelKey(ele) {
return ele[0]._private.labelStyleKey;
};
var getSourceLabelKey = function getSourceLabelKey(ele) {
return ele[0]._private.sourceLabelStyleKey;
};
var getTargetLabelKey = function getTargetLabelKey(ele) {
return ele[0]._private.targetLabelStyleKey;
};
var drawElement = function drawElement(context, ele, bb, scaledLabelShown, useEleOpacity) {
return r.drawElement(context, ele, bb, false, false, useEleOpacity);
};
var drawLabel = function drawLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {
return r.drawElementText(context, ele, bb, scaledLabelShown, 'main', useEleOpacity);
};
var drawSourceLabel = function drawSourceLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {
return r.drawElementText(context, ele, bb, scaledLabelShown, 'source', useEleOpacity);
};
var drawTargetLabel = function drawTargetLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {
return r.drawElementText(context, ele, bb, scaledLabelShown, 'target', useEleOpacity);
};
var getElementBox = function getElementBox(ele) {
ele.boundingBox();
return ele[0]._private.bodyBounds;
};
var getLabelBox = function getLabelBox(ele) {
ele.boundingBox();
return ele[0]._private.labelBounds.main || emptyBb;
};
var getSourceLabelBox = function getSourceLabelBox(ele) {
ele.boundingBox();
return ele[0]._private.labelBounds.source || emptyBb;
};
var getTargetLabelBox = function getTargetLabelBox(ele) {
ele.boundingBox();
return ele[0]._private.labelBounds.target || emptyBb;
};
var isLabelVisibleAtScale = function isLabelVisibleAtScale(ele, scaledLabelShown) {
return scaledLabelShown;
};
var getElementRotationPoint = function getElementRotationPoint(ele) {
return getBoxCenter(getElementBox(ele));
};
var addTextMargin = function addTextMargin(prefix, pt, ele) {
var pre = prefix ? prefix + '-' : '';
return {
x: pt.x + ele.pstyle(pre + 'text-margin-x').pfValue,
y: pt.y + ele.pstyle(pre + 'text-margin-y').pfValue
};
};
var getRsPt = function getRsPt(ele, x, y) {
var rs = ele[0]._private.rscratch;
return {
x: rs[x],
y: rs[y]
};
};
var getLabelRotationPoint = function getLabelRotationPoint(ele) {
return addTextMargin('', getRsPt(ele, 'labelX', 'labelY'), ele);
};
var getSourceLabelRotationPoint = function getSourceLabelRotationPoint(ele) {
return addTextMargin('source', getRsPt(ele, 'sourceLabelX', 'sourceLabelY'), ele);
};
var getTargetLabelRotationPoint = function getTargetLabelRotationPoint(ele) {
return addTextMargin('target', getRsPt(ele, 'targetLabelX', 'targetLabelY'), ele);
};
var getElementRotationOffset = function getElementRotationOffset(ele) {
return getCenterOffset(getElementBox(ele));
};
var getSourceLabelRotationOffset = function getSourceLabelRotationOffset(ele) {
return getCenterOffset(getSourceLabelBox(ele));
};
var getTargetLabelRotationOffset = function getTargetLabelRotationOffset(ele) {
return getCenterOffset(getTargetLabelBox(ele));
};
var getLabelRotationOffset = function getLabelRotationOffset(ele) {
var bb = getLabelBox(ele);
var p = getCenterOffset(getLabelBox(ele));
if (ele.isNode()) {
switch (ele.pstyle('text-halign').value) {
case 'left':
p.x = -bb.w;
break;
case 'right':
p.x = 0;
break;
}
switch (ele.pstyle('text-valign').value) {
case 'top':
p.y = -bb.h;
break;
case 'bottom':
p.y = 0;
break;
}
}
return p;
};
var eleTxrCache = r.data.eleTxrCache = new ElementTextureCache(r, {
getKey: getStyleKey,
doesEleInvalidateKey: backgroundTimestampHasChanged,
drawElement: drawElement,
getBoundingBox: getElementBox,
getRotationPoint: getElementRotationPoint,
getRotationOffset: getElementRotationOffset,
allowEdgeTxrCaching: false,
allowParentTxrCaching: false
});
var lblTxrCache = r.data.lblTxrCache = new ElementTextureCache(r, {
getKey: getLabelKey,
drawElement: drawLabel,
getBoundingBox: getLabelBox,
getRotationPoint: getLabelRotationPoint,
getRotationOffset: getLabelRotationOffset,
isVisible: isLabelVisibleAtScale
});
var slbTxrCache = r.data.slbTxrCache = new ElementTextureCache(r, {
getKey: getSourceLabelKey,
drawElement: drawSourceLabel,
getBoundingBox: getSourceLabelBox,
getRotationPoint: getSourceLabelRotationPoint,
getRotationOffset: getSourceLabelRotationOffset,
isVisible: isLabelVisibleAtScale
});
var tlbTxrCache = r.data.tlbTxrCache = new ElementTextureCache(r, {
getKey: getTargetLabelKey,
drawElement: drawTargetLabel,
getBoundingBox: getTargetLabelBox,
getRotationPoint: getTargetLabelRotationPoint,
getRotationOffset: getTargetLabelRotationOffset,
isVisible: isLabelVisibleAtScale
});
var lyrTxrCache = r.data.lyrTxrCache = new LayeredTextureCache(r);
r.onUpdateEleCalcs(function invalidateTextureCaches(willDraw, eles) {
// each cache should check for sub-key diff to see that the update affects that cache particularly
eleTxrCache.invalidateElements(eles);
lblTxrCache.invalidateElements(eles);
slbTxrCache.invalidateElements(eles);
tlbTxrCache.invalidateElements(eles); // any change invalidates the layers
lyrTxrCache.invalidateElements(eles); // update the old bg timestamp so diffs can be done in the ele txr caches
for (var _i = 0; _i < eles.length; _i++) {
var _p = eles[_i]._private;
_p.oldBackgroundTimestamp = _p.backgroundTimestamp;
}
});
var refineInLayers = function refineInLayers(reqs) {
for (var i = 0; i < reqs.length; i++) {
lyrTxrCache.enqueueElementRefinement(reqs[i].ele);
}
};
eleTxrCache.onDequeue(refineInLayers);
lblTxrCache.onDequeue(refineInLayers);
slbTxrCache.onDequeue(refineInLayers);
tlbTxrCache.onDequeue(refineInLayers);
}
CRp$a.redrawHint = function (group, bool) {
var r = this;
switch (group) {
case 'eles':
r.data.canvasNeedsRedraw[CRp$a.NODE] = bool;
break;
case 'drag':
r.data.canvasNeedsRedraw[CRp$a.DRAG] = bool;
break;
case 'select':
r.data.canvasNeedsRedraw[CRp$a.SELECT_BOX] = bool;
break;
}
}; // whether to use Path2D caching for drawing
var pathsImpld = typeof Path2D !== 'undefined';
CRp$a.path2dEnabled = function (on) {
if (on === undefined) {
return this.pathsEnabled;
}
this.pathsEnabled = on ? true : false;
};
CRp$a.usePaths = function () {
return pathsImpld && this.pathsEnabled;
};
CRp$a.setImgSmoothing = function (context, bool) {
if (context.imageSmoothingEnabled != null) {
context.imageSmoothingEnabled = bool;
} else {
context.webkitImageSmoothingEnabled = bool;
context.mozImageSmoothingEnabled = bool;
context.msImageSmoothingEnabled = bool;
}
};
CRp$a.getImgSmoothing = function (context) {
if (context.imageSmoothingEnabled != null) {
return context.imageSmoothingEnabled;
} else {
return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled;
}
};
CRp$a.makeOffscreenCanvas = function (width, height) {
var canvas;
if ((typeof OffscreenCanvas === "undefined" ? "undefined" : _typeof(OffscreenCanvas)) !== ( "undefined" )) {
canvas = new OffscreenCanvas(width, height);
} else {
canvas = document.createElement('canvas'); // eslint-disable-line no-undef
canvas.width = width;
canvas.height = height;
}
return canvas;
};
[CRp, CRp$1, CRp$2, CRp$3, CRp$4, CRp$5, CRp$6, CRp$7, CRp$8, CRp$9].forEach(function (props) {
extend(CRp$a, props);
});
var renderer = [{
name: 'null',
impl: NullRenderer
}, {
name: 'base',
impl: BR
}, {
name: 'canvas',
impl: CR
}];
var incExts = [{
type: 'layout',
extensions: layout$2
}, {
type: 'renderer',
extensions: renderer
}];
var extensions = {}; // registered modules for extensions, indexed by name
var modules = {};
function setExtension(type, name, registrant) {
var ext = registrant;
var overrideErr = function overrideErr(field) {
warn('Can not register `' + name + '` for `' + type + '` since `' + field + '` already exists in the prototype and can not be overridden');
};
if (type === 'core') {
if (Core.prototype[name]) {
return overrideErr(name);
} else {
Core.prototype[name] = registrant;
}
} else if (type === 'collection') {
if (Collection.prototype[name]) {
return overrideErr(name);
} else {
Collection.prototype[name] = registrant;
}
} else if (type === 'layout') {
// fill in missing layout functions in the prototype
var Layout = function Layout(options) {
this.options = options;
registrant.call(this, options); // make sure layout has _private for use w/ std apis like .on()
if (!plainObject(this._private)) {
this._private = {};
}
this._private.cy = options.cy;
this._private.listeners = [];
this.createEmitter();
};
var layoutProto = Layout.prototype = Object.create(registrant.prototype);
var optLayoutFns = [];
for (var i = 0; i < optLayoutFns.length; i++) {
var fnName = optLayoutFns[i];
layoutProto[fnName] = layoutProto[fnName] || function () {
return this;
};
} // either .start() or .run() is defined, so autogen the other
if (layoutProto.start && !layoutProto.run) {
layoutProto.run = function () {
this.start();
return this;
};
} else if (!layoutProto.start && layoutProto.run) {
layoutProto.start = function () {
this.run();
return this;
};
}
var regStop = registrant.prototype.stop;
layoutProto.stop = function () {
var opts = this.options;
if (opts && opts.animate) {
var anis = this.animations;
if (anis) {
for (var _i = 0; _i < anis.length; _i++) {
anis[_i].stop();
}
}
}
if (regStop) {
regStop.call(this);
} else {
this.emit('layoutstop');
}
return this;
};
if (!layoutProto.destroy) {
layoutProto.destroy = function () {
return this;
};
}
layoutProto.cy = function () {
return this._private.cy;
};
var getCy = function getCy(layout) {
return layout._private.cy;
};
var emitterOpts = {
addEventFields: function addEventFields(layout, evt) {
evt.layout = layout;
evt.cy = getCy(layout);
evt.target = layout;
},
bubble: function bubble() {
return true;
},
parent: function parent(layout) {
return getCy(layout);
}
};
extend(layoutProto, {
createEmitter: function createEmitter() {
this._private.emitter = new Emitter(emitterOpts, this);
return this;
},
emitter: function emitter() {
return this._private.emitter;
},
on: function on(evt, cb) {
this.emitter().on(evt, cb);
return this;
},
one: function one(evt, cb) {
this.emitter().one(evt, cb);
return this;
},
once: function once(evt, cb) {
this.emitter().one(evt, cb);
return this;
},
removeListener: function removeListener(evt, cb) {
this.emitter().removeListener(evt, cb);
return this;
},
removeAllListeners: function removeAllListeners() {
this.emitter().removeAllListeners();
return this;
},
emit: function emit(evt, params) {
this.emitter().emit(evt, params);
return this;
}
});
define$3.eventAliasesOn(layoutProto);
ext = Layout; // replace with our wrapped layout
} else if (type === 'renderer' && name !== 'null' && name !== 'base') {
// user registered renderers inherit from base
var BaseRenderer = getExtension('renderer', 'base');
var bProto = BaseRenderer.prototype;
var RegistrantRenderer = registrant;
var rProto = registrant.prototype;
var Renderer = function Renderer() {
BaseRenderer.apply(this, arguments);
RegistrantRenderer.apply(this, arguments);
};
var proto = Renderer.prototype;
for (var pName in bProto) {
var pVal = bProto[pName];
var existsInR = rProto[pName] != null;
if (existsInR) {
return overrideErr(pName);
}
proto[pName] = pVal; // take impl from base
}
for (var _pName in rProto) {
proto[_pName] = rProto[_pName]; // take impl from registrant
}
bProto.clientFunctions.forEach(function (name) {
proto[name] = proto[name] || function () {
error('Renderer does not implement `renderer.' + name + '()` on its prototype');
};
});
ext = Renderer;
}
return setMap({
map: extensions,
keys: [type, name],
value: ext
});
}
function getExtension(type, name) {
return getMap({
map: extensions,
keys: [type, name]
});
}
function setModule(type, name, moduleType, moduleName, registrant) {
return setMap({
map: modules,
keys: [type, name, moduleType, moduleName],
value: registrant
});
}
function getModule(type, name, moduleType, moduleName) {
return getMap({
map: modules,
keys: [type, name, moduleType, moduleName]
});
}
var extension$1 = function extension() {
// e.g. extension('renderer', 'svg')
if (arguments.length === 2) {
return getExtension.apply(null, arguments);
} // e.g. extension('renderer', 'svg', { ... })
else if (arguments.length === 3) {
return setExtension.apply(null, arguments);
} // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse')
else if (arguments.length === 4) {
return getModule.apply(null, arguments);
} // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse', { ... })
else if (arguments.length === 5) {
return setModule.apply(null, arguments);
} else {
error('Invalid extension access syntax');
}
}; // allows a core instance to access extensions internally
Core.prototype.extension = extension$1; // included extensions
incExts.forEach(function (group) {
group.extensions.forEach(function (ext) {
setExtension(group.type, ext.name, ext.impl);
});
});
// (useful for init)
var Stylesheet = function Stylesheet() {
if (!(this instanceof Stylesheet)) {
return new Stylesheet();
}
this.length = 0;
};
var sheetfn = Stylesheet.prototype;
sheetfn.instanceString = function () {
return 'stylesheet';
}; // just store the selector to be parsed later
sheetfn.selector = function (selector) {
var i = this.length++;
this[i] = {
selector: selector,
properties: []
};
return this; // chaining
}; // just store the property to be parsed later
sheetfn.css = function (name, value) {
var i = this.length - 1;
if (string(name)) {
this[i].properties.push({
name: name,
value: value
});
} else if (plainObject(name)) {
var map = name;
var propNames = Object.keys(map);
for (var j = 0; j < propNames.length; j++) {
var key = propNames[j];
var mapVal = map[key];
if (mapVal == null) {
continue;
}
var prop = Style.properties[key] || Style.properties[dash2camel(key)];
if (prop == null) {
continue;
}
var _name = prop.name;
var _value = mapVal;
this[i].properties.push({
name: _name,
value: _value
});
}
}
return this; // chaining
};
sheetfn.style = sheetfn.css; // generate a real style object from the dummy stylesheet
sheetfn.generateStyle = function (cy) {
var style = new Style(cy);
return this.appendToStyle(style);
}; // append a dummy stylesheet object on a real style object
sheetfn.appendToStyle = function (style) {
for (var i = 0; i < this.length; i++) {
var context = this[i];
var selector = context.selector;
var props = context.properties;
style.selector(selector); // apply selector
for (var j = 0; j < props.length; j++) {
var prop = props[j];
style.css(prop.name, prop.value); // apply property
}
}
return style;
};
var version$2 = "3.20.0";
var cytoscape$1 = function cytoscape(options) {
// if no options specified, use default
if (options === undefined) {
options = {};
} // create instance
if (plainObject(options)) {
return new Core(options);
} // allow for registration of extensions
else if (string(options)) {
return extension$1.apply(extension$1, arguments);
}
}; // e.g. cytoscape.use( require('cytoscape-foo'), bar )
cytoscape$1.use = function (ext) {
var args = Array.prototype.slice.call(arguments, 1); // args to pass to ext
args.unshift(cytoscape$1); // cytoscape is first arg to ext
ext.apply(null, args);
return this;
};
cytoscape$1.warnings = function (bool) {
return warnings(bool);
}; // replaced by build system
cytoscape$1.version = version$2; // expose public apis (mostly for extensions)
cytoscape$1.stylesheet = cytoscape$1.Stylesheet = Stylesheet;
var cytoscape_cjs = cytoscape$1;
// Material Design Icons v5.9.55
var mdiAbTesting = "M4 2A2 2 0 0 0 2 4V12H4V8H6V12H8V4A2 2 0 0 0 6 2H4M4 4H6V6H4M22 15.5V14A2 2 0 0 0 20 12H16V22H20A2 2 0 0 0 22 20V18.5A1.54 1.54 0 0 0 20.5 17A1.54 1.54 0 0 0 22 15.5M20 20H18V18H20V20M20 16H18V14H20M5.79 21.61L4.21 20.39L18.21 2.39L19.79 3.61Z";
var mdiAbacus = "M5 5H7V11H5V5M10 5H8V11H10V5M5 19H7V13H5V19M10 13H8V19H10V17H15V15H10V13M2 21H4V3H2V21M20 3V7H13V5H11V11H13V9H20V15H18V13H16V19H18V17H20V21H22V3H20Z";
var mdiAbjadArabic = "M12 4C10.08 4 8.5 5.58 8.5 7.5C8.5 8.43 8.88 9.28 9.5 9.91C7.97 10.91 7 12.62 7 14.5C7 17.53 9.47 20 12.5 20C14.26 20 16 19.54 17.5 18.66L16.5 16.93C15.28 17.63 13.9 18 12.5 18C10.56 18 9 16.45 9 14.5C9 12.91 10.06 11.53 11.59 11.12L16.8 9.72L16.28 7.79L11.83 9C11.08 8.9 10.5 8.28 10.5 7.5C10.5 6.66 11.16 6 12 6C12.26 6 12.5 6.07 12.75 6.2L13.75 4.47C13.22 4.16 12.61 4 12 4Z";
var mdiAbjadHebrew = "M3.9 4L9 10.03C7.58 10.17 6.36 11.18 6 12.59L4 20H6.07L7.92 13.11C8.09 12.46 8.69 12 9.36 12H10.69L17.47 20H20.1L15 13.97C16.42 13.83 17.64 12.82 18 11.41L20 4H17.93L16.08 10.89C15.91 11.54 15.31 12 14.64 12H13.31L6.53 4Z";
var mdiAbugidaDevanagari = "M8 3V5H11C12.32 5 13.41 5.83 13.82 7H6V9H14V10H12C9.25 10 7 12.25 7 15C7 17.75 9.25 20 12 20C12.77 20 13.45 19.73 14 19.3V21H16V17H14C13.55 17.62 12.83 18 12 18C10.33 18 9 16.67 9 15C9 13.33 10.33 12 12 12H16V9H18V7H15.9C15.43 4.72 13.41 3 11 3H8Z";
var mdiAbugidaThai = "M9 20C9 17.44 10.87 12.42 13.86 7.25C14.29 6.5 15.08 6 16 6C17.12 6 18 6.88 18 8V20H20V8C20 5.8 18.2 4 16 4C14.34 4 12.9 4.92 12.13 6.25C10.56 8.96 9.61 11.15 9 13.03V6.5C9 5.13 7.87 4 6.5 4C5.13 4 4 5.13 4 6.5C4 7.87 5.13 9 6.5 9C6.67 9 6.84 9 7 8.95V20M6.5 6C6.79 6 7 6.21 7 6.5C7 6.79 6.79 7 6.5 7C6.21 7 6 6.79 6 6.5C6 6.21 6.21 6 6.5 6Z";
var mdiAccessPoint = "M4.93,4.93C3.12,6.74 2,9.24 2,12C2,14.76 3.12,17.26 4.93,19.07L6.34,17.66C4.89,16.22 4,14.22 4,12C4,9.79 4.89,7.78 6.34,6.34L4.93,4.93M19.07,4.93L17.66,6.34C19.11,7.78 20,9.79 20,12C20,14.22 19.11,16.22 17.66,17.66L19.07,19.07C20.88,17.26 22,14.76 22,12C22,9.24 20.88,6.74 19.07,4.93M7.76,7.76C6.67,8.85 6,10.35 6,12C6,13.65 6.67,15.15 7.76,16.24L9.17,14.83C8.45,14.11 8,13.11 8,12C8,10.89 8.45,9.89 9.17,9.17L7.76,7.76M16.24,7.76L14.83,9.17C15.55,9.89 16,10.89 16,12C16,13.11 15.55,14.11 14.83,14.83L16.24,16.24C17.33,15.15 18,13.65 18,12C18,10.35 17.33,8.85 16.24,7.76M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiAccessPointCheck = "M20.59 14.84L21.75 16.25L17 21L14.25 18L15.41 16.84L17 18.43L20.59 14.84M19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12V12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93M15.96 12.36C16.6 12.13 17.28 12 18 12C18 10.35 17.33 8.85 16.24 7.76L14.83 9.17C15.55 9.89 16 10.89 16 12C16 12.12 15.97 12.24 15.96 12.36M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76Z";
var mdiAccessPointMinus = "M16 12C16 10.89 15.55 9.89 14.83 9.17L16.24 7.76C17.33 8.85 18 10.35 18 12C17.28 12 16.6 12.13 15.96 12.36C15.97 12.24 16 12.12 16 12M20 12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 12.12 20 12.23 20 12.34M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M14 19H22V17H14V19Z";
var mdiAccessPointNetwork = "M4.93,3.93C3.12,5.74 2,8.24 2,11C2,13.76 3.12,16.26 4.93,18.07L6.34,16.66C4.89,15.22 4,13.22 4,11C4,8.79 4.89,6.78 6.34,5.34L4.93,3.93M19.07,3.93L17.66,5.34C19.11,6.78 20,8.79 20,11C20,13.22 19.11,15.22 17.66,16.66L19.07,18.07C20.88,16.26 22,13.76 22,11C22,8.24 20.88,5.74 19.07,3.93M7.76,6.76C6.67,7.85 6,9.35 6,11C6,12.65 6.67,14.15 7.76,15.24L9.17,13.83C8.45,13.11 8,12.11 8,11C8,9.89 8.45,8.89 9.17,8.17L7.76,6.76M16.24,6.76L14.83,8.17C15.55,8.89 16,9.89 16,11C16,12.11 15.55,13.11 14.83,13.83L16.24,15.24C17.33,14.15 18,12.65 18,11C18,9.35 17.33,7.85 16.24,6.76M12,9A2,2 0 0,0 10,11A2,2 0 0,0 12,13A2,2 0 0,0 14,11A2,2 0 0,0 12,9M11,15V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V15H11Z";
var mdiAccessPointNetworkOff = "M14.83,13.83C15.55,13.11 16,12.11 16,11C16,9.89 15.55,8.89 14.83,8.17L16.24,6.76C17.33,7.85 18,9.35 18,11C18,12.65 17.33,14.15 16.24,15.24L14.83,13.83M14,11A2,2 0 0,0 12,9C11.4,9 10.87,9.27 10.5,9.68L13.32,12.5C13.73,12.13 14,11.6 14,11M17.66,16.66L19.07,18.07C20.88,16.26 22,13.76 22,11C22,8.24 20.88,5.74 19.07,3.93L17.66,5.34C19.11,6.78 20,8.79 20,11C20,13.22 19.11,15.22 17.66,16.66M22,21.18V20H20.82L22,21.18M20.27,22L21,22.73L19.73,24L17.73,22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V15.27L8.34,12.61C8.54,13.07 8.82,13.5 9.17,13.83L7.76,15.24C6.67,14.15 6,12.65 6,11C6,10.77 6,10.54 6.04,10.31L4.37,8.64C4.14,9.39 4,10.18 4,11C4,13.22 4.89,15.22 6.34,16.66L4.93,18.07C3.12,16.26 2,13.76 2,11C2,9.61 2.29,8.28 2.81,7.08L1,5.27L2.28,4L3.7,5.42L5.15,6.87L6.63,8.35V8.35L8.17,9.9L10.28,12L11,12.71L18.27,20H18.28L20.28,22H20.27M15.73,20L13,17.27V19H14A1,1 0 0,1 15,20H15.73Z";
var mdiAccessPointOff = "M20.84 22.73L12.1 14C12.06 14 12.03 14 12 14C10.9 14 10 13.11 10 12C10 11.97 10 11.94 10 11.9L8.4 10.29C8.15 10.81 8 11.38 8 12C8 13.11 8.45 14.11 9.17 14.83L7.76 16.24C6.67 15.15 6 13.65 6 12C6 10.83 6.34 9.74 6.93 8.82L5.5 7.37C4.55 8.67 4 10.27 4 12C4 14.22 4.89 16.22 6.34 17.66L4.93 19.07C3.12 17.26 2 14.76 2 12C2 9.72 2.77 7.63 4.06 5.95L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M15.93 12.73L17.53 14.33C17.83 13.61 18 12.83 18 12C18 10.35 17.33 8.85 16.24 7.76L14.83 9.17C15.55 9.89 16 10.89 16 12C16 12.25 15.97 12.5 15.93 12.73M19.03 15.83L20.5 17.28C21.44 15.75 22 13.94 22 12C22 9.24 20.88 6.74 19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 13.39 19.65 14.7 19.03 15.83Z";
var mdiAccessPointPlus = "M16 12C16 10.89 15.55 9.89 14.83 9.17L16.24 7.76C17.33 8.85 18 10.35 18 12C17.28 12 16.6 12.13 15.96 12.36C15.97 12.24 16 12.12 16 12M20 12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 12.12 20 12.23 20 12.34M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76M19 14H17V17H14V19H17V22H19V19H22V17H19V14Z";
var mdiAccessPointRemove = "M16 12C16 10.89 15.55 9.89 14.83 9.17L16.24 7.76C17.33 8.85 18 10.35 18 12C17.28 12 16.6 12.13 15.96 12.36C15.97 12.24 16 12.12 16 12M6.34 6.34L4.93 4.93C3.12 6.74 2 9.24 2 12S3.12 17.26 4.93 19.07L6.34 17.66C4.89 16.22 4 14.22 4 12C4 9.79 4.89 7.78 6.34 6.34M19.07 4.93L17.66 6.34C19.11 7.78 20 9.79 20 12C20 12.12 20 12.23 20 12.34C20.68 12.59 21.33 12.96 21.88 13.43C21.95 12.96 22 12.5 22 12C22 9.24 20.88 6.74 19.07 4.93M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M7.76 7.76C6.67 8.85 6 10.35 6 12S6.67 15.15 7.76 16.24L9.17 14.83C8.45 14.11 8 13.11 8 12S8.45 9.89 9.17 9.17L7.76 7.76M20.12 14.46L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.53L18 19.41L20.12 21.53L21.53 20.12L19.41 18L21.53 15.88L20.12 14.46Z";
var mdiAccount = "M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z";
var mdiAccountAlert = "M10 4A4 4 0 0 1 14 8A4 4 0 0 1 10 12A4 4 0 0 1 6 8A4 4 0 0 1 10 4M10 14C14.42 14 18 15.79 18 18V20H2V18C2 15.79 5.58 14 10 14M20 12V7H22V13H20M20 17V15H22V17H20Z";
var mdiAccountAlertOutline = "M20 12V7H22V13H20M20 17H22V15H20M10 13C12.67 13 18 14.34 18 17V20H2V17C2 14.34 7.33 13 10 13M10 4A4 4 0 0 1 14 8A4 4 0 0 1 10 12A4 4 0 0 1 6 8A4 4 0 0 1 10 4M10 14.9C7.03 14.9 3.9 16.36 3.9 17V18.1H16.1V17C16.1 16.36 12.97 14.9 10 14.9M10 5.9A2.1 2.1 0 0 0 7.9 8A2.1 2.1 0 0 0 10 10.1A2.1 2.1 0 0 0 12.1 8A2.1 2.1 0 0 0 10 5.9Z";
var mdiAccountArrowLeft = "M18,21L15,18L18,15V17H22V19H18V21M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,14C11.15,14 12.25,14.12 13.24,14.34C12.46,15.35 12,16.62 12,18C12,18.7 12.12,19.37 12.34,20H2V18C2,15.79 5.58,14 10,14Z";
var mdiAccountArrowLeftOutline = "M18,21L15,18L18,15V17H22V19H18V21M13,18C13,18.71 13.15,19.39 13.42,20H2V17C2,14.79 5.58,13 10,13C11,13 11.96,13.09 12.85,13.26C13.68,13.42 14.44,13.64 15.11,13.92C13.83,14.83 13,16.32 13,18M4,17V18H11C11,16.96 11.23,15.97 11.64,15.08L10,15C6.69,15 4,15.9 4,17M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,6A2,2 0 0,0 8,8A2,2 0 0,0 10,10A2,2 0 0,0 12,8A2,2 0 0,0 10,6Z";
var mdiAccountArrowRight = "M19,21V19H15V17H19V15L22,18L19,21M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,14C11.15,14 12.25,14.12 13.24,14.34C12.46,15.35 12,16.62 12,18C12,18.7 12.12,19.37 12.34,20H2V18C2,15.79 5.58,14 10,14Z";
var mdiAccountArrowRightOutline = "M19,21V19H15V17H19V15L22,18L19,21M13,18C13,18.71 13.15,19.39 13.42,20H2V17C2,14.79 5.58,13 10,13C11,13 11.96,13.09 12.85,13.26C13.68,13.42 14.44,13.64 15.11,13.92C13.83,14.83 13,16.32 13,18M4,17V18H11C11,16.96 11.23,15.97 11.64,15.08L10,15C6.69,15 4,15.9 4,17M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,6A2,2 0 0,0 8,8A2,2 0 0,0 10,10A2,2 0 0,0 12,8A2,2 0 0,0 10,6Z";
var mdiAccountBox = "M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9M3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5C3.89,3 3,3.9 3,5Z";
var mdiAccountBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H8A2,2 0 0,1 6,16V4A2,2 0 0,1 8,2H20M17,7A3,3 0 0,0 14,4A3,3 0 0,0 11,7A3,3 0 0,0 14,10A3,3 0 0,0 17,7M8,15V16H20V15C20,13 16,11.9 14,11.9C12,11.9 8,13 8,15Z";
var mdiAccountBoxMultipleOutline = "M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6M18.5 14.25C18.5 12.75 15.5 12 14 12S9.5 12.75 9.5 14.25V15H18.5M14 10.25C15.24 10.25 16.25 9.24 16.25 8S15.24 5.75 14 5.75 11.75 6.76 11.75 8 12.76 10.25 14 10.25M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.89 21.1 2 20 2M20 16H8V4H20V16Z";
var mdiAccountBoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z";
var mdiAccountCancel = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M17.5 13C15 13 13 15 13 17.5C13 20 15 22 17.5 22C20 22 22 20 22 17.5C22 15 20 13 17.5 13M10 14C5.58 14 2 15.79 2 18V20H11.5A6.5 6.5 0 0 1 11 17.5A6.5 6.5 0 0 1 11.95 14.14C11.32 14.06 10.68 14 10 14M17.5 14.5C19.16 14.5 20.5 15.84 20.5 17.5C20.5 18.06 20.35 18.58 20.08 19L16 14.92C16.42 14.65 16.94 14.5 17.5 14.5M14.92 16L19 20.08C18.58 20.35 18.06 20.5 17.5 20.5C15.84 20.5 14.5 19.16 14.5 17.5C14.5 16.94 14.65 16.42 14.92 16Z";
var mdiAccountCancelOutline = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M10 6A2 2 0 0 1 12 8A2 2 0 0 1 10 10A2 2 0 0 1 8 8A2 2 0 0 1 10 6M10 13C7.33 13 2 14.33 2 17V20H11.5A6.5 6.5 0 0 1 11.03 18.1H3.9V17C3.9 16.36 7.03 14.9 10 14.9C10.5 14.9 11 14.95 11.5 15.03A6.5 6.5 0 0 1 12.55 13.29C11.61 13.1 10.71 13 10 13M17.5 13C15 13 13 15 13 17.5C13 20 15 22 17.5 22C20 22 22 20 22 17.5C22 15 20 13 17.5 13M17.5 14.5C19.16 14.5 20.5 15.84 20.5 17.5C20.5 18.06 20.35 18.58 20.08 19L16 14.92C16.42 14.65 16.94 14.5 17.5 14.5M14.92 16L19 20.08C18.58 20.35 18.06 20.5 17.5 20.5C15.84 20.5 14.5 19.16 14.5 17.5C14.5 16.94 14.65 16.42 14.92 16Z";
var mdiAccountCash = "M11 8C11 10.21 9.21 12 7 12C4.79 12 3 10.21 3 8C3 5.79 4.79 4 7 4C9.21 4 11 5.79 11 8M11 14.72V20H0V18C0 15.79 3.13 14 7 14C8.5 14 9.87 14.27 11 14.72M24 20H13V3H24V20M16 11.5C16 10.12 17.12 9 18.5 9C19.88 9 21 10.12 21 11.5C21 12.88 19.88 14 18.5 14C17.12 14 16 12.88 16 11.5M22 7C20.9 7 20 6.11 20 5H17C17 6.11 16.11 7 15 7V16C16.11 16 17 16.9 17 18H20C20 16.9 20.9 16 22 16V7Z";
var mdiAccountCashOutline = "M16 11.5C16 10.12 17.12 9 18.5 9S21 10.12 21 11.5 19.88 14 18.5 14 16 12.88 16 11.5M13 3V20H24V3H13M22 16C20.9 16 20 16.9 20 18H17C17 16.9 16.11 16 15 16V7C16.11 7 17 6.11 17 5H20C20 6.11 20.9 7 22 7V16M7 6C8.1 6 9 6.9 9 8S8.1 10 7 10 5 9.1 5 8 5.9 6 7 6M7 4C4.79 4 3 5.79 3 8S4.79 12 7 12 11 10.21 11 8 9.21 4 7 4M7 14C3.13 14 0 15.79 0 18V20H11V18H2C2 17.42 3.75 16 7 16C8.83 16 10.17 16.45 11 16.95V14.72C9.87 14.27 8.5 14 7 14Z";
var mdiAccountCheck = "M21.1,12.5L22.5,13.91L15.97,20.5L12.5,17L13.9,15.59L15.97,17.67L21.1,12.5M10,17L13,20H3V18C3,15.79 6.58,14 11,14L12.89,14.11L10,17M11,4A4,4 0 0,1 15,8A4,4 0 0,1 11,12A4,4 0 0,1 7,8A4,4 0 0,1 11,4Z";
var mdiAccountCheckOutline = "M21.1,12.5L22.5,13.91L15.97,20.5L12.5,17L13.9,15.59L15.97,17.67L21.1,12.5M11,4A4,4 0 0,1 15,8A4,4 0 0,1 11,12A4,4 0 0,1 7,8A4,4 0 0,1 11,4M11,6A2,2 0 0,0 9,8A2,2 0 0,0 11,10A2,2 0 0,0 13,8A2,2 0 0,0 11,6M11,13C11.68,13 12.5,13.09 13.41,13.26L11.74,14.93L11,14.9C8.03,14.9 4.9,16.36 4.9,17V18.1H11.1L13,20H3V17C3,14.34 8.33,13 11,13Z";
var mdiAccountChild = "M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M12,9C13.63,9 15.12,9.35 16.5,10.05C17.84,10.76 18.5,11.61 18.5,12.61V18.38C18.5,19.5 17.64,20.44 15.89,21.19V19C15.89,18.05 15.03,17.38 13.31,16.97C12.75,16.84 12.31,16.78 12,16.78C11.13,16.78 10.3,16.95 9.54,17.3C8.77,17.64 8.31,18.08 8.16,18.61C9.5,19.14 10.78,19.41 12,19.41L13,19.31V21.94L12,22C10.63,22 9.33,21.72 8.11,21.19C6.36,20.44 5.5,19.5 5.5,18.38V12.61C5.5,11.61 6.16,10.76 7.5,10.05C8.88,9.35 10.38,9 12,9M12,11A2,2 0 0,0 10,13A2,2 0 0,0 12,15A2,2 0 0,0 14,13A2,2 0 0,0 12,11Z";
var mdiAccountChildCircle = "M12,12A1.5,1.5 0 0,1 13.5,13.5A1.5,1.5 0 0,1 12,15A1.5,1.5 0 0,1 10.5,13.5A1.5,1.5 0 0,1 12,12M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,16C12.72,16 13.4,16.15 14.04,16.5C14.68,16.8 15,17.2 15,17.67V19.41C16.34,18.81 17,18.08 17,17.2V12.8C17,12 16.5,11.35 15.45,10.8C14.4,10.26 13.25,10 12,10C10.75,10 9.6,10.26 8.55,10.8C7.5,11.35 7,12 7,12.8V17.2C7,18 7.53,18.69 8.63,19.22C9.72,19.75 10.84,20 12,20L13,19.92V17.91L12,18C11,18 10,17.8 9.05,17.39C9.17,17 9.53,16.69 10.13,16.41C10.72,16.13 11.34,16 12,16M12,4A2.5,2.5 0 0,0 9.5,6.5A2.5,2.5 0 0,0 12,9A2.5,2.5 0 0,0 14.5,6.5A2.5,2.5 0 0,0 12,4Z";
var mdiAccountChildOutline = "M12 17C10.9 17 10 16.1 10 15C10 13.9 10.9 13 12 13C13.1 13 14 13.9 14 15C14 16.1 13.1 17 12 17M12 10C14.34 10 19 11.16 19 13.5V18.63C19 19.5 18.31 20.24 17.34 20.79V13.38C17.34 12.82 14.6 11.54 12 11.54C9.4 11.54 6.66 12.82 6.66 13.38V18.75C6.66 19 7.31 19.46 8.28 19.85C9 19 10.93 18.56 12 18.56C13.33 18.56 16 19.22 16 20.56V21.39C14.63 21.88 13.07 22.13 12 22.13C10.93 22.13 9.38 21.88 8 21.39H8C6.37 20.81 5 19.89 5 18.63V13.5C5 11.16 9.66 10 12 10M12 3.75C11.03 3.75 10.25 4.53 10.25 5.5C10.25 6.47 11.03 7.25 12 7.25C12.97 7.25 13.75 6.47 13.75 5.5C13.75 4.53 12.97 3.75 12 3.75M12 9C10.07 9 8.5 7.43 8.5 5.5C8.5 3.57 10.07 2 12 2C13.93 2 15.5 3.57 15.5 5.5C15.5 7.43 13.93 9 12 9Z";
var mdiAccountCircle = "M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z";
var mdiAccountCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.07,18.28C7.5,17.38 10.12,16.5 12,16.5C13.88,16.5 16.5,17.38 16.93,18.28C15.57,19.36 13.86,20 12,20C10.14,20 8.43,19.36 7.07,18.28M18.36,16.83C16.93,15.09 13.46,14.5 12,14.5C10.54,14.5 7.07,15.09 5.64,16.83C4.62,15.5 4,13.82 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,13.82 19.38,15.5 18.36,16.83M12,6C10.06,6 8.5,7.56 8.5,9.5C8.5,11.44 10.06,13 12,13C13.94,13 15.5,11.44 15.5,9.5C15.5,7.56 13.94,6 12,6M12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11Z";
var mdiAccountClock = "M10.63,14.1C12.23,10.58 16.38,9.03 19.9,10.63C23.42,12.23 24.97,16.38 23.37,19.9C22.24,22.4 19.75,24 17,24C14.3,24 11.83,22.44 10.67,20H1V18C1.06,16.86 1.84,15.93 3.34,15.18C4.84,14.43 6.72,14.04 9,14C9.57,14 10.11,14.05 10.63,14.1V14.1M9,4C10.12,4.03 11.06,4.42 11.81,5.17C12.56,5.92 12.93,6.86 12.93,8C12.93,9.14 12.56,10.08 11.81,10.83C11.06,11.58 10.12,11.95 9,11.95C7.88,11.95 6.94,11.58 6.19,10.83C5.44,10.08 5.07,9.14 5.07,8C5.07,6.86 5.44,5.92 6.19,5.17C6.94,4.42 7.88,4.03 9,4M17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14Z";
var mdiAccountClockOutline = "M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14M17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12M17,10A7,7 0 0,1 24,17A7,7 0 0,1 17,24C14.21,24 11.8,22.36 10.67,20H1V17C1,14.34 6.33,13 9,13C9.6,13 10.34,13.07 11.12,13.2C12.36,11.28 14.53,10 17,10M10,17C10,16.3 10.1,15.62 10.29,15C9.87,14.93 9.43,14.9 9,14.9C6.03,14.9 2.9,16.36 2.9,17V18.1H10.09C10.03,17.74 10,17.37 10,17M9,4A4,4 0 0,1 13,8A4,4 0 0,1 9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4M9,5.9A2.1,2.1 0 0,0 6.9,8A2.1,2.1 0 0,0 9,10.1A2.1,2.1 0 0,0 11.1,8A2.1,2.1 0 0,0 9,5.9Z";
var mdiAccountCog = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M17 12C16.87 12 16.76 12.09 16.74 12.21L16.55 13.53C16.25 13.66 15.96 13.82 15.7 14L14.46 13.5C14.35 13.5 14.22 13.5 14.15 13.63L13.15 15.36C13.09 15.47 13.11 15.6 13.21 15.68L14.27 16.5C14.25 16.67 14.24 16.83 14.24 17C14.24 17.17 14.25 17.33 14.27 17.5L13.21 18.32C13.12 18.4 13.09 18.53 13.15 18.64L14.15 20.37C14.21 20.5 14.34 20.5 14.46 20.5L15.7 20C15.96 20.18 16.24 20.35 16.55 20.47L16.74 21.79C16.76 21.91 16.86 22 17 22H19C19.11 22 19.22 21.91 19.24 21.79L19.43 20.47C19.73 20.34 20 20.18 20.27 20L21.5 20.5C21.63 20.5 21.76 20.5 21.83 20.37L22.83 18.64C22.89 18.53 22.86 18.4 22.77 18.32L21.7 17.5C21.72 17.33 21.74 17.17 21.74 17C21.74 16.83 21.73 16.67 21.7 16.5L22.76 15.68C22.85 15.6 22.88 15.47 22.82 15.36L21.82 13.63C21.76 13.5 21.63 13.5 21.5 13.5L20.27 14C20 13.82 19.73 13.65 19.42 13.53L19.23 12.21C19.22 12.09 19.11 12 19 12H17M10 14C5.58 14 2 15.79 2 18V20H11.68A7 7 0 0 1 11 17A7 7 0 0 1 11.64 14.09C11.11 14.03 10.56 14 10 14M18 15.5C18.83 15.5 19.5 16.17 19.5 17C19.5 17.83 18.83 18.5 18 18.5C17.16 18.5 16.5 17.83 16.5 17C16.5 16.17 17.17 15.5 18 15.5Z";
var mdiAccountCogOutline = "M10 4A4 4 0 0 0 6 8A4 4 0 0 0 10 12A4 4 0 0 0 14 8A4 4 0 0 0 10 4M10 6A2 2 0 0 1 12 8A2 2 0 0 1 10 10A2 2 0 0 1 8 8A2 2 0 0 1 10 6M17 12C16.84 12 16.76 12.08 16.76 12.24L16.5 13.5C16.28 13.68 15.96 13.84 15.72 14L14.44 13.5C14.36 13.5 14.2 13.5 14.12 13.6L13.16 15.36C13.08 15.44 13.08 15.6 13.24 15.68L14.28 16.5V17.5L13.24 18.32C13.16 18.4 13.08 18.56 13.16 18.64L14.12 20.4C14.2 20.5 14.36 20.5 14.44 20.5L15.72 20C15.96 20.16 16.28 20.32 16.5 20.5L16.76 21.76C16.76 21.92 16.84 22 17 22H19C19.08 22 19.24 21.92 19.24 21.76L19.4 20.5C19.72 20.32 20.04 20.16 20.28 20L21.5 20.5C21.64 20.5 21.8 20.5 21.8 20.4L22.84 18.64C22.92 18.56 22.84 18.4 22.76 18.32L21.72 17.5V16.5L22.76 15.68C22.84 15.6 22.92 15.44 22.84 15.36L21.8 13.6C21.8 13.5 21.64 13.5 21.5 13.5L20.28 14C20.04 13.84 19.72 13.68 19.4 13.5L19.24 12.24C19.24 12.08 19.08 12 19 12H17M10 13C7.33 13 2 14.33 2 17V20H11.67C11.39 19.41 11.19 18.77 11.09 18.1H3.9V17C3.9 16.36 7.03 14.9 10 14.9C10.43 14.9 10.87 14.94 11.3 15C11.5 14.36 11.77 13.76 12.12 13.21C11.34 13.08 10.6 13 10 13M18.04 15.5C18.84 15.5 19.5 16.16 19.5 17.04C19.5 17.84 18.84 18.5 18.04 18.5C17.16 18.5 16.5 17.84 16.5 17.04C16.5 16.16 17.16 15.5 18.04 15.5Z";
var mdiAccountConvert = "M12 0L11.34 .03L15.15 3.84L16.5 2.5C19.75 4.07 22.09 7.24 22.45 11H23.95C23.44 4.84 18.29 0 12 0M12 4C10.07 4 8.5 5.57 8.5 7.5C8.5 9.43 10.07 11 12 11C13.93 11 15.5 9.43 15.5 7.5C15.5 5.57 13.93 4 12 4M.05 13C.56 19.16 5.71 24 12 24L12.66 23.97L8.85 20.16L7.5 21.5C4.25 19.94 1.91 16.76 1.55 13H.05M12 13C8.13 13 5 14.57 5 16.5V18H19V16.5C19 14.57 15.87 13 12 13Z";
var mdiAccountConvertOutline = "M12 0L11.34 .03L15.15 3.84L16.5 2.5C19.75 4.07 22.09 7.24 22.45 11H23.95C23.44 4.84 18.29 0 12 0M12 4C10.07 4 8.5 5.57 8.5 7.5C8.5 9.43 10.07 11 12 11C13.93 11 15.5 9.43 15.5 7.5C15.5 5.57 13.93 4 12 4M12 6C12.83 6 13.5 6.67 13.5 7.5C13.5 8.33 12.83 9 12 9C11.17 9 10.5 8.33 10.5 7.5C10.5 6.67 11.17 6 12 6M.05 13C.56 19.16 5.71 24 12 24L12.66 23.97L8.85 20.16L7.5 21.5C4.25 19.94 1.91 16.76 1.55 13H.05M12 13C8.13 13 5 14.57 5 16.5V18H19V16.5C19 14.57 15.87 13 12 13M12 15C14.11 15 15.61 15.53 16.39 16H7.61C8.39 15.53 9.89 15 12 15Z";
var mdiAccountCowboyHat = "M20 22H4V20C4 17.8 7.6 16 12 16S20 17.8 20 20M8 9H16V10C16 12.2 14.2 14 12 14S8 12.2 8 10M19 4C18.4 4 18 4.4 18 5V6H16.5L15.1 3C15 2.8 14.9 2.6 14.7 2.5C14.2 2 13.4 1.9 12.7 2.2L12 2.4L11.3 2.1C10.6 1.8 9.8 1.9 9.3 2.4C9.1 2.6 9 2.8 8.9 3L7.5 6H6V5C6 4.4 5.6 4 5 4S4 4.4 4 5V6C4 7.1 4.9 8 6 8H18C19.1 8 20 7.1 20 6V5C20 4.5 19.6 4 19 4Z";
var mdiAccountDetails = "M11 9C11 10.66 9.66 12 8 12C6.34 12 5 10.66 5 9C5 7.34 6.34 6 8 6C9.66 6 11 7.34 11 9M14 20H2V18C2 15.79 4.69 14 8 14C11.31 14 14 15.79 14 18M22 12V14H13V12M22 8V10H13V8M22 4V6H13V4Z";
var mdiAccountDetailsOutline = "M11 9C11 10.66 9.66 12 8 12C6.34 12 5 10.66 5 9C5 7.34 6.34 6 8 6C9.66 6 11 7.34 11 9M14 20H2V18C2 15.79 4.69 14 8 14C11.31 14 14 15.79 14 18M7 9C7 9.55 7.45 10 8 10C8.55 10 9 9.55 9 9C9 8.45 8.55 8 8 8C7.45 8 7 8.45 7 9M4 18H12C12 16.9 10.21 16 8 16C5.79 16 4 16.9 4 18M22 12V14H13V12M22 8V10H13V8M22 4V6H13V4Z";
var mdiAccountEdit = "M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.09 20.21,11.09 20.42,11.3L21.7,12.58C21.91,12.79 21.91,13.14 21.7,13.35M12,18.94L18.06,12.88L20.11,14.93L14.06,21H12V18.94M12,14C7.58,14 4,15.79 4,18V20H10V18.11L14,14.11C13.34,14.03 12.67,14 12,14M12,4A4,4 0 0,0 8,8A4,4 0 0,0 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4Z";
var mdiAccountEditOutline = "M2 17V20H10V18.11H3.9V17C3.9 16.36 7.03 14.9 10 14.9C10.96 14.91 11.91 15.04 12.83 15.28L14.35 13.76C12.95 13.29 11.5 13.03 10 13C7.33 13 2 14.33 2 17M10 4C7.79 4 6 5.79 6 8S7.79 12 10 12 14 10.21 14 8 12.21 4 10 4M10 10C8.9 10 8 9.11 8 8S8.9 6 10 6 12 6.9 12 8 11.11 10 10 10M21.7 13.35L20.7 14.35L18.65 12.35L19.65 11.35C19.86 11.14 20.21 11.14 20.42 11.35L21.7 12.63C21.91 12.84 21.91 13.19 21.7 13.4M12 18.94L18.06 12.88L20.11 14.88L14.11 20.95H12V18.94";
var mdiAccountGroup = "M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z";
var mdiAccountGroupOutline = "M12,5A3.5,3.5 0 0,0 8.5,8.5A3.5,3.5 0 0,0 12,12A3.5,3.5 0 0,0 15.5,8.5A3.5,3.5 0 0,0 12,5M12,7A1.5,1.5 0 0,1 13.5,8.5A1.5,1.5 0 0,1 12,10A1.5,1.5 0 0,1 10.5,8.5A1.5,1.5 0 0,1 12,7M5.5,8A2.5,2.5 0 0,0 3,10.5C3,11.44 3.53,12.25 4.29,12.68C4.65,12.88 5.06,13 5.5,13C5.94,13 6.35,12.88 6.71,12.68C7.08,12.47 7.39,12.17 7.62,11.81C6.89,10.86 6.5,9.7 6.5,8.5C6.5,8.41 6.5,8.31 6.5,8.22C6.2,8.08 5.86,8 5.5,8M18.5,8C18.14,8 17.8,8.08 17.5,8.22C17.5,8.31 17.5,8.41 17.5,8.5C17.5,9.7 17.11,10.86 16.38,11.81C16.5,12 16.63,12.15 16.78,12.3C16.94,12.45 17.1,12.58 17.29,12.68C17.65,12.88 18.06,13 18.5,13C18.94,13 19.35,12.88 19.71,12.68C20.47,12.25 21,11.44 21,10.5A2.5,2.5 0 0,0 18.5,8M12,14C9.66,14 5,15.17 5,17.5V19H19V17.5C19,15.17 14.34,14 12,14M4.71,14.55C2.78,14.78 0,15.76 0,17.5V19H3V17.07C3,16.06 3.69,15.22 4.71,14.55M19.29,14.55C20.31,15.22 21,16.06 21,17.07V19H24V17.5C24,15.76 21.22,14.78 19.29,14.55M12,16C13.53,16 15.24,16.5 16.23,17H7.77C8.76,16.5 10.47,16 12,16Z";
var mdiAccountHardHat = "M12,15C7.58,15 4,16.79 4,19V21H20V19C20,16.79 16.42,15 12,15M8,9A4,4 0 0,0 12,13A4,4 0 0,0 16,9M11.5,2C11.2,2 11,2.21 11,2.5V5.5H10V3C10,3 7.75,3.86 7.75,6.75C7.75,6.75 7,6.89 7,8H17C16.95,6.89 16.25,6.75 16.25,6.75C16.25,3.86 14,3 14,3V5.5H13V2.5C13,2.21 12.81,2 12.5,2H11.5Z";
var mdiAccountHeart = "M15,14C12.3,14 7,15.3 7,18V20H23V18C23,15.3 17.7,14 15,14M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12M5,15L4.4,14.5C2.4,12.6 1,11.4 1,9.9C1,8.7 2,7.7 3.2,7.7C3.9,7.7 4.6,8 5,8.5C5.4,8 6.1,7.7 6.8,7.7C8,7.7 9,8.6 9,9.9C9,11.4 7.6,12.6 5.6,14.5L5,15Z";
var mdiAccountHeartOutline = "M5,15L4.4,14.5C2.4,12.6 1,11.4 1,9.9C1,8.7 2,7.7 3.2,7.7C3.9,7.7 4.6,8 5,8.5C5.4,8 6.1,7.7 6.8,7.7C8,7.7 9,8.6 9,9.9C9,11.4 7.6,12.6 5.6,14.5L5,15M15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4M15,10.1A2.1,2.1 0 0,1 12.9,8A2.1,2.1 0 0,1 15,5.9C16.16,5.9 17.1,6.84 17.1,8C17.1,9.16 16.16,10.1 15,10.1M15,13C12.33,13 7,14.33 7,17V20H23V17C23,14.33 17.67,13 15,13M21.1,18.1H8.9V17C8.9,16.36 12,14.9 15,14.9C17.97,14.9 21.1,16.36 21.1,17V18.1Z";
var mdiAccountKey = "M11,10V12H10V14H8V12H5.83C5.42,13.17 4.31,14 3,14A3,3 0 0,1 0,11A3,3 0 0,1 3,8C4.31,8 5.42,8.83 5.83,10H11M3,10A1,1 0 0,0 2,11A1,1 0 0,0 3,12A1,1 0 0,0 4,11A1,1 0 0,0 3,10M16,14C18.67,14 24,15.34 24,18V20H8V18C8,15.34 13.33,14 16,14M16,12A4,4 0 0,1 12,8A4,4 0 0,1 16,4A4,4 0 0,1 20,8A4,4 0 0,1 16,12Z";
var mdiAccountKeyOutline = "M5.83,10C5.42,8.83 4.31,8 3,8A3,3 0 0,0 0,11A3,3 0 0,0 3,14C4.31,14 5.42,13.17 5.83,12H8V14H10V12H11V10H5.83M3,12A1,1 0 0,1 2,11A1,1 0 0,1 3,10A1,1 0 0,1 4,11A1,1 0 0,1 3,12M16,4A4,4 0 0,0 12,8A4,4 0 0,0 16,12A4,4 0 0,0 20,8A4,4 0 0,0 16,4M16,10.1A2.1,2.1 0 0,1 13.9,8A2.1,2.1 0 0,1 16,5.9C17.16,5.9 18.1,6.84 18.1,8C18.1,9.16 17.16,10.1 16,10.1M16,13C13.33,13 8,14.33 8,17V20H24V17C24,14.33 18.67,13 16,13M22.1,18.1H9.9V17C9.9,16.36 13,14.9 16,14.9C18.97,14.9 22.1,16.36 22.1,17V18.1Z";
var mdiAccountLock = "M22 17V16.5C22 15.12 20.88 14 19.5 14S17 15.12 17 16.5V17C16.45 17 16 17.45 16 18V22C16 22.55 16.45 23 17 23H22C22.55 23 23 22.55 23 22V18C23 17.45 22.55 17 22 17M21 17H18V16.5C18 15.67 18.67 15 19.5 15S21 15.67 21 16.5V17M8 8C8 5.79 9.79 4 12 4S16 5.79 16 8 14.21 12 12 12 8 10.21 8 8M14 20H4V18C4 15.79 7.58 14 12 14C13.27 14 14.46 14.15 15.53 14.41C15.32 14.82 15.15 15.25 15.07 15.71C14.42 16.26 14 17.08 14 18V20Z";
var mdiAccountLockOutline = "M22 17V16.5C22 15.12 20.88 14 19.5 14S17 15.12 17 16.5V17C16.45 17 16 17.45 16 18V22C16 22.55 16.45 23 17 23H22C22.55 23 23 22.55 23 22V18C23 17.45 22.55 17 22 17M21 17H18V16.5C18 15.67 18.67 15 19.5 15S21 15.67 21 16.5V17M14 20H4V17C4 14.33 9.33 13 12 13C13.08 13 14.6 13.22 16 13.66C15.61 14.15 15.33 14.74 15.16 15.38C14.19 15.1 13.09 14.9 12 14.9C9.03 14.9 5.9 16.36 5.9 17V18.1H14V20M12 12C14.21 12 16 10.21 16 8S14.21 4 12 4 8 5.79 8 8 9.79 12 12 12M12 6C13.11 6 14 6.9 14 8S13.11 10 12 10 10 9.11 10 8 10.9 6 12 6Z";
var mdiAccountMinus = "M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M1,10V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z";
var mdiAccountMinusOutline = "M15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4M15,5.9C16.16,5.9 17.1,6.84 17.1,8C17.1,9.16 16.16,10.1 15,10.1A2.1,2.1 0 0,1 12.9,8A2.1,2.1 0 0,1 15,5.9M1,10V12H9V10H1M15,13C12.33,13 7,14.33 7,17V20H23V17C23,14.33 17.67,13 15,13M15,14.9C17.97,14.9 21.1,16.36 21.1,17V18.1H8.9V17C8.9,16.36 12,14.9 15,14.9Z";
var mdiAccountMultiple = "M16 17V19H2V17S2 13 9 13 16 17 16 17M12.5 7.5A3.5 3.5 0 1 0 9 11A3.5 3.5 0 0 0 12.5 7.5M15.94 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13M15 4A3.39 3.39 0 0 0 13.07 4.59A5 5 0 0 1 13.07 10.41A3.39 3.39 0 0 0 15 11A3.5 3.5 0 0 0 15 4Z";
var mdiAccountMultipleCheck = "M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M7.34 8.92L8.5 10.33L3.75 15.08L1 12.08L2.16 10.92L3.75 12.5L7.34 8.92";
var mdiAccountMultipleCheckOutline = "M13 11A3 3 0 1 0 10 8A3 3 0 0 0 13 11M13 7A1 1 0 1 1 12 8A1 1 0 0 1 13 7M17.11 10.86A5 5 0 0 0 17.11 5.14A2.91 2.91 0 0 1 18 5A3 3 0 0 1 18 11A2.91 2.91 0 0 1 17.11 10.86M13 13C7 13 7 17 7 17V19H19V17S19 13 13 13M9 17C9 16.71 9.32 15 13 15C16.5 15 16.94 16.56 17 17M24 17V19H21V17A5.6 5.6 0 0 0 19.2 13.06C24 13.55 24 17 24 17M7.34 8.92L8.5 10.33L3.75 15.08L1 12.08L2.16 10.92L3.75 12.5L7.34 8.92";
var mdiAccountMultipleMinus = "M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M8 10H0V12H8Z";
var mdiAccountMultipleMinusOutline = "M13 11A3 3 0 1 0 10 8A3 3 0 0 0 13 11M13 7A1 1 0 1 1 12 8A1 1 0 0 1 13 7M17.11 10.86A5 5 0 0 0 17.11 5.14A2.91 2.91 0 0 1 18 5A3 3 0 0 1 18 11A2.91 2.91 0 0 1 17.11 10.86M13 13C7 13 7 17 7 17V19H19V17S19 13 13 13M9 17C9 16.71 9.32 15 13 15C16.5 15 16.94 16.56 17 17M24 17V19H21V17A5.6 5.6 0 0 0 19.2 13.06C24 13.55 24 17 24 17M8 12H0V10H8Z";
var mdiAccountMultipleOutline = "M13.07 10.41A5 5 0 0 0 13.07 4.59A3.39 3.39 0 0 1 15 4A3.5 3.5 0 0 1 15 11A3.39 3.39 0 0 1 13.07 10.41M5.5 7.5A3.5 3.5 0 1 1 9 11A3.5 3.5 0 0 1 5.5 7.5M7.5 7.5A1.5 1.5 0 1 0 9 6A1.5 1.5 0 0 0 7.5 7.5M16 17V19H2V17S2 13 9 13 16 17 16 17M14 17C13.86 16.22 12.67 15 9 15S4.07 16.31 4 17M15.95 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13Z";
var mdiAccountMultiplePlus = "M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M8 10H5V7H3V10H0V12H3V15H5V12H8Z";
var mdiAccountMultiplePlusOutline = "M13 11A3 3 0 1 0 10 8A3 3 0 0 0 13 11M13 7A1 1 0 1 1 12 8A1 1 0 0 1 13 7M17.11 10.86A5 5 0 0 0 17.11 5.14A2.91 2.91 0 0 1 18 5A3 3 0 0 1 18 11A2.91 2.91 0 0 1 17.11 10.86M13 13C7 13 7 17 7 17V19H19V17S19 13 13 13M9 17C9 16.71 9.32 15 13 15C16.5 15 16.94 16.56 17 17M24 17V19H21V17A5.6 5.6 0 0 0 19.2 13.06C24 13.55 24 17 24 17M8 12H5V15H3V12H0V10H3V7H5V10H8Z";
var mdiAccountMultipleRemove = "M24 17V19H21V17C21 15.45 20.3 14.06 19.18 13.06C24 13.55 24 17 24 17M18 5C19.66 5 21 6.34 21 8C21 9.66 19.66 11 18 11C17.69 11 17.38 10.95 17.1 10.86C17.67 10.05 18 9.07 18 8C18 6.94 17.67 5.95 17.1 5.14C17.38 5.05 17.69 5 18 5M13 5C14.66 5 16 6.34 16 8C16 9.66 14.66 11 13 11C11.34 11 10 9.66 10 8C10 6.34 11.34 5 13 5M19 17V19H7V17C7 14.79 9.69 13 13 13C16.31 13 19 14.79 19 17M.464 13.12L2.59 11L.464 8.88L1.88 7.46L4 9.59L6.12 7.46L7.54 8.88L5.41 11L7.54 13.12L6.12 14.54L4 12.41L1.88 14.54Z";
var mdiAccountMultipleRemoveOutline = "M24 17V19H21V17C21 15.45 20.3 14.06 19.18 13.06C24 13.55 24 17 24 17M18 5C19.66 5 21 6.34 21 8C21 9.66 19.66 11 18 11C17.69 11 17.38 10.95 17.1 10.86C17.67 10.05 18 9.07 18 8C18 6.94 17.67 5.95 17.1 5.14C17.38 5.05 17.69 5 18 5M13 5C14.66 5 16 6.34 16 8C16 9.66 14.66 11 13 11C11.34 11 10 9.66 10 8C10 6.34 11.34 5 13 5M19 17V19H7V17C7 14.79 9.69 13 13 13C16.31 13 19 14.79 19 17M13 7C12.45 7 12 7.45 12 8C12 8.55 12.45 9 13 9C13.55 9 14 8.55 14 8C14 7.45 13.55 7 13 7M13 15C10.79 15 9 15.9 9 17H17C17 15.9 15.21 15 13 15M.464 13.12L2.59 11L.464 8.88L1.88 7.46L4 9.59L6.12 7.46L7.54 8.88L5.41 11L7.54 13.12L6.12 14.54L4 12.41L1.88 14.54Z";
var mdiAccountMusic = "M11,14C12,14 13.05,14.16 14.2,14.44C13.39,15.31 13,16.33 13,17.5C13,18.39 13.25,19.23 13.78,20H3V18C3,16.81 3.91,15.85 5.74,15.12C7.57,14.38 9.33,14 11,14M11,12C9.92,12 9,11.61 8.18,10.83C7.38,10.05 7,9.11 7,8C7,6.92 7.38,6 8.18,5.18C9,4.38 9.92,4 11,4C12.11,4 13.05,4.38 13.83,5.18C14.61,6 15,6.92 15,8C15,9.11 14.61,10.05 13.83,10.83C13.05,11.61 12.11,12 11,12M18.5,10H20L22,10V12H20V17.5A2.5,2.5 0 0,1 17.5,20A2.5,2.5 0 0,1 15,17.5A2.5,2.5 0 0,1 17.5,15C17.86,15 18.19,15.07 18.5,15.21V10Z";
var mdiAccountMusicOutline = "M11,4A4,4 0 0,1 15,8A4,4 0 0,1 11,12A4,4 0 0,1 7,8A4,4 0 0,1 11,4M11,6A2,2 0 0,0 9,8A2,2 0 0,0 11,10A2,2 0 0,0 13,8A2,2 0 0,0 11,6M11,13C12.1,13 13.66,13.23 15.11,13.69C14.5,14.07 14,14.6 13.61,15.23C12.79,15.03 11.89,14.9 11,14.9C8.03,14.9 4.9,16.36 4.9,17V18.1H13.04C13.13,18.8 13.38,19.44 13.76,20H3V17C3,14.34 8.33,13 11,13M18.5,10H20L22,10V12H20V17.5A2.5,2.5 0 0,1 17.5,20A2.5,2.5 0 0,1 15,17.5A2.5,2.5 0 0,1 17.5,15C17.86,15 18.19,15.07 18.5,15.21V10Z";
var mdiAccountNetwork = "M13,17V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H5V15.5C5,13.57 8.13,12 12,12C15.87,12 19,13.57 19,15.5V17H13M12,3A3.5,3.5 0 0,1 15.5,6.5A3.5,3.5 0 0,1 12,10A3.5,3.5 0 0,1 8.5,6.5A3.5,3.5 0 0,1 12,3Z";
var mdiAccountNetworkOutline = "M12,10A3.5,3.5 0 0,0 15.5,6.5A3.5,3.5 0 0,0 12,3A3.5,3.5 0 0,0 8.5,6.5A3.5,3.5 0 0,0 12,10M12,5A1.5,1.5 0 0,1 13.5,6.5A1.5,1.5 0 0,1 12,8A1.5,1.5 0 0,1 10.5,6.5A1.5,1.5 0 0,1 12,5M15,20A1,1 0 0,0 14,19H13V17H19V15.5C19,13.57 15.87,12 12,12C8.13,12 5,13.57 5,15.5V17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7.61,15C8.39,14.53 9.89,14 12,14C14.11,14 15.61,14.53 16.39,15H7.61Z";
var mdiAccountOff = "M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12.28,14L18.28,20L20,21.72L18.73,23L15.73,20H4V18C4,16.16 6.5,14.61 9.87,14.14L2.78,7.05L4.05,5.78L12.28,14M20,18V19.18L15.14,14.32C18,14.93 20,16.35 20,18Z";
var mdiAccountOffOutline = "M2.75,7L4.03,5.75L13.26,15L20,21.72L18.73,23L15.73,20H4V17C4,15.14 6.61,13.92 9.09,13.36L2.75,7M20,17V19.18L18.1,17.28V17C18.1,16.74 17.6,16.35 16.8,16L14,13.18C16.71,13.63 20,14.91 20,17M5.9,17V18.1H13.83L10.72,15C8.19,15.3 5.9,16.45 5.9,17M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6Z";
var mdiAccountOutline = "M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z";
var mdiAccountPlus = "M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z";
var mdiAccountPlusOutline = "M15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4M15,5.9C16.16,5.9 17.1,6.84 17.1,8C17.1,9.16 16.16,10.1 15,10.1A2.1,2.1 0 0,1 12.9,8A2.1,2.1 0 0,1 15,5.9M4,7V10H1V12H4V15H6V12H9V10H6V7H4M15,13C12.33,13 7,14.33 7,17V20H23V17C23,14.33 17.67,13 15,13M15,14.9C17.97,14.9 21.1,16.36 21.1,17V18.1H8.9V17C8.9,16.36 12,14.9 15,14.9Z";
var mdiAccountQuestion = "M13,8A4,4 0 0,1 9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4A4,4 0 0,1 13,8M17,18V20H1V18C1,15.79 4.58,14 9,14C13.42,14 17,15.79 17,18M20.5,14.5V16H19V14.5H20.5M18.5,9.5H17V9A3,3 0 0,1 20,6A3,3 0 0,1 23,9C23,9.97 22.5,10.88 21.71,11.41L21.41,11.6C20.84,12 20.5,12.61 20.5,13.3V13.5H19V13.3C19,12.11 19.6,11 20.59,10.35L20.88,10.16C21.27,9.9 21.5,9.47 21.5,9A1.5,1.5 0 0,0 20,7.5A1.5,1.5 0 0,0 18.5,9V9.5Z";
var mdiAccountQuestionOutline = "M20.5,14.5V16H19V14.5H20.5M18.5,9.5H17V9A3,3 0 0,1 20,6A3,3 0 0,1 23,9C23,9.97 22.5,10.88 21.71,11.41L21.41,11.6C20.84,12 20.5,12.61 20.5,13.3V13.5H19V13.3C19,12.11 19.6,11 20.59,10.35L20.88,10.16C21.27,9.9 21.5,9.47 21.5,9A1.5,1.5 0 0,0 20,7.5A1.5,1.5 0 0,0 18.5,9V9.5M9,13C11.67,13 17,14.34 17,17V20H1V17C1,14.34 6.33,13 9,13M9,4A4,4 0 0,1 13,8A4,4 0 0,1 9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4M9,14.9C6.03,14.9 2.9,16.36 2.9,17V18.1H15.1V17C15.1,16.36 11.97,14.9 9,14.9M9,5.9A2.1,2.1 0 0,0 6.9,8A2.1,2.1 0 0,0 9,10.1A2.1,2.1 0 0,0 11.1,8A2.1,2.1 0 0,0 9,5.9Z";
var mdiAccountReactivate = "M21.5 9H16.5L18.36 7.14C16.9 5.23 14.59 4 12 4C7.58 4 4 7.58 4 12C4 13.83 4.61 15.5 5.64 16.85C6.86 15.45 9.15 14.5 12 14.5C14.85 14.5 17.15 15.45 18.36 16.85C19.39 15.5 20 13.83 20 12H22C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C15.14 2 17.95 3.45 19.78 5.72L21.5 4V9M12 7C13.66 7 15 8.34 15 10C15 11.66 13.66 13 12 13C10.34 13 9 11.66 9 10C9 8.34 10.34 7 12 7Z";
var mdiAccountReactivateOutline = "M21.5 9H16.5L18.36 7.14C16.9 5.23 14.59 4 12 4C7.58 4 4 7.58 4 12C4 13.83 4.61 15.5 5.64 16.85C6.86 15.45 9.15 14.5 12 14.5C14.85 14.5 17.15 15.45 18.36 16.85C19.39 15.5 20 13.83 20 12H22C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C15.14 2 17.95 3.45 19.78 5.72L21.5 4V9M12 20C13.9 20 15.64 19.34 17 18.24C16.36 17.23 14.45 16.5 12 16.5C9.55 16.5 7.64 17.23 7 18.24C8.36 19.34 10.1 20 12 20M12 6C13.93 6 15.5 7.57 15.5 9.5C15.5 11.43 13.93 13 12 13C10.07 13 8.5 11.43 8.5 9.5C8.5 7.57 10.07 6 12 6M12 8C11.17 8 10.5 8.67 10.5 9.5C10.5 10.33 11.17 11 12 11C12.83 11 13.5 10.33 13.5 9.5C13.5 8.67 12.83 8 12 8Z";
var mdiAccountRemove = "M15,14C17.67,14 23,15.33 23,18V20H7V18C7,15.33 12.33,14 15,14M15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12M5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88L2.88,7.46L5,9.59Z";
var mdiAccountRemoveOutline = "M1.46,8.88L2.88,7.46L5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88M15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4M15,5.9A2.1,2.1 0 0,0 12.9,8A2.1,2.1 0 0,0 15,10.1C16.16,10.1 17.1,9.16 17.1,8C17.1,6.84 16.16,5.9 15,5.9M15,13C17.67,13 23,14.33 23,17V20H7V17C7,14.33 12.33,13 15,13M15,14.9C12,14.9 8.9,16.36 8.9,17V18.1H21.1V17C21.1,16.36 17.97,14.9 15,14.9Z";
var mdiAccountSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M10,4A4,4 0 0,1 14,8C14,8.91 13.69,9.75 13.18,10.43C12.32,10.75 11.55,11.26 10.91,11.9L10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M2,20V18C2,15.88 5.31,14.14 9.5,14C9.18,14.78 9,15.62 9,16.5C9,17.79 9.38,19 10,20H2Z";
var mdiAccountSearchOutline = "M10,13C9.65,13.59 9.36,14.24 9.19,14.93C6.5,15.16 3.9,16.42 3.9,17V18.1H9.2C9.37,18.78 9.65,19.42 10,20H2V17C2,14.34 7.33,13 10,13M10,4A4,4 0 0,1 14,8C14,8.91 13.69,9.75 13.18,10.43C12.32,10.75 11.55,11.26 10.91,11.9L10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,5.9A2.1,2.1 0 0,0 7.9,8A2.1,2.1 0 0,0 10,10.1A2.1,2.1 0 0,0 12.1,8A2.1,2.1 0 0,0 10,5.9M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14Z";
var mdiAccountSettings = "M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z";
var mdiAccountSettingsOutline = "M12 4C14.21 4 16 5.79 16 8S14.21 12 12 12 8 10.21 8 8 9.79 4 12 4M12 6C10.9 6 10 6.9 10 8S10.9 10 12 10 14 9.11 14 8 13.11 6 12 6M12 13C14.67 13 20 14.33 20 17V20H4V17C4 14.33 9.33 13 12 13M12 14.9C9.03 14.9 5.9 16.36 5.9 17V18.1H18.1V17C18.1 16.36 14.97 14.9 12 14.9M13 22H11V24H13V22M17 22H15V24H17V22M9 22H7V24H9V22Z";
var mdiAccountStar = "M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12M5,13.28L7.45,14.77L6.8,11.96L9,10.08L6.11,9.83L5,7.19L3.87,9.83L1,10.08L3.18,11.96L2.5,14.77L5,13.28Z";
var mdiAccountStarOutline = "M15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4M15,5.9A2.1,2.1 0 0,0 12.9,8A2.1,2.1 0 0,0 15,10.1C16.16,10.1 17.1,9.16 17.1,8C17.1,6.84 16.16,5.9 15,5.9M15,13C17.67,13 23,14.33 23,17V20H7V17C7,14.33 12.33,13 15,13M15,14.9C12,14.9 8.9,16.36 8.9,17V18.1H21.1V17C21.1,16.36 17.97,14.9 15,14.9M5,13.28L2.5,14.77L3.18,11.96L1,10.08L3.87,9.83L5,7.19L6.11,9.83L9,10.08L6.8,11.96L7.45,14.77L5,13.28Z";
var mdiAccountSupervisor = "M16.5,12A2.5,2.5 0 0,0 19,9.5A2.5,2.5 0 0,0 16.5,7A2.5,2.5 0 0,0 14,9.5A2.5,2.5 0 0,0 16.5,12M9,11A3,3 0 0,0 12,8A3,3 0 0,0 9,5A3,3 0 0,0 6,8A3,3 0 0,0 9,11M16.5,14C14.67,14 11,14.92 11,16.75V19H22V16.75C22,14.92 18.33,14 16.5,14M9,13C6.67,13 2,14.17 2,16.5V19H9V16.75C9,15.9 9.33,14.41 11.37,13.28C10.5,13.1 9.66,13 9,13Z";
var mdiAccountSupervisorCircle = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.6,8.34C16.67,8.34 17.53,9.2 17.53,10.27C17.53,11.34 16.67,12.2 15.6,12.2A1.93,1.93 0 0,1 13.67,10.27C13.66,9.2 14.53,8.34 15.6,8.34M9.6,6.76C10.9,6.76 11.96,7.82 11.96,9.12C11.96,10.42 10.9,11.5 9.6,11.5C8.3,11.5 7.24,10.42 7.24,9.12C7.24,7.81 8.29,6.76 9.6,6.76M9.6,15.89V19.64C7.2,18.89 5.3,17.04 4.46,14.68C5.5,13.56 8.13,13 9.6,13C10.13,13 10.8,13.07 11.5,13.21C9.86,14.08 9.6,15.23 9.6,15.89M12,20C11.72,20 11.46,20 11.2,19.96V15.89C11.2,14.47 14.14,13.76 15.6,13.76C16.67,13.76 18.5,14.15 19.44,14.91C18.27,17.88 15.38,20 12,20Z";
var mdiAccountSupervisorCircleOutline = "M12.5 10C12.5 8.34 11.16 7 9.5 7C7.86 7 6.5 8.34 6.5 10C6.5 11.64 7.86 13 9.5 13C11.16 13 12.5 11.64 12.5 10M9.5 11C8.96 11 8.5 10.54 8.5 10C8.5 9.44 8.96 9 9.5 9C10.06 9 10.5 9.44 10.5 10C10.5 10.54 10.06 11 9.5 11M16 13C17.12 13 18 12.1 18 11C18 9.88 17.12 9 16 9C14.9 9 14 9.88 14 11C14 12.1 14.9 13 16 13M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2M5.85 17.11C6.53 16.57 8.12 16 9.5 16C9.58 16 9.66 16 9.74 16C10 15.37 10.41 14.72 11.04 14.15C10.5 14.05 9.95 14 9.5 14C8.21 14 6.12 14.44 4.78 15.42C4.28 14.38 4 13.22 4 12C4 7.58 7.59 4 12 4C16.41 4 20 7.58 20 12C20 13.19 19.73 14.33 19.25 15.36C18.25 14.77 16.89 14.5 16 14.5C14.5 14.5 11.5 15.3 11.5 17.19V19.97C9.24 19.84 7.22 18.76 5.85 17.11Z";
var mdiAccountSupervisorOutline = "M16.5 15.5C18.22 15.5 20.25 16.3 20.5 16.78V17.5H12.5V16.78C12.75 16.3 14.78 15.5 16.5 15.5M16.5 14C14.67 14 11 14.92 11 16.75V19H22V16.75C22 14.92 18.33 14 16.5 14M9 13C6.67 13 2 14.17 2 16.5V19H9V17.5H3.5V16.5C3.5 15.87 6.29 14.34 9.82 14.5A5.12 5.12 0 0 1 11.37 13.25A12.28 12.28 0 0 0 9 13M9 6.5A1.5 1.5 0 1 1 7.5 8A1.5 1.5 0 0 1 9 6.5M9 5A3 3 0 1 0 12 8A3 3 0 0 0 9 5M16.5 8.5A1 1 0 1 1 15.5 9.5A1 1 0 0 1 16.5 8.5M16.5 7A2.5 2.5 0 1 0 19 9.5A2.5 2.5 0 0 0 16.5 7Z";
var mdiAccountSwitch = "M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M2 13C2 13 2 9 8 9S14 13 14 13V15H2V13M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z";
var mdiAccountSwitchOutline = "M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M8 11C11.5 11 11.94 12.56 12 13H4C4.06 12.56 4.5 11 8 11M8 9C2 9 2 13 2 13V15H14V13C14 13 14 9 8 9M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 3C8.55 3 9 3.45 9 4S8.55 5 8 5 7 4.55 7 4 7.45 3 8 3M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z";
var mdiAccountTie = "M12 3C14.21 3 16 4.79 16 7S14.21 11 12 11 8 9.21 8 7 9.79 3 12 3M16 13.54C16 14.6 15.72 17.07 13.81 19.83L13 15L13.94 13.12C13.32 13.05 12.67 13 12 13S10.68 13.05 10.06 13.12L11 15L10.19 19.83C8.28 17.07 8 14.6 8 13.54C5.61 14.24 4 15.5 4 17V21H20V17C20 15.5 18.4 14.24 16 13.54Z";
var mdiAccountTieOutline = "M16.36 12.76C18.31 13.42 20 14.5 20 16V21H4V16C4 14.5 5.69 13.42 7.65 12.76L8.27 14L8.5 14.5C7 14.96 5.9 15.62 5.9 16V19.1H10.12L11 14.03L10.06 12.15C10.68 12.08 11.33 12.03 12 12.03C12.67 12.03 13.32 12.08 13.94 12.15L13 14.03L13.88 19.1H18.1V16C18.1 15.62 17 14.96 15.5 14.5L15.73 14L16.36 12.76M12 5C10.9 5 10 5.9 10 7C10 8.1 10.9 9 12 9C13.1 9 14 8.1 14 7C14 5.9 13.1 5 12 5M12 11C9.79 11 8 9.21 8 7C8 4.79 9.79 3 12 3C14.21 3 16 4.79 16 7C16 9.21 14.21 11 12 11Z";
var mdiAccountTieVoice = "M16.75 4.36C18.77 6.56 18.77 9.61 16.75 11.63L15.07 9.94C15.91 8.76 15.91 7.23 15.07 6.05L16.75 4.36M20.06 1C24 5.05 23.96 11.11 20.06 15L18.43 13.37C21.2 10.19 21.2 5.65 18.43 2.63L20.06 1M9 4C11.2 4 13 5.79 13 8S11.2 12 9 12 5 10.21 5 8 6.79 4 9 4M13 14.54C13 15.6 12.71 18.07 10.8 20.83L10 16L10.93 14.12C10.31 14.05 9.66 14 9 14S7.67 14.05 7.05 14.12L8 16L7.18 20.83C5.27 18.07 5 15.6 5 14.54C2.6 15.24 .994 16.5 .994 18V22H17V18C17 16.5 15.39 15.24 13 14.54Z";
var mdiAccountTieVoiceOff = "M12.7 9.5L7.5 4.3C7.96 4.11 8.46 4 9 4C11.2 4 13 5.79 13 8C13 8.53 12.89 9.04 12.7 9.5M16.75 11.63C18.77 9.61 18.77 6.56 16.75 4.36L15.07 6.05C15.91 7.23 15.91 8.76 15.07 9.94L16.75 11.63M20.06 15C23.96 11.11 24 5.05 20.06 1L18.43 2.63C21.2 5.65 21.2 10.19 18.43 13.37L20.06 15M2.39 1.73L1.11 3L5.13 7C5.05 7.34 5 7.66 5 8C5 10.21 6.79 12 9 12C9.33 12 9.66 11.94 9.97 11.86L13 14.87C12.93 16.06 12.54 18.32 10.8 20.83L10 16L10.93 14.12C10.31 14.05 9.66 14 9 14C8.32 14 7.67 14.05 7.05 14.12L8 16L7.18 20.83C5.27 18.07 5 15.6 5 14.54C2.6 15.24 .994 16.5 .994 18V22H17V18.88L20.84 22.73L22.11 21.46L2.39 1.73Z";
var mdiAccountTieVoiceOffOutline = "M9.22 6L7.5 4.3C7.96 4.11 8.47 4 9 4C11.21 4 13 5.79 13 8C13 8.53 12.89 9.04 12.7 9.5L11 7.78C10.87 6.86 10.14 6.13 9.22 6M20.06 15C23.96 11.11 24 5.05 20.06 1L18.43 2.63C21.2 5.65 21.2 10.19 18.43 13.37L20.06 15M16.75 11.63C18.77 9.61 18.77 6.56 16.75 4.36L15.07 6.05C15.91 7.23 15.91 8.76 15.07 9.94L16.75 11.63M2.39 1.73L1.11 3L5.14 7.03C5.06 7.34 5 7.66 5 8C5 10.21 6.79 12 9 12C9.34 12 9.66 11.94 9.97 11.86L12.86 14.75L12.73 15L12.5 15.5C13.3 15.74 13.97 16.05 14.44 16.33L15.1 17V20.1H10.88L10 15.03L10.94 13.15C10.32 13.08 9.67 13.03 9 13.03S7.68 13.08 7.06 13.15L8 15.03L7.12 20.1H2.9V17C2.9 16.62 4 15.96 5.5 15.5L5.27 15L4.65 13.76C2.69 14.42 1 15.5 1 17V22H17V18.89L20.84 22.73L22.11 21.46L2.39 1.73Z";
var mdiAccountTieVoiceOutline = "M16.75 4.36C18.77 6.56 18.77 9.61 16.75 11.63L15.07 9.94C15.91 8.76 15.91 7.23 15.07 6.05L16.75 4.36M20.06 1C24 5.05 23.96 11.11 20.06 15L18.43 13.37C21.2 10.19 21.2 5.65 18.43 2.63L20.06 1M13.36 13.76C15.31 14.42 17 15.5 17 17V22H1V17C1 15.5 2.69 14.42 4.65 13.76L5.27 15L5.5 15.5C4 15.96 2.9 16.62 2.9 17V20.1H7.12L8 15.03L7.06 13.15C7.68 13.08 8.33 13.03 9 13.03S10.32 13.08 10.94 13.15L10 15.03L10.88 20.1H15.1V17C15.1 16.62 14 15.96 12.5 15.5L12.73 15L13.36 13.76M9 6C7.9 6 7 6.9 7 8S7.9 10 9 10 11 9.1 11 8 10.1 6 9 6M9 12C6.79 12 5 10.21 5 8S6.79 4 9 4 13 5.79 13 8 11.21 12 9 12Z";
var mdiAccountVoice = "M9,5A4,4 0 0,1 13,9A4,4 0 0,1 9,13A4,4 0 0,1 5,9A4,4 0 0,1 9,5M9,15C11.67,15 17,16.34 17,19V21H1V19C1,16.34 6.33,15 9,15M16.76,5.36C18.78,7.56 18.78,10.61 16.76,12.63L15.08,10.94C15.92,9.76 15.92,8.23 15.08,7.05L16.76,5.36M20.07,2C24,6.05 23.97,12.11 20.07,16L18.44,14.37C21.21,11.19 21.21,6.65 18.44,3.63L20.07,2Z";
var mdiAdjust = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12Z";
var mdiAdobe = "M14.58,3H22V19.67L14.58,3M9.42,3H2V19.67L9.42,3M12,9.17L16.67,19.67H13.5L12.17,16.33H8.75L12,9.17Z";
var mdiAdobeAcrobat = "M21.8 14.5C21.3 13.7 20.1 13.4 18.1 13.4C17.4 13.4 16.7 13.4 16 13.5C15.5 13.2 15 12.9 14.6 12.6C13.6 11.8 12.7 10.3 12 8.5C12 8.5 12 8.4 12.1 8.3C12.6 6.2 13.1 3.6 12.1 2.5C11.8 2.2 11.5 2.1 11.1 2.1H10.7C10.1 2.1 9.6 2.7 9.4 3.3C8.8 5.4 9.2 6.6 9.8 8.5C9.4 10 8.9 11.6 8 13.3C7.5 14.4 6.9 15.4 6.5 16.2C5.9 16.5 5.4 16.8 5.1 17C3.2 18.2 2.2 19.6 2.1 20.4C2 20.7 2 21 2.1 21.2V21.3L2.9 21.8C3.1 21.9 3.4 22 3.6 22C4.9 22 6.4 20.5 8.4 17C8.5 17 8.6 16.9 8.7 16.9C10.4 16.4 12.4 16 15.2 15.7C16.8 16.5 18.8 16.9 20 16.9C20.7 16.9 21.2 16.7 21.5 16.4C21.8 16.1 21.9 15.7 22 15.3C22 15 22 14.7 21.8 14.5M3.4 20.9C3.5 20.3 4.2 19.2 5.4 18.2C5.6 18.1 5.8 17.9 6.2 17.7C5 19.6 4.1 20.6 3.4 20.9M10.8 3.2C10.9 3.1 10.9 3 11 3L11.2 3.1C11.5 3.5 11.5 4 11.3 4.9V5.2C11.2 5.6 11.2 6 11 6.5C10.6 5 10.6 3.9 10.8 3.2M8.8 15.8L8.6 15.9C8.7 15.4 9.1 14.8 9.4 14.2C10.1 12.8 10.7 11.5 11 10.3C11.7 11.8 12.5 12.9 13.5 13.8C13.7 14 13.9 14.2 14.2 14.3C12.8 14.5 10.9 15 8.8 15.8M20.9 15.7H20.5C19.8 15.7 18.6 15.4 17.4 14.9C17.5 14.7 17.7 14.7 17.8 14.7C20.1 14.7 20.7 15.1 20.9 15.3C21 15.4 21 15.4 21 15.5C21 15.6 21 15.6 20.9 15.7Z";
var mdiAirConditioner = "M6.59,0.66C8.93,-1.15 11.47,1.06 12.04,4.5C12.47,4.5 12.89,4.62 13.27,4.84C13.79,4.24 14.25,3.42 14.07,2.5C13.65,0.35 16.06,-1.39 18.35,1.58C20.16,3.92 17.95,6.46 14.5,7.03C14.5,7.46 14.39,7.89 14.16,8.27C14.76,8.78 15.58,9.24 16.5,9.06C18.63,8.64 20.38,11.04 17.41,13.34C15.07,15.15 12.53,12.94 11.96,9.5C11.53,9.5 11.11,9.37 10.74,9.15C10.22,9.75 9.75,10.58 9.93,11.5C10.35,13.64 7.94,15.39 5.65,12.42C3.83,10.07 6.05,7.53 9.5,6.97C9.5,6.54 9.63,6.12 9.85,5.74C9.25,5.23 8.43,4.76 7.5,4.94C5.37,5.36 3.62,2.96 6.59,0.66M5,16H7A2,2 0 0,1 9,18V24H7V22H5V24H3V18A2,2 0 0,1 5,16M5,18V20H7V18H5M12.93,16H15L12.07,24H10L12.93,16M18,16H21V18H18V22H21V24H18A2,2 0 0,1 16,22V18A2,2 0 0,1 18,16Z";
var mdiAirFilter = "M19,18.31V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V16.3C4.54,16.12 3.95,16 3,16A1,1 0 0,1 2,15A1,1 0 0,1 3,14C3.82,14 4.47,14.08 5,14.21V12.3C4.54,12.12 3.95,12 3,12A1,1 0 0,1 2,11A1,1 0 0,1 3,10C3.82,10 4.47,10.08 5,10.21V8.3C4.54,8.12 3.95,8 3,8A1,1 0 0,1 2,7A1,1 0 0,1 3,6C3.82,6 4.47,6.08 5,6.21V4A2,2 0 0,1 7,2H17A2,2 0 0,1 19,4V6.16C20.78,6.47 21.54,7.13 21.71,7.29C22.1,7.68 22.1,8.32 21.71,8.71C21.32,9.1 20.8,9.09 20.29,8.71V8.71C20.29,8.71 19.25,8 17,8C15.74,8 14.91,8.41 13.95,8.9C12.91,9.41 11.74,10 10,10C9.64,10 9.31,10 9,9.96V7.95C9.3,8 9.63,8 10,8C11.26,8 12.09,7.59 13.05,7.11C14.09,6.59 15.27,6 17,6V4H7V20H17V18C18.5,18 18.97,18.29 19,18.31M17,10C15.27,10 14.09,10.59 13.05,11.11C12.09,11.59 11.26,12 10,12C9.63,12 9.3,12 9,11.95V13.96C9.31,14 9.64,14 10,14C11.74,14 12.91,13.41 13.95,12.9C14.91,12.42 15.74,12 17,12C19.25,12 20.29,12.71 20.29,12.71V12.71C20.8,13.1 21.32,13.1 21.71,12.71C22.1,12.32 22.1,11.69 21.71,11.29C21.5,11.08 20.25,10 17,10M17,14C15.27,14 14.09,14.59 13.05,15.11C12.09,15.59 11.26,16 10,16C9.63,16 9.3,16 9,15.95V17.96C9.31,18 9.64,18 10,18C11.74,18 12.91,17.41 13.95,16.9C14.91,16.42 15.74,16 17,16C19.25,16 20.29,16.71 20.29,16.71V16.71C20.8,17.1 21.32,17.1 21.71,16.71C22.1,16.32 22.1,15.69 21.71,15.29C21.5,15.08 20.25,14 17,14Z";
var mdiAirHorn = "M19,2.8V6L19,9.2C19,9.5 18.7,9.8 18.4,9.7C18.4,9.7 14.5,7.1 10,7.1V9.5H10.2C10.7,9.5 11.2,9.7 11.4,10.1L12.7,11.9C12.9,12.1 13,12.4 13,12.6V20.6C13,21.3 12.3,22 11.5,22H6.5C5.7,22 5,21.4 5,20.6V12.6C5,12.3 5.1,12.1 5.3,11.9L6.6,10.1C6.9,9.7 7.3,9.5 7.8,9.5H8V8C7.6,8.5 7,8.8 6.4,8.8C5.1,8.8 4,7.5 4,6C4,4.5 5.1,3.2 6.4,3.2C7,3.3 7.6,3.6 8,4V2.6H10V5C14.5,5 18.4,2.4 18.4,2.4C18.7,2.3 19,2.5 19,2.8Z";
var mdiAirHumidifier = "M11 9C8.79 9 7 10.79 7 13S8.79 17 11 17 15 15.21 15 13 13.21 9 11 9M11 15C9.9 15 9 14.11 9 13S9.9 11 11 11 13 11.9 13 13 12.11 15 11 15M7 4H14C16.21 4 18 5.79 18 8V9H16V8C16 6.9 15.11 6 14 6H7C5.9 6 5 6.9 5 8V20H16V18H18V22H3V8C3 5.79 4.79 4 7 4M19 10.5C19 10.5 21 12.67 21 14C21 15.1 20.1 16 19 16S17 15.1 17 14C17 12.67 19 10.5 19 10.5";
var mdiAirHumidifierOff = "M22.1 21.5L2.4 1.7L1.1 3L3.8 5.7C3.3 6.3 3 7.1 3 8V22H18V19.9L20.8 22.7L22.1 21.5M9.6 11.5L12.4 14.3C12.1 14.7 11.6 15 11 15C9.9 15 9 14.1 9 13C9 12.4 9.3 11.9 9.6 11.5M16 17.9V20H5V8C5 7.7 5.1 7.4 5.2 7.1L8.2 10.1C7.5 10.8 7 11.9 7 13C7 15.2 8.8 17 11 17C12.1 17 13.2 16.5 13.9 15.8L16 17.9M17 13.8C17.1 12.5 19 10.5 19 10.5S21 12.7 21 14C21 15 20.2 15.9 19.2 16L17 13.8M9.2 6L7.2 4H14C16.2 4 18 5.8 18 8V9H16V8C16 6.9 15.1 6 14 6H9.2Z";
var mdiAirPurifier = "M11,9A4,4 0 0,1 15,13A4,4 0 0,1 11,17A4,4 0 0,1 7,13A4,4 0 0,1 11,9M11,11A2,2 0 0,0 9,13A2,2 0 0,0 11,15A2,2 0 0,0 13,13A2,2 0 0,0 11,11M7,4H14A4,4 0 0,1 18,8V9H16V8A2,2 0 0,0 14,6H7A2,2 0 0,0 5,8V20H16V18H18V22H3V8A4,4 0 0,1 7,4M16,11C18.5,11 18.5,9 21,9V11C18.5,11 18.5,13 16,13V11M16,15C18.5,15 18.5,13 21,13V15C18.5,15 18.5,17 16,17V15Z";
var mdiAirbag = "M14,8A5,5 0 0,1 9,13A5,5 0 0,1 4,8A5,5 0 0,1 9,3A5,5 0 0,1 14,8M10.46,15.55L13,18.03L11,18.05L7.5,21.58L6,20.09L10.46,15.55M17,2C18.08,2 19,2.88 19,4C19,5.08 18.12,6 17,6C15.92,6 15,5.12 15,4C15,2.92 15.89,2 17,2M14.41,15H11.59L17.29,20.71L18.71,19.29L14.41,15M15.12,14.29L19.41,18.59L19.63,18.8C19.86,18.42 20,18 20,17.5V9.5A2.5,2.5 0 0,0 17.5,7A2.5,2.5 0 0,0 15,9.5V14.17L15.12,14.29Z";
var mdiAirballoon = "M11,23A2,2 0 0,1 9,21V19H15V21A2,2 0 0,1 13,23H11M12,1C12.71,1 13.39,1.09 14.05,1.26C15.22,2.83 16,5.71 16,9C16,11.28 15.62,13.37 15,16A2,2 0 0,1 13,18H11A2,2 0 0,1 9,16C8.38,13.37 8,11.28 8,9C8,5.71 8.78,2.83 9.95,1.26C10.61,1.09 11.29,1 12,1M20,8C20,11.18 18.15,15.92 15.46,17.21C16.41,15.39 17,11.83 17,9C17,6.17 16.41,3.61 15.46,1.79C18.15,3.08 20,4.82 20,8M4,8C4,4.82 5.85,3.08 8.54,1.79C7.59,3.61 7,6.17 7,9C7,11.83 7.59,15.39 8.54,17.21C5.85,15.92 4,11.18 4,8Z";
var mdiAirballoonOutline = "M11 23C9.9 23 9 22.1 9 21V19H15V21C15 22.1 14.1 23 13 23H11M12 3C12.28 3 12.55 3 12.81 3.05C13.42 4.22 14 6.26 14 9C14 11.1 13 16 13 16H11C11 16 10 11.1 10 9C10 6.26 10.58 4.22 11.19 3.05C11.45 3 11.72 3 12 3M12 1C11.29 1 10.61 1.09 9.95 1.26C8.78 2.83 8 5.71 8 9C8 11.28 8.38 13.37 9 16C9 17.1 9.9 18 11 18H13C14.1 18 15 17.1 15 16C15.62 13.37 16 11.28 16 9C16 5.71 15.22 2.83 14.05 1.26C13.39 1.09 12.71 1 12 1M4 8C4 11.18 5.85 15.92 8.54 17.21C8 16.21 7.61 14.67 7.34 13C6.55 11.53 6 9.62 6 8C6 6.66 6.44 5.67 7.47 4.8C7.73 3.67 8.09 2.65 8.54 1.79C5.85 3.08 4 4.82 4 8M15.46 1.79C15.91 2.65 16.27 3.67 16.53 4.8C17.56 5.67 18 6.66 18 8C18 9.62 17.45 11.53 16.66 13C16.39 14.67 16 16.21 15.46 17.21C18.15 15.92 20 11.18 20 8S18.15 3.08 15.46 1.79Z";
var mdiAirplane = "M21,16V14L13,9V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V9L2,14V16L10,13.5V19L8,20.5V22L11.5,21L15,22V20.5L13,19V13.5L21,16Z";
var mdiAirplaneLanding = "M2.5,19H21.5V21H2.5V19M9.68,13.27L14.03,14.43L19.34,15.85C20.14,16.06 20.96,15.59 21.18,14.79C21.39,14 20.92,13.17 20.12,12.95L14.81,11.53L12.05,2.5L10.12,2V10.28L5.15,8.95L4.22,6.63L2.77,6.24V11.41L4.37,11.84L9.68,13.27Z";
var mdiAirplaneOff = "M3.15,5.27L8.13,10.26L2.15,14V16L10.15,13.5V19L8.15,20.5V22L11.65,21L15.15,22V20.5L13.15,19V15.27L18.87,21L20.15,19.73L4.42,4M13.15,9V3.5A1.5,1.5 0 0,0 11.65,2A1.5,1.5 0 0,0 10.15,3.5V7.18L17.97,15L21.15,16V14L13.15,9Z";
var mdiAirplaneTakeoff = "M2.5,19H21.5V21H2.5V19M22.07,9.64C21.86,8.84 21.03,8.36 20.23,8.58L14.92,10L8,3.57L6.09,4.08L10.23,11.25L5.26,12.58L3.29,11.04L1.84,11.43L3.66,14.59L4.43,15.92L6.03,15.5L11.34,14.07L15.69,12.91L21,11.5C21.81,11.26 22.28,10.44 22.07,9.64Z";
var mdiAirport = "M14.97,5.92C14.83,5.41 14.3,5.1 13.79,5.24L10.39,6.15L5.95,2.03L4.72,2.36L7.38,6.95L4.19,7.8L2.93,6.82L2,7.07L3.66,9.95L14.28,7.11C14.8,6.96 15.1,6.43 14.97,5.92M21,10L20,12H15L14,10L15,9H17V7H18V9H20L21,10M22,20V22H2V20H15V13H20V20H22Z";
var mdiAlarm = "M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12.5,8H11V14L15.75,16.85L16.5,15.62L12.5,13.25V8M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z";
var mdiAlarmBell = "M15,18.66V22H5V18.66C8.09,20.45 11.91,20.45 15,18.66M22,4A2,2 0 0,0 20,2C19.69,2 19.39,2.07 19.12,2.21C18.82,2.36 18.56,2.58 18.36,2.85C17.72,3.75 17.94,5 18.85,5.64C19.18,5.87 19.59,6 20,6C20.08,6 20.16,6 20.24,6C21.97,10.43 20.66,15.46 17,18.5C16.68,18.75 16.35,19 16,19.22V21H17V19.74C20.14,17.5 22,13.86 22,10C22,8.5 21.72,7 21.17,5.62C21.69,5.24 22,4.64 22,4M18,10A8,8 0 0,1 10,18A8,8 0 0,1 2,10A8,8 0 0,1 10,2A8,8 0 0,1 18,10Z";
var mdiAlarmCheck = "M10.54,14.53L8.41,12.4L7.35,13.46L10.53,16.64L16.53,10.64L15.47,9.58L10.54,14.53M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z";
var mdiAlarmLight = "M6,6.9L3.87,4.78L5.28,3.37L7.4,5.5L6,6.9M13,1V4H11V1H13M20.13,4.78L18,6.9L16.6,5.5L18.72,3.37L20.13,4.78M4.5,10.5V12.5H1.5V10.5H4.5M19.5,10.5H22.5V12.5H19.5V10.5M6,20H18A2,2 0 0,1 20,22H4A2,2 0 0,1 6,20M12,5A6,6 0 0,1 18,11V19H6V11A6,6 0 0,1 12,5Z";
var mdiAlarmLightOff = "M18 14.8L9 5.8C9.9 5.3 10.9 5 12 5C15.3 5 18 7.7 18 11V14.8M20.1 4.8L18.7 3.4L16.6 5.5L18 6.9L20.1 4.8M19.5 10.5V12.5H22.5V10.5H19.5M4.5 10.5H1.5V12.5H4.5V10.5M1.1 3L6.6 8.5C6.2 9.2 6 10.1 6 11V19H17.1L18.1 20H6C4.9 20 4 20.9 4 22H20.1L20.8 22.7L22.1 21.4L2.4 1.7L1.1 3M13 1H11V4H13V1Z";
var mdiAlarmLightOffOutline = "M10.5 7.3L9 5.8C9.9 5.3 10.9 5 12 5C15.3 5 18 7.7 18 11V14.8L16 12.8V11C16 8.8 14.2 7 12 7C11.5 7 11 7.1 10.5 7.3M20.1 4.8L18.7 3.4L16.6 5.5L18 6.9L20.1 4.8M19.5 10.5V12.5H22.5V10.5H19.5M4.5 10.5H1.5V12.5H4.5V10.5M2.4 1.7L22.1 21.4L20.8 22.7L20.1 22H4C4 20.9 4.9 20 6 20H18.1L17.1 19H6V11C6 10.1 6.2 9.2 6.6 8.5L1.1 3L2.4 1.7M8 17H15.1L8.1 10C8.1 10.3 8 10.7 8 11V17M13 1H11V4H13V1Z";
var mdiAlarmLightOutline = "M6,6.9L3.87,4.78L5.28,3.37L7.4,5.5L6,6.9M13,1V4H11V1H13M20.13,4.78L18,6.9L16.6,5.5L18.72,3.37L20.13,4.78M4.5,10.5V12.5H1.5V10.5H4.5M19.5,10.5H22.5V12.5H19.5V10.5M6,20H18A2,2 0 0,1 20,22H4A2,2 0 0,1 6,20M12,5A6,6 0 0,1 18,11V19H6V11A6,6 0 0,1 12,5M12,7A4,4 0 0,0 8,11V17H16V11A4,4 0 0,0 12,7Z";
var mdiAlarmMultiple = "M9.29,3.25L5.16,6.72L4,5.34L8.14,1.87L9.29,3.25M22,5.35L20.84,6.73L16.7,3.25L17.86,1.87L22,5.35M13,4A8,8 0 0,1 21,12A8,8 0 0,1 13,20A8,8 0 0,1 5,12A8,8 0 0,1 13,4M13,6A6,6 0 0,0 7,12A6,6 0 0,0 13,18A6,6 0 0,0 19,12A6,6 0 0,0 13,6M12,7.5H13.5V12.03L16.72,13.5L16.1,14.86L12,13V7.5M1,14C1,11.5 2.13,9.3 3.91,7.83C3.33,9.1 3,10.5 3,12L3.06,13.13L3,14C3,16.28 4.27,18.26 6.14,19.28C7.44,20.5 9.07,21.39 10.89,21.78C10.28,21.92 9.65,22 9,22A8,8 0 0,1 1,14Z";
var mdiAlarmNote = "M17.4,1.86L16.11,3.39L20.71,7.25L22,5.72L17.4,1.86M6.6,1.86L2,5.71L3.29,7.24L7.88,3.39L6.6,1.86M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22C12.33,22 12.67,22 13,21.94V19.94C12.67,20 12.33,20 12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6C15.1,6 17.83,8.03 18.71,11H20.78C19.85,6.9 16.2,4 12,4M23,15H20V20.5A2.5,2.5 0 0,1 17.5,23A2.5,2.5 0 0,1 15,20.5A2.5,2.5 0 0,1 17.5,18C18.04,18 18.57,18.18 19,18.5V13H23V15M11.5,8V13.25L7.5,15.62L8.25,16.85L13,14V8H11.5Z";
var mdiAlarmNoteOff = "M19,13V15.8L20,16.8V15H23V13H19M2.38,1.73L1.11,3L3,4.88L2,5.71L3.29,7.24L4.41,6.3L5.21,7.1C1.95,10.85 2.35,16.54 6.11,19.8C7.74,21.22 9.83,22 12,22C12.33,22 12.67,22 13,21.94V19.94C12.67,20 12.33,20 12,20A7,7 0 0,1 5,13C5,11.36 5.57,9.77 6.63,8.5L11.41,13.3L7.5,15.62L8.25,16.85L12.44,14.33L16.38,18.27C15.14,18.88 14.64,20.38 15.25,21.62C15.86,22.86 17.36,23.36 18.6,22.75C19.09,22.5 19.5,22.11 19.73,21.62L20.84,22.73L22.11,21.46L2.38,1.73M12,6C15.1,6 17.83,8.03 18.71,11H20.78C19.85,6.9 16.2,4 12,4C10.65,4 9.31,4.3 8.1,4.9L9.62,6.42C10.38,6.14 11.19,6 12,6M11.5,8.3L13,9.8V8H11.5V8.3M7.88,3.39L6.6,1.86L5.76,2.56L7.18,4L7.88,3.39M17.4,1.86L16.11,3.39L20.71,7.25L22,5.72L17.4,1.86Z";
var mdiAlarmOff = "M8,3.28L6.6,1.86L5.74,2.57L7.16,4M16.47,18.39C15.26,19.39 13.7,20 12,20A7,7 0 0,1 5,13C5,11.3 5.61,9.74 6.61,8.53M2.92,2.29L1.65,3.57L3,4.9L1.87,5.83L3.29,7.25L4.4,6.31L5.2,7.11C3.83,8.69 3,10.75 3,13A9,9 0 0,0 12,22C14.25,22 16.31,21.17 17.89,19.8L20.09,22L21.36,20.73L3.89,3.27L2.92,2.29M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,6A7,7 0 0,1 19,13C19,13.84 18.84,14.65 18.57,15.4L20.09,16.92C20.67,15.73 21,14.41 21,13A9,9 0 0,0 12,4C10.59,4 9.27,4.33 8.08,4.91L9.6,6.43C10.35,6.16 11.16,6 12,6Z";
var mdiAlarmPanel = "M20 3H4C2.9 3 2 3.9 2 5V19C2 20.1 2.9 21 4 21H20C21.1 21 22 20.1 22 19V5C22 3.9 21.1 3 20 3M8 19H5V17H8V19M8 16H5V14H8V16M8 13H5V11H8V13M13.5 19H10.5V17H13.5V19M13.5 16H10.5V14H13.5V16M13.5 13H10.5V11H13.5V13M19 19H16V17H19V19M19 16H16V14H19V16M19 13H16V11H19V13M19 9H5V5H19V9Z";
var mdiAlarmPanelOutline = "M9 12H6V10H9V12M13.5 10H10.5V12H13.5V10M18 10H15V12H18V10M18 6H6V9H18V6M20 5H4L4 19L20 19L20 5L20 5M20 3C21.1 3 22 3.9 22 5V19C22 20.1 21.1 21 20 21H4C2.9 21 2 20.1 2 19V5C2 3.9 2.9 3 4 3H20M9 13H6V15H9V13M13.5 13H10.5V15H13.5V13M18 13H15V15H18V13M9 16H6V18H9V16M13.5 16H10.5V18H13.5V16M18 16H15V18H18V16Z";
var mdiAlarmPlus = "M13,9H11V12H8V14H11V17H13V14H16V12H13M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39Z";
var mdiAlarmSnooze = "M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M9,11H12.63L9,15.2V17H15V15H11.37L15,10.8V9H9V11Z";
var mdiAlbum = "M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12,16.5C9.5,16.5 7.5,14.5 7.5,12C7.5,9.5 9.5,7.5 12,7.5C14.5,7.5 16.5,9.5 16.5,12C16.5,14.5 14.5,16.5 12,16.5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiAlert = "M13 14H11V9H13M13 18H11V16H13M1 21H23L12 2L1 21Z";
var mdiAlertBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M13,13V7H11V13H13M13,17V15H11V17H13Z";
var mdiAlertBoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M11,15H13V17H11V15M11,7H13V13H11V7";
var mdiAlertCircle = "M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiAlertCircleCheck = "M18.75 22.16L16 19.16L17.16 18L18.75 19.59L22.34 16L23.5 17.41L18.75 22.16M13 13V7H11V13H13M13 17V15H11V17H13M12 2C17.5 2 22 6.5 22 12L21.91 13.31C21.31 13.11 20.67 13 20 13C16.69 13 14 15.69 14 19C14 19.95 14.22 20.85 14.62 21.65C13.78 21.88 12.91 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2Z";
var mdiAlertCircleCheckOutline = "M18.75 22.16L16 19.16L17.16 18L18.75 19.59L22.34 16L23.5 17.41L18.75 22.16M11 15H13V17H11V15M11 7H13V13H11V7M12 2C17.5 2 22 6.5 22 12L21.92 13.31C21.31 13.11 20.67 13 19.94 13L20 12C20 7.58 16.42 4 12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C12.71 20 13.39 19.91 14.05 19.74C14.13 20.42 14.33 21.06 14.62 21.65C13.78 21.88 12.9 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.47 2 12 2Z";
var mdiAlertCircleOutline = "M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z";
var mdiAlertDecagram = "M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M13,17H11V15H13V17M13,13H11V7H13V13Z";
var mdiAlertDecagramOutline = "M23,12L20.56,14.78L20.9,18.46L17.29,19.28L15.4,22.46L12,21L8.6,22.47L6.71,19.29L3.1,18.47L3.44,14.78L1,12L3.44,9.21L3.1,5.53L6.71,4.72L8.6,1.54L12,3L15.4,1.54L17.29,4.72L20.9,5.54L20.56,9.22L23,12M20.33,12L18.5,9.89L18.74,7.1L16,6.5L14.58,4.07L12,5.18L9.42,4.07L8,6.5L5.26,7.09L5.5,9.88L3.67,12L5.5,14.1L5.26,16.9L8,17.5L9.42,19.93L12,18.81L14.58,19.92L16,17.5L18.74,16.89L18.5,14.1L20.33,12M11,15H13V17H11V15M11,7H13V13H11V7";
var mdiAlertMinus = "M14 19C14 16.21 15.91 13.87 18.5 13.2L12 2L1 21H14.35C14.13 20.37 14 19.7 14 19M13 18H11V16H13V18M13 14H11V10H13V14M24 18V20H16V18H24Z";
var mdiAlertMinusOutline = "M11 15.5H13V17.5H11V15.5M14 19C14 18.86 14 18.73 14 18.6H5.4L12 7.3L16.11 14.44C16.62 14 17.2 13.65 17.84 13.41L12 3.3L2 20.6H14.22C14.08 20.09 14 19.56 14 19M13 10.5H11V14.5H13V10.5M16 18V20H24V18H16Z";
var mdiAlertOctagon = "M13 13H11V7H13M11 15H13V17H11M15.73 3H8.27L3 8.27V15.73L8.27 21H15.73L21 15.73V8.27L15.73 3Z";
var mdiAlertOctagonOutline = "M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M11,15H13V17H11V15M11,7H13V13H11V7";
var mdiAlertOctagram = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06M13,17V15H11V17H13M13,13V7H11V13H13Z";
var mdiAlertOctagramOutline = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06M4.81,9L6.05,12L4.81,15L7.79,16.21L9,19.19L12,17.95L15,19.19L16.21,16.21L19.19,15L17.95,12L19.19,9L16.21,7.79L15,4.81L12,6.05L9,4.81L7.79,7.79L4.81,9M11,15H13V17H11V15M11,7H13V13H11V7";
var mdiAlertOutline = "M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16";
var mdiAlertPlus = "M14 19C14 16.21 15.91 13.87 18.5 13.2L12 2L1 21H14.35C14.13 20.37 14 19.7 14 19M13 18H11V16H13V18M13 14H11V10H13V14M21 15V18H24V20H21V23H19V20H16V18H19V15H21Z";
var mdiAlertPlusOutline = "M11 15.5H13V17.5H11V15.5M14 19C14 18.86 14 18.73 14 18.6H5.4L12 7.3L16.11 14.44C16.62 14 17.2 13.65 17.84 13.41L12 3.3L2 20.6H14.22C14.08 20.09 14 19.56 14 19M13 10.5H11V14.5H13V10.5M19 15V18H16V20H19V23H21V20H24V18H21V15H19Z";
var mdiAlertRemove = "M14 19C14 16.21 15.91 13.87 18.5 13.2L12 2L1 21H14.35C14.13 20.37 14 19.7 14 19M13 18H11V16H13V18M13 14H11V10H13V14M23.54 16.88L21.41 19L23.54 21.12L22.12 22.54L20 20.41L17.88 22.54L16.47 21.12L18.59 19L16.47 16.88L17.88 15.47L20 17.59L22.12 15.46L23.54 16.88Z";
var mdiAlertRemoveOutline = "M11 15.5H13V17.5H11V15.5M14 19C14 18.86 14 18.73 14 18.6H5.4L12 7.3L16.11 14.44C16.62 14 17.2 13.65 17.84 13.41L12 3.3L2 20.6H14.22C14.08 20.09 14 19.56 14 19M13 10.5H11V14.5H13V10.5M22.12 15.46L20 17.59L17.88 15.46L16.47 16.88L18.59 19L16.47 21.12L17.88 22.54L20 20.41L22.12 22.54L23.54 21.12L21.41 19L23.54 16.88L22.12 15.46Z";
var mdiAlertRhombus = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M11 7H13V13H11V7M11 15H13V17H11V15Z";
var mdiAlertRhombusOutline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12M11 7V13H13V7M11 15V17H13V15Z";
var mdiAlien = "M12,3C16.97,3 21,6.58 21,11C21,15.42 15,21 12,21C9,21 3,15.42 3,11C3,6.58 7.03,3 12,3M10.31,10.93C9.29,9.29 7.47,8.58 6.25,9.34C5.03,10.1 4.87,12.05 5.89,13.69C6.92,15.33 8.74,16.04 9.96,15.28C11.18,14.5 11.33,12.57 10.31,10.93M13.69,10.93C12.67,12.57 12.82,14.5 14.04,15.28C15.26,16.04 17.08,15.33 18.11,13.69C19.13,12.05 18.97,10.1 17.75,9.34C16.53,8.58 14.71,9.29 13.69,10.93M12,17.75C10,17.75 9.5,17 9.5,17C9.5,17.03 10,19 12,19C14,19 14.5,17 14.5,17C14.5,17 14,17.75 12,17.75Z";
var mdiAlienOutline = "M10.31 10.93C11.33 12.57 11.18 14.5 9.96 15.28C8.74 16.04 6.92 15.33 5.89 13.69C4.87 12.05 5.03 10.1 6.25 9.34C7.47 8.58 9.29 9.29 10.31 10.93M12 17.75C14 17.75 14.5 17 14.5 17C14.5 17 14 19 12 19C10 19 9.5 17.03 9.5 17C9.5 17 10 17.75 12 17.75M17.75 9.34C18.97 10.1 19.13 12.05 18.11 13.69C17.08 15.33 15.26 16.04 14.04 15.28C12.82 14.5 12.67 12.57 13.69 10.93C14.71 9.29 16.53 8.58 17.75 9.34M12 20C14.5 20 20 14.86 20 11C20 7.14 16.41 4 12 4C7.59 4 4 7.14 4 11C4 14.86 9.5 20 12 20M12 2C17.5 2 22 6.04 22 11C22 15.08 16.32 22 12 22C7.68 22 2 15.08 2 11C2 6.04 6.5 2 12 2Z";
var mdiAlignHorizontalCenter = "M20 19H13V22H11V19H4V13H11V11H7V5H11V2H13V5H17V11H13V13H20V19Z";
var mdiAlignHorizontalLeft = "M22 13V19H6V13H22M6 5V11H16V5H6M2 2V22H4V2H2";
var mdiAlignHorizontalRight = "M18 13V19H2V13H18M8 5V11H18V5H8M20 2V22H22V2H20Z";
var mdiAlignVerticalBottom = "M11 18H5V2H11V18M19 8H13V18H19V8M22 20H2V22H22V20Z";
var mdiAlignVerticalCenter = "M5 20V13H2V11H5V4H11V11H13V7H19V11H22V13H19V17H13V13H11V20H5Z";
var mdiAlignVerticalTop = "M11 22H5V6H11V22M19 6H13V16H19V6M22 2H2V4H22V2Z";
var mdiAllInclusive = "M18.6,6.62C17.16,6.62 15.8,7.18 14.83,8.15L7.8,14.39C7.16,15.03 6.31,15.38 5.4,15.38C3.53,15.38 2,13.87 2,12C2,10.13 3.53,8.62 5.4,8.62C6.31,8.62 7.16,8.97 7.84,9.65L8.97,10.65L10.5,9.31L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62C2.42,6.62 0,9.04 0,12C0,14.96 2.42,17.38 5.4,17.38C6.84,17.38 8.2,16.82 9.17,15.85L16.2,9.61C16.84,8.97 17.69,8.62 18.6,8.62C20.47,8.62 22,10.13 22,12C22,13.87 20.47,15.38 18.6,15.38C17.7,15.38 16.84,15.03 16.16,14.35L15,13.34L13.5,14.68L14.78,15.8C15.8,16.81 17.15,17.37 18.6,17.37C21.58,17.37 24,14.96 24,12C24,9 21.58,6.62 18.6,6.62Z";
var mdiAllergy = "M19.75 5.33A1.25 1.25 0 0 0 18.5 6.58V11.17H17.67V4.08A1.25 1.25 0 0 0 15.17 4.08V11.17H14.33V3.25A1.25 1.25 0 1 0 11.83 3.25V11.17H11V5.33A1.25 1.25 0 0 0 8.5 5.33V15.26L4.91 13.26A1 1 0 0 0 4.41 13.12A1 1 0 0 0 3.75 13.37L2.67 14.37L9.21 21A3.29 3.29 0 0 0 11.58 22H17.67A3.33 3.33 0 0 0 21 18.67V6.58A1.25 1.25 0 0 0 19.75 5.33M11 15A1 1 0 1 1 12 14A1 1 0 0 1 11 15M13 18A1 1 0 1 1 14 17A1 1 0 0 1 13 18M18 16A1 1 0 1 1 19 15A1 1 0 0 1 18 16M17 19A1 1 0 1 1 18 18A1 1 0 0 1 17 19M15 15A1 1 0 1 1 16 14A1 1 0 0 1 15 15Z";
var mdiAlpha = "M18.08,17.8C17.62,17.93 17.21,18 16.85,18C15.65,18 14.84,17.12 14.43,15.35H14.38C13.39,17.26 12,18.21 10.25,18.21C8.94,18.21 7.89,17.72 7.1,16.73C6.31,15.74 5.92,14.5 5.92,13C5.92,11.25 6.37,9.85 7.26,8.76C8.15,7.67 9.36,7.12 10.89,7.12C11.71,7.12 12.45,7.35 13.09,7.8C13.73,8.26 14.22,8.9 14.56,9.73H14.6L15.31,7.33H17.87L15.73,12.65C15.97,13.89 16.22,14.74 16.5,15.19C16.74,15.64 17.08,15.87 17.5,15.87C17.74,15.87 17.93,15.83 18.1,15.76L18.08,17.8M13.82,12.56C13.61,11.43 13.27,10.55 12.81,9.95C12.36,9.34 11.81,9.04 11.18,9.04C10.36,9.04 9.7,9.41 9.21,10.14C8.72,10.88 8.5,11.79 8.5,12.86C8.5,13.84 8.69,14.65 9.12,15.31C9.54,15.97 10.11,16.29 10.82,16.29C11.42,16.29 11.97,16 12.46,15.45C12.96,14.88 13.37,14.05 13.7,12.96L13.82,12.56Z";
var mdiAlphaA = "M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9Z";
var mdiAlphaABox = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9Z";
var mdiAlphaABoxOutline = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11Z";
var mdiAlphaACircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9Z";
var mdiAlphaACircleOutline = "M11,7H13A2,2 0 0,1 15,9V17H13V13H11V17H9V9A2,2 0 0,1 11,7M11,9V11H13V9H11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaB = "M15,10.5V9A2,2 0 0,0 13,7H9V17H13A2,2 0 0,0 15,15V13.5C15,12.7 14.3,12 13.5,12C14.3,12 15,11.3 15,10.5M13,15H11V13H13V15M13,11H11V9H13V11Z";
var mdiAlphaBBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,10.5V9A2,2 0 0,0 13,7H9V17H13A2,2 0 0,0 15,15V13.5C15,12.7 14.3,12 13.5,12C14.3,12 15,11.3 15,10.5M13,15H11V13H13V15M13,11H11V9H13V11Z";
var mdiAlphaBBoxOutline = "M15,10.5C15,11.3 14.3,12 13.5,12C14.3,12 15,12.7 15,13.5V15A2,2 0 0,1 13,17H9V7H13A2,2 0 0,1 15,9V10.5M13,15V13H11V15H13M13,11V9H11V11H13M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z";
var mdiAlphaBCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M15,10.5V9A2,2 0 0,0 13,7H9V17H13A2,2 0 0,0 15,15V13.5C15,12.7 14.3,12 13.5,12C14.3,12 15,11.3 15,10.5M13,15H11V13H13V15M13,11H11V9H13V11Z";
var mdiAlphaBCircleOutline = "M15,10.5C15,11.3 14.3,12 13.5,12C14.3,12 15,12.7 15,13.5V15A2,2 0 0,1 13,17H9V7H13A2,2 0 0,1 15,9V10.5M13,15V13H11V15H13M13,11V9H11V11H13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaC = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V14H13V15H11V9H13V10H15V9A2,2 0 0,0 13,7H11Z";
var mdiAlphaCBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V14H13V15H11V9H13V10H15V9A2,2 0 0,0 13,7H11Z";
var mdiAlphaCBoxOutline = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5M11,7H13A2,2 0 0,1 15,9V10H13V9H11V15H13V14H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7Z";
var mdiAlphaCCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V14H13V15H11V9H13V10H15V9A2,2 0 0,0 13,7H11Z";
var mdiAlphaCCircleOutline = "M11,7H13A2,2 0 0,1 15,9V10H13V9H11V15H13V14H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaD = "M9,7V17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H9M11,9H13V15H11V9Z";
var mdiAlphaDBox = "M9,7V17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H9M11,9H13V15H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaDBoxOutline = "M9,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H9V7M11,9V15H13V9H11M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z";
var mdiAlphaDCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H9M11,9H13V15H11V9Z";
var mdiAlphaDCircleOutline = "M9,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H9V7M11,9V15H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaE = "M9,7V17H15V15H11V13H15V11H11V9H15V7H9Z";
var mdiAlphaEBox = "M9,7V17H15V15H11V13H15V11H11V9H15V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaEBoxOutline = "M9,7H15V9H11V11H15V13H11V15H15V17H9V7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z";
var mdiAlphaECircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H15V15H11V13H15V11H11V9H15V7H9Z";
var mdiAlphaECircleOutline = "M9,7H15V9H11V11H15V13H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaF = "M9,7V17H11V13H14V11H11V9H15V7H9Z";
var mdiAlphaFBox = "M9,7V17H11V13H14V11H11V9H15V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaFBoxOutline = "M9,7H15V9H11V11H14V13H11V17H9V7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z";
var mdiAlphaFCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H11V13H14V11H11V9H15V7H9Z";
var mdiAlphaFCircleOutline = "M9,7H15V9H11V11H14V13H11V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaG = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V11H13V15H11V9H15V7H11Z";
var mdiAlphaGBox = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V11H13V15H11V9H15V7H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaGBoxOutline = "M11,7H15V9H11V15H13V11H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z";
var mdiAlphaGCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V11H13V15H11V9H15V7H11Z";
var mdiAlphaGCircleOutline = "M11,7H15V9H11V15H13V11H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaH = "M9,7V17H11V13H13V17H15V7H13V11H11V7H9Z";
var mdiAlphaHBox = "M9,7V17H11V13H13V17H15V7H13V11H11V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaHBoxOutline = "M9,7H11V11H13V7H15V17H13V13H11V17H9V7M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M5,5V19H19V5H5Z";
var mdiAlphaHCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H11V13H13V17H15V7H13V11H11V7H9Z";
var mdiAlphaHCircleOutline = "M9,7H11V11H13V7H15V17H13V13H11V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaI = "M14,7V9H13V15H14V17H10V15H11V9H10V7H14Z";
var mdiAlphaIBox = "M14,7H10V9H11V15H10V17H14V15H13V9H14V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaIBoxOutline = "M14,7V9H13V15H14V17H10V15H11V9H10V7H14M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaICircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M14,7H10V9H11V15H10V17H14V15H13V9H14V7Z";
var mdiAlphaICircleOutline = "M14,7V9H13V15H14V17H10V15H11V9H10V7H14M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaJ = "M13,7V15H11V14H9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13Z";
var mdiAlphaJBox = "M13,7V15H11V14H9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaJBoxOutline = "M13,7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V14H11V15H13V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaJCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M13,7V15H11V14H9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13Z";
var mdiAlphaJCircleOutline = "M13,7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V14H11V15H13V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaK = "M9,7V17H11V13.67L13,17H15L12,12L15,7H13L11,10.33V7H9Z";
var mdiAlphaKBox = "M9,7V17H11V13.67L13,17H15L12,12L15,7H13L11,10.33V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaKBoxOutline = "M9,7H11V10.33L13,7H15L12,12L15,17H13L11,13.67V17H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaKCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M9,7V17H11V13.67L13,17H15L12,12L15,7H13L11,10.33V7H9Z";
var mdiAlphaKCircleOutline = "M9,7H11V10.33L13,7H15L12,12L15,17H13L11,13.67V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaL = "M9,7V17H15V15H11V7H9Z";
var mdiAlphaLBox = "M9,7V17H15V15H11V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaLBoxOutline = "M9,7H11V15H15V17H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaLCircle = "M9,7V17H15V15H11V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaLCircleOutline = "M9,7H11V15H15V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaM = "M9,7A2,2 0 0,0 7,9V17H9V9H11V16H13V9H15V17H17V9A2,2 0 0,0 15,7H9Z";
var mdiAlphaMBox = "M9,7A2,2 0 0,0 7,9V17H9V9H11V16H13V9H15V17H17V9A2,2 0 0,0 15,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaMBoxOutline = "M9,7H15A2,2 0 0,1 17,9V17H15V9H13V16H11V9H9V17H7V9A2,2 0 0,1 9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaMCircle = "M9,7A2,2 0 0,0 7,9V17H9V9H11V16H13V9H15V17H17V9A2,2 0 0,0 15,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaMCircleOutline = "M9,7H15A2,2 0 0,1 17,9V17H15V9H13V16H11V9H9V17H7V9A2,2 0 0,1 9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaN = "M9,7V17H11V12L13,17H15V7H13V12L11,7H9Z";
var mdiAlphaNBox = "M9,7V17H11V12L13,17H15V7H13V12L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaNBoxOutline = "M9,7H11L13,12V7H15V17H13L11,12V17H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaNCircle = "M9,7V17H11V12L13,17H15V7H13V12L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaNCircleOutline = "M9,7H11L13,12V7H15V17H13L11,12V17H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaO = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z";
var mdiAlphaOBox = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaOBoxOutline = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z";
var mdiAlphaOCircle = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaOCircleOutline = "M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaP = "M9,7V17H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9Z";
var mdiAlphaPBox = "M9,7V17H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaPBoxOutline = "M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V17H9V7M11,9V11H13V9H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaPCircle = "M9,7V17H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaPCircleOutline = "M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V17H9V7M11,9V11H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaQ = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17V19H13V17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z";
var mdiAlphaQBox = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17V19H13V17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M5,4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4Z";
var mdiAlphaQBoxOutline = "M5,4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4M5,6V20H19V6H5M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17V19H11V17A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z";
var mdiAlphaQCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17V19H13V17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z";
var mdiAlphaQCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17V19H11V17A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z";
var mdiAlphaR = "M9,7V17H11V13H11.8L13,17H15L13.76,12.85C14.5,12.55 15,11.84 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9Z";
var mdiAlphaRBox = "M9,7V17H11V13H11.8L13,17H15L13.76,12.85C14.5,12.55 15,11.84 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaRBoxOutline = "M9,7H13A2,2 0 0,1 15,9V11C15,11.84 14.5,12.55 13.76,12.85L15,17H13L11.8,13H11V17H9V7M11,9V11H13V9H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaRCircle = "M9,7V17H11V13H11.8L13,17H15L13.76,12.85C14.5,12.55 15,11.84 15,11V9A2,2 0 0,0 13,7H9M11,9H13V11H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaRCircleOutline = "M9,7H13A2,2 0 0,1 15,9V11C15,11.84 14.5,12.55 13.76,12.85L15,17H13L11.8,13H11V17H9V7M11,9V11H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,16.41 7.58,20 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaS = "M11,7A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11Z";
var mdiAlphaSBox = "M11,7A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaSBoxOutline = "M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaSCircle = "M11,7A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaSCircleOutline = "M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaT = "M9,7V9H11V17H13V9H15V7H9Z";
var mdiAlphaTBox = "M9,7V9H11V17H13V9H15V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaTBoxOutline = "M9,7H15V9H13V17H11V9H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaTCircle = "M9,7V9H11V17H13V9H15V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaTCircleOutline = "M9,7H15V9H13V17H11V9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaU = "M9,7V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13V15H11V7H9Z";
var mdiAlphaUBox = "M9,7V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13V15H11V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaUBoxOutline = "M9,7H11V15H13V7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaUCircle = "M9,7V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V7H13V15H11V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaUCircleOutline = "M9,7H11V15H13V7H15V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaV = "M9,7L11,17H13L15,7H13L12,12L11,7H9Z";
var mdiAlphaVBox = "M9,7L11,17H13L15,7H13L12,12L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaVBoxOutline = "M9,7H11L12,12L13,7H15L13,17H11L9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaVCircle = "M9,7L11,17H13L15,7H13L12,12L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaVCircleOutline = "M9,7H11L12,12L13,7H15L13,17H11L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaW = "M9,17A2,2 0 0,1 7,15V7H9V15H11V8H13V15H15V7H17V15A2,2 0 0,1 15,17H9Z";
var mdiAlphaWBox = "M9,17H15A2,2 0 0,0 17,15V7H15V15H13V8H11V15H9V7H7V15A2,2 0 0,0 9,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaWBoxOutline = "M9,17A2,2 0 0,1 7,15V7H9V15H11V8H13V15H15V7H17V15A2,2 0 0,1 15,17H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaWCircle = "M9,17H15A2,2 0 0,0 17,15V7H15V15H13V8H11V15H9V7H7V15A2,2 0 0,0 9,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaWCircleOutline = "M9,17A2,2 0 0,1 7,15V7H9V15H11V8H13V15H15V7H17V15A2,2 0 0,1 15,17H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaX = "M9,7L11,12L9,17H11L12,14.5L13,17H15L13,12L15,7H13L12,9.5L11,7H9Z";
var mdiAlphaXBox = "M9,7L11,12L9,17H11L12,14.5L13,17H15L13,12L15,7H13L12,9.5L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaXBoxOutline = "M9,7H11L12,9.5L13,7H15L13,12L15,17H13L12,14.5L11,17H9L11,12L9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaXCircle = "M9,7L11,12L9,17H11L12,14.5L13,17H15L13,12L15,7H13L12,9.5L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaXCircleOutline = "M9,7H11L12,9.5L13,7H15L13,12L15,17H13L12,14.5L11,17H9L11,12L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaY = "M9,7L11,13V17H13V13L15,7H13L12,10L11,7H9Z";
var mdiAlphaYBox = "M9,7L11,13V17H13V13L15,7H13L12,10L11,7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaYBoxOutline = "M9,7H11L12,10L13,7H15L13,13V17H11V13L9,7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaYCircle = "M9,7L11,13V17H13V13L15,7H13L12,10L11,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaYCircleOutline = "M9,7H11L12,10L13,7H15L13,13V17H11V13L9,7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphaZ = "M9,7V9H13L9,15V17H15V15H11L15,9V7H9Z";
var mdiAlphaZBox = "M9,7V9H13L9,15V17H15V15H11L15,9V7H9M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiAlphaZBoxOutline = "M9,7H15V9L11,15H15V17H9V15L13,9H9V7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiAlphaZCircle = "M9,7V9H13L9,15V17H15V15H11L15,9V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiAlphaZCircleOutline = "M9,7H15V9L11,15H15V17H9V15L13,9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiAlphabetAurebesh = "M3 4V11H14.23L22 4H19L13.46 9H5V4H3M3 13V20H5V15H13.46L19 20H22L14.23 13H3Z";
var mdiAlphabetCyrillic = "M16 6C14.36 6 13 7.36 13 9V15C13 16.65 14.36 18 16 18H17C18.65 18 20 16.65 20 15V12C20 10.36 18.65 9 17 9H15C15 8.44 15.44 8 16 8H18C19.09 8 20 7.09 20 6M5 9V11H8C8.57 11 9 11.43 9 12H7C5.36 12 4 13.36 4 15C4 16.65 5.36 18 7 18H11V12C11 10.36 9.65 9 8 9M15 11H17C17.57 11 18 11.43 18 12V15C18 15.57 17.57 16 17 16H16C15.43 16 15 15.57 15 15M7 14H9V16H7C6.43 16 6 15.57 6 15C6 14.43 6.43 14 7 14Z";
var mdiAlphabetGreek = "M16 6C14.36 6 13 7.36 13 9V21H15V9C15 8.43 15.43 8 16 8H17C17.57 8 18 8.43 18 9V10C18 10.57 17.57 11 17 11H16V13H17C17.57 13 18 13.43 18 14V15C18 15.57 17.57 16 17 16H16V18H17C18.65 18 20 16.65 20 15V14C20 13.18 19.59 12.46 19 12C19.59 11.54 20 10.82 20 10V9C20 7.36 18.65 6 17 6M7 9C5.36 9 4 10.36 4 12V15C4 16.65 5.36 18 7 18H7.7C8.2 18 8.65 17.81 9 17.5V18H11V9H9V9.5C8.65 9.19 8.2 9 7.7 9M7 11H8C8.57 11 9 11.43 9 12V15C9 15.57 8.57 16 8 16H7C6.43 16 6 15.57 6 15V12C6 11.43 6.43 11 7 11Z";
var mdiAlphabetLatin = "M13 6V18H15V17.31C15.37 17.73 15.9 18 16.5 18H17C18.65 18 20 16.65 20 15V12C20 10.36 18.65 9 17 9H16.5C15.9 9 15.37 9.27 15 9.7V6M5 9V11H8C8.57 11 9 11.43 9 12H7C5.36 12 4 13.36 4 15C4 16.65 5.36 18 7 18H11V12C11 10.36 9.65 9 8 9M16 11H17C17.57 11 18 11.43 18 12V15C18 15.57 17.57 16 17 16H16C15.43 16 15 15.57 15 15V12C15 11.43 15.43 11 16 11M7 14H9V16H7C6.43 16 6 15.57 6 15C6 14.43 6.43 14 7 14Z";
var mdiAlphabetPiqad = "M13.04 4L6.54 17.85C6.21 18.55 5.5 19 4.73 19H4V20H16C17.2 20 18.27 20.54 19 21.39H20C19.05 19.32 17 18 14.7 18H12C11.29 18 10.62 17.63 10.24 17.03C9.85 16.43 9.8 15.68 10.1 15.03L10.58 14H19V13H17.5C15.29 13 13.5 11.21 13.5 9C13.5 6.79 15.29 5 17.5 5H20V4Z";
var mdiAlphabetTengwar = "M10 7L12.5 3H15L11 7H10M12.5 9C11.96 9 11.46 9.13 11 9.35V9H8V11H9V21H11V12.5C11 11.67 11.67 11 12.5 11C13.33 11 14 11.67 14 12.5V14.5C14 15.33 13.33 16 12.5 16H12V18H12.5C14.43 18 16 16.43 16 14.5V12.5C16 10.57 14.43 9 12.5 9Z";
var mdiAlphabetical = "M6,11A2,2 0 0,1 8,13V17H4A2,2 0 0,1 2,15V13A2,2 0 0,1 4,11H6M4,13V15H6V13H4M20,13V15H22V17H20A2,2 0 0,1 18,15V13A2,2 0 0,1 20,11H22V13H20M12,7V11H14A2,2 0 0,1 16,13V15A2,2 0 0,1 14,17H12A2,2 0 0,1 10,15V7H12M12,15H14V13H12V15Z";
var mdiAlphabeticalOff = "M22.11 21.46L16 15.31L14 13.31L13.65 13L10 9.34L2.39 1.73L1.11 3L10 11.89V15A2 2 0 0 0 12 17H14A1.92 1.92 0 0 0 14.89 16.78L20.84 22.73M12 15V13.89L13.11 15M16 12.78L14.22 11A2 2 0 0 1 16 12.78M20.2 17L18 14.8V13A2 2 0 0 1 20 11H22V13H20V15H22V17M6 11H4A2 2 0 0 0 2 13V15A2 2 0 0 0 4 17H8V13A2 2 0 0 0 6 11M6 15H4V13H6M12 8.8L10.2 7H12Z";
var mdiAlphabeticalVariant = "M3 7A2 2 0 0 0 1 9V17H3V13H5V17H7V9A2 2 0 0 0 5 7H3M3 9H5V11H3M15 10.5V9A2 2 0 0 0 13 7H9V17H13A2 2 0 0 0 15 15V13.5A1.54 1.54 0 0 0 13.5 12A1.54 1.54 0 0 0 15 10.5M13 15H11V13H13V15M13 11H11V9H13M19 7A2 2 0 0 0 17 9V15A2 2 0 0 0 19 17H21A2 2 0 0 0 23 15V14H21V15H19V9H21V10H23V9A2 2 0 0 0 21 7Z";
var mdiAlphabeticalVariantOff = "M12.2 9L10.2 7H13A2 2 0 0 1 15 9V10.5A1.47 1.47 0 0 1 14.64 11.44L13 9.8V9M23 10V9A2 2 0 0 0 21 7H19A2 2 0 0 0 17 9V13.8L20.2 17H21A2 2 0 0 0 23 15V14H21V15H19V9H21V10M15 14.35L22.11 21.46L20.84 22.73L14.46 16.35A2 2 0 0 1 13 17H9V10.89L7 8.89V17H5V13H3V17H1V9A2 2 0 0 1 3 7H5.12L1.12 3L2.39 1.73L9 8.34L11 10.34L11.66 11L15 14.34M5 9H3V11H5M13 14.89L11.11 13H11V15H13Z";
var mdiAltimeter = "M7,3V5H17V3H7M9,7V9H15V7H9M2,7.96V16.04L6.03,12L2,7.96M22.03,7.96L18,12L22.03,16.04V7.96M7,11V13H17V11H7M9,15V17H15V15H9M7,19V21H17V19H7Z";
var mdiAmazon = "M15.93,17.09C15.75,17.25 15.5,17.26 15.3,17.15C14.41,16.41 14.25,16.07 13.76,15.36C12.29,16.86 11.25,17.31 9.34,17.31C7.09,17.31 5.33,15.92 5.33,13.14C5.33,10.96 6.5,9.5 8.19,8.76C9.65,8.12 11.68,8 13.23,7.83V7.5C13.23,6.84 13.28,6.09 12.9,5.54C12.58,5.05 11.95,4.84 11.4,4.84C10.38,4.84 9.47,5.37 9.25,6.45C9.2,6.69 9,6.93 8.78,6.94L6.18,6.66C5.96,6.61 5.72,6.44 5.78,6.1C6.38,2.95 9.23,2 11.78,2C13.08,2 14.78,2.35 15.81,3.33C17.11,4.55 17,6.18 17,7.95V12.12C17,13.37 17.5,13.93 18,14.6C18.17,14.85 18.21,15.14 18,15.31L15.94,17.09H15.93M13.23,10.56V10C11.29,10 9.24,10.39 9.24,12.67C9.24,13.83 9.85,14.62 10.87,14.62C11.63,14.62 12.3,14.15 12.73,13.4C13.25,12.47 13.23,11.6 13.23,10.56M20.16,19.54C18,21.14 14.82,22 12.1,22C8.29,22 4.85,20.59 2.25,18.24C2.05,18.06 2.23,17.81 2.5,17.95C5.28,19.58 8.75,20.56 12.33,20.56C14.74,20.56 17.4,20.06 19.84,19.03C20.21,18.87 20.5,19.27 20.16,19.54M21.07,18.5C20.79,18.14 19.22,18.33 18.5,18.42C18.31,18.44 18.28,18.26 18.47,18.12C19.71,17.24 21.76,17.5 22,17.79C22.24,18.09 21.93,20.14 20.76,21.11C20.58,21.27 20.41,21.18 20.5,21C20.76,20.33 21.35,18.86 21.07,18.5Z";
var mdiAmazonAlexa = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10.43,21.87V19.91C10.43,19.22 10,18.57 9.35,18.3C6.91,17.26 5.17,14.83 5.17,12C5.17,8.26 8.22,5.17 12,5.17C15.78,5.17 18.83,8.26 18.83,12C18.83,16.43 15.39,20.61 10.43,21.87Z";
var mdiAmbulance = "M18,18.5A1.5,1.5 0 0,0 19.5,17A1.5,1.5 0 0,0 18,15.5A1.5,1.5 0 0,0 16.5,17A1.5,1.5 0 0,0 18,18.5M19.5,9.5H17V12H21.46L19.5,9.5M6,18.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 6,15.5A1.5,1.5 0 0,0 4.5,17A1.5,1.5 0 0,0 6,18.5M20,8L23,12V17H21A3,3 0 0,1 18,20A3,3 0 0,1 15,17H9A3,3 0 0,1 6,20A3,3 0 0,1 3,17H1V6C1,4.89 1.89,4 3,4H17V8H20M8,6V9H5V11H8V14H10V11H13V9H10V6H8Z";
var mdiAmmunition = "M14,22H10V21H14V22M13,10V7H11V10L10,11.5V20H14V11.5L13,10M12,2C12,2 11,3 11,5V6H13V5C13,5 13,3 12,2M8,22H4V21H8V22M7,10V7H5V10L4,11.5V20H8V11.5L7,10M6,2C6,2 5,3 5,5V6H7V5C7,5 7,3 6,2M20,22H16V21H20V22M19,10V7H17V10L16,11.5V20H20V11.5L19,10M18,2C18,2 17,3 17,5V6H19V5C19,5 19,3 18,2Z";
var mdiAmpersand = "M4.4,16.5C4.4,15.6 4.7,14.7 5.2,13.9C5.7,13.1 6.7,12.2 8.2,11.2C7.3,10.1 6.8,9.3 6.5,8.7C6.1,8 6,7.4 6,6.7C6,5.2 6.4,4.1 7.3,3.2C8.2,2.3 9.4,2 10.9,2C12.2,2 13.3,2.4 14.2,3.2C15.1,4 15.5,5 15.5,6.1C15.5,6.9 15.3,7.6 14.9,8.3C14.5,9 13.8,9.7 12.8,10.4L11.4,11.5L15.7,16.7C16.3,15.5 16.6,14.3 16.6,12.8H18.8C18.8,15.1 18.3,17 17.2,18.5L20,21.8H17L15.7,20.3C15,20.9 14.3,21.3 13.4,21.6C12.5,21.9 11.6,22.1 10.7,22.1C8.8,22.1 7.3,21.6 6.1,20.6C5,19.5 4.4,18.2 4.4,16.5M10.7,20C12,20 13.2,19.5 14.3,18.5L9.6,12.8L9.2,13.1C7.7,14.2 7,15.3 7,16.5C7,17.6 7.3,18.4 8,19C8.7,19.6 9.5,20 10.7,20M8.5,6.7C8.5,7.6 9,8.6 10.1,9.9L11.7,8.8C12.3,8.4 12.7,8 12.9,7.6C13.1,7.2 13.2,6.7 13.2,6.2C13.2,5.6 13,5.1 12.5,4.7C12.1,4.3 11.5,4.1 10.8,4.1C10.1,4.1 9.5,4.3 9.1,4.8C8.7,5.3 8.5,5.9 8.5,6.7Z";
var mdiAmplifier = "M10,2H14A1,1 0 0,1 15,3H21V21H19A1,1 0 0,1 18,22A1,1 0 0,1 17,21H7A1,1 0 0,1 6,22A1,1 0 0,1 5,21H3V3H9A1,1 0 0,1 10,2M5,5V9H19V5H5M7,6A1,1 0 0,1 8,7A1,1 0 0,1 7,8A1,1 0 0,1 6,7A1,1 0 0,1 7,6M12,6H14V7H12V6M15,6H16V8H15V6M17,6H18V8H17V6M12,11A4,4 0 0,0 8,15A4,4 0 0,0 12,19A4,4 0 0,0 16,15A4,4 0 0,0 12,11M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6Z";
var mdiAmplifierOff = "M22.1 21.5L2.4 1.7L1.1 3L3 4.9V21H5C5 21.6 5.4 22 6 22S7 21.6 7 21H17C17 21.6 17.4 22 18 22S19 21.6 19 21H19.1L20.8 22.7L22.1 21.5M5 9V6.9L7.1 9H5M12 19C9.8 19 8 17.2 8 15C8 13.6 8.7 12.4 9.8 11.7L15.3 17.2C14.6 18.3 13.4 19 12 19M14 6V7H12V6H14M10 6C10.6 6 11 6.4 11 7C11 7.2 10.9 7.4 10.8 7.6L9.4 6.2C9.6 6.1 9.8 6 10 6M8.2 5L6.2 3H9C9 2.4 9.4 2 10 2H14C14.6 2 15 2.4 15 3H21V17.8L12.2 9H19V5H8.2M16 6V8H15V6H16M18 6V8H17V6H18Z";
var mdiAnchor = "M12 2A3 3 0 0 0 9 5A3 3 0 0 0 11 7.83V9H8V11H11V19.92C10.26 19.79 9.5 19.58 8.79 19.27C8.05 18.95 7.4 18.56 6.82 18.09C6.24 17.62 5.78 17.11 5.44 16.55L7 15L3 12V15C3 15.97 3.27 16.88 3.82 17.72C4.37 18.56 5.09 19.31 6 19.95C6.87 20.59 7.84 21.09 8.88 21.45C9.93 21.81 10.97 22 12 22C13.03 22 14.07 21.8 15.12 21.44C16.16 21.08 17.13 20.58 18 19.95C18.92 19.31 19.63 18.57 20.18 17.72C20.73 16.88 21 15.97 21 15V12L17 15L18.56 16.55C18.22 17.11 17.76 17.62 17.18 18.09C16.6 18.56 15.95 18.95 15.21 19.27C14.5 19.58 13.74 19.79 13 19.92V11H16V9H13V7.82A3 3 0 0 0 15 5A3 3 0 0 0 12 2M12 4A1 1 0 0 1 13 5A1 1 0 0 1 12 6A1 1 0 0 1 11 5A1 1 0 0 1 12 4Z";
var mdiAndroid = "M16.61 15.15C16.15 15.15 15.77 14.78 15.77 14.32S16.15 13.5 16.61 13.5H16.61C17.07 13.5 17.45 13.86 17.45 14.32C17.45 14.78 17.07 15.15 16.61 15.15M7.41 15.15C6.95 15.15 6.57 14.78 6.57 14.32C6.57 13.86 6.95 13.5 7.41 13.5H7.41C7.87 13.5 8.24 13.86 8.24 14.32C8.24 14.78 7.87 15.15 7.41 15.15M16.91 10.14L18.58 7.26C18.67 7.09 18.61 6.88 18.45 6.79C18.28 6.69 18.07 6.75 18 6.92L16.29 9.83C14.95 9.22 13.5 8.9 12 8.91C10.47 8.91 9 9.24 7.73 9.82L6.04 6.91C5.95 6.74 5.74 6.68 5.57 6.78C5.4 6.87 5.35 7.08 5.44 7.25L7.1 10.13C4.25 11.69 2.29 14.58 2 18H22C21.72 14.59 19.77 11.7 16.91 10.14H16.91Z";
var mdiAndroidAuto = "M22.78,17.91C22.94,18.16 23,18.42 23,18.7C23,19.08 22.87,19.39 22.57,19.64C22.27,19.89 21.94,20 21.56,20H19.08L12.42,8H11.58L4.92,20H2.39C1.92,20 1.53,19.8 1.22,19.38C0.91,18.96 0.89,18.5 1.17,18L10.78,1.69C11.09,1.22 11.5,1 12,1C12.53,1 12.92,1.22 13.17,1.69L22.78,17.91M4.78,22.31L12,9.38L19.22,22.31L18.5,23L12,20.34L5.44,23L4.78,22.31Z";
var mdiAndroidDebugBridge = "M15,9A1,1 0 0,1 14,8A1,1 0 0,1 15,7A1,1 0 0,1 16,8A1,1 0 0,1 15,9M9,9A1,1 0 0,1 8,8A1,1 0 0,1 9,7A1,1 0 0,1 10,8A1,1 0 0,1 9,9M16.12,4.37L18.22,2.27L17.4,1.44L15.09,3.75C14.16,3.28 13.11,3 12,3C10.88,3 9.84,3.28 8.91,3.75L6.6,1.44L5.78,2.27L7.88,4.37C6.14,5.64 5,7.68 5,10V11H19V10C19,7.68 17.86,5.64 16.12,4.37M5,16C5,19.86 8.13,23 12,23A7,7 0 0,0 19,16V12H5V16Z";
var mdiAndroidMessages = "M20,20H7A2,2 0 0,1 5,18V8.94L2.23,5.64C2.09,5.47 2,5.24 2,5A1,1 0 0,1 3,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M8.5,7A0.5,0.5 0 0,0 8,7.5V8.5A0.5,0.5 0 0,0 8.5,9H18.5A0.5,0.5 0 0,0 19,8.5V7.5A0.5,0.5 0 0,0 18.5,7H8.5M8.5,11A0.5,0.5 0 0,0 8,11.5V12.5A0.5,0.5 0 0,0 8.5,13H18.5A0.5,0.5 0 0,0 19,12.5V11.5A0.5,0.5 0 0,0 18.5,11H8.5M8.5,15A0.5,0.5 0 0,0 8,15.5V16.5A0.5,0.5 0 0,0 8.5,17H13.5A0.5,0.5 0 0,0 14,16.5V15.5A0.5,0.5 0 0,0 13.5,15H8.5Z";
var mdiAndroidStudio = "M11,2H13V4H13.5A1.5,1.5 0 0,1 15,5.5V9L14.56,9.44L16.2,12.28C17.31,11.19 18,9.68 18,8H20C20,10.42 18.93,12.59 17.23,14.06L20.37,19.5L20.5,21.72L18.63,20.5L15.56,15.17C14.5,15.7 13.28,16 12,16C10.72,16 9.5,15.7 8.44,15.17L5.37,20.5L3.5,21.72L3.63,19.5L9.44,9.44L9,9V5.5A1.5,1.5 0 0,1 10.5,4H11V2M9.44,13.43C10.22,13.8 11.09,14 12,14C12.91,14 13.78,13.8 14.56,13.43L13.1,10.9H13.09C12.47,11.5 11.53,11.5 10.91,10.9H10.9L9.44,13.43M12,6A1,1 0 0,0 11,7A1,1 0 0,0 12,8A1,1 0 0,0 13,7A1,1 0 0,0 12,6Z";
var mdiAngleAcute = "M20,19H4.09L14.18,4.43L15.82,5.57L11.28,12.13C12.89,12.96 14,14.62 14,16.54C14,16.7 14,16.85 13.97,17H20V19M7.91,17H11.96C12,16.85 12,16.7 12,16.54C12,15.28 11.24,14.22 10.14,13.78L7.91,17Z";
var mdiAngleObtuse = "M21,19H9.31L4.07,5.36L5.93,4.64L8.96,12.5C9.5,12.29 10.09,12.17 10.71,12.17V12.17C13.38,12.17 15.56,14.34 15.58,17H21V19M10.69,17H13.58C13.56,15.42 12.3,14.17 10.71,14.17C10.34,14.17 10,14.24 9.67,14.36L10.69,17Z";
var mdiAngleRight = "M5,4H7V11H13V17H20V19H5V4M7,17H11V13H7V17Z";
var mdiAngular = "M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.6L6.47,17H8.53L9.64,14.22H14.34L15.45,17H17.5L12,4.6M13.62,12.5H10.39L12,8.63L13.62,12.5Z";
var mdiAngularjs = "M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.5L5,7L6.08,16.22L12,19.5L17.92,16.22L19,7L12,4.5M12,5.72L16.58,16H14.87L13.94,13.72H10.04L9.12,16H7.41L12,5.72M13.34,12.3L12,9.07L10.66,12.3H13.34Z";
var mdiAnimation = "M4,2C2.89,2 2,2.89 2,4V14H4V4H14V2H4M8,6C6.89,6 6,6.89 6,8V18H8V8H18V6H8M12,10C10.89,10 10,10.89 10,12V20C10,21.11 10.89,22 12,22H20C21.11,22 22,21.11 22,20V12C22,10.89 21.11,10 20,10H12Z";
var mdiAnimationOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10Z";
var mdiAnimationPlay = "M4,2H14V4H4V14H2V4C2,2.89 2.89,2 4,2M8,6H18V8H8V18H6V8C6,6.89 6.89,6 8,6M12,10H20C21.11,10 22,10.89 22,12V20C22,21.11 21.11,22 20,22H12C10.89,22 10,21.11 10,20V12C10,10.89 10.89,10 12,10M14,12V20L20,16L14,12Z";
var mdiAnimationPlayOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10M14,13V19L18,16L14,13Z";
var mdiAnsible = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2M16.1 17C15.91 17 15.76 16.9 15.55 16.73L10.39 12.56L8.66 16.9H7.17L11.54 6.39C11.65 6.11 11.89 5.97 12.17 5.97C12.45 5.97 12.67 6.11 12.79 6.39L16.77 15.97C16.81 16.08 16.84 16.19 16.84 16.26C16.83 16.68 16.5 17 16.1 17M12.17 8.11L14.76 14.5L10.85 11.42L12.17 8.11Z";
var mdiAntenna = "M12 7.5C12.69 7.5 13.27 7.73 13.76 8.2S14.5 9.27 14.5 10C14.5 11.05 14 11.81 13 12.28V21H11V12.28C10 11.81 9.5 11.05 9.5 10C9.5 9.27 9.76 8.67 10.24 8.2S11.31 7.5 12 7.5M16.69 5.3C17.94 6.55 18.61 8.11 18.7 10C18.7 11.8 18.03 13.38 16.69 14.72L15.5 13.5C16.5 12.59 17 11.42 17 10C17 8.67 16.5 7.5 15.5 6.5L16.69 5.3M6.09 4.08C4.5 5.67 3.7 7.64 3.7 10S4.5 14.3 6.09 15.89L4.92 17.11C3 15.08 2 12.7 2 10C2 7.3 3 4.94 4.92 2.91L6.09 4.08M19.08 2.91C21 4.94 22 7.3 22 10C22 12.8 21 15.17 19.08 17.11L17.91 15.89C19.5 14.3 20.3 12.33 20.3 10S19.5 5.67 17.91 4.08L19.08 2.91M7.31 5.3L8.5 6.5C7.5 7.42 7 8.58 7 10C7 11.33 7.5 12.5 8.5 13.5L7.31 14.72C5.97 13.38 5.3 11.8 5.3 10C5.3 8.2 5.97 6.64 7.31 5.3Z";
var mdiAnvil = "M9,5V10C13.03,12.47 8.44,14.97 6,16V19H21V16C14.59,13.27 17.47,9 22,8V5H9M2,6C2.81,8.13 4.42,9.5 7,10V6H2Z";
var mdiApacheKafka = "M15.54 12.97C14.86 12.97 14.24 13.22 13.76 13.64L12.47 12.89C12.56 12.6 12.6 12.29 12.6 11.97C12.6 11.65 12.56 11.34 12.5 11.05L13.73 10.32C14.21 10.76 14.85 11 15.54 11C17.03 11 18.24 9.81 18.24 8.32S17.03 5.63 15.54 5.63 12.84 6.84 12.84 8.33C12.84 8.5 12.86 8.7 12.89 8.88L11.64 9.6C11.21 9.15 10.64 8.82 10 8.65V7.26C11.09 6.91 11.88 5.89 11.88 4.69C11.88 3.2 10.67 2 9.18 2C7.69 2 6.5 3.2 6.5 4.69C6.5 5.89 7.26 6.9 8.34 7.26V8.66C6.86 9.04 5.76 10.37 5.76 11.97C5.76 13.57 6.86 14.91 8.34 15.28V16.73C7.26 17.09 6.5 18.1 6.5 19.3C6.5 20.79 7.69 22 9.18 22C10.67 22 11.88 20.79 11.88 19.3C11.88 18.1 11.09 17.08 10 16.73V15.29C10.64 15.13 11.2 14.8 11.64 14.35L12.9 15.08C12.86 15.27 12.84 15.46 12.84 15.66C12.84 17.15 14.05 18.36 15.54 18.36S18.24 17.15 18.24 15.66 17.03 12.97 15.54 12.97M15.54 7C16.28 7 16.87 7.59 16.87 8.32S16.28 9.66 15.54 9.66 14.21 9.06 14.21 8.32 14.8 7 15.54 7M7.85 4.69C7.85 3.95 8.44 3.35 9.18 3.35C9.92 3.35 10.5 3.95 10.5 4.69S9.92 6.03 9.18 6.03C8.44 6.03 7.85 5.43 7.85 4.69M10.5 19.3C10.5 20.04 9.92 20.64 9.18 20.64C8.44 20.64 7.85 20.04 7.85 19.3C7.85 18.56 8.44 17.96 9.18 17.96C9.92 17.96 10.5 18.56 10.5 19.3M9.18 13.89C8.12 13.89 7.26 13.03 7.26 11.97C7.26 10.91 8.12 10.05 9.18 10.05S11.1 10.91 11.1 11.97C11.1 13.03 10.24 13.89 9.18 13.89M15.54 17C14.8 17 14.21 16.4 14.21 15.66S14.8 14.33 15.54 14.33 16.87 14.93 16.87 15.66 16.28 17 15.54 17Z";
var mdiApi = "M7 7H5A2 2 0 0 0 3 9V17H5V13H7V17H9V9A2 2 0 0 0 7 7M7 11H5V9H7M14 7H10V17H12V13H14A2 2 0 0 0 16 11V9A2 2 0 0 0 14 7M14 11H12V9H14M20 9V15H21V17H17V15H18V9H17V7H21V9Z";
var mdiApiOff = "M7 11H5V9H7M14 7H11.38L13.29 9H14V9.75L15.87 11.71C15.95 11.5 16 11.25 16 11V9C16 7.9 15.11 7 14 7M4.45 2.62L3 4L5.86 7H5C3.9 7 3 7.9 3 9V17H5V13H7V17H9V10.3L10 11.34V17H12V13.45L19.55 21.38L21 20M20.9 17H21V15H20V9H21V7H17V9H18V13.95Z";
var mdiApple = "M18.71,19.5C17.88,20.74 17,21.95 15.66,21.97C14.32,22 13.89,21.18 12.37,21.18C10.84,21.18 10.37,21.95 9.1,22C7.79,22.05 6.8,20.68 5.96,19.47C4.25,17 2.94,12.45 4.7,9.39C5.57,7.87 7.13,6.91 8.82,6.88C10.1,6.86 11.32,7.75 12.11,7.75C12.89,7.75 14.37,6.68 15.92,6.84C16.57,6.87 18.39,7.1 19.56,8.82C19.47,8.88 17.39,10.1 17.41,12.63C17.44,15.65 20.06,16.66 20.09,16.67C20.06,16.74 19.67,18.11 18.71,19.5M13,3.5C13.73,2.67 14.94,2.04 15.94,2C16.07,3.17 15.6,4.35 14.9,5.19C14.21,6.04 13.07,6.7 11.95,6.61C11.8,5.46 12.36,4.26 13,3.5Z";
var mdiAppleAirplay = "M6,22H18L12,16M21,3H3A2,2 0 0,0 1,5V17A2,2 0 0,0 3,19H7V17H3V5H21V17H17V19H21A2,2 0 0,0 23,17V5A2,2 0 0,0 21,3Z";
var mdiAppleFinder = "M8 11C7.45 11 7 10.55 7 10V8C7 7.45 7.45 7 8 7C8.55 7 9 7.45 9 8V10C9 10.55 8.55 11 8 11M17 10V8C17 7.45 16.55 7 16 7C15.45 7 15 7.45 15 8V10C15 10.55 15.45 11 16 11C16.55 11 17 10.55 17 10M22 5V20C22 21.1 21.1 22 20 22H4C2.9 22 2 21.1 2 20V5C2 3.9 2.9 3 4 3H20C21.1 3 22 3.9 22 5M4 20L13.06 20C12.96 19.35 12.89 18.64 12.83 17.94C12.56 17.96 12.3 18 12 18C8.24 18 6.31 15.73 6.23 15.63C5.88 15.21 5.94 14.58 6.36 14.22C6.78 13.87 7.41 13.93 7.77 14.35C7.83 14.43 9.23 16 12 16C12.27 16 12.5 15.97 12.74 15.95C12.71 14.75 12.73 13.74 12.74 13.26H10.93C10.28 13.26 9.75 12.7 9.75 12C9.77 11.75 10.07 7.82 11 5H4L4 20M20 20L20 5H12.6C11.74 7.19 11.37 10.73 11.27 11.76H13.08C13.72 11.76 14.25 12.32 14.25 13C14.25 13.04 14.21 14.15 14.24 15.6C15.54 15.11 16.22 14.35 16.23 14.34C16.58 13.92 17.21 13.85 17.63 14.2C18.06 14.55 18.12 15.18 17.77 15.61C17.71 15.68 16.55 17.05 14.32 17.68C14.38 18.5 14.46 19.29 14.58 20H20Z";
var mdiAppleIcloud = "M22,15.04C22,17.23 20.24,19 18.07,19H5.93C3.76,19 2,17.23 2,15.04C2,13.07 3.43,11.44 5.31,11.14C5.28,11 5.27,10.86 5.27,10.71C5.27,9.33 6.38,8.2 7.76,8.2C8.37,8.2 8.94,8.43 9.37,8.8C10.14,7.05 11.13,5.44 13.91,5.44C17.28,5.44 18.87,8.06 18.87,10.83C18.87,10.94 18.87,11.06 18.86,11.17C20.65,11.54 22,13.13 22,15.04Z";
var mdiAppleIos = "M2.09 16.8H3.75V9.76H2.09M2.92 8.84C3.44 8.84 3.84 8.44 3.84 7.94C3.84 7.44 3.44 7.04 2.92 7.04C2.4 7.04 2 7.44 2 7.94C2 8.44 2.4 8.84 2.92 8.84M9.25 7.06C6.46 7.06 4.7 8.96 4.7 12C4.7 15.06 6.46 16.96 9.25 16.96C12.04 16.96 13.8 15.06 13.8 12C13.8 8.96 12.04 7.06 9.25 7.06M9.25 8.5C10.96 8.5 12.05 9.87 12.05 12C12.05 14.15 10.96 15.5 9.25 15.5C7.54 15.5 6.46 14.15 6.46 12C6.46 9.87 7.54 8.5 9.25 8.5M14.5 14.11C14.57 15.87 16 16.96 18.22 16.96C20.54 16.96 22 15.82 22 14C22 12.57 21.18 11.77 19.23 11.32L18.13 11.07C16.95 10.79 16.47 10.42 16.47 9.78C16.47 9 17.2 8.45 18.28 8.45C19.38 8.45 20.13 9 20.21 9.89H21.84C21.8 8.2 20.41 7.06 18.29 7.06C16.21 7.06 14.73 8.21 14.73 9.91C14.73 11.28 15.56 12.13 17.33 12.53L18.57 12.82C19.78 13.11 20.27 13.5 20.27 14.2C20.27 15 19.47 15.57 18.31 15.57C17.15 15.57 16.26 15 16.16 14.11H14.5Z";
var mdiAppleKeyboardCaps = "M15,14V8H17.17L12,2.83L6.83,8H9V14H15M12,0L22,10H17V16H7V10H2L12,0M7,18H17V24H7V18M15,20H9V22H15V20Z";
var mdiAppleKeyboardCommand = "M6,2A4,4 0 0,1 10,6V8H14V6A4,4 0 0,1 18,2A4,4 0 0,1 22,6A4,4 0 0,1 18,10H16V14H18A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18V16H10V18A4,4 0 0,1 6,22A4,4 0 0,1 2,18A4,4 0 0,1 6,14H8V10H6A4,4 0 0,1 2,6A4,4 0 0,1 6,2M16,18A2,2 0 0,0 18,20A2,2 0 0,0 20,18A2,2 0 0,0 18,16H16V18M14,10H10V14H14V10M6,16A2,2 0 0,0 4,18A2,2 0 0,0 6,20A2,2 0 0,0 8,18V16H6M8,6A2,2 0 0,0 6,4A2,2 0 0,0 4,6A2,2 0 0,0 6,8H8V6M18,8A2,2 0 0,0 20,6A2,2 0 0,0 18,4A2,2 0 0,0 16,6V8H18Z";
var mdiAppleKeyboardControl = "M19.78,11.78L18.36,13.19L12,6.83L5.64,13.19L4.22,11.78L12,4L19.78,11.78Z";
var mdiAppleKeyboardOption = "M3,4H9.11L16.15,18H21V20H14.88L7.84,6H3V4M14,4H21V6H14V4Z";
var mdiAppleKeyboardShift = "M15,18V12H17.17L12,6.83L6.83,12H9V18H15M12,4L22,14H17V20H7V14H2L12,4Z";
var mdiAppleSafari = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.09 4.8,16 6.11,17.41L9.88,9.88L17.41,6.11C16,4.8 14.09,4 12,4M12,20A8,8 0 0,0 20,12C20,9.91 19.2,8 17.89,6.59L14.12,14.12L6.59,17.89C8,19.2 9.91,20 12,20M12,12L11.23,11.23L9.7,14.3L12.77,12.77L12,12M12,17.5H13V19H12V17.5M15.88,15.89L16.59,15.18L17.65,16.24L16.94,16.95L15.88,15.89M17.5,12V11H19V12H17.5M12,6.5H11V5H12V6.5M8.12,8.11L7.41,8.82L6.35,7.76L7.06,7.05L8.12,8.11M6.5,12V13H5V12H6.5Z";
var mdiApplication = "M19,4C20.11,4 21,4.9 21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V6A2,2 0 0,1 5,4H19M19,18V8H5V18H19Z";
var mdiApplicationCog = "M21.7 18.6V17.6L22.8 16.8C22.9 16.7 23 16.6 22.9 16.5L21.9 14.8C21.9 14.7 21.7 14.7 21.6 14.7L20.4 15.2C20.1 15 19.8 14.8 19.5 14.7L19.3 13.4C19.3 13.3 19.2 13.2 19.1 13.2H17.1C16.9 13.2 16.8 13.3 16.8 13.4L16.6 14.7C16.3 14.9 16.1 15 15.8 15.2L14.6 14.7C14.5 14.7 14.4 14.7 14.3 14.8L13.3 16.5C13.3 16.6 13.3 16.7 13.4 16.8L14.5 17.6V18.6L13.4 19.4C13.3 19.5 13.2 19.6 13.3 19.7L14.3 21.4C14.4 21.5 14.5 21.5 14.6 21.5L15.8 21C16 21.2 16.3 21.4 16.6 21.5L16.8 22.8C16.9 22.9 17 23 17.1 23H19.1C19.2 23 19.3 22.9 19.3 22.8L19.5 21.5C19.8 21.3 20 21.2 20.3 21L21.5 21.4C21.6 21.4 21.7 21.4 21.8 21.3L22.8 19.6C22.9 19.5 22.9 19.4 22.8 19.4L21.7 18.6M18 19.5C17.2 19.5 16.5 18.8 16.5 18S17.2 16.5 18 16.5 19.5 17.2 19.5 18 18.8 19.5 18 19.5M11.29 20H5C3.89 20 3 19.1 3 18V6C3 4.89 3.9 4 5 4H19C20.11 4 21 4.9 21 6V11.68C20.38 11.39 19.71 11.18 19 11.08V8H5V18H11C11 18.7 11.11 19.37 11.29 20Z";
var mdiApplicationExport = "M8,12H17.76L15.26,9.5L16.67,8.08L21.59,13L16.67,17.92L15.26,16.5L17.76,14H8V12M19,3C20.11,3 21,3.9 21,5V9.67L19,7.67V7H5V19H19V18.33L21,16.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19Z";
var mdiApplicationImport = "M1,12H10.76L8.26,9.5L9.67,8.08L14.59,13L9.67,17.92L8.26,16.5L10.76,14H1V12M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V16H5V19H19V7H5V10H3V5A2,2 0 0,1 5,3H19Z";
var mdiApplicationSettings = "M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22M5 4H19A2 2 0 0 1 21 6V18A2 2 0 0 1 19 20H5A2 2 0 0 1 3 18V6A2 2 0 0 1 5 4M5 8V18H19V8H5";
var mdiApproximatelyEqual = "M18.9 9.2C18.1 10.1 16.6 11 15 11C13.5 11 12.6 10.5 11.8 10.1C11 9.8 10.2 9.3 8.9 9.3C7.7 9.3 6.6 10 6 10.6L5 9.1C5.9 8.2 7.3 7.2 8.9 7.2C10.4 7.2 11.3 7.8 12.1 8.1C12.9 8.4 13.7 9 15 9C16.2 9 17.3 8.2 17.9 7.6L18.9 9.2M19 14.1C18.1 15 16.7 16 15.1 16C13.6 16 12.7 15.5 11.9 15.1C11.1 14.8 10.3 14.2 9 14.2C7.8 14.2 6.7 15 6.1 15.6L5.1 14C6 13.1 7.4 12.1 9 12.1C10.5 12.1 11.4 12.6 12.2 13C13 13.3 13.8 13.8 15.1 13.8C16.3 13.8 17.4 13 18 12.4L19 14.1Z";
var mdiApproximatelyEqualBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.3 8.2C10.6 8.2 11.4 8.7 12.1 9C12.7 9.3 13.4 9.7 14.5 9.7C15.5 9.7 16.5 9 17 8.5L17.8 9.8C17.1 10.6 15.8 11.4 14.4 11.4C13.1 11.4 12.3 10.9 11.7 10.6C11.1 10.3 10.3 9.9 9.2 9.9C8.2 9.9 7.2 10.6 6.7 11.1L6 9.8C6.7 9 8 8.2 9.3 8.2M14.6 15.8C13.3 15.8 12.5 15.3 11.8 15C11.2 14.7 10.4 14.3 9.3 14.3C8.3 14.3 7.3 15 6.8 15.5L6 14.1C6.7 13.3 8 12.5 9.3 12.5C10.6 12.5 11.4 13 12.1 13.3C12.7 13.6 13.4 14 14.6 14C15.6 14 16.6 13.3 17.1 12.8L17.9 14.1C17.3 15 16 15.8 14.6 15.8Z";
var mdiApps = "M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z";
var mdiAppsBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,7V9H9V7H7M11,7V9H13V7H11M15,7V9H17V7H15M7,11V13H9V11H7M11,11V13H13V11H11M15,11V13H17V11H15M7,15V17H9V15H7M11,15V17H13V15H11M15,15V17H17V15H15Z";
var mdiArch = "M12,2C11.11,4.18 10.57,5.61 9.58,7.73C10.19,8.37 10.93,9.12 12.14,9.97C10.84,9.43 9.95,8.9 9.29,8.34C8,11 6.03,14.75 2,22C5.17,20.17 7.63,19.04 9.92,18.61C9.82,18.19 9.76,17.73 9.77,17.25V17.15C9.82,15.12 10.88,13.56 12.13,13.67C13.38,13.77 14.35,15.5 14.3,17.54C14.29,17.92 14.25,18.29 14.18,18.63C16.44,19.07 18.87,20.19 22,22C21.38,20.86 20.83,19.84 20.31,18.87C19.5,18.23 18.61,17.39 16.85,16.5C18.06,16.8 18.93,17.16 19.61,17.57C14.26,7.62 13.83,6.3 12,2Z";
var mdiArchive = "M3,3H21V7H3V3M4,8H20V21H4V8M9.5,11A0.5,0.5 0 0,0 9,11.5V13H15V11.5A0.5,0.5 0 0,0 14.5,11H9.5Z";
var mdiArchiveAlert = "M2 4H18V7H2V4M3 8H17V20H3V8M7.5 11C7.22 11 7 11.22 7 11.5V13H13V11.5C13 11.22 12.78 11 12.5 11H7.5M20 13V7H22V13H20M20 17V15H22V17H20Z";
var mdiArchiveAlertOutline = "M2 4H18V7H2V4M7.5 11H12.5C12.78 11 13 11.22 13 11.5V13H7V11.5C7 11.22 7.22 11 7.5 11M20 13V7H22V13H20M20 17V15H22V17H20M3 8H5V18H15V8H17V20H3V8Z";
var mdiArchiveArrowDown = "M3 3H21V7H3V3M4 21V8H20V21H4M14 14V11H10V14H7L12 19L17 14H14Z";
var mdiArchiveArrowDownOutline = "M20 21H4V10H6V19H18V10H20V21M3 3H21V9H3V3M5 5V7H19V5M10.5 11V14H8L12 18L16 14H13.5V11";
var mdiArchiveArrowUp = "M4 21H20V8H4M14 15V18H10V15H7L12 10L17 15M3 3H21V7H3";
var mdiArchiveArrowUpOutline = "M20 21H4V10H6V19H18V10H20V21M3 3H21V9H3V3M5 5V7H19V5M10.5 17V14H8L12 10L16 14H13.5V17";
var mdiArchiveOutline = "M20 21H4V10H6V19H18V10H20V21M3 3H21V9H3V3M9.5 11H14.5C14.78 11 15 11.22 15 11.5V13H9V11.5C9 11.22 9.22 11 9.5 11M5 5V7H19V5H5Z";
var mdiArmFlex = "M3 18.34C3 18.34 4 7.09 7 3L12 4L11 7.09H9V14.25H10C12 11.18 16.14 10.06 18.64 11.18C21.94 12.71 21.64 17.32 18.64 19.36C16.24 21 9 22.43 3 18.34Z";
var mdiArmFlexOutline = "M7 7.76V16.25H11.08L11.68 15.34C12.84 13.55 14.93 12.75 16.47 12.75C17 12.75 17.45 12.84 17.79 13C18.7 13.41 18.95 14.18 19 14.74C19.08 15.87 18.5 17.03 17.5 17.71C16.6 18.33 14.44 19 11.87 19C10.12 19 7.61 18.69 5.12 17.3C5.41 14.85 6 10.88 7 7.76M7 3C4 7.09 3 18.34 3 18.34C5.9 20.31 9.08 21 11.87 21C14.86 21 17.39 20.21 18.64 19.36C21.64 17.32 21.94 12.71 18.64 11.18C18 10.89 17.26 10.75 16.47 10.75C14.17 10.75 11.5 11.96 10 14.25H9V7.09H11L12 4L7 3Z";
var mdiArrangeBringForward = "M2,2H16V16H2V2M22,8V22H8V18H10V20H20V10H18V8H22Z";
var mdiArrangeBringToFront = "M2,2H11V6H9V4H4V9H6V11H2V2M22,13V22H13V18H15V20H20V15H18V13H22M8,8H16V16H8V8Z";
var mdiArrangeSendBackward = "M2,2H16V16H2V2M22,8V22H8V18H18V8H22M4,4V14H14V4H4Z";
var mdiArrangeSendToBack = "M2,2H11V11H2V2M9,4H4V9H9V4M22,13V22H13V13H22M15,20H20V15H15V20M16,8V11H13V8H16M11,16H8V13H11V16Z";
var mdiArrowAll = "M13,11H18L16.5,9.5L17.92,8.08L21.84,12L17.92,15.92L16.5,14.5L18,13H13V18L14.5,16.5L15.92,17.92L12,21.84L8.08,17.92L9.5,16.5L11,18V13H6L7.5,14.5L6.08,15.92L2.16,12L6.08,8.08L7.5,9.5L6,11H11V6L9.5,7.5L8.08,6.08L12,2.16L15.92,6.08L14.5,7.5L13,6V11Z";
var mdiArrowBottomLeft = "M19,6.41L17.59,5L7,15.59V9H5V19H15V17H8.41L19,6.41Z";
var mdiArrowBottomLeftBoldOutline = "M18.36,19.78H4.22V5.64L8.47,9.88L14.12,4.22L19.78,9.88L14.12,15.54L18.36,19.78M6.34,17.66H13.41L11.29,15.54L16.95,9.88L14.12,7.05L8.46,12.71L6.34,10.59V17.66Z";
var mdiArrowBottomLeftThick = "M15.5,5.69L18.31,8.5L11.94,14.89H16.89V18.31H5.69V7.11H9.12V12.06L15.5,5.69Z";
var mdiArrowBottomLeftThinCircleOutline = "M12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03M12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22M10.12 12.47L8 10.36V16H13.64L11.53 13.88L16.5 8.9L15.1 7.5";
var mdiArrowBottomRight = "M5,6.41L6.41,5L17,15.59V9H19V19H9V17H15.59L5,6.41Z";
var mdiArrowBottomRightBoldOutline = "M9.88,15.54L4.22,9.88L9.88,4.22L15.54,9.88L19.78,5.64V19.78H5.64L9.88,15.54M17.66,10.59L15.54,12.71L9.88,7.05L7.05,9.88L12.71,15.54L10.59,17.66H17.66V10.59Z";
var mdiArrowBottomRightThick = "M14.89,12.06V7.11H18.31V18.31H7.11V14.89H12.06L5.69,8.5L8.5,5.69L14.89,12.06Z";
var mdiArrowBottomRightThinCircleOutline = "M12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 7.59 7.59 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03M12 22C17.54 22 22 17.54 22 12C22 6.46 17.54 2 12 2C6.46 2 2 6.46 2 12C2 17.54 6.46 22 12 22M13.88 12.47L16 10.36V16H10.36L12.47 13.88L7.5 8.9L8.9 7.5";
var mdiArrowCollapse = "M19.5,3.09L15,7.59V4H13V11H20V9H16.41L20.91,4.5L19.5,3.09M4,13V15H7.59L3.09,19.5L4.5,20.91L9,16.41V20H11V13H4Z";
var mdiArrowCollapseAll = "M19.5,3.09L20.91,4.5L16.41,9H20V11H13V4H15V7.59L19.5,3.09M20.91,19.5L19.5,20.91L15,16.41V20H13V13H20V15H16.41L20.91,19.5M4.5,3.09L9,7.59V4H11V11H4V9H7.59L3.09,4.5L4.5,3.09M3.09,19.5L7.59,15H4V13H11V20H9V16.41L4.5,20.91L3.09,19.5Z";
var mdiArrowCollapseDown = "M19.92,12.08L12,20L4.08,12.08L5.5,10.67L11,16.17V2H13V16.17L18.5,10.66L19.92,12.08M12,20H2V22H22V20H12Z";
var mdiArrowCollapseHorizontal = "M13,20V4H15.03V20H13M10,20V4H12.03V20H10M5,8L9.03,12L5,16V13H2V11H5V8M20,16L16,12L20,8V11H23V13H20V16Z";
var mdiArrowCollapseLeft = "M11.92,19.92L4,12L11.92,4.08L13.33,5.5L7.83,11H22V13H7.83L13.34,18.5L11.92,19.92M4,12V2H2V22H4V12Z";
var mdiArrowCollapseRight = "M12.08,4.08L20,12L12.08,19.92L10.67,18.5L16.17,13H2V11H16.17L10.67,5.5L12.08,4.08M20,12V22H22V2H20V12Z";
var mdiArrowCollapseUp = "M4.08,11.92L12,4L19.92,11.92L18.5,13.33L13,7.83V22H11V7.83L5.5,13.33L4.08,11.92M12,4H22V2H2V4H12Z";
var mdiArrowCollapseVertical = "M4,12H20V14H4V12M4,9H20V11H4V9M16,4L12,8L8,4H11V1H13V4H16M8,19L12,15L16,19H13V22H11V19H8Z";
var mdiArrowDecision = "M11,5H8L12,1L16,5H13V9.43C12.25,9.89 11.58,10.46 11,11.12V5M22,11L18,7V10C14.39,9.85 11.31,12.57 11,16.17C9.44,16.72 8.62,18.44 9.17,20C9.72,21.56 11.44,22.38 13,21.83C14.56,21.27 15.38,19.56 14.83,18C14.53,17.14 13.85,16.47 13,16.17C13.47,12.17 17.47,11.97 17.95,11.97V14.97L22,11M10.63,11.59C9.3,10.57 7.67,10 6,10V7L2,11L6,15V12C7.34,12.03 8.63,12.5 9.64,13.4C9.89,12.76 10.22,12.15 10.63,11.59Z";
var mdiArrowDecisionAuto = "M12,5H9L13,1L17,5H14V9.43C13.25,9.89 12.58,10.46 12,11.12V5M10.4,15H8.5L7.8,13H4.6L3.9,15H2L5.2,6H7.2L10.4,15M7.35,11.65L6.2,8L5.05,11.65H7.35M23,11L19,7V10C15.39,9.85 12.31,12.57 12,16.17C10.44,16.72 9.62,18.44 10.17,20C10.72,21.56 12.44,22.38 14,21.83C15.56,21.27 16.38,19.56 15.83,18C15.53,17.14 14.85,16.47 14,16.17C14.47,12.17 18.47,11.97 18.95,11.97V14.97L23,11Z";
var mdiArrowDecisionAutoOutline = "M19,15V12C18.5,12 14.5,12.16 14.05,16.2C15.61,16.75 16.43,18.47 15.88,20.03C15.33,21.59 13.61,22.41 12.05,21.86C10.5,21.3 9.67,19.59 10.22,18.03C10.5,17.17 11.2,16.5 12.05,16.2C12.34,12.61 15.4,9.88 19,10V7L23,11L19,15M14,19A1,1 0 0,0 13,18A1,1 0 0,0 12,19A1,1 0 0,0 13,20A1,1 0 0,0 14,19M12,11.12C12.58,10.46 13.25,9.89 14,9.43V5H17L13,1L9,5H12V11.12M7.2,6H5.2L2,15H3.9L4.6,13H7.8L8.5,15H10.4L7.2,6M5.05,11.65L6.2,8L7.35,11.65H5.05Z";
var mdiArrowDecisionOutline = "M9.64,13.4C8.63,12.5 7.34,12.03 6,12V15L2,11L6,7V10C7.67,10 9.3,10.57 10.63,11.59C10.22,12.15 9.89,12.76 9.64,13.4M18,15V12C17.5,12 13.5,12.16 13.05,16.2C14.61,16.75 15.43,18.47 14.88,20.03C14.33,21.59 12.61,22.41 11.05,21.86C9.5,21.3 8.67,19.59 9.22,18.03C9.5,17.17 10.2,16.5 11.05,16.2C11.34,12.61 14.4,9.88 18,10V7L22,11L18,15M13,19A1,1 0 0,0 12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19M11,11.12C11.58,10.46 12.25,9.89 13,9.43V5H16L12,1L8,5H11V11.12Z";
var mdiArrowDown = "M11,4H13V16L18.5,10.5L19.92,11.92L12,19.84L4.08,11.92L5.5,10.5L11,16V4Z";
var mdiArrowDownBold = "M9,4H15V12H19.84L12,19.84L4.16,12H9V4Z";
var mdiArrowDownBoldBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,17L17,12H14V8H10V12H7L12,17Z";
var mdiArrowDownBoldBoxOutline = "M12,17L7,12H10V8H14V12H17L12,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiArrowDownBoldCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,17L17,12H14V8H10V12H7L12,17Z";
var mdiArrowDownBoldCircleOutline = "M12,17L7,12H10V8H14V12H17L12,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiArrowDownBoldHexagonOutline = "M12,17L7,12H10V8H14V12H17L12,17M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z";
var mdiArrowDownBoldOutline = "M22,11L12,21L2,11H8V3H16V11H22M12,18L17,13H14V5H10V13H7L12,18Z";
var mdiArrowDownBox = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M11,6V14.5L7.5,11L6.08,12.42L12,18.34L17.92,12.42L16.5,11L13,14.5V6H11Z";
var mdiArrowDownCircle = "M11,6V14L7.5,10.5L6.08,11.92L12,17.84L17.92,11.92L16.5,10.5L13,14V6H11M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22Z";
var mdiArrowDownCircleOutline = "M11,6H13V14L16.5,10.5L17.92,11.92L12,17.84L6.08,11.92L7.5,10.5L11,14V6M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z";
var mdiArrowDownDropCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,10L12,15L17,10H7Z";
var mdiArrowDownDropCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M7,10L12,15L17,10H7Z";
var mdiArrowDownThick = "M10,4H14V13L17.5,9.5L19.92,11.92L12,19.84L4.08,11.92L6.5,9.5L10,13V4Z";
var mdiArrowDownThinCircleOutline = "M12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03M12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22M11 13.54H8L12 17.5L16 13.54H13V6.5H11";
var mdiArrowExpand = "M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z";
var mdiArrowExpandAll = "M9.5,13.09L10.91,14.5L6.41,19H10V21H3V14H5V17.59L9.5,13.09M10.91,9.5L9.5,10.91L5,6.41V10H3V3H10V5H6.41L10.91,9.5M14.5,13.09L19,17.59V14H21V21H14V19H17.59L13.09,14.5L14.5,13.09M13.09,9.5L17.59,5H14V3H21V10H19V6.41L14.5,10.91L13.09,9.5Z";
var mdiArrowExpandDown = "M22,4V2H2V4H11V18.17L5.5,12.67L4.08,14.08L12,22L19.92,14.08L18.5,12.67L13,18.17V4H22Z";
var mdiArrowExpandHorizontal = "M9,11H15V8L19,12L15,16V13H9V16L5,12L9,8V11M2,20V4H4V20H2M20,20V4H22V20H20Z";
var mdiArrowExpandLeft = "M20,22H22V2H20V11H5.83L11.33,5.5L9.92,4.08L2,12L9.92,19.92L11.33,18.5L5.83,13H20V22Z";
var mdiArrowExpandRight = "M4,2H2V22H4V13H18.17L12.67,18.5L14.08,19.92L22,12L14.08,4.08L12.67,5.5L18.17,11H4V2Z";
var mdiArrowExpandUp = "M2,20V22H22V20H13V5.83L18.5,11.33L19.92,9.92L12,2L4.08,9.92L5.5,11.33L11,5.83V20H2Z";
var mdiArrowExpandVertical = "M13,9V15H16L12,19L8,15H11V9H8L12,5L16,9H13M4,2H20V4H4V2M4,20H20V22H4V20Z";
var mdiArrowHorizontalLock = "M14.8 7V5.5C14.8 4.1 13.4 3 12 3S9.2 4.1 9.2 5.5V7C8.6 7 8 7.6 8 8.2V11.7C8 12.4 8.6 13 9.2 13H14.7C15.4 13 16 12.4 16 11.8V8.3C16 7.6 15.4 7 14.8 7M13.5 7H10.5V5.5C10.5 4.7 11.2 4.2 12 4.2S13.5 4.7 13.5 5.5V7M6 17V20L2 16L6 12V15H18V12L22 16L18 20V17H6Z";
var mdiArrowLeft = "M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z";
var mdiArrowLeftBold = "M20,9V15H12V19.84L4.16,12L12,4.16V9H20Z";
var mdiArrowLeftBoldBox = "M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M7,12L12,17V14H16V10H12V7L7,12Z";
var mdiArrowLeftBoldBoxOutline = "M7,12L12,7V10H16V14H12V17L7,12M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M19,5H5V19H19V5Z";
var mdiArrowLeftBoldCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,12L12,17V14H16V10H12V7L7,12Z";
var mdiArrowLeftBoldCircleOutline = "M7,12L12,7V10H16V14H12V17L7,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12Z";
var mdiArrowLeftBoldHexagonOutline = "M7,12L12,7V10H16V14H12V17L7,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z";
var mdiArrowLeftBoldOutline = "M13,22L3,12L13,2V8H21V16H13V22M6,12L11,17V14H19V10H11V7L6,12Z";
var mdiArrowLeftBox = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M18,11H9.5L13,7.5L11.58,6.08L5.66,12L11.58,17.92L13,16.5L9.5,13H18V11Z";
var mdiArrowLeftCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M18,11H10L13.5,7.5L12.08,6.08L6.16,12L12.08,17.92L13.5,16.5L10,13H18V11Z";
var mdiArrowLeftCircleOutline = "M18,11V13H10L13.5,16.5L12.08,17.92L6.16,12L12.08,6.08L13.5,7.5L10,11H18M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12Z";
var mdiArrowLeftDropCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14,7L9,12L14,17V7Z";
var mdiArrowLeftDropCircleOutline = "M22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12M14,7L9,12L14,17V7Z";
var mdiArrowLeftRight = "M6.45,17.45L1,12L6.45,6.55L7.86,7.96L4.83,11H19.17L16.14,7.96L17.55,6.55L23,12L17.55,17.45L16.14,16.04L19.17,13H4.83L7.86,16.04L6.45,17.45Z";
var mdiArrowLeftRightBold = "M8,14V18L2,12L8,6V10H16V6L22,12L16,18V14H8Z";
var mdiArrowLeftRightBoldOutline = "M14,16V22L24,12L14,2V8H10V2L0,12L10,22V16H14M8,14V17L3,12L8,7V10H16V7L21,12L16,17V14H8Z";
var mdiArrowLeftThick = "M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z";
var mdiArrowLeftThinCircleOutline = "M3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12M2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12M10.46 11V8L6.5 12L10.46 16V13H17.5V11";
var mdiArrowRight = "M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z";
var mdiArrowRightBold = "M4,15V9H12V4.16L19.84,12L12,19.84V15H4Z";
var mdiArrowRightBoldBox = "M3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19M17,12L12,7V10H8V14H12V17L17,12Z";
var mdiArrowRightBoldBoxOutline = "M17,12L12,17V14H8V10H12V7L17,12M3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19M5,19H19V5H5V19Z";
var mdiArrowRightBoldCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M17,12L12,7V10H8V14H12V17L17,12Z";
var mdiArrowRightBoldCircleOutline = "M17,12L12,17V14H8V10H12V7L17,12M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12Z";
var mdiArrowRightBoldHexagonOutline = "M17,12L12,17V14H8V10H12V7L17,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z";
var mdiArrowRightBoldOutline = "M11,16H3V8H11V2L21,12L11,22V16M13,7V10H5V14H13V17L18,12L13,7Z";
var mdiArrowRightBox = "M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5M6,13H14.5L11,16.5L12.42,17.92L18.34,12L12.42,6.08L11,7.5L14.5,11H6V13Z";
var mdiArrowRightCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M6,13H14L10.5,16.5L11.92,17.92L17.84,12L11.92,6.08L10.5,7.5L14,11H6V13Z";
var mdiArrowRightCircleOutline = "M6,13V11H14L10.5,7.5L11.92,6.08L17.84,12L11.92,17.92L10.5,16.5L14,13H6M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12Z";
var mdiArrowRightDropCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M10,17L15,12L10,7V17Z";
var mdiArrowRightDropCircleOutline = "M2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12M4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12M10,17L15,12L10,7V17Z";
var mdiArrowRightThick = "M4,10V14H13L9.5,17.5L11.92,19.92L19.84,12L11.92,4.08L9.5,6.5L13,10H4Z";
var mdiArrowRightThinCircleOutline = "M20.03 12C20.03 7.59 16.41 3.97 12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12M22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2C17.54 2 22 6.46 22 12M13.54 13V16L17.5 12L13.54 8V11H6.5V13";
var mdiArrowSplitHorizontal = "M8,18H11V15H2V13H22V15H13V18H16L12,22L8,18M12,2L8,6H11V9H2V11H22V9H13V6H16L12,2Z";
var mdiArrowSplitVertical = "M18,16V13H15V22H13V2H15V11H18V8L22,12L18,16M2,12L6,16V13H9V22H11V2H9V11H6V8L2,12Z";
var mdiArrowTopLeft = "M19,17.59L17.59,19L7,8.41V15H5V5H15V7H8.41L19,17.59Z";
var mdiArrowTopLeftBoldOutline = "M14.12,8.46L19.78,14.12L14.12,19.78L8.46,14.12L4.22,18.36V4.22H18.36L14.12,8.46M6.34,13.41L8.46,11.29L14.12,16.95L16.95,14.12L11.29,8.47L13.41,6.34H6.34V13.41Z";
var mdiArrowTopLeftBottomRight = "M13,21H21V13H19V17.59L6.41,5H11V3H3V11H5V6.41L17.59,19H13V21Z";
var mdiArrowTopLeftBottomRightBold = "M5.83,8.66L3,11.5V3H11.5L8.66,5.83L18.17,15.34L21,12.5V21H12.5L15.34,18.17L5.83,8.66Z";
var mdiArrowTopLeftThick = "M9.12,11.94V16.89H5.69V5.69H16.89V9.12H11.94L18.31,15.5L15.5,18.31L9.12,11.94Z";
var mdiArrowTopLeftThinCircleOutline = "M12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 7.59 7.59 3.97 12 3.97M12 2C6.46 2 2 6.46 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12C22 6.46 17.54 2 12 2M10.12 11.53L8 13.64V8H13.64L11.53 10.12L16.5 15.1L15.1 16.5";
var mdiArrowTopRight = "M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z";
var mdiArrowTopRightBoldOutline = "M5.64,4.22H19.78V18.36L15.54,14.12L9.88,19.78L4.22,14.12L9.88,8.46L5.64,4.22M17.66,6.34H10.59L12.71,8.46L7.05,14.12L9.88,16.95L15.54,11.29L17.66,13.41V6.34H17.66Z";
var mdiArrowTopRightBottomLeft = "M11,21H3V13H5V17.59L17.59,5H13V3H21V11H19V6.41L6.41,19H11V21Z";
var mdiArrowTopRightBottomLeftBold = "M18.17,8.66L21,11.5V3H12.5L15.34,5.83L5.83,15.34L3,12.5V21H11.5L8.66,18.17L18.17,8.66Z";
var mdiArrowTopRightThick = "M8.5,18.31L5.69,15.5L12.06,9.12H7.11V5.69H18.31V16.89H14.89V11.94L8.5,18.31Z";
var mdiArrowTopRightThinCircleOutline = "M12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97M12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2M13.88 11.53L16 13.64V8H10.36L12.47 10.12L7.5 15.1L8.9 16.5";
var mdiArrowUp = "M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z";
var mdiArrowUpBold = "M15,20H9V12H4.16L12,4.16L19.84,12H15V20Z";
var mdiArrowUpBoldBox = "M19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21M12,7L7,12H10V16H14V12H17L12,7Z";
var mdiArrowUpBoldBoxOutline = "M12,7L17,12H14V16H10V12H7L12,7M19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21M19,19V5H5V19H19Z";
var mdiArrowUpBoldCircle = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,7L7,12H10V16H14V12H17L12,7Z";
var mdiArrowUpBoldCircleOutline = "M12,7L17,12H14V16H10V12H7L12,7M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z";
var mdiArrowUpBoldHexagonOutline = "M12,7L17,12H14V16H10V12H7L12,7M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z";
var mdiArrowUpBoldOutline = "M16,13V21H8V13H2L12,3L22,13H16M7,11H10V19H14V11H17L12,6L7,11Z";
var mdiArrowUpBox = "M21,19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19C20.11,3 21,3.9 21,5V19M13,18V9.5L16.5,13L17.92,11.58L12,5.66L6.08,11.58L7.5,13L11,9.5V18H13Z";
var mdiArrowUpCircle = "M13,18V10L16.5,13.5L17.92,12.08L12,6.16L6.08,12.08L7.5,13.5L11,10V18H13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiArrowUpCircleOutline = "M13,18H11V10L7.5,13.5L6.08,12.08L12,6.16L17.92,12.08L16.5,13.5L13,10V18M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiArrowUpDown = "M17.45,17.55L12,23L6.55,17.55L7.96,16.14L11,19.17V4.83L7.96,7.86L6.55,6.45L12,1L17.45,6.45L16.04,7.86L13,4.83V19.17L16.04,16.14L17.45,17.55Z";
var mdiArrowUpDownBold = "M10,8H6L12,2L18,8H14V16H18L12,22L6,16H10V8Z";
var mdiArrowUpDownBoldOutline = "M16,10H22L12,0L2,10H8V14H2L12,24L22,14H16V10M14,16H17L12,21L7,16H10V8H7L12,3L17,8H14V16Z";
var mdiArrowUpDropCircle = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M17,14L12,9L7,14H17Z";
var mdiArrowUpDropCircleOutline = "M12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M17,14L12,9L7,14H17Z";
var mdiArrowUpThick = "M14,20H10V11L6.5,14.5L4.08,12.08L12,4.16L19.92,12.08L17.5,14.5L14,11V20Z";
var mdiArrowUpThinCircleOutline = "M12 3.97C7.59 3.97 3.97 7.59 3.97 12C3.97 16.41 7.59 20.03 12 20.03C16.41 20.03 20.03 16.41 20.03 12C20.03 7.59 16.41 3.97 12 3.97M12 2C17.54 2 22 6.46 22 12C22 17.54 17.54 22 12 22C6.46 22 2 17.54 2 12C2 6.46 6.46 2 12 2M13 10.46H16L12 6.5L8 10.46H11V17.5H13";
var mdiArrowVerticalLock = "M18.8 11V9.5C18.8 8.1 17.4 7 16 7S13.2 8.1 13.2 9.5V11C12.6 11 12 11.6 12 12.2V15.7C12 16.4 12.6 17 13.2 17H18.7C19.4 17 20 16.4 20 15.8V12.3C20 11.6 19.4 11 18.8 11M17.5 11H14.5V9.5C14.5 8.7 15.2 8.2 16 8.2C16.8 8.2 17.5 8.7 17.5 9.5V11M9 6H12L8 2L4 6H7V18H4L8 22L12 18H9V6Z";
var mdiArtstation = "M1.77,16.88L3.5,19.86C3.84,20.54 4.54,21 5.33,21H16.79L14.43,16.88H1.77M22.23,16.9C22.23,16.5 22.11,16.11 21.9,15.78L15.17,4.1C14.82,3.44 14.15,3 13.35,3H9.8L20.18,21L21.82,18.14C22.13,17.6 22.23,17.36 22.23,16.9M12.73,13.94L8.1,5.92L3.45,13.94H12.73Z";
var mdiAspectRatio = "M19,12H17V15H14V17H19V12M7,9H10V7H5V12H7V9M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H3V5H21V19Z";
var mdiAssistant = "M19,2H5A2,2 0 0,0 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4A2,2 0 0,0 19,2M13.88,12.88L12,17L10.12,12.88L6,11L10.12,9.12L12,5L13.88,9.12L18,11";
var mdiAsterisk = "M10,2H14L13.21,9.91L19.66,5.27L21.66,8.73L14.42,12L21.66,15.27L19.66,18.73L13.21,14.09L14,22H10L10.79,14.09L4.34,18.73L2.34,15.27L9.58,12L2.34,8.73L4.34,5.27L10.79,9.91L10,2Z";
var mdiAt = "M12,15C12.81,15 13.5,14.7 14.11,14.11C14.7,13.5 15,12.81 15,12C15,11.19 14.7,10.5 14.11,9.89C13.5,9.3 12.81,9 12,9C11.19,9 10.5,9.3 9.89,9.89C9.3,10.5 9,11.19 9,12C9,12.81 9.3,13.5 9.89,14.11C10.5,14.7 11.19,15 12,15M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12V13.45C22,14.45 21.65,15.3 21,16C20.3,16.67 19.5,17 18.5,17C17.3,17 16.31,16.5 15.56,15.5C14.56,16.5 13.38,17 12,17C10.63,17 9.45,16.5 8.46,15.54C7.5,14.55 7,13.38 7,12C7,10.63 7.5,9.45 8.46,8.46C9.45,7.5 10.63,7 12,7C13.38,7 14.55,7.5 15.54,8.46C16.5,9.45 17,10.63 17,12V13.45C17,13.86 17.16,14.22 17.46,14.53C17.76,14.84 18.11,15 18.5,15C18.92,15 19.27,14.84 19.57,14.53C19.87,14.22 20,13.86 20,13.45V12C20,9.81 19.23,7.93 17.65,6.35C16.07,4.77 14.19,4 12,4C9.81,4 7.93,4.77 6.35,6.35C4.77,7.93 4,9.81 4,12C4,14.19 4.77,16.07 6.35,17.65C7.93,19.23 9.81,20 12,20H17V22H12C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z";
var mdiAtlassian = "M7.93,11.24C7.74,11 7.38,10.94 7.13,11.13C7.06,11.19 7,11.26 6.96,11.34L2.06,21.15C1.91,21.44 2.03,21.79 2.32,21.94C2.4,22 2.5,22 2.59,22H9.41C9.63,22 9.84,21.88 9.94,21.68C11.41,18.63 10.5,14 7.93,11.24M11.53,2.31C9.05,6.14 8.76,11 10.77,15.09L14.06,21.68C14.17,21.88 14.37,22 14.59,22H21.41A0.59,0.59 0 0,0 22,21.41C22,21.32 22,21.23 21.94,21.15C21.94,21.15 12.76,2.77 12.5,2.31C12.39,2.04 12.06,1.92 11.78,2.06C11.67,2.11 11.58,2.2 11.53,2.31Z";
var mdiAtm = "M8,9V10.5H10.25V15H11.75V10.5H14V9H8M6,9H3A1,1 0 0,0 2,10V15H3.5V13.5H5.5V15H7V10A1,1 0 0,0 6,9M5.5,12H3.5V10.5H5.5V12M21,9H16.5A1,1 0 0,0 15.5,10V15H17V10.5H18V14H19.5V10.5H20.5V15H22V10A1,1 0 0,0 21,9Z";
var mdiAtom = "M12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11M4.22,4.22C5.65,2.79 8.75,3.43 12,5.56C15.25,3.43 18.35,2.79 19.78,4.22C21.21,5.65 20.57,8.75 18.44,12C20.57,15.25 21.21,18.35 19.78,19.78C18.35,21.21 15.25,20.57 12,18.44C8.75,20.57 5.65,21.21 4.22,19.78C2.79,18.35 3.43,15.25 5.56,12C3.43,8.75 2.79,5.65 4.22,4.22M15.54,8.46C16.15,9.08 16.71,9.71 17.23,10.34C18.61,8.21 19.11,6.38 18.36,5.64C17.62,4.89 15.79,5.39 13.66,6.77C14.29,7.29 14.92,7.85 15.54,8.46M8.46,15.54C7.85,14.92 7.29,14.29 6.77,13.66C5.39,15.79 4.89,17.62 5.64,18.36C6.38,19.11 8.21,18.61 10.34,17.23C9.71,16.71 9.08,16.15 8.46,15.54M5.64,5.64C4.89,6.38 5.39,8.21 6.77,10.34C7.29,9.71 7.85,9.08 8.46,8.46C9.08,7.85 9.71,7.29 10.34,6.77C8.21,5.39 6.38,4.89 5.64,5.64M9.88,14.12C10.58,14.82 11.3,15.46 12,16.03C12.7,15.46 13.42,14.82 14.12,14.12C14.82,13.42 15.46,12.7 16.03,12C15.46,11.3 14.82,10.58 14.12,9.88C13.42,9.18 12.7,8.54 12,7.97C11.3,8.54 10.58,9.18 9.88,9.88C9.18,10.58 8.54,11.3 7.97,12C8.54,12.7 9.18,13.42 9.88,14.12M18.36,18.36C19.11,17.62 18.61,15.79 17.23,13.66C16.71,14.29 16.15,14.92 15.54,15.54C14.92,16.15 14.29,16.71 13.66,17.23C15.79,18.61 17.62,19.11 18.36,18.36Z";
var mdiAtomVariant = "M18.36,2.64C20,2.64 21.36,4 21.36,5.64C21.36,7.29 20,8.64 18.36,8.64C16.71,8.64 15.36,7.29 15.36,5.64C15.36,5.34 15.41,5.06 15.5,4.8C14.43,4.29 13.25,4 12,4A8,8 0 0,0 4,12L4.04,12.84L2.05,13.05L2,12A10,10 0 0,1 12,2C13.69,2 15.28,2.42 16.67,3.16C17.16,2.83 17.74,2.64 18.36,2.64M18.36,4.64A1,1 0 0,0 17.36,5.64A1,1 0 0,0 18.36,6.64C18.92,6.64 19.36,6.19 19.36,5.64C19.36,5.08 18.92,4.64 18.36,4.64M5.64,15.36C7.29,15.36 8.64,16.71 8.64,18.36C8.64,18.66 8.59,18.94 8.5,19.2C9.57,19.71 10.75,20 12,20A8,8 0 0,0 20,12L19.96,11.16L21.95,10.95L22,12A10,10 0 0,1 12,22C10.31,22 8.72,21.58 7.33,20.84C6.84,21.17 6.26,21.36 5.64,21.36C4,21.36 2.64,20 2.64,18.36C2.64,16.71 4,15.36 5.64,15.36M5.64,17.36C5.08,17.36 4.64,17.81 4.64,18.36C4.64,18.92 5.08,19.36 5.64,19.36A1,1 0 0,0 6.64,18.36A1,1 0 0,0 5.64,17.36M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8Z";
var mdiAttachment = "M7.5,18A5.5,5.5 0 0,1 2,12.5A5.5,5.5 0 0,1 7.5,7H18A4,4 0 0,1 22,11A4,4 0 0,1 18,15H9.5A2.5,2.5 0 0,1 7,12.5A2.5,2.5 0 0,1 9.5,10H17V11.5H9.5A1,1 0 0,0 8.5,12.5A1,1 0 0,0 9.5,13.5H18A2.5,2.5 0 0,0 20.5,11A2.5,2.5 0 0,0 18,8.5H7.5A4,4 0 0,0 3.5,12.5A4,4 0 0,0 7.5,16.5H17V18H7.5Z";
var mdiAudioVideo = "M20,7H4A2,2 0 0,0 2,9V15A2,2 0 0,0 4,17H5V18C5,18.6 5.4,19 6,19H8C8.6,19 9,18.6 9,18V17H15V18C15,18.6 15.4,19 16,19H18C18.6,19 19,18.6 19,18V17H20A2,2 0 0,0 22,15V9A2,2 0 0,0 20,7M14,12H4V10H14V12M18,13A2,2 0 0,1 16,11A2,2 0 0,1 18,9A2,2 0 0,1 20,11A2,2 0 0,1 18,13M6,15H4V14H6V15M10,15H8V14H10V15M14,15H12V14H14V15Z";
var mdiAudioVideoOff = "M22.1 21.5L2.4 1.7L1.1 3L5.1 7H4C2.9 7 2 7.9 2 9V15C2 16.1 2.9 17 4 17H5V18C5 18.6 5.4 19 6 19H8C8.6 19 9 18.6 9 18V17H15V18C15 18.6 15.4 19 16 19H17.1L20.8 22.7L22.1 21.5M6 15H4V14H6V15M4 12V10H8.1L10.1 12H4M10 15H8V14H10V15M12 15V14H12.1L13.1 15H12M14 10V10.8L20.2 17C21.2 16.9 22 16.1 22 15V9C22 7.9 21.1 7 20 7H10.2L13.2 10H14M18 9C19.1 9 20 9.9 20 11S19.1 13 18 13 16 12.1 16 11 16.9 9 18 9Z";
var mdiAugmentedReality = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M7,9H10C10.6,9 11,9.5 11,10V15H9.5V13.5H7.5V15H6V10C6,9.5 6.4,9 7,9M13,9H16.5C17.35,9 18,9.65 18,10.5V11.5C18,12.1 17.6,12.65 17.1,12.9L18,15H16.5L15.65,13H14.5V15H13V9M7.5,10.5V12H9.5V10.5H7.5M14.5,10.5V11.5H16.5V10.5H14.5";
var mdiAutoDownload = "M22 17V19H11V17H22M19 4.5V9.5H22L16.5 15L11 9.5H14V4.5H19M10.7 15H8.8L8.1 13H4.9L4.2 15H2.3L5.5 6H7.5L10.7 15M7.65 11.65L6.5 8L5.35 11.65H7.65Z";
var mdiAutoFix = "M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z";
var mdiAutoUpload = "M5.35,12.65L6.5,9L7.65,12.65M5.5,7L2.3,16H4.2L4.9,14H8.1L8.8,16H10.7L7.5,7M11,20H22V18H11M14,16H19V11H22L16.5,5.5L11,11H14V16Z";
var mdiAutorenew = "M12,6V9L16,5L12,1V4A8,8 0 0,0 4,12C4,13.57 4.46,15.03 5.24,16.26L6.7,14.8C6.25,13.97 6,13 6,12A6,6 0 0,1 12,6M18.76,7.74L17.3,9.2C17.74,10.04 18,11 18,12A6,6 0 0,1 12,18V15L8,19L12,23V20A8,8 0 0,0 20,12C20,10.43 19.54,8.97 18.76,7.74Z";
var mdiAvTimer = "M11,17A1,1 0 0,0 12,18A1,1 0 0,0 13,17A1,1 0 0,0 12,16A1,1 0 0,0 11,17M11,3V7H13V5.08C16.39,5.57 19,8.47 19,12A7,7 0 0,1 12,19A7,7 0 0,1 5,12C5,10.32 5.59,8.78 6.58,7.58L12,13L13.41,11.59L6.61,4.79V4.81C4.42,6.45 3,9.05 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M18,12A1,1 0 0,0 17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12M6,12A1,1 0 0,0 7,13A1,1 0 0,0 8,12A1,1 0 0,0 7,11A1,1 0 0,0 6,12Z";
var mdiAws = "M7.64,10.38C7.64,10.63 7.66,10.83 7.71,11C7.76,11.12 7.83,11.28 7.92,11.46C7.96,11.5 7.97,11.56 7.97,11.61C7.97,11.68 7.93,11.74 7.84,11.81L7.42,12.09C7.36,12.13 7.3,12.15 7.25,12.15C7.18,12.15 7.12,12.11 7.05,12.05C6.96,11.95 6.88,11.85 6.81,11.74C6.75,11.63 6.68,11.5 6.61,11.35C6.09,11.96 5.44,12.27 4.65,12.27C4.09,12.27 3.65,12.11 3.32,11.79C3,11.47 2.83,11.04 2.83,10.5C2.83,9.95 3.03,9.5 3.43,9.14C3.84,8.8 4.38,8.62 5.06,8.62C5.29,8.62 5.5,8.64 5.77,8.68C6,8.71 6.27,8.76 6.53,8.82V8.34C6.53,7.83 6.43,7.5 6.22,7.27C6,7.06 5.65,6.97 5.14,6.97C4.9,6.97 4.66,7 4.42,7.05C4.17,7.11 3.93,7.18 3.7,7.28C3.59,7.32 3.5,7.35 3.47,7.36C3.42,7.38 3.39,7.38 3.36,7.38C3.27,7.38 3.22,7.32 3.22,7.18V6.85C3.22,6.75 3.23,6.67 3.27,6.62C3.3,6.57 3.36,6.53 3.45,6.5C3.69,6.36 3.96,6.26 4.29,6.18C4.62,6.09 4.96,6.05 5.33,6.05C6.12,6.05 6.7,6.23 7.07,6.59C7.44,6.95 7.62,7.5 7.62,8.23V10.38H7.64M4.94,11.4C5.16,11.4 5.38,11.36 5.62,11.28C5.86,11.2 6.07,11.05 6.25,10.85C6.36,10.72 6.44,10.58 6.5,10.42C6.5,10.26 6.55,10.07 6.55,9.84V9.57C6.35,9.5 6.15,9.5 5.93,9.45C5.72,9.43 5.5,9.41 5.31,9.41C4.86,9.41 4.54,9.5 4.32,9.68C4.1,9.86 4,10.11 4,10.44C4,10.76 4.07,11 4.24,11.15C4.4,11.32 4.63,11.4 4.94,11.4M10.28,12.11C10.16,12.11 10.08,12.09 10,12.05C9.97,12 9.92,11.91 9.88,11.79L8.32,6.65C8.28,6.5 8.26,6.43 8.26,6.38C8.26,6.27 8.31,6.21 8.42,6.21H9.07C9.2,6.21 9.29,6.23 9.33,6.28C9.39,6.32 9.43,6.41 9.47,6.54L10.58,10.94L11.62,6.54C11.65,6.41 11.69,6.32 11.75,6.28C11.8,6.24 11.89,6.21 12,6.21H12.55C12.67,6.21 12.76,6.23 12.81,6.28C12.86,6.32 12.91,6.41 12.94,6.54L14,11L15.14,6.54C15.18,6.41 15.23,6.32 15.27,6.28C15.33,6.24 15.41,6.21 15.53,6.21H16.15C16.26,6.21 16.32,6.27 16.32,6.38C16.32,6.41 16.31,6.45 16.3,6.5C16.3,6.5 16.28,6.58 16.26,6.65L14.65,11.79C14.61,11.93 14.57,12 14.5,12.05C14.46,12.09 14.37,12.12 14.26,12.12H13.69C13.56,12.12 13.5,12.1 13.42,12.05C13.37,12 13.32,11.92 13.3,11.79L12.27,7.5L11.24,11.78C11.21,11.91 11.17,12 11.12,12.05C11.06,12.09 10.97,12.11 10.85,12.11H10.28M18.83,12.29C18.5,12.29 18.13,12.25 17.8,12.17C17.47,12.09 17.21,12 17.04,11.91C16.93,11.85 16.86,11.78 16.83,11.72C16.8,11.66 16.79,11.6 16.79,11.54V11.2C16.79,11.06 16.84,11 16.94,11C17,11 17,11 17.06,11C17.1,11 17.16,11.05 17.23,11.08C17.45,11.18 17.7,11.26 17.96,11.31C18.23,11.36 18.5,11.39 18.75,11.39C19.17,11.39 19.5,11.32 19.72,11.17C19.95,11 20.07,10.81 20.07,10.54C20.07,10.35 20,10.2 19.89,10.07C19.77,9.95 19.54,9.83 19.22,9.73L18.25,9.43C17.77,9.27 17.41,9.05 17.19,8.75C16.97,8.46 16.86,8.13 16.86,7.78C16.86,7.5 16.92,7.26 17.04,7.05C17.16,6.83 17.32,6.65 17.5,6.5C17.72,6.35 17.94,6.24 18.21,6.16C18.47,6.08 18.75,6.04 19.05,6.04C19.19,6.04 19.34,6.05 19.5,6.07C19.64,6.09 19.78,6.12 19.92,6.14C20.06,6.18 20.18,6.21 20.3,6.25C20.42,6.29 20.5,6.33 20.58,6.37C20.67,6.42 20.74,6.47 20.78,6.53C20.82,6.59 20.84,6.66 20.84,6.75V7.07C20.84,7.21 20.79,7.28 20.69,7.28C20.64,7.28 20.55,7.25 20.43,7.2C20.06,7.03 19.63,6.94 19.16,6.94C18.78,6.94 18.5,7 18.27,7.13C18.07,7.25 17.96,7.45 17.96,7.72C17.96,7.91 18.03,8.07 18.16,8.19C18.29,8.32 18.54,8.44 18.89,8.56L19.84,8.86C20.32,9 20.66,9.22 20.87,9.5C21.07,9.77 21.17,10.08 21.17,10.43C21.17,10.71 21.11,10.97 21,11.2C20.88,11.42 20.72,11.62 20.5,11.78C20.31,11.95 20.06,12.07 19.78,12.16C19.5,12.25 19.16,12.29 18.83,12.29M20.08,15.53C17.89,17.14 14.71,18 12,18C8.15,18 4.7,16.58 2.09,14.23C1.88,14.04 2.07,13.79 2.32,13.94C5.14,15.57 8.61,16.56 12.21,16.56C14.64,16.56 17.31,16.06 19.76,15C20.13,14.85 20.44,15.26 20.08,15.53M21,14.5C20.71,14.13 19.14,14.32 18.43,14.4C18.22,14.43 18.19,14.24 18.38,14.1C19.63,13.23 21.69,13.5 21.92,13.77C22.16,14.07 21.86,16.13 20.69,17.11C20.5,17.26 20.33,17.18 20.41,17C20.68,16.32 21.27,14.84 21,14.5Z";
var mdiAxe = "M12,2L22,8C22,12 20,14 16,15L13,10L9,6L12,2M4.11,19.84L2.12,18.33L9.19,9L11,10.81L4.11,19.84Z";
var mdiAxis = "M2.61,21L1.61,19.27L11,13.85V3H13V13.85L22.39,19.27L21.39,21L12,15.58L2.61,21Z";
var mdiAxisArrow = "M12,2L16,6H13V13.85L19.53,17.61L21,15.03L22.5,20.5L17,21.96L18.53,19.35L12,15.58L5.47,19.35L7,21.96L1.5,20.5L3,15.03L4.47,17.61L11,13.85V6H8L12,2Z";
var mdiAxisArrowInfo = "M12 2L16 6H13V13.85L19.53 17.61L21 15.03L22.5 20.5L17 21.96L18.53 19.35L12 15.58L5.47 19.35L7 21.96L1.5 20.5L3 15.03L4.47 17.61L11 13.85V6H8L12 2M21 5H19V3H21V5M22 10V12H18V10H19V8H18V6H21V10H22Z";
var mdiAxisArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M1.74,19.25L3.21,13.79L4.68,16.34L9,13.85V6H6L10,2L14,6H11V13.85L18.03,17.86L19.5,15.28L21,20.74L15.5,22.21L17.03,19.6L10,15.58L5.68,18.07L7.21,20.71L1.74,19.25Z";
var mdiAxisLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M11,13.82L20.39,19.25L19.39,21L10,15.56L3.17,19.5L2.17,17.77L9,13.82V3H11V13.82Z";
var mdiAxisXArrow = "M1.5,20.5L3,15.03L4.46,17.6L11,13.82V3H13V13.82L22.39,19.25L21.39,21L12,15.56L5.46,19.33L7,21.96L1.5,20.5Z";
var mdiAxisXArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.31,2.2 17.69,2.58 17.54,3.2C17.5,3.29 17.5,3.39 17.5,3.5V5H20.5M1.74,19.25L3.21,13.79L4.67,16.32L9,13.82V3H11V13.82L20.39,19.25L19.39,21L10,15.56L5.67,18.06L7.21,20.71L1.74,19.25Z";
var mdiAxisXRotateClockwise = "M12,10H14.91C14.57,6.55 13.4,4 12,4C10.42,4 9.12,7.27 9,11.42L7,12.57V12C7,6.5 9.24,2 12,2C14.42,2 16.44,5.44 16.9,10H20L16,14L12,10M12,22C10.12,22 8.47,19.92 7.62,16.84L9.37,15.83C9.87,18.31 10.86,20 12,20C13.27,20 14.36,17.89 14.79,14.92L16,16.12L16.7,15.42C16,19.26 14.16,22 12,22M2.11,18.87L1.11,17.13L1.06,17.06L11.12,11.25L12.72,12.84L2.15,18.94L2.11,18.87M21.89,5.13L22.89,6.87L19.2,9H17.77L17.5,7.66L21.89,5.13Z";
var mdiAxisXRotateCounterclockwise = "M12,14L16,10L20,14H16.9C16.44,18.56 14.42,22 12,22C10.12,22 8.47,19.92 7.62,16.84L9.37,15.83C9.87,18.31 10.86,20 12,20C13.4,20 14.57,17.45 14.91,14H12M1.11,17.13L13.89,9.75L13.96,10.54L10.5,14H10.54L2.11,18.87L1.11,17.13M21.89,5.13L22.89,6.87L17.88,9.76C17.79,9.03 17.67,8.33 17.5,7.66L21.89,5.13M12,2C14.3,2 16.23,5.1 16.82,9.32L16,8.5L14.87,9.63C14.5,6.37 13.35,4 12,4C10.42,4 9.12,7.27 9,11.42L7,12.57V12C7,6.5 9.24,2 12,2Z";
var mdiAxisXYArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M1.74,19.25L3.21,13.79L4.68,16.34L9,13.85V3H11V13.85L17.53,17.61L19,15.03L20.5,20.5L15,21.96L16.53,19.35L10,15.58L5.68,18.07L7.21,20.71L1.74,19.25Z";
var mdiAxisYArrow = "M22.5,20.5L17,21.96L18.53,19.35L12,15.58L2.61,21L1.61,19.27L11,13.85V3H13V13.85L19.53,17.61L21,15.03L22.5,20.5Z";
var mdiAxisYArrowLock = "M11,13.82L18,17.88L19.5,15.28L21,20.74L15.5,22.21L17,19.61L10,15.56L3.17,19.5L2.17,17.77L9,13.82V3H11V13.82M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5Z";
var mdiAxisYRotateClockwise = "M12,10L16,14L20,10H16.9C16.44,5.44 14.42,2 12,2C10.12,2 8.47,4.08 7.62,7.16L9.37,8.17C9.87,5.69 10.86,4 12,4C13.4,4 14.57,6.55 14.91,10H12M1.11,6.87L13.89,14.25L13.96,13.46L10.5,10H10.54L2.11,5.13L1.11,6.87M21.89,18.87L22.89,17.13L17.88,14.24C17.79,14.97 17.67,15.67 17.5,16.34L21.89,18.87M12,22C14.3,22 16.23,18.9 16.82,14.68L16,15.5L14.87,14.37C14.5,17.63 13.35,20 12,20C10.42,20 9.12,16.73 9,12.58L7,11.43V12C7,17.5 9.24,22 12,22Z";
var mdiAxisYRotateCounterclockwise = "M12,14H14.91C14.57,17.45 13.4,20 12,20C10.42,20 9.12,16.73 9,12.58L7,11.43V12C7,17.5 9.24,22 12,22C14.42,22 16.44,18.56 16.9,14H20L16,10L12,14M12,2C10.12,2 8.47,4.08 7.62,7.16L9.37,8.17C9.87,5.69 10.86,4 12,4C13.27,4 14.36,6.11 14.79,9.08L16,7.88L16.7,8.58C16,4.74 14.16,2 12,2M2.11,5.13L1.11,6.87L1.06,6.94L11.12,12.75L12.72,11.16L2.15,5.06L2.11,5.13M21.89,18.87L22.89,17.13L19.2,15H17.77L17.5,16.34L21.89,18.87Z";
var mdiAxisZArrow = "M12,2L16,6H13V13.82L22.39,19.25L21.39,21L12,15.56L2.61,21L1.61,19.25L11,13.82V6H8L12,2Z";
var mdiAxisZArrowLock = "M21.8,5C22.4,5 23,5.6 23,6.3V9.8C23,10.4 22.4,11 21.7,11H16.2C15.6,11 15,10.4 15,9.7V6.2C15,5.6 15.6,5 16.2,5V3.5C16.2,2.1 17.6,1 19,1C20.4,1 21.8,2.1 21.8,3.5V5M20.5,5V3.5C20.5,2.7 19.8,2.2 19,2.2C18.2,2.2 17.5,2.7 17.5,3.5V5H20.5M10,2L14,6H11V13.82L20.39,19.25L19.39,21L10,15.56L3.17,19.5L2.17,17.77L9,13.82V6H6L10,2Z";
var mdiAxisZRotateClockwise = "M14,12L10,16L14,20V16.9C18.56,16.44 22,14.42 22,12C22,9.58 18.56,7.56 14,7.1V9.09C17.45,9.43 20,10.6 20,12C20,13.4 17.45,14.57 14,14.91V12M4,12C4,10.6 6.55,9.43 10,9.09V7.1C5.44,7.56 2,9.58 2,12C2,14.16 4.74,16 8.58,16.7L7.88,16L9.08,14.79C6.11,14.36 4,13.27 4,12M13,2H11V13L13,11V2M13,22V21L11,19V22H13Z";
var mdiAxisZRotateCounterclockwise = "M10,12L14,16L10,20V16.9C5.44,16.44 2,14.42 2,12C2,9.58 5.44,7.56 10,7.1V9.09C6.55,9.43 4,10.6 4,12C4,13.4 6.55,14.57 10,14.91V12M20,12C20,10.6 17.45,9.43 14,9.09V7.1C18.56,7.56 22,9.58 22,12C22,14.16 19.26,16 15.42,16.7L16.12,16L14.92,14.79C17.89,14.36 20,13.27 20,12M11,2H13V13L11,11V2M11,22V21L13,19V22H11Z";
var mdiBabel = "M15.14 2C13.8 2.12 12.04 2.59 9.87 3.43C9.28 3.87 8.6 4.3 7.84 4.72V4.85C7.9 4.85 7.96 4.81 8.04 4.77C8.13 4.76 8.19 4.79 8.19 4.88L8.32 4.8L8.39 4.79L8.4 4.86C8.41 4.92 7.93 5.29 7 5.96L7.06 6.09H7L6.84 6.04C6.84 6.09 6.78 6.11 6.64 6.12L6.65 6.19L6.81 6.37C6.75 6.37 6.68 6.36 6.6 6.32C6.29 6.35 6 6.58 5.69 7L5.77 7.12C6.03 6.88 6.18 6.76 6.22 6.76L6.24 6.95C6.2 6.95 6.12 7 6.04 7.03L6.2 7.27C6.5 6.93 6.86 6.64 7.24 6.41C7.43 6.46 7.53 6.5 7.53 6.58L7.67 6.57C8.69 5.81 9.71 5.27 10.71 4.93L10.72 5.06C10.53 5.34 10.4 5.5 10.33 5.5C10.34 5.59 10.38 5.67 10.43 5.74C10.45 5.92 10 7.06 9.07 9.19C6.95 14.13 5.19 17.78 3.77 20.16C3.77 20.2 3.8 20.27 3.85 20.35C4.2 20.26 4.42 20.18 4.5 20.1L4.6 20.09L4.61 20.22L4.74 20.21L4.88 20.13C4.88 20.18 4.93 20.19 5 20.18L5.03 20.31C5.03 20.45 4.96 20.65 4.8 20.92C4.65 21.08 4.5 21.42 4.34 21.94V22H4.47C5.04 21.35 5.5 20.72 5.78 20.11C7.44 19.62 8.71 19.15 9.59 18.67C10.47 18.6 11.15 18.37 11.61 18L11.6 17.91L11.27 18H11.19L11.18 17.95C11.83 17.85 12.28 17.7 12.5 17.5C13.79 16.54 14.74 15.85 15.39 15.44C17.39 13.97 18.33 12.55 18.22 11.21C18.21 11.07 17.76 10.5 16.9 9.56C16.88 9.38 17.19 9.12 17.8 8.77L19.53 7.24C19.92 6.74 20.15 5.94 20.23 4.83L20.2 4.57C20.14 3.79 19.58 3.16 18.5 2.68C17.88 2.25 16.76 2.03 15.14 2M17.24 2.87C18.53 2.92 19.19 3.14 19.23 3.55L19.18 3.68L17.24 2.87M16 3.96C16.89 3.95 17.35 4.18 17.4 4.68L17.5 4.67V4.34L17.64 4.33C18 4.5 18.16 4.74 18.18 5C18.2 5.2 18.1 5.42 17.89 5.69C17.8 5.7 17.75 5.64 17.74 5.5H17.6L17.56 5.91C17 6.78 16.56 7.23 16.3 7.26C16.06 7.58 15.91 7.75 15.85 7.75C15.67 7.97 15.17 8.35 14.35 8.87C14.08 8.9 13.07 9.28 11.34 10.04C11.25 10 11.16 10 11.06 10L11.05 9.88C11.03 9.62 11.14 9.31 11.39 8.92C11.5 8.21 11.67 7.8 11.83 7.7L13.28 4.44C13.27 4.24 13.57 4.09 14.21 4L14.42 3.96L14.44 4.15C15.06 4.05 15.45 4 15.6 4C15.74 3.97 15.88 3.96 16 3.96M19 4.29H19.04C19.16 4.3 19.28 4.5 19.41 4.91L19.42 5.03C19.35 5.04 19.22 4.83 19.03 4.41L19 4.29M10.82 6.36H10.88L10.9 6.55C10.84 6.56 10.75 6.65 10.65 6.83L10.64 6.7C10.76 6.55 10.82 6.43 10.82 6.36M6.67 6.46L6.68 6.5C6.63 6.5 6.56 6.56 6.5 6.6L6.41 6.61L6.39 6.5L6.67 6.46M10.24 7.72L10.26 8H10.19L10.16 7.73L10.24 7.72M10.07 8.19C10.05 8.41 10 8.5 9.89 8.53L9.82 8.54C9.9 8.39 9.94 8.29 9.93 8.21L10.07 8.19M9.78 8.87L9.79 8.93L9.67 9.14L9.54 9.15L9.53 9.09C9.66 9.08 9.72 9 9.71 8.88L9.78 8.87M9.5 9.5L9.45 9.81H9.38L9.36 9.5H9.5M16.57 9.72L16.85 9.89C16.86 10 16.82 10.03 16.73 10.04C16.61 9.96 16.5 9.93 16.44 9.93L16.43 9.73L16.57 9.72M11 10.46L11.03 10.58L10.76 10.61L10.75 10.5L11 10.46M15.5 10.91C15.68 11 15.78 11.09 15.79 11.16L15.8 11.22C15.61 11.24 15.45 11.14 15.29 10.93L15.5 10.91M17.66 11.12C17.81 11.18 17.88 11.25 17.89 11.31L17.93 11.82C17.87 11.96 17.81 12.03 17.74 12.03L17.66 11.12M14.16 11.18C14.86 11.17 15.4 11.33 15.76 11.68L15.79 11.94C15.5 12.85 15.13 13.38 14.75 13.54L13 14.93C11.7 15.79 11 16.21 10.9 16.22C8.83 17.36 7.54 17.95 7.04 18H6.96C7.03 17.76 7.95 15.87 9.73 12.33C10.5 12.26 11.76 11.89 13.44 11.23L13.85 11.19C13.96 11.19 14.06 11.18 14.16 11.18M11.62 11.59L11.63 11.65L11.35 11.67L11.34 11.61L11.62 11.59M7.26 15.81C7.17 16.26 7.08 16.5 7 16.5L6.97 16.43C6.95 16.2 7.05 16 7.26 15.81M13.18 16.09L13.19 16.21C13.2 16.27 13 16.43 12.6 16.72C11.44 17.29 10.76 17.68 10.56 17.88C9.3 18.32 8.68 18.59 8.69 18.69C7.57 19.14 6.84 19.46 6.5 19.66C6.41 19.67 6.29 19.63 6.13 19.56C6.12 19.34 6.21 19.15 6.44 19C6.63 19 6.82 19 7 19.09C7.21 19 7.57 18.87 8.08 18.74L8.07 18.61L7.66 18.65C7.71 18.58 8.11 18.4 8.86 18.09L9.07 18.07L9.08 18.13C8.73 18.16 8.53 18.27 8.5 18.46C8.5 18.53 8.53 18.58 8.62 18.57C8.87 18.39 9 18.3 9 18.27C9.5 18.18 10.9 17.44 13.18 16.09M6.86 16.69L6.87 16.75C6.88 16.84 6.83 16.89 6.74 16.9V16.84C6.73 16.76 6.77 16.71 6.86 16.69M10 17.5C10.07 17.47 10.12 17.5 10.12 17.58C9.96 17.6 9.65 17.73 9.19 18H9.12L9.11 17.87C9.44 17.84 9.73 17.71 9.97 17.5H10M6.95 18.5L6.96 18.58C6.9 18.58 6.84 18.61 6.75 18.66L6.62 18.67C6.61 18.61 6.65 18.55 6.74 18.53L6.95 18.5M5.35 19.3L5.5 19.36C5.44 19.76 5.33 19.96 5.13 20C4.97 19.91 4.83 19.88 4.7 19.89L4.68 19.7C4.67 19.62 4.72 19.57 4.82 19.55C4.9 19.54 4.95 19.6 4.96 19.73C5.2 19.44 5.33 19.3 5.35 19.3Z";
var mdiBaby = "M18.5,4A2.5,2.5 0 0,1 21,6.5A2.5,2.5 0 0,1 18.5,9A2.5,2.5 0 0,1 16,6.5A2.5,2.5 0 0,1 18.5,4M4.5,20A1.5,1.5 0 0,1 3,18.5A1.5,1.5 0 0,1 4.5,17H11.5A1.5,1.5 0 0,1 13,18.5A1.5,1.5 0 0,1 11.5,20H4.5M16.09,19L14.69,15H11L6.75,10.75C6.75,10.75 9,8.25 12.5,8.25C15.5,8.25 15.85,9.25 16.06,9.87L18.92,18C19.2,18.78 18.78,19.64 18,19.92C17.22,20.19 16.36,19.78 16.09,19Z";
var mdiBabyBottle = "M11.28 2.8L10.78 3.3A5.5 5.5 0 0 0 6.41 2.87L6.33 2.8A2.5 2.5 0 0 0 2.8 6.33L2.87 6.41A5.5 5.5 0 0 0 3.3 10.78L2.8 11.28A1.5 1.5 0 0 0 2.8 13.4L4.21 14.82A1.5 1.5 0 0 0 6.33 14.82L6.68 14.46L13.76 21.53A1.5 1.5 0 0 0 15.88 21.53L21.53 15.88A1.5 1.5 0 0 0 21.53 13.76L14.46 6.68L14.82 6.33A1.5 1.5 0 0 0 14.82 4.21L13.4 2.8A1.5 1.5 0 0 0 11.28 2.8M13.76 5.27L5.27 13.76L3.86 12.34L12.34 3.86M14.82 11.63L11.63 14.82L10.57 13.76L13.76 10.57M16.94 13.76L13.76 16.94L12.69 15.88L15.88 12.69Z";
var mdiBabyBottleOutline = "M11.28 2.8L10.78 3.3C9.44 2.55 7.84 2.4 6.41 2.87L6.33 2.8C5.36 1.82 3.77 1.82 2.8 2.8S1.82 5.36 2.8 6.33L2.87 6.41C2.4 7.84 2.55 9.44 3.3 10.78L2.8 11.28C2.21 11.87 2.21 12.81 2.8 13.4L4.21 14.82C4.8 15.4 5.74 15.4 6.33 14.82L6.68 14.46L13.76 21.53C14.34 22.12 15.29 22.12 15.88 21.53L21.53 15.88C22.12 15.29 22.12 14.34 21.53 13.75L14.46 6.68L14.82 6.33C15.4 5.74 15.4 4.8 14.82 4.21L13.4 2.79C12.82 2.21 11.87 2.21 11.28 2.8M4.25 7.05C4.33 6.71 4.47 6.38 4.66 6.07L3.86 5.27C3.75 5.16 3.67 5.04 3.63 4.9C3.5 4.56 3.57 4.14 3.86 3.86S4.56 3.5 4.9 3.63C5.04 3.67 5.16 3.75 5.27 3.86L6.07 4.66C6.38 4.47 6.71 4.33 7.05 4.25C7.91 4 8.83 4.06 9.65 4.42L4.42 9.65C4.06 8.83 4 7.91 4.25 7.05M20.47 14.82L14.82 20.47L7.75 13.4L13.4 7.75L20.47 14.82M13.76 5.27L5.27 13.76L3.86 12.34L12.34 3.86L13.76 5.27M14.82 11.63L11.63 14.82L10.57 13.76L13.76 10.57L14.82 11.63M16.94 13.76L13.76 16.94L12.69 15.88L15.88 12.69L16.94 13.76Z";
var mdiBabyBuggy = "M17 20A2 2 0 0 1 15 22A2 2 0 0 1 13 20A2 2 0 0 1 15 18A2 2 0 0 1 17 20M7 20A2 2 0 0 1 5 22A2 2 0 0 1 3 20A2 2 0 0 1 5 18A2 2 0 0 1 7 20M17.61 3C16.95 3 16.44 3.2 16 3.5C15.32 3.91 14.88 4.59 14.47 5.07L5.71 15.35C5.16 16 5.62 17 6.47 17H14C15.11 17 16 16.1 16 15V6.38C16.58 5.7 16.93 5 17.61 5C18.38 5 19 5.66 19 6.5V7H21V6.5C21 4.56 19.5 3 17.61 3M8.86 3.09C7.04 3.16 5.23 3.76 3.68 4.9L8.44 9.66L12.32 5.1C12.59 4.78 12.91 4.38 13.3 4C12.14 3.45 10.9 3.15 9.65 3.09C9.39 3.08 9.12 3.08 8.86 3.09Z";
var mdiBabyCarriage = "M13,2V10H21A8,8 0 0,0 13,2M19.32,15.89C20.37,14.54 21,12.84 21,11H6.44L5.5,9H2V11H4.22C4.22,11 6.11,15.07 6.34,15.42C5.24,16 4.5,17.17 4.5,18.5A3.5,3.5 0 0,0 8,22C9.76,22 11.22,20.7 11.46,19H13.54C13.78,20.7 15.24,22 17,22A3.5,3.5 0 0,0 20.5,18.5C20.5,17.46 20.04,16.53 19.32,15.89M8,20A1.5,1.5 0 0,1 6.5,18.5A1.5,1.5 0 0,1 8,17A1.5,1.5 0 0,1 9.5,18.5A1.5,1.5 0 0,1 8,20M17,20A1.5,1.5 0 0,1 15.5,18.5A1.5,1.5 0 0,1 17,17A1.5,1.5 0 0,1 18.5,18.5A1.5,1.5 0 0,1 17,20Z";
var mdiBabyCarriageOff = "M22 10C22 5.6 18.4 2 14 2V10H22M14.2 11H22C22 12.8 21.4 14.5 20.3 15.9C21 16.5 21.4 17.4 21.5 18.3L14.2 11M20.8 22.7L22.1 21.4L2.4 1.7L1.1 3L9.1 11H7.4L6.5 9H3V11H5.2C5.2 11 7.1 15.1 7.3 15.4C6.3 15.9 5.6 16.9 5.5 18C5.2 19.9 6.6 21.7 8.5 22C10.4 22.3 12.2 20.9 12.5 19H14.6C14.7 19.4 14.8 19.8 15 20.2C15.9 21.9 18.1 22.5 19.7 21.6L20.8 22.7M10.5 18.5C10.5 19.3 9.8 20 9 20S7.5 19.3 7.5 18.5 8.2 17 9 17 10.5 17.7 10.5 18.5M18.1 20C17.2 20 16.5 19.3 16.5 18.5V18.4L18.1 20Z";
var mdiBabyFace = "M1,12C1,10.19 2.2,8.66 3.86,8.17C5.29,5.11 8.4,3 12,3C15.6,3 18.71,5.11 20.15,8.17C21.8,8.66 23,10.19 23,12C23,13.81 21.8,15.34 20.15,15.83C18.71,18.89 15.6,21 12,21C8.4,21 5.29,18.89 3.86,15.83C2.2,15.34 1,13.81 1,12M14.5,9.25A1.25,1.25 0 0,0 13.25,10.5A1.25,1.25 0 0,0 14.5,11.75A1.25,1.25 0 0,0 15.75,10.5A1.25,1.25 0 0,0 14.5,9.25M9.5,9.25A1.25,1.25 0 0,0 8.25,10.5A1.25,1.25 0 0,0 9.5,11.75A1.25,1.25 0 0,0 10.75,10.5A1.25,1.25 0 0,0 9.5,9.25M7.5,14C8.26,15.77 10,17 12,17C14,17 15.74,15.77 16.5,14H7.5M3,12C3,12.82 3.5,13.53 4.21,13.84C4.07,13.25 4,12.63 4,12C4,11.37 4.07,10.75 4.21,10.16C3.5,10.47 3,11.18 3,12M21,12C21,11.18 20.5,10.47 19.79,10.16C19.93,10.75 20,11.37 20,12C20,12.63 19.93,13.25 19.79,13.84C20.5,13.53 21,12.82 21,12Z";
var mdiBabyFaceOutline = "M14.5,9.25A1.25,1.25 0 0,1 15.75,10.5A1.25,1.25 0 0,1 14.5,11.75A1.25,1.25 0 0,1 13.25,10.5A1.25,1.25 0 0,1 14.5,9.25M9.5,9.25A1.25,1.25 0 0,1 10.75,10.5A1.25,1.25 0 0,1 9.5,11.75A1.25,1.25 0 0,1 8.25,10.5A1.25,1.25 0 0,1 9.5,9.25M7.5,14H16.5C15.74,15.77 14,17 12,17C10,17 8.26,15.77 7.5,14M1,12C1,10.19 2.2,8.66 3.86,8.17C5.29,5.11 8.4,3 12,3C15.6,3 18.71,5.11 20.15,8.17C21.8,8.66 23,10.19 23,12C23,13.81 21.8,15.34 20.15,15.83C18.71,18.89 15.6,21 12,21C8.4,21 5.29,18.89 3.86,15.83C2.2,15.34 1,13.81 1,12M12,5C8.82,5 6.14,7.12 5.28,10H5A2,2 0 0,0 3,12A2,2 0 0,0 5,14H5.28C6.14,16.88 8.82,19 12,19C15.18,19 17.86,16.88 18.72,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H18.72C17.86,7.12 15.18,5 12,5Z";
var mdiBackburger = "M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z";
var mdiBackspace = "M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.31,21 7,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12";
var mdiBackspaceOutline = "M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12L19,15.59M22,3A2,2 0 0,1 24,5V19A2,2 0 0,1 22,21H7C6.31,21 5.77,20.64 5.41,20.11L0,12L5.41,3.88C5.77,3.35 6.31,3 7,3H22M22,5H7L2.28,12L7,19H22V5Z";
var mdiBackspaceReverse = "M2,21H17C17.7,21 18.2,20.6 18.6,20.1L24,12L18.6,3.9C18.2,3.4 17.7,3 17,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21M5,8.4L6.4,7L10,10.6L13.6,7L15,8.4L11.4,12L15,15.6L13.6,17L10,13.4L6.4,17L5,15.6L8.6,12";
var mdiBackspaceReverseOutline = "M5,15.59L6.41,17L10,13.41L13.59,17L15,15.59L11.41,12L15,8.41L13.59,7L10,10.59L6.41,7L5,8.41L8.59,12L5,15.59M2,3A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H17C17.69,21 18.23,20.64 18.59,20.11L24,12L18.59,3.88C18.23,3.35 17.69,3 17,3H2M2,5H17L21.72,12L17,19H2V5Z";
var mdiBackupRestore = "M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z";
var mdiBacteria = "M21,16C21,15.5 20.95,15.08 20.88,14.68L22.45,13.9L21.55,12.1L20.18,12.79C19.63,11.96 18.91,11.5 18.29,11.28L18.95,9.32L17.05,8.68L16.29,10.96C14.96,10.83 14.17,10.32 13.7,9.77L15.45,8.9L14.55,7.1L13,7.89C12.97,7.59 12.86,6.72 12.28,5.87L13.83,3.55L12.17,2.44L10.76,4.56C10.28,4.33 9.7,4.15 9,4.06V2H7V4.1C6.29,4.25 5.73,4.54 5.32,4.91L2.7,2.29L1.29,3.71L4.24,6.65C4,7.39 4,8 4,8H2V10H4.04C4.1,10.63 4.21,11.36 4.4,12.15L1.68,13.05L2.31,14.95L5,14.05C5.24,14.56 5.5,15.08 5.82,15.58L3.44,17.17L4.55,18.83L7.07,17.15C7.63,17.71 8.29,18.21 9.06,18.64L8.1,20.55L9.89,21.45L10.89,19.45L10.73,19.36C11.68,19.68 12.76,19.9 14,19.97V22H16V19.93C16.76,19.84 17.81,19.64 18.77,19.19L20.29,20.71L21.7,19.29L20.37,17.95C20.75,17.44 21,16.8 21,16M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M11,14A1,1 0 0,1 10,13A1,1 0 0,1 11,12A1,1 0 0,1 12,13A1,1 0 0,1 11,14M15.5,17A1.5,1.5 0 0,1 14,15.5A1.5,1.5 0 0,1 15.5,14A1.5,1.5 0 0,1 17,15.5A1.5,1.5 0 0,1 15.5,17Z";
var mdiBacteriaOutline = "M9,2H7V4.1C6.29,4.25 5.73,4.54 5.32,4.91L2.7,2.29L1.29,3.71L4.24,6.65C4,7.39 4,8 4,8H2V10H4.04C4.1,10.63 4.21,11.36 4.4,12.15L1.68,13.05L2.31,14.95L5,14.05C5.24,14.56 5.5,15.08 5.82,15.58L3.44,17.17L4.55,18.83L7.07,17.15C7.63,17.71 8.29,18.21 9.06,18.64L8.1,20.55L9.89,21.45L10.89,19.45L10.73,19.36C11.68,19.68 12.76,19.9 14,19.97V22H16V19.93C16.76,19.84 17.81,19.64 18.77,19.19L20.29,20.71L21.7,19.29L20.37,17.95C20.75,17.44 21,16.8 21,16C21,15.5 20.95,15.08 20.88,14.68L22.45,13.9L21.55,12.1L20.18,12.79C19.63,11.96 18.91,11.5 18.29,11.28L18.95,9.32L17.05,8.68L16.29,10.96C14.96,10.83 14.17,10.32 13.7,9.77L15.45,8.9L14.55,7.1L13,7.89C12.97,7.59 12.86,6.72 12.28,5.87L13.83,3.55L12.17,2.44L10.76,4.56C10.28,4.33 9.7,4.15 9,4.06M15,18C12.06,18 9.81,17.18 8.31,15.56C5.68,12.72 6,8.2 6,8.17V8.11L6,8.03C6,7.1 6.39,6 8,6C10.63,6 10.97,7.43 11,8C11,10 12.6,13 17,13C17.33,13 19,13.15 19,16C19,17.89 15.03,18 15,18M8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8M11,12A1,1 0 0,0 10,13A1,1 0 0,0 11,14A1,1 0 0,0 12,13A1,1 0 0,0 11,12M15.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,17A1.5,1.5 0 0,0 17,15.5A1.5,1.5 0 0,0 15.5,14Z";
var mdiBadgeAccount = "M17,3H14V6H10V3H7A2,2 0 0,0 5,5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V5A2,2 0 0,0 17,3M12,8A2,2 0 0,1 14,10A2,2 0 0,1 12,12A2,2 0 0,1 10,10A2,2 0 0,1 12,8M16,16H8V15C8,13.67 10.67,13 12,13C13.33,13 16,13.67 16,15V16M13,5H11V1H13V5M16,19H8V18H16V19M12,21H8V20H12V21Z";
var mdiBadgeAccountAlert = "M15,3H12V6H8V3H5A2,2 0 0,0 3,5V21A2,2 0 0,0 5,23H15A2,2 0 0,0 17,21V5A2,2 0 0,0 15,3M10,8A2,2 0 0,1 12,10A2,2 0 0,1 10,12A2,2 0 0,1 8,10A2,2 0 0,1 10,8M14,16H6V15C6,13.67 8.67,13 10,13C11.33,13 14,13.67 14,15V16M11,5H9V1H11V5M14,19H6V18H14V19M10,21H6V20H10V21M19,13V7H21V13H19M19,17V15H21V17H19Z";
var mdiBadgeAccountAlertOutline = "M15,3H12V5H15V21H5V5H8V3H5A2,2 0 0,0 3,5V21A2,2 0 0,0 5,23H15A2,2 0 0,0 17,21V5A2,2 0 0,0 15,3M10,7A2,2 0 0,1 12,9A2,2 0 0,1 10,11A2,2 0 0,1 8,9A2,2 0 0,1 10,7M14,15H6V14C6,12.67 8.67,12 10,12C11.33,12 14,12.67 14,14V15M14,18H6V17H14V18M10,20H6V19H10V20M11,5H9V1H11V5M19,13V7H21V13H19M19,17V15H21V17H19Z";
var mdiBadgeAccountHorizontal = "M22,4H14V7H10V4H2A2,2 0 0,0 0,6V20A2,2 0 0,0 2,22H22A2,2 0 0,0 24,20V6A2,2 0 0,0 22,4M8,9A2,2 0 0,1 10,11A2,2 0 0,1 8,13A2,2 0 0,1 6,11A2,2 0 0,1 8,9M12,17H4V16C4,14.67 6.67,14 8,14C9.33,14 12,14.67 12,16V17M20,18H14V16H20V18M20,14H14V12H20V14M20,10H14V8H20V10M13,6H11V2H13V6Z";
var mdiBadgeAccountHorizontalOutline = "M8,9A2,2 0 0,1 10,11A2,2 0 0,1 8,13A2,2 0 0,1 6,11A2,2 0 0,1 8,9M12,17H4V16C4,14.67 6.67,14 8,14C9.33,14 12,14.67 12,16V17M20,8H14V10H20V8M20,12H14V14H20V12M20,16H14V18H20V16M22,4H14V6H22V20H2V6H10V4H2A2,2 0 0,0 0,6V20A2,2 0 0,0 2,22H22A2,2 0 0,0 24,20V6A2,2 0 0,0 22,4M13,6H11V2H13V6Z";
var mdiBadgeAccountOutline = "M17,3H14V5H17V21H7V5H10V3H7A2,2 0 0,0 5,5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V5A2,2 0 0,0 17,3M12,7A2,2 0 0,1 14,9A2,2 0 0,1 12,11A2,2 0 0,1 10,9A2,2 0 0,1 12,7M16,15H8V14C8,12.67 10.67,12 12,12C13.33,12 16,12.67 16,14V15M16,18H8V17H16V18M12,20H8V19H12V20M13,5H11V1H13V5Z";
var mdiBadminton = "M12.3,2C11.33,2.03 10.58,2.84 10.61,3.8C10.62,4.04 10.67,4.27 10.77,4.5L11.06,5.14V5.14C11.1,5.27 11.03,5.41 10.89,5.45C10.8,5.5 10.7,5.45 10.63,5.37L10.21,4.82C9.88,4.4 9.38,4.14 8.85,4.13C7.88,4.11 7.08,4.88 7.06,5.84C7.05,6.26 7.19,6.66 7.45,7L7.87,7.5H7.88C7.96,7.63 7.93,7.79 7.82,7.87C7.73,7.94 7.61,7.94 7.53,7.87L7,7.45C6.66,7.19 6.25,7.05 5.84,7.06C4.88,7.08 4.11,7.88 4.13,8.85C4.14,9.38 4.4,9.88 4.82,10.21L5.39,10.65C5.5,10.75 5.5,10.91 5.38,11C5.31,11.07 5.21,11.09 5.12,11.05H5.11L4.5,10.77C4.27,10.68 4.04,10.62 3.8,10.61C2.84,10.58 2.03,11.34 2,12.31C2,13.03 2.4,13.69 3.06,13.97L14.45,19.04L19.04,14.45L13.97,3.06C13.69,2.39 13,1.97 12.3,2M13.13,6.1C13.55,6.09 13.93,6.33 14.09,6.71L17.14,13.55L13.19,9.61L12.26,7.5C11.96,6.87 12.42,6.12 13.13,6.1M9.85,8.85C10.12,8.85 10.37,8.95 10.56,9.15L15.37,13.96C15.77,14.34 15.78,14.97 15.4,15.37C15,15.77 14.38,15.78 13.96,15.37L9.15,10.56C8.75,10.18 8.74,9.54 9.13,9.15C9.32,8.95 9.58,8.85 9.85,8.85M7.13,12.17C7.26,12.17 7.4,12.21 7.5,12.26L9.63,13.2L13.57,17.14L6.71,14.09C5.69,13.65 6.03,12.14 7.13,12.17M20.28,16.04L16.04,20.28L16.89,21.13C17.65,21.88 18.75,22.17 19.78,21.9C20.81,21.62 21.62,20.81 21.9,19.78C22.17,18.75 21.88,17.65 21.13,16.89L20.28,16.04Z";
var mdiBagCarryOn = "M14.6 21.4C15 21.8 15.4 22 16 22S17 21.8 17.4 21.4 18 20.6 18 20 17.8 19 17.4 18.6 16.5 18 16 18 15 18.2 14.6 18.6 14 19.4 14 20 14.2 21 14.6 21.4M6 19C6 19.5 6.2 20 6.6 20.4C7 20.8 7.5 21 8 21V7C7.5 7 7 7.2 6.6 7.6C6.2 8 6 8.5 6 9V19M16 2H12C12 2.5 12.2 3 12.6 3.4C13 3.8 13.5 4 14 4V7H9V21H13.2C13 20.5 13 20.2 13 20C13 19.2 13.3 18.5 13.9 17.9C14.5 17.3 15.2 17 16 17V2Z";
var mdiBagCarryOnCheck = "M15.28,16.69L18.14,13.88L18.84,14.58L15.28,18.14L13.17,16L13.88,15.28L15.28,16.69M8,21A2,2 0 0,1 6,19V9A2,2 0 0,1 8,7V21M9,7H14V4A2,2 0 0,1 12,2H16V10A6,6 0 0,1 22,16A6,6 0 0,1 16,22C14.77,22 13.63,21.63 12.68,21H9V7M16,12A4,4 0 0,0 12,16A4,4 0 0,0 16,20A4,4 0 0,0 20,16A4,4 0 0,0 16,12Z";
var mdiBagCarryOnOff = "M2.1 4.9L6 8.9V19C6 19.5 6.2 20 6.6 20.4C7 20.8 7.5 21 8 21V10.8L9 11.8V21H13.2C13.1 20.6 13 20.2 13 20C13 18.8 13.5 18 14.6 17.4L15.4 18.2C14.5 18.5 14.1 19.2 14.1 20.1C14.1 20.6 14.3 21.1 14.7 21.5C15 21.8 15.5 22 16 22C16.9 22 17.6 21.6 17.9 20.7L19.1 21.9L20.5 20.5L3.5 3.5L2.1 4.9M12 2C12 2.5 12.2 3 12.6 3.4S13.5 4 14 4V7H9.8L16 13.2V2H12Z";
var mdiBagChecked = "M22 19H2V21H22V19M4 15C4 15.5 4.2 16 4.6 16.4C5 16.8 5.5 17 6 17V6C5.5 6 5 6.2 4.6 6.6C4.2 7 4 7.5 4 8V15M13.5 6H10.5C10.5 5.6 10.6 5.2 10.9 4.9C11.2 4.6 11.5 4.5 12 4.5C12.4 4.5 12.8 4.6 13.1 4.9C13.3 5.2 13.5 5.6 13.5 6M7 6V17H17V6H15C15 5.2 14.7 4.5 14.1 3.9S12.8 3 12 3C11.2 3 10.5 3.3 9.9 3.9C9.3 4.5 9 5.2 9 6H7M18 17C18.5 17 19 16.8 19.4 16.4C19.8 16 20 15.5 20 15V8C20 7.5 19.8 7 19.4 6.6C19 6.2 18.5 6 18 6V17Z";
var mdiBagPersonal = "M16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V5A4,4 0 0,0 4,9V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V9A4,4 0 0,0 16,5M10,4H14V5H10V4M12,9L14,11L12,13L10,11L12,9M18,16H9V18H8V16H6V15H18V16Z";
var mdiBagPersonalOff = "M20,19.35L2.38,1.73L1.11,3L4.77,6.66C4.27,7.34 4,8.16 4,9V20A2,2 0 0,0 6,22H18C18.56,22 19.08,21.76 19.46,21.35L20.84,22.73L22.11,21.46L20,19.35M9,16V18H8V16H6V15H13.11L14.11,16H9M20,9A4,4 0 0,0 16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V4.8L20,16.8V9M14,5H10V4H14V5Z";
var mdiBagPersonalOffOutline = "M20,19.35L2.38,1.73L1.11,3L4.77,6.66C4.27,7.34 4,8.16 4,9V20A2,2 0 0,0 6,22H18C18.56,22 19.08,21.76 19.46,21.35L20.84,22.73L22.11,21.46L20,19.35M6,9C6,8.69 6.08,8.38 6.22,8.11L13.11,15H6V9M18,20H6V16H8V18H9V16H14.11L18,19.89V20M16,7A2,2 0 0,1 18,9V14.8L20,16.8V9A4,4 0 0,0 16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V4.8L10.2,7H16M10,4H14V5H10V4Z";
var mdiBagPersonalOutline = "M16,5V4A2,2 0 0,0 14,2H10A2,2 0 0,0 8,4V5A4,4 0 0,0 4,9V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V9A4,4 0 0,0 16,5M10,4H14V5H10V4M12,9L14,11L12,13L10,11L12,9M18,20H6V16H8V18H9V16H18V20M18,15H6V9A2,2 0 0,1 8,7H16A2,2 0 0,1 18,9V15Z";
var mdiBagSuitcase = "M17.03 6C18.11 6 19 6.88 19 8V19C19 20.13 18.11 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19V8C5 6.88 5.89 6 6.97 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6H17.03M13.5 6V3.5H10.5V6H13.5M8 9V18H9.5V9H8M14.5 9V18H16V9H14.5M11.25 9V18H12.75V9H11.25Z";
var mdiBagSuitcaseOff = "M2 4.77L3.28 3.5L21 21.22L19.73 22.5L18 20.76C17.71 20.93 17.38 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19V7.77L2 4.77M17.03 6C18.11 6 19 6.88 19 8V16.68L16 13.68V9H14.5V12.18L12.75 10.43V9H11.32L8.31 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6H17.03M8 18H9.5V12.27L8 10.77V18M11.25 18H12.75V15.5L11.25 14V18M14.5 18H15.23L14.5 17.27V18M13.5 6V3.5H10.5V6H13.5Z";
var mdiBagSuitcaseOffOutline = "M2 4.77L3.28 3.5L21 21.22L19.73 22.5L18 20.76C17.71 20.93 17.38 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19L5 7.78L2 4.77M9.5 18H8V10.78L6.97 9.74V19H16.23L15.25 18H14.5V17.26L12.75 15.5V18H11.25V14L9.5 12.28V18M12.75 9V10.43L11.32 9H12.75M14.5 9H16V13.67L14.5 12.17V9M17.03 6C18.11 6 19 6.88 19 8V16.68L17.03 14.7V8H10.33L8.31 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6H17.03M10.5 3.5V6H13.5V3.5H10.5Z";
var mdiBagSuitcaseOutline = "M9.5 18V9H8V18M12.75 18V9H11.25V18M16 18V9H14.5V18M17.03 6C18.11 6 19 6.88 19 8V19C19 20.13 18.11 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19V8C5 6.88 5.89 6 6.97 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6M10.5 3.5V6H13.5V3.5M17.03 19V8H6.97V19";
var mdiBaguette = "M5 22C3.68 22 3.15 19.64 3.04 18.7A5.56 5.56 0 0 1 3.36 16A2.5 2.5 0 0 1 5.23 14.38C6.4 14.18 7.23 14.88 8.29 15.12A1.21 1.21 0 0 0 9.85 13.75C9.41 12.03 6.28 12 5 12C5 10.14 7.04 9.9 8.5 10.04A10.8 10.8 0 0 1 11.04 10.6C11.54 10.77 12.12 11.2 12.67 11.16C13.5 11.09 13.67 10.23 13.31 9.6C12.44 8.12 9.97 8 8.5 8C8.5 6 10.23 5.62 11.89 5.92A11.58 11.58 0 0 1 14.38 6.71C14.89 6.93 15.5 7.35 16.06 7.16C17.5 6.72 16 5.18 15.36 4.81A6.6 6.6 0 0 0 13.94 4.23C13.4 4.07 12.74 4.13 13.23 3.5A5.13 5.13 0 0 1 15.96 2.26C17.85 1.82 20.46 1.74 20.92 4.12A5.3 5.3 0 0 1 20.07 7.7A38.96 38.96 0 0 1 13.22 16.33A36.6 36.6 0 0 1 8.62 20.32C7.62 21.04 6.3 22 5 22Z";
var mdiBalloon = "M13.16,12.74L14,14H12.5C12.35,16.71 12,19.41 11.5,22.08L10.5,21.92C11,19.3 11.34,16.66 11.5,14H10L10.84,12.74C8.64,11.79 7,8.36 7,6A5,5 0 0,1 12,1A5,5 0 0,1 17,6C17,8.36 15.36,11.79 13.16,12.74Z";
var mdiBallot = "M13,9.5H18V7.5H13V9.5M13,16.5H18V14.5H13V16.5M19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21M6,11H11V6H6V11M7,7H10V10H7V7M6,18H11V13H6V18M7,14H10V17H7V14Z";
var mdiBallotOutline = "M13,7.5H18V9.5H13V7.5M13,14.5H18V16.5H13V14.5M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M19,19V5H5V19H19M11,6V11H6V6H11M10,10V7H7V10H10M11,13V18H6V13H11M10,17V14H7V17H10Z";
var mdiBallotRecount = "M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23M10,17H7V14H10V17M10,7V10H7V7H10M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V11.17C20.5,11.06 20,11 19.5,11A6.5,6.5 0 0,0 13,17.5C13,18.79 13.38,20 14,21H5M13,9.5H18V7.5H13V9.5M11,13H6V18H11V13M11,6H6V11H11V6Z";
var mdiBallotRecountOutline = "M6,18V13H11V18H6M7,14V17H10V14H7M13,7.5H18V9.5H13V7.5M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V11.17C20.5,11.06 20,11 19.5,11H19V5H5V19H13.17C13.34,19.72 13.63,20.39 14,21H5M11,6V11H6V6H11M10,10V7H7V10H10M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23Z";
var mdiBandage = "M17.73,12L21.71,8.04C22.1,7.65 22.1,7 21.71,6.63L17.37,2.29C17,1.9 16.35,1.9 15.96,2.29L12,6.27L8,2.29C7.8,2.1 7.55,2 7.29,2C7.04,2 6.78,2.1 6.59,2.29L2.25,6.63C1.86,7 1.86,7.65 2.25,8.04L6.23,12L2.25,16C1.86,16.39 1.86,17 2.25,17.41L6.59,21.75C7,22.14 7.61,22.14 8,21.75L12,17.77L15.96,21.75C16.16,21.95 16.41,22.04 16.67,22.04C16.93,22.04 17.18,21.94 17.38,21.75L21.72,17.41C22.11,17 22.11,16.39 21.72,16L17.73,12M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7.29,10.96L3.66,7.34L7.29,3.71L10.91,7.33L7.29,10.96M10,13A1,1 0 0,1 9,12A1,1 0 0,1 10,11A1,1 0 0,1 11,12A1,1 0 0,1 10,13M12,15A1,1 0 0,1 11,14A1,1 0 0,1 12,13A1,1 0 0,1 13,14A1,1 0 0,1 12,15M14,11A1,1 0 0,1 15,12A1,1 0 0,1 14,13A1,1 0 0,1 13,12A1,1 0 0,1 14,11M16.66,20.34L13.03,16.72L16.66,13.09L20.28,16.71L16.66,20.34Z";
var mdiBandcamp = "M22,6L15.5,18H2L8.5,6H22Z";
var mdiBank = "M11.5,1L2,6V8H21V6M16,10V17H19V10M2,22H21V19H2M10,10V17H13V10M4,10V17H7V10H4Z";
var mdiBankCheck = "M10.5 17V10H13.5V16.61C13.44 16.73 13.4 16.87 13.35 17H10.5M19 13C19.17 13 19.33 13 19.5 13.03V10H16.5V13.55C17.26 13.2 18.11 13 19 13M7.5 17V10H4.5V17H7.5M21.5 6L12 1L2.5 6V8H21.5V6M2.5 19V22H13.81C13.3 21.12 13 20.09 13 19H2.5M21.34 16L17.75 19.59L16.16 18L15 19.16L17.75 22.16L22.5 17.41L21.34 16Z";
var mdiBankMinus = "M14,17H22V19H14V17M11.5,1L21,6V8H2V6L11.5,1M16,10H19V12.08L18,12C17.3,12 16.63,12.12 16,12.34V10M2,22V19H12.08C12.27,20.14 12.79,21.17 13.53,22H2M10,10H13V14.68C12.54,15.37 12.22,16.15 12.08,17H10V10M4,10H7V17H4V10Z";
var mdiBankOff = "M11.2 8L6.89 3.69L12 1L21.5 6V8H11.2M19.5 16.3V10H16.5V13.3L19.5 16.3M21.5 20.85V20.84L19.66 19H19.65L17.65 17H17.66L16.5 15.84V15.85L13.5 12.85V12.84L10.66 10H10.66L8.66 8H8.66L2.39 1.73L1.11 3L3.56 5.45L2.5 6V8H6.11L10.5 12.39V17H13.5V15.39L17.11 19H2.5V22H20.11L20.84 22.73L22.11 21.46L21.5 20.85M4.5 10V17H7.5V10H4.5Z";
var mdiBankOffOutline = "M17 13.8V10H19V15.8L17 13.8M12 3.26L17.21 6H9.2L11.2 8H21.5V6L12 1L6.89 3.69L8.37 5.17L12 3.26M5 10V17H7V10H5M21.5 20.85V20.84L19.66 19H19.65L17.65 17H17.66L17 16.34V16.35L13 12.35V12.34L11 10.34V10.35L8.66 8H8.66L2.39 1.73L1.11 3L3.56 5.45L2.5 6V8H6.11L11 12.89V17H13V14.89L17.11 19H2.5V21H19.11L20.84 22.73L22.11 21.46L21.5 20.85Z";
var mdiBankOutline = "M6.5,10H4.5V17H6.5V10M12.5,10H10.5V17H12.5V10M21,19H2V21H21V19M18.5,10H16.5V17H18.5V10M11.5,3.26L16.71,6H6.29L11.5,3.26M11.5,1L2,6V8H21V6L11.5,1Z";
var mdiBankPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11.5,1L21,6V8H2V6L11.5,1M16,10H19V12.08L18,12C17.3,12 16.63,12.12 16,12.34V10M2,22V19H12.08C12.27,20.14 12.79,21.17 13.53,22H2M10,10H13V14.68C12.54,15.37 12.22,16.15 12.08,17H10V10M4,10H7V17H4V10Z";
var mdiBankRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M11.5,1L21,6V8H2V6L11.5,1M16,10H19V12.08L18,12C17.3,12 16.63,12.12 16,12.34V10M2,22V19H12.08C12.27,20.14 12.79,21.17 13.53,22H2M10,10H13V14.68C12.54,15.37 12.22,16.15 12.08,17H10V10M4,10H7V17H4V10Z";
var mdiBankTransfer = "M15,14V11H18V9L22,12.5L18,16V14H15M14,7.7V9H2V7.7L8,4L14,7.7M7,10H9V15H7V10M3,10H5V15H3V10M13,10V12.5L11,14.3V10H13M9.1,16L8.5,16.5L10.2,18H2V16H9.1M17,15V18H14V20L10,16.5L14,13V15H17Z";
var mdiBankTransferIn = "M2,15V12H5V10L9,13.5L5,17V15H2M22,8.7V10H10V8.7L16,5L22,8.7M10,17H22V19H10V17M15,11H17V16H15V11M11,11H13V16H11V11M19,11H21V16H19V11Z";
var mdiBankTransferOut = "M15,15V12H18V10L22,13.5L18,17V15H15M14,8.7V10H2V8.7L8,5L14,8.7M2,17H14V19H2V17M7,11H9V16H7V11M3,11H5V16H3V11M11,11H13V16H11V11Z";
var mdiBarcode = "M2,6H4V18H2V6M5,6H6V18H5V6M7,6H10V18H7V6M11,6H12V18H11V6M14,6H16V18H14V6M17,6H20V18H17V6M21,6H22V18H21V6Z";
var mdiBarcodeOff = "M20.84 22.73L16 17.89V18H14V15.89L12 13.89V18H11V12.89L10 11.89V18H7V8.89L6 7.89V18H5V6.89L1.11 3L2.39 1.73L7 6.34L10 9.34L11 10.34L12 11.34L14 13.35V13.34L16 15.34V15.35L17 16.35V16.34L18.66 18H18.65L22.11 21.46L20.84 22.73M16 6H14V10.8L16 12.8V6M12 6H11V7.8L12 8.8V6M20 6H17V13.8L20 16.8V6M22 18V6H21V17.8L21.2 18H22M10 6H9.2L10 6.8V6M2 18H4V6H2V18Z";
var mdiBarcodeScan = "M4,6H6V18H4V6M7,6H8V18H7V6M9,6H12V18H9V6M13,6H14V18H13V6M16,6H18V18H16V6M19,6H20V18H19V6M2,4V8H0V4A2,2 0 0,1 2,2H6V4H2M22,2A2,2 0 0,1 24,4V8H22V4H18V2H22M2,16V20H6V22H2A2,2 0 0,1 0,20V16H2M22,20V16H24V20A2,2 0 0,1 22,22H18V20H22Z";
var mdiBarley = "M7.33,18.33C6.5,17.17 6.5,15.83 6.5,14.5C8.17,15.5 9.83,16.5 10.67,17.67L11,18.23V15.95C9.5,15.05 8.08,14.13 7.33,13.08C6.5,11.92 6.5,10.58 6.5,9.25C8.17,10.25 9.83,11.25 10.67,12.42L11,13V10.7C9.5,9.8 8.08,8.88 7.33,7.83C6.5,6.67 6.5,5.33 6.5,4C8.17,5 9.83,6 10.67,7.17C10.77,7.31 10.86,7.46 10.94,7.62C10.77,7 10.66,6.42 10.65,5.82C10.64,4.31 11.3,2.76 11.96,1.21C12.65,2.69 13.34,4.18 13.35,5.69C13.36,6.32 13.25,6.96 13.07,7.59C13.15,7.45 13.23,7.31 13.33,7.17C14.17,6 15.83,5 17.5,4C17.5,5.33 17.5,6.67 16.67,7.83C15.92,8.88 14.5,9.8 13,10.7V13L13.33,12.42C14.17,11.25 15.83,10.25 17.5,9.25C17.5,10.58 17.5,11.92 16.67,13.08C15.92,14.13 14.5,15.05 13,15.95V18.23L13.33,17.67C14.17,16.5 15.83,15.5 17.5,14.5C17.5,15.83 17.5,17.17 16.67,18.33C15.92,19.38 14.5,20.3 13,21.2V23H11V21.2C9.5,20.3 8.08,19.38 7.33,18.33Z";
var mdiBarleyOff = "M11.96,1.21C11.3,2.76 10.64,4.31 10.65,5.82C10.66,6.42 10.77,7 10.94,7.62C10.86,7.46 10.77,7.31 10.67,7.17C9.83,6 8.17,5 6.5,4C6.5,4.8 6.5,5.59 6.68,6.36L13,12.68V10.7C14.5,9.8 15.92,8.88 16.67,7.83C17.5,6.67 17.5,5.33 17.5,4C15.83,5 14.17,6 13.33,7.17C13.23,7.31 13.15,7.45 13.07,7.59C13.25,6.96 13.36,6.32 13.35,5.69C13.34,4.18 12.65,2.69 11.96,1.21M3.28,5.5L2,6.77L6.64,11.41C6.75,12 6.95,12.55 7.33,13.08C8.08,14.13 9.5,15.05 11,15.95V18.23L10.67,17.67C9.83,16.5 8.17,15.5 6.5,14.5C6.5,15.83 6.5,17.17 7.33,18.33C8.08,19.38 9.5,20.3 11,21.2V23H13V21.2C13.74,20.76 14.45,20.31 15.07,19.84L18.73,23.5L20,22.22C14,16.23 9.1,11.32 3.28,5.5M17.5,9.25C15.83,10.25 14.17,11.25 13.33,12.42L13.12,12.79L15,14.66C15.67,14.16 16.27,13.64 16.67,13.08C17.5,11.92 17.5,10.58 17.5,9.25M17.5,14.5C16.93,14.84 16.38,15.18 15.85,15.53L17.29,16.97C17.5,16.17 17.5,15.33 17.5,14.5Z";
var mdiBarn = "M12,3L3,8.2V21H9L11.9,18L15,21H21V8.2L12,3M7.9,20V14L10.9,17L7.9,20M8.9,13H14.9L11.9,16L8.9,13M15.9,20L12.9,17L15.9,14V20M15,11H8.8V9H15V11Z";
var mdiBarrel = "M18,19H19V21H5V19H6V13H5V11H6V5H5V3H19V5H18V11H19V13H18V19M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13C15,11 12,7.63 12,7.63C12,7.63 9,11 9,13Z";
var mdiBaseball = "M12,2C9.5,2 7.25,2.9 5.5,4.4C6,4.81 6.41,5.27 6.8,5.76L7.89,5.13L8.89,6.87L7.89,7.44C8.45,8.53 8.82,9.73 8.95,11H10V12L10,13H8.95C8.82,14.27 8.45,15.47 7.89,16.56L8.89,17.13L7.89,18.87L6.8,18.24C6.41,18.73 6,19.19 5.5,19.6C7.25,21.1 9.5,22 12,22C14.5,22 16.75,21.1 18.5,19.6C18,19.19 17.59,18.73 17.19,18.24L16.11,18.87L15.11,17.13L16.11,16.55C15.55,15.47 15.18,14.27 15.05,13H14V11H15.05C15.18,9.73 15.55,8.53 16.11,7.45L15.11,6.87L16.11,5.13L17.19,5.76C17.59,5.27 18,4.81 18.5,4.4C16.75,2.9 14.5,2 12,2M4.12,5.85C2.79,7.55 2,9.68 2,12C2,14.32 2.79,16.45 4.12,18.15C4.46,17.87 4.76,17.55 5.05,17.22L4.43,16.87L5.43,15.13L6.16,15.56C6.55,14.77 6.82,13.91 6.93,13H6V12L6,11H6.93C6.82,10.09 6.55,9.23 6.16,8.44L5.43,8.87L4.43,7.13L5.05,6.78C4.76,6.45 4.46,6.13 4.12,5.85M19.88,5.85C19.54,6.13 19.24,6.45 18.95,6.78L19.57,7.13L18.57,8.87L17.84,8.44C17.45,9.23 17.18,10.09 17.07,11H18V13H17.07C17.18,13.91 17.45,14.77 17.84,15.56L18.57,15.13L19.57,16.87L18.95,17.22C19.24,17.55 19.54,17.87 19.88,18.15C21.21,16.45 22,14.32 22,12C22,9.68 21.21,7.55 19.88,5.85Z";
var mdiBaseballBat = "M20,2C19.72,2 19.5,2.11 19.29,2.29L9.79,11.79C9.75,11.83 9.72,11.87 7.23,15.35L4,18.59L3.71,18.29C3.5,18.1 3.26,18 3,18C2.44,18 2,18.44 2,19C2,19.26 2.1,19.5 2.29,19.71L4.29,21.71C4.68,22.11 5.31,22.12 5.71,21.74C6.11,21.35 6.12,20.72 5.71,20.29L5.41,20L8.64,16.77L12.21,14.21L21.71,4.71C22.1,4.32 22.1,3.68 21.71,3.29L20.71,2.29C20.5,2.1 20.26,2 20,2M18.5,13A2.5,2.5 0 0,0 16,15.5A2.5,2.5 0 0,0 18.5,18A2.5,2.5 0 0,0 21,15.5A2.5,2.5 0 0,0 18.5,13Z";
var mdiBaseballDiamond = "M5.79 12.79L2 9C2 9 6 3 12 3S22 9 22 9L18.21 12.79L12 6.59L5.79 12.79M13.5 18H10.5V20L12 21L13.5 20V18M16.79 14.21L14.2 16.8C13.6 16.31 12.84 16 12 16S10.4 16.31 9.8 16.8L7.21 14.21L12 9.41L16.79 14.21M13 14C13 13.45 12.55 13 12 13S11 13.45 11 14 11.45 15 12 15 13 14.55 13 14Z";
var mdiBaseballDiamondOutline = "M12 2C5 2 1 9 1 9L9.3 17.3C9.74 16.77 10.32 16.37 11 16.17L7.83 13L12 8.83L16.17 13L13 16.17C13.68 16.37 14.27 16.77 14.7 17.3L23 9C23 9 19 2 12 2M17.59 11.59L12 6L6.41 11.59L3.59 8.76C4.95 7 7.89 4 12 4C16.08 4 19.03 7 20.4 8.77L17.59 11.59M13 13C13 13.55 12.55 14 12 14S11 13.55 11 13 11.45 12 12 12 13 12.45 13 13M13.5 20L12 21L10.5 20V18H13.5V20Z";
var mdiBash = "M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z";
var mdiBasket = "M5.5,21C4.72,21 4.04,20.55 3.71,19.9V19.9L1.1,10.44L1,10A1,1 0 0,1 2,9H6.58L11.18,2.43C11.36,2.17 11.66,2 12,2C12.34,2 12.65,2.17 12.83,2.44L17.42,9H22A1,1 0 0,1 23,10L22.96,10.29L20.29,19.9C19.96,20.55 19.28,21 18.5,21H5.5M12,4.74L9,9H15L12,4.74M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13Z";
var mdiBasketFill = "M3,2H6V5H3V2M6,7H9V10H6V7M8,2H11V5H8V2M17,11L12,6H15V2H19V6H22L17,11M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z";
var mdiBasketMinus = "M23 18V20H15V18H23M23 10L22.96 10.29L22 13.8C21.11 13.29 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.7 13.13 20.37 13.35 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M15 9L12 4.74L9 9H15Z";
var mdiBasketMinusOutline = "M23 18V20H15V18H23M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13M13.35 21H5.5C4.58 21 3.81 20.38 3.58 19.54L1.04 10.27C1 10.18 1 10.09 1 10C1 9.45 1.45 9 2 9H6.79L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10L22.97 10.27L22 13.81C21.43 13.5 20.79 13.24 20.12 13.11L20.7 11H3.31L5.5 19H13C13 19.7 13.13 20.37 13.35 21M9.2 9H14.8L12 4.8L9.2 9Z";
var mdiBasketOff = "M23 10L22.96 10.29L20.9 17.7L12.2 9H15L12 4.74L10.32 7.12L8.89 5.69L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M22.11 21.46L20.84 22.73L19.03 20.92C18.86 20.97 18.68 21 18.5 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L6.8 8.69L1.11 3L2.39 1.73L22.11 21.46M13.85 15.74L11.26 13.15C10.5 13.44 10 14.16 10 15C10 16.11 10.9 17 12 17C12.84 17 13.56 16.5 13.85 15.74Z";
var mdiBasketOffOutline = "M2.39 1.73L1.11 3L6.92 8.81L6.79 9H2C1.45 9 1 9.45 1 10C1 10.09 1 10.18 1.04 10.27L3.58 19.54C3.81 20.38 4.58 21 5.5 21H18.5C18.68 21 18.86 20.96 19.03 20.92L20.84 22.73L22.11 21.46L2.39 1.73M5.5 19L3.31 11H9.11L11.26 13.15C10.5 13.44 10 14.16 10 15C10 16.1 10.9 17 12 17C12.84 17 13.56 16.5 13.85 15.74L17.11 19H5.5M23 10L22.97 10.27L20.93 17.73L19.3 16.1L20.7 11H14.2L12.2 9H14.8L12 4.8L10.4 7.2L8.96 5.76L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10Z";
var mdiBasketOutline = "M22 9H17.21L12.83 2.44C12.64 2.16 12.32 2 12 2S11.36 2.16 11.17 2.45L6.79 9H2C1.45 9 1 9.45 1 10C1 10.09 1 10.18 1.04 10.27L3.58 19.54C3.81 20.38 4.58 21 5.5 21H18.5C19.42 21 20.19 20.38 20.43 19.54L22.97 10.27L23 10C23 9.45 22.55 9 22 9M12 4.8L14.8 9H9.2L12 4.8M18.5 19L5.5 19L3.31 11H20.7L18.5 19M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13Z";
var mdiBasketPlus = "M20 15V18H23V20H20V23H18V20H15V18H18V15H20M23 10L22.96 10.29L22 13.8C21.11 13.29 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.7 13.13 20.37 13.35 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M15 9L12 4.74L9 9H15Z";
var mdiBasketPlusOutline = "M20 15V18H23V20H20V23H18V20H15V18H18V15H20M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13M13.35 21H5.5C4.58 21 3.81 20.38 3.58 19.54L1.04 10.27C1 10.18 1 10.09 1 10C1 9.45 1.45 9 2 9H6.79L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10L22.97 10.27L22 13.81C21.43 13.5 20.79 13.24 20.12 13.11L20.7 11H3.31L5.5 19H13C13 19.7 13.13 20.37 13.35 21M9.2 9H14.8L12 4.8L9.2 9Z";
var mdiBasketRemove = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88M23 10L22.96 10.29L22 13.8C21.11 13.29 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.7 13.13 20.37 13.35 21H5.5C4.72 21 4.04 20.55 3.71 19.9L1.1 10.44L1 10C1 9.45 1.45 9 2 9H6.58L11.18 2.43C11.36 2.17 11.66 2 12 2S12.65 2.17 12.83 2.44L17.42 9H22C22.55 9 23 9.45 23 10M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M15 9L12 4.74L9 9H15Z";
var mdiBasketRemoveOutline = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88M12 13C10.9 13 10 13.9 10 15S10.9 17 12 17 14 16.1 14 15 13.1 13 12 13M13.35 21H5.5C4.58 21 3.81 20.38 3.58 19.54L1.04 10.27C1 10.18 1 10.09 1 10C1 9.45 1.45 9 2 9H6.79L11.17 2.45C11.36 2.16 11.68 2 12 2S12.64 2.16 12.83 2.44L17.21 9H22C22.55 9 23 9.45 23 10L22.97 10.27L22 13.81C21.43 13.5 20.79 13.24 20.12 13.11L20.7 11H3.31L5.5 19H13C13 19.7 13.13 20.37 13.35 21M9.2 9H14.8L12 4.8L9.2 9Z";
var mdiBasketUnfill = "M3,10H6V7H3V10M5,5H8V2H5V5M8,10H11V7H8V10M17,1L12,6H15V10H19V6H22L17,1M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z";
var mdiBasketball = "M2.34,14.63C2.94,14.41 3.56,14.3 4.22,14.3C5.56,14.3 6.73,14.72 7.73,15.56L4.59,18.7C3.53,17.5 2.78,16.13 2.34,14.63M15.56,9.8C17.53,11.27 19.66,11.63 21.94,10.88C21.97,11.09 22,11.47 22,12C22,13.03 21.75,14.18 21.28,15.45C20.81,16.71 20.23,17.73 19.55,18.5L13.22,12.19L15.56,9.8M8.77,16.64C9.83,18.17 10.05,19.84 9.42,21.66C8,21.25 6.73,20.61 5.67,19.73L8.77,16.64M12.19,13.22L18.5,19.55C16.33,21.45 13.78,22.25 10.88,21.94C11.09,21.28 11.2,20.56 11.2,19.78C11.2,19.16 11.06,18.43 10.78,17.6C10.5,16.77 10.17,16.09 9.8,15.56L12.19,13.22M8.81,14.5C7.88,13.67 6.8,13.15 5.58,12.91C4.36,12.68 3.19,12.75 2.06,13.13C2.03,12.91 2,12.53 2,12C2,10.97 2.25,9.82 2.72,8.55C3.19,7.29 3.77,6.27 4.45,5.5L11.11,12.19L8.81,14.5M15.56,7.73C14.22,6.08 13.91,4.28 14.63,2.34C15.25,2.5 15.96,2.8 16.76,3.26C17.55,3.71 18.2,4.16 18.7,4.59L15.56,7.73M21.66,9.38C21.06,9.59 20.44,9.7 19.78,9.7C18.69,9.7 17.64,9.38 16.64,8.72L19.73,5.67C20.61,6.77 21.25,8 21.66,9.38M12.19,11.11L5.5,4.45C7.67,2.55 10.22,1.75 13.13,2.06C12.91,2.72 12.8,3.44 12.8,4.22C12.8,4.94 12.96,5.75 13.29,6.66C13.62,7.56 14,8.28 14.5,8.81L12.19,11.11Z";
var mdiBasketballHoop = "M21,2H3A2,2 0 0,0 1,4V16A2,2 0 0,0 3,18H5V14H19V18H21A2,2 0 0,0 23,16V4A2,2 0 0,0 21,2M17,12H15V9H9V12H7V9A2,2 0 0,1 9,7H15A2,2 0 0,1 17,9V12M7,16V19.5L8,23L10,21L12,23L14,21L16,23L17,19.5V16H7Z";
var mdiBasketballHoopOutline = "M21,2H3A2,2 0 0,0 1,4V16A2,2 0 0,0 3,18H6.57L8,23L10,21L12,23L14,21L16,23L17.43,18H21A2,2 0 0,0 23,16V4A2,2 0 0,0 21,2M21,16H18V14H17V9A2,2 0 0,0 15,7H9A2,2 0 0,0 7,9V14H6V16H3V4H21V16M9,14V9H15V14H9Z";
var mdiBat = "M0.75,8C0.75,8 5,7 8,9C8,9 8.5,12.75 10.5,12.75V11C10.5,11 11,12 12,12C13,12 13.5,11 13.5,11V12.75C15.5,12.75 16,9 16,9C19,7 23.25,8 23.25,8C21.25,9 21,12.5 21,12.5C17,12.5 17,15.75 17,15.75C12,14.75 12,18.5 12,18.5C12,18.5 12,14.75 7,15.75C7,15.75 7,12.5 3,12.5C3,12.5 2.75,9 0.75,8Z";
var mdiBattery = "M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBattery10 = "M16,18H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBattery10Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V18H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z";
var mdiBattery20 = "M16,17H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBattery20Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V17H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z";
var mdiBattery30 = "M16,15H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBattery30Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V15H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z";
var mdiBattery40 = "M16,14H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBattery40Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V14H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z";
var mdiBattery50 = "M16,13H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBattery50Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V13H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z";
var mdiBattery60 = "M16,12H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBattery60Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V12H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z";
var mdiBattery70 = "M16,10H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBattery70Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V10H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z";
var mdiBattery80 = "M16,9H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBattery80Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V9H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z";
var mdiBattery90 = "M16,8H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBattery90Bluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M4,6H12V8H4V6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z";
var mdiBatteryAlert = "M13 14H11V8H13M13 18H11V16H13M16.7 4H15V2H9V4H7.3C6.6 4 6 4.6 6 5.3V20.6C6 21.4 6.6 22 7.3 22H16.6C17.3 22 17.9 21.4 17.9 20.7V5.3C18 4.6 17.4 4 16.7 4Z";
var mdiBatteryAlertBluetooth = "M5 2V4H3.3C2.6 4 2 4.6 2 5.3V20.6C2 21.4 2.6 22 3.3 22H12.6C13.3 22 13.9 21.4 13.9 20.7V5.3C14 4.6 13.4 4 12.7 4H11V2H5M19 8V11.8L16.7 9.5L16 10.2L18.8 13L16 15.8L16.7 16.5L19 14.2V18H19.5L22.4 15.1L20.2 13L22.3 10.9L19.5 8H19M7 8H9V14H7M20 9.9L20.9 10.8L20 11.8V9.9M20 14.2L20.9 15.1L20 16.1V14.2M7 16H9V18H7V16Z";
var mdiBatteryAlertVariant = "M14.67 4H13V2H7V4H5.33C4.6 4 4 4.6 4 5.33V20.67C4 21.4 4.6 22 5.33 22H14.67C15.4 22 16 21.4 16 20.67V5.33C16 4.6 15.4 4 14.67 4M21 13H19V7H21V13M21 17H19V15H21V17Z";
var mdiBatteryAlertVariantOutline = "M14 20H6V6H14M14.67 4H13V2H7V4H5.33C4.6 4 4 4.6 4 5.33V20.67C4 21.4 4.6 22 5.33 22H14.67C15.4 22 16 21.4 16 20.67V5.33C16 4.6 15.4 4 14.67 4M21 7H19V13H21V8M21 15H19V17H21V15Z";
var mdiBatteryBluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4H11V2H5M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21Z";
var mdiBatteryBluetoothVariant = "M9,2V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4H15V2H9M11.83,8H12.33L15.18,10.85L13.04,13L15.17,15.14L12.33,18H11.83V14.21L9.54,16.5L8.83,15.79L11.62,13L8.83,10.21L9.54,9.5L11.83,11.79V8M12.83,9.91V11.79L13.77,10.85L12.83,9.91M12.83,14.21V16.08L13.77,15.14L12.83,14.21Z";
var mdiBatteryCharging = "M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.66C17.4,22 18,21.4 18,20.67V5.33C18,4.6 17.4,4 16.67,4M11,20V14.5H9L13,7V12.5H15";
var mdiBatteryCharging10 = "M23.05,11H20.05V4L15.05,14H18.05V22M12,18H4L4.05,6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z";
var mdiBatteryCharging100 = "M23,11H20V4L15,14H18V22M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z";
var mdiBatteryCharging20 = "M23.05,11H20.05V4L15.05,14H18.05V22M12.05,17H4.05V6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z";
var mdiBatteryCharging30 = "M12,15H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z";
var mdiBatteryCharging40 = "M13 4H11V2H5V4H3C2.4 4 2 4.4 2 5V21C2 21.6 2.4 22 3 22H13C13.6 22 14 21.6 14 21V5C14 4.4 13.6 4 13 4M12 14.5H4V6H12V14.5M23 11H20V4L15 14H18V22";
var mdiBatteryCharging50 = "M23,11H20V4L15,14H18V22M12,13H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z";
var mdiBatteryCharging60 = "M12,11H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z";
var mdiBatteryCharging70 = "M12,10H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z";
var mdiBatteryCharging80 = "M23,11H20V4L15,14H18V22M12,9H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z";
var mdiBatteryCharging90 = "M23,11H20V4L15,14H18V22M12,8H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z";
var mdiBatteryChargingHigh = "M12 20H4V6H12M12.67 4H11V2H5V4H3.33C2.6 4 2 4.6 2 5.33V20.67C2 21.4 2.6 22 3.33 22H12.67C13.41 22 14 21.41 14 20.67V5.33C14 4.6 13.4 4 12.67 4M11 16H5V19H11V16M11 7H5V10H11V7M11 11.5H5V14.5H11V11.5M23 10H20V3L15 13H18V21";
var mdiBatteryChargingLow = "M12 20H4V6H12M12.67 4H11V2H5V4H3.33C2.6 4 2 4.6 2 5.33V20.67C2 21.4 2.6 22 3.33 22H12.67C13.41 22 14 21.41 14 20.67V5.33C14 4.6 13.4 4 12.67 4M11 16H5V19H11V16M23 10H20V3L15 13H18V21";
var mdiBatteryChargingMedium = "M12 20H4V6H12M12.67 4H11V2H5V4H3.33C2.6 4 2 4.6 2 5.33V20.67C2 21.4 2.6 22 3.33 22H12.67C13.41 22 14 21.41 14 20.67V5.33C14 4.6 13.4 4 12.67 4M11 16H5V19H11V16M11 11.5H5V14.5H11V11.5M23 10H20V3L15 13H18V21";
var mdiBatteryChargingOutline = "M23.05,11H20.05V4L15.05,14H18.05V22M12,20H4L4.05,6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z";
var mdiBatteryChargingWireless = "M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76Z";
var mdiBatteryChargingWireless10 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,18.5H4V6H12V18.5Z";
var mdiBatteryChargingWireless20 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,17H4V6H12V17Z";
var mdiBatteryChargingWireless30 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,16H4V6H12V16Z";
var mdiBatteryChargingWireless40 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,14.5H4V6H12V14.5Z";
var mdiBatteryChargingWireless50 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,13H4V6H12V13Z";
var mdiBatteryChargingWireless60 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,11.6H4V6H12V11.6Z";
var mdiBatteryChargingWireless70 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,10H4V6H12V10Z";
var mdiBatteryChargingWireless80 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,9H4V6H12V9Z";
var mdiBatteryChargingWireless90 = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,7.5H4V6H12V7.5Z";
var mdiBatteryChargingWirelessAlert = "M13 4H11V2H5V4H3C2.4 4 2 4.4 2 5V21C2 21.6 2.4 22 3 22H13C13.6 22 14 21.6 14 21V5C14 4.4 13.6 4 13 4M9 18H7V16H9V18M9 14H7V8H9V14M20.1 4.9L18.7 6.3C21.8 9.4 21.8 14.5 18.7 17.6L20.1 19C24 15.2 24 8.8 20.1 4.9M17.2 7.8L15.8 9.2C17.4 10.8 17.4 13.3 15.8 14.9L17.2 16.3C19.6 13.9 19.6 10.1 17.2 7.8Z";
var mdiBatteryChargingWirelessOutline = "M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,20H4V6H12V20Z";
var mdiBatteryHeart = "M12.67 4H11V2H5V4H3.33A1.34 1.34 0 0 0 2 5.33V20.67A1.34 1.34 0 0 0 3.33 22H12.67A1.34 1.34 0 0 0 14 20.67V5.33A1.34 1.34 0 0 0 12.67 4M19 16.17L18.42 15.64C16.36 13.77 15 12.54 15 11A2.18 2.18 0 0 1 17.2 8.8A2.4 2.4 0 0 1 19 9.63A2.4 2.4 0 0 1 20.8 8.8A2.18 2.18 0 0 1 23 11C23 12.5 21.64 13.74 19.58 15.61Z";
var mdiBatteryHeartOutline = "M19 16.2L18.4 15.7C16.4 13.8 15 12.5 15 11C15 9.8 16 8.8 17.2 8.8C17.9 8.8 18.5 9.1 19 9.6C19.5 9.1 20.1 8.8 20.8 8.8C22 8.8 23 9.8 23 11C23 12.5 21.6 13.7 19.6 15.6L19 16.2M12.7 4H11V2H5V4H3.3C2.6 4 2 4.6 2 5.3V20.6C2 21.4 2.6 22 3.3 22H12.6C13.3 22 13.9 21.4 13.9 20.7V5.3C14 4.6 13.4 4 12.7 4M12 20H4V6H12V20Z";
var mdiBatteryHeartVariant = "M16.67 4H15V2H9V4H7.33A1.34 1.34 0 0 0 6 5.33V20.67A1.34 1.34 0 0 0 7.33 22H16.67A1.34 1.34 0 0 0 18 20.67V5.33A1.34 1.34 0 0 0 16.67 4M12.58 15.64L12 16.17L11.42 15.64C9.36 13.77 8 12.54 8 11A2.18 2.18 0 0 1 10.2 8.8A2.4 2.4 0 0 1 12 9.63A2.4 2.4 0 0 1 13.8 8.8A2.18 2.18 0 0 1 16 11C16 12.54 14.64 13.77 12.58 15.64Z";
var mdiBatteryHigh = "M16 20H8V6H16M16.67 4H15V2H9V4H7.33C6.6 4 6 4.6 6 5.33V20.67C6 21.4 6.6 22 7.33 22H16.67C17.41 22 18 21.41 18 20.67V5.33C18 4.6 17.4 4 16.67 4M15 16H9V19H15V16M15 7H9V10H15V7M15 11.5H9V14.5H15V11.5Z";
var mdiBatteryLow = "M16 20H8V6H16M16.67 4H15V2H9V4H7.33C6.6 4 6 4.6 6 5.33V20.67C6 21.4 6.6 22 7.33 22H16.67C17.41 22 18 21.41 18 20.67V5.33C18 4.6 17.4 4 16.67 4M15 16H9V19H15V16";
var mdiBatteryMedium = "M16 20H8V6H16M16.67 4H15V2H9V4H7.33C6.6 4 6 4.6 6 5.33V20.67C6 21.4 6.6 22 7.33 22H16.67C17.41 22 18 21.41 18 20.67V5.33C18 4.6 17.4 4 16.67 4M15 16H9V19H15V16M15 11.5H9V14.5H15V11.5Z";
var mdiBatteryMinus = "M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M8,12V14H16V12";
var mdiBatteryNegative = "M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M15,12H23V14H15V12M3,13H11V6H3V13Z";
var mdiBatteryOff = "M18 14.8L7.21 4H9V2H15V4H16.67A1.34 1.34 0 0 1 18 5.33M18 17.35L3.38 2.73L2.11 4L6 7.89V20.67A1.34 1.34 0 0 0 7.33 22H16.67A1.34 1.34 0 0 0 18 20.67V19.89L20.84 22.73L22.11 21.46Z";
var mdiBatteryOffOutline = "M18 17.35L3.38 2.73L2.11 4L6 7.89V20.67A1.34 1.34 0 0 0 7.33 22H16.67A1.34 1.34 0 0 0 18 20.67V19.89L20.84 22.73L22.11 21.46M16 20H8V9.89L16 17.89M16 6V12.8L18 14.8V5.33A1.34 1.34 0 0 0 16.67 4H15V2H9V4H7.21L9.21 6Z";
var mdiBatteryOutline = "M16,20H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z";
var mdiBatteryPlus = "M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M16,14V12H13V9H11V12H8V14H11V17H13V14H16Z";
var mdiBatteryPositive = "M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M23,14H20V17H18V14H15V12H18V9H20V12H23V14M3,13H11V6H3V13Z";
var mdiBatteryUnknown = "M15.07,12.25L14.17,13.17C13.63,13.71 13.25,14.18 13.09,15H11.05C11.16,14.1 11.56,13.28 12.17,12.67L13.41,11.41C13.78,11.05 14,10.55 14,10C14,8.89 13.1,8 12,8A2,2 0 0,0 10,10H8A4,4 0 0,1 12,6A4,4 0 0,1 16,10C16,10.88 15.64,11.68 15.07,12.25M13,19H11V17H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.67C17.4,22 18,21.4 18,20.66V5.33C18,4.59 17.4,4 16.67,4Z";
var mdiBatteryUnknownBluetooth = "M5,2V4H3.33A1.33,1.33 0 0,0 2,5.33V20.66C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.66V5.33C14,4.59 13.4,4 12.67,4H11V2H5M8,6A4,4 0 0,1 12,10C12,10.88 11.64,11.68 11.07,12.25L10.17,13.17C9.63,13.71 9.25,14.18 9.09,15H7.05C7.16,14.1 7.56,13.28 8.17,12.67L9.41,11.41C9.78,11.05 10,10.55 10,10C10,8.89 9.1,8 8,8A2,2 0 0,0 6,10H4A4,4 0 0,1 8,6M19,8V11.79L16.71,9.5L16,10.21L18.79,13L16,15.79L16.71,16.5L19,14.21V18H19.5L22.35,15.14L20.21,13L22.35,10.85L19.5,8H19M20,9.91L20.94,10.85L20,11.79V9.91M20,14.21L20.94,15.14L20,16.08V14.21M7,17H9V19H7V17Z";
var mdiBattlenet = "M19.92,10.76C19.92,10.76 22.5,12.24 22.5,13.89C22.5,15.5 19.5,16.06 16.18,15.9C16.18,15.9 14.77,17.87 13.42,18.7C14.88,21.44 16,22.5 15.97,22.5C15.97,22.5 15.23,22.69 13,19.04C11.66,19.89 10.17,20.23 9.56,19.7C8.94,19.17 9.42,18.28 9.68,17.85C9.41,18 8,18.83 6.75,18.83C5.26,18.83 5.05,17.72 5.05,17.15C5.05,15 7.12,12 7.12,12C7.12,12 6.16,9.88 6.05,8.22C4.17,8.06 2,8.39 1.53,8.54C1.4,8.54 1.84,8.22 2,8.18C2.15,8.13 3.91,7.67 6,7.67C6,5.93 6.35,4.33 7.41,4.33C8.13,4.33 8.71,5.45 8.71,5.45C8.71,5.45 8.7,1.5 10.74,1.5C12.8,1.5 15,6.11 15,6.11C15,6.11 17.22,6.32 18.85,7.09C19.5,5.73 20.09,5.11 20.81,3C21,3.7 20.2,5.5 19.35,7.3V7.3H19.35C19.35,7.3 21.65,8.5 21.65,9.83C21.65,10.84 19.92,10.76 19.92,10.76M10.68,18.58C11.36,18.69 12.41,18.1 12.4,18.1L11.58,16.57L10.4,17.4C10.39,17.41 9.64,18.38 10.68,18.58M20.15,9.76C20.15,9.1 18.95,8.35 18.81,8.27L17.89,9.75L19.17,10.37C19.59,10.34 20.15,10.35 20.15,9.76M8,5.63C7.7,5.63 7.09,6.07 7.09,7.64L8.83,7.7L8.72,6.3C8.6,6 8.3,5.63 8,5.63M10.18,15.78C8.92,15.13 8.16,14.06 7.54,12.9C7.54,12.9 5.96,15.55 6.97,16.22C8,16.89 9.64,16.16 10.18,15.78M12.97,17.76C14.11,16.89 17.19,14.73 17.45,11.08C14.57,9.44 10.62,8.71 10.62,8.71C10.62,8.71 10.61,8.21 10.7,7.86C11.64,7.97 14.59,8.47 17.03,9.43C16.35,8.28 15.84,7.85 15.37,7.5C16.53,7.76 17.36,9.26 17.36,9.26L18.28,7.96C18.28,7.96 13.91,5.61 10.19,7.42C10.11,10.3 11.59,14.56 11.59,14.56L10.82,14.89C10.3,13.84 9.63,12.09 9,8.67C8.7,9.08 8.17,9.55 8.16,11.09C7.7,9.8 8.66,8.43 8.67,8.42L7.07,8.26C7.17,9.92 8.05,14.2 10.68,15.53C13,14.21 15.5,11.54 16.13,10.77L16.82,11.28L12.35,15.97C13.59,16 14.32,15.72 14.82,15.5C14.1,16.25 12.86,16.32 12.27,16.32C12.28,16.34 12.57,17.07 12.97,17.76M14.03,6.05C14,5.97 12.66,3.69 11.47,3.86C10.69,4.11 10.24,5.43 10.23,6.87C10.76,6.56 12,6 14.03,6.05M16.71,15.07C16.71,15.07 20,15 19.9,13.76C19.9,12.56 17.92,11.33 17.92,11.35C17.93,13.47 16.71,15.07 16.71,15.07Z";
var mdiBeach = "M15,18.54C17.13,18.21 19.5,18 22,18V22H5C5,21.35 8.2,19.86 13,18.9V12.4C12.16,12.65 11.45,13.21 11,13.95C10.39,12.93 9.27,12.25 8,12.25C6.73,12.25 5.61,12.93 5,13.95C5.03,10.37 8.5,7.43 13,7.04V7A1,1 0 0,1 14,6A1,1 0 0,1 15,7V7.04C19.5,7.43 22.96,10.37 23,13.95C22.39,12.93 21.27,12.25 20,12.25C18.73,12.25 17.61,12.93 17,13.95C16.55,13.21 15.84,12.65 15,12.39V18.54M7,2A5,5 0 0,1 2,7V2H7Z";
var mdiBeaker = "M3,3V5A2,2 0 0,1 5,7V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V7A2,2 0 0,1 21,5V3H3M7,9H10V10H7V9M7,11H10V12H7V11M10,16H7V15H10V16M12,14H7V13H12V14M12,8H7V7H12V8Z";
var mdiBeakerAlert = "M3 3H21V5C19.9 5 19 5.9 19 7V19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12M21 13V7H23V13H21M21 17V15H23V17H21Z";
var mdiBeakerAlertOutline = "M3 3H21V5C19.9 5 19 5.9 19 7V19C19 20.11 18.11 21 17 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3M7 5V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H17V5H7M21 13V7H23V13H21M21 17V15H23V17H21Z";
var mdiBeakerCheck = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z";
var mdiBeakerCheckOutline = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z";
var mdiBeakerMinus = "M23 17V19H15V17H23M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z";
var mdiBeakerMinusOutline = "M23 17V19H15V17M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z";
var mdiBeakerOutline = "M3,3H21V5A2,2 0 0,0 19,7V19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V7A2,2 0 0,0 3,5V3M7,5V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H17V5H7Z";
var mdiBeakerPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z";
var mdiBeakerPlusOutline = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z";
var mdiBeakerQuestion = "M0 3H18V5C16.9 5 16 5.9 16 7V19C16 20.1 15.1 21 14 21H4C2.9 21 2 20.1 2 19V7C2 5.9 1.1 5 0 5V3M4 9V10H7V9H4M4 11V12H7V11H4M7 16V15H4V16H7M9 14V13H4V14H9M9 8V7H4V8H9M21.5 15.5V17H20V15.5H21.5M19.5 10.5H18V10C18 8.34 19.34 7 21 7C22.66 7 24 8.34 24 10C24 10.97 23.5 11.88 22.71 12.41L22.41 12.6C21.84 13 21.5 13.62 21.5 14.3V14.5H20V14.3C20 13.11 20.6 12 21.59 11.35L21.88 11.16C22.27 10.9 22.5 10.47 22.5 10C22.5 9.18 21.83 8.5 21 8.5C20.17 8.5 19.5 9.17 19.5 10V10.5Z";
var mdiBeakerQuestionOutline = "M0 3H18V5C16.9 5 16 5.9 16 7V19C16 20.11 15.11 21 14 21H4C2.9 21 2 20.11 2 19V7C2 5.9 1.11 5 0 5V3M4 5V7H9V8H4V9H7V10H4V11H7V12H4V13H9V14H4V15H7V16H4V19H14V5H4M21.5 15.5V17H20V15.5H21.5M19.5 10.5H18V10C18 8.34 19.34 7 21 7C22.66 7 24 8.34 24 10C24 10.97 23.5 11.88 22.71 12.41L22.41 12.6C21.84 13 21.5 13.62 21.5 14.3V14.5H20V14.3C20 13.11 20.6 12 21.59 11.35L21.88 11.16C22.27 10.9 22.5 10.47 22.5 10C22.5 9.18 21.83 8.5 21 8.5C20.17 8.5 19.5 9.17 19.5 10V10.5Z";
var mdiBeakerRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M3 3H21V5C19.9 5 19 5.9 19 7V12C15.69 12 13 14.69 13 18C13 19.09 13.29 20.12 13.8 21H7C5.9 21 5 20.1 5 19V7C5 5.9 4.1 5 3 5V3M7 9V10H10V9H7M7 11V12H10V11H7M10 16V15H7V16H10M12 14V13H7V14H12M12 8V7H7V8H12Z";
var mdiBeakerRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M3 3H21V5C19.9 5 19 5.9 19 7V12C18.3 12 17.63 12.12 17 12.34V5H7V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H13.08C13.2 19.72 13.45 20.39 13.8 21H7C5.9 21 5 20.11 5 19V7C5 5.9 4.11 5 3 5V3Z";
var mdiBed = "M19,7H11V14H3V5H1V20H3V17H21V20H23V11A4,4 0 0,0 19,7M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13Z";
var mdiBedDouble = "M18 10V7A2 2 0 0 0 16 5H8A2 2 0 0 0 6 7V10A2 2 0 0 0 4 12V17H5.33L6 19H7L7.67 17H16.33L17 19H18L18.67 17H20V12A2 2 0 0 0 18 10M11 10H8V7H11M16 10H13V7H16Z";
var mdiBedDoubleOutline = "M8 5C7.5 5 7 5.21 6.61 5.6S6 6.45 6 7V10C5.47 10 5 10.19 4.59 10.59S4 11.47 4 12V17H5.34L6 19H7L7.69 17H16.36L17 19H18L18.66 17H20V12C20 11.47 19.81 11 19.41 10.59S18.53 10 18 10V7C18 6.45 17.8 6 17.39 5.6S16.5 5 16 5M8 7H11V10H8M13 7H16V10H13M6 12H18V15H6Z";
var mdiBedEmpty = "M19,7H5V14H3V5H1V20H3V17H21V20H23V11A4,4 0 0,0 19,7";
var mdiBedKing = "M6 5C5.47 5 5 5.21 4.59 5.6S4 6.45 4 7V10C3.45 10 3 10.19 2.6 10.59S2 11.47 2 12V17H3.33L4 19H5L5.67 17H18.33L19 19H20L20.67 17H22V12C22 11.47 21.79 11 21.4 10.59C21 10.19 20.55 10 20 10V7C20 6.45 19.81 6 19.41 5.6S18.53 5 18 5M6 7H11V10H6M13 7H18V10H13Z";
var mdiBedKingOutline = "M20 10V7A2 2 0 0 0 18 5H6A2 2 0 0 0 4 7V10A2 2 0 0 0 2 12V17H3.33L4 19H5L5.67 17H18.33L19 19H20L20.67 17H22V12A2 2 0 0 0 20 10M13 7H18V10H13M6 7H11V10H6M20 15H4V12H20Z";
var mdiBedOutline = "M7 14C8.66 14 10 12.66 10 11C10 9.34 8.66 8 7 8C5.34 8 4 9.34 4 11C4 12.66 5.34 14 7 14M7 10C7.55 10 8 10.45 8 11C8 11.55 7.55 12 7 12C6.45 12 6 11.55 6 11C6 10.45 6.45 10 7 10M19 7H11V15H3V5H1V20H3V17H21V20H23V11C23 8.79 21.21 7 19 7M21 15H13V9H19C20.1 9 21 9.9 21 11Z";
var mdiBedQueen = "M19 10V7A2 2 0 0 0 17 5H7A2 2 0 0 0 5 7V10A2 2 0 0 0 3 12V17H4.33L5 19H6L6.67 17H17.33L18 19H19L19.67 17H21V12A2 2 0 0 0 19 10M17 10H7V7H17Z";
var mdiBedQueenOutline = "M19 10V7A2 2 0 0 0 17 5H7A2 2 0 0 0 5 7V10A2 2 0 0 0 3 12V17H4.33L5 19H6L6.67 17H17.33L18 19H19L19.67 17H21V12A2 2 0 0 0 19 10M7 7H17V10H7M19 15H5V12H19Z";
var mdiBedSingle = "M17 10V7C17 5.9 16.11 5 15 5H9C7.9 5 7 5.9 7 7V10C5.9 10 4.89 10.9 5 12V17H6.33L7 19H8L8.67 17H15.33L16 19H17L17.67 17H19V12C19 10.9 18.11 10 17 10M15 10H9V7H15Z";
var mdiBedSingleOutline = "M17 10V7C17 5.9 16.11 5 15 5H9C7.9 5 7 5.9 7 7V10C5.9 10 5 10.9 5 12V17H6.33L7 19H8L8.67 17H15.33L16 19H17L17.67 17H19V12C19 10.9 18.11 10 17 10M9 7H15V10H9M17 15H7V12H17Z";
var mdiBee = "M17.4 9C17 7.8 16.2 7 15 6.5V5H14V6.4H13.6C12.5 6.4 11.6 6.8 10.8 7.6L10.4 8L9 7.5C8.7 7.4 8.4 7.3 8 7.3C7.4 7.3 6.8 7.5 6.3 7.9C5.7 8.3 5.4 8.8 5.2 9.3C5 10 5 10.6 5.2 11.3C5.5 12 5.8 12.5 6.3 12.8C5.9 14.3 6.2 15.6 7.3 16.7C8.1 17.5 9 17.9 10.1 17.9C10.6 17.9 10.9 17.9 11.2 17.8C11.8 18.6 12.6 19.1 13.6 19.1C13.9 19.1 14.3 19.1 14.6 19C15.2 18.8 15.6 18.4 16 17.9C16.4 17.3 16.6 16.8 16.6 16.2C16.6 15.8 16.6 15.5 16.5 15.2L16 13.6L16.6 13.2C17.4 12.4 17.8 11.3 17.7 10.1H19V9H17.4M7.7 11.3C7.1 11 6.9 10.6 7.1 10C7.3 9.4 7.7 9.2 8.3 9.4L11.5 10.6C9.9 11.4 8.7 11.6 7.7 11.3M14 16.9C13.4 17.1 13 16.9 12.7 16.3C12.4 15.3 12.6 14.1 13.4 12.5L14.6 15.6C14.8 16.3 14.6 16.7 14 16.9M15.2 11.6L14.6 10V9.9L14.3 9.6H14.2L12.6 9C13 8.7 13.4 8.5 13.9 8.5C14.4 8.5 14.9 8.7 15.3 9.1C15.7 9.5 15.9 9.9 15.9 10.4C15.7 10.7 15.5 11.2 15.2 11.6Z";
var mdiBeeFlower = "M11.6 13V12.9L11.3 12.6H11.2L9.6 12C10 11.7 10.4 11.5 10.9 11.5C11.4 11.5 11.9 11.7 12.3 12.1C12.7 12.5 12.9 12.9 12.9 13.4C12.9 13.9 12.8 14.3 12.4 14.7L11.6 13M9.7 19.3C9.4 18.3 9.6 17.1 10.4 15.5L11.6 18.6C11.8 19.2 11.6 19.6 11 19.9C10.4 20.2 10 20 9.7 19.3M4.1 13.1C4.3 12.5 4.7 12.3 5.3 12.5L8.5 13.7C6.9 14.5 5.7 14.7 4.7 14.4C4.1 14.1 3.9 13.7 4.1 13.1M12 8.1H11V9.5H10.6C9.5 9.5 8.6 9.9 7.8 10.7L7.4 11.3L6 10.5C5.7 10.4 5.4 10.4 5 10.4C4.4 10.4 3.8 10.6 3.3 11S2.4 11.8 2.2 12.4C2 13.1 2 13.7 2.2 14.4C2.5 15.1 2.8 15.6 3.3 15.9C2.9 17.4 3.2 18.7 4.3 19.8C5.1 20.6 6 21 7.1 21C7.6 21 7.9 21 8.2 20.9C8.8 21.7 9.6 22.2 10.6 22.2C10.9 22.2 11.3 22.2 11.6 22.1C12.2 21.9 12.6 21.5 13 21C13.4 20.4 13.6 19.9 13.6 19.3C13.6 18.9 13.6 18.6 13.5 18.3L12.9 16.9L13.5 16.5C14.3 15.7 14.7 14.6 14.6 13.4H16V12.4H14.4C14 11.2 13.2 10.4 12 10V8.1M17.3 6.8C17.1 6.6 17 6.3 17 6.1C17 5.8 17.1 5.6 17.3 5.4C17.5 5.2 17.7 5.1 18 5.1S18.5 5.2 18.7 5.4C18.9 5.5 19 5.8 19 6.1C19 6.4 18.9 6.6 18.7 6.8C18.5 7 18.3 7 18 7S17.5 7 17.3 6.8M20.7 4.1H19.6L19.3 3.2C19.1 2.5 18.7 2.2 18 2.2C17.3 2.2 16.8 2.5 16.7 3.2L16.4 4.1H15.3C14.7 4.1 14.3 4.4 14 5C13.8 5.6 14 6.1 14.6 6.5L15.5 7L15.1 8.2C14.9 8.6 15 9 15.2 9.4C15.5 9.8 15.8 10 16.3 10C16.7 10 17 9.9 17.2 9.7L18 9.1L18.8 9.8C19 9.9 19.3 10 19.7 10C20.2 10 20.5 9.8 20.8 9.4C21 9 21.1 8.6 20.9 8.2L20.5 7L21.3 6.5C21.9 6.1 22.1 5.6 21.9 5C21.7 4.3 21.3 4.1 20.7 4.1Z";
var mdiBeehiveOffOutline = "M1.1 3L4.7 6.5C3.7 7.2 3 8.2 3 9.5C3 10.1 3.2 10.7 3.5 11.2C2 11.6 1 12.9 1 14.5C1 15.8 1.7 16.8 2.7 17.5C2.2 18 2 18.7 2 19.5C2 21.4 3.6 23 5.5 23H18.5C19.3 23 20 22.7 20.6 22.3L21.3 23L22.6 21.7L2.4 1.7L1.1 3M9.2 11H6.5C5.7 11 5 10.3 5 9.5C5 8.8 5.5 8.2 6.2 8L9.2 11M9 21H5.5C4.7 21 4 20.3 4 19.5S4.7 18 5.5 18H9V21M9.2 16H4.5C3.7 16 3 15.3 3 14.5S3.7 13 4.5 13H11.2L12.2 14H12C10.7 14 9.6 14.8 9.2 16M18.5 21H15V18H16.2L19.1 20.9C18.9 21 18.7 21 18.5 21M7.1 3.9L5.7 2.5C6.3 1.6 7.3 1 8.5 1H15.5C17.4 1 19 2.6 19 4.5C19 5.1 18.8 5.7 18.5 6.2C20 6.6 21 7.9 21 9.5C21 10.1 20.8 10.7 20.5 11.2C21.9 11.7 23 13 23 14.5C23 15.8 22.3 16.8 21.3 17.5C21.6 17.9 21.8 18.3 21.9 18.7L19.2 16H19.5C20.3 16 21 15.3 21 14.5S20.3 13 19.5 13H16.2L14.2 11H17.5C18.3 11 19 10.3 19 9.5S18.3 8 17.5 8H11.2L9.2 6H15.5C16.3 6 17 5.3 17 4.5S16.3 3 15.5 3H8.5C7.9 3 7.3 3.4 7.1 3.9Z";
var mdiBeehiveOutline = "M23 14.5C23 12.94 21.97 11.63 20.55 11.18C20.83 10.68 21 10.11 21 9.5C21 7.94 19.97 6.63 18.55 6.18C18.83 5.68 19 5.11 19 4.5C19 2.57 17.43 1 15.5 1H8.5C6.57 1 5 2.57 5 4.5C5 5.11 5.17 5.68 5.45 6.18C4.04 6.63 3 7.94 3 9.5C3 10.11 3.17 10.68 3.45 11.18C2.04 11.63 1 12.94 1 14.5C1 15.76 1.67 16.84 2.67 17.46C2.25 18.03 2 18.74 2 19.5C2 21.43 3.57 23 5.5 23H18.5C20.43 23 22 21.43 22 19.5C22 18.74 21.75 18.03 21.33 17.46C22.33 16.84 23 15.76 23 14.5M8.5 3H15.5C16.33 3 17 3.67 17 4.5S16.33 6 15.5 6H8.5C7.67 6 7 5.33 7 4.5S7.67 3 8.5 3M6.5 8H17.5C18.33 8 19 8.67 19 9.5S18.33 11 17.5 11H6.5C5.67 11 5 10.33 5 9.5S5.67 8 6.5 8M4 19.5C4 18.67 4.67 18 5.5 18H9V21H5.5C4.67 21 4 20.33 4 19.5M18.5 21H15V18H18.5C19.33 18 20 18.67 20 19.5S19.33 21 18.5 21M19.5 16H14.82C14.4 14.84 13.3 14 12 14S9.6 14.84 9.18 16H4.5C3.67 16 3 15.33 3 14.5S3.67 13 4.5 13H19.5C20.33 13 21 13.67 21 14.5S20.33 16 19.5 16Z";
var mdiBeekeeper = "M19 5H16C16 3.34 14.21 2 12 2C9.79 2 8 3.34 8 5H5C4.45 5 4 5.45 4 6S4.45 7 5 7V14C5 15.11 5.9 16 7 16H17C18.11 16 19 15.11 19 14V7C19.55 7 20 6.55 20 6S19.55 5 19 5M17 14H7V7H17V14M15.86 8C15.94 8.32 16 8.65 16 9C16 11.21 14.21 13 12 13S8 11.21 8 9C8 8.65 8.06 8.32 8.14 8H10.28C10.11 8.3 10 8.63 10 9C10 10.1 10.9 11 12 11S14 10.1 14 9C14 8.63 13.89 8.3 13.72 8H15.86M20 19V22H4V19C4 18.22 4.47 17.55 5.18 17H12C9.28 17 6.19 18.29 6 19V20H18V19C17.81 18.29 14.72 17 12 17H18.82C19.53 17.55 20 18.22 20 19Z";
var mdiBeer = "M4,2H19L17,22H6L4,2M6.2,4L7.8,20H8.8L7.43,6.34C8.5,6 9.89,5.89 11,7C12.56,8.56 15.33,7.69 16.5,7.23L16.8,4H6.2Z";
var mdiBeerOutline = "M4 2L6 22H17L19 2H4M6.2 4H16.8L16.5 7.23C13.18 8.5 11.85 7.67 11.38 7.31C11.13 7.12 10.77 6.69 10.11 6.39C9.45 6.08 8.55 6 7.5 6.32C7.09 6.43 6.77 6.61 6.5 6.79L6.2 4M8.86 8.11C9.05 8.11 9.16 8.15 9.27 8.2C9.5 8.3 9.71 8.55 10.17 8.9C11.03 9.56 13.03 10.36 16.26 9.41L15.2 20H7.8L6.71 9.06C6.76 9 6.91 8.89 7.17 8.71C7.5 8.5 7.91 8.28 8 8.25L8 8.25H8.03C8.41 8.14 8.67 8.1 8.86 8.11Z";
var mdiBell = "M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M14,21A2,2 0 0,1 12,23A2,2 0 0,1 10,21";
var mdiBellAlert = "M23 7V13H21V7M21 15H23V17H21M12 2A2 2 0 0 0 10 4A2 2 0 0 0 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H21V19L19 17V11C19 7.82 16.88 5.14 14 4.29A2 2 0 0 0 14 4A2 2 0 0 0 12 2M10 21A2 2 0 0 0 12 23A2 2 0 0 0 14 21Z";
var mdiBellAlertOutline = "M12 2A2 2 0 0 0 10 4A2 2 0 0 0 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H21V19L19 17V11C19 7.82 16.88 5.14 14 4.29A2 2 0 0 0 14 4A2 2 0 0 0 12 2M12 6A5 5 0 0 1 17 11V18H7V11A5 5 0 0 1 12 6M21 7V13H23V7H21M21 15V17H23V15H21M10 21A2 2 0 0 0 12 23A2 2 0 0 0 14 21H10Z";
var mdiBellCancel = "M17.5 13A4.5 4.5 0 0 0 13 17.5A4.5 4.5 0 0 0 17.5 22A4.5 4.5 0 0 0 22 17.5A4.5 4.5 0 0 0 17.5 13M17.5 14.5A3 3 0 0 1 20.5 17.5A3 3 0 0 1 20.08 19L16 14.92A3 3 0 0 1 17.5 14.5M14.92 16L19 20.08A3 3 0 0 1 17.5 20.5A3 3 0 0 1 14.5 17.5A3 3 0 0 1 14.92 16M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H11.5A6.5 6.5 0 0 1 11 17.5A6.5 6.5 0 0 1 17.5 11A6.5 6.5 0 0 1 19 11.18V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.5 23 12.97 22.81 13.33 22.5A6.5 6.5 0 0 1 12.03 21Z";
var mdiBellCancelOutline = "M17.5 13A4.5 4.5 0 0 0 13 17.5A4.5 4.5 0 0 0 17.5 22A4.5 4.5 0 0 0 22 17.5A4.5 4.5 0 0 0 17.5 13M17.5 14.5A3 3 0 0 1 20.5 17.5A3 3 0 0 1 20.08 19L16 14.92A3 3 0 0 1 17.5 14.5M14.92 16L19 20.08A3 3 0 0 1 17.5 20.5A3 3 0 0 1 14.5 17.5A3 3 0 0 1 14.92 16M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H11.5A6.5 6.5 0 0 1 11.03 18H7V11A5 5 0 0 1 12 6A5 5 0 0 1 17 11V11A6.5 6.5 0 0 1 17.5 11A6.5 6.5 0 0 1 19 11.18V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.5 23 12.97 22.81 13.33 22.5A6.5 6.5 0 0 1 12.03 21Z";
var mdiBellCheck = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M3 20V19L5 17V11C5 7.9 7.03 5.18 10 4.29V4C10 2.9 10.9 2 12 2C13.11 2 14 2.9 14 4V4.29C16.97 5.18 19 7.9 19 11V12.08L18 12C14.69 12 12 14.69 12 18C12 18.7 12.12 19.37 12.34 20H3M12 23C10.9 23 10 22.11 10 21H12.8C13.04 21.41 13.33 21.79 13.65 22.13C13.29 22.66 12.69 23 12 23Z";
var mdiBellCheckOutline = "M17.75 21.16L15 18.16L16.16 17L17.75 18.59L21.34 15L22.5 16.41L17.75 21.16M10 21H12.8C13.04 21.41 13.33 21.79 13.65 22.13C13.29 22.66 12.69 23 12 23C10.9 23 10 22.11 10 21M3 20V19L5 17V11C5 7.9 7.03 5.18 10 4.29V4C10 2.9 10.9 2 12 2C13.11 2 14 2.9 14 4V4.29C16.97 5.18 19 7.9 19 11V12.08L18 12L17 12.08V11C17 8.24 14.76 6 12 6C9.24 6 7 8.24 7 11V18H12C12 18.7 12.12 19.37 12.34 20H3Z";
var mdiBellCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M17,16V15L16,14V11.39C16,10.3 15.73,9.34 15.21,8.53C14.7,7.72 13.96,7.21 13,7V6.5A1,1 0 0,0 12,5.5A1,1 0 0,0 11,6.5V7C10.04,7.21 9.3,7.72 8.79,8.53C8.27,9.34 8,10.3 8,11.39V14L7,15V16H17M13.5,17H10.5A1.5,1.5 0 0,0 12,18.5A1.5,1.5 0 0,0 13.5,17Z";
var mdiBellCircleOutline = "M17,16H7V15L8,14V11.39C8,10.3 8.27,9.34 8.79,8.53C9.3,7.72 10.04,7.21 11,7V6.5A1,1 0 0,1 12,5.5A1,1 0 0,1 13,6.5V7C13.96,7.21 14.7,7.72 15.21,8.53C15.73,9.34 16,10.3 16,11.39V14L17,15V16M13.5,17A1.5,1.5 0 0,1 12,18.5A1.5,1.5 0 0,1 10.5,17H13.5M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiBellMinus = "M22 19V17H14V19H22M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18C12 14.69 14.69 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21H10Z";
var mdiBellMinusOutline = "M12 2C10.9 2 10 2.9 10 4V4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18H7V11C7 8.24 9.24 6 12 6S17 8.24 17 11V12.09C17.33 12.03 17.67 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29V4C14 2.9 13.11 2 12 2M14 17V19H22V17M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21H10Z";
var mdiBellOff = "M20.84,22.73L18.11,20H3V19L5,17V11C5,9.86 5.29,8.73 5.83,7.72L1.11,3L2.39,1.73L22.11,21.46L20.84,22.73M19,15.8V11C19,7.9 16.97,5.17 14,4.29C14,4.19 14,4.1 14,4A2,2 0 0,0 12,2A2,2 0 0,0 10,4C10,4.1 10,4.19 10,4.29C9.39,4.47 8.8,4.74 8.26,5.09L19,15.8M12,23A2,2 0 0,0 14,21H10A2,2 0 0,0 12,23Z";
var mdiBellOffOutline = "M22.11,21.46L2.39,1.73L1.11,3L5.83,7.72C5.29,8.73 5,9.86 5,11V17L3,19V20H18.11L20.84,22.73L22.11,21.46M7,18V11C7,10.39 7.11,9.79 7.34,9.23L16.11,18H7M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M8.29,5.09C8.82,4.75 9.4,4.5 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V15.8L17,13.8V11A5,5 0 0,0 12,6C11.22,6 10.45,6.2 9.76,6.56L8.29,5.09Z";
var mdiBellOutline = "M16,17H7V10.5C7,8 9,6 11.5,6C14,6 16,8 16,10.5M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z";
var mdiBellPlus = "M17 14V17H14V19H17V22H19V19H22V17H19V14M12 2A2 2 0 0 0 10 4A2 2 0 0 0 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35A6 6 0 0 1 12 18A6 6 0 0 1 18 12A6 6 0 0 1 19 12.09V11C19 7.82 16.88 5.14 14 4.29A2 2 0 0 0 14 4A2 2 0 0 0 12 2M10 21A2 2 0 0 0 12 23A2 2 0 0 0 13.65 22.13A6 6 0 0 1 12.81 21Z";
var mdiBellPlusOutline = "M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18H7V11C7 8.24 9.24 6 12 6C14.76 6 17 8.24 17 11V12.09C17.33 12.03 17.67 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M17 14V17H14V19H17V22H19V19H22V17H19V14M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21Z";
var mdiBellRemove = "M20.12 14.46L18 16.59L15.88 14.46L14.46 15.88L16.59 18L14.46 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18C12 14.69 14.69 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21Z";
var mdiBellRemoveOutline = "M20.12 14.46L18 16.59L15.88 14.46L14.46 15.88L16.59 18L14.46 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88M12 2C10.9 2 10 2.9 10 4C10 4.1 10 4.19 10 4.29C7.12 5.14 5 7.82 5 11V17L3 19V20H12.35C12.12 19.36 12 18.68 12 18H7V11A5 5 0 0 1 12 6A5 5 0 0 1 17 11V12.09C17.33 12.04 17.66 12 18 12C18.34 12 18.67 12.03 19 12.09V11C19 7.82 16.88 5.14 14 4.29C14 4.19 14 4.1 14 4C14 2.9 13.11 2 12 2M10 21C10 22.11 10.9 23 12 23C12.66 23 13.28 22.67 13.65 22.13C13.33 21.79 13.05 21.41 12.81 21Z";
var mdiBellRing = "M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M14,21A2,2 0 0,1 12,23A2,2 0 0,1 10,21M19.75,3.19L18.33,4.61C20.04,6.3 21,8.6 21,11H23C23,8.07 21.84,5.25 19.75,3.19M1,11H3C3,8.6 3.96,6.3 5.67,4.61L4.25,3.19C2.16,5.25 1,8.07 1,11Z";
var mdiBellRingOutline = "M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M17,11A5,5 0 0,0 12,6A5,5 0 0,0 7,11V18H17V11M19.75,3.19L18.33,4.61C20.04,6.3 21,8.6 21,11H23C23,8.07 21.84,5.25 19.75,3.19M1,11H3C3,8.6 3.96,6.3 5.67,4.61L4.25,3.19C2.16,5.25 1,8.07 1,11Z";
var mdiBellSleep = "M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M15,9H9V11H12.24L9,13.7V16H15V14H11.76L15,11.3V9Z";
var mdiBellSleepOutline = "M10,21H14A2,2 0 0,1 12,23A2,2 0 0,1 10,21M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M17,11A5,5 0 0,0 12,6A5,5 0 0,0 7,11V18H17V11M9,9V11H12.24L9,13.7V16H15V14H11.76L15,11.3V9H9Z";
var mdiBeta = "M9.23,17.59V23.12H6.88V6.72C6.88,5.27 7.31,4.13 8.16,3.28C9,2.43 10.17,2 11.61,2C13,2 14.07,2.34 14.87,3C15.66,3.68 16.05,4.62 16.05,5.81C16.05,6.63 15.79,7.4 15.27,8.11C14.75,8.82 14.08,9.31 13.25,9.58V9.62C14.5,9.82 15.47,10.27 16.13,11C16.79,11.71 17.12,12.62 17.12,13.74C17.12,15.06 16.66,16.14 15.75,16.97C14.83,17.8 13.63,18.21 12.13,18.21C11.07,18.21 10.1,18 9.23,17.59M10.72,10.75V8.83C11.59,8.72 12.3,8.4 12.87,7.86C13.43,7.31 13.71,6.7 13.71,6C13.71,4.62 13,3.92 11.6,3.92C10.84,3.92 10.25,4.16 9.84,4.65C9.43,5.14 9.23,5.82 9.23,6.71V15.5C10.14,16.03 11.03,16.29 11.89,16.29C12.73,16.29 13.39,16.07 13.86,15.64C14.33,15.2 14.56,14.58 14.56,13.79C14.56,12 13.28,11 10.72,10.75Z";
var mdiBetamax = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M8,9A4,4 0 0,1 12,13A4,4 0 0,1 8,17A4,4 0 0,1 4,13A4,4 0 0,1 8,9M13,9H20V17H13V9M8,11A2,2 0 0,0 6,13A2,2 0 0,0 8,15A2,2 0 0,0 10,13A2,2 0 0,0 8,11Z";
var mdiBiathlon = "M12.88,3.64C13.65,3.64 14.28,4.27 14.28,5.04C14.28,5.81 13.65,6.44 12.88,6.44C12.11,6.44 11.5,5.81 11.5,5.04C11.5,4.27 12.11,3.64 12.88,3.64M15,13H16.5V19H15V13M15,8.5H16.5V10H15V8.5M10.04,2.6L8,2.04L6.06,8.58L3.9,11.42L7.17,12.37L10.04,2.6M19.67,18.55C19.31,18.93 18.88,19.5 18.4,19.7C17.91,19.92 17.54,20 17,20H13.5L13.43,17C13.42,16.83 13.37,16.67 13.28,16.5L10.88,12.24L11.76,9.5C12.34,10.55 13,11.73 13.06,11.83C13.21,12 13.45,12.13 13.69,12.13H15.9A0.81,0.81 0 0,0 16.71,11.32C16.71,10.9 16.38,10.56 15.96,10.53L14.29,10.4L12.4,7C12.4,7 12,6.42 11.14,6.42C10.27,6.42 10,6.84 9.83,7.42L6,20H3V22H17C18.37,22 19.53,21.34 20.5,20.37L19.67,18.55M9.75,14.39L11.62,17.39L11.75,20H7.75L9.75,14.39Z";
var mdiBicycle = "M19 10C18.44 10 17.91 10.11 17.41 10.28L14.46 4.5H11V6H13.54L14.42 7.72L12 13.13L10.23 8.95C10.5 8.85 10.74 8.58 10.74 8.25C10.74 7.84 10.41 7.5 10 7.5H8C7.58 7.5 7.24 7.84 7.24 8.25S7.58 9 8 9H8.61L10.86 14.25H9.92C9.56 11.85 7.5 10 5 10C2.24 10 0 12.24 0 15S2.24 20 5 20C7.5 20 9.56 18.15 9.92 15.75H12.5L15.29 9.43L16.08 10.96C14.82 11.87 14 13.34 14 15C14 17.76 16.24 20 19 20S24 17.76 24 15 21.76 10 19 10M5 18.5C3.07 18.5 1.5 16.93 1.5 15S3.07 11.5 5 11.5C6.67 11.5 8.07 12.68 8.41 14.25H4V15.75H8.41C8.07 17.32 6.67 18.5 5 18.5M19 18.5C17.07 18.5 15.5 16.93 15.5 15C15.5 13.92 16 12.97 16.77 12.33L18.57 15.85L19.89 15.13L18.1 11.63C18.39 11.56 18.69 11.5 19 11.5C20.93 11.5 22.5 13.07 22.5 15S20.93 18.5 19 18.5Z";
var mdiBicycleBasket = "M11.74 13.36L14.14 7.71L13.06 5.5H10.5V4H14L14.73 5.5H21.75L20.75 9H16.44L17.11 10.37C17.69 10.13 18.33 10 19 10C21.76 10 24 12.24 24 15C24 17.76 21.76 20 19 20C16.24 20 14 17.76 14 15C14 13.45 14.71 12.06 15.82 11.15L15 9.5L12.25 16H9.9C9.44 18.28 7.42 20 5 20C2.24 20 0 17.76 0 15C0 12.24 2.24 10 5 10C7.59 10 9.72 11.97 10 14.5H10.58L8.3 9H7.5C7.09 9 6.75 8.66 6.75 8.25C6.75 7.84 7.09 7.5 7.5 7.5H10.25C10.66 7.5 11 7.84 11 8.25C11 8.66 10.66 9 10.25 9H9.97L11.74 13.36M5 11.5C3.07 11.5 1.5 13.07 1.5 15C1.5 16.93 3.07 18.5 5 18.5C6.59 18.5 7.93 17.45 8.36 16H4V14.5H8.47C8.22 12.8 6.76 11.5 5 11.5M19 11.5C18.57 11.5 18.15 11.58 17.77 11.72L19.7 15.68L18.35 16.34L16.5 12.55C15.88 13.18 15.5 14.05 15.5 15C15.5 16.93 17.07 18.5 19 18.5C20.93 18.5 22.5 16.93 22.5 15C22.5 13.07 20.93 11.5 19 11.5Z";
var mdiBicycleElectric = "M19 7C18.44 7 17.91 7.11 17.41 7.28L14.46 1.5H11V3H13.54L14.42 4.72L12 10.13L10.23 5.95C10.5 5.85 10.74 5.58 10.74 5.25C10.74 4.84 10.41 4.5 10 4.5H8C7.58 4.5 7.24 4.84 7.24 5.25S7.58 6 8 6H8.61L10.86 11.25H9.92C9.56 8.85 7.5 7 5 7C2.24 7 0 9.24 0 12S2.24 17 5 17C7.5 17 9.56 15.15 9.92 12.75H12.5L15.29 6.43L16.08 7.96C14.82 8.87 14 10.34 14 12C14 14.76 16.24 17 19 17S24 14.76 24 12 21.76 7 19 7M5 15.5C3.07 15.5 1.5 13.93 1.5 12S3.07 8.5 5 8.5C6.67 8.5 8.07 9.68 8.41 11.25H4V12.75H8.41C8.07 14.32 6.67 15.5 5 15.5M19 15.5C17.07 15.5 15.5 13.93 15.5 12C15.5 10.92 16 9.97 16.77 9.33L18.57 12.85L19.89 12.13L18.1 8.63C18.39 8.56 18.69 8.5 19 8.5C20.93 8.5 22.5 10.07 22.5 12S20.93 15.5 19 15.5M11 20H7L13 23V21H17L11 18V20Z";
var mdiBicyclePennyFarthing = "M15.5 5.06V2H12V4H13.5V5.04C12.71 5.11 11.94 5.27 11.2 5.5C11.03 5.2 10.72 5 10.36 5H7C6.45 5 6 5.45 6 6S6.45 7 7 7H8.05C5.09 9 3.12 12.36 3 16.18C1.85 16.59 1 17.69 1 19C1 20.66 2.34 22 4 22S7 20.66 7 19C7 17.7 6.17 16.61 5 16.19C5.07 14.67 5.46 13.25 6.14 12C6.05 12.5 6 13 6 13.5C6 18.19 9.81 22 14.5 22C19.19 22 23 18.19 23 13.5C23 9.14 19.72 5.56 15.5 5.06M4 20C3.45 20 3 19.55 3 19S3.45 18 4 18 5 18.45 5 19 4.55 20 4 20M14.5 20C10.92 20 8 17.08 8 13.5C8 10.26 10.39 7.57 13.5 7.09V15H15.5V7.09C18.61 7.57 21 10.26 21 13.5C21 17.08 18.08 20 14.5 20Z";
var mdiBike = "M5,20.5A3.5,3.5 0 0,1 1.5,17A3.5,3.5 0 0,1 5,13.5A3.5,3.5 0 0,1 8.5,17A3.5,3.5 0 0,1 5,20.5M5,12A5,5 0 0,0 0,17A5,5 0 0,0 5,22A5,5 0 0,0 10,17A5,5 0 0,0 5,12M14.8,10H19V8.2H15.8L13.86,4.93C13.57,4.43 13,4.1 12.4,4.1C11.93,4.1 11.5,4.29 11.2,4.6L7.5,8.29C7.19,8.6 7,9 7,9.5C7,10.13 7.33,10.66 7.85,10.97L11.2,13V18H13V11.5L10.75,9.85L13.07,7.5M19,20.5A3.5,3.5 0 0,1 15.5,17A3.5,3.5 0 0,1 19,13.5A3.5,3.5 0 0,1 22.5,17A3.5,3.5 0 0,1 19,20.5M19,12A5,5 0 0,0 14,17A5,5 0 0,0 19,22A5,5 0 0,0 24,17A5,5 0 0,0 19,12M16,4.8C17,4.8 17.8,4 17.8,3C17.8,2 17,1.2 16,1.2C15,1.2 14.2,2 14.2,3C14.2,4 15,4.8 16,4.8Z";
var mdiBikeFast = "M16 1.2C15 1.2 14.2 2 14.2 3S15 4.8 16 4.8 17.8 4 17.8 3 17 1.2 16 1.2M12.4 4.1C11.93 4.1 11.5 4.29 11.2 4.6L7.5 8.29C7.19 8.6 7 9 7 9.5C7 10.13 7.33 10.66 7.85 10.97L11.2 13V18H13V11.5L10.75 9.85L13.07 7.5L14.8 10H19V8.2H15.8L13.86 4.93C13.57 4.43 13 4.1 12.4 4.1M10 3H3C2.45 3 2 2.55 2 2S2.45 1 3 1H12.79C12.58 1.34 12.41 1.71 12.32 2.11C11.46 2.13 10.65 2.45 10 3M5 12C2.24 12 0 14.24 0 17S2.24 22 5 22 10 19.76 10 17 7.76 12 5 12M5 20.5C3.07 20.5 1.5 18.93 1.5 17S3.07 13.5 5 13.5 8.5 15.07 8.5 17 6.93 20.5 5 20.5M19 12C16.24 12 14 14.24 14 17S16.24 22 19 22 24 19.76 24 17 21.76 12 19 12M19 20.5C17.07 20.5 15.5 18.93 15.5 17S17.07 13.5 19 13.5 22.5 15.07 22.5 17 20.93 20.5 19 20.5M5.32 11H1C.448 11 0 10.55 0 10S.448 9 1 9H5.05C5.03 9.16 5 9.33 5 9.5C5 10.03 5.12 10.54 5.32 11M6 7H2C1.45 7 1 6.55 1 6S1.45 5 2 5H7.97L6.09 6.87C6.05 6.91 6 6.96 6 7Z";
var mdiBillboard = "M20 22H18V17H20M6 22H4V17H6M23 4V13A2 2 0 0 1 21 15H3A2 2 0 0 1 1 13V4A2 2 0 0 1 3 2H21A2 2 0 0 1 23 4M21 4H3V13H21M20 6H15V8H20M18 9H15V11H18M14 11H4L6.73 7.36L8.73 10.09L9.46 9.55L8.2 7.82L9.91 5.55Z";
var mdiBilliards = "M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9A2,2 0 0,0 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15A2,2 0 0,0 11,17M12,1C5.92,1 1,5.92 1,12C1,18.08 5.92,23 12,23C18.08,23 23,18.08 23,12C23,5.92 18.08,1 12,1M12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19Z";
var mdiBilliardsRack = "M20.31,16.44L14.54,6.47C13.72,5.04 11.89,4.55 10.46,5.38C10,5.64 9.63,6 9.36,6.47L3.6,16.44C2.77,17.87 3.26,19.69 4.69,20.5C5.14,20.78 5.65,20.92 6.18,20.92H17.73C19.38,20.91 20.72,19.57 20.71,17.92C20.71,17.4 20.57,16.89 20.31,16.44M5.37,17.43L11.11,7.47C11.38,7 12,6.82 12.46,7.1C12.62,7.18 12.75,7.31 12.84,7.47L18.58,17.43C18.85,17.91 18.69,18.5 18.21,18.79C18.06,18.88 17.89,18.93 17.72,18.93H6.21C5.66,18.92 5.21,18.47 5.22,17.92C5.22,17.75 5.26,17.58 5.35,17.43H5.37M11.97,13.45C10.87,13.45 10,12.56 10,11.46C10,10.35 10.87,9.46 11.97,9.46A2,2 0 0,1 13.97,11.46C13.97,12.56 13.07,13.45 11.95,13.45H11.97M9.46,17.93C8.36,17.93 7.47,17.04 7.47,15.94C7.47,14.84 8.36,13.95 9.46,13.95C10.56,13.95 11.46,14.84 11.46,15.94C11.46,17.04 10.56,17.93 9.46,17.93M14.44,17.93A2,2 0 0,1 12.45,15.94A2,2 0 0,1 14.44,13.95C15.54,13.95 16.44,14.84 16.44,15.94C16.44,17.04 15.54,17.93 14.44,17.93Z";
var mdiBinoculars = "M11,6H13V13H11V6M9,20A1,1 0 0,1 8,21H5A1,1 0 0,1 4,20V15L6,6H10V13A1,1 0 0,1 9,14V20M10,5H7V3H10V5M15,20V14A1,1 0 0,1 14,13V6H18L20,15V20A1,1 0 0,1 19,21H16A1,1 0 0,1 15,20M14,5V3H17V5H14Z";
var mdiBio = "M17,12H20A2,2 0 0,1 22,14V17A2,2 0 0,1 20,19H17A2,2 0 0,1 15,17V14A2,2 0 0,1 17,12M17,14V17H20V14H17M2,7H7A2,2 0 0,1 9,9V11A2,2 0 0,1 7,13A2,2 0 0,1 9,15V17A2,2 0 0,1 7,19H2V13L2,7M4,9V12H7V9H4M4,17H7V14H4V17M11,13H13V19H11V13M11,9H13V11H11V9Z";
var mdiBiohazard = "M23,16.06C23,16.29 23,16.5 22.96,16.7C22.78,14.14 20.64,12.11 18,12.11C17.63,12.11 17.27,12.16 16.92,12.23C16.96,12.5 17,12.73 17,13C17,15.35 15.31,17.32 13.07,17.81C13.42,20.05 15.31,21.79 17.65,21.96C17.43,22 17.22,22 17,22C14.92,22 13.07,20.94 12,19.34C10.93,20.94 9.09,22 7,22C6.78,22 6.57,22 6.35,21.96C8.69,21.79 10.57,20.06 10.93,17.81C8.68,17.32 7,15.35 7,13C7,12.73 7.04,12.5 7.07,12.23C6.73,12.16 6.37,12.11 6,12.11C3.36,12.11 1.22,14.14 1.03,16.7C1,16.5 1,16.29 1,16.06C1,12.85 3.59,10.24 6.81,10.14C6.3,9.27 6,8.25 6,7.17C6,4.94 7.23,3 9.06,2C7.81,2.9 7,4.34 7,6C7,7.35 7.56,8.59 8.47,9.5C9.38,8.59 10.62,8.04 12,8.04C13.37,8.04 14.62,8.59 15.5,9.5C16.43,8.59 17,7.35 17,6C17,4.34 16.18,2.9 14.94,2C16.77,3 18,4.94 18,7.17C18,8.25 17.7,9.27 17.19,10.14C20.42,10.24 23,12.85 23,16.06M9.27,10.11C10.05,10.62 11,10.92 12,10.92C13,10.92 13.95,10.62 14.73,10.11C14,9.45 13.06,9.03 12,9.03C10.94,9.03 10,9.45 9.27,10.11M12,14.47C12.82,14.47 13.5,13.8 13.5,13A1.5,1.5 0 0,0 12,11.5A1.5,1.5 0 0,0 10.5,13C10.5,13.8 11.17,14.47 12,14.47M10.97,16.79C10.87,14.9 9.71,13.29 8.05,12.55C8.03,12.7 8,12.84 8,13C8,14.82 9.27,16.34 10.97,16.79M15.96,12.55C14.29,13.29 13.12,14.9 13,16.79C14.73,16.34 16,14.82 16,13C16,12.84 15.97,12.7 15.96,12.55Z";
var mdiBird = "M23 11.5L19.95 10.37C19.69 9.22 19.04 8.56 19.04 8.56C17.4 6.92 14.75 6.92 13.11 8.56L11.63 10.04L5 3C4 7 5 11 7.45 14.22L2 19.5C2 19.5 10.89 21.5 16.07 17.45C18.83 15.29 19.45 14.03 19.84 12.7L23 11.5M17.71 11.72C17.32 12.11 16.68 12.11 16.29 11.72C15.9 11.33 15.9 10.7 16.29 10.31C16.68 9.92 17.32 9.92 17.71 10.31C18.1 10.7 18.1 11.33 17.71 11.72Z";
var mdiBitbucket = "M2.65 3C2.3 3 2 3.3 2 3.65C2 3.69 2 3.73 2 3.77L4.73 20.27C4.8 20.69 5.16 21 5.58 21H18.63C18.94 21 19.22 20.78 19.27 20.46L22 3.77C22.05 3.42 21.81 3.09 21.46 3.04C21.43 3.03 21.39 3.03 21.35 3.03L2.65 3M14.1 14.95H9.94L8.81 9.07H15.11L14.1 14.95Z";
var mdiBitcoin = "M14.24 10.56C13.93 11.8 12 11.17 11.4 11L11.95 8.82C12.57 9 14.56 9.26 14.24 10.56M11.13 12.12L10.53 14.53C11.27 14.72 13.56 15.45 13.9 14.09C14.26 12.67 11.87 12.3 11.13 12.12M21.7 14.42C20.36 19.78 14.94 23.04 9.58 21.7C4.22 20.36 .963 14.94 2.3 9.58C3.64 4.22 9.06 .964 14.42 2.3C19.77 3.64 23.03 9.06 21.7 14.42M14.21 8.05L14.66 6.25L13.56 6L13.12 7.73C12.83 7.66 12.54 7.59 12.24 7.53L12.68 5.76L11.59 5.5L11.14 7.29C10.9 7.23 10.66 7.18 10.44 7.12L10.44 7.12L8.93 6.74L8.63 7.91C8.63 7.91 9.45 8.1 9.43 8.11C9.88 8.22 9.96 8.5 9.94 8.75L8.71 13.68C8.66 13.82 8.5 14 8.21 13.95C8.22 13.96 7.41 13.75 7.41 13.75L6.87 15L8.29 15.36C8.56 15.43 8.82 15.5 9.08 15.56L8.62 17.38L9.72 17.66L10.17 15.85C10.47 15.93 10.76 16 11.04 16.08L10.59 17.87L11.69 18.15L12.15 16.33C14 16.68 15.42 16.54 16 14.85C16.5 13.5 16 12.7 15 12.19C15.72 12 16.26 11.55 16.41 10.57C16.61 9.24 15.59 8.53 14.21 8.05Z";
var mdiBlackMesa = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.39 5.05,16.53 6.71,18H9V12H17L19.15,15.59C19.69,14.5 20,13.29 20,12A8,8 0 0,0 12,4Z";
var mdiBlender = "M19,5H17.8L18,2H4L5,4H6L6.94,16.19L5,22H19L17.06,16.17L17.2,14H19C20.3,14 21,12.97 21,12V7C21,5.7 19.97,5 19,5M12,20A1.5,1.5 0 0,1 10.5,18.5A1.5,1.5 0 0,1 12,17A1.5,1.5 0 0,1 13.5,18.5A1.5,1.5 0 0,1 12,20M15.13,15H8.85L8.7,13H13V12H8.62L8.47,10H13V9H8.39L8.24,7H13V6H8.16L8,4H15.86L15.13,15M19,12H17.33L17.67,7H19V12Z";
var mdiBlenderSoftware = "M12.58,3.12V3.13C12.27,3.13 11.96,3.22 11.71,3.39C11.21,3.74 11.15,4.32 11.6,4.69L14.46,7L5.73,7.03H5.72C5,7.03 4.3,7.5 4.16,8.1C4,8.71 4.5,9.22 5.26,9.22L9.69,9.21L1.76,15.3C1,15.87 0.77,16.82 1.24,17.42C1.72,18.03 2.73,18.03 3.5,17.42L7.8,13.89C7.8,13.89 7.73,14.37 7.74,14.65C7.74,14.94 7.84,15.5 7.97,15.93C8.26,16.86 8.75,17.71 9.43,18.46C10.13,19.23 11,19.85 12,20.29C13.03,20.76 14.17,21 15.34,21C16.5,21 17.65,20.75 18.69,20.28C19.69,19.84 20.55,19.21 21.25,18.44C21.93,17.69 22.42,16.83 22.71,15.91C22.85,15.44 22.94,14.97 23,14.5C23,14.03 23,13.56 22.94,13.09C22.81,12.18 22.5,11.32 22,10.54C21.56,9.83 21,9.2 20.31,8.67V8.67L13.42,3.38C13.19,3.21 12.89,3.12 12.58,3.12M15.34,9.21C16.5,9.21 17.59,9.59 18.46,10.29C18.9,10.65 19.25,11.07 19.5,11.54C19.77,12 19.94,12.55 20,13.11C20.04,13.67 19.96,14.23 19.77,14.77C19.57,15.31 19.25,15.81 18.82,16.26C17.93,17.16 16.69,17.68 15.34,17.68C14,17.68 12.75,17.17 11.86,16.27C11.43,15.83 11.11,15.32 10.91,14.78C10.72,14.25 10.64,13.69 10.69,13.12C10.74,12.56 10.91,12.03 11.17,11.55C11.43,11.08 11.79,10.66 12.23,10.3C13.09,9.59 14.19,9.21 15.34,9.21M15.44,10.61C14.66,10.61 13.94,10.89 13.41,11.34C12.87,11.8 12.5,12.44 12.47,13.18C12.43,13.93 12.73,14.63 13.26,15.15C13.8,15.68 14.58,16 15.44,16C16.3,16 17.07,15.68 17.62,15.15C18.15,14.63 18.45,13.93 18.41,13.18C18.37,12.44 18,11.8 17.47,11.34C16.94,10.89 16.22,10.61 15.44,10.61Z";
var mdiBlinds = "M3,2H21A1,1 0 0,1 22,3V5A1,1 0 0,1 21,6H20V13A1,1 0 0,1 19,14H13V16.17C14.17,16.58 15,17.69 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.69 9.83,16.58 11,16.17V14H5A1,1 0 0,1 4,13V6H3A1,1 0 0,1 2,5V3A1,1 0 0,1 3,2M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z";
var mdiBlindsOpen = "M3 2H21C21.55 2 22 2.45 22 3V5C22 5.55 21.55 6 21 6H20V7C20 7.55 19.55 8 19 8H13V10.17C14.17 10.58 15 11.7 15 13C15 14.66 13.66 16 12 16C10.34 16 9 14.66 9 13C9 11.69 9.84 10.58 11 10.17V8H5C4.45 8 4 7.55 4 7V6H3C2.45 6 2 5.55 2 5V3C2 2.45 2.45 2 3 2M12 12C11.45 12 11 12.45 11 13C11 13.55 11.45 14 12 14C12.55 14 13 13.55 13 13C13 12.45 12.55 12 12 12Z";
var mdiBlockHelper = "M12,0A12,12 0 0,1 24,12A12,12 0 0,1 12,24A12,12 0 0,1 0,12A12,12 0 0,1 12,0M12,2A10,10 0 0,0 2,12C2,14.4 2.85,16.6 4.26,18.33L18.33,4.26C16.6,2.85 14.4,2 12,2M12,22A10,10 0 0,0 22,12C22,9.6 21.15,7.4 19.74,5.67L5.67,19.74C7.4,21.15 9.6,22 12,22Z";
var mdiBlogger = "M12.5 10H10C9.45 10 9 9.55 9 9C9 8.45 9.45 8 10 8H12.5C13.05 8 13.5 8.45 13.5 9C13.5 9.55 13.05 10 12.5 10M15 14C15 13.45 14.55 13 14 13H10C9.45 13 9 13.45 9 14C9 14.55 9.45 15 10 15H14C14.55 15 15 14.55 15 14M22 4V20C22 21.11 21.11 22 20 22H4C2.89 22 2 21.11 2 20V4C2 2.89 2.89 2 4 2H20C21.11 2 22 2.89 22 4M18 12C18 12 18 11 17 11C16.05 11.03 16 10 16 10L16 8C16 6.34 14.66 5 13 5H9C7.34 5 6 6.34 6 8V15C6 16.66 7.34 18 9 18H15C16.66 18 18 16.66 18 15L18 12Z";
var mdiBloodBag = "M21,7C20,7 20,6 20,6V5H18V7H16V6C16,4.27 14.75,1 10,1C5.25,1 4,4.27 4,6V19C4,19.33 3.9,21 2,21V23C4.93,23 6,20.61 6,19V6C6,5.88 6.05,3 10,3C13.83,3 14,5.7 14,6V7H12V5H10V6C10,6 10,7 9,7C8,7 8,8 8,8V20C8,20 8,22 13,22C13.24,22 14.13,22 17,22C22,22 22,20 22,20V8C22,8 22,7 21,7M15,19.4A3,3 0 0,1 12,16.4C12,14.4 15,11 15,11C15,11 18,14.4 18,16.4A3,3 0 0,1 15,19.4Z";
var mdiBluetooth = "M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12L17.71,7.71Z";
var mdiBluetoothAudio = "M12.88,16.29L11,18.17V14.41M11,5.83L12.88,7.71L11,9.58M15.71,7.71L10,2H9V9.58L4.41,5L3,6.41L8.59,12L3,17.58L4.41,19L9,14.41V22H10L15.71,16.29L11.41,12M19.53,6.71L18.26,8C18.89,9.18 19.25,10.55 19.25,12C19.25,13.45 18.89,14.82 18.26,16L19.46,17.22C20.43,15.68 21,13.87 21,11.91C21,10 20.46,8.23 19.53,6.71M14.24,12L16.56,14.33C16.84,13.6 17,12.82 17,12C17,11.18 16.84,10.4 16.57,9.68L14.24,12Z";
var mdiBluetoothConnect = "M19,10L17,12L19,14L21,12M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12M7,12L5,10L3,12L5,14L7,12Z";
var mdiBluetoothOff = "M13,5.83L14.88,7.71L13.28,9.31L14.69,10.72L17.71,7.7L12,2H11V7.03L13,9.03M5.41,4L4,5.41L10.59,12L5,17.59L6.41,19L11,14.41V22H12L16.29,17.71L18.59,20L20,18.59M13,18.17V14.41L14.88,16.29";
var mdiBluetoothSettings = "M14.88,14.29L13,16.17V12.41L14.88,14.29M13,3.83L14.88,5.71L13,7.59M17.71,5.71L12,0H11V7.59L6.41,3L5,4.41L10.59,10L5,15.59L6.41,17L11,12.41V20H12L17.71,14.29L13.41,10L17.71,5.71M15,24H17V22H15M7,24H9V22H7M11,24H13V22H11V24Z";
var mdiBluetoothTransfer = "M14.71,7.71L10.41,12L14.71,16.29L9,22H8V14.41L3.41,19L2,17.59L7.59,12L2,6.41L3.41,5L8,9.59V2H9L14.71,7.71M10,5.83V9.59L11.88,7.71L10,5.83M11.88,16.29L10,14.41V18.17L11.88,16.29M22,8H20V11H18V8H16L19,4L22,8M22,16L19,20L16,16H18V13H20V16H22Z";
var mdiBlur = "M14,8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 14,11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5M14,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,14A1.5,1.5 0 0,0 14,12.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M10,8.5A1.5,1.5 0 0,0 8.5,10A1.5,1.5 0 0,0 10,11.5A1.5,1.5 0 0,0 11.5,10A1.5,1.5 0 0,0 10,8.5M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18A1,1 0 0,0 14,17M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5M18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13M10,12.5A1.5,1.5 0 0,0 8.5,14A1.5,1.5 0 0,0 10,15.5A1.5,1.5 0 0,0 11.5,14A1.5,1.5 0 0,0 10,12.5M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10A1,1 0 0,0 6,9M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13Z";
var mdiBlurLinear = "M13,17A1,1 0 0,0 14,16A1,1 0 0,0 13,15A1,1 0 0,0 12,16A1,1 0 0,0 13,17M13,13A1,1 0 0,0 14,12A1,1 0 0,0 13,11A1,1 0 0,0 12,12A1,1 0 0,0 13,13M13,9A1,1 0 0,0 14,8A1,1 0 0,0 13,7A1,1 0 0,0 12,8A1,1 0 0,0 13,9M17,12.5A0.5,0.5 0 0,0 17.5,12A0.5,0.5 0 0,0 17,11.5A0.5,0.5 0 0,0 16.5,12A0.5,0.5 0 0,0 17,12.5M17,8.5A0.5,0.5 0 0,0 17.5,8A0.5,0.5 0 0,0 17,7.5A0.5,0.5 0 0,0 16.5,8A0.5,0.5 0 0,0 17,8.5M3,3V5H21V3M17,16.5A0.5,0.5 0 0,0 17.5,16A0.5,0.5 0 0,0 17,15.5A0.5,0.5 0 0,0 16.5,16A0.5,0.5 0 0,0 17,16.5M9,17A1,1 0 0,0 10,16A1,1 0 0,0 9,15A1,1 0 0,0 8,16A1,1 0 0,0 9,17M5,13.5A1.5,1.5 0 0,0 6.5,12A1.5,1.5 0 0,0 5,10.5A1.5,1.5 0 0,0 3.5,12A1.5,1.5 0 0,0 5,13.5M5,9.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 3.5,8A1.5,1.5 0 0,0 5,9.5M3,21H21V19H3M9,9A1,1 0 0,0 10,8A1,1 0 0,0 9,7A1,1 0 0,0 8,8A1,1 0 0,0 9,9M9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13M5,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,14.5A1.5,1.5 0 0,0 3.5,16A1.5,1.5 0 0,0 5,17.5Z";
var mdiBlurOff = "M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M2.5,5.27L6.28,9.05L6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10C7,9.9 6.97,9.81 6.94,9.72L9.75,12.53C9.04,12.64 8.5,13.26 8.5,14A1.5,1.5 0 0,0 10,15.5C10.74,15.5 11.36,14.96 11.47,14.25L14.28,17.06C14.19,17.03 14.1,17 14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18C15,17.9 14.97,17.81 14.94,17.72L18.72,21.5L20,20.23L3.77,4L2.5,5.27M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7M18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11M18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M13.8,11.5H14A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5A1.5,1.5 0 0,0 12.5,10V10.2C12.61,10.87 13.13,11.39 13.8,11.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7Z";
var mdiBlurRadial = "M14,13A1,1 0 0,0 13,14A1,1 0 0,0 14,15A1,1 0 0,0 15,14A1,1 0 0,0 14,13M14,16.5A0.5,0.5 0 0,0 13.5,17A0.5,0.5 0 0,0 14,17.5A0.5,0.5 0 0,0 14.5,17A0.5,0.5 0 0,0 14,16.5M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,9.5A0.5,0.5 0 0,0 16.5,10A0.5,0.5 0 0,0 17,10.5A0.5,0.5 0 0,0 17.5,10A0.5,0.5 0 0,0 17,9.5M17,13.5A0.5,0.5 0 0,0 16.5,14A0.5,0.5 0 0,0 17,14.5A0.5,0.5 0 0,0 17.5,14A0.5,0.5 0 0,0 17,13.5M14,7.5A0.5,0.5 0 0,0 14.5,7A0.5,0.5 0 0,0 14,6.5A0.5,0.5 0 0,0 13.5,7A0.5,0.5 0 0,0 14,7.5M14,9A1,1 0 0,0 13,10A1,1 0 0,0 14,11A1,1 0 0,0 15,10A1,1 0 0,0 14,9M10,7.5A0.5,0.5 0 0,0 10.5,7A0.5,0.5 0 0,0 10,6.5A0.5,0.5 0 0,0 9.5,7A0.5,0.5 0 0,0 10,7.5M7,13.5A0.5,0.5 0 0,0 6.5,14A0.5,0.5 0 0,0 7,14.5A0.5,0.5 0 0,0 7.5,14A0.5,0.5 0 0,0 7,13.5M10,16.5A0.5,0.5 0 0,0 9.5,17A0.5,0.5 0 0,0 10,17.5A0.5,0.5 0 0,0 10.5,17A0.5,0.5 0 0,0 10,16.5M7,9.5A0.5,0.5 0 0,0 6.5,10A0.5,0.5 0 0,0 7,10.5A0.5,0.5 0 0,0 7.5,10A0.5,0.5 0 0,0 7,9.5M10,13A1,1 0 0,0 9,14A1,1 0 0,0 10,15A1,1 0 0,0 11,14A1,1 0 0,0 10,13M10,9A1,1 0 0,0 9,10A1,1 0 0,0 10,11A1,1 0 0,0 11,10A1,1 0 0,0 10,9Z";
var mdiBolnisiCross = "M22,7L21.5,6.5C19.93,8 18.47,9.4 16.93,10.18C15.5,10.91 14.44,10.91 13,11C13.09,9.56 13.09,8.5 13.82,7.07C14.6,5.53 16,4.07 17.5,2.5L17,2C15.32,3.23 13.64,3.83 12,3.83C10.36,3.83 8.68,3.23 7,2L6.5,2.5C8,4.07 9.4,5.53 10.18,7.07C10.91,8.5 10.91,9.56 11,11C9.56,10.91 8.5,10.91 7.07,10.18C5.53,9.4 4.06,8 2.5,6.5L2,7C3.23,8.68 3.83,10.36 3.83,12C3.83,13.64 3.23,15.32 2,17L2.5,17.5C4.07,16 5.53,14.6 7.07,13.82C8.5,13.09 9.56,13.09 11,13C10.91,14.44 10.91,15.5 10.18,16.93C9.4,18.47 8,19.93 6.5,21.5L7,22C8.68,20.77 10.36,20.17 12,20.17C13.64,20.17 15.32,20.77 17,22L17.5,21.5C16,19.93 14.6,18.47 13.82,16.93C13.09,15.5 13.09,14.44 13,13C14.44,13.09 15.5,13.09 16.93,13.82C18.47,14.6 19.93,16 21.5,17.5L22,17C20.77,15.32 20.17,13.64 20.17,12C20.17,10.36 20.77,8.68 22,7Z";
var mdiBolt = "M14,17.7V21H10V20.3L14,17.7M17,3H7V6H17V3M15,7L14,7.7V7H10V10.3L9,11V12L15,8.1V7M15,11L14,11.7V9.7L10,12.4V14.4L9,15V16L15,12.1V11M15,15L14,15.7V13.7L10,16.4V18.4L9,19V20L15,16.1V15Z";
var mdiBomb = "M11.25,6A3.25,3.25 0 0,1 14.5,2.75A3.25,3.25 0 0,1 17.75,6C17.75,6.42 18.08,6.75 18.5,6.75C18.92,6.75 19.25,6.42 19.25,6V5.25H20.75V6A2.25,2.25 0 0,1 18.5,8.25A2.25,2.25 0 0,1 16.25,6A1.75,1.75 0 0,0 14.5,4.25A1.75,1.75 0 0,0 12.75,6H14V7.29C16.89,8.15 19,10.83 19,14A7,7 0 0,1 12,21A7,7 0 0,1 5,14C5,10.83 7.11,8.15 10,7.29V6H11.25M22,6H24V7H22V6M19,4V2H20V4H19M20.91,4.38L22.33,2.96L23.04,3.67L21.62,5.09L20.91,4.38Z";
var mdiBombOff = "M14.5,2.75C12.7,2.75 11.25,4.2 11.25,6H10V7.29C9.31,7.5 8.67,7.81 8.08,8.2L17.79,17.91C18.58,16.76 19,15.39 19,14C19,10.83 16.89,8.15 14,7.29V6H12.75A1.75,1.75 0 0,1 14.5,4.25A1.75,1.75 0 0,1 16.25,6A2.25,2.25 0 0,0 18.5,8.25C19.74,8.25 20.74,7.24 20.74,6V5.25H19.25V6C19.25,6.42 18.91,6.75 18.5,6.75C18.08,6.75 17.75,6.42 17.75,6C17.75,4.2 16.29,2.75 14.5,2.75M3.41,6.36L2,7.77L5.55,11.32C5.2,12.14 5,13.04 5,14C5,17.86 8.13,21 12,21C12.92,21 13.83,20.81 14.68,20.45L18.23,24L19.64,22.59L3.41,6.36Z";
var mdiBone = "M8,14A3,3 0 0,1 5,17A3,3 0 0,1 2,14C2,13.23 2.29,12.53 2.76,12C2.29,11.47 2,10.77 2,10A3,3 0 0,1 5,7A3,3 0 0,1 8,10C9.33,10.08 10.67,10.17 12,10.17C13.33,10.17 14.67,10.08 16,10A3,3 0 0,1 19,7A3,3 0 0,1 22,10C22,10.77 21.71,11.47 21.24,12C21.71,12.53 22,13.23 22,14A3,3 0 0,1 19,17A3,3 0 0,1 16,14C14.67,13.92 13.33,13.83 12,13.83C10.67,13.83 9.33,13.92 8,14Z";
var mdiBook = "M18,22A2,2 0 0,0 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18Z";
var mdiBookAccount = "M18 2H12V9L9.5 7.5L7 9V2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V4A2 2 0 0 0 18 2M14 12A2 2 0 1 1 12 14A2 2 0 0 1 14 12M18 20H10V19C10 17.67 12.67 17 14 17S18 17.67 18 19Z";
var mdiBookAccountOutline = "M18 2A2 2 0 0 1 20 4V20A2 2 0 0 1 18 22H6A2 2 0 0 1 4 20V4A2 2 0 0 1 6 2H18M18 4H13V9L10.5 6.7L8 9V4H6V20H18M13 11A2 2 0 1 1 11 13A2 2 0 0 1 13 11M17 19H9V18C9 16.67 11.67 16 13 16S17 16.67 17 18V19";
var mdiBookAlert = "M18 4V20C18 21.11 17.11 22 16 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2H5V9L7.5 7.5L10 9V2H16C17.1 2 18 2.89 18 4M20 17H22V15H20V17M20 7V13H22V7H20Z";
var mdiBookAlertOutline = "M16 2H4C2.9 2 2 2.9 2 4V20C2 21.11 2.9 22 4 22H16C17.11 22 18 21.11 18 20V4C18 2.9 17.11 2 16 2M16 20H4V4H6V12L8.5 9.75L11 12V4H16V20M20 15H22V17H20V15M22 7V13H20V7H22Z";
var mdiBookAlphabet = "M5.81,2C4.83,2.09 4,3 4,4V20C4,21.05 4.95,22 6,22H18C19.05,22 20,21.05 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6C5.94,2 5.87,2 5.81,2M12,13H13A1,1 0 0,1 14,14V18H13V16H12V18H11V14A1,1 0 0,1 12,13M12,14V15H13V14H12M15,15H18V16L16,19H18V20H15V19L17,16H15V15Z";
var mdiBookArrowDown = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M20 20V16H18V20H16L19 23L22 20H20Z";
var mdiBookArrowDownOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M20 20V16H18V20H16L19 23L22 20H20Z";
var mdiBookArrowLeft = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M18 18V16L15 19L18 22V20H22V18H18Z";
var mdiBookArrowLeftOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M18 18V16L15 19L18 22V20H22V18H18Z";
var mdiBookArrowRight = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M23 19L20 16V18H16V20H20V22L23 19Z";
var mdiBookArrowRightOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M23 19L20 16V18H16V20H20V22L23 19Z";
var mdiBookArrowUp = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M19 15L16 18H18V22H20V18H22L19 15Z";
var mdiBookArrowUpOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M19 15L16 18H18V22H20V18H22L19 15Z";
var mdiBookCancel = "M12 18.5C12 19.79 12.39 21 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.18C19.5 12.07 19 12 18.5 12C14.91 12 12 14.91 12 18.5M23 18.5C23 21 21 23 18.5 23S14 21 14 18.5 16 14 18.5 14 23 16 23 18.5M20 21.08L15.92 17C15.65 17.42 15.5 17.94 15.5 18.5C15.5 20.16 16.84 21.5 18.5 21.5C19.06 21.5 19.58 21.35 20 21.08M21.5 18.5C21.5 16.84 20.16 15.5 18.5 15.5C17.94 15.5 17.42 15.65 17 15.92L21.08 20C21.35 19.58 21.5 19.06 21.5 18.5Z";
var mdiBookCancelOutline = "M12.18 20C12.36 20.72 12.65 21.39 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.18C19.5 12.07 19 12 18.5 12C18.33 12 18.17 12 18 12.03V4H13V12L10.5 9.75L8 12V4H6V20H12.18M23 18.5C23 21 21 23 18.5 23S14 21 14 18.5 16 14 18.5 14 23 16 23 18.5M20 21.08L15.92 17C15.65 17.42 15.5 17.94 15.5 18.5C15.5 20.16 16.84 21.5 18.5 21.5C19.06 21.5 19.58 21.35 20 21.08M21.5 18.5C21.5 16.84 20.16 15.5 18.5 15.5C17.94 15.5 17.42 15.65 17 15.92L21.08 20C21.35 19.58 21.5 19.06 21.5 18.5Z";
var mdiBookCheck = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M6 22C4.89 22 4 21.1 4 20V4C4 2.89 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.34C19.37 13.12 18.7 13 18 13C14.69 13 12 15.69 12 19C12 20.09 12.29 21.12 12.8 22H6Z";
var mdiBookCheckOutline = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M18 2C19.1 2 20 2.9 20 4V13.34C19.37 13.12 18.7 13 18 13V4H13V12L10.5 9.75L8 12V4H6V20H12.08C12.2 20.72 12.45 21.39 12.8 22H6C4.9 22 4 21.1 4 20V4C4 2.9 4.9 2 6 2H18Z";
var mdiBookClock = "M16.5 17.25L19.36 18.94L18.61 20.16L15 18V13H16.5V17.25M23 17C23 20.87 19.87 24 16 24C14.09 24 12.37 23.24 11.11 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V11.26C21.81 12.53 23 14.62 23 17M21 17C21 14.24 18.76 12 16 12S11 14.24 11 17 13.24 22 16 22 21 19.76 21 17Z";
var mdiBookClockOutline = "M20 11.26V4C20 2.9 19.11 2 18 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H11.11C12.37 23.24 14.09 24 16 24C19.87 24 23 20.87 23 17C23 14.62 21.81 12.53 20 11.26M18 4V10.29C17.37 10.11 16.7 10 16 10C14.93 10 13.91 10.25 13 10.68V4H18M6 4H8V12L10.5 9.75L12.1 11.19C10.23 12.45 9 14.58 9 17C9 18.08 9.25 19.09 9.68 20H6V4M16 22C13.24 22 11 19.76 11 17S13.24 12 16 12 21 14.24 21 17 18.76 22 16 22M16.5 17.25L19.36 18.94L18.61 20.16L15 18V13H16.5V17.25Z";
var mdiBookCog = "M12 19C12 20.08 12.25 21.09 12.68 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.08C19.67 12.03 19.34 12 19 12C15.13 12 12 15.13 12 19M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z";
var mdiBookCogOutline = "M18 4H13V12L10.5 9.75L8 12V4H6V20H12.08C12.18 20.71 12.39 21.38 12.69 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.08C19.67 12.03 19.34 12 19 12C18.66 12 18.33 12.03 18 12.08V4M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z";
var mdiBookCross = "M5.81,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20C20,21.05 19.05,22 18,22H6C4.95,22 4,21.05 4,20V4C4,3 4.83,2.09 5.81,2M13,10V13H10V15H13V20H15V15H18V13H15V10H13Z";
var mdiBookEdit = "M19.39 10.74L11 19.13V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V10.3C19.78 10.42 19.57 10.56 19.39 10.74M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47Z";
var mdiBookEditOutline = "M6 20H11V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V10.3C19.78 10.42 19.57 10.56 19.39 10.74L18 12.13V4H13V12L10.5 9.75L8 12V4H6V20M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96Z";
var mdiBookEducation = "M8.82 17L13 19.28V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.54L18.5 11.72L8.82 17M24 17L18.5 14L13 17L18.5 20L24 17M15 19.09V21.09L18.5 23L22 21.09V19.09L18.5 21L15 19.09Z";
var mdiBookEducationOutline = "M6 20H13V22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.54L18.5 11.72L18 12V4H13V12L10.5 9.75L8 12V4H6V20M24 17L18.5 14L13 17L18.5 20L24 17M15 19.09V21.09L18.5 23L22 21.09V19.09L18.5 21L15 19.09Z";
var mdiBookInformationVariant = "M18 2H12V9L9.5 7.5L7 9V2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.89 19.1 2 18 2M17.68 18.41C17.57 18.5 16.47 19.25 16.05 19.5C15.63 19.79 14 20.72 14.26 18.92C14.89 15.28 16.11 13.12 14.65 14.06C14.27 14.29 14.05 14.43 13.91 14.5C13.78 14.61 13.79 14.6 13.68 14.41S13.53 14.23 13.67 14.13C13.67 14.13 15.9 12.34 16.72 12.28C17.5 12.21 17.31 13.17 17.24 13.61C16.78 15.46 15.94 18.15 16.07 18.54C16.18 18.93 17 18.31 17.44 18C17.44 18 17.5 17.93 17.61 18.05C17.72 18.22 17.83 18.3 17.68 18.41M16.97 11.06C16.4 11.06 15.94 10.6 15.94 10.03C15.94 9.46 16.4 9 16.97 9C17.54 9 18 9.46 18 10.03C18 10.6 17.54 11.06 16.97 11.06Z";
var mdiBookLock = "M14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V10.11C19.68 10.04 19.34 10 19 10C16.4 10 14.2 12.06 14.2 14.5M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z";
var mdiBookLockOpen = "M14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V9.11C19.68 9.04 19.34 9 19 9C16.4 9 14.2 11.06 14.2 13.5M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z";
var mdiBookLockOpenOutline = "M13 20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V9.11C19.68 9.04 19.34 9 19 9S18.32 9.04 18 9.11V4H13V12L10.5 9.75L8 12V4H6V20H13V20.7M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z";
var mdiBookLockOutline = "M13 20.7C13 21.16 13.1 21.6 13.27 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V10.11C19.68 10.04 19.34 10 19 10S18.32 10.04 18 10.11V4H13V12L10.5 9.75L8 12V4H6V20H13V20.7M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z";
var mdiBookMarker = "M13 15.5C13 17.78 14.7 20.41 15.91 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V10.22C19.5 10.08 19 10 18.5 10C15.5 10 13 12.5 13 15.5M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z";
var mdiBookMarkerOutline = "M14.55 20C15 20.76 15.5 21.44 15.91 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V10.22C19.5 10.08 19 10 18.5 10C18.33 10 18.17 10 18 10.03V4H13V12L10.5 9.75L8 12V4H6V20H14.55M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z";
var mdiBookMinus = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M15 18V20H23V18H15Z";
var mdiBookMinusMultiple = "M13.09 20H5V6H3V20C3 21.11 3.9 22 5 22H13.81C13.44 21.39 13.2 20.71 13.09 20M19 2H14V7L12 5.5L10 7V2H9C7.9 2 7 2.9 7 4V16C7 17.11 7.9 18 9 18H13.09C13.64 14.73 16.74 12.53 20 13.08C20.34 13.14 20.68 13.23 21 13.34V4C21 2.9 20.11 2 19 2M23 18V20H15V18H23Z";
var mdiBookMinusMultipleOutline = "M13.09 20H5V6H3V20C3 21.11 3.9 22 5 22H13.81C13.44 21.39 13.2 20.71 13.09 20M19 2H9C7.9 2 7 2.9 7 4V16C7 17.11 7.9 18 9 18H13.09C13.2 17.29 13.44 16.61 13.81 16H9V4H11V10L13.5 7.75L16 10V4H19V13C19.68 13 20.36 13.11 21 13.34V4C21 2.9 20.11 2 19 2M23 18V20H15V18H23Z";
var mdiBookMinusOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M15 18V20H23V18H15Z";
var mdiBookMultiple = "M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H10V7L12,5.5L14,7V2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z";
var mdiBookMultipleOutline = "M19 2A2 2 0 0 1 21 4V16A2 2 0 0 1 19 18H9A2 2 0 0 1 7 16V4A2 2 0 0 1 9 2H19M19 4H16V10L13.5 7.75L11 10V4H9V16H19M3 20A2 2 0 0 0 5 22H17V20H5V6H3Z";
var mdiBookMusic = "M13 20.5C13 21.03 13.09 21.53 13.26 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V11H16.5V16.11C14.5 16.57 13 18.36 13 20.5M20 13H18.5V18.21C18.19 18.07 17.86 18 17.5 18C16.12 18 15 19.12 15 20.5S16.12 23 17.5 23 20 21.88 20 20.5V15H22V13H20Z";
var mdiBookMusicOutline = "M13 20.5C13 21.03 13.09 21.53 13.26 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V11H18V4H13V12L10.5 9.75L8 12V4H6V20H13.04C13.03 20.17 13 20.33 13 20.5M20 13H18.5V18.21C18.19 18.07 17.86 18 17.5 18C16.12 18 15 19.12 15 20.5S16.12 23 17.5 23 20 21.88 20 20.5V15H22V13H20Z";
var mdiBookOff = "M18.68 2.12L12 8.8V2H18C18.24 2 18.46 2.05 18.68 2.12M9.5 7.5L7 9V2H6C4.89 2 4 2.9 4 4V16.8L11.88 8.93L9.5 7.5M21.61 1.73L1.89 21.46L3.16 22.73L4.54 21.35C4.9 21.75 5.42 22 6 22H18C19.11 22 20 21.11 20 20V5.89L22.89 3L21.61 1.73Z";
var mdiBookOffOutline = "M6 14.8L4 16.8V4C4 2.9 4.89 2 6 2H18C18.24 2 18.47 2.04 18.68 2.12L16.8 4H13V7.8L10.79 10L10.5 9.75L8 12V4H6V14.8M22.89 3L20 5.89V20C20 21.11 19.11 22 18 22H6C5.42 22 4.9 21.75 4.54 21.35L3.16 22.73L1.89 21.46L21.61 1.73L22.89 3M18 7.89L6 19.89V20H18V7.89Z";
var mdiBookOpen = "M13,12H20V13.5H13M13,9.5H20V11H13M13,14.5H20V16H13M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M21,19H12V6H21";
var mdiBookOpenBlankVariant = "M21,5C19.89,4.65 18.67,4.5 17.5,4.5C15.55,4.5 13.45,4.9 12,6C10.55,4.9 8.45,4.5 6.5,4.5C4.55,4.5 2.45,4.9 1,6V20.65C1,20.9 1.25,21.15 1.5,21.15C1.6,21.15 1.65,21.1 1.75,21.1C3.1,20.45 5.05,20 6.5,20C8.45,20 10.55,20.4 12,21.5C13.35,20.65 15.8,20 17.5,20C19.15,20 20.85,20.3 22.25,21.05C22.35,21.1 22.4,21.1 22.5,21.1C22.75,21.1 23,20.85 23,20.6V6C22.4,5.55 21.75,5.25 21,5M21,18.5C19.9,18.15 18.7,18 17.5,18C15.8,18 13.35,18.65 12,19.5V8C13.35,7.15 15.8,6.5 17.5,6.5C18.7,6.5 19.9,6.65 21,7V18.5Z";
var mdiBookOpenOutline = "M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M3,19V6H11V19H3M21,19H13V6H21V19M14,9.5H20V11H14V9.5M14,12H20V13.5H14V12M14,14.5H20V16H14V14.5Z";
var mdiBookOpenPageVariant = "M19 2L14 6.5V17.5L19 13V2M6.5 5C4.55 5 2.45 5.4 1 6.5V21.16C1 21.41 1.25 21.66 1.5 21.66C1.6 21.66 1.65 21.59 1.75 21.59C3.1 20.94 5.05 20.5 6.5 20.5C8.45 20.5 10.55 20.9 12 22C13.35 21.15 15.8 20.5 17.5 20.5C19.15 20.5 20.85 20.81 22.25 21.56C22.35 21.61 22.4 21.59 22.5 21.59C22.75 21.59 23 21.34 23 21.09V6.5C22.4 6.05 21.75 5.75 21 5.5V19C19.9 18.65 18.7 18.5 17.5 18.5C15.8 18.5 13.35 19.15 12 20V6.5C10.55 5.4 8.45 5 6.5 5Z";
var mdiBookOpenPageVariantOutline = "M19 1L14 6V17L19 12.5V1M21 5V18.5C19.9 18.15 18.7 18 17.5 18C15.8 18 13.35 18.65 12 19.5V6C10.55 4.9 8.45 4.5 6.5 4.5C4.55 4.5 2.45 4.9 1 6V20.65C1 20.9 1.25 21.15 1.5 21.15C1.6 21.15 1.65 21.1 1.75 21.1C3.1 20.45 5.05 20 6.5 20C8.45 20 10.55 20.4 12 21.5C13.35 20.65 15.8 20 17.5 20C19.15 20 20.85 20.3 22.25 21.05C22.35 21.1 22.4 21.1 22.5 21.1C22.75 21.1 23 20.85 23 20.6V6C22.4 5.55 21.75 5.25 21 5M10 18.41C8.75 18.09 7.5 18 6.5 18C5.44 18 4.18 18.19 3 18.5V7.13C3.91 6.73 5.14 6.5 6.5 6.5C7.86 6.5 9.09 6.73 10 7.13V18.41Z";
var mdiBookOpenVariant = "M17.5 14.33C18.29 14.33 19.13 14.41 20 14.57V16.07C19.38 15.91 18.54 15.83 17.5 15.83C15.6 15.83 14.11 16.16 13 16.82V15.13C14.17 14.6 15.67 14.33 17.5 14.33M13 12.46C14.29 11.93 15.79 11.67 17.5 11.67C18.29 11.67 19.13 11.74 20 11.9V13.4C19.38 13.24 18.54 13.16 17.5 13.16C15.6 13.16 14.11 13.5 13 14.15M17.5 10.5C15.6 10.5 14.11 10.82 13 11.5V9.84C14.23 9.28 15.73 9 17.5 9C18.29 9 19.13 9.08 20 9.23V10.78C19.26 10.59 18.41 10.5 17.5 10.5M21 18.5V7C19.96 6.67 18.79 6.5 17.5 6.5C15.45 6.5 13.62 7 12 8V19.5C13.62 18.5 15.45 18 17.5 18C18.69 18 19.86 18.16 21 18.5M17.5 4.5C19.85 4.5 21.69 5 23 6V20.56C23 20.68 22.95 20.8 22.84 20.91C22.73 21 22.61 21.08 22.5 21.08C22.39 21.08 22.31 21.06 22.25 21.03C20.97 20.34 19.38 20 17.5 20C15.45 20 13.62 20.5 12 21.5C10.66 20.5 8.83 20 6.5 20C4.84 20 3.25 20.36 1.75 21.07C1.72 21.08 1.68 21.08 1.63 21.1C1.59 21.11 1.55 21.12 1.5 21.12C1.39 21.12 1.27 21.08 1.16 21C1.05 20.89 1 20.78 1 20.65V6C2.34 5 4.18 4.5 6.5 4.5C8.83 4.5 10.66 5 12 6C13.34 5 15.17 4.5 17.5 4.5Z";
var mdiBookOutline = "M18,2A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H18M18,4H13V12L10.5,9.75L8,12V4H6V20H18V4Z";
var mdiBookPlay = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M17 16V22L22 19L17 16Z";
var mdiBookPlayOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M17 16V22L22 19L17 16Z";
var mdiBookPlus = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z";
var mdiBookPlusMultiple = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H14V7L12 5.5L10 7V2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M20 15V18H23V20H20V23H18V20H15V18H18V15Z";
var mdiBookPlusMultipleOutline = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A5.5 5.5 0 0 1 13.81 16H9V4H11V10L13.5 7.75L16 10V4H19V13A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M20 15V18H23V20H20V23H18V20H15V18H18V15Z";
var mdiBookPlusOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z";
var mdiBookRefresh = "M12 18.5C12 19.79 12.39 21 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V12.18C19.5 12.07 19 12 18.5 12C14.91 12 12 14.91 12 18.5M22 18.5V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22Z";
var mdiBookRefreshOutline = "M12.18 20C12.36 20.72 12.65 21.39 13.04 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V12.18C19.5 12.07 19 12 18.5 12C18.33 12 18.17 12 18 12.03V4H13V12L10.5 9.75L8 12V4H6V20H12.18M22 18.5V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22Z";
var mdiBookRemove = "M13 19C13 20.1 13.3 21.12 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.09C19.67 13.04 19.34 13 19 13C15.69 13 13 15.69 13 19M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z";
var mdiBookRemoveMultiple = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H14V7L12 5.5L10 7V2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z";
var mdiBookRemoveMultipleOutline = "M13.09 20H5V6H3V20A2 2 0 0 0 5 22H13.81A5.5 5.5 0 0 1 13.09 20M19 2H9A2 2 0 0 0 7 4V16A2 2 0 0 0 9 18H13.09A5.5 5.5 0 0 1 13.81 16H9V4H11V10L13.5 7.75L16 10V4H19V13A6 6 0 0 1 21 13.34V4A2 2 0 0 0 19 2M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z";
var mdiBookRemoveOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V4H13V12L10.5 9.75L8 12V4H6V20H13.09M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z";
var mdiBookSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M6,22A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V11.81C18.83,10.69 17.25,10 15.5,10A6.5,6.5 0 0,0 9,16.5C9,18.81 10.21,20.85 12.03,22H6Z";
var mdiBookSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M13,4V12L10.5,9.75L8,12V4H6V20H10C10.54,20.81 11.23,21.5 12.03,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H18A2,2 0 0,1 20,4V11.81C19.42,11.26 18.75,10.81 18,10.5V4H13Z";
var mdiBookSettings = "M20 2V18C20 19.11 19.11 20 18 20H6C4.89 20 4 19.11 4 18V2C4 .895 4.89 0 6 0H7V7L9.5 5.5L12 7V0H18C19.1 0 20 .89 20 2M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z";
var mdiBookSettingsOutline = "M18 0H6C4.89 0 4 .895 4 2V18C4 19.11 4.89 20 6 20H18C19.11 20 20 19.11 20 18V2C20 .895 19.11 0 18 0M18 18H6V2H8V10L10.5 7.75L13 10V2H18V18M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22Z";
var mdiBookSync = "M13 17.5C13 19.25 13.69 20.83 14.82 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V11.03C19.84 11 19.67 11 19.5 11C15.91 11 13 13.91 13 17.5M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z";
var mdiBookSyncOutline = "M13.5 20C13.81 20.75 14.26 21.42 14.82 22H6C4.89 22 4 21.11 4 20V4C4 2.9 4.89 2 6 2H18C19.11 2 20 2.9 20 4V11.03C19.84 11 19.67 11 19.5 11C19 11 18.5 11.07 18 11.18V4H13V12L10.5 9.75L8 12V4H6V20H13.5M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z";
var mdiBookVariant = "M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z";
var mdiBookVariantMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,12L17.5,10.5L15,12V4H20V12Z";
var mdiBookmark = "M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z";
var mdiBookmarkCheck = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,14L17.25,7.76L15.84,6.34L11,11.18L8.41,8.59L7,10L11,14Z";
var mdiBookmarkCheckOutline = "M9.47 9.65L8.06 11.07L11 14L16.19 8.82L14.78 7.4L11 11.18M17 3H7C5.9 3 5 3.9 5 5L5 21L12 18L19 21V5C19 3.9 18.1 3 17 3M17 18L12 15.82L7 18V5H17Z";
var mdiBookmarkMinus = "M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5A2,2 0 0,0 17,3M15,11H9V9H15V11Z";
var mdiBookmarkMinusOutline = "M9,11V9H15V11H9M19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17C18.11,3 19,3.9 19,5M17,5H7V18L12,15.82L17,18V5Z";
var mdiBookmarkMultiple = "M15,5A2,2 0 0,1 17,7V23L10,20L3,23V7C3,5.89 3.9,5 5,5H15M9,1H19A2,2 0 0,1 21,3V19L19,18.13V3H7A2,2 0 0,1 9,1Z";
var mdiBookmarkMultipleOutline = "M9,1H19A2,2 0 0,1 21,3V19L19,18.13V3H7A2,2 0 0,1 9,1M15,20V7H5V20L10,17.82L15,20M15,5C16.11,5 17,5.9 17,7V23L10,20L3,23V7A2,2 0 0,1 5,5H15Z";
var mdiBookmarkMusic = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,11A2,2 0 0,0 9,13A2,2 0 0,0 11,15A2,2 0 0,0 13,13V8H16V6H12V11.27C11.71,11.1 11.36,11 11,11Z";
var mdiBookmarkMusicOutline = "M7 3C5.9 3 5 3.9 5 5V21L12 18L19 21V5C19 3.89 18.1 3 17 3H7M7 5H17V18L12 15.82L7 18V5M12 6V11.3C11.7 11.1 11.4 11 11 11C9.9 11 9 11.9 9 13C9 14.11 9.9 15 11 15C12.11 15 13 14.11 13 13V8H15V6H12Z";
var mdiBookmarkOff = "M20,20.72L18.73,22L16.78,20.05L12,18L5,21V8.27L2,5.27L3.28,4L20,20.72M19,17.16V5C19,3.89 18.1,3 17,3H7C6.41,3 5.89,3.27 5.5,3.68L19,17.16Z";
var mdiBookmarkOffOutline = "M3.28,4L2,5.27L5,8.27V21L12,18L16.78,20.05L18.73,22L20,20.72L3.28,4M7,18V10.27L13,16.25L12,15.82L7,18M7,5.16L5.5,3.67C5.88,3.26 6.41,3 7,3H17A2,2 0 0,1 19,5V17.16L17,15.16V5H7V5.16Z";
var mdiBookmarkOutline = "M17,18L12,15.82L7,18V5H17M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z";
var mdiBookmarkPlus = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7V9H9V11H11V13H13V11H15V9H13V7H11Z";
var mdiBookmarkPlusOutline = "M17,18V5H7V18L12,15.82L17,18M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7H13V9H15V11H13V13H11V11H9V9H11V7Z";
var mdiBookmarkRemove = "M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M8.17,8.58L10.59,11L8.17,13.41L9.59,14.83L12,12.41L14.41,14.83L15.83,13.41L13.41,11L15.83,8.58L14.41,7.17L12,9.58L9.59,7.17L8.17,8.58Z";
var mdiBookmarkRemoveOutline = "M7 3C5.9 3 5 3.9 5 5V21L12 18L19 21V5C19 3.89 18.1 3 17 3H7M7 5H17V18L12 15.82L7 18V5M9.88 7.47L8.47 8.88L10.59 11L8.47 13.12L9.88 14.54L12 12.42L14.12 14.53L15.54 13.12L13.42 11L15.53 8.88L14.12 7.47L12 9.59L9.88 7.47Z";
var mdiBookshelf = "M9 3V18H12V3H9M12 5L16 18L19 17L15 4L12 5M5 5V18H8V5H5M3 19V21H21V19H3Z";
var mdiBoomGate = "M20,9H8.22C7.11,7.77 5.21,7.68 4,8.8C3.36,9.36 3,10.16 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V13H20A2,2 0 0,0 22,11A2,2 0 0,0 20,9M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.5,12L9,10H10.5L12,12H10.5M14.5,12L13,10H14.5L16,12H14.5M18.5,12L17,10H18.5L20,12H18.5Z";
var mdiBoomGateAlert = "M19.9 3C19.3 2 18.1 1.7 17.2 2.3L6.9 8.2C6.6 8.1 6.3 8 6 8C4.3 8 3 9.3 3 11V20C2.4 20 2 20.4 2 21V22H10V21C10 20.4 9.6 20 9 20V11.6L19.1 5.8C20.1 5.2 20.4 4 19.9 3M6 12.5C5.2 12.5 4.5 11.8 4.5 11S5.2 9.5 6 9.5 7.5 10.2 7.5 11 6.8 12.5 6 12.5M10.4 9.6L8.1 8.6L9.4 7.8L11.7 8.8L10.4 9.6M13.9 7.6L11.6 6.6L12.9 5.8L15.2 6.8L13.9 7.6M17.3 5.6L15 4.6L16.3 3.8L18.6 4.8L17.3 5.6M20 18H18V20H20V18M20 10H18V16H20V10Z";
var mdiBoomGateAlertOutline = "M19.9 3C19.3 2 18.1 1.7 17.2 2.3L6.9 8.2C6.6 8.1 6.3 8 6 8C4.3 8 3 9.3 3 11V20C2.4 20 2 20.4 2 21V22H10V21C10 20.4 9.6 20 9 20V11.6L19.1 5.8C20.1 5.2 20.4 4 19.9 3M7.5 20H4.5V13.6C5.4 14.1 6.6 14.1 7.5 13.6V20M6 12.5C5.2 12.5 4.5 11.8 4.5 11S5.2 9.5 6 9.5 7.5 10.2 7.5 11 6.8 12.5 6 12.5M10.4 9.6L8.1 8.6L9.4 7.8L11.7 8.8L10.4 9.6M13.9 7.6L11.6 6.6L12.9 5.8L15.2 6.8L13.9 7.6M17.3 5.6L15 4.6L16.3 3.8L18.6 4.8L17.3 5.6M20 16H18V10H20V16M20 20H18V18H20V20Z";
var mdiBoomGateDown = "M19.86,3C19.31,2.04 18.09,1.71 17.12,2.27L6.92,8.16C6.62,8.06 6.31,8 6,8A3,3 0 0,0 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V11.58L19.12,5.73C20.08,5.18 20.41,3.96 19.86,3M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.4,9.62L8.1,8.62L9.4,7.87L11.7,8.87L10.4,9.62M13.86,7.62L11.56,6.62L12.86,5.87L15.16,6.87L13.86,7.62M17.33,5.62L15.03,4.62L16.33,3.87L18.62,4.87L17.33,5.62M17,20L12,15H15V11H19V15H22L17,20";
var mdiBoomGateDownOutline = "M19.86,3C20.41,3.96 20.08,5.18 19.12,5.73L9,11.58V20A1,1 0 0,1 10,21V22H2V21A1,1 0 0,1 3,20V11A3,3 0 0,1 6,8C6.31,8 6.62,8.06 6.92,8.16L17.12,2.27C18.09,1.71 19.31,2.04 19.86,3M7.5,20V13.6C6.57,14.14 5.43,14.14 4.5,13.6V20H7.5M6,12.5A1.5,1.5 0 0,0 7.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,11A1.5,1.5 0 0,0 6,12.5M10.4,9.62L11.7,8.87L9.4,7.87L8.1,8.62L10.4,9.62M13.86,7.62L15.16,6.87L12.86,5.87L11.56,6.62L13.86,7.62M17.33,5.62L18.62,4.87L16.33,3.87L15.03,4.62L17.33,5.62M16,11.16H18V16.17L21,16.16L17,20L13,16.16L16,16.17V11.16Z";
var mdiBoomGateOutline = "M20,9H8.22C7.11,7.77 5.21,7.68 4,8.8C3.36,9.36 3,10.16 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V13H20A2,2 0 0,0 22,11A2,2 0 0,0 20,9M7.5,20H4.5V13.6C5.43,14.14 6.57,14.14 7.5,13.6V20M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.5,12L9,10H10.5L12,12H10.5M14.5,12L13,10H14.5L16,12H14.5M18.5,12L17,10H18.5L20,12H18.5Z";
var mdiBoomGateUp = "M19.86,3C19.31,2.04 18.09,1.71 17.12,2.27L6.92,8.16C6.62,8.06 6.31,8 6,8A3,3 0 0,0 3,11V20A1,1 0 0,0 2,21V22H10V21A1,1 0 0,0 9,20V11.58L19.12,5.73C20.08,5.18 20.41,3.96 19.86,3M6,12.5A1.5,1.5 0 0,1 4.5,11A1.5,1.5 0 0,1 6,9.5A1.5,1.5 0 0,1 7.5,11A1.5,1.5 0 0,1 6,12.5M10.4,9.62L8.1,8.62L9.4,7.87L11.7,8.87L10.4,9.62M13.86,7.62L11.56,6.62L12.86,5.87L15.16,6.87L13.86,7.62M17.33,5.62L15.03,4.62L16.33,3.87L18.62,4.87L17.33,5.62M17,11L22,16H19V20H15V16H12L17,11";
var mdiBoomGateUpOutline = "M19.86,3C20.41,3.96 20.08,5.18 19.12,5.73L9,11.58V20A1,1 0 0,1 10,21V22H2V21A1,1 0 0,1 3,20V11A3,3 0 0,1 6,8C6.31,8 6.62,8.06 6.92,8.16L17.12,2.27C18.09,1.71 19.31,2.04 19.86,3M7.5,20V13.6C6.57,14.14 5.43,14.14 4.5,13.6V20H7.5M6,12.5A1.5,1.5 0 0,0 7.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,11A1.5,1.5 0 0,0 6,12.5M10.4,9.62L11.7,8.87L9.4,7.87L8.1,8.62L10.4,9.62M13.86,7.62L15.16,6.87L12.86,5.87L11.56,6.62L13.86,7.62M17.33,5.62L18.62,4.87L16.33,3.87L15.03,4.62L17.33,5.62M16,20V15H13L17,11.16L21,15H18V20H16Z";
var mdiBoombox = "M7,5L5,7V8H3A1,1 0 0,0 2,9V17A1,1 0 0,0 3,18H21A1,1 0 0,0 22,17V9A1,1 0 0,0 21,8H19V7L17,5H7M7,7H17V8H7V7M11,9H13A0.5,0.5 0 0,1 13.5,9.5A0.5,0.5 0 0,1 13,10H11A0.5,0.5 0 0,1 10.5,9.5A0.5,0.5 0 0,1 11,9M7.5,10.5A3,3 0 0,1 10.5,13.5A3,3 0 0,1 7.5,16.5A3,3 0 0,1 4.5,13.5A3,3 0 0,1 7.5,10.5M16.5,10.5A3,3 0 0,1 19.5,13.5A3,3 0 0,1 16.5,16.5A3,3 0 0,1 13.5,13.5A3,3 0 0,1 16.5,10.5M7.5,12A1.5,1.5 0 0,0 6,13.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 9,13.5A1.5,1.5 0 0,0 7.5,12M16.5,12A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,13.5A1.5,1.5 0 0,0 16.5,12Z";
var mdiBoomerang = "M10 2H4C2.9 2 2 2.9 2 4S2.9 6 4 6H8L10 2M18 2C20.2 2 22 3.8 22 6V12L18 14C18 9.6 14.4 6 10 6L12 2H18M18 20V16L22 14V20C22 21.1 21.1 22 20 22S18 21.1 18 20Z";
var mdiBootstrap = "M11.79 11.5H9.72V8.19H12.19C13.45 8.19 14.15 8.75 14.15 9.78C14.15 10.9 13.32 11.5 11.79 11.5M12.16 12.63H9.72V16.27L12.28 16.27C13.84 16.27 14.66 15.64 14.66 14.44S13.81 12.63 12.16 12.63M22 5.31V18.69C22 20.5 20.5 22 18.69 22H5.31C3.5 22 2 20.5 2 18.69V5.31C2 3.5 3.5 2 5.31 2H18.69C20.5 2 22 3.5 22 5.31M16 14.5C16 13.12 15.08 12.13 13.67 11.95V11.89C14.67 11.71 15.46 10.71 15.46 9.63C15.46 8.08 14.26 7.05 12.5 7.05H8.43V17.41H12.47C14.68 17.41 16 16.32 16 14.5Z";
var mdiBorderAll = "M19,11H13V5H19M19,19H13V13H19M11,11H5V5H11M11,19H5V13H11M3,21H21V3H3V21Z";
var mdiBorderAllVariant = "M3,21V3H21V21H3M5,5V19H19V5H5Z";
var mdiBorderBottom = "M5,15H3V17H5M3,21H21V19H3M5,11H3V13H5M19,9H21V7H19M19,5H21V3H19M5,7H3V9H5M19,17H21V15H19M19,13H21V11H19M17,3H15V5H17M13,3H11V5H13M17,11H15V13H17M13,7H11V9H13M5,3H3V5H5M13,11H11V13H13M9,3H7V5H9M13,15H11V17H13M9,11H7V13H9V11Z";
var mdiBorderBottomVariant = "M5,15H3V17H5M3,21H21V19H3M5,11H3V13H5M19,9H21V7H19M19,5H21V3H19M5,7H3V9H5M19,17H21V15H19M19,13H21V11H19M17,3H15V5H17M13,3H11V5H13M5,3H3V5H5M9,3H7V5H9";
var mdiBorderColor = "M20.71,4.04C21.1,3.65 21.1,3 20.71,2.63L18.37,0.29C18,-0.1 17.35,-0.1 16.96,0.29L15,2.25L18.75,6M17.75,7L14,3.25L4,13.25V17H7.75L17.75,7Z";
var mdiBorderHorizontal = "M19,21H21V19H19M15,21H17V19H15M11,17H13V15H11M19,9H21V7H19M19,5H21V3H19M3,13H21V11H3M11,21H13V19H11M19,17H21V15H19M13,3H11V5H13M13,7H11V9H13M17,3H15V5H17M9,3H7V5H9M5,3H3V5H5M7,21H9V19H7M3,17H5V15H3M5,7H3V9H5M3,21H5V19H3V21Z";
var mdiBorderInside = "M19,17H21V15H19M19,21H21V19H19M13,3H11V11H3V13H11V21H13V13H21V11H13M15,21H17V19H15M19,5H21V3H19M19,9H21V7H19M17,3H15V5H17M5,3H3V5H5M9,3H7V5H9M3,17H5V15H3M5,7H3V9H5M7,21H9V19H7M3,21H5V19H3V21Z";
var mdiBorderLeft = "M15,5H17V3H15M15,13H17V11H15M19,21H21V19H19M19,13H21V11H19M19,5H21V3H19M19,17H21V15H19M15,21H17V19H15M19,9H21V7H19M3,21H5V3H3M7,13H9V11H7M7,5H9V3H7M7,21H9V19H7M11,13H13V11H11M11,9H13V7H11M11,5H13V3H11M11,17H13V15H11M11,21H13V19H11V21Z";
var mdiBorderLeftVariant = "M15,5H17V3H15M19,21H21V19H19M19,13H21V11H19M19,5H21V3H19M19,17H21V15H19M15,21H17V19H15M19,9H21V7H19M3,21H5V3H3M7,5H9V3H7M7,21H9V19H7M11,5H13V3H11M11,21H13V19H11V21Z";
var mdiBorderNone = "M15,5H17V3H15M15,13H17V11H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M11,9H13V7H11M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M11,13H13V11H11M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M11,17H13V15H11M7,21H9V19H7M7,13H9V11H7M7,5H9V3H7V5Z";
var mdiBorderNoneVariant = "M15,5H17V3H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M7,21H9V19H7M7,5H9V3H7V5Z";
var mdiBorderOutside = "M9,11H7V13H9M13,15H11V17H13M19,19H5V5H19M3,21H21V3H3M17,11H15V13H17M13,11H11V13H13M13,7H11V9H13V7Z";
var mdiBorderRight = "M11,9H13V7H11M11,5H13V3H11M11,13H13V11H11M15,5H17V3H15M15,21H17V19H15M19,21H21V3H19M15,13H17V11H15M11,17H13V15H11M3,9H5V7H3M3,17H5V15H3M3,13H5V11H3M11,21H13V19H11M3,21H5V19H3M7,13H9V11H7M7,5H9V3H7M3,5H5V3H3M7,21H9V19H7V21Z";
var mdiBorderRightVariant = "M11,5H13V3H11M15,5H17V3H15M15,21H17V19H15M19,21H21V3H19M3,9H5V7H3M3,17H5V15H3M3,13H5V11H3M11,21H13V19H11M3,21H5V19H3M7,5H9V3H7M3,5H5V3H3M7,21H9V19H7V21Z";
var mdiBorderStyle = "M15,21H17V19H15M19,21H21V19H19M7,21H9V19H7M11,21H13V19H11M19,17H21V15H19M19,13H21V11H19M3,3V21H5V5H21V3M19,9H21V7H19";
var mdiBorderTop = "M15,13H17V11H15M19,21H21V19H19M11,9H13V7H11M15,21H17V19H15M19,17H21V15H19M3,5H21V3H3M19,13H21V11H19M19,9H21V7H19M11,17H13V15H11M3,9H5V7H3M3,13H5V11H3M3,21H5V19H3M3,17H5V15H3M11,21H13V19H11M11,13H13V11H11M7,13H9V11H7M7,21H9V19H7V21Z";
var mdiBorderTopVariant = "M19,21H21V19H19M15,21H17V19H15M19,17H21V15H19M3,5H21V3H3M19,13H21V11H19M19,9H21V7H19M3,9H5V7H3M3,13H5V11H3M3,21H5V19H3M3,17H5V15H3M11,21H13V19H11M7,21H9V19H7V21Z";
var mdiBorderVertical = "M15,13H17V11H15M15,21H17V19H15M15,5H17V3H15M19,9H21V7H19M19,5H21V3H19M19,13H21V11H19M19,21H21V19H19M11,21H13V3H11M19,17H21V15H19M7,5H9V3H7M3,17H5V15H3M3,21H5V19H3M3,13H5V11H3M7,13H9V11H7M7,21H9V19H7M3,5H5V3H3M3,9H5V7H3V9Z";
var mdiBottleSoda = "M15 11V20A2 2 0 0 1 13 22H11A2 2 0 0 1 9 20V11A2 2 0 0 1 9.6 9.58C11.1 7.89 11 4 11 4H10V2H14V4H13S12.9 7.89 14.4 9.58A2 2 0 0 1 15 11Z";
var mdiBottleSodaClassic = "M15 13.77A3 3 0 0 0 15 18.23V20A2 2 0 0 1 13 22H11A2 2 0 0 1 9 20V18.23A3 3 0 0 0 9 13.77V9A12.28 12.28 0 0 0 10.91 4H10V2H14V4H13.09A12.28 12.28 0 0 0 15 9Z";
var mdiBottleSodaClassicOutline = "M10 2V4H10.91C10.65 5.79 9 7.5 8 9V13.77C9.32 14.96 9.32 17.04 8 18.23V20C8 21.11 8.9 22 10 22H14C15.11 22 16 21.11 16 20V18.23C14.68 17.04 14.68 14.96 16 13.77V9C15 7.5 13.35 5.79 13.09 4H14V2M12 6.5C12.24 7 13.54 8.5 13.9 8.91L14 9V13C13.35 13.87 13 14.92 13 16C13 17.08 13.35 18.13 14 19V20H10V19C10.65 18.13 11 17.08 11 16C11 14.92 10.65 13.87 10 13V9L10.1 8.91C10.46 8.5 11.76 7 12 6.5Z";
var mdiBottleSodaOutline = "M14.4 9.58C12.9 7.89 13 4 13 4H14V2H10V4H11S11.1 7.89 9.6 9.58A2 2 0 0 0 9 11V20A2 2 0 0 0 11 22H13A2 2 0 0 0 15 20V11A2 2 0 0 0 14.4 9.58M13 20H11V11L11.1 10.91A6.26 6.26 0 0 0 12 9.5A6.26 6.26 0 0 0 12.9 10.91L13 11Z";
var mdiBottleTonic = "M13 4H11L10 2H14L13 4M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13Z";
var mdiBottleTonicOutline = "M13 4H11L10 2H14L13 4M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13M17 13C17 11.35 15.65 10 14 10H10C8.35 10 7 11.35 7 13V20H17V13Z";
var mdiBottleTonicPlus = "M13 4H11L10 2H14L13 4M14 8V6H15V5H9V6H10V8C7.24 8 5 10.24 5 13V22H19V13C19 10.24 16.76 8 14 8M16 17H13V20H11V17H8V15H11V12H13V15H16V17Z";
var mdiBottleTonicPlusOutline = "M13 4H11L10 2H14L13 4M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13M17 13C17 11.35 15.65 10 14 10H10C8.35 10 7 11.35 7 13V20H17V13M15 16H13V18H11V16H9V14H11V12H13V14H15V16Z";
var mdiBottleTonicSkull = "M19 13V22H5V13C5 10.24 7.24 8 10 8V6H9V5H15V6H14V8C16.76 8 19 10.24 19 13M13 4L14 2H10L11 4H13M12 11C9.79 11 8 12.79 8 15C8 16 8.39 16.9 9 17.59V19H10.25V17.5H11.38V19H12.63V17.5H13.75V19H15V17.59C15.61 16.9 16 16 16 15C16 12.79 14.21 11 12 11M10.5 15C9.95 15 9.5 14.55 9.5 14S9.95 13 10.5 13 11.5 13.45 11.5 14 11.05 15 10.5 15M11.25 16.25L12 15L12.75 16.25H11.25M13.5 15C12.95 15 12.5 14.55 12.5 14S12.95 13 13.5 13 14.5 13.45 14.5 14 14.05 15 13.5 15Z";
var mdiBottleTonicSkullOutline = "M13 4H11L10 2H14L13 4M14 8V6H15V5H9V6H10V8C7.24 8 5 10.24 5 13V22H19V13C19 10.24 16.76 8 14 8M17 20H7V13C7 11.35 8.35 10 10 10H14C15.65 10 17 11.35 17 13V20M12 11C9.79 11 8 12.79 8 15C8 16 8.39 16.9 9 17.59V19H10.25V17.5H11.38V19H12.63V17.5H13.75V19H15V17.59C15.61 16.9 16 16 16 15C16 12.79 14.21 11 12 11M10.5 15C9.95 15 9.5 14.55 9.5 14S9.95 13 10.5 13 11.5 13.45 11.5 14 11.05 15 10.5 15M11.25 16.25L12 15L12.75 16.25H11.25M13.5 15C12.95 15 12.5 14.55 12.5 14S12.95 13 13.5 13 14.5 13.45 14.5 14 14.05 15 13.5 15Z";
var mdiBottleWine = "M10,22A1,1 0 0,1 9,21V11C9,9 10,7.25 11,7V2.5A0.5,0.5 0 0,1 11.5,2H12.5A0.5,0.5 0 0,1 13,2.5V7C14,7.25 15,9 15,11V21A1,1 0 0,1 14,22H10Z";
var mdiBottleWineOutline = "M11.5 2C11.22 2 11 2.22 11 2.5V7C10.93 7 10.85 7 10.78 7.03C9.82 7.27 9.21 8 8.76 8.89C8.3 9.76 8 10.84 8 12C8.05 15 8 18.03 8 21C8 21.55 8.45 22 9 22C11 22 13 22 15 22C15.55 22 16 21.55 16 21C16.04 18 16 15 16 12C16 10.84 15.74 9.76 15.28 8.88C14.83 8 14.22 7.27 13.26 7.04C13.18 7 13.05 7 13 7V2.5C13 2.22 12.78 2 12.5 2M12 8.85C12.32 8.85 12.63 8.9 12.78 9C12.85 9.03 13.2 9.26 13.5 9.81C13.78 10.37 14 11.17 14 12V20H10V12C10 11.17 10.22 10.37 10.5 9.81C10.8 9.26 11.15 9.03 11.22 9C11.36 8.9 11.68 8.85 12 8.85Z";
var mdiBowTie = "M15,14L21,17V7L15,10V14M9,14L3,17V7L9,10V14M10,10H14V14H10V10Z";
var mdiBowl = "M22 15C22 18.9 18.9 22 15 22H9C5.1 22 2 18.9 2 15V12H22V15Z";
var mdiBowlMix = "M16.2 11L20.3 4.5L22 5.5L18.6 11H16.2M15.6 12H2V15C2 18.9 5.1 22 9 22H15C18.9 22 22 18.9 22 15V12H15.6Z";
var mdiBowlMixOutline = "M15.6 12H2V15C2 18.9 5.1 22 9 22H15C18.9 22 22 18.9 22 15V12H15.6M20 15C20 17.8 17.8 20 15 20H9C6.2 20 4 17.8 4 15V14H20V15M16.2 11L20.3 4.4L22 5.5L18.6 11H16.2Z";
var mdiBowlOutline = "M2 12V15C2 18.9 5.1 22 9 22H15C18.9 22 22 18.9 22 15V12H2M4 14H20V15C20 17.8 17.8 20 15 20H9C6.2 20 4 17.8 4 15V14Z";
var mdiBowling = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12.5,11A1.5,1.5 0 0,0 11,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,12.5A1.5,1.5 0 0,0 12.5,11M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M5.93,8.5C5.38,9.45 5.71,10.67 6.66,11.22C7.62,11.78 8.84,11.45 9.4,10.5C9.95,9.53 9.62,8.31 8.66,7.76C7.71,7.21 6.5,7.53 5.93,8.5Z";
var mdiBox = "M15.39,14.04V14.04C15.39,12.62 14.24,11.47 12.82,11.47C11.41,11.47 10.26,12.62 10.26,14.04V14.04C10.26,15.45 11.41,16.6 12.82,16.6C14.24,16.6 15.39,15.45 15.39,14.04M17.1,14.04C17.1,16.4 15.18,18.31 12.82,18.31C11.19,18.31 9.77,17.39 9.05,16.04C8.33,17.39 6.91,18.31 5.28,18.31C2.94,18.31 1.04,16.43 1,14.11V14.11H1V7H1V7C1,6.56 1.39,6.18 1.86,6.18C2.33,6.18 2.7,6.56 2.71,7V7H2.71V10.62C3.43,10.08 4.32,9.76 5.28,9.76C6.91,9.76 8.33,10.68 9.05,12.03C9.77,10.68 11.19,9.76 12.82,9.76C15.18,9.76 17.1,11.68 17.1,14.04V14.04M7.84,14.04V14.04C7.84,12.62 6.69,11.47 5.28,11.47C3.86,11.47 2.71,12.62 2.71,14.04V14.04C2.71,15.45 3.86,16.6 5.28,16.6C6.69,16.6 7.84,15.45 7.84,14.04M22.84,16.96V16.96C22.95,17.12 23,17.3 23,17.47C23,17.73 22.88,18 22.66,18.15C22.5,18.26 22.33,18.32 22.15,18.32C21.9,18.32 21.65,18.21 21.5,18L19.59,15.47L17.7,18V18C17.53,18.21 17.28,18.32 17.03,18.32C16.85,18.32 16.67,18.26 16.5,18.15C16.29,18 16.17,17.72 16.17,17.46C16.17,17.29 16.23,17.11 16.33,16.96V16.96H16.33V16.96L18.5,14.04L16.33,11.11V11.11H16.33V11.11C16.22,10.96 16.17,10.79 16.17,10.61C16.17,10.35 16.29,10.1 16.5,9.93C16.89,9.65 17.41,9.72 17.7,10.09V10.09L19.59,12.61L21.5,10.09C21.76,9.72 22.29,9.65 22.66,9.93C22.89,10.1 23,10.36 23,10.63C23,10.8 22.95,10.97 22.84,11.11V11.11H22.84V11.11L20.66,14.04L22.84,16.96V16.96H22.84Z";
var mdiBoxCutter = "M7.22,11.91C6.89,12.24 6.71,12.65 6.66,13.08L12.17,15.44L20.66,6.96C21.44,6.17 21.44,4.91 20.66,4.13L19.24,2.71C18.46,1.93 17.2,1.93 16.41,2.71L7.22,11.91M5,16V21.75L10.81,16.53L5.81,14.53L5,16M17.12,4.83C17.5,4.44 18.15,4.44 18.54,4.83C18.93,5.23 18.93,5.86 18.54,6.25C18.15,6.64 17.5,6.64 17.12,6.25C16.73,5.86 16.73,5.23 17.12,4.83Z";
var mdiBoxCutterOff = "M20.84 22.73L12.86 14.75L12.17 15.44L6.66 13.08C6.71 12.65 6.89 12.24 7.22 11.91L8.62 10.5L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M15.41 12.21L11.16 7.96L16.41 2.71C17.2 1.93 18.46 1.93 19.24 2.71L20.66 4.13C21.44 4.91 21.44 6.17 20.66 6.96L15.41 12.21M17.12 6.25C17.5 6.64 18.15 6.64 18.54 6.25C18.93 5.86 18.93 5.23 18.54 4.83C18.15 4.44 17.5 4.44 17.12 4.83C16.73 5.23 16.73 5.86 17.12 6.25M5 16V21.75L10.81 16.53L5.81 14.53L5 16Z";
var mdiBoxShadow = "M3,3H18V18H3V3M19,19H21V21H19V19M19,16H21V18H19V16M19,13H21V15H19V13M19,10H21V12H19V10M19,7H21V9H19V7M16,19H18V21H16V19M13,19H15V21H13V19M10,19H12V21H10V19M7,19H9V21H7V19Z";
var mdiBoxingGlove = "M19,16V6H22V16H19M12,4C8,4 7,4 7,4C7,4 2,4 2,8V14C2,15.77 3,16.76 4.07,17.31C4.4,15.43 6.03,14 8,14H11V16H8A2,2 0 0,0 6,18C6,19.11 6.9,20 8,20H13C17,20 17,16 17,16V6C17,6 16,4 12,4Z";
var mdiBraille = "M7,8A1,1 0 0,1 8,7A1,1 0 0,1 9,8V12.47L10.21,12.6L15.15,14.79C15.67,15.03 16,15.56 16,16.14V20.5C15.97,21.32 15.32,21.97 14.5,22H8C7.62,22 7.26,21.85 7,21.57L2.1,17.37L2.84,16.6C3.03,16.39 3.3,16.28 3.58,16.28H3.8L7,18V8M19.5,2A1.5,1.5 0 0,0 18,3.5A1.5,1.5 0 0,0 19.5,5A1.5,1.5 0 0,0 21,3.5A1.5,1.5 0 0,0 19.5,2M19.5,7A1.5,1.5 0 0,0 18,8.5A1.5,1.5 0 0,0 19.5,10A1.5,1.5 0 0,0 21,8.5A1.5,1.5 0 0,0 19.5,7M14.5,7A1.5,1.5 0 0,0 13,8.5A1.5,1.5 0 0,0 14.5,10A1.5,1.5 0 0,0 16,8.5A1.5,1.5 0 0,0 14.5,7M19.5,12A1.5,1.5 0 0,0 18,13.5A1.5,1.5 0 0,0 19.5,15A1.5,1.5 0 0,0 21,13.5A1.5,1.5 0 0,0 19.5,12Z";
var mdiBrain = "M21.33,12.91C21.42,14.46 20.71,15.95 19.44,16.86L20.21,18.35C20.44,18.8 20.47,19.33 20.27,19.8C20.08,20.27 19.69,20.64 19.21,20.8L18.42,21.05C18.25,21.11 18.06,21.14 17.88,21.14C17.37,21.14 16.89,20.91 16.56,20.5L14.44,18C13.55,17.85 12.71,17.47 12,16.9C11.5,17.05 11,17.13 10.5,17.13C9.62,17.13 8.74,16.86 8,16.34C7.47,16.5 6.93,16.57 6.38,16.56C5.59,16.57 4.81,16.41 4.08,16.11C2.65,15.47 1.7,14.07 1.65,12.5C1.57,11.78 1.69,11.05 2,10.39C1.71,9.64 1.68,8.82 1.93,8.06C2.3,7.11 3,6.32 3.87,5.82C4.45,4.13 6.08,3 7.87,3.12C9.47,1.62 11.92,1.46 13.7,2.75C14.12,2.64 14.56,2.58 15,2.58C16.36,2.55 17.65,3.15 18.5,4.22C20.54,4.75 22,6.57 22.08,8.69C22.13,9.8 21.83,10.89 21.22,11.82C21.29,12.18 21.33,12.54 21.33,12.91M16.33,11.5C16.9,11.57 17.35,12 17.35,12.57A1,1 0 0,1 16.35,13.57H15.72C15.4,14.47 14.84,15.26 14.1,15.86C14.35,15.95 14.61,16 14.87,16.07C20,16 19.4,12.87 19.4,12.82C19.34,11.39 18.14,10.27 16.71,10.33A1,1 0 0,1 15.71,9.33A1,1 0 0,1 16.71,8.33C17.94,8.36 19.12,8.82 20.04,9.63C20.09,9.34 20.12,9.04 20.12,8.74C20.06,7.5 19.5,6.42 17.25,6.21C16,3.25 12.85,4.89 12.85,5.81V5.81C12.82,6.04 13.06,6.53 13.1,6.56A1,1 0 0,1 14.1,7.56C14.1,8.11 13.65,8.56 13.1,8.56V8.56C12.57,8.54 12.07,8.34 11.67,8C11.19,8.31 10.64,8.5 10.07,8.56V8.56C9.5,8.61 9.03,8.21 9,7.66C8.92,7.1 9.33,6.61 9.88,6.56C10.04,6.54 10.82,6.42 10.82,5.79V5.79C10.82,5.13 11.07,4.5 11.5,4C10.58,3.75 9.59,4.08 8.59,5.29C6.75,5 6,5.25 5.45,7.2C4.5,7.67 4,8 3.78,9C4.86,8.78 5.97,8.87 7,9.25C7.5,9.44 7.78,10 7.59,10.54C7.4,11.06 6.82,11.32 6.3,11.13C5.57,10.81 4.75,10.79 4,11.07C3.68,11.34 3.68,11.9 3.68,12.34C3.68,13.08 4.05,13.77 4.68,14.17C5.21,14.44 5.8,14.58 6.39,14.57C6.24,14.31 6.11,14.04 6,13.76C5.81,13.22 6.1,12.63 6.64,12.44C7.18,12.25 7.77,12.54 7.96,13.08C8.36,14.22 9.38,15 10.58,15.13C11.95,15.06 13.17,14.25 13.77,13C14,11.62 15.11,11.5 16.33,11.5M18.33,18.97L17.71,17.67L17,17.83L18,19.08L18.33,18.97M13.68,10.36C13.7,9.83 13.3,9.38 12.77,9.33C12.06,9.29 11.37,9.53 10.84,10C10.27,10.58 9.97,11.38 10,12.19A1,1 0 0,0 11,13.19C11.57,13.19 12,12.74 12,12.19C12,11.92 12.07,11.65 12.23,11.43C12.35,11.33 12.5,11.28 12.66,11.28C13.21,11.31 13.68,10.9 13.68,10.36Z";
var mdiBreadSlice = "M12,2C17.5,2 22,5.36 22,9.5C22,11.19 21.26,12.75 20,14V22H4V14C2.74,12.75 2,11.19 2,9.5C2,5.36 6.5,2 12,2M8,18H12V14H8V18Z";
var mdiBreadSliceOutline = "M12,2C17.5,2 22,5.36 22,9.5C22,11.19 21.26,12.75 20,14V22H4V14C2.74,12.75 2,11.19 2,9.5C2,5.36 6.5,2 12,2M18,13.14C19.24,12.17 20,10.89 20,9.5C20,6.46 16.42,4 12,4C7.58,4 4,6.46 4,9.5C4,10.89 4.76,12.17 6,13.14V20H18V13.14M8,18V14H12V18H8Z";
var mdiBridge = "M7,14V10.91C6.28,10.58 5.61,10.18 5,9.71V14H7M5,18H3V16H1V14H3V7H5V8.43C6.8,10 9.27,11 12,11C14.73,11 17.2,10 19,8.43V7H21V14H23V16H21V18H19V16H5V18M17,10.91V14H19V9.71C18.39,10.18 17.72,10.58 17,10.91M16,14V11.32C15.36,11.55 14.69,11.72 14,11.84V14H16M13,14V11.96L12,12L11,11.96V14H13M10,14V11.84C9.31,11.72 8.64,11.55 8,11.32V14H10Z";
var mdiBriefcase = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z";
var mdiBriefcaseAccount = "M20,6H16V4A2,2 0 0,0 14,2H10C8.89,2 8,2.89 8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8A2,2 0 0,0 20,6M10,4H14V6H10V4M12,9A2.5,2.5 0 0,1 14.5,11.5A2.5,2.5 0 0,1 12,14A2.5,2.5 0 0,1 9.5,11.5A2.5,2.5 0 0,1 12,9M17,19H7V17.75C7,16.37 9.24,15.25 12,15.25C14.76,15.25 17,16.37 17,17.75V19Z";
var mdiBriefcaseAccountOutline = "M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14M12,9A2.25,2.25 0 0,1 14.25,11.25C14.25,12.5 13.24,13.5 12,13.5A2.25,2.25 0 0,1 9.75,11.25C9.75,10 10.76,9 12,9M16.5,18H7.5V16.88C7.5,15.63 9.5,14.63 12,14.63C14.5,14.63 16.5,15.63 16.5,16.88V18Z";
var mdiBriefcaseCheck = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M10.5,17.5L17.09,10.91L15.68,9.5L10.5,14.67L8.41,12.59L7,14L10.5,17.5Z";
var mdiBriefcaseCheckOutline = "M20 6C20.58 6 21.05 6.2 21.42 6.59C21.8 7 22 7.45 22 8V19C22 19.55 21.8 20 21.42 20.41C21.05 20.8 20.58 21 20 21H4C3.42 21 2.95 20.8 2.58 20.41C2.2 20 2 19.55 2 19V8C2 7.45 2.2 7 2.58 6.59C2.95 6.2 3.42 6 4 6H8V4C8 3.42 8.2 2.95 8.58 2.58C8.95 2.2 9.42 2 10 2H14C14.58 2 15.05 2.2 15.42 2.58C15.8 2.95 16 3.42 16 4V6H20M4 8V19H20V8H4M14 6V4H10V6H14M10.46 17.5L17.05 10.91L15.64 9.5L10.46 14.67L8.37 12.59L6.96 14L10.46 17.5Z";
var mdiBriefcaseClock = "M21 11.11V7A2 2 0 0 0 19 5H15V3A2 2 0 0 0 13 1H9A2 2 0 0 0 7 3V5H3A2 2 0 0 0 1 7V18A2 2 0 0 0 3 20H10.26A7 7 0 1 0 21 11.11M9 3H13V5H9M19 20A5 5 0 0 1 13 20A5 5 0 1 1 19 20M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13";
var mdiBriefcaseClockOutline = "M21 11.11V7A2 2 0 0 0 20.42 5.59A1.87 1.87 0 0 0 19 5H15V3A1.9 1.9 0 0 0 14.42 1.58A1.9 1.9 0 0 0 13 1H9A1.9 1.9 0 0 0 7.58 1.58A1.9 1.9 0 0 0 7 3V5H3A1.87 1.87 0 0 0 1.58 5.59A2 2 0 0 0 1 7V18A2 2 0 0 0 1.58 19.41A1.87 1.87 0 0 0 3 20H10.26A7 7 0 1 0 21 11.11M9 3H13V5H9M3 18V7H19V9.68A6.84 6.84 0 0 0 16 9A7 7 0 0 0 9 16A6.91 6.91 0 0 0 9.29 18M19 20A5 5 0 0 1 13 20A4.94 4.94 0 0 1 11 16A5 5 0 0 1 16 11A4.94 4.94 0 0 1 19 12A5 5 0 0 1 19 20M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13";
var mdiBriefcaseDownload = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M12,19L17,14H14V10H10V14H7L12,19Z";
var mdiBriefcaseDownloadOutline = "M12,18L7,13H10V9H14V13H17L12,18M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M4,8V19H20V8H4Z";
var mdiBriefcaseEdit = "M14,2A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8L10.85,19C10.85,20.1 10.85,19.5 10.85,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2H14M14,6V4H10V6H14M21.04,12.13C20.9,12.13 20.76,12.19 20.65,12.3L19.65,13.3L21.7,15.35L22.7,14.35C22.92,14.14 22.92,13.79 22.7,13.58L21.42,12.3C21.31,12.19 21.18,12.13 21.04,12.13M19.07,13.88L13,19.94V22H15.06L21.12,15.93L19.07,13.88Z";
var mdiBriefcaseEditOutline = "M21.04,12.13C21.18,12.13 21.31,12.19 21.42,12.3L22.7,13.58C22.92,13.79 22.92,14.14 22.7,14.35L21.7,15.35L19.65,13.3L20.65,12.3C20.76,12.19 20.9,12.13 21.04,12.13M19.07,13.88L21.12,15.93L15.06,22H13V19.94L19.07,13.88M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8L20,10V8H4V19H11V21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14Z";
var mdiBriefcaseMinus = "M22,17V19H14V17H22M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C20.94,12.58 19.54,12 18,12A6,6 0 0,0 12,18C12,19.09 12.29,20.12 12.8,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z";
var mdiBriefcaseMinusOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C21.42,13 20.75,12.6 20,12.34V8H4V19H12.08C12.2,19.72 12.45,20.39 12.8,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M14,17H22V19H14V17Z";
var mdiBriefcaseOff = "M22.11 21.46L20.84 22.73L19.11 21H4C2.89 21 2 20.1 2 19V8C2 6.89 2.89 6 4 6H4.11L1.11 3L2.39 1.73L22.11 21.46M22 18.8L8 4.8V4C8 2.89 8.89 2 10 2H14C15.11 2 16 2.9 16 4V6H20C21.11 6 22 6.9 22 8V18.8M14 4H10V6H14V4Z";
var mdiBriefcaseOffOutline = "M20 8V16.8L22 18.8V8C22 7.45 21.8 7 21.42 6.59C21.05 6.2 20.58 6 20 6H16V4C16 3.42 15.8 2.95 15.42 2.58C15.05 2.2 14.58 2 14 2H10C9.42 2 8.95 2.2 8.58 2.58C8.2 2.95 8 3.42 8 4V4.8L11.2 8H20M10 4H14V6H10V4M2.39 1.73L1.11 3L4.11 6H4C3.42 6 2.95 6.2 2.58 6.59C2.2 7 2 7.45 2 8V19C2 19.55 2.2 20 2.58 20.41C2.95 20.8 3.42 21 4 21H19.11L20.84 22.73L22.11 21.46L2.39 1.73M4 19V8H6.11L17.11 19H4Z";
var mdiBriefcaseOutline = "M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z";
var mdiBriefcasePlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C20.94,12.58 19.54,12 18,12A6,6 0 0,0 12,18C12,19.09 12.29,20.12 12.8,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z";
var mdiBriefcasePlusOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C21.42,13 20.75,12.6 20,12.34V8H4V19H12.08C12.2,19.72 12.45,20.39 12.8,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M14,17H17V14H19V17H22V19H19V22H17V19H14V17Z";
var mdiBriefcaseRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C20.94,12.58 19.54,12 18,12A6,6 0 0,0 12,18C12,19.09 12.29,20.12 12.8,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z";
var mdiBriefcaseRemoveOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.53C21.42,13 20.75,12.6 20,12.34V8H4V19H12.08C12.2,19.72 12.45,20.39 12.8,21H4A2,2 0 0,1 2,19V8A2,2 0 0,1 4,6H8V4A2,2 0 0,1 10,2M14,6V4H10V6H14M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88Z";
var mdiBriefcaseSearch = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.03C20.85,11.21 18.82,10 16.5,10A6.5,6.5 0 0,0 10,16.5C10,18.25 10.69,19.83 11.81,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14Z";
var mdiBriefcaseSearchOutline = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V13.03C21.5,12.23 20.8,11.54 20,11V8H4V19H10.5C10.81,19.75 11.26,20.42 11.81,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9M16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19Z";
var mdiBriefcaseUpload = "M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M12,9L7,14H10V18H14V14H17L12,9Z";
var mdiBriefcaseUploadOutline = "M12,9L17,14H14V18H10V14H7L12,9M10,2H14A2,2 0 0,1 16,4V6H20A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4C8,2.89 8.89,2 10,2M14,6V4H10V6H14M4,8V19H20V8H4Z";
var mdiBriefcaseVariant = "M10 16V15H3L3 19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V15H14V16H10M20 7H16V5L14 3H10L8 5V7H4C2.9 7 2 7.9 2 9V12C2 13.11 2.89 14 4 14H10V12H14V14H20C21.1 14 22 13.1 22 12V9C22 7.9 21.1 7 20 7M14 7H10V5H14V7Z";
var mdiBriefcaseVariantOff = "M10 6.8L8.1 4.9L10 3H14L16 5V7H20C21.1 7 22 7.9 22 9V12C22 13.1 21.1 14 20 14H17.2L10.2 7H14V5H10V6.8M2.39 1.73L1.11 3L5.11 7H4C2.9 7 2 7.9 2 9V12C2 13.11 2.89 14 4 14H10V12H10.11L14 15.89V16H10V15H3V19C3 20.11 3.89 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M21 17.8V15H18.2L21 17.8Z";
var mdiBriefcaseVariantOffOutline = "M10 6.8L8.1 4.9L10 3H14L16 5V7H20C21.1 7 22 7.9 22 9V14C22 14.73 21.59 15.37 21 15.72V17.8L17.2 14H20V9H12.2L10.2 7H14V5H10V6.8M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.89 21 3 20.11 3 19V15.73C2.4 15.38 2 14.75 2 14V9C2 7.9 2.9 7 4 7H5.11L1.11 3L2.39 1.73L22.11 21.46M11 15H13V14.89L11.11 13H11V15M9 14V11H9.11L7.11 9H4V14H9M17.11 19L15 16.89V17H9V16H5V19H17.11Z";
var mdiBriefcaseVariantOutline = "M20 7H16V5L14 3H10L8 5V7H4C2.9 7 2 7.9 2 9V14C2 14.75 2.4 15.38 3 15.73V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V15.72C21.59 15.37 22 14.73 22 14V9C22 7.9 21.1 7 20 7M10 5H14V7H10V5M4 9H20V14H15V11H9V14H4V9M13 15H11V13H13V15M19 19H5V16H9V17H15V16H19V19Z";
var mdiBrightness1 = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiBrightness2 = "M10,2C8.18,2 6.47,2.5 5,3.35C8,5.08 10,8.3 10,12C10,15.7 8,18.92 5,20.65C6.47,21.5 8.18,22 10,22A10,10 0 0,0 20,12A10,10 0 0,0 10,2Z";
var mdiBrightness3 = "M9,2C7.95,2 6.95,2.16 6,2.46C10.06,3.73 13,7.5 13,12C13,16.5 10.06,20.27 6,21.54C6.95,21.84 7.95,22 9,22A10,10 0 0,0 19,12A10,10 0 0,0 9,2Z";
var mdiBrightness4 = "M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z";
var mdiBrightness5 = "M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z";
var mdiBrightness6 = "M12,18V6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z";
var mdiBrightness7 = "M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z";
var mdiBrightnessAuto = "M14.3,16L13.6,14H10.4L9.7,16H7.8L11,7H13L16.2,16H14.3M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69M10.85,12.65H13.15L12,9L10.85,12.65Z";
var mdiBrightnessPercent = "M20.04,8.71V4H15.34L12,0.69L8.71,4H4V8.71L0.69,12L4,15.34V20.04H8.71L12,23.35L15.34,20.04H20.04V15.34L23.35,12L20.04,8.71M8.83,7.05C9.81,7.05 10.6,7.84 10.6,8.83A1.77,1.77 0 0,1 8.83,10.6C7.84,10.6 7.05,9.81 7.05,8.83C7.05,7.84 7.84,7.05 8.83,7.05M15.22,17C14.24,17 13.45,16.2 13.45,15.22A1.77,1.77 0 0,1 15.22,13.45C16.2,13.45 17,14.24 17,15.22A1.78,1.78 0 0,1 15.22,17M8.5,17.03L7,15.53L15.53,7L17.03,8.5L8.5,17.03Z";
var mdiBroadcast = "M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M18 12C18 8.7 15.3 6 12 6S6 8.7 6 12C6 14.2 7.2 16.1 9 17.2L10 15.5C8.8 14.8 8 13.5 8 12.1C8 9.9 9.8 8.1 12 8.1S16 9.9 16 12.1C16 13.6 15.2 14.9 14 15.5L15 17.2C16.8 16.2 18 14.2 18 12M12 2C6.5 2 2 6.5 2 12C2 15.7 4 18.9 7 20.6L8 18.9C5.6 17.5 4 14.9 4 12C4 7.6 7.6 4 12 4S20 7.6 20 12C20 15 18.4 17.5 16 18.9L17 20.6C20 18.9 22 15.7 22 12C22 6.5 17.5 2 12 2Z";
var mdiBroadcastOff = "M17.6 14.2C17.9 13.5 18 12.8 18 12C18 8.7 15.3 6 12 6C11.2 6 10.4 6.2 9.8 6.4L11.4 8H12C14.2 8 16 9.8 16 12C16 12.2 16 12.4 15.9 12.6L17.6 14.2M12 4C16.4 4 20 7.6 20 12C20 13.4 19.6 14.6 19 15.7L20.5 17.2C21.4 15.7 22 13.9 22 12C22 6.5 17.5 2 12 2C10.1 2 8.3 2.5 6.8 3.5L8.3 5C9.4 4.3 10.6 4 12 4M3.3 2.5L2 3.8L4.1 5.9C2.8 7.6 2 9.7 2 12C2 15.7 4 18.9 7 20.6L8 18.9C5.6 17.5 4 14.9 4 12C4 10.2 4.6 8.6 5.5 7.3L7 8.8C6.4 9.7 6 10.8 6 12C6 14.2 7.2 16.1 9 17.2L10 15.5C8.8 14.8 8 13.5 8 12.1C8 11.5 8.2 10.9 8.4 10.3L10 11.9V12.1C10 13.2 10.9 14.1 12 14.1H12.2L19.7 21.6L21 20.3L4.3 3.5L3.3 2.5Z";
var mdiBroom = "M19.36,2.72L20.78,4.14L15.06,9.85C16.13,11.39 16.28,13.24 15.38,14.44L9.06,8.12C10.26,7.22 12.11,7.37 13.65,8.44L19.36,2.72M5.93,17.57C3.92,15.56 2.69,13.16 2.35,10.92L7.23,8.83L14.67,16.27L12.58,21.15C10.34,20.81 7.94,19.58 5.93,17.57Z";
var mdiBrush = "M20.71,4.63L19.37,3.29C19,2.9 18.35,2.9 17.96,3.29L9,12.25L11.75,15L20.71,6.04C21.1,5.65 21.1,5 20.71,4.63M7,14A3,3 0 0,0 4,17C4,18.31 2.84,19 2,19C2.92,20.22 4.5,21 6,21A4,4 0 0,0 10,17A3,3 0 0,0 7,14Z";
var mdiBucket = "M3 4H21V7H20L17.5 21H6.5L4 7H3V4Z";
var mdiBucketOutline = "M3 4H21V7H20L17.5 21H6.5L4 7H3V4M17.97 7H6.03L8.15 19H15.85L17.97 7Z";
var mdiBuddhism = "M11,2V3C9.27,3.2 7.69,3.9 6.4,4.94L5.64,4.18L4.22,5.6L5,6.35C3.9,7.68 3.21,9.3 3,11H2V13H3C3.21,14.68 3.9,16.26 5,17.56L4.22,18.32L5.64,19.74L6.39,19C7.71,20.07 9.3,20.77 11,21V22H13V21C14.69,20.77 16.29,20.07 17.6,19L18.36,19.74L19.78,18.32L19,17.57C20.1,16.27 20.79,14.68 21,13H22V11H21C20.79,9.3 20.1,7.69 19,6.36L19.78,5.6L18.36,4.18L17.61,4.94C16.29,3.87 14.69,3.2 13,3V2H11M11,5V8L10,8.5L7.81,6.35C8.72,5.67 9.81,5.17 11,5M13,5C14.16,5.18 15.26,5.64 16.2,6.35L14,8.5L13,8V5M6.4,7.76L8.5,10L8,11H5C5.16,9.84 5.7,8.7 6.39,7.75L6.4,7.76M17.6,7.76C18.33,8.71 18.81,9.82 19,11H16L15.5,10L17.61,7.76H17.6M12,10C13.12,10 14,10.88 14,12C14,13.12 13.12,14 12,14C10.88,14 10,13.12 10,12C10,10.88 10.88,10 12,10M5,13H8L8.57,14L6.39,16.15C5.67,15.24 5.19,14.16 5,13V13M16,13H19C18.81,14.15 18.33,15.24 17.61,16.16L15.5,14L16,13M10,15.5L11,16V19C9.83,18.8 8.73,18.31 7.8,17.57L10,15.5M14,15.5L16.19,17.57C15.28,18.25 14.19,18.83 13,19V16L14,15.5Z";
var mdiBuffer = "M12.6,2.86C15.27,4.1 18,5.39 20.66,6.63C20.81,6.7 21,6.75 21,6.95C21,7.15 20.81,7.19 20.66,7.26C18,8.5 15.3,9.77 12.62,11C12.21,11.21 11.79,11.21 11.38,11C8.69,9.76 6,8.5 3.32,7.25C3.18,7.19 3,7.14 3,6.94C3,6.76 3.18,6.71 3.31,6.65C6,5.39 8.74,4.1 11.44,2.85C11.73,2.72 12.3,2.73 12.6,2.86M12,21.15C11.8,21.15 11.66,21.07 11.38,20.97C8.69,19.73 6,18.47 3.33,17.22C3.19,17.15 3,17.11 3,16.9C3,16.7 3.19,16.66 3.34,16.59C3.78,16.38 4.23,16.17 4.67,15.96C5.12,15.76 5.56,15.76 6,15.97C7.79,16.8 9.57,17.63 11.35,18.46C11.79,18.67 12.23,18.66 12.67,18.46C14.45,17.62 16.23,16.79 18,15.96C18.44,15.76 18.87,15.75 19.29,15.95C19.77,16.16 20.24,16.39 20.71,16.61C20.78,16.64 20.85,16.68 20.91,16.73C21.04,16.83 21.04,17 20.91,17.08C20.83,17.14 20.74,17.19 20.65,17.23C18,18.5 15.33,19.72 12.66,20.95C12.46,21.05 12.19,21.15 12,21.15M12,16.17C11.9,16.17 11.55,16.07 11.36,16C8.68,14.74 6,13.5 3.34,12.24C3.2,12.18 3,12.13 3,11.93C3,11.72 3.2,11.68 3.35,11.61C3.8,11.39 4.25,11.18 4.7,10.97C5.13,10.78 5.56,10.78 6,11C7.78,11.82 9.58,12.66 11.38,13.5C11.79,13.69 12.21,13.69 12.63,13.5C14.43,12.65 16.23,11.81 18.04,10.97C18.45,10.78 18.87,10.78 19.29,10.97C19.76,11.19 20.24,11.41 20.71,11.63C20.77,11.66 20.84,11.69 20.9,11.74C21.04,11.85 21.04,12 20.89,12.12C20.84,12.16 20.77,12.19 20.71,12.22C18,13.5 15.31,14.75 12.61,16C12.42,16.09 12.08,16.17 12,16.17Z";
var mdiBuffet = "M9 14C9.55 14 10 14.45 10 15C10 15.55 9.55 16 9 16C8.45 16 8 15.55 8 15C8 14.45 8.45 14 9 14M15 14C15.55 14 16 14.45 16 15C16 15.55 15.55 16 15 16C14.45 16 14 15.55 14 15C14 14.45 14.45 14 15 14M3 22L4 19H3C2.45 19 2 18.55 2 18V12C2 11.45 2.45 11 3 11H21C21.55 11 22 11.45 22 12V18C22 18.55 21.55 19 21 19H20L21 22H19L18 19H6L5 22H3M13 13V17H20V13H13M4 13V17H11V13H4Z";
var mdiBug = "M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z";
var mdiBugCheck = "M18,7H15.19C14.74,6.2 14.12,5.5 13.37,5L15,3.41L13.59,2L11.42,4.17C10.96,4.06 10.5,4 10,4C9.5,4 9.05,4.06 8.59,4.17L6.41,2L5,3.41L6.62,5C5.87,5.5 5.26,6.21 4.81,7H2V9H4.09C4.03,9.33 4,9.66 4,10V11H2V13H4V14C4,14.34 4.03,14.67 4.09,15H2V17H4.81C6.26,19.5 9.28,20.61 12,19.65C12,19.43 12,19.22 12,19C12,16.46 13.61,14.2 16,13.35V13H18V11H16V10C16,9.66 15.97,9.33 15.91,9H18V7M12,15H8V13H12V15M12,11H8V9H12V11M17.75,22.16L15,19.16L16.16,18L17.75,19.59L21.34,16L22.5,17.41L17.75,22.16Z";
var mdiBugCheckOutline = "M18,7H15.19C14.74,6.2 14.12,5.5 13.37,5L15,3.41L13.59,2L11.42,4.17C10.96,4.06 10.5,4 10,4C9.5,4 9.05,4.06 8.59,4.17L6.41,2L5,3.41L6.62,5C5.87,5.5 5.26,6.21 4.81,7H2V9H4.09C4.03,9.33 4,9.66 4,10V11H2V13H4V14C4,14.34 4.03,14.67 4.09,15H2V17H4.81C6.26,19.5 9.28,20.61 12,19.65C12,19.43 12,19.22 12,19C12,18.43 12.09,17.86 12.25,17.31C11.59,17.76 10.8,18 10,18A4,4 0 0,1 6,14V10A4,4 0 0,1 10,6A4,4 0 0,1 14,10V14C14,14.19 14,14.39 13.95,14.58C14.54,14.04 15.24,13.62 16,13.35V13H18V11H16V10C16,9.66 15.97,9.33 15.91,9H18V7M21.34,16L17.75,19.59L16.16,18L15,19.16L17.75,22.16L22.5,17.41L21.34,16M12,9V11H8V9H12M12,13V15H8V13H12Z";
var mdiBugOutline = "M20,8H17.19C16.74,7.2 16.12,6.5 15.37,6L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.05,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6C7.87,6.5 7.26,7.21 6.81,8H4V10H6.09C6.03,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.03,15.67 6.09,16H4V18H6.81C8.47,20.87 12.14,21.84 15,20.18C15.91,19.66 16.67,18.9 17.19,18H20V16H17.91C17.97,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.97,10.33 17.91,10H20V8M16,15A4,4 0 0,1 12,19A4,4 0 0,1 8,15V11A4,4 0 0,1 12,7A4,4 0 0,1 16,11V15M14,10V12H10V10H14M10,14H14V16H10V14Z";
var mdiBugle = "M21,6C21,11 12,11 12,11C12,11 6,11 5,11C4,11 3,10 3,10H2V14H3C3,14 4,13 5,13C5.2,13 5.7,13 6.3,13C5.5,13.5 5,14.2 5,15C5,16.8 7.3,18 10.5,18C13.7,18 16,16.8 16,15C16,14.4 15.7,13.8 15.2,13.3C17.8,13.8 21,15 21,18H22V6H21M10.5,16.7C8.2,16.7 6.4,15.9 6.4,15C6.4,14.1 8.2,13.3 10.5,13.3C12.8,13.3 14.6,14.1 14.6,15C14.6,15.9 12.8,16.7 10.5,16.7Z";
var mdiBulldozer = "M4,4A1,1 0 0,0 3,5V10C2.54,10 2.14,10.31 2.03,10.76V13.97H2.29C2.65,13.37 3.3,13 4,13H13C13.7,13 14.35,13.37 14.71,13.97H16.03L16,11V11A1,1 0 0,0 15,10H13V8A1,1 0 0,0 12,7A1,1 0 0,0 11,8V10H9V5A1,1 0 0,0 8,4H4M5,6H7V10L7,11H5V6M17,11V19H22V18L19,17L18,11H17M4,15A2,2 0 0,0 2,17A2,2 0 0,0 4,19H13A2,2 0 0,0 15,17A2,2 0 0,0 13,15H4Z";
var mdiBullet = "M14,22H10V21H14V22M13,10V7H11V10L10,11.5V20H14V11.5L13,10M12,2C12,2 11,3 11,5V6H13V5C13,5 13,3 12,2Z";
var mdiBulletinBoard = "M12.04,2.5L9.53,5H14.53L12.04,2.5M4,7V20H20V7H4M12,0L17,5V5H20A2,2 0 0,1 22,7V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V7A2,2 0 0,1 4,5H7V5L12,0M7,18V14H12V18H7M14,17V10H18V17H14M6,12V9H11V12H6Z";
var mdiBullhorn = "M12,8H4A2,2 0 0,0 2,10V14A2,2 0 0,0 4,16H5V20A1,1 0 0,0 6,21H8A1,1 0 0,0 9,20V16H12L17,20V4L12,8M21.5,12C21.5,13.71 20.54,15.26 19,16V8C20.53,8.75 21.5,10.3 21.5,12Z";
var mdiBullhornOutline = "M12,8H4A2,2 0 0,0 2,10V14A2,2 0 0,0 4,16H5V20A1,1 0 0,0 6,21H8A1,1 0 0,0 9,20V16H12L17,20V4L12,8M15,15.6L13,14H4V10H13L15,8.4V15.6M21.5,12C21.5,13.71 20.54,15.26 19,16V8C20.53,8.75 21.5,10.3 21.5,12Z";
var mdiBullseye = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiBullseyeArrow = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,10.84 21.79,9.69 21.39,8.61L19.79,10.21C19.93,10.8 20,11.4 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.6,4 13.2,4.07 13.79,4.21L15.4,2.6C14.31,2.21 13.16,2 12,2M19,2L15,6V7.5L12.45,10.05C12.3,10 12.15,10 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,11.85 14,11.7 13.95,11.55L16.5,9H18L22,5H19V2M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12H16A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8V6Z";
var mdiBulma = "M11.38 2L6.38 7L5.13 15.75L11.38 22L18.88 17L13.88 12L17.63 8.25L11.38 2Z";
var mdiBunkBed = "M1 2V23H3V21H21V23H23V7C23 4.79 21.21 3 19 3H10V8H3V2M6.5 2A2.5 2.5 0 0 0 4 4.5A2.5 2.5 0 0 0 6.5 7A2.5 2.5 0 0 0 9 4.5A2.5 2.5 0 0 0 6.5 2M3 11H21V13.56C20.41 13.21 19.73 13 19 13H10V18H3M6.5 12A2.5 2.5 0 0 0 4 14.5A2.5 2.5 0 0 0 6.5 17A2.5 2.5 0 0 0 9 14.5A2.5 2.5 0 0 0 6.5 12Z";
var mdiBunkBedOutline = "M1 2H3V9H10V3H19C21.2 3 23 4.8 23 7V23H21V21H3V23H1V2M12 5V9H21V7C21 5.9 20.1 5 19 5H12M3 11V19H10V13H19C19.7 13 20.4 13.2 21 13.6V11H3M6.5 13C7.9 13 9 14.1 9 15.5S7.9 18 6.5 18 4 16.9 4 15.5 5.1 13 6.5 13M6.5 14.6C6 14.6 5.6 15 5.6 15.5S6 16.4 6.5 16.4 7.4 16 7.4 15.5 7 14.6 6.5 14.6M12 15V19H21V17C21 15.9 20.1 15 19 15H12M6.5 3C7.9 3 9 4.1 9 5.5S7.9 8 6.5 8 4 6.9 4 5.5 5.1 3 6.5 3M6.5 4.6C6 4.6 5.6 5 5.6 5.5S6 6.4 6.5 6.4 7.4 6 7.4 5.5 7 4.6 6.5 4.6Z";
var mdiBus = "M18,11H6V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M4,16C4,16.88 4.39,17.67 5,18.22V20A1,1 0 0,0 6,21H7A1,1 0 0,0 8,20V19H16V20A1,1 0 0,0 17,21H18A1,1 0 0,0 19,20V18.22C19.61,17.67 20,16.88 20,16V6C20,2.5 16.42,2 12,2C7.58,2 4,2.5 4,6V16Z";
var mdiBusAlert = "M16,1A7,7 0 0,1 23,8C23,11.53 20.39,14.45 17,14.93V18C17,18.84 16.65,19.58 15.96,20.2V22C15.96,22.27 15.87,22.5 15.68,22.71C15.5,22.91 15.26,23 15,23H14C13.71,23 13.47,22.91 13.27,22.71C13.06,22.5 12.96,22.27 12.96,22V21H5.04V22C5.04,22.27 4.94,22.5 4.73,22.71C4.53,22.91 4.29,23 4,23H3C2.74,23 2.5,22.91 2.32,22.71C2.13,22.5 2.04,22.27 2.04,22V20.2C1.35,19.58 1,18.84 1,18V8C1,6.42 1.7,5.35 3.07,4.8C4.44,4.26 6.42,4 9,4L10.23,4.03C11.5,2.2 13.61,1 16,1M16,3A5,5 0 0,0 11,8A5,5 0 0,0 16,13A5,5 0 0,0 21,8A5,5 0 0,0 16,3M15,10H17V12H15V10M15,4H17V9H15V4M3,13H11.09C9.8,11.72 9,9.96 9,8H3V13M4.5,16C3.69,16 3,16.67 3,17.5A1.5,1.5 0 0,0 4.5,19C5.35,19 6,18.33 6,17.5A1.5,1.5 0 0,0 4.5,16M13.5,16C12.65,16 12,16.67 12,17.5A1.5,1.5 0 0,0 13.5,19C14.31,19 15,18.33 15,17.5A1.5,1.5 0 0,0 13.5,16Z";
var mdiBusArticulatedEnd = "M21.5,6L20,7.5L21.5,9L20,10.5L21.5,12L20,13.5L21.5,15H12.5A3,3 0 0,1 9.5,18A3,3 0 0,1 6.5,15H2.5V8C2.5,6.89 3.39,6 4.5,6H21.5M18.5,7.5H15V10H18.5V7.5M13.5,7.5H9.5V10H13.5V7.5M8,7.5H4V10H8V7.5M9.5,13.5A1.5,1.5 0 0,0 8,15A1.5,1.5 0 0,0 9.5,16.5A1.5,1.5 0 0,0 11,15A1.5,1.5 0 0,0 9.5,13.5Z";
var mdiBusArticulatedFront = "M1,6L2.5,7.5L1,9L2.5,10.5L1,12L2.5,13.5L1,15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V8C23,6.89 22.11,6 21,6H1M4,7.5H6.5V10H4V7.5M8,7.5H12V10H8V7.5M13.5,7.5H17.5V10H13.5V7.5M19,7.5H21.5V13L19,11V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z";
var mdiBusClock = "M16.5,4V8.25L19.36,9.94L18.61,11.16L15,9V4H16.5M16,13C17.36,13 18.54,12.5 19.5,11.53C20.5,10.56 21,9.39 21,8C21,6.64 20.5,5.46 19.5,4.5C18.54,3.5 17.36,3 16,3C14.61,3 13.44,3.5 12.47,4.5C11.5,5.46 11,6.64 11,8C11,9.39 11.5,10.56 12.47,11.53C13.44,12.5 14.61,13 16,13M13.5,19C13.94,19 14.3,18.84 14.58,18.54C14.86,18.24 15,17.89 15,17.5C15,17.08 14.86,16.73 14.58,16.43C14.3,16.13 13.94,16 13.5,16C13.06,16 12.7,16.13 12.42,16.43C12.14,16.73 12,17.08 12,17.5C12,17.89 12.14,18.24 12.42,18.54C12.7,18.84 13.06,19 13.5,19M3,13H11.11C9.7,11.64 9,10 9,8H3V13M4.5,19C4.94,19 5.3,18.84 5.58,18.54C5.86,18.24 6,17.89 6,17.5C6,17.08 5.86,16.73 5.58,16.43C5.3,16.13 4.94,16 4.5,16C4.06,16 3.7,16.13 3.42,16.43C3.14,16.73 3,17.08 3,17.5C3,17.89 3.14,18.24 3.42,18.54C3.7,18.84 4.06,19 4.5,19M16,1C17.92,1 19.58,1.67 20.95,3.05C22.33,4.42 23,6.08 23,8C23,9.77 22.44,11.29 21.28,12.59C20.13,13.88 18.7,14.66 17,14.91V18C17,18.84 16.67,19.58 16,20.2V22C16,22.27 15.89,22.5 15.7,22.71C15.5,22.91 15.28,23 15,23H14C13.73,23 13.5,22.91 13.29,22.71C13.09,22.5 13,22.27 13,22V21H5V22C5,22.27 4.91,22.5 4.71,22.71C4.5,22.91 4.27,23 4,23H3C2.72,23 2.5,22.91 2.3,22.71C2.11,22.5 2,22.27 2,22V20.2C1.33,19.58 1,18.84 1,18V8C1,6.42 1.67,5.35 3.05,4.8C4.42,4.26 6.41,4 9,4C9.13,4 9.33,4 9.61,4C9.89,4 10.09,4.03 10.22,4.03C11.63,2 13.55,1 16,1Z";
var mdiBusDoubleDecker = "M3,4C1.89,4 1,4.89 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V14C23,12.89 22.11,12 21,12H19V9.5H23V6C23,4.89 22.11,4 21,4H3M2.5,5.5H6.5V8H2.5V5.5M8,5.5H12V8H8V5.5M13.5,5.5H17.5V8H13.5V5.5M19,5.5H21.5V8H19V5.5M13.5,9.5H17.5V12H13.5V9.5M2.5,9.5H6.5V12H2.5V9.5M8,9.5H12V12H8V9.5M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z";
var mdiBusMarker = "M12 2C7.58 2 4 2.5 4 6V16A3 3 0 0 0 5 18.22V20A1 1 0 0 0 6 21H7A1 1 0 0 0 8 20V19H14A8 8 0 0 1 13 15.5A5.55 5.55 0 0 1 15.38 11H6V6H18V10A4.07 4.07 0 0 1 18.5 10A5.34 5.34 0 0 1 20 10.22V6C20 2.5 16.42 2 12 2M7.5 14A1.5 1.5 0 1 1 6 15.5A1.5 1.5 0 0 1 7.5 14M18.5 12A3.54 3.54 0 0 0 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5A3.54 3.54 0 0 0 18.5 12M18.5 16.8A1.2 1.2 0 1 1 18.5 14.4A1.29 1.29 0 0 1 19.7 15.6A1.15 1.15 0 0 1 18.5 16.8Z";
var mdiBusMultiple = "M10 5C5.58 5 2 5.5 2 9V19C2 19.85 2.37 20.66 3 21.22V23C3 23.55 3.45 24 4 24H5C5.55 24 6 23.55 6 23V22H14V23C14 23.55 14.45 24 15 24H16C16.55 24 17 23.55 17 23V21.22C17.63 20.66 18 19.85 18 19V9C18 5.5 14.42 5 10 5M5.5 20C4.67 20 4 19.33 4 18.5S4.67 17 5.5 17 7 17.67 7 18.5 6.33 20 5.5 20M14.5 20C13.67 20 13 19.33 13 18.5S13.67 17 14.5 17 16 17.67 16 18.5 15.33 20 14.5 20M16 14H4V9H16V14M22 5V15C22 15.85 21.63 16.66 21 17.22V19C21 19.55 20.55 20 20 20H19.88C19.95 19.68 20 19.35 20 19V9C20 3 13 3 10 3C9.09 3 7.8 3 6.46 3.17C7.55 1.32 10.5 1 14 1C18.42 1 22 1.5 22 5Z";
var mdiBusSchool = "M3,6C1.89,6 1,6.89 1,8V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19V8C19,6.89 18.11,6 17,6H3M13.5,7.5H17.5V10H13.5V7.5M2.5,7.5H6.5V10H2.5V7.5M8,7.5H12V10H8V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z";
var mdiBusSide = "M3,6C1.89,6 1,6.89 1,8V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V8C23,6.89 22.11,6 21,6H3M2.5,7.5H6.5V10H2.5V7.5M8,7.5H12V10H8V7.5M13.5,7.5H17.5V10H13.5V7.5M19,7.5H21.5V13L19,11V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z";
var mdiBusStop = "M22 7V16C22 16.71 21.62 17.36 21 17.72V19.25C21 19.66 20.66 20 20.25 20H19.75C19.34 20 19 19.66 19 19.25V18H12V19.25C12 19.66 11.66 20 11.25 20H10.75C10.34 20 10 19.66 10 19.25V17.72C9.39 17.36 9 16.71 9 16V7C9 4 12 4 15.5 4S22 4 22 7M13 15C13 14.45 12.55 14 12 14S11 14.45 11 15 11.45 16 12 16 13 15.55 13 15M20 15C20 14.45 19.55 14 19 14S18 14.45 18 15 18.45 16 19 16 20 15.55 20 15M20 7H11V11H20V7M7 9.5C6.97 8.12 5.83 7 4.45 7.05C3.07 7.08 1.97 8.22 2 9.6C2.03 10.77 2.86 11.77 4 12V20H5V12C6.18 11.76 7 10.71 7 9.5Z";
var mdiBusStopCovered = "M20 3H7V2H6A1.78 1.78 0 0 0 4.59 3H2V5H3.73C2 10.58 2 22 2 22H7V5H20M22 8.5A2.5 2.5 0 1 0 19 11V22H20V11A2.5 2.5 0 0 0 22 8.5M15 11.5V16H14V22H12.5V17H11.5V22H10V16H9V11.5A1.5 1.5 0 0 1 10.5 10H13.5A1.5 1.5 0 0 1 15 11.5M12 6.5A1.5 1.5 0 1 0 13.5 8A1.5 1.5 0 0 0 12 6.5Z";
var mdiBusStopUncovered = "M6 22V19H4V22H2V14A1 1 0 0 1 3 13A1 1 0 0 1 4 14V17H7A1 1 0 0 1 8 18V22M20 11V22H19V11A2.5 2.5 0 1 1 20 11M15 11.55V16H14V22H12.5V17H11.5V22H10V16H9V11.5A1.5 1.5 0 0 1 10.5 10H13.5A1.5 1.5 0 0 1 15 11.5M12 6.55A1.5 1.5 0 1 0 13.5 8A1.5 1.5 0 0 0 12 6.5Z";
var mdiButterfly = "M13 21H11V6L9.03 3.97L10 3L12 5L14 3L15 4L13 6V21M7 6C4.24 6 2 8.24 2 11C2 12.64 2.79 14.09 4 15H4V17C4 19.21 5.79 21 8 21C8.72 21 9.39 20.81 9.97 20.5L10 20.46V7C9.16 6.37 8.13 6 7 6M6.5 12.5L5 11L6.5 9.5L8 11L6.5 12.5M22 11C22 8.24 19.76 6 17 6C15.88 6 14.85 6.37 14 7L14 7V20.46C14.59 20.81 15.27 21 16 21C18.21 21 20 19.21 20 17V15H20C21.21 14.09 22 12.64 22 11M17.5 12.5L16 11L17.5 9.5L19 11L17.5 12.5Z";
var mdiButterflyOutline = "M13 21H11V6L9.03 3.97L10 3L12 5L14 3L15 4L13 6V21M14 9H14V7C14.84 6.37 15.88 6 17 6C19.76 6 22 8.24 22 11C22 12.64 21.21 14.09 20 15H20V17C20 19.21 18.21 21 16 21C15.27 21 14.59 20.81 14 20.46V18.46C14.59 18.81 15.27 19 16 19C17.1 19 18 18.1 18 17V13.83C19.17 13.42 20 12.31 20 11C20 9.35 18.67 8 17 8H17C15.88 8 14.84 8.37 14 9M10 9H10C9.16 8.37 8.13 8 7 8H7C5.33 8 4 9.35 4 11C4 12.31 4.84 13.42 6 13.83V17C6 18.1 6.9 19 8 19C8.73 19 9.41 18.81 10 18.46V20.46C9.41 20.81 8.73 21 8 21C5.79 21 4 19.21 4 17V15H4C2.79 14.09 2 12.64 2 11C2 8.24 4.24 6 7 6C8.13 6 9.16 6.37 10 7V9M9 11L7.5 9.5L6 11L7.5 12.5L9 11M18 11L16.5 9.5L15 11L16.5 12.5L18 11Z";
var mdiCableData = "M7.05 3.5C5.68 4.88 5.68 7.1 7.05 8.47L15.54 16.95C16.12 17.54 16.12 18.5 15.54 19.07C14.95 19.66 14 19.66 13.41 19.07L9.17 14.83L10.23 13.77L6.7 10.23L6.34 10.59L4.93 9.17C4.54 8.78 3.91 8.78 3.5 9.17L2.1 10.59C1.71 11 1.71 11.61 2.1 12L3.5 13.41L3.16 13.77L6.7 17.3L7.76 16.24L12 20.5C13.37 21.85 15.58 21.85 16.95 20.5C18.32 19.12 18.32 16.9 16.95 15.54L8.46 7.05C7.88 6.46 7.88 5.5 8.46 4.93C9.05 4.34 10 4.34 10.59 4.93L14.83 9.17L13.77 10.23L17.3 13.77L17.66 13.41L19.07 14.83C19.46 15.22 20.1 15.22 20.5 14.83L21.9 13.41C22.29 13 22.29 12.39 21.9 12L20.5 10.59L20.84 10.23L17.3 6.7L16.24 7.76L12 3.5C10.63 2.15 8.42 2.15 7.05 3.5M2.81 11.29L4.22 9.88L5.64 11.29L4.22 12.71M18.36 12.71L19.78 11.29L21.19 12.71L19.78 14.12Z";
var mdiCached = "M19,8L15,12H18A6,6 0 0,1 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20A8,8 0 0,0 20,12H23M6,12A6,6 0 0,1 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4A8,8 0 0,0 4,12H1L5,16L9,12";
var mdiCactus = "M14,16V21H10V18H9A3,3 0 0,1 6,15V12A1,1 0 0,1 7,11A1,1 0 0,1 8,12V15C8,15.56 8.45,16 9,16H10V6A2,2 0 0,1 12,4A2,2 0 0,1 14,6V14H15A1,1 0 0,0 16,13V11A1,1 0 0,1 17,10A1,1 0 0,1 18,11V13A3,3 0 0,1 15,16H14Z";
var mdiCake = "M11.5,0.5C12,0.75 13,2.4 13,3.5C13,4.6 12.33,5 11.5,5C10.67,5 10,4.85 10,3.75C10,2.65 11,2 11.5,0.5M18.5,9C21,9 23,11 23,13.5C23,15.06 22.21,16.43 21,17.24V23H12L3,23V17.24C1.79,16.43 1,15.06 1,13.5C1,11 3,9 5.5,9H10V6H13V9H18.5M12,16A2.5,2.5 0 0,0 14.5,13.5H16A2.5,2.5 0 0,0 18.5,16A2.5,2.5 0 0,0 21,13.5A2.5,2.5 0 0,0 18.5,11H5.5A2.5,2.5 0 0,0 3,13.5A2.5,2.5 0 0,0 5.5,16A2.5,2.5 0 0,0 8,13.5H9.5A2.5,2.5 0 0,0 12,16Z";
var mdiCakeLayered = "M21,21V17C21,15.89 20.1,15 19,15H18V12C18,10.89 17.1,10 16,10H13V8H11V10H8C6.89,10 6,10.89 6,12V15H5C3.89,15 3,15.89 3,17V21H1V23H23V21M12,7A2,2 0 0,0 14,5C14,4.62 13.9,4.27 13.71,3.97L12,1L10.28,3.97C10.1,4.27 10,4.62 10,5A2,2 0 0,0 12,7Z";
var mdiCakeVariant = "M12,6C13.11,6 14,5.1 14,4C14,3.62 13.9,3.27 13.71,2.97L12,0L10.29,2.97C10.1,3.27 10,3.62 10,4A2,2 0 0,0 12,6M16.6,16L15.53,14.92L14.45,16C13.15,17.29 10.87,17.3 9.56,16L8.5,14.92L7.4,16C6.75,16.64 5.88,17 4.96,17C4.23,17 3.56,16.77 3,16.39V21A1,1 0 0,0 4,22H20A1,1 0 0,0 21,21V16.39C20.44,16.77 19.77,17 19.04,17C18.12,17 17.25,16.64 16.6,16M18,9H13V7H11V9H6A3,3 0 0,0 3,12V13.54C3,14.62 3.88,15.5 4.96,15.5C5.5,15.5 6,15.3 6.34,14.93L8.5,12.8L10.61,14.93C11.35,15.67 12.64,15.67 13.38,14.93L15.5,12.8L17.65,14.93C18,15.3 18.5,15.5 19.03,15.5C20.11,15.5 21,14.62 21,13.54V12A3,3 0 0,0 18,9Z";
var mdiCalculator = "M7,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V4A2,2 0 0,1 7,2M7,4V8H17V4H7M7,10V12H9V10H7M11,10V12H13V10H11M15,10V12H17V10H15M7,14V16H9V14H7M11,14V16H13V14H11M15,14V16H17V14H15M7,18V20H9V18H7M11,18V20H13V18H11M15,18V20H17V18H15Z";
var mdiCalculatorVariant = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M13 7.1L14.1 6L15.5 7.4L16.9 6L18 7.1L16.6 8.5L18 9.9L16.9 11L15.5 9.6L14.1 11L13 9.9L14.4 8.5L13 7.1M6.2 7.7H11.2V9.2H6.2V7.7M11.5 16H9.5V18H8V16H6V14.5H8V12.5H9.5V14.5H11.5V16M18 17.2H13V15.7H18V17.2M18 14.8H13V13.3H18V14.8Z";
var mdiCalculatorVariantOutline = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M19 19H5V5H19V19M6.2 7.7H11.2V9.2H6.2V7.7M13 15.8H18V17.3H13V15.8M13 13.2H18V14.7H13V13.2M8 18H9.5V16H11.5V14.5H9.5V12.5H8V14.5H6V16H8V18M14.1 10.9L15.5 9.5L16.9 10.9L18 9.9L16.6 8.5L18 7.1L16.9 6L15.5 7.4L14.1 6L13 7.1L14.4 8.5L13 9.9L14.1 10.9Z";
var mdiCalendar = "M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z";
var mdiCalendarAccount = "M12,10C14,10 15,12.42 13.59,13.84C12.17,15.26 9.75,14.25 9.75,12.25C9.75,11 10.75,10 12,10M16.5,19H7.5V17.88C7.5,16.63 9.5,15.63 12,15.63C14.5,15.63 16.5,16.63 16.5,17.88M19,20H5V9H19M16,2V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4H18V2H16Z";
var mdiCalendarAccountOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M19,8H5V6H19M12,11C14,11 15,13.42 13.59,14.84C12.17,16.26 9.75,15.25 9.75,13.25C9.75,12 10.75,11 12,11M16.5,18.88V19H7.5V18.88C7.5,17.63 9.5,16.63 12,16.63C14.5,16.63 16.5,17.63 16.5,18.88Z";
var mdiCalendarAlert = "M6 1V3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3H18V1H16V3H8V1H6M5 8H19V19H5V7M11 9V14H13V9H11M11 16V18H13V16H11Z";
var mdiCalendarArrowLeft = "M19 3H18V1H16V3H8V1H6V3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M19 19H5V8H19V19M12 10V12H16V15H12V17L8 13.5L12 10Z";
var mdiCalendarArrowRight = "M19 3H18V1H16V3H8V1H6V3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M19 19H5V8H19V19M12 17V15H8V12H12V10L16 13.5L12 17Z";
var mdiCalendarBlank = "M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1";
var mdiCalendarBlankMultiple = "M21 17V8H7V17H21M21 3C22.1 3 23 3.9 23 5V17C23 18.1 22.1 19 21 19H7C5.89 19 5 18.1 5 17V5C5 3.9 5.9 3 7 3H8V1H10V3H18V1H20V3H21M3 21H17V23H3C1.89 23 1 22.1 1 21V9H3V21Z";
var mdiCalendarBlankOutline = "M19,4H18V2H16V4H8V2H6V4H5C3.89,4 3,4.9 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M19,8H5V6H19V8Z";
var mdiCalendarCheck = "M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M16.53,11.06L15.47,10L10.59,14.88L8.47,12.76L7.41,13.82L10.59,17L16.53,11.06Z";
var mdiCalendarCheckOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M5,8V6H19V8H5M10.56,18.46L16.5,12.53L15.43,11.47L10.56,16.34L8.45,14.23L7.39,15.29L10.56,18.46Z";
var mdiCalendarClock = "M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z";
var mdiCalendarClockOutline = "M6 1V3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H11.1C12.36 22.24 14.09 23 16 23C19.87 23 23 19.87 23 16C23 14.09 22.24 12.36 21 11.1V5C21 3.9 20.11 3 19 3H18V1H16V3H8V1M5 5H19V7H5M5 9H19V9.67C18.09 9.24 17.07 9 16 9C12.13 9 9 12.13 9 16C9 17.07 9.24 18.09 9.67 19H5M16 11.15C18.68 11.15 20.85 13.32 20.85 16C20.85 18.68 18.68 20.85 16 20.85C13.32 20.85 11.15 18.68 11.15 16C11.15 13.32 13.32 11.15 16 11.15M15 13V16.69L18.19 18.53L18.94 17.23L16.5 15.82V13Z";
var mdiCalendarCursor = "M21.7 20.26L20.29 21.67L17.06 18.5L16 20.97L14 14L21 16L18.47 17.03L21.7 20.26M19 8H5V19H13.41L13.97 21H5C3.89 21 3 20.1 3 19L3 5C3 3.9 3.89 3 5 3H6V1H8V3H16V1H18V3H19C20.1 3 21 3.9 21 5V13.95L19 13.35V8M12 10V15H7V10H12Z";
var mdiCalendarEdit = "M19,3H18V1H16V3H8V1H6V3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H10V19H5V8H19V9H21V5A2,2 0 0,0 19,3M21.7,13.35L20.7,14.35L18.65,12.35L19.65,11.35C19.85,11.14 20.19,11.13 20.42,11.35L21.7,12.63C21.89,12.83 21.89,13.15 21.7,13.35M12,18.94L18.07,12.88L20.12,14.88L14.06,21H12V18.94Z";
var mdiCalendarEnd = "M22 14V22H20V18L16 22V19H11V17H16V14L20 18V14H22M5 19L9 19V21L5 21C3.9 21 3 20.1 3 19V5C3 3.89 3.9 3 5 3H6V.998H8V3H16V.998H18V3H19C20.11 3 21 3.89 21 5L21 12H19V8H5V19Z";
var mdiCalendarExport = "M12,22L16,18H13V12H11V18H8M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H8V20H5V9H19V20H16V22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4Z";
var mdiCalendarHeart = "M19,20V9H5V20H19M16,2H18V4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2M12,18.17L11.42,17.64C9.36,15.77 8,14.54 8,13.03C8,11.8 8.97,10.83 10.2,10.83C10.9,10.83 11.56,11.15 12,11.66C12.44,11.15 13.1,10.83 13.8,10.83C15.03,10.83 16,11.8 16,13.03C16,14.54 14.64,15.77 12.58,17.64L12,18.17Z";
var mdiCalendarImport = "M12,12L8,16H11V22H13V16H16M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H9V20H5V9H19V20H15V22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4Z";
var mdiCalendarLock = "M13 21C13 21.35 13.07 21.69 13.18 22H5C3.9 22 3 21.11 3 20V6C3 4.89 3.89 4 5 4H6V2H8V4H16V2H18V4H19C20.1 4 21 4.89 21 6V11.78C20.42 11.38 19.74 11.13 19 11.05V9H5V20H13V21M22 17V21C22 21.55 21.55 22 21 22H16C15.45 22 15 21.55 15 21V17C15 16.45 15.45 16 16 16V15.5C16 14.12 17.12 13 18.5 13S21 14.12 21 15.5V16C21.55 16 22 16.45 22 17M20 15.5C20 14.67 19.33 14 18.5 14S17 14.67 17 15.5V16H20V15.5Z";
var mdiCalendarLockOutline = "M13 20H5V10H19V11.05C19.74 11.13 20.42 11.38 21 11.78V6C21 4.89 20.11 4 19 4H18V2H16V4H8V2H6V4H5C3.89 4 3 4.9 3 6V20C3 21.11 3.9 22 5 22H13.18C13.07 21.69 13 21.35 13 21V20M5 6H19V8H5V6M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16Z";
var mdiCalendarMinus = "M19 19V8H5V19H19M16 1H18V3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.89 3.89 3 5 3H6V1H8V3H16V1M16 12.5V14.5H8V12.5H16Z";
var mdiCalendarMonth = "M9,10V12H7V10H9M13,10V12H11V10H13M17,10V12H15V10H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H6V1H8V3H16V1H18V3H19M19,19V8H5V19H19M9,14V16H7V14H9M13,14V16H11V14H13M17,14V16H15V14H17Z";
var mdiCalendarMonthOutline = "M7,12H9V14H7V12M21,6V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2H18V4H19A2,2 0 0,1 21,6M5,8H19V6H5V8M19,20V10H5V20H19M15,14V12H17V14H15M11,14V12H13V14H11M7,16H9V18H7V16M15,18V16H17V18H15M11,18V16H13V18H11Z";
var mdiCalendarMultiple = "M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21M19,15H15V11H19V15Z";
var mdiCalendarMultipleCheck = "M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M17.53,11.06L13.09,15.5L10.41,12.82L11.47,11.76L13.09,13.38L16.47,10L17.53,11.06M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21Z";
var mdiCalendarMultiselect = "M19,19V8H5V19H19M16,1H18V3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1M7,10H9V12H7V10M15,10H17V12H15V10M11,14H13V16H11V14M15,14H17V16H15V14Z";
var mdiCalendarOutline = "M19,4H18V2H16V4H8V2H6V4H5C3.89,4 3,4.9 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M19,8H5V6H19V8M12,13H17V18H12V13Z";
var mdiCalendarPlus = "M19 19V8H5V19H19M16 1H18V3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.89 3.89 3 5 3H6V1H8V3H16V1M11 9.5H13V12.5H16V14.5H13V17.5H11V14.5H8V12.5H11V9.5Z";
var mdiCalendarQuestion = "M6,1V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H18V1H16V3H8V1H6M5,8H19V19H5V8M12.19,9C11.32,9 10.62,9.2 10.08,9.59C9.56,10 9.3,10.57 9.31,11.36L9.32,11.39H11.25C11.26,11.09 11.35,10.86 11.53,10.7C11.71,10.55 11.93,10.47 12.19,10.47C12.5,10.47 12.76,10.57 12.94,10.75C13.12,10.94 13.2,11.2 13.2,11.5C13.2,11.82 13.13,12.09 12.97,12.32C12.83,12.55 12.62,12.75 12.36,12.91C11.85,13.25 11.5,13.55 11.31,13.82C11.11,14.08 11,14.5 11,15H13C13,14.69 13.04,14.44 13.13,14.26C13.22,14.08 13.39,13.9 13.64,13.74C14.09,13.5 14.46,13.21 14.75,12.81C15.04,12.41 15.19,12 15.19,11.5C15.19,10.74 14.92,10.13 14.38,9.68C13.85,9.23 13.12,9 12.19,9M11,16V18H13V16H11Z";
var mdiCalendarRange = "M9,10H7V12H9V10M13,10H11V12H13V10M17,10H15V12H17V10M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V8H19V19Z";
var mdiCalendarRangeOutline = "M7,12H9V14H7V12M21,6V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2H18V4H19A2,2 0 0,1 21,6M5,8H19V6H5V8M19,20V10H5V20H19M15,14H17V12H15V14M11,14H13V12H11V14Z";
var mdiCalendarRefresh = "M19 3H18V1H16V3H8V1H6V3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H14C13.4 20.5 12.9 19.8 12.5 19H5V8H19V10.6C19.7 10.7 20.4 10.9 21 11.3V5C21 3.9 20.1 3 19 3M18 12.5C19.1 12.5 20.1 12.9 20.8 13.7L22 12.5V16.5H18L19.8 14.7C19.3 14.3 18.7 14 18 14C16.6 14 15.5 15.1 15.5 16.5S16.6 19 18 19C18.8 19 19.5 18.6 20 18H21.7C21.1 19.5 19.7 20.5 18 20.5C15.8 20.5 14 18.7 14 16.5S15.8 12.5 18 12.5Z";
var mdiCalendarRefreshOutline = "M19 3H18V1H16V3H8V1H6V3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H14C13.4 20.5 12.9 19.8 12.5 19H5V9H19V10.6C19.7 10.7 20.4 10.9 21 11.3V5C21 3.9 20.1 3 19 3M19 7H5V5H19M18 12.5C19.1 12.5 20.1 12.9 20.8 13.7L22 12.5V16.5H18L19.8 14.7C19.3 14.3 18.7 14 18 14C16.6 14 15.5 15.1 15.5 16.5S16.6 19 18 19C18.8 19 19.5 18.6 20 18H21.7C21.1 19.5 19.7 20.5 18 20.5C15.8 20.5 14 18.7 14 16.5S15.8 12.5 18 12.5Z";
var mdiCalendarRemove = "M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9.31,17L11.75,14.56L14.19,17L15.25,15.94L12.81,13.5L15.25,11.06L14.19,10L11.75,12.44L9.31,10L8.25,11.06L10.69,13.5L8.25,15.94L9.31,17Z";
var mdiCalendarRemoveOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M5,8V6H19V8H5M8.23,17.41L9.29,18.47L11.73,16.03L14.17,18.47L15.23,17.41L12.79,14.97L15.23,12.53L14.17,11.47L11.73,13.91L9.29,11.47L8.23,12.53L10.67,14.97L8.23,17.41Z";
var mdiCalendarSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M19,8H5V19H9.5C9.81,19.75 10.26,20.42 10.81,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V13.03C20.5,12.22 19.8,11.54 19,11V8Z";
var mdiCalendarStar = "M19,20H5V9H19M16,2V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4H18V2M10.88,13H7.27L10.19,15.11L9.08,18.56L12,16.43L14.92,18.56L13.8,15.12L16.72,13H13.12L12,9.56L10.88,13Z";
var mdiCalendarStart = "M2 14H4V17H9V14L13 18L9 22V19H4V22H2V14M19 19V8H5V12H3L3 5C3 3.89 3.89 3 5 3H6V.998H8V3H16V.998H18V3H19C20.1 3 21 3.89 21 5V19C21 20.1 20.1 21 19 21L12.83 21L14.83 19L19 19Z";
var mdiCalendarSync = "M18,11V12.5C21.19,12.5 23.09,16.05 21.33,18.71L20.24,17.62C21.06,15.96 19.85,14 18,14V15.5L15.75,13.25L18,11M18,22V20.5C14.81,20.5 12.91,16.95 14.67,14.29L15.76,15.38C14.94,17.04 16.15,19 18,19V17.5L20.25,19.75L18,22M19,3H18V1H16V3H8V1H6V3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H14C13.36,20.45 12.86,19.77 12.5,19H5V8H19V10.59C19.71,10.7 20.39,10.94 21,11.31V5A2,2 0 0,0 19,3Z";
var mdiCalendarSyncOutline = "M18,11V12.5C21.19,12.5 23.09,16.05 21.33,18.71L20.24,17.62C21.06,15.96 19.85,14 18,14V15.5L15.75,13.25L18,11M18,22V20.5C14.81,20.5 12.91,16.95 14.67,14.29L15.76,15.38C14.94,17.04 16.15,19 18,19V17.5L20.25,19.75L18,22M19,3H18V1H16V3H8V1H6V3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H14C13.36,20.45 12.86,19.77 12.5,19H5V9H19V10.59C19.71,10.7 20.39,10.94 21,11.31V5A2,2 0 0,0 19,3M19,7H5V5H19";
var mdiCalendarText = "M14,14H7V16H14M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M17,10H7V12H17V10Z";
var mdiCalendarTextOutline = "M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M5,8V6H19V8H5M7,12H17V14H7V12M7,16H14V18H7V16Z";
var mdiCalendarToday = "M7,10H12V15H7M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiCalendarWeek = "M6 1H8V3H16V1H18V3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.89 3.89 3 5 3H6V1M5 8V19H19V8H5M7 10H17V12H7V10Z";
var mdiCalendarWeekBegin = "M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M9,10H7V17H9V10Z";
var mdiCalendarWeekend = "M19,20V9H5V20H19M16,2H18V4H19A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2M7,18V11H9V18H7M15,11H17V18H15V11Z";
var mdiCalendarWeekendOutline = "M19,4A2,2 0 0,1 21,6V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V6A2,2 0 0,1 5,4H6V2H8V4H16V2H18V4H19M19,20V10H5V20H19M19,8V6H5V8H19M7,12H9V18H7V12M15,12H17V18H15V12Z";
var mdiCallMade = "M9,5V7H15.59L4,18.59L5.41,20L17,8.41V15H19V5";
var mdiCallMerge = "M17,20.41L18.41,19L15,15.59L13.59,17M7.5,8H11V13.59L5.59,19L7,20.41L13,14.41V8H16.5L12,3.5";
var mdiCallMissed = "M19.59,7L12,14.59L6.41,9H11V7H3V15H5V10.41L12,17.41L21,8.41";
var mdiCallReceived = "M20,5.41L18.59,4L7,15.59V9H5V19H15V17H8.41";
var mdiCallSplit = "M14,4L16.29,6.29L13.41,9.17L14.83,10.59L17.71,7.71L20,10V4M10,4H4V10L6.29,7.71L11,12.41V20H13V11.59L7.71,6.29";
var mdiCamcorder = "M7 2C4.24 2 2 4.24 2 7V20C2 21.1 2.9 22 4 22H10C11.1 22 12 21.1 12 20V7C12 4.24 9.76 2 7 2M5 20C4.45 20 4 19.55 4 19S4.45 18 5 18 6 18.45 6 19 5.55 20 5 20M7 10C5.34 10 4 8.66 4 7S5.34 4 7 4 10 5.34 10 7 8.66 10 7 10M22 9V14C22 15.1 21.1 16 20 16H13V14H20V9H13V7H20C21.1 7 22 7.9 22 9Z";
var mdiCamcorderOff = "M22.1 21.5L9.4 8.8L2.4 1.8L1.1 3L2.7 4.6C2.2 5.3 2 6.1 2 7V20C2 21.1 2.9 22 4 22H10C11.1 22 12 21.1 12 20V13.9L13 14.9V16H14.1L20.8 22.7L22.1 21.5M5 20C4.5 20 4 19.5 4 19S4.5 18 5 18 6 18.5 6 19 5.5 20 5 20M7 10C5.3 10 4 8.7 4 7C4 6.7 4.1 6.4 4.2 6.1L8 9.9C7.6 9.9 7.3 10 7 10M7.2 4L5.5 2.3C6 2.1 6.5 2 7 2C9.8 2 12 4.2 12 7V8.8L10 6.8C9.9 5.3 8.7 4.1 7.2 4M20 9H13V7H20C21.1 7 22 7.9 22 9V14C22 15.1 21.1 16 20 16H19.2L17.2 14H20V9Z";
var mdiCamera = "M4,4H7L9,2H15L17,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z";
var mdiCameraAccount = "M4,5H7L9,3H15L17,5H20A2,2 0 0,1 22,7V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V7A2,2 0 0,1 4,5M16,17V16C16,14.67 13.33,14 12,14C10.67,14 8,14.67 8,16V17H16M12,9A2,2 0 0,0 10,11A2,2 0 0,0 12,13A2,2 0 0,0 14,11A2,2 0 0,0 12,9Z";
var mdiCameraBurst = "M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z";
var mdiCameraControl = "M9,12C9,11.19 9.3,10.5 9.89,9.89C10.5,9.3 11.19,9 12,9C12.81,9 13.5,9.3 14.11,9.89C14.7,10.5 15,11.19 15,12C15,12.81 14.7,13.5 14.11,14.11C13.5,14.7 12.81,15 12,15C11.19,15 10.5,14.7 9.89,14.11C9.3,13.5 9,12.81 9,12M5.53,8.44L7.31,10.22L5.53,12L7.31,13.78L5.53,15.56L2,12L5.53,8.44M8.44,18.47L10.22,16.69L12,18.47L13.78,16.69L15.56,18.47L12,22L8.44,18.47M18.47,15.56L16.69,13.78L18.47,12L16.69,10.22L18.47,8.44L22,12L18.47,15.56M15.56,5.53L13.78,7.31L12,5.53L10.22,7.31L8.44,5.53L12,2L15.56,5.53Z";
var mdiCameraEnhance = "M9,3L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5H16.83L15,3M12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18M12,17L13.25,14.25L16,13L13.25,11.75L12,9L10.75,11.75L8,13L10.75,14.25";
var mdiCameraEnhanceOutline = "M12,10L11.06,12.06L9,13L11.06,13.94L12,16L12.94,13.94L15,13L12.94,12.06L12,10M20,5H16.83L15,3H9L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5M20,19H4V7H8.05L8.64,6.35L9.88,5H14.12L15.36,6.35L15.95,7H20V19M12,8A5,5 0 0,0 7,13A5,5 0 0,0 12,18A5,5 0 0,0 17,13A5,5 0 0,0 12,8M12,16A3,3 0 0,1 9,13A3,3 0 0,1 12,10A3,3 0 0,1 15,13A3,3 0 0,1 12,16Z";
var mdiCameraFlip = "M20 5H17L15 3H9L7 5H4C2.9 5 2 5.9 2 7V19C2 20.11 2.9 21 4 21H20C21.11 21 22 20.11 22 19V7C22 5.9 21.11 5 20 5M5 12H7.1C7.65 9.29 10.29 7.55 13 8.1C13.76 8.25 14.43 8.59 15 9L13.56 10.45C13.11 10.17 12.58 10 12 10C10.74 10 9.6 10.8 9.18 12H11L8 15L5 12M16.91 14C16.36 16.71 13.72 18.45 11 17.9C10.25 17.74 9.58 17.41 9 17L10.44 15.55C10.9 15.83 11.43 16 12 16C13.27 16 14.41 15.2 14.83 14H13L16 11L19 14H16.91Z";
var mdiCameraFlipOutline = "M20 5H16.83L15 3H9L7.17 5H4C2.9 5 2 5.9 2 7V19C2 20.11 2.9 21 4 21H20C21.11 21 22 20.11 22 19V7C22 5.9 21.11 5 20 5M20 19H4V7H8.05L9.88 5H14.12L16 7H20V19M5 12H7.1C7.65 9.29 10.29 7.55 13 8.1C13.76 8.25 14.43 8.59 15 9L13.56 10.45C13.11 10.17 12.58 10 12 10C10.74 10 9.6 10.8 9.18 12H11L8 15L5 12M16.91 14C16.36 16.71 13.72 18.45 11 17.9C10.25 17.74 9.58 17.41 9 17L10.44 15.55C10.9 15.83 11.43 16 12 16C13.27 16 14.41 15.2 14.83 14H13L16 11L19 14H16.91Z";
var mdiCameraFront = "M7,2H17V12.5C17,10.83 13.67,10 12,10C10.33,10 7,10.83 7,12.5M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M12,8A2,2 0 0,0 14,6A2,2 0 0,0 12,4A2,2 0 0,0 10,6A2,2 0 0,0 12,8M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z";
var mdiCameraFrontVariant = "M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M11,1V3H13V1H11M6,4V16.5C6,15.12 8.69,14 12,14C15.31,14 18,15.12 18,16.5V4H6M13,18H9V20H13V22L16,19L13,16V18Z";
var mdiCameraGopro = "M20,5H15A2,2 0 0,0 13,7V12A2,2 0 0,0 15,14H20A2,2 0 0,0 22,12V7A2,2 0 0,0 20,5M17.5,12.5A3,3 0 0,1 14.5,9.5A3,3 0 0,1 17.5,6.5A3,3 0 0,1 20.5,9.5A3,3 0 0,1 17.5,12.5M17.5,11A1.5,1.5 0 0,1 16,9.5A1.5,1.5 0 0,1 17.5,8A1.5,1.5 0 0,1 19,9.5A1.5,1.5 0 0,1 17.5,11M12,15V5H4A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V15H12M10,12H4V7H10V12Z";
var mdiCameraImage = "M4,5H7L9,3H15L17,5H20A2,2 0 0,1 22,7V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V7A2,2 0 0,1 4,5M13.09,9.45L11.05,12.18L12.6,14.25L11.73,14.91L9.27,11.64L6,16H18L13.09,9.45Z";
var mdiCameraIris = "M13.73,15L9.83,21.76C10.53,21.91 11.25,22 12,22C14.4,22 16.6,21.15 18.32,19.75L14.66,13.4M2.46,15C3.38,17.92 5.61,20.26 8.45,21.34L12.12,15M8.54,12L4.64,5.25C3,7 2,9.39 2,12C2,12.68 2.07,13.35 2.2,14H9.69M21.8,10H14.31L14.6,10.5L19.36,18.75C21,16.97 22,14.6 22,12C22,11.31 21.93,10.64 21.8,10M21.54,9C20.62,6.07 18.39,3.74 15.55,2.66L11.88,9M9.4,10.5L14.17,2.24C13.47,2.09 12.75,2 12,2C9.6,2 7.4,2.84 5.68,4.25L9.34,10.6L9.4,10.5Z";
var mdiCameraMeteringCenter = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5M12,7.5C14.14,7.5 15.93,9 16.39,11H14.83C14.42,9.83 13.31,9 12,9C10.69,9 9.58,9.83 9.17,11H7.61C8.07,9 9.86,7.5 12,7.5M12,16.5C9.86,16.5 8.07,15 7.61,13H9.17C9.58,14.17 10.69,15 12,15C13.31,15 14.42,14.17 14.83,13H16.39C15.93,15 14.14,16.5 12,16.5Z";
var mdiCameraMeteringMatrix = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M5.5,7.5H11V9.17C10.15,9.47 9.47,10.15 9.17,11H5.5V7.5M18.5,7.5V11H14.83C14.53,10.15 13.85,9.47 13,9.17V7.5H18.5M18.5,16.5H13V14.83C13.85,14.53 14.53,13.85 14.83,13H18.5V16.5M5.5,16.5V13H9.17C9.47,13.85 10.15,14.53 11,14.83V16.5H5.5M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5Z";
var mdiCameraMeteringPartial = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M12,7.5C14.14,7.5 15.93,9 16.39,11H14.83C14.42,9.83 13.31,9 12,9C10.69,9 9.58,9.83 9.17,11H7.61C8.07,9 9.86,7.5 12,7.5M12,16.5C9.86,16.5 8.07,15 7.61,13H9.17C9.58,14.17 10.69,15 12,15C13.31,15 14.42,14.17 14.83,13H16.39C15.93,15 14.14,16.5 12,16.5Z";
var mdiCameraMeteringSpot = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5Z";
var mdiCameraOff = "M1.2,4.47L2.5,3.2L20,20.72L18.73,22L16.73,20H4A2,2 0 0,1 2,18V6C2,5.78 2.04,5.57 2.1,5.37L1.2,4.47M7,4L9,2H15L17,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L16.33,14.5C16.76,13.77 17,12.91 17,12A5,5 0 0,0 12,7C11.09,7 10.23,7.24 9.5,7.67L5.82,4H7M7,12A5,5 0 0,0 12,17C12.5,17 13.03,16.92 13.5,16.77L11.72,15C10.29,14.85 9.15,13.71 9,12.28L7.23,10.5C7.08,10.97 7,11.5 7,12M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9Z";
var mdiCameraOutline = "M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M20,18H4V6H8.05L9.88,4H14.12L15.95,6H20V18M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15Z";
var mdiCameraPartyMode = "M12,17C10.37,17 8.94,16.21 8,15H12A3,3 0 0,0 15,12C15,11.65 14.93,11.31 14.82,11H16.9C16.96,11.32 17,11.66 17,12A5,5 0 0,1 12,17M12,7C13.63,7 15.06,7.79 16,9H12A3,3 0 0,0 9,12C9,12.35 9.07,12.68 9.18,13H7.1C7.03,12.68 7,12.34 7,12A5,5 0 0,1 12,7M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z";
var mdiCameraPlus = "M3 4V1H5V4H8V6H5V9H3V6H0V4M6 10V7H9V4H16L17.8 6H21C22.1 6 23 6.9 23 8V20C23 21.1 22.1 22 21 22H5C3.9 22 3 21.1 3 20V10M13 19C17.45 19 19.69 13.62 16.54 10.46C13.39 7.31 8 9.55 8 14C8 16.76 10.24 19 13 19M9.8 14C9.8 16.85 13.25 18.28 15.26 16.26C17.28 14.25 15.85 10.8 13 10.8C11.24 10.8 9.8 12.24 9.8 14Z";
var mdiCameraPlusOutline = "M21 6H17.8L16 4H10V6H15.1L17 8H21V20H5V11H3V20C3 21.1 3.9 22 5 22H21C22.1 22 23 21.1 23 20V8C23 6.9 22.1 6 21 6M8 14C8 18.45 13.39 20.69 16.54 17.54C19.69 14.39 17.45 9 13 9C10.24 9 8 11.24 8 14M13 11C14.64 11.05 15.95 12.36 16 14C15.95 15.64 14.64 16.95 13 17C11.36 16.95 10.05 15.64 10 14C10.05 12.36 11.36 11.05 13 11M5 6H8V4H5V1H3V4H0V6H3V9H5";
var mdiCameraRear = "M12,6C10.89,6 10,5.1 10,4A2,2 0 0,1 12,2C13.09,2 14,2.9 14,4A2,2 0 0,1 12,6M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z";
var mdiCameraRearVariant = "M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,2A2,2 0 0,0 10,4A2,2 0 0,0 12,6A2,2 0 0,0 14,4A2,2 0 0,0 12,2M13,18H9V20H13V22L16,19L13,16V18Z";
var mdiCameraRetake = "M20,5H17L15,3H9L7,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5M12,18C10.92,18 9.86,17.65 9,17L10.44,15.56C10.91,15.85 11.45,16 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10C10.74,10 9.6,10.8 9.18,12H11L8,15L5,12H7.1C7.65,9.29 10.29,7.55 13,8.1C15.7,8.65 17.45,11.29 16.9,14C16.42,16.33 14.38,18 12,18Z";
var mdiCameraRetakeOutline = "M20,5H16.83L15,3H9L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5M20,19H4V7H8.05L9.88,5H14.12L16,7H20V19M12,18C10.92,18 9.86,17.65 9,17L10.44,15.56C10.91,15.85 11.45,16 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10C10.74,10 9.6,10.8 9.18,12H11L8,15L5,12H7.1C7.65,9.29 10.29,7.55 13,8.1C15.7,8.65 17.45,11.29 16.9,14C16.42,16.33 14.38,18 12,18Z";
var mdiCameraSwitch = "M15,15.5V13H9V15.5L5.5,12L9,8.5V11H15V8.5L18.5,12M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z";
var mdiCameraSwitchOutline = "M20 4H16.8L15 2H9L7.2 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M9.9 4H14.1L15.9 6H20V18H4V6H8.1M15 11H9V8.5L5.5 12L9 15.5V13H15V15.5L18.5 12L15 8.5V11Z";
var mdiCameraTimer = "M4.94,6.35C4.55,5.96 4.55,5.32 4.94,4.93C5.33,4.54 5.96,4.54 6.35,4.93L13.07,10.31L13.42,10.59C14.2,11.37 14.2,12.64 13.42,13.42C12.64,14.2 11.37,14.2 10.59,13.42L10.31,13.07L4.94,6.35M12,20A8,8 0 0,0 20,12C20,9.79 19.1,7.79 17.66,6.34L19.07,4.93C20.88,6.74 22,9.24 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12H4A8,8 0 0,0 12,20M12,1A2,2 0 0,1 14,3A2,2 0 0,1 12,5A2,2 0 0,1 10,3A2,2 0 0,1 12,1Z";
var mdiCameraWireless = "M12,10.8A3.2,3.2 0 0,1 15.2,14A3.2,3.2 0 0,1 12,17.2A3.2,3.2 0 0,1 8.8,14A3.2,3.2 0 0,1 12,10.8M16,3.33V2A6,6 0 0,1 22,8H20.67C20.67,5.42 18.58,3.33 16,3.33M16,6V4.67C17.84,4.67 19.33,6.16 19.33,8H18C18,6.89 17.11,6 16,6M17,9H22V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8A2,2 0 0,1 4,6H7.17L9,4H15V7C16.11,7 17,7.89 17,9M12,19A5,5 0 0,0 17,14A5,5 0 0,0 12,9A5,5 0 0,0 7,14A5,5 0 0,0 12,19Z";
var mdiCameraWirelessOutline = "M20,9V20H4V8H8.05L9.88,6H15V4H9L7.17,6H4A2,2 0 0,0 2,8V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V9H20M20.67,8H22C22,4.68 19.31,2 16,2V3.33C18.58,3.33 20.66,5.41 20.67,8M18,8H19.33C19.32,6.15 17.84,4.67 16,4.67V6C17.11,6 18,6.89 18,8M7,14A5,5 0 0,0 12,19A5,5 0 0,0 17,14A5,5 0 0,0 12,9A5,5 0 0,0 7,14M15,14A3,3 0 0,1 12,17A3,3 0 0,1 9,14A3,3 0 0,1 12,11A3,3 0 0,1 15,14Z";
var mdiCampfire = "M15.9,18.5L21.9,20.1L21.5,22L12.1,19.5L2.7,22L2.2,20.1L8.2,18.5L2.1,16.9L2.6,15L12,17.5L21.4,15L21.9,16.9L15.9,18.5M16.07,7.92C15.91,7.7 15.71,7.5 15.5,7.33C15.05,6.9 14.5,6.59 14.06,6.13C13,5.08 12.79,3.34 13.44,2C12.79,2.17 12.18,2.54 11.67,2.95C9.84,4.46 9.11,7.1 10,9.38C10,9.45 10.04,9.53 10.04,9.62C10.04,9.78 9.93,9.92 9.79,10C9.63,10.05 9.46,10 9.33,9.9C9.28,9.86 9.25,9.82 9.22,9.77C8.42,8.74 8.29,7.26 8.84,6.07C7.65,7.06 7,8.72 7.11,10.29C7.13,10.65 7.18,11 7.3,11.36C7.41,11.8 7.59,12.23 7.82,12.61C8.57,13.86 9.9,14.76 11.32,14.94C12.84,15.14 14.46,14.85 15.63,13.79C16.93,12.59 17.4,10.67 16.71,9L16.61,8.83C16.47,8.5 16.28,8.2 16.04,7.93L16.07,7.92M13.83,12.47C13.63,12.65 13.31,12.83 13.05,12.91C12.26,13.19 11.46,12.79 11,12.31C11.84,12.11 12.34,11.47 12.5,10.83C12.61,10.25 12.39,9.78 12.29,9.22C12.21,8.69 12.22,8.23 12.42,7.73C12.55,8 12.69,8.28 12.86,8.5C13.41,9.22 14.27,9.54 14.45,10.5C14.47,10.63 14.5,10.72 14.5,10.83C14.5,11.43 14.26,12.07 13.82,12.47";
var mdiCancel = "M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z";
var mdiCandle = "M12.5,2C10.84,2 9.5,5.34 9.5,7A3,3 0 0,0 12.5,10A3,3 0 0,0 15.5,7C15.5,5.34 14.16,2 12.5,2M12.5,6.5A1,1 0 0,1 13.5,7.5A1,1 0 0,1 12.5,8.5A1,1 0 0,1 11.5,7.5A1,1 0 0,1 12.5,6.5M10,11A1,1 0 0,0 9,12V20H7A1,1 0 0,1 6,19V18A1,1 0 0,0 5,17A1,1 0 0,0 4,18V19A3,3 0 0,0 7,22H19A1,1 0 0,0 20,21A1,1 0 0,0 19,20H16V12A1,1 0 0,0 15,11H10Z";
var mdiCandycane = "M10,10A2,2 0 0,1 8,12A2,2 0 0,1 6,10V8C6,7.37 6.1,6.77 6.27,6.2L10,9.93V10M12,2C12.74,2 13.44,2.13 14.09,2.38L11.97,6C11.14,6 10.44,6.5 10.15,7.25L7.24,4.34C8.34,2.92 10.06,2 12,2M17.76,6.31L14,10.07V8C14,7.62 13.9,7.27 13.72,6.97L15.83,3.38C16.74,4.13 17.42,5.15 17.76,6.31M18,13.09L14,17.09V12.9L18,8.9V13.09M18,20A2,2 0 0,1 16,22A2,2 0 0,1 14,20V19.91L18,15.91V20Z";
var mdiCannabis = "M11.5,22V17.35C11,18.13 10,19.09 8.03,19.81C8.03,19.81 8.53,18.1 9.94,16.95C8.64,17.23 6.68,17.19 4,16C4,16 6.47,14.59 9.28,14.97C7.69,14 5.7,12.08 4.17,8.11C4.17,8.11 8.67,9.34 10.91,13.14C8.88,8.24 12,2 12,2C14.43,7.47 13.91,11.1 13.12,13.1C15.37,9.33 19.83,8.11 19.83,8.11C18.3,12.08 16.31,14 14.72,14.97C17.53,14.59 20,16 20,16C17.32,17.19 15.36,17.23 14.06,16.95C15.47,18.1 15.97,19.81 15.97,19.81C14,19.09 13,18.13 12.5,17.35V22H11.5Z";
var mdiCannabisOff = "M16.62 13.42L14.5 11.32C16.84 8.94 19.83 8.11 19.83 8.11C18.87 10.6 17.73 12.27 16.62 13.42M12 2C12 2 10.86 4.3 10.41 7.21L13.72 10.5C13.92 8.45 13.61 5.63 12 2M20.84 22.73L22.11 21.46L2.39 1.73L1.11 3L8.62 10.5C6.5 8.75 4.17 8.11 4.17 8.11C5.7 12.08 7.69 14 9.28 14.97C6.47 14.59 4 16 4 16C6.68 17.19 8.64 17.23 9.94 16.95C8.53 18.1 8.03 19.81 8.03 19.81C10 19.09 11 18.13 11.5 17.35V22H12.5V17.35C13 18.13 14 19.09 15.97 19.81C15.97 19.81 15.47 18.1 14.06 16.95C14.39 17 14.77 17.07 15.2 17.09L20.84 22.73Z";
var mdiCapsLock = "M9.96,13.71L12,8.29L14.03,13.72M11.14,6L6.43,18H8.36L9.32,15.43H14.68L15.64,18H17.57L12.86,6H11.14M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.9,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.1,2 20,2M20,20H4V4H20V20Z";
var mdiCar = "M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z";
var mdiCar2Plus = "M8 16C8 13.6 9.1 11.5 10.7 10H3L4.5 5.5H15.5L16.3 8C16.9 8 17.5 8.1 18 8.3L16.9 5C16.7 4.4 16.1 4 15.5 4H4.5C3.8 4 3.3 4.4 3.1 5L1 11V19C1 19.5 1.5 20 2 20H3C3.5 20 4 19.5 4 19V18H8.3C8.1 17.4 8 16.7 8 16M4.5 15C3.7 15 3 14.3 3 13.5S3.7 12 4.5 12 6 12.7 6 13.5 5.3 15 4.5 15M16 20V18H13V17H14C15.1 17 16 16.1 16 15V14C16 12.9 15.1 12 14 12H11V14H14V15H13C11.9 15 11 15.9 11 17V20M23 17H21V19H19V17H17V15H19V13H21V15H23V17Z";
var mdiCar3Plus = "M16.9 5C16.7 4.4 16.1 4 15.5 4H4.5C3.8 4 3.3 4.4 3.1 5L1 11V19C1 19.5 1.5 20 2 20H3C3.5 20 4 19.5 4 19V18H8.3C8.1 17.4 8 16.7 8 16C8 13.6 9.1 11.5 10.7 10H3L4.5 5.5H15.5L16.3 8C16.9 8 17.5 8.1 18 8.3L16.9 5M4.5 12C5.3 12 6 12.7 6 13.5S5.3 15 4.5 15 3 14.3 3 13.5 3.7 12 4.5 12M23 17H21V19H19V17H17V15H19V13H21V15H23V17M14.5 16C15.3 16 16 14.8 16 14C16 12.9 15.1 12 14 12H11V14H14V15H12V17H14V18H11V20H14C15.1 20 16 19.1 16 18C16 17.2 15.3 16 14.5 16Z";
var mdiCarArrowLeft = "M12 18C12 14.69 14.69 12 18 12C19.09 12 20.12 12.3 21 12.81V12L18.92 6C18.72 5.42 18.16 5 17.5 5H6.5C5.84 5 5.28 5.42 5.08 6L3 12V20C3 20.55 3.45 21 4 21H5C5.55 21 6 20.55 6 20V19H12.09C12.04 18.67 12 18.34 12 18M6.5 6.5H17.5L19 11H5L6.5 6.5M6.5 16C5.67 16 5 15.33 5 14.5S5.67 13 6.5 13 8 13.67 8 14.5 7.33 16 6.5 16M18 15V17H22V19H18V21L15 18L18 15";
var mdiCarArrowRight = "M12 18C12 14.69 14.69 12 18 12C19.09 12 20.12 12.3 21 12.81V12L18.92 6C18.72 5.42 18.16 5 17.5 5H6.5C5.84 5 5.28 5.42 5.08 6L3 12V20C3 20.55 3.45 21 4 21H5C5.55 21 6 20.55 6 20V19H12.09C12.04 18.67 12 18.34 12 18M6.5 6.5H17.5L19 11H5L6.5 6.5M6.5 16C5.67 16 5 15.33 5 14.5S5.67 13 6.5 13 8 13.67 8 14.5 7.33 16 6.5 16M19 21V19H15V17H19V15L22 18L19 21";
var mdiCarBack = "M6,11L7,7H17L18,11M18.92,6C18.71,5.4 18.14,5 17.5,5H6.5C5.86,5 5.29,5.4 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V18H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6M7,16H5V14H7V16M19,16H17V14H19V16M14,16H10V14H14V16Z";
var mdiCarBattery = "M4,3V6H1V20H23V6H20V3H14V6H10V3H4M3,8H21V18H3V8M15,10V12H13V14H15V16H17V14H19V12H17V10H15M5,12V14H11V12H5Z";
var mdiCarBrakeAbs = "M24,12C24,15.31 22.66,18.31 20.5,20.5L19.42,19.42C21.32,17.5 22.5,14.9 22.5,12C22.5,9.11 21.32,6.5 19.42,4.58L20.5,3.5C22.66,5.69 24,8.69 24,12M20,9.6V8H16.8C15.92,8 15.2,8.72 15.2,9.6V11.2A1.6,1.6 0 0,0 16.8,12.8H18.4V14.4H15.2V16H18.4C19.28,16 20,15.28 20,14.4V12.8A1.6,1.6 0 0,0 18.4,11.2H16.8V9.6H20M8.42,6C9.47,5.37 10.69,5 12,5C13.31,5 14.53,5.37 15.58,6H18.69C17.05,4.16 14.66,3 12,3C9.34,3 6.95,4.16 5.31,6H8.42M13.2,12C13.84,12 14.4,12.56 14.4,13.2V14.4A1.6,1.6 0 0,1 12.8,16H9.6V8H12.8A1.6,1.6 0 0,1 14.4,9.6V10.8C14.4,11.44 13.84,12 13.2,12M12.8,12.8H11.2V14.4H12.8V12.8M12.8,9.6H11.2V11.2H12.8V9.6M4.58,4.58L3.5,3.5C1.34,5.69 0,8.69 0,12C0,15.31 1.34,18.31 3.5,20.5L4.58,19.42C2.68,17.5 1.5,14.9 1.5,12C1.5,9.11 2.68,6.5 4.58,4.58M7.2,16V12.8H5.6V16H4V9.6A1.6,1.6 0 0,1 5.6,8H7.2C8.08,8 8.8,8.72 8.8,9.6V16H7.2M7.2,11.2V9.6H5.6V11.2H7.2M15.58,18C14.53,18.63 13.31,19 12,19C10.69,19 9.47,18.63 8.42,18H5.31C6.95,19.84 9.34,21 12,21C14.66,21 17.05,19.84 18.69,18H15.58Z";
var mdiCarBrakeAlert = "M11,15H13V17H11V15M11,7H13V13H11V7M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M12,19C8.14,19 5,15.86 5,12C5,8.14 8.14,5 12,5C15.86,5 19,8.14 19,12C19,15.86 15.86,19 12,19M20.5,20.5C22.66,18.31 24,15.31 24,12C24,8.69 22.66,5.69 20.5,3.5L19.42,4.58C21.32,6.5 22.5,9.11 22.5,12C22.5,14.9 21.32,17.5 19.42,19.42L20.5,20.5M4.58,19.42C2.68,17.5 1.5,14.9 1.5,12C1.5,9.11 2.68,6.5 4.58,4.58L3.5,3.5C1.34,5.69 0,8.69 0,12C0,15.31 1.34,18.31 3.5,20.5L4.58,19.42Z";
var mdiCarBrakeHold = "M12,3C7,3 3,7 3,12C3,17 7,21 12,21C17,21 21,17 21,12C21,7 17,3 12,3M12,19C8.1,19 5,15.9 5,12C5,8.1 8.1,5 12,5C15.9,5 19,8.1 19,12C19,15.9 15.9,19 12,19M20.5,20.5C22.7,18.3 24,15.3 24,12C24,8.7 22.7,5.7 20.5,3.5L19.4,4.6C21.3,6.5 22.5,9.1 22.5,12C22.5,14.9 21.3,17.5 19.4,19.4L20.5,20.5M4.6,19.4C2.7,17.5 1.5,14.9 1.5,12C1.5,9.1 2.7,6.5 4.6,4.6L3.5,3.5C1.3,5.7 0,8.7 0,12C0,15.3 1.3,18.3 3.5,20.5L4.6,19.4M9,7V17H11V13H13V17H15V7H13V11H11V7H9Z";
var mdiCarBrakeParking = "M12,3C7,3 3,7 3,12C3,17 7,21 12,21C17,21 21,17 21,12C21,7 17,3 12,3M12,19C8.1,19 5,15.9 5,12C5,8.1 8.1,5 12,5C15.9,5 19,8.1 19,12C19,15.9 15.9,19 12,19M20.5,20.5C22.7,18.3 24,15.3 24,12C24,8.7 22.7,5.7 20.5,3.5L19.4,4.6C21.3,6.5 22.5,9.1 22.5,12C22.5,14.9 21.3,17.5 19.4,19.4L20.5,20.5M4.6,19.4C2.7,17.5 1.5,14.9 1.5,12C1.5,9.1 2.7,6.5 4.6,4.6L3.5,3.5C1.3,5.7 0,8.7 0,12C0,15.3 1.3,18.3 3.5,20.5L4.6,19.4M9.5,7V17H11.5V13H13.5A2,2 0 0,0 15.5,11V9A2,2 0 0,0 13.5,7H9.5M11.5,9H13.5V11H11.5V9Z";
var mdiCarBrakeRetarder = "M12 3C7 3 3 7 3 12S7 21 12 21 21 17 21 12 17 3 12 3M12 19C8.1 19 5 15.9 5 12S8.1 5 12 5 19 8.1 19 12 15.9 19 12 19M20.5 20.5C22.7 18.3 24 15.3 24 12S22.7 5.7 20.5 3.5L19.4 4.6C21.3 6.5 22.5 9.1 22.5 12S21.3 17.5 19.4 19.4L20.5 20.5M4.6 19.4C2.7 17.5 1.5 14.9 1.5 12S2.7 6.5 4.6 4.6L3.5 3.5C1.3 5.7 0 8.7 0 12S1.3 18.3 3.5 20.5L4.6 19.4M15.3 10.5C15.96 10.5 16.5 11.17 16.5 12C16.5 12.81 15.95 13.5 15.3 13.5C14.93 13.5 14.66 13.29 14.5 13.11L14.47 13.08L14.44 13.05L13.38 12L14.47 10.92L14.5 10.89L14.53 10.86C14.74 10.63 15 10.5 15.3 10.5M8.7 10.5C9.07 10.5 9.34 10.71 9.5 10.88L9.5 10.92L9.56 10.95L10.62 12L9.53 13.08L9.5 13.11L9.47 13.15C9.26 13.37 9 13.5 8.7 13.5C8.05 13.5 7.5 12.81 7.5 12S8.05 10.5 8.7 10.5M15.3 9C14.58 9 13.9 9.31 13.42 9.85L12 11.25L10.61 9.88C10.1 9.31 9.42 9 8.7 9C7.21 9 6 10.35 6 12S7.21 15 8.7 15C9.42 15 10.1 14.69 10.59 14.15L12 12.75L13.39 14.12C13.9 14.68 14.58 15 15.3 15C16.79 15 18 13.65 18 12C18 10.33 16.79 9 15.3 9Z";
var mdiCarChildSeat = "M17 4.5C17 5.9 15.9 7 14.5 7S12 5.9 12 4.5 13.1 2 14.5 2 17 3.1 17 4.5M15 8H14.2C12.1 8 10.1 6.8 9.1 4.9C9 4.8 8.9 4.7 8.9 4.6L7.1 5.4C7.6 6.8 9.2 8.6 11.5 9.5L9.7 14.5L5.8 13.4L3 18.9L5 19.4L6.8 15.8L11.3 17C12.3 17.2 13.3 16.7 13.7 15.8L16 9.4C16.2 8.7 15.7 8 15 8M18.9 7L15.5 16.4C14.9 18 13.4 19 11.8 19C11.5 19 11.1 19 10.8 18.9L7.9 18.1L7 19.9L9 20.4L10.4 20.8C10.9 20.9 11.4 21 11.9 21C14.4 21 16.6 19.5 17.5 17.1L21 7H18.9Z";
var mdiCarClutch = "M10 18.84L14 20.7V23L8 20V14H5V10H8V4L14 1V3.3L10 5.16V18.84M19 10H15V5.41L12 6.8V17.2L15 18.6V14H19V10Z";
var mdiCarCog = "M6.5 5C5.84 5 5.28 5.42 5.08 6L3 12V20A1 1 0 0 0 4 21H5A1 1 0 0 0 6 20V19H11.3A7 7 0 0 1 11 17A7 7 0 0 1 14.41 11H5L6.5 6.5H17.5L18.68 10.03A7 7 0 0 1 20.47 10.46L18.92 6C18.72 5.42 18.16 5 17.5 5H6.5M17 12C16.87 12 16.76 12.09 16.74 12.21L16.55 13.53C16.25 13.66 15.96 13.82 15.7 14L14.46 13.5C14.35 13.5 14.22 13.5 14.15 13.63L13.15 15.36C13.09 15.47 13.11 15.6 13.21 15.68L14.27 16.5C14.25 16.67 14.24 16.83 14.24 17C14.24 17.17 14.25 17.33 14.27 17.5L13.21 18.32C13.12 18.4 13.09 18.53 13.15 18.64L14.15 20.37C14.21 20.5 14.34 20.5 14.46 20.5L15.7 20C15.96 20.18 16.24 20.35 16.55 20.47L16.74 21.79C16.76 21.91 16.86 22 17 22H19C19.11 22 19.22 21.91 19.24 21.79L19.43 20.47C19.73 20.34 20 20.18 20.27 20L21.5 20.5C21.63 20.5 21.76 20.5 21.83 20.37L22.83 18.64C22.89 18.53 22.86 18.4 22.77 18.32L21.7 17.5C21.72 17.33 21.74 17.17 21.74 17C21.74 16.83 21.73 16.67 21.7 16.5L22.76 15.68C22.85 15.6 22.88 15.47 22.82 15.36L21.82 13.63C21.76 13.5 21.63 13.5 21.5 13.5L20.27 14C20 13.82 19.73 13.65 19.42 13.53L19.23 12.21C19.22 12.09 19.11 12 19 12H17M6.5 13A1.5 1.5 0 0 1 8 14.5A1.5 1.5 0 0 1 6.5 16A1.5 1.5 0 0 1 5 14.5A1.5 1.5 0 0 1 6.5 13M18 15.5C18.83 15.5 19.5 16.17 19.5 17C19.5 17.83 18.83 18.5 18 18.5C17.16 18.5 16.5 17.83 16.5 17C16.5 16.17 17.17 15.5 18 15.5Z";
var mdiCarConnected = "M5,14H19L17.5,9.5H6.5L5,14M17.5,19A1.5,1.5 0 0,0 19,17.5A1.5,1.5 0 0,0 17.5,16A1.5,1.5 0 0,0 16,17.5A1.5,1.5 0 0,0 17.5,19M6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19M18.92,9L21,15V23A1,1 0 0,1 20,24H19A1,1 0 0,1 18,23V22H6V23A1,1 0 0,1 5,24H4A1,1 0 0,1 3,23V15L5.08,9C5.28,8.42 5.85,8 6.5,8H17.5C18.15,8 18.72,8.42 18.92,9M12,0C14.12,0 16.15,0.86 17.65,2.35L16.23,3.77C15.11,2.65 13.58,2 12,2C10.42,2 8.89,2.65 7.77,3.77L6.36,2.35C7.85,0.86 9.88,0 12,0M12,4C13.06,4 14.07,4.44 14.82,5.18L13.4,6.6C13.03,6.23 12.53,6 12,6C11.5,6 10.97,6.23 10.6,6.6L9.18,5.18C9.93,4.44 10.94,4 12,4Z";
var mdiCarConvertible = "M16,6L15,6.75L17.5,10H13.5V8.5H12V10H3C1.89,10 1,10.89 1,12V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z";
var mdiCarCoolantLevel = "M19 7V5H21V3H13V5H15V7H1V21H23V7H19M21 14.42C20.71 14.13 20.5 14 20 14C19.33 14 19.21 14.21 18.71 14.71S17.33 16 16 16 13.79 15.21 13.29 14.71 12.67 14 12 14C11.78 14 11.63 14.03 11.5 14.08C11.22 14.18 11.05 14.37 10.71 14.71C10.21 15.21 9.33 16 8 16S5.79 15.21 5.29 14.71 4.67 14 4 14C3.5 14 3.29 14.13 3 14.42V9H21V14.42Z";
var mdiCarCruiseControl = "M22,15C22,17.6 20.8,19.9 18.9,21.3L18.4,20.8L16.3,18.7L17.7,17.3L18.9,18.5C19.4,17.8 19.8,16.9 19.9,16H18V14H19.9C19.7,13.1 19.4,12.3 18.9,11.5L17.7,12.7L16.3,11.3L17.5,10.1C16.8,9.6 15.9,9.2 15,9.1V11H13V9.1C12.1,9.3 11.3,9.6 10.5,10.1L13.5,13.1C13.7,13.1 13.8,13 14,13A2,2 0 0,1 16,15A2,2 0 0,1 14,17A2,2 0 0,1 12,15C12,14.8 12,14.7 12.1,14.5L9.1,11.5C8.6,12.2 8.2,13.1 8.1,14H10V16H8.1C8.3,16.9 8.6,17.7 9.1,18.5L10.3,17.3L11.7,18.7L9.1,21.3C7.2,19.9 6,17.6 6,15A8,8 0 0,1 14,7A8,8 0 0,1 22,15M6.7,5.3L3.4,2L2,3.4L5.3,6.7L4,8H8V4L6.7,5.3Z";
var mdiCarDefrostFront = "M15,23C14.7,23 14.5,22.9 14.3,22.7C13.9,22.3 14,21.7 14.4,21.3V21.3C14.9,20.9 16.1,19.5 16.1,18.4C16.1,17.8 15.7,17.2 15.3,16.5C14.8,15.7 14.1,14.7 14.1,13.5C14.1,11.2 15.4,10.3 15.6,10.2C16.1,9.9 16.7,10.1 17,10.5C17.3,11 17.1,11.6 16.7,11.9V11.9C16.7,11.9 16.2,12.3 16.2,13.5C16.2,14.1 16.6,14.7 17,15.4C17.5,16.2 18.2,17.2 18.2,18.4C18.2,20.6 16.1,22.6 15.9,22.8C15.5,22.9 15.2,23 15,23M11.7,22.7C11.9,22.5 14,20.5 14,18.3C14,17.1 13.4,16.1 12.8,15.3C12.4,14.6 12,14 12,13.4C12,12.2 12.5,11.8 12.5,11.8V11.8C13,11.5 13.1,10.9 12.8,10.4C12.5,9.9 11.9,9.8 11.4,10.1C11.2,10.2 9.9,11.1 9.9,13.4C9.9,14.6 10.5,15.6 11.1,16.4C11.5,17.1 11.9,17.7 11.9,18.3C11.9,19.4 10.7,20.8 10.2,21.2V21.2C9.8,21.6 9.8,22.2 10.1,22.6C10.3,22.8 10.6,22.9 10.8,22.9C11.2,23 11.5,22.9 11.7,22.7M7.7,22.7C7.9,22.5 10,20.5 10,18.3C10,17.1 9.4,16.1 8.8,15.3C8.4,14.7 8,14.1 8,13.4C8,12.2 8.5,11.8 8.5,11.8V11.8C9,11.5 9.1,10.9 8.8,10.4C8.6,10 7.9,9.9 7.5,10.1C7.3,10.2 6,11.1 6,13.4C6,14.6 6.6,15.6 7.2,16.4C7.6,17.1 8,17.7 8,18.3C8,19.4 6.8,20.8 6.3,21.2V21.2C5.9,21.6 5.9,22.2 6.2,22.6C6.5,22.9 6.7,23 7,23C7.2,23 7.5,22.9 7.7,22.7M12,3C9.4,3 1,3.3 1,7C1,9.4 2.2,15.4 2.8,18H4L4.8,18H5V16H4.4C3.8,13.1 3,8.8 3,7C3,6 7.4,5 12,5C16.6,5 21,6 21,7C21,8.8 20.2,13.1 19.6,16H19V18H19.2L20,18H21.2C21.8,15.4 23,9.4 23,7C23,3.3 14.6,3 12,3Z";
var mdiCarDefrostRear = "M10,18.3C10,20.5 7.9,22.5 7.7,22.7C7.5,22.9 7.2,23 7,23C6.7,23 6.5,22.9 6.2,22.6C5.9,22.2 5.9,21.6 6.3,21.2C6.8,20.8 8,19.4 8,18.3C8,17.7 7.6,17.1 7.2,16.4C6.6,15.6 6,14.6 6,13.4C6,11.1 7.3,10.2 7.5,10.1C7.9,9.9 8.6,10 8.8,10.4C9.1,10.9 9,11.5 8.5,11.8C8.5,11.8 8,12.2 8,13.4C8,14.1 8.4,14.7 8.8,15.3C9.4,16.1 10,17.1 10,18.3M12,13.4C12,12.2 12.5,11.8 12.5,11.8C13,11.5 13.1,10.9 12.8,10.4C12.5,9.9 11.9,9.8 11.4,10.1C11.2,10.2 9.9,11.1 9.9,13.4C9.9,14.6 10.5,15.6 11.1,16.4C11.5,17.1 11.9,17.7 11.9,18.3C11.9,19.4 10.7,20.8 10.2,21.2C9.8,21.6 9.8,22.2 10.1,22.6C10.3,22.8 10.6,22.9 10.8,22.9C11.2,23 11.5,22.9 11.7,22.7C11.9,22.5 14,20.5 14,18.3C14,17.1 13.4,16.1 12.8,15.3C12.4,14.6 12,14 12,13.4M20,3H4A2,2 0 0,0 2,5V16A2,2 0 0,0 4,18H5V16H4V5H20V16H19V18H20A2,2 0 0,0 22,16V5A2,2 0 0,0 20,3M16.2,13.5C16.2,12.3 16.7,11.9 16.7,11.9C17.1,11.6 17.3,11 17,10.5C16.7,10.1 16.1,9.9 15.6,10.2C15.4,10.3 14.1,11.2 14.1,13.5C14.1,14.7 14.8,15.7 15.3,16.5C15.7,17.2 16.1,17.8 16.1,18.4C16.1,19.5 14.9,20.9 14.4,21.3C14,21.7 13.9,22.3 14.3,22.7C14.5,22.9 14.7,23 15,23C15.2,23 15.5,22.9 15.9,22.8C16.1,22.6 18.2,20.6 18.2,18.4C18.2,17.2 17.5,16.2 17,15.4C16.6,14.7 16.2,14.1 16.2,13.5Z";
var mdiCarDoor = "M19,14H16V16H19V14M22,21H3V11L11,3H21A1,1 0 0,1 22,4V21M11.83,5L5.83,11H20V5H11.83Z";
var mdiCarDoorLock = "M21 3H11L3 11V12H4.5C7.5 12 10 14.91 10 18.5V21H22V4A1 1 0 0 0 21 3M19 16H16V14H19M20 11H5.83L11.83 5H20M7 17V16.5A2.5 2.5 0 0 0 2 16.5V17A1 1 0 0 0 1 18V22A1 1 0 0 0 2 23H7A1 1 0 0 0 8 22V18A1 1 0 0 0 7 17M6.2 17H2.8V16.5A1.7 1.7 0 0 1 6.2 16.5Z";
var mdiCarElectric = "M18.92 2C18.72 1.42 18.16 1 17.5 1H6.5C5.84 1 5.29 1.42 5.08 2L3 8V16C3 16.55 3.45 17 4 17H5C5.55 17 6 16.55 6 16V15H18V16C18 16.55 18.45 17 19 17H20C20.55 17 21 16.55 21 16V8L18.92 2M6.5 12C5.67 12 5 11.33 5 10.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12M17.5 12C16.67 12 16 11.33 16 10.5S16.67 9 17.5 9 19 9.67 19 10.5 18.33 12 17.5 12M5 7L6.5 2.5H17.5L19 7H5M7 20H11V18L17 21H13V23L7 20Z";
var mdiCarElectricOutline = "M18.92 2C18.72 1.42 18.16 1 17.5 1H6.5C5.84 1 5.29 1.42 5.08 2L3 8V16C3 16.55 3.45 17 4 17H5C5.55 17 6 16.55 6 16V15H18V16C18 16.55 18.45 17 19 17H20C20.55 17 21 16.55 21 16V8L18.92 2M6.85 3H17.14L18.22 6.11H5.77L6.85 3M19 13H5V8H19V13M7.5 9C8.33 9 9 9.67 9 10.5S8.33 12 7.5 12 6 11.33 6 10.5 6.67 9 7.5 9M16.5 9C17.33 9 18 9.67 18 10.5S17.33 12 16.5 12C15.67 12 15 11.33 15 10.5S15.67 9 16.5 9M7 20H11V18L17 21H13V23L7 20Z";
var mdiCarEmergency = "M11 0V3H13V0H11M7.88 1.46L6.46 2.87L8.59 5L10 3.58L7.88 1.46M16.12 1.46L14 3.58L15.41 5L17.54 2.88L16.12 1.46M12 5A2 2 0 0 0 10 7V8H6.5C5.84 8 5.28 8.42 5.08 9L3 15V23A1 1 0 0 0 4 24H5A1 1 0 0 0 6 23V22H18V23A1 1 0 0 0 19 24H20A1 1 0 0 0 21 23V15L18.92 9C18.72 8.42 18.16 8 17.5 8H14V7A2 2 0 0 0 12 5M6.5 9.5H17.5L19 14H5L6.5 9.5M6.5 16A1.5 1.5 0 0 1 8 17.5A1.5 1.5 0 0 1 6.5 19A1.5 1.5 0 0 1 5 17.5A1.5 1.5 0 0 1 6.5 16M17.5 16A1.5 1.5 0 0 1 19 17.5A1.5 1.5 0 0 1 17.5 19A1.5 1.5 0 0 1 16 17.5A1.5 1.5 0 0 1 17.5 16Z";
var mdiCarEsp = "M5.31,6C6.95,4.16 9.34,3 12,3C14.66,3 17.05,4.16 18.69,6H15.58C14.53,5.37 13.31,5 12,5C10.69,5 9.47,5.37 8.42,6H5.31M14.4,9.6V8H11.2A1.6,1.6 0 0,0 9.6,9.6V11.2C9.6,12.08 10.32,12.8 11.2,12.8H12.8V14.4H9.6V16H12.8A1.6,1.6 0 0,0 14.4,14.4V12.8C14.4,11.92 13.68,11.2 12.8,11.2H11.2V9.6H14.4M18.4,8H15.2V16H16.8V12.8H18.4A1.6,1.6 0 0,0 20,11.2V9.6C20,8.72 19.28,8 18.4,8M18.4,11.2H16.8V9.6H18.4V11.2M8.8,9.6V8H4V16H8.8V14.4H5.6V12.8H8.8V11.2H5.6V9.6H8.8M15.58,18C14.53,18.63 13.31,19 12,19C10.69,19 9.47,18.63 8.42,18H5.31C6.95,19.84 9.34,21 12,21C14.66,21 17.05,19.84 18.69,18H15.58M20.5,3.5L19.42,4.58C21.32,6.5 22.5,9.11 22.5,12C22.5,14.9 21.32,17.5 19.42,19.42L20.5,20.5C22.66,18.31 24,15.31 24,12C24,8.69 22.66,5.69 20.5,3.5M4.58,4.58L3.5,3.5C1.34,5.69 0,8.69 0,12C0,15.31 1.34,18.31 3.5,20.5L4.58,19.42C2.68,17.5 1.5,14.9 1.5,12C1.5,9.11 2.68,6.5 4.58,4.58Z";
var mdiCarEstate = "M3,6H16L19,10H21C22.11,10 23,10.89 23,12V15H21A3,3 0 0,1 18,18A3,3 0 0,1 15,15H9A3,3 0 0,1 6,18A3,3 0 0,1 3,15H1V8C1,6.89 1.89,6 3,6M2.5,7.5V10H10.5V7.5H2.5M12,7.5V10H17.14L15.25,7.5H12M6,13.5A1.5,1.5 0 0,0 4.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 6,13.5M18,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,16.5A1.5,1.5 0 0,0 19.5,15A1.5,1.5 0 0,0 18,13.5Z";
var mdiCarHatchback = "M16,6H6L1,12V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6M6.5,7.5H10.5V10H4.5L6.5,7.5M12,7.5H15.5L17.46,10H12V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z";
var mdiCarInfo = "M19 15H17V13H19M20 20V22H16V20H17V18H16V16H19V20M18.92 5A1.5 1.5 0 0 0 17.5 4H6.5A1.5 1.5 0 0 0 5.08 5L3 11V19A1 1 0 0 0 4 20H5A1 1 0 0 0 6 19V18H11A7 7 0 0 1 18 11A6.84 6.84 0 0 1 21 11.68V11M6.5 15A1.5 1.5 0 1 1 8 13.5A1.5 1.5 0 0 1 6.5 15M5 10L6.5 5.5H17.5L19 10Z";
var mdiCarKey = "M9.5,0A3,3 0 0,0 6.5,3A3,3 0 0,0 9.5,6C10.81,6 11.92,5.17 12.33,4H14.5V6H16.5V4H17.5V2H12.33C11.92,0.83 10.81,0 9.5,0M9.5,2A1,1 0 0,1 10.5,3A1,1 0 0,1 9.5,4A1,1 0 0,1 8.5,3A1,1 0 0,1 9.5,2M6.5,8C5.84,8 5.28,8.42 5.08,9L3,15V23A1,1 0 0,0 4,24H5A1,1 0 0,0 6,23V22H18V23A1,1 0 0,0 19,24H20A1,1 0 0,0 21,23V15L18.92,9C18.72,8.42 18.16,8 17.5,8H6.5M6.5,9.5H17.5L19,14H5L6.5,9.5M6.5,16A1.5,1.5 0 0,1 8,17.5A1.5,1.5 0 0,1 6.5,19A1.5,1.5 0 0,1 5,17.5A1.5,1.5 0 0,1 6.5,16M17.5,16A1.5,1.5 0 0,1 19,17.5A1.5,1.5 0 0,1 17.5,19A1.5,1.5 0 0,1 16,17.5A1.5,1.5 0 0,1 17.5,16Z";
var mdiCarLiftedPickup = "M18 14L18.79 14.1L18.77 14.33L19.24 14.5L19.39 14.34C19.89 14.6 20.32 15 20.6 15.5L20.43 15.67L20.63 16.12L20.86 16.1C20.95 16.39 21 16.69 21 17L20.9 17.78L20.66 17.77L20.47 18.24L20.66 18.39C20.39 18.9 20 19.32 19.5 19.6L19.33 19.42L18.87 19.62L18.89 19.86C18.61 19.95 18.31 20 18 20L17.21 19.9L17.22 19.65L16.76 19.47L16.6 19.66C16.1 19.39 15.67 19 15.39 18.5L15.57 18.32L15.37 17.86L15.13 17.88C15.05 17.6 15 17.31 15 17L15.11 16.2L15.34 16.21L15.53 15.75L15.35 15.6C15.62 15.09 16 14.68 16.5 14.39L16.67 14.56L17.13 14.36L17.11 14.14C17.39 14.05 17.69 14 18 14M18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5M6 14L6.79 14.1L6.77 14.33L7.24 14.5L7.39 14.34C7.89 14.6 8.32 15 8.6 15.5L8.43 15.67L8.63 16.12L8.86 16.1C8.95 16.39 9 16.69 9 17L8.9 17.78L8.65 17.77L8.47 18.24L8.66 18.39C8.39 18.9 8 19.32 7.5 19.6L7.33 19.42L6.87 19.62L6.89 19.86C6.61 19.95 6.31 20 6 20L5.21 19.9L5.22 19.65L4.76 19.47L4.6 19.66C4.1 19.39 3.67 19 3.39 18.5L3.57 18.32L3.37 17.86L3.13 17.88C3.05 17.6 3 17.31 3 17L3.11 16.2L3.34 16.21L3.53 15.75L3.35 15.6C3.62 15.09 4 14.68 4.5 14.39L4.67 14.56L5.13 14.36L5.11 14.14C5.39 14.05 5.69 14 6 14M6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5M16 6L19 10H21C22.11 10 23 10.89 23 12V15H21C21 13.34 19.66 12 18 12C16.34 12 15 13.34 15 15H9C9 13.34 7.66 12 6 12C4.34 12 3 13.34 3 15H1V10H10.5V6L16 6M12 7.5V10H17.46L15.5 7.5H12Z";
var mdiCarLightDimmed = "M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 15.9,17.1 13.1,17.2M8,10.5C8,11 7.9,11.5 7.9,12C7.9,12.2 7.9,12.4 7.9,12.6L2.4,14L1.9,12.1L8,10.5M2,7L9.4,5.1C9.2,5.4 9,5.8 8.9,6.3C8.8,6.6 8.7,7 8.6,7.4L2.5,8.9L2,7M8.2,15.5C8.3,16.2 8.5,16.9 8.7,17.4L2.4,19L1.9,17.1L8.2,15.5Z";
var mdiCarLightFog = "M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 16,17.1 13.1,17.2M6,8V11H8C8,11.3 8,11.7 8,12C8,12.3 8,12.7 8,13H6V16H8.4C8.6,16.7 8.8,17.4 9,18H6V21H4V18H2V16H4V13H2V11H4V8H2V6H4V3H6V6H9C9,6.1 8.9,6.2 8.9,6.4C8.7,6.9 8.5,7.4 8.4,8H6Z";
var mdiCarLightHigh = "M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 16,17.1 13.1,17.2M2,5H9.5C9.3,5.4 9,5.8 8.9,6.4C8.8,6.6 8.8,6.8 8.7,7H2V5M8,11H2V9H8.2C8.1,9.6 8.1,10.3 8,11M8.7,17C8.9,17.8 9.2,18.4 9.6,19H2.1V17H8.7M8.2,15H2V13H8C8.1,13.7 8.1,14.4 8.2,15Z";
var mdiCarLimousine = "M1,6L2.5,7.5L1,9L2.5,10.5L1,12L2.5,13.5L1,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6H1M4.62,7.5H10.5V10H4.12L3.12,9L4.62,7.5M12,7.5H15.5L17.46,10H12V7.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z";
var mdiCarMultiple = "M8,11L9.5,6.5H18.5L20,11M18.5,16A1.5,1.5 0 0,1 17,14.5A1.5,1.5 0 0,1 18.5,13A1.5,1.5 0 0,1 20,14.5A1.5,1.5 0 0,1 18.5,16M9.5,16A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 9.5,13A1.5,1.5 0 0,1 11,14.5A1.5,1.5 0 0,1 9.5,16M19.92,6C19.71,5.4 19.14,5 18.5,5H9.5C8.86,5 8.29,5.4 8.08,6L6,12V20A1,1 0 0,0 7,21H8A1,1 0 0,0 9,20V19H19V20A1,1 0 0,0 20,21H21A1,1 0 0,0 22,20V12L19.92,6M14.92,3C14.71,2.4 14.14,2 13.5,2H4.5C3.86,2 3.29,2.4 3.08,3L1,9V17A1,1 0 0,0 2,18H3A1,1 0 0,0 4,17V12.91C3.22,12.63 2.82,11.77 3.1,11C3.32,10.4 3.87,10 4.5,10H4.57L5.27,8H3L4.5,3.5H15.09L14.92,3Z";
var mdiCarOff = "M20.5,19.85L6.41,5.76L2.41,1.76L1.11,3L4.57,6.46L3,11V19A1,1 0 0,0 4,20H5A1,1 0 0,0 6,19V18H16.11L20.84,22.73L22.11,21.46L20.5,19.85M6.5,15A1.5,1.5 0 0,1 5,13.5A1.5,1.5 0 0,1 6.5,12A1.5,1.5 0 0,1 8,13.5A1.5,1.5 0 0,1 6.5,15M5,10L5.78,7.67L8.11,10H5M17.5,5.5L19,10H13.2L16.12,12.92C16.5,12.17 17.37,11.86 18.12,12.21C18.87,12.57 19.18,13.47 18.83,14.21C18.68,14.5 18.43,14.77 18.12,14.92L21,17.8V11L18.92,5C18.71,4.4 18.14,4 17.5,4H7.2L8.7,5.5H17.5Z";
var mdiCarOutline = "M18.9 6C18.7 5.4 18.1 5 17.5 5H6.5C5.8 5 5.3 5.4 5.1 6L3 12V20C3 20.5 3.5 21 4 21H5C5.6 21 6 20.5 6 20V19H18V20C18 20.5 18.5 21 19 21H20C20.5 21 21 20.5 21 20V12L18.9 6M6.8 7H17.1L18.2 10H5.8L6.8 7M19 17H5V12H19V17M7.5 13C8.3 13 9 13.7 9 14.5S8.3 16 7.5 16 6 15.3 6 14.5 6.7 13 7.5 13M16.5 13C17.3 13 18 13.7 18 14.5S17.3 16 16.5 16C15.7 16 15 15.3 15 14.5S15.7 13 16.5 13Z";
var mdiCarParkingLights = "M7.3,9.2C8.1,9.6 9,10.5 9,12C9,13.5 8.1,14.4 7.3,14.8C6.9,13.4 6.9,10.6 7.3,9.2M6.5,7C4.5,7 4.5,17 6.5,17C8.5,17 11,15.1 11,12C11,8.9 8.5,7 6.5,7M16.7,9.2C17,10.6 17,13.4 16.7,14.8C15.9,14.4 15,13.5 15,12C15,10.5 15.9,9.6 16.7,9.2M17.5,7C15.5,7 13,8.9 13,12C13,15.1 15.5,17 17.5,17C19.5,17 19.5,7 17.5,7M4.9,6.2L2.5,4.6L1.4,6.3L4,8C4.2,7.3 4.5,6.6 4.9,6.2M20,8L22.6,6.3L21.5,4.6L19.1,6.2C19.4,6.6 19.8,7.2 20,8M4,16L1.4,17.7L2.5,19.4L4.9,17.8C4.6,17.4 4.2,16.8 4,16M20.5,11C20.5,11.3 20.5,11.7 20.5,12C20.5,12.3 20.5,12.6 20.5,13H24V11H20.5M19.1,17.8L21.5,19.4L22.6,17.7L20,16C19.8,16.7 19.5,17.4 19.1,17.8M3.5,12C3.5,11.7 3.5,11.4 3.5,11H0V13H3.5C3.5,12.7 3.5,12.3 3.5,12Z";
var mdiCarPickup = "M16,6H10.5V10H1V15H3A3,3 0 0,0 6,18A3,3 0 0,0 9,15H15A3,3 0 0,0 18,18A3,3 0 0,0 21,15H23V12C23,10.89 22.11,10 21,10H19L16,6M12,7.5H15.5L17.46,10H12V7.5M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z";
var mdiCarSeat = "M7 18C7 18 4 10 4 6S6 2 6 2H7C7 2 8 2 8 3S7 4 7 6 10 10 10 13 7 18 7 18M12 17C11 17 8 19.5 8 19.5C7.7 19.7 7.8 20 8 20.3C8 20.3 9 22.1 11 22.1H17C18.1 22.1 19 21.2 19 20.1V19.1C19 18 18.1 17.1 17 17.1H12Z";
var mdiCarSeatCooler = "M20.8 10.2L19.4 10.6L18.2 9.9V8.2L19.4 7.5L20.8 7.9L21.1 6.8L20 6.5L20.3 5.4L19.2 5.1L18.8 6.5L17.6 7.2L16.1 6.3V5L17.1 4L16.3 3.2L15.5 4L14.7 3.2L13.9 4L14.9 5V6.3L13.4 7.2L12.2 6.5L11.9 5.1L10.8 5.4L11.1 6.5L10 6.7L10.3 7.8L11.7 7.4L12.9 8.1V9.8L11.7 10.5L10.3 10.1L10 11.4L11.1 11.7L10.8 12.7L11.9 13L12.3 11.6L13.5 10.9L15 11.8V13.1L14 14.1L14.8 14.9L15.6 14.1L16.4 14.9L17.2 14.1L16.2 13.1V11.8L17.7 10.9L18.9 11.6L19.3 13L20.4 12.7L20 11.6L21.1 11.3L20.8 10.2M14 8.2L15.5 7.3L17 8.2V9.9L15.5 10.8L14 9.9V8.2M5 18C5 18 2 10 2 6S4 2 4 2H5C5 2 6 2 6 3S5 4 5 6 8 10 8 13 5 18 5 18M15 17C16.1 17 17 17.9 17 19V20C17 21.1 16.1 22 15 22H9C7 22 6 20.2 6 20.2C5.8 20 5.7 19.6 6 19.4C6 19.4 9 16.9 10 16.9H15Z";
var mdiCarSeatHeater = "M5 18C5 18 2 10 2 6S4 2 4 2H5C5 2 6 2 6 3S5 4 5 6 8 10 8 13 5 18 5 18M15 17C16.1 17 17 17.9 17 19V20C17 21.1 16.1 22 15 22H9C7 22 6 20.2 6 20.2C5.8 20 5.7 19.6 6 19.4C6 19.4 9 16.9 10 16.9H15M13.7 3.4L12.3 6.8L13.7 10.2L11.7 15L10 13.6L11.4 10.2L10 6.8L12 2L13.7 3.4M17.9 3.4L16.5 6.8L17.9 10.2L15.9 15L14.2 13.6L15.6 10.2L14.2 6.8L16.2 2L17.9 3.4M22 3.4L20.6 6.8L22 10.2L20 15L18.3 13.6L19.7 10.2L18.3 6.8L20.3 2L22 3.4";
var mdiCarSettings = "M15 22H17V24H15M11 22H13V24H11M7 22H9V24H7M5 11L6.5 6.5H17.5L19 11M17.5 16A1.5 1.5 0 0 1 16 14.5A1.5 1.5 0 0 1 17.5 13A1.5 1.5 0 0 1 19 14.5A1.5 1.5 0 0 1 17.5 16M6.5 16A1.5 1.5 0 0 1 5 14.5A1.5 1.5 0 0 1 6.5 13A1.5 1.5 0 0 1 8 14.5A1.5 1.5 0 0 1 6.5 16M18.92 6C18.72 5.42 18.16 5 17.5 5H6.5C5.84 5 5.28 5.42 5.08 6L3 12V20A1 1 0 0 0 4 21H5A1 1 0 0 0 6 20V19H18V20A1 1 0 0 0 19 21H20A1 1 0 0 0 21 20V12Z";
var mdiCarShiftPattern = "M8 5H4V2H8V5M4 22H8V19H4V22M14 2H10V5H14V2M10 22H14V19H10V22M16 2V5H20V2H16M17 11H13V7H11V11H7V7H5V17H7V13H11V17H13V13H19V7H17V11Z";
var mdiCarSide = "M16,6L19,10H21C22.11,10 23,10.89 23,12V15H21A3,3 0 0,1 18,18A3,3 0 0,1 15,15H9A3,3 0 0,1 6,18A3,3 0 0,1 3,15H1V12C1,10.89 1.89,10 3,10L6,6H16M10.5,7.5H6.75L4.86,10H10.5V7.5M12,7.5V10H17.14L15.25,7.5H12M6,13.5A1.5,1.5 0 0,0 4.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 6,13.5M18,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,16.5A1.5,1.5 0 0,0 19.5,15A1.5,1.5 0 0,0 18,13.5Z";
var mdiCarSports = "M12,8.5H7L4,11H3C1.89,11 1,11.89 1,13V16H3.17C3.6,17.2 4.73,18 6,18C7.27,18 8.4,17.2 8.82,16H15.17C15.6,17.2 16.73,18 18,18C19.27,18 20.4,17.2 20.82,16H23V15C23,13.89 21.97,13.53 21,13L12,8.5M5.25,12L7.5,10H11.5L15.5,12H5.25M6,13.5A1.5,1.5 0 0,1 7.5,15A1.5,1.5 0 0,1 6,16.5A1.5,1.5 0 0,1 4.5,15A1.5,1.5 0 0,1 6,13.5M18,13.5A1.5,1.5 0 0,1 19.5,15A1.5,1.5 0 0,1 18,16.5A1.5,1.5 0 0,1 16.5,15A1.5,1.5 0 0,1 18,13.5Z";
var mdiCarTireAlert = "M11,13H13V15H11V13M11,5H13V11H11V5M17,4.76C18.86,6.19 20,8.61 20,11C20,14 18.33,16.64 15.86,18H8.14C5.67,16.64 4,14 4,11C4,8.61 5.09,6.17 7,4.76V2H5V3.86C3.15,5.68 2,8.2 2,11C2,13.8 3.15,16.32 5,18.14V22H7V20H9V22H11V20H13V22H15V20H17V22H19V18.14C20.85,16.32 22,13.8 22,11C22,8.2 20.85,5.68 19,3.86V2H17V4.76Z";
var mdiCarTractionControl = "M9.5,11H10.5C10.8,11 11,10.8 11,10.5V9H19V10.5C19,10.8 19.2,11 19.5,11H20.5C20.8,11 21,10.8 21,10.5V9L21,8.5V6L19.6,1.7C19.5,1.3 19.1,1 18.7,1H11.4C11,1 10.6,1.3 10.5,1.7L9,6V8.5L9,9V10.5C9,10.8 9.2,11 9.5,11M11.3,2H18.6L19.5,5H10.4L11.3,2M12,23H10C10,22.2 8.1,21.5 6.6,20.9C4.5,20.1 2,19.2 2,17C2,14.7 4.3,14.1 6.2,13.5C7.9,13.1 9,12.7 9,12H11C11,14.3 8.7,14.9 6.8,15.5C5.1,15.9 4,16.3 4,17C4,17.8 5.9,18.5 7.4,19.1C9.5,19.9 12,20.8 12,23M22,23H20C20,22.2 18.1,21.5 16.6,20.9C14.5,20.1 12,19.2 12,17C12,14.7 14.3,14.1 16.2,13.5C17.8,13 19,12.7 19,12H21C21,14.3 18.7,14.9 16.8,15.5C15.2,15.9 14,16.3 14,17C14,17.8 15.9,18.5 17.4,19.1C19.5,19.9 22,20.8 22,23Z";
var mdiCarTurbocharger = "M22 13V15H18.32C18.75 14.09 19 13.08 19 12C19 8.14 15.86 5 12 5H2V3H12C16.97 3 21 7.03 21 12C21 12.34 20.97 12.67 20.94 13H22M12 19C8.14 19 5 15.86 5 12C5 10.93 5.25 9.91 5.69 9H2V11H3.06C3.03 11.33 3 11.66 3 12C3 16.97 7.03 21 12 21H22V19H12M16.86 12.2C15.93 12.94 14.72 12.47 14 12.05V12C16.79 10.31 15.39 7.89 15.39 7.89S14.33 6.04 14.61 7.89C14.78 9.07 13.76 9.88 13.04 10.3L13 10.28C12.93 7 10.13 7 10.13 7S8 7 9.74 7.69C10.85 8.13 11.04 9.42 11.05 10.25L11 10.28C8.14 8.7 6.74 11.12 6.74 11.12S5.67 12.97 7.14 11.8C8.07 11.07 9.28 11.54 10 11.95V12C7.21 13.7 8.61 16.12 8.61 16.12S9.67 17.97 9.4 16.11C9.22 14.94 10.25 14.13 10.97 13.7L11 13.73C11.07 17 13.87 17 13.87 17S16 17 14.26 16.31C13.15 15.87 12.96 14.58 12.95 13.75L13 13.73C15.86 15.31 17.26 12.88 17.26 12.88S18.33 11.04 16.86 12.2Z";
var mdiCarWash = "M5,13L6.5,8.5H17.5L19,13M17.5,18A1.5,1.5 0 0,1 16,16.5A1.5,1.5 0 0,1 17.5,15A1.5,1.5 0 0,1 19,16.5A1.5,1.5 0 0,1 17.5,18M6.5,18A1.5,1.5 0 0,1 5,16.5A1.5,1.5 0 0,1 6.5,15A1.5,1.5 0 0,1 8,16.5A1.5,1.5 0 0,1 6.5,18M18.92,8C18.72,7.42 18.16,7 17.5,7H6.5C5.84,7 5.28,7.42 5.08,8L3,14V22A1,1 0 0,0 4,23H5A1,1 0 0,0 6,22V21H18V22A1,1 0 0,0 19,23H20A1,1 0 0,0 21,22V14M7,5A1.5,1.5 0 0,0 8.5,3.5C8.5,2.5 7,0.8 7,0.8C7,0.8 5.5,2.5 5.5,3.5A1.5,1.5 0 0,0 7,5M12,5A1.5,1.5 0 0,0 13.5,3.5C13.5,2.5 12,0.8 12,0.8C12,0.8 10.5,2.5 10.5,3.5A1.5,1.5 0 0,0 12,5M17,5A1.5,1.5 0 0,0 18.5,3.5C18.5,2.5 17,0.8 17,0.8C17,0.8 15.5,2.5 15.5,3.5A1.5,1.5 0 0,0 17,5Z";
var mdiCarWindshield = "M22.63 15.5L20.21 5.85A1 1 0 0 0 19.14 5.1C17.8 5.24 14.14 5.5 12 5.5S6.2 5.24 4.86 5.1A1 1 0 0 0 3.79 5.85L1.37 15.5A1.5 1.5 0 0 0 2.55 17.36A61.5 61.5 0 0 0 12 18A61.5 61.5 0 0 0 21.45 17.36A1.5 1.5 0 0 0 22.63 15.5Z";
var mdiCarWindshieldOutline = "M22.63 15.5L20.21 5.85A1 1 0 0 0 19.14 5.1C17.8 5.24 14.14 5.5 12 5.5S6.2 5.24 4.86 5.1A1 1 0 0 0 3.79 5.85L1.37 15.5A1.5 1.5 0 0 0 2.55 17.36A61.5 61.5 0 0 0 12 18A61.5 61.5 0 0 0 21.45 17.36A1.5 1.5 0 0 0 22.63 15.5M12 16A63.33 63.33 0 0 1 3.44 15.5L5.5 7.18C7 7.32 10.16 7.5 12 7.5S17 7.32 18.5 7.18L20.56 15.5A63.33 63.33 0 0 1 12 16Z";
var mdiCarabiner = "M8 17.5C8 18.33 7.33 19 6.5 19S5 18.33 5 17.5 5.67 16 6.5 16 8 16.67 8 17.5M18 5.59C17.79 3.54 16.18 2 14.24 2H8.88C6.95 2 5.36 3.5 5.15 5.53L5 6.59C4.92 7.34 5.5 8 6.24 8C6.87 8 7.39 7.53 7.47 6.91L7.61 5.82C7.68 5.07 8.23 4.5 8.88 4.5H14.24C14.89 4.5 15.44 5.07 15.5 5.82L16.5 16.88C16.59 17.74 16 18.5 15.25 18.5L10.04 17.82C9.95 18.77 9.5 19.6 8.8 20.18L14.93 21L15.09 21H15.25C16.27 21 17.26 20.56 17.96 19.78C18.71 18.94 19.09 17.8 19 16.65L18 5.59M11.66 7.94C11.08 7.57 10.31 7.75 9.94 8.34L6.39 14C6.43 14 6.46 14 6.5 14C7.38 14 8.18 14.34 8.8 14.88L12.06 9.66C12.43 9.08 12.25 8.31 11.66 7.94Z";
var mdiCaravan = "M5,7A2,2 0 0,0 3,9V15A2,2 0 0,0 5,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17H21V15H19V9A2,2 0 0,0 17,7H5M5,9H10V12H5V9M13,9H17V12H13V9M10,16A1,1 0 0,1 11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17A1,1 0 0,1 10,16Z";
var mdiCard = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20Z";
var mdiCardAccountDetails = "M2,3H22C23.05,3 24,3.95 24,5V19C24,20.05 23.05,21 22,21H2C0.95,21 0,20.05 0,19V5C0,3.95 0.95,3 2,3M14,6V7H22V6H14M14,8V9H21.5L22,9V8H14M14,10V11H21V10H14M8,13.91C6,13.91 2,15 2,17V18H14V17C14,15 10,13.91 8,13.91M8,6A3,3 0 0,0 5,9A3,3 0 0,0 8,12A3,3 0 0,0 11,9A3,3 0 0,0 8,6Z";
var mdiCardAccountDetailsOutline = "M22,3H2C0.91,3.04 0.04,3.91 0,5V19C0.04,20.09 0.91,20.96 2,21H22C23.09,20.96 23.96,20.09 24,19V5C23.96,3.91 23.09,3.04 22,3M22,19H2V5H22V19M14,17V15.75C14,14.09 10.66,13.25 9,13.25C7.34,13.25 4,14.09 4,15.75V17H14M9,7A2.5,2.5 0 0,0 6.5,9.5A2.5,2.5 0 0,0 9,12A2.5,2.5 0 0,0 11.5,9.5A2.5,2.5 0 0,0 9,7M14,7V8H20V7H14M14,9V10H20V9H14M14,11V12H18V11H14";
var mdiCardAccountDetailsStar = "M20 22.09L22.45 23.58L21.8 20.77L24 18.89L21.11 18.64L20 16L18.87 18.64L16 18.89L18.18 20.77L17.5 23.58L20 22.09M14.08 21H2C.95 21 0 20.05 0 19V5C0 3.95 .95 3 2 3H22C23.05 3 24 3.95 24 5V15.53C22.94 14.58 21.54 14 20 14C16.69 14 14 16.69 14 20C14 20.34 14.03 20.68 14.08 21M8 13.91C6 13.91 2 15 2 17V18H14V17C14 15 10 13.91 8 13.91M8 6C6.35 6 5 7.35 5 9C5 10.65 6.35 12 8 12C9.65 12 11 10.65 11 9C11 7.35 9.65 6 8 6M21 10H14V11H21V10M22 8H14V9H22V8M22 6H14V7H22V6Z";
var mdiCardAccountDetailsStarOutline = "M20 22.09L22.45 23.58L21.8 20.77L24 18.89L21.11 18.64L20 16L18.87 18.64L16 18.89L18.18 20.77L17.5 23.58L20 22.09M14.08 21H2C.91 20.96 .04 20.09 0 19V5C.04 3.91 .91 3.04 2 3H22C23.09 3.04 23.96 3.91 24 5V15.53C23.42 15 22.75 14.61 22 14.34V5H2V19H14.08C14.03 19.33 14 19.66 14 20C14 20.34 14.03 20.68 14.08 21M14 17H4V15.75C4 14.09 7.34 13.25 9 13.25C10.66 13.25 14 14.09 14 15.75V17M14 11H18V12H14V11M9 7C7.63 7 6.5 8.13 6.5 9.5C6.5 10.87 7.63 12 9 12C10.37 12 11.5 10.87 11.5 9.5C11.5 8.13 10.37 7 9 7M14 9H20V10H14V9M14 7H20V8H14V7Z";
var mdiCardAccountMail = "M21,8V7L18,9L15,7V8L18,10M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M8,6A3,3 0 0,1 11,9A3,3 0 0,1 8,12A3,3 0 0,1 5,9A3,3 0 0,1 8,6M14,18H2V17C2,15 6,13.9 8,13.9C10,13.9 14,15 14,17M22,12H14V6H22";
var mdiCardAccountMailOutline = "M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M22,19H2V5H22V19M21,6H14V11H21V6M20,8L17.5,9.75L15,8V7L17.5,8.75L20,7V8M9,12A3,3 0 0,0 12,9A3,3 0 0,0 9,6A3,3 0 0,0 6,9A3,3 0 0,0 9,12M9,8A1,1 0 0,1 10,9A1,1 0 0,1 9,10A1,1 0 0,1 8,9A1,1 0 0,1 9,8M15,16.59C15,14.09 11.03,13 9,13C6.97,13 3,14.09 3,16.59V18H15V16.59M5.5,16C6.22,15.5 7.7,15 9,15C10.3,15 11.77,15.5 12.5,16H5.5Z";
var mdiCardAccountPhone = "M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M8,6A3,3 0 0,1 11,9A3,3 0 0,1 8,12A3,3 0 0,1 5,9A3,3 0 0,1 8,6M14,18H2V17C2,15 6,13.9 8,13.9C10,13.9 14,15 14,17V18M17.85,14H19.5L21,16L19,18C17.7,17 16.73,15.61 16.28,14C16.1,13.36 16,12.69 16,12C16,11.31 16.1,10.64 16.28,10C16.73,8.38 17.7,7 19,6L21,8L19.5,10H17.85C17.63,10.63 17.5,11.3 17.5,12C17.5,12.7 17.63,13.37 17.85,14Z";
var mdiCardAccountPhoneOutline = "M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M22,19H2V5H22V19M19,18L21,16L19.5,14H17.85C17.63,13.37 17.5,12.7 17.5,12C17.5,11.3 17.63,10.63 17.85,10H19.5L21,8L19,6C17.7,7 16.73,8.38 16.28,10C16.1,10.64 16,11.31 16,12C16,12.69 16.1,13.36 16.28,14C16.73,15.61 17.7,17 19,18M9,12A3,3 0 0,0 12,9A3,3 0 0,0 9,6A3,3 0 0,0 6,9A3,3 0 0,0 9,12M9,8A1,1 0 0,1 10,9A1,1 0 0,1 9,10A1,1 0 0,1 8,9A1,1 0 0,1 9,8M15,16.59C15,14.09 11.03,13 9,13C6.97,13 3,14.09 3,16.59V18H15V16.59M5.5,16C6.22,15.5 7.7,15 9,15C10.3,15 11.77,15.5 12.5,16H5.5Z";
var mdiCardBulleted = "M20,4A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20M11,13H9V15H11V13M19,13H13V15H19V13M7,9H5V11H7V9M19,9H9V11H19V9Z";
var mdiCardBulletedOff = "M3.35,3.58L20.65,20.87L19.23,22.29L16.94,20H4A2,2 0 0,1 2,18V6C2,5.72 2.06,5.46 2.16,5.22L1.23,4.29L2.65,2.87L3.35,3.58M6.6,4H20A2,2 0 0,1 22,6V18C22,18.4 21.88,18.77 21.68,19.08L17.6,15H20V13H15.6L13.6,11H20V9H11.6L6.6,4M9.94,13H9V15H11V14.06L9.94,13M5.94,9H5V11H7V10.06L5.94,9Z";
var mdiCardBulletedOffOutline = "M20.59,20.87L19.17,22.29L16.88,20H4A2,2 0 0,1 2,18V6C2,5.74 2.05,5.5 2.14,5.26L1.17,4.29L2.59,2.87L3.73,4L20.59,20.87V20.87M6.54,4H20A2,2 0 0,1 22,6V18C22,18.41 21.87,18.8 21.66,19.12L20,17.46V6H8.54L6.54,4M4,18H14.88L11.88,15H10V13.12L7.88,11H6V9.12L4,7.12V18M18,15H17.54L15.54,13H18V15M18,11H13.54L11.54,9H18V11Z";
var mdiCardBulletedOutline = "M12,15H10V13H12V15M18,15H14V13H18V15M8,11H6V9H8V11M18,11H10V9H18V11M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z";
var mdiCardBulletedSettings = "M9,22V24H7V22H9M13,22V24H11V22H13M17,22V24H15V22H17M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M11,13H9V15H11V13M19,13H13V15H19V13M7,9H5V11H7V9M19,9H9V11H19V9Z";
var mdiCardBulletedSettingsOutline = "M9,22V24H7V22H9M13,22V24H11V22H13M17,22V24H15V22H17M12,15H10V13H12V15M18,15H14V13H18V15M8,11H6V9H8V11M18,11H10V9H18V11M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z";
var mdiCardMinus = "M23 18V20H15V18H23M19 13C20.09 13 21.12 13.3 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13Z";
var mdiCardMinusOutline = "M23 18V20H15V18H23M13.09 18H4V6H20V13.09C20.72 13.21 21.39 13.46 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 18.66 13.04 18.33 13.09 18Z";
var mdiCardOff = "M21.88 18.68L7.2 4H20C21.11 4 22 4.89 22 6V18C22 18.24 21.96 18.47 21.88 18.68M20.56 19.91L20.57 19.91L2.39 1.73L1.11 3L2.65 4.54C2.25 4.9 2 5.42 2 6V18C2 19.11 2.9 20 4 20H18.11L20.84 22.73L22.11 21.46L20.56 19.91Z";
var mdiCardOffOutline = "M9.2 6L7.2 4H20C21.11 4 22 4.89 22 6V18C22 18.24 21.96 18.47 21.88 18.68L20 16.8V6H9.2M22.11 21.46L20.84 22.73L18.11 20H4C2.9 20 2 19.11 2 18V6C2 5.42 2.25 4.9 2.65 4.54L1.11 3L2.39 1.73L6.66 6L18.65 18H18.66L20.57 19.91L20.56 19.91L22.11 21.46M16.11 18L4.11 6H4V18H16.11Z";
var mdiCardOutline = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z";
var mdiCardPlus = "M13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V13.81C21.12 13.3 20.09 13 19 13C15.69 13 13 15.69 13 19C13 19.34 13.04 19.67 13.09 20M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z";
var mdiCardPlusOutline = "M21 15V18H24V20H21V23H19V20H16V18H19V15H21M14 18H3V6H19V13H21V6C21 4.89 20.11 4 19 4H3C1.9 4 1 4.89 1 6V18C1 19.11 1.9 20 3 20H14V18Z";
var mdiCardRemove = "M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19M19 13C20.09 13 21.12 13.3 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13Z";
var mdiCardRemoveOutline = "M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19M13.09 18H4V6H20V13.09C20.72 13.21 21.39 13.46 22 13.81V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 18.66 13.04 18.33 13.09 18Z";
var mdiCardSearch = "M11.5 9C10.12 9 9 10.12 9 11.5S10.12 14 11.5 14 14 12.88 14 11.5 12.88 9 11.5 9M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M16.79 18.21L13.88 15.3C13.19 15.74 12.37 16 11.5 16C9 16 7 14 7 11.5S9 7 11.5 7 16 9 16 11.5C16 12.38 15.74 13.19 15.3 13.89L18.21 16.79L16.79 18.21Z";
var mdiCardSearchOutline = "M11.5 16C12.37 16 13.19 15.74 13.88 15.3L16.32 17.74L17.74 16.32L15.3 13.89C15.74 13.19 16 12.38 16 11.5C16 9 14 7 11.5 7S7 9 7 11.5 9 16 11.5 16M11.5 9C12.88 9 14 10.12 14 11.5S12.88 14 11.5 14 9 12.88 9 11.5 10.12 9 11.5 9M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M20 18H4V6H20V18Z";
var mdiCardText = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M5,13V15H16V13H5M5,9V11H19V9H5Z";
var mdiCardTextOutline = "M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4M6,9H18V11H6V9M6,13H16V15H6V13Z";
var mdiCards = "M21.47,4.35L20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.77 21.47,4.35M1.97,8.05L6.93,20C7.24,20.77 7.97,21.24 8.74,21.26C9,21.26 9.27,21.21 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.26C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05M18.12,4.25A2,2 0 0,0 16.12,2.25H14.67L18.12,10.59";
var mdiCardsClub = "M12,2C14.3,2 16.3,4 16.3,6.2C16.21,8.77 14.34,9.83 14.04,10C15.04,9.5 16.5,9.5 16.5,9.5C19,9.5 21,11.3 21,13.8C21,16.3 19,18 16.5,18C16.5,18 15,18 13,17C13,17 12.7,19 15,22H9C11.3,19 11,17 11,17C9,18 7.5,18 7.5,18C5,18 3,16.3 3,13.8C3,11.3 5,9.5 7.5,9.5C7.5,9.5 8.96,9.5 9.96,10C9.66,9.83 7.79,8.77 7.7,6.2C7.7,4 9.7,2 12,2Z";
var mdiCardsDiamond = "M19,12L12,22L5,12L12,2";
var mdiCardsDiamondOutline = "M12 2L5 12L12 22L19 12M7.44 12L12 5.5L16.56 12L12 18.5";
var mdiCardsHeart = "M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z";
var mdiCardsOutline = "M11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05L6.93,20C7.24,20.77 7.97,21.23 8.74,21.25C9,21.25 9.27,21.22 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.25C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25M14.67,2.25L18.12,10.6V4.25A2,2 0 0,0 16.12,2.25M20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.78 21.47,4.36M11.19,4.22L16.17,16.24L8.78,19.3L3.8,7.29";
var mdiCardsPlayingOutline = "M11.19,2.25C11.97,2.26 12.71,2.73 13,3.5L18,15.45C18.09,15.71 18.14,16 18.13,16.25C18.11,17 17.65,17.74 16.9,18.05L9.53,21.1C9.27,21.22 9,21.25 8.74,21.25C7.97,21.23 7.24,20.77 6.93,20L1.97,8.05C1.55,7.04 2.04,5.87 3.06,5.45L10.42,2.4C10.67,2.31 10.93,2.25 11.19,2.25M14.67,2.25H16.12A2,2 0 0,1 18.12,4.25V10.6L14.67,2.25M20.13,3.79L21.47,4.36C22.5,4.78 22.97,5.94 22.56,6.96L20.13,12.82V3.79M11.19,4.22L3.8,7.29L8.77,19.3L16.17,16.24L11.19,4.22M8.65,8.54L11.88,10.95L11.44,14.96L8.21,12.54L8.65,8.54Z";
var mdiCardsSpade = "M12,2C9,7 4,9 4,14C4,16 6,18 8,18C9,18 10,18 11,17C11,17 11.32,19 9,22H15C13,19 13,17 13,17C14,18 15,18 16,18C18,18 20,16 20,14C20,9 15,7 12,2Z";
var mdiCardsVariant = "M5,2H19A1,1 0 0,1 20,3V13A1,1 0 0,1 19,14H5A1,1 0 0,1 4,13V3A1,1 0 0,1 5,2M6,4V12H18V4H6M20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17V16H20V17M20,21A1,1 0 0,1 19,22H5A1,1 0 0,1 4,21V20H20V21Z";
var mdiCarrot = "M16,10L15.8,11H13.5A0.5,0.5 0 0,0 13,11.5A0.5,0.5 0 0,0 13.5,12H15.6L14.6,17H12.5A0.5,0.5 0 0,0 12,17.5A0.5,0.5 0 0,0 12.5,18H14.4L14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20L9,15H10.5A0.5,0.5 0 0,0 11,14.5A0.5,0.5 0 0,0 10.5,14H8.8L8,10C8,8.8 8.93,7.77 10.29,7.29L8.9,5.28C8.59,4.82 8.7,4.2 9.16,3.89C9.61,3.57 10.23,3.69 10.55,4.14L11,4.8V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V5.28L14.5,3.54C14.83,3.12 15.47,3.07 15.89,3.43C16.31,3.78 16.36,4.41 16,4.84L13.87,7.35C15.14,7.85 16,8.85 16,10Z";
var mdiCart = "M17,18C15.89,18 15,18.89 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20C19,18.89 18.1,18 17,18M1,2V4H3L6.6,11.59L5.24,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42A0.25,0.25 0 0,1 7.17,14.75C7.17,14.7 7.18,14.66 7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.58 17.3,11.97L20.88,5.5C20.95,5.34 21,5.17 21,5A1,1 0 0,0 20,4H5.21L4.27,2M7,18C5.89,18 5,18.89 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20C9,18.89 8.1,18 7,18Z";
var mdiCartArrowDown = "M10,0V4H8L12,8L16,4H14V0M1,2V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18Z";
var mdiCartArrowRight = "M9,20A2,2 0 0,1 7,22A2,2 0 0,1 5,20A2,2 0 0,1 7,18A2,2 0 0,1 9,20M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.2,14.63C7.19,14.67 7.19,14.71 7.2,14.75A0.25,0.25 0 0,0 7.45,15H19V17H7A2,2 0 0,1 5,15C5,14.65 5.07,14.31 5.24,14L6.6,11.59L3,4H1V2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,12C16.94,12.62 16.27,13 15.55,13H8.1L7.2,14.63M9,9.5H13V11.5L16,8.5L13,5.5V7.5H9V9.5Z";
var mdiCartArrowUp = "M12,0L8,4H10V8H14V4H16M1,2V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18Z";
var mdiCartCheck = "M9 20C9 21.11 8.11 22 7 22S5 21.11 5 20 5.9 18 7 18 9 18.9 9 20M17 18C15.9 18 15 18.9 15 20S15.9 22 17 22 19 21.11 19 20 18.11 18 17 18M7.17 14.75L7.2 14.63L8.1 13H15.55C16.3 13 16.96 12.59 17.3 11.97L21.16 4.96L19.42 4H19.41L18.31 6L15.55 11H8.53L8.4 10.73L6.16 6L5.21 4L4.27 2H1V4H3L6.6 11.59L5.25 14.04C5.09 14.32 5 14.65 5 15C5 16.11 5.9 17 7 17H19V15H7.42C7.29 15 7.17 14.89 7.17 14.75M18 2.76L16.59 1.34L11.75 6.18L9.16 3.59L7.75 5L11.75 9L18 2.76Z";
var mdiCartMinus = "M16,6V4H8V6M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2H1V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75Z";
var mdiCartOff = "M22.73,22.73L1.27,1.27L0,2.54L4.39,6.93L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H14.46L15.84,18.38C15.34,18.74 15,19.33 15,20A2,2 0 0,0 17,22C17.67,22 18.26,21.67 18.62,21.16L21.46,24L22.73,22.73M7.42,15A0.25,0.25 0 0,1 7.17,14.75L7.2,14.63L8.1,13H10.46L12.46,15H7.42M15.55,13C16.3,13 16.96,12.59 17.3,11.97L20.88,5.5C20.96,5.34 21,5.17 21,5A1,1 0 0,0 20,4H6.54L15.55,13M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18Z";
var mdiCartOutline = "M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22C15.89,22 15,21.1 15,20C15,18.89 15.89,18 17,18M1,2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,11.97C16.96,12.58 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7C5.89,17 5,16.1 5,15C5,14.65 5.09,14.32 5.24,14.04L6.6,11.59L3,4H1V2M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22C5.89,22 5,21.1 5,20C5,18.89 5.89,18 7,18M16,11L18.78,6H6.14L8.5,11H16Z";
var mdiCartPlus = "M11,9H13V6H16V4H13V1H11V4H8V6H11M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2H1V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75Z";
var mdiCartRemove = "M14.12,8.53L12,6.41L9.88,8.54L8.46,7.12L10.59,5L8.47,2.88L9.88,1.47L12,3.59L14.12,1.46L15.54,2.88L13.41,5L15.53,7.12L14.12,8.53M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22A2,2 0 0,1 5,20A2,2 0 0,1 7,18M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22A2,2 0 0,1 15,20A2,2 0 0,1 17,18M7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7A2,2 0 0,1 5,15C5,14.65 5.09,14.32 5.25,14.04L6.6,11.59L3,4H1V2H4.27L5.21,4L6.16,6L8.4,10.73L8.53,11H15.55L18.31,6L19.41,4H19.42L21.16,4.96L17.3,11.97C16.96,12.59 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75Z";
var mdiCartVariant = "M19 20C19 21.11 18.11 22 17 22C15.89 22 15 21.1 15 20C15 18.89 15.89 18 17 18C18.11 18 19 18.9 19 20M7 18C5.89 18 5 18.89 5 20C5 21.1 5.89 22 7 22C8.11 22 9 21.11 9 20S8.11 18 7 18M7.2 14.63L7.17 14.75C7.17 14.89 7.28 15 7.42 15H19V17H7C5.89 17 5 16.1 5 15C5 14.65 5.09 14.32 5.24 14.04L6.6 11.59L3 4H1V2H4.27L5.21 4H20C20.55 4 21 4.45 21 5C21 5.17 20.95 5.34 20.88 5.5L17.3 11.97C16.96 12.58 16.3 13 15.55 13H8.1L7.2 14.63M8.5 11H10V9H7.56L8.5 11M11 9V11H14V9H11M14 8V6H11V8H14M17.11 9H15V11H16L17.11 9M18.78 6H15V8H17.67L18.78 6M6.14 6L7.08 8H10V6H6.14Z";
var mdiCaseSensitiveAlt = "M20,14C20,12.5 19.5,12 18,12H16V11C16,10 16,10 14,10V15.4L14,19H16L18,19C19.5,19 20,18.47 20,17V14M12,12C12,10.5 11.47,10 10,10H6C4.5,10 4,10.5 4,12V19H6V16H10V19H12V12M10,7H14V5H10V7M22,9V20C22,21.11 21.11,22 20,22H4A2,2 0 0,1 2,20V9C2,7.89 2.89,7 4,7H8V5L10,3H14L16,5V7H20A2,2 0 0,1 22,9H22M16,17H18V14H16V17M6,12H10V14H6V12Z";
var mdiCash = "M3,6H21V18H3V6M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M7,8A2,2 0 0,1 5,10V14A2,2 0 0,1 7,16H17A2,2 0 0,1 19,14V10A2,2 0 0,1 17,8H7Z";
var mdiCash100 = "M2,5H22V20H2V5M20,18V7H4V18H20M17,8A2,2 0 0,0 19,10V15A2,2 0 0,0 17,17H7A2,2 0 0,0 5,15V10A2,2 0 0,0 7,8H17M17,13V12C17,10.9 16.33,10 15.5,10C14.67,10 14,10.9 14,12V13C14,14.1 14.67,15 15.5,15C16.33,15 17,14.1 17,13M15.5,11A0.5,0.5 0 0,1 16,11.5V13.5A0.5,0.5 0 0,1 15.5,14A0.5,0.5 0 0,1 15,13.5V11.5A0.5,0.5 0 0,1 15.5,11M13,13V12C13,10.9 12.33,10 11.5,10C10.67,10 10,10.9 10,12V13C10,14.1 10.67,15 11.5,15C12.33,15 13,14.1 13,13M11.5,11A0.5,0.5 0 0,1 12,11.5V13.5A0.5,0.5 0 0,1 11.5,14A0.5,0.5 0 0,1 11,13.5V11.5A0.5,0.5 0 0,1 11.5,11M8,15H9V10H8L7,10.5V11.5L8,11V15Z";
var mdiCashCheck = "M3 6V18H13.32C13.1 17.33 13 16.66 13 16H7C7 14.9 6.11 14 5 14V10C6.11 10 7 9.11 7 8H17C17 9.11 17.9 10 19 10V10.06C19.67 10.06 20.34 10.18 21 10.4V6H3M12 9C10.3 9.03 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.38 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.61C14.85 10.28 13.59 8.97 12 9M21.63 12.27L17.76 16.17L16.41 14.8L15 16.22L17.75 19L23.03 13.68L21.63 12.27Z";
var mdiCashLock = "M21.8 15C22.4 15 23 15.6 23 16.3V19.8C23 20.4 22.4 21 21.7 21H16.2C15.6 21 15 20.4 15 19.7V16.2C15 15.6 15.6 15 16.2 15V13.5C16.2 12.1 17.6 11 19 11C20.4 11 21.8 12.1 21.8 13.5V15M20.5 15V13.5C20.5 12.7 19.8 12.2 19 12.2C18.2 12.2 17.5 12.7 17.5 13.5V15H20.5M2 6H20V9.1L19 9C18.18 9 17.41 9.2 16.73 9.54C16.28 9.18 16 8.62 16 8H6C6 9.11 5.11 10 4 10V14C5.11 14 6 14.9 6 16H13.04L13 16.5V18H2V6M11 9C12.66 9 14 10.34 14 12C14 13.66 12.66 15 11 15C9.34 15 8 13.66 8 12C8 10.34 9.34 9 11 9Z";
var mdiCashLockOpen = "M21.8 16C22.4 16 23 16.6 23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V13.5C16.2 12.1 17.6 11 19 11C20.4 11 21.8 12.1 21.8 13.5V14H20.5V13.5C20.5 12.7 19.8 12.2 19 12.2C18.2 12.2 17.5 12.7 17.5 13.5V16H21.8M2 6H20V9.1L19 9C18.18 9 17.41 9.2 16.73 9.54C16.28 9.18 16 8.62 16 8H6C6 9.11 5.11 10 4 10V14C5.11 14 6 14.9 6 16H13.04L13 16.5V18H2V6M11 9C12.66 9 14 10.34 14 12C14 13.66 12.66 15 11 15C9.34 15 8 13.66 8 12C8 10.34 9.34 9 11 9Z";
var mdiCashMarker = "M18.5,16.8C17.8,16.8 17.3,16.2 17.3,15.6C17.3,14.9 17.9,14.4 18.5,14.4C19.1,14.4 19.7,15 19.7,15.6C19.8,16.2 19.2,16.8 18.5,16.8M18.5,12C16.6,12 15,13.6 15,15.5C15,18.1 18.5,22 18.5,22C18.5,22 22,18.1 22,15.5C22,13.6 20.4,12 18.5,12M14.9,11.3C14.6,10 13.4,9 12,9C10.3,9 9,10.3 9,12C9,13.7 10.3,15 12,15C12.4,15 12.7,14.9 13,14.8C13.2,13.4 13.9,12.2 14.9,11.3M13,16H7A2,2 0 0,0 5,14V10A2,2 0 0,0 7,8H17A2,2 0 0,0 19,10C19,10 20,10 21,10.6V6H3V18H13.5C13.3,17.3 13.1,16.7 13,16Z";
var mdiCashMinus = "M15 15V17H23V15M14.97 11.61C14.85 10.28 13.59 8.97 12 9C10.3 9.03 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.38 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.61M13 16H7C7 14.9 6.11 14 5 14V10C6.11 10 7 9.11 7 8H17C17 9.11 17.9 10 19 10V10.06C19.67 10.06 20.34 10.18 21 10.4V6H3V18H13.32C13.1 17.33 13 16.66 13 16Z";
var mdiCashMultiple = "M5,6H23V18H5V6M14,9A3,3 0 0,1 17,12A3,3 0 0,1 14,15A3,3 0 0,1 11,12A3,3 0 0,1 14,9M9,8A2,2 0 0,1 7,10V14A2,2 0 0,1 9,16H19A2,2 0 0,1 21,14V10A2,2 0 0,1 19,8H9M1,10H3V20H19V22H1V10Z";
var mdiCashPlus = "M15 15V17H18V20H20V17H23V15H20V12H18V15M14.97 11.61C14.85 10.28 13.59 8.97 12 9C10.3 9.03 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.38 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.61M13 16H7C7 14.9 6.11 14 5 14V10C6.11 10 7 9.11 7 8H17C17 9.11 17.9 10 19 10V10.06C19.67 10.06 20.34 10.18 21 10.4V6H3V18H13.32C13.1 17.33 13 16.66 13 16Z";
var mdiCashRefund = "M12.3 8.93L9.88 6.5H15.5V10H17V5H9.88L12.3 2.57L11.24 1.5L7 5.75L11.24 10L12.3 8.93M12 14A3 3 0 1 0 15 17A3 3 0 0 0 12 14M3 11V23H21V11M19 19A2 2 0 0 0 17 21H7A2 2 0 0 0 5 19V15A2 2 0 0 0 7 13H17A2 2 0 0 0 19 15Z";
var mdiCashRegister = "M2,17H22V21H2V17M6.25,7H9V6H6V3H14V6H11V7H17.8C18.8,7 19.8,8 20,9L20.5,16H3.5L4.05,9C4.05,8 5.05,7 6.25,7M13,9V11H18V9H13M6,9V10H8V9H6M9,9V10H11V9H9M6,11V12H8V11H6M9,11V12H11V11H9M6,13V14H8V13H6M9,13V14H11V13H9M7,4V5H13V4H7Z";
var mdiCashRemove = "M15.46 18.12L16.88 19.54L19 17.41L21.12 19.54L22.54 18.12L20.41 16L22.54 13.88L21.12 12.46L19 14.59L16.88 12.46L15.46 13.88L17.59 16M14.97 11.62C14.86 10.28 13.58 8.97 12 9C10.3 9.04 9 10.3 9 12C9 13.7 10.3 14.94 12 15C12.39 15 12.77 14.92 13.14 14.77C13.41 13.67 13.86 12.63 14.97 11.62M13 16H7C7 14.9 6.1 14 5 14V10C6.1 10 7 9.1 7 8H17C17 9.1 17.9 10 19 10V10.05C19.67 10.06 20.34 10.18 21 10.4V6H3V18H13.32C13.1 17.33 13 16.66 13 16Z";
var mdiCashUsd = "M20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V6C22 4.89 21.1 4 20 4M15 10H11V11H14C14.55 11 15 11.45 15 12V15C15 15.55 14.55 16 14 16H13V17H11V16H9V14H13V13H10C9.45 13 9 12.55 9 12V9C9 8.45 9.45 8 10 8H11V7H13V8H15V10Z";
var mdiCashUsdOutline = "M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M11,17H13V16H14A1,1 0 0,0 15,15V12A1,1 0 0,0 14,11H11V10H15V8H13V7H11V8H10A1,1 0 0,0 9,9V12A1,1 0 0,0 10,13H13V14H9V16H11V17Z";
var mdiCassette = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H6L7,17H17L18,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M9,10H15V13H9V10M17.5,10A1.5,1.5 0 0,1 19,11.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 16,11.5A1.5,1.5 0 0,1 17.5,10Z";
var mdiCast = "M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3Z";
var mdiCastAudio = "M2 11V13C7 13 11 17 11 22H13C13 15.9 8.1 11 2 11M20 2H10C8.9 2 8 2.9 8 4V10.5C9 11 9.9 11.7 10.7 12.4C11.6 11 13.2 10 15 10C17.8 10 20 12.2 20 15S17.8 20 15 20H14.8C14.9 20.7 15 21.3 15 22H20C21.1 22 22 21.1 22 20V4C22 2.9 21.1 2 20 2M15 8C13.9 8 13 7.1 13 6C13 4.9 13.9 4 15 4C16.1 4 17 4.9 17 6S16.1 8 15 8M15 18C14.8 18 14.5 18 14.3 17.9C13.8 16.4 13.1 15.1 12.2 13.9C12.6 12.8 13.7 11.9 15 11.9C16.7 11.9 18 13.2 18 14.9S16.7 18 15 18M2 15V17C4.8 17 7 19.2 7 22H9C9 18.1 5.9 15 2 15M2 19V22H5C5 20.3 3.7 19 2 19";
var mdiCastConnected = "M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M19,7H5V8.63C8.96,9.91 12.09,13.04 13.37,17H19M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18Z";
var mdiCastEducation = "M21,3H3A2,2 0 0,0 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M1,18V21H4A3,3 0 0,0 1,18M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M11,11.09V13.09L14.5,15L18,13.09V11.09L14.5,13L11,11.09M14.5,6L9,9L14.5,12L20,9L14.5,6Z";
var mdiCastOff = "M1.6,1.27L0.25,2.75L1.41,3.8C1.16,4.13 1,4.55 1,5V8H3V5.23L18.2,19H14V21H20.41L22.31,22.72L23.65,21.24M6.5,3L8.7,5H21V16.14L23,17.95V5C23,3.89 22.1,3 21,3M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.08,10 1,10M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18Z";
var mdiCastle = "M2,13H4V15H6V13H8V15H10V13H12V15H14V10L17,7V1H19L23,3L19,5V7L22,10V22H11V19A2,2 0 0,0 9,17A2,2 0 0,0 7,19V22H2V13M18,10C17.45,10 17,10.54 17,11.2V13H19V11.2C19,10.54 18.55,10 18,10Z";
var mdiCat = "M12,8L10.67,8.09C9.81,7.07 7.4,4.5 5,4.5C5,4.5 3.03,7.46 4.96,11.41C4.41,12.24 4.07,12.67 4,13.66L2.07,13.95L2.28,14.93L4.04,14.67L4.18,15.38L2.61,16.32L3.08,17.21L4.53,16.32C5.68,18.76 8.59,20 12,20C15.41,20 18.32,18.76 19.47,16.32L20.92,17.21L21.39,16.32L19.82,15.38L19.96,14.67L21.72,14.93L21.93,13.95L20,13.66C19.93,12.67 19.59,12.24 19.04,11.41C20.97,7.46 19,4.5 19,4.5C16.6,4.5 14.19,7.07 13.33,8.09L12,8M9,11A1,1 0 0,1 10,12A1,1 0 0,1 9,13A1,1 0 0,1 8,12A1,1 0 0,1 9,11M15,11A1,1 0 0,1 16,12A1,1 0 0,1 15,13A1,1 0 0,1 14,12A1,1 0 0,1 15,11M11,14H13L12.3,15.39C12.5,16.03 13.06,16.5 13.75,16.5A1.5,1.5 0 0,0 15.25,15H15.75A2,2 0 0,1 13.75,17C13,17 12.35,16.59 12,16V16H12C11.65,16.59 11,17 10.25,17A2,2 0 0,1 8.25,15H8.75A1.5,1.5 0 0,0 10.25,16.5C10.94,16.5 11.5,16.03 11.7,15.39L11,14Z";
var mdiCctv = "M18.15,4.94C17.77,4.91 17.37,5 17,5.2L8.35,10.2C7.39,10.76 7.07,12 7.62,12.94L9.12,15.53C9.67,16.5 10.89,16.82 11.85,16.27L13.65,15.23C13.92,15.69 14.32,16.06 14.81,16.27V18.04C14.81,19.13 15.7,20 16.81,20H22V18.04H16.81V16.27C17.72,15.87 18.31,14.97 18.31,14C18.31,13.54 18.19,13.11 17.97,12.73L20.5,11.27C21.47,10.71 21.8,9.5 21.24,8.53L19.74,5.94C19.4,5.34 18.79,5 18.15,4.94M6.22,13.17L2,13.87L2.75,15.17L4.75,18.63L5.5,19.93L8.22,16.63L6.22,13.17Z";
var mdiCeilingLight = "M8,9H11V4H13V9H16L20,17H4L8,9M14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18H14Z";
var mdiCellphone = "M17,19H7V5H17M17,1H7C5.89,1 5,1.89 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3C19,1.89 18.1,1 17,1Z";
var mdiCellphoneAndroid = "M17.25,18H6.75V4H17.25M14,21H10V20H14M16,1H8A3,3 0 0,0 5,4V20A3,3 0 0,0 8,23H16A3,3 0 0,0 19,20V4A3,3 0 0,0 16,1Z";
var mdiCellphoneArrowDown = "M17,1H7A2,2 0 0,0 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1M17,19H7V5H17V19M16,13H13V8H11V13H8L12,17L16,13Z";
var mdiCellphoneBasic = "M15,2A1,1 0 0,0 14,3V6H10C8.89,6 8,6.89 8,8V20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V8C17,7.26 16.6,6.62 16,6.28V3A1,1 0 0,0 15,2M10,8H15V13H10V8M10,15H11V16H10V15M12,15H13V16H12V15M14,15H15V16H14V15M10,17H11V18H10V17M12,17H13V18H12V17M14,17H15V18H14V17M10,19H11V20H10V19M12,19H13V20H12V19M14,19H15V20H14V19Z";
var mdiCellphoneCharging = "M11 18.5V13H9L13 5.5V11H15M17 19H7V5H17M17 1H7C5.89 1 5 1.89 5 3V21A2 2 0 0 0 7 23H17A2 2 0 0 0 19 21V3C19 1.89 18.1 1 17 1Z";
var mdiCellphoneCog = "M9.82,12.5C9.84,12.33 9.86,12.17 9.86,12C9.86,11.83 9.84,11.67 9.82,11.5L10.9,10.69C11,10.62 11,10.5 10.96,10.37L9.93,8.64C9.87,8.53 9.73,8.5 9.62,8.53L8.34,9.03C8.07,8.83 7.78,8.67 7.47,8.54L7.27,7.21C7.27,7.09 7.16,7 7.03,7H5C4.85,7 4.74,7.09 4.72,7.21L4.5,8.53C4.21,8.65 3.92,8.83 3.65,9L2.37,8.5C2.25,8.47 2.12,8.5 2.06,8.63L1.03,10.36C0.97,10.5 1,10.61 1.1,10.69L2.18,11.5C2.16,11.67 2.15,11.84 2.15,12C2.15,12.17 2.17,12.33 2.19,12.5L1.1,13.32C1,13.39 1,13.53 1.04,13.64L2.07,15.37C2.13,15.5 2.27,15.5 2.38,15.5L3.66,15C3.93,15.18 4.22,15.34 4.53,15.47L4.73,16.79C4.74,16.91 4.85,17 5,17H7.04C7.17,17 7.28,16.91 7.29,16.79L7.5,15.47C7.8,15.35 8.09,15.17 8.36,15L9.64,15.5C9.76,15.53 9.89,15.5 9.95,15.37L11,13.64C11.04,13.53 11,13.4 10.92,13.32L9.82,12.5M6,13.75C5,13.75 4.2,12.97 4.2,12C4.2,11.03 5,10.25 6,10.25C7,10.25 7.8,11.03 7.8,12C7.8,12.97 7,13.75 6,13.75M17,1H7A2,2 0 0,0 5,3V6H7V4H17V20H7V18H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1Z";
var mdiCellphoneDock = "M16,15H8V5H16M16,1H8C6.89,1 6,1.89 6,3V17A2,2 0 0,0 8,19H16A2,2 0 0,0 18,17V3C18,1.89 17.1,1 16,1M8,23H16V21H8V23Z";
var mdiCellphoneErase = "M11,8.2L10,7.2L6,11.2L2,7.2L1,8.2L5,12.2L1,16.2L2,17.2L6,13.2L10,17.2L11,16.2L7,12.2L11,8.2M17,1H7A2,2 0 0,0 5,3V6H7V4H17V20H7V18H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1Z";
var mdiCellphoneInformation = "M13 7H11V9H13V7M13 11H11V17H13V11M17 1H7C5.9 1 5 1.9 5 3V21C5 22.1 5.9 23 7 23H17C18.1 23 19 22.1 19 21V3C19 1.9 18.1 1 17 1M17 19H7V5H17V19Z";
var mdiCellphoneIphone = "M16,18H7V4H16M11.5,22A1.5,1.5 0 0,1 10,20.5A1.5,1.5 0 0,1 11.5,19A1.5,1.5 0 0,1 13,20.5A1.5,1.5 0 0,1 11.5,22M15.5,1H7.5A2.5,2.5 0 0,0 5,3.5V20.5A2.5,2.5 0 0,0 7.5,23H15.5A2.5,2.5 0 0,0 18,20.5V3.5A2.5,2.5 0 0,0 15.5,1Z";
var mdiCellphoneKey = "M7,1A2,2 0 0,0 5,3V7H7V4H17V20H7V17H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1H7M6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C7.31,15 8.42,14.17 8.83,13H11V15H13V13H14V11H8.83C8.42,9.83 7.31,9 6,9M6,11A1,1 0 0,1 7,12A1,1 0 0,1 6,13A1,1 0 0,1 5,12A1,1 0 0,1 6,11Z";
var mdiCellphoneLink = "M22,17H18V10H22M23,8H17A1,1 0 0,0 16,9V19A1,1 0 0,0 17,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6H22V4H4A2,2 0 0,0 2,6V17H0V20H14V17H4V6Z";
var mdiCellphoneLinkOff = "M23,8H17A1,1 0 0,0 16,9V13.18L18,15.18V10H22V17H19.82L22.82,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6.27L14.73,17H4V6.27M1.92,1.65L0.65,2.92L2.47,4.74C2.18,5.08 2,5.5 2,6V17H0V20H17.73L20.08,22.35L21.35,21.08L3.89,3.62L1.92,1.65M22,6V4H6.82L8.82,6H22Z";
var mdiCellphoneLock = "M17,1H7A2,2 0 0,0 5,3V6H7V4H17V20H7V18H5V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1M8.8,11V9.5C8.8,8.1 7.4,7 6,7C4.6,7 3.2,8.1 3.2,9.5V11C2.6,11 2,11.6 2,12.2V15.7C2,16.4 2.6,17 3.2,17H8.7C9.4,17 10,16.4 10,15.8V12.3C10,11.6 9.4,11 8.8,11M7.5,11H4.5V9.5C4.5,8.7 5.2,8.2 6,8.2C6.8,8.2 7.5,8.7 7.5,9.5V11Z";
var mdiCellphoneMessage = "M11,17V7H4V17H11M11,3A2,2 0 0,1 13,5V19A2,2 0 0,1 11,21H4C2.89,21 2,20.1 2,19V5A2,2 0 0,1 4,3H11M16.5,3H21.5A1.5,1.5 0 0,1 23,4.5V7.5A1.5,1.5 0 0,1 21.5,9H18L15,12V9L15,4.5A1.5,1.5 0 0,1 16.5,3Z";
var mdiCellphoneMessageOff = "M2.39 1.73L1.11 3L2.22 4.11C2.08 4.38 2 4.68 2 5V19C2 20.1 2.89 21 4 21H11C12.1 21 13 20.1 13 19V14.89L20.84 22.73L22.11 21.46L2.39 1.73M11 17H4V7H5.11L11 12.89V17M23 4.5V7.5C23 8.33 22.33 9 21.5 9H18L15.1 11.9L15 11.8V4.5C15 3.67 15.67 3 16.5 3H21.5C22.33 3 23 3.67 23 4.5M10.2 7L6.2 3H11C12.1 3 13 3.9 13 5V9.8L11 7.8V7H10.2";
var mdiCellphoneNfc = "M2,16V18A5,5 0 0,1 7,23H9A7,7 0 0,0 2,16M2,20V23H5A3,3 0 0,0 2,20M2,12V14A9,9 0 0,1 11,23H13C13,16.92 8.08,12 2,12M17,1H7A2,2 0 0,0 5,3V10.37C5.69,10.53 6.36,10.74 7,11V5H17V18H13.97C14.5,19.25 14.81,20.59 14.92,22H17A2,2 0 0,0 19,20V3A2,2 0 0,0 17,1Z";
var mdiCellphoneNfcOff = "M20.84 22.73L18.85 20.74C18.56 21.5 17.84 22 17 22H14.92C14.81 20.59 14.5 19.25 13.97 18H16.11L7 8.89V11C6.36 10.74 5.69 10.53 5 10.37V6.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M17 5V13.8L19 15.8V3C19 1.9 18.11 1 17 1H7C6.24 1 5.59 1.43 5.25 2.05L8.2 5H17M2 20V23H5C5 21.34 3.66 20 2 20M2 16V18C4.76 18 7 20.24 7 23H9C9 19.13 5.87 16 2 16M2 12V14C6.97 14 11 18.03 11 23H13C13 16.92 8.08 12 2 12Z";
var mdiCellphoneOff = "M2.38,1.73L1.11,3L5,6.89V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V20.89L20.84,22.73L22.11,21.46M17,19H7V8.89L17,18.89V19M17,5V13.8L19,15.8V3A2,2 0 0,0 17,1H7C6.28,1 5.6,1.37 5.24,2L8.24,5H17Z";
var mdiCellphonePlay = "M17 19H7V5H17M17 1H7C5.89 1 5 1.89 5 3V21C5 22.1 5.9 23 7 23H17C18.1 23 19 22.1 19 21V3C19 1.89 18.1 1 17 1M10 9V15L14 12L10 9Z";
var mdiCellphoneScreenshot = "M7,1A2,2 0 0,0 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1H7M7,4H17V20H7V4M9,6V10H10.5V7.5H13V6H9M13.5,14V16.5H11V18H15V14H13.5Z";
var mdiCellphoneSettings = "M16,16H8V4H16M16,0H8A2,2 0 0,0 6,2V18A2,2 0 0,0 8,20H16A2,2 0 0,0 18,18V2A2,2 0 0,0 16,0M15,24H17V22H15M11,24H13V22H11M7,24H9V22H7V24Z";
var mdiCellphoneSound = "M19.1,8.7C20.9,10.5 20.9,13.3 19.1,15.2L20.1,16.2C22.6,13.9 22.6,10.1 20.1,7.7L19.1,8.7M18,9.8L17,10.8C17.5,11.5 17.5,12.4 17,13.1L18,14.1C19.2,12.9 19.2,11.1 18,9.8M14,1H4A2,2 0 0,0 2,3V21A2,2 0 0,0 4,23H14A2,2 0 0,0 16,21V3A2,2 0 0,0 14,1M14,20H4V4H14V20Z";
var mdiCellphoneText = "M17,19V5H7V19H17M17,1A2,2 0 0,1 19,3V21A2,2 0 0,1 17,23H7C5.89,23 5,22.1 5,21V3C5,1.89 5.89,1 7,1H17M9,7H15V9H9V7M9,11H13V13H9V11Z";
var mdiCellphoneWireless = "M20.07,4.93C21.88,6.74 23,9.24 23,12C23,14.76 21.88,17.26 20.07,19.07L18.66,17.66C20.11,16.22 21,14.22 21,12C21,9.79 20.11,7.78 18.66,6.34L20.07,4.93M17.24,7.76C18.33,8.85 19,10.35 19,12C19,13.65 18.33,15.15 17.24,16.24L15.83,14.83C16.55,14.11 17,13.11 17,12C17,10.89 16.55,9.89 15.83,9.17L17.24,7.76M13,10A2,2 0 0,1 15,12A2,2 0 0,1 13,14A2,2 0 0,1 11,12A2,2 0 0,1 13,10M11.5,1A2.5,2.5 0 0,1 14,3.5V8H12V4H3V19H12V16H14V20.5A2.5,2.5 0 0,1 11.5,23H3.5A2.5,2.5 0 0,1 1,20.5V3.5A2.5,2.5 0 0,1 3.5,1H11.5Z";
var mdiCelticCross = "M17.8,8C17.26,5.89 15.61,4.24 13.5,3.7V2H10.5V3.7C8.39,4.24 6.74,5.89 6.2,8H4V11H6.2C6.74,13.11 8.39,14.76 10.5,15.3V22H13.5V15.3C15.61,14.76 17.26,13.11 17.8,11H19.97V8H17.8M12.04,9.53L14.5,11H15.76C15.35,12.03 14.53,12.84 13.5,13.26V12L12.06,9.56L12,9.5L11.94,9.56L10.5,12V13.26C9.47,12.84 8.66,12.03 8.24,11H9.5L11.96,9.53L12,9.5H11.96L9.5,8H8.24C8.65,6.97 9.47,6.16 10.5,5.74V7L11.94,9.44L12,9.5L12.06,9.44L13.5,7V5.74C14.53,6.16 15.35,6.97 15.76,8H14.5L12.04,9.5H12L12.04,9.53Z";
var mdiCentos = "M19.07 14.93L22 12L19.07 9.07V4.93H14.93L12 2L9.07 4.93H4.93V9.07L2 12L4.93 14.93V19.07H9.07L12 22L14.93 19.07H19.07V14.93M21.41 12L19.07 14.34V12.46H13.69L13.23 12L13.69 11.54H19.07V9.66L21.41 12M18.66 14.76L17.32 16.09L14.11 12.87H18.66V14.76M12.46 13.1L12 12.65L11.54 13.1V12.46H10.9L11.36 12L10.9 11.54H11.54V10.9L12 11.36L12.46 10.9V11.54H13.1L12.65 12L13.1 12.46H12.46V13.1M14.11 11.13L17.32 7.91L18.66 9.24V11.13H14.11M18.66 5.35V8.65L17.32 7.32L13.5 11.13H12.87V10.5L16.68 6.68L15.35 5.35H18.66M12.87 9.89V5.35H14.76L16.09 6.68L12.87 9.89M12 2.59L14.34 4.93H12.46V10.31L12 10.77L11.54 10.31V4.93H9.66L12 2.59M11.13 9.89L7.91 6.68L9.24 5.35H11.13V9.89M5.35 5.35H8.65L7.32 6.68L11.13 10.5V11.13H10.5L6.68 7.32L5.35 8.65V5.35M5.35 9.24L6.68 7.91L9.89 11.13H5.35V9.24M2.59 12L4.93 9.66V11.54H10.31L10.77 12L10.31 12.46H4.93V14.34L2.59 12M9.89 12.87L6.68 16.09L5.35 14.76V12.87H9.89M5.35 18.66V15.35L6.68 16.68L10.5 12.87H11.13V13.5L7.32 17.32L8.65 18.65H5.35M11.13 14.11V18.66H9.24L7.91 17.32L11.13 14.11M12 21.41L9.66 19.07H11.54V13.69L12 13.23L12.46 13.69V19.07H14.34L12 21.41M12.87 14.11L16.09 17.32L14.76 18.66H12.87V14.11M15.35 18.66L16.68 17.32L12.87 13.5V12.87H13.5L17.32 16.68L18.65 15.35V18.66H15.35Z";
var mdiCertificate = "M4,3C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H12V22L15,19L18,22V17H20A2,2 0 0,0 22,15V8L22,6V5A2,2 0 0,0 20,3H16V3H4M12,5L15,7L18,5V8.5L21,10L18,11.5V15L15,13L12,15V11.5L9,10L12,8.5V5M4,5H9V7H4V5M4,9H7V11H4V9M4,13H9V15H4V13Z";
var mdiCertificateOutline = "M13 21L15 20L17 21V14H13M17 9V7L15 8L13 7V9L11 10L13 11V13L15 12L17 13V11L19 10M20 3H4A2 2 0 0 0 2 5V15A2 2 0 0 0 4 17H11V15H4V5H20V15H19V17H20A2 2 0 0 0 22 15V5A2 2 0 0 0 20 3M11 8H5V6H11M9 11H5V9H9M11 14H5V12H11Z";
var mdiChairRolling = "M22 10V13H19V10H22M2 13H5V10H2V13M17 5C17 3.9 16.1 3 15 3H9C7.9 3 7 3.9 7 5V13H17V5M7 15H6V17H11V18L7 22H9.8L12 19.8L14.2 22H17L13 18V17H18V15H7Z";
var mdiChairSchool = "M22,5V7H17L13.53,12H16V14H14.46L18.17,22H15.97L15.04,20H6.38L5.35,22H3.1L7.23,14H7C6.55,14 6.17,13.7 6.04,13.3L2.87,3.84L3.82,3.5C4.34,3.34 4.91,3.63 5.08,4.15L7.72,12H12.1L15.57,7H12V5H22M9.5,14L7.42,18H14.11L12.26,14H9.5Z";
var mdiCharity = "M12.75,3.94C13.75,3.22 14.91,2.86 16.22,2.86C16.94,2.86 17.73,3.05 18.59,3.45C19.45,3.84 20.13,4.3 20.63,4.83C21.66,6.11 22.09,7.6 21.94,9.3C21.78,11 21.22,12.33 20.25,13.27L12.66,20.86C12.47,21.05 12.23,21.14 11.95,21.14C11.67,21.14 11.44,21.05 11.25,20.86C11.06,20.67 10.97,20.44 10.97,20.16C10.97,19.88 11.06,19.64 11.25,19.45L15.84,14.86C16.09,14.64 16.09,14.41 15.84,14.16C15.59,13.91 15.36,13.91 15.14,14.16L10.55,18.75C10.36,18.94 10.13,19.03 9.84,19.03C9.56,19.03 9.33,18.94 9.14,18.75C8.95,18.56 8.86,18.33 8.86,18.05C8.86,17.77 8.95,17.53 9.14,17.34L13.73,12.75C14,12.5 14,12.25 13.73,12C13.5,11.75 13.28,11.75 13.03,12L8.44,16.64C8.25,16.83 8,16.92 7.73,16.92C7.45,16.92 7.21,16.83 7,16.64C6.8,16.45 6.7,16.22 6.7,15.94C6.7,15.66 6.81,15.41 7.03,15.19L11.63,10.59C11.88,10.34 11.88,10.11 11.63,9.89C11.38,9.67 11.14,9.67 10.92,9.89L6.28,14.5C6.06,14.7 5.83,14.81 5.58,14.81C5.3,14.81 5.06,14.71 4.88,14.5C4.69,14.3 4.59,14.06 4.59,13.78C4.59,13.5 4.69,13.27 4.88,13.08C7.94,10 9.83,8.14 10.55,7.45L14.11,10.97C14.5,11.34 14.95,11.53 15.5,11.53C16.2,11.53 16.75,11.25 17.16,10.69C17.44,10.28 17.54,9.83 17.46,9.33C17.38,8.83 17.17,8.41 16.83,8.06L12.75,3.94M14.81,10.27L10.55,6L3.47,13.08C2.63,12.23 2.15,10.93 2.04,9.16C1.93,7.4 2.41,5.87 3.47,4.59C4.66,3.41 6.08,2.81 7.73,2.81C9.39,2.81 10.8,3.41 11.95,4.59L16.22,8.86C16.41,9.05 16.5,9.28 16.5,9.56C16.5,9.84 16.41,10.08 16.22,10.27C16.03,10.45 15.8,10.55 15.5,10.55C15.23,10.55 15,10.45 14.81,10.27V10.27Z";
var mdiChartArc = "M16.18,19.6L14.17,16.12C15.15,15.4 15.83,14.28 15.97,13H20C19.83,15.76 18.35,18.16 16.18,19.6M13,7.03V3C17.3,3.26 20.74,6.7 21,11H16.97C16.74,8.91 15.09,7.26 13,7.03M7,12.5C7,13.14 7.13,13.75 7.38,14.3L3.9,16.31C3.32,15.16 3,13.87 3,12.5C3,7.97 6.54,4.27 11,4V8.03C8.75,8.28 7,10.18 7,12.5M11.5,21C8.53,21 5.92,19.5 4.4,17.18L7.88,15.17C8.7,16.28 10,17 11.5,17C12.14,17 12.75,16.87 13.3,16.62L15.31,20.1C14.16,20.68 12.87,21 11.5,21Z";
var mdiChartAreaspline = "M17.45,15.18L22,7.31V19L22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L16.74,12.5L10.23,8.75L4.31,19H6.57L10.96,11.44L17.45,15.18Z";
var mdiChartAreasplineVariant = "M22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L22,21Z";
var mdiChartBar = "M22,21H2V3H4V19H6V10H10V19H12V6H16V19H18V14H22V21Z";
var mdiChartBarStacked = "M22,21H2V3H4V19H6V17H10V19H12V16H16V19H18V17H22V21M18,14H22V16H18V14M12,6H16V9H12V6M16,15H12V10H16V15M6,10H10V12H6V10M10,16H6V13H10V16Z";
var mdiChartBellCurve = "M9.96,11.31C10.82,8.1 11.5,6 13,6C14.5,6 15.18,8.1 16.04,11.31C17,14.92 18.1,19 22,19V17C19.8,17 19,14.54 17.97,10.8C17.08,7.46 16.15,4 13,4C9.85,4 8.92,7.46 8.03,10.8C7.03,14.54 6.2,17 4,17V2H2V22H22V20H4V19C7.9,19 9,14.92 9.96,11.31Z";
var mdiChartBellCurveCumulative = "M4 19V20H22V22H2V2H4V17C7 17 10 15 12.1 11.4C15.1 6.4 18.4 4 22 4V6C19.2 6 16.5 8.1 13.9 12.5C11.3 16.6 7.7 19 4 19Z";
var mdiChartBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9 17H7V10H9V17M13 17H11V7H13V17M17 17H15V13H17V17Z";
var mdiChartBoxOutline = "M9 17H7V10H9V17M13 17H11V7H13V17M17 17H15V13H17V17M19.5 19.1H4.5V5H19.5V19.1M19.5 3H4.5C3.4 3 2.5 3.9 2.5 5V19C2.5 20.1 3.4 21 4.5 21H19.5C20.6 21 21.5 20.1 21.5 19V5C21.5 3.9 20.6 3 19.5 3Z";
var mdiChartBoxPlusOutline = "M22 5V7H19V10H17V7H14V5H17V2H19V5H22M19 19H5V5H11V3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V13H19V19M15 13V17H17V13H15M11 17H13V9H11V17M9 17V11H7V17H9Z";
var mdiChartBubble = "M7.2,11.2C8.97,11.2 10.4,12.63 10.4,14.4C10.4,16.17 8.97,17.6 7.2,17.6C5.43,17.6 4,16.17 4,14.4C4,12.63 5.43,11.2 7.2,11.2M14.8,16A2,2 0 0,1 16.8,18A2,2 0 0,1 14.8,20A2,2 0 0,1 12.8,18A2,2 0 0,1 14.8,16M15.2,4A4.8,4.8 0 0,1 20,8.8C20,11.45 17.85,13.6 15.2,13.6A4.8,4.8 0 0,1 10.4,8.8C10.4,6.15 12.55,4 15.2,4Z";
var mdiChartDonut = "M13,2.05V5.08C16.39,5.57 19,8.47 19,12C19,12.9 18.82,13.75 18.5,14.54L21.12,16.07C21.68,14.83 22,13.45 22,12C22,6.82 18.05,2.55 13,2.05M12,19A7,7 0 0,1 5,12C5,8.47 7.61,5.57 11,5.08V2.05C5.94,2.55 2,6.81 2,12A10,10 0 0,0 12,22C15.3,22 18.23,20.39 20.05,17.91L17.45,16.38C16.17,18 14.21,19 12,19Z";
var mdiChartDonutVariant = "M13,2.05C18.05,2.55 22,6.82 22,12C22,13.45 21.68,14.83 21.12,16.07L18.5,14.54C18.82,13.75 19,12.9 19,12C19,8.47 16.39,5.57 13,5.08V2.05M12,19C14.21,19 16.17,18 17.45,16.38L20.05,17.91C18.23,20.39 15.3,22 12,22C6.47,22 2,17.5 2,12C2,6.81 5.94,2.55 11,2.05V5.08C7.61,5.57 5,8.47 5,12A7,7 0 0,0 12,19M12,6A6,6 0 0,1 18,12C18,14.97 15.84,17.44 13,17.92V14.83C14.17,14.42 15,13.31 15,12A3,3 0 0,0 12,9L11.45,9.05L9.91,6.38C10.56,6.13 11.26,6 12,6M6,12C6,10.14 6.85,8.5 8.18,7.38L9.72,10.05C9.27,10.57 9,11.26 9,12C9,13.31 9.83,14.42 11,14.83V17.92C8.16,17.44 6,14.97 6,12Z";
var mdiChartGantt = "M2,5H10V2H12V22H10V18H6V15H10V13H4V10H10V8H2V5M14,5H17V8H14V5M14,10H19V13H14V10M14,15H22V18H14V15Z";
var mdiChartHistogram = "M3,3H5V13H9V7H13V11H17V15H21V21H3V3Z";
var mdiChartLine = "M16,11.78L20.24,4.45L21.97,5.45L16.74,14.5L10.23,10.75L5.46,19H22V21H2V3H4V17.54L9.5,8L16,11.78Z";
var mdiChartLineStacked = "M17.45,15.18L22,6.81V19L22,21H2V3H4V15.54L4,19H4.31L6,19H6.57L10.96,11.44L17.45,15.18M22,3L21.97,3.45L17,11L10,6L6,12V3H22Z";
var mdiChartLineVariant = "M3.5,18.5L9.5,12.5L13.5,16.5L22,6.92L20.59,5.5L13.5,13.5L9.5,9.5L2,17L3.5,18.5Z";
var mdiChartMultiline = "M22,6.92L20.59,5.5L17.74,8.72C15.68,6.4 12.83,5 9.61,5C6.72,5 4.07,6.16 2,8L3.42,9.42C5.12,7.93 7.27,7 9.61,7C12.35,7 14.7,8.26 16.38,10.24L13.5,13.5L9.5,9.5L2,17L3.5,18.5L9.5,12.5L13.5,16.5L17.55,11.93C18.3,13.28 18.8,14.83 19,16.5H21C20.78,14.18 20.05,12.09 18.96,10.34L22,6.92Z";
var mdiChartMultiple = "M22 16V18H6V2H8V13.57L13.71 4.57L16.87 6.68L19.29 4.26L20.71 5.68L17.13 9.29L14.29 7.4L8.82 16M4 20V4H2V22H22V20Z";
var mdiChartPie = "M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z";
var mdiChartPpf = "M5 6V8C8.2 8 11.36 9.18 13.57 11.15C15.64 13 16.83 15.5 17 18H18.97A14 12.5 0 0 0 5 6M22 21H2V3H4V19H22Z";
var mdiChartSankey = "M22 5H4V2H2V22H22V20H4V9C8.09 9 10.13 11 12.29 13.21S17.09 18 22 18V16C17.91 16 15.87 14 13.71 11.79S8.91 7 4 7H22Z";
var mdiChartSankeyVariant = "M20 4V6H4V4H2V12H4V10C8.16 10 9.92 12.11 11.77 14.34S15.65 19 20 19V21H22V15H20V17C16.59 17 15.07 15.17 13.31 13.06C11.34 10.69 9.1 8 4 8H20V10H22V4Z";
var mdiChartScatterPlot = "M2,2H4V20H22V22H2V2M9,10A3,3 0 0,1 12,13A3,3 0 0,1 9,16A3,3 0 0,1 6,13A3,3 0 0,1 9,10M13,2A3,3 0 0,1 16,5A3,3 0 0,1 13,8A3,3 0 0,1 10,5A3,3 0 0,1 13,2M18,12A3,3 0 0,1 21,15A3,3 0 0,1 18,18A3,3 0 0,1 15,15A3,3 0 0,1 18,12Z";
var mdiChartScatterPlotHexbin = "M2,2H4V20H22V22H2V2M14,14.5L12,18H7.94L5.92,14.5L7.94,11H12L14,14.5M14.08,6.5L12.06,10H8L6,6.5L8,3H12.06L14.08,6.5M21.25,10.5L19.23,14H15.19L13.17,10.5L15.19,7H19.23L21.25,10.5Z";
var mdiChartTimeline = "M2,2H4V20H22V22H2V2M7,10H17V13H7V10M11,15H21V18H11V15M6,4H22V8H20V6H8V8H6V4Z";
var mdiChartTimelineVariant = "M3,14L3.5,14.07L8.07,9.5C7.89,8.85 8.06,8.11 8.59,7.59C9.37,6.8 10.63,6.8 11.41,7.59C11.94,8.11 12.11,8.85 11.93,9.5L14.5,12.07L15,12C15.18,12 15.35,12 15.5,12.07L19.07,8.5C19,8.35 19,8.18 19,8A2,2 0 0,1 21,6A2,2 0 0,1 23,8A2,2 0 0,1 21,10C20.82,10 20.65,10 20.5,9.93L16.93,13.5C17,13.65 17,13.82 17,14A2,2 0 0,1 15,16A2,2 0 0,1 13,14L13.07,13.5L10.5,10.93C10.18,11 9.82,11 9.5,10.93L4.93,15.5L5,16A2,2 0 0,1 3,18A2,2 0 0,1 1,16A2,2 0 0,1 3,14Z";
var mdiChartTimelineVariantShimmer = "M21 8C19.5 8 18.7 9.4 19.1 10.5L15.5 14.1C15.2 14 14.8 14 14.5 14.1L11.9 11.5C12.3 10.4 11.5 9 10 9C8.6 9 7.7 10.4 8.1 11.5L3.5 16C2.4 15.7 1 16.5 1 18C1 19.1 1.9 20 3 20C4.4 20 5.3 18.6 4.9 17.5L9.4 12.9C9.7 13 10.1 13 10.4 12.9L13 15.5C12.7 16.5 13.5 18 15 18C16.5 18 17.3 16.6 16.9 15.5L20.5 11.9C21.6 12.2 23 11.4 23 10C23 8.9 22.1 8 21 8M15 9L15.9 6.9L18 6L15.9 5.1L15 3L14.1 5.1L12 6L14.1 6.9L15 9M3.5 11L4 9L6 8.5L4 8L3.5 6L3 8L1 8.5L3 9L3.5 11Z";
var mdiChartTree = "M14,6H22V22H14V6M2,4H22V2H2V4M2,8H12V6H2V8M9,22H12V10H9V22M2,22H7V10H2V22Z";
var mdiChat = "M12,3C17.5,3 22,6.58 22,11C22,15.42 17.5,19 12,19C10.76,19 9.57,18.82 8.47,18.5C5.55,21 2,21 2,21C4.33,18.67 4.7,17.1 4.75,16.5C3.05,15.07 2,13.13 2,11C2,6.58 6.5,3 12,3Z";
var mdiChatAlert = "M12,3C17.5,3 22,6.58 22,11C22,15.42 17.5,19 12,19C10.76,19 9.57,18.82 8.47,18.5C5.55,21 2,21 2,21C4.33,18.67 4.7,17.1 4.75,16.5C3.05,15.07 2,13.13 2,11C2,6.58 6.5,3 12,3M11,14V16H13V14H11M11,12H13V6H11V12Z";
var mdiChatAlertOutline = "M12 3C6.5 3 2 6.58 2 11C2.05 13.15 3.06 15.17 4.75 16.5C4.75 17.1 4.33 18.67 2 21C4.37 20.89 6.64 20 8.47 18.5C9.61 18.83 10.81 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M12 17C7.58 17 4 14.31 4 11S7.58 5 12 5 20 7.69 20 11 16.42 17 12 17M11 13V15H13V13H11M11 11H13V7H11V11Z";
var mdiChatMinus = "M23 17V19H15V17H23M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C20.95 12.25 20 12 19 12C15.69 12 13 14.69 13 18L13.08 18.95L12 19C10.76 19 9.57 18.82 8.47 18.5C5.55 21 2 21 2 21C4.33 18.67 4.7 17.1 4.75 16.5C3.05 15.07 2 13.14 2 11C2 6.58 6.5 3 12 3Z";
var mdiChatMinusOutline = "M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C21.19 12.38 20.55 12.16 19.88 12.06C19.96 11.72 20 11.36 20 11C20 7.69 16.42 5 12 5S4 7.69 4 11 7.58 17 12 17L13.09 16.95L13 18L13.08 18.95L12 19C10.81 19 9.62 18.83 8.47 18.5C6.64 20 4.37 20.89 2 21C4.33 18.67 4.75 17.1 4.75 16.5C3.06 15.17 2.05 13.15 2 11C2 6.58 6.5 3 12 3M23 17V19H15V17H23Z";
var mdiChatOutline = "M12,3C6.5,3 2,6.58 2,11C2.05,13.15 3.06,15.17 4.75,16.5C4.75,17.1 4.33,18.67 2,21C4.37,20.89 6.64,20 8.47,18.5C9.61,18.83 10.81,19 12,19C17.5,19 22,15.42 22,11C22,6.58 17.5,3 12,3M12,17C7.58,17 4,14.31 4,11C4,7.69 7.58,5 12,5C16.42,5 20,7.69 20,11C20,14.31 16.42,17 12,17Z";
var mdiChatPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C20.95 12.25 20 12 19 12C15.69 12 13 14.69 13 18L13.08 18.95L12 19C10.76 19 9.57 18.82 8.47 18.5C5.55 21 2 21 2 21C4.33 18.67 4.7 17.1 4.75 16.5C3.05 15.07 2 13.14 2 11C2 6.58 6.5 3 12 3Z";
var mdiChatPlusOutline = "M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C21.19 12.38 20.55 12.16 19.88 12.06C19.96 11.72 20 11.36 20 11C20 7.69 16.42 5 12 5C7.58 5 4 7.69 4 11C4 14.31 7.58 17 12 17L13.09 16.95L13 18L13.08 18.95L12 19C10.81 19 9.62 18.83 8.47 18.5C6.64 20 4.37 20.89 2 21C4.33 18.67 4.75 17.1 4.75 16.5C3.06 15.17 2.05 13.15 2 11C2 6.58 6.5 3 12 3M18 14H20V17H23V19H20V22H18V19H15V17H18V14Z";
var mdiChatProcessing = "M12,3C17.5,3 22,6.58 22,11C22,15.42 17.5,19 12,19C10.76,19 9.57,18.82 8.47,18.5C5.55,21 2,21 2,21C4.33,18.67 4.7,17.1 4.75,16.5C3.05,15.07 2,13.13 2,11C2,6.58 6.5,3 12,3M17,12V10H15V12H17M13,12V10H11V12H13M9,12V10H7V12H9Z";
var mdiChatProcessingOutline = "M12 3C6.5 3 2 6.58 2 11C2.05 13.15 3.06 15.17 4.75 16.5C4.75 17.1 4.33 18.67 2 21C4.37 20.89 6.64 20 8.47 18.5C9.61 18.83 10.81 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M12 17C7.58 17 4 14.31 4 11S7.58 5 12 5 20 7.69 20 11 16.42 17 12 17M17 12V10H15V12H17M13 12V10H11V12H13M9 12V10H7V12H9Z";
var mdiChatQuestion = "M12 3C6.5 3 2 6.6 2 11C2 13.1 3 15.1 4.8 16.5C4.8 17.1 4.4 18.7 2 21C2 21 5.5 21 8.5 18.5C9.6 18.8 10.8 19 12 19C17.5 19 22 15.4 22 11S17.5 3 12 3M13 15H11V13H13V15M14.8 10C14.5 10.4 14.1 10.6 13.7 10.8C13.4 11 13.3 11.1 13.2 11.3C13 11.5 13 11.7 13 12H11C11 11.5 11.1 11.2 11.3 10.9C11.5 10.7 11.9 10.4 12.4 10.1C12.7 10 12.9 9.8 13 9.6C13.1 9.4 13.2 9.1 13.2 8.9C13.2 8.6 13.1 8.4 12.9 8.2C12.7 8 12.4 7.9 12.1 7.9C11.8 7.9 11.6 8 11.4 8.1C11.2 8.2 11.1 8.4 11.1 8.7H9.1C9.2 8 9.5 7.4 10 7C10.5 6.6 11.2 6.5 12.1 6.5C13 6.5 13.8 6.7 14.3 7.1C14.8 7.5 15.1 8.1 15.1 8.8C15.2 9.2 15.1 9.6 14.8 10Z";
var mdiChatQuestionOutline = "M12 3C6.5 3 2 6.6 2 11C2 13.2 3.1 15.2 4.8 16.5C4.8 17.1 4.4 18.7 2 21C4.4 20.9 6.6 20 8.5 18.5C9.6 18.8 10.8 19 12 19C17.5 19 22 15.4 22 11S17.5 3 12 3M12 17C7.6 17 4 14.3 4 11S7.6 5 12 5 20 7.7 20 11 16.4 17 12 17M12.2 6.5C11.3 6.5 10.6 6.7 10.1 7C9.5 7.4 9.2 8 9.3 8.7H11.3C11.3 8.4 11.4 8.2 11.6 8.1C11.8 8 12 7.9 12.3 7.9C12.6 7.9 12.9 8 13.1 8.2C13.3 8.4 13.4 8.6 13.4 8.9C13.4 9.2 13.3 9.4 13.2 9.6C13 9.8 12.8 10 12.6 10.1C12.1 10.4 11.7 10.7 11.5 10.9C11.1 11.2 11 11.5 11 12H13C13 11.7 13.1 11.5 13.1 11.3C13.2 11.1 13.4 11 13.6 10.8C14.1 10.6 14.4 10.3 14.7 9.9C15 9.5 15.1 9.1 15.1 8.7C15.1 8 14.8 7.4 14.3 7C13.9 6.7 13.1 6.5 12.2 6.5M11 13V15H13V13H11Z";
var mdiChatRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.54 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.54L15.46 20.12L17.59 18L15.47 15.88M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C20.95 12.25 20 12 19 12C15.69 12 13 14.69 13 18L13.08 18.95L12 19C10.76 19 9.57 18.82 8.47 18.5C5.55 21 2 21 2 21C4.33 18.67 4.7 17.1 4.75 16.5C3.05 15.07 2 13.14 2 11C2 6.58 6.5 3 12 3Z";
var mdiChatRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.54 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.54L15.46 20.12L17.59 18L15.47 15.88M12 3C17.5 3 22 6.58 22 11C22 11.58 21.92 12.14 21.78 12.68C21.19 12.38 20.55 12.16 19.88 12.06C19.96 11.72 20 11.36 20 11C20 7.69 16.42 5 12 5C7.58 5 4 7.69 4 11C4 14.31 7.58 17 12 17L13.09 16.95L13 18L13.08 18.95L12 19C10.81 19 9.62 18.83 8.47 18.5C6.64 20 4.37 20.89 2 21C4.33 18.67 4.75 17.1 4.75 16.5C3.06 15.17 2.05 13.15 2 11C2 6.58 6.5 3 12 3Z";
var mdiChatSleep = "M12 3C6.5 3 2 6.58 2 11C2 13.13 3.05 15.07 4.75 16.5C4.7 17.1 4.33 18.67 2 21C2 21 5.55 21 8.47 18.5C9.57 18.82 10.76 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M15 9.3L11.76 13H15V15H9V12.7L12.24 9H9V7H15V9.3Z";
var mdiChatSleepOutline = "M12 3C6.5 3 2 6.58 2 11C2.05 13.15 3.06 15.17 4.75 16.5C4.75 17.1 4.33 18.67 2 21C4.37 20.89 6.64 20 8.47 18.5C9.61 18.83 10.81 19 12 19C17.5 19 22 15.42 22 11S17.5 3 12 3M12 17C7.58 17 4 14.31 4 11S7.58 5 12 5 20 7.69 20 11 16.42 17 12 17M15 7H9V9H12.24L9 12.7V15H15V13H11.76L15 9.3V7Z";
var mdiCheck = "M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z";
var mdiCheckAll = "M0.41,13.41L6,19L7.41,17.58L1.83,12M22.24,5.58L11.66,16.17L7.5,12L6.07,13.41L11.66,19L23.66,7M18,7L16.59,5.58L10.24,11.93L11.66,13.34L18,7Z";
var mdiCheckBold = "M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z";
var mdiCheckBoxMultipleOutline = "M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,16H8V4H20V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16M18.53,8.06L17.47,7L12.59,11.88L10.47,9.76L9.41,10.82L12.59,14L18.53,8.06Z";
var mdiCheckBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,5V19H5V5H19M10,17L6,13L7.41,11.58L10,14.17L16.59,7.58L18,9";
var mdiCheckCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z";
var mdiCheckCircleOutline = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M16.59 7.58L10 14.17L7.41 11.59L6 13L10 17L18 9L16.59 7.58Z";
var mdiCheckDecagram = "M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9L10,17Z";
var mdiCheckDecagramOutline = "M23 12L20.6 9.2L20.9 5.5L17.3 4.7L15.4 1.5L12 3L8.6 1.5L6.7 4.7L3.1 5.5L3.4 9.2L1 12L3.4 14.8L3.1 18.5L6.7 19.3L8.6 22.5L12 21L15.4 22.5L17.3 19.3L20.9 18.5L20.6 14.8L23 12M18.7 16.9L16 17.5L14.6 19.9L12 18.8L9.4 19.9L8 17.5L5.3 16.9L5.5 14.1L3.7 12L5.5 9.9L5.3 7.1L8 6.5L9.4 4.1L12 5.2L14.6 4.1L16 6.5L18.7 7.1L18.5 9.9L20.3 12L18.5 14.1L18.7 16.9M16.6 7.6L18 9L10 17L6 13L7.4 11.6L10 14.2L16.6 7.6Z";
var mdiCheckNetwork = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M8.25,10.08L9.41,8.92L11,10.5L14.59,6.92L15.75,8.33L11,13.08L8.25,10.08Z";
var mdiCheckNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M8,10.37L9.24,9.13L10.93,10.83L14.76,7L16,8.5L10.93,13.57L8,10.37Z";
var mdiCheckOutline = "M19.78,2.2L24,6.42L8.44,22L0,13.55L4.22,9.33L8.44,13.55L19.78,2.2M19.78,5L8.44,16.36L4.22,12.19L2.81,13.55L8.44,19.17L21.19,6.42L19.78,5Z";
var mdiCheckUnderline = "M21,5L9,17L3.5,11.5L4.91,10.09L9,14.17L19.59,3.59L21,5M3,21V19H21V21H3Z";
var mdiCheckUnderlineCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,18H7V16H17V18M10.3,14L7,10.7L8.4,9.3L10.3,11.2L15.6,5.9L17,7.3L10.3,14Z";
var mdiCheckUnderlineCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M7,15H17V17H7V15M10.3,11.2L8.4,9.3L7,10.7L10.3,14L17,7.3L15.6,5.9L10.3,11.2Z";
var mdiCheckbook = "M5,14H19V15H5V14M21,17V8H3V17H21M1,5H23V19H1V5M5,10H12V12H5V10Z";
var mdiCheckboxBlank = "M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiCheckboxBlankCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiCheckboxBlankCircleOutline = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiCheckboxBlankOff = "M20.84 22.73L19.1 21C19.06 21 19.03 21 19 21H5C3.9 21 3 20.11 3 19V5C3 4.97 3 4.94 3 4.9L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21 5C21 3.89 20.1 3 19 3H6.2L21 17.8V5Z";
var mdiCheckboxBlankOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L3 4.9V19C3 20.11 3.9 21 5 21H19.1L20.84 22.73L22.11 21.46M5 19V6.89L17.11 19H5M8.2 5L6.2 3H19C20.1 3 21 3.89 21 5V17.8L19 15.8V5H8.2Z";
var mdiCheckboxBlankOutline = "M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z";
var mdiCheckboxIntermediate = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M17,17H7V7H17V17Z";
var mdiCheckboxMarked = "M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiCheckboxMarkedCircle = "M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiCheckboxMarkedCircleOutline = "M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2,4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z";
var mdiCheckboxMarkedOutline = "M19,19H5V5H15V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V11H19M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z";
var mdiCheckboxMultipleBlank = "M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z";
var mdiCheckboxMultipleBlankCircle = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z";
var mdiCheckboxMultipleBlankCircleOutline = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M14,4C17.32,4 20,6.69 20,10C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z";
var mdiCheckboxMultipleBlankOutline = "M20,16V4H8V16H20M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z";
var mdiCheckboxMultipleMarked = "M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16M13,14L20,7L18.59,5.59L13,11.17L9.91,8.09L8.5,9.5L13,14Z";
var mdiCheckboxMultipleMarkedCircle = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82M18.09,6.08L19.5,7.5L13,14L9.21,10.21L10.63,8.79L13,11.17";
var mdiCheckboxMultipleMarkedCircleOutline = "M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10H20C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4C14.43,4 14.86,4.05 15.27,4.14L16.88,2.54C15.96,2.18 15,2 14,2M20.59,3.58L14,10.17L11.62,7.79L10.21,9.21L14,13L22,5M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z";
var mdiCheckboxMultipleMarkedOutline = "M20,16V10H22V16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H16V4H8V16H20M10.91,7.08L14,10.17L20.59,3.58L22,5L14,13L9.5,8.5L10.91,7.08M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z";
var mdiCheckerboard = "M2 2V22H22V2H2M20 12H16V16H20V20H16V16H12V20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12M16 8V12H12V8H16M12 12V16H8V12H12Z";
var mdiCheckerboardMinus = "M14 17V19H22V17M8 16H12V12H8V16M12 12H16V8H12V12M2 2V22H13.5C13 21.4 12.6 20.7 12.3 20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12.4C20.7 12.7 21.4 13.1 22 13.6V2H2Z";
var mdiCheckerboardPlus = "M19 17H22V19H19V22H17V19H14V17H17V14H19V17M8 16H12V12H8V16M12 12H16V8H12V12M2 2V22H13.54C13 21.42 12.63 20.74 12.36 20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12.36C20.74 12.63 21.42 13 22 13.54V2H2Z";
var mdiCheckerboardRemove = "M8 16H12V12H8V16M12 12H16V8H12V12M2 2V22H13.5C13 21.4 12.6 20.7 12.3 20H8V16H4V12H8V8H4V4H8V8H12V4H16V8H20V12.4C20.7 12.7 21.4 13.1 22 13.6V2H2M20.1 14.5L18 16.6L15.9 14.5L14.5 15.9L16.6 18L14.5 20.1L15.9 21.5L18 19.4L20.1 21.5L21.5 20.1L19.4 18L21.5 15.9L20.1 14.5Z";
var mdiCheese = "M11 17.5C11 16.67 11.67 16 12.5 16C12.79 16 13.06 16.09 13.29 16.23L20.75 11.93C20.35 11.22 19.9 10.55 19.41 9.9C19.29 9.96 19.15 10 19 10C18.45 10 18 9.55 18 9C18 8.8 18.08 8.62 18.18 8.46C16.45 6.64 14.34 5.2 12 4.25C11.85 5.24 11 6 10 6C8.9 6 8 5.11 8 4C8 3.72 8.06 3.45 8.16 3.21C7.3 3.08 6.41 3 5.5 3C5.33 3 5.17 3 5 3.03V9.05C6.14 9.28 7 10.29 7 11.5S6.14 13.72 5 13.95V21L11 17.54C11 17.53 11 17.5 11 17.5M14 9C15.11 9 16 9.9 16 11S15.11 13 14 13 12 12.11 12 11 12.9 9 14 9M9 16C8.45 16 8 15.55 8 15S8.45 14 9 14 10 14.45 10 15 9.55 16 9 16M9 10C8.45 10 8 9.55 8 9S8.45 8 9 8 10 8.45 10 9 9.55 10 9 10Z";
var mdiCheeseOff = "M3.5 1.7L2.2 3L6.1 6.9V9C7.2 9.2 8.1 10.2 8.1 11.5S7.2 13.7 6.1 14V21L12.1 17.5C12.1 16.7 12.8 16 13.6 16C13.9 16 14.2 16.1 14.4 16.2L15.1 15.8L20.3 21L21.6 19.7L3.5 1.7M10.1 16C9.6 16 9.1 15.5 9.1 15S9.6 14 10.1 14 11.1 14.5 11.1 15 10.6 16 10.1 16M13.8 9.5L9.9 5.6C10.2 5.9 10.6 6 11.1 6C12.1 6 12.9 5.2 13.1 4.2C15.4 5.2 17.6 6.6 19.3 8.4C19.2 8.6 19.1 8.7 19.1 8.9C19.1 9.4 19.6 9.9 20.1 9.9C20.3 9.9 20.4 9.9 20.5 9.8C21 10.4 21.4 11.1 21.8 11.8L18.3 13.8L16.6 12.1C16.9 11.8 17.1 11.3 17.1 10.8C17.1 9.7 16.2 8.8 15.1 8.8C14.6 9 14.1 9.2 13.8 9.5M9.5 5.2L7.3 3C8 3 8.6 3.1 9.2 3.2C9.1 3.5 9.1 3.7 9.1 4C9.1 4.4 9.2 4.9 9.5 5.2Z";
var mdiChefHat = "M12.5,1.5C10.73,1.5 9.17,2.67 8.67,4.37C8.14,4.13 7.58,4 7,4A4,4 0 0,0 3,8C3,9.82 4.24,11.41 6,11.87V19H19V11.87C20.76,11.41 22,9.82 22,8A4,4 0 0,0 18,4C17.42,4 16.86,4.13 16.33,4.37C15.83,2.67 14.27,1.5 12.5,1.5M12,10.5H13V17.5H12V10.5M9,12.5H10V17.5H9V12.5M15,12.5H16V17.5H15V12.5M6,20V21A1,1 0 0,0 7,22H18A1,1 0 0,0 19,21V20H6Z";
var mdiChemicalWeapon = "M11,7.83C9.83,7.42 9,6.3 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6.31 14.16,7.42 13,7.83V10.64C12.68,10.55 12.35,10.5 12,10.5C11.65,10.5 11.32,10.55 11,10.64V7.83M18.3,21.1C17.16,20.45 16.62,19.18 16.84,17.96L14.4,16.55C14.88,16.09 15.24,15.5 15.4,14.82L17.84,16.23C18.78,15.42 20.16,15.26 21.29,15.91C22.73,16.74 23.22,18.57 22.39,20C21.56,21.44 19.73,21.93 18.3,21.1M2.7,15.9C3.83,15.25 5.21,15.42 6.15,16.22L8.6,14.81C8.76,15.5 9.11,16.08 9.6,16.54L7.15,17.95C7.38,19.17 6.83,20.45 5.7,21.1C4.26,21.93 2.43,21.44 1.6,20C0.77,18.57 1.26,16.73 2.7,15.9M14,14A2,2 0 0,1 12,16C10.89,16 10,15.1 10,14A2,2 0 0,1 12,12C13.11,12 14,12.9 14,14M17,14L16.97,14.57L15.5,13.71C15.4,12.64 14.83,11.71 14,11.12V9.41C15.77,10.19 17,11.95 17,14M14.97,18.03C14.14,18.64 13.11,19 12,19C10.89,19 9.86,18.64 9.03,18L10.5,17.17C10.96,17.38 11.47,17.5 12,17.5C12.53,17.5 13.03,17.38 13.5,17.17L14.97,18.03M7.03,14.56L7,14C7,11.95 8.23,10.19 10,9.42V11.13C9.17,11.71 8.6,12.64 8.5,13.7L7.03,14.56Z";
var mdiChessBishop = "M19,22H5V20H19V22M17.16,8.26C18.22,9.63 18.86,11.28 19,13C19,15.76 15.87,18 12,18C8.13,18 5,15.76 5,13C5,10.62 7.33,6.39 10.46,5.27C10.16,4.91 10,4.46 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.46 13.84,4.91 13.54,5.27C14.4,5.6 15.18,6.1 15.84,6.74L11.29,11.29L12.71,12.71L17.16,8.26Z";
var mdiChessKing = "M19,22H5V20H19V22M17,10C15.58,10 14.26,10.77 13.55,12H13V7H16V5H13V2H11V5H8V7H11V12H10.45C9.35,10.09 6.9,9.43 5,10.54C3.07,11.64 2.42,14.09 3.5,16C4.24,17.24 5.57,18 7,18H17A4,4 0 0,0 21,14A4,4 0 0,0 17,10Z";
var mdiChessKnight = "M19,22H5V20H19V22M13,2V2C11.75,2 10.58,2.62 9.89,3.66L7,8L9,10L11.06,8.63C11.5,8.32 12.14,8.44 12.45,8.9C12.47,8.93 12.5,8.96 12.5,9V9C12.8,9.59 12.69,10.3 12.22,10.77L7.42,15.57C6.87,16.13 6.87,17.03 7.43,17.58C7.69,17.84 8.05,18 8.42,18H17V6A4,4 0 0,0 13,2Z";
var mdiChessPawn = "M19 22H5V20H19V22M16 18H8L10.18 10H8V8H10.72L10.79 7.74C10.1 7.44 9.55 6.89 9.25 6.2C8.58 4.68 9.27 2.91 10.79 2.25C12.31 1.58 14.08 2.27 14.74 3.79C15.41 5.31 14.72 7.07 13.2 7.74L13.27 8H16V10H13.82L16 18Z";
var mdiChessQueen = "M18,3A2,2 0 0,1 20,5C20,5.81 19.5,6.5 18.83,6.82L17,13.15V18H7V13.15L5.17,6.82C4.5,6.5 4,5.81 4,5A2,2 0 0,1 6,3A2,2 0 0,1 8,5C8,5.5 7.82,5.95 7.5,6.3L10.3,9.35L10.83,5.62C10.33,5.26 10,4.67 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.67 13.67,5.26 13.17,5.62L13.7,9.35L16.47,6.29C16.18,5.94 16,5.5 16,5A2,2 0 0,1 18,3M5,20H19V22H5V20Z";
var mdiChessRook = "M5,20H19V22H5V20M17,2V5H15V2H13V5H11V2H9V5H7V2H5V8H7V18H17V8H19V2H17Z";
var mdiChevronDoubleDown = "M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z";
var mdiChevronDoubleLeft = "M18.41,7.41L17,6L11,12L17,18L18.41,16.59L13.83,12L18.41,7.41M12.41,7.41L11,6L5,12L11,18L12.41,16.59L7.83,12L12.41,7.41Z";
var mdiChevronDoubleRight = "M5.59,7.41L7,6L13,12L7,18L5.59,16.59L10.17,12L5.59,7.41M11.59,7.41L13,6L19,12L13,18L11.59,16.59L16.17,12L11.59,7.41Z";
var mdiChevronDoubleUp = "M7.41,18.41L6,17L12,11L18,17L16.59,18.41L12,13.83L7.41,18.41M7.41,12.41L6,11L12,5L18,11L16.59,12.41L12,7.83L7.41,12.41Z";
var mdiChevronDown = "M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z";
var mdiChevronDownBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M12,15.71L6,9.71L7.41,8.29L12,12.88L16.59,8.29L18,9.71L12,15.71Z";
var mdiChevronDownBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M7.41,8.29L12,12.88L16.59,8.29L18,9.71L12,15.71L6,9.71L7.41,8.29Z";
var mdiChevronDownCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M6,10L12,16L18,10L16.6,8.6L12,13.2L7.4,8.6L6,10Z";
var mdiChevronDownCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M6,10L12,16L18,10L16.6,8.6L12,13.2L7.4,8.6L6,10Z";
var mdiChevronLeft = "M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z";
var mdiChevronLeftBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M15.71,16.59L14.29,18L8.29,12L14.29,6L15.71,7.41L11.12,12L15.71,16.59Z";
var mdiChevronLeftBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M15.71,7.41L11.12,12L15.71,16.59L14.29,18L8.29,12L14.29,6L15.71,7.41Z";
var mdiChevronLeftCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.4,16.6L10.8,12L15.4,7.4L14,6L8,12L14,18L15.4,16.6Z";
var mdiChevronLeftCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M15.4,16.6L10.8,12L15.4,7.4L14,6L8,12L14,18L15.4,16.6Z";
var mdiChevronRight = "M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z";
var mdiChevronRightBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M9.71,18L8.29,16.59L12.88,12L8.29,7.41L9.71,6L15.71,12L9.71,18Z";
var mdiChevronRightBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M8.29,16.59L12.88,12L8.29,7.41L9.71,6L15.71,12L9.71,18L8.29,16.59Z";
var mdiChevronRightCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,18L16,12L10,6L8.6,7.4L13.2,12L8.6,16.6L10,18Z";
var mdiChevronRightCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M8.6,16.6L13.2,12L8.6,7.4L10,6L16,12L10,18L8.6,16.6Z";
var mdiChevronTripleDown = "M7.41,14.58L12,19.17L16.59,14.58L18,16L12,22L6,16L7.41,14.58M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58M7.41,2.58L12,7.17L16.59,2.58L18,4L12,10L6,4L7.41,2.58Z";
var mdiChevronTripleLeft = "M9.42,7.41L4.83,12L9.42,16.59L8,18L2,12L8,6L9.42,7.41M15.42,7.41L10.83,12L15.42,16.59L14,18L8,12L14,6L15.42,7.41M21.42,7.41L16.83,12L21.42,16.59L20,18L14,12L20,6L21.42,7.41Z";
var mdiChevronTripleRight = "M14.58,16.59L19.17,12L14.58,7.41L16,6L22,12L16,18L14.58,16.59M8.58,16.59L13.17,12L8.58,7.41L10,6L16,12L10,18L8.58,16.59M2.58,16.59L7.17,12L2.58,7.41L4,6L10,12L4,18L2.58,16.59Z";
var mdiChevronTripleUp = "M16.59,9.42L12,4.83L7.41,9.42L6,8L12,2L18,8L16.59,9.42M16.59,15.42L12,10.83L7.41,15.42L6,14L12,8L18,14L16.59,15.42M16.59,21.42L12,16.83L7.41,21.42L6,20L12,14L18,20L16.59,21.42Z";
var mdiChevronUp = "M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z";
var mdiChevronUpBox = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M16.59,15.71L12,11.12L7.41,15.71L6,14.29L12,8.29L18,14.29L16.59,15.71Z";
var mdiChevronUpBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M16.59,15.71L12,11.12L7.41,15.71L6,14.29L12,8.29L18,14.29L16.59,15.71Z";
var mdiChevronUpCircle = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7.4,15.4L12,10.8L16.6,15.4L18,14L12,8L6,14L7.4,15.4Z";
var mdiChevronUpCircleOutline = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M7.4,15.4L12,10.8L16.6,15.4L18,14L12,8L6,14L7.4,15.4Z";
var mdiChiliHot = "M17.75,9L18.95,8.24C19.58,8.58 20,9.24 20,10V21.75C20,21.75 12,20 12,11V10C12,9.27 12.39,8.63 12.97,8.28L14.43,9L16,8L17.75,9M14,2C15.53,2 16.8,3.15 17,4.64C18,4.93 18.81,5.67 19.22,6.63L17.75,7.5L16,6.5L14.43,7.5L12.76,6.67C13.15,5.72 13.95,5 14.94,4.66C14.8,4.28 14.43,4 14,4V2M10,10C10,18 13.63,19.84 16,21.75C16,21.75 8,20 8,11V10C8,9.27 8.39,8.63 8.97,8.28L10.3,8.94C10.11,9.25 10,9.61 10,10M10.43,7.5L8.76,6.67C9.15,5.72 9.95,5 10.94,4.66C10.8,4.28 10.43,4 10,4V2C10.77,2 11.47,2.29 12,2.76V4C12.43,4 12.8,4.28 12.94,4.66C11.95,5 11.15,5.72 10.43,7.5M6,10C6,18 9.63,19.84 12,21.75C12,21.75 4,20 4,11V10C4,9.27 4.39,8.63 4.97,8.28L6.3,8.94C6.11,9.25 6,9.61 6,10M6.43,7.5L4.76,6.67C5.15,5.72 5.95,5 6.94,4.66C6.8,4.28 6.43,4 6,4V2C6.77,2 7.47,2.29 8,2.76V4C8.43,4 8.8,4.28 8.94,4.66C7.95,5 7.15,5.72 6.43,7.5Z";
var mdiChiliMedium = "M15.75,9L16.95,8.24C17.58,8.58 18,9.24 18,10V21.75C18,21.75 10,20 10,11V10C10,9.27 10.39,8.63 10.97,8.28L12.43,9L14,8L15.75,9M12,2C13.53,2 14.8,3.15 15,4.64C16,4.93 16.81,5.67 17.22,6.63L15.75,7.5L14,6.5L12.43,7.5L10.76,6.67C11.15,5.72 11.95,5 12.94,4.66C12.8,4.28 12.43,4 12,4V2M8,10C8,18 11.63,19.84 14,21.75C14,21.75 6,20 6,11V10C6,9.27 6.39,8.63 6.97,8.28L8.3,8.94C8.11,9.25 8,9.61 8,10M8.43,7.5L6.76,6.67C7.15,5.72 7.95,5 8.94,4.66C8.8,4.28 8.43,4 8,4V2C8.77,2 9.47,2.29 10,2.76V4C10.43,4 10.8,4.28 10.94,4.66C9.95,5 9.15,5.72 8.43,7.5Z";
var mdiChiliMild = "M13.75,9L14.95,8.24C15.58,8.58 16,9.24 16,10V21.75C16,21.75 8,20 8,11V10C8,9.27 8.39,8.63 8.97,8.28L10.43,9L12,8L13.75,9M10,2C11.53,2 12.8,3.15 13,4.64C14,4.93 14.81,5.67 15.22,6.63L13.75,7.5L12,6.5L10.43,7.5L8.76,6.67C9.15,5.72 9.95,5 10.94,4.66C10.8,4.28 10.43,4 10,4V2Z";
var mdiChiliOff = "M20.8 22.7L16 17.9V21.8C16 21.8 8 20 8 11V10 9.9L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M13.8 9L12 8L11.5 8.3L16 12.8V10C16 9.2 15.6 8.6 15 8.2L13.8 9M12 6.5L13.8 7.5L15.3 6.6C14.9 5.6 14.1 4.9 13.1 4.6C12.8 3.2 11.5 2 10 2V4C10.4 4 10.8 4.3 10.9 4.7C10.2 4.9 9.6 5.4 9.2 6L10.6 7.4L12 6.5Z";
var mdiChip = "M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z";
var mdiChristianity = "M10.5,2H13.5V8H19V11H13.5V22H10.5V11H5V8H10.5V2Z";
var mdiChristianityOutline = "M15.5,6V1H8.5V6H3V13H8.5V23H15.5V13H21V6H15.5M19,11H13.5V21H10.5V11H5V8H10.5V3H13.5V8H19V11Z";
var mdiChurch = "M11,2H13V4H15V6H13V9.4L22,13V15L20,14.2V22H14V17A2,2 0 0,0 12,15A2,2 0 0,0 10,17V22H4V14.2L2,15V13L11,9.4V6H9V4H11V2M6,20H8V15L7,14L6,15V20M16,20H18V15L17,14L16,15V20Z";
var mdiCigar = "M16 10.2H14.5A2 2 0 0 1 12.65 8.2A1.78 1.78 0 0 1 14.5 6.45V5A3.35 3.35 0 1 0 14.5 11.7H16A1.93 1.93 0 0 1 18 13.7V15H19.5V13.36A3.31 3.31 0 0 0 16 10.2M18.82 7.73A3.34 3.34 0 0 0 16.5 2V3.5A1.85 1.85 0 1 1 16.5 7.2V8.7A4 4 0 0 1 20.5 12.77V15H22V12.76A5.55 5.55 0 0 0 18.85 7.73M18 16V22H19.5V16M20.5 16V22H22V16M12 16V17.27A2 2 0 0 1 12 20.73V22H17V16M2.88 16.88A3 3 0 0 0 5 22H10V20.73A2 2 0 0 1 10 17.27V16H5A3 3 0 0 0 2.88 16.88M12 19A1 1 0 1 1 11 18A1 1 0 0 1 12 19Z";
var mdiCigarOff = "M20.84 22.73L18.11 20H18V19.89L17 18.89V20H12V18.73C12.3 18.56 12.55 18.31 12.73 18C13.28 17.05 12.96 15.83 12 15.27V14H12.11L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M14.5 9.7H16C17.07 9.66 17.96 10.5 18 11.56C18 11.61 18 11.65 18 11.7V13H19.5V11.36C19.42 9.53 17.88 8.12 16.05 8.2L16 8.2H14.5C13.45 8.12 12.65 7.25 12.65 6.2C12.67 5.22 13.5 4.43 14.46 4.45L14.5 4.45V3C12.65 3 11.15 4.5 11.15 6.35S12.65 9.7 14.5 9.7M20.5 10.7L20.5 10.77V13H22V10.76C22 8.62 20.78 6.66 18.85 5.73H18.82C19.58 5 19.9 4 19.8 3H18.32C18.34 3.11 18.35 3.23 18.35 3.35C18.35 4.37 17.5 5.2 16.5 5.2H16.5V6.7C18.71 6.7 20.5 8.5 20.5 10.7M9.27 16C9.45 15.7 9.7 15.45 10 15.27V14H5C4.21 14 3.44 14.32 2.88 14.88C1.71 16.05 1.71 17.95 2.88 19.12C3.45 19.68 4.21 20 5 20H10V18.73C9.05 18.18 8.72 16.95 9.27 16M18 14.8L19.5 16.3V14H18V14.8M20.5 17.3L22 18.8V14H20.5V17.3M11 16C10.45 16 10 16.45 10 17S10.45 18 11 18 12 17.55 12 17 11.55 16 11 16Z";
var mdiCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiCircleBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 16C9.79 16 8 14.21 8 12S9.79 8 12 8 16 9.79 16 12 14.21 16 12 16Z";
var mdiCircleBoxOutline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 8C9.79 8 8 9.79 8 12S9.79 16 12 16 16 14.21 16 12 14.21 8 12 8Z";
var mdiCircleDouble = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8Z";
var mdiCircleEditOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12H20A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4V2M18.78,3C18.61,3 18.43,3.07 18.3,3.2L17.08,4.41L19.58,6.91L20.8,5.7C21.06,5.44 21.06,5 20.8,4.75L19.25,3.2C19.12,3.07 18.95,3 18.78,3M16.37,5.12L9,12.5V15H11.5L18.87,7.62L16.37,5.12Z";
var mdiCircleExpand = "M16,4L20,8V4M20,16L16,20H20M8,20L4,16V20M4,8L8,4H4M16.95,7.05C14.22,4.32 9.78,4.32 7.05,7.05C4.32,9.78 4.32,14.22 7.05,16.95C9.78,19.68 14.22,19.68 16.95,16.95C19.68,14.22 19.68,9.79 16.95,7.05M15.85,15.85C13.72,18 10.28,18 8.15,15.85C6,13.72 6,10.28 8.15,8.15C10.28,6 13.72,6 15.85,8.15C18,10.28 18,13.72 15.85,15.85Z";
var mdiCircleHalf = "M12 2A10 10 0 0 0 2 12A10 10 0 0 0 12 22V2Z";
var mdiCircleHalfFull = "M12 2A10 10 0 0 0 2 12A10 10 0 0 0 12 22A10 10 0 0 0 22 12A10 10 0 0 0 12 2M12 4A8 8 0 0 1 20 12A8 8 0 0 1 12 20V4Z";
var mdiCircleMedium = "M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8Z";
var mdiCircleMultiple = "M15 4A8 8 0 1 1 7 12A8 8 0 0 1 15 4M3 12A6 6 0 0 0 7 17.65V19.74A8 8 0 0 1 7 4.26V6.35A6 6 0 0 0 3 12Z";
var mdiCircleMultipleOutline = "M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18M3,12C3,14.61 4.67,16.83 7,17.65V19.74C3.55,18.85 1,15.73 1,12C1,8.27 3.55,5.15 7,4.26V6.35C4.67,7.17 3,9.39 3,12Z";
var mdiCircleOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4.06 5.95C2.78 7.63 2 9.72 2 12C2 17.5 6.5 22 12 22C14.28 22 16.37 21.23 18.05 19.94L20.84 22.73L22.11 21.46M12 20C7.58 20 4 16.42 4 12C4 10.27 4.56 8.68 5.5 7.38L16.62 18.5C15.32 19.45 13.73 20 12 20M8.17 4.97L6.72 3.5C8.25 2.56 10.06 2 12 2C17.5 2 22 6.5 22 12C22 13.94 21.44 15.75 20.5 17.28L19.03 15.83C19.65 14.69 20 13.39 20 12C20 7.58 16.42 4 12 4C10.61 4 9.31 4.35 8.17 4.97Z";
var mdiCircleOutline = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiCircleSlice1 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C13.93 5 15.68 5.78 16.95 7.05L12 12V5Z";
var mdiCircleSlice2 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12H12V5Z";
var mdiCircleSlice3 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 13.93 18.22 15.68 16.95 16.95L12 12V5Z";
var mdiCircleSlice4 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19V5Z";
var mdiCircleSlice5 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C10.07 19 8.32 18.22 7.05 16.95L12 12V5Z";
var mdiCircleSlice6 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12H12V5Z";
var mdiCircleSlice7 = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12C5 10.07 5.78 8.32 7.05 7.05L12 12V5Z";
var mdiCircleSlice8 = "M12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4Z";
var mdiCircleSmall = "M12,10A2,2 0 0,0 10,12C10,13.11 10.9,14 12,14C13.11,14 14,13.11 14,12A2,2 0 0,0 12,10Z";
var mdiCircularSaw = "M13,11A1,1 0 0,1 14,12A1,1 0 0,1 13,13A1,1 0 0,1 12,12A1,1 0 0,1 13,11M7.86,6.25C9.14,4.87 10.97,4 13,4C16.5,4 19.44,6.61 19.93,10H22V12H16A3,3 0 0,0 13,9A3,3 0 0,0 10,12H2V10H2.05C2.25,7.73 3.14,5.66 4.5,4L7.86,6.25M6.73,7.89L5.06,6.77C4.53,7.75 4.18,8.84 4.06,10H6.07C6.18,9.25 6.4,8.54 6.73,7.89M7.4,15.4L6,14H11.79C12.03,14.42 12.5,14.7 13,14.7C13.5,14.7 13.97,14.42 14.21,14H20V15.4C18.39,14.42 18.46,15.75 18.46,15.75V17.71L16.5,19.67C16,17.92 15.1,18.9 15.1,18.9L13.7,20.3H10.9C11.88,18.69 10.55,18.76 10.55,18.76H8.59L6.63,16.8C8.38,16.31 7.4,15.4 7.4,15.4Z";
var mdiCity = "M19,15H17V13H19M19,19H17V17H19M13,7H11V5H13M13,11H11V9H13M13,15H11V13H13M13,19H11V17H13M7,11H5V9H7M7,15H5V13H7M7,19H5V17H7M15,11V5L12,2L9,5V7H3V21H21V11H15Z";
var mdiCityVariant = "M19,9V7A2,2 0 0,0 17,5H16V2H14V5H13A2,2 0 0,0 11,7V9A2,2 0 0,0 9,11V12H5A2,2 0 0,0 3,14V22H6V20H8V22H12V20H14V22H16V20H18V22H21V11A2,2 0 0,0 19,9M8,18H6V16H8V18M14,18H12V16H14V18M14,14H12V12H14V14M13,9V7H17V9H13M18,18H16V16H18V18M18,14H16V12H18V14Z";
var mdiCityVariantOutline = "M15,23H13V21H15V23M19,21H17V23H19V21M15,17H13V19H15V17M7,21H5V23H7V21M7,17H5V19H7V17M19,17H17V19H19V17M15,13H13V15H15V13M19,13H17V15H19V13M21,9A2,2 0 0,1 23,11V23H21V11H11V23H9V15H3V23H1V15A2,2 0 0,1 3,13H9V11A2,2 0 0,1 11,9V7A2,2 0 0,1 13,5H15V1H17V5H19A2,2 0 0,1 21,7V9M19,9V7H13V9H19Z";
var mdiClipboard = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3";
var mdiClipboardAccount = "M18,19H6V17.6C6,15.6 10,14.5 12,14.5C14,14.5 18,15.6 18,17.6M12,7A3,3 0 0,1 15,10A3,3 0 0,1 12,13A3,3 0 0,1 9,10A3,3 0 0,1 12,7M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiClipboardAccountOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M12,9A2,2 0 0,1 14,11A2,2 0 0,1 12,13A2,2 0 0,1 10,11A2,2 0 0,1 12,9M8,17V16C8,14.9 9.79,14 12,14C14.21,14 16,14.9 16,16V17H8Z";
var mdiClipboardAlert = "M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M13,14H11V8H13M13,18H11V16H13M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiClipboardAlertOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M11,9H13V13.5H11V9M11,15H13V17H11V15Z";
var mdiClipboardArrowDown = "M12,18L7,13H10V9H14V13H17M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiClipboardArrowDownOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M12,18L7,13H10V9H14V13H17L12,18Z";
var mdiClipboardArrowLeft = "M16,15H12V18L7,13L12,8V11H16M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiClipboardArrowLeftOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M7,13L12,18V15H16V11H12V8L7,13Z";
var mdiClipboardArrowRight = "M17,13L12,18V15H8V11H12V8M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiClipboardArrowRightOutline = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7M16.91,13L11.91,18V15H7.91V11H11.91V8L16.91,13Z";
var mdiClipboardArrowUp = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,8L7,13H10V17H14V13H17L12,8M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z";
var mdiClipboardArrowUpOutline = "M12,8L17,13H14V17H10V13H7L12,8M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.6,1.84 10.7,1 12,1C13.3,1 14.4,1.84 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M7,7V5H5V19H19V5H17V7H7Z";
var mdiClipboardCheck = "M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiClipboardCheckMultiple = "M4 7H2V21C2 22.1 2.9 23 4 23H18V21H4M20 3H16.8C16.4 1.8 15.3 1 14 1C12.7 1 11.6 1.8 11.2 3H8C6.9 3 6 3.9 6 5V17C6 18.1 6.9 19 8 19H20C21.1 19 22 18.1 22 17V5C22 3.9 21.1 3 20 3M14 3C14.6 3 15 3.5 15 4C15 4.5 14.5 5 14 5C13.5 5 13 4.5 13 4C13 3.5 13.4 3 14 3M12.3 15.1L9 11.8L10.4 10.4L12.3 12.3L17.6 7L19 8.4";
var mdiClipboardCheckMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M12.8 15.35L9.5 12.05L10.9 10.65L12.8 12.55L17.1 8.25L18.5 9.65L12.8 15.35M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7H10Z";
var mdiClipboardCheckOutline = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7M7.5,13.5L9,12L11,14L15.5,9.5L17,11L11,17L7.5,13.5Z";
var mdiClipboardClock = "M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25M23 16C23 19.87 19.87 23 16 23C14.09 23 12.37 22.24 11.11 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1S14.4 1.84 14.82 3H19C20.11 3 21 3.9 21 5V11.11C22.24 12.37 23 14.09 23 16M11 4C11 4.55 11.45 5 12 5S13 4.55 13 4 12.55 3 12 3 11 3.45 11 4M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z";
var mdiClipboardClockOutline = "M21 11.11V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H11.11C12.37 22.24 14.09 23 16 23C19.87 23 23 19.87 23 16C23 14.09 22.24 12.37 21 11.11M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M5 19V5H7V7H17V5H19V9.68C18.09 9.25 17.08 9 16 9C12.13 9 9 12.13 9 16C9 17.08 9.25 18.09 9.68 19H5M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25Z";
var mdiClipboardEdit = "M21.04 12.13C21.18 12.13 21.31 12.19 21.42 12.3L22.7 13.58C22.92 13.79 22.92 14.14 22.7 14.35L21.7 15.35L19.65 13.3L20.65 12.3C20.76 12.19 20.9 12.13 21.04 12.13M19.07 13.88L21.12 15.93L15.06 22H13V19.94L19.07 13.88M19 3C20.1 3 21 3.9 21 5V9L11 19V21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3Z";
var mdiClipboardEditOutline = "M21.04 12.13C21.18 12.13 21.31 12.19 21.42 12.3L22.7 13.58C22.92 13.79 22.92 14.14 22.7 14.35L21.7 15.35L19.65 13.3L20.65 12.3C20.76 12.19 20.9 12.13 21.04 12.13M19.07 13.88L21.12 15.93L15.06 22H13V19.94L19.07 13.88M11 19L9 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19C20.1 3 21 3.9 21 5V9L19 11V5H17V7H7V5H5V19H11M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3Z";
var mdiClipboardFile = "M19 3C20.1 3 21 3.9 21 5V9.17L19.83 8H15C12.79 8 11 9.79 11 12V21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3M15 23C13.9 23 13 22.11 13 21V12C13 10.9 13.9 10 15 10H19L23 14V21C23 22.11 22.11 23 21 23H15M21 14.83L18.17 12H18V15H21V14.83Z";
var mdiClipboardFileOutline = "M15 23C13.9 23 13 22.11 13 21V12C13 10.9 13.9 10 15 10H19L23 14V21C23 22.11 22.11 23 21 23H15M15 21H21V14.83L18.17 12H15V21M19 3C20.1 3 21 3.9 21 5V9.17L19.83 8H19V5H17V7H7V5H5V19H11V21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H9.18C9.6 1.84 10.7 1 12 1C13.3 1 14.4 1.84 14.82 3H19M12 3C11.45 3 11 3.45 11 4C11 4.55 11.45 5 12 5C12.55 5 13 4.55 13 4C13 3.45 12.55 3 12 3Z";
var mdiClipboardFlow = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M15,19L11,15H14V8H16V15H19L15,19M10,16H8V9H5L9,5L13,9H10V16";
var mdiClipboardFlowOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M7 7H17V5H19V19H5V5H7V7M10 16H8V11H6L9 8L12 11H10V16M14 10H16V15H18L15 18L12 15H14V10Z";
var mdiClipboardList = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7 8H9V12H8V9H7V8M10 17V18H7V17.08L9 15H7V14H9.25C9.66 14 10 14.34 10 14.75C10 14.95 9.92 15.14 9.79 15.27L8.12 17H10M11 4C11 3.45 11.45 3 12 3S13 3.45 13 4 12.55 5 12 5 11 4.55 11 4M17 17H12V15H17V17M17 11H12V9H17V11Z";
var mdiClipboardListOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M7 7H17V5H19V19H5V5H7V7M12 17V15H17V17H12M12 11V9H17V11H12M8 12V9H7V8H9V12H8M9.25 14C9.66 14 10 14.34 10 14.75C10 14.95 9.92 15.14 9.79 15.27L8.12 17H10V18H7V17.08L9 15H7V14H9.25";
var mdiClipboardMinus = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M16 14H8V12H16V14Z";
var mdiClipboardMinusOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M19 19H5V5H7V7H17V5H19V19M8 12H16V14H8V12Z";
var mdiClipboardMultiple = "M4 7H2V21C2 22.1 2.9 23 4 23H18V21H4M20 3H16.8C16.4 1.8 15.3 1 14 1C12.7 1 11.6 1.8 11.2 3H8C6.9 3 6 3.9 6 5V17C6 18.1 6.9 19 8 19H20C21.1 19 22 18.1 22 17V5C22 3.9 21.1 3 20 3M14 3C14.6 3 15 3.5 15 4C15 4.5 14.5 5 14 5C13.5 5 13 4.5 13 4C13 3.5 13.4 3 14 3Z";
var mdiClipboardMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7H10Z";
var mdiClipboardOff = "M21 5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H6.2L21 17.8V5M12 5C11.45 5 11 4.55 11 4S11.45 3 12 3 13 3.45 13 4 12.55 5 12 5M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.9 21 3 20.11 3 19V5C3 4.97 3 4.93 3 4.9L1.11 3L2.39 1.73L22.11 21.46Z";
var mdiClipboardOffOutline = "M2.39 1.73L1.11 3L3 4.9C3 4.93 3 4.97 3 5V19C3 20.11 3.9 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M5 19V6.89L17.11 19H5M17 7V5H19V15.8L21 17.8V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H6.2L10.2 7H17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3Z";
var mdiClipboardOutline = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7Z";
var mdiClipboardPlay = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M10,17V9L15,13L10,17Z";
var mdiClipboardPlayMultiple = "M4 21H18V23H4C2.9 23 2 22.1 2 21V7H4M22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.2C11.6 1.8 12.7 1 14 1C15.3 1 16.4 1.8 16.8 3H20C21.1 3 22 3.9 22 5M13 4C13 4.5 13.5 5 14 5C14.5 5 15 4.5 15 4C15 3.5 14.6 3 14 3C13.4 3 13 3.5 13 4M17 12L12 8V16";
var mdiClipboardPlayMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.2C11.6 1.8 12.7 1 14 1C15.3 1 16.4 1.8 16.8 3H20M14 3C13.4 3 13 3.5 13 4C13 4.5 13.4 5 14 5C14.6 5 15 4.6 15 4C15 3.4 14.6 3 14 3M10 7V5H8V17H20V5H18V7M12 15V9L17 12";
var mdiClipboardPlayOutline = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7M10,17V9L15,13L10,17Z";
var mdiClipboardPlus = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M13,12H16V14H13V17H11V14H8V12H11V9H13V12Z";
var mdiClipboardPlusOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M7 7H17V5H19V19H5V5H7V7M13 12H16V14H13V17H11V14H8V12H11V9H13V12Z";
var mdiClipboardPulse = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M5,13.46H7.17L10.5,7.08L11.44,14.05L13.93,10.86L16.53,13.46H19V15H15.89L14.07,13.21L10.38,17.92L9.62,12.15L8.11,15H5V13.46Z";
var mdiClipboardPulseOutline = "M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M5,15H8.11L9.62,12.15L10.38,17.92L14.07,13.21L15.89,15H19V19H5V15M19,13.46H16.53L13.93,10.86L11.44,14.05L10.5,7.08L7.17,13.46H5V5H7V6H17V5H19V6L19,13.46Z";
var mdiClipboardRemove = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M15.54 15.12L14.12 16.54L12 14.41L9.88 16.54L8.47 15.12L10.59 13L8.47 10.88L9.88 9.47L12 11.59L14.12 9.47L15.54 10.88L13.41 13L15.54 15.12Z";
var mdiClipboardRemoveOutline = "M19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M19 19H5V5H7V7H17V5H19V19M15.54 10.88L13.41 13L15.54 15.12L14.12 16.54L12 14.41L9.88 16.54L8.47 15.12L10.59 13L8.47 10.88L9.88 9.47L12 11.59L14.12 9.47L15.54 10.88Z";
var mdiClipboardSearch = "M11.9 10.9C14.41 8.4 18.45 8.37 21 10.82V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H13.06C12.65 20.74 12.26 20.45 11.9 20.1C9.37 17.56 9.37 13.44 11.9 10.9M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z";
var mdiClipboardSearchOutline = "M11.03 19H5V5H7V7H17V5H19V9.5C19.72 9.8 20.4 10.24 21 10.82V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H13.06C12.65 20.74 12.26 20.45 11.9 20.1C11.57 19.76 11.27 19.39 11.03 19M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z";
var mdiClipboardText = "M17,9H7V7H17M17,13H7V11H17M14,17H7V15H14M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiClipboardTextMultiple = "M20 3H16.8C16.4 1.8 15.3 1 14 1C12.7 1 11.6 1.8 11.2 3H8C6.9 3 6 3.9 6 5V17C6 18.1 6.9 19 8 19H20C21.1 19 22 18.1 22 17V5C22 3.9 21.1 3 20 3M14 3C14.6 3 15 3.5 15 4C15 4.5 14.5 5 14 5C13.5 5 13 4.5 13 4C13 3.5 13.4 3 14 3M16 14H9V12H16M19 10H9V8H19M4 21H18V23H4C2.9 23 2 22.1 2 21V7H4";
var mdiClipboardTextMultipleOutline = "M4 7V21H18V23H4C2.9 23 2 22.1 2 21V7H4M20 3C21.1 3 22 3.9 22 5V17C22 18.1 21.1 19 20 19H8C6.9 19 6 18.1 6 17V5C6 3.9 6.9 3 8 3H11.18C11.6 1.84 12.7 1 14 1C15.3 1 16.4 1.84 16.82 3H20M14 3C13.45 3 13 3.45 13 4C13 4.55 13.45 5 14 5C14.55 5 15 4.55 15 4C15 3.45 14.55 3 14 3M10 7V5H8V17H20V5H18V7M15 15H10V13H15M18 11H10V9H18V11Z";
var mdiClipboardTextOff = "M2.39 1.73L1.11 3L3 4.9C3 4.93 3 4.97 3 5V19C3 20.11 3.9 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M7 11H9.11L11.11 13H7V11M14 17H7V15H13.11L14 15.89V17M17 7V9H12.2L14.2 11H17V13H16.2L21 17.8V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H6.2L10.2 7H17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3Z";
var mdiClipboardTextOffOutline = "M17 7V5H19V15.8L21 17.8V5C21 3.9 20.11 3 19 3H14.82C14.25 1.44 12.53 .64 11 1.2C10.14 1.5 9.5 2.16 9.18 3H6.2L10.2 7H17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M14.2 11L12.2 9H17V11H14.2M2.39 1.73L1.11 3L3 4.9C3 4.93 3 4.97 3 5V19C3 20.11 3.9 21 5 21H19C19.03 21 19.07 21 19.1 21L20.84 22.73L22.11 21.46L2.39 1.73M5 19V6.89L7.11 9H7V11H9.11L11.11 13H7V15H13.11L17.11 19H5Z";
var mdiClipboardTextOutline = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M7,7H17V5H19V19H5V5H7V7M17,11H7V9H17V11M15,15H7V13H15V15Z";
var mdiClipboardTextPlay = "M19,3A2,2 0 0,1 21,5V13.34C20.36,13.11 19.68,13 19,13C15.68,13 13,15.69 13,19C13,19.68 13.11,20.36 13.34,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H9.18C9.5,2.16 10.14,1.5 11,1.2C12.53,0.64 14.25,1.44 14.82,3H19M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3M11,17V15H7V17H11M13,13V11H7V13H13M17,9V7H7V9H17M17,16L22,19L17,22V16Z";
var mdiClipboardTextPlayOutline = "M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H15V19H5V5H7V7H17V5H19V14H21V5A2,2 0 0,0 19,3M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M17,16V22L22,19L17,16M17,11H7V9H17V11M15,15H7V13H15V15Z";
var mdiClipboardTextSearch = "M10.18 17H7V15H10C10.08 14.32 10.23 13.64 10.5 13H7V11H11.82C11.85 10.97 11.87 10.94 11.9 10.9C13.17 9.64 14.84 9 16.5 9H7V7H17V9H16.5C18.12 9 19.74 9.61 21 10.82V5C21 3.9 20.11 3 19 3H14.82C14.4 1.84 13.3 1 12 1S9.6 1.84 9.18 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H13.06C12.65 20.74 12.26 20.45 11.9 20.1C11 19.21 10.45 18.13 10.18 17M12 3C12.55 3 13 3.45 13 4S12.55 5 12 5 11 4.55 11 4 11.45 3 12 3M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z";
var mdiClipboardTextSearchOutline = "M17 9H16.5 17M7 15H10C10.08 14.32 10.23 13.64 10.5 13H7V15M11.9 10.9C13.17 9.64 14.84 9 16.5 9H7V11H11.82C11.85 10.97 11.87 10.94 11.9 10.9M11.9 20.1C12.26 20.45 12.65 20.74 13.06 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H9.18C9.5 2.16 10.14 1.5 11 1.2C12.53 .64 14.25 1.44 14.82 3H19C20.11 3 21 3.9 21 5V10.82C20.4 10.24 19.72 9.8 19 9.5V5H17V7H7V5H5V19H11.03C11.27 19.39 11.57 19.76 11.9 20.1M11 4C11 4.55 11.45 5 12 5S13 4.55 13 4 12.55 3 12 3 11 3.45 11 4M23.39 21L22 22.39L18.88 19.32C18.19 19.75 17.37 20 16.5 20C14 20 12 18 12 15.5S14 11 16.5 11 21 13 21 15.5C21 16.38 20.75 17.21 20.31 17.9L23.39 21M19 15.5C19 14.12 17.88 13 16.5 13S14 14.12 14 15.5 15.12 18 16.5 18 19 16.88 19 15.5Z";
var mdiClippy = "M15,15.5A2.5,2.5 0 0,1 12.5,18A2.5,2.5 0 0,1 10,15.5V13.75A0.75,0.75 0 0,1 10.75,13A0.75,0.75 0 0,1 11.5,13.75V15.5A1,1 0 0,0 12.5,16.5A1,1 0 0,0 13.5,15.5V11.89C12.63,11.61 12,10.87 12,10C12,8.9 13,8 14.25,8C15.5,8 16.5,8.9 16.5,10C16.5,10.87 15.87,11.61 15,11.89V15.5M8.25,8C9.5,8 10.5,8.9 10.5,10C10.5,10.87 9.87,11.61 9,11.89V17.25A3.25,3.25 0 0,0 12.25,20.5A3.25,3.25 0 0,0 15.5,17.25V13.75A0.75,0.75 0 0,1 16.25,13A0.75,0.75 0 0,1 17,13.75V17.25A4.75,4.75 0 0,1 12.25,22A4.75,4.75 0 0,1 7.5,17.25V11.89C6.63,11.61 6,10.87 6,10C6,8.9 7,8 8.25,8M10.06,6.13L9.63,7.59C9.22,7.37 8.75,7.25 8.25,7.25C7.34,7.25 6.53,7.65 6.03,8.27L4.83,7.37C5.46,6.57 6.41,6 7.5,5.81V5.75A3.75,3.75 0 0,1 11.25,2A3.75,3.75 0 0,1 15,5.75V5.81C16.09,6 17.04,6.57 17.67,7.37L16.47,8.27C15.97,7.65 15.16,7.25 14.25,7.25C13.75,7.25 13.28,7.37 12.87,7.59L12.44,6.13C12.77,6 13.13,5.87 13.5,5.81V5.75C13.5,4.5 12.5,3.5 11.25,3.5C10,3.5 9,4.5 9,5.75V5.81C9.37,5.87 9.73,6 10.06,6.13M14.25,9.25C13.7,9.25 13.25,9.59 13.25,10C13.25,10.41 13.7,10.75 14.25,10.75C14.8,10.75 15.25,10.41 15.25,10C15.25,9.59 14.8,9.25 14.25,9.25M8.25,9.25C7.7,9.25 7.25,9.59 7.25,10C7.25,10.41 7.7,10.75 8.25,10.75C8.8,10.75 9.25,10.41 9.25,10C9.25,9.59 8.8,9.25 8.25,9.25Z";
var mdiClock = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z";
var mdiClockAlert = "M20 12H22V18H20V12M20 20H22V22H20V20M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22C14.3 22 16.3 21.2 18 20V10H21.8C20.9 5.4 16.8 2 12 2M16.2 16.2L11 13V7H12.5V12.2L17 14.9L16.2 16.2Z";
var mdiClockAlertOutline = "M11 7V13L16.2 16.1L17 14.9L12.5 12.2V7H11M20 12V18H22V12H20M20 20V22H22V20H20M18 20C16.3 21.3 14.3 22 12 22C6.5 22 2 17.5 2 12S6.5 2 12 2C16.8 2 20.9 5.4 21.8 10H19.7C18.8 6.6 15.7 4 12 4C7.6 4 4 7.6 4 12S7.6 20 12 20C14.4 20 16.5 18.9 18 17.3V20Z";
var mdiClockCheck = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M13 19C13 17.5 13.5 16.2 14.4 15.1L11 13V7H12.5V12.2L15.6 14.1C16.6 13.4 17.7 13 19 13C20 13 21 13.3 21.8 13.7C21.9 13.1 22 12.6 22 12C22 6.5 17.5 2 12 2S2 6.5 2 12 6.5 22 12 22C12.6 22 13.2 21.9 13.7 21.8C13.3 21 13 20 13 19Z";
var mdiClockCheckOutline = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M13.1 19.9C12.7 20 12.4 20 12 20C7.6 20 4 16.4 4 12S7.6 4 12 4 20 7.6 20 12C20 12.4 20 12.7 19.9 13.1C20.6 13.2 21.2 13.4 21.8 13.7C21.9 13.1 22 12.6 22 12C22 6.5 17.5 2 12 2S2 6.5 2 12C2 17.5 6.5 22 12 22C12.6 22 13.2 21.9 13.7 21.8C13.4 21.3 13.2 20.6 13.1 19.9M15.6 14.1L12.5 12.3V7H11V13L14.5 15.1C14.8 14.7 15.2 14.4 15.6 14.1Z";
var mdiClockDigital = "M2,6A2,2 0 0,0 0,8V16A2,2 0 0,0 2,18H22A2,2 0 0,0 24,16V8A2,2 0 0,0 22,6M2,8H22V16H2M3,9V10.5H6.25L3,15H4.75L8,10.5V9M9.25,9V10.5H10.75V9M12,9V10.5H13.5V15H15V9M17,9A1,1 0 0,0 16,10V14A1,1 0 0,0 17,15H20A1,1 0 0,0 21,14V10A1,1 0 0,0 20,9M17.5,10.5H19.5V13.5H17.5M9.25,13.5V15H10.75V13.5";
var mdiClockEnd = "M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M15,16V19H3V21H15V24L19,20M19,20V24H21V16H19";
var mdiClockFast = "M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6M14,8H15.5V11.78L17.83,14.11L16.77,15.17L14,12.4V8M2,18A1,1 0 0,1 1,17A1,1 0 0,1 2,16H5.83C6.14,16.71 6.54,17.38 7,18H2M3,13A1,1 0 0,1 2,12A1,1 0 0,1 3,11H5.05L5,12L5.05,13H3M4,8A1,1 0 0,1 3,7A1,1 0 0,1 4,6H7C6.54,6.62 6.14,7.29 5.83,8H4Z";
var mdiClockIn = "M2.21,0.79L0.79,2.21L4.8,6.21L3,8H8V3L6.21,4.8M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12";
var mdiClockOut = "M18,1L19.8,2.79L15.79,6.79L17.21,8.21L21.21,4.21L23,6V1M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12";
var mdiClockOutline = "M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z";
var mdiClockStart = "M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M4,16V24H6V21H18V24L22,20L18,16V19H6V16";
var mdiClockTimeEight = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M7.7 15.5L7 14.2L11 11.9V7H12.5V12.8L7.7 15.5Z";
var mdiClockTimeEightOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 12.8L7.7 15.6L7 14.2L11 11.9V7H12.5V12.8Z";
var mdiClockTimeEleven = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11L8.5 8.6L9.8 7.8L11 10V7H12.5V13Z";
var mdiClockTimeElevenOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V13H11L8.5 8.6L9.8 7.8L11 10V7H12.5Z";
var mdiClockTimeFive = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M14 17L11 11.8V7H12.5V11.4L15.3 16.3L14 17Z";
var mdiClockTimeFiveOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M15.3 16.2L14 17L11 11.8V7H12.5V11.4L15.3 16.2Z";
var mdiClockTimeFour = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M16.3 15.2L11 12.3V7H12.5V11.4L17 13.9L16.3 15.2Z";
var mdiClockTimeFourOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M17 13.9L16.3 15.2L11 12.3V7H12.5V11.4L17 13.9Z";
var mdiClockTimeNine = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H7V11.5H11V7H12.5V13Z";
var mdiClockTimeNineOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V13H7V11.5H11V7H12.5Z";
var mdiClockTimeOne = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.3 13H11V7H12.5V9.7L14 7.1L15.3 7.9L12.3 13Z";
var mdiClockTimeOneOutline = "M12 20C16.42 20 20 16.42 20 12S16.42 4 12 4 4 7.58 4 12 7.58 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.5 2 12 2M15.3 7.8L12.3 13H11V7H12.5V9.65L14 7.05L15.3 7.8Z";
var mdiClockTimeSeven = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 12.2L9.8 17L8.5 16.2L11 11.8V7H12.5V12.2Z";
var mdiClockTimeSevenOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V12.2L9.8 17L8.5 16.2L11 11.8V7H12.5Z";
var mdiClockTimeSix = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 17H11V7H12.5V17Z";
var mdiClockTimeSixOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 7V17H11V7H12.5Z";
var mdiClockTimeTen = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11L7 10.7L7.8 9.4L11.1 11.3V7H12.6V13Z";
var mdiClockTimeTenOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 13H11L7 10.7L7.8 9.4L11.1 11.3V7H12.6V13Z";
var mdiClockTimeThree = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M17 13H11V7H12.5V11.5H17V13Z";
var mdiClockTimeThreeOutline = "M12 20C16.4 20 20 16.4 20 12S16.4 4 12 4 4 7.6 4 12 7.6 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M17 11.5V13H11V7H12.5V11.5H17Z";
var mdiClockTimeTwelve = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11V7H12.5V13Z";
var mdiClockTimeTwelveOutline = "M12 20C16.42 20 20 16.42 20 12S16.42 4 12 4 4 7.58 4 12 7.58 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 13.03H11V7H12.5V13.03Z";
var mdiClockTimeTwo = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12.5 13H11V7H12.5V11.3L16.2 9.2L17 10.5L12.5 13Z";
var mdiClockTimeTwoOutline = "M12 20C16.42 20 20 16.42 20 12S16.42 4 12 4 4 7.58 4 12 7.58 20 12 20M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22C6.47 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12.5 13V13H11V7H12.5V11.26L16.2 9.13L16.95 10.43L12.5 13Z";
var mdiClose = "M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z";
var mdiCloseBox = "M19,3H16.3H7.7H5A2,2 0 0,0 3,5V7.7V16.4V19A2,2 0 0,0 5,21H7.7H16.4H19A2,2 0 0,0 21,19V16.3V7.7V5A2,2 0 0,0 19,3M15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4L13.4,12L17,15.6L15.6,17Z";
var mdiCloseBoxMultiple = "M4 20H18V22H4C2.9 22 2 21.11 2 20V6H4V20M20.22 2H7.78C6.8 2 6 2.8 6 3.78V16.22C6 17.2 6.8 18 7.78 18H20.22C21.2 18 22 17.2 22 16.22V3.78C22 2.8 21.2 2 20.22 2M19 13.6L17.6 15L14 11.4L10.4 15L9 13.6L12.6 10L9 6.4L10.4 5L14 8.6L17.6 5L19 6.4L15.4 10L19 13.6Z";
var mdiCloseBoxMultipleOutline = "M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H8V4H20V16M4 6V20H18V22H4C2.9 22 2 21.11 2 20V6H4M9.77 12.84L12.6 10L9.77 7.15L11.17 5.75L14 8.6L16.84 5.77L18.24 7.17L15.4 10L18.23 12.84L16.83 14.24L14 11.4L11.17 14.24L9.77 12.84Z";
var mdiCloseBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M17,8.4L13.4,12L17,15.6L15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4Z";
var mdiCloseCircle = "M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z";
var mdiCloseCircleMultiple = "M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M20 15.59L18.59 17L15 13.41L11.41 17L10 15.59L13.59 12L10 8.41L11.41 7L15 10.59L18.59 7L20 8.41L16.41 12L20 15.59Z";
var mdiCloseCircleMultipleOutline = "M18.54 9.88L17.12 8.47L15 10.59L12.88 8.47L11.47 9.88L13.59 12L11.47 14.12L12.88 15.54L15 13.41L17.12 15.54L18.54 14.12L16.41 12M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M15 19C11.14 19 8 15.86 8 12S11.14 5 15 5 22 8.14 22 12 18.86 19 15 19Z";
var mdiCloseCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z";
var mdiCloseNetwork = "M14.59,6L12,8.59L9.41,6L8,7.41L10.59,10L8,12.59L9.41,14L12,11.41L14.59,14L16,12.59L13.41,10L16,7.41L14.59,6M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z";
var mdiCloseNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M15.54,12.12L13.41,10L15.53,7.87L14.12,6.46L12,8.59L9.88,6.46L8.47,7.87L10.59,10L8.47,12.13L9.88,13.54L12,11.41L14.12,13.54L15.54,12.12Z";
var mdiCloseOctagon = "M8.27,3L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3M8.41,7L12,10.59L15.59,7L17,8.41L13.41,12L17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41";
var mdiCloseOctagonOutline = "M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M9.12,7.71L7.71,9.12L10.59,12L7.71,14.88L9.12,16.29L12,13.41L14.88,16.29L16.29,14.88L13.41,12L16.29,9.12L14.88,7.71L12,10.59";
var mdiCloseOutline = "M3,16.74L7.76,12L3,7.26L7.26,3L12,7.76L16.74,3L21,7.26L16.24,12L21,16.74L16.74,21L12,16.24L7.26,21L3,16.74M12,13.41L16.74,18.16L18.16,16.74L13.41,12L18.16,7.26L16.74,5.84L12,10.59L7.26,5.84L5.84,7.26L10.59,12L5.84,16.74L7.26,18.16L12,13.41Z";
var mdiCloseThick = "M20 6.91L17.09 4L12 9.09L6.91 4L4 6.91L9.09 12L4 17.09L6.91 20L12 14.91L17.09 20L20 17.09L14.91 12L20 6.91Z";
var mdiClosedCaption = "M18,11H16.5V10.5H14.5V13.5H16.5V13H18V14A1,1 0 0,1 17,15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,11H9.5V10.5H7.5V13.5H9.5V13H11V14A1,1 0 0,1 10,15H7A1,1 0 0,1 6,14V10A1,1 0 0,1 7,9H10A1,1 0 0,1 11,10M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z";
var mdiClosedCaptionOutline = "M5,4C4.45,4 4,4.18 3.59,4.57C3.2,4.96 3,5.44 3,6V18C3,18.56 3.2,19.04 3.59,19.43C4,19.82 4.45,20 5,20H19C19.5,20 20,19.81 20.39,19.41C20.8,19 21,18.53 21,18V6C21,5.47 20.8,5 20.39,4.59C20,4.19 19.5,4 19,4H5M4.5,5.5H19.5V18.5H4.5V5.5M7,9C6.7,9 6.47,9.09 6.28,9.28C6.09,9.47 6,9.7 6,10V14C6,14.3 6.09,14.53 6.28,14.72C6.47,14.91 6.7,15 7,15H10C10.27,15 10.5,14.91 10.71,14.72C10.91,14.53 11,14.3 11,14V13H9.5V13.5H7.5V10.5H9.5V11H11V10C11,9.7 10.91,9.47 10.71,9.28C10.5,9.09 10.27,9 10,9H7M14,9C13.73,9 13.5,9.09 13.29,9.28C13.09,9.47 13,9.7 13,10V14C13,14.3 13.09,14.53 13.29,14.72C13.5,14.91 13.73,15 14,15H17C17.3,15 17.53,14.91 17.72,14.72C17.91,14.53 18,14.3 18,14V13H16.5V13.5H14.5V10.5H16.5V11H18V10C18,9.7 17.91,9.47 17.72,9.28C17.53,9.09 17.3,9 17,9H14Z";
var mdiCloud = "M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z";
var mdiCloudAlert = "M19 20H6C2.7 20 0 17.3 0 14C0 10.9 2.3 8.4 5.3 8C6.6 5.6 9.1 4 12 4C15.6 4 18.7 6.6 19.4 10C22 10.2 24 12.3 24 15C24 17.7 21.7 20 19 20M11 15V17H13V15H11M11 13H13V7H11V13Z";
var mdiCloudBraces = "M6,20A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4C15.63,4 18.66,6.58 19.35,10C21.95,10.19 24,12.36 24,15A5,5 0 0,1 19,20H6M18.5,12H18A1,1 0 0,1 17,11V10A2,2 0 0,0 15,8H13.5V10H15V11A2,2 0 0,0 17,13A2,2 0 0,0 15,15V16H13.5V18H15A2,2 0 0,0 17,16V15A1,1 0 0,1 18,14H18.5V12M5.5,12V14H6A1,1 0 0,1 7,15V16A2,2 0 0,0 9,18H10.5V16H9V15A2,2 0 0,0 7,13A2,2 0 0,0 9,11V10H10.5V8H9A2,2 0 0,0 7,10V11A1,1 0 0,1 6,12H5.5Z";
var mdiCloudCheck = "M10,17L6.5,13.5L7.91,12.08L10,14.17L15.18,9L16.59,10.41M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z";
var mdiCloudCheckOutline = "M19 18H6C3.79 18 2 16.21 2 14S3.79 10 6 10H6.71C7.37 7.69 9.5 6 12 6C15.04 6 17.5 8.46 17.5 11.5V12H19C20.66 12 22 13.34 22 15S20.66 18 19 18M19.35 10.03C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.03C2.34 8.36 0 10.9 0 14C0 17.31 2.69 20 6 20H19C21.76 20 24 17.76 24 15C24 12.36 21.95 10.22 19.35 10.03M10 17L6.5 13.5L7.91 12.08L10 14.17L14.59 9.59L16 11";
var mdiCloudCircle = "M16.5,16H8A3,3 0 0,1 5,13A3,3 0 0,1 8,10C8.05,10 8.09,10 8.14,10C8.58,8.28 10.13,7 12,7A4,4 0 0,1 16,11H16.5A2.5,2.5 0 0,1 19,13.5A2.5,2.5 0 0,1 16.5,16M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiCloudDownload = "M17,13L12,18L7,13H10V9H14V13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z";
var mdiCloudDownloadOutline = "M8,13H10.55V10H13.45V13H16L12,17L8,13M19.35,10.04C21.95,10.22 24,12.36 24,15A5,5 0 0,1 19,20H6A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4C15.64,4 18.67,6.59 19.35,10.04M19,18A3,3 0 0,0 22,15C22,13.45 20.78,12.14 19.22,12.04L17.69,11.93L17.39,10.43C16.88,7.86 14.62,6 12,6C9.94,6 8.08,7.14 7.13,8.97L6.63,9.92L5.56,10.03C3.53,10.24 2,11.95 2,14A4,4 0 0,0 6,18H19Z";
var mdiCloudLock = "M22 17C22.5 17 23 17.5 23 18V22C23 22.5 22.5 23 22 23H17C16.5 23 16 22.5 16 22V18C16 17.5 16.5 17 17 17V15.5C17 14.1 18.1 13 19.5 13C20.9 13 22 14.1 22 15.5V17M21 17V15.5C21 14.7 20.3 14 19.5 14C18.7 14 18 14.7 18 15.5V17H21M19.36 9.03C21.95 9.22 24 11.36 24 14L23.94 14.77C23.59 12.63 21.74 11 19.5 11C17 11 15 13 15 15.5L15 15.76C14.39 16.31 14 17.11 14 18V19H6C2.69 19 0 16.31 0 13C0 9.9 2.34 7.36 5.35 7.04C6.6 4.64 9.11 3 12 3C15.64 3 18.67 5.59 19.36 9.03Z";
var mdiCloudLockOutline = "M22 17C22.5 17 23 17.5 23 18V22C23 22.5 22.5 23 22 23H17C16.5 23 16 22.5 16 22V18C16 17.5 16.5 17 17 17V15.5C17 14.1 18.1 13 19.5 13C20.9 13 22 14.1 22 15.5V17M21 17V15.5C21 14.7 20.3 14 19.5 14C18.7 14 18 14.7 18 15.5V17H21M17.5 11V10.5C17.5 7.46 15.04 5 12 5C9.5 5 7.37 6.69 6.71 9H6C3.79 9 2 10.79 2 13C2 15.21 3.79 17 6 17H14.17C14.06 17.31 14 17.65 14 18V19H6C2.69 19 0 16.31 0 13C0 9.9 2.34 7.36 5.35 7.04C6.6 4.64 9.11 3 12 3C15.64 3 18.67 5.6 19.36 9.04C21.95 9.22 24 11.36 24 14L23.94 14.77C23.59 12.63 21.74 11 19.5 11H17.5Z";
var mdiCloudOffOutline = "M7.73,10L15.73,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10M3,5.27L5.75,8C2.56,8.15 0,10.77 0,14A6,6 0 0,0 6,20H17.73L19.73,22L21,20.73L4.27,4M19.35,10.03C18.67,6.59 15.64,4 12,4C10.5,4 9.15,4.43 8,5.17L9.45,6.63C10.21,6.23 11.08,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15C22,16.13 21.36,17.11 20.44,17.62L21.89,19.07C23.16,18.16 24,16.68 24,15C24,12.36 21.95,10.22 19.35,10.03Z";
var mdiCloudOutline = "M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10H6.71C7.37,7.69 9.5,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z";
var mdiCloudPrint = "M12,2C9.11,2 6.6,3.64 5.35,6.04C2.34,6.36 0,8.91 0,12A6,6 0 0,0 6,18V22H18V18H19A5,5 0 0,0 24,13C24,10.36 21.95,8.22 19.35,8.04C18.67,4.59 15.64,2 12,2M8,13H16V20H8V13M9,14V15H15V14H9M9,16V17H15V16H9M9,18V19H15V18H9Z";
var mdiCloudPrintOutline = "M19,16A3,3 0 0,0 22,13A3,3 0 0,0 19,10H17.5V9.5A5.5,5.5 0 0,0 12,4C9.5,4 7.37,5.69 6.71,8H6A4,4 0 0,0 2,12A4,4 0 0,0 6,16V11H18V16H19M19.36,8.04C21.95,8.22 24,10.36 24,13A5,5 0 0,1 19,18H18V22H6V18A6,6 0 0,1 0,12C0,8.91 2.34,6.36 5.35,6.04C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.6 19.36,8.04M8,13V20H16V13H8M9,18H15V19H9V18M15,17H9V16H15V17M9,14H15V15H9V14Z";
var mdiCloudQuestion = "M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03M13,17H11V15H13V17M14.8,11.82C14.5,12.21 14.13,12.5 13.67,12.75C13.41,12.91 13.24,13.07 13.15,13.26C13.06,13.45 13,13.69 13,14H11C11,13.45 11.11,13.08 11.3,12.82C11.5,12.56 11.85,12.25 12.37,11.91C12.63,11.75 12.84,11.56 13,11.32C13.15,11.09 13.23,10.81 13.23,10.5C13.23,10.18 13.14,9.94 12.96,9.76C12.78,9.56 12.5,9.47 12.2,9.47C11.93,9.47 11.71,9.55 11.5,9.7C11.35,9.85 11.25,10.08 11.25,10.39H9.28C9.23,9.64 9.5,9 10.06,8.59C10.6,8.2 11.31,8 12.2,8C13.14,8 13.89,8.23 14.43,8.68C14.97,9.13 15.24,9.75 15.24,10.5C15.24,11 15.09,11.41 14.8,11.82Z";
var mdiCloudRefresh = "M12 4C15.64 4 18.67 6.59 19.35 10.04C21.95 10.22 24 12.36 24 15C24 17.76 21.76 20 19 20H6C2.69 20 0 17.31 0 14C0 10.91 2.34 8.36 5.35 8.04C6.6 5.64 9.11 4 12 4M17 13V9L16 10C15.09 8.79 13.64 8 12 8C9.24 8 7 10.24 7 13C7 15.76 9.24 18 12 18C14.05 18 15.81 16.77 16.58 15H14.24C13.69 15.61 12.89 16 12 16C10.34 16 9 14.66 9 13C9 11.34 10.34 10 12 10C13.09 10 14.04 10.58 14.56 11.44L13 13H17Z";
var mdiCloudSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M19.35,8.03C21.95,8.22 24,10.36 24,13C24,14.64 23.21,16.1 22,17V16.5A6.5,6.5 0 0,0 15.5,10A6.5,6.5 0 0,0 9,16.5C9,17 9.06,17.5 9.17,18H6A6,6 0 0,1 0,12C0,8.9 2.34,6.36 5.35,6.03C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.59 19.35,8.03Z";
var mdiCloudSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M22,13A3,3 0 0,0 19,10H17.5V9.5A5.5,5.5 0 0,0 12,4C9.5,4 7.37,5.69 6.71,8H6A4,4 0 0,0 2,12A4,4 0 0,0 6,16H9V16.5C9,17 9.06,17.5 9.17,18H6A6,6 0 0,1 0,12C0,8.9 2.34,6.36 5.35,6.04C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.59 19.36,8.04C21.95,8.22 24,10.36 24,13C24,14.65 23.21,16.1 22,17V16.5C22,15.77 21.88,15.06 21.65,14.4C21.87,14 22,13.5 22,13Z";
var mdiCloudSync = "M19 12V13.5C21.21 13.5 23 15.29 23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L16.72 14.22C16.78 14.17 16.85 14.13 19 12M19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5L21.25 20.75L21.28 20.78C21.22 20.83 21.15 20.87 19 23M13 17.5C13 13.91 15.91 11 19.5 11C20.78 11 21.97 11.38 23 12C22.13 10.9 20.84 10.14 19.35 10.03C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.03C2.34 8.36 0 10.9 0 14C0 17.31 2.69 20 6 20H13.5C13.18 19.23 13 18.39 13 17.5Z";
var mdiCloudSyncOutline = "M19 12V13.5C21.21 13.5 23 15.29 23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L16.72 14.22C16.78 14.17 16.85 14.13 19 12M19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5L21.25 20.75L21.28 20.78C21.22 20.83 21.15 20.87 19 23M13.03 18H6C3.79 18 2 16.21 2 14S3.79 10 6 10H6.71C7.37 7.69 9.5 6 12 6C15 6 17.4 8.37 17.5 11.32C18.12 11.11 18.8 11 19.5 11C20.78 11 21.97 11.38 23 12C22.13 10.9 20.84 10.14 19.35 10.03C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.03C2.34 8.36 0 10.9 0 14C0 17.31 2.69 20 6 20H13.5C13.24 19.38 13.08 18.7 13.03 18Z";
var mdiCloudTags = "M6,20A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4C15.63,4 18.66,6.58 19.35,10C21.95,10.19 24,12.36 24,15A5,5 0 0,1 19,20H6M9.09,8.4L4.5,13L9.09,17.6L10.5,16.18L7.32,13L10.5,9.82L9.09,8.4M14.91,8.4L13.5,9.82L16.68,13L13.5,16.18L14.91,17.6L19.5,13L14.91,8.4Z";
var mdiCloudUpload = "M14,13V17H10V13H7L12,8L17,13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z";
var mdiCloudUploadOutline = "M19.35,10.04C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.04C2.34,8.36 0,10.91 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.04M19,18H6A4,4 0 0,1 2,14C2,11.95 3.53,10.24 5.56,10.03L6.63,9.92L7.13,8.97C8.08,7.14 9.94,6 12,6C14.62,6 16.88,7.86 17.39,10.43L17.69,11.93L19.22,12.04C20.78,12.14 22,13.45 22,15A3,3 0 0,1 19,18M8,13H10.55V16H13.45V13H16L12,9L8,13Z";
var mdiClover = "M12,11.18C15.3,8.18 17,6.64 17,4.69C17,3.19 15.75,2 14.25,2C13.39,2 12.57,2.36 12,3C11.43,2.36 10.61,2 9.69,2C8.19,2 7,3.25 7,4.75C7,6.64 8.7,8.18 12,11.18M11.18,12C8.18,8.7 6.64,7 4.69,7C3.19,7 2,8.25 2,9.75C2,10.61 2.36,11.43 3,12C2.36,12.57 2,13.39 2,14.31C2,15.81 3.25,17 4.75,17C6.64,17 8.18,15.3 11.18,12M12.83,12C15.82,15.3 17.36,17 19.31,17C20.81,17 22,15.75 22,14.25C22,13.39 21.64,12.57 21,12C21.64,11.43 22,10.61 22,9.69C22,8.19 20.75,7 19.25,7C17.36,7 15.82,8.7 12.83,12M12,12.82C8.7,15.82 7,17.36 7,19.31C7,20.81 8.25,22 9.75,22C10.61,22 11.43,21.64 12,21C12.57,21.64 13.39,22 14.31,22C15.81,22 17,20.75 17,19.25C17,17.36 15.3,15.82 12,12.82Z";
var mdiCoachLamp = "M16 5L15 2H13L12 5L6 8H8L8.6 11H4V7H2V17H4V13H9L10 18L12 20L13 22H15L16 20L18 18L20 8H22M16.16 17H11.84L10 8H18Z";
var mdiCoatRack = "M18.33 7.78A1 1 0 0 0 16.66 8.89A2 2 0 1 1 13 10V7.82A3 3 0 1 0 11 7.82V10A2 2 0 1 1 7.34 8.89A1 1 0 1 0 5.67 7.78A4 4 0 0 0 11 13.46V20A2 2 0 0 0 9 22H15A2 2 0 0 0 13 20V13.46A4 4 0 0 0 18.33 7.78M12 4A1 1 0 1 1 11 5A1 1 0 0 1 12 4Z";
var mdiCodeArray = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M6,6V18H10V16H8V8H10V6H6M16,16H14V18H18V6H14V8H16V16Z";
var mdiCodeBraces = "M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z";
var mdiCodeBracesBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M11 8H9V10C9 11.1 8.1 12 7 12C8.1 12 9 12.9 9 14V16H11V18H9C7.9 18 7 17.1 7 16V15C7 13.9 6.1 13 5 13V11C6.1 11 7 10.1 7 9V8C7 6.9 7.9 6 9 6H11V8M19 13C17.9 13 17 13.9 17 15V16C17 17.1 16.1 18 15 18H13V16H15V14C15 12.9 15.9 12 17 12C15.9 12 15 11.1 15 10V8H13V6H15C16.1 6 17 6.9 17 8V9C17 10.1 17.9 11 19 11V13Z";
var mdiCodeBrackets = "M15,4V6H18V18H15V20H20V4M4,4V20H9V18H6V6H9V4H4Z";
var mdiCodeEqual = "M6,13H11V15H6M13,13H18V15H13M13,9H18V11H13M6,9H11V11H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z";
var mdiCodeGreaterThan = "M10.41,7.41L15,12L10.41,16.6L9,15.18L12.18,12L9,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z";
var mdiCodeGreaterThanOrEqual = "M13,13H18V15H13M13,9H18V11H13M6.91,7.41L11.5,12L6.91,16.6L5.5,15.18L8.68,12L5.5,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z";
var mdiCodeJson = "M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z";
var mdiCodeLessThan = "M13.59,7.41L9,12L13.59,16.6L15,15.18L11.82,12L15,8.82M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19Z";
var mdiCodeLessThanOrEqual = "M13,13H18V15H13M13,9H18V11H13M10.09,7.41L11.5,8.82L8.32,12L11.5,15.18L10.09,16.6L5.5,12M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z";
var mdiCodeNotEqual = "M6,15H8V17H6M11,13H18V15H11M11,9H18V11H11M6,7H8V13H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z";
var mdiCodeNotEqualVariant = "M11,6.5V9.33L8.33,12L11,14.67V17.5L5.5,12M13,6.43L18.57,12L13,17.57V14.74L15.74,12L13,9.26M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z";
var mdiCodeParentheses = "M17.62,3C19.13,5.27 20,8.55 20,12C20,15.44 19.13,18.72 17.62,21L16,19.96C17.26,18.07 18,15.13 18,12C18,8.87 17.26,5.92 16,4.03L17.62,3M6.38,3L8,4.04C6.74,5.92 6,8.87 6,12C6,15.13 6.74,18.08 8,19.96L6.38,21C4.87,18.73 4,15.45 4,12C4,8.55 4.87,5.27 6.38,3Z";
var mdiCodeParenthesesBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M10 17.3L8.4 18C6.9 16.5 6 14.3 6 12S6.9 7.5 8.4 6L10 6.7C8.7 7.9 8 9.9 8 12S8.7 16.1 10 17.3M15.6 18L14 17.3C15.3 16 16 14.1 16 12S15.3 7.9 14 6.7L15.6 6C17.1 7.5 18 9.7 18 12C18 14.3 17.1 16.5 15.6 18Z";
var mdiCodeString = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M12.5,11H11.5A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 11.5,8H12.5A1.5,1.5 0 0,1 14,9.5H16A3.5,3.5 0 0,0 12.5,6H11.5A3.5,3.5 0 0,0 8,9.5A3.5,3.5 0 0,0 11.5,13H12.5A1.5,1.5 0 0,1 14,14.5A1.5,1.5 0 0,1 12.5,16H11.5A1.5,1.5 0 0,1 10,14.5H8A3.5,3.5 0 0,0 11.5,18H12.5A3.5,3.5 0 0,0 16,14.5A3.5,3.5 0 0,0 12.5,11Z";
var mdiCodeTags = "M14.6,16.6L19.2,12L14.6,7.4L16,6L22,12L16,18L14.6,16.6M9.4,16.6L4.8,12L9.4,7.4L8,6L2,12L8,18L9.4,16.6Z";
var mdiCodeTagsCheck = "M6.59,3.41L2,8L6.59,12.6L8,11.18L4.82,8L8,4.82L6.59,3.41M12.41,3.41L11,4.82L14.18,8L11,11.18L12.41,12.6L17,8L12.41,3.41M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13L21.59,11.59Z";
var mdiCodepen = "M8.21 12L6.88 12.89V11.11L8.21 12M11.47 9.82V7.34L7.31 10.12L9.16 11.36L11.47 9.82M16.7 10.12L12.53 7.34V9.82L14.84 11.36L16.7 10.12M7.31 13.88L11.47 16.66V14.18L9.16 12.64L7.31 13.88M12.53 14.18V16.66L16.7 13.88L14.84 12.64L12.53 14.18M12 10.74L10.12 12L12 13.26L13.88 12L12 10.74M22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12M18.18 10.12C18.18 10.09 18.18 10.07 18.18 10.05L18.17 10L18.17 10L18.16 9.95C18.15 9.94 18.15 9.93 18.14 9.91L18.13 9.89L18.11 9.85L18.1 9.83L18.08 9.8L18.06 9.77L18.03 9.74L18 9.72L18 9.7L17.96 9.68L17.95 9.67L12.3 5.91C12.12 5.79 11.89 5.79 11.71 5.91L6.05 9.67L6.05 9.68L6 9.7C6 9.71 6 9.72 6 9.72L5.97 9.74L5.94 9.77L5.93 9.8L5.9 9.83L5.89 9.85L5.87 9.89L5.86 9.91L5.84 9.95L5.84 10L5.83 10L5.82 10.05C5.82 10.07 5.82 10.09 5.82 10.12V13.88C5.82 13.91 5.82 13.93 5.82 13.95L5.83 14L5.84 14L5.84 14.05C5.85 14.06 5.85 14.07 5.86 14.09L5.87 14.11L5.89 14.15L5.9 14.17L5.92 14.2L5.94 14.23C5.95 14.24 5.96 14.25 5.97 14.26L6 14.28L6 14.3L6.04 14.32L6.05 14.33L11.71 18.1C11.79 18.16 11.9 18.18 12 18.18C12.1 18.18 12.21 18.15 12.3 18.1L17.95 14.33L17.96 14.32L18 14.3L18 14.28L18.03 14.26L18.06 14.23L18.08 14.2L18.1 14.17L18.11 14.15L18.13 14.11L18.14 14.09L18.16 14.05L18.16 14L18.17 14L18.18 13.95C18.18 13.93 18.18 13.91 18.18 13.88V10.12M17.12 12.89V11.11L15.79 12L17.12 12.89Z";
var mdiCoffee = "M2,21H20V19H2M20,8H18V5H20M20,3H4V13A4,4 0 0,0 8,17H14A4,4 0 0,0 18,13V10H20A2,2 0 0,0 22,8V5C22,3.89 21.1,3 20,3Z";
var mdiCoffeeMaker = "M21 1V4H7V21H21V23H2V3C2 1.89 2.89 1 4 1H21M22 13V15C22 16.11 21.11 17 20 17H18C18 20 15 20 14 20S10 20 10 17V11H20C21.11 11 22 11.9 22 13M20 13H18V15H20V13M17 9L19 5H9L11 9H17Z";
var mdiCoffeeOff = "M3.27 2L22 20.72L20.72 22L19.73 21H2V19H17.73L15.44 16.71C15 16.89 14.5 17 14 17H8C5.79 17 4 15.21 4 13V5.27L2 3.27L3.27 2M22 5V8C22 9.1 21.1 10 20 10H18V13C18 13.36 17.94 13.7 17.85 14.04L6.81 3H20C21.1 3 22 3.89 22 5M20 5H18V8H20V5Z";
var mdiCoffeeOffOutline = "M2 3.27L4 5.27V13C4 15.21 5.79 17 8 17H14C14.5 17 15 16.89 15.44 16.71L17.73 19H2V21H19.73L20.72 22L22 20.72L3.27 2L2 3.27M8 15C6.9 15 6 14.1 6 13V7.27L13.73 15H8M20 3H6.81L8.81 5H16V12.19L17.85 14.04C17.94 13.7 18 13.36 18 13V10H20C21.1 10 22 9.1 22 8V5C22 3.9 21.1 3 20 3M20 8H18V5H20V8Z";
var mdiCoffeeOutline = "M2,21V19H20V21H2M20,8V5H18V8H20M20,3A2,2 0 0,1 22,5V8A2,2 0 0,1 20,10H18V13A4,4 0 0,1 14,17H8A4,4 0 0,1 4,13V3H20M16,5H6V13A2,2 0 0,0 8,15H14A2,2 0 0,0 16,13V5Z";
var mdiCoffeeToGo = "M3,19V17H17L15.26,15.24L16.67,13.83L20.84,18L16.67,22.17L15.26,20.76L17,19H3M17,8V5H15V8H17M17,3C18.11,3 19,3.9 19,5V8C19,9.11 18.11,10 17,10H15V11A4,4 0 0,1 11,15H7A4,4 0 0,1 3,11V3H17Z";
var mdiCoffeeToGoOutline = "M3 3V11A4 4 0 0 0 7 15H11A4 4 0 0 0 15 11V10H17C18.11 10 19 9.11 19 8V5C19 3.9 18.11 3 17 3H3M5 5H13V11A2 2 0 0 1 11 13H7A2 2 0 0 1 5 11V5M15 5H17V8H15V5M16.67 13.83L15.26 15.24L17 17H3V19H17L15.26 20.76L16.67 22.17L20.84 18L16.67 13.83Z";
var mdiCoffin = "M8,22L5,8L8,2H16L19,8L16,22H8M11,6V8H9V10H11V15H13V10H15V8H13V6H11Z";
var mdiCog = "M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z";
var mdiCogBox = "M17.25,12C17.25,12.23 17.23,12.46 17.2,12.68L18.68,13.84C18.81,13.95 18.85,14.13 18.76,14.29L17.36,16.71C17.27,16.86 17.09,16.92 16.93,16.86L15.19,16.16C14.83,16.44 14.43,16.67 14,16.85L13.75,18.7C13.72,18.87 13.57,19 13.4,19H10.6C10.43,19 10.28,18.87 10.25,18.7L10,16.85C9.56,16.67 9.17,16.44 8.81,16.16L7.07,16.86C6.91,16.92 6.73,16.86 6.64,16.71L5.24,14.29C5.15,14.13 5.19,13.95 5.32,13.84L6.8,12.68C6.77,12.46 6.75,12.23 6.75,12C6.75,11.77 6.77,11.54 6.8,11.32L5.32,10.16C5.19,10.05 5.15,9.86 5.24,9.71L6.64,7.29C6.73,7.13 6.91,7.07 7.07,7.13L8.81,7.84C9.17,7.56 9.56,7.32 10,7.15L10.25,5.29C10.28,5.13 10.43,5 10.6,5H13.4C13.57,5 13.72,5.13 13.75,5.29L14,7.15C14.43,7.32 14.83,7.56 15.19,7.84L16.93,7.13C17.09,7.07 17.27,7.13 17.36,7.29L18.76,9.71C18.85,9.86 18.81,10.05 18.68,10.16L17.2,11.32C17.23,11.54 17.25,11.77 17.25,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M12,10C10.89,10 10,10.89 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,10.89 13.1,10 12,10Z";
var mdiCogClockwise = "M12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C14 21 15.92 20.34 17.5 19.14L16.06 17.7C14.87 18.54 13.45 19 12 19C8.13 19 5 15.87 5 12S8.13 5 12 5 19 8.13 19 12H16L20 16L24 12H21C21 7.03 16.97 3 12 3M7.71 13.16C7.62 13.23 7.59 13.35 7.64 13.45L8.54 15C8.6 15.12 8.72 15.12 8.82 15.12L9.95 14.67C10.19 14.83 10.44 14.97 10.7 15.09L10.88 16.28C10.9 16.39 11 16.47 11.1 16.47H12.9C13 16.5 13.11 16.41 13.13 16.3L13.31 15.12C13.58 15 13.84 14.85 14.07 14.67L15.19 15.12C15.3 15.16 15.42 15.11 15.47 15L16.37 13.5C16.42 13.38 16.39 13.26 16.31 13.19L15.31 12.45C15.34 12.15 15.34 11.85 15.31 11.55L16.31 10.79C16.4 10.72 16.42 10.61 16.37 10.5L15.47 8.95C15.41 8.85 15.3 8.81 15.19 8.85L14.07 9.3C13.83 9.13 13.57 9 13.3 8.88L13.13 7.69C13.11 7.58 13 7.5 12.9 7.5H11.14C11.04 7.5 10.95 7.57 10.93 7.67L10.76 8.85C10.5 8.97 10.23 9.12 10 9.3L8.85 8.88C8.74 8.84 8.61 8.89 8.56 9L7.65 10.5C7.6 10.62 7.63 10.74 7.71 10.81L8.71 11.55C8.69 11.7 8.69 11.85 8.71 12C8.7 12.15 8.7 12.3 8.71 12.45L7.71 13.19M12 13.5H12C11.16 13.5 10.5 12.82 10.5 12C10.5 11.17 11.17 10.5 12 10.5S13.5 11.17 13.5 12 12.83 13.5 12 13.5";
var mdiCogCounterclockwise = "M12 3C7.03 3 3 7.03 3 12H0L4 16L8 12H5C5 8.13 8.13 5 12 5S19 8.13 19 12 15.87 19 12 19C10.55 19 9.13 18.54 7.94 17.7L6.5 19.14C8.08 20.34 10 21 12 21C16.97 21 21 16.97 21 12S16.97 3 12 3M16.29 13.19L15.29 12.45C15.3 12.3 15.3 12.15 15.29 12C15.31 11.85 15.31 11.7 15.29 11.55L16.29 10.81C16.37 10.74 16.4 10.62 16.35 10.5L15.44 9C15.39 8.89 15.26 8.84 15.15 8.88L14 9.3C13.77 9.12 13.5 8.97 13.24 8.85L13.07 7.67C13.05 7.57 12.96 7.5 12.86 7.5H11.1C11 7.5 10.89 7.58 10.87 7.69L10.7 8.88C10.43 9 10.17 9.13 9.93 9.3L8.81 8.85C8.71 8.81 8.59 8.85 8.53 8.95L7.63 10.5C7.58 10.61 7.6 10.72 7.69 10.79L8.69 11.55C8.66 11.85 8.66 12.15 8.69 12.45L7.69 13.19C7.61 13.26 7.58 13.38 7.63 13.5L8.53 15C8.58 15.11 8.7 15.16 8.81 15.12L9.93 14.67C10.16 14.85 10.42 15 10.69 15.12L10.87 16.3C10.89 16.41 11 16.5 11.1 16.47H12.9C13 16.47 13.11 16.39 13.12 16.28L13.3 15.09C13.56 14.97 13.81 14.83 14.05 14.67L15.18 15.12C15.28 15.12 15.4 15.12 15.46 15L16.36 13.45C16.41 13.35 16.38 13.23 16.29 13.16M12 13.5C11.17 13.5 10.5 12.83 10.5 12S11.17 10.5 12 10.5 13.5 11.17 13.5 12C13.5 12.82 12.84 13.5 12 13.5H12";
var mdiCogOff = "M22.12 21.46L2.4 1.73L1.12 3L4 5.87L2.34 8.73C2.21 8.95 2.27 9.22 2.46 9.37L4.57 11C4.53 11.34 4.5 11.67 4.5 12S4.53 12.65 4.57 12.97L2.46 14.63C2.27 14.78 2.21 15.05 2.34 15.27L4.34 18.73C4.46 18.95 4.73 19.03 4.95 18.95L7.44 17.94C7.96 18.34 8.5 18.68 9.13 18.93L9.5 21.58C9.54 21.82 9.75 22 10 22H14C14.25 22 14.46 21.82 14.5 21.58L14.87 18.93C15.38 18.72 15.83 18.45 16.26 18.14L20.85 22.73L22.12 21.46M12 15.5C10.07 15.5 8.5 13.93 8.5 12C8.5 11.5 8.62 11.08 8.79 10.67L13.33 15.21C12.92 15.39 12.5 15.5 12 15.5M11.74 8.53L8.56 5.35C8.75 5.25 8.93 5.15 9.13 5.07L9.5 2.42C9.54 2.18 9.75 2 10 2H14C14.25 2 14.46 2.18 14.5 2.42L14.87 5.07C15.5 5.32 16.04 5.66 16.56 6.05L19.05 5.05C19.27 4.96 19.54 5.05 19.66 5.27L21.66 8.73C21.78 8.95 21.73 9.22 21.54 9.37L19.43 11C19.47 11.34 19.5 11.67 19.5 12S19.47 12.65 19.43 12.97L21.54 14.63C21.73 14.78 21.78 15.05 21.66 15.27L20.5 17.29L15.47 12.26C15.5 12.18 15.5 12.09 15.5 12C15.5 10.07 13.93 8.5 12 8.5C11.91 8.5 11.83 8.5 11.74 8.53Z";
var mdiCogOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4 5.88L2.34 8.73C2.21 8.95 2.27 9.22 2.46 9.37L4.57 11L4.5 12L4.57 12.97L2.46 14.63C2.27 14.78 2.21 15.05 2.34 15.27L4.34 18.73C4.46 18.95 4.73 19.03 4.95 18.95L7.44 17.94C7.96 18.34 8.5 18.68 9.13 18.93L9.5 21.58C9.54 21.82 9.75 22 10 22H14C14.25 22 14.46 21.82 14.5 21.58L14.87 18.93C15.38 18.73 15.83 18.45 16.26 18.15L20.84 22.73L22.11 21.46M10 11.9L12.1 14C12.06 14 12.03 14 12 14C10.9 14 10 13.11 10 12C10 11.97 10 11.94 10 11.9M13.13 17.39L12.76 20H11.24L10.87 17.38C9.68 17.14 8.63 16.5 7.86 15.62L5.43 16.66L4.68 15.36L6.8 13.8C6.4 12.64 6.4 11.37 6.8 10.2L4.69 8.65L5.44 7.35L5.5 7.37L8.4 10.29C8.15 10.8 8 11.38 8 12C8 14.21 9.79 16 12 16C12.62 16 13.2 15.86 13.71 15.6L14.83 16.72C14.31 17.03 13.74 17.26 13.13 17.39M10.06 6.86L8.55 5.35C8.74 5.26 8.93 5.15 9.13 5.07L9.5 2.42C9.54 2.18 9.75 2 10 2H14C14.25 2 14.46 2.18 14.5 2.42L14.87 5.07C15.5 5.32 16.04 5.66 16.56 6.05L19.05 5.05C19.27 4.96 19.54 5.05 19.66 5.27L21.66 8.73C21.79 8.95 21.73 9.22 21.54 9.37L19.43 11L19.5 12L19.43 13L21.54 14.63C21.73 14.78 21.79 15.05 21.66 15.27L20.5 17.29L19.04 15.84L19.32 15.36L17.2 13.81C17.6 12.64 17.6 11.37 17.2 10.2L19.31 8.65L18.56 7.35L16.15 8.39C15.38 7.5 14.32 6.86 13.12 6.62L12.75 4H11.25L10.88 6.61C10.6 6.67 10.32 6.75 10.06 6.86M12 8C14.21 8 16 9.79 16 12C16 12.25 15.97 12.5 15.93 12.73L11.27 8.07C11.5 8.03 11.75 8 12 8Z";
var mdiCogOutline = "M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2.27,14.78 2.46,14.63L4.57,12.97L4.5,12L4.57,11L2.46,9.37C2.27,9.22 2.21,8.95 2.34,8.73L4.34,5.27C4.46,5.05 4.73,4.96 4.95,5.05L7.44,6.05C7.96,5.66 8.5,5.32 9.13,5.07L9.5,2.42C9.54,2.18 9.75,2 10,2H14C14.25,2 14.46,2.18 14.5,2.42L14.87,5.07C15.5,5.32 16.04,5.66 16.56,6.05L19.05,5.05C19.27,4.96 19.54,5.05 19.66,5.27L21.66,8.73C21.79,8.95 21.73,9.22 21.54,9.37L19.43,11L19.5,12L19.43,13L21.54,14.63C21.73,14.78 21.79,15.05 21.66,15.27L19.66,18.73C19.54,18.95 19.27,19.04 19.05,18.95L16.56,17.95C16.04,18.34 15.5,18.68 14.87,18.93L14.5,21.58C14.46,21.82 14.25,22 14,22H10M11.25,4L10.88,6.61C9.68,6.86 8.62,7.5 7.85,8.39L5.44,7.35L4.69,8.65L6.8,10.2C6.4,11.37 6.4,12.64 6.8,13.8L4.68,15.36L5.43,16.66L7.86,15.62C8.63,16.5 9.68,17.14 10.87,17.38L11.24,20H12.76L13.13,17.39C14.32,17.14 15.37,16.5 16.14,15.62L18.57,16.66L19.32,15.36L17.2,13.81C17.6,12.64 17.6,11.37 17.2,10.2L19.31,8.65L18.56,7.35L16.15,8.39C15.38,7.5 14.32,6.86 13.12,6.62L12.75,4H11.25Z";
var mdiCogRefresh = "M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5M11.5 18.5C11.5 17.4 11.8 16.4 12.2 15.5H12C10.1 15.5 8.5 13.9 8.5 12S10.1 8.5 12 8.5 15.5 10.1 15.5 12C15.5 12.2 15.5 12.4 15.4 12.5C16.2 12.2 17 12 18 12C18.5 12 19 12.1 19.5 12.2V12C19.5 11.7 19.5 11.3 19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11C4.6 11.3 4.5 11.7 4.5 12S4.5 12.7 4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C11.9 21 11.5 19.8 11.5 18.5Z";
var mdiCogRefreshOutline = "M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5M11.7 20H11.3L10.9 17.4C9.7 17.2 8.7 16.5 7.9 15.6L5.5 16.6L4.7 15.3L6.8 13.7C6.4 12.5 6.4 11.3 6.8 10.1L4.7 8.7L5.5 7.4L7.9 8.4C8.7 7.5 9.7 6.9 10.9 6.6L11.2 4H12.7L13.1 6.6C14.3 6.8 15.4 7.5 16.1 8.4L18.5 7.4L19.3 8.7L17.2 10.2C17.4 10.8 17.5 11.4 17.5 12H18C18.5 12 19 12.1 19.5 12.2V12L19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11L4.5 12L4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C12.1 21.4 11.9 20.7 11.7 20M16 12.3V12C16 9.8 14.2 8 12 8S8 9.8 8 12C8 14.2 9.8 16 12 16C12.7 14.3 14.2 12.9 16 12.3M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.1 14 12 14 10 13.1 10 12Z";
var mdiCogSync = "M11.5 18.5C11.5 17.4 11.8 16.4 12.2 15.5H12C10.1 15.5 8.5 13.9 8.5 12S10.1 8.5 12 8.5 15.5 10.1 15.5 12C15.5 12.2 15.5 12.4 15.4 12.5C16.2 12.2 17 12 18 12C18.5 12 19 12.1 19.5 12.2V12C19.5 11.7 19.5 11.3 19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11C4.6 11.3 4.5 11.7 4.5 12S4.5 12.7 4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C11.9 21 11.5 19.8 11.5 18.5M18 14.5V13L15.8 15.2L18 17.4V16C19.4 16 20.5 17.1 20.5 18.5C20.5 18.9 20.4 19.3 20.2 19.6L21.3 20.7C22.5 18.9 22 16.4 20.2 15.2C19.6 14.7 18.8 14.5 18 14.5M18 21C16.6 21 15.5 19.9 15.5 18.5C15.5 18.1 15.6 17.7 15.8 17.4L14.7 16.3C13.5 18.1 14 20.6 15.8 21.8C16.5 22.2 17.2 22.5 18 22.5V24L20.2 21.8L18 19.5V21Z";
var mdiCogSyncOutline = "M11.7 20H11.3L10.9 17.4C9.7 17.2 8.7 16.5 7.9 15.6L5.5 16.6L4.7 15.3L6.8 13.7C6.4 12.5 6.4 11.3 6.8 10.1L4.7 8.7L5.5 7.4L7.9 8.4C8.7 7.5 9.7 6.9 10.9 6.6L11.2 4H12.7L13.1 6.6C14.3 6.8 15.4 7.5 16.1 8.4L18.5 7.4L19.3 8.7L17.2 10.2C17.4 10.8 17.5 11.4 17.5 12H18C18.5 12 19 12.1 19.5 12.2V12L19.4 11L21.5 9.4C21.7 9.2 21.7 9 21.6 8.8L19.6 5.3C19.5 5 19.3 5 19 5L16.5 6C16 5.6 15.4 5.3 14.8 5L14.4 2.3C14.5 2.2 14.2 2 14 2H10C9.8 2 9.5 2.2 9.5 2.4L9.1 5.1C8.5 5.3 8 5.7 7.4 6L5 5C4.7 5 4.5 5 4.3 5.3L2.3 8.8C2.2 9 2.3 9.2 2.5 9.4L4.6 11L4.5 12L4.6 13L2.5 14.7C2.3 14.9 2.3 15.1 2.4 15.3L4.4 18.8C4.5 19 4.7 19 5 19L7.5 18C8 18.4 8.6 18.7 9.2 19L9.6 21.7C9.6 21.9 9.8 22.1 10.1 22.1H12.6C12.1 21.4 11.9 20.7 11.7 20M16 12.3V12C16 9.8 14.2 8 12 8S8 9.8 8 12C8 14.2 9.8 16 12 16C12.7 14.3 14.2 12.9 16 12.3M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.1 14 12 14 10 13.1 10 12M18 14.5V13L15.8 15.2L18 17.4V16C19.4 16 20.5 17.1 20.5 18.5C20.5 18.9 20.4 19.3 20.2 19.6L21.3 20.7C22.5 18.9 22 16.4 20.2 15.2C19.6 14.7 18.8 14.5 18 14.5M18 21C16.6 21 15.5 19.9 15.5 18.5C15.5 18.1 15.6 17.7 15.8 17.4L14.7 16.3C13.5 18.1 14 20.6 15.8 21.8C16.5 22.2 17.2 22.5 18 22.5V24L20.2 21.8L18 19.5V21Z";
var mdiCogTransfer = "M14 18V16L10 19.5L14 23V21H17V18H14M22 15.5L18 12V14H15V17H18V19L22 15.5M21.66 8.73L19.66 5.27C19.54 5.05 19.28 4.96 19.05 5.05L16.56 6.05C16.05 5.64 15.5 5.31 14.87 5.05L14.5 2.42C14.46 2.18 14.25 2 14 2H10C9.75 2 9.54 2.18 9.5 2.42L9.13 5.07C8.5 5.33 7.96 5.66 7.44 6.07L5 5.05C4.77 4.96 4.5 5.05 4.39 5.27L2.39 8.73C2.26 8.94 2.31 9.22 2.5 9.37L4.57 11C4.53 11.33 4.5 11.67 4.5 12C4.5 12.33 4.53 12.67 4.57 13L2.46 14.63C2.26 14.78 2.21 15.06 2.34 15.27L4.34 18.73C4.45 19 4.74 19.11 5 19L5 19L7.5 18C7.74 18.19 8 18.37 8.26 18.53L11.77 15.53C9.84 15.4 8.38 13.73 8.5 11.8C8.65 9.87 10.32 8.41 12.25 8.55C13.69 8.64 14.92 9.62 15.35 11H19.43L21.54 9.37C21.73 9.22 21.78 8.94 21.66 8.73Z";
var mdiCogTransferOutline = "M15 17V14H18V12L22 15.5L18 19V17H15M17 18V21H14V23L10 19.5L14 16V18H17M12 8C9.79 8 8 9.8 8 12C8 13.91 9.35 15.54 11.21 15.92L16 11.86C15.93 9.71 14.16 8 12 8M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14M21.66 8.73L19.66 5.27C19.54 5.05 19.28 4.96 19.05 5.05L16.56 6.05C16.05 5.64 15.5 5.31 14.87 5.05L14.5 2.42C14.46 2.18 14.25 2 14 2H10C9.75 2 9.54 2.18 9.5 2.42L9.13 5.07C8.5 5.33 7.96 5.66 7.44 6.07L5 5.05C4.77 4.96 4.5 5.05 4.39 5.27L2.39 8.73C2.26 8.94 2.31 9.22 2.5 9.37L4.57 11L4.5 12L4.57 13L2.46 14.63C2.26 14.78 2.21 15.06 2.34 15.27L4.34 18.73C4.45 19 4.74 19.11 5 19L5 19L7.5 18C7.74 18.19 8 18.37 8.26 18.53L9.91 17.13C9.14 16.8 8.46 16.31 7.91 15.68L5.5 16.68L4.73 15.38L6.8 13.8C6.4 12.63 6.4 11.37 6.8 10.2L4.69 8.65L5.44 7.35L7.85 8.35C8.63 7.45 9.68 6.82 10.85 6.57L11.25 4H12.75L13.12 6.62C14.29 6.86 15.34 7.5 16.12 8.39L18.53 7.39L19.28 8.69L17.2 10.2C17.29 10.46 17.36 10.73 17.4 11H19.4L21.5 9.37C21.72 9.23 21.78 8.95 21.66 8.73M12 8C9.79 8 8 9.8 8 12C8 13.91 9.35 15.54 11.21 15.92L16 11.86C15.93 9.71 14.16 8 12 8M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14M12 8C9.79 8 8 9.8 8 12C8 13.91 9.35 15.54 11.21 15.92L16 11.86C15.93 9.71 14.16 8 12 8M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14Z";
var mdiCogs = "M15.9,18.45C17.25,18.45 18.35,17.35 18.35,16C18.35,14.65 17.25,13.55 15.9,13.55C14.54,13.55 13.45,14.65 13.45,16C13.45,17.35 14.54,18.45 15.9,18.45M21.1,16.68L22.58,17.84C22.71,17.95 22.75,18.13 22.66,18.29L21.26,20.71C21.17,20.86 21,20.92 20.83,20.86L19.09,20.16C18.73,20.44 18.33,20.67 17.91,20.85L17.64,22.7C17.62,22.87 17.47,23 17.3,23H14.5C14.32,23 14.18,22.87 14.15,22.7L13.89,20.85C13.46,20.67 13.07,20.44 12.71,20.16L10.96,20.86C10.81,20.92 10.62,20.86 10.54,20.71L9.14,18.29C9.05,18.13 9.09,17.95 9.22,17.84L10.7,16.68L10.65,16L10.7,15.31L9.22,14.16C9.09,14.05 9.05,13.86 9.14,13.71L10.54,11.29C10.62,11.13 10.81,11.07 10.96,11.13L12.71,11.84C13.07,11.56 13.46,11.32 13.89,11.15L14.15,9.29C14.18,9.13 14.32,9 14.5,9H17.3C17.47,9 17.62,9.13 17.64,9.29L17.91,11.15C18.33,11.32 18.73,11.56 19.09,11.84L20.83,11.13C21,11.07 21.17,11.13 21.26,11.29L22.66,13.71C22.75,13.86 22.71,14.05 22.58,14.16L21.1,15.31L21.15,16L21.1,16.68M6.69,8.07C7.56,8.07 8.26,7.37 8.26,6.5C8.26,5.63 7.56,4.92 6.69,4.92A1.58,1.58 0 0,0 5.11,6.5C5.11,7.37 5.82,8.07 6.69,8.07M10.03,6.94L11,7.68C11.07,7.75 11.09,7.87 11.03,7.97L10.13,9.53C10.08,9.63 9.96,9.67 9.86,9.63L8.74,9.18L8,9.62L7.81,10.81C7.79,10.92 7.7,11 7.59,11H5.79C5.67,11 5.58,10.92 5.56,10.81L5.4,9.62L4.64,9.18L3.5,9.63C3.41,9.67 3.3,9.63 3.24,9.53L2.34,7.97C2.28,7.87 2.31,7.75 2.39,7.68L3.34,6.94L3.31,6.5L3.34,6.06L2.39,5.32C2.31,5.25 2.28,5.13 2.34,5.03L3.24,3.47C3.3,3.37 3.41,3.33 3.5,3.37L4.63,3.82L5.4,3.38L5.56,2.19C5.58,2.08 5.67,2 5.79,2H7.59C7.7,2 7.79,2.08 7.81,2.19L8,3.38L8.74,3.82L9.86,3.37C9.96,3.33 10.08,3.37 10.13,3.47L11.03,5.03C11.09,5.13 11.07,5.25 11,5.32L10.03,6.06L10.06,6.5L10.03,6.94Z";
var mdiCollage = "M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H11V3M13,3V11H21V5C21,3.89 20.11,3 19,3M13,13V21H19C20.11,21 21,20.11 21,19V13";
var mdiCollapseAll = "M14,4H4V14H2V4A2,2 0 0,1 4,2H14V4M18,6H8A2,2 0 0,0 6,8V18H8V8H18V6M22,12V20A2,2 0 0,1 20,22H12A2,2 0 0,1 10,20V12A2,2 0 0,1 12,10H20A2,2 0 0,1 22,12M20,15H12V17H20V15Z";
var mdiCollapseAllOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10M19,17H13V15H19V17Z";
var mdiColorHelper = "M0,24H24V20H0V24Z";
var mdiComma = "M7,3H16.95V12.96L12.96,20.94H8L11.97,12.96H7V3Z";
var mdiCommaBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,13V7H9V13H12L10,17H13L15,13Z";
var mdiCommaBoxOutline = "M10,17L12,13H9V7H15V13L13,17H10M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiCommaCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15,13L13,17H10L12,13H9V7H15V13Z";
var mdiCommaCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M10,17H13L15,13V7H9V13H12L10,17Z";
var mdiComment = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9Z";
var mdiCommentAccount = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M16,14V13C16,11.67 13.33,11 12,11C10.67,11 8,11.67 8,13V14H16M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6Z";
var mdiCommentAccountOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16,14H8V13C8,11.67 10.67,11 12,11C13.33,11 16,11.67 16,13V14M12,6A2,2 0 0,1 14,8A2,2 0 0,1 12,10A2,2 0 0,1 10,8A2,2 0 0,1 12,6Z";
var mdiCommentAlert = "M9 22C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V16C22 17.1 21.1 18 20 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9M13 11V5H11V11M13 15V13H11V15H13Z";
var mdiCommentAlertOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M13,10H11V6H13V10M13,14H11V12H13V14Z";
var mdiCommentArrowLeft = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M16 11H11.5L13.3 12.8L12 14L8 10L12 6L13.2 7.2L11.5 9H16V11Z";
var mdiCommentArrowLeftOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H13.1L10 19.1V16H4V4H20V16M16 11V9H11.5L13.3 7.2L12 6L8 10L12 14L13.2 12.8L11.5 11H16Z";
var mdiCommentArrowRight = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M12 14L10.8 12.8L12.6 11H8V9H12.5L10.7 7.2L12 6L16 10L12 14Z";
var mdiCommentArrowRightOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H13.1L10 19.1V16H4V4H20V16M8 9V11H12.5L10.7 12.8L12 14L16 10L12 6L10.8 7.2L12.5 9H8Z";
var mdiCommentBookmark = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M19 13L16.5 11.5L14 13V5H19V13Z";
var mdiCommentBookmarkOutline = "M9 22C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V16C22 17.1 21.1 18 20 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9M10 16V19.1L13.1 16H20V4H4V16H10M18 14V6H13V14L15.5 12.5L18 14Z";
var mdiCommentCheck = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,15L18,7L16.59,5.58L10,12.17L7.41,9.59L6,11L10,15Z";
var mdiCommentCheckOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16.5,8L11,13.5L7.5,10L8.91,8.59L11,10.67L15.09,6.59L16.5,8Z";
var mdiCommentEdit = "M20 2H4C2.89 2 2 2.89 2 4V16C2 17.11 2.9 18 4 18H8V21C8 21.55 8.45 22 9 22H9.5C9.75 22 10 21.9 10.2 21.71L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.89 21.1 2 20 2M9.08 15H7V12.91L13.17 6.72L15.24 8.8L9.08 15M16.84 7.2L15.83 8.21L13.76 6.18L14.77 5.16C14.97 4.95 15.31 4.94 15.55 5.16L16.84 6.41C17.05 6.62 17.06 6.96 16.84 7.2Z";
var mdiCommentEditOutline = "M9 22C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4C2 2.89 2.9 2 4 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9M10 16V19.08L13.08 16H20V4H4V16H10M15.84 8.2L14.83 9.21L12.76 7.18L13.77 6.16C13.97 5.95 14.31 5.94 14.55 6.16L15.84 7.41C16.05 7.62 16.06 7.96 15.84 8.2M8 11.91L12.17 7.72L14.24 9.8L10.08 14H8V11.91Z";
var mdiCommentEye = "M20,12V16C20,17.11 19.11,18 18,18H13.9L10.2,21.71C10,21.89 9.76,22 9.5,22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V6C2,4.89 2.9,4 4,4H9.5C8.95,4.67 8.5,5.42 8.14,6.25L7.85,7L8.14,7.75C9.43,10.94 12.5,13 16,13C17.44,13 18.8,12.63 20,12M16,6C16.56,6 17,6.44 17,7C17,7.56 16.56,8 16,8C15.44,8 15,7.56 15,7C15,6.44 15.44,6 16,6M16,3C18.73,3 21.06,4.66 22,7C21.06,9.34 18.73,11 16,11C13.27,11 10.94,9.34 10,7C10.94,4.66 13.27,3 16,3M16,4.5A2.5,2.5 0 0,0 13.5,7A2.5,2.5 0 0,0 16,9.5A2.5,2.5 0 0,0 18.5,7A2.5,2.5 0 0,0 16,4.5";
var mdiCommentEyeOutline = "M16,6C16.56,6 17,6.44 17,7C17,7.56 16.56,8 16,8C15.44,8 15,7.56 15,7C15,6.44 15.44,6 16,6M16,3C18.73,3 21.06,4.66 22,7C21.06,9.34 18.73,11 16,11C13.27,11 10.94,9.34 10,7C10.94,4.66 13.27,3 16,3M16,4.5A2.5,2.5 0 0,0 13.5,7A2.5,2.5 0 0,0 16,9.5A2.5,2.5 0 0,0 18.5,7A2.5,2.5 0 0,0 16,4.5M18,12.75V16H13.08L10,19.08V16H4V6H8.27C8.59,5.27 9,4.6 9.5,4H4A2,2 0 0,0 2,6V16C2,17.11 2.9,18 4,18H8V21A1,1 0 0,0 9,22H9.5C9.75,22 10,21.9 10.2,21.71L13.9,18H18C19.11,18 20,17.11 20,16V12C19.37,12.33 18.7,12.58 18,12.75Z";
var mdiCommentFlash = "M22.5 16H20.3L22 12H17V18H19V23L22.5 16M15 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V10H15V18Z";
var mdiCommentFlashOutline = "M22.5 16H20.3L22 12H17V18H19V23L22.5 16M15 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V10H20V4H4V16H10V19.1L13.1 16H15V18Z";
var mdiCommentMinus = "M20 2H4C2.9 2 2 2.89 2 4V16C2 17.11 2.9 18 4 18H8V21C8 21.55 8.45 22 9 22H9.5C9.75 22 10 21.9 10.2 21.71L13.9 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M16 11H8V9H16V11Z";
var mdiCommentMinusOutline = "M16 11H8V9H16V11M22 4V16C22 17.11 21.11 18 20 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4C2 2.89 2.9 2 4 2H20C21.11 2 22 2.9 22 4M20 4H4V16H10V19.08L13.08 16H20V4";
var mdiCommentMultiple = "M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7A2,2 0 0,1 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.89 12.76,23 12.5,23H12M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15Z";
var mdiCommentMultipleOutline = "M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7C5,5.89 5.9,5 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.9 12.75,23 12.5,23V23H12M13,17V20.08L16.08,17H21V7H7V17H13M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15Z";
var mdiCommentOff = "M22.11 21.46L20.84 22.73L16.11 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4 3.9L1.11 3L2.39 1.73L22.11 21.46M22 16V4C22 2.9 21.11 2 20 2H5.2L20.95 17.75C21.57 17.41 22 16.76 22 16Z";
var mdiCommentOffOutline = "M7.2 4L5.2 2H20C21.11 2 22 2.9 22 4V16C22 16.76 21.57 17.41 20.95 17.75L19.2 16H20V4H7.2M22.11 21.46L20.84 22.73L16.11 18H13.9L10.2 21.71C10 21.9 9.75 22 9.5 22H9C8.45 22 8 21.55 8 21V18H4C2.9 18 2 17.11 2 16V4C2 3.97 2 3.93 2 3.9L1.11 3L2.39 1.73L22.11 21.46M14.11 16L4 5.89V16H10V19.08L13.08 16H14.11Z";
var mdiCommentOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10Z";
var mdiCommentPlus = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22H9M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z";
var mdiCommentPlusOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z";
var mdiCommentProcessing = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M17,11V9H15V11H17M13,11V9H11V11H13M9,11V9H7V11H9Z";
var mdiCommentProcessingOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M17,11H15V9H17V11M13,11H11V9H13V11M9,11H7V9H9V11Z";
var mdiCommentQuestion = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2M12.19,5.5C11.3,5.5 10.59,5.68 10.05,6.04C9.5,6.4 9.22,7 9.27,7.69H11.24C11.24,7.41 11.34,7.2 11.5,7.06C11.7,6.92 11.92,6.85 12.19,6.85C12.5,6.85 12.77,6.93 12.95,7.11C13.13,7.28 13.22,7.5 13.22,7.8C13.22,8.08 13.14,8.33 13,8.54C12.83,8.76 12.62,8.94 12.36,9.08C11.84,9.4 11.5,9.68 11.29,9.92C11.1,10.16 11,10.5 11,11H13C13,10.72 13.05,10.5 13.14,10.32C13.23,10.15 13.4,10 13.66,9.85C14.12,9.64 14.5,9.36 14.79,9C15.08,8.63 15.23,8.24 15.23,7.8C15.23,7.1 14.96,6.54 14.42,6.12C13.88,5.71 13.13,5.5 12.19,5.5M11,12V14H13V12H11Z";
var mdiCommentQuestionOutline = "M4,2A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H8V21A1,1 0 0,0 9,22H9.5V22C9.75,22 10,21.9 10.2,21.71L13.9,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2H4M4,4H20V16H13.08L10,19.08V16H4V4M12.19,5.5C11.3,5.5 10.59,5.68 10.05,6.04C9.5,6.4 9.22,7 9.27,7.69C0.21,7.69 6.57,7.69 11.24,7.69C11.24,7.41 11.34,7.2 11.5,7.06C11.7,6.92 11.92,6.85 12.19,6.85C12.5,6.85 12.77,6.93 12.95,7.11C13.13,7.28 13.22,7.5 13.22,7.8C13.22,8.08 13.14,8.33 13,8.54C12.83,8.76 12.62,8.94 12.36,9.08C11.84,9.4 11.5,9.68 11.29,9.92C11.1,10.16 11,10.5 11,11H13C13,10.72 13.05,10.5 13.14,10.32C13.23,10.15 13.4,10 13.66,9.85C14.12,9.64 14.5,9.36 14.79,9C15.08,8.63 15.23,8.24 15.23,7.8C15.23,7.1 14.96,6.54 14.42,6.12C13.88,5.71 13.13,5.5 12.19,5.5M11,12V14H13V12H11Z";
var mdiCommentQuote = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H8V21C8 21.6 8.4 22 9 22H9.5C9.7 22 10 21.9 10.2 21.7L13.9 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M11 13H7V8.8L8.3 6H10.3L8.9 9H11V13M17 13H13V8.8L14.3 6H16.3L14.9 9H17V13Z";
var mdiCommentQuoteOutline = "M9 22C8.4 22 8 21.6 8 21V18H4C2.9 18 2 17.1 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.9 22 4V16C22 17.1 21.1 18 20 18H13.9L10.2 21.7C10 21.9 9.8 22 9.5 22H9M10 16V19.1L13.1 16H20V4H4V16H10M16.3 6L14.9 9H17V13H13V8.8L14.3 6H16.3M10.3 6L8.9 9H11V13H7V8.8L8.3 6H10.3Z";
var mdiCommentRemove = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M9.41,6L8,7.41L10.59,10L8,12.59L9.41,14L12,11.41L14.59,14L16,12.59L13.41,10L16,7.41L14.59,6L12,8.59L9.41,6Z";
var mdiCommentRemoveOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M9.41,6L12,8.59L14.59,6L16,7.41L13.41,10L16,12.59L14.59,14L12,11.41L9.41,14L8,12.59L10.59,10L8,7.41L9.41,6Z";
var mdiCommentSearch = "M15.5,2C18,2 20,4 20,6.5C20,7.38 19.75,8.2 19.31,8.89L22.41,12L21,13.39L17.89,10.31C17.2,10.75 16.38,11 15.5,11C13,11 11,9 11,6.5C11,4 13,2 15.5,2M15.5,4A2.5,2.5 0 0,0 13,6.5A2.5,2.5 0 0,0 15.5,9A2.5,2.5 0 0,0 18,6.5A2.5,2.5 0 0,0 15.5,4M4,4H9.5C9.19,4.79 9,5.64 9,6.5A6.5,6.5 0 0,0 15.5,13C16.18,13 16.83,12.89 17.46,12.69L20,15.23V16A2,2 0 0,1 18,18H13.9L10.2,21.71C10,21.89 9.76,22 9.5,22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V6A2,2 0 0,1 4,4Z";
var mdiCommentSearchOutline = "M4,4H9.5C9.25,4.64 9.09,5.31 9.04,6H4V16H10V19.08L13.08,16H18V13.23L20,15.23V16A2,2 0 0,1 18,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22H9A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V6C2,4.89 2.9,4 4,4M15.5,2C18,2 20,4 20,6.5C20,7.38 19.75,8.2 19.31,8.89L22.41,12L21,13.39L17.89,10.31C17.2,10.75 16.38,11 15.5,11C13,11 11,9 11,6.5C11,4 13,2 15.5,2M15.5,4A2.5,2.5 0 0,0 13,6.5A2.5,2.5 0 0,0 15.5,9A2.5,2.5 0 0,0 18,6.5A2.5,2.5 0 0,0 15.5,4Z";
var mdiCommentText = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M5,5V7H19V5H5M5,9V11H13V9H5M5,13V15H15V13H5Z";
var mdiCommentTextMultiple = "M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7A2,2 0 0,1 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.89 12.76,23 12.5,23H12M9,9V11H19V9H9M9,13V15H17V13H9Z";
var mdiCommentTextMultipleOutline = "M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7A2,2 0 0,1 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.89 12.76,23 12.5,23H12M13,17V20.08L16.08,17H21V7H7V17H13M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15M9,9H19V11H9V9M9,13H17V15H9V13Z";
var mdiCommentTextOutline = "M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M6,7H18V9H6V7M6,11H15V13H6V11Z";
var mdiCompare = "M19,3H14V5H19V18L14,12V21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,18H5L10,12M10,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H10V23H12V1H10V3Z";
var mdiCompareHorizontal = "M9 14H2V16H9V19L13 15L9 11V14M15 13V10H22V8H15V5L11 9L15 13Z";
var mdiCompareVertical = "M14 15V22H16V15H19L15 11L11 15H14M13 9H10V2H8V9H5L9 13L13 9Z";
var mdiCompass = "M14.19,14.19L6,18L9.81,9.81L18,6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,10.9A1.1,1.1 0 0,0 10.9,12A1.1,1.1 0 0,0 12,13.1A1.1,1.1 0 0,0 13.1,12A1.1,1.1 0 0,0 12,10.9Z";
var mdiCompassOff = "M1,3.5L2.28,2.25L21.75,21.72L20.5,23L17.7,20.22C16.08,21.34 14.12,22 12,22A10,10 0 0,1 2,12C2,9.88 2.66,7.92 3.78,6.3L1,3.5M6,18L12.47,15L9,11.53L6,18M18,6L11.56,9L6.33,3.76C7.94,2.65 9.9,2 12,2A10,10 0 0,1 22,12C22,14.1 21.35,16.06 20.24,17.67L15,12.44L18,6Z";
var mdiCompassOffOutline = "M1,3.5L2.28,2.25L21.75,21.72L20.5,23L17.7,20.22C16.08,21.34 14.12,22 12,22A10,10 0 0,1 2,12C2,9.88 2.66,7.92 3.78,6.3L1,3.5M7,17L9.39,11.91L5.23,7.74C4.45,9 4,10.44 4,12A8,8 0 0,0 12,20C13.56,20 15,19.55 16.26,18.77L12.09,14.61L7,17M17,7L14.62,12.05L11.95,9.38L17,7M12,2A10,10 0 0,1 22,12C22,14.1 21.35,16.06 20.24,17.67L18.8,16.22C19.56,15 20,13.55 20,12A8,8 0 0,0 12,4C10.45,4 9,4.44 7.78,5.2L6.33,3.76C7.94,2.65 9.9,2 12,2Z";
var mdiCompassOutline = "M7,17L10.2,10.2L17,7L13.8,13.8L7,17M12,11.1A0.9,0.9 0 0,0 11.1,12A0.9,0.9 0 0,0 12,12.9A0.9,0.9 0 0,0 12.9,12A0.9,0.9 0 0,0 12,11.1M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiCompassRose = "M15 9L12 0L9 9L0 12L9 15L12 24L15 15L24 12L15 9M4 12L10 10L11 12H4M12 20L10 14L12 13V20M12 4L14 10L12 11V4M14 14L13 12H20L14 14M8.7 17.3L5 19L6.7 15.3L8.3 15.8L8.7 17.3M17.3 15.3L19 19L15.3 17.3L15.8 15.7L17.3 15.3M6.7 8.7L5 5L8.7 6.7L8.2 8.2L6.7 8.7M15.3 6.7L19 5L17.3 8.7L15.7 8.2L15.3 6.7Z";
var mdiConcourseCi = "M10.94 12.09A1.06 1.06 0 1 0 11.91 10.95A1.06 1.06 0 0 0 10.94 12.09M13.54 13.21A2.62 2.62 0 0 1 12.58 13.88L12.57 13.89A11.17 11.17 0 0 0 13.87 16.92A4.83 4.83 0 0 1 12.92 17.3A4.9 4.9 0 0 1 12.24 17.44L12.16 17.45L12.06 17.46L11.87 17.47C11.75 17.47 11.64 17.5 11.5 17.47A5 5 0 0 1 10.79 17.4A5.13 5.13 0 0 1 10.09 17.23A4.78 4.78 0 0 1 9.46 17A5 5 0 0 1 8.93 16.68A4.45 4.45 0 0 1 8.5 16.38C8.38 16.29 8.28 16.19 8.2 16.12L7.95 15.87C7.95 15.87 8 15.97 8.16 16.15C8.24 16.23 8.32 16.34 8.44 16.45A4.93 4.93 0 0 0 8.82 16.82A5.21 5.21 0 0 0 9.33 17.2A5.08 5.08 0 0 0 9.96 17.56A5.43 5.43 0 0 0 10.68 17.85A5.5 5.5 0 0 0 11.46 18.03C11.6 18.06 11.74 18.07 11.88 18.08L12.07 18.1H12.27A5.5 5.5 0 0 0 13.07 18.05A5.61 5.61 0 0 0 14.39 17.7Q14.63 18.03 14.9 18.34L14.87 18.36L14.66 18.5H14.62C14.59 18.53 14.67 18.5 14.66 18.5H14.64L14.58 18.54L14.44 18.61L14.37 18.64L14.33 18.66L14.32 18.67H14.31C14.3 18.68 14.36 18.66 14.33 18.67H14.32L14.17 18.74Q14.09 18.77 14 18.81V18.82L13.93 18.84L13.84 18.87A6.5 6.5 0 0 1 12.25 19.26A6.4 6.4 0 0 1 11.31 19.3H11.19L11.07 19.29L10.81 19.27C10.65 19.24 10.5 19.23 10.33 19.2A6.59 6.59 0 0 1 8.5 18.57C8.35 18.5 8.21 18.43 8.08 18.35C7.95 18.27 7.83 18.19 7.71 18.11A6.64 6.64 0 0 1 7.07 17.6A6.35 6.35 0 0 1 6.57 17.11C6.43 16.96 6.32 16.82 6.22 16.7C6.13 16.58 6.06 16.5 6 16.42L5.94 16.32L6 16.43C6.04 16.5 6.1 16.6 6.18 16.73C6.26 16.86 6.36 17 6.5 17.18A6.5 6.5 0 0 0 6.94 17.73A6.86 6.86 0 0 0 7.55 18.31C7.67 18.41 7.78 18.5 7.91 18.6C8.04 18.7 8.17 18.79 8.31 18.88A7.12 7.12 0 0 0 9.21 19.37A7.2 7.2 0 0 0 10.2 19.74C10.37 19.8 10.55 19.83 10.73 19.87L11 19.92L11.11 19.94L11.25 19.96A7.27 7.27 0 0 0 12.29 20.03A7.38 7.38 0 0 0 14.14 19.77L14.23 19.74L14.28 19.73L14.34 19.71C14.4 19.69 14.46 19.68 14.5 19.66L14.68 19.6L14.85 19.54L15 19.5L15.06 19.45H15.08L15.13 19.43L15.14 19.42L15.17 19.41L15.39 19.3L15.67 19.16C15.86 19.34 16.06 19.5 16.26 19.69C16.26 19.69 17.23 20.69 17.76 20.28C18.26 19.89 17.68 18.68 17.68 18.68A11.2 11.2 0 0 0 13.54 13.21M10.16 11.57L10.15 11.56A11.18 11.18 0 0 0 6.91 11.11A4.72 4.72 0 0 1 7.34 9.39L7.38 9.31L7.42 9.23L7.5 9.06C7.57 8.96 7.62 8.85 7.69 8.75A4.97 4.97 0 0 1 8.14 8.17A5.05 5.05 0 0 1 8.66 7.67A4.77 4.77 0 0 1 9.2 7.27A5.06 5.06 0 0 1 9.74 7A4.88 4.88 0 0 1 10.22 6.78C10.37 6.72 10.5 6.69 10.61 6.66C10.82 6.6 10.95 6.58 10.95 6.58S10.82 6.59 10.6 6.61C10.5 6.63 10.35 6.64 10.19 6.68A4.94 4.94 0 0 0 9.67 6.82A5.34 5.34 0 0 0 9.08 7.05A5.08 5.08 0 0 0 8.45 7.39A5.47 5.47 0 0 0 7.82 7.84A5.55 5.55 0 0 0 7.25 8.41C7.16 8.5 7.08 8.63 7 8.74L6.88 8.89L6.82 8.97L6.76 9.06A5.5 5.5 0 0 0 6.38 9.77A5.61 5.61 0 0 0 5.97 11.14L5.96 11.16C5.7 11.18 5.43 11.21 5.16 11.26V11.12L5.17 10.87V10.82C5.17 10.78 5.16 10.88 5.16 10.87V10.84L5.17 10.77L5.18 10.62L5.19 10.54V10.5H5.2V10.47C5.2 10.46 5.19 10.5 5.19 10.5L5.22 10.32L5.24 10.14L5.25 10.12V10.11L5.24 10.13L5.25 10.12V10.11L5.26 10.07L5.27 9.97A6.5 6.5 0 0 1 6.26 7.59L6.32 7.5L6.39 7.4L6.55 7.19C6.65 7.07 6.74 6.94 6.86 6.82A6.61 6.61 0 0 1 8.37 5.59C8.5 5.5 8.64 5.43 8.77 5.37C8.9 5.29 9.04 5.24 9.17 5.18A6.76 6.76 0 0 1 9.94 4.9A6.5 6.5 0 0 1 10.62 4.74C10.82 4.69 11 4.68 11.15 4.66C11.3 4.64 11.42 4.64 11.5 4.63L11.62 4.62H11.5C11.42 4.62 11.3 4.61 11.15 4.61C11 4.61 10.82 4.61 10.61 4.63A6.41 6.41 0 0 0 9.9 4.73A7.03 7.03 0 0 0 9.08 4.93C8.94 5 8.79 5.03 8.65 5.09C8.5 5.14 8.35 5.21 8.2 5.28A7.26 7.26 0 0 0 7.31 5.78A7.33 7.33 0 0 0 6.47 6.42C6.33 6.54 6.2 6.68 6.07 6.8L5.9 7L5.82 7.09L5.72 7.19A7.25 7.25 0 0 0 5.12 8.04A7.38 7.38 0 0 0 4.36 9.75L4.33 9.84L4.32 9.89L4.3 9.95L4.25 10.13L4.21 10.29L4.18 10.5L4.15 10.63C4.14 10.65 4.14 10.67 4.14 10.7L4.13 10.72V10.78L4.12 10.81L4.09 11.06L4.05 11.5C3.79 11.57 3.53 11.65 3.28 11.74C3.28 11.74 1.93 12.05 2 12.72C2.08 13.35 3.41 13.5 3.41 13.5A11.21 11.21 0 0 0 10.24 12.74A2.62 2.62 0 0 1 10.16 11.57M19.7 10.84A7.19 7.19 0 0 0 19.53 9.79C19.5 9.62 19.43 9.45 19.38 9.27L19.3 9.03L19.26 8.91L19.21 8.77A7.23 7.23 0 0 0 18.75 7.83A7.35 7.35 0 0 0 17.62 6.35L17.55 6.28L17.5 6.25L17.47 6.2L17.33 6.08L17.21 5.97L17.06 5.85L16.94 5.75L16.89 5.7L16.88 5.69H16.87L16.83 5.66L16.8 5.64L16.59 5.5L16.32 5.31Q16.42 4.88 16.5 4.45S16.88 3.11 16.25 2.85C15.67 2.61 14.91 3.72 14.91 3.72A11.21 11.21 0 0 0 12.25 10.05A2.63 2.63 0 0 1 13.32 10.55A11.2 11.2 0 0 0 15.25 8A4.73 4.73 0 0 1 16.08 8.66A4.81 4.81 0 0 1 16.53 9.19L16.58 9.25L16.63 9.33L16.74 9.5C16.8 9.59 16.86 9.69 16.92 9.8A4.89 4.89 0 0 1 17.4 11.16A4.78 4.78 0 0 1 17.5 11.83A4.88 4.88 0 0 1 17.5 12.44A4.76 4.76 0 0 1 17.44 12.96C17.42 13.11 17.39 13.25 17.36 13.36C17.31 13.57 17.27 13.7 17.27 13.7L17.41 13.37C17.45 13.26 17.5 13.14 17.54 13A5.06 5.06 0 0 0 17.67 12.46A5.34 5.34 0 0 0 17.75 11.83A5.04 5.04 0 0 0 17.76 11.11A5.38 5.38 0 0 0 17.43 9.57C17.38 9.44 17.32 9.31 17.27 9.19L17.18 9L17.14 8.93L17.09 8.83A5.53 5.53 0 0 0 15.67 7.16C15.79 6.9 15.89 6.65 16 6.38L16.03 6.41L16.25 6.53L16.28 6.54V6.55H16.29C16.32 6.57 16.24 6.5 16.25 6.53H16.26L16.27 6.54L16.33 6.58L16.45 6.66L16.5 6.71L16.56 6.73L16.57 6.74H16.58L16.56 6.73H16.57L16.71 6.84L16.85 6.94L16.87 6.96L16.86 6.95L16.87 6.96L16.91 7L17 7.05A6.46 6.46 0 0 1 18.6 9.05L18.65 9.15L18.71 9.27L18.82 9.5C18.87 9.65 18.94 9.79 19 9.95A6.69 6.69 0 0 1 19.24 10.9A6.78 6.78 0 0 1 19.35 11.86C19.36 12 19.36 12.17 19.35 12.32C19.35 12.5 19.34 12.62 19.33 12.77A6.79 6.79 0 0 1 19.2 13.58A6.4 6.4 0 0 1 19 14.25C18.96 14.45 18.89 14.62 18.84 14.76C18.78 14.9 18.73 15 18.7 15.07L18.64 15.19L18.71 15.08C18.75 15 18.81 14.91 18.88 14.78C18.95 14.64 19.04 14.5 19.12 14.29A6.5 6.5 0 0 0 19.37 13.62A6.93 6.93 0 0 0 19.59 12.81C19.61 12.66 19.64 12.5 19.66 12.35C19.68 12.19 19.7 12.03 19.7 11.87A7.1 7.1 0 0 0 19.69 10.84";
var mdiConnection = "M21.4 7.5C22.2 8.3 22.2 9.6 21.4 10.3L18.6 13.1L10.8 5.3L13.6 2.5C14.4 1.7 15.7 1.7 16.4 2.5L18.2 4.3L21.2 1.3L22.6 2.7L19.6 5.7L21.4 7.5M15.6 13.3L14.2 11.9L11.4 14.7L9.3 12.6L12.1 9.8L10.7 8.4L7.9 11.2L6.4 9.8L3.6 12.6C2.8 13.4 2.8 14.7 3.6 15.4L5.4 17.2L1.4 21.2L2.8 22.6L6.8 18.6L8.6 20.4C9.4 21.2 10.7 21.2 11.4 20.4L14.2 17.6L12.8 16.2L15.6 13.3Z";
var mdiConsole = "M20,19V7H4V19H20M20,3A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5C2,3.89 2.9,3 4,3H20M13,17V15H18V17H13M9.58,13L5.57,9H8.4L11.7,12.3C12.09,12.69 12.09,13.33 11.7,13.72L8.42,17H5.59L9.58,13Z";
var mdiConsoleLine = "M13,19V16H21V19H13M8.5,13L2.47,7H6.71L11.67,11.95C12.25,12.54 12.25,13.5 11.67,14.07L6.74,19H2.5L8.5,13Z";
var mdiConsoleNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7A2,2 0 0,1 5,15V5A2,2 0 0,1 7,3H17M7,7L11,11L7,15H9.85L13.13,11.72C13.5,11.33 13.5,10.7 13.13,10.3L9.83,7H7M17,13H14V15H17V13Z";
var mdiConsoleNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M8,6.89L11.56,10.45L8,14H10.53L13.45,11.08C13.78,10.74 13.78,10.18 13.45,9.82L10.5,6.89H8M16,12.22H13.33V14H16V12.22Z";
var mdiConsolidate = "M18 9H20V4H22V9A2 2 0 0 1 20 11H18V13L15 10L18 7M14 10A2 2 0 1 0 12 12A2 2 0 0 0 14 10M2 11V16H4V11H6V13L9 10L6 7V9H4A2 2 0 0 0 2 11M15 16L12 13L9 16H11V18A2 2 0 0 0 13 20H18V18H13V16";
var mdiContactlessPayment = "M16.79,23C16.37,22.83 16.07,22.45 16,22C15.95,21.74 16,21.56 16.4,20.84C17.9,18.14 18.67,15.09 18.63,12C18.67,9 17.94,6.07 16.5,3.44C16.29,3 16.1,2.58 15.94,2.13C16,1.75 16.19,1.4 16.5,1.19C16.95,0.95 17.5,1 17.91,1.28C18.19,1.64 18.43,2 18.63,2.42C19.71,4.5 20.44,6.7 20.8,9C21.03,10.81 21.06,12.65 20.89,14.47C20.58,16.81 19.89,19.07 18.83,21.18C18.19,22.46 17.83,23 17.45,23C17.37,23 17.28,23 17.2,23C17.06,23 16.93,23 16.79,23V23M12.43,20.79C11.86,20.63 11.5,20.05 11.62,19.47C11.62,19.35 11.93,18.8 12.21,18.24C13.39,15.97 13.9,13.41 13.67,10.86C13.53,9.03 13,7.25 12.13,5.64C11.5,4.38 11.46,4.18 11.83,3.64C12.27,3.15 13,3.08 13.54,3.5C14.26,4.56 14.83,5.72 15.25,6.94C16.53,10.73 16.33,14.86 14.69,18.5C13.85,20.39 13.26,21 12.43,20.74V20.79M7.93,18.56C7.57,18.4 7.3,18.08 7.2,17.7C7.2,17.5 7.2,17.24 7.65,16.44C9.14,13.74 9.14,10.46 7.65,7.76C7,6.5 7,6.24 7.53,5.76C7.72,5.54 8,5.43 8.3,5.47C8.94,5.47 9.3,5.78 9.84,6.91C10.69,8.47 11.13,10.22 11.12,12C11.16,13.81 10.72,15.61 9.85,17.2C9.31,18.25 9.04,18.5 8.5,18.59C8.31,18.61 8.11,18.59 7.93,18.5V18.56M3.72,16.43C3.39,16.27 3.13,16 3,15.65C2.9,15.3 3,15 3.4,14.36C3.9,13.68 4.14,12.84 4.09,12C4.16,11.15 3.93,10.31 3.44,9.61C3.27,9.36 3.13,9.09 3,8.82C2.89,8.19 3.31,7.59 4,7.47C4.54,7.37 4.92,7.6 5.42,8.36C6.87,10.57 6.87,13.42 5.42,15.63C4.91,16.4 4.33,16.63 3.73,16.43H3.72Z";
var mdiContactlessPaymentCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M8.43 14.44L7.07 13.83C7.35 13.27 7.5 12.67 7.5 12.05C7.5 11.39 7.35 10.76 7.07 10.17L8.43 9.56C8.81 10.37 9 11.2 9 12.05C9 12.8 8.81 13.6 8.43 14.44M11.53 15.94L10.22 15.29C10.75 14.16 11 13 11 11.86C11 10.73 10.75 9.69 10.22 8.71L11.53 7.96C12.19 9.12 12.5 10.42 12.5 11.86C12.5 13.33 12.19 14.69 11.53 15.94M14.68 17.35L13.31 16.65C14.1 15.11 14.5 13.57 14.5 12S14.1 8.87 13.31 7.31L14.68 6.65C15.55 8.43 16 10.22 16 12C16 13.82 15.55 15.6 14.68 17.35Z";
var mdiContactlessPaymentCircleOutline = "M12 4C16.41 4 20 7.59 20 12S16.41 20 12 20 4 16.41 4 12 7.59 4 12 4M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M8.43 14.44L7.07 13.83C7.35 13.27 7.5 12.67 7.5 12.05C7.5 11.39 7.35 10.76 7.07 10.17L8.43 9.56C8.81 10.37 9 11.2 9 12.05C9 12.8 8.81 13.6 8.43 14.44M11.53 15.94L10.22 15.29C10.75 14.16 11 13 11 11.86C11 10.73 10.75 9.69 10.22 8.71L11.53 7.96C12.19 9.12 12.5 10.42 12.5 11.86C12.5 13.33 12.19 14.69 11.53 15.94M14.68 17.35L13.31 16.65C14.1 15.11 14.5 13.57 14.5 12S14.1 8.87 13.31 7.31L14.68 6.65C15.55 8.43 16 10.22 16 12C16 13.82 15.55 15.6 14.68 17.35Z";
var mdiContacts = "M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z";
var mdiContactsOutline = "M20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6C22 4.9 21.1 4 20 4M20 18H4V6H20V18M4 0H20V2H4M4 22H20V24H4M12 12C13.38 12 14.5 10.88 14.5 9.5S13.38 7 12 7 9.5 8.12 9.5 9.5 10.62 12 12 12M12 8.5C12.55 8.5 13 8.95 13 9.5S12.55 10.5 12 10.5 11 10.05 11 9.5 11.45 8.5 12 8.5M17 16C17 13.9 13.69 13 12 13S7 13.9 7 16V17H17V16M8.81 15.5C9.42 15 10.84 14.5 12 14.5C13.17 14.5 14.59 15 15.2 15.5H8.81Z";
var mdiContain = "M2,3H8V5H4V19H8V21H2V3M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15M22,3V21H16V19H20V5H16V3H22Z";
var mdiContainEnd = "M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15M22,3V21H16V19H20V5H16V3H22Z";
var mdiContainStart = "M2,3H8V5H4V19H8V21H2V3M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15Z";
var mdiContentCopy = "M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z";
var mdiContentCut = "M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z";
var mdiContentDuplicate = "M11,17H4A2,2 0 0,1 2,15V3A2,2 0 0,1 4,1H16V3H4V15H11V13L15,16L11,19V17M19,21V7H8V13H6V7A2,2 0 0,1 8,5H19A2,2 0 0,1 21,7V21A2,2 0 0,1 19,23H8A2,2 0 0,1 6,21V19H8V21H19Z";
var mdiContentPaste = "M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z";
var mdiContentSave = "M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z";
var mdiContentSaveAlert = "M13 9H3V5H13M10 19C8.3 19 7 17.7 7 16S8.3 13 10 13 13 14.3 13 16 11.7 19 10 19M15 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H17C18.1 21 19 20.1 19 19V7L15 3M23 14H21V7H23V14M23 18H21V16H23V18Z";
var mdiContentSaveAlertOutline = "M15 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H17C18.1 21 19 20.1 19 19V7L15 3M17 19H3V5H14.2L17 7.8V19M10 12C8.3 12 7 13.3 7 15S8.3 18 10 18 13 16.7 13 15 11.7 12 10 12M4 6H13V10H4V6M23 14H21V7H23V14M23 18H21V16H23V18Z";
var mdiContentSaveAll = "M17,7V3H7V7H17M14,17A3,3 0 0,0 17,14A3,3 0 0,0 14,11A3,3 0 0,0 11,14A3,3 0 0,0 14,17M19,1L23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V3A2,2 0 0,1 7,1H19M1,7H3V21H17V23H3A2,2 0 0,1 1,21V7Z";
var mdiContentSaveAllOutline = "M1 7H3V21H17V23H3C1.9 23 1 22.11 1 21V7M19 1H7C5.89 1 5 1.9 5 3V17C5 18.1 5.89 19 7 19H21C22.1 19 23 18.1 23 17V5L19 1M21 17H7V3H18.17L21 5.83V17M14 10C12.34 10 11 11.34 11 13S12.34 16 14 16 17 14.66 17 13 15.66 10 14 10M8 4H17V8H8V4Z";
var mdiContentSaveCog = "M21 11.7V7L17 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11.7C11.4 20.3 11.2 19.6 11.1 18.8C9.9 18.4 9 17.3 9 16C9 14.3 10.3 13 12 13C12.3 13 12.6 13.1 12.9 13.2C14.2 11.8 16 11 18 11C19.1 11 20.1 11.2 21 11.7M15 9H5V5H15V9M21.7 18.6V17.6L22.8 16.8C22.9 16.7 23 16.6 22.9 16.5L21.9 14.8C21.9 14.7 21.7 14.7 21.6 14.7L20.4 15.2C20.1 15 19.8 14.8 19.5 14.7L19.3 13.4C19.3 13.3 19.2 13.2 19.1 13.2H17.1C16.9 13.2 16.8 13.3 16.8 13.4L16.6 14.7C16.3 14.9 16.1 15 15.8 15.2L14.6 14.7C14.5 14.7 14.4 14.7 14.3 14.8L13.3 16.5C13.3 16.6 13.3 16.7 13.4 16.8L14.5 17.6V18.6L13.4 19.4C13.3 19.5 13.2 19.6 13.3 19.7L14.3 21.4C14.4 21.5 14.5 21.5 14.6 21.5L15.8 21C16 21.2 16.3 21.4 16.6 21.5L16.8 22.8C16.9 22.9 17 23 17.1 23H19.1C19.2 23 19.3 22.9 19.3 22.8L19.5 21.5C19.8 21.3 20 21.2 20.3 21L21.5 21.4C21.6 21.4 21.7 21.4 21.8 21.3L22.8 19.6C22.9 19.5 22.9 19.4 22.8 19.4L21.7 18.6M18 19.5C17.2 19.5 16.5 18.8 16.5 18S17.2 16.5 18 16.5 19.5 17.2 19.5 18 18.8 19.5 18 19.5Z";
var mdiContentSaveCogOutline = "M11.1 19C11.2 19.7 11.4 20.4 11.7 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H17L21 7V11.7C20.4 11.4 19.7 11.2 19 11.1V7.8L16.2 5H5V19H11.1M12 12C10.3 12 9 13.3 9 15C9 16.3 9.8 17.4 11 17.8C11.1 15.6 12.1 13.7 13.7 12.5C13.2 12.2 12.6 12 12 12M15 10V6H6V10H15M22.8 19.6L21.8 21.3C21.7 21.4 21.6 21.4 21.5 21.4L20.3 21C20 21.2 19.8 21.3 19.5 21.5L19.3 22.8C19.3 22.9 19.2 23 19.1 23H17.1C17 23 16.9 22.9 16.8 22.8L16.6 21.5C16.3 21.4 16 21.2 15.8 21L14.6 21.5C14.5 21.5 14.4 21.5 14.3 21.4L13.3 19.7C13.2 19.6 13.3 19.5 13.4 19.4L14.5 18.6V17.6L13.4 16.8C13.3 16.7 13.3 16.6 13.3 16.5L14.3 14.8C14.4 14.7 14.5 14.7 14.6 14.7L15.8 15.2C16.1 15 16.3 14.9 16.6 14.7L16.8 13.4C16.8 13.3 16.9 13.2 17.1 13.2H19.1C19.2 13.2 19.3 13.3 19.3 13.4L19.5 14.7C19.8 14.8 20.1 15 20.4 15.2L21.6 14.7C21.7 14.7 21.9 14.7 21.9 14.8L22.9 16.5C23 16.6 22.9 16.7 22.8 16.8L21.7 17.6V18.6L22.8 19.4C22.9 19.4 22.9 19.5 22.8 19.6M19.5 18C19.5 17.2 18.8 16.5 18 16.5S16.5 17.2 16.5 18 17.2 19.5 18 19.5C18.8 19.5 19.5 18.8 19.5 18Z";
var mdiContentSaveEdit = "M10,19L10.14,18.86C8.9,18.5 8,17.36 8,16A3,3 0 0,1 11,13C12.36,13 13.5,13.9 13.86,15.14L20,9V7L16,3H4C2.89,3 2,3.9 2,5V19A2,2 0 0,0 4,21H10V19M4,5H14V9H4V5M20.04,12.13C19.9,12.13 19.76,12.19 19.65,12.3L18.65,13.3L20.7,15.35L21.7,14.35C21.92,14.14 21.92,13.79 21.7,13.58L20.42,12.3C20.31,12.19 20.18,12.13 20.04,12.13M18.07,13.88L12,19.94V22H14.06L20.12,15.93L18.07,13.88Z";
var mdiContentSaveEditOutline = "M4 19H10V21H4C2.89 21 2 20.1 2 19V5C2 3.9 2.89 3 4 3H16L20 7V9.12L18 11.12V7.83L15.17 5H4V19M14 10V6H5V10H14M20.42 12.3C20.31 12.19 20.18 12.13 20.04 12.13C19.9 12.13 19.76 12.19 19.65 12.3L18.65 13.3L20.7 15.35L21.7 14.35C21.92 14.14 21.92 13.79 21.7 13.58L20.42 12.3M12 19.94V22H14.06L20.12 15.93L18.07 13.88L12 19.94M14 15C14 13.34 12.66 12 11 12S8 13.34 8 15 9.34 18 11 18C11.04 18 11.08 18 11.13 18L14 15.13C14 15.09 14 15.05 14 15";
var mdiContentSaveMove = "M17,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H11.81C11.42,20.34 11.17,19.6 11.07,18.84C9.5,18.31 8.66,16.6 9.2,15.03C9.61,13.83 10.73,13 12,13C12.44,13 12.88,13.1 13.28,13.29C15.57,11.5 18.83,11.59 21,13.54V7L17,3M15,9H5V5H15V9M13,17H17V14L22,18.5L17,23V20H13V17";
var mdiContentSaveMoveOutline = "M13 17H17V14L22 18.5L17 23V20H13V17M14 12.8C13.5 12.31 12.78 12 12 12C10.34 12 9 13.34 9 15C9 16.31 9.84 17.41 11 17.82C11.07 15.67 12.27 13.8 14 12.8M11.09 19H5V5H16.17L19 7.83V12.35C19.75 12.61 20.42 13 21 13.54V7L17 3H5C3.89 3 3 3.9 3 5V19C3 20.1 3.89 21 5 21H11.81C11.46 20.39 11.21 19.72 11.09 19M6 10H15V6H6V10Z";
var mdiContentSaveOff = "M8.2 5L6.2 3H17L21 7V17.8L12.2 9H15V5H8.2M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.9 21 3 20.11 3 19V5C3 4.97 3 4.93 3 4.9L1.11 3L2.39 1.73L22.11 21.46M7.11 9L5 6.89V9H7.11M14.89 16.78L11.22 13.11C9.95 13.46 9 14.61 9 16C9 17.66 10.34 19 12 19C13.39 19 14.54 18.05 14.89 16.78Z";
var mdiContentSaveOffOutline = "M8.2 5L6.2 3H17L21 7V17.8L19 15.8V7.83L16.17 5H8.2M15 10V6H9.2L13.2 10H15M22.11 21.46L20.84 22.73L19.1 21C19.07 21 19.03 21 19 21H5C3.89 21 3 20.1 3 19V5C3 4.97 3 4.93 3 4.9L1.11 3L2.39 1.73L22.11 21.46M17.11 19L14.59 16.5C14.08 17.39 13.12 18 12 18C10.34 18 9 16.66 9 15C9 13.88 9.61 12.92 10.5 12.41L8.11 10H6V7.89L5 6.89V19H17.11Z";
var mdiContentSaveOutline = "M17 3H5C3.89 3 3 3.9 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V7L17 3M19 19H5V5H16.17L19 7.83V19M12 12C10.34 12 9 13.34 9 15S10.34 18 12 18 15 16.66 15 15 13.66 12 12 12M6 6H15V10H6V6Z";
var mdiContentSaveSettings = "M15,8V4H5V8H15M12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18M17,2L21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V4A2,2 0 0,1 5,2H17M11,22H13V24H11V22M7,22H9V24H7V22M15,22H17V24H15V22Z";
var mdiContentSaveSettingsOutline = "M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22M17 2H5C3.89 2 3 2.9 3 4V18C3 19.1 3.89 20 5 20H19C20.1 20 21 19.1 21 18V6L17 2M19 18H5V4H16.17L19 6.83V18M12 11C10.34 11 9 12.34 9 14S10.34 17 12 17 15 15.66 15 14 13.66 11 12 11M6 5H15V9H6V5Z";
var mdiContrast = "M4.38,20.9C3.78,20.71 3.3,20.23 3.1,19.63L19.63,3.1C20.23,3.3 20.71,3.78 20.9,4.38L4.38,20.9M20,16V18H13V16H20M3,6H6V3H8V6H11V8H8V11H6V8H3V6Z";
var mdiContrastBox = "M17,15.5H12V17H17M19,19H5L19,5M5.5,7.5H7.5V5.5H9V7.5H11V9H9V11H7.5V9H5.5M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiContrastCircle = "M12,20C9.79,20 7.79,19.1 6.34,17.66L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20M6,8H8V6H9.5V8H11.5V9.5H9.5V11.5H8V9.5H6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16H17V14.5H12V16Z";
var mdiControllerClassic = "M6,7H18A5,5 0 0,1 23,12A5,5 0 0,1 18,17C16.36,17 14.91,16.21 14,15H10C9.09,16.21 7.64,17 6,17A5,5 0 0,1 1,12A5,5 0 0,1 6,7M19.75,9.5A1.25,1.25 0 0,0 18.5,10.75A1.25,1.25 0 0,0 19.75,12A1.25,1.25 0 0,0 21,10.75A1.25,1.25 0 0,0 19.75,9.5M17.25,12A1.25,1.25 0 0,0 16,13.25A1.25,1.25 0 0,0 17.25,14.5A1.25,1.25 0 0,0 18.5,13.25A1.25,1.25 0 0,0 17.25,12M5,9V11H3V13H5V15H7V13H9V11H7V9H5Z";
var mdiControllerClassicOutline = "M17.5,7A5.5,5.5 0 0,1 23,12.5A5.5,5.5 0 0,1 17.5,18C15.79,18 14.27,17.22 13.26,16H10.74C9.73,17.22 8.21,18 6.5,18A5.5,5.5 0 0,1 1,12.5A5.5,5.5 0 0,1 6.5,7H17.5M6.5,9A3.5,3.5 0 0,0 3,12.5A3.5,3.5 0 0,0 6.5,16C7.9,16 9.1,15.18 9.66,14H14.34C14.9,15.18 16.1,16 17.5,16A3.5,3.5 0 0,0 21,12.5A3.5,3.5 0 0,0 17.5,9H6.5M5.75,10.25H7.25V11.75H8.75V13.25H7.25V14.75H5.75V13.25H4.25V11.75H5.75V10.25M16.75,12.5A1,1 0 0,1 17.75,13.5A1,1 0 0,1 16.75,14.5A1,1 0 0,1 15.75,13.5A1,1 0 0,1 16.75,12.5M18.75,10.5A1,1 0 0,1 19.75,11.5A1,1 0 0,1 18.75,12.5A1,1 0 0,1 17.75,11.5A1,1 0 0,1 18.75,10.5Z";
var mdiCookie = "M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z";
var mdiCookieAlert = "M18 10H16V9C16 8 15 8 15 8H13V7C13 6 12 6 12 6H11V4C11 3 10 3 10 3C5 3 1 7 1 12S5 21 10 21 19 17 19 12C19 11.5 19 11 18.9 10.5C18.6 10 18 10 18 10M4.5 13C3.7 13 3 12.3 3 11.5S3.7 10 4.5 10 6 10.7 6 11.5 5.3 13 4.5 13M6 7.5C6 6.7 6.7 6 7.5 6S9 6.7 9 7.5 8.3 9 7.5 9 6 8.3 6 7.5M9 19C8.2 19 7.5 18.3 7.5 17.5S8.2 16 9 16 10.5 16.7 10.5 17.5 9.8 19 9 19M9.5 14C8.7 14 8 13.3 8 12.5S8.7 11 9.5 11 11 11.7 11 12.5 10.3 14 9.5 14M14.5 16C13.7 16 13 15.3 13 14.5S13.7 13 14.5 13C15.3 13 16 13.7 16 14.5S15.3 16 14.5 16M21 15H23V17H21V15M23 7V13H21V7H23Z";
var mdiCookieAlertOutline = "M16 14.5C16 15.3 15.3 16 14.5 16S13 15.3 13 14.5 13.7 13 14.5 13C15.3 13 16 13.7 16 14.5M18.9 10.5C19 11 19 11.5 19 12C19 17 15 21 10 21S1 17 1 12 5 3 10 3C10 3 11 3 11 4V6H12C12 6 13 6 13 7V8H15C15 8 16 8 16 9V10H18C18 10 18.6 10 18.9 10.5M17 12H15.5C14.7 12 14 11.3 14 10.5V10H12.5C11.7 10 11 9.3 11 8.5V8H10.5C9.7 8 9 7.3 9 6.5V5.1C5.9 5.5 3.5 8 3.1 11.1C3.2 10.5 3.8 10 4.5 10C5.3 10 6 10.7 6 11.5S5.3 13 4.5 13C3.7 13 3.1 12.4 3 11.6C3 12.1 3 12.6 3.1 13.1C3.5 15.8 5.6 18 8.2 18.7C7.8 18.4 7.5 18 7.5 17.5C7.5 16.7 8.2 16 9 16S10.5 16.7 10.5 17.5C10.5 18.2 10 18.8 9.3 19C13.5 19.4 17 16.1 17 12M9.5 11C8.7 11 8 11.7 8 12.5S8.7 14 9.5 14 11 13.3 11 12.5 10.3 11 9.5 11M9 7.5C9 6.7 8.3 6 7.5 6S6 6.7 6 7.5 6.7 9 7.5 9 9 8.3 9 7.5M21 17H23V15H21V17M21 7V13H23V7H21Z";
var mdiCookieCheck = "M15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z";
var mdiCookieCheckOutline = "M15 10H14.5C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C7.91 5.5 5.47 8 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16S12.5 16.67 12.5 17.5C12.5 18.22 12 18.82 11.32 18.96C11.9 19 12.46 19 13 18.92C13 18.95 13 18.97 13 19C13 19.66 13.12 20.3 13.32 20.89C12.89 20.96 12.45 21 12 21C7.03 21 3 16.97 3 12S7.03 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 12.45 20.96 12.89 20.89 13.32C20.3 13.12 19.66 13 19 13C18.97 13 18.95 13 18.92 13C18.97 12.68 19 12.34 19 12H17.5C16.67 12 16 11.33 16 10.5V10H15M15 14.5C15 14.5 15 14.5 15 14.53C15.66 13.95 16.45 13.5 17.32 13.24C17.08 13.09 16.8 13 16.5 13C15.67 13 15 13.67 15 14.5M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z";
var mdiCookieClock = "M19.97 10.24C19.95 10 19.91 9.74 19.87 9.5C19.6 9 19 9 19 9H17V8C17 7 16 7 16 7H14V6C14 5 13 5 13 5H12V3C12 2 11 2 11 2C6.03 2 2 6.03 2 11C2 15.71 5.62 19.57 10.23 19.96C11.5 21.8 13.61 23 16 23C19.87 23 23 19.87 23 16C23 13.61 21.8 11.5 19.97 10.24M11.64 10.53C10.87 11.15 10.23 11.92 9.78 12.81C9.32 12.55 9 12.06 9 11.5C9 10.67 9.67 10 10.5 10C10.96 10 11.36 10.21 11.64 10.53M5.5 12C4.67 12 4 11.33 4 10.5S4.67 9 5.5 9 7 9.67 7 10.5 6.33 12 5.5 12M7 6.5C7 5.67 7.67 5 8.5 5S10 5.67 10 6.5 9.33 8 8.5 8 7 7.33 7 6.5M8.5 16.5C8.5 16.04 8.71 15.64 9.03 15.36C9 15.57 9 15.79 9 16C9 16.62 9.09 17.22 9.24 17.79C8.8 17.5 8.5 17.05 8.5 16.5M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25Z";
var mdiCookieClockOutline = "M8.5 8C7.67 8 7 7.33 7 6.5S7.67 5 8.5 5 10 5.67 10 6.5 9.33 8 8.5 8M16.5 12H15V17L18.61 19.16L19.36 17.94L16.5 16.25V12M23 16C23 19.87 19.87 23 16 23C13.61 23 11.5 21.8 10.23 19.96C5.62 19.57 2 15.71 2 11C2 6.03 6.03 2 11 2C11 2 12 2 12 3V5H13C13 5 14 5 14 6V7H16C16 7 17 7 17 8V9H19C19 9 19.6 9 19.87 9.5C19.91 9.74 19.95 10 19.97 10.24C21.8 11.5 23 13.61 23 16M9.16 17.74C8.76 17.47 8.5 17 8.5 16.5C8.5 16.04 8.71 15.64 9.03 15.36C9.12 14.45 9.38 13.59 9.78 12.81C9.32 12.55 9 12.06 9 11.5C9 10.67 9.67 10 10.5 10C10.96 10 11.36 10.21 11.64 10.53C12.59 9.77 13.74 9.26 15 9.08V9H13.5C12.67 9 12 8.33 12 7.5V7H11.5C10.67 7 10 6.33 10 5.5V4.07C6.91 4.5 4.47 7 4.07 10.08C4.25 9.46 4.82 9 5.5 9C6.33 9 7 9.67 7 10.5S6.33 12 5.5 12C4.71 12 4.07 11.39 4 10.62C4 11.11 4 11.61 4.09 12.12C4.5 14.81 6.54 17.04 9.16 17.74M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z";
var mdiCookieCog = "M21 12.29C21 12.19 21 12.1 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.1 21 12.19 21 12.29 21C12.11 20.36 12 19.69 12 19C12 18.86 12 18.73 12 18.59C11.75 18.84 11.4 19 11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16C11.59 16 12.1 16.35 12.34 16.84C13.25 14.03 15.89 12 19 12C19.69 12 20.36 12.11 21 12.29M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M9.5 9C8.67 9 8 8.33 8 7.5S8.67 6 9.5 6 11 6.67 11 7.5 10.33 9 9.5 9M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M22.7 19.6V18.6L23.8 17.8C23.9 17.7 24 17.6 23.9 17.5L22.9 15.8C22.9 15.7 22.7 15.7 22.6 15.7L21.4 16.2C21.1 16 20.8 15.8 20.5 15.7L20.3 14.4C20.3 14.3 20.2 14.2 20.1 14.2H18.1C17.9 14.2 17.8 14.3 17.8 14.4L17.6 15.7C17.3 15.9 17.1 16 16.8 16.2L15.6 15.7C15.5 15.7 15.4 15.7 15.3 15.8L14.3 17.5C14.3 17.6 14.3 17.7 14.4 17.8L15.5 18.6V19.6L14.4 20.4C14.3 20.5 14.2 20.6 14.3 20.7L15.3 22.4C15.4 22.5 15.5 22.5 15.6 22.5L16.8 22C17 22.2 17.3 22.4 17.6 22.5L17.8 23.8C17.9 23.9 18 24 18.1 24H20.1C20.2 24 20.3 23.9 20.3 23.8L20.5 22.5C20.8 22.3 21 22.2 21.3 22L22.5 22.4C22.6 22.4 22.7 22.4 22.8 22.3L23.8 20.6C23.9 20.5 23.9 20.4 23.8 20.4L22.7 19.6M19 20.5C18.2 20.5 17.5 19.8 17.5 19S18.2 17.5 19 17.5 20.5 18.2 20.5 19 19.8 20.5 19 20.5Z";
var mdiCookieCogOutline = "M14.5 10C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C7.91 5.5 5.47 8 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16C11.59 16 12.1 16.35 12.34 16.84C12.16 17.39 12.06 17.97 12 18.57C11.83 18.76 11.6 18.9 11.32 18.96C11.55 19 11.78 19 12 19V19C12 19.69 12.11 20.36 12.29 21C12.19 21 12.1 21 12 21C7.03 21 3 16.97 3 12S7.03 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 12.1 21 12.19 21 12.29C20.36 12.11 19.69 12 19 12H17.5C16.67 12 16 11.33 16 10.5V10H14.5M11.5 11C10.67 11 10 11.67 10 12.5S10.67 14 11.5 14 13 13.33 13 12.5 12.33 11 11.5 11M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z";
var mdiCookieEdit = "M15.1 15.03C15.04 14.86 15 14.69 15 14.5C15 13.67 15.67 13 16.5 13C16.69 13 16.86 13.04 17.03 13.1L19.39 10.74C19.69 10.44 20.05 10.24 20.44 10.12C20.21 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12C3 16.63 6.5 20.44 11 20.94V19.13L11.14 19C11.1 19 11.05 19 11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5C12.5 17.55 12.5 17.6 12.5 17.64L15.1 15.03M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M9.5 9C8.67 9 8 8.33 8 7.5S8.67 6 9.5 6 11 6.67 11 7.5 10.33 9 9.5 9M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M22.85 14.19L21.87 15.17L19.83 13.13L20.81 12.15C21 11.95 21.33 11.95 21.53 12.15L22.85 13.47C23.05 13.67 23.05 14 22.85 14.19M19.13 13.83L21.17 15.87L15.04 22H13V19.96L19.13 13.83Z";
var mdiCookieEditOutline = "M9.5 6C10.33 6 11 6.67 11 7.5S10.33 9 9.5 9 8 8.33 8 7.5 8.67 6 9.5 6M11.5 11C10.67 11 10 11.67 10 12.5S10.67 14 11.5 14 13 13.33 13 12.5 12.33 11 11.5 11M11 16C10.17 16 9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16V10.5C16 11.33 16.67 12 17.5 12H18.13L19.39 10.74C19.69 10.44 20.05 10.24 20.44 10.12C20.21 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12C3 16.63 6.5 20.44 11 20.94V19.13L12.47 17.66C12.5 17.6 12.5 17.55 12.5 17.5C12.5 16.67 11.83 16 11 16M15 14.5C15 14.69 15.04 14.86 15.1 15.03L17.03 13.1C16.86 13.04 16.69 13 16.5 13C15.67 13 15 13.67 15 14.5M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96Z";
var mdiCookieLock = "M18.5 11C19.42 11 20.27 11.29 21 11.77C21 11.35 20.95 10.92 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.34 21 12.67 21 13 20.94V17C13 16.08 13.42 15.26 14.07 14.71C14.45 12.6 16.29 11 18.5 11M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16Z";
var mdiCookieLockOutline = "M10 12.5C10 11.67 10.67 11 11.5 11S13 11.67 13 12.5 12.33 14 11.5 14 10 13.33 10 12.5M16 10V10.5C16 10.9 16.16 11.26 16.41 11.53C17.04 11.2 17.75 11 18.5 11C19.42 11 20.27 11.29 21 11.77C21 11.35 20.95 10.92 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.34 21 12.67 21 13 20.94V18.92C12.46 19 11.9 19 11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M22 17V21C22 21.55 21.55 22 21 22H16C15.45 22 15 21.55 15 21V17C15 16.45 15.45 16 16 16V15.5C16 14.12 17.12 13 18.5 13S21 14.12 21 15.5V16C21.55 16 22 16.45 22 17M20 15.5C20 14.67 19.33 14 18.5 14S17 14.67 17 15.5V16H20V15.5Z";
var mdiCookieMinus = "M15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M23 18V20H15V18H23Z";
var mdiCookieMinusOutline = "M15 10H14.5C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C7.91 5.5 5.47 8 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16S12.5 16.67 12.5 17.5C12.5 18.22 12 18.82 11.32 18.96C11.9 19 12.46 19 13 18.92C13 18.95 13 18.97 13 19C13 19.66 13.12 20.3 13.32 20.89C12.89 20.96 12.45 21 12 21C7.03 21 3 16.97 3 12S7.03 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 12.45 20.96 12.89 20.89 13.32C20.3 13.12 19.66 13 19 13C18.97 13 18.95 13 18.92 13C18.97 12.68 19 12.34 19 12H17.5C16.67 12 16 11.33 16 10.5V10H15M15 14.5C15 14.5 15 14.5 15 14.53C15.66 13.95 16.45 13.5 17.32 13.24C17.08 13.09 16.8 13 16.5 13C15.67 13 15 13.67 15 14.5M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M15 18V20H23V18H15Z";
var mdiCookieOff = "M9.25 6.05L7.45 4.25C8.79 3.46 10.34 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 13.66 20.54 15.22 19.75 16.55L17.95 14.75C17.97 14.67 18 14.59 18 14.5C18 13.67 17.33 13 16.5 13C16.41 13 16.33 13.03 16.25 13.05L10.95 7.75C10.97 7.67 11 7.59 11 7.5C11 6.67 10.33 6 9.5 6C9.41 6 9.33 6.03 9.25 6.05M22.11 21.46L20.84 22.73L17.34 19.23C15.85 20.34 14 21 12 21C7.03 21 3 16.97 3 12C3 10 3.66 8.15 4.77 6.66L1.11 3L2.39 1.73L22.11 21.46M8 11.5C8 10.67 7.33 10 6.5 10S5 10.67 5 11.5 5.67 13 6.5 13 8 12.33 8 11.5M10 12.5C10 13.33 10.67 14 11.5 14C11.68 14 11.85 13.96 12 13.9L10.1 12C10.04 12.15 10 12.32 10 12.5M12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5 10.17 19 11 19 12.5 18.33 12.5 17.5Z";
var mdiCookieOffOutline = "M8.93 5.73L7.45 4.25C8.79 3.46 10.34 3 12 3C12 3 13 3 13 4V6H14C14 6 15 6 15 7V8H17C17 8 18 8 18 9V10H20C20 10 20.6 10 20.87 10.5C20.96 11 21 11.5 21 12C21 13.66 20.54 15.22 19.75 16.55L18.28 15.08C18.74 14.15 19 13.11 19 12H17.5C16.67 12 16 11.33 16 10.5V10H14.5C13.67 10 13 9.33 13 8.5V8H12.5C11.67 8 11 7.33 11 6.5V5.07C10.26 5.18 9.57 5.41 8.93 5.73M9.25 6.05L10.95 7.75C10.97 7.67 11 7.59 11 7.5C11 6.67 10.33 6 9.5 6C9.41 6 9.33 6.03 9.25 6.05M16.25 13.05L17.95 14.75C17.97 14.67 18 14.59 18 14.5C18 13.67 17.33 13 16.5 13C16.41 13 16.33 13.03 16.25 13.05M22.11 21.46L20.84 22.73L17.34 19.23C15.85 20.34 14 21 12 21C7.03 21 3 16.97 3 12C3 10 3.66 8.15 4.77 6.66L1.11 3L2.39 1.73L22.11 21.46M15.9 17.79L12 13.9C11.85 13.96 11.68 14 11.5 14C10.67 14 10 13.33 10 12.5C10 12.32 10.04 12.15 10.1 12L6.21 8.1C5.62 9 5.21 10 5.07 11.08C5.25 10.46 5.82 10 6.5 10C7.33 10 8 10.67 8 11.5S7.33 13 6.5 13C5.71 13 5.07 12.39 5 11.62C5 12.11 5 12.61 5.09 13.12C5.5 15.81 7.54 18.04 10.16 18.74C9.76 18.47 9.5 18 9.5 17.5C9.5 16.67 10.17 16 11 16S12.5 16.67 12.5 17.5C12.5 18.22 12 18.82 11.32 18.96C13.03 19.12 14.61 18.66 15.9 17.79Z";
var mdiCookieOutline = "M20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C16.97 21 21 16.97 21 12C21 11.5 20.96 11 20.87 10.5M11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16V10.5C16 11.33 16.67 12 17.5 12H19C19 16.08 15.5 19.36 11.32 18.96M9.5 9C8.67 9 8 8.33 8 7.5S8.67 6 9.5 6 11 6.67 11 7.5 10.33 9 9.5 9M13 12.5C13 13.33 12.33 14 11.5 14S10 13.33 10 12.5 10.67 11 11.5 11 13 11.67 13 12.5M18 14.5C18 15.33 17.33 16 16.5 16S15 15.33 15 14.5 15.67 13 16.5 13 18 13.67 18 14.5Z";
var mdiCookiePlus = "M15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z";
var mdiCookiePlusOutline = "M16.5 13C16.8 13 17.08 13.09 17.32 13.24C16.45 13.5 15.66 13.95 15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13M16 10V10.5C16 11.33 16.67 12 17.5 12H19C19 12.34 18.97 12.68 18.92 13C18.95 13 18.97 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 18.97 13 18.95 13 18.92C12.46 19 11.9 19 11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z";
var mdiCookieRefresh = "M11 16C11.53 16 12 16.28 12.26 16.69C13.04 14 15.54 12 18.5 12C19.38 12 20.21 12.18 21 12.5C21 12.33 21 12.17 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.17 21 12.33 21 12.5 21C12.19 20.24 12 19.44 12 18.61C11.74 18.85 11.39 19 11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16M13 12.5C13 13.33 12.33 14 11.5 14S10 13.33 10 12.5 10.67 11 11.5 11 13 11.67 13 12.5M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M18 18.5L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18Z";
var mdiCookieRefreshOutline = "M13 12.5C13 13.33 12.33 14 11.5 14S10 13.33 10 12.5 10.67 11 11.5 11 13 11.67 13 12.5M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M15 10H16V10.5C16 11.33 16.67 12 17.5 12H19L19 12.03C19.69 12.09 20.36 12.24 21 12.5C21 12.33 21 12.17 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.17 21 12.33 21 12.5 21C12.24 20.36 12.09 19.69 12.03 19C11.8 19 11.56 19 11.32 18.96C11.59 18.9 11.81 18.76 12 18.58C12 18.55 12 18.53 12 18.5C12 17.87 12.1 17.27 12.26 16.69C12 16.28 11.53 16 11 16C10.17 16 9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H15M22 18.5V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22Z";
var mdiCookieRemove = "M16.5 13C16.8 13 17.08 13.09 17.32 13.24C17.85 13.09 18.42 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 17.22 13.78 15.63 15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13M6.5 13C5.67 13 5 12.33 5 11.5S5.67 10 6.5 10 8 10.67 8 11.5 7.33 13 6.5 13M8 7.5C8 6.67 8.67 6 9.5 6S11 6.67 11 7.5 10.33 9 9.5 9 8 8.33 8 7.5M11 19C10.17 19 9.5 18.33 9.5 17.5S10.17 16 11 16 12.5 16.67 12.5 17.5 11.83 19 11 19M11.5 14C10.67 14 10 13.33 10 12.5S10.67 11 11.5 11 13 11.67 13 12.5 12.33 14 11.5 14M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z";
var mdiCookieRemoveOutline = "M17.32 13.24C16.45 13.5 15.66 13.95 15 14.53C15 14.5 15 14.5 15 14.5C15 13.67 15.67 13 16.5 13C16.8 13 17.08 13.09 17.32 13.24M16 10V10.5C16 11.33 16.67 12 17.5 12H19C19 12.34 18.97 12.68 18.92 13C18.95 13 18.97 13 19 13C19.66 13 20.3 13.12 20.89 13.32C20.96 12.89 21 12.45 21 12C21 11.5 20.96 11 20.87 10.5C20.6 10 20 10 20 10H18V9C18 8 17 8 17 8H15V7C15 6 14 6 14 6H13V4C13 3 12 3 12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C12.45 21 12.89 20.96 13.32 20.89C13.12 20.3 13 19.66 13 19C13 18.97 13 18.95 13 18.92C12.46 19 11.9 19 11.32 18.96C12 18.82 12.5 18.22 12.5 17.5C12.5 16.67 11.83 16 11 16S9.5 16.67 9.5 17.5C9.5 18 9.76 18.47 10.16 18.74C7.54 18.04 5.5 15.81 5.09 13.12C5 12.61 5 12.11 5 11.62C5.07 12.39 5.71 13 6.5 13C7.33 13 8 12.33 8 11.5S7.33 10 6.5 10C5.82 10 5.25 10.46 5.07 11.08C5.47 8 7.91 5.5 11 5.07V6.5C11 7.33 11.67 8 12.5 8H13V8.5C13 9.33 13.67 10 14.5 10H16M11 7.5C11 6.67 10.33 6 9.5 6S8 6.67 8 7.5 8.67 9 9.5 9 11 8.33 11 7.5M11.5 14C12.33 14 13 13.33 13 12.5S12.33 11 11.5 11 10 11.67 10 12.5 10.67 14 11.5 14M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z";
var mdiCookieSettings = "M20.87 9.5C20.6 9 20 9 20 9H18V8C18 7 17 7 17 7H15V6C15 5 14 5 14 5H13V3C13 2 12 2 12 2C7.03 2 3 6.03 3 11S7.03 20 12 20 21 15.97 21 11C21 10.5 20.96 10 20.87 9.5M6.5 12C5.67 12 5 11.33 5 10.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12M8 6.5C8 5.67 8.67 5 9.5 5S11 5.67 11 6.5 10.33 8 9.5 8 8 7.33 8 6.5M11 18C10.17 18 9.5 17.33 9.5 16.5S10.17 15 11 15 12.5 15.67 12.5 16.5 11.83 18 11 18M11.5 13C10.67 13 10 12.33 10 11.5S10.67 10 11.5 10 13 10.67 13 11.5 12.33 13 11.5 13M16.5 15C15.67 15 15 14.33 15 13.5S15.67 12 16.5 12 18 12.67 18 13.5 17.33 15 16.5 15M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15V22Z";
var mdiCookieSettingsOutline = "M13 11.5C13 12.33 12.33 13 11.5 13S10 12.33 10 11.5 10.67 10 11.5 10 13 10.67 13 11.5M11 6.5C11 5.67 10.33 5 9.5 5S8 5.67 8 6.5 8.67 8 9.5 8 11 7.33 11 6.5M21 11C21 15.97 16.97 20 12 20S3 15.97 3 11 7.03 2 12 2C12 2 13 2 13 3V5H14C14 5 15 5 15 6V7H17C17 7 18 7 18 8V9H20C20 9 20.6 9 20.87 9.5C20.96 10 21 10.5 21 11M19 11H17.5C16.67 11 16 10.33 16 9.5V9H14.5C13.67 9 13 8.33 13 7.5V7H12.5C11.67 7 11 6.33 11 5.5V4.07C7.91 4.5 5.47 7 5.07 10.08C5.25 9.46 5.82 9 6.5 9C7.33 9 8 9.67 8 10.5S7.33 12 6.5 12C5.71 12 5.07 11.39 5 10.62C5 11.11 5 11.61 5.09 12.12C5.5 14.81 7.54 17.04 10.16 17.74C9.76 17.47 9.5 17 9.5 16.5C9.5 15.67 10.17 15 11 15S12.5 15.67 12.5 16.5C12.5 17.22 12 17.82 11.32 17.96C15.5 18.36 19 15.08 19 11M16.5 12C15.67 12 15 12.67 15 13.5S15.67 15 16.5 15 18 14.33 18 13.5 17.33 12 16.5 12M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z";
var mdiCoolantTemperature = "M11.5,1A1.5,1.5 0 0,0 10,2.5V14.5C9.37,14.97 9,15.71 9,16.5A2.5,2.5 0 0,0 11.5,19A2.5,2.5 0 0,0 14,16.5C14,15.71 13.63,15 13,14.5V13H17V11H13V9H17V7H13V5H17V3H13V2.5A1.5,1.5 0 0,0 11.5,1M0,15V17C0.67,17 0.79,17.21 1.29,17.71C1.79,18.21 2.67,19 4,19C5.33,19 6.21,18.21 6.71,17.71C6.82,17.59 6.91,17.5 7,17.41V15.16C6.21,15.42 5.65,15.93 5.29,16.29C4.79,16.79 4.67,17 4,17C3.33,17 3.21,16.79 2.71,16.29C2.21,15.79 1.33,15 0,15M16,15V17C16.67,17 16.79,17.21 17.29,17.71C17.79,18.21 18.67,19 20,19C21.33,19 22.21,18.21 22.71,17.71C23.21,17.21 23.33,17 24,17V15C22.67,15 21.79,15.79 21.29,16.29C20.79,16.79 20.67,17 20,17C19.33,17 19.21,16.79 18.71,16.29C18.21,15.79 17.33,15 16,15M8,20C6.67,20 5.79,20.79 5.29,21.29C4.79,21.79 4.67,22 4,22C3.33,22 3.21,21.79 2.71,21.29C2.35,20.93 1.79,20.42 1,20.16V22.41C1.09,22.5 1.18,22.59 1.29,22.71C1.79,23.21 2.67,24 4,24C5.33,24 6.21,23.21 6.71,22.71C7.21,22.21 7.33,22 8,22C8.67,22 8.79,22.21 9.29,22.71C9.73,23.14 10.44,23.8 11.5,23.96C11.66,24 11.83,24 12,24C13.33,24 14.21,23.21 14.71,22.71C15.21,22.21 15.33,22 16,22C16.67,22 16.79,22.21 17.29,22.71C17.79,23.21 18.67,24 20,24C21.33,24 22.21,23.21 22.71,22.71C22.82,22.59 22.91,22.5 23,22.41V20.16C22.21,20.42 21.65,20.93 21.29,21.29C20.79,21.79 20.67,22 20,22C19.33,22 19.21,21.79 18.71,21.29C18.21,20.79 17.33,20 16,20C14.67,20 13.79,20.79 13.29,21.29C12.79,21.79 12.67,22 12,22C11.78,22 11.63,21.97 11.5,21.92C11.22,21.82 11.05,21.63 10.71,21.29C10.21,20.79 9.33,20 8,20Z";
var mdiCopyright = "M10.08,10.86C10.13,10.53 10.24,10.24 10.38,10C10.5,9.74 10.72,9.53 10.97,9.37C11.21,9.22 11.5,9.15 11.88,9.14C12.11,9.15 12.32,9.19 12.5,9.27C12.71,9.36 12.89,9.5 13.03,9.63C13.17,9.78 13.28,9.96 13.37,10.16C13.46,10.36 13.5,10.58 13.5,10.8H15.3C15.28,10.33 15.19,9.9 15,9.5C14.85,9.12 14.62,8.78 14.32,8.5C14,8.22 13.66,8 13.24,7.84C12.82,7.68 12.36,7.61 11.85,7.61C11.2,7.61 10.63,7.72 10.15,7.95C9.67,8.18 9.27,8.5 8.95,8.87C8.63,9.26 8.39,9.71 8.24,10.23C8.09,10.75 8,11.29 8,11.87V12.14C8,12.72 8.08,13.26 8.23,13.78C8.38,14.3 8.62,14.75 8.94,15.13C9.26,15.5 9.66,15.82 10.14,16.04C10.62,16.26 11.19,16.38 11.84,16.38C12.31,16.38 12.75,16.3 13.16,16.15C13.57,16 13.93,15.79 14.24,15.5C14.55,15.25 14.8,14.94 15,14.58C15.16,14.22 15.27,13.84 15.28,13.43H13.5C13.5,13.64 13.43,13.83 13.34,14C13.25,14.19 13.13,14.34 13,14.47C12.83,14.6 12.66,14.7 12.46,14.77C12.27,14.84 12.07,14.86 11.86,14.87C11.5,14.86 11.2,14.79 10.97,14.64C10.72,14.5 10.5,14.27 10.38,14C10.24,13.77 10.13,13.47 10.08,13.14C10.03,12.81 10,12.47 10,12.14V11.87C10,11.5 10.03,11.19 10.08,10.86M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20Z";
var mdiCordova = "M20.18,21.55H16.94L17.17,18.82H15.58L15.35,21.55H8.65L8.42,18.82H6.83L7.06,21.55H3.82L2,9.73L6.55,2.45H17.45L22,9.73L20.18,21.55M16.55,6.09H13.62L13.82,7.45H10.18L10.38,6.09H7.45L5.64,9.73L6.55,17H17.45L18.36,9.73L16.55,6.09M14.95,14.59C14.7,14.59 14.5,13.83 14.5,12.9C14.5,11.96 14.7,11.2 14.95,11.2C15.21,11.2 15.41,11.96 15.41,12.9C15.41,13.83 15.21,14.59 14.95,14.59M9.22,14.73C8.96,14.73 8.76,13.97 8.76,13.04C8.76,12.1 8.96,11.35 9.22,11.35C9.47,11.35 9.67,12.1 9.67,13.04C9.67,13.97 9.47,14.73 9.22,14.73Z";
var mdiCorn = "M11,12H8.82C9.62,12.5 10.35,13.07 11,13.68V12M7,11C7.27,5.88 9.37,2 12,2C14.66,2 16.77,5.94 17,11.12C18.5,10.43 20.17,10 22,10C16.25,12.57 18.25,22 12,22C6,22 7.93,12.57 2,10C3.82,10 5.5,10.4 7,11M11,11V9H8.24L8.03,11H11M11,8V6H9.05C8.8,6.6 8.6,7.27 8.43,8H11M11,5V3.3C10.45,3.63 9.95,4.22 9.5,5H11M12,3V5H13V6H12V8H14V9H12V11H15V12H12V14H14V15H12.23C13.42,16.45 14.15,18 14.32,19.23C15.31,17.56 15.96,14.84 16,11.76C15.94,7 14.13,3 12,3Z";
var mdiCornOff = "M22.1 21.5L2.4 1.7L1.1 3L7.2 9.1C7.1 9.7 7 10.3 7 11C5.5 10.4 3.8 10 2 10C7.9 12.6 6 22 12 22C14.5 22 15.7 20.5 16.6 18.5L20.9 22.8L22.1 21.5M8.1 10L9.1 11H8L8.1 10M8.8 12H10.1L11 12.9V13.7C10.3 13.1 9.6 12.5 8.8 12M14.3 19.2C14.1 18 13.4 16.4 12.2 15H13.1L15.2 17.1C15 17.9 14.7 18.6 14.3 19.2M11 6V7.8L12.2 9H14V8H12V6H13V5H12V3C14.1 3 15.9 7 16 11.8V12.8L18 14.8C18.8 12.8 19.9 10.9 22 10C20.2 10 18.5 10.4 17 11.1C16.8 5.9 14.7 2 12 2C10.5 2 9.2 3.2 8.3 5.1L9.2 6H11M11 3.3V5H9.5C10 4.2 10.5 3.6 11 3.3M15 11.8L14.2 11H15V11.8Z";
var mdiCosineWave = "M22 2V4C20.26 4 19 8.58 17.96 12.27C16.57 17.27 15.26 22 12 22C8.74 22 7.43 17.27 6.04 12.27C5 8.58 3.74 4 2 4V2C5.26 2 6.57 6.73 7.96 11.73C9 15.42 10.26 20 12 20C13.74 20 15 15.42 16.04 11.73C17.43 6.73 18.74 2 22 2Z";
var mdiCounter = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H11V6H4M20,18V6H18.76C19,6.54 18.95,7.07 18.95,7.13C18.88,7.8 18.41,8.5 18.24,8.75L15.91,11.3L19.23,11.28L19.24,12.5L14.04,12.47L14,11.47C14,11.47 17.05,8.24 17.2,7.95C17.34,7.67 17.91,6 16.5,6C15.27,6.05 15.41,7.3 15.41,7.3L13.87,7.31C13.87,7.31 13.88,6.65 14.25,6H13V18H15.58L15.57,17.14L16.54,17.13C16.54,17.13 17.45,16.97 17.46,16.08C17.5,15.08 16.65,15.08 16.5,15.08C16.37,15.08 15.43,15.13 15.43,15.95H13.91C13.91,15.95 13.95,13.89 16.5,13.89C19.1,13.89 18.96,15.91 18.96,15.91C18.96,15.91 19,17.16 17.85,17.63L18.37,18H20M8.92,16H7.42V10.2L5.62,10.76V9.53L8.76,8.41H8.92V16Z";
var mdiCow = "M10.5,18A0.5,0.5 0 0,1 11,18.5A0.5,0.5 0 0,1 10.5,19A0.5,0.5 0 0,1 10,18.5A0.5,0.5 0 0,1 10.5,18M13.5,18A0.5,0.5 0 0,1 14,18.5A0.5,0.5 0 0,1 13.5,19A0.5,0.5 0 0,1 13,18.5A0.5,0.5 0 0,1 13.5,18M10,11A1,1 0 0,1 11,12A1,1 0 0,1 10,13A1,1 0 0,1 9,12A1,1 0 0,1 10,11M14,11A1,1 0 0,1 15,12A1,1 0 0,1 14,13A1,1 0 0,1 13,12A1,1 0 0,1 14,11M18,18C18,20.21 15.31,22 12,22C8.69,22 6,20.21 6,18C6,17.1 6.45,16.27 7.2,15.6C6.45,14.6 6,13.35 6,12L6.12,10.78C5.58,10.93 4.93,10.93 4.4,10.78C3.38,10.5 1.84,9.35 2.07,8.55C2.3,7.75 4.21,7.6 5.23,7.9C5.82,8.07 6.45,8.5 6.82,8.96L7.39,8.15C6.79,7.05 7,4 10,3L9.91,3.14V3.14C9.63,3.58 8.91,4.97 9.67,6.47C10.39,6.17 11.17,6 12,6C12.83,6 13.61,6.17 14.33,6.47C15.09,4.97 14.37,3.58 14.09,3.14L14,3C17,4 17.21,7.05 16.61,8.15L17.18,8.96C17.55,8.5 18.18,8.07 18.77,7.9C19.79,7.6 21.7,7.75 21.93,8.55C22.16,9.35 20.62,10.5 19.6,10.78C19.07,10.93 18.42,10.93 17.88,10.78L18,12C18,13.35 17.55,14.6 16.8,15.6C17.55,16.27 18,17.1 18,18M12,16C9.79,16 8,16.9 8,18C8,19.1 9.79,20 12,20C14.21,20 16,19.1 16,18C16,16.9 14.21,16 12,16M12,14C13.12,14 14.17,14.21 15.07,14.56C15.65,13.87 16,13 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13 8.35,13.87 8.93,14.56C9.83,14.21 10.88,14 12,14M14.09,3.14V3.14Z";
var mdiCpu32Bit = "M9,3V5H7A2,2 0 0,0 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11H21V9H19V7A2,2 0 0,0 17,5H15V3H13V5H11V3M7,9H10.5A1,1 0 0,1 11.5,10V14A1,1 0 0,1 10.5,15H7V13.5H10V12.75H8.5V11.25H10V10.5H7M12.5,9H16A1,1 0 0,1 17,10V11.75A1,1 0 0,1 16,12.75H14V13.5H17V15H12.5V12.25A1,1 0 0,1 13.5,11.25H15.5V10.5H12.5";
var mdiCpu64Bit = "M9,3V5H7A2,2 0 0,0 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11H21V9H19V7A2,2 0 0,0 17,5H15V3H13V5H11V3M8,9H11.5V10.5H8.5V11.25H10.5A1,1 0 0,1 11.5,12.25V14A1,1 0 0,1 10.5,15H8A1,1 0 0,1 7,14V10A1,1 0 0,1 8,9M12.5,9H14V11H15.5V9H17V15H15.5V12.5H12.5M8.5,12.75V13.5H10V12.75";
var mdiCrane = "M20,6V5A1,1 0 0,0 19,4H9V3H6V4H5V6H6V15H5V13H3V15H2V17H3V21H5V17H10V21H12V19.92L12,17H13V15H12V13H10V15H9V6H17V10.62C16.53,10.79 16.19,11.23 16.19,11.76C16.19,12.2 16.43,12.6 16.8,12.82V14H17.42C17.76,14 18.03,14.28 18.03,14.62C18.03,14.96 17.76,15.24 17.42,15.24C17.2,15.24 17,15.12 16.89,14.93C16.71,14.64 16.34,14.54 16.05,14.71C15.75,14.87 15.65,15.25 15.82,15.55C16.15,16.11 16.76,16.47 17.42,16.47C18.43,16.47 19.26,15.64 19.26,14.62C19.26,13.84 18.76,13.14 18.03,12.88V12.82C18.41,12.6 18.65,12.2 18.65,11.76C18.65,11.3 18.38,10.91 18,10.7V6H20M8,13.66L7,14.66V13.24L8,12.24V13.66M8,10.71L7,11.71V10.29L8,9.29V10.71M7,8.71V7.29L8,6.29V7.71L7,8.71Z";
var mdiCreation = "M19,1L17.74,3.75L15,5L17.74,6.26L19,9L20.25,6.26L23,5L20.25,3.75M9,4L6.5,9.5L1,12L6.5,14.5L9,20L11.5,14.5L17,12L11.5,9.5M19,15L17.74,17.74L15,19L17.74,20.25L19,23L20.25,20.25L23,19L20.25,17.74";
var mdiCreativeCommons = "M11.89,10.34L10.55,11.04C10.41,10.74 10.24,10.53 10.03,10.41C9.82,10.29 9.62,10.23 9.45,10.23C8.55,10.23 8.11,10.82 8.11,12C8.11,12.54 8.22,12.97 8.45,13.29C8.67,13.61 9,13.77 9.45,13.77C10.03,13.77 10.44,13.5 10.68,12.91L11.91,13.54C11.65,14.03 11.29,14.41 10.82,14.69C10.36,14.97 9.85,15.11 9.29,15.11C8.39,15.11 7.67,14.84 7.12,14.29C6.58,13.74 6.3,13 6.3,12C6.3,11.05 6.58,10.3 7.13,9.74C7.69,9.18 8.39,8.9 9.23,8.9C10.47,8.89 11.36,9.38 11.89,10.34M17.66,10.34L16.34,11.04C16.2,10.74 16,10.53 15.81,10.41C15.6,10.29 15.4,10.23 15.21,10.23C14.32,10.23 13.87,10.82 13.87,12C13.87,12.54 14,12.97 14.21,13.29C14.44,13.61 14.77,13.77 15.21,13.77C15.8,13.77 16.21,13.5 16.45,12.91L17.7,13.54C17.42,14.03 17.05,14.41 16.59,14.69C16.12,14.97 15.62,15.11 15.07,15.11C14.17,15.11 13.44,14.84 12.9,14.29C12.36,13.74 12.09,13 12.09,12C12.09,11.05 12.37,10.3 12.92,9.74C13.47,9.18 14.17,8.9 15,8.9C16.26,8.89 17.14,9.38 17.66,10.34M12,3.5A8.5,8.5 0 0,1 20.5,12A8.5,8.5 0 0,1 12,20.5A8.5,8.5 0 0,1 3.5,12A8.5,8.5 0 0,1 12,3.5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiCreditCard = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 11H4V8H20Z";
var mdiCreditCardCheck = "M20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.03 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13C20.06 13 21.09 13.28 22 13.81V6C22 4.89 21.11 4 20 4M20 11H4V8H20M17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25L17.75 22";
var mdiCreditCardCheckOutline = "M13 19C13 18.66 13.04 18.33 13.09 18H3V12H19V13C19.7 13 20.37 13.13 21 13.35V6C21 4.89 20.11 4 19 4H3C1.89 4 1 4.89 1 6V18C1 19.1 1.89 20 3 20H13.09C13.04 19.67 13 19.34 13 19M3 6H19V8H3V6M17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25L17.75 22";
var mdiCreditCardClock = "M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14M24,17A7,7 0 0,1 17,24C14.21,24 11.8,22.36 10.67,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V12.1C23.24,13.36 24,15.09 24,17M17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12M20,10V7H4V10H20Z";
var mdiCreditCardClockOutline = "M16,14H17.5V16.82L19.94,18.23L19.19,19.53L16,17.69V14M24,17A7,7 0 0,1 17,24C14.21,24 11.8,22.36 10.67,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V12.1C23.24,13.36 24,15.09 24,17M10,17C10,15.04 10.81,13.27 12.1,12H4V18H10.07C10,17.67 10,17.34 10,17M17,12A5,5 0 0,0 12,17A5,5 0 0,0 17,22A5,5 0 0,0 22,17A5,5 0 0,0 17,12M20,8V6H4V8H20Z";
var mdiCreditCardMarker = "M18.5 12C16.6 12 15 13.6 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5C22 13.6 20.4 12 18.5 12M18.5 16.8C17.8 16.8 17.3 16.2 17.3 15.6C17.3 14.9 17.9 14.4 18.5 14.4S19.7 15 19.7 15.6C19.8 16.2 19.2 16.8 18.5 16.8M14.55 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V11.3C21.42 10.81 20.74 10.44 20 10.22V8H4V11H15.39C13.96 12 13 13.66 13 15.5C13 17 13.72 18.61 14.55 20Z";
var mdiCreditCardMarkerOutline = "M13.5,18H4V12H14.3C15.3,10.8 16.8,10 18.5,10C19.8,10 21,10.5 22,11.3V6A2,2 0 0,0 20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H14.6C14.2,19.4 13.8,18.7 13.5,18M4,6H20V8H4V6M18.5,12C16.6,12 15,13.6 15,15.5C15,18.1 18.5,22 18.5,22C18.5,22 22,18.1 22,15.5C22,13.6 20.4,12 18.5,12M18.5,16.8C17.8,16.8 17.3,16.2 17.3,15.6C17.3,14.9 17.9,14.4 18.5,14.4C19.1,14.4 19.7,15 19.7,15.6C19.8,16.2 19.2,16.8 18.5,16.8Z";
var mdiCreditCardMinus = "M20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.03 19.67 13 19.34 13 19C13 15.69 15.69 13 19 13C20.06 13 21.09 13.28 22 13.81V6C22 4.89 21.11 4 20 4M20 11H4V8H20M23 18V20H15V18H23Z";
var mdiCreditCardMinusOutline = "M24 18V20H16V18M19 8V6H3V8H19M19 12H3V18H14V20H3C1.89 20 1 19.1 1 18V6C1 4.89 1.89 4 3 4H19C20.11 4 21 4.89 21 6V13H19V12Z";
var mdiCreditCardMultiple = "M21 9V6H7V9H21M21 3A2 2 0 0 1 23 5V15A2 2 0 0 1 21 17H7A2 2 0 0 1 5 15V5A2 2 0 0 1 7 3H21M3 19H18V21H3A2 2 0 0 1 1 19V8H3Z";
var mdiCreditCardMultipleOutline = "M21,8V6H7V8H21M21,16V11H7V16H21M21,4A2,2 0 0,1 23,6V16A2,2 0 0,1 21,18H7C5.89,18 5,17.1 5,16V6C5,4.89 5.89,4 7,4H21M3,20H18V22H3A2,2 0 0,1 1,20V9H3V20Z";
var mdiCreditCardOff = "M11.2 8L7.2 4H20A2 2 0 0 1 22 6V18A1.91 1.91 0 0 1 21.88 18.68L14.2 11H20V8M20.84 22.73L18.11 20H4A2 2 0 0 1 2 18V6A2 2 0 0 1 2.65 4.54L1.11 3L2.39 1.73L22.11 21.46M9.11 11L6.11 8H4V11Z";
var mdiCreditCardOffOutline = "M0.93,4.2L2.21,2.93L20,20.72L18.73,22L16.73,20H4C2.89,20 2,19.1 2,18V6C2,5.78 2.04,5.57 2.11,5.38L0.93,4.2M20,8V6H7.82L5.82,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L19.82,18H20V12H13.82L9.82,8H20M4,8H4.73L4,7.27V8M4,12V18H14.73L8.73,12H4Z";
var mdiCreditCardOutline = "M20,8H4V6H20M20,18H4V12H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z";
var mdiCreditCardPlus = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 19 13A5.88 5.88 0 0 1 22 13.81V6A2 2 0 0 0 20 4M20 11H4V8H20M20 15V18H23V20H20V23H18V20H15V18H18V15Z";
var mdiCreditCardPlusOutline = "M21,18H24V20H21V23H19V20H16V18H19V15H21V18M19,8V6H3V8H19M19,12H3V18H14V20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H19A2,2 0 0,1 21,6V13H19V12Z";
var mdiCreditCardRefresh = "M20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H11.68C11.57 19.5 11.5 19 11.5 18.5C11.5 14.91 14.41 12 18 12C19.5 12 20.9 12.53 22 13.4V6C22 4.89 21.11 4 20 4M20 11H4V8H20V11M20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67Z";
var mdiCreditCardRefreshOutline = "M20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H11.68C11.57 19.5 11.5 19 11.5 18.5C11.5 18.33 11.5 18.17 11.53 18H4V12H20V12.32C20.74 12.56 21.41 12.93 22 13.4V6C22 4.89 21.1 4 20 4M20 8H4V6H20V8M20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67Z";
var mdiCreditCardRefund = "M18 11H6A2 2 0 0 0 4 13V21A2 2 0 0 0 6 23H18A2 2 0 0 0 20 21V13A2 2 0 0 0 18 11M18 17H6V14H18M17 5V10H15.5V6.5H9.88L12.3 8.93L11.24 10L7 5.75L11.24 1.5L12.3 2.57L9.88 5Z";
var mdiCreditCardRefundOutline = "M18,11H6A2,2 0 0,0 4,13V21A2,2 0 0,0 6,23H18A2,2 0 0,0 20,21V13A2,2 0 0,0 18,11M18,21H6V17H18V21M18,15H6V13H18V15M17,5V10H15.5V6.5H9.88L12.3,8.93L11.24,10L7,5.75L11.24,1.5L12.3,2.57L9.88,5H17Z";
var mdiCreditCardRemove = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 19 13A5.88 5.88 0 0 1 22 13.81V6A2 2 0 0 0 20 4M20 11H4V8H20M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z";
var mdiCreditCardRemoveOutline = "M13 19C13 18.66 13.04 18.33 13.09 18H3V12H19V13C19.7 13 20.37 13.13 21 13.35V6C21 4.89 20.11 4 19 4H3C1.89 4 1 4.89 1 6V18C1 19.1 1.89 20 3 20H13.09C13.04 19.67 13 19.34 13 19M3 6H19V8H3V6M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88Z";
var mdiCreditCardScan = "M18 6H6A2 2 0 0 0 4 8V16A2 2 0 0 0 6 18H18A2 2 0 0 0 20 16V8A2 2 0 0 0 18 6M18 12H6V9H18M2 4H6V2H2A2 2 0 0 0 0 4V8H2V4M22 2H18V4H22V8H24V4A2 2 0 0 0 22 2M2 16H0V20A2 2 0 0 0 2 22H6V20H2V16M22 20H18V22H22A2 2 0 0 0 24 20V16H22V20";
var mdiCreditCardScanOutline = "M2,4H6V2H2A2,2 0 0,0 0,4V8H2V4M22,2H18V4H22V8H24V4A2,2 0 0,0 22,2M2,16H0V20A2,2 0 0,0 2,22H6V20H2V16M22,20H18V22H22A2,2 0 0,0 24,20V16H22V20M4,8V16A2,2 0 0,0 6,18H18A2,2 0 0,0 20,16V8A2,2 0 0,0 18,6H6A2,2 0 0,0 4,8M6,16V12H18V16H6M18,8V10H6V8H18Z";
var mdiCreditCardSearch = "M11.82 11C9.4 13.5 9.4 17.5 11.82 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V12.06C21.74 11.65 21.45 11.26 21.1 10.9C20.76 10.57 20.39 10.27 20 10.03V8H4V11H11.82M23.39 21L22 22.39L18.88 19.32C18.19 19.75 17.37 20 16.5 20C14 20 12 18 12 15.5S14 11 16.5 11 21 13 21 15.5C21 16.38 20.75 17.21 20.31 17.9L23.39 21M19 15.5C19 14.12 17.88 13 16.5 13S14 14.12 14 15.5 15.12 18 16.5 18 19 16.88 19 15.5Z";
var mdiCreditCardSearchOutline = "M11.03 12C11.28 11.61 11.57 11.24 11.9 10.9C14.44 8.37 18.56 8.37 21.1 10.9C21.45 11.26 21.74 11.65 22 12.06V6C22 4.89 21.1 4 20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H11.82C11.24 19.4 10.8 18.72 10.5 18H4V12H11.03M4 6H20V8H4V6M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z";
var mdiCreditCardSettings = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 11H4V8H20M7 22H9V24H7V22M11 22H13V24H11V22M15 22H17V24H15Z";
var mdiCreditCardSettingsOutline = "M20,8H4V6H20M20,18H4V12H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z";
var mdiCreditCardSync = "M13 17.5C13 18.39 13.18 19.23 13.5 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H20C21.11 4 22 4.89 22 6V11.5C21.23 11.18 20.39 11 19.5 11H20V8H4V11H19.5C15.91 11 13 13.91 13 17.5M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z";
var mdiCreditCardSyncOutline = "M4 18V12H16.05C17.05 11.37 18.23 11 19.5 11C20.39 11 21.23 11.18 22 11.5V6C22 4.89 21.1 4 20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.5C13.24 19.38 13.08 18.7 13.03 18H4M4 6H20V8H4V6M23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L19 12V13.5C21.21 13.5 23 15.29 23 17.5M19 18.5L21.25 20.75L19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5Z";
var mdiCreditCardWireless = "M4.93 4.92L6.34 6.33C9.46 3.2 14.53 3.2 17.66 6.33L19.07 4.92C15.17 1 8.84 1 4.93 4.92M7.76 7.75L9.17 9.16C10.73 7.6 13.26 7.6 14.83 9.16L16.24 7.75C13.9 5.41 10.1 5.41 7.76 7.75M18 11H6C4.89 11 4 11.9 4 13V21C4 22.11 4.89 23 6 23H18C19.11 23 20 22.11 20 21V13C20 11.9 19.11 11 18 11M18 17H6V14H18V17Z";
var mdiCreditCardWirelessOff = "M12 2C9.85 2 7.7 2.69 5.9 4.08L7.32 5.5C10.45 3.24 14.84 3.5 17.66 6.33L19.07 4.92C17.12 2.96 14.56 2 12 2M3.28 4L2 5.27L7.73 11H6C4.89 11 4 11.9 4 13V21C4 22.11 4.89 23 6 23H18C18.5 23 18.92 22.82 19.27 22.54L19.73 23L21 21.72M12 6C10.87 6 9.75 6.31 8.77 6.94L10.24 8.41C11.73 7.68 13.58 7.92 14.83 9.16L16.24 7.75C15.07 6.58 13.54 6 12 6M12.82 11L15.82 14H18V16.18L20 18.18V13C20 11.9 19.11 11 18 11M6 14H10.73L13.73 17H6Z";
var mdiCreditCardWirelessOffOutline = "M12 2C9.85 2 7.7 2.69 5.9 4.08L7.32 5.5C10.45 3.24 14.84 3.5 17.66 6.33L19.07 4.92C17.12 2.96 14.56 2 12 2M3.28 4L2 5.27L7.73 11H6C4.89 11 4 11.9 4 13V21C4 22.11 4.89 23 6 23H18C18.47 23 18.92 22.84 19.27 22.54L19.73 23L21 21.72M12 6C10.87 6 9.75 6.31 8.77 6.94L10.24 8.41C11.73 7.68 13.58 7.92 14.83 9.16L16.24 7.75C15.07 6.58 13.54 6 12 6M12.82 11L14.82 13H18V15H16.82L20 18.18V13C20 11.9 19.11 11 18 11M6 13H9.73L11.73 15H6M6 17H13.73L17.73 21H6Z";
var mdiCreditCardWirelessOutline = "M18,11H6A2,2 0 0,0 4,13V21A2,2 0 0,0 6,23H18A2,2 0 0,0 20,21V13A2,2 0 0,0 18,11M18,21H6V17H18V21M18,15H6V13H18V15M4.93,4.92L6.34,6.33C9.46,3.2 14.53,3.2 17.66,6.33L19.07,4.92C15.17,1 8.84,1 4.93,4.92M7.76,7.75L9.17,9.16C10.73,7.6 13.26,7.6 14.83,9.16L16.24,7.75C13.9,5.41 10.1,5.41 7.76,7.75Z";
var mdiCricket = "M14.34,17.77L15.75,16.36L20,20.58L18.56,22L14.34,17.77M18.5,2A3.5,3.5 0 0,1 22,5.5A3.5,3.5 0 0,1 18.5,9A3.5,3.5 0 0,1 15,5.5A3.5,3.5 0 0,1 18.5,2M2.24,7.11L5.07,4.28C5.46,3.89 6.09,3.89 6.5,4.28L14.97,12.77C15.36,13.16 15.36,13.79 14.97,14.18L12.14,17C11.75,17.4 11.12,17.4 10.72,17L2.24,8.53C1.85,8.13 1.85,7.5 2.24,7.11Z";
var mdiCrop = "M7,17V1H5V5H1V7H5V17A2,2 0 0,0 7,19H17V23H19V19H23V17M17,15H19V7C19,5.89 18.1,5 17,5H9V7H17V15Z";
var mdiCropFree = "M19,3H15V5H19V9H21V5C21,3.89 20.1,3 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M5,15H3V19A2,2 0 0,0 5,21H9V19H5M3,5V9H5V5H9V3H5A2,2 0 0,0 3,5Z";
var mdiCropLandscape = "M19,17H5V7H19M19,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H19A2,2 0 0,0 21,17V7C21,5.89 20.1,5 19,5Z";
var mdiCropPortrait = "M17,19H7V5H17M17,3H7A2,2 0 0,0 5,5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V5C19,3.89 18.1,3 17,3Z";
var mdiCropRotate = "M7.47,21.5C4.2,19.93 1.86,16.76 1.5,13H0C0.5,19.16 5.66,24 11.95,24C12.18,24 12.39,24 12.61,23.97L8.8,20.15L7.47,21.5M12.05,0C11.82,0 11.61,0 11.39,0.04L15.2,3.85L16.53,2.5C19.8,4.07 22.14,7.24 22.5,11H24C23.5,4.84 18.34,0 12.05,0M16,14H18V8C18,6.89 17.1,6 16,6H10V8H16V14M8,16V4H6V6H4V8H6V16A2,2 0 0,0 8,18H16V20H18V18H20V16H8Z";
var mdiCropSquare = "M18,18H6V6H18M18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V6C20,4.89 19.1,4 18,4Z";
var mdiCrosshairs = "M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z";
var mdiCrosshairsGps = "M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z";
var mdiCrosshairsOff = "M20.94 11C20.5 6.83 17.17 3.5 13 3.06V1H11V3.06C9.87 3.18 8.81 3.5 7.84 4.03L9.34 5.53C10.16 5.19 11.06 5 12 5C15.87 5 19 8.13 19 12C19 12.94 18.81 13.84 18.5 14.65L20 16.15C20.5 15.19 20.82 14.13 20.95 13H23V11H20.94M3 4.27L5.04 6.31C3.97 7.62 3.25 9.23 3.06 11H1V13H3.06C3.5 17.17 6.83 20.5 11 20.94V23H13V20.94C14.77 20.74 16.38 20.03 17.69 18.96L19.73 21L21 19.73L4.27 3L3 4.27M16.27 17.54C15.09 18.45 13.61 19 12 19C8.13 19 5 15.87 5 12C5 10.39 5.55 8.91 6.46 7.73L16.27 17.54Z";
var mdiCrosshairsQuestion = "M3.05 13H1V11H3.05C3.5 6.83 6.83 3.5 11 3.05V1H13V3.05C17.17 3.5 20.5 6.83 20.95 11H23V13H20.95C20.5 17.17 17.17 20.5 13 20.95V23H11V20.95C6.83 20.5 3.5 17.17 3.05 13M12 5C8.13 5 5 8.13 5 12S8.13 19 12 19 19 15.87 19 12 15.87 5 12 5M11.13 17.25H12.88V15.5H11.13V17.25M12 6.75C10.07 6.75 8.5 8.32 8.5 10.25H10.25C10.25 9.28 11.03 8.5 12 8.5S13.75 9.28 13.75 10.25C13.75 12 11.13 11.78 11.13 14.63H12.88C12.88 12.66 15.5 12.44 15.5 10.25C15.5 8.32 13.93 6.75 12 6.75Z";
var mdiCrown = "M5 16L3 5L8.5 10L12 4L15.5 10L21 5L19 16H5M19 19C19 19.6 18.6 20 18 20H6C5.4 20 5 19.6 5 19V18H19V19Z";
var mdiCrownOutline = "M12 8L15 13.2L18 10.5L17.3 14H6.7L6 10.5L9 13.2L12 8M12 4L8.5 10L3 5L5 16H19L21 5L15.5 10L12 4M19 18H5V19C5 19.6 5.4 20 6 20H18C18.6 20 19 19.6 19 19V18Z";
var mdiCryengine = "M23.03,12.4M23.03,12.5V12.5C23,13 20.91,15.23 17.82,16.24C14.05,17.5 7.97,17.03 7.97,12.3C7.97,10.08 9.78,8.27 12,8.27C14.25,8.27 16.05,10.09 16.05,12.31C16.05,13.39 15.58,14.44 14.87,15.18C15.54,15.17 17.94,15 20.21,13.12C20.46,12.88 20.62,12.68 20.69,12.55C20.71,12.5 20.74,12.46 20.73,12.4C20.73,11.92 18.12,8.19 12.72,7.12C19.22,7.46 23,11.32 23.03,12.4V12.5H23.03M12,10C10.74,10 9.71,11.04 9.71,12.3C9.71,13.57 10.74,14.59 12,14.59C13.27,14.59 14.29,13.57 14.29,12.3C14.29,11.04 13.27,10 12,10M3.31,12.34C3.31,12.34 3.31,12.31 3.31,12.42V12.42C3.41,12.94 4.82,15.41 10.28,16.88C3.96,16.37 1.12,13.28 1.04,12.42H1.03C1.03,12.31 1.03,12.36 1.03,12.35C1.03,11.5 4.96,7.58 10.92,7.15C6.14,8.26 3.31,11.87 3.31,12.34V12.34Z";
var mdiCrystalBall = "M9.38,8.38L11.5,9.34L13.62,8.38L12.66,10.5L13.62,12.62L11.5,11.66L9.38,12.62L10.34,10.5L9.38,8.38M16.5,2.5L17.59,5.41L20.5,6.5L17.59,7.59L16.5,10.5L15.41,7.59L12.5,6.5L15.41,5.41L16.5,2.5M6,19H7V18A1,1 0 0,1 8,17H8.26C6,15.7 4.5,13.28 4.5,10.5A7.5,7.5 0 0,1 12,3C13.05,3 14.05,3.22 14.96,3.61L14.59,4.59L13.17,5.12C12.79,5.04 12.4,5 12,5A5.5,5.5 0 0,0 6.5,10.5A5.5,5.5 0 0,0 12,16C14.91,16 17.3,13.73 17.5,10.87L18.41,8.41L19.12,8.14C19.37,8.88 19.5,9.68 19.5,10.5C19.5,13.28 18,15.7 15.74,17H16A1,1 0 0,1 17,18V19H18A2,2 0 0,1 20,21V22H4V21A2,2 0 0,1 6,19Z";
var mdiCube = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15Z";
var mdiCubeOff = "M20.84 22.73L17.28 19.17L12.57 21.82C12.41 21.94 12.21 22 12 22S11.59 21.94 11.43 21.82L3.53 17.38C3.21 17.21 3 16.88 3 16.5V7.5C3 7.12 3.21 6.79 3.53 6.62L4.3 6.19L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M12 4.15L17.96 7.5L13.31 10.11L20.53 17.33C20.82 17.16 21 16.85 21 16.5V7.5C21 7.12 20.79 6.79 20.47 6.62L12.57 2.18C12.41 2.06 12.21 2 12 2S11.59 2.06 11.43 2.18L7.56 4.36L9 5.82L12 4.15Z";
var mdiCubeOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4.3 6.19L3.53 6.62C3.21 6.79 3 7.12 3 7.5V16.5C3 16.88 3.21 17.21 3.53 17.38L11.43 21.82C11.59 21.94 11.79 22 12 22S12.41 21.94 12.57 21.82L17.28 19.17L20.84 22.73L22.11 21.46M5 15.91V9.21L10.29 12.18L11 12.89V19.29L5 15.91M13 19.29V14.89L15.82 17.7L13 19.29M9 5.82L7.56 4.36L11.43 2.18C11.59 2.06 11.79 2 12 2S12.41 2.06 12.57 2.18L20.47 6.62C20.79 6.79 21 7.12 21 7.5V16.5C21 16.85 20.82 17.16 20.53 17.33L19 15.8V9.21L14.78 11.58L13.31 10.11L17.96 7.5L12 4.15L9 5.82Z";
var mdiCubeOutline = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z";
var mdiCubeScan = "M17,22V20H20V17H22V20.5C22,20.89 21.84,21.24 21.54,21.54C21.24,21.84 20.89,22 20.5,22H17M7,22H3.5C3.11,22 2.76,21.84 2.46,21.54C2.16,21.24 2,20.89 2,20.5V17H4V20H7V22M17,2H20.5C20.89,2 21.24,2.16 21.54,2.46C21.84,2.76 22,3.11 22,3.5V7H20V4H17V2M7,2V4H4V7H2V3.5C2,3.11 2.16,2.76 2.46,2.46C2.76,2.16 3.11,2 3.5,2H7M13,17.25L17,14.95V10.36L13,12.66V17.25M12,10.92L16,8.63L12,6.28L8,8.63L12,10.92M7,14.95L11,17.25V12.66L7,10.36V14.95M18.23,7.59C18.73,7.91 19,8.34 19,8.91V15.23C19,15.8 18.73,16.23 18.23,16.55L12.75,19.73C12.25,20.05 11.75,20.05 11.25,19.73L5.77,16.55C5.27,16.23 5,15.8 5,15.23V8.91C5,8.34 5.27,7.91 5.77,7.59L11.25,4.41C11.5,4.28 11.75,4.22 12,4.22C12.25,4.22 12.5,4.28 12.75,4.41L18.23,7.59Z";
var mdiCubeSend = "M16,4L9,8.04V15.96L16,20L23,15.96V8.04M16,6.31L19.8,8.5L16,10.69L12.21,8.5M0,7V9H7V7M11,10.11L15,12.42V17.11L11,14.81M21,10.11V14.81L17,17.11V12.42M2,11V13H7V11M4,15V17H7V15";
var mdiCubeUnfolded = "M6,9V4H13V9H23V16H18V21H11V16H1V9H6M16,16H13V19H16V16M8,9H11V6H8V9M6,14V11H3V14H6M18,11V14H21V11H18M13,11V14H16V11H13M8,11V14H11V11H8Z";
var mdiCup = "M18.32,8H5.67L5.23,4H18.77M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z";
var mdiCupOff = "M1,4.27L2.28,3L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.97,22 5.13,21.23 5,20.23L3.53,6.8L1,4.27M18.32,8L18.77,4H5.82L3.82,2H21L19.29,17.47L9.82,8H18.32Z";
var mdiCupOffOutline = "M3.83 2L5.83 4H18.78L17.5 15.66L19.3 17.5L21 2M2.27 3L1 4.27L3.53 6.8L5 20.23C5.13 21.23 5.97 22 7 22H17C17.47 22 17.91 21.82 18.26 21.54L19.73 23L21 21.73M5.78 9.06L16.73 20H7Z";
var mdiCupOutline = "M3 2L5 20.23C5.13 21.23 5.97 22 7 22H17C18 22 18.87 21.23 19 20.23L21 2H3M5.22 4H18.78L17 20H7L5.22 4Z";
var mdiCupWater = "M18.32,8H5.67L5.23,4H18.77M12,19A3,3 0 0,1 9,16C9,14 12,10.6 12,10.6C12,10.6 15,14 15,16A3,3 0 0,1 12,19M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z";
var mdiCupboard = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M10 18H8V15H10V18M16 18H14V15H16V18M17 12H7V9H17V12M17 7H7V4H17V7Z";
var mdiCupboardOutline = "M7 2C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2H7M7 4H17V7H7V4M7 9H17V12H7V9M7 14H11V19H7V14M13 14H17V19H13V14M8 15V18H10V15H8M14 15V18H16V15H14Z";
var mdiCupcake = "M12,1.5A2.5,2.5 0 0,1 14.5,4A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 9.5,4A2.5,2.5 0 0,1 12,1.5M15.87,5C18,5 20,7 20,9C22.7,9 22.7,13 20,13H4C1.3,13 1.3,9 4,9C4,7 6,5 8.13,5C8.57,6.73 10.14,8 12,8C13.86,8 15.43,6.73 15.87,5M5,15H8L9,22H7L5,15M10,15H14L13,22H11L10,15M16,15H19L17,22H15L16,15Z";
var mdiCurling = "M10,3V5C12.5,5 13.9,5.05 14.72,5.41C15.26,5.65 15.73,6.21 16.25,7H5V9H19.62L18.89,7.55C17.86,5.5 16.96,4.22 15.53,3.59C14.1,2.95 12.5,3 10,3M6,11C3.78,11 2,12.78 2,15V18C2,20.22 3.78,22 6,22H18C20.22,22 22,20.22 22,18V15C22,12.78 20.22,11 18,11H6Z";
var mdiCurrencyBdt = "M18.09,10.5V9H9.59V4.5A1.5,1.5 0 0,0 8.09,3A1.5,1.5 0 0,0 6.59,4.5A1.5,1.5 0 0,0 8.09,6V9H5.09V10.5H8.09V16.7C8.09,19.06 10,20.97 12.34,21C14.68,20.96 16.54,19.04 16.5,16.7C16.5,15.11 15.75,13.61 14.5,12.62C14.28,12.44 14.05,12.28 13.8,12.15C13.58,12.05 13.34,12 13.1,12C12.39,12 11.74,12.39 11.39,13C11.2,13.3 11.1,13.65 11.1,14C11.11,15.1 12,16 13.11,16C13.73,16 14.31,15.69 14.69,15.2C14.9,15.67 15,16.18 15,16.7C15.04,18.2 13.86,19.45 12.34,19.5C10.81,19.5 9.58,18.23 9.59,16.7V10.5H18.09Z";
var mdiCurrencyBrl = "M12,15H14C14,16.08 15.37,17 17,17C18.63,17 20,16.08 20,15C20,13.9 18.96,13.5 16.76,12.97C14.64,12.44 12,11.78 12,9C12,7.21 13.47,5.69 15.5,5.18V3H18.5V5.18C20.53,5.69 22,7.21 22,9H20C20,7.92 18.63,7 17,7C15.37,7 14,7.92 14,9C14,10.1 15.04,10.5 17.24,11.03C19.36,11.56 22,12.22 22,15C22,16.79 20.53,18.31 18.5,18.82V21H15.5V18.82C13.47,18.31 12,16.79 12,15M2,3H5.5A5.5,5.5 0 0,1 11,8.5C11,10.69 9.71,12.59 7.86,13.47L11.64,21H9.4L5.88,14H5.5L4,14V21H2V3M5.5,12A3.5,3.5 0 0,0 9,8.5A3.5,3.5 0 0,0 5.5,5H4V12H5.5Z";
var mdiCurrencyBtc = "M6,4H8V2H10V4H12V2H14V4.03C16.25,4.28 18,6.18 18,8.5C18,9.8 17.45,11 16.56,11.8C17.73,12.61 18.5,13.97 18.5,15.5C18.5,18 16.5,20 14,20V22H12V20H10V22H8V20H6L6.5,18H8V6H6V4M10,13V18H14A2.5,2.5 0 0,0 16.5,15.5A2.5,2.5 0 0,0 14,13H10M10,6V11H13.5A2.5,2.5 0 0,0 16,8.5A2.5,2.5 0 0,0 13.5,6H13.5L10,6Z";
var mdiCurrencyCny = "M11,21V16H6V14H11V13.71L10.16,12H6V10H9.19L5.77,3H8L12,11.2L16,3H18.23L14.81,10H18V12H13.84L13,13.71V14H18V16H13V21H11Z";
var mdiCurrencyEth = "M6,5H18V7H6M7,11H17V13H7M5.5,17H18.5V19H5.5";
var mdiCurrencyEur = "M7.07,11L7,12L7.07,13H17.35L16.5,15H7.67C8.8,17.36 11.21,19 14,19C16.23,19 18.22,17.96 19.5,16.33V19.12C18,20.3 16.07,21 14,21C10.08,21 6.75,18.5 5.5,15H2L3,13H5.05L5,12L5.05,11H2L3,9H5.5C6.75,5.5 10.08,3 14,3C16.5,3 18.8,4.04 20.43,5.71L19.57,7.75C18.29,6.08 16.27,5 14,5C11.21,5 8.8,6.64 7.67,9H19.04L18.19,11H7.07Z";
var mdiCurrencyEurOff = "M22.11 21.46L2.39 1.73L1.11 3L6 7.89C5.81 8.25 5.64 8.62 5.5 9H3L2 11H5.05L5 12L5.05 13H3L2 15H5.5C6.75 18.5 10.08 21 14 21C15.5 21 16.89 20.65 18.12 20L20.84 22.73L22.11 21.46M7 12L7.07 11H9.12L11.12 13H7.07L7 12M14 19C11.21 19 8.8 17.37 7.67 15H13.12L16.6 18.5C15.79 18.81 14.92 19 14 19M17 13.81L16.21 13H17.35L17 13.81M18.19 11H14.21L12.21 9H19.04L18.19 11M9.7 6.5L8.27 5.07C9.83 3.78 11.82 3 14 3C16.5 3 18.8 4.05 20.43 5.72L19.57 7.76C18.29 6.09 16.27 5 14 5C12.38 5 10.89 5.58 9.7 6.5Z";
var mdiCurrencyGbp = "M6,21V19C10,17 9.5,13 9.5,13H7V11H9.5C8.5,6.5 10,3 14,3C16,3 17,3.5 17,3.5V5.5C11,3.5 11,8 11.5,11H16V13H11.5C11.5,13 12,17 9.5,19H18V21H6Z";
var mdiCurrencyIls = "M22,16A5,5 0 0,1 17,21H8V9H10V19H17A3,3 0 0,0 20,16V3H22V16M16,8V15H14V8A3,3 0 0,0 11,5H4V21H2V3H11A5,5 0 0,1 16,8Z";
var mdiCurrencyInr = "M8,3H18L17,5H13.74C14.22,5.58 14.58,6.26 14.79,7H18L17,9H15C14.75,11.57 12.74,13.63 10.2,13.96V14H9.5L15.5,21H13L7,14V12H9.5V12C11.26,12 12.72,10.7 12.96,9H7L8,7H12.66C12.1,5.82 10.9,5 9.5,5H7L8,3Z";
var mdiCurrencyJpy = "M11,21V16H6V14H11V13.71L10.16,12H6V10H9.19L5.77,3H8L12,11.2L16,3H18.23L14.81,10H18V12H13.84L13,13.71V14H18V16H13V21H11Z";
var mdiCurrencyKrw = "M2,3H4L5.33,9H9.33L10.67,3H13.33L14.67,9H18.67L20,3H22L20.67,9H22V11H20.22L19.78,13H22V15H19.33L18,21H15.33L14,15H10L8.67,21H6L4.67,15H2V13H4.22L3.78,11H2V9H3.33L2,3M13.11,11H10.89L10.44,13H13.56L13.11,11M7.33,18L8,15H6.67L7.33,18M8.89,11H5.78L6.22,13H8.44L8.89,11M16.67,18L17.33,15H16L16.67,18M18.22,11H15.11L15.56,13H17.78L18.22,11M12,6L11.33,9H12.67L12,6Z";
var mdiCurrencyKzt = "M5,3H19V5H5V3M5,6H19V8H13V21H11V8H5V6Z";
var mdiCurrencyMnt = "M13 5V8.62L17 7.17V9.29L13 10.74V12.5L17 11.07V13.2L13 14.65V21H11V15.38L7 16.84V14.71L11 13.24V11.47L7 12.92V10.8L11 9.35V5H5V3H19V5H13Z";
var mdiCurrencyNgn = "M4,9H6V3H8L11.42,9H16V3H18V9H20V11H18V13H20V15H18V21H16L12.57,15H8V21H6V15H4V13H6V11H4V9M8,9H9.13L8,7.03V9M8,11V13H11.42L10.28,11H8M16,17V15H14.85L16,17M12.56,11L13.71,13H16V11H12.56Z";
var mdiCurrencyPhp = "M5,2V6H3V8H5V10H3V12H5V22H7V16H13C15.7,16 18.16,14.44 19.32,12H22V10H19.92C20.03,9.34 20.03,8.66 19.92,8H22V6H19.32C18.16,3.56 15.7,2 13,2M7,4H13C14.57,4 16.06,4.74 17,6H7V4M13,14H7V12H17C16.06,13.26 14.57,14 13,14M18,9C18,9.34 17.96,9.67 17.9,10H7V8H17.9C17.96,8.33 18,8.66 18,9Z";
var mdiCurrencyRial = "M11,17H13V19H11V17M14,17H16V19H14V17M9,4H11V15A4,4 0 0,1 7,19H5A3,3 0 0,1 2,16V12H4V16A1,1 0 0,0 5,17H7C8.11,17 9,16.11 9,15V4M12,4H14V13H17V8H19V13C19,14.11 18.11,15 17,15H14C12.89,15 12,14.11 12,13V4M20,10H22V17A3,3 0 0,1 19,20H17V18H19A1,1 0 0,0 20,17V10Z";
var mdiCurrencyRub = "M6,10H7V3H14.5C17,3 19,5 19,7.5C19,10 17,12 14.5,12H9V14H15V16H9V21H7V16H6V14H7V12H6V10M14.5,5H9V10H14.5A2.5,2.5 0 0,0 17,7.5A2.5,2.5 0 0,0 14.5,5Z";
var mdiCurrencySign = "M4.41 3L3 4.41L5.69 7.1C4.63 8.46 4 10.15 4 12C4 13.85 4.63 15.55 5.69 16.9L3 19.59L4.41 21L7.1 18.31C8.46 19.37 10.15 20 12 20C13.85 20 15.55 19.37 16.9 18.31L19.59 21L21 19.59L18.31 16.9C19.37 15.54 20 13.85 20 12C20 10.15 19.37 8.45 18.31 7.1L21 4.41L19.59 3L16.9 5.69C15.54 4.63 13.85 4 12 4C10.15 4 8.45 4.63 7.1 5.69L4.41 3M12 6C15.31 6 18 8.69 18 12C18 15.31 15.31 18 12 18C8.69 18 6 15.31 6 12C6 8.69 8.69 6 12 6Z";
var mdiCurrencyTry = "M19,12A9,9 0 0,1 10,21H8V12.77L5,13.87V11.74L8,10.64V8.87L5,9.96V7.84L8,6.74V3H10V6L15,4.2V6.32L10,8.14V9.92L15,8.1V10.23L10,12.05V19A7,7 0 0,0 17,12H19Z";
var mdiCurrencyTwd = "M3,11H21V13H15V19H21V21H15A2,2 0 0,1 13,19V13H10.35L5.73,21L4,20L8.04,13H3V11M5,3H19V5H5V3Z";
var mdiCurrencyUsd = "M7,15H9C9,16.08 10.37,17 12,17C13.63,17 15,16.08 15,15C15,13.9 13.96,13.5 11.76,12.97C9.64,12.44 7,11.78 7,9C7,7.21 8.47,5.69 10.5,5.18V3H13.5V5.18C15.53,5.69 17,7.21 17,9H15C15,7.92 13.63,7 12,7C10.37,7 9,7.92 9,9C9,10.1 10.04,10.5 12.24,11.03C14.36,11.56 17,12.22 17,15C17,16.79 15.53,18.31 13.5,18.82V21H10.5V18.82C8.47,18.31 7,16.79 7,15Z";
var mdiCurrencyUsdCircle = "M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2M15 10H11V11H14A1 1 0 0 1 15 12V15A1 1 0 0 1 14 16H13V17H11V16H9V14H13V13H10A1 1 0 0 1 9 12V9A1 1 0 0 1 10 8H11V7H13V8H15Z";
var mdiCurrencyUsdCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,17V16H9V14H13V13H10A1,1 0 0,1 9,12V9A1,1 0 0,1 10,8H11V7H13V8H15V10H11V11H14A1,1 0 0,1 15,12V15A1,1 0 0,1 14,16H13V17H11Z";
var mdiCurrencyUsdOff = "M3,4.27L4.28,3L21,19.72L19.73,21L16.06,17.33C15.44,18 14.54,18.55 13.5,18.82V21H10.5V18.82C8.47,18.31 7,16.79 7,15H9C9,16.08 10.37,17 12,17C13.13,17 14.14,16.56 14.65,15.92L11.68,12.95C9.58,12.42 7,11.75 7,9C7,8.77 7,8.55 7.07,8.34L3,4.27M10.5,5.18V3H13.5V5.18C15.53,5.69 17,7.21 17,9H15C15,7.92 13.63,7 12,7C11.63,7 11.28,7.05 10.95,7.13L9.4,5.58L10.5,5.18Z";
var mdiCurrentAc = "M12.43 11C12.28 10.84 10 7 7 7S2.32 10.18 2 11V13H11.57C11.72 13.16 14 17 17 17S21.68 13.82 22 13V11H12.43M7 9C8.17 9 9.18 9.85 10 11H4.31C4.78 10.17 5.54 9 7 9M17 15C15.83 15 14.82 14.15 14 13H19.69C19.22 13.83 18.46 15 17 15Z";
var mdiCurrentDc = "M2,9V11H22V9H2M2,13V15H7V13H2M9,13V15H15V13H9M17,13V15H22V13H17Z";
var mdiCursorDefault = "M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z";
var mdiCursorDefaultClick = "M10.76,8.69A0.76,0.76 0 0,0 10,9.45V20.9C10,21.32 10.34,21.66 10.76,21.66C10.95,21.66 11.11,21.6 11.24,21.5L13.15,19.95L14.81,23.57C14.94,23.84 15.21,24 15.5,24C15.61,24 15.72,24 15.83,23.92L18.59,22.64C18.97,22.46 19.15,22 18.95,21.63L17.28,18L19.69,17.55C19.85,17.5 20,17.43 20.12,17.29C20.39,16.97 20.35,16.5 20,16.21L11.26,8.86L11.25,8.87C11.12,8.76 10.95,8.69 10.76,8.69M15,10V8H20V10H15M13.83,4.76L16.66,1.93L18.07,3.34L15.24,6.17L13.83,4.76M10,0H12V5H10V0M3.93,14.66L6.76,11.83L8.17,13.24L5.34,16.07L3.93,14.66M3.93,3.34L5.34,1.93L8.17,4.76L6.76,6.17L3.93,3.34M7,10H2V8H7V10";
var mdiCursorDefaultClickOutline = "M11.5,11L17.88,16.37L17,16.55L16.36,16.67C15.73,16.8 15.37,17.5 15.65,18.07L15.92,18.65L17.28,21.59L15.86,22.25L14.5,19.32L14.24,18.74C13.97,18.15 13.22,17.97 12.72,18.38L12.21,18.78L11.5,19.35V11M10.76,8.69A0.76,0.76 0 0,0 10,9.45V20.9C10,21.32 10.34,21.66 10.76,21.66C10.95,21.66 11.11,21.6 11.24,21.5L13.15,19.95L14.81,23.57C14.94,23.84 15.21,24 15.5,24C15.61,24 15.72,24 15.83,23.92L18.59,22.64C18.97,22.46 19.15,22 18.95,21.63L17.28,18L19.69,17.55C19.85,17.5 20,17.43 20.12,17.29C20.39,16.97 20.35,16.5 20,16.21L11.26,8.86L11.25,8.87C11.12,8.76 10.95,8.69 10.76,8.69M15,10V8H20V10H15M13.83,4.76L16.66,1.93L18.07,3.34L15.24,6.17L13.83,4.76M10,0H12V5H10V0M3.93,14.66L6.76,11.83L8.17,13.24L5.34,16.07L3.93,14.66M3.93,3.34L5.34,1.93L8.17,4.76L6.76,6.17L3.93,3.34M7,10H2V8H7V10";
var mdiCursorDefaultGesture = "M15.59 8C15.26 8 15 8.27 15 8.6V17.57C15 17.9 15.26 18.17 15.59 18.17C15.74 18.17 15.86 18.12 15.96 18.04L17.45 16.83L18.74 19.66C18.84 19.88 19.05 20 19.27 20C19.36 20 19.44 20 19.53 19.94L21.67 18.93C21.97 18.79 22.11 18.43 21.95 18.14L20.66 15.3L22.53 14.94C22.65 14.91 22.77 14.85 22.86 14.74C23.07 14.5 23.04 14.12 22.77 13.89L16 8.13C15.88 8.05 15.74 8 15.59 8M12.5 6.73C12.72 6.66 13.17 7.19 13.59 7.76L15 6.71C14.87 6.5 14.69 6.25 14.47 5.96C14.31 5.75 13.59 4.93 12.66 4.8C12.04 4.72 10.81 5.06 10.6 6.61C10.47 7.58 10.76 8.19 11.21 9.08C11.46 9.6 12.04 10.96 12.18 11.78C12.33 12.59 12.06 13.16 11.74 13.12C11.44 13.08 11.2 12.65 11.03 12.41C10.89 12.22 10 10.82 9.67 10.23C9.22 9.5 8.04 7.96 6.44 7.74C4.35 7.46 3.44 9.2 3.18 10.36L1 10.06V11.88L2.93 12.15C2.75 15.6 4.5 16.82 5.67 17C6.92 17.15 8.08 16.28 8.24 15.06C8.41 13.84 7.56 11.5 4.96 10.69C5.1 10.15 5.21 9.43 6.36 9.59C7.26 9.71 8.21 11.26 8.93 12.44C9.58 13.53 10.1 14.39 10.83 14.72C11.45 15 12.16 14.97 12.73 14.65C13.42 14.26 13.86 13.55 14 12.63C14.22 10.9 12.7 8.17 12.57 7.84C12.4 7.46 12.12 6.82 12.5 6.73M6.5 14.78C6.43 15.11 6.1 15.25 5.88 15.22C5.38 15.16 4.66 14.5 4.71 12.53C6.17 13.13 6.53 14.35 6.5 14.78Z";
var mdiCursorDefaultGestureOutline = "M16.5 10.54L20.37 13.83L18.5 14.18L19.29 15.92L20.22 17.96L19.72 18.19L18.81 16.2L18 14.43L16.5 15.66V10.54M15.59 8C15.26 8 15 8.27 15 8.6V17.57C15 17.9 15.26 18.17 15.59 18.17C15.74 18.17 15.86 18.12 15.96 18.04L17.45 16.83L18.74 19.66C18.84 19.88 19.05 20 19.27 20C19.36 20 19.44 20 19.53 19.94L21.67 18.93C21.97 18.79 22.11 18.43 21.95 18.14L20.66 15.3L22.53 14.94C22.65 14.91 22.77 14.85 22.86 14.74C23.07 14.5 23.04 14.12 22.77 13.89L16 8.13C15.88 8.05 15.74 8 15.59 8M12.5 6.73C12.72 6.66 13.17 7.19 13.59 7.76L15 6.71C14.87 6.5 14.69 6.25 14.47 5.96C14.31 5.75 13.59 4.93 12.66 4.8C12.04 4.72 10.81 5.06 10.6 6.61C10.47 7.58 10.76 8.19 11.21 9.08C11.46 9.6 12.04 10.96 12.18 11.78C12.33 12.59 12.06 13.16 11.74 13.12C11.44 13.08 11.2 12.65 11.03 12.41C10.89 12.22 10 10.82 9.67 10.23C9.22 9.5 8.04 7.96 6.44 7.74C4.35 7.46 3.44 9.2 3.18 10.36L1 10.06V11.88L2.93 12.15C2.75 15.6 4.5 16.82 5.67 17C6.92 17.15 8.08 16.28 8.24 15.06C8.41 13.84 7.56 11.5 4.96 10.69C5.1 10.15 5.21 9.43 6.36 9.59C7.26 9.71 8.21 11.26 8.93 12.44C9.58 13.53 10.1 14.39 10.83 14.72C11.45 15 12.16 14.97 12.73 14.65C13.42 14.26 13.86 13.55 14 12.63C14.22 10.9 12.7 8.17 12.57 7.84C12.4 7.46 12.12 6.82 12.5 6.73M6.5 14.78C6.43 15.11 6.1 15.25 5.88 15.22C5.38 15.16 4.66 14.5 4.71 12.53C6.17 13.13 6.53 14.35 6.5 14.78Z";
var mdiCursorDefaultOutline = "M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z";
var mdiCursorMove = "M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z";
var mdiCursorPointer = "M13.75,10.19L14.38,10.32L18.55,12.4C19.25,12.63 19.71,13.32 19.65,14.06V14.19L19.65,14.32L18.75,20.44C18.69,20.87 18.5,21.27 18.15,21.55C17.84,21.85 17.43,22 17,22H10.12C9.63,22 9.18,21.82 8.85,21.47L2.86,15.5L3.76,14.5C4,14.25 4.38,14.11 4.74,14.13H5.03L9,15V4.5A2,2 0 0,1 11,2.5A2,2 0 0,1 13,4.5V10.19H13.75Z";
var mdiCursorText = "M13,19A1,1 0 0,0 14,20H16V22H13.5C12.95,22 12,21.55 12,21C12,21.55 11.05,22 10.5,22H8V20H10A1,1 0 0,0 11,19V5A1,1 0 0,0 10,4H8V2H10.5C11.05,2 12,2.45 12,3C12,2.45 12.95,2 13.5,2H16V4H14A1,1 0 0,0 13,5V19Z";
var mdiDanceBallroom = "M14 3.5C14 4.33 13.33 5 12.5 5S11 4.33 11 3.5 11.67 2 12.5 2 14 2.67 14 3.5M8.5 5C7.67 5 7 5.67 7 6.5S7.67 8 8.5 8 10 7.33 10 6.5 9.33 5 8.5 5M14 12L13.22 9.75H16.18L18.34 8.67C18.71 8.5 18.86 8.04 18.67 7.67C18.5 7.3 18.04 7.14 17.67 7.33L16.85 7.74L16.36 6.9C16.07 6.25 15.36 5.88 14.66 6.04L12.19 6.57C11.5 6.72 11 7.35 11 8.07V8.77L8.57 10.39H8.58C8.5 10.46 8.39 10.55 8.33 10.67L7.44 12.44L5.66 13.33C5.29 13.5 5.14 13.97 5.33 14.34C5.46 14.6 5.73 14.75 6 14.75C6.11 14.75 6.23 14.73 6.34 14.67L8.56 13.56L9.6 11.5L11 13C10 16 3 20 3 20S7 22 12 22 21 20 21 20 16 16 14 12M16.85 11.09L16.53 11.25H15.33L15.39 11.41C15.91 12.44 16.67 13.5 17.5 14.44L16.97 11.03L16.85 11.09Z";
var mdiDancePole = "M12 1V2L11.23 1.36L7.76 5.5L11 7.5V5.16L10.78 5L12 3.56V23H14V13.24L15.93 11.31C18.5 11.71 21.13 10.36 22.66 8.83L21.24 7.41C20.1 8.56 17.7 9.61 16 9.26L14 7.24V1M17 4A2 2 0 0 0 15 6A2 2 0 0 0 17 8A2 2 0 0 0 19 6A2 2 0 0 0 17 4M11 7.76L7.1 11.66C5.25 13.5 4.31 14.85 3.06 18.16L4.94 18.86C5.94 16.2 6.66 15.14 7.87 13.84L9.22 15.19L4.27 20.14L5.69 21.56L11 16.24Z";
var mdiDataMatrix = "M2 2V22H22V20H20V18H22V16H20V14H22V12H18V10H16V12H14V10H12V8H8V12H12V16H10V18H12V20H10V18H8V16H6V14H4V12H6V6H4V2H2M6 6H8V2H6V6M8 16H10V14H8V16M18 10H22V8H18V10M18 8V4H16V6H14V8H18M16 4V2H14V4H16M18 4H20V2H18V4M20 4V6H22V4H20M10 2V6H12V2H10M14 14H16V16H18V20H14V14M4 18H6V20H4V18Z";
var mdiDataMatrixEdit = "M20 12.1C19.9 12.1 19.7 12.2 19.6 12.3L18.6 13.3L20.7 15.4L21.7 14.4C21.9 14.2 21.9 13.8 21.7 13.6L20.4 12.3C20.3 12.2 20.2 12.1 20 12.1M18.1 13.9L12 19.9V22H14.1L20.2 15.9L18.1 13.9M8 6H6V2H8V6M10 16H8V14H10V16M12 6H10V2H12V6M16 2V4H14V2H16M20 4H18V2H20V4M10 20V18H8V16H6V14H4V12H6V6H4V2H2V22H10V20M6 20H4V18H6V20M22 10H18V8H22V10M20 6V4H22V6H20M18 4V8H14V6H16V4H18M10 18V16H12V12H8V8H12V10H14V12H16V10H18V11.1L15.1 14H14V15.1L11.1 18H10Z";
var mdiDataMatrixMinus = "M16 2V4H14V2H16M12 2H10V6H12V2M10 14H8V16H10V14M16 4V6H14V8H18V4H16M8 2H6V6H8V2M20 2H18V4H20V2M13.8 22H2V2H4V6H6V12H4V14H6V16H8V18H10V20H12V18H10V16H12V12H8V8H12V10H14V12H16V10H18V12H22V13.8C21.1 13.3 20.1 13 19 13C17.8 13 16.6 13.4 15.7 14H14V15.7C13.4 16.6 13 17.8 13 19C13 20.1 13.3 21.1 13.8 22M6 18H4V20H6V18M22 8H18V10H22V8M22 6V4H20V6H22M15 18V20H23V18H15Z";
var mdiDataMatrixPlus = "M16 2V4H14V2H16M12 2H10V6H12V2M10 14H8V16H10V14M16 4V6H14V8H18V4H16M8 2H6V6H8V2M20 2H18V4H20V2M13.8 22H2V2H4V6H6V12H4V14H6V16H8V18H10V20H12V18H10V16H12V12H8V8H12V10H14V12H16V10H18V12H22V13.8C21.1 13.3 20.1 13 19 13C17.8 13 16.6 13.4 15.7 14H14V15.7C13.4 16.6 13 17.8 13 19C13 20.1 13.3 21.1 13.8 22M6 18H4V20H6V18M22 8H18V10H22V8M22 6V4H20V6H22M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z";
var mdiDataMatrixRemove = "M16 2V4H14V2H16M12 2H10V6H12V2M10 14H8V16H10V14M16 4V6H14V8H18V4H16M8 2H6V6H8V2M20 2H18V4H20V2M13.8 22H2V2H4V6H6V12H4V14H6V16H8V18H10V20H12V18H10V16H12V12H8V8H12V10H14V12H16V10H18V12H22V13.8C21.1 13.3 20.1 13 19 13C17.8 13 16.6 13.4 15.7 14H14V15.7C13.4 16.6 13 17.8 13 19C13 20.1 13.3 21.1 13.8 22M6 18H4V20H6V18M22 8H18V10H22V8M22 6V4H20V6H22M21.1 15.5L19 17.6L16.9 15.5L15.5 16.9L17.6 19L15.5 21.1L16.9 22.5L19 20.4L21.1 22.5L22.5 21.1L20.4 19L22.5 16.9L21.1 15.5Z";
var mdiDataMatrixScan = "M2 2H6V0H2C.9 0 0 .9 0 2V6H2V2M22 0H18V2H22V6H24V2C24 .9 23.1 0 22 0M2 18H0V22C0 23.1 .9 24 2 24H6V22H2V18M22 22H18V24H22C23.1 24 24 23.1 24 22V18H22V22M8 6V4H10V6H8M10 14V12H12V14H10M16 4H18V6H16V4M18 6H20V8H18V6M18 14H20V16H18V14M20 12H16V18H20V20H4V4H6V6H8V10H6V12H8V14H10V16H12V18H14V16H12V14H14V10H10V6H12V4H14V8H16V10H20V12M8 18V16H6V18H8Z";
var mdiDatabase = "M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M4,9V12C4,14.21 7.58,16 12,16C16.42,16 20,14.21 20,12V9C20,11.21 16.42,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C16.42,21 20,19.21 20,17V14C20,16.21 16.42,18 12,18C7.58,18 4,16.21 4,14Z";
var mdiDatabaseAlert = "M18 7C18 9.21 14.42 11 10 11S2 9.21 2 7 5.58 3 10 3 18 4.79 18 7M10 18C5.58 18 2 16.21 2 14V17C2 19.21 5.58 21 10 21S18 19.21 18 17V14C18 16.21 14.42 18 10 18M10 13C5.58 13 2 11.21 2 9V12C2 14.21 5.58 16 10 16S18 14.21 18 12V9C18 11.21 14.42 13 10 13M20 17H22V15H20V17M20 7V13H22V7H20Z";
var mdiDatabaseAlertOutline = "M10 3C5.58 3 2 4.79 2 7V17C2 19.21 5.59 21 10 21S18 19.21 18 17V7C18 4.79 14.42 3 10 3M16 17C16 17.5 13.87 19 10 19S4 17.5 4 17V14.77C5.61 15.55 7.72 16 10 16S14.39 15.55 16 14.77V17M16 12.45C14.7 13.4 12.42 14 10 14S5.3 13.4 4 12.45V9.64C5.47 10.47 7.61 11 10 11S14.53 10.47 16 9.64V12.45M10 9C6.13 9 4 7.5 4 7S6.13 5 10 5 16 6.5 16 7 13.87 9 10 9M22 7V13H20V7H22M20 15H22V17H20V15Z";
var mdiDatabaseArrowDown = "M19 13C16.83 13 14.93 14.16 13.88 15.89C13.28 15.96 12.65 16 12 16C7.58 16 4 14.21 4 12V9C4 11.21 7.58 13 12 13S20 11.21 20 9V12C20 12.36 19.9 12.71 19.72 13.05C19.5 13 19.24 13 19 13M12 11C16.42 11 20 9.21 20 7S16.42 3 12 3 4 4.79 4 7 7.58 11 12 11M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M20 20V16H18V20H16L19 23L22 20H20Z";
var mdiDatabaseArrowDownOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22 20L19 23L16 20H18V16H20V20H22Z";
var mdiDatabaseArrowLeft = "M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M19.72 13.05C19.9 12.71 20 12.36 20 12V9C20 11.21 16.42 13 12 13S4 11.21 4 9V12C4 14.21 7.58 16 12 16C12.65 16 13.28 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.24 13 19.5 13 19.72 13.05M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M18 18V16L15 19L18 22V20H22V18H18Z";
var mdiDatabaseArrowLeftOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22 18V20H18V22L15 19L18 16V18H22Z";
var mdiDatabaseArrowRight = "M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M19.72 13.05C19.9 12.71 20 12.36 20 12V9C20 11.21 16.42 13 12 13S4 11.21 4 9V12C4 14.21 7.58 16 12 16C12.65 16 13.28 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.24 13 19.5 13 19.72 13.05M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M23 19L20 16V18H16V20H20V22L23 19Z";
var mdiDatabaseArrowRightOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M20 22V20H16V18H20V16L23 19L20 22Z";
var mdiDatabaseArrowUp = "M19 13C16.83 13 14.93 14.16 13.88 15.89C13.28 15.96 12.65 16 12 16C7.58 16 4 14.21 4 12V9C4 11.21 7.58 13 12 13S20 11.21 20 9V12C20 12.36 19.9 12.71 19.72 13.05C19.5 13 19.24 13 19 13M12 11C16.42 11 20 9.21 20 7S16.42 3 12 3 4 4.79 4 7 7.58 11 12 11M13.1 17.96C12.74 18 12.37 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19C13 18.64 13.04 18.3 13.1 17.96M19 15L16 18H18V22H20V18H22L19 15Z";
var mdiDatabaseArrowUpOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22 18H20V22H18V18H16L19 15L22 18Z";
var mdiDatabaseCheck = "M12 3C16.42 3 20 4.79 20 7S16.42 11 12 11 4 9.21 4 7 7.58 3 12 3M4 9C4 11.21 7.58 13 12 13S20 11.21 20 9V12.08L19 12C16.41 12 14.2 13.64 13.36 15.94L12 16C7.58 16 4 14.21 4 12V9M4 14C4 16.21 7.58 18 12 18H13C13 19.05 13.27 20.04 13.75 20.9L12 21C7.58 21 4 19.21 4 17V14M18 21.08L15.25 18.08L16.41 16.92L18 18.5L21.59 14.92L22.75 16.33L18 21.08";
var mdiDatabaseCheckOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z";
var mdiDatabaseClock = "M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25M23 16C23 19.87 19.87 23 16 23C13.61 23 11.5 21.8 10.25 20C6.18 19.79 3 18.08 3 16V13C3 14.88 5.58 16.44 9.06 16.88C9.03 16.59 9 16.3 9 16C9 15.62 9.04 15.25 9.1 14.88C5.6 14.45 3 12.88 3 11V8C3 10.09 6.2 11.8 10.27 12C10.87 11.14 11.64 10.44 12.53 9.93C12.04 9.97 11.5 10 11 10C6.58 10 3 8.21 3 6S6.58 2 11 2 19 3.79 19 6C19 7.2 17.93 8.28 16.25 9C17 9.04 17.75 9.19 18.44 9.45C18.79 9 19 8.5 19 8V9.68C21.36 10.81 23 13.21 23 16M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z";
var mdiDatabaseClockOutline = "M16.5 16.25L19.36 17.94L18.61 19.16L15 17V12H16.5V16.25M23 16C23 19.87 19.87 23 16 23C13.61 23 11.5 21.8 10.25 20C6.19 19.79 3 18.08 3 16V6C3 3.79 6.58 2 11 2S19 3.79 19 6V9.68C21.36 10.81 23 13.21 23 16M17 9.08V8.64C16.77 8.77 16.5 8.9 16.24 9C16.5 9 16.75 9.04 17 9.08M5 6C5 6.5 7.13 8 11 8S17 6.5 17 6 14.87 4 11 4 5 5.5 5 6M5 11.45C6.07 12.23 7.8 12.76 9.72 12.93C10.33 11.67 11.32 10.62 12.54 9.92C12.04 9.97 11.53 10 11 10C8.61 10 6.47 9.47 5 8.64V11.45M9.26 17.87C9.1 17.27 9 16.65 9 16C9 15.61 9.04 15.23 9.1 14.86C7.56 14.69 6.15 14.33 5 13.77V16C5 16.42 6.5 17.5 9.26 17.87M21 16C21 13.24 18.76 11 16 11S11 13.24 11 16 13.24 21 16 21 21 18.76 21 16Z";
var mdiDatabaseCog = "M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M12.08 18L12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C12.1 21 12.2 21 12.29 21C12.11 20.36 12 19.69 12 19C12 18.66 12.03 18.33 12.08 18M20 12.08C20 12.05 20 12.03 20 12V9C20 11.21 16.42 13 12 13S4 11.21 4 9V12C4 14.21 7.58 16 12 16C12.23 16 12.46 16 12.69 16C13.82 13.63 16.22 12 19 12C19.34 12 19.67 12.03 20 12.08M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z";
var mdiDatabaseCogOutline = "M12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.08C18.33 12.03 18.66 12 19 12C19.34 12 19.67 12.03 20 12.08V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.1 21 12.2 21 12.29 21C12.11 20.36 12 19.69 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.24 16 12.47 16 12.7 15.97C13.1 15.14 13.65 14.41 14.32 13.81C13.58 13.93 12.8 14 12 14M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M22.7 19.6V18.6L23.8 17.8C23.9 17.7 24 17.6 23.9 17.5L22.9 15.8C22.9 15.7 22.7 15.7 22.6 15.7L21.4 16.2C21.1 16 20.8 15.8 20.5 15.7L20.3 14.4C20.3 14.3 20.2 14.2 20.1 14.2H18.1C17.9 14.2 17.8 14.3 17.8 14.4L17.6 15.7C17.3 15.9 17.1 16 16.8 16.2L15.6 15.7C15.5 15.7 15.4 15.7 15.3 15.8L14.3 17.5C14.3 17.6 14.3 17.7 14.4 17.8L15.5 18.6V19.6L14.4 20.4C14.3 20.5 14.2 20.6 14.3 20.7L15.3 22.4C15.4 22.5 15.5 22.5 15.6 22.5L16.8 22C17 22.2 17.3 22.4 17.6 22.5L17.8 23.8C17.9 23.9 18 24 18.1 24H20.1C20.2 24 20.3 23.9 20.3 23.8L20.5 22.5C20.8 22.3 21 22.2 21.3 22L22.5 22.4C22.6 22.4 22.7 22.4 22.8 22.3L23.8 20.6C23.9 20.5 23.9 20.4 23.8 20.4L22.7 19.6M19 20.5C18.2 20.5 17.5 19.8 17.5 19S18.2 17.5 19 17.5 20.5 18.2 20.5 19 19.8 20.5 19 20.5Z";
var mdiDatabaseEdit = "M4,14V17C4,19 7.05,20.72 11,21V18.11L11.13,18C7.12,17.76 4,16.06 4,14M12,13C7.58,13 4,11.21 4,9V12C4,14.21 7.58,16 12,16C12.39,16 12.77,16 13.16,16L17,12.12C15.4,12.72 13.71,13 12,13M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M21,11.13C20.85,11.13 20.71,11.19 20.61,11.3L19.61,12.3L21.66,14.3L22.66,13.3C22.87,13.1 22.88,12.76 22.66,12.53L21.42,11.3C21.32,11.19 21.18,11.13 21.04,11.13M19.04,12.88L13,18.94V21H15.06L21.12,14.93L19.04,12.88Z";
var mdiDatabaseEditOutline = "M12 16C12.8 16 13.57 15.93 14.31 15.82L17.22 12.91C15.89 13.59 14 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.13L19.39 10.74C19.57 10.56 19.78 10.42 20 10.3V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.04 7.06 20.72 11 20.97V19.13L11.17 18.96C7.84 18.76 6 17.46 6 17V14.77C7.61 15.55 9.72 16 12 16M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M19.13 13.83L21.17 15.87L15.04 22H13V19.96L19.13 13.83M22.85 14.19L21.87 15.17L19.83 13.13L20.81 12.15C21 11.95 21.33 11.95 21.53 12.15L22.85 13.47C23.05 13.67 23.05 14 22.85 14.19Z";
var mdiDatabaseExport = "M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C12.5,11 13,10.97 13.5,10.92V9.5H16.39L15.39,8.5L18.9,5C17.5,3.8 14.94,3 12,3M18.92,7.08L17.5,8.5L20,11H15V13H20L17.5,15.5L18.92,16.92L23.84,12M4,9V12C4,14.21 7.58,16 12,16C13.17,16 14.26,15.85 15.25,15.63L16.38,14.5H13.5V12.92C13,12.97 12.5,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C14.94,21 17.5,20.2 18.9,19L17,17.1C15.61,17.66 13.9,18 12,18C7.58,18 4,16.21 4,14Z";
var mdiDatabaseExportOutline = "M17.86 18L18.9 19C17.5 20.2 14.94 21 12 21C7.59 21 4 19.21 4 17V7C4 4.79 7.58 3 12 3C14.95 3 17.5 3.8 18.9 5L17.86 6L17.5 6.4C16.65 5.77 14.78 5 12 5C8.13 5 6 6.5 6 7S8.13 9 12 9C13.37 9 14.5 8.81 15.42 8.54L16.38 9.5H13.5V10.92C13 10.97 12.5 11 12 11C9.61 11 7.47 10.47 6 9.64V12.45C7.3 13.4 9.58 14 12 14C12.5 14 13 13.97 13.5 13.92V14.5H16.38L15.38 15.5L15.5 15.61C14.41 15.86 13.24 16 12 16C9.72 16 7.61 15.55 6 14.77V17C6 17.5 8.13 19 12 19C14.78 19 16.65 18.23 17.5 17.61L17.86 18M18.92 7.08L17.5 8.5L20 11H15V13H20L17.5 15.5L18.92 16.92L23.84 12L18.92 7.08Z";
var mdiDatabaseImport = "M12,3C8.59,3 5.69,4.07 4.54,5.57L9.79,10.82C10.5,10.93 11.22,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M3.92,7.08L2.5,8.5L5,11H0V13H5L2.5,15.5L3.92,16.92L8.84,12M20,9C20,11.21 16.42,13 12,13C11.34,13 10.7,12.95 10.09,12.87L7.62,15.34C8.88,15.75 10.38,16 12,16C16.42,16 20,14.21 20,12M20,14C20,16.21 16.42,18 12,18C9.72,18 7.67,17.5 6.21,16.75L4.53,18.43C5.68,19.93 8.59,21 12,21C16.42,21 20,19.21 20,17";
var mdiDatabaseImportOutline = "M8.84 12L3.92 16.92L2.5 15.5L5 13H0V11H5L2.5 8.5L3.92 7.08L8.84 12M12 3C8.59 3 5.68 4.07 4.53 5.57L5 6L6.03 7.07C6 7.05 6 7 6 7C6 6.5 8.13 5 12 5S18 6.5 18 7 15.87 9 12 9C9.38 9 7.58 8.31 6.68 7.72L9.8 10.84C10.5 10.94 11.24 11 12 11C14.39 11 16.53 10.47 18 9.64V12.45C16.7 13.4 14.42 14 12 14C11.04 14 10.1 13.9 9.24 13.73L7.59 15.37C8.91 15.77 10.41 16 12 16C14.28 16 16.39 15.55 18 14.77V17C18 17.5 15.87 19 12 19S6 17.5 6 17V16.96L5 18L4.54 18.43C5.69 19.93 8.6 21 12 21C16.41 21 20 19.21 20 17V7C20 4.79 16.42 3 12 3Z";
var mdiDatabaseLock = "M11,3C15.42,3 19,4.79 19,7C19,9.21 15.42,11 11,11C6.58,11 3,9.21 3,7C3,4.79 6.58,3 11,3M19,12.03C17.11,12.24 15.57,13.62 15.13,15.43C13.92,15.79 12.5,16 11,16C6.58,16 3,14.21 3,12V9C3,11.21 6.58,13 11,13C15.42,13 19,11.21 19,9V12.03M14,17.71V20.71C13.07,20.9 12.06,21 11,21C6.58,21 3,19.21 3,17V14C3,16.21 6.58,18 11,18C12.06,18 13.07,17.9 14,17.71M19.5,14A2.5,2.5 0 0,1 22,16.5V17A1,1 0 0,1 23,18V22A1,1 0 0,1 22,23H17A1,1 0 0,1 16,22V18A1,1 0 0,1 17,17V16.5A2.5,2.5 0 0,1 19.5,14M19.5,15A1.5,1.5 0 0,0 18,16.5V17H21V16.5A1.5,1.5 0 0,0 19.5,15Z";
var mdiDatabaseLockOutline = "M6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V11.05C18.17 11.03 18.33 11 18.5 11C19.03 11 19.53 11.1 20 11.26V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.34 21 12.67 21 13 20.97V18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.41 16 12.81 15.97 13.21 15.94C13.4 15.46 13.68 15.03 14.07 14.7C14.13 14.39 14.23 14.09 14.34 13.8C13.6 13.93 12.81 14 12 14C9.58 14 7.3 13.4 6 12.45M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16Z";
var mdiDatabaseMarker = "M18.5 12C16.6 12 15 13.6 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5C22 13.6 20.4 12 18.5 12M18.5 16.8C17.8 16.8 17.3 16.2 17.3 15.6C17.3 14.9 17.9 14.4 18.5 14.4S19.7 15 19.7 15.6C19.8 16.2 19.2 16.8 18.5 16.8M4 12V9C4 11.21 7.58 13 12 13C12.57 13 13.13 12.97 13.67 12.91C13.25 13.69 13 14.57 13 15.5C13 15.65 13 15.81 13.03 15.96C12.69 16 12.35 16 12 16C7.58 16 4 14.21 4 12M4 7C4 4.79 7.58 3 12 3S20 4.79 20 7 16.42 11 12 11 4 9.21 4 7M15 20.71C14.07 20.9 13.06 21 12 21C7.58 21 4 19.21 4 17V14C4 16.21 7.58 18 12 18C12.5 18 13.03 17.97 13.5 17.93C13.9 18.91 14.44 19.87 15 20.71Z";
var mdiDatabaseMarkerOutline = "M12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.35 16 12.69 15.97 13.03 15.95C13 15.8 13 15.65 13 15.5C13 14.96 13.09 14.44 13.24 13.94C12.83 14 12.42 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V10.03C18.17 10 18.33 10 18.5 10C19 10 19.5 10.08 20 10.22V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C13.06 21 14.07 20.89 15 20.71C14.62 20.14 14.25 19.5 13.93 18.85C13.34 18.94 12.71 19 12 19M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M18.5 12C16.6 12 15 13.6 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5C22 13.6 20.4 12 18.5 12M18.5 16.8C17.8 16.8 17.3 16.2 17.3 15.6C17.3 14.9 17.9 14.4 18.5 14.4S19.7 15 19.7 15.6C19.8 16.2 19.2 16.8 18.5 16.8Z";
var mdiDatabaseMinus = "M23 17V19H15V17M12 3C16.42 3 20 4.79 20 7S16.42 11 12 11 4 9.21 4 7 7.58 3 12 3M4 9C4 11.21 7.58 13 12 13S20 11.21 20 9V12.08L19 12C16.41 12 14.2 13.64 13.36 15.94L12 16C7.58 16 4 14.21 4 12V9M4 14C4 16.21 7.58 18 12 18H13C13 19.05 13.27 20.04 13.75 20.9L12 21C7.58 21 4 19.21 4 17V14Z";
var mdiDatabaseMinusOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M23 18V20H15V18H23Z";
var mdiDatabaseOff = "M19.07 15.87C19.66 15.31 20 14.68 20 14V16.8L19.07 15.87M20 9C20 10.54 18.27 11.86 15.73 12.53L17.89 14.69C19.19 14 20 13.04 20 12V9M20 7C20 4.79 16.42 3 12 3C10.13 3 8.42 3.33 7.06 3.86L14.06 10.86C17.5 10.41 20 8.85 20 7M2.39 1.73L1.11 3L4.21 6.1C4.08 6.39 4 6.69 4 7C4 8.63 5.96 10.04 8.77 10.66L11.08 12.97C7.1 12.74 4 11.06 4 9V12C4 14.21 7.58 16 12 16C12.69 16 13.35 15.95 14 15.87L15.66 17.55C14.57 17.84 13.32 18 12 18C7.58 18 4 16.21 4 14V17C4 19.21 7.58 21 12 21C14.31 21 16.38 20.5 17.84 19.73L20.84 22.73L22.11 21.46L2.39 1.73Z";
var mdiDatabaseOffOutline = "M2.39 1.73L1.11 3L4.21 6.1C4.08 6.39 4 6.69 4 7V17C4 19.21 7.59 21 12 21C14.3 21 16.38 20.5 17.84 19.73L20.84 22.73L22.11 21.46L2.39 1.73M6 9.64C6.76 10.07 7.7 10.42 8.76 10.65L12.11 14C12.07 14 12.04 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64M12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.68 16 13.34 15.95 14 15.87L16.34 18.23C15.33 18.65 13.87 19 12 19M8.64 5.44L7.06 3.86C8.42 3.33 10.13 3 12 3C16.42 3 20 4.79 20 7V16.8L18 14.8V14.77L18 14.78L16.45 13.25C17.05 13.03 17.58 12.76 18 12.45V9.64C16.97 10.22 15.61 10.65 14.06 10.86L12.19 9C15.94 8.94 18 7.5 18 7C18 6.5 15.87 5 12 5C10.66 5 9.54 5.18 8.64 5.44Z";
var mdiDatabaseOutline = "M12 3C7.58 3 4 4.79 4 7V17C4 19.21 7.59 21 12 21S20 19.21 20 17V7C20 4.79 16.42 3 12 3M18 17C18 17.5 15.87 19 12 19S6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16S16.39 15.55 18 14.77V17M18 12.45C16.7 13.4 14.42 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11C14.39 11 16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5C15.87 5 18 6.5 18 7S15.87 9 12 9Z";
var mdiDatabasePlus = "M18,14H20V17H23V19H20V22H18V19H15V17H18V14M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C16.42,13 20,11.21 20,9V9L20,12.08L19,12C16.41,12 14.2,13.64 13.36,15.94L12,16C7.58,16 4,14.21 4,12V9M4,14C4,16.21 7.58,18 12,18H13C13,19.05 13.27,20.04 13.75,20.9L12,21C7.58,21 4,19.21 4,17V14Z";
var mdiDatabasePlusOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z";
var mdiDatabaseRefresh = "M12 3C16.42 3 20 4.79 20 7C20 9.21 16.42 11 12 11C7.58 11 4 9.21 4 7C4 4.79 7.58 3 12 3M4 9C4 11.21 7.58 13 12 13C13.11 13 14.18 12.89 15.14 12.68C14.19 13.54 13.5 14.67 13.18 15.96L12 16C7.58 16 4 14.21 4 12V9M20 9V11L19.5 11L18.9 11.03C19.6 10.43 20 9.74 20 9M4 14C4 16.21 7.58 18 12 18L13 17.97C13.09 19.03 13.42 20 13.95 20.88L12 21C7.58 21 4 19.21 4 17V14M19 13.5C20.11 13.5 21.11 13.95 21.83 14.67L23 13.5V17.5H19L20.77 15.73C20.32 15.28 19.69 15 19 15C17.62 15 16.5 16.12 16.5 17.5C16.5 18.88 17.62 20 19 20C19.82 20 20.54 19.61 21 19H22.71C22.12 20.47 20.68 21.5 19 21.5C16.79 21.5 15 19.71 15 17.5C15 15.29 16.79 13.5 19 13.5Z";
var mdiDatabaseRefreshOutline = "M6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.03C18.17 12 18.33 12 18.5 12C19 12 19.5 12.07 20 12.18V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.17 21 12.33 21 12.5 21C12.24 20.37 12.09 19.7 12.03 19L12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.17 16 12.34 16 12.5 16C12.85 15.18 13.34 14.46 13.95 13.86C13.32 13.95 12.67 14 12 14C9.58 14 7.3 13.4 6 12.45M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M18 18.5L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5S16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5S15.79 14.5 18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18Z";
var mdiDatabaseRemove = "M15.46,15.88L16.88,14.46L19,16.59L21.12,14.47L22.53,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.53L15.47,20.12L17.59,18L15.46,15.88M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C16.42,13 20,11.21 20,9V12.08L19,12C16.41,12 14.2,13.64 13.36,15.94L12,16C7.58,16 4,14.21 4,12V9M4,14C4,16.21 7.58,18 12,18H13C13,19.05 13.27,20.04 13.75,20.9L12,21C7.58,21 4,19.21 4,17V14Z";
var mdiDatabaseRemoveOutline = "M20 13.09V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.46 21 12.9 21 13.33 20.94C13.12 20.33 13 19.68 13 19L13 18.95C12.68 19 12.35 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16C12.65 16 13.27 15.96 13.88 15.89C14.93 14.16 16.83 13 19 13C19.34 13 19.67 13.04 20 13.09M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19";
var mdiDatabaseSearch = "M18.68,12.32C16.92,10.56 14.07,10.57 12.32,12.33C10.56,14.09 10.56,16.94 12.32,18.69C13.81,20.17 16.11,20.43 17.89,19.32L21,22.39L22.39,21L19.3,17.89C20.43,16.12 20.17,13.8 18.68,12.32M17.27,17.27C16.29,18.25 14.71,18.24 13.73,17.27C12.76,16.29 12.76,14.71 13.74,13.73C14.71,12.76 16.29,12.76 17.27,13.73C18.24,14.71 18.24,16.29 17.27,17.27M10.9,20.1C10.25,19.44 9.74,18.65 9.42,17.78C6.27,17.25 4,15.76 4,14V17C4,19.21 7.58,21 12,21V21C11.6,20.74 11.23,20.44 10.9,20.1M4,9V12C4,13.68 6.07,15.12 9,15.7C9,15.63 9,15.57 9,15.5C9,14.57 9.2,13.65 9.58,12.81C6.34,12.3 4,10.79 4,9M12,3C7.58,3 4,4.79 4,7C4,9 7,10.68 10.85,11H10.9C12.1,9.74 13.76,9 15.5,9C16.41,9 17.31,9.19 18.14,9.56C19.17,9.09 19.87,8.12 20,7C20,4.79 16.42,3 12,3Z";
var mdiDatabaseSearchOutline = "M11 18.95C7.77 18.72 6 17.45 6 17V14.77C7.13 15.32 8.5 15.69 10 15.87C10 15.21 10.04 14.54 10.21 13.89C8.5 13.67 6.97 13.16 6 12.45V9.64C7.43 10.45 9.5 10.97 11.82 11C11.85 10.97 11.87 10.93 11.9 10.9C14.1 8.71 17.5 8.41 20 10.03V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.34 21 12.68 21 13 20.97C12.62 20.72 12.24 20.44 11.9 20.1C11.55 19.74 11.25 19.36 11 18.95M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M20.31 17.9C20.75 17.21 21 16.38 21 15.5C21 13 19 11 16.5 11S12 13 12 15.5 14 20 16.5 20C17.37 20 18.19 19.75 18.88 19.32L22 22.39L23.39 21L20.31 17.9M16.5 18C15.12 18 14 16.88 14 15.5S15.12 13 16.5 13 19 14.12 19 15.5 17.88 18 16.5 18Z";
var mdiDatabaseSettings = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C16.42,13 20,11.21 20,9V12C20,14.21 16.42,16 12,16C7.58,16 4,14.21 4,12V9M4,14C4,16.21 7.58,18 12,18C16.42,18 20,16.21 20,14V17C20,18.19 18.95,19.27 17.29,20H6.71C5.05,19.27 4,18.19 4,17V14Z";
var mdiDatabaseSettingsOutline = "M12 3C7.58 3 4 4.79 4 7V17C4 18.2 5.06 19.27 6.73 20H17.27C18.94 19.27 20 18.2 20 17V7C20 4.79 16.42 3 12 3M18 17C18 17.5 15.87 19 12 19S6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16S16.39 15.55 18 14.77V17M18 12.45C16.7 13.4 14.42 14 12 14S7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V12.45M12 9C8.13 9 6 7.5 6 7S8.13 5 12 5 18 6.5 18 7 15.87 9 12 9M7 22H9V24H7V22M15 22H17V24H15V22M11 22H13V24H11V22Z";
var mdiDatabaseSync = "M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23M12,3C16.42,3 20,4.79 20,7C20,9.21 16.42,11 12,11C7.58,11 4,9.21 4,7C4,4.79 7.58,3 12,3M4,9C4,11.21 7.58,13 12,13C13.11,13 14.17,12.89 15.14,12.68C14.19,13.54 13.5,14.67 13.18,15.96L12,16C7.58,16 4,14.21 4,12V9M20,9V11H19.5L18.9,11.03C19.6,10.43 20,9.74 20,9M4,14C4,16.21 7.58,18 12,18L13,17.97C13.09,19.03 13.42,20 13.95,20.88L12,21C7.58,21 4,19.21 4,17V14Z";
var mdiDatabaseSyncOutline = "M12 16C12.41 16 12.81 15.97 13.21 15.94C13.4 15.18 13.72 14.46 14.16 13.83C13.47 13.94 12.74 14 12 14C9.58 14 7.3 13.4 6 12.45V9.64C7.47 10.47 9.61 11 12 11S16.53 10.47 18 9.64V11.19C18.5 11.07 19 11 19.55 11C19.7 11 19.85 11 20 11.03V7C20 4.79 16.42 3 12 3S4 4.79 4 7V17C4 19.21 7.59 21 12 21C12.66 21 13.31 20.96 13.92 20.88C13.57 20.29 13.31 19.64 13.16 18.94C12.79 19 12.41 19 12 19C8.13 19 6 17.5 6 17V14.77C7.61 15.55 9.72 16 12 16M12 5C15.87 5 18 6.5 18 7S15.87 9 12 9 6 7.5 6 7 8.13 5 12 5M23 17.5C23 18.32 22.75 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L19 12V13.5C21.21 13.5 23 15.29 23 17.5M19 18.5L21.25 20.75L19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5Z";
var mdiDeathStar = "M2.05,13H21.95C21.45,18.05 17.19,22 12,22C6.82,22 2.55,18.05 2.05,13M21.95,11H2.05C2.55,5.95 6.82,2 12,2C17.18,2 21.45,5.95 21.95,11M12,6.75A2.5,2.5 0 0,0 9.5,4.25A2.5,2.5 0 0,0 7,6.75A2.5,2.5 0 0,0 9.5,9.25A2.5,2.5 0 0,0 12,6.75Z";
var mdiDeathStarVariant = "M2.05,13H21.94C21.88,13.69 21.74,14.36 21.54,15H14V17H17V19H15V21H12.5V22C12.33,22 12.17,22 12,22C6.82,22 2.55,18.05 2.05,13M21.94,11H2.05C2.55,5.95 6.82,2 12,2C13.62,2 15.15,2.39 16.5,3.08V5H18.5V7H20V9H21.54C21.74,9.64 21.88,10.31 21.94,11M12,6.75A2.5,2.5 0 0,0 9.5,4.25A2.5,2.5 0 0,0 7,6.75A2.5,2.5 0 0,0 9.5,9.25A2.5,2.5 0 0,0 12,6.75Z";
var mdiDeathlyHallows = "M12,2L1,21H23L12,2M12.75,11.47C14.56,11.87 15.7,13.67 15.3,15.5C15,16.75 14,17.75 12.75,18.03V11.47M11.25,18C9.44,17.6 8.3,15.8 8.7,14C9,12.72 10,11.72 11.25,11.44V18M16.88,14.72C16.83,12.35 15.09,10.36 12.75,10V6.29L20.4,19.5H13.07C15.29,19 16.87,17.03 16.88,14.75V14.72M11.25,6.29V10C8.6,10.4 6.77,12.88 7.18,15.54C7.5,17.5 8.97,19.12 10.93,19.55H3.6L11.25,6.29Z";
var mdiDebian = "M18.5,10.57L18.3,10.94C18.56,10.16 18.41,9.31 18.45,8.57L18.38,8.55C18.31,6.7 16.71,4.73 15.29,4.07C14.06,3.5 12.17,3.4 11.3,3.83C11.42,3.72 11.9,3.68 11.75,3.6C10.38,3.73 10.69,4.07 9.64,4.34C9.35,4.62 10.5,4.12 9.87,4.5C9.31,4.63 9.05,4.38 8.22,5.24C8.29,5.36 8.75,4.89 8.37,5.36C7.58,5.27 5.89,7.16 5.53,7.78L5.72,7.82C5.41,8.59 5,9.08 4.95,9.54C4.87,10.68 4.5,12.75 5.03,13.39L4.97,13.92L5.2,14.37L5.08,14.38C5.66,16.21 5.7,14.42 6.47,16.32C6.36,16.28 6.24,16.24 6.08,16C6.06,16.19 6.32,16.69 6.62,17.08L6.5,17.22C6.66,17.53 6.82,17.6 6.93,17.71C6.3,17.36 7.5,18.84 7.63,19.03L7.73,18.86C7.71,19.1 7.9,19.42 8.26,19.87L8.56,19.86C8.69,20.1 9.14,20.54 9.41,20.56L9.23,20.8C9.92,21 9.56,21.09 10.41,21.39L10.24,21.09C10.67,21.46 10.8,21.79 11.41,22.07C12.26,22.37 12.37,22.25 13.23,22.5C12.5,22.5 11.64,22.5 11.06,22.28C7.1,21.21 3.5,16.56 3.74,11.78C3.68,10.81 3.84,9.6 3.68,9.36C3.9,8.62 4.16,7.72 4.69,6.65C4.65,6.58 4.78,6.86 5.05,6.41C5.21,6.05 5.34,5.66 5.55,5.31L5.65,5.28C5.76,4.67 7.08,3.73 7.5,3.26V3.44C8.36,2.63 9.9,2.09 10.76,1.71C10.53,1.96 11.27,1.68 11.8,1.65L11.31,1.93C11.94,1.77 11.91,2 12.56,1.9C12.33,1.93 12.06,2 12.1,2.06C12.82,2.14 12.94,1.84 13.61,2.06L13.56,1.86C14.5,2.2 14.69,2.14 15.7,2.68C16.06,2.69 16.1,2.46 16.63,2.68C16.73,2.84 16.61,2.87 17.27,3.27C17.34,3.24 17.14,3.05 17,2.9C18.3,3.61 19.75,5.12 20.18,6.74C19.77,6 20.14,7.13 20,7.07C20.18,7.56 20.33,8.07 20.43,8.6C20.31,8.17 20.04,7.12 19.57,6.45C19.54,6.88 18.97,6.15 19.28,7.11C19.5,7.45 19.33,6.76 19.62,7.36C19.62,7.65 19.73,7.94 19.8,8.31C19.7,8.29 19.58,7.9 19.5,8C19.6,8.5 19.77,8.72 19.83,8.76C19.8,8.84 19.71,8.68 19.71,9C19.75,9.74 19.92,9.43 20,9.46C19.91,9.83 19.59,10.25 19.75,10.88L19.55,10.32C19.5,10.85 19.66,10.95 19.42,11.6C19.6,11 19.58,10.5 19.41,10.75C19.5,11.57 18.76,12.2 18.83,12.73L18.62,12.44C18.05,13.27 18.61,12.89 18.22,13.5C18.36,13.27 18.15,13.42 18.33,13.14C18.21,13.15 17.78,13.67 17.39,13.97C15.85,15.2 14,15.37 12.24,14.7H12.23C12.24,14.66 12.23,14.61 12.11,14.53C10.6,13.38 9.71,12.4 10,10.12C10.25,9.95 10.31,9 10.84,8.67C11.16,7.96 12.12,7.31 13.15,7.29C14.2,7.23 15.09,7.85 15.54,8.43C14.72,7.68 13.4,7.45 12.26,8C11.11,8.53 10.42,9.8 10.5,11.07C10.56,11 10.6,11.05 10.62,10.89C10.59,13.36 13.28,15.17 15.22,14.26L15.25,14.31C16.03,14.09 15.93,13.92 16.44,13.56C16.4,13.65 16.1,13.86 16.28,13.86C16.53,13.8 17.31,13.07 17.7,12.73C17.87,12.35 17.6,12.5 17.85,12.04L18.15,11.89C18.32,11.41 18.5,11.14 18.5,10.57";
var mdiDebugStepInto = "M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,2V13L17.5,8.5L18.92,9.92L12,16.84L5.08,9.92L6.5,8.5L11,13V2H13Z";
var mdiDebugStepOut = "M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,16H11V6L6.5,10.5L5.08,9.08L12,2.16L18.92,9.08L17.5,10.5L13,6V16Z";
var mdiDebugStepOver = "M12,14A2,2 0 0,1 14,16A2,2 0 0,1 12,18A2,2 0 0,1 10,16A2,2 0 0,1 12,14M23.46,8.86L21.87,15.75L15,14.16L18.8,11.78C17.39,9.5 14.87,8 12,8C8.05,8 4.77,10.86 4.12,14.63L2.15,14.28C2.96,9.58 7.06,6 12,6C15.58,6 18.73,7.89 20.5,10.72L23.46,8.86Z";
var mdiDecagram = "M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12Z";
var mdiDecagramOutline = "M23,12L20.56,14.78L20.9,18.46L17.29,19.28L15.4,22.46L12,21L8.6,22.47L6.71,19.29L3.1,18.47L3.44,14.78L1,12L3.44,9.21L3.1,5.53L6.71,4.72L8.6,1.54L12,3L15.4,1.54L17.29,4.72L20.9,5.54L20.56,9.22L23,12M20.33,12L18.5,9.89L18.74,7.1L16,6.5L14.58,4.07L12,5.18L9.42,4.07L8,6.5L5.26,7.09L5.5,9.88L3.67,12L5.5,14.1L5.26,16.9L8,17.5L9.42,19.93L12,18.81L14.58,19.92L16,17.5L18.74,16.89L18.5,14.1L20.33,12Z";
var mdiDecimal = "M10 7A3 3 0 0 0 7 10V13A3 3 0 0 0 13 13V10A3 3 0 0 0 10 7M11 13A1 1 0 0 1 9 13V10A1 1 0 0 1 11 10M17 7A3 3 0 0 0 14 10V13A3 3 0 0 0 20 13V10A3 3 0 0 0 17 7M18 13A1 1 0 0 1 16 13V10A1 1 0 0 1 18 10M6 15A1 1 0 1 1 5 14A1 1 0 0 1 6 15Z";
var mdiDecimalComma = "M10 7A3 3 0 0 1 13 10V13A3 3 0 0 1 7 13V10A3 3 0 0 1 10 7M10 9A1 1 0 0 0 9 10V13A1 1 0 0 0 11 13V10A1 1 0 0 0 10 9M17 7A3 3 0 0 1 20 10V13A3 3 0 0 1 14 13V10A3 3 0 0 1 17 7M17 9A1 1 0 0 0 16 10V13A1 1 0 0 0 18 13V10A1 1 0 0 0 17 9M5 14A1 1 0 0 0 4 15L5 18H6V15A1 1 0 0 0 5 14Z";
var mdiDecimalCommaDecrease = "M5 13V16H4L3 13A1 1 0 0 1 5 13M15 16V14L12 17L15 20V18H21V16M12 11A3 3 0 0 1 6 11V8A3 3 0 0 1 12 8M10 8A1 1 0 0 0 8 8V11A1 1 0 0 0 10 11Z";
var mdiDecimalCommaIncrease = "M9 5A3 3 0 0 0 6 8V11A3 3 0 0 0 12 11V8A3 3 0 0 0 9 5M10 11A1 1 0 0 1 8 11V8A1 1 0 0 1 10 8M16 14A3 3 0 0 0 19 11V8A3 3 0 0 0 13 8V11A3 3 0 0 0 16 14M15 8A1 1 0 0 1 17 8V11A1 1 0 0 1 15 11M19 20V18H13V16H19V14L22 17M5 13V16H4L3 13A1 1 0 0 1 5 13Z";
var mdiDecimalDecrease = "M12,17L15,20V18H21V16H15V14L12,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z";
var mdiDecimalIncrease = "M22,17L19,20V18H13V16H19V14L22,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M16,5A3,3 0 0,1 19,8V11A3,3 0 0,1 16,14A3,3 0 0,1 13,11V8A3,3 0 0,1 16,5M16,7A1,1 0 0,0 15,8V11A1,1 0 0,0 16,12A1,1 0 0,0 17,11V8A1,1 0 0,0 16,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z";
var mdiDelete = "M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z";
var mdiDeleteAlert = "M17 4V6H3V4H6.5L7.5 3H12.5L13.5 4H17M4 19V7H16V19C16 20.1 15.1 21 14 21H6C4.9 21 4 20.1 4 19M19 15H21V17H19V15M19 7H21V13H19V7Z";
var mdiDeleteAlertOutline = "M4 19V7H16V19C16 20.1 15.1 21 14 21H6C4.9 21 4 20.1 4 19M6 9V19H14V9H6M13.5 4H17V6H3V4H6.5L7.5 3H12.5L13.5 4M19 17V15H21V17H19M19 13V7H21V13H19Z";
var mdiDeleteCircle = "M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M17,7H14.5L13.5,6H10.5L9.5,7H7V9H17V7M9,18H15A1,1 0 0,0 16,17V10H8V17A1,1 0 0,0 9,18Z";
var mdiDeleteCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M16,10V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V10H16M13.5,6L14.5,7H17V9H7V7H9.5L10.5,6H13.5Z";
var mdiDeleteClock = "M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13M23 16C23 19.87 19.87 23 16 23C14.09 23 12.36 22.24 11.1 21H8C6.9 21 6 20.1 6 19V7H18V9.29C20.89 10.15 23 12.83 23 16M16 11C13.24 11 11 13.24 11 16C11 18.76 13.24 21 16 21C18.76 21 21 18.76 21 16C21 13.24 18.76 11 16 11M19 4V6H5V4H8.5L9.5 3H14.5L15.5 4H19Z";
var mdiDeleteClockOutline = "M15 13H16.5V15.82L18.94 17.23L18.19 18.53L15 16.69V13M23 16C23 19.87 19.87 23 16 23C14.09 23 12.36 22.24 11.1 21H8C6.9 21 6 20.1 6 19V7H18V9.29C20.89 10.15 23 12.83 23 16M9 16C9 12.13 12.13 9 16 9H8V19H9.67C9.24 18.09 9 17.07 9 16M16 11C13.24 11 11 13.24 11 16C11 18.76 13.24 21 16 21C18.76 21 21 18.76 21 16C21 13.24 18.76 11 16 11M15.5 4H19V6H5V4H8.5L9.5 3H14.5L15.5 4Z";
var mdiDeleteEmpty = "M20.37,8.91L19.37,10.64L7.24,3.64L8.24,1.91L11.28,3.66L12.64,3.29L16.97,5.79L17.34,7.16L20.37,8.91M6,19V7H11.07L18,11V19A2,2 0 0,1 16,21H8A2,2 0 0,1 6,19Z";
var mdiDeleteEmptyOutline = "M20.37,8.91L19.37,10.64L7.24,3.64L8.24,1.91L11.28,3.66L12.64,3.29L16.97,5.79L17.34,7.16L20.37,8.91M6,19V7H11.07L18,11V19A2,2 0 0,1 16,21H8A2,2 0 0,1 6,19M8,19H16V12.2L10.46,9H8V19Z";
var mdiDeleteForever = "M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8.46,11.88L9.87,10.47L12,12.59L14.12,10.47L15.53,11.88L13.41,14L15.53,16.12L14.12,17.53L12,15.41L9.88,17.53L8.47,16.12L10.59,14L8.46,11.88M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z";
var mdiDeleteForeverOutline = "M14.12,10.47L12,12.59L9.87,10.47L8.46,11.88L10.59,14L8.47,16.12L9.88,17.53L12,15.41L14.12,17.53L15.53,16.12L13.41,14L15.53,11.88L14.12,10.47M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8,9H16V19H8V9Z";
var mdiDeleteOff = "M2 5.27L3.28 4L5 5.72L5.28 6L6.28 7L18 18.72L20 20.72L18.73 22L17.27 20.54C16.93 20.83 16.5 21 16 21H8C6.9 21 6 20.1 6 19V9.27L2 5.27M19 4V6H7.82L5.82 4H8.5L9.5 3H14.5L15.5 4H19M18 7V16.18L8.82 7H18Z";
var mdiDeleteOffOutline = "M2 5.27L3.28 4L5 5.72L5.28 6L6.28 7L8.28 9L16 16.72L18 18.72L20 20.72L18.73 22L17.27 20.54C16.93 20.83 16.5 21 16 21H8C6.9 21 6 20.1 6 19V9.27L2 5.27M8 19H15.73L8 11.27V19M18 7V16.18L16 14.18V9H10.82L8.82 7H18M15.5 4H19V6H7.82L5.82 4H8.5L9.5 3H14.5L15.5 4Z";
var mdiDeleteOutline = "M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8,9H16V19H8V9M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z";
var mdiDeleteRestore = "M14,14H16L12,10L8,14H10V18H14V14M6,7H18V19C18,19.5 17.8,20 17.39,20.39C17,20.8 16.5,21 16,21H8C7.5,21 7,20.8 6.61,20.39C6.2,20 6,19.5 6,19V7M19,4V6H5V4H8.5L9.5,3H14.5L15.5,4H19Z";
var mdiDeleteSweep = "M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M3,18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8H3V18M14,5H11L10,4H6L5,5H2V7H14V5Z";
var mdiDeleteSweepOutline = "M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M11,10V18H5V10H11M13,8H3V18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8M14,5H11L10,4H6L5,5H2V7H14V5Z";
var mdiDeleteVariant = "M21.03,3L18,20.31C17.83,21.27 17,22 16,22H8C7,22 6.17,21.27 6,20.31L2.97,3H21.03M5.36,5L8,20H16L18.64,5H5.36M9,18V14H13V18H9M13,13.18L9.82,10L13,6.82L16.18,10L13,13.18Z";
var mdiDelta = "M12,7.77L18.39,18H5.61L12,7.77M12,4L2,20H22";
var mdiDesk = "M3 6H21C21.55 6 22 6.45 22 7C22 7.55 21.55 8 21 8V19H19V17H15V19H13V8H5V19H3V8C2.45 8 2 7.55 2 7C2 6.45 2.45 6 3 6M16 10.5V11H18V10.5C18 10.22 17.78 10 17.5 10H16.5C16.22 10 16 10.22 16 10.5M16 14.5V15H18V14.5C18 14.22 17.78 14 17.5 14H16.5C16.22 14 16 14.22 16 14.5Z";
var mdiDeskLamp = "M10.85,2L9.18,4.5L10.32,5.25L7.14,10C7.1,10 7.05,10 7,10A2,2 0 0,0 5,12C5,12.94 5.66,13.75 6.58,13.95L10.62,20H7V22H17V20H13L8.53,13.28C8.83,12.92 9,12.47 9,12C9,11.7 8.93,11.4 8.8,11.13L12,6.37C11.78,8.05 12.75,9.89 14.45,11L18.89,4.37C17.2,3.24 15.12,3.04 13.65,3.87L10.85,2M18.33,7L16.67,9.5C17.35,9.95 18.29,9.77 18.75,9.08C19.21,8.39 19,7.46 18.33,7Z";
var mdiDeskphone = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,5V19H19V5H15M5,5V9H13V5H5M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M5,14V16H7V14H5M8,14V16H10V14H8M11,14V16H13V14H11M11,17V19H13V17H11M8,17V19H10V17H8M5,17V19H7V17H5Z";
var mdiDesktopClassic = "M6,2C4.89,2 4,2.89 4,4V12C4,13.11 4.89,14 6,14H18C19.11,14 20,13.11 20,12V4C20,2.89 19.11,2 18,2H6M6,4H18V12H6V4M4,15C2.89,15 2,15.89 2,17V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V17C22,15.89 21.11,15 20,15H4M8,17H20V20H8V17M9,17.75V19.25H13V17.75H9M15,17.75V19.25H19V17.75H15Z";
var mdiDesktopMac = "M21,14H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10L8,21V22H16V21L14,18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z";
var mdiDesktopMacDashboard = "M21,14V4H3V14H21M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H14L16,21V22H8V21L10,18H3C1.89,18 1,17.1 1,16V4C1,2.89 1.89,2 3,2H21M4,5H15V10H4V5M16,5H20V7H16V5M20,8V13H16V8H20M4,11H9V13H4V11M10,11H15V13H10V11Z";
var mdiDesktopTower = "M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,4V6H16V4H8M16,8H8V10H16V8M16,18H14V20H16V18Z";
var mdiDesktopTowerMonitor = "M22,18H17A1,1 0 0,1 16,17V7A1,1 0 0,1 17,6H22A1,1 0 0,1 23,7V17A1,1 0 0,1 22,18M22,8H17V9H22V8M22,10H17V11H22V10M9,15V17H10V18H5V17H6V15H2A1,1 0 0,1 1,14V7A1,1 0 0,1 2,6H13A1,1 0 0,1 14,7V14A1,1 0 0,1 13,15H9M12,8H3V13H12V8Z";
var mdiDetails = "M6.38,6H17.63L12,16L6.38,6M3,4L12,20L21,4H3Z";
var mdiDevTo = "M7.73 11.93C7.73 13.65 7.71 13.76 7.5 14C7.31 14.17 7.12 14.23 6.74 14.23L6.23 14.24L6.2 11.97L6.18 9.7H6.7C7.05 9.7 7.3 9.77 7.47 9.91C7.71 10.12 7.73 10.16 7.73 11.93M22 7.5V16.5C22 17.61 21.11 18.5 20 18.5H4C2.89 18.5 2 17.61 2 16.5V7.5C2 6.39 2.89 5.5 4 5.5H20C21.11 5.5 22 6.39 22 7.5M8.93 11.73C8.9 9.89 8.88 9.74 8.64 9.34C8.24 8.66 7.79 8.5 6.28 8.5H5V15.5H6.21C7.54 15.5 8.1 15.33 8.5 14.79C8.91 14.26 9 13.81 8.93 11.73M13.12 8.5H11.64C10.15 8.5 10.14 8.5 9.93 8.78S9.7 9.21 9.7 12V14.96L9.97 15.23C10.22 15.5 10.28 15.5 11.68 15.5H13.12V14.31L12.03 14.27L10.93 14.24V12.6L11.61 12.57L12.27 12.53V11.34H10.88V9.7H13.12V8.5M19 8.56C19 8.5 18.7 8.5 18.34 8.5L17.66 8.56L17.07 10.91C16.69 12.39 16.45 13.18 16.4 13.04C16.32 12.77 15.26 8.6 15.26 8.55C15.26 8.5 14.95 8.5 14.58 8.5H13.89L14.3 10.05C14.5 10.92 14.89 12.33 15.11 13.2C15.45 14.55 15.57 14.85 15.86 15.14C16.06 15.36 16.31 15.5 16.47 15.5C16.8 15.5 17.23 15.16 17.37 14.77C17.5 14.5 19 8.69 19 8.56Z";
var mdiDeveloperBoard = "M22,9V7H20V5A2,2 0 0,0 18,3H4A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21H18A2,2 0 0,0 20,19V17H22V15H20V13H22V11H20V9H22M18,19H4V5H18V19M6,13H11V17H6V13M12,7H16V10H12V7M6,7H11V12H6V7M12,11H16V17H12V11Z";
var mdiDeviantart = "M6,6H12L14,2H18V6L14.5,13H18V18H12L10,22H6V18L9.5,11H6V6Z";
var mdiDevices = "M3 6H21V4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H7V18H3V6M13 12H9V13.78C8.39 14.33 8 15.11 8 16C8 16.89 8.39 17.67 9 18.22V20H13V18.22C13.61 17.67 14 16.88 14 16S13.61 14.33 13 13.78V12M11 17.5C10.17 17.5 9.5 16.83 9.5 16S10.17 14.5 11 14.5 12.5 15.17 12.5 16 11.83 17.5 11 17.5M22 8H16C15.5 8 15 8.5 15 9V19C15 19.5 15.5 20 16 20H22C22.5 20 23 19.5 23 19V9C23 8.5 22.5 8 22 8M21 18H17V10H21V18Z";
var mdiDiabetes = "M14.73 2.29A1 1 0 0 1 16.14 3.7L13 6.79L13.76 7.74L15.7 12.74A1.46 1.46 0 0 1 15.36 14.29L12.27 17.38A1.55 1.55 0 0 1 10.15 17.38L5.55 12.78A1.37 1.37 0 0 1 5.15 11.78L4.65 5.34H5.72A1 1 0 0 1 6.47 5.64L6.61 5.81L7.66 9.29M7.66 22L2 16.36L4.12 14.24L9.78 19.9M19.5 4.5S17 7.26 17 9A2.5 2.5 0 1 0 22 9C22 7.26 19.5 4.5 19.5 4.5Z";
var mdiDialpad = "M12,19A2,2 0 0,0 10,21A2,2 0 0,0 12,23A2,2 0 0,0 14,21A2,2 0 0,0 12,19M6,1A2,2 0 0,0 4,3A2,2 0 0,0 6,5A2,2 0 0,0 8,3A2,2 0 0,0 6,1M6,7A2,2 0 0,0 4,9A2,2 0 0,0 6,11A2,2 0 0,0 8,9A2,2 0 0,0 6,7M6,13A2,2 0 0,0 4,15A2,2 0 0,0 6,17A2,2 0 0,0 8,15A2,2 0 0,0 6,13M18,5A2,2 0 0,0 20,3A2,2 0 0,0 18,1A2,2 0 0,0 16,3A2,2 0 0,0 18,5M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13M18,13A2,2 0 0,0 16,15A2,2 0 0,0 18,17A2,2 0 0,0 20,15A2,2 0 0,0 18,13M18,7A2,2 0 0,0 16,9A2,2 0 0,0 18,11A2,2 0 0,0 20,9A2,2 0 0,0 18,7M12,7A2,2 0 0,0 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9A2,2 0 0,0 12,7M12,1A2,2 0 0,0 10,3A2,2 0 0,0 12,5A2,2 0 0,0 14,3A2,2 0 0,0 12,1Z";
var mdiDiameter = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,15V13H7V15L4,12L7,9V11H17V9L20,12L17,15Z";
var mdiDiameterOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16,15V13H8V15L5,12L8,9V11H16V9L19,12L16,15Z";
var mdiDiameterVariant = "M4.15,21.46L5.47,19.58C3.35,17.74 2,15.03 2,12A10,10 0 0,1 12,2C13.78,2 15.44,2.46 16.89,3.27L18.21,1.39L19.85,2.54L18.53,4.42C20.65,6.26 22,8.97 22,12A10,10 0 0,1 12,22C10.22,22 8.56,21.54 7.11,20.73L5.79,22.61L4.15,21.46M12,4A8,8 0 0,0 4,12C4,14.35 5,16.46 6.63,17.93L15.73,4.92C14.62,4.33 13.35,4 12,4M12,20A8,8 0 0,0 20,12C20,9.65 19,7.54 17.37,6.07L8.27,19.08C9.38,19.67 10.65,20 12,20Z";
var mdiDiamond = "M6,2L2,8L12,22L22,8L18,2H6Z";
var mdiDiamondOutline = "M18,2H6L2,8L12,22L22,8L18,2M4.43,8L7.07,4H16.93L19.57,8L12,18.56L4.43,8Z";
var mdiDiamondStone = "M16,9H19L14,16M10,9H14L12,17M5,9H8L10,16M15,4H17L19,7H16M11,4H13L14,7H10M7,4H9L8,7H5M6,2L2,8L12,22L22,8L18,2H6Z";
var mdiDice1 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiDice1Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M12 10.5C11.17 10.5 10.5 11.17 10.5 12S11.17 13.5 12 13.5 13.5 12.83 13.5 12 12.83 10.5 12 10.5";
var mdiDice2 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z";
var mdiDice2Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M7.5 6C6.67 6 6 6.67 6 7.5S6.67 9 7.5 9 9 8.33 9 7.5 8.33 6 7.5 6M16.5 15C15.67 15 15 15.67 15 16.5C15 17.33 15.67 18 16.5 18C17.33 18 18 17.33 18 16.5C18 15.67 17.33 15 16.5 15Z";
var mdiDice3 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z";
var mdiDice3Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M12 10.5C11.2 10.5 10.5 11.2 10.5 12S11.2 13.5 12 13.5 13.5 12.8 13.5 12 12.8 10.5 12 10.5M7.5 6C6.7 6 6 6.7 6 7.5S6.7 9 7.5 9 9 8.3 9 7.5 8.3 6 7.5 6M16.5 15C15.7 15 15 15.7 15 16.5C15 17.3 15.7 18 16.5 18C17.3 18 18 17.3 18 16.5C18 15.7 17.3 15 16.5 15Z";
var mdiDice4 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z";
var mdiDice4Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.9 20.11 3 19 3M7.5 6C6.67 6 6 6.67 6 7.5S6.67 9 7.5 9 9 8.33 9 7.5 8.33 6 7.5 6M16.5 15C15.67 15 15 15.67 15 16.5C15 17.33 15.67 18 16.5 18C17.33 18 18 17.33 18 16.5C18 15.67 17.33 15 16.5 15M16.5 6C15.67 6 15 6.67 15 7.5S15.67 9 16.5 9C17.33 9 18 8.33 18 7.5S17.33 6 16.5 6M7.5 15C6.67 15 6 15.67 6 16.5C6 17.33 6.67 18 7.5 18S9 17.33 9 16.5C9 15.67 8.33 15 7.5 15Z";
var mdiDice5 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z";
var mdiDice5Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7.5 6C6.7 6 6 6.7 6 7.5S6.7 9 7.5 9 9 8.3 9 7.5 8.3 6 7.5 6M16.5 15C15.7 15 15 15.7 15 16.5C15 17.3 15.7 18 16.5 18C17.3 18 18 17.3 18 16.5C18 15.7 17.3 15 16.5 15M16.5 6C15.7 6 15 6.7 15 7.5S15.7 9 16.5 9C17.3 9 18 8.3 18 7.5S17.3 6 16.5 6M12 10.5C11.2 10.5 10.5 11.2 10.5 12S11.2 13.5 12 13.5 13.5 12.8 13.5 12 12.8 10.5 12 10.5M7.5 15C6.7 15 6 15.7 6 16.5C6 17.3 6.7 18 7.5 18S9 17.3 9 16.5C9 15.7 8.3 15 7.5 15Z";
var mdiDice6 = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,10A2,2 0 0,0 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,10A2,2 0 0,0 5,12A2,2 0 0,0 7,14A2,2 0 0,0 9,12A2,2 0 0,0 7,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z";
var mdiDice6Outline = "M19 5V19H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7.5 6C6.7 6 6 6.7 6 7.5S6.7 9 7.5 9 9 8.3 9 7.5 8.3 6 7.5 6M16.5 15C15.7 15 15 15.7 15 16.5C15 17.3 15.7 18 16.5 18C17.3 18 18 17.3 18 16.5C18 15.7 17.3 15 16.5 15M16.5 10.5C15.7 10.5 15 11.2 15 12S15.7 13.5 16.5 13.5C17.3 13.5 18 12.8 18 12S17.3 10.5 16.5 10.5M16.5 6C15.7 6 15 6.7 15 7.5S15.7 9 16.5 9C17.3 9 18 8.3 18 7.5S17.3 6 16.5 6M7.5 10.5C6.7 10.5 6 11.2 6 12S6.7 13.5 7.5 13.5 9 12.8 9 12 8.3 10.5 7.5 10.5M7.5 15C6.7 15 6 15.7 6 16.5C6 17.3 6.7 18 7.5 18S9 17.3 9 16.5C9 15.7 8.3 15 7.5 15Z";
var mdiDiceD10 = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M14.07 8.21C15.5 8.21 16.64 9.36 16.64 10.78V13.42C16.64 14.84 15.5 16 14.07 16C12.64 16 11.5 14.84 11.5 13.42V10.78C11.5 9.36 12.65 8.21 14.07 8.21M10.36 8.41H10.5V16H9V10.21L7.22 10.76V9.53L10.36 8.41M14.06 9.65C13.47 9.65 13 10.13 13 10.71V13.5C13 14.07 13.47 14.54 14.06 14.54C14.64 14.54 15.14 14.06 15.14 13.5V10.71C15.14 10.12 14.64 9.65 14.06 9.65Z";
var mdiDiceD10Outline = "M10.5 16H9V10.21L7.22 10.76V9.53L10.36 8.41H10.5V16M14.07 8.21C15.5 8.21 16.64 9.36 16.64 10.78V13.42C16.64 14.84 15.5 16 14.07 16C12.64 16 11.5 14.84 11.5 13.42V10.78C11.5 9.36 12.65 8.21 14.07 8.21M14.06 9.65C13.47 9.65 13 10.13 13 10.71V13.5C13 14.07 13.47 14.54 14.06 14.54C14.64 14.54 15.14 14.06 15.14 13.5V10.71C15.14 10.12 14.64 9.65 14.06 9.65M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12Z";
var mdiDiceD12 = "M12 2L1.5 9.64L5.5 22H18.5L22.5 9.64L12 2M10.5 17H8.89V10.89L7 11.47V10.19L10.31 9H10.5V17M17 17H11.66V15.91C11.66 15.91 15.23 12.45 15.23 11.4C15.23 10.12 14.18 10.25 14.18 10.25C13.5 10.3 13 10.87 13 11.55H11.44C11.5 10.09 12.72 8.94 14.27 9C16.74 9 16.77 10.85 16.77 11.3C16.77 13.07 13.58 15.77 13.58 15.77L17 15.75V17Z";
var mdiDiceD12Outline = "M12,2L1.5,9.64L5.5,22H18.5L22.5,9.64L12,2M17,20H7L3.85,10.4L12,4.47L20.15,10.4L17,20M17,15.75V17H11.66V15.91C11.66,15.91 15.23,12.45 15.23,11.4C15.23,10.12 14.18,10.25 14.18,10.25C13.5,10.3 13,10.87 13,11.55H11.44C11.5,10.09 12.72,8.94 14.27,9C16.74,9 16.77,10.85 16.77,11.3C16.77,13.07 13.58,15.77 13.58,15.77L17,15.75M10.5,17H8.89V10.89L7,11.47V10.19L10.31,9H10.5V17Z";
var mdiDiceD20 = "M20.47 6.62L12.57 2.18C12.41 2.06 12.21 2 12 2S11.59 2.06 11.43 2.18L3.53 6.62C3.21 6.79 3 7.12 3 7.5V16.5C3 16.88 3.21 17.21 3.53 17.38L11.43 21.82C11.59 21.94 11.79 22 12 22S12.41 21.94 12.57 21.82L20.47 17.38C20.79 17.21 21 16.88 21 16.5V7.5C21 7.12 20.79 6.79 20.47 6.62M11.45 15.96L6.31 15.93V14.91C6.31 14.91 9.74 11.58 9.75 10.57C9.75 9.33 8.73 9.46 8.73 9.46S7.75 9.5 7.64 10.71L6.14 10.76C6.14 10.76 6.18 8.26 8.83 8.26C11.2 8.26 11.23 10.04 11.23 10.5C11.23 12.18 8.15 14.77 8.15 14.77L11.45 14.76V15.96M17.5 13.5C17.5 14.9 16.35 16.05 14.93 16.05C13.5 16.05 12.36 14.9 12.36 13.5V10.84C12.36 9.42 13.5 8.27 14.93 8.27S17.5 9.42 17.5 10.84V13.5M16 10.77V13.53C16 14.12 15.5 14.6 14.92 14.6C14.34 14.6 13.86 14.12 13.86 13.53V10.77C13.86 10.18 14.34 9.71 14.92 9.71C15.5 9.71 16 10.18 16 10.77Z";
var mdiDiceD20Outline = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M14.93,8.27A2.57,2.57 0 0,1 17.5,10.84V13.5C17.5,14.9 16.35,16.05 14.93,16.05C13.5,16.05 12.36,14.9 12.36,13.5V10.84A2.57,2.57 0 0,1 14.93,8.27M14.92,9.71C14.34,9.71 13.86,10.18 13.86,10.77V13.53C13.86,14.12 14.34,14.6 14.92,14.6C15.5,14.6 16,14.12 16,13.53V10.77C16,10.18 15.5,9.71 14.92,9.71M11.45,14.76V15.96L6.31,15.93V14.91C6.31,14.91 9.74,11.58 9.75,10.57C9.75,9.33 8.73,9.46 8.73,9.46C8.73,9.46 7.75,9.5 7.64,10.71L6.14,10.76C6.14,10.76 6.18,8.26 8.83,8.26C11.2,8.26 11.23,10.04 11.23,10.5C11.23,12.18 8.15,14.77 8.15,14.77L11.45,14.76Z";
var mdiDiceD4 = "M10.25 15.15L11.92 12.47V15.15H10.25M21.92 21H2.08C1.24 21 .72 20.08 1.16 19.36L11.08 3.13C11.5 2.44 12.5 2.44 12.92 3.13L22.84 19.36C23.28 20.08 22.76 21 21.92 21M14.29 15.15H13.43V10.42H11.91L8.75 15.41L8.82 16.36H11.92V18H13.43V16.36H14.29V15.15Z";
var mdiDiceD4Outline = "M13.43,15.15H14.29V16.36H13.43V18H11.92V16.36H8.82L8.75,15.41L11.91,10.42H13.43V15.15M10.25,15.15H11.92V12.47L10.25,15.15M22,21H2C1.64,21 1.31,20.81 1.13,20.5C0.95,20.18 0.96,19.79 1.15,19.5L11.15,3C11.5,2.38 12.5,2.38 12.86,3L22.86,19.5C23.04,19.79 23.05,20.18 22.87,20.5C22.69,20.81 22.36,21 22,21M3.78,19H20.23L12,5.43L3.78,19Z";
var mdiDiceD6 = "M13.05 13.5C13.05 14.27 12.61 14.83 12 14.83S10.85 14.27 10.85 13.5L10.83 12.78C10.83 12.78 11.21 12 11.95 12.1C12.56 12.1 13.05 12.73 13.05 13.5M21 5V19C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H19C20.11 3 21 3.9 21 5M14.55 13.41C14.5 11.45 13.19 10.87 12.53 10.87C11.41 10.87 10.86 11.53 10.86 11.53S10.89 9.5 13.39 9.53V8.33C13.39 8.33 9.33 7.94 9.3 12.66C9.27 16.86 12.77 16 12.77 16S14.61 15.47 14.55 13.41Z";
var mdiDiceD6Outline = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5M13.39,9.53C10.89,9.5 10.86,11.53 10.86,11.53C10.86,11.53 11.41,10.87 12.53,10.87C13.19,10.87 14.5,11.45 14.55,13.41C14.61,15.47 12.77,16 12.77,16C12.77,16 9.27,16.86 9.3,12.66C9.33,7.94 13.39,8.33 13.39,8.33V9.53M11.95,12.1C11.21,12 10.83,12.78 10.83,12.78L10.85,13.5C10.85,14.27 11.39,14.83 12,14.83C12.61,14.83 13.05,14.27 13.05,13.5C13.05,12.73 12.56,12.1 11.95,12.1Z";
var mdiDiceD8 = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 8.25C13.31 8.25 14.38 9.2 14.38 10.38C14.38 11.07 14 11.68 13.44 12.07C14.14 12.46 14.6 13.13 14.6 13.9C14.6 15.12 13.44 16.1 12 16.1C10.56 16.1 9.4 15.12 9.4 13.9C9.4 13.13 9.86 12.46 10.56 12.07C10 11.68 9.63 11.07 9.63 10.38C9.63 9.2 10.69 8.25 12 8.25M12 9.5C11.5 9.5 11.1 9.95 11.1 10.5C11.1 11.05 11.5 11.5 12 11.5C12.5 11.5 12.9 11.05 12.9 10.5C12.9 9.95 12.5 9.5 12 9.5M12 12.65C11.39 12.65 10.9 13.14 10.9 13.75C10.9 14.36 11.39 14.85 12 14.85C12.61 14.85 13.1 14.36 13.1 13.75C13.1 13.14 12.61 12.65 12 12.65Z";
var mdiDiceD8Outline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12M12 8.25C13.31 8.25 14.38 9.2 14.38 10.38C14.38 11.07 14 11.68 13.44 12.07C14.14 12.46 14.6 13.13 14.6 13.9C14.6 15.12 13.44 16.1 12 16.1C10.56 16.1 9.4 15.12 9.4 13.9C9.4 13.13 9.86 12.46 10.56 12.07C10 11.68 9.63 11.07 9.63 10.38C9.63 9.2 10.69 8.25 12 8.25M12 12.65C11.39 12.65 10.9 13.14 10.9 13.75C10.9 14.36 11.39 14.85 12 14.85C12.61 14.85 13.1 14.36 13.1 13.75C13.1 13.14 12.61 12.65 12 12.65M12 9.5C11.5 9.5 11.1 9.95 11.1 10.5C11.1 11.05 11.5 11.5 12 11.5C12.5 11.5 12.9 11.05 12.9 10.5C12.9 9.95 12.5 9.5 12 9.5";
var mdiDiceMultiple = "M19.78,3H11.22C10.55,3 10,3.55 10,4.22V8H16V14H19.78C20.45,14 21,13.45 21,12.78V4.22C21,3.55 20.45,3 19.78,3M12.44,6.67C11.76,6.67 11.21,6.12 11.21,5.44C11.21,4.76 11.76,4.21 12.44,4.21A1.23,1.23 0 0,1 13.67,5.44C13.67,6.12 13.12,6.67 12.44,6.67M18.56,12.78C17.88,12.79 17.33,12.24 17.32,11.56C17.31,10.88 17.86,10.33 18.54,10.32C19.22,10.31 19.77,10.86 19.78,11.56C19.77,12.23 19.23,12.77 18.56,12.78M18.56,6.67C17.88,6.68 17.33,6.13 17.32,5.45C17.31,4.77 17.86,4.22 18.54,4.21C19.22,4.2 19.77,4.75 19.78,5.44C19.78,6.12 19.24,6.66 18.56,6.67M4.22,10H12.78A1.22,1.22 0 0,1 14,11.22V19.78C14,20.45 13.45,21 12.78,21H4.22C3.55,21 3,20.45 3,19.78V11.22C3,10.55 3.55,10 4.22,10M8.5,14.28C7.83,14.28 7.28,14.83 7.28,15.5C7.28,16.17 7.83,16.72 8.5,16.72C9.17,16.72 9.72,16.17 9.72,15.5A1.22,1.22 0 0,0 8.5,14.28M5.44,11.22C4.77,11.22 4.22,11.77 4.22,12.44A1.22,1.22 0 0,0 5.44,13.66C6.11,13.66 6.66,13.11 6.66,12.44V12.44C6.66,11.77 6.11,11.22 5.44,11.22M11.55,17.33C10.88,17.33 10.33,17.88 10.33,18.55C10.33,19.22 10.88,19.77 11.55,19.77A1.22,1.22 0 0,0 12.77,18.55H12.77C12.77,17.88 12.23,17.34 11.56,17.33H11.55Z";
var mdiDiceMultipleOutline = "M14 8C13.45 8 13 7.55 13 7S13.45 6 14 6C14.55 6 15 6.45 15 7C15 7.55 14.55 8 14 8M12 12V19H5V12H12M12.78 10H4.22C3.55 10 3 10.55 3 11.22V19.78C3 20.45 3.55 21 4.22 21H12.78C13.45 21 14 20.45 14 19.78V11.22C14 10.55 13.45 10 12.78 10M19.78 3H11.22C10.55 3 10 3.55 10 4.22V8H12V5H19V12H16V14H19.78C20.45 14 21 13.45 21 12.78V4.22C21 3.55 20.45 3 19.78 3M17 8C16.45 8 16 7.55 16 7S16.45 6 17 6C17.55 6 18 6.45 18 7C18 7.55 17.55 8 17 8M17 11C16.45 11 16 10.55 16 10S16.45 9 17 9C17.55 9 18 9.45 18 10C18 10.55 17.55 11 17 11M7 15C6.45 15 6 14.55 6 14S6.45 13 7 13C7.55 13 8 13.45 8 14C8 14.55 7.55 15 7 15M10 18C9.45 18 9 17.55 9 17S9.45 16 10 16C10.55 16 11 16.45 11 17C11 17.55 10.55 18 10 18";
var mdiDigitalOcean = "M6 12H2C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22V18H8V14H12V18C15.32 18 18 15.31 18 12C18 8.69 15.31 6 12 6C8.69 6 6 8.69 6 12M8 18V21H5V18H8M3 16H5V18H3V16Z";
var mdiDipSwitch = "M3,4H7A1,1 0 0,1 8,5V19A1,1 0 0,1 7,20H3A1,1 0 0,1 2,19V5A1,1 0 0,1 3,4M10,4H14A1,1 0 0,1 15,5V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V5A1,1 0 0,1 10,4M17,4H21A1,1 0 0,1 22,5V19A1,1 0 0,1 21,20H17A1,1 0 0,1 16,19V5A1,1 0 0,1 17,4M4,18H6V13H4V18M11,11H13V6H11V11M18,18H20V13H18V18Z";
var mdiDirections = "M14,14.5V12H10V15H8V11A1,1 0 0,1 9,10H14V7.5L17.5,11M21.71,11.29L12.71,2.29H12.7C12.31,1.9 11.68,1.9 11.29,2.29L2.29,11.29C1.9,11.68 1.9,12.32 2.29,12.71L11.29,21.71C11.68,22.09 12.31,22.1 12.71,21.71L21.71,12.71C22.1,12.32 22.1,11.68 21.71,11.29Z";
var mdiDirectionsFork = "M3,4V12.5L6,9.5L9,13C10,14 10,15 10,15V21H14V14C14,14 14,13 13.47,12C12.94,11 12,10 12,10L9,6.58L11.5,4M18,4L13.54,8.47L14,9C14,9 14.93,10 15.47,11C15.68,11.4 15.8,11.79 15.87,12.13L21,7";
var mdiDisc = "M12,14C10.89,14 10,13.1 10,12C10,10.89 10.89,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiDiscAlert = "M10 14C8.9 14 8 13.1 8 12C8 10.9 8.9 10 10 10C11.1 10 12 10.9 12 12S11.1 14 10 14M10 4C5.6 4 2 7.6 2 12S5.6 20 10 20 18 16.4 18 12 14.4 4 10 4M20 13H22V7H20M20 17H22V15H20V17Z";
var mdiDiscPlayer = "M14.5,10.37C15.54,10.37 16.38,9.53 16.38,8.5C16.38,7.46 15.54,6.63 14.5,6.63C13.46,6.63 12.63,7.46 12.63,8.5A1.87,1.87 0 0,0 14.5,10.37M14.5,1A7.5,7.5 0 0,1 22,8.5C22,10.67 21.08,12.63 19.6,14H9.4C7.93,12.63 7,10.67 7,8.5C7,4.35 10.36,1 14.5,1M6,21V22H4V21H2V15H22V21H20V22H18V21H6M4,18V19H13V18H4M15,17V19H17V17H15M19,17A1,1 0 0,0 18,18A1,1 0 0,0 19,19A1,1 0 0,0 20,18A1,1 0 0,0 19,17Z";
var mdiDiscord = "M22,24L16.75,19L17.38,21H4.5A2.5,2.5 0 0,1 2,18.5V3.5A2.5,2.5 0 0,1 4.5,1H19.5A2.5,2.5 0 0,1 22,3.5V24M12,6.8C9.32,6.8 7.44,7.95 7.44,7.95C8.47,7.03 10.27,6.5 10.27,6.5L10.1,6.33C8.41,6.36 6.88,7.53 6.88,7.53C5.16,11.12 5.27,14.22 5.27,14.22C6.67,16.03 8.75,15.9 8.75,15.9L9.46,15C8.21,14.73 7.42,13.62 7.42,13.62C7.42,13.62 9.3,14.9 12,14.9C14.7,14.9 16.58,13.62 16.58,13.62C16.58,13.62 15.79,14.73 14.54,15L15.25,15.9C15.25,15.9 17.33,16.03 18.73,14.22C18.73,14.22 18.84,11.12 17.12,7.53C17.12,7.53 15.59,6.36 13.9,6.33L13.73,6.5C13.73,6.5 15.53,7.03 16.56,7.95C16.56,7.95 14.68,6.8 12,6.8M9.93,10.59C10.58,10.59 11.11,11.16 11.1,11.86C11.1,12.55 10.58,13.13 9.93,13.13C9.29,13.13 8.77,12.55 8.77,11.86C8.77,11.16 9.28,10.59 9.93,10.59M14.1,10.59C14.75,10.59 15.27,11.16 15.27,11.86C15.27,12.55 14.75,13.13 14.1,13.13C13.46,13.13 12.94,12.55 12.94,11.86C12.94,11.16 13.45,10.59 14.1,10.59Z";
var mdiDishwasher = "M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2M10,4A1,1 0 0,1 11,5A1,1 0 0,1 10,6A1,1 0 0,1 9,5A1,1 0 0,1 10,4M7,4A1,1 0 0,1 8,5A1,1 0 0,1 7,6A1,1 0 0,1 6,5A1,1 0 0,1 7,4M18,20H6V8H18V20M14.67,15.33C14.69,16.03 14.41,16.71 13.91,17.21C12.86,18.26 11.15,18.27 10.09,17.21C9.59,16.71 9.31,16.03 9.33,15.33C9.4,14.62 9.63,13.94 10,13.33C10.37,12.5 10.81,11.73 11.33,11L12,10C13.79,12.59 14.67,14.36 14.67,15.33";
var mdiDishwasherAlert = "M16 2H4C2.9 2 2 2.9 2 4V20C2 21.11 2.9 22 4 22H16C17.11 22 18 21.11 18 20V4C18 2.9 17.11 2 16 2M8 4C8.55 4 9 4.45 9 5S8.55 6 8 6 7 5.55 7 5 7.45 4 8 4M5 4C5.55 4 6 4.45 6 5S5.55 6 5 6 4 5.55 4 5 4.45 4 5 4M16 20H4V8H16V20M12.67 15.33C12.69 16.03 12.41 16.71 11.91 17.21C10.86 18.26 9.15 18.27 8.09 17.21C7.59 16.71 7.31 16.03 7.33 15.33C7.4 14.62 7.63 13.94 8 13.33C8.37 12.5 8.81 11.73 9.33 11L10 10C11.79 12.59 12.67 14.36 12.67 15.33M20 15H22V17H20V15M20 7H22V13H20V7Z";
var mdiDishwasherOff = "M22.11 21.46L2.39 1.73L1.11 3L4 5.89V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M18 20H6V8H6.11L10.5 12.37C10.31 12.69 10.15 13 10 13.33C9.63 13.94 9.4 14.62 9.33 15.33C9.31 16.03 9.59 16.71 10.09 17.21C11.15 18.27 12.86 18.26 13.91 17.21C14.16 16.97 14.35 16.68 14.5 16.36L18 19.89V20M11.2 8H18V14.8L20 16.8V4C20 2.9 19.11 2 18 2H6C5.76 2 5.54 2.05 5.33 2.13L11.2 8M10 4C10.55 4 11 4.45 11 5S10.55 6 10 6 9 5.55 9 5 9.45 4 10 4Z";
var mdiDisqus = "M12.08,22C9.63,22 7.39,21.11 5.66,19.63L1.41,20.21L3.05,16.15C2.5,14.88 2.16,13.5 2.16,12C2.16,6.5 6.6,2 12.08,2C17.56,2 22,6.5 22,12C22,17.5 17.56,22 12.08,22M17.5,11.97V11.94C17.5,9.06 15.46,7 11.95,7H8.16V17H11.9C15.43,17 17.5,14.86 17.5,11.97M12,14.54H10.89V9.46H12C13.62,9.46 14.7,10.39 14.7,12V12C14.7,13.63 13.62,14.54 12,14.54Z";
var mdiDistributeHorizontalCenter = "M8 2V5H10V19H8V22H6V19H4V5H6V2H8M16 2V7H14V17H16V22H18V17H20V7H18V2H16Z";
var mdiDistributeHorizontalLeft = "M21 7V17H16V22H14V2H16V7H21M5 2H3V22H5V19H10V5H5V2Z";
var mdiDistributeHorizontalRight = "M3 17V7H8V2H10V22H8V17H3M19 22H21V2H19V5H14V19H19V22Z";
var mdiDistributeVerticalBottom = "M7 3H17V8H22V10H2V8H7V3M2 19V21H22V19H19V14H5V19H2Z";
var mdiDistributeVerticalCenter = "M2 16H5V14H19V16H22V18H19V20H5V18H2V16M2 8H7V10H17V8H22V6H17V4H7V6H2V8Z";
var mdiDistributeVerticalTop = "M17 21H7V16H2V14H22V16H17V21M22 5V3H2V5H5V10H19V5H22Z";
var mdiDivingFlippers = "M20.28,3.66C19.28,3.44 18.54,2.25 17.57,2.04C16.6,1.83 15.4,2.59 14.42,2.37C13.38,2 12.22,2.13 11.28,2.71L11.21,17L11,18C10.64,19.62 11.67,21.22 13.29,21.58C14.9,21.93 16.5,20.91 16.86,19.29L17.07,18.29L23,5.28C22.39,4.35 21.39,3.76 20.28,3.66M14.91,18.86C14.79,19.41 14.25,19.76 13.7,19.65C13.14,19.53 12.79,19 12.91,18.43L13.77,14.5C13.86,13.97 14.37,13.6 14.92,13.69C15.46,13.78 15.83,14.3 15.74,14.84C15.74,14.88 15.73,14.91 15.72,14.95L14.91,18.86M9.72,21.34C9.33,20.73 9.08,20.05 9,19.34L8.24,16C8.1,15.47 8.41,14.92 9,14.76C9.07,14.75 9.15,14.75 9.22,14.76V3.43C8.31,3.43 7.22,2.86 6.38,3.06C5.54,3.26 4.69,4.44 3.72,4.66C2.61,4.76 1.61,5.35 1,6.28L6.93,19.28L7.14,20.28C7.5,21.9 9.09,22.92 10.71,22.57H10.81C10.38,22.22 10,21.81 9.72,21.34Z";
var mdiDivingHelmet = "M16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12M19.45,7.89L18.07,8.58L18.32,9H20V15H18.33C17.84,16.03 17.11,16.92 16.21,17.6C17.85,18.11 19.1,18.91 19.67,19.86C18.69,21.1 15.62,22 12,22C8.38,22 5.31,21.1 4.33,19.86C4.9,18.91 6.15,18.11 7.79,17.6C6.89,16.92 6.16,16.03 5.67,15H4V9H5.68C6.37,7.54 7.54,6.37 9,5.68V4H15V5.68C15.68,6 16.29,6.46 16.82,7L18.55,6.14C19.93,5.42 20,4.1 20,2H22C22,4.06 22,6.62 19.45,7.89M17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12Z";
var mdiDivingScuba = "M12,15C13.31,15 14.42,15.83 14.83,17H18A4,4 0 0,1 22,21V22H20V21A2,2 0 0,0 18,19H14.83C14.42,20.17 13.31,21 12,21A3,3 0 0,1 9,18A3,3 0 0,1 12,15M12,17A1,1 0 0,0 11,18A1,1 0 0,0 12,19A1,1 0 0,0 13,18A1,1 0 0,0 12,17M18,3A2,2 0 0,1 20,5V10A2,2 0 0,1 18,12H14.85C14.43,12 14.05,12.24 13.9,12.63C13.7,13.23 13.23,13.71 12.62,13.91C11.58,14.25 10.44,13.68 10.1,12.63C9.95,12.24 9.57,12 9.15,12H6A2,2 0 0,1 4,10V5A2,2 0 0,1 6,3H18M18,10V5H6V10H10.65C10.9,9.46 11.41,9.09 12,9C12.59,9.09 13.1,9.46 13.35,10H18Z";
var mdiDivingScubaFlag = "M2,6L19,20H2V6M5,4L22,18V4H5Z";
var mdiDivingScubaTank = "M19,18.5A2.5,2.5 0 0,1 16.5,21A2.5,2.5 0 0,1 14,18.5C14,17.47 14.62,16.59 15.5,16.21V6H11V7.35C12.22,7.93 13,9.15 13,10.5V22H6V10.5C6,9.15 6.78,7.93 8,7.35V6H6V4H8V3.5A1.5,1.5 0 0,1 9.5,2A1.5,1.5 0 0,1 11,3.5V4H15.5A2,2 0 0,1 17.5,6V16.21C18.38,16.59 19,17.47 19,18.5Z";
var mdiDivingScubaTankMultiple = "M22,18.5A2.5,2.5 0 0,1 19.5,21A2.5,2.5 0 0,1 17,18.5C17,17.47 17.62,16.59 18.5,16.21V6H14V7.35C15.22,7.93 16,9.15 16,10.5V22H2V10.5C2,9.15 2.78,7.93 4,7.35V6H2V4H4V3.5A1.5,1.5 0 0,1 5.5,2A1.5,1.5 0 0,1 7,3.5V4H11V3.5A1.5,1.5 0 0,1 12.5,2A1.5,1.5 0 0,1 14,3.5V4H18.5A2,2 0 0,1 20.5,6V16.21C21.38,16.59 22,17.47 22,18.5M11,7.35V6H7V7.35C8.22,7.93 9,9.15 9,10.5C9,9.15 9.78,7.93 11,7.35Z";
var mdiDivingSnorkel = "M16,3H4A2,2 0 0,0 2,5V10A2,2 0 0,0 4,12H7.15C7.57,12 7.95,12.24 8.1,12.63C8.44,13.68 9.58,14.25 10.62,13.91C11.23,13.71 11.7,13.23 11.9,12.63C12.05,12.24 12.43,12 12.85,12H16A2,2 0 0,0 18,10V5A2,2 0 0,0 16,3M16,10H11.35C11.1,9.46 10.59,9.09 10,9C9.41,9.09 8.9,9.46 8.65,10H4V5H16V10M22,2V15.5A6.5,6.5 0 0,1 15.5,22C13.79,22 12.15,21.32 10.93,20.12C8.95,20.58 6.88,19.79 5.71,18.12L7.62,17.29C8.5,18.22 9.84,18.5 11,18C11.2,17.91 11.39,17.8 11.56,17.67C12.4,17.05 12.87,16.04 12.78,15L14.69,14.17C15.1,16.04 14.41,18 12.9,19.17C13.66,19.71 14.57,20 15.5,20C18,20 20,18 20,15.5V2H22Z";
var mdiDivision = "M19,13H5V11H19V13M12,5A2,2 0 0,1 14,7A2,2 0 0,1 12,9A2,2 0 0,1 10,7A2,2 0 0,1 12,5M12,15A2,2 0 0,1 14,17A2,2 0 0,1 12,19A2,2 0 0,1 10,17A2,2 0 0,1 12,15Z";
var mdiDivisionBox = "M17,13V11H7V13H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7M12,15A1,1 0 0,0 11,16A1,1 0 0,0 12,17A1,1 0 0,0 13,16A1,1 0 0,0 12,15Z";
var mdiDlna = "M21.38,12.56H12.85C11.97,12.56 11.1,12.96 10.61,13.61V13.6C10.12,14.28 9.32,14.72 8.41,14.72C6.92,14.72 5.71,13.5 5.71,12C5.71,10.5 6.92,9.31 8.41,9.31C9.32,9.31 10.12,9.75 10.61,10.43V10.42C11.1,11.07 11.97,11.5 12.85,11.5H21.29C21.45,11.5 22,11.4 22,10.67C21.26,6.43 17.1,3.18 12.06,3.18C8.96,3.18 6.19,4.41 4.34,6.35C4.05,6.79 4.35,6.92 4.63,6.96H10.14C11,6.96 11.89,6.54 12.38,5.89V5.91C12.88,5.23 13.67,4.78 14.58,4.78C16.07,4.78 17.28,6 17.28,7.5C17.28,9 16.07,10.2 14.58,10.2C13.67,10.2 12.88,9.75 12.38,9.07V9.08C11.89,8.44 11,8.03 10.14,8.03H4.13L4.15,8.03C4.15,8.03 3.26,8 2.72,8.75C2.3,9.42 2,10.85 2,12C2,13.16 2.17,14.21 2.72,15.27C3.19,16.03 4.15,16 4.15,16H4.11L10.14,16C11,16 11.89,15.58 12.38,14.93V14.94C12.88,14.26 13.67,13.81 14.58,13.81C16.07,13.81 17.28,15.03 17.28,16.5C17.28,18 16.07,19.23 14.58,19.23C13.67,19.23 12.88,18.78 12.38,18.1V18.12C11.89,17.47 11,17.05 10.14,17.05H4.64C4.36,17.09 4.06,17.22 4.32,17.64C6.17,19.58 8.95,20.82 12.06,20.82C17.11,20.82 21.28,17.57 22,13.31C22,12.72 21.59,12.58 21.38,12.56";
var mdiDna = "M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z";
var mdiDns = "M7,9A2,2 0 0,1 5,7A2,2 0 0,1 7,5A2,2 0 0,1 9,7A2,2 0 0,1 7,9M20,3H4A1,1 0 0,0 3,4V10A1,1 0 0,0 4,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M7,19A2,2 0 0,1 5,17A2,2 0 0,1 7,15A2,2 0 0,1 9,17A2,2 0 0,1 7,19M20,13H4A1,1 0 0,0 3,14V20A1,1 0 0,0 4,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z";
var mdiDnsOutline = "M19,15V19H5V15H19M20,13H4A1,1 0 0,0 3,14V20A1,1 0 0,0 4,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13M7,18.5A1.5,1.5 0 0,1 5.5,17A1.5,1.5 0 0,1 7,15.5A1.5,1.5 0 0,1 8.5,17A1.5,1.5 0 0,1 7,18.5M19,5V9H5V5H19M20,3H4A1,1 0 0,0 3,4V10A1,1 0 0,0 4,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M7,8.5A1.5,1.5 0 0,1 5.5,7A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 8.5,7A1.5,1.5 0 0,1 7,8.5Z";
var mdiDoNotDisturb = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,13H7V11H17V13Z";
var mdiDoNotDisturbOff = "M17,11V13H15.54L20.22,17.68C21.34,16.07 22,14.11 22,12A10,10 0 0,0 12,2C9.89,2 7.93,2.66 6.32,3.78L13.54,11H17M2.27,2.27L1,3.54L3.78,6.32C2.66,7.93 2,9.89 2,12A10,10 0 0,0 12,22C14.11,22 16.07,21.34 17.68,20.22L20.46,23L21.73,21.73L2.27,2.27M7,13V11H8.46L10.46,13H7Z";
var mdiDockBottom = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 13H4V6H20Z";
var mdiDockLeft = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 18H9V6H20Z";
var mdiDockRight = "M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z";
var mdiDockTop = "M4 20H20C21.11 20 22 19.11 22 18V6C22 4.89 21.11 4 20 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20M4 11H20V18H4V11Z";
var mdiDockWindow = "M18 18V20H4A2 2 0 0 1 2 18V8H4V18M22 6V14A2 2 0 0 1 20 16H8A2 2 0 0 1 6 14V6A2 2 0 0 1 8 4H20A2 2 0 0 1 22 6M20 6H8V14H20Z";
var mdiDocker = "M21.81 10.25C21.75 10.21 21.25 9.82 20.17 9.82C19.89 9.82 19.61 9.85 19.33 9.9C19.12 8.5 17.95 7.79 17.9 7.76L17.61 7.59L17.43 7.86C17.19 8.22 17 8.63 16.92 9.05C16.72 9.85 16.84 10.61 17.25 11.26C16.76 11.54 15.96 11.61 15.79 11.61H2.62C2.28 11.61 2 11.89 2 12.24C2 13.39 2.18 14.54 2.58 15.62C3.03 16.81 3.71 17.69 4.58 18.23C5.56 18.83 7.17 19.17 9 19.17C9.79 19.17 10.61 19.1 11.42 18.95C12.54 18.75 13.62 18.36 14.61 17.79C15.43 17.32 16.16 16.72 16.78 16C17.83 14.83 18.45 13.5 18.9 12.35H19.09C20.23 12.35 20.94 11.89 21.33 11.5C21.59 11.26 21.78 10.97 21.92 10.63L22 10.39L21.81 10.25M3.85 11.24H5.61C5.69 11.24 5.77 11.17 5.77 11.08V9.5C5.77 9.42 5.7 9.34 5.61 9.34H3.85C3.76 9.34 3.69 9.41 3.69 9.5V11.08C3.7 11.17 3.76 11.24 3.85 11.24M6.28 11.24H8.04C8.12 11.24 8.2 11.17 8.2 11.08V9.5C8.2 9.42 8.13 9.34 8.04 9.34H6.28C6.19 9.34 6.12 9.41 6.12 9.5V11.08C6.13 11.17 6.19 11.24 6.28 11.24M8.75 11.24H10.5C10.6 11.24 10.67 11.17 10.67 11.08V9.5C10.67 9.42 10.61 9.34 10.5 9.34H8.75C8.67 9.34 8.6 9.41 8.6 9.5V11.08C8.6 11.17 8.66 11.24 8.75 11.24M11.19 11.24H12.96C13.04 11.24 13.11 11.17 13.11 11.08V9.5C13.11 9.42 13.05 9.34 12.96 9.34H11.19C11.11 9.34 11.04 9.41 11.04 9.5V11.08C11.04 11.17 11.11 11.24 11.19 11.24M6.28 9H8.04C8.12 9 8.2 8.91 8.2 8.82V7.25C8.2 7.16 8.13 7.09 8.04 7.09H6.28C6.19 7.09 6.12 7.15 6.12 7.25V8.82C6.13 8.91 6.19 9 6.28 9M8.75 9H10.5C10.6 9 10.67 8.91 10.67 8.82V7.25C10.67 7.16 10.61 7.09 10.5 7.09H8.75C8.67 7.09 8.6 7.15 8.6 7.25V8.82C8.6 8.91 8.66 9 8.75 9M11.19 9H12.96C13.04 9 13.11 8.91 13.11 8.82V7.25C13.11 7.16 13.04 7.09 12.96 7.09H11.19C11.11 7.09 11.04 7.15 11.04 7.25V8.82C11.04 8.91 11.11 9 11.19 9M11.19 6.72H12.96C13.04 6.72 13.11 6.65 13.11 6.56V5C13.11 4.9 13.04 4.83 12.96 4.83H11.19C11.11 4.83 11.04 4.89 11.04 5V6.56C11.04 6.64 11.11 6.72 11.19 6.72M13.65 11.24H15.41C15.5 11.24 15.57 11.17 15.57 11.08V9.5C15.57 9.42 15.5 9.34 15.41 9.34H13.65C13.57 9.34 13.5 9.41 13.5 9.5V11.08C13.5 11.17 13.57 11.24 13.65 11.24";
var mdiDoctor = "M14.84,16.26C17.86,16.83 20,18.29 20,20V22H4V20C4,18.29 6.14,16.83 9.16,16.26L12,21L14.84,16.26M8,8H16V10A4,4 0 0,1 12,14A4,4 0 0,1 8,10V8M8,7L8.41,2.9C8.46,2.39 8.89,2 9.41,2H14.6C15.11,2 15.54,2.39 15.59,2.9L16,7H8M12,3H11V4H10V5H11V6H12V5H13V4H12V3Z";
var mdiDog = "M18,4C16.29,4 15.25,4.33 14.65,4.61C13.88,4.23 13,4 12,4C11,4 10.12,4.23 9.35,4.61C8.75,4.33 7.71,4 6,4C3,4 1,12 1,14C1,14.83 2.32,15.59 4.14,15.9C4.78,18.14 7.8,19.85 11.5,20V15.72C10.91,15.35 10,14.68 10,14C10,13 12,13 12,13C12,13 14,13 14,14C14,14.68 13.09,15.35 12.5,15.72V20C16.2,19.85 19.22,18.14 19.86,15.9C21.68,15.59 23,14.83 23,14C23,12 21,4 18,4M4.15,13.87C3.65,13.75 3.26,13.61 3,13.5C3.25,10.73 5.2,6.4 6.05,6C6.59,6 7,6.06 7.37,6.11C5.27,8.42 4.44,12.04 4.15,13.87M9,12A1,1 0 0,1 8,11C8,10.46 8.45,10 9,10A1,1 0 0,1 10,11C10,11.56 9.55,12 9,12M15,12A1,1 0 0,1 14,11C14,10.46 14.45,10 15,10A1,1 0 0,1 16,11C16,11.56 15.55,12 15,12M19.85,13.87C19.56,12.04 18.73,8.42 16.63,6.11C17,6.06 17.41,6 17.95,6C18.8,6.4 20.75,10.73 21,13.5C20.75,13.61 20.36,13.75 19.85,13.87Z";
var mdiDogService = "M14,8L17,11V21H15V15H8L6,18V21H4V15L5,14V11L2,8L3,7L5,9H7V12A1,1 0 0,0 8,13H12A1,1 0 0,0 13,12V9L14,8M19,5V3L15,7L18,10L19,9L20,10L22,8L19,5M11.5,9.5L4.5,2.5C4.23,2.22 3.79,2.22 3.5,2.5V2.5C3.22,2.77 3.22,3.21 3.5,3.5L10.5,10.5C10.77,10.78 11.21,10.78 11.5,10.5V10.5C11.78,10.23 11.78,9.79 11.5,9.5Z";
var mdiDogSide = "M19,3L15,7L18,10L19,9L20,10L22,8L19,5V3M3,7L2,8L5,11V14L4,15V21H6V18L8,15H15V21H17V11L14,8L13,9H5L3,7Z";
var mdiDogSideOff = "M18 10L15 7L19 3V5L22 8L20 10L19 9L18 10M17 11L14 8L13 9H12.2L17 13.8V11M2.39 1.73L1.11 3L7.11 9H5L3 7L2 8L5 11V14L4 15V21H6V18L8 15H13.11L15 16.89V21H17V18.89L20.84 22.73L22.11 21.46L2.39 1.73Z";
var mdiDolby = "M2,5V19H22V5H2M6,17H4V7H6C8.86,7.09 11.1,9.33 11,12C11.1,14.67 8.86,16.91 6,17M20,17H18C15.14,16.91 12.9,14.67 13,12C12.9,9.33 15.14,7.09 18,7H20V17Z";
var mdiDolly = "M11.97,19.88C10.93,20.26 9.78,19.72 9.4,18.69C9,17.65 9.55,16.5 10.59,16.13C11.63,15.75 12.78,16.28 13.16,17.31C13.54,18.35 13,19.5 11.97,19.88M9.9,14.25C7.83,15 6.76,17.3 7.5,19.38C8.28,21.45 10.58,22.5 12.66,21.75C14.73,21 15.79,18.7 15.04,16.63C14.28,14.55 11.97,13.5 9.9,14.25M15.94,4.58L9.37,7L10.75,10.74L17.32,8.33M20.32,13.62L15.54,15.37C15.71,15.66 15.85,15.96 15.97,16.28C16.09,16.6 16.17,16.93 16.22,17.25L21,15.5M19.54,8.58L11.09,11.68L11.58,13C12.83,13.09 14,13.64 14.89,14.55L20.92,12.34M2,2V4H5.09L8.66,13.75C8.94,13.57 9.24,13.43 9.56,13.31C9.88,13.19 10.21,13.11 10.53,13.06L6.5,2";
var mdiDomain = "M18,15H16V17H18M18,11H16V13H18M20,19H12V17H14V15H12V13H14V11H12V9H20M10,7H8V5H10M10,11H8V9H10M10,15H8V13H10M10,19H8V17H10M6,7H4V5H6M6,11H4V9H6M6,15H4V13H6M6,19H4V17H6M12,7V3H2V21H22V7H12Z";
var mdiDomainOff = "M12,19H16L14,17H12V19M10,15V13H8V15H10M10,19V17H8V19H10M6,11V9H4V11H6M6,15V13H4V15H6M6,19V17H4V19H6M1.31,1.78L22.31,22.69L21,24L18,21H2V5L0.09,3.09L1.31,1.78M16,11H18V13H16V11M8,5V5.91L5.11,3H12V7H22V19.92L20,17.91V9H12V9.89L9.09,7H10V5H8Z";
var mdiDomainPlus = "M12 7V3H2V21H13.35A5.8 5.8 0 0 1 13 19H12V17H13.35A5 5 0 0 1 14 15.69V15H12V13H14V11H12V9H20V13.09A5.58 5.58 0 0 1 22 13.81V7M6 19H4V17H6M6 15H4V13H6M6 11H4V9H6M6 7H4V5H6M10 19H8V17H10M10 15H8V13H10M10 11H8V9H10M10 7H8V5H10M16 13H18V11H16M16 11V13H18V11M16 11V13H18V11M20 15V18H23V20H20V23H18V20H15V18H18V15Z";
var mdiDomainRemove = "M12 7V3H2V21H13.35A5.8 5.8 0 0 1 13 19H12V17H13.35A5 5 0 0 1 14 15.69V15H12V13H14V11H12V9H20V13.09A5.58 5.58 0 0 1 22 13.81V7M6 19H4V17H6M6 15H4V13H6M6 11H4V9H6M6 7H4V5H6M10 19H8V17H10M10 15H8V13H10M10 11H8V9H10M10 7H8V5H10M16 13H18V11H16M16 11V13H18V11M16 11V13H18V11M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z";
var mdiDomeLight = "M21 10C21 14.97 16.97 19 12 19C7.03 19 3 14.97 3 10V9.03C3 8.76 3.11 8.5 3.3 8.3C3.5 8.11 3.76 8 4.03 8H20C20.25 8 20.5 8.11 20.7 8.3C20.89 8.5 21 8.75 21 9V10M5 10C5 13.86 8.14 17 12 17C15.86 17 19 13.86 19 10H5M20 6V7H4V6C4 5.73 4.1 5.5 4.29 5.29C4.5 5.1 4.73 5 5 5H10V3H14V5H19C19.25 5 19.5 5.11 19.7 5.3C19.89 5.5 20 5.75 20 6Z";
var mdiDominoMask = "M15.83 9.81C14.7 9.7 13.69 10.38 13.46 11.5C13.46 11.84 14.81 12.29 16.05 12.29C17.29 12.29 18.41 11.5 18.41 11.28C18.41 11.05 17.63 9.93 15.83 9.81M8.18 9.81C6.38 9.93 5.59 10.94 5.59 11.27C5.59 11.5 6.82 12.29 7.95 12.29S10.54 11.84 10.54 11.5C10.31 10.38 9.19 9.7 8.18 9.81M16.95 16C15.04 16 13.8 13.75 12 13.75S8.85 16 7.05 16C4.69 16 3 13.86 3 10.04C3 7.68 3.68 7 6.71 7S10.54 8.24 12 8.24 14.36 7 17.29 7 21 7.79 21 10.04C21 13.86 19.31 16 16.95 16Z";
var mdiDonkey = "M21.34,10.35L21.27,10.28L21.18,10.19L18,7V6A0.5,0.5 0 0,0 17.5,5.5C17.36,5.5 17.22,5.56 17.13,5.66L13.46,9H7C6.32,9 5.69,9.35 5.32,9.92L2.62,12.59C2.29,13.04 2.39,13.66 2.84,14C3.18,14.24 3.65,14.25 4,14L5,13.07V19H8V15H13V19H16V13.83C16,13.3 16.21,12.79 16.59,12.42L18,11L20,12V12C20.15,12.08 20.32,12.13 20.5,12.13C21.1,12.11 21.59,11.61 21.58,11C21.57,10.76 21.5,10.53 21.34,10.35Z";
var mdiDoor = "M8,3C6.89,3 6,3.89 6,5V21H18V5C18,3.89 17.11,3 16,3H8M8,5H16V19H8V5M13,11V13H15V11H13Z";
var mdiDoorClosed = "M16,11H18V13H16V11M12,3H19C20.11,3 21,3.89 21,5V19H22V21H2V19H10V5C10,3.89 10.89,3 12,3M12,5V19H19V5H12Z";
var mdiDoorClosedLock = "M16 11H18V13H16V11M12 3H19A2 2 0 0 1 21 5V19H22V21H2V19H10V5A2 2 0 0 1 12 3M12 5V19H19V5M6.2 5H2.8V4.5A1.7 1.7 0 0 1 6.2 4.5M7 5V4.5A2.5 2.5 0 0 0 2 4.5V5A1 1 0 0 0 1 6V10A1 1 0 0 0 2 11H7A1 1 0 0 0 8 10V6A1 1 0 0 0 7 5";
var mdiDoorOpen = "M12,3C10.89,3 10,3.89 10,5H3V19H2V21H22V19H21V5C21,3.89 20.11,3 19,3H12M12,5H19V19H12V5M5,11H7V13H5V11Z";
var mdiDoorbell = "M12 10C10.9 10 10 10.9 10 12S10.9 14 12 14 14 13.1 14 12 13.1 10 12 10M16 2H8C6.9 2 6 2.9 6 4V20C6 21.1 6.9 22 8 22H16C17.1 22 18 21.1 18 20V4C18 2.9 17.1 2 16 2M16 20H8V4H16V20Z";
var mdiDoorbellVideo = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M18 4V20C18 21.1 17.11 22 16 22H8C6.9 22 6 21.11 6 20V4C6 2.9 6.9 2 8 2H16C17.11 2 18 2.9 18 4M10.5 7C10.5 7.83 11.17 8.5 12 8.5S13.5 7.83 13.5 7 12.83 5.5 12 5.5 10.5 6.17 10.5 7M16 10H8V20H16V10Z";
var mdiDotNet = "M2,15A1,1 0 0,1 3,16A1,1 0 0,1 2,17A1,1 0 0,1 1,16A1,1 0 0,1 2,15M21,17H19V9H17V7H23V9H21V17M16,7V9H14V11H16V13H14V15H16V17H12V7H16M11,7V17H9L6,11V17H4V7H6L9,13V7H11Z";
var mdiDotsGrid = "M12 16C13.1 16 14 16.9 14 18S13.1 20 12 20 10 19.1 10 18 10.9 16 12 16M12 10C13.1 10 14 10.9 14 12S13.1 14 12 14 10 13.1 10 12 10.9 10 12 10M12 4C13.1 4 14 4.9 14 6S13.1 8 12 8 10 7.1 10 6 10.9 4 12 4M6 16C7.1 16 8 16.9 8 18S7.1 20 6 20 4 19.1 4 18 4.9 16 6 16M6 10C7.1 10 8 10.9 8 12S7.1 14 6 14 4 13.1 4 12 4.9 10 6 10M6 4C7.1 4 8 4.9 8 6S7.1 8 6 8 4 7.1 4 6 4.9 4 6 4M18 16C19.1 16 20 16.9 20 18S19.1 20 18 20 16 19.1 16 18 16.9 16 18 16M18 10C19.1 10 20 10.9 20 12S19.1 14 18 14 16 13.1 16 12 16.9 10 18 10M18 4C19.1 4 20 4.9 20 6S19.1 8 18 8 16 7.1 16 6 16.9 4 18 4Z";
var mdiDotsHexagon = "M16 12C16 10.9 16.9 10 18 10S20 10.9 20 12 19.1 14 18 14 16 13.1 16 12M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.1 14 12 14 10 13.1 10 12M4 12C4 10.9 4.9 10 6 10S8 10.9 8 12 7.1 14 6 14 4 13.1 4 12M13 18C13 16.9 13.9 16 15 16S17 16.9 17 18 16.1 20 15 20 13 19.1 13 18M7 18C7 16.9 7.9 16 9 16S11 16.9 11 18 10.1 20 9 20 7 19.1 7 18M13 6C13 4.9 13.9 4 15 4S17 4.9 17 6 16.1 8 15 8 13 7.1 13 6M7 6C7 4.9 7.9 4 9 4S11 4.9 11 6 10.1 8 9 8 7 7.1 7 6";
var mdiDotsHorizontal = "M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z";
var mdiDotsHorizontalCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5M6.5,10.5A1.5,1.5 0 0,0 5,12A1.5,1.5 0 0,0 6.5,13.5A1.5,1.5 0 0,0 8,12A1.5,1.5 0 0,0 6.5,10.5M17.5,10.5A1.5,1.5 0 0,0 16,12A1.5,1.5 0 0,0 17.5,13.5A1.5,1.5 0 0,0 19,12A1.5,1.5 0 0,0 17.5,10.5Z";
var mdiDotsHorizontalCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 12,10.5M7.5,10.5A1.5,1.5 0 0,1 9,12A1.5,1.5 0 0,1 7.5,13.5A1.5,1.5 0 0,1 6,12A1.5,1.5 0 0,1 7.5,10.5M16.5,10.5A1.5,1.5 0 0,1 18,12A1.5,1.5 0 0,1 16.5,13.5A1.5,1.5 0 0,1 15,12A1.5,1.5 0 0,1 16.5,10.5Z";
var mdiDotsSquare = "M12 16C13.1 16 14 16.9 14 18S13.1 20 12 20 10 19.1 10 18 10.9 16 12 16M12 4C13.1 4 14 4.9 14 6S13.1 8 12 8 10 7.1 10 6 10.9 4 12 4M6 16C7.1 16 8 16.9 8 18S7.1 20 6 20 4 19.1 4 18 4.9 16 6 16M6 10C7.1 10 8 10.9 8 12S7.1 14 6 14 4 13.1 4 12 4.9 10 6 10M6 4C7.1 4 8 4.9 8 6S7.1 8 6 8 4 7.1 4 6 4.9 4 6 4M18 16C19.1 16 20 16.9 20 18S19.1 20 18 20 16 19.1 16 18 16.9 16 18 16M18 10C19.1 10 20 10.9 20 12S19.1 14 18 14 16 13.1 16 12 16.9 10 18 10M18 4C19.1 4 20 4.9 20 6S19.1 8 18 8 16 7.1 16 6 16.9 4 18 4Z";
var mdiDotsTriangle = "M12 16C13.1 16 14 16.9 14 18S13.1 20 12 20 10 19.1 10 18 10.9 16 12 16M15 10C16.1 10 17 10.9 17 12S16.1 14 15 14 13 13.1 13 12 13.9 10 15 10M6 16C7.1 16 8 16.9 8 18S7.1 20 6 20 4 19.1 4 18 4.9 16 6 16M9 10C10.1 10 11 10.9 11 12S10.1 14 9 14 7 13.1 7 12 7.9 10 9 10M12 4C13.1 4 14 4.9 14 6S13.1 8 12 8 10 7.1 10 6 10.9 4 12 4M18 16C19.1 16 20 16.9 20 18S19.1 20 18 20 16 19.1 16 18 16.9 16 18 16";
var mdiDotsVertical = "M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z";
var mdiDotsVerticalCircle = "M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5A1.5,1.5 0 0,0 10.5,12M10.5,17.5A1.5,1.5 0 0,0 12,19A1.5,1.5 0 0,0 13.5,17.5A1.5,1.5 0 0,0 12,16A1.5,1.5 0 0,0 10.5,17.5M10.5,6.5A1.5,1.5 0 0,0 12,8A1.5,1.5 0 0,0 13.5,6.5A1.5,1.5 0 0,0 12,5A1.5,1.5 0 0,0 10.5,6.5Z";
var mdiDotsVerticalCircleOutline = "M10.5,12A1.5,1.5 0 0,1 12,10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,12M10.5,16.5A1.5,1.5 0 0,1 12,15A1.5,1.5 0 0,1 13.5,16.5A1.5,1.5 0 0,1 12,18A1.5,1.5 0 0,1 10.5,16.5M10.5,7.5A1.5,1.5 0 0,1 12,6A1.5,1.5 0 0,1 13.5,7.5A1.5,1.5 0 0,1 12,9A1.5,1.5 0 0,1 10.5,7.5M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiDouban = "M20,6H4V4H20V6M20,18V20H4V18H7.33L6.26,14H5V8H19V14H17.74L16.67,18H20M7,12H17V10H7V12M9.4,18H14.6L15.67,14H8.33L9.4,18Z";
var mdiDownload = "M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z";
var mdiDownloadBox = "M5 3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3M8 17H16V15H8V17M16 10H13.5V7H10.5V10H8L12 14L16 10Z";
var mdiDownloadBoxOutline = "M8 17V15H16V17H8M16 10L12 14L8 10H10.5V7H13.5V10H16M5 3H19C20.11 3 21 3.9 21 5V19C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3M5 5V19H19V5H5Z";
var mdiDownloadCircle = "M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M8 17H16V15H8V17M16 10H13.5V6H10.5V10H8L12 14L16 10Z";
var mdiDownloadCircleOutline = "M8 17V15H16V17H8M16 10L12 14L8 10H10.5V6H13.5V10H16M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4Z";
var mdiDownloadLock = "M5 20H14V18H5M19 9H15V3H9V9H5L12 16M22 16A1.08 1.08 0 0 1 23 17V21A1.08 1.08 0 0 1 22 22H17A1.08 1.08 0 0 1 16 21V17A1.08 1.08 0 0 1 17 16V14.5A2.5 2.5 0 0 1 22 14.5V16M21 16V14.5A1.5 1.5 0 0 0 18 14.5V16H21";
var mdiDownloadLockOutline = "M22 16A1.08 1.08 0 0 1 23 17V21A1.08 1.08 0 0 1 22 22H17A1.08 1.08 0 0 1 16 21V17A1.08 1.08 0 0 1 17 16V14.5A2.5 2.5 0 0 1 22 14.5V16M21 16V14.5A1.5 1.5 0 0 0 18 14.5V16H21M13 5V11H14.17L12 13.17L9.83 11H11V5H13M15 3H9V9H5L12 16L19 9H15V3M14 18H5V20H14Z";
var mdiDownloadMultiple = "M9,1V7H5L12,14L19,7H15V1H9M5,16V18H19V16H5M5,20V22H19V20H5Z";
var mdiDownloadNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17M12,14.5L16.5,10H13V6H11V10H7.5L12,14.5Z";
var mdiDownloadNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M12,14L16,10H13V6H11V10H8L12,14Z";
var mdiDownloadOff = "M20.84 22.73L18.11 20H5V18H16.11L13.06 14.95L12 16L5 9H7.11L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M19 9H15V3H9V5.8L15.6 12.4L19 9Z";
var mdiDownloadOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L7.11 9H5L12 16L13.06 14.95L16.11 18H5V20H18.11L20.84 22.73L22.11 21.46M11 5H13V9.8L15.6 12.4L19 9H15V3H9V5.8L11 7.8V5Z";
var mdiDownloadOutline = "M13,5V11H14.17L12,13.17L9.83,11H11V5H13M15,3H9V9H5L12,16L19,9H15V3M19,18H5V20H19V18Z";
var mdiDrag = "M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z";
var mdiDragHorizontal = "M3,15V13H5V15H3M3,11V9H5V11H3M7,15V13H9V15H7M7,11V9H9V11H7M11,15V13H13V15H11M11,11V9H13V11H11M15,15V13H17V15H15M15,11V9H17V11H15M19,15V13H21V15H19M19,11V9H21V11H19Z";
var mdiDragHorizontalVariant = "M21 11H3V9H21V11M21 13H3V15H21V13Z";
var mdiDragVariant = "M22.67,12L18.18,16.5L15.67,14L17.65,12L15.67,10.04L18.18,7.53L22.67,12M12,1.33L16.47,5.82L13.96,8.33L12,6.35L10,8.33L7.5,5.82L12,1.33M12,22.67L7.53,18.18L10.04,15.67L12,17.65L14,15.67L16.5,18.18L12,22.67M1.33,12L5.82,7.5L8.33,10L6.35,12L8.33,13.96L5.82,16.47L1.33,12M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10Z";
var mdiDragVertical = "M9,3H11V5H9V3M13,3H15V5H13V3M9,7H11V9H9V7M13,7H15V9H13V7M9,11H11V13H9V11M13,11H15V13H13V11M9,15H11V17H9V15M13,15H15V17H13V15M9,19H11V21H9V19M13,19H15V21H13V19Z";
var mdiDragVerticalVariant = "M11 21H9V3H11V21M15 3H13V21H15V3Z";
var mdiDramaMasks = "M8.11,19.45C5.94,18.65 4.22,16.78 3.71,14.35L2.05,6.54C1.81,5.46 2.5,4.4 3.58,4.17L13.35,2.1L13.38,2.09C14.45,1.88 15.5,2.57 15.72,3.63L16.07,5.3L20.42,6.23H20.45C21.5,6.47 22.18,7.53 21.96,8.59L20.3,16.41C19.5,20.18 15.78,22.6 12,21.79C10.42,21.46 9.08,20.61 8.11,19.45V19.45M20,8.18L10.23,6.1L8.57,13.92V13.95C8,16.63 9.73,19.27 12.42,19.84C15.11,20.41 17.77,18.69 18.34,16L20,8.18M16,16.5C15.37,17.57 14.11,18.16 12.83,17.89C11.56,17.62 10.65,16.57 10.5,15.34L16,16.5M8.47,5.17L4,6.13L5.66,13.94L5.67,13.97C5.82,14.68 6.12,15.32 6.53,15.87C6.43,15.1 6.45,14.3 6.62,13.5L7.05,11.5C6.6,11.42 6.21,11.17 6,10.81C6.06,10.2 6.56,9.66 7.25,9.5C7.33,9.5 7.4,9.5 7.5,9.5L8.28,5.69C8.32,5.5 8.38,5.33 8.47,5.17M15.03,12.23C15.35,11.7 16.03,11.42 16.72,11.57C17.41,11.71 17.91,12.24 18,12.86C17.67,13.38 17,13.66 16.3,13.5C15.61,13.37 15.11,12.84 15.03,12.23M10.15,11.19C10.47,10.66 11.14,10.38 11.83,10.53C12.5,10.67 13.03,11.21 13.11,11.82C12.78,12.34 12.11,12.63 11.42,12.5C10.73,12.33 10.23,11.8 10.15,11.19M11.97,4.43L13.93,4.85L13.77,4.05L11.97,4.43Z";
var mdiDraw = "M9.75 20.85C11.53 20.15 11.14 18.22 10.24 17C9.35 15.75 8.12 14.89 6.88 14.06C6 13.5 5.19 12.8 4.54 12C4.26 11.67 3.69 11.06 4.27 10.94C4.86 10.82 5.88 11.4 6.4 11.62C7.31 12 8.21 12.44 9.05 12.96L10.06 11.26C8.5 10.23 6.5 9.32 4.64 9.05C3.58 8.89 2.46 9.11 2.1 10.26C1.78 11.25 2.29 12.25 2.87 13.03C4.24 14.86 6.37 15.74 7.96 17.32C8.3 17.65 8.71 18.04 8.91 18.5C9.12 18.94 9.07 18.97 8.6 18.97C7.36 18.97 5.81 18 4.8 17.36L3.79 19.06C5.32 20 7.88 21.47 9.75 20.85M20.84 5.25C21.06 5.03 21.06 4.67 20.84 4.46L19.54 3.16C19.33 2.95 18.97 2.95 18.76 3.16L17.74 4.18L19.82 6.26M11 10.92V13H13.08L19.23 6.85L17.15 4.77L11 10.92Z";
var mdiDrawing = "M8.5,3A5.5,5.5 0 0,1 14,8.5C14,9.83 13.53,11.05 12.74,12H21V21H12V12.74C11.05,13.53 9.83,14 8.5,14A5.5,5.5 0 0,1 3,8.5A5.5,5.5 0 0,1 8.5,3Z";
var mdiDrawingBox = "M18,18H12V12.21C11.34,12.82 10.47,13.2 9.5,13.2C7.46,13.2 5.8,11.54 5.8,9.5A3.7,3.7 0 0,1 9.5,5.8C11.54,5.8 13.2,7.46 13.2,9.5C13.2,10.47 12.82,11.34 12.21,12H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiDresser = "M4 3C2.9 3 2 3.9 2 5V8H22V5C22 3.9 21.11 3 20 3H4M10 5H14V6H10V5M2 9V14H22V9H2M10 11H14V12H10V11M2 15V18C2 19.11 2.9 20 4 20V21H6V20H18V21H20V20C21.11 20 22 19.11 22 18V15H2M10 17H14V18H10V17Z";
var mdiDresserOutline = "M4 3C2.9 3 2 3.9 2 5V18C2 19.11 2.9 20 4 20V21H6V20H18V21H20V20C21.11 20 22 19.11 22 18V5C22 3.9 21.11 3 20 3H4M4 5H20V8H4V5M10 6V7H14V6H10M4 10H20V13H4V10M10 11V12H14V11H10M4 15H20V18H4V15M10 16V17H14V16H10Z";
var mdiDrone = "M22,11H21L20,9H13.75L16,12.5H14L10.75,9H4C3.45,9 2,8.55 2,8C2,7.45 3.5,5.5 5.5,5.5C7.5,5.5 7.67,6.5 9,7H21A1,1 0 0,1 22,8V9L22,11M10.75,6.5L14,3H16L13.75,6.5H10.75M18,11V9.5H19.75L19,11H18M3,19A1,1 0 0,1 2,18A1,1 0 0,1 3,17A4,4 0 0,1 7,21A1,1 0 0,1 6,22A1,1 0 0,1 5,21A2,2 0 0,0 3,19M11,21A1,1 0 0,1 10,22A1,1 0 0,1 9,21A6,6 0 0,0 3,15A1,1 0 0,1 2,14A1,1 0 0,1 3,13A8,8 0 0,1 11,21Z";
var mdiDropbox = "M3 6.2L8 9.39L13 6.2L8 3L3 6.2M13 6.2L18 9.39L23 6.2L18 3L13 6.2M3 12.55L8 15.74L13 12.55L8 9.35L3 12.55M18 9.35L13 12.55L18 15.74L23 12.55L18 9.35M8.03 16.8L13.04 20L18.04 16.8L13.04 13.61L8.03 16.8Z";
var mdiDrupal = "M20.47,14.65C20.47,15.29 20.25,16.36 19.83,17.1C19.4,17.85 19.08,18.06 18.44,18.06C17.7,17.95 16.31,15.82 15.36,15.72C14.18,15.72 11.73,18.17 9.71,18.17C8.54,18.17 8.11,17.95 7.79,17.74C7.15,17.31 6.94,16.67 6.94,15.82C6.94,14.22 8.43,12.84 10.24,12.84C12.59,12.84 14.18,15.18 15.36,15.08C16.31,15.08 18.23,13.16 19.19,13.16C20.15,12.95 20.47,14 20.47,14.65M16.63,5.28C15.57,4.64 14.61,4.32 13.54,3.68C12.91,3.25 12.05,2.3 11.31,1.44C11,2.83 10.78,3.36 10.24,3.79C9.18,4.53 8.64,4.85 7.69,5.28C6.94,5.7 3,8.05 3,13.16C3,18.27 7.37,22 12.05,22C16.85,22 21,18.5 21,13.27C21.21,8.05 17.27,5.7 16.63,5.28Z";
var mdiDuck = "M8.5,5A1.5,1.5 0 0,0 7,6.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 10,6.5A1.5,1.5 0 0,0 8.5,5M10,2A5,5 0 0,1 15,7C15,8.7 14.15,10.2 12.86,11.1C14.44,11.25 16.22,11.61 18,12.5C21,14 22,12 22,12C22,12 21,21 15,21H9C9,21 4,21 4,16C4,13 7,12 6,10C2,10 2,6.5 2,6.5C3,7 4.24,7 5,6.65C5.19,4.05 7.36,2 10,2Z";
var mdiDumbbell = "M20.57,14.86L22,13.43L20.57,12L17,15.57L8.43,7L12,3.43L10.57,2L9.14,3.43L7.71,2L5.57,4.14L4.14,2.71L2.71,4.14L4.14,5.57L2,7.71L3.43,9.14L2,10.57L3.43,12L7,8.43L15.57,17L12,20.57L13.43,22L14.86,20.57L16.29,22L18.43,19.86L19.86,21.29L21.29,19.86L19.86,18.43L22,16.29L20.57,14.86Z";
var mdiDumpTruck = "M20,8H19L17,8H15V14H2V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5M17,12V9.5H19.5L21.46,12H17M18,7H14V13H3L1.57,8H1V6H13L14,5H18V7Z";
var mdiEarHearing = "M17,20C16.71,20 16.44,19.94 16.24,19.85C15.53,19.5 15.03,18.97 14.53,17.47C14,15.91 13.06,15.18 12.14,14.47C11.35,13.86 10.53,13.23 9.82,11.94C9.29,11 9,9.93 9,9C9,6.2 11.2,4 14,4C16.8,4 19,6.2 19,9H21C21,5.07 17.93,2 14,2C10.07,2 7,5.07 7,9C7,10.26 7.38,11.65 8.07,12.9C9,14.55 10.05,15.38 10.92,16.05C11.73,16.67 12.31,17.12 12.63,18.1C13.23,19.92 14,20.94 15.36,21.65C15.87,21.88 16.43,22 17,22A4,4 0 0,0 21,18H19A2,2 0 0,1 17,20M7.64,2.64L6.22,1.22C4.23,3.21 3,5.96 3,9C3,12.04 4.23,14.79 6.22,16.78L7.63,15.37C6,13.74 5,11.5 5,9C5,6.5 6,4.26 7.64,2.64M11.5,9A2.5,2.5 0 0,0 14,11.5A2.5,2.5 0 0,0 16.5,9A2.5,2.5 0 0,0 14,6.5A2.5,2.5 0 0,0 11.5,9Z";
var mdiEarHearingOff = "M1,4.27L2.28,3L20,20.72L18.73,22L12.91,16.18C12.19,16.74 11.67,17.19 11.37,18.1C10.77,19.92 10,20.94 8.64,21.65C8.13,21.88 7.57,22 7,22A4,4 0 0,1 3,18H5A2,2 0 0,0 7,20C7.29,20 7.56,19.94 7.76,19.85C8.47,19.5 8.97,18.97 9.47,17.47C9.91,16.12 10.69,15.39 11.5,14.76L5.04,8.31C5,8.54 5,8.77 5,9H3C3,8.17 3.14,7.39 3.39,6.66L1,4.27M14.18,11.94C14.71,11 15,9.93 15,9C15,6.2 12.8,4 10,4C8.81,4 7.74,4.39 6.89,5.06L5.46,3.63C6.67,2.61 8.25,2 10,2C13.93,2 17,5.07 17,9C17,10.26 16.62,11.65 15.93,12.9L15.47,13.65L14.03,12.2L14.18,11.94M16.36,2.64L17.78,1.22C19.77,3.21 21,5.96 21,9C21,11.83 19.93,14.41 18.18,16.36L16.77,14.94C18.15,13.36 19,11.28 19,9C19,6.5 18,4.26 16.36,2.64M12.5,9C12.5,9.5 12.36,9.93 12.13,10.31L8.69,6.87C9.07,6.64 9.5,6.5 10,6.5A2.5,2.5 0 0,1 12.5,9Z";
var mdiEarth = "M17.9,17.39C17.64,16.59 16.89,16 16,16H15V13A1,1 0 0,0 14,12H8V10H10A1,1 0 0,0 11,9V7H13A2,2 0 0,0 15,5V4.59C17.93,5.77 20,8.64 20,12C20,14.08 19.2,15.97 17.9,17.39M11,19.93C7.05,19.44 4,16.08 4,12C4,11.38 4.08,10.78 4.21,10.21L9,15V16A2,2 0 0,0 11,18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiEarthArrowRight = "M19 21V19H15V17H19V15L22 18L19 21M12 18C12 15.8 13.2 13.9 15 12.8C14.9 12.3 14.5 12 14 12H8V10H10C10.6 10 11 9.6 11 9V7H13C14.1 7 15 6.1 15 5V4.6C17.9 5.8 20 8.6 20 12V12.3C20.7 12.5 21.3 12.9 21.9 13.4C22 13 22 12.5 22 12C22 6.5 17.5 2 12 2S2 6.5 2 12 6.5 22 12 22C12.5 22 13 22 13.4 21.9C12.5 20.8 12 19.5 12 18M11 19.9C7 19.4 4 16.1 4 12C4 11.4 4.1 10.8 4.2 10.2L9 15V16C9 17.1 9.9 18 11 18V19.9Z";
var mdiEarthBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M15.78,5H19V17.18C18.74,16.38 17.69,15.79 16.8,15.79H15.8V12.79A1,1 0 0,0 14.8,11.79H8.8V9.79H10.8A1,1 0 0,0 11.8,8.79V6.79H13.8C14.83,6.79 15.67,6 15.78,5M5,10.29L9.8,14.79V15.79C9.8,16.9 10.7,17.79 11.8,17.79V19H5V10.29Z";
var mdiEarthBoxMinus = "M22 17V19H14V17H22M5 3H19C20.1 3 21 3.89 21 5V12.8C20.39 12.45 19.72 12.2 19 12.08V5H15.78C15.67 6 14.83 6.79 13.8 6.79H11.8V8.79C11.8 9.35 11.35 9.79 10.8 9.79H8.8V11.79H14.8C15.23 11.79 15.6 12.06 15.74 12.44C13.6 13.31 12.07 15.39 12 17.83C10.7 17.79 9.8 16.9 9.8 15.79V14.79L5 10.29V19H12.08C12.2 19.72 12.45 20.39 12.8 21H5C3.9 21 3 20.11 3 19V5C3 3.89 3.89 3 5 3Z";
var mdiEarthBoxOff = "M23,4.27L21,6.27V19A2,2 0 0,1 19,21H6.27L4.27,23L3,21.72L21.72,3L23,4.27M5,3H19.18L17.18,5H15.78C15.67,6 14.83,6.79 13.8,6.79H11.8V8.79C11.8,9.35 11.35,9.79 10.8,9.79H8.8V11.79H10.38L8.55,13.62L5,10.29V17.18L3,19.18V5C3,3.89 3.89,3 5,3M11.8,19V17.79C11.17,17.79 10.6,17.5 10.23,17.04L8.27,19H11.8M15.8,12.79V15.79H16.8C17.69,15.79 18.74,16.38 19,17.18V8.27L15.33,11.94C15.61,12.12 15.8,12.43 15.8,12.79Z";
var mdiEarthBoxPlus = "M17 14H19V17H22V19H19V22H17V19H14V17H17V14M5 3H19C20.1 3 21 3.89 21 5V12.8C20.39 12.45 19.72 12.2 19 12.08V5H15.78C15.67 6 14.83 6.79 13.8 6.79H11.8V8.79C11.8 9.35 11.35 9.79 10.8 9.79H8.8V11.79H14.8C15.23 11.79 15.6 12.06 15.74 12.44C13.6 13.31 12.07 15.39 12 17.83C10.7 17.79 9.8 16.9 9.8 15.79V14.79L5 10.29V19H12.08C12.2 19.72 12.45 20.39 12.8 21H5C3.9 21 3 20.11 3 19V5C3 3.89 3.89 3 5 3Z";
var mdiEarthBoxRemove = "M14.46 15.88L15.88 14.46L18 16.59L20.12 14.47L21.54 15.88L19.41 18L21.54 20.12L20.12 21.54L18 19.41L15.88 21.54L14.46 20.12L16.59 18L14.47 15.88M5 3H19C20.1 3 21 3.89 21 5V12.8C20.39 12.45 19.72 12.2 19 12.08V5H15.78C15.67 6 14.83 6.79 13.8 6.79H11.8V8.79C11.8 9.35 11.35 9.79 10.8 9.79H8.8V11.79H14.8C15.23 11.79 15.6 12.06 15.74 12.44C13.6 13.31 12.07 15.39 12 17.83C10.7 17.79 9.8 16.9 9.8 15.79V14.79L5 10.29V19H12.08C12.2 19.72 12.45 20.39 12.8 21H5C3.9 21 3 20.11 3 19V5C3 3.89 3.89 3 5 3Z";
var mdiEarthMinus = "M14 17H22V19H14V17M20 12C20 8.64 17.93 5.77 15 4.59V5C15 6.1 14.1 7 13 7H11V9C11 9.55 10.55 10 10 10H8V12H14C14.5 12 14.9 12.35 15 12.81C13.2 13.85 12 15.79 12 18C12 19.5 12.54 20.85 13.44 21.9L12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12L21.9 13.44C21.34 12.96 20.7 12.59 20 12.34L20 12M11 19.93V18C9.9 18 9 17.1 9 16V15L4.21 10.21C4.08 10.78 4 11.38 4 12C4 16.08 7.06 19.44 11 19.93Z";
var mdiEarthOff = "M22,5.27L20.5,6.75C21.46,8.28 22,10.07 22,12A10,10 0 0,1 12,22C10.08,22 8.28,21.46 6.75,20.5L5.27,22L4,20.72L20.72,4L22,5.27M17.9,17.39C19.2,15.97 20,14.08 20,12C20,10.63 19.66,9.34 19.05,8.22L14.83,12.44C14.94,12.6 15,12.79 15,13V16H16C16.89,16 17.64,16.59 17.9,17.39M11,19.93V18C10.5,18 10.07,17.83 9.73,17.54L8.22,19.05C9.07,19.5 10,19.8 11,19.93M15,4.59V5A2,2 0 0,1 13,7H11V9A1,1 0 0,1 10,10H8V12H10.18L8.09,14.09L4.21,10.21C4.08,10.78 4,11.38 4,12C4,13.74 4.56,15.36 5.5,16.67L4.08,18.1C2.77,16.41 2,14.3 2,12A10,10 0 0,1 12,2C14.3,2 16.41,2.77 18.1,4.08L16.67,5.5C16.16,5.14 15.6,4.83 15,4.59Z";
var mdiEarthPlus = "M17 14H19V17H22V19H19V22H17V19H14V17H17V14M20 12C20 8.64 17.93 5.77 15 4.59V5C15 6.1 14.1 7 13 7H11V9C11 9.55 10.55 10 10 10H8V12H14C14.5 12 14.9 12.35 15 12.81C13.2 13.85 12 15.79 12 18C12 19.5 12.54 20.85 13.44 21.9L12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12L21.9 13.44C21.34 12.96 20.7 12.59 20 12.34L20 12M11 19.93V18C9.9 18 9 17.1 9 16V15L4.21 10.21C4.08 10.78 4 11.38 4 12C4 16.08 7.06 19.44 11 19.93Z";
var mdiEarthRemove = "M14.46 15.88L15.88 14.46L18 16.59L20.12 14.47L21.54 15.88L19.41 18L21.54 20.12L20.12 21.54L18 19.41L15.88 21.54L14.46 20.12L16.59 18L14.47 15.88M20 12C20 8.64 17.93 5.77 15 4.59V5C15 6.1 14.1 7 13 7H11V9C11 9.55 10.55 10 10 10H8V12H14C14.5 12 14.9 12.35 15 12.81C13.2 13.85 12 15.79 12 18C12 19.5 12.54 20.85 13.44 21.9L12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12L21.9 13.44C21.34 12.96 20.7 12.59 20 12.34L20 12M11 19.93V18C9.9 18 9 17.1 9 16V15L4.21 10.21C4.08 10.78 4 11.38 4 12C4 16.08 7.06 19.44 11 19.93Z";
var mdiEgg = "M19.5,14.5A7.5,7.5 0 0,1 12,22A7.5,7.5 0 0,1 4.5,14.5C4.5,10.36 7.86,2 12,2C16.14,2 19.5,10.36 19.5,14.5Z";
var mdiEggEaster = "M6.89,6.36C8.23,3.91 10,2 12,2C14,2 15.77,3.91 17.11,6.36C16.26,6.57 15.5,7.07 15,7.77C13.79,6.11 11.46,5.75 9.8,6.97C9.5,7.19 9.22,7.46 9,7.77C8.5,7.07 7.74,6.57 6.89,6.36M15,18.06L12,15.06L9,18.06L6,15.06L4.73,16.33C5.75,20.35 9.83,22.77 13.84,21.76C16.5,21.08 18.59,19 19.27,16.33L18,15.06L15,18.06M9,15.94L12,12.94L15,15.94L18,12.94L19.5,14.44C19.37,12.13 18.8,9.86 17.81,7.76C16.65,7.86 15.75,8.83 15.75,10H14.25A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10H8.25C8.25,8.83 7.35,7.86 6.19,7.76C5.2,9.86 4.63,12.13 4.5,14.44L6,12.94L9,15.94Z";
var mdiEggOff = "M22.1 21.5L2.4 1.7L1.1 3L6.1 8C5.1 10.3 4.5 12.8 4.5 14.5C4.5 18.6 7.9 22 12 22C14.2 22 16.2 21 17.6 19.5L20.8 22.7L22.1 21.5M19.5 14.5C19.5 10.4 16.1 2 12 2C10.5 2 9.1 3.1 7.9 4.7L19.3 16.1C19.4 15.6 19.5 15.1 19.5 14.5Z";
var mdiEggOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L6.1 8C5.1 10.28 4.5 12.76 4.5 14.5C4.5 18.64 7.86 22 12 22C14.23 22 16.22 21 17.59 19.5L20.84 22.73L22.11 21.46M12 20C8.97 20 6.5 17.53 6.5 14.5C6.5 13.08 6.95 11.25 7.63 9.5L16.17 18.06C15.16 19.24 13.67 20 12 20M9.36 6.16L7.92 4.72C9.1 3.11 10.5 2 12 2C16.14 2 19.5 10.36 19.5 14.5C19.5 15.06 19.43 15.6 19.32 16.12L17.5 14.29C17.38 10.46 14.28 4 12 4C11.17 4 10.22 4.87 9.36 6.16Z";
var mdiEggOutline = "M12 4C14.32 4 17.5 10.7 17.5 14.5C17.5 17.53 15.03 20 12 20S6.5 17.53 6.5 14.5C6.5 10.7 9.68 4 12 4M12 2C7.86 2 4.5 10.36 4.5 14.5C4.5 18.64 7.86 22 12 22S19.5 18.64 19.5 14.5C19.5 10.36 16.14 2 12 2Z";
var mdiEiffelTower = "M8.21 17C8.65 16.15 9.06 15.16 9.44 14H9V12H10C10.61 9.4 11 6.13 11 2H13C13 6.13 13.4 9.4 14 12H15V14H14.56C14.94 15.16 15.35 16.15 15.79 17H17L17 19L19 22H16.58C15.81 20.24 14.05 19 12 19C9.95 19 8.19 20.24 7.42 22H5L7 19L6.97 17H8.21M12.59 14H11.41C11.07 15.13 10.69 16.13 10.28 17H13.72C13.32 16.13 12.93 15.13 12.59 14Z";
var mdiEightTrack = "M7,2L5,5V16L6,20C6.27,21.07 6.9,22 8,22H16A2,2 0 0,0 18,20L19,16V5L17,2H15V3H13V2H7M7,6H17V16H7V6Z";
var mdiEject = "M12,5L5.33,15H18.67M5,17H19V19H5V17Z";
var mdiEjectOutline = "M5,17H19V19H5V17M12,5L5.33,15H18.67L12,5M12,8.6L14.93,13H9.07L12,8.6Z";
var mdiElectricSwitch = "M1,11H3.17C3.58,9.83 4.69,9 6,9C6.65,9 7.25,9.21 7.74,9.56L14.44,4.87L15.58,6.5L8.89,11.2C8.96,11.45 9,11.72 9,12A3,3 0 0,1 6,15C4.69,15 3.58,14.17 3.17,13H1V11M23,11V13H20.83C20.42,14.17 19.31,15 18,15A3,3 0 0,1 15,12A3,3 0 0,1 18,9C19.31,9 20.42,9.83 20.83,11H23M6,11A1,1 0 0,0 5,12A1,1 0 0,0 6,13A1,1 0 0,0 7,12A1,1 0 0,0 6,11M18,11A1,1 0 0,0 17,12A1,1 0 0,0 18,13A1,1 0 0,0 19,12A1,1 0 0,0 18,11Z";
var mdiElectricSwitchClosed = "M20.83 11A3 3 0 0 0 15.18 11H8.82A3 3 0 0 0 3.17 11H1V13H3.17A3 3 0 0 0 8.82 13H15.18A3 3 0 0 0 20.83 13H23V11M6 13A1 1 0 1 1 7 12A1 1 0 0 1 6 13M18 13A1 1 0 1 1 19 12A1 1 0 0 1 18 13Z";
var mdiElectronFramework = "M12 22C10.33 22 8.84 20.5 7.9 17.93C7.83 17.73 7.93 17.5 8.14 17.44C8.34 17.36 8.56 17.47 8.63 17.67C9.44 19.9 10.7 21.23 12 21.23C12.94 21.23 13.87 20.55 14.62 19.31C14.73 19.13 14.96 19.07 15.15 19.18C15.33 19.29 15.39 19.53 15.28 19.71C14.38 21.19 13.22 22 12 22M15.91 17.72C15.87 17.72 15.83 17.71 15.8 17.7C15.59 17.63 15.5 17.42 15.54 17.21C16 15.81 16.22 14.18 16.22 12.5C16.22 8.65 14.97 5.24 13.19 4.14C12.94 4.5 12.5 4.78 12 4.78C11.24 4.78 10.61 4.16 10.61 3.39C10.61 2.62 11.24 2 12 2C12.77 2 13.4 2.61 13.41 3.37C15.53 4.5 17 8.21 17 12.5C17 14.25 16.75 15.96 16.28 17.45C16.23 17.61 16.08 17.72 15.91 17.72M12 2.77C11.66 2.77 11.38 3.05 11.38 3.39C11.38 3.73 11.67 4 12 4C12.35 4 12.64 3.73 12.64 3.39C12.64 3.05 12.35 2.77 12 2.77M4.08 18.54C3.31 18.54 2.68 17.91 2.68 17.15C2.68 16.66 2.94 16.22 3.33 15.97C3.19 13.56 5.68 10.41 9.5 8.22C11.09 7.32 12.75 6.67 14.32 6.34C14.5 6.29 14.73 6.42 14.77 6.63C14.82 6.84 14.69 7.05 14.5 7.09C13 7.41 11.41 8.03 9.9 8.89C6.46 10.86 4.1 13.68 4.1 15.76C4.86 15.77 5.5 16.39 5.5 17.15C5.5 17.92 4.85 18.54 4.08 18.54M4.08 16.53C3.74 16.53 3.46 16.81 3.46 17.15C3.46 17.5 3.74 17.77 4.08 17.77S4.71 17.5 4.71 17.15C4.71 16.81 4.42 16.53 4.08 16.53M18.5 13.44C18.43 13.44 18.34 13.41 18.27 13.35C18.11 13.21 18.09 12.97 18.23 12.8C19.77 11 20.3 9.26 19.64 8.14C19.17 7.33 18.1 6.88 16.63 6.86C16.41 6.86 16.24 6.68 16.25 6.47C16.25 6.26 16.43 6.1 16.64 6.09C18.39 6.11 19.7 6.7 20.31 7.75C21.15 9.19 20.6 11.21 18.82 13.3C18.74 13.39 18.63 13.44 18.5 13.44M16.5 18.9C14.5 18.9 11.94 18.16 9.5 16.77C7.95 15.88 6.57 14.79 5.5 13.63C5.35 13.47 5.36 13.23 5.5 13.08C5.68 12.94 5.92 12.95 6.07 13.11C7.08 14.21 8.4 15.25 9.89 16.1C13.2 18 16.77 18.63 18.65 17.72C18.57 17.55 18.5 17.35 18.5 17.15C18.5 16.38 19.15 15.76 19.92 15.76C20.69 15.76 21.32 16.38 21.32 17.15C21.32 17.92 20.69 18.54 19.92 18.54C19.64 18.54 19.39 18.46 19.17 18.32C18.47 18.71 17.56 18.9 16.5 18.9M19.5 17.63C19.63 17.71 19.77 17.77 19.92 17.77C20.27 17.77 20.55 17.5 20.55 17.15C20.55 16.81 20.27 16.53 19.92 16.53S19.3 16.81 19.3 17.15C19.3 17.29 19.35 17.42 19.43 17.53C19.47 17.55 19.5 17.59 19.5 17.63M4.46 12C4.33 12 4.2 11.92 4.13 11.8C3.23 10.25 3.08 8.81 3.7 7.74C4.54 6.3 6.58 5.76 9.31 6.25C9.5 6.29 9.66 6.5 9.62 6.7C9.59 6.91 9.39 7.05 9.18 7C6.82 6.59 5 7 4.37 8.13C3.89 8.95 4.04 10.11 4.8 11.41C4.9 11.6 4.84 11.83 4.65 11.94C4.59 11.97 4.53 12 4.46 12M12.21 13.4C11.71 13.5 11.21 13.19 11.11 12.69C11 12.2 11.32 11.71 11.81 11.6C12.31 11.5 12.81 11.81 12.91 12.31C13 12.8 12.7 13.29 12.21 13.4Z";
var mdiElephant = "M19.5,15.5A0.5,0.5 0 0,1 19,16A0.5,0.5 0 0,1 18.5,15.5V8.5C18.5,6.57 16.43,5 14.5,5H6A4,4 0 0,0 2,9V19H6V15H11V19H15V14.5A0.5,0.5 0 0,1 15.5,14A0.5,0.5 0 0,1 16,14.5V16A3,3 0 0,0 19,19A3,3 0 0,0 22,16V14H19.5V15.5Z";
var mdiElevationDecline = "M21,21H3V11.25L9.45,15L13.22,12.8L21,17.29V21M3,8.94V6.75L9.45,10.5L13.22,8.3L21,12.79V15L13.22,10.5L9.45,12.67L3,8.94Z";
var mdiElevationRise = "M3,21V17.29L10.78,12.8L14.55,15L21,11.25V21H3M21,8.94L14.55,12.67L10.78,10.5L3,15V12.79L10.78,8.3L14.55,10.5L21,6.75V8.94Z";
var mdiElevator = "M7,2L11,6H8V10H6V6H3L7,2M17,10L13,6H16V2H18V6H21L17,10M7,12H17A2,2 0 0,1 19,14V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V14A2,2 0 0,1 7,12M7,14V20H17V14H7Z";
var mdiElevatorDown = "M7 10L11 6H8V2H6V6H3L7 10M17 10L13 6H16V2H18V6H21L17 10M7 12H17C18.11 12 19 12.9 19 14V20C19 21.11 18.11 22 17 22H7C5.9 22 5 21.11 5 20V14C5 12.9 5.9 12 7 12M7 14V20H17V14H7Z";
var mdiElevatorPassenger = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M8 5C8.8 5 9.5 5.7 9.5 6.5S8.8 8 8 8 6.5 7.3 6.5 6.5 7.2 5 8 5M11 14H9.5V19H6.5V14H5V11C5 9.9 5.9 9 7 9H9C10.1 9 11 9.9 11 11V14M15.9 19L13 14.2H18.8L15.9 19M13 10L16 5L19 10H13Z";
var mdiElevatorUp = "M7 2L11 6H8V10H6V6H3L7 2M17 2L13 6H16V10H18V6H21L17 2M7 12H17C18.11 12 19 12.9 19 14V20C19 21.11 18.11 22 17 22H7C5.9 22 5 21.11 5 20V14C5 12.9 5.9 12 7 12M7 14V20H17V14H7Z";
var mdiEllipse = "M12,4C6.5,4 2,7.58 2,12C2,16.42 6.5,20 12,20C17.5,20 22,16.42 22,12C22,7.58 17.5,4 12,4Z";
var mdiEllipseOutline = "M12,6C16.41,6 20,8.69 20,12C20,15.31 16.41,18 12,18C7.59,18 4,15.31 4,12C4,8.69 7.59,6 12,6M12,4C6.5,4 2,7.58 2,12C2,16.42 6.5,20 12,20C17.5,20 22,16.42 22,12C22,7.58 17.5,4 12,4Z";
var mdiEmail = "M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z";
var mdiEmailAlert = "M18 8L10 13L2 8V6L10 11L18 6M18 4H2C.9 4 0 4.9 0 6V18C0 19.1 .9 20 2 20H18C19.1 20 20 19.1 20 18V6C20 4.9 19.1 4 18 4M24 7H22V13H24V7M24 15H22V17H24V15Z";
var mdiEmailAlertOutline = "M24 7H22V13H24V7M24 15H22V17H24V15M20 6C20 4.9 19.1 4 18 4H2C.9 4 0 4.9 0 6V18C0 19.1 .9 20 2 20H18C19.1 20 20 19.1 20 18V6M18 6L10 11L2 6H18M18 18H2V8L10 13L18 8V18Z";
var mdiEmailBox = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M6.4,6.5H17.6C18.37,6.5 19,7.12 19,7.9V16.1A1.4,1.4 0 0,1 17.6,17.5H6.4C5.63,17.5 5,16.87 5,16.1V7.9C5,7.12 5.62,6.5 6.4,6.5M6,8V10L12,14L18,10V8L12,12L6,8Z";
var mdiEmailCheck = "M21,13.34C20.37,13.12 19.7,13 19,13A6,6 0 0,0 13,19C13,19.34 13.03,19.67 13.08,20H3A2,2 0 0,1 1,18V6C1,4.89 1.89,4 3,4H19A2,2 0 0,1 21,6V13.34M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M3,6V8L11,13L19,8V6L11,11L3,6Z";
var mdiEmailCheckOutline = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M13 18H3V8L11 13L19 8V13H21V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H13V18M19 6L11 11L3 6H19Z";
var mdiEmailEdit = "M21,12.13C20.85,12.14 20.71,12.19 20.61,12.3L19.61,13.3L21.66,15.3L22.66,14.3C22.88,14.09 22.88,13.74 22.66,13.53L21.42,12.3C21.32,12.19 21.18,12.14 21.04,12.13M19.04,13.88L13,19.94V22H15.06L21.12,15.93M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H11V19.11L19.24,10.89C19.71,10.4 20.36,10.13 21.04,10.13C21.38,10.13 21.72,10.19 22.04,10.32V6C22.04,4.88 21.12,4 20,4M20,8L12,13L4,8V6L12,11L20,6";
var mdiEmailEditOutline = "M19.07 13.88L13 19.94V22H15.06L21.12 15.93M22.7 13.58L21.42 12.3C21.32 12.19 21.18 12.13 21.04 12.13C20.89 12.14 20.75 12.19 20.65 12.3L19.65 13.3L21.7 15.3L22.7 14.3C22.89 14.1 22.89 13.78 22.7 13.58M11 18H4V8L12 13L20 8V10H22V6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H11V18M20 6L12 11L4 6H20Z";
var mdiEmailLock = "M20.5,0A2.5,2.5 0 0,1 23,2.5V3A1,1 0 0,1 24,4V8A1,1 0 0,1 23,9H18A1,1 0 0,1 17,8V4A1,1 0 0,1 18,3V2.5A2.5,2.5 0 0,1 20.5,0M12,11L4,6V8L12,13L16.18,10.39C16.69,10.77 17.32,11 18,11H22V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H15V8C15,8.36 15.06,8.7 15.18,9L12,11M20.5,1A1.5,1.5 0 0,0 19,2.5V3H22V2.5A1.5,1.5 0 0,0 20.5,1Z";
var mdiEmailMarkAsUnread = "M18.84,7H16.22L10.5,4L4,7.41V17A2,2 0 0,1 2,15V7.17C2,6.5 2.28,6.06 2.81,5.81L10.5,2L18.05,5.81C18.5,6.09 18.78,6.5 18.84,7M7,8H20A2,2 0 0,1 22,10V19A2,2 0 0,1 20,21H7A2,2 0 0,1 5,19V10A2,2 0 0,1 7,8M20,11.67V10L13.5,13.31L7,10V11.67L13.5,15L20,11.67Z";
var mdiEmailMinus = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H14.09C14.03,19.67 14,19.34 14,19A6,6 0 0,1 20,13C20.34,13 20.67,13.03 21,13.09V6C21,4.89 20.1,4 19,4H3M3,6L11,11L19,6V8L11,13L3,8V6M16,18V20H24V18H16Z";
var mdiEmailMinusOutline = "M16 18V20H24V18H16M14 19C14 18.66 14.04 18.33 14.09 18H3V8L11 13L19 8V13.09C19.33 13.04 19.66 13 20 13S20.67 13.04 21 13.09V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H14.09C14.04 19.67 14 19.34 14 19M19 6L11 11L3 6H19Z";
var mdiEmailMultiple = "M22,6V4L14,9L6,4V6L14,11L22,6M22,2A2,2 0 0,1 24,4V16A2,2 0 0,1 22,18H6C4.89,18 4,17.1 4,16V4C4,2.89 4.89,2 6,2H22M2,6V20H20V22H2A2,2 0 0,1 0,20V6H2Z";
var mdiEmailMultipleOutline = "M2 6V20H20V22H2C.895 22 0 21.11 0 20V6H2M24 4C24 2.9 23.1 2 22 2H6C4.9 2 4 2.9 4 4V16C4 17.1 4.9 18 6 18H22C23.1 18 24 17.1 24 16V4M22 4L14 9L6 4H22M22 16H6V6L14 11L22 6V16Z";
var mdiEmailNewsletter = "M12 .64L8.23 3H5V5L2.97 6.29C2.39 6.64 2 7.27 2 8V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V8C22 7.27 21.61 6.64 21.03 6.29L19 5V3H15.77M7 5H17V9.88L12 13L7 9.88M8 6V7.5H16V6M5 7.38V8.63L4 8M19 7.38L20 8L19 8.63M8 8.5V10H16V8.5Z";
var mdiEmailOff = "M22.1 21.5L2.4 1.7L1.1 3L2.6 4.5C2.2 4.9 2 5.4 2 6V18C2 19.1 2.9 20 4 20H18.1L20.8 22.7L22.1 21.5M4 8V6L4.3 6.2L9.6 11.5L4 8M13.4 10.2L7.2 4H20C21.1 4 22 4.9 22 6V18C22 18.2 22 18.5 21.9 18.7L14.6 11.4L20 8V6L13.4 10.2Z";
var mdiEmailOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L2.6 4.5C2.3 4.9 2 5.4 2 6V18C2 19.1 2.9 20 4 20H18.1L20.8 22.7L22.1 21.5M4 18V8L9.6 11.5L16.1 18H4M9.2 6L7.2 4H20C21.1 4 22 4.9 22 6V18C22 18.2 22 18.5 21.9 18.7L20 16.8V8L14.6 11.4L13.4 10.2L20 6H9.2Z";
var mdiEmailOpen = "M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z";
var mdiEmailOpenMultiple = "M6,8L14,13L22,8V8L14,3L6,8V8M24,8V18A2,2 0 0,1 22,20H6A2,2 0 0,1 4,18V8C4,7.27 4.39,6.64 4.97,6.29L14,0.64L23.03,6.29C23.61,6.64 24,7.27 24,8M2,8V22H20V24H2A2,2 0 0,1 0,22V8H2Z";
var mdiEmailOpenMultipleOutline = "M2 8V22H20V24H2C.895 24 0 23.11 0 22V8H2M23.03 6.29L14 .64L4.97 6.29C4.39 6.64 4 7.27 4 8V18C4 19.1 4.9 20 6 20H22C23.1 20 24 19.1 24 18V8C24 7.27 23.61 6.64 23.03 6.29M22 18H6V10L14 15L22 10V18M14 13L6 8L14 3L22 8L14 13Z";
var mdiEmailOpenOutline = "M21.03 6.29L12 .64L2.97 6.29C2.39 6.64 2 7.27 2 8V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 7.27 21.61 6.64 21.03 6.29M20 18H4V10L12 15L20 10V18M12 13L4 8L12 3L20 8L12 13Z";
var mdiEmailOutline = "M22 6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V6M20 6L12 11L4 6H20M20 18H4V8L12 13L20 8V18Z";
var mdiEmailPlus = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H14.09C14.03,19.67 14,19.34 14,19A6,6 0 0,1 20,13C20.34,13 20.67,13.03 21,13.09V6C21,4.89 20.1,4 19,4H3M3,6L11,11L19,6V8L11,13L3,8V6M19,15V18H16V20H19V23H21V20H24V18H21V15H19Z";
var mdiEmailPlusOutline = "M19 15V18H16V20H19V23H21V20H24V18H21V15H19M14 18H3V8L11 13L19 8V13H21V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H14V18M19 6L11 11L3 6H19Z";
var mdiEmailReceive = "M22 20H18V23L13 18.5L18 14V17H22V20M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11.35A5.8 5.8 0 0 1 11 18A6 6 0 0 1 22 14.69V6A2 2 0 0 0 20 4M20 8L12 13L4 8V6L12 11L20 6Z";
var mdiEmailReceiveOutline = "M22 20H18V23L13 18.5L18 14V17H22V20M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11V18H4V8L12 13L20 8V15H22V6A2 2 0 0 0 20 4M12 11L4 6H20Z";
var mdiEmailRemove = "M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.89 4 4 4H20C21.1 4 22 4.89 22 6V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M20 8V6L12 11L4 6V8L12 13L20 8Z";
var mdiEmailRemoveOutline = "M13.09 18H4V8L12 13L20 8V13.09C20.72 13.21 21.39 13.46 22 13.81V6C22 4.9 21.1 4 20 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19C13 18.66 13.04 18.33 13.09 18M20 6L12 11L4 6H20M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z";
var mdiEmailSearch = "M3,4H19A2,2 0 0,1 21,6V10.82C20,9.85 18.7,9.23 17.31,9.06L19,8V6L11,11L3,6V8L10.62,12.76C10.21,13.62 10,14.55 10,15.5C10,17.18 10.65,18.79 11.81,20H3A2,2 0 0,1 1,18V6C1,4.89 1.89,4 3,4M16.5,11C19,11 21,13 21,15.5C21,16.38 20.75,17.21 20.31,17.9L23.39,21L22,22.39L18.88,19.32C18.19,19.75 17.37,20 16.5,20C14,20 12,18 12,15.5C12,13 14,11 16.5,11M16.5,13A2.5,2.5 0 0,0 14,15.5A2.5,2.5 0 0,0 16.5,18A2.5,2.5 0 0,0 19,15.5A2.5,2.5 0 0,0 16.5,13Z";
var mdiEmailSearchOutline = "M16.5 11C19 11 21 13 21 15.5C21 16.38 20.75 17.21 20.31 17.9L23.39 21L22 22.39L18.88 19.32C18.19 19.75 17.37 20 16.5 20C14 20 12 18 12 15.5S14 11 16.5 11M16.5 13C15.12 13 14 14.12 14 15.5S15.12 18 16.5 18 19 16.88 19 15.5 17.88 13 16.5 13M10.5 18H3V8L10.62 12.76C11.65 10.54 13.9 9 16.5 9C16.77 9 17.04 9 17.31 9.06L19 8V9.5C19.75 9.81 20.42 10.27 21 10.82V6C21 4.9 20.1 4 19 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H11.82C11.27 19.42 10.82 18.75 10.5 18M19 6L11 11L3 6H19Z";
var mdiEmailSend = "M13 17H17V14L22 18.5L17 23V20H13V17M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11.35A5.8 5.8 0 0 1 11 18A6 6 0 0 1 22 14.69V6A2 2 0 0 0 20 4M20 8L12 13L4 8V6L12 11L20 6Z";
var mdiEmailSendOutline = "M13 17H17V14L22 18.5L17 23V20H13V17M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H11V18H4V8L12 13L20 8V14H22V6A2 2 0 0 0 20 4M12 11L4 6H20Z";
var mdiEmailSync = "M3 4C1.89 4 1 4.89 1 6V18C1 19.11 1.9 20 3 20H13.5A6.5 6.5 0 0 1 13 17.5A6.5 6.5 0 0 1 19.5 11A6.5 6.5 0 0 1 21 11.18V6C21 4.89 20.1 4 19 4H3M3 6L11 11L19 6V8L11 13L3 8V6M19 12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5V12M15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29Z";
var mdiEmailSyncOutline = "M3 4C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H13.5A6.5 6.5 0 0 1 13 18H3V8L11 13L19 8V11A6.5 6.5 0 0 1 19.5 11A6.5 6.5 0 0 1 21 11.18V6C21 4.9 20.1 4 19 4H3M3 6H19L11 11L3 6M19 12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5V12M15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29Z";
var mdiEmailVariant = "M12,13L2,6.76V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V6.75L12,13M22,18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V9.11L4,10.36V18H20V10.36L22,9.11V18Z";
var mdiEmber = "M22,14.22C22,14.22 17.61,17.35 14.72,17.39C11.84,17.44 12.13,15.56 12.13,15.56C12.13,15.56 22.71,11.94 19.83,4.79C18.53,2.95 17,2.37 14.89,2.42C12.76,2.46 10.17,3.76 8.46,7.6C7.64,9.44 7.41,11.18 7.24,12.5V12.5C7.24,12.5 5.32,12.88 4.32,12.04C3.32,11.2 2.77,12.04 2.77,12.04C2.77,12.04 1.03,14.2 2.75,14.87C4.46,15.54 7.12,15.82 7.12,15.82V15.82C7.36,17 8.08,19 10.17,20.6C13.3,23 19.32,20.4 19.32,20.4M11.63,12.33C11.76,7.36 15,5.18 16.15,6.27C17.27,7.36 16.86,9.7 14.72,11.16C12.59,12.63 11.63,12.33 11.63,12.33Z";
var mdiEmby = "M11,2L6,7L7,8L2,13L7,18L8,17L13,22L18,17L17,16L22,11L17,6L16,7L11,2M10,8.5L16,12L10,15.5V8.5Z";
var mdiEmoticon = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8M8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8M12,17.5C9.67,17.5 7.69,16.04 6.89,14H17.11C16.3,16.04 14.33,17.5 12,17.5Z";
var mdiEmoticonAngry = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5V8L10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5L17,8V9.5Z";
var mdiEmoticonAngryOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5V8L10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5L17,8V9.5";
var mdiEmoticonConfused = "M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2M8.5 8A1.5 1.5 0 1 1 7 9.5A1.54 1.54 0 0 1 8.5 8M17 16H13A4 4 0 0 0 9.53 18L7.8 17A6 6 0 0 1 13 14H17M15.5 11A1.5 1.5 0 1 1 17 9.5A1.54 1.54 0 0 1 15.5 11Z";
var mdiEmoticonConfusedOutline = "M20 12A8 8 0 1 0 12 20A8 8 0 0 0 20 12M22 12A10 10 0 1 1 12 2A10 10 0 0 1 22 12M15.5 8A1.5 1.5 0 1 1 14 9.5A1.54 1.54 0 0 1 15.5 8M10 9.5A1.5 1.5 0 1 1 8.5 8A1.54 1.54 0 0 1 10 9.5M17 15H13A4 4 0 0 0 9.53 17L7.8 16A6 6 0 0 1 13 13H17Z";
var mdiEmoticonCool = "M3.22,7.22C4.91,4.11 8.21,2 12,2C15.79,2 19.09,4.11 20.78,7.22L20,8H4L3.22,7.22M21.4,8.6C21.78,9.67 22,10.81 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,10.81 2.22,9.67 2.6,8.6L4,10H5C5,11.38 7.12,12.5 8.5,12.5C9.88,12.5 11.25,11.38 11.25,10H12.75C12.75,11.38 14.12,12.5 15.5,12.5C16.88,12.5 19,11.38 19,10H20L21.4,8.6M16.19,15.42L14.77,14C14.32,14.72 13.25,15.23 12,15.23C10.75,15.23 9.68,14.72 9.23,14L7.81,15.42C8.71,16.5 10.25,17.23 12,17.23C13.75,17.23 15.29,16.5 16.19,15.42Z";
var mdiEmoticonCoolOutline = "M19,10C19,11.38 16.88,12.5 15.5,12.5C14.12,12.5 12.75,11.38 12.75,10H11.25C11.25,11.38 9.88,12.5 8.5,12.5C7.12,12.5 5,11.38 5,10H4.25C4.09,10.64 4,11.31 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,11.31 19.91,10.64 19.75,10H19M12,4C9.04,4 6.45,5.61 5.07,8H18.93C17.55,5.61 14.96,4 12,4M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z";
var mdiEmoticonCry = "M5.14,17.57C5.14,16.5 6.32,14.5 7.57,12.81C8.82,14.5 10,16.5 10,17.57A2.43,2.43 0 0,1 7.57,20C6.23,20 5.14,18.91 5.14,17.57M22,12A10,10 0 0,1 12,22C11.08,22 10.18,21.86 9.33,21.63C10.9,20.95 12,19.39 12,17.57C12,17.12 11.89,16.6 11.69,16C11.79,16 11.89,16 12,16C13.25,16 14.32,16.5 14.77,17.23L16.19,15.81C15.29,14.72 13.75,14 12,14C11.59,14 11.19,14.04 10.81,14.12C10.38,13.36 9.85,12.53 9.19,11.63L8.71,11C9.42,10.87 10,10.23 10,9.5C10,8.7 9.3,8 8.5,8C7.7,8 7,8.7 7,9.5C7,9.69 7.04,9.87 7.11,10.04L5.96,11.63C4.4,13.75 3.5,15.5 3.23,16.81C2.45,15.38 2,13.74 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M17,9.5C17,8.7 16.3,8 15.5,8C14.7,8 14,8.7 14,9.5C14,10.3 14.7,11 15.5,11C16.3,11 17,10.3 17,9.5Z";
var mdiEmoticonCryOutline = "M7.57,20C6.23,20 5.14,18.91 5.14,17.57C5.14,16.5 6.32,14.5 7.57,12.81C8.82,14.5 10,16.5 10,17.57A2.43,2.43 0 0,1 7.57,20M12,2A10,10 0 0,0 2,12C2,13.75 2.45,15.38 3.24,16.81C3.4,16 3.81,15.07 4.31,14.17C4.11,13.5 4,12.75 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20C11.76,20 11.53,20 11.29,19.96C10.82,20.7 10.14,21.28 9.34,21.63C10.19,21.87 11.08,22 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,14C11.59,14 11.19,14.04 10.81,14.12C11.16,14.75 11.47,15.4 11.69,16C11.79,16 11.89,16 12,16C13.25,16 14.32,16.5 14.77,17.23L16.19,15.81C15.29,14.72 13.75,14 12,14M15.5,8C14.7,8 14,8.7 14,9.5C14,10.3 14.7,11 15.5,11C16.3,11 17,10.3 17,9.5C17,8.7 16.3,8 15.5,8M10,9.5C10,8.7 9.3,8 8.5,8C7.7,8 7,8.7 7,9.5C7,10.3 7.7,11 8.5,11C9.3,11 10,10.3 10,9.5";
var mdiEmoticonDead = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M6.76,8.82L7.82,7.76L8.88,8.82L9.94,7.76L11,8.82L9.94,9.88L11,10.94L9.94,12L8.88,10.94L7.82,12L6.76,10.94L7.82,9.88L6.76,8.82M6.89,17.5C7.69,15.46 9.67,14 12,14C14.33,14 16.31,15.46 17.11,17.5H6.89M17.24,10.94L16.18,12L15.12,10.94L14.06,12L13,10.94L14.06,9.88L13,8.82L14.06,7.76L15.12,8.82L16.18,7.76L17.24,8.82L16.18,9.88L17.24,10.94Z";
var mdiEmoticonDeadOutline = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16.18,7.76L15.12,8.82L14.06,7.76L13,8.82L14.06,9.88L13,10.94L14.06,12L15.12,10.94L16.18,12L17.24,10.94L16.18,9.88L17.24,8.82L16.18,7.76M7.82,12L8.88,10.94L9.94,12L11,10.94L9.94,9.88L11,8.82L9.94,7.76L8.88,8.82L7.82,7.76L6.76,8.82L7.82,9.88L6.76,10.94L7.82,12M12,14C9.67,14 7.69,15.46 6.89,17.5H17.11C16.31,15.46 14.33,14 12,14Z";
var mdiEmoticonDevil = "M22.5,2.09C21.6,3 20.13,3.73 18.31,4.25C16.59,2.84 14.39,2 12,2C9.61,2 7.41,2.84 5.69,4.25C3.87,3.73 2.4,3 1.5,2.09C1.53,3.72 2.35,5.21 3.72,6.4C2.63,8 2,9.92 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,9.92 21.37,8 20.28,6.4C21.65,5.21 22.47,3.72 22.5,2.09M7.5,8.5L10.5,10C10.5,10.8 9.8,11.5 9,11.5C8.2,11.5 7.5,10.8 7.5,10V8.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M16.5,10C16.5,10.8 15.8,11.5 15,11.5C14.2,11.5 13.5,10.8 13.5,10L16.5,8.5V10Z";
var mdiEmoticonDevilOutline = "M1.5,2.09C2.4,3 3.87,3.73 5.69,4.25C7.41,2.84 9.61,2 12,2C14.39,2 16.59,2.84 18.31,4.25C20.13,3.73 21.6,3 22.5,2.09C22.47,3.72 21.65,5.21 20.28,6.4C21.37,8 22,9.92 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,9.92 2.63,8 3.72,6.4C2.35,5.21 1.53,3.72 1.5,2.09M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M10.5,10C10.5,10.8 9.8,11.5 9,11.5C8.2,11.5 7.5,10.8 7.5,10V8.5L10.5,10M16.5,10C16.5,10.8 15.8,11.5 15,11.5C14.2,11.5 13.5,10.8 13.5,10L16.5,8.5V10M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z";
var mdiEmoticonExcited = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M8.88,7.82L11,9.94L9.94,11L8.88,9.94L7.82,11L6.76,9.94L8.88,7.82M12,17.5C9.67,17.5 7.69,16.04 6.89,14H17.11C16.31,16.04 14.33,17.5 12,17.5M16.18,11L15.12,9.94L14.06,11L13,9.94L15.12,7.82L17.24,9.94L16.18,11Z";
var mdiEmoticonExcitedOutline = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M13,9.94L14.06,11L15.12,9.94L16.18,11L17.24,9.94L15.12,7.82L13,9.94M8.88,9.94L9.94,11L11,9.94L8.88,7.82L6.76,9.94L7.82,11L8.88,9.94M12,17.5C14.33,17.5 16.31,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5Z";
var mdiEmoticonFrown = "M12 2C6.47 2 2 6.5 2 12S6.47 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M15.5 8C16.33 8 17 8.67 17 9.5S16.33 11 15.5 11 14 10.33 14 9.5 14.67 8 15.5 8M8.5 8C9.33 8 10 8.67 10 9.5S9.33 11 8.5 11 7 10.33 7 9.5 7.67 8 8.5 8M6.89 17C7.69 14.96 9.67 13.5 12 13.5S16.31 14.96 17.11 17H6.89Z";
var mdiEmoticonFrownOutline = "M12 2C6.47 2 2 6.5 2 12S6.47 22 12 22C17.5 22 22 17.5 22 12S17.5 2 12 2M12 20C7.58 20 4 16.42 4 12S7.58 4 12 4 20 7.58 20 12 16.42 20 12 20M15.5 11C16.33 11 17 10.33 17 9.5S16.33 8 15.5 8 14 8.67 14 9.5 14.67 11 15.5 11M8.5 11C9.33 11 10 10.33 10 9.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11M12 13.5C9.67 13.5 7.69 14.96 6.89 17H17.11C16.31 14.96 14.33 13.5 12 13.5Z";
var mdiEmoticonHappy = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11Z";
var mdiEmoticonHappyOutline = "M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z";
var mdiEmoticonKiss = "M18.9,18.94L15.94,16C15.76,15.79 15.55,15.5 15.55,15.05A1.3,1.3 0 0,1 16.85,13.75C17.19,13.75 17.53,13.89 17.77,14.15L18.91,15.26L20.03,14.13C20.27,13.89 20.61,13.75 20.95,13.75A1.3,1.3 0 0,1 22.25,15.05C22.25,15.39 22.11,15.73 21.87,15.97L18.9,18.94M17.46,19.62C15.72,21.1 13.47,22 11,22A10,10 0 0,1 1,12A10,10 0 0,1 11,2A10,10 0 0,1 21,12C21,12.09 21,12.17 20.95,12.25C20.21,12.25 19.5,12.55 18.97,13.07L18.9,13.14L18.84,13.09C18.32,12.55 17.6,12.25 16.85,12.25A2.8,2.8 0 0,0 14.05,15.05C14.05,15.78 14.34,16.5 14.87,17.03L17.46,19.62M13,9.5C13,10.3 13.7,11 14.5,11C15.3,11 16,10.3 16,9.5C16,8.7 15.3,8 14.5,8C13.7,8 13,8.7 13,9.5M9,9.5C9,8.7 8.3,8 7.5,8C6.7,8 6,8.7 6,9.5C6,10.3 6.7,11 7.5,11C8.3,11 9,10.3 9,9.5M12.94,15.18L14,14.12L11.88,12L10.82,13.06L11.88,14.12L10.82,15.18L11.88,16.24L10.82,17.3L11.88,18.36L14,16.24L12.94,15.18Z";
var mdiEmoticonKissOutline = "M9,9.5C9,10.3 8.3,11 7.5,11C6.7,11 6,10.3 6,9.5C6,8.7 6.7,8 7.5,8C8.3,8 9,8.7 9,9.5M16,9.5C16,10.3 15.3,11 14.5,11C13.7,11 13,10.3 13,9.5C13,8.7 13.7,8 14.5,8C15.3,8 16,8.7 16,9.5M14,14.12L11.88,12L10.82,13.06L11.88,14.12L10.82,15.18L11.88,16.24L10.82,17.3L11.88,18.36L14,16.24L12.94,15.18L14,14.12M16.85,13A2.05,2.05 0 0,0 14.8,15.05C14.8,15.62 15.03,16.12 15.4,16.5L18.9,20L22.4,16.5C22.77,16.13 23,15.61 23,15.05A2.05,2.05 0 0,0 20.95,13C20.4,13 19.87,13.23 19.5,13.6L18.9,14.2L18.3,13.61C17.93,13.23 17.4,13 16.85,13M15,18.92C13.82,19.6 12.46,20 11,20A8,8 0 0,1 3,12A8,8 0 0,1 11,4C15.26,4 18.73,7.33 19,11.5C19.58,11.19 20.26,11 20.95,11C20.45,5.95 16.18,2 11,2A10,10 0 0,0 1,12A10,10 0 0,0 11,22C13,22 14.88,21.4 16.45,20.38L15,18.92Z";
var mdiEmoticonLol = "M15.07 8.93V4.93A4.06 4.06 0 0 1 15.73 2.72A10 10 0 0 0 2.73 15.72A4.06 4.06 0 0 1 4.94 15.06H8.94V19.06A4.06 4.06 0 0 1 8.28 21.27A10 10 0 0 0 21.28 8.27A4.06 4.06 0 0 1 19.07 8.93M11 6H12.5V7.5H14V9H11M7.5 14V12.5H6V11H9V14M15.89 15.9A5.5 5.5 0 0 1 9.8 17L17 9.8A5.5 5.5 0 0 1 15.89 15.89M4.89 21.08A2 2 0 0 1 2.89 19.08A2 2 0 0 1 4.89 17.08H6.89V19.08A2 2 0 0 1 4.93 21.07M19.07 2.93A2 2 0 0 1 21.07 4.93A2 2 0 0 1 19.07 6.93H17.07V4.93A2 2 0 0 1 19.07 2.93Z";
var mdiEmoticonLolOutline = "M6 11V12.5H7.5V14H9V11M12.5 6H11V9H14V7.5H12.5M9.8 17A5.5 5.5 0 0 0 17 9.8M6.34 6.34A8 8 0 0 1 15.08 4.62A4.11 4.11 0 0 1 15.73 2.72A10 10 0 0 0 2.73 15.72A4.11 4.11 0 0 1 4.63 15.07A8 8 0 0 1 6.34 6.34M17.66 17.66A8 8 0 0 1 8.92 19.38A4.11 4.11 0 0 1 8.27 21.28A10 10 0 0 0 21.27 8.28A4.11 4.11 0 0 1 19.37 8.93A8 8 0 0 1 17.66 17.66M6 11V12.5H7.5V14H9V11M9.8 17A5.5 5.5 0 0 0 17 9.8M12.5 6H11V9H14V7.5H12.5M6 11V12.5H7.5V14H9V11M12.5 6H11V9H14V7.5H12.5M9.8 17A5.5 5.5 0 0 0 17 9.8M4.93 21A2 2 0 0 1 2.93 19A2 2 0 0 1 4.93 17H6.93V19A2 2 0 0 1 4.93 21.07M19.07 2.93A2 2 0 0 1 21.07 4.93A2 2 0 0 1 19.07 6.93H17.07V4.93A2 2 0 0 1 19.07 2.93Z";
var mdiEmoticonNeutral = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11A1.5,1.5 0 0,1 7,9.5M16,16H8V14H16V16M15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11Z";
var mdiEmoticonNeutralOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M17,9.5A1.5,1.5 0 0,1 15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5M16,14V16H8V14H16Z";
var mdiEmoticonOutline = "M12,17.5C14.33,17.5 16.3,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5M8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11M15.5,11A1.5,1.5 0 0,0 17,9.5A1.5,1.5 0 0,0 15.5,8A1.5,1.5 0 0,0 14,9.5A1.5,1.5 0 0,0 15.5,11M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiEmoticonPoop = "M11.36,2C11.15,2 10.87,2.12 10.57,2.32C10,2.7 8.85,3.9 8.4,5.1C8.06,6 8.05,6.82 8.19,7.43C7.63,7.53 7.22,7.71 7.06,7.78C6.55,8 5.47,8.96 5.37,10.45C5.34,10.97 5.41,11.5 5.57,12C4.91,12.19 4.53,12.43 4.5,12.44C4.18,12.56 3.65,12.93 3.5,13.13C3.15,13.53 2.92,14 2.79,14.5C2.5,15.59 2.6,16.83 3.13,17.83C3.42,18.39 3.82,19 4.26,19.43C5.7,20.91 8.18,21.47 10.14,21.79C12.53,22.19 15.03,22.05 17.26,21.13C20.61,19.74 21.5,17.5 21.64,16.89C21.93,15.5 21.57,14.19 21.42,13.87C21.2,13.41 20.84,12.94 20.25,12.64C19.85,12.39 19.5,12.26 19.24,12.2C19.5,11.25 19.13,10.5 18.62,9.94C17.85,9.12 17.06,9 17.06,9V9C17.32,8.5 17.42,7.9 17.28,7.32C17.12,6.61 16.73,6.16 16.22,5.86C15.7,5.55 15.06,5.4 14.4,5.28C14.08,5.22 12.75,5.03 12.2,4.27C11.75,3.65 11.74,2.53 11.62,2.2C11.57,2.07 11.5,2 11.36,2M16,9.61C16.07,9.61 16.13,9.62 16.19,9.62C17.62,9.78 18.64,11.16 18.47,12.69C18.3,14.22 17,15.34 15.57,15.18V15.18C14.14,15 13.12,13.65 13.29,12.11C13.45,10.66 14.64,9.56 16,9.61M8.62,9.61C9.95,9.65 11.06,10.78 11.16,12.21C11.28,13.75 10.21,15.08 8.78,15.19H8.77C7.34,15.3 6.08,14.14 5.96,12.6V12.6C5.85,11.06 6.92,9.73 8.35,9.62V9.62C8.44,9.61 8.53,9.61 8.62,9.61M8.64,11.31C8.6,11.31 8.57,11.31 8.53,11.32C7.97,11.39 7.57,11.9 7.64,12.45C7.7,13 8.21,13.39 8.77,13.32C9.33,13.25 9.73,12.74 9.67,12.19C9.61,11.67 9.15,11.3 8.64,11.31M15.94,11.33C15.42,11.35 15,11.75 14.96,12.28C14.92,12.83 15.35,13.31 15.91,13.34C16.5,13.38 16.96,12.95 17,12.4C17.04,11.84 16.61,11.36 16.05,11.33C16,11.33 16,11.33 15.94,11.33M8.71,16.15C9,16.14 9.26,16.23 9.5,16.28C10.68,16.5 11.7,16.53 12.19,16.53C12.68,16.53 13.69,16.5 14.86,16.28C15.27,16.2 15.74,16.03 16.11,16.28C16.59,16.6 16.24,17.75 15.5,18.53C15.04,19 13.97,19.91 12.19,19.91C10.41,19.91 9.33,19 8.88,18.53C8.14,17.75 7.79,16.6 8.26,16.28C8.4,16.19 8.55,16.15 8.71,16.15Z";
var mdiEmoticonPoopOutline = "M21.42,13.87C21.2,13.41 20.84,12.94 20.25,12.64C19.85,12.39 19.5,12.26 19.24,12.2C19.5,11.25 19.13,10.5 18.62,9.94C17.85,9.12 17.06,9 17.06,9C17.32,8.5 17.42,7.9 17.28,7.32C17.12,6.61 16.73,6.16 16.22,5.86C15.7,5.55 15.06,5.4 14.4,5.28C14.08,5.22 12.75,5.03 12.2,4.27C11.75,3.65 11.74,2.53 11.62,2.2C11.57,2.07 11.5,2 11.36,2C11.15,2 10.87,2.12 10.57,2.32C10,2.7 8.85,3.9 8.4,5.1C8.06,6 8.05,6.82 8.19,7.43C7.63,7.53 7.22,7.71 7.06,7.78C6.55,8 5.47,8.96 5.37,10.45C5.34,10.89 5.41,11.34 5.5,11.78C5.5,11.86 5.5,11.94 5.5,12.03C4.88,12.22 4.53,12.43 4.5,12.44C4.18,12.56 3.65,12.93 3.5,13.13C3.15,13.53 2.92,14 2.79,14.5C2.5,15.59 2.6,16.83 3.13,17.83C3.42,18.39 3.82,19 4.26,19.43C5.7,20.91 8.18,21.47 10.14,21.79C10.96,21.93 11.8,22 12.63,22C14.22,22 15.8,21.73 17.26,21.13C20.61,19.74 21.5,17.5 21.64,16.89C21.93,15.5 21.57,14.19 21.42,13.87M16.05,11.33C16.61,11.36 17.04,11.84 17,12.4C16.96,12.95 16.5,13.38 15.91,13.34C15.35,13.31 14.92,12.83 14.96,12.28C15,11.75 15.42,11.35 15.94,11.33C16,11.33 16,11.33 16.05,11.33M20.18,16.55C20.17,16.57 19.7,18.5 16.69,19.74C15.47,20.25 14.1,20.5 12.63,20.5C11.9,20.5 11.14,20.44 10.38,20.31C8.76,20.05 6.5,19.56 5.31,18.36C5.04,18.09 4.72,17.63 4.46,17.13C4.12,16.5 4.04,15.65 4.24,14.88C4.32,14.58 4.45,14.32 4.63,14.12L4.65,14.09C4.74,14 4.95,13.88 5.03,13.84V13.84L5.14,13.8L5.26,13.74C5.32,13.7 5.46,13.63 5.67,13.55C6.13,14.81 7.28,15.7 8.59,15.7C8.67,15.7 8.74,15.69 8.82,15.69C9.65,15.63 10.41,15.22 10.94,14.55C11.47,13.89 11.73,13.04 11.66,12.17C11.54,10.5 10.22,9.16 8.64,9.11H8.62C8.5,9.11 8.4,9.11 8.31,9.12C8,9.15 7.73,9.23 7.46,9.34C7.55,9.24 7.63,9.17 7.66,9.15C7.79,9.1 8.07,9 8.45,8.91L10,8.63L9.65,7.09C9.61,6.9 9.53,6.35 9.81,5.63C9.96,5.2 10.27,4.76 10.58,4.38C10.68,4.65 10.81,4.91 11,5.15C11.77,6.23 13.12,6.58 14.06,6.74L14.13,6.76C14.6,6.84 15.13,6.95 15.46,7.15C15.67,7.28 15.76,7.41 15.82,7.67C15.87,7.87 15.84,8.1 15.73,8.31L15.21,9.2C13.95,9.5 12.95,10.64 12.79,12.06C12.59,13.87 13.78,15.46 15.5,15.68C15.62,15.69 15.74,15.7 15.85,15.7C16.56,15.7 17.25,15.44 17.82,14.95C18.23,14.59 18.54,14.13 18.74,13.62L18.9,13.66C19,13.68 19.17,13.74 19.45,13.91L19.5,13.95L19.57,14C19.78,14.08 19.94,14.26 20.05,14.5C20.13,14.67 20.38,15.6 20.18,16.55M7.64,12.45C7.57,11.9 7.97,11.39 8.53,11.32C8.57,11.31 8.6,11.31 8.64,11.31C9.15,11.3 9.61,11.67 9.67,12.19C9.73,12.74 9.33,13.25 8.77,13.32C8.21,13.39 7.7,13 7.64,12.45M8.71,16.15C9,16.14 9.26,16.23 9.5,16.28C10.68,16.5 11.7,16.53 12.19,16.53C12.68,16.53 13.69,16.5 14.86,16.28C15.27,16.2 15.74,16.03 16.11,16.28C16.59,16.6 16.24,17.75 15.5,18.53C15.04,19 13.97,19.91 12.19,19.91C10.41,19.91 9.33,19 8.88,18.53C8.14,17.75 7.79,16.6 8.26,16.28C8.4,16.19 8.55,16.15 8.71,16.15Z";
var mdiEmoticonSad = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23M15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11Z";
var mdiEmoticonSadOutline = "M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14Z";
var mdiEmoticonSick = "M21 9C19.9 9 19 8.1 19 7S21 3 21 3 23 5.9 23 7 22.1 9 21 9M17.5 7C17.5 6.27 17.91 5.29 18.42 4.34C16.68 2.88 14.44 2 12 2C6.47 2 2 6.5 2 12S6.47 22 12 22C17.5 22 22 17.5 22 12C22 11.45 21.94 10.91 21.86 10.38C21.58 10.45 21.3 10.5 21 10.5C19.07 10.5 17.5 8.93 17.5 7M15.62 7.38L16.68 8.44L15.62 9.5L16.68 10.56L15.62 11.62L13.5 9.5L15.62 7.38M7.32 8.44L8.38 7.38L10.5 9.5L8.38 11.62L7.32 10.56L8.38 9.5L7.32 8.44M15.44 17C14.75 15.81 13.47 15 12 15S9.25 15.81 8.56 17H6.88C7.18 16.24 7.64 15.57 8.22 15L5.24 13.3C4.79 13.56 4.23 13.58 3.75 13.3C3.03 12.89 2.79 11.97 3.2 11.25S4.53 10.29 5.25 10.7C5.73 11 6 11.5 6 12L9.57 14.06C10.3 13.7 11.12 13.5 12 13.5C14.33 13.5 16.32 14.95 17.12 17H15.44Z";
var mdiEmoticonSickOutline = "M7.32 10.56L8.38 9.5L7.32 8.44L8.38 7.38L10.5 9.5L8.38 11.62L7.32 10.56M4.5 9C4.53 9 4.55 9 4.58 9C5.77 6.07 8.64 4 12 4C14.19 4 16.16 4.88 17.61 6.3C17.76 5.7 18.06 5 18.42 4.34C16.68 2.88 14.44 2 12 2C7.11 2 3.05 5.5 2.18 10.14C2.74 9.44 3.59 9 4.5 9M21 10.5C20.58 10.5 20.18 10.41 19.81 10.28C19.93 10.83 20 11.41 20 12C20 16.42 16.42 20 12 20C8.64 20 5.77 17.93 4.58 15C4.55 15 4.53 15 4.5 15C4 15 3.46 14.86 3 14.6C2.68 14.42 2.41 14.18 2.18 13.9C3.07 18.5 7.11 22 12 22C17.5 22 22 17.5 22 12C22 11.45 21.94 10.91 21.86 10.38C21.58 10.45 21.3 10.5 21 10.5M21 3C21 3 19 5.9 19 7S19.9 9 21 9 23 8.1 23 7 21 3 21 3M15.62 7.38L13.5 9.5L15.62 11.62L16.68 10.56L15.62 9.5L16.68 8.44L15.62 7.38M8.56 17C9.25 15.81 10.53 15 12 15S14.75 15.81 15.44 17H17.12C16.32 14.95 14.33 13.5 12 13.5C11.13 13.5 10.3 13.7 9.57 14.07L6 12C6 11.5 5.73 11 5.25 10.71C4.53 10.3 3.62 10.54 3.2 11.26C2.79 12 3.03 12.89 3.75 13.31C4.23 13.59 4.8 13.56 5.24 13.31L8.21 15.03C7.64 15.56 7.18 16.24 6.88 17H8.56Z";
var mdiEmoticonTongue = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7.27,11C7.1,10.71 7,10.36 7,10C7,8.89 7.89,8 9,8A2,2 0 0,1 11,10C11,10.36 10.9,10.71 10.73,11C10.39,10.4 9.74,10 9,10C8.26,10 7.61,10.4 7.27,11M16,15H15C15,17 14.1,18 13,18C11.9,18 11,17 11,15H8V13H16V15M16.73,11C16.39,10.4 15.74,10 15,10C14.26,10 13.61,10.4 13.27,11C13.1,10.71 13,10.36 13,10C13,8.89 13.89,8 15,8A2,2 0 0,1 17,10C17,10.36 16.9,10.71 16.73,11Z";
var mdiEmoticonTongueOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M9,10C8.26,10 7.61,10.4 7.27,11C7.1,10.71 7,10.36 7,10A2,2 0 0,1 9,8C10.11,8 11,8.9 11,10C11,10.36 10.9,10.71 10.73,11C10.39,10.4 9.74,10 9,10M17,10C17,10.36 16.9,10.71 16.73,11C16.39,10.4 15.74,10 15,10C14.26,10 13.61,10.4 13.27,11C13.1,10.71 13,10.36 13,10A2,2 0 0,1 15,8C16.11,8 17,8.9 17,10M16,13V15H15C15,17 14.1,18 13,18C11.9,18 11,17 11,15H8V13H16Z";
var mdiEmoticonWink = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M17,10H13V9H17V10Z";
var mdiEmoticonWinkOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23M17,10H13V9H17V10Z";
var mdiEngine = "M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z";
var mdiEngineOff = "M3.78,2.5L21.5,20.22L20.23,21.5L18,19.27V20H10L8,18H5V15H3V18H1V10H3V13H5V10L6.87,8.14L2.5,3.77L3.78,2.5M20,9V12H18V8H12V6H15V4H7.82L22.82,19H23V9H20Z";
var mdiEngineOffOutline = "M2.5,3.77L6.87,8.14L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V19.27L21.23,22.5L22.5,21.22L3.78,2.5L2.5,3.77M16,18H11L9,16H7V11L8,10H8.73L16,17.27V18M23,9V19H22.82L16,12.18V10H13.82L7.82,4H15V6H12V8H18V12H20V9H23Z";
var mdiEngineOutline = "M8,10H16V18H11L9,16H7V11M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z";
var mdiEpsilon = "M15.05 7.78L16.15 6.18C16.15 6.18 14.91 5 12.77 5C10.04 5 8.35 6.84 8.35 8.76C8.35 10.68 10.08 11.69 10.08 11.69C10.08 11.69 8 12.38 8 15C8 17.63 10.14 19 12.44 19C15.38 19 17 17.04 17 17.04L15.6 15.5C15.6 15.5 14.14 16.87 12.59 16.87C10.66 16.87 10.21 15.69 10.21 14.92C10.21 13.87 10.54 12.65 13.83 12.65L13.82 10.77C13.82 10.77 10.44 11.11 10.44 8.78C10.44 7.21 11.9 6.92 12.64 6.92C14.28 6.92 15.05 7.78 15.05 7.78";
var mdiEqual = "M19,10H5V8H19V10M19,16H5V14H19V16Z";
var mdiEqualBox = "M17,16V14H7V16H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M17,10V8H7V10H17Z";
var mdiEqualizer = "M10,20H14V4H10V20M4,20H8V12H4V20M16,9V20H20V9H16Z";
var mdiEqualizerOutline = "M15,21H9V3H15V21M11,19H13V5H11V19M8,21H2V11H8V21M4,19H6V13H4V19M22,21H16V8H22V21M18,19H20V10H18V19Z";
var mdiEraser = "M16.24,3.56L21.19,8.5C21.97,9.29 21.97,10.55 21.19,11.34L12,20.53C10.44,22.09 7.91,22.09 6.34,20.53L2.81,17C2.03,16.21 2.03,14.95 2.81,14.16L13.41,3.56C14.2,2.78 15.46,2.78 16.24,3.56M4.22,15.58L7.76,19.11C8.54,19.9 9.8,19.9 10.59,19.11L14.12,15.58L9.17,10.63L4.22,15.58Z";
var mdiEraserVariant = "M15.14,3C14.63,3 14.12,3.2 13.73,3.59L2.59,14.73C1.81,15.5 1.81,16.77 2.59,17.56L5.03,20H12.69L21.41,11.27C22.2,10.5 22.2,9.23 21.41,8.44L16.56,3.59C16.17,3.2 15.65,3 15.14,3M17,18L15,20H22V18";
var mdiEscalator = "M20,8H18.95L6.95,20H4A2,2 0 0,1 2,18A2,2 0 0,1 4,16H5.29L7,14.29V10A1,1 0 0,1 8,9H9A1,1 0 0,1 10,10V11.29L17.29,4H20A2,2 0 0,1 22,6A2,2 0 0,1 20,8M8.5,5A1.5,1.5 0 0,1 10,6.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 7,6.5A1.5,1.5 0 0,1 8.5,5Z";
var mdiEscalatorBox = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M14.34 6H17.05C18.16 6 19.05 6.9 19.05 8C19.05 9.11 18.16 10 17.05 10H16L10 18H7.05C5.95 18 5.05 17.11 5.05 16C5.05 14.9 5.95 14 7.05 14H8.34L14.34 6Z";
var mdiEscalatorDown = "M20 8H18.95L6.95 20H4C2.9 20 2 19.11 2 18C2 16.9 2.9 16 4 16H5.29L7 14.29V10C7 9.45 7.45 9 8 9H9C9.55 9 10 9.45 10 10V11.29L17.29 4H20C21.11 4 22 4.89 22 6C22 7.11 21.11 8 20 8M8.5 5C9.33 5 10 5.67 10 6.5C10 7.33 9.33 8 8.5 8C7.67 8 7 7.33 7 6.5C7 5.67 7.67 5 8.5 5M14.83 17.34L20.34 11.83L22.17 13.66L16.66 19.17L18.5 21H13V15.5L14.83 17.34Z";
var mdiEscalatorUp = "M20 8H18.95L6.95 20H4C2.9 20 2 19.11 2 18C2 16.9 2.9 16 4 16H5.29L7 14.29V10C7 9.45 7.45 9 8 9H9C9.55 9 10 9.45 10 10V11.29L17.29 4H20C21.11 4 22 4.89 22 6C22 7.11 21.11 8 20 8M8.5 5C9.33 5 10 5.67 10 6.5C10 7.33 9.33 8 8.5 8C7.67 8 7 7.33 7 6.5C7 5.67 7.67 5 8.5 5M20.17 15.66L14.66 21.17L12.83 19.34L18.34 13.83L16.5 12H22V17.5L20.17 15.66Z";
var mdiEslint = "M7.95,9.55L11.84,7.3C11.94,7.25 12.06,7.25 12.16,7.3L16.05,9.55C16.15,9.61 16.21,9.71 16.21,9.82V14.32C16.21,14.43 16.15,14.53 16.05,14.59L12.16,16.84C12.06,16.89 11.94,16.89 11.84,16.84L7.95,14.59C7.85,14.53 7.79,14.43 7.79,14.32V9.82C7.79,9.71 7.85,9.61 7.95,9.55M22.12,11.6C22.29,11.89 22.29,12.23 22.12,12.53L17.47,20.56C17.3,20.86 17,21 16.65,21H7.35C7,21 6.7,20.85 6.53,20.56L1.88,12.53C1.71,12.24 1.71,11.87 1.88,11.58L6.53,3.5C6.7,3.22 7,3 7.35,3H16.65C17,3 17.3,3.22 17.47,3.5L22.12,11.6M18.27,15.5V8.65C18.27,8.53 18.2,8.42 18.09,8.36L12.16,4.95C12.06,4.89 11.93,4.89 11.83,4.95L5.91,8.36C5.8,8.42 5.73,8.53 5.73,8.65V15.5C5.73,15.61 5.8,15.72 5.91,15.78L11.84,19.19C11.94,19.25 12.07,19.25 12.17,19.19L18.09,15.78C18.2,15.72 18.27,15.61 18.27,15.5Z";
var mdiEt = "M23,8.78L21.71,7.22C21.45,7.42 20.53,8 19.77,8C19.26,8 18.3,7.75 17.45,7.53C16.39,7.26 15.39,7 14.6,7C14,7 13.43,7.15 12.93,7.35C12.62,5.45 11,4 9,4C4.58,4 2,7.58 2,12C2,16.42 5.58,19 10,19C12.06,19 13.93,18.43 15.34,17.39L15,21.29L17,21.47L18,9.74C18.66,9.89 19.27,10 19.77,10C21.38,10 22.84,8.91 23,8.78M9,6A2,2 0 0,1 11,8A2,2 0 0,1 9,10H4.23C4.8,7.67 6.39,6 9,6M10,17C6.69,17 4,15.31 4,12H9C10.6,12 11.83,11.17 12.5,9.91V9.91C12.76,9.71 13.85,9 14.6,9C14.94,9 15.5,9.11 16.05,9.25L15.65,13.89C14.82,15.95 12.6,17 10,17Z";
var mdiEthereum = "M12,1.75L5.75,12.25L12,16L18.25,12.25L12,1.75M5.75,13.5L12,22.25L18.25,13.5L12,17.25L5.75,13.5Z";
var mdiEthernet = "M7,15H9V18H11V15H13V18H15V15H17V18H19V9H15V6H9V9H5V18H7V15M4.38,3H19.63C20.94,3 22,4.06 22,5.38V19.63A2.37,2.37 0 0,1 19.63,22H4.38C3.06,22 2,20.94 2,19.63V5.38C2,4.06 3.06,3 4.38,3Z";
var mdiEthernetCable = "M11,3V7H13V3H11M8,4V11H16V4H14V8H10V4H8M10,12V22H14V12H10Z";
var mdiEthernetCableOff = "M11,3H13V7H11V3M8,4H10V8H14V4H16V11H12.82L8,6.18V4M20,20.72L18.73,22L14,17.27V22H10V13.27L2,5.27L3.28,4L20,20.72Z";
var mdiEvPlugCcs1 = "M16 15H15.59C17.63 13.78 19 11.55 19 9C19 5.47 16.39 2.57 13 2.08V.949H11V2.08C7.61 2.57 5 5.47 5 9C5 11.55 6.37 13.78 8.41 15H8C5.79 15 4 16.79 4 19S5.79 23 8 23H16C18.21 23 20 21.21 20 19S18.21 15 16 15M17.5 11C17.5 11.83 16.83 12.5 16 12.5S14.5 11.83 14.5 11 15.17 9.5 16 9.5 17.5 10.17 17.5 11M15 5C16.11 5 17 5.9 17 7S16.11 9 15 9 13 8.11 13 7 13.9 5 15 5M9 5C10.11 5 11 5.9 11 7S10.11 9 9 9 7 8.11 7 7 7.9 5 9 5M8 12.5C7.17 12.5 6.5 11.83 6.5 11S7.17 9.5 8 9.5 9.5 10.17 9.5 11 8.83 12.5 8 12.5M9 21.82V21H7V21.82C5.84 21.4 5 20.3 5 19C5 17.34 6.34 16 8 16S11 17.34 11 19C11 20.3 10.16 21.4 9 21.82M10 12C10 10.9 10.9 10 12 10S14 10.9 14 12 13.11 14 12 14 10 13.11 10 12M17 21.82V21H15V21.82C13.84 21.4 13 20.3 13 19C13 17.34 14.34 16 16 16S19 17.34 19 19C19 20.3 18.16 21.4 17 21.82M14.5 7C14.5 6.72 14.72 6.5 15 6.5S15.5 6.72 15.5 7 15.28 7.5 15 7.5 14.5 7.28 14.5 7M8.5 7C8.5 6.72 8.72 6.5 9 6.5S9.5 6.72 9.5 7 9.28 7.5 9 7.5 8.5 7.28 8.5 7M9 19C9 19.55 8.55 20 8 20S7 19.55 7 19 7.45 18 8 18 9 18.45 9 19M17 19C17 19.55 16.55 20 16 20S15 19.55 15 19 15.45 18 16 18 17 18.45 17 19M12.5 12C12.5 12.28 12.28 12.5 12 12.5S11.5 12.28 11.5 12 11.72 11.5 12 11.5 12.5 11.72 12.5 12Z";
var mdiEvPlugCcs2 = "M14 4.5C14 4.22 14.22 4 14.5 4S15 4.22 15 4.5 14.78 5 14.5 5 14 4.78 14 4.5M20 19C20 21.21 18.21 23 16 23H8C5.79 23 4 21.21 4 19C4 16.79 5.79 15 8 15H8.13C5.67 13.64 4 11 4 8C4 5.61 5.06 3.47 6.72 2H17.28C18.94 3.47 20 5.61 20 8C20 11 18.33 13.64 15.87 15H16C18.21 15 20 16.79 20 19M16.5 12C16.5 10.9 15.61 10 14.5 10S12.5 10.9 12.5 12C12.5 13.11 13.4 14 14.5 14S16.5 13.11 16.5 12M17 6C15.9 6 15 6.9 15 8C15 9.11 15.9 10 17 10S19 9.11 19 8C19 6.9 18.11 6 17 6M13 4.5C13 5.33 13.67 6 14.5 6S16 5.33 16 4.5 15.33 3 14.5 3 13 3.67 13 4.5M12 6C10.9 6 10 6.9 10 8C10 9.11 10.9 10 12 10S14 9.11 14 8C14 6.9 13.11 6 12 6M8 4.5C8 5.33 8.67 6 9.5 6S11 5.33 11 4.5 10.33 3 9.5 3 8 3.67 8 4.5M7 10C8.11 10 9 9.11 9 8C9 6.9 8.11 6 7 6S5 6.9 5 8C5 9.11 5.9 10 7 10M9.5 14C10.61 14 11.5 13.11 11.5 12C11.5 10.9 10.61 10 9.5 10S7.5 10.9 7.5 12C7.5 13.11 8.4 14 9.5 14M11 19C11 17.34 9.66 16 8 16S5 17.34 5 19 6.34 22 8 22 11 20.66 11 19M19 19C19 17.34 17.66 16 16 16S13 17.34 13 19 14.34 22 16 22 19 20.66 19 19M17 8.5C17.28 8.5 17.5 8.28 17.5 8S17.28 7.5 17 7.5 16.5 7.72 16.5 8 16.72 8.5 17 8.5M14.5 11.5C14.22 11.5 14 11.72 14 12S14.22 12.5 14.5 12.5 15 12.28 15 12 14.78 11.5 14.5 11.5M16 18C15.45 18 15 18.45 15 19C15 19.55 15.45 20 16 20S17 19.55 17 19C17 18.45 16.55 18 16 18M12 8.5C12.28 8.5 12.5 8.28 12.5 8S12.28 7.5 12 7.5 11.5 7.72 11.5 8 11.72 8.5 12 8.5M8 18C7.45 18 7 18.45 7 19C7 19.55 7.45 20 8 20S9 19.55 9 19C9 18.45 8.55 18 8 18M7 7.5C6.72 7.5 6.5 7.72 6.5 8S6.72 8.5 7 8.5 7.5 8.28 7.5 8 7.28 7.5 7 7.5M9.5 5C9.78 5 10 4.78 10 4.5S9.78 4 9.5 4 9 4.22 9 4.5 9.22 5 9.5 5M10 12C10 11.72 9.78 11.5 9.5 11.5S9 11.72 9 12 9.22 12.5 9.5 12.5 10 12.28 10 12Z";
var mdiEvPlugChademo = "M8 10.5C8.83 10.5 9.5 11.17 9.5 12S8.83 13.5 8 13.5 6.5 12.83 6.5 12 7.17 10.5 8 10.5M8 9C6.34 9 5 10.34 5 12S6.34 15 8 15 11 13.66 11 12 9.66 9 8 9M16 10.5C16.83 10.5 17.5 11.17 17.5 12S16.83 13.5 16 13.5C15.17 13.5 14.5 12.83 14.5 12S15.17 10.5 16 10.5M16 9C14.34 9 13 10.34 13 12S14.34 15 16 15 19 13.66 19 12 17.66 9 16 9M14.12 8.41L12.71 7L14.12 5.59L13.41 4.88L12 6.29L10.59 4.88L9.88 5.59L11.29 7L9.88 8.41L10.59 9.12L12 7.71L13.41 9.12L14.12 8.41M14.12 18.41L12.71 17L14.12 15.59L13.41 14.88L12 16.29L10.59 14.88L9.88 15.59L11.29 17L9.88 18.41L10.59 19.12L12 17.71L13.41 19.12L14.12 18.41M19.74 5.67L20.5 4.93L19.07 3.5L18.33 4.26C16.6 2.85 14.4 2 12 2S7.4 2.85 5.67 4.26L4.93 3.5L3.5 4.93L4.26 5.67C2.85 7.4 2 9.6 2 12C2 17.5 6.5 22 12 22S22 17.5 22 12C22 9.6 21.15 7.4 19.74 5.67M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20Z";
var mdiEvPlugTesla = "M6 9C6 8.45 6.45 8 7 8S8 8.45 8 9 7.55 10 7 10 6 9.55 6 9M17 10C17.55 10 18 9.55 18 9S17.55 8 17 8 16 8.45 16 9 16.45 10 17 10M22 9.93V11C22 15.97 17.97 20 13 20H11C6.03 20 2 16 2 11V9.93C2 6.65 4.65 4 7.93 4H16.07C19.35 4 22 6.65 22 9.93M14.5 9C14.5 10.38 15.62 11.5 17 11.5S19.5 10.38 19.5 9 18.38 6.5 17 6.5 14.5 7.62 14.5 9M4.5 9C4.5 10.38 5.62 11.5 7 11.5S9.5 10.38 9.5 9 8.38 6.5 7 6.5 4.5 7.62 4.5 9M9 17C9 16.45 8.55 16 8 16S7 16.45 7 17 7.45 18 8 18 9 17.55 9 17M13.5 17C13.5 16.17 12.83 15.5 12 15.5S10.5 16.17 10.5 17 11.17 18.5 12 18.5 13.5 17.83 13.5 17M17 17C17 16.45 16.55 16 16 16S15 16.45 15 17 15.45 18 16 18 17 17.55 17 17M19.97 11.66C19.23 12.5 18.18 13 17 13C14.79 13 13 11.21 13 9C13 7.8 13.54 6.73 14.38 6H9.62C10.46 6.73 11 7.8 11 9C11 11.21 9.21 13 7 13C5.82 13 4.76 12.5 4.03 11.66C4.19 13.32 4.93 14.82 6.04 15.94C7.71 14.73 9.76 14 12 14C14.24 14 16.29 14.73 17.96 15.94C19.07 14.82 19.81 13.32 19.97 11.66Z";
var mdiEvPlugType1 = "M12.5 15C12.5 15.28 12.28 15.5 12 15.5S11.5 15.28 11.5 15 11.72 14.5 12 14.5 12.5 14.72 12.5 15M15 10.5C15.28 10.5 15.5 10.28 15.5 10S15.28 9.5 15 9.5 14.5 9.72 14.5 10 14.72 10.5 15 10.5M9 10.5C9.28 10.5 9.5 10.28 9.5 10S9.28 9.5 9 9.5 8.5 9.72 8.5 10 8.72 10.5 9 10.5M13 18.92V20H11V18.92C7.61 18.43 5 15.53 5 12S7.61 5.57 11 5.08V4H13V5.08C16.39 5.57 19 8.5 19 12S16.39 18.43 13 18.92M13 10C13 11.11 13.9 12 15 12S17 11.11 17 10 16.11 8 15 8 13 8.9 13 10M7 10C7 11.11 7.9 12 9 12S11 11.11 11 10 10.11 8 9 8 7 8.9 7 10M9.5 14C9.5 13.17 8.83 12.5 8 12.5S6.5 13.17 6.5 14 7.17 15.5 8 15.5 9.5 14.83 9.5 14M14 15C14 13.9 13.11 13 12 13S10 13.9 10 15 10.9 17 12 17 14 16.11 14 15M16 15.5C16.83 15.5 17.5 14.83 17.5 14S16.83 12.5 16 12.5 14.5 13.17 14.5 14 15.17 15.5 16 15.5Z";
var mdiEvPlugType2 = "M7.5 11C7.5 11.28 7.28 11.5 7 11.5S6.5 11.28 6.5 11 6.72 10.5 7 10.5 7.5 10.72 7.5 11M9.5 14.5C9.22 14.5 9 14.72 9 15S9.22 15.5 9.5 15.5 10 15.28 10 15 9.78 14.5 9.5 14.5M9.5 8C9.78 8 10 7.78 10 7.5S9.78 7 9.5 7 9 7.22 9 7.5 9.22 8 9.5 8M14.5 8C14.78 8 15 7.78 15 7.5S14.78 7 14.5 7 14 7.22 14 7.5 14.22 8 14.5 8M12 10.5C11.72 10.5 11.5 10.72 11.5 11S11.72 11.5 12 11.5 12.5 11.28 12.5 11 12.28 10.5 12 10.5M20 11C20 15.42 16.42 19 12 19S4 15.42 4 11C4 8.61 5.06 6.47 6.72 5H17.28C18.94 6.47 20 8.61 20 11M13 7.5C13 8.33 13.67 9 14.5 9S16 8.33 16 7.5 15.33 6 14.5 6 13 6.67 13 7.5M8 7.5C8 8.33 8.67 9 9.5 9S11 8.33 11 7.5 10.33 6 9.5 6 8 6.67 8 7.5M7 13C8.11 13 9 12.11 9 11C9 9.9 8.11 9 7 9S5 9.9 5 11C5 12.11 5.9 13 7 13M11.5 15C11.5 13.9 10.61 13 9.5 13S7.5 13.9 7.5 15C7.5 16.11 8.4 17 9.5 17S11.5 16.11 11.5 15M12 13C13.11 13 14 12.11 14 11C14 9.9 13.11 9 12 9S10 9.9 10 11C10 12.11 10.9 13 12 13M16.5 15C16.5 13.9 15.61 13 14.5 13S12.5 13.9 12.5 15C12.5 16.11 13.4 17 14.5 17S16.5 16.11 16.5 15M19 11C19 9.9 18.11 9 17 9S15 9.9 15 11C15 12.11 15.9 13 17 13S19 12.11 19 11M17 10.5C16.72 10.5 16.5 10.72 16.5 11S16.72 11.5 17 11.5 17.5 11.28 17.5 11 17.28 10.5 17 10.5M14.5 14.5C14.22 14.5 14 14.72 14 15S14.22 15.5 14.5 15.5 15 15.28 15 15 14.78 14.5 14.5 14.5Z";
var mdiEvStation = "M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7.03 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14A2,2 0 0,0 15,12H14V5A2,2 0 0,0 12,3H6A2,2 0 0,0 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M8,18V13.5H6L10,6V11H12L8,18Z";
var mdiEvernote = "M15.09,11.63C15.09,11.63 15.28,10.35 16,10.35C16.76,10.35 17.78,12.06 17.78,12.06C17.78,12.06 15.46,11.63 15.09,11.63M19,4.69C18.64,4.09 16.83,3.41 15.89,3.41C14.96,3.41 13.5,3.41 13.5,3.41C13.5,3.41 12.7,2 10.88,2C9.05,2 9.17,2.81 9.17,3.5V6.32L8.34,7.19H4.5C4.5,7.19 3.44,7.91 3.44,9.44C3.44,11 3.92,16.35 7.13,16.85C10.93,17.43 11.58,15.67 11.58,15.46C11.58,14.56 11.6,13.21 11.6,13.21C11.6,13.21 12.71,15.33 14.39,15.33C16.07,15.33 17.04,16.3 17.04,17.29C17.04,18.28 17.04,19.13 17.04,19.13C17.04,19.13 17,20.28 16,20.28C15,20.28 13.89,20.28 13.89,20.28C13.89,20.28 13.2,19.74 13.2,19C13.2,18.25 13.53,18.05 13.93,18.05C14.32,18.05 14.65,18.09 14.65,18.09V16.53C14.65,16.53 11.47,16.5 11.47,18.94C11.47,21.37 13.13,22 14.46,22C15.8,22 16.63,22 16.63,22C16.63,22 20.56,21.5 20.56,13.75C20.56,6 19.33,5.28 19,4.69M7.5,6.31H4.26L8.32,2.22V5.5L7.5,6.31Z";
var mdiExcavator = "M18.5 18.5C19.04 18.5 19.5 18.96 19.5 19.5S19.04 20.5 18.5 20.5H6.5C5.96 20.5 5.5 20.04 5.5 19.5S5.96 18.5 6.5 18.5H18.5M18.5 17H6.5C5.13 17 4 18.13 4 19.5S5.13 22 6.5 22H18.5C19.88 22 21 20.88 21 19.5S19.88 17 18.5 17M21 11H18V7H13L10 11V16H22L21 11M11.54 11L13.5 8.5H16V11H11.54M9.76 3.41L4.76 2L2 11.83C1.66 13.11 2.41 14.44 3.7 14.8L4.86 15.12L8.15 12.29L4.27 11.21L6.15 4.46L8.94 5.24C9.5 5.53 10.71 6.34 11.47 7.37L12.5 6H12.94C11.68 4.41 9.85 3.46 9.76 3.41Z";
var mdiExclamation = "M 11,4L 13,4L 13,15L 11,15L 11,4 Z M 13,18L 13,20L 11,20L 11,18L 13,18 Z";
var mdiExclamationThick = "M10 3H14V14H10V3M10 21V17H14V21H10Z";
var mdiExitRun = "M13.34,8.17C12.41,8.17 11.65,7.4 11.65,6.47A1.69,1.69 0 0,1 13.34,4.78C14.28,4.78 15.04,5.54 15.04,6.47C15.04,7.4 14.28,8.17 13.34,8.17M10.3,19.93L4.37,18.75L4.71,17.05L8.86,17.9L10.21,11.04L8.69,11.64V14.5H7V10.54L11.4,8.67L12.07,8.59C12.67,8.59 13.17,8.93 13.5,9.44L14.36,10.79C15.04,12 16.39,12.82 18,12.82V14.5C16.14,14.5 14.44,13.67 13.34,12.4L12.84,14.94L14.61,16.63V23H12.92V17.9L11.14,16.21L10.3,19.93M21,23H19V3H6V16.11L4,15.69V1H21V23M6,23H4V19.78L6,20.2V23Z";
var mdiExitToApp = "M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z";
var mdiExpandAll = "M18,8H8V18H6V8A2,2 0 0,1 8,6H18V8M14,2H4A2,2 0 0,0 2,4V14H4V4H14V2M22,12V20A2,2 0 0,1 20,22H12A2,2 0 0,1 10,20V12A2,2 0 0,1 12,10H20A2,2 0 0,1 22,12M20,15H17V12H15V15H12V17H15V20H17V17H20V15Z";
var mdiExpandAllOutline = "M4,2A2,2 0 0,0 2,4V14H4V4H14V2H4M8,6A2,2 0 0,0 6,8V18H8V8H18V6H8M20,12V20H12V12H20M20,10H12A2,2 0 0,0 10,12V20A2,2 0 0,0 12,22H20A2,2 0 0,0 22,20V12A2,2 0 0,0 20,10M19,17H17V19H15V17H13V15H15V13H17V15H19V17Z";
var mdiExpansionCard = "M2,7V8.5H3V17H4.5V7C3.7,7 2.8,7 2,7M6,7V7L6,16H7V17H14V16H22V7H6M17.5,9A2.5,2.5 0 0,1 20,11.5A2.5,2.5 0 0,1 17.5,14A2.5,2.5 0 0,1 15,11.5A2.5,2.5 0 0,1 17.5,9Z";
var mdiExpansionCardVariant = "M2 7H4.5V17H3V8.5H2M22 7V16H14V17H7V16H6V7M10 9H8V12H10M13 9H11V12H13M20 9H15V14H20V9Z";
var mdiExponent = "M15.38,3L17.77,8.75C17.55,9.68 17.27,10.32 17,10.7C16.67,11.18 16.44,11.25 16.19,11.25V12.75C16.94,12.75 17.74,12.35 18.24,11.56C19.87,8.94 22,3 22,3H20.38L18.69,7.05L17,3H15.38M3.42,8.59L2,10L6.79,14.79L2,19.59L3.41,21L8.21,16.21L13,21L14.41,19.59L9.62,14.79L14.41,10L13,8.59L8.21,13.38L3.41,8.59H3.42Z";
var mdiExponentBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M13.76,6H15.39L16.5,8.6L17.59,6H19.24C19.24,6 17.5,10.57 16.46,12.32C16.08,12.89 15.35,13.27 14.5,13.25V11.75C14.96,11.76 15.25,11.5 15.5,11.13C15.61,11 15.68,10.8 15.74,10.64L13.76,6M6.41,9.59L9.21,12.38L12,9.59L13.41,11L10.62,13.79L13.41,16.59L12,18L9.21,15.21L6.41,18L5,16.59L7.79,13.79L5,11L6.41,9.59Z";
var mdiExport = "M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z";
var mdiExportVariant = "M12,1L8,5H11V14H13V5H16M18,23H6C4.89,23 4,22.1 4,21V9A2,2 0 0,1 6,7H9V9H6V21H18V9H15V7H18A2,2 0 0,1 20,9V21A2,2 0 0,1 18,23Z";
var mdiEye = "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z";
var mdiEyeCheck = "M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,17C12.5,17 12.97,16.93 13.42,16.79C13.15,17.5 13,18.22 13,19V19.45L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.64 22.44,13.26 22.08,13.85C21.18,13.31 20.12,13 19,13C18.22,13 17.5,13.15 16.79,13.42C16.93,12.97 17,12.5 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17Z";
var mdiEyeCheckOutline = "M23.5,17L18.5,22L15,18.5L16.5,17L18.5,19L22,15.5L23.5,17M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C22.75,12.65 22.44,13.26 22.08,13.85C21.5,13.5 20.86,13.25 20.18,13.12L20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12C4.83,15.36 8.24,17.5 12,17.5L13.21,17.43C13.07,17.93 13,18.46 13,19V19.46L12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5Z";
var mdiEyeCircle = "M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5M12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5M12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16C9.37,16 7,14.43 6,12C7.38,8.69 11.19,7.12 14.5,8.5C16.08,9.16 17.34,10.42 18,12C17,14.43 14.63,16 12,16M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5M12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13Z";
var mdiEyeCircleOutline = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,11A1,1 0 0,1 13,12A1,1 0 0,1 12,13A1,1 0 0,1 11,12A1,1 0 0,1 12,11M12,8C14.63,8 17,9.57 18,12C16.62,15.31 12.81,16.88 9.5,15.5C7.92,14.84 6.66,13.58 6,12C7,9.57 9.37,8 12,8M12,9.5A2.5,2.5 0 0,0 9.5,12A2.5,2.5 0 0,0 12,14.5A2.5,2.5 0 0,0 14.5,12A2.5,2.5 0 0,0 12,9.5";
var mdiEyeMinus = "M12 4.5A11.8 11.8 0 0 0 1 12A11.8 11.8 0 0 0 12 19.5H13.1A3.8 3.8 0 0 1 13 18.5A9.9 9.9 0 0 1 13.2 16.8L12 17A5 5 0 1 1 17 12A2.8 2.8 0 0 1 16.9 12.9A5.2 5.2 0 0 1 19 12.5A5.6 5.6 0 0 1 22.3 13.5A10.1 10.1 0 0 0 23 12A11.8 11.8 0 0 0 12 4.5M12 9A3 3 0 1 0 15 12A2.9 2.9 0 0 0 12 9M15 17.5V19.5H23V17.5Z";
var mdiEyeMinusOutline = "M12 4.5A11.8 11.8 0 0 0 1 12A11.8 11.8 0 0 0 12 19.5H13.1A3.8 3.8 0 0 1 13 18.5A4.1 4.1 0 0 1 13.1 17.4H12A9.6 9.6 0 0 1 3.2 12A9.6 9.6 0 0 1 12 6.5A9.6 9.6 0 0 1 20.8 12L20.4 12.7A4.6 4.6 0 0 1 22.3 13.5A10.1 10.1 0 0 0 23 12A11.8 11.8 0 0 0 12 4.5M12 9A3 3 0 1 0 15 12A2.9 2.9 0 0 0 12 9M15 17.5V19.5H23V17.5Z";
var mdiEyeOff = "M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z";
var mdiEyeOffOutline = "M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.58,15.76C18.94,14.82 20.06,13.54 20.82,12C19.17,8.64 15.76,6.5 12,6.5C10.91,6.5 9.84,6.68 8.84,7L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C12.69,17.5 13.37,17.43 14,17.29L11.72,15C10.29,14.85 9.15,13.71 9,12.28L5.6,8.87C4.61,9.72 3.78,10.78 3.18,12Z";
var mdiEyeOutline = "M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z";
var mdiEyePlus = "M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C12.36,19.5 12.72,19.5 13.08,19.45C13.03,19.13 13,18.82 13,18.5C13,17.94 13.08,17.38 13.24,16.84C12.83,16.94 12.42,17 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12C17,12.29 16.97,12.59 16.92,12.88C17.58,12.63 18.29,12.5 19,12.5C20.17,12.5 21.31,12.84 22.29,13.5C22.56,13 22.8,12.5 23,12C21.27,7.61 17,4.5 12,4.5M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M18,14.5V17.5H15V19.5H18V22.5H20V19.5H23V17.5H20V14.5H18Z";
var mdiEyePlusOutline = "M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C12.36,19.5 12.72,19.5 13.08,19.45C13.03,19.13 13,18.82 13,18.5C13,18.14 13.04,17.78 13.1,17.42C12.74,17.46 12.37,17.5 12,17.5C8.24,17.5 4.83,15.36 3.18,12C4.83,8.64 8.24,6.5 12,6.5C15.76,6.5 19.17,8.64 20.82,12C20.7,12.24 20.56,12.45 20.43,12.68C21.09,12.84 21.72,13.11 22.29,13.5C22.56,13 22.8,12.5 23,12C21.27,7.61 17,4.5 12,4.5M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M18,14.5V17.5H15V19.5H18V22.5H20V19.5H23V17.5H20V14.5H18Z";
var mdiEyeRemove = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88M12 9C10.34 9 9 10.34 9 12S10.34 15 12 15 15 13.66 15 12 13.66 9 12 9M12 17C9.24 17 7 14.76 7 12S9.24 7 12 7 17 9.24 17 12C17 12.5 16.9 13 16.77 13.43C17.46 13.16 18.21 13 19 13C20.12 13 21.17 13.32 22.07 13.85C22.43 13.27 22.74 12.65 23 12C21.27 7.61 17 4.5 12 4.5S2.73 7.61 1 12C2.73 16.39 7 19.5 12 19.5C12.35 19.5 12.69 19.5 13.03 19.45C13 19.3 13 19.15 13 19C13 18.21 13.16 17.46 13.43 16.77C13 16.9 12.5 17 12 17Z";
var mdiEyeRemoveOutline = "M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88M12 9C10.34 9 9 10.34 9 12S10.34 15 12 15 15 13.66 15 12 13.66 9 12 9M12 17.5C8.24 17.5 4.83 15.36 3.18 12C4.83 8.64 8.24 6.5 12 6.5S19.17 8.64 20.82 12C20.63 12.39 20.41 12.77 20.17 13.13C20.85 13.26 21.5 13.5 22.07 13.85C22.43 13.27 22.74 12.65 23 12C21.27 7.61 17 4.5 12 4.5S2.73 7.61 1 12C2.73 16.39 7 19.5 12 19.5C12.35 19.5 12.69 19.5 13.03 19.45C13 19.3 13 19.15 13 19C13 18.45 13.08 17.92 13.22 17.41C12.82 17.46 12.41 17.5 12 17.5Z";
var mdiEyeSettings = "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7.14,4.5 2.78,7.5 1,12C3.39,18.08 10.25,21.06 16.33,18.67C19.38,17.47 21.8,15.06 23,12C21.22,7.5 16.86,4.5 12,4.5M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z";
var mdiEyeSettingsOutline = "M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C16.86,4.5 21.22,7.5 23,12C20.61,18.08 13.75,21.06 7.67,18.67C4.62,17.47 2.2,15.06 1,12C2.78,7.5 7.14,4.5 12,4.5M3.18,12C5.56,16.87 11.45,18.89 16.32,16.5C18.28,15.54 19.86,13.96 20.82,12C18.44,7.13 12.55,5.11 7.68,7.5C5.72,8.46 4.14,10.04 3.18,12M9,22H7V24H9V22M13,22H11V24H13V22M17,22H15V24H17V22Z";
var mdiEyedropper = "M19.35,11.72L17.22,13.85L15.81,12.43L8.1,20.14L3.5,22L2,20.5L3.86,15.9L11.57,8.19L10.15,6.78L12.28,4.65L19.35,11.72M16.76,3C17.93,1.83 19.83,1.83 21,3C22.17,4.17 22.17,6.07 21,7.24L19.08,9.16L14.84,4.92L16.76,3M5.56,17.03L4.5,19.5L6.97,18.44L14.4,11L13,9.6L5.56,17.03Z";
var mdiEyedropperMinus = "M19.35 11.72L17.22 13.85L15.81 12.43L8.1 20.14L3.5 22L2 20.5L3.86 15.9L11.57 8.19L10.15 6.78L12.28 4.65L19.35 11.72M16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24L19.08 9.16L14.84 4.92L16.76 3M5.56 17.03L4.5 19.5L6.97 18.44L14.4 11L13 9.6L5.56 17.03M9 4V6H1V4H9Z";
var mdiEyedropperOff = "M21 7.24L19.08 9.16L14.84 4.92L16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24M10.94 8.82L12.36 10.24L13 9.6L14.4 11L13.76 11.64L15.18 13.06L15.81 12.43L17.22 13.85L19.35 11.72L12.28 4.65L10.15 6.78L11.57 8.19L10.94 8.82M19.86 20.29L18.58 21.57L12.63 15.61L8.1 20.14L3.5 22L2 20.5L3.86 15.9L8.39 11.37L1.86 4.85L3.14 3.57L19.86 20.29M11.21 14.2L9.81 12.79L5.56 17.03L4.5 19.5L6.97 18.44L11.21 14.2Z";
var mdiEyedropperPlus = "M19.35 11.72L17.22 13.85L15.81 12.43L8.1 20.14L3.5 22L2 20.5L3.86 15.9L11.57 8.19L10.15 6.78L12.28 4.65L19.35 11.72M16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24L19.08 9.16L14.84 4.92L16.76 3M5.56 17.03L4.5 19.5L6.97 18.44L14.4 11L13 9.6L5.56 17.03M6 1V4H9V6H6V9H4V6H1V4H4V1H6Z";
var mdiEyedropperRemove = "M19.35 11.72L17.22 13.85L15.81 12.43L8.1 20.14L3.5 22L2 20.5L3.86 15.9L11.57 8.19L10.15 6.78L12.28 4.65L19.35 11.72M16.76 3C17.93 1.83 19.83 1.83 21 3S22.17 6.07 21 7.24L19.08 9.16L14.84 4.92L16.76 3M5.56 17.03L4.5 19.5L6.97 18.44L14.4 11L13 9.6L5.56 17.03M8.54 2.88L6.41 5L8.54 7.12L7.12 8.54L5 6.41L2.88 8.54L1.46 7.12L3.59 5L1.46 2.88L2.88 1.47L5 3.59L7.12 1.47L8.54 2.88Z";
var mdiEyedropperVariant = "M6.92,19L5,17.08L13.06,9L15,10.94M20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L13.84,6.41L11.91,4.5L10.5,5.91L11.92,7.33L3,16.25V21H7.75L16.67,12.08L18.09,13.5L19.5,12.09L17.58,10.17L20.7,7.05C21.1,6.65 21.1,6 20.71,5.63Z";
var mdiFace = "M9,11.75A1.25,1.25 0 0,0 7.75,13A1.25,1.25 0 0,0 9,14.25A1.25,1.25 0 0,0 10.25,13A1.25,1.25 0 0,0 9,11.75M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,11.71 4,11.42 4.05,11.14C6.41,10.09 8.28,8.16 9.26,5.77C11.07,8.33 14.05,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20Z";
var mdiFaceAgent = "M18.72,14.76C19.07,13.91 19.26,13 19.26,12C19.26,11.28 19.15,10.59 18.96,9.95C18.31,10.1 17.63,10.18 16.92,10.18C13.86,10.18 11.15,8.67 9.5,6.34C8.61,8.5 6.91,10.26 4.77,11.22C4.73,11.47 4.73,11.74 4.73,12A7.27,7.27 0 0,0 12,19.27C13.05,19.27 14.06,19.04 14.97,18.63C15.54,19.72 15.8,20.26 15.78,20.26C14.14,20.81 12.87,21.08 12,21.08C9.58,21.08 7.27,20.13 5.57,18.42C4.53,17.38 3.76,16.11 3.33,14.73H2V10.18H3.09C3.93,6.04 7.6,2.92 12,2.92C14.4,2.92 16.71,3.87 18.42,5.58C19.69,6.84 20.54,8.45 20.89,10.18H22V14.67H22V14.69L22,14.73H21.94L18.38,18L13.08,17.4V15.73H17.91L18.72,14.76M9.27,11.77C9.57,11.77 9.86,11.89 10.07,12.11C10.28,12.32 10.4,12.61 10.4,12.91C10.4,13.21 10.28,13.5 10.07,13.71C9.86,13.92 9.57,14.04 9.27,14.04C8.64,14.04 8.13,13.54 8.13,12.91C8.13,12.28 8.64,11.77 9.27,11.77M14.72,11.77C15.35,11.77 15.85,12.28 15.85,12.91C15.85,13.54 15.35,14.04 14.72,14.04C14.09,14.04 13.58,13.54 13.58,12.91A1.14,1.14 0 0,1 14.72,11.77Z";
var mdiFaceMask = "M20.25 6C18.79 6 17.61 7.14 17.5 8.58L12.55 7.16C12.19 7.05 11.81 7.05 11.45 7.16L6.5 8.58C6.39 7.14 5.21 6 3.75 6C2.23 6 1 7.23 1 8.75V12.25C1 13.77 2.23 15 3.75 15H5.68C6.81 17.36 9.21 19 12 19S17.19 17.36 18.32 15H20.25C21.77 15 23 13.77 23 12.25V8.75C23 7.23 21.77 6 20.25 6M5 13.5H3.75C3.06 13.5 2.5 12.94 2.5 12.25V8.75C2.5 8.06 3.06 7.5 3.75 7.5S5 8.06 5 8.75V13.5M15 12L12.4 11.3C12.1 11.2 11.8 11.2 11.6 11.3L9 12V11L11.3 10.3C11.7 10.2 12.2 10.2 12.7 10.3L15 11V12M21.5 12.25C21.5 12.94 20.94 13.5 20.25 13.5H19V8.75C19 8.06 19.56 7.5 20.25 7.5S21.5 8.06 21.5 8.75V12.25Z";
var mdiFaceMaskOutline = "M15 12L12.4 11.3C12.1 11.2 11.8 11.2 11.6 11.3L9 12V11L11.3 10.3C11.7 10.2 12.2 10.2 12.7 10.3L15 11V12M20.25 6C18.79 6 17.61 7.14 17.5 8.58L12.55 7.16C12.37 7.11 12.19 7.08 12 7.08C11.82 7.08 11.63 7.11 11.45 7.16L6.5 8.58C6.39 7.14 5.21 6 3.75 6C2.23 6 1 7.23 1 8.75V12.25C1 13.77 2.23 15 3.75 15H5.68C6.81 17.36 9.21 19 12 19S17.19 17.36 18.32 15H20.25C21.77 15 23 13.77 23 12.25V8.75C23 7.23 21.77 6 20.25 6M5 13.5H3.75C3.06 13.5 2.5 12.94 2.5 12.25V8.75C2.5 8.06 3.06 7.5 3.75 7.5S5 8.06 5 8.75V13.5M17 12C17 14.76 14.76 17 12 17S7 14.76 7 12L7 10.5L12 9.08H12L17 10.5V12M21.5 12.25C21.5 12.94 20.94 13.5 20.25 13.5H19V8.75C19 8.06 19.56 7.5 20.25 7.5S21.5 8.06 21.5 8.75V12.25Z";
var mdiFaceOutline = "M10.25,13A1.25,1.25 0 0,1 9,14.25A1.25,1.25 0 0,1 7.75,13A1.25,1.25 0 0,1 9,11.75A1.25,1.25 0 0,1 10.25,13M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10.66,4.12C12.06,6.44 14.6,8 17.5,8C17.96,8 18.41,7.95 18.84,7.88C17.44,5.56 14.9,4 12,4C11.54,4 11.09,4.05 10.66,4.12M4.42,9.47C6.13,8.5 7.45,6.92 8.08,5.03C6.37,6 5.05,7.58 4.42,9.47M20,12C20,11.22 19.88,10.47 19.67,9.76C18.97,9.91 18.25,10 17.5,10C14.37,10 11.58,8.56 9.74,6.31C8.69,8.87 6.6,10.88 4,11.86C4,11.9 4,11.95 4,12C4,16.41 7.59,20 12,20C16.41,20 20,16.41 20,12Z";
var mdiFaceProfile = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,8.39C13.57,9.4 15.42,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20C9,20 6.39,18.34 5,15.89L6.75,14V13A1.25,1.25 0 0,1 8,11.75A1.25,1.25 0 0,1 9.25,13V14H12M16,11.75A1.25,1.25 0 0,0 14.75,13A1.25,1.25 0 0,0 16,14.25A1.25,1.25 0 0,0 17.25,13A1.25,1.25 0 0,0 16,11.75Z";
var mdiFaceProfileWoman = "M17.25 13C17.25 13.69 16.69 14.25 16 14.25S14.75 13.69 14.75 13 15.31 11.75 16 11.75 17.25 12.31 17.25 13M22 12C22 17.5 17.5 22 12 22H2V12C2 6.5 6.5 2 12 2S22 6.5 22 12M7 18C8.41 19.23 10 20 12 20C16.41 20 20 16.41 20 12C20 11.21 19.88 10.45 19.67 9.74C18.95 9.91 18.2 10 17.42 10C15.42 10 13.57 9.4 12 8.39C12 8.39 10.54 13.76 8.03 13C7.37 12.8 7 13.31 7 14";
var mdiFaceRecognition = "M9,11.75A1.25,1.25 0 0,0 7.75,13A1.25,1.25 0 0,0 9,14.25A1.25,1.25 0 0,0 10.25,13A1.25,1.25 0 0,0 9,11.75M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12C3.97,11.71 3.97,11.43 4,11.14C6.38,10.1 8.27,8.17 9.26,5.77C11.13,8.42 14.17,10 17.42,10C18.18,10 18.93,9.91 19.67,9.74C20.92,14 18.5,18.43 14.26,19.67C13.5,19.89 12.76,20 12,20M0,2A2,2 0 0,1 2,0H6V2H2V6H0V2M24,22A2,2 0 0,1 22,24H18V22H22V18H24V22M2,24A2,2 0 0,1 0,22V18H2V22H6V24H2M22,0A2,2 0 0,1 24,2V6H22V2H18V0H22Z";
var mdiFaceShimmer = "M18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41L19.5 1M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.59C19.94 11.05 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.96 4 11.91 4 11.87A10 10 0 0 0 9.74 6.31A10 10 0 0 0 17.5 10A10 10 0 0 0 18.83 9.91L17.35 6.65L12.6 4.5L16.13 2.9C14.87 2.33 13.47 2 12 2M9 11.75A1.25 1.25 0 0 0 7.75 13A1.25 1.25 0 0 0 9 14.25A1.25 1.25 0 0 0 10.25 13A1.25 1.25 0 0 0 9 11.75M15 11.75A1.25 1.25 0 0 0 13.75 13A1.25 1.25 0 0 0 15 14.25A1.25 1.25 0 0 0 16.25 13A1.25 1.25 0 0 0 15 11.75Z";
var mdiFaceShimmerOutline = "M19.5 1L18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41L19.5 1M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.57C19.95 11.04 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.95 4 11.91 4 11.86A10 10 0 0 0 9.74 6.31C11.61 8.61 14.44 10 17.5 10C17.94 10 18.39 9.97 18.83 9.91L17.96 8C17.81 8 17.65 8 17.5 8C14.68 8 12.1 6.5 10.66 4.12C11.1 4.05 11.54 4 12 4C12.5 4 12.96 4.05 13.42 4.13L16.13 2.91C14.87 2.33 13.47 2 12 2M8.09 5A8 8 0 0 1 4.41 9.5C5.04 7.57 6.37 6 8.09 5M9 11.75A1.25 1.25 0 0 0 7.75 13A1.25 1.25 0 0 0 9 14.25A1.25 1.25 0 0 0 10.25 13A1.25 1.25 0 0 0 9 11.75M15 11.75A1.25 1.25 0 0 0 13.75 13A1.25 1.25 0 0 0 15 14.25A1.25 1.25 0 0 0 16.25 13A1.25 1.25 0 0 0 15 11.75Z";
var mdiFaceWoman = "M13.75 13C13.75 12.31 14.31 11.75 15 11.75S16.25 12.31 16.25 13 15.69 14.25 15 14.25 13.75 13.69 13.75 13M22 12V22H2V12C2 6.5 6.5 2 12 2S22 6.5 22 12M4 12C4 16.41 7.59 20 12 20S20 16.41 20 12C20 11.21 19.88 10.45 19.67 9.74C18.95 9.91 18.2 10 17.42 10C14.05 10 11.07 8.33 9.26 5.77C8.28 8.16 6.41 10.09 4.05 11.14C4 11.42 4 11.71 4 12M9 14.25C9.69 14.25 10.25 13.69 10.25 13S9.69 11.75 9 11.75 7.75 12.31 7.75 13 8.31 14.25 9 14.25Z";
var mdiFaceWomanOutline = "M12 2C6.5 2 2 6.5 2 12V22H22V12C22 6.5 17.5 2 12 2M12 4C14.9 4 17.44 5.56 18.84 7.88C18.41 7.95 17.96 8 17.5 8C14.6 8 12.06 6.44 10.66 4.12C11.09 4.05 11.54 4 12 4M8.08 5.03C7.45 6.92 6.13 8.5 4.42 9.47C5.05 7.58 6.37 6 8.08 5.03M4 11.86C6.6 10.88 8.69 8.87 9.74 6.31C11.58 8.56 14.37 10 17.5 10C18.25 10 18.97 9.91 19.67 9.76C19.88 10.47 20 11.22 20 12C20 16.41 16.41 20 12 20S4 16.41 4 12V11.86M4 20V18C4.57 18.75 5.25 19.43 6 20H4M20 20H18C18.75 19.43 19.43 18.75 20 18V20M13.75 13C13.75 12.31 14.31 11.75 15 11.75S16.25 12.31 16.25 13 15.69 14.25 15 14.25 13.75 13.69 13.75 13M7.75 13C7.75 12.31 8.31 11.75 9 11.75S10.25 12.31 10.25 13 9.69 14.25 9 14.25 7.75 13.69 7.75 13Z";
var mdiFaceWomanShimmer = "M19.5 1L18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41L19.5 1M12 2C6.5 2 2 6.5 2 12V22H22V12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.59C19.94 11.05 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.96 4 11.91 4 11.87A10 10 0 0 0 9.74 6.31A10 10 0 0 0 17.5 10A10 10 0 0 0 18.83 9.91L17.35 6.65L12.6 4.5L16.13 2.9C14.87 2.33 13.47 2 12 2M9 11.75A1.25 1.25 0 0 0 7.75 13A1.25 1.25 0 0 0 9 14.25A1.25 1.25 0 0 0 10.25 13A1.25 1.25 0 0 0 9 11.75M15 11.75A1.25 1.25 0 0 0 13.75 13A1.25 1.25 0 0 0 15 14.25A1.25 1.25 0 0 0 16.25 13A1.25 1.25 0 0 0 15 11.75Z";
var mdiFaceWomanShimmerOutline = "M19.5 1L18.41 3.41L16 4.5L18.41 5.59L19.5 8L20.6 5.59L23 4.5L20.6 3.41M12 2C6.5 2 2 6.5 2 12V22H22V12C22 10.53 21.67 9.13 21.1 7.87L19.86 10.57C19.95 11.04 20 11.5 20 12C20 16.43 16.43 20 12 20C7.57 20 4 16.43 4 12C4 11.95 4 11.91 4 11.86C6.61 10.89 8.69 8.88 9.74 6.31C11.61 8.61 14.44 10 17.5 10C17.94 10 18.39 9.97 18.83 9.91L17.96 8C17.81 8 17.65 8 17.5 8C14.68 8 12.1 6.5 10.66 4.12C11.1 4.05 11.54 4 12 4C12.5 4 12.96 4.05 13.42 4.13L16.13 2.91C14.87 2.33 13.47 2 12 2M8.09 5C7.46 6.91 6.15 8.5 4.41 9.5C5.04 7.57 6.37 6 8.09 5M9 11.75C8.31 11.75 7.75 12.31 7.75 13C7.75 13.69 8.31 14.25 9 14.25C9.69 14.25 10.25 13.69 10.25 13C10.25 12.31 9.69 11.75 9 11.75M15 11.75C14.31 11.75 13.75 12.31 13.75 13C13.75 13.69 14.31 14.25 15 14.25C15.69 14.25 16.25 13.69 16.25 13C16.25 12.31 15.69 11.75 15 11.75M4 17.97C4.58 18.74 5.26 19.42 6.03 20H4M20 17.97V20H17.97C18.74 19.42 19.42 18.74 20 17.97Z";
var mdiFacebook = "M12 2.04C6.5 2.04 2 6.53 2 12.06C2 17.06 5.66 21.21 10.44 21.96V14.96H7.9V12.06H10.44V9.85C10.44 7.34 11.93 5.96 14.22 5.96C15.31 5.96 16.45 6.15 16.45 6.15V8.62H15.19C13.95 8.62 13.56 9.39 13.56 10.18V12.06H16.34L15.89 14.96H13.56V21.96A10 10 0 0 0 22 12.06C22 6.53 17.5 2.04 12 2.04Z";
var mdiFacebookGaming = "M9.5 14.5V9.5H21V21H15.5V14.5H9.5M3 3H21L21 8.5H8.5V15.5H14.5V21H3V3Z";
var mdiFacebookMessenger = "M12,2C6.36,2 2,6.13 2,11.7C2,14.61 3.19,17.14 5.14,18.87C5.3,19 5.4,19.22 5.41,19.44L5.46,21.22C5.5,21.79 6.07,22.16 6.59,21.93L8.57,21.06C8.74,21 8.93,20.97 9.1,21C10,21.27 11,21.4 12,21.4C17.64,21.4 22,17.27 22,11.7C22,6.13 17.64,2 12,2M18,9.46L15.07,14.13C14.6,14.86 13.6,15.05 12.9,14.5L10.56,12.77C10.35,12.61 10.05,12.61 9.84,12.77L6.68,15.17C6.26,15.5 5.71,15 6,14.54L8.93,9.87C9.4,9.14 10.4,8.95 11.1,9.47L13.44,11.23C13.66,11.39 13.95,11.39 14.16,11.23L17.32,8.83C17.74,8.5 18.29,9 18,9.46Z";
var mdiFacebookWorkplace = "M19.69,16.12C19.42,16.43 18.95,16.92 18.19,16.92C17.13,16.92 16.78,16.15 16.46,15.34L14.86,11.41L13.26,15.34C13,16 12.7,16.92 11.53,16.92C10.36,16.92 10.07,16 9.79,15.34L7.11,8.72H9.37L11.53,14.17L13.14,10.2C13.39,9.57 13.69,8.62 14.86,8.62C16,8.62 16.32,9.57 16.58,10.2L18.33,14.5C19.22,13.14 19.6,11.5 19.38,9.89C19.16,8.28 18.37,6.8 17.14,5.73C15.92,4.66 14.34,4.06 12.72,4.06C11.03,4.05 9.39,4.58 8,5.56C6.66,6.55 5.64,7.94 5.12,9.54C4.6,11.14 4.6,12.87 5.12,14.47C5.64,16.07 6.66,17.46 8.03,18.44C9.4,19.43 11.04,19.95 12.72,19.94C13.45,19.94 14.17,19.84 14.87,19.64V21.75C14.16,21.91 13.44,22 12.72,22C10.61,22 8.54,21.34 6.82,20.1C5.1,18.86 3.82,17.11 3.17,15.1C2.5,13.09 2.5,10.92 3.16,8.9C3.82,6.89 5.1,5.14 6.82,3.9C8.53,2.66 10.6,2 12.72,2C17.56,2 21.5,5.94 21.5,10.79C21.5,12.71 20.86,14.59 19.69,16.12V16.12Z";
var mdiFactory = "M4,18V20H8V18H4M4,14V16H14V14H4M10,18V20H14V18H10M16,14V16H20V14H16M16,18V20H20V18H16M2,22V8L7,12V8L12,12V8L17,12L18,2H21L22,12V22H2Z";
var mdiFamilyTree = "M12 1A2.5 2.5 0 0 0 9.5 3.5A2.5 2.5 0 0 0 11 5.79V7H7A2 2 0 0 0 5 9V9.71A2.5 2.5 0 0 0 3.5 12A2.5 2.5 0 0 0 5 14.29V15H4A2 2 0 0 0 2 17V18.21A2.5 2.5 0 0 0 .5 20.5A2.5 2.5 0 0 0 3 23A2.5 2.5 0 0 0 5.5 20.5A2.5 2.5 0 0 0 4 18.21V17H8V18.21A2.5 2.5 0 0 0 6.5 20.5A2.5 2.5 0 0 0 9 23A2.5 2.5 0 0 0 11.5 20.5A2.5 2.5 0 0 0 10 18.21V17A2 2 0 0 0 8 15H7V14.29A2.5 2.5 0 0 0 8.5 12A2.5 2.5 0 0 0 7 9.71V9H17V9.71A2.5 2.5 0 0 0 15.5 12A2.5 2.5 0 0 0 17 14.29V15H16A2 2 0 0 0 14 17V18.21A2.5 2.5 0 0 0 12.5 20.5A2.5 2.5 0 0 0 15 23A2.5 2.5 0 0 0 17.5 20.5A2.5 2.5 0 0 0 16 18.21V17H20V18.21A2.5 2.5 0 0 0 18.5 20.5A2.5 2.5 0 0 0 21 23A2.5 2.5 0 0 0 23.5 20.5A2.5 2.5 0 0 0 22 18.21V17A2 2 0 0 0 20 15H19V14.29A2.5 2.5 0 0 0 20.5 12A2.5 2.5 0 0 0 19 9.71V9A2 2 0 0 0 17 7H13V5.79A2.5 2.5 0 0 0 14.5 3.5A2.5 2.5 0 0 0 12 1M12 2.5A1 1 0 0 1 13 3.5A1 1 0 0 1 12 4.5A1 1 0 0 1 11 3.5A1 1 0 0 1 12 2.5M6 11A1 1 0 0 1 7 12A1 1 0 0 1 6 13A1 1 0 0 1 5 12A1 1 0 0 1 6 11M18 11A1 1 0 0 1 19 12A1 1 0 0 1 18 13A1 1 0 0 1 17 12A1 1 0 0 1 18 11M3 19.5A1 1 0 0 1 4 20.5A1 1 0 0 1 3 21.5A1 1 0 0 1 2 20.5A1 1 0 0 1 3 19.5M9 19.5A1 1 0 0 1 10 20.5A1 1 0 0 1 9 21.5A1 1 0 0 1 8 20.5A1 1 0 0 1 9 19.5M15 19.5A1 1 0 0 1 16 20.5A1 1 0 0 1 15 21.5A1 1 0 0 1 14 20.5A1 1 0 0 1 15 19.5M21 19.5A1 1 0 0 1 22 20.5A1 1 0 0 1 21 21.5A1 1 0 0 1 20 20.5A1 1 0 0 1 21 19.5Z";
var mdiFan = "M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12.5,2C17,2 17.11,5.57 14.75,6.75C13.76,7.24 13.32,8.29 13.13,9.22C13.61,9.42 14.03,9.73 14.35,10.13C18.05,8.13 22.03,8.92 22.03,12.5C22.03,17 18.46,17.1 17.28,14.73C16.78,13.74 15.72,13.3 14.79,13.11C14.59,13.59 14.28,14 13.88,14.34C15.87,18.03 15.08,22 11.5,22C7,22 6.91,18.42 9.27,17.24C10.25,16.75 10.69,15.71 10.89,14.79C10.4,14.59 9.97,14.27 9.65,13.87C5.96,15.85 2,15.07 2,11.5C2,7 5.56,6.89 6.74,9.26C7.24,10.25 8.29,10.68 9.22,10.87C9.41,10.39 9.73,9.97 10.14,9.65C8.15,5.96 8.94,2 12.5,2Z";
var mdiFanAlert = "M10 11C9.43 11 9 11.45 9 12S9.43 13 10 13C10.54 13 11 12.55 11 12S10.54 11 10 11M10.5 2C15 2 15.09 5.57 12.73 6.75C11.74 7.24 11.3 8.29 11.11 9.22C11.59 9.42 12 9.73 12.33 10.13C16.03 8.13 20 8.92 20 12.5C20 17 16.43 17.1 15.26 14.73C14.76 13.74 13.7 13.3 12.77 13.11C12.57 13.59 12.26 14 11.86 14.34C13.85 18.03 13.06 22 9.5 22C5 22 4.9 18.42 7.26 17.24C8.24 16.75 8.68 15.71 8.88 14.79C8.39 14.59 7.96 14.27 7.64 13.87C3.95 15.85 0 15.07 0 11.5C0 7 3.56 6.89 4.73 9.26C5.23 10.25 6.28 10.68 7.21 10.87C7.4 10.39 7.72 9.97 8.13 9.65C6.14 5.96 6.93 2 10.5 2M22 13V7H24V13H22M22 17V15H24V17H22Z";
var mdiFanAuto = "M12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2M12 11C12.54 11 13 11.45 13 12C13 12.55 12.54 13 12 13C11.43 13 11 12.55 11 12C11 11.45 11.43 11 12 11M18 15C16.89 15 16 15.9 16 17V23H18V21H20V23H22V17C22 15.9 21.1 15 20 15M18 17H20V19H18Z";
var mdiFanChevronDown = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M19 19.17L22.17 16L23.59 17.41L19 22L14.41 17.41L15.83 16L19 19.17";
var mdiFanChevronUp = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M19 17.83L15.83 21L14.41 19.59L19 15L23.59 19.59L22.17 21L19 17.83";
var mdiFanMinus = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M23 18V20H15V18H23Z";
var mdiFanOff = "M12.5,2C9.64,2 8.57,4.55 9.29,7.47L15,13.16C15.87,13.37 16.81,13.81 17.28,14.73C18.46,17.1 22.03,17 22.03,12.5C22.03,8.92 18.05,8.13 14.35,10.13C14.03,9.73 13.61,9.42 13.13,9.22C13.32,8.29 13.76,7.24 14.75,6.75C17.11,5.57 17,2 12.5,2M3.28,4L2,5.27L4.47,7.73C3.22,7.74 2,8.87 2,11.5C2,15.07 5.96,15.85 9.65,13.87C9.97,14.27 10.4,14.59 10.89,14.79C10.69,15.71 10.25,16.75 9.27,17.24C6.91,18.42 7,22 11.5,22C13.8,22 14.94,20.36 14.94,18.21L18.73,22L20,20.72L3.28,4Z";
var mdiFanPlus = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M20 15V18H23V20H20V23H18V20H15V18H18V15H20Z";
var mdiFanRemove = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88Z";
var mdiFanSpeed1 = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M17 15V17H18V23H20V15H17Z";
var mdiFanSpeed2 = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M16 15V17H19V18H18C16.9 18 16 18.9 16 20V23H21V21H18V20H19C20.11 20 21 19.11 21 18V17C21 15.9 20.11 15 19 15H16Z";
var mdiFanSpeed3 = "M13 19C13 17.59 13.5 16.3 14.3 15.28C14.17 14.97 14.03 14.65 13.86 14.34C14.26 14 14.57 13.59 14.77 13.11C15.26 13.21 15.78 13.39 16.25 13.67C17.07 13.25 18 13 19 13C20.05 13 21.03 13.27 21.89 13.74C21.95 13.37 22 12.96 22 12.5C22 8.92 18.03 8.13 14.33 10.13C14 9.73 13.59 9.42 13.11 9.22C13.3 8.29 13.74 7.24 14.73 6.75C17.09 5.57 17 2 12.5 2C8.93 2 8.14 5.96 10.13 9.65C9.72 9.97 9.4 10.39 9.21 10.87C8.28 10.68 7.23 10.25 6.73 9.26C5.56 6.89 2 7 2 11.5C2 15.07 5.95 15.85 9.64 13.87C9.96 14.27 10.39 14.59 10.88 14.79C10.68 15.71 10.24 16.75 9.26 17.24C6.9 18.42 7 22 11.5 22C12.31 22 13 21.78 13.5 21.41C13.19 20.67 13 19.86 13 19M12 13C11.43 13 11 12.55 11 12S11.43 11 12 11C12.54 11 13 11.45 13 12S12.54 13 12 13M21 21V20.5C21 19.67 20.33 19 19.5 19C20.33 19 21 18.33 21 17.5V17C21 15.89 20.1 15 19 15H16V17H19V18H17V20H19V21H16V23H19C20.11 23 21 22.11 21 21";
var mdiFastForward = "M13,6V18L21.5,12M4,18L12.5,12L4,6V18Z";
var mdiFastForward10 = "M10,12V22H8V14H6V12H10M18,14V20C18,21.11 17.11,22 16,22H14A2,2 0 0,1 12,20V14A2,2 0 0,1 14,12H16C17.11,12 18,12.9 18,14M14,14V20H16V14H14M11.5,3C14.15,3 16.55,4 18.4,5.6L21,3V10H14L16.62,7.38C15.23,6.22 13.46,5.5 11.5,5.5C7.96,5.5 4.95,7.81 3.9,11L1.53,10.22C2.92,6.03 6.85,3 11.5,3Z";
var mdiFastForward30 = "M11.5,3C6.85,3 2.92,6.03 1.53,10.22L3.9,11C4.95,7.81 7.96,5.5 11.5,5.5C13.46,5.5 15.23,6.22 16.62,7.38L14,10H21V3L18.4,5.6C16.55,4 14.15,3 11.5,3M19,14V20C19,21.11 18.11,22 17,22H15A2,2 0 0,1 13,20V14A2,2 0 0,1 15,12H17C18.11,12 19,12.9 19,14M15,14V20H17V14H15M11,20C11,21.11 10.1,22 9,22H5V20H9V18H7V16H9V14H5V12H9A2,2 0 0,1 11,14V15.5A1.5,1.5 0 0,1 9.5,17A1.5,1.5 0 0,1 11,18.5V20Z";
var mdiFastForward5 = "M11.5 3C14.15 3 16.55 4 18.4 5.6L21 3V10H14L16.62 7.38C15.23 6.22 13.46 5.5 11.5 5.5C7.96 5.5 4.95 7.81 3.9 11L1.53 10.22C2.92 6.03 6.85 3 11.5 3M9 12H15V14H11V16H13C14.11 16 15 16.9 15 18V20C15 21.11 14.11 22 13 22H9V20H13V18H9V12Z";
var mdiFastForward60 = "M11.5 3C6.8 3 2.9 6 1.5 10.2L3.9 11C4.9 7.8 8 5.5 11.5 5.5C13.5 5.5 15.2 6.2 16.6 7.4L14 10H21V3L18.4 5.6C16.5 4 14.1 3 11.5 3M19 14V20C19 21.1 18.1 22 17 22H15C13.9 22 13 21.1 13 20V14C13 12.9 13.9 12 15 12H17C18.1 12 19 12.9 19 14M15 14V20H17V14H15M7 12C5.9 12 5 12.9 5 14V20C5 21.1 5.9 22 7 22H9C10.1 22 11 21.1 11 20V18C11 16.9 10.1 16 9 16H7V14H11V12H7M7 18H9V20H7V18Z";
var mdiFastForwardOutline = "M15,9.9L18,12L15,14.1V9.9M6,9.9L9,12L6,14.1V9.9M13,6V18L21.5,12L13,6M4,6V18L12.5,12L4,6Z";
var mdiFax = "M11,6H16V8H11V6M8,9V3H19V9A3,3 0 0,1 22,12V18H19V21H8V18H7V9H8M10,5V9H17V5H10M10,15V19H17V15H10M19,11A1,1 0 0,0 18,12A1,1 0 0,0 19,13A1,1 0 0,0 20,12A1,1 0 0,0 19,11M4,9H5A1,1 0 0,1 6,10V17A1,1 0 0,1 5,18H4A2,2 0 0,1 2,16V11A2,2 0 0,1 4,9Z";
var mdiFeather = "M22,2C22,2 14.36,1.63 8.34,9.88C3.72,16.21 2,22 2,22L3.94,21C5.38,18.5 6.13,17.47 7.54,16C10.07,16.74 12.71,16.65 15,14C13,13.44 11.4,13.57 9.04,13.81C11.69,12 13.5,11.6 16,12L17,10C15.2,9.66 14,9.63 12.22,10.04C14.19,8.65 15.56,7.87 18,8L19.21,6.07C17.65,5.96 16.71,6.13 14.92,6.57C16.53,5.11 18,4.45 20.14,4.32C20.14,4.32 21.19,2.43 22,2Z";
var mdiFeatureSearch = "M20,20A2,2 0 0,1 18,22H4A2,2 0 0,1 2,20V6A2,2 0 0,1 4,4H9.5C9.2,4.8 9,5.6 9,6.5C9,10.1 11.9,13 15.5,13C16.3,13 17,12.9 17.6,12.6L20,15V20M19.3,8.9C19.7,8.2 20,7.4 20,6.5C20,4 18,2 15.5,2C13,2 11,4 11,6.5C11,9 13,11 15.5,11C16.4,11 17.2,10.7 17.9,10.3L21,13.4L22.4,12L19.3,8.9M15.5,9C14.1,9 13,7.9 13,6.5C13,5.1 14.1,4 15.5,4C16.9,4 18,5.1 18,6.5C18,7.9 16.9,9 15.5,9Z";
var mdiFeatureSearchOutline = "M15.5,2C13,2 11,4 11,6.5C11,9 13,11 15.5,11C16.4,11 17.2,10.7 17.9,10.3L21,13.4L22.4,12L19.3,8.9C19.7,8.2 20,7.4 20,6.5C20,4 18,2 15.5,2M4,4A2,2 0 0,0 2,6V20A2,2 0 0,0 4,22H18A2,2 0 0,0 20,20V15L18,13V20H4V6H9.03C9.09,5.3 9.26,4.65 9.5,4H4M15.5,4C16.9,4 18,5.1 18,6.5C18,7.9 16.9,9 15.5,9C14.1,9 13,7.9 13,6.5C13,5.1 14.1,4 15.5,4Z";
var mdiFedora = "M4.4,22C3.07,22 2,20.93 2,19.6V12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22H4.4M14.9,4.4C12.3,4.4 10.2,6.5 10.2,9.1V11.6H8.3C7.69,11.6 7.2,12.09 7.2,12.7C7.2,13.31 7.69,13.8 8.3,13.8H9.8C10,13.8 10.2,14 10.2,14.2V16.3C10.2,17.68 9.08,18.8 7.7,18.8C7.55,18.8 7.41,18.79 7.27,18.76C7.19,18.74 7.1,18.73 7,18.73C6.41,18.73 5.91,19.23 5.91,19.83C5.91,20.37 6.3,20.81 6.8,20.91V20.91C7.09,20.97 7.39,21 7.7,21C10.3,21 12.4,18.9 12.4,16.3V13.8H14.3C14.91,13.8 15.4,13.31 15.4,12.7A1.1,1.1 0 0,0 14.3,11.6H12.8A0.4,0.4 0 0,1 12.4,11.2V9.1A2.5,2.5 0 0,1 14.9,6.6C15.05,6.6 15.2,6.61 15.34,6.64C15.42,6.66 15.5,6.67 15.59,6.67C16.19,6.67 16.69,6.17 16.69,5.57C16.69,5.03 16.3,4.58 15.8,4.5V4.5C15.5,4.43 15.21,4.4 14.9,4.4M6.8,12.7C6.8,12.58 6.81,12.46 6.84,12.34L6.31,11.81C6.1,11.87 5.89,11.95 5.7,12.05L6.91,13.26C6.84,13.08 6.8,12.9 6.8,12.7M6.54,18.5H6.47L6.5,18.5H6.54M5.61,19.83C5.61,19.6 5.67,19.38 5.77,19.19L3,16.42C3,16.76 3.05,17.08 3.13,17.4L5.61,19.88V19.83M5.86,20.63C5.77,20.5 5.71,20.37 5.67,20.22L3.24,17.79C3.67,19.07 4.63,20.1 5.86,20.63M15.8,12.7C15.8,12.82 15.79,12.94 15.76,13.06L16.29,13.59C16.5,13.53 16.71,13.45 16.9,13.35L15.69,12.14C15.76,12.32 15.8,12.5 15.8,12.7M16.06,6.88L16.13,6.92L16.08,6.88H16.06M17,5.57C17,5.8 16.93,6 16.83,6.21L19.6,9C19.59,8.64 19.55,8.32 19.47,8L17,5.5V5.57M16.74,4.77C16.83,4.9 16.89,5.03 16.93,5.18L19.36,7.61C18.93,6.33 17.97,5.3 16.74,4.77M16.07,13.65L15.69,13.27C15.61,13.46 15.5,13.63 15.35,13.78V13.78C15.6,13.76 15.84,13.71 16.07,13.65M18.23,12.42L16.67,10.86C16.53,11 16.37,11.13 16.2,11.24L17.78,12.82C17.94,12.69 18.09,12.56 18.23,12.42M17.62,12.94L16,11.34C15.82,11.44 15.61,11.5 15.39,11.55L17.09,13.26C17.27,13.16 17.45,13.05 17.62,12.94M18.75,11.8L17.15,10.2C17.05,10.39 16.94,10.56 16.81,10.71L18.37,12.27C18.5,12.12 18.63,11.97 18.75,11.8M19.16,11.09L17.39,9.32C17.37,9.56 17.32,9.79 17.23,10L18.86,11.63C18.97,11.46 19.07,11.28 19.16,11.09M19.6,9.26L16.72,6.38C16.6,6.55 16.45,6.69 16.28,6.79L19.5,10C19.56,9.77 19.59,9.5 19.6,9.26M19.46,10.25L17.08,7.87C17.27,8.22 17.39,8.62 17.4,9.04L19.25,10.89C19.33,10.68 19.4,10.47 19.46,10.25M4.82,12.58C4.66,12.71 4.5,12.84 4.37,13L5.93,14.54C6.07,14.4 6.23,14.27 6.4,14.16L4.82,12.58M5.5,12.14C5.33,12.24 5.15,12.35 5,12.46L6.58,14.06C6.78,13.96 7,13.89 7.21,13.85L5.5,12.14M7.25,11.62C7,11.64 6.76,11.69 6.53,11.75L6.91,12.13C7,11.94 7.11,11.77 7.25,11.62V11.62M3.09,15.38C3.04,15.63 3,15.88 3,16.14L5.88,19C6,18.85 6.15,18.71 6.32,18.61L3.09,15.38M3.74,13.77C3.63,13.94 3.53,14.12 3.44,14.31L5.21,16.08C5.23,15.84 5.28,15.61 5.37,15.4L3.74,13.77M3.35,14.5C3.27,14.72 3.2,14.93 3.14,15.15L5.5,17.53C5.33,17.18 5.21,16.78 5.2,16.36L3.35,14.5M4.23,13.13C4.1,13.28 3.97,13.43 3.85,13.6L5.45,15.2C5.55,15 5.66,14.84 5.79,14.69L4.23,13.13Z";
var mdiFencing = "M4.5 17.42L5.58 18.5L3.28 20.78C3 21.07 2.5 21.07 2.22 20.78S1.93 20 2.22 19.72L4.5 17.42M18.29 5.42L18.29 4L12 10.29L5.71 4L5.71 5.42L11.29 11L7.5 14.81C6.32 13.97 4.68 14.07 3.63 15.12L7.88 19.37C8.93 18.32 9.03 16.68 8.2 15.5L18.29 5.42M21.78 19.72L19.5 17.42L18.42 18.5L20.72 20.78C21 21.07 21.5 21.07 21.78 20.78S22.07 20 21.78 19.72M16.5 14.81L13.42 11.71L12.71 12.42L15.81 15.5C14.97 16.68 15.07 18.32 16.12 19.37L20.37 15.12C19.32 14.07 17.68 13.97 16.5 14.81Z";
var mdiFerrisWheel = "M12,19C12.86,19 13.59,19.54 13.87,20.29C14.42,20.17 14.95,20 15.46,19.77L13.7,15.62C13.18,15.87 12.61,16 12,16C11.39,16 10.82,15.87 10.3,15.62L8.54,19.77C9.05,20 9.58,20.17 10.13,20.29C10.41,19.54 11.14,19 12,19M18.25,17.76C18,17.42 17.81,17 17.81,16.5C17.81,15.41 18.71,14.5 19.81,14.5L20.12,14.53C20.37,13.73 20.5,12.88 20.5,12C20.5,11.12 20.37,10.27 20.12,9.5H19.81C18.7,9.5 17.81,8.61 17.81,7.5C17.81,7 17.97,6.59 18.25,6.24C17.1,5 15.59,4.09 13.87,3.71C13.59,4.46 12.86,5 12,5C11.14,5 10.41,4.46 10.13,3.71C8.41,4.09 6.9,5 5.75,6.24C6.03,6.59 6.2,7.03 6.2,7.5C6.2,8.61 5.3,9.5 4.2,9.5H3.88C3.63,10.28 3.5,11.12 3.5,12C3.5,12.89 3.64,13.74 3.89,14.55L4.2,14.5C5.31,14.5 6.2,15.42 6.2,16.5C6.2,17 6.04,17.43 5.76,17.77C6.08,18.12 6.44,18.44 6.81,18.73L8.71,14.27C8.26,13.62 8,12.84 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12C16,12.84 15.74,13.62 15.29,14.27L17.19,18.73C17.57,18.44 17.92,18.11 18.25,17.76M12,23C11,23 10.16,22.26 10,21.29C9.37,21.16 8.75,20.95 8.15,20.69L7.17,23H5L6.41,19.68C5.88,19.3 5.39,18.86 4.96,18.37C4.72,18.47 4.47,18.5 4.2,18.5A2,2 0 0,1 2.2,16.5C2.2,15.88 2.5,15.32 2.97,14.95C2.66,14 2.5,13.03 2.5,12C2.5,11 2.66,10 2.96,9.08C2.5,8.71 2.2,8.15 2.2,7.5C2.2,6.41 3.09,5.5 4.2,5.5C4.46,5.5 4.71,5.56 4.93,5.65C6.25,4.18 8,3.13 10,2.71C10.16,1.74 11,1 12,1C13,1 13.84,1.74 14,2.71C16,3.13 17.74,4.18 19.06,5.64C19.29,5.55 19.54,5.5 19.81,5.5A2,2 0 0,1 21.81,7.5C21.81,8.14 21.5,8.71 21.04,9.07C21.34,10 21.5,11 21.5,12C21.5,13 21.34,14 21.04,14.93C21.5,15.3 21.81,15.87 21.81,16.5C21.81,17.62 20.92,18.5 19.81,18.5C19.54,18.5 19.29,18.46 19.05,18.36C18.61,18.85 18.12,19.29 17.59,19.68L19,23H16.83L15.85,20.69C15.25,20.95 14.63,21.16 14,21.29C13.84,22.26 13,23 12,23Z";
var mdiFerry = "M6,6H18V9.96L12,8L6,9.96M3.94,19H4C5.6,19 7,18.12 8,17C9,18.12 10.4,19 12,19C13.6,19 15,18.12 16,17C17,18.12 18.4,19 20,19H20.05L21.95,12.31C22.03,12.06 22,11.78 21.89,11.54C21.76,11.3 21.55,11.12 21.29,11.04L20,10.62V6C20,4.89 19.1,4 18,4H15V1H9V4H6A2,2 0 0,0 4,6V10.62L2.71,11.04C2.45,11.12 2.24,11.3 2.11,11.54C2,11.78 1.97,12.06 2.05,12.31M20,21C18.61,21 17.22,20.53 16,19.67C13.56,21.38 10.44,21.38 8,19.67C6.78,20.53 5.39,21 4,21H2V23H4C5.37,23 6.74,22.65 8,22C10.5,23.3 13.5,23.3 16,22C17.26,22.65 18.62,23 20,23H22V21H20Z";
var mdiFile = "M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z";
var mdiFileAccount = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M14,20V19C14,17.67 11.33,17 10,17C8.67,17 6,17.67 6,19V20H14M10,12A2,2 0 0,0 8,14A2,2 0 0,0 10,16A2,2 0 0,0 12,14A2,2 0 0,0 10,12Z";
var mdiFileAccountOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M13 13C13 14.1 12.1 15 11 15S9 14.1 9 13 9.9 11 11 11 13 11.9 13 13M15 18V19H7V18C7 16.67 9.67 16 11 16S15 16.67 15 18Z";
var mdiFileAlert = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M9 19H7V17H9M9 15H7V9H9M13 9V3.5L18.5 9H13Z";
var mdiFileAlertOutline = "M10 18H8V16H10V18M10 14H8V8H10V14M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20Z";
var mdiFileCabinet = "M14,8H10V6H14V8M20,4V20C20,21.11 19.11,22 18,22H6C4.89,22 4,21.11 4,20V4A2,2 0 0,1 6,2H18C19.11,2 20,2.9 20,4M18,13H6V20H18V13M18,4H6V11H18V4M14,15H10V17H14V15Z";
var mdiFileCad = "M6 2C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M13 3.5L18.5 9H13M9.88 9.25H11.12V10.19C11.81 10.18 12.38 10.75 12.38 11.44V13.5L12.26 13.63L13.15 15.17C13.47 14.67 13.63 14.09 13.62 13.5H14.88C14.88 14.54 14.5 15.55 13.83 16.35L15.5 19.25V20.5L14.42 19.88L12.87 17.19C12.17 17.65 11.34 17.89 10.5 17.89C9.66 17.89 8.84 17.65 8.13 17.19L6.58 19.88L5.5 20.5V19.25L8.74 13.63L8.62 13.5V11.44C8.62 10.75 9.19 10.18 9.88 10.19M10.5 11.44C9.81 11.44 9.46 12.28 9.95 12.77C10.44 13.26 11.28 12.92 11.28 12.22C11.28 11.79 10.93 11.44 10.5 11.44M9.66 14.54L8.76 16.11C9.81 16.82 11.19 16.82 12.24 16.11L11.34 14.54C10.87 15 10.13 15 9.66 14.54Z";
var mdiFileCadBox = "M5 3C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M11.25 5.25H12.75V6.38C13.58 6.38 14.25 7.05 14.25 7.88V10.37L14.11 10.5L15.18 12.36C15.55 11.76 15.75 11.07 15.75 10.36H17.25C17.26 11.61 16.81 12.82 16 13.77L18 17.25V18.75L16.7 18L14.84 14.78C13.12 15.91 10.89 15.91 9.16 14.78L7.3 18L6 18.75V17.25L9.89 10.5L9.75 10.37V7.88C9.75 7.05 10.42 6.38 11.25 6.38M12 7.88C11.16 7.88 10.74 8.9 11.34 9.5C11.94 10.08 12.95 9.65 12.94 8.81C12.94 8.29 12.5 7.88 12 7.88M11 11.6L9.91 13.5C11.17 14.36 12.83 14.36 14.09 13.5L13 11.6C12.43 12.11 11.57 12.11 11 11.6Z";
var mdiFileCancel = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M10.5,11C8,11 6,13 6,15.5C6,18 8,20 10.5,20C13,20 15,18 15,15.5C15,13 13,11 10.5,11M10.5,12.5A3,3 0 0,1 13.5,15.5C13.5,16.06 13.35,16.58 13.08,17L9,12.92C9.42,12.65 9.94,12.5 10.5,12.5M7.5,15.5C7.5,14.94 7.65,14.42 7.92,14L12,18.08C11.58,18.35 11.06,18.5 10.5,18.5A3,3 0 0,1 7.5,15.5Z";
var mdiFileCancelOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M11.5,10C14,10 16,12 16,14.5C16,17 14,19 11.5,19C9,19 7,17 7,14.5C7,12 9,10 11.5,10M11.5,11.5C10.94,11.5 10.42,11.65 10,11.92L14.08,16C14.35,15.58 14.5,15.06 14.5,14.5A3,3 0 0,0 11.5,11.5M8.5,14.5A3,3 0 0,0 11.5,17.5C12.06,17.5 12.58,17.35 13,17.08L8.92,13C8.65,13.42 8.5,13.94 8.5,14.5Z";
var mdiFileCertificate = "M14 2H7A2 2 0 0 0 5 4V18A2 2 0 0 0 7 20H10V23L12 22L14 23V20H17A2 2 0 0 0 19 18V7M14 15V17L12 16L10 17V15L8 14L10 13V11L12 12L14 11V13L16 14M13 8V3.5L17.5 8Z";
var mdiFileCertificateOutline = "M14 13V11L12 12L10 11V13L8 14L10 15V17L12 16L14 17V15L16 14M14 2H7A2 2 0 0 0 5 4V18A2 2 0 0 0 7 20H8V18H7V4H13V8H17V18H16V20H17A2 2 0 0 0 19 18V7M14 13V11L12 12L10 11V13L8 14L10 15V17L12 16L14 17V15L16 14M10 23L12 22L14 23V18H10M14 13V11L12 12L10 11V13L8 14L10 15V17L12 16L14 17V15L16 14Z";
var mdiFileChart = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M7,20H9V14H7V20M11,20H13V12H11V20M15,20H17V16H15V20Z";
var mdiFileChartOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M9 13V19H7V13H9M15 15V19H17V15H15M11 11V19H13V11H11Z";
var mdiFileCheck = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M11.2,18.46L15.95,13.71L14.78,12.3L11.2,15.88L9.61,14.3L8.45,15.46L11.2,18.46Z";
var mdiFileCheckOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M11.2,18.46L8.45,15.46L9.61,14.3L11.2,15.88L14.78,12.3L15.95,13.71L11.2,18.46Z";
var mdiFileClock = "M4 2C2.89 2 2 2.89 2 4V20A2 2 0 0 0 4 22H12.41A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 18 9.3V8L12 2H4M11 3.5L16.5 9H11V3.5M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12V17L18.61 19.16L19.36 17.94L16.5 16.25V12H15Z";
var mdiFileClockOutline = "M4 2A2 2 0 0 0 2 4V20A2 2 0 0 0 4 22H12.41A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 18 9.3V8L12 2H4M4 4H11V9H16A7 7 0 0 0 9 16A7 7 0 0 0 10.26 20H4V4M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12V17L18.61 19.16L19.36 17.94L16.5 16.25V12H15Z";
var mdiFileCloud = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15.68,15C15.34,13.3 13.82,12 12,12C10.55,12 9.3,12.82 8.68,14C7.17,14.18 6,15.45 6,17A3,3 0 0,0 9,20H15.5A2.5,2.5 0 0,0 18,17.5C18,16.18 16.97,15.11 15.68,15Z";
var mdiFileCloudOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17 16.92C17 18.07 16.07 19 14.92 19H9.5C8.12 19 7 17.88 7 16.5C7 15.21 8 14.15 9.23 14C9.75 13 10.79 12.33 12 12.33C13.5 12.33 14.78 13.42 15.07 14.83C16.14 14.93 17 15.82 17 16.92Z";
var mdiFileCode = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6.12,15.5L9.86,19.24L11.28,17.83L8.95,15.5L11.28,13.17L9.86,11.76L6.12,15.5M17.28,15.5L13.54,11.76L12.12,13.17L14.45,15.5L12.12,17.83L13.54,19.24L17.28,15.5Z";
var mdiFileCodeOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M9.54 15.65L11.63 17.74L10.35 19L7 15.65L10.35 12.3L11.63 13.56L9.54 15.65M17 15.65L13.65 19L12.38 17.74L14.47 15.65L12.38 13.56L13.65 12.3L17 15.65Z";
var mdiFileCog = "M6 2C4.89 2 4 2.89 4 4V20A2 2 0 0 0 6 22H12.68A7 7 0 0 1 12 19A7 7 0 0 1 19 12A7 7 0 0 1 20 12.08V8L14 2H6M13 3.5L18.5 9H13V3.5M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14H18M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z";
var mdiFileCogOutline = "M6 2C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H12V20H6V4H13V9H18V12H20V8L14 2M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z";
var mdiFileCompare = "M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z";
var mdiFileDelimited = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M15 16L13 20H10L12 16H9V11H15V16M13 9V3.5L18.5 9H13Z";
var mdiFileDelimitedOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M10 19L12 15H9V10H15V15L13 19H10";
var mdiFileDocument = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z";
var mdiFileDocumentEdit = "M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V20.09L12.09,18H6V16H14.09L16.09,14H6V12H18.09L20,10.09V8L14,2H6M13,3.5L18.5,9H13V3.5M20.15,13C20,13 19.86,13.05 19.75,13.16L18.73,14.18L20.82,16.26L21.84,15.25C22.05,15.03 22.05,14.67 21.84,14.46L20.54,13.16C20.43,13.05 20.29,13 20.15,13M18.14,14.77L12,20.92V23H14.08L20.23,16.85L18.14,14.77Z";
var mdiFileDocumentEditOutline = "M8,12H16V14H8V12M10,20H6V4H13V9H18V12.1L20,10.1V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H10V20M8,18H12.1L13,17.1V16H8V18M20.2,13C20.3,13 20.5,13.1 20.6,13.2L21.9,14.5C22.1,14.7 22.1,15.1 21.9,15.3L20.9,16.3L18.8,14.2L19.8,13.2C19.9,13.1 20,13 20.2,13M20.2,16.9L14.1,23H12V20.9L18.1,14.8L20.2,16.9Z";
var mdiFileDocumentMultiple = "M4 4V22H20V24H4C2.9 24 2 23.1 2 22V4H4M15 7H20.5L15 1.5V7M8 0H16L22 6V18C22 19.11 21.11 20 20 20H8C6.89 20 6 19.1 6 18V2C6 .89 6.89 0 8 0M17 16V14H8V16H17M20 12V10H8V12H20Z";
var mdiFileDocumentMultipleOutline = "M16 0H8C6.9 0 6 .9 6 2V18C6 19.1 6.9 20 8 20H20C21.1 20 22 19.1 22 18V6L16 0M20 18H8V2H15V7H20V18M4 4V22H20V24H4C2.9 24 2 23.1 2 22V4H4M10 10V12H18V10H10M10 14V16H15V14H10Z";
var mdiFileDocumentOutline = "M6,2A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M6,4H13V9H18V20H6V4M8,12V14H16V12H8M8,16V18H13V16H8Z";
var mdiFileDownload = "M14,2H6C4.89,2 4,2.89 4,4V20C4,21.11 4.89,22 6,22H18C19.11,22 20,21.11 20,20V8L14,2M12,19L8,15H10.5V12H13.5V15H16L12,19M13,9V3.5L18.5,9H13Z";
var mdiFileDownloadOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M12,19L8,15H10.5V12H13.5V15H16L12,19Z";
var mdiFileEdit = "M6 2C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H10V20.1L20 10.1V8L14 2H6M13 3.5L18.5 9H13V3.5M20.1 13C20 13 19.8 13.1 19.7 13.2L18.7 14.2L20.8 16.3L21.8 15.3C22 15.1 22 14.7 21.8 14.5L20.5 13.2C20.4 13.1 20.3 13 20.1 13M18.1 14.8L12 20.9V23H14.1L20.2 16.9L18.1 14.8Z";
var mdiFileEditOutline = "M10 20H6V4H13V9H18V12.1L20 10.1V8L14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H10V20M20.2 13C20.3 13 20.5 13.1 20.6 13.2L21.9 14.5C22.1 14.7 22.1 15.1 21.9 15.3L20.9 16.3L18.8 14.2L19.8 13.2C19.9 13.1 20 13 20.2 13M20.2 16.9L14.1 23H12V20.9L18.1 14.8L20.2 16.9Z";
var mdiFileExcel = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.8,20H14L12,16.6L10,20H8.2L11.1,15.5L8.2,11H10L12,14.4L14,11H15.8L12.9,15.5L15.8,20M13,9V3.5L18.5,9H13Z";
var mdiFileExcelBox = "M16.2,17H14.2L12,13.2L9.8,17H7.8L11,12L7.8,7H9.8L12,10.8L14.2,7H16.2L13,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiFileExcelBoxOutline = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M5 5H19V19H5V5M13 12L16.2 17H14.2L12 13.2L9.8 17H7.8L11 12L7.8 7H9.8L12 10.8L14.2 7H16.2L13 12Z";
var mdiFileExcelOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M12.9 14.5L15.8 19H14L12 15.6L10 19H8.2L11.1 14.5L8.2 10H10L12 13.4L14 10H15.8L12.9 14.5Z";
var mdiFileExport = "M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M8.93,12.22H16V19.29L13.88,17.17L11.05,20L8.22,17.17L11.05,14.35";
var mdiFileExportOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M16 11V18.1L13.9 16L11.1 18.8L8.3 16L11.1 13.2L8.9 11H16Z";
var mdiFileEye = "M17,18C17.56,18 18,18.44 18,19C18,19.56 17.56,20 17,20C16.44,20 16,19.56 16,19C16,18.44 16.44,18 17,18M17,15C14.27,15 11.94,16.66 11,19C11.94,21.34 14.27,23 17,23C19.73,23 22.06,21.34 23,19C22.06,16.66 19.73,15 17,15M17,21.5A2.5,2.5 0 0,1 14.5,19A2.5,2.5 0 0,1 17,16.5A2.5,2.5 0 0,1 19.5,19A2.5,2.5 0 0,1 17,21.5M9.14,19.75L8.85,19L9.14,18.26C10.43,15.06 13.5,13 17,13C18.05,13 19.06,13.21 20,13.56V8L14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10.5C9.95,21.34 9.5,20.58 9.14,19.75M13,3.5L18.5,9H13V3.5Z";
var mdiFileEyeOutline = "M17,18C17.56,18 18,18.44 18,19C18,19.56 17.56,20 17,20C16.44,20 16,19.56 16,19C16,18.44 16.44,18 17,18M17,15C14.27,15 11.94,16.66 11,19C11.94,21.34 14.27,23 17,23C19.73,23 22.06,21.34 23,19C22.06,16.66 19.73,15 17,15M17,21.5A2.5,2.5 0 0,1 14.5,19A2.5,2.5 0 0,1 17,16.5A2.5,2.5 0 0,1 19.5,19A2.5,2.5 0 0,1 17,21.5M9.27,20H6V4H13V9H18V13.07C18.7,13.15 19.36,13.32 20,13.56V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H10.5C10,21.41 9.59,20.73 9.27,20Z";
var mdiFileFind = "M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10A3,3 0 0,0 9,13M20,19.59V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18C18.45,22 18.85,21.85 19.19,21.6L14.76,17.17C13.96,17.69 13,18 12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13C17,14 16.69,14.96 16.17,15.75L20,19.59Z";
var mdiFileFindOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M6,4H13L18,9V17.58L16.16,15.74C17.44,13.8 17.23,11.17 15.5,9.46C14.55,8.5 13.28,8 12,8C10.72,8 9.45,8.5 8.47,9.46C6.5,11.41 6.5,14.57 8.47,16.5C9.44,17.5 10.72,17.97 12,17.97C12.96,17.97 13.92,17.69 14.75,17.14L17.6,20H6V4M14.11,15.1C13.55,15.66 12.8,16 12,16C11.2,16 10.45,15.67 9.89,15.1C9.33,14.54 9,13.79 9,13C9,12.19 9.32,11.44 9.89,10.88C10.45,10.31 11.2,10 12,10C12.8,10 13.55,10.31 14.11,10.88C14.67,11.44 15,12.19 15,13C15,13.79 14.68,14.54 14.11,15.1Z";
var mdiFileHidden = "M13,9H14V11H11V7H13V9M18.5,9L16.38,6.88L17.63,5.63L20,8V10H18V11H15V9H18.5M13,3.5V2H12V4H13V6H11V4H9V2H8V4H6V5H4V4C4,2.89 4.89,2 6,2H14L16.36,4.36L15.11,5.61L13,3.5M20,20A2,2 0 0,1 18,22H16V20H18V19H20V20M18,15H20V18H18V15M12,22V20H15V22H12M8,22V20H11V22H8M6,22C4.89,22 4,21.1 4,20V18H6V20H7V22H6M4,14H6V17H4V14M4,10H6V13H4V10M18,11H20V14H18V11M4,6H6V9H4V6Z";
var mdiFileImage = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6,20H15L18,20V12L14,16L12,14L6,20M8,9A2,2 0 0,0 6,11A2,2 0 0,0 8,13A2,2 0 0,0 10,11A2,2 0 0,0 8,9Z";
var mdiFileImageOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M17,13V19H7L12,14L14,16M10,10.5A1.5,1.5 0 0,1 8.5,12A1.5,1.5 0 0,1 7,10.5A1.5,1.5 0 0,1 8.5,9A1.5,1.5 0 0,1 10,10.5Z";
var mdiFileImport = "M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M10.05,11.22L12.88,14.05L15,11.93V19H7.93L10.05,16.88L7.22,14.05";
var mdiFileImportOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15 11.93V19H7.93L10.05 16.88L7.22 14.05L10.05 11.22L12.88 14.05L15 11.93Z";
var mdiFileKey = "M11 16A1 1 0 1 1 10 15A1 1 0 0 1 11 16M20 8V20A2 2 0 0 1 18 22H6A2 2 0 0 1 4 20V4A2 2 0 0 1 6 2H14M17 15H12.83A3 3 0 1 0 12.83 17H14V19H16V17H17M18.5 9L13 3.5V9Z";
var mdiFileKeyOutline = "M14 2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V8L14 2M18 20H6V4H13V9H18M12.83 15A3 3 0 1 0 12.83 17H14V19H16V17H17V15M10 17A1 1 0 1 1 11 16A1 1 0 0 1 10 17Z";
var mdiFileLink = "M14 2H6C4.89 2 4 2.89 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M11 20H10C8.39 20 6 18.94 6 16C6 13.07 8.39 12 10 12H11V14H10C9.54 14 8 14.17 8 16C8 17.9 9.67 18 10 18H11V20M15 15V17H9V15H15M14 20H13V18H14C14.46 18 16 17.83 16 16C16 14.1 14.33 14 14 14H13V12H14C15.61 12 18 13.07 18 16C18 18.94 15.61 20 14 20M13 9V3.5L18.5 9H13Z";
var mdiFileLinkOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M11 19H10.75C9.45 19 7 18.22 7 15.25S9.45 11.5 10.75 11.5H11V13H10.75C10.38 13 8.5 13.13 8.5 15.25C8.5 17.44 10.5 17.5 10.75 17.5H11V19M14 16H10V14.5H14V16M13 11.5H13.25C14.55 11.5 17 12.28 17 15.25S14.55 19 13.25 19H13V17.5H13.25C13.62 17.5 15.5 17.37 15.5 15.25C15.5 13.06 13.5 13 13.25 13H13V11.5Z";
var mdiFileLock = "M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14V15H16V19H8V15H9V14C9,12.36 10.34,11 12,11M12,13A1,1 0 0,0 11,14V15H13V14C13,13.47 12.55,13 12,13Z";
var mdiFileLockOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15 15V14C15 12.34 13.66 11 12 11S9 12.36 9 14V15H8V19H16V15H15M13 15H11V14C11 13.45 11.45 13 12 13S13 13.47 13 14V15Z";
var mdiFileMove = "M14,17H18V14L23,18.5L18,23V20H14V17M13,9H18.5L13,3.5V9M6,2H14L20,8V12.34C19.37,12.12 18.7,12 18,12A6,6 0 0,0 12,18C12,19.54 12.58,20.94 13.53,22H6C4.89,22 4,21.1 4,20V4A2,2 0 0,1 6,2Z";
var mdiFileMoveOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 20.41 4.12 20.8 4.34 21.12C4.41 21.23 4.5 21.33 4.59 21.41C4.95 21.78 5.45 22 6 22H13.53C13 21.42 12.61 20.75 12.35 20H6V4H13V9H18V12C18.7 12 19.37 12.12 20 12.34V8L14 2M18 23L23 18.5L20 15.8L18 14V17H14V20H18V23Z";
var mdiFileMultiple = "M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z";
var mdiFileMultipleOutline = "M16 0H8C6.9 0 6 .9 6 2V18C6 19.1 6.9 20 8 20H20C21.1 20 22 19.1 22 18V6L16 0M20 18H8V2H15V7H20V18M4 4V22H20V24H4C2.9 24 2 23.1 2 22V4H4Z";
var mdiFileMusic = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,13H11V18A2,2 0 0,1 9,20A2,2 0 0,1 7,18A2,2 0 0,1 9,16C9.4,16 9.7,16.1 10,16.3V11H13V13M13,9V3.5L18.5,9H13Z";
var mdiFileMusicOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M13,10V12H11V17A2,2 0 0,1 9,19A2,2 0 0,1 7,17A2,2 0 0,1 9,15C9.4,15 9.7,15.1 10,15.3V10H13Z";
var mdiFileOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z";
var mdiFilePdf = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M10.1,11.4C10.08,11.44 9.81,13.16 8,16.09C8,16.09 4.5,17.91 5.33,19.27C6,20.35 7.65,19.23 9.07,16.59C9.07,16.59 10.89,15.95 13.31,15.77C13.31,15.77 17.17,17.5 17.7,15.66C18.22,13.8 14.64,14.22 14,14.41C14,14.41 12,13.06 11.5,11.2C11.5,11.2 12.64,7.25 10.89,7.3C9.14,7.35 9.8,10.43 10.1,11.4M10.91,12.44C10.94,12.45 11.38,13.65 12.8,14.9C12.8,14.9 10.47,15.36 9.41,15.8C9.41,15.8 10.41,14.07 10.91,12.44M14.84,15.16C15.42,15 17.17,15.31 17.1,15.64C17.04,15.97 14.84,15.16 14.84,15.16M7.77,17C7.24,18.24 6.33,19 6.1,19C5.87,19 6.8,17.4 7.77,17M10.91,10.07C10.91,10 10.55,7.87 10.91,7.92C11.45,8 10.91,10 10.91,10.07Z";
var mdiFilePdfBox = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M10.59,10.08C10.57,10.13 10.3,11.84 8.5,14.77C8.5,14.77 5,16.58 5.83,17.94C6.5,19 8.15,17.9 9.56,15.27C9.56,15.27 11.38,14.63 13.79,14.45C13.79,14.45 17.65,16.19 18.17,14.34C18.69,12.5 15.12,12.9 14.5,13.09C14.5,13.09 12.46,11.75 12,9.89C12,9.89 13.13,5.95 11.38,6C9.63,6.05 10.29,9.12 10.59,10.08M11.4,11.13C11.43,11.13 11.87,12.33 13.29,13.58C13.29,13.58 10.96,14.04 9.9,14.5C9.9,14.5 10.9,12.75 11.4,11.13M15.32,13.84C15.9,13.69 17.64,14 17.58,14.32C17.5,14.65 15.32,13.84 15.32,13.84M8.26,15.7C7.73,16.91 6.83,17.68 6.6,17.67C6.37,17.66 7.3,16.07 8.26,15.7M11.4,8.76C11.39,8.71 11.03,6.57 11.4,6.61C11.94,6.67 11.4,8.71 11.4,8.76Z";
var mdiFilePdfBoxOutline = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M19 5V19H5V5H19M17.9 13.5C17.6 13 16.9 12.8 15.7 12.8C15.3 12.8 14.9 12.8 14.5 12.9C14.2 12.7 13.9 12.5 13.7 12.3C13.1 11.8 12.5 10.9 12.2 9.8V9.7C12.5 8.4 12.8 6.9 12.2 6.2C11.9 6.1 11.7 6 11.5 6H11.3C10.9 6 10.6 6.4 10.5 6.7C10.1 8 10.4 8.7 10.7 9.9C10.5 10.8 10.1 11.7 9.7 12.7C9.3 13.4 9 14 8.7 14.5C8.3 14.7 8 14.8 7.8 15C6.7 15.7 6.1 16.5 6 17V17.5L6.5 17.8C6.7 18 6.8 18 7 18C7.8 18 8.7 17.1 9.9 15H10C11 14.7 12.2 14.5 13.9 14.3C14.9 14.8 16.1 15 16.8 15C17.2 15 17.5 14.9 17.7 14.7C17.9 14.5 18 14.3 18 14.1C18 13.8 18 13.6 17.9 13.5M6.8 17.3C6.8 16.9 7.3 16.3 8 15.7C8.1 15.6 8.3 15.5 8.5 15.4C7.8 16.5 7.2 17.2 6.8 17.3M11.3 6.7C11.3 6.7 11.3 6.6 11.4 6.6H11.5C11.7 6.8 11.7 7.1 11.6 7.7V7.9C11.5 8.1 11.5 8.4 11.4 8.7C11.1 7.8 11.1 7.1 11.3 6.7M10.1 14.3H10C10.1 14 10.3 13.7 10.5 13.3C10.9 12.5 11.3 11.7 11.5 11C11.9 11.9 12.4 12.6 13 13.1C13.1 13.2 13.3 13.3 13.4 13.4C12.5 13.5 11.3 13.8 10.1 14.3M17.3 14.2H17.1C16.7 14.2 16 14 15.3 13.7C15.4 13.6 15.5 13.6 15.5 13.6C16.9 13.6 17.2 13.8 17.3 13.9L17.4 14C17.4 14.2 17.4 14.2 17.3 14.2Z";
var mdiFilePdfOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M10.92,12.31C10.68,11.54 10.15,9.08 11.55,9.04C12.95,9 12.03,12.16 12.03,12.16C12.42,13.65 14.05,14.72 14.05,14.72C14.55,14.57 17.4,14.24 17,15.72C16.57,17.2 13.5,15.81 13.5,15.81C11.55,15.95 10.09,16.47 10.09,16.47C8.96,18.58 7.64,19.5 7.1,18.61C6.43,17.5 9.23,16.07 9.23,16.07C10.68,13.72 10.9,12.35 10.92,12.31M11.57,13.15C11.17,14.45 10.37,15.84 10.37,15.84C11.22,15.5 13.08,15.11 13.08,15.11C11.94,14.11 11.59,13.16 11.57,13.15M14.71,15.32C14.71,15.32 16.46,15.97 16.5,15.71C16.57,15.44 15.17,15.2 14.71,15.32M9.05,16.81C8.28,17.11 7.54,18.39 7.72,18.39C7.9,18.4 8.63,17.79 9.05,16.81M11.57,11.26C11.57,11.21 12,9.58 11.57,9.53C11.27,9.5 11.56,11.22 11.57,11.26Z";
var mdiFilePercent = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M7.37,20L15,12.35L13.65,11L6,18.65L7.37,20M13,9H18.5L13,3.5V9M7.5,11A1.5,1.5 0 0,0 6,12.5A1.5,1.5 0 0,0 7.5,14A1.5,1.5 0 0,0 9,12.5A1.5,1.5 0 0,0 7.5,11M13.5,17A1.5,1.5 0 0,0 12,18.5A1.5,1.5 0 0,0 13.5,20A1.5,1.5 0 0,0 15,18.5A1.5,1.5 0 0,0 13.5,17Z";
var mdiFilePercentOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M10 11.5C10 12.33 9.33 13 8.5 13S7 12.33 7 11.5 7.67 10 8.5 10 10 10.67 10 11.5M16 17.5C16 18.33 15.33 19 14.5 19S13 18.33 13 17.5 13.67 16 14.5 16 16 16.67 16 17.5M16 11.35L8.37 19L7 17.65L14.65 10L16 11.35Z";
var mdiFilePhone = "M14 2H6C4.89 2 4 2.89 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M17 19.44C17 19.75 16.75 20 16.44 20C11.23 20 7 15.77 7 10.56C7 10.25 7.25 10 7.56 10H9.5C9.81 10 10.06 10.25 10.06 10.56C10.06 11.25 10.17 11.92 10.37 12.54C10.43 12.73 10.39 12.95 10.23 13.11L9 14.33C9.81 15.9 11.1 17.19 12.67 18L13.9 16.77C14.05 16.61 14.27 16.57 14.46 16.63C15.08 16.83 15.75 16.95 16.45 16.95C16.75 16.95 17 17.19 17 17.5V19.44M13 9V3.5L18.5 9H13Z";
var mdiFilePhoneOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M9 13.33C9.81 14.9 11.1 16.19 12.67 17L13.89 15.77C14.05 15.61 14.27 15.57 14.46 15.63C15.08 15.83 15.75 15.95 16.44 15.95C16.75 15.95 17 16.19 17 16.5V18.45C17 18.75 16.75 19 16.44 19C11.23 19 7 14.77 7 9.56C7 9.25 7.25 9 7.56 9H9.5C9.81 9 10.06 9.25 10.06 9.56C10.06 10.25 10.17 10.92 10.37 11.54C10.43 11.73 10.39 11.95 10.23 12.11L9 13.33Z";
var mdiFilePlus = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M11,15V12H9V15H6V17H9V20H11V17H14V15H11Z";
var mdiFilePlusOutline = "M12,14V11H10V14H7V16H10V19H12V16H15V14M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18";
var mdiFilePowerpoint = "M12.6,12.3H10.6V15.5H12.7C13.3,15.5 13.6,15.3 13.9,15C14.2,14.7 14.3,14.4 14.3,13.9C14.3,13.4 14.2,13.1 13.9,12.8C13.6,12.5 13.2,12.3 12.6,12.3M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.2,16C14.6,16.5 14.1,16.7 12.8,16.7H10.6V20H9V11H12.8C14.1,11 14.7,11.3 15.2,11.8C15.8,12.4 16,13 16,13.9C16,14.8 15.8,15.5 15.2,16M13,9V3.5L18.5,9H13Z";
var mdiFilePowerpointBox = "M9.8,13.4H12.3C13.8,13.4 14.46,13.12 15.1,12.58C15.74,12.03 16,11.25 16,10.23C16,9.26 15.75,8.5 15.1,7.88C14.45,7.29 13.83,7 12.3,7H8V17H9.8V13.4M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M9.8,12V8.4H12.1C12.76,8.4 13.27,8.65 13.6,9C13.93,9.35 14.1,9.72 14.1,10.24C14.1,10.8 13.92,11.19 13.6,11.5C13.28,11.81 12.9,12 12.22,12H9.8Z";
var mdiFilePowerpointBoxOutline = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M5 5H19V19H5V5M15.1 7.88C14.45 7.29 13.83 7 12.3 7H8V17H9.8V13.4H12.3C13.8 13.4 14.46 13.12 15.1 12.58C15.74 12.03 16 11.25 16 10.23C16 9.26 15.75 8.5 15.1 7.88M13.6 11.5C13.28 11.81 12.9 12 12.22 12H9.8V8.4H12.1C12.76 8.4 13.27 8.65 13.6 9C13.93 9.35 14.1 9.72 14.1 10.24C14.1 10.8 13.92 11.19 13.6 11.5Z";
var mdiFilePowerpointOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15.2 10.8C14.7 10.3 14.1 10 12.8 10H9V19H10.6V15.7H12.8C14.1 15.7 14.6 15.5 15.2 15C15.8 14.5 16 13.8 16 12.9C16 12 15.8 11.4 15.2 10.8M13.9 14C13.6 14.3 13.3 14.5 12.7 14.5H10.6V11.3H12.6C13.2 11.3 13.6 11.5 13.9 11.8C14.2 12.1 14.3 12.4 14.3 12.9S14.2 13.7 13.9 14Z";
var mdiFilePresentationBox = "M19,16H5V8H19M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiFileQuestion = "M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14C15,15.88 12.75,16.06 12.75,17.75H11.25C11.25,15.31 13.5,15.5 13.5,14A1.5,1.5 0 0,0 12,12.5A1.5,1.5 0 0,0 10.5,14H9A3,3 0 0,1 12,11M11.25,18.5H12.75V20H11.25V18.5Z";
var mdiFileQuestionOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M15 13C15 14.89 12.75 15.07 12.75 16.76H11.25C11.25 14.32 13.5 14.5 13.5 13C13.5 12.18 12.83 11.5 12 11.5S10.5 12.18 10.5 13H9C9 11.35 10.34 10 12 10S15 11.35 15 13M12.75 17.5V19H11.25V17.5H12.75Z";
var mdiFileRefresh = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M13 9H18.5L13 3.5V9M6 2H14L20 8V12.17C19.5 12.06 19 12 18.5 12C14.91 12 12 14.91 12 18.5C12 19.79 12.37 21 13 22H6C4.88 22 4 21.1 4 20L4 4C4 2.89 4.89 2 6 2Z";
var mdiFileRefreshOutline = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M14 2L20 8V12.17C19.5 12.06 19 12 18.5 12L18 12V9H13V4H6V20H12.17C12.34 20.72 12.63 21.39 13 22H6C4.9 22 4 21.1 4 20V4C4 2.9 4.9 2 6 2H14Z";
var mdiFileRemove = "M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M13,9H18.5L13,3.5V9M10,14.59L7.88,12.46L6.46,13.88L8.59,16L6.46,18.12L7.88,19.54L10,17.41L12.12,19.54L13.54,18.12L11.41,16L13.54,13.88L12.12,12.46L10,14.59Z";
var mdiFileRemoveOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M11.95 15.46L14.08 17.58L12.66 19L10.54 16.87L8.42 19L7 17.58L9.13 15.46L7 13.34L8.42 11.92L10.54 14.05L12.66 11.92L14.08 13.34L11.95 15.46Z";
var mdiFileReplace = "M14,12H19.5L14,6.5V12M8,5H15L21,11V21A2,2 0 0,1 19,23H8C6.89,23 6,22.1 6,21V18H11V20L15,17L11,14V16H6V7A2,2 0 0,1 8,5M13.5,3H4V16H6V18H4A2,2 0 0,1 2,16V3A2,2 0 0,1 4,1H11.5L13.5,3Z";
var mdiFileReplaceOutline = "M14,3L12,1H4A2,2 0 0,0 2,3V15A2,2 0 0,0 4,17H11V19L15,16L11,13V15H4V3H14M21,10V21A2,2 0 0,1 19,23H8A2,2 0 0,1 6,21V19H8V21H19V12H14V7H8V13H6V7A2,2 0 0,1 8,5H16L21,10Z";
var mdiFileRestore = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12,18C9.95,18 8.19,16.76 7.42,15H9.13C9.76,15.9 10.81,16.5 12,16.5A3.5,3.5 0 0,0 15.5,13A3.5,3.5 0 0,0 12,9.5C10.65,9.5 9.5,10.28 8.9,11.4L10.5,13H6.5V9L7.8,10.3C8.69,8.92 10.23,8 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18Z";
var mdiFileRestoreOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13L18 9V20M17 13.24C17 15.86 14.87 18 12.24 18C10.29 18 8.61 16.82 7.88 15.14H9.5C10.11 16 11.11 16.57 12.24 16.57C14.08 16.57 15.57 15.07 15.57 13.24S14.08 9.9 12.24 9.9C10.95 9.9 9.86 10.65 9.29 11.71L10.81 13.24H7V9.43L8.24 10.67C9.09 9.35 10.55 8.5 12.24 8.5C14.87 8.47 17 10.61 17 13.24Z";
var mdiFileSearch = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H13C12.59,21.75 12.2,21.44 11.86,21.1C9.22,18.67 9.05,14.56 11.5,11.92C13.69,9.5 17.33,9.13 20,11V8L14,2M13,9V3.5L18.5,9H13M20.31,18.9C21.64,16.79 21,14 18.91,12.68C16.8,11.35 14,12 12.69,14.08C11.35,16.19 12,18.97 14.09,20.3C15.55,21.23 17.41,21.23 18.88,20.32L22,23.39L23.39,22L20.31,18.9M16.5,19A2.5,2.5 0 0,1 14,16.5A2.5,2.5 0 0,1 16.5,14A2.5,2.5 0 0,1 19,16.5A2.5,2.5 0 0,1 16.5,19Z";
var mdiFileSearchOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H13C12.59,21.75 12.2,21.44 11.86,21.1C11.53,20.77 11.25,20.4 11,20H6V4H13V9H18V10.18C18.71,10.34 19.39,10.61 20,11V8L14,2M20.31,18.9C21.64,16.79 21,14 18.91,12.68C16.8,11.35 14,12 12.69,14.08C11.35,16.19 12,18.97 14.09,20.3C15.55,21.23 17.41,21.23 18.88,20.32L22,23.39L23.39,22L20.31,18.9M16.5,19A2.5,2.5 0 0,1 14,16.5A2.5,2.5 0 0,1 16.5,14A2.5,2.5 0 0,1 19,16.5A2.5,2.5 0 0,1 16.5,19Z";
var mdiFileSend = "M14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12.54,19.37V17.37H8.54V15.38H12.54V13.38L15.54,16.38L12.54,19.37M13,9V3.5L18.5,9H13Z";
var mdiFileSendOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M12.54 18.5V16.5H8.54V14.5H12.54V12.5L15.54 15.5L12.54 18.5Z";
var mdiFileSettings = "M6 0C4.89 0 4 .89 4 2V18A2 2 0 0 0 6 20H18A2 2 0 0 0 20 18V6L14 0H6M13 1.5L18.5 7H13V1.5M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15Z";
var mdiFileSettingsOutline = "M6 0A2 2 0 0 0 4 2V18A2 2 0 0 0 6 20H18A2 2 0 0 0 20 18V6L14 0H6M6 2H13V7H18V18H6V2M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15Z";
var mdiFileStar = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M14.5 18.9L12 17.5L9.5 19L10.2 16.2L8 14.3L10.9 14.1L12 11.4L13.1 14L16 14.2L13.8 16.1L14.5 18.9M13 9V3.5L18.5 9H13Z";
var mdiFileStarOutline = "M14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V8L14 2M18 20H6V4H13V9H18V20M9.5 18L10.2 15.2L8 13.3L10.9 13.1L12 10.4L13.1 13L16 13.2L13.8 15.1L14.5 17.9L12 16.5L9.5 18Z";
var mdiFileSwap = "M14 2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V8M14 18V16H10V18L7 15L10 12V14H14V12L17 15M13 9V3.5L18.5 9Z";
var mdiFileSwapOutline = "M17 15L14 12V14H10V12L7 15L10 18V16H14V18M14 2H6A2 2 0 0 0 4 4V20A2 2 0 0 0 6 22H18A2 2 0 0 0 20 20V8L14 2M18 20H6V4H13V9H18Z";
var mdiFileSync = "M11 17.5C11 13.9 13.9 11 17.5 11C18.4 11 19.2 11.2 20 11.5V8L14 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H12.8C11.7 20.8 11 19.2 11 17.5M13 3.5L18.5 9H13V3.5M17 12V13.5C19.2 13.5 21 15.3 21 17.5C21 18.3 20.8 19.1 20.3 19.7L19.2 18.6C19.4 18.3 19.5 17.9 19.5 17.5C19.5 16.1 18.4 15 17 15V16.5L14.8 14.3L17 12M17 23V21.5C14.8 21.5 13 19.7 13 17.5C13 16.7 13.2 15.9 13.7 15.3L14.8 16.4C14.6 16.7 14.5 17.1 14.5 17.5C14.5 18.9 15.6 20 17 20V18.5L19.2 20.7L17 23Z";
var mdiFileSyncOutline = "M12.8 22H6C4.9 22 4 21.1 4 20V4C4 2.9 4.9 2 6 2H14L20 8V11.5C19.4 11.2 18.7 11.1 18 11V9H13V4H6V20H11.5C11.8 20.7 12.3 21.4 12.8 22M17 12L14.8 14.2L17 16.4V15C18.4 15 19.5 16.1 19.5 17.5C19.5 17.9 19.4 18.3 19.2 18.6L20.3 19.7C20.7 19.1 21 18.3 21 17.5C21 15.3 19.2 13.5 17 13.5V12M19.2 20.8L17 18.5V20C15.6 20 14.5 18.9 14.5 17.5C14.5 17.1 14.6 16.7 14.8 16.4L13.7 15.3C13.3 15.9 13 16.7 13 17.5C13 19.7 14.8 21.5 17 21.5V23L19.2 20.8Z";
var mdiFileTable = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M10,19H7V17H10V19M10,16H7V14H10V16M10,13H7V11H10V13M14,19H11V17H14V19M14,16H11V14H14V16M14,13H11V11H14V13M13,9V3.5L18.5,9H13Z";
var mdiFileTableBox = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M9 18H6V16H9V18M9 15H6V13H9V15M9 12H6V10H9V12M13 18H10V16H13V18M13 15H10V13H13V15M13 12H10V10H13V12Z";
var mdiFileTableBoxMultiple = "M3 5V21H19V23H3C1.9 23 1 22.1 1 21V5H3M21 1H7C5.89 1 5 1.89 5 3V17C5 18.11 5.9 19 7 19H21C22.11 19 23 18.11 23 17V3C23 1.89 22.1 1 21 1M11 16H8V14H11V16M11 13H8V11H11V13M11 10H8V8H11V10M15 16H12V14H15V16M15 13H12V11H15V13M15 10H12V8H15V10Z";
var mdiFileTableBoxMultipleOutline = "M3 5V21H19V23H3C1.9 23 1 22.1 1 21V5H3M21 1H7C5.89 1 5 1.89 5 3V17C5 18.1 5.9 19 7 19H21C22.11 19 23 18.11 23 17V3C23 1.9 22.1 1 21 1M21 17H7V3H21V17M11 14H8V16H11V14M15 14H12V16H15V14M11 11H8V13H11V11M15 11H12V13H15V11M11 8H8V10H11V8M15 8H12V10H15V8Z";
var mdiFileTableBoxOutline = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3M19 19H5V5H19V19M9 18H6V16H9V18M13 18H10V16H13V18M9 15H6V13H9V15M13 15H10V13H13V15M9 12H6V10H9V12M13 12H10V10H13V12Z";
var mdiFileTableOutline = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20M10,13H7V11H10V13M14,13H11V11H14V13M10,16H7V14H10V16M14,16H11V14H14V16M10,19H7V17H10V19M14,19H11V17H14V19Z";
var mdiFileTree = "M3,3H9V7H3V3M15,10H21V14H15V10M15,17H21V21H15V17M13,13H7V18H13V20H7L5,20V9H7V11H13V13Z";
var mdiFileTreeOutline = "M12 13H7V18H12V20H5V10H7V11H12V13M8 4V6H4V4H8M10 2H2V8H10V2M20 11V13H16V11H20M22 9H14V15H22V9M20 18V20H16V18H20M22 16H14V22H22V16Z";
var mdiFileUndo = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M12.16,14.31C10.6,14.31 9.19,14.89 8.11,15.83L6,13.72V19H11.28L9.15,16.88C9.97,16.2 11,15.78 12.16,15.78C14.23,15.78 16,17.13 16.61,19L18,18.54C17.19,16.09 14.88,14.31 12.16,14.31Z";
var mdiFileUndoOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17 17.61L15.84 18C15.33 16.44 13.86 15.31 12.13 15.31C11.17 15.31 10.31 15.66 9.63 16.23L11.4 18H7V13.6L8.76 15.36C9.66 14.57 10.83 14.09 12.13 14.09C14.4 14.09 16.33 15.57 17 17.61Z";
var mdiFileUpload = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13.5,16V19H10.5V16H8L12,12L16,16H13.5M13,9V3.5L18.5,9H13Z";
var mdiFileUploadOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M12,12L16,16H13.5V19H10.5V16H8L12,12Z";
var mdiFileVideo = "M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M17,19V13L14,15.2V13H7V19H14V16.8L17,19Z";
var mdiFileVideoOutline = "M14,2L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2H14M18,20V9H13V4H6V20H18M16,18L13.5,16.3V18H8V13H13.5V14.7L16,13V18Z";
var mdiFileWord = "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M15.2,20H13.8L12,13.2L10.2,20H8.8L6.6,11H8.1L9.5,17.8L11.3,11H12.6L14.4,17.8L15.8,11H17.3L15.2,20M13,9V3.5L18.5,9H13Z";
var mdiFileWordBox = "M15.5,17H14L12,9.5L10,17H8.5L6.1,7H7.8L9.34,14.5L11.3,7H12.7L14.67,14.5L16.2,7H17.9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiFileWordBoxOutline = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M5 5H19V19H5V5M17.9 7L15.5 17H14L12 9.5L10 17H8.5L6.1 7H7.8L9.34 14.5L11.3 7H12.7L14.67 14.5L16.2 7H17.9Z";
var mdiFileWordOutline = "M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17.35 10L15.25 19H13.85L12.05 12.21L10.25 19H8.85L6.65 10H8.15L9.55 16.81L11.35 10H12.65L14.45 16.81L15.85 10H17.35Z";
var mdiFilm = "M3.5,3H5V1.8C5,1.36 5.36,1 5.8,1H10.2C10.64,1 11,1.36 11,1.8V3H12.5A1.5,1.5 0 0,1 14,4.5V5H22V20H14V20.5A1.5,1.5 0 0,1 12.5,22H3.5A1.5,1.5 0 0,1 2,20.5V4.5A1.5,1.5 0 0,1 3.5,3M18,7V9H20V7H18M14,7V9H16V7H14M10,7V9H12V7H10M14,16V18H16V16H14M18,16V18H20V16H18M10,16V18H12V16H10Z";
var mdiFilmstrip = "M18,9H16V7H18M18,13H16V11H18M18,17H16V15H18M8,9H6V7H8M8,13H6V11H8M8,17H6V15H8M18,3V5H16V3H8V5H6V3H4V21H6V19H8V21H16V19H18V21H20V3H18Z";
var mdiFilmstripBox = "M19 3C20.1 3 21 3.9 21 5V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19M7 18V16H5V18H7M7 13V11H5V13H7M7 8V6H5V8H7M19 18V16H17V18H19M19 13V11H17V13H19M19 8V6H17V8H19Z";
var mdiFilmstripBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M10,15H8V13H10V15M10,11H8V9H10V11M10,7H8V5H10V7M20,15H18V13H20V15M20,11H18V9H20V11M20,7H18V5H20V7Z";
var mdiFilmstripOff = "M1,4.27L2.28,3L21,21.72L19.73,23L16,19.27V21H8V19H6V21H4V7.27L1,4.27M18,9V7H16V9H18M18,13V11H16V13H18M18,15H16.82L6.82,5H8V3H16V5H18V3H20V18.18L18,16.18V15M8,13V11.27L7.73,11H6V13H8M8,17V15H6V17H8M6,3V4.18L4.82,3H6Z";
var mdiFilter = "M14,12V19.88C14.04,20.18 13.94,20.5 13.71,20.71C13.32,21.1 12.69,21.1 12.3,20.71L10.29,18.7C10.06,18.47 9.96,18.16 10,17.87V12H9.97L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L14.03,12H14Z";
var mdiFilterMenu = "M11 11L16.76 3.62A1 1 0 0 0 16.59 2.22A1 1 0 0 0 16 2H2A1 1 0 0 0 1.38 2.22A1 1 0 0 0 1.21 3.62L7 11V16.87A1 1 0 0 0 7.29 17.7L9.29 19.7A1 1 0 0 0 10.7 19.7A1 1 0 0 0 11 18.87V11M13 16L18 21L23 16Z";
var mdiFilterMenuOutline = "M12 18.88A1 1 0 0 1 11.71 19.71A1 1 0 0 1 10.3 19.71L6.3 15.71A1 1 0 0 1 6 14.87V9.75L1.21 3.62A1 1 0 0 1 1.38 2.22A1 1 0 0 1 2 2H16A1 1 0 0 1 16.62 2.22A1 1 0 0 1 16.79 3.62L12 9.75V18.88M4 4L8 9.06V14.58L10 16.58V9.05L14 4M13 16L18 21L23 16Z";
var mdiFilterMinus = "M12 12V19.88C12.04 20.18 11.94 20.5 11.71 20.71C11.32 21.1 10.69 21.1 10.3 20.71L8.29 18.7C8.06 18.47 7.96 18.16 8 17.86V12H7.97L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3V3H17V3C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L12.03 12H12M15 17H23V19H15V17Z";
var mdiFilterMinusOutline = "M15 17H23V19H15V17M13 19.88C13.04 20.18 12.94 20.5 12.72 20.71C12.32 21.1 11.69 21.1 11.3 20.71L7.29 16.7C7.06 16.47 6.96 16.16 7 15.87V10.75L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3V3H17V3C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L13 10.75V19.88M5.04 5L9 10.07V15.58L11 17.58V10.05L14.96 5H5.04Z";
var mdiFilterOff = "M2.39 1.73L1.11 3L9.5 11.37L9.97 12H10V17.87C9.96 18.16 10.06 18.47 10.29 18.7L12.3 20.71C12.69 21.1 13.32 21.1 13.71 20.71C13.94 20.5 14.04 20.18 14 19.88V15.89L20.84 22.73L22.11 21.46L14 13.35L9.41 8.76L4.15 3.5L2.39 1.73M6.21 3L14.54 11.34L19.79 4.62C20.13 4.19 20.05 3.56 19.62 3.22C19.43 3.08 19.22 3 19 3H6.21Z";
var mdiFilterOffOutline = "M2.39 1.73L1.11 3L9 10.89V15.87C8.96 16.16 9.06 16.47 9.29 16.7L13.3 20.71C13.69 21.1 14.32 21.1 14.71 20.71C14.94 20.5 15.04 20.18 15 19.88V16.89L20.84 22.73L22.11 21.46L15 14.35V14.34L13 12.35L11 10.34L4.15 3.5L2.39 1.73M6.21 3L8.2 5H16.96L13.11 9.91L15 11.8V10.75L19.79 4.62C20.13 4.19 20.05 3.56 19.62 3.22C19.43 3.08 19.22 3 19 3H6.21M11 12.89L13 14.89V17.58L11 15.58V12.89Z";
var mdiFilterOutline = "M15,19.88C15.04,20.18 14.94,20.5 14.71,20.71C14.32,21.1 13.69,21.1 13.3,20.71L9.29,16.7C9.06,16.47 8.96,16.16 9,15.87V10.75L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L15,10.75V19.88M7.04,5L11,10.06V15.58L13,17.58V10.05L16.96,5H7.04Z";
var mdiFilterPlus = "M12 12V19.88C12.04 20.18 11.94 20.5 11.71 20.71C11.32 21.1 10.69 21.1 10.3 20.71L8.29 18.7C8.06 18.47 7.96 18.16 8 17.87V12H7.97L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3H17C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L12.03 12H12M15 17H18V14H20V17H23V19H20V22H18V19H15V17Z";
var mdiFilterPlusOutline = "M15 17H18V14H20V17H23V19H20V22H18V19H15V17M13 19.88C13.04 20.18 12.94 20.5 12.72 20.71C12.32 21.1 11.69 21.1 11.3 20.71L7.29 16.7C7.06 16.47 6.96 16.16 7 15.87V10.75L2.21 4.62C1.87 4.19 1.95 3.56 2.38 3.22C2.57 3.08 2.78 3 3 3V3H17V3C17.22 3 17.43 3.08 17.62 3.22C18.05 3.56 18.13 4.19 17.79 4.62L13 10.75V19.88M5.04 5L9 10.07V15.58L11 17.58V10.05L14.96 5H5.04Z";
var mdiFilterRemove = "M14.76,20.83L17.6,18L14.76,15.17L16.17,13.76L19,16.57L21.83,13.76L23.24,15.17L20.43,18L23.24,20.83L21.83,22.24L19,19.4L16.17,22.24L14.76,20.83M12,12V19.88C12.04,20.18 11.94,20.5 11.71,20.71C11.32,21.1 10.69,21.1 10.3,20.71L8.29,18.7C8.06,18.47 7.96,18.16 8,17.87V12H7.97L2.21,4.62C1.87,4.19 1.95,3.56 2.38,3.22C2.57,3.08 2.78,3 3,3V3H17V3C17.22,3 17.43,3.08 17.62,3.22C18.05,3.56 18.13,4.19 17.79,4.62L12.03,12H12Z";
var mdiFilterRemoveOutline = "M14.73,20.83L17.58,18L14.73,15.17L16.15,13.76L19,16.57L21.8,13.76L23.22,15.17L20.41,18L23.22,20.83L21.8,22.24L19,19.4L16.15,22.24L14.73,20.83M13,19.88C13.04,20.18 12.94,20.5 12.71,20.71C12.32,21.1 11.69,21.1 11.3,20.71L7.29,16.7C7.06,16.47 6.96,16.16 7,15.87V10.75L2.21,4.62C1.87,4.19 1.95,3.56 2.38,3.22C2.57,3.08 2.78,3 3,3V3H17V3C17.22,3 17.43,3.08 17.62,3.22C18.05,3.56 18.13,4.19 17.79,4.62L13,10.75V19.88M5.04,5L9,10.06V15.58L11,17.58V10.05L14.96,5H5.04Z";
var mdiFilterVariant = "M6,13H18V11H6M3,6V8H21V6M10,18H14V16H10V18Z";
var mdiFilterVariantMinus = "M21 8H3V6H21V8M13.81 16H10V18H13.09C13.21 17.28 13.46 16.61 13.81 16M18 11H6V13H18V11M23 18H15V20H23V18Z";
var mdiFilterVariantPlus = "M21 8H3V6H21V8M13.81 16H10V18H13.09C13.21 17.28 13.46 16.61 13.81 16M18 11H6V13H18V11M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z";
var mdiFilterVariantRemove = "M21 8H3V6H21V8M13.81 16H10V18H13.09C13.21 17.28 13.46 16.61 13.81 16M18 11H6V13H18V11M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z";
var mdiFinance = "M6,16.5L3,19.44V11H6M11,14.66L9.43,13.32L8,14.64V7H11M16,13L13,16V3H16M18.81,12.81L17,11H22V16L20.21,14.21L13,21.36L9.53,18.34L5.75,22H3L9.47,15.66L13,18.64";
var mdiFindReplace = "M11,6C12.38,6 13.63,6.56 14.54,7.46L12,10H18V4L15.95,6.05C14.68,4.78 12.93,4 11,4C7.47,4 4.57,6.61 4.08,10H6.1C6.56,7.72 8.58,6 11,6M16.64,15.14C17.3,14.24 17.76,13.17 17.92,12H15.9C15.44,14.28 13.42,16 11,16C9.62,16 8.37,15.44 7.46,14.54L10,12H4V18L6.05,15.95C7.32,17.22 9.07,18 11,18C12.55,18 14,17.5 15.14,16.64L20,21.5L21.5,20L16.64,15.14Z";
var mdiFingerprint = "M17.81,4.47C17.73,4.47 17.65,4.45 17.58,4.41C15.66,3.42 14,3 12,3C10.03,3 8.15,3.47 6.44,4.41C6.2,4.54 5.9,4.45 5.76,4.21C5.63,3.97 5.72,3.66 5.96,3.53C7.82,2.5 9.86,2 12,2C14.14,2 16,2.47 18.04,3.5C18.29,3.65 18.38,3.95 18.25,4.19C18.16,4.37 18,4.47 17.81,4.47M3.5,9.72C3.4,9.72 3.3,9.69 3.21,9.63C3,9.47 2.93,9.16 3.09,8.93C4.08,7.53 5.34,6.43 6.84,5.66C10,4.04 14,4.03 17.15,5.65C18.65,6.42 19.91,7.5 20.9,8.9C21.06,9.12 21,9.44 20.78,9.6C20.55,9.76 20.24,9.71 20.08,9.5C19.18,8.22 18.04,7.23 16.69,6.54C13.82,5.07 10.15,5.07 7.29,6.55C5.93,7.25 4.79,8.25 3.89,9.5C3.81,9.65 3.66,9.72 3.5,9.72M9.75,21.79C9.62,21.79 9.5,21.74 9.4,21.64C8.53,20.77 8.06,20.21 7.39,19C6.7,17.77 6.34,16.27 6.34,14.66C6.34,11.69 8.88,9.27 12,9.27C15.12,9.27 17.66,11.69 17.66,14.66A0.5,0.5 0 0,1 17.16,15.16A0.5,0.5 0 0,1 16.66,14.66C16.66,12.24 14.57,10.27 12,10.27C9.43,10.27 7.34,12.24 7.34,14.66C7.34,16.1 7.66,17.43 8.27,18.5C8.91,19.66 9.35,20.15 10.12,20.93C10.31,21.13 10.31,21.44 10.12,21.64C10,21.74 9.88,21.79 9.75,21.79M16.92,19.94C15.73,19.94 14.68,19.64 13.82,19.05C12.33,18.04 11.44,16.4 11.44,14.66A0.5,0.5 0 0,1 11.94,14.16A0.5,0.5 0 0,1 12.44,14.66C12.44,16.07 13.16,17.4 14.38,18.22C15.09,18.7 15.92,18.93 16.92,18.93C17.16,18.93 17.56,18.9 17.96,18.83C18.23,18.78 18.5,18.96 18.54,19.24C18.59,19.5 18.41,19.77 18.13,19.82C17.56,19.93 17.06,19.94 16.92,19.94M14.91,22C14.87,22 14.82,22 14.78,22C13.19,21.54 12.15,20.95 11.06,19.88C9.66,18.5 8.89,16.64 8.89,14.66C8.89,13.04 10.27,11.72 11.97,11.72C13.67,11.72 15.05,13.04 15.05,14.66C15.05,15.73 16,16.6 17.13,16.6C18.28,16.6 19.21,15.73 19.21,14.66C19.21,10.89 15.96,7.83 11.96,7.83C9.12,7.83 6.5,9.41 5.35,11.86C4.96,12.67 4.76,13.62 4.76,14.66C4.76,15.44 4.83,16.67 5.43,18.27C5.53,18.53 5.4,18.82 5.14,18.91C4.88,19 4.59,18.87 4.5,18.62C4,17.31 3.77,16 3.77,14.66C3.77,13.46 4,12.37 4.45,11.42C5.78,8.63 8.73,6.82 11.96,6.82C16.5,6.82 20.21,10.33 20.21,14.65C20.21,16.27 18.83,17.59 17.13,17.59C15.43,17.59 14.05,16.27 14.05,14.65C14.05,13.58 13.12,12.71 11.97,12.71C10.82,12.71 9.89,13.58 9.89,14.65C9.89,16.36 10.55,17.96 11.76,19.16C12.71,20.1 13.62,20.62 15.03,21C15.3,21.08 15.45,21.36 15.38,21.62C15.33,21.85 15.12,22 14.91,22Z";
var mdiFingerprintOff = "M1.5,4.77L2.78,3.5L20.5,21.22L19.23,22.5L16.67,19.94C15.58,19.9 14.62,19.6 13.82,19.05C12.34,18.05 11.46,16.43 11.44,14.71L10.27,13.53C10.03,13.85 9.89,14.23 9.89,14.65C9.89,16.36 10.55,17.96 11.76,19.16C12.71,20.1 13.62,20.62 15.03,21C15.3,21.08 15.45,21.36 15.38,21.62C15.33,21.85 15.12,22 14.91,22H14.78C13.19,21.54 12.15,20.95 11.06,19.88C9.66,18.5 8.89,16.64 8.89,14.66C8.89,13.97 9.14,13.33 9.56,12.83L8.5,11.77C7.78,12.54 7.34,13.55 7.34,14.66C7.34,16.1 7.66,17.43 8.27,18.5C8.91,19.66 9.35,20.15 10.12,20.93C10.31,21.13 10.31,21.44 10.12,21.64C10,21.74 9.88,21.79 9.75,21.79C9.62,21.79 9.5,21.74 9.4,21.64C8.53,20.77 8.06,20.21 7.39,19C6.7,17.77 6.34,16.27 6.34,14.66C6.34,13.28 6.89,12 7.79,11.06L6.7,9.97C6.15,10.5 5.69,11.15 5.35,11.86C4.96,12.67 4.76,13.62 4.76,14.66C4.76,15.44 4.83,16.67 5.43,18.27C5.53,18.53 5.4,18.82 5.14,18.91C4.88,19 4.59,18.87 4.5,18.62C4,17.31 3.77,16 3.77,14.66C3.77,13.46 4,12.37 4.45,11.42C4.84,10.61 5.36,9.88 6,9.26L4.97,8.24C4.58,8.63 4.22,9.05 3.89,9.5C3.81,9.65 3.66,9.72 3.5,9.72L3.21,9.63C3,9.47 2.93,9.16 3.09,8.93C3.45,8.43 3.84,7.96 4.27,7.53L1.5,4.77M17.81,4.47L17.58,4.41C15.66,3.42 14,3 12,3C10.03,3 8.15,3.47 6.44,4.41L6.29,4.46L5.71,3.89C5.73,3.74 5.82,3.61 5.96,3.53C7.82,2.5 9.86,2 12,2C14.14,2 16,2.47 18.04,3.5C18.29,3.65 18.38,3.95 18.25,4.19C18.16,4.37 18,4.47 17.81,4.47M17.15,5.65C18.65,6.42 19.91,7.5 20.9,8.9C21.06,9.12 21,9.44 20.78,9.6C20.55,9.76 20.24,9.71 20.08,9.5C19.18,8.22 18.04,7.23 16.69,6.54C14.06,5.19 10.76,5.08 8.03,6.21L7.27,5.45C10.34,4.04 14.14,4.1 17.15,5.65M12,9.27C15.12,9.27 17.66,11.69 17.66,14.66A0.5,0.5 0 0,1 17.16,15.16L16.93,15.11L16.72,14.89L16.66,14.66C16.66,12.27 14.62,10.32 12.09,10.27L11.15,9.33L12,9.27M14.38,18.22C14.71,18.45 15.07,18.62 15.47,18.73L12.63,15.9C12.92,16.82 13.53,17.65 14.38,18.22M19.21,14.66C19.21,10.89 15.96,7.83 11.96,7.83C11.26,7.83 10.58,7.93 9.93,8.11L9.12,7.3C10,7 10.97,6.82 11.96,6.82C16.5,6.82 20.21,10.33 20.21,14.65C20.21,15.65 19.69,16.53 18.89,17.06L18.17,16.34C18.79,16 19.21,15.38 19.21,14.66Z";
var mdiFire = "M17.66 11.2C17.43 10.9 17.15 10.64 16.89 10.38C16.22 9.78 15.46 9.35 14.82 8.72C13.33 7.26 13 4.85 13.95 3C13 3.23 12.17 3.75 11.46 4.32C8.87 6.4 7.85 10.07 9.07 13.22C9.11 13.32 9.15 13.42 9.15 13.55C9.15 13.77 9 13.97 8.8 14.05C8.57 14.15 8.33 14.09 8.14 13.93C8.08 13.88 8.04 13.83 8 13.76C6.87 12.33 6.69 10.28 7.45 8.64C5.78 10 4.87 12.3 5 14.47C5.06 14.97 5.12 15.47 5.29 15.97C5.43 16.57 5.7 17.17 6 17.7C7.08 19.43 8.95 20.67 10.96 20.92C13.1 21.19 15.39 20.8 17.03 19.32C18.86 17.66 19.5 15 18.56 12.72L18.43 12.46C18.22 12 17.66 11.2 17.66 11.2M14.5 17.5C14.22 17.74 13.76 18 13.4 18.1C12.28 18.5 11.16 17.94 10.5 17.28C11.69 17 12.4 16.12 12.61 15.23C12.78 14.43 12.46 13.77 12.33 13C12.21 12.26 12.23 11.63 12.5 10.94C12.69 11.32 12.89 11.7 13.13 12C13.9 13 15.11 13.44 15.37 14.8C15.41 14.94 15.43 15.08 15.43 15.23C15.46 16.05 15.1 16.95 14.5 17.5H14.5Z";
var mdiFireAlert = "M15.66 11.2C15.43 10.9 15.15 10.64 14.89 10.38C14.22 9.78 13.46 9.35 12.82 8.72C11.33 7.26 11 4.85 11.95 3C11 3.23 10.17 3.75 9.46 4.32C6.87 6.4 5.85 10.07 7.07 13.22C7.11 13.32 7.15 13.42 7.15 13.55C7.15 13.77 7 13.97 6.8 14.05C6.57 14.15 6.33 14.09 6.14 13.93C6.08 13.88 6.04 13.83 6 13.76C4.87 12.33 4.69 10.28 5.45 8.64C3.78 10 2.87 12.3 3 14.47C3.06 14.97 3.12 15.47 3.29 15.97C3.43 16.57 3.7 17.17 4 17.7C5.08 19.43 6.95 20.67 8.96 20.92C11.1 21.19 13.39 20.8 15.03 19.32C16.86 17.66 17.5 15 16.56 12.72L16.43 12.46C16.22 12 15.66 11.2 15.66 11.2M12.5 17.5C12.22 17.74 11.76 18 11.4 18.1C10.28 18.5 9.16 17.94 8.5 17.28C9.69 17 10.4 16.12 10.61 15.23C10.78 14.43 10.46 13.77 10.33 13C10.21 12.26 10.23 11.63 10.5 10.94C10.69 11.32 10.89 11.7 11.13 12C11.9 13 13.11 13.44 13.37 14.8C13.41 14.94 13.43 15.08 13.43 15.23C13.46 16.05 13.1 16.95 12.5 17.5H12.5M21 13H19V7H21V13M21 17H19V15H21V17Z";
var mdiFireExtinguisher = "M10.5,7H11.75L12,5H10.25L6,7.5V9H4V6.5L10,3H12V2H14V3H16L17,2.5V5.5L16,5H14L14.25,7H15.5A1.5,1.5 0 0,1 17,8.5V22H9V8.5A1.5,1.5 0 0,1 10.5,7Z";
var mdiFireHydrant = "M5 15V14H4V12H5V11H7V15H5M19 12V11H17V15H19V14H20V12H19M18 6H15.86C15.5 4.6 14.4 3.5 13 3.14V2H11V3.14C9.6 3.5 8.5 4.6 8.14 6H6V8H18V6M18 22H6C6 20.9 6.9 20 8 20V9H16V20C17.11 20 18 20.9 18 22M10 13C10 14.11 10.9 15 12 15S14 14.11 14 13 13.11 11 12 11 10 11.9 10 13Z";
var mdiFireHydrantAlert = "M22 7H20V13H22V7M22 15H20V17H22V15M3 15V14H2V12H3V11H5V15H3M17 12V11H15V15H17V14H18V12H17M16 6H13.86C13.5 4.6 12.4 3.5 11 3.14V2H9V3.14C7.6 3.5 6.5 4.6 6.14 6H4V8H16V6M16 22H4C4 20.9 4.89 20 6 20V9H14V20C15.11 20 16 20.9 16 22M8 13C8 14.11 8.9 15 10 15S12 14.11 12 13 11.11 11 10 11 8 11.9 8 13Z";
var mdiFireHydrantOff = "M20.84 22.73L22.11 21.46L2.39 1.73L1.11 3L8 9.89V20C6.9 20 6 20.9 6 22H18C18 20.9 17.11 20 16 20V17.89L20.84 22.73M10.22 12.11L12.89 14.78C12.62 14.92 12.32 15 12 15C10.9 15 10 14.11 10 13C10 12.68 10.08 12.38 10.22 12.11M11.2 8L8.44 5.24C8.94 4.21 9.87 3.43 11 3.14V2H13V3.14C14.4 3.5 15.5 4.6 15.86 6H18V8H11.2M19 11V12H20V14H19V15H18.2L17 13.8V11H19M5 15V14H4V12H5V11H7V15H5M16 12.8L12.2 9H16V12.8Z";
var mdiFireOff = "M22.11 21.46L2.39 1.73L1.11 3L7.09 9C5.66 10.36 4.88 12.47 5 14.47C5.06 14.97 5.12 15.47 5.29 15.97C5.43 16.57 5.7 17.17 6 17.7C7.08 19.43 8.95 20.67 10.96 20.92C13.1 21.19 15.39 20.8 17.03 19.32C17.1 19.26 17.15 19.18 17.22 19.11L20.84 22.73L22.11 21.46M8.8 14.05C8.57 14.15 8.33 14.09 8.14 13.93C8.08 13.88 8.04 13.83 8 13.76C7 12.47 6.74 10.69 7.26 9.15L8.58 10.47C8.58 11.4 8.73 12.33 9.07 13.22C9.11 13.32 9.15 13.42 9.15 13.55C9.15 13.77 9 13.97 8.8 14.05M14.5 17.5C14.22 17.74 13.76 18 13.4 18.1C12.28 18.5 11.16 17.94 10.5 17.28C11.69 17 12.4 16.12 12.61 15.23C12.66 15 12.66 14.76 12.64 14.53L15 16.88C14.85 17.11 14.69 17.33 14.5 17.5M18.92 15.72L9.65 6.46C10.12 5.65 10.72 4.92 11.46 4.32C12.17 3.75 13 3.23 13.95 3C13 4.85 13.33 7.26 14.82 8.72C15.46 9.35 16.22 9.78 16.89 10.38C17.15 10.64 17.43 10.9 17.66 11.2C17.66 11.2 18.22 12 18.43 12.46L18.56 12.72C18.96 13.69 19.06 14.72 18.92 15.72Z";
var mdiFireTruck = "M17.04,2C16.85,2 16.66,2.04 16.5,2.14L5.59,8.5H9.55L17.5,3.86C18,3.58 18.13,2.97 17.85,2.5C17.68,2.2 17.38,2 17.04,2M16,8V10H3A2,2 0 0,0 1,12H2V15H1V19H3A3,3 0 0,0 6,22A3,3 0 0,0 9,19H15A3,3 0 0,0 18,22A3,3 0 0,0 21,19H23V12.5L19.5,8H16M18,9.5H19L21.5,12.5V13.5H18V9.5M4,12H7V15H4V12M9,12H12V15H9V12M14,12H16V15H14V12M6,17.5A1.5,1.5 0 0,1 7.5,19A1.5,1.5 0 0,1 6,20.5A1.5,1.5 0 0,1 4.5,19A1.5,1.5 0 0,1 6,17.5M18,17.5A1.5,1.5 0 0,1 19.5,19A1.5,1.5 0 0,1 18,20.5A1.5,1.5 0 0,1 16.5,19A1.5,1.5 0 0,1 18,17.5Z";
var mdiFirebase = "M20,18.69L12.7,22.74C12.2,23 11.7,23 11.2,22.74L4,18.69L17.05,5.54L17.4,5.44C17.7,5.44 17.87,5.57 17.9,5.84L20,18.69M9.35,5.74L4.8,13.29L6.7,1.34C6.73,1.07 6.9,0.94 7.2,0.94C7.4,0.94 7.53,1 7.6,1.19L9.75,5.14L9.35,5.74M13.85,7L4.3,16.59L11.55,4.29C11.65,4.09 11.8,4 12,4C12.2,4 12.33,4.09 12.4,4.29L13.85,7Z";
var mdiFirefox = "M9.27 7.94C9.27 7.94 9.27 7.94 9.27 7.94M6.85 6.74C6.86 6.74 6.86 6.74 6.85 6.74M21.28 8.6C20.85 7.55 19.96 6.42 19.27 6.06C19.83 7.17 20.16 8.28 20.29 9.1L20.29 9.12C19.16 6.3 17.24 5.16 15.67 2.68C15.59 2.56 15.5 2.43 15.43 2.3C15.39 2.23 15.36 2.16 15.32 2.09C15.26 1.96 15.2 1.83 15.17 1.69C15.17 1.68 15.16 1.67 15.15 1.67H15.13L15.12 1.67L15.12 1.67L15.12 1.67C12.9 2.97 11.97 5.26 11.74 6.71C11.05 6.75 10.37 6.92 9.75 7.22C9.63 7.27 9.58 7.41 9.62 7.53C9.67 7.67 9.83 7.74 9.96 7.68C10.5 7.42 11.1 7.27 11.7 7.23L11.75 7.23C11.83 7.22 11.92 7.22 12 7.22C12.5 7.21 12.97 7.28 13.44 7.42L13.5 7.44C13.6 7.46 13.67 7.5 13.75 7.5C13.8 7.54 13.86 7.56 13.91 7.58L14.05 7.64C14.12 7.67 14.19 7.7 14.25 7.73C14.28 7.75 14.31 7.76 14.34 7.78C14.41 7.82 14.5 7.85 14.54 7.89C14.58 7.91 14.62 7.94 14.66 7.96C15.39 8.41 16 9.03 16.41 9.77C15.88 9.4 14.92 9.03 14 9.19C17.6 11 16.63 17.19 11.64 16.95C11.2 16.94 10.76 16.85 10.34 16.7C10.24 16.67 10.14 16.63 10.05 16.58C10 16.56 9.93 16.53 9.88 16.5C8.65 15.87 7.64 14.68 7.5 13.23C7.5 13.23 8 11.5 10.83 11.5C11.14 11.5 12 10.64 12.03 10.4C12.03 10.31 10.29 9.62 9.61 8.95C9.24 8.59 9.07 8.42 8.92 8.29C8.84 8.22 8.75 8.16 8.66 8.1C8.43 7.3 8.42 6.45 8.63 5.65C7.6 6.12 6.8 6.86 6.22 7.5H6.22C5.82 7 5.85 5.35 5.87 5C5.86 5 5.57 5.16 5.54 5.18C5.19 5.43 4.86 5.71 4.56 6C4.21 6.37 3.9 6.74 3.62 7.14C3 8.05 2.5 9.09 2.28 10.18C2.28 10.19 2.18 10.59 2.11 11.1L2.08 11.33C2.06 11.5 2.04 11.65 2 11.91L2 11.94L2 12.27L2 12.32C2 17.85 6.5 22.33 12 22.33C16.97 22.33 21.08 18.74 21.88 14C21.9 13.89 21.91 13.76 21.93 13.63C22.13 11.91 21.91 10.11 21.28 8.6Z";
var mdiFireplace = "M22,22H2V20H22V22M22,6H2V3H22V6M20,7V19H17V11C17,11 14.5,10 12,10C9.5,10 7,11 7,11V19H4V7H20M14.5,14.67H14.47L14.81,15.22L14.87,15.34C15.29,16.35 15,17.5 14.21,18.24C13.5,18.9 12.5,19.07 11.58,18.95C10.71,18.84 9.9,18.29 9.45,17.53C9.3,17.3 9.19,17.03 9.13,16.77L9,16.11C8.96,15.15 9.34,14.14 10.06,13.54C9.73,14.26 9.81,15.16 10.3,15.79L10.36,15.87C10.44,15.94 10.55,15.97 10.64,15.92C10.73,15.89 10.8,15.8 10.8,15.7L10.76,15.56C10.23,14.17 10.68,12.55 11.79,11.63C12.1,11.38 12.5,11.15 12.87,11.05C12.46,11.87 12.61,12.93 13.25,13.57L14.14,14.3L14.5,14.67M13.11,17.44V17.44C13.37,17.2 13.53,16.8 13.5,16.44V16.25C13.38,15.65 12.85,15.46 12.5,15L12.26,14.55C12.13,14.85 12.12,15.13 12.17,15.46C12.23,15.8 12.37,16.09 12.29,16.44C12.2,16.83 11.9,17.22 11.37,17.35C11.67,17.64 12.15,17.87 12.64,17.71L13.11,17.44Z";
var mdiFireplaceOff = "M22,22H2V20H22V22M22,6H2V3H22V6M20,7V19H17V11C17,11 14.5,10 12,10C9.5,10 7,11 7,11V19H4V7H20Z";
var mdiFirework = "M5.8,16.59L4.5,15.28L12.26,7.5L16.5,11.74L8.72,19.5L7.29,18.09C7.04,18.16 6.8,18.28 6.63,18.5C6.57,18.57 6.5,18.65 6.5,18.74C6.42,18.88 6.38,19 6.32,19.15C6.21,19.42 6.09,19.69 5.93,19.93C5.81,20.1 5.68,20.26 5.53,20.39C5.42,20.5 5.29,20.59 5.16,20.66C5.08,20.71 5,20.76 4.9,20.79C4.3,21.04 3.63,21 3,21V19C3.23,19 3.83,19 3.9,19C4,19 4.08,19 4.16,18.94C4.18,18.92 4.19,18.91 4.21,18.89C4.28,18.81 4.34,18.7 4.39,18.6C4.47,18.42 4.53,18.24 4.6,18.06L4.64,17.96C4.76,17.69 4.9,17.45 5.08,17.23C5.18,17.1 5.3,17 5.42,16.87C5.54,16.77 5.66,16.67 5.8,16.59M21,3L19.88,11.19L12.81,4.12L21,3Z";
var mdiFireworkOff = "M20.84 22.73L13.17 15.06L8.72 19.5L7.29 18.09C7.04 18.16 6.8 18.28 6.63 18.5C6.57 18.57 6.5 18.65 6.5 18.74C6.42 18.88 6.38 19 6.32 19.15C6.21 19.42 6.09 19.69 5.93 19.93C5.81 20.1 5.68 20.26 5.53 20.39C5.42 20.5 5.29 20.59 5.16 20.66C5.08 20.71 5 20.76 4.9 20.79C4.3 21.04 3.63 21 3 21V19H3.9C4 19 4.08 19 4.16 18.94L4.21 18.89C4.28 18.81 4.34 18.7 4.39 18.6C4.47 18.42 4.53 18.24 4.6 18.06L4.64 17.96C4.76 17.69 4.9 17.45 5.08 17.23C5.18 17.1 5.3 17 5.42 16.87C5.54 16.77 5.66 16.67 5.8 16.59L4.5 15.28L8.94 10.83L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21 3L12.81 4.12L19.88 11.19L21 3M16.5 11.74L12.26 7.5L11.5 8.28L15.72 12.5L16.5 11.74Z";
var mdiFish = "M12,20L12.76,17C9.5,16.79 6.59,15.4 5.75,13.58C5.66,14.06 5.53,14.5 5.33,14.83C4.67,16 3.33,16 2,16C3.1,16 3.5,14.43 3.5,12.5C3.5,10.57 3.1,9 2,9C3.33,9 4.67,9 5.33,10.17C5.53,10.5 5.66,10.94 5.75,11.42C6.4,10 8.32,8.85 10.66,8.32L9,5C11,5 13,5 14.33,5.67C15.46,6.23 16.11,7.27 16.69,8.38C19.61,9.08 22,10.66 22,12.5C22,14.38 19.5,16 16.5,16.66C15.67,17.76 14.86,18.78 14.17,19.33C13.33,20 12.67,20 12,20M17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12A1,1 0 0,0 17,11Z";
var mdiFishOff = "M20.8 22.7L15.7 17.6C15.1 18.3 14.6 18.9 14.1 19.3C13.3 20 12.7 20 12 20L12.8 17C9.5 16.8 6.6 15.4 5.8 13.6C5.7 14.1 5.6 14.5 5.4 14.8C4.7 16 3.3 16 2 16C3.1 16 3.5 14.4 3.5 12.5S3.1 9 2 9C3.3 9 4.7 9 5.3 10.2C5.5 10.5 5.6 11 5.7 11.4C6 10.7 6.7 10 7.6 9.5L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M9.8 6.6L9 5C11 5 13 5 14.3 5.7C15.4 6.3 16.1 7.3 16.7 8.4C19.6 9.1 22 10.7 22 12.5C22 13.8 20.8 15 19 15.8L9.8 6.6M16 12C16 12.6 16.4 13 17 13S18 12.6 18 12 17.6 11 17 11 16 11.4 16 12Z";
var mdiFishbowl = "M19.11,5H21V3H3V5H4.89C3.11,6.8 2,9.27 2,12C2,15.97 4.31,19.39 7.66,21H16.34C19.69,19.39 22,15.97 22,12C22,9.27 20.89,6.8 19.11,5M13.25,17C12.09,17 11.06,16.64 10.33,16.17C9.67,17 8.33,17 7,17C8.1,17 8.5,15.88 8.5,14.5C8.5,13.12 8.1,12 7,12C8.33,12 9.67,12 10.37,12.91C11.06,12.36 12.09,12 13.25,12C15.32,12 17,13.12 17,14.5C17,15.88 15.32,17 13.25,17M16,7C13.56,8.71 10.44,8.71 8,7C7.06,7.66 6,8.09 4.95,8.25C5.31,7.58 5.77,6.96 6.32,6.41L7.7,5H16.3L17.68,6.41C18.23,6.96 18.69,7.58 19.05,8.25C18,8.09 16.94,7.66 16,7Z";
var mdiFishbowlOutline = "M19.11,5H21V3H3V5H4.89C3.11,6.8 2,9.27 2,12C2,15.97 4.31,19.39 7.66,21H16.34C19.69,19.39 22,15.97 22,12C22,9.27 20.89,6.8 19.11,5M6.32,6.41L7.7,5H16.3L17.68,6.41C18.23,6.96 18.69,7.58 19.05,8.25C18,8.09 16.94,7.66 16,7C13.56,8.71 10.44,8.71 8,7C7.06,7.66 6,8.09 4.95,8.25C5.31,7.58 5.77,6.96 6.32,6.41M15.85,19H8.15C5.58,17.59 4,14.95 4,12C4,11.43 4.07,10.86 4.19,10.32C5.5,10.29 6.8,9.95 8,9.33C10.5,10.63 13.5,10.63 16,9.33C17.2,9.95 18.5,10.29 19.81,10.32C19.93,10.86 20,11.43 20,12C20,14.95 18.42,17.59 15.85,19M17,14.5C17,15.88 15.32,17 13.25,17C12.09,17 11.06,16.64 10.33,16.16C9.67,17 8.33,17 7,17C8.1,17 8.5,15.88 8.5,14.5C8.5,13.12 8.1,12 7,12C8.33,12 9.67,12 10.37,12.91C11.06,12.36 12.09,12 13.25,12C15.32,12 17,13.12 17,14.5Z";
var mdiFitToPage = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M12,4L15,7H13V9H11V7H9M7,15L4,12L7,9V11H9V13H7M12,20L9,17H11V15H13V17H15M17,15V13H15V11H17V9L20,12";
var mdiFitToPageOutline = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M20,20H4V4H20M13,8V10H11V8H9L12,5L15,8M16,15V13H14V11H16V9L19,12M10,13H8V15L5,12L8,9V11H10M15,16L12,19L9,16H11V14H13V16";
var mdiFlag = "M14.4,6L14,4H5V21H7V14H12.6L13,16H20V6H14.4Z";
var mdiFlagCheckered = "M14.4,6H20V16H13L12.6,14H7V21H5V4H14L14.4,6M14,14H16V12H18V10H16V8H14V10L13,8V6H11V8H9V6H7V8H9V10H7V12H9V10H11V12H13V10L14,12V14M11,10V8H13V10H11M14,10H16V12H14V10Z";
var mdiFlagMinus = "M12.4,5H18V15H11L10.6,13H5V20H3V3H12L12.4,5M14,17H22V19H14V17Z";
var mdiFlagMinusOutline = "M12.36 6L12.76 8H18V14H14.64L14.24 12H7V6H12.36M14 4H5V21H7V14H12.6L13 16H20V6H14.4M23 18H15V20H23V18Z";
var mdiFlagOutline = "M12.36,6L12.76,8H18V14H14.64L14.24,12H7V6H12.36M14,4H5V21H7V14H12.6L13,16H20V6H14.4";
var mdiFlagPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M12.4,5H18V12C15.78,12 13.84,13.21 12.8,15H11L10.6,13H5V20H3V3H12L12.4,5Z";
var mdiFlagPlusOutline = "M13 16L12.6 14H7V21H5V4H14L14.4 6H20V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V8H12.76L12.36 6H7V12H14.24L14.64 14H15.69C14.92 14.5 14.27 15.2 13.81 16H13M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z";
var mdiFlagRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M12.4,5H18V12C15.78,12 13.84,13.21 12.8,15H11L10.6,13H5V20H3V3H12L12.4,5Z";
var mdiFlagRemoveOutline = "M13 16L12.6 14H7V21H5V4H14L14.4 6H20V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V8H12.76L12.36 6H7V12H14.24L14.64 14H15.69C14.92 14.5 14.27 15.2 13.81 16H13M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z";
var mdiFlagTriangle = "M7,2H9V22H7V2M19,9L11,14.6V3.4L19,9Z";
var mdiFlagVariant = "M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3Z";
var mdiFlagVariantOutline = "M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3M7,7.25V11.5C7,11.5 9,10 11,10C13,10 14,12 16,12C18,12 18,11 18,11V7.5C18,7.5 17,8 16,8C14,8 13,6 11,6C9,6 7,7.25 7,7.25Z";
var mdiFlare = "M7,11H1V13H7V11M9.17,7.76L7.05,5.64L5.64,7.05L7.76,9.17L9.17,7.76M13,1H11V7H13V1M18.36,7.05L16.95,5.64L14.83,7.76L16.24,9.17L18.36,7.05M17,11V13H23V11H17M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M14.83,16.24L16.95,18.36L18.36,16.95L16.24,14.83L14.83,16.24M5.64,16.95L7.05,18.36L9.17,16.24L7.76,14.83L5.64,16.95M11,23H13V17H11V23Z";
var mdiFlash = "M7,2V13H10V22L17,10H13L17,2H7Z";
var mdiFlashAlert = "M5,2V13H8V22L15,10H11L15,2M17,15H19V17H17V15M17,7H19V13H17V7Z";
var mdiFlashAlertOutline = "M5,2H15L11.5,9H15L8,22V14H5V2M7,4V12H10V14.66L12,11H8.24L11.76,4M17,15H19V17H17V15M17,7H19V13H17V7Z";
var mdiFlashAuto = "M16.85,7.65L18,4L19.15,7.65M19,2H17L13.8,11H15.7L16.4,9H19.6L20.3,11H22.2M3,2V14H6V23L13,11H9L13,2H3Z";
var mdiFlashCircle = "M11.5,20L16.36,10.27H13V4L8,13.73H11.5V20M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.75 21,17.1 19.05,19.05C17.1,21 14.75,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z";
var mdiFlashOff = "M17,10H13L17,2H7V4.18L15.46,12.64M3.27,3L2,4.27L7,9.27V13H10V22L13.58,15.86L17.73,20L19,18.73L3.27,3Z";
var mdiFlashOutline = "M7,2H17L13.5,9H17L10,22V14H7V2M9,4V12H12V14.66L14,11H10.24L13.76,4H9Z";
var mdiFlashRedEye = "M16,5C15.44,5 15,5.44 15,6C15,6.56 15.44,7 16,7C16.56,7 17,6.56 17,6C17,5.44 16.56,5 16,5M16,2C13.27,2 10.94,3.66 10,6C10.94,8.34 13.27,10 16,10C18.73,10 21.06,8.34 22,6C21.06,3.66 18.73,2 16,2M16,3.5A2.5,2.5 0 0,1 18.5,6A2.5,2.5 0 0,1 16,8.5A2.5,2.5 0 0,1 13.5,6A2.5,2.5 0 0,1 16,3.5M3,2V14H6V23L13,11H9L10.12,8.5C9.44,7.76 8.88,6.93 8.5,6C9.19,4.29 10.5,2.88 12.11,2H3Z";
var mdiFlashlight = "M9,10L6,5H18L15,10H9M18,4H6V2H18V4M9,22V11H15V22H9M12,13A1,1 0 0,0 11,14A1,1 0 0,0 12,15A1,1 0 0,0 13,14A1,1 0 0,0 12,13Z";
var mdiFlashlightOff = "M2,5.27L3.28,4L20,20.72L18.73,22L15,18.27V22H9V12.27L2,5.27M18,5L15,10H11.82L6.82,5H18M18,4H6V2H18V4M15,11V13.18L12.82,11H15Z";
var mdiFlask = "M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L16.53,14.47L14,17L8.93,11.93L5.18,18.43C5.07,18.59 5,18.79 5,19M13,10A1,1 0 0,0 12,11A1,1 0 0,0 13,12A1,1 0 0,0 14,11A1,1 0 0,0 13,10Z";
var mdiFlaskEmpty = "M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z";
var mdiFlaskEmptyMinus = "M23 17V19H15V17H23M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C14.92 12.84 13 15.2 13 18C13 19.54 13.58 20.94 14.53 22H6Z";
var mdiFlaskEmptyMinusOutline = "M23 17V19H15V17H23M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19Z";
var mdiFlaskEmptyOff = "M20.8 22.7L19.6 21.5C19.1 21.8 18.6 22 18 22H6C4.3 22 3 20.7 3 19C3 18.4 3.2 17.8 3.5 17.4L7.9 9.8L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M15 7.8V6C15.6 6 16 5.6 16 5V4C16 2.9 15.1 2 14 2H10C8.9 2 8 2.9 8 4V4.8L20.4 17.2L15 7.8Z";
var mdiFlaskEmptyOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L7.9 9.8L3.5 17.4C3.2 17.8 3 18.4 3 19C3 20.7 4.3 22 6 22H18C18.6 22 19.2 21.8 19.6 21.5L20.8 22.7L22.1 21.5M18 20H6C5.4 20 5 19.6 5 19C5 18.8 5.1 18.6 5.2 18.4L9.4 11.2L18 20C18.1 20 18 20 18 20M11 7.8L8 4.8V4C8 2.9 8.9 2 10 2H14C15.1 2 16 2.9 16 4V5C16 5.6 15.6 6 15 6V7.8L20.4 17.2L15 11.8L13 8.4V4H11V7.8Z";
var mdiFlaskEmptyOutline = "M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z";
var mdiFlaskEmptyPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C14.92 12.84 13 15.2 13 18C13 19.54 13.58 20.94 14.53 22H6Z";
var mdiFlaskEmptyPlusOutline = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19Z";
var mdiFlaskEmptyRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C14.92 12.84 13 15.2 13 18C13 19.54 13.58 20.94 14.53 22H6Z";
var mdiFlaskEmptyRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19Z";
var mdiFlaskMinus = "M23 17V19H15V17H23M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C15.5 12.7 13.86 14.26 13.26 16.26L8.93 11.93L5.18 18.43C5.07 18.59 5 18.79 5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6M13 10C12.45 10 12 10.45 12 11C12 11.55 12.45 12 13 12C13.55 12 14 11.55 14 11C14 10.45 13.55 10 13 10Z";
var mdiFlaskMinusOutline = "M23 17V19H15V17H23M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19M13 16L13.58 15.42C13.21 16.2 13 17.08 13 18H7.73L10.39 13.39L13 16M12.5 12C12.78 12 13 12.22 13 12.5C13 12.78 12.78 13 12.5 13C12.22 13 12 12.78 12 12.5C12 12.22 12.22 12 12.5 12Z";
var mdiFlaskOff = "M22.1 21.5L2.4 1.7L1.1 3L7.9 9.8L3.5 17.4C3.2 17.8 3 18.4 3 19C3 20.7 4.3 22 6 22H18C18.6 22 19.2 21.8 19.6 21.5L20.8 22.7L22.1 21.5M18 20H6C5.4 20 5 19.6 5 19C5 18.8 5.1 18.6 5.2 18.4L9 11.9L14 17L14.6 16.4L18 20C18.1 20 18 20 18 20M8 4.8V4C8 2.9 8.9 2 10 2H14C15.1 2 16 2.9 16 4V5C16 5.6 15.6 6 15 6V7.8L20.4 17.2L8 4.8Z";
var mdiFlaskOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L7.9 9.8L3.5 17.4C3.2 17.8 3 18.4 3 19C3 20.7 4.3 22 6 22H18C18.6 22 19.2 21.8 19.6 21.5L20.8 22.7L22.1 21.5M18 20H6C5.4 20 5 19.6 5 19C5 18.8 5.1 18.6 5.2 18.4L9.4 11.2L13.6 15.4L13 16L10.4 13.4L7.7 18H16.1L18 20C18.1 20 18 20 18 20M11 7.8L8 4.8V4C8 2.9 8.9 2 10 2H14C15.1 2 16 2.9 16 4V5C16 5.6 15.6 6 15 6V7.8L20.4 17.2L15 11.8L13 8.4V4H11V7.8Z";
var mdiFlaskOutline = "M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M13,16L14.34,14.66L16.27,18H7.73L10.39,13.39L13,16M12.5,12A0.5,0.5 0 0,1 13,12.5A0.5,0.5 0 0,1 12.5,13A0.5,0.5 0 0,1 12,12.5A0.5,0.5 0 0,1 12.5,12Z";
var mdiFlaskPlus = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C15.5 12.7 13.86 14.26 13.26 16.26L8.93 11.93L5.18 18.43C5.07 18.59 5 18.79 5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6M13 10C12.45 10 12 10.45 12 11C12 11.55 12.45 12 13 12C13.55 12 14 11.55 14 11C14 10.45 13.55 10 13 10Z";
var mdiFlaskPlusOutline = "M18 14H20V17H23V19H20V22H18V19H15V17H18V14M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19M13 16L13.58 15.42C13.21 16.2 13 17.08 13 18H7.73L10.39 13.39L13 16M12.5 12C12.78 12 13 12.22 13 12.5C13 12.78 12.78 13 12.5 13C12.22 13 12 12.78 12 12.5C12 12.22 12.22 12 12.5 12Z";
var mdiFlaskRemove = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M6 22C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C15.5 12.7 13.86 14.26 13.26 16.26L8.93 11.93L5.18 18.43C5.07 18.59 5 18.79 5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6M13 10C12.45 10 12 10.45 12 11C12 11.55 12.45 12 13 12C13.55 12 14 11.55 14 11C14 10.45 13.55 10 13 10Z";
var mdiFlaskRemoveOutline = "M15.46 15.88L16.88 14.46L19 16.59L21.12 14.47L22.53 15.88L20.41 18L22.54 20.12L21.12 21.54L19 19.41L16.88 21.53L15.47 20.12L17.59 18L15.46 15.88M5 19C5 19.55 5.45 20 6 20H13.34C13.61 20.75 14 21.42 14.53 22H6C4.34 22 3 20.66 3 19C3 18.4 3.18 17.84 3.5 17.36L9 7.81V6C8.45 6 8 5.55 8 5V4C8 2.9 8.9 2 10 2H14C15.11 2 16 2.9 16 4V5C16 5.55 15.55 6 15 6V7.81L17.5 12.18C16.86 12.35 16.24 12.63 15.69 13L13 8.35V4H11V8.35L5.18 18.43C5.07 18.59 5 18.79 5 19M13 16L13.58 15.42C13.21 16.2 13 17.08 13 18H7.73L10.39 13.39L13 16M12.5 12C12.78 12 13 12.22 13 12.5C13 12.78 12.78 13 12.5 13C12.22 13 12 12.78 12 12.5C12 12.22 12.22 12 12.5 12Z";
var mdiFlaskRoundBottom = "M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15M11 6V10.1C8.72 10.56 7 12.58 7 15L7.08 15.91L9 13.93L13.07 18L16.93 14.14C16.58 12.12 15 10.5 13 10.1V6H11M13.07 12C13.62 12 14.07 12.45 14.07 13C14.07 13.55 13.62 14 13.07 14C12.5 14 12.07 13.55 12.07 13C12.07 12.45 12.5 12 13.07 12Z";
var mdiFlaskRoundBottomEmpty = "M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15Z";
var mdiFlaskRoundBottomEmptyOutline = "M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15M11 6V10.1C8.72 10.56 7 12.58 7 15C7 17.76 9.24 20 12 20C14.76 20 17 17.76 17 15C17 12.58 15.28 10.56 13 10.1V6H11Z";
var mdiFlaskRoundBottomOutline = "M15 15C15 16.66 13.66 18 12 18C10.34 18 9 16.66 9 15V14H11V15C11 15.55 11.45 16 12 16C12.55 16 13 15.55 13 15V14H15V15M19 15C19 18.87 15.87 22 12 22C8.13 22 5 18.87 5 15C5 12.21 6.64 9.8 9 8.67V5C9 4.45 9.45 4 10 4H10.5L9.5 2H14.5L13.5 4H14C14.55 4 15 4.45 15 5V8.67C17.36 9.8 19 12.21 19 15M11 6V10.1C8.72 10.56 7 12.58 7 15C7 17.76 9.24 20 12 20C14.76 20 17 17.76 17 15C17 12.58 15.28 10.56 13 10.1V6H11Z";
var mdiFleurDeLis = "M12 2S9 4 9 7 11 12 11 16H10S10 14 9 12C7 8 3 10 3 13S5 16 5 16C5 13 8.5 13 8.5 16H7V18H10.5L9 20S10 21 11 20L12 22L13 20C14 21 15 20 15 20L13.5 18H17V16H15.5C15.5 13 19 13 19 16C19 16 21 16 21 13S17 8 15 12C14 14 14 16 14 16H13C13 12 15 10 15 7S12 2 12 2Z";
var mdiFlipHorizontal = "M15 21H17V19H15M19 9H21V7H19M3 5V19C3 20.1 3.9 21 5 21H9V19H5V5H9V3H5C3.9 3 3 3.9 3 5M19 3V5H21C21 3.9 20.1 3 19 3M11 23H13V1H11M19 17H21V15H19M15 5H17V3H15M19 13H21V11H19M19 21C20.1 21 21 20.1 21 19H19Z";
var mdiFlipToBack = "M15,17H17V15H15M15,5H17V3H15M5,7H3V19A2,2 0 0,0 5,21H17V19H5M19,17A2,2 0 0,0 21,15H19M19,9H21V7H19M19,13H21V11H19M9,17V15H7A2,2 0 0,0 9,17M13,3H11V5H13M19,3V5H21C21,3.89 20.1,3 19,3M13,15H11V17H13M9,3C7.89,3 7,3.89 7,5H9M9,11H7V13H9M9,7H7V9H9V7Z";
var mdiFlipToFront = "M7,21H9V19H7M11,21H13V19H11M19,15H9V5H19M19,3H9C7.89,3 7,3.89 7,5V15A2,2 0 0,0 9,17H14L18,17H19A2,2 0 0,0 21,15V5C21,3.89 20.1,3 19,3M15,21H17V19H15M3,9H5V7H3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M3,13H5V11H3V13Z";
var mdiFlipVertical = "M3 15V17H5V15M15 19V21H17V19M19 3H5C3.9 3 3 3.9 3 5V9H5V5H19V9H21V5C21 3.9 20.1 3 19 3M21 19H19V21C20.1 21 21 20.1 21 19M1 11V13H23V11M7 19V21H9V19M19 15V17H21V15M11 19V21H13V19M3 19C3 20.1 3.9 21 5 21V19Z";
var mdiFloorLamp = "M15,2L17,9H7L9,2M11,10H13V20H16V22H8V20H11V10Z";
var mdiFloorLampDual = "M11.73 10.06L10.17 11.24L11 12.2V20H8V22H16V20H13V12.3L13.85 11.26L12.27 10.07L11.73 10.06M9.08 10.82L3 6.81L9.39 2L11.55 8.93L9.08 10.82M14.61 2L21 6.81L14.92 10.82L12.44 8.95L14.61 2Z";
var mdiFloorLampVariant = "M7 2L10 9H14L17 2H7M15.92 22L13 15V22H11V15L8.08 22H5.92L10.92 10H13.08L18.08 22H15.92Z";
var mdiFloorPlan = "M10,5V10H9V5H5V13H9V12H10V17H9V14H5V19H12V17H13V19H19V17H21V21H3V3H21V15H19V10H13V15H12V9H19V5H10Z";
var mdiFloppy = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5.5L18.5,3H17V9A1,1 0 0,1 16,10H8A1,1 0 0,1 7,9V3H5M12,4V9H15V4H12M7,12H17A1,1 0 0,1 18,13V19H6V13A1,1 0 0,1 7,12Z";
var mdiFloppyVariant = "M3,3V21H21V3H3M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,15A1,1 0 0,1 13,16V19A1,1 0 0,1 12,20A1,1 0 0,1 11,19V16A1,1 0 0,1 12,15Z";
var mdiFlower = "M3,13A9,9 0 0,0 12,22C12,17 7.97,13 3,13M12,5.5A2.5,2.5 0 0,1 14.5,8A2.5,2.5 0 0,1 12,10.5A2.5,2.5 0 0,1 9.5,8A2.5,2.5 0 0,1 12,5.5M5.6,10.25A2.5,2.5 0 0,0 8.1,12.75C8.63,12.75 9.12,12.58 9.5,12.31C9.5,12.37 9.5,12.43 9.5,12.5A2.5,2.5 0 0,0 12,15A2.5,2.5 0 0,0 14.5,12.5C14.5,12.43 14.5,12.37 14.5,12.31C14.88,12.58 15.37,12.75 15.9,12.75C17.28,12.75 18.4,11.63 18.4,10.25C18.4,9.25 17.81,8.4 16.97,8C17.81,7.6 18.4,6.74 18.4,5.75C18.4,4.37 17.28,3.25 15.9,3.25C15.37,3.25 14.88,3.41 14.5,3.69C14.5,3.63 14.5,3.56 14.5,3.5A2.5,2.5 0 0,0 12,1A2.5,2.5 0 0,0 9.5,3.5C9.5,3.56 9.5,3.63 9.5,3.69C9.12,3.41 8.63,3.25 8.1,3.25A2.5,2.5 0 0,0 5.6,5.75C5.6,6.74 6.19,7.6 7.03,8C6.19,8.4 5.6,9.25 5.6,10.25M12,22A9,9 0 0,0 21,13C16,13 12,17 12,22Z";
var mdiFlowerOutline = "M8.66,13.07C6.92,13.07 5.5,11.66 5.5,9.93C5.5,9.22 5.76,8.54 6.19,8C5.77,7.46 5.5,6.78 5.5,6.07C5.5,4.34 6.93,2.93 8.66,2.93L9.09,2.96C9.56,1.81 10.69,1 12,1C13.31,1 14.44,1.81 14.91,2.96L15.34,2.93C17.07,2.93 18.5,4.34 18.5,6.07C18.5,6.78 18.24,7.46 17.81,8C18.23,8.54 18.5,9.22 18.5,9.93C18.5,11.66 17.07,13.07 15.34,13.07L14.91,13.04C14.44,14.19 13.31,15 12,15C10.69,15 9.56,14.19 9.09,13.04L8.66,13.07M12,13C12.62,13 13.12,12.5 13.14,11.9L13.03,10.81C12.71,10.93 12.36,11 12,11C11.64,11 11.3,10.93 11,10.81L10.86,11.9C10.88,12.5 11.38,13 12,13M15.34,11.07C15.97,11.07 16.5,10.56 16.5,9.92C16.5,9.5 16.23,9.08 15.83,8.89L14.95,8.47C14.83,9.21 14.44,9.85 13.89,10.3L14.7,10.87C14.88,11 15.1,11.07 15.34,11.07M14.69,5.13L13.87,5.69C14.43,6.14 14.82,6.78 14.94,7.5L15.82,7.1C16.23,6.9 16.5,6.5 16.5,6.07C16.5,5.44 15.97,4.93 15.34,4.93C15.11,4.93 14.89,5 14.69,5.13M12,3C11.38,3 10.88,3.5 10.86,4.1L11,5.19C11.3,5.07 11.64,5 12,5C12.36,5 12.71,5.07 13.03,5.19L13.14,4.1C13.12,3.5 12.62,3 12,3M8.66,4.93C8.03,4.93 7.5,5.44 7.5,6.07C7.5,6.5 7.77,6.9 8.17,7.1L9.05,7.5C9.17,6.78 9.56,6.14 10.11,5.69L9.3,5.13C9.12,5 8.9,4.93 8.66,4.93M8.17,8.9C7.77,9.1 7.5,9.5 7.5,9.92C7.5,10.55 8.03,11.06 8.66,11.06C8.89,11.06 9.11,11 9.31,10.86L10.12,10.31C9.56,9.86 9.17,9.22 9.05,8.5L8.17,8.9M12,22A9,9 0 0,1 3,13A9,9 0 0,1 12,22A9,9 0 0,1 21,13A9,9 0 0,1 12,22M14.44,19.56C16.34,18.85 17.85,17.34 18.56,15.44C16.66,16.14 15.15,17.66 14.44,19.56M5.44,15.44C6.15,17.34 7.66,18.85 9.56,19.56C8.86,17.66 7.34,16.15 5.44,15.44Z";
var mdiFlowerPoppy = "M18.5,12A3.5,3.5 0 0,0 22,8.5A6.5,6.5 0 0,0 15.5,2A3.5,3.5 0 0,0 12,5.5A3.5,3.5 0 0,0 8.5,2A6.5,6.5 0 0,0 2,8.5A3.5,3.5 0 0,0 5.5,12A3.5,3.5 0 0,0 2,15.5A6.5,6.5 0 0,0 8.5,22A3.5,3.5 0 0,0 12,18.5A3.5,3.5 0 0,0 15.5,22A6.5,6.5 0 0,0 22,15.5A3.5,3.5 0 0,0 18.5,12M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M14.5,12A2.5,2.5 0 0,1 12,14.5A2.5,2.5 0 0,1 9.5,12A2.5,2.5 0 0,1 12,9.5A2.5,2.5 0 0,1 14.5,12Z";
var mdiFlowerTulip = "M3,13A9,9 0 0,0 12,22A9,9 0 0,0 3,13M12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,22M18,3V8A6,6 0 0,1 12,14A6,6 0 0,1 6,8V3C6.74,3 7.47,3.12 8.16,3.39C8.71,3.62 9.2,3.96 9.61,4.39L12,2L14.39,4.39C14.8,3.96 15.29,3.62 15.84,3.39C16.53,3.12 17.26,3 18,3Z";
var mdiFlowerTulipOutline = "M3,13A9,9 0 0,0 12,22A9,9 0 0,0 3,13M5.44,15.44C7.35,16.15 8.85,17.65 9.56,19.56C7.65,18.85 6.15,17.35 5.44,15.44M12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,22M14.42,19.57C15.11,17.64 16.64,16.11 18.57,15.42C17.86,17.34 16.34,18.86 14.42,19.57M12,14A6,6 0 0,0 18,8V3C17.26,3 16.53,3.12 15.84,3.39C15.29,3.62 14.8,3.96 14.39,4.39L12,2L9.61,4.39C9.2,3.96 8.71,3.62 8.16,3.39C7.47,3.12 6.74,3 6,3V8A6,6 0 0,0 12,14M8,5.61L9.57,7.26L12,4.83L14.43,7.26L16,5.61V8A4,4 0 0,1 12,12A4,4 0 0,1 8,8V5.61Z";
var mdiFocusAuto = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M8 7C6.9 7 6 7.9 6 9V17H8V13H10V17H12V9C12 7.9 11.1 7 10 7H8M8 9H10V11H8V9M13 7V17H15V13H17V11H15V9H18V7H13Z";
var mdiFocusField = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M7 11H9V13H7V11M11 11H13V13H11V11M15 11H17V13H15V11M7 7H9V9H7V7M11 7H13V9H11V7M15 7H17V9H15V7M7 15H9V17H7V15M11 15H13V17H11V15M15 15H17V17H15V15Z";
var mdiFocusFieldHorizontal = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M7 11H9V13H7V11M11 11H13V13H11V11M15 11H17V13H15V11Z";
var mdiFocusFieldVertical = "M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M11 11H13V13H11V11M11 7H13V9H11V7M11 15H13V17H11V15Z";
var mdiFolder = "M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z";
var mdiFolderAccount = "M19,17H11V16C11,14.67 13.67,14 15,14C16.33,14 19,14.67 19,16M15,9A2,2 0 0,1 17,11A2,2 0 0,1 15,13A2,2 0 0,1 13,11C13,9.89 13.9,9 15,9M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z";
var mdiFolderAccountOutline = "M15 14C16.33 14 19 14.67 19 16V17H11V16C11 14.67 13.67 14 15 14M15 13C16.11 13 17 12.11 17 11S16.11 9 15 9C13.9 9 13 9.89 13 11C13 12.11 13.9 13 15 13M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H10L12 6H20C21.11 6 22 6.9 22 8M20 8H4V18H20V8Z";
var mdiFolderAlert = "M15,12H17V17H15V12M15,18H17V20H15V18M23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z";
var mdiFolderAlertOutline = "M15,12H17V17H15V12M15,18H17V20H15V18M16,9C17.07,9 18.09,9.24 19,9.67V8H3V18H9.29C9.1,17.36 9,16.69 9,16A7,7 0 0,1 16,9M23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z";
var mdiFolderClock = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H10.26C11.57,21.88 13.71,23 16,23A7,7 0 0,0 23,16C23,14.17 22.28,12.42 21,11.11V8C21,6.89 20.1,6 19,6H11L9,4H3M16,11A5,5 0 0,1 21,16A5,5 0 0,1 16,21A5,5 0 0,1 11,16A5,5 0 0,1 16,11M15,12V17L18.61,19.16L19.36,17.94L16.5,16.25V12H15Z";
var mdiFolderClockOutline = "M15,12H16.5V16.25L19.36,17.94L18.61,19.16L15,17V12M19,8H3V18H9.29C9.1,17.37 9,16.7 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M3,20C1.89,20 1,19.1 1,18V6A2,2 0 0,1 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z";
var mdiFolderCog = "M4 4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H12.08A7 7 0 0 1 12 19A7 7 0 0 1 19 12A7 7 0 0 1 22 12.69V8C22 6.89 21.1 6 20 6H12L10 4H4M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14H18M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z";
var mdiFolderCogOutline = "M4 4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H12V18H4V8H20V12H22V8C22 6.89 21.1 6 20 6H12L10 4M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z";
var mdiFolderDownload = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19.25,13H16V9H14V13H10.75L15,17.25";
var mdiFolderDownloadOutline = "M20 18H4V8H20M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M14 9H16V13H19L15 17L11 13H14Z";
var mdiFolderEdit = "M3,4C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H11V18.11L21,8.11V8C21,6.89 20.1,6 19,6H11L9,4H3M21.04,11.13C20.9,11.13 20.76,11.19 20.65,11.3L19.65,12.3L21.7,14.35L22.7,13.35C22.92,13.14 22.92,12.79 22.7,12.58L21.42,11.3C21.31,11.19 21.18,11.13 21.04,11.13M19.07,12.88L13,18.94V21H15.06L21.12,14.93L19.07,12.88Z";
var mdiFolderEditOutline = "M21,11.11C20.92,11.11 20.72,11.21 20.62,11.31L19.62,12.31L21.72,14.42L22.72,13.41C22.92,13.21 22.92,12.81 22.72,12.61L21.42,11.31C21.32,11.21 21.22,11.11 21,11.11M19.12,12.91L13,18.92V21H15.12L21.22,14.92L19.12,12.91M21,8V8.11L19,10.11V8H3V18H11V20H3A2,2 0 0,1 1,18V6C1,4.91 1.9,4 3,4H9L11,6H19C20.12,6 21,6.91 21,8Z";
var mdiFolderGoogleDrive = "M13.75,9H16.14L19,14H16.05L13.5,9.46M18.3,17H12.75L14.15,14.5H19.27L19.53,14.96M11.5,17L10.4,14.86L13.24,9.9L14.74,12.56L12.25,17M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z";
var mdiFolderHeart = "M20 6H12L10 4H4C2.89 4 2 4.89 2 6V18C2 19.1 2.89 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6M18.42 13.5L15 17L11.59 13.5C11.22 13.12 11 12.62 11 12.05C11 10.92 11.9 10 13 10C13.54 10 14.05 10.23 14.42 10.61L15 11.2L15.59 10.6C15.95 10.23 16.46 10 17 10C18.1 10 19 10.92 19 12.05C19 12.61 18.78 13.13 18.42 13.5Z";
var mdiFolderHeartOutline = "M20 18H4V8H20M20 6H12L10 4H4C2.89 4 2 4.89 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.89 21.1 6 20 6M13 10C11.9 10 11 10.92 11 12.05C11 12.62 11.22 13.12 11.59 13.5L15 17L18.42 13.5C18.78 13.13 19 12.61 19 12.05C19 10.92 18.1 10 17 10C16.46 10 15.95 10.23 15.59 10.6L15 11.2L14.42 10.61C14.05 10.23 13.54 10 13 10Z";
var mdiFolderHome = "M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M17 13V17H15V14H13V17H11V13H9L14 9L19 13Z";
var mdiFolderHomeOutline = "M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M20 18H4V8H20M13 17V14H15V17H17V13H19L14 9L9 13H11V17Z";
var mdiFolderImage = "M5,17L9.5,11L13,15.5L15.5,12.5L19,17M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6Z";
var mdiFolderInformation = "M21 11.1V8C21 6.9 20.1 6 19 6H11L9 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H10.3C11.6 21.9 13.8 23 16 23C19.9 23 23 19.9 23 16C23 14.2 22.3 12.4 21 11.1M16 21C13.2 21 11 18.8 11 16S13.2 11 16 11 21 13.2 21 16 18.8 21 16 21M17 20H15V15H17V20M17 14H15V12H17V14Z";
var mdiFolderInformationOutline = "M21 11.1V8C21 6.9 20.1 6 19 6H11L9 4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H10.2C11.4 21.8 13.6 23 16 23C19.9 23 23 19.9 23 16C23 14.1 22.2 12.4 21 11.1M9.3 18H3V8H19V9.7C18.1 9.2 17.1 9 16 9C12.1 9 9 12.1 9 16C9 16.7 9.1 17.4 9.3 18M16 21C13.2 21 11 18.8 11 16S13.2 11 16 11 21 13.2 21 16 18.8 21 16 21M17 14H15V12H17V14M17 20H15V15H17V20Z";
var mdiFolderKey = "M4,4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6H12L10,4M11,10C12.31,10 13.42,10.84 13.83,12H19V14H18V16H16V14H13.83C13.42,15.17 12.31,16 11,16A3,3 0 0,1 8,13A3,3 0 0,1 11,10M11,12A1,1 0 0,0 10,13C10,13.56 10.45,14 11,14A1,1 0 0,0 12,13A1,1 0 0,0 11,12Z";
var mdiFolderKeyNetwork = "M6,5C4.89,5 4,5.89 4,7V15A2,2 0 0,0 6,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V17H18A2,2 0 0,0 20,15V9A2,2 0 0,0 18,7H12L10,5H6M9,9C10.31,9 11.42,9.83 11.83,11H17V13H16V15H14V13H11.83C11.42,14.17 10.31,15 9,15A3,3 0 0,1 6,12A3,3 0 0,1 9,9M9,11A1,1 0 0,0 8,12C8,12.56 8.45,13 9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11Z";
var mdiFolderKeyNetworkOutline = "M9 8C7.34 8 6 9.34 6 11S7.34 14 9 14C10.31 14 11.42 13.17 11.83 12H14V14H16V12H17V10H11.83C11.42 8.83 10.31 8 9 8M9 12C8.45 12 8 11.55 8 11S8.45 10 9 10 10 10.45 10 11 9.55 12 9 12M15 20C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V7C21 5.9 20.11 5 19 5H13L11 3H5C3.9 3 3 3.9 3 5V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15M5 15V7H19V15H5Z";
var mdiFolderKeyOutline = "M20 18H4V8H20M20 6H12L10 4H4C2.89 4 2 4.89 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.89 21.1 6 20 6M13.83 12C13.42 10.84 12.31 10 11 10C9.34 10 8 11.34 8 13S9.34 16 11 16C12.31 16 13.42 15.17 13.83 14H16V16H18V14H19V12H13.83M11 14C10.45 14 10 13.56 10 13C10 12.45 10.45 12 11 12S12 12.45 12 13 11.55 14 11 14Z";
var mdiFolderLock = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18V12A3,3 0 0,0 15,9A3,3 0 0,0 12,12V13H11V17H19M15,11A1,1 0 0,1 16,12V13H14V12A1,1 0 0,1 15,11Z";
var mdiFolderLockOpen = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18L16,13H14V11A1,1 0 0,1 15,10A1,1 0 0,1 16,11H18A3,3 0 0,0 15,8A3,3 0 0,0 12,11V13H11V17H19Z";
var mdiFolderMarker = "M10 4L12 6H20C21.1 6 22 6.89 22 8V11.34C21.04 10.5 19.82 10 18.5 10C15.5 10 13 12.65 13 15.5C13 16.97 13.65 18.55 14.5 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8Z";
var mdiFolderMarkerOutline = "M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8M20 8H4V18H13.5C13.79 18.68 14.13 19.35 14.5 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10L12 6H20C21.1 6 22 6.89 22 8V11.34C21.42 10.84 20.74 10.45 20 10.23V8Z";
var mdiFolderMove = "M14,18V15H10V11H14V8L19,13M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z";
var mdiFolderMoveOutline = "M20 18H4V8H20V18M12 6L10 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V8C22 6.9 21.11 6 20 6H12M11 14V12H15V9L19 13L15 17V14H11Z";
var mdiFolderMultiple = "M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z";
var mdiFolderMultipleImage = "M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z";
var mdiFolderMultipleOutline = "M22,4A2,2 0 0,1 24,6V16A2,2 0 0,1 22,18H6A2,2 0 0,1 4,16V4A2,2 0 0,1 6,2H12L14,4H22M2,6V20H20V22H2A2,2 0 0,1 0,20V11H0V6H2M6,6V16H22V6H6Z";
var mdiFolderMultiplePlus = "M2 20V6H0V20C0 21.1 .9 22 2 22H20V20H2M22 4H14L12 2H6C5.6 2 5.2 2.1 4.9 2.3L4.3 2.9C4.1 3.2 4 3.6 4 4V16C4 16.4 4.1 16.8 4.3 17.1C4.4 17.2 4.5 17.3 4.5 17.4C5 17.8 5.5 18 6 18H22C23.1 18 24 17.1 24 16V6C24 4.9 23.1 4 22 4M22 12H19V15H17V12H14V10H17V7H19V10H22V12Z";
var mdiFolderMultiplePlusOutline = "M22 4C23.1 4 24 4.9 24 6V16C24 17.1 23.1 18 22 18H6C4.9 18 4 17.1 4 16V4C4 2.9 4.9 2 6 2H12L14 4H22M2 6V20H20V22H2C.9 22 0 21.1 0 20V6H2M6 6V16H22V6H6M14 10H16V8H18V10H20V12H18V14H16V12H14V10Z";
var mdiFolderMusic = "M10 4L12 6H20C21.1 6 22 6.89 22 8V18C22 19.1 21.1 20 20 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10M19 9H15.5V13.06L15 13C13.9 13 13 13.9 13 15C13 16.11 13.9 17 15 17C16.11 17 17 16.11 17 15V11H19V9Z";
var mdiFolderMusicOutline = "M20 18V8H4V18H20M20 6C21.1 6 22 6.89 22 8V18C22 19.1 21.1 20 20 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10L12 6H20M18 9V11H16V15C16 16.11 15.11 17 14 17C12.9 17 12 16.11 12 15C12 13.9 12.9 13 14 13C14.17 13 14.34 13 14.5 13.06V9H18Z";
var mdiFolderNetwork = "M3,15V5A2,2 0 0,1 5,3H11L13,5H19A2,2 0 0,1 21,7V15A2,2 0 0,1 19,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H5A2,2 0 0,1 3,15Z";
var mdiFolderNetworkOutline = "M15 20C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V7C21 5.9 20.11 5 19 5H13L11 3H5C3.9 3 3 3.9 3 5V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15M5 15V7H19V15H5Z";
var mdiFolderOpen = "M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z";
var mdiFolderOpenOutline = "M6.1,10L4,18V8H21A2,2 0 0,0 19,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H19C19.9,20 20.7,19.4 20.9,18.5L23.2,10H6.1M19,18H6L7.6,12H20.6L19,18Z";
var mdiFolderOutline = "M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z";
var mdiFolderPlus = "M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M15,9V12H12V14H15V17H17V14H20V12H17V9H15Z";
var mdiFolderPlusOutline = "M12 12H14V10H16V12H18V14H16V16H14V14H12V12M22 8V18C22 19.11 21.11 20 20 20H4C2.89 20 2 19.11 2 18V6C2 4.89 2.89 4 4 4H10L12 6H20C21.11 6 22 6.89 22 8M20 8H4V18H20V8Z";
var mdiFolderPound = "M15.25,13H17.25L16.75,15H14.75L15.25,13M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20A2,2 0 0,1 22,8M20,12H18.5L19,10H18L17.5,12H15.5L16,10H15L14.5,12H13V13H14.25L13.75,15H12V16H13.5L13,18H14L14.5,16H16.5L16,18H17L17.5,16H19V15H17.75L18.25,13H20V12Z";
var mdiFolderPoundOutline = "M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6M19,12V11H17.5L18,9H17L16.5,11H14.5L15,9H14L13.5,11H12V12H13.25L12.75,14H11V15H12.5L12,17H13L13.5,15H15.5L15,17H16L16.5,15H18V14H16.75L17.25,12H19M15.75,14H13.75L14.25,12H16.25L15.75,14Z";
var mdiFolderRefresh = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M10 4L12 6H20C21.1 6 22 6.89 22 8V13C21 12.38 19.79 12 18.5 12C14.91 12 12 14.91 12 18.5C12 19 12.06 19.5 12.17 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10Z";
var mdiFolderRefreshOutline = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.54 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M20 8H4V18H12L12 18.5C12 19 12.06 19.5 12.17 20H4C2.89 20 2 19.1 2 18L2 6C2 4.89 2.89 4 4 4H10L12 6H20C21.1 6 22 6.89 22 8V13C21.39 12.63 20.72 12.34 20 12.17V8Z";
var mdiFolderRemove = "M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M12.46,10.88L14.59,13L12.46,15.12L13.88,16.54L16,14.41L18.12,16.54L19.54,15.12L17.41,13L19.54,10.88L18.12,9.46L16,11.59L13.88,9.46L12.46,10.88Z";
var mdiFolderRemoveOutline = "M11.46 10.88L12.88 9.46L15 11.59L17.12 9.46L18.54 10.88L16.41 13L18.54 15.12L17.12 16.54L15 14.41L12.88 16.54L11.46 15.12L13.59 13L11.46 10.88M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H10L12 6H20C21.11 6 22 6.9 22 8M20 8H4V18H20V8Z";
var mdiFolderSearch = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14M9,4L11,6H19A2,2 0 0,1 21,8V11.81C19.83,10.69 18.25,10 16.5,10A6.5,6.5 0 0,0 10,16.5C10,17.79 10.37,19 11,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9Z";
var mdiFolderSearchOutline = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.75,18.21 20.31,18.9L23.39,22L22,23.39L18.88,20.32C18.19,20.75 17.37,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19A2.5,2.5 0 0,0 19,16.5A2.5,2.5 0 0,0 16.5,14M19,8H3V18H10.17C10.34,18.72 10.63,19.39 11,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.81C20.42,11.26 19.75,10.81 19,10.5V8Z";
var mdiFolderSettings = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15Z";
var mdiFolderSettingsOutline = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M4 8H20V18H4V8M7 22V24H9V22H7M11 22V24H13V22H11M15 22V24H17V22H15";
var mdiFolderStar = "M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M17.94,17L15,15.28L12.06,17L12.84,13.67L10.25,11.43L13.66,11.14L15,8L16.34,11.14L19.75,11.43L17.16,13.67L17.94,17Z";
var mdiFolderStarMultiple = "M2 6H0V20C0 21.11 .895 22 2 22H20V20H2V6M22 4H14L12 2H6C4.89 2 4 2.89 4 4V16C4 17.1 4.89 18 6 18H22C23.11 18 24 17.1 24 16V6C24 4.89 23.11 4 22 4M19.94 15L17 13.27L14.06 15L14.84 11.66L12.25 9.42L15.66 9.13L17 6L18.34 9.13L21.75 9.42L19.16 11.66L19.94 15Z";
var mdiFolderStarMultipleOutline = "M2 6V20H20V22H2C.895 22 0 21.11 0 20V6H2M12.78 10.05L15.81 9.79L17 7L18.19 9.79L21.22 10.05L18.92 12.04L19.61 15L17 13.47L14.39 15L15.08 12.04L12.78 10.05M24 6V16C24 17.11 23.11 18 22 18H6C4.9 18 4 17.11 4 16V4C4 2.89 4.9 2 6 2H12L14 4H22C23.11 4 24 4.9 24 6M22 6H6V16H22V6Z";
var mdiFolderStarOutline = "M10.78 12.05L13.81 11.79L15 9L16.19 11.79L19.22 12.05L16.92 14.04L17.61 17L15 15.47L12.39 17L13.08 14.04L10.78 12.05M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H10L12 6H20C21.11 6 22 6.9 22 8M20 8H4V18H20V8Z";
var mdiFolderSwap = "M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M15 16V14H9V16L6 13L9 10V12H15V10L18 13Z";
var mdiFolderSwapOutline = "M20 18H4V8H20M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M18 13L15 10V12H9V10L6 13L9 16V14H15V16Z";
var mdiFolderSync = "M10,4L12,6H20A2,2 0 0,1 22,8V11.5C21.23,11.18 20.39,11 19.5,11A6.5,6.5 0 0,0 13,17.5C13,18.39 13.18,19.23 13.5,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L19,23Z";
var mdiFolderSyncOutline = "M10,4L12,6H20A2,2 0 0,1 22,8V11.5C21.38,11.24 20.7,11.07 20,11V8H4V18H13C13.07,18.7 13.24,19.38 13.5,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M19,12V13.5A4,4 0 0,1 23,17.5C23,18.32 22.75,19.08 22.33,19.71L21.24,18.62C21.41,18.28 21.5,17.9 21.5,17.5A2.5,2.5 0 0,0 19,15V16.5L16.75,14.25L16.72,14.22C16.78,14.17 16.85,14.13 19,12M19,23V21.5A4,4 0 0,1 15,17.5C15,16.68 15.25,15.92 15.67,15.29L16.76,16.38C16.59,16.72 16.5,17.1 16.5,17.5A2.5,2.5 0 0,0 19,20V18.5L21.25,20.75L21.28,20.78C21.22,20.83 21.15,20.87 19,23Z";
var mdiFolderTable = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M12 9H15V11H12V9M16 9H19V11H16V9M12 12H15V14H12V12M16 12H19V14H16V12M12 15H15V17H12V15M16 15H19V17H16V15Z";
var mdiFolderTableOutline = "M4 4C2.89 4 2 4.89 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8C22 6.89 21.1 6 20 6H12L10 4H4M4 8H20V18H4V8M12 9V11H15V9H12M16 9V11H19V9H16M12 12V14H15V12H12M16 12V14H19V12H16M12 15V17H15V15H12M16 15V17H19V15H16Z";
var mdiFolderText = "M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M15,16H6V14H15V16M18,12H6V10H18V12Z";
var mdiFolderTextOutline = "M20,18H4V8H20M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M15,16H6V14H15V16M18,12H6V10H18V12Z";
var mdiFolderUpload = "M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75";
var mdiFolderUploadOutline = "M20 18H4V8H20M20 6H12L10 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V8A2 2 0 0 0 20 6M16 17H14V13H11L15 9L19 13H16Z";
var mdiFolderZip = "M20 6H12L10 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6M18 12H16V14H18V16H16V18H14V16H16V14H14V12H16V10H14V8H16V10H18V12Z";
var mdiFolderZipOutline = "M20 6H12L10 4H4C2.9 4 2 4.9 2 6V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6M20 18H16V16H14V18H4V8H14V10H16V8H20V18M16 12V10H18V12H16M14 12H16V14H14V12M18 16H16V14H18V16Z";
var mdiFontAwesome = "M19.76 2H4.24C3 2 2 3 2 4.24V19.76C2 21 3 22 4.24 22H19.76C21 22 22 21 22 19.76V4.24C22 3 21 2 19.76 2M17.73 14.69C17.73 14.88 17.57 14.96 17.38 15.04C16.64 15.36 15.84 15.65 15 15.65C13.78 15.65 13.22 14.91 11.78 14.91C10.74 14.91 9.65 15.28 8.77 15.68C8.71 15.71 8.66 15.71 8.61 15.73V17.76C8.61 17.84 8.61 17.92 8.58 17.97V18.03C8.47 18.4 8.13 18.67 7.73 18.67C7.22 18.67 6.82 18.26 6.82 17.76V8C6.47 7.73 6.24 7.31 6.24 6.83C6.24 6 6.9 5.33 7.73 5.33C8.56 5.33 9.23 6 9.23 6.83C9.23 7.31 9 7.73 8.64 8V8.83C8.72 8.8 8.8 8.77 8.88 8.72C9.71 8.37 10.7 8.08 11.63 8.08C12.64 8.08 13.44 8.35 14.35 8.69C14.54 8.77 14.72 8.8 14.93 8.8C15.95 8.8 17.07 8.08 17.34 8.08C17.55 8.08 17.74 8.24 17.74 8.43V14.69H17.73Z";
var mdiFood = "M15.5,21L14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.5,21H15.5M5,11H10A3,3 0 0,1 13,14H2A3,3 0 0,1 5,11M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13M3,15H8L9.5,16.5L11,15H12A1,1 0 0,1 13,16A1,1 0 0,1 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15Z";
var mdiFoodApple = "M20,10C22,13 17,22 15,22C13,22 13,21 12,21C11,21 11,22 9,22C7,22 2,13 4,10C6,7 9,7 11,8V5C5.38,8.07 4.11,3.78 4.11,3.78C4.11,3.78 6.77,0.19 11,5V3H13V8C15,7 18,7 20,10Z";
var mdiFoodAppleOutline = "M20,10C18.58,7.57 15.5,6.69 13,8V3H11V8C8.5,6.69 5.42,7.57 4,10C2,13 7,22 9,22C11,22 11,21 12,21C13,21 13,22 15,22C17,22 22,13 20,10M18.25,13.38C17.63,15.85 16.41,18.12 14.7,20C14.5,20 14.27,19.9 14.1,19.75C12.87,18.76 11.13,18.76 9.9,19.75C9.73,19.9 9.5,20 9.3,20C7.59,18.13 6.36,15.85 5.75,13.39C5.5,12.66 5.45,11.87 5.66,11.12C6.24,10.09 7.32,9.43 8.5,9.4C9.06,9.41 9.61,9.54 10.11,9.79L11,10.24H13L13.89,9.79C14.39,9.54 14.94,9.41 15.5,9.4C16.68,9.43 17.76,10.08 18.34,11.11C18.55,11.86 18.5,12.65 18.25,13.38M11,5C5.38,8.07 4.11,3.78 4.11,3.78C4.11,3.78 6.77,0.19 11,5Z";
var mdiFoodCroissant = "M22,19L19,17L22,15V19M15,15L19,9L22,13L18,16L15,15M5,17L2,19V15L5,17M9,15L6,16L2,13L5,9L9,15M14,6L18,8L13,15H11L6,8L10,6H14Z";
var mdiFoodDrumstick = "M20.16 12.73C22.93 9.96 22.57 5.26 19.09 3C17.08 1.67 14.39 1.66 12.36 2.97C10.6 4.1 9.63 5.86 9.46 7.68C9.33 9 8.83 10.23 7.91 11.15L7.88 11.18C6.72 12.34 6.72 14.11 7.81 15.19L8.8 16.18C9.89 17.27 11.66 17.27 12.75 16.18C13.72 15.21 15 14.68 16.39 14.53C17.76 14.38 19.1 13.78 20.16 12.73M6.26 19.86C6.53 20.42 6.44 21.1 5.97 21.56C5.39 22.15 4.44 22.15 3.85 21.56C3.58 21.29 3.44 20.94 3.42 20.58C3.06 20.56 2.71 20.42 2.44 20.15C1.85 19.56 1.85 18.61 2.44 18.03C2.9 17.57 3.59 17.47 4.14 17.74L6.62 15.31C6.76 15.5 6.92 15.72 7.1 15.9L8.09 16.89C8.3 17.09 8.5 17.26 8.76 17.41L6.26 19.86Z";
var mdiFoodDrumstickOff = "M20.8 22.7L13.6 15.5C13.3 15.7 13 15.9 12.7 16.2C11.6 17.3 9.8 17.3 8.7 16.2L7.7 15.2C6.6 14.1 6.6 12.3 7.8 11.2C8 11 8.2 10.7 8.4 10.4L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M8.1 16.9L7.1 15.9C6.9 15.7 6.8 15.5 6.6 15.3L4.1 17.7C3.5 17.4 2.9 17.5 2.4 18C1.8 18.6 1.8 19.5 2.4 20.1C2.7 20.4 3 20.5 3.4 20.5C3.4 20.9 3.6 21.2 3.8 21.5C4.4 22.1 5.3 22.1 5.9 21.5C6.4 21 6.5 20.4 6.2 19.8L8.7 17.4C8.5 17.3 8.3 17.1 8.1 16.9M20.2 12.7C23 9.9 22.6 5.2 19.1 3C17.1 1.7 14.4 1.7 12.4 3C11 3.9 10.1 5.1 9.7 6.5L17.5 14.3C18.5 14 19.4 13.5 20.2 12.7Z";
var mdiFoodDrumstickOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L8.5 10.4C8.3 10.7 8.1 10.9 7.9 11.2C6.7 12.4 6.7 14.1 7.8 15.2L8.8 16.2C9.3 16.7 10.1 17 10.8 17C11.5 17 12.2 16.7 12.8 16.2C13.1 15.9 13.4 15.7 13.7 15.5L20.9 22.7L22.1 21.5M11.3 14.8C11.1 15 10.9 15 10.8 15S10.4 15 10.2 14.8L9.2 13.8C9 13.6 9 13.4 9 13.2C9 13 9.1 12.7 9.3 12.5C9.5 12.3 9.7 12 9.9 11.8L12.1 14C11.9 14.3 11.6 14.5 11.3 14.8M11.4 8.2L9.7 6.5C10.1 5.1 11 3.9 12.4 3C13.4 2.4 14.6 2 15.7 2C16.9 2 18.1 2.3 19.1 3C22.6 5.3 22.9 10 20.2 12.7C19.4 13.5 18.5 14 17.5 14.3L15.8 12.6C15.9 12.6 16 12.5 16.2 12.5C17.2 12.4 18.1 12 18.8 11.3C19.7 10.4 20.2 9.1 20 7.8C19.9 6.5 19.2 5.4 18 4.6C17.3 4.2 16.5 4 15.7 4C14.9 4 14.1 4.2 13.4 4.7C12.2 5.4 11.5 6.6 11.4 7.9V8.2M8.8 17.4L6.3 19.8C6.6 20.4 6.5 21 6 21.5C5.4 22.1 4.5 22.1 3.9 21.5C3.6 21.2 3.5 20.9 3.5 20.5C3.1 20.5 2.8 20.3 2.5 20.1C1.9 19.5 1.9 18.6 2.5 18C3 17.5 3.6 17.4 4.2 17.7L6.7 15.3C6.8 15.5 7 15.7 7.2 15.9L8.2 16.9C8.3 17.1 8.5 17.3 8.8 17.4";
var mdiFoodDrumstickOutline = "M15.71 4C16.54 4 17.33 4.22 18 4.66C19.14 5.4 19.84 6.53 20 7.84C20.11 9.13 19.66 10.4 18.75 11.31C18.05 12 17.16 12.44 16.18 12.54C14.27 12.74 12.59 13.5 11.34 14.77C11.13 14.97 10.9 15 10.77 15C10.65 15 10.42 14.97 10.21 14.77L9.22 13.78C9.04 13.6 9 13.39 9 13.25C9 13 9.11 12.78 9.32 12.57C10.53 11.35 11.27 9.73 11.45 7.87C11.58 6.54 12.29 5.4 13.45 4.65C14.11 4.22 14.89 4 15.71 4M15.71 2C14.54 2 13.37 2.32 12.36 2.97C10.6 4.1 9.63 5.86 9.46 7.68C9.33 9 8.83 10.23 7.91 11.15L7.88 11.18C6.72 12.34 6.72 14.11 7.81 15.19L8.8 16.18C9.35 16.73 10.06 17 10.77 17S12.2 16.73 12.75 16.18C13.72 15.21 15 14.68 16.39 14.53C17.76 14.38 19.1 13.78 20.16 12.73C22.93 9.96 22.57 5.26 19.09 3C18.08 2.33 16.9 2 15.71 2M6.26 19.86C6.53 20.42 6.44 21.1 5.97 21.56C5.39 22.15 4.44 22.15 3.85 21.56C3.58 21.29 3.44 20.94 3.42 20.58C3.06 20.56 2.71 20.42 2.44 20.15C1.85 19.56 1.85 18.61 2.44 18.03C2.9 17.57 3.59 17.47 4.14 17.74L6.62 15.31C6.76 15.5 6.92 15.72 7.1 15.9L8.09 16.89C8.3 17.09 8.5 17.26 8.76 17.41L6.26 19.86Z";
var mdiFoodForkDrink = "M3,3A1,1 0 0,0 2,4V8L2,9.5C2,11.19 3.03,12.63 4.5,13.22V19.5A1.5,1.5 0 0,0 6,21A1.5,1.5 0 0,0 7.5,19.5V13.22C8.97,12.63 10,11.19 10,9.5V8L10,4A1,1 0 0,0 9,3A1,1 0 0,0 8,4V8A0.5,0.5 0 0,1 7.5,8.5A0.5,0.5 0 0,1 7,8V4A1,1 0 0,0 6,3A1,1 0 0,0 5,4V8A0.5,0.5 0 0,1 4.5,8.5A0.5,0.5 0 0,1 4,8V4A1,1 0 0,0 3,3M19.88,3C19.75,3 19.62,3.09 19.5,3.16L16,5.25V9H12V11H13L14,21H20L21,11H22V9H18V6.34L20.5,4.84C21,4.56 21.13,4 20.84,3.5C20.63,3.14 20.26,2.95 19.88,3Z";
var mdiFoodHalal = "M7 5V15C7 16.11 6.11 17 5 17H4C3.45 17 3 16.55 3 16V13H1V16C1 17.66 2.34 19 4 19H5C7.21 19 9 17.21 9 15V5M23 13.38L21.77 12.15C21.03 11.41 20.04 11 19 11H17V13H19C19.5 13 20 13.2 20.35 13.56L20.7 13.91L19.5 14.6C19.04 14.86 18.53 15 18 15H17C16.44 15 16 14.56 16 14V6H14V9.81L13.38 9.12C12.7 8.37 11.6 8 10.59 8H10V10H10.59C11.23 10 11.84 10.25 12.29 10.71L14 12.41V14C14 15.12 13.12 16 12 16H10V18H12C13.37 18 14.5 17.3 15.17 16.24C15.63 16.71 16.25 17 17 17H18C18.88 17 19.74 16.77 20.5 16.33L23 14.89Z";
var mdiFoodKosher = "M1 7V9H3C3.57 9 4 9.43 4 10V17H6V10C6 8.36 4.64 7 3 7H1M7 7V14C7 15.65 8.36 17 10 17H14C15.65 17 17 15.65 17 14V7H15V14C15 14.57 14.57 15 14 15H10C9.43 15 9 14.57 9 14V13H10C11.65 13 13 11.65 13 10V7H11V10C11 10.57 10.57 11 10 11H9V7H7M18 7V9H20C20.57 9 21 9.43 21 10V14C21 14.57 20.57 15 20 15H18V17H20C21.65 17 23 15.65 23 14V10C23 8.36 21.65 7 20 7H18Z";
var mdiFoodOff = "M2,5.27L3.28,4L21,21.72L19.73,23L17.73,21H15.5L15.21,18.5L12.97,16.24C12.86,16.68 12.47,17 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15H8L9.5,16.5L11,15H11.73L10.73,14H2A3,3 0 0,1 5,11H7.73L2,5.27M14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.74,18.92L14.54,12.72L14,8M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13Z";
var mdiFoodSteak = "M11.9 2C8 2 4.9 5.4 5 9.3C5.1 11.9 6.6 14.1 8.7 15.2C10.1 15.9 11 17.3 11 18.8V19C11 20.7 12.3 22 14 22C18 22 19 17 19 9C19 9 19 2 11.9 2M14 20C13.4 20 13 19.6 13 19V18.8C13 16.6 11.7 14.5 9.7 13.4C8.1 12.6 7.1 11 7 9.2C7 7.9 7.5 6.5 8.4 5.5C9.3 4.5 10.6 4 11.8 4C16.7 4 17 8.2 17 9C17 18.9 15.3 20 14 20M15.8 7.6L8.3 10.3C8.1 10 8 9.6 8 9.1C8 8.4 8.2 7.8 8.5 7.1L13.7 5.2C14.9 5.8 15.5 6.7 15.8 7.6M12.9 15.1L15.7 14.1C15.6 15.6 15.3 16.7 15.1 17.4L13.8 17.9C13.8 16.9 13.5 16 12.9 15.1M16 9.2C16 10.4 16 11.5 15.9 12.4L11.9 13.9C11.4 13.4 10.8 12.9 10.1 12.6C9.7 12.4 9.3 12.1 9 11.8L16 9.2Z";
var mdiFoodSteakOff = "M2.39 1.73L1.11 3L5.27 7.16C5.08 7.83 5 8.53 5 9.26C5.1 11.83 6.59 14.05 8.74 15.19C10.1 15.9 11 17.25 11 18.79V19C11 20.66 12.34 22 14 22C15.68 22 16.83 21.11 17.6 19.5L20.84 22.73L22.11 21.46L2.39 1.73M14 20C13.45 20 13 19.55 13 19V18.79C13 16.56 11.72 14.5 9.67 13.42C8.09 12.58 7.07 10.96 7 9.18C7 9.09 7 9 7 8.9L8.16 10.05C8.19 10.15 8.21 10.25 8.24 10.35L8.4 10.29L9.62 11.5L9.08 11.71C9.38 12.04 9.73 12.32 10.14 12.53C10.81 12.89 11.4 13.34 11.91 13.85L11.95 13.84L13.17 15.06L12.95 15.14C13.46 15.96 13.8 16.89 13.93 17.85L15.2 17.39C15.22 17.32 15.25 17.24 15.27 17.16L16.07 17.96C15.47 19.68 14.68 20 14 20M15.79 7.6L12.14 8.94L9.88 6.68L13.69 5.3C14.94 5.77 15.53 6.72 15.79 7.6M8.59 5.39L7.17 3.97C8.41 2.77 10.07 2 11.88 2H11.88C19 2 19 9 19 9C19 11.46 18.9 13.63 18.66 15.46L16.84 13.64C16.94 12.36 17 10.83 17 9C17 8.18 16.69 4 11.88 4H11.88C10.67 4 9.5 4.5 8.59 5.39M15.68 12.5L13.36 10.15L16 9.19C16 10.41 15.97 11.46 15.92 12.4L15.68 12.5Z";
var mdiFoodTurkey = "M5.44 7.96L5.96 7.43C6.54 6.85 7.5 6.85 8.1 7.47L8.12 7.5C8.61 8 9.26 8.24 9.97 8.31C10.94 8.4 11.88 8.92 12.5 9.86C13.18 10.94 13.17 12.38 12.46 13.45C11.26 15.3 8.75 15.5 7.28 14C6.72 13.45 6.4 12.74 6.32 12C6.24 11.27 5.95 10.58 5.44 10.07C4.86 9.5 4.86 8.54 5.44 7.96M9.64 16C8.47 16 7.38 15.55 6.57 14.72C5.87 14 5.43 13.1 5.32 12.12C5.29 11.82 5.2 11.43 4.96 11.07C4.36 11.9 4 12.9 4 14C4 15.64 4.8 17.09 6.03 18H19V17C19 13.4 16.61 10.35 13.34 9.35C14.23 10.75 14.21 12.62 13.3 14C12.5 15.25 11.12 16 9.64 16M14.78 7.56H16.05C16.92 7.56 17.68 8.17 17.68 9.26V10H18.93V9C18.93 7.5 17.6 6.36 16.05 6.36H14.78C13.95 6.36 13.24 5.54 13.24 4.7S13.95 3.24 14.78 3.24V2C13.24 2 12 3.24 12 4.78S13.24 7.56 14.78 7.56M4.5 7.55C4.56 7.45 4.64 7.35 4.73 7.25L5.25 6.73C5.34 6.64 5.44 6.57 5.54 6.5L4.13 5.07C4.27 4.8 4.22 4.45 4 4.22C3.7 3.93 3.22 3.93 2.93 4.22C2.79 4.36 2.72 4.53 2.71 4.71C2.53 4.72 2.36 4.79 2.22 4.93C1.93 5.22 1.93 5.7 2.22 6C2.45 6.22 2.79 6.27 3.07 6.13L4.5 7.55M18.39 4.39C18.9 3.88 19.22 3.19 19.22 2.42H17.97C17.97 3.25 17.27 3.95 16.44 3.95V5.19C18.3 5.19 19.76 6.71 19.76 8.57V11H21V8.57C21 6.72 19.94 5.13 18.39 4.39M5 21H19C20.11 21 21 20.11 21 19H3C3 20.11 3.9 21 5 21Z";
var mdiFoodVariant = "M22,18A4,4 0 0,1 18,22H15A4,4 0 0,1 11,18V16H17.79L20.55,11.23L22.11,12.13L19.87,16H22V18M9,22H2C2,19 2,16 2.33,12.83C2.6,10.3 3.08,7.66 3.6,5H3V3H4L7,3H8V5H7.4C7.92,7.66 8.4,10.3 8.67,12.83C9,16 9,19 9,22Z";
var mdiFoodVariantOff = "M2.28 3L1 4.27L3.31 6.58C2.91 8.7 2.55 10.8 2.33 12.83C2 16 2 19 2 22H9C9 19 9 16 8.67 12.83C8.63 12.5 8.58 12.15 8.54 11.81L12.73 16H11V18C11 20.21 12.79 22 15 22H18C18.23 22 18.45 22 18.67 21.94L19.73 23L21 21.72M4.82 3L7.53 5.71C7.5 5.47 7.45 5.24 7.4 5H8V3H7M20.55 11.23L17.8 16L21.59 19.76C21.86 19.21 22 18.61 22 18V16H19.87L22.11 12.13Z";
var mdiFootPrint = "M16 2A2 2 0 1 1 14 4A2 2 0 0 1 16 2M12.04 3A1.5 1.5 0 1 1 10.54 4.5A1.5 1.5 0 0 1 12.04 3M9.09 4.5A1 1 0 1 1 8.09 5.5A1 1 0 0 1 9.09 4.5M7.04 6A1 1 0 1 1 6.04 7A1 1 0 0 1 7.04 6M14.53 12A2.5 2.5 0 0 0 17 9.24A2.6 2.6 0 0 0 14.39 7H11.91A6 6 0 0 0 6.12 11.4A2 2 0 0 0 6.23 12.8A6.8 6.8 0 0 1 6.91 15.76A6.89 6.89 0 0 1 6.22 18.55A1.92 1.92 0 0 0 6.3 20.31A3.62 3.62 0 0 0 10.19 21.91A3.5 3.5 0 0 0 12.36 16.63A2.82 2.82 0 0 1 11.91 15S11.68 12 14.53 12Z";
var mdiFootball = "M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C15.46,3.67 17.5,3.83 18.6,4C19.71,4.15 19.87,4.31 20.03,5.41C20.18,6.5 20.33,8.55 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C8.55,20.33 6.5,20.18 5.41,20.03C4.31,19.87 4.15,19.71 4,18.6C3.83,17.5 3.67,15.46 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M7.3,15.79L8.21,16.7L9.42,15.5L10.63,16.7L11.54,15.79L10.34,14.58L12,12.91L13.21,14.12L14.12,13.21L12.91,12L14.58,10.34L15.79,11.54L16.7,10.63L15.5,9.42L16.7,8.21L15.79,7.3L14.58,8.5L13.37,7.3L12.46,8.21L13.66,9.42L12,11.09L10.79,9.88L9.88,10.79L11.09,12L9.42,13.66L8.21,12.46L7.3,13.37L8.5,14.58L7.3,15.79Z";
var mdiFootballAustralian = "M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C18,3 21,6 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C6,21 3,18 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M10.62,11.26L10.26,11.62L12.38,13.74L12.74,13.38L10.62,11.26M11.62,10.26L11.26,10.62L13.38,12.74L13.74,12.38L11.62,10.26M9.62,12.26L9.26,12.62L11.38,14.74L11.74,14.38L9.62,12.26M12.63,9.28L12.28,9.63L14.4,11.75L14.75,11.4L12.63,9.28M8.63,13.28L8.28,13.63L10.4,15.75L10.75,15.4L8.63,13.28M13.63,8.28L13.28,8.63L15.4,10.75L15.75,10.4L13.63,8.28Z";
var mdiFootballHelmet = "M13.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,15A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 13.5,12M13.5,3C18.19,3 22,6.58 22,11C22,12.62 22,14 21.09,16C17,16 16,20 12.5,20C10.32,20 9.27,18.28 9.05,16H9L8.24,16L6.96,20.3C6.81,20.79 6.33,21.08 5.84,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19V16A1,1 0 0,1 2,15A1,1 0 0,1 3,14H6.75L7.23,12.39C6.72,12.14 6.13,12 5.5,12H5.07L5,11C5,6.58 8.81,3 13.5,3M5,16V19H5.26L6.15,16H5Z";
var mdiForklift = "M6,4V11H4C2.89,11 2,11.89 2,13V17A3,3 0 0,0 5,20A3,3 0 0,0 8,17H10A3,3 0 0,0 13,20A3,3 0 0,0 16,17V13L12,4H6M17,5V19H22V17.5H18.5V5H17M7.5,5.5H11.2L14.5,13H7.5V5.5M5,15.5A1.5,1.5 0 0,1 6.5,17A1.5,1.5 0 0,1 5,18.5A1.5,1.5 0 0,1 3.5,17A1.5,1.5 0 0,1 5,15.5M13,15.5A1.5,1.5 0 0,1 14.5,17A1.5,1.5 0 0,1 13,18.5A1.5,1.5 0 0,1 11.5,17A1.5,1.5 0 0,1 13,15.5Z";
var mdiFormDropdown = "M17 5H20L18.5 7L17 5M3 2H21C22.11 2 23 2.9 23 4V8C23 9.11 22.11 10 21 10H16V20C16 21.11 15.11 22 14 22H3C1.9 22 1 21.11 1 20V4C1 2.9 1.9 2 3 2M3 4V8H14V4H3M21 8V4H16V8H21M3 20H14V10H3V20M5 12H12V14H5V12M5 16H12V18H5V16Z";
var mdiFormSelect = "M15 5H18L16.5 7L15 5M5 2H19C20.11 2 21 2.9 21 4V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V4C3 2.9 3.9 2 5 2M5 4V8H19V4H5M5 20H19V10H5V20M7 12H17V14H7V12M7 16H17V18H7V16Z";
var mdiFormTextarea = "M13 9H4V23H2V7H13M23 9V7H17V5A1 1 0 0 1 18 4H20V2H17.5C17 2 16 2.45 16 3C16 2.45 15.05 2 14.5 2H12V4H14A1 1 0 0 1 15 5V19A1 1 0 0 1 14 20H12V22H14.5C15.05 22 16 21.55 16 21C16 21.55 16.95 22 17.5 22H20V20H18A1 1 0 0 1 17 19V9Z";
var mdiFormTextbox = "M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20Z";
var mdiFormTextboxLock = "M2 7H6V9H4V15H6V17H2V7M10 7H22V12C21.42 11.56 20.74 11.25 20 11.1V9H10V15H14.25C13.56 15 13 15.56 13 16.25V17H10V19C10 19.55 10.45 20 11 20H13V22H10.5C9.95 22 9 21.55 9 21C9 21.55 8.05 22 7.5 22H5V20H7C7.55 20 8 19.55 8 19V5C8 4.45 7.55 4 7 4H5V2H7.5C8.05 2 9 2.45 9 3C9 2.45 9.95 2 10.5 2H13V4H11C10.45 4 10 4.45 10 5V7M21.8 17C22.4 17 23 17.6 23 18.3V21.8C23 22.4 22.4 23 21.7 23H16.2C15.6 23 15 22.4 15 21.7V18.2C15 17.6 15.6 17 16.2 17V15.5C16.2 14.1 17.6 13 19 13C20.4 13 21.8 14.1 21.8 15.5V17M20.5 17V15.5C20.5 14.7 19.8 14.2 19 14.2C18.2 14.2 17.5 14.7 17.5 15.5V17H20.5Z";
var mdiFormTextboxPassword = "M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20M8.5,12A1.5,1.5 0 0,0 7,10.5A1.5,1.5 0 0,0 5.5,12A1.5,1.5 0 0,0 7,13.5A1.5,1.5 0 0,0 8.5,12M13,10.89C12.39,10.33 11.44,10.38 10.88,11C10.32,11.6 10.37,12.55 11,13.11C11.55,13.63 12.43,13.63 13,13.11V10.89Z";
var mdiFormatAlignBottom = "M13,9L15.5,6.5L16.92,7.92L12,12.84L7.08,7.92L8.5,6.5L11,9V3H13V9M3,15H21V17H3V15M3,19H13V21H3V19Z";
var mdiFormatAlignCenter = "M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z";
var mdiFormatAlignJustify = "M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z";
var mdiFormatAlignLeft = "M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z";
var mdiFormatAlignMiddle = "M13,6L15,4L16.42,5.42L12,9.84L7.58,5.42L9,4L11,6V2H13V6M3,11H21V13H3V11M13,18V22H11V18L9,20L7.58,18.58L12,14.16L16.42,18.58L15,20L13,18Z";
var mdiFormatAlignRight = "M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z";
var mdiFormatAlignTop = "M13,15L15.5,17.5L16.92,16.08L12,11.16L7.08,16.08L8.5,17.5L11,15V21H13V15M3,3H21V5H3V3M3,7H13V9H3V7Z";
var mdiFormatAnnotationMinus = "M10.5,7H8.5L3,21H5.2L6.3,18H12.5L13.6,21H16L10.5,7M7.1,16L9.5,9.7L11.9,16H7.1M22,7H14V5H22V7Z";
var mdiFormatAnnotationPlus = "M8.5,7H10.5L16,21H13.6L12.5,18H6.3L5.2,21H3L8.5,7M7.1,16H11.9L9.5,9.7L7.1,16M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z";
var mdiFormatBold = "M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z";
var mdiFormatClear = "M6,5V5.18L8.82,8H11.22L10.5,9.68L12.6,11.78L14.21,8H20V5H6M3.27,5L2,6.27L8.97,13.24L6.5,19H9.5L11.07,15.34L16.73,21L18,19.73L3.55,5.27L3.27,5Z";
var mdiFormatColorFill = "M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z";
var mdiFormatColorHighlight = "M4,17L6.75,14.25L6.72,14.23C6.14,13.64 6.14,12.69 6.72,12.11L11.46,7.37L15.7,11.61L10.96,16.35C10.39,16.93 9.46,16.93 8.87,16.37L8.24,17H4M15.91,2.91C16.5,2.33 17.45,2.33 18.03,2.91L20.16,5.03C20.74,5.62 20.74,6.57 20.16,7.16L16.86,10.45L12.62,6.21L15.91,2.91Z";
var mdiFormatColorMarkerCancel = "M16.5 8C14 8 12 10 12 12.5S14 17 16.5 17 21 15 21 12.5 19 8 16.5 8M16.5 15.5C14.8 15.5 13.5 14.2 13.5 12.5C13.5 11.9 13.7 11.4 13.9 11L18 15.1C17.6 15.3 17.1 15.5 16.5 15.5M19.1 14L15 9.9C15.4 9.6 15.9 9.5 16.5 9.5C18.2 9.5 19.5 10.8 19.5 12.5C19.5 13.1 19.3 13.6 19.1 14M12.1 7.7L10.6 6.2L13.9 2.9C14.5 2.3 15.4 2.3 16 2.9L18.2 5C18.6 5.4 18.7 5.8 18.6 6.3C18 6.1 17.3 6 16.6 6C14.8 6 13.3 6.7 12.1 7.7M10.5 14.9L9 16.3C8.4 16.9 7.5 16.9 6.9 16.3L6.2 17H2L4.8 14.2C4.2 13.6 4.2 12.7 4.8 12.1L9.5 7.4L11.1 9C10.4 10 10 11.2 10 12.5C10 13.3 10.2 14.1 10.5 14.9Z";
var mdiFormatColorText = "M9.62,12L12,5.67L14.37,12M11,3L5.5,17H7.75L8.87,14H15.12L16.25,17H18.5L13,3H11Z";
var mdiFormatColumns = "M3,3H11V5H3V3M13,3H21V5H13V3M3,7H11V9H3V7M13,7H21V9H13V7M3,11H11V13H3V11M13,11H21V13H13V11M3,15H11V17H3V15M13,15H21V17H13V15M3,19H11V21H3V19M13,19H21V21H13V19Z";
var mdiFormatFloatCenter = "M9,7H15V13H9V7M3,3H21V5H3V3M3,15H21V17H3V15M3,19H17V21H3V19Z";
var mdiFormatFloatLeft = "M3,7H9V13H3V7M3,3H21V5H3V3M21,7V9H11V7H21M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z";
var mdiFormatFloatNone = "M3,7H9V13H3V7M3,3H21V5H3V3M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z";
var mdiFormatFloatRight = "M15,7H21V13H15V7M3,3H21V5H3V3M13,7V9H3V7H13M9,11V13H3V11H9M3,15H17V17H3V15M3,19H21V21H3V19Z";
var mdiFormatFont = "M17,8H20V20H21V21H17V20H18V17H14L12.5,20H14V21H10V20H11L17,8M18,9L14.5,16H18V9M5,3H10C11.11,3 12,3.89 12,5V16H9V11H6V16H3V5C3,3.89 3.89,3 5,3M6,5V9H9V5H6Z";
var mdiFormatFontSizeDecrease = "M5.12,14L7.5,7.67L9.87,14M6.5,5L1,19H3.25L4.37,16H10.62L11.75,19H14L8.5,5H6.5M18,17L23,11.93L21.59,10.5L19,13.1V7H17V13.1L14.41,10.5L13,11.93L18,17Z";
var mdiFormatFontSizeIncrease = "M5.12,14L7.5,7.67L9.87,14M6.5,5L1,19H3.25L4.37,16H10.62L11.75,19H14L8.5,5H6.5M18,7L13,12.07L14.41,13.5L17,10.9V17H19V10.9L21.59,13.5L23,12.07L18,7Z";
var mdiFormatHeader1 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M14,18V16H16V6.31L13.5,7.75V5.44L16,4H18V16H20V18H14Z";
var mdiFormatHeader2 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M21,18H15A2,2 0 0,1 13,16C13,15.47 13.2,15 13.54,14.64L18.41,9.41C18.78,9.05 19,8.55 19,8A2,2 0 0,0 17,6A2,2 0 0,0 15,8H13A4,4 0 0,1 17,4A4,4 0 0,1 21,8C21,9.1 20.55,10.1 19.83,10.83L15,16H21V18Z";
var mdiFormatHeader3 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V15H15V16H19V12H15V10H19V6H15V7H13V6A2,2 0 0,1 15,4Z";
var mdiFormatHeader4 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M18,18V13H13V11L18,4H20V11H21V13H20V18H18M18,11V7.42L15.45,11H18Z";
var mdiFormatHeader5 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H20V6H15V10H17A4,4 0 0,1 21,14A4,4 0 0,1 17,18H15A2,2 0 0,1 13,16V15H15V16H17A2,2 0 0,0 19,14A2,2 0 0,0 17,12H15A2,2 0 0,1 13,10V6A2,2 0 0,1 15,4Z";
var mdiFormatHeader6 = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V7H19V6H15V10H19A2,2 0 0,1 21,12V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V6A2,2 0 0,1 15,4M15,12V16H19V12H15Z";
var mdiFormatHeaderDecrease = "M4,4H6V10H10V4H12V18H10V12H6V18H4V4M20.42,7.41L16.83,11L20.42,14.59L19,16L14,11L19,6L20.42,7.41Z";
var mdiFormatHeaderEqual = "M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14,10V8H21V10H14M14,12H21V14H14V12Z";
var mdiFormatHeaderIncrease = "M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14.59,7.41L18.17,11L14.59,14.59L16,16L21,11L16,6L14.59,7.41Z";
var mdiFormatHeaderPound = "M3,4H5V10H9V4H11V18H9V12H5V18H3V4M13,8H15.31L15.63,5H17.63L17.31,8H19.31L19.63,5H21.63L21.31,8H23V10H21.1L20.9,12H23V14H20.69L20.37,17H18.37L18.69,14H16.69L16.37,17H14.37L14.69,14H13V12H14.9L15.1,10H13V8M17.1,10L16.9,12H18.9L19.1,10H17.1Z";
var mdiFormatHorizontalAlignCenter = "M19,16V13H23V11H19V8L15,12L19,16M5,8V11H1V13H5V16L9,12L5,8M11,20H13V4H11V20Z";
var mdiFormatHorizontalAlignLeft = "M11,16V13H21V11H11V8L7,12L11,16M3,20H5V4H3V20Z";
var mdiFormatHorizontalAlignRight = "M13,8V11H3V13H13V16L17,12L13,8M19,20H21V4H19V20Z";
var mdiFormatIndentDecrease = "M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M3,21H21V19H3M3,12L7,16V8M11,17H21V15H11V17Z";
var mdiFormatIndentIncrease = "M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M11,17H21V15H11M3,8V16L7,12M3,21H21V19H3V21Z";
var mdiFormatItalic = "M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z";
var mdiFormatLetterCase = "M20.06,18C20,17.83 19.91,17.54 19.86,17.11C19.19,17.81 18.38,18.16 17.45,18.16C16.62,18.16 15.93,17.92 15.4,17.45C14.87,17 14.6,16.39 14.6,15.66C14.6,14.78 14.93,14.1 15.6,13.61C16.27,13.12 17.21,12.88 18.43,12.88H19.83V12.24C19.83,11.75 19.68,11.36 19.38,11.07C19.08,10.78 18.63,10.64 18.05,10.64C17.53,10.64 17.1,10.76 16.75,11C16.4,11.25 16.23,11.54 16.23,11.89H14.77C14.77,11.46 14.92,11.05 15.22,10.65C15.5,10.25 15.93,9.94 16.44,9.71C16.95,9.5 17.5,9.36 18.13,9.36C19.11,9.36 19.87,9.6 20.42,10.09C20.97,10.58 21.26,11.25 21.28,12.11V16C21.28,16.8 21.38,17.42 21.58,17.88V18H20.06M17.66,16.88C18.11,16.88 18.54,16.77 18.95,16.56C19.35,16.35 19.65,16.07 19.83,15.73V14.16H18.7C16.93,14.16 16.04,14.63 16.04,15.57C16.04,16 16.19,16.3 16.5,16.53C16.8,16.76 17.18,16.88 17.66,16.88M5.46,13.71H9.53L7.5,8.29L5.46,13.71M6.64,6H8.36L13.07,18H11.14L10.17,15.43H4.82L3.86,18H1.93L6.64,6Z";
var mdiFormatLetterCaseLower = "M20.06,18C20,17.83 19.91,17.54 19.86,17.11C19.19,17.81 18.38,18.16 17.45,18.16C16.62,18.16 15.93,17.92 15.4,17.45C14.87,17 14.6,16.39 14.6,15.66C14.6,14.78 14.93,14.1 15.6,13.61C16.27,13.12 17.21,12.88 18.43,12.88H19.83V12.24C19.83,11.75 19.68,11.36 19.38,11.07C19.08,10.78 18.63,10.64 18.05,10.64C17.53,10.64 17.1,10.76 16.75,11C16.4,11.25 16.23,11.54 16.23,11.89H14.77C14.77,11.46 14.92,11.05 15.22,10.65C15.5,10.25 15.93,9.94 16.44,9.71C16.95,9.5 17.5,9.36 18.13,9.36C19.11,9.36 19.87,9.6 20.42,10.09C20.97,10.58 21.26,11.25 21.28,12.11V16C21.28,16.8 21.38,17.42 21.58,17.88V18H20.06M17.66,16.88C18.11,16.88 18.54,16.77 18.95,16.56C19.35,16.35 19.65,16.07 19.83,15.73V14.16H18.7C16.93,14.16 16.04,14.63 16.04,15.57C16.04,16 16.19,16.3 16.5,16.53C16.8,16.76 17.18,16.88 17.66,16.88M5.46,13.71H9.53L7.5,8.29L5.46,13.71M6.64,6H8.36L13.07,18H11.14L10.17,15.43H4.82L3.86,18H1.93L6.64,6M22,20V22H14.5V20H22Z";
var mdiFormatLetterCaseUpper = "M20.06,18C20,17.83 19.91,17.54 19.86,17.11C19.19,17.81 18.38,18.16 17.45,18.16C16.62,18.16 15.93,17.92 15.4,17.45C14.87,17 14.6,16.39 14.6,15.66C14.6,14.78 14.93,14.1 15.6,13.61C16.27,13.12 17.21,12.88 18.43,12.88H19.83V12.24C19.83,11.75 19.68,11.36 19.38,11.07C19.08,10.78 18.63,10.64 18.05,10.64C17.53,10.64 17.1,10.76 16.75,11C16.4,11.25 16.23,11.54 16.23,11.89H14.77C14.77,11.46 14.92,11.05 15.22,10.65C15.5,10.25 15.93,9.94 16.44,9.71C16.95,9.5 17.5,9.36 18.13,9.36C19.11,9.36 19.87,9.6 20.42,10.09C20.97,10.58 21.26,11.25 21.28,12.11V16C21.28,16.8 21.38,17.42 21.58,17.88V18H20.06M17.66,16.88C18.11,16.88 18.54,16.77 18.95,16.56C19.35,16.35 19.65,16.07 19.83,15.73V14.16H18.7C16.93,14.16 16.04,14.63 16.04,15.57C16.04,16 16.19,16.3 16.5,16.53C16.8,16.76 17.18,16.88 17.66,16.88M5.46,13.71H9.53L7.5,8.29L5.46,13.71M6.64,6H8.36L13.07,18H11.14L10.17,15.43H4.82L3.86,18H1.93L6.64,6M2,20H13V22H2V20Z";
var mdiFormatLetterEndsWith = "M11.14 4L6.43 16H8.36L9.32 13.43H14.67L15.64 16H17.57L12.86 4M12 6.29L14.03 11.71H9.96M20 14V18H2V20H22V14Z";
var mdiFormatLetterMatches = "M11.14 4L6.43 16H8.36L9.32 13.43H14.67L15.64 16H17.57L12.86 4M12 6.29L14.03 11.71H9.96M20 14V18H4V15H2V20H22V14Z";
var mdiFormatLetterStartsWith = "M11.14 4L6.43 16H8.36L9.32 13.43H14.67L15.64 16H17.57L12.86 4M12 6.29L14.03 11.71H9.96M4 18V15H2V20H22V18Z";
var mdiFormatLineSpacing = "M10,13H22V11H10M10,19H22V17H10M10,7H22V5H10M6,7H8.5L5,3.5L1.5,7H4V17H1.5L5,20.5L8.5,17H6V7Z";
var mdiFormatLineStyle = "M3,16H8V14H3V16M9.5,16H14.5V14H9.5V16M16,16H21V14H16V16M3,20H5V18H3V20M7,20H9V18H7V20M11,20H13V18H11V20M15,20H17V18H15V20M19,20H21V18H19V20M3,12H11V10H3V12M13,12H21V10H13V12M3,4V8H21V4H3Z";
var mdiFormatLineWeight = "M3,17H21V15H3V17M3,20H21V19H3V20M3,13H21V10H3V13M3,4V8H21V4H3Z";
var mdiFormatListBulleted = "M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z";
var mdiFormatListBulletedSquare = "M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9";
var mdiFormatListBulletedTriangle = "M5,15.5L7.5,20H2.5L5,15.5M9,19H21V17H9V19M5,9.5L7.5,14H2.5L5,9.5M9,13H21V11H9V13M5,3.5L7.5,8H2.5L5,3.5M9,7H21V5H9V7Z";
var mdiFormatListBulletedType = "M5,9.5L7.5,14H2.5L5,9.5M3,4H7V8H3V4M5,20A2,2 0 0,0 7,18A2,2 0 0,0 5,16A2,2 0 0,0 3,18A2,2 0 0,0 5,20M9,5V7H21V5H9M9,19H21V17H9V19M9,13H21V11H9V13Z";
var mdiFormatListCheckbox = "M21,19V17H8V19H21M21,13V11H8V13H21M8,7H21V5H8V7M4,5V7H6V5H4M3,5A1,1 0 0,1 4,4H6A1,1 0 0,1 7,5V7A1,1 0 0,1 6,8H4A1,1 0 0,1 3,7V5M4,11V13H6V11H4M3,11A1,1 0 0,1 4,10H6A1,1 0 0,1 7,11V13A1,1 0 0,1 6,14H4A1,1 0 0,1 3,13V11M4,17V19H6V17H4M3,17A1,1 0 0,1 4,16H6A1,1 0 0,1 7,17V19A1,1 0 0,1 6,20H4A1,1 0 0,1 3,19V17Z";
var mdiFormatListChecks = "M3,5H9V11H3V5M5,7V9H7V7H5M11,7H21V9H11V7M11,15H21V17H11V15M5,20L1.5,16.5L2.91,15.09L5,17.17L9.59,12.59L11,14L5,20Z";
var mdiFormatListNumbered = "M7,13V11H21V13H7M7,19V17H21V19H7M7,7V5H21V7H7M3,8V5H2V4H4V8H3M2,17V16H5V20H2V19H4V18.5H3V17.5H4V17H2M4.25,10A0.75,0.75 0 0,1 5,10.75C5,10.95 4.92,11.14 4.79,11.27L3.12,13H5V14H2V13.08L4,11H2V10H4.25Z";
var mdiFormatListNumberedRtl = "M3,13V11H17V13H3M3,19V17H17V19H3M3,7V5H17V7H3M20,8V5H19V4H21V8H20M19,17V16H22V20H19V19H21V18.5H20V17.5H21V17H19M21.25,10C21.67,10 22,10.34 22,10.75C22,10.95 21.92,11.14 21.79,11.27L20.12,13H22V14H19V13.08L21,11H19V10H21.25Z";
var mdiFormatListText = "M2 14H8V20H2M16 8H10V10H16M2 10H8V4H2M10 4V6H22V4M10 20H16V18H10M10 16H22V14H10";
var mdiFormatOverline = "M5,5H19V3H5V5M9.62,16L12,9.67L14.37,16M11,7L5.5,21H7.75L8.87,18H15.12L16.25,21H18.5L13,7H11Z";
var mdiFormatPageBreak = "M18,20H6V18H4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V18H18V20M14,2H6A2,2 0 0,0 4,4V12H6V4H14V8H18V12H20V8L14,2M11,16H8V14H11V16M16,16H13V14H16V16M3,14H6V16H3V14M21,16H18V14H21V16Z";
var mdiFormatPaint = "M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z";
var mdiFormatParagraph = "M13,4A4,4 0 0,1 17,8A4,4 0 0,1 13,12H11V18H9V4H13M13,10A2,2 0 0,0 15,8A2,2 0 0,0 13,6H11V10H13Z";
var mdiFormatPilcrow = "M10,11A4,4 0 0,1 6,7A4,4 0 0,1 10,3H18V5H16V21H14V5H12V21H10V11Z";
var mdiFormatQuoteClose = "M14,17H17L19,13V7H13V13H16M6,17H9L11,13V7H5V13H8L6,17Z";
var mdiFormatQuoteCloseOutline = "M13 6V14H14.88L12.88 18H18.62L21 13.24V6M15 8H19V12.76L17.38 16H16.12L18.12 12H15M3 6V14H4.88L2.88 18H8.62L11 13.24V6M5 8H9V12.76L7.38 16H6.12L8.12 12H5Z";
var mdiFormatQuoteOpen = "M10,7L8,11H11V17H5V11L7,7H10M18,7L16,11H19V17H13V11L15,7H18Z";
var mdiFormatQuoteOpenOutline = "M11 18V10H9.12L11.12 6H5.38L3 10.76V18M9 16H5V11.24L6.62 8H7.88L5.88 12H9M21 18V10H19.12L21.12 6H15.38L13 10.76V18M19 16H15V11.24L16.62 8H17.88L15.88 12H19Z";
var mdiFormatRotate90 = "M7.34,6.41L0.86,12.9L7.35,19.38L13.84,12.9L7.34,6.41M3.69,12.9L7.35,9.24L11,12.9L7.34,16.56L3.69,12.9M19.36,6.64C17.61,4.88 15.3,4 13,4V0.76L8.76,5L13,9.24V6C14.79,6 16.58,6.68 17.95,8.05C20.68,10.78 20.68,15.22 17.95,17.95C16.58,19.32 14.79,20 13,20C12.03,20 11.06,19.79 10.16,19.39L8.67,20.88C10,21.62 11.5,22 13,22C15.3,22 17.61,21.12 19.36,19.36C22.88,15.85 22.88,10.15 19.36,6.64Z";
var mdiFormatSection = "M15.67,4.42C14.7,3.84 13.58,3.54 12.45,3.56C10.87,3.56 9.66,4.34 9.66,5.56C9.66,6.96 11,7.47 13,8.14C15.5,8.95 17.4,9.97 17.4,12.38C17.36,13.69 16.69,14.89 15.6,15.61C16.25,16.22 16.61,17.08 16.6,17.97C16.6,20.79 14,21.97 11.5,21.97C10.04,22.03 8.59,21.64 7.35,20.87L8,19.34C9.04,20.05 10.27,20.43 11.53,20.44C13.25,20.44 14.53,19.66 14.53,18.24C14.53,17 13.75,16.31 11.25,15.45C8.5,14.5 6.6,13.5 6.6,11.21C6.67,9.89 7.43,8.69 8.6,8.07C7.97,7.5 7.61,6.67 7.6,5.81C7.6,3.45 9.77,2 12.53,2C13.82,2 15.09,2.29 16.23,2.89L15.67,4.42M11.35,13.42C12.41,13.75 13.44,14.18 14.41,14.71C15.06,14.22 15.43,13.45 15.41,12.64C15.41,11.64 14.77,10.76 13,10.14C11.89,9.77 10.78,9.31 9.72,8.77C8.97,9.22 8.5,10.03 8.5,10.91C8.5,11.88 9.23,12.68 11.35,13.42Z";
var mdiFormatSize = "M2 4V7H7V19H10V7H15V4H2M21 9H12V12H15V19H18V12H21V9Z";
var mdiFormatStrikethrough = "M3,14H21V12H3M5,4V7H10V10H14V7H19V4M10,19H14V16H10V19Z";
var mdiFormatStrikethroughVariant = "M23,12V14H18.61C19.61,16.14 19.56,22 12.38,22C4.05,22.05 4.37,15.5 4.37,15.5L8.34,15.55C8.37,18.92 11.5,18.92 12.12,18.88C12.76,18.83 15.15,18.84 15.34,16.5C15.42,15.41 14.32,14.58 13.12,14H1V12H23M19.41,7.89L15.43,7.86C15.43,7.86 15.6,5.09 12.15,5.08C8.7,5.06 9,7.28 9,7.56C9.04,7.84 9.34,9.22 12,9.88H5.71C5.71,9.88 2.22,3.15 10.74,2C19.45,0.8 19.43,7.91 19.41,7.89Z";
var mdiFormatSubscript = "M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,21.03H16.97V20.03L17.86,19.23C18.62,18.58 19.18,18.04 19.56,17.6C19.93,17.16 20.12,16.75 20.13,16.36C20.14,16.08 20.05,15.85 19.86,15.66C19.68,15.5 19.39,15.38 19,15.38C18.69,15.38 18.42,15.44 18.16,15.56L17.5,15.94L17.05,14.77C17.32,14.56 17.64,14.38 18.03,14.24C18.42,14.1 18.85,14 19.32,14C20.1,14.04 20.7,14.25 21.1,14.66C21.5,15.07 21.72,15.59 21.72,16.23C21.71,16.79 21.53,17.31 21.18,17.78C20.84,18.25 20.42,18.7 19.91,19.14L19.27,19.66V19.68H21.85V21.03Z";
var mdiFormatSuperscript = "M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,9H16.97V8L17.86,7.18C18.62,6.54 19.18,6 19.56,5.55C19.93,5.11 20.12,4.7 20.13,4.32C20.14,4.04 20.05,3.8 19.86,3.62C19.68,3.43 19.39,3.34 19,3.33C18.69,3.34 18.42,3.4 18.16,3.5L17.5,3.89L17.05,2.72C17.32,2.5 17.64,2.33 18.03,2.19C18.42,2.05 18.85,2 19.32,2C20.1,2 20.7,2.2 21.1,2.61C21.5,3 21.72,3.54 21.72,4.18C21.71,4.74 21.53,5.26 21.18,5.73C20.84,6.21 20.42,6.66 19.91,7.09L19.27,7.61V7.63H21.85V9Z";
var mdiFormatText = "M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z";
var mdiFormatTextRotationAngleDown = "M14.25 21H10.03L11.44 19.59L2.58 10.73L4.03 9.33L12.84 18.19L14.25 16.78M12.61 8L15.23 10.64L17.43 5.77M19.41 4.92L14.95 16.03L13.5 14.58L14.39 12.38L10.88 8.81L8.68 9.75L7.22 8.25L18.33 3.84Z";
var mdiFormatTextRotationAngleUp = "M20.58 9.33V13.55L19.17 12.14L10.31 21L8.91 19.59L17.72 10.73L16.31 9.33M7.59 11L10.22 8.39L5.34 6.14M4.5 4.22L15.61 8.63L14.16 10.13L11.96 9.19L8.39 12.75L9.33 14.91L7.83 16.41L3.42 5.25Z";
var mdiFormatTextRotationDown = "M6,19.73L3,16.73H5V4.27H7V16.73H9L6,19.73M14,9.38V13.13L19.03,11.25L14,9.38M21,12L10,16.73V14.67L12.19,13.73V8.77L10,7.83V5.77L21,10.5V12Z";
var mdiFormatTextRotationDownVertical = "M15.25 4H13.75L9 15H11.1L12 12.8H17L17.9 15H20L15.25 4M12.63 11L14.5 6L16.37 11H12.63M5 17.5L8 14.5H6V2H4V14.5H2L5 17.5M22 20L19 17V19H6.5V21H19V23L22 20Z";
var mdiFormatTextRotationNone = "M20.5,18L17.5,21V19H5V17H17.5V15L20.5,18M10.13,10H13.88L12,4.97L10.13,10M12.75,3L17.5,14H15.42L14.5,11.81H9.5L8.58,14H6.5L11.25,3H12.75Z";
var mdiFormatTextRotationUp = "M3 12V13.5L14 18.25V16.15L11.8 15.25V10.25L14 9.35V7.25L3 12M10 14.62L5 12.75L10 10.88V14.62M18 4.25L15 7.25H17V19.75H19V7.25H21L18 4.25Z";
var mdiFormatTextRotationVertical = "M15.75 5H14.25L9.5 16H11.6L12.5 13.8H17.5L18.4 16H20.5L15.75 5M13.13 12L15 7L16.87 12H13.13M6 19.75L9 16.75H7V4.25H5V16.75H3L6 19.75Z";
var mdiFormatTextVariant = "M9.6,14L12,7.7L14.4,14M11,5L5.5,19H7.7L8.8,16H15L16.1,19H18.3L13,5H11Z";
var mdiFormatTextVariantOutline = "M11 3C10.18 3 9.44 3.5 9.14 4.27L3.64 18.27C3.12 19.58 4.09 21 5.5 21H7.75C8.59 21 9.33 20.5 9.62 19.7L10.26 18H13.74L14.38 19.7C14.67 20.5 15.42 21 16.25 21H18.5C19.91 21 20.88 19.58 20.36 18.27L14.86 4.27C14.56 3.5 13.82 3 13 3M11 5H13L18.5 19H16.25L15.12 16H8.87L7.75 19H5.5M12 7.67L9.62 14H14.37Z";
var mdiFormatTextWrappingClip = "M7,21H5V3H7V21M17,3V11H9V13H17V21H19V3H17Z";
var mdiFormatTextWrappingOverflow = "M7,21H5V3H7V21M14,3H12V9H14V3M14,15H12V21H14V15M19,12L16,9V11H9V13H16V15L19,12Z";
var mdiFormatTextWrappingWrap = "M7,21H5V3H7V21M19,3H17V21H19V3M13,8H9V10H12.97C13.14,10 14,10.16 14,12C14,13.84 13.14,14 13,14H11V12L8,15L11,18V16H13C14.04,16 16,15.16 16,12C16,8.84 14.04,8 13,8Z";
var mdiFormatTextbox = "M21,7V3H17V4H7V3H3V7H4V17H3V21H7V20H17V21H21V17H20V7H21M18,4H20V6H18V4M4,4H6V6H4V4M6,20H4V18H6V20M20,20H18V18H20V20M18,17H17V18H7V17H6V7H7V6H17V7H18V17M16,8V10H13V16H11V10H8V8H16Z";
var mdiFormatTextdirectionLToR = "M21,18L17,14V17H5V19H17V22M9,10V15H11V4H13V15H15V4H17V2H9A4,4 0 0,0 5,6A4,4 0 0,0 9,10Z";
var mdiFormatTextdirectionRToL = "M8,17V14L4,18L8,22V19H20V17M10,10V15H12V4H14V15H16V4H18V2H10A4,4 0 0,0 6,6A4,4 0 0,0 10,10Z";
var mdiFormatTitle = "M5,4V7H10.5V19H13.5V7H19V4H5Z";
var mdiFormatUnderline = "M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z";
var mdiFormatVerticalAlignBottom = "M16,13H13V3H11V13H8L12,17L16,13M4,19V21H20V19H4Z";
var mdiFormatVerticalAlignCenter = "M8,19H11V23H13V19H16L12,15L8,19M16,5H13V1H11V5H8L12,9L16,5M4,11V13H20V11H4Z";
var mdiFormatVerticalAlignTop = "M8,11H11V21H13V11H16L12,7L8,11M4,3V5H20V3H4Z";
var mdiFormatWrapInline = "M8,7L13,17H3L8,7M3,3H21V5H3V3M21,15V17H14V15H21M3,19H21V21H3V19Z";
var mdiFormatWrapSquare = "M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H6V9H3V7M21,7V9H18V7H21M3,11H6V13H3V11M21,11V13H18V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z";
var mdiFormatWrapTight = "M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H9V9H3V7M21,7V9H15V7H21M3,11H7V13H3V11M21,11V13H17V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z";
var mdiFormatWrapTopBottom = "M12,7L17,17H7L12,7M3,3H21V5H3V3M3,19H21V21H3V19Z";
var mdiForum = "M17,12V3A1,1 0 0,0 16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z";
var mdiForumOutline = "M15,4V11H5.17L4,12.17V4H15M16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12V3A1,1 0 0,0 16,2M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z";
var mdiForward = "M12,8V4L20,12L12,20V16H4V8H12Z";
var mdiForwardburger = "M19,13H3V11H19L15,7L16.4,5.6L22.8,12L16.4,18.4L15,17L19,13M3,6H13V8H3V6M13,16V18H3V16H13Z";
var mdiFountain = "M7.5,2C4.47,2 2,4.46 2,7.5V7.5L2,8H4V7.5A3.5,3.5 0 0,1 7.5,4C9,4 10.26,4.93 10.76,6.24C10.37,6.08 9.95,6 9.5,6C8.11,6 6.9,6.82 6.34,8L8.08,9C8.29,8.42 8.85,8 9.5,8A1.5,1.5 0 0,1 11,9.5V11H13V9.5A1.5,1.5 0 0,1 14.5,8C15.16,8 15.71,8.42 15.92,9L17.66,8C17.1,6.82 15.9,6 14.5,6C14.05,6 13.63,6.08 13.24,6.24C13.74,4.93 15,4 16.5,4A3.5,3.5 0 0,1 20,7.5V8H22V7.5H22A5.5,5.5 0 0,0 16.5,2C14.64,2 13,2.93 12,4.34C11,2.93 9.36,2 7.5,2M6,12V14H7.42C7.92,15.15 8.85,16.07 10,16.57C10,17.38 10,18.19 10,19H2C2,19 2.82,20.23 3.41,21.11C3.78,21.67 4.4,22 5.07,22H18.93C19.6,22 20.22,21.67 20.59,21.11L22,19H14C14,18.19 14,17.38 14,16.57C15.15,16.07 16.08,15.15 16.58,14H18V12H6Z";
var mdiFountainPen = "M6.95,14.93L11.19,9.27L19.68,2.2C20.07,1.81 20.72,1.81 21.09,2.2L21.8,2.91C22.19,3.28 22.19,3.93 21.8,4.32L14.73,12.81L9.07,17.05L6.95,14.93M8.36,17.76L6.24,15.64L3.41,17.05L2,21.29L4.12,19.17C4.32,19 4.63,19 4.83,19.17C5,19.37 5,19.68 4.83,19.88L2.71,22L6.95,20.59L8.36,17.76Z";
var mdiFountainPenTip = "M15.54,3.5L20.5,8.47L19.07,9.88L14.12,4.93L15.54,3.5M3.5,19.78L10,13.31C9.9,13 9.97,12.61 10.23,12.35C10.62,11.96 11.26,11.96 11.65,12.35C12.04,12.75 12.04,13.38 11.65,13.77C11.39,14.03 11,14.1 10.69,14L4.22,20.5L14.83,16.95L18.36,10.59L13.42,5.64L7.05,9.17L3.5,19.78Z";
var mdiFreebsd = "M2.69,2C3.54,1.95 6.08,3.16 6.13,3.19C4.84,4 3.74,5.09 2.91,6.38C2.09,4.81 1.34,2.91 2,2.25C2.17,2.08 2.4,2 2.69,2M20.84,2.13C21.25,2.08 21.58,2.14 21.78,2.34C22.85,3.42 19.88,8.15 19.38,8.66C18.87,9.16 17.57,8.7 16.5,7.63C15.43,6.55 14.97,5.26 15.47,4.75C15.88,4.34 19.09,2.3 20.84,2.13M12,2.56C13.29,2.56 14.53,2.82 15.66,3.28C15.17,3.6 14.81,3.85 14.69,3.97C13.7,4.96 14.14,6.83 15.72,8.41C16.7,9.38 17.84,9.97 18.78,9.97C19.46,9.97 19.92,9.68 20.16,9.44C20.33,9.27 20.6,8.88 20.91,8.41C21.42,9.59 21.69,10.88 21.69,12.25C21.69,17.61 17.36,21.97 12,21.97C6.64,21.97 2.31,17.61 2.31,12.25C2.31,6.89 6.64,2.56 12,2.56Z";
var mdiFrequentlyAskedQuestions = "M18,15H6L2,19V3A1,1 0 0,1 3,2H18A1,1 0 0,1 19,3V14A1,1 0 0,1 18,15M23,9V23L19,19H8A1,1 0 0,1 7,18V17H21V8H22A1,1 0 0,1 23,9M8.19,4C7.32,4 6.62,4.2 6.08,4.59C5.56,5 5.3,5.57 5.31,6.36L5.32,6.39H7.25C7.26,6.09 7.35,5.86 7.53,5.7C7.71,5.55 7.93,5.47 8.19,5.47C8.5,5.47 8.76,5.57 8.94,5.75C9.12,5.94 9.2,6.2 9.2,6.5C9.2,6.82 9.13,7.09 8.97,7.32C8.83,7.55 8.62,7.75 8.36,7.91C7.85,8.25 7.5,8.55 7.31,8.82C7.11,9.08 7,9.5 7,10H9C9,9.69 9.04,9.44 9.13,9.26C9.22,9.08 9.39,8.9 9.64,8.74C10.09,8.5 10.46,8.21 10.75,7.81C11.04,7.41 11.19,7 11.19,6.5C11.19,5.74 10.92,5.13 10.38,4.68C9.85,4.23 9.12,4 8.19,4M7,11V13H9V11H7M13,13H15V11H13V13M13,4V10H15V4H13Z";
var mdiFridge = "M7,2H17A2,2 0 0,1 19,4V9H5V4A2,2 0 0,1 7,2M19,19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V10H19V19M8,5V7H10V5H8M8,12V15H10V12H8Z";
var mdiFridgeAlert = "M5 2H15C16.11 2 17 2.9 17 4V9H3V4C3 2.9 3.9 2 5 2M17 19C17 20.11 16.11 21 15 21V22H13V21H7V22H5V21C3.9 21 3 20.11 3 19V10H17V19M6 5V7H8V5H6M6 12V15H8V12H6M19 15H21V17H19V15M19 7H21V13H19V7Z";
var mdiFridgeAlertOutline = "M7 21V22H5V21C3.9 21 3 20.11 3 19V4C3 2.9 3.9 2 5 2H15C16.11 2 17 2.9 17 4V19C17 20.11 16.11 21 15 21V22H13V21H7M5 4V9H15V4H5M5 19H15V11H5V19M6 12H8V15H6V12M6 6H8V8H6V6M19 15H21V17H19V15M19 7H21V13H19V7Z";
var mdiFridgeBottom = "M7,2A2,2 0 0,0 5,4V19A2,2 0 0,0 7,21V22H9V21H15V22H17V21A2,2 0 0,0 19,19V4A2,2 0 0,0 17,2H7M8,6H10V8H8V6M7,11H17V19H7V11M8,12V15H10V12H8Z";
var mdiFridgeIndustrial = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M10 15H8V10H10V15Z";
var mdiFridgeIndustrialAlert = "M15 2H5C3.9 2 3 2.9 3 4V19C3 20.11 3.9 21 5 21V22H7V21H13V22H15V21C16.11 21 17 20.11 17 19V4C17 2.9 16.11 2 15 2M8 15H6V10H8V15M21 7V13H19V7H21M19 15H21V17H19V15Z";
var mdiFridgeIndustrialAlertOutline = "M8 15H6V10H8V15M17 4V19C17 20.11 16.11 21 15 21V22H13V21H7V22H5V21C3.9 21 3 20.11 3 19V4C3 2.9 3.9 2 5 2H15C16.11 2 17 2.9 17 4M15 4H5V19H15V4M19 17H21V15H19V17M19 7V13H21V7H19Z";
var mdiFridgeIndustrialOff = "M19 15.8L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8M22.11 21.46L20.84 22.73L18.46 20.35C18.1 20.75 17.58 21 17 21V22H15V21H9V22H7V21C5.9 21 5 20.11 5 19V6.89L1.11 3L2.39 1.73L22.11 21.46M10 11.89L8.11 10H8V15H10V11.89Z";
var mdiFridgeIndustrialOffOutline = "M7.2 4L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8L17 13.8V4H7.2M22.11 21.46L20.84 22.73L18.46 20.35C18.1 20.75 17.58 21 17 21V22H15V21H9V22H7V21C5.9 21 5 20.11 5 19V6.89L1.11 3L2.39 1.73L22.11 21.46M17 18.89L10 11.89V15H8V10H8.11L7 8.89V19H17V18.89Z";
var mdiFridgeIndustrialOutline = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M17 19H7V4H17V19M10 15H8V10H10V15Z";
var mdiFridgeOff = "M22.11 21.46L2.39 1.73L1.11 3L5 6.89V9H7.11L8.11 10H5V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C17.58 21 18.1 20.75 18.46 20.35L20.84 22.73L22.11 21.46M10 15H8V12H10V15M19 15.8L13.2 10H19V15.8M8.2 5L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V9H12.2L10 6.8V5H8.2Z";
var mdiFridgeOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L5 6.89V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C17.58 21 18.1 20.75 18.46 20.35L20.84 22.73L22.11 21.46M17 19H7V11H9.11L17 18.89V19M7.2 4L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8L17 13.8V11H14.2L12.2 9H17V4H7.2M8 12H10V15H8V12Z";
var mdiFridgeOutline = "M9,21V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9M7,4V9H17V4H7M7,19H17V11H7V19M8,12H10V15H8V12M8,6H10V8H8V6Z";
var mdiFridgeTop = "M8,8V6H10V8H8M7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2M7,4V9H17V4H7M8,12V15H10V12H8Z";
var mdiFridgeVariant = "M19 4V19C19 20.11 18.11 21 17 21V22H15V21H12.5V2H17C18.11 2 19 2.9 19 4M7 2H11.5V21H9V22H7V21C5.9 21 5 20.11 5 19V4C5 2.9 5.9 2 7 2M10 10H7V14H10V10Z";
var mdiFridgeVariantAlert = "M17 4V19C17 20.11 16.11 21 15 21V22H13V21H10.5V2H15C16.11 2 17 2.9 17 4M5 2H9.5V21H7V22H5V21C3.9 21 3 20.11 3 19V4C3 2.9 3.9 2 5 2M8 10H5V14H8V10M19 7V13H21V7H19M19 17H21V15H19V17Z";
var mdiFridgeVariantAlertOutline = "M15 2H5C3.9 2 3 2.9 3 4V19C3 20.11 3.9 21 5 21V22H7V21H13V22H15V21C16.11 21 17 20.11 17 19V4C17 2.9 16.11 2 15 2M9 19H5V14H8V10H5V4H9V19M15 19H11V4H15V19M19 15H21V17H19V15M21 7V13H19V7H21Z";
var mdiFridgeVariantOff = "M2.39 1.73L1.11 3L5 6.89V19C5 20.11 5.9 21 7 21V22H9V21H11.5V13.39L12.5 14.39V21H15V22H17V21C17.58 21 18.1 20.75 18.46 20.35L20.84 22.73L22.11 21.46L2.39 1.73M10 14H7V10H8.11L10 11.89V14M19 15.8L12.5 9.3V2H17C18.11 2 19 2.9 19 4V15.8M11.5 8.3L5.7 2.5C6.05 2.19 6.5 2 7 2H11.5V8.3Z";
var mdiFridgeVariantOffOutline = "M7.2 4L5.7 2.5C6.05 2.19 6.5 2 7 2H17C18.11 2 19 2.9 19 4V15.8L17 13.8V4H13V9.8L11 7.8V4H7.2M22.11 21.46L20.84 22.73L18.46 20.35C18.1 20.75 17.58 21 17 21V22H15V21H9V22H7V21C5.9 21 5 20.11 5 19V6.89L1.11 3L2.39 1.73L22.11 21.46M7 10H8.11L7 8.89V10M11 12.89L10 11.89V14H7V19H11V12.89M17 18.89L13 14.89V19H17V18.89Z";
var mdiFridgeVariantOutline = "M17 2H7C5.9 2 5 2.9 5 4V19C5 20.11 5.9 21 7 21V22H9V21H15V22H17V21C18.11 21 19 20.11 19 19V4C19 2.9 18.11 2 17 2M7 19V14H10V10H7V4H11V19H7M17 19H13V4H17V19Z";
var mdiFruitCherries = "M16 13H15.5C14.8 11.7 14.3 10 13.8 8.3L14.7 9.2C17.4 11.3 19.8 10.9 19.8 10.9S20.5 7.1 17.8 5.1C15.5 3.3 13.4 3.3 12.8 3.4C12.7 2.8 12.7 2.3 12.6 1.9L11.2 2C11.2 5.2 8.5 11.1 7.6 13C5.6 13.2 4 14.9 4 17C4 19.2 5.8 21 8 21C9.1 21 10 20.6 10.7 19.9C10.3 19 10 18 10 17S10.3 15 10.7 14.1C10.3 13.7 9.7 13.4 9.2 13.2C9.9 11.7 11.1 9 11.9 6.4C12.3 8.7 13.1 11.4 14.1 13.5C12.9 14.2 12 15.5 12 17C12 19.2 13.8 21 16 21S20 19.2 20 17 18.2 13 16 13M8 15.5C7.2 15.5 6.5 16.2 6.5 17H5.5C5.5 15.6 6.6 14.5 8 14.5V15.5M16 15.5C15.2 15.5 14.5 16.2 14.5 17H13.5C13.5 15.6 14.6 14.5 16 14.5V15.5Z";
var mdiFruitCherriesOff = "M22.1 21.5L2.4 1.7L1.1 3L8.7 10.6C8.3 11.6 7.9 12.5 7.6 13C5.6 13.2 4 14.9 4 17C4 19.2 5.8 21 8 21C9.1 21 10 20.6 10.7 19.9C10.3 19 10 18 10 17S10.3 15 10.7 14.1C10.3 13.7 9.7 13.4 9.2 13.2C9.4 12.8 9.6 12.3 9.9 11.7L12.8 14.6C12.3 15.3 12 16.1 12 17C12 19.2 13.8 21 16 21C16.9 21 17.7 20.7 18.3 20.2L20.8 22.7L22.1 21.5M8 15.5C7.2 15.5 6.5 16.2 6.5 17H5.5C5.5 15.6 6.6 14.5 8 14.5V15.5M14.5 17H13.5C13.5 16.5 13.6 16.1 13.8 15.7L14.6 16.5C14.5 16.7 14.5 16.8 14.5 17M20 16.8L16.2 13C18.2 13.1 19.9 14.8 20 16.8M11.3 8.1L10.1 6.9C10.7 5.1 11.2 3.3 11.2 2L12.6 1.9C12.7 2.3 12.7 2.8 12.8 3.4C13.4 3.3 15.5 3.3 17.8 5.1C20.5 7.1 19.8 10.9 19.8 10.9S17.4 11.3 14.7 9.2L13.8 8.3C14.1 9.5 14.5 10.7 14.9 11.7L12.6 9.4C12.3 8.4 12.1 7.4 11.9 6.4C11.7 7 11.5 7.6 11.3 8.1Z";
var mdiFruitCitrus = "M9 15.9C6.9 15.7 5.1 14.9 4 13.6C3.2 13.6 2.4 13.1 2.1 12.3C1.8 11.5 2.1 10.7 2.8 10.2C2.9 7.2 5.6 4.1 9.7 2.7C13.8 1.3 18 2.1 20 4.4C20.8 4.4 21.6 4.9 21.9 5.7C22.2 6.5 21.9 7.3 21.2 7.8C21.2 8.6 21 9.4 20.6 10.2C19.4 9.5 18 9 16.5 9C12.6 9 9.3 12 9 15.9M22 16.5C22 19.5 19.5 22 16.5 22S11 19.5 11 16.5 13.5 11 16.5 11 22 13.5 22 16.5M13.3 18L15.6 16.5L13.3 15C13.1 15.5 13 16 13 16.5S13.1 17.5 13.3 18M16 17.4L13.9 18.8C14.4 19.4 15.2 19.8 16 20V17.4M16 13.1C15.2 13.2 14.4 13.6 13.9 14.3L16 15.7V13.1M17 15.6L19.1 14.2C18.6 13.6 17.8 13.2 17 13V15.6M19.1 18.8L17 17.4V19.9C17.8 19.8 18.6 19.4 19.1 18.8M20 16.5C20 16 19.9 15.5 19.7 15L17.4 16.5L19.7 18C19.9 17.5 20 17 20 16.5Z";
var mdiFruitCitrusOff = "M22.1 21.5L2.4 1.7L1.1 3L4.4 6.3C3.4 7.5 2.9 8.9 2.8 10.2C2.1 10.7 1.8 11.5 2.1 12.3C2.4 13.1 3.2 13.6 4 13.6C5.1 14.9 6.9 15.7 9 15.9C9.1 14.5 9.6 13.3 10.3 12.2L11.8 13.7C11.3 14.5 11 15.5 11 16.5C11 19.5 13.5 22 16.5 22C17.5 22 18.5 21.7 19.3 21.2L20.8 22.7L22.1 21.5M13 16.5C13 16 13.1 15.6 13.3 15.1L15 16.8L13.3 18C13.1 17.5 13 17 13 16.5M13.9 18.8L15.7 17.6L16 17.9V20C15.2 19.8 14.4 19.4 13.9 18.8M17 19.9V18.9L17.8 19.7C17.5 19.8 17.3 19.9 17 19.9M20 16.8V16.5C20 16 19.9 15.5 19.7 15L18.8 15.6L18.1 14.9L19.1 14.2C18.6 13.6 17.8 13.2 17 13V13.8L14.6 11.4C15.2 11.2 15.9 11 16.5 11C19.5 11 22 13.5 22 16.5C22 17.2 21.9 17.8 21.6 18.4L20 16.8M13 9.8L7.1 3.9C7.9 3.4 8.8 3 9.7 2.7C13.8 1.3 18 2.1 20 4.4C20.8 4.4 21.6 4.9 21.9 5.7C22.2 6.5 21.9 7.3 21.2 7.8C21.2 8.6 21 9.4 20.6 10.2C19.4 9.5 18 9 16.5 9C15.3 9 14.1 9.3 13 9.8Z";
var mdiFruitGrapes = "M14 12C14 13.1 13.1 14 12 14S10 13.1 10 12 10.9 10 12 10 14 10.9 14 12M7 10C5.9 10 5 10.9 5 12S5.9 14 7 14 9 13.1 9 12 8.1 10 7 10M17 10C15.9 10 15 10.9 15 12S15.9 14 17 14 19 13.1 19 12 18.1 10 17 10M14.5 6C13.4 6 12.5 6.9 12.5 8S13.4 10 14.5 10 16.5 9.1 16.5 8 15.6 6 14.5 6M9.5 6C8.4 6 7.5 6.9 7.5 8S8.4 10 9.5 10 11.5 9.1 11.5 8 10.6 6 9.5 6M14.5 14C13.4 14 12.5 14.9 12.5 16S13.4 18 14.5 18 16.5 17.1 16.5 16 15.6 14 14.5 14M9.5 14C8.4 14 7.5 14.9 7.5 16S8.4 18 9.5 18 11.5 17.1 11.5 16 10.6 14 9.5 14M12 18C10.9 18 10 18.9 10 20S10.9 22 12 22 14 21.1 14 20 13.1 18 12 18M14.4 2.2L13.6 1C11.4 2 11.2 5.6 11.2 6H12.7C12.8 5.2 13.1 2.7 14.4 2.2Z";
var mdiFruitGrapesOutline = "M19 12C19 10.61 18.05 9.47 16.78 9.12C16.92 8.78 17 8.4 17 8C17 6.34 15.66 5 14 5C13.57 5 13.17 5.1 12.81 5.26C13 4.19 13.39 2.59 14.4 2.2L13.6 1C11.9 1.77 11.4 4.09 11.26 5.29C10.87 5.11 10.45 5 10 5C8.34 5 7 6.34 7 8C7 8.4 7.08 8.77 7.22 9.12C5.94 9.46 5 10.62 5 12C5 13.39 5.95 14.54 7.23 14.88C7.09 15.22 7 15.6 7 16C7 17.39 7.94 18.54 9.22 18.88C9.08 19.23 9 19.61 9 20C9 21.66 10.34 23 12 23S15 21.66 15 20C15 19.61 14.92 19.23 14.78 18.88C16.06 18.54 17 17.39 17 16C17 15.6 16.92 15.23 16.77 14.88C18.05 14.54 19 13.39 19 12M16.31 9.88V9.9H16.3L16.31 9.88M14 6.5C14.83 6.5 15.5 7.17 15.5 8S14.83 9.5 14 9.5 12.5 8.83 12.5 8 13.17 6.5 14 6.5M13.5 12C13.5 12.83 12.83 13.5 12 13.5S10.5 12.83 10.5 12 11.17 10.5 12 10.5 13.5 11.17 13.5 12M10 6.5C10.83 6.5 11.5 7.17 11.5 8S10.83 9.5 10 9.5 8.5 8.83 8.5 8 9.17 6.5 10 6.5M6.5 12C6.5 11.17 7.17 10.5 8 10.5S9.5 11.17 9.5 12 8.83 13.5 8 13.5 6.5 12.83 6.5 12M8.5 16C8.5 15.17 9.17 14.5 10 14.5S11.5 15.17 11.5 16 10.83 17.5 10 17.5 8.5 16.83 8.5 16M12 21.5C11.17 21.5 10.5 20.83 10.5 20S11.17 18.5 12 18.5 13.5 19.17 13.5 20 12.83 21.5 12 21.5M14 17.5C13.17 17.5 12.5 16.83 12.5 16S13.17 14.5 14 14.5 15.5 15.17 15.5 16 14.83 17.5 14 17.5M16 13.5C15.17 13.5 14.5 12.83 14.5 12S15.17 10.5 16 10.5 17.5 11.17 17.5 12 16.83 13.5 16 13.5Z";
var mdiFruitPineapple = "M14.4 7.7C16.4 6.4 19 7 19 7C17.2 4.6 15.1 4.7 13.6 5.2V5C14.7 3.4 16.9 3.5 16.9 3.5C15.3 2.1 13.9 2.5 13 3C12.5 1.8 12 1 12 1C11.6 1.7 11.3 2.4 11 3.1C10.1 2.5 8.6 2.1 7 3.5C7 3.5 9.3 3.5 10.4 5.2C8.9 4.7 6.8 4.6 5 7C5 7 7.6 6.4 9.6 7.7C7.5 8.9 6 11.7 6 15C6 19.4 8.7 23 12 23S18 19.4 18 15C18 11.7 16.5 8.9 14.4 7.7M15.8 16.8C15.7 17.2 15.6 17.6 15.4 18L14 16L12.5 18L14.1 20.1C13.8 20.3 13.6 20.5 13.3 20.7L12 19L10.7 20.7C10.4 20.6 10.1 20.4 9.9 20.1L11.5 18L10 16L8.5 17.9C8.4 17.5 8.2 17.1 8.1 16.7L9.5 15L8.2 13.2C8.3 12.8 8.4 12.4 8.6 12L10 14L11.5 12L9.9 9.9C10.2 9.7 10.4 9.5 10.7 9.3L12 11L13.3 9.3C13.6 9.4 13.9 9.6 14.1 9.9L12.5 12L14 14L15.5 12.1C15.6 12.5 15.8 12.9 15.9 13.3L14.5 15L15.8 16.8M12 13L13.5 15L12 17L10.5 15L12 13Z";
var mdiFruitWatermelon = "M16.4 16.4C19.8 13 19.8 7.5 16.4 4.2L4.2 16.4C7.5 19.8 13 19.8 16.4 16.4M16 7C16.6 7 17 7.4 17 8C17 8.6 16.6 9 16 9S15 8.6 15 8C15 7.4 15.4 7 16 7M16 11C16.6 11 17 11.4 17 12C17 12.6 16.6 13 16 13S15 12.6 15 12C15 11.4 15.4 11 16 11M12 11C12.6 11 13 11.4 13 12C13 12.6 12.6 13 12 13S11 12.6 11 12C11 11.4 11.4 11 12 11M12 15C12.6 15 13 15.4 13 16C13 16.6 12.6 17 12 17S11 16.6 11 16C11 15.4 11.4 15 12 15M8 17C7.4 17 7 16.6 7 16C7 15.4 7.4 15 8 15S9 15.4 9 16C9 16.6 8.6 17 8 17M18.6 18.6C14 23.2 6.6 23.2 2 18.6L3.4 17.2C7.2 21 13.3 21 17.1 17.2C20.9 13.4 20.9 7.3 17.1 3.5L18.6 2C23.1 6.6 23.1 14 18.6 18.6Z";
var mdiFuel = "M3,2H6C6.28,2 6.53,2.11 6.71,2.29L8.79,4.38L9.59,3.59C10,3.2 10.5,3 11,3H17C17.5,3 18,3.2 18.41,3.59L19.41,4.59C19.8,5 20,5.5 20,6V19A2,2 0 0,1 18,21H8A2,2 0 0,1 6,19V13L6,12V8C6,7.5 6.2,7 6.59,6.59L7.38,5.79L5.59,4H3V2M11,5V7H17V5H11M11.41,11L9.41,9H8V10.41L10,12.41V15.59L8,17.59V19H9.41L11.41,17H14.59L16.59,19H18V17.59L16,15.59V12.41L18,10.41V9H16.59L14.59,11H11.41M12,13H14V15H12V13Z";
var mdiFullscreen = "M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z";
var mdiFullscreenExit = "M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z";
var mdiFunction = "M15.6,5.29C14.5,5.19 13.53,6 13.43,7.11L13.18,10H16V12H13L12.56,17.07C12.37,19.27 10.43,20.9 8.23,20.7C6.92,20.59 5.82,19.86 5.17,18.83L6.67,17.33C6.91,18.07 7.57,18.64 8.4,18.71C9.5,18.81 10.47,18 10.57,16.89L11,12H8V10H11.17L11.44,6.93C11.63,4.73 13.57,3.1 15.77,3.3C17.08,3.41 18.18,4.14 18.83,5.17L17.33,6.67C17.09,5.93 16.43,5.36 15.6,5.29Z";
var mdiFunctionVariant = "M12.42,5.29C11.32,5.19 10.35,6 10.25,7.11L10,10H12.82V12H9.82L9.38,17.07C9.18,19.27 7.24,20.9 5.04,20.7C3.79,20.59 2.66,19.9 2,18.83L3.5,17.33C3.83,18.38 4.96,18.97 6,18.63C6.78,18.39 7.33,17.7 7.4,16.89L7.82,12H4.82V10H8L8.27,6.93C8.46,4.73 10.39,3.1 12.6,3.28C13.86,3.39 15,4.09 15.66,5.17L14.16,6.67C13.91,5.9 13.23,5.36 12.42,5.29M22,13.65L20.59,12.24L17.76,15.07L14.93,12.24L13.5,13.65L16.35,16.5L13.5,19.31L14.93,20.72L17.76,17.89L20.59,20.72L22,19.31L19.17,16.5L22,13.65Z";
var mdiFuriganaHorizontal = "M8.5 2C7.12 2 6 3.12 6 4.5S7.12 7 8.5 7 11 5.88 11 4.5 9.88 2 8.5 2M15.5 2C14.12 2 13 3.12 13 4.5S14.12 7 15.5 7 18 5.88 18 4.5 16.88 2 15.5 2M11 8V10H5V12H14.95C14.53 13.13 13.5 14.5 12.16 15.67C11.12 14.74 10.35 13.82 9.82 13H7.5C8.08 14.25 9.13 15.62 10.62 16.96L6.55 20.22L5.76 20.84L7 22.41L7.8 21.78L12.17 18.28L16.55 21.78L17.33 22.41L18.58 20.84L17.8 20.22L13.73 16.97C15.34 15.5 16.7 13.85 17.07 12H19V10H13V8H11Z";
var mdiFuriganaVertical = "M8 5V7H2V9H11.95C11.53 10.13 10.5 11.5 9.16 12.67C8.12 11.74 7.35 10.82 6.82 10H4.5C5.08 11.25 6.13 12.62 7.62 13.96L3.55 17.22L2.76 17.84L4 19.41L4.8 18.78L9.17 15.28L13.55 18.78L14.33 19.41L15.58 17.84L14.8 17.22L10.73 13.97C12.34 12.5 13.7 10.85 14.07 9H16V7H10V5H8M19.5 6C18.12 6 17 7.12 17 8.5S18.12 11 19.5 11 22 9.88 22 8.5 20.88 6 19.5 6M19.47 13C18.09 13 16.97 14.12 16.97 15.5S18.09 18 19.47 18 21.97 16.88 21.97 15.5 20.85 13 19.47 13Z";
var mdiFuse = "M8,7V17H15V7H8M11.16,16V12.87H9.41L11.91,8V11.14H13.59L11.16,16M16,2V6H7V2A1,1 0 0,1 8,1H15A1,1 0 0,1 16,2M16,18V22A1,1 0 0,1 15,23H8A1,1 0 0,1 7,22V18H16Z";
var mdiFuseAlert = "M6 7V17H13V7H6M9.16 16V12.87H7.41L9.91 8V11.14H11.59L9.16 16M14 2V6H5V2C5 1.45 5.45 1 6 1H13C13.55 1 14 1.45 14 2M14 18V22C14 22.55 13.55 23 13 23H6C5.45 23 5 22.55 5 22V18H14M19 13H17V7H19V13M19 17H17V15H19V17Z";
var mdiFuseBlade = "M10,21H8L6,19V16H10V21M18,16H14V21H16L18,19V16M3,3V4A1,1 0 0,0 4,5V14A1,1 0 0,0 5,15H19A1,1 0 0,0 20,14V5H20A1,1 0 0,0 21,4V3H3M11.83,13V9.73H10L12.61,4.66V7.93H14.36L11.83,13Z";
var mdiFuseOff = "M15 11.8L10.2 7H15V11.8M16 6V2C16 1.45 15.55 1 15 1H8C7.45 1 7 1.45 7 2V3.8L9.2 6H16M2.39 1.73L1.11 3L8 9.89V17H15.11L20.84 22.73L22.11 21.46L2.39 1.73M7 22C7 22.55 7.45 23 8 23H15C15.55 23 16 22.55 16 22V18H7V22Z";
var mdiGamepad = "M16.5,9L13.5,12L16.5,15H22V9M9,16.5V22H15V16.5L12,13.5M7.5,9H2V15H7.5L10.5,12M15,7.5V2H9V7.5L12,10.5L15,7.5Z";
var mdiGamepadCircle = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8Z";
var mdiGamepadCircleDown = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10Z";
var mdiGamepadCircleLeft = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3Z";
var mdiGamepadCircleOutline = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10Z";
var mdiGamepadCircleRight = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M12,3A2,2 0 0,0 10,5A2,2 0 0,0 12,7A2,2 0 0,0 14,5A2,2 0 0,0 12,3M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17Z";
var mdiGamepadCircleUp = "M5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8M12,1A4,4 0 0,1 16,5A4,4 0 0,1 12,9A4,4 0 0,1 8,5A4,4 0 0,1 12,1M12,15A4,4 0 0,1 16,19A4,4 0 0,1 12,23A4,4 0 0,1 8,19A4,4 0 0,1 12,15M19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A4,4 0 0,1 15,12A4,4 0 0,1 19,8M5,10A2,2 0 0,0 3,12A2,2 0 0,0 5,14A2,2 0 0,0 7,12A2,2 0 0,0 5,10M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10M12,17A2,2 0 0,0 10,19A2,2 0 0,0 12,21A2,2 0 0,0 14,19A2,2 0 0,0 12,17Z";
var mdiGamepadDown = "M9,2V7.5L12,10.5L15,7.5V2H9M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M12,13.5L9,16.5V22H15V16.5L12,13.5M11,18H13V20H11V18Z";
var mdiGamepadLeft = "M9,2V7.5L12,10.5L15,7.5V2H9M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M4,11H6V13H4V11M12,13.5L9,16.5V22H15V16.5L12,13.5Z";
var mdiGamepadRight = "M9,2V7.5L12,10.5L15,7.5V2H9M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M18,11H20V13H18V11M12,13.5L9,16.5V22H15V16.5L12,13.5Z";
var mdiGamepadRound = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8Z";
var mdiGamepadRoundDown = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M10,16V20H14V16H10Z";
var mdiGamepadRoundLeft = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M4,10V14H8V10H4Z";
var mdiGamepadRoundOutline = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M4,10V14H10V20H14V14H20V10H14V4H10V10H4Z";
var mdiGamepadRoundRight = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M16,10V14H20V10H16Z";
var mdiGamepadRoundUp = "M4,8H8V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V8H20A2,2 0 0,1 22,10V14A2,2 0 0,1 20,16H16V20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8M10,4V8H14V4H10Z";
var mdiGamepadSquare = "M21,6H3A2,2 0 0,0 1,8V16A2,2 0 0,0 3,18H21A2,2 0 0,0 23,16V8A2,2 0 0,0 21,6M11,13H8V16H6V13H3V11H6V8H8V11H11M15.5,15A1.5,1.5 0 0,1 14,13.5A1.5,1.5 0 0,1 15.5,12A1.5,1.5 0 0,1 17,13.5A1.5,1.5 0 0,1 15.5,15M19.5,12A1.5,1.5 0 0,1 18,10.5A1.5,1.5 0 0,1 19.5,9A1.5,1.5 0 0,1 21,10.5A1.5,1.5 0 0,1 19.5,12Z";
var mdiGamepadSquareOutline = "M21,6H3A2,2 0 0,0 1,8V16A2,2 0 0,0 3,18H21A2,2 0 0,0 23,16V8A2,2 0 0,0 21,6M21,16H3V8H21M6,15H8V13H10V11H8V9H6V11H4V13H6M14.5,12A1.5,1.5 0 0,1 16,13.5A1.5,1.5 0 0,1 14.5,15A1.5,1.5 0 0,1 13,13.5A1.5,1.5 0 0,1 14.5,12M18.5,9A1.5,1.5 0 0,1 20,10.5A1.5,1.5 0 0,1 18.5,12A1.5,1.5 0 0,1 17,10.5A1.5,1.5 0 0,1 18.5,9Z";
var mdiGamepadUp = "M9,2V7.5L12,10.5L15,7.5V2H9M11,4H13V6H11V4M2,9V15H7.5L10.5,12L7.5,9H2M16.5,9L13.5,12L16.5,15H22V9H16.5M12,13.5L9,16.5V22H15V16.5L12,13.5Z";
var mdiGamepadVariant = "M7,6H17A6,6 0 0,1 23,12A6,6 0 0,1 17,18C15.22,18 13.63,17.23 12.53,16H11.47C10.37,17.23 8.78,18 7,18A6,6 0 0,1 1,12A6,6 0 0,1 7,6M6,9V11H4V13H6V15H8V13H10V11H8V9H6M15.5,12A1.5,1.5 0 0,0 14,13.5A1.5,1.5 0 0,0 15.5,15A1.5,1.5 0 0,0 17,13.5A1.5,1.5 0 0,0 15.5,12M18.5,9A1.5,1.5 0 0,0 17,10.5A1.5,1.5 0 0,0 18.5,12A1.5,1.5 0 0,0 20,10.5A1.5,1.5 0 0,0 18.5,9Z";
var mdiGamepadVariantOutline = "M6,9H8V11H10V13H8V15H6V13H4V11H6V9M18.5,9A1.5,1.5 0 0,1 20,10.5A1.5,1.5 0 0,1 18.5,12A1.5,1.5 0 0,1 17,10.5A1.5,1.5 0 0,1 18.5,9M15.5,12A1.5,1.5 0 0,1 17,13.5A1.5,1.5 0 0,1 15.5,15A1.5,1.5 0 0,1 14,13.5A1.5,1.5 0 0,1 15.5,12M17,5A7,7 0 0,1 24,12A7,7 0 0,1 17,19C15.04,19 13.27,18.2 12,16.9C10.73,18.2 8.96,19 7,19A7,7 0 0,1 0,12A7,7 0 0,1 7,5H17M7,7A5,5 0 0,0 2,12A5,5 0 0,0 7,17C8.64,17 10.09,16.21 11,15H13C13.91,16.21 15.36,17 17,17A5,5 0 0,0 22,12A5,5 0 0,0 17,7H7Z";
var mdiGamma = "M11.76 19C12.92 19 13.58 18 13.58 16.29C13.58 15.2 13.5 13.88 13.3 12.67L18 5H15.28L12.71 9.82L12.55 9.33C11.83 7.19 10.82 5 8.68 5C8 5 7.45 5.18 7 5.54C6 6.39 6 8 6 8.5H6.91C6.97 8.06 7.21 6.83 8.25 6.83C10 6.83 10.8 10 11.4 12.42C10.5 14.58 10 16.14 10 16.97C10 17.95 10.56 19 11.76 19";
var mdiGantryCrane = "M21,6H22V4H21V3H18V4H6V3H3V4H2V6H3V20H2V22H7V20H6V6H11V7H11.5V10.62C11,10.79 10.69,11.25 10.69,11.76C10.69,12.2 10.92,12.6 11.3,12.82V14H11.92C12.26,14 12.54,14.27 12.55,14.61C12.55,14.96 12.28,15.24 11.93,15.24C11.71,15.24 11.5,15.12 11.39,14.93C11.22,14.64 10.84,14.54 10.55,14.71C10.26,14.87 10.15,15.25 10.32,15.55C10.65,16.12 11.26,16.47 11.92,16.47C12.94,16.46 13.76,15.62 13.75,14.6C13.74,13.83 13.26,13.14 12.53,12.88V12.82C13.12,12.5 13.34,11.78 13.03,11.2C12.92,11 12.74,10.81 12.53,10.7V7H13V6H18V20H17V22H22V20H21V6M5,15.29V16.71L4,17.71V16.29L5,15.29M4,20V19.24L5,18.24V19.66L4.66,20H4M4,7.29L5,6.29V7.71L4,8.71V7.29M4,10.29L5,9.29V10.71L4,11.71V10.29M4,13.29L5,12.29V13.71L4,14.71V13.24L4,13.29M20,15.29V16.71L19,17.71V16.29L20,15.29M19,20V19.24L20,18.24V19.66L19.66,20H19M19,7.29L20,6.29V7.71L19,8.71V7.29M19,10.29L20,9.29V10.71L19,11.71V10.29M19,13.29L20,12.29V13.71L19,14.71V13.24L19,13.29Z";
var mdiGarage = "M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12M8,15H16V17H8V15M16,18V20H8V18H16Z";
var mdiGarageAlert = "M17,20H15V11H5V20H3V9L10,5L17,9V20M6,12H14V14H6V12M6,15H14V17H6V15M19,15V10H21V15H19M19,19V17H21V19H19Z";
var mdiGarageAlertVariant = "M20 9V20H18V11H2V20H0V9L10 5L20 9M17 12H3V14H17V12M17 15H3V17H17V15M22 15V10H24V15H22M22 19V17H24V19H22Z";
var mdiGarageOpen = "M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12Z";
var mdiGarageOpenVariant = "M22 9V20H20V11H4V20H2V9L12 5L22 9M19 12H5V14H19V12Z";
var mdiGarageVariant = "M22 9V20H20V11H4V20H2V9L12 5L22 9M19 12H5V14H19V12M19 18H5V20H19V18M19 15H5V17H19V15Z";
var mdiGasCylinder = "M16,9V14L16,20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V14L8,9C8,7.14 9.27,5.57 11,5.13V4H9V2H15V4H13V5.13C14.73,5.57 16,7.14 16,9Z";
var mdiGasStation = "M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M12,10H6V5H12M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14C17,12.89 16.1,12 15,12H14V5C14,3.89 13.1,3 12,3H6C4.89,3 4,3.89 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23Z";
var mdiGasStationOff = "M1 4.27L2.28 3L21 21.72L19.73 23L17.71 21C16.56 20.85 15.65 19.94 15.5 18.78L14 17.27V21H4V7.27L1 4.27M18 10C18.55 10 19 9.55 19 9C19 8.45 18.55 8 18 8C17.45 8 17 8.45 17 9C17 9.55 17.45 10 18 10M12 10V5H6.82L5.06 3.23C5.34 3.08 5.66 3 6 3H12C13.1 3 14 3.89 14 5V12H15C16.1 12 17 12.89 17 14V15.18L11.82 10H12M6 10H6.73L6 9.27V10M19.77 7.23C20.22 7.68 20.5 8.31 20.5 9L20.5 18.67L19 17.18V11.29C18.69 11.42 18.36 11.5 18 11.5C16.62 11.5 15.5 10.38 15.5 9C15.5 7.93 16.17 7.03 17.11 6.67L15 4.56L16.06 3.5L19.78 7.22L19.77 7.23Z";
var mdiGasStationOffOutline = "M1 4.27L2.28 3L6 6.72L21 21.72L19.73 23L17.72 21C16.56 20.85 15.65 19.94 15.5 18.78L14 17.27V21H4V7.27L1 4.27M19.77 7.23C20.22 7.68 20.5 8.31 20.5 9L20.5 18.67L19 17.18V11.29C18.69 11.42 18.36 11.5 18 11.5C16.62 11.5 15.5 10.38 15.5 9C15.5 7.93 16.17 7.03 17.11 6.67L15 4.56L16.06 3.5L19.78 7.22L19.77 7.23M11.82 10H12V5H6.82L5.06 3.24C5.34 3.09 5.66 3 6 3H12C13.1 3 14 3.9 14 5V12H15C16.1 12 17 12.9 17 14V15.18L11.82 10M6 10H6.73L6 9.27V10M6 12V19H12V15.27L8.73 12H6M18 10C18.55 10 19 9.55 19 9C19 8.45 18.55 8 18 8C17.45 8 17 8.45 17 9C17 9.55 17.45 10 18 10Z";
var mdiGasStationOutline = "M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7.03 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14A2,2 0 0,0 15,12H14V5A2,2 0 0,0 12,3H6A2,2 0 0,0 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23M12,13.5V19H6V12H12V13.5M12,10H6V5H12V10M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10Z";
var mdiGate = "M9,5V10H7V6H5V10H3V8H1V20H3V18H5V20H7V18H9V20H11V18H13V20H15V18H17V20H19V18H21V20H23V8H21V10H19V6H17V10H15V5H13V10H11V5H9M3,12H5V16H3V12M7,12H9V16H7V12M11,12H13V16H11V12M15,12H17V16H15V12M19,12H21V16H19V12Z";
var mdiGateAnd = "M2,4V20H14A8,8 0 0,0 22,12A8,8 0 0,0 14,4H2M4,6H14A6,6 0 0,1 20,12A6,6 0 0,1 14,18H4V6Z";
var mdiGateArrowRight = "M15 5V10H13V6H11V10H9V8H7V20H9V18H11V20H12.09A6 6 0 0 1 12 19A6 6 0 0 1 13 15.69V12H15V13.81A6 6 0 0 1 17 13.09V12H19V13.09A6 6 0 0 1 21 13.81V12H22V10H21V5H19V10H17V5H15M9 12H11V16H9V12M19 16V18H15V20H19V22L22 19L19 16Z";
var mdiGateNand = "M2,4V20H10C13.43,20 16.5,17.84 17.6,14.6C18,14.8 18.5,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C18.5,9 18.03,9.15 17.6,9.4C16.5,6.16 13.43,4 10,4H2M4,6H10A6,6 0 0,1 16,12A6,6 0 0,1 10,18H4V6M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z";
var mdiGateNor = "M2,4C5,10 5,14 2,20H5C9.4,20 13,17.7 16.6,13.7C17.15,14.5 18.04,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C18.04,9 17.15,9.5 16.6,10.3C13,6.3 9.4,4 5,4H2M5,6C8.8,6 12,8.1 15.3,12C12,15.9 8.8,18 5,18C6.5,14 6.5,10 5,6M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z";
var mdiGateNot = "M2,4V20L16.2,13C16.62,14.19 17.74,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C17.74,9 16.62,9.81 16.2,11L2,4M4,7.3L13.7,12L4,16.7V7.3M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z";
var mdiGateOpen = "M7 20V6H5V10H3V8H1V20H3V18H5V20H7M3 16V12H5V16H3M21 8V10H19V6H17V20H19V18H21V20H23V8H21M21 16H19V12H21V16Z";
var mdiGateOr = "M2,4C5,10 5,14 2,20H8C13,20 19,16 22,12C19,8 13,4 8,4H2M5,6H8C11.5,6 16.3,9 19.3,12C16.3,15 11.5,18 8,18H5C6.4,13.9 6.4,10.1 5,6Z";
var mdiGateXnor = "M2,4C5,10 5,14 2,20H4C7,14 7,10 4.1,4H2M6,4C9,10 9,14 6,20H9C12.2,20 14.8,16.8 16.7,14C17.28,14.65 18.12,15 19,15A3,3 0 0,0 22,12A3,3 0 0,0 19,9C18.12,9 17.28,9.35 16.7,10C14.7,7.2 12.2,4 9,4H6M9,6C12,6 14,10 15.5,12C14,14 12,18 9,18C10.6,14 10.6,10 9,6M19,11C19.5,11 20,11.5 20,12C20,12.5 19.5,13 19,13A1,1 0 0,1 18,12C18,11.5 18.5,11 19,11Z";
var mdiGateXor = "M2,4C5,10 5,14 2,20H4C7,14 7,10 4.1,4H2M6,4C9,10 9,14 6,20H9C14,20 18,17 22,12C18,7 14,4 9,4H6M9,6C12.8,6 16,8.1 19.3,12C15.9,15.9 12.8,18 9,18C10.5,14 10.5,10 9,6Z";
var mdiGatsby = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C8.27,4 5.14,6.55 4.25,10L14,19.75C17.45,18.86 20,15.73 20,12H14.75V13.5H18.2C17.71,15.54 16.24,17.19 14.31,17.94L6.06,9.69C7,7.31 9.3,5.63 12,5.63C14.13,5.63 16,6.67 17.18,8.28L18.41,7.22C16.95,5.26 14.63,4 12,4M4,12A8,8 0 0,0 12,20C12.04,20 12.09,20 4,12Z";
var mdiGauge = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12C20,14.4 19,16.5 17.3,18C15.9,16.7 14,16 12,16C10,16 8.2,16.7 6.7,18C5,16.5 4,14.4 4,12A8,8 0 0,1 12,4M14,5.89C13.62,5.9 13.26,6.15 13.1,6.54L11.81,9.77L11.71,10C11,10.13 10.41,10.6 10.14,11.26C9.73,12.29 10.23,13.45 11.26,13.86C12.29,14.27 13.45,13.77 13.86,12.74C14.12,12.08 14,11.32 13.57,10.76L13.67,10.5L14.96,7.29L14.97,7.26C15.17,6.75 14.92,6.17 14.41,5.96C14.28,5.91 14.15,5.89 14,5.89M10,6A1,1 0 0,0 9,7A1,1 0 0,0 10,8A1,1 0 0,0 11,7A1,1 0 0,0 10,6M7,9A1,1 0 0,0 6,10A1,1 0 0,0 7,11A1,1 0 0,0 8,10A1,1 0 0,0 7,9M17,9A1,1 0 0,0 16,10A1,1 0 0,0 17,11A1,1 0 0,0 18,10A1,1 0 0,0 17,9Z";
var mdiGaugeEmpty = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.1,16.7 10,16 12,16C14,16 15.8,16.7 17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4M14,6A1,1 0 0,1 15,7A1,1 0 0,1 14,8A1,1 0 0,1 13,7A1,1 0 0,1 14,6M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6M6.91,8.94C7.04,8.94 7.16,8.97 7.3,9L10.5,10.32L10.77,10.43C11.33,10 12.09,9.88 12.75,10.15C13.77,10.56 14.27,11.73 13.85,12.75C13.44,13.77 12.27,14.27 11.25,13.85C10.59,13.59 10.12,13 10,12.28L9.77,12.18L6.55,10.88L6.53,10.87C6,10.66 5.77,10.08 5.97,9.56C6.13,9.18 6.5,8.93 6.91,8.94V8.94M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9Z";
var mdiGaugeFull = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12C20,14.4 19,16.5 17.3,18C15.9,16.7 14,16 12,16C10,16 8.2,16.7 6.7,18C5,16.5 4,14.4 4,12A8,8 0 0,1 12,4M10,6A1,1 0 0,0 9,7A1,1 0 0,0 10,8A1,1 0 0,0 11,7A1,1 0 0,0 10,6M14,6A1,1 0 0,0 13,7A1,1 0 0,0 14,8A1,1 0 0,0 15,7A1,1 0 0,0 14,6M17.09,8.94C16.96,8.94 16.84,8.97 16.7,9L13.5,10.32L13.23,10.43C12.67,10 11.91,9.88 11.25,10.15C10.23,10.56 9.73,11.73 10.15,12.75C10.56,13.77 11.73,14.27 12.75,13.85C13.41,13.59 13.88,13 14,12.28L14.23,12.18L17.45,10.88L17.47,10.87C18,10.66 18.23,10.08 18.03,9.56C17.87,9.18 17.5,8.93 17.09,8.94M7,9A1,1 0 0,0 6,10A1,1 0 0,0 7,11A1,1 0 0,0 8,10A1,1 0 0,0 7,9Z";
var mdiGaugeLow = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.1,16.7 10,16 12,16C14,16 15.8,16.7 17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4M10,5.89C10.38,5.9 10.74,6.15 10.9,6.54L12.19,9.77L12.29,10C13,10.13 13.59,10.6 13.86,11.26C14.27,12.29 13.77,13.45 12.74,13.86C11.71,14.27 10.55,13.77 10.14,12.74C9.88,12.08 10,11.32 10.43,10.76L10.33,10.5L9.04,7.29L9.03,7.26C8.83,6.75 9.08,6.17 9.59,5.96C9.72,5.91 9.85,5.89 10,5.89V5.89M14,6A1,1 0 0,1 15,7A1,1 0 0,1 14,8A1,1 0 0,1 13,7A1,1 0 0,1 14,6M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9M7,9A1,1 0 0,1 8,10A1,1 0 0,1 7,11A1,1 0 0,1 6,10A1,1 0 0,1 7,9Z";
var mdiGavel = "M2.3,20.28L11.9,10.68L10.5,9.26L9.78,9.97C9.39,10.36 8.76,10.36 8.37,9.97L7.66,9.26C7.27,8.87 7.27,8.24 7.66,7.85L13.32,2.19C13.71,1.8 14.34,1.8 14.73,2.19L15.44,2.9C15.83,3.29 15.83,3.92 15.44,4.31L14.73,5L16.15,6.43C16.54,6.04 17.17,6.04 17.56,6.43C17.95,6.82 17.95,7.46 17.56,7.85L18.97,9.26L19.68,8.55C20.07,8.16 20.71,8.16 21.1,8.55L21.8,9.26C22.19,9.65 22.19,10.29 21.8,10.68L16.15,16.33C15.76,16.72 15.12,16.72 14.73,16.33L14.03,15.63C13.63,15.24 13.63,14.6 14.03,14.21L14.73,13.5L13.32,12.09L3.71,21.7C3.32,22.09 2.69,22.09 2.3,21.7C1.91,21.31 1.91,20.67 2.3,20.28M20,19A2,2 0 0,1 22,21V22H12V21A2,2 0 0,1 14,19H20Z";
var mdiGenderFemale = "M12,4A6,6 0 0,1 18,10C18,12.97 15.84,15.44 13,15.92V18H15V20H13V22H11V20H9V18H11V15.92C8.16,15.44 6,12.97 6,10A6,6 0 0,1 12,4M12,6A4,4 0 0,0 8,10A4,4 0 0,0 12,14A4,4 0 0,0 16,10A4,4 0 0,0 12,6Z";
var mdiGenderMale = "M9,9C10.29,9 11.5,9.41 12.47,10.11L17.58,5H13V3H21V11H19V6.41L13.89,11.5C14.59,12.5 15,13.7 15,15A6,6 0 0,1 9,21A6,6 0 0,1 3,15A6,6 0 0,1 9,9M9,11A4,4 0 0,0 5,15A4,4 0 0,0 9,19A4,4 0 0,0 13,15A4,4 0 0,0 9,11Z";
var mdiGenderMaleFemale = "M17.58,4H14V2H21V9H19V5.41L15.17,9.24C15.69,10.03 16,11 16,12C16,14.42 14.28,16.44 12,16.9V19H14V21H12V23H10V21H8V19H10V16.9C7.72,16.44 6,14.42 6,12A5,5 0 0,1 11,7C12,7 12.96,7.3 13.75,7.83L17.58,4M11,9A3,3 0 0,0 8,12A3,3 0 0,0 11,15A3,3 0 0,0 14,12A3,3 0 0,0 11,9Z";
var mdiGenderMaleFemaleVariant = "M7 3A5 5 0 0 0 9 7A5 5 0 0 0 7 11A5 5 0 0 0 11 15.9V18H9V20H11V22H13V20H15V18H13V15.9A5 5 0 0 0 17 11A5 5 0 0 0 15 7A5 5 0 0 0 17 3H15A3 3 0 0 1 12 6A3 3 0 0 1 9 3M12 8A3 3 0 0 1 15 11A3 3 0 0 1 12 14A3 3 0 0 1 9 11A3 3 0 0 1 12 8Z";
var mdiGenderNonBinary = "M13 3H11V5.27L9.04 4.13L8.04 5.87L10 7L8.04 8.13L9.04 9.87L11 8.73V12.1C8.72 12.56 7 14.58 7 17C7 19.76 9.24 22 12 22S17 19.76 17 17C17 14.58 15.28 12.56 13 12.1V8.73L14.96 9.87L15.96 8.13L14 7L15.96 5.87L14.96 4.13L13 5.27V3M12 20C10.35 20 9 18.65 9 17S10.35 14 12 14 15 15.35 15 17 13.65 20 12 20Z";
var mdiGenderTransgender = "M19.58,3H15V1H23V9H21V4.41L16.17,9.24C16.69,10.03 17,11 17,12C17,14.42 15.28,16.44 13,16.9V19H15V21H13V23H11V21H9V19H11V16.9C8.72,16.44 7,14.42 7,12C7,11 7.3,10.04 7.82,9.26L6.64,8.07L5.24,9.46L3.83,8.04L5.23,6.65L3,4.42V8H1V1H8V3H4.41L6.64,5.24L8.08,3.81L9.5,5.23L8.06,6.66L9.23,7.84C10,7.31 11,7 12,7C13,7 13.96,7.3 14.75,7.83L19.58,3M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z";
var mdiGentoo = "M10.28,2C9.93,2 9.57,2.03 9.23,2.1C5.61,2.76 3.06,5.89 2.85,7.96C2.74,8.97 3.29,9.73 3.59,10.06C4.4,10.97 6.03,11.66 7.07,12.23C5.56,13.5 4.87,14.14 4.19,14.86C3.17,15.93 2.45,17.1 2.45,17.95C2.45,18.22 2.4,19.09 2.76,19.77C2.89,20.03 3.27,20.89 4.41,21.53C5.14,21.94 6.17,22.09 7.19,21.95C10.33,21.5 14.54,18.83 17.55,16.35C19.46,14.77 20.86,13.23 21.26,12.5C21.59,11.87 21.63,10.78 21.44,10.09C20.9,8.14 16.53,4.15 12.96,2.55C12.14,2.18 11.2,2 10.28,2M11.34,4.91C11.59,4.91 11.81,4.94 12,5C13.15,5.3 15.08,6.68 14.91,7.94C14.68,9.6 13.23,10.27 11.56,10.03C10.58,9.9 8.63,8.8 8.78,6.89C8.89,5.4 10.3,4.9 11.34,4.91M11.32,6.65C11.05,6.65 10.84,6.71 10.74,6.87C10.27,7.59 10.5,8.09 10.92,8.42C11.07,8.04 12.71,8.45 12.75,8.79C14.17,7.72 12.36,6.66 11.32,6.65Z";
var mdiGesture = "M4.59,6.89C5.29,6.18 6,5.54 6.3,5.67C6.8,5.87 6.3,6.7 6,7.19C5.75,7.61 3.14,11.08 3.14,13.5C3.14,14.78 3.62,15.84 4.5,16.5C5.23,17.04 6.22,17.21 7.12,16.94C8.19,16.63 9.07,15.54 10.18,14.17C11.39,12.68 13,10.73 14.26,10.73C15.89,10.73 15.91,11.74 16,12.5C12.24,13.16 10.64,16.19 10.64,17.89C10.64,19.59 12.08,21 13.85,21C15.5,21 18.14,19.65 18.54,14.88H21V12.38H18.53C18.38,10.73 17.44,8.18 14.5,8.18C12.25,8.18 10.32,10.09 9.56,11C9,11.75 7.5,13.5 7.27,13.74C7,14.04 6.59,14.58 6.16,14.58C5.71,14.58 5.44,13.75 5.8,12.66C6.15,11.57 7.2,9.8 7.65,9.14C8.43,8 8.95,7.22 8.95,5.86C8.95,3.69 7.31,3 6.44,3C5.12,3 3.97,4 3.72,4.25C3.36,4.61 3.06,4.91 2.84,5.18L4.59,6.89M13.88,18.55C13.57,18.55 13.14,18.29 13.14,17.83C13.14,17.23 13.87,15.63 16,15.07C15.71,17.76 14.58,18.55 13.88,18.55Z";
var mdiGestureDoubleTap = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M11,5A4,4 0 0,1 15,9C15,10.5 14.2,11.77 13,12.46V11.24C13.61,10.69 14,9.89 14,9A3,3 0 0,0 11,6A3,3 0 0,0 8,9C8,9.89 8.39,10.69 9,11.24V12.46C7.8,11.77 7,10.5 7,9A4,4 0 0,1 11,5M11,3A6,6 0 0,1 17,9C17,10.7 16.29,12.23 15.16,13.33L14.16,12.88C15.28,11.96 16,10.56 16,9A5,5 0 0,0 11,4A5,5 0 0,0 6,9C6,11.05 7.23,12.81 9,13.58V14.66C6.67,13.83 5,11.61 5,9A6,6 0 0,1 11,3Z";
var mdiGesturePinch = "M13,9A1,1 0 0,1 14,8A1,1 0 0,1 15,9V13.47L16.21,13.6L21.15,15.8C21.67,16.04 22,16.56 22,17.14V21.5C21.97,22.32 21.32,22.97 20.5,23H14C13.62,23 13.26,22.85 13,22.57L8.1,18.37L8.84,17.6C9.03,17.39 9.3,17.28 9.58,17.28H9.8L13,19V9M14,5C15.42,5 16.74,5.76 17.45,7C18.56,8.9 17.91,11.35 16,12.46V11.23C16.64,10.67 17,9.85 17,9A3,3 0 0,0 14,6A3,3 0 0,0 11,9C11,9.85 11.36,10.67 12,11.23V12.46C10.77,11.75 10,10.43 10,9A4,4 0 0,1 14,5M4,9L7,12H5V15H3V12H1L4,9M4,7L1,4H3V1H5V4H7L4,7M9,14C9.73,14 10.41,14.19 11,14.54V15.76C10.47,15.29 9.77,15 9,15A3,3 0 0,0 6,18C6,19 6.5,19.87 7.22,20.42L9.31,22H9A4,4 0 0,1 5,18A4,4 0 0,1 9,14Z";
var mdiGestureSpread = "M4,1L7,4H5V7H3V4H1L4,1M4,15L1,12H3V9H5V12H7L4,15M13,9A1,1 0 0,1 14,8A1,1 0 0,1 15,9V13.47L16.21,13.6L21.15,15.8C21.67,16.04 22,16.56 22,17.14V21.5C21.97,22.32 21.32,22.97 20.5,23H14C13.62,23 13.26,22.85 13,22.57L8.1,18.37L8.84,17.6C9.03,17.39 9.3,17.28 9.58,17.28H9.8L13,19V9M14,5C15.42,5 16.74,5.76 17.45,7C18.56,8.9 17.91,11.35 16,12.46V11.23C16.64,10.67 17,9.85 17,9A3,3 0 0,0 14,6A3,3 0 0,0 11,9C11,9.85 11.36,10.67 12,11.23V12.46C10.77,11.75 10,10.43 10,9A4,4 0 0,1 14,5M9,14C9.73,14 10.41,14.19 11,14.54V15.76C10.47,15.29 9.77,15 9,15A3,3 0 0,0 6,18C6,19 6.5,19.87 7.22,20.42L9.31,22H9A4,4 0 0,1 5,18A4,4 0 0,1 9,14Z";
var mdiGestureSwipe = "M20.11,3.89L22,2V7H17L19.08,4.92C18.55,4.23 17.64,3.66 16.36,3.19C15.08,2.72 13.63,2.5 12,2.5C10.38,2.5 8.92,2.72 7.64,3.19C6.36,3.66 5.45,4.23 4.92,4.92L7,7H2V2L3.89,3.89C4.64,3 5.74,2.31 7.2,1.78C8.65,1.25 10.25,1 12,1C13.75,1 15.35,1.25 16.8,1.78C18.26,2.31 19.36,3 20.11,3.89M19.73,16.27V16.45L19,21.7C18.92,22.08 18.76,22.39 18.5,22.64C18.23,22.89 17.91,23 17.53,23H10.73C10.36,23 10,22.86 9.7,22.55L4.73,17.63L5.53,16.83C5.75,16.61 6,16.5 6.33,16.5H6.56L10,17.25V6.5C10,6.11 10.13,5.76 10.43,5.46C10.73,5.16 11.08,5 11.5,5C11.89,5 12.24,5.16 12.54,5.46C12.84,5.76 13,6.11 13,6.5V12.5H13.78C13.88,12.5 14.05,12.55 14.3,12.61L18.84,14.86C19.44,15.14 19.73,15.61 19.73,16.27Z";
var mdiGestureSwipeDown = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M1,9L4,12L7,9H5V3H3V9H1Z";
var mdiGestureSwipeHorizontal = "M6,1L3,4L6,7V5H9V7L12,4L9,1V3H6V1M11,8A1,1 0 0,0 10,9V19L6.8,17.28H6.58C6.3,17.28 6.03,17.39 5.84,17.6L5.1,18.37L10,22.57C10.26,22.85 10.62,23 11,23H17.5A1.5,1.5 0 0,0 19,21.5V17.14C19,16.56 18.68,16.03 18.15,15.79L13.21,13.6L12,13.47V9A1,1 0 0,0 11,8Z";
var mdiGestureSwipeLeft = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M3,4L6,7V5H12V3H6V1L3,4Z";
var mdiGestureSwipeRight = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M12,4L9,1V3H3V5H9V7L12,4Z";
var mdiGestureSwipeUp = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M7,6L4,3L1,6H3V12H5V6H7Z";
var mdiGestureSwipeVertical = "M4,3L1,6H3V9H1L4,12L7,9H5V6H7L4,3M11,8A1,1 0 0,0 10,9V19L6.8,17.28H6.58C6.3,17.28 6.03,17.39 5.84,17.6L5.1,18.37L10,22.57C10.26,22.85 10.62,23 11,23H17.5A1.5,1.5 0 0,0 19,21.5V17.14C19,16.56 18.68,16.03 18.15,15.79L13.21,13.6L12,13.47V9A1,1 0 0,0 11,8Z";
var mdiGestureTap = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M11,5A4,4 0 0,1 15,9C15,10.5 14.2,11.77 13,12.46V11.24C13.61,10.69 14,9.89 14,9A3,3 0 0,0 11,6A3,3 0 0,0 8,9C8,9.89 8.39,10.69 9,11.24V12.46C7.8,11.77 7,10.5 7,9A4,4 0 0,1 11,5Z";
var mdiGestureTapBox = "M20 2H4C2.89 2 2 2.89 2 4V20C2 21.11 2.89 22 4 22H20C21.11 22 22 21.11 22 20V4C22 2.89 21.11 2 20 2M11 4C13.21 4 15 5.79 15 8C15 9.5 14.2 10.77 13 11.46V10.24C13.61 9.69 14 8.89 14 8C14 6.34 12.66 5 11 5S8 6.34 8 8C8 8.89 8.39 9.69 9 10.24V11.46C7.8 10.77 7 9.5 7 8C7 5.79 8.79 4 11 4M18 18.5C17.97 19.32 17.32 19.97 16.5 20H11C10.62 20 10.26 19.85 10 19.57L6 15.37L6.74 14.6C6.93 14.39 7.2 14.28 7.5 14.28H7.7L10 16V8C10 7.45 10.45 7 11 7S12 7.45 12 8V12.47L13.21 12.6L17.15 14.79C17.68 15.03 18 15.56 18 16.14V18.5Z";
var mdiGestureTapButton = "M13 5C15.21 5 17 6.79 17 9C17 10.5 16.2 11.77 15 12.46V11.24C15.61 10.69 16 9.89 16 9C16 7.34 14.66 6 13 6S10 7.34 10 9C10 9.89 10.39 10.69 11 11.24V12.46C9.8 11.77 9 10.5 9 9C9 6.79 10.79 5 13 5M20 20.5C19.97 21.32 19.32 21.97 18.5 22H13C12.62 22 12.26 21.85 12 21.57L8 17.37L8.74 16.6C8.93 16.39 9.2 16.28 9.5 16.28H9.7L12 18V9C12 8.45 12.45 8 13 8S14 8.45 14 9V13.47L15.21 13.6L19.15 15.79C19.68 16.03 20 16.56 20 17.14V20.5M20 2H4C2.9 2 2 2.9 2 4V12C2 13.11 2.9 14 4 14H8V12L4 12L4 4H20L20 12H18V14H20V13.96L20.04 14C21.13 14 22 13.09 22 12V4C22 2.9 21.11 2 20 2Z";
var mdiGestureTapHold = "M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M9,12.44V9A2,2 0 0,1 11,7A2,2 0 0,1 13,9V12.44C14.19,11.75 15,10.47 15,9A4,4 0 0,0 11,5A4,4 0 0,0 7,9C7,10.47 7.81,11.75 9,12.44Z";
var mdiGestureTwoDoubleTap = "M19,15.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V7A1,1 0 0,1 13,6A1,1 0 0,1 14,7V12L18.15,13.84C18.66,14.07 19,14.58 19,15.14M13,3A4,4 0 0,1 17,7C17,8.5 16.2,9.77 15,10.46V9.24C15.61,8.69 16,7.89 16,7A3,3 0 0,0 13,4C11.65,4 10.5,4.9 10.13,6.13C8.9,6.5 8,7.65 8,9C8,9.89 8.39,10.69 9,11.24V12.46C7.8,11.77 7,10.5 7,9C7,7.38 7.97,6 9.35,5.35C10,3.97 11.38,3 13,3M13,1A6,6 0 0,1 19,7C19,9.06 17.96,10.88 16.38,11.96L15.26,11.46C16.89,10.64 18,8.95 18,7A5,5 0 0,0 13,2C11.11,2 9.46,3.05 8.61,4.61C7.05,5.46 6,7.11 6,9C6,11.05 7.23,12.81 9,13.58V14.66C6.67,13.83 5,11.61 5,9C5,6.83 6.15,4.93 7.88,3.88C8.93,2.15 10.83,1 13,1Z";
var mdiGestureTwoTap = "M19,15.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V7A1,1 0 0,1 13,6A1,1 0 0,1 14,7V12L18.15,13.84C18.66,14.07 19,14.58 19,15.14M15,10.45V9.24L15,9.23C15.23,9.03 15.42,8.79 15.57,8.54C15.84,8.09 16,7.56 16,7A3,3 0 0,0 13,4C12.21,4 11.5,4.31 10.95,4.81L10.81,4.95C10.68,5.09 10.56,5.24 10.46,5.4C10.36,5.56 10.27,5.74 10.2,5.92C10.17,6 10.15,6.06 10.13,6.13C8.9,6.5 8,7.65 8,9C8,9.7 8.24,10.34 8.64,10.85C8.74,11 8.87,11.11 9,11.23V11.24L9,12.46V12.46C7.8,11.77 7,10.5 7,9C7,7.38 7.97,6 9.35,5.35C10,3.97 11.38,3 13,3A4,4 0 0,1 17,7C17,8.5 16.2,9.77 15,10.46V10.45Z";
var mdiGhost = "M12,2A9,9 0 0,0 3,11V22L6,19L9,22L12,19L15,22L18,19L21,22V11A9,9 0 0,0 12,2M9,8A2,2 0 0,1 11,10A2,2 0 0,1 9,12A2,2 0 0,1 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10A2,2 0 0,1 15,12A2,2 0 0,1 13,10A2,2 0 0,1 15,8Z";
var mdiGhostOff = "M2,3.27L3.28,2L22,20.72L20.73,22L17.87,19.13L15,22L12,19L9,22L6,19L3,22V11C3,9.09 3.59,7.33 4.6,5.87L2,3.27M12,2A9,9 0 0,1 21,11V17.18L15.7,11.88C16.46,11.59 17,10.86 17,10A2,2 0 0,0 15,8C14.14,8 13.41,8.54 13.13,9.3L7.2,3.38C8.59,2.5 10.24,2 12,2M7,10A2,2 0 0,0 9,12C9.5,12 9.93,11.83 10.27,11.54L7.46,8.73C7.17,9.07 7,9.5 7,10Z";
var mdiGhostOffOutline = "M8.29 5.09L6.84 3.64C8.3 2.61 10.08 2 12 2C16.97 2 21 6.03 21 11V17.8L19 15.8V11C19 7.14 15.86 4 12 4C10.63 4 9.36 4.4 8.29 5.09M22.11 21.46L20.84 22.73L17.56 19.45L15 22L12 19L9 22L6 19L3 22V11C3 9.26 3.5 7.63 4.36 6.25L1.11 3L2.39 1.73L6.89 6.23L8.69 8.03H8.69L10.97 10.31V10.31L17.41 16.76L17.42 16.76L21 20.34V20.35L22.11 21.46M16.14 18.03L9.89 11.78C9.62 11.92 9.32 12 9 12C7.9 12 7 11.11 7 10C7 9.68 7.08 9.38 7.22 9.11L5.82 7.71C5.3 8.69 5 9.81 5 11V17.17L6 16.17L7.41 17.59L9 19.17L10.59 17.59L12 16.17L13.41 17.59L15 19.17L16.14 18.03M15 8C13.96 8 13.11 8.8 13 9.82L15.18 12C16.2 11.89 17 11.04 17 10C17 8.9 16.11 8 15 8Z";
var mdiGhostOutline = "M12 2C7.03 2 3 6.03 3 11V22L6 19L9 22L12 19L15 22L18 19L21 22V11C21 6.03 16.97 2 12 2M19 17.17L18 16.17L16.59 17.59L15 19.17L13.41 17.59L12 16.17L10.59 17.59L9 19.17L7.41 17.59L6 16.17L5 17.17V11C5 7.14 8.14 4 12 4S19 7.14 19 11V17.17M11 10C11 11.11 10.11 12 9 12S7 11.11 7 10 7.9 8 9 8 11 8.9 11 10M17 10C17 11.11 16.11 12 15 12S13 11.11 13 10 13.9 8 15 8 17 8.9 17 10Z";
var mdiGif = "M11,8H13V16H11V8M7.67,8H4.33C3.53,8 3,8.67 3,9.33V14.67C3,15.33 3.53,16 4.33,16H7.67C8.47,16 9,15.33 9,14.67V12H7V14H5V10H9V9.33C9,8.67 8.47,8 7.67,8M21,10V8H15V16H17V14H19.5V12H17V10H21Z";
var mdiGift = "M9.06,1.93C7.17,1.92 5.33,3.74 6.17,6H3A2,2 0 0,0 1,8V10A1,1 0 0,0 2,11H11V8H13V11H22A1,1 0 0,0 23,10V8A2,2 0 0,0 21,6H17.83C19,2.73 14.6,0.42 12.57,3.24L12,4L11.43,3.22C10.8,2.33 9.93,1.94 9.06,1.93M9,4C9.89,4 10.34,5.08 9.71,5.71C9.08,6.34 8,5.89 8,5A1,1 0 0,1 9,4M15,4C15.89,4 16.34,5.08 15.71,5.71C15.08,6.34 14,5.89 14,5A1,1 0 0,1 15,4M2,12V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V12H13V20H11V12H2Z";
var mdiGiftOff = "M1.11 3L4.14 6.04H3C1.9 6.04 1 6.93 1 8.04V10.04C1 10.59 1.45 11.04 2 11.04H9.15L10.15 12.04H2V20.04C2 21.14 2.9 22.04 4 22.04H20C20.05 22.04 20.09 22.03 20.13 22L21.56 23.45L22.83 22.18L2.39 1.73L1.11 3M11 12.89L13 14.89V20.04H11V12.89M22 12.04V18.8L15.24 12.04H22M21 6.04H17.83C19 2.77 14.6 .455 12.57 3.28L12 4.04L11.43 3.26C10.8 2.37 9.93 2 9.06 1.97C8.06 1.96 7.08 2.5 6.5 3.3L8.04 4.84C8.13 4.38 8.5 4.04 9 4.04C9.89 4.04 10.34 5.12 9.71 5.75C9.56 5.89 9.39 6 9.21 6L11.24 8.04H13V9.8L14.24 11.04H22C22.55 11.04 23 10.59 23 10.04V8.04C23 6.93 22.11 6.04 21 6.04M15.71 5.75C15.08 6.38 14 5.93 14 5.04C14 4.5 14.45 4.04 15 4.04C15.89 4.04 16.34 5.12 15.71 5.75Z";
var mdiGiftOffOutline = "M21 6H17.83C17.94 5.69 18 5.35 18 5C18 3.34 16.66 2 15 2C14 2 13.12 2.5 12.57 3.24V3.23L12 4L11.43 3.23V3.24C10.88 2.5 10 2 9 2C7.97 2 7.06 2.5 6.5 3.32L8.03 4.83C8.12 4.36 8.5 4 9 4C9.55 4 10 4.45 10 5C10 5.5 9.64 5.88 9.17 5.97L13 9.8V8H21V10H13.2L15.2 12H20V16.8L22 18.8V12C22.55 12 23 11.55 23 11V8C23 6.9 22.11 6 21 6M15 6C14.45 6 14 5.55 14 5S14.45 4 15 4 16 4.45 16 5 15.55 6 15 6M1.11 3L4.11 6H3C1.9 6 1 6.9 1 8V11C1 11.55 1.45 12 2 12V20C2 21.11 2.9 22 4 22H20C20.03 22 20.07 22 20.1 22L21.56 23.45L22.83 22.18L2.39 1.73L1.11 3M13 14.89L18.11 20H13V14.89M11 12.89V20H4V12H10.11L11 12.89M8.11 10H3V8H6.11L8.11 10Z";
var mdiGiftOpen = "M22 10.92L19.26 9.33C21.9 7.08 19.25 2.88 16.08 4.31L15.21 4.68L15.1 3.72C15 2.64 14.44 1.87 13.7 1.42C12.06 .467 9.56 1.12 9.16 3.5L6.41 1.92C5.45 1.36 4.23 1.69 3.68 2.65L2.68 4.38C2.4 4.86 2.57 5.47 3.05 5.75L10.84 10.25L12.34 7.65L14.07 8.65L12.57 11.25L20.36 15.75C20.84 16 21.46 15.86 21.73 15.38L22.73 13.65C23.28 12.69 22.96 11.47 22 10.92M12.37 5C11.5 5.25 10.8 4.32 11.24 3.55C11.5 3.07 12.13 2.91 12.61 3.18C13.38 3.63 13.23 4.79 12.37 5M17.56 8C16.7 8.25 16 7.32 16.44 6.55C16.71 6.07 17.33 5.91 17.8 6.18C18.57 6.63 18.42 7.79 17.56 8M20.87 16.88C21.28 16.88 21.67 16.74 22 16.5V20C22 21.11 21.11 22 20 22H4C2.9 22 2 21.11 2 20V11H10.15L11 11.5V20H13V12.65L19.87 16.61C20.17 16.79 20.5 16.88 20.87 16.88Z";
var mdiGiftOpenOutline = "M22 10.87L19.26 9.28C19.5 9.07 19.73 8.8 19.9 8.5C20.73 7.07 20.24 5.23 18.8 4.4C17.94 3.9 16.93 3.9 16.08 4.26L16.09 4.25L15.21 4.64L15.1 3.68L15.09 3.69C15 2.78 14.47 1.9 13.61 1.4C12.17 .575 10.34 1.07 9.5 2.5C9.33 2.8 9.22 3.13 9.16 3.45L6.41 1.87C5.45 1.32 4.23 1.64 3.68 2.6L2.18 5.2C1.9 5.68 2.07 6.29 2.55 6.56L4.28 7.56L8.5 10H2V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V14.87L22.73 13.6C23.28 12.64 22.96 11.42 22 10.87M16.44 6.5C16.71 6 17.33 5.86 17.8 6.13C18.28 6.41 18.45 7 18.17 7.5C17.89 8 17.28 8.14 16.8 7.87C16.33 7.59 16.16 7 16.44 6.5M14.07 8.6L21 12.6L20 14.33L13.07 10.33L14.07 8.6M11 20H4V12H11V20M11.34 9.33L4.41 5.33L5.41 3.6L12.34 7.6L11.34 9.33M11.61 4.87C11.13 4.59 10.97 4 11.24 3.5C11.5 3 12.13 2.86 12.61 3.13C13.09 3.41 13.25 4 12.97 4.5C12.7 5 12.09 5.14 11.61 4.87M13 20V12.6L20 16.64V20H13Z";
var mdiGiftOutline = "M22,12V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12A1,1 0 0,1 1,11V8A2,2 0 0,1 3,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H21A2,2 0 0,1 23,8V11A1,1 0 0,1 22,12M4,20H11V12H4V20M20,20V12H13V20H20M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M3,8V10H11V8H3M13,8V10H21V8H13Z";
var mdiGit = "M2.6,10.59L8.38,4.8L10.07,6.5C9.83,7.35 10.22,8.28 11,8.73V14.27C10.4,14.61 10,15.26 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.26 13.6,14.61 13,14.27V9.41L15.07,11.5C15,11.65 15,11.82 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10C16.82,10 16.65,10 16.5,10.07L13.93,7.5C14.19,6.57 13.71,5.55 12.78,5.16C12.35,5 11.9,4.96 11.5,5.07L9.8,3.38L10.59,2.6C11.37,1.81 12.63,1.81 13.41,2.6L21.4,10.59C22.19,11.37 22.19,12.63 21.4,13.41L13.41,21.4C12.63,22.19 11.37,22.19 10.59,21.4L2.6,13.41C1.81,12.63 1.81,11.37 2.6,10.59Z";
var mdiGithub = "M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z";
var mdiGitlab = "M21.94 13.11L20.89 9.89C20.89 9.86 20.88 9.83 20.87 9.8L18.76 3.32C18.65 3 18.33 2.75 17.96 2.75C17.6 2.75 17.28 3 17.17 3.33L15.17 9.5H8.84L6.83 3.33C6.72 3 6.4 2.75 6.04 2.75H6.04C5.67 2.75 5.35 3 5.24 3.33L3.13 9.82C3.13 9.82 3.13 9.83 3.13 9.83L2.06 13.11C1.9 13.61 2.07 14.15 2.5 14.45L11.72 21.16C11.89 21.28 12.11 21.28 12.28 21.15L21.5 14.45C21.93 14.15 22.1 13.61 21.94 13.11M8.15 10.45L10.72 18.36L4.55 10.45M13.28 18.37L15.75 10.78L15.85 10.45H19.46L13.87 17.61M17.97 3.94L19.78 9.5H16.16M14.86 10.45L13.07 15.96L12 19.24L9.14 10.45M6.03 3.94L7.84 9.5H4.23M3.05 13.69C2.96 13.62 2.92 13.5 2.96 13.4L3.75 10.97L9.57 18.42M20.95 13.69L14.44 18.42L14.46 18.39L20.25 10.97L21.04 13.4C21.08 13.5 21.04 13.62 20.95 13.69";
var mdiGlassCocktail = "M7.5,7L5.5,5H18.5L16.5,7M11,13V19H6V21H18V19H13V13L21,5V3H3V5L11,13Z";
var mdiGlassCocktailOff = "M13.33 12.67L7.66 7L6.13 5.47L2.39 1.73L1.11 3L3 4.89V5L11 13V19H6V21H18V19.89L20.84 22.73L22.11 21.46L13.33 12.67M13 19V14.89L17.11 19H13M8.2 5L6.2 3H21V5L14.6 11.4L10.2 7H16.5L18.5 5H8.2Z";
var mdiGlassFlute = "M8,2H16C15.67,5 15.33,8 14.75,9.83C14.17,11.67 13.33,12.33 12.92,14.08C12.5,15.83 12.5,18.67 13.08,20C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,20C11.5,18.67 11.5,15.83 11.08,14.08C10.67,12.33 9.83,11.67 9.25,9.83C8.67,8 8.33,5 8,2M10,4C10.07,5.03 10.15,6.07 10.24,7H13.76C13.85,6.07 13.93,5.03 14,4H10Z";
var mdiGlassMug = "M10,4V7H18V4H10M8,2H20L21,2V3L20,4V20L21,21V22H20L8,22H7V21L8,20V18.6L4.2,16.83C3.5,16.5 3,15.82 3,15V8A2,2 0 0,1 5,6H8V4L7,3V2H8M5,15L8,16.39V8H5V15Z";
var mdiGlassMugOff = "M20 19.35V19.34L6.66 6L6.07 5.41L2.39 1.73L1.11 3L4.26 6.15C3.5 6.44 3 7.16 3 8V15C3 15.82 3.5 16.5 4.2 16.83L8 18.6V20L7 21V22H20.11L20.84 22.73L22.11 21.46L20 19.35M8 16.39L5 15V8H6.11L8 9.89V16.39M8 4L7 3V2H21V3L20 4V16.8L10.2 7H18V4H10V6.8L8 4.8V4Z";
var mdiGlassMugVariant = "M9.5 3C7.56 3 5.85 4.24 5.23 6.08C3.36 6.44 2 8.09 2 10C2 12.21 3.79 14 6 14V22H17V20H20C20.55 20 21 19.55 21 19V11C21 10.45 20.55 10 20 10H18V8C18 5.79 16.21 4 14 4H12.32C11.5 3.35 10.53 3 9.5 3M9.5 5C10.29 5 11.03 5.37 11.5 6H14C15.11 6 16 6.9 16 8H12C10 8 9.32 9.13 8.5 10.63C7.68 12.13 6 12 6 12C4.89 12 4 11.11 4 10C4 8.9 4.89 8 6 8H7V7.5C7 6.12 8.12 5 9.5 5M17 12H19V18H17Z";
var mdiGlassMugVariantOff = "M8.44 5.24L7 3.79C7.71 3.29 8.57 3 9.5 3C10.53 3 11.5 3.35 12.32 4H14C16.21 4 18 5.79 18 8V10H20C20.55 10 21 10.45 21 11V17.8L19 15.8V12H17V13.8L11.26 8.06C11.5 8 11.73 8 12 8H16C16 6.9 15.11 6 14 6H11.5C11.03 5.37 10.29 5 9.5 5C9.12 5 8.76 5.09 8.44 5.24M22.11 21.46L20.84 22.73L18.11 20H17V22H6V14C3.79 14 2 12.21 2 10C2 8.37 3 6.94 4.44 6.33L1.11 3L2.39 1.73L7.19 6.54L9.61 8.96L17 16.34V16.35L18.65 18H18.66L20.5 19.84V19.85L22.11 21.46M8.59 10.5L6.11 8H6C4.89 8 4 8.9 4 10C4 11.11 4.89 12 6 12C6 12 7.68 12.13 8.5 10.63L8.59 10.5Z";
var mdiGlassPintOutline = "M4 2L6 22H17L19 2H4M6.2 4H16.8L15.2 20H7.8L6.2 4Z";
var mdiGlassStange = "M8,2H16V22H8V2M10,4V7H14V4H10Z";
var mdiGlassTulip = "M8,2H16C15.67,2.67 15.33,3.33 15.58,5C15.83,6.67 16.67,9.33 16.25,10.74C15.83,12.14 14.17,12.28 13.33,13.86C12.5,15.44 12.5,18.47 13.08,19.9C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,19.9C11.5,18.47 11.5,15.44 10.67,13.86C9.83,12.28 8.17,12.14 7.75,10.74C7.33,9.33 8.17,6.67 8.42,5C8.67,3.33 8.33,2.67 8,2M10,4C10,5.19 9.83,6.17 9.64,7H14.27C14.13,6.17 14,5.19 14,4H10Z";
var mdiGlassWine = "M15.5,21.27L14.66,21.18C13.9,21.11 13.25,20.6 13,19.87C12.47,17.91 12.47,15.83 13,13.87C15.32,13.4 17,11.37 17,9C17,7 15,2 15,2H9C9,2 7,7 7,9C7,11.38 8.67,13.42 11,13.9C11.53,15.86 11.53,17.94 11,19.9C10.76,20.62 10.12,21.13 9.37,21.21L8.5,21.3C8.5,21.3 8,21.28 8,22H16C16,21.28 15.5,21.27 15.5,21.27M9.44,7L10.44,4H13.56L14.56,7H9.44Z";
var mdiGlasses = "M3,10C2.76,10 2.55,10.09 2.41,10.25C2.27,10.4 2.21,10.62 2.24,10.86L2.74,13.85C2.82,14.5 3.4,15 4,15H7C7.64,15 8.36,14.44 8.5,13.82L9.56,10.63C9.6,10.5 9.57,10.31 9.5,10.19C9.39,10.07 9.22,10 9,10H3M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17M15,10C14.78,10 14.61,10.07 14.5,10.19C14.42,10.31 14.4,10.5 14.45,10.7L15.46,13.75C15.64,14.44 16.36,15 17,15H20C20.59,15 21.18,14.5 21.25,13.89L21.76,10.82C21.79,10.62 21.73,10.4 21.59,10.25C21.45,10.09 21.24,10 21,10H15Z";
var mdiGlobeLight = "M13 8.08V2H11V8.08C7.61 8.57 5 11.47 5 15C5 18.87 8.13 22 12 22S19 18.87 19 15C19 11.47 16.39 8.57 13 8.08M12 20C9.24 20 7 17.76 7 15C7 13.87 7.39 12.84 8.03 12H15.97C16.61 12.84 17 13.87 17 15C17 17.76 14.76 20 12 20Z";
var mdiGlobeModel = "M17.36,2.64L15.95,4.06C17.26,5.37 18,7.14 18,9A7,7 0 0,1 11,16C9.15,16 7.37,15.26 6.06,13.95L4.64,15.36C6.08,16.8 7.97,17.71 10,17.93V20H6V22H16V20H12V17.94C16.55,17.43 20,13.58 20,9C20,6.62 19.05,4.33 17.36,2.64M11,3.5A5.5,5.5 0 0,0 5.5,9A5.5,5.5 0 0,0 11,14.5A5.5,5.5 0 0,0 16.5,9A5.5,5.5 0 0,0 11,3.5M11,5.5C12.94,5.5 14.5,7.07 14.5,9A3.5,3.5 0 0,1 11,12.5A3.5,3.5 0 0,1 7.5,9A3.5,3.5 0 0,1 11,5.5Z";
var mdiGmail = "M20,18H18V9.25L12,13L6,9.25V18H4V6H5.2L12,10.25L18.8,6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z";
var mdiGnome = "M18.42,2C14.26,2 13.5,7.93 15.82,7.93C18.16,7.93 22.58,2 18.42,2M12,2.73C11.92,2.73 11.85,2.73 11.78,2.74C9.44,3.04 10.26,7.12 11.5,7.19C12.72,7.27 14.04,2.73 12,2.73M7.93,4.34C7.81,4.34 7.67,4.37 7.53,4.43C5.65,5.21 7.24,8.41 8.3,8.2C9.27,8 9.39,4.3 7.93,4.34M4.93,6.85C4.77,6.84 4.59,6.9 4.41,7.03C2.9,8.07 4.91,10.58 5.8,10.19C6.57,9.85 6.08,6.89 4.93,6.85M13.29,8.77C10.1,8.8 6.03,10.42 5.32,13.59C4.53,17.11 8.56,22 12.76,22C14.83,22 17.21,20.13 17.66,17.77C18,15.97 13.65,16.69 13.81,17.88C14,19.31 12.76,20 11.55,19.1C7.69,16.16 17.93,14.7 17.25,10.69C17.03,9.39 15.34,8.76 13.29,8.77Z";
var mdiGoKart = "M18,10H15.53L14.38,8.28L15.8,7.33L14.7,5.67L10.2,8.67L11.3,10.33L12.73,9.38L13.88,11.12L13,12H10.2L5.83,5.45L4.17,6.55L5.87,9.11C3.04,9.65 1,12.12 1,15V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V15A5,5 0 0,0 18,10M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5Z";
var mdiGoKartTrack = "M22,5.5A3.5,3.5 0 0,0 18.5,2A3.5,3.5 0 0,0 15,5.5V6A3,3 0 0,1 12,9C10,9 9,6 6,6A4,4 0 0,0 2,10V11H4V10A2,2 0 0,1 6,8C6.86,8 7.42,8.45 8.32,9.24C9.28,10.27 10.6,10.9 12,11A5,5 0 0,0 17,6V5.5A1.5,1.5 0 0,1 18.5,4A1.5,1.5 0 0,1 20,5.5C19.86,6.35 19.58,7.18 19.17,7.94C18.5,9.2 18.11,10.58 18,12C18.09,13.37 18.5,14.71 19.21,15.89C19.6,16.54 19.87,17.25 20,18A2,2 0 0,1 18,20A2,2 0 0,1 16,18A3.75,3.75 0 0,0 12.25,14.25A3.75,3.75 0 0,0 8.5,18V18.5A1.5,1.5 0 0,1 7,20A3,3 0 0,1 4,17V15H6V13H0V15H2V17A5,5 0 0,0 7,22A3.5,3.5 0 0,0 10.5,18.5V18A1.75,1.75 0 0,1 12.25,16.25A1.75,1.75 0 0,1 14,18A4,4 0 0,0 18,22A4,4 0 0,0 22,18C22,16 20,14 20,12C20,10 22,7.5 22,5.5Z";
var mdiGog = "M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M10.46,5.54C9.95,5.54 9.54,5.95 9.54,6.46V9.54A0.92,0.92 0 0,0 10.46,10.46H13.54A0.92,0.92 0 0,0 14.46,9.54V6.46C14.46,5.95 14.05,5.54 13.54,5.54H10.46M11.08,6.77H12.92A0.31,0.31 0 0,1 13.23,7.08V8.92A0.31,0.31 0 0,1 12.92,9.23H11.08A0.31,0.31 0 0,1 10.77,8.92V7.08A0.31,0.31 0 0,1 11.08,6.77M4.92,5.54A0.92,0.92 0 0,0 4,6.46V9.54C4,10.05 4.41,10.46 4.92,10.46H7.08V9.23H5.54C5.37,9.23 5.23,9.09 5.23,8.92V7.08C5.23,6.91 5.37,6.77 5.54,6.77H7.38A0.31,0.31 0 0,1 7.69,7.08V10.77A0.31,0.31 0 0,1 7.38,11.08H4V12.31H8C8.5,12.31 8.92,11.89 8.92,11.38V6.46A0.92,0.92 0 0,0 8,5.54H4.92M16,5.54C15.5,5.54 15.08,5.95 15.08,6.46V9.54C15.08,10.05 15.5,10.46 16,10.46H18.15V9.23H16.62C16.45,9.23 16.31,9.09 16.31,8.92V7.08C16.31,6.91 16.45,6.77 16.62,6.77H18.46C18.63,6.77 18.77,6.91 18.77,7.08V10.77C18.77,10.94 18.63,11.08 18.46,11.08H15.08V12.31H19.08C19.59,12.31 20,11.89 20,11.38V6.46C20,5.95 19.59,5.54 19.08,5.54H16M9.85,13.54C9.34,13.54 8.92,13.95 8.92,14.46V17.54C8.92,18.05 9.34,18.46 9.85,18.46H12.92C13.43,18.46 13.85,18.05 13.85,17.54V14.46C13.85,13.95 13.43,13.54 12.92,13.54H9.85M10.46,14.77H12.31C12.5,14.77 12.62,14.91 12.62,15.08V16.92A0.31,0.31 0 0,1 12.31,17.23H10.46C10.29,17.23 10.15,17.09 10.15,16.92V15.08A0.31,0.31 0 0,1 10.46,14.77M4.92,13.54C4.41,13.54 4,13.95 4,14.46V17.54C4,18.05 4.41,18.46 4.92,18.46H8.31V17.23H5.54C5.37,17.23 5.23,17.09 5.23,16.92V15.08C5.23,14.91 5.37,14.77 5.54,14.77H8.31V13.54H4.92M15.38,13.54C14.87,13.54 14.46,13.95 14.46,14.46V18.46H15.69V15.08A0.31,0.31 0 0,1 16,14.77H16.62V18.46H17.85V14.77H18.77V18.46H20V13.54H15.38Z";
var mdiGold = "M1 22L2.5 17H9.5L11 22H1M13 22L14.5 17H21.5L23 22H13M6 15L7.5 10H14.5L16 15H6M23 6.05L19.14 7.14L18.05 11L16.96 7.14L13.1 6.05L16.96 4.96L18.05 1.1L19.14 4.96L23 6.05Z";
var mdiGolf = "M19.5,18A1.5,1.5 0 0,1 21,19.5A1.5,1.5 0 0,1 19.5,21A1.5,1.5 0 0,1 18,19.5A1.5,1.5 0 0,1 19.5,18M17,5.92L11,9V18.03C13.84,18.19 16,19 16,20C16,21.1 13.31,22 10,22C6.69,22 4,21.1 4,20C4,19.26 5.21,18.62 7,18.27V20H9V2L17,5.92Z";
var mdiGolfCart = "M19.89 12.37L18.25 5H19V3H3V7H1V9H3V12.54A6 6 0 0 0 1 17V19H3A3 3 0 0 0 9 19H15A3 3 0 0 0 21 19H23V17A5 5 0 0 0 19.89 12.37M6 20.5A1.5 1.5 0 1 1 7.5 19A1.5 1.5 0 0 1 6 20.5M15.53 12L14.38 10.28L15.8 9.33L14.7 7.67L10.2 10.67L11.3 12.33L12.73 11.38L13.88 13.12L13 14H10.2L5 7V5H16.2L17.75 12M18 20.5A1.5 1.5 0 1 1 19.5 19A1.5 1.5 0 0 1 18 20.5Z";
var mdiGolfTee = "M7 19V17H17V19H15C14.5 19 14 19.2 13.6 19.6S13 20.5 13 21V22H11V21C11 20.5 10.8 20 10.4 19.6S9.5 19 9 19H7M11 6C11 5.7 11.1 5.5 11.3 5.3S11.7 5 12 5 12.5 5.1 12.7 5.3 13 5.7 13 6 12.9 6.5 12.7 6.7 12.3 7 12 7 11.5 6.9 11.3 6.7 11 6.3 11 6M13 8C13 7.7 13.1 7.5 13.3 7.3S13.7 7 14 7 14.5 7.1 14.7 7.3 15 7.7 15 8 14.9 8.5 14.7 8.7 14.3 9 14 9 13.5 8.9 13.3 8.7 13 8.3 13 8M9 8C9 7.7 9.1 7.5 9.3 7.3S9.7 7 10 7 10.5 7.1 10.7 7.3 11 7.7 11 8 10.9 8.5 10.7 8.7 10.3 9 10 9 9.5 8.9 9.3 8.7 9 8.3 9 8M16.9 4.1C15.5 2.7 13.9 2.1 12 2.1S8.4 2.8 7.1 4.1 5 7.1 5 9 5.7 12.6 7 13.9 10 15.9 11.9 15.9 15.5 15.2 16.8 13.9 18.8 10.9 18.8 9 18.3 5.4 16.9 4.1M15.5 12.5C14.5 13.5 13.3 14 12 14S9.4 13.5 8.5 12.5 7 10.4 7 9 7.5 6.4 8.5 5.5 10.6 4 12 4 14.6 4.5 15.5 5.5 17 7.6 17 9 16.5 11.6 15.5 12.5Z";
var mdiGondola = "M18,10H13V7.59L22.12,6.07L21.88,4.59L16.41,5.5C16.46,5.35 16.5,5.18 16.5,5A1.5,1.5 0 0,0 15,3.5A1.5,1.5 0 0,0 13.5,5C13.5,5.35 13.63,5.68 13.84,5.93L13,6.07V5H11V6.41L10.41,6.5C10.46,6.35 10.5,6.18 10.5,6A1.5,1.5 0 0,0 9,4.5A1.5,1.5 0 0,0 7.5,6C7.5,6.36 7.63,6.68 7.83,6.93L1.88,7.93L2.12,9.41L11,7.93V10H6C4.89,10 4,10.9 4,12V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V12A2,2 0 0,0 18,10M6,12H8.25V16H6V12M9.75,16V12H14.25V16H9.75M18,16H15.75V12H18V16Z";
var mdiGoodreads = "M17,12.77C15.96,14.42 14.22,15.5 12.25,15.5C9.07,15.5 6.5,12.7 6.5,9.25C6.5,5.8 9.07,3 12.25,3C14.22,3 15.96,4.08 17,5.73V3H18V15.25C18,20.71 14.54,21 11.5,21C9,21 7.55,19.31 7.13,17H8.14C8.5,18.75 9.54,20 11.5,20C13.72,20 17,20.05 17,15.25V15.25L17,12.77M12.25,4C9.63,4 7.5,6.35 7.5,9.25C7.5,12.15 9.63,14.5 12.25,14.5C14.87,14.5 17,12.15 17,9.25C17,6.35 14.87,4 12.25,4Z";
var mdiGoogle = "M21.35,11.1H12.18V13.83H18.69C18.36,17.64 15.19,19.27 12.19,19.27C8.36,19.27 5,16.25 5,12C5,7.9 8.2,4.73 12.2,4.73C15.29,4.73 17.1,6.7 17.1,6.7L19,4.72C19,4.72 16.56,2 12.1,2C6.42,2 2.03,6.8 2.03,12C2.03,17.05 6.16,22 12.25,22C17.6,22 21.5,18.33 21.5,12.91C21.5,11.76 21.35,11.1 21.35,11.1V11.1Z";
var mdiGoogleAds = "M12.25 1.47C11.55 1.42 10.82 1.58 10.17 1.96C8.41 2.97 7.81 5.21 8.82 6.96L16.16 19.66C17.17 21.42 19.41 22 21.17 21C22.92 20 23.5 17.75 22.5 16L15.18 3.3C14.54 2.2 13.43 1.56 12.25 1.47M6.82 6.76L1.5 16A3.67 3.67 0 0 0 1 17.83A3.67 3.67 0 0 0 4.67 21.5A3.67 3.67 0 0 0 7.84 19.66V19.67L11 14.19C9.65 11.89 8.27 9.6 7.03 7.23C6.95 7.08 6.88 6.92 6.83 6.76ZL16.4 5Z";
var mdiGoogleAnalytics = "M15.86 4.39V19.39C15.86 21.06 17 22 18.25 22C19.39 22 20.64 21.21 20.64 19.39V4.5C20.64 2.96 19.5 2 18.25 2S15.86 3.06 15.86 4.39M9.61 12V19.39C9.61 21.07 10.77 22 12 22C13.14 22 14.39 21.21 14.39 19.39V12.11C14.39 10.57 13.25 9.61 12 9.61S9.61 10.67 9.61 12M5.75 17.23C7.07 17.23 8.14 18.3 8.14 19.61C8.14 20.93 7.07 22 5.75 22S3.36 20.93 3.36 19.61C3.36 18.3 4.43 17.23 5.75 17.23Z";
var mdiGoogleAssistant = "M7,2A6,6 0 0,0 1,8A6,6 0 0,0 7,14A6,6 0 0,0 13,8A6,6 0 0,0 7,2M21.5,6A1.5,1.5 0 0,0 20,7.5A1.5,1.5 0 0,0 21.5,9A1.5,1.5 0 0,0 23,7.5A1.5,1.5 0 0,0 21.5,6M17,8A3,3 0 0,0 14,11A3,3 0 0,0 17,14A3,3 0 0,0 20,11A3,3 0 0,0 17,8M17,15A3.5,3.5 0 0,0 13.5,18.5A3.5,3.5 0 0,0 17,22A3.5,3.5 0 0,0 20.5,18.5A3.5,3.5 0 0,0 17,15Z";
var mdiGoogleCardboard = "M20.74,6H3.2C2.55,6 2,6.57 2,7.27V17.73C2,18.43 2.55,19 3.23,19H8C8.54,19 9,18.68 9.16,18.21L10.55,14.74C10.79,14.16 11.35,13.75 12,13.75C12.65,13.75 13.21,14.16 13.45,14.74L14.84,18.21C15.03,18.68 15.46,19 15.95,19H20.74C21.45,19 22,18.43 22,17.73V7.27C22,6.57 21.45,6 20.74,6M7.22,14.58C6,14.58 5,13.55 5,12.29C5,11 6,10 7.22,10C8.44,10 9.43,11 9.43,12.29C9.43,13.55 8.44,14.58 7.22,14.58M16.78,14.58C15.56,14.58 14.57,13.55 14.57,12.29C14.57,11.03 15.56,10 16.78,10C18,10 19,11.03 19,12.29C19,13.55 18,14.58 16.78,14.58Z";
var mdiGoogleChrome = "M12,20L15.46,14H15.45C15.79,13.4 16,12.73 16,12C16,10.8 15.46,9.73 14.62,9H19.41C19.79,9.93 20,10.94 20,12A8,8 0 0,1 12,20M4,12C4,10.54 4.39,9.18 5.07,8L8.54,14H8.55C9.24,15.19 10.5,16 12,16C12.45,16 12.88,15.91 13.29,15.77L10.89,19.91C7,19.37 4,16.04 4,12M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12M12,4C14.96,4 17.54,5.61 18.92,8H12C10.06,8 8.45,9.38 8.08,11.21L5.7,7.08C7.16,5.21 9.44,4 12,4M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiGoogleCircles = "M16.66,15H17C18,15 19,14.8 19.87,14.46C19.17,18.73 15.47,22 11,22C6,22 2,17.97 2,13C2,8.53 5.27,4.83 9.54,4.13C9.2,5 9,6 9,7V7.34C6.68,8.16 5,10.38 5,13A6,6 0 0,0 11,19C13.62,19 15.84,17.32 16.66,15M17,10A3,3 0 0,0 20,7A3,3 0 0,0 17,4A3,3 0 0,0 14,7A3,3 0 0,0 17,10M17,1A6,6 0 0,1 23,7A6,6 0 0,1 17,13A6,6 0 0,1 11,7C11,3.68 13.69,1 17,1Z";
var mdiGoogleCirclesCommunities = "M15,12C13.89,12 13,12.89 13,14A2,2 0 0,0 15,16A2,2 0 0,0 17,14C17,12.89 16.1,12 15,12M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M14,9C14,7.89 13.1,7 12,7C10.89,7 10,7.89 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9M9,12A2,2 0 0,0 7,14A2,2 0 0,0 9,16A2,2 0 0,0 11,14C11,12.89 10.1,12 9,12Z";
var mdiGoogleCirclesExtended = "M18,19C16.89,19 16,18.1 16,17C16,15.89 16.89,15 18,15A2,2 0 0,1 20,17A2,2 0 0,1 18,19M18,13A4,4 0 0,0 14,17A4,4 0 0,0 18,21A4,4 0 0,0 22,17A4,4 0 0,0 18,13M12,11.1A1.9,1.9 0 0,0 10.1,13A1.9,1.9 0 0,0 12,14.9A1.9,1.9 0 0,0 13.9,13A1.9,1.9 0 0,0 12,11.1M6,19C4.89,19 4,18.1 4,17C4,15.89 4.89,15 6,15A2,2 0 0,1 8,17A2,2 0 0,1 6,19M6,13A4,4 0 0,0 2,17A4,4 0 0,0 6,21A4,4 0 0,0 10,17A4,4 0 0,0 6,13M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M12,10A4,4 0 0,0 16,6A4,4 0 0,0 12,2A4,4 0 0,0 8,6A4,4 0 0,0 12,10Z";
var mdiGoogleCirclesGroup = "M5,10A2,2 0 0,0 3,12C3,13.11 3.9,14 5,14C6.11,14 7,13.11 7,12A2,2 0 0,0 5,10M5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16M10.5,11H14V8L18,12L14,16V13H10.5V11M5,6C4.55,6 4.11,6.05 3.69,6.14C5.63,3.05 9.08,1 13,1C19.08,1 24,5.92 24,12C24,18.08 19.08,23 13,23C9.08,23 5.63,20.95 3.69,17.86C4.11,17.95 4.55,18 5,18C5.8,18 6.56,17.84 7.25,17.56C8.71,19.07 10.74,20 13,20A8,8 0 0,0 21,12A8,8 0 0,0 13,4C10.74,4 8.71,4.93 7.25,6.44C6.56,6.16 5.8,6 5,6Z";
var mdiGoogleClassroom = "M23,2H1A1,1 0 0,0 0,3V21A1,1 0 0,0 1,22H23A1,1 0 0,0 24,21V3A1,1 0 0,0 23,2M22,20H20V19H15V20H2V4H22V20M10.29,9.71A1.71,1.71 0 0,1 12,8C12.95,8 13.71,8.77 13.71,9.71C13.71,10.66 12.95,11.43 12,11.43C11.05,11.43 10.29,10.66 10.29,9.71M5.71,11.29C5.71,10.58 6.29,10 7,10A1.29,1.29 0 0,1 8.29,11.29C8.29,12 7.71,12.57 7,12.57C6.29,12.57 5.71,12 5.71,11.29M15.71,11.29A1.29,1.29 0 0,1 17,10A1.29,1.29 0 0,1 18.29,11.29C18.29,12 17.71,12.57 17,12.57C16.29,12.57 15.71,12 15.71,11.29M20,15.14V16H16L14,16H10L8,16H4V15.14C4,14.2 5.55,13.43 7,13.43C7.55,13.43 8.11,13.54 8.6,13.73C9.35,13.04 10.7,12.57 12,12.57C13.3,12.57 14.65,13.04 15.4,13.73C15.89,13.54 16.45,13.43 17,13.43C18.45,13.43 20,14.2 20,15.14Z";
var mdiGoogleCloud = "M23 14.75C23 18.2 20.2 21 16.75 21H7.25C3.8 21 1 18.2 1 14.75C1 12.61 2.08 10.72 3.71 9.6C4.58 5.82 7.96 3 12 3C16.04 3 19.42 5.82 20.29 9.6C21.93 10.72 23 12.61 23 14.75M16.63 17C17.94 17 19 15.94 19 14.63C19 13.35 18 12.3 16.72 12.25L16.75 11.75C16.75 9.13 14.62 7 12 7C10.58 7 9.3 7.62 8.43 8.61C9.93 8.9 11.23 9.72 12.14 10.86L9.5 13.5C9.08 12.77 8.29 12.25 7.38 12.25C6.06 12.25 5 13.31 5 14.63C5 15.9 6 16.93 7.25 17V17H16.63Z";
var mdiGoogleController = "M7.97,16L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.21,7.81 5.14,6 7.5,6H16.5C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75A1.75,1.75 0 0,1 20.25,19.5C19.77,19.5 19.33,19.3 19,19L16.03,16H7.97M7,8V10H5V11H7V13H8V11H10V10H8V8H7M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z";
var mdiGoogleControllerOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H7.97L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.1,9.09 3.53,8.17 4.19,7.46L2,5.27M5,10V11H7V13H8V11.27L6.73,10H5M16.5,6C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75C22,18.41 21.64,19 21.1,19.28L7.82,6H16.5M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z";
var mdiGoogleDownasaur = "M13 2V3H12V9H11V10H9V11H8V12H7V13H5V12H4V11H3V9H2V15H3V16H4V17H5V18H6V22H8V21H7V20H8V19H9V18H10V19H11V22H13V21H12V17H13V16H14V15H15V12H16V13H17V11H15V9H20V8H17V7H22V3H21V2M14 3H15V4H14Z";
var mdiGoogleDrive = "M7.71,3.5L1.15,15L4.58,21L11.13,9.5M9.73,15L6.3,21H19.42L22.85,15M22.28,14L15.42,2H8.58L8.57,2L15.43,14H22.28Z";
var mdiGoogleEarth = "M12,12.14C11.09,10.77 10.14,9.78 9.14,9.19C8.14,8.59 7.27,8.38 6.5,8.55C5.77,8.73 5.14,9.14 4.64,9.8C4.2,10.39 4,11.06 4,11.81V12C4,12.78 4.11,13.58 4.36,14.39C4.45,14.64 4.5,14.64 4.55,14.39C4.67,13.77 4.96,13.31 5.41,13.03C5.87,12.75 6.47,12.76 7.22,13.05C7.97,13.35 8.7,14 9.42,14.95C10.7,16.67 12.2,17.72 13.92,18.09C16.14,18.41 17.81,17.7 18.94,16C19.25,15.39 19.5,14.86 19.64,14.39C19.73,14.08 19.69,14.05 19.5,14.3C19.03,14.92 18.4,15.33 17.6,15.5C16.8,15.7 15.89,15.5 14.86,15C13.83,14.43 12.88,13.5 12,12.14M16.97,8.16C15.41,5.81 13.72,4.5 11.91,4.17C10.47,3.95 8.91,4.45 7.22,5.67C7,5.83 6.9,5.91 6.91,5.93C6.93,5.95 7.06,5.89 7.31,5.77C9.81,4.55 12.22,5.83 14.53,9.61C15.03,10.45 15.55,11.11 16.1,11.58C16.65,12.05 17.16,12.33 17.65,12.42C18.13,12.5 18.57,12.5 18.96,12.38C19.35,12.25 19.7,12.05 20,11.77C20,11.17 19.91,10.5 19.69,9.8C19.19,9.92 18.74,9.88 18.35,9.68C17.96,9.5 17.5,8.97 16.97,8.16M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.75 21,17.1 19.05,19.05C17.1,21 14.75,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z";
var mdiGoogleFit = "M17,4A5,5 0 0,1 22,9C22,10.38 21.44,11.63 20.54,12.54L12,21.07L3.46,12.54C2.56,11.63 2,10.38 2,9A5,5 0 0,1 7,4C8.38,4 9.63,4.56 10.54,5.46L12,6.93L13.46,5.46C14.37,4.56 15.62,4 17,4M15.59,7.59L9.17,14L12,16.83L18.41,10.41C18.78,10.05 19,9.55 19,9A2,2 0 0,0 17,7C16.45,7 15.95,7.22 15.59,7.59M8.41,7.59C8.05,7.22 7.55,7 7,7A2,2 0 0,0 5,9C5,9.55 5.22,10.05 5.59,10.41L7.05,11.88L9.88,9.05L8.41,7.59Z";
var mdiGoogleGlass = "M20 2H4C2.9 2 2 2.9 2 4V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V4C22 2.9 21.1 2 20 2M16.75 18H15.25V8.9L6.72 18H4.66L15.45 6.5C15.66 6.26 16 6.19 16.27 6.3C16.56 6.42 16.75 6.69 16.75 7V18Z";
var mdiGoogleHangouts = "M15,11L14,13H12.5L13.5,11H12V8H15M11,11L10,13H8.5L9.5,11H8V8H11M11.5,2A8.5,8.5 0 0,0 3,10.5A8.5,8.5 0 0,0 11.5,19H12V22.5C16.86,20.15 20,15 20,10.5C20,5.8 16.19,2 11.5,2Z";
var mdiGoogleHome = "M8.06,7.78C7.5,7.78 7.17,7.73 7.08,7.64L6.66,13.73C7.19,14.05 7.88,14.3 8.72,14.5C9.56,14.71 10.78,14.77 12.38,14.67C13.97,14.58 15.63,14.23 17.34,13.64L16.55,4.22C15.67,5.09 14.38,5.91 12.66,6.66C11.13,7.31 9.81,7.69 8.72,7.78H8.06M7.97,5.34C7.28,5.94 7,6.34 7.13,6.56C7.22,6.78 7.7,6.84 8.58,6.75C9.67,6.66 10.91,6.31 12.28,5.72C13.22,5.31 14.03,4.88 14.72,4.41C15.41,3.94 15.88,3.55 16.13,3.23C16.38,2.92 16.47,2.7 16.41,2.58C16.34,2.42 16.03,2.34 15.47,2.34C14.34,2.34 12.94,2.7 11.25,3.42C9.81,4.05 8.72,4.69 7.97,5.34M17.34,2.2C17.41,2.33 17.44,2.47 17.44,2.63L18.61,17C18.61,18.73 18,20.09 16.83,21.07C15.64,22.05 14.03,22.55 12,22.55C10,22.55 8.4,22.04 7.2,21C6,20 5.39,18.64 5.39,16.92L6.09,6.47C6.09,6.22 6.2,5.94 6.42,5.63C6.64,5.31 6.84,5.06 7.03,4.88L7.36,4.59C8.33,3.78 9.5,3.08 10.88,2.5C11.81,2.08 12.73,1.77 13.62,1.57C14.5,1.37 15.3,1.3 16,1.38C16.71,1.46 17.16,1.73 17.34,2.2Z";
var mdiGoogleKeep = "M4 2H20C21.11 2 22 2.9 22 4V17.33L17.33 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2M17 17V20.25L20.25 17H17M10 19H14V18H15V13C16.21 12.09 17 10.64 17 9C17 6.24 14.76 4 12 4S7 6.24 7 9C7 10.64 7.79 12.09 9 13V18H10V19M14 17H10V15H14V17M12 5C14.21 5 16 6.79 16 9C16 10.5 15.2 11.77 14 12.46V14H10V12.46C8.8 11.77 8 10.5 8 9C8 6.79 9.79 5 12 5Z";
var mdiGoogleLens = "M6,2H18A4,4 0 0,1 22,6V12H20V6A2,2 0 0,0 18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H12V22H6A4,4 0 0,1 2,18V6A4,4 0 0,1 6,2M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M18,16A2,2 0 0,1 20,18A2,2 0 0,1 18,20A2,2 0 0,1 16,18A2,2 0 0,1 18,16Z";
var mdiGoogleMaps = "M18.27 6C19.28 8.17 19.05 10.73 17.94 12.81C17 14.5 15.65 15.93 14.5 17.5C14 18.2 13.5 18.95 13.13 19.76C13 20.03 12.91 20.31 12.81 20.59C12.71 20.87 12.62 21.15 12.53 21.43C12.44 21.69 12.33 22 12 22H12C11.61 22 11.5 21.56 11.42 21.26C11.18 20.53 10.94 19.83 10.57 19.16C10.15 18.37 9.62 17.64 9.08 16.93L18.27 6M9.12 8.42L5.82 12.34C6.43 13.63 7.34 14.73 8.21 15.83C8.42 16.08 8.63 16.34 8.83 16.61L13 11.67L12.96 11.68C11.5 12.18 9.88 11.44 9.3 10C9.22 9.83 9.16 9.63 9.12 9.43C9.07 9.06 9.06 8.79 9.12 8.43L9.12 8.42M6.58 4.62L6.57 4.63C4.95 6.68 4.67 9.53 5.64 11.94L9.63 7.2L9.58 7.15L6.58 4.62M14.22 2.36L11 6.17L11.04 6.16C12.38 5.7 13.88 6.28 14.56 7.5C14.71 7.78 14.83 8.08 14.87 8.38C14.93 8.76 14.95 9.03 14.88 9.4L14.88 9.41L18.08 5.61C17.24 4.09 15.87 2.93 14.23 2.37L14.22 2.36M9.89 6.89L13.8 2.24L13.76 2.23C13.18 2.08 12.59 2 12 2C10.03 2 8.17 2.85 6.85 4.31L6.83 4.32L9.89 6.89Z";
var mdiGoogleMyBusiness = "M22 8.5C22 9.87 20.88 11 19.5 11S17 9.87 17 8.5C17 9.87 15.88 11 14.5 11C13.12 11 12 9.87 12 8.5C12 9.87 10.88 11 9.5 11S7 9.87 7 8.5C7 9.87 5.88 11 4.5 11S2 9.87 2 8.5L3.39 3.08C3.39 3.08 3.68 2 4.7 2H19.3C20.32 2 20.61 3.08 20.61 3.08L22 8.5M21 12.2V20C21 21.1 20.1 22 19 22H5C3.9 22 3 21.1 3 20V12.2C3.46 12.39 3.97 12.5 4.5 12.5C5.45 12.5 6.32 12.17 7 11.62C7.69 12.17 8.56 12.5 9.5 12.5C10.45 12.5 11.32 12.17 12 11.62C12.69 12.17 13.56 12.5 14.5 12.5C15.45 12.5 16.32 12.17 17 11.62C17.68 12.17 18.56 12.5 19.5 12.5C20.03 12.5 20.54 12.39 21 12.2M19 17.33C19 17.13 19 16.92 18.95 16.7L18.92 16.54H15.95V17.71H17.76C17.7 17.93 17.62 18.15 17.45 18.33C17.12 18.66 16.67 18.84 16.19 18.84C15.69 18.84 15.2 18.63 14.84 18.28C14.15 17.57 14.15 16.42 14.86 15.7C15.55 15 16.69 15 17.41 15.67L17.55 15.8L18.39 14.95L18.23 14.81C17.67 14.29 16.93 14 16.15 14H16.14C15.33 14 14.57 14.31 14 14.87C13.41 15.45 13.08 16.21 13.08 17C13.08 17.8 13.39 18.54 13.96 19.09H13.96C14.54 19.66 15.35 20 16.18 20H16.2C17 20 17.71 19.71 18.23 19.2C18.7 18.72 19 18 19 17.33Z";
var mdiGoogleNearby = "M21.36,10.46L13.54,2.64C12.69,1.79 11.31,1.79 10.46,2.64L2.64,10.46C1.79,11.31 1.79,12.69 2.64,13.54L10.46,21.36C11.31,22.21 12.69,22.21 13.54,21.36L21.36,13.54C22.21,12.69 22.21,11.31 21.36,10.46M12,19L5,12L12,5L19,12L12,19M16.5,12L12,16.5L7.5,12L12,7.5L16.5,12Z";
var mdiGooglePhotos = "M10,13C10.55,13 11,13.18 11.41,13.57C11.8,13.96 12,14.44 12,15V22C12,22.17 11.91,22.27 11.72,22.27C11.66,22.27 11.58,22.22 11.5,22.13L7,17.67V13H10M12.5,1.88L17,6.33V11H14C13.45,11 13,10.82 12.59,10.43C12.2,10.04 12,9.56 12,9V2C12,1.83 12.09,1.73 12.28,1.73C12.34,1.73 12.42,1.78 12.5,1.88M22,12C22.17,12 22.27,12.09 22.27,12.28C22.27,12.34 22.22,12.42 22.13,12.5L17.67,17H13V14C13,13.45 13.18,13 13.57,12.59C13.96,12.2 14.44,12 15,12H22M6.33,7H11V10C11,10.55 10.82,11 10.43,11.41C10.04,11.8 9.56,12 9,12H2C1.83,12 1.73,11.91 1.73,11.72C1.73,11.66 1.78,11.58 1.88,11.5L6.33,7Z";
var mdiGooglePlay = "M3,20.5V3.5C3,2.91 3.34,2.39 3.84,2.15L13.69,12L3.84,21.85C3.34,21.6 3,21.09 3,20.5M16.81,15.12L6.05,21.34L14.54,12.85L16.81,15.12M20.16,10.81C20.5,11.08 20.75,11.5 20.75,12C20.75,12.5 20.53,12.9 20.18,13.18L17.89,14.5L15.39,12L17.89,9.5L20.16,10.81M6.05,2.66L16.81,8.88L14.54,11.15L6.05,2.66Z";
var mdiGooglePlus = "M23,11H21V9H19V11H17V13H19V15H21V13H23M8,11V13.4H12C11.8,14.4 10.8,16.4 8,16.4C5.6,16.4 3.7,14.4 3.7,12C3.7,9.6 5.6,7.6 8,7.6C9.4,7.6 10.3,8.2 10.8,8.7L12.7,6.9C11.5,5.7 9.9,5 8,5C4.1,5 1,8.1 1,12C1,15.9 4.1,19 8,19C12,19 14.7,16.2 14.7,12.2C14.7,11.7 14.7,11.4 14.6,11H8Z";
var mdiGooglePodcast = "M17.68,7.22V8.62C17.68,9.3 17.13,9.86 16.43,9.86C15.74,9.86 15.18,9.3 15.18,8.62V7.22A1.25,1.25 0 0,1 16.43,5.97C17.13,5.97 17.68,6.53 17.68,7.22M13.25,8.36V15.63C13.25,16.32 12.69,16.88 12,16.88C11.31,16.88 10.75,16.32 10.75,15.63V8.36C10.75,7.68 11.31,7.11 12,7.11C12.69,7.11 13.25,7.68 13.25,8.36M22,11.3V12.7C22,13.38 21.44,13.94 20.75,13.94C20.06,13.94 19.5,13.38 19.5,12.7V11.3C19.5,10.61 20.06,10.06 20.75,10.06C21.44,10.06 22,10.61 22,11.3M4.5,11.3V12.7C4.5,13.38 3.94,13.94 3.25,13.94C2.55,13.94 2,13.38 2,12.7V11.3C2,10.61 2.55,10.06 3.25,10.06C3.94,10.06 4.5,10.61 4.5,11.3M8.82,15.38V16.77C8.82,17.45 8.26,18 7.57,18C6.88,18 6.32,17.45 6.32,16.77V15.38C6.32,14.68 6.88,14.13 7.57,14.13A1.25,1.25 0 0,1 8.82,15.38M13.25,19.36V20.75A1.25,1.25 0 0,1 12,22A1.25,1.25 0 0,1 10.75,20.75V19.36A1.25,1.25 0 0,1 12,18.11A1.25,1.25 0 0,1 13.25,19.36M13.25,3.25V4.64A1.25,1.25 0 0,1 12,5.89A1.25,1.25 0 0,1 10.75,4.64V3.25C10.75,2.55 11.31,2 12,2A1.25,1.25 0 0,1 13.25,3.25M17.68,12.34V16.77C17.68,17.46 17.13,18 16.43,18C15.74,18 15.18,17.46 15.18,16.77V12.34C15.18,11.64 15.74,11.09 16.43,11.09C17.13,11.09 17.68,11.64 17.68,12.34M8.82,7.22V11.65C8.82,12.35 8.26,12.9 7.57,12.9A1.25,1.25 0 0,1 6.32,11.65V7.22A1.25,1.25 0 0,1 7.57,5.97A1.25,1.25 0 0,1 8.82,7.22Z";
var mdiGoogleSpreadsheet = "M19,11V9H11V5H9V9H5V11H9V19H11V11H19M19,3C19.5,3 20,3.2 20.39,3.61C20.8,4 21,4.5 21,5V19C21,19.5 20.8,20 20.39,20.39C20,20.8 19.5,21 19,21H5C4.5,21 4,20.8 3.61,20.39C3.2,20 3,19.5 3,19V5C3,4.5 3.2,4 3.61,3.61C4,3.2 4.5,3 5,3H19Z";
var mdiGoogleStreetView = "M11.95,9.27C13.96,9.27 15.59,7.64 15.59,5.63C15.59,3.63 13.96,2 11.95,2C9.94,2 8.32,3.63 8.32,5.63C8.32,7.64 9.94,9.27 11.95,9.27M9.36,12.97C9.36,12.97 8.27,15.94 7.96,16.5C7.85,16.71 7.87,16.77 7.6,16.77C7.33,16.77 6.91,16.5 6.91,16.5C6.91,16.5 6.71,16.37 6.79,16.14C7.03,15.4 8.12,11.08 8.35,10.25C8.6,9.36 9.28,9.39 9.28,9.39H9.93L12.03,13.04L14.14,9.39H14.92C14.92,9.39 15.23,9.43 15.46,9.7C15.7,9.97 15.75,10.44 15.75,10.44L17.14,15.84C17.14,15.84 17.24,16.22 17.21,16.33C17.17,16.5 17.08,16.5 17.08,16.5C17.08,16.5 16.69,16.62 16.47,16.69C16.07,16.82 16,16.44 16,16.44L14.7,13.04L14.55,22H12.6L12.27,16.89C12.27,16.89 12.21,16.76 12.03,16.76C11.86,16.76 11.8,16.89 11.8,16.89L11.45,22H9.5L9.37,12.97H9.36Z";
var mdiGoogleTranslate = "M20,5H10.88L10,2H4A2,2 0 0,0 2,4V17A2,2 0 0,0 4,19H11L12,22H20A2,2 0 0,0 22,20V7A2,2 0 0,0 20,5M7.17,14.59A4.09,4.09 0 0,1 3.08,10.5A4.09,4.09 0 0,1 7.17,6.41C8.21,6.41 9.16,6.78 9.91,7.5L10,7.54L8.75,8.72L8.69,8.67C8.4,8.4 7.91,8.08 7.17,8.08C5.86,8.08 4.79,9.17 4.79,10.5C4.79,11.83 5.86,12.92 7.17,12.92C8.54,12.92 9.13,12.05 9.29,11.46H7.08V9.91H11.03L11.04,10C11.08,10.19 11.09,10.38 11.09,10.59C11.09,12.94 9.5,14.59 7.17,14.59M13.2,12.88C13.53,13.5 13.94,14.06 14.39,14.58L13.85,15.11L13.2,12.88M13.97,12.12H13L12.67,11.08H16.66C16.66,11.08 16.32,12.39 15.1,13.82C14.58,13.2 14.21,12.59 13.97,12.12M21,20A1,1 0 0,1 20,21H13L15,19L14.19,16.23L15.11,15.31L17.79,18L18.5,17.27L15.81,14.59C16.71,13.56 17.41,12.34 17.73,11.08H19V10.04H15.36V9H14.32V10.04H12.36L11.18,6H20A1,1 0 0,1 21,7V20Z";
var mdiGradient = "M11,9H13V11H11V9M9,11H11V13H9V11M13,11H15V13H13V11M15,9H17V11H15V9M7,9H9V11H7V9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,18H7V16H9V18M13,18H11V16H13V18M17,18H15V16H17V18M19,11H17V13H19V15H17V13H15V15H13V13H11V15H9V13H7V15H5V13H7V11H5V5H19V11Z";
var mdiGrain = "M10,12A2,2 0 0,0 8,14A2,2 0 0,0 10,16A2,2 0 0,0 12,14A2,2 0 0,0 10,12M6,8A2,2 0 0,0 4,10A2,2 0 0,0 6,12A2,2 0 0,0 8,10A2,2 0 0,0 6,8M6,16A2,2 0 0,0 4,18A2,2 0 0,0 6,20A2,2 0 0,0 8,18A2,2 0 0,0 6,16M18,8A2,2 0 0,0 20,6A2,2 0 0,0 18,4A2,2 0 0,0 16,6A2,2 0 0,0 18,8M14,16A2,2 0 0,0 12,18A2,2 0 0,0 14,20A2,2 0 0,0 16,18A2,2 0 0,0 14,16M18,12A2,2 0 0,0 16,14A2,2 0 0,0 18,16A2,2 0 0,0 20,14A2,2 0 0,0 18,12M14,8A2,2 0 0,0 12,10A2,2 0 0,0 14,12A2,2 0 0,0 16,10A2,2 0 0,0 14,8M10,4A2,2 0 0,0 8,6A2,2 0 0,0 10,8A2,2 0 0,0 12,6A2,2 0 0,0 10,4Z";
var mdiGraph = "M19.5 17C19.37 17 19.24 17 19.11 17.04L17.5 13.79C17.95 13.34 18.25 12.71 18.25 12C18.25 10.62 17.13 9.5 15.75 9.5C15.62 9.5 15.5 9.5 15.36 9.54L13.73 6.29C14.21 5.84 14.5 5.21 14.5 4.5C14.5 3.12 13.38 2 12 2S9.5 3.12 9.5 4.5C9.5 5.21 9.79 5.84 10.26 6.29L8.64 9.54C8.5 9.5 8.38 9.5 8.25 9.5C6.87 9.5 5.75 10.62 5.75 12C5.75 12.71 6.05 13.34 6.5 13.79L4.89 17.04C4.76 17 4.63 17 4.5 17C3.12 17 2 18.12 2 19.5C2 20.88 3.12 22 4.5 22S7 20.88 7 19.5C7 18.8 6.71 18.16 6.24 17.71L7.86 14.46C8 14.5 8.12 14.5 8.25 14.5C8.38 14.5 8.5 14.5 8.64 14.46L10.27 17.71C9.8 18.16 9.5 18.8 9.5 19.5C9.5 20.88 10.62 22 12 22S14.5 20.88 14.5 19.5C14.5 18.12 13.38 17 12 17C11.87 17 11.74 17 11.61 17.04L10 13.79C10.46 13.34 10.75 12.71 10.75 12S10.46 10.66 10 10.21L11.61 6.96C11.74 7 11.87 7 12 7S12.26 7 12.39 6.96L14 10.21C13.55 10.66 13.25 11.3 13.25 12C13.25 13.38 14.37 14.5 15.75 14.5C15.88 14.5 16 14.5 16.14 14.46L17.77 17.71C17.3 18.16 17 18.8 17 19.5C17 20.88 18.12 22 19.5 22S22 20.88 22 19.5C22 18.12 20.88 17 19.5 17Z";
var mdiGraphOutline = "M19.5 17C19.36 17 19.24 17 19.11 17.04L17.5 13.8C17.95 13.35 18.25 12.71 18.25 12C18.25 10.62 17.13 9.5 15.75 9.5C15.61 9.5 15.5 9.5 15.35 9.54L13.74 6.3C14.21 5.84 14.5 5.21 14.5 4.5C14.5 3.12 13.38 2 12 2S9.5 3.12 9.5 4.5C9.5 5.2 9.79 5.84 10.26 6.29L8.65 9.54C8.5 9.5 8.39 9.5 8.25 9.5C6.87 9.5 5.75 10.62 5.75 12C5.75 12.71 6.04 13.34 6.5 13.79L4.89 17.04C4.76 17 4.64 17 4.5 17C3.12 17 2 18.12 2 19.5C2 20.88 3.12 22 4.5 22S7 20.88 7 19.5C7 18.8 6.71 18.16 6.24 17.71L7.86 14.46C8 14.5 8.12 14.5 8.25 14.5C8.38 14.5 8.5 14.5 8.63 14.46L10.26 17.71C9.79 18.16 9.5 18.8 9.5 19.5C9.5 20.88 10.62 22 12 22S14.5 20.88 14.5 19.5C14.5 18.12 13.38 17 12 17C11.87 17 11.74 17 11.61 17.04L10 13.8C10.45 13.35 10.75 12.71 10.75 12C10.75 11.3 10.46 10.67 10 10.21L11.61 6.96C11.74 7 11.87 7 12 7C12.13 7 12.26 7 12.39 6.96L14 10.21C13.54 10.66 13.25 11.3 13.25 12C13.25 13.38 14.37 14.5 15.75 14.5C15.88 14.5 16 14.5 16.13 14.46L17.76 17.71C17.29 18.16 17 18.8 17 19.5C17 20.88 18.12 22 19.5 22S22 20.88 22 19.5C22 18.12 20.88 17 19.5 17M4.5 20.5C3.95 20.5 3.5 20.05 3.5 19.5S3.95 18.5 4.5 18.5 5.5 18.95 5.5 19.5 5.05 20.5 4.5 20.5M13 19.5C13 20.05 12.55 20.5 12 20.5S11 20.05 11 19.5 11.45 18.5 12 18.5 13 18.95 13 19.5M7.25 12C7.25 11.45 7.7 11 8.25 11S9.25 11.45 9.25 12 8.8 13 8.25 13 7.25 12.55 7.25 12M11 4.5C11 3.95 11.45 3.5 12 3.5S13 3.95 13 4.5 12.55 5.5 12 5.5 11 5.05 11 4.5M14.75 12C14.75 11.45 15.2 11 15.75 11S16.75 11.45 16.75 12 16.3 13 15.75 13 14.75 12.55 14.75 12M19.5 20.5C18.95 20.5 18.5 20.05 18.5 19.5S18.95 18.5 19.5 18.5 20.5 18.95 20.5 19.5 20.05 20.5 19.5 20.5Z";
var mdiGraphql = "M12,5.37L11.56,5.31L6,14.9C6.24,15.11 6.4,15.38 6.47,15.68H17.53C17.6,15.38 17.76,15.11 18,14.9L12.44,5.31L12,5.37M6.6,16.53L10.88,19.06C11.17,18.79 11.57,18.63 12,18.63C12.43,18.63 12.83,18.79 13.12,19.06L17.4,16.53H6.6M12,22A1.68,1.68 0 0,1 10.32,20.32L10.41,19.76L6.11,17.21C5.8,17.57 5.35,17.79 4.84,17.79A1.68,1.68 0 0,1 3.16,16.11C3.16,15.32 3.69,14.66 4.42,14.47V9.36C3.59,9.25 2.95,8.54 2.95,7.68A1.68,1.68 0 0,1 4.63,6C5.18,6 5.66,6.26 5.97,6.66L10.38,4.13L10.32,3.68C10.32,2.75 11.07,2 12,2C12.93,2 13.68,2.75 13.68,3.68L13.62,4.13L18.03,6.66C18.34,6.26 18.82,6 19.37,6A1.68,1.68 0 0,1 21.05,7.68C21.05,8.54 20.41,9.25 19.58,9.36V14.47C20.31,14.66 20.84,15.32 20.84,16.11A1.68,1.68 0 0,1 19.16,17.79C18.65,17.79 18.2,17.57 17.89,17.21L13.59,19.76L13.68,20.32A1.68,1.68 0 0,1 12,22M10.8,4.86L6.3,7.44L6.32,7.68C6.32,8.39 5.88,9 5.26,9.25L5.29,14.5L10.8,4.86M13.2,4.86L18.71,14.5L18.74,9.25C18.12,9 17.68,8.39 17.68,7.68L17.7,7.44L13.2,4.86Z";
var mdiGrass = "M12 20H2V18H7.75C7 15.19 4.81 13 2 12.26C2.64 12.1 3.31 12 4 12C8.42 12 12 15.58 12 20M22 12.26C21.36 12.1 20.69 12 20 12C17.07 12 14.5 13.58 13.12 15.93C13.41 16.59 13.65 17.28 13.79 18C13.92 18.65 14 19.32 14 20H22V18H16.24C17 15.19 19.19 13 22 12.26M15.64 11C16.42 8.93 17.87 7.18 19.73 6C15.44 6.16 12 9.67 12 14V14C12.95 12.75 14.2 11.72 15.64 11M11.42 8.85C10.58 6.66 8.88 4.89 6.7 4C8.14 5.86 9 8.18 9 10.71C9 10.92 8.97 11.12 8.96 11.32C9.39 11.56 9.79 11.84 10.18 12.14C10.39 10.96 10.83 9.85 11.42 8.85Z";
var mdiGraveStone = "M10,2H14C17.31,2 19,4.69 19,8V18.66C16.88,17.63 15.07,17 12,17C8.93,17 7.12,17.63 5,18.66V8C5,4.69 6.69,2 10,2M8,8V9.5H16V8H8M9,12V13.5H15V12H9M3,22V21.31C5.66,19.62 13.23,15.84 21,21.25V22H3Z";
var mdiGreasePencil = "M18.62,1.5C18.11,1.5 17.6,1.69 17.21,2.09L10.75,8.55L14.95,12.74L21.41,6.29C22.2,5.5 22.2,4.24 21.41,3.46L20.04,2.09C19.65,1.69 19.14,1.5 18.62,1.5M9.8,9.5L3.23,16.07L3.93,16.77C3.4,17.24 2.89,17.78 2.38,18.29C1.6,19.08 1.6,20.34 2.38,21.12C3.16,21.9 4.42,21.9 5.21,21.12C5.72,20.63 6.25,20.08 6.73,19.58L7.43,20.27L14,13.7";
var mdiGreaterThan = "M5.5,4.14L4.5,5.86L15,12L4.5,18.14L5.5,19.86L19,12L5.5,4.14Z";
var mdiGreaterThanOrEqual = "M6.5,2.27L20,10.14L6.5,18L5.5,16.27L16.03,10.14L5.5,4L6.5,2.27M20,20V22H5V20H20Z";
var mdiGrid = "M10,4V8H14V4H10M16,4V8H20V4H16M16,10V14H20V10H16M16,16V20H20V16H16M14,20V16H10V20H14M8,20V16H4V20H8M8,14V10H4V14H8M8,8V4H4V8H8M10,14H14V10H10V14M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4C2.92,22 2,21.1 2,20V4A2,2 0 0,1 4,2Z";
var mdiGridLarge = "M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4C2.92,22 2,21.1 2,20V4A2,2 0 0,1 4,2M4,4V11H11V4H4M4,20H11V13H4V20M20,20V13H13V20H20M20,4H13V11H20V4Z";
var mdiGridOff = "M0,2.77L1.28,1.5L22.5,22.72L21.23,24L19.23,22H4C2.92,22 2,21.1 2,20V4.77L0,2.77M10,4V7.68L8,5.68V4H6.32L4.32,2H20A2,2 0 0,1 22,4V19.7L20,17.7V16H18.32L16.32,14H20V10H16V13.68L14,11.68V10H12.32L10.32,8H14V4H10M16,4V8H20V4H16M16,20H17.23L16,18.77V20M4,8H5.23L4,6.77V8M10,14H11.23L10,12.77V14M14,20V16.77L13.23,16H10V20H14M8,20V16H4V20H8M8,14V10.77L7.23,10H4V14H8Z";
var mdiGrill = "M8.06,2C7.88,3.17 8.17,4.16 8.95,4.97C9.45,5.47 9.61,6.14 9.42,7H10.41C10.53,6.45 10.55,6 10.45,5.55C10.36,5.13 10.05,4.63 9.5,4.03C9.05,3.47 8.89,2.8 9.05,2H8.06M10.55,2C10.36,3.17 10.66,4.16 11.44,4.97C11.94,5.47 12.09,6.14 11.91,7H12.89C13,6.45 13.03,6 12.94,5.55C12.84,5.13 12.53,4.63 12,4.03C11.53,3.47 11.38,2.8 11.53,2H10.55M13.08,2C12.89,3.17 13.19,4.16 13.97,4.97C14.47,5.47 14.61,6.14 14.39,7H15.42C15.55,6.45 15.56,6 15.47,5.55C15.38,5.13 15.06,4.63 14.53,4.03C14.06,3.47 13.91,2.8 14.06,2H13.08M5,8C5,9.42 5.39,10.7 6.14,11.84C6.87,12.96 7.91,13.85 9.14,14.39L5.16,20.44C5.06,20.56 5,20.75 5,21C5,21.41 5.16,21.69 5.44,21.84C5.56,21.94 5.75,22 6,22C6.41,22 6.69,21.84 6.84,21.56L7.83,19.97H14.2C14.41,20.55 14.79,21.05 15.28,21.42C15.78,21.8 16.36,22 17,22C17.83,22 18.53,21.69 19.13,21.09C19.72,20.5 20,19.8 20,19C20,18.17 19.72,17.47 19.13,16.88C18.53,16.28 17.83,16 17,16C16.36,16 15.78,16.17 15.28,16.55C14.78,16.92 14.42,17.41 14.2,18H9.14L11.11,14.95C11.27,15 11.56,15 12,15C12.44,15 12.73,15 12.89,14.95L13.88,16.5C14.29,15.96 14.84,15.54 15.47,15.28L14.91,14.39C16.03,13.89 17,13 17.79,11.77C18.59,10.5 19,9.27 19,8H5M17,18C17.3,18 17.53,18.09 17.72,18.28C17.91,18.47 18,18.72 18,19C18,19.27 17.91,19.5 17.72,19.71C17.54,19.91 17.28,20 17,20C16.74,20 16.5,19.91 16.29,19.71C16.09,19.5 16,19.26 16,19C16,18.7 16.09,18.47 16.29,18.28C16.5,18.09 16.73,18 17,18Z";
var mdiGrillOutline = "M17 22A3 3 0 1 0 14.18 18H9.14L11.13 14.94A6.36 6.36 0 0 0 12.87 14.94L13.89 16.5C14.31 16 14.85 15.56 15.5 15.3L14.89 14.37A7 7 0 0 0 19 8H5A7 7 0 0 0 9.12 14.37L5.17 20.45A1 1 0 0 0 6.84 21.54L7.84 20H14.18A3 3 0 0 0 17 22M17 18A1 1 0 0 1 18 19C18 19.55 17.55 20 17 20S16 19.55 16 19A1 1 0 0 1 17 18M7.42 10H16.58A5 5 0 0 1 7.42 10M9.41 7H10.41C10.56 5.85 10.64 5.36 9.5 4.04C9.1 3.54 8.84 3.27 9.06 2H8.07A3.14 3.14 0 0 0 8.96 4.96C9.18 5.2 9.75 5.63 9.41 7M11.89 7H12.89C13.04 5.85 13.12 5.36 12 4.04C11.58 3.54 11.32 3.26 11.54 2H10.55A3.14 3.14 0 0 0 11.44 4.96C11.67 5.2 12.24 5.63 11.89 7M14.41 7H15.41C15.56 5.85 15.64 5.36 14.5 4.04C14.1 3.54 13.84 3.27 14.06 2H13.07A3.14 3.14 0 0 0 13.96 4.96C14.18 5.2 14.75 5.63 14.41 7Z";
var mdiGroup = "M1,1V5H2V19H1V23H5V22H19V23H23V19H22V5H23V1H19V2H5V1M5,4H19V5H20V19H19V20H5V19H4V5H5M6,6V14H9V18H18V9H14V6M8,8H12V12H8M14,11H16V16H11V14H14";
var mdiGuitarAcoustic = "M19.59,3H22V5H20.41L16.17,9.24C15.8,8.68 15.32,8.2 14.76,7.83L19.59,3M12,8A4,4 0 0,1 16,12C16,13.82 14.77,15.42 13,15.87V16A5,5 0 0,1 8,21A5,5 0 0,1 3,16A5,5 0 0,1 8,11H8.13C8.58,9.24 10.17,8 12,8M12,10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5M6.94,14.24L6.23,14.94L9.06,17.77L9.77,17.06L6.94,14.24Z";
var mdiGuitarElectric = "M19.59,3H22V5H20.41L15.12,10.29L13.71,8.9L19.59,3M12,9C12.26,9 12.5,9.1 12.71,9.3L14.71,11.3C14.89,11.5 15,11.73 15,12L14.9,12.4L10.9,20.4C10.71,20.75 10.36,20.93 10,20.93C9.65,20.93 9.29,20.75 9.11,20.4L7.25,16.7L3.55,14.9C3.18,14.7 3,14.35 3,14C3,13.65 3.18,13.3 3.55,13.1L11.55,9.1C11.69,9 11.84,9 12,9M9.35,11.82L8.65,12.5L11.5,15.35L12.18,14.65L9.35,11.82M7.94,13.23L7.23,13.94L10.06,16.77L10.77,16.06L7.94,13.23Z";
var mdiGuitarPick = "M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1Z";
var mdiGuitarPickOutline = "M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1M18.2,10.2C17.1,12.9 16.1,14.9 14.8,16.7C14.6,16.9 14.5,17.2 14.3,17.4C13.8,18.2 12.6,20 12,20C12,20 12,20 12,20C11.3,20 10.2,18.3 9.6,17.4C9.4,17.2 9.3,16.9 9.1,16.7C7.9,14.9 6.8,12.9 5.7,10.2C5.5,9.5 4.7,7 6.3,5.5C6.8,5 7.6,4.7 8.6,4.4C9,4.4 10.7,4 11.8,4C11.8,4 12.1,4 12.1,4C13.2,4 14.9,4.3 15.3,4.4C16.3,4.7 17.1,5 17.6,5.5C19.3,7 18.5,9.5 18.2,10.2Z";
var mdiGuyFawkesMask = "M21,13A9,9 0 0,1 12,22A9,9 0 0,1 3,13L3.03,4.43C5.68,2.88 8.76,2 12.05,2C15.3,2 18.36,2.87 21,4.38V13M13,19.93C16.39,19.44 19,16.5 19,13V5.59C16.9,4.57 14.54,4 12.05,4C9.5,4 7.08,4.6 4.94,5.66L5,13C5,16.5 7.63,19.44 11,19.93V18H13V19.93M11,16H8L6,13L9,14H10L11,13H13L14,14H15L18,13L16,16H13L12,15L11,16M6,9.03C6.64,8.4 7.5,8.05 8.5,8.05C9.45,8.05 10.34,8.4 11,9.03C10.34,9.65 9.45,10 8.5,10C7.5,10 6.64,9.65 6,9.03M13,9.03C13.64,8.4 14.5,8.05 15.5,8.05C16.45,8.05 17.34,8.4 18,9.03C17.34,9.65 16.45,10 15.5,10C14.5,10 13.64,9.65 13,9.03Z";
var mdiHail = "M4,16H7V22H4V16M19,2.39C18.92,3.86 18.55,5.13 17.86,6.21C17.17,7.29 16.22,8 15,8.39V22H13V16H11V22H9V10.08C8.72,10.17 8.5,10.28 8.39,10.41C7.45,11.16 7,12.19 7,13.5V14H5V13.5C5,11.53 5.72,9.94 7.13,8.72C8.53,7.56 10.16,7 12,7C13.41,7 14.56,6.64 15.47,5.95C16.5,5.11 17,3.95 17,2.5V2H19V2.39M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2Z";
var mdiHairDryer = "M22 9A4.32 4.32 0 0 1 19.78 8.45A3.4 3.4 0 0 0 18 8V7A4.32 4.32 0 0 1 20.22 7.55A3.4 3.4 0 0 0 22 8M22 6A3.4 3.4 0 0 1 20.22 5.55A4.32 4.32 0 0 0 18 5V6A3.4 3.4 0 0 1 19.78 6.45A4.32 4.32 0 0 0 22 7M22 10A3.4 3.4 0 0 1 20.22 9.55A4.32 4.32 0 0 0 18 9V10A3.4 3.4 0 0 1 19.78 10.45A4.32 4.32 0 0 0 22 11M10 12.73A70.39 70.39 0 0 0 17 11V4S10.5 2 7.5 2A5.5 5.5 0 0 0 6.12 12.82L7 19H8A3 3 0 0 0 9.46 21.33A3.15 3.15 0 0 1 11 24H12A4.12 4.12 0 0 0 10.09 20.55C9.39 20 9 19.63 9 19H10M7.5 10A2.5 2.5 0 1 1 10 7.5A2.5 2.5 0 0 1 7.5 10Z";
var mdiHairDryerOutline = "M10 12.73A70.39 70.39 0 0 0 17 11V4S10.5 2 7.5 2A5.5 5.5 0 0 0 6.12 12.82L7 19H8A3 3 0 0 0 9.46 21.33A3.15 3.15 0 0 1 11 24H12A4.12 4.12 0 0 0 10.09 20.55C9.39 20 9 19.63 9 19H10M4 7.5A3.5 3.5 0 0 1 7.5 4A37.08 37.08 0 0 1 15 5.5V9.5A37.08 37.08 0 0 1 7.5 11A3.5 3.5 0 0 1 4 7.5M22 9A4.32 4.32 0 0 1 19.78 8.45A3.4 3.4 0 0 0 18 8V7A4.32 4.32 0 0 1 20.22 7.55A3.4 3.4 0 0 0 22 8M22 6A3.4 3.4 0 0 1 20.22 5.55A4.32 4.32 0 0 0 18 5V6A3.4 3.4 0 0 1 19.78 6.45A4.32 4.32 0 0 0 22 7M22 10A3.4 3.4 0 0 1 20.22 9.55A4.32 4.32 0 0 0 18 9V10A3.4 3.4 0 0 1 19.78 10.45A4.32 4.32 0 0 0 22 11M9 7.5A1.5 1.5 0 1 1 7.5 6A1.5 1.5 0 0 1 9 7.5Z";
var mdiHalloween = "M6.5,6C7.47,6 8.37,6.5 9.11,7.38C9.66,6.79 10.31,6.36 11,6.15V4A2,2 0 0,1 13,2H15V4H13V6.15C13.69,6.36 14.34,6.79 14.89,7.38C15.63,6.5 16.53,6 17.5,6C20,6 22,9.36 22,13.5C22,17.64 20,21 17.5,21C16.53,21 15.63,20.5 14.89,19.62C14.08,20.5 13.08,21 12,21C10.92,21 9.92,20.5 9.11,19.62C8.37,20.5 7.47,21 6.5,21C4,21 2,17.64 2,13.5C2,9.36 4,6 6.5,6M9,10L7.75,12.25H10.25L9,10M15,10L13.75,12.25H16.25L15,10M8,17H10L11,16L12,17H14L15,16L16,17L17.5,14L13.92,14.62L13,16L12,15H10L9,16L8,15L6,14L8,17Z";
var mdiHamburger = "M2,16H22V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V16M6,4H18C20.22,4 22,5.78 22,8V10H2V8C2,5.78 3.78,4 6,4M4,11H15L17,13L19,11H20C21.11,11 22,11.89 22,13C22,14.11 21.11,15 20,15H4C2.89,15 2,14.11 2,13C2,11.89 2.89,11 4,11Z";
var mdiHammer = "M2 19.63L13.43 8.2L12.72 7.5L14.14 6.07L12 3.89C13.2 2.7 15.09 2.7 16.27 3.89L19.87 7.5L18.45 8.91H21.29L22 9.62L18.45 13.21L17.74 12.5V9.62L16.27 11.04L15.56 10.33L4.13 21.76L2 19.63Z";
var mdiHammerScrewdriver = "M16.06 13.09L21.69 18.68L18.37 21.96L12.78 16.37V15.45L15.14 13.09H16.06M16.97 10.56L16 9.6L11.21 14.4V16.37L5.58 22L2.3 18.68L7.89 13.09H9.86L10.64 12.31L6.8 8.46H5.5L2.69 5.62L5.31 3L8.11 5.8V7.11L12 10.95L14.66 8.29L13.7 7.28L15 5.97H12.34L11.69 5.32L15 2L15.66 2.66V5.32L16.97 4L20.25 7.28C21.34 8.38 21.34 10.17 20.25 11.26L18.28 9.25L16.97 10.56Z";
var mdiHammerWrench = "M13.78 15.3L19.78 21.3L21.89 19.14L15.89 13.14L13.78 15.3M17.5 10.1C17.11 10.1 16.69 10.05 16.36 9.91L4.97 21.25L2.86 19.14L10.27 11.74L8.5 9.96L7.78 10.66L6.33 9.25V12.11L5.63 12.81L2.11 9.25L2.81 8.55H5.62L4.22 7.14L7.78 3.58C8.95 2.41 10.83 2.41 12 3.58L9.89 5.74L11.3 7.14L10.59 7.85L12.38 9.63L14.2 7.75C14.06 7.42 14 7 14 6.63C14 4.66 15.56 3.11 17.5 3.11C18.09 3.11 18.61 3.25 19.08 3.53L16.41 6.2L17.91 7.7L20.58 5.03C20.86 5.5 21 6 21 6.63C21 8.55 19.45 10.1 17.5 10.1Z";
var mdiHand = "M6.58,19H14.58V22H6.58V19M19.74,11.6C19.55,11.4 19.29,11.28 19,11.28L18.78,11.31L15.58,13V11.83L16.09,2.9C16.12,2.35 15.7,1.87 15.15,1.84C14.6,1.81 14.12,2.23 14.09,2.78L13.82,7.47H13.58L12.54,7.58V2A1,1 0 0,0 11.54,1C11,1 10.54,1.45 10.54,2V8.41L9.72,8.78L9.03,3.32C8.96,2.77 8.46,2.38 7.91,2.45C7.36,2.5 6.97,3 7.04,3.57L7.81,9.63L7.43,9.8C7.3,9.85 7.18,9.93 7.07,10L5.97,6.11C5.81,5.54 5.25,5.2 4.71,5.34C4.18,5.5 3.88,6.08 4.04,6.65L6.61,15.77C6.61,15.8 6.63,15.84 6.64,15.87L6.67,16H6.68C6.9,16.57 7.47,17 8.08,17H14.58C14.97,17 15.32,16.84 15.58,16.57L20.5,12.37L19.74,11.6Z";
var mdiHandHeart = "M20 17Q20.86 17 21.45 17.6T22.03 19L14 22L7 20V11H8.95L16.22 13.69Q17 14 17 14.81 17 15.28 16.66 15.63T15.8 16H13L11.25 15.33L10.92 16.27L13 17H20M16 3.23Q17.06 2 18.7 2 20.06 2 21 3T22 5.3Q22 6.33 21 7.76T19.03 10.15 16 13Q13.92 11.11 12.94 10.15T10.97 7.76 10 5.3Q10 3.94 10.97 3T13.31 2Q14.91 2 16 3.23M.984 11H5V22H.984V11Z";
var mdiHandHeartOutline = "M16 3.23C16.71 2.41 17.61 2 18.7 2C19.61 2 20.37 2.33 21 3C21.63 3.67 21.96 4.43 22 5.3C22 6 21.67 6.81 21 7.76S19.68 9.5 19.03 10.15C18.38 10.79 17.37 11.74 16 13C14.61 11.74 13.59 10.79 12.94 10.15S11.63 8.71 10.97 7.76C10.31 6.81 10 6 10 5.3C10 4.39 10.32 3.63 10.97 3C11.62 2.37 12.4 2.04 13.31 2C14.38 2 15.27 2.41 16 3.23M22 19V20L14 22.5L7 20.56V22H1V11H8.97L15.13 13.3C16.25 13.72 17 14.8 17 16H19C20.66 16 22 17.34 22 19M5 20V13H3V20H5M19.9 18.57C19.74 18.24 19.39 18 19 18H13.65C13.11 18 12.58 17.92 12.07 17.75L9.69 16.96L10.32 15.06L12.7 15.85C13 15.95 15 16 15 16C15 15.63 14.77 15.3 14.43 15.17L8.61 13H7V18.5L13.97 20.41L19.9 18.57Z";
var mdiHandLeft = "M3,6.58V18.67C3,20.5 4.5,22 6.33,22H12.42C13.32,22 14.17,21.64 14.79,21L21.33,14.36C21.33,14.36 20.28,13.33 20.25,13.32C20.07,13.16 19.84,13.07 19.59,13.07C19.41,13.07 19.24,13.12 19.09,13.21C19.06,13.22 15.5,15.26 15.5,15.26V5.33A1.25,1.25 0 0,0 14.25,4.08A1.25,1.25 0 0,0 13,5.33V11.17H12.17V3.25A1.25,1.25 0 0,0 10.92,2A1.25,1.25 0 0,0 9.67,3.25V11.17H8.83V4.08A1.25,1.25 0 0,0 7.58,2.83A1.25,1.25 0 0,0 6.33,4.08V11.17H5.5V6.58A1.25,1.25 0 0,0 4.25,5.33A1.25,1.25 0 0,0 3,6.58Z";
var mdiHandOkay = "M13.3,19.26L18.96,13.61L21.08,15.73L15.42,21.38L13.3,19.26M16.5,11.13L13.4,8.05C13.27,7.92 13.13,7.83 13,7.76L11.88,3.47C11.74,2.93 11.2,2.61 10.66,2.75C10.13,2.88 9.81,3.43 9.94,3.96L11,8.03V8.03L8.67,3.19C8.44,2.69 7.84,2.5 7.34,2.71C6.84,2.95 6.63,3.55 6.87,4.05L8.56,7.59L5.19,4.25C4.8,3.86 4.16,3.86 3.77,4.25C3.38,4.65 3.39,5.28 3.78,5.67L7.5,9.37L6.8,9.64L5.72,10.07L3.81,11.39C3.81,11.39 3,12.44 2.93,12.89C2.85,13.34 3.72,15.6 3.72,15.6H3.73C3.89,15.94 4.23,16.18 4.63,16.18A1,1 0 0,0 5.63,15.18C5.63,15.08 5.6,15 5.57,14.91L5.59,14.9L5,13.17L6.23,12.19C6.7,12.21 7.71,12.29 8.2,12.32C10.93,14.77 8.35,15.73 8.35,15.73L4.89,16.79L4.72,16.93C4.5,17.13 4.41,17.4 4.42,17.68L4.44,18.75L10.87,18.25C11.25,18.26 11.61,18.12 11.89,17.85L16.5,13.25C17.03,12.71 17.05,11.7 16.5,11.13Z";
var mdiHandPeace = "M7,19H15V22H7V19M16.15,12V12L12.97,10.34C12.82,10.34 12.69,10.4 12.6,10.5L12.3,10.81L12.89,13.23L11.91,13.47L10.72,8.5L9.25,9.18L10.29,13.47L9.32,13.7L8.32,9.59L7.85,9.8C7.35,10 7,10.53 7,11.14V15.5C7,16.3 7.73,17 8.5,17H15C15.39,17 15.74,16.84 16,16.57L16.5,16.16C16.5,16.16 17,15.78 17,15.36V13.7C17,13.7 17,12.56 16.15,12M16.94,1C16.4,0.91 15.87,1.25 15.76,1.8L14.69,7.97C14.47,7.94 14.38,7.86 14.08,7.83L13.65,7.88L12.41,1.8C12.3,1.26 11.78,0.91 11.24,1C10.69,1.13 10.34,1.66 10.45,2.2L11.65,8.11V8.11L12,9.67C12.28,9.47 12.61,9.34 12.97,9.34H13.31L16.31,10.95L17.72,2.2C17.83,1.66 17.5,1.13 16.94,1Z";
var mdiHandPeaceVariant = "M7,19H15V22H7V19M16.94,1C16.4,0.91 15.87,1.25 15.76,1.8L14.75,7.57C14.53,7.54 14.29,7.5 14,7.47L13.57,7.5L12.41,1.8C12.31,1.26 11.78,0.91 11.24,1C10.7,1.13 10.35,1.66 10.45,2.2L11.65,8.11L7.85,9.8C7.35,10 7,10.53 7,11.14V15.5C7,16.3 7.73,17 8.5,17H15C15.39,17 15.74,16.84 16,16.57L16.5,16.16C16.5,16.16 17,15.78 17,15.36V13C17,13 17,11.86 16.13,11.3L17.71,2.2C17.83,1.66 17.5,1.13 16.94,1Z";
var mdiHandPointingDown = "M9.9,21V11L6.7,12.69L6.5,12.72C6.19,12.72 5.93,12.6 5.74,12.4L5,11.63L9.9,7.43C10.16,7.16 10.5,7 10.9,7H17.4C18.17,7 18.9,7.7 18.9,8.5V12.86C18.9,13.47 18.55,14 18.05,14.2L13.11,16.4L11.9,16.53V21A1,1 0 0,1 10.9,22A1,1 0 0,1 9.9,21M18.9,5H10.9V2H18.9V5Z";
var mdiHandPointingLeft = "M3,9H13L11.31,5.8L11.28,5.58C11.28,5.29 11.4,5.03 11.6,4.84L12.37,4.1L16.57,9C16.84,9.26 17,9.61 17,10V16.5C17,17.27 16.3,18 15.5,18H11.14C10.53,18 10,17.65 9.8,17.15L7.6,12.21L7.47,11H3A1,1 0 0,1 2,10A1,1 0 0,1 3,9M19,18V10H22V18H19Z";
var mdiHandPointingRight = "M21,9A1,1 0 0,1 22,10A1,1 0 0,1 21,11H16.53L16.4,12.21L14.2,17.15C14,17.65 13.47,18 12.86,18H8.5C7.7,18 7,17.27 7,16.5V10C7,9.61 7.16,9.26 7.43,9L11.63,4.1L12.4,4.84C12.6,5.03 12.72,5.29 12.72,5.58L12.69,5.8L11,9H21M2,18V10H5V18H2Z";
var mdiHandPointingUp = "M14,3V13L17.2,11.31L17.42,11.28C17.71,11.28 17.97,11.4 18.16,11.6L18.9,12.37L14,16.57C13.74,16.84 13.39,17 13,17H6.5C5.73,17 5,16.3 5,15.5V11.14C5,10.53 5.35,10 5.85,9.8L10.79,7.6L12,7.47V3A1,1 0 0,1 13,2A1,1 0 0,1 14,3M5,19H13V22H5V19Z";
var mdiHandRight = "M21,6.58V18.67A3.33,3.33 0 0,1 17.67,22H11.58C10.68,22 9.83,21.64 9.21,21L2.67,14.36C2.67,14.36 3.72,13.33 3.75,13.32C3.93,13.16 4.16,13.07 4.41,13.07C4.59,13.07 4.76,13.12 4.91,13.21C4.94,13.22 8.5,15.26 8.5,15.26V5.33A1.25,1.25 0 0,1 9.75,4.08A1.25,1.25 0 0,1 11,5.33V11.17H11.83V3.25A1.25,1.25 0 0,1 13.08,2C13.78,2 14.33,2.56 14.33,3.25V11.17H15.17V4.08C15.17,3.39 15.72,2.83 16.42,2.83A1.25,1.25 0 0,1 17.67,4.08V11.17H18.5V6.58A1.25,1.25 0 0,1 19.75,5.33A1.25,1.25 0 0,1 21,6.58Z";
var mdiHandSaw = "M9.8,17L5.9,11.6L20,2L22,5V8H19V11H16V14H13V17M9.7,18.7L9.2,21.5L7.6,22.7C6.7,23.3 5.5,23.1 4.8,22.2L1.3,17.3C0.7,16.4 0.9,15.2 1.8,14.5L5.1,12.2L9.7,18.7M4.6,15L3,16.1L6.5,21L8.1,19.8L4.6,15Z";
var mdiHandWash = "M17 5L17.62 6.37L19 7L17.62 7.63L17 9L16.36 7.63L15 7L16.36 6.37L17 5M11 6.13V4H13C13.57 4 14.1 4.17 14.55 4.45L16 3C15.15 2.39 14.13 2 13 2H7.5V4H9V6.14C7.23 6.5 5.81 7.8 5.26 9.5H9.24L15 11.65V11.03C15 8.61 13.28 6.59 11 6.13M1 22H5V11H1V22M20 17H13L10.91 16.27L11.24 15.33L13 16H15.82C16.47 16 17 15.47 17 14.82C17 14.33 16.69 13.89 16.23 13.71L8.97 11H7V20L14 22L22 19C22 17.9 21.11 17 20 17M20 14C21.1 14 22 13.1 22 12S20 8 20 8 18 10.9 18 12 18.9 14 20 14Z";
var mdiHandWashOutline = "M17 5L17.62 6.37L19 7L17.62 7.63L17 9L16.36 7.63L15 7L16.36 6.37L17 5M20 14C21.1 14 22 13.1 22 12S20 8 20 8 18 10.9 18 12 18.9 14 20 14M11 6.1V4H13C13.57 4 14.1 4.17 14.55 4.45L16 3C15.15 2.39 14.13 2 13 2H7.5V4H9V6.11C7.22 6.5 5.8 7.79 5.25 9.5H7.41C7.94 8.61 8.89 8 10 8C11.62 8 12.94 9.29 13 10.9L15 11.65V11C15 8.58 13.28 6.56 11 6.1M22 19V20L14 22.5L7 20.56V22H1V11H8.97L15.13 13.3C16.25 13.72 17 14.8 17 16H19C20.66 16 22 17.34 22 19M5 20V13H3V20H5M19.9 18.57C19.74 18.24 19.39 18 19 18H13.65C13.11 18 12.58 17.92 12.07 17.75L9.69 16.96L10.32 15.06L12.7 15.85C13 15.95 15 16 15 16C15 15.63 14.77 15.3 14.43 15.17L8.61 13H7V18.5L13.97 20.41L19.9 18.57Z";
var mdiHandWater = "M17.42 22.5H5.33C3.5 22.5 2 21 2 19.17V13.08C2 12.18 2.36 11.33 3 10.71L8.63 5.17C8.63 5.17 9.66 6.22 9.67 6.25C9.83 6.43 9.92 6.66 9.92 6.91C9.92 7.09 9.87 7.26 9.78 7.41C9.77 7.44 8 10 8 10H18.67C19.36 10 19.92 10.56 19.92 11.25C19.92 11.94 19.36 12.5 18.67 12.5H12.83V13.33H20.75C21.44 13.33 22 13.89 22 14.58C22 15.28 21.44 15.83 20.75 15.83H12.83V16.67H19.92C20.61 16.67 21.17 17.22 21.17 17.92C21.17 18.61 20.61 19.17 19.92 19.17H12.83V20H17.42C18.11 20 18.67 20.56 18.67 21.25C18.67 21.94 18.11 22.5 17.42 22.5M13.5 4.8C13.5 4.8 12 6.46 12 7.5C12 9.5 15 9.5 15 7.5C15 6.46 13.5 4.8 13.5 4.8M18.5 1C18.5 1 16 3.76 16 5.5C16 8.83 21 8.83 21 5.5C21 3.76 18.5 1 18.5 1Z";
var mdiHandball = "M15.83 10.43A6.93 6.93 0 0 1 18.39 14.86A6.64 6.64 0 0 1 17.5 19.5L15.78 18.5A5 5 0 0 0 16.44 16A5.22 5.22 0 0 0 15.46 13.06L9.18 23.93L7.44 22.95L10.44 17.75L8.71 16.76L7.21 19.34L5.5 18.36L10.63 9.45A7 7 0 0 1 8.8 5.46A6.91 6.91 0 0 1 9.69 1.1L11.43 2.13A4.84 4.84 0 0 0 10.91 5.9A4.74 4.74 0 0 0 13.21 8.93M16 5A2 2 0 1 0 18 7A2 2 0 0 0 16 5M13.5 1A1.5 1.5 0 1 0 15 2.5A1.5 1.5 0 0 0 13.5 1Z";
var mdiHandcuffs = "M20.24 6.76C18.4 4.91 15.65 4.53 13.42 5.59L12.46 4.63C12.07 4.24 11.44 4.24 11.05 4.63L10.97 4.72C10.83 3.75 10 3 9 3C7.9 3 7 3.9 7 5C7 5.09 7 5.18 7.03 5.26C6.42 5.61 6 6.25 6 7C6 7.46 6.16 7.87 6.42 8.21C6.17 8.39 6 8.67 6 9V10.35C3.67 11.17 2 13.39 2 16C2 19.31 4.69 22 8 22S14 19.31 14 16C14 13.39 12.33 11.17 10 10.35V9C10 8.67 9.83 8.39 9.58 8.21C9.84 7.87 10 7.46 10 7C10 6.91 10 6.82 9.97 6.74C10.15 6.64 10.3 6.5 10.43 6.38C11.36 6.88 12 7.86 12 9V9.08C12.13 9.15 12.25 9.25 12.38 9.33C12.57 8.91 12.83 8.5 13.17 8.17C14.73 6.61 17.27 6.61 18.83 8.17C20.39 9.73 20.39 12.27 18.83 13.83C18.03 14.63 17 15 15.93 15C16 15.32 16 15.66 16 16C16 16.34 15.97 16.67 15.93 17C17.5 17 19.05 16.43 20.24 15.24C22.59 12.9 22.59 9.1 20.24 6.76M9 4C9.55 4 10 4.45 10 5C10 5.33 9.83 5.61 9.58 5.79C9.22 5.31 8.65 5 8 5C8 4.45 8.45 4 9 4M7.42 6.21C7.78 6.69 8.35 7 9 7C9 7.55 8.55 8 8 8S7 7.55 7 7C7 6.67 7.17 6.39 7.42 6.21M12 16C12 18.21 10.21 20 8 20S4 18.21 4 16C4 13.79 5.79 12 8 12S12 13.79 12 16Z";
var mdiHandshake = "M11 6H14L17.29 2.7A1 1 0 0 1 18.71 2.7L21.29 5.29A1 1 0 0 1 21.29 6.7L19 9H11V11A1 1 0 0 1 10 12A1 1 0 0 1 9 11V8A2 2 0 0 1 11 6M5 11V15L2.71 17.29A1 1 0 0 0 2.71 18.7L5.29 21.29A1 1 0 0 0 6.71 21.29L11 17H15A1 1 0 0 0 16 16V15H17A1 1 0 0 0 18 14V13H19A1 1 0 0 0 20 12V11H13V12A2 2 0 0 1 11 14H9A2 2 0 0 1 7 12V9Z";
var mdiHandshakeOutline = "M21.71 8.71C22.96 7.46 22.39 6 21.71 5.29L18.71 2.29C17.45 1.04 16 1.61 15.29 2.29L13.59 4H11C9.1 4 8 5 7.44 6.15L3 10.59V14.59L2.29 15.29C1.04 16.55 1.61 18 2.29 18.71L5.29 21.71C5.83 22.25 6.41 22.45 6.96 22.45C7.67 22.45 8.32 22.1 8.71 21.71L11.41 19H15C16.7 19 17.56 17.94 17.87 16.9C19 16.6 19.62 15.74 19.87 14.9C21.42 14.5 22 13.03 22 12V9H21.41L21.71 8.71M20 12C20 12.45 19.81 13 19 13L18 13L18 14C18 14.45 17.81 15 17 15L16 15L16 16C16 16.45 15.81 17 15 17H10.59L7.31 20.28C7 20.57 6.82 20.4 6.71 20.29L3.72 17.31C3.43 17 3.6 16.82 3.71 16.71L5 15.41V11.41L7 9.41V11C7 12.21 7.8 14 10 14S13 12.21 13 11H20V12M20.29 7.29L18.59 9H11V11C11 11.45 10.81 12 10 12S9 11.45 9 11V8C9 7.54 9.17 6 11 6H14.41L16.69 3.72C17 3.43 17.18 3.6 17.29 3.71L20.28 6.69C20.57 7 20.4 7.18 20.29 7.29Z";
var mdiHanger = "M12 4A3.5 3.5 0 0 0 8.5 7.5H10.5A1.5 1.5 0 0 1 12 6A1.5 1.5 0 0 1 13.5 7.5A1.5 1.5 0 0 1 12 9C11.45 9 11 9.45 11 10V11.75L2.4 18.2A1 1 0 0 0 3 20H21A1 1 0 0 0 21.6 18.2L13 11.75V10.85A3.5 3.5 0 0 0 15.5 7.5A3.5 3.5 0 0 0 12 4M12 13.5L18 18H6Z";
var mdiHardHat = "M9.87,12.15L9,6.46C10.95,5.84 13.05,5.84 15,6.46L14.13,12.15C14.06,12.64 13.63,13 13.13,13H10.86C10.37,13 9.94,12.64 9.87,12.15M22,16V16C22,15.21 21.53,14.5 20.8,14.17C20.32,11.86 18.96,9.83 17,8.5L15.24,13.34C15.1,13.74 14.72,14 14.3,14H9.7C9.28,14 8.9,13.74 8.76,13.34L7,8.5C5.04,9.83 3.68,11.86 3.2,14.16C2.47,14.5 2,15.2 2,16L8.45,17.84C8.81,17.94 9.18,18 9.55,18H14.43C14.8,18 15.17,17.94 15.53,17.84L22,16Z";
var mdiHarddisk = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12,4A6,6 0 0,0 6,10C6,13.31 8.69,16 12.1,16L11.22,13.77C10.95,13.29 11.11,12.68 11.59,12.4L12.45,11.9C12.93,11.63 13.54,11.79 13.82,12.27L15.74,14.69C17.12,13.59 18,11.9 18,10A6,6 0 0,0 12,4M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M12.09,13.27L14.58,19.58L17.17,18.08L12.95,12.77L12.09,13.27Z";
var mdiHarddiskPlus = "M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M18 2H6A2 2 0 0 0 4 4V13.09A5.47 5.47 0 0 1 5 13A5.71 5.71 0 0 1 7 13.36A6 6 0 1 1 15.71 14.69L13.79 12.27A1 1 0 0 0 12.42 11.9L11.56 12.4A1 1 0 0 0 11.19 13.77L12.1 16A6.12 6.12 0 0 1 10 15.62A6 6 0 0 1 10.19 22H18A2 2 0 0 0 20 20V4A2 2 0 0 0 18 2M14.58 19.58L12.09 13.27L12.95 12.77L17.17 18.08M12 11A1 1 0 1 0 11 10A1 1 0 0 0 12 11M9 20H6V23H4V20H1V18H4V15H6V18H9Z";
var mdiHarddiskRemove = "M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M12 9A1 1 0 1 0 13 10A1 1 0 0 0 12 9M18 2H6A2 2 0 0 0 4 4V13.09A5.47 5.47 0 0 1 5 13A5.71 5.71 0 0 1 7 13.36A6 6 0 1 1 15.71 14.69L13.79 12.27A1 1 0 0 0 12.42 11.9L11.56 12.4A1 1 0 0 0 11.19 13.77L12.1 16A6.12 6.12 0 0 1 10 15.62A6 6 0 0 1 10.19 22H18A2 2 0 0 0 20 20V4A2 2 0 0 0 18 2M14.58 19.58L12.09 13.27L12.95 12.77L17.17 18.08M12 11A1 1 0 1 0 11 10A1 1 0 0 0 12 11M7.12 22.54L5 20.41L2.88 22.54L1.46 21.12L3.59 19L1.46 16.88L2.88 15.46L5 17.59L7.12 15.46L8.54 16.88L6.41 19L8.54 21.12Z";
var mdiHatFedora = "M19.11,11.92C19.13,11.71 19.14,11.5 19.14,11.29C19.14,7.86 17.71,4.14 16.28,4.14C14.85,4.14 13.42,5.57 12,5.57C10.57,5.57 9.14,4.14 7.71,4.14C6.28,4.14 4.86,7.79 4.86,11.29C4.86,11.5 4.86,11.71 4.88,11.92C7.22,12.45 9.6,12.72 12,12.71C14.45,12.71 16.83,12.44 19.11,11.92M3.45,18.18C9,19.85 14.96,19.86 20.54,18.18C20.96,18.04 21.33,17.77 21.59,17.41C21.85,17.05 22,16.61 22,16.17C22,15.72 21.86,15.29 21.61,14.92C21.35,14.56 21,14.29 20.56,14.14C17.86,15 15,15.45 12,15.45C9,15.45 6.13,15 3.43,14.14C3,14.29 2.65,14.57 2.39,14.93C2.14,15.29 2,15.72 2,16.17C2,17.11 2.61,17.9 3.45,18.18V18.18Z";
var mdiHazardLights = "M12,12L14.33,16H9.68L12,12M12,8L6.21,18H17.8L12,8M12,2L1,21H23L12,2M12,6L19.53,19H4.47L12,6Z";
var mdiHdr = "M21,11.5V10.5C21,9.7 20.3,9 19.5,9H16V15H17.5V13H18.6L19.5,15H21L20.1,12.9C20.6,12.6 21,12.1 21,11.5M19.5,11.5H17.5V10.5H19.5V11.5M6.5,11H4.5V9H3V15H4.5V12.5H6.5V15H8V9H6.5V11M13,9H9.5V15H13C13.8,15 14.5,14.3 14.5,13.5V10.5C14.5,9.7 13.8,9 13,9M13,13.5H11V10.5H13V13.5Z";
var mdiHdrOff = "M17.5,15V13H18.6L19.5,15H21L20.1,12.9C20.6,12.7 21,12.1 21,11.5V10.5C21,9.7 20.3,9 19.5,9H16V13.9L17.1,15H17.5M17.5,10.5H19.5V11.5H17.5V10.5M13,10.5V10.9L14.5,12.4V10.5C14.5,9.7 13.8,9 13,9H11.1L12.6,10.5H13M9.5,9.5L2.5,2.5L1.4,3.5L6.9,9H6.5V11H4.5V9H3V15H4.5V12.5H6.5V15H8V10.1L9.5,11.6V15H12.9L20.5,22.6L21.6,21.5L9.5,9.5Z";
var mdiHead = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3";
var mdiHeadAlert = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M14 15H12V13H14V14M14 11H12V5H14V11Z";
var mdiHeadAlertOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M14 15H12V13H14V15M14 11H12V5H14";
var mdiHeadCheck = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M12.47 13L9 9.5L10.4 8.09L12.47 10.17L16.6 6L18 7.41L12.47 13Z";
var mdiHeadCheckOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.42 1 4.61 4.43 4.06 8.91L2.5 11C1.92 11.72 1.82 12.72 2.24 13.59C2.6 14.31 3.24 14.8 4 14.95V16C4 17.86 5.28 19.43 7 19.87V23H18V17.47C20.5 15.83 22 13.06 22 10C22 5.04 17.96 1 13 1M12.47 13L9 9.5L10.4 8.09L12.47 10.17L16.6 6L18 7.41L12.47 13Z";
var mdiHeadCog = "M13 8.58C13.78 8.58 14.44 9.19 14.44 10S13.78 11.44 13 11.44 11.58 10.78 11.58 10 12.19 8.58 13 8.58M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M16 10C16 9.84 16 9.75 15.94 9.61L16.83 8.95C16.88 8.91 16.92 8.77 16.88 8.67L16.08 7.31C16.03 7.22 15.89 7.17 15.8 7.22L14.81 7.64C14.63 7.45 14.39 7.31 14.16 7.22L14 6.19C13.97 6.05 13.92 6 13.78 6H12.19C12.09 6 12 6.05 12 6.19L11.86 7.22C11.63 7.31 11.39 7.45 11.2 7.64L10.17 7.22C10.08 7.17 10 7.22 9.94 7.31L9.14 8.67C9.09 8.81 9.09 8.91 9.19 8.95L10.03 9.61C10.03 9.75 10 9.89 10 10C10 10.13 10.03 10.27 10.03 10.41L9.19 11.06C9.09 11.11 9.09 11.2 9.14 11.3L9.94 12.7C10 12.8 10.08 12.8 10.17 12.8L11.16 12.37C11.39 12.56 11.58 12.66 11.86 12.75L12 13.83C12 13.92 12.09 14 12.19 14H13.78C13.92 14 13.97 13.92 14 13.83L14.16 12.75C14.39 12.66 14.63 12.56 14.81 12.38L15.8 12.8C15.89 12.8 16.03 12.8 16.08 12.7L16.88 11.3C16.92 11.2 16.88 11.11 16.83 11.06L16 10.41V10Z";
var mdiHeadCogOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.42 1 4.61 4.43 4.06 8.91L2.5 11C1.92 11.72 1.82 12.72 2.24 13.59C2.6 14.31 3.24 14.8 4 14.95V16C4 17.86 5.28 19.43 7 19.87V23H18V17.47C20.5 15.83 22 13.06 22 10C22 5.04 17.96 1 13 1M16.1 9.42V9C16.1 8.85 16.1 8.76 16.04 8.62L16.93 7.96C17 7.92 17 7.78 17 7.68L16.18 6.32C16.13 6.23 16 6.18 15.9 6.23L14.91 6.65C14.73 6.46 14.5 6.32 14.26 6.23L14.1 5.2C14.07 5.06 14 5 13.88 5H12.29C12.19 5 12.1 5.06 12.1 5.2L11.96 6.23C11.73 6.32 11.5 6.46 11.3 6.65L10.27 6.23C10.18 6.18 10.1 6.23 10.04 6.32L9.24 7.68C9.19 7.82 9.19 7.92 9.29 7.96L10.13 8.62C10.13 8.76 10.1 8.9 10.1 9C10.1 9.14 10.13 9.28 10.13 9.42L9.29 10.07C9.19 10.12 9.19 10.21 9.24 10.31L10.04 11.71C10.1 11.81 10.18 11.81 10.27 11.81L11.26 11.38C11.5 11.57 11.68 11.67 11.96 11.76L12.1 12.84C12.1 12.93 12.19 13 12.29 13H13.88C14 13 14.07 12.93 14.1 12.84L14.26 11.76C14.5 11.67 14.73 11.57 14.91 11.39L15.9 11.81C16 11.81 16.13 11.81 16.18 11.71L17 10.31C17 10.21 17 10.12 16.93 10.07L16.1 9.42M13.1 10.45C12.32 10.45 11.68 9.79 11.68 9S12.29 7.59 13.1 7.59C13.88 7.59 14.54 8.2 14.54 9S13.88 10.45 13.1 10.45Z";
var mdiHeadDotsHorizontal = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M10 11C9.45 11 9 10.55 9 10S9.45 9 10 9 11 9.45 11 10 10.55 11 10 11M13 11C12.45 11 12 10.55 12 10S12.45 9 13 9 14 9.45 14 10 13.55 11 13 11M16 11C15.45 11 15 10.55 15 10S15.45 9 16 9 17 9.45 17 10 16.55 11 16 11Z";
var mdiHeadDotsHorizontalOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M10 10C9.4 10 9 9.6 9 9S9.4 8 10 8 11 8.4 11 9 10.6 10 10 10M13 10C12.4 10 12 9.6 12 9S12.4 8 13 8 14 8.4 14 9 13.6 10 13 10M16 10C15.5 10 15 9.6 15 9S15.5 8 16 8 17 8.4 17 9 16.5 10 16 10Z";
var mdiHeadFlash = "M13 3C9.2 3 6.2 6 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M15 9L11.9 15L12.5 11H10.5L12.5 6H15L13.5 9H15Z";
var mdiHeadFlashOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M15 9L11.9 15L12.5 11H10.4L12.5 6H15L13.5 9H15Z";
var mdiHeadHeart = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M17 8.83C17 10.37 15.64 11.6 13.58 13.47L13 14L12.42 13.47C10.36 11.6 9 10.37 9 8.83C9 7.63 9.96 6.64 11.16 6.63H11.2C11.89 6.63 12.55 6.94 13 7.46C13.45 6.94 14.11 6.63 14.8 6.63C16 6.62 17 7.59 17 8.79V8.83Z";
var mdiHeadHeartOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1M17 8.83C17 10.37 15.64 11.6 13.58 13.47L13 14L12.42 13.47C10.36 11.6 9 10.37 9 8.83C9 7.63 9.96 6.64 11.16 6.63H11.2C11.89 6.63 12.55 6.94 13 7.46C13.45 6.94 14.11 6.63 14.8 6.63C16 6.62 17 7.59 17 8.79V8.83Z";
var mdiHeadLightbulb = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M14 14H12V13H14V14M15.6 9.5C15.34 9.94 14.96 10.32 14.5 10.58V12H11.5V10.58C10.07 9.75 9.57 7.92 10.4 6.5S13.07 4.56 14.5 5.38 16.43 8.05 15.6 9.5Z";
var mdiHeadLightbulbOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M14 14H12V13H14V14M15.6 9.5C15.3 9.9 15 10.3 14.5 10.6V12H11.5V10.6C10.1 9.8 9.6 7.9 10.4 6.5S13.1 4.6 14.5 5.4 16.4 8.1 15.6 9.5Z";
var mdiHeadMinus = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M17 10H9V8H17V10Z";
var mdiHeadMinusOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.7 1.8 12.7 2.2 13.6C2.6 14.3 3.2 14.8 4 15V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.9 22 13.1 22 10C22 5 18 1 13 1M17 10H9V8H17V10Z";
var mdiHeadOutline = "M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C2 11.8 1.9 12.8 2.3 13.6C2.7 14.3 3.3 14.8 4 14.9V16C4 17.8 5.3 19.4 7 19.9V23H18V17.5C20.5 15.8 22 13.1 22 10C22 5 18 1 13 1M16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 6 9.2 3 13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3Z";
var mdiHeadPlus = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M17 10H14V13H12V10H9V8H12V5H14V8H17V10Z";
var mdiHeadPlusOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.7 1.8 12.7 2.2 13.6C2.6 14.3 3.2 14.8 4 15V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.9 22 13.1 22 10C22 5 18 1 13 1M17 10H14V13H12V10H9V8H12V5H14V8H17V10Z";
var mdiHeadQuestion = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M14 14H12V12H14V14M15.75 8.81C15.46 9.21 15.09 9.5 14.64 9.74C14.39 9.9 14.22 10.07 14.13 10.26C14.04 10.44 14 10.69 14 11H12C12 10.5 12.11 10.08 12.31 9.82C12.5 9.55 12.85 9.25 13.36 8.91C13.62 8.75 13.83 8.55 13.97 8.32C14.13 8.09 14.2 7.82 14.2 7.5C14.2 7.2 14.12 6.94 13.94 6.75C13.76 6.57 13.5 6.47 13.19 6.47C12.93 6.47 12.71 6.55 12.53 6.7C12.35 6.86 12.26 7.09 12.25 7.39H10.32L10.31 7.36C10.3 6.57 10.56 6 11.08 5.59C11.62 5.2 12.32 5 13.19 5C14.12 5 14.85 5.23 15.38 5.68C15.92 6.13 16.19 6.74 16.19 7.5C16.19 8 16.04 8.41 15.75 8.81Z";
var mdiHeadQuestionOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M10.32 7.39H12.25C12.26 7.09 12.35 6.86 12.53 6.7C12.71 6.55 12.93 6.47 13.19 6.47C13.5 6.47 13.76 6.57 13.94 6.75C14.12 6.94 14.2 7.2 14.2 7.5C14.2 7.82 14.13 8.09 13.97 8.32C13.83 8.55 13.62 8.75 13.36 8.91C12.85 9.25 12.5 9.55 12.31 9.82C12.11 10.08 12 10.5 12 11H14C14 10.69 14.04 10.44 14.13 10.26C14.22 10.07 14.39 9.9 14.64 9.74C15.09 9.5 15.46 9.21 15.75 8.81C16.04 8.41 16.19 8 16.19 7.5C16.19 6.74 15.92 6.13 15.38 5.68C14.85 5.23 14.12 5 13.19 5C12.32 5 11.62 5.2 11.08 5.59C10.56 6 10.3 6.57 10.31 7.36L10.32 7.39M12 14H14V12H12V14M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1Z";
var mdiHeadRemove = "M13 3C9.2 3 6.2 5.9 6 9.7L4.1 12.2C3.9 12.5 4.1 13 4.5 13H6V16C6 17.1 6.9 18 8 18H9V21H16V16.3C18.4 15.2 20 12.8 20 10C20 6.1 16.9 3 13 3M15.1 12.5L13 10.4L10.9 12.5L9.5 11.1L11.6 9L9.5 6.9L10.9 5.5L13 7.6L15.1 5.5L16.5 6.9L14.4 9L16.5 11.1L15.1 12.5Z";
var mdiHeadRemoveOutline = "M13 3C16.9 3 20 6.1 20 10C20 12.8 18.4 15.2 16 16.3V21H9V18H8C6.9 18 6 17.1 6 16V13H4.5C4.1 13 3.8 12.5 4.1 12.2L6 9.7C6.2 5.9 9.2 3 13 3M13 1C8.4 1 4.6 4.4 4.1 8.9L2.5 11C1.9 11.7 1.8 12.7 2.2 13.6C2.6 14.3 3.2 14.8 4 15V16C4 17.9 5.3 19.4 7 19.9V23H18V17.5C20.5 15.9 22 13.1 22 10C22 5 18 1 13 1M16.5 6.9L14.4 9L16.5 11.1L15.1 12.5L13 10.4L10.9 12.5L9.5 11.1L11.6 9L9.5 6.9L10.9 5.5L13 7.6L15.1 5.5L16.5 6.9Z";
var mdiHeadSnowflake = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M17.06 9.57L15.1 10.09L16.54 11.54C16.89 11.88 16.89 12.46 16.54 12.81C16.19 13.16 15.61 13.16 15.27 12.81L13.81 11.37L13.3 13.33C13.18 13.82 12.68 14.1 12.21 13.97C11.72 13.84 11.44 13.35 11.57 12.87L12.1 10.9L10.13 11.43C9.65 11.56 9.15 11.28 9.03 10.79C8.9 10.32 9.18 9.82 9.67 9.7L11.63 9.19L10.19 7.73C9.84 7.39 9.84 6.82 10.19 6.46C10.54 6.11 11.12 6.11 11.46 6.46L12.91 7.9L13.43 5.94C13.55 5.46 14.04 5.18 14.5 5.3C15 5.43 15.28 5.92 15.16 6.41L14.63 8.37L16.59 7.84C17.08 7.72 17.57 8 17.7 8.5C17.82 8.96 17.54 9.45 17.06 9.57Z";
var mdiHeadSnowflakeOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1M17.33 9.3L15.37 9.81L16.81 11.27C17.16 11.61 17.16 12.19 16.81 12.54S15.88 12.89 15.54 12.54L14.09 11.1L13.57 13.06C13.45 13.55 12.96 13.82 12.5 13.7C12 13.57 11.72 13.08 11.84 12.59L12.37 10.63L10.41 11.16C9.92 11.28 9.43 11 9.3 10.5C9.18 10.05 9.46 9.55 9.94 9.43L11.9 8.91L10.46 7.46C10.11 7.12 10.11 6.55 10.46 6.19C10.81 5.84 11.39 5.84 11.73 6.19L13.19 7.63L13.7 5.67C13.82 5.18 14.32 4.9 14.79 5.03C15.28 5.16 15.56 5.65 15.43 6.13L14.9 8.1L16.87 7.57C17.35 7.44 17.84 7.72 17.97 8.21C18.1 8.68 17.82 9.18 17.33 9.3Z";
var mdiHeadSync = "M13 3C9.23 3 6.19 5.95 6 9.66L4.08 12.19C3.84 12.5 4.08 13 4.5 13H6V16C6 17.11 6.89 18 8 18H9V21H16V16.31C18.37 15.19 20 12.8 20 10C20 6.14 16.88 3 13 3M13 15V13.5C10.79 13.5 9 11.71 9 9.5C9 8.68 9.25 7.92 9.67 7.29L10.76 8.38C10.59 8.72 10.5 9.1 10.5 9.5C10.5 10.88 11.62 12 13 12V10.5L15.25 12.75L13 15M16.33 11.71L15.24 10.62C15.41 10.28 15.5 9.9 15.5 9.5C15.5 8.12 14.38 7 13 7V8.5L10.75 6.25L13 4V5.5C15.21 5.5 17 7.29 17 9.5C17 10.32 16.75 11.08 16.33 11.71Z";
var mdiHeadSyncOutline = "M13 3C16.88 3 20 6.14 20 10C20 12.8 18.37 15.19 16 16.31V21H9V18H8C6.89 18 6 17.11 6 16V13H4.5C4.08 13 3.84 12.5 4.08 12.19L6 9.66C6.19 5.95 9.23 3 13 3M13 1C8.41 1 4.61 4.42 4.06 8.9L2.5 11L2.47 11L2.45 11.03C1.9 11.79 1.83 12.79 2.26 13.62C2.62 14.31 3.26 14.79 4 14.94V16C4 17.85 5.28 19.42 7 19.87V23H18V17.5C20.5 15.83 22 13.06 22 10C22 5.03 17.96 1 13 1M14 15V13.5C11.79 13.5 10 11.71 10 9.5C10 8.68 10.25 7.92 10.67 7.29L11.76 8.38C11.59 8.72 11.5 9.1 11.5 9.5C11.5 10.88 12.62 12 14 12V10.5L16.25 12.75L14 15M17.33 11.71L16.24 10.62C16.41 10.28 16.5 9.9 16.5 9.5C16.5 8.12 15.38 7 14 7V8.5L11.75 6.25L14 4V5.5C16.21 5.5 18 7.29 18 9.5C18 10.32 17.75 11.08 17.33 11.71Z";
var mdiHeadphones = "M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H18A3,3 0 0,0 21,17V10C21,5 16.97,1 12,1Z";
var mdiHeadphonesBluetooth = "M8,6A6,6 0 0,0 2,12V16.8C2,17.46 2.54,18 3.2,18H6V14H4V12A4,4 0 0,1 8,8A4,4 0 0,1 12,12V14H10V18H12.8A1.2,1.2 0 0,0 14,16.8V12A6,6 0 0,0 8,6M19,7V10.79L16.71,8.5L16,9.21L18.79,12L16,14.79L16.71,15.5L19,13.21V17H19.5L22.35,14.14L20.21,12L22.35,9.85L19.5,7H19M20,8.91L20.94,9.85L20,10.79V8.91M20,13.21L20.94,14.14L20,15.08V13.21Z";
var mdiHeadphonesBox = "M7.2,18C6.54,18 6,17.46 6,16.8V13.2L6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12V13.2L18,16.8A1.2,1.2 0 0,1 16.8,18H14V14H16V12A4,4 0 0,0 12,8A4,4 0 0,0 8,12V14H10V18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiHeadphonesOff = "M12,1A9,9 0 0,1 21,10V17C21,17.62 20.81,18.19 20.5,18.67L15,13.18V12H19V10A7,7 0 0,0 12,3C10,3 8.23,3.82 6.96,5.14L5.55,3.72C7.18,2.04 9.47,1 12,1M2.78,3.5L20.5,21.22L19.23,22.5L16.73,20H15V18.27L9,12.27V20H6A3,3 0 0,1 3,17V10C3,8.89 3.2,7.82 3.57,6.84L1.5,4.77L2.78,3.5M5.17,8.44C5.06,8.94 5,9.46 5,10V12H8.73L5.17,8.44Z";
var mdiHeadphonesSettings = "M12,1A9,9 0 0,1 21,10V17A3,3 0 0,1 18,20H15V12H19V10A7,7 0 0,0 12,3A7,7 0 0,0 5,10V12H9V20H6A3,3 0 0,1 3,17V10A9,9 0 0,1 12,1M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z";
var mdiHeadset = "M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H19V21H12V23H18A3,3 0 0,0 21,20V10C21,5 16.97,1 12,1Z";
var mdiHeadsetDock = "M2,18H9V6.13C7.27,6.57 6,8.14 6,10V11H8V17H6A2,2 0 0,1 4,15V10A6,6 0 0,1 10,4H11A6,6 0 0,1 17,10V12H18V9H20V12A2,2 0 0,1 18,14H17V15A2,2 0 0,1 15,17H13V11H15V10C15,8.14 13.73,6.57 12,6.13V18H22V20H2V18Z";
var mdiHeadsetOff = "M1.5,4.77L3.57,6.84C3.2,7.82 3,8.89 3,10V20A3,3 0 0,0 6,23H12V21H5V20H9V12.27L15,18.27V20H16.73L19.23,22.5L20.5,21.22L2.78,3.5L1.5,4.77M12,1C9.47,1 7.18,2.04 5.55,3.72L6.96,5.14C8.23,3.82 10,3 12,3A7,7 0 0,1 19,10V12H15V13.18L20.5,18.67C20.81,18.19 21,17.62 21,17V10A9,9 0 0,0 12,1M5,12V10C5,9.46 5.06,8.94 5.17,8.44L8.73,12H5Z";
var mdiHeart = "M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z";
var mdiHeartBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,17L12.72,16.34C15.3,14 17,12.46 17,10.57C17,9.03 15.79,7.82 14.25,7.82C13.38,7.82 12.55,8.23 12,8.87C11.45,8.23 10.62,7.82 9.75,7.82C8.21,7.82 7,9.03 7,10.57C7,12.46 8.7,14 11.28,16.34L12,17Z";
var mdiHeartBoxOutline = "M12,17L11.28,16.34C8.7,14 7,12.46 7,10.57C7,9.03 8.21,7.82 9.75,7.82C10.62,7.82 11.45,8.23 12,8.87C12.55,8.23 13.38,7.82 14.25,7.82C15.79,7.82 17,9.03 17,10.57C17,12.46 15.3,14 12.72,16.34L12,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z";
var mdiHeartBroken = "M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C8.17,3 8.82,3.12 9.44,3.33L13,9.35L9,14.35L12,21.35V21.35M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L11,14.35L15.5,9.35L12.85,4.27C13.87,3.47 15.17,3 16.5,3Z";
var mdiHeartBrokenOutline = "M7.5,5C7.7,5 7.9,5 8.1,5.1L10.5,9.2L6.8,13.8C5.1,11.8 4,10.2 4,8.5C4,6.5 5.5,5 7.5,5M7.5,3C4.4,3 2,5.4 2,8.5C2,12.3 5.4,15.4 10.6,20L12,21.3L9,14.3L13,9.3L9.4,3.3C8.8,3.1 8.2,3 7.5,3M16.5,5C18.5,5 20,6.5 20,8.5C20,11.1 17.4,13.7 13.4,17.3L13.1,15L17.9,9.7L15.6,5.2C15.9,5 16.2,5 16.5,5M16.5,3C15.2,3 13.9,3.5 12.9,4.3L15.5,9.4L11,14.4L12,21.4L13.4,20.1C18.6,15.4 22,12.3 22,8.6C22,5.4 19.6,3 16.5,3Z";
var mdiHeartCircle = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M9.75,7.82C10.62,7.82 11.45,8.23 12,8.87C12.55,8.23 13.38,7.82 14.25,7.82C15.79,7.82 17,9.03 17,10.57C17,12.46 15.3,14 12.72,16.34L12,17L11.28,16.34C8.7,14 7,12.46 7,10.57C7,9.03 8.21,7.82 9.75,7.82Z";
var mdiHeartCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M9.75,7.82C8.21,7.82 7,9.03 7,10.57C7,12.46 8.7,14 11.28,16.34L12,17L12.72,16.34C15.3,14 17,12.46 17,10.57C17,9.03 15.79,7.82 14.25,7.82C13.38,7.82 12.55,8.23 12,8.87C11.45,8.23 10.62,7.82 9.75,7.82Z";
var mdiHeartCog = "M12 19C12 19.71 12.12 20.4 12.32 21.06L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.8 21.59 11 20.84 12.25C20.25 12.09 19.63 12 19 12C15.14 12 12 15.14 12 19M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z";
var mdiHeartCogOutline = "M16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12 18.63C12 18.75 12 18.88 12 19C12 19.71 12.12 20.4 12.32 21.06L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.8 21.59 11 20.84 12.25C20.25 12.09 19.63 12 19 12C18.87 12 18.74 12 18.6 12C19.5 10.79 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z";
var mdiHeartFlash = "M16.5,2.83C14.76,2.83 13.09,3.64 12,4.9C10.91,3.64 9.24,2.83 7.5,2.83C4.42,2.83 2,5.24 2,8.33C2,12.1 5.4,15.19 10.55,19.86L12,21.17L13.45,19.86C18.6,15.19 22,12.1 22,8.33C22,5.24 19.58,2.83 16.5,2.83M12,17.83V13.83H9L12,6.83V10.83H15";
var mdiHeartHalf = "M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z";
var mdiHeartHalfFull = "M16.5,5C15,5 13.58,5.91 13,7.2V17.74C17.25,13.87 20,11.2 20,8.5C20,6.5 18.5,5 16.5,5M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3Z";
var mdiHeartHalfOutline = "M4,8.5C4,11.2 6.75,13.87 11,17.74V7.2C10.42,5.91 9,5 7.5,5C5.5,5 4,6.5 4,8.5M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z";
var mdiHeartMinus = "M12 18C12 19 12.25 19.92 12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C19.83 12.23 18.94 12 18 12C14.69 12 12 14.69 12 18M14 17V19H22V17H14Z";
var mdiHeartMinusOutline = "M12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C20 12.31 19.31 12.11 18.59 12.04C19.5 10.8 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.04 18.61C12.12 19.37 12.34 20.09 12.67 20.74M14 17V19H22V17H14Z";
var mdiHeartMultiple = "M13.5,20C6.9,13.9 3.5,10.8 3.5,7.1C3.5,4 5.9,1.6 9,1.6C10.7,1.6 12.4,2.4 13.5,3.7C14.6,2.4 16.3,1.6 18,1.6C21.1,1.6 23.5,4 23.5,7.1C23.5,10.9 20.1,14 13.5,20M12,21.1C5.4,15.2 1.5,11.7 1.5,7C1.5,6.8 1.5,6.6 1.5,6.4C0.9,7.3 0.5,8.4 0.5,9.6C0.5,13.4 3.9,16.5 10.5,22.4L12,21.1Z";
var mdiHeartMultipleOutline = "M12,21.1L10.5,22.4C3.9,16.5 0.5,13.4 0.5,9.6C0.5,8.4 0.9,7.3 1.5,6.4C1.5,6.6 1.5,6.8 1.5,7C1.5,11.7 5.4,15.2 12,21.1M13.6,17C18.3,12.7 21.5,9.9 21.6,7C21.6,5 20.1,3.5 18.1,3.5C16.5,3.5 15,4.5 14.5,5.9H12.6C12,4.5 10.5,3.5 9,3.5C7,3.5 5.5,5 5.5,7C5.5,9.9 8.6,12.7 13.4,17L13.5,17.1M18,1.5C21.1,1.5 23.5,3.9 23.5,7C23.5,10.7 20.1,13.8 13.5,19.8C6.9,13.9 3.5,10.8 3.5,7C3.5,3.9 5.9,1.5 9,1.5C10.7,1.5 12.4,2.3 13.5,3.6C14.6,2.3 16.3,1.5 18,1.5Z";
var mdiHeartOff = "M1,4.27L2.28,3L20,20.72L18.73,22L15.18,18.44L13.45,20.03L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,7.55 2.23,6.67 2.63,5.9L1,4.27M7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,11.07 20.42,13.32 17.79,15.97L5.27,3.45C5.95,3.16 6.7,3 7.5,3Z";
var mdiHeartOffOutline = "M2.39 1.73L1.11 3L3.19 5.08C2.45 6 2 7.19 2 8.5C2 12.27 5.4 15.36 10.55 20.03L12 21.35L13.45 20.03C14.32 19.24 15.14 18.5 15.9 17.79L20 22L21.27 20.73M12.1 18.55L12 18.65L11.89 18.55C7.14 14.24 4 11.39 4 8.5C4 7.74 4.22 7.06 4.61 6.5L14.5 16.37C13.74 17.06 12.95 17.78 12.1 18.55M8.3 5.1L6.33 3.13C6.7 3.05 7.1 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 10.84 20.69 12.92 18.47 15.27L17.06 13.86C18.91 11.88 20 10.2 20 8.5C20 6.5 18.5 5 16.5 5C15.1 5 13.74 5.83 13.11 7H10.89C10.38 6.06 9.39 5.34 8.3 5.1Z";
var mdiHeartOutline = "M12.1,18.55L12,18.65L11.89,18.55C7.14,14.24 4,11.39 4,8.5C4,6.5 5.5,5 7.5,5C9.04,5 10.54,6 11.07,7.36H12.93C13.46,6 14.96,5 16.5,5C18.5,5 20,6.5 20,8.5C20,11.39 16.86,14.24 12.1,18.55M16.5,3C14.76,3 13.09,3.81 12,5.08C10.91,3.81 9.24,3 7.5,3C4.42,3 2,5.41 2,8.5C2,12.27 5.4,15.36 10.55,20.03L12,21.35L13.45,20.03C18.6,15.36 22,12.27 22,8.5C22,5.41 19.58,3 16.5,3Z";
var mdiHeartPlus = "M12 18C12 19 12.25 19.92 12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C19.83 12.23 18.94 12 18 12C14.69 12 12 14.69 12 18M19 14H17V17H14V19H17V22H19V19H22V17H19V14Z";
var mdiHeartPlusOutline = "M12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C20 12.31 19.31 12.11 18.59 12.04C19.5 10.8 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.04 18.61C12.12 19.37 12.34 20.09 12.67 20.74M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z";
var mdiHeartPulse = "M7.5,4A5.5,5.5 0 0,0 2,9.5C2,10 2.09,10.5 2.22,11H6.3L7.57,7.63C7.87,6.83 9.05,6.75 9.43,7.63L11.5,13L12.09,11.58C12.22,11.25 12.57,11 13,11H21.78C21.91,10.5 22,10 22,9.5A5.5,5.5 0 0,0 16.5,4C14.64,4 13,4.93 12,6.34C11,4.93 9.36,4 7.5,4V4M3,12.5A1,1 0 0,0 2,13.5A1,1 0 0,0 3,14.5H5.44L11,20C12,20.9 12,20.9 13,20L18.56,14.5H21A1,1 0 0,0 22,13.5A1,1 0 0,0 21,12.5H13.4L12.47,14.8C12.07,15.81 10.92,15.67 10.55,14.83L8.5,9.5L7.54,11.83C7.39,12.21 7.05,12.5 6.6,12.5H3Z";
var mdiHeartRemove = "M12 18C12 19 12.25 19.92 12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C19.83 12.23 18.94 12 18 12C14.69 12 12 14.69 12 18M21.54 15.88L20.12 14.47L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88Z";
var mdiHeartRemoveOutline = "M12.67 20.74L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5C22 9.93 21.5 11.26 20.62 12.61C20 12.31 19.31 12.11 18.59 12.04C19.5 10.8 20 9.65 20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.04 18.61C12.12 19.37 12.34 20.09 12.67 20.74M20.12 14.46L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88L20.12 14.46Z";
var mdiHeartSettings = "M15 22H17V24H15V22M11 24H13V22H11V24M7 24H9V22H7V24M16.5 3C14.76 3 13.09 3.81 12 5.08C10.91 3.81 9.24 3 7.5 3C4.42 3 2 5.41 2 8.5C2 12.27 5.4 15.36 10.55 20.03L12 21.35L13.45 20.03C18.6 15.36 22 12.27 22 8.5C22 5.41 19.58 3 16.5 3Z";
var mdiHeartSettingsOutline = "M7 22H9V24H7V22M11 24H13V22H11V24M15 24H17V22H15V24M22 8.5C22 12.27 18.6 15.36 13.45 20.03L12 21.35L10.55 20.03C5.4 15.36 2 12.27 2 8.5C2 5.41 4.42 3 7.5 3C9.24 3 10.91 3.81 12 5.08C13.09 3.81 14.76 3 16.5 3C19.58 3 22 5.41 22 8.5M20 8.5C20 6.5 18.5 5 16.5 5C14.96 5 13.46 6 12.93 7.36H11.07C10.54 6 9.04 5 7.5 5C5.5 5 4 6.5 4 8.5C4 11.39 7.14 14.24 11.89 18.55L12 18.65L12.1 18.55C16.86 14.24 20 11.39 20 8.5Z";
var mdiHelicopter = "M3,3H17V5H3V3M23,6V10.5L14.75,12.2C14.91,12.6 15,13.04 15,13.5C15,14.9 14.18,16.1 13,16.66V17L13,19H16V21H4A3,3 0 0,1 1,18V17H3V18A1,1 0 0,0 4,19H5V16.74C3.25,16.13 2,14.46 2,12.5C2,10 4,8 6.5,8H9V6H11V8H21V6H23M11,19V17H7V19H11M7.5,10C6.12,10 5,10.9 5,12C5,13.1 6.12,14 7.5,14C8.88,14 10,13.1 10,12C10,10.9 8.88,10 7.5,10Z";
var mdiHelp = "M10,19H13V22H10V19M12,2C17.35,2.22 19.68,7.62 16.5,11.67C15.67,12.67 14.33,13.33 13.67,14.17C13,15 13,16 13,17H10C10,15.33 10,13.92 10.67,12.92C11.33,11.92 12.67,11.33 13.5,10.67C15.92,8.43 15.32,5.26 12,5A3,3 0 0,0 9,8H6A6,6 0 0,1 12,2Z";
var mdiHelpBox = "M11,18H13V16H11V18M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z";
var mdiHelpCircle = "M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z";
var mdiHelpCircleOutline = "M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z";
var mdiHelpNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17M12.19,5C11.32,5 10.62,5.2 10.08,5.59C9.56,6 9.3,6.57 9.31,7.36L9.32,7.39H11.25C11.26,7.09 11.35,6.86 11.53,6.7C11.71,6.55 11.93,6.47 12.19,6.47C12.5,6.47 12.76,6.57 12.94,6.75C13.12,6.94 13.2,7.2 13.2,7.5C13.2,7.82 13.13,8.09 12.97,8.32C12.83,8.55 12.62,8.75 12.36,8.91C11.85,9.25 11.5,9.55 11.31,9.82C11.11,10.08 11,10.5 11,11H13C13,10.69 13.04,10.44 13.13,10.26C13.22,10.07 13.39,9.9 13.64,9.74C14.09,9.5 14.46,9.21 14.75,8.81C15.04,8.41 15.19,8 15.19,7.5C15.19,6.74 14.92,6.13 14.38,5.68C13.85,5.23 13.12,5 12.19,5M11,12V14H13V12H11Z";
var mdiHelpNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M11.95,6C11.17,6 10.55,6.18 10.07,6.5C9.61,6.89 9.38,7.4 9.39,8.1L9.4,8.13H11.11C11.12,7.86 11.2,7.65 11.36,7.5C11.5,7.38 11.72,7.31 11.95,7.31C12.22,7.31 12.45,7.4 12.61,7.56C12.77,7.73 12.85,7.96 12.85,8.22C12.85,8.5 12.78,8.75 12.64,8.95C12.5,9.16 12.33,9.33 12.1,9.5C11.65,9.78 11.34,10.05 11.17,10.29C11,10.5 10.89,10.89 10.89,11.33H12.67C12.67,11.06 12.7,10.84 12.78,10.68C12.86,10.5 13,10.36 13.24,10.21C13.64,10 13.97,9.74 14.22,9.39C14.5,9.03 14.62,8.67 14.62,8.22C14.62,7.55 14.38,7 13.9,6.61C13.42,6.2 12.77,6 11.95,6M10.89,12.22V14H12.67V12.22H10.89Z";
var mdiHelpRhombus = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 6.95C14.7 7.06 15.87 9.78 14.28 11.81C13.86 12.31 13.19 12.64 12.85 13.07C12.5 13.5 12.5 14 12.5 14.5H11C11 13.65 11 12.94 11.35 12.44C11.68 11.94 12.35 11.64 12.77 11.31C14 10.18 13.68 8.59 12 8.46C11.18 8.46 10.5 9.13 10.5 9.97H9C9 8.3 10.35 6.95 12 6.95M11 15.5H12.5V17H11V15.5Z";
var mdiHelpRhombusOutline = "M11 15.5H12.5V17H11V15.5M12 6.95C14.7 7.06 15.87 9.78 14.28 11.81C13.86 12.31 13.19 12.64 12.85 13.07C12.5 13.5 12.5 14 12.5 14.5H11C11 13.65 11 12.94 11.35 12.44C11.68 11.94 12.35 11.64 12.77 11.31C14 10.18 13.68 8.59 12 8.46C11.18 8.46 10.5 9.13 10.5 9.97H9C9 8.3 10.35 6.95 12 6.95M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12Z";
var mdiHexadecimal = "M7 7C5.9 7 5 7.9 5 9V15C5 16.11 5.9 17 7 17H9C10.11 17 11 16.11 11 15V9C11 7.9 10.11 7 9 7H7M7 9H9V15H7V9M17.6 17L15.5 14.9L13.4 17L12 15.6L14.1 13.5L12 11.4L13.4 10L15.5 12.1L17.6 10L19 11.4L16.9 13.5L19 15.6L17.6 17Z";
var mdiHexagon = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5Z";
var mdiHexagonMultiple = "M10.25,2C10.44,2 10.61,2.11 10.69,2.26L12.91,6.22L13,6.5L12.91,6.78L10.69,10.74C10.61,10.89 10.44,11 10.25,11H5.75C5.56,11 5.39,10.89 5.31,10.74L3.09,6.78L3,6.5L3.09,6.22L5.31,2.26C5.39,2.11 5.56,2 5.75,2H10.25M10.25,13C10.44,13 10.61,13.11 10.69,13.26L12.91,17.22L13,17.5L12.91,17.78L10.69,21.74C10.61,21.89 10.44,22 10.25,22H5.75C5.56,22 5.39,21.89 5.31,21.74L3.09,17.78L3,17.5L3.09,17.22L5.31,13.26C5.39,13.11 5.56,13 5.75,13H10.25M19.5,7.5C19.69,7.5 19.86,7.61 19.94,7.76L22.16,11.72L22.25,12L22.16,12.28L19.94,16.24C19.86,16.39 19.69,16.5 19.5,16.5H15C14.81,16.5 14.64,16.39 14.56,16.24L12.34,12.28L12.25,12L12.34,11.72L14.56,7.76C14.64,7.61 14.81,7.5 15,7.5H19.5Z";
var mdiHexagonMultipleOutline = "M9.37 4L10.78 6.5L9.37 9H6.63L5.23 6.5L6.63 4H9.37M10.25 2H5.75C5.56 2 5.39 2.11 5.31 2.26L3.09 6.22L3 6.5L3.09 6.78L5.31 10.74C5.39 10.89 5.56 11 5.75 11H10.25C10.44 11 10.61 10.89 10.69 10.74L12.91 6.78L13 6.5L12.91 6.22L10.69 2.26C10.61 2.11 10.44 2 10.25 2M18.62 9.5L20 12L18.62 14.5H15.88L14.5 12L15.88 9.5H18.62M19.5 7.5H15C14.81 7.5 14.64 7.61 14.56 7.76L12.34 11.72L12.25 12L12.34 12.28L14.56 16.24C14.64 16.39 14.81 16.5 15 16.5H19.5C19.69 16.5 19.86 16.39 19.94 16.24L22.16 12.28L22.25 12L22.16 11.72L19.94 7.76C19.86 7.61 19.69 7.5 19.5 7.5M9.37 15L10.78 17.5L9.37 20H6.63L5.23 17.5L6.63 15H9.37M10.25 13H5.75C5.56 13 5.39 13.11 5.31 13.26L3.09 17.22L3 17.5L3.09 17.78L5.31 21.74C5.39 21.89 5.56 22 5.75 22H10.25C10.44 22 10.61 21.89 10.69 21.74L12.91 17.78L13 17.5L12.91 17.22L10.69 13.26C10.61 13.11 10.44 13 10.25 13Z";
var mdiHexagonOutline = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z";
var mdiHexagonSlice1 = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M12,12V5.32L17.94,8.66L12,12Z";
var mdiHexagonSlice2 = "M18,15.38L12,12V5.32L18,8.69V15.38M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z";
var mdiHexagonSlice3 = "M12,5.32L18,8.69V15.31L12,18.68V5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z";
var mdiHexagonSlice4 = "M12,5.32L18,8.69V15.31L12,18.68L6.06,15.34L12,12V5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z";
var mdiHexagonSlice5 = "M12,5.32L18,8.69V15.31L12,18.68L6,15.31V8.69L12,12V5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z";
var mdiHexagonSlice6 = "M12,5.32L18,8.69V15.31L12,18.68L6,15.31V8.69L12,5.32M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z";
var mdiHexagram = "M14.5,7.66L20.64,6.97L17,12L20.68,16.97L14.5,16.32L12.03,22L9.5,16.34L3.36,17.03L7,12L3.32,7.03L9.5,7.68L11.97,2L14.5,7.66Z";
var mdiHexagramOutline = "M12,7L13.3,9.8L16.5,9.4L14.5,12L16.4,14.5L13.2,14.1L12,17L10.7,14.2L7.5,14.6L9.5,12L7.6,9.5L10.8,9.9L12,7M12,2L9.5,7.7L3.3,7L7,12L3.4,17L9.6,16.3L12,22L14.5,16.3L20.7,16.9L17,12L20.6,7L14.4,7.7L12,2Z";
var mdiHighDefinition = "M5,7H7V11H9V7H11V17H9V13H7V17H5V7M13,7H16A3,3 0 0,1 19,10V14A3,3 0 0,1 16,17H13V7M16,15A1,1 0 0,0 17,14V10A1,1 0 0,0 16,9H15V15H16Z";
var mdiHighDefinitionBox = "M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,15H9.5V13H7.5V15H6V9H7.5V11.5H9.5V9H11V15M13,9H17A1,1 0 0,1 18,10V14A1,1 0 0,1 17,15H13V9M14.5,13.5H16.5V10.5H14.5V13.5Z";
var mdiHighway = "M10,2L8,8H11V2H10M13,2V8H16L14,2H13M2,9V10H4V11H6V10H18L18.06,11H20V10H22V9H2M7,11L3.34,22H11V11H7M13,11V22H20.66L17,11H13Z";
var mdiHiking = "M9.8,8.9L7,23H9.1L10.9,15L13,17V23H15V15.5L12.9,13.5L13.5,10.5C14.63,11.81 16.29,12.73 18.15,12.95L16,23H17L20,9L19.04,8.8L18.58,11C16.86,10.85 15.44,9.89 14.7,8.6L13.7,7C13.5,6.65 13.2,6.37 12.84,6.2C12.5,6 12.08,5.96 11.68,6C11.28,6.09 10.92,6.27 10.63,6.55C10.34,6.83 10.14,7.19 10.06,7.58L9.8,8.9M7.08,6.92L9.4,7.38L8.4,12.46L6.08,12L7.08,6.92M13.5,5.5A2,2 0 0,0 15.5,3.5A2,2 0 0,0 13.5,1.5A2,2 0 0,0 11.5,3.5A2,2 0 0,0 13.5,5.5Z";
var mdiHinduism = "M15,2L13.5,3.5L15,5L16.5,3.5L15,2M11,3C10,9 17,10 20,6L18,4.5C17,6 13,8 11,3M9,7C7,7 4.5,8.5 4.5,8.5L6,11C7,10 9,9.5 10,10C12,11 9,13 7,12V15.5C10,14 12,16 11,17.5C8,22 3,16 3,13C1,19 6,22 9,22C12,22 14,20 12.5,15H14C12.5,19.5 18,24 21,18C22,16 22,9.5 17,9.5C13,9.5 14,15 10.5,13.5C14,10 12,7 9,7M19,12C22,15 15,21 15,15C15,13 17,10.5 19,12Z";
var mdiHistory = "M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3";
var mdiHockeyPuck = "M12,5C6.5,5 2,6.57 2,8.5C2,10.43 6.5,12 12,12C17.5,12 22,10.43 22,8.5C22,6.57 17.5,5 12,5M2,11.76V16.5C2,18.43 6.5,20 12,20C17.5,20 22,18.43 22,16.5V11.76C21.33,12.22 20.58,12.57 19.73,12.86C17.62,13.6 14.95,14 12,14C9.05,14 6.38,13.6 4.27,12.86C3.42,12.57 2.67,12.22 2,11.76Z";
var mdiHockeySticks = "M7.58,3L5.05,4.61L9.04,10.87L10.82,8.08L7.58,3M16.43,3L7.5,17H2V21H8.5L18.96,4.61L16.43,3M14.97,14.59L13.19,17.38L15.5,21H22V17H16.5L14.97,14.59Z";
var mdiHololens = "M12,8C12,8 22,8 22,11C22,11 22.09,14.36 21.75,14.25C21,11 12,11 12,11C12,11 3,11 2.25,14.25C1.91,14.36 2,11 2,11C2,8 12,8 12,8M12,12C20,12 20.75,14.25 20.75,14.25C19.75,17.25 19,18 15,18C12,18 13,16.5 12,16.5C11,16.5 12,18 9,18C5,18 4.25,17.25 3.25,14.25C3.25,14.25 4,12 12,12Z";
var mdiHome = "M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z";
var mdiHomeAccount = "M12,3L2,12H5V20H19V12H22L12,3M12,8.75A2.25,2.25 0 0,1 14.25,11A2.25,2.25 0 0,1 12,13.25A2.25,2.25 0 0,1 9.75,11A2.25,2.25 0 0,1 12,8.75M12,15C13.5,15 16.5,15.75 16.5,17.25V18H7.5V17.25C7.5,15.75 10.5,15 12,15Z";
var mdiHomeAlert = "M12 3L2 12H5V20H19V12H22L12 3M13 18H11V16H13V18M13 14H11V8H13V14Z";
var mdiHomeAlertOutline = "M12 5.7L17 10.2V18H7V10.2L12 5.7M19 20V12H22L12 3L2 12H5V20M13 8H11V13H13V8M13 15H11V17H13V15";
var mdiHomeAnalytics = "M12,3L2,12H5V20H19V12H22M9,18H7V12H9M13,18H11V10H13M17,18H15V14H17";
var mdiHomeAssistant = "M21.8,13H20V21H13V17.67L15.79,14.88L16.5,15C17.66,15 18.6,14.06 18.6,12.9C18.6,11.74 17.66,10.8 16.5,10.8A2.1,2.1 0 0,0 14.4,12.9L14.5,13.61L13,15.13V9.65C13.66,9.29 14.1,8.6 14.1,7.8A2.1,2.1 0 0,0 12,5.7A2.1,2.1 0 0,0 9.9,7.8C9.9,8.6 10.34,9.29 11,9.65V15.13L9.5,13.61L9.6,12.9A2.1,2.1 0 0,0 7.5,10.8A2.1,2.1 0 0,0 5.4,12.9A2.1,2.1 0 0,0 7.5,15L8.21,14.88L11,17.67V21H4V13H2.25C1.83,13 1.42,13 1.42,12.79C1.43,12.57 1.85,12.15 2.28,11.72L11,3C11.33,2.67 11.67,2.33 12,2.33C12.33,2.33 12.67,2.67 13,3L17,7V6H19V9L21.78,11.78C22.18,12.18 22.59,12.59 22.6,12.8C22.6,13 22.2,13 21.8,13M7.5,12A0.9,0.9 0 0,1 8.4,12.9A0.9,0.9 0 0,1 7.5,13.8A0.9,0.9 0 0,1 6.6,12.9A0.9,0.9 0 0,1 7.5,12M16.5,12C17,12 17.4,12.4 17.4,12.9C17.4,13.4 17,13.8 16.5,13.8A0.9,0.9 0 0,1 15.6,12.9A0.9,0.9 0 0,1 16.5,12M12,6.9C12.5,6.9 12.9,7.3 12.9,7.8C12.9,8.3 12.5,8.7 12,8.7C11.5,8.7 11.1,8.3 11.1,7.8C11.1,7.3 11.5,6.9 12,6.9Z";
var mdiHomeAutomation = "M12,3L2,12H5V20H19V12H22L12,3M12,8.5C14.34,8.5 16.46,9.43 18,10.94L16.8,12.12C15.58,10.91 13.88,10.17 12,10.17C10.12,10.17 8.42,10.91 7.2,12.12L6,10.94C7.54,9.43 9.66,8.5 12,8.5M12,11.83C13.4,11.83 14.67,12.39 15.6,13.3L14.4,14.47C13.79,13.87 12.94,13.5 12,13.5C11.06,13.5 10.21,13.87 9.6,14.47L8.4,13.3C9.33,12.39 10.6,11.83 12,11.83M12,15.17C12.94,15.17 13.7,15.91 13.7,16.83C13.7,17.75 12.94,18.5 12,18.5C11.06,18.5 10.3,17.75 10.3,16.83C10.3,15.91 11.06,15.17 12,15.17Z";
var mdiHomeCircle = "M19.07,4.93C17.22,3 14.66,1.96 12,2C9.34,1.96 6.79,3 4.94,4.93C3,6.78 1.96,9.34 2,12C1.96,14.66 3,17.21 4.93,19.06C6.78,21 9.34,22.04 12,22C14.66,22.04 17.21,21 19.06,19.07C21,17.22 22.04,14.66 22,12C22.04,9.34 21,6.78 19.07,4.93M17,12V18H13.5V13H10.5V18H7V12H5L12,5L19.5,12H17Z";
var mdiHomeCircleOutline = "M12 20C7.6 20 4 16.4 4 12S7.6 4 12 4 20 7.6 20 12 16.4 20 12 20M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M11 14H13V17H16V12H18L12 7L6 12H8V17H11V14";
var mdiHomeCity = "M0,21V10L7.5,5L15,10V21H10V14H5V21H0M24,2V21H17V8.93L16,8.27V6H14V6.93L10,4.27V2H24M21,14H19V16H21V14M21,10H19V12H21V10M21,6H19V8H21V6Z";
var mdiHomeCityOutline = "M10,2V4.26L12,5.59V4H22V19H17V21H24V2H10M7.5,5L0,10V21H15V10L7.5,5M14,6V6.93L15.61,8H16V6H14M18,6V8H20V6H18M7.5,7.5L13,11V19H10V13H5V19H2V11L7.5,7.5M18,10V12H20V10H18M18,14V16H20V14H18Z";
var mdiHomeCurrencyUsd = "M12,3L22,12H19V20H5V12H2L12,3M9.22,8.93C8.75,9.4 8.5,10.03 8.5,10.75C8.5,12.43 10.54,13.07 11.76,13.46C13.26,13.93 13.47,14.21 13.5,14.25C13.5,15 12.15,15 12,15V15C11.37,15 11.03,14.88 10.86,14.78C10.67,14.67 10.5,14.5 10.5,14H8.5C8.5,15.43 9.24,16.16 9.85,16.5C10.18,16.7 10.57,16.84 11,16.92V18H13V16.91C14.53,16.61 15.5,15.62 15.5,14.25C15.5,12.67 13.88,12.03 12.36,11.55C10.8,11.06 10.53,10.77 10.5,10.75C10.5,10.5 10.57,10.41 10.64,10.34C10.85,10.13 11.36,10 12,10V10C12.68,10 13.5,10.13 13.5,10.75H15.5C15.5,9.34 14.56,8.37 13,8.09V7H11V8.08C10.26,8.21 9.65,8.5 9.22,8.93Z";
var mdiHomeEdit = "M12 3L2 12H5V20H10V14H14V15.11L19.43 9.68L12 3M21.04 11.14C20.9 11.14 20.76 11.2 20.65 11.3L19.65 12.3L21.7 14.35L22.7 13.35C22.91 13.14 22.91 12.79 22.7 12.58L21.42 11.3C21.32 11.2 21.18 11.14 21.04 11.14M19.06 12.88L13 18.94V21H15.06L21.11 14.93L19.06 12.88Z";
var mdiHomeEditOutline = "M12 3L2 12H5V20H11V14H13V16.11L15 14.11V12H9V18H7V10.19L12 5.69L17 10.19V12.11L19.43 9.68L12 3M21.04 11.14C20.9 11.14 20.76 11.2 20.65 11.3L19.65 12.3L21.7 14.35L22.7 13.35C22.91 13.14 22.91 12.79 22.7 12.58L21.42 11.3C21.32 11.2 21.18 11.14 21.04 11.14M19.06 12.88L13 18.94V21H15.06L21.11 14.93L19.06 12.88Z";
var mdiHomeExportOutline = "M24 13L20 9V12H11V14H20V17M18 16V21H2V12H0L10 2L18 10H15L10 5L4 11V19H16V16H18Z";
var mdiHomeFlood = "M5,11H2L12,2L22,11H19V15.92C17.95,15.75 16.93,15.32 16,14.67C15.37,15.11 14.7,15.43 14,15.65V13H10V15.65C9.3,15.43 8.63,15.11 8,14.67C7.07,15.32 6.05,15.75 5,15.92M20,18C18.61,18 17.22,17.53 16,16.67C13.56,18.38 10.44,18.38 8,16.67C6.78,17.53 5.39,18 4,18H2V22H22V18";
var mdiHomeFloor0 = "M11,10H13V16H11V10M22,12H19V20H5V12H2L12,3L22,12M15,10A2,2 0 0,0 13,8H11A2,2 0 0,0 9,10V16A2,2 0 0,0 11,18H13A2,2 0 0,0 15,16V10Z";
var mdiHomeFloor1 = "M12,3L2,12H5V20H19V12H22L12,3M10,8H14V18H12V10H10V8Z";
var mdiHomeFloor2 = "M12,3L2,12H5V20H19V12H22L12,3M9,8H13A2,2 0 0,1 15,10V12A2,2 0 0,1 13,14H11V16H15V18H9V14A2,2 0 0,1 11,12H13V10H9V8Z";
var mdiHomeFloor3 = "M12,3L22,12H19V20H5V12H2L12,3M15,11.5V10C15,8.89 14.1,8 13,8H9V10H13V12H11V14H13V16H9V18H13A2,2 0 0,0 15,16V14.5A1.5,1.5 0 0,0 13.5,13A1.5,1.5 0 0,0 15,11.5Z";
var mdiHomeFloorA = "M12,3L2,12H5V20H19V12H22L12,3M11,8H13A2,2 0 0,1 15,10V18H13V15H11V18H9V10C9,8.89 9.9,8 11,8M11,10V13H13V10H11Z";
var mdiHomeFloorB = "M12,3L2,12H5V20H19V12H22L12,3M9,8H13A2,2 0 0,1 15,10V11.5A1.5,1.5 0 0,1 13.5,13A1.5,1.5 0 0,1 15,14.5V16A2,2 0 0,1 13,18H9V8M11,10V12H13V10H11M11,14V16H13V14H11Z";
var mdiHomeFloorG = "M12,3L2,12H5V20H19V12H22L12,3M11,8H15V10H11V16H13V12H15V16C15,17.11 14.1,18 13,18H11A2,2 0 0,1 9,16V10C9,8.89 9.9,8 11,8Z";
var mdiHomeFloorL = "M12,3L2,12H5V20H19V12H22L12,3M9,8H11V16H15V18H9V8Z";
var mdiHomeFloorNegative1 = "M12,3L2,12H5V20H19V12H22L12,3M11,15H7V13H11V15M15,18H13V10H11V8H15V18Z";
var mdiHomeGroup = "M17,16H15V22H12V17H8V22H5V16H3L10,10L17,16M6,2L10,6H9V9H7V6H5V9H3V6H2L6,2M18,3L23,8H22V12H19V9H17V12H15.34L14,10.87V8H13L18,3Z";
var mdiHomeHeart = "M2,12L12,3L22,12H19V20H5V12H2M12,18L12.72,17.34C15.3,15 17,13.46 17,11.57C17,10.03 15.79,8.82 14.25,8.82C13.38,8.82 12.55,9.23 12,9.87C11.45,9.23 10.62,8.82 9.75,8.82C8.21,8.82 7,10.03 7,11.57C7,13.46 8.7,15 11.28,17.34L12,18Z";
var mdiHomeImportOutline = "M15 13L11 9V12H2V14H11V17M22 12H20V21H4V16H6V19H18V11L12 5L7 10H4L12 2L22 12Z";
var mdiHomeLightbulb = "M12 3L2 12H5V20H19V12H22M13 18H11V17H13M13.5 14.58V16H10.5V14.58A3 3 0 1 1 13.5 14.58Z";
var mdiHomeLightbulbOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M13.5 14.58V16H10.5V14.58C9.07 13.75 8.57 11.92 9.4 10.5C10.23 9.05 12.07 8.56 13.5 9.38S15.43 12.05 14.6 13.5C14.34 13.94 13.96 14.32 13.5 14.58M13 17H11V18H13V17Z";
var mdiHomeLock = "M12,3L2,12H5V20H19V12H22L12,3M12,9A3,3 0 0,1 15,12V13H16V17H8V13H9V12A3,3 0 0,1 12,9M12,11A1,1 0 0,0 11,12V13H13V12C13,11.5 12.6,11 12,11Z";
var mdiHomeLockOpen = "M12,3L2,12H5V20H19V12H22L12,3M12,8A3,3 0 0,1 15,11H13A1,1 0 0,0 12,10A1,1 0 0,0 11,11V13H16V17H8V13H9V11A3,3 0 0,1 12,8Z";
var mdiHomeMapMarker = "M12,3L2,12H5V20H19V12H22L12,3M12,7.7C14.1,7.7 15.8,9.4 15.8,11.5C15.8,14.5 12,18 12,18C12,18 8.2,14.5 8.2,11.5C8.2,9.4 9.9,7.7 12,7.7M12,10A1.5,1.5 0 0,0 10.5,11.5A1.5,1.5 0 0,0 12,13A1.5,1.5 0 0,0 13.5,11.5A1.5,1.5 0 0,0 12,10Z";
var mdiHomeMinus = "M12,3L2,12H5V20H19V12H22L12,3M16,13V15H8V13H16Z";
var mdiHomeMinusOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M16 13V15H8V13H16Z";
var mdiHomeModern = "M6,21V8A2,2 0 0,1 8,6L16,3V6A2,2 0 0,1 18,8V21H12V16H8V21H6M14,19H16V16H14V19M8,13H10V9H8V13M12,13H16V9H12V13Z";
var mdiHomeOutline = "M12 5.69L17 10.19V18H15V12H9V18H7V10.19L12 5.69M12 3L2 12H5V20H11V14H13V20H19V12H22L12 3Z";
var mdiHomePlus = "M12,3L2,12H5V20H19V12H22L12,3M11,10H13V13H16V15H13V18H11V15H8V13H11V10Z";
var mdiHomePlusOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M11 10H13V13H16V15H13V18H11V15H8V13H11V10Z";
var mdiHomeRemove = "M12 3L2 12H5V20H19V12H22L12 3M15.54 16.12L14.12 17.54L12 15.41L9.88 17.54L8.47 16.12L10.59 14L8.47 11.88L9.88 10.47L12 12.59L14.12 10.47L15.54 11.88L13.41 14L15.54 16.12Z";
var mdiHomeRemoveOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M14.12 10.46L15.54 11.88L13.41 14L15.54 16.12L14.12 17.54L12 15.41L9.88 17.54L8.47 16.12L10.59 14L8.47 11.88L9.88 10.47L12 12.59L14.12 10.46Z";
var mdiHomeRoof = "M19 16H22L12 7L2 16H5L12 9.69L19 16M7 8.81V7H4V11.5L7 8.81Z";
var mdiHomeSearch = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M5 20V12H2L12 3L22 12H20.18C19 10.77 17.34 10 15.5 10C11.92 10 9 12.92 9 16.5C9 17.79 9.38 19 10.03 20H5Z";
var mdiHomeSearchOutline = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M5 20V12H2L12 3L22 12H20.18C19.33 11.11 18.23 10.47 17 10.18L12 5.69L7 10.19V18H9.18C9.35 18.72 9.64 19.39 10.03 20H5Z";
var mdiHomeThermometer = "M12 3L2 12H5V20H19V12H22L12 3M12 8A1 1 0 0 1 13 9V14.27A2 2 0 0 1 14 16A2 2 0 0 1 12 18A2 2 0 0 1 10 16A2 2 0 0 1 11 14.27V9A1 1 0 0 1 12 8Z";
var mdiHomeThermometerOutline = "M12 2L2 12H4V21H20V12H22M12 5L18 11V19H6V11M12 8C11.45 8 11 8.45 11 9V13.27C10.38 13.63 10 14.29 10 15C10 16.11 10.9 17 12 17S14 16.11 14 15C14 14.29 13.62 13.63 13 13.27V9C13 8.45 12.55 8 12 8Z";
var mdiHomeVariant = "M12,3L20,9V21H15V14H9V21H4V9L12,3Z";
var mdiHomeVariantOutline = "M9,13H15V19H18V10L12,5.5L6,10V19H9V13M4,21V9L12,3L20,9V21H4Z";
var mdiHook = "M18,6C18,7.82 16.76,9.41 15,9.86V17A5,5 0 0,1 10,22A5,5 0 0,1 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V9.86C11.23,9.4 10,7.8 10,5.97C10,3.76 11.8,2 14,2C16.22,2 18,3.79 18,6M14,8A2,2 0 0,0 16,6A2,2 0 0,0 14,4A2,2 0 0,0 12,6A2,2 0 0,0 14,8Z";
var mdiHookOff = "M13,9.86V11.18L15,13.18V9.86C17.14,9.31 18.43,7.13 17.87,5C17.32,2.85 15.14,1.56 13,2.11C10.86,2.67 9.57,4.85 10.13,7C10.5,8.4 11.59,9.5 13,9.86M14,4A2,2 0 0,1 16,6A2,2 0 0,1 14,8A2,2 0 0,1 12,6A2,2 0 0,1 14,4M18.73,22L14.86,18.13C14.21,20.81 11.5,22.46 8.83,21.82C6.6,21.28 5,19.29 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V16.27L2,5.27L3.28,4L13,13.72L15,15.72L20,20.72L18.73,22Z";
var mdiHops = "M21,12C21,12 12.5,10 12.5,2C12.5,2 21,2 21,12M3,12C3,2 11.5,2 11.5,2C11.5,10 3,12 3,12M12,6.5C12,6.5 13,8.66 15,10.5C14.76,14.16 12,16 12,16C12,16 9.24,14.16 9,10.5C11,8.66 12,6.5 12,6.5M20.75,13.25C20.75,13.25 20,17 18,19C18,19 15.53,17.36 14.33,14.81C15.05,13.58 15.5,12.12 15.75,11.13C17.13,12.18 18.75,13 20.75,13.25M15.5,18.25C14.5,20.25 12,21.75 12,21.75C12,21.75 9.5,20.25 8.5,18.25C8.5,18.25 9.59,17.34 10.35,15.8C10.82,16.35 11.36,16.79 12,17C12.64,16.79 13.18,16.35 13.65,15.8C14.41,17.34 15.5,18.25 15.5,18.25M3.25,13.25C5.25,13 6.87,12.18 8.25,11.13C8.5,12.12 8.95,13.58 9.67,14.81C8.47,17.36 6,19 6,19C4,17 3.25,13.25 3.25,13.25Z";
var mdiHorizontalRotateClockwise = "M12 14L8 10L4 14H7.1C7.56 18.56 9.58 22 12 22S16.44 18.56 16.9 14H14.91C14.57 17.45 13.4 20 12 20S9.43 17.45 9.09 14H12M12 4C13.4 4 14.57 6.55 14.91 10H16.9C16.44 5.44 14.42 2 12 2C9.84 2 8 4.74 7.3 8.58L8 7.88L9.21 9.08C9.64 6.11 10.73 4 12 4M22 13V11H11L13 13H22M2 13H3L5 11H2V13Z";
var mdiHorizontalRotateCounterclockwise = "M12 10H9.09C9.43 6.55 10.6 4 12 4S14.57 6.55 14.91 10H16.9C16.44 5.44 14.42 2 12 2S7.56 5.44 7.1 10H4L8 14L12 10M12 20C10.73 20 9.64 17.89 9.21 14.92L8 16.12L7.3 15.42C8 19.26 9.84 22 12 22C14.42 22 16.44 18.56 16.9 14H14.91C14.57 17.45 13.4 20 12 20M22 11H13L11 13H22V11M2 13H5L3 11H2V13";
var mdiHorse = "M22 6V9.5L20.5 10L18.96 7.54C18.83 7.33 18.5 7.42 18.5 7.67V11.25C18.5 12.23 18.11 13.11 17.5 13.78V21H15V15C14.92 15 14.84 15 14.75 15C14.54 15 14.33 14.97 14.13 14.94L9.69 14.2L8.57 16.21L9.53 21H7L6 16.25C5.97 15.95 6 15.65 6.16 15.39L7.18 13.58C6.2 13.03 5.53 12 5.5 10.81C5.46 10.96 5.44 11.18 5.47 11.5C5.5 11.94 5.61 12.59 5.54 13.31C5.5 14.03 5.17 14.77 4.75 15.26C4.32 15.75 3.85 16.09 3.35 16.35L2.65 15.65C2.84 15.18 3.03 14.76 3.07 14.37C3.13 14 3.06 13.7 2.95 13.43L2.42 12.3C2.21 11.79 1.95 11.05 2 10.18C2.03 9.33 2.5 8.22 3.39 7.61C4.29 7 5.26 6.92 6.05 7.08C6.55 7.18 7.06 7.42 7.5 7.76C7.87 7.59 8.3 7.5 8.75 7.5H14.5V7C14.5 4.79 16.29 3 18.5 3H22L21.11 4.34C21.65 4.7 22 5.31 22 6Z";
var mdiHorseHuman = "M10 3.5C10 2.67 10.67 2 11.5 2S13 2.67 13 3.5 12.33 5 11.5 5 10 4.33 10 3.5M22 8V11.5L20.97 11.85C20.8 13.06 19.76 14 18.5 14H18.42C18.28 14.68 17.95 15.29 17.5 15.78V22H15V17C14.92 17 14.84 17 14.75 17C14.54 17 14.33 16.97 14.13 16.94L9.69 16.2L8.57 18.21L9.32 22H6.78L6 18.25C5.97 17.95 6 17.65 6.16 17.39L7.18 15.58C6.2 15.03 5.53 14 5.5 12.81C5.46 12.96 5.44 13.18 5.47 13.5C5.5 13.94 5.61 14.59 5.54 15.31C5.5 16.03 5.17 16.77 4.75 17.26C4.32 17.75 3.85 18.09 3.35 18.35L2.65 17.65C2.84 17.18 3.03 16.76 3.07 16.37C3.13 16 3.06 15.7 2.95 15.43L2.42 14.3C2.21 13.79 1.95 13.05 2 12.18C2.03 11.33 2.5 10.22 3.39 9.61C4.29 9 5.26 8.91 6.05 9.08C6.55 9.18 7.06 9.42 7.5 9.76C7.87 9.59 8.3 9.5 8.75 9.5H9V8.11C9 7.11 9.68 6.19 10.66 6.03C11.92 5.82 13 6.79 13 8V9.5H14.5V9C14.5 6.79 16.29 5 18.5 5H22L21.11 6.34C21.65 6.7 22 7.31 22 8M20 11.2L18.96 9.54C18.83 9.33 18.5 9.42 18.5 9.67V13C19.33 13 20 12.33 20 11.5V11.2Z";
var mdiHorseVariant = "M20 8V16L17 17L13.91 11.5C13.65 11.04 12.92 11.27 13 11.81L14 21L4 17L5.15 8.94C5.64 5.53 8.56 3 12 3H20L18.42 5.37C19.36 5.88 20 6.86 20 8Z";
var mdiHorseshoe = "M19,4H20V1H16V4C16,4 18,8 18,12C18,16 16,19 12,19C8,19 6,16 6,12C6,8 8,4 8,4V1H4V4H5C5,4 2,8 2,14C2,19 7,23 12,23C17,23 22,19 22,14C22,8 19,4 19,4M4,13C3.4,13 3,12.6 3,12C3,11.4 3.4,11 4,11C4.6,11 5,11.4 5,12C5,12.6 4.6,13 4,13M6,19C5.4,19 5,18.6 5,18C5,17.4 5.4,17 6,17C6.6,17 7,17.4 7,18C7,18.6 6.6,19 6,19M12,22C11.4,22 11,21.6 11,21C11,20.4 11.4,20 12,20C12.6,20 13,20.4 13,21C13,21.6 12.6,22 12,22M18,19C17.4,19 17,18.6 17,18C17,17.4 17.4,17 18,17C18.6,17 19,17.4 19,18C19,18.6 18.6,19 18,19M20,13C19.4,13 19,12.6 19,12C19,11.4 19.4,11 20,11C20.6,11 21,11.4 21,12C21,12.6 20.6,13 20,13Z";
var mdiHospital = "M18 14H14V18H10V14H6V10H10V6H14V10H18";
var mdiHospitalBox = "M18,14H14V18H10V14H6V10H10V6H14V10H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiHospitalBoxOutline = "M18 14H14V18H10V14H6V10H10V6H14V10H18M20 2H4C2.9 2 2 2.9 2 4V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V4C22 2.9 21.1 2 20 2M20 20H4V4H20V20Z";
var mdiHospitalBuilding = "M2,22V7A1,1 0 0,1 3,6H7V2H17V6H21A1,1 0 0,1 22,7V22H14V17H10V22H2M9,4V10H11V8H13V10H15V4H13V6H11V4H9M4,20H8V17H4V20M4,15H8V12H4V15M16,20H20V17H16V20M16,15H20V12H16V15M10,15H14V12H10V15Z";
var mdiHospitalMarker = "M12,2C15.86,2 19,5.13 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M9,6V12H11V10H13V12H15V6H13V8H11V6H9Z";
var mdiHotTub = "M7,4A2,2 0 0,1 9,6A2,2 0 0,1 7,8A2,2 0 0,1 5,6A2,2 0 0,1 7,4M11.15,12H22V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12H5V11.25C5,10 6,9 7.25,9H7.28C7.62,9 7.95,9.09 8.24,9.23C8.5,9.35 8.74,9.5 8.93,9.73L10.33,11.28C10.56,11.54 10.84,11.78 11.15,12M7,20V14H5V20H7M11,20V14H9V20H11M15,20V14H13V20H15M19,20V14H17V20H19M18.65,5.86C19.68,6.86 20.16,8.21 19.95,9.57L19.89,10H18L18.09,9.41C18.24,8.62 18,7.83 17.42,7.21L17.35,7.15C16.32,6.14 15.85,4.79 16.05,3.43L16.11,3H18L17.91,3.59C17.76,4.38 18,5.17 18.58,5.79L18.65,5.86M14.65,5.86C15.68,6.86 16.16,8.21 15.95,9.57L15.89,10H14L14.09,9.41C14.24,8.62 14,7.83 13.42,7.21L13.35,7.15C12.32,6.14 11.85,4.79 12.05,3.43L12.11,3H14L13.91,3.59C13.76,4.38 14,5.17 14.58,5.79L14.65,5.86Z";
var mdiHours24 = "M13 2.05V4.07C16.95 4.56 20 7.92 20 12C20 15.21 18.08 18 15.28 19.28L13 17V22H18L16.78 20.78C19.91 19.07 22 15.76 22 12C22 6.82 18.05 2.55 13 2.05M11 2C9.05 2.2 7.2 2.96 5.68 4.21L7.1 5.63C8.23 4.75 9.58 4.2 11 4V2M4.2 5.68C2.96 7.2 2.2 9.05 2 11H4C4.19 9.58 4.75 8.23 5.63 7.1L4.2 5.68M6 8V10H9V11H8C6.9 11 6 11.9 6 13V16H11V14H8V13H9C10.11 13 11 12.11 11 11V10C11 8.9 10.11 8 9 8H6M12 8V13H15V16H17V13H18V11H17V8H15V11H14V8H12M2 13C2.2 14.95 2.97 16.8 4.22 18.32L5.64 16.9C4.76 15.77 4.2 14.42 4 13H2M7.11 18.37L5.68 19.79C7.2 21.03 9.05 21.8 11 22V20C9.58 19.81 8.24 19.25 7.11 18.37Z";
var mdiHubspot = "M17.1,8.6V6.2C17.7,5.9 18.2,5.3 18.2,4.6V4.5C18.2,3.5 17.4,2.7 16.4,2.7H16.3C15.3,2.7 14.5,3.5 14.5,4.5V4.6C14.5,5.3 14.9,5.9 15.6,6.2V8.6C14.7,8.7 13.8,9.1 13.1,9.7L6.5,4.6C6.8,3.5 6.1,2.3 5,2.1C3.9,1.9 2.8,2.4 2.5,3.5C2.2,4.6 2.9,5.8 4,6.1C4.5,6.2 5.1,6.2 5.6,5.9L12,10.9C10.8,12.7 10.8,15 12.1,16.8L10.1,18.8C9.9,18.8 9.8,18.7 9.6,18.7C8.7,18.7 7.9,19.5 7.9,20.4C7.9,21.3 8.7,22 9.6,22C10.5,22 11.3,21.2 11.3,20.3V20.3C11.3,20.1 11.3,20 11.2,19.8L13.1,17.9C15.4,19.6 18.7,19.2 20.4,16.9C22.1,14.6 21.7,11.3 19.4,9.6C18.8,9.1 18,8.7 17.1,8.6M16.3,16.4C14.8,16.4 13.6,15.2 13.6,13.7C13.6,12.2 14.8,11 16.3,11C17.8,11 19,12.2 19,13.7C19,15.2 17.8,16.4 16.3,16.4";
var mdiHulu = "M19.5,12.8V22H14.7V13.9C14.7,13.2 14.1,12.6 13.4,12.6H10.5C9.8,12.6 9.2,13.2 9.2,13.9V22H4.5V2H9.3V8.4C9.6,8.3 9.9,8.2 10.2,8.2H15C17.5,8.2 19.5,10.3 19.5,12.8Z";
var mdiHuman = "M21,9H15V22H13V16H11V22H9V9H3V7H21M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6C10.89,6 10,5.1 10,4C10,2.89 10.89,2 12,2Z";
var mdiHumanBabyChangingTable = "M6.5 6.08C5.72 6.12 5 6.62 4.72 7.4L3 12.13V22H7V12.84L8.42 8.94L10.7 10H14V8H11.15L7.29 6.2C7.03 6.11 6.76 6.07 6.5 6.08M9 17H21V19H9M10 3.5A2 2 0 0 1 8 5.5A2 2 0 0 1 6 3.5A2 2 0 0 1 8 1.5A2 2 0 0 1 10 3.5M21 14.5A1.5 1.5 0 0 1 19.5 16A1.5 1.5 0 0 1 18 14.5A1.5 1.5 0 0 1 19.5 13A1.5 1.5 0 0 1 21 14.5M9 11V13H11V14C11 15.11 11.89 16 13 16H15C16.11 16 17 15.11 17 14V11H15V13H13V12A1 1 0 0 0 12 11Z";
var mdiHumanCane = "M18 12.24V22H17.06V12.24C17.06 12.09 17 12 16.93 11.89C16.84 11.8 16.74 11.76 16.62 11.76C16.47 11.76 16.36 11.8 16.27 11.89C16.18 12 16.14 12.1 16.14 12.24V13.16H15.23V12.5C14.53 12.33 13.9 12.04 13.35 11.63C12.8 11.22 12.34 10.74 11.96 10.19L11.61 11.39C11.5 11.81 11.5 12.24 11.5 12.68L11.5 13L11.5 13.33L13.35 15.94V22H11.5V17.34L9.82 15L9.65 18.25L6.86 22L5.38 20.87L7.77 17.64V12.68C7.77 12.15 7.82 11.63 7.91 11.11L8.25 9.54L6.86 10.32V13.63H5V9.23L10 6.4C10.29 6.26 10.59 6.18 10.91 6.18C11.23 6.18 11.54 6.27 11.83 6.44C12.15 6.62 12.39 6.88 12.57 7.23L13.31 8.8C13.6 9.38 14.04 9.87 14.64 10.26C15.23 10.65 15.89 10.85 16.62 10.85C17 10.85 17.32 11 17.6 11.24C17.88 11.5 18 11.83 18 12.24M12 2C13.11 2 14 2.9 14 4C14 5.11 13.11 6 12 6C10.9 6 10 5.11 10 4C10 2.9 10.9 2 12 2Z";
var mdiHumanCapacityDecrease = "M16 4C16 2.9 16.9 2 18 2S20 2.9 20 4 19.1 6 18 6 16 5.1 16 4M20.78 7.58C19.93 7.21 19 7 18 7C17.33 7 16.69 7.1 16.08 7.28C16.66 7.83 17 8.6 17 9.43V10H22V9.43C22 8.62 21.5 7.9 20.78 7.58M6 6C7.1 6 8 5.1 8 4S7.1 2 6 2 4 2.9 4 4 4.9 6 6 6M7.92 7.28C7.31 7.1 6.67 7 6 7C5 7 4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H7V9.43C7 8.6 7.34 7.83 7.92 7.28M10 4C10 2.9 10.9 2 12 2S14 2.9 14 4 13.1 6 12 6 10 5.1 10 4M16 10H8V9.43C8 8.62 8.5 7.9 9.22 7.58C10.07 7.21 11 7 12 7C13 7 13.93 7.21 14.78 7.58C15.5 7.9 16 8.62 16 9.43V10M15 16C15 14.9 15.9 14 17 14S19 14.9 19 16 18.1 18 17 18 15 17.1 15 16M21 22H13V21.43C13 20.62 13.5 19.9 14.22 19.58C15.07 19.21 16 19 17 19C18 19 18.93 19.21 19.78 19.58C20.5 19.9 21 20.62 21 21.43V22M5 16C5 14.9 5.9 14 7 14S9 14.9 9 16 8.1 18 7 18 5 17.1 5 16M11 22H3V21.43C3 20.62 3.5 19.9 4.22 19.58C5.07 19.21 6 19 7 19C8 19 8.93 19.21 9.78 19.58C10.5 19.9 11 20.62 11 21.43V22M12.75 13V11H11.25V13H9L12 16L15 13H12.75Z";
var mdiHumanCapacityIncrease = "M16 4C16 2.9 16.9 2 18 2C19.1 2 20 2.9 20 4C20 5.1 19.1 6 18 6C16.9 6 16 5.1 16 4M20.78 7.58C19.93 7.21 19 7 18 7C17.33 7 16.69 7.1 16.08 7.28C16.66 7.83 17 8.6 17 9.43V10H22V9.43C22 8.62 21.5 7.9 20.78 7.58M6 6C7.1 6 8 5.1 8 4C8 2.9 7.1 2 6 2C4.9 2 4 2.9 4 4C4 5.1 4.9 6 6 6M7.92 7.28C7.31 7.1 6.67 7 6 7C5 7 4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H7V9.43C7 8.6 7.34 7.83 7.92 7.28M10 4C10 2.9 10.9 2 12 2C13.1 2 14 2.9 14 4C14 5.1 13.1 6 12 6C10.9 6 10 5.1 10 4M16 10H8V9.43C8 8.62 8.5 7.9 9.22 7.58C10.07 7.21 11 7 12 7C13 7 13.93 7.21 14.78 7.58C15.5 7.9 16 8.62 16 9.43M15 16C15 14.9 15.9 14 17 14C18.1 14 19 14.9 19 16C19 17.1 18.1 18 17 18C15.9 18 15 17.1 15 16M21 22H13V21.43C13 20.62 13.5 19.9 14.22 19.58C15.07 19.21 16 19 17 19C18 19 18.93 19.21 19.78 19.58C20.5 19.9 21 20.62 21 21.43M5 16C5 14.9 5.9 14 7 14C8.1 14 9 14.9 9 16C9 17.1 8.1 18 7 18C5.9 18 5 17.1 5 16M11 22H3V21.43C3 20.62 3.5 19.9 4.22 19.58C5.07 19.21 6 19 7 19C8 19 8.93 19.21 9.78 19.58C10.5 19.9 11 20.62 11 21.43M12.75 14V16H11.25V14H9L12 11L15 14Z";
var mdiHumanChild = "M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M11,22H8V16H6V9H18V16H16V22H13V18H11V22Z";
var mdiHumanEdit = "M19.07 14.88L21.12 16.93L15.06 23H13V20.94L19.07 14.88M21.04 13.13C21.18 13.13 21.31 13.19 21.42 13.3L22.7 14.58C22.92 14.79 22.92 15.14 22.7 15.35L21.7 16.35L19.65 14.3L20.65 13.3C20.76 13.19 20.9 13.13 21.04 13.13M21 9H15V16L13 18V16H11V22H9V9H3V7H21V9M12 2C13.1 2 14 2.9 14 4C14 5.1 13.1 6 12 6C10.9 6 10 5.1 10 4C10 2.9 10.9 2 12 2Z";
var mdiHumanFemale = "M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,22V16H7.5L10.09,8.41C10.34,7.59 11.1,7 12,7C12.9,7 13.66,7.59 13.91,8.41L16.5,16H13.5V22H10.5Z";
var mdiHumanFemaleBoy = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,22V16H3L5.6,8.4C5.9,7.6 6.6,7 7.5,7C8.4,7 9.2,7.6 9.4,8.4L12,16H9V22H6M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M13.5,15H19.5V19H18V22H15V19H13.5V15Z";
var mdiHumanFemaleDance = "M17 17H15V23H13V17H10.88L9.34 18.93L11.71 21.29L10.29 22.71L7.93 20.34C7.58 20 7.38 19.53 7.35 19.04C7.32 18.55 7.47 18.06 7.78 17.68L8.32 17H7L9 13V10C8.38 10.47 7.88 11.07 7.53 11.76C7.18 12.46 7 13.22 7 14H5C5 12.14 5.74 10.36 7.05 9.05C8.36 7.74 10.14 7 12 7C13.33 7 14.6 6.47 15.54 5.54C16.47 4.6 17 3.33 17 2H19C19 3.32 18.62 4.62 17.91 5.73C17.2 6.85 16.2 7.74 15 8.31V13L17 17M14 4C14 4.4 13.88 4.78 13.66 5.11C13.44 5.44 13.13 5.7 12.77 5.85C12.4 6 12 6.04 11.61 5.96C11.22 5.88 10.87 5.69 10.59 5.41C10.31 5.13 10.12 4.78 10.04 4.39C9.96 4 10 3.6 10.15 3.24C10.3 2.87 10.56 2.56 10.89 2.34C11.22 2.12 11.6 2 12 2C12.53 2 13.04 2.21 13.41 2.59C13.79 2.96 14 3.47 14 4Z";
var mdiHumanFemaleFemale = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,22V16H3L5.6,8.4C5.9,7.6 6.6,7 7.5,7C8.4,7 9.2,7.6 9.4,8.4L12,16L14.6,8.4C14.9,7.6 15.6,7 16.5,7C17.4,7 18.2,7.6 18.4,8.4L21,16H18V22H15V16H12L9,16V22H6M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2Z";
var mdiHumanFemaleGirl = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,22V16H3L5.6,8.4C5.9,7.6 6.6,7 7.5,7C8.4,7 9.2,7.6 9.4,8.4L12,16H9V22H6M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M15,15H18L19.5,19H18V22H15V19H13.5L15,15Z";
var mdiHumanGreeting = "M1.5,4V5.5C1.5,9.65 3.71,13.28 7,15.3V20H22V18C22,15.34 16.67,14 14,14C14,14 13.83,14 13.75,14C9,14 5,10 5,5.5V4M14,4A4,4 0 0,0 10,8A4,4 0 0,0 14,12A4,4 0 0,0 18,8A4,4 0 0,0 14,4Z";
var mdiHumanGreetingProximity = "M11 14H9C9 9.03 13.03 5 18 5V7C14.13 7 11 10.13 11 14M18 11V9C15.24 9 13 11.24 13 14H15C15 12.34 16.34 11 18 11M7 4C7 2.89 6.11 2 5 2S3 2.89 3 4 3.89 6 5 6 7 5.11 7 4M11.45 4.5H9.45C9.21 5.92 8 7 6.5 7H3.5C2.67 7 2 7.67 2 8.5V11H8V8.74C9.86 8.15 11.25 6.5 11.45 4.5M19 17C20.11 17 21 16.11 21 15S20.11 13 19 13 17 13.89 17 15 17.89 17 19 17M20.5 18H17.5C16 18 14.79 16.92 14.55 15.5H12.55C12.75 17.5 14.14 19.15 16 19.74V22H22V19.5C22 18.67 21.33 18 20.5 18Z";
var mdiHumanHandsdown = "M12,1C10.89,1 10,1.9 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3A2,2 0 0,0 12,1M10,6C9.73,6 9.5,6.11 9.31,6.28H9.3L4,11.59L5.42,13L9,9.41V22H11V15H13V22H15V9.41L18.58,13L20,11.59L14.7,6.28C14.5,6.11 14.27,6 14,6";
var mdiHumanHandsup = "M5,1C5,3.7 6.56,6.16 9,7.32V22H11V15H13V22H15V7.31C17.44,6.16 19,3.7 19,1H17A5,5 0 0,1 12,6A5,5 0 0,1 7,1M12,1C10.89,1 10,1.89 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3C14,1.89 13.11,1 12,1Z";
var mdiHumanMale = "M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,7H13.5A2,2 0 0,1 15.5,9V14.5H14V22H10V14.5H8.5V9A2,2 0 0,1 10.5,7Z";
var mdiHumanMaleBoy = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M13.5,15H19.5V19H18V22H15V19H13.5V15Z";
var mdiHumanMaleChild = "M7 2C5.9 2 5 2.9 5 4S5.9 6 7 6 9 5.11 9 4 8.11 2 7 2M5 7C3.89 7 3 7.89 3 9V15H5V22H10V11.6L12.53 16H14.97L16 14.66V22H20V17H21V14C21 12.89 20.11 12 19 12H16.5C15.9 12 15.37 12.26 15 12.68C14.67 13.1 14.32 13.56 14 14H13.69L10 7.66C9.84 7.38 9.22 7 8.5 7H5M18 8C17.17 8 16.5 8.67 16.5 9.5S17.17 11 18 11 19.5 10.33 19.5 9.5 18.83 8 18 8Z";
var mdiHumanMaleFemale = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2M15,22V16H12L14.59,8.41C14.84,7.59 15.6,7 16.5,7C17.4,7 18.16,7.59 18.41,8.41L21,16H18V22H15Z";
var mdiHumanMaleGirl = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M14.5,12A2,2 0 0,1 16.5,10A2,2 0 0,1 18.5,12A2,2 0 0,1 16.5,14A2,2 0 0,1 14.5,12M15,15H18L19.5,19H18V22H15V19H13.5L15,15Z";
var mdiHumanMaleHeight = "M7,2C8.78,2 9.67,4.16 8.42,5.42C7.16,6.67 5,5.78 5,4A2,2 0 0,1 7,2M5.5,7H8.5A2,2 0 0,1 10.5,9V14.5H9V22H5V14.5H3.5V9A2,2 0 0,1 5.5,7M21,8H15V10H21M21,11H18V13H21M21,2H15V4H21M21,5H18V7H21M21,14H15V16H21M21,20H15V22H21M21,17H18V19H21";
var mdiHumanMaleHeightVariant = "M7,2C8.78,2 9.67,4.16 8.42,5.42C7.16,6.67 5,5.78 5,4A2,2 0 0,1 7,2M5.5,7H8.5A2,2 0 0,1 10.5,9V14.5H9V22H5V14.5H3.5V9A2,2 0 0,1 5.5,7M19,8H21L18,4L15,8H17V16H15L18,20L21,16H19M22,2H14V4H22M22,20H14V22H22";
var mdiHumanMaleMale = "M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2M15,7H18A2,2 0 0,1 20,9V14.5H18.5V22H14.5V14.5H13V9A2,2 0 0,1 15,7Z";
var mdiHumanPregnant = "M9,4C9,2.89 9.89,2 11,2C12.11,2 13,2.89 13,4C13,5.11 12.11,6 11,6C9.89,6 9,5.11 9,4M16,13C16,11.66 15.17,10.5 14,10A3,3 0 0,0 11,7A3,3 0 0,0 8,10V17H10V22H13V17H16V13Z";
var mdiHumanQueue = "M5 6C3.9 6 3 6.9 3 8S3.9 10 5 10 7 9.11 7 8 6.11 6 5 6M12 4C10.9 4 10 4.89 10 6S10.9 8 12 8 14 7.11 14 6 13.11 4 12 4M19 2C17.9 2 17 2.9 17 4S17.9 6 19 6 21 5.11 21 4 20.11 2 19 2M3.5 11C2.67 11 2 11.67 2 12.5V17H3V22H7V17H8V12.5C8 11.67 7.33 11 6.5 11H3.5M10.5 9C9.67 9 9 9.67 9 10.5V15H10V20H14V15H15V10.5C15 9.67 14.33 9 13.5 9H10.5M17.5 7C16.67 7 16 7.67 16 8.5V13H17V18H21V13H22V8.5C22 7.67 21.33 7 20.5 7H17.5Z";
var mdiHumanScooter = "M16.5 2.25C17.33 2.25 18 2.92 18 3.75C18 4.58 17.33 5.25 16.5 5.25C15.67 5.25 15 4.58 15 3.75C15 2.92 15.67 2.25 16.5 2.25M20 18C21.11 18 22 18.9 22 20C22 21.11 21.11 22 20 22C19.26 22 18.61 21.6 18.27 21H8.73C8.39 21.6 7.74 22 7 22C5.9 22 5 21.11 5 20C5 18.9 5.9 18 7 18C7.74 18 8.39 18.4 8.73 19H13V13.5L9.73 11.23L6.77 14C6.36 14.37 5.73 14.34 5.35 13.94L2.28 10.65C1.91 10.24 1.93 9.61 2.33 9.23C2.74 8.86 3.37 8.88 3.74 9.28L6.13 11.84L13.26 5.2L13.3 5.18C13.72 4.82 14.35 4.88 14.71 5.3L16.97 8H20C20.55 8 21 8.45 21 9C21 9.55 20.55 10 20 10H16.5C16.15 10 15.85 9.82 15.67 9.56L14.17 7.77L11.64 10.13L14.57 12.18H14.57C14.83 12.36 15 12.66 15 13V19H15.61C16.04 17.13 17.63 15.7 19.58 15.5L18.81 11H20.31L21.39 17.34C20.97 17.12 20.5 17 20 17C18.69 17 17.58 17.84 17.17 19H18.27C18.61 18.4 19.26 18 20 18Z";
var mdiHumanWheelchair = "M8.5 4A2 2 0 0 1 6.5 6A2 2 0 0 1 4.5 4A2 2 0 0 1 6.5 2A2 2 0 0 1 8.5 4M5 7C3.89 7 3 7.89 3 9V15H5V22H8.61A7 7 0 0 1 6.5 17A7 7 0 0 1 10 10.95V9C10 7.89 9.11 7 8 7M13 8V16H18.5L21.2 19.6L22.8 18.4L19.5 14H15V8M12 12.23A5 5 0 0 0 8.5 17A5 5 0 0 0 13.5 22A5 5 0 0 0 18.5 17H16.5A3 3 0 0 1 13.5 20A3 3 0 0 1 10.5 17A3 3 0 0 1 12 14.41Z";
var mdiHumbleBundle = "M16.91,18.12C14.09,18.12 18.43,2.13 18.43,2.13H15.53C15.53,2.13 14.34,5.89 13.55,10.07H11.05C11.11,9.21 11.15,8.34 11.13,7.5C11,0.59 7,1.87 5.18,3.45C3.47,4.95 2.03,7.8 2,10C2.27,10 3.35,10 3.35,10C3.35,10 4.25,5.88 7.07,5.88C9.89,5.88 5.54,21.87 5.54,21.87H8.45C8.45,21.87 9.95,17.59 10.7,12.81L13.09,12.8C12.95,14.04 12.91,15.4 12.93,16.67C13.04,23.56 17.06,22.08 18.86,20.5C20.67,18.92 22,15.58 22,14H20.61C20.62,14.12 19.73,18.12 16.91,18.12V18.12Z";
var mdiHvac = "M8.58 14C8.3 13.55 8.11 13.03 8.06 12.5H15.94C15.89 13.03 15.7 13.55 15.47 14H8.58M12 16C10.97 16 10.08 15.61 9.38 15H14.63C13.92 15.61 13.03 16 12 16M12 8C13.03 8 13.92 8.39 14.63 9H9.38C10.08 8.39 10.97 8 12 8M8.58 10H15.42C15.7 10.45 15.89 10.97 15.94 11.5H8.06C8.11 10.97 8.3 10.45 8.58 10M3 3V21H21V3H3M12 18C8.67 18 6 15.33 6 12S8.67 6 12 6 18 8.67 18 12 15.33 18 12 18Z";
var mdiHvacOff = "M22.11 21.46L2.39 1.73L1.11 3L3 4.89V21H19.11L20.84 22.73L22.11 21.46M12 18C8.67 18 6 15.33 6 12C6 10.82 6.34 9.73 6.92 8.81L8.43 10.32C8.24 10.69 8.1 11.09 8.06 11.5H9.61L10.61 12.5H8.06C8.11 13.03 8.3 13.55 8.58 14H12.11L13.11 15H9.38C10.08 15.61 10.97 16 12 16C12.63 16 13.19 15.84 13.7 15.59L15.19 17.08C14.27 17.66 13.18 18 12 18M12 8C13.03 8 13.92 8.39 14.63 9H12.2L11.27 8.07C11.5 8.03 11.75 8 12 8M9.67 6.47L6.2 3H21V17.8L17.53 14.33C17.83 13.62 18 12.83 18 12C18 8.67 15.33 6 12 6C11.17 6 10.38 6.17 9.67 6.47M15.94 11.5H14.7L13.2 10H15.42C15.7 10.45 15.89 10.97 15.94 11.5Z";
var mdiHydraulicOilLevel = "M15 18C13.34 18 12 16.66 12 15C12 13 15 9.63 15 9.63S18 13 18 15C18 16.66 16.66 18 15 18M20 4V20H10V4H8V20C8 21.11 8.89 22 10 22H20C21.11 22 22 21.11 22 20V4H20M2 19L7 14L2 9V19M16 6V2H14V6H11V8H19V6H16Z";
var mdiHydraulicOilTemperature = "M9 18C7.34 18 6 16.66 6 15C6 13 9 9.63 9 9.63S12 13 12 15C12 16.66 10.66 18 9 18M14 4V20H4V4H2V20C2 21.11 2.89 22 4 22H14C15.11 22 16 21.11 16 20V4H14M10 6V2H8V6H5V8H13V6H10M21 17.5V5.5C21 4.67 20.33 4 19.5 4S18 4.67 18 5.5V17.5C17.37 17.97 17 18.71 17 19.5C17 20.88 18.12 22 19.5 22S22 20.88 22 19.5C22 18.71 21.63 18 21 17.5M20 13H19V6H20V13Z";
var mdiHydroPower = "M17.12 3.55A2 2 0 0 0 15.2 4.95L14.4 7.5A3 3 0 0 0 13.33 7.74L11.5 5.77L10.17 4.29A2 2 0 0 0 10.05 7.12L11.86 9.09A3 3 0 0 0 11.64 9.6A3 3 0 0 0 11.53 10.13L8.92 10.71L6.96 11.15A2 2 0 0 0 9.35 12.67L11.96 12.08A3 3 0 0 0 12.7 12.89L11.9 15.44L11.3 17.35A2 2 0 0 0 13.8 16.04L14.61 13.5A3 3 0 0 0 15.68 13.26L17.5 15.23L18.83 16.7A2 2 0 0 0 18.96 13.88L17.15 11.91A3 3 0 0 0 17.36 11.4A3 3 0 0 0 17.5 10.86L20.09 10.28L22.04 9.85A2 2 0 0 0 19.66 8.33L17.05 8.91A3 3 0 0 0 16.31 8.11L17.11 5.55L17.71 3.65A2 2 0 0 0 17.12 3.55M14.56 9A1.5 1.5 0 0 1 14.95 9.07A1.5 1.5 0 0 1 15.93 10.95A1.5 1.5 0 0 1 14.05 11.93A1.5 1.5 0 0 1 13.07 10.05A1.5 1.5 0 0 1 14.55 9M8 13.67C6.78 14.53 5.39 15 4 15H2V17H4C5.37 17 6.74 16.65 8 16C8.77 16.4 9.58 16.66 10.41 16.81L10.94 15.14L11.03 14.88C9.97 14.73 8.93 14.32 8 13.67M20.45 15C20.5 15.7 20.33 16.41 19.91 17C19.93 17 19.97 17 20 17H22V15H20.45M8 17.67C6.78 18.53 5.39 19 4 19H2V21H4C5.37 21 6.74 20.65 8 20C10.5 21.3 13.5 21.3 16 20C17.26 20.65 18.62 21 20 21H22V19H20C18.61 19 17.22 18.53 16 17.67C13.56 19.38 10.44 19.38 8 17.67Z";
var mdiIceCream = "M17.5 6.05C17.25 3.22 14.89 1 12 1S6.75 3.22 6.5 6.05C5.09 6.28 4 7.5 4 9C4 10.66 5.34 12 7 12L12 22L17 12C18.66 12 20 10.66 20 9C20 7.5 18.91 6.28 17.5 6.05M12 17.53L8.89 11.31C8.95 11.26 9 11.21 9.08 11.16C9.93 11.69 10.93 12 12 12S14.07 11.69 14.92 11.16C15 11.21 15.05 11.26 15.11 11.31L12 17.53Z";
var mdiIceCreamOff = "M22.11 21.46L2.39 1.73L1.11 3L4.95 6.84C4.37 7.38 4 8.14 4 9C4 10.66 5.34 12 7 12L12 22L14.7 16.59L20.84 22.73L22.11 21.46M12 17.53L8.89 11.31C8.95 11.26 9 11.21 9.08 11.16C9.21 11.24 9.35 11.3 9.5 11.37L13.21 15.1L12 17.53M7.15 3.95C8.07 2.2 9.89 1 12 1C14.89 1 17.25 3.22 17.5 6.05C18.91 6.28 20 7.5 20 9C20 10.66 18.66 12 17 12L16.4 13.2L7.15 3.95Z";
var mdiIcePop = "M18.15 14.96L9.95 18.65L5.85 9.65C7.21 9.13 8.12 7.82 8.15 6.36C8.14 5 7.36 3.76 6.15 3.15C6.54 2.8 7 2.5 7.45 2.25C9.71 1.25 12.37 2.23 13.45 4.46M13.15 18.36L14.75 21.86L17.45 20.65L15.85 17.15";
var mdiIdCard = "M4 4C2.89 4 2 4.89 2 6V18C2 19.11 2.89 20 4 20H20C21.11 20 22 19.11 22 18V6C22 4.89 21.11 4 20 4H4M4 6H20V10H4V6M4 12H8V14H4V12M10 12H20V14H10V12M4 16H14V18H4V16M16 16H20V18H16V16Z";
var mdiIdentifier = "M10 7V9H9V15H10V17H6V15H7V9H6V7H10M16 7C17.11 7 18 7.9 18 9V15C18 16.11 17.11 17 16 17H12V7M16 9H14V15H16V9Z";
var mdiIdeogramCjk = "M11 4V6H4V10H6V8H18V10H20V6H13V4M8 10V12H13.59L11.59 14H4V16H11V18H10V20H13V16H20V14H14.21L16 12.21V10Z";
var mdiIdeogramCjkVariant = "M11 4V6H4V8H15.36C15.13 8.87 14.63 9.77 13.88 10.69C13.35 11.35 12.71 12 12 12.67C11.29 12 10.65 11.35 10.12 10.69C9.65 10.12 9.3 9.55 9.03 9H6.85C7.21 10.05 7.82 11.03 8.56 11.95C9.13 12.66 9.79 13.34 10.5 14L5.36 18.23L6.64 19.77L12 15.34L17.36 19.77L18.64 18.23L13.5 14C14.21 13.34 14.87 12.66 15.44 11.95C16.41 10.74 17.16 9.43 17.4 8H20V6H13V4Z";
var mdiIframe = "M21,2H3A2,2 0 0,0 1,4V20A2,2 0 0,0 3,22H21A2,2 0 0,0 23,20V4A2,2 0 0,0 21,2M11,17.5L9.5,19L5,14.5L9.5,10L11,11.5L8,14.5L11,17.5M14.5,19L13,17.5L16,14.5L13,11.5L14.5,10L19,14.5L14.5,19M21,7H3V4H21V7Z";
var mdiIframeArray = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M10 11H8V18H10V20H6V9H10V11M18 20H14V18H16V11H14V9H18V20M21 7H3V4H21V7Z";
var mdiIframeArrayOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M6 8V18H10V16H8V10H10V8H6M16 16H14V18H18V8H14V10H16V16";
var mdiIframeBraces = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M11 11H9V12.5C9 13.6 8.1 14.5 7 14.5C8.1 14.5 9 15.4 9 16.5V18H11V20H9C7.9 20 7 19.1 7 18V17.5C7 16.4 6.1 15.5 5 15.5V13.5C6.1 13.5 7 12.6 7 11.5V11C7 9.9 7.9 9 9 9H11V11M19 15.5C17.9 15.5 17 16.4 17 17.5V18C17 19.1 16.1 20 15 20H13V18H15V16.5C15 15.4 15.9 14.5 17 14.5C15.9 14.5 15 13.6 15 12.5V11H13V9H15C16.1 9 17 9.9 17 11V11.5C17 12.6 17.9 13.5 19 13.5V15.5M21 7H3V4H21V7Z";
var mdiIframeBracesOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M9 8C7.9 8 7 8.9 7 10C7 11.1 6.1 12 5 12V14C6.1 14 7 14.9 7 16C7 17.1 7.9 18 9 18H11V16H9V15C9 13.9 8.1 13 7 13C8.1 13 9 12.1 9 11V10H11V8M15 8C16.1 8 17 8.9 17 10C17 11.1 17.9 12 19 12V14C17.9 14 17 14.9 17 16C17 17.1 16.1 18 15 18H13V16H15V15C15 13.9 15.9 13 17 13C15.9 13 15 12.1 15 11V10H13V8H15Z";
var mdiIframeOutline = "M9.5,8.5L11,10L8,13L11,16L9.5,17.5L5,13L9.5,8.5M14.5,17.5L13,16L16,13L13,10L14.5,8.5L19,13L14.5,17.5M21,2H3A2,2 0 0,0 1,4V20A2,2 0 0,0 3,22H21A2,2 0 0,0 23,20V4A2,2 0 0,0 21,2M21,20H3V6H21V20Z";
var mdiIframeParentheses = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M10 19.4L8.4 20C6.9 18.6 6 16.6 6 14.5S6.9 10.4 8.4 9L10 9.6C8.7 10.7 8 12.6 8 14.5S8.7 18.2 10 19.4M15.6 20L14 19.4C15.3 18.2 16 16.4 16 14.5S15.3 10.8 14 9.6L15.6 9C17.1 10.4 18 12.4 18 14.5C18 16.6 17.1 18.6 15.6 20M21 7H3V4H21V7Z";
var mdiIframeParenthesesOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M15.6 8C17.1 9.3 18 11.1 18 13C18 14.9 17.1 16.7 15.6 18L14 17.4C15.3 16.4 16 14.7 16 13S15.3 9.6 14 8.6L15.6 8M8.4 8L10 8.6C8.7 9.6 8 11.3 8 13S8.7 16.4 10 17.4L8.4 18C6.9 16.7 6 14.9 6 13S6.9 9.3 8.4 8Z";
var mdiIframeVariable = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M7.4 20C5.9 18.6 5 16.6 5 14.5S5.9 10.4 7.4 9L9 9.6C7.7 10.7 7 12.6 7 14.5S7.7 18.2 9 19.4L7.4 20M12.7 18L11.9 16L10.5 18H9L11.3 14.9L10 12H11.3L12.1 14L13.5 12H15L12.8 15L14.1 18H12.7M16.6 20L15 19.4C16.3 18.2 17 16.4 17 14.5S16.3 10.8 15 9.6L16.6 9C18.1 10.4 19 12.4 19 14.5C19 16.6 18.1 18.6 16.6 20M21 7H3V4H21V7Z";
var mdiIframeVariableOutline = "M21 2H3C1.9 2 1 2.9 1 4V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2M21 20H3V6H21V20M16.6 8C18.1 9.3 19 11.1 19 13C19 14.9 18.1 16.7 16.6 18L15 17.4C16.3 16.4 17 14.7 17 13S16.3 9.6 15 8.6L16.6 8M7.4 8L9 8.6C7.7 9.6 7 11.3 7 13S7.7 16.4 9 17.4L7.4 18C5.9 16.7 5 14.9 5 13S5.9 9.3 7.4 8M12.1 12L13.5 10H15L12.8 13L14.1 16H12.8L12 14L10.6 16H9L11.3 12.9L10 10H11.3L12.1 12Z";
var mdiImage = "M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z";
var mdiImageAlbum = "M6,19L9,15.14L11.14,17.72L14.14,13.86L18,19H6M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z";
var mdiImageArea = "M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M5,16H19L14.5,10L11,14.5L8.5,11.5L5,16Z";
var mdiImageAreaClose = "M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M5,14H19L14.5,8L11,12.5L8.5,9.5L5,14Z";
var mdiImageAutoAdjust = "M19 10V19H5V5H14V3H5C3.92 3 3 3.9 3 5V19C3 20.1 3.92 21 5 21H19C20.12 21 21 20.1 21 19V10H19M17 10L17.94 7.94L20 7L17.94 6.06L17 4L16.06 6.06L14 7L16.06 7.94L17 10M13.25 10.75L12 8L10.75 10.75L8 12L10.75 13.25L12 16L13.25 13.25L16 12L13.25 10.75Z";
var mdiImageBroken = "M19,3A2,2 0 0,1 21,5V11H19V13H19L17,13V15H15V17H13V19H11V21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19M21,15V19A2,2 0 0,1 19,21H19L15,21V19H17V17H19V15H21M19,8.5A0.5,0.5 0 0,0 18.5,8H5.5A0.5,0.5 0 0,0 5,8.5V15.5A0.5,0.5 0 0,0 5.5,16H11V15H13V13H15V11H17V9H19V8.5Z";
var mdiImageBrokenVariant = "M21,5V11.59L18,8.58L14,12.59L10,8.59L6,12.59L3,9.58V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M18,11.42L21,14.43V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V12.42L6,15.41L10,11.41L14,15.41";
var mdiImageEdit = "M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z";
var mdiImageEditOutline = "M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M11.21 15.83L9.25 13.47L6.5 17H13.12L15.66 14.55L13.96 12.29L11.21 15.83M11 19.9V19.05L11.05 19H5V5H19V11.31L21 9.38V5C21 3.9 20.11 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H11V19.9Z";
var mdiImageFilterBlackWhite = "M19,19L12,11V19H5L12,11V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiImageFilterCenterFocus = "M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z";
var mdiImageFilterCenterFocusStrong = "M12 8C8.44 8 6.65 12.31 9.17 14.83C11.69 17.35 16 15.56 16 12C16 9.79 14.21 8 12 8M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19";
var mdiImageFilterCenterFocusStrongOutline = "M17 12C17 7.55 11.62 5.31 8.46 8.46C5.31 11.61 7.55 17 12 17C14.76 17 17 14.76 17 12M12 15C9.33 15 8 11.77 9.88 9.88C11.77 8 15 9.33 15 12C15 13.66 13.66 15 12 15M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19";
var mdiImageFilterCenterFocusWeak = "M5,15H3V19A2,2 0 0,0 5,21H9V19H5M5,5H9V3H5A2,2 0 0,0 3,5V9H5M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14Z";
var mdiImageFilterDrama = "M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10A4,4 0 0,1 10,14H12C12,11.24 10.14,8.92 7.6,8.22C8.61,6.88 10.2,6 12,6C15.03,6 17.5,8.47 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.04C18.67,6.59 15.64,4 12,4C9.11,4 6.61,5.64 5.36,8.04C2.35,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.04Z";
var mdiImageFilterFrames = "M18,8H6V18H18M20,20H4V6H8.5L12.04,2.5L15.5,6H20M20,4H16L12,0L8,4H4A2,2 0 0,0 2,6V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V6A2,2 0 0,0 20,4Z";
var mdiImageFilterHdr = "M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z";
var mdiImageFilterNone = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z";
var mdiImageFilterTiltShift = "M5.68,19.74C7.16,20.95 9,21.75 11,21.95V19.93C9.54,19.75 8.21,19.17 7.1,18.31M13,19.93V21.95C15,21.75 16.84,20.95 18.32,19.74L16.89,18.31C15.79,19.17 14.46,19.75 13,19.93M18.31,16.9L19.74,18.33C20.95,16.85 21.75,15 21.95,13H19.93C19.75,14.46 19.17,15.79 18.31,16.9M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12M4.07,13H2.05C2.25,15 3.05,16.84 4.26,18.32L5.69,16.89C4.83,15.79 4.25,14.46 4.07,13M5.69,7.1L4.26,5.68C3.05,7.16 2.25,9 2.05,11H4.07C4.25,9.54 4.83,8.21 5.69,7.1M19.93,11H21.95C21.75,9 20.95,7.16 19.74,5.68L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11M18.32,4.26C16.84,3.05 15,2.25 13,2.05V4.07C14.46,4.25 15.79,4.83 16.9,5.69M11,4.07V2.05C9,2.25 7.16,3.05 5.68,4.26L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07Z";
var mdiImageFilterVintage = "M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M18.7,12.4C18.42,12.24 18.13,12.11 17.84,12C18.13,11.89 18.42,11.76 18.7,11.6C20.62,10.5 21.69,8.5 21.7,6.41C19.91,5.38 17.63,5.3 15.7,6.41C15.42,6.57 15.16,6.76 14.92,6.95C14.97,6.64 15,6.32 15,6C15,3.78 13.79,1.85 12,0.81C10.21,1.85 9,3.78 9,6C9,6.32 9.03,6.64 9.08,6.95C8.84,6.75 8.58,6.56 8.3,6.4C6.38,5.29 4.1,5.37 2.3,6.4C2.3,8.47 3.37,10.5 5.3,11.59C5.58,11.75 5.87,11.88 6.16,12C5.87,12.1 5.58,12.23 5.3,12.39C3.38,13.5 2.31,15.5 2.3,17.58C4.09,18.61 6.37,18.69 8.3,17.58C8.58,17.42 8.84,17.23 9.08,17.04C9.03,17.36 9,17.68 9,18C9,20.22 10.21,22.15 12,23.19C13.79,22.15 15,20.22 15,18C15,17.68 14.97,17.36 14.92,17.05C15.16,17.25 15.42,17.43 15.7,17.59C17.62,18.7 19.9,18.62 21.7,17.59C21.69,15.5 20.62,13.5 18.7,12.4Z";
var mdiImageFrame = "M10,14.29L6.5,19H17.46L14.75,15.46L12.78,17.8L10,14.29M5,21V7H18.96V21H5M12,2.4L14.61,5.03H9.37L12,2.4M5,5.03C4.5,5.03 4,5.22 3.61,5.61C3.2,6 3,6.46 3,7V21C3,21.5 3.2,22 3.61,22.39C4,22.8 4.5,23 5,23H18.96C19.5,23 19.96,22.8 20.37,22.39C20.77,22 21,21.5 21,21V7C21,6.46 20.77,6 20.37,5.61C19.96,5.22 19.5,5.03 18.96,5.03H16L12,1L7.96,5.03H5Z";
var mdiImageMinus = "M5 3C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H14.09C14.03 20.67 14 20.34 14 20C14 19.32 14.12 18.64 14.35 18H5L8.5 13.5L11 16.5L14.5 12L16.73 14.97C17.7 14.34 18.84 14 20 14C20.34 14 20.67 14.03 21 14.09V5C21 3.89 20.1 3 19 3H5M16 19V21H24V19H16Z";
var mdiImageMove = "M15,3H19V0L24,5L19,10V7H15V3M21,11.94V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H12.06C12,3.33 12,3.67 12,4A8,8 0 0,0 20,12C20.33,12 20.67,12 21,11.94M19,18L14.5,12L11,16.5L8.5,13.5L5,18H19Z";
var mdiImageMultiple = "M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6";
var mdiImageMultipleOutline = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z";
var mdiImageOff = "M21 17.2L6.8 3H19C20.1 3 21 3.9 21 5V17.2M20.7 22L19.7 21H5C3.9 21 3 20.1 3 19V4.3L2 3.3L3.3 2L22 20.7L20.7 22M16.8 18L12.9 14.1L11 16.5L8.5 13.5L5 18H16.8Z";
var mdiImageOffOutline = "M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8";
var mdiImageOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13.96,12.29L11.21,15.83L9.25,13.47L6.5,17H17.5L13.96,12.29Z";
var mdiImagePlus = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H14.09C14.03,20.67 14,20.34 14,20C14,19.32 14.12,18.64 14.35,18H5L8.5,13.5L11,16.5L14.5,12L16.73,14.97C17.7,14.34 18.84,14 20,14C20.34,14 20.67,14.03 21,14.09V5C21,3.89 20.1,3 19,3H5M19,16V19H16V21H19V24H21V21H24V19H21V16H19Z";
var mdiImageRemove = "M5 3C3.9 3 3 3.9 3 5V19C3 20.11 3.9 21 5 21H14.09C14.03 20.67 14 20.34 14 20C14 19.32 14.12 18.64 14.35 18H5L8.5 13.5L11 16.5L14.5 12L16.73 14.97C17.7 14.34 18.84 14 20 14C20.34 14 20.67 14.03 21 14.09V5C21 3.89 20.1 3 19 3H5M16.47 17.88L18.59 20L16.47 22.12L17.88 23.54L20 21.41L22.12 23.54L23.54 22.12L21.41 20L23.54 17.88L22.12 16.46L20 18.59L17.88 16.47L16.46 17.88Z";
var mdiImageSearch = "M15.5,2C18,2 20,4 20,6.5C20,7.38 19.75,8.21 19.31,8.9L22.39,12L21,13.39L17.88,10.32C17.19,10.75 16.37,11 15.5,11C13,11 11,9 11,6.5C11,4 13,2 15.5,2M15.5,4A2.5,2.5 0 0,0 13,6.5A2.5,2.5 0 0,0 15.5,9A2.5,2.5 0 0,0 18,6.5A2.5,2.5 0 0,0 15.5,4M7.5,14.5L4,19H18L13.5,13L10,17.5L7.5,14.5M20,20A2,2 0 0,1 18,22H4A2,2 0 0,1 2,20V6A2,2 0 0,1 4,4H9.5C9.18,4.77 9,5.61 9,6.5A6.5,6.5 0 0,0 15.5,13C16.18,13 16.84,12.89 17.46,12.7L20,15.24V20Z";
var mdiImageSearchOutline = "M15.5,9C16.2,9 16.79,8.76 17.27,8.27C17.76,7.79 18,7.2 18,6.5C18,5.83 17.76,5.23 17.27,4.73C16.79,4.23 16.2,4 15.5,4C14.83,4 14.23,4.23 13.73,4.73C13.23,5.23 13,5.83 13,6.5C13,7.2 13.23,7.79 13.73,8.27C14.23,8.76 14.83,9 15.5,9M19.31,8.91L22.41,12L21,13.41L17.86,10.31C17.08,10.78 16.28,11 15.47,11C14.22,11 13.16,10.58 12.3,9.7C11.45,8.83 11,7.77 11,6.5C11,5.27 11.45,4.2 12.33,3.33C13.2,2.45 14.27,2 15.5,2C16.77,2 17.83,2.45 18.7,3.33C19.58,4.2 20,5.27 20,6.5C20,7.33 19.78,8.13 19.31,8.91M16.5,18H5.5L8.25,14.5L10.22,16.83L12.94,13.31L16.5,18M18,13L20,15V20C20,20.55 19.81,21 19.41,21.4C19,21.79 18.53,22 18,22H4C3.45,22 3,21.79 2.6,21.4C2.21,21 2,20.55 2,20V6C2,5.47 2.21,5 2.6,4.59C3,4.19 3.45,4 4,4H9.5C9.2,4.64 9.03,5.31 9,6H4V20H18V13Z";
var mdiImageSizeSelectActual = "M21,3H3C2,3 1,4 1,5V19A2,2 0 0,0 3,21H21C22,21 23,20 23,19V5C23,4 22,3 21,3M5,17L8.5,12.5L11,15.5L14.5,11L19,17H5Z";
var mdiImageSizeSelectLarge = "M21,15H23V17H21V15M21,11H23V13H21V11M23,19H21V21C22,21 23,20 23,19M13,3H15V5H13V3M21,7H23V9H21V7M21,3V5H23C23,4 22,3 21,3M1,7H3V9H1V7M17,3H19V5H17V3M17,19H19V21H17V19M3,3C2,3 1,4 1,5H3V3M9,3H11V5H9V3M5,3H7V5H5V3M1,11V19A2,2 0 0,0 3,21H15V11H1M3,19L5.5,15.79L7.29,17.94L9.79,14.72L13,19H3Z";
var mdiImageSizeSelectSmall = "M23,15H21V17H23V15M23,11H21V13H23V11M23,19H21V21C22,21 23,20 23,19M15,3H13V5H15V3M23,7H21V9H23V7M21,3V5H23C23,4 22,3 21,3M3,21H11V15H1V19A2,2 0 0,0 3,21M3,7H1V9H3V7M15,19H13V21H15V19M19,3H17V5H19V3M19,19H17V21H19V19M3,3C2,3 1,4 1,5H3V3M3,11H1V13H3V11M11,3H9V5H11V3M7,3H5V5H7V3Z";
var mdiImageText = "M22 13H14V11H22V13M22 7H14V9H22V7M14 17H22V15H14V17M12 9V15C12 16.1 11.1 17 10 17H4C2.9 17 2 16.1 2 15V9C2 7.9 2.9 7 4 7H10C11.1 7 12 7.9 12 9M10.5 15L8.3 12L6.5 14.3L5.3 12.8L3.5 15H10.5Z";
var mdiImport = "M14,12L10,8V11H2V13H10V16M20,18V6C20,4.89 19.1,4 18,4H6A2,2 0 0,0 4,6V9H6V6H18V18H6V15H4V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18Z";
var mdiInbox = "M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiInboxArrowDown = "M16,10H14V7H10V10H8L12,14M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiInboxArrowDownOutline = "M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19M16 10H14V7H10V10H8L12 14";
var mdiInboxArrowUp = "M14,14H10V11H8L12,7L16,11H14V14M16,11M5,15V5H19V15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3";
var mdiInboxArrowUpOutline = "M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19M8 11H10V14H14V11H16L12 7";
var mdiInboxFull = "M19 15V5H5V15H9C9 16.66 10.34 18 12 18C13.66 18 15 16.66 15 15H19M19 3C20.1 3 21 3.9 21 5V19C21 20.1 20.1 21 19 21H5C3.89 21 3 20.1 3 19L3 5C3 3.9 3.89 3 5 3H19M7 13V11H17V13H7M7 9V7H17V9H7Z";
var mdiInboxFullOutline = "M19 3C20.1 3 21 3.9 21 5V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19M5 19H9.4C8.79 18.47 8.35 17.78 8.13 17H5V19M19 19V17H15.87C15.65 17.78 15.21 18.47 14.6 19H19M19 15V5H5V15H10V16C10 18.67 14 18.67 14 16V15H19M7 7H17V9H7V7M17 11V13H7V11H17Z";
var mdiInboxMultiple = "M19,8V5H5V8H9A3,3 0 0,0 12,11A3,3 0 0,0 15,8H19M19,3A2,2 0 0,1 21,5V12A2,2 0 0,1 19,14H5A2,2 0 0,1 3,12V5A2,2 0 0,1 5,3H19M3,15H9A3,3 0 0,0 12,18A3,3 0 0,0 15,15H21V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V15Z";
var mdiInboxMultipleOutline = "M19,3A2,2 0 0,1 21,5V12A2,2 0 0,1 19,14H5A2,2 0 0,1 3,12V5A2,2 0 0,1 5,3H19M5,10V12H9.4C8.8,11.47 8.34,10.78 8.13,10H5M19,12V10H15.87C15.66,10.78 15.2,11.47 14.6,12H19M19,8V5H5V8H10V9C10,10.07 10.93,11 12,11C13.07,11 14,10.07 14,9V8H19M21,19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V15H10V16C10,17.07 10.93,18 12,18C13.07,18 14,17.07 14,16V15H21V19M5,17V19H9.4C8.8,18.47 8.34,17.78 8.13,17H5M19,19V17H15.87C15.66,17.78 15.2,18.47 14.6,19H19Z";
var mdiInboxOutline = "M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M5 19V17H8.13A4.13 4.13 0 0 0 9.4 19M19 19H14.6A4.13 4.13 0 0 0 15.87 17H19M19 15H14V16A2 2 0 0 1 10 16V15H5V5H19Z";
var mdiInboxRemove = "M19 15H15C15 16.7 13.7 18 12 18S9 16.7 9 15H5V5H19M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M14.1 6.5L15.5 7.9L13.4 10L15.5 12.1L14.1 13.5L12 11.4L9.9 13.5L8.5 12.1L10.6 10L8.5 7.9L9.9 6.5L12 8.6L14.1 6.5Z";
var mdiInboxRemoveOutline = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M5 19V17H8.1C8.3 17.8 8.8 18.5 9.4 19M19 19H14.6C15.2 18.5 15.7 17.8 15.9 17H19M19 15H14V16C14 17.1 13.1 18 12 18S10 17.1 10 16V15H5V5H19V15M14.1 6.5L15.5 7.9L13.4 10L15.5 12.1L14.1 13.5L12 11.4L9.9 13.5L8.5 12.1L10.6 10L8.5 7.9L9.9 6.5L12 8.6L14.1 6.5Z";
var mdiIncognito = "M17.06 13C15.2 13 13.64 14.33 13.24 16.1C12.29 15.69 11.42 15.8 10.76 16.09C10.35 14.31 8.79 13 6.94 13C4.77 13 3 14.79 3 17C3 19.21 4.77 21 6.94 21C9 21 10.68 19.38 10.84 17.32C11.18 17.08 12.07 16.63 13.16 17.34C13.34 19.39 15 21 17.06 21C19.23 21 21 19.21 21 17C21 14.79 19.23 13 17.06 13M6.94 19.86C5.38 19.86 4.13 18.58 4.13 17S5.39 14.14 6.94 14.14C8.5 14.14 9.75 15.42 9.75 17S8.5 19.86 6.94 19.86M17.06 19.86C15.5 19.86 14.25 18.58 14.25 17S15.5 14.14 17.06 14.14C18.62 14.14 19.88 15.42 19.88 17S18.61 19.86 17.06 19.86M22 10.5H2V12H22V10.5M15.53 2.63C15.31 2.14 14.75 1.88 14.22 2.05L12 2.79L9.77 2.05L9.72 2.04C9.19 1.89 8.63 2.17 8.43 2.68L6 9H18L15.56 2.68L15.53 2.63Z";
var mdiIncognitoCircle = "M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M14.92 12.81C13.84 12.81 12.95 13.56 12.71 14.56C12.17 14.33 11.66 14.39 11.29 14.55C11.05 13.55 10.15 12.81 9.08 12.81C7.83 12.81 6.82 13.82 6.82 15.07C6.82 16.32 7.83 17.33 9.08 17.33C10.28 17.33 11.24 16.42 11.33 15.25C11.53 15.12 12.04 14.86 12.67 15.26C12.77 16.42 13.73 17.33 14.92 17.33C16.17 17.33 17.18 16.32 17.18 15.07C17.18 13.82 16.17 12.81 14.92 12.81M9.08 13.45C10 13.45 10.7 14.18 10.7 15.07C10.7 15.96 10 16.69 9.08 16.69C8.19 16.69 7.46 15.96 7.46 15.07C7.46 14.18 8.19 13.45 9.08 13.45M14.92 13.45C15.81 13.45 16.54 14.18 16.54 15.07C16.54 15.96 15.81 16.69 14.92 16.69C14 16.69 13.3 15.96 13.3 15.07C13.3 14.18 14 13.45 14.92 13.45M17.83 11.5H6.17V12.17H17.83V11.5M14.15 6.89C14 6.59 13.67 6.43 13.35 6.53L12 7L10.65 6.53L10.61 6.5C10.29 6.43 9.95 6.61 9.84 6.92L8.36 10.83H15.64L14.16 6.92L14.15 6.89Z";
var mdiIncognitoCircleOff = "M22.11 21.46L2.39 1.73L1.11 3L4.06 5.95C2.77 7.63 2 9.72 2 12C2 17.5 6.5 22 12 22C14.28 22 16.37 21.23 18.05 19.94L20.84 22.73L22.11 21.46M8.94 10.83H8.36L8.5 10.41L8.94 10.83M6.17 11.5H9.61L10.28 12.17H6.17V11.5M14.92 17.33C13.73 17.33 12.77 16.42 12.67 15.26C12.04 14.86 11.53 15.12 11.33 15.25C11.24 16.42 10.28 17.33 9.08 17.33C7.83 17.33 6.82 16.32 6.82 15.07C6.82 13.82 7.83 12.81 9.08 12.81C10.15 12.81 11.05 13.55 11.29 14.55C11.65 14.4 12.13 14.34 12.65 14.54L13.31 15.2C13.37 16 14 16.61 14.78 16.67L15.38 17.27C15.23 17.3 15.08 17.33 14.92 17.33M9.94 6.74L6.72 3.5C8.25 2.56 10.06 2 12 2C17.5 2 22 6.5 22 12C22 13.94 21.44 15.75 20.5 17.28L15.37 12.17H17.83V11.5H14.7L14.03 10.83H15.64L14.16 6.92L14.15 6.89C14 6.59 13.67 6.43 13.35 6.53L12 7L10.65 6.53L10.61 6.5C10.36 6.45 10.1 6.55 9.94 6.74M10.7 15.07C10.7 15.96 10 16.69 9.08 16.69C8.19 16.69 7.46 15.96 7.46 15.07S8.19 13.45 9.08 13.45C10 13.45 10.7 14.18 10.7 15.07Z";
var mdiIncognitoOff = "M22.11 21.46L2.39 1.73L1.11 3L6.31 8.2L6 9H7.11L8.61 10.5H2V12H10.11L13.5 15.37C13.38 15.61 13.3 15.85 13.24 16.1C12.29 15.69 11.41 15.8 10.76 16.09C10.35 14.31 8.79 13 6.94 13C4.77 13 3 14.79 3 17C3 19.21 4.77 21 6.94 21C9 21 10.68 19.38 10.84 17.32C11.18 17.08 12.07 16.63 13.16 17.34C13.34 19.39 15 21 17.06 21C17.66 21 18.22 20.86 18.72 20.61L20.84 22.73L22.11 21.46M6.94 19.86C5.38 19.86 4.13 18.58 4.13 17C4.13 15.42 5.39 14.14 6.94 14.14C8.5 14.14 9.75 15.42 9.75 17C9.75 18.58 8.5 19.86 6.94 19.86M17.06 19.86C15.5 19.86 14.25 18.58 14.25 17C14.25 16.74 14.29 16.5 14.36 16.25L17.84 19.73C17.59 19.81 17.34 19.86 17.06 19.86M22 12H15.2L13.7 10.5H22V12M17.06 13C19.23 13 21 14.79 21 17C21 17.25 20.97 17.5 20.93 17.73L19.84 16.64C19.68 15.34 18.66 14.32 17.38 14.17L16.29 13.09C16.54 13.03 16.8 13 17.06 13M12.2 9L7.72 4.5L8.43 2.68C8.63 2.17 9.19 1.89 9.72 2.04L9.77 2.05L12 2.79L14.22 2.05C14.75 1.88 15.32 2.14 15.54 2.63L15.56 2.68L18 9H12.2Z";
var mdiInfinity = "M18.6,6.62C21.58,6.62 24,9 24,12C24,14.96 21.58,17.37 18.6,17.37C17.15,17.37 15.8,16.81 14.78,15.8L12,13.34L9.17,15.85C8.2,16.82 6.84,17.38 5.4,17.38C2.42,17.38 0,14.96 0,12C0,9.04 2.42,6.62 5.4,6.62C6.84,6.62 8.2,7.18 9.22,8.2L12,10.66L14.83,8.15C15.8,7.18 17.16,6.62 18.6,6.62M7.8,14.39L10.5,12L7.84,9.65C7.16,8.97 6.31,8.62 5.4,8.62C3.53,8.62 2,10.13 2,12C2,13.87 3.53,15.38 5.4,15.38C6.31,15.38 7.16,15.03 7.8,14.39M16.2,9.61L13.5,12L16.16,14.35C16.84,15.03 17.7,15.38 18.6,15.38C20.47,15.38 22,13.87 22,12C22,10.13 20.47,8.62 18.6,8.62C17.69,8.62 16.84,8.97 16.2,9.61Z";
var mdiInformation = "M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiInformationOutline = "M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z";
var mdiInformationVariant = "M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z";
var mdiInstagram = "M7.8,2H16.2C19.4,2 22,4.6 22,7.8V16.2A5.8,5.8 0 0,1 16.2,22H7.8C4.6,22 2,19.4 2,16.2V7.8A5.8,5.8 0 0,1 7.8,2M7.6,4A3.6,3.6 0 0,0 4,7.6V16.4C4,18.39 5.61,20 7.6,20H16.4A3.6,3.6 0 0,0 20,16.4V7.6C20,5.61 18.39,4 16.4,4H7.6M17.25,5.5A1.25,1.25 0 0,1 18.5,6.75A1.25,1.25 0 0,1 17.25,8A1.25,1.25 0 0,1 16,6.75A1.25,1.25 0 0,1 17.25,5.5M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z";
var mdiInstrumentTriangle = "M11.5 2H10.5V6.2C10.4 6.3 10.3 6.3 10.2 6.5L2.1 20.7C1.8 21.3 2.2 22 2.9 22H16V20H4.8L11 9.2L16.7 19.2L18.4 18.2L11.8 6.4L11.5 6.1V2M21 6H20V18L19.5 22H21.5L21 18V6Z";
var mdiInvertColors = "M12,19.58V19.58C10.4,19.58 8.89,18.96 7.76,17.83C6.62,16.69 6,15.19 6,13.58C6,12 6.62,10.47 7.76,9.34L12,5.1M17.66,7.93L12,2.27V2.27L6.34,7.93C3.22,11.05 3.22,16.12 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C14.05,21.58 16.1,20.8 17.66,19.24C20.78,16.12 20.78,11.05 17.66,7.93Z";
var mdiInvertColorsOff = "M20.65,20.87L18.3,18.5L12,12.23L8.44,8.66L7,7.25L4.27,4.5L3,5.77L5.78,8.55C3.23,11.69 3.42,16.31 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C13.79,21.58 15.57,21 17.03,19.8L19.73,22.5L21,21.23L20.65,20.87M12,19.59C10.4,19.59 8.89,18.97 7.76,17.83C6.62,16.69 6,15.19 6,13.59C6,12.27 6.43,11 7.21,10L12,14.77V19.59M12,5.1V9.68L19.25,16.94C20.62,14 20.09,10.37 17.65,7.93L12,2.27L8.3,5.97L9.71,7.38L12,5.1Z";
var mdiIobroker = "M12 2C11.5 2 11 2.04 10.5 2.11V4.85C11 4.75 11.5 4.7 12 4.7C12.5 4.7 13 4.75 13.5 4.85V2.12C13 2.04 12.5 2 12 2M9.82 2.25C5.4 3.25 2.11 7.24 2.11 12C2.11 17.5 6.53 22 12 22C17.47 22 21.89 17.5 21.89 12C21.89 7.24 18.6 3.25 14.19 2.25V5.03C17.17 5.96 19.34 8.73 19.34 12C19.34 16 16.05 19.3 12 19.3C7.96 19.3 4.67 16 4.67 12C4.67 8.73 6.84 5.96 9.82 5.03M12 5.45C11.5 5.45 11 5.5 10.5 5.62V18.27C11 18.38 11.5 18.44 12 18.44C12.5 18.44 13 18.39 13.5 18.27V5.62C13 5.5 12.5 5.45 12 5.45Z";
var mdiIp = "M16,11H14V9H16V11M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M10,7H8V17H10V7M12,17H14V13H16A2,2 0 0,0 18,11V9A2,2 0 0,0 16,7H12V17Z";
var mdiIpNetwork = "M15,9H13V7H15V9M22,20V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7A2,2 0 0,1 5,15V5A2,2 0 0,1 7,3H17A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22M9,5H7V15H9V5M11,15H13V11H15A2,2 0 0,0 17,9V7A2,2 0 0,0 15,5H11V15Z";
var mdiIpNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M10,6H8V14H10V6M14,6H11V14H13V12H14A2,2 0 0,0 16,10V8A2,2 0 0,0 14,6M14,10H13V8H14V10Z";
var mdiIpod = "M7,2A2,2 0 0,0 5,4V20A2,2 0 0,0 7,22H17A2,2 0 0,0 19,20V4A2,2 0 0,0 17,2H7M7,4H17V10H7V4M12,12A4,4 0 0,1 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12M12,14A2,2 0 0,0 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16A2,2 0 0,0 12,14Z";
var mdiIslam = "M12.3,2C12.2,2 12.1,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22C15,22 16.7,21 18.5,19.5C13,21 8,17 8,12C8,7 13,3 18.5,4.5C16.86,2.86 14.62,1.96 12.3,2M16.8,6.2L15.3,9.7L11.6,10L14.5,12.5L13.6,16L16.8,14L20,16L19,12.5L22,10L18.3,9.7L16.8,6.2Z";
var mdiIsland = "M20 20C18.61 20 17.22 19.53 16 18.67C13.56 20.38 10.44 20.38 8 18.67C6.78 19.53 5.39 20 4 20H2V22H4C5.37 22 6.74 21.65 8 21C10.5 22.3 13.5 22.3 16 21C17.26 21.65 18.62 22 20 22H22V20H20M20.78 19H20C18.82 19 17.64 18.6 16.58 17.85L16 17.45L15.42 17.85C14.39 18.57 13.21 18.95 12 18.95C10.77 18.95 9.59 18.57 8.56 17.85L8 17.45L7.43 17.85C6.36 18.6 5.18 19 4 19H3.22C3.75 17.54 5.58 15 12 15C14 15 15 15.24 15 15.24C15.68 13.87 16.83 10.77 16 6.82L17.06 7.53C17.39 8.96 18 11.75 16.8 15.65C19.43 16.5 20.42 18 20.78 19M22 7.59C21.21 6.5 20 5.71 18.58 5.53C18.7 5.67 18.81 5.83 18.92 6C20.12 7.91 19.87 10.32 18.47 11.95C19.06 10.5 19 8.79 18.08 7.36C18 7.28 17.96 7.2 17.9 7.11C17.5 6.53 16.96 6.06 16.38 5.72C14.35 6.37 12.88 8.27 12.88 10.5C12.88 11.03 12.96 11.53 13.1 12C12.5 11.17 12.16 10.17 12.16 9.07C12.16 7.41 12.96 5.95 14.2 5.03C13.16 4.95 12.09 5.18 11.14 5.78C10.7 6.05 10.32 6.38 10 6.76C10.39 5.82 11.05 5 12 4.4C13.04 3.74 14.25 3.5 15.39 3.69C15.1 3.29 14.75 2.92 14.33 2.6C13.92 2.29 13.47 2.05 13 1.88C14 1.91 15.04 2.24 15.91 2.89C16.35 3.22 16.7 3.62 17 4.05C17.06 4.05 17.12 4.04 17.19 4.04C19.45 4.04 21.37 5.53 22 7.59Z";
var mdiIvBag = "M14 1H10C5 1 5 3 5 3V15C5 15 5 17 10 17V19H11V20C11 21.21 11.8 23 14 23H18V21H14C13.19 21 13 20.45 13 20V19H14V17C19 17 19 15 19 15V3C19 3 19 1 14 1M17 12H14V11H17V12M17 5H14V6H17V8H14V9H17V10H7V3.5C7.3 3.32 8.13 3 10 3H14C15.88 3 16.7 3.32 17 3.5V5Z";
var mdiJabber = "M5.23,5.72C4.61,5.55 5,3.19 5,3.17C5,3.19 12.58,-0.71 16.7,5.73C20.8,12.15 15.86,14.86 13.97,16.06C12.08,17.27 12.73,19.72 12.73,20.13C12.73,20.53 12.16,20.97 12,20.41C11.88,19.84 11.25,16.55 13.33,15.16C17.13,12.61 17.9,10.1 16,6.42C14.2,3 8.28,3.41 7.03,4.08C5.78,4.75 5.86,5.89 5.23,5.72M9.33,12.63L9.11,12.16C9.23,10.28 7.63,10.39 8.08,13.33C8.21,14.16 7.47,13.8 7.45,13.73C6.89,11.44 7.42,10.22 8.55,10.45C9.62,10.68 9.53,11.83 9.53,11.83C9.56,11.78 11,10.17 11.5,10.92C12.58,12.5 10.53,14.47 10.41,14.63C10.28,14.78 10.14,15.05 9.92,14.84C9.7,14.64 9.72,14.5 9.89,14.27C12.77,10 9.59,12.22 9.33,12.63M6.5,15.33V15.31C6.5,15.31 8,18.13 10.61,17.08C11,16.92 11.17,17.14 11.2,17.27C11.27,17.53 11.13,17.64 10.86,17.73C7.86,18.72 5.89,16.63 5.63,16.13C5.39,15.68 5.5,15.38 5.75,15.22C6,15.06 6.5,15.33 6.5,15.33M6,17.5C6,17.5 7.67,19.5 10.8,19C11.09,18.94 11.2,19.13 11.25,19.38C11.3,19.63 11.22,19.84 10.92,19.94C10.63,20.03 7.08,20.5 5.13,17.72C5,17.56 5.3,17.36 5.47,17.36C5.64,17.36 6.03,17.5 6,17.5M5.95,19.39C7.53,21.5 10.33,21.55 11.28,20.88C11.5,20.73 11.7,21.05 11.56,21.19C9.64,23.16 5.67,21 5.27,20.33C5.09,20.05 5.13,19.66 5.31,19.45C5.5,19.25 5.93,19.38 5.95,19.39Z";
var mdiJeepney = "M19,13V7H20V4H4V7H5V13H2C2,13.93 2.5,14.71 3.5,14.93V20A1,1 0 0,0 4.5,21H5.5A1,1 0 0,0 6.5,20V19H17.5V20A1,1 0 0,0 18.5,21H19.5A1,1 0 0,0 20.5,20V14.93C21.5,14.7 22,13.93 22,13H19M8,15A1.5,1.5 0 0,1 6.5,13.5A1.5,1.5 0 0,1 8,12A1.5,1.5 0 0,1 9.5,13.5A1.5,1.5 0 0,1 8,15M16,15A1.5,1.5 0 0,1 14.5,13.5A1.5,1.5 0 0,1 16,12A1.5,1.5 0 0,1 17.5,13.5A1.5,1.5 0 0,1 16,15M17.5,10.5C15.92,10.18 14.03,10 12,10C9.97,10 8,10.18 6.5,10.5V7H17.5V10.5Z";
var mdiJellyfish = "M19.5,14.5C18.92,14.43 18.43,14.92 18.5,15.5C18.5,16.17 17.5,16.17 17.5,15.5V13.2L19.2,12.7C19.92,12.36 20.41,11.68 20.5,10.9C20.5,5.5 16.7,2 12,2C7.3,2 3.5,5.5 3.5,10.9C3.56,11.7 4.06,12.4 4.8,12.7L6.5,13.2V15.5A0.5,0.5 0 0,1 6,16A0.5,0.5 0 0,1 5.5,15.5C5.57,14.92 5.08,14.43 4.5,14.5C3.92,14.43 3.43,14.92 3.5,15.5C3.44,16.91 4.59,18.06 6,18C7.41,18.06 8.56,16.91 8.5,15.5V13.7H9.5V19.4C9.5,20.07 8.5,20.07 8.5,19.4C8.57,18.82 8.08,18.33 7.5,18.4C6.92,18.33 6.43,18.82 6.5,19.4C6.38,20.84 7.55,22.07 9,22C10.41,22.06 11.56,20.91 11.5,19.5V14H12.5V19.5C12.44,20.91 13.59,22.06 15,22C16.41,22.06 17.56,20.91 17.5,19.5C17.5,18.17 15.5,18.17 15.5,19.5C15.5,20.17 14.5,20.17 14.5,19.5V13.8H15.5V15.6C15.5,16.96 16.63,18.06 18,18C19.41,18.06 20.56,16.91 20.5,15.5C20.57,14.92 20.08,14.43 19.5,14.5M10.6,4.7C9.09,5.03 7.79,5.97 7,7.3C6.83,7.5 6.5,7.57 6.3,7.4C6.08,7.23 6.04,6.92 6.2,6.7C7.16,5.19 8.67,4.12 10.4,3.7C10.67,3.68 10.91,3.85 11,4.1C11.06,4.37 10.88,4.65 10.6,4.7Z";
var mdiJellyfishOutline = "M12,4C15.8,4 18.5,6.8 18.5,10.8C14.31,12.39 9.69,12.39 5.5,10.8C5.5,6.8 8.2,4 12,4M12,2C7.3,2 3.5,5.5 3.5,10.9C3.56,11.7 4.06,12.4 4.8,12.7L6.5,13.2V15.5A0.5,0.5 0 0,1 6,16A0.5,0.5 0 0,1 5.5,15.5C5.57,14.92 5.08,14.43 4.5,14.5C3.92,14.43 3.43,14.92 3.5,15.5C3.44,16.86 4.54,18 5.9,18H6C7.41,18.06 8.56,16.91 8.5,15.5V13.7H9.5V19.4C9.5,20.07 8.5,20.07 8.5,19.4C8.57,18.82 8.08,18.33 7.5,18.4C6.92,18.33 6.43,18.82 6.5,19.4C6.39,20.8 7.5,22 8.9,22H9C10.41,22.06 11.56,20.91 11.5,19.5V14H12.5V19.5C12.44,20.91 13.59,22.06 15,22H15.1C16.47,22 17.56,20.86 17.5,19.5C17.5,18.17 15.5,18.17 15.5,19.5C15.5,20.17 14.5,20.17 14.5,19.5V13.8H15.5V15.6C15.5,16.96 16.63,18.06 18,18H18.1C19.47,18 20.56,16.86 20.5,15.5C20.5,14.17 18.5,14.17 18.5,15.5C18.5,16.17 17.5,16.17 17.5,15.5V13.2L19.2,12.7C19.92,12.36 20.41,11.68 20.5,10.9C20.5,5.5 16.7,2 12,2M12,6.2C10.53,6.6 9.24,7.53 8.4,8.8C8,9.33 7.2,8.73 7.6,8.2C8.6,6.73 10.09,5.67 11.8,5.2C12.08,5.14 12.35,5.32 12.4,5.6C12.5,5.9 12.3,6.1 12,6.2Z";
var mdiJira = "M11.53,2C11.53,4.4 13.5,6.35 15.88,6.35H17.66V8.05C17.66,10.45 19.6,12.39 22,12.4V2.84A0.84,0.84 0 0,0 21.16,2H11.53M6.77,6.8C6.78,9.19 8.72,11.13 11.11,11.14H12.91V12.86C12.92,15.25 14.86,17.19 17.25,17.2V7.63C17.24,7.17 16.88,6.81 16.42,6.8H6.77M2,11.6C2,14 3.95,15.94 6.35,15.94H8.13V17.66C8.14,20.05 10.08,22 12.47,22V12.43A0.84,0.84 0 0,0 11.63,11.59L2,11.6Z";
var mdiJquery = "M22.88,10.41C20.77,12.18 17.61,11.9 15.84,9.79C14.06,7.67 14.34,4.5 16.45,2.75L16.96,2.37C15.27,4.19 15.16,7.03 16.8,9C18.43,10.94 21.25,11.32 23.34,9.97L22.88,10.41M21.1,14.5C17.93,17.17 13.2,16.76 10.54,13.58C7.87,10.41 8.29,5.68 11.46,3L12.38,2.36C9.96,5.09 9.84,9.26 12.26,12.14C14.68,15 18.8,15.63 21.91,13.72L21.1,14.5M19.97,19.38C15.53,23.11 8.9,22.53 5.17,18.08C1.45,13.64 2.03,7 6.47,3.29L7.58,2.5C4.07,6.3 3.85,12.23 7.28,16.32C10.71,20.4 16.59,21.22 20.96,18.43L19.97,19.38Z";
var mdiJsfiddle = "M17.34 13.7C17.34 15 16.23 16.04 14.86 16.04C13.65 16.04 12.64 15 11.75 14.04L11.5 13.79C11.5 13.76 11.47 13.73 11.45 13.7C10.74 12.96 9.96 12.22 9.21 12.22C8.32 12.22 7.6 12.88 7.6 13.69C7.6 14.5 8.32 15.17 9.21 15.17C9.97 15.17 10.35 14.75 10.63 14.45L10.7 14.37C10.86 14.2 11.14 14.19 11.31 14.35C11.5 14.5 11.5 14.79 11.33 14.96L11.27 15.03C10.94 15.38 10.35 16.03 9.21 16.03C7.84 16.03 6.73 15 6.73 13.69C6.73 12.4 7.84 11.35 9.21 11.35C10.42 11.35 11.43 12.41 12.32 13.35L12.56 13.6C12.58 13.63 12.6 13.66 12.62 13.69C13.33 14.43 14.11 15.17 14.86 15.17C15.75 15.17 16.47 14.5 16.47 13.69C16.47 12.88 15.75 12.22 14.86 12.22C14.11 12.22 13.72 12.64 13.44 12.94L13.37 13C13.21 13.19 12.94 13.2 12.76 13.04C12.59 12.87 12.58 12.6 12.74 12.42L12.81 12.36C13.13 12 13.73 11.36 14.86 11.36C16.23 11.36 17.34 12.4 17.34 13.7M22 14.85C22 15.96 21.57 17 20.78 17.79C20 18.57 18.95 19 17.84 19H6.28C3.96 18.96 2.07 17.06 2.07 14.75C2.07 13.37 2.76 12.07 3.89 11.28C3.85 11.09 3.83 10.9 3.83 10.7C3.83 9.03 5.2 7.67 6.88 7.67C7.39 7.67 7.88 7.79 8.32 8.03C9.41 6.17 11.43 5 13.6 5C16.97 5 19.7 7.72 19.7 11.07L19.7 11.14C21.11 11.84 22 13.27 22 14.85M21.13 14.85C21.13 13.5 20.33 12.32 19.09 11.81C18.92 11.74 18.81 11.57 18.82 11.38L18.83 11.29C18.83 11.22 18.84 11.14 18.84 11.07C18.84 8.2 16.5 5.87 13.6 5.87C11.6 5.87 9.74 7.03 8.87 8.83C8.82 8.95 8.71 9.04 8.58 9.07C8.46 9.1 8.32 9.07 8.22 9C7.83 8.69 7.37 8.53 6.88 8.53C5.68 8.53 4.7 9.5 4.7 10.7C4.7 10.92 4.73 11.14 4.8 11.34C4.86 11.54 4.78 11.75 4.61 11.85C3.56 12.47 2.94 13.55 2.94 14.75C2.94 16.59 4.44 18.1 6.29 18.13H17.83C18.72 18.13 19.54 17.79 20.16 17.17C20.79 16.55 21.13 15.73 21.13 14.85Z";
var mdiJudaism = "M12,2L9.1,7H3.3L6.3,12L3.3,17H9.1L12,22L14.9,17H20.7L17.7,12L20.7,7H14.9L12,2M12,5L13.2,7H10.8L12,5M8.2,8.5L7.1,10.5L5.9,8.5H8.2M10,8.5H14L16,12L14,15.5H10L8,12L10,8.5M18,8.5L16.8,10.5L15.7,8.5H18M7.1,13.5L8.2,15.5H6L7.1,13.5M16.9,13.5L18.1,15.5H15.8L16.9,13.5M13.3,17L12,19L10.8,17H13.3Z";
var mdiJumpRope = "M21 4.5V10.5C21 11.2 20.5 11.9 19.8 12V17.3C19.8 18.6 19 21.1 16 21.1H14.5C14.9 20.7 15.3 20.2 15.5 19.6H16C18.1 19.6 18.2 17.7 18.2 17.4V12C17.5 11.9 17 11.3 17 10.5V4.5C17 3.7 17.7 3 18.5 3H19.5C20.3 3 21 3.7 21 4.5M14.8 18.2C14.8 19.7 13.6 21 12 21H8C5 21 4.2 18.5 4.2 17.2V12C3.5 11.9 3 11.2 3 10.5V4.5C3 3.7 3.7 3 4.5 3H5.5C6.3 3 7 3.7 7 4.5V10.5C7 11.2 6.5 11.9 5.8 12V17.3C5.8 17.7 5.9 19.5 8 19.5H9.6C9.4 19.1 9.3 18.7 9.3 18.3V8.3C9.3 6.8 10.5 5.5 12.1 5.5S14.8 6.7 14.8 8.3M13.2 8.2C13.2 7.6 12.7 7 12 7S10.8 7.6 10.8 8.2V18.2C10.8 18.9 11.4 19.4 12 19.4S13.2 18.8 13.2 18.2V8.2Z";
var mdiKabaddi = "M11.2 10.6C12.2 11.6 13.4 12.1 14.8 12.1L14.9 14.2C13 14.2 11.3 13.5 9.8 12.1L9.1 11.4L6.8 13.8L9 15.9V21.9H7V16.7L5.7 15.5V17.7L1.5 22L.1 20.6L3.7 17L2.5 13.5C2.3 12.9 2.6 12.4 3.1 12L6.4 8.7C6.8 8.2 7.3 8 7.8 8C8.3 8 8.6 8.1 8.9 8.3L11.2 10.6M24 11.9H22V8.5L20.2 7.8L21.1 12.2L22.1 17.4L23 21.8H20.9L19.1 13.8L17 15.8V21.8H15V14.3L17.1 12.3L16.5 9.3C15.9 9.9 15.2 10.5 14.4 10.9C13.5 10.8 12.6 10.4 11.9 9.7C13.5 9.4 14.6 8.6 15.3 7.4L16.3 5.8C16.9 4.8 17.8 4.5 18.9 5L24 7.2V11.9M11.4 4.4C12.5 4.4 13.4 5.3 13.4 6.4C13.4 7.5 12.5 8.4 11.4 8.4C10.3 8.4 9.4 7.5 9.4 6.4C9.4 5.3 10.3 4.4 11.4 4.4M16.5 .3C17.6 .3 18.5 1.2 18.5 2.3C18.5 3.4 17.6 4.3 16.5 4.3C15.4 4.3 14.5 3.4 14.5 2.3C14.5 1.2 15.4 .3 16.5 .3Z";
var mdiKangaroo = "M19.8 6.59L19 7.97V10.04L17.69 11.61L17.31 13.25L16 14L15.5 13.12L16.44 12.59L16.7 11.45L16.7 11.45L16.77 11.15L16.77 11.15V11.15L17.47 10.31C17.65 10.1 17.62 9.78 17.41 9.61C17.2 9.43 16.88 9.46 16.7 9.67L15.85 10.69L15.56 11.93C15.38 11.96 15.2 12 15 12C14.31 12 13.68 11.76 13.23 11.4C13.15 12.7 12.73 13.81 12.13 14.43L10.5 16.19L9.96 19.79L8.07 21L7.53 20.17L9.04 19.19L9.5 15.92L9.5 15.91L10 14.54C9.47 14.08 9.08 13.28 8.88 12.3L8.71 12.61C8.35 13.25 8 13.9 7.56 14.56C7.11 15.2 6.66 15.9 5.78 16.44C5.34 16.72 4.7 16.84 4.17 16.73C3.61 16.61 3.14 16.26 2.86 15.89C2.31 15.13 2.15 14.35 2 13.62L2.97 13.36C3.2 14 3.5 14.65 3.88 15C4.26 15.33 4.57 15.26 4.84 15C5.16 14.73 5.47 14.15 5.73 13.55C6 12.94 6.22 12.28 6.45 11.6C6.93 10.24 7.39 8.82 8.2 7.36C8.62 6.64 9.13 5.89 9.92 5.22C10.7 4.55 11.73 4 13 4S15.7 5.22 16.58 6.34C17 6.89 17.87 6.82 18.22 6.21L19.14 4.63C19 4.58 18.89 4.5 18.79 4.4C18.4 4 18.4 3.38 18.79 3L19.93 4.13C19.96 4.13 20 4.11 20 4.11C20.41 4.11 20.75 4.35 20.91 4.69L22 7L21 7.5L19.8 6.59Z";
var mdiKarate = "M19,1.27C18.04,0.72 16.82,1.04 16.27,2C15.71,2.95 16.04,4.18 17,4.73C17.95,5.28 19.17,4.96 19.73,4C20.28,3.04 19.95,1.82 19,1.27M21.27,9.34L18.7,13.79L16.96,12.79L18.69,9.79L17.14,8.5L14,13.92V22H12V13.39L2.47,7.89L3.47,6.16L11.27,10.66L13.67,6.5L7.28,4.17L8,2.29L14.73,4.74L15,4.84C15.39,5 15.76,5.15 16.12,5.35L16.96,5.84C17.31,6.04 17.65,6.28 17.96,6.54L18.19,6.74L21.27,9.34Z";
var mdiKeg = "M5,22V20H6V16H5V14H6V11H5V7H11V3H10V2H11L13,2H14V3H13V7H19V11H18V14H19V16H18V20H19V22H5M17,9A1,1 0 0,0 16,8H14A1,1 0 0,0 13,9A1,1 0 0,0 14,10H16A1,1 0 0,0 17,9Z";
var mdiKettle = "M12.5,3C7.81,3 4,5.69 4,9V9C4,10.19 4.5,11.34 5.44,12.33C4.53,13.5 4,14.96 4,16.5C4,17.64 4,18.83 4,20C4,21.11 4.89,22 6,22H19C20.11,22 21,21.11 21,20C21,18.85 21,17.61 21,16.5C21,15.28 20.66,14.07 20,13L22,11L19,8L16.9,10.1C15.58,9.38 14.05,9 12.5,9C10.65,9 8.95,9.53 7.55,10.41C7.19,9.97 7,9.5 7,9C7,7.21 9.46,5.75 12.5,5.75V5.75C13.93,5.75 15.3,6.08 16.33,6.67L18.35,4.65C16.77,3.59 14.68,3 12.5,3M12.5,11C12.84,11 13.17,11.04 13.5,11.09C10.39,11.57 8,14.25 8,17.5V20H6V17.5A6.5,6.5 0 0,1 12.5,11Z";
var mdiKettleAlert = "M9.5 3C4.8 3 1 5.7 1 9C1 10.2 1.5 11.3 2.4 12.3C1.5 13.5 1 15 1 16.5V20C1 21.1 1.9 22 3 22H16C17.1 22 18 21.1 18 20V16.5C18 15.3 17.7 14.1 17 13L19 11L16 8L13.9 10.1C12.6 9.4 11.1 9 9.5 9C7.7 9 5.9 9.5 4.6 10.4C4.2 10 4 9.5 4 9C4 7.2 6.5 5.8 9.5 5.8C10.9 5.8 12.3 6.1 13.3 6.7L15.3 4.7C13.8 3.6 11.7 3 9.5 3M9.5 11C9.8 11 10.2 11 10.5 11.1C7.4 11.6 5 14.2 5 17.5V20H3V17.5C3 13.9 5.9 11 9.5 11M21 13V7H23V13H21M21 17V15H23V17H21Z";
var mdiKettleAlertOutline = "M9.5 3C4.8 3 1 5.7 1 9C1 10.2 1.5 11.3 2.4 12.3C1.5 13.5 1 15 1 16.5V20C1 21.1 1.9 22 3 22H16C17.1 22 18 21.1 18 20V16.5C18 15.3 17.7 14.1 17 13L19 11L16 8L13.9 10.1C11 8.5 7.4 8.6 4.6 10.4C4.2 10 4 9.5 4 9C4 7.2 6.5 5.7 9.5 5.7C10.9 5.7 12.3 6.1 13.3 6.7L15.3 4.7C13.6 3.5 11.6 3 9.5 3M9.5 11C13 11 16 14 16 16.5V20H3V16.5C3 14 6 11 9.5 11M10 12.5C7 12.5 5 14 5 17V18H7V17C7 16 7 13.5 10 12.5M21 13V7H23V13H21M21 17V15H23V17H21Z";
var mdiKettleOff = "M22.1 21.5L2.4 1.7L1.1 3L4.7 6.6C4.3 7.3 4 8.1 4 9C4 10.2 4.5 11.3 5.4 12.3C4.5 13.5 4 15 4 16.5V20C4 21.1 4.9 22 6 22H19C19.3 22 19.6 21.9 19.9 21.8L20.8 22.7L22.1 21.5M8.2 10.1L7.6 10.4C7.2 10 7 9.5 7 9V8.9L8.2 10.1M8 17.5V20H6V17.5C6 14.9 7.5 12.7 9.7 11.6L10.5 12.4C9 13.6 8 15.4 8 17.5M16.9 10.1L19 8L22 11L20 13C20.7 14.1 21 15.3 21 16.5V17.8L12.2 9H12.5C14 9 15.6 9.4 16.9 10.1M9.5 6.3L7.4 4.2C8.8 3.5 10.6 3 12.5 3C14.7 3 16.8 3.6 18.3 4.7L16.3 6.7C15.3 6.1 13.9 5.8 12.5 5.8C11.4 5.8 10.4 5.9 9.5 6.3Z";
var mdiKettleOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L4.7 6.6C4.3 7.3 4 8.1 4 9C4 10.2 4.5 11.3 5.4 12.3C4.5 13.5 4 15 4 16.5V20C4 21.1 4.9 22 6 22H19C19.3 22 19.6 21.9 19.9 21.8L20.8 22.7L22.1 21.5M8.2 10.1L7.6 10.4C7.2 10 7 9.5 7 9V8.9L8.2 10.1M6 20V16.5C6 14.7 7.6 12.6 9.7 11.6L10.9 12.8C9.1 13.4 8 14.8 8 17V18H10V17C10 16.2 10 14.5 11.4 13.3L18.1 20H6M16.9 10.1L19 8L22 11L20 13C20.7 14.1 21 15.3 21 16.5V17.8L18.9 15.7C18.5 13.9 16.8 12.1 14.6 11.4L12.2 9C13.8 8.9 15.4 9.3 16.9 10.1M9.5 6.3L7.4 4.2C8.8 3.5 10.6 3 12.5 3C14.6 3 16.6 3.5 18.3 4.7L16.3 6.7C15.3 6.1 13.9 5.7 12.5 5.7C11.4 5.7 10.3 5.9 9.5 6.3Z";
var mdiKettleOutline = "M12.5 3C7.8 3 4 5.7 4 9C4 10.2 4.5 11.3 5.4 12.3A6.8 6.8 0 0 0 4 16.5V20C4 21.1 4.9 22 6 22H19A2 2 0 0 0 21 20V16.5C21 15.3 20.7 14.1 20 13L22 11L19 8L16.9 10.1A9.2 9.2 0 0 0 7.6 10.4A2 2 0 0 1 7 9C7 7.2 9.5 5.7 12.5 5.7C13.9 5.7 15.3 6.1 16.3 6.7L18.3 4.7A10 10 0 0 0 12.5 3M12.5 11C16 11 19 14 19 16.5V20H6V16.5C6 14 9 11 12.5 11M13 12.5C10 12.5 8 14 8 17V18H10V17C10 16 10 13.5 13 12.5Z";
var mdiKettlePourOver = "M10 4C9.4 4 9 4.4 9 5V6H14V5C14 4.4 13.6 4 13 4H10M3 7L4.1 14.1C4.2 14.8 4.5 15.5 5.1 16.1C5.5 16.6 6.2 16.9 7 17C7 17.6 7.4 18 8 18H16C16.6 18 17 17.6 17 17L15 11H17L20.3 16L22 15L18.7 10L20 9.2L19 7.5L16.4 9H15V7H8V11L7.2 16C6.5 15.9 6.1 15.7 5.8 15.4C5.4 15 5.2 14.5 5.1 13.9L4 7H3M4 19V21H20V19H4Z";
var mdiKettleSteam = "M19 11L16 8L13.9 10.1C12.58 9.38 11.05 9 9.5 9C7.65 9 5.95 9.53 4.55 10.41C4.19 9.97 4 9.5 4 9C4 7.21 6.46 5.75 9.5 5.75C10.93 5.75 12.3 6.08 13.33 6.67L15.35 4.65C13.77 3.59 11.68 3 9.5 3C4.81 3 1 5.69 1 9C1 10.19 1.5 11.34 2.44 12.33C1.53 13.5 1 14.96 1 16.5V20C1 21.11 1.89 22 3 22H16C17.11 22 18 21.11 18 20V16.5C18 15.28 17.66 14.07 17 13L19 11M5 17.5V20H3V17.5C3 13.91 5.91 11 9.5 11C9.84 11 10.17 11.04 10.5 11.09C7.39 11.57 5 14.25 5 17.5M23 7.3C23 8.93 21.91 10.6 20.38 10.97L19.71 10.29L19 9.6H19.75C20.75 9.6 21.5 8.22 21.5 7.2C21.5 6.18 20.65 5.14 19.65 5.14V3.64C21.5 3.64 23 5.45 23 7.3M17.65 6.73C17.03 6.12 16.65 5.28 16.65 4.35C16.65 2.5 18.15 1 20 1V2.5C19 2.5 18.15 3.33 18.15 4.35C18.15 5.37 19 6.2 20 6.2V7.7C19.18 7.7 18.42 7.95 17.79 8.38L16.72 7.31C17 7.09 17.32 6.89 17.65 6.73Z";
var mdiKettleSteamOutline = "M9.5 3C4.8 3 1 5.7 1 9C1 10.2 1.5 11.3 2.4 12.3C1.5 13.5 .985 15 1 16.5V20C1 21.1 1.9 22 3 22H16C17.11 22 18 21.11 18 20V16.5C18 15.3 17.7 14.1 17 13L19 11L16 8L13.9 10.1C10.97 8.5 7.42 8.63 4.6 10.4C4.22 10.03 4 9.53 4 9C4 7.2 6.5 5.7 9.5 5.7C10.9 5.7 12.3 6.1 13.3 6.7L15.3 4.7C13.59 3.55 11.56 2.96 9.5 3M9.5 11C13 11 16 14 16 16.5V20H3V16.5C3 14 6 11 9.5 11M10 12.5C7 12.5 5 14 5 17V18H7V17C7 16 7 13.5 10 12.5M23 7.3C23 8.93 21.91 10.6 20.38 10.97L19.71 10.29L19 9.6H19.75C20.75 9.6 21.5 8.22 21.5 7.2C21.5 6.18 20.65 5.14 19.65 5.14V3.64C21.5 3.64 23 5.45 23 7.3M17.65 6.73C17.03 6.12 16.65 5.28 16.65 4.35C16.65 2.5 18.15 1 20 1V2.5C19 2.5 18.15 3.33 18.15 4.35C18.15 5.37 19 6.2 20 6.2V7.7C19.18 7.7 18.42 7.95 17.79 8.38L16.72 7.31C17 7.09 17.32 6.89 17.65 6.73Z";
var mdiKettlebell = "M16.2 10.7L16.8 8.3C16.9 8 17.3 6.6 16.5 5.4C15.9 4.5 14.7 4 13 4H11C9.3 4 8.1 4.5 7.5 5.4C6.7 6.6 7.1 7.9 7.2 8.3L7.8 10.7C6.7 11.8 6 13.3 6 15C6 17.1 7.1 18.9 8.7 20H15.3C16.9 18.9 18 17.1 18 15C18 13.3 17.3 11.8 16.2 10.7M9.6 9.5L9.1 7.8V7.7C9.1 7.7 8.9 7 9.2 6.6C9.4 6.2 10 6 11 6H13C13.9 6 14.6 6.2 14.9 6.5C15.2 6.9 15 7.6 15 7.6L14.5 9.5C13.7 9.2 12.9 9 12 9C11.1 9 10.3 9.2 9.6 9.5Z";
var mdiKey = "M7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14M12.65,10C11.83,7.67 9.61,6 7,6A6,6 0 0,0 1,12A6,6 0 0,0 7,18C9.61,18 11.83,16.33 12.65,14H17V18H21V14H23V10H12.65Z";
var mdiKeyArrowRight = "M10.7 6C10.1 4.2 8.4 3 6.5 3C4 3 2 5 2 7.5S4 12 6.5 12C8.5 12 10.1 10.8 10.7 9H15V12H18V9H22V6H10.7M6.5 9C5.7 9 5 8.3 5 7.5S5.7 6 6.5 6 8 6.7 8 7.5 7.3 9 6.5 9M13 21V19H8V17H13V15L16 18L13 21";
var mdiKeyChain = "M12.67 13.67C12.2 14.13 11.63 14.5 11 14.73V23H8V21H5V18H8V14.72C6.26 14.1 5 12.46 5 10.5C5 8 7 6 9.5 6C9.54 6 9.57 6 9.6 6C9.13 6.95 8.92 8 9.03 9.08C8.44 9.28 8 9.84 8 10.5C8 11.33 8.67 12 9.5 12C9.73 12 9.95 11.94 10.15 11.85C10.79 12.69 11.67 13.32 12.67 13.67M20.73 19.44L17.97 20.6L17.19 18.76L14.43 19.93L13.26 17.16L16.03 16L14.76 13C12.91 13.08 11.11 12.05 10.35 10.25C9.39 7.96 10.47 5.32 12.76 4.35C13 4.25 13.26 4.18 13.5 4.12C12.84 2.87 11.5 2 10 2C7.79 2 6 3.79 6 6C6 6.08 6 6.16 6 6.24C5.7 6.5 5.4 6.82 5.15 7.15C5.06 6.78 5 6.4 5 6C5 3.24 7.24 1 10 1S15 3.24 15 6C15 7.42 14.4 8.67 13.45 9.57C13.87 10 14.5 10.13 15.08 9.88C15.85 9.56 16.2 8.68 15.88 7.92C15.85 7.83 15.8 7.74 15.74 7.66C15.9 7.13 16 6.58 16 6C16 5.37 15.9 4.76 15.72 4.19C17 4.55 18.1 5.44 18.65 6.76C19.41 8.56 18.89 10.57 17.5 11.81L20.73 19.44M13 8.6C13.37 8.19 13.65 7.71 13.82 7.18C13.28 7.45 12.97 8 13 8.6Z";
var mdiKeyChainVariant = "M12.66 13.67C12.32 14 11.93 14.29 11.5 14.5V21L9.5 23L7.5 21L9.5 19.29L8 18L9.5 16.71L7.5 15V14.5C6 13.77 5 12.26 5 10.5C5 8 7 6 9.5 6C9.54 6 9.58 6 9.61 6C9.59 6.07 9.54 6.12 9.5 6.18C9.23 6.79 9.08 7.43 9.03 8.08C8.43 8.28 8 8.84 8 9.5C8 10.33 8.67 11 9.5 11C9.53 11 9.57 11 9.6 11C10.24 12.25 11.34 13.2 12.66 13.67M16 6C16 5.37 15.9 4.75 15.72 4.18C17.06 4.56 18.21 5.55 18.73 6.96C19.33 8.62 18.89 10.39 17.75 11.59L20 17.68L18.78 20.25L16.22 19.05L17.5 16.76L15.66 16.06L16.63 14.34L14.16 13.41L14 12.95C12.36 12.77 10.88 11.7 10.27 10.04C9.42 7.71 10.63 5.12 12.96 4.27C13.14 4.21 13.33 4.17 13.5 4.13C12.84 2.87 11.53 2 10 2C7.79 2 6 3.79 6 6C6 6.09 6 6.17 6.03 6.26C5.7 6.53 5.4 6.82 5.15 7.15C5.06 6.78 5 6.4 5 6C5 3.24 7.24 1 10 1S15 3.24 15 6C15 7.16 14.6 8.21 13.94 9.06C16.08 8.88 16 6 16 6M12.81 8.1C12.87 8.27 12.96 8.41 13.06 8.54C13.62 7.88 13.97 7.04 14 6.11C13.89 6.13 13.8 6.15 13.7 6.18C12.92 6.47 12.5 7.33 12.81 8.1Z";
var mdiKeyChange = "M6.5,2C8.46,2 10.13,3.25 10.74,5H22V8H18V11H15V8H10.74C10.13,9.75 8.46,11 6.5,11C4,11 2,9 2,6.5C2,4 4,2 6.5,2M6.5,5A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 8,6.5A1.5,1.5 0 0,0 6.5,5M6.5,13C8.46,13 10.13,14.25 10.74,16H22V19H20V22H18V19H16V22H13V19H10.74C10.13,20.75 8.46,22 6.5,22C4,22 2,20 2,17.5C2,15 4,13 6.5,13M6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16Z";
var mdiKeyLink = "M6.5 3C4 3 2 5 2 7.5S4 12 6.5 12C8.46 12 10.13 10.75 10.74 9H15V12H18V9H22V6H10.74C10.13 4.25 8.46 3 6.5 3M6.5 6C7.33 6 8 6.67 8 7.5S7.33 9 6.5 9 5 8.33 5 7.5 5.67 6 6.5 6M10 14C8.39 14 6 15.07 6 18C6 20.94 8.39 22 10 22H11V20H10C9.67 20 8 19.9 8 18C8 16.17 9.54 16 10 16H11V14M13 14V16H14C14.33 16 16 16.1 16 18C16 19.83 14.46 20 14 20H13V22H14C15.61 22 18 20.94 18 18C18 15.07 15.61 14 14 14M9 17V19H15V17Z";
var mdiKeyMinus = "M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H16V19H8V17Z";
var mdiKeyOutline = "M22,19H16V15H13.32C12.18,17.42 9.72,19 7,19C3.14,19 0,15.86 0,12C0,8.14 3.14,5 7,5C9.72,5 12.17,6.58 13.32,9H24V15H22V19M18,17H20V13H22V11H11.94L11.71,10.33C11,8.34 9.11,7 7,7A5,5 0 0,0 2,12A5,5 0 0,0 7,17C9.11,17 11,15.66 11.71,13.67L11.94,13H18V17M7,15A3,3 0 0,1 4,12A3,3 0 0,1 7,9A3,3 0 0,1 10,12A3,3 0 0,1 7,15M7,11A1,1 0 0,0 6,12A1,1 0 0,0 7,13A1,1 0 0,0 8,12A1,1 0 0,0 7,11Z";
var mdiKeyPlus = "M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H11V14H13V17H16V19H13V22H11V19H8V17Z";
var mdiKeyRemove = "M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M14.59,14L16,15.41L13.41,18L16,20.59L14.59,22L12,19.41L9.41,22L8,20.59L10.59,18L8,15.41L9.41,14L12,16.59L14.59,14Z";
var mdiKeyStar = "M6.5 3C4 3 2 5 2 7.5S4 12 6.5 12C8.46 12 10.13 10.75 10.74 9H15V12H18V9H22V6H10.74C10.13 4.25 8.46 3 6.5 3M6.5 6C7.33 6 8 6.67 8 7.5S7.33 9 6.5 9 5 8.33 5 7.5 5.67 6 6.5 6M12 14L10.87 16.64L8 16.89L10.18 18.77L9.5 21.58L12 20.09L14.45 21.58L13.8 18.77L16 16.89L13.11 16.64Z";
var mdiKeyVariant = "M22,18V22H18V19H15V16H12L9.74,13.74C9.19,13.91 8.61,14 8,14A6,6 0 0,1 2,8A6,6 0 0,1 8,2A6,6 0 0,1 14,8C14,8.61 13.91,9.19 13.74,9.74L22,18M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z";
var mdiKeyWireless = "M4.93 5.92L6.34 7.33A8 8 0 0 1 17.66 7.33L19.07 5.92A10 10 0 0 0 4.93 5.92M7.76 8.75L9.17 10.16A4 4 0 0 1 14.83 10.16L16.24 8.75A6 6 0 0 0 7.76 8.75M10.76 15A4.5 4.5 0 1 0 10.76 18H15V21H18V18H22V15M6.5 18A1.5 1.5 0 1 1 8 16.5A1.5 1.5 0 0 1 6.5 18Z";
var mdiKeyboard = "M19,10H17V8H19M19,13H17V11H19M16,10H14V8H16M16,13H14V11H16M16,17H8V15H16M7,10H5V8H7M7,13H5V11H7M8,11H10V13H8M8,8H10V10H8M11,11H13V13H11M11,8H13V10H11M20,5H4C2.89,5 2,5.89 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7C22,5.89 21.1,5 20,5Z";
var mdiKeyboardBackspace = "M21,11H6.83L10.41,7.41L9,6L3,12L9,18L10.41,16.58L6.83,13H21V11Z";
var mdiKeyboardCaps = "M6,18H18V16H6M12,8.41L16.59,13L18,11.58L12,5.58L6,11.58L7.41,13L12,8.41Z";
var mdiKeyboardClose = "M12,23L16,19H8M19,8H17V6H19M19,11H17V9H19M16,8H14V6H16M16,11H14V9H16M16,15H8V13H16M7,8H5V6H7M7,11H5V9H7M8,9H10V11H8M8,6H10V8H8M11,9H13V11H11M11,6H13V8H11M20,3H4C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H20A2,2 0 0,0 22,15V5C22,3.89 21.1,3 20,3Z";
var mdiKeyboardEsc = "M1 7H7V9H3V11H7V13H3V15H7V17H1V7M11 7H15V9H11V11H13C14.11 11 15 11.9 15 13V15C15 16.11 14.11 17 13 17H9V15H13V13H11C9.9 13 9 12.11 9 11V9C9 7.9 9.9 7 11 7M19 7H21C22.11 7 23 7.9 23 9V10H21V9H19V15H21V14H23V15C23 16.11 22.11 17 21 17H19C17.9 17 17 16.11 17 15V9C17 7.9 17.9 7 19 7Z";
var mdiKeyboardF1 = "M6 7H12V9H8V11H11V13H8V17H6V7M14 7H18V17H16V9H14V7Z";
var mdiKeyboardF10 = "M2 7H8V9H4V11H7V13H4V17H2V7M10 7H14V17H12V9H10V7M18 7H20C21.11 7 22 7.9 22 9V15C22 16.11 21.11 17 20 17H18C16.9 17 16 16.11 16 15V9C16 7.9 16.9 7 18 7M18 9V15H20V9H18Z";
var mdiKeyboardF11 = "M3 7H9V9H5V11H8V13H5V17H3V7M11 7H15V17H13V9H11V7M17 7H21V17H19V9H17V7Z";
var mdiKeyboardF12 = "M2 7H8V9H4V11H7V13H4V17H2V7M16 7H20C21.11 7 22 7.9 22 9V11C22 12.11 21.11 13 20 13H18V15H22V17H16V13C16 11.9 16.9 11 18 11H20V9H16V7M10 7H14V17H12V9H10V7Z";
var mdiKeyboardF2 = "M5 7H11V9H7V11H10V13H7V17H5V7M13 7H17C18.11 7 19 7.9 19 9V11C19 12.11 18.11 13 17 13H15V15H19V17H13V13C13 11.9 13.9 11 15 11H17V9H13V7Z";
var mdiKeyboardF3 = "M5 7H11V9H7V11H10V13H7V17H5V7M19 15C19 16.11 18.11 17 17 17H13V15H17V13H15V11H17V9H13V7H17C18.1 7 19 7.89 19 9V10.5C19 11.33 18.33 12 17.5 12C18.33 12 19 12.67 19 13.5V15Z";
var mdiKeyboardF4 = "M5 7H11V9H7V11H10V13H7V17H5V7M13 7H15V11H17V7H19V17H17V13H13V7Z";
var mdiKeyboardF5 = "M5 7H11V9H7V11H10V13H7V17H5V7M13 7H19V9H15V11H17C18.11 11 19 11.9 19 13V15C19 16.11 18.11 17 17 17H13V15H17V13H13V7Z";
var mdiKeyboardF6 = "M5 7H11V9H7V11H10V13H7V17H5V7M15 7H19V9H15V11H17C18.11 11 19 11.9 19 13V15C19 16.11 18.11 17 17 17H15C13.9 17 13 16.11 13 15V9C13 7.9 13.9 7 15 7M15 13V15H17V13H15Z";
var mdiKeyboardF7 = "M5 7H11V9H7V11H10V13H7V17H5V7M15 17H13L17 9H13V7H19V9L15 17Z";
var mdiKeyboardF8 = "M5 7H11V9H7V11H10V13H7V17H5V7M15 13V15H17V13H15M15 9V11H17V9H15M15 17C13.9 17 13 16.11 13 15V13.5C13 12.67 13.67 12 14.5 12C13.67 12 13 11.33 13 10.5V9C13 7.9 13.9 7 15 7H17C18.1 7 19 7.89 19 9V10.5C19 11.33 18.33 12 17.5 12C18.33 12 19 12.67 19 13.5V15C19 16.11 18.11 17 17 17H15Z";
var mdiKeyboardF9 = "M5 7H11V9H7V11H10V13H7V17H5V7M17 17H13V15H17V13H15C13.9 13 13 12.11 13 11V9C13 7.9 13.9 7 15 7H17C18.11 7 19 7.9 19 9V15C19 16.11 18.11 17 17 17M17 11V9H15V11H17Z";
var mdiKeyboardOff = "M1,4.27L2.28,3L20,20.72L18.73,22L15.73,19H4C2.89,19 2,18.1 2,17V7C2,6.5 2.18,6.07 2.46,5.73L1,4.27M19,10V8H17V10H19M19,13V11H17V13H19M16,10V8H14V10H16M16,13V11H14V12.18L11.82,10H13V8H11V9.18L9.82,8L6.82,5H20A2,2 0 0,1 22,7V17C22,17.86 21.46,18.59 20.7,18.87L14.82,13H16M8,15V17H13.73L11.73,15H8M5,10H6.73L5,8.27V10M7,13V11H5V13H7M8,13H9.73L8,11.27V13Z";
var mdiKeyboardOffOutline = "M1,4.27L2.47,5.74C2.18,6.08 2,6.5 2,7V17A2,2 0 0,0 4,19H15.73L18.73,22L20,20.72L2.28,3L1,4.27M4,17V7.27L5,8.27V10H6.73L8,11.27V13H9.73L10.73,14H8V16H12.73L13.73,17H4M5,11H7V13H5V11M17,11H19V13H17V11M19,10H17V8H19V10M14,11H16V13H14.83L14,12.17V11M13,10H11.83L11,9.17V8H13V10M22,7V17C22,17.86 21.45,18.58 20.7,18.87L18.83,17H20V7H8.83L6.83,5H20A2,2 0 0,1 22,7M16,10H14V8H16V10Z";
var mdiKeyboardOutline = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H20V17H4V7M5,8V10H7V8H5M8,8V10H10V8H8M11,8V10H13V8H11M14,8V10H16V8H14M17,8V10H19V8H17M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M14,11V13H16V11H14M17,11V13H19V11H17M8,14V16H16V14H8Z";
var mdiKeyboardReturn = "M19,7V11H5.83L9.41,7.41L8,6L2,12L8,18L9.41,16.58L5.83,13H21V7H19Z";
var mdiKeyboardSettings = "M19,10H17V8H19M19,13H17V11H19M16,10H14V8H16M16,13H14V11H16M16,17H8V15H16M7,10H5V8H7M7,13H5V11H7M8,11H10V13H8M8,8H10V10H8M11,11H13V13H11M11,8H13V10H11M20,5H4A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z";
var mdiKeyboardSettingsOutline = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H20V17H4V7M5,8V10H7V8H5M8,8V10H10V8H8M11,8V10H13V8H11M14,8V10H16V8H14M17,8V10H19V8H17M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M14,11V13H16V11H14M17,11V13H19V11H17M8,14V16H16V14H8Z";
var mdiKeyboardSpace = "M3 15H5V19H19V15H21V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V15Z";
var mdiKeyboardTab = "M20,18H22V6H20M11.59,7.41L15.17,11H1V13H15.17L11.59,16.58L13,18L19,12L13,6L11.59,7.41Z";
var mdiKeyboardVariant = "M6,16H18V18H6V16M6,13V15H2V13H6M7,15V13H10V15H7M11,15V13H13V15H11M14,15V13H17V15H14M18,15V13H22V15H18M2,10H5V12H2V10M19,12V10H22V12H19M18,12H16V10H18V12M8,12H6V10H8V12M12,12H9V10H12V12M15,12H13V10H15V12M2,9V7H4V9H2M5,9V7H7V9H5M8,9V7H10V9H8M11,9V7H13V9H11M14,9V7H16V9H14M17,9V7H22V9H17Z";
var mdiKhanda = "M16 20C19.72 18 22 15.27 22 12C22 9.34 20.46 6.9 17.89 5H17.82C19 6.35 19.68 8.09 19.68 10C19.68 13 18 15 15.5 16.83C15.5 16.84 14.38 17.54 13 18.41V17.33L15 16C15 16 14.8 15.4 14.58 14.46C16.6 13.58 18 11.69 18 9.5C18 7.34 16.64 5.47 14.65 4.57C14.84 3.63 15 3 15 3L12 1L9 3C9 3 9.16 3.63 9.35 4.57C7.37 5.47 6 7.34 6 9.5C6 11.69 7.4 13.58 9.42 14.46C9.2 15.4 9 16 9 16L11 17.33V18.41C9.62 17.54 8.5 16.84 8.5 16.83C6 15 4.32 13 4.32 10C4.32 8.09 5 6.35 6.18 5H6.12C3.54 6.9 2 9.34 2 12C2 15.27 4.29 18 8 20L9 18.5L10.92 19.73L7.34 22L8 23L11 21.07V23H13V21.07L16 23L16.66 22L13.08 19.73L15 18.5L16 20M16.75 9.5C16.75 11.09 15.76 12.46 14.31 13.19C14.14 12.23 14 11.12 14 10C14 8.67 14.2 7.15 14.42 5.86C15.81 6.6 16.75 7.95 16.75 9.5M7.25 9.5C7.25 7.95 8.19 6.6 9.59 5.86C9.8 7.15 10 8.67 10 10C10 11.12 9.86 12.23 9.69 13.19C8.24 12.46 7.25 11.09 7.25 9.5Z";
var mdiKickstarter = "M19.3 10.2L17.5 12L19.3 13.8C21.19 15.67 21.19 18.72 19.3 20.59C17.42 22.46 14.35 22.46 12.47 20.59L11.8 19.93C10.93 21.19 9.5 22 7.83 22C5.16 22 3 19.85 3 17.2V6.8C3 4.15 5.16 2 7.83 2C9.5 2 10.93 2.82 11.8 4.07L12.47 3.41C14.35 1.54 17.42 1.54 19.3 3.41C21.19 5.28 21.19 8.33 19.3 10.2Z";
var mdiKlingon = "M4.79 21.5L4.71 21.24C4.53 20.65 4.47 20.08 4.5 19.4C4.6 18.17 5.14 17.31 5.82 16.59C5.64 16 5.53 15.39 5.53 14.74C5.53 13 6.26 11.44 7.45 10.3C8.33 9.46 9.46 8.86 10.71 8.6C11.37 6.23 11.8 3.8 12 1.5C12.24 3.5 12.65 6.12 13.3 8.58C14.6 8.82 15.76 9.43 16.67 10.3C17.85 11.44 18.59 13 18.59 14.74C18.59 15.35 18.5 15.93 18.33 16.5C19.21 16.92 20.2 17.17 21.5 17.29L21.44 17.44C21.32 17.77 21 18 20.71 18.18L20.69 18.19C20.13 18.57 19.18 19 17.85 19C17.7 19 17.56 19 17.41 19C17.23 19 17.06 18.97 16.9 18.95C16.83 19 16.75 19.1 16.67 19.18C15.5 20.31 13.86 21 12.06 21C10.27 21 8.64 20.31 7.46 19.18C7.42 19.14 7.38 19.1 7.34 19.06C6.34 19.59 5.54 20.33 4.94 21.27L4.8 21.5M6.5 15.94C6.65 15.82 8.2 14.5 8.63 13.78L8.73 13.61C9.65 15 10.4 16.28 11.43 18.08L11.22 18.09C10.08 18.16 9.05 18.37 8.15 18.7C9.17 19.62 10.55 20.19 12.06 20.19C13.54 20.19 14.88 19.65 15.89 18.77C15.64 18.72 15.39 18.65 15.15 18.59C14.38 18.41 13.65 18.22 12.81 18.19L12.62 18.18L12.7 18C13.1 17.2 14.8 14.41 15.23 13.63L15.34 13.81C16 14.77 16.73 15.5 17.58 16.07C17.69 15.64 17.75 15.2 17.75 14.75C17.75 13.25 17.11 11.89 16.09 10.9C15.4 10.24 14.53 9.74 13.55 9.5C13.85 10.5 14.2 11.5 14.59 12.35L14.62 12.4L14.59 12.46C14.2 13.22 13.76 13.95 13.33 14.66C12.94 15.3 12.54 15.96 12.18 16.64L12.08 16.83L11.96 16.65C11.39 15.82 9.75 13.06 9.41 12.5C9.81 11.5 10.15 10.5 10.45 9.5C9.5 9.78 8.7 10.26 8.03 10.9C7 11.88 6.37 13.25 6.37 14.74C6.37 15.16 6.42 15.56 6.5 15.95";
var mdiKnife = "M20.62,2C23.97,7.61 12.47,20.15 12.47,20.15L9.6,17.28L4.91,22L2.77,19.86L20.62,2Z";
var mdiKnifeMilitary = "M22,2L17.39,3.75L10.46,10.68L14,14.22L20.92,7.29C22.43,5.78 22,2 22,2M8.33,10L6.92,11.39L8.33,12.8L2.68,18.46L6.21,22L11.87,16.34L13.28,17.76L14.7,16.34L8.33,10Z";
var mdiKoala = "M19 3C18.1 3 15.5 3 14.3 6.1C13.9 6 13.4 6 13 6H11C10.6 6 10.1 6 9.7 6.1C8.5 3 5.9 3 5 3C4 3 1 4 1 9C1 12.6 3.5 13.6 5 13.9V15C5 18.3 7.7 21 11 21H13C16.3 21 19 18.3 19 15V13.9C20.5 13.6 23 12.6 23 9C23 4 20 3 19 3M5 12V12.4C2.9 11.8 3.3 9.5 4.3 8.7C4 8.3 3 9 3 8.6C3 8.1 4.8 7.4 5.1 7.3C4.8 6.8 3.6 7 3.6 6.6C3.6 6.3 4.8 5.8 5.8 6C6.3 6.1 6.9 6.3 7.4 6.7C6 8 5 9.8 5 12M8.5 15C6.5 15 6.5 12 8.5 12C10.5 12 10.5 15 8.5 15M12.5 18H11.5C10.8 18 10.3 17.3 10.6 16.7L11.3 13.7C11.4 13.3 11.8 13.1 12.1 13C12.4 13 12.7 13.2 12.9 13.7L13.6 16.7C13.7 17.3 13.2 18 12.5 18M15.5 15C13.5 15 13.5 12 15.5 12C17.5 12 17.5 15 15.5 15M19.7 8.6C20.7 9.4 21.1 11.7 19 12.3C19.1 10.1 18.1 8 16.6 6.7C17.1 6.3 17.7 6.1 18.2 6C19.2 5.8 20.4 6.2 20.4 6.6C20.4 7 19.2 6.8 18.9 7.2C19.2 7.4 21 8.1 21 8.6C21 9 20.1 8.3 19.7 8.6Z";
var mdiKodi = "M12.03,1C11.82,1 11.6,1.11 11.41,1.31C10.56,2.16 9.72,3 8.88,3.84C8.66,4.06 8.6,4.18 8.38,4.38C8.09,4.62 7.96,4.91 7.97,5.28C8,6.57 8,7.84 8,9.13C8,10.46 8,11.82 8,13.16C8,13.26 8,13.34 8.03,13.44C8.11,13.75 8.31,13.82 8.53,13.59C9.73,12.39 10.8,11.3 12,10.09C13.36,8.73 14.73,7.37 16.09,6C16.5,5.6 16.5,5.15 16.09,4.75C14.94,3.6 13.77,2.47 12.63,1.31C12.43,1.11 12.24,1 12.03,1M18.66,7.66C18.45,7.66 18.25,7.75 18.06,7.94C16.91,9.1 15.75,10.24 14.59,11.41C14.2,11.8 14.2,12.23 14.59,12.63C15.74,13.78 16.88,14.94 18.03,16.09C18.43,16.5 18.85,16.5 19.25,16.09C20.36,15 21.5,13.87 22.59,12.75C22.76,12.58 22.93,12.42 23,12.19V11.88C22.93,11.64 22.76,11.5 22.59,11.31C21.47,10.19 20.37,9.06 19.25,7.94C19.06,7.75 18.86,7.66 18.66,7.66M4.78,8.09C4.65,8.04 4.58,8.14 4.5,8.22C3.35,9.39 2.34,10.43 1.19,11.59C0.93,11.86 0.93,12.24 1.19,12.5C1.81,13.13 2.44,13.75 3.06,14.38C3.6,14.92 4,15.33 4.56,15.88C4.72,16.03 4.86,16 4.94,15.81C5,15.71 5,15.58 5,15.47C5,14.29 5,13.37 5,12.19C5,11 5,9.81 5,8.63C5,8.55 5,8.45 4.97,8.38C4.95,8.25 4.9,8.14 4.78,8.09M12.09,14.25C11.89,14.25 11.66,14.34 11.47,14.53C10.32,15.69 9.18,16.87 8.03,18.03C7.63,18.43 7.63,18.85 8.03,19.25C9.14,20.37 10.26,21.47 11.38,22.59C11.54,22.76 11.71,22.93 11.94,23H12.22C12.44,22.94 12.62,22.79 12.78,22.63C13.9,21.5 15.03,20.38 16.16,19.25C16.55,18.85 16.5,18.4 16.13,18C14.97,16.84 13.84,15.69 12.69,14.53C12.5,14.34 12.3,14.25 12.09,14.25Z";
var mdiKubernetes = "M13.95 13.5H13.72C13.54 13.61 13.46 13.82 13.54 14L14.4 16.11C15.23 15.58 15.86 14.79 16.19 13.86L13.96 13.5H13.95M10.5 13.79C10.44 13.62 10.29 13.5 10.12 13.5H10.04L7.82 13.87C8.15 14.79 8.78 15.57 9.61 16.1L10.46 14.03V14C10.5 13.95 10.5 13.86 10.5 13.79M12.33 14.6C12.23 14.42 12 14.35 11.82 14.45C11.75 14.5 11.7 14.53 11.67 14.6H11.66L10.57 16.57C11.35 16.83 12.19 16.88 13 16.69C13.14 16.66 13.29 16.62 13.43 16.57L12.34 14.6H12.33M15.78 10.03L14.1 11.5L14.11 11.53C13.95 11.67 13.93 11.91 14.07 12.06C14.12 12.12 14.18 12.16 14.25 12.18L14.26 12.19L16.43 12.81C16.5 11.84 16.29 10.86 15.78 10.03M12.67 10.19C12.68 10.4 12.85 10.56 13.06 10.55C13.14 10.55 13.21 10.53 13.27 10.5H13.28L15.11 9.19C14.41 8.5 13.5 8.07 12.54 7.95L12.67 10.19M10.73 10.5C10.9 10.61 11.13 10.58 11.25 10.41C11.3 10.35 11.32 10.28 11.33 10.2H11.34L11.46 7.95C11.31 7.97 11.16 8 11 8.03C10.2 8.21 9.46 8.61 8.88 9.19L10.72 10.5H10.73M9.74 12.19C9.94 12.14 10.06 11.93 10 11.73C10 11.65 9.95 11.59 9.89 11.54V11.53L8.21 10C7.69 10.86 7.47 11.84 7.58 12.82L9.74 12.2V12.19M11.38 12.85L12 13.15L12.62 12.85L12.77 12.18L12.34 11.65H11.65L11.22 12.18L11.38 12.85M22.27 14.17L20.5 6.5C20.41 6.08 20.13 5.74 19.76 5.56L12.59 2.13C12.22 1.96 11.78 1.96 11.4 2.13L4.24 5.56C3.87 5.74 3.59 6.08 3.5 6.5L1.73 14.17C1.68 14.37 1.68 14.57 1.73 14.76C1.74 14.82 1.76 14.88 1.78 14.94C1.81 15.03 1.86 15.13 1.91 15.21C1.94 15.25 1.96 15.29 2 15.32L6.95 21.5C6.97 21.5 7 21.54 7 21.56C7.1 21.65 7.19 21.72 7.28 21.78C7.4 21.86 7.54 21.92 7.68 21.95C7.79 22 7.91 22 8 22H16.12C16.19 22 16.26 21.97 16.32 21.95C16.37 21.94 16.42 21.92 16.46 21.91C16.5 21.89 16.53 21.88 16.57 21.86C16.62 21.84 16.67 21.81 16.72 21.78C16.84 21.7 16.95 21.6 17.05 21.5L17.2 21.3L22 15.32C22.1 15.2 22.17 15.07 22.22 14.94C22.24 14.88 22.26 14.82 22.27 14.76C22.32 14.57 22.32 14.36 22.27 14.17M14.84 17.16C14.86 17.22 14.88 17.28 14.91 17.33C14.87 17.41 14.85 17.5 14.88 17.59C15 17.83 15.11 18.05 15.26 18.27C15.34 18.38 15.42 18.5 15.5 18.61C15.5 18.64 15.53 18.69 15.54 18.73C15.66 18.93 15.6 19.19 15.39 19.32S14.92 19.37 14.8 19.17C14.79 19.14 14.78 19.12 14.77 19.09C14.75 19.06 14.73 19 14.71 19C14.66 18.85 14.62 18.72 14.59 18.59C14.5 18.34 14.42 18.1 14.29 17.87C14.24 17.8 14.16 17.75 14.08 17.73L14 17.57C12.71 18.05 11.3 18.05 10.03 17.56L9.93 17.74C9.86 17.75 9.79 17.78 9.74 17.83C9.6 18.07 9.5 18.32 9.41 18.6C9.38 18.73 9.34 18.86 9.29 19C9.27 19 9.25 19.07 9.23 19.1C9.15 19.32 8.91 19.44 8.68 19.36C8.46 19.28 8.34 19.04 8.42 18.81C8.43 18.78 8.45 18.76 8.46 18.73C8.5 18.7 8.5 18.65 8.5 18.62C8.59 18.5 8.66 18.39 8.74 18.27C8.9 18.06 9.03 17.82 9.13 17.58C9.14 17.5 9.13 17.41 9.1 17.33L9.17 17.15C8 16.45 7.12 15.36 6.7 14.06L6.5 14.09C6.44 14.04 6.35 14 6.27 14C6 14.05 5.76 14.13 5.5 14.22C5.39 14.28 5.26 14.33 5.13 14.37C5.1 14.38 5.06 14.39 5 14.4C4.78 14.47 4.54 14.35 4.46 14.13C4.39 13.9 4.5 13.66 4.74 13.58C4.76 13.58 4.79 13.57 4.82 13.57V13.56H4.83L4.94 13.54C5.08 13.5 5.22 13.5 5.35 13.5C5.61 13.5 5.87 13.44 6.12 13.38C6.2 13.33 6.26 13.27 6.31 13.19L6.5 13.14C6.29 11.78 6.6 10.41 7.36 9.27L7.22 9.15C7.22 9.06 7.19 8.97 7.14 8.9C6.94 8.73 6.73 8.58 6.5 8.45C6.38 8.39 6.26 8.32 6.14 8.24C6.12 8.22 6.08 8.19 6.06 8.17L6.05 8.16C5.85 8 5.8 7.74 5.94 7.53C6.03 7.43 6.15 7.38 6.29 7.38C6.4 7.39 6.5 7.43 6.59 7.5L6.68 7.57C6.78 7.66 6.87 7.77 6.96 7.87C7.14 8.06 7.33 8.24 7.54 8.39C7.62 8.43 7.71 8.44 7.8 8.42L7.95 8.53C8.7 7.73 9.68 7.17 10.75 6.93C11 6.87 11.27 6.83 11.53 6.81L11.54 6.63C11.61 6.57 11.65 6.5 11.68 6.4C11.69 6.14 11.67 5.88 11.63 5.63C11.6 5.5 11.58 5.36 11.57 5.22V5.1C11.55 4.86 11.72 4.65 11.96 4.62S12.4 4.77 12.43 5V5.22C12.42 5.36 12.4 5.5 12.37 5.63C12.33 5.88 12.31 6.14 12.32 6.4C12.34 6.5 12.39 6.57 12.46 6.62L12.47 6.81C13.83 6.93 15.09 7.54 16.03 8.53L16.19 8.41C16.28 8.43 16.37 8.42 16.45 8.38C16.66 8.23 16.86 8.05 17.03 7.86C17.12 7.76 17.21 7.66 17.31 7.56C17.34 7.54 17.38 7.5 17.41 7.5C17.58 7.32 17.85 7.32 18 7.5C18.19 7.66 18.18 7.93 18 8.1C18 8.12 17.97 8.14 17.94 8.16C17.92 8.18 17.88 8.21 17.85 8.23C17.74 8.31 17.62 8.38 17.5 8.44C17.27 8.57 17.05 8.72 16.86 8.89C16.8 8.96 16.77 9.04 16.78 9.13L16.62 9.27C17.39 10.4 17.7 11.78 17.5 13.13L17.69 13.18C17.73 13.26 17.8 13.32 17.88 13.36C18.13 13.43 18.39 13.47 18.65 13.5H19.06C19.09 13.53 19.14 13.54 19.18 13.55C19.42 13.58 19.58 13.8 19.55 14.04C19.5 14.27 19.31 14.44 19.07 14.41C19.04 14.4 19 14.4 19 14.39V14.38C18.94 14.38 18.9 14.37 18.86 14.36C18.73 14.32 18.61 14.27 18.5 14.21C18.24 14.11 18 14.04 17.73 14C17.64 14 17.56 14 17.5 14.08C17.43 14.07 17.37 14.06 17.31 14.05C16.9 15.36 16 16.46 14.84 17.16Z";
var mdiLabel = "M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z";
var mdiLabelMultiple = "M4 19H13L11 21H4C3.5 21 2.97 20.79 2.59 20.41C2.21 20.03 2 19.5 2 19V9H4V19M17.63 5.84C17.27 5.33 16.67 5 16 5H8C6.9 5 6 5.9 6 7V15C6 16.1 6.9 17 8 17H16C16.67 17 17.27 16.66 17.63 16.15L22 11L17.63 5.84Z";
var mdiLabelMultipleOutline = "M4 18H13L11 20H4C3.5 20 2.97 19.79 2.59 19.41C2.21 19.03 2 18.5 2 18V8H4V18M17.63 4.84C17.27 4.33 16.67 4 16 4H8C6.9 4 6 4.9 6 6V14C6 15.1 6.9 16 8 16H16C16.67 16 17.27 15.66 17.63 15.15L22 10L17.63 4.84M16 14H8V6H16L19.55 10Z";
var mdiLabelOff = "M2,4.27L3.28,3L20,19.72L18.73,21L16.63,18.9C16.43,18.96 16.22,19 16,19H5A2,2 0 0,1 3,17V7C3,6.5 3.17,6.07 3.46,5.73L2,4.27M17.63,5.84L22,12L19,16.2L7.83,5H16C16.67,5 17.27,5.33 17.63,5.84Z";
var mdiLabelOffOutline = "M2,4.27L3.28,3L20,19.72L18.73,21L16.63,18.9C16.43,18.96 16.22,19 16,19H5A2,2 0 0,1 3,17V7C3,6.5 3.17,6.07 3.46,5.73L2,4.27M5,17H14.73L5,7.27V17M19.55,12L16,7H9.82L7.83,5H16C16.67,5 17.27,5.33 17.63,5.84L22,12L19,16.2L17.59,14.76L19.55,12Z";
var mdiLabelOutline = "M16,17H5V7H16L19.55,12M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z";
var mdiLabelPercent = "M17.63 5.84C17.27 5.33 16.67 5 16 5H5C3.9 5 3 5.9 3 7V17C3 18.11 3.9 19 5 19H16C16.67 19 17.27 18.66 17.63 18.15L22 12L17.63 5.84M8.45 8.03C9.23 8.03 9.87 8.67 9.87 9.45S9.23 10.87 8.45 10.87 7.03 10.23 7.03 9.45 7.67 8.03 8.45 8.03M13.55 15.97C12.77 15.97 12.13 15.33 12.13 14.55S12.77 13.13 13.55 13.13 14.97 13.77 14.97 14.55 14.33 15.97 13.55 15.97M8.2 16L7 14.8L13.8 8L15 9.2L8.2 16Z";
var mdiLabelPercentOutline = "M16 17H5V7H16L19.55 12M17.63 5.84C17.27 5.33 16.67 5 16 5H5C3.9 5 3 5.9 3 7V17C3 18.11 3.9 19 5 19H16C16.67 19 17.27 18.66 17.63 18.15L22 12L17.63 5.84M13.8 8L15 9.2L8.2 16L7 14.8M8.45 8.03C9.23 8.03 9.87 8.67 9.87 9.45S9.23 10.87 8.45 10.87 7.03 10.23 7.03 9.45 7.67 8.03 8.45 8.03M13.55 13.13C14.33 13.13 14.97 13.77 14.97 14.55C14.97 15.33 14.33 15.97 13.55 15.97C12.77 15.97 12.13 15.33 12.13 14.55C12.13 13.77 12.77 13.13 13.55 13.13Z";
var mdiLabelVariant = "M3.5,19L8.34,12L3.5,5H14.5C15.17,5 15.72,5.3 16.13,5.86L20.5,12L16.13,18.14C15.72,18.7 15.17,19 14.5,19H3.5Z";
var mdiLabelVariantOutline = "M6.5,17H15L18.5,12L15,7H6.5L10,12L6.5,17M15,19H3L7.5,12L3,5H15C15.69,5 16.23,5.3 16.64,5.86L21,12L16.64,18.14C16.23,18.7 15.69,19 15,19Z";
var mdiLadder = "M14 1V3H10V1H8V22H10V20H14V22H16V1H14M14 5V8H10V5H14M14 10V13H10V10H14M10 18V15H14V18H10Z";
var mdiLadybug = "M12,5C12.74,5 13.47,5.1 14.15,5.29L15.78,2.46C16.06,2 16.67,1.82 17.15,2.1C17.63,2.37 17.79,3 17.5,3.46L16,6.07C17.22,6.78 18.23,7.79 18.93,9H5.07C5.77,7.79 6.78,6.78 8,6.07L6.5,3.46C6.21,3 6.37,2.37 6.85,2.1C7.33,1.82 7.94,2 8.22,2.46L9.85,5.29C10.53,5.1 11.26,5 12,5M20,13C20,17.17 16.82,20.59 12.75,20.97V10.5H19.6C19.86,11.29 20,12.13 20,13M4,13C4,12.13 4.14,11.29 4.4,10.5H11.25V20.97C7.18,20.59 4,17.17 4,13Z";
var mdiLambda = "M6,20L10.16,7.91L9.34,6H8V4H10C10.42,4 10.78,4.26 10.93,4.63L16.66,18H18V20H16C15.57,20 15.21,19.73 15.07,19.36L11.33,10.65L8.12,20H6Z";
var mdiLamp = "M8,2H16L20,14H4L8,2M11,15H13V20H18V22H6V20H11V15Z";
var mdiLamps = "M10 2L12 9H2L4 2M6 10H8V20H11V22H3V20H6V10M20 8L22 15H12L14 8M16 16H18V20H21V22H13V20H16V16Z";
var mdiLan = "M10,2C8.89,2 8,2.89 8,4V7C8,8.11 8.89,9 10,9H11V11H2V13H6V15H5C3.89,15 3,15.89 3,17V20C3,21.11 3.89,22 5,22H9C10.11,22 11,21.11 11,20V17C11,15.89 10.11,15 9,15H8V13H16V15H15C13.89,15 13,15.89 13,17V20C13,21.11 13.89,22 15,22H19C20.11,22 21,21.11 21,20V17C21,15.89 20.11,15 19,15H18V13H22V11H13V9H14C15.11,9 16,8.11 16,7V4C16,2.89 15.11,2 14,2H10M10,4H14V7H10V4M5,17H9V20H5V17M15,17H19V20H15V17Z";
var mdiLanCheck = "M4 1C2.89 1 2 1.89 2 3V7C2 8.11 2.89 9 4 9H1V11H13V9H10C11.11 9 12 8.11 12 7V3C12 1.89 11.11 1 10 1H4M4 3H10V7H4V3M14 13C12.89 13 12 13.89 12 15V19C12 20.11 12.89 21 14 21H11V23H23V21H20C21.11 21 22 20.11 22 19V15C22 13.89 21.11 13 20 13H14M14 15H20V19H14V15M5.5 20.5L10.5 15.5L9 14L5.5 17.5L3.5 15.5L2 17L5.5 20.5Z";
var mdiLanConnect = "M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,13V18L3,20H10V18H5V13H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M14,15H20V19H14V15Z";
var mdiLanDisconnect = "M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3.88,13.46L2.46,14.88L4.59,17L2.46,19.12L3.88,20.54L6,18.41L8.12,20.54L9.54,19.12L7.41,17L9.54,14.88L8.12,13.46L6,15.59L3.88,13.46M14,15H20V19H14V15Z";
var mdiLanPending = "M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,12V14H5V12H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3,15V17H5V15H3M14,15H20V19H14V15M3,18V20H5V18H3M6,18V20H8V18H6M9,18V20H11V18H9Z";
var mdiLanguageC = "M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z";
var mdiLanguageCpp = "M10.5,15.97L10.91,18.41C10.65,18.55 10.23,18.68 9.67,18.8C9.1,18.93 8.43,19 7.66,19C5.45,18.96 3.79,18.3 2.68,17.04C1.56,15.77 1,14.16 1,12.21C1.05,9.9 1.72,8.13 3,6.89C4.32,5.64 5.96,5 7.94,5C8.69,5 9.34,5.07 9.88,5.19C10.42,5.31 10.82,5.44 11.08,5.59L10.5,8.08L9.44,7.74C9.04,7.64 8.58,7.59 8.05,7.59C6.89,7.58 5.93,7.95 5.18,8.69C4.42,9.42 4.03,10.54 4,12.03C4,13.39 4.37,14.45 5.08,15.23C5.79,16 6.79,16.4 8.07,16.41L9.4,16.29C9.83,16.21 10.19,16.1 10.5,15.97M11,11H13V9H15V11H17V13H15V15H13V13H11V11M18,11H20V9H22V11H24V13H22V15H20V13H18V11Z";
var mdiLanguageCsharp = "M11.5,15.97L11.91,18.41C11.65,18.55 11.23,18.68 10.67,18.8C10.1,18.93 9.43,19 8.66,19C6.45,18.96 4.79,18.3 3.68,17.04C2.56,15.77 2,14.16 2,12.21C2.05,9.9 2.72,8.13 4,6.89C5.32,5.64 6.96,5 8.94,5C9.69,5 10.34,5.07 10.88,5.19C11.42,5.31 11.82,5.44 12.08,5.59L11.5,8.08L10.44,7.74C10.04,7.64 9.58,7.59 9.05,7.59C7.89,7.58 6.93,7.95 6.18,8.69C5.42,9.42 5.03,10.54 5,12.03C5,13.39 5.37,14.45 6.08,15.23C6.79,16 7.79,16.4 9.07,16.41L10.4,16.29C10.83,16.21 11.19,16.1 11.5,15.97M13.89,19L14.5,15H13L13.34,13H14.84L15.16,11H13.66L14,9H15.5L16.11,5H18.11L17.5,9H18.5L19.11,5H21.11L20.5,9H22L21.66,11H20.16L19.84,13H21.34L21,15H19.5L18.89,19H16.89L17.5,15H16.5L15.89,19H13.89M16.84,13H17.84L18.16,11H17.16L16.84,13Z";
var mdiLanguageCss3 = "M5,3L4.35,6.34H17.94L17.5,8.5H3.92L3.26,11.83H16.85L16.09,15.64L10.61,17.45L5.86,15.64L6.19,14H2.85L2.06,18L9.91,21L18.96,18L20.16,11.97L20.4,10.76L21.94,3H5Z";
var mdiLanguageFortran = "M5 4V6H6C6.55 6 7 6.45 7 7V17C7 17.55 6.55 18 6 18H5V20H14V18H12C11.45 18 11 17.55 11 17V13H13C13.55 13 14 13.45 14 14V16H16V8H14V10C14 10.55 13.55 11 13 11H11V6H16C17.11 6 18 7.34 18 9V10H20V4Z";
var mdiLanguageGo = "M2.64,10.33L2.62,10.27L2.84,10L2.96,9.92H6.8L6.83,10L6.65,10.26L6.54,10.32L2.64,10.33M1.03,11.31L1,11.26L1.22,10.97L1.34,10.91H6.24L6.29,11L6.21,11.24L6.11,11.31H1.03M3.63,12.3L3.59,12.24L3.75,11.96L3.85,11.9H6L6.07,11.97L6.05,12.22L5.97,12.3H3.63M14.78,10.14L13,10.61C12.81,10.65 12.8,10.66 12.66,10.5C12.5,10.32 12.39,10.21 12.16,10.1C11.5,9.76 10.83,9.86 10.22,10.25C9.5,10.73 9.11,11.42 9.12,12.3C9.13,13.16 9.72,13.87 10.57,14C11.3,14.09 11.91,13.83 12.4,13.28L12.69,12.89H10.62C10.4,12.89 10.35,12.75 10.42,12.57L10.97,11.39C11,11.33 11.08,11.22 11.24,11.22H14.68C14.83,10.72 15.09,10.26 15.43,9.81C16.21,8.78 17.16,8.24 18.43,8C19.5,7.82 20.56,7.93 21.5,8.57C22.34,9.15 22.87,9.93 23,10.96C23.19,12.41 22.76,13.59 21.76,14.61C21.05,15.33 20.18,15.78 19.19,16L18.33,16.08C17.35,16.06 16.46,15.78 15.71,15.13C15.19,14.68 14.83,14.14 14.65,13.5C14.5,13.74 14.38,13.97 14.21,14.2C13.44,15.22 12.43,15.85 11.15,16C10.1,16.16 9.12,15.95 8.26,15.31C7.47,14.71 7,13.91 6.9,12.92C6.76,11.75 7.1,10.7 7.81,9.78C8.57,8.78 9.58,8.15 10.82,7.92C11.82,7.74 12.79,7.86 13.66,8.44C14.23,8.82 14.63,9.34 14.9,9.96C14.94,10.05 14.9,10.11 14.78,10.14M20.89,11.74L20.86,11.38C20.67,10.32 19.69,9.72 18.67,9.95C17.66,10.17 17,10.8 16.79,11.81C16.6,12.65 17,13.5 17.77,13.84C18.36,14.1 18.96,14.06 19.53,13.78C20.37,13.35 20.84,12.66 20.89,11.74Z";
var mdiLanguageHaskell = "M2.08,19L6.75,12L2.08,5H5.58L10.25,12L5.58,19H2.08M6.75,19L11.42,12L6.75,5H10.25L19.59,19H16.09L13.17,14.63L10.25,19H6.75M18.03,14.92L16.5,12.58H21.92V14.92H18.03M15.7,11.42L14.14,9.08H21.92V11.42H15.7Z";
var mdiLanguageHtml5 = "M12,17.56L16.07,16.43L16.62,10.33H9.38L9.2,8.3H16.8L17,6.31H7L7.56,12.32H14.45L14.22,14.9L12,15.5L9.78,14.9L9.64,13.24H7.64L7.93,16.43L12,17.56M4.07,3H19.93L18.5,19.2L12,21L5.5,19.2L4.07,3Z";
var mdiLanguageJava = "M16.5,6.08C16.5,6.08 9.66,7.79 12.94,11.56C13.91,12.67 12.69,13.67 12.69,13.67C12.69,13.67 15.14,12.42 14,10.82C12.94,9.35 12.14,8.62 16.5,6.08M12.03,7.28C16.08,4.08 14,2 14,2C14.84,5.3 11.04,6.3 9.67,8.36C8.73,9.76 10.13,11.27 12,13C11.29,11.3 8.78,9.84 12.03,7.28M9.37,17.47C6.29,18.33 11.25,20.1 15.16,18.43C14.78,18.28 14.41,18.1 14.06,17.89C12.7,18.2 11.3,18.26 9.92,18.07C8.61,17.91 9.37,17.47 9.37,17.47M14.69,15.79C12.94,16.17 11.13,16.26 9.35,16.05C8.04,15.92 8.9,15.28 8.9,15.28C5.5,16.41 10.78,17.68 15.5,16.3C15.21,16.19 14.93,16 14.69,15.79M18.11,19.09C18.11,19.09 18.68,19.56 17.5,19.92C15.22,20.6 8.07,20.81 6.09,19.95C5.38,19.64 6.72,19.21 7.14,19.12C7.37,19.06 7.6,19.04 7.83,19.04C7.04,18.5 2.7,20.14 5.64,20.6C13.61,21.9 20.18,20 18.11,19.09M15.37,14.23C15.66,14.04 15.97,13.88 16.29,13.74C16.29,13.74 14.78,14 13.27,14.14C11.67,14.3 10.06,14.32 8.46,14.2C6.11,13.89 9.75,13 9.75,13C8.65,13 7.57,13.26 6.59,13.75C4.54,14.75 11.69,15.2 15.37,14.23M16.27,16.65C16.25,16.69 16.23,16.72 16.19,16.75C21.2,15.44 19.36,12.11 16.96,12.94C16.83,13 16.72,13.08 16.65,13.19C16.79,13.14 16.93,13.1 17.08,13.07C18.28,12.83 20,14.7 16.27,16.65M16.4,21.26C13.39,21.78 10.31,21.82 7.28,21.4C7.28,21.4 7.74,21.78 10.09,21.93C13.69,22.16 19.22,21.8 19.35,20.1C19.38,20.11 19.12,20.75 16.4,21.26Z";
var mdiLanguageJavascript = "M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z";
var mdiLanguageKotlin = "M2 2H22L12 12L22 22H2Z";
var mdiLanguageLua = "M10.5,5A8.5,8.5 0 0,0 2,13.5A8.5,8.5 0 0,0 10.5,22A8.5,8.5 0 0,0 19,13.5A8.5,8.5 0 0,0 10.5,5M13.5,13A2.5,2.5 0 0,1 11,10.5A2.5,2.5 0 0,1 13.5,8A2.5,2.5 0 0,1 16,10.5A2.5,2.5 0 0,1 13.5,13M19.5,2A2.5,2.5 0 0,0 17,4.5A2.5,2.5 0 0,0 19.5,7A2.5,2.5 0 0,0 22,4.5A2.5,2.5 0 0,0 19.5,2";
var mdiLanguageMarkdown = "M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z";
var mdiLanguageMarkdownOutline = "M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M3.44 6.94C3.18 6.94 2.96 7.15 2.96 7.41V16.6C2.96 16.85 3.18 17.06 3.44 17.06H20.56C20.82 17.06 21.04 16.85 21.04 16.6V7.41C21.04 7.15 20.82 6.94 20.56 6.94H3.44M4.89 15.19V8.81H6.81L8.73 11.16L10.65 8.81H12.58V15.19H10.65V11.53L8.73 13.88L6.81 11.53V15.19H4.89M16.9 15.19L14 12.09H15.94V8.81H17.86V12.09H19.79L16.9 15.19";
var mdiLanguagePhp = "M12,18.08C5.37,18.08 0,15.36 0,12C0,8.64 5.37,5.92 12,5.92C18.63,5.92 24,8.64 24,12C24,15.36 18.63,18.08 12,18.08M6.81,10.13C7.35,10.13 7.72,10.23 7.9,10.44C8.08,10.64 8.12,11 8.03,11.47C7.93,12 7.74,12.34 7.45,12.56C7.17,12.78 6.74,12.89 6.16,12.89H5.29L5.82,10.13H6.81M3.31,15.68H4.75L5.09,13.93H6.32C6.86,13.93 7.3,13.87 7.65,13.76C8,13.64 8.32,13.45 8.61,13.18C8.85,12.96 9.04,12.72 9.19,12.45C9.34,12.19 9.45,11.89 9.5,11.57C9.66,10.79 9.55,10.18 9.17,9.75C8.78,9.31 8.18,9.1 7.35,9.1H4.59L3.31,15.68M10.56,7.35L9.28,13.93H10.7L11.44,10.16H12.58C12.94,10.16 13.18,10.22 13.29,10.34C13.4,10.46 13.42,10.68 13.36,11L12.79,13.93H14.24L14.83,10.86C14.96,10.24 14.86,9.79 14.56,9.5C14.26,9.23 13.71,9.1 12.91,9.1H11.64L12,7.35H10.56M18,10.13C18.55,10.13 18.91,10.23 19.09,10.44C19.27,10.64 19.31,11 19.22,11.47C19.12,12 18.93,12.34 18.65,12.56C18.36,12.78 17.93,12.89 17.35,12.89H16.5L17,10.13H18M14.5,15.68H15.94L16.28,13.93H17.5C18.05,13.93 18.5,13.87 18.85,13.76C19.2,13.64 19.5,13.45 19.8,13.18C20.04,12.96 20.24,12.72 20.38,12.45C20.53,12.19 20.64,11.89 20.7,11.57C20.85,10.79 20.74,10.18 20.36,9.75C20,9.31 19.37,9.1 18.54,9.1H15.79L14.5,15.68Z";
var mdiLanguagePython = "M19.14,7.5A2.86,2.86 0 0,1 22,10.36V14.14A2.86,2.86 0 0,1 19.14,17H12C12,17.39 12.32,17.96 12.71,17.96H17V19.64A2.86,2.86 0 0,1 14.14,22.5H9.86A2.86,2.86 0 0,1 7,19.64V15.89C7,14.31 8.28,13.04 9.86,13.04H15.11C16.69,13.04 17.96,11.76 17.96,10.18V7.5H19.14M14.86,19.29C14.46,19.29 14.14,19.59 14.14,20.18C14.14,20.77 14.46,20.89 14.86,20.89A0.71,0.71 0 0,0 15.57,20.18C15.57,19.59 15.25,19.29 14.86,19.29M4.86,17.5C3.28,17.5 2,16.22 2,14.64V10.86C2,9.28 3.28,8 4.86,8H12C12,7.61 11.68,7.04 11.29,7.04H7V5.36C7,3.78 8.28,2.5 9.86,2.5H14.14C15.72,2.5 17,3.78 17,5.36V9.11C17,10.69 15.72,11.96 14.14,11.96H8.89C7.31,11.96 6.04,13.24 6.04,14.82V17.5H4.86M9.14,5.71C9.54,5.71 9.86,5.41 9.86,4.82C9.86,4.23 9.54,4.11 9.14,4.11C8.75,4.11 8.43,4.23 8.43,4.82C8.43,5.41 8.75,5.71 9.14,5.71Z";
var mdiLanguageR = "M12,4.29C6.5,4.29 2,7.29 2,11C2,14.28 5.56,17 10.24,17.58V19.71H13.65V17.59C14.5,17.5 15.29,17.34 16.04,17.11L17.42,19.71H21.28L18.96,15.8C20.83,14.58 22,12.87 22,11C22,7.29 17.5,4.29 12,4.29V4.29M13.53,6.91C17.73,6.91 20.83,8.31 20.83,11.5C20.83,13.21 19.91,14.41 18.41,15.15C18.32,15.1 18.24,15.05 18.19,15C17.83,14.84 17.23,14.66 17.23,14.66C17.23,14.66 20.21,14.44 20.21,11.47C20.21,8.5 17.09,8.45 17.09,8.45H10.24V15.61C7.69,14.87 5.93,13.3 5.93,11.5C5.93,8.96 9.33,6.91 13.53,6.91M13.68,10.89H15.75C15.75,10.89 16.7,10.84 16.7,11.83C16.7,12.8 15.75,12.8 15.75,12.8H13.68V10.89M13.65,15.3H14.57C14.75,15.3 14.84,15.35 15,15.5C15.13,15.6 15.27,15.79 15.39,15.96C14.84,16.03 14.26,16.06 13.65,16.06V15.3Z";
var mdiLanguageRuby = "M18.8,2.07C21.32,2.5 22.04,4.23 22,6.04V6L20.86,20.93L6.08,21.94H6.09C4.86,21.89 2.13,21.77 2,17.95L3.37,15.45L6.14,21.91L8.5,14.29L8.45,14.3L8.47,14.28L16.18,16.74L14.19,8.96L21.54,8.5L15.75,3.76L18.8,2.06V2.07M2,17.91V17.93L2,17.91V17.91M6.28,6.23C9.24,3.28 13.07,1.54 14.54,3.03C16,4.5 14.46,8.12 11.5,11.06C8.5,14 4.73,15.84 3.26,14.36C1.79,12.87 3.3,9.17 6.27,6.23H6.28Z";
var mdiLanguageRubyOnRails = "M19.8,16.7C19.8,16.7 21.6,16.5 21.6,14.3C21.6,12.1 19.5,11.8 19.5,11.8H15.7V19H17.6V17.3L19.3,19H22L19.8,16.7M19,15.3H17.5V13.7H19C19,13.7 19.4,13.9 19.4,14.5C19.5,15.1 19,15.3 19,15.3M21.3,8.2V8.4C13.2,6.1 10,13.2 10.6,18.7C10.6,18.7 4.9,18.7 4.3,18.7C5,13.3 11.8,2.6 21.3,8.2M20.5,6.9C19.8,6.6 19.1,6.3 18.4,6.1L18.5,4.8L20.6,5.6L20.5,6.9M18.5,8.7C19.2,8.7 19.9,8.8 20.6,9L20.5,10.2L18.7,10L18.5,8.7M13.9,5.8L13.5,4.6L15.6,4.4L16,5.7C15.8,5.7 14.1,5.8 13.9,5.8M15.2,9.5C15.6,9.3 16.3,9 17.2,8.8L17.6,10L15.8,10.7L15.2,9.5M11.8,6.5C11.2,6.8 10.6,7.1 10,7.5L9.2,6.2L11,5.2L11.8,6.5M14.3,10.1L15.1,11.3L14,12.6L12.9,11.6C13.2,11 13.7,10.5 14.3,10.1M11.6,15C11.7,14.2 11.9,13.5 12.2,12.7L13.4,13.7L13.1,15.6L11.6,15M7.9,9.3C7.4,9.8 6.9,10.4 6.5,10.9L5.2,9.8L6.7,8.2L7.9,9.3M4.8,13.7C4.4,14.5 4.1,15.3 3.8,16L2,15.3L2.9,13L4.8,13.7M11.5,16.3L13.3,16.9L13.6,18.9L11.6,18.4C11.6,18.2 11.5,17.5 11.5,16.3Z";
var mdiLanguageRust = "M21.9 11.7L21 11.2V11L21.7 10.3C21.8 10.2 21.8 10 21.7 9.9L21.6 9.8L20.7 9.5C20.7 9.4 20.7 9.3 20.6 9.3L21.2 8.5C21.3 8.4 21.3 8.2 21.1 8.1C21.1 8.1 21 8.1 21 8L20 7.8C20 7.7 19.9 7.7 19.9 7.6L20.3 6.7V6.4C20.2 6.3 20.1 6.3 20 6.3H19C19 6.3 19 6.2 18.9 6.2L19.1 5.2C19.1 5 19 4.9 18.9 4.9H18.8L17.8 5.1C17.8 5 17.7 5 17.6 4.9V3.9C17.6 3.7 17.5 3.6 17.3 3.6H17.2L16.3 4H16.2L16 3C16 2.8 15.8 2.7 15.7 2.8H15.6L14.8 3.4C14.7 3.4 14.6 3.4 14.6 3.3L14.3 2.4C14.2 2.3 14.1 2.2 13.9 2.2C13.9 2.2 13.8 2.2 13.8 2.3L13 3H12.8L12.3 2.2C12.2 2 12 2 11.8 2L11.7 2.1L11.2 3H11L10.3 2.3C10.2 2.2 10 2.2 9.9 2.3L9.8 2.4L9.5 3.3C9.4 3.3 9.3 3.3 9.3 3.4L8.5 2.8C8.3 2.7 8.1 2.7 8 2.9V3L7.8 4C7.8 4 7.7 4 7.6 4.1L6.7 3.7C6.6 3.6 6.4 3.7 6.3 3.8V4.9C6.3 5 6.2 5 6.2 5.1L5.2 4.9C5 4.8 4.9 4.9 4.9 5.1V5.2L5.1 6.2C5 6.2 5 6.3 4.9 6.3H3.9C3.7 6.3 3.6 6.4 3.6 6.6V6.7L4 7.6V7.8L3 8C2.8 8 2.7 8.2 2.7 8.3V8.4L3.3 9.2C3.3 9.3 3.3 9.4 3.2 9.4L2.4 9.8C2.3 9.9 2.2 10 2.2 10.2C2.2 10.2 2.2 10.3 2.3 10.3L3 11V11.2L2.2 11.7C2 11.8 2 12 2 12.1L2.1 12.2L3 12.8V13L2.3 13.7C2.2 13.8 2.2 14 2.3 14.1L2.4 14.2L3.3 14.5C3.3 14.6 3.3 14.7 3.4 14.7L2.8 15.5C2.7 15.6 2.7 15.8 2.9 15.9C2.9 15.9 3 15.9 3 16L4 16.2C4 16.3 4.1 16.3 4.1 16.4L3.7 17.3C3.6 17.4 3.7 17.6 3.8 17.7H4.9C5 17.7 5 17.8 5.1 17.8L4.9 18.8C4.9 19 5 19.1 5.1 19.1H5.2L6.2 18.9C6.2 19 6.3 19 6.4 19.1V20.1C6.4 20.3 6.5 20.4 6.7 20.4H6.8L7.7 20H7.8L8 21C8 21.2 8.2 21.3 8.3 21.2H8.4L9.2 20.6C9.3 20.6 9.4 20.6 9.4 20.7L9.7 21.6C9.8 21.7 9.9 21.8 10.1 21.8C10.1 21.8 10.2 21.8 10.2 21.7L11 21H11.2L11.7 21.8C11.8 21.9 12 22 12.1 21.9L12.2 21.8L12.7 21H12.9L13.6 21.7C13.7 21.8 13.9 21.8 14 21.7L14.1 21.6L14.4 20.7C14.5 20.7 14.6 20.7 14.6 20.6L15.4 21.2C15.5 21.3 15.7 21.3 15.8 21.1C15.8 21.1 15.8 21 15.9 21L16.1 20C16.2 20 16.2 19.9 16.3 19.9L17.2 20.3C17.3 20.4 17.5 20.3 17.6 20.2V19.1L17.8 18.9L18.8 19.1C19 19.1 19.1 19 19.1 18.9V18.8L18.9 17.8L19.1 17.6H20.1C20.3 17.6 20.4 17.5 20.4 17.3V17.2L20 16.3C20 16.2 20.1 16.2 20.1 16.1L21.1 15.9C21.3 15.9 21.4 15.7 21.3 15.6V15.5L20.7 14.7L20.8 14.5L21.7 14.2C21.8 14.1 21.9 14 21.9 13.8C21.9 13.8 21.9 13.7 21.8 13.7L21 13V12.8L21.8 12.3C22 12.2 22 12 21.9 11.7C21.9 11.8 21.9 11.8 21.9 11.7M16.2 18.7C15.9 18.6 15.7 18.3 15.7 18C15.8 17.7 16.1 17.5 16.4 17.5C16.7 17.6 16.9 17.9 16.9 18.2C16.9 18.6 16.6 18.8 16.2 18.7M16 16.8C15.7 16.7 15.4 16.9 15.4 17.2L15 18.6C14.1 19 13.1 19.2 12 19.2C10.9 19.2 9.9 19 8.9 18.5L8.6 17.1C8.5 16.8 8.3 16.6 8 16.7L6.8 17C6.6 16.8 6.4 16.5 6.2 16.3H12.2C12.3 16.3 12.3 16.3 12.3 16.2V14.1C12.3 14 12.3 14 12.2 14H10.5V12.7H12.4C12.6 12.7 13.3 12.7 13.6 13.7C13.7 14 13.8 15 14 15.3C14.1 15.6 14.6 16.3 15.1 16.3H18.2C18 16.6 17.8 16.8 17.5 17.1L16 16.8M7.7 18.7C7.4 18.8 7.1 18.6 7 18.2C6.9 17.9 7.1 17.6 7.5 17.5S8.1 17.6 8.2 18C8.2 18.3 8 18.6 7.7 18.7M5.4 9.5C5.5 9.8 5.4 10.2 5.1 10.3C4.8 10.4 4.4 10.3 4.3 10C4.2 9.7 4.3 9.3 4.6 9.2C5 9.1 5.3 9.2 5.4 9.5M4.7 11.1L6 10.6C6.3 10.5 6.4 10.2 6.3 9.9L6 9.3H7V14H5C4.7 13 4.6 12.1 4.7 11.1M10.3 10.7V9.3H12.8C12.9 9.3 13.7 9.4 13.7 10C13.7 10.5 13.1 10.7 12.6 10.7H10.3M19.3 11.9V12.4H18.5C18.4 12.4 18.4 12.4 18.4 12.5V12.8C18.4 13.6 17.9 13.8 17.5 13.8C17.1 13.8 16.7 13.6 16.6 13.4C16.4 12.1 16 11.9 15.4 11.4C16.1 10.9 16.9 10.2 16.9 9.3C16.9 8.3 16.2 7.7 15.8 7.4C15.1 7 14.4 6.9 14.2 6.9H6.6C7.7 5.7 9.1 4.9 10.7 4.6L11.6 5.6C11.8 5.8 12.1 5.8 12.4 5.6L13.4 4.6C15.5 5 17.3 6.3 18.4 8.2L17.7 9.8C17.6 10.1 17.7 10.4 18 10.5L19.3 11.1V11.9M11.6 3.9C11.8 3.7 12.2 3.7 12.4 3.9C12.6 4.1 12.6 4.5 12.4 4.7C12.1 5 11.8 5 11.5 4.7C11.3 4.5 11.4 4.2 11.6 3.9M18.5 9.5C18.6 9.2 19 9.1 19.3 9.2C19.6 9.3 19.7 9.7 19.6 10C19.5 10.3 19.1 10.4 18.8 10.3C18.5 10.2 18.4 9.8 18.5 9.5Z";
var mdiLanguageSwift = "M17.09,19.72C14.73,21.08 11.5,21.22 8.23,19.82C5.59,18.7 3.4,16.74 2,14.5C2.67,15.05 3.46,15.5 4.3,15.9C7.67,17.47 11.03,17.36 13.4,15.9C10.03,13.31 7.16,9.94 5.03,7.19C4.58,6.74 4.25,6.18 3.91,5.68C12.19,11.73 11.83,13.27 6.32,4.67C11.21,9.61 15.75,12.41 15.75,12.41C15.91,12.5 16,12.57 16.11,12.63C16.21,12.38 16.3,12.12 16.37,11.85C17.16,9 16.26,5.73 14.29,3.04C18.84,5.79 21.54,10.95 20.41,15.28C20.38,15.39 20.35,15.5 20.36,15.67C22.6,18.5 22,21.45 21.71,20.89C20.5,18.5 18.23,19.24 17.09,19.72V19.72Z";
var mdiLanguageTypescript = "M3,3H21V21H3V3M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86M13,11.25H8V12.75H9.5V20H11.25V12.75H13V11.25Z";
var mdiLanguageXaml = "M16.93 7.9L19.31 12L16.95 16.09L16.33 15L17.8 12.5C17.97 12.19 17.97 11.83 17.8 11.54L16.32 9L16.93 7.9M16.92 6.57C16.89 6.57 16.85 6.59 16.83 6.62L15.56 8.87C15.5 8.94 15.5 9 15.56 9.09L17.18 11.9C17.22 11.97 17.22 12.05 17.18 12.12L15.57 14.91C15.53 14.97 15.53 15.06 15.57 15.13L16.85 17.36C16.87 17.4 16.91 17.42 16.94 17.42C17 17.42 17 17.4 17.04 17.36L20 12.23C20.08 12.09 20.08 11.92 20 11.79L17 6.62C17 6.59 16.96 6.57 16.92 6.57M21.91 11.67L17.23 3.58C17.11 3.38 16.89 3.25 16.66 3.25H7.28C7.05 3.25 6.83 3.38 6.71 3.58L2 11.67C1.91 11.87 1.91 12.13 2 12.33L6.71 20.42C6.83 20.62 7.05 20.75 7.28 20.75H16.66C16.89 20.75 17.11 20.62 17.23 20.42L21.91 12.33C22.03 12.13 22.03 11.88 21.91 11.67M7.3 3.95H16.12L11.76 11.65H6.93L10.87 4.82C10.91 4.75 10.86 4.66 10.78 4.66L8.21 4.65C8.13 4.65 8.06 4.7 8 4.76L4.04 11.65H2.84L7.3 3.95M6.17 12.46L9.74 18.63L8.5 18.63L4.87 12.35L4.67 12L4.87 11.65L8.5 5.37L9.73 5.37L6.17 11.53C6.15 11.57 6.13 11.61 6.11 11.65C6.03 11.88 6.03 12.13 6.12 12.35C6.13 12.39 6.15 12.43 6.17 12.46M7.3 20.05L2.85 12.35H4.05L8.03 19.23C8.07 19.3 8.14 19.34 8.22 19.34L10.79 19.34C10.87 19.34 10.92 19.25 10.88 19.18L6.94 12.35H11.77L16.17 20.05H7.3M16.8 19.75L12.37 12L16.78 4.21L21.29 12L16.8 19.75Z";
var mdiLaptop = "M4,6H20V16H4M20,18A2,2 0 0,0 22,16V6C22,4.89 21.1,4 20,4H4C2.89,4 2,4.89 2,6V16A2,2 0 0,0 4,18H0V20H24V18H20Z";
var mdiLaptopChromebook = "M20,15H4V5H20M14,18H10V17H14M22,18V3H2V18H0V20H24V18H22Z";
var mdiLaptopMac = "M12,19A1,1 0 0,1 11,18A1,1 0 0,1 12,17A1,1 0 0,1 13,18A1,1 0 0,1 12,19M4,5H20V16H4M20,18A2,2 0 0,0 22,16V5C22,3.89 21.1,3 20,3H4C2.89,3 2,3.89 2,5V16A2,2 0 0,0 4,18H0A2,2 0 0,0 2,20H22A2,2 0 0,0 24,18H20Z";
var mdiLaptopOff = "M1,4.27L2.28,3L20,20.72L18.73,22L16.73,20H0V18H4C2.89,18 2,17.1 2,16V6C2,5.78 2.04,5.57 2.1,5.37L1,4.27M4,16H12.73L4,7.27V16M20,16V6H7.82L5.82,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H21.82L17.82,16H20Z";
var mdiLaptopWindows = "M3,4H21A1,1 0 0,1 22,5V16A1,1 0 0,1 21,17H22L24,20V21H0V20L2,17H3A1,1 0 0,1 2,16V5A1,1 0 0,1 3,4M4,6V15H20V6H4Z";
var mdiLaravel = "M21.7 6.53C21.71 6.55 21.71 6.58 21.71 6.61V10.9C21.71 11 21.65 11.12 21.56 11.17L17.95 13.25V17.36C17.95 17.47 17.9 17.57 17.8 17.63L10.28 21.96C10.26 21.97 10.24 22 10.22 22L10.2 22C10.15 22 10.09 22 10.04 22C10.03 22 10 22 10 22C10 22 10 21.97 9.96 21.96L2.44 17.63C2.35 17.58 2.29 17.47 2.29 17.36V4.5C2.29 4.45 2.29 4.42 2.3 4.4C2.3 4.39 2.31 4.38 2.31 4.37C2.31 4.35 2.32 4.34 2.33 4.32C2.33 4.31 2.34 4.3 2.35 4.29C2.36 4.28 2.37 4.27 2.38 4.26C2.39 4.25 2.4 4.24 2.41 4.23C2.42 4.22 2.43 4.21 2.44 4.21L6.2 2.04C6.3 2 6.42 2 6.5 2.04L10.28 4.21H10.28C10.29 4.22 10.3 4.22 10.31 4.23C10.32 4.24 10.33 4.25 10.34 4.26C10.35 4.27 10.36 4.28 10.37 4.29C10.38 4.3 10.39 4.31 10.39 4.32C10.4 4.34 10.41 4.35 10.41 4.37C10.41 4.38 10.42 4.39 10.42 4.4C10.43 4.43 10.43 4.45 10.43 4.5V12.5L13.57 10.72V6.61C13.57 6.58 13.57 6.55 13.58 6.53L13.59 6.5C13.59 6.5 13.6 6.47 13.61 6.45C13.61 6.44 13.62 6.43 13.63 6.42C13.64 6.41 13.65 6.4 13.66 6.39C13.67 6.38 13.68 6.37 13.69 6.36C13.7 6.35 13.71 6.34 13.72 6.34L17.5 4.17C17.58 4.11 17.7 4.11 17.8 4.17L21.56 6.34C21.57 6.34 21.58 6.35 21.59 6.36L21.62 6.39C21.63 6.4 21.64 6.41 21.65 6.42C21.66 6.43 21.66 6.44 21.67 6.45C21.68 6.47 21.68 6.5 21.69 6.5C21.7 6.5 21.7 6.5 21.7 6.53M21.09 10.72V7.15L17.95 8.95V12.5L21.09 10.72M17.33 17.18V13.6L10.43 17.54V21.15L17.33 17.18M2.91 5V17.18L9.81 21.15V17.54L6.21 15.5L6.2 15.5L6.2 15.5C6.19 15.5 6.18 15.5 6.17 15.47C6.16 15.47 6.15 15.46 6.14 15.45V15.45C6.13 15.44 6.12 15.43 6.11 15.42C6.1 15.41 6.1 15.4 6.09 15.39V15.39C6.08 15.37 6.08 15.36 6.07 15.35C6.07 15.33 6.06 15.32 6.06 15.31C6.05 15.3 6.05 15.28 6.05 15.27C6.05 15.25 6.05 15.24 6.05 15.23V6.82L2.91 5M6.36 2.68L3.23 4.5L6.36 6.28L9.5 4.5L6.36 2.68M9.81 12.88V5L6.67 6.82V14.69L9.81 12.88M17.64 4.8L14.5 6.61L17.64 8.41L20.77 6.61L17.64 4.8M17.33 8.95L14.19 7.15V10.72L17.33 12.5V8.95M10.12 17L17 13.06L13.88 11.26L7 15.23L10.12 17Z";
var mdiLaserPointer = "M9 13L5 16C4 16.88 3.86 18.12 4 19C4.13 20 4.91 21.22 6 21.68C7.57 22.35 9.09 21.9 10.04 20.92L19 13C20.86 11.62 20 9 18 9H12L19.46 4.61C19.9 4.29 20.08 3.82 20.06 3.37C20 2.67 19.46 2 18.6 2H18.54C18.19 2 17.86 2.11 17.56 2.29L5 9C4.19 9.46 3.94 10.24 4 11C4.05 12.03 4.74 13 6 13M5 18.5C5 17.12 6.12 16 7.5 16S10 17.12 10 18.5 8.88 21 7.5 21 5 19.88 5 18.5Z";
var mdiLasso = "M12 2C17.5 2 22 5.13 22 9C22 12.26 18.81 15 14.5 15.78L14.5 15.5C14.5 14.91 14.4 14.34 14.21 13.81C17.55 13.21 20 11.28 20 9C20 6.24 16.42 4 12 4C7.58 4 4 6.24 4 9C4 10.19 4.67 11.29 5.79 12.15C5.35 12.64 5 13.21 4.78 13.85C3.06 12.59 2 10.88 2 9C2 5.13 6.5 2 12 2M9.5 12C11.43 12 13 13.57 13 15.5C13 17.4 11.5 18.95 9.6 19C9.39 19.36 9.18 20 9.83 20.68C11 21.88 13.28 19.72 16.39 19.71C18.43 19.7 20.03 19.97 20.03 19.97C20.03 19.97 21.08 20.1 20.97 21.04C20.86 21.97 19.91 21.97 19.91 21.97C19.53 21.93 18.03 21.58 16.22 21.68C14.41 21.77 13.47 22.41 12.56 22.69C11.66 22.97 9.91 23.38 8.3 22.05C6.97 20.96 7.46 19.11 7.67 18.5C6.67 17.87 6 16.76 6 15.5C6 13.57 7.57 12 9.5 12M9.5 14C8.67 14 8 14.67 8 15.5C8 16.33 8.67 17 9.5 17C10.33 17 11 16.33 11 15.5C11 14.67 10.33 14 9.5 14Z";
var mdiLastpass = "M14,12A2,2 0 0,1 16,10A2,2 0 0,1 18,12A2,2 0 0,1 16,14A2,2 0 0,1 14,12M8,12A2,2 0 0,1 10,10A2,2 0 0,1 12,12A2,2 0 0,1 10,14A2,2 0 0,1 8,12M2,12A2,2 0 0,1 4,10A2,2 0 0,1 6,12A2,2 0 0,1 4,14A2,2 0 0,1 2,12M22,5H20V19H22V5Z";
var mdiLatitude = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 4C15 4 17.5 5.6 18.9 8H5.1C6.5 5.6 9 4 12 4M12 20C9 20 6.5 18.4 5.1 16H18.9C17.5 18.4 15 20 12 20M4.3 14C4.1 13.4 4 12.7 4 12S4.1 10.6 4.3 10H19.8C20 10.6 20.1 11.3 20.1 12S20 13.4 19.8 14H4.3Z";
var mdiLaunch = "M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z";
var mdiLavaLamp = "M10,3L8,16H16L14,3H10M11.5,5.75A0.75,0.75 0 0,1 12.25,6.5A0.75,0.75 0 0,1 11.5,7.25A0.75,0.75 0 0,1 10.75,6.5A0.75,0.75 0 0,1 11.5,5.75M12.5,8.5A1,1 0 0,1 13.5,9.5A1,1 0 0,1 12.5,10.5A1,1 0 0,1 11.5,9.5A1,1 0 0,1 12.5,8.5M11.5,12A1.5,1.5 0 0,1 13,13.5A1.5,1.5 0 0,1 11.5,15A1.5,1.5 0 0,1 10,13.5A1.5,1.5 0 0,1 11.5,12M8,17L10,19L8,21H16L14,19L16,17H8Z";
var mdiLayers = "M12,16L19.36,10.27L21,9L12,2L3,9L4.63,10.27M12,18.54L4.62,12.81L3,14.07L12,21.07L21,14.07L19.37,12.8L12,18.54Z";
var mdiLayersMinus = "M22,17V19H14V17H22M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z";
var mdiLayersOff = "M3.27,1L2,2.27L6.22,6.5L3,9L4.63,10.27L12,16L14.1,14.37L15.53,15.8L12,18.54L4.63,12.81L3,14.07L12,21.07L16.95,17.22L20.73,21L22,19.73L3.27,1M19.36,10.27L21,9L12,2L9.09,4.27L16.96,12.15L19.36,10.27M19.81,15L21,14.07L19.57,12.64L18.38,13.56L19.81,15Z";
var mdiLayersOffOutline = "M12,4.53L10.83,5.44L9.41,4L12,2L21,9L17.28,11.89L15.85,10.47L17.74,9L12,4.53M21,14.07L20.13,14.75L18.7,13.32L19.37,12.8L21,14.07M3.41,0.86L22.14,19.59L20.73,21L16.95,17.22L12,21.07L3,14.07L4.62,12.81L12,18.54L15.5,15.79L14.1,14.37L12,16L3,9L6.22,6.5L2,2.27L3.41,0.86M12,13.47L12.67,12.94L7.65,7.92L6.26,9L12,13.47Z";
var mdiLayersOutline = "M12,18.54L19.37,12.8L21,14.07L12,21.07L3,14.07L4.62,12.81L12,18.54M12,16L3,9L12,2L21,9L12,16M12,4.53L6.26,9L12,13.47L17.74,9L12,4.53Z";
var mdiLayersPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z";
var mdiLayersRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z";
var mdiLayersSearch = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M9.59 19.2L3 14.07L4.62 12.81L9 16.22C9 16.32 9 16.41 9 16.5C9 17.46 9.22 18.38 9.59 19.2M4.63 10.27L3 9L12 2L21 9L19.36 10.27L18.65 10.82C17.72 10.3 16.64 10 15.5 10C12.79 10 10.46 11.68 9.5 14.05L4.63 10.27Z";
var mdiLayersSearchOutline = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M9.59 19.2L3 14.07L4.62 12.81L9 16.22C9 16.32 9 16.41 9 16.5C9 17.46 9.22 18.38 9.59 19.2M9.5 14.04L3 9L12 2L21 9L18.66 10.82C17.96 10.44 17.19 10.18 16.37 10.07L17.74 9L12 4.53L6.26 9L10.53 12.32C10.1 12.84 9.74 13.42 9.5 14.04Z";
var mdiLayersTriple = "M12 0L3 7L4.63 8.27L12 14L19.36 8.27L21 7L12 0M19.37 10.73L12 16.47L4.62 10.74L3 12L12 19L21 12L19.37 10.73M19.37 15.73L12 21.47L4.62 15.74L3 17L12 24L21 17L19.37 15.73Z";
var mdiLayersTripleOutline = "M12 16.54L19.37 10.8L21 12.07L12 19.07L3 12.07L4.62 10.81L12 16.54M12 14L3 7L12 0L21 7L12 14M12 2.53L6.26 7L12 11.47L17.74 7L12 2.53M12 21.47L19.37 15.73L21 17L12 24L3 17L4.62 15.74L12 21.47";
var mdiLeadPencil = "M16.84,2.73C16.45,2.73 16.07,2.88 15.77,3.17L13.65,5.29L18.95,10.6L21.07,8.5C21.67,7.89 21.67,6.94 21.07,6.36L17.9,3.17C17.6,2.88 17.22,2.73 16.84,2.73M12.94,6L4.84,14.11L7.4,14.39L7.58,16.68L9.86,16.85L10.15,19.41L18.25,11.3M4.25,15.04L2.5,21.73L9.2,19.94L8.96,17.78L6.65,17.61L6.47,15.29";
var mdiLeaf = "M17,8C8,10 5.9,16.17 3.82,21.34L5.71,22L6.66,19.7C7.14,19.87 7.64,20 8,20C19,20 22,3 22,3C21,5 14,5.25 9,6.25C4,7.25 2,11.5 2,13.5C2,15.5 3.75,17.25 3.75,17.25C7,8 17,8 17,8Z";
var mdiLeafMaple = "M21.79,13L16,16L17,18L13,17.25V21H11V17.25L7,18L8,16L2.21,13L3.21,11.27L1.61,8L5.21,7.77L6.21,6L9.63,9.9L8,5H10L12,2L14,5H16L14.37,9.9L17.79,6L18.79,7.73L22.39,7.96L20.79,11.19L21.79,13Z";
var mdiLeafMapleOff = "M18.11 14.91L8.2 5H10L12 2L14 5H16L14.37 9.9L17.79 6L18.79 7.73L22.39 7.96L20.79 11.19L21.79 13L18.11 14.91M2.39 1.73L1.11 3L5.45 7.34L5.21 7.77L1.61 8L3.21 11.27L2.21 13L8 16L7 18L11 17.25V21H13V17.25L15.91 17.8L20.84 22.73L22.11 21.46L2.39 1.73Z";
var mdiLeafOff = "M20.84 22.73L15.14 17.03C13.26 18.79 10.92 20 8 20C7.64 20 7.14 19.87 6.66 19.7L5.71 22L3.82 21.34C5.15 18.03 6.5 14.32 9.66 11.55L8.77 10.66C6.76 12.03 4.86 14.1 3.75 17.25C3.75 17.25 2 15.5 2 13.5C2 12 3.12 9.32 5.72 7.61L1.11 3L2.39 1.73C2.39 1.73 16.39 15.74 16.39 15.74L22.11 21.46L20.84 22.73M17 8C15.35 8.37 13.93 8.88 12.7 9.5L17.5 14.29C20.87 9.35 22 3 22 3C21.03 4.95 14.35 5.24 9.38 6.18L12.15 8.95C14.81 8 17 8 17 8Z";
var mdiLeak = "M6,3H3V6A3,3 0 0,0 6,3M14,3H12A9,9 0 0,1 3,12V14C9.08,14 14,9.07 14,3M10,3H8A5,5 0 0,1 3,8V10A7,7 0 0,0 10,3M10,21H12A9,9 0 0,1 21,12V10A11,11 0 0,0 10,21M18,21H21V18A3,3 0 0,0 18,21M14,21H16A5,5 0 0,1 21,16V14A7,7 0 0,0 14,21Z";
var mdiLeakOff = "M10,3H8C8,3.37 7.96,3.72 7.88,4.06L9.47,5.65C9.81,4.84 10,3.94 10,3M3,4.27L5.84,7.11C5.03,7.67 4.06,8 3,8V10C4.61,10 6.09,9.45 7.27,8.54L8.7,9.97C7.14,11.24 5.16,12 3,12V14C5.71,14 8.19,13 10.11,11.38L12.61,13.88C11,15.81 10,18.29 10,21H12C12,18.84 12.76,16.86 14.03,15.31L15.46,16.74C14.55,17.91 14,19.39 14,21H16C16,19.94 16.33,18.97 16.89,18.16L19.73,21L21,19.73L4.27,3L3,4.27M14,3H12C12,4.5 11.63,5.91 11,7.16L12.44,8.62C13.42,7 14,5.06 14,3M19.94,16.12C20.28,16.04 20.63,16 21,16V14C20.06,14 19.16,14.19 18.34,14.5L19.94,16.12M15.38,11.56L16.84,13C18.09,12.37 19.5,12 21,12V10C18.94,10 17,10.58 15.38,11.56Z";
var mdiLedOff = "M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6Z";
var mdiLedOn = "M11,0V4H13V0H11M18.3,2.29L15.24,5.29L16.64,6.71L19.7,3.71L18.3,2.29M5.71,2.29L4.29,3.71L7.29,6.71L8.71,5.29L5.71,2.29M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M2,9V11H6V9H2M18,9V11H22V9H18Z";
var mdiLedOutline = "M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M12,8A2,2 0 0,1 14,10V15H10V10A2,2 0 0,1 12,8Z";
var mdiLedStrip = "M2.81,8.46L14.83,20.5L15.54,19.78L16.95,21.19L18.36,19.78L16.95,18.36L18.36,16.95L19.78,18.36L21.19,16.95L19.78,15.54L20.5,14.83L8.46,2.81L2.81,8.46M5.64,8.46L8.46,5.64L17.66,14.83L14.83,17.66L5.64,8.46M7.05,8.46L8.46,9.88L9.88,8.46L8.46,7.05L7.05,8.46M9.17,10.59L10.59,12L12,10.59L10.59,9.17L9.17,10.59M11.29,12.71L12.71,14.12L14.12,12.71L12.71,11.29L11.29,12.71M13.41,14.83L14.83,16.24L16.24,14.83L14.83,13.41L13.41,14.83Z";
var mdiLedStripVariant = "M2.95 3L2 6.91L19.34 11.25L20.29 7.34L2.95 3M6.09 6.89L4.16 6.41L4.64 4.46L6.57 4.94L6.09 6.89M9.94 7.86L8 7.38L8.5 5.42L10.42 5.91L9.94 7.86M13.8 8.82L11.87 8.34L12.35 6.39L14.27 6.87L13.8 8.82M17.65 9.79L15.72 9.31L16.2 7.35L18.13 7.84L17.65 9.79M4.66 12.75L3.71 16.66L21.05 21L22 17.1L4.66 12.75M7.8 16.65L5.88 16.16L6.35 14.21L8.28 14.69L7.8 16.65M11.65 17.61L9.73 17.13L10.2 15.18L12.13 15.66L11.65 17.61M15.5 18.58L13.58 18.09L14.06 16.14L16 16.62L15.5 18.58M19.36 19.54L17.43 19.06L17.91 17.11L19.84 17.59L19.36 19.54M6.25 12.11L11 10.2L17.75 11.89L13 13.8L6.25 12.11Z";
var mdiLedVariantOff = "M12,3C10.05,3 8.43,4.4 8.08,6.25L16.82,15H18V13H16V7A4,4 0 0,0 12,3M3.28,4L2,5.27L8,11.27V13H6V15H9V21H11V15H11.73L13,16.27V21H15V18.27L18.73,22L20,20.72L15,15.72L8,8.72L3.28,4Z";
var mdiLedVariantOn = "M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3Z";
var mdiLedVariantOutline = "M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3M12,5A2,2 0 0,1 14,7V12H10V7A2,2 0 0,1 12,5Z";
var mdiLeek = "M10 2V5.55L12 7.55L14 5.55V2H10M6.34 4L3.87 6.5L15 17.62V12.67L6.34 4M17.66 4L13.06 8.61L15.54 11.09L20.13 6.5L17.66 4M9 13.74V20A2 2 0 0 0 11 22H13A2 2 0 0 0 15 20V19.74L13 17.74V20H11V15.74L9 13.74Z";
var mdiLessThan = "M18.5,4.14L19.5,5.86L8.97,12L19.5,18.14L18.5,19.86L5,12L18.5,4.14Z";
var mdiLessThanOrEqual = "M18.5,2.27L5,10.14L18.5,18L19.5,16.27L8.97,10.14L19.5,4L18.5,2.27M5,20V22H20V20H5Z";
var mdiLibrary = "M12,8A3,3 0 0,0 15,5A3,3 0 0,0 12,2A3,3 0 0,0 9,5A3,3 0 0,0 12,8M12,11.54C9.64,9.35 6.5,8 3,8V19C6.5,19 9.64,20.35 12,22.54C14.36,20.35 17.5,19 21,19V8C17.5,8 14.36,9.35 12,11.54Z";
var mdiLibraryShelves = "M19.5,9V1.5H16.5V9H13.5V1.5H10.5V9H7.5V1.5H4.65V9H3V10.5H21V9H19.5M19.5,13.5H16.5V21H13.5V13.5H10.5V21H7.5V13.5H4.65V21H3V22.5H21V21H19.5V13.5Z";
var mdiLicense = "M9 10A3.04 3.04 0 0 1 12 7A3.04 3.04 0 0 1 15 10A3.04 3.04 0 0 1 12 13A3.04 3.04 0 0 1 9 10M12 19L16 20V16.92A7.54 7.54 0 0 1 12 18A7.54 7.54 0 0 1 8 16.92V20M12 4A5.78 5.78 0 0 0 7.76 5.74A5.78 5.78 0 0 0 6 10A5.78 5.78 0 0 0 7.76 14.23A5.78 5.78 0 0 0 12 16A5.78 5.78 0 0 0 16.24 14.23A5.78 5.78 0 0 0 18 10A5.78 5.78 0 0 0 16.24 5.74A5.78 5.78 0 0 0 12 4M20 10A8.04 8.04 0 0 1 19.43 12.8A7.84 7.84 0 0 1 18 15.28V23L12 21L6 23V15.28A7.9 7.9 0 0 1 4 10A7.68 7.68 0 0 1 6.33 4.36A7.73 7.73 0 0 1 12 2A7.73 7.73 0 0 1 17.67 4.36A7.68 7.68 0 0 1 20 10Z";
var mdiLifebuoy = "M19.79,15.41C20.74,13.24 20.74,10.75 19.79,8.59L17.05,9.83C17.65,11.21 17.65,12.78 17.06,14.17L19.79,15.41M15.42,4.21C13.25,3.26 10.76,3.26 8.59,4.21L9.83,6.94C11.22,6.35 12.79,6.35 14.18,6.95L15.42,4.21M4.21,8.58C3.26,10.76 3.26,13.24 4.21,15.42L6.95,14.17C6.35,12.79 6.35,11.21 6.95,9.82L4.21,8.58M8.59,19.79C10.76,20.74 13.25,20.74 15.42,19.78L14.18,17.05C12.8,17.65 11.22,17.65 9.84,17.06L8.59,19.79M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8Z";
var mdiLightSwitch = "M7,1A2,2 0 0,0 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3A2,2 0 0,0 17,1H7M7,3H17V21H7V3M9,6V18H15V6H9M10,7H14V11H10V7M10,13H14V17H10V13Z";
var mdiLightbulb = "M12,2A7,7 0 0,0 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H15A1,1 0 0,0 16,17V14.74C17.81,13.47 19,11.38 19,9A7,7 0 0,0 12,2M9,21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9V21Z";
var mdiLightbulbCfl = "M10.5 2C11.88 2 13 3.12 13 4.5V14H14V4.47C14 3.56 13.63 2.7 13 2.05C13.17 2 13.33 2 13.5 2C14.88 2 16 3.12 16 4.5V14H17V17C17 17.55 16.55 18 16 18H8C7.45 18 7 17.55 7 17V14H8V4.5C8 3.12 9.12 2 10.5 2M10.5 4C10.22 4 10 4.22 10 4.5V14H11V4.5C11 4.22 10.78 4 10.5 4M9 20H15V21C15 21.55 14.55 22 14 22H10C9.45 22 9 21.55 9 21V20Z";
var mdiLightbulbCflOff = "M14 4.47C14 3.56 13.63 2.7 13 2.05C13.17 2 13.33 2 13.5 2C14.88 2 16 3.12 16 4.5V14H17V15.18L14 12.18V4.5L14 4.47M10 4.5C10 4.22 10.22 4 10.5 4S11 4.22 11 4.5V9.18L13 11.18V4.5C13 3.12 11.88 2 10.5 2S8 3.12 8 4.5V6.18L10 8.18V4.5M9 21C9 21.55 9.45 22 10 22H14C14.55 22 15 21.55 15 21V20H9V21M20 20.72L18.73 22L14.73 18H8C7.45 18 7 17.55 7 17V14H8V11.27L2 5.27L3.28 4L20 20.72Z";
var mdiLightbulbCflSpiral = "M11 2C10.84 2 10.69 2.03 10.55 2.1L8.55 3.1C7.56 3.66 8 5 9 5C9.16 5 9.32 4.95 9.45 4.9L11.45 3.9C12.43 3.36 12 2 11 2M15 4C14.83 4 14.69 4.03 14.55 4.1L8.55 7.1C7.56 7.68 8 9 9 9C9.18 9 9.32 8.95 9.45 8.9L15.45 5.9C16.41 5.43 16 4 15 4M15 8C14.84 8 14.69 8.03 14.55 8.1L8.7 11.03C8.2 11.25 8 11.6 8 12V14H7V17C7 17.55 7.44 18 8 18H16C16.55 18 17 17.55 17 17V14H16V13C16 12.44 15.55 12 15 12C14.45 12 14 12.45 14 13V14H10V12.62L15.45 9.9C16.42 9.34 16 8 15 8M9 20V21C9 21.57 9.46 22 10 22H14C14.56 22 15 21.55 15 21V20";
var mdiLightbulbCflSpiralOff = "M15.45 9.9L13.88 10.68L12.38 9.18L14.55 8.1C14.69 8.03 14.84 8 15 8C16 8 16.42 9.34 15.45 9.9M11.22 8L15.45 5.9C16.41 5.43 16 4 15 4C14.83 4 14.69 4.03 14.55 4.1L9.72 6.5L11.22 8M20.84 22.73L16.09 18H8C7.44 18 7 17.55 7 17V14H8V12C8 11.6 8.2 11.25 8.7 11.03L9 10.88L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M12.11 14L10.5 12.38L10 12.62V14H12.11M9 21C9 21.57 9.46 22 10 22H14C14.56 22 15 21.55 15 21V20H9V21M9 5C9.16 5 9.32 4.95 9.45 4.9L11.45 3.9C12.43 3.36 12 2 11 2C10.84 2 10.69 2.03 10.55 2.1L8.55 3.1C7.56 3.66 8 5 9 5Z";
var mdiLightbulbGroup = "M15 14V16A1 1 0 0 1 14 17H10A1 1 0 0 1 9 16V14A5 5 0 1 1 15 14M14 18H10V19A1 1 0 0 0 11 20H13A1 1 0 0 0 14 19M7 19V18H5V19A1 1 0 0 0 6 20H7.17A2.93 2.93 0 0 1 7 19M5 10A6.79 6.79 0 0 1 5.68 7A4 4 0 0 0 4 14.45V16A1 1 0 0 0 5 17H7V14.88A6.92 6.92 0 0 1 5 10M17 18V19A2.93 2.93 0 0 1 16.83 20H18A1 1 0 0 0 19 19V18M18.32 7A6.79 6.79 0 0 1 19 10A6.92 6.92 0 0 1 17 14.88V17H19A1 1 0 0 0 20 16V14.45A4 4 0 0 0 18.32 7Z";
var mdiLightbulbGroupOff = "M20.84 22.73L18.09 20C18.06 20 18.03 20 18 20H16.83C16.94 19.68 17 19.34 17 19V18.89L14.75 16.64C14.57 16.86 14.31 17 14 17H10C9.45 17 9 16.55 9 16V14C7.4 12.8 6.74 10.84 7.12 9L5.5 7.4C5.18 8.23 5 9.11 5 10C5 11.83 5.72 13.58 7 14.88V17H5C4.45 17 4 16.55 4 16V14.45C2.86 13.79 2.12 12.62 2 11.31C1.85 9.27 3.25 7.5 5.2 7.09L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M15 6C13.22 4.67 10.86 4.72 9.13 5.93L16.08 12.88C17.63 10.67 17.17 7.63 15 6M19.79 16.59C19.91 16.42 20 16.22 20 16V14.45C21.91 13.34 22.57 10.9 21.46 9C20.8 7.85 19.63 7.11 18.32 7C18.77 7.94 19 8.96 19 10C19 11.57 18.47 13.09 17.5 14.31L19.79 16.59M10 19C10 19.55 10.45 20 11 20H13C13.55 20 14 19.55 14 19V18H10V19M7 18H5V19C5 19.55 5.45 20 6 20H7.17C7.06 19.68 7 19.34 7 19V18Z";
var mdiLightbulbGroupOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L5.2 7.09C3.25 7.5 1.85 9.27 2 11.31C2.12 12.62 2.86 13.79 4 14.45V16C4 16.55 4.45 17 5 17H7V14.88C5.72 13.58 5 11.83 5 10C5 9.11 5.18 8.23 5.5 7.4L7.12 9C6.74 10.84 7.4 12.8 9 14V16C9 16.55 9.45 17 10 17H14C14.31 17 14.57 16.86 14.75 16.64L17 18.89V19C17 19.34 16.94 19.68 16.83 20H18C18.03 20 18.06 20 18.09 20L20.84 22.73L22.11 21.46M9.23 11.12L10.87 12.76C10.11 12.46 9.53 11.86 9.23 11.12M13 15H11V12.89L13 14.89V15M10.57 7.37L9.13 5.93C10.86 4.72 13.22 4.67 15 6C16.26 6.94 17 8.43 17 10C17 11.05 16.67 12.05 16.08 12.88L14.63 11.43C14.86 11 15 10.5 15 10C15 8.34 13.67 7 12 7C11.5 7 11 7.14 10.57 7.37M17.5 14.31C18.47 13.09 19 11.57 19 10C19 8.96 18.77 7.94 18.32 7C19.63 7.11 20.8 7.85 21.46 9C22.57 10.9 21.91 13.34 20 14.45V16C20 16.22 19.91 16.42 19.79 16.59L17.5 14.31M10 18H14V19C14 19.55 13.55 20 13 20H11C10.45 20 10 19.55 10 19V18M7 19C7 19.34 7.06 19.68 7.17 20H6C5.45 20 5 19.55 5 19V18H7V19Z";
var mdiLightbulbGroupOutline = "M7 19A2.93 2.93 0 0 0 7.17 20H6A1 1 0 0 1 5 19V18H7M10 19A1 1 0 0 0 11 20H13A1 1 0 0 0 14 19V18H10M4 16A1 1 0 0 0 5 17H7V14.88A6.92 6.92 0 0 1 5 10A6.79 6.79 0 0 1 5.68 7A4 4 0 0 0 4 14.45M17 19A2.93 2.93 0 0 1 16.83 20H18A1 1 0 0 0 19 19V18H17M17 10A5 5 0 0 1 15 14V16A1 1 0 0 1 14 17H10A1 1 0 0 1 9 16V14A5 5 0 1 1 17 10M15 10A3 3 0 1 0 11 12.82V15H13V12.82A3 3 0 0 0 15 10M18.32 7A6.79 6.79 0 0 1 19 10A6.92 6.92 0 0 1 17 14.88V17H19A1 1 0 0 0 20 16V14.45A4 4 0 0 0 18.32 7Z";
var mdiLightbulbMultiple = "M17 16V18C17 18.55 16.53 19 16 19H12C11.42 19 11 18.55 11 18V16C8.77 14.34 8.32 11.21 10 9S14.77 6.34 17 8 19.63 12.79 18 15C17.69 15.38 17.35 15.72 17 16M16 20H12V21C12 21.55 12.42 22 13 22H15C15.53 22 16 21.55 16 21M7.66 15H7V16C7 16.55 7.42 17 8 17H9V16.88C8.44 16.33 8 15.7 7.66 15M13.58 5C12.46 2.47 9.5 1.33 7 2.45S3.31 6.5 4.43 9.04C4.77 9.81 5.3 10.5 6 11V13C6 13.55 6.42 14 7 14H7.28C7.07 13.35 6.97 12.68 7 12C6.97 8.29 9.87 5.21 13.58 5Z";
var mdiLightbulbMultipleOff = "M20.84 22.73L16.74 18.63C16.55 18.85 16.29 19 16 19H12C11.42 19 11 18.55 11 18V16C9.37 14.8 8.71 12.82 9.1 11L7.5 9.39C7.17 10.2 6.97 11.08 7 12C6.97 12.68 7.07 13.35 7.28 14H7C6.42 14 6 13.55 6 13V11C5.3 10.5 4.77 9.81 4.43 9.04C4 8.05 3.91 7 4.12 6L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M13.58 5C12.46 2.47 9.5 1.33 7 2.45C6.68 2.58 6.39 2.75 6.13 2.93L9.67 6.47C10.76 5.63 12.1 5.08 13.58 5M18.06 14.86C19.6 12.66 19.14 9.62 17 8C15.2 6.67 12.84 6.72 11.12 7.92L18.06 14.86M12 21C12 21.55 12.42 22 13 22H15C15.53 22 16 21.55 16 21V20H12V21M7 15V16C7 16.55 7.42 17 8 17H9V16.88C8.43 16.33 8 15.7 7.66 15H7Z";
var mdiLightbulbMultipleOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L4.14 6.03C3.93 7 4 8.05 4.45 9.04C4.79 9.81 5.33 10.5 6 11V13C6 13.55 6.45 14 7 14H7.3C7.1 13.35 7 12.68 7 12C7 11.08 7.19 10.21 7.5 9.41L9.11 11C9.05 11.33 9 11.66 9 12C9 13.57 9.74 15.06 11 16V18C11 18.55 11.45 19 12 19H16C16.31 19 16.57 18.86 16.75 18.64L20.84 22.73L22.11 21.46M11.23 13.12L12.87 14.76C12.1 14.44 11.53 13.85 11.23 13.12M15 17H13V14.89L15 16.89V17M9.69 6.5L6.14 2.94C6.41 2.75 6.7 2.58 7 2.44C9.53 1.33 12.5 2.47 13.6 5C12.12 5.09 10.77 5.63 9.69 6.5M11.12 7.92C11.94 7.35 12.93 7 14 7C15.57 7 17.06 7.74 18 9C19.33 10.78 19.28 13.14 18.07 14.87L16.62 13.42C16.7 13.28 16.77 13.14 16.83 13C17.38 11.43 16.56 9.72 15 9.16C14.16 8.87 13.29 8.97 12.57 9.37L11.12 7.92M7.68 15C8 15.7 8.46 16.33 9 16.88V17H8C7.45 17 7 16.55 7 16V15H7.68M12 20H16V21C16 21.55 15.55 22 15 22H13C12.45 22 12 21.55 12 21V20Z";
var mdiLightbulbMultipleOutline = "M12 21C12 21.55 12.45 22 13 22H15C15.55 22 16 21.55 16 21V20H12M14 7C11.24 7 9 9.24 9 12C9 13.57 9.74 15.06 11 16V18C11 18.55 11.45 19 12 19H16C16.55 19 17 18.55 17 18V16C19.21 14.34 19.66 11.21 18 9C17.06 7.74 15.57 7 14 7M15 14.82V17H13V14.82C11.44 14.27 10.62 12.55 11.17 11C11.72 9.43 13.44 8.61 15 9.16C16.56 9.72 17.38 11.43 16.83 13C16.53 13.85 15.85 14.5 15 14.82M7.68 15H7V16C7 16.55 7.45 17 8 17H9V16.88C8.46 16.33 8 15.7 7.68 15M13.6 5C12.5 2.47 9.53 1.33 7 2.45S3.34 6.5 4.45 9.04C4.79 9.81 5.33 10.5 6 11V13C6 13.55 6.45 14 7 14H7.3C7.1 13.35 7 12.68 7 12C7 8.29 9.89 5.21 13.6 5Z";
var mdiLightbulbOff = "M12,2C9.76,2 7.78,3.05 6.5,4.68L16.31,14.5C17.94,13.21 19,11.24 19,9A7,7 0 0,0 12,2M3.28,4L2,5.27L5.04,8.3C5,8.53 5,8.76 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H14.73L18.73,22L20,20.72L3.28,4M9,20V21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9Z";
var mdiLightbulbOffOutline = "M12,2C9.76,2 7.78,3.05 6.5,4.68L7.93,6.11C8.84,4.84 10.32,4 12,4A5,5 0 0,1 17,9C17,10.68 16.16,12.16 14.89,13.06L16.31,14.5C17.94,13.21 19,11.24 19,9A7,7 0 0,0 12,2M3.28,4L2,5.27L5.04,8.3C5,8.53 5,8.76 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H14.73L18.73,22L20,20.72L3.28,4M7.23,10.5L12.73,16H10V13.58C8.68,13 7.66,11.88 7.23,10.5M9,20V21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9Z";
var mdiLightbulbOn = "M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63Z";
var mdiLightbulbOnOutline = "M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M11,18H13V15.87C14.73,15.43 16,13.86 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13.86 9.27,15.43 11,15.87V18Z";
var mdiLightbulbOutline = "M12,2A7,7 0 0,1 19,9C19,11.38 17.81,13.47 16,14.74V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V14.74C6.19,13.47 5,11.38 5,9A7,7 0 0,1 12,2M9,21V20H15V21A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21M12,4A5,5 0 0,0 7,9C7,11.05 8.23,12.81 10,13.58V16H14V13.58C15.77,12.81 17,11.05 17,9A5,5 0 0,0 12,4Z";
var mdiLighthouse = "M8,10V8H9V4H8V3L12,1L16,3V4H15V8H16V10H14.74L8.44,13.64L9,10H8M13,8V4H11V8H13M7,23L7.04,22.76L16.15,17.5L16.67,20.88L13,23H7M8.05,16.17L15.31,12L15.83,15.37L7.43,20.22L8.05,16.17Z";
var mdiLighthouseOn = "M1,10V2L10,5V7L1,10M8,10V8H13V4H8V3L12,1L16,3V4H15V8H16V10H14.74L8.44,13.64L9,10H8M7,23L7.04,22.76L16.15,17.5L16.67,20.88L13,23H7M8.05,16.17L15.31,12L15.83,15.37L7.43,20.22L8.05,16.17Z";
var mdiLightningBolt = "M11 15H6L13 1V9H18L11 23V15Z";
var mdiLightningBoltOutline = "M11 9.47V11H14.76L13 14.53V13H9.24L11 9.47M13 1L6 15H11V23L18 9H13V1Z";
var mdiLingerie = "M22 7H20V2H18V4.34L12 6.91L6 4.34V2H4V7H2V9H4.05C4.3 11.25 6.19 13 8.5 13C9.92 13 11.18 12.33 12 11.3C12.83 12.33 14.08 13 15.5 13C17.81 13 19.7 11.25 19.95 9H22V7M8.5 11C7.12 11 6 9.88 6 8.5V6.5L11 8.65C10.9 9.96 9.83 11 8.5 11M18 8.5C18 9.88 16.88 11 15.5 11C14.17 11 13.1 9.96 13 8.65L18 6.5V8.5M2 15V17H3C5.97 17 8.43 19.17 8.91 22H15.09C15.57 19.17 18.03 17 21 17H22V15H2M13.59 20H10.41C9.94 18.84 9.21 17.82 8.29 17H15.71C14.79 17.82 14.06 18.84 13.59 20Z";
var mdiLink = "M3.9,12C3.9,10.29 5.29,8.9 7,8.9H11V7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H11V15.1H7C5.29,15.1 3.9,13.71 3.9,12M8,13H16V11H8V13M17,7H13V8.9H17C18.71,8.9 20.1,10.29 20.1,12C20.1,13.71 18.71,15.1 17,15.1H13V17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7Z";
var mdiLinkBox = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,16H10C8.39,16 6,14.94 6,12C6,9.07 8.39,8 10,8H11V10H10C9.54,10 8,10.17 8,12C8,13.9 9.67,14 10,14H11V16M15,11V13H9V11H15M14,16H13V14H14C14.46,14 16,13.83 16,12C16,10.1 14.33,10 14,10H13V8H14C15.61,8 18,9.07 18,12C18,14.94 15.61,16 14,16Z";
var mdiLinkBoxOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M11,16H10C8.39,16 6,14.94 6,12C6,9.07 8.39,8 10,8H11V10H10C9.54,10 8,10.17 8,12C8,13.9 9.67,14 10,14H11V16M14,16H13V14H14C14.46,14 16,13.83 16,12C16,10.1 14.33,10 14,10H13V8H14C15.61,8 18,9.07 18,12C18,14.94 15.61,16 14,16M15,13H9V11H15V13Z";
var mdiLinkBoxVariant = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13.94,14.81L11.73,17C11.08,17.67 10.22,18 9.36,18C8.5,18 7.64,17.67 7,17C5.67,15.71 5.67,13.58 7,12.26L8.35,10.9L8.34,11.5C8.33,12 8.41,12.5 8.57,12.94L8.62,13.09L8.22,13.5C7.91,13.8 7.74,14.21 7.74,14.64C7.74,15.07 7.91,15.47 8.22,15.78C8.83,16.4 9.89,16.4 10.5,15.78L12.7,13.59C13,13.28 13.18,12.87 13.18,12.44C13.18,12 13,11.61 12.7,11.3C12.53,11.14 12.44,10.92 12.44,10.68C12.44,10.45 12.53,10.23 12.7,10.06C13.03,9.73 13.61,9.74 13.94,10.06C14.57,10.7 14.92,11.54 14.92,12.44C14.92,13.34 14.57,14.18 13.94,14.81M17,11.74L15.66,13.1V12.5C15.67,12 15.59,11.5 15.43,11.06L15.38,10.92L15.78,10.5C16.09,10.2 16.26,9.79 16.26,9.36C16.26,8.93 16.09,8.53 15.78,8.22C15.17,7.6 14.1,7.61 13.5,8.22L11.3,10.42C11,10.72 10.82,11.13 10.82,11.56C10.82,12 11,12.39 11.3,12.7C11.47,12.86 11.56,13.08 11.56,13.32C11.56,13.56 11.47,13.78 11.3,13.94C11.13,14.11 10.91,14.19 10.68,14.19C10.46,14.19 10.23,14.11 10.06,13.94C8.75,12.63 8.75,10.5 10.06,9.19L12.27,7C13.58,5.67 15.71,5.68 17,7C17.65,7.62 18,8.46 18,9.36C18,10.26 17.65,11.1 17,11.74Z";
var mdiLinkBoxVariantOutline = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M13.94,10.06C14.57,10.7 14.92,11.54 14.92,12.44C14.92,13.34 14.57,14.18 13.94,14.81L11.73,17C11.08,17.67 10.22,18 9.36,18C8.5,18 7.64,17.67 7,17C5.67,15.71 5.67,13.58 7,12.26L8.35,10.9L8.34,11.5C8.33,12 8.41,12.5 8.57,12.94L8.62,13.09L8.22,13.5C7.91,13.8 7.74,14.21 7.74,14.64C7.74,15.07 7.91,15.47 8.22,15.78C8.83,16.4 9.89,16.4 10.5,15.78L12.7,13.59C13,13.28 13.18,12.87 13.18,12.44C13.18,12 13,11.61 12.7,11.3C12.53,11.14 12.44,10.92 12.44,10.68C12.44,10.45 12.53,10.23 12.7,10.06C13.03,9.73 13.61,9.74 13.94,10.06M18,9.36C18,10.26 17.65,11.1 17,11.74L15.66,13.1V12.5C15.67,12 15.59,11.5 15.43,11.06L15.38,10.92L15.78,10.5C16.09,10.2 16.26,9.79 16.26,9.36C16.26,8.93 16.09,8.53 15.78,8.22C15.17,7.6 14.1,7.61 13.5,8.22L11.3,10.42C11,10.72 10.82,11.13 10.82,11.56C10.82,12 11,12.39 11.3,12.7C11.47,12.86 11.56,13.08 11.56,13.32C11.56,13.56 11.47,13.78 11.3,13.94C11.13,14.11 10.91,14.19 10.68,14.19C10.46,14.19 10.23,14.11 10.06,13.94C8.75,12.63 8.75,10.5 10.06,9.19L12.27,7C13.58,5.67 15.71,5.68 17,7C17.65,7.62 18,8.46 18,9.36Z";
var mdiLinkLock = "M23 16V15.5A2.5 2.5 0 0 0 18 15.5V16A1 1 0 0 0 17 17V21A1 1 0 0 0 18 22H23A1 1 0 0 0 24 21V17A1 1 0 0 0 23 16M22 16H19V15.5A1.5 1.5 0 0 1 22 15.5M7 8.9H11V7H7A5 5 0 0 0 7 17H11V15.1H7A3.1 3.1 0 0 1 7 8.9M8 11V13H16V11M13 15.1V17H15V15.1M17 7H13V8.9H17A3.09 3.09 0 0 1 19.94 11A5.12 5.12 0 0 1 20.5 11H21.9A5 5 0 0 0 17 7Z";
var mdiLinkOff = "M17,7H13V8.9H17C18.71,8.9 20.1,10.29 20.1,12C20.1,13.43 19.12,14.63 17.79,15L19.25,16.44C20.88,15.61 22,13.95 22,12A5,5 0 0,0 17,7M16,11H13.81L15.81,13H16V11M2,4.27L5.11,7.38C3.29,8.12 2,9.91 2,12A5,5 0 0,0 7,17H11V15.1H7C5.29,15.1 3.9,13.71 3.9,12C3.9,10.41 5.11,9.1 6.66,8.93L8.73,11H8V13H10.73L13,15.27V17H14.73L18.74,21L20,19.74L3.27,3L2,4.27Z";
var mdiLinkPlus = "M7,7H11V9H7A3,3 0 0,0 4,12A3,3 0 0,0 7,15H11V17H7A5,5 0 0,1 2,12A5,5 0 0,1 7,7M17,7A5,5 0 0,1 22,12H20A3,3 0 0,0 17,9H13V7H17M8,11H16V13H8V11M17,12H19V15H22V17H19V20H17V17H14V15H17V12Z";
var mdiLinkVariant = "M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z";
var mdiLinkVariantMinus = "M10.6 13.4A1 1 0 0 1 9.2 14.8A4.8 4.8 0 0 1 9.2 7.8L12.7 4.2A5.1 5.1 0 0 1 19.8 4.2A5.1 5.1 0 0 1 19.8 11.3L18.3 12.8A6.4 6.4 0 0 0 17.9 10.4L18.4 9.9A3.2 3.2 0 0 0 18.4 5.6A3.2 3.2 0 0 0 14.1 5.6L10.6 9.2A2.9 2.9 0 0 0 10.6 13.4M23 18V20H15V18M16.2 13.7A4.8 4.8 0 0 0 14.8 9.2A1 1 0 0 0 13.4 10.6A2.9 2.9 0 0 1 13.4 14.8L9.9 18.4A3.2 3.2 0 0 1 5.6 18.4A3.2 3.2 0 0 1 5.6 14.1L6.1 13.7A7.3 7.3 0 0 1 5.7 11.2L4.2 12.7A5.1 5.1 0 0 0 4.2 19.8A5.1 5.1 0 0 0 11.3 19.8L13.1 18A6 6 0 0 1 16.2 13.7Z";
var mdiLinkVariantOff = "M2,5.27L3.28,4L20,20.72L18.73,22L13.9,17.17L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L12.5,15.76L10.88,14.15C10.87,14.39 10.77,14.64 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C8.12,13.77 7.63,12.37 7.72,11L2,5.27M12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.79,8.97L9.38,7.55L12.71,4.22M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.2,10.54 16.61,12.5 16.06,14.23L14.28,12.46C14.23,11.78 13.94,11.11 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z";
var mdiLinkVariantPlus = "M10.6 13.4A1 1 0 0 1 9.2 14.8A4.8 4.8 0 0 1 9.2 7.8L12.7 4.2A5.1 5.1 0 0 1 19.8 4.2A5.1 5.1 0 0 1 19.8 11.3L18.3 12.8A6.4 6.4 0 0 0 17.9 10.4L18.4 9.9A3.2 3.2 0 0 0 18.4 5.6A3.2 3.2 0 0 0 14.1 5.6L10.6 9.2A2.9 2.9 0 0 0 10.6 13.4M23 18V20H20V23H18V20H15V18H18V15H20V18M16.2 13.7A4.8 4.8 0 0 0 14.8 9.2A1 1 0 0 0 13.4 10.6A2.9 2.9 0 0 1 13.4 14.8L9.9 18.4A3.2 3.2 0 0 1 5.6 18.4A3.2 3.2 0 0 1 5.6 14.1L6.1 13.7A7.3 7.3 0 0 1 5.7 11.2L4.2 12.7A5.1 5.1 0 0 0 4.2 19.8A5.1 5.1 0 0 0 11.3 19.8L13.1 18A6 6 0 0 1 16.2 13.7Z";
var mdiLinkVariantRemove = "M10.6 13.4A1 1 0 0 1 9.2 14.8A4.8 4.8 0 0 1 9.2 7.8L12.7 4.2A5.1 5.1 0 0 1 19.8 4.2A5.1 5.1 0 0 1 19.8 11.3L18.3 12.8A6.4 6.4 0 0 0 17.9 10.4L18.4 9.9A3.2 3.2 0 0 0 18.4 5.6A3.2 3.2 0 0 0 14.1 5.6L10.6 9.2A2.9 2.9 0 0 0 10.6 13.4M16.2 13.7A4.8 4.8 0 0 0 14.8 9.2A1 1 0 0 0 13.4 10.6A2.9 2.9 0 0 1 13.4 14.8L9.9 18.4A3.2 3.2 0 0 1 5.6 18.4A3.2 3.2 0 0 1 5.6 14.1L6.1 13.7A7.3 7.3 0 0 1 5.7 11.2L4.2 12.7A5.1 5.1 0 0 0 4.2 19.8A5.1 5.1 0 0 0 11.3 19.8L13.1 18A6 6 0 0 1 16.2 13.7M21.1 15.5L19 17.6L16.9 15.5L15.5 16.9L17.6 19L15.5 21.1L16.9 22.5L19 20.4L21.1 22.5L22.5 21.1L20.4 19L22.5 16.9Z";
var mdiLinkedin = "M19 3A2 2 0 0 1 21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3H19M18.5 18.5V13.2A3.26 3.26 0 0 0 15.24 9.94C14.39 9.94 13.4 10.46 12.92 11.24V10.13H10.13V18.5H12.92V13.57C12.92 12.8 13.54 12.17 14.31 12.17A1.4 1.4 0 0 1 15.71 13.57V18.5H18.5M6.88 8.56A1.68 1.68 0 0 0 8.56 6.88C8.56 5.95 7.81 5.19 6.88 5.19A1.69 1.69 0 0 0 5.19 6.88C5.19 7.81 5.95 8.56 6.88 8.56M8.27 18.5V10.13H5.5V18.5H8.27Z";
var mdiLinux = "M14.62,8.35C14.2,8.63 12.87,9.39 12.67,9.54C12.28,9.85 11.92,9.83 11.53,9.53C11.33,9.37 10,8.61 9.58,8.34C9.1,8.03 9.13,7.64 9.66,7.42C11.3,6.73 12.94,6.78 14.57,7.45C15.06,7.66 15.08,8.05 14.62,8.35M21.84,15.63C20.91,13.54 19.64,11.64 18,9.97C17.47,9.42 17.14,8.8 16.94,8.09C16.84,7.76 16.77,7.42 16.7,7.08C16.5,6.2 16.41,5.3 16,4.47C15.27,2.89 14,2.07 12.16,2C10.35,2.05 9,2.81 8.21,4.4C8,4.83 7.85,5.28 7.75,5.74C7.58,6.5 7.43,7.29 7.25,8.06C7.1,8.71 6.8,9.27 6.29,9.77C4.68,11.34 3.39,13.14 2.41,15.12C2.27,15.41 2.13,15.7 2.04,16C1.85,16.66 2.33,17.12 3.03,16.96C3.47,16.87 3.91,16.78 4.33,16.65C4.74,16.5 4.9,16.6 5,17C5.65,19.15 7.07,20.66 9.24,21.5C13.36,23.06 18.17,20.84 19.21,16.92C19.28,16.65 19.38,16.55 19.68,16.65C20.14,16.79 20.61,16.89 21.08,17C21.57,17.09 21.93,16.84 22,16.36C22.03,16.1 21.94,15.87 21.84,15.63";
var mdiLinuxMint = "M2,3.23V6.8H3.5C4.59,6.8 4.78,7.53 4.78,8.55V14.86C4.78,18.12 7.65,20.77 11.18,20.77H19.9C21,20.77 22,20.07 22,19V9.2C22,5.93 19.13,3.28 15.6,3.28H11.93V3.27L2,3.23V3.23M6.62,5.46H8.37V14.45C8.37,15.65 9.19,16.59 10.16,16.59L16.13,16.61C17.38,16.61 18.35,15.75 18.35,14.73L18.34,9.96C18.34,9.65 18.24,9.41 18,9.19C17.79,8.96 17.56,8.86 17.25,8.86C16.94,8.86 16.71,8.96 16.5,9.19C16.27,9.41 16.16,9.65 16.16,9.96V14.05H14.31V9.96C14.31,9.65 14.21,9.41 14,9.19C13.77,8.96 13.54,8.86 13.22,8.86C12.92,8.86 12.68,8.96 12.46,9.19C12.24,9.41 12.14,9.65 12.14,9.96V14.05H10.29V9.96C10.29,9.15 10.58,8.44 11.15,7.86C11.72,7.29 12.43,7 13.22,7C14,7 14.68,7.28 15.24,7.82C15.79,7.28 16.47,7 17.25,7C18.05,7 18.76,7.29 19.32,7.86C19.89,8.44 20.19,9.15 20.19,9.96L20.2,15.06C20.11,15.91 19.75,16.67 19.13,17.31V17.31C18.4,18.04 17.5,18.42 16.5,18.42H9.83C9,18.34 8.29,17.95 7.69,17.36C7,16.65 6.62,15.79 6.62,14.79V5.46H6.62Z";
var mdiLipstick = "M9 23C8.45 23 8 22.55 8 22V13C8 12.45 8.45 12 9 12H15C15.55 12 16 12.45 16 13V22C16 22.55 15.55 23 15 23H9M10 11C9.45 11 9 10.55 9 10V5.25C9 5.25 11 3 11.75 1C12.83 1.67 13.92 2.33 14.46 3.83C15 5.33 15 7.67 15 10C15 10.55 14.55 11 14 11H10Z";
var mdiListStatus = "M16.5 11L13 7.5L14.4 6.1L16.5 8.2L20.7 4L22.1 5.4L16.5 11M11 7H2V9H11V7M21 13.4L19.6 12L17 14.6L14.4 12L13 13.4L15.6 16L13 18.6L14.4 20L17 17.4L19.6 20L21 18.6L18.4 16L21 13.4M11 15H2V17H11V15Z";
var mdiLitecoin = "M12.55,15.92L13.16,13.78L14.81,13.19L16.25,7.63L14.56,8.31L16.25,2H8L5.38,11.77L3.72,12.34L2.22,17.91L4,17.27L2.66,22H20.16L21.78,15.92H12.55M19.39,21H4L5.46,15.65L3.72,16.3L4.58,13.11L6.24,12.54L8.74,3H15L13.13,10L14.83,9.3L14,12.42L12.33,13L11.22,16.91H20.5L19.39,21Z";
var mdiLoading = "M12,4V2A10,10 0 0,0 2,12H4A8,8 0 0,1 12,4Z";
var mdiLocationEnter = "M14 12L10 8V11H2V13H10V16M22 12A10 10 0 0 1 2.46 15H4.59A8 8 0 1 0 4.59 9H2.46A10 10 0 0 1 22 12Z";
var mdiLocationExit = "M22 12L18 8V11H10V13H18V16M20 18A10 10 0 1 1 20 6H17.27A8 8 0 1 0 17.27 18Z";
var mdiLock = "M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z";
var mdiLockAlert = "M10 17C11.1 17 12 16.1 12 15C12 13.9 11.1 13 10 13C8.9 13 8 13.9 8 15S8.9 17 10 17M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H5V6C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 3C8.3 3 7 4.3 7 6V8H13V6C13 4.3 11.7 3 10 3M22 13H20V7H22V13M22 17H20V15H22V17Z";
var mdiLockAlertOutline = "M10 17C8.9 17 8 16.1 8 15C8 13.9 8.9 13 10 13C11.1 13 12 13.9 12 15S11.1 17 10 17M16 20V10H4V20H16M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H5V6C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 3C8.3 3 7 4.3 7 6V8H13V6C13 4.3 11.7 3 10 3M22 7H20V13H22V7M22 15H20V17H22V15Z";
var mdiLockCheck = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z";
var mdiLockCheckOutline = "M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H7V6C7 3.24 9.24 1 12 1S17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V10H6V20H13.09M9 8H15V6C15 4.34 13.66 3 12 3S9 4.34 9 6V8M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z";
var mdiLockClock = "M8.5,2C6,2 4,4 4,6.5V7C2.89,7 2,7.89 2,9V18C2,19.11 2.89,20 4,20H8.72C10.18,21.29 12.06,22 14,22A8,8 0 0,0 22,14A8,8 0 0,0 14,6C13.66,6 13.32,6.03 13,6.08C12.76,3.77 10.82,2 8.5,2M8.5,4A2.5,2.5 0 0,1 11,6.5V7H6V6.5A2.5,2.5 0 0,1 8.5,4M14,8A6,6 0 0,1 20,14A6,6 0 0,1 14,20A6,6 0 0,1 8,14A6,6 0 0,1 14,8M13,10V15L16.64,17.19L17.42,15.9L14.5,14.15V10H13Z";
var mdiLockMinus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M23 18V20H15V18H23Z";
var mdiLockMinusOutline = "M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H7V6C7 3.24 9.24 1 12 1S17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V10H6V20H13.09M9 8H15V6C15 4.34 13.66 3 12 3S9 4.34 9 6V8M15 18V20H23V18H15Z";
var mdiLockOff = "M9 5.82L7.36 4.16C8.09 2.31 9.89 1 12 1C14.76 1 17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V16.8L11.2 8H15V6C15 4.34 13.66 3 12 3C10.41 3 9.11 4.25 9 5.82M22.11 21.46L20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.11 4 20V10C4 8.89 4.9 8 6 8H6.11L1.11 3L2.39 1.73L22.11 21.46M13.85 15.74L11.26 13.15C10.5 13.44 10 14.16 10 15C10 16.11 10.9 17 12 17C12.84 17 13.56 16.5 13.85 15.74Z";
var mdiLockOffOutline = "M9 5.82L7.36 4.16C8.09 2.31 9.89 1 12 1C14.76 1 17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V16.8L18 14.8V10H13.2L11.2 8H15V6C15 4.34 13.66 3 12 3C10.41 3 9.11 4.25 9 5.82M22.11 21.46L20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H6.11L1.11 3L2.39 1.73L22.11 21.46M18 19.89L13.85 15.74C13.56 16.5 12.84 17 12 17C10.89 17 10 16.1 10 15C10 14.15 10.5 13.44 11.26 13.15L8.11 10H6V20H18V19.89Z";
var mdiLockOpen = "M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z";
var mdiLockOpenAlert = "M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H13V6C13 4.3 11.7 3 10 3S7 4.3 7 6H5C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 17C11.1 17 12 16.1 12 15S11.1 13 10 13 8 13.9 8 15 8.9 17 10 17M22 13H20V7H22V13M22 17H20V15H22V17Z";
var mdiLockOpenAlertOutline = "M16 20V10H4V20H16M16 8C17.1 8 18 8.9 18 10V20C18 21.1 17.1 22 16 22H4C2.9 22 2 21.1 2 20V10C2 8.9 2.9 8 4 8H13V6C13 4.3 11.7 3 10 3S7 4.3 7 6H5C5 3.2 7.2 1 10 1S15 3.2 15 6V8H16M10 17C8.9 17 8 16.1 8 15S8.9 13 10 13 12 13.9 12 15 11.1 17 10 17M22 7H20V13H22V7M22 15H20V17H22V15Z";
var mdiLockOpenCheck = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M22.5 17.25L17.75 22L15 19L16.16 17.84L17.75 19.43L21.34 15.84L22.5 17.25Z";
var mdiLockOpenCheckOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z";
var mdiLockOpenMinus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M23 18V20H15V18H23Z";
var mdiLockOpenMinusOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M15 18V20H23V18H15Z";
var mdiLockOpenOutline = "M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z";
var mdiLockOpenPlus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z";
var mdiLockOpenPlusOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z";
var mdiLockOpenRemove = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13 14 13.9 14 15 13.11 17 12 17M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z";
var mdiLockOpenRemoveOutline = "M14 15C14 16.11 13.11 17 12 17S10 16.11 10 15 10.9 13 12 13 14 13.9 14 15M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6H9C9 4.34 10.34 3 12 3S15 4.34 15 6V8H6C4.89 8 4 8.9 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z";
var mdiLockOpenVariant = "M18 1C15.24 1 13 3.24 13 6V8H4C2.9 8 2 8.89 2 10V20C2 21.11 2.9 22 4 22H16C17.11 22 18 21.11 18 20V10C18 8.9 17.11 8 16 8H15V6C15 4.34 16.34 3 18 3C19.66 3 21 4.34 21 6V8H23V6C23 3.24 20.76 1 18 1M10 13C11.1 13 12 13.89 12 15C12 16.11 11.11 17 10 17C8.9 17 8 16.11 8 15C8 13.9 8.9 13 10 13Z";
var mdiLockOpenVariantOutline = "M10 13C11.1 13 12 13.89 12 15C12 16.11 11.11 17 10 17S8 16.11 8 15 8.9 13 10 13M18 1C15.24 1 13 3.24 13 6V8H4C2.9 8 2 8.9 2 10V20C2 21.1 2.9 22 4 22H16C17.1 22 18 21.1 18 20V10C18 8.9 17.1 8 16 8H15V6C15 4.34 16.34 3 18 3S21 4.34 21 6V8H23V6C23 3.24 20.76 1 18 1M16 10V20H4V10H16Z";
var mdiLockOutline = "M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10C4,8.89 4.89,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z";
var mdiLockPattern = "M7,3A4,4 0 0,1 11,7C11,8.86 9.73,10.43 8,10.87V13.13C8.37,13.22 8.72,13.37 9.04,13.56L13.56,9.04C13.2,8.44 13,7.75 13,7A4,4 0 0,1 17,3A4,4 0 0,1 21,7A4,4 0 0,1 17,11C16.26,11 15.57,10.8 15,10.45L10.45,15C10.8,15.57 11,16.26 11,17A4,4 0 0,1 7,21A4,4 0 0,1 3,17C3,15.14 4.27,13.57 6,13.13V10.87C4.27,10.43 3,8.86 3,7A4,4 0 0,1 7,3M17,13A4,4 0 0,1 21,17A4,4 0 0,1 17,21A4,4 0 0,1 13,17A4,4 0 0,1 17,13M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z";
var mdiLockPlus = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z";
var mdiLockPlusOutline = "M6 20V10H18V13.09C18.33 13.04 18.66 13 19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.89 8 4 8.89 4 10V20C4 21.1 4.89 22 6 22H13.81C13.46 21.39 13.22 20.72 13.09 20H6M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M23 18V20H20V23H18V20H15V18H18V15H20V18H23Z";
var mdiLockQuestion = "M12,1A5,5 0 0,0 7,6V8H6A2,2 0 0,0 4,10V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V10A2,2 0 0,0 18,8H17V6A5,5 0 0,0 12,1M12,2.9C13.71,2.9 15.1,4.29 15.1,6V8H8.9V6C8.9,4.29 10.29,2.9 12,2.9M12.19,10.5C13.13,10.5 13.88,10.71 14.42,11.12C14.96,11.54 15.23,12.1 15.23,12.8C15.23,13.24 15.08,13.63 14.79,14C14.5,14.36 14.12,14.64 13.66,14.85C13.4,15 13.23,15.15 13.14,15.32C13.05,15.5 13,15.72 13,16H11C11,15.5 11.1,15.16 11.29,14.92C11.5,14.68 11.84,14.4 12.36,14.08C12.62,13.94 12.83,13.76 13,13.54C13.14,13.33 13.22,13.08 13.22,12.8C13.22,12.5 13.13,12.28 12.95,12.11C12.77,11.93 12.5,11.85 12.19,11.85C11.92,11.85 11.7,11.92 11.5,12.06C11.34,12.2 11.24,12.41 11.24,12.69H9.27C9.22,12 9.5,11.4 10.05,11.04C10.59,10.68 11.3,10.5 12.19,10.5M11,17H13V19H11V17Z";
var mdiLockRemove = "M19 13C19.34 13 19.67 13.04 20 13.09V10C20 8.9 19.11 8 18 8H17V6C17 3.24 14.76 1 12 1S7 3.24 7 6V8H6C4.9 8 4 8.89 4 10V20C4 21.11 4.89 22 6 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M9 6C9 4.34 10.34 3 12 3S15 4.34 15 6V8H9V6M12 17C10.9 17 10 16.11 10 15S10.9 13 12 13C13.1 13 14 13.89 14 15C14 16.11 13.11 17 12 17M20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.47L22.54 16.88L20.41 19Z";
var mdiLockRemoveOutline = "M14 15C14 16.11 13.11 17 12 17C10.89 17 10 16.1 10 15C10 13.89 10.89 13 12 13C13.11 13 14 13.9 14 15M13.09 20C13.21 20.72 13.46 21.39 13.81 22H6C4.89 22 4 21.1 4 20V10C4 8.89 4.89 8 6 8H7V6C7 3.24 9.24 1 12 1S17 3.24 17 6V8H18C19.11 8 20 8.9 20 10V13.09C19.67 13.04 19.34 13 19 13C18.66 13 18.33 13.04 18 13.09V10H6V20H13.09M9 8H15V6C15 4.34 13.66 3 12 3S9 4.34 9 6V8M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z";
var mdiLockReset = "M12.63,2C18.16,2 22.64,6.5 22.64,12C22.64,17.5 18.16,22 12.63,22C9.12,22 6.05,20.18 4.26,17.43L5.84,16.18C7.25,18.47 9.76,20 12.64,20A8,8 0 0,0 20.64,12A8,8 0 0,0 12.64,4C8.56,4 5.2,7.06 4.71,11H7.47L3.73,14.73L0,11H2.69C3.19,5.95 7.45,2 12.63,2M15.59,10.24C16.09,10.25 16.5,10.65 16.5,11.16V15.77C16.5,16.27 16.09,16.69 15.58,16.69H10.05C9.54,16.69 9.13,16.27 9.13,15.77V11.16C9.13,10.65 9.54,10.25 10.04,10.24V9.23C10.04,7.7 11.29,6.46 12.81,6.46C14.34,6.46 15.59,7.7 15.59,9.23V10.24M12.81,7.86C12.06,7.86 11.44,8.47 11.44,9.23V10.24H14.19V9.23C14.19,8.47 13.57,7.86 12.81,7.86Z";
var mdiLockSmart = "M12,2A6,6 0 0,0 6,8V16A6,6 0 0,0 12,22A6,6 0 0,0 18,16V8A6,6 0 0,0 12,2M8,6H10V8H8V6M11,6H13V8H11V6M14,6H16V8H14V6M8,9H10V11H8V9M11,9H13V11H11V9M14,9H16V11H14V9M8,12H10V14H8V12M11,12H13V14H11V12M14,12H16V14H14V12M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16Z";
var mdiLocker = "M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,4V20H16V4H8M10,13H12V17H10V13M10,6H14V7.5H10V6M10,9H14V10.5H10V9Z";
var mdiLockerMultiple = "M3,2H21A2,2 0 0,1 23,4V20A2,2 0 0,1 21,22H3A2,2 0 0,1 1,20V4A2,2 0 0,1 3,2M13,4V20H21V4H13M3,4V20H11V4H3M5,13H7V17H5V13M5,6H9V7.5H5V6M5,9H9V10.5H5V9M15,13H17V17H15V13M15,6H19V7.5H15V6M15,9H19V10.5H15V9Z";
var mdiLogin = "M10,17V14H3V10H10V7L15,12L10,17M10,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H10A2,2 0 0,1 8,20V18H10V20H19V4H10V6H8V4A2,2 0 0,1 10,2Z";
var mdiLoginVariant = "M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z";
var mdiLogout = "M16,17V14H9V10H16V7L21,12L16,17M14,2A2,2 0 0,1 16,4V6H14V4H5V20H14V18H16V20A2,2 0 0,1 14,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2H14Z";
var mdiLogoutVariant = "M14.08,15.59L16.67,13H7V11H16.67L14.08,8.41L15.5,7L20.5,12L15.5,17L14.08,15.59M19,3A2,2 0 0,1 21,5V9.67L19,7.67V5H5V19H19V16.33L21,14.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19Z";
var mdiLongitude = "M12 2A10 10 0 1 0 22 12A10.03 10.03 0 0 0 12 2M9.4 19.6A8.05 8.05 0 0 1 9.4 4.4A16.45 16.45 0 0 0 7.5 12A16.45 16.45 0 0 0 9.4 19.6M12 20A13.81 13.81 0 0 1 9.5 12A13.81 13.81 0 0 1 12 4A13.81 13.81 0 0 1 14.5 12A13.81 13.81 0 0 1 12 20M14.6 19.6A16.15 16.15 0 0 0 14.6 4.4A8.03 8.03 0 0 1 20 12A7.9 7.9 0 0 1 14.6 19.6Z";
var mdiLooks = "M12,6A11,11 0 0,0 1,17H3C3,12.04 7.04,8 12,8C16.96,8 21,12.04 21,17H23A11,11 0 0,0 12,6M12,10C8.14,10 5,13.14 5,17H7A5,5 0 0,1 12,12A5,5 0 0,1 17,17H19C19,13.14 15.86,10 12,10Z";
var mdiLotion = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M16 12V22H4V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12Z";
var mdiLotionOutline = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M16 12V20C16 21.1 15.1 22 14 22H6C4.9 22 4 21.1 4 20V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12M14 12C14 9.79 12.21 8 10 8S6 9.79 6 12V20H14V12Z";
var mdiLotionPlus = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M13 14H11V12H9V14H7V16H9V18H11V16H13V14M16 12V22H4V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12Z";
var mdiLotionPlusOutline = "M15.5 6.5C15.5 5.66 17 4 17 4S18.5 5.66 18.5 6.5C18.5 7.33 17.83 8 17 8S15.5 7.33 15.5 6.5M19.5 15C20.88 15 22 13.88 22 12.5C22 10.83 19.5 8 19.5 8S17 10.83 17 12.5C17 13.88 18.12 15 19.5 15M13 14H11V12H9V14H7V16H9V18H11V16H13V14M16 12V20C16 21.1 15.1 22 14 22H6C4.9 22 4 21.1 4 20V12C4 9.03 6.16 6.57 9 6.09V4H7V2H13C14.13 2 15.15 2.39 16 3L14.56 4.44C14.1 4.17 13.57 4 13 4H11V6.09C13.84 6.57 16 9.03 16 12M14 12C14 9.79 12.21 8 10 8S6 9.79 6 12V20H14V12Z";
var mdiLoupe = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22H20A2,2 0 0,0 22,20V12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z";
var mdiLumx = "M12.35,1.75L20.13,9.53L13.77,15.89L12.35,14.47L17.3,9.53L10.94,3.16L12.35,1.75M15.89,9.53L14.47,10.94L10.23,6.7L5.28,11.65L3.87,10.23L10.23,3.87L15.89,9.53M10.23,8.11L11.65,9.53L6.7,14.47L13.06,20.84L11.65,22.25L3.87,14.47L10.23,8.11M8.11,14.47L9.53,13.06L13.77,17.3L18.72,12.35L20.13,13.77L13.77,20.13L8.11,14.47Z";
var mdiLungs = "M15.47 3.11C15 2.85 14.37 3.05 14.11 3.54C14.04 3.68 14 3.84 14 4V6.59L13.29 5.88C13.1 5.69 13 5.44 13 5.18V1H11V5.17C11 5.44 10.9 5.69 10.71 5.88L10 6.59V4C10 3.44 9.54 3 9 3C8.83 3 8.67 3.04 8.53 3.11C4.72 5 2 9.97 2 15.77C2 17.67 2.33 19.55 3 21.32C3.19 21.85 3.76 22.13 4.29 21.94C4.34 21.92 4.39 21.9 4.44 21.87L9.5 19.07C9.81 18.9 10 18.56 10 18.19V9.41L11.3 8.12C11.69 7.73 12.32 7.73 12.71 8.12L14 9.42V18.2C14 18.56 14.21 18.9 14.5 19.08L19.58 21.88C20.07 22.14 20.68 21.96 20.94 21.46C20.96 21.42 21 21.37 21 21.32C21.67 19.55 22 17.67 22 15.77C22 9.97 19.29 5 15.47 3.11Z";
var mdiMagnet = "M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3";
var mdiMagnetOn = "M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3M13,1.5L9,9H11V14.5L15,7H13V1.5Z";
var mdiMagnify = "M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z";
var mdiMagnifyClose = "M9,2A7,7 0 0,1 16,9C16,10.5 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.5,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M11.12,5.46L9,7.59L6.88,5.46L5.46,6.88L7.59,9L5.46,11.12L6.88,12.54L9,10.41L11.12,12.54L12.54,11.12L10.41,9L12.54,6.88L11.12,5.46Z";
var mdiMagnifyMinus = "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z";
var mdiMagnifyMinusCursor = "M11,4A7,7 0 0,1 18,11C18,12.5 17.5,14 16.61,15.19L17.42,16H18L23,21L21,23L16,18V17.41L15.19,16.6C12.1,18.92 7.71,18.29 5.39,15.2C3.07,12.11 3.7,7.72 6.79,5.4C8,4.5 9.5,4 11,4M7,10V12H15V10H7M1,1V8L8,1H1Z";
var mdiMagnifyMinusOutline = "M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z";
var mdiMagnifyPlus = "M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z";
var mdiMagnifyPlusCursor = "M11,4A7,7 0 0,1 18,11C18,12.5 17.5,14 16.61,15.19L17.42,16H18L23,21L21,23L16,18V17.41L15.19,16.6C12.1,18.92 7.71,18.29 5.39,15.2C3.07,12.11 3.7,7.72 6.79,5.4C8,4.5 9.5,4 11,4M10,7V10H7V12H10V15H12V12H15V10H12V7H10M1,1V8L8,1H1Z";
var mdiMagnifyPlusOutline = "M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z";
var mdiMagnifyRemoveCursor = "M1 1V8L8 1H1M18 16H17.42L16.61 15.19C17.5 14 18 12.5 18 11C18 7.13 14.87 4 11 4C9.5 4 8 4.5 6.79 5.4C3.7 7.72 3.07 12.11 5.39 15.2C7.71 18.29 12.1 18.92 15.19 16.6L16 17.41V18L21 23L23 21L18 16M14.6 13.16L13.18 14.58L11.06 12.45L8.94 14.58L7.5 13.16L9.65 11.04L7.5 8.92L8.94 7.5L11.06 9.63L13.18 7.5L14.6 8.92L12.47 11.04L14.6 13.16Z";
var mdiMagnifyRemoveOutline = "M15.5 14H14.71L14.43 13.73C15.41 12.59 16 11.11 16 9.5C16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16C11.11 16 12.59 15.41 13.73 14.43L14 14.71V15.5L19 20.5L20.5 19L15.5 14M9.5 14C7 14 5 12 5 9.5S7 5 9.5 5 14 7 14 9.5 12 14 9.5 14M10.91 11.62L9.5 10.21L8.09 11.62L7.38 10.91L8.79 9.5L7.38 8.09L8.09 7.38L9.5 8.79L10.91 7.38L11.62 8.09L10.21 9.5L11.62 10.91L10.91 11.62Z";
var mdiMagnifyScan = "M17 22V20H20V17H22V20.5C22 20.89 21.84 21.24 21.54 21.54C21.24 21.84 20.89 22 20.5 22H17M7 22H3.5C3.11 22 2.76 21.84 2.46 21.54C2.16 21.24 2 20.89 2 20.5V17H4V20H7V22M17 2H20.5C20.89 2 21.24 2.16 21.54 2.46C21.84 2.76 22 3.11 22 3.5V7H20V4H17V2M7 2V4H4V7H2V3.5C2 3.11 2.16 2.76 2.46 2.46C2.76 2.16 3.11 2 3.5 2H7M10.5 6C13 6 15 8 15 10.5C15 11.38 14.75 12.2 14.31 12.9L17.57 16.16L16.16 17.57L12.9 14.31C12.2 14.75 11.38 15 10.5 15C8 15 6 13 6 10.5C6 8 8 6 10.5 6M10.5 8C9.12 8 8 9.12 8 10.5C8 11.88 9.12 13 10.5 13C11.88 13 13 11.88 13 10.5C13 9.12 11.88 8 10.5 8Z";
var mdiMail = "M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M17,17H7V15H17M17,13H7V11H17M20,9H17V6H20";
var mdiMailbox = "M17,4H7A5,5 0 0,0 2,9V20H20A2,2 0 0,0 22,18V9A5,5 0 0,0 17,4M10,18H4V9A3,3 0 0,1 7,6A3,3 0 0,1 10,9V18M19,15H17V13H13V11H19V15M9,11H5V9H9V11Z";
var mdiMailboxOpen = "M8,4A5,5 0 0,0 3,9V18H1V20H21A2,2 0 0,0 23,18V9A5,5 0 0,0 18,4H8M8,6A3,3 0 0,1 11,9V18H5V9A3,3 0 0,1 8,6M14,11H20V15H18V13H14V11Z";
var mdiMailboxOpenOutline = "M14,11H20V15H18V13H14V11M18,4H8A5,5 0 0,0 3,9V18H1V20H21A2,2 0 0,0 23,18V9A5,5 0 0,0 18,4M11,18H5V9A3,3 0 0,1 8,6A3,3 0 0,1 11,9V18M21,18H13V9C13,7.92 12.65,6.86 12,6H18A3,3 0 0,1 21,9V18Z";
var mdiMailboxOpenUp = "M8,4A5,5 0 0,0 3,9V18H1V20H21A2,2 0 0,0 23,18V9A5,5 0 0,0 18,4H8M8,6A3,3 0 0,1 11,9V18H5V9A3,3 0 0,1 8,6M13,13V7H17V9H15V13H13Z";
var mdiMailboxOpenUpOutline = "M14,12.85V6.85H18V8.85H16V12.85H14M18,3.85H8A5,5 0 0,0 3,8.85V17.85H1V19.85H21A2,2 0 0,0 23,17.85V8.85A5,5 0 0,0 18,3.85M11,17.85H5V8.85A3,3 0 0,1 8,5.85A3,3 0 0,1 11,8.85V17.85M21,17.85H13V8.85C13,7.76 12.65,6.71 12,5.85H18A3,3 0 0,1 21,8.85V17.85Z";
var mdiMailboxOutline = "M17,4H7A5,5 0 0,0 2,9V20H20A2,2 0 0,0 22,18V9A5,5 0 0,0 17,4M10,18H4V9A3,3 0 0,1 7,6A3,3 0 0,1 10,9V18M20,18H12V9C12,7.92 11.65,6.86 11,6H17A3,3 0 0,1 20,9V18M13,11V13H17V15H19V11H13M9,11H5V9H9V11Z";
var mdiMailboxUp = "M5,9H9V11H5V9M22,9V18A2,2 0 0,1 20,20H2V9A5,5 0 0,1 7,4H17A5,5 0 0,1 22,9M10,9A3,3 0 0,0 7,6A3,3 0 0,0 4,9V18H10V9M16,7H12V13H14V9H16V7Z";
var mdiMailboxUpOutline = "M17,4H7A5,5 0 0,0 2,9V20H20A2,2 0 0,0 22,18V9A5,5 0 0,0 17,4M10,18H4V9A3,3 0 0,1 7,6A3,3 0 0,1 10,9V18M20,18H12V9C12,7.92 11.65,6.86 11,6H17A3,3 0 0,1 20,9V18M13,13H15V9H17V7H13V13M9,11H5V9H9V11Z";
var mdiManjaro = "M2 2V22H7.6V7.6H14.8V2H2M9.2 9.2V22H14.8V9.2H9.2M16.4 2V22H22V2H16.4Z";
var mdiMap = "M15,19L9,16.89V5L15,7.11M20.5,3C20.44,3 20.39,3 20.34,3L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21C3.55,21 3.61,21 3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3Z";
var mdiMapCheck = "M18.25,22L15.5,19L16.66,17.82L18.25,19.41L21.84,15.82L23,17.23M20.5,3A0.5,0.5 0 0,1 21,3.5V13.36C20.36,13.13 19.69,13 19,13C17.46,13 16.06,13.6 15,14.56V7.1L9,5V16.9L13.04,18.3C13,18.54 13,18.77 13,19C13,19.46 13.06,19.92 13.16,20.36L9,18.9L3.66,20.97C3.59,21 3.55,21 3.5,21A0.5,0.5 0 0,1 3,20.5V5.38C3,5.15 3.16,4.97 3.35,4.9L9,3L15,5.1L20.33,3";
var mdiMapCheckOutline = "M18.25,22L15.5,19L16.66,17.82L18.25,19.41L21.84,15.82L23,17.23L18.25,22M20.5,3A0.5,0.5 0 0,1 21,3.5V13.34C20.37,13.12 19.7,13 19,13V5.7L16,6.86V13.8C15.2,14.27 14.5,14.91 14,15.68V6.87L10,5.47V17.13L13.05,18.2L13,19C13,19.46 13.05,19.92 13.15,20.35L9,18.9L3.66,20.97L3.5,21A0.5,0.5 0 0,1 3,20.5V5.38C3,5.15 3.15,4.97 3.36,4.9L9,3L15,5.1L20.34,3.03L20.5,3M5,6.46V18.31L8,17.15V5.45L5,6.46Z";
var mdiMapClock = "M15,12H16.5V16.25L19.36,17.94L18.61,19.16L15,17V12M23,16A7,7 0 0,1 16,23C13,23 10.4,21.08 9.42,18.4L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2H19.5A0.5,0.5 0 0,1 20,2.5V10.25C21.81,11.5 23,13.62 23,16M9,16C9,12.83 11.11,10.15 14,9.29V6.11L8,4V15.89L9,16.24C9,16.16 9,16.08 9,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z";
var mdiMapClockOutline = "M15,12H16.5V16.25L19.36,17.94L18.61,19.16L15,17V12M16,9C16.69,9 17.37,9.1 18,9.29V4.7L15,5.86V9.07C15.33,9 15.66,9 16,9M23,16A7,7 0 0,1 16,23C13,23 10.4,21.08 9.42,18.4L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2.03L19.5,2A0.5,0.5 0 0,1 20,2.5V10.25C21.81,11.5 23,13.62 23,16M9,16C9,13.21 10.63,10.8 13,9.67V5.87L9,4.47V16.13H9C9,16.09 9,16.04 9,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11M4,5.46V17.31L7,16.15V4.45L4,5.46Z";
var mdiMapLegend = "M9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21L3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19.03 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3L20.34,3.03L15,5.1L9,3M8,5.45V17.15L5,18.31V6.46L8,5.45M10,5.47L14,6.87V18.53L10,17.13V5.47M19,5.7V17.54L16,18.55V6.86L19,5.7M7.46,6.3L5.57,6.97V9.12L7.46,8.45V6.3M7.46,9.05L5.57,9.72V11.87L7.46,11.2V9.05M7.46,11.8L5.57,12.47V14.62L7.46,13.95V11.8M7.46,14.55L5.57,15.22V17.37L7.46,16.7V14.55Z";
var mdiMapMarker = "M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z";
var mdiMapMarkerAlert = "M12 2C15.9 2 19 5.1 19 9C19 14.2 12 22 12 22S5 14.2 5 9C5 5.1 8.1 2 12 2M11 6V12H13V6H11M11 14V16H13V14H11Z";
var mdiMapMarkerAlertOutline = "M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4M11,6H13V11H11V6M11,13H13V15H11V13Z";
var mdiMapMarkerCheck = "M12,2C15.86,2 19,5.14 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9C5,5.14 8.14,2 12,2M10.47,14L17,7.41L15.6,6L10.47,11.18L8.4,9.09L7,10.5L10.47,14Z";
var mdiMapMarkerCheckOutline = "M12 4C14.8 4 17 6.2 17 9C17 11.9 14.1 16.2 12 18.9C9.9 16.2 7 11.9 7 9C7 6.2 9.2 4 12 4M12 2C8.1 2 5 5.1 5 9C5 14.2 12 22 12 22S19 14.2 19 9C19 5.1 15.9 2 12 2M11.3 14L16.2 9L14.8 7.6L11.3 11.2L9.7 9.6L8.3 11L11.3 14Z";
var mdiMapMarkerCircle = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,12.5A1.5,1.5 0 0,1 10.5,11A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 13.5,11A1.5,1.5 0 0,1 12,12.5M12,7.2C9.9,7.2 8.2,8.9 8.2,11C8.2,14 12,17.5 12,17.5C12,17.5 15.8,14 15.8,11C15.8,8.9 14.1,7.2 12,7.2Z";
var mdiMapMarkerDistance = "M6.5,8.11C5.61,8.11 4.89,7.39 4.89,6.5A1.61,1.61 0 0,1 6.5,4.89C7.39,4.89 8.11,5.61 8.11,6.5V6.5A1.61,1.61 0 0,1 6.5,8.11M6.5,2C4,2 2,4 2,6.5C2,9.87 6.5,14.86 6.5,14.86C6.5,14.86 11,9.87 11,6.5C11,4 9,2 6.5,2M17.5,8.11A1.61,1.61 0 0,1 15.89,6.5C15.89,5.61 16.61,4.89 17.5,4.89C18.39,4.89 19.11,5.61 19.11,6.5A1.61,1.61 0 0,1 17.5,8.11M17.5,2C15,2 13,4 13,6.5C13,9.87 17.5,14.86 17.5,14.86C17.5,14.86 22,9.87 22,6.5C22,4 20,2 17.5,2M17.5,16C16.23,16 15.1,16.8 14.68,18H9.32C8.77,16.44 7.05,15.62 5.5,16.17C3.93,16.72 3.11,18.44 3.66,20C4.22,21.56 5.93,22.38 7.5,21.83C8.35,21.53 9,20.85 9.32,20H14.69C15.24,21.56 16.96,22.38 18.5,21.83C20.08,21.28 20.9,19.56 20.35,18C19.92,16.8 18.78,16 17.5,16V16M17.5,20.5A1.5,1.5 0 0,1 16,19A1.5,1.5 0 0,1 17.5,17.5A1.5,1.5 0 0,1 19,19A1.5,1.5 0 0,1 17.5,20.5Z";
var mdiMapMarkerDown = "M12 2A7 7 0 0 0 5 9C5 14.25 12 22 12 22S19 14.25 19 9A7 7 0 0 0 12 2M7.5 10H10V5H14V10H16.5L12 14.5Z";
var mdiMapMarkerLeft = "M15 11.5C13.62 11.5 12.5 10.38 12.5 9S13.62 6.5 15 6.5 17.5 7.62 17.5 9 16.38 11.5 15 11.5M8 9C8 14.25 15 22 15 22S22 14.25 22 9C22 5.13 18.87 2 15 2S8 5.13 8 9M6 7L1 12L6 17V7Z";
var mdiMapMarkerLeftOutline = "M15 6.5C16.38 6.5 17.5 7.62 17.5 9S16.38 11.5 15 11.5 12.5 10.38 12.5 9 13.62 6.5 15 6.5M15 2C18.87 2 22 5.13 22 9C22 14.25 15 22 15 22S8 14.25 8 9C8 5.13 11.13 2 15 2M10 9C10 10 10 12 15 18.71C20 12 20 10 20 9C20 6.24 17.76 4 15 4S10 6.24 10 9M6 7L1 12L6 17V7Z";
var mdiMapMarkerMinus = "M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H23V19H15V17Z";
var mdiMapMarkerMinusOutline = "M15 17H23V19H15V17M9 6.5C10.4 6.5 11.5 7.6 11.5 9S10.4 11.5 9 11.5 6.5 10.4 6.5 9 7.6 6.5 9 6.5M9 2C12.9 2 16 5.1 16 9C16 14.2 9 22 9 22S2 14.2 2 9C2 5.1 5.1 2 9 2M9 4C6.2 4 4 6.2 4 9C4 10 4 12 9 18.7C14 12 14 10 14 9C14 6.2 11.8 4 9 4Z";
var mdiMapMarkerMultiple = "M14,11.5A2.5,2.5 0 0,0 16.5,9A2.5,2.5 0 0,0 14,6.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 14,11.5M14,2C17.86,2 21,5.13 21,9C21,14.25 14,22 14,22C14,22 7,14.25 7,9A7,7 0 0,1 14,2M5,9C5,13.5 10.08,19.66 11,20.81L10,22C10,22 3,14.25 3,9C3,5.83 5.11,3.15 8,2.29C6.16,3.94 5,6.33 5,9Z";
var mdiMapMarkerMultipleOutline = "M11.5 9C11.5 7.62 12.62 6.5 14 6.5C15.1 6.5 16.03 7.21 16.37 8.19C16.45 8.45 16.5 8.72 16.5 9C16.5 10.38 15.38 11.5 14 11.5C12.91 11.5 12 10.81 11.64 9.84C11.55 9.58 11.5 9.29 11.5 9M5 9C5 13.5 10.08 19.66 11 20.81L10 22C10 22 3 14.25 3 9C3 5.83 5.11 3.15 8 2.29C6.16 3.94 5 6.33 5 9M14 2C17.86 2 21 5.13 21 9C21 14.25 14 22 14 22C14 22 7 14.25 7 9C7 5.13 10.14 2 14 2M14 4C11.24 4 9 6.24 9 9C9 10 9 12 14 18.71C19 12 19 10 19 9C19 6.24 16.76 4 14 4Z";
var mdiMapMarkerOff = "M16.37,16.1L11.75,11.47L11.64,11.36L3.27,3L2,4.27L5.18,7.45C5.06,7.95 5,8.46 5,9C5,14.25 12,22 12,22C12,22 13.67,20.15 15.37,17.65L18.73,21L20,19.72M12,6.5A2.5,2.5 0 0,1 14.5,9C14.5,9.73 14.17,10.39 13.67,10.85L17.3,14.5C18.28,12.62 19,10.68 19,9A7,7 0 0,0 12,2C10,2 8.24,2.82 6.96,4.14L10.15,7.33C10.61,6.82 11.26,6.5 12,6.5Z";
var mdiMapMarkerOffOutline = "M20 19.7L3.3 3L2 4.3L5.2 7.5C5.1 8 5 8.5 5 9C5 14.2 12 22 12 22S13.7 20.1 15.4 17.6L18.8 21L20 19.7M12 18.7C7.4 12.5 7 10.4 7 9.3L13.8 16.1C13.3 16.9 12.7 17.7 12 18.7M8.4 5.6L7 4.2C8.2 2.8 10 2 12 2C15.9 2 19 5.1 19 9C19 10.7 18.3 12.6 17.3 14.5L15.8 13C17 10.6 17 9.6 17 9C17 6.2 14.8 4 12 4C10.6 4 9.3 4.6 8.4 5.6M12 6.5C13.4 6.5 14.5 7.6 14.5 9C14.5 9.7 14.2 10.4 13.7 10.9L10.2 7.4C10.6 6.8 11.3 6.5 12 6.5Z";
var mdiMapMarkerOutline = "M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z";
var mdiMapMarkerPath = "M18,15A3,3 0 0,1 21,18A3,3 0 0,1 18,21C16.69,21 15.58,20.17 15.17,19H14V17H15.17C15.58,15.83 16.69,15 18,15M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,8A1.43,1.43 0 0,0 19.43,6.57C19.43,5.78 18.79,5.14 18,5.14C17.21,5.14 16.57,5.78 16.57,6.57A1.43,1.43 0 0,0 18,8M18,2.57A4,4 0 0,1 22,6.57C22,9.56 18,14 18,14C18,14 14,9.56 14,6.57A4,4 0 0,1 18,2.57M8.83,17H10V19H8.83C8.42,20.17 7.31,21 6,21A3,3 0 0,1 3,18C3,16.69 3.83,15.58 5,15.17V14H7V15.17C7.85,15.47 8.53,16.15 8.83,17M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,3A3,3 0 0,1 9,6C9,7.31 8.17,8.42 7,8.83V10H5V8.83C3.83,8.42 3,7.31 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M11,19V17H13V19H11M7,13H5V11H7V13Z";
var mdiMapMarkerPlus = "M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H18V14H20V17H23V19H20V22H18V19H15V17Z";
var mdiMapMarkerPlusOutline = "M15 17H18V14H20V17H23V19H20V22H18V19H15V17M9 6.5C10.4 6.5 11.5 7.6 11.5 9S10.4 11.5 9 11.5 6.5 10.4 6.5 9 7.6 6.5 9 6.5M9 2C12.9 2 16 5.1 16 9C16 14.2 9 22 9 22S2 14.2 2 9C2 5.1 5.1 2 9 2M9 4C6.2 4 4 6.2 4 9C4 10 4 12 9 18.7C14 12 14 10 14 9C14 6.2 11.8 4 9 4Z";
var mdiMapMarkerQuestion = "M12,2C8.14,2 5,5.14 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9C19,5.14 15.86,2 12,2M12.88,15.75H11.13V14H12.88M12.88,12.88H11.13C11.13,10.04 13.75,10.26 13.75,8.5A1.75,1.75 0 0,0 12,6.75A1.75,1.75 0 0,0 10.25,8.5H8.5A3.5,3.5 0 0,1 12,5A3.5,3.5 0 0,1 15.5,8.5C15.5,10.69 12.88,10.91 12.88,12.88Z";
var mdiMapMarkerQuestionOutline = "M12,1C7.59,1 4,4.59 4,9C4,14.57 10.96,22.34 11.26,22.67L12,23.5L12.74,22.67C13.04,22.34 20,14.57 20,9C20,4.59 16.41,1 12,1M12,20.47C9.82,17.86 6,12.54 6,9A6,6 0 0,1 12,3A6,6 0 0,1 18,9C18,12.83 13.75,18.36 12,20.47M11.13,14H12.88V15.75H11.13M12,5A3.5,3.5 0 0,0 8.5,8.5H10.25A1.75,1.75 0 0,1 12,6.75A1.75,1.75 0 0,1 13.75,8.5C13.75,10.26 11.13,10.04 11.13,12.88H12.88C12.88,10.91 15.5,10.69 15.5,8.5A3.5,3.5 0 0,0 12,5Z";
var mdiMapMarkerRadius = "M12,2C15.31,2 18,4.66 18,7.95C18,12.41 12,19 12,19C12,19 6,12.41 6,7.95C6,4.66 8.69,2 12,2M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M20,19C20,21.21 16.42,23 12,23C7.58,23 4,21.21 4,19C4,17.71 5.22,16.56 7.11,15.83L7.75,16.74C6.67,17.19 6,17.81 6,18.5C6,19.88 8.69,21 12,21C15.31,21 18,19.88 18,18.5C18,17.81 17.33,17.19 16.25,16.74L16.89,15.83C18.78,16.56 20,17.71 20,19Z";
var mdiMapMarkerRadiusOutline = "M12 4C14.2 4 16 5.8 16 8C16 10.1 13.9 13.5 12 15.9C10.1 13.4 8 10.1 8 8C8 5.8 9.8 4 12 4M12 2C8.7 2 6 4.7 6 8C6 12.5 12 19 12 19S18 12.4 18 8C18 4.7 15.3 2 12 2M12 6C10.9 6 10 6.9 10 8S10.9 10 12 10 14 9.1 14 8 13.1 6 12 6M20 19C20 21.2 16.4 23 12 23S4 21.2 4 19C4 17.7 5.2 16.6 7.1 15.8L7.7 16.7C6.7 17.2 6 17.8 6 18.5C6 19.9 8.7 21 12 21S18 19.9 18 18.5C18 17.8 17.3 17.2 16.2 16.7L16.8 15.8C18.8 16.6 20 17.7 20 19Z";
var mdiMapMarkerRemove = "M9,2C5.14,2 2,5.14 2,9C2,14.25 9,22 9,22C9,22 16,14.25 16,9A7,7 0 0,0 9,2M9,6.5A2.5,2.5 0 0,1 11.5,9A2.5,2.5 0 0,1 9,11.5A2.5,2.5 0 0,1 6.5,9A2.5,2.5 0 0,1 9,6.5M16.58,14.16L15.17,15.58L17.58,18L15.17,20.41L16.58,21.82L19,19.41L21.41,21.82L22.83,20.41L20.41,18L22.83,15.58L21.41,14.16L19,16.58";
var mdiMapMarkerRemoveOutline = "M16.6 14.2L15.2 15.6L17.6 18L15.2 20.4L16.6 21.8L19 19.4L21.4 21.8L22.8 20.4L20.4 18L22.8 15.6L21.4 14.2L19 16.6M9 6.5C10.4 6.5 11.5 7.6 11.5 9S10.4 11.5 9 11.5 6.5 10.4 6.5 9 7.6 6.5 9 6.5M9 2C12.9 2 16 5.1 16 9C16 14.2 9 22 9 22S2 14.2 2 9C2 5.1 5.1 2 9 2M9 4C6.2 4 4 6.2 4 9C4 10 4 12 9 18.7C14 12 14 10 14 9C14 6.2 11.8 4 9 4Z";
var mdiMapMarkerRemoveVariant = "M12,2C8.14,2 5,5.14 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9C19,5.14 15.86,2 12,2M9.59,5.17L12,7.58L14.41,5.17L15.83,6.58L13.41,9L15.83,11.41L14.41,12.83L12,10.41L9.59,12.83L8.17,11.41L10.59,9L8.17,6.58";
var mdiMapMarkerRight = "M9 11.5C7.62 11.5 6.5 10.38 6.5 9S7.62 6.5 9 6.5 11.5 7.62 11.5 9 10.38 11.5 9 11.5M9 2C5.13 2 2 5.13 2 9C2 14.25 9 22 9 22S16 14.25 16 9C16 5.13 12.87 2 9 2M18 17L23 12L18 7V17Z";
var mdiMapMarkerRightOutline = "M9 6.5C10.38 6.5 11.5 7.62 11.5 9S10.38 11.5 9 11.5 6.5 10.38 6.5 9 7.62 6.5 9 6.5M9 2C12.87 2 16 5.13 16 9C16 14.25 9 22 9 22S2 14.25 2 9C2 5.13 5.13 2 9 2M9 4C6.24 4 4 6.24 4 9C4 10 4 12 9 18.71C14 12 14 10 14 9C14 6.24 11.76 4 9 4M18 17L23 12L18 7V17Z";
var mdiMapMarkerStar = "M12 2C8.1 2 5 5.1 5 9C5 14.2 12 22 12 22S19 14.2 19 9C19 5.1 15.9 2 12 2M14.5 13L12 11.5L9.5 13L10.2 10.2L8 8.3L10.9 8.1L12 5.4L13.1 8L16 8.3L13.8 10.2L14.5 13Z";
var mdiMapMarkerStarOutline = "M12 2C15.9 2 19 5.1 19 9C19 14.2 12 22 12 22S5 14.2 5 9C5 5.1 8.1 2 12 2M12 4C9.2 4 7 6.2 7 9C7 10 7 12 12 18.7C17 12 17 10 17 9C17 6.2 14.8 4 12 4M12 11.5L14.4 13L13.8 10.2L16 8.3L13.1 8.1L12 5.4L10.9 8L8 8.3L10.2 10.2L9.5 13L12 11.5Z";
var mdiMapMarkerUp = "M12 2A7 7 0 0 0 5 9C5 14.25 12 22 12 22S19 14.25 19 9A7 7 0 0 0 12 2M16.5 9H14V14H10V9H7.5L12 4.5Z";
var mdiMapMinus = "M15 18V20H23V18H15M13.16 20.36L9 18.9L3.66 20.97C3.6 21 3.55 21 3.5 21C3.22 21 3 20.78 3 20.5V5.38C3 5.15 3.16 4.97 3.36 4.9L9 3L15 5.1L20.34 3H20.5C20.78 3 21 3.22 21 3.5V13.35C20.37 13.13 19.7 13 19 13C17.46 13 16.06 13.58 15 14.54V7.1L9 5V16.9L13.04 18.32C13 18.54 13 18.77 13 19C13 19.47 13.06 19.92 13.16 20.36Z";
var mdiMapOutline = "M20.5,3L20.34,3.03L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21L3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19.03 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3M10,5.47L14,6.87V18.53L10,17.13V5.47M5,6.46L8,5.45V17.15L5,18.31V6.46M19,17.54L16,18.55V6.86L19,5.7V17.54Z";
var mdiMapPlus = "M9,3L3.36,4.9C3.16,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21C3.55,21 3.6,21 3.66,20.97L9,18.9L13.16,20.36C13.06,19.92 13,19.46 13,19C13,18.77 13,18.54 13.04,18.3L9,16.9V5L15,7.1V14.56C16.07,13.6 17.47,13 19,13C19.7,13 20.37,13.13 21,13.36V3.5A0.5,0.5 0 0,0 20.5,3H20.34L15,5.1L9,3M18,15V18H15V20H18V23H20V20H23V18H20V15H18Z";
var mdiMapSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M14,6.11L8,4V15.89L9,16.24V16.5C9,17.14 9.09,17.76 9.26,18.34L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2H19.5A0.5,0.5 0 0,1 20,2.5V11.81C18.83,10.69 17.25,10 15.5,10C15,10 14.5,10.06 14,10.17V6.11Z";
var mdiMapSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.2 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M19.5,2A0.5,0.5 0 0,1 20,2.5V11.81C19.42,11.26 18.75,10.81 18,10.5V4.7L15,5.86V10C14.3,10.07 13.62,10.24 13,10.5V5.87L9,4.47V16.13H9V16.5C9,17.14 9.09,17.76 9.26,18.34L8,17.9L2.66,19.97L2.5,20A0.5,0.5 0 0,1 2,19.5V4.38C2,4.15 2.15,3.97 2.36,3.9L8,2L14,4.1L19.34,2.03L19.5,2M4,5.46V17.31L7,16.15V4.45L4,5.46Z";
var mdiMapbox = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M16.75,14.45C18.65,12.55 18.58,9.39 16.59,7.41C14.6,5.43 11.45,5.35 9.55,7.25C6.12,10.68 7.22,16.78 7.22,16.78C7.22,16.78 13.33,17.87 16.75,14.45M13.15,7.86L14.13,9.87L16.14,10.85L14.13,11.83L13.15,13.84L12.17,11.83L10.16,10.85L12.17,9.87L13.15,7.86Z";
var mdiMargin = "M20,4V9L18.5,7.5L5.5,20.5L3.5,18.5L16.5,5.5L15,4H20M17,20A3,3 0 0,1 14,17V15A3,3 0 0,1 17,12A3,3 0 0,1 20,15V17A3,3 0 0,1 17,20M17,14A1,1 0 0,0 16,15V17A1,1 0 0,0 17,18A1,1 0 0,0 18,17V15A1,1 0 0,0 17,14M7,12A3,3 0 0,1 4,9V7A3,3 0 0,1 7,4A3,3 0 0,1 10,7V9A3,3 0 0,1 7,12M7,6A1,1 0 0,0 6,7V9A1,1 0 0,0 7,10A1,1 0 0,0 8,9V7A1,1 0 0,0 7,6Z";
var mdiMarker = "M18.5,1.15C17.97,1.15 17.46,1.34 17.07,1.73L11.26,7.55L16.91,13.2L22.73,7.39C23.5,6.61 23.5,5.35 22.73,4.56L19.89,1.73C19.5,1.34 19,1.15 18.5,1.15M10.3,8.5L4.34,14.46C3.56,15.24 3.56,16.5 4.36,17.31C3.14,18.54 1.9,19.77 0.67,21H6.33L7.19,20.14C7.97,20.9 9.22,20.89 10,20.12L15.95,14.16";
var mdiMarkerCancel = "M17.5,13C20,13 22,15 22,17.5C22,20 20,22 17.5,22C15,22 13,20 13,17.5C13,15 15,13 17.5,13M17.5,14.5C16.94,14.5 16.42,14.65 16,14.92L20.08,19C20.35,18.58 20.5,18.06 20.5,17.5A3,3 0 0,0 17.5,14.5M14.5,17.5A3,3 0 0,0 17.5,20.5C18.06,20.5 18.58,20.35 19,20.08L14.92,16C14.65,16.42 14.5,16.94 14.5,17.5M18.5,1.15C19,1.15 19.5,1.34 19.89,1.73L22.73,4.56C23.5,5.35 23.5,6.61 22.73,7.39L18.95,11.16C18.5,11.06 18,11 17.5,11C16.67,11 15.88,11.16 15.15,11.44L11.26,7.55L17.07,1.73C17.46,1.34 17.97,1.15 18.5,1.15M10.3,8.5L13.89,12.1C12.15,13.26 11,15.25 11,17.5C11,18 11.06,18.5 11.16,18.95L10,20.12C9.22,20.89 7.97,20.9 7.19,20.14L6.33,21H0.67L4.36,17.31C3.56,16.5 3.56,15.24 4.34,14.46L10.3,8.5Z";
var mdiMarkerCheck = "M10,16L5,11L6.41,9.58L10,13.17L17.59,5.58L19,7M19,1H5C3.89,1 3,1.89 3,3V15.93C3,16.62 3.35,17.23 3.88,17.59L12,23L20.11,17.59C20.64,17.23 21,16.62 21,15.93V3C21,1.89 20.1,1 19,1Z";
var mdiMastodon = "M20.94,14C20.66,15.41 18.5,16.96 15.97,17.26C14.66,17.41 13.37,17.56 12,17.5C9.75,17.39 8,16.96 8,16.96V17.58C8.32,19.8 10.22,19.93 12.03,20C13.85,20.05 15.47,19.54 15.47,19.54L15.55,21.19C15.55,21.19 14.27,21.87 12,22C10.75,22.07 9.19,21.97 7.38,21.5C3.46,20.45 2.78,16.26 2.68,12L2.67,8.57C2.67,4.23 5.5,2.96 5.5,2.96C6.95,2.3 9.41,2 11.97,2H12.03C14.59,2 17.05,2.3 18.5,2.96C18.5,2.96 21.33,4.23 21.33,8.57C21.33,8.57 21.37,11.78 20.94,14M18,8.91C18,7.83 17.7,7 17.15,6.35C16.59,5.72 15.85,5.39 14.92,5.39C13.86,5.39 13.05,5.8 12.5,6.62L12,7.5L11.5,6.62C10.94,5.8 10.14,5.39 9.07,5.39C8.15,5.39 7.41,5.72 6.84,6.35C6.29,7 6,7.83 6,8.91V14.17H8.1V9.06C8.1,8 8.55,7.44 9.46,7.44C10.46,7.44 10.96,8.09 10.96,9.37V12.16H13.03V9.37C13.03,8.09 13.53,7.44 14.54,7.44C15.44,7.44 15.89,8 15.89,9.06V14.17H18V8.91Z";
var mdiMaterialDesign = "M21,12C21,9.97 20.33,8.09 19,6.38V17.63C20.33,15.97 21,14.09 21,12M17.63,19H6.38C7.06,19.55 7.95,20 9.05,20.41C10.14,20.8 11.13,21 12,21C12.88,21 13.86,20.8 14.95,20.41C16.05,20 16.94,19.55 17.63,19M11,17L7,9V17H11M17,9L13,17H17V9M12,14.53L15.75,7H8.25L12,14.53M17.63,5C15.97,3.67 14.09,3 12,3C9.91,3 8.03,3.67 6.38,5H17.63M5,17.63V6.38C3.67,8.09 3,9.97 3,12C3,14.09 3.67,15.97 5,17.63M23,12C23,15.03 21.94,17.63 19.78,19.78C17.63,21.94 15.03,23 12,23C8.97,23 6.38,21.94 4.22,19.78C2.06,17.63 1,15.03 1,12C1,8.97 2.06,6.38 4.22,4.22C6.38,2.06 8.97,1 12,1C15.03,1 17.63,2.06 19.78,4.22C21.94,6.38 23,8.97 23,12Z";
var mdiMaterialUi = "M8,16.61V15.37L14,11.91V7.23L9,10.12L4,7.23V13L3,13.58L2,13V5L3.07,4.38L9,7.81L12.93,5.54L14.93,4.38L16,5V13.06L10.92,16L14.97,18.33L20,15.43V11L21,10.42L22,11V16.58L14.97,20.64L8,16.61M22,9.75L21,10.33L20,9.75V8.58L21,8L22,8.58V9.75Z";
var mdiMathCompass = "M20,19.88V22L18.2,20.83L13.41,11.83C14.07,11.62 14.67,11.28 15.19,10.83L20,19.88M15,7A3,3 0 0,1 12,10C11.85,10 11.71,10 11.56,10L5.8,20.83L4,22V19.88L9.79,9C8.69,7.77 8.79,5.87 10.03,4.76C10.57,4.28 11.27,4 12,4V2A1,1 0 0,1 13,3V4.18C14.2,4.6 15,5.73 15,7M13,7A1,1 0 0,0 12,6A1,1 0 0,0 11,7A1,1 0 0,0 12,8A1,1 0 0,0 13,7Z";
var mdiMathCos = "M4,7A2,2 0 0,0 2,9V15A2,2 0 0,0 4,17H6A2,2 0 0,0 8,15V14H6V15H4V9H6V10H8V9A2,2 0 0,0 6,7H4M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M18,7A2,2 0 0,0 16,9V11A2,2 0 0,0 18,13H20V15H16V17H20A2,2 0 0,0 22,15V13A2,2 0 0,0 20,11H18V9H22V7H18Z";
var mdiMathIntegral = "M11.5 19.1C11.3 20.2 10.9 21 10.2 21.5C9.5 22 8.6 22.1 7.5 21.9C7.1 21.8 6.3 21.7 6 21.5L6.5 20C6.8 20.1 7.4 20.3 7.7 20.3C8.8 20.5 9.4 20 9.6 18.8L12 5.2C12.2 4 12.7 3.2 13.4 2.6C14.1 2.1 15.1 1.9 16.2 2.1C16.6 2.2 17.4 2.3 18 2.6L17.5 4C17.3 3.9 16.6 3.8 16.3 3.7C15 3.5 14.3 4.1 14 5.6L11.5 19.1Z";
var mdiMathIntegralBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M15.9 6.9C15.9 6.9 15.2 6.6 14.9 6.6C14.3 6.5 13.9 6.7 13.7 7.7L12 16.8C11.8 17.6 11.5 18.2 11 18.6C10.6 18.9 10.2 19 9.7 19C8.9 19 7.7 18.5 7.7 18.5L8.2 17.1C8.2 17.1 9 17.4 9.2 17.4C9.5 17.5 9.7 17.4 9.9 17.3C10.1 17.2 10.2 16.9 10.3 16.6L11.9 7.4C12 6.6 12.4 6 12.9 5.5C13.5 5.1 14.2 5 15 5.1C15.7 5.2 16.5 5.6 16.5 5.6L15.9 6.9Z";
var mdiMathLog = "M18 7C16.9 7 16 7.9 16 9V15C16 16.1 16.9 17 18 17H20C21.1 17 22 16.1 22 15V11H20V15H18V9H22V7H18M2 7V17H8V15H4V7H2M11 7C9.9 7 9 7.9 9 9V15C9 16.1 9.9 17 11 17H13C14.1 17 15 16.1 15 15V9C15 7.9 14.1 7 13 7H11M11 9H13V15H11V9Z";
var mdiMathNorm = "M14 21V3H16V21H14M8 21V3H10V21H8Z";
var mdiMathNormBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M10 18H8V6H10V18M16 18H14V6H16V18Z";
var mdiMathSin = "M4,7A2,2 0 0,0 2,9V11A2,2 0 0,0 4,13H6V15H2V17H6A2,2 0 0,0 8,15V13A2,2 0 0,0 6,11H4V9H8V7H4M14,7V9H13V15H14V17H10V15H11V9H10V7H14M16,7V17H18V12L20,17H22V7H20V12L18,7H16Z";
var mdiMathTan = "M2,7V9H4V17H6V9H8V7H2M11,7A2,2 0 0,0 9,9V17H11V13H13V17H15V9A2,2 0 0,0 13,7H11M11,9H13V11H11V9M16,7V17H18V12L20,17H22V7H20V12L18,7H16Z";
var mdiMatrix = "M2,2H6V4H4V20H6V22H2V2M20,4H18V2H22V22H18V20H20V4M9,5H10V10H11V11H8V10H9V6L8,6.5V5.5L9,5M15,13H16V18H17V19H14V18H15V14L14,14.5V13.5L15,13M9,13C10.1,13 11,14.34 11,16C11,17.66 10.1,19 9,19C7.9,19 7,17.66 7,16C7,14.34 7.9,13 9,13M9,14C8.45,14 8,14.9 8,16C8,17.1 8.45,18 9,18C9.55,18 10,17.1 10,16C10,14.9 9.55,14 9,14M15,5C16.1,5 17,6.34 17,8C17,9.66 16.1,11 15,11C13.9,11 13,9.66 13,8C13,6.34 13.9,5 15,5M15,6C14.45,6 14,6.9 14,8C14,9.1 14.45,10 15,10C15.55,10 16,9.1 16,8C16,6.9 15.55,6 15,6Z";
var mdiMedal = "M20,2H4V4L9.81,8.36C6.14,9.57 4.14,13.53 5.35,17.2C6.56,20.87 10.5,22.87 14.19,21.66C17.86,20.45 19.86,16.5 18.65,12.82C17.95,10.71 16.3,9.05 14.19,8.36L20,4V2M14.94,19.5L12,17.78L9.06,19.5L9.84,16.17L7.25,13.93L10.66,13.64L12,10.5L13.34,13.64L16.75,13.93L14.16,16.17L14.94,19.5Z";
var mdiMedalOutline = "M14.94 19.5L12 17.77L9.06 19.5L9.84 16.16L7.25 13.92L10.66 13.63L12 10.5L13.34 13.63L16.75 13.92L14.16 16.16M20 2H4V4L8.86 7.64A8 8 0 1 0 15.14 7.64L20 4M18 15A6 6 0 1 1 10.82 9.12A5.86 5.86 0 0 1 13.18 9.12A6 6 0 0 1 18 15M12.63 7H11.37L7.37 4H16.71Z";
var mdiMedicalBag = "M10,3L8,5V7H5C3.85,7 3.12,8 3,9L2,19C1.88,20 2.54,21 4,21H20C21.46,21 22.12,20 22,19L21,9C20.88,8 20.06,7 19,7H16V5L14,3H10M10,5H14V7H10V5M11,10H13V13H16V15H13V18H11V15H8V13H11V10Z";
var mdiMeditation = "M12 4C13.11 4 14 4.89 14 6S13.11 8 12 8 10 7.11 10 6 10.9 4 12 4M21 16V14C18.76 14 16.84 13.04 15.4 11.32L14.06 9.72C13.68 9.26 13.12 9 12.53 9H11.5C10.89 9 10.33 9.26 9.95 9.72L8.61 11.32C7.16 13.04 5.24 14 3 14V16C5.77 16 8.19 14.83 10 12.75V15L6.12 16.55C5.45 16.82 5 17.5 5 18.21C5 19.2 5.8 20 6.79 20H9V19.5C9 18.12 10.12 17 11.5 17H14.5C14.78 17 15 17.22 15 17.5S14.78 18 14.5 18H11.5C10.67 18 10 18.67 10 19.5V20H17.21C18.2 20 19 19.2 19 18.21C19 17.5 18.55 16.82 17.88 16.55L14 15V12.75C15.81 14.83 18.23 16 21 16Z";
var mdiMemory = "M17,17H7V7H17M21,11V9H19V7C19,5.89 18.1,5 17,5H15V3H13V5H11V3H9V5H7C5.89,5 5,5.89 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11M13,13H11V11H13M15,9H9V15H15V9Z";
var mdiMenu = "M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z";
var mdiMenuDown = "M7,10L12,15L17,10H7Z";
var mdiMenuDownOutline = "M18,9V10.5L12,16.5L6,10.5V9H18M12,13.67L14.67,11H9.33L12,13.67Z";
var mdiMenuLeft = "M14,7L9,12L14,17V7Z";
var mdiMenuLeftOutline = "M15,18H13.5L7.5,12L13.5,6H15V18M10.33,12L13,14.67V9.33L10.33,12Z";
var mdiMenuOpen = "M21,15.61L19.59,17L14.58,12L19.59,7L21,8.39L17.44,12L21,15.61M3,6H16V8H3V6M3,13V11H13V13H3M3,18V16H16V18H3Z";
var mdiMenuRight = "M10,17L15,12L10,7V17Z";
var mdiMenuRightOutline = "M9,6H10.5L16.5,12L10.5,18H9V6M13.67,12L11,9.33V14.67L13.67,12Z";
var mdiMenuSwap = "M12,6L7,11H17L12,6M7,13L12,18L17,13H7Z";
var mdiMenuSwapOutline = "M12,3.5L6,9.5V11H18V9.5L12,3.5M12,6.33L14.67,9H9.33L12,6.33M6,13V14.5L12,20.5L18,14.5V13H6M9.33,15H14.67L12,17.67L9.33,15Z";
var mdiMenuUp = "M7,15L12,10L17,15H7Z";
var mdiMenuUpOutline = "M18,16V14.5L12,8.5L6,14.5V16H18M12,11.33L14.67,14H9.33L12,11.33Z";
var mdiMerge = "M8 17L12 13H15.2C15.6 14.2 16.7 15 18 15C19.7 15 21 13.7 21 12S19.7 9 18 9C16.7 9 15.6 9.8 15.2 11H12L8 7V3H3V8H6L10.2 12L6 16H3V21H8V17Z";
var mdiMessage = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z";
var mdiMessageAlert = "M13 11H11V5H13M13 15H11V13H13M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2Z";
var mdiMessageAlertOutline = "M13,10H11V6H13V10M13,12H11V14H13V12M22,4V16A2,2 0 0,1 20,18H6L2,22V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4M20,4H4V17.2L5.2,16H20V4Z";
var mdiMessageArrowLeft = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M16 11H11.5L13.3 12.8L12 14L8 10L12 6L13.2 7.2L11.5 9H16V11Z";
var mdiMessageArrowLeftOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M16 11V9H11.5L13.3 7.2L12 6L8 10L12 14L13.2 12.8L11.5 11H16Z";
var mdiMessageArrowRight = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M12 14L10.8 12.8L12.6 11H8V9H12.5L10.7 7.2L12 6L16 10L12 14Z";
var mdiMessageArrowRightOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M8 9V11H12.5L10.7 12.8L12 14L16 10L12 6L10.8 7.2L12.5 9H8Z";
var mdiMessageBookmark = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M19 13L16.5 11.5L14 13V5H19V13Z";
var mdiMessageBookmarkOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M18 14V6H13V14L15.5 12.5L18 14";
var mdiMessageBulleted = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M8,14H6V12H8V14M8,11H6V9H8V11M8,8H6V6H8V8M15,14H10V12H15V14M18,11H10V9H18V11M18,8H10V6H18V8Z";
var mdiMessageBulletedOff = "M1.27,1.73L0,3L2,5V22L6,18H15L20.73,23.73L22,22.46L1.27,1.73M8,14H6V12H8V14M6,11V9L8,11H6M20,2H4.08L10,7.92V6H18V8H10.08L11.08,9H18V11H13.08L20.07,18C21.14,17.95 22,17.08 22,16V4A2,2 0 0,0 20,2Z";
var mdiMessageCog = "M13.5,10A1.5,1.5 0 0,1 12,11.5C11.16,11.5 10.5,10.83 10.5,10A1.5,1.5 0 0,1 12,8.5A1.5,1.5 0 0,1 13.5,10M22,4V16A2,2 0 0,1 20,18H6L2,22V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4M16.77,11.32L15.7,10.5C15.71,10.33 15.71,10.16 15.7,10C15.72,9.84 15.72,9.67 15.7,9.5L16.76,8.68C16.85,8.6 16.88,8.47 16.82,8.36L15.82,6.63C15.76,6.5 15.63,6.47 15.5,6.5L14.27,7C14,6.8 13.73,6.63 13.42,6.5L13.23,5.19C13.21,5.08 13.11,5 13,5H11C10.88,5 10.77,5.09 10.75,5.21L10.56,6.53C10.26,6.65 9.97,6.81 9.7,7L8.46,6.5C8.34,6.46 8.21,6.5 8.15,6.61L7.15,8.34C7.09,8.45 7.11,8.58 7.21,8.66L8.27,9.5C8.23,9.82 8.23,10.16 8.27,10.5L7.21,11.32C7.12,11.4 7.09,11.53 7.15,11.64L8.15,13.37C8.21,13.5 8.34,13.53 8.46,13.5L9.7,13C9.96,13.2 10.24,13.37 10.55,13.5L10.74,14.81C10.77,14.93 10.88,15 11,15H13C13.12,15 13.23,14.91 13.25,14.79L13.44,13.47C13.74,13.34 14,13.18 14.28,13L15.53,13.5C15.65,13.5 15.78,13.5 15.84,13.37L16.84,11.64C16.9,11.53 16.87,11.4 16.77,11.32Z";
var mdiMessageCogOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M16.8 11.3L15.7 10.5V10 9.5L16.8 8.7C16.9 8.6 16.9 8.5 16.9 8.4L15.9 6.7C15.8 6.6 15.7 6.5 15.6 6.6L14.3 7C14 6.8 13.8 6.6 13.4 6.5L13.2 5.2C13.2 5.1 13.1 5 13 5H11C10.9 5 10.8 5.1 10.8 5.2L10.6 6.5C10.3 6.7 10 6.8 9.7 7L8.5 6.5C8.4 6.5 8.3 6.5 8.2 6.6L7.2 8.3C7.1 8.4 7.2 8.5 7.3 8.6L8.4 9.4V10.4L7.3 11.2C7.2 11.3 7.2 11.4 7.2 11.5L8.2 13.2C8.3 13.3 8.4 13.4 8.5 13.3L9.7 13C10 13.2 10.2 13.4 10.5 13.5L10.7 14.8C10.7 14.9 10.8 15 11 15H13C13.1 15 13.2 14.9 13.2 14.8L13.4 13.5C13.7 13.4 14 13.2 14.2 13L15.4 13.5C15.5 13.5 15.6 13.5 15.7 13.4L16.7 11.7C16.9 11.5 16.9 11.4 16.8 11.3M12 11.5C11.2 11.5 10.5 10.8 10.5 10S11.2 8.5 12 8.5 13.5 9.2 13.5 10 12.8 11.5 12 11.5Z";
var mdiMessageDraw = "M18,14H10.5L12.5,12H18M6,14V11.5L12.88,4.64C13.07,4.45 13.39,4.45 13.59,4.64L15.35,6.41C15.55,6.61 15.55,6.92 15.35,7.12L8.47,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z";
var mdiMessageFlash = "M22 4C22 2.9 21.1 2 20 2H4C2.9 2 2 2.9 2 4V22L6 18H15V10H22V4M22.5 16H20.3L22 12H17V18H19V23L22.5 16Z";
var mdiMessageFlashOutline = "M4 17.2V4H20V10H22V4C22 2.9 21.1 2 20 2H4C2.9 2 2 2.9 2 4V22L6 18H15V16H5.2L4 17.2M22.5 16H20.3L22 12H17V18H19V23L22.5 16Z";
var mdiMessageImage = "M5,14L8.5,9.5L11,12.5L14.5,8L19,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z";
var mdiMessageImageOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M5 14L8.5 9.5L11 12.5L14.5 8L19 14";
var mdiMessageLock = "M20.5 0A2.5 2.5 0 0 0 18 2.5V3A1 1 0 0 0 17 4V8A1 1 0 0 0 18 9H23A1 1 0 0 0 24 8V4A1 1 0 0 0 23 3V2.5A2.5 2.5 0 0 0 20.5 0M20.5 1A1.5 1.5 0 0 1 22 2.5V3H19V2.5A1.5 1.5 0 0 1 20.5 1M4 2A2 2 0 0 0 2 4V22L6 18H20A2 2 0 0 0 22 16V11H17C15.89 11 15 10.11 15 9V2H4Z";
var mdiMessageLockOutline = "M23 3V2.5C23 1.1 21.9 0 20.5 0S18 1.1 18 2.5V3C17.5 3 17 3.5 17 4V8C17 8.5 17.5 9 18 9H23C23.5 9 24 8.5 24 8V4C24 3.5 23.5 3 23 3M22 3H19V2.5C19 1.7 19.7 1 20.5 1S22 1.7 22 2.5V3M22 11V16C22 17.1 21.1 18 20 18H6L2 22V4C2 2.9 2.9 2 4 2H15V4H4V17.2L5.2 16H20V11H22Z";
var mdiMessageMinus = "M20 2C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H6L2 22V4C2 2.89 2.9 2 4 2H20M8 9V11H16V9H8Z";
var mdiMessageMinusOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M8 9V11H16V9H8Z";
var mdiMessageOff = "M20.95 17.75L5.2 2H20C21.1 2 22 2.89 22 4V16C22 16.76 21.57 17.41 20.95 17.75M2.39 1.73L1.11 3L2 3.9C2 3.93 2 3.97 2 4V22L6 18H16.11L20.84 22.73L22.11 21.46L2.39 1.73Z";
var mdiMessageOffOutline = "M7.2 4L5.2 2H20C21.11 2 22 2.9 22 4V16C22 16.76 21.57 17.41 20.95 17.75L19.2 16H20V4H7.2M22.11 21.46L20.84 22.73L16.11 18H6L2 22V4C2 3.97 2 3.93 2 3.9L1.11 3L2.39 1.73L6.1 5.44L16.65 16H16.66L18.66 18H18.65L22.11 21.46M14.11 16L4 5.89V18L6 16H14.11Z";
var mdiMessageOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16Z";
var mdiMessagePlus = "M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z";
var mdiMessagePlusOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M16 9V11H13V14H11V11H8V9H11V6H13V9H16Z";
var mdiMessageProcessing = "M17,11H15V9H17M13,11H11V9H13M9,11H7V9H9M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z";
var mdiMessageProcessingOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M17 11H15V9H17M13 11H11V9H13M9 11H7V9H9";
var mdiMessageQuestion = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M13 14H11V12H13V14M14.8 9C14.5 9.4 14.1 9.6 13.7 9.8C13.4 10 13.3 10.1 13.2 10.3C13 10.5 13 10.7 13 11H11C11 10.5 11.1 10.2 11.3 9.9C11.5 9.7 11.9 9.4 12.4 9.1C12.7 9 12.9 8.8 13 8.6C13.1 8.4 13.2 8.1 13.2 7.9C13.2 7.6 13.1 7.4 12.9 7.2C12.7 7 12.4 6.9 12.1 6.9C11.8 6.9 11.6 7 11.4 7.1C11.2 7.2 11.1 7.4 11.1 7.7H9.1C9.2 7 9.5 6.4 10 6C10.5 5.6 11.2 5.5 12.1 5.5C13 5.5 13.8 5.7 14.3 6.1C14.8 6.5 15.1 7.1 15.1 7.8C15.2 8.2 15.1 8.6 14.8 9Z";
var mdiMessageQuestionOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M12.2 5.5C11.3 5.5 10.6 5.7 10.1 6C9.5 6.4 9.2 7 9.3 7.7H11.3C11.3 7.4 11.4 7.2 11.6 7.1C11.8 7 12 6.9 12.3 6.9C12.6 6.9 12.9 7 13.1 7.2C13.3 7.4 13.4 7.6 13.4 7.9C13.4 8.2 13.3 8.4 13.2 8.6C13 8.8 12.8 9 12.6 9.1C12.1 9.4 11.7 9.7 11.5 9.9C11.1 10.2 11 10.5 11 11H13C13 10.7 13.1 10.5 13.1 10.3C13.2 10.1 13.4 10 13.6 9.8C14.1 9.6 14.4 9.3 14.7 8.9C15 8.5 15.1 8.1 15.1 7.7C15.1 7 14.8 6.4 14.3 6C13.9 5.7 13.1 5.5 12.2 5.5M11 12V14H13V12H11Z";
var mdiMessageReply = "M22,4C22,2.89 21.1,2 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z";
var mdiMessageReplyOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.1 2.9 18 4 18H18L22 22V4C22 2.9 21.1 2 20 2M20 17.2L18.8 16H4V4H20V17.2Z";
var mdiMessageReplyText = "M18,8H6V6H18V8M18,11H6V9H18V11M18,14H6V12H18V14M22,4A2,2 0 0,0 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z";
var mdiMessageReplyTextOutline = "M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z";
var mdiMessageSettings = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M11,24H13V22H11V24M7,24H9V22H7V24M15,24H17V22H15V24Z";
var mdiMessageSettingsOutline = "M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16M11 24H13V22H11V24M7 24H9V22H7V24M15 24H17V22H15V24";
var mdiMessageText = "M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M6,9H18V11H6M14,14H6V12H14M18,8H6V6H18";
var mdiMessageTextClock = "M22 12.41V4C22 2.9 21.11 2 20 2H4C2.9 2 2 2.9 2 4V22L6 18H9.29C10.15 20.89 12.83 23 16 23C19.86 23 23 19.87 23 16C23 14.69 22.63 13.46 22 12.41M6 6H18V8H6V6M16 9C14.1 9 12.37 9.77 11.11 11H6V9H16M6 12H10.26C9.84 12.6 9.5 13.28 9.3 14H6V12M16 20.85C13.32 20.85 11.15 18.68 11.15 16S13.32 11.15 16 11.15C18.67 11.15 20.85 13.32 20.85 16S18.67 20.85 16 20.85M16.5 15.82L18.94 17.23L18.19 18.53L15 16.69V13H16.5V15.82Z";
var mdiMessageTextClockOutline = "M22 12.41V4C22 2.9 21.11 2 20 2H4C2.9 2 2 2.89 2 4V22L6 18H9.29C10.15 20.89 12.83 23 16 23C19.86 23 23 19.87 23 16C23 14.69 22.63 13.46 22 12.41M5.17 16L4 17.17V4H20V10.26C18.86 9.47 17.5 9 16 9C14.1 9 12.37 9.77 11.11 11H6V13H9.69C9.25 13.91 9 14.93 9 16H5.17M16 20.85C13.32 20.85 11.15 18.68 11.15 16S13.32 11.15 16 11.15C18.67 11.15 20.85 13.32 20.85 16S18.67 20.85 16 20.85M18 9H6V7H18V9M16.5 15.82L18.94 17.23L18.19 18.53L15 16.69V13H16.5V15.82Z";
var mdiMessageTextLock = "M20.5 0A2.5 2.5 0 0 0 18 2.5V3A1 1 0 0 0 17 4V8A1 1 0 0 0 18 9H23A1 1 0 0 0 24 8V4A1 1 0 0 0 23 3V2.5A2.5 2.5 0 0 0 20.5 0M20.5 1A1.5 1.5 0 0 1 22 2.5V3H19V2.5A1.5 1.5 0 0 1 20.5 1M4 2A2 2 0 0 0 2 4V22L6 18H20A2 2 0 0 0 22 16V11H17C15.89 11 15 10.11 15 9V2H4M6 6H13V8H6V6M6 9H13V11H6V9M6 12H14V14H6V12Z";
var mdiMessageTextLockOutline = "M23 3V2.5C23 1.12 21.88 0 20.5 0S18 1.12 18 2.5V3C17.45 3 17 3.45 17 4V8C17 8.55 17.45 9 18 9H23C23.55 9 24 8.55 24 8V4C24 3.45 23.55 3 23 3M22 3H19V2.5C19 1.67 19.67 1 20.5 1S22 1.67 22 2.5V3M6 11H15V13H6V11M6 7H15V9H6V7M22 11V16C22 17.11 21.11 18 20 18H6L2 22V4C2 2.89 2.9 2 4 2H15V4H4V17.17L5.17 16H20V11H22Z";
var mdiMessageTextOutline = "M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M4,4V17.17L5.17,16H20V4H4M6,7H18V9H6V7M6,11H15V13H6V11Z";
var mdiMessageVideo = "M18,14L14,10.8V14H6V6H14V9.2L18,6M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z";
var mdiMeteor = "M2.8,3L19.67,18.82C19.67,18.82 20,19.27 19.58,19.71C19.17,20.15 18.63,19.77 18.63,19.77L2.8,3M7.81,4.59L20.91,16.64C20.91,16.64 21.23,17.08 20.82,17.5C20.4,17.97 19.86,17.59 19.86,17.59L7.81,4.59M4.29,8L17.39,20.03C17.39,20.03 17.71,20.47 17.3,20.91C16.88,21.36 16.34,21 16.34,21L4.29,8M12.05,5.96L21.2,14.37C21.2,14.37 21.42,14.68 21.13,15C20.85,15.3 20.47,15.03 20.47,15.03L12.05,5.96M5.45,11.91L14.6,20.33C14.6,20.33 14.82,20.64 14.54,20.95C14.25,21.26 13.87,21 13.87,21L5.45,11.91M16.38,7.92L20.55,11.74C20.55,11.74 20.66,11.88 20.5,12.03C20.38,12.17 20.19,12.05 20.19,12.05L16.38,7.92M7.56,16.1L11.74,19.91C11.74,19.91 11.85,20.06 11.7,20.2C11.56,20.35 11.37,20.22 11.37,20.22L7.56,16.1Z";
var mdiMetronome = "M12,1.75L8.57,2.67L4.06,19.53C4.03,19.68 4,19.84 4,20C4,21.11 4.89,22 6,22H18C19.11,22 20,21.11 20,20C20,19.84 19.97,19.68 19.94,19.53L18.58,14.42L17,16L17.2,17H13.41L16.25,14.16L14.84,12.75L10.59,17H6.8L10.29,4H13.71L15.17,9.43L16.8,7.79L15.43,2.67L12,1.75M11.25,5V14.75L12.75,13.25V5H11.25M19.79,7.8L16.96,10.63L16.25,9.92L14.84,11.34L17.66,14.16L19.08,12.75L18.37,12.04L21.2,9.21L19.79,7.8Z";
var mdiMetronomeTick = "M12,1.75L8.57,2.67L4.07,19.5C4.06,19.5 4,19.84 4,20C4,21.11 4.89,22 6,22H18C19.11,22 20,21.11 20,20C20,19.84 19.94,19.5 19.93,19.5L15.43,2.67L12,1.75M10.29,4H13.71L17.2,17H13V12H11V17H6.8L10.29,4M11,5V9H10V11H14V9H13V5H11Z";
var mdiMicroSd = "M8,2A2,2 0 0,0 6,4V11L4,13V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2H8M9,4H11V8H9V4M12,4H14V8H12V4M15,4H17V8H15V4Z";
var mdiMicrophone = "M12,2A3,3 0 0,1 15,5V11A3,3 0 0,1 12,14A3,3 0 0,1 9,11V5A3,3 0 0,1 12,2M19,11C19,14.53 16.39,17.44 13,17.93V21H11V17.93C7.61,17.44 5,14.53 5,11H7A5,5 0 0,0 12,16A5,5 0 0,0 17,11H19Z";
var mdiMicrophoneMinus = "M9,2A3,3 0 0,1 12,5V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V5A3,3 0 0,1 9,2M16,11C16,14.5 13.44,17.43 10,17.93V21H8V17.93C4.56,17.43 2,14.5 2,11H4A5,5 0 0,0 9,16A5,5 0 0,0 14,11H16M15,5H23V7H15V5Z";
var mdiMicrophoneOff = "M19,11C19,12.19 18.66,13.3 18.1,14.28L16.87,13.05C17.14,12.43 17.3,11.74 17.3,11H19M15,11.16L9,5.18V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V11L15,11.16M4.27,3L21,19.73L19.73,21L15.54,16.81C14.77,17.27 13.91,17.58 13,17.72V21H11V17.72C7.72,17.23 5,14.41 5,11H6.7C6.7,14 9.24,16.1 12,16.1C12.81,16.1 13.6,15.91 14.31,15.58L12.65,13.92L12,14A3,3 0 0,1 9,11V10.28L3,4.27L4.27,3Z";
var mdiMicrophoneOutline = "M17.3,11C17.3,14 14.76,16.1 12,16.1C9.24,16.1 6.7,14 6.7,11H5C5,14.41 7.72,17.23 11,17.72V21H13V17.72C16.28,17.23 19,14.41 19,11M10.8,4.9C10.8,4.24 11.34,3.7 12,3.7C12.66,3.7 13.2,4.24 13.2,4.9L13.19,11.1C13.19,11.76 12.66,12.3 12,12.3C11.34,12.3 10.8,11.76 10.8,11.1M12,14A3,3 0 0,0 15,11V5A3,3 0 0,0 12,2A3,3 0 0,0 9,5V11A3,3 0 0,0 12,14Z";
var mdiMicrophonePlus = "M9,2A3,3 0 0,1 12,5V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V5A3,3 0 0,1 9,2M16,11C16,14.5 13.44,17.43 10,17.93V21H8V17.93C4.56,17.43 2,14.5 2,11H4A5,5 0 0,0 9,16A5,5 0 0,0 14,11H16M15,5H18V2H20V5H23V7H20V10H18V7H15V5Z";
var mdiMicrophoneSettings = "M19,10H17.3C17.3,13 14.76,15.1 12,15.1C9.24,15.1 6.7,13 6.7,10H5C5,13.41 7.72,16.23 11,16.72V20H13V16.72C16.28,16.23 19,13.41 19,10M15,24H17V22H15M11,24H13V22H11M12,13A3,3 0 0,0 15,10V4A3,3 0 0,0 12,1A3,3 0 0,0 9,4V10A3,3 0 0,0 12,13M7,24H9V22H7V24Z";
var mdiMicrophoneVariant = "M9,3A4,4 0 0,1 13,7H5A4,4 0 0,1 9,3M11.84,9.82L11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V14A4,4 0 0,1 18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V19A4,4 0 0,1 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.67,9.32 5.31,8.7 5.13,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11Z";
var mdiMicrophoneVariantOff = "M2,5.27L3.28,4L20,20.72L18.73,22L16,19.26C15.86,21.35 14.12,23 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.82,9.47 5.53,9.06 5.33,8.6L2,5.27M9,3A4,4 0 0,1 13,7H8.82L6.08,4.26C6.81,3.5 7.85,3 9,3M11.84,9.82L11.82,10L9.82,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V17.27L11.35,14.62L11,18M18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V14.18L14.3,12.5C14.9,11 16.33,10 18,10M8,12A1,1 0 0,0 9,13C9.21,13 9.4,12.94 9.56,12.83L8.17,11.44C8.06,11.6 8,11.79 8,12Z";
var mdiMicroscope = "M9.46,6.28L11.05,9C8.47,9.26 6.5,11.41 6.5,14A5,5 0 0,0 11.5,19C13.55,19 15.31,17.77 16.08,16H13.5V14H21.5V16H19.25C18.84,17.57 17.97,18.96 16.79,20H19.5V22H3.5V20H6.21C4.55,18.53 3.5,16.39 3.5,14C3.5,10.37 5.96,7.2 9.46,6.28M12.74,2.07L13.5,3.37L14.36,2.87L17.86,8.93L14.39,10.93L10.89,4.87L11.76,4.37L11,3.07L12.74,2.07Z";
var mdiMicrosoft = "M2,3H11V12H2V3M11,22H2V13H11V22M21,3V12H12V3H21M21,22H12V13H21V22Z";
var mdiMicrosoftAccess = "M14.5 2.63Q15.84 2.63 17.18 2.77L17.85 2.86Q18.3 2.93 18.84 3.04 19.37 3.15 19.93 3.31 20.5 3.47 20.96 3.69 21.42 3.91 21.71 4.19 22 4.47 22 4.81V19.19Q22 19.53 21.71 19.81 21.41 20.09 20.96 20.31 20.5 20.53 19.93 20.69 19.37 20.85 18.83 20.96 18.3 21.07 17.86 21.14 17.41 21.21 17.17 21.23 15.84 21.38 14.5 21.38 13.15 21.38 11.82 21.23 11.59 21.21 11.15 21.14 10.7 21.07 10.16 20.96 9.63 20.85 9.07 20.69 8.5 20.53 8.05 20.31 7.59 20.09 7.29 19.81 7 19.53 7 19.19V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.81Q7 4.47 7.29 4.19 7.59 3.91 8.05 3.69 8.5 3.47 9.07 3.31 9.63 3.15 10.17 3.04 10.7 2.93 11.14 2.86 11.59 2.8 11.83 2.77 13.15 2.63 14.5 2.63M14.5 3.88Q13.87 3.88 13.08 3.92 12.3 3.96 11.5 4.07 10.69 4.18 9.93 4.36 9.17 4.54 8.58 4.81 9.19 5.1 9.95 5.28 10.7 5.46 11.5 5.56 12.29 5.66 13.07 5.71 13.85 5.75 14.5 5.75 15.16 5.75 15.93 5.71 16.71 5.66 17.5 5.56 18.3 5.46 19.06 5.28 19.81 5.1 20.42 4.81 19.83 4.54 19.07 4.36 18.31 4.18 17.5 4.07 16.7 3.96 15.92 3.92 15.14 3.88 14.5 3.88M5.94 13.79H8.06L8.55 15.28H10.22L7.83 8.72H6.2L3.78 15.28H5.44M20.75 19V16Q20.11 16.31 19.31 16.5 18.5 16.68 17.67 16.79 16.83 16.9 16 16.95 15.19 17 14.5 17 13.79 17 13.08 16.96 12.37 16.91 11.67 16.83 11.44 17 11.17 17H8.25V19Q8.53 19.21 9 19.38 9.5 19.56 10.07 19.68 10.65 19.81 11.29 19.9 11.92 20 12.5 20.03 13.12 20.09 13.64 20.11 14.16 20.13 14.5 20.13 14.84 20.12 15.36 20.1 15.88 20.09 16.5 20.03 17.08 20 17.71 19.9 18.35 19.81 18.93 19.68 19.5 19.56 20 19.38 20.47 19.21 20.75 19M20.75 14.63V11Q20.11 11.31 19.31 11.5 18.5 11.68 17.67 11.79 16.83 11.9 16 11.95 15.19 12 14.5 12 13.88 12 13.25 11.97 12.63 11.93 12 11.87V15.62Q12.63 15.69 13.25 15.72 13.88 15.75 14.5 15.75 14.86 15.75 15.38 15.73 15.9 15.71 16.5 15.66 17.08 15.6 17.7 15.5 18.33 15.44 18.9 15.31 19.5 15.18 19.96 15 20.45 14.85 20.75 14.63M20.75 9.63V6Q20.11 6.31 19.31 6.5 18.5 6.68 17.67 6.79 16.83 6.9 16 6.95 15.19 7 14.5 7 13.81 7 13 6.95 12.17 6.9 11.33 6.79 10.5 6.68 9.69 6.5 8.89 6.31 8.25 6V7H11.17Q11.5 7 11.76 7.24 12 7.5 12 7.83V10.62Q12.63 10.69 13.25 10.72 13.88 10.75 14.5 10.75 14.86 10.75 15.38 10.73 15.9 10.71 16.5 10.66 17.08 10.6 17.7 10.5 18.33 10.44 18.9 10.31 19.5 10.18 19.96 10 20.44 9.85 20.75 9.63M6.32 12.5L7 10.5L7.65 12.5Z";
var mdiMicrosoftAzure = "M13.05,4.24L6.56,18.05L2,18L7.09,9.24L13.05,4.24M13.75,5.33L22,19.76H6.74L16.04,18.1L11.17,12.31L13.75,5.33Z";
var mdiMicrosoftAzureDevops = "M22 18L17 22L9 19V22L4.81 16.25L17.72 17.3V6.34L22 5.65V18M4.81 16.25V8.96L17.72 6.34L10.6 2V4.84L3.97 6.76L2 9.38V15.07L4.81 16.25Z";
var mdiMicrosoftBing = "M5,3V19L8.72,21L18,15.82V11.73H18L9.77,8.95L11.38,12.84L13.94,14L8.7,16.92V4.27L5,3";
var mdiMicrosoftDynamics365 = "M6,2L17.25,8.5L13.5,11.5L6,8V2M6,9L9.5,11.25L6,22L18,9V15L6,22V9Z";
var mdiMicrosoftEdge = "M10.86 15.37C10.17 14.6 9.7 13.68 9.55 12.65C9.25 13.11 9 13.61 8.82 14.15C7.9 16.9 9.5 20.33 12.22 21.33C14.56 22.11 17.19 20.72 18.92 19.2C19.18 18.85 21.23 17.04 20.21 16.84C17.19 18.39 13.19 17.95 10.86 15.37M11.46 9.56C12.5 9.55 11.5 9.13 11.07 8.81C10.03 8.24 8.81 7.96 7.63 7.96C3.78 8 .995 10.41 2.3 14.4C3.24 18.28 6.61 21.4 10.59 21.9C8.54 20.61 7.3 18.19 7.3 15.78C7.38 13.25 8.94 10.28 11.46 9.56M2.78 8.24C5.82 6 10.66 6.18 13.28 9C14.3 10.11 15 12 14.07 13.37C12.33 15.25 17.15 15.5 18.18 15.22C21.92 14.5 22.91 10.15 21.13 7.15C19.43 3.75 15.66 1.97 11.96 2C7.9 1.93 4.25 4.5 2.78 8.24Z";
var mdiMicrosoftEdgeLegacy = "M 2.73675,10.8077C 3.8293,-1.36109 22.5157,-1.36109 21.1971,13.5579L 8.61392,13.5579C 8.61392,17.8527 14.4157,19.209 19.5394,16.3081L 19.5394,20.5276C 13.2478,23.8806 4.9972,21.4318 4.9972,14.0853C 4.9972,8.58476 9.97019,6.8142 9.97019,6.8142C 9.97019,6.8142 8.57624,8.58489 8.53857,10.0542L 15.6967,10.0542C 15.6967,2.93376 5.90137,5.57095 2.73675,10.8077 Z";
var mdiMicrosoftExcel = "M21.17 3.25Q21.5 3.25 21.76 3.5 22 3.74 22 4.08V19.92Q22 20.26 21.76 20.5 21.5 20.75 21.17 20.75H7.83Q7.5 20.75 7.24 20.5 7 20.26 7 19.92V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.08Q7 3.74 7.24 3.5 7.5 3.25 7.83 3.25M7 13.06L8.18 15.28H9.97L8 12.06L9.93 8.89H8.22L7.13 10.9L7.09 10.96L7.06 11.03Q6.8 10.5 6.5 9.96 6.25 9.43 5.97 8.89H4.16L6.05 12.08L4 15.28H5.78M13.88 19.5V17H8.25V19.5M13.88 15.75V12.63H12V15.75M13.88 11.38V8.25H12V11.38M13.88 7V4.5H8.25V7M20.75 19.5V17H15.13V19.5M20.75 15.75V12.63H15.13V15.75M20.75 11.38V8.25H15.13V11.38M20.75 7V4.5H15.13V7Z";
var mdiMicrosoftInternetExplorer = "M13,3L14,3.06C16.8,1.79 19.23,1.64 20.5,2.92C21.5,3.93 21.58,5.67 20.92,7.72C21.61,9 22,10.45 22,12L21.95,13H9.08C9.45,15.28 11.06,17 13,17C14.31,17 15.47,16.21 16.2,15H21.5C20.25,18.5 16.92,21 13,21C11.72,21 10.5,20.73 9.41,20.25C6.5,21.68 3.89,21.9 2.57,20.56C1,18.96 1.68,15.57 4,12C4.93,10.54 6.14,9.06 7.57,7.65L8.38,6.88C7.21,7.57 5.71,8.62 4.19,10.17C5.03,6.08 8.66,3 13,3M13,7C11.21,7 9.69,8.47 9.18,10.5H16.82C16.31,8.47 14.79,7 13,7M20.06,4.06C19.4,3.39 18.22,3.35 16.74,3.81C18.22,4.5 19.5,5.56 20.41,6.89C20.73,5.65 20.64,4.65 20.06,4.06M3.89,20C4.72,20.84 6.4,20.69 8.44,19.76C6.59,18.67 5.17,16.94 4.47,14.88C3.27,17.15 3,19.07 3.89,20Z";
var mdiMicrosoftOffice = "M19.94 5.59V18.39Q19.94 19.06 19.55 19.59 19.16 20.11 18.5 20.29L12.77 21.94Q12.65 21.97 12.5 22H12.28Q11.95 22 11.68 21.91 11.41 21.82 11.13 21.67L7.38 19.55Q7.17 19.43 7.05 19.24 6.93 19.05 6.93 18.81 6.93 18.45 7.19 18.2 7.44 17.95 7.8 17.95H12.66V6.14L9 7.44Q8.57 7.6 8.3 8 8.03 8.38 8.03 8.85V15.58Q8.03 16 7.82 16.34 7.62 16.68 7.25 16.88L5.53 17.82Q5.29 17.95 5.05 17.95 4.64 17.95 4.35 17.66 4.06 17.37 4.06 16.95V7.47Q4.06 6.95 4.33 6.5 4.61 6 5.06 5.74L11.22 2.24Q11.43 2.12 11.67 2.06 11.91 2 12.15 2 12.32 2 12.46 2.03 12.6 2.05 12.77 2.1L18.5 3.69Q18.83 3.78 19.09 3.96 19.35 4.14 19.54 4.39 19.74 4.65 19.84 4.95 19.94 5.26 19.94 5.59M18.62 18.39V5.59Q18.62 5.36 18.5 5.19 18.35 5 18.13 4.96L15.31 4.18Q15 4.09 14.65 4 14.32 3.89 14 3.81V20.21L18.13 19Q18.35 18.96 18.5 18.79 18.62 18.62 18.62 18.39Z";
var mdiMicrosoftOnedrive = "M18.21 10.29Q19 10.34 19.7 10.68 20.39 11 20.9 11.57 21.41 12.12 21.71 12.83 22 13.54 22 14.34 22 15.18 21.68 15.92 21.36 16.66 20.8 17.21 20.25 17.76 19.5 18.08 18.78 18.41 17.94 18.41H7Q5.97 18.41 5.06 18 4.15 17.61 3.47 16.94 2.79 16.26 2.4 15.35 2 14.44 2 13.41 2 12.59 2.26 11.83 2.5 11.08 3 10.45 3.44 9.82 4.08 9.35 4.72 8.88 5.5 8.63 5.87 8.5 6.21 8.5 6.56 8.43 6.93 8.41H6.94Q7.37 7.75 7.95 7.23 8.5 6.71 9.2 6.34 9.87 6 10.62 5.78 11.37 5.59 12.16 5.59 13.22 5.59 14.2 5.94 15.18 6.29 16 6.91 16.8 7.53 17.37 8.39 17.95 9.26 18.21 10.29M12.16 6.84Q11.05 6.84 10.06 7.3 9.06 7.75 8.36 8.6 8.73 8.7 9.07 8.85 9.4 9 9.73 9.2L13.71 11.58L16 10.62Q16.21 10.53 16.44 10.45 16.67 10.38 16.92 10.33 16.68 9.55 16.21 8.91 15.74 8.27 15.11 7.81 14.5 7.35 13.73 7.1 13 6.84 12.16 6.84M4 15.66L12.27 12.18L9.08 10.26Q8.59 9.97 8.06 9.81 7.5 9.66 6.95 9.66 6.19 9.66 5.5 9.96 4.84 10.26 4.34 10.77 3.84 11.29 3.54 11.97 3.25 12.65 3.25 13.41 3.25 14 3.45 14.59 3.64 15.19 4 15.66M17.94 17.16Q18.41 17.16 18.84 17 19.27 16.86 19.64 16.58L13.61 13L5.03 16.59Q5.47 16.86 5.97 17 6.47 17.16 7 17.16M20.45 15.61Q20.75 15 20.75 14.34 20.75 13.7 20.5 13.17 20.26 12.65 19.85 12.28 19.43 11.91 18.88 11.71 18.32 11.5 17.7 11.5 17.35 11.5 17 11.6 16.66 11.68 16.33 11.81 16 11.93 15.67 12.08 15.35 12.23 15.04 12.37Z";
var mdiMicrosoftOnenote = "M21.17 3.25Q21.5 3.25 21.76 3.5 22 3.74 22 4.08V19.92Q22 20.26 21.76 20.5 21.5 20.75 21.17 20.75H7.83Q7.5 20.75 7.24 20.5 7 20.26 7 19.92V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.08Q7 3.74 7.24 3.5 7.5 3.25 7.83 3.25M5.8 11.17L8.16 15.27H9.65V8.73H8.2V12.92L5.93 8.73H4.35V15.27H5.8M20.75 19.5V17H18.25V19.5M20.75 15.75V13.25H18.25V15.75M20.75 12V9.5H18.25V12M20.75 8.25V4.5H8.25V7H11.17Q11.5 7 11.76 7.24 12 7.5 12 7.83V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H8.25V19.5H17V8.25Z";
var mdiMicrosoftOutlook = "M8.56 12.03Q8.56 12.41 8.5 12.76 8.39 13.1 8.2 13.38 8 13.65 7.71 13.81 7.41 13.97 7 13.97 6.58 13.97 6.29 13.8 6 13.63 5.81 13.35 5.62 13.07 5.54 12.72 5.45 12.37 5.45 12 5.45 11.64 5.54 11.28 5.62 10.93 5.81 10.65 6 10.37 6.31 10.2 6.61 10.03 7.03 10.03 7.46 10.03 7.75 10.2 8.05 10.38 8.23 10.66 8.41 10.95 8.5 11.3 8.56 11.66 8.56 12.03M22 12V19.81Q22 20.2 21.73 20.5 21.45 20.75 21.06 20.75H7.94Q7.55 20.75 7.27 20.5 7 20.2 7 19.81V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H8.25V4.13Q8.25 3.76 8.5 3.5 8.76 3.25 9.13 3.25H19.87Q20.24 3.25 20.5 3.5 20.75 3.76 20.75 4.13V11.04L21.79 11.64H21.8Q21.88 11.7 21.94 11.8 22 11.89 22 12M17 5.13V7.63H19.5V5.13M17 8.88V11.38H19.5V8.88M17 12.63V14.15L19.54 12.63M12.63 5.13V7.63H15.75V5.13M12.63 8.88V11.38H15.75V8.88M12.63 12.63V14.32L14.64 15.56L15.75 14.9V12.63M9.5 5.13V7H11.27Q11.33 7 11.38 7.04V5.12M7 15.32Q7.73 15.32 8.32 15.06 8.9 14.8 9.31 14.35 9.71 13.9 9.91 13.28 10.12 12.66 10.13 11.94 10.13 11.25 9.92 10.65 9.72 10.06 9.32 9.62 8.93 9.18 8.37 8.93 7.8 8.68 7.08 8.68 6.31 8.68 5.71 8.93 5.12 9.18 4.71 9.63 4.3 10.09 4.09 10.71 3.88 11.34 3.88 12.08 3.88 12.78 4.09 13.38 4.31 13.97 4.71 14.4 5.11 14.83 5.68 15.08 6.26 15.32 7 15.32M8.25 19.5H18.57L12 15.4V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H8.25M20.75 19.39V13.36L15.83 16.31Z";
var mdiMicrosoftPowerpoint = "M13.25 3.25Q14.46 3.25 15.58 3.56 16.7 3.88 17.67 4.45 18.64 5 19.44 5.81 20.23 6.61 20.8 7.58 21.38 8.55 21.69 9.67 22 10.79 22 12 22 13.21 21.69 14.33 21.38 15.45 20.8 16.42 20.23 17.39 19.44 18.19 18.64 19 17.67 19.55 16.7 20.13 15.58 20.44 14.46 20.75 13.25 20.75 12.18 20.75 11.15 20.5 10.12 20.24 9.2 19.76 8.28 19.27 7.5 18.58 6.69 17.88 6.07 17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.25 2.5 7 2.83 7H6.07Q6.69 6.12 7.5 5.42 8.28 4.72 9.2 4.24 10.13 3.76 11.15 3.5 12.18 3.25 13.25 3.25M13.88 4.53V11.37H20.72Q20.6 10 20.03 8.81 19.46 7.62 18.55 6.7 17.64 5.79 16.43 5.22 15.23 4.65 13.88 4.53M9.5 10.84Q9.5 10.27 9.3 9.87 9.11 9.46 8.78 9.21 8.45 8.95 8 8.84 7.55 8.72 7 8.72H4.37V15.27H5.91V13H6.94Q7.42 13 7.87 12.84 8.33 12.7 8.69 12.43 9.05 12.17 9.27 11.76 9.5 11.36 9.5 10.84M13.25 19.5Q14.23 19.5 15.14 19.26 16.04 19 16.85 18.58 17.66 18.13 18.33 17.5 19 16.89 19.5 16.13 20 15.36 20.33 14.47 20.64 13.58 20.72 12.62H12.64V4.53Q11.19 4.65 9.91 5.29 8.63 5.93 7.67 7H11.17Q11.5 7 11.76 7.25 12 7.5 12 7.83V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H7.67Q8.2 17.6 8.84 18.06 9.5 18.5 10.19 18.84 10.91 19.17 11.68 19.33 12.45 19.5 13.25 19.5M6.85 10Q7.32 10 7.61 10.19 7.89 10.38 7.89 10.89 7.89 11.11 7.79 11.25 7.69 11.39 7.53 11.5 7.37 11.57 7.18 11.6 7 11.64 6.8 11.64H5.91V10H6.85Z";
var mdiMicrosoftSharepoint = "M22 13.25Q22 14.29 21.6 15.2 21.21 16.1 20.53 16.78 19.85 17.46 18.94 17.86 18.03 18.25 17 18.25 16.36 18.25 15.73 18.09 15.64 18.92 15.27 19.63 14.89 20.35 14.3 20.88 13.72 21.41 12.97 21.7 12.21 22 11.38 22 10.47 22 9.67 21.65 8.88 21.31 8.28 20.72 7.69 20.13 7.35 19.33 7 18.53 7 17.63V17.31Q7.03 17.16 7.05 17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H5.78Q5.9 5.94 6.39 5 6.87 4.11 7.63 3.44 8.38 2.76 9.34 2.38 10.3 2 11.38 2 12.54 2 13.56 2.44 14.59 2.89 15.35 3.65 16.11 4.41 16.56 5.44 17 6.46 17 7.63V7.94Q17 8.09 16.96 8.25 18 8.25 18.91 8.64 19.83 9.03 20.5 9.71 21.21 10.38 21.6 11.29 22 12.21 22 13.25M11.37 3.25Q10.56 3.25 9.83 3.54 9.09 3.82 8.5 4.32 7.94 4.82 7.55 5.5 7.17 6.2 7.05 7H11.17Q11.5 7 11.76 7.25 12 7.5 12 7.83V11.95L12.18 11.92Q12.35 11.3 12.68 10.74 13 10.17 13.47 9.72 13.92 9.27 14.5 8.93 15.04 8.6 15.67 8.43 15.75 8 15.75 7.63 15.75 6.72 15.4 5.92 15.06 5.13 14.46 4.54 13.87 3.95 13.08 3.6 12.28 3.25 11.37 3.25M7.1 15.25Q7.55 15.25 8 15.16 8.42 15.07 8.76 14.85 9.1 14.64 9.31 14.29 9.5 13.93 9.5 13.41 9.5 12.88 9.3 12.53 9.08 12.18 8.75 11.94 8.42 11.71 8.04 11.56L7.32 11.27Q7 11.14 6.77 11 6.55 10.85 6.55 10.62 6.55 10.46 6.67 10.35 6.79 10.25 6.95 10.2 7.11 10.13 7.28 10.11 7.46 10.1 7.58 10.1 8.07 10.1 8.46 10.22 8.84 10.35 9.25 10.6V9.12Q9 9.05 8.81 9 8.61 8.95 8.42 8.92 8.22 8.89 8 8.87 7.8 8.86 7.55 8.86 7.12 8.86 6.67 8.95 6.22 9.05 5.85 9.27 5.5 9.5 5.26 9.83 5.03 10.18 5.03 10.69 5.03 11.19 5.25 11.5 5.47 11.85 5.8 12.09 6.13 12.32 6.5 12.5L7.22 12.79Q7.56 12.93 7.78 13.08 8 13.24 8 13.46 8 13.65 7.89 13.76 7.79 13.87 7.63 13.92 7.5 14 7.31 14H7Q6.41 14 5.96 13.82 5.5 13.62 5.04 13.3V14.86Q6.03 15.25 7.1 15.25M11.37 20.75Q12 20.75 12.58 20.5 13.15 20.26 13.58 19.84 14 19.41 14.25 18.84 14.5 18.27 14.5 17.63 14.5 17.07 14.31 16.56 14.13 16.05 13.8 15.65 13.46 15.24 13 14.96 12.55 14.68 12 14.56V16.17Q12 16.5 11.76 16.76 11.5 17 11.17 17H8.31Q8.25 17.31 8.25 17.63 8.25 18.27 8.5 18.84 8.74 19.41 9.16 19.84 9.59 20.26 10.16 20.5 10.73 20.75 11.37 20.75M17 17Q17.77 17 18.45 16.71 19.14 16.42 19.65 15.9 20.16 15.39 20.46 14.71 20.75 14.03 20.75 13.25 20.75 12.5 20.46 11.8 20.16 11.11 19.65 10.6 19.14 10.09 18.45 9.79 17.77 9.5 17 9.5 16.23 9.5 15.55 9.8 14.87 10.1 14.36 10.61 13.85 11.12 13.55 11.8 13.25 12.5 13.25 13.25V13.46L13.27 13.68Q13.73 13.9 14.12 14.22 14.5 14.54 14.82 14.93 15.12 15.33 15.34 15.79 15.55 16.25 15.66 16.74 16.32 17 17 17Z";
var mdiMicrosoftTeams = "M19.19 8.77Q18.73 8.77 18.33 8.6 17.94 8.43 17.64 8.13 17.34 7.83 17.17 7.44 17 7.04 17 6.58 17 6.13 17.17 5.73 17.34 5.33 17.64 5.04 17.94 4.74 18.33 4.57 18.73 4.39 19.19 4.4 19.64 4.39 20.04 4.57 20.44 4.74 20.74 5.04 21.03 5.33 21.21 5.73 21.38 6.13 21.38 6.58 21.38 7.04 21.21 7.44 21.04 7.83 20.74 8.13 20.44 8.43 20.04 8.6 19.64 8.77 19.19 8.77M19.19 5.65Q18.8 5.65 18.5 5.92 18.25 6.19 18.25 6.58 18.25 6.97 18.5 7.25 18.8 7.5 19.19 7.5 19.58 7.5 19.85 7.25 20.13 7 20.13 6.58 20.13 6.19 19.85 5.92 19.58 5.65 19.19 5.65M22 10.33V15Q22 15.63 21.76 16.2 21.5 16.77 21.09 17.19 20.66 17.62 20.09 17.86 19.5 18.11 18.88 18.11 18.5 18.11 18.12 18 17.73 17.93 17.41 17.75 17.17 18.54 16.7 19.19 16.23 19.84 15.6 20.3 14.97 20.76 14.21 21 13.45 21.27 12.63 21.27 11.67 21.27 10.82 20.94 10 20.61 9.32 20 8.66 19.43 8.23 18.64 7.79 17.84 7.66 16.9H2.83Q2.5 16.9 2.24 16.65 2 16.41 2 16.07V7.73Q2 7.39 2.24 7.14 2.5 6.9 2.83 6.9H10Q9.71 6.3 9.71 5.65 9.71 5.04 9.94 4.5 10.16 4 10.56 3.58 10.96 3.19 11.5 2.96 12 2.73 12.62 2.73 13.23 2.73 13.76 2.96 14.29 3.19 14.69 3.58 15.09 4 15.31 4.5 15.54 5.04 15.54 5.65 15.54 6.25 15.31 6.79 15.09 7.32 14.69 7.71 14.29 8.11 13.76 8.34 13.23 8.57 12.62 8.57 12.47 8.57 12.31 8.55 12.16 8.53 12 8.5V9.4H21.06Q21.45 9.4 21.73 9.67 22 9.94 22 10.33M12.63 4Q12.28 4 12 4.11 11.67 4.24 11.44 4.47 11.22 4.7 11.09 5 10.96 5.31 10.96 5.65 10.96 6 11.09 6.3 11.22 6.6 11.44 6.83 11.67 7.05 12 7.19 12.28 7.32 12.63 7.32 12.97 7.32 13.27 7.19 13.57 7.05 13.8 6.83 14.03 6.6 14.16 6.3 14.3 6 14.3 5.65 14.3 5.31 14.16 5 14.03 4.7 13.8 4.47 13.57 4.24 13.27 4.11 12.97 4 12.63 4M7.78 10.18H9.66V8.62H4.34V10.18H6.22V15.18H7.78M16.38 16.27V10.65H12V16.07Q12 16.41 11.76 16.65 11.5 16.9 11.17 16.9H8.92Q9.05 17.57 9.39 18.15 9.73 18.72 10.21 19.14 10.69 19.55 11.31 19.79 11.92 20 12.63 20 13.4 20 14.08 19.73 14.76 19.43 15.28 18.92 15.79 18.41 16.08 17.73 16.38 17.05 16.38 16.27M20.75 15V10.65H17.63V16.36Q17.88 16.61 18.2 16.74 18.5 16.86 18.88 16.86 19.27 16.86 19.61 16.71 19.95 16.56 20.2 16.31 20.46 16.06 20.6 15.71 20.75 15.37 20.75 15Z";
var mdiMicrosoftVisualStudio = "M17,8.5L12.25,12.32L17,16V8.5M4.7,18.4L2,16.7V7.7L5,6.7L9.3,10.03L18,2L22,4.5V20L17,22L9.34,14.66L4.7,18.4M5,14L6.86,12.28L5,10.5V14Z";
var mdiMicrosoftVisualStudioCode = "M17,16.47V7.39L11,11.93M2.22,9.19C1.92,8.87 1.91,8.37 2.2,8.04L3.4,6.93C3.6,6.75 4.09,6.67 4.45,6.93L7.87,9.54L15.8,2.29C16.12,1.97 16.67,1.84 17.3,2.17L21.3,4.08C21.66,4.29 22,4.62 22,5.23V18.73C22,19.13 21.71,19.56 21.4,19.73L17,21.83C16.68,21.96 16.08,21.84 15.87,21.63L7.85,14.33L4.45,16.93C4.07,17.19 3.6,17.12 3.4,16.93L2.2,15.83C1.88,15.5 1.92,14.96 2.25,14.63L5.25,11.93";
var mdiMicrosoftWindows = "M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z";
var mdiMicrosoftWindowsClassic = "M2.67,5.3V5.91L1.96,6.21V5.6L2.67,5.3M2.67,11.24V11.86L1.96,12.15V11.56L2.67,11.24M2.67,17.27V17.89L1.96,18.18V17.59L2.67,17.27M2.6,7.29V7.84L2.03,8.1V7.56L2.6,7.29M2.6,9.28V9.82L2.03,10.08V9.54L2.6,9.28M2.6,13.31V13.84L2.03,14.1V13.56L2.6,13.31M2.6,15.33V15.87L2.03,16.13V15.6L2.6,15.33M4.5,5.64V6.36L3.5,6.73V6L4.5,5.64M4.5,11.66V12.37L3.5,12.74V12.03L4.5,11.66M4.5,17.7V18.41L3.5,18.81V18.1L4.5,17.7M4.43,7.72V8.38L3.64,8.68V8L4.43,7.72M4.43,9.73V10.37L3.65,10.67V10L4.43,9.73M4.43,13.74V14.38L3.65,14.69V14.03L4.43,13.74M4.43,15.76V16.41L3.65,16.72V16.06L4.43,15.76M6.31,6.09V6.94L5.05,7.43V6.59L6.31,6.09M6.31,12.11V12.96L5.05,13.45V12.61L6.31,12.11M6.31,18.08V18.93L5.05,19.43V18.58L6.31,18.08M6.25,8.18V8.94L5.19,9.34V8.61L6.25,8.18M6.25,10.18V10.93L5.19,11.35V10.6L6.25,10.18M6.25,14.19V14.94L5.19,15.37V14.62L6.25,14.19M6.25,16.14V16.9L5.19,17.32V16.57L6.25,16.14M8.29,6.04V7.16L6.72,7.78V6.67L8.29,6.04M8.29,12.06V13.19L6.72,13.8V12.68L8.29,12.06M8.29,18.03V19.15L6.72,19.77V18.66L8.29,18.03M8.2,8.13V9.16L6.89,9.69V8.66L8.2,8.13M8.2,10.13V11.15L6.89,11.68V10.65L8.2,10.13M8.2,14.15V15.18L6.89,15.7V14.67L8.2,14.15M8.2,16.1V17.12L6.89,17.64V16.63L8.2,16.1M10.34,5.85V7.32L8.61,8V6.56L10.34,5.85M10.34,11.87V13.33L8.61,14.03V12.56L10.34,11.87M10.34,17.84V19.3L8.61,20V18.54L10.34,17.84M10.26,8.05V9.28L8.78,9.87V8.64L10.26,8.05M10.26,9.97V11.2L8.78,11.78V10.56L10.26,9.97M10.26,14.06V15.31L8.78,15.88V14.65L10.26,14.06M10.26,16V17.25L8.78,17.84V16.6L10.26,16M12.45,5.12V7.12L10.59,7.89V6C11.23,5.65 11.85,5.35 12.45,5.12M12.45,7.33V9.06L10.59,9.84V8.1L12.45,7.33M12.45,9.28V11.04L10.59,11.82V10.06L12.45,9.28M12.45,11.25V13L10.59,13.77V12L12.45,11.25M12.45,13.21V15L10.59,15.78V14L12.45,13.21M12.45,15.21V16.96L10.59,17.76V16L12.45,15.21M12.45,17.17V19.04C11.72,19.32 11.1,19.59 10.59,19.84V17.96L12.45,17.17M22.04,5.18V19.23C20.85,18.44 19.37,18.05 17.59,18.05C16.12,18.05 14.47,18.35 12.65,18.96V17.06C13.62,16.69 14.68,16.42 15.84,16.26V11.69C14.86,11.81 13.8,12.15 12.65,12.71V11.4C13.64,10.94 14.71,10.63 15.84,10.46V6C14.82,6.18 13.76,6.53 12.65,7V5.03C14.27,4.34 15.86,4 17.41,4C19.09,4 20.63,4.39 22.04,5.18M20.15,6.41C19.39,6 18.5,5.82 17.42,5.82C17.29,5.82 17.17,5.83 17.05,5.84V10.38L17.46,10.37C18.37,10.37 19.27,10.5 20.15,10.8V6.41M20.15,12.1C19.34,11.74 18.43,11.56 17.44,11.56C17.31,11.56 17.18,11.57 17.05,11.58V16.16H17.46C18.45,16.16 19.35,16.28 20.15,16.53V12.1H20.15Z";
var mdiMicrosoftWord = "M21.17 3.25Q21.5 3.25 21.76 3.5 22 3.74 22 4.08V19.92Q22 20.26 21.76 20.5 21.5 20.75 21.17 20.75H7.83Q7.5 20.75 7.24 20.5 7 20.26 7 19.92V17H2.83Q2.5 17 2.24 16.76 2 16.5 2 16.17V7.83Q2 7.5 2.24 7.24 2.5 7 2.83 7H7V4.08Q7 3.74 7.24 3.5 7.5 3.25 7.83 3.25M7.03 11.34L8.23 15.28H9.6L10.91 8.72H9.53L8.75 12.6L7.64 8.85H6.5L5.31 12.62L4.53 8.72H3.09L4.4 15.28H5.77M20.75 19.5V17H8.25V19.5M20.75 15.75V12.63H12V15.75M20.75 11.38V8.25H12V11.38M20.75 7V4.5H8.25V7Z";
var mdiMicrosoftXbox = "M6.43,3.72C6.5,3.66 6.57,3.6 6.62,3.56C8.18,2.55 10,2 12,2C13.88,2 15.64,2.5 17.14,3.42C17.25,3.5 17.54,3.69 17.7,3.88C16.25,2.28 12,5.7 12,5.7C10.5,4.57 9.17,3.8 8.16,3.5C7.31,3.29 6.73,3.5 6.46,3.7M19.34,5.21C19.29,5.16 19.24,5.11 19.2,5.06C18.84,4.66 18.38,4.56 18,4.59C17.61,4.71 15.9,5.32 13.8,7.31C13.8,7.31 16.17,9.61 17.62,11.96C19.07,14.31 19.93,16.16 19.4,18.73C21,16.95 22,14.59 22,12C22,9.38 21,7 19.34,5.21M15.73,12.96C15.08,12.24 14.13,11.21 12.86,9.95C12.59,9.68 12.3,9.4 12,9.1C12,9.1 11.53,9.56 10.93,10.17C10.16,10.94 9.17,11.95 8.61,12.54C7.63,13.59 4.81,16.89 4.65,18.74C4.65,18.74 4,17.28 5.4,13.89C6.3,11.68 9,8.36 10.15,7.28C10.15,7.28 9.12,6.14 7.82,5.35L7.77,5.32C7.14,4.95 6.46,4.66 5.8,4.62C5.13,4.67 4.71,5.16 4.71,5.16C3.03,6.95 2,9.35 2,12A10,10 0 0,0 12,22C14.93,22 17.57,20.74 19.4,18.73C19.4,18.73 19.19,17.4 17.84,15.5C17.53,15.07 16.37,13.69 15.73,12.96Z";
var mdiMicrosoftXboxController = "M8.75,15.75C6.75,15.75 6,18 4,19C2,19 0.5,16 4.5,7.5H4.75L5.19,6.67C5.19,6.67 8,5 9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23.5,16 22,19 20,19C18,18 17.25,15.75 15.25,15.75H8.75M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z";
var mdiMicrosoftXboxControllerBatteryAlert = "M21,19V7H15V19H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8M17,9H19V14H17V9M17,15H19V17H17V15Z";
var mdiMicrosoftXboxControllerBatteryCharging = "M20,5H21.67C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5M21,7H15V19H21V7M15.5,14L18.5,7.5V12H20.5L17.5,18.5V14H15.5M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z";
var mdiMicrosoftXboxControllerBatteryEmpty = "M21,19V7H15V19H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z";
var mdiMicrosoftXboxControllerBatteryFull = "M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z";
var mdiMicrosoftXboxControllerBatteryLow = "M21,16V7H15V16H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z";
var mdiMicrosoftXboxControllerBatteryMedium = "M21,12V7H15V12H21M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8Z";
var mdiMicrosoftXboxControllerBatteryUnknown = "M21.67,5C22.4,5 23,5.6 23,6.33V19.67A1.33,1.33 0 0,1 21.67,21H14.33C13.6,21 13,20.4 13,19.67V16.75H7.75C5.75,16.75 5,19 3,20C1,20 -0.5,17 3.5,8.5H3.75L4.19,7.67C4.19,7.67 7,6 8.33,7.23H13V6.33A1.33,1.33 0 0,1 14.33,5H16V3H20V5H21.67M11,8A1,1 0 0,0 10,9A1,1 0 0,0 11,10A1,1 0 0,0 12,9A1,1 0 0,0 11,8M18.19,8C17.32,8 16.62,8.2 16.08,8.59C15.56,9 15.3,9.57 15.31,10.36L15.32,10.39H17.25C17.26,10.09 17.35,9.86 17.53,9.7C17.71,9.55 17.93,9.47 18.19,9.47C18.5,9.47 18.76,9.57 18.94,9.75C19.12,9.94 19.2,10.2 19.2,10.5C19.2,10.82 19.13,11.09 18.97,11.32C18.83,11.55 18.62,11.75 18.36,11.91C17.85,12.25 17.5,12.55 17.31,12.82C17.11,13.08 17,13.5 17,14H19C19,13.69 19.04,13.44 19.13,13.26C19.22,13.08 19.39,12.9 19.64,12.74C20.09,12.5 20.46,12.21 20.75,11.81C21.04,11.41 21.19,11 21.19,10.5C21.19,9.74 20.92,9.13 20.38,8.68C19.85,8.23 19.12,8 18.19,8M17,15V17H19V15H17Z";
var mdiMicrosoftXboxControllerMenu = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M6,7H18V9H6V7M6,11H18V13H6V11M6,15H18V17H6V15Z";
var mdiMicrosoftXboxControllerOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.5,15.75H8.75C6.75,15.75 6,18 4,19C2,19 0.5,16.04 4.42,7.69L2,5.27M9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23,15 22.28,18.2 20.69,18.87L7.62,5.8C8.25,5.73 8.87,5.81 9.33,6.23M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z";
var mdiMicrosoftXboxControllerView = "M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M6,7H15V9H8V14H6V7M9,10H18V17H9V10M11,12V15H16V12H11Z";
var mdiMicrosoftYammer = "M22 12Q22 12.43 21.97 12.94 21.95 13.45 21.89 13.97 21.84 14.5 21.76 15 21.68 15.5 21.56 15.89 21.5 16.07 21.38 16.19 21.24 16.3 21.04 16.3 20.95 16.3 20.66 16.23 20.37 16.16 20.03 16.07L19.39 15.88Q19.09 15.79 18.96 15.76 18.75 16.54 18.41 17.38 18.08 18.21 17.65 19 17.22 19.8 16.7 20.5 16.18 21.25 15.61 21.82L15.43 21.95Q15.33 22 15.21 22 15 22 14.84 21.84L10.1 17.11H2.85Q2.5 17.11 2.25 16.86 2 16.61 2 16.26V7.74Q2 7.39 2.25 7.14 2.5 6.89 2.85 6.89H10.1L14.83 2.16Q15 2 15.21 2 15.33 2 15.42 2.05 15.5 2.09 15.59 2.18 15.85 2.44 16.08 2.71 16.3 3 16.5 3.28 18.23 5.55 18.96 8.28 19.14 8.23 19.44 8.14 19.74 8.05 20.06 7.96 20.37 7.87 20.65 7.8 20.92 7.74 21.04 7.74 21.24 7.74 21.38 7.85 21.5 7.97 21.56 8.15 21.68 8.56 21.77 9.05 21.85 9.55 21.91 10.06 21.96 10.57 22 11.08V12M9.82 9.37Q9.82 9.06 9.62 8.85 9.4 8.64 9.1 8.64 8.9 8.64 8.72 8.74 8.55 8.85 8.45 9.03L7.15 11.47L5.89 9.03Q5.77 8.8 5.57 8.72 5.37 8.64 5.13 8.64 4.82 8.64 4.61 8.85 4.4 9.06 4.4 9.36 4.4 9.57 4.5 9.73L6.25 12.87Q6.27 12.91 6.29 12.97 6.3 13.03 6.3 13.08V14.63Q6.3 15 6.56 15.19 6.81 15.36 7.15 15.36 7.39 15.36 7.54 15.27 7.68 15.18 7.76 15.03 7.84 14.88 7.87 14.69 7.9 14.5 7.9 14.28 7.9 14 7.88 13.76 7.86 13.5 7.86 13.28 7.86 13.14 7.87 13.03 7.88 12.93 7.93 12.85L9.73 9.73Q9.83 9.55 9.83 9.37M15.17 3.63L11.8 7Q12 7.12 12.1 7.31 12.22 7.5 12.22 7.74V10.07L17.72 8.61Q17.34 7.19 16.71 6 16.08 4.77 15.17 3.63M17.73 15.42L12.22 13.95V16.26Q12.22 16.5 12.1 16.69 12 16.88 11.8 17L15.18 20.37Q16.07 19.29 16.72 18.04 17.37 16.79 17.73 15.43V15.42M20.47 14.84Q20.6 14.14 20.66 13.43 20.72 12.73 20.72 12 20.72 11.29 20.66 10.59 20.6 9.89 20.47 9.19 18.4 9.74 16.35 10.29 14.3 10.83 12.22 11.39 12.21 11.55 12.21 11.7V12.32L12.22 12.63Q14.3 13.19 16.35 13.73 18.4 14.27 20.47 14.84Z";
var mdiMicrowave = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H16V17H4V7M19,7A1,1 0 0,1 20,8A1,1 0 0,1 19,9A1,1 0 0,1 18,8A1,1 0 0,1 19,7M13,9V15H15V9H13M19,11A1,1 0 0,1 20,12A1,1 0 0,1 19,13A1,1 0 0,1 18,12A1,1 0 0,1 19,11Z";
var mdiMicrowaveOff = "M22.11 21.46L2.39 1.73L1.11 3L3.26 5.15C2.5 5.44 2 6.16 2 7V17C2 18.11 2.9 19 4 19H17.11L20.84 22.73L22.11 21.46M4 17V7H5.11L15.11 17H4M16 7V12.8L21.5 18.31C21.81 17.95 22 17.5 22 17V7C22 5.9 21.11 5 20 5H8.2L10.2 7H16M19 7C19.55 7 20 7.45 20 8S19.55 9 19 9 18 8.55 18 8 18.45 7 19 7M19 11C19.55 11 20 11.45 20 12S19.55 13 19 13 18 12.55 18 12 18.45 11 19 11M13 9.8V9H15V11.8L13 9.8Z";
var mdiMiddleware = "M23 12L19 8V11H14.82C14.4 9.84 13.3 9 12 9S9.6 9.84 9.18 11H5L2 8V16L5 13H9.18C9.6 14.16 10.7 15 12 15S14.4 14.16 14.82 13H19V16L23 12Z";
var mdiMiddlewareOutline = "M23 12L19 8V11H15.86C15.41 9.28 13.86 8 12 8S8.59 9.28 8.14 11H5L2 8V16L5 13H8.14C8.59 14.72 10.14 16 12 16S15.41 14.72 15.86 13H19V16L23 12M12 14C10.9 14 10 13.1 10 12C10 10.9 10.9 10 12 10S14 10.9 14 12C14 13.1 13.1 14 12 14Z";
var mdiMidi = "M20.15 8.26H22V15.74H20.15M13 8.26H18.43C19 8.26 19.3 8.74 19.3 9.3V14.81C19.3 15.5 19 15.74 18.38 15.74H13V11H14.87V13.91H17.5V9.95H13M10.32 8.26H12.14V15.74H10.32M2 8.26H8.55C9.1 8.26 9.41 8.74 9.41 9.3V15.74H7.59V10.15H6.5V15.74H4.87V10.15H3.83V15.74H2Z";
var mdiMidiPort = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M20.18,12C20.18,8.18 17.55,4.96 14,4.07V6H10V4.07C6.45,4.96 3.82,8.18 3.82,12A8.18,8.18 0 0,0 12,20.18A8.18,8.18 0 0,0 20.18,12M7,10.64A1.36,1.36 0 0,1 8.36,12A1.36,1.36 0 0,1 7,13.36C6.25,13.36 5.64,12.75 5.64,12C5.64,11.25 6.25,10.64 7,10.64M17,10.64A1.36,1.36 0 0,1 18.36,12A1.36,1.36 0 0,1 17,13.36A1.36,1.36 0 0,1 15.64,12A1.36,1.36 0 0,1 17,10.64M8.36,14.27A1.37,1.37 0 0,1 9.73,15.64C9.73,16.39 9.12,17 8.36,17A1.36,1.36 0 0,1 7,15.64C7,14.88 7.61,14.27 8.36,14.27M15.64,14.27C16.39,14.27 17,14.88 17,15.64A1.36,1.36 0 0,1 15.64,17C14.88,17 14.27,16.39 14.27,15.64A1.37,1.37 0 0,1 15.64,14.27M12,15.64A1.36,1.36 0 0,1 13.36,17A1.36,1.36 0 0,1 12,18.36A1.36,1.36 0 0,1 10.64,17A1.36,1.36 0 0,1 12,15.64Z";
var mdiMine = "M23,13V11H19.93C19.75,9.58 19.19,8.23 18.31,7.1L20.5,4.93L19.07,3.5L16.9,5.69C15.77,4.81 14.42,4.25 13,4.07V1H11V4.07C9.58,4.25 8.23,4.81 7.1,5.69L4.93,3.5L3.5,4.93L5.69,7.1C4.81,8.23 4.25,9.58 4.07,11H1V13H4.07C4.25,14.42 4.81,15.77 5.69,16.9L3.5,19.07L4.93,20.5L7.1,18.31C8.23,19.19 9.58,19.75 11,19.93V23H13V19.93C14.42,19.75 15.77,19.19 16.9,18.31L19.07,20.5L20.5,19.07L18.31,16.9C19.19,15.77 19.75,14.42 19.93,13H23M12,8A4,4 0 0,0 8,12H6A6,6 0 0,1 12,6V8Z";
var mdiMinecraft = "M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M6,6V10H10V12H8V18H10V16H14V18H16V12H14V10H18V6H14V10H10V6H6Z";
var mdiMiniSd = "M6,4A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V12L18,10V6A2,2 0 0,0 16,4H6M7,6H9V10H7V6M10,6H12V10H10V6M13,6H15V10H13V6Z";
var mdiMinidisc = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M12,5C15.09,5 17.82,7.04 18.7,10H16A1,1 0 0,0 15,11V13A1,1 0 0,0 16,14H18.71C17.82,16.97 15.09,19 12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiMinus = "M19,13H5V11H19V13Z";
var mdiMinusBox = "M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiMinusBoxMultiple = "M19 11H9V9H19M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z";
var mdiMinusBoxMultipleOutline = "M18 11H10V9H18M20 4V16H8V4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z";
var mdiMinusBoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M17,11V13H7V11H17Z";
var mdiMinusCircle = "M17,13H7V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiMinusCircleMultiple = "M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M20 13H10V11H20V13Z";
var mdiMinusCircleMultipleOutline = "M11 11V13H19V11H11M2 12C2 9.21 3.64 6.8 6 5.68V3.5C2.5 4.76 0 8.09 0 12S2.5 19.24 6 20.5V18.32C3.64 17.2 2 14.79 2 12M15 3C10.04 3 6 7.04 6 12S10.04 21 15 21 24 16.96 24 12 19.96 3 15 3M15 19C11.14 19 8 15.86 8 12S11.14 5 15 5 22 8.14 22 12 18.86 19 15 19Z";
var mdiMinusCircleOff = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 17.5 6.5 22 12 22C14.3 22 16.4 21.2 18 19.9L20.8 22.7L22.1 21.5M7 13V11H9.1L11.1 13H7M14.2 11L6.7 3.5C8.3 2.6 10.1 2 12 2C17.5 2 22 6.5 22 12C22 13.9 21.4 15.7 20.5 17.3L16.2 13H17V11H14.2Z";
var mdiMinusCircleOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 17.5 6.5 22 12 22C14.3 22 16.4 21.2 18 19.9L20.8 22.7L22.1 21.5M12 20C7.6 20 4 16.4 4 12C4 10.3 4.6 8.7 5.5 7.4L9.1 11H7V13H11.1L16.6 18.5C15.3 19.4 13.7 20 12 20M8.2 5L6.7 3.5C8.3 2.6 10.1 2 12 2C17.5 2 22 6.5 22 12C22 13.9 21.4 15.7 20.5 17.3L19 15.8C19.6 14.7 20 13.4 20 12C20 7.6 16.4 4 12 4C10.6 4 9.3 4.4 8.2 5M16.2 13L14.2 11H17V13H16.2Z";
var mdiMinusCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7";
var mdiMinusNetwork = "M16,11V9H8V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z";
var mdiMinusNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M15,11V9H9V11H15";
var mdiMinusThick = "M20 14H4V10H20V14Z";
var mdiMirror = "M12 1C16.69 1 20.5 5.93 20.5 12C20.5 18.08 16.69 23 12 23C7.31 23 3.5 18.08 3.5 12C3.5 5.93 7.31 1 12 1M12 3C8.41 3 5.5 7.03 5.5 12C5.5 16.97 8.41 21 12 21C15.59 21 18.5 16.97 18.5 12C18.5 7.03 15.59 3 12 3M8.29 10.28L11.53 7.03L12.59 8.09L9.35 11.34L8.29 10.28M8.7 14.61L14.36 8.95L15.42 10L9.76 15.67L8.7 14.61Z";
var mdiMixedMartialArts = "M15,10V7H7V10H15M18,7C18.28,7 18.5,7.09 18.7,7.29C18.89,7.5 19,7.73 19,8V10.78C19,10.97 18.97,11.11 18.94,11.2L18.14,15.19C18,15.72 17.7,16 17.2,16H6.8C6.27,16 5.95,15.72 5.86,15.19L5.06,11.2C5.03,11.11 5,10.97 5,10.78V5C5,4.5 5.21,4 5.6,3.61C6,3.2 6.45,3 7,3H15C15.53,3 16,3.2 16.41,3.61C16.81,4 17,4.5 17,5V8C17,7.73 17.11,7.5 17.3,7.29C17.5,7.09 17.72,7 18,7M7,20V17H17V20C17,20.3 16.91,20.53 16.71,20.72C16.5,20.91 16.27,21 16,21H8C7.73,21 7.5,20.91 7.29,20.72C7.09,20.53 7,20.3 7,20Z";
var mdiMixedReality = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3M8.25,15H9.75L10.75,11.57V15H12.25V9H10L9,12.43L8,9H5.75V15H7.25V11.57L8.25,15M13.5,9V15H15V13H16.15L17,15H18.5L17.6,12.9C18.1,12.65 18.5,12.1 18.5,11.5V10.5C18.5,9.65 17.85,9 17,9H13.5M15,10.5H17V11.5H15V10.5Z";
var mdiMolecule = "M7.27,10L9,7H14.42L15.58,5L15.5,4.5A1.5,1.5 0 0,1 17,3A1.5,1.5 0 0,1 18.5,4.5C18.5,5.21 18,5.81 17.33,5.96L16.37,7.63L17.73,10L18.59,8.5L18.5,8A1.5,1.5 0 0,1 20,6.5A1.5,1.5 0 0,1 21.5,8C21.5,8.71 21,9.3 20.35,9.46L18.89,12L20.62,15C21.39,15.07 22,15.71 22,16.5A1.5,1.5 0 0,1 20.5,18A1.5,1.5 0 0,1 19,16.5V16.24L17.73,14L16.37,16.37L17.33,18.04C18,18.19 18.5,18.79 18.5,19.5A1.5,1.5 0 0,1 17,21A1.5,1.5 0 0,1 15.5,19.5L15.58,19L14.42,17H10.58L9.42,19L9.5,19.5A1.5,1.5 0 0,1 8,21A1.5,1.5 0 0,1 6.5,19.5C6.5,18.79 7,18.19 7.67,18.04L8.63,16.37L4.38,9C3.61,8.93 3,8.29 3,7.5A1.5,1.5 0 0,1 4.5,6A1.5,1.5 0 0,1 6,7.5C6,7.59 6,7.68 6,7.76L7.27,10M10.15,9L8.42,12L10.15,15H14.85L16.58,12L14.85,9H10.15Z";
var mdiMoleculeCo = "M8 7C6.9 7 6 7.9 6 9V15C6 16.11 6.9 17 8 17H11V15H8V9H11V7H8M14 7C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9C18 7.9 17.11 7 16 7H14M14 9H16V15H14V9";
var mdiMoleculeCo2 = "M5,7A2,2 0 0,0 3,9V15A2,2 0 0,0 5,17H8V15H5V9H8V7H5M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M16,10.5V12H19V13.5H17.5A1.5,1.5 0 0,0 16,15V18H20.5V16.5H17.5V15H19A1.5,1.5 0 0,0 20.5,13.5V12A1.5,1.5 0 0,0 19,10.5H16Z";
var mdiMonitor = "M21,16H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z";
var mdiMonitorCellphone = "M23,11H18A1,1 0 0,0 17,12V21A1,1 0 0,0 18,22H23A1,1 0 0,0 24,21V12A1,1 0 0,0 23,11M23,20H18V13H23V20M20,2H2C0.89,2 0,2.89 0,4V16A2,2 0 0,0 2,18H9V20H7V22H15V20H13V18H15V16H2V4H20V9H22V4C22,2.89 21.1,2 20,2Z";
var mdiMonitorCellphoneStar = "M23,11H18A1,1 0 0,0 17,12V21A1,1 0 0,0 18,22H23A1,1 0 0,0 24,21V12A1,1 0 0,0 23,11M23,20H18V13H23V20M20,2H2C0.89,2 0,2.89 0,4V16A2,2 0 0,0 2,18H9V20H7V22H15V20H13V18H15V16H2V4H20V9H22V4C22,2.89 21.1,2 20,2M11.97,9L11,6L10.03,9H7L9.47,10.76L8.53,13.67L11,11.87L13.47,13.67L12.53,10.76L15,9H11.97Z";
var mdiMonitorClean = "M21 16H3V4H21M21 2H3C1.89 2 1 2.89 1 4V16C1 17.11 1.9 18 3 18H10V20H8V22H16V20H14V18H21C22.11 18 23 17.11 23 16V4C23 2.89 22.1 2 21 2M15 5.5L14.38 6.87L13 7.5L14.38 8.13L15 9.5L15.63 8.13L17 7.5L15.63 6.87L15 5.5M10.5 7.5L9.41 9.91L7 11L9.41 12.09L10.5 14.5L11.6 12.09L14 11L11.6 9.91L10.5 7.5";
var mdiMonitorDashboard = "M21,16V4H3V16H21M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H14V20H16V22H8V20H10V18H3C1.89,18 1,17.1 1,16V4C1,2.89 1.89,2 3,2H21M5,6H14V11H5V6M15,6H19V8H15V6M19,9V14H15V9H19M5,12H9V14H5V12M10,12H14V14H10V12Z";
var mdiMonitorEdit = "M21 2H3C1.9 2 1 2.9 1 4V16C1 17.11 1.9 18 3 18H10V20H8V22H16V20H14V18H21C22.11 18 23 17.11 23 16V4C23 2.9 22.11 2 21 2M21 16H3V4H21V16M15.84 8.2L14.83 9.21L12.76 7.18L13.77 6.16C13.97 5.95 14.31 5.94 14.55 6.16L15.84 7.41C16.05 7.62 16.06 7.96 15.84 8.2M8 11.91L12.17 7.72L14.24 9.8L10.08 14H8V11.91Z";
var mdiMonitorEye = "M3 4V16H21V4H3M3 2H21C22.1 2 23 2.89 23 4V16C23 16.53 22.79 17.04 22.41 17.41C22.04 17.79 21.53 18 21 18H14V20H16V22H8V20H10V18H3C2.47 18 1.96 17.79 1.59 17.41C1.21 17.04 1 16.53 1 16V4C1 2.89 1.89 2 3 2M10.84 8.93C11.15 8.63 11.57 8.45 12 8.45C12.43 8.46 12.85 8.63 13.16 8.94C13.46 9.24 13.64 9.66 13.64 10.09C13.64 10.53 13.46 10.94 13.16 11.25C12.85 11.56 12.43 11.73 12 11.73C11.57 11.73 11.15 11.55 10.84 11.25C10.54 10.94 10.36 10.53 10.36 10.09C10.36 9.66 10.54 9.24 10.84 8.93M10.07 12C10.58 12.53 11.28 12.82 12 12.82C12.72 12.82 13.42 12.53 13.93 12C14.44 11.5 14.73 10.81 14.73 10.09C14.73 9.37 14.44 8.67 13.93 8.16C13.42 7.65 12.72 7.36 12 7.36C11.28 7.36 10.58 7.65 10.07 8.16C9.56 8.67 9.27 9.37 9.27 10.09C9.27 10.81 9.56 11.5 10.07 12M6 10.09C6.94 7.7 9.27 6 12 6C14.73 6 17.06 7.7 18 10.09C17.06 12.5 14.73 14.18 12 14.18C9.27 14.18 6.94 12.5 6 10.09Z";
var mdiMonitorLock = "M20.5,13A2.5,2.5 0 0,1 23,15.5V16A1,1 0 0,1 24,17V21A1,1 0 0,1 23,22H18A1,1 0 0,1 17,21V17A1,1 0 0,1 18,16V15.5A2.5,2.5 0 0,1 20.5,13M20.5,14A1.5,1.5 0 0,0 19,15.5V16H22V15.5A1.5,1.5 0 0,0 20.5,14M20,4H2V16H15V18H13V20H15V22H7V20H9V18H2C0.89,18 0,17.1 0,16V4C0,2.89 0.89,2 2,2H20A2,2 0 0,1 22,4V11.53C21.41,11.19 20.73,11 20,11V4Z";
var mdiMonitorMultiple = "M22,17V7H6V17H22M22,5A2,2 0 0,1 24,7V17C24,18.11 23.1,19 22,19H16V21H18V23H10V21H12V19H6C4.89,19 4,18.11 4,17V7A2,2 0 0,1 6,5H22M2,3V15H0V3A2,2 0 0,1 2,1H20V3H2Z";
var mdiMonitorOff = "M14,18V20H16V22H8V20H10V18H3A2,2 0 0,1 1,16V4L0,3L1.41,1.58L22.16,22.34L20.75,23.75L15,18H14M3,16H13L3,6V16M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H20.66L18.66,16H21V4H6.66L4.66,2H21Z";
var mdiMonitorScreenshot = "M9,6H5V10H7V8H9M19,10H17V12H15V14H19M21,16H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2";
var mdiMonitorShare = "M23 4V16C23 17.11 22.11 18 21 18H15V16H21V4H3V16H9V18H3C1.9 18 1 17.11 1 16V4C1 2.89 1.89 2 3 2H21C22.1 2 23 2.89 23 4M13 13H16L12 9L8 13H11V20H8V22H16V20H13V13Z";
var mdiMonitorSpeaker = "M10 20V18H3C1.9 18 1 17.1 1 16V4C1 2.89 1.89 2 3 2H21C22.1 2 23 2.89 23 4V8H21V4H3V16H12V22H8V20H10M18.5 15C17.12 15 16 16.12 16 17.5S17.12 20 18.5 20 21 18.88 21 17.5 19.88 15 18.5 15M23 10V21C23 21.55 22.55 22 22 22H15C14.45 22 14 21.55 14 21V10C14 9.45 14.45 9 15 9H22C22.55 9 23 9.45 23 10M17 11.5C17 12.33 17.67 13 18.5 13S20 12.33 20 11.5 19.33 10 18.5 10 17 10.67 17 11.5M22 17.5C22 15.57 20.43 14 18.5 14S15 15.57 15 17.5 16.57 21 18.5 21 22 19.43 22 17.5Z";
var mdiMonitorSpeakerOff = "M23.1 22.5L1.4.7.1 2L1.2 3.1C1.1 3.4 1 3.7 1 4V16C1 17.1 1.9 18 3 18H10V20H8V22H12V16H3V4.9L14 15.9V21C14 21.6 14.5 22 15 22H20.1L21.8 23.7L23.1 22.5M18.5 21C16.6 21 15 19.4 15 17.5C15 17.3 15 17.1 15.1 16.9L16.1 17.9C16.3 18.9 17.1 19.7 18.1 19.9L19.1 20.9C18.9 21 18.7 21 18.5 21M21 17.5V17.8L18.2 15H18.5C19.9 15 21 16.1 21 17.5M23 19.8V10C23 9.4 22.5 9 22 9H15C14.4 9 14 9.5 14 10V10.8L17.4 14.2C17.7 14.1 18.1 14 18.5 14C20.4 14 22 15.6 22 17.5C22 17.9 21.9 18.3 21.8 18.6L23 19.8M18.5 13C17.7 13 17 12.3 17 11.5S17.7 10 18.5 10 20 10.7 20 11.5 19.3 13 18.5 13M7.2 4L5.2 2H21C22.1 2 23 2.9 23 4V8H21V4H7.2Z";
var mdiMonitorStar = "M21,16V4H3V16H21M21,2A2,2 0 0,1 23,4V16A2,2 0 0,1 21,18H14V20H16V22H8V20H10V18H3C1.89,18 1,17.1 1,16V4C1,2.89 1.89,2 3,2H21M12.97,9H16L13.53,10.76L14.47,13.67L12,11.87L9.53,13.67L10.47,10.76L8,9H11.03L12,6L12.97,9Z";
var mdiMoonFirstQuarter = "M12 2V22A10 10 0 0 0 12 2Z";
var mdiMoonFull = "M12 2A10 10 0 1 1 2 12A10 10 0 0 1 12 2Z";
var mdiMoonLastQuarter = "M12 2A10 10 0 0 0 12 22Z";
var mdiMoonNew = "M12 20A8 8 0 1 1 20 12A8 8 0 0 1 12 20M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2Z";
var mdiMoonWaningCrescent = "M2 12A10 10 0 0 0 15 21.54A10 10 0 0 1 15 2.46A10 10 0 0 0 2 12Z";
var mdiMoonWaningGibbous = "M18 12C18 7.5 16.08 3.26 12 2A10 10 0 0 0 12 22C16.08 20.74 18 16.5 18 12Z";
var mdiMoonWaxingCrescent = "M12 2A9.91 9.91 0 0 0 9 2.46A10 10 0 0 1 9 21.54A10 10 0 1 0 12 2Z";
var mdiMoonWaxingGibbous = "M6 12C6 7.5 7.93 3.26 12 2A10 10 0 0 1 12 22C7.93 20.74 6 16.5 6 12Z";
var mdiMoped = "M19 15C19.55 15 20 15.45 20 16C20 16.55 19.55 17 19 17S18 16.55 18 16C18 15.45 18.45 15 19 15M19 13C17.34 13 16 14.34 16 16S17.34 19 19 19 22 17.66 22 16 20.66 13 19 13M10 6H5V8H10V6M17 5H14V7H17V9.65L13.5 14H10V9H6C3.79 9 2 10.79 2 13V16H4C4 17.66 5.34 19 7 19S10 17.66 10 16H14.5L19 10.35V7C19 5.9 18.11 5 17 5M7 17C6.45 17 6 16.55 6 16H8C8 16.55 7.55 17 7 17Z";
var mdiMopedElectric = "M19 5C19 3.9 18.1 3 17 3H14V5H17V7.65L13.5 12H10V7H6C3.79 7 2 8.79 2 11V14H4C4 15.66 5.34 17 7 17S10 15.66 10 14H14.5L19 8.35V5M7 15C6.45 15 6 14.55 6 14H8C8 14.55 7.55 15 7 15M5 4H10V6H5V4M19 11C17.34 11 16 12.34 16 14S17.34 17 19 17 22 15.66 22 14 20.66 11 19 11M19 15C18.45 15 18 14.55 18 14S18.45 13 19 13 20 13.45 20 14 19.55 15 19 15M7 20H11V18L17 21H13V23L7 20Z";
var mdiMopedElectricOutline = "M19 5C19 3.9 18.1 3 17 3H14V5H17V7.65L13.5 12H10V7H6C3.79 7 2 8.79 2 11V14H4C4 15.66 5.34 17 7 17S10 15.66 10 14H14.5L19 8.35V5M4 12V11C4 9.9 4.9 9 6 9H8V12H4M7 15C6.45 15 6 14.55 6 14H8C8 14.55 7.55 15 7 15M5 4H10V6H5V4M19 11C17.34 11 16 12.34 16 14S17.34 17 19 17 22 15.66 22 14 20.66 11 19 11M19 15C18.45 15 18 14.55 18 14S18.45 13 19 13 20 13.45 20 14 19.55 15 19 15M7 20H11V18L17 21H13V23L7 20Z";
var mdiMopedOutline = "M19 7C19 5.9 18.11 5 17 5H14V7H17V9.65L13.5 14H10V9H6C3.79 9 2 10.79 2 13V16H4C4 17.66 5.34 19 7 19S10 17.66 10 16H14.5L19 10.35V7M7 17C6.45 17 6 16.55 6 16H8C8 16.55 7.55 17 7 17M8 14H4V13C4 11.9 4.9 11 6 11H8V14M19 13C17.34 13 16 14.34 16 16S17.34 19 19 19 22 17.66 22 16 20.66 13 19 13M19 17C18.45 17 18 16.55 18 16S18.45 15 19 15 20 15.45 20 16 19.55 17 19 17M10 8H5V6H10V8Z";
var mdiMore = "M19,13.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 19,13.5M14,13.5A1.5,1.5 0 0,1 12.5,12A1.5,1.5 0 0,1 14,10.5A1.5,1.5 0 0,1 15.5,12A1.5,1.5 0 0,1 14,13.5M9,13.5A1.5,1.5 0 0,1 7.5,12A1.5,1.5 0 0,1 9,10.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 9,13.5M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.37,21 7.06,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3Z";
var mdiMotherHeart = "M12 2C13.66 2 15 3.34 15 5S13.66 8 12 8 9 6.66 9 5 10.34 2 12 2M20 18L18 12.56C17.65 11.57 17.34 10.71 16 10C14.63 9.3 13.63 9 12 9C10.39 9 9.39 9.3 8 10C6.68 10.71 6.37 11.57 6 12.56L4 18C3.77 19.13 6.38 20.44 8.13 21.19C9.34 21.72 10.64 22 12 22C13.38 22 14.67 21.72 15.89 21.19C17.64 20.44 20.25 19.13 20 18M15.42 17.5L12 21L8.58 17.5C8.22 17.12 8 16.61 8 16.05C8 14.92 8.9 14 10 14C10.55 14 11.06 14.23 11.42 14.61L12 15.2L12.58 14.6C12.94 14.23 13.45 14 14 14C15.11 14 16 14.92 16 16.05C16 16.61 15.78 17.13 15.42 17.5Z";
var mdiMotherNurse = "M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M20,18L18,12.56C17.65,11.57 17.34,10.71 16,10C14.62,9.3 13.62,9 12,9C10.37,9 9.38,9.3 8,10C6.66,10.71 6.35,11.57 6,12.56L4,18C3.68,19.35 6.36,20.44 8.11,21.19V19C8.11,18.05 8.97,17.38 10.69,16.97C10.85,16.93 11,16.91 11.12,16.89C10.58,16.07 10.36,15.34 10.34,15.28L12.11,14.68C12.12,14.7 12.63,16.27 13.84,17.06C14.05,17.13 14.26,17.21 14.46,17.3C15.23,17.64 15.69,18.08 15.84,18.61C14.5,19.14 13.22,19.41 12,19.41L11,19.31V21.94L12,22C13.37,22 14.67,21.72 15.89,21.19C17.64,20.44 20.25,19.13 20,18M15.5,17A1.5,1.5 0 0,1 14,15.5A1.5,1.5 0 0,1 15.5,14A1.5,1.5 0 0,1 17,15.5A1.5,1.5 0 0,1 15.5,17Z";
var mdiMotion = "M7 13H3C2.45 13 2 12.55 2 12S2.45 11 3 11H7C7.55 11 8 11.45 8 12S7.55 13 7 13M6 8C6 7.45 5.55 7 5 7H4C3.45 7 3 7.45 3 8S3.45 9 4 9H5C5.55 9 6 8.55 6 8M22 12C22 14.76 19.76 17 17 17H4C3.45 17 3 16.55 3 16S3.45 15 4 15H13C12.58 14.42 12.25 13.74 12.1 13H10C9.45 13 9 12.55 9 12S9.45 11 10 11H12.1C12.25 10.26 12.58 9.58 13 9H8C7.45 9 7 8.55 7 8S7.45 7 8 7H17C19.76 7 22 9.24 22 12Z";
var mdiMotionOutline = "M7 13H3C2.45 13 2 12.55 2 12S2.45 11 3 11H7C7.55 11 8 11.45 8 12S7.55 13 7 13M6 8C6 7.45 5.55 7 5 7H4C3.45 7 3 7.45 3 8S3.45 9 4 9H5C5.55 9 6 8.55 6 8M22 12C22 14.76 19.76 17 17 17H4C3.45 17 3 16.55 3 16S3.45 15 4 15H13C12.58 14.42 12.25 13.74 12.1 13H10C9.45 13 9 12.55 9 12S9.45 11 10 11H12.1C12.25 10.26 12.58 9.58 13 9H8C7.45 9 7 8.55 7 8S7.45 7 8 7H17C19.76 7 22 9.24 22 12M20 12C20 10.35 18.65 9 17 9S14 10.35 14 12C14 13.65 15.35 15 17 15S20 13.65 20 12Z";
var mdiMotionPause = "M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97M18 12C18 8.67 15.33 6 12 6C8.67 6 6 8.67 6 12C6 15.33 8.67 18 12 18C15.33 18 18 15.33 18 12M11 9V15H9V9M15 9V15H13V9";
var mdiMotionPauseOutline = "M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7M9 9H11V15H9M13 9H15V15H13";
var mdiMotionPlay = "M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97M18 12C18 8.67 15.33 6 12 6C8.67 6 6 8.67 6 12C6 15.33 8.67 18 12 18C15.33 18 18 15.33 18 12M15 12L10 15V9";
var mdiMotionPlayOutline = "M10 16.5L16 12L10 7.5M22 12C22 6.46 17.54 2 12 2C10.83 2 9.7 2.19 8.62 2.56L9.32 4.5C10.17 4.16 11.06 3.97 12 3.97C16.41 3.97 20.03 7.59 20.03 12C20.03 16.41 16.41 20.03 12 20.03C7.59 20.03 3.97 16.41 3.97 12C3.97 11.06 4.16 10.12 4.5 9.28L2.56 8.62C2.19 9.7 2 10.83 2 12C2 17.54 6.46 22 12 22C17.54 22 22 17.54 22 12M5.47 3.97C6.32 3.97 7 4.68 7 5.47C7 6.32 6.32 7 5.47 7C4.68 7 3.97 6.32 3.97 5.47C3.97 4.68 4.68 3.97 5.47 3.97Z";
var mdiMotionSensor = "M10,0.2C9,0.2 8.2,1 8.2,2C8.2,3 9,3.8 10,3.8C11,3.8 11.8,3 11.8,2C11.8,1 11,0.2 10,0.2M15.67,1A7.33,7.33 0 0,0 23,8.33V7A6,6 0 0,1 17,1H15.67M18.33,1C18.33,3.58 20.42,5.67 23,5.67V4.33C21.16,4.33 19.67,2.84 19.67,1H18.33M21,1A2,2 0 0,0 23,3V1H21M7.92,4.03C7.75,4.03 7.58,4.06 7.42,4.11L2,5.8V11H3.8V7.33L5.91,6.67L2,22H3.8L6.67,13.89L9,17V22H10.8V15.59L8.31,11.05L9.04,8.18L10.12,10H15V8.2H11.38L9.38,4.87C9.08,4.37 8.54,4.03 7.92,4.03Z";
var mdiMotionSensorOff = "M11.4 8.2H15V10H13.2L11.4 8.2M19.67 1H18.33C18.33 3.58 20.42 5.67 23 5.67V4.33C21.16 4.33 19.67 2.84 19.67 1M21 1C21 2.11 21.9 3 23 3V1H21M17 1H15.67C15.67 5.05 18.95 8.33 23 8.33V7C19.69 7 17 4.31 17 1M10 3.8C11 3.8 11.8 3 11.8 2S11 .2 10 .2 8.2 1 8.2 2 9 3.8 10 3.8M2.39 1.73L1.11 3L3.46 5.35L2 5.8V11H3.8V7.33L5.05 6.94L5.68 7.57L2 22H3.8L6.67 13.89L9 17V22H10.8V15.59L8.31 11.05L8.5 10.37L20.84 22.73L22.11 21.46L2.39 1.73M9.38 4.87C9.08 4.37 8.54 4.03 7.92 4.03C7.75 4.03 7.58 4.06 7.42 4.11L7.34 4.14L11.35 8.15L9.38 4.87Z";
var mdiMotorbike = "M17.42,10L13.41,6H9V8H12.59L14.59,10H6.5C4,10 2,12 2,14.5C2,17 4,19 6.5,19C8.72,19 10.56,17.38 10.92,15.27L13.04,14C13,14.17 13,14.33 13,14.5C13,17 15,19 17.5,19C20,19 22,17 22,14.5C22,12 20,10 17.5,10M8.84,15.26C8.5,16.27 7.58,17 6.47,17C5.09,17 3.97,15.88 3.97,14.5C3.97,13.12 5.09,12 6.47,12C7.59,12 8.5,12.74 8.84,13.75H6V15.25L8.84,15.26M17.47,17C16.09,17 14.97,15.88 14.97,14.5C14.97,13.12 16.09,12 17.47,12A2.5,2.5 0 0,1 19.97,14.5A2.5,2.5 0 0,1 17.47,17Z";
var mdiMotorbikeElectric = "M17.42 8L13.41 4H9V6H12.59L14.59 8H6.5C4 8 2 10 2 12.5S4 17 6.5 17C8.72 17 10.56 15.38 10.92 13.27L13.04 12C13 12.17 13 12.33 13 12.5C13 15 15 17 17.5 17S22 15 22 12.5 20 8 17.5 8M8.84 13.26C8.5 14.27 7.58 15 6.47 15C5.09 15 3.97 13.88 3.97 12.5S5.09 10 6.47 10C7.59 10 8.5 10.74 8.84 11.75H6V13.25L8.84 13.26M17.47 15C16.09 15 14.97 13.88 14.97 12.5S16.09 10 17.47 10C18.85 10 19.97 11.12 19.97 12.5S18.85 15 17.47 15M11 20H7L13 23V21H17L11 18V20Z";
var mdiMouse = "M11,1.07C7.05,1.56 4,4.92 4,9H11M4,15A8,8 0 0,0 12,23A8,8 0 0,0 20,15V11H4M13,1.07V9H20C20,4.92 16.94,1.56 13,1.07Z";
var mdiMouseBluetooth = "M20,7H20.5L23.35,9.85L21.21,12L23.35,14.14L20.5,17H20V13.21L17.71,15.5L17,14.79L19.79,12L17,9.21L17.71,8.5L20,10.79V7M21,8.91V10.79L21.94,9.85L21,8.91M21,13.21V15.08L21.94,14.14L21,13.21M15,9V10H9V2.07C12.39,2.56 15,5.47 15,9M1,10V9C1,5.47 3.61,2.56 7,2.07V10H1M15,15A7,7 0 0,1 8,22A7,7 0 0,1 1,15V12H15V15Z";
var mdiMouseMoveDown = "M7 9H2C2 6.04 4.17 3.57 7 3.09V9M20 7H18V13H15L19 17L23 13H20V7M9 3.09V9H14C14 6.04 11.83 3.57 9 3.09M2 15C2 18.3 4.7 21 8 21S14 18.3 14 15V11H2V15Z";
var mdiMouseMoveUp = "M7 9H2C2 6.04 4.17 3.57 7 3.09V9M18 17H20V11H23L19 7L15 11H18V17M9 3.09V9H14C14 6.04 11.83 3.57 9 3.09M2 15C2 18.3 4.7 21 8 21S14 18.3 14 15V11H2V15Z";
var mdiMouseMoveVertical = "M20 6H23L19 2L15 6H18V18H15L19 22L23 18H20V6M9 3.09C11.83 3.57 14 6.04 14 9H9V3.09M14 11V15C14 18.3 11.3 21 8 21S2 18.3 2 15V11H14M7 9H2C2 6.04 4.17 3.57 7 3.09V9Z";
var mdiMouseOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17.5,20.79C16.08,22.16 14.14,23 12,23A8,8 0 0,1 4,15V11H7.73L5.73,9H4C4,8.46 4.05,7.93 4.15,7.42L2,5.27M11,1.07V9H10.82L5.79,3.96C7.05,2.4 8.9,1.33 11,1.07M20,11V15C20,15.95 19.83,16.86 19.53,17.71L12.82,11H20M13,1.07C16.94,1.56 20,4.92 20,9H13V1.07Z";
var mdiMouseVariant = "M14,7H10V2.1C12.28,2.56 14,4.58 14,7M4,7C4,4.58 5.72,2.56 8,2.1V7H4M14,12C14,14.42 12.28,16.44 10,16.9V18A3,3 0 0,0 13,21A3,3 0 0,0 16,18V13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13H18V18A5,5 0 0,1 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H14V12Z";
var mdiMouseVariantOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17.29,20.56C16.42,22 14.82,23 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H5.73L2,5.27M14,7H10V2.1C12.28,2.56 14,4.58 14,7M8,2.1V6.18L5.38,3.55C6.07,2.83 7,2.31 8,2.1M14,12V12.17L10.82,9H14V12M10,16.9V18A3,3 0 0,0 13,21C14.28,21 15.37,20.2 15.8,19.07L12.4,15.67C11.74,16.28 10.92,16.71 10,16.9M16,13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13V16.18L16,14.18V13Z";
var mdiMoveResize = "M9,1V2H10V5H9V6H12V5H11V2H12V1M9,7C7.89,7 7,7.89 7,9V21C7,22.11 7.89,23 9,23H21C22.11,23 23,22.11 23,21V9C23,7.89 22.11,7 21,7M1,9V12H2V11H5V12H6V9H5V10H2V9M9,9H21V21H9M14,10V11H15V16H11V15H10V18H11V17H15V19H14V20H17V19H16V17H19V18H20V15H19V16H16V11H17V10";
var mdiMoveResizeVariant = "M1.88,0.46L0.46,1.88L5.59,7H2V9H9V2H7V5.59M11,7V9H21V15H23V9A2,2 0 0,0 21,7M7,11V21A2,2 0 0,0 9,23H15V21H9V11M15.88,14.46L14.46,15.88L19.6,21H17V23H23V17H21V19.59";
var mdiMovie = "M18,4L20,8H17L15,4H13L15,8H12L10,4H8L10,8H7L5,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V4H18Z";
var mdiMovieCheck = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z";
var mdiMovieCheckOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z";
var mdiMovieCog = "M12 19C12 19.34 12.03 19.67 12.08 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V12.68C21.09 12.25 20.08 12 19 12C15.13 12 12 15.13 12 19M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z";
var mdiMovieCogOutline = "M12 19C12 19.34 12.03 19.67 12.08 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V12.68C21.38 12.39 20.71 12.18 20 12.08V10H5.76L4 6.47V18H12.08C12.03 18.33 12 18.66 12 19M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z";
var mdiMovieEdit = "M21.04 11.13C20.9 11.13 20.76 11.19 20.65 11.3L19.65 12.3L21.7 14.35L22.7 13.35C22.92 13.14 22.92 12.79 22.7 12.58L21.42 11.3C21.31 11.19 21.18 11.13 21.04 11.13M19.07 12.88L13 18.94V21H15.06L21.12 14.93L19.07 12.88M11 20H3C1.9 20 1 19.11 1 18V6C1 4.89 1.9 4 3 4H4L6 8H9L7 4H9L11 8H14L12 4H14L16 8H19L17 4H21V8.12L11 18.11V20Z";
var mdiMovieEditOutline = "M21 4V8.12L19.12 10H4.76L3 6.47V18H11V20H3C1.9 20 1 19.11 1 18V6C1 4.89 1.9 4 3 4H4L6 8H9L7 4H9L11 8H14L12 4H14L16 8H19L17 4H21M21.42 12.3L22.7 13.58C22.92 13.79 22.92 14.14 22.7 14.35L21.7 15.35L19.65 13.3L20.65 12.3C20.76 12.19 20.9 12.13 21.04 12.13C21.18 12.13 21.31 12.19 21.42 12.3M21.12 15.93L15.06 22H13V19.94L19.07 13.88L21.12 15.93Z";
var mdiMovieFilter = "M18 4L20 7H17L15 4H13L15 7H12L10 4H8L10 7H7L5 4H4C2.9 4 2 4.9 2 6L2 18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V4H18M11.25 15.25L10 18L8.75 15.25L6 14L8.75 12.75L10 10L11.25 12.75L14 14L11.25 15.25M16.94 11.94L16 14L15.06 11.94L13 11L15.06 10.06L16 8L16.94 10.06L19 11L16.94 11.94Z";
var mdiMovieFilterOutline = "M10 11L9.06 13.06L7 14L9.06 14.94L10 17L10.94 14.94L13 14L10.94 13.06M18 4L20 8H17L15 4H13L15 8H12L10 4H8L10 8H7L5 4H4C2.91 4 2 4.9 2 6L2 18C2 19.1 2.91 20 4 20H20C21.11 20 22 19.1 22 18V4H18M20 18H4V6.47L5.77 10H16L15.37 11.37L14 12L15.37 12.63L16 14L16.63 12.63L18 12L16.63 11.37L16 10H20V18Z";
var mdiMovieMinus = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M15 18V20H23V18H15Z";
var mdiMovieMinusOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M15 18V20H23V18H15Z";
var mdiMovieOff = "M22.11 21.46L20.84 22.73L18.11 20H4C2.9 20 2 19.11 2 18V6C2 5.42 2.25 4.9 2.65 4.54L1.11 3L2.39 1.73L22.11 21.46M21.88 18.68C21.96 18.47 22 18.24 22 18V4H18L20 8H17L15 4H13L15 8H12L10 4H8L8.8 5.6L21.88 18.68Z";
var mdiMovieOffOutline = "M2.39 1.73L1.11 3L2.65 4.54C2.25 4.9 2 5.42 2 6V18C2 19.11 2.9 20 4 20H18.11L20.84 22.73L22.11 21.46L2.39 1.73M4 18V6.47L5.76 10H8.11L16.11 18H4M8.8 5.6L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V18C22 18.24 21.96 18.47 21.88 18.68L20 16.8V10H13.2L8.8 5.6Z";
var mdiMovieOpen = "M20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1L20.84 2.18M13.97 3.54L12 3.93L14.75 7.46L16.71 7.07L13.97 3.54M9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05L9.07 4.5M4.16 5.5L3.18 5.69A2 2 0 0 0 1.61 8.04L2 10L6.9 9.03L4.16 5.5M2 10V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V10H2Z";
var mdiMovieOpenCheck = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z";
var mdiMovieOpenCheckOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M21.34 15.84L17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84Z";
var mdiMovieOpenCog = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M19 12C20.08 12 21.09 12.25 22 12.68V10H2V20C2 21.11 2.9 22 4 22H12.68C12.25 21.09 12 20.08 12 19C12 15.13 15.13 12 19 12M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z";
var mdiMovieOpenCogOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M4 20V12H20V12.08C20.71 12.18 21.38 12.39 22 12.69V10H2V20C2 21.11 2.9 22 4 22H12.68C12.39 21.38 12.18 20.71 12.08 20H4M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z";
var mdiMovieOpenEdit = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M2 10V20C2 21.11 2.9 22 4 22H11V19.13L20.13 10H2M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47Z";
var mdiMovieOpenEditOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M4 12H18.13L20.13 10H2V20C2 21.11 2.9 22 4 22H11V20H4V12M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47Z";
var mdiMovieOpenMinus = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M15 18V20H23V18H15Z";
var mdiMovieOpenMinusOutline = "M13.09 20C13.21 20.72 13.46 21.39 13.81 22H4C2.9 22 2 21.11 2 20V10H22V13.81C21.39 13.46 20.72 13.22 20 13.09V12H4V20H13.09M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M15 18V20H23V18H15Z";
var mdiMovieOpenOff = "M13.2 10H22V18.8L13.2 10M21.6 6.1L20.8 2.2L16.9 3L19.6 6.5L21.6 6.1M11.8 8L9.1 4.5L7.9 4.7L11.3 8.1L11.8 8M2.4 1.7L1.1 3L3.7 5.6L3.2 5.7C2.1 5.9 1.4 7 1.6 8L2 10L7.1 9L8.1 10H2V20C2 21.1 2.9 22 4 22H20.1L20.8 22.7L22.1 21.4L2.4 1.7M16.7 7.1L14 3.5L12 3.9L14.8 7.4L16.7 7.1Z";
var mdiMovieOpenOffOutline = "M19.7 6.5L16.9 3L20.8 2.2L21.6 6.1L19.7 6.5M22.1 21.5L20.8 22.8L20.1 22H4C2.9 22 2 21.1 2 20V10H8.1L7.1 9L2 10L1.6 8C1.4 7 2.1 5.9 3.2 5.7L3.7 5.6L1.1 3L2.4 1.7L22.1 21.5M18.1 20L10.1 12H4V20H18.1M22 18.8V10H13.2L15.2 12H20V16.8L22 18.8M16.7 7.1L14 3.5L12 3.9L14.8 7.4L16.7 7.1M11.8 8L9.1 4.5L7.9 4.7L11.3 8.1L11.8 8Z";
var mdiMovieOpenOutline = "M20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1L20.84 2.18M13.97 3.54L12 3.93L14.75 7.46L16.71 7.07L13.97 3.54M9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05L9.07 4.5M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M20 12V20H4V12H20M22 10H2V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V10Z";
var mdiMovieOpenPlay = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M2 10V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13C20.1 13 21.12 13.3 22 13.81V10H2M17 22L22 19L17 16V22Z";
var mdiMovieOpenPlayOutline = "M22 10V13.81C21.39 13.46 20.72 13.22 20 13.09V12H4V20H13.09C13.21 20.72 13.46 21.39 13.81 22H4C2.9 22 2 21.11 2 20V10H22M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M17 22L22 19L17 16V22Z";
var mdiMovieOpenPlus = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z";
var mdiMovieOpenPlusOutline = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z";
var mdiMovieOpenRemove = "M14.75 7.46L12 3.93L13.97 3.54L16.71 7.07L14.75 7.46M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M21.62 6.1L20.84 2.18L16.91 2.96L19.65 6.5L21.62 6.1M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z";
var mdiMovieOpenRemoveOutline = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z";
var mdiMovieOpenSettings = "M14.75 5.46L12 1.93L13.97 1.54L16.71 5.07L14.75 5.46M21.62 4.1L20.84 .18L16.91 .96L19.65 4.5L21.62 4.1M11.81 6.05L9.07 2.5L7.1 2.91L9.85 6.44L11.81 6.05M2 8V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V8H2M4.16 3.5L3.18 3.69C2.1 3.91 1.4 4.96 1.61 6.04L2 8L6.9 7.03L4.16 3.5M11 24H13V22H11V24M7 24H9V22H7V24M15 24H17V22H15V24Z";
var mdiMovieOpenSettingsOutline = "M19.65 4.5L16.91 .96L20.84 .18L21.62 4.1L19.65 4.5M16.71 5.07L13.97 1.54L12 1.93L14.75 5.46L16.71 5.07M11.81 6.05L9.07 2.5L7.1 2.91L9.85 6.44L11.81 6.05M4.16 3.5L3.18 3.69C2.1 3.9 1.39 4.96 1.61 6.04L2 8L6.9 7.03L4.16 3.5M22 8V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V8H22M20 10H4V18H20V10M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z";
var mdiMovieOpenStar = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M19 13C20.1 13 21.12 13.3 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.3 21.12 13 20.1 13 19C13 15.69 15.69 13 19 13M4.16 5.5L3.18 5.69C2.1 5.91 1.4 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z";
var mdiMovieOpenStarOutline = "M19.65 6.5L16.91 2.96L20.84 2.18L21.62 6.1L19.65 6.5M16.71 7.07L13.97 3.54L12 3.93L14.75 7.46L16.71 7.07M4.16 5.5L3.18 5.69C2.1 5.9 1.39 6.96 1.61 8.04L2 10L6.9 9.03L4.16 5.5M11.81 8.05L9.07 4.5L7.1 4.91L9.85 8.44L11.81 8.05M4 20V12H20V13.09C20.72 13.21 21.39 13.46 22 13.81V10H2V20C2 21.11 2.9 22 4 22H13.81C13.46 21.39 13.22 20.72 13.09 20H4M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z";
var mdiMovieOutline = "M5.76,10H20V18H4V6.47M22,4H18L20,8H17L15,4H13L15,8H12L10,4H8L10,8H7L5,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V4Z";
var mdiMoviePlay = "M22 4V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22M17 22L22 19L17 16V22Z";
var mdiMoviePlayOutline = "M22 4V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22M17 22L22 19L17 16V22Z";
var mdiMoviePlus = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z";
var mdiMoviePlusOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z";
var mdiMovieRemove = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z";
var mdiMovieRemoveOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M22.54 16.88L21.12 15.47L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z";
var mdiMovieRoll = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A2.5,2.5 0 0,0 9.5,6.5A2.5,2.5 0 0,0 12,9A2.5,2.5 0 0,0 14.5,6.5A2.5,2.5 0 0,0 12,4M4.4,9.53C3.97,10.84 4.69,12.25 6,12.68C7.32,13.1 8.73,12.39 9.15,11.07C9.58,9.76 8.86,8.35 7.55,7.92C6.24,7.5 4.82,8.21 4.4,9.53M19.61,9.5C19.18,8.21 17.77,7.5 16.46,7.92C15.14,8.34 14.42,9.75 14.85,11.07C15.28,12.38 16.69,13.1 18,12.67C19.31,12.25 20.03,10.83 19.61,9.5M7.31,18.46C8.42,19.28 10,19.03 10.8,17.91C11.61,16.79 11.36,15.23 10.24,14.42C9.13,13.61 7.56,13.86 6.75,14.97C5.94,16.09 6.19,17.65 7.31,18.46M16.7,18.46C17.82,17.65 18.07,16.09 17.26,14.97C16.45,13.85 14.88,13.6 13.77,14.42C12.65,15.23 12.4,16.79 13.21,17.91C14,19.03 15.59,19.27 16.7,18.46M12,10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5Z";
var mdiMovieSearch = "M11.03 20H4C2.9 20 2 19.1 2 18L2 6C2 4.9 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.05C20.85 11.22 18.82 10 16.5 10C12.92 10 10 12.92 10 16.5C10 17.79 10.38 19 11.03 20M23.39 22L22 23.39L18.88 20.32C18.19 20.75 17.37 21 16.5 21C14 21 12 19 12 16.5S14 12 16.5 12 21 14 21 16.5C21 17.38 20.75 18.21 20.31 18.9L23.39 22M19 16.5C19 15.12 17.88 14 16.5 14S14 15.12 14 16.5 15.12 19 16.5 19 19 17.88 19 16.5Z";
var mdiMovieSearchOutline = "M11 20H4C2.9 20 2 19.1 2 18V6C2 4.9 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13C21.5 12.2 20.8 11.5 20 11V10H5.8L4 6.5V18H10.2C10.4 18.7 10.6 19.4 11 20M20.3 18.9C20.7 18.2 21 17.4 21 16.5C21 14 19 12 16.5 12S12 14 12 16.5 14 21 16.5 21C17.4 21 18.2 20.8 18.9 20.3L22 23.4L23.4 22L20.3 18.9M16.5 19C15.1 19 14 17.9 14 16.5S15.1 14 16.5 14 19 15.1 19 16.5 17.9 19 16.5 19Z";
var mdiMovieSettings = "M22 4V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22M7 24H9V22H7V24M11 24H13V22H11V24M15 24H17V22H15V24Z";
var mdiMovieSettingsOutline = "M18 4L20 8H17L15 4H13L15 8H12L10 4H8L10 8H7L5 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H20C21.11 20 22 19.11 22 18V4H18M20 18H4V6.47L5.76 10H20V18M11 22H13V24H11V22M7 22H9V24H7V22M15 22H17V24H15V22Z";
var mdiMovieStar = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.12 13.3 20.1 13 19 13C15.69 13 13 15.69 13 19M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z";
var mdiMovieStarOutline = "M13 19C13 19.34 13.04 19.67 13.09 20H4C2.9 20 2 19.11 2 18V6C2 4.89 2.9 4 4 4H5L7 8H10L8 4H10L12 8H15L13 4H15L17 8H20L18 4H22V13.81C21.39 13.46 20.72 13.22 20 13.09V10H5.76L4 6.47V18H13.09C13.04 18.33 13 18.66 13 19M23 17.89L20.11 17.64L19 15L17.87 17.64L15 17.89L17.18 19.77L16.5 22.58L19 21.09L21.45 22.58L20.8 19.77L23 17.89Z";
var mdiMower = "M18.5 14C17.55 14 16.69 14.38 16.06 15H9.39L5.74 3H2V5H4.26L7 14.05C6.85 14.03 6.68 14 6.5 14C4.57 14 3 15.57 3 17.5S4.57 21 6.5 21C7.89 21 9.09 20.18 9.65 19H15.35C15.91 20.18 17.11 21 18.5 21C20.43 21 22 19.43 22 17.5S20.43 14 18.5 14M6.5 19C5.67 19 5 18.33 5 17.5S5.67 16 6.5 16 8 16.67 8 17.5 7.33 19 6.5 19M18.5 19C17.67 19 17 18.33 17 17.5S17.67 16 18.5 16 20 16.67 20 17.5 19.33 19 18.5 19M10.13 14L9.53 12H12.76C13.5 12 14.21 12.43 14.55 13.11L15 14H10.13Z";
var mdiMowerBag = "M11.95 14L10.82 12H14.76C15.5 12 16.21 12.43 16.55 13.11L17 14H11.95M23 18C23 19.66 21.66 21 20 21C18.7 21 17.6 20.16 17.18 19H11.65C11.09 20.18 9.89 21 8.5 21S5.91 20.18 5.35 19H2C1.45 19 1 18.55 1 18V11C1 10.67 1.17 10.36 1.44 10.17C1.71 10 2.06 9.95 2.37 10.07L7.43 12.09L3.42 5H1V3H4.58L11.37 15H20C21.66 15 23 16.34 23 18M7.34 14.21L3 12.5V17H5.05C5.24 15.7 6.13 14.64 7.34 14.21M10 17.5C10 16.67 9.33 16 8.5 16S7 16.67 7 17.5 7.67 19 8.5 19 10 18.33 10 17.5M21 18C21 17.45 20.55 17 20 17S19 17.45 19 18 19.45 19 20 19 21 18.55 21 18Z";
var mdiMuffin = "M16,5C16,5 15,2 12,2C9,2 8,5 8,5C6,5 4,7 4,9C1.3,9 1.3,13 4,13H20C22.7,13 22.7,9 20,9C20,7 18,5 16,5M5,15L7,22H9L8,15H5M10,15L11,22H13L14,15H10M16,15L15,22H17L19,15H16Z";
var mdiMultiplication = "M11,3H13V10.27L19.29,6.64L20.29,8.37L14,12L20.3,15.64L19.3,17.37L13,13.72V21H11V13.73L4.69,17.36L3.69,15.63L10,12L3.72,8.36L4.72,6.63L11,10.26V3Z";
var mdiMultiplicationBox = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M11,17H13V13.73L15.83,15.36L16.83,13.63L14,12L16.83,10.36L15.83,8.63L13,10.27V7H11V10.27L8.17,8.63L7.17,10.36L10,12L7.17,13.63L8.17,15.36L11,13.73V17Z";
var mdiMushroom = "M12,2A10,10 0 0,1 22,12A2,2 0 0,1 20,14H4A2,2 0 0,1 2,12A10,10 0 0,1 12,2M12,8A2,2 0 0,0 14,6A2,2 0 0,0 12,4A2,2 0 0,0 10,6A2,2 0 0,0 12,8M17,12A2,2 0 0,0 19,10A2,2 0 0,0 17,8A2,2 0 0,0 15,10A2,2 0 0,0 17,12M7,12A2,2 0 0,0 9,10A2,2 0 0,0 7,8A2,2 0 0,0 5,10A2,2 0 0,0 7,12M15,15L16.27,19.45L16.35,20C16.35,21.1 15.45,22 14.35,22H9.65A2,2 0 0,1 7.65,20L7.73,19.45L9,15H15Z";
var mdiMushroomOff = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 13.1 2.9 14 4 14H12.1L13.1 15H9L7.7 19.5V20C7.7 21.1 8.6 22 9.7 22H14.4C15.5 22 16.4 21.1 16.4 20L16.3 19.5L15.8 17.7L20.9 22.8L22.1 21.5M7 12C5.9 12 5 11.1 5 10C5 9.2 5.5 8.4 6.3 8.1L8.9 10.7C8.6 11.5 7.8 12 7 12M10 6C10 4.9 10.9 4 12 4S14 4.9 14 6 13.1 8 12 8C11.5 8 11.1 7.8 10.7 7.5L17.2 14H20C21.1 14 22 13.1 22 12C22 6.5 17.5 2 12 2C10.1 2 8.3 2.6 6.7 3.5L10.4 7.2C10.2 6.9 10 6.5 10 6M17 8C18.1 8 19 8.9 19 10S18.1 12 17 12 15 11.1 15 10 15.9 8 17 8Z";
var mdiMushroomOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L4.1 6C2.8 7.6 2 9.7 2 12C2 13.1 2.9 14 4 14H12.1L13.1 15H9L8 18.5L7.7 19.5C7.4 20.6 8.1 21.7 9.1 21.9L9.7 22H14.4C15.5 22 16.4 21.1 16.4 20L16.3 19.5L16 18.5L15.8 17.6L20.9 22.7L22.1 21.5M4 12C4 10.3 4.6 8.7 5.5 7.4L6.2 8.1C6.1 8.4 6 8.7 6 9C6 10.1 6.9 11 8 11C8.3 11 8.6 10.9 8.9 10.8L10.1 12H4M9.7 20L10 19L10.6 17H13.6L14.2 19L14.5 20H9.7M16 11C14.9 11 14 10.1 14 9S14.9 7 16 7 18 7.9 18 9 17.1 11 16 11M8.2 5L6.7 3.5C8.3 2.6 10.1 2 12 2C17.5 2 22 6.5 22 12C22 13.1 21.1 14 20 14H17.2L15.2 12H20C20 8.3 17.4 5.1 14 4.2C13.9 5.2 13 6 12 6S10.1 5.2 10 4.2C9.4 4.4 8.7 4.7 8.2 5Z";
var mdiMushroomOutline = "M4,12H20C20,8.27 17.44,5.13 14,4.25C13.86,5.24 13,6 12,6C11,6 10.14,5.24 10,4.25C6.56,5.13 4,8.27 4,12M12,2A10,10 0 0,1 22,12A2,2 0 0,1 20,14H4A2,2 0 0,1 2,12A10,10 0 0,1 12,2M13.5,17H10.5L9.92,19L9.65,20H14.35L14.08,19L13.5,17M15,15L16,18.5L16.27,19.45L16.35,20C16.35,21.1 15.45,22 14.35,22H9.65L9.17,21.94C8.1,21.66 7.45,20.57 7.73,19.5L8,18.5L9,15H15M16,7A2,2 0 0,1 18,9A2,2 0 0,1 16,11A2,2 0 0,1 14,9A2,2 0 0,1 16,7M8,7A2,2 0 0,1 10,9A2,2 0 0,1 8,11A2,2 0 0,1 6,9A2,2 0 0,1 8,7Z";
var mdiMusic = "M21,3V15.5A3.5,3.5 0 0,1 17.5,19A3.5,3.5 0 0,1 14,15.5A3.5,3.5 0 0,1 17.5,12C18.04,12 18.55,12.12 19,12.34V6.47L9,8.6V17.5A3.5,3.5 0 0,1 5.5,21A3.5,3.5 0 0,1 2,17.5A3.5,3.5 0 0,1 5.5,14C6.04,14 6.55,14.12 7,14.34V6L21,3Z";
var mdiMusicAccidentalDoubleFlat = "M15.5 9C14.8 9 14.11 9.28 13.5 9.67V5H11.5V9.62C11.04 9.24 10.39 9 9.5 9C8.8 9 8.11 9.28 7.5 9.67V5H5.5V19C8.5 17.32 10.43 15.79 11.5 14.41V19C16.36 16.26 18.5 13.91 18.5 12C18.5 10.59 17.79 9 15.5 9M7.5 15.38V12.26C8.12 11.59 8.95 11 9.5 11C10.09 11 10.5 11.07 10.5 12C10.5 12.15 10.4 13.3 7.5 15.38M13.5 15.38V12.26C14.12 11.59 14.95 11 15.5 11C16.09 11 16.5 11.07 16.5 12C16.5 12.15 16.4 13.3 13.5 15.38Z";
var mdiMusicAccidentalDoubleSharp = "M15.41 10H17V7H14V8.59L12 10.59L10 8.59V7H7V10H8.59L10.59 12L8.59 14H7V17H10V15.41L12 13.41L14 15.41V17H17V14H15.41L13.41 12L15.41 10Z";
var mdiMusicAccidentalFlat = "M8.5 19C13.36 16.26 15.5 13.91 15.5 12C15.5 10.59 14.79 9 12.5 9C11.8 9 11.11 9.28 10.5 9.67V5H8.5M10.5 15.38V12.26C11.12 11.59 11.95 11 12.5 11C13.09 11 13.5 11.07 13.5 12C13.5 12.15 13.4 13.3 10.5 15.38Z";
var mdiMusicAccidentalNatural = "M10 8.75V3.5H8V17.5L14 15.25V20.5H16V6.5L10 8.75M14 13.25L10 14.75V10.75L14 9.25V13.25Z";
var mdiMusicAccidentalSharp = "M17 9.5V7.5L15 8.1V5.5H13V8.7L11 9.3V6.5H9V9.9L7 10.5V12.5L9 11.9V13.9L7 14.5V16.5L9 15.9V18.5H11V15.3L13 14.7V17.5H15V14.1L17 13.5V11.5L15 12.1V10.1L17 9.5M13 12.7L11 13.3V11.3L13 10.7V12.7Z";
var mdiMusicBox = "M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiMusicBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4M18,7H15V12.5A2.5,2.5 0 0,1 12.5,15A2.5,2.5 0 0,1 10,12.5A2.5,2.5 0 0,1 12.5,10C13.07,10 13.58,10.19 14,10.5V5H18M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2Z";
var mdiMusicBoxMultipleOutline = "M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,16H8V4H20M12.5,15A2.5,2.5 0 0,0 15,12.5V7H18V5H14V10.5C13.58,10.19 13.07,10 12.5,10A2.5,2.5 0 0,0 10,12.5A2.5,2.5 0 0,0 12.5,15M4,6H2V20A2,2 0 0,0 4,22H18V20H4";
var mdiMusicBoxOutline = "M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16V9M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M5,5V19H19V5H5Z";
var mdiMusicCircle = "M16,9V7H12V12.5C11.58,12.19 11.07,12 10.5,12A2.5,2.5 0 0,0 8,14.5A2.5,2.5 0 0,0 10.5,17A2.5,2.5 0 0,0 13,14.5V9H16M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiMusicCircleOutline = "M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiMusicClefAlto = "M5 4H7V20H5M15.46 13H14.83L13.83 12L14.83 11H15.46A3.5 3.5 0 1 0 11.96 7.5H13.96A1.5 1.5 0 1 1 15.46 9H14L12 11H11V4H9V20H11V13H12L14 15H15.46A1.5 1.5 0 1 1 13.96 16.5H11.96A3.5 3.5 0 1 0 15.46 13Z";
var mdiMusicClefBass = "M18.5 5A1.5 1.5 0 1 1 17 6.5A1.5 1.5 0 0 1 18.5 5M18.5 11A1.5 1.5 0 1 1 17 12.5A1.5 1.5 0 0 1 18.5 11M10 4A5 5 0 0 0 5 9V10A2 2 0 1 0 7.18 8A3 3 0 0 1 10 6A4 4 0 0 1 14 10C14 13.59 11.77 16.19 7 18.2L7.76 20.04C13.31 17.72 16 14.43 16 10A6 6 0 0 0 10 4Z";
var mdiMusicClefTreble = "M13 11V7.5L15.2 5.29C16 4.5 16.15 3.24 15.59 2.26C15.14 1.47 14.32 1 13.45 1C13.24 1 13 1.03 12.81 1.09C11.73 1.38 11 2.38 11 3.5V6.74L7.86 9.91C6.2 11.6 5.7 14.13 6.61 16.34C7.38 18.24 9.06 19.55 11 19.89V20.5C11 20.76 10.77 21 10.5 21H9V23H10.5C11.85 23 13 21.89 13 20.5V20C15.03 20 17.16 18.08 17.16 15.25C17.16 12.95 15.24 11 13 11M13 3.5C13 3.27 13.11 3.09 13.32 3.03C13.54 2.97 13.77 3.06 13.88 3.26C14 3.46 13.96 3.71 13.8 3.87L13 4.73V3.5M11 11.5C10.03 12.14 9.3 13.24 9.04 14.26L11 14.78V17.83C9.87 17.53 8.9 16.71 8.43 15.57C7.84 14.11 8.16 12.45 9.26 11.33L11 9.5V11.5M13 18V12.94C14.17 12.94 15.18 14.04 15.18 15.25C15.18 17 13.91 18 13 18Z";
var mdiMusicNote = "M12 3V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V7H18V3H12Z";
var mdiMusicNoteBluetooth = "M22 9.85L19.14 7H18.64V10.79L16.35 8.5L15.64 9.21L18.43 12L15.64 14.79L16.35 15.5L18.64 13.21V17H19.14L22 14.15L19.85 12L22 9.85M19.64 8.91L20.58 9.85L19.64 10.79V8.91M20.58 14.15L19.64 15.09V13.21L20.58 14.15M9.64 3V13.55C9.05 13.21 8.37 13 7.64 13C5.43 13 3.64 14.79 3.64 17S5.43 21 7.64 21 11.64 19.21 11.64 17V7H15.64V3H9.64Z";
var mdiMusicNoteBluetoothOff = "M22 9.85L19.14 7H18.64V10.79L16.35 8.5L15.64 9.21L18.43 12L15.64 14.79L16.35 15.5L18.64 13.21V17H19.14L22 14.15L19.85 12L22 9.85M19.64 8.91L20.58 9.85L19.64 10.79V8.91M20.58 14.15L19.64 15.09V13.21L20.58 14.15M1.96 3L.687 4.27L9.69 13.27V13.55C9.1 13.21 8.42 13 7.69 13C5.5 13 3.69 14.79 3.69 17S5.5 21 7.69 21 11.69 19.21 11.69 17V15.27L17.42 21L18.69 19.73L1.96 3M11.69 7H15.69V3H9.69V8.18L11.69 10.18V7Z";
var mdiMusicNoteEighth = "M12 3V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V7H18V3H12Z";
var mdiMusicNoteEighthDotted = "M12 3V13.55A4 4 0 1 0 14 17V7H18V3M16.5 20A1.5 1.5 0 1 1 18 18.5A1.5 1.5 0 0 1 16.5 20Z";
var mdiMusicNoteHalf = "M16 3H14V13.56A3.96 3.96 0 0 0 12 13A4 4 0 1 0 16 17V3M12 19A2 2 0 1 1 14 17A2 2 0 0 1 12 19Z";
var mdiMusicNoteHalfDotted = "M14 3H12V13.56A3.96 3.96 0 0 0 10 13A4 4 0 1 0 14 17V3M10 19A2 2 0 1 1 12 17A2 2 0 0 1 10 19M16.5 20A1.5 1.5 0 1 1 18 18.5A1.5 1.5 0 0 1 16.5 20Z";
var mdiMusicNoteOff = "M4.27 3L3 4.27L12 13.27V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V15.27L19.73 21L21 19.73L4.27 3M14 7H18V3H12V8.18L14 10.18Z";
var mdiMusicNoteOffOutline = "M14 7H18V3H12V7.61L14 9.61M12 10.44L4.41 2.86L3 4.27L12 13.27V13.55A3.94 3.94 0 0 0 8.67 13.23A4 4 0 0 0 10.65 20.95A4.1 4.1 0 0 0 14 16.85V15.27L19.73 21L21.14 19.59M10 19A2 2 0 1 1 12 17A2 2 0 0 1 10 19Z";
var mdiMusicNoteOutline = "M12 3V13.55A4 4 0 1 0 14 17V7H18V3M10 19A2 2 0 1 1 12 17A2 2 0 0 1 10 19Z";
var mdiMusicNotePlus = "M17 9V12H14V14H17V17H19V14H22V12H19V9H17M9 3V13.55C8.41 13.21 7.73 13 7 13C4.79 13 3 14.79 3 17S4.79 21 7 21 11 19.21 11 17V7H15V3H9Z";
var mdiMusicNoteQuarter = "M14 3V13.56C13.41 13.21 12.73 13 12 13C9.79 13 8 14.79 8 17S9.79 21 12 21 16 19.21 16 17V3H14Z";
var mdiMusicNoteQuarterDotted = "M12 13V13.56A3.96 3.96 0 0 0 10 13A4 4 0 1 0 14 17V3H12M16.5 17A1.5 1.5 0 1 1 15 18.5A1.5 1.5 0 0 1 16.5 17Z";
var mdiMusicNoteSixteenth = "M18 7V3H12V13.55C11.41 13.21 10.73 13 10 13C7.79 13 6 14.79 6 17S7.79 21 10 21 14 19.21 14 17V11H18V8H14V7H18Z";
var mdiMusicNoteSixteenthDotted = "M18 18.5A1.5 1.5 0 1 1 16.5 17A1.5 1.5 0 0 1 18 18.5M18 7V3H12V13.55A4 4 0 1 0 14 17V11H18V8H14V7Z";
var mdiMusicNoteWhole = "M12 15A2 2 0 1 1 10 17A2 2 0 0 1 12 15M12 13A4 4 0 1 0 16 17A4 4 0 0 0 12 13Z";
var mdiMusicNoteWholeDotted = "M10 15A2 2 0 1 1 8 17A2 2 0 0 1 10 15M10 13A4 4 0 1 0 14 17A4 4 0 0 0 10 13M16.5 17A1.5 1.5 0 1 1 15 18.5A1.5 1.5 0 0 1 16.5 17Z";
var mdiMusicOff = "M2,5.27L3.28,4L20,20.72L18.73,22L9,12.27V17.5A3.5,3.5 0 0,1 5.5,21A3.5,3.5 0 0,1 2,17.5A3.5,3.5 0 0,1 5.5,14C6.04,14 6.55,14.12 7,14.34V10.27L2,5.27M21,3V15.5C21,16.5 20.57,17.42 19.88,18.06L14.94,13.12C15.58,12.43 16.5,12 17.5,12C18.04,12 18.55,12.12 19,12.34V6.47L10.17,8.35L7.66,5.84L21,3Z";
var mdiMusicRestEighth = "M14 6A5.56 5.56 0 0 1 10.95 7.86A1.5 1.5 0 1 0 9.5 9H9.74A6.32 6.32 0 0 0 13.25 7.93L10 18H12L16 6Z";
var mdiMusicRestHalf = "M6 14H8V10H16V14H18V15H6V14Z";
var mdiMusicRestQuarter = "M11.71 16.81C10.91 17.6 10.88 18.84 11.64 19.58L10.19 21C8.66 19.5 8.72 17.03 10.32 15.46C10.85 14.94 11.5 14.61 12.16 14.42L9 11.34L10.45 9.92L10.82 9.57C11.82 8.59 11.85 7.04 10.9 6.11L9.16 4.42L10.62 3L14.78 7.06C15.54 7.81 15.5 9.05 14.71 9.83L12.53 11.95L16 15.33L15.61 15.72C15.11 16.21 14.38 16.46 13.72 16.28C13.04 16.1 12.26 16.28 11.71 16.81Z";
var mdiMusicRestSixteenth = "M15 3A5.56 5.56 0 0 1 11.95 4.86A1.5 1.5 0 1 0 10.5 6H10.74A6.32 6.32 0 0 0 14.25 4.93L12.9 9.1A5.56 5.56 0 0 1 9.95 10.86A1.5 1.5 0 1 0 8.5 12H8.74A6.32 6.32 0 0 0 12.25 10.93L9 21H11L17 3Z";
var mdiMusicRestWhole = "M18 10H16V14H8V10H6V9H18V10Z";
var mdiMustache = "M21 12C19 12 18 9 15 9S12 11 12 11 12 9 9 9 5 12 3 12C2 12 1 11 1 11S2 16 6 16C11 16 12 13 12 13S13 16 18 16C22 16 23 11 23 11S22 12 21 12Z";
var mdiNail = "M13.5,5V16L12,22L10.5,16V5H13.5M17,2H7V4H17V2Z";
var mdiNas = "M4,5C2.89,5 2,5.89 2,7V17C2,18.11 2.89,19 4,19H20C21.11,19 22,18.11 22,17V7C22,5.89 21.11,5 20,5H4M4.5,7A1,1 0 0,1 5.5,8A1,1 0 0,1 4.5,9A1,1 0 0,1 3.5,8A1,1 0 0,1 4.5,7M7,7H20V17H7V7M8,8V16H11V8H8M12,8V16H15V8H12M16,8V16H19V8H16M9,9H10V10H9V9M13,9H14V10H13V9M17,9H18V10H17V9Z";
var mdiNativescript = "M7.5,3H16.5C19,3 21,5 21,7.5V16.5C21,19 19,21 16.5,21H7.5C5,21 3,19 3,16.5V7.5C3,5 5,3 7.5,3M6,13.5V16.5A1.5,1.5 0 0,0 7.5,18H9V10.5L15,18H16.5A1.5,1.5 0 0,0 18,16.5V13.5A1.5,1.5 0 0,1 19.5,12A1.5,1.5 0 0,1 18,10.5V7.5A1.5,1.5 0 0,0 16.5,6H15V13.5L9,6H7.5A1.5,1.5 0 0,0 6,7.5V10.5A1.5,1.5 0 0,1 4.5,12A1.5,1.5 0 0,1 6,13.5Z";
var mdiNature = "M13,16.12C16.47,15.71 19.17,12.76 19.17,9.17C19.17,5.3 16.04,2.17 12.17,2.17A7,7 0 0,0 5.17,9.17C5.17,12.64 7.69,15.5 11,16.06V20H5V22H19V20H13V16.12Z";
var mdiNaturePeople = "M4.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,8A1.5,1.5 0 0,0 3,9.5A1.5,1.5 0 0,0 4.5,11M22.17,9.17C22.17,5.3 19.04,2.17 15.17,2.17A7,7 0 0,0 8.17,9.17C8.17,12.64 10.69,15.5 14,16.06V20H6V17H7V13A1,1 0 0,0 6,12H3A1,1 0 0,0 2,13V17H3V22H19V20H16V16.12C19.47,15.71 22.17,12.76 22.17,9.17Z";
var mdiNavigation = "M12,2L4.5,20.29L5.21,21L12,18L18.79,21L19.5,20.29L12,2Z";
var mdiNavigationOutline = "M12 7.3L16.3 17.7L12.8 16.2L12 15.8L11.2 16.2L7.7 17.7L12 7.3M12 2L4.5 20.3L5.2 21L12 18L18.8 21L19.5 20.3L12 2Z";
var mdiNearMe = "M21,3L3,10.53V11.5L9.84,14.16L12.5,21H13.46L21,3Z";
var mdiNecklace = "M21.5 5H19.5C19.5 9.14 16.14 12.5 12 12.5C7.86 12.5 4.5 9.14 4.5 5H2.5C2.55 10.11 6.59 14.29 11.7 14.5C11.1 15.4 10 17.2 10 18C10 20.67 14 20.67 14 18C14 17.2 12.9 15.4 12.3 14.5C17.41 14.29 21.45 10.11 21.5 5Z";
var mdiNeedle = "M11.15,15.18L9.73,13.77L11.15,12.35L12.56,13.77L13.97,12.35L12.56,10.94L13.97,9.53L15.39,10.94L16.8,9.53L13.97,6.7L6.9,13.77L9.73,16.6L11.15,15.18M3.08,19L6.2,15.89L4.08,13.77L13.97,3.87L16.1,6L17.5,4.58L16.1,3.16L17.5,1.75L21.75,6L20.34,7.4L18.92,6L17.5,7.4L19.63,9.53L9.73,19.42L7.61,17.3L3.08,21.84V19Z";
var mdiNetflix = "M6.5,2H10.5L13.44,10.83L13.5,2H17.5V22C16.25,21.78 14.87,21.64 13.41,21.58L10.5,13L10.43,21.59C9.03,21.65 7.7,21.79 6.5,22V2Z";
var mdiNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z";
var mdiNetworkOff = "M1,5.27L5,9.27V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H17.73L19.73,24L21,22.72L2.28,4L1,5.27M15,20A1,1 0 0,0 14,19H13V17.27L15.73,20H15M17.69,16.87L5.13,4.31C5.41,3.55 6.14,3 7,3H17A2,2 0 0,1 19,5V15C19,15.86 18.45,16.59 17.69,16.87M22,20V21.18L20.82,20H22Z";
var mdiNetworkOffOutline = "M1.04,5.27L5,9.23V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H17.77L19.77,24L21.04,22.72L2.32,4L1.04,5.27M7,11.23L10.77,15H7V11.23M15,20A1,1 0 0,0 14,19H13V17.23L15.77,20H15M22,20V21.14L20.86,20H22M7,6.14L5.14,4.28C5.43,3.53 6.16,3 7,3H17A2,2 0 0,1 19,5V15C19,15.85 18.47,16.57 17.72,16.86L15.86,15H17V5H7V6.14Z";
var mdiNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7Z";
var mdiNetworkStrength1 = "M1,21H21V1M19,5.83V19H11V13.83";
var mdiNetworkStrength1Alert = "M21 1L1 21H17V19H11V13.8L19 5.8V9H21M19 11V17H21V11M19 19V21H21V19";
var mdiNetworkStrength2 = "M1,21H21V1M19,5.83V19H13V11.83";
var mdiNetworkStrength2Alert = "M21 1L1 21H17V19H13V11.8L19 5.8V9H21M19 11V17H21V11M19 19V21H21V19";
var mdiNetworkStrength3 = "M1,21H21V1M19,5.83V19H16V8.83";
var mdiNetworkStrength3Alert = "M21 1L1 21H17V19H16V8.8L19 5.8V9H21M19 11V17H21V11M19 19V21H21V19";
var mdiNetworkStrength4 = "M1,21H21V1";
var mdiNetworkStrength4Alert = "M19 17H21V11H19M19 21H21V19H19M1 21H17V9H21V1";
var mdiNetworkStrengthOff = "M21,1L12.4,9.6L21,18.19M4.77,4.5L3.5,5.77L9.86,12.13L1,21H18.73L20.73,23L22,21.73";
var mdiNetworkStrengthOffOutline = "M21,1L12.4,9.6L13.85,11.05L19,5.83V16.19L21,18.19M4.77,4.5L3.5,5.77L9.86,12.13L1,21H18.73L20.73,23L22,21.73M11.33,13.6L16.73,19H6";
var mdiNetworkStrengthOutline = "M1,21H21V1M19,5.83V19H6";
var mdiNewBox = "M20,4C21.11,4 22,4.89 22,6V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V6C2,4.89 2.89,4 4,4H20M8.5,15V9H7.25V12.5L4.75,9H3.5V15H4.75V11.5L7.3,15H8.5M13.5,10.26V9H9.5V15H13.5V13.75H11V12.64H13.5V11.38H11V10.26H13.5M20.5,14V9H19.25V13.5H18.13V10H16.88V13.5H15.75V9H14.5V14A1,1 0 0,0 15.5,15H19.5A1,1 0 0,0 20.5,14Z";
var mdiNewspaper = "M20,11H4V8H20M20,15H13V13H20M20,19H13V17H20M11,19H4V13H11M20.33,4.67L18.67,3L17,4.67L15.33,3L13.67,4.67L12,3L10.33,4.67L8.67,3L7,4.67L5.33,3L3.67,4.67L2,3V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V3L20.33,4.67Z";
var mdiNewspaperMinus = "M22,17V19H14V17H22M20,11V8H4V11H20M13,13V14.68C12.37,15.63 12,16.77 12,18C12,19.09 12.29,20.12 12.8,21H4A2,2 0 0,1 2,19V3L3.67,4.67L5.33,3L7,4.67L8.67,3L10.33,4.67L12,3L13.67,4.67L15.33,3L17,4.67L18.67,3L20.33,4.67L22,3V13.5C20.93,12.58 19.53,12 18,12C16.77,12 15.63,12.37 14.68,13H13M11,19V13H4V19H11Z";
var mdiNewspaperPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M20,11V8H4V11H20M13,13V14.68C12.37,15.63 12,16.77 12,18C12,19.09 12.29,20.12 12.8,21H4A2,2 0 0,1 2,19V3L3.67,4.67L5.33,3L7,4.67L8.67,3L10.33,4.67L12,3L13.67,4.67L15.33,3L17,4.67L18.67,3L20.33,4.67L22,3V13.5C20.93,12.58 19.53,12 18,12C16.77,12 15.63,12.37 14.68,13H13M11,19V13H4V19H11Z";
var mdiNewspaperVariant = "M20 3H4C2.89 3 2 3.89 2 5V19C2 20.11 2.89 21 4 21H20C21.11 21 22 20.11 22 19V5C22 3.89 21.11 3 20 3M5 7H10V13H5V7M19 17H5V15H19V17M19 13H12V11H19V13M19 9H12V7H19V9Z";
var mdiNewspaperVariantMultiple = "M4 7V19H19V21H4C2 21 2 19 2 19V7H4M21.3 3H7.7C6.76 3 6 3.7 6 4.55V15.45C6 16.31 6.76 17 7.7 17H21.3C22.24 17 23 16.31 23 15.45V4.55C23 3.7 22.24 3 21.3 3M8 5H13V11H8V5M21 15H8V13H21V15M21 11H15V9H21V11M21 7H15V5H21V7Z";
var mdiNewspaperVariantMultipleOutline = "M4 7V19H19V21H4C2 21 2 19 2 19V7H4M21 5V15H8V5H21M21.3 3H7.7C6.76 3 6 3.7 6 4.55V15.45C6 16.31 6.76 17 7.7 17H21.3C22.24 17 23 16.31 23 15.45V4.55C23 3.7 22.24 3 21.3 3M9 6H12V11H9V6M20 14H9V12H20V14M20 8H14V6H20V8M20 11H14V9H20V11Z";
var mdiNewspaperVariantOutline = "M20 5L20 19L4 19L4 5H20M20 3H4C2.89 3 2 3.89 2 5V19C2 20.11 2.89 21 4 21H20C21.11 21 22 20.11 22 19V5C22 3.89 21.11 3 20 3M18 15H6V17H18V15M10 7H6V13H10V7M12 9H18V7H12V9M18 11H12V13H18V11Z";
var mdiNfc = "M7.24 2C5.6 2 3.96 2 3.55 2.04C2.67 2.09 2.08 2.73 2.04 3.56C2 4.37 2 19.59 2.04 20.41C2.09 21.23 2.71 21.86 3.55 21.91C4.46 21.96 7.44 21.97 8.29 21.97C6.76 20.91 6.55 18.92 6.41 15.23C6.33 13.04 6.4 5.36 6.41 5.04L6.45 2.94L14.5 11V13.5L8.09 7.11C8.08 8.38 8.06 10.03 8.06 11.54C8.06 13 8.08 14.34 8.12 15.05C8.36 19.07 8.74 20.96 10.83 21.7C11.5 21.93 12.07 22 13.07 22C13.89 22 19.63 22 20.45 21.96C21.33 21.91 21.93 21.27 21.97 20.44C22 19.63 22 4.45 21.97 3.62C21.91 2.8 21.29 2.18 20.45 2.13C19.54 2.08 16.57 2.03 15.71 2.03C17.24 3.09 17.44 5.08 17.59 8.78C17.67 10.97 17.6 18.64 17.59 18.97L17.55 21.06L9.53 13V10.5L15.91 16.89C15.92 15.62 15.94 13.97 15.94 12.46C15.94 11 15.92 9.66 15.88 8.96C15.64 4.93 15.26 3.04 13.17 2.3C12.53 2.07 11.93 2 10.93 2H7.24Z";
var mdiNfcSearchVariant = "M16.5,12C19,12 21,14 21,16.5C21,17.38 20.76,18.21 20.32,18.9L23.4,22L22,23.39L18.89,20.32C18.2,20.75 17.38,21 16.5,21C14,21 12,19 12,16.5C12,14 14,12 16.5,12M16.5,14A2.5,2.5 0 0,0 14,16.5A2.5,2.5 0 0,0 16.5,19C17.89,19 19,17.88 19,16.5A2.5,2.5 0 0,0 16.5,14M18,6V10.18C17.33,10 16.66,9.97 16,10V8H13V10.28L13.53,10.72C12.34,11.33 11.35,12.3 10.72,13.53C10.28,13.17 10,12.62 10,12C10,11.26 10.41,10.62 11,10.28V8A2,2 0 0,1 13,6H18M6,18V6H8L10,6V8H8V16H10C9.96,16.68 10,17.35 10.17,18H6M20,4H4V20H11C11.53,20.8 12.21,21.5 13.03,22H4C2.89,22 2,21.1 2,20V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4V13.04C21.5,12.24 20.82,11.54 20,11V4Z";
var mdiNfcTap = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M4,4H11A2,2 0 0,1 13,6V9H11V6H4V11H6V9L9,12L6,15V13H4A2,2 0 0,1 2,11V6A2,2 0 0,1 4,4M20,20H13A2,2 0 0,1 11,18V15H13V18H20V13H18V15L15,12L18,9V11H20A2,2 0 0,1 22,13V18A2,2 0 0,1 20,20Z";
var mdiNfcVariant = "M18,6H13A2,2 0 0,0 11,8V10.28C10.41,10.62 10,11.26 10,12A2,2 0 0,0 12,14C13.11,14 14,13.1 14,12C14,11.26 13.6,10.62 13,10.28V8H16V16H8V8H10V6H8L6,6V18H18M20,20H4V4H20M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20C21.11,22 22,21.1 22,20V4C22,2.89 21.11,2 20,2Z";
var mdiNfcVariantOff = "M1.25,2.05L21.95,22.75L20.7,24L18.7,22H4A2,2 0 0,1 2,20V5.3L0,3.3L1.25,2.05M3.81,2C3.87,2 3.94,2 4,2H20C21.11,2 22,2.89 22,4V20C22,20.06 22,20.13 22,20.19L20,18.2V4H5.8L3.81,2M6,9.3L4,7.3V20H16.7L14.7,18H6V9.3M18,16.2L16,14.2V8H13V10.28C13.6,10.62 14,11.26 14,12C14,12.06 14,12.13 14,12.19L11,9.2V8A2,2 0 0,1 13,6H18V16.2M8,16H12.7L8,11.3V16M10,8H9.8L7.8,6H10V8Z";
var mdiNinja = "M7.75,13C7.74,12.65 7.9,12.31 8.17,12.08C8.92,12.24 9.62,12.55 10.25,13C10.25,13.68 9.69,14.24 9,14.24C8.31,14.24 7.76,13.69 7.75,13M13.75,13C14.38,12.56 15.08,12.25 15.83,12.09C16.1,12.32 16.26,12.66 16.25,13C16.25,13.7 15.69,14.26 15,14.26C14.31,14.26 13.75,13.7 13.75,13V13M12,9C9.23,8.96 6.5,9.65 4.07,11L4,12C4,13.23 4.29,14.44 4.84,15.54C7.21,15.18 9.6,15 12,15C14.4,15 16.79,15.18 19.16,15.54C19.71,14.44 20,13.23 20,12L19.93,11C17.5,9.65 14.77,8.96 12,9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNintendoGameBoy = "M7 1C5.9 1 5 1.9 5 3V21C5 22.11 5.9 23 7 23H14C16.76 23 19 20.76 19 18V3C19 1.9 18.11 1 17 1H7M8 4H16V11H8V4M9 14H10V16H12V17H10V19H9V17H7V16H9V14M16 15C16.55 15 17 15.45 17 16C17 16.55 16.55 17 16 17C15.45 17 15 16.55 15 16C15 15.45 15.45 15 16 15M14 17C14.55 17 15 17.45 15 18C15 18.55 14.55 19 14 19C13.45 19 13 18.55 13 18C13 17.45 13.45 17 14 17Z";
var mdiNintendoSwitch = "M10.04,20.4H7.12C6.19,20.4 5.3,20 4.64,19.36C4,18.7 3.6,17.81 3.6,16.88V7.12C3.6,6.19 4,5.3 4.64,4.64C5.3,4 6.19,3.62 7.12,3.62H10.04V20.4M7.12,2A5.12,5.12 0 0,0 2,7.12V16.88C2,19.71 4.29,22 7.12,22H11.65V2H7.12M5.11,8C5.11,9.04 5.95,9.88 7,9.88C8.03,9.88 8.87,9.04 8.87,8C8.87,6.96 8.03,6.12 7,6.12C5.95,6.12 5.11,6.96 5.11,8M17.61,11C18.72,11 19.62,11.89 19.62,13C19.62,14.12 18.72,15 17.61,15C16.5,15 15.58,14.12 15.58,13C15.58,11.89 16.5,11 17.61,11M16.88,22A5.12,5.12 0 0,0 22,16.88V7.12C22,4.29 19.71,2 16.88,2H13.65V22H16.88Z";
var mdiNintendoWii = "M17.84,16.94H15.97V10.79H17.84V16.94M18,8.58C18,9.19 17.5,9.69 16.9,9.69A1.11,1.11 0 0,1 15.79,8.58C15.79,7.96 16.29,7.46 16.9,7.46C17.5,7.46 18,7.96 18,8.58M21.82,16.94H19.94V10.79H21.82V16.94M22,8.58C22,9.19 21.5,9.69 20.88,9.69A1.11,1.11 0 0,1 19.77,8.58C19.77,7.96 20.27,7.46 20.88,7.46C21.5,7.46 22,7.96 22,8.58M12.9,8.05H14.9L12.78,15.5C12.78,15.5 12.5,17.04 11.28,17.04C10.07,17.04 9.79,15.5 9.79,15.5L8.45,10.64L7.11,15.5C7.11,15.5 6.82,17.04 5.61,17.04C4.4,17.04 4.12,15.5 4.12,15.5L2,8.05H4L5.72,14.67L7.11,9.3C7.43,7.95 8.45,7.97 8.45,7.97C8.45,7.97 9.47,7.95 9.79,9.3L11.17,14.67L12.9,8.05Z";
var mdiNintendoWiiu = "M2,15.96C2,18.19 3.54,19.5 5.79,19.5H18.57C20.47,19.5 22,18.2 22,16.32V6.97C22,5.83 21.15,4.6 20.11,4.6H17.15V12.3C17.15,18.14 6.97,18.09 6.97,12.41V4.5H4.72C3.26,4.5 2,5.41 2,6.85V15.96M9.34,11.23C9.34,15.74 14.66,15.09 14.66,11.94V4.5H9.34V11.23Z";
var mdiNix = "M9.9 8.7L5 17.2L3.9 15.3L5.2 13H2.6L2 12L2.6 11H6.3L7.6 8.7H9.9M10.2 15.5H19.9L18.8 17.4H16.2L17.5 19.7L16.9 20.7H15.8L14 17.4H11.3L10.2 15.5M15.9 11.8L11 3.3H13.2L14.5 5.6L15.8 3.3H16.9L17.5 4.3L15.6 7.5L17 9.8L15.9 11.8M13.8 8.5H4L5.1 6.6H7.7L6.4 4.3L7 3.3H8.1L10 6.5H12.7L13.8 8.5M14.1 15.3L19 6.8L20.1 8.7L18.8 11H21.4L22 12L21.4 13H17.7L16.4 15.3H14.1M8.1 12.2L13 20.6H10.8L9.5 18.3L8.4 20.6H7.1L6.5 19.6L8.4 16.4L7 14.2L8.1 12.2Z";
var mdiNodejs = "M12,1.85C11.73,1.85 11.45,1.92 11.22,2.05L3.78,6.35C3.3,6.63 3,7.15 3,7.71V16.29C3,16.85 3.3,17.37 3.78,17.65L5.73,18.77C6.68,19.23 7,19.24 7.44,19.24C8.84,19.24 9.65,18.39 9.65,16.91V8.44C9.65,8.32 9.55,8.22 9.43,8.22H8.5C8.37,8.22 8.27,8.32 8.27,8.44V16.91C8.27,17.57 7.59,18.22 6.5,17.67L4.45,16.5C4.38,16.45 4.34,16.37 4.34,16.29V7.71C4.34,7.62 4.38,7.54 4.45,7.5L11.89,3.21C11.95,3.17 12.05,3.17 12.11,3.21L19.55,7.5C19.62,7.54 19.66,7.62 19.66,7.71V16.29C19.66,16.37 19.62,16.45 19.55,16.5L12.11,20.79C12.05,20.83 11.95,20.83 11.88,20.79L10,19.65C9.92,19.62 9.84,19.61 9.79,19.64C9.26,19.94 9.16,20 8.67,20.15C8.55,20.19 8.36,20.26 8.74,20.47L11.22,21.94C11.46,22.08 11.72,22.15 12,22.15C12.28,22.15 12.54,22.08 12.78,21.94L20.22,17.65C20.7,17.37 21,16.85 21,16.29V7.71C21,7.15 20.7,6.63 20.22,6.35L12.78,2.05C12.55,1.92 12.28,1.85 12,1.85M14,8C11.88,8 10.61,8.89 10.61,10.39C10.61,12 11.87,12.47 13.91,12.67C16.34,12.91 16.53,13.27 16.53,13.75C16.53,14.58 15.86,14.93 14.3,14.93C12.32,14.93 11.9,14.44 11.75,13.46C11.73,13.36 11.64,13.28 11.53,13.28H10.57C10.45,13.28 10.36,13.37 10.36,13.5C10.36,14.74 11.04,16.24 14.3,16.24C16.65,16.24 18,15.31 18,13.69C18,12.08 16.92,11.66 14.63,11.35C12.32,11.05 12.09,10.89 12.09,10.35C12.09,9.9 12.29,9.3 14,9.3C15.5,9.3 16.09,9.63 16.32,10.66C16.34,10.76 16.43,10.83 16.53,10.83H17.5C17.55,10.83 17.61,10.81 17.65,10.76C17.69,10.72 17.72,10.66 17.7,10.6C17.56,8.82 16.38,8 14,8Z";
var mdiNoodles = "M22 3L10 4.41V6H22V7H10V12H22C22 13.81 21.43 15.46 20.32 16.95S17.77 19.53 16 20.25V22H8V20.25C6.24 19.53 4.79 18.43 3.68 16.95S2 13.81 2 12H5V4L22 2V3M6 4.88V6H7V4.78L6 4.88M6 7V12H7V7H6M9 12V7H8V12H9M9 6V4.55L8 4.64V6H9Z";
var mdiNotEqual = "M21,10H9V8H21V10M21,16H9V14H21V16M4,5H6V16H4V5M6,18V20H4V18H6Z";
var mdiNotEqualVariant = "M14.08,4.61L15.92,5.4L14.8,8H19V10H13.95L12.23,14H19V16H11.38L9.92,19.4L8.08,18.61L9.2,16H5V14H10.06L11.77,10H5V8H12.63L14.08,4.61Z";
var mdiNote = "M14,10V4.5L19.5,10M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V9L15,3H5Z";
var mdiNoteMinus = "M15 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.11 21 21 20.11 21 19V9L15 3M14 15H6V13H14V15M14 10V4.5L19.5 10H14Z";
var mdiNoteMinusOutline = "M16 3H4C2.89 3 2 3.89 2 5V19C2 20.1 2.89 21 4 21H20C21.11 21 22 20.11 22 19V9L16 3M20 19H4V5H13V12H20V19M15 10V4.5L20.5 10H15M6 13H12V15H6V13Z";
var mdiNoteMultiple = "M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3Z";
var mdiNoteMultipleOutline = "M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M7,4V18H21V11H14V4H7Z";
var mdiNoteOutline = "M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,5V19H19V12H12V5H5Z";
var mdiNotePlus = "M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M9,18H11V15H14V13H11V10H9V13H6V15H9V18Z";
var mdiNotePlusOutline = "M15,10H20.5L15,4.5V10M4,3H16L22,9V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V5C2,3.89 2.89,3 4,3M4,5V19H20V12H13V5H4M8,17V15H6V13H8V11H10V13H12V15H10V17H8Z";
var mdiNoteRemove = "M15 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.89 21 5 21H19C20.11 21 21 20.11 21 19V9L15 3M13.54 16.12L12.12 17.54L10 15.41L7.88 17.54L6.47 16.12L8.59 14L6.47 11.88L7.88 10.47L10 12.59L12.12 10.47L13.54 11.88L11.41 14L13.54 16.12M14 10V4.5L19.5 10H14Z";
var mdiNoteRemoveOutline = "M16 3H4C2.89 3 2 3.89 2 5V19C2 20.1 2.89 21 4 21H20C21.11 21 22 20.11 22 19V9L16 3M20 19H4V5H13V12H20V19M15 10V4.5L20.5 10H15M11.83 12.59L10.41 14L11.83 15.41L10.41 16.83L9 15.41L7.59 16.83L6.17 15.41L7.59 14L6.17 12.59L7.59 11.17L9 12.59L10.41 11.17L11.83 12.59Z";
var mdiNoteSearch = "M15 3H5C3.89 3 3 3.89 3 5V10.82C5.55 8.37 9.59 8.4 12.1 10.9C14.63 13.44 14.63 17.56 12.1 20.1C11.74 20.45 11.35 20.74 10.94 21H19C20.11 21 21 20.11 21 19V9L15 3M14 10V4.5L19.5 10H14M7.5 11C5 11 3 13 3 15.5C3 16.38 3.25 17.21 3.69 17.9L.61 21L2 22.39L5.12 19.32C5.81 19.75 6.63 20 7.5 20C10 20 12 18 12 15.5S10 11 7.5 11M7.5 18C6.12 18 5 16.88 5 15.5S6.12 13 7.5 13 10 14.12 10 15.5 8.88 18 7.5 18Z";
var mdiNoteSearchOutline = "M15 3H5C3.89 3 3 3.89 3 5V10.82C3.6 10.24 4.28 9.8 5 9.5V5H12V10.82C12.03 10.85 12.07 10.87 12.1 10.9C12.44 11.24 12.73 11.61 12.97 12H19V19H12.97C12.73 19.39 12.44 19.76 12.1 20.1C11.74 20.45 11.35 20.74 10.94 21H19C20.11 21 21 20.11 21 19V9L15 3M14 10V4.5L19.5 10H14M7.5 11C5 11 3 13 3 15.5C3 16.38 3.25 17.21 3.69 17.9L.61 21L2 22.39L5.12 19.32C5.81 19.75 6.63 20 7.5 20C10 20 12 18 12 15.5S10 11 7.5 11M7.5 18C6.12 18 5 16.88 5 15.5S6.12 13 7.5 13 10 14.12 10 15.5 8.88 18 7.5 18Z";
var mdiNoteText = "M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,12V14H19V12H5M5,16V18H14V16H5Z";
var mdiNoteTextOutline = "M15 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V9L15 3M19 19H5V5H14V10H19M17 14H7V12H17M14 17H7V15H14";
var mdiNotebook = "M3,7V5H5V4C5,2.89 5.9,2 7,2H13V9L15.5,7.5L18,9V2H19C20.05,2 21,2.95 21,4V20C21,21.05 20.05,22 19,22H7C5.95,22 5,21.05 5,20V19H3V17H5V13H3V11H5V7H3M7,11H5V13H7V11M7,7V5H5V7H7M7,19V17H5V19H7Z";
var mdiNotebookCheck = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M3 7V5H5V4C5 2.89 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20.05 2 21 2.95 21 4V13.8C20.12 13.29 19.09 13 18 13C14.69 13 12 15.69 12 19C12 20.09 12.29 21.12 12.8 22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13Z";
var mdiNotebookCheckOutline = "M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M17 4V10L15 8L13 10V4H9V20H12.08C12.2 20.72 12.45 21.39 12.8 22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.89 5.9 2 7 2H19C20.05 2 21 2.95 21 4V13.8C20.39 13.45 19.72 13.2 19 13.08V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7Z";
var mdiNotebookEdit = "M21.04 13.13C21.18 13.13 21.31 13.19 21.42 13.3L22.7 14.58C22.92 14.79 22.92 15.14 22.7 15.35L21.7 16.35L19.65 14.3L20.65 13.3C20.76 13.19 20.9 13.13 21.04 13.13M19.07 14.88L21.12 16.93L15.06 23H13V20.94L19.07 14.88M3 7V5H5V4C5 2.89 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20.05 2 21 2.95 21 4V10L11 20V22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3M5 7H7V5H5V7M5 11V13H7V11H5M5 17V19H7V17H5Z";
var mdiNotebookEditOutline = "M19.07 14.88L21.12 16.93L15.06 23H13V20.94L19.07 14.88M21.04 13.13C21.18 13.13 21.31 13.19 21.42 13.3L22.7 14.58C22.92 14.79 22.92 15.14 22.7 15.35L21.7 16.35L19.65 14.3L20.65 13.3C20.76 13.19 20.9 13.13 21.04 13.13M17 4V10L15 8L13 10V4H9V20H11V22H7C5.95 22 5 21.05 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.89 5.9 2 7 2H19C20.05 2 21 2.95 21 4V10L19 12V4H17M5 5V7H7V5H5M5 11V13H7V11H5M5 17V19H7V17H5Z";
var mdiNotebookMinus = "M3 7V5H5V4C5 2.9 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20 2 21 3 21 4V13.8C20.1 13.3 19.1 13 18 13C14.7 13 12 15.7 12 19C12 20.1 12.3 21.1 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13M14 18V20H22V18H14Z";
var mdiNotebookMinusOutline = "M17 4V10L15 8L13 10V4H9V20H12.1C12.2 20.7 12.5 21.4 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.9 5.9 2 7 2H19C20 2 21 3 21 4V13.8C20.4 13.4 19.7 13.2 19 13.1V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7M14 18V20H22V18H14Z";
var mdiNotebookMultiple = "M9.05,9H7.06V6H9.05V4.03H7.06V3.03C7.06,1.92 7.95,1.04 9.05,1.04H15.03V8L17.5,6.5L20,8V1.04H21C22.05,1.04 23,2 23,3.03V17C23,18.03 22.05,19 21,19H9.05C8,19 7.06,18.05 7.06,17V16H9.05V14H7.06V11H9.05V9M1,18H3V15H1V13H3V10H1V8H3V5H5V8H3V10H5V13H3V15H5V18H3V20H5V21H21V23H5A2,2 0 0,1 3,21V20H1V18Z";
var mdiNotebookOutline = "M17,4V10L15,8L13,10V4H9V20H19V4H17M3,7V5H5V4C5,2.89 5.9,2 7,2H19C20.05,2 21,2.95 21,4V20C21,21.05 20.05,22 19,22H7C5.95,22 5,21.05 5,20V19H3V17H5V13H3V11H5V7H3M5,5V7H7V5H5M5,19H7V17H5V19M5,13H7V11H5V13Z";
var mdiNotebookPlus = "M3 7V5H5V4C5 2.9 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20 2 21 3 21 4V13.8C20.1 13.3 19.1 13 18 13C14.7 13 12 15.7 12 19C12 20.1 12.3 21.1 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13M17 15V18H14V20H17V23H19V20H22V18H19V15H17Z";
var mdiNotebookPlusOutline = "M17 4V10L15 8L13 10V4H9V20H12.1C12.2 20.7 12.5 21.4 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.9 5.9 2 7 2H19C20 2 21 3 21 4V13.8C20.4 13.4 19.7 13.2 19 13.1V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7M17 15V18H14V20H17V23H19V20H22V18H19V15H17Z";
var mdiNotebookRemove = "M3 7V5H5V4C5 2.9 5.9 2 7 2H13V9L15.5 7.5L18 9V2H19C20 2 21 3 21 4V13.8C20.1 13.3 19.1 13 18 13C14.7 13 12 15.7 12 19C12 20.1 12.3 21.1 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3M5 5V7H7V5H5M5 19H7V17H5V19M5 13H7V11H5V13M20.1 15.5L18 17.6L15.9 15.5L14.5 16.9L16.6 19L14.5 21.1L15.9 22.5L18 20.4L20.1 22.5L21.5 21.1L19.4 19L21.5 16.9L20.1 15.5Z";
var mdiNotebookRemoveOutline = "M17 4V10L15 8L13 10V4H9V20H12.1C12.2 20.7 12.5 21.4 12.8 22H7C5.9 22 5 21 5 20V19H3V17H5V13H3V11H5V7H3V5H5V4C5 2.9 5.9 2 7 2H19C20 2 21 3 21 4V13.8C20.4 13.4 19.7 13.2 19 13.1V4H17M5 19H7V17H5V19M5 13H7V11H5V13M5 7H7V5H5V7M20.1 15.5L18 17.6L15.9 15.5L14.5 16.9L16.6 19L14.5 21.1L15.9 22.5L18 20.4L20.1 22.5L21.5 21.1L19.4 19L21.5 16.9L20.1 15.5Z";
var mdiNotificationClearAll = "M5,13H19V11H5M3,17H17V15H3M7,7V9H21V7";
var mdiNpm = "M4,10V14H6V11H7V14H8V10H4M9,10V15H11V14H13V10H9M12,11V13H11V11H12M14,10V14H16V11H17V14H18V11H19V14H20V10H14M3,9H21V15H12V16H8V15H3V9Z";
var mdiNuke = "M14.04,12H10V11H5.5A3.5,3.5 0 0,1 2,7.5A3.5,3.5 0 0,1 5.5,4C6.53,4 7.45,4.44 8.09,5.15C8.5,3.35 10.08,2 12,2C13.92,2 15.5,3.35 15.91,5.15C16.55,4.44 17.47,4 18.5,4A3.5,3.5 0 0,1 22,7.5A3.5,3.5 0 0,1 18.5,11H14.04V12M10,16.9V15.76H5V13.76H19V15.76H14.04V16.92L20,19.08C20.58,19.29 21,19.84 21,20.5A1.5,1.5 0 0,1 19.5,22H4.5A1.5,1.5 0 0,1 3,20.5C3,19.84 3.42,19.29 4,19.08L10,16.9Z";
var mdiNull = "M12,2C13.85,2 15.55,2.78 16.9,4.1L18.6,1.93L20.18,3.16L18.2,5.68C19.33,7.41 20,9.6 20,12C20,17.5 16.42,22 12,22C10.15,22 8.45,21.22 7.1,19.9L5.4,22.07L3.82,20.84L5.8,18.32C4.67,16.59 4,14.4 4,12C4,6.5 7.58,2 12,2M12,4C8.69,4 6,7.58 6,12C6,13.73 6.41,15.33 7.11,16.64L15.67,5.67C14.66,4.62 13.38,4 12,4M12,20C15.31,20 18,16.42 18,12C18,10.27 17.59,8.67 16.89,7.36L8.33,18.33C9.34,19.38 10.62,20 12,20Z";
var mdiNumeric = "M4,17V9H2V7H6V17H4M22,15C22,16.11 21.1,17 20,17H16V15H20V13H18V11H20V9H16V7H20A2,2 0 0,1 22,9V10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 22,13.5V15M14,15V17H8V13C8,11.89 8.9,11 10,11H12V9H8V7H12A2,2 0 0,1 14,9V11C14,12.11 13.1,13 12,13H10V15H14Z";
var mdiNumeric0 = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z";
var mdiNumeric0Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z";
var mdiNumeric0BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M13,5A2,2 0 0,0 11,7V13A2,2 0 0,0 13,15H15A2,2 0 0,0 17,13V7A2,2 0 0,0 15,5H13M13,7H15V13H13V7Z";
var mdiNumeric0BoxMultipleOutline = "M21,17V3H7V17H21M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,5H15A2,2 0 0,1 17,7V13A2,2 0 0,1 15,15H13A2,2 0 0,1 11,13V7A2,2 0 0,1 13,5M13,7V13H15V7H13Z";
var mdiNumeric0BoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z";
var mdiNumeric0Circle = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNumeric0CircleOutline = "M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumeric1 = "M10,7V9H12V17H14V7H10Z";
var mdiNumeric1Box = "M14,17H12V9H10V7H14M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric1BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M14,15H16V5H12V7H14V15Z";
var mdiNumeric1BoxMultipleOutline = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M14,15H16V5H12V7H14M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z";
var mdiNumeric1BoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,17H14V7H10V9H12";
var mdiNumeric1Circle = "M10,7V9H12V17H14V7H10M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNumeric1CircleOutline = "M10,7H14V17H12V9H10V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumeric10 = "M10 7H6V9H8V17H10V7M16 7H14C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9C18 7.9 17.11 7 16 7M16 15H14V9H16V15Z";
var mdiNumeric10Box = "M14,9H16V15H14V9M21,5V19C21,20.11 20.11,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19C20.11,3 21,3.9 21,5M10,7H6V9H8V17H10V7M18,9A2,2 0 0,0 16,7H14A2,2 0 0,0 12,9V15C12,16.11 12.9,17 14,17H16C17.11,17 18,16.11 18,15V9Z";
var mdiNumeric10BoxMultiple = "M3 5V21H19V23H3C1.9 23 1 22.11 1 21V5H3M16 13H18V7H16V13M21 1H7C5.9 1 5 1.9 5 3V17C5 18.11 5.9 19 7 19H21C22.11 19 23 18.11 23 17V3C23 1.9 22.11 1 21 1M12 15H10V7H8V5H12V15M20 13C20 14.11 19.11 15 18 15H16C14.9 15 14 14.11 14 13V7C14 5.9 14.9 5 16 5H18C19.11 5 20 5.9 20 7V13Z";
var mdiNumeric10BoxMultipleOutline = "M21 17V3H7V17H21M21 1C22.11 1 23 1.9 23 3V17C23 18.11 22.11 19 21 19H7C5.9 19 5 18.11 5 17V3C5 1.9 5.9 1 7 1H21M3 5V21H19V23H3C1.9 23 1 22.11 1 21V5H3M12 5H8V7H10V15H12V5M18 5H16C14.9 5 14 5.9 14 7V13C14 14.11 14.9 15 16 15H18C19.11 15 20 14.11 20 13V7C20 5.9 19.11 5 18 5M18 13H16V7H18V13Z";
var mdiNumeric10BoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19C3,20.11 3.9,21 5,21H19C20.11,21 21,20.11 21,19V5A2,2 0 0,0 19,3M8,17H10V7H6V9H8M14,7H16C17.11,7 18,7.9 18,9V15C18,16.11 17.11,17 16,17H14A2,2 0 0,1 12,15V9A2,2 0 0,1 14,7M14,9V15H16V9H14Z";
var mdiNumeric10Circle = "M14 9H16V15H14V9M22 12C22 17.5 17.5 22 12 22S2 17.5 2 12 6.5 2 12 2 22 6.5 22 12M10 7H6V9H8V17H10V7M18 9C18 7.9 17.11 7 16 7H14C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9Z";
var mdiNumeric10CircleOutline = "M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C7.58 4 4 7.58 4 12S7.58 20 12 20 20 16.42 20 12 16.42 4 12 4M10 7H6V9H8V17H10V7M16 7H14C12.9 7 12 7.9 12 9V15C12 16.11 12.9 17 14 17H16C17.11 17 18 16.11 18 15V9C18 7.9 17.11 7 16 7M16 15H14V9H16V15Z";
var mdiNumeric2 = "M9,7V9H13V11H11A2,2 0 0,0 9,13V17H11L15,17V15H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9Z";
var mdiNumeric2Box = "M15,11C15,12.11 14.1,13 13,13H11V15H15V17H9V13C9,11.89 9.9,11 11,11H13V9H9V7H13A2,2 0 0,1 15,9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric2BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M17,13H13V11H15A2,2 0 0,0 17,9V7C17,5.89 16.1,5 15,5H11V7H15V9H13A2,2 0 0,0 11,11V15H17V13M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z";
var mdiNumeric2BoxMultipleOutline = "M17,13H13V11H15A2,2 0 0,0 17,9V7C17,5.89 16.1,5 15,5H11V7H15V9H13A2,2 0 0,0 11,11V15H17M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z";
var mdiNumeric2BoxOutline = "M15,15H11V13H13A2,2 0 0,0 15,11V9C15,7.89 14.1,7 13,7H9V9H13V11H11A2,2 0 0,0 9,13V17H15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric2Circle = "M9,7V9H13V11H11A2,2 0 0,0 9,13V17H11L15,17V15H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNumeric2CircleOutline = "M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V15H15V17H11L9,17V13A2,2 0 0,1 11,11H13V9H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumeric3 = "M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15";
var mdiNumeric3Box = "M15,10.5A1.5,1.5 0 0,1 13.5,12C14.34,12 15,12.67 15,13.5V15C15,16.11 14.11,17 13,17H9V15H13V13H11V11H13V9H9V7H13C14.11,7 15,7.89 15,9M19,3H5C3.91,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19C20.11,21 21,20.1 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric3BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H11V7H15V9H13V11H15V13H11V15H15A2,2 0 0,0 17,13M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z";
var mdiNumeric3BoxMultipleOutline = "M17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H11V7H15V9H13V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z";
var mdiNumeric3BoxOutline = "M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric3Circle = "M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNumeric3CircleOutline = "M15,15A2,2 0 0,1 13,17H9V15H13V13H11V11H13V9H9V7H13A2,2 0 0,1 15,9V10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 15,13.5V15M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumeric4 = "M9,7V13H13V17H15V7H13V11H11V7H9Z";
var mdiNumeric4Box = "M15,17H13V13H9V7H11V11H13V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric4BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M15,15H17V5H15V9H13V5H11V11H15V15Z";
var mdiNumeric4BoxMultipleOutline = "M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M15,15H17V5H15V9H13V5H11V11H15M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z";
var mdiNumeric4BoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13,17H15V7H13V11H11V7H9V13H13";
var mdiNumeric4Circle = "M9,7V13H13V17H15V7H13V11H11V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNumeric4CircleOutline = "M9,7H11V11H13V7H15V17H13V13H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumeric5 = "M9,7V13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H9Z";
var mdiNumeric5Box = "M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H9V15H13V13H9V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric5BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H11V11H15V13H11V15H15A2,2 0 0,0 17,13Z";
var mdiNumeric5BoxMultipleOutline = "M17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H11V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z";
var mdiNumeric5BoxOutline = "M15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H9V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric5Circle = "M9,7V13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNumeric5CircleOutline = "M9,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H9V15H13V13H9V7M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumeric6 = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M11,13H13V15H11V13Z";
var mdiNumeric6Box = "M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H11A2,2 0 0,1 9,15V9C9,7.89 9.9,7 11,7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,15H13V13H11V15Z";
var mdiNumeric6BoxMultiple = "M13,11H15V13H13V11M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M13,15H15A2,2 0 0,0 17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H13A2,2 0 0,0 11,7V13C11,14.11 11.9,15 13,15Z";
var mdiNumeric6BoxMultipleOutline = "M13,11H15V13H13M13,15H15A2,2 0 0,0 17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H13A2,2 0 0,0 11,7V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z";
var mdiNumeric6BoxOutline = "M11,13H13V15H11M11,17H13A2,2 0 0,0 15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H11A2,2 0 0,0 9,9V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric6Circle = "M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M11,13H13V15H11V13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNumeric6CircleOutline = "M11,7H15V9H11V11H13A2,2 0 0,1 15,13V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,13V15H13V13H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumeric7 = "M11,17L15,9V7H9V9H13L9,17";
var mdiNumeric7Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17L15,9V7H9V9H13L9,17H11Z";
var mdiNumeric7BoxMultiple = "M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,15L17,7V5H11V7H15L11,15H13M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z";
var mdiNumeric7BoxMultipleOutline = "M13,15L17,7V5H11V7H15L11,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z";
var mdiNumeric7BoxOutline = "M11,17L15,9V7H9V9H13L9,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric7Circle = "M11,17L15,9V7H9V9H13L9,17H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNumeric7CircleOutline = "M11,17H9L13,9H9V7H15V9L11,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumeric8 = "M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17";
var mdiNumeric8Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M11,13H13V15H11V13M11,9H13V11H11V9Z";
var mdiNumeric8BoxMultiple = "M13,11H15V13H13V11M13,7H15V9H13V7M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,15H15A2,2 0 0,0 17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H13A2,2 0 0,0 11,7V8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 11,11.5V13C11,14.11 11.9,15 13,15M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z";
var mdiNumeric8BoxMultipleOutline = "M13,11H15V13H13M13,7H15V9H13M13,15H15A2,2 0 0,0 17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H13A2,2 0 0,0 11,7V8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 11,11.5V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z";
var mdiNumeric8BoxOutline = "M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric8Circle = "M11,13H13V15H11V13M11,9H13V11H11V9M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNumeric8CircleOutline = "M11,13V15H13V13H11M11,9V11H13V9H11M11,17A2,2 0 0,1 9,15V13.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 9,10.5V9A2,2 0 0,1 11,7H13A2,2 0 0,1 15,9V10.5A1.5,1.5 0 0,1 13.5,12A1.5,1.5 0 0,1 15,13.5V15A2,2 0 0,1 13,17H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumeric9 = "M13,17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13M13,11H11V9H13V11Z";
var mdiNumeric9Box = "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M13,11H11V9H13V11M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7Z";
var mdiNumeric9BoxMultiple = "M15,9H13V7H15V9M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M15,5H13A2,2 0 0,0 11,7V9C11,10.11 11.9,11 13,11H15V13H11V15H15A2,2 0 0,0 17,13V7C17,5.89 16.1,5 15,5M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21Z";
var mdiNumeric9BoxMultipleOutline = "M15,9H13V7H15M15,5H13A2,2 0 0,0 11,7V9C11,10.11 11.9,11 13,11H15V13H11V15H15A2,2 0 0,0 17,13V7C17,5.89 16.1,5 15,5M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z";
var mdiNumeric9BoxOutline = "M13,11H11V9H13M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z";
var mdiNumeric9Circle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M13,17A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11A2,2 0 0,0 9,9V11A2,2 0 0,0 11,13H13V15H9V17H13M13,11H11V9H13V11Z";
var mdiNumeric9CircleOutline = "M13,17H9V15H13V13H11A2,2 0 0,1 9,11V9A2,2 0 0,1 11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17M13,11V9H11V11H13M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumeric9Plus = "M19 11H17V9H15V11H13V13H15V15H17V13H19V11M10 7H8C6.9 7 6 7.9 6 9V11C6 12.11 6.9 13 8 13H10V15H6V17H10C11.11 17 12 16.11 12 15V9C12 7.89 11.1 7 10 7M10 11H8V9H10V11Z";
var mdiNumeric9PlusBox = "M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M19,11H17V9H15V11H13V13H15V15H17V13H19V11M10,7H8A2,2 0 0,0 6,9V11C6,12.11 6.9,13 8,13H10V15H6V17H10A2,2 0 0,0 12,15V9C12,7.89 11.1,7 10,7M8,9H10V11H8V9Z";
var mdiNumeric9PlusBoxMultiple = "M11,9V8H12V9H11M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M15,9V11H17V13H19V11H21V9H19V7H17V9H15M14,12V8C14,6.89 13.1,6 12,6H11A2,2 0 0,0 9,8V9C9,10.11 9.9,11 11,11H12V12H9V14H12A2,2 0 0,0 14,12Z";
var mdiNumeric9PlusBoxMultipleOutline = "M21,9H19V7H17V9H15V11H17V13H19V11H21V17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M11,9V8H12V9M14,12V8C14,6.89 13.1,6 12,6H11A2,2 0 0,0 9,8V9C9,10.11 9.9,11 11,11H12V12H9V14H12A2,2 0 0,0 14,12M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z";
var mdiNumeric9PlusBoxOutline = "M19,11H17V9H15V11H13V13H15V15H17V13H19V19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,11V10H10V11M12,14V10C12,8.89 11.1,8 10,8H9A2,2 0 0,0 7,10V11C7,12.11 7.9,13 9,13H10V14H7V16H10A2,2 0 0,0 12,14Z";
var mdiNumeric9PlusCircle = "M19,11H17V9H15V11H13V13H15V15H17V13H19V11M10,7H8A2,2 0 0,0 6,9V11C6,12.11 6.9,13 8,13H10V15H6V17H10A2,2 0 0,0 12,15V9C12,7.89 11.1,7 10,7M8,9H10V11H8V9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z";
var mdiNumeric9PlusCircleOutline = "M19,11V13H17V15H15V13H13V11H15V9H17V11H19M10,7A2,2 0 0,1 12,9V15C12,16.11 11.1,17 10,17H6V15H10V13H8A2,2 0 0,1 6,11V9C6,7.89 6.9,7 8,7H10M8,9V11H10V9H8M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiNumericNegative1 = "M13 7V9H15V17H17V7H13M11 13H5V11H11V13Z";
var mdiNumericPositive1 = "M13 7V9H15V17H17V7H13M11 13H9V15H7V13H5V11H7V9H9V11H11V13Z";
var mdiNut = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z";
var mdiNutrition = "M22,18A4,4 0 0,1 18,22H14A4,4 0 0,1 10,18V16H22V18M4,3H14A2,2 0 0,1 16,5V14H8V19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,6V8H6V6H4M14,8V6H8V8H14M4,10V12H6V10H4M8,10V12H14V10H8M4,14V16H6V14H4Z";
var mdiNuxt = "M21.8 18.36L16.03 8.08C15.93 8 15.63 7.43 15.03 7.43C14.78 7.43 14.43 7.53 14.07 8.08L13.33 9.26L11.31 5.65C11.26 5.55 10.91 5 10.31 5C10.06 5 9.66 5.1 9.36 5.65L2.18 18.31C2.13 18.41 1.83 19 2.13 19.5C2.23 19.75 2.53 20 3.19 20H20.85C20.95 20 21.6 20 21.9 19.5C22 19.26 22.1 18.86 21.8 18.36M8.1 18.31L7.95 18.86H3.24L10.36 6.34L12.66 10.47L8.1 18.31M9.21 18.86L13.32 11.66L17.5 18.86H9.21M18.74 18.86L18.54 18.31L14 10.46L15.03 8.73L20.75 18.86H18.74Z";
var mdiOar = "M20.23,15.21C18.77,13.75 14.97,10.2 12.77,11.27L4.5,3L3,4.5L11.28,12.79C10.3,15 13.88,18.62 15.35,20.08C17.11,21.84 18.26,20.92 19.61,19.57C21.1,18.08 21.61,16.61 20.23,15.21Z";
var mdiOcarina = "M20,12C16.8,10.4 13.4,9.7 10.8,9.3L9.7,5.9C9.3,4.8 7.7,4.8 7.3,5.9L6.3,9C3.9,9.4 2,11.5 2,14C2,16.8 4.2,19 7,19C7,19 14,19 20,16C20,16 22,15 22,14C22,13 20,12 20,12M5,14C4.4,14 4,13.6 4,13C4,12.4 4.4,12 5,12C5.6,12 6,12.4 6,13C6,13.5 5.6,14 5,14M7,17C6.4,17 6,16.6 6,16C6,15.4 6.4,15 7,15C7.6,15 8,15.4 8,16C8,16.5 7.6,17 7,17M9,14C8.4,14 8,13.6 8,13C8,12.4 8.4,12 9,12C9.6,12 10,12.4 10,13C10,13.5 9.6,14 9,14M11,17C10.4,17 10,16.6 10,16C10,15.4 10.4,15 11,15C11.6,15 12,15.4 12,16C12,16.5 11.6,17 11,17M16,14C15.4,14 15,13.6 15,13C15,12.4 15.4,12 16,12C16.6,12 17,12.4 17,13C17,13.5 16.6,14 16,14M19,15C18.4,15 18,14.6 18,14C18,13.4 18.4,13 19,13C19.6,13 20,13.4 20,14C20,14.5 19.6,15 19,15Z";
var mdiOci = "M2 2V22H22V2M19.12 19.03H4.87V5H19.13V19.03M14.83 10.71H17.69V17.59H14.83M14.83 6.41H17.69V9.27H14.83M6.3 6.41V17.59H13.4V14.72H9.17V9.28H13.4V6.41Z";
var mdiOcr = "M2 5V19H14V17H12C10.89 17 10 16.11 10 15V9C10 7.89 10.89 7 12 7H14V5M14 7V9H16V7M14 9H12V15H14M14 15V17H16V15M5 7H7C8.11 7 9 7.89 9 9V15C9 16.11 8.11 17 7 17H5C3.89 17 3 16.11 3 15V9C3 7.89 3.89 7 5 7M17 7V17H19V13H20V14H21V17H23V14H22V12H23V8H22V7M5 9V15H7V9M19 9H21V11H19Z";
var mdiOctagon = "M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27";
var mdiOctagonOutline = "M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1";
var mdiOctagram = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06Z";
var mdiOctagramOutline = "M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06M4.81,9L6.05,12L4.81,15L7.79,16.21L9,19.19L12,17.95L15,19.19L16.21,16.21L19.19,15L17.95,12L19.19,9L16.21,7.79L15,4.81L12,6.05L9,4.81L7.79,7.79L4.81,9Z";
var mdiOdnoklassniki = "M17.83,12.74C17.55,12.17 16.76,11.69 15.71,12.5C14.28,13.64 12,13.64 12,13.64C12,13.64 9.72,13.64 8.29,12.5C7.24,11.69 6.45,12.17 6.17,12.74C5.67,13.74 6.23,14.23 7.5,15.04C8.59,15.74 10.08,16 11.04,16.1L10.24,16.9C9.1,18.03 8,19.12 7.25,19.88C6.8,20.34 6.8,21.07 7.25,21.5L7.39,21.66C7.84,22.11 8.58,22.11 9.03,21.66L12,18.68C13.15,19.81 14.24,20.9 15,21.66C15.45,22.11 16.18,22.11 16.64,21.66L16.77,21.5C17.23,21.07 17.23,20.34 16.77,19.88L13.79,16.9L13,16.09C13.95,16 15.42,15.73 16.5,15.04C17.77,14.23 18.33,13.74 17.83,12.74M12,4.57C13.38,4.57 14.5,5.69 14.5,7.06C14.5,8.44 13.38,9.55 12,9.55C10.62,9.55 9.5,8.44 9.5,7.06C9.5,5.69 10.62,4.57 12,4.57M12,12.12C14.8,12.12 17.06,9.86 17.06,7.06C17.06,4.27 14.8,2 12,2C9.2,2 6.94,4.27 6.94,7.06C6.94,9.86 9.2,12.12 12,12.12Z";
var mdiOffer = "M21 13C21.6 13 22.1 13.2 22.4 13.6C22.8 14 23 14.5 23 15L15 18L8 16V7H9.9L17.2 9.7C17.7 9.9 18 10.3 18 10.8C18 11.1 17.9 11.4 17.7 11.6C17.5 11.8 17.2 12 16.8 12H14L12.3 11.3L12 12.2L14 13H21M2 7H6V18H2V7Z";
var mdiOfficeBuilding = "M5,3V21H11V17.5H13V21H19V3H5M7,5H9V7H7V5M11,5H13V7H11V5M15,5H17V7H15V5M7,9H9V11H7V9M11,9H13V11H11V9M15,9H17V11H15V9M7,13H9V15H7V13M11,13H13V15H11V13M15,13H17V15H15V13M7,17H9V19H7V17M15,17H17V19H15V17Z";
var mdiOfficeBuildingMarker = "M15.19 21C14.12 19.43 13 17.36 13 15.5C13 13.67 13.96 12 15.4 11H15V9H17V10.23C17.5 10.09 18 10 18.5 10C18.67 10 18.84 10 19 10.03V3H5V21H11V17.5H13V21H15.19M15 5H17V7H15V5M9 19H7V17H9V19M9 15H7V13H9V15M9 11H7V9H9V11M9 7H7V5H9V7M11 5H13V7H11V5M11 9H13V11H11V9M11 15V13H13V15H11M18.5 12C16.6 12 15 13.61 15 15.5C15 18.11 18.5 22 18.5 22S22 18.11 22 15.5C22 13.61 20.4 12 18.5 12M18.5 16.81C17.8 16.81 17.3 16.21 17.3 15.61C17.3 14.91 17.9 14.41 18.5 14.41S19.7 15 19.7 15.61C19.8 16.21 19.2 16.81 18.5 16.81Z";
var mdiOfficeBuildingMarkerOutline = "M15 9H17V11H15V9M17 5H15V7H17V5M11 15H13V13H11V15M13 5H11V7H13V5M11 11H13V9H11V11M9 5H7V7H9V5M9 9H7V11H9V9M14.55 21H13V17.5H11V21H5V3H19V11.03C19.71 11.09 20.39 11.31 21 11.63V1H3V23H15.91C15.5 22.44 15 21.76 14.55 21M7 19H9V17H7V19M9 13H7V15H9V13M22 16.5C22 19.1 18.5 23 18.5 23S15 19.1 15 16.5C15 14.6 16.6 13 18.5 13S22 14.6 22 16.5M19.7 16.6C19.7 16 19.1 15.4 18.5 15.4S17.3 15.9 17.3 16.6C17.3 17.2 17.8 17.8 18.5 17.8S19.8 17.2 19.7 16.6Z";
var mdiOfficeBuildingOutline = "M19 3V21H13V17.5H11V21H5V3H19M15 7H17V5H15V7M11 7H13V5H11V7M7 7H9V5H7V7M15 11H17V9H15V11M11 11H13V9H11V11M7 11H9V9H7V11M15 15H17V13H15V15M11 15H13V13H11V15M7 15H9V13H7V15M15 19H17V17H15V19M7 19H9V17H7V19M21 1H3V23H21V1Z";
var mdiOil = "M22,12.5C22,12.5 24,14.67 24,16A2,2 0 0,1 22,18A2,2 0 0,1 20,16C20,14.67 22,12.5 22,12.5M6,6H10A1,1 0 0,1 11,7A1,1 0 0,1 10,8H9V10H11C11.74,10 12.39,10.4 12.73,11L19.24,7.24L22.5,9.13C23,9.4 23.14,10 22.87,10.5C22.59,10.97 22,11.14 21.5,10.86L19.4,9.65L15.75,15.97C15.41,16.58 14.75,17 14,17H5A2,2 0 0,1 3,15V12A2,2 0 0,1 5,10H7V8H6A1,1 0 0,1 5,7A1,1 0 0,1 6,6M5,12V15H14L16.06,11.43L12.6,13.43L11.69,12H5M0.38,9.21L2.09,7.5C2.5,7.11 3.11,7.11 3.5,7.5C3.89,7.89 3.89,8.5 3.5,8.91L1.79,10.62C1.4,11 0.77,11 0.38,10.62C0,10.23 0,9.6 0.38,9.21Z";
var mdiOilLamp = "M5,20H16V22H5M11,5H10A2,2 0 0,0 8,7H13A2,2 0 0,0 11,5M16,8H22A2,2 0 0,1 20,10H19A4,4 0 0,0 15,14V15A4,4 0 0,1 11,19H10A4,4 0 0,1 6,15H4A2,2 0 0,1 2,13V10A2,2 0 0,1 4,8M6,10H4V13H6M19,5A2,2 0 0,1 21,7H22A2.9,2.9 0 0,0 19,4A2,2 0 0,1 17,2H16A2.9,2.9 0 0,0 19,5";
var mdiOilLevel = "M8 18C6.67 18 5.79 18.79 5.29 19.29S4.67 20 4 20 3.21 19.79 2.71 19.29C2.35 18.93 1.79 18.42 1 18.16V20.41C1.09 20.5 1.18 20.59 1.29 20.71C1.79 21.21 2.67 22 4 22S6.21 21.21 6.71 20.71 7.33 20 8 20 8.79 20.21 9.29 20.71C9.73 21.14 10.44 21.8 11.5 21.96C11.66 22 11.83 22 12 22C13.33 22 14.21 21.21 14.71 20.71S15.33 20 16 20 16.79 20.21 17.29 20.71 18.67 22 20 22 22.21 21.21 22.71 20.71C22.82 20.59 22.91 20.5 23 20.41V18.16C22.21 18.42 21.65 18.93 21.29 19.29C20.79 19.79 20.67 20 20 20S19.21 19.79 18.71 19.29 17.33 18 16 18 13.79 18.79 13.29 19.29 12.67 20 12 20C11.78 20 11.63 19.97 11.5 19.92C11.22 19.82 11.05 19.63 10.71 19.29C10.21 18.79 9.33 18 8 18M22 10.5C22 10.5 24 12.67 24 14C24 15.1 23.1 16 22 16S20 15.1 20 14C20 12.67 22 10.5 22 10.5M22.5 7.13L19.24 5.24L12.73 9C12.39 8.4 11.74 8 11 8H9V6H10C10.55 6 11 5.55 11 5S10.55 4 10 4H6C5.45 4 5 4.45 5 5S5.45 6 6 6H7V8H5C3.9 8 3 8.9 3 10V13C3 14.1 3.9 15 5 15H14C14.75 15 15.41 14.58 15.75 13.97L19.4 7.65L21.5 8.86C22 9.14 22.59 8.97 22.87 8.5C23.14 8 23 7.4 22.5 7.13M14 13H5V10H11.69L12.6 11.43L16.06 9.43L14 13M3.5 6.92L1.79 8.62A1 1 0 0 1 .38 7.21L2.09 5.5A1 1 0 0 1 3.5 5.5C3.89 5.89 3.89 6.5 3.5 6.92Z";
var mdiOilTemperature = "M10 5H13V3H10V2C10 1.4 9.6 1 9 1S8 1.4 8 2V15.3C7.4 15.6 7 16.3 7 17C7 18.1 7.9 19 9 19S11 18.1 11 17C11 16.3 10.6 15.6 10 15.3V13H13V11H10V9H13V7H10V5M22 17.5C22 17.5 24 19.7 24 21C24 22.1 23.1 23 22 23S20 22.1 20 21C20 19.7 22 17.5 22 17.5M22.9 15.5C22.6 16 22 16.1 21.5 15.9L19.4 14.7L15.8 21C15.5 21.6 14.8 22 14 22H5C3.9 22 3 21.1 3 20V17C3 15.9 3.9 15 5 15V20H14L16.1 16.4L13 18.2V15.8L19.2 12.2L22.5 14.1C23 14.4 23.1 15 22.9 15.5M3.5 13.9L1.8 15.6C1.4 16 .8 16 .4 15.6S0 14.6.4 14.2L2.1 12.5C2.5 12.1 3.1 12.1 3.5 12.5S3.9 13.5 3.5 13.9Z";
var mdiOmega = "M19.15,19H13.39V16.87C15.5,15.25 16.59,13.24 16.59,10.84C16.59,9.34 16.16,8.16 15.32,7.29C14.47,6.42 13.37,6 12.03,6C10.68,6 9.57,6.42 8.71,7.3C7.84,8.17 7.41,9.37 7.41,10.88C7.41,13.26 8.5,15.26 10.61,16.87V19H4.85V16.87H8.41C6.04,15.32 4.85,13.23 4.85,10.6C4.85,8.5 5.5,6.86 6.81,5.66C8.12,4.45 9.84,3.85 11.97,3.85C14.15,3.85 15.89,4.45 17.19,5.64C18.5,6.83 19.15,8.5 19.15,10.58C19.15,13.21 17.95,15.31 15.55,16.87H19.15V19Z";
var mdiOneUp = "M10,19V19C9.4,19 9,18.6 9,18V17C9,16.5 9.4,16 10,16V16C10.5,16 11,16.4 11,17V18C11,18.6 10.6,19 10,19M15,18V17C15,16.5 14.6,16 14,16V16C13.5,16 13,16.4 13,17V18C13,18.5 13.4,19 14,19V19C14.6,19 15,18.6 15,18M22,12C22,14.6 20.4,16.9 18,18.4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V18.4C3.6,16.9 2,14.6 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,10C7,8.9 6.4,7.9 5.5,7.4C4.5,8.7 4,10.3 4,12C4,12.3 4,12.7 4.1,13C5.7,12.9 7,11.6 7,10M9,9C9,10.7 10.3,12 12,12C13.7,12 15,10.7 15,9C15,7.3 13.7,6 12,6C10.3,6 9,7.3 9,9M16,20V15.5C14.8,15.2 13.4,15 12,15C10.6,15 9.2,15.2 8,15.5V20H16M19.9,13C20,12.7 20,12.3 20,12C20,10.3 19.5,8.7 18.5,7.4C17.6,7.9 17,8.9 17,10C17,11.6 18.3,12.9 19.9,13Z";
var mdiOnepassword = "M12,1C5.92,1 1,5.92 1,12C1,18.08 5.92,23 12,23C18.08,23 23,18.08 23,12C23,5.92 18.08,1 12,1M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M13,13.5C13,14.13 13.4,14.7 14,14.91V18H10V11.91C10.78,11.64 11.19,10.8 10.93,10C10.78,9.58 10.44,9.24 10,9.09V6H14V12.09C13.4,12.3 13,12.87 13,13.5Z";
var mdiOpacity = "M17.66,8L12,2.35L6.34,8C4.78,9.56 4,11.64 4,13.64C4,15.64 4.78,17.75 6.34,19.31C7.9,20.87 9.95,21.66 12,21.66C14.05,21.66 16.1,20.87 17.66,19.31C19.22,17.75 20,15.64 20,13.64C20,11.64 19.22,9.56 17.66,8M6,14C6,12 6.62,10.73 7.76,9.6L12,5.27L16.24,9.65C17.38,10.77 18,12 18,14H6Z";
var mdiOpenInApp = "M12,10L8,14H11V20H13V14H16M19,4H5C3.89,4 3,4.9 3,6V18A2,2 0 0,0 5,20H9V18H5V8H19V18H15V20H19A2,2 0 0,0 21,18V6A2,2 0 0,0 19,4Z";
var mdiOpenInNew = "M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z";
var mdiOpenSourceInitiative = "M15.41,22C15.35,22 15.28,22 15.22,22C15.1,21.95 15,21.85 14.96,21.73L12.74,15.93C12.65,15.69 12.77,15.42 13,15.32C13.71,15.06 14.28,14.5 14.58,13.83C15.22,12.4 14.58,10.73 13.15,10.09C11.72,9.45 10.05,10.09 9.41,11.5C9.11,12.21 9.09,13 9.36,13.69C9.66,14.43 10.25,15 11,15.28C11.24,15.37 11.37,15.64 11.28,15.89L9,21.69C8.96,21.81 8.87,21.91 8.75,21.96C8.63,22 8.5,22 8.39,21.96C3.24,19.97 0.67,14.18 2.66,9.03C4.65,3.88 10.44,1.31 15.59,3.3C18.06,4.26 20.05,6.15 21.13,8.57C22.22,11 22.29,13.75 21.33,16.22C20.32,18.88 18.23,21 15.58,22C15.5,22 15.47,22 15.41,22M12,3.59C7.03,3.46 2.9,7.39 2.77,12.36C2.68,16.08 4.88,19.47 8.32,20.9L10.21,16C8.38,15 7.69,12.72 8.68,10.89C9.67,9.06 11.96,8.38 13.79,9.36C15.62,10.35 16.31,12.64 15.32,14.47C14.97,15.12 14.44,15.65 13.79,16L15.68,20.93C17.86,19.95 19.57,18.16 20.44,15.93C22.28,11.31 20.04,6.08 15.42,4.23C14.33,3.8 13.17,3.58 12,3.59Z";
var mdiOpenid = "M14,2L11,3.5V19.94C7,19.5 4,17.46 4,15C4,12.75 6.5,10.85 10,10.22V8.19C4.86,8.88 1,11.66 1,15C1,18.56 5.36,21.5 11,21.94C11.03,21.94 11.06,21.94 11.09,21.94L14,20.5V2M15,8.19V10.22C16.15,10.43 17.18,10.77 18.06,11.22L16.5,12L23,13.5L22.5,9L20.5,10C19,9.12 17.12,8.47 15,8.19Z";
var mdiOpera = "M9.04,17.07C8.04,15.9 7.4,14.16 7.35,12.21V11.79C7.4,9.84 8.04,8.1 9.04,6.93C9.86,5.95 10.93,5.37 12.1,5.37C14.72,5.37 16.84,8.34 16.84,12C16.84,15.66 14.72,18.63 12.1,18.63C10.93,18.63 10.33,18.5 9.04,17.07M12.03,3H12A9,9 0 0,0 3,12C3,16.83 6.8,20.77 11.57,21H12C14.3,21 16.4,20.13 18,18.71C19.84,17.06 21,14.67 21,12C21,9.33 19.84,6.94 18,5.29C16.41,3.87 14.32,3 12.03,3Z";
var mdiOrbit = "M8.11,1.75C9.3,1.25 10.62,1 12,1C18.08,1 23,5.92 23,12C23,18.08 18.08,23 12,23C5.92,23 1,18.08 1,12C1,10.62 1.25,9.3 1.72,8.08C2.24,8.61 2.83,8.96 3.45,9.18C3.16,10.07 3,11 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3C11,3 10.07,3.16 9.18,3.45C8.96,2.83 8.61,2.24 8.11,1.75M4.93,2.93C6.03,2.93 6.93,3.82 6.93,4.93A2,2 0 0,1 4.93,6.93C3.82,6.93 2.93,6.03 2.93,4.93C2.93,3.82 3.82,2.93 4.93,2.93M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7Z";
var mdiOrbitVariant = "M19 8L15 12H18C18 15.31 15.31 18 12 18C11 18 10.03 17.75 9.2 17.3L7.74 18.76C8.97 19.54 10.43 20 12 20C16.42 20 20 16.42 20 12H23M6 12C6 8.69 8.69 6 12 6C13 6 13.97 6.25 14.8 6.7L16.26 5.24C15.03 4.46 13.57 4 12 4C7.58 4 4 7.58 4 12H1L5 16L9 12M14 12C14 13.11 13.11 14 12 14S10 13.11 10 12 10.9 10 12 10 14 10.9 14 12Z";
var mdiOrderAlphabeticalAscending = "M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12M9 13V15L5.67 19H9V21H3V19L6.33 15H3V13M7 3H5C3.9 3 3 3.9 3 5V11H5V9H7V11H9V5C9 3.9 8.11 3 7 3M7 7H5V5H7Z";
var mdiOrderAlphabeticalDescending = "M7 13H5C3.9 13 3 13.9 3 15V21H5V19H7V21H9V15C9 13.9 8.11 13 7 13M7 17H5V15H7M9 3V5L5.67 9H9V11H3V9L6.33 5H3V3M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z";
var mdiOrderBoolAscending = "M6 3C3.79 3 2 4.79 2 7S3.79 11 6 11 10 9.21 10 7 8.21 3 6 3M6 9C4.9 9 4 8.1 4 7S4.9 5 6 5 8 5.9 8 7 7.1 9 6 9M6 13C3.79 13 2 14.79 2 17S3.79 21 6 21 10 19.21 10 17 8.21 13 6 13M12 5H22V7H12V5M12 19V17H22V19H12M12 11H22V13H12V11Z";
var mdiOrderBoolAscendingVariant = "M4 13C2.89 13 2 13.89 2 15V19C2 20.11 2.89 21 4 21H8C9.11 21 10 20.11 10 19V15C10 13.89 9.11 13 8 13M8.2 14.5L9.26 15.55L5.27 19.5L2.74 16.95L3.81 15.9L5.28 17.39M4 3C2.89 3 2 3.89 2 5V9C2 10.11 2.89 11 4 11H8C9.11 11 10 10.11 10 9V5C10 3.89 9.11 3 8 3M4 5H8V9H4M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z";
var mdiOrderBoolDescending = "M6 13C3.79 13 2 14.79 2 17S3.79 21 6 21 10 19.21 10 17 8.21 13 6 13M6 19C4.9 19 4 18.1 4 17S4.9 15 6 15 8 15.9 8 17 7.1 19 6 19M6 3C3.79 3 2 4.79 2 7S3.79 11 6 11 10 9.21 10 7 8.21 3 6 3M12 5H22V7H12V5M12 19V17H22V19H12M12 11H22V13H12V11Z";
var mdiOrderBoolDescendingVariant = "M4 3C2.89 3 2 3.89 2 5V9C2 10.11 2.89 11 4 11H8C9.11 11 10 10.11 10 9V5C10 3.89 9.11 3 8 3M8.2 4.5L9.26 5.55L5.27 9.5L2.74 6.95L3.81 5.9L5.28 7.39M4 13C2.89 13 2 13.89 2 15V19C2 20.11 2.89 21 4 21H8C9.11 21 10 20.11 10 19V15C10 13.89 9.11 13 8 13M4 15H8V19H4M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z";
var mdiOrderNumericAscending = "M7 21H3V19H7V18H5C3.9 18 3 17.11 3 16V15C3 13.9 3.9 13 5 13H7C8.11 13 9 13.9 9 15V19C9 20.11 8.11 21 7 21M7 15H5V16H7M5 3H7C8.11 3 9 3.9 9 5V9C9 10.11 8.11 11 7 11H5C3.9 11 3 10.11 3 9V5C3 3.9 3.9 3 5 3M5 9H7V5H5M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z";
var mdiOrderNumericDescending = "M7 11H3V9H7V8H5C3.9 8 3 7.11 3 6V5C3 3.9 3.9 3 5 3H7C8.11 3 9 3.9 9 5V9C9 10.11 8.11 11 7 11M7 5H5V6H7M5 13H7C8.11 13 9 13.9 9 15V19C9 20.11 8.11 21 7 21H5C3.9 21 3 20.11 3 19V15C3 13.9 3.9 13 5 13M5 19H7V15H5M12 5H22V7H12M12 19V17H22V19M12 11H22V13H12Z";
var mdiOrigin = "M12,2.13C12,2.23 11.95,2.33 11.89,2.41C11.5,3 11.16,3.64 11.04,4.33L11,4.56L12,4.5A7.5,7.5 0 0,1 19.5,12C19.5,13.62 19,15.11 18.12,16.34C16.73,18.68 14.72,20.65 12.34,21.97C12.25,22 12.12,22 12.06,21.93C12,21.83 12,21.7 12.09,21.61C12.47,21.09 12.73,20.5 12.87,19.85L12.93,19.44L12,19.5A7.5,7.5 0 0,1 4.5,12C4.5,10.39 5,8.89 5.88,7.67C7.26,5.32 9.28,3.34 11.67,2C11.78,1.95 11.94,2 12,2.13M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z";
var mdiOrnament = "M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M6.34,16H7.59L6,14.43C6.05,15 6.17,15.5 6.34,16M12.59,16L8.59,12H6.41L10.41,16H12.59M17.66,12H16.41L18,13.57C17.95,13 17.83,12.5 17.66,12M11.41,12L15.41,16H17.59L13.59,12H11.41M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20Z";
var mdiOrnamentVariant = "M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20M12,12A2,2 0 0,0 10,14A2,2 0 0,0 12,16A2,2 0 0,0 14,14A2,2 0 0,0 12,12M18,14C18,13.31 17.88,12.65 17.67,12C16.72,12.19 16,13 16,14C16,15 16.72,15.81 17.67,15.97C17.88,15.35 18,14.69 18,14M6,14C6,14.69 6.12,15.35 6.33,15.97C7.28,15.81 8,15 8,14C8,13 7.28,12.19 6.33,12C6.12,12.65 6,13.31 6,14Z";
var mdiOutdoorLamp = "M15 22H13C11.9 22 11 21.1 11 20V15H17V20C17 21.1 16.1 22 15 22M7 14H21L15 9.71V6C15 4.39 13.94 2 11 2S7 4.39 7 6C7 6.45 6.81 7 6 7H5V3H3V12H5V9H6C8.2 9 9 7.21 9 6C9 5.67 9.1 4 11 4C12.83 4 13 5.54 13 6V9.71L7 14Z";
var mdiOverscan = "M12 5.5L10 8H14L12 5.5M18 10V14L20.5 12L18 10M6 10L3.5 12L6 14V10M14 16H10L12 18.5L14 16M21 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H21C22.1 21 23 20.1 23 19V5C23 3.9 22.1 3 21 3M21 19H3V5H21V19Z";
var mdiOwl = "M12,16C12.56,16.84 13.31,17.53 14.2,18L12,20.2L9.8,18C10.69,17.53 11.45,16.84 12,16M17,11.2A2,2 0 0,0 15,13.2A2,2 0 0,0 17,15.2A2,2 0 0,0 19,13.2C19,12.09 18.1,11.2 17,11.2M7,11.2A2,2 0 0,0 5,13.2A2,2 0 0,0 7,15.2A2,2 0 0,0 9,13.2C9,12.09 8.1,11.2 7,11.2M17,8.7A4,4 0 0,1 21,12.7A4,4 0 0,1 17,16.7A4,4 0 0,1 13,12.7A4,4 0 0,1 17,8.7M7,8.7A4,4 0 0,1 11,12.7A4,4 0 0,1 7,16.7A4,4 0 0,1 3,12.7A4,4 0 0,1 7,8.7M2.24,1C4,4.7 2.73,7.46 1.55,10.2C1.19,11 1,11.83 1,12.7A6,6 0 0,0 7,18.7C7.21,18.69 7.42,18.68 7.63,18.65L10.59,21.61L12,23L13.41,21.61L16.37,18.65C16.58,18.68 16.79,18.69 17,18.7A6,6 0 0,0 23,12.7C23,11.83 22.81,11 22.45,10.2C21.27,7.46 20,4.7 21.76,1C19.12,3.06 15.36,4.69 12,4.7C8.64,4.69 4.88,3.06 2.24,1Z";
var mdiPacMan = "M12,12L19.07,19.07C15.17,23 8.83,23 4.93,19.07C1,15.17 1,8.84 4.93,4.93C8.83,1 15.16,1 19.07,4.93L12,12M19,10A2,2 0 0,0 17,12A2,2 0 0,0 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10Z";
var mdiPackage = "M5.12,5H18.87L17.93,4H5.93L5.12,5M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M6,18H12V15H6V18Z";
var mdiPackageDown = "M5.12,5L5.93,4H17.93L18.87,5M12,17.5L6.5,12H10V10H14V12H17.5L12,17.5M20.54,5.23L19.15,3.55C18.88,3.21 18.47,3 18,3H6C5.53,3 5.12,3.21 4.84,3.55L3.46,5.23C3.17,5.57 3,6 3,6.5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V6.5C21,6 20.83,5.57 20.54,5.23Z";
var mdiPackageUp = "M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M5.12,5H18.87L17.93,4H5.93L5.12,5M12,9.5L6.5,15H10V17H14V15H17.5L12,9.5Z";
var mdiPackageVariant = "M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z";
var mdiPackageVariantClosed = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L10.11,5.22L16,8.61L17.96,7.5L12,4.15M6.04,7.5L12,10.85L13.96,9.75L8.08,6.35L6.04,7.5M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z";
var mdiPageFirst = "M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z";
var mdiPageLast = "M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z";
var mdiPageLayoutBody = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,8V16H18V8H6Z";
var mdiPageLayoutFooter = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,16V20H18V16H6Z";
var mdiPageLayoutHeader = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,4V8H18V4H6Z";
var mdiPageLayoutHeaderFooter = "M18 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V4C20 2.9 19.11 2 18 2M18 20H6V16H18V20M18 8H6V4H18V8Z";
var mdiPageLayoutSidebarLeft = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M6,8V16H10V8H6Z";
var mdiPageLayoutSidebarRight = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M14,8V16H18V8H14Z";
var mdiPageNext = "M20,3H5A2,2 0 0,0 3,5V11H7V9L11,12L7,15V13H3V19A2,2 0 0,0 5,21H20A2,2 0 0,0 22,19V5A2,2 0 0,0 20,3M17,17H13V15H17V17M20,13H13V11H20V13M20,9H13V7H20V9M3,13H0V11H3V13Z";
var mdiPageNextOutline = "M22,3H5A2,2 0 0,0 3,5V9H5V5H22V19H5V15H3V19A2,2 0 0,0 5,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M7,15V13H0V11H7V9L11,12L7,15M20,13H13V11H20V13M20,9H13V7H20V9M17,17H13V15H17V17Z";
var mdiPagePrevious = "M4,21H19A2,2 0 0,0 21,19V13H17V15L13,12L17,9V11H21V5A2,2 0 0,0 19,3H4A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21M4,15H8V17H4V15M4,11H11V13H4V11M4,7H11V9H4V7M21,11H24V13H21V11Z";
var mdiPagePreviousOutline = "M2,3H19A2,2 0 0,1 21,5V9H19V5H2V19H19V15H21V19A2,2 0 0,1 19,21H2A2,2 0 0,1 0,19V5A2,2 0 0,1 2,3M17,15V13H24V11H17V9L13,12L17,15M4,13H11V11H4V13M4,9H11V7H4V9M4,17H8V15H4V17Z";
var mdiPail = "M11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63M7 21L5.79 14.97L13.21 10.69C14 10.26 14.5 9.44 14.5 8.5C14.5 7.12 13.38 6 12 6C11.53 6 11.09 6.13 10.71 6.36L4.76 9.79L4 6H3V4H21V6H20L17 21H7Z";
var mdiPailMinus = "M12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36M13 19C13 15.82 15.47 13.23 18.6 13L20 6H21V4H3V6H4L4.76 9.79L10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.44 14 10.26 13.21 10.69L5.79 14.97L7 21H13.35C13.13 20.37 13 19.7 13 19M15 18V20H23V18H15Z";
var mdiPailMinusOutline = "M4 6H3V4H21V6H20L18.6 13C17.83 13.07 17.11 13.26 16.45 13.58L17.96 6H6.04L6.5 8.22L4.65 9.27L4 6M12.86 8C12.58 7.5 11.97 7.35 11.5 7.63L3.27 12.38C2.79 12.66 2.62 13.27 2.9 13.75C3.18 14.23 3.79 14.39 4.27 14.11L12.5 9.36C12.97 9.09 13.14 8.47 12.86 8M13 19H8.64L7.73 14.43L5.9 15.5L7 21H13.35C13.13 20.37 13 19.7 13 19M15 18V20H23V18H15Z";
var mdiPailOff = "M20.84 22.73L17.35 19.24L17 21H7L5.79 14.97L10.41 12.3L9.31 11.2L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L7.85 9.74L6.75 8.64L4.76 9.79L4 6H3V4.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.27 14.16 9.94 13.6 10.4L18.2 15L20 6H21V4H7.2L10 6.78L10.71 6.36M11.5 7.63L11.08 7.88L12.53 9.33C12.97 9.05 13.13 8.46 12.86 8C12.58 7.5 11.97 7.35 11.5 7.63Z";
var mdiPailOffOutline = "M20.84 22.73L17.35 19.24L17 21H7L5.9 15.5L7.73 14.43L8.64 19H15.36L15.65 17.54L9.31 11.2L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L7.85 9.74L6.38 8.27L4.65 9.27L4 6H3V4.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M17.96 6L16.5 13.3L18.2 15L20 6H21V4H7.2L9.2 6H17.96M11.5 7.63L11.08 7.88L12.53 9.33C12.97 9.05 13.13 8.46 12.86 8C12.58 7.5 11.97 7.35 11.5 7.63Z";
var mdiPailOutline = "M11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75S2.79 12.66 3.27 12.38L11.5 7.63M3 4V6H4L4.65 9.27L6.5 8.22L6.04 6H17.96L15.36 19H8.64L7.73 14.43L5.9 15.5L7 21H17L20 6H21V4H3Z";
var mdiPailPlus = "M12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36M13 19C13 15.82 15.47 13.23 18.6 13L20 6H21V4H3V6H4L4.76 9.79L10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.44 14 10.26 13.21 10.69L5.79 14.97L7 21H13.35C13.13 20.37 13 19.7 13 19M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z";
var mdiPailPlusOutline = "M4 6H3V4H21V6H20L18.6 13C17.83 13.07 17.11 13.26 16.45 13.58L17.96 6H6.04L6.5 8.22L4.65 9.27L4 6M12.86 8C12.58 7.5 11.97 7.35 11.5 7.63L3.27 12.38C2.79 12.66 2.62 13.27 2.9 13.75C3.18 14.23 3.79 14.39 4.27 14.11L12.5 9.36C12.97 9.09 13.14 8.47 12.86 8M13 19H8.64L7.73 14.43L5.9 15.5L7 21H13.35C13.13 20.37 13 19.7 13 19M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z";
var mdiPailRemove = "M12.5 9.36L4.27 14.11C3.79 14.39 3.18 14.23 2.9 13.75C2.62 13.27 2.79 12.66 3.27 12.38L11.5 7.63C11.97 7.35 12.58 7.5 12.86 8C13.14 8.47 12.97 9.09 12.5 9.36M13 19C13 15.82 15.47 13.23 18.6 13L20 6H21V4H3V6H4L4.76 9.79L10.71 6.36C11.09 6.13 11.53 6 12 6C13.38 6 14.5 7.12 14.5 8.5C14.5 9.44 14 10.26 13.21 10.69L5.79 14.97L7 21H13.35C13.13 20.37 13 19.7 13 19M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z";
var mdiPailRemoveOutline = "M4 6H3V4H21V6H20L18.6 13C17.83 13.07 17.11 13.26 16.45 13.58L17.96 6H6.04L6.5 8.22L4.65 9.27L4 6M12.86 8C12.58 7.5 11.97 7.35 11.5 7.63L3.27 12.38C2.79 12.66 2.62 13.27 2.9 13.75C3.18 14.23 3.79 14.39 4.27 14.11L12.5 9.36C12.97 9.09 13.14 8.47 12.86 8M13 19H8.64L7.73 14.43L5.9 15.5L7 21H13.35C13.13 20.37 13 19.7 13 19M21.12 15.46L19 17.59L16.88 15.46L15.46 16.88L17.58 19L15.46 21.12L16.87 22.54L19 20.41L21.12 22.54L22.53 21.12L20.41 19L22.53 16.88L21.12 15.46Z";
var mdiPalette = "M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z";
var mdiPaletteAdvanced = "M22,22H10V20H22V22M2,22V20H9V22H2M18,18V10H22V18H18M18,3H22V9H18V3M2,18V3H16V18H2M9,14.56A3,3 0 0,0 12,11.56C12,9.56 9,6.19 9,6.19C9,6.19 6,9.56 6,11.56A3,3 0 0,0 9,14.56Z";
var mdiPaletteOutline = "M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2C17.5,2 22,6 22,11A6,6 0 0,1 16,17H14.2C13.9,17 13.7,17.2 13.7,17.5C13.7,17.6 13.8,17.7 13.8,17.8C14.2,18.3 14.4,18.9 14.4,19.5C14.5,20.9 13.4,22 12,22M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C12.3,20 12.5,19.8 12.5,19.5C12.5,19.3 12.4,19.2 12.4,19.1C12,18.6 11.8,18.1 11.8,17.5C11.8,16.1 12.9,15 14.3,15H16A4,4 0 0,0 20,11C20,7.1 16.4,4 12,4M6.5,10C7.3,10 8,10.7 8,11.5C8,12.3 7.3,13 6.5,13C5.7,13 5,12.3 5,11.5C5,10.7 5.7,10 6.5,10M9.5,6C10.3,6 11,6.7 11,7.5C11,8.3 10.3,9 9.5,9C8.7,9 8,8.3 8,7.5C8,6.7 8.7,6 9.5,6M14.5,6C15.3,6 16,6.7 16,7.5C16,8.3 15.3,9 14.5,9C13.7,9 13,8.3 13,7.5C13,6.7 13.7,6 14.5,6M17.5,10C18.3,10 19,10.7 19,11.5C19,12.3 18.3,13 17.5,13C16.7,13 16,12.3 16,11.5C16,10.7 16.7,10 17.5,10Z";
var mdiPaletteSwatch = "M2.53,19.65L3.87,20.21V11.18L1.44,17.04C1.03,18.06 1.5,19.23 2.53,19.65M22.03,15.95L17.07,4C16.76,3.23 16.03,2.77 15.26,2.75C15,2.75 14.73,2.79 14.47,2.9L7.1,5.95C6.35,6.26 5.89,7 5.87,7.75C5.86,8 5.91,8.29 6,8.55L11,20.5C11.29,21.28 12.03,21.74 12.81,21.75C13.07,21.75 13.33,21.7 13.58,21.6L20.94,18.55C21.96,18.13 22.45,16.96 22.03,15.95M7.88,8.75A1,1 0 0,1 6.88,7.75A1,1 0 0,1 7.88,6.75C8.43,6.75 8.88,7.2 8.88,7.75C8.88,8.3 8.43,8.75 7.88,8.75M5.88,19.75A2,2 0 0,0 7.88,21.75H9.33L5.88,13.41V19.75Z";
var mdiPaletteSwatchOutline = "M2.5 19.6L3.8 20.2V11.2L1.4 17C1 18.1 1.5 19.2 2.5 19.6M15.2 4.8L20.2 16.8L12.9 19.8L7.9 7.9V7.8L15.2 4.8M15.3 2.8C15 2.8 14.8 2.8 14.5 2.9L7.1 6C6.4 6.3 5.9 7 5.9 7.8C5.9 8 5.9 8.3 6 8.6L11 20.5C11.3 21.3 12 21.7 12.8 21.7C13.1 21.7 13.3 21.7 13.6 21.6L21 18.5C22 18.1 22.5 16.9 22.1 15.9L17.1 4C16.8 3.2 16 2.8 15.3 2.8M10.5 9.9C9.9 9.9 9.5 9.5 9.5 8.9S9.9 7.9 10.5 7.9C11.1 7.9 11.5 8.4 11.5 8.9S11.1 9.9 10.5 9.9M5.9 19.8C5.9 20.9 6.8 21.8 7.9 21.8H9.3L5.9 13.5V19.8Z";
var mdiPalmTree = "M12 9C13.59 16.61 10 22 10 22H13C14.88 16.2 14 12.09 13.5 10M15.66 7.16C15.83 7.37 16 7.59 16.13 7.82C17.84 10.53 17.5 13.95 15.5 16.26C16.34 14.21 16.22 11.79 14.95 9.77C14.87 9.64 14.78 9.53 14.7 9.41C14.11 8.58 13.36 7.92 12.54 7.43C9.66 8.35 7.58 11.04 7.58 14.22C7.58 14.96 7.69 15.67 7.89 16.33C7.05 15.16 6.56 13.73 6.56 12.19C6.56 9.84 7.7 7.76 9.45 6.46C8 6.35 6.46 6.67 5.12 7.5C4.5 7.91 3.96 8.38 3.5 8.91C4.05 7.58 5 6.39 6.3 5.57C7.8 4.63 9.5 4.32 11.14 4.56C10.73 4 10.23 3.47 9.63 3C9.05 2.58 8.42 2.24 7.76 2C9.2 2.04 10.64 2.5 11.87 3.43C12.5 3.9 13 4.47 13.4 5.07C13.5 5.07 13.59 5.06 13.69 5.06C16.89 5.06 19.6 7.17 20.5 10.08C19.38 8.5 17.65 7.43 15.66 7.16Z";
var mdiPan = "M12,2.5L8,7H16L12,2.5M7,8L2.5,12L7,16V8M17,8V16L21.5,12L17,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M8,17L12,21.5L16,17H8Z";
var mdiPanBottomLeft = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M5.35,13L11,18.65L5,19L5.35,13Z";
var mdiPanBottomRight = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M13,18.65L18.65,13L19,19L13,18.65Z";
var mdiPanDown = "M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M8,17L12,21.5L16,17H8Z";
var mdiPanHorizontal = "M7,8L2.5,12L7,16V8M17,8V16L21.5,12L17,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiPanLeft = "M7,8L2.5,12L7,16V8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiPanRight = "M17,8V16L21.5,12L17,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiPanTopLeft = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M11,5.35L5.35,11L5,5L11,5.35Z";
var mdiPanTopRight = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M18.65,11L13,5.35L19,5L18.65,11Z";
var mdiPanUp = "M12,2.5L8,7H16L12,2.5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiPanVertical = "M12,2.5L8,7H16L12,2.5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M8,17L12,21.5L16,17H8Z";
var mdiPanda = "M12,3C13.74,3 15.36,3.5 16.74,4.35C17.38,3.53 18.38,3 19.5,3A3.5,3.5 0 0,1 23,6.5C23,8 22.05,9.28 20.72,9.78C20.9,10.5 21,11.23 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12C3,11.23 3.1,10.5 3.28,9.78C1.95,9.28 1,8 1,6.5A3.5,3.5 0 0,1 4.5,3C5.62,3 6.62,3.53 7.26,4.35C8.64,3.5 10.26,3 12,3M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M16.19,10.3C16.55,11.63 16.08,12.91 15.15,13.16C14.21,13.42 13.17,12.54 12.81,11.2C12.45,9.87 12.92,8.59 13.85,8.34C14.79,8.09 15.83,8.96 16.19,10.3M7.81,10.3C8.17,8.96 9.21,8.09 10.15,8.34C11.08,8.59 11.55,9.87 11.19,11.2C10.83,12.54 9.79,13.42 8.85,13.16C7.92,12.91 7.45,11.63 7.81,10.3M12,14C12.6,14 13.13,14.19 13.5,14.5L12.5,15.5C12.5,15.92 12.84,16.25 13.25,16.25A0.75,0.75 0 0,0 14,15.5A0.5,0.5 0 0,1 14.5,15A0.5,0.5 0 0,1 15,15.5A1.75,1.75 0 0,1 13.25,17.25C12.76,17.25 12.32,17.05 12,16.72C11.68,17.05 11.24,17.25 10.75,17.25A1.75,1.75 0 0,1 9,15.5A0.5,0.5 0 0,1 9.5,15A0.5,0.5 0 0,1 10,15.5A0.75,0.75 0 0,0 10.75,16.25A0.75,0.75 0 0,0 11.5,15.5L10.5,14.5C10.87,14.19 11.4,14 12,14Z";
var mdiPandora = "M10,20A1,1 0 0,1 9,21H4V3H13.71A6.75,6.75 0 0,1 20.46,9.75C20.46,13.5 17.44,16.5 13.71,16.5H10V20Z";
var mdiPanorama = "M8.5,12.5L11,15.5L14.5,11L19,17H5M23,18V6A2,2 0 0,0 21,4H3A2,2 0 0,0 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18Z";
var mdiPanoramaFisheye = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2Z";
var mdiPanoramaHorizontal = "M21.43,4C21.33,4 21.23,4 21.12,4.06C18.18,5.16 15.09,5.7 12,5.7C8.91,5.7 5.82,5.15 2.88,4.06C2.77,4 2.66,4 2.57,4C2.23,4 2,4.23 2,4.63V19.38C2,19.77 2.23,20 2.57,20C2.67,20 2.77,20 2.88,19.94C5.82,18.84 8.91,18.3 12,18.3C15.09,18.3 18.18,18.85 21.12,19.94C21.23,20 21.33,20 21.43,20C21.76,20 22,19.77 22,19.37V4.63C22,4.23 21.76,4 21.43,4M20,6.54V17.45C17.4,16.68 14.72,16.29 12,16.29C9.28,16.29 6.6,16.68 4,17.45V6.54C6.6,7.31 9.28,7.7 12,7.7C14.72,7.71 17.4,7.32 20,6.54Z";
var mdiPanoramaVertical = "M6.54,20C7.31,17.4 7.7,14.72 7.7,12C7.7,9.28 7.31,6.6 6.54,4H17.45C16.68,6.6 16.29,9.28 16.29,12C16.29,14.72 16.68,17.4 17.45,20M19.94,21.12C18.84,18.18 18.3,15.09 18.3,12C18.3,8.91 18.85,5.82 19.94,2.88C20,2.77 20,2.66 20,2.57C20,2.23 19.77,2 19.37,2H4.63C4.23,2 4,2.23 4,2.57C4,2.67 4,2.77 4.06,2.88C5.16,5.82 5.71,8.91 5.71,12C5.71,15.09 5.16,18.18 4.07,21.12C4,21.23 4,21.34 4,21.43C4,21.76 4.23,22 4.63,22H19.38C19.77,22 20,21.76 20,21.43C20,21.33 20,21.23 19.94,21.12Z";
var mdiPanoramaWideAngle = "M12,4C9.27,4 6.78,4.24 4.05,4.72L3.12,4.88L2.87,5.78C2.29,7.85 2,9.93 2,12C2,14.07 2.29,16.15 2.87,18.22L3.12,19.11L4.05,19.27C6.78,19.76 9.27,20 12,20C14.73,20 17.22,19.76 19.95,19.28L20.88,19.12L21.13,18.23C21.71,16.15 22,14.07 22,12C22,9.93 21.71,7.85 21.13,5.78L20.88,4.89L19.95,4.73C17.22,4.24 14.73,4 12,4M12,6C14.45,6 16.71,6.2 19.29,6.64C19.76,8.42 20,10.22 20,12C20,13.78 19.76,15.58 19.29,17.36C16.71,17.8 14.45,18 12,18C9.55,18 7.29,17.8 4.71,17.36C4.24,15.58 4,13.78 4,12C4,10.22 4.24,8.42 4.71,6.64C7.29,6.2 9.55,6 12,6Z";
var mdiPaperCutVertical = "M11.43,3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H20A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8A2,2 0 0,1 4,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23M4,8V20H11A1,1 0 0,1 12,19A1,1 0 0,1 13,20H20V8H15L14.9,8L17,10.92L15.4,12.1L12.42,8H11.58L8.6,12.1L7,10.92L9.1,8H9L4,8M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M12,16A1,1 0 0,1 13,17A1,1 0 0,1 12,18A1,1 0 0,1 11,17A1,1 0 0,1 12,16M12,13A1,1 0 0,1 13,14A1,1 0 0,1 12,15A1,1 0 0,1 11,14A1,1 0 0,1 12,13M12,10A1,1 0 0,1 13,11A1,1 0 0,1 12,12A1,1 0 0,1 11,11A1,1 0 0,1 12,10Z";
var mdiPaperRoll = "M9 3C5.69 3 3.14 5.69 3 9V21H12V13.46C13.1 14.45 14.5 15 16 15C19.31 15 22 12.31 22 9C22 5.69 19.31 3 16 3H9M16 5C18.21 5 20 6.79 20 9C20 11.21 18.21 13 16 13C13.79 13 12 11.21 12 9C12 6.79 13.79 5 16 5M16 7.25C15.03 7.25 14.25 8.03 14.25 9C14.25 9.97 15.03 10.75 16 10.75C16.97 10.75 17.75 9.97 17.75 9C17.75 8.03 16.97 7.25 16 7.25M4 12H5V13H4V12M6 12H7V13H6V12M8 12H9V13H8V12M10 12H11V13H10V12Z";
var mdiPaperRollOutline = "M9 3C5.69 3 3.14 5.69 3 9V21H12V13.46C13.1 14.45 14.5 15 16 15C19.31 15 22 12.31 22 9C22 5.69 19.31 3 16 3H9M9 5H11.54C10.55 6.1 10 7.5 10 9V12H9V13H10V19H5V13H6V12H5V9C5 6.79 6.79 5 9 5M16 5C18.21 5 20 6.79 20 9C20 11.21 18.21 13 16 13C13.79 13 12 11.21 12 9C12 6.79 13.79 5 16 5M16 7.25C15.03 7.25 14.25 8.03 14.25 9C14.25 9.97 15.03 10.75 16 10.75C16.97 10.75 17.75 9.97 17.75 9C17.75 8.03 16.97 7.25 16 7.25M7 12V13H8V12H7Z";
var mdiPaperclip = "M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z";
var mdiParachute = "M21.2,10.95L12,23L2.78,10.96L2.87,10.88C3.08,10.67 3.33,10.5 3.58,10.36L10.73,19.69L8.58,13L9.24,11.81L12,20.38L14.73,11.8L15.4,13L13.27,19.69L20.41,10.35C20.66,10.5 20.9,10.64 21.1,10.85L21.2,10.95M5,9C6.5,9 7.81,9.86 8.5,11.1C9.17,9.86 10.47,9 12,9C13.5,9 14.8,9.85 15.5,11.09C16.16,9.84 17.47,9 19,9C20.09,9 21.09,9.42 21.81,10.14C20.94,5.5 16.88,2 12,2C7.09,2 3.03,5.5 2.16,10.17C2.89,9.45 3.89,9 5,9Z";
var mdiParachuteOutline = "M21.2,10.95L12,23L2.78,10.96L2.87,10.88C3.08,10.67 3.33,10.5 3.58,10.36L10.73,19.69L8.58,13L9.24,11.81L12,20.38L14.73,11.8L15.4,13L13.27,19.69L20.41,10.35C20.66,10.5 20.9,10.64 21.1,10.85L21.2,10.95M12,4C14.5,4 16.77,5.17 18.25,7.03C17.24,7.15 16.28,7.54 15.47,8.13C14.47,7.41 13.26,7 12,7C10.71,7 9.5,7.41 8.5,8.14C7.68,7.55 6.72,7.17 5.71,7.04C7.19,5.17 9.47,4 12,4M12,2C7.09,2 3.03,5.5 2.16,10.17C2.89,9.45 3.89,9 5,9C6.5,9 7.81,9.86 8.5,11.1C9.17,9.86 10.47,9 12,9C13.5,9 14.8,9.85 15.5,11.09C16.16,9.84 17.47,9 19,9C20.09,9 21.09,9.42 21.81,10.14C20.94,5.5 16.88,2 12,2Z";
var mdiParking = "M13.2,11H10V7H13.2A2,2 0 0,1 15.2,9A2,2 0 0,1 13.2,11M13,3H6V21H10V15H13A6,6 0 0,0 19,9C19,5.68 16.31,3 13,3Z";
var mdiPartyPopper = "M14.53 1.45L13.45 2.53L15.05 4.13C15.27 4.38 15.38 4.67 15.38 5S15.27 5.64 15.05 5.86L11.5 9.47L12.5 10.55L16.13 6.94C16.66 6.35 16.92 5.7 16.92 5C16.92 4.3 16.66 3.64 16.13 3.05L14.53 1.45M10.55 3.47L9.47 4.55L10.08 5.11C10.3 5.33 10.41 5.63 10.41 6S10.3 6.67 10.08 6.89L9.47 7.45L10.55 8.53L11.11 7.92C11.64 7.33 11.91 6.69 11.91 6C11.91 5.28 11.64 4.63 11.11 4.03L10.55 3.47M21 5.06C20.31 5.06 19.67 5.33 19.08 5.86L13.45 11.5L14.53 12.5L20.11 6.94C20.36 6.69 20.66 6.56 21 6.56S21.64 6.69 21.89 6.94L22.5 7.55L23.53 6.47L22.97 5.86C22.38 5.33 21.72 5.06 21 5.06M7 8L2 22L16 17L7 8M19 11.06C18.3 11.06 17.66 11.33 17.06 11.86L15.47 13.45L16.55 14.53L18.14 12.94C18.39 12.69 18.67 12.56 19 12.56C19.33 12.56 19.63 12.69 19.88 12.94L21.5 14.53L22.55 13.5L20.95 11.86C20.36 11.33 19.7 11.06 19 11.06Z";
var mdiPassport = "M6,2A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2H6M12,5A5,5 0 0,1 17,10A5,5 0 0,1 12,15A5,5 0 0,1 7,10A5,5 0 0,1 12,5M12,6C11.59,6.62 11.25,7.29 11.04,8H12.96C12.75,7.29 12.42,6.62 12,6M10.7,6.22C9.78,6.53 9,7.17 8.54,8H10C10.18,7.38 10.4,6.78 10.7,6.22M13.29,6.22C13.59,6.78 13.82,7.38 14,8H15.46C15,7.17 14.21,6.54 13.29,6.22M8.13,9C8.05,9.32 8,9.65 8,10C8,10.35 8.05,10.68 8.13,11H9.82C9.78,10.67 9.75,10.34 9.75,10C9.75,9.66 9.78,9.33 9.82,9H8.13M10.83,9C10.78,9.32 10.75,9.66 10.75,10C10.75,10.34 10.78,10.67 10.83,11H13.17C13.21,10.67 13.25,10.34 13.25,10C13.25,9.66 13.21,9.32 13.17,9H10.83M14.18,9C14.22,9.33 14.25,9.66 14.25,10C14.25,10.34 14.22,10.67 14.18,11H15.87C15.95,10.68 16,10.35 16,10C16,9.65 15.95,9.32 15.87,9H14.18M8.54,12C9,12.83 9.78,13.46 10.7,13.78C10.4,13.22 10.18,12.63 10,12H8.54M11.04,12C11.25,12.72 11.59,13.38 12,14C12.42,13.38 12.75,12.72 12.96,12H11.04M14,12C13.82,12.63 13.59,13.22 13.29,13.78C14.21,13.46 15,12.83 15.46,12H14M7,17H17V19H7V17Z";
var mdiPassportBiometric = "M4,4A2,2 0 0,0 2,6V11H8.13C8.59,9.24 10.18,8 12,8C13.82,8 15.41,9.24 15.87,11H22V6A2,2 0 0,0 20,4H4M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M2,13V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V13H15.87C15.41,14.76 13.82,16 12,16C10.18,16 8.59,14.76 8.13,13H2Z";
var mdiPasta = "M4 16.5V8H3V7H4V6H3V5H4V4H3V3H9C9.5 3.03 9.95 3.24 10.34 3.63S10.95 4.5 11 5H21V6H11C10.95 6.53 10.73 7 10.34 7.43S9.5 8.05 9 8H7V15.05C7.05 15.05 7.13 15.04 7.24 15S7.44 15 7.5 15C8.06 15 8.7 15.14 9.42 15.42C9.83 14.5 10.53 13.68 11.53 13S13.53 12 14.53 12C16.06 12 17.36 12.53 18.42 13.59S20 15.95 20 17.5C20 17.55 20 17.64 20 17.77S19.97 17.97 19.97 18H3.14C3.27 17.5 3.55 17 4 16.5M6 15.23V8H5V15.7C5.5 15.45 5.81 15.3 6 15.23M9 7V6H7V7H9M9 4H7V5H9V4M5 4V5H6V4H5M5 6V7H6V6H5M2 19H22L20 21H4L2 19Z";
var mdiPatioHeater = "M15 22H9V21H15V22M19 4L15 2H9L5 4H19M8 5L8.4 6H15.6L16 5H8M10 10H11V15C10.4 15 10 15.4 10 16V20H14V16C14 15.4 13.6 15 13 15V10H14L14.4 9H9.6L10 10M9.2 8H14.8L15.2 7H8.8L9.2 8Z";
var mdiPatreon = "M14.82 2.41C18.78 2.41 22 5.65 22 9.62C22 13.58 18.78 16.8 14.82 16.8C10.85 16.8 7.61 13.58 7.61 9.62C7.61 5.65 10.85 2.41 14.82 2.41M2 21.6H5.5V2.41H2V21.6Z";
var mdiPause = "M14,19H18V5H14M6,19H10V5H6V19Z";
var mdiPauseCircle = "M15,16H13V8H15M11,16H9V8H11M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiPauseCircleOutline = "M13,16V8H15V16H13M9,16V8H11V16H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiPauseOctagon = "M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M15,16V8H13V16H15M11,16V8H9V16H11Z";
var mdiPauseOctagonOutline = "M15,16H13V8H15V16M11,16H9V8H11V16M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M14.9,5H9.1L5,9.1V14.9L9.1,19H14.9L19,14.9V9.1L14.9,5Z";
var mdiPaw = "M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.5,7.67 10.85,9.25 9.67,9.43C8.5,9.61 7.24,8.32 6.87,6.54C6.5,4.77 7.17,3.19 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6M19.33,18.38C19.37,19.32 18.65,20.36 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.88,13.09 9.88,10.44 11.89,10.44C13.89,10.44 14.95,13.05 16.3,14.5C17.41,15.72 19.26,16.75 19.33,18.38Z";
var mdiPawOff = "M2,4.27L3.28,3L21.5,21.22L20.23,22.5L18.23,20.5C18.09,20.6 17.94,20.68 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.21,13.77 8.84,12.69 9.55,11.82L2,4.27M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.32,6.75 11.26,7.56 11,8.19L7.03,4.2C7.29,3.55 7.75,3.1 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6Z";
var mdiPawOffOutline = "M22.83 8.25C22.56 7.5 22.05 6.96 21.39 6.68C20.22 6.18 18.8 6.6 17.7 7.66C17.81 7.37 17.91 7.06 18 6.73C18.25 5.38 18 4.03 17.38 3.12C16.95 2.5 16.33 2.11 15.64 2C14.1 1.78 12.57 3.08 11.93 5C11.28 3.05 9.74 1.76 8.19 2C7.5 2.12 6.88 2.53 6.45 3.16C6.44 3.18 6.43 3.2 6.42 3.22L7.91 4.71C7.96 4.54 8 4.4 8.1 4.29C8.22 4.12 8.36 4 8.5 4C9 3.91 9.88 4.69 10.16 6.1C10.23 6.44 10.24 6.75 10.22 7L11.88 8.68C11.89 8.65 11.91 8.62 11.93 8.58C11.97 8.69 12.04 8.78 12.09 8.89L13.43 10.23C13.63 10.32 13.83 10.39 14.04 10.42C14.16 10.44 14.29 10.45 14.41 10.45C15.13 10.45 15.83 10.12 16.43 9.57C16 10.64 15.96 11.73 16.29 12.63C16.56 13.35 17.07 13.91 17.73 14.2C18.07 14.34 18.43 14.41 18.8 14.41C20.18 14.41 21.66 13.4 22.5 11.77C23.08 10.58 23.21 9.3 22.83 8.25M16 6.33C15.72 7.73 14.83 8.5 14.34 8.44C14.28 8.43 14.12 8.41 13.94 8.15C13.69 7.79 13.5 7.07 13.7 6.1C13.97 4.76 14.8 4 15.29 4C15.31 4 15.34 4 15.36 4C15.5 4 15.63 4.11 15.75 4.27C16.07 4.73 16.18 5.54 16 6.33M20.7 10.87C20.12 12 19.08 12.6 18.53 12.36C18.47 12.34 18.28 12.26 18.16 11.93C18 11.43 18.07 10.68 18.39 10C18.9 9.04 19.74 8.47 20.33 8.47C20.43 8.47 20.5 8.5 20.6 8.5H20.6C20.75 8.58 20.87 8.72 20.95 8.94C21.09 9.34 21.1 10.06 20.7 10.87M1.11 3L4.8 6.69C4.06 6.41 3.29 6.39 2.6 6.68C1.94 6.97 1.43 7.53 1.17 8.27C.793 9.31 .919 10.58 1.5 11.77C2.34 13.4 3.82 14.41 5.21 14.41C5.57 14.41 5.93 14.34 6.27 14.2C6.93 13.91 7.44 13.35 7.71 12.63C8 11.79 8 10.77 7.64 9.76C7.83 9.91 8.04 10.03 8.24 10.13L9.73 11.62C8.94 12.5 8.27 13.7 7.47 14.5C6.41 15.59 4.62 16.39 4.44 17.88C4.31 18.96 5 20.26 6 20.75C6.35 20.93 6.72 21 7.1 21C8.61 21 10.3 19.87 11.89 19.87C13.5 19.87 15.18 20.97 16.71 20.97C17.08 20.97 17.44 20.91 17.79 20.75C18 20.65 18.23 20.5 18.43 20.32L20.84 22.73L22.11 21.46L2.39 1.73L1.11 3M11.15 13.04L17 18.9C17 18.91 16.97 18.92 16.96 18.93C16.92 18.95 16.85 18.97 16.71 18.97C16.28 18.97 15.63 18.75 15 18.54C14.08 18.23 13.03 17.87 11.89 17.87C10.75 17.87 9.7 18.24 8.78 18.56C8.15 18.77 7.5 19 7.1 19C6.97 19 6.92 19 6.88 18.95C6.66 18.84 6.4 18.37 6.43 18.12C6.5 17.89 7.23 17.31 7.59 17C8.03 16.68 8.5 16.33 8.89 15.91C9.44 15.36 9.89 14.73 10.33 14.12C10.55 13.8 10.86 13.38 11.15 13.04M5.6 10C5.93 10.68 6 11.43 5.84 11.93C5.71 12.26 5.53 12.34 5.47 12.36C4.92 12.6 3.88 12 3.3 10.87C2.9 10.06 2.91 9.35 3.05 8.94C3.13 8.73 3.25 8.58 3.4 8.5C3.5 8.5 3.57 8.46 3.68 8.46C4.26 8.46 5.1 9.03 5.6 10Z";
var mdiPawOutline = "M22.83 8.25C22.56 7.5 22.05 6.96 21.4 6.68C20.23 6.18 18.81 6.6 17.7 7.66C17.81 7.37 17.91 7.06 18 6.73C18.25 5.38 18.03 4.03 17.38 3.12C16.95 2.5 16.33 2.11 15.64 2C14.1 1.78 12.57 3.08 11.93 5C11.29 3.05 9.74 1.76 8.19 2C7.5 2.12 6.88 2.53 6.45 3.16C5.81 4.09 5.61 5.39 5.89 6.74C5.94 7 6 7.24 6.09 7.47C5 6.56 3.7 6.2 2.6 6.68C1.94 6.97 1.44 7.53 1.17 8.27C.794 9.31 .92 10.58 1.5 11.77C2.34 13.4 3.82 14.41 5.21 14.41C5.57 14.41 5.93 14.34 6.27 14.2C6.93 13.91 7.44 13.35 7.71 12.63C8.03 11.79 8 10.77 7.64 9.76C8.19 10.19 8.81 10.45 9.45 10.45C9.57 10.45 9.7 10.44 9.82 10.42C10.5 10.32 11.12 9.92 11.55 9.3C11.7 9.08 11.83 8.84 11.93 8.58C12.03 8.84 12.15 9.08 12.3 9.29C12.73 9.91 13.35 10.31 14.04 10.42C14.16 10.44 14.29 10.45 14.41 10.45C15.13 10.45 15.83 10.12 16.43 9.57C16 10.64 15.96 11.73 16.29 12.63C16.56 13.36 17.07 13.91 17.73 14.2C18.07 14.34 18.43 14.41 18.8 14.41C20.18 14.41 21.66 13.4 22.5 11.77C23.08 10.58 23.21 9.3 22.83 8.25M5.84 11.93C5.72 12.26 5.53 12.34 5.47 12.36C4.92 12.6 3.88 12 3.3 10.87C2.9 10.06 2.91 9.35 3.05 8.94C3.13 8.73 3.25 8.58 3.4 8.5C3.5 8.5 3.58 8.46 3.68 8.46C4.26 8.46 5.1 9.03 5.6 10C5.93 10.68 6.03 11.43 5.84 11.93M9.91 8.16C9.79 8.32 9.66 8.42 9.5 8.44C9 8.5 8.14 7.73 7.85 6.34C7.65 5.38 7.85 4.66 8.1 4.29C8.22 4.12 8.36 4 8.5 4C9 3.91 9.88 4.69 10.16 6.1C10.36 7.07 10.16 7.8 9.91 8.16M16 6.33C15.72 7.73 14.83 8.5 14.34 8.44C14.28 8.43 14.12 8.41 13.94 8.15C13.69 7.79 13.5 7.07 13.7 6.1C13.97 4.76 14.8 4 15.29 4C15.32 4 15.34 4 15.36 4C15.5 4 15.63 4.11 15.75 4.27C16.07 4.73 16.18 5.54 16 6.33M20.7 10.87C20.12 12 19.08 12.6 18.53 12.36C18.47 12.34 18.28 12.26 18.16 11.93C18 11.43 18.07 10.68 18.39 10C18.9 9.04 19.75 8.47 20.33 8.47C20.43 8.47 20.5 8.5 20.6 8.5H20.61C20.76 8.58 20.87 8.72 20.95 8.94C21.1 9.34 21.11 10.06 20.7 10.87M16.3 14.5C14.95 13.05 13.89 10.44 11.89 10.44C9.88 10.44 8.88 13.09 7.47 14.5C6.41 15.59 4.62 16.39 4.44 17.88C4.31 18.96 5 20.26 6 20.75C6.35 20.93 6.72 21 7.1 21C8.61 21 10.3 19.87 11.89 19.87C13.5 19.87 15.18 20.97 16.71 20.97C17.08 20.97 17.44 20.91 17.79 20.75C18.65 20.36 19.37 19.32 19.33 18.38C19.26 16.75 17.41 15.72 16.3 14.5M16.96 18.93C16.92 18.95 16.85 18.97 16.71 18.97C16.29 18.97 15.63 18.75 15 18.54C14.08 18.23 13.03 17.87 11.89 17.87C10.75 17.87 9.7 18.24 8.78 18.56C8.15 18.77 7.5 19 7.1 19C6.97 19 6.92 19 6.88 18.95C6.66 18.84 6.4 18.37 6.43 18.12C6.5 17.89 7.23 17.31 7.59 17C8.03 16.68 8.5 16.33 8.89 15.91C9.44 15.36 9.89 14.73 10.33 14.12C10.78 13.5 11.53 12.44 11.89 12.44C12.29 12.44 13.08 13.56 13.56 14.22C13.95 14.78 14.36 15.35 14.82 15.85C15.21 16.27 15.62 16.64 16 17C16.54 17.45 17.32 18.14 17.33 18.44C17.32 18.58 17.12 18.86 16.96 18.93Z";
var mdiPdfBox = "M12,10.5H13V13.5H12V10.5M7,11.5H8V10.5H7V11.5M20,6V18A2,2 0 0,1 18,20H6A2,2 0 0,1 4,18V6A2,2 0 0,1 6,4H18A2,2 0 0,1 20,6M9.5,10.5A1.5,1.5 0 0,0 8,9H5.5V15H7V13H8A1.5,1.5 0 0,0 9.5,11.5V10.5M14.5,10.5A1.5,1.5 0 0,0 13,9H10.5V15H13A1.5,1.5 0 0,0 14.5,13.5V10.5M18.5,9H15.5V15H17V13H18.5V11.5H17V10.5H18.5V9Z";
var mdiPeace = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,14.41V19.93C9.58,19.75 8.23,19.19 7.1,18.31L11,14.41M13,14.41L16.9,18.31C15.77,19.19 14.42,19.75 13,19.93V14.41M4,12C4,7.97 7,4.57 11,4.07V11.59L5.69,16.9C4.59,15.5 4,13.78 4,12M18.31,16.9L13,11.59V4.07C17,4.57 20,7.97 20,12C20,13.78 19.41,15.5 18.31,16.9Z";
var mdiPeanut = "M16 12.77A2 2 0 0 1 15.86 10.12A5 5 0 0 0 13.04 2.12A5.74 5.74 0 0 0 12 2A5 5 0 0 0 7 7A5 5 0 0 0 8.11 10.12A2 2 0 0 1 8 12.72A5.5 5.5 0 0 0 10.81 21.87A5.42 5.42 0 0 0 12 22A5.5 5.5 0 0 0 16 12.77M13 5A1 1 0 1 1 12 6A1 1 0 0 1 13 5M11 18A1 1 0 1 1 12 17A1 1 0 0 1 11 18M12 15A1 1 0 1 1 13 16A1 1 0 0 1 12 15M14 19A1 1 0 1 1 15 18A1 1 0 0 1 14 19Z";
var mdiPeanutOff = "M15.9 10.12A5 5 0 0 0 13.08 2.12A5.74 5.74 0 0 0 12 2A5 5 0 0 0 7.68 4.5L16.38 13.18A4.35 4.35 0 0 0 16.04 12.77A2 2 0 0 1 15.9 10.12M13 7A1 1 0 1 1 14 6A1 1 0 0 1 13 7M7 6.39L2.39 1.73L1.11 3L7.8 9.69C7.9 9.84 8 10 8.11 10.12A2 2 0 0 1 8 12.72A5.5 5.5 0 0 0 10.81 21.87A5.42 5.42 0 0 0 12 22A5.5 5.5 0 0 0 17 18.86L20.87 22.73L22.14 21.46M11 18A1 1 0 1 1 12 17A1 1 0 0 1 11 18M14 19A1 1 0 1 1 15 18A1 1 0 0 1 14 19M13 16A1 1 0 0 1 12 15A1 1 0 0 1 12.35 14.24L13.76 15.65A1 1 0 0 1 13 16Z";
var mdiPeanutOffOutline = "M22.11 21.46L20.84 22.73L17.69 19.58C17.36 20.21 16.93 20.77 16.41 21.25C14.86 22.71 12.69 23.31 10.61 22.85C7.1 22.1 4.87 18.64 5.62 15.13C5.87 13.95 6.45 12.87 7.28 12C7.62 11.64 7.62 11.08 7.28 10.72C6.63 9.91 6.21 8.95 6.04 7.93L1.11 3L2.39 1.73L22.11 21.46M15.3 19.56C15.69 19.13 16 18.63 16.19 18.08L13.75 15.64C13.57 15.87 13.29 16 13 16C12.45 16 12 15.55 12 15C12 14.71 12.13 14.43 12.36 14.25L9.55 11.44C9.53 12.18 9.24 12.88 8.73 13.41C7.03 15.22 7.13 18.07 8.94 19.77L8.95 19.78C10.76 21.47 13.61 21.37 15.3 19.56M14 17C12.71 17 12.72 19 14 19C15.28 19 15.29 17 14 17M6.9 3.7L8.43 5.23C8.68 4.71 9.05 4.25 9.5 3.89C10.2 3.31 11.09 3 12 3H12.88C13.47 3.14 14 3.41 14.5 3.79C16.22 5.17 16.5 7.69 15.12 9.41C14.7 9.93 14.46 10.58 14.45 11.25L18.32 15.12C18.07 13.97 17.5 12.92 16.72 12.06C16.37 11.7 16.33 11.13 16.62 10.72C16.62 10.72 18 9 18 7S15.97.997 12 .997 6.9 3.7 6.9 3.7M12 17C12 15.71 10 15.72 10 17C10 18.28 12 18.29 12 17M13 5C11.71 5 11.72 7 13 7C14.28 7 14.29 5 13 5Z";
var mdiPeanutOutline = "M12 23C11.53 23 11.07 22.95 10.61 22.85C7.1 22.1 4.87 18.64 5.62 15.13C5.87 13.95 6.45 12.87 7.28 12C7.62 11.64 7.62 11.08 7.28 10.72C5.2 8.14 5.6 4.36 8.18 2.28S14.54.607 16.62 3.19C18.39 5.38 18.39 8.5 16.62 10.72C16.33 11.13 16.37 11.7 16.72 12.06C19.17 14.68 19.04 18.8 16.41 21.25C15.22 22.37 13.64 23 12 23M12 3C11.09 3 10.2 3.31 9.5 3.89C8.55 4.65 8 5.79 8 7C8 7.91 8.31 8.79 8.88 9.5C9.84 10.64 9.77 12.33 8.73 13.41C7.03 15.22 7.13 18.07 8.94 19.77S13.6 21.38 15.3 19.56C16.92 17.83 16.92 15.14 15.3 13.41C14.23 12.32 14.15 10.6 15.12 9.41C16.5 7.69 16.22 5.17 14.5 3.79C14 3.41 13.47 3.14 12.88 3C12.59 3 12.29 3 12 3M12 6C12 6.55 12.45 7 13 7S14 6.55 14 6 13.55 5 13 5 12 5.45 12 6M14 19C14.55 19 15 18.55 15 18S14.55 17 14 17 13 17.45 13 18 13.45 19 14 19M13 16C13.55 16 14 15.55 14 15S13.55 14 13 14 12 14.45 12 15 12.45 16 13 16M11 18C11.55 18 12 17.55 12 17S11.55 16 11 16 10 16.45 10 17 10.45 18 11 18Z";
var mdiPen = "M20.71,7.04C20.37,7.38 20.04,7.71 20.03,8.04C20,8.36 20.34,8.69 20.66,9C21.14,9.5 21.61,9.95 21.59,10.44C21.57,10.93 21.06,11.44 20.55,11.94L16.42,16.08L15,14.66L19.25,10.42L18.29,9.46L16.87,10.87L13.12,7.12L16.96,3.29C17.35,2.9 18,2.9 18.37,3.29L20.71,5.63C21.1,6 21.1,6.65 20.71,7.04M3,17.25L12.56,7.68L16.31,11.43L6.75,21H3V17.25Z";
var mdiPenLock = "M21.7,7C21.4,7.4 21,7.7 21,8C21,8.3 21.3,8.6 21.6,9C22.1,9.5 22.6,9.9 22.5,10.4C22.5,10.9 22,11.4 21.5,11.9L17.4,16L16,14.7L20.2,10.5L19.2,9.5L17.8,10.9L14,7.1L18,3.3C18.4,2.9 19,2.9 19.4,3.3L21.7,5.6C22.1,6 22.1,6.7 21.7,7M4,17.2L13.6,7.6L17.3,11.4L7.8,21H4V17.2M8,5V4.5C8,3.1 6.9,2 5.5,2C4.1,2 3,3.1 3,4.5V5C2.4,5 2,5.4 2,6V10C2,10.6 2.4,11 3,11H8C8.6,11 9,10.6 9,10V6C9,5.4 8.6,5 8,5M7,5H4V4.5C4,3.7 4.7,3 5.5,3C6.3,3 7,3.7 7,4.5V5Z";
var mdiPenMinus = "M20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.6 20.6,9C21.1,9.5 21.6,9.9 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.8,10.9L13,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.7 20.7,7M3,17.2L12.6,7.6L16.3,11.4L6.8,21H3V17.2M10,5V7H2V5H10Z";
var mdiPenOff = "M2.3,5L1,6.3L7.5,12.8L3,17.2V21H6.8L11.3,16.5L17.8,23L19.1,21.7L2.3,5M16.9,10.9L13.1,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.6 20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.7 20.6,9C21.1,9.5 21.6,10 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.9,10.9M10,10.2L12.5,7.7L16.3,11.5L13.8,14L10,10.2Z";
var mdiPenPlus = "M20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.6 20.6,9C21.1,9.5 21.6,9.9 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.8,10.9L13,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.7 20.7,7M3,17.2L12.6,7.6L16.3,11.4L6.8,21H3V17.2M7,2V5H10V7H7V10H5V7H2V5H5V2H7Z";
var mdiPenRemove = "M20.7,7C20.4,7.4 20,7.7 20,8C20,8.3 20.3,8.6 20.6,9C21.1,9.5 21.6,9.9 21.5,10.4C21.5,10.9 21,11.4 20.5,11.9L16.4,16L15,14.7L19.2,10.5L18.2,9.5L16.8,10.9L13,7.1L17,3.3C17.4,2.9 18,2.9 18.4,3.3L20.7,5.6C21.1,6 21.1,6.7 20.7,7M3,17.2L12.6,7.6L16.3,11.4L6.8,21H3V17.2M3.88,2.46L6,4.59L8.12,2.46L9.54,3.88L7.41,6L9.54,8.12L8.12,9.54L6,7.41L3.88,9.54L2.46,8.12L4.59,6L2.46,3.88L3.88,2.46Z";
var mdiPencil = "M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z";
var mdiPencilBox = "M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35C16.92,9.14 16.92,8.79 16.7,8.58L15.42,7.3C15.21,7.08 14.86,7.08 14.65,7.3L13.65,8.3L15.7,10.35L16.7,9.35M7,14.94V17H9.06L15.12,10.94L13.06,8.88L7,14.94Z";
var mdiPencilBoxMultiple = "M20.22 2H7.78C6.8 2 6 2.8 6 3.78V16.22C6 17.2 6.8 18 7.78 18H20.22C21.2 18 22 17.21 22 16.22V3.78C22 2.8 21.2 2 20.22 2M11.06 15H9V12.94L15.06 6.88L17.12 8.94L11.06 15M18.7 7.35L17.7 8.35L15.65 6.3L16.65 5.3C16.86 5.08 17.21 5.08 17.42 5.3L18.7 6.58C18.92 6.79 18.92 7.14 18.7 7.35M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z";
var mdiPencilBoxMultipleOutline = "M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6M18.7 7.35L17.7 8.35L15.65 6.3L16.65 5.3C16.86 5.08 17.21 5.08 17.42 5.3L18.7 6.58C18.92 6.79 18.92 7.14 18.7 7.35M9 12.94L15.06 6.88L17.12 8.94L11.06 15H9V12.94M20 4L20 4L20 16L8 16L8 4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.1 6.9 18 8 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2Z";
var mdiPencilBoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35L15.7,10.35L13.65,8.3L14.65,7.3C14.86,7.08 15.21,7.08 15.42,7.3L16.7,8.58C16.92,8.79 16.92,9.14 16.7,9.35M7,14.94L13.06,8.88L15.12,10.94L9.06,17H7V14.94Z";
var mdiPencilCircle = "M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M15.1,7.07C15.24,7.07 15.38,7.12 15.5,7.23L16.77,8.5C17,8.72 17,9.07 16.77,9.28L15.77,10.28L13.72,8.23L14.72,7.23C14.82,7.12 14.96,7.07 15.1,7.07M13.13,8.81L15.19,10.87L9.13,16.93H7.07V14.87L13.13,8.81Z";
var mdiPencilCircleOutline = "M7,14.94L13.06,8.88L15.12,10.94L9.06,17H7V14.94M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M16.7,9.35L15.7,10.35L13.65,8.3L14.65,7.3C14.86,7.08 15.21,7.08 15.42,7.3L16.7,8.58C16.92,8.79 16.92,9.14 16.7,9.35M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2";
var mdiPencilLock = "M5.5,2A2.5,2.5 0 0,0 3,4.5V5A1,1 0 0,0 2,6V10A1,1 0 0,0 3,11H8A1,1 0 0,0 9,10V6A1,1 0 0,0 8,5V4.5A2.5,2.5 0 0,0 5.5,2M5.5,3A1.5,1.5 0 0,1 7,4.5V5H4V4.5A1.5,1.5 0 0,1 5.5,3M19.66,3C19.4,3 19.16,3.09 18.97,3.28L17.13,5.13L20.88,8.88L22.72,7.03C23.11,6.64 23.11,6 22.72,5.63L20.38,3.28C20.18,3.09 19.91,3 19.66,3M16.06,6.19L5,17.25V21H8.75L19.81,9.94L16.06,6.19Z";
var mdiPencilLockOutline = "M16.1,9L17,9.9L7.9,19H7V18.1L16.1,9M19.7,3C19.5,3 19.2,3.1 19,3.3L17.2,5.1L20.9,8.9L22.7,7C23.1,6.6 23.1,6 22.7,5.6L20.4,3.3C20.2,3.1 19.9,3 19.7,3M16.1,6.2L5,17.2V21H8.8L19.8,9.9L16.1,6.2M8,5V4.5C8,3.1 6.9,2 5.5,2C4.1,2 3,3.1 3,4.5V5C2.4,5 2,5.4 2,6V10C2,10.6 2.4,11 3,11H8C8.6,11 9,10.6 9,10V6C9,5.4 8.6,5 8,5M7,5H4V4.5C4,3.7 4.7,3 5.5,3C6.3,3 7,3.7 7,4.5V5Z";
var mdiPencilMinus = "M20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18,2.9 17.4,2.9 17,3.3L15.2,5.1L19,8.9M3,17.2V21H6.8L17.8,9.9L14.1,6.1L3,17.2M10,5V7H2V5H10Z";
var mdiPencilMinusOutline = "M14.1,9L15,9.9L5.9,19H5V18.1L14.1,9M17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L18.9,8.9L20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3M14.1,6.2L3,17.2V21H6.8L17.8,9.9L14.1,6.2M10,5V7H2V5H10Z";
var mdiPencilOff = "M18.66,2C18.4,2 18.16,2.09 17.97,2.28L16.13,4.13L19.88,7.88L21.72,6.03C22.11,5.64 22.11,5 21.72,4.63L19.38,2.28C19.18,2.09 18.91,2 18.66,2M3.28,4L2,5.28L8.5,11.75L4,16.25V20H7.75L12.25,15.5L18.72,22L20,20.72L13.5,14.25L9.75,10.5L3.28,4M15.06,5.19L11.03,9.22L14.78,12.97L18.81,8.94L15.06,5.19Z";
var mdiPencilOffOutline = "M10,10.2L14,6.2L17.8,10L13.8,14L12.4,12.6L15,9.9L14.1,9L11.5,11.6L10,10.2M20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L19,8.9L20.7,7C21.1,6.7 21.1,6 20.7,5.6M19,21.7L17.7,23L11.2,16.5L6.8,21H3V17.2L7.5,12.7L1,6.3L2.3,5L19,21.7M9.8,15.1L8.9,14.2L5,18.1V19H5.9L9.8,15.1Z";
var mdiPencilOutline = "M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z";
var mdiPencilPlus = "M20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18,2.9 17.4,2.9 17,3.3L15.2,5.1L19,8.9M3,17.2V21H6.8L17.8,9.9L14.1,6.1L3,17.2M7,2V5H10V7H7V10H5V7H2V5H5V2H7Z";
var mdiPencilPlusOutline = "M14.1,9L15,9.9L5.9,19H5V18.1L14.1,9M17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L18.9,8.9L20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3M14.1,6.2L3,17.2V21H6.8L17.8,9.9L14.1,6.2M7,2V5H10V7H7V10H5V7H2V5H5V2H7Z";
var mdiPencilRemove = "M20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18,2.9 17.4,2.9 17,3.3L15.2,5.1L19,8.9M3,17.2V21H6.8L17.8,9.9L14.1,6.1L3,17.2M3.9,2.4L6,4.5L8.1,2.4L9.5,3.8L7.4,5.9L9.5,8L8.1,9.5L6,7.4L3.9,9.5L2.5,8.1L4.6,6L2.5,3.8L3.9,2.4Z";
var mdiPencilRemoveOutline = "M17.7,3C17.5,3 17.2,3.1 17,3.3L15.2,5.1L18.9,8.9L20.7,7C21.1,6.6 21.1,6 20.7,5.6L18.4,3.3C18.2,3.1 17.9,3 17.7,3M14.1,6.2L3,17.2V21H6.8L17.8,9.9L14.1,6.2M5.9,19H5V18.1L14.1,9L15,9.9L5.9,19M3.9,2.5L6,4.6L8.1,2.5L9.5,3.9L7.4,6L9.5,8.1L8.1,9.5L6,7.4L3.9,9.5L2.5,8.1L4.6,6L2.5,3.9L3.9,2.5Z";
var mdiPencilRuler = "M3 17.25V21H6.75L17.81 9.93L14.06 6.18L3 17.25M22.61 18.36L18.36 22.61L13.16 17.41L14.93 15.64L15.93 16.64L18.4 14.16L19.82 15.58L18.36 17L19.42 18L20.84 16.6L22.61 18.36M6.61 10.83L1.39 5.64L5.64 1.39L7.4 3.16L4.93 5.64L6 6.7L8.46 4.22L9.88 5.64L8.46 7.05L9.46 8.05L6.61 10.83M20.71 7C21.1 6.61 21.1 6 20.71 5.59L18.37 3.29C18 2.9 17.35 2.9 16.96 3.29L15.12 5.12L18.87 8.87L20.71 7Z";
var mdiPenguin = "M19,16C19,17.72 18.37,19.3 17.34,20.5C17.75,20.89 18,21.41 18,22H6C6,21.41 6.25,20.89 6.66,20.5C5.63,19.3 5,17.72 5,16H3C3,14.75 3.57,13.64 4.46,12.91L4.47,12.89C6,11.81 7,10 7,8V7A5,5 0 0,1 12,2A5,5 0 0,1 17,7V8C17,10 18,11.81 19.53,12.89L19.54,12.91C20.43,13.64 21,14.75 21,16H19M16,16A4,4 0 0,0 12,12A4,4 0 0,0 8,16A4,4 0 0,0 12,20A4,4 0 0,0 16,16M10,9L12,10.5L14,9L12,7.5L10,9M10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5M14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5Z";
var mdiPentagon = "M12,2.5L2,9.8L5.8,21.5H18.2L22,9.8L12,2.5Z";
var mdiPentagonOutline = "M12,5L19.6,10.5L16.7,19.4H7.3L4.4,10.5L12,5M12,2.5L2,9.8L5.8,21.5H18.1L22,9.8L12,2.5Z";
var mdiPentagram = "M16.15 14.4L18.71 22.26L12 17.4L5.28 22.3L7.85 14.37L1.15 9.5H9.44L12 1.61L14.56 9.5H22.89L16.15 14.4M13.3 16.47L15.86 18.33L14.88 15.32L13.3 16.47M11 9.5H13L12 6.47L11 9.5M10.74 16.47L9.13 15.3L8.13 18.37L10.74 16.47M18.28 11H15.05L15.67 12.9L18.28 11M10.53 11L9.62 13.8L12 15.54L14.39 13.82L13.47 11H10.53M5.76 11L8.34 12.87L8.95 11H5.76Z";
var mdiPercent = "M18.5,3.5L3.5,18.5L5.5,20.5L20.5,5.5M7,4A3,3 0 0,0 4,7A3,3 0 0,0 7,10A3,3 0 0,0 10,7A3,3 0 0,0 7,4M17,14A3,3 0 0,0 14,17A3,3 0 0,0 17,20A3,3 0 0,0 20,17A3,3 0 0,0 17,14Z";
var mdiPercentOutline = "M18.5 3.5L20.5 5.5L5.5 20.5L3.5 18.5L18.5 3.5M7 4C8.66 4 10 5.34 10 7C10 8.66 8.66 10 7 10C5.34 10 4 8.66 4 7C4 5.34 5.34 4 7 4M17 14C18.66 14 20 15.34 20 17C20 18.66 18.66 20 17 20C15.34 20 14 18.66 14 17C14 15.34 15.34 14 17 14M7 6C6.45 6 6 6.45 6 7C6 7.55 6.45 8 7 8C7.55 8 8 7.55 8 7C8 6.45 7.55 6 7 6M17 16C16.45 16 16 16.45 16 17C16 17.55 16.45 18 17 18C17.55 18 18 17.55 18 17C18 16.45 17.55 16 17 16Z";
var mdiPeriodicTable = "M2,4V6H4V4H2M20,4V6H22V4H20M2,7V9H4V7H2M5,7V9H7V7H5M14,7V9H16V7H14M17,7V9H19V7H17M20,7V9H22V7H20M2,10V12H4V10H2M5,10V12H7V10H5M8,10V12H10V10H8M11,10V12H13V10H11M14,10V12H16V10H14M17,10V12H19V10H17M20,10V12H22V10H20M2,13V15H4V13H2M5,13V15H7V13H5M8,13V15H10V13H8M11,13V15H13V13H11M14,13V15H16V13H14M17,13V15H19V13H17M20,13V15H22V13H20M5,17V19H7V17H5M8,17V19H10V17H8M11,17V19H13V17H11M14,17V19H16V17H14M17,17V19H19V17H17Z";
var mdiPerspectiveLess = "M16.56,12L19.23,20H4.78L7.44,12H16.56M7,1L3,5L7,9V6H11V4H7V1M17,1V4H13V6H17V9L21,5L17,1M18,10H6L2,22H22L18,10Z";
var mdiPerspectiveMore = "M16.56,12L19.23,20H4.78L7.44,12H16.56M17,1L13,5L17,9V6H21V4H17V1M7,1V4H3V6H7V9L11,5L7,1M18,10H6L2,22H22L18,10Z";
var mdiPharmacy = "M16,14H13V17H11V14H8V12H11V9H13V12H16M21,5H18.35L19.5,1.85L17.15,1L15.69,5H3V7L5,13L3,19V21H21V19L19,13L21,7V5Z";
var mdiPhone = "M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z";
var mdiPhoneAlert = "M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4C3,3.44 3.45,3 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.24 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.58L6.62,10.79M17,12V10H19V12H17M17,8V2H19V8H17Z";
var mdiPhoneAlertOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M17 12V10H19V12H17M17 8V2H19V8H17Z";
var mdiPhoneBluetooth = "M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,7.21L18.94,8.14L18,9.08M18,2.91L18.94,3.85L18,4.79M14.71,9.5L17,7.21V11H17.5L20.35,8.14L18.21,6L20.35,3.85L17.5,1H17V4.79L14.71,2.5L14,3.21L16.79,6L14,8.79L14.71,9.5Z";
var mdiPhoneBluetoothOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M18 7.21L18.94 8.14L18 9.08M18 2.91L18.94 3.85L18 4.79M14.71 9.5L17 7.21V11H17.5L20.35 8.14L18.21 6L20.35 3.85L17.5 1H17V4.79L14.71 2.5L14 3.21L16.79 6L14 8.79L14.71 9.5Z";
var mdiPhoneCancel = "M6.62 10.79C8.06 13.62 10.38 15.94 13.21 17.38L15.41 15.18C15.69 14.9 16.08 14.82 16.43 14.93C17.55 15.3 18.75 15.5 20 15.5C20.55 15.5 21 15.95 21 16.5V20C21 20.55 20.55 21 20 21C10.61 21 3 13.39 3 4C3 3.45 3.45 3 4 3H7.5C8.05 3 8.5 3.45 8.5 4C8.5 5.25 8.7 6.45 9.07 7.57C9.18 7.92 9.1 8.31 8.82 8.59L6.62 10.79M16.5 2C14 2 12 4 12 6.5S14 11 16.5 11 21 9 21 6.5 19 2 16.5 2M16.5 9.5C14.84 9.5 13.5 8.16 13.5 6.5C13.5 5.94 13.65 5.42 13.92 5L18 9.08C17.58 9.35 17.06 9.5 16.5 9.5M19.08 8L15 3.92C15.42 3.65 15.94 3.5 16.5 3.5C18.16 3.5 19.5 4.84 19.5 6.5C19.5 7.06 19.35 7.58 19.08 8Z";
var mdiPhoneCancelOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M16.5 2C14 2 12 4 12 6.5S14 11 16.5 11 21 9 21 6.5 19 2 16.5 2M16.5 9.5C14.84 9.5 13.5 8.16 13.5 6.5C13.5 5.94 13.65 5.42 13.92 5L18 9.08C17.58 9.35 17.06 9.5 16.5 9.5M19.08 8L15 3.92C15.42 3.65 15.94 3.5 16.5 3.5C18.16 3.5 19.5 4.84 19.5 6.5C19.5 7.06 19.35 7.58 19.08 8Z";
var mdiPhoneCheck = "M6.62 10.79A15.1 15.1 0 0 0 13.21 17.38L15.41 15.18A1 1 0 0 1 16.41 14.93A11.36 11.36 0 0 0 20 15.5A1 1 0 0 1 21 16.5V20A1 1 0 0 1 20 21A17 17 0 0 1 3 4A1 1 0 0 1 4 3H7.5A1 1 0 0 1 8.5 4A11.36 11.36 0 0 0 9.07 7.57A1 1 0 0 1 8.82 8.57M21.71 4.71L20.29 3.29L15 8.59L12.71 6.29L11.29 7.71L15 11.41Z";
var mdiPhoneCheckOutline = "M20 15.5A11.36 11.36 0 0 1 16.43 14.93A1 1 0 0 0 15.43 15.18L13.23 17.38A15.1 15.1 0 0 1 6.64 10.79L8.84 8.59A1 1 0 0 0 9.09 7.59A11.36 11.36 0 0 1 8.5 4A1 1 0 0 0 7.5 3H4A1 1 0 0 0 3 4A17 17 0 0 0 20 21A1 1 0 0 0 21 20V16.5A1 1 0 0 0 20 15.5M5 5H6.54A12.54 12.54 0 0 0 7 7.59L5.79 8.8A15 15 0 0 1 5 5M19 19A15 15 0 0 1 15.2 18.24L16.41 17A12.31 12.31 0 0 0 19 17.45M15 11.44L11.29 7.74L12.71 6.32L15 8.59L20.29 3.29L21.71 4.71Z";
var mdiPhoneClassic = "M12,3C7.46,3 3.34,4.78 0.29,7.67C0.11,7.85 0,8.1 0,8.38C0,8.66 0.11,8.91 0.29,9.09L2.77,11.57C2.95,11.75 3.2,11.86 3.5,11.86C3.75,11.86 4,11.75 4.18,11.58C4.97,10.84 5.87,10.22 6.84,9.73C7.17,9.57 7.4,9.23 7.4,8.83V5.73C8.85,5.25 10.39,5 12,5C13.59,5 15.14,5.25 16.59,5.72V8.82C16.59,9.21 16.82,9.56 17.15,9.72C18.13,10.21 19,10.84 19.82,11.57C20,11.75 20.25,11.85 20.5,11.85C20.8,11.85 21.05,11.74 21.23,11.56L23.71,9.08C23.89,8.9 24,8.65 24,8.37C24,8.09 23.88,7.85 23.7,7.67C20.65,4.78 16.53,3 12,3M9,7V10C9,10 3,15 3,18V22H21V18C21,15 15,10 15,10V7H13V9H11V7H9M12,12A4,4 0 0,1 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12M12,13.5A2.5,2.5 0 0,0 9.5,16A2.5,2.5 0 0,0 12,18.5A2.5,2.5 0 0,0 14.5,16A2.5,2.5 0 0,0 12,13.5Z";
var mdiPhoneClassicOff = "M12 3C16.53 3 20.65 4.78 23.7 7.67C23.88 7.85 24 8.09 24 8.37C24 8.65 23.89 8.9 23.71 9.08L21.23 11.56C21.05 11.74 20.8 11.85 20.5 11.85C20.25 11.85 20 11.75 19.82 11.57C19 10.84 18.13 10.21 17.15 9.72C16.82 9.56 16.59 9.21 16.59 8.82V5.72C15.14 5.25 13.59 5 12 5C10.44 5 8.93 5.24 7.5 5.69L5.94 4.11C7.82 3.4 9.86 3 12 3M9 7H11V9H13V7H15V10C15 10 21 15 21 18V19.18L9 7.18V7M1 4.27L2.28 3L21.5 22.22L20.23 23.5L18.73 22H3V18C3 15.86 6.05 12.71 7.8 11.07L6.59 9.86C5.71 10.33 4.9 10.9 4.18 11.58C4 11.75 3.75 11.86 3.5 11.86C3.2 11.86 2.95 11.75 2.77 11.57L.29 9.09C.11 8.91 0 8.66 0 8.38C0 8.1 .11 7.85 .29 7.67C.996 7 2.58 5.85 2.58 5.85L1 4.27M8 16C8 18.21 9.79 20 12 20C13.29 20 14.44 19.39 15.17 18.44L14.1 17.36C13.65 18.05 12.88 18.5 12 18.5C10.62 18.5 9.5 17.38 9.5 16C9.5 15.12 9.95 14.35 10.64 13.91L9.56 12.83C8.61 13.56 8 14.71 8 16Z";
var mdiPhoneDial = "M6.6 10.8C8 13.6 10.4 15.9 13.2 17.4L15.4 15.2C15.7 14.9 16.1 14.8 16.4 15C17.5 15.4 18.7 15.6 20 15.6C20.6 15.6 21 16 21 16.6V20C21 20.6 20.6 21 20 21C10.6 21 3 13.4 3 4C3 3.4 3.5 3 4 3H7.5C8.1 3 8.5 3.4 8.5 4C8.5 5.2 8.7 6.4 9.1 7.6C9.2 7.9 9.1 8.3 8.9 8.6L6.6 10.8M14 3C13.4 3 13 3.4 13 4S13.4 5 14 5 15 4.6 15 4 14.6 3 14 3M17 3C16.4 3 16 3.4 16 4S16.4 5 17 5 18 4.6 18 4 17.6 3 17 3M20 3C19.4 3 19 3.4 19 4S19.4 5 20 5 21 4.6 21 4 20.6 3 20 3M14 6C13.4 6 13 6.4 13 7S13.4 8 14 8 15 7.6 15 7 14.6 6 14 6M17 6C16.4 6 16 6.4 16 7S16.4 8 17 8 18 7.6 18 7 17.6 6 17 6M20 6C19.4 6 19 6.4 19 7S19.4 8 20 8 21 7.6 21 7 20.6 6 20 6M14 9C13.4 9 13 9.4 13 10S13.4 11 14 11 15 10.6 15 10 14.6 9 14 9M17 9C16.4 9 16 9.4 16 10S16.4 11 17 11 18 10.6 18 10 17.6 9 17 9M20 9C19.4 9 19 9.4 19 10S19.4 11 20 11 21 10.6 21 10 20.6 9 20 9Z";
var mdiPhoneDialOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M15 4C15 4.6 14.6 5 14 5S13 4.6 13 4 13.4 3 14 3 15 3.4 15 4M18 4C18 4.6 17.6 5 17 5S16 4.6 16 4 16.4 3 17 3 18 3.4 18 4M21 4C21 4.6 20.6 5 20 5S19 4.6 19 4 19.4 3 20 3 21 3.4 21 4M15 7C15 7.6 14.6 8 14 8S13 7.6 13 7 13.4 6 14 6 15 6.4 15 7M18 7C18 7.6 17.6 8 17 8S16 7.6 16 7 16.4 6 17 6 18 6.4 18 7M21 7C21 7.6 20.6 8 20 8S19 7.6 19 7 19.4 6 20 6 21 6.4 21 7M15 10C15 10.6 14.6 11 14 11S13 10.6 13 10 13.4 9 14 9 15 9.4 15 10M18 10C18 10.6 17.6 11 17 11S16 10.6 16 10 16.4 9 17 9 18 9.4 18 10M21 10C21 10.6 20.6 11 20 11S19 10.6 19 10 19.4 9 20 9 21 9.4 21 10Z";
var mdiPhoneForward = "M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,11L23,6L18,1V4H14V8H18V11Z";
var mdiPhoneForwardOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M18 11L23 6L18 1V4H14V8H18V11Z";
var mdiPhoneHangup = "M12,9C10.4,9 8.85,9.25 7.4,9.72V12.82C7.4,13.22 7.17,13.56 6.84,13.72C5.86,14.21 4.97,14.84 4.17,15.57C4,15.75 3.75,15.86 3.5,15.86C3.2,15.86 2.95,15.74 2.77,15.56L0.29,13.08C0.11,12.9 0,12.65 0,12.38C0,12.1 0.11,11.85 0.29,11.67C3.34,8.77 7.46,7 12,7C16.54,7 20.66,8.77 23.71,11.67C23.89,11.85 24,12.1 24,12.38C24,12.65 23.89,12.9 23.71,13.08L21.23,15.56C21.05,15.74 20.8,15.86 20.5,15.86C20.25,15.86 20,15.75 19.82,15.57C19.03,14.84 18.14,14.21 17.16,13.72C16.83,13.56 16.6,13.22 16.6,12.82V9.72C15.15,9.25 13.6,9 12,9Z";
var mdiPhoneHangupOutline = "M23.71 11.67A17 17 0 0 0 .29 11.67A1 1 0 0 0 0 12.38A1 1 0 0 0 .29 13.08L2.77 15.56A1 1 0 0 0 3.5 15.85A1 1 0 0 0 4.18 15.57A11.5 11.5 0 0 1 6.84 13.72A1 1 0 0 0 7.4 12.82V9.72A14.91 14.91 0 0 1 12 9A14.5 14.5 0 0 1 16.59 9.73V12.83A1 1 0 0 0 17.15 13.73A11.27 11.27 0 0 1 19.82 15.58A1 1 0 0 0 20.5 15.86A1 1 0 0 0 21.23 15.57L23.71 13.09A1 1 0 0 0 23.71 11.67M5.4 12.22A13.68 13.68 0 0 0 3.53 13.5L2.46 12.42A15.54 15.54 0 0 1 5.4 10.5M20.5 13.5A13.75 13.75 0 0 0 18.6 12.23V10.53A14.26 14.26 0 0 1 21.55 12.43Z";
var mdiPhoneInTalk = "M15,12H17A5,5 0 0,0 12,7V9A3,3 0 0,1 15,12M19,12H21C21,7 16.97,3 12,3V5C15.86,5 19,8.13 19,12M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z";
var mdiPhoneInTalkOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M15 12H17A5 5 0 0 0 12 7V9A3 3 0 0 1 15 12M19 12H21C21 7 16.97 3 12 3V5C15.86 5 19 8.13 19 12Z";
var mdiPhoneIncoming = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M19,11V9.5H15.5L21,4L20,3L14.5,8.5V5H13V11H19Z";
var mdiPhoneIncomingOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19 11V9.5H15.5L21 4L20 3L14.5 8.5V5H13V11H19Z";
var mdiPhoneLock = "M19.2,4H15.8V3.5C15.8,2.56 16.56,1.8 17.5,1.8C18.44,1.8 19.2,2.56 19.2,3.5M20,4V3.5A2.5,2.5 0 0,0 17.5,1A2.5,2.5 0 0,0 15,3.5V4A1,1 0 0,0 14,5V9A1,1 0 0,0 15,10H20A1,1 0 0,0 21,9V5A1,1 0 0,0 20,4M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z";
var mdiPhoneLockOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19.2 4H15.8V3.5C15.8 2.56 16.56 1.8 17.5 1.8C18.44 1.8 19.2 2.56 19.2 3.5M20 4V3.5A2.5 2.5 0 0 0 17.5 1A2.5 2.5 0 0 0 15 3.5V4A1 1 0 0 0 14 5V9A1 1 0 0 0 15 10H20A1 1 0 0 0 21 9V5A1 1 0 0 0 20 4Z";
var mdiPhoneLog = "M20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.24 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.58L6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5M12,3H14V5H12M15,3H21V5H15M12,6H14V8H12M15,6H21V8H15M12,9H14V11H12M15,9H21V11H15";
var mdiPhoneLogOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M12 3H14V5H12M15 3H21V5H15M12 6H14V8H12M15 6H21V8H15M12 9H14V11H12M15 9H21V11H15Z";
var mdiPhoneMessage = "M20 15.5C18.75 15.5 17.55 15.3 16.43 14.93C16.08 14.82 15.69 14.9 15.41 15.17L13.21 17.37C10.38 15.93 8.06 13.62 6.62 10.79L8.82 8.58C9.1 8.31 9.18 7.92 9.07 7.57C8.7 6.45 8.5 5.25 8.5 4C8.5 3.45 8.05 3 7.5 3H4C3.45 3 3 3.45 3 4C3 13.39 10.61 21 20 21C20.55 21 21 20.55 21 20V16.5C21 15.95 20.55 15.5 20 15.5M12 3V13L15 10H21V3H12Z";
var mdiPhoneMessageOutline = "M20 15.5C18.75 15.5 17.55 15.3 16.43 14.93C16.33 14.9 16.22 14.88 16.12 14.88C15.86 14.88 15.61 15 15.41 15.17L13.21 17.37C10.38 15.93 8.06 13.62 6.62 10.79L8.82 8.58C9.1 8.31 9.18 7.92 9.07 7.57C8.7 6.45 8.5 5.25 8.5 4C8.5 3.45 8.05 3 7.5 3H4C3.45 3 3 3.45 3 4C3 13.39 10.61 21 20 21C20.55 21 21 20.55 21 20V16.5C21 15.95 20.55 15.5 20 15.5M5.03 5H6.53C6.6 5.88 6.75 6.75 7 7.59L5.79 8.8C5.38 7.59 5.12 6.32 5.03 5M19 18.97C17.68 18.88 16.4 18.62 15.2 18.21L16.4 17C17.25 17.25 18.12 17.4 19 17.46V18.97M12 3V13L15 10H21V3H12M19 8H14V5H19V8Z";
var mdiPhoneMinus = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M13,6V8H21V6";
var mdiPhoneMinusOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M13 6V8H21V6Z";
var mdiPhoneMissed = "M23.71,16.67C20.66,13.77 16.54,12 12,12C7.46,12 3.34,13.77 0.29,16.67C0.11,16.85 0,17.1 0,17.38C0,17.65 0.11,17.9 0.29,18.08L2.77,20.56C2.95,20.74 3.2,20.86 3.5,20.86C3.75,20.86 4,20.75 4.18,20.57C4.97,19.83 5.86,19.21 6.84,18.72C7.17,18.56 7.4,18.22 7.4,17.82V14.72C8.85,14.25 10.39,14 12,14C13.6,14 15.15,14.25 16.6,14.72V17.82C16.6,18.22 16.83,18.56 17.16,18.72C18.14,19.21 19.03,19.83 19.82,20.57C20,20.75 20.25,20.86 20.5,20.86C20.8,20.86 21.05,20.74 21.23,20.56L23.71,18.08C23.89,17.9 24,17.65 24,17.38C24,17.1 23.89,16.85 23.71,16.67M6.5,5.5L12,11L19,4L18,3L12,9L7.5,4.5H11V3H5V9H6.5V5.5Z";
var mdiPhoneMissedOutline = "M18.6 15.5v1.8c.7.4 1.3.8 1.9 1.3l1.1-1.1c-.9-.9-1.9-1.5-3-2m-13.2 0c-1 .5-2 1.1-2.9 1.9l1.1 1.1c.6-.5 1.2-.9 1.9-1.3v-1.7M12 12c4.5 0 8.7 1.7 11.7 4.7.2.2.3.4.3.7 0 .3-.1.5-.3.7l-2.5 2.5c-.2.2-.4.3-.7.3-.2 0-.5-.1-.7-.3-.8-.7-1.7-1.4-2.7-1.8-.3-.2-.6-.5-.6-.9v-3.1c-1.5-.5-3-.7-4.6-.7-1.6 0-3.1.2-4.6.7v3.1c0 .4-.2.7-.6.9-1 .5-1.9 1.1-2.7 1.8-.2.2-.4.3-.7.3-.3 0-.5-.1-.7-.3L.1 18.1c0-.2-.1-.5-.1-.7 0-.3.1-.5.3-.7C3.3 13.8 7.5 12 12 12zM6.5 5.5V9H5V3h6v1.5H7.5L12 9l6-6 1 1-7 7-5.5-5.5z";
var mdiPhoneOff = "M20.22,2.5L2.5,20.22L3.77,21.5L8.65,16.62C11.76,19.43 15.81,21 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C12.06,16.8 11,16.06 10.06,15.21L21.5,3.77L20.22,2.5M4,3A1,1 0 0,0 3,4C3,7.57 4.14,11.05 6.24,13.94L7.66,12.5C7.28,11.97 6.93,11.39 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4Z";
var mdiPhoneOffOutline = "M16.4 17C17.2 17.2 18.1 17.4 19 17.5V19C17.7 18.9 16.4 18.7 15.2 18.2L16.4 17M20.2 2.5L2.5 20.2L3.8 21.5L8.7 16.6C11.8 19.4 15.8 21 20 21C20.6 21 21 20.6 21 20V16.5C21 15.9 20.6 15.5 20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C12.1 16.8 11 16.1 10.1 15.2L21.5 3.8L20.2 2.5M6.5 5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5H6.5M7.5 3H4C3.4 3 3 3.4 3 4C3 7.6 4.1 11 6.2 13.9L7.6 12.5C7.2 12 6.9 11.4 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.4 8.5 5.2 8.5 4C8.5 3.4 8.1 3 7.5 3Z";
var mdiPhoneOutgoing = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M15,3V4.5H18.5L13,10L14,11L19.5,5.5V9H21V3H15Z";
var mdiPhoneOutgoingOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M15 3V4.5H18.5L13 10L14 11L19.5 5.5V9H21V3H15Z";
var mdiPhoneOutline = "M20,15.5C18.8,15.5 17.5,15.3 16.4,14.9C16.3,14.9 16.2,14.9 16.1,14.9C15.8,14.9 15.6,15 15.4,15.2L13.2,17.4C10.4,15.9 8,13.6 6.6,10.8L8.8,8.6C9.1,8.3 9.2,7.9 9,7.6C8.7,6.5 8.5,5.2 8.5,4C8.5,3.5 8,3 7.5,3H4C3.5,3 3,3.5 3,4C3,13.4 10.6,21 20,21C20.5,21 21,20.5 21,20V16.5C21,16 20.5,15.5 20,15.5M5,5H6.5C6.6,5.9 6.8,6.8 7,7.6L5.8,8.8C5.4,7.6 5.1,6.3 5,5M19,19C17.7,18.9 16.4,18.6 15.2,18.2L16.4,17C17.2,17.2 18.1,17.4 19,17.4V19Z";
var mdiPhonePaused = "M19,10H21V3H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,3H15V10H17V3Z";
var mdiPhonePausedOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19 10H21V3H19M17 3H15V10H17V3Z";
var mdiPhonePlus = "M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M16,3V6H13V8H16V11H18V8H21V6H18V3";
var mdiPhonePlusOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M16 3V6H13V8H16V11H18V8H21V6H18V3Z";
var mdiPhoneRemove = "M4 3C3.4 3 3 3.4 3 4C3 13.4 10.6 21 20 21C20.6 21 21 20.6 21 20V16.5C21 15.9 20.6 15.5 20 15.5C18.8 15.5 17.5 15.3 16.4 14.9C16 14.8 15.7 14.9 15.4 15.1L13.2 17.3C10.4 15.9 8.1 13.5 6.6 10.7L8.8 8.5C9.1 8.2 9.2 7.8 9 7.5C8.7 6.4 8.5 5.2 8.5 4C8.5 3.4 8.1 3 7.5 3M19.1 3.5L17 5.6L14.9 3.5L13.5 4.9L15.6 7L13.5 9.1L14.9 10.5L17 8.4L19.1 10.5L20.5 9.1L18.4 7L20.5 4.9";
var mdiPhoneRemoveOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M19.1 3.5L17 5.6L14.9 3.5L13.5 4.9L15.6 7L13.5 9.1L14.9 10.5L17 8.4L19.1 10.5L20.5 9.1L18.4 7L20.5 4.9L19.1 3.5Z";
var mdiPhoneReturn = "M21,6V11H19.5V7.5H13.87L16.3,9.93L15.24,11L11,6.75L15.24,2.5L16.3,3.57L13.87,6H21M8.82,8.58C9.08,8.32 9.17,7.93 9.06,7.58C8.69,6.42 8.5,5.22 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.79,15.5 17.58,15.31 16.43,14.93C16.08,14.82 15.69,14.91 15.43,15.17L13.23,17.37C10.39,15.92 8.09,13.62 6.64,10.78L8.82,8.58Z";
var mdiPhoneReturnOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M21 6V11H19.5V7.5H13.87L16.3 9.93L15.24 11L11 6.75L15.24 2.5L16.3 3.57L13.87 6H21Z";
var mdiPhoneRing = "M23.71 16.67C20.66 13.78 16.54 12 12 12S3.34 13.78.29 16.67c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2.48 2.48c.18.18.43.29.71.29.27 0 .52-.11.7-.28.79-.74 1.69-1.36 2.66-1.85.33-.16.56-.5.56-.9v-3.1c1.45-.48 3-.73 4.6-.73s3.15.25 4.6.72v3.1c0 .39.23.74.56.9.98.49 1.87 1.12 2.66 1.85.18.18.43.28.7.28.28 0 .53-.11.71-.29l2.48-2.48c.18-.18.29-.43.29-.71a.99.99 0 0 0-.29-.7zM21.16 6.26l-1.41-1.41-3.56 3.55 1.41 1.41s3.45-3.52 3.56-3.55zM13 2h-2v5h2V2zM6.4 9.81L7.81 8.4 4.26 4.84 2.84 6.26c.11.03 3.56 3.55 3.56 3.55z";
var mdiPhoneRingOutline = "M23.71 16.67C20.66 13.78 16.54 12 12 12S3.34 13.78.29 16.67c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2.48 2.48c.18.18.43.29.71.29.27 0 .52-.11.7-.28.79-.74 1.69-1.36 2.66-1.85.33-.16.56-.5.56-.9v-3.1c1.45-.48 3-.73 4.6-.73s3.15.25 4.6.72v3.1c0 .39.23.74.56.9.98.49 1.87 1.12 2.66 1.85.18.18.43.28.7.28.28 0 .53-.11.71-.29l2.48-2.48c.18-.18.29-.43.29-.71a.99.99 0 0 0-.29-.7zm-18.31.56c-.66.37-1.29.8-1.87 1.27l-1.07-1.07c.91-.75 1.9-1.39 2.95-1.9v1.7H5.4zm15.07 1.26c-.59-.48-1.21-.9-1.87-1.27v-1.7c1.04.51 2.03 1.15 2.94 1.9l-1.07 1.07zm.69-12.23l-1.41-1.41-3.56 3.55 1.41 1.41s3.45-3.52 3.56-3.55zM11 2h2v5h-2V2zM6.4 9.81L7.81 8.4 4.26 4.84 2.84 6.26c.11.03 3.56 3.55 3.56 3.55z";
var mdiPhoneRotateLandscape = "M9,1H3A2,2 0 0,0 1,3V16A2,2 0 0,0 3,18H9A2,2 0 0,0 11,16V3A2,2 0 0,0 9,1M9,15H3V3H9V15M21,13H13V15H21V21H9V20H6V21A2,2 0 0,0 8,23H21A2,2 0 0,0 23,21V15A2,2 0 0,0 21,13M23,10L19,8L20.91,7.09C19.74,4.31 17,2.5 14,2.5V1A9,9 0 0,1 23,10Z";
var mdiPhoneRotatePortrait = "M9,1H3A2,2 0 0,0 1,3V16A2,2 0 0,0 3,18H4V15H3V3H9V11H11V3A2,2 0 0,0 9,1M23,21V15A2,2 0 0,0 21,13H8A2,2 0 0,0 6,15V21A2,2 0 0,0 8,23H21A2,2 0 0,0 23,21M9,21V15H21V21H9M23,10H21.5C21.5,7 19.69,4.27 16.92,3.09L16,5L14,1A9,9 0 0,1 23,10Z";
var mdiPhoneSettings = "M19,11H21V9H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,9H15V11H17M13,9H11V11H13V9Z";
var mdiPhoneSettingsOutline = "M20 15.5C18.8 15.5 17.5 15.3 16.4 14.9H16.1C15.8 14.9 15.6 15 15.4 15.2L13.2 17.4C10.4 15.9 8 13.6 6.6 10.8L8.8 8.6C9.1 8.3 9.2 7.9 9 7.6C8.7 6.5 8.5 5.2 8.5 4C8.5 3.5 8 3 7.5 3H4C3.5 3 3 3.5 3 4C3 13.4 10.6 21 20 21C20.5 21 21 20.5 21 20V16.5C21 16 20.5 15.5 20 15.5M5 5H6.5C6.6 5.9 6.8 6.8 7 7.6L5.8 8.8C5.4 7.6 5.1 6.3 5 5M19 19C17.7 18.9 16.4 18.6 15.2 18.2L16.4 17C17.2 17.2 18.1 17.4 19 17.4V19M17 9H15V11H17M13 9H11V11H13V9M19 11H21V9H19Z";
var mdiPhoneVoip = "M13,17V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H13M23.7,7.67C23.88,7.85 24,8.09 24,8.37C24,8.65 23.89,8.9 23.71,9.08L21.23,11.56C21.05,11.74 20.8,11.85 20.5,11.85C20.25,11.85 20,11.75 19.82,11.57C19,10.84 18.13,10.21 17.15,9.72C16.82,9.56 16.59,9.21 16.59,8.82V5.72C15.14,5.25 13.59,5 12,5C10.4,5 8.85,5.25 7.4,5.73V8.83C7.4,9.23 7.17,9.57 6.84,9.73C5.87,10.22 4.97,10.84 4.18,11.58C4,11.75 3.75,11.86 3.5,11.86C3.2,11.86 2.95,11.75 2.77,11.57L0.29,9.09C0.11,8.91 0,8.66 0,8.38C0,8.1 0.11,7.85 0.29,7.67C3.34,4.78 7.46,3 12,3C16.53,3 20.65,4.78 23.7,7.67M11,10V15H10V10H11M12,10H15V13H13V15H12V10M14,12V11H13V12H14Z";
var mdiPi = "M4,5V7H6V19H8V7H14V16A3,3 0 0,0 17,19A3,3 0 0,0 20,16H18A1,1 0 0,1 17,17A1,1 0 0,1 16,16V7H18V5";
var mdiPiBox = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M6,7H17V9H15V14A1,1 0 0,0 16,15A1,1 0 0,0 17,14H19A3,3 0 0,1 16,17A3,3 0 0,1 13,14V9H10V17H8V9H6";
var mdiPiHole = "M5.62,2C9.5,2 11.57,4.29 11.77,7.93C12.5,3.57 15.93,4.08 15.93,4.08C16.1,6.55 14.07,8.05 11.77,8.17C11.12,6.81 7.25,3.47 7.25,3.47C7.23,3.5 10.97,6.74 10.83,8.15C8.33,7.88 5.82,6 5.62,2M6.06,13.11L9.92,9.25C11.09,8.08 13,8.08 14.16,9.25L18,13.11C19.19,14.28 19.19,16.18 18,17.35L14.16,21.21C13,22.38 11.09,22.38 9.92,21.21L6.06,17.35C4.89,16.18 4.89,14.28 6.06,13.11M9.39,19.59C9.39,18.36 10.15,16.85 12.09,16.85C13.4,16.85 14.87,18.1 16.31,17.96C14.87,17.92 13.59,16.85 13.59,15.19C13.59,13.86 14.69,12.9 14.69,11.34C14.63,12.33 13.82,13.77 12,13.77C10.59,13.77 9.55,12.63 7.87,12.63C8.58,12.67 10.5,13.3 10.5,15.35C10.5,17 9.39,17.5 9.39,19.59Z";
var mdiPiano = "M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M4,5V19H8V13H6.75V5H4M9,19H15V13H13.75V5H10.25V13H9V19M16,19H20V5H17.25V13H16V19Z";
var mdiPickaxe = "M14.79,10.62L3.5,21.9L2.1,20.5L13.38,9.21L14.79,10.62M19.27,7.73L19.86,7.14L19.07,6.35L19.71,5.71L18.29,4.29L17.65,4.93L16.86,4.14L16.27,4.73C14.53,3.31 12.57,2.17 10.47,1.37L9.64,3.16C11.39,4.08 13,5.19 14.5,6.5L14,7L17,10L17.5,9.5C18.81,11 19.92,12.61 20.84,14.36L22.63,13.53C21.83,11.43 20.69,9.47 19.27,7.73Z";
var mdiPictureInPictureBottomRight = "M19,11H11V17H19V11M23,19V5C23,3.88 22.1,3 21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19M21,19H3V4.97H21V19Z";
var mdiPictureInPictureBottomRightOutline = "M19,11H11V17H19V11M17,15H13V13H17V15M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5C23,3.88 22.1,3 21,3M21,19H3V4.97H21V19Z";
var mdiPictureInPictureTopRight = "M19,7H11V13H19V7M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H3V5H21V19Z";
var mdiPictureInPictureTopRightOutline = "M19,7H11V13H19V7M17,11H13V9H17V11M21,3H3A2,2 0 0,0 1,5V19C1,20.11 1.9,21 3,21H21A2,2 0 0,0 23,19V5C23,3.91 22.1,3 21,3M21,19H3V5H21V19Z";
var mdiPier = "M20,18C18.6,18 17.2,17.5 16,16.7C13.6,18.4 10.4,18.4 8,16.7C6.8,17.5 5.4,18 4,18H2V20H4C5.4,20 6.7,19.6 8,19C10.5,20.3 13.5,20.3 16,19C17.3,19.6 18.6,20 20,20H22V18H20M20,13H19V16.9C18.3,16.8 17.6,16.6 17,16.2V13H12V17C11.3,17 10.7,16.9 10,16.7V13H5V16.9C4.7,17 4.3,17 4,17H3V13H2V11H3V9H5V11H10V9H12V11H17V9H19V11H20V13Z";
var mdiPierCrane = "M20,20C18.61,20 17.22,19.53 16,18.67C13.56,20.38 10.44,20.38 8,18.67C6.78,19.53 5.39,20 4,20H2V22H4C5.37,22 6.74,21.65 8,21C10.5,22.3 13.5,22.3 16,21C17.26,21.65 18.62,22 20,22H22V20H20M20,4V3A1,1 0 0,0 19,2H9V1H6V2H5V4H6V13H5V11H3V13H2V15H3V19H4C4.33,19 4.67,18.97 5,18.92V15H10V18.65C10.65,18.85 11.33,18.95 12,18.95V18.92L12,15H13V13H12V11H10V13H9V4H17V8.62C16.53,8.79 16.19,9.23 16.19,9.76C16.19,10.2 16.43,10.6 16.8,10.82V12H17.42C17.76,12 18.03,12.28 18.03,12.62C18.03,12.96 17.76,13.24 17.42,13.24C17.2,13.24 17,13.12 16.88,12.93C16.71,12.64 16.34,12.54 16.05,12.71C15.75,12.87 15.65,13.25 15.82,13.55C16.15,14.11 16.76,14.47 17.42,14.47C18.43,14.47 19.26,13.64 19.26,12.62C19.26,11.84 18.76,11.14 18.03,10.88V10.82C18.41,10.6 18.65,10.2 18.65,9.76C18.65,9.3 18.38,8.91 18,8.7V4H20M8,11.66L7,12.66V11.24L8,10.24V11.66M8,8.71L7,9.71V8.29L8,7.29V8.71M7,6.71V5.29L8,4.29V5.71L7,6.71Z";
var mdiPig = "M9.5,9A1.5,1.5 0 0,0 8,10.5A1.5,1.5 0 0,0 9.5,12A1.5,1.5 0 0,0 11,10.5A1.5,1.5 0 0,0 9.5,9M14.5,9A1.5,1.5 0 0,0 13,10.5A1.5,1.5 0 0,0 14.5,12A1.5,1.5 0 0,0 16,10.5A1.5,1.5 0 0,0 14.5,9M12,4L12.68,4.03C13.62,3.24 14.82,2.59 15.72,2.35C17.59,1.85 20.88,2.23 21.31,3.83C21.62,5 20.6,6.45 19.03,7.38C20.26,8.92 21,10.87 21,13A9,9 0 0,1 12,22A9,9 0 0,1 3,13C3,10.87 3.74,8.92 4.97,7.38C3.4,6.45 2.38,5 2.69,3.83C3.12,2.23 6.41,1.85 8.28,2.35C9.18,2.59 10.38,3.24 11.32,4.03L12,4M10,16A1,1 0 0,1 11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17A1,1 0 0,1 10,16M14,16A1,1 0 0,1 15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17A1,1 0 0,1 14,16M12,13C9.24,13 7,15.34 7,17C7,18.66 9.24,20 12,20C14.76,20 17,18.66 17,17C17,15.34 14.76,13 12,13M7.76,4.28C7.31,4.16 4.59,4.35 4.59,4.35C4.59,4.35 6.8,6.1 7.24,6.22C7.69,6.34 9.77,6.43 9.91,5.9C10.06,5.36 8.2,4.4 7.76,4.28M16.24,4.28C15.8,4.4 13.94,5.36 14.09,5.9C14.23,6.43 16.31,6.34 16.76,6.22C17.2,6.1 19.41,4.35 19.41,4.35C19.41,4.35 16.69,4.16 16.24,4.28Z";
var mdiPigVariant = "M20 12C20 8.69 16.42 6 12 6C11.15 6 10.34 6.1 9.57 6.28L7 5V7.32C5.5 8.22 4.45 9.5 4.12 11H2V15H5.08C5.58 15.65 6.23 16.22 7 16.68V20H9V17.56C9.93 17.84 10.94 18 12 18S14.07 17.84 15 17.56V20H17V16.68C18.15 16 19.03 15.06 19.54 14H22V12H20M7 11C6.45 11 6 10.55 6 10S6.45 9 7 9 8 9.45 8 10 7.55 11 7 11Z";
var mdiPigVariantOutline = "M9 12C8.4 12 8 11.6 8 11S8.4 10 9 10 10 10.4 10 11 9.6 12 9 12M22 12H20C20 8.7 16.4 6 12 6C11.2 6 10.3 6.1 9.6 6.3L7 5V7.3C5.5 8.2 4.5 9.5 4.1 11H2V15H5.1C5.6 15.6 6.2 16.2 7 16.7V20H9V17.6C9.9 17.9 10.9 18 12 18S14.1 17.8 15 17.6V20H17V16.7C18.1 16 19 15.1 19.5 14H22V12M12 16C8.7 16 6 14.2 6 12S8.7 8 12 8 18 9.8 18 12 15.3 16 12 16Z";
var mdiPiggyBank = "M13 1C14.66 1 16 2.34 16 4S14.66 7 13 7 10 5.66 10 4 11.34 1 13 1M20 14C20 11.64 18.17 9.6 15.5 8.62C15 9.45 14.06 10 13 10C11.76 10 10.69 9.24 10.24 8.17C10 8.2 9.78 8.23 9.57 8.29L7 7V9.32C5.5 10.22 4.45 11.5 4.12 13H2V17H5.08C5.58 17.65 6.23 18.22 7 18.68V22H9V19.56C9.93 19.84 10.94 20 12 20S14.07 19.84 15 19.56V22H17V18.68C18.15 18 19.03 17.06 19.54 16H22V14H20M7 13C6.45 13 6 12.55 6 12S6.45 11 7 11 8 11.45 8 12 7.55 13 7 13Z";
var mdiPiggyBankOutline = "M22 14H20C20 11.6 18.2 9.6 15.5 8.6C15 9.4 14.1 10 13 10C11.7 10 10.7 9.2 10.2 8.2C10 8.2 9.8 8.3 9.5 8.3L7 7V9.3C5.5 10.2 4.4 11.5 4.1 13H2V17H5.1C5.6 17.6 6.2 18.2 7 18.7V22H9V19.6C9.9 19.9 10.9 20 12 20S14.1 19.8 15 19.6V22H17V18.7C18.1 18 19 17.1 19.5 16H22V14M12 18C8.7 18 6 16.2 6 14C6 12.5 7.4 11.1 9.4 10.4C10.3 11.4 11.6 12 13 12C14.1 12 15.1 11.7 16 11C17.3 11.8 18 12.9 18 14C18 16.2 15.3 18 12 18M13 3C13.6 3 14 3.4 14 4S13.6 5 13 5 12 4.6 12 4 12.4 3 13 3M13 1C11.3 1 10 2.3 10 4S11.3 7 13 7 16 5.7 16 4 14.7 1 13 1M10 13C10 13.6 9.6 14 9 14S8 13.6 8 13 8.4 12 9 12 10 12.4 10 13";
var mdiPill = "M4.22,11.29L11.29,4.22C13.64,1.88 17.43,1.88 19.78,4.22C22.12,6.56 22.12,10.36 19.78,12.71L12.71,19.78C10.36,22.12 6.56,22.12 4.22,19.78C1.88,17.43 1.88,13.64 4.22,11.29M5.64,12.71C4.59,13.75 4.24,15.24 4.6,16.57L10.59,10.59L14.83,14.83L18.36,11.29C19.93,9.73 19.93,7.2 18.36,5.64C16.8,4.07 14.27,4.07 12.71,5.64L5.64,12.71Z";
var mdiPillar = "M6,5H18A1,1 0 0,1 19,6A1,1 0 0,1 18,7H6A1,1 0 0,1 5,6A1,1 0 0,1 6,5M21,2V4H3V2H21M15,8H17V22H15V8M7,8H9V22H7V8M11,8H13V22H11V8Z";
var mdiPin = "M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z";
var mdiPinOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z";
var mdiPinOffOutline = "M8,6.2V4H7V2H17V4H16V12L18,14V16H17.8L14,12.2V4H10V8.2L8,6.2M20,20.7L18.7,22L12.8,16.1V22H11.2V16H6V14L8,12V11.3L2,5.3L3.3,4L20,20.7M8.8,14H10.6L9.7,13.1L8.8,14Z";
var mdiPinOutline = "M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12M8.8,14L10,12.8V4H14V12.8L15.2,14H8.8Z";
var mdiPineTree = "M10,21V18H3L8,13H5L10,8H7L12,3L17,8H14L19,13H16L21,18H14V21H10Z";
var mdiPineTreeBox = "M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M11,19H13V17H18L14,13H17L13,9H16L12,5L8,9H11L7,13H10L6,17H11V19Z";
var mdiPineTreeFire = "M22.14 14.84L22.12 14.85C22.35 15.13 22.55 15.44 22.7 15.77L22.79 15.96C23.5 17.65 23 19.6 21.69 20.82C20.5 21.91 18.84 22.2 17.3 22C15.84 21.82 14.5 20.9 13.73 19.63C13.5 19.24 13.3 18.8 13.2 18.35C13.07 18 13.03 17.62 13 17.25C12.91 15.65 13.55 13.95 14.76 12.95C14.21 14.16 14.34 15.67 15.15 16.72L15.26 16.85C15.4 16.97 15.57 17 15.73 16.94C15.88 16.88 16 16.73 16 16.57L15.93 16.33C15.05 14 15.79 11.3 17.66 9.77C18.17 9.35 18.8 8.97 19.46 8.8C18.78 10.16 19 11.94 20.09 13C20.55 13.5 21.11 13.79 21.58 14.23L22.14 14.84M19.86 19.5L19.85 19.47C20.3 19.08 20.55 18.41 20.53 17.81L20.5 17.5C20.3 16.5 19.43 16.16 18.87 15.43C18.7 15.21 18.55 14.93 18.44 14.65C18.22 15.15 18.2 15.62 18.29 16.16C18.39 16.73 18.61 17.22 18.5 17.81C18.34 18.46 17.83 19.11 16.94 19.32C17.44 19.81 18.25 20.2 19.06 19.92C19.32 19.85 19.65 19.66 19.86 19.5M9 21V18H2L7 13H4L9 8H6L11 3L16 8H13L14.82 9.82C12.55 11.06 11 13.59 11 16.5C11 18.19 11.5 19.75 12.4 21H9Z";
var mdiPinterest = "M9.04,21.54C10,21.83 10.97,22 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12C2,16.25 4.67,19.9 8.44,21.34C8.35,20.56 8.26,19.27 8.44,18.38L9.59,13.44C9.59,13.44 9.3,12.86 9.3,11.94C9.3,10.56 10.16,9.53 11.14,9.53C12,9.53 12.4,10.16 12.4,10.97C12.4,11.83 11.83,13.06 11.54,14.24C11.37,15.22 12.06,16.08 13.06,16.08C14.84,16.08 16.22,14.18 16.22,11.5C16.22,9.1 14.5,7.46 12.03,7.46C9.21,7.46 7.55,9.56 7.55,11.77C7.55,12.63 7.83,13.5 8.29,14.07C8.38,14.13 8.38,14.21 8.35,14.36L8.06,15.45C8.06,15.62 7.95,15.68 7.78,15.56C6.5,15 5.76,13.18 5.76,11.71C5.76,8.55 8,5.68 12.32,5.68C15.76,5.68 18.44,8.15 18.44,11.43C18.44,14.87 16.31,17.63 13.26,17.63C12.29,17.63 11.34,17.11 11,16.5L10.33,18.87C10.1,19.73 9.47,20.88 9.04,21.57V21.54Z";
var mdiPinwheel = "M12,12C12,9 14.5,6.5 17.5,6.5C20.5,6.5 23,9 23,12H12M12,12C12,15 9.5,17.5 6.5,17.5C3.5,17.5 1,15 1,12H12M12,12C9,12 6.5,9.5 6.5,6.5C6.5,3.5 9,1 12,1V12M12,12C15,12 17.5,14.5 17.5,17.5C17.5,20.5 15,23 12,23V12Z";
var mdiPinwheelOutline = "M12,23H11V16.43C9.93,17.4 8.5,18 7,18C3.75,18 1,15.25 1,12V11H7.57C6.6,9.93 6,8.5 6,7C6,3.75 8.75,1 12,1H13V7.57C14.07,6.6 15.5,6 17,6C20.25,6 23,8.75 23,12V13H16.43C17.4,14.07 18,15.5 18,17C18,20.25 15.25,23 12,23M13,13.13V20.87C14.7,20.41 16,18.83 16,17C16,15.17 14.7,13.59 13,13.13M3.13,13C3.59,14.7 5.17,16 7,16C8.83,16 10.41,14.7 10.87,13H3.13M13.13,11H20.87C20.41,9.3 18.82,8 17,8C15.18,8 13.59,9.3 13.13,11M11,3.13C9.3,3.59 8,5.18 8,7C8,8.82 9.3,10.41 11,10.87V3.13Z";
var mdiPipe = "M22,14H20V16H14V13H16V11H14V6A2,2 0 0,0 12,4H4V2H2V10H4V8H10V11H8V13H10V18A2,2 0 0,0 12,20H20V22H22";
var mdiPipeDisconnected = "M16,9V11H8V9H10V8H4V10H2V2H4V4H12A2,2 0 0,1 14,6V9H16M10,15V18A2,2 0 0,0 12,20H20V22H22V14H20V16H14V15H16V13H8V15H10Z";
var mdiPipeLeak = "M2,5V13H4V11H10L12,9L10,7H4V5H2M20,5V7H12L14,9L12,11H20V13H22V5H20M12,13C12,13 10,15.17 10,16.5A2,2 0 0,0 12,18.5A2,2 0 0,0 14,16.5C14,15.17 12,13 12,13Z";
var mdiPipeWrench = "M16.17 5.63L14.06 7.78L11.91 5.63L16.17 1.41L19.69 4.92C20.86 6.09 20.86 8 19.69 9.19L16.17 5.63M4.83 12.7L7 14.81L10.5 11.3L8.39 9.19L4.83 12.7M15.47 7.78L19 11.3L17.58 12.7L16.88 12L6.23 22.59L3.42 19.78L11.91 11.3L7.69 7.03L9.8 4.92L14.06 9.19L15.47 7.78Z";
var mdiPirate = "M8.2,12.1C7.9,12.3 7.7,12.7 7.8,13C7.8,13.7 8.5,14.2 9.1,14.2C9.7,14.2 10.3,13.7 10.3,13C9.7,12.6 9,12.3 8.2,12.1M22,11L23,7C23,7 21,7 18,5C15,3 15,1 12,1C9,1 9,3 6,5C3,7 1,7 1,7L2,11H2.1C2,11.3 2,11.7 2,12C2,15.5 3.8,18.6 6.5,20.4L6,21.3C12.4,25.4 18,21.3 18,21.3L17.5,20.4C20.2,18.6 22,15.5 22,12C22,11.7 22,11.3 22,11M11.3,4.5L9.9,3.1L10.6,2.4L12,3.8L13.4,2.4L14.1,3.1L12.7,4.5L14.1,5.9L13.4,6.6L12,5.2L10.6,6.6L9.9,5.9L11.3,4.5M9.3,8.5C10.3,8.2 11.3,8 12,8C14.2,8 17.9,9.6 19.8,10.4C19.9,10.7 19.9,11 19.9,11.3L9.3,8.5M13.6,19.1C12.9,19.5 12.2,19.8 11.4,19.9C10.9,19.5 10.9,18.7 11.4,18.3C11.8,17.9 12.7,17.7 13.2,18.2C13.5,18.3 13.6,18.8 13.6,19.1M20,13.4C19.5,15.5 18.2,17.4 16.5,18.6L15,16H9L7.5,18.6C5.4,17.2 4,14.8 4,12C4,11.5 4.1,11 4.2,10.5C4.7,10.3 5.3,10 6,9.7L13.1,11.6V14C13.1,14.5 13.5,15 14.1,15H16.1C16.6,15 17.1,14.6 17.1,14V12.6L20,13.4Z";
var mdiPistol = "M7,5H23V9H22V10H16A1,1 0 0,0 15,11V12A2,2 0 0,1 13,14H9.62C9.24,14 8.89,14.22 8.72,14.56L6.27,19.45C6.1,19.79 5.76,20 5.38,20H2C2,20 -1,20 3,14C3,14 6,10 2,10V5H3L3.5,4H6.5L7,5M14,12V11A1,1 0 0,0 13,10H12C12,10 11,11 12,12A2,2 0 0,1 10,10A1,1 0 0,0 9,11V12A1,1 0 0,0 10,13H13A1,1 0 0,0 14,12Z";
var mdiPiston = "M13,16.18C13.5,16.35 13.9,16.63 14.23,17H15V21H14.21C13.89,21.35 13.5,21.63 13,21.8C11.85,22.22 10.58,21.87 9.78,21H9V17H9.77C10.1,16.63 10.5,16.35 11,16.18V12H13V16.18M12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20M17,4H15V5H17V11H7V5H9V4H7V2H17V4M12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9Z";
var mdiPitchfork = "M15.9 .9L13.1 3.7C12.3 4.5 12.3 5.7 13.1 6.5L14.5 8L9.2 13.4L7.8 12C7 11.2 5.8 11.2 5 12L1 16L2.4 17.4L6.4 13.4L7.8 14.8L3.8 18.8L5.2 20.2L9.2 16.2L10.6 17.6L9.9 18.4L6.7 21.6L8 23L12 19C12.8 18.2 12.8 17 12 16.2L10.6 14.8L15.9 9.4L17.3 10.8C18.1 11.6 19.3 11.6 20.1 10.8L23 8L15.9 .9M18.7 9.4L14.5 5.2L15.9 3.8L20.1 8L18.7 9.4Z";
var mdiPizza = "M12,15A2,2 0 0,1 10,13C10,11.89 10.9,11 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M7,7C7,5.89 7.89,5 9,5A2,2 0 0,1 11,7A2,2 0 0,1 9,9C7.89,9 7,8.1 7,7M12,2C8.43,2 5.23,3.54 3,6L12,22L21,6C18.78,3.54 15.57,2 12,2Z";
var mdiPlay = "M8,5.14V19.14L19,12.14L8,5.14Z";
var mdiPlayBox = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M10 16V8L15 12";
var mdiPlayBoxMultiple = "M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M12,14.5V5.5L18,10L12,14.5Z";
var mdiPlayBoxMultipleOutline = "M4 6H2V20C2 21.1 2.9 22 4 22H18V20H4V6M20 4V16H8V4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.1 6.9 18 8 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M12 14.5V5.5L18 10L12 14.5Z";
var mdiPlayBoxOutline = "M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,8V16L15,12L10,8Z";
var mdiPlayCircle = "M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiPlayCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z";
var mdiPlayNetwork = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M10,14V6L15,10L10,14Z";
var mdiPlayNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M10,14V6L15,10L10,14Z";
var mdiPlayOutline = "M8.5,8.64L13.77,12L8.5,15.36V8.64M6.5,5V19L17.5,12";
var mdiPlayPause = "M3,5V19L11,12M13,19H16V5H13M18,5V19H21V5";
var mdiPlayProtectedContent = "M2,5V18H11V16H4V7H17V11H19V5H2M9,9V14L12.5,11.5L9,9M21.04,11.67L16.09,16.62L13.96,14.5L12.55,15.91L16.09,19.45L22.45,13.09L21.04,11.67Z";
var mdiPlaySpeed = "M13,2.05V4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03V2.05M5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37L5.67,19.74M7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74M5.69,7.1L4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1M4.06,13H2.06C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13M10,16.5L16,12L10,7.5V16.5Z";
var mdiPlaylistCheck = "M14,10H2V12H14V10M14,6H2V8H14V6M2,16H10V14H2V16M21.5,11.5L23,13L16,20L11.5,15.5L13,14L16,17L21.5,11.5Z";
var mdiPlaylistEdit = "M2,6V8H14V6H2M2,10V12H14V10H2M20.04,10.13C19.9,10.13 19.76,10.19 19.65,10.3L18.65,11.3L20.7,13.35L21.7,12.35C21.92,12.14 21.92,11.79 21.7,11.58L20.42,10.3C20.31,10.19 20.18,10.13 20.04,10.13M18.07,11.88L12,17.94V20H14.06L20.12,13.93L18.07,11.88M2,14V16H10V14H2Z";
var mdiPlaylistMinus = "M2,16H10V14H2M12,14V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z";
var mdiPlaylistMusic = "M15,6H3V8H15V6M15,10H3V12H15V10M3,16H11V14H3V16M17,6V14.18C16.69,14.07 16.35,14 16,14A3,3 0 0,0 13,17A3,3 0 0,0 16,20A3,3 0 0,0 19,17V8H22V6H17Z";
var mdiPlaylistMusicOutline = "M15,6V8H3V6H15M15,10V12H3V10H15M3,16V14H11V16H3M17,6H22V8H19V17A3,3 0 0,1 16,20A3,3 0 0,1 13,17A3,3 0 0,1 16,14C16.35,14 16.69,14.07 17,14.18V6M16,16A1,1 0 0,0 15,17A1,1 0 0,0 16,18A1,1 0 0,0 17,17A1,1 0 0,0 16,16Z";
var mdiPlaylistPlay = "M19,9H2V11H19V9M19,5H2V7H19V5M2,15H15V13H2V15M17,13V19L22,16L17,13Z";
var mdiPlaylistPlus = "M2,16H10V14H2M18,14V10H16V14H12V16H16V20H18V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z";
var mdiPlaylistRemove = "M2,6V8H14V6H2M2,10V12H11V10H2M14.17,10.76L12.76,12.17L15.59,15L12.76,17.83L14.17,19.24L17,16.41L19.83,19.24L21.24,17.83L18.41,15L21.24,12.17L19.83,10.76L17,13.59L14.17,10.76M2,14V16H11V14H2Z";
var mdiPlaylistStar = "M17,19.09L19.45,20.58L18.8,17.77L21,15.89L18.11,15.64L17,13L15.87,15.64L13,15.89L15.18,17.77L14.5,20.58L17,19.09M4,14H12V16H4V14M4,6H16V8H4V6M4,10H16V12H4V10Z";
var mdiPlex = "M4,2C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2H4M8.56,6H12.06L15.5,12L12.06,18H8.56L12,12L8.56,6Z";
var mdiPlus = "M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z";
var mdiPlusBox = "M17,13H13V17H11V13H7V11H11V7H13V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiPlusBoxMultiple = "M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z";
var mdiPlusBoxMultipleOutline = "M18 11H15V14H13V11H10V9H13V6H15V9H18M20 4V16H8V4H20M20 2H8C6.9 2 6 2.9 6 4V16C6 17.11 6.9 18 8 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M4 6H2V20C2 21.11 2.9 22 4 22H18V20H4V6Z";
var mdiPlusBoxOutline = "M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z";
var mdiPlusCircle = "M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiPlusCircleMultiple = "M2 12C2 9.2 3.6 6.8 6 5.7V3.5C2.5 4.8 0 8.1 0 12S2.5 19.2 6 20.5V18.3C3.6 17.2 2 14.8 2 12M15 3C10 3 6 7 6 12S10 21 15 21 24 17 24 12 20 3 15 3M20 13H16V17H14V13H10V11H14V7H16V11H20V13Z";
var mdiPlusCircleMultipleOutline = "M16,8H14V11H11V13H14V16H16V13H19V11H16M2,12C2,9.21 3.64,6.8 6,5.68V3.5C2.5,4.76 0,8.09 0,12C0,15.91 2.5,19.24 6,20.5V18.32C3.64,17.2 2,14.79 2,12M15,3C10.04,3 6,7.04 6,12C6,16.96 10.04,21 15,21C19.96,21 24,16.96 24,12C24,7.04 19.96,3 15,3M15,19C11.14,19 8,15.86 8,12C8,8.14 11.14,5 15,5C18.86,5 22,8.14 22,12C22,15.86 18.86,19 15,19Z";
var mdiPlusCircleOutline = "M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z";
var mdiPlusMinus = "M11,4V9H6V11H11V16H13V11H18V9H13V4H11M6,18V20H18V18H6Z";
var mdiPlusMinusBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M11,6H13V9H16V11H13V14H11V11H8V9H11V6M8,16H16V18H8V16Z";
var mdiPlusMinusVariant = "M3 7H6V4H8V7H11V9H8V12H6V9H3V7M13 15H21V17H13V15M16.04 3H18.35L7.96 21H5.65L16.04 3Z";
var mdiPlusNetwork = "M16,11V9H13V6H11V9H8V11H11V14H13V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z";
var mdiPlusNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M15,11H13V13H11V11H9V9H11V7H13V9H15V11Z";
var mdiPlusOne = "M10,8V12H14V14H10V18H8V14H4V12H8V8H10M14.5,6.08L19,5V18H17V7.4L14.5,7.9V6.08Z";
var mdiPlusOutline = "M4,9H9V4H15V9H20V15H15V20H9V15H4V9M11,13V18H13V13H18V11H13V6H11V11H6V13H11Z";
var mdiPlusThick = "M20 14H14V20H10V14H4V10H10V4H14V10H20V14Z";
var mdiPodcast = "M17,18.25V21.5H7V18.25C7,16.87 9.24,15.75 12,15.75C14.76,15.75 17,16.87 17,18.25M12,5.5A6.5,6.5 0 0,1 18.5,12C18.5,13.25 18.15,14.42 17.54,15.41L16,14.04C16.32,13.43 16.5,12.73 16.5,12C16.5,9.5 14.5,7.5 12,7.5C9.5,7.5 7.5,9.5 7.5,12C7.5,12.73 7.68,13.43 8,14.04L6.46,15.41C5.85,14.42 5.5,13.25 5.5,12A6.5,6.5 0 0,1 12,5.5M12,1.5A10.5,10.5 0 0,1 22.5,12C22.5,14.28 21.77,16.39 20.54,18.11L19.04,16.76C19.96,15.4 20.5,13.76 20.5,12A8.5,8.5 0 0,0 12,3.5A8.5,8.5 0 0,0 3.5,12C3.5,13.76 4.04,15.4 4.96,16.76L3.46,18.11C2.23,16.39 1.5,14.28 1.5,12A10.5,10.5 0 0,1 12,1.5M12,9.5A2.5,2.5 0 0,1 14.5,12A2.5,2.5 0 0,1 12,14.5A2.5,2.5 0 0,1 9.5,12A2.5,2.5 0 0,1 12,9.5Z";
var mdiPodium = "M12,7.09L14.45,8.58L13.8,5.77L16,3.89L13.11,3.64L12,1L10.87,3.64L8,3.89L10.18,5.77L9.5,8.58L12,7.09M4,13.09L6.45,14.58L5.8,11.77L8,9.89L5.11,9.64L4,7L2.87,9.64L0,9.89L2.18,11.77L1.5,14.58L4,13.09M20,10.09L22.45,11.58L21.8,8.77L24,6.89L21.11,6.64L20,4L18.87,6.64L16,6.89L18.18,8.77L17.5,11.58L20,10.09M15,23H9V10H15V23M7,23H1V17H7V23M23,23H17V13H23V23Z";
var mdiPodiumBronze = "M4,13.09L6.45,14.58L5.8,11.77L8,9.89L5.11,9.64L4,7L2.87,9.64L0,9.89L2.18,11.77L1.5,14.58L4,13.09M7,23H1V17H7V23M9,10V23H15V10H9M13,21H11V12H13V21M17,13V23H23V13H17M21,21H19V15H21V21Z";
var mdiPodiumGold = "M12,7.09L14.45,8.58L13.8,5.77L16,3.89L13.11,3.64L12,1L10.87,3.64L8,3.89L10.18,5.77L9.5,8.58L12,7.09M15,23H9V10H15V23M1,17V23H7V17H1M5,21H3V19H5V21M17,13V23H23V13H17M21,21H19V15H21V21Z";
var mdiPodiumSilver = "M20,10.09L22.45,11.58L21.8,8.77L24,6.89L21.11,6.64L20,4L18.87,6.64L16,6.89L18.18,8.77L17.5,11.58L20,10.09M23,23H17V13H23V23M1,17V23H7V17H1M5,21H3V19H5V21M9,10V23H15V10H9M13,21H11V12H13V21Z";
var mdiPointOfSale = "M20,5C19.4,5 19,5.5 19,6.1V16C19,16.6 19.4,17 20,17.1C20.6,17.1 21,16.6 21,16V6.1C21,5.5 20.6,5 20,5M16.4,2H4.6C3.7,2 3,2.7 3,3.6V17.4C3,18.3 3.7,19 4.6,19H6V21C6,21.6 6.4,22 7,22H13C13.6,22 14,21.6 14,21V19H16.4C17.3,19 18,18.3 18,17.4V3.6C18,2.7 17.3,2 16.4,2M5,8H8V10H5V8M12,11V13H9V11H12M9,10V8H12V10H9M12,14V16H9V14H12M5,11H8V13H5V11M5,16V14H8V16H5M8,21H7V19H8V21M13,21H10V19H13V21M16,16H13V14H16V16M16,13H13V11H16V13M16,10H13V8H16V10M16,6H5V4H16V6Z";
var mdiPokeball = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.92,4 4.55,7.05 4.06,11H8.13C8.57,9.27 10.14,8 12,8C13.86,8 15.43,9.27 15.87,11H19.94C19.45,7.05 16.08,4 12,4M12,20C16.08,20 19.45,16.95 19.94,13H15.87C15.43,14.73 13.86,16 12,16C10.14,16 8.57,14.73 8.13,13H4.06C4.55,16.95 7.92,20 12,20M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiPokemonGo = "M12,2A7,7 0 0,1 19,9C19,10.4 18.59,11.71 17.88,12.8L12,22.21L6.12,12.8C5.41,11.71 5,10.4 5,9A7,7 0 0,1 12,2M12,3.5C9.3,3.5 7.06,5.44 6.59,8H9.17C9.58,6.83 10.69,6 12,6C13.31,6 14.42,6.83 14.83,8H17.41C16.94,5.44 14.7,3.5 12,3.5M12,12C10.69,12 9.58,11.17 9.17,10H6.59C6.72,10.69 6.97,11.34 7.34,11.91V11.91L7.38,12C8.36,13.5 10.06,14.5 12,14.5C13.94,14.5 15.64,13.5 16.62,12L16.66,11.91V11.91C17.03,11.34 17.28,10.69 17.41,10H14.83C14.42,11.17 13.31,12 12,12M12,7.5A1.5,1.5 0 0,0 10.5,9A1.5,1.5 0 0,0 12,10.5A1.5,1.5 0 0,0 13.5,9A1.5,1.5 0 0,0 12,7.5Z";
var mdiPokerChip = "M23,12C23,18.08 18.08,23 12,23C5.92,23 1,18.08 1,12C1,5.92 5.92,1 12,1C18.08,1 23,5.92 23,12M13,4.06C15.13,4.33 17.07,5.45 18.37,7.16L20.11,6.16C18.45,3.82 15.86,2.3 13,2V4.06M3.89,6.16L5.63,7.16C6.93,5.45 8.87,4.33 11,4.06V2C8.14,2.3 5.55,3.82 3.89,6.16M2.89,16.1L4.62,15.1C3.79,13.12 3.79,10.88 4.62,8.9L2.89,7.9C1.7,10.5 1.7,13.5 2.89,16.1M11,19.94C8.87,19.67 6.93,18.55 5.63,16.84L3.89,17.84C5.55,20.18 8.14,21.7 11,22V19.94M20.11,17.84L18.37,16.84C17.07,18.55 15.13,19.67 13,19.94V21.94C15.85,21.65 18.44,20.16 20.11,17.84M21.11,16.1C22.3,13.5 22.3,10.5 21.11,7.9L19.38,8.9C20.21,10.88 20.21,13.12 19.38,15.1L21.11,16.1M15,12L12,7L9,12L12,17L15,12Z";
var mdiPolaroid = "M6,3H18A2,2 0 0,1 20,5V19A2,2 0 0,1 18,21H6A2,2 0 0,1 4,19V5A2,2 0 0,1 6,3M6,5V17H18V5H6Z";
var mdiPoliceBadge = "M22 4L20 2C18.85 2.64 17.4 3 16 3C14.6 3 13.14 2.63 12 2C10.86 2.63 9.4 3 8 3C6.6 3 5.15 2.64 4 2L2 4C2 4 4 6 4 8S2 14 2 16C2 20 12 22 12 22S22 20 22 16C22 14 20 10 20 8S22 4 22 4M15.05 16.45L11.97 14.59L8.9 16.45L9.72 12.95L7 10.61L10.58 10.3L11.97 7L13.37 10.29L16.95 10.6L14.23 12.94L15.05 16.45Z";
var mdiPoliceBadgeOutline = "M12 4.21C13.24 4.72 14.65 5 16 5C17.05 5 18.1 4.84 19.08 4.54C18.5 5.5 18 6.71 18 8C18 9.32 18.54 10.93 19.1 12.63C19.5 13.83 20 15.33 20 16C20 17.03 16.47 19 12 19.96C7.54 19 4 17.03 4 16C4 15.33 4.5 13.83 4.9 12.63C5.46 10.93 6 9.32 6 8C6 6.71 5.5 5.5 4.92 4.54C5.9 4.84 6.96 5 8 5C9.35 5 10.76 4.72 12 4.21M20 2C18.85 2.64 17.4 3 16 3C14.6 3 13.14 2.63 12 2C10.86 2.63 9.4 3 8 3C6.6 3 5.15 2.64 4 2L2 4C2 4 4 6 4 8S2 14 2 16C2 20 12 22 12 22S22 20 22 16C22 14 20 10 20 8S22 4 22 4L20 2M15.05 16.45L11.97 14.59L8.9 16.45L9.72 12.95L7 10.61L10.58 10.3L11.97 7L13.37 10.29L16.95 10.6L14.23 12.94L15.05 16.45";
var mdiPoll = "M3,22V8H7V22H3M10,22V2H14V22H10M17,22V14H21V22H17Z";
var mdiPollBox = "M17,17H15V13H17M13,17H11V7H13M9,17H7V10H9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiPollBoxOutline = "M9 17H7V10H9M13 17H11V7H13M17 17H15V13H17M19.5 19.1H4.5V5H19.5M19.5 3H4.5C3.4 3 2.5 3.9 2.5 5V19C2.5 20.1 3.4 21 4.5 21H19.5C20.6 21 21.5 20.1 21.5 19V5C21.5 3.9 20.6 3 19.5 3Z";
var mdiPolo = "M22 9.5C22 10.88 20.88 12 19.5 12S17 10.88 17 9.5 18.12 7 19.5 7 22 8.12 22 9.5M11 17V3H8V17H2L6 21H13V17H11M16 17H14V21H16V17Z";
var mdiPolymer = "M19,4H15L7.1,16.63L4.5,12L9,4H5L0.5,12L5,20H9L16.89,7.37L19.5,12L15,20H19L23.5,12L19,4Z";
var mdiPool = "M2,15C3.67,14.25 5.33,13.5 7,13.17V5A3,3 0 0,1 10,2C11.31,2 12.42,2.83 12.83,4H10A1,1 0 0,0 9,5V6H14V5A3,3 0 0,1 17,2C18.31,2 19.42,2.83 19.83,4H17A1,1 0 0,0 16,5V14.94C18,14.62 20,13 22,13V15C19.78,15 17.56,17 15.33,17C13.11,17 10.89,15 8.67,15C6.44,15 4.22,16 2,17V15M14,8H9V10H14V8M14,12H9V13C10.67,13.16 12.33,14.31 14,14.79V12M2,19C4.22,18 6.44,17 8.67,17C10.89,17 13.11,19 15.33,19C17.56,19 19.78,17 22,17V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V19Z";
var mdiPopcorn = "M7,22H4.75C4.75,22 4,22 3.81,20.65L2.04,3.81L2,3.5C2,2.67 2.9,2 4,2C5.1,2 6,2.67 6,3.5C6,2.67 6.9,2 8,2C9.1,2 10,2.67 10,3.5C10,2.67 10.9,2 12,2C13.09,2 14,2.66 14,3.5V3.5C14,2.67 14.9,2 16,2C17.1,2 18,2.67 18,3.5C18,2.67 18.9,2 20,2C21.1,2 22,2.67 22,3.5L21.96,3.81L20.19,20.65C20,22 19.25,22 19.25,22H17L16.5,22H13.75L10.25,22H7.5L7,22M17.85,4.93C17.55,4.39 16.84,4 16,4C15.19,4 14.36,4.36 14,4.87L13.78,20H16.66L17.85,4.93M10,4.87C9.64,4.36 8.81,4 8,4C7.16,4 6.45,4.39 6.15,4.93L7.34,20H10.22L10,4.87Z";
var mdiPost = "M3 3V21H21V3H3M18 18H6V17H18V18M18 16H6V15H18V16M18 12H6V6H18V12Z";
var mdiPostOutline = "M19 5V19H5V5H19M21 3H3V21H21V3M17 17H7V16H17V17M17 15H7V14H17V15M17 12H7V7H17V12Z";
var mdiPostageStamp = "M2,2V5.5C3.1,5.5 4,6.62 4,8C4,9.38 3.1,10.5 2,10.5V13.5C3.1,13.5 4,14.62 4,16C4,17.38 3.1,18.5 2,18.5V22H5.5C5.5,20.9 6.62,20 8,20C9.38,20 10.5,20.9 10.5,22H13.5C13.5,20.9 14.62,20 16,20C17.38,20 18.5,20.9 18.5,22H22V18.5C20.9,18.5 20,17.38 20,16V16C20,14.62 20.9,13.5 22,13.5V10.5C20.9,10.5 20,9.38 20,8V8C20,6.62 20.9,5.5 22,5.5V2H18.5C18.5,3.1 17.38,4 16,4C14.62,4 13.5,3.1 13.5,2H10.5C10.5,3.1 9.38,4 8,4C6.62,4 5.5,3.1 5.5,2H2M6,6H18V18H6V6M9,7A2,2 0 0,0 7,9A2,2 0 0,0 9,11A2,2 0 0,0 11,9A2,2 0 0,0 9,7M17,10L14,13L12,12L7,17H17V10Z";
var mdiPot = "M19 19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V12H3V10H21V12H19V19Z";
var mdiPotMix = "M14.6 9L18 3.1L19.7 4.1L16.9 9H14.6M14 10H3V12H5V19C5 20.1 5.9 21 7 21H17C18.1 21 19 20.1 19 19V12H21V10H14Z";
var mdiPotMixOutline = "M14.6 9L18 3.1L19.7 4.1L16.9 9H14.6M16.3 10H21V12H19V19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V12H3V10H16.3M17 12H7V19H17V12Z";
var mdiPotOutline = "M3 10V12H5V19C5 20.1 5.9 21 7 21H17C18.1 21 19 20.1 19 19V12H21V10H3M7 12H17V19H7V12Z";
var mdiPotSteam = "M19 19C19 20.11 18.11 21 17 21H7C5.9 21 5 20.11 5 19V12H3V10H21V12H19M8 1.5C6.15 1.5 4.65 3 4.65 4.85C4.65 6.7 6.15 8.2 8 8.2H9.53C9.92 8.2 10.29 8.3 10.61 8.5H12.63C12.05 7.45 10.86 6.75 9.53 6.75H8C7 6.75 6.15 5.77 6.15 4.75C6.15 3.73 7 3 8 3M12.85 2C12.85 3 12 3.85 11 3.85V5.35C12.92 5.35 14.5 6.7 14.89 8.5H16.42C16.12 6.67 14.96 5.15 13.35 4.38C13.97 3.77 14.35 2.93 14.35 2Z";
var mdiPotSteamOutline = "M8 1.5C6.15 1.5 4.65 3 4.65 4.85C4.65 6.7 6.15 8.2 8 8.2H9.53C9.92 8.2 10.29 8.3 10.61 8.5H12.63C12.05 7.45 10.86 6.75 9.53 6.75H8C7 6.75 6.15 5.77 6.15 4.75C6.15 3.73 7 3 8 3V1.5M12.85 2C12.85 3 12 3.85 11 3.85V5.35C12.92 5.35 14.5 6.7 14.89 8.5H16.42C16.12 6.67 14.96 5.15 13.35 4.38C13.97 3.77 14.35 2.93 14.35 2H12.85M3 10V12H5V19C5 20.11 5.9 21 7 21H17C18.11 21 19 20.11 19 19V12H21V10H3M7 12H17V19H7V12Z";
var mdiPound = "M5.41,21L6.12,17H2.12L2.47,15H6.47L7.53,9H3.53L3.88,7H7.88L8.59,3H10.59L9.88,7H15.88L16.59,3H18.59L17.88,7H21.88L21.53,9H17.53L16.47,15H20.47L20.12,17H16.12L15.41,21H13.41L14.12,17H8.12L7.41,21H5.41M9.53,9L8.47,15H14.47L15.53,9H9.53Z";
var mdiPoundBox = "M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7,18H9L9.35,16H13.35L13,18H15L15.35,16H17.35L17.71,14H15.71L16.41,10H18.41L18.76,8H16.76L17.12,6H15.12L14.76,8H10.76L11.12,6H9.12L8.76,8H6.76L6.41,10H8.41L7.71,14H5.71L5.35,16H7.35L7,18M10.41,10H14.41L13.71,14H9.71L10.41,10Z";
var mdiPoundBoxOutline = "M19 19H5V5H19M19 3H5A2 2 0 0 0 3 5V19A2 2 0 0 0 5 21H19A2 2 0 0 0 21 19V5A2 2 0 0 0 19 3M7 9H9.31L9.63 6H11.63L11.31 9H13.31L13.63 6H15.63L15.31 9H17V11H15.1L14.9 13H17V15H14.69L14.37 18H12.37L12.69 15H10.69L10.37 18H8.37L8.69 15H7V13H8.9L9.1 11H7V9M11.1 11L10.9 13H12.9L13.1 11Z";
var mdiPower = "M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13";
var mdiPowerCycle = "M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19M13,17H11V7H13V17Z";
var mdiPowerOff = "M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19Z";
var mdiPowerOn = "M11,3H13V21H11V3Z";
var mdiPowerPlug = "M16,7V3H14V7H10V3H8V7H8C7,7 6,8 6,9V14.5L9.5,18V21H14.5V18L18,14.5V9C18,8 17,7 16,7Z";
var mdiPowerPlugOff = "M20.84 22.73L15.31 17.2L14.5 18V21H9.5V18L6 14.5V9C6 8.7 6.1 8.41 6.25 8.14L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M18 14.5V9C18 8 17 7 16 7V3H14V7H10.2L17.85 14.65L18 14.5M10 3H8V4.8L10 6.8V3Z";
var mdiPowerPlugOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L6.25 8.14C6.1 8.41 6 8.7 6 9V14.5L9.5 18V21H14.5V18L15.31 17.2L20.84 22.73L22.11 21.46M13.09 16.59L12.67 17H11.33L10.92 16.59L8 13.67V9.89L13.89 15.78L13.09 16.59M12.2 9L10.2 7H14V3H16V7C17 7 18 8 18 9V14.5L17.85 14.65L16 12.8V9.09C16 9.06 15.95 9 15.92 9H12.2M10 6.8L8 4.8V3H10V6.8Z";
var mdiPowerPlugOutline = "M16 7V3H14V7H10V3H8V7C7 7 6 8 6 9V14.5L9.5 18V21H14.5V18L18 14.5V9C18 8 17 7 16 7M16 13.67L13.09 16.59L12.67 17H11.33L10.92 16.59L8 13.67V9.09C8 9.06 8.06 9 8.09 9H15.92C15.95 9 16 9.06 16 9.09V13.67Z";
var mdiPowerSettings = "M15,24H17V22H15M16.56,4.44L15.11,5.89C16.84,6.94 18,8.83 18,11A6,6 0 0,1 12,17A6,6 0 0,1 6,11C6,8.83 7.16,6.94 8.88,5.88L7.44,4.44C5.36,5.88 4,8.28 4,11A8,8 0 0,0 12,19A8,8 0 0,0 20,11C20,8.28 18.64,5.88 16.56,4.44M13,2H11V12H13M11,24H13V22H11M7,24H9V22H7V24Z";
var mdiPowerSleep = "M18.73,18C15.4,21.69 9.71,22 6,18.64C2.33,15.31 2.04,9.62 5.37,5.93C6.9,4.25 9,3.2 11.27,3C7.96,6.7 8.27,12.39 12,15.71C13.63,17.19 15.78,18 18,18C18.25,18 18.5,18 18.73,18Z";
var mdiPowerSocket = "M15,15H17V11H15M7,15H9V11H7M11,13H13V9H11M8.83,7H15.2L19,10.8V17H5V10.8M8,5L3,10V19H21V10L16,5H8Z";
var mdiPowerSocketAu = "M4.22,2A2.22,2.22 0 0,0 2,4.22V19.78C2,21 3,22 4.22,22H19.78A2.22,2.22 0 0,0 22,19.78V4.22C22,3 21,2 19.78,2H4.22M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M8.27,7.54L6.27,11L8,12L10,8.54L8.27,7.54M15.73,7.54L14,8.54L16,12L17.73,11L15.73,7.54M11,14V18H13V14H11Z";
var mdiPowerSocketDe = "M4.22 2A2.22 2.22 0 0 0 2 4.22V19.78C2 21 3 22 4.22 22H19.78A2.22 2.22 0 0 0 22 19.78V4.22C22 3 21 2 19.78 2H4.22M11 4.07V6H13V4.07A8 8 0 0 1 20 12A8 8 0 0 1 13 19.93V18H11V19.93A8 8 0 0 1 4 12A8 8 0 0 1 11 4.07M7.5 10.5A1.5 1.5 0 0 0 6 12C6 12.83 6.66 13.5 7.5 13.5A1.5 1.5 0 0 0 9 12A1.5 1.5 0 0 0 7.5 10.5M16.5 10.5A1.5 1.5 0 0 0 15 12A1.5 1.5 0 0 0 16.5 13.5A1.5 1.5 0 0 0 18 12A1.5 1.5 0 0 0 16.5 10.5Z";
var mdiPowerSocketEu = "M7.5,10.5A1.5,1.5 0 0,1 9,12A1.5,1.5 0 0,1 7.5,13.5C6.66,13.5 6,12.83 6,12A1.5,1.5 0 0,1 7.5,10.5M16.5,10.5A1.5,1.5 0 0,1 18,12A1.5,1.5 0 0,1 16.5,13.5A1.5,1.5 0 0,1 15,12A1.5,1.5 0 0,1 16.5,10.5M4.22,2H19.78C21,2 22,3 22,4.22V19.78A2.22,2.22 0 0,1 19.78,22H4.22C3,22 2,21 2,19.78V4.22A2.22,2.22 0 0,1 4.22,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiPowerSocketFr = "M4.22 2A2.22 2.22 0 0 0 2 4.22V19.78C2 21 3 22 4.22 22H19.78A2.22 2.22 0 0 0 22 19.78V4.22C22 3 21 2 19.78 2H4.22M12 4A8 8 0 0 1 20 12A8 8 0 0 1 12 20A8 8 0 0 1 4 12A8 8 0 0 1 12 4M12 6A1.5 1.5 0 0 0 10.5 7.5A1.5 1.5 0 0 0 12 9A1.5 1.5 0 0 0 13.5 7.5A1.5 1.5 0 0 0 12 6M7.5 10.5A1.5 1.5 0 0 0 6 12C6 12.83 6.66 13.5 7.5 13.5A1.5 1.5 0 0 0 9 12A1.5 1.5 0 0 0 7.5 10.5M16.5 10.5A1.5 1.5 0 0 0 15 12A1.5 1.5 0 0 0 16.5 13.5A1.5 1.5 0 0 0 18 12A1.5 1.5 0 0 0 16.5 10.5Z";
var mdiPowerSocketIt = "M10.5 16.5C10.5 15.68 11.17 15 12 15C12.83 15 13.5 15.68 13.5 16.5C13.5 17.34 12.83 18 12 18C11.17 18 10.5 17.34 10.5 16.5M10.5 7.5C10.5 6.67 11.17 6 12 6C12.83 6 13.5 6.67 13.5 7.5C13.5 8.33 12.83 9 12 9C11.17 9 10.5 8.33 10.5 7.5M4.22 2H19.78C21 2 22 3 22 4.22V19.78C22 21 21 22 19.78 22H4.22C3 22 2 21 2 19.78V4.22C2 3 3 2 4.22 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M10.5 12C10.5 11.17 11.17 10.5 12 10.5C12.83 10.5 13.5 11.17 13.5 12C13.5 12.83 12.83 13.5 12 13.5C11.17 13.5 10.5 12.83 10.5 12Z";
var mdiPowerSocketJp = "M10 9.5V14.5H8V9.5M19.78 2C21 2 22 3 22 4.22V19.78C22 21 21 22 19.78 22H4.22C3 22 2 21 2 19.78V4.22C2 3 3 2 4.22 2M12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12C20 7.58 16.42 4 12 4M16 9.5V14.5H14V9.5Z";
var mdiPowerSocketUk = "M4 2A2 2 0 0 0 2 4V20A2 2 0 0 0 4 22H20A2 2 0 0 0 22 20V4A2 2 0 0 0 20 2H4M4 4H20V20H4V4M11 7V11H13V7H11M6 14.75V17H9.5V14.75H6M14.5 14.75V17H18V14.75H14.5Z";
var mdiPowerSocketUs = "M8,7H10V12H8V7M4.22,2H19.78C21,2 22,3 22,4.22V19.78A2.22,2.22 0 0,1 19.78,22H4.22C3,22 2,21 2,19.78V4.22A2.22,2.22 0 0,1 4.22,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M14,7.5H16V11.5H14V7.5M10.5,16.25A1.5,1.5 0 0,1 12,14.75A1.5,1.5 0 0,1 13.5,16.25V17H10.5V16.25Z";
var mdiPowerStandby = "M13,3H11V13H13V3M17.83,5.17L16.41,6.59C18.05,7.91 19,9.9 19,12A7,7 0 0,1 12,19C8.14,19 5,15.88 5,12C5,9.91 5.95,7.91 7.58,6.58L6.17,5.17C2.38,8.39 1.92,14.07 5.14,17.86C8.36,21.64 14.04,22.1 17.83,18.88C19.85,17.17 21,14.65 21,12C21,9.37 19.84,6.87 17.83,5.17Z";
var mdiPowershell = "M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z";
var mdiPrescription = "M4,4V10L4,14H6V10H8L13.41,15.41L9.83,19L11.24,20.41L14.83,16.83L18.41,20.41L19.82,19L16.24,15.41L19.82,11.83L18.41,10.41L14.83,14L10.83,10H11A3,3 0 0,0 14,7A3,3 0 0,0 11,4H4M6,6H11A1,1 0 0,1 12,7A1,1 0 0,1 11,8H6V6Z";
var mdiPresentation = "M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5Z";
var mdiPresentationPlay = "M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5M11.85,11.85C11.76,11.94 11.64,12 11.5,12A0.5,0.5 0 0,1 11,11.5V7.5A0.5,0.5 0 0,1 11.5,7C11.64,7 11.76,7.06 11.85,7.15L13.25,8.54C13.57,8.86 13.89,9.18 13.89,9.5C13.89,9.82 13.57,10.14 13.25,10.46L11.85,11.85Z";
var mdiPretzel = "M5.15 15.84C3.81 14.27 3 12.23 3 10V9.97C3 7.22 5.25 5 8 5C9.64 5 11.09 5.79 12 7C12.91 5.79 14.37 5 16 5C18.76 5 21 7.24 21 10C21 12.23 20.19 14.27 18.85 15.84L20.21 17.2L18.79 18.61L17.39 17.21C15.89 18.33 14 19 12 19C10 19 8.11 18.33 6.61 17.21L5.21 18.61L3.79 17.2L5.15 15.84M15.96 15.77L12 11.82L8.04 15.77C9.17 16.55 10.53 17 12 17C13.47 17 14.83 16.55 15.96 15.77M11 10C11 8.34 9.65 7 8 7C6.34 7 5 8.34 5 10C5 11.68 5.59 13.21 6.57 14.42L11 10M17.43 14.42C18.41 13.21 19 11.68 19 10V10C19 8.33 17.65 7 16 7C14.35 7 13 8.34 13 10L17.43 14.42Z";
var mdiPrinter = "M18,3H6V7H18M19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12M16,19H8V14H16M19,8H5A3,3 0 0,0 2,11V17H6V21H18V17H22V11A3,3 0 0,0 19,8Z";
var mdiPrinter3d = "M19,6A1,1 0 0,0 20,5A1,1 0 0,0 19,4A1,1 0 0,0 18,5A1,1 0 0,0 19,6M19,2A3,3 0 0,1 22,5V11H18V7H6V11H2V5A3,3 0 0,1 5,2H19M18,18.25C18,18.63 17.79,18.96 17.47,19.13L12.57,21.82C12.4,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L6.53,19.13C6.21,18.96 6,18.63 6,18.25V13C6,12.62 6.21,12.29 6.53,12.12L11.43,9.68C11.59,9.56 11.79,9.5 12,9.5C12.21,9.5 12.4,9.56 12.57,9.68L17.47,12.12C17.79,12.29 18,12.62 18,13V18.25M12,11.65L9.04,13L12,14.6L14.96,13L12,11.65M8,17.66L11,19.29V16.33L8,14.71V17.66M16,17.66V14.71L13,16.33V19.29L16,17.66Z";
var mdiPrinter3dNozzle = "M7,2H17V8H19V13H16.5L13,17H11L7.5,13H5V8H7V2M10,22H2V20H10A1,1 0 0,0 11,19V18H13V19A3,3 0 0,1 10,22Z";
var mdiPrinter3dNozzleAlert = "M7 2H17V8H19V13H16.5L13 17H11L7.5 13H5V8H7V2M10 22H2V20H10C10.6 20 11 19.5 11 19V18H13V19C13 20.7 11.7 22 10 22M21 13V7H23V13H21M21 17V15H23V17H21Z";
var mdiPrinter3dNozzleAlertOutline = "M7 2H17V7H19V13H16.5L13 17H11L7.5 13H5V7H7V2M10 22H2V20H10C10.6 20 11 19.5 11 19V18H13V19C13 20.7 11.7 22 10 22M7 9V11H8.5L12 15L15.5 11H17V9H15V4H9V9H7M21 13V7H23V13H21M21 17V15H23V17H21Z";
var mdiPrinter3dNozzleOutline = "M7,2H17V7H19V13H16.5L13,17H11L7.5,13H5V7H7V2M10,22H2V20H10A1,1 0 0,0 11,19V18H13V19A3,3 0 0,1 10,22M7,9V11H8.5L12,15L15.5,11H17V9H15V4H9V9H7Z";
var mdiPrinterAlert = "M16 3H4V7H16M17 12C16.4 12 16 11.6 16 11S16.4 10 17 10 18 10.4 18 11 17.6 12 17 12M14 19H6V14H14M17 8H3C1.3 8 0 9.3 0 11V17H4V21H16V17H20V11C20 9.3 18.7 8 17 8M24 13H22V7H24V13M24 17H22V15H24V17Z";
var mdiPrinterCheck = "M18 7H6V3H18V7M6 21V17H2V11C2 9.34 3.34 8 5 8H19C20.66 8 22 9.34 22 11V13.81C21.12 13.3 20.1 13 19 13C17.77 13 16.64 13.37 15.69 14H8V19H13C13 19.7 13.13 20.37 13.35 21H6M18 11C18 11.55 18.45 12 19 12S20 11.55 20 11 19.55 10 19 10 18 10.45 18 11M23.5 17L22 15.5L18.5 19L16.5 17L15 18.5L18.5 22L23.5 17";
var mdiPrinterEye = "M9.8 21C9.6 20.6 9.3 20.2 9.2 19.7L8.8 19H8V14H13C14.2 13.4 15.6 13 17 13C18.9 13 20.6 13.6 22 14.6V11C22 9.3 20.7 8 19 8H5C3.3 8 2 9.3 2 11V17H6V21H9.8M19 10C19.6 10 20 10.4 20 11S19.6 12 19 12 18 11.6 18 11 18.4 10 19 10M18 7H6V3H18V7M17 18C17.6 18 18 18.4 18 19S17.6 20 17 20 16 19.6 16 19 16.4 18 17 18M17 15C14.3 15 11.9 16.7 11 19C11.9 21.3 14.3 23 17 23S22.1 21.3 23 19C22.1 16.7 19.7 15 17 15M17 21.5C15.6 21.5 14.5 20.4 14.5 19S15.6 16.5 17 16.5 19.5 17.6 19.5 19 18.4 21.5 17 21.5Z";
var mdiPrinterOff = "M6,3V4.18L8.82,7H18V3H6M2.28,3L1,4.27L4.75,8C3.19,8.15 2,9.44 2,11V17H6V21H17.73L19.73,23L21,21.72L2.28,3M9.82,8L18.82,17H22V11A3,3 0 0,0 19,8H9.82M19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10M8,14H10.73L15.73,19H8V14Z";
var mdiPrinterPos = "M18 10H6A2 2 0 0 0 4 12V19H20V12A2 2 0 0 0 18 10M18 14H14V12H18M17 9H7V4H17Z";
var mdiPrinterSearch = "M20.3 18.9C20.7 18.2 21 17.4 21 16.5C21 14 19 12 16.5 12S12 14 12 16.5 14 21 16.5 21C17.4 21 18.2 20.8 18.9 20.3L22 23.4L23.4 22L20.3 18.9M16.5 19C15.1 19 14 17.9 14 16.5S15.1 14 16.5 14 19 15.1 19 16.5 17.9 19 16.5 19M18 7H6V3H18V7M6 21V17H2V11C2 9.3 3.3 8 5 8H19C20.7 8 22 9.3 22 11V13C20.8 11.2 18.8 10 16.5 10C13.8 10 11.5 11.7 10.5 14H8V19H10.5C10.8 19.7 11.3 20.4 11.8 21H6Z";
var mdiPrinterSettings = "M18,2V6H6V2H18M19,11A1,1 0 0,0 20,10A1,1 0 0,0 19,9A1,1 0 0,0 18,10A1,1 0 0,0 19,11M16,18V13H8V18H16M19,7A3,3 0 0,1 22,10V16H18V20H6V16H2V10A3,3 0 0,1 5,7H19M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z";
var mdiPrinterWireless = "M4.93,3.92L6.34,5.33C9.46,2.2 14.53,2.2 17.66,5.33L19.07,3.92C15.17,0 8.84,0 4.93,3.92M7.76,6.75L9.17,8.16C10.73,6.6 13.26,6.6 14.83,8.16L16.24,6.75C13.9,4.41 10.1,4.41 7.76,6.75M19,14A1,1 0 0,1 18,13A1,1 0 0,1 19,12A1,1 0 0,1 20,13A1,1 0 0,1 19,14M16,20H8V15H16V20M19,10H5A3,3 0 0,0 2,13V18H6V22H18V18H22V13A3,3 0 0,0 19,10Z";
var mdiPriorityHigh = "M14,19H22V17H14V19M14,13.5H22V11.5H14V13.5M14,8H22V6H14V8M2,12.5C2,8.92 4.92,6 8.5,6H9V4L12,7L9,10V8H8.5C6,8 4,10 4,12.5C4,15 6,17 8.5,17H12V19H8.5C4.92,19 2,16.08 2,12.5Z";
var mdiPriorityLow = "M14,5H22V7H14V5M14,10.5H22V12.5H14V10.5M14,16H22V18H14V16M2,11.5C2,15.08 4.92,18 8.5,18H9V20L12,17L9,14V16H8.5C6,16 4,14 4,11.5C4,9 6,7 8.5,7H12V5H8.5C4.92,5 2,7.92 2,11.5Z";
var mdiProfessionalHexagon = "M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M5,9V15H6.25V13H7A2,2 0 0,0 9,11A2,2 0 0,0 7,9H5M6.25,12V10H6.75A1,1 0 0,1 7.75,11A1,1 0 0,1 6.75,12H6.25M9.75,9V15H11V13H11.75L12.41,15H13.73L12.94,12.61C13.43,12.25 13.75,11.66 13.75,11A2,2 0 0,0 11.75,9H9.75M11,12V10H11.5A1,1 0 0,1 12.5,11A1,1 0 0,1 11.5,12H11M17,9C15.62,9 14.5,10.34 14.5,12C14.5,13.66 15.62,15 17,15C18.38,15 19.5,13.66 19.5,12C19.5,10.34 18.38,9 17,9M17,10.25C17.76,10.25 18.38,11.03 18.38,12C18.38,12.97 17.76,13.75 17,13.75C16.24,13.75 15.63,12.97 15.63,12C15.63,11.03 16.24,10.25 17,10.25Z";
var mdiProgressAlert = "M13,2V4C17.39,4.54 20.5,8.53 19.96,12.92C19.5,16.56 16.64,19.43 13,19.88V21.88C18.5,21.28 22.45,16.34 21.85,10.85C21.33,6.19 17.66,2.5 13,2M11,2C9.04,2.18 7.19,2.95 5.67,4.2L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.24,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.06,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37H7.06M13,13V7H11V13H13M13,17V15H11V17H13Z";
var mdiProgressCheck = "M13,2.03V2.05L13,4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03M11,2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M15.5,8.5L10.62,13.38L8.5,11.26L7.44,12.32L10.62,15.5L16.56,9.56L15.5,8.5M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.1,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37Z";
var mdiProgressClock = "M13,2.03V2.05L13,4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03M11,2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.1,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z";
var mdiProgressClose = "M13 2.03V4.05C17.39 4.59 20.5 8.58 19.96 12.97C19.5 16.61 16.64 19.5 13 19.93V21.93C18.5 21.38 22.5 16.5 21.95 11C21.5 6.25 17.73 2.5 13 2.03M11 2.06C9.05 2.25 7.19 3 5.67 4.26L7.1 5.74C8.22 4.84 9.57 4.26 11 4.06V2.06M4.26 5.67C3 7.19 2.25 9.04 2.05 11H4.05C4.24 9.58 4.8 8.23 5.69 7.1L4.26 5.67M2.06 13C2.26 14.96 3.03 16.81 4.27 18.33L5.69 16.9C4.81 15.77 4.24 14.42 4.06 13H2.06M7.1 18.37L5.67 19.74C7.18 21 9.04 21.79 11 22V20C9.58 19.82 8.23 19.25 7.1 18.37M14.59 8L12 10.59L9.41 8L8 9.41L10.59 12L8 14.59L9.41 16L12 13.41L14.59 16L16 14.59L13.41 12L16 9.41L14.59 8Z";
var mdiProgressDownload = "M13,2.03C17.73,2.5 21.5,6.25 21.95,11C22.5,16.5 18.5,21.38 13,21.93V19.93C16.64,19.5 19.5,16.61 19.96,12.97C20.5,8.58 17.39,4.59 13,4.05V2.05L13,2.03M11,2.06V4.06C9.57,4.26 8.22,4.84 7.1,5.74L5.67,4.26C7.19,3 9.05,2.25 11,2.06M4.26,5.67L5.69,7.1C4.8,8.23 4.24,9.58 4.05,11H2.05C2.25,9.04 3,7.19 4.26,5.67M2.06,13H4.06C4.24,14.42 4.81,15.77 5.69,16.9L4.27,18.33C3.03,16.81 2.26,14.96 2.06,13M7.1,18.37C8.23,19.25 9.58,19.82 11,20V22C9.04,21.79 7.18,21 5.67,19.74L7.1,18.37M12,16.5L7.5,12H11V8H13V12H16.5L12,16.5Z";
var mdiProgressQuestion = "M13 2.03V4.05C17.39 4.59 20.5 8.58 19.96 12.97C19.5 16.61 16.64 19.5 13 19.93V21.93C18.5 21.38 22.5 16.5 21.95 11C21.5 6.25 17.73 2.5 13 2.03M11 2.06C9.05 2.25 7.19 3 5.67 4.26L7.1 5.74C8.22 4.84 9.57 4.26 11 4.06V2.06M4.26 5.67C3 7.19 2.25 9.04 2.05 11H4.05C4.24 9.58 4.8 8.23 5.69 7.1L4.26 5.67M2.06 13C2.26 14.96 3.03 16.81 4.27 18.33L5.69 16.9C4.81 15.77 4.24 14.42 4.06 13H2.06M7.1 18.37L5.67 19.74C7.18 21 9.04 21.79 11 22V20C9.58 19.82 8.23 19.25 7.1 18.37M20 4H44M13 18H11V16H13V18M13 15H11C11 11.75 14 12 14 10C14 8.9 13.1 8 12 8S10 8.9 10 10H8C8 7.79 9.79 6 12 6S16 7.79 16 10C16 12.5 13 12.75 13 15Z";
var mdiProgressUpload = "M13,2.03C17.73,2.5 21.5,6.25 21.95,11C22.5,16.5 18.5,21.38 13,21.93V19.93C16.64,19.5 19.5,16.61 19.96,12.97C20.5,8.58 17.39,4.59 13,4.05V2.05L13,2.03M11,2.06V4.06C9.57,4.26 8.22,4.84 7.1,5.74L5.67,4.26C7.19,3 9.05,2.25 11,2.06M4.26,5.67L5.69,7.1C4.8,8.23 4.24,9.58 4.05,11H2.05C2.25,9.04 3,7.19 4.26,5.67M2.06,13H4.06C4.24,14.42 4.81,15.77 5.69,16.9L4.27,18.33C3.03,16.81 2.26,14.96 2.06,13M7.1,18.37C8.23,19.25 9.58,19.82 11,20V22C9.04,21.79 7.18,21 5.67,19.74L7.1,18.37M12,7.5L7.5,12H11V16H13V12H16.5L12,7.5Z";
var mdiProgressWrench = "M13,2.03V2.05L13,4.05C17.39,4.59 20.5,8.58 19.96,12.97C19.5,16.61 16.64,19.5 13,19.93V21.93C18.5,21.38 22.5,16.5 21.95,11C21.5,6.25 17.73,2.5 13,2.03M11,2.06C9.05,2.25 7.19,3 5.67,4.26L7.1,5.74C8.22,4.84 9.57,4.26 11,4.06V2.06M4.26,5.67C3,7.19 2.25,9.04 2.05,11H4.05C4.24,9.58 4.8,8.23 5.69,7.1L4.26,5.67M2.06,13C2.26,14.96 3.03,16.81 4.27,18.33L5.69,16.9C4.81,15.77 4.24,14.42 4.06,13H2.06M7.1,18.37L5.67,19.74C7.18,21 9.04,21.79 11,22V20C9.58,19.82 8.23,19.25 7.1,18.37M16.82,15.19L12.71,11.08C13.12,10.04 12.89,8.82 12.03,7.97C11.13,7.06 9.78,6.88 8.69,7.38L10.63,9.32L9.28,10.68L7.29,8.73C6.75,9.82 7,11.17 7.88,12.08C8.74,12.94 9.96,13.16 11,12.76L15.11,16.86C15.29,17.05 15.56,17.05 15.74,16.86L16.78,15.83C17,15.65 17,15.33 16.82,15.19Z";
var mdiProjector = "M16,6C14.87,6 13.77,6.35 12.84,7H4C2.89,7 2,7.89 2,9V15C2,16.11 2.89,17 4,17H5V18A1,1 0 0,0 6,19H8A1,1 0 0,0 9,18V17H15V18A1,1 0 0,0 16,19H18A1,1 0 0,0 19,18V17H20C21.11,17 22,16.11 22,15V9C22,7.89 21.11,7 20,7H19.15C18.23,6.35 17.13,6 16,6M16,7.5A3.5,3.5 0 0,1 19.5,11A3.5,3.5 0 0,1 16,14.5A3.5,3.5 0 0,1 12.5,11A3.5,3.5 0 0,1 16,7.5M4,9H8V10H4V9M16,9A2,2 0 0,0 14,11A2,2 0 0,0 16,13A2,2 0 0,0 18,11A2,2 0 0,0 16,9M4,11H8V12H4V11M4,13H8V14H4V13Z";
var mdiProjectorScreen = "M4,2A1,1 0 0,0 3,3V4A1,1 0 0,0 4,5H5V14H11V16.59L6.79,20.79L8.21,22.21L11,19.41V22H13V19.41L15.79,22.21L17.21,20.79L13,16.59V14H19V5H20A1,1 0 0,0 21,4V3A1,1 0 0,0 20,2H4Z";
var mdiProjectorScreenOutline = "M20 2H4C3.45 2 3 2.45 3 3V4C3 4.55 3.45 5 4 5H5V14H11V16.59L6.79 20.79L8.21 22.21L11 19.41V22H13V19.41L15.79 22.21L17.21 20.79L13 16.59V14H19V5H20C20.55 5 21 4.55 21 4V3C21 2.45 20.55 2 20 2M17 12H7V5H17V12Z";
var mdiPropaneTank = "M16 6H16V4C16 2.9 15.11 2 14 2H10C8.9 2 8 2.9 8 4V6H8C5.79 6 4 7.79 4 10V17C4 18.86 5.28 20.41 7 20.86V22H17V20.86C18.72 20.42 20 18.86 20 17V10C20 7.79 18.21 6 16 6M10 4H14V6H10V4Z";
var mdiPropaneTankOutline = "M16 6V4C16 2.9 15.11 2 14 2H10C8.9 2 8 2.9 8 4V6C5.79 6 4 7.79 4 10V17C4 18.86 5.28 20.41 7 20.86V22H17V20.86C18.72 20.42 20 18.86 20 17V10C20 7.79 18.21 6 16 6M10 4H14V6H10V4M18 17C18 18.1 17.1 19 16 19H8C6.9 19 6 18.1 6 17V10C6 8.9 6.9 8 8 8H16C17.1 8 18 8.9 18 10V17Z";
var mdiProtocol = "M18 20H14L18 4H22M16 4H12L8 20H12M2 16.5A2.5 2.5 0 0 0 4.5 19A2.5 2.5 0 0 0 7 16.5A2.5 2.5 0 0 0 4.5 14A2.5 2.5 0 0 0 2 16.5M2 9.5A2.5 2.5 0 0 0 4.5 12A2.5 2.5 0 0 0 7 9.5A2.5 2.5 0 0 0 4.5 7A2.5 2.5 0 0 0 2 9.5Z";
var mdiPublish = "M5,4V6H19V4H5M5,14H9V20H15V14H19L12,7L5,14Z";
var mdiPulse = "M3,13H5.79L10.1,4.79L11.28,13.75L14.5,9.66L17.83,13H21V15H17L14.67,12.67L9.92,18.73L8.94,11.31L7,15H3V13Z";
var mdiPump = "M2 21V15H3.5C3.18 14.06 3 13.05 3 12C3 7.03 7.03 3 12 3H22V9H20.5C20.82 9.94 21 10.95 21 12C21 16.97 16.97 21 12 21H2M5 12C5 13.28 5.34 14.47 5.94 15.5L9.4 13.5C9.15 13.06 9 12.55 9 12C9 11.35 9.21 10.75 9.56 10.26L6.3 7.93C5.5 9.08 5 10.5 5 12M12 19C14.59 19 16.85 17.59 18.06 15.5L14.6 13.5C14.08 14.4 13.11 15 12 15L11.71 15L11.33 18.97L12 19M12 9C13.21 9 14.26 9.72 14.73 10.76L18.37 9.1C17.27 6.68 14.83 5 12 5V9M12 11C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13C12.55 13 13 12.55 13 12C13 11.45 12.55 11 12 11Z";
var mdiPumpkin = "M6.5,6C7.47,6 8.37,6.5 9.11,7.38C9.66,6.79 10.31,6.36 11,6.15V4A2,2 0 0,1 13,2H15V4H13V6.15C13.69,6.36 14.34,6.79 14.89,7.38C15.63,6.5 16.53,6 17.5,6C20,6 22,9.36 22,13.5C22,17.64 20,21 17.5,21C16.53,21 15.63,20.5 14.89,19.62C14.08,20.5 13.08,21 12,21C10.92,21 9.92,20.5 9.11,19.62C8.37,20.5 7.47,21 6.5,21C4,21 2,17.64 2,13.5C2,9.36 4,6 6.5,6Z";
var mdiPurse = "M22,19.1L21,10.5A1.65,1.65 0 0,0 19.3,9H16V5L14,3H10L8,5V9H4.7A1.65,1.65 0 0,0 3,10.5L2,19.1A1.74,1.74 0 0,0 3.7,21H20.3A1.74,1.74 0 0,0 22,19.1M10,5H14V9H10";
var mdiPurseOutline = "M19,11L20,19H4L5,11H19M14,3H10L8,5V9H4.7A1.65,1.65 0 0,0 3,10.5L2,19.1A1.74,1.74 0 0,0 3.7,21H20.3A1.74,1.74 0 0,0 22,19.1L21,10.5A1.65,1.65 0 0,0 19.3,9H16V5L14,3M10,9V5H14V9";
var mdiPuzzle = "M20.5,11H19V7C19,5.89 18.1,5 17,5H13V3.5A2.5,2.5 0 0,0 10.5,1A2.5,2.5 0 0,0 8,3.5V5H4A2,2 0 0,0 2,7V10.8H3.5C5,10.8 6.2,12 6.2,13.5C6.2,15 5,16.2 3.5,16.2H2V20A2,2 0 0,0 4,22H7.8V20.5C7.8,19 9,17.8 10.5,17.8C12,17.8 13.2,19 13.2,20.5V22H17A2,2 0 0,0 19,20V16H20.5A2.5,2.5 0 0,0 23,13.5A2.5,2.5 0 0,0 20.5,11Z";
var mdiPuzzleCheck = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M20.5 11C21.88 11 23 12.12 23 13.5C23 13.81 22.94 14.11 22.84 14.39C21.8 13.5 20.46 13 19 13C15.69 13 13 15.69 13 19V19.54C12.64 18.5 11.65 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.1 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.89 2.9 5 4 5H8V3.5C8 2.12 9.12 .998 10.5 .998S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5";
var mdiPuzzleCheckOutline = "M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M22 13.5L22 13.8C21.37 13.44 20.67 13.19 19.94 13.07C19.75 12.45 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4C9.67 4 9 4.67 9 5.5V7H4L4 9.12C5.76 9.8 7 11.5 7 13.5C7 15.5 5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.8L13 19C13 20.09 13.29 21.12 13.8 22H13.2V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.1 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5C5 12 3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2C12.26 2 13.72 3.3 13.96 5H17C18.1 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5Z";
var mdiPuzzleEdit = "M21.04 12.13C20.9 12.13 20.76 12.19 20.65 12.3L19.65 13.3L21.7 15.35L22.7 14.35C22.92 14.14 22.92 13.79 22.7 13.58L21.42 12.3C21.31 12.19 21.18 12.13 21.04 12.13M19.07 13.88L13 19.94V22H15.06L21.12 15.93L19.07 13.88M19 11.12L11.91 18.2C11.5 17.95 11 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11.12Z";
var mdiPuzzleEditOutline = "M21.04 12.13C20.9 12.13 20.76 12.19 20.65 12.3L19.65 13.3L21.7 15.35L22.7 14.35C22.92 14.14 22.92 13.79 22.7 13.58L21.42 12.3C21.31 12.19 21.18 12.13 21.04 12.13M19.07 13.88L13 19.94V22H15.06L21.12 15.93L19.07 13.88M11.05 19.06C10.87 19 10.69 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C19.36 10.09 19.69 10.21 20 10.36C19.73 10.5 19.46 10.66 19.24 10.89L18.12 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.26 17 12 17.18 12.61 17.5L11.05 19.06Z";
var mdiPuzzleHeart = "M19 22.3L18.4 21.8C16.4 19.9 15 18.7 15 17.2C15 16 16 15 17.2 15C17.9 15 18.6 15.3 19 15.8C19.4 15.3 20.1 15 20.8 15C22 15 23 15.9 23 17.2C23 18.7 21.6 19.9 19.6 21.8L19 22.3M20.5 11H19V7C19 5.89 18.1 5 17 5H13V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4C2.9 5 2 5.9 2 7V10.8H3.5C5 10.8 6.2 12 6.2 13.5S5 16.2 3.5 16.2H2V20C2 21.11 2.9 22 4 22H7.8V20.5C7.8 19 9 17.8 10.5 17.8C11.44 17.8 12.27 18.27 12.75 19H13.09C13.04 18.67 13 18.34 13 18C13 14.69 15.69 12 19 12C20.54 12 21.94 12.58 23 13.53C23 13.5 23 13.5 23 13.5C23 12.12 21.88 11 20.5 11Z";
var mdiPuzzleHeartOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.45 10.25 21.61 11.34 21.91 12.76C21.05 12.28 20.06 12 19 12C18.89 12 18.78 12 18.67 12C18.61 12 18.56 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.43 17 12.29 17.28 13 17.74C13 17.83 13 17.91 13 18C13 19.54 13.58 20.94 14.54 22H13.2M19 22.3L19.6 21.8C21.6 19.9 23 18.7 23 17.2C23 15.9 22 15 20.8 15C20.1 15 19.4 15.3 19 15.8C18.6 15.3 17.9 15 17.2 15C16 15 15 16 15 17.2C15 18.7 16.4 19.9 18.4 21.8L19 22.3";
var mdiPuzzleMinus = "M13.04 19.61C12.67 18.55 11.68 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5C23 13.82 22.94 14.12 22.83 14.39C21.79 13.53 20.46 13 19 13C15.69 13 13 15.69 13 19C13 19.2 13 19.41 13.04 19.61M15 18V20H23V18H15Z";
var mdiPuzzleMinusOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5C22 13.6 22 13.7 21.97 13.79C21.35 13.44 20.67 13.2 19.93 13.08C19.75 12.46 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.81C13.04 18.19 13 18.59 13 19C13 20.1 13.3 21.12 13.81 22H13.2M15 18V20H23V18H15Z";
var mdiPuzzleOutline = "M22,13.5C22,15.26 20.7,16.72 19,16.96V20A2,2 0 0,1 17,22H13.2V21.7A2.7,2.7 0 0,0 10.5,19C9,19 7.8,20.21 7.8,21.7V22H4A2,2 0 0,1 2,20V16.2H2.3C3.79,16.2 5,15 5,13.5C5,12 3.79,10.8 2.3,10.8H2V7A2,2 0 0,1 4,5H7.04C7.28,3.3 8.74,2 10.5,2C12.26,2 13.72,3.3 13.96,5H17A2,2 0 0,1 19,7V10.04C20.7,10.28 22,11.74 22,13.5M17,15H18.5A1.5,1.5 0 0,0 20,13.5A1.5,1.5 0 0,0 18.5,12H17V7H12V5.5A1.5,1.5 0 0,0 10.5,4A1.5,1.5 0 0,0 9,5.5V7H4V9.12C5.76,9.8 7,11.5 7,13.5C7,15.5 5.75,17.2 4,17.88V20H6.12C6.8,18.25 8.5,17 10.5,17C12.5,17 14.2,18.25 14.88,20H17V15Z";
var mdiPuzzlePlus = "M13.04 19.61C12.67 18.55 11.68 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5C23 13.82 22.94 14.12 22.83 14.39C21.79 13.53 20.46 13 19 13C15.69 13 13 15.69 13 19C13 19.2 13 19.41 13.04 19.61M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z";
var mdiPuzzlePlusOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5C22 13.6 22 13.7 21.97 13.79C21.35 13.44 20.67 13.2 19.93 13.08C19.75 12.46 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.81C13.04 18.19 13 18.59 13 19C13 20.1 13.3 21.12 13.81 22H13.2M18 15V18H15V20H18V23H20V20H23V18H20V15H18Z";
var mdiPuzzleRemove = "M13.04 19.61C12.67 18.55 11.68 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5C23 13.82 22.94 14.12 22.83 14.39C21.79 13.53 20.46 13 19 13C15.69 13 13 15.69 13 19C13 19.2 13 19.41 13.04 19.61M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z";
var mdiPuzzleRemoveOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.7 10.28 22 11.74 22 13.5C22 13.6 22 13.7 21.97 13.79C21.35 13.44 20.67 13.2 19.93 13.08C19.75 12.46 19.18 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.47 17 12.37 17.3 13.12 17.81C13.04 18.19 13 18.59 13 19C13 20.1 13.3 21.12 13.81 22H13.2M21.12 15.46L19 17.59L16.88 15.46L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z";
var mdiPuzzleStar = "M19 20.09L21.45 21.58L20.8 18.77L23 16.89L20.11 16.64L19 14L17.87 16.64L15 16.89L17.18 18.77L16.5 21.58L19 20.09M23 13.5C23 13.5 23 13.5 23 13.53C21.94 12.58 20.54 12 19 12C15.69 12 13 14.69 13 18C13 18.34 13.04 18.67 13.09 19H12.75C12.27 18.27 11.44 17.8 10.5 17.8C9 17.8 7.8 19 7.8 20.5V22H4C2.9 22 2 21.11 2 20V16.2H3.5C5 16.2 6.2 15 6.2 13.5S5 10.8 3.5 10.8H2V7C2 5.9 2.9 5 4 5H8V3.5C8 2.12 9.12 1 10.5 1S13 2.12 13 3.5V5H17C18.1 5 19 5.89 19 7V11H20.5C21.88 11 23 12.12 23 13.5Z";
var mdiPuzzleStarOutline = "M13.2 22V21.7C13.2 20.21 12 19 10.5 19C9 19 7.8 20.21 7.8 21.7V22H4C2.9 22 2 21.11 2 20V16.2H2.3C3.79 16.2 5 15 5 13.5S3.79 10.8 2.3 10.8H2V7C2 5.9 2.9 5 4 5H7.04C7.28 3.3 8.74 2 10.5 2S13.72 3.3 13.96 5H17C18.11 5 19 5.9 19 7V10.04C20.45 10.25 21.61 11.34 21.91 12.76C21.05 12.28 20.06 12 19 12C18.89 12 18.78 12 18.67 12C18.61 12 18.56 12 18.5 12H17V7H12V5.5C12 4.67 11.33 4 10.5 4S9 4.67 9 5.5V7H4V9.12C5.76 9.8 7 11.5 7 13.5S5.75 17.2 4 17.88V20H6.12C6.8 18.25 8.5 17 10.5 17C11.43 17 12.29 17.28 13 17.74C13 17.83 13 17.91 13 18C13 19.54 13.58 20.94 14.54 22H13.2M19 20.09L16.5 21.58L17.18 18.77L15 16.89L17.87 16.64L19 14L20.11 16.64L23 16.89L20.8 18.77L21.45 21.58L19 20.09";
var mdiQi = "M12.09,6.56V14.64C12.09,14.72 12,14.79 11.94,14.79C9.62,14.79 7.75,12.91 7.75,10.6C7.75,8.28 9.62,6.4 11.94,6.4C12,6.4 12.09,6.47 12.09,6.56M12.09,17.86V20.29C12.06,21.69 13.12,22.87 14.5,23C14.66,23 14.78,22.89 14.79,22.73V4.47C14.78,4.3 14.68,4.15 14.5,4.09C10.92,2.67 6.86,4.44 5.44,8.03C4,11.63 5.79,15.69 9.38,17.11C10.16,17.42 11,17.58 11.81,17.6C11.95,17.59 12.07,17.71 12.08,17.87M16.19,5.5V15.72C16.19,16 16.19,16.2 16.46,16V16C19.42,13.5 19.81,9.09 17.33,6.13C17.07,5.81 16.77,5.5 16.46,5.26C16.19,5.05 16.19,5.26 16.19,5.53M14.79,2.43C14.79,1.66 15.42,1.03 16.19,1.03C16.96,1.03 17.59,1.66 17.59,2.43C17.59,3.2 16.96,3.83 16.19,3.83V3.83C15.42,3.83 14.79,3.2 14.79,2.43";
var mdiQqchat = "M3.18,13.54C3.76,12.16 4.57,11.14 5.17,10.92C5.16,10.12 5.31,9.62 5.56,9.22C5.56,9.19 5.5,8.86 5.72,8.45C5.87,4.85 8.21,2 12,2C15.79,2 18.13,4.85 18.28,8.45C18.5,8.86 18.44,9.19 18.44,9.22C18.69,9.62 18.84,10.12 18.83,10.92C19.43,11.14 20.24,12.16 20.82,13.55C21.57,15.31 21.69,17 21.09,17.3C20.68,17.5 20.03,17 19.42,16.12C19.18,17.1 18.58,18 17.73,18.71C18.63,19.04 19.21,19.58 19.21,20.19C19.21,21.19 17.63,22 15.69,22C13.93,22 12.5,21.34 12.21,20.5H11.79C11.5,21.34 10.07,22 8.31,22C6.37,22 4.79,21.19 4.79,20.19C4.79,19.58 5.37,19.04 6.27,18.71C5.42,18 4.82,17.1 4.58,16.12C3.97,17 3.32,17.5 2.91,17.3C2.31,17 2.43,15.31 3.18,13.54Z";
var mdiQrcode = "M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z";
var mdiQrcodeEdit = "M5,5H7V7H5V5M1,1H11V11H1V1M3,3V9H9V3H3M5,17H7V19H5V17M1,13H11V23H1V13M3,15V21H9V15H3M13,13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21,21V19H19V21H21M19,17H17V15H15V19H19V17M22.7,3.35L21.7,4.35L19.65,2.35L20.65,1.35C20.85,1.14 21.19,1.13 21.42,1.35L22.7,2.58C22.91,2.78 22.92,3.12 22.7,3.35M13,8.94L19.07,2.88L21.12,4.93L15.06,11H13V8.94Z";
var mdiQrcodeMinus = "M5 5H7V7H5V5M1 1H11V11H1V1M3 3V9H9V3H3M5 17H7V19H5V17M1 13H11V23H1V13M3 15V21H9V15H3M13 13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21 21V19H19V21H21M19 17H17V15H15V19H19V17M14 5V7H22V5Z";
var mdiQrcodePlus = "M5 5H7V7H5V5M1 1H11V11H1V1M3 3V9H9V3H3M5 17H7V19H5V17M1 13H11V23H1V13M3 15V21H9V15H3M13 13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21 21V19H19V21H21M19 17H17V15H15V19H19V17M17 2V5H14V7H17V10H19V7H22V5H19V2Z";
var mdiQrcodeRemove = "M5 5H7V7H5V5M1 1H11V11H1V1M3 3V9H9V3H3M5 17H7V19H5V17M1 13H11V23H1V13M3 15V21H9V15H3M13 13H17V15H19V13H23V15H19V17H23V23H19V21H15V23H13V21H15V19H13V13M21 21V19H19V21H21M19 17H17V15H15V19H19V17M15.17 1.76L13.76 3.17L16.59 6L13.76 8.83L15.17 10.24L18 7.41L20.83 10.24L22.24 8.83L19.41 6L22.24 3.17L20.83 1.76L18 4.59L15.17 1.76Z";
var mdiQrcodeScan = "M4,4H10V10H4V4M20,4V10H14V4H20M14,15H16V13H14V11H16V13H18V11H20V13H18V15H20V18H18V20H16V18H13V20H11V16H14V15M16,15V18H18V15H16M4,20V14H10V20H4M6,6V8H8V6H6M16,6V8H18V6H16M6,16V18H8V16H6M4,11H6V13H4V11M9,11H13V15H11V13H9V11M11,6H13V10H11V6M2,2V6H0V2A2,2 0 0,1 2,0H6V2H2M22,0A2,2 0 0,1 24,2V6H22V2H18V0H22M2,18V22H6V24H2A2,2 0 0,1 0,22V18H2M22,22V18H24V22A2,2 0 0,1 22,24H18V22H22Z";
var mdiQuadcopter = "M5.5,1C8,1 10,3 10,5.5C10,6.38 9.75,7.2 9.31,7.9L9.41,8H14.59L14.69,7.9C14.25,7.2 14,6.38 14,5.5C14,3 16,1 18.5,1C21,1 23,3 23,5.5C23,8 21,10 18.5,10C17.62,10 16.8,9.75 16.1,9.31L15,10.41V13.59L16.1,14.69C16.8,14.25 17.62,14 18.5,14C21,14 23,16 23,18.5C23,21 21,23 18.5,23C16,23 14,21 14,18.5C14,17.62 14.25,16.8 14.69,16.1L14.59,16H9.41L9.31,16.1C9.75,16.8 10,17.62 10,18.5C10,21 8,23 5.5,23C3,23 1,21 1,18.5C1,16 3,14 5.5,14C6.38,14 7.2,14.25 7.9,14.69L9,13.59V10.41L7.9,9.31C7.2,9.75 6.38,10 5.5,10C3,10 1,8 1,5.5C1,3 3,1 5.5,1M5.5,3A2.5,2.5 0 0,0 3,5.5A2.5,2.5 0 0,0 5.5,8A2.5,2.5 0 0,0 8,5.5A2.5,2.5 0 0,0 5.5,3M5.5,16A2.5,2.5 0 0,0 3,18.5A2.5,2.5 0 0,0 5.5,21A2.5,2.5 0 0,0 8,18.5A2.5,2.5 0 0,0 5.5,16M18.5,3A2.5,2.5 0 0,0 16,5.5A2.5,2.5 0 0,0 18.5,8A2.5,2.5 0 0,0 21,5.5A2.5,2.5 0 0,0 18.5,3M18.5,16A2.5,2.5 0 0,0 16,18.5A2.5,2.5 0 0,0 18.5,21A2.5,2.5 0 0,0 21,18.5A2.5,2.5 0 0,0 18.5,16M3.91,17.25L5.04,17.91C5.17,17.81 5.33,17.75 5.5,17.75A0.75,0.75 0 0,1 6.25,18.5L6.24,18.6L7.37,19.25L7.09,19.75L5.96,19.09C5.83,19.19 5.67,19.25 5.5,19.25A0.75,0.75 0 0,1 4.75,18.5L4.76,18.4L3.63,17.75L3.91,17.25M3.63,6.25L4.76,5.6L4.75,5.5A0.75,0.75 0 0,1 5.5,4.75C5.67,4.75 5.83,4.81 5.96,4.91L7.09,4.25L7.37,4.75L6.24,5.4L6.25,5.5A0.75,0.75 0 0,1 5.5,6.25C5.33,6.25 5.17,6.19 5.04,6.09L3.91,6.75L3.63,6.25M16.91,4.25L18.04,4.91C18.17,4.81 18.33,4.75 18.5,4.75A0.75,0.75 0 0,1 19.25,5.5L19.24,5.6L20.37,6.25L20.09,6.75L18.96,6.09C18.83,6.19 18.67,6.25 18.5,6.25A0.75,0.75 0 0,1 17.75,5.5L17.76,5.4L16.63,4.75L16.91,4.25M16.63,19.25L17.75,18.5A0.75,0.75 0 0,1 18.5,17.75C18.67,17.75 18.83,17.81 18.96,17.91L20.09,17.25L20.37,17.75L19.25,18.5A0.75,0.75 0 0,1 18.5,19.25C18.33,19.25 18.17,19.19 18.04,19.09L16.91,19.75L16.63,19.25Z";
var mdiQualityHigh = "M14.5,13.5H16.5V10.5H14.5M18,14A1,1 0 0,1 17,15H16.25V16.5H14.75V15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,15H9.5V13H7.5V15H6V9H7.5V11.5H9.5V9H11M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z";
var mdiQualityLow = "M14.5,13.5H16.5V10.5H14.5M18,14C18,14.6 17.6,15 17,15H16.25V16.5H14.75V15H14C13.4,15 13,14.6 13,14V10C13,9.4 13.4,9 14,9H17C17.6,9 18,9.4 18,10M19,4H5A2,2 0 0,0 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6A2,2 0 0,0 19,4M11,13.5V15H6V9H7.5V13.5H11Z";
var mdiQualityMedium = "M21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4H19A2,2 0 0,1 21,6M12,10C12,9.5 11.5,9 11,9H6.5C6,9 5.5,9.5 5.5,10V15H7V10.5H8V14H9.5V10.5H10.5V15H12V10M14.5,9A1,1 0 0,0 13.5,10V14A1,1 0 0,0 14.5,15H15.5V16.5H16.75V15H17.5A1,1 0 0,0 18.5,14V10A1,1 0 0,0 17.5,9H14.5M15,10.5H17V13.5H15V10.5Z";
var mdiQuora = "M19.7,18.8C20.2,18.2 20.1,17.7 20.1,17.7H21.6C21.6,17.7 21.6,18.1 21.5,18.6C21.4,19 21.3,19.3 21.2,19.6C21,20.3 20,21.1 20,21.1C18.9,22 17.7,21.9 17.7,21.9C17.7,21.9 16.3,22.1 15.2,21.4C14.1,20.7 13.2,19.2 13.2,19.2C13.2,19.2 8.8,20.4 5.4,17.5C2,14.6 2.2,11.1 2.2,10.8C2.2,10.1 2.6,2.3 10.8,2C15.6,1.8 18.2,4.8 19.2,7.2C19.9,8.9 19.9,10.2 19.9,10.4C19.9,10.6 19.9,11.5 19.7,12.4C19.6,13.3 19.2,14.3 18.9,14.8C18.6,15.3 18.2,16 17.7,16.5C17.2,17.1 16.6,17.6 16.5,17.7C16.5,17.7 17.5,18.9 18.1,19.1C18.3,19.1 19.2,19.4 19.7,18.8M12.7,17.3C12.8,17.2 12.4,16.7 12.2,16.4C12,16.1 12.3,16.5 11.5,15.4C11.2,14.9 10.8,14.7 10.2,14.6C10,14.6 9.7,14.6 9.5,14.6C9,14.6 8.7,14.7 8.6,14.7C8.6,14.6 8.4,14.4 8.3,14.2C8.2,14 8.2,13.7 8.2,13.7C8.2,13.5 9.7,12.8 11.4,12.8C12.8,12.8 13.8,13.6 14.2,14C14.6,14.3 14.7,14.7 15.1,15C15.1,15 15.2,15 15.2,15.1C15.6,15.4 16.1,12.1 16,9.9C15.9,7.7 15.8,6.6 15,5.5C14.3,4.5 12.8,3.7 11.4,3.7C10.7,3.7 8.4,3.8 7.4,5.5C6.2,7.5 6.4,11.1 6.4,11.1C6.4,11.1 6.1,14.3 7.8,16C9.5,17.7 11.2,17.4 12,17.4L12.7,17.3Z";
var mdiRabbit = "M18.05,21L15.32,16.26C15.32,14.53 14.25,13.42 12.95,13.42C12.05,13.42 11.27,13.92 10.87,14.66C11.2,14.47 11.59,14.37 12,14.37C13.3,14.37 14.36,15.43 14.36,16.73C14.36,18.04 13.31,19.11 12,19.11H15.3V21H6.79C6.55,21 6.3,20.91 6.12,20.72C5.75,20.35 5.75,19.75 6.12,19.38V19.38L6.62,18.88C6.28,18.73 6,18.5 5.72,18.26C5.5,18.76 5,19.11 4.42,19.11C3.64,19.11 3,18.47 3,17.68C3,16.9 3.64,16.26 4.42,16.26L4.89,16.34V14.37C4.89,11.75 7,9.63 9.63,9.63H9.65C11.77,9.64 13.42,10.47 13.42,9.16C13.42,8.23 13.62,7.86 13.96,7.34C13.23,7 12.4,6.79 11.53,6.79C11,6.79 10.58,6.37 10.58,5.84C10.58,5.41 10.86,5.05 11.25,4.93L10.58,4.89C10.06,4.89 9.63,4.47 9.63,3.95C9.63,3.42 10.06,3 10.58,3H11.53C13.63,3 15.47,4.15 16.46,5.85L16.74,5.84C17.45,5.84 18.11,6.07 18.65,6.45L19.1,6.83C21.27,8.78 21,10.1 21,10.11C21,11.39 19.94,12.44 18.65,12.44L18.16,12.39V12.47C18.16,13.58 17.68,14.57 16.93,15.27L20.24,21H18.05M18.16,7.74C17.63,7.74 17.21,8.16 17.21,8.68C17.21,9.21 17.63,9.63 18.16,9.63C18.68,9.63 19.11,9.21 19.11,8.68C19.11,8.16 18.68,7.74 18.16,7.74Z";
var mdiRacingHelmet = "M2.2,11.2C2,13.6 2.7,15.6 4.2,17.4C5.7,19.2 7.7,20 10.1,20H20.1C20.6,20 21.1,19.8 21.5,19.4C21.9,19 22.1,18.5 22.1,18V17.2C22.1,16.6 22,15.9 21.9,15H13.7C12.7,15 11.9,14.6 11.2,13.9C10.5,13.2 10.1,12.3 10.1,11.4C10.1,9.8 10.8,8.7 12.3,8.1L17.1,6C15.4,4.8 13.4,4.1 11.1,4C8.9,3.8 6.9,4.5 5.1,5.9C3.3,7.3 2.4,9 2.2,11.2M12.1,11.4C12.1,11.8 12.3,12.2 12.6,12.5C12.9,12.8 13.3,13 13.7,13H21.5C20.9,10.8 20,9 18.7,7.6L13.1,9.9C12.4,10.1 12.1,10.6 12.1,11.4Z";
var mdiRacquetball = "M18.5,16C19.9,16 21,17.1 21,18.5C21,19.9 19.9,21 18.5,21C17.1,21 16,19.9 16,18.5C16,17.1 17.1,16 18.5,16M10.5,1C3,1 3,3.7 3,9.8C3,13.2 6.4,16.9 9,18.1V23H12V18.1C14.6,16.9 18,13.2 18,9.8C18,3.6 18,1 10.5,1M15.4,4.2C15.7,4.6 15.8,5.2 15.9,6H15V3.8C15.2,3.9 15.3,4.1 15.4,4.2M16,9.8C16,9.9 16,10 16,10H15V7H16C16,7.8 16,8.7 16,9.8M14,14H11V11H14V14M7,14V11H10V14H7M5,9.8C5,8.8 5,7.9 5,7H6V10H5C5,9.9 5,9.8 5,9.8M7,7H10V10H7V7M11,3C12.4,3 13.4,3.2 14,3.3V6H11V3M10,6H7V3.4C7.6,3.2 8.6,3 10,3V6M11,10V7H14V10H11M6,3.8V6H5.1C5.2,5.2 5.3,4.6 5.6,4.2C5.7,4.1 5.8,4 6,3.8M5.2,11H6V12.7C5.7,12.1 5.4,11.6 5.2,11M8,15H10V16.3L9.8,16.2C9.2,16 8.6,15.5 8,15M11.2,16.3H11V15H13C12.4,15.5 11.8,16 11.2,16.3M15,12.7V11H15.8C15.6,11.5 15.3,12.1 15,12.7Z";
var mdiRadar = "M19.07,4.93L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12C4,7.92 7.05,4.56 11,4.07V6.09C8.16,6.57 6,9.03 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12C18,10.34 17.33,8.84 16.24,7.76L14.83,9.17C15.55,9.9 16,10.9 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12C8,10.14 9.28,8.59 11,8.14V10.28C10.4,10.63 10,11.26 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,11.26 13.6,10.62 13,10.28V2H12A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,9.24 20.88,6.74 19.07,4.93Z";
var mdiRadiator = "M7.95,3L6.53,5.19L7.95,7.4H7.94L5.95,10.5L4.22,9.6L5.64,7.39L4.22,5.19L6.22,2.09L7.95,3M13.95,2.89L12.53,5.1L13.95,7.3L13.94,7.31L11.95,10.4L10.22,9.5L11.64,7.3L10.22,5.1L12.22,2L13.95,2.89M20,2.89L18.56,5.1L20,7.3V7.31L18,10.4L16.25,9.5L17.67,7.3L16.25,5.1L18.25,2L20,2.89M2,22V14A2,2 0 0,1 4,12H20A2,2 0 0,1 22,14V22H20V20H4V22H2M6,14A1,1 0 0,0 5,15V17A1,1 0 0,0 6,18A1,1 0 0,0 7,17V15A1,1 0 0,0 6,14M10,14A1,1 0 0,0 9,15V17A1,1 0 0,0 10,18A1,1 0 0,0 11,17V15A1,1 0 0,0 10,14M14,14A1,1 0 0,0 13,15V17A1,1 0 0,0 14,18A1,1 0 0,0 15,17V15A1,1 0 0,0 14,14M18,14A1,1 0 0,0 17,15V17A1,1 0 0,0 18,18A1,1 0 0,0 19,17V15A1,1 0 0,0 18,14Z";
var mdiRadiatorDisabled = "M20,12H4A2,2 0 0,0 2,14V22H4V20H20V22H22V14A2,2 0 0,0 20,12M7,17A1,1 0 0,1 6,18A1,1 0 0,1 5,17V15A1,1 0 0,1 6,14A1,1 0 0,1 7,15V17M11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17V15A1,1 0 0,1 10,14A1,1 0 0,1 11,15V17M15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17V15A1,1 0 0,1 14,14A1,1 0 0,1 15,15V17M19,17A1,1 0 0,1 18,18A1,1 0 0,1 17,17V15A1,1 0 0,1 18,14A1,1 0 0,1 19,15V17Z";
var mdiRadiatorOff = "M3.28,2L2,3.27L4.77,6.04L5.64,7.39L4.22,9.6L5.95,10.5L7.23,8.5L10.73,12H4A2,2 0 0,0 2,14V22H4V20H18.73L20,21.27V22H22V20.73L22,20.72V20.72L3.28,2M7,17A1,1 0 0,1 6,18A1,1 0 0,1 5,17V15A1,1 0 0,1 6,14A1,1 0 0,1 7,15V17M11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17V15A1,1 0 0,1 10,14A1,1 0 0,1 11,15V17M15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17V15C13,14.79 13.08,14.61 13.18,14.45L15,16.27V17M16.25,9.5L17.67,7.3L16.25,5.1L18.25,2L20,2.89L18.56,5.1L20,7.3V7.31L18,10.4L16.25,9.5M22,14V18.18L19,15.18V15A1,1 0 0,0 18,14C17.95,14 17.9,14 17.85,14.03L15.82,12H20C21.11,12 22,12.9 22,14M11.64,7.3L10.22,5.1L12.22,2L13.95,2.89L12.53,5.1L13.95,7.3L13.94,7.31L12.84,9L11.44,7.62L11.64,7.3M7.5,3.69L6.1,2.28L6.22,2.09L7.95,3L7.5,3.69Z";
var mdiRadio = "M20,6A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8C2,7.15 2.53,6.42 3.28,6.13L15.71,1L16.47,2.83L8.83,6H20M20,8H4V12H16V10H18V12H20V8M7,14A3,3 0 0,0 4,17A3,3 0 0,0 7,20A3,3 0 0,0 10,17A3,3 0 0,0 7,14Z";
var mdiRadioAm = "M5,7A2,2 0 0,0 3,9V17H5V13H7V17H9V9A2,2 0 0,0 7,7H5M5,9H7V11H5V9M13,7A2,2 0 0,0 11,9V17H13V9H15V16H17V9H19V17H21V9A2,2 0 0,0 19,7H13Z";
var mdiRadioFm = "M3,7V17H5V13H8V11H5V9H9V7H3M13,7A2,2 0 0,0 11,9V17H13V9H15V16H17V9H19V17H21V9A2,2 0 0,0 19,7H13Z";
var mdiRadioHandheld = "M9,2A1,1 0 0,0 8,3C8,8.67 8,14.33 8,20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V9C17,7.89 16.11,7 15,7H10V3A1,1 0 0,0 9,2M10,9H15V13H10V9Z";
var mdiRadioOff = "M1 4.27L3 6.27C2.4 6.61 2 7.26 2 8V20C2 21.11 2.9 22 4 22H18.73L20.73 24L22 22.72L2.28 3L1 4.27M20 6H8.83L16.47 2.83L15.71 1L6.59 4.76L9.82 8H20V12H18V10H16V12H13.82L22 20.18V8C22 6.9 21.11 6 20 6M4 8H4.73L8.73 12H4V8M7 14C8.66 14 10 15.34 10 17C10 18.66 8.66 20 7 20C5.34 20 4 18.66 4 17C4 15.34 5.34 14 7 14Z";
var mdiRadioTower = "M12,10A2,2 0 0,1 14,12C14,12.5 13.82,12.94 13.53,13.29L16.7,22H14.57L12,14.93L9.43,22H7.3L10.47,13.29C10.18,12.94 10,12.5 10,12A2,2 0 0,1 12,10M12,8A4,4 0 0,0 8,12C8,12.5 8.1,13 8.28,13.46L7.4,15.86C6.53,14.81 6,13.47 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12C18,13.47 17.47,14.81 16.6,15.86L15.72,13.46C15.9,13 16,12.5 16,12A4,4 0 0,0 12,8M12,4A8,8 0 0,0 4,12C4,14.36 5,16.5 6.64,17.94L5.92,19.94C3.54,18.11 2,15.23 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12C22,15.23 20.46,18.11 18.08,19.94L17.36,17.94C19,16.5 20,14.36 20,12A8,8 0 0,0 12,4Z";
var mdiRadioactive = "M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,22C10.05,22 8.22,21.44 6.69,20.47L10,15.47C10.6,15.81 11.28,16 12,16C12.72,16 13.4,15.81 14,15.47L17.31,20.47C15.78,21.44 13.95,22 12,22M2,12C2,7.86 4.5,4.3 8.11,2.78L10.34,8.36C8.96,9 8,10.38 8,12H2M16,12C16,10.38 15.04,9 13.66,8.36L15.89,2.78C19.5,4.3 22,7.86 22,12H16Z";
var mdiRadioactiveOff = "M1,4.27L2.28,3L21,21.72L19.73,23L17.25,20.5C15.72,21.46 13.92,22 12,22C10.05,22 8.22,21.44 6.69,20.47L10,15.47C10.6,15.81 11.28,16 12,16C12.23,16 12.46,16 12.67,15.94L8.06,11.33C8,11.54 8,11.77 8,12H2C2,10.08 2.54,8.28 3.5,6.75L1,4.27M12,10A2,2 0 0,1 14,12V12.17L11.83,10H12M8.11,2.78L10.23,8.41L5.9,4.08C6.57,3.56 7.32,3.12 8.11,2.78M16,12C16,10.38 15.04,9 13.66,8.36L15.89,2.78C19.5,4.3 22,7.86 22,12H16Z";
var mdiRadioboxBlank = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiRadioboxMarked = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z";
var mdiRadiologyBox = "M19 3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3M17.1 13H13V14H17C17 14 16.94 17 15.5 17C14.15 17 14.5 15.47 13 15V17C13 17.55 12.55 18 12 18S11 17.55 11 17V15C9.5 15.47 9.85 17 8.5 17C7.06 17 7 14 7 14H11V13H6.9C6.85 12.69 6.84 12.35 6.8 12H11V11H6.81C6.83 10.67 6.91 10.33 7 10H11V9H7.34C7.5 8.65 7.65 8.31 7.83 8H11V7C11 6.45 11.45 6 12 6S13 6.45 13 7V8H16.17C16.35 8.31 16.5 8.65 16.66 9H13V10H17C17.1 10.33 17.17 10.67 17.19 11H13V12H17.2C17.16 12.35 17.15 12.69 17.1 13Z";
var mdiRadiologyBoxOutline = "M19 5V19H5V5H19M19 3H5C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3M12 6C12.55 6 13 6.45 13 7V8H16.17C16.35 8.31 16.5 8.65 16.66 9H13V10H17C17.1 10.33 17.17 10.67 17.19 11H13V12H17.2C17.16 12.35 17.15 12.69 17.1 13H13V14H17C17 14 16.94 17 15.5 17C14.15 17 14.5 15.47 13 15V17C13 17.55 12.55 18 12 18S11 17.55 11 17V15C9.5 15.47 9.85 17 8.5 17C7.06 17 7 14 7 14H11V13H6.9C6.85 12.69 6.84 12.35 6.8 12H11V11H6.81C6.83 10.67 6.91 10.33 7 10H11V9H7.34C7.5 8.65 7.65 8.31 7.83 8H11V7C11 6.45 11.45 6 12 6Z";
var mdiRadius = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,15V13H13.72C13.36,13.62 12.71,14 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10C12.71,10 13.36,10.38 13.72,11H17V9L20,12L17,15Z";
var mdiRadiusOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16,15V13H13.72C13.36,13.62 12.71,14 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10C12.71,10 13.36,10.38 13.72,11H16V9L19,12L16,15Z";
var mdiRailroadLight = "M17.67,10.5C16.4,10.5 15.27,11.3 14.85,12.5H13.17V7.77L16.66,9.86L17.66,8.14L14.11,6L17.68,3.86L16.68,2.14L13.17,4.23V2H11.17V4.23L7.68,2.14L6.68,3.86L10.23,6L6.66,8.14L7.66,9.86L11.17,7.77V12.5H9.5C8.36,9.32 3.66,10.13 3.66,13.5C3.66,16.87 8.36,17.68 9.5,14.5H11.17V20A2,2 0 0,0 9.17,22H15.17A2,2 0 0,0 13.17,20V14.5H14.85C15.66,16.8 18.73,17.22 20.13,15.23C21.53,13.24 20.1,10.5 17.67,10.5M6.67,14.5C5.78,14.5 5.33,13.42 5.96,12.79C6.59,12.16 7.67,12.61 7.67,13.5A1,1 0 0,1 6.67,14.5M17.67,14.5C16.78,14.5 16.33,13.42 16.96,12.79C17.59,12.16 18.67,12.61 18.67,13.5A1,1 0 0,1 17.67,14.5Z";
var mdiRake = "M10.5 17.05L9.43 16L22.07 3.35L20.66 1.93L8 14.58L6.95 13.5C6.17 12.73 4.9 12.73 4.12 13.5L2 15.64L2.71 16.34L4.83 14.22L5.54 14.93L3.41 17.05L4.12 17.76L6.24 15.64L6.95 16.34L4.83 18.46L5.54 19.17L7.66 17.05L8.36 17.76L6.24 19.88L6.95 20.59L9.07 18.46L9.78 19.17L7.66 21.29L8.36 22L10.5 19.88C11.27 19.1 11.27 17.83 10.5 17.05Z";
var mdiRaspberryPi = "M20,8H22V10H20V8M4,5H20A2,2 0 0,1 22,7H19V9H5V13H8V16H19V17H22A2,2 0 0,1 20,19H16V20H14V19H11V20H7V19H4A2,2 0 0,1 2,17V7A2,2 0 0,1 4,5M19,15H9V10H19V11H22V13H19V15M13,12V14H15V12H13M5,6V8H6V6H5M7,6V8H8V6H7M9,6V8H10V6H9M11,6V8H12V6H11M13,6V8H14V6H13M15,6V8H16V6H15M20,14H22V16H20V14Z";
var mdiRayEnd = "M20,9C18.69,9 17.58,9.83 17.17,11H2V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9Z";
var mdiRayEndArrow = "M1,12L5,16V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9C18.69,9 17.58,9.83 17.17,11H5V8L1,12Z";
var mdiRayStart = "M4,9C5.31,9 6.42,9.83 6.83,11H22V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z";
var mdiRayStartArrow = "M23,12L19,16V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9C5.31,9 6.42,9.83 6.83,11H19V8L23,12Z";
var mdiRayStartEnd = "M4,9C5.31,9 6.42,9.83 6.83,11H17.17C17.58,9.83 18.69,9 20,9A3,3 0 0,1 23,12A3,3 0 0,1 20,15C18.69,15 17.58,14.17 17.17,13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z";
var mdiRayStartVertexEnd = "M20 9C18.69 9 17.58 9.83 17.17 11H14.82C14.4 9.84 13.3 9 12 9S9.6 9.84 9.18 11H6.83C6.42 9.83 5.31 9 4 9C2.34 9 1 10.34 1 12S2.34 15 4 15C5.31 15 6.42 14.17 6.83 13H9.18C9.6 14.16 10.7 15 12 15S14.4 14.16 14.82 13H17.17C17.58 14.17 18.69 15 20 15C21.66 15 23 13.66 23 12S21.66 9 20 9";
var mdiRayVertex = "M2,11H9.17C9.58,9.83 10.69,9 12,9C13.31,9 14.42,9.83 14.83,11H22V13H14.83C14.42,14.17 13.31,15 12,15C10.69,15 9.58,14.17 9.17,13H2V11Z";
var mdiReact = "M12,10.11C13.03,10.11 13.87,10.95 13.87,12C13.87,13 13.03,13.85 12,13.85C10.97,13.85 10.13,13 10.13,12C10.13,10.95 10.97,10.11 12,10.11M7.37,20C8,20.38 9.38,19.8 10.97,18.3C10.45,17.71 9.94,17.07 9.46,16.4C8.64,16.32 7.83,16.2 7.06,16.04C6.55,18.18 6.74,19.65 7.37,20M8.08,14.26L7.79,13.75C7.68,14.04 7.57,14.33 7.5,14.61C7.77,14.67 8.07,14.72 8.38,14.77C8.28,14.6 8.18,14.43 8.08,14.26M14.62,13.5L15.43,12L14.62,10.5C14.32,9.97 14,9.5 13.71,9.03C13.17,9 12.6,9 12,9C11.4,9 10.83,9 10.29,9.03C10,9.5 9.68,9.97 9.38,10.5L8.57,12L9.38,13.5C9.68,14.03 10,14.5 10.29,14.97C10.83,15 11.4,15 12,15C12.6,15 13.17,15 13.71,14.97C14,14.5 14.32,14.03 14.62,13.5M12,6.78C11.81,7 11.61,7.23 11.41,7.5C11.61,7.5 11.8,7.5 12,7.5C12.2,7.5 12.39,7.5 12.59,7.5C12.39,7.23 12.19,7 12,6.78M12,17.22C12.19,17 12.39,16.77 12.59,16.5C12.39,16.5 12.2,16.5 12,16.5C11.8,16.5 11.61,16.5 11.41,16.5C11.61,16.77 11.81,17 12,17.22M16.62,4C16,3.62 14.62,4.2 13.03,5.7C13.55,6.29 14.06,6.93 14.54,7.6C15.36,7.68 16.17,7.8 16.94,7.96C17.45,5.82 17.26,4.35 16.62,4M15.92,9.74L16.21,10.25C16.32,9.96 16.43,9.67 16.5,9.39C16.23,9.33 15.93,9.28 15.62,9.23C15.72,9.4 15.82,9.57 15.92,9.74M17.37,2.69C18.84,3.53 19,5.74 18.38,8.32C20.92,9.07 22.75,10.31 22.75,12C22.75,13.69 20.92,14.93 18.38,15.68C19,18.26 18.84,20.47 17.37,21.31C15.91,22.15 13.92,21.19 12,19.36C10.08,21.19 8.09,22.15 6.62,21.31C5.16,20.47 5,18.26 5.62,15.68C3.08,14.93 1.25,13.69 1.25,12C1.25,10.31 3.08,9.07 5.62,8.32C5,5.74 5.16,3.53 6.62,2.69C8.09,1.85 10.08,2.81 12,4.64C13.92,2.81 15.91,1.85 17.37,2.69M17.08,12C17.42,12.75 17.72,13.5 17.97,14.26C20.07,13.63 21.25,12.73 21.25,12C21.25,11.27 20.07,10.37 17.97,9.74C17.72,10.5 17.42,11.25 17.08,12M6.92,12C6.58,11.25 6.28,10.5 6.03,9.74C3.93,10.37 2.75,11.27 2.75,12C2.75,12.73 3.93,13.63 6.03,14.26C6.28,13.5 6.58,12.75 6.92,12M15.92,14.26C15.82,14.43 15.72,14.6 15.62,14.77C15.93,14.72 16.23,14.67 16.5,14.61C16.43,14.33 16.32,14.04 16.21,13.75L15.92,14.26M13.03,18.3C14.62,19.8 16,20.38 16.62,20C17.26,19.65 17.45,18.18 16.94,16.04C16.17,16.2 15.36,16.32 14.54,16.4C14.06,17.07 13.55,17.71 13.03,18.3M8.08,9.74C8.18,9.57 8.28,9.4 8.38,9.23C8.07,9.28 7.77,9.33 7.5,9.39C7.57,9.67 7.68,9.96 7.79,10.25L8.08,9.74M10.97,5.7C9.38,4.2 8,3.62 7.37,4C6.74,4.35 6.55,5.82 7.06,7.96C7.83,7.8 8.64,7.68 9.46,7.6C9.94,6.93 10.45,6.29 10.97,5.7Z";
var mdiRead = "M21.59,11.59L23,13L13.5,22.5L8.42,17.41L9.83,16L13.5,19.68L21.59,11.59M4,16V3H6L9,3A4,4 0 0,1 13,7C13,8.54 12.13,9.88 10.85,10.55L14,16H12L9.11,11H6V16H4M6,9H9A2,2 0 0,0 11,7A2,2 0 0,0 9,5H6V9Z";
var mdiReceipt = "M3,22L4.5,20.5L6,22L7.5,20.5L9,22L10.5,20.5L12,22L13.5,20.5L15,22L16.5,20.5L18,22L19.5,20.5L21,22V2L19.5,3.5L18,2L16.5,3.5L15,2L13.5,3.5L12,2L10.5,3.5L9,2L7.5,3.5L6,2L4.5,3.5L3,2M18,9H6V7H18M18,13H6V11H18M18,17H6V15H18V17Z";
var mdiRecord = "M19,12C19,15.86 15.86,19 12,19C8.14,19 5,15.86 5,12C5,8.14 8.14,5 12,5C15.86,5 19,8.14 19,12Z";
var mdiRecordCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z";
var mdiRecordCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z";
var mdiRecordPlayer = "M5,17.5A0.5,0.5 0 0,1 4.5,18H3.5A0.5,0.5 0 0,1 3,17.5V17H2A1,1 0 0,1 1,16V13A1,1 0 0,1 2,12H19V10H7L6,11V9A1,1 0 0,1 7,8H19V7H21V8A1,1 0 0,1 22,9V10H21V12H22A1,1 0 0,1 23,13V16A1,1 0 0,1 22,17H21V17.5A0.5,0.5 0 0,1 20.5,18H19.5A0.5,0.5 0 0,1 19,17.5V17H5V17.5M3,14V15H5V14H3M6,14V15H8V14H6M20.5,13.5A1,1 0 0,0 19.5,14.5A1,1 0 0,0 20.5,15.5A1,1 0 0,0 21.5,14.5A1,1 0 0,0 20.5,13.5Z";
var mdiRecordRec = "M12.5,5A7.5,7.5 0 0,0 5,12.5A7.5,7.5 0 0,0 12.5,20A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5M7,10H9A1,1 0 0,1 10,11V12C10,12.5 9.62,12.9 9.14,12.97L10.31,15H9.15L8,13V15H7M12,10H14V11H12V12H14V13H12V14H14V15H12A1,1 0 0,1 11,14V11A1,1 0 0,1 12,10M16,10H18V11H16V14H18V15H16A1,1 0 0,1 15,14V11A1,1 0 0,1 16,10M8,11V12H9V11";
var mdiRectangle = "M4,6V19H20V6H4Z";
var mdiRectangleOutline = "M4,6V19H20V6H4M18,17H6V8H18V17Z";
var mdiRecycle = "M21.82,15.42L19.32,19.75C18.83,20.61 17.92,21.06 17,21H15V23L12.5,18.5L15,14V16H17.82L15.6,12.15L19.93,9.65L21.73,12.77C22.25,13.54 22.32,14.57 21.82,15.42M9.21,3.06H14.21C15.19,3.06 16.04,3.63 16.45,4.45L17.45,6.19L19.18,5.19L16.54,9.6L11.39,9.69L13.12,8.69L11.71,6.24L9.5,10.09L5.16,7.59L6.96,4.47C7.37,3.64 8.22,3.06 9.21,3.06M5.05,19.76L2.55,15.43C2.06,14.58 2.13,13.56 2.64,12.79L3.64,11.06L1.91,10.06L7.05,10.14L9.7,14.56L7.97,13.56L6.56,16H11V21H7.4C6.47,21.07 5.55,20.61 5.05,19.76Z";
var mdiRecycleVariant = "M7.17 7.91L8.9 8.91L12.08 3.42L14.33 7.31L11.73 8.81L17.19 10.27L18.66 4.81L16.06 6.31L13.81 2.41C13.26 1.45 12.03 1.12 11.08 1.68C10.81 1.83 10.58 2.05 10.41 2.31M10 20V18L3.66 18L5.9 14.1L8.5 15.6L7.04 10.14L1.57 11.6L4.17 13.1L1.92 17C1.37 17.96 1.7 19.18 2.65 19.73C2.92 19.89 3.22 19.97 3.54 20M19.06 11.5L17.32 12.5L20.5 18H16V15L12 19L16 23V20H20.5C21.61 20 22.5 19.11 22.5 18C22.5 17.69 22.42 17.38 22.28 17.11Z";
var mdiReddit = "M14.5 15.41C14.58 15.5 14.58 15.69 14.5 15.8C13.77 16.5 12.41 16.56 12 16.56C11.61 16.56 10.25 16.5 9.54 15.8C9.44 15.69 9.44 15.5 9.54 15.41C9.65 15.31 9.82 15.31 9.92 15.41C10.38 15.87 11.33 16 12 16C12.69 16 13.66 15.87 14.1 15.41C14.21 15.31 14.38 15.31 14.5 15.41M10.75 13.04C10.75 12.47 10.28 12 9.71 12C9.14 12 8.67 12.47 8.67 13.04C8.67 13.61 9.14 14.09 9.71 14.08C10.28 14.08 10.75 13.61 10.75 13.04M14.29 12C13.72 12 13.25 12.5 13.25 13.05S13.72 14.09 14.29 14.09C14.86 14.09 15.33 13.61 15.33 13.05C15.33 12.5 14.86 12 14.29 12M22 12C22 17.5 17.5 22 12 22S2 17.5 2 12C2 6.5 6.5 2 12 2S22 6.5 22 12M18.67 12C18.67 11.19 18 10.54 17.22 10.54C16.82 10.54 16.46 10.7 16.2 10.95C15.2 10.23 13.83 9.77 12.3 9.71L12.97 6.58L15.14 7.05C15.16 7.6 15.62 8.04 16.18 8.04C16.75 8.04 17.22 7.57 17.22 7C17.22 6.43 16.75 5.96 16.18 5.96C15.77 5.96 15.41 6.2 15.25 6.55L12.82 6.03C12.75 6 12.68 6.03 12.63 6.07C12.57 6.11 12.54 6.17 12.53 6.24L11.79 9.72C10.24 9.77 8.84 10.23 7.82 10.96C7.56 10.71 7.2 10.56 6.81 10.56C6 10.56 5.35 11.21 5.35 12C5.35 12.61 5.71 13.11 6.21 13.34C6.19 13.5 6.18 13.62 6.18 13.78C6.18 16 8.79 17.85 12 17.85C15.23 17.85 17.85 16.03 17.85 13.78C17.85 13.64 17.84 13.5 17.81 13.34C18.31 13.11 18.67 12.6 18.67 12Z";
var mdiRedhat = "M15.34 13.16C16.66 13.16 18.56 12.89 18.56 11.32C18.57 11.2 18.56 11.08 18.53 10.96L17.75 7.56C17.57 6.81 17.41 6.47 16.09 5.81C15.07 5.29 12.85 4.43 12.19 4.43C11.58 4.43 11.4 5.22 10.67 5.22C9.97 5.22 9.45 4.63 8.79 4.63C8.16 4.63 7.75 5.06 7.43 5.94C7.43 5.94 6.55 8.44 6.43 8.8C6.42 8.87 6.41 8.93 6.41 9C6.41 9.97 10.23 13.15 15.34 13.15M18.77 11.96C18.95 12.82 18.95 12.91 18.95 13C18.95 14.5 17.29 15.31 15.12 15.31C10.2 15.31 5.89 12.43 5.89 10.53C5.89 10.26 5.95 10 6.05 9.76C4.28 9.84 2 10.16 2 12.18C2 15.5 9.84 19.57 16.05 19.57C20.81 19.57 22 17.42 22 15.72C22 14.38 20.85 12.86 18.77 11.96";
var mdiRedo = "M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z";
var mdiRedoVariant = "M10.5,7A6.5,6.5 0 0,0 4,13.5A6.5,6.5 0 0,0 10.5,20H14V18H10.5C8,18 6,16 6,13.5C6,11 8,9 10.5,9H16.17L13.09,12.09L14.5,13.5L20,8L14.5,2.5L13.08,3.91L16.17,7H10.5M18,18H16V20H18V18Z";
var mdiReflectHorizontal = "M22,20H14A1,1 0 0,1 13,19V4.97C13,4.5 13.31,4.12 13.74,4C14.19,3.88 14.65,4.08 14.87,4.47L22.89,18.5C23.07,18.81 23.07,19.19 22.89,19.5C22.71,19.81 22.38,20 22,20M2,20C1.62,20 1.29,19.81 1.11,19.5C0.93,19.19 0.93,18.81 1.11,18.5L9.13,4.47C9.35,4.08 9.81,3.88 10.26,4C10.69,4.12 11,4.5 11,4.97V19A1,1 0 0,1 10,20H2M9,18V8.74L3.71,18H9Z";
var mdiReflectVertical = "M18,23H6C5.61,23 5.26,22.79 5.09,22.45C4.92,22.11 4.96,21.7 5.19,21.4L11.2,13.38C11.58,12.87 12.42,12.87 12.8,13.38L18.81,21.4C19.04,21.7 19.08,22.11 18.91,22.45C18.74,22.79 18.39,23 18,23M18,1C18.39,1 18.74,1.21 18.91,1.55C19.08,1.89 19.04,2.3 18.81,2.6L12.8,10.62C12.42,11.13 11.58,11.13 11.2,10.62L5.19,2.6C4.96,2.3 4.92,1.89 5.09,1.55C5.26,1.21 5.61,1 6,1H18M8,3L12,8.35L16,3H8Z";
var mdiRefresh = "M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z";
var mdiRefreshCircle = "M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2M18 11H13L14.81 9.19A3.94 3.94 0 0 0 12 8A4 4 0 1 0 15.86 13H17.91A6 6 0 1 1 12 6A5.91 5.91 0 0 1 16.22 7.78L18 6Z";
var mdiRegex = "M16,16.92C15.67,16.97 15.34,17 15,17C14.66,17 14.33,16.97 14,16.92V13.41L11.5,15.89C11,15.5 10.5,15 10.11,14.5L12.59,12H9.08C9.03,11.67 9,11.34 9,11C9,10.66 9.03,10.33 9.08,10H12.59L10.11,7.5C10.3,7.25 10.5,7 10.76,6.76V6.76C11,6.5 11.25,6.3 11.5,6.11L14,8.59V5.08C14.33,5.03 14.66,5 15,5C15.34,5 15.67,5.03 16,5.08V8.59L18.5,6.11C19,6.5 19.5,7 19.89,7.5L17.41,10H20.92C20.97,10.33 21,10.66 21,11C21,11.34 20.97,11.67 20.92,12H17.41L19.89,14.5C19.7,14.75 19.5,15 19.24,15.24V15.24C19,15.5 18.75,15.7 18.5,15.89L16,13.41V16.92H16V16.92M5,19A2,2 0 0,1 7,17A2,2 0 0,1 9,19A2,2 0 0,1 7,21A2,2 0 0,1 5,19H5Z";
var mdiRegisteredTrademark = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12.25,13.27H10.81V16.5H9V7.71H12.26C13.29,7.71 14.09,7.94 14.66,8.4C15.22,8.87 15.5,9.5 15.5,10.36C15.5,10.96 15.37,11.46 15.11,11.86C14.85,12.26 14.46,12.58 13.93,12.81L15.83,16.4V16.5H13.89L12.25,13.27M10.81,11.81H12.27C12.72,11.81 13.07,11.69 13.32,11.46C13.57,11.23 13.69,10.91 13.69,10.5C13.69,10.09 13.58,9.77 13.34,9.53C13.11,9.29 12.75,9.18 12.26,9.18H10.81V11.81Z";
var mdiReiterate = "M10.5 4A6.5 6.5 0 0 0 4 10H1L5 14L9 10H6.03A4.5 4.5 0 0 1 10.5 6A4.5 4.5 0 0 1 15 10.5A4.5 4.5 0 0 1 10.5 15H2V17H10.5A6.5 6.5 0 0 0 17 10.5A6.5 6.5 0 0 0 10.5 4M19 12V15H16.5A7.5 7.5 0 0 1 14.24 17H19V20L23 16Z";
var mdiRelationManyToMany = "M22 13V19H21L19 17H11V9H5L3 11H2V5H3L5 7H13V15H19L21 13Z";
var mdiRelationManyToOne = "M22 15V17H19V19H17V17H11V9H5L3 11H2V5H3L5 7H13V15H17V13H19V15Z";
var mdiRelationManyToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H5L3 11H2V5H3L5 7H13V15H17V13H19V15L21 13Z";
var mdiRelationManyToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H5L3 11H2V5H3L5 7H13V15H16V13H18V15H19V13H21V15Z";
var mdiRelationManyToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H5L3 5H2V11H3L5 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationManyToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H5L3 5H2V11H3L5 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationOneOrManyToMany = "M22 13V19H21L19 17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H19L21 13Z";
var mdiRelationOneOrManyToOne = "M22 15V17H19V19H17V17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H17V13H19V15Z";
var mdiRelationOneOrManyToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H17V13H19V15L21 13Z";
var mdiRelationOneOrManyToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H7V11H5V9L3 11H2V5H3L5 7V5H7V7H13V15H16V13H18V15H19V13H21V15Z";
var mdiRelationOneOrManyToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7L3 5H2V11H3L5 9V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationOneOrManyToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7L3 5H2V11H3L5 9V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationOneToMany = "M22 13V19H21L19 17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H19L21 13Z";
var mdiRelationOneToOne = "M22 15V17H19V19H17V17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H17V13H19V15Z";
var mdiRelationOneToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H17V13H19V15L21 13Z";
var mdiRelationOneToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H7V11H5V9H2V7H5V5H7V7H13V15H16V13H18V15H19V13H21V15Z";
var mdiRelationOneToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7H2V9H5V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationOneToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H7V5H5V7H2V9H5V11H7V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationOnlyOneToMany = "M22 13V19H21L19 17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H19L21 13Z";
var mdiRelationOnlyOneToOne = "M22 15V17H19V19H17V17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H17V13H19V15Z";
var mdiRelationOnlyOneToOneOrMany = "M22 13V19H21L19 17V19H17V17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H17V13H19V15L21 13Z";
var mdiRelationOnlyOneToOnlyOne = "M22 15V17H21V19H19V17H18V19H16V17H11V9H8V11H6V9H5V11H3V9H2V7H3V5H5V7H6V5H8V7H13V15H16V13H18V15H19V13H21V15Z";
var mdiRelationOnlyOneToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H8V5H6V7H5V5H3V7H2V9H3V11H5V9H6V11H8V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationOnlyOneToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H8V5H6V7H5V5H3V7H2V9H3V11H5V9H6V11H8V9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationZeroOrManyToMany = "M21 13L19 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z";
var mdiRelationZeroOrManyToOne = "M19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z";
var mdiRelationZeroOrManyToOneOrMany = "M21 13L19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z";
var mdiRelationZeroOrManyToOnlyOne = "M21 15V13H19V15H18V13H16V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H16V19H18V17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z";
var mdiRelationZeroOrManyToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationZeroOrManyToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5L3 5H2V11H3L5 9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationZeroOrOneToMany = "M21 13L19 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z";
var mdiRelationZeroOrOneToOne = "M19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z";
var mdiRelationZeroOrOneToOneOrMany = "M21 13L19 15V13H17V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H17V19H19V17L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z";
var mdiRelationZeroOrOneToOnlyOne = "M21 15V13H19V15H18V13H16V15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H16V19H18V17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9Z";
var mdiRelationZeroOrOneToZeroOrMany = "M21 13L19 15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19L21 19H22V13M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelationZeroOrOneToZeroOrOne = "M21 15V13H19V15H18.79A2.5 2.5 0 0 0 14.21 15H13V7H9.79A2.5 2.5 0 0 0 5.21 7H5V5H3V7H2V9H3V11H5V9H5.21A2.5 2.5 0 0 0 9.79 9H11V17H14.21A2.5 2.5 0 0 0 18.79 17H19V19H21V17H22V15M7.5 9A1 1 0 1 1 8.5 8A1 1 0 0 1 7.5 9M16.5 17A1 1 0 1 1 17.5 16A1 1 0 0 1 16.5 17Z";
var mdiRelativeScale = "M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M12,10H10V12H12M8,10H6V12H8M16,14H14V16H16M16,10H14V12H16V10Z";
var mdiReload = "M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z";
var mdiReloadAlert = "M2 12C2 17 6 21 11 21C13.4 21 15.7 20.1 17.4 18.4L15.9 16.9C14.6 18.3 12.9 19 11 19C4.8 19 1.6 11.5 6.1 7.1S18 5.8 18 12H15L19 16H19.1L23 12H20C20 7 16 3 11 3S2 7 2 12M10 15H12V17H10V15M10 7H12V13H10V7";
var mdiReminder = "M7.25,3C7.9,3 8.5,3.21 9,3.56V3A2,2 0 0,1 11,1A2,2 0 0,1 13,3V3.57C13.5,3.22 14.1,3 14.75,3A3,3 0 0,1 17.75,6C17.75,7.58 16.54,8.87 15,9H13V10H14.24L14.72,10.13L19.31,12.42C20.13,12.73 20.53,13.34 20.53,14.25L20.5,14.39V14.53L19.5,21.28C19.44,21.75 19.22,22.16 18.84,22.5C18.47,22.84 18.05,23 17.58,23H10C9.45,23 9,22.81 8.58,22.41L2,15.84L3.05,14.77C3.33,14.5 3.69,14.34 4.13,14.34H4.45L9,15.33V10L9,9H7V9C5.46,8.86 4.25,7.57 4.25,6A3,3 0 0,1 7.25,3M9,6A1.75,1.75 0 0,0 7.25,4.25A1.75,1.75 0 0,0 5.5,6C5.5,6.88 6.15,7.61 7,7.73V7.75H9V6M15,7.75V7.74C15.85,7.62 16.5,6.89 16.5,6C16.5,5.04 15.72,4.26 14.75,4.26C13.78,4.26 13,5.04 13,6V7.75H15Z";
var mdiRemote = "M12,0C8.96,0 6.21,1.23 4.22,3.22L5.63,4.63C7.26,3 9.5,2 12,2C14.5,2 16.74,3 18.36,4.64L19.77,3.23C17.79,1.23 15.04,0 12,0M7.05,6.05L8.46,7.46C9.37,6.56 10.62,6 12,6C13.38,6 14.63,6.56 15.54,7.46L16.95,6.05C15.68,4.78 13.93,4 12,4C10.07,4 8.32,4.78 7.05,6.05M12,15A2,2 0 0,1 10,13A2,2 0 0,1 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M15,9H9A1,1 0 0,0 8,10V22A1,1 0 0,0 9,23H15A1,1 0 0,0 16,22V10A1,1 0 0,0 15,9Z";
var mdiRemoteDesktop = "M3,2A2,2 0 0,0 1,4V16C1,17.11 1.9,18 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4A2,2 0 0,0 21,2M3,4H21V16H3M15,5L11.5,8.5L15,12L16.4,10.6L14.3,8.5L16.4,6.4M9,8L7.6,9.4L9.7,11.5L7.6,13.6L9,15L12.5,11.5";
var mdiRemoteOff = "M2,5.27L3.28,4L21,21.72L19.73,23L16,19.27V22A1,1 0 0,1 15,23H9C8.46,23 8,22.55 8,22V11.27L2,5.27M12,0C15.05,0 17.8,1.23 19.77,3.23L18.36,4.64C16.75,3 14.5,2 12,2C9.72,2 7.64,2.85 6.06,4.24L4.64,2.82C6.59,1.07 9.17,0 12,0M12,4C13.94,4 15.69,4.78 16.95,6.05L15.55,7.46C14.64,6.56 13.39,6 12,6C10.83,6 9.76,6.4 8.9,7.08L7.5,5.66C8.7,4.62 10.28,4 12,4M15,9C15.56,9 16,9.45 16,10V14.18L13.5,11.69L13.31,11.5L10.82,9H15M10.03,13.3C10.16,14.16 10.84,14.85 11.71,15L10.03,13.3Z";
var mdiRemoteTv = "M9,2C7.89,2 7,2.89 7,4V20C7,21.11 7.89,22 9,22H15C16.11,22 17,21.11 17,20V4C17,2.89 16.11,2 15,2H13V4H11V2H9M11,6H13V8H15V10H13V12H11V10H9V8H11V6M9,14H11V16H9V14M13,14H15V16H13V14M9,18H11V20H9V18M13,18H15V20H13V18Z";
var mdiRemoteTvOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17,20.25C16.86,21.24 16,22 15,22H9A2,2 0 0,1 7,20V10.27L2,5.27M9,2H11V4H13V2H15A2,2 0 0,1 17,4V15.18L13,11.18V10H15V8H13V6H11V8H9.82L7,5.18V4A2,2 0 0,1 9,2M9,20H11V18H9V20M13,20H15V18.27L14.73,18H13V20M9,14V16H11V14.27L10.73,14H9Z";
var mdiRenameBox = "M18,17H10.5L12.5,15H18M6,17V14.5L13.88,6.65C14.07,6.45 14.39,6.45 14.59,6.65L16.35,8.41C16.55,8.61 16.55,8.92 16.35,9.12L8.47,17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiReorderHorizontal = "M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z";
var mdiReorderVertical = "M9,3V21H11V3H9M5,3V21H7V3H5M13,3V21H15V3H13M19,3H17V21H19V3Z";
var mdiRepeat = "M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z";
var mdiRepeatOff = "M2,5.27L3.28,4L20,20.72L18.73,22L15.73,19H7V22L3,18L7,14V17H13.73L7,10.27V11H5V8.27L2,5.27M17,13H19V17.18L17,15.18V13M17,5V2L21,6L17,10V7H8.82L6.82,5H17Z";
var mdiRepeatOnce = "M13,15V9H12L10,10V11H11.5V15M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z";
var mdiReplay = "M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z";
var mdiReply = "M10,9V5L3,12L10,19V14.9C15,14.9 18.5,16.5 21,20C20,15 17,10 10,9Z";
var mdiReplyAll = "M13,9V5L6,12L13,19V14.9C18,14.9 21.5,16.5 24,20C23,15 20,10 13,9M7,8V5L0,12L7,19V16L3,12L7,8Z";
var mdiReplyAllOutline = "M11,9.8V10.7L12.7,10.9C15.3,11.3 17.2,12.3 18.6,13.6C16.9,13.1 15.1,12.8 13,12.8H11V14.1L8.8,12L11,9.8M13,5L6,12L13,19V14.9C18,14.9 21.5,16.5 24,20C23,15 20,10 13,9M7,8V5L0,12L7,19V16L3,12";
var mdiReplyCircle = "M2 12C2 17.5 6.5 22 12 22S22 17.5 22 12 17.5 2 12 2 2 6.5 2 12M5 11L10 6V9C15.06 9.73 17.28 13.33 18 17C16.19 14.43 13.61 13 10 13V16L5 11Z";
var mdiReplyOutline = "M8,9.8V10.7L9.7,11C12.3,11.4 14.2,12.4 15.6,13.7C13.9,13.2 12.1,12.9 10,12.9H8V14.2L5.8,12L8,9.8M10,5L3,12L10,19V14.9C15,14.9 18.5,16.5 21,20C20,15 17,10 10,9";
var mdiReproduction = "M12.72,13.15L13.62,12.26C13.6,11 14.31,9.44 15.62,8.14C17.57,6.18 20.11,5.55 21.28,6.72C22.45,7.89 21.82,10.43 19.86,12.38C18.56,13.69 17,14.4 15.74,14.38L14.85,15.28C14.5,15.61 14,15.66 13.6,15.41C12.76,15.71 12,16.08 11.56,16.8C11.03,17.68 11.03,19.1 10.47,19.95C9.91,20.81 8.79,21.1 7.61,21.1C6.43,21.1 5,21 3.95,19.5L6.43,19.92C7,20 8.5,19.39 9.05,18.54C9.61,17.68 9.61,16.27 10.14,15.38C10.61,14.6 11.5,14.23 12.43,13.91C12.42,13.64 12.5,13.36 12.72,13.15M7,2A5,5 0 0,1 12,7A5,5 0 0,1 7,12A5,5 0 0,1 2,7A5,5 0 0,1 7,2M7,4A3,3 0 0,0 4,7A3,3 0 0,0 7,10A3,3 0 0,0 10,7A3,3 0 0,0 7,4Z";
var mdiResistor = "M2,11H7L10.07,15.35L13.11,4L18,11H22V13H17L13.93,8.65L10.89,20L6,13H2V11Z";
var mdiResistorNodes = "M2,11H3.67C4.08,9.83 5.19,9 6.5,9A3,3 0 0,1 9.5,12C9.5,12.65 9.29,13.25 8.94,13.74L10.07,15.35L13.11,4L14.61,6.13L16.7,9.11L17.5,9C18.81,9 19.92,9.83 20.33,11H22V13H20.33C19.92,14.17 18.81,15 17.5,15A3,3 0 0,1 14.5,12C14.5,11.35 14.71,10.75 15.06,10.26L13.93,8.65L10.89,20L7.3,14.89C7.05,14.96 6.78,15 6.5,15C5.19,15 4.08,14.17 3.67,13H2V11M17.5,10.5A1.5,1.5 0 0,0 16,12A1.5,1.5 0 0,0 17.5,13.5A1.5,1.5 0 0,0 19,12A1.5,1.5 0 0,0 17.5,10.5M6.5,10.5A1.5,1.5 0 0,0 5,12A1.5,1.5 0 0,0 6.5,13.5A1.5,1.5 0 0,0 8,12A1.5,1.5 0 0,0 6.5,10.5Z";
var mdiResize = "M10.59,12L14.59,8H11V6H18V13H16V9.41L12,13.41V16H20V4H8V12H10.59M22,2V18H12V22H2V12H6V2H22M10,14H4V20H10V14Z";
var mdiResizeBottomRight = "M22,22H20V20H22V22M22,18H20V16H22V18M18,22H16V20H18V22M18,18H16V16H18V18M14,22H12V20H14V22M22,14H20V12H22V14Z";
var mdiResponsive = "M4,6V16H9V12A2,2 0 0,1 11,10H16A2,2 0 0,1 18,12V16H20V6H4M0,20V18H4A2,2 0 0,1 2,16V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H18V20C18,21.11 17.1,22 16,22H11A2,2 0 0,1 9,20H9L0,20M11.5,20A0.5,0.5 0 0,0 11,20.5A0.5,0.5 0 0,0 11.5,21A0.5,0.5 0 0,0 12,20.5A0.5,0.5 0 0,0 11.5,20M15.5,20A0.5,0.5 0 0,0 15,20.5A0.5,0.5 0 0,0 15.5,21A0.5,0.5 0 0,0 16,20.5A0.5,0.5 0 0,0 15.5,20M13,20V21H14V20H13M11,12V19H16V12H11Z";
var mdiRestart = "M12,4C14.1,4 16.1,4.8 17.6,6.3C20.7,9.4 20.7,14.5 17.6,17.6C15.8,19.5 13.3,20.2 10.9,19.9L11.4,17.9C13.1,18.1 14.9,17.5 16.2,16.2C18.5,13.9 18.5,10.1 16.2,7.7C15.1,6.6 13.5,6 12,6V10.6L7,5.6L12,0.6V4M6.3,17.6C3.7,15 3.3,11 5.1,7.9L6.6,9.4C5.5,11.6 5.9,14.4 7.8,16.2C8.3,16.7 8.9,17.1 9.6,17.4L9,19.4C8,19 7.1,18.4 6.3,17.6Z";
var mdiRestartAlert = "M10 4.03V.633L5 5.63L10 10.63V6.03C11.5 6.03 13.11 6.63 14.21 7.73C16.5 10.13 16.5 13.93 14.21 16.23C12.91 17.53 11.11 18.13 9.4 17.93L8.9 19.93C11.31 20.23 13.81 19.53 15.61 17.63C18.7 14.53 18.7 9.43 15.61 6.33C14.11 4.83 12.11 4.03 10 4.03M4.31 17.63C5.11 18.43 6 19.03 7 19.43L7.61 17.43C6.91 17.13 6.31 16.73 5.81 16.23C3.91 14.43 3.5 11.63 4.61 9.43L3.11 7.93C1.31 11.03 1.71 15.03 4.31 17.63M20 13H22V7H20V13M20 17H22V15H20V17Z";
var mdiRestartOff = "M20.8,22.7L16.6,18.5C14.9,19.7 12.9,20.2 10.9,19.9L11.4,17.9C12.7,18 14,17.7 15.1,17L1.1,3L2.4,1.7L16.5,15.8L17.9,17.2L22.1,21.4L20.8,22.7M12,6C13.5,6 15.1,6.6 16.2,7.8C18,9.6 18.4,12.2 17.5,14.4L19,15.9C20.7,12.9 20.2,9 17.6,6.4C16.1,4.8 14,4 12,4V0.7L7.9,4.7L12,8.8V6M6.6,9.4L5.1,7.9C3.3,11 3.7,15 6.3,17.7C7.1,18.4 8,19 9,19.4L9.5,17.4C8.9,17.1 8.3,16.7 7.7,16.2C5.9,14.4 5.5,11.6 6.6,9.4Z";
var mdiRestore = "M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z";
var mdiRestoreAlert = "M13 3C8 3 4 7 4 12H1L4.9 15.9L5 16L9 12H6C6 8.1 9.1 5 13 5S20 8.1 20 12 16.9 19 13 19C11.1 19 9.3 18.2 8.1 16.9L6.7 18.3C8.3 20 10.5 21 13 21C18 21 22 17 22 12S18 3 13 3M12 15H14V17H12V15M12 7H14V13H12V7";
var mdiRewind = "M11.5,12L20,18V6M11,18V6L2.5,12L11,18Z";
var mdiRewind10 = "M12.5,3C17.15,3 21.08,6.03 22.47,10.22L20.1,11C19.05,7.81 16.04,5.5 12.5,5.5C10.54,5.5 8.77,6.22 7.38,7.38L10,10H3V3L5.6,5.6C7.45,4 9.85,3 12.5,3M10,12V22H8V14H6V12H10M18,14V20C18,21.11 17.11,22 16,22H14A2,2 0 0,1 12,20V14A2,2 0 0,1 14,12H16C17.11,12 18,12.9 18,14M14,14V20H16V14H14Z";
var mdiRewind30 = "M19,14V20C19,21.11 18.11,22 17,22H15A2,2 0 0,1 13,20V14A2,2 0 0,1 15,12H17C18.11,12 19,12.9 19,14M15,14V20H17V14H15M11,20C11,21.11 10.1,22 9,22H5V20H9V18H7V16H9V14H5V12H9A2,2 0 0,1 11,14V15.5A1.5,1.5 0 0,1 9.5,17A1.5,1.5 0 0,1 11,18.5V20M12.5,3C17.15,3 21.08,6.03 22.47,10.22L20.1,11C19.05,7.81 16.04,5.5 12.5,5.5C10.54,5.5 8.77,6.22 7.38,7.38L10,10H3V3L5.6,5.6C7.45,4 9.85,3 12.5,3Z";
var mdiRewind5 = "M12.5 3C17.15 3 21.08 6.03 22.47 10.22L20.1 11C19.05 7.81 16.04 5.5 12.5 5.5C10.54 5.5 8.77 6.22 7.38 7.38L10 10H3V3L5.6 5.6C7.45 4 9.85 3 12.5 3M9 12H15V14H11V16H13C14.11 16 15 16.9 15 18V20C15 21.11 14.11 22 13 22H9V20H13V18H9V12Z";
var mdiRewind60 = "M19 14V20C19 21.1 18.1 22 17 22H15C13.9 22 13 21.1 13 20V14C13 12.9 13.9 12 15 12H17C18.1 12 19 12.9 19 14M15 14V20H17V14H15M12.5 3C17.1 3 21.1 6 22.5 10.2L20.1 11C19 7.8 16 5.5 12.5 5.5C10.5 5.5 8.8 6.2 7.4 7.4L10 10H3V3L5.6 5.6C7.4 4 9.9 3 12.5 3M7 12C5.9 12 5 12.9 5 14V20C5 21.1 5.9 22 7 22H9C10.1 22 11 21.1 11 20V18C11 16.9 10.1 16 9 16H7V14H11V12H7M7 18H9V20H7V18Z";
var mdiRewindOutline = "M10,9.9L7,12L10,14.1V9.9M19,9.9L16,12L19,14.1V9.9M12,6V18L3.5,12L12,6M21,6V18L12.5,12L21,6Z";
var mdiRhombus = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2Z";
var mdiRhombusMedium = "M12 6.46C11.72 6.46 11.44 6.56 11.22 6.78L6.78 11.22C6.35 11.65 6.35 12.35 6.78 12.78L11.22 17.22C11.65 17.65 12.35 17.65 12.78 17.22L17.22 12.78C17.65 12.35 17.65 11.65 17.22 11.22L12.78 6.78C12.56 6.56 12.28 6.46 12 6.46Z";
var mdiRhombusMediumOutline = "M12 6.46C11.72 6.46 11.44 6.56 11.22 6.78L6.78 11.22C6.35 11.65 6.35 12.35 6.78 12.78L11.22 17.22C11.65 17.65 12.35 17.65 12.78 17.22L17.22 12.78C17.65 12.35 17.65 11.65 17.22 11.22L12.78 6.78C12.56 6.56 12.28 6.46 12 6.46M12 8.83L15.17 12L12 15.17L8.83 12L12 8.83Z";
var mdiRhombusOutline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L20 12L12 20L4 12Z";
var mdiRhombusSplit = "M12 2C11.5 2 11 2.19 10.59 2.59L7.29 5.88L12 10.58L16.71 5.88L13.41 2.59C13 2.19 12.5 2 12 2M5.88 7.29L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L5.88 16.71L10.58 12L5.88 7.29M18.12 7.29L13.42 12L18.12 16.71L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L18.12 7.29M12 13.42L7.29 18.12L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L16.71 18.12L12 13.42Z";
var mdiRhombusSplitOutline = "M12 2C11.5 2 11 2.19 10.59 2.59L2.59 10.59C1.8 11.37 1.8 12.63 2.59 13.41L10.59 21.41C11.37 22.2 12.63 22.2 13.41 21.41L21.41 13.41C22.2 12.63 22.2 11.37 21.41 10.59L13.41 2.59C13 2.19 12.5 2 12 2M12 4L15.29 7.29L12 10.59L8.71 7.29L12 4M7.29 8.71L10.59 12L7.29 15.29L4 12L7.29 8.71M16.71 8.71L20 12L16.71 15.29L13.41 12L16.71 8.71M12 13.41L15.29 16.71L12 20L8.71 16.71L12 13.41Z";
var mdiRibbon = "M13.41,19.31L16.59,22.5L18,21.07L14.83,17.9M15.54,11.53H15.53L12,15.07L8.47,11.53H8.46V11.53C7.56,10.63 7,9.38 7,8A5,5 0 0,1 12,3A5,5 0 0,1 17,8C17,9.38 16.44,10.63 15.54,11.53M16.9,13C18.2,11.73 19,9.96 19,8A7,7 0 0,0 12,1A7,7 0 0,0 5,8C5,9.96 5.81,11.73 7.1,13V13L10.59,16.5L6,21.07L7.41,22.5L16.9,13Z";
var mdiRice = "M22,11H19.7C19.4,9.9 18.9,8.8 18.2,8L21.6,2.6L19.9,1.5L16.7,6.6C16.3,6.3 16,6.1 15.5,5.9L16.4,2.3L14.5,1.8L13.7,5.2C13.1,5.1 12.6,5 12,5C8.3,5 5.2,7.6 4.3,11H2C2,15.1 4.5,18.6 8,20.2V22H16V20.2C19.5,18.6 22,15.1 22,11M12,7C14.6,7 16.8,8.7 17.6,11H6.4C7.2,8.7 9.4,7 12,7Z";
var mdiRickshaw = "M20 14.05V12.73C20 12.26 19.84 11.8 19.54 11.44L15.6 6.72C15.22 6.26 14.66 6 14.06 6H4C2.9 6 2 6.9 2 8V15C2 16.1 2.9 17 4 17H4.05C4.28 18.14 5.29 19 6.5 19S8.72 18.14 8.95 17H17.05C17.28 18.14 18.29 19 19.5 19C20.88 19 22 17.88 22 16.5C22 15.29 21.14 14.28 20 14.05M3.5 8C3.5 7.73 3.73 7.5 4 7.5H7V12H3.5V8M6.5 17.5C5.95 17.5 5.5 17.05 5.5 16.5S5.95 15.5 6.5 15.5 7.5 15.95 7.5 16.5 7.05 17.5 6.5 17.5M13 15.5H9V14H11V12H9V7.5H13V15.5M15 8.34L18.05 12H15V8.34M19.5 17.5C18.95 17.5 18.5 17.05 18.5 16.5S18.95 15.5 19.5 15.5 20.5 15.95 20.5 16.5 20.05 17.5 19.5 17.5Z";
var mdiRickshawElectric = "M20 12.05V10.73C20 10.26 19.84 9.8 19.54 9.44L15.6 4.72C15.22 4.26 14.66 4 14.06 4H4C2.9 4 2 4.9 2 6V13C2 14.1 2.9 15 4 15H4.05C4.28 16.14 5.29 17 6.5 17S8.72 16.14 8.95 15H17.05C17.28 16.14 18.29 17 19.5 17C20.88 17 22 15.88 22 14.5C22 13.29 21.14 12.28 20 12.05M3.5 6C3.5 5.73 3.73 5.5 4 5.5H7V10H3.5V6M6.5 15.5C5.95 15.5 5.5 15.05 5.5 14.5S5.95 13.5 6.5 13.5 7.5 13.95 7.5 14.5 7.05 15.5 6.5 15.5M13 13.5H9V12H11V10H9V5.5H13V13.5M15 6.34L18.05 10H15V6.34M19.5 15.5C18.95 15.5 18.5 15.05 18.5 14.5S18.95 13.5 19.5 13.5 20.5 13.95 20.5 14.5 20.05 15.5 19.5 15.5M11 20H7L13 23V21H17L11 18V20Z";
var mdiRing = "M12,10L8,4.4L9.6,2H14.4L16,4.4L12,10M15.5,6.8L14.3,8.5C16.5,9.4 18,11.5 18,14A6,6 0 0,1 12,20A6,6 0 0,1 6,14C6,11.5 7.5,9.4 9.7,8.5L8.5,6.8C5.8,8.1 4,10.8 4,14A8,8 0 0,0 12,22A8,8 0 0,0 20,14C20,10.8 18.2,8.1 15.5,6.8Z";
var mdiRivet = "M11.43,2C10.61,2 9.94,2.65 9.94,3.5C9.94,4.64 9.94,5.8 9.94,6.96H7.95V7.95H15.91V6.96H13.92C13.92,5.8 13.92,4.64 13.92,3.5C13.92,2.65 13.25,2 12.43,2H11.43M10.94,8.95V21.87L11.93,22.87L12.92,21.87V8.95H10.94Z";
var mdiRoad = "M11,16H13V20H11M11,10H13V14H11M11,4H13V8H11M4,22H20V2H4V22Z";
var mdiRoadVariant = "M18.1,4.8C18,4.3 17.6,4 17.1,4H13L13.2,7H10.8L11,4H6.8C6.3,4 5.9,4.4 5.8,4.8L3.1,18.8C3,19.4 3.5,20 4.1,20H10L10.3,15H13.7L14,20H19.8C20.4,20 20.9,19.4 20.8,18.8L18.1,4.8M10.4,13L10.6,9H13.2L13.4,13H10.4Z";
var mdiRobber = "M10.7 12.5C10.7 12.8 9.4 13.2 8.4 13.2S6.3 12.5 6.3 12.3C6.3 12 7 11.1 8.6 11C9.5 10.9 10.5 11.5 10.7 12.5M15.4 11C14.4 10.9 13.5 11.5 13.3 12.5C13.3 12.8 14.5 13.2 15.6 13.2C16.7 13.2 17.7 12.5 17.7 12.3S17 11.1 15.4 11M22 12C22 17.5 17.5 22 12 22S2 17.5 2 12 6.5 2 12 2 22 6.5 22 12M20 11.2C20 9.2 19.3 8.5 16.7 8.5C14.1 8.5 13.3 9.6 12 9.6S10 8.5 7.3 8.5 4 9.1 4 11.2C4 14.6 5.5 16.5 7.6 16.5C9.2 16.5 10.4 14.5 12 14.5S14.7 16.5 16.4 16.5C18.5 16.5 20 14.6 20 11.2Z";
var mdiRobot = "M12,2A2,2 0 0,1 14,4C14,4.74 13.6,5.39 13,5.73V7H14A7,7 0 0,1 21,14H22A1,1 0 0,1 23,15V18A1,1 0 0,1 22,19H21V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V19H2A1,1 0 0,1 1,18V15A1,1 0 0,1 2,14H3A7,7 0 0,1 10,7H11V5.73C10.4,5.39 10,4.74 10,4A2,2 0 0,1 12,2M7.5,13A2.5,2.5 0 0,0 5,15.5A2.5,2.5 0 0,0 7.5,18A2.5,2.5 0 0,0 10,15.5A2.5,2.5 0 0,0 7.5,13M16.5,13A2.5,2.5 0 0,0 14,15.5A2.5,2.5 0 0,0 16.5,18A2.5,2.5 0 0,0 19,15.5A2.5,2.5 0 0,0 16.5,13Z";
var mdiRobotAngry = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M7.5 18C6.12 18 5 16.88 5 15.5C5 14.68 5.4 13.96 6 13.5L9.83 16.38C9.5 17.32 8.57 18 7.5 18M16.5 18C15.43 18 14.5 17.32 14.17 16.38L18 13.5C18.6 13.96 19 14.68 19 15.5C19 16.88 17.88 18 16.5 18Z";
var mdiRobotAngryOutline = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M21 17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C16.76 9 19 11.24 19 14V16H21V17M17.5 15.5C17.5 16.61 16.61 17.5 15.5 17.5C14.53 17.5 13.73 16.81 13.54 15.9L16.5 13.78C17.1 14.13 17.5 14.76 17.5 15.5M7.5 13.78L10.46 15.9C10.28 16.81 9.47 17.5 8.5 17.5C7.4 17.5 6.5 16.61 6.5 15.5C6.5 14.76 6.9 14.13 7.5 13.78Z";
var mdiRobotConfused = "M20 4H18V3H20.5C20.78 3 21 3.22 21 3.5V5.5C21 5.78 20.78 6 20.5 6H20V7H19V5H20V4M19 9H20V8H19V9M17 3H16V7H17V3M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C14.34 7 14.67 7.03 15 7.08V10H19.74C20.53 11.13 21 12.5 21 14H22C22.55 14 23 14.45 23 15M10 15.5C10 14.12 8.88 13 7.5 13S5 14.12 5 15.5 6.12 18 7.5 18 10 16.88 10 15.5M19 15.5C19 14.12 17.88 13 16.5 13S14 14.12 14 15.5 15.12 18 16.5 18 19 16.88 19 15.5M17 8H16V9H17V8Z";
var mdiRobotConfusedOutline = "M19 8H20V9H19V8M20 5H19V7H20V6H20.5C20.78 6 21 5.78 21 5.5V3.5C21 3.22 20.78 3 20.5 3H18V4H20V5M17 3H16V7H17V3M13.5 15.5C13.5 16.61 14.4 17.5 15.5 17.5S17.5 16.61 17.5 15.5 16.61 13.5 15.5 13.5 13.5 14.4 13.5 15.5M17 8H16V9H17V8M22 14H21C21 12.5 20.53 11.13 19.74 10H16.97C18.19 10.91 19 12.36 19 14V16H21V17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C14.34 9 14.68 9.04 15 9.1V7.08C14.67 7.03 14.34 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5Z";
var mdiRobotDead = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M9.86 16.68L8.68 17.86L7.5 16.68L6.32 17.86L5.14 16.68L6.32 15.5L5.14 14.32L6.32 13.14L7.5 14.32L8.68 13.14L9.86 14.32L8.68 15.5L9.86 16.68M18.86 16.68L17.68 17.86L16.5 16.68L15.32 17.86L14.14 16.68L15.32 15.5L14.14 14.32L15.32 13.14L16.5 14.32L17.68 13.14L18.86 14.32L17.68 15.5L18.86 16.68Z";
var mdiRobotDeadOutline = "M10.62 14.44L9.56 15.5L10.62 16.56L9.56 17.62L8.5 16.56L7.44 17.62L6.38 16.56L7.44 15.5L6.38 14.44L7.44 13.38L8.5 14.44L9.56 13.38L10.62 14.44M16.56 13.38L15.5 14.44L14.44 13.38L13.38 14.44L14.44 15.5L13.38 16.56L14.44 17.62L15.5 16.56L16.56 17.62L17.62 16.56L16.56 15.5L17.62 14.44L16.56 13.38M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16Z";
var mdiRobotExcited = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M8.68 17.04L7.5 15.86L6.32 17.04L5.14 15.86L7.5 13.5L9.86 15.86L8.68 17.04M17.68 17.04L16.5 15.86L15.32 17.04L14.14 15.86L16.5 13.5L18.86 15.86L17.68 17.04Z";
var mdiRobotExcitedOutline = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M21 17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C16.76 9 19 11.24 19 14V16H21V17M8.5 13.5L10.86 15.86L9.68 17.04L8.5 15.86L7.32 17.04L6.14 15.86L8.5 13.5M15.5 13.5L17.86 15.86L16.68 17.04L15.5 15.86L14.32 17.04L13.14 15.86L15.5 13.5Z";
var mdiRobotHappy = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M9.79 16.5C9.4 15.62 8.53 15 7.5 15S5.6 15.62 5.21 16.5C5.08 16.19 5 15.86 5 15.5C5 14.12 6.12 13 7.5 13S10 14.12 10 15.5C10 15.86 9.92 16.19 9.79 16.5M18.79 16.5C18.4 15.62 17.5 15 16.5 15S14.6 15.62 14.21 16.5C14.08 16.19 14 15.86 14 15.5C14 14.12 15.12 13 16.5 13S19 14.12 19 15.5C19 15.86 18.92 16.19 18.79 16.5Z";
var mdiRobotHappyOutline = "M10.5 15.5C10.5 15.87 10.4 16.2 10.22 16.5C9.88 15.91 9.24 15.5 8.5 15.5S7.12 15.91 6.78 16.5C6.61 16.2 6.5 15.87 6.5 15.5C6.5 14.4 7.4 13.5 8.5 13.5S10.5 14.4 10.5 15.5M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16M15.5 13.5C14.4 13.5 13.5 14.4 13.5 15.5C13.5 15.87 13.61 16.2 13.78 16.5C14.12 15.91 14.76 15.5 15.5 15.5S16.88 15.91 17.22 16.5C17.4 16.2 17.5 15.87 17.5 15.5C17.5 14.4 16.61 13.5 15.5 13.5Z";
var mdiRobotIndustrial = "M18.41,4L16,6.41V6.59L18.41,9H22V11H17.59L16,9.41V12H15A2,2 0 0,1 13,10V7.5H9.86C9.77,7.87 9.62,8.22 9.42,8.55L15.18,19H20A2,2 0 0,1 22,21V22H2V21A2,2 0 0,1 4,19H10.61L5.92,10.5C4.12,10.47 2.56,9.24 2.11,7.5C1.56,5.36 2.85,3.18 5,2.63C7.13,2.08 9.31,3.36 9.86,5.5H13V3A2,2 0 0,1 15,1H16V3.59L17.59,2H22V4H18.41M6,4.5A2,2 0 0,0 4,6.5A2,2 0 0,0 6,8.5A2,2 0 0,0 8,6.5A2,2 0 0,0 6,4.5Z";
var mdiRobotLove = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M9.7 15.45L8.97 16.18L7.5 17.65L5.3 15.45C4.9 15.05 4.9 14.39 5.3 14C5.71 13.58 6.36 13.58 6.77 14L7.5 14.72L8.23 14C8.64 13.58 9.29 13.58 9.7 14C10.1 14.39 10.1 15.05 9.7 15.45M18.7 15.45L17.97 16.18L16.5 17.65L14.3 15.45C13.9 15.05 13.9 14.39 14.3 14C14.71 13.58 15.36 13.58 15.77 14L16.5 14.72L17.23 14C17.64 13.58 18.29 13.58 18.7 14C19.1 14.39 19.1 15.05 18.7 15.45Z";
var mdiRobotLoveOutline = "M22 14H21C21 10.13 17.87 7 14 7H13V5.73C13.6 5.39 14 4.74 14 4C14 2.9 13.11 2 12 2S10 2.9 10 4C10 4.74 10.4 5.39 11 5.73V7H10C6.13 7 3 10.13 3 14H2C1.45 14 1 14.45 1 15V18C1 18.55 1.45 19 2 19H3V20C3 21.11 3.9 22 5 22H19C20.11 22 21 21.11 21 20V19H22C22.55 19 23 18.55 23 18V15C23 14.45 22.55 14 22 14M21 17H19V20H5V17H3V16H5V14C5 11.24 7.24 9 10 9H14C16.76 9 19 11.24 19 14V16H21V17M10.7 14C11.1 14.39 11.1 15.05 10.7 15.45L9.97 16.18L8.5 17.65L6.3 15.45C5.9 15.05 5.9 14.39 6.3 14C6.71 13.58 7.36 13.58 7.77 14L8.5 14.72L9.23 14C9.64 13.58 10.29 13.58 10.7 14M17.7 14C18.1 14.39 18.1 15.05 17.7 15.45L16.97 16.18L15.5 17.65L13.3 15.45C12.9 15.05 12.9 14.39 13.3 14C13.71 13.58 14.36 13.58 14.77 14L15.5 14.72L16.23 14C16.64 13.58 17.29 13.58 17.7 14Z";
var mdiRobotMower = "M1 14V5H13C18.5 5 23 9.5 23 15V17H20.83C20.42 18.17 19.31 19 18 19C16.69 19 15.58 18.17 15.17 17H10C9.09 18.21 7.64 19 6 19C3.24 19 1 16.76 1 14M6 11C4.34 11 3 12.34 3 14C3 15.66 4.34 17 6 17C7.66 17 9 15.66 9 14C9 12.34 7.66 11 6 11M15 10V12H20.25C19.92 11.27 19.5 10.6 19 10H15Z";
var mdiRobotMowerOutline = "M1 14C1 16.76 3.24 19 6 19C7.64 19 9.09 18.21 10 17H15.17C15.58 18.17 16.7 19 18 19C19.31 19 20.42 18.17 20.83 17H23V15C23 9.5 18.5 5 13 5H1V14M21 15H10.9C10.97 14.68 11 14.34 11 14C11 11.24 8.76 9 6 9C4.87 9 3.84 9.37 3 10V7H12.5C15.1 7 17.42 8.16 19 10H15V12H20.25C20.67 12.92 20.92 13.94 21 15M6 11C7.66 11 9 12.34 9 14C9 15.66 7.66 17 6 17C4.34 17 3 15.66 3 14C3 12.34 4.34 11 6 11Z";
var mdiRobotOff = "M23 15V18C23 18.5 22.64 18.88 22.17 18.97L18.97 15.77C19 15.68 19 15.59 19 15.5C19 14.12 17.88 13 16.5 13C16.41 13 16.32 13 16.23 13.03L10.2 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M22.11 21.46L20.84 22.73L19.89 21.78C19.62 21.92 19.32 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 11.53 4.29 9.36 6.22 8.11L1.11 3L2.39 1.73L22.11 21.46M10 15.5C10 14.12 8.88 13 7.5 13S5 14.12 5 15.5 6.12 18 7.5 18 10 16.88 10 15.5M16.07 17.96L14.04 15.93C14.23 16.97 15.04 17.77 16.07 17.96Z";
var mdiRobotOffOutline = "M23 15V18C23 18.5 22.64 18.88 22.17 18.97L20.2 17H21V16H19.2L19 15.8V14C19 11.24 16.76 9 14 9H12.2L10.2 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5M22.11 21.46L20.84 22.73L19.89 21.78C19.62 21.92 19.32 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 11.53 4.29 9.36 6.22 8.11L1.11 3L2.39 1.73L22.11 21.46M18.11 20L15.6 17.5C15.57 17.5 15.53 17.5 15.5 17.5C14.4 17.5 13.5 16.61 13.5 15.5C13.5 15.47 13.5 15.43 13.5 15.4L7.7 9.59C6.1 10.42 5 12.08 5 14V16H3V17H5V20H18.11Z";
var mdiRobotOutline = "M17.5 15.5C17.5 16.61 16.61 17.5 15.5 17.5S13.5 16.61 13.5 15.5 14.4 13.5 15.5 13.5 17.5 14.4 17.5 15.5M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16Z";
var mdiRobotVacuum = "M12,2C14.65,2 17.19,3.06 19.07,4.93L17.65,6.35C16.15,4.85 14.12,4 12,4C9.88,4 7.84,4.84 6.35,6.35L4.93,4.93C6.81,3.06 9.35,2 12,2M3.66,6.5L5.11,7.94C4.39,9.17 4,10.57 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,10.57 19.61,9.17 18.88,7.94L20.34,6.5C21.42,8.12 22,10.04 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,10.04 2.58,8.12 3.66,6.5M12,6A6,6 0 0,1 18,12C18,13.59 17.37,15.12 16.24,16.24L14.83,14.83C14.08,15.58 13.06,16 12,16C10.94,16 9.92,15.58 9.17,14.83L7.76,16.24C6.63,15.12 6,13.59 6,12A6,6 0 0,1 12,6M12,8A1,1 0 0,0 11,9A1,1 0 0,0 12,10A1,1 0 0,0 13,9A1,1 0 0,0 12,8Z";
var mdiRobotVacuumVariant = "M5,3A2,2 0 0,0 3,5V7H5V5H19V7H21V5A2,2 0 0,0 19,3H5M8,7V9H16V7H8M3,9V12A9,9 0 0,0 12,21A9,9 0 0,0 21,12V9H19V12A7,7 0 0,1 12,19A7,7 0 0,1 5,12V9H3M12,12A2.5,2.5 0 0,0 9.5,14.5A2.5,2.5 0 0,0 12,17A2.5,2.5 0 0,0 14.5,14.5A2.5,2.5 0 0,0 12,12Z";
var mdiRocket = "M20 22L16.14 20.45C16.84 18.92 17.34 17.34 17.65 15.73L20 22M7.86 20.45L4 22L6.35 15.73C6.66 17.34 7.16 18.92 7.86 20.45M12 2C12 2 17 4 17 12C17 15.1 16.25 17.75 15.33 19.83C15 20.55 14.29 21 13.5 21H10.5C9.71 21 9 20.55 8.67 19.83C7.76 17.75 7 15.1 7 12C7 4 12 2 12 2M12 12C13.1 12 14 11.1 14 10C14 8.9 13.1 8 12 8C10.9 8 10 8.9 10 10C10 11.1 10.9 12 12 12Z";
var mdiRocketLaunch = "M13.13 22.19L11.5 18.36C13.07 17.78 14.54 17 15.9 16.09L13.13 22.19M5.64 12.5L1.81 10.87L7.91 8.1C7 9.46 6.22 10.93 5.64 12.5M21.61 2.39C21.61 2.39 16.66 .269 11 5.93C8.81 8.12 7.5 10.53 6.65 12.64C6.37 13.39 6.56 14.21 7.11 14.77L9.24 16.89C9.79 17.45 10.61 17.63 11.36 17.35C13.5 16.53 15.88 15.19 18.07 13C23.73 7.34 21.61 2.39 21.61 2.39M14.54 9.46C13.76 8.68 13.76 7.41 14.54 6.63S16.59 5.85 17.37 6.63C18.14 7.41 18.15 8.68 17.37 9.46C16.59 10.24 15.32 10.24 14.54 9.46M8.88 16.53L7.47 15.12L8.88 16.53M6.24 22L9.88 18.36C9.54 18.27 9.21 18.12 8.91 17.91L4.83 22H6.24M2 22H3.41L8.18 17.24L6.76 15.83L2 20.59V22M2 19.17L6.09 15.09C5.88 14.79 5.73 14.47 5.64 14.12L2 17.76V19.17Z";
var mdiRocketLaunchOutline = "M13.13 22.19L11.5 18.36C13.07 17.78 14.54 17 15.9 16.09L13.13 22.19M5.64 12.5L1.81 10.87L7.91 8.1C7 9.46 6.22 10.93 5.64 12.5M19.22 4C19.5 4 19.75 4 19.96 4.05C20.13 5.44 19.94 8.3 16.66 11.58C14.96 13.29 12.93 14.6 10.65 15.47L8.5 13.37C9.42 11.06 10.73 9.03 12.42 7.34C15.18 4.58 17.64 4 19.22 4M19.22 2C17.24 2 14.24 2.69 11 5.93C8.81 8.12 7.5 10.53 6.65 12.64C6.37 13.39 6.56 14.21 7.11 14.77L9.24 16.89C9.62 17.27 10.13 17.5 10.66 17.5C10.89 17.5 11.13 17.44 11.36 17.35C13.5 16.53 15.88 15.19 18.07 13C23.73 7.34 21.61 2.39 21.61 2.39S20.7 2 19.22 2M14.54 9.46C13.76 8.68 13.76 7.41 14.54 6.63S16.59 5.85 17.37 6.63C18.14 7.41 18.15 8.68 17.37 9.46C16.59 10.24 15.32 10.24 14.54 9.46M8.88 16.53L7.47 15.12L8.88 16.53M6.24 22L9.88 18.36C9.54 18.27 9.21 18.12 8.91 17.91L4.83 22H6.24M2 22H3.41L8.18 17.24L6.76 15.83L2 20.59V22M2 19.17L6.09 15.09C5.88 14.79 5.73 14.47 5.64 14.12L2 17.76V19.17Z";
var mdiRocketOutline = "M12 2C12 2 7 4 7 12C7 15.1 7.76 17.75 8.67 19.83C9 20.55 9.71 21 10.5 21H13.5C14.29 21 15 20.55 15.33 19.83C16.25 17.75 17 15.1 17 12C17 4 12 2 12 2M13.5 19H10.5C9.5 16.76 9 14.41 9 12C9 7.36 10.9 5.2 12 4.33C13.1 5.2 15 7.36 15 12C15 14.41 14.5 16.76 13.5 19M20 22L16.14 20.45C16.84 18.92 17.34 17.34 17.65 15.73M7.86 20.45L4 22L6.35 15.73C6.66 17.34 7.16 18.92 7.86 20.45M12 12C10.9 12 10 11.1 10 10C10 8.9 10.9 8 12 8C13.1 8 14 8.9 14 10C14 11.1 13.1 12 12 12Z";
var mdiRodent = "M21.33 17.39C22.73 18.66 21.8 21 19.92 21H11.06C8.25 21 6 18.75 6 15.94V15.89C3.7 15.42 2 13.41 2 11C2 8.25 4.22 6 7 6H9.5C9.8 6 10 5.77 10 5.5S9.8 5 9.5 5H7V3H9.5C10.88 3 12 4.13 12 5.5C12 6.89 10.88 8 9.5 8H7C5.34 8 4 9.33 4 11C4 12.37 4.92 13.5 6.14 13.87C6.7 11.67 8.67 10 11.06 10C11.86 10 12.66 10.22 13.36 10.55C11.95 11.34 11 12.8 11 14.5C11 15.75 11.5 16.87 12.33 17.67L13.03 16.97C12.38 16.36 12 15.47 12 14.5C12 11.91 14.34 11 15.5 11C17.58 11 19.45 12.89 18.94 15.23L21.33 17.39M18 19C18.56 19 19 18.56 19 18S18.56 17 18 17 17 17.44 17 18 17.44 19 18 19Z";
var mdiRollerSkate = "M19,15C19,15 19,16 17,16C15,16 4,16 4,16V3H11L11.21,4.5H9.24V6H11.43L11.64,7.5H9.24V9H11.86L12,10H14C14,10 19,10 19,15M6.5,17A2.5,2.5 0 0,0 4,19.5A2.5,2.5 0 0,0 6.5,22A2.5,2.5 0 0,0 9,19.5A2.5,2.5 0 0,0 6.5,17M16.5,17A2.5,2.5 0 0,0 14,19.5A2.5,2.5 0 0,0 16.5,22A2.5,2.5 0 0,0 19,19.5A2.5,2.5 0 0,0 16.5,17Z";
var mdiRollerSkateOff = "M20.84 22.73L18.73 20.62C18.32 21.43 17.5 22 16.5 22C15.12 22 14 20.88 14 19.5C14 18.5 14.57 17.68 15.38 17.27L14.11 16H4V5.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M19 15C19 10 14 10 14 10H13.2L18.72 15.5C19 15.27 19 15 19 15M11.64 7.5L11.43 6H9.24V4.5H11.21L11 3H6.2L10.7 7.5H11.64M6.5 17C5.12 17 4 18.12 4 19.5S5.12 22 6.5 22 9 20.88 9 19.5 7.88 17 6.5 17Z";
var mdiRollerblade = "M19,15C19,15 19,16 17,16C15,16 4,16 4,16V3H11L11.21,4.5H9.24V6H11.43L11.64,7.5H9.24V9H11.86L12,10H14C14,10 19,10 19,15M5.5,17A2.5,2.5 0 0,0 3,19.5A2.5,2.5 0 0,0 5.5,22A2.5,2.5 0 0,0 8,19.5A2.5,2.5 0 0,0 5.5,17M17.5,17A2.5,2.5 0 0,0 15,19.5A2.5,2.5 0 0,0 17.5,22A2.5,2.5 0 0,0 20,19.5A2.5,2.5 0 0,0 17.5,17M11.5,17A2.5,2.5 0 0,0 9,19.5A2.5,2.5 0 0,0 11.5,22A2.5,2.5 0 0,0 14,19.5A2.5,2.5 0 0,0 11.5,17Z";
var mdiRollerbladeOff = "M20.84 22.73L19.32 21.21C18.86 21.69 18.22 22 17.5 22C16.12 22 15 20.88 15 19.5C15 18.78 15.31 18.14 15.79 17.68L14.11 16H4V5.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M11.64 7.5L11.43 6H9.24V4.5H11.21L11 3H6.2L10.7 7.5H11.64M19 15C19 10 14 10 14 10H13.2L18.72 15.5C19 15.27 19 15 19 15M11.5 17C10.12 17 9 18.12 9 19.5S10.12 22 11.5 22 14 20.88 14 19.5 12.88 17 11.5 17M5.5 17C4.12 17 3 18.12 3 19.5S4.12 22 5.5 22 8 20.88 8 19.5 6.88 17 5.5 17Z";
var mdiRollupjs = "M19.46,8.64C19.46,11.11 18.11,13.26 16.12,14.4C16,14.5 15.93,14.66 16,14.81L19.41,21.55C19.5,21.76 19.36,22 19.13,22H6.1L6.17,21.96C6.66,21.68 10.06,14.97 13.38,11.79C16.7,8.61 17.12,9.67 15.29,6.21C15.29,6.21 16.7,8.96 15.5,9.17C14.56,9.34 12.4,7.25 13.2,5.37C14,3.53 17.15,3.88 18.6,5.38C19.15,6.34 19.46,7.45 19.46,8.64M7.16,13.13C5.84,15.56 5,17.33 4.54,18.57V2.31C4.54,2.14 4.68,2 4.85,2H12.92C15.26,2.04 17.31,3.28 18.46,5.15C17.62,4.1 16.3,3.5 15,3.5C12.53,3.5 11.91,4.4 7.16,13.13Z";
var mdiRomanNumeral1 = "M14 7V9H13V15H14V17H10V15H11V9H10V7H14Z";
var mdiRomanNumeral10 = "M9 7L11 12L9 17H11L12 14.5L13 17H15L13 12L15 7H13L12 9.5L11 7H9Z";
var mdiRomanNumeral2 = "M11 7V9H10V15H11V17H7V15H8V9H7V7H11M17 7V9H16V15H17V17H13V15H14V9H13V7H17Z";
var mdiRomanNumeral3 = "M9 7V9H8V15H9V17H5V15H6V9H5V7H9M14 7V9H13V15H14V17H10V15H11V9H10V7H14M19 7V9H18V15H19V17H15V15H16V9H15V7H19Z";
var mdiRomanNumeral4 = "M12 7L14 17H16L18 7H16L15 12L14 7H12M11 7V9H10V15H11V17H7V15H8V9H7V7H11Z";
var mdiRomanNumeral5 = "M9 7L11 17H13L15 7H13L12 12L11 7H9Z";
var mdiRomanNumeral6 = "M6 7L8 17H10L12 7H10L9 12L8 7H6M17 7V9H16V15H17V17H13V15H14V9H13V7H17Z";
var mdiRomanNumeral7 = "M4 7L6 17H8L10 7H8L7 12L6 7H4M15 7V9H14V15H15V17H11V15H12V9H11V7H15M20 7V9H19V15H20V17H16V15H17V9H16V7H20Z";
var mdiRomanNumeral8 = "M1 7L3 17H5L7 7H5L4 12L3 7H1M12 7V9H11V15H12V17H8V15H9V9H8V7H12M17 7V9H16V15H17V17H13V15H14V9H13V7H17M22 7V9H21V15H22V17H18V15H19V9H18V7H22Z";
var mdiRomanNumeral9 = "M11 7V9H10V15H11V17H7V15H8V9H7V7H11M12 7L14 12L12 17H14L15 14.5L16 17H18L16 12L18 7H16L15 9.5L14 7H12Z";
var mdiRoomService = "M12,5A2,2 0 0,1 14,7C14,7.24 13.96,7.47 13.88,7.69C17.95,8.5 21,11.91 21,16H3C3,11.91 6.05,8.5 10.12,7.69C10.04,7.47 10,7.24 10,7A2,2 0 0,1 12,5M22,19H2V17H22V19Z";
var mdiRoomServiceOutline = "M12,5A2,2 0 0,1 14,7C14,7.24 13.96,7.47 13.88,7.69C17.95,8.5 21,11.91 21,16H3C3,11.91 6.05,8.5 10.12,7.69C10.04,7.47 10,7.24 10,7A2,2 0 0,1 12,5M22,19H2V17H22V19M12,9.5C8.89,9.5 6.25,11.39 5.34,14H18.66C17.75,11.39 15.11,9.5 12,9.5Z";
var mdiRotate3d = "M7.47,21.5C4.2,19.94 1.86,16.76 1.5,13H0C0.5,19.16 5.66,24 11.95,24L12.61,23.97L8.8,20.16L7.47,21.5M8.36,14.96C8.17,14.96 8,14.93 7.84,14.88C7.68,14.82 7.55,14.75 7.44,14.64C7.33,14.54 7.24,14.42 7.18,14.27C7.12,14.13 7.09,13.97 7.09,13.8H5.79C5.79,14.16 5.86,14.5 6,14.75C6.14,15 6.33,15.25 6.56,15.44C6.8,15.62 7.07,15.76 7.38,15.85C7.68,15.95 8,16 8.34,16C8.71,16 9.06,15.95 9.37,15.85C9.69,15.75 9.97,15.6 10.2,15.41C10.43,15.22 10.62,15 10.75,14.69C10.88,14.4 10.95,14.08 10.95,13.72C10.95,13.53 10.93,13.34 10.88,13.16C10.83,13 10.76,12.81 10.65,12.65C10.55,12.5 10.41,12.35 10.25,12.22C10.08,12.09 9.88,12 9.64,11.91C9.84,11.82 10,11.71 10.16,11.58C10.31,11.45 10.43,11.31 10.53,11.16C10.63,11 10.7,10.86 10.75,10.7C10.8,10.54 10.82,10.38 10.82,10.22C10.82,9.86 10.76,9.54 10.64,9.26C10.5,9 10.35,8.75 10.13,8.57C9.93,8.38 9.66,8.24 9.36,8.14C9.05,8.05 8.71,8 8.34,8C8,8 7.65,8.05 7.34,8.16C7.04,8.27 6.77,8.42 6.55,8.61C6.34,8.8 6.17,9 6.04,9.28C5.92,9.54 5.86,9.82 5.86,10.13H7.16C7.16,9.96 7.19,9.81 7.25,9.68C7.31,9.55 7.39,9.43 7.5,9.34C7.61,9.25 7.73,9.17 7.88,9.12C8.03,9.07 8.18,9.04 8.36,9.04C8.76,9.04 9.06,9.14 9.25,9.35C9.44,9.55 9.54,9.84 9.54,10.21C9.54,10.39 9.5,10.55 9.46,10.7C9.41,10.85 9.32,10.97 9.21,11.07C9.1,11.17 8.96,11.25 8.8,11.31C8.64,11.37 8.44,11.4 8.22,11.4H7.45V12.43H8.22C8.44,12.43 8.64,12.45 8.82,12.5C9,12.55 9.15,12.63 9.27,12.73C9.39,12.84 9.5,12.97 9.56,13.13C9.63,13.29 9.66,13.5 9.66,13.7C9.66,14.11 9.54,14.42 9.31,14.63C9.08,14.86 8.76,14.96 8.36,14.96M16.91,9.04C16.59,8.71 16.21,8.45 15.77,8.27C15.34,8.09 14.85,8 14.31,8H11.95V16H14.25C14.8,16 15.31,15.91 15.76,15.73C16.21,15.55 16.6,15.3 16.92,14.97C17.24,14.64 17.5,14.24 17.66,13.78C17.83,13.31 17.92,12.79 17.92,12.21V11.81C17.92,11.23 17.83,10.71 17.66,10.24C17.5,9.77 17.23,9.37 16.91,9.04M16.5,12.2C16.5,12.62 16.47,13 16.38,13.33C16.28,13.66 16.14,13.95 15.95,14.18C15.76,14.41 15.5,14.59 15.24,14.71C14.95,14.83 14.62,14.89 14.25,14.89H13.34V9.12H14.31C15.03,9.12 15.58,9.35 15.95,9.81C16.33,10.27 16.5,10.93 16.5,11.8M11.95,0L11.29,0.03L15.1,3.84L16.43,2.5C19.7,4.06 22.04,7.23 22.39,11H23.89C23.39,4.84 18.24,0 11.95,0Z";
var mdiRotate3dVariant = "M12,5C16.97,5 21,7.69 21,11C21,12.68 19.96,14.2 18.29,15.29C19.36,14.42 20,13.32 20,12.13C20,9.29 16.42,7 12,7V10L8,6L12,2V5M12,19C7.03,19 3,16.31 3,13C3,11.32 4.04,9.8 5.71,8.71C4.64,9.58 4,10.68 4,11.88C4,14.71 7.58,17 12,17V14L16,18L12,22V19Z";
var mdiRotateLeft = "M13,4.07V1L8.45,5.55L13,10V6.09C15.84,6.57 18,9.03 18,12C18,14.97 15.84,17.43 13,17.91V19.93C16.95,19.44 20,16.08 20,12C20,7.92 16.95,4.56 13,4.07M7.1,18.32C8.26,19.22 9.61,19.76 11,19.93V17.9C10.13,17.75 9.29,17.41 8.54,16.87L7.1,18.32M6.09,13H4.07C4.24,14.39 4.79,15.73 5.69,16.89L7.1,15.47C6.58,14.72 6.23,13.88 6.09,13M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11H6.09C6.23,10.13 6.58,9.28 7.11,8.53Z";
var mdiRotateLeftVariant = "M4,2H7A2,2 0 0,1 9,4V20A2,2 0 0,1 7,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M20,15A2,2 0 0,1 22,17V20A2,2 0 0,1 20,22H11V15H20M14,4A8,8 0 0,1 22,12L21.94,13H19.92L20,12A6,6 0 0,0 14,6V9L10,5L14,1V4Z";
var mdiRotateOrbit = "M8,14.25L4.75,11H7C7.25,5.39 9.39,1 12,1C14,1 15.77,3.64 16.55,7.45C20.36,8.23 23,10 23,12C23,13.83 20.83,15.43 17.6,16.3L17.89,14.27C19.8,13.72 21,12.91 21,12C21,10.94 19.35,10 16.87,9.5C16.95,10.29 17,11.13 17,12C17,18.08 14.76,23 12,23C10.17,23 8.57,20.83 7.7,17.6L9.73,17.89C10.28,19.8 11.09,21 12,21C13.66,21 15,16.97 15,12C15,11 14.95,10.05 14.85,9.15C13.95,9.05 13,9 12,9L10.14,9.06L10.43,7.05L12,7C12.87,7 13.71,7.05 14.5,7.13C14,4.65 13.06,3 12,3C10.46,3 9.18,6.5 9,11H11.25L8,14.25M14.25,16L11,19.25V17C5.39,16.75 1,14.61 1,12C1,10.17 3.17,8.57 6.4,7.7L6.11,9.73C4.2,10.28 3,11.09 3,12C3,13.54 6.5,14.82 11,15V12.75L14.25,16Z";
var mdiRotateRight = "M16.89,15.5L18.31,16.89C19.21,15.73 19.76,14.39 19.93,13H17.91C17.77,13.87 17.43,14.72 16.89,15.5M13,17.9V19.92C14.39,19.75 15.74,19.21 16.9,18.31L15.46,16.87C14.71,17.41 13.87,17.76 13,17.9M19.93,11C19.76,9.61 19.21,8.27 18.31,7.11L16.89,8.53C17.43,9.28 17.77,10.13 17.91,11M15.55,5.55L11,1V4.07C7.06,4.56 4,7.92 4,12C4,16.08 7.05,19.44 11,19.93V17.91C8.16,17.43 6,14.97 6,12C6,9.03 8.16,6.57 11,6.09V10L15.55,5.55Z";
var mdiRotateRightVariant = "M10,4V1L14,5L10,9V6A6,6 0 0,0 4,12L4.08,13H2.06L2,12A8,8 0 0,1 10,4M17,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17A2,2 0 0,1 15,20V4A2,2 0 0,1 17,2M4,15H13V22H4A2,2 0 0,1 2,20V17A2,2 0 0,1 4,15Z";
var mdiRoundedCorner = "M19,19H21V21H19V19M19,17H21V15H19V17M3,13H5V11H3V13M3,17H5V15H3V17M3,9H5V7H3V9M3,5H5V3H3V5M7,5H9V3H7V5M15,21H17V19H15V21M11,21H13V19H11V21M15,21H17V19H15V21M7,21H9V19H7V21M3,21H5V19H3V21M21,8A5,5 0 0,0 16,3H11V5H16A3,3 0 0,1 19,8V13H21V8Z";
var mdiRouter = "M12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2M12 20C7.58 20 4 16.42 4 12C4 7.58 7.58 4 12 4C16.42 4 20 7.58 20 12C20 16.42 16.42 20 12 20M13 13V16H15L12 19L9 16H11V13M5 13H8V15L11 12L8 9V11H5M11 11V8H9L12 5L15 8H13V11M19 11H16V9L13 12L16 15V13H19";
var mdiRouterNetwork = "M5 9C3.9 9 3 9.9 3 11V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V11C21 9.9 20.11 9 19 9H5M6 12H8V14H6V12M9.5 12H11.5V14H9.5V12M13 12H15V14H13V12Z";
var mdiRouterWireless = "M20.2,5.9L21,5.1C19.6,3.7 17.8,3 16,3C14.2,3 12.4,3.7 11,5.1L11.8,5.9C13,4.8 14.5,4.2 16,4.2C17.5,4.2 19,4.8 20.2,5.9M19.3,6.7C18.4,5.8 17.2,5.3 16,5.3C14.8,5.3 13.6,5.8 12.7,6.7L13.5,7.5C14.2,6.8 15.1,6.5 16,6.5C16.9,6.5 17.8,6.8 18.5,7.5L19.3,6.7M19,13H17V9H15V13H5A2,2 0 0,0 3,15V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V15A2,2 0 0,0 19,13M8,18H6V16H8V18M11.5,18H9.5V16H11.5V18M15,18H13V16H15V18Z";
var mdiRouterWirelessOff = "M11.8 5.9L11 5.1C12.4 3.7 14.2 3 16 3S19.6 3.7 21 5.1L20.2 5.9C19 4.8 17.5 4.2 16 4.2S13 4.8 11.8 5.9M21 15C21 13.9 20.1 13 19 13H17V9H15V11.8L21 17.8V15M18.5 7.5L19.3 6.7C18.4 5.8 17.2 5.3 16 5.3S13.6 5.8 12.7 6.7L13.5 7.5C14.2 6.8 15.1 6.5 16 6.5C16.9 6.5 17.8 6.8 18.5 7.5M22.1 21.5L20.8 22.8L19.1 21H5C3.9 21 3 20.1 3 19V15C3 13.9 3.9 13 5 13H11.1L1.1 3L2.4 1.7L22.1 21.5M8 16H6V18H8V16M11.5 16H9.5V18H11.5V16M15 16.9L14.1 16H13V18H15V16.9Z";
var mdiRouterWirelessSettings = "M20.2,4.9C19,3.8 17.5,3.2 16,3.2C14.5,3.2 13,3.8 11.8,4.9L11,4.1C12.4,2.7 14.2,2 16,2C17.8,2 19.6,2.7 21,4.1L20.2,4.9M19.3,5.7L18.5,6.5C17.8,5.8 16.9,5.5 16,5.5C15.1,5.5 14.2,5.8 13.5,6.5L12.7,5.7C13.6,4.8 14.8,4.3 16,4.3C17.2,4.3 18.4,4.8 19.3,5.7M19,12A2,2 0 0,1 21,14V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V14A2,2 0 0,1 5,12H15V8H17V12H19M8,17V15H6V17H8M11.5,17V15H9.5V17H11.5M15,17V15H13V17H15M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z";
var mdiRoutes = "M11,10H5L3,8L5,6H11V3L12,2L13,3V4H19L21,6L19,8H13V10H19L21,12L19,14H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V10Z";
var mdiRoutesClock = "M16.5 13H15V16.69L18.19 18.53L18.94 17.23L16.5 15.82V13M16 9C14.04 9 12.27 9.82 11 11.12V7H17L19 5L17 3H11V2L10 1L9 2V6H3L1 8L3 10H9V20C7.9 20 7 20.9 7 22H12.41C13.46 22.63 14.69 23 16 23C19.87 23 23 19.87 23 16S19.87 9 16 9M16 20.85C13.32 20.85 11.15 18.68 11.15 16S13.32 11.15 16 11.15 20.85 13.32 20.85 16 18.68 20.85 16 20.85Z";
var mdiRowing = "M8.5,14.5L4,19L5.5,20.5L9,17H11L8.5,14.5M15,1A2,2 0 0,0 13,3A2,2 0 0,0 15,5A2,2 0 0,0 17,3A2,2 0 0,0 15,1M21,21L18,24L15,21V19.5L7.91,12.41C7.6,12.46 7.3,12.5 7,12.5V10.32C8.66,10.35 10.61,9.45 11.67,8.28L13.07,6.73C13.26,6.5 13.5,6.35 13.76,6.23C14.05,6.09 14.38,6 14.72,6H14.75C16,6 17,7 17,8.26V14C17,14.85 16.65,15.62 16.08,16.17L12.5,12.59V10.32C11.87,10.84 11.07,11.34 10.21,11.71L16.5,18H18L21,21Z";
var mdiRss = "M6.18,15.64A2.18,2.18 0 0,1 8.36,17.82C8.36,19 7.38,20 6.18,20C5,20 4,19 4,17.82A2.18,2.18 0 0,1 6.18,15.64M4,4.44A15.56,15.56 0 0,1 19.56,20H16.73A12.73,12.73 0 0,0 4,7.27V4.44M4,10.1A9.9,9.9 0 0,1 13.9,20H11.07A7.07,7.07 0 0,0 4,12.93V10.1Z";
var mdiRssBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,18A1.5,1.5 0 0,0 9,16.5A1.5,1.5 0 0,0 7.5,15M6,10V12A6,6 0 0,1 12,18H14A8,8 0 0,0 6,10M6,6V8A10,10 0 0,1 16,18H18A12,12 0 0,0 6,6Z";
var mdiRssOff = "M2.5,3.77L3.78,2.5L21.5,20.22L20.23,21.5L18.73,20H16.73C16.73,19.25 16.67,18.5 16.54,17.81L6.19,7.46C5.5,7.33 4.75,7.27 4,7.27V5.27L2.5,3.77M6.18,15.64A2.18,2.18 0 0,1 8.36,17.82C8.36,19 7.38,20 6.18,20C5,20 4,19 4,17.82A2.18,2.18 0 0,1 6.18,15.64M4,10.1A9.9,9.9 0 0,1 13.9,20H11.07A7.07,7.07 0 0,0 4,12.93V10.1M9.13,5.31C13.59,6.87 17.13,10.41 18.69,14.87L9.13,5.31Z";
var mdiRug = "M12 14C10.9 14 10 13.11 10 12S10.9 10 12 10 14 10.9 14 12 13.11 14 12 14M23 19H1V17H4V15H1V13H4V11H1V9H4V7H1V5H23V7H20V9H23V11H20V13H23V15H20V17H23V19M12 15.92C12.62 16.62 13.66 16.81 14.5 16.33C15.34 15.85 15.69 14.84 15.4 13.96C16.31 13.78 17 12.97 17 12S16.31 10.22 15.4 10.04C15.69 9.16 15.34 8.15 14.5 7.67C13.66 7.19 12.62 7.38 12 8.08C11.38 7.38 10.34 7.19 9.5 7.67C8.66 8.15 8.31 9.16 8.61 10.04C7.69 10.22 7 11.03 7 12S7.69 13.78 8.61 13.96C8.31 14.84 8.66 15.85 9.5 16.33C10.34 16.82 11.38 16.62 12 15.92Z";
var mdiRugby = "M16.22,16.22C18.25,14.19 19.33,11.5 19.45,8.2C18.36,10.61 16.81,12.81 14.81,14.81C12.81,16.81 10.61,18.36 8.2,19.45C11.5,19.36 14.16,18.28 16.22,16.22M7.78,7.78C5.75,9.81 4.67,12.5 4.55,15.8C5,14.8 5.7,13.65 6.61,12.35C7.5,11.05 8.38,10 9.19,9.19C11.19,7.19 13.39,5.64 15.8,4.55C12.5,4.64 9.84,5.72 7.78,7.78M20.5,3.5C21,4.05 21.34,5.11 21.47,6.7C21.59,8.3 21.35,10.16 20.74,12.3C20.13,14.45 19.11,16.23 17.67,17.67C16.36,19 14.8,19.95 13,20.55C11.21,21.16 9.44,21.47 7.69,21.47C5.56,21.47 4.17,21.14 3.5,20.5C3,19.95 2.66,18.89 2.53,17.3C2.41,15.7 2.65,13.84 3.26,11.7C3.87,9.55 4.89,7.77 6.33,6.33C7.64,5 9.2,4.05 11,3.45C12.79,2.84 14.56,2.53 16.31,2.53C18.44,2.53 19.83,2.86 20.5,3.5Z";
var mdiRuler = "M1.39,18.36L3.16,16.6L4.58,18L5.64,16.95L4.22,15.54L5.64,14.12L8.11,16.6L9.17,15.54L6.7,13.06L8.11,11.65L9.53,13.06L10.59,12L9.17,10.59L10.59,9.17L13.06,11.65L14.12,10.59L11.65,8.11L13.06,6.7L14.47,8.11L15.54,7.05L14.12,5.64L15.54,4.22L18,6.7L19.07,5.64L16.6,3.16L18.36,1.39L22.61,5.64L5.64,22.61L1.39,18.36Z";
var mdiRulerSquare = "M3,5V21H9V19.5H7V18H9V16.5H5V15H9V13.5H7V12H9V10.5H5V9H9V5H10.5V9H12V7H13.5V9H15V5H16.5V9H18V7H19.5V9H21V3H5A2,2 0 0,0 3,5M6,7A1,1 0 0,1 5,6A1,1 0 0,1 6,5A1,1 0 0,1 7,6A1,1 0 0,1 6,7Z";
var mdiRulerSquareCompass = "M20 19.88V22L18.2 20.83L13.41 11.83A4.94 4.94 0 0 0 15.19 10.83M15 7A3 3 0 0 1 12 10A3.27 3.27 0 0 1 11.56 10L5.8 20.83L4 22V19.88L9.79 9A3 3 0 0 1 12 4V2A1 1 0 0 1 13 3V4.18A3 3 0 0 1 15 7M13 7A1 1 0 1 0 12 8A1 1 0 0 0 13 7M4.22 10L6 11.8L4.56 14.56L2.1 12.1M12 17.76L10.5 16.25L9 19L12 22L15 19L13.53 16.23M19.78 10L18 11.8L19.5 14.56L21.9 12.1Z";
var mdiRun = "M13.5,5.5C14.59,5.5 15.5,4.58 15.5,3.5C15.5,2.38 14.59,1.5 13.5,1.5C12.39,1.5 11.5,2.38 11.5,3.5C11.5,4.58 12.39,5.5 13.5,5.5M9.89,19.38L10.89,15L13,17V23H15V15.5L12.89,13.5L13.5,10.5C14.79,12 16.79,13 19,13V11C17.09,11 15.5,10 14.69,8.58L13.69,7C13.29,6.38 12.69,6 12,6C11.69,6 11.5,6.08 11.19,6.08L6,8.28V13H8V9.58L9.79,8.88L8.19,17L3.29,16L2.89,18L9.89,19.38Z";
var mdiRunFast = "M16.5,5.5A2,2 0 0,0 18.5,3.5A2,2 0 0,0 16.5,1.5A2,2 0 0,0 14.5,3.5A2,2 0 0,0 16.5,5.5M12.9,19.4L13.9,15L16,17V23H18V15.5L15.9,13.5L16.5,10.5C17.89,12.09 19.89,13 22,13V11C20.24,11.03 18.6,10.11 17.7,8.6L16.7,7C16.34,6.4 15.7,6 15,6C14.7,6 14.5,6.1 14.2,6.1L9,8.3V13H11V9.6L12.8,8.9L11.2,17L6.3,16L5.9,18L12.9,19.4M4,9A1,1 0 0,1 3,8A1,1 0 0,1 4,7H7V9H4M5,5A1,1 0 0,1 4,4A1,1 0 0,1 5,3H10V5H5M3,13A1,1 0 0,1 2,12A1,1 0 0,1 3,11H7V13H3Z";
var mdiRvTruck = "M20 8H22V6L20 4H3A2 2 0 0 0 1 6V15A2 2 0 0 0 3 17H4A3 3 0 0 0 7 20A3 3 0 0 0 10 17H15A3 3 0 0 0 21 17H23V12M7 18.5A1.5 1.5 0 0 1 7 15.5A1.5 1.5 0 0 1 7 18.5M9 12H3V9H9M14 15H11V9H14M18 18.5A1.5 1.5 0 1 1 19.5 17A1.54 1.54 0 0 1 18 18.5M17 12V9.5H19.5L21.5 12Z";
var mdiSack = "M16,9C20,11 21,18 21,18C21,18 22,22 16,22C10,22 8,22 8,22C2,22 3,18 3,18C3,18 4,11 8,9M14,4L12,2L10,4L6,2L8,7H16L18,2L14,4Z";
var mdiSackPercent = "M8,7L6,2L10,4L12,2L14,4L18,2L16,7H8M16,22C10,22 8,22 8,22C2,22 3,18 3,18C3,18 4,11 8,9H16C20,11 21,18 21,18C21,18 22,22 16,22M7.5,12.5A1.5,1.5 0 0,0 9,14A1.5,1.5 0 0,0 10.5,12.5A1.5,1.5 0 0,0 9,11A1.5,1.5 0 0,0 7.5,12.5M16.5,18.5A1.5,1.5 0 0,0 15,17A1.5,1.5 0 0,0 13.5,18.5A1.5,1.5 0 0,0 15,20A1.5,1.5 0 0,0 16.5,18.5M16.5,12.35L15.15,11L7.5,18.65L8.87,20L16.5,12.35Z";
var mdiSafe = "M4,4A2,2 0 0,0 2,6V17A2,2 0 0,0 4,19V20H6V19H17V20H19V19A2,2 0 0,0 21,17V16H22V14H21V9H22V7H21V6A2,2 0 0,0 19,4H4M4,6H19V17H4V6M13.5,7.5A4,4 0 0,0 9.5,11.5A4,4 0 0,0 13.5,15.5A4,4 0 0,0 17.5,11.5A4,4 0 0,0 13.5,7.5M5,9V14H7V9H5M13.5,9.5A2,2 0 0,1 15.5,11.5A2,2 0 0,1 13.5,13.5A2,2 0 0,1 11.5,11.5A2,2 0 0,1 13.5,9.5Z";
var mdiSafeSquare = "M20 2C21.1 2 22 2.9 22 4V20C22 21.1 21.1 22 20 22H19V23H15V22H9V23H5V22H4C2.9 22 2 21.1 2 20V4C2 2.9 2.9 2 4 2H20M17 12C17 11 16.7 10 16.2 9.2L17.7 7.7L16.3 6.3L14.8 7.8C14 7.3 13 7 12 7C11 7 10 7.3 9.2 7.8L7.8 6.3L6.3 7.8L7.8 9.3C7.3 10 7 11 7 12C7 13 7.3 14 7.8 14.8L6.3 16.3L7.8 17.7L9.3 16.2C10 16.7 11 17 12 17C13 17 14 16.7 14.8 16.2L16.3 17.7L17.7 16.3L16.2 14.8C16.7 14 17 13 17 12M12 9C13.7 9 15 10.3 15 12C15 13.7 13.7 15 12 15C10.3 15 9 13.7 9 12C9 10.3 10.3 9 12 9M12 14C13.1 14 14 13.1 14 12C14 10.9 13.1 10 12 10C10.9 10 10 10.9 10 12C10 13.1 10.9 14 12 14Z";
var mdiSafeSquareOutline = "M10 12C10 10.9 10.9 10 12 10C13.1 10 14 10.9 14 12C14 13.1 13.1 14 12 14C10.9 14 10 13.1 10 12M7.8 17.7L6.3 16.3L7.8 14.8C7.3 14 7 13 7 12C7 11 7.3 10 7.8 9.3L6.3 7.8L7.8 6.3L9.2 7.8C10 7.3 11 7 12 7C13 7 14 7.3 14.8 7.8L16.3 6.3L17.7 7.7L16.2 9.2C16.7 10 17 11 17 12C17 13 16.7 14 16.2 14.8L17.7 16.3L16.3 17.7L14.8 16.2C14 16.7 13 17 12 17C11 17 10 16.7 9.3 16.2L7.8 17.7M12 9C10.3 9 9 10.3 9 12C9 13.7 10.3 15 12 15C13.7 15 15 13.7 15 12C15 10.3 13.7 9 12 9M20 2C21.1 2 22 2.9 22 4V20C22 21.1 21.1 22 20 22H19V23H15V22H9V23H5V22H4C2.9 22 2 21.1 2 20V4C2 2.9 2.9 2 4 2H20M20 20V4H4V20H20Z";
var mdiSafetyGoggles = "M18,9C19.11,9 20,9.89 20,11V14C20,15.11 19.11,16 18,16H15.77L14.53,14.77C13.78,14 12.77,13.6 11.7,13.6C10.63,13.6 9.63,14 8.87,14.77L7.64,16H6C4.89,16 4,15.11 4,14V11C4,9.89 4.89,9 6,9H18M18,7H6A4,4 0 0,0 2,11H2L1,11V14H2V14A4,4 0 0,0 6,18H8.5C8.54,17.94 8.59,17.88 10.29,16.18C10.68,15.79 11.19,15.6 11.7,15.6C12.22,15.6 12.73,15.79 13.12,16.18L14.91,18H18A4,4 0 0,0 22,14H22L23,14V11H22V11A4,4 0 0,0 18,7Z";
var mdiSailBoat = "M14,3L5,14H14M3,16L6,21H18L21,16";
var mdiSale = "M18.65,2.85L19.26,6.71L22.77,8.5L21,12L22.78,15.5L19.24,17.29L18.63,21.15L14.74,20.54L11.97,23.3L9.19,20.5L5.33,21.14L4.71,17.25L1.22,15.47L3,11.97L1.23,8.5L4.74,6.69L5.35,2.86L9.22,3.5L12,0.69L14.77,3.46L18.65,2.85M9.5,7A1.5,1.5 0 0,0 8,8.5A1.5,1.5 0 0,0 9.5,10A1.5,1.5 0 0,0 11,8.5A1.5,1.5 0 0,0 9.5,7M14.5,14A1.5,1.5 0 0,0 13,15.5A1.5,1.5 0 0,0 14.5,17A1.5,1.5 0 0,0 16,15.5A1.5,1.5 0 0,0 14.5,14M8.41,17L17,8.41L15.59,7L7,15.59L8.41,17Z";
var mdiSalesforce = "M18.38,6.37C17.68,6.37 17.07,6.58 16.47,6.78C15.77,5.57 14.46,4.77 13.05,4.77C11.95,4.77 10.95,5.27 10.24,5.97C9.44,4.97 8.23,4.26 6.83,4.26C4.5,4.26 2.5,6.17 2.5,8.5C2.5,9.09 2.71,9.69 2.91,10.29C1.8,10.9 1,12.1 1,13.5C1,15.5 2.61,17.22 4.62,17.22C4.92,17.22 5.22,17.22 5.42,17.12C5.82,18.63 7.33,19.74 9.14,19.74C10.84,19.74 12.25,18.73 12.75,17.32C13.26,17.53 13.76,17.73 14.26,17.73C15.57,17.73 16.77,17 17.37,15.92C17.68,16 18,16 18.28,16C20.89,16 23,13.91 23,11.2C23.1,8.5 21,6.37 18.38,6.37Z";
var mdiSass = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M10,15.33C10.16,15.87 10.14,16.37 10,16.83C10,16.88 9.96,16.93 9.94,17C9.92,17 9.9,17.07 9.87,17.12C9.76,17.36 9.6,17.59 9.41,17.79C8.83,18.43 8,18.67 7.67,18.47C7.29,18.25 7.5,17.35 8.16,16.64C8.88,15.88 9.92,15.38 9.92,15.38V15.38L10,15.33M18.27,6.28C17.82,4.5 14.87,3.92 12.09,4.91C10.43,5.5 8.63,6.42 7.34,7.63C5.81,9.07 5.56,10.32 5.66,10.84C6,12.68 8.54,13.89 9.58,14.78V14.79C9.28,14.94 7.04,16.07 6.5,17.23C5.96,18.45 6.6,19.33 7,19.45C8.34,19.81 9.69,19.16 10.41,18.07C11.11,17.03 11.06,15.68 10.75,15C11.17,14.9 11.66,14.85 12.28,14.92C14.04,15.13 14.38,16.22 14.31,16.68C14.25,17.14 13.88,17.39 13.76,17.47C13.64,17.54 13.6,17.57 13.61,17.63C13.62,17.71 13.68,17.71 13.78,17.69C13.93,17.66 14.71,17.32 14.74,16.47C14.78,15.39 13.75,14.19 11.93,14.22C11.18,14.24 10.71,14.31 10.37,14.44L10.29,14.35C9.16,13.15 7.08,12.3 7.17,10.68C7.2,10.09 7.4,8.55 11.17,6.67C14.25,5.13 16.72,5.55 17.15,6.5C17.76,7.83 15.83,10.32 12.63,10.68C11.41,10.82 10.76,10.34 10.6,10.17C10.43,10 10.41,9.97 10.35,10C10.24,10.07 10.31,10.23 10.35,10.33C10.44,10.58 10.84,11 11.5,11.24C12.09,11.43 13.53,11.54 15.26,10.87C17.2,10.12 18.72,8.03 18.27,6.28Z";
var mdiSatellite = "M5,18L8.5,13.5L11,16.5L14.5,12L19,18M5,12V10A5,5 0 0,0 10,5H12A7,7 0 0,1 5,12M5,5H8A3,3 0 0,1 5,8M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiSatelliteUplink = "M11.86,2L11.34,3.93C15.75,4.78 19.2,8.23 20.05,12.65L22,12.13C20.95,7.03 16.96,3.04 11.86,2M10.82,5.86L10.3,7.81C13.34,8.27 15.72,10.65 16.18,13.68L18.12,13.16C17.46,9.44 14.55,6.5 10.82,5.86M3.72,9.69C3.25,10.73 3,11.86 3,13C3,14.95 3.71,16.82 5,18.28V22H8V20.41C8.95,20.8 9.97,21 11,21C12.14,21 13.27,20.75 14.3,20.28L3.72,9.69M9.79,9.76L9.26,11.72A3,3 0 0,1 12.26,14.72L14.23,14.2C14,11.86 12.13,10 9.79,9.76Z";
var mdiSatelliteVariant = "M11.62,1L17.28,6.67L15.16,8.79L13.04,6.67L11.62,8.09L13.95,10.41L12.79,11.58L13.24,12.04C14.17,11.61 15.31,11.77 16.07,12.54L12.54,16.07C11.77,15.31 11.61,14.17 12.04,13.24L11.58,12.79L10.41,13.95L8.09,11.62L6.67,13.04L8.79,15.16L6.67,17.28L1,11.62L3.14,9.5L5.26,11.62L6.67,10.21L3.84,7.38C3.06,6.6 3.06,5.33 3.84,4.55L4.55,3.84C5.33,3.06 6.6,3.06 7.38,3.84L10.21,6.67L11.62,5.26L9.5,3.14L11.62,1M18,14A4,4 0 0,1 14,18V16A2,2 0 0,0 16,14H18M22,14A8,8 0 0,1 14,22V20A6,6 0 0,0 20,14H22Z";
var mdiSausage = "M3.5,3H9.5L7.96,5.32C9.16,5.87 10,7.09 10,8.5A5.5,5.5 0 0,0 15.5,14C16.91,14 18.13,14.84 18.68,16.04L21,14.5V20.5L18.68,18.96C18.13,20.16 16.91,21 15.5,21A12.5,12.5 0 0,1 3,8.5C3,7.09 3.84,5.87 5.04,5.32L3.5,3Z";
var mdiSawBlade = "M20,15C20,15 18.6,16.3 21.1,17L18.3,19.8H15.5C15.5,19.8 13.6,19.7 15,22H11L9,20C9,20 7.7,18.6 7,21.1L4.2,18.3V15.5C4.2,15.5 4.3,13.6 2,15V11L4,9C4,9 5.4,7.7 2.8,7.1L5.6,4.2H8.5C8.5,4.2 10.4,4.3 9,2H13L15,4C15,4 16.3,5.4 17,2.8L19.8,5.6V8.5C19.8,8.5 19.7,10.4 22,9V13L20,15M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z";
var mdiSawtoothWave = "M11 22V6.83L2 16V13.17L13 2V17.17L22 8V10.83L11 22Z";
var mdiSaxophone = "M4,2A1,1 0 0,0 3,3A1,1 0 0,0 4,4A3,3 0 0,1 7,7V8.66L7,15.5C7,19.1 9.9,22 13.5,22C17.1,22 20,19.1 20,15.5V13A1,1 0 0,0 21,12A1,1 0 0,0 20,11H14A1,1 0 0,0 13,12A1,1 0 0,0 14,13V15A1,1 0 0,1 13,16A1,1 0 0,1 12,15V11A1,1 0 0,0 13,10A1,1 0 0,0 12,9V8A1,1 0 0,0 13,7A1,1 0 0,0 12,6V5.5A3.5,3.5 0 0,0 8.5,2H4Z";
var mdiScale = "M8.46,15.06L7.05,16.47L5.68,15.1C4.82,16.21 4.24,17.54 4.06,19H6V21H2V20C2,15.16 5.44,11.13 10,10.2V8.2L2,5V3H22V5L14,8.2V10.2C18.56,11.13 22,15.16 22,20V21H18V19H19.94C19.76,17.54 19.18,16.21 18.32,15.1L16.95,16.47L15.54,15.06L16.91,13.68C15.8,12.82 14.46,12.24 13,12.06V14H11V12.06C9.54,12.24 8.2,12.82 7.09,13.68L8.46,15.06M12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22C11.68,22 11.38,21.93 11.12,21.79L7.27,20L11.12,18.21C11.38,18.07 11.68,18 12,18Z";
var mdiScaleBalance = "M12,3C10.73,3 9.6,3.8 9.18,5H3V7H4.95L2,14C1.53,16 3,17 5.5,17C8,17 9.56,16 9,14L6.05,7H9.17C9.5,7.85 10.15,8.5 11,8.83V20H2V22H22V20H13V8.82C13.85,8.5 14.5,7.85 14.82,7H17.95L15,14C14.53,16 16,17 18.5,17C21,17 22.56,16 22,14L19.05,7H21V5H14.83C14.4,3.8 13.27,3 12,3M12,5A1,1 0 0,1 13,6A1,1 0 0,1 12,7A1,1 0 0,1 11,6A1,1 0 0,1 12,5M5.5,10.25L7,14H4L5.5,10.25M18.5,10.25L20,14H17L18.5,10.25Z";
var mdiScaleBathroom = "M5,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2M12,4A4,4 0 0,0 8,8H11.26L10.85,5.23L12.9,8H16A4,4 0 0,0 12,4M5,10V20H19V10H5Z";
var mdiScaleOff = "M22.11 21.46L20.84 22.73L19.11 21H18V19.89L12.11 14H11V12.89L10.31 12.2A7.92 7.92 0 0 0 7.09 13.68L8.46 15.06L7.05 16.47L5.68 15.1A7.94 7.94 0 0 0 4.06 19H6V21H2V20A10 10 0 0 1 8.68 10.57L3.85 5.74L2 5V3.89L1.11 3L2.39 1.73M21.91 18.71A10 10 0 0 0 14 10.2V8.2L22 5V3H6.2M12 18A1.84 1.84 0 0 0 11.12 18.21L7.27 20L11.12 21.79A1.84 1.84 0 0 0 12 22A2 2 0 0 0 12 18Z";
var mdiScanHelper = "M0 2A2 2 0 0 1 2 0H6V2H2V6H0V2M24 22A2 2 0 0 1 22 24H18V22H22V18H24V22M2 24A2 2 0 0 1 0 22V18H2V22H6V24H2M22 0A2 2 0 0 1 24 2V6H22V2H18V0H22Z";
var mdiScanner = "M4.2,10.7L19.8,5L20.5,6.9L6.4,12H19A2,2 0 0,1 21,14V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V12.5C3,11.7 3.5,10.9 4.2,10.7M17,17H19V15H17V17M5,17H15V15H5V17Z";
var mdiScannerOff = "M2,5.27L3.28,4L20,20.72L18.73,22L16.73,20H5A2,2 0 0,1 3,18V12.5C3,11.7 3.5,10.9 4.2,10.7L6.57,9.84L2,5.27M6.4,12H8.73L8.11,11.38L6.4,12M5,15V17H13.73L11.73,15H5M19.8,5L20.5,6.9L11.85,10.03L10.3,8.47L19.8,5M19,12A2,2 0 0,1 21,14V18C21,18.34 20.91,18.66 20.76,18.94L19,17.18V15H16.82L13.82,12H19Z";
var mdiScatterPlot = "M7,11A3,3 0 0,1 10,14A3,3 0 0,1 7,17A3,3 0 0,1 4,14A3,3 0 0,1 7,11M11,3A3,3 0 0,1 14,6A3,3 0 0,1 11,9A3,3 0 0,1 8,6A3,3 0 0,1 11,3M16.6,14.6C18.25,14.6 19.6,15.94 19.6,17.6A3,3 0 0,1 16.6,20.6C14.94,20.6 13.6,19.25 13.6,17.6A3,3 0 0,1 16.6,14.6Z";
var mdiScatterPlotOutline = "M7,18A4,4 0 0,1 3,14A4,4 0 0,1 7,10A4,4 0 0,1 11,14A4,4 0 0,1 7,18M7,12A2,2 0 0,0 5,14A2,2 0 0,0 7,16A2,2 0 0,0 9,14A2,2 0 0,0 7,12M11,10A4,4 0 0,1 7,6A4,4 0 0,1 11,2A4,4 0 0,1 15,6A4,4 0 0,1 11,10M11,4A2,2 0 0,0 9,6A2,2 0 0,0 11,8A2,2 0 0,0 13,6A2,2 0 0,0 11,4M16.6,21.6C14.39,21.6 12.6,19.81 12.6,17.6A4,4 0 0,1 16.6,13.6C18.81,13.6 20.6,15.39 20.6,17.6A4,4 0 0,1 16.6,21.6M16.6,15.6A2,2 0 0,0 14.6,17.6C14.6,18.7 15.5,19.6 16.6,19.6A2,2 0 0,0 18.6,17.6C18.6,16.5 17.7,15.6 16.6,15.6Z";
var mdiSchool = "M12,3L1,9L12,15L21,10.09V17H23V9M5,13.18V17.18L12,21L19,17.18V13.18L12,17L5,13.18Z";
var mdiSchoolOutline = "M12 3L1 9L5 11.18V17.18L12 21L19 17.18V11.18L21 10.09V17H23V9L12 3M18.82 9L12 12.72L5.18 9L12 5.28L18.82 9M17 16L12 18.72L7 16V12.27L12 15L17 12.27V16Z";
var mdiScissorsCutting = "M11,21H7V19H11V21M15.5,19H17V21H13V19H13.2L11.8,12.9L9.3,13.5C9.2,14 9,14.4 8.8,14.8C7.9,16.3 6,16.7 4.5,15.8C3,14.9 2.6,13 3.5,11.5C4.4,10 6.3,9.6 7.8,10.5C8.2,10.7 8.5,11.1 8.7,11.4L11.2,10.8L10.6,8.3C10.2,8.2 9.8,8 9.4,7.8C8,6.9 7.5,5 8.4,3.5C9.3,2 11.2,1.6 12.7,2.5C14.2,3.4 14.6,5.3 13.7,6.8C13.5,7.2 13.1,7.5 12.8,7.7L15.5,19M7,11.8C6.3,11.3 5.3,11.6 4.8,12.3C4.3,13 4.6,14 5.3,14.4C6,14.9 7,14.7 7.5,13.9C7.9,13.2 7.7,12.2 7,11.8M12.4,6C12.9,5.3 12.6,4.3 11.9,3.8C11.2,3.3 10.2,3.6 9.7,4.3C9.3,5 9.5,6 10.3,6.5C11,6.9 12,6.7 12.4,6M12.8,11.3C12.6,11.2 12.4,11.2 12.3,11.4C12.2,11.6 12.2,11.8 12.4,11.9C12.6,12 12.8,12 12.9,11.8C13.1,11.6 13,11.4 12.8,11.3M21,8.5L14.5,10L15,12.2L22.5,10.4L23,9.7L21,8.5M23,19H19V21H23V19M5,19H1V21H5V19Z";
var mdiScooter = "M7.82 19H15V18C15 15.79 16.79 14 19 14H19.74L17.84 5.56C17.63 4.65 16.82 4 15.89 4H12V6H15.89L17.29 12.25H17.28C15.12 12.9 13.47 14.73 13.09 17H7.82C7.34 15.66 5.96 14.76 4.4 15.06C3.22 15.29 2.27 16.26 2.05 17.44C1.7 19.34 3.16 21 5 21C6.3 21 7.4 20.16 7.82 19M5 19C4.45 19 4 18.55 4 18S4.45 17 5 17 6 17.45 6 18 5.55 19 5 19M19 15C17.34 15 16 16.34 16 18S17.34 21 19 21 22 19.66 22 18 20.66 15 19 15M19 19C18.45 19 18 18.55 18 18S18.45 17 19 17 20 17.45 20 18 19.55 19 19 19Z";
var mdiScooterElectric = "M7.82 16H15V15C15 12.79 16.79 11 19 11H19.74L17.84 2.56C17.63 1.65 16.82 1 15.89 1H12V3H15.89L17.29 9.25H17.28C15.12 9.9 13.47 11.73 13.09 14H7.82C7.34 12.66 5.96 11.76 4.4 12.06C3.22 12.29 2.27 13.26 2.05 14.44C1.7 16.34 3.16 18 5 18C6.3 18 7.4 17.16 7.82 16M5 16C4.45 16 4 15.55 4 15S4.45 14 5 14 6 14.45 6 15 5.55 16 5 16M19 12C17.34 12 16 13.34 16 15S17.34 18 19 18 22 16.66 22 15 20.66 12 19 12M19 16C18.45 16 18 15.55 18 15S18.45 14 19 14 20 14.45 20 15 19.55 16 19 16M11 20H7L13 23V21H17L11 18V20Z";
var mdiScoreboard = "M6 9H8V15H6V9M16 9H18V15H16V9M21 3C22.1 3 23 3.9 23 5V19C23 20.1 22.1 21 21 21H3C1.9 21 1 20.1 1 19V5C1 3.9 1.9 3 3 3H21M5 7C4.4 7 4 7.4 4 8V16C4 16.6 4.4 17 5 17H9C9.6 17 10 16.6 10 16V8C10 7.4 9.6 7 9 7H5M15 7C14.4 7 14 7.4 14 8V16C14 16.6 14.4 17 15 17H19C19.6 17 20 16.6 20 16V8C20 7.4 19.6 7 19 7H15M12 11C12.6 11 13 10.6 13 10C13 9.4 12.6 9 12 9C11.4 9 11 9.4 11 10C11 10.6 11.4 11 12 11M12 15C12.6 15 13 14.6 13 14C13 13.4 12.6 13 12 13C11.4 13 11 13.4 11 14C11 14.6 11.4 15 12 15Z";
var mdiScoreboardOutline = "M21 3H3C1.9 3 1 3.9 1 5V19C1 20.1 1.9 21 3 21H21C22.1 21 23 20.1 23 19V5C23 3.9 22.1 3 21 3M21 19H3V5H21M5 7H9C9.6 7 10 7.4 10 8V16C10 16.6 9.6 17 9 17H5C4.4 17 4 16.6 4 16V8C4 7.4 4.4 7 5 7M6 9V15H8V9M15 7H19C19.6 7 20 7.4 20 8V16C20 16.6 19.6 17 19 17H15C14.4 17 14 16.6 14 16V8C14 7.4 14.4 7 15 7M16 9V15H18V9M12 11C12.6 11 13 10.6 13 10C13 9.4 12.6 9 12 9C11.4 9 11 9.4 11 10C11 10.6 11.4 11 12 11M12 15C12.6 15 13 14.6 13 14C13 13.4 12.6 13 12 13C11.4 13 11 13.4 11 14C11 14.6 11.4 15 12 15Z";
var mdiScreenRotation = "M7.5,21.5C4.25,19.94 1.91,16.76 1.55,13H0.05C0.56,19.16 5.71,24 12,24L12.66,23.97L8.85,20.16M14.83,21.19L2.81,9.17L9.17,2.81L21.19,14.83M10.23,1.75C9.64,1.16 8.69,1.16 8.11,1.75L1.75,8.11C1.16,8.7 1.16,9.65 1.75,10.23L13.77,22.25C14.36,22.84 15.31,22.84 15.89,22.25L22.25,15.89C22.84,15.3 22.84,14.35 22.25,13.77L10.23,1.75M16.5,2.5C19.75,4.07 22.09,7.24 22.45,11H23.95C23.44,4.84 18.29,0 12,0L11.34,0.03L15.15,3.84L16.5,2.5Z";
var mdiScreenRotationLock = "M16.8,2.5C16.8,1.56 17.56,0.8 18.5,0.8C19.44,0.8 20.2,1.56 20.2,2.5V3H16.8V2.5M16,9H21A1,1 0 0,0 22,8V4A1,1 0 0,0 21,3V2.5A2.5,2.5 0 0,0 18.5,0A2.5,2.5 0 0,0 16,2.5V3A1,1 0 0,0 15,4V8A1,1 0 0,0 16,9M8.47,20.5C5.2,18.94 2.86,15.76 2.5,12H1C1.5,18.16 6.66,23 12.95,23L13.61,22.97L9.8,19.15L8.47,20.5M23.25,12.77L20.68,10.2L19.27,11.61L21.5,13.83L15.83,19.5L4.5,8.17L10.17,2.5L12.27,4.61L13.68,3.2L11.23,0.75C10.64,0.16 9.69,0.16 9.11,0.75L2.75,7.11C2.16,7.7 2.16,8.65 2.75,9.23L14.77,21.25C15.36,21.84 16.31,21.84 16.89,21.25L23.25,14.89C23.84,14.3 23.84,13.35 23.25,12.77Z";
var mdiScrewFlatTop = "M13.5,17V19L12,22L10.5,19L13.5,17M14.5,6.3L13.5,7V6H10.5V9L9.5,9.7V10.7L14.5,7.4V6.3M14.5,10.3L13.5,11V9L10.5,11V13L9.5,13.7V14.7L14.5,11.4V10.3M14.5,14.3L13.5,15V13L10.5,15V17L9.5,17.7V18.7L14.5,15.4V14.3M8,2C8,2 7,2 7,3L10,5H14L17,3C17,3 17,2 16,2C15,2 8,2 8,2Z";
var mdiScrewLag = "M10,19.3L14,16.6V20L12,22L10,20V19.3M14,12.7L10,15.4V17.4L9,18V19L15,15.1V14L14,14.7V12.7M7,2V5H17V2H7M9,6V9L10,9.7V13.4L9,14V15L15,11.1V10L14,10.7C14,10.7 14,10.3 14,9.7L15,9V6H9Z";
var mdiScrewMachineFlatTop = "M14.5,7.3L13.5,8V7H10.5V10L9.5,10.7V11.7L14.5,8.4V7.3M14.5,11.3L13.5,12V10L10.5,12V14L9.5,14.7V15.7L14.5,12.4V11.3M14.5,15.3L13.5,16V14L10.5,16V18L9.5,18.7V19.7L14.5,16.4V15.3M8,3C8,3 7,3 7,4L10,6H14L17,4C17,4 17,3 16,3C15,3 8,3 8,3M13.5,18V21H10.5V20L13.5,18Z";
var mdiScrewMachineRoundTop = "M14.5,7.3L13.5,8V7H10.5V10L9.5,10.7V11.7L14.5,8.4V7.3M14.5,11.3L13.5,12V10L10.5,12V14L9.5,14.7V15.7L14.5,12.4V11.3M14.5,15.3L13.5,16V14L10.5,16V18L9.5,18.7V19.7L14.5,16.4V15.3M7,6H17C17,6 16,3 12,3C8,3 7,6 7,6M13.5,18V21H10.5V20L13.5,18Z";
var mdiScrewRoundTop = "M13.5,17V19L12,22L10.5,19L13.5,17M14.5,6.3L13.5,7V6H10.5V9L9.5,9.7V10.7L14.5,7.4V6.3M14.5,10.3L13.5,11V9L10.5,11V13L9.5,13.7V14.7L14.5,11.4V10.3M14.5,14.3L13.5,15V13L10.5,15V17L9.5,17.7V18.7L14.5,15.4V14.3M7,5H17C17,5 16,2 12,2C8,2 7,5 7,5Z";
var mdiScrewdriver = "M18,1.83C17.5,1.83 17,2 16.59,2.41C13.72,5.28 8,11 8,11L9.5,12.5L6,16H4L2,20L4,22L8,20V18L11.5,14.5L13,16C13,16 18.72,10.28 21.59,7.41C22.21,6.5 22.37,5.37 21.59,4.59L19.41,2.41C19,2 18.5,1.83 18,1.83M18,4L20,6L13,13L11,11L18,4Z";
var mdiScript = "M17.8,20C17.4,21.2 16.3,22 15,22H5C3.3,22 2,20.7 2,19V18H5L14.2,18C14.6,19.2 15.7,20 17,20H17.8M19,2H8C6.3,2 5,3.3 5,5V16H16V17C16,17.6 16.4,18 17,18H18V5C18,4.4 18.4,4 19,4C19.6,4 20,4.4 20,5V6H22V5C22,3.3 20.7,2 19,2Z";
var mdiScriptOutline = "M15,20A1,1 0 0,0 16,19V4H8A1,1 0 0,0 7,5V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H20V5A1,1 0 0,0 19,4A1,1 0 0,0 18,5V9L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H13A2,2 0 0,0 15,20Z";
var mdiScriptText = "M17.8,20C17.4,21.2 16.3,22 15,22H5C3.3,22 2,20.7 2,19V18H5L14.2,18C14.6,19.2 15.7,20 17,20H17.8M19,2C20.7,2 22,3.3 22,5V6H20V5C20,4.4 19.6,4 19,4C18.4,4 18,4.4 18,5V18H17C16.4,18 16,17.6 16,17V16H5V5C5,3.3 6.3,2 8,2H19M8,6V8H15V6H8M8,10V12H14V10H8Z";
var mdiScriptTextKey = "M19 2H8C6.3 2 5 3.3 5 5V16H13C13.8 15.4 14.9 15 16 15C16.7 15 17.4 15.2 18 15.4V5C18 4.4 18.4 4 19 4S20 4.4 20 5V6H22V5C22 3.3 20.7 2 19 2M14 12H8V10H14V12M15 8H8V6H15V8M11.4 22H5C3.3 22 2 20.7 2 19V18H11.4C11.1 18.6 11 19.3 11 20S11.1 21.4 11.4 22M18.8 19C18.4 17.8 17.3 17 16 17C14.3 17 13 18.3 13 20S14.3 23 16 23C17.3 23 18.4 22.2 18.8 21H20V23H22V21H23V19H18.8M16 21.3C15.3 21.3 14.7 20.7 14.7 20S15.3 18.7 16 18.7C16.7 18.7 17.3 19.3 17.3 20S16.7 21.3 16 21.3Z";
var mdiScriptTextKeyOutline = "M11.4 22H5C3.3 22 2 20.7 2 19V18H11.4C11.1 18.6 11 19.3 11 20S11.2 21.4 11.4 22M19 2H8C6.3 2 5 3.3 5 5V16H7V5C7 4.4 7.4 4 8 4H16V15C16.7 15 17.4 15.2 18 15.4V5C18 4.4 18.4 4 19 4S20 4.4 20 5V6H22V5C22 3.3 20.7 2 19 2M9 8H14V6H9V8M9 16H13C13.3 15.8 13.6 15.6 14 15.4V14H9V16M9 12H14V10H9V12M23 19V21H22V23H20V21H18.8C18.4 22.2 17.3 23 16 23C14.3 23 13 21.7 13 20S14.3 17 16 17C17.3 17 18.4 17.8 18.8 19H23M17.3 20C17.3 19.3 16.7 18.7 16 18.7S14.7 19.3 14.7 20 15.3 21.3 16 21.3 17.3 20.7 17.3 20Z";
var mdiScriptTextOutline = "M15,20A1,1 0 0,0 16,19V4H8A1,1 0 0,0 7,5V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H20V5A1,1 0 0,0 19,4A1,1 0 0,0 18,5V9L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H13A2,2 0 0,0 15,20M9,6H14V8H9V6M9,10H14V12H9V10M9,14H14V16H9V14Z";
var mdiScriptTextPlay = "M13.8 22H5C3.3 22 2 20.7 2 19V18H13.1C13 18.3 13 18.7 13 19C13 20.1 13.3 21.1 13.8 22M13.8 16H5V5C5 3.3 6.3 2 8 2H19C20.7 2 22 3.3 22 5V6H20V5C20 4.4 19.6 4 19 4S18 4.4 18 5V13.1C16.2 13.4 14.7 14.5 13.8 16M8 8H15V6H8V8M8 12H14V10H8V12M17 16V22L22 19L17 16Z";
var mdiScriptTextPlayOutline = "M9 14H14V15.7C13.9 15.8 13.9 15.9 13.8 16H9V14M9 12H14V10H9V12M9 8H14V6H9V8M7 5C7 4.4 7.4 4 8 4H16V13.8C16.6 13.4 17.3 13.2 18 13.1V5C18 4.4 18.4 4 19 4S20 4.4 20 5V6H22V5C22 3.3 20.7 2 19 2H8C6.3 2 5 3.3 5 5V16H7V5M13 19V18.4 18H2V19C2 20.7 3.3 22 5 22H13.8C13.3 21.1 13 20.1 13 19M17 16V22L22 19L17 16Z";
var mdiSd = "M18,8H16V4H18M15,8H13V4H15M12,8H10V4H12M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z";
var mdiSeal = "M20.39,19.37L16.38,18L15,22L11.92,16L9,22L7.62,18L3.61,19.37L6.53,13.37C5.57,12.17 5,10.65 5,9A7,7 0 0,1 12,2A7,7 0 0,1 19,9C19,10.65 18.43,12.17 17.47,13.37L20.39,19.37M7,9L9.69,10.34L9.5,13.34L12,11.68L14.5,13.33L14.33,10.34L17,9L14.32,7.65L14.5,4.67L12,6.31L9.5,4.65L9.67,7.66L7,9Z";
var mdiSealVariant = "M17.71 6.15C17.46 5.38 16.79 5.21 16.45 4.77C16.14 4.31 16.18 3.62 15.53 3.15S14.23 2.92 13.7 2.77 12.81 2 12 2 10.82 2.58 10.3 2.77 9.13 2.67 8.47 3.15 7.86 4.31 7.55 4.77C7.21 5.21 6.55 5.38 6.29 6.15S6.5 7.45 6.5 8 6 9.08 6.29 9.85 7.21 10.79 7.55 11.23C7.86 11.69 7.82 12.38 8.47 12.85S9.77 13.08 10.3 13.23 11.19 14 12 14 13.18 13.42 13.7 13.23 14.87 13.33 15.53 12.85 16.14 11.69 16.45 11.23C16.79 10.79 17.45 10.62 17.71 9.85S17.5 8.55 17.5 8 18 6.92 17.71 6.15M12 12A4 4 0 1 1 16 8A4 4 0 0 1 12 12M14 8A2 2 0 1 1 12 6A2 2 0 0 1 14 8M13.71 15.56L13.08 19.16L12.35 23.29L9.74 20.8L6.44 22.25L7.77 14.75A4 4 0 0 0 9.66 15.17A4.15 4.15 0 0 0 11 15.85A3.32 3.32 0 0 0 12 16A3.5 3.5 0 0 0 13.71 15.56M17.92 18.78L15.34 17.86L15.85 14.92A3.2 3.2 0 0 0 16.7 14.47L16.82 14.37Z";
var mdiSearchWeb = "M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,4.5L8.95,4.53C8.71,5.05 8.34,5.93 8.07,7H10.93C10.66,5.93 10.29,5.05 10.05,4.53C9.87,4.5 9.69,4.5 9.5,4.5M13.83,7C13.24,5.97 12.29,5.17 11.15,4.78C11.39,5.31 11.7,6.08 11.93,7H13.83M5.17,7H7.07C7.3,6.08 7.61,5.31 7.85,4.78C6.71,5.17 5.76,5.97 5.17,7M4.5,9.5C4.5,10 4.58,10.53 4.73,11H6.87L6.75,9.5L6.87,8H4.73C4.58,8.47 4.5,9 4.5,9.5M14.27,11C14.42,10.53 14.5,10 14.5,9.5C14.5,9 14.42,8.47 14.27,8H12.13C12.21,8.5 12.25,9 12.25,9.5C12.25,10 12.21,10.5 12.13,11H14.27M7.87,8L7.75,9.5L7.87,11H11.13C11.21,10.5 11.25,10 11.25,9.5C11.25,9 11.21,8.5 11.13,8H7.87M9.5,14.5C9.68,14.5 9.86,14.5 10.03,14.47C10.28,13.95 10.66,13.07 10.93,12H8.07C8.34,13.07 8.72,13.95 8.97,14.47L9.5,14.5M13.83,12H11.93C11.7,12.92 11.39,13.69 11.15,14.22C12.29,13.83 13.24,13.03 13.83,12M5.17,12C5.76,13.03 6.71,13.83 7.85,14.22C7.61,13.69 7.3,12.92 7.07,12H5.17Z";
var mdiSeat = "M4,18V21H7V18H17V21H20V15H4V18M19,10H22V13H19V10M2,10H5V13H2V10M17,13H7V5A2,2 0 0,1 9,3H15A2,2 0 0,1 17,5V13Z";
var mdiSeatFlat = "M22,11V13H9V7H18A4,4 0 0,1 22,11M2,14V16H8V18H16V16H22V14M7.14,12.1C8.3,10.91 8.28,9 7.1,7.86C5.91,6.7 4,6.72 2.86,7.9C1.7,9.09 1.72,11 2.9,12.14C4.09,13.3 6,13.28 7.14,12.1Z";
var mdiSeatFlatAngled = "M22.25,14.29L21.56,16.18L9.2,11.71L11.28,6.05L19.84,9.14C21.94,9.9 23,12.2 22.25,14.29M1.5,12.14L8,14.5V19H16V17.37L20.5,19L21.21,17.11L2.19,10.25M7.3,10.2C8.79,9.5 9.42,7.69 8.71,6.2C8,4.71 6.2,4.08 4.7,4.8C3.21,5.5 2.58,7.3 3.3,8.8C4,10.29 5.8,10.92 7.3,10.2Z";
var mdiSeatIndividualSuite = "M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13M19,7H11V14H3V7H1V17H23V11A4,4 0 0,0 19,7Z";
var mdiSeatLegroomExtra = "M4,12V3H2V12A5,5 0 0,0 7,17H13V15H7A3,3 0 0,1 4,12M22.83,17.24C22.45,16.5 21.54,16.27 20.8,16.61L19.71,17.11L16.3,10.13C15.96,9.45 15.27,9 14.5,9H11V3H5V11A3,3 0 0,0 8,14H15L18.41,21L22.13,19.3C22.9,18.94 23.23,18 22.83,17.24Z";
var mdiSeatLegroomNormal = "M5,12V3H3V12A5,5 0 0,0 8,17H14V15H8A3,3 0 0,1 5,12M20.5,18H19V11A2,2 0 0,0 17,9H12V3H6V11A3,3 0 0,0 9,14H16V21H20.5A1.5,1.5 0 0,0 22,19.5A1.5,1.5 0 0,0 20.5,18Z";
var mdiSeatLegroomReduced = "M19.97,19.2C20.15,20.16 19.42,21 18.5,21H14V18L15,14H9A3,3 0 0,1 6,11V3H12V9H17A2,2 0 0,1 19,11L17,18H18.44C19.17,18 19.83,18.5 19.97,19.2M5,12V3H3V12A5,5 0 0,0 8,17H12V15H8A3,3 0 0,1 5,12Z";
var mdiSeatOutline = "M15,5V12H9V5H15M15,3H9A2,2 0 0,0 7,5V14H17V5A2,2 0 0,0 15,3M22,10H19V13H22V10M5,10H2V13H5V10M20,15H4V21H6V17H18V21H20V15Z";
var mdiSeatPassenger = "M9 19H15V21H9C6.24 21 4 18.76 4 16V7H6V16C6 17.66 7.34 19 9 19M10.42 5.41C11.2 4.63 11.2 3.36 10.42 2.58C9.64 1.8 8.37 1.8 7.59 2.58C6.81 3.36 6.81 4.63 7.59 5.41C8.37 6.2 9.63 6.2 10.42 5.41M11.5 9C11.5 7.9 10.6 7 9.5 7H9C7.9 7 7 7.9 7 9V15C7 16.66 8.34 18 10 18H15.07L18.57 21.5L20 20.07L14.93 15H11.5L11.5 9Z";
var mdiSeatReclineExtra = "M5.35,5.64C4.45,5 4.23,3.76 4.86,2.85C5.5,1.95 6.74,1.73 7.65,2.36C8.55,3 8.77,4.24 8.14,5.15C7.5,6.05 6.26,6.27 5.35,5.64M16,19H8.93C7.45,19 6.19,17.92 5.97,16.46L4,7H2L4,16.76C4.37,19.2 6.47,21 8.94,21H16M16.23,15H11.35L10.32,10.9C11.9,11.79 13.6,12.44 15.47,12.12V10C13.84,10.3 12.03,9.72 10.78,8.74L9.14,7.47C8.91,7.29 8.65,7.17 8.38,7.09C8.06,7 7.72,6.97 7.39,7.03H7.37C6.14,7.25 5.32,8.42 5.53,9.64L6.88,15.56C7.16,17 8.39,18 9.83,18H16.68L20.5,21L22,19.5";
var mdiSeatReclineNormal = "M7.59,5.41C6.81,4.63 6.81,3.36 7.59,2.58C8.37,1.8 9.64,1.8 10.42,2.58C11.2,3.36 11.2,4.63 10.42,5.41C9.63,6.2 8.37,6.2 7.59,5.41M6,16V7H4V16A5,5 0 0,0 9,21H15V19H9A3,3 0 0,1 6,16M20,20.07L14.93,15H11.5V11.32C12.9,12.47 15.1,13.5 17,13.5V11.32C15.34,11.34 13.39,10.45 12.33,9.28L10.93,7.73C10.74,7.5 10.5,7.35 10.24,7.23C9.95,7.09 9.62,7 9.28,7H9.25C8,7 7,8 7,9.25V15A3,3 0 0,0 10,18H15.07L18.57,21.5";
var mdiSeatbelt = "M12,2C13.11,2 14,2.9 14,4C14,5.11 13.11,6 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M12.39,14.79C14.03,14.79 15.46,14.89 16.64,15.04C16.7,12.32 16.46,9.92 16,9C15.87,8.73 15.69,8.5 15.5,8.3L7.43,15.22C8.79,15 10.5,14.79 12.39,14.79M7.46,17C7.59,18.74 7.85,20.5 8.27,22H10.34C10.05,21.12 9.84,20.09 9.68,19C9.68,19 12,18.56 14.32,19C14.16,20.09 13.95,21.12 13.66,22H15.73C16.17,20.45 16.43,18.61 16.56,16.79C15.41,16.65 14,16.54 12.39,16.54C10.46,16.54 8.78,16.75 7.46,17M12,7C12,7 9,7 8,9C7.66,9.68 7.44,11.15 7.37,12.96L13.92,7.34C12.93,7 12,7 12,7M18.57,5.67L17.43,4.34L13.92,7.35C14.47,7.54 15.05,7.84 15.5,8.3L18.57,5.67M20.67,15.83C20.58,15.8 19.14,15.33 16.64,15.04C16.63,15.61 16.6,16.2 16.56,16.79C18.81,17.07 20.1,17.5 20.12,17.5L20.67,15.83M7.37,12.96L3.43,16.34L4.32,17.82C4.34,17.81 5.5,17.36 7.46,17C7.35,15.59 7.32,14.2 7.37,12.96Z";
var mdiSecurity = "M12,12H19C18.47,16.11 15.72,19.78 12,20.92V12H5V6.3L12,3.19M12,1L3,5V11C3,16.55 6.84,21.73 12,23C17.16,21.73 21,16.55 21,11V5L12,1Z";
var mdiSecurityNetwork = "M13,19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17.34C8.07,16.13 6,13 6,9.67V5.67L12,3L18,5.67V9.67C18,13 15.93,16.13 13,17.34V19M12,5L8,6.69V10H12V5M12,10V16C13.91,15.53 16,13.06 16,11V10H12Z";
var mdiSeed = "M20.7,3.3C20.7,3.3 19.3,3 17.2,3C11.7,3 1.6,5.1 3.2,20.8C4.3,20.9 5.4,21 6.4,21C24.3,21 20.7,3.3 20.7,3.3M7,17C7,17 7,7 17,7C17,7 11,9 7,17Z";
var mdiSeedOff = "M22.1 21.5L2.4 1.7L1.1 3L5.9 7.8C3.8 10.5 2.6 14.6 3.2 20.8C4.3 20.9 5.4 21 6.4 21C10.9 21 14.1 19.9 16.3 18.2L20.9 22.8L22.1 21.5M7 17C7 17 7 13.7 8.9 10.8L10.2 12.1C9.1 13.4 8 15 7 17M11.6 8.4L8.5 5.3C11.3 3.4 14.7 3 17.2 3C19.3 3 20.7 3.3 20.7 3.3S22.1 10.3 18.7 15.5L12.8 9.6C15.1 7.6 17 7 17 7C14.7 7 12.9 7.5 11.6 8.4Z";
var mdiSeedOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L5.9 7.8C3.8 10.5 2.6 14.6 3.2 20.8C4.3 20.9 5.4 21 6.4 21C10.9 21 14.1 19.9 16.3 18.2L20.9 22.8L22.1 21.5M6.4 19H5.1C4.9 14.8 5.6 11.5 7.3 9.2L8.9 10.8C7 13.7 7 17 7 17C8 15 9.1 13.4 10.2 12.1L14.8 16.7C12.8 18.2 10 19 6.4 19M10 6.8L8.5 5.3C11.3 3.4 14.7 3 17.2 3C19.3 3 20.7 3.3 20.7 3.3S22.1 10.3 18.7 15.5L17.2 14C19.1 10.9 19 7.1 18.9 5.1C18.4 5 17.8 5 17.2 5C15.1 5 12.3 5.3 10 6.8M12.8 9.6L11.6 8.4C12.9 7.5 14.7 7 17 7C17 7 15.1 7.6 12.8 9.6Z";
var mdiSeedOutline = "M17.2,5V5C17.8,5 18.4,5 18.9,5.1C19.1,7.4 19.1,12 16.4,15.2C14.4,17.7 11,19 6.4,19C6,19 5.5,19 5.1,19C4.9,14.4 5.8,10.8 7.9,8.5C10.4,5.6 14.4,5 17.2,5M17.2,3C11.7,3 1.6,5.1 3.2,20.8C4.3,20.9 5.4,21 6.4,21C24.3,21 20.7,3.3 20.7,3.3C20.7,3.3 19.3,3 17.2,3M17,7C7,7 7,17 7,17C11,9 17,7 17,7Z";
var mdiSeesaw = "M21.68 13.26L22.04 15.23L2.35 18.77L2 16.8L4.95 16.27L4.6 14.3C4.5 13.76 4.86 13.24 5.41 13.14C5.95 13.04 6.47 13.4 6.57 13.95L6.92 15.91L16.76 14.15L16.41 12.18C16.31 11.63 16.67 11.11 17.22 11C17.76 10.92 18.28 11.28 18.38 11.82L18.73 13.79L21.68 13.26M10.06 18.4L8 22H16L13.58 17.77L10.06 18.4Z";
var mdiSegment = "M21,8H3V6H21M9,13H21V11H9M9,18H21V16H9";
var mdiSelect = "M4,3H5V5H3V4A1,1 0 0,1 4,3M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M21,20A1,1 0 0,1 20,21H19V19H21V20M15,21V19H17V21H15M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M3,7H5V9H3V7M21,7V9H19V7H21Z";
var mdiSelectAll = "M9,9H15V15H9M7,17H17V7H7M15,5H17V3H15M15,21H17V19H15M19,17H21V15H19M19,9H21V7H19M19,21A2,2 0 0,0 21,19H19M19,13H21V11H19M11,21H13V19H11M9,3H7V5H9M3,17H5V15H3M5,21V19H3A2,2 0 0,0 5,21M19,3V5H21A2,2 0 0,0 19,3M13,3H11V5H13M3,9H5V7H3M7,21H9V19H7M3,13H5V11H3M3,5H5V3A2,2 0 0,0 3,5Z";
var mdiSelectColor = "M3.88,3C3.38,3.06 3,3.5 3,4V4L3,5H4L5,5V4L5,3H4L3.88,3M7,3V5H9V3H7M11,3V5H13V3H11M15,3V5H17V3H15M19,3V4L19,5H20L21,5V4L21,3.88C20.94,3.38 20.5,3 20,3H19M3,7V9H5V7H3M19,7V9H21V7H19M3,11V13H5V11H3M19.31,12C19.18,12 19.05,12.05 18.95,12.14L17.39,13.71L16.43,12.75L15.72,13.46L16.43,14.17L11.97,18.63V21H14.35L18.8,16.54L19.5,17.25L20.22,16.54L19.26,15.58L20.82,14.03C21,13.83 21,13.5 20.82,13.31L19.65,12.14C19.56,12.05 19.44,12 19.31,12M3,15V17H5V15H3M17,15L17.97,15.97L13.93,20L12.97,19.04L17,15M3,19V20L3,20.12C3.06,20.62 3.5,21 4,21V21H5V20L5,19H4L3,19M7,19V21H9V19H7Z";
var mdiSelectCompare = "M13,23H11V1H13V23M9,19H5V5H9V3H5C3.89,3 3,3.89 3,5V19C3,20.11 3.9,21 5,21H9V19M19,7V9H21V7H19M19,5H21C21,3.89 20.1,3 19,3V5M21,15H19V17H21V15M19,11V13H21V11H19M17,3H15V5H17V3M19,21C20.11,21 21,20.11 21,19H19V21M17,19H15V21H17V19Z";
var mdiSelectDrag = "M13,17H17V13H19V17H23V19H19V23H17V19H13V17M11,17V19H9V17H11M7,17V19H5V17H7M19,9V11H17V9H19M19,5V7H17V5H19M15,5V7H13V5H15M11,5V7H9V5H11M7,5V7H5V5H7M7,13V15H5V13H7M7,9V11H5V9H7Z";
var mdiSelectGroup = "M5 3A2 2 0 0 0 3 5H5M7 3V5H9V3M11 3V5H13V3M15 3V5H17V3M19 3V5H21A2 2 0 0 0 19 3M3 7V9H5V7M7 7V11H11V7M13 7V11H17V7M19 7V9H21V7M3 11V13H5V11M19 11V13H21V11M7 13V17H11V13M13 13V17H17V13M3 15V17H5V15M19 15V17H21V15M3 19A2 2 0 0 0 5 21V19M7 19V21H9V19M11 19V21H13V19M15 19V21H17V19M19 19V21A2 2 0 0 0 21 19Z";
var mdiSelectInverse = "M5,3H7V5H9V3H11V5H13V3H15V5H17V3H19V5H21V7H19V9H21V11H19V13H21V15H19V17H21V19H19V21H17V19H15V21H13V19H11V21H9V19H7V21H5V19H3V17H5V15H3V13H5V11H3V9H5V7H3V5H5V3Z";
var mdiSelectMarker = "M4 3H5V5H3V4C3 3.45 3.45 3 4 3M20 3C20.55 3 21 3.45 21 4V5H19V3H20M15 5V3H17V5H15M11 5V3H13V5H11M7 5V3H9V5H7M11 21V19H13V21H11M7 21V19H9V21H7M4 21C3.45 21 3 20.55 3 20V19H5V21H4M3 15H5V17H3V15M3 11H5V13H3V11M3 7H5V9H3V7M21 7V9H19V7H21M19.5 13C21.4 13 23 14.6 23 16.5C23 19.1 19.5 23 19.5 23C19.5 23 16 19.1 16 16.5C16 14.6 17.6 13 19.5 13M19.5 17.8C20.2 17.8 20.8 17.2 20.7 16.6C20.7 16 20.1 15.4 19.5 15.4C18.9 15.4 18.3 15.9 18.3 16.6C18.3 17.2 18.8 17.8 19.5 17.8Z";
var mdiSelectMultiple = "M18 12H20V14H18V12M14 16H16V18H14V16M20 17C20 17.55 19.55 18 19 18H18V16H20V17M7 4H8V6H6V5C6 4.45 6.45 4 7 4M19 4C19.55 4 20 4.45 20 5V6H18V4H19M14 6V4H16V6H14M10 6V4H12V6H10M10 18V16H12V18H10M7 18C6.45 18 6 17.55 6 17V16H8V18H7M6 12H8V14H6V12M6 8H8V10H6V8M20 8V10H18V8H20M3 8H4V20H16V21C16 21.54 15.57 22 15.03 22H15L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8Z";
var mdiSelectMultipleMarker = "M7 4H8V6H6V5C6 4.45 6.45 4 7 4M19 4C19.55 4 20 4.45 20 5V6H18V4H19M14 6V4H16V6H14M10 6V4H12V6H10M10 18V16H12V18H10M7 18C6.45 18 6 17.55 6 17V16H8V18H7M6 12H8V14H6V12M6 8H8V10H6V8M20 8V10H18V8H20M3 8H4V20H14.58L16.03 22L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8Z";
var mdiSelectOff = "M1,4.27L2.28,3L21,21.72L19.73,23L17,20.27V21H15V19H15.73L5,8.27V9H3V7H3.73L1,4.27M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M21,7V9H19V7H21Z";
var mdiSelectPlace = "M4 3H5V5H3V4C3 3.5 3.5 3 4 3M20 3C20.5 3 21 3.5 21 4V5H19V3H20M15 5V3H17V5H15M11 5V3H13V5H11M7 5V3H9V5H7M21 12C21 12.5 20.5 13 20 13H19V11H21V12M15 13V11H17V13H15M11 13V11H13V13H11M7 13V11H9V13H7M4 13C3.5 13 3 12.5 3 12V11H5V13H4M3 7H5V9H3V7M21 7V9H19V7H21M7 16L12 21L17 16H7Z";
var mdiSelectSearch = "M19.31 18.9C19.75 18.21 20 17.38 20 16.5C20 14 18 12 15.5 12S11 14 11 16.5 13 21 15.5 21C16.37 21 17.19 20.75 17.88 20.32L21 23.39L22.39 22L19.31 18.9M15.5 19C14.12 19 13 17.88 13 16.5S14.12 14 15.5 14 18 15.12 18 16.5 16.88 19 15.5 19M21 9H19V7H21V9M21 5H19V3H20C20.55 3 21 3.45 21 4V5M19 11.03V11H21V13H20.97C20.46 12.21 19.79 11.54 19 11.03M17 5H15V3H17V5M13 5H11V3H13V5M3 7H5V9H3V7M7 19H9V21H7V19M3 11H5V13H3V11M4 3H5V5H3V4C3 3.45 3.45 3 4 3M9 5H7V3H9V5M3 19H5V21H4C3.45 21 3 20.55 3 20V19M3 15H5V17H3V15Z";
var mdiSelection = "M2,4C2,2.89 2.9,2 4,2H7V4H4V7H2V4M22,4V7H20V4H17V2H20A2,2 0 0,1 22,4M20,20V17H22V20C22,21.11 21.1,22 20,22H17V20H20M2,20V17H4V20H7V22H4A2,2 0 0,1 2,20M10,2H14V4H10V2M10,20H14V22H10V20M20,10H22V14H20V10M2,10H4V14H2V10Z";
var mdiSelectionDrag = "M14,17H17V14H19V17H22V19H19V22H17V19H14V17M12,17V19H9V17H12M7,17V19H3V15H5V17H7M3,13V10H5V13H3M3,8V4H7V6H5V8H3M9,4H12V6H9V4M15,4H19V8H17V6H15V4M19,10V12H17V10H19Z";
var mdiSelectionEllipse = "M6.35,20.25L7.56,18.66C8.42,19.23 9.39,19.64 10.43,19.85L10.16,21.83C8.77,21.57 7.5,21 6.35,20.25M16.43,18.66L17.64,20.26C16.5,21.03 15.23,21.57 13.84,21.83L13.57,19.85C14.61,19.64 15.57,19.23 16.43,18.66M19.84,13.59L21.83,13.86C21.57,15.25 21,16.54 20.24,17.66L18.65,16.45C19.22,15.6 19.63,14.63 19.84,13.59M2.17,13.84L4.15,13.57C4.36,14.61 4.77,15.58 5.34,16.44L3.75,17.65C3,16.5 2.43,15.23 2.17,13.84M18.66,7.56L20.25,6.35C21.03,7.5 21.58,8.78 21.83,10.18L19.85,10.45C19.64,9.4 19.23,8.42 18.66,7.56M13.57,4.15L13.84,2.17C15.23,2.43 16.5,3 17.65,3.75L16.44,5.34C15.58,4.77 14.61,4.36 13.57,4.15M7.56,5.34L6.35,3.75C7.5,3 8.77,2.43 10.16,2.17L10.43,4.15C9.39,4.36 8.42,4.77 7.56,5.34M4.15,10.43L2.17,10.16C2.43,8.77 3,7.5 3.75,6.35L5.34,7.56C4.77,8.42 4.36,9.39 4.15,10.43Z";
var mdiSelectionEllipseArrowInside = "M11.2 4C9.94 4.12 8.72 4.53 7.64 5.2L6.64 3.47C7.95 2.64 9.45 2.13 11 2M17.53 6.25C16.62 5.39 15.53 4.73 14.34 4.33L15 2.39C16.5 2.84 17.89 3.66 19 4.78M5.34 7.41C4.64 8.44 4.19 9.6 4 10.83L2 10.55C2.2 9 2.79 7.5 3.7 6.23M22 12V12.66L20 12.5V12C20 10.92 19.81 9.86 19.39 8.86L21.22 8.06C21.75 9.31 22 10.65 22 12M6 17.3L4.5 18.61C3.47 17.43 2.72 16.04 2.3 14.53L4.17 14C4.53 15.22 5.16 16.35 6 17.3M12.14 22H12C10.5 22 9 21.68 7.64 21.07L8.53 19.24C9.62 19.75 10.8 20 12 20H12.19M17 21H15V15H21V17H18.42L21.14 19.76L19.73 21.17L17 18.5";
var mdiSelectionMarker = "M2 4C2 2.89 2.9 2 4 2H7V4H4V7H2V4M22 4V7H20V4H17V2H20C21.1 2 22 2.89 22 4M2 20V17H4V20H7V22H4C2.9 22 2 21.11 2 20M10 2H14V4H10V2M10 20H14V22H10V20M2 10H4V14H2V10M18.5 13C20.4 13 22 14.6 22 16.5C22 19.1 18.5 23 18.5 23C18.5 23 15 19.1 15 16.5C15 14.6 16.6 13 18.5 13M18.5 17.8C19.2 17.8 19.8 17.2 19.7 16.6C19.7 16 19.1 15.4 18.5 15.4C17.9 15.4 17.3 15.9 17.3 16.6C17.3 17.2 17.8 17.8 18.5 17.8M20 10H22V12.34C21.42 11.84 20.74 11.45 20 11.23V10Z";
var mdiSelectionMultiple = "M11 6V4H15V6H11M6 9H8V13H6V9M6 6C6 4.89 6.9 4 8 4H9V6H8V7H6V6M8 18C6.89 18 6 17.1 6 16V15H8V16H9V18H8M18 4C19.11 4 20 4.9 20 6V7H18V6H17V4H18M15 16V18H11V16H15M20 13H18V9H20V13M20 16C20 17.11 19.1 18 18 18H17V16H18V15H20V16M3 8H4V20H16V21C16 21.54 15.57 22 15.03 22H15L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8Z";
var mdiSelectionMultipleMarker = "M7 4H9V6H8V7H6V5C6 4.45 6.45 4 7 4M19 4C19.55 4 20 4.45 20 5V7H18V6H17V4H19M11 6V4H15V6H11M7 18C6.45 18 6 17.55 6 17V15H8V16H9V18H7M6 9H8V13H6V9M3 8H4V20H14.58L16.03 22L3 22C2.45 22 2 21.55 2 21V9C2 8.45 2.45 8 3 8M18.5 12C20.4 12 22 13.6 22 15.5C22 18.1 18.5 22 18.5 22C18.5 22 15 18.1 15 15.5C15 13.6 16.6 12 18.5 12M18.5 16.8C19.2 16.8 19.8 16.2 19.7 15.6C19.7 15 19.1 14.4 18.5 14.4C17.9 14.4 17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8M11 18V16H13C13.09 16.66 13.27 17.33 13.5 18H11M20 9V10.23C19.5 10.08 19 10 18.5 10L18 10.03V9H20Z";
var mdiSelectionOff = "M0.5,3.77L1.78,2.5L21.5,22.22L20.23,23.5L18.73,22H17V20.27L3.73,7H2V5.27L0.5,3.77M4,2H7V4H5.82L3.83,2H4M22,4V7H20V4H17V2H20A2,2 0 0,1 22,4M20,17H22V20L22,20.17L20,18.18V17M2,20V17H4V20H7V22H4A2,2 0 0,1 2,20M10,2H14V4H10V2M10,20H14V22H10V20M20,10H22V14H20V10M2,10H4V14H2V10Z";
var mdiSelectionSearch = "M19.27 18.9C19.7 18.21 19.95 17.38 19.95 16.5C19.95 14 17.95 12 15.46 12S10.96 14 10.96 16.5 12.96 21 15.46 21C16.33 21 17.15 20.75 17.84 20.32L20.96 23.39L22.35 22L19.27 18.9M15.46 19C14.07 19 12.96 17.88 12.96 16.5S14.07 14 15.46 14 17.95 15.12 17.95 16.5 16.84 19 15.46 19M22 14H21.45C21.12 13.19 20.62 12.47 20 11.86V10H22V14M20 4H17V2H20C21.11 2 22 2.9 22 4V7H20V4M14 4H10V2H14V4M4 2H7V4H4V7H2V4C2 2.89 2.9 2 4 2M12 22H10V20C10.5 20.82 11.2 21.5 12 22M4 20H7V22H4C2.9 22 2 21.11 2 20V17H4V20M4 14H2V10H4V14Z";
var mdiSemanticWeb = "M12.9 4.22C18.73 6.84 20 2 20 2S18.89 8.07 13.79 10.55C12.75 11.06 12.1 11.33 12.1 11.33L3.73 7.25L12.1 3.82C12.1 3.82 11.9 3.76 12.9 4.22M11.12 22L3.33 17.78V9.07L11.12 13.04V22M12.88 22L20.68 17.78V9.07L12.88 13.04V22Z";
var mdiSend = "M2,21L23,12L2,3V10L17,12L2,14V21Z";
var mdiSendCheck = "M2 3V10L17 12L2 14V21L23 12M22 15.5L18.5 19L16.5 17L15 18.5L18.5 22L23.5 17Z";
var mdiSendCheckOutline = "M2 3V10L17 12L2 14V21L23 12M4 6.03L11.53 9.25L4 8.25M11.53 14.75L4 17.97V15.75M22 15.5L18.5 19L16.5 17L15 18.5L18.5 22L23.5 17Z";
var mdiSendCircle = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M8,7.71V11.05L15.14,12L8,12.95V16.29L18,12L8,7.71Z";
var mdiSendCircleOutline = "M8,7.71L18,12L8,16.29V12.95L15.14,12L8,11.05V7.71M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiSendClock = "M2 3V10L11 12L2 14V21L9.27 17.89A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 16 9L2 3M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12.5V16.5L18 18.5L18.75 17.25L16.5 15.75V12.5H15Z";
var mdiSendClockOutline = "M2 3V10L11 12L2 14V21L9.27 17.89A7 7 0 0 0 16 23A7 7 0 0 0 23 16A7 7 0 0 0 16 9L2 3M4 6.03L12.78 9.8A7 7 0 0 0 12.1 10.2L4 8.4V6.03M16 11A5 5 0 0 1 21 16A5 5 0 0 1 16 21A5 5 0 0 1 11 16A5 5 0 0 1 16 11M15 12.5V16.5L18 18.5L18.75 17.25L16.5 15.75V12.5H15M9.18 14.45A7 7 0 0 0 9 15.82L4 17.97V15.6L9.18 14.45Z";
var mdiSendLock = "M23,18V17.5A2.5,2.5 0 0,0 20.5,15A2.5,2.5 0 0,0 18,17.5V18A1,1 0 0,0 17,19V23A1,1 0 0,0 18,24H23A1,1 0 0,0 24,23V19A1,1 0 0,0 23,18M22,18H19V17.5A1.5,1.5 0 0,1 20.5,16A1.5,1.5 0 0,1 22,17.5V18M23,12L2,21V14L17,12L2,10V3L23,12Z";
var mdiSendLockOutline = "M23 18V17.5C23 16.12 21.88 15 20.5 15S18 16.12 18 17.5V18C17.45 18 17 18.45 17 19V23C17 23.55 17.45 24 18 24H23C23.55 24 24 23.55 24 23V19C24 18.45 23.55 18 23 18M22 18H19V17.5C19 16.67 19.67 16 20.5 16S22 16.67 22 17.5V18M4 6.03L11.5 9.25L4 8.25L4 6.03M11.5 14.75L4 17.97V15.75L11.5 14.75M2 3L2 10L17 12L2 14L2 21L23 12L2 3Z";
var mdiSendOutline = "M4 6.03L11.5 9.25L4 8.25L4 6.03M11.5 14.75L4 17.97V15.75L11.5 14.75M2 3L2 10L17 12L2 14L2 21L23 12L2 3Z";
var mdiSerialPort = "M7,3H17V5H19V8H16V14H8V8H5V5H7V3M17,9H19V14H17V9M11,15H13V22H11V15M5,9H7V14H5V9Z";
var mdiServer = "M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H4A1,1 0 0,1 3,6V2A1,1 0 0,1 4,1M4,9H20A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9M4,17H20A1,1 0 0,1 21,18V22A1,1 0 0,1 20,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17M9,5H10V3H9V5M9,13H10V11H9V13M9,21H10V19H9V21M5,3V5H7V3H5M5,11V13H7V11H5M5,19V21H7V19H5Z";
var mdiServerMinus = "M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H16V18H8V16Z";
var mdiServerNetwork = "M13,19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H4A1,1 0 0,1 3,16V12A1,1 0 0,1 4,11H20A1,1 0 0,1 21,12V16A1,1 0 0,1 20,17H13V19M4,3H20A1,1 0 0,1 21,4V8A1,1 0 0,1 20,9H4A1,1 0 0,1 3,8V4A1,1 0 0,1 4,3M9,7H10V5H9V7M9,15H10V13H9V15M5,5V7H7V5H5M5,13V15H7V13H5Z";
var mdiServerNetworkOff = "M13,19H14A1,1 0 0,1 15,20H15.73L13,17.27V19M22,20V21.18L20.82,20H22M21,22.72L19.73,24L17.73,22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H4A1,1 0 0,1 3,16V12A1,1 0 0,1 4,11H6.73L4.73,9H4A1,1 0 0,1 3,8V7.27L1,5.27L2.28,4L21,22.72M4,3H20A1,1 0 0,1 21,4V8A1,1 0 0,1 20,9H9.82L7,6.18V5H5.82L3.84,3C3.89,3 3.94,3 4,3M20,11A1,1 0 0,1 21,12V16A1,1 0 0,1 20,17H17.82L11.82,11H20M9,7H10V5H9V7M9,15H10V14.27L9,13.27V15M5,13V15H7V13H5Z";
var mdiServerOff = "M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H8.82L6.82,5H7V3H5V3.18L3.21,1.39C3.39,1.15 3.68,1 4,1M22,22.72L20.73,24L19.73,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17H13.73L11.73,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9H5.73L3.68,6.95C3.38,6.85 3.15,6.62 3.05,6.32L1,4.27L2.28,3L22,22.72M20,9A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H16.82L10.82,9H20M20,17A1,1 0 0,1 21,18V19.18L18.82,17H20M9,5H10V3H9V5M9,13H9.73L9,12.27V13M9,21H10V19H9V21M5,11V13H7V11H5M5,19V21H7V19H5Z";
var mdiServerPlus = "M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H11V13H13V16H16V18H13V21H11V18H8V16Z";
var mdiServerRemove = "M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M10.59,17L8,14.41L9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17Z";
var mdiServerSecurity = "M3,1H19A1,1 0 0,1 20,2V6A1,1 0 0,1 19,7H3A1,1 0 0,1 2,6V2A1,1 0 0,1 3,1M3,9H19A1,1 0 0,1 20,10V10.67L17.5,9.56L11,12.44V15H3A1,1 0 0,1 2,14V10A1,1 0 0,1 3,9M3,17H11C11.06,19.25 12,21.4 13.46,23H3A1,1 0 0,1 2,22V18A1,1 0 0,1 3,17M8,5H9V3H8V5M8,13H9V11H8V13M8,21H9V19H8V21M4,3V5H6V3H4M4,11V13H6V11H4M4,19V21H6V19H4M17.5,12L22,14V17C22,19.78 20.08,22.37 17.5,23C14.92,22.37 13,19.78 13,17V14L17.5,12M17.5,13.94L15,15.06V17.72C15,19.26 16.07,20.7 17.5,21.06V13.94Z";
var mdiSetAll = "M9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5M8.5,12C8.5,13.87 9.29,15.56 10.56,16.75L11.56,16.29C10.31,15.29 9.5,13.74 9.5,12C9.5,10.26 10.31,8.71 11.56,7.71L10.56,7.25C9.29,8.44 8.5,10.13 8.5,12M15.5,12C15.5,10.13 14.71,8.44 13.44,7.25L12.44,7.71C13.69,8.71 14.5,10.26 14.5,12C14.5,13.74 13.69,15.29 12.44,16.29L13.44,16.75C14.71,15.56 15.5,13.87 15.5,12Z";
var mdiSetCenter = "M9,5A7,7 0 0,0 2,12A7,7 0 0,0 9,19C10.04,19 11.06,18.76 12,18.32C12.94,18.76 13.96,19 15,19A7,7 0 0,0 22,12A7,7 0 0,0 15,5C13.96,5 12.94,5.24 12,5.68C11.06,5.24 10.04,5 9,5M9,7C9.34,7 9.67,7.03 10,7.1C8.72,8.41 8,10.17 8,12C8,13.83 8.72,15.59 10,16.89C9.67,16.96 9.34,17 9,17A5,5 0 0,1 4,12A5,5 0 0,1 9,7M15,7A5,5 0 0,1 20,12A5,5 0 0,1 15,17C14.66,17 14.33,16.97 14,16.9C15.28,15.59 16,13.83 16,12C16,10.17 15.28,8.41 14,7.11C14.33,7.04 14.66,7 15,7Z";
var mdiSetCenterRight = "M15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19M9,17L10,16.89C8.72,15.59 8,13.83 8,12C8,10.17 8.72,8.41 10,7.1L9,7A5,5 0 0,0 4,12A5,5 0 0,0 9,17M15.5,12C15.5,10.13 14.71,8.44 13.44,7.25L12.44,7.71C13.69,8.71 14.5,10.26 14.5,12C14.5,13.74 13.69,15.29 12.44,16.29L13.44,16.75C14.71,15.56 15.5,13.87 15.5,12Z";
var mdiSetLeft = "M9,5A7,7 0 0,0 2,12A7,7 0 0,0 9,19C10.04,19 11.06,18.76 12,18.32C12.94,18.76 13.96,19 15,19A7,7 0 0,0 22,12A7,7 0 0,0 15,5C13.96,5 12.94,5.24 12,5.68C11.06,5.24 10.04,5 9,5M15,7A5,5 0 0,1 20,12A5,5 0 0,1 15,17C14.66,17 14.33,16.97 14,16.9C15.28,15.59 16,13.83 16,12C16,10.17 15.28,8.41 14,7.11C14.33,7.04 14.66,7 15,7M12,8C13.26,8.95 14,10.43 14,12C14,13.57 13.26,15.05 12,16C10.74,15.05 10,13.57 10,12C10,10.43 10.74,8.95 12,8Z";
var mdiSetLeftCenter = "M9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5M15,7L14,7.11C15.28,8.41 16,10.17 16,12C16,13.83 15.28,15.59 14,16.9L15,17A5,5 0 0,0 20,12A5,5 0 0,0 15,7M8.5,12C8.5,13.87 9.29,15.56 10.56,16.75L11.56,16.29C10.31,15.29 9.5,13.74 9.5,12C9.5,10.26 10.31,8.71 11.56,7.71L10.56,7.25C9.29,8.44 8.5,10.13 8.5,12Z";
var mdiSetLeftRight = "M9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5M9,12C9,14.22 10.21,16.16 12,17.2C13.79,16.16 15,14.22 15,12C15,9.78 13.79,7.84 12,6.8C10.21,7.84 9,9.78 9,12Z";
var mdiSetMerge = "M2 7V9H7V7H2M12 9V11H9V13H12V15L15 12L12 9M17 9V15H22V9H17M2 11V13H7V11H2M2 15V17H7V15H2Z";
var mdiSetNone = "M9,5A7,7 0 0,0 2,12A7,7 0 0,0 9,19C10.04,19 11.06,18.76 12,18.32C12.94,18.76 13.96,19 15,19A7,7 0 0,0 22,12A7,7 0 0,0 15,5C13.96,5 12.94,5.24 12,5.68C11.06,5.24 10.04,5 9,5M9,7C9.34,7 9.67,7.03 10,7.1C8.72,8.41 8,10.17 8,12C8,13.83 8.72,15.59 10,16.89C9.67,16.96 9.34,17 9,17A5,5 0 0,1 4,12A5,5 0 0,1 9,7M15,7A5,5 0 0,1 20,12A5,5 0 0,1 15,17C14.66,17 14.33,16.97 14,16.9C15.28,15.59 16,13.83 16,12C16,10.17 15.28,8.41 14,7.11C14.33,7.04 14.66,7 15,7M12,8C13.26,8.95 14,10.43 14,12C14,13.57 13.26,15.05 12,16C10.74,15.05 10,13.57 10,12C10,10.43 10.74,8.95 12,8Z";
var mdiSetRight = "M15,19C13.96,19 12.94,18.76 12,18.32C11.06,18.76 10.04,19 9,19A7,7 0 0,1 2,12A7,7 0 0,1 9,5C10.04,5 11.06,5.24 12,5.68C12.94,5.24 13.96,5 15,5A7,7 0 0,1 22,12A7,7 0 0,1 15,19M9,17L10,16.89C8.72,15.59 8,13.83 8,12C8,10.17 8.72,8.41 10,7.1L9,7A5,5 0 0,0 4,12A5,5 0 0,0 9,17M12,16C13.26,15.05 14,13.57 14,12C14,10.43 13.26,8.95 12,8C10.74,8.95 10,10.43 10,12C10,13.57 10.74,15.05 12,16Z";
var mdiSetSplit = "M17 7V9H22V7H17M2 9V15H7V9H2M12 9V11H9V13H12V15L15 12L12 9M17 11V13H22V11H17M17 15V17H22V15H17Z";
var mdiSetSquare = "M17.7 17.7L16.6 18.8L15.9 18L17 17L15 15L14 16.1L13.3 15.4L14.4 14.3L12.5 12.4L11.4 13.5L10.7 12.8L11.8 11.7L9.8 9.8L8.7 10.9L8 10.2L9 9L7.1 7.1L6 8.1L5.3 7.4L6.4 6.3L4 4V20H20L17.7 17.7M7 17V11.2L12.8 17H7Z";
var mdiSetTopBox = "M5,15.5A0.5,0.5 0 0,1 4.5,16H3.5A0.5,0.5 0 0,1 3,15.5V15H2A1,1 0 0,1 1,14V11A1,1 0 0,1 2,10H22A1,1 0 0,1 23,11V14A1,1 0 0,1 22,15H21V15.5A0.5,0.5 0 0,1 20.5,16H19.5A0.5,0.5 0 0,1 19,15.5V15H5V15.5M3,12V13H5V12H3M6,12V13H8V12H6M20.5,11.5A1,1 0 0,0 19.5,12.5A1,1 0 0,0 20.5,13.5A1,1 0 0,0 21.5,12.5A1,1 0 0,0 20.5,11.5Z";
var mdiSettingsHelper = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z";
var mdiShaker = "M7 16C7 16.55 6.55 17 6 17S5 16.55 5 16C5 15.45 5.45 15 6 15S7 15.45 7 16M9 16C8.45 16 8 16.45 8 17S8.45 18 9 18 10 17.55 10 17 9.55 16 9 16M4 18C3.45 18 3 18.45 3 19S3.45 20 4 20 5 19.55 5 19 4.55 18 4 18M7 19C6.45 19 6 19.45 6 20S6.45 21 7 21 8 20.55 8 20 7.55 19 7 19M15.33 2.72L9.8 9.65L13.34 13.19L20.28 7.67C21.18 6.91 21.25 5.54 20.41 4.7L18.3 2.59C17.46 1.75 16.09 1.82 15.33 2.72M8.39 12.5L10.5 14.6C10.9 15 11.54 15 11.93 14.6L12.63 13.9L9.1 10.36L8.39 11.07C8 11.46 8 12.09 8.39 12.5Z";
var mdiShakerOutline = "M16.88 4L16.88 4L19.03 6.1L13.5 10.5L12.5 9.5L16.87 4L16.88 4M16.88 2C16.3 2 15.73 2.24 15.33 2.72L9.8 9.65L13.34 13.19L20.28 7.67C21.18 6.91 21.25 5.54 20.41 4.7L18.3 2.59C17.9 2.19 17.39 2 16.88 2M9.1 10.36L8.39 11.07C8 11.46 8 12.09 8.39 12.5L10.5 14.6C10.71 14.8 10.96 14.89 11.22 14.89S11.73 14.8 11.93 14.6L12.63 13.9L9.1 10.36M6 15C5.45 15 5 15.45 5 16C5 16.55 5.45 17 6 17C6.55 17 7 16.55 7 16C7 15.45 6.55 15 6 15M9 16C8.45 16 8 16.45 8 17S8.45 18 9 18C9.55 18 10 17.55 10 17S9.55 16 9 16M4 18C3.45 18 3 18.45 3 19S3.45 20 4 20C4.55 20 5 19.55 5 19S4.55 18 4 18M7 19C6.45 19 6 19.45 6 20S6.45 21 7 21C7.55 21 8 20.55 8 20S7.55 19 7 19Z";
var mdiShape = "M11,13.5V21.5H3V13.5H11M12,2L17.5,11H6.5L12,2M17.5,13C20,13 22,15 22,17.5C22,20 20,22 17.5,22C15,22 13,20 13,17.5C13,15 15,13 17.5,13Z";
var mdiShapeCirclePlus = "M11,19A6,6 0 0,0 17,13H19A8,8 0 0,1 11,21A8,8 0 0,1 3,13A8,8 0 0,1 11,5V7A6,6 0 0,0 5,13A6,6 0 0,0 11,19M19,5H22V7H19V10H17V7H14V5H17V2H19V5Z";
var mdiShapeOutline = "M11,13.5V21.5H3V13.5H11M9,15.5H5V19.5H9V15.5M12,2L17.5,11H6.5L12,2M12,5.86L10.08,9H13.92L12,5.86M17.5,13C20,13 22,15 22,17.5C22,20 20,22 17.5,22C15,22 13,20 13,17.5C13,15 15,13 17.5,13M17.5,15A2.5,2.5 0 0,0 15,17.5A2.5,2.5 0 0,0 17.5,20A2.5,2.5 0 0,0 20,17.5A2.5,2.5 0 0,0 17.5,15Z";
var mdiShapeOvalPlus = "M19 5H22V7H19V10H17V7H14V5H17V2H19V5M11 4L12 4.09V6.14C11.68 6.05 11.34 6 11 6C8.24 6 6 9.13 6 13C6 16.87 8.24 20 11 20C13.76 20 16 16.87 16 13L15.95 12H17.96L18 13C18 17.97 14.87 22 11 22C7.13 22 4 17.97 4 13C4 8.03 7.13 4 11 4Z";
var mdiShapePlus = "M2,2H11V11H2V2M17.5,2C20,2 22,4 22,6.5C22,9 20,11 17.5,11C15,11 13,9 13,6.5C13,4 15,2 17.5,2M6.5,14L11,22H2L6.5,14M19,17H22V19H19V22H17V19H14V17H17V14H19V17Z";
var mdiShapePolygonPlus = "M17,15.7V13H19V17L10,21L3,14L7,5H11V7H8.3L5.4,13.6L10.4,18.6L17,15.7M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z";
var mdiShapeRectanglePlus = "M19,6H22V8H19V11H17V8H14V6H17V3H19V6M17,17V14H19V19H3V6H11V8H5V17H17Z";
var mdiShapeSquarePlus = "M19,5H22V7H19V10H17V7H14V5H17V2H19V5M17,19V13H19V21H3V5H11V7H5V19H17Z";
var mdiShapeSquareRoundedPlus = "M17 2H19V5H22V7H19V10H17V7H14V5H17V2M7 5H11V7H7C5.9 7 5 7.9 5 9V17C5 18.11 5.9 19 7 19H15C16.11 19 17 18.11 17 17V13H19V17C19 19.21 17.21 21 15 21H7C4.79 21 3 19.21 3 17V9C3 6.79 4.79 5 7 5Z";
var mdiShare = "M21,12L14,5V9C7,10 4,15 3,20C5.5,16.5 9,14.9 14,14.9V19L21,12Z";
var mdiShareAll = "M11 9V5L18 12L11 19V14.9C6 14.9 2.5 16.5 0 20C1 15 4 10 11 9M17 8V5L24 12L17 19V16L21 12L17 8Z";
var mdiShareAllOutline = "M13 9.8V10.7L11.3 10.9C8.7 11.3 6.8 12.3 5.4 13.6C7.1 13.1 8.9 12.8 11 12.8H13V14.1L15.2 12L13 9.8M11 5L18 12L11 19V14.9C6 14.9 2.5 16.5 0 20C1 15 4 10 11 9M17 8V5L24 12L17 19V16L21 12";
var mdiShareCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M14 16V13C10.39 13 7.81 14.43 6 17C6.72 13.33 8.94 9.73 14 9V6L19 11L14 16Z";
var mdiShareOff = "M20.8 22.7L15.6 17.5L14 19V15.9L13.1 14.9C8.6 15.2 5.4 16.8 3 20.1C3.58 16.31 5.72 12.94 8.9 10.8L1.1 3L2.4 1.7L22.1 21.5M18.1 14.9L21 12L14 5V9L12.5 9.3";
var mdiShareOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L8.9 10.8C5.4 12.9 3.7 16.4 3 20C5.3 16.7 8.6 15.1 13 14.9L14 15.9V19L15.6 17.4L20.8 22.7M8.3 13.8C8.94 13.22 9.65 12.71 10.4 12.3L11.3 13.1M14.2 11L12.5 9.3L14 9V5L21 12L18.1 14.9L16.7 13.5L18.2 12L16 9.8V10.7";
var mdiShareOutline = "M14,5V9C7,10 4,15 3,20C5.5,16.5 9,14.9 14,14.9V19L21,12L14,5M16,9.83L18.17,12L16,14.17V12.9H14C11.93,12.9 10.07,13.28 8.34,13.85C9.74,12.46 11.54,11.37 14.28,11L16,10.73V9.83Z";
var mdiShareVariant = "M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19A2.92,2.92 0 0,0 18,16.08Z";
var mdiShareVariantOutline = "M18 16.08C17.24 16.08 16.56 16.38 16.04 16.85L8.91 12.7C8.96 12.47 9 12.24 9 12S8.96 11.53 8.91 11.3L15.96 7.19C16.5 7.69 17.21 8 18 8C19.66 8 21 6.66 21 5S19.66 2 18 2 15 3.34 15 5C15 5.24 15.04 5.47 15.09 5.7L8.04 9.81C7.5 9.31 6.79 9 6 9C4.34 9 3 10.34 3 12S4.34 15 6 15C6.79 15 7.5 14.69 8.04 14.19L15.16 18.34C15.11 18.55 15.08 18.77 15.08 19C15.08 20.61 16.39 21.91 18 21.91S20.92 20.61 20.92 19C20.92 17.39 19.61 16.08 18 16.08M18 4C18.55 4 19 4.45 19 5S18.55 6 18 6 17 5.55 17 5 17.45 4 18 4M6 13C5.45 13 5 12.55 5 12S5.45 11 6 11 7 11.45 7 12 6.55 13 6 13M18 20C17.45 20 17 19.55 17 19S17.45 18 18 18 19 18.45 19 19 18.55 20 18 20Z";
var mdiSharkFin = "M22 16V18H20C18.6 18 17.2 17.6 16 17C13.5 18.3 10.5 18.3 8 17C6.8 17.6 5.4 18 4 18H2V16H4C5.4 16 6.8 15.5 8 14.7C10.4 16.4 13.6 16.4 16 14.7C17.2 15.5 18.6 16 20 16H22M5.28 13.79C5.82 13.63 6.37 13.38 6.89 13.04L8.03 12.27L9.16 13.07C10 13.66 11 14 12 14C13 14 14 13.66 14.84 13.07L15.97 12.27L17.11 13.04C17.93 13.59 18.83 13.9 19.67 13.97C18.24 7.4 12.37 2 6 2C5.65 2 5.33 2.18 5.15 2.47C4.97 2.77 4.95 3.14 5.11 3.45C7.28 7.79 6.61 11.29 5.28 13.79M16 18.7C13.6 20.4 10.4 20.4 8 18.7C6.8 19.5 5.4 20 4 20H2V22H4C5.4 22 6.8 21.6 8 21C10.5 22.3 13.5 22.3 16 21C17.2 21.6 18.6 22 20 22H22V20H20C18.6 20 17.2 19.5 16 18.7Z";
var mdiSharkFinOutline = "M22 16V18H20C18.6 18 17.2 17.6 16 17C13.5 18.3 10.5 18.3 8 17C6.8 17.6 5.4 18 4 18H2V16H4C5.4 16 6.8 15.5 8 14.7C10.4 16.4 13.6 16.4 16 14.7C17.2 15.5 18.6 16 20 16H22M5.28 13.79C5.82 13.63 6.37 13.38 6.89 13.04L8 12.28C8.69 10 8.78 7.27 7.59 4.14C11.95 4.89 15.89 8.65 17.37 13.19C18.12 13.64 18.91 13.91 19.66 13.97C18.24 7.4 12.37 2 6 2C5.65 2 5.33 2.18 5.15 2.47C4.97 2.77 4.95 3.14 5.11 3.45C7.28 7.79 6.61 11.29 5.28 13.79M16 18.7C13.6 20.4 10.4 20.4 8 18.7C6.8 19.5 5.4 20 4 20H2V22H4C5.4 22 6.8 21.6 8 21C10.5 22.3 13.5 22.3 16 21C17.2 21.6 18.6 22 20 22H22V20H20C18.6 20 17.2 19.5 16 18.7Z";
var mdiSheep = "M20,8.5A2.5,2.5 0 0,1 17.5,11C16.42,11 15.5,10.31 15.16,9.36C14.72,9.75 14.14,10 13.5,10C12.94,10 12.42,9.81 12,9.5C11.58,9.81 11.07,10 10.5,10C9.86,10 9.28,9.75 8.84,9.36C8.5,10.31 7.58,11 6.5,11A2.5,2.5 0 0,1 4,8.5C4,7.26 4.91,6.23 6.1,6.04C6.04,5.87 6,5.69 6,5.5A1.5,1.5 0 0,1 7.5,4C7.7,4 7.89,4.04 8.06,4.11C8.23,3.47 8.81,3 9.5,3C9.75,3 10,3.07 10.18,3.17C10.5,2.5 11.19,2 12,2C12.81,2 13.5,2.5 13.82,3.17C14,3.07 14.25,3 14.5,3C15.19,3 15.77,3.47 15.94,4.11C16.11,4.04 16.3,4 16.5,4A1.5,1.5 0 0,1 18,5.5C18,5.69 17.96,5.87 17.9,6.04C19.09,6.23 20,7.26 20,8.5M10,12A1,1 0 0,0 9,13A1,1 0 0,0 10,14A1,1 0 0,0 11,13A1,1 0 0,0 10,12M14,12A1,1 0 0,0 13,13A1,1 0 0,0 14,14A1,1 0 0,0 15,13A1,1 0 0,0 14,12M20.23,10.66C19.59,11.47 18.61,12 17.5,12C17.05,12 16.62,11.9 16.21,11.73C16.2,14.28 15.83,17.36 14.45,18.95C13.93,19.54 13.3,19.86 12.5,19.96V18H11.5V19.96C10.7,19.86 10.07,19.55 9.55,18.95C8.16,17.35 7.79,14.29 7.78,11.74C7.38,11.9 6.95,12 6.5,12C5.39,12 4.41,11.47 3.77,10.66C2.88,11.55 2,12 2,12C2,12 3,14 5,14C5.36,14 5.64,13.96 5.88,13.91C6.22,17.73 7.58,22 12,22C16.42,22 17.78,17.73 18.12,13.91C18.36,13.96 18.64,14 19,14C21,14 22,12 22,12C22,12 21.12,11.55 20.23,10.66Z";
var mdiShield = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z";
var mdiShieldAccount = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M17.13,17C15.92,18.85 14.11,20.24 12,20.92C9.89,20.24 8.08,18.85 6.87,17C6.53,16.5 6.24,16 6,15.47C6,13.82 8.71,12.47 12,12.47C15.29,12.47 18,13.79 18,15.47C17.76,16 17.47,16.5 17.13,17Z";
var mdiShieldAccountOutline = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,3.18L19,6.3V11.22C19,12.92 18.5,14.65 17.65,16.17C16,14.94 13.26,14.5 12,14.5C10.74,14.5 8,14.94 6.35,16.17C5.5,14.65 5,12.92 5,11.22V6.3L12,3.18M12,6A3.5,3.5 0 0,0 8.5,9.5A3.5,3.5 0 0,0 12,13A3.5,3.5 0 0,0 15.5,9.5A3.5,3.5 0 0,0 12,6M12,8A1.5,1.5 0 0,1 13.5,9.5A1.5,1.5 0 0,1 12,11A1.5,1.5 0 0,1 10.5,9.5A1.5,1.5 0 0,1 12,8M12,16.5C13.57,16.5 15.64,17.11 16.53,17.84C15.29,19.38 13.7,20.55 12,21C10.3,20.55 8.71,19.38 7.47,17.84C8.37,17.11 10.43,16.5 12,16.5Z";
var mdiShieldAccountVariant = "M17 11C17.3 11 17.7 11 18 11.1V6.3L10.5 3L3 6.3V11.2C3 15.7 6.2 20 10.5 21C11.1 20.9 11.6 20.7 12.1 20.5C11.4 19.5 11 18.3 11 17C11 13.7 13.7 11 17 11M17 13C14.8 13 13 14.8 13 17S14.8 21 17 21 21 19.2 21 17 19.2 13 17 13M17 14.4C17.6 14.4 18.1 14.9 18.1 15.5C18.1 16.1 17.6 16.6 17 16.6S15.9 16.1 15.9 15.5 16.4 14.4 17 14.4M17 19.8C16.1 19.8 15.3 19.3 14.8 18.6C14.9 17.9 16.3 17.5 17 17.5S19.2 17.9 19.2 18.6C18.7 19.3 17.9 19.8 17 19.8Z";
var mdiShieldAccountVariantOutline = "M17 14.4C17.6 14.4 18.1 14.9 18.1 15.5S17.6 16.6 17 16.6 15.9 16.1 15.9 15.5 16.4 14.4 17 14.4M17 17.5C16.3 17.5 14.8 17.9 14.8 18.6C15.3 19.3 16.1 19.8 17 19.8S18.7 19.3 19.2 18.6C19.2 17.9 17.7 17.5 17 17.5M18 11.1V6.3L10.5 3L3 6.3V11.2C3 15.7 6.2 20 10.5 21C11.1 20.9 11.6 20.7 12.1 20.5C13.2 22 15 23 17 23C20.3 23 23 20.3 23 17C23 14 20.8 11.6 18 11.1M11 17C11 17.6 11.1 18.1 11.2 18.6C11 18.7 10.7 18.8 10.5 18.9C7.3 17.9 5 14.7 5 11.2V7.6L10.5 5.2L16 7.6V11.1C13.2 11.6 11 14 11 17M17 21C14.8 21 13 19.2 13 17S14.8 13 17 13 21 14.8 21 17 19.2 21 17 21Z";
var mdiShieldAirplane = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5.68C12.5,5.68 12.95,6.11 12.95,6.63V10.11L18,13.26V14.53L12.95,12.95V16.42L14.21,17.37V18.32L12,17.68L9.79,18.32V17.37L11.05,16.42V12.95L6,14.53V13.26L11.05,10.11V6.63C11.05,6.11 11.5,5.68 12,5.68Z";
var mdiShieldAirplaneOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M12,5.68C12.5,5.68 12.95,6.11 12.95,6.63V10.11L18,13.26V14.53L12.95,12.95V16.42L14.21,17.37V18.32L12,17.68L9.79,18.32V17.37L11.05,16.42V12.95L6,14.53V13.26L11.05,10.11V6.63C11.05,6.11 11.5,5.68 12,5.68Z";
var mdiShieldAlert = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5M11,7H13V13H11M11,15H13V17H11";
var mdiShieldAlertOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M11,7H13V13H11V7M11,15H13V17H11V15Z";
var mdiShieldBug = "M11 13H13V14H11V13M21 5V11C21 16.5 17.2 21.7 12 23C6.8 21.7 3 16.5 3 11V5L12 1L21 5M17 10H14.8C14.6 9.4 14.2 8.9 13.7 8.5L14.9 7.3L14.2 6.6L12.8 8H12C11.8 8 11.5 8 11.3 8.1L9.9 6.6L9.1 7.4L10.3 8.6C9.8 8.9 9.4 9.4 9.2 10H7V11H9V12H7V13H9V14H7V15H9.2C9.6 16.2 10.7 17 12 17S14.4 16.2 14.8 15H17V14H15V13H17V12H15V11H17V10M11 12H13V11H11V12Z";
var mdiShieldBugOutline = "M9.9 6.6L9.1 7.4L10.3 8.6C9.8 8.9 9.4 9.4 9.2 10H7V11H9V12H7V13H9V14H7V15H9.2C9.6 16.2 10.7 17 12 17S14.4 16.2 14.8 15H17V14H15V13H17V12H15V11H17V10H14.8C14.6 9.4 14.2 8.9 13.7 8.5L14.9 7.3L14.2 6.6L12.8 8H12C11.8 8 11.5 8 11.3 8.1L9.9 6.6M11 11H13V12H11V11M11 13H13V14H11V13M21 11C21 16.5 17.2 21.7 12 23C6.8 21.7 3 16.5 3 11V5L12 1L21 5V11M12 21C15.8 20 19 15.5 19 11.2V6.3L12 3.2L5 6.3V11.2C5 15.5 8.2 20 12 21Z";
var mdiShieldCar = "M14.42 7.5L16 11H8L9.42 7.5H14.42M9 12C8.45 12 8 12.45 8 13S8.45 14 9 14 10 13.55 10 13 9.55 12 9 12M15 12C14.45 12 14 12.45 14 13S14.45 14 15 14 16 13.55 16 13 15.55 12 15 12M21 5V11C21 16.55 17.16 21.74 12 23C6.84 21.74 3 16.55 3 11V5L12 1L21 5M18 12L15.84 7C15.64 6.42 15.08 6 14.42 6H9.42C8.76 6 8.2 6.42 8 7L6 12V16C6 16.55 6.45 17 7 17H8C8.55 17 9 16.55 9 16V15H15V16C15 16.55 15.45 17 16 17H17C17.55 17 18 16.55 18 16V12Z";
var mdiShieldCheck = "M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z";
var mdiShieldCheckOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9";
var mdiShieldCross = "M12,1L3,5V11C3,16.5 6.8,21.7 12,23C17.2,21.7 21,16.5 21,11V5L12,1M16,10H13V18H11V10H8V8H11V5H13V8H16V10Z";
var mdiShieldCrossOutline = "M21,11C21,16.5 17.2,21.7 12,23C6.8,21.7 3,16.5 3,11V5L12,1L21,5V11M12,21C15.8,20 19,15.5 19,11.2V6.3L12,3.2L5,6.3V11.2C5,15.5 8.3,20 12,21M16,9H13V6H11V9H8V11H11V19H13V11H16V9Z";
var mdiShieldEdit = "M21.7 14.4L20.7 15.4L18.6 13.3L19.6 12.3C19.8 12.1 20.2 12.1 20.4 12.3L21.7 13.6C21.9 13.8 21.9 14.1 21.7 14.4M12 19.9L18.1 13.8L20.2 15.9L14.1 22H12V19.9M10 19.1L21 8.1V5L12 1L3 5V11C3 15.8 5.9 20.3 10 22.3V19.1Z";
var mdiShieldEditOutline = "M21.7 13.6L20.4 12.3C20.3 12.2 20.2 12.1 20 12.1C19.9 12.1 19.7 12.2 19.6 12.3L18.6 13.3L20.6 15.3L21.6 14.3C21.9 14.1 21.9 13.8 21.7 13.6M12 19.9V22H14.1L20.2 15.9L18.2 13.8L12 19.9M10 22.3C5.9 20.3 3 15.8 3 11V5L12 1L21 5V8.1L19 10.1V6.3L12 3.2L5 6.3V11.2C5 14.7 7.2 18.3 10 20.1V22.3Z";
var mdiShieldHalf = "M12 1L3 5V11C3 16.5 6.8 21.7 12 23V1Z";
var mdiShieldHalfFull = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18V21Z";
var mdiShieldHome = "M11,13H13V16H16V11H18L12,6L6,11H8V16H11V13M12,1L21,5V11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1Z";
var mdiShieldHomeOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M11,14H13V17H16V12H18L12,7L6,12H8V17H11V14";
var mdiShieldKey = "M12,8A1,1 0 0,1 13,9A1,1 0 0,1 12,10A1,1 0 0,1 11,9A1,1 0 0,1 12,8M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,6A3,3 0 0,0 9,9C9,10.31 9.83,11.42 11,11.83V18H13V16H15V14H13V11.83C14.17,11.42 15,10.31 15,9A3,3 0 0,0 12,6Z";
var mdiShieldKeyOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M12,6A3,3 0 0,1 15,9C15,10.31 14.17,11.42 13,11.83V14H15V16H13V18H11V11.83C9.83,11.42 9,10.31 9,9A3,3 0 0,1 12,6M12,8A1,1 0 0,0 11,9A1,1 0 0,0 12,10A1,1 0 0,0 13,9A1,1 0 0,0 12,8Z";
var mdiShieldLinkVariant = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M14.28,14.08L12.26,16.1C11.66,16.7 10.87,17 10.08,17C9.29,17 8.5,16.7 7.9,16.1C6.7,14.9 6.7,12.95 7.9,11.74L9.15,10.5L9.14,11.06C9.14,11.5 9.21,11.95 9.36,12.37L9.41,12.5L9.04,12.87C8.76,13.15 8.6,13.53 8.6,13.92C8.6,14.32 8.76,14.69 9.04,14.97C9.6,15.53 10.57,15.53 11.13,14.97L13.14,12.96C13.43,12.67 13.58,12.3 13.58,11.91C13.58,11.5 13.43,11.14 13.15,10.86C13,10.71 12.9,10.5 12.9,10.29C12.9,10.08 13,9.88 13.15,9.73C13.45,9.42 14,9.43 14.28,9.73C14.86,10.31 15.18,11.08 15.18,11.9C15.18,12.73 14.86,13.5 14.28,14.08M17.1,11.26L15.85,12.5L15.86,11.94C15.86,11.5 15.79,11.06 15.64,10.64L15.6,10.5L15.96,10.13C16.25,9.85 16.4,9.5 16.4,9.08C16.4,8.69 16.25,8.32 15.97,8.04C15.4,7.47 14.43,7.47 13.87,8.04L11.86,10.05C11.58,10.33 11.42,10.7 11.42,11.1C11.42,11.5 11.57,11.86 11.86,12.14C12,12.29 12.1,12.5 12.1,12.71C12.1,12.93 12,13.13 11.85,13.28C11.7,13.44 11.5,13.5 11.29,13.5C11.09,13.5 10.88,13.43 10.72,13.28C9.5,12.08 9.5,10.12 10.72,8.92L12.74,6.9C13.95,5.7 15.9,5.7 17.1,6.9C17.68,7.5 18,8.26 18,9.08C18,9.9 17.68,10.68 17.1,11.26Z";
var mdiShieldLinkVariantOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M14.28,9.73C14.86,10.31 15.18,11.08 15.18,11.9C15.18,12.73 14.86,13.5 14.28,14.08L12.26,16.1C11.66,16.7 10.87,17 10.08,17C9.29,17 8.5,16.7 7.9,16.1C6.7,14.9 6.7,12.95 7.9,11.74L9.15,10.5L9.14,11.06C9.14,11.5 9.21,11.95 9.36,12.36L9.4,12.5L9.04,12.87C8.75,13.15 8.6,13.5 8.6,13.92C8.6,14.31 8.75,14.68 9.03,14.96C9.6,15.53 10.57,15.53 11.13,14.97L13.14,12.95C13.43,12.67 13.58,12.3 13.58,11.91C13.58,11.5 13.43,11.14 13.14,10.86C13,10.71 12.9,10.5 12.9,10.29C12.9,10.08 13,9.87 13.14,9.72C13.45,9.42 14,9.42 14.28,9.73M18,9.08C18,9.9 17.68,10.68 17.1,11.26L15.85,12.5L15.86,11.94C15.86,11.5 15.79,11.06 15.64,10.64L15.59,10.5L15.96,10.13C16.25,9.85 16.4,9.5 16.4,9.08C16.4,8.69 16.25,8.32 15.96,8.04C15.4,7.47 14.43,7.47 13.87,8.03L11.86,10.05C11.57,10.33 11.42,10.7 11.42,11.1C11.42,11.5 11.57,11.86 11.85,12.14C12,12.29 12.1,12.5 12.1,12.71C12.1,12.93 12,13.13 11.85,13.28C11.7,13.43 11.5,13.5 11.29,13.5C11.09,13.5 10.88,13.43 10.72,13.28C9.5,12.07 9.5,10.12 10.72,8.92L12.74,6.9C13.95,5.7 15.9,5.7 17.1,6.9C17.68,7.5 18,8.26 18,9.08Z";
var mdiShieldLock = "M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,7C13.4,7 14.8,8.1 14.8,9.5V11C15.4,11 16,11.6 16,12.3V15.8C16,16.4 15.4,17 14.7,17H9.2C8.6,17 8,16.4 8,15.7V12.2C8,11.6 8.6,11 9.2,11V9.5C9.2,8.1 10.6,7 12,7M12,8.2C11.2,8.2 10.5,8.7 10.5,9.5V11H13.5V9.5C13.5,8.7 12.8,8.2 12,8.2Z";
var mdiShieldLockOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21M14.8,11V9.5C14.8,8.1 13.4,7 12,7C10.6,7 9.2,8.1 9.2,9.5V11C8.6,11 8,11.6 8,12.2V15.7C8,16.4 8.6,17 9.2,17H14.7C15.4,17 16,16.4 16,15.8V12.3C16,11.6 15.4,11 14.8,11M13.5,11H10.5V9.5C10.5,8.7 11.2,8.2 12,8.2C12.8,8.2 13.5,8.7 13.5,9.5V11Z";
var mdiShieldOff = "M1,4.27L2.28,3L20.5,21.22L19.23,22.5L17,20.25C15.57,21.57 13.87,22.54 12,23C6.84,21.74 3,16.55 3,11V6.27L1,4.27M12,1L21,5V11C21,13.28 20.35,15.5 19.23,17.41L5.65,3.82L12,1Z";
var mdiShieldOffOutline = "M1,4.27L3,6.27V11C3,16.55 6.84,21.74 12,23C13.87,22.54 15.57,21.56 16.97,20.24L19.23,22.5L20.5,21.22L2.28,3L1,4.27M12,21C8.25,20 5,15.54 5,11.22V8.27L15.59,18.86C14.53,19.89 13.3,20.65 12,21M21,5V11C21,13.28 20.35,15.5 19.23,17.4L17.77,15.95C18.54,14.5 19,12.84 19,11.22V6.3L12,3.18L7.16,5.34L5.65,3.82L12,1L21,5Z";
var mdiShieldOutline = "M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21Z";
var mdiShieldPlus = "M19,20V22.97H17V20H14V18H17V15H19V18H22V20H19M12,1L21,5V11C21,11.9 20.9,12.78 20.71,13.65C19.9,13.23 19,13 18,13A6,6 0 0,0 12,19C12,20.36 12.45,21.62 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1Z";
var mdiShieldPlusOutline = "M19,20V22.97H17V20H14V18H17V15H19V18H22V20H19M21,11C21,11.9 20.9,12.78 20.71,13.65C20.13,13.35 19.5,13.15 18.81,13.05C18.93,12.45 19,11.83 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21L12.31,20.91C12.5,21.53 12.83,22.11 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11Z";
var mdiShieldRefresh = "M18 12C19 12 20 12.2 20.9 12.7C21 12.1 21 11.6 21 11V5L12 1L3 5V11C3 16.5 6.8 21.7 12 23C12.4 22.9 12.7 22.8 13 22.7C12 21.5 11.5 20 11.5 18.5C11.5 14.9 14.4 12 18 12M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5Z";
var mdiShieldRefreshOutline = "M12 21C8.2 20 5 15.5 5 11.2V6.3L12 3.2L19 6.3V12.1C19.7 12.2 20.3 12.4 20.9 12.7C21 12.1 21 11.6 21 11V5L12 1L3 5V11C3 16.5 6.8 21.7 12 23C12.4 22.9 12.7 22.8 13 22.7C12.6 22.2 12.2 21.6 12 21M18 14.5C19.1 14.5 20.1 14.9 20.8 15.7L22 14.5V18.5H18L19.8 16.7C19.3 16.3 18.7 16 18 16C16.6 16 15.5 17.1 15.5 18.5S16.6 21 18 21C18.8 21 19.5 20.6 20 20H21.7C21.1 21.5 19.7 22.5 18 22.5C15.8 22.5 14 20.7 14 18.5S15.8 14.5 18 14.5Z";
var mdiShieldRemove = "M19.43,19L21.5,21.11L20.12,22.5L18.03,20.41L15.91,22.53L14.5,21.11L16.61,19L14.5,16.86L15.88,15.47L18,17.59L20.12,15.47L21.55,16.9L19.43,19M12,1L21,5V11C21,11.9 20.9,12.78 20.71,13.65C19.9,13.23 19,13 18,13A6,6 0 0,0 12,19C12,20.36 12.45,21.62 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1Z";
var mdiShieldRemoveOutline = "M19.43,19L21.5,21.11L20.12,22.5L18.03,20.41L15.91,22.53L14.5,21.11L16.61,19L14.5,16.86L15.88,15.47L18,17.59L20.12,15.47L21.55,16.9L19.43,19M21,11C21,11.9 20.9,12.78 20.71,13.65C20.13,13.35 19.5,13.15 18.81,13.05C18.93,12.45 19,11.83 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21L12.31,20.91C12.5,21.53 12.83,22.11 13.22,22.62L12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11Z";
var mdiShieldSearch = "M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M17.86,19.31C16.23,21.22 14.28,22.45 12,23C9.44,22.39 7.3,20.93 5.58,18.63C3.86,16.34 3,13.8 3,11V5L12,1L21,5V11C21,13.39 20.36,15.61 19.08,17.67L16.17,14.76C16.69,13.97 17,13 17,12A5,5 0 0,0 12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17C13,17 13.97,16.69 14.76,16.17L17.86,19.31Z";
var mdiShieldStar = "M12 1L3 5V11C3 16.55 6.84 21.74 12 23C17.16 21.74 21 16.55 21 11V5L12 1M15.08 16L12 14.15L8.93 16L9.74 12.5L7.03 10.16L10.61 9.85L12 6.55L13.39 9.84L16.97 10.15L14.26 12.5L15.08 16Z";
var mdiShieldStarOutline = "M21 11C21 16.55 17.16 21.74 12 23C6.84 21.74 3 16.55 3 11V5L12 1L21 5V11M12 21C15.75 20 19 15.54 19 11.22V6.3L12 3.18L5 6.3V11.22C5 15.54 8.25 20 12 21M15.05 16L11.97 14.15L8.9 16L9.71 12.5L7 10.16L10.58 9.85L11.97 6.55L13.37 9.84L16.95 10.15L14.23 12.5L15.05 16";
var mdiShieldSun = "M12 1L3 5V11C3 16.55 6.84 21.74 12 23C17.16 21.74 21 16.55 21 11V5L12 1M12 8.89C13.6 8.89 14.89 10.18 14.89 11.78S13.6 14.67 12 14.67 9.11 13.37 9.11 11.78 10.41 8.89 12 8.89M12 6L13.38 8C12.96 7.82 12.5 7.73 12 7.73S11.05 7.82 10.62 8L12 6M7 8.89L9.4 8.69C9.06 9 8.74 9.34 8.5 9.76C8.25 10.18 8.1 10.62 8 11.08L7 8.89M7 14.67L8.03 12.5C8.11 12.93 8.27 13.38 8.5 13.8C8.75 14.23 9.06 14.59 9.4 14.88L7 14.67M17 8.89L16 11.08C15.9 10.62 15.74 10.18 15.5 9.76C15.26 9.34 14.95 9 14.6 8.68L17 8.89M17 14.67L14.6 14.87C14.94 14.58 15.25 14.22 15.5 13.8C15.74 13.38 15.89 12.93 15.97 12.5L17 14.67M12 17.55L10.61 15.57C11.04 15.72 11.5 15.82 12 15.82C12.5 15.82 12.95 15.72 13.37 15.57L12 17.55Z";
var mdiShieldSunOutline = "M21 11C21 16.55 17.16 21.74 12 23C6.84 21.74 3 16.55 3 11V5L12 1L21 5V11M12 21C15.75 20 19 15.54 19 11.22V6.3L12 3.18L5 6.3V11.22C5 15.54 8.25 20 12 21M12 8.89C13.6 8.89 14.89 10.18 14.89 11.78S13.6 14.67 12 14.67 9.11 13.37 9.11 11.78 10.41 8.89 12 8.89M12 6L13.38 8C12.96 7.82 12.5 7.73 12 7.73S11.05 7.82 10.62 8L12 6M7 8.89L9.4 8.69C9.06 9 8.74 9.34 8.5 9.76C8.25 10.18 8.1 10.62 8 11.08L7 8.89M7 14.67L8.03 12.5C8.11 12.93 8.27 13.38 8.5 13.8C8.75 14.23 9.06 14.59 9.4 14.88L7 14.67M17 8.89L16 11.08C15.9 10.62 15.74 10.18 15.5 9.76C15.26 9.34 14.95 9 14.6 8.68L17 8.89M17 14.67L14.6 14.87C14.94 14.58 15.25 14.22 15.5 13.8C15.74 13.38 15.89 12.93 15.97 12.5L17 14.67M12 17.55L10.61 15.57C11.04 15.72 11.5 15.82 12 15.82C12.5 15.82 12.95 15.72 13.37 15.57L12 17.55Z";
var mdiShieldSync = "M18 12A6.41 6.41 0 0 1 20.87 12.67A11.63 11.63 0 0 0 21 11V5L12 1L3 5V11C3 16.55 6.84 21.74 12 23C12.35 22.91 12.7 22.8 13 22.68A6.42 6.42 0 0 1 11.5 18.5A6.5 6.5 0 0 1 18 12M18 14.5V13L15.75 15.25L18 17.5V16A2.5 2.5 0 0 1 20.24 19.62L21.33 20.71A4 4 0 0 0 18 14.5M18 21A2.5 2.5 0 0 1 15.76 17.38L14.67 16.29A4 4 0 0 0 18 22.5V24L20.25 21.75L18 19.5Z";
var mdiShieldSyncOutline = "M12 21C8.25 20 5 15.54 5 11.22V6.3L12 3.18L19 6.3V12.07A6.45 6.45 0 0 1 20.91 12.67A11.63 11.63 0 0 0 21 11V5L12 1L3 5V11C3 16.55 6.84 21.74 12 23C12.35 22.91 12.7 22.8 13 22.68A6.3 6.3 0 0 1 12 21M18 14.5V13L15.75 15.25L18 17.5V16A2.5 2.5 0 0 1 20.24 19.62L21.33 20.71A4 4 0 0 0 18 14.5M18 21A2.5 2.5 0 0 1 15.76 17.38L14.67 16.29A4 4 0 0 0 18 22.5V24L20.25 21.75L18 19.5Z";
var mdiShipWheel = "M2,11L4.05,11.1C4.3,8.83 5.5,6.85 7.25,5.56L6.13,3.84C5.86,3.36 6,2.75 6.5,2.47C7,2.2 7.59,2.36 7.87,2.84L8.8,4.66C9.78,4.24 10.86,4 12,4C13.14,4 14.22,4.24 15.2,4.66L16.13,2.84C16.41,2.36 17,2.2 17.5,2.47C18,2.75 18.14,3.36 17.87,3.84L16.75,5.56C18.5,6.85 19.7,8.83 19.95,11.1L22,11A1,1 0 0,1 23,12A1,1 0 0,1 22,13L19.95,12.9C19.7,15.17 18.5,17.15 16.75,18.44L17.87,20.16C18.14,20.64 18,21.25 17.5,21.53C17,21.8 16.41,21.64 16.13,21.16L15.2,19.34C14.22,19.76 13.14,20 12,20C10.86,20 9.78,19.76 8.8,19.34L7.87,21.16C7.59,21.64 7,21.8 6.5,21.53C6,21.25 5.86,20.64 6.13,20.16L7.25,18.44C5.5,17.15 4.3,15.17 4.05,12.9L2,13A1,1 0 0,1 1,12A1,1 0 0,1 2,11M9.07,11.35C9.2,10.74 9.53,10.2 10,9.79L8.34,7.25C7.11,8.19 6.27,9.6 6.05,11.2L9.07,11.35M12,9C12.32,9 12.62,9.05 12.9,9.14L14.28,6.45C13.58,6.16 12.81,6 12,6C11.19,6 10.42,6.16 9.72,6.45L11.1,9.14C11.38,9.05 11.68,9 12,9M14.93,11.35L17.95,11.2C17.73,9.6 16.89,8.19 15.66,7.25L14,9.79C14.47,10.2 14.8,10.74 14.93,11.35M14.93,12.65C14.8,13.26 14.47,13.8 14,14.21L15.66,16.75C16.89,15.81 17.73,14.4 17.95,12.8L14.93,12.65M12,15C11.68,15 11.38,14.95 11.09,14.86L9.72,17.55C10.42,17.84 11.19,18 12,18C12.81,18 13.58,17.84 14.28,17.55L12.91,14.86C12.62,14.95 12.32,15 12,15M9.07,12.65L6.05,12.8C6.27,14.4 7.11,15.81 8.34,16.75L10,14.21C9.53,13.8 9.2,13.26 9.07,12.65Z";
var mdiShoeBallet = "M12.78 11.97C12.27 8.54 10.86 2 7.53 2S2.8 8.54 2.28 11.97C2.07 13.42 2 14.89 2.16 16.35C2.5 19.39 3.55 20.84 4.27 21.5C4.64 21.83 5.11 22 5.6 22H9.47C9.96 22 10.43 21.83 10.8 21.5C11.5 20.84 12.55 19.39 12.91 16.35C13.08 14.89 13 13.42 12.78 11.97M7.53 4C7.89 3.87 8.59 4.73 9.27 6.31L4.58 10.33C5.41 6.26 6.94 3.79 7.53 4M9.75 13H5.31C5.1 13 4.92 12.92 4.76 12.81L10 8.33C10.29 9.35 10.56 10.5 10.75 11.83C10.84 12.44 10.37 13 9.75 13M21.78 11.97C21.27 8.54 19.86 2 16.53 2C15.04 2 13.94 3.32 13.13 5.08C13.5 6.04 13.84 7.14 14.13 8.37L19.31 12.81C19.15 12.92 18.97 13 18.75 13H14.92C15.04 14.27 15.03 15.45 14.89 16.59C14.62 18.87 14 20.45 13.32 21.53C13.68 21.84 14.13 22 14.6 22H18.47C18.96 22 19.43 21.83 19.8 21.5C20.5 20.84 21.55 19.39 21.91 16.35C22.08 14.89 22 13.42 21.78 11.97M14.8 6.31C15.5 4.73 16.18 3.87 16.53 4C17.13 3.79 18.65 6.26 19.5 10.33L14.8 6.31Z";
var mdiShoeCleat = "M21 8C20.76 8 20.53 8 20.3 8L20.25 7.97C18.14 7.84 16.38 7.17 15.53 6.23L14 7C13.95 7.1 13.89 7.19 13.84 7.28C14.55 7.89 15 8.65 15 9.5C15 9.83 14.91 10.14 14.79 10.45L12.92 8.58C12.7 8.83 12.47 9.07 12.22 9.29L14.25 11.32C14.04 11.57 13.8 11.79 13.5 12L11.43 9.91C11.14 10.11 10.85 10.28 10.55 10.45L12.58 12.5C12.25 12.63 11.89 12.74 11.5 12.82L9.59 10.91C9.25 11.05 8.91 11.18 8.56 11.29L10.26 13C10.17 13 10.09 13 10 13C8.5 13 7.2 12.54 6.28 11.82C5.46 11.95 4.68 12 4 12C2 12 2 15 2 15V15C2 16.11 2.89 17 4 17H4V18C4 18.55 4.45 19 5 19S6 18.55 6 18V17H7V18C7 18.55 7.45 19 8 19S9 18.55 9 18V17H10V18C10 18.55 10.45 19 11 19S12 18.55 12 18V17H15V18C15 18.55 15.45 19 16 19S17 18.55 17 18V17H18V18C18 18.55 18.45 19 19 19S20 18.55 20 18V17H21C21 17 22 17 22 12.5C22 9 21 8 21 8Z";
var mdiShoeFormal = "M21.5,9V8H20.5L19.5,9H15L14,8H13L7,12H4A2,2 0 0,0 2,14V16H10L13,15H15V16H21.5V14C21.5,14 22,13 22,11.5C22,10 21.5,9 21.5,9Z";
var mdiShoeHeel = "M3,18H11.7L17,14H18V18H20V14C20,14 21,12 21,10C21,8 20.5,6 20.5,6H18.5L18,7L10,14H8L3,16V18Z";
var mdiShoePrint = "M10.74,11.72C11.21,12.95 11.16,14.23 9.75,14.74C6.85,15.81 6.2,13 6.16,12.86L10.74,11.72M5.71,10.91L10.03,9.84C9.84,8.79 10.13,7.74 10.13,6.5C10.13,4.82 8.8,1.53 6.68,2.06C4.26,2.66 3.91,5.35 4,6.65C4.12,7.95 5.64,10.73 5.71,10.91M17.85,19.85C17.82,20 17.16,22.8 14.26,21.74C12.86,21.22 12.8,19.94 13.27,18.71L17.85,19.85M20,13.65C20.1,12.35 19.76,9.65 17.33,9.05C15.22,8.5 13.89,11.81 13.89,13.5C13.89,14.73 14.17,15.78 14,16.83L18.3,17.9C18.38,17.72 19.89,14.94 20,13.65Z";
var mdiShoeSneaker = "M2 15C2 15 2 12 4 12C4.68 12 5.46 11.95 6.28 11.82C7.2 12.54 8.5 13 10 13H10.25L8.56 11.29C8.91 11.18 9.25 11.05 9.59 10.91L11.5 12.82C11.89 12.74 12.25 12.63 12.58 12.5L10.55 10.45C10.85 10.28 11.14 10.11 11.43 9.91L13.5 12C13.8 11.79 14.04 11.56 14.25 11.32L12.22 9.29C12.46 9.07 12.7 8.83 12.92 8.58L14.79 10.45C14.91 10.14 15 9.83 15 9.5C15 8.65 14.55 7.89 13.84 7.28C13.89 7.19 13.95 7.1 14 7L15.53 6.23C16.38 7.17 18.14 7.84 20.25 7.97L20.3 8H21C21 8 22 9 22 12.5C22 13.07 22 13.57 21.96 14H19C17.9 14 16.58 14.26 15.3 14.5C14.12 14.76 12.9 15 12 15H2M21 17C21 17 21.58 17 21.86 15H19C17 15 14 16 12 16H2.28C2.62 16.6 3.26 17 4 17H21Z";
var mdiShopping = "M12,13A5,5 0 0,1 7,8H9A3,3 0 0,0 12,11A3,3 0 0,0 15,8H17A5,5 0 0,1 12,13M12,3A3,3 0 0,1 15,6H9A3,3 0 0,1 12,3M19,6H17A5,5 0 0,0 12,1A5,5 0 0,0 7,6H5C3.89,6 3,6.89 3,8V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V8C21,6.89 20.1,6 19,6Z";
var mdiShoppingMusic = "M12,3A3,3 0 0,0 9,6H15A3,3 0 0,0 12,3M19,6A2,2 0 0,1 21,8V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V8C3,6.89 3.89,6 5,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6H19M9,19L16.5,14L9,10V19Z";
var mdiShoppingOutline = "M19 6H17C17 3.2 14.8 1 12 1S7 3.2 7 6H5C3.9 6 3 6.9 3 8V20C3 21.1 3.9 22 5 22H19C20.1 22 21 21.1 21 20V8C21 6.9 20.1 6 19 6M12 3C13.7 3 15 4.3 15 6H9C9 4.3 10.3 3 12 3M19 20H5V8H19V20M12 12C10.3 12 9 10.7 9 9H7C7 11.8 9.2 14 12 14S17 11.8 17 9H15C15 10.7 13.7 12 12 12Z";
var mdiShoppingSearch = "M19 6H17A5 5 0 0 0 7 6H5A2 2 0 0 0 3 8V20A2 2 0 0 0 5 22H12.05A6.5 6.5 0 0 1 9 16.5A6.4 6.4 0 0 1 10.25 12.68A5 5 0 0 1 7 8H9A3 3 0 0 0 12 11H12.06A6.22 6.22 0 0 1 14.06 10.16A3 3 0 0 0 15 8H17A4.88 4.88 0 0 1 16.54 10.09A6.5 6.5 0 0 1 21 13.09V8A2 2 0 0 0 19 6M9 6A3 3 0 0 1 15 6M19.31 18.9A4.5 4.5 0 1 0 17.88 20.32L21 23.39L22.39 22M15.5 19A2.5 2.5 0 1 1 18 16.5A2.5 2.5 0 0 1 15.5 19Z";
var mdiShore = "M20 12H22V14H20C18.6 14 17.3 13.6 16 13C13.5 14.3 10.5 14.3 8 13C6.7 13.6 5.4 14 4 14H2V12H4C5.4 12 6.8 11.5 8 10.7C10.4 12.4 13.6 12.4 16 10.7C17.2 11.5 18.6 12 20 12M20 6H22V8H20C18.6 8 17.3 7.7 16 7C13.5 8.3 10.5 8.3 8 7C6.7 7.7 5.4 8 4 8H2V6H4C5.4 6 6.8 5.5 8 4.7C10.4 6.4 13.6 6.4 16 4.7C17.2 5.5 18.6 6 20 6M22 20H2V18H22";
var mdiShovel = "M15.1,1.81L12.27,4.64C11.5,5.42 11.5,6.69 12.27,7.47L13.68,8.88L9.13,13.43L6.31,10.6L4.89,12C-0.06,17 3.5,20.5 3.5,20.5C3.5,20.5 7,24 12,19.09L13.41,17.68L10.61,14.88L15.15,10.34L16.54,11.73C17.32,12.5 18.59,12.5 19.37,11.73L22.2,8.9L15.1,1.81M17.93,10.28L16.55,8.9L15.11,7.46L13.71,6.06L15.12,4.65L19.35,8.88L17.93,10.28Z";
var mdiShovelOff = "M15.1,1.81L12.27,4.65C11.5,5.43 11.5,6.69 12.27,7.47L13.68,8.89L13,9.62L14.44,11.06L15.17,10.33L16.56,11.72C17.34,12.5 18.61,12.5 19.39,11.72L22.22,8.88L15.1,1.81M17.93,10.28L13.7,6.06L15.11,4.65L19.34,8.88L17.93,10.28M20.7,20.24L19.29,21.65L11.5,13.88L10.5,14.88L13.33,17.69L12,19.09C7,24 3.5,20.5 3.5,20.5C3.5,20.5 -0.06,17 4.89,12L6.31,10.6L9.13,13.43L10.13,12.43L2.35,4.68L3.77,3.26L20.7,20.24Z";
var mdiShower = "M21,14V15C21,16.91 19.93,18.57 18.35,19.41L19,22H17L16.5,20C16.33,20 16.17,20 16,20H8C7.83,20 7.67,20 7.5,20L7,22H5L5.65,19.41C4.07,18.57 3,16.91 3,15V14H2V12H20V5A1,1 0 0,0 19,4C18.5,4 18.12,4.34 18,4.79C18.63,5.33 19,6.13 19,7H13A3,3 0 0,1 16,4C16.06,4 16.11,4 16.17,4C16.58,2.84 17.69,2 19,2A3,3 0 0,1 22,5V14H21V14M19,14H5V15A3,3 0 0,0 8,18H16A3,3 0 0,0 19,15V14Z";
var mdiShowerHead = "M20,20A1,1 0 0,1 21,21A1,1 0 0,1 20,22A1,1 0 0,1 19,21A1,1 0 0,1 20,20M16,20A1,1 0 0,1 17,21A1,1 0 0,1 16,22A1,1 0 0,1 15,21A1,1 0 0,1 16,20M12,20A1,1 0 0,1 13,21A1,1 0 0,1 12,22A1,1 0 0,1 11,21A1,1 0 0,1 12,20M8,20A1,1 0 0,1 9,21A1,1 0 0,1 8,22A1,1 0 0,1 7,21A1,1 0 0,1 8,20M4,20A1,1 0 0,1 5,21A1,1 0 0,1 4,22A1,1 0 0,1 3,21A1,1 0 0,1 4,20M6,17A1,1 0 0,1 7,18A1,1 0 0,1 6,19H6A1,1 0 0,1 5,18A1,1 0 0,1 6,17H6M10,17A1,1 0 0,1 11,18A1,1 0 0,1 10,19A1,1 0 0,1 9,18A1,1 0 0,1 10,17M14,17A1,1 0 0,1 15,18A1,1 0 0,1 14,19A1,1 0 0,1 13,18A1,1 0 0,1 14,17M18,17A1,1 0 0,1 19,18A1,1 0 0,1 18,19A1,1 0 0,1 17,18A1,1 0 0,1 18,17M8,14A1,1 0 0,1 9,15A1,1 0 0,1 8,16A1,1 0 0,1 7,15A1,1 0 0,1 8,14M12,14A1,1 0 0,1 13,15A1,1 0 0,1 12,16A1,1 0 0,1 11,15A1,1 0 0,1 12,14M16,14A1,1 0 0,1 17,15A1,1 0 0,1 16,16A1,1 0 0,1 15,15A1,1 0 0,1 16,14M19,12H5V10H19V12M17.92,9H6.08C6.5,6.5 8.5,4.5 11,4.08V2H13V4.08C15.5,4.5 17.5,6.5 17.92,9Z";
var mdiShredder = "M6,3V7H8V5H16V7H18V3H6M5,8A3,3 0 0,0 2,11V17H5V14H19V17H22V11A3,3 0 0,0 19,8H5M18,10A1,1 0 0,1 19,11A1,1 0 0,1 18,12A1,1 0 0,1 17,11A1,1 0 0,1 18,10M7,16V21H9V16H7M11,16V20H13V16H11M15,16V21H17V16H15Z";
var mdiShuffle = "M14.83,13.41L13.42,14.82L16.55,17.95L14.5,20H20V14.5L17.96,16.54L14.83,13.41M14.5,4L16.54,6.04L4,18.59L5.41,20L17.96,7.46L20,9.5V4M10.59,9.17L5.41,4L4,5.41L9.17,10.58L10.59,9.17Z";
var mdiShuffleDisabled = "M16,4.5V7H5V9H16V11.5L19.5,8M16,12.5V15H5V17H16V19.5L19.5,16";
var mdiShuffleVariant = "M17,3L22.25,7.5L17,12L22.25,16.5L17,21V18H14.26L11.44,15.18L13.56,13.06L15.5,15H17V12L17,9H15.5L6.5,18H2V15H5.26L14.26,6H17V3M2,6H6.5L9.32,8.82L7.2,10.94L5.26,9H2V6Z";
var mdiShuriken = "M14.5 9.5L12 2L9.5 9.5L2 12L9.5 14.5L12 22L14.5 14.5L22 12L14.5 9.5M12 13.7C11.1 13.7 10.3 13 10.3 12C10.3 11.1 11 10.3 12 10.3C12.9 10.3 13.7 11 13.7 12C13.7 12.9 12.9 13.7 12 13.7Z";
var mdiSigma = "M18,6H8.83L14.83,12L8.83,18H18V20H6V18L12,12L6,6V4H18V6Z";
var mdiSigmaLower = "M19,12C19,16.42 15.64,20 11.5,20C7.36,20 4,16.42 4,12C4,7.58 7.36,4 11.5,4H20V6H16.46C18,7.47 19,9.61 19,12M11.5,6C8.46,6 6,8.69 6,12C6,15.31 8.46,18 11.5,18C14.54,18 17,15.31 17,12C17,8.69 14.54,6 11.5,6Z";
var mdiSignCaution = "M2,3H22V13H18V21H16V13H8V21H6V13H2V3M18.97,11L20,9.97V7.15L16.15,11H18.97M13.32,11L19.32,5H16.5L10.5,11H13.32M7.66,11L13.66,5H10.83L4.83,11H7.66M5.18,5L4,6.18V9L8,5H5.18Z";
var mdiSignDirection = "M11,12H3.5L6,9.5L3.5,7H11V3L12,2L13,3V7H18L20.5,9.5L18,12H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V12Z";
var mdiSignDirectionMinus = "M20.5 9.5L18 12H13V22H9A2 2 0 0 1 11 20V12H3.5L6 9.5L3.5 7H11V3L12 2L13 3V7H18M23 18H15V20H23Z";
var mdiSignDirectionPlus = "M13 20H13.09A5.5 5.5 0 0 0 13.81 22H9A2 2 0 0 1 11 20V12H3.5L6 9.5L3.5 7H11V3L12 2L13 3V7H18L20.5 9.5L18 12H13M18 15V18H15V20H18V23H20V20H23V18H20V15Z";
var mdiSignDirectionRemove = "M13 20H13.09A5.5 5.5 0 0 0 13.81 22H9A2 2 0 0 1 11 20V12H3.5L6 9.5L3.5 7H11V3L12 2L13 3V7H18L20.5 9.5L18 12H13M21.12 15.46L19 17.59L16.88 15.46L15.46 16.88L17.59 19L15.46 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88Z";
var mdiSignPole = "M11 3L12 2L13 3V20C14.11 20 15 20.9 15 22H9C9 20.9 9.9 20 11 20V3Z";
var mdiSignRealEstate = "M18 8H8C6.9 8 6 8.9 6 10V16C6 17.11 6.9 18 8 18H18C19.11 18 20 17.11 20 16V10C20 8.9 19.11 8 18 8M14 16H8V14H14V16M18 12H8V10H18V12M22 6H4V22H2V2H4V4H22V6Z";
var mdiSignText = "M11,3L12,2L13,3V5H20A1,1 0 0,1 21,6V16A1,1 0 0,1 20,17H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V17H4A1,1 0 0,1 3,16V6A1,1 0 0,1 4,5H11V3M6,8V10H18V8H6M6,12V14H13V12H6Z";
var mdiSignal = "M3,21H6V18H3M8,21H11V14H8M13,21H16V9H13M18,21H21V3H18V21Z";
var mdiSignal2g = "M11,19.5H2V13.5A3,3 0 0,1 5,10.5H8V7.5H2V4.5H8A3,3 0 0,1 11,7.5V10.5A3,3 0 0,1 8,13.5H5V16.5H11M22,10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5";
var mdiSignal3g = "M11,16.5V14.25C11,13 10,12 8.75,12C10,12 11,11 11,9.75V7.5A3,3 0 0,0 8,4.5H2V7.5H8V10.5H5V13.5H8V16.5H2V19.5H8A3,3 0 0,0 11,16.5M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5Z";
var mdiSignal4g = "M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5M8,19.5H11V4.5H8V10.5H5V4.5H2V13.5H8V19.5Z";
var mdiSignal5g = "M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5M10,4.5H3V12L3,13.5H7V16.5H3V19.5H8.5A1.5,1.5 0 0,0 10,18V12A1.5,1.5 0 0,0 8.5,10.5H6V7.5H10V4.5Z";
var mdiSignalCellular1 = "M19.5,5.5V18.5H17.5V5.5H19.5M12.5,10.5V18.5H10.5V10.5H12.5M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z";
var mdiSignalCellular2 = "M19.5,5.5V18.5H17.5V5.5H19.5M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z";
var mdiSignalCellular3 = "M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z";
var mdiSignalCellularOutline = "M19.5,5.5V18.5H17.5V5.5H19.5M12.5,10.5V18.5H10.5V10.5H12.5M5.5,15.5V18.5H3.5V15.5H5.5M21,4H16V20H21V4M14,9H9V20H14V9M7,14H2V20H7V14Z";
var mdiSignalDistanceVariant = "M4,6V4A12,12 0 0,1 16,16H14A10,10 0 0,0 4,6M4,10V8A8,8 0 0,1 12,16H10A6,6 0 0,0 4,10M4,12A4,4 0 0,1 8,16H4V12M3,18H19V16L22,19L19,22V20H3V18Z";
var mdiSignalHspa = "M10.5,10.5H13.5V4.5H16.5V19.5H13.5V13.5H10.5V19.5H7.5V4.5H10.5V10.5Z";
var mdiSignalHspaPlus = "M19,8V11H22V14H19V17H16V14H13V11H16V8H19M5,10.5H8V4.5H11V19.5H8V13.5H5V19.5H2V4.5H5V10.5Z";
var mdiSignalOff = "M18,3V16.18L21,19.18V3H18M4.28,5L3,6.27L10.73,14H8V21H11V14.27L13,16.27V21H16V19.27L19.73,23L21,21.72L4.28,5M13,9V11.18L16,14.18V9H13M3,18V21H6V18H3Z";
var mdiSignalVariant = "M4,6V4H4.1C12.9,4 20,11.1 20,19.9V20H18V19.9C18,12.2 11.8,6 4,6M4,10V8A12,12 0 0,1 16,20H14A10,10 0 0,0 4,10M4,14V12A8,8 0 0,1 12,20H10A6,6 0 0,0 4,14M4,16A4,4 0 0,1 8,20H4V16Z";
var mdiSignature = "M22,22H2V20H22V22M2.26,16.83L5.09,14L2.26,11.17L3.67,9.76L6.5,12.59L9.33,9.76L10.74,11.17L7.91,14L10.74,16.83L9.33,18.24L6.5,15.41L3.67,18.24L2.26,16.83Z";
var mdiSignatureFreehand = "M22,22H2V20H22V22M6.2,17.3L5.5,18L4.1,16.6L2.7,18L2,17.3L3.4,15.9L2,14.5L2.7,13.8L4.1,15.2L5.5,13.8L6.2,14.5L4.8,15.9L6.2,17.3M16.22,14.43C16.22,13.85 15.5,13.2 14.06,12.46C12.23,11.54 11,10.79 10.36,10.24C9.71,9.68 9.39,9.06 9.39,8.37C9.39,6.59 10.3,5.12 12.12,3.95C13.94,2.78 15.43,2.19 16.57,2.19C17.31,2.19 17.85,2.32 18.18,2.58C18.5,2.83 18.68,3.27 18.68,3.9C18.68,4.18 18.56,4.42 18.31,4.63C18.07,4.83 17.87,4.93 17.74,4.93C17.63,4.93 17.43,4.83 17.13,4.64L16.55,4.38C16.08,4.38 15.14,4.71 13.71,5.38C12.29,6.04 11.58,6.79 11.58,7.63C11.58,8.14 11.82,8.6 12.32,9C12.82,9.42 13.71,9.93 15,10.53C16.03,11 16.86,11.5 17.5,12.07C18.1,12.61 18.41,13.25 18.41,14C18.41,15.34 17.47,16.41 15.58,17.17C13.7,17.94 11.9,18.32 10.19,18.32C8.75,18.32 8,17.83 8,16.86C8,16.5 8.19,16.27 8.5,16.11C8.83,15.95 9.16,15.87 9.5,15.87L10.25,16L10.97,16.13C11.95,16.13 13,15.97 14.13,15.64C15.26,15.32 15.96,14.91 16.22,14.43Z";
var mdiSignatureImage = "M22,22H2V20H22V22M6.2,17.3L4.8,15.9L6.2,14.5L5.5,13.8L4.1,15.2L2.7,13.8L2,14.5L3.4,15.9L2,17.3L2.7,18L4.1,16.6L5.5,18L6.2,17.3M20,5H10A2,2 0 0,0 8,7V16A2,2 0 0,0 10,18H20A2,2 0 0,0 22,16V7A2,2 0 0,0 20,5M10,16L12.6,12.7L14.4,14.9L16.8,11.6L20,16H10Z";
var mdiSignatureText = "M22,22H2V20H22V22M6.2,17.3L4.8,15.9L6.2,14.5L5.5,13.8L4.1,15.2L2.7,13.8L2,14.5L3.4,15.9L2,17.3L2.7,18L4.1,16.6L5.5,18L6.2,17.3M20.5,3L21.7,7.4L20.7,7.7C20.2,6.8 19.8,6 19.3,5.5C18.7,5 18.1,5 17.5,5H15V15.5C15,16 15,16.5 15.3,16.7C15.6,16.9 16.3,16.9 17,16.9V17.9H11V16.9C11.7,16.9 12.3,16.9 12.7,16.7C13,16.5 13,16 13,15.5V5H10.5C9.9,5 9.3,5 8.7,5.4C8.2,5.8 7.7,6.7 7.3,7.6L6.3,7.3L7.5,3H20.5Z";
var mdiSilo = "M8.5,2C11.85,2 14.6,4.53 14.96,7.78L22,12V14L20,12.8V22H18V11.6L15,9.8V22H13V9H4V22H2V8.5A6.5,6.5 0 0,1 8.5,2M8.5,4C6.54,4 4.87,5.25 4.26,7H12.74C12.13,5.25 10.46,4 8.5,4M6,11H11V13H6V11M6,15H11V17H6V15M6,19H11V21H6V19Z";
var mdiSilverware = "M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M14.88,11.53L13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z";
var mdiSilverwareClean = "M15 0L14.38 1.37L13 2L14.38 2.63L15 4L15.63 2.63L17 2L15.63 1.37L15 0M10.5 2L9.41 4.41L7 5.5L9.41 6.59L10.5 9L11.6 6.59L14 5.5L11.6 4.41L10.5 2M18.89 5.14C17.56 5.06 16.04 5.65 14.84 6.84C13.25 8.43 12.75 10.58 13.46 12.11L3.7 21.87L5.11 23.28L12 16.41L18.88 23.29L20.29 21.88L13.41 15L14.88 13.53C16.41 14.24 18.56 13.74 20.15 12.15C22.06 10.24 22.43 7.5 20.96 6.03C20.41 5.5 19.68 5.19 18.89 5.14M3.91 5.5C2.35 7.06 2.35 9.59 3.91 11.16L8.1 15.34L10.93 12.5L3.91 5.5Z";
var mdiSilverwareFork = "M5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L5.12,21.29Z";
var mdiSilverwareForkKnife = "M11,9H9V2H7V9H5V2H3V9C3,11.12 4.66,12.84 6.75,12.97V22H9.25V12.97C11.34,12.84 13,11.12 13,9V2H11V9M16,6V14H18.5V22H21V2C18.24,2 16,4.24 16,6Z";
var mdiSilverwareSpoon = "M14.88,11.53L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z";
var mdiSilverwareVariant = "M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L13.41,13Z";
var mdiSim = "M20,4A2,2 0 0,0 18,2H10L4,8V20A2,2 0 0,0 6,22H18C19.11,22 20,21.1 20,20V4M9,19H7V17H9V19M17,19H15V17H17V19M9,15H7V11H9V15M13,19H11V15H13V19M13,13H11V11H13V13M17,15H15V11H17V15Z";
var mdiSimAlert = "M13 13H11V7H13M13 17H11V15H13M18 2H10L4 8V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.9 19.1 2 18 2Z";
var mdiSimAlertOutline = "M13 13H11V7H13M13 17H11V15H13M18 4V20H6V8.8L10.8 4H18M18 2H10L4 8V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.9 19.1 2 18 2Z";
var mdiSimOff = "M20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.11 4 20V8L5.06 6.95L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M20 4C20 2.9 19.11 2 18 2H10L7.6 4.4L20 16.8V4Z";
var mdiSimOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L5.06 6.95L4 8V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M18 20H6V8.83L6.47 8.36L18 19.89V20M10.83 4H18V14.8L20 16.8V4C20 2.9 19.11 2 18 2H10L7.6 4.4L9 5.81L10.83 4Z";
var mdiSimOutline = "M18 4V20H6V8.8L10.8 4H18M18 2H10L4 8V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.9 19.1 2 18 2M9.5 19H7.5V17H9.5V19M16.5 19H14.5V17H16.5V19M9.5 15H7.5V11H9.5V15M13 19H11V15H13V19M13 13H11V11H13V13M16.5 15H14.5V11H16.5V15Z";
var mdiSimpleIcons = "M18.25 17C18.25 17.88 18.07 18.74 17.71 19.53H16.31C17.71 17.15 16.91 14.09 14.53 12.69C13.76 12.24 12.89 12 12 12C9.24 12 7 9.76 7 7C7 4.24 9.24 2 12 2C14.76 2 17 4.24 17 7H15.75C15.75 4.93 14.07 3.25 12 3.25C9.93 3.25 8.25 4.93 8.25 7C8.25 9.07 9.93 10.75 12 10.75C15.45 10.75 18.25 13.56 18.25 17M6.29 19.53C5.93 18.74 5.75 17.87 5.75 17H7C7 17.93 7.25 18.79 7.69 19.53H6.29M18.25 20.75V22H5.75V20.75H9.5V15.75H8.25V14.5H15.75V15.75H14.5V20.75H18.25M13.25 15.75H10.75V20.75H13.25V15.75M14.44 7.07C14.4 8.4 13.33 9.47 12 9.5C10.62 9.46 9.53 8.32 9.57 6.94C9.6 5.61 10.67 4.53 12 4.5C13.38 4.54 14.47 5.68 14.44 7.07M13.25 7C13.25 6.31 12.69 5.75 12 5.75C11.31 5.75 10.75 6.31 10.75 7C10.75 7.69 11.31 8.25 12 8.25C12.69 8.25 13.25 7.69 13.25 7Z";
var mdiSinaWeibo = "M9.82,13.87C10.89,13.87 11.77,14.74 11.77,15.82A1.95,1.95 0 0,1 9.82,17.77C8.74,17.77 7.87,16.89 7.87,15.82C7.87,14.74 8.74,13.87 9.82,13.87M14.5,3.34L15.18,3.31C18.94,3.31 22,6.37 22,10.13L21.95,10.95L20.76,10.58L20.78,10.13C20.78,7.04 18.27,4.53 15.18,4.53L14.83,4.54L14.5,3.34M15.32,6.23C17.38,6.3 19.05,8 19.08,10.06L17.84,9.68C17.65,8.56 16.78,7.68 15.67,7.5L15.32,6.23M2,15.41C1.97,14.8 2.07,12.64 4.95,9.97C8.35,6.81 9.82,7.05 9.82,7.05C9.82,7.05 13,6.75 11.06,10.46H11.13C11.6,9.96 12.62,9.21 14.69,9C16.77,8.79 16.77,10.5 16.5,11.7C18.38,12.64 19.56,14.03 19.56,15.58C19.56,18.4 15.63,20.69 10.78,20.69H10.65L10.5,20.69C7,20.69 4,19.42 2.71,17.59C2.25,16.97 2,16.29 2,15.58V15.41M9.82,11.92C6.59,11.92 3.97,13.67 3.97,15.82C3.97,17.97 6.59,19.72 9.82,19.72C13.05,19.72 15.67,17.97 15.67,15.82C15.67,13.67 13.05,11.92 9.82,11.92Z";
var mdiSineWave = "M16.5,21C13.5,21 12.31,16.76 11.05,12.28C10.14,9.04 9,5 7.5,5C4.11,5 4,11.93 4,12H2C2,11.63 2.06,3 7.5,3C10.5,3 11.71,7.25 12.97,11.74C13.83,14.8 15,19 16.5,19C19.94,19 20.03,12.07 20.03,12H22.03C22.03,12.37 21.97,21 16.5,21Z";
var mdiSitemap = "M9,2V8H11V11H5C3.89,11 3,11.89 3,13V16H1V22H7V16H5V13H11V16H9V22H15V16H13V13H19V16H17V22H23V16H21V13C21,11.89 20.11,11 19,11H13V8H15V2H9Z";
var mdiSizeL = "M9 7V17H15V15H11V7H9Z";
var mdiSizeM = "M9 7C7.9 7 7 7.9 7 9V17H9V9H11V16H13V9H15V17H17V9C17 7.9 16.11 7 15 7H9Z";
var mdiSizeS = "M11 7C9.9 7 9 7.9 9 9V11C9 12.11 9.9 13 11 13H13V15H9V17H13C14.11 17 15 16.11 15 15V13C15 11.9 14.11 11 13 11H11V9H15V7H11Z";
var mdiSizeXl = "M6 7H8L9 9.5L10 7H12L10 12L12 17H10L9 14.5L8 17H6L8 12L6 7M13 7H15V15H19V17H13V7Z";
var mdiSizeXs = "M6 7H8L9 9.5L10 7H12L10 12L12 17H10L9 14.5L8 17H6L8 12L6 7M15 7H19V9H15V11H17C18.11 11 19 11.9 19 13V15C19 16.11 18.11 17 17 17H13V15H17V13H15C13.9 13 13 12.11 13 11V9C13 7.9 13.9 7 15 7Z";
var mdiSizeXxl = "M9 7H11L12 9.5L13 7H15L13 12L15 17H13L12 14.5L11 17H9L11 12L9 7M16 7H18V15H22V17H16V7M2 7H4L5 9.5L6 7H8L6 12L8 17H6L5 14.5L4 17H2L4 12L2 7Z";
var mdiSizeXxs = "M9 7H11L12 9.5L13 7H15L13 12L15 17H13L12 14.5L11 17H9L11 12L9 7M18 7H22V9H18V11H20C21.11 11 22 11.9 22 13V15C22 16.11 21.11 17 20 17H16V15H20V13H18C16.9 13 16 12.11 16 11V9C16 7.9 16.9 7 18 7M2 7H4L5 9.5L6 7H8L6 12L8 17H6L5 14.5L4 17H2L4 12L2 7Z";
var mdiSizeXxxl = "M9 7H11L12 9.5L13 7H15L13 12L15 17H13L12 14.5L11 17H9L11 12L9 7M16 7H18V15H22V17H16V7M8 15C8 16.11 7.11 17 6 17H2V15H6V13H4V11H6V9H2V7H6C7.1 7 8 7.89 8 9V10.5C8 11.33 7.33 12 6.5 12C7.33 12 8 12.67 8 13.5V15Z";
var mdiSkate = "M21.1,16.5C20.36,16.17 19.5,16.5 19.19,17.26C19.06,17.58 18.8,17.87 18.5,18H3V21H17.97C19.68,21 21.22,20 21.88,18.41C22.2,17.67 21.86,16.81 21.1,16.5M19,15C19,15 19,16 17,16C15,16 4,16 4,16V3H11L11.21,4.5H9.24V6H11.43L11.64,7.5H9.24V9H11.86L12,10H14C14,10 19,10 19,15Z";
var mdiSkateboard = "M9 14.5C9 15.33 8.33 16 7.5 16S6 15.33 6 14.5 6.67 13 7.5 13 9 13.67 9 14.5M16.5 13C15.67 13 15 13.67 15 14.5S15.67 16 16.5 16C17.33 16 18 15.33 18 14.5S17.33 13 16.5 13M21.59 9.19C21.14 8.87 20.5 8.97 20.19 9.41L20.06 9.59C19.88 9.85 19.57 10 19.26 10L4.74 10C4.43 10 4.13 9.85 3.94 9.59L3.81 9.41C3.5 8.97 2.86 8.87 2.41 9.19C1.96 9.5 1.87 10.15 2.19 10.59L2.32 10.77C2.88 11.54 3.79 12 4.74 12H19.26C20.21 12 21.12 11.54 21.68 10.77L21.81 10.59C22.13 10.15 22.04 9.5 21.59 9.19Z";
var mdiSkewLess = "M17.5,11L15.41,20H10.5L12.59,11H17.5M20,9H11L8,22H17L20,9M4,6L8,2V5H16V7H8V10L4,6Z";
var mdiSkewMore = "M12.5,11L10.41,20H5.5L7.59,11H12.5M15,9H6L3,22H12L15,9M21,6L17,2V5H9V7H17V10L21,6Z";
var mdiSki = "M15.3 18.3L17 12.9L18.4 13.3L16.7 18.7L15.3 18.3M17.3 5.2C18.2 5.2 19 4.4 19 3.5S18.3 1.8 17.3 1.8C16.4 1.8 15.6 2.6 15.6 3.5S16.4 5.2 17.3 5.2M21.3 19.8C20.7 20.1 20.1 20.4 19.4 20.5C18.7 20.6 18 20.6 17.3 20.4L11 18.5L13.4 11.7L10.9 8.7L13.8 7.1C13.8 7.1 14.9 10 15 10.3S15.3 10.8 15.6 10.9L19.7 12.1L20.2 10.3L19.3 9.9L19.9 7.8L18.5 7.4L18 9.4L16.8 8.9L15.4 5C15 4.2 14 3.8 13.1 4.2L8.5 6.7C7.6 7.2 7.3 8.3 7.8 9.1C7.9 9.3 10.8 12.3 10.8 12.3L9.1 18L2.3 16L2 17.3L16.9 21.7C18.6 22.2 20.4 22 22 21.1L21.3 19.8Z";
var mdiSkiCrossCountry = "M15 1.2C16 1.2 16.8 2 16.8 3S16 4.8 15 4.8 13.2 4 13.2 3 14 1.2 15 1.2M11 23V21.7H9.3L11.7 14.9L14 18V21.7H13V23H20V21.7H15.8V16.5L13.3 12L14 9.2L15.1 11H20V9.1H16.4L14.4 5.8C14.1 5.3 13.5 5 12.9 5C12.7 5 12.6 5.1 12.4 5.1L7 6.8V12H8.8V8.3L11 7.7L7.4 21.7H4V23";
var mdiSkiWater = "M4.2 3.5C4.2 2.7 4.9 1.9 5.8 1.9C6.7 1.9 7.4 2.6 7.4 3.5S6.6 5 5.8 5 4.2 4.3 4.2 3.5M22 3.9L21.5 3L13.5 7.1L14 8L22 3.9M20.8 20.3L21.7 21.2C21.1 21.8 20.5 22.2 19.8 22.5S18.3 23 17.5 23H2V21.7H4.7L6.8 18.2L4.5 15L3.7 7.2C3.7 6.3 4.5 5.5 5.4 5.5C5.7 5.5 6 5.6 6.2 5.7L9.7 8.3L12 7.5L12.8 9.1L9.3 10.6C9.2 10.5 7.7 9.4 6.6 8.5L7 12L12.3 16.5L14 21.7H17.5C18.1 21.7 18.7 21.6 19.3 21.3C19.9 21.1 20.4 20.7 20.8 20.3M7 21.7H12L10.4 17.8L8.1 15.9L9.3 18.4L7 21.7Z";
var mdiSkipBackward = "M20,5V19L13,12M6,5V19H4V5M13,5V19L6,12";
var mdiSkipBackwardOutline = "M18,14.17L15.83,12L18,9.83V14.17M20,19V5L13,12M4,19H6V5H4M11,14.17L8.83,12L11,9.83V14.17M13,19V5L6,12";
var mdiSkipForward = "M4,5V19L11,12M18,5V19H20V5M11,5V19L18,12";
var mdiSkipForwardOutline = "M6,9.83L8.17,12L6,14.17V9.83M4,5V19L11,12M20,5H18V19H20M13,9.83L15.17,12L13,14.17V9.83M11,5V19L18,12";
var mdiSkipNext = "M16,18H18V6H16M6,18L14.5,12L6,6V18Z";
var mdiSkipNextCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8L13,12L8,16M14,8H16V16H14";
var mdiSkipNextCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M8,8V16L13,12M14,8V16H16V8";
var mdiSkipNextOutline = "M6,18L14.5,12L6,6M8,9.86L11.03,12L8,14.14M16,6H18V18H16";
var mdiSkipPrevious = "M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z";
var mdiSkipPreviousCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8H10V16H8M16,8V16L11,12";
var mdiSkipPreviousCircleOutline = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.59,4 4,7.59 4,12C4,16.41 7.59,20 12,20C16.41,20 20,16.41 20,12C20,7.59 16.41,4 12,4M16,8V16L11,12M10,8V16H8V8";
var mdiSkipPreviousOutline = "M6,6H8V18H6M9.5,12L18,18V6M16,14.14L12.97,12L16,9.86V14.14Z";
var mdiSkull = "M12,2A9,9 0 0,0 3,11C3,14.03 4.53,16.82 7,18.47V22H9V19H11V22H13V19H15V22H17V18.46C19.47,16.81 21,14 21,11A9,9 0 0,0 12,2M8,11A2,2 0 0,1 10,13A2,2 0 0,1 8,15A2,2 0 0,1 6,13A2,2 0 0,1 8,11M16,11A2,2 0 0,1 18,13A2,2 0 0,1 16,15A2,2 0 0,1 14,13A2,2 0 0,1 16,11M12,14L13.5,17H10.5L12,14Z";
var mdiSkullCrossbones = "M15.8,18.5L21.8,20.1L21.4,22L12,19.5L2.6,22L2.1,20.1L8.1,18.5L2,16.9L2.5,15L11.9,17.5L21.3,15L21.8,16.9L15.8,18.5M18,8C18,9.8 17.2,11.3 16,12.4V15H14V13.7L14,13H13V15H11V13H10V13.7L10,15H8V12.4C6.8,11.3 6,9.8 6,8A6,6 0 0,1 12,2A6,6 0 0,1 18,8M11,7.5C11,6.7 10.3,6 9.5,6C8.7,6 8,6.7 8,7.5C8,8.3 8.7,9 9.5,9C10.3,9 11,8.3 11,7.5M13,11L12,9L11,11H13M16,7.5C16,6.7 15.3,6 14.5,6C13.7,6 13,6.7 13,7.5C13,8.3 13.7,9 14.5,9C15.3,9 16,8.3 16,7.5Z";
var mdiSkullCrossbonesOutline = "M15.8,18.5L21.8,20.1L21.4,22L12,19.5L2.6,22L2.1,20.1L8.1,18.5L2,16.9L2.5,15L11.9,17.5L21.3,15L21.8,16.9L15.8,18.5M9.5,6C8.7,6 8,6.7 8,7.5C8,8.3 8.7,9 9.5,9C10.3,9 11,8.3 11,7.5C11,6.7 10.3,6 9.5,6M14.5,6C13.7,6 13,6.7 13,7.5C13,8.3 13.7,9 14.5,9C15.3,9 16,8.3 16,7.5C16,6.7 15.3,6 14.5,6M13,11L12,9L11,11H13M12,1C8.1,1 5,4.1 5,8C5,9.9 5.8,11.6 7,12.9V16H17V12.9C18.2,11.6 19,9.9 19,8C19,4.1 15.9,1 12,1M15,12V14H14V12H13V14H11V12H10V14H9V12H9C7.8,11.1 7,9.7 7,8C7,5.2 9.2,3 12,3C14.8,3 17,5.2 17,8C17,9.6 16.2,11.1 15,12Z";
var mdiSkullOutline = "M8,15A2,2 0 0,1 6,13A2,2 0 0,1 8,11A2,2 0 0,1 10,13A2,2 0 0,1 8,15M10.5,17L12,14L13.5,17H10.5M16,15A2,2 0 0,1 14,13A2,2 0 0,1 16,11A2,2 0 0,1 18,13A2,2 0 0,1 16,15M22,11A10,10 0 0,0 12,1A10,10 0 0,0 2,11C2,13.8 3.2,16.3 5,18.1V22H19V18.1C20.8,16.3 22,13.8 22,11M17,20H15V18H13V20H11V18H9V20H7V17.2C5.2,15.7 4,13.5 4,11A8,8 0 0,1 12,3A8,8 0 0,1 20,11C20,13.5 18.8,15.8 17,17.2V20Z";
var mdiSkullScan = "M2 0C.9 0 0 .9 0 2V6H2V2H6V0H2M18 0V2H22V6H24V2C24 .9 23.1 0 22 0H18M12 3C7.6 3 4 6.6 4 11C4 13.5 5.2 15.8 7 17.2V21H9V18H11V21H13V18H15V21H17V17.2C18.8 15.7 20 13.5 20 11C20 6.6 16.4 3 12 3M8 14C6.9 14 6 13.1 6 12S6.9 10 8 10 10 10.9 10 12 9.1 14 8 14M10.5 16L12 13L13.5 16H10.5M16 14C14.9 14 14 13.1 14 12S14.9 10 16 10 18 10.9 18 12 17.1 14 16 14M0 18V22C0 23.1 .9 24 2 24H6V22H2V18H0M22 18V22H18V24H22C23.1 24 24 23.1 24 22V18H22Z";
var mdiSkullScanOutline = "M2 0C.9 0 0 .9 0 2V6H2V2H6V0H2M18 0V2H22V6H24V2C24 .9 23.1 0 22 0H18M9.5 13C8.7 13 8 12.3 8 11.5S8.7 10 9.5 10 11 10.7 11 11.5 10.3 13 9.5 13M11 15L12 13L13 15H11M14.5 13C13.7 13 13 12.3 13 11.5S13.7 10 14.5 10 16 10.7 16 11.5 15.3 13 14.5 13M0 18V22C0 23.1 .9 24 2 24H6V22H2V18H0M22 18V22H18V24H22C23.1 24 24 23.1 24 22V18H22M12 3C7.6 3 4 6.6 4 11C4 13 4.8 14.9 6 16.3V21H18V16.3C19.2 14.9 20 13.1 20 11C20 6.6 16.4 3 12 3M16 15.4V19H14V17H13V19H11V17H10V19H8V15.4C6.8 14.3 6 12.7 6 11C6 7.7 8.7 5 12 5S18 7.7 18 11C18 12.8 17.2 14.3 16 15.4Z";
var mdiSkype = "M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M12.04,17.16C14.91,17.16 16.34,15.78 16.34,13.92C16.34,12.73 15.78,11.46 13.61,10.97L11.62,10.53C10.86,10.36 10,10.13 10,9.42C10,8.7 10.6,8.2 11.7,8.2C13.93,8.2 13.72,9.73 14.83,9.73C15.41,9.73 15.91,9.39 15.91,8.8C15.91,7.43 13.72,6.4 11.86,6.4C9.85,6.4 7.7,7.26 7.7,9.54C7.7,10.64 8.09,11.81 10.25,12.35L12.94,13.03C13.75,13.23 13.95,13.68 13.95,14.1C13.95,14.78 13.27,15.45 12.04,15.45C9.63,15.45 9.96,13.6 8.67,13.6C8.09,13.6 7.67,14 7.67,14.57C7.67,15.68 9,17.16 12.04,17.16Z";
var mdiSkypeBusiness = "M12.03,16.53C9.37,16.53 8.18,15.22 8.18,14.24C8.18,13.74 8.55,13.38 9.06,13.38C10.2,13.38 9.91,15 12.03,15C13.12,15 13.73,14.43 13.73,13.82C13.73,13.46 13.55,13.06 12.83,12.88L10.46,12.29C8.55,11.81 8.2,10.78 8.2,9.81C8.2,7.79 10.1,7.03 11.88,7.03C13.5,7.03 15.46,7.94 15.46,9.15C15.46,9.67 15,9.97 14.5,9.97C13.5,9.97 13.7,8.62 11.74,8.62C10.77,8.62 10.23,9.06 10.23,9.69C10.23,10.32 11,10.5 11.66,10.68L13.42,11.07C15.34,11.5 15.83,12.62 15.83,13.67C15.83,15.31 14.57,16.53 12.03,16.53M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M8,5A3,3 0 0,0 5,8C5,8.79 5.3,9.5 5.8,10.04C5.1,12.28 5.63,14.82 7.4,16.6C9.18,18.37 11.72,18.9 13.96,18.2C14.5,18.7 15.21,19 16,19A3,3 0 0,0 19,16C19,15.21 18.7,14.5 18.2,13.96C18.9,11.72 18.37,9.18 16.6,7.4C14.82,5.63 12.28,5.1 10.04,5.8C9.5,5.3 8.79,5 8,5Z";
var mdiSlack = "M6,15A2,2 0 0,1 4,17A2,2 0 0,1 2,15A2,2 0 0,1 4,13H6V15M7,15A2,2 0 0,1 9,13A2,2 0 0,1 11,15V20A2,2 0 0,1 9,22A2,2 0 0,1 7,20V15M9,7A2,2 0 0,1 7,5A2,2 0 0,1 9,3A2,2 0 0,1 11,5V7H9M9,8A2,2 0 0,1 11,10A2,2 0 0,1 9,12H4A2,2 0 0,1 2,10A2,2 0 0,1 4,8H9M17,10A2,2 0 0,1 19,8A2,2 0 0,1 21,10A2,2 0 0,1 19,12H17V10M16,10A2,2 0 0,1 14,12A2,2 0 0,1 12,10V5A2,2 0 0,1 14,3A2,2 0 0,1 16,5V10M14,18A2,2 0 0,1 16,20A2,2 0 0,1 14,22A2,2 0 0,1 12,20V18H14M14,17A2,2 0 0,1 12,15A2,2 0 0,1 14,13H19A2,2 0 0,1 21,15A2,2 0 0,1 19,17H14Z";
var mdiSlashForward = "M7 21L14.9 3H17L9.1 21H7Z";
var mdiSlashForwardBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.3 19H7L14.7 5H17L9.3 19Z";
var mdiSleep = "M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M15,16H9V14L12.39,10H9V8H15V10L11.62,14H15V16M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z";
var mdiSleepOff = "M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H9V14L9.79,13.06L2,5.27M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M9.82,8H15V10L13.54,11.72L9.82,8M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z";
var mdiSlide = "M14.83 15.45C14.47 14.9 14.18 14.39 13.91 13.92C12.74 11.91 11.79 10.55 9 10.13V5.5C9 3.57 7.43 2 5.5 2S2 3.57 2 5.5V22H4V20H7V22H9V12.16C10.76 12.5 11.29 13.39 12.17 14.92C12.46 15.43 12.78 15.97 13.17 16.56C15.41 19.92 17.67 22 22 22V20C18.53 20 16.8 18.4 14.83 15.45M5.5 4C6.33 4 7 4.67 7 5.5V10H4V5.5C4 4.67 4.67 4 5.5 4M4 18V16H7V18H4M7 14H4V12H7V14Z";
var mdiSlopeDownhill = "M22,19V22H2V13L22,19M19.09,7.5L18.25,10.26L8.13,7.26C8.06,5.66 6.7,4.42 5.1,4.5C3.5,4.57 2.26,5.93 2.34,7.53C2.41,9.13 3.77,10.36 5.37,10.29C6.24,10.25 7.05,9.82 7.57,9.11L17.69,12.11L16.85,14.89L21.67,12.29L19.09,7.5Z";
var mdiSlopeUphill = "M22,13V22H2V19L22,13M21.68,7.06L16.86,4.46L17.7,7.24L7.58,10.24C6.63,8.95 4.82,8.67 3.53,9.62C2.24,10.57 1.96,12.38 2.91,13.67C3.85,14.97 5.67,15.24 6.96,14.29C7.67,13.78 8.1,12.97 8.14,12.09L18.26,9.09L19.1,11.87L21.68,7.06Z";
var mdiSlotMachine = "M5 12L7 8V7H4V8H6L4 12M9 12L11 8V7H8V8H10L8 12M13 12L15 8V7H12V8H14L12 12M21 2C19.9 2 19 2.9 19 4C19 4.7 19.4 5.4 20 5.7V17H17V15C17.6 15 18 14.6 18 14V5C18 4.4 17.6 4 17 4H13.2C12.4 2.8 11 2 9.5 2S6.6 2.8 5.8 4H2C1.4 4 1 4.4 1 5V14C1 14.6 1.4 15 2 15V22H17V19H20C21.1 19 22 18.1 22 17V5.7C22.6 5.4 23 4.7 23 4C23 2.9 22.1 2 21 2M13 19H6V17H13V19M16 13H3V6H16V13Z";
var mdiSlotMachineOutline = "M5 12L7 8V7H4V8H6L4 12M9 12L11 8V7H8V8H10L8 12M13 12L15 8V7H12V8H14L12 12M21 2C19.9 2 19 2.9 19 4C19 4.7 19.4 5.4 20 5.7V17H17V15C17.6 15 18 14.6 18 14V5C18 4.4 17.6 4 17 4H13.2C12.4 2.8 11 2 9.5 2S6.6 2.8 5.8 4H2C1.4 4 1 4.4 1 5V14C1 14.6 1.4 15 2 15V22H17V19H20C21.1 19 22 18.1 22 17V5.7C22.6 5.4 23 4.7 23 4C23 2.9 22.1 2 21 2M3 6H16V13H3V6M15 20H4V15H15V20M13 19H6V17H13V19Z";
var mdiSmartCard = "M2 3H22A2.07 2.07 0 0 1 24 5V19A2.07 2.07 0 0 1 22 21H2A2.07 2.07 0 0 1 0 19V5A2.07 2.07 0 0 1 2 3M8 13.91C6 13.91 2 15 2 17V18H14V17C14 15 10 13.91 8 13.91M8 6A3 3 0 1 0 11 9A3 3 0 0 0 8 6M17 10V13H21V10H17";
var mdiSmartCardOutline = "M22 3H2A2.07 2.07 0 0 0 0 5V19A2.07 2.07 0 0 0 2 21H22A2.07 2.07 0 0 0 24 19V5A2.07 2.07 0 0 0 22 3M22 19H2V5H22M14 17V15.75C14 14.09 10.66 13.25 9 13.25S4 14.09 4 15.75V17H14M9 7A2.5 2.5 0 1 0 11.5 9.5A2.5 2.5 0 0 0 9 7M15 10V13H19V10H15";
var mdiSmartCardReader = "M21 4A2.07 2.07 0 0 0 19 2H5A2.07 2.07 0 0 0 3 4V18H21M8.25 16H7V6H8.25C9.91 6 10.75 9.34 10.75 11S9.91 16 8.25 16M14.5 13.5A2.5 2.5 0 1 1 17 11A2.5 2.5 0 0 1 14.5 13.5M23 21V22H1V21A2 2 0 0 1 3 19H21A2 2 0 0 1 23 21Z";
var mdiSmartCardReaderOutline = "M14.5 8.5A2.5 2.5 0 1 0 17 11A2.5 2.5 0 0 0 14.5 8.5M8.25 6H7V16H8.25C9.91 16 10.75 12.66 10.75 11S9.91 6 8.25 6M19 2H5A2.07 2.07 0 0 0 3 4V18H5V4H19V18H21V4A2.07 2.07 0 0 0 19 2M23 22H1V21A2 2 0 0 1 3 19H21A2 2 0 0 1 23 21Z";
var mdiSmog = "M12,2C10.08,2 8.5,3.35 8.09,5.15C7.45,4.44 6.53,4 5.5,4A3.5,3.5 0 0,0 2,7.5H2A3.5,3.5 0 0,0 5.5,11H6.68V12H10.72V11H13.28V12H17.32V11H18.5A3.5,3.5 0 0,0 22,7.5H22A3.5,3.5 0 0,0 18.5,4H18.5C17.47,4 16.55,4.44 15.91,5.15C15.5,3.35 13.92,2 12,2M7.2,14L6.4,22H11L10.2,14H7.2M13.8,14L13,22H17.6L16.8,14H13.8Z";
var mdiSmokeDetector = "M12,18A6,6 0 0,0 18,12C18,8.68 15.31,6 12,6C8.68,6 6,8.68 6,12A6,6 0 0,0 12,18M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12Z";
var mdiSmoking = "M2,16H17V19H2V16M20.5,16H22V19H20.5V16M18,16H19.5V19H18V16M18.85,7.73C19.47,7.12 19.85,6.28 19.85,5.35C19.85,3.5 18.35,2 16.5,2V3.5C17.5,3.5 18.35,4.33 18.35,5.35C18.35,6.37 17.5,7.2 16.5,7.2V8.7C18.74,8.7 20.5,10.53 20.5,12.77V15H22V12.76C22,10.54 20.72,8.62 18.85,7.73M16.03,10.2H14.5C13.5,10.2 12.65,9.22 12.65,8.2C12.65,7.18 13.5,6.45 14.5,6.45V4.95C12.65,4.95 11.15,6.45 11.15,8.3A3.35,3.35 0 0,0 14.5,11.65H16.03C17.08,11.65 18,12.39 18,13.7V15H19.5V13.36C19.5,11.55 17.9,10.2 16.03,10.2Z";
var mdiSmokingOff = "M2,6L9,13H2V16H12L19,23L20.25,21.75L3.25,4.75L2,6M20.5,13H22V16H20.5V13M18,13H19.5V16H18V13M18.85,4.88C19.47,4.27 19.85,3.43 19.85,2.5H18.35C18.35,3.5 17.5,4.35 16.5,4.35V5.85C18.74,5.85 20.5,7.68 20.5,9.92V12H22V9.92C22,7.69 20.72,5.77 18.85,4.88M14.5,8.7H16.03C17.08,8.7 18,9.44 18,10.75V12H19.5V10.41C19.5,8.61 17.9,7.25 16.03,7.25H14.5C13.5,7.25 12.65,6.27 12.65,5.25C12.65,4.23 13.5,3.5 14.5,3.5V2A3.35,3.35 0 0,0 11.15,5.35A3.35,3.35 0 0,0 14.5,8.7M17,15.93V13H14.07L17,15.93Z";
var mdiSmokingPipe = "M16 13C14.89 13 14 13.89 14 15V18H13C12 18 11 17.92 10.3 17.23L6.53 13.47C5.6 12.53 4.33 12 3 12H2V14H3C3.8 14 4.56 14.32 5.12 14.88L8.89 18.65C11.72 21.5 13 22 16 22H18C20.21 22 22 20.21 22 18V15C22 13.89 21.11 13 20 13H16M14 7.2H12.5C11.45 7.12 10.65 6.25 10.65 5.2C10.67 4.22 11.5 3.43 12.46 3.45L12.5 3.45V2C10.65 2 9.15 3.5 9.15 5.35S10.65 8.7 12.5 8.7H14C15.07 8.66 15.96 9.5 16 10.56C16 10.61 16 10.65 16 10.7V12H17.5V10.36C17.42 8.53 15.88 7.12 14.05 7.2L14 7.2M20 9.76V12H18.5V9.77L18.5 9.7C18.5 7.5 16.71 5.7 14.5 5.7V4.2H14.5C15.5 4.2 16.35 3.37 16.35 2.35C16.35 2.23 16.34 2.11 16.32 2H17.79C17.89 3 17.58 4 16.82 4.73H16.85C18.78 5.66 20 7.62 20 9.76Z";
var mdiSmokingPipeOff = "M20.84 22.73L19.71 21.6C19.19 21.85 18.62 22 18 22H16C13 22 11.72 21.5 8.89 18.65L5.12 14.88C4.56 14.32 3.8 14 3 14H2V12H3C4.33 12 5.6 12.53 6.53 13.47L10.3 17.23C11 17.92 12 18 13 18H14V15.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21.93 18.73C21.97 18.5 22 18.25 22 18V15C22 13.89 21.11 13 20 13H16.2L21.93 18.73M18.5 9.7L18.5 9.77V12H20V9.76C20 7.62 18.78 5.66 16.85 4.73H16.82C17.58 4 17.9 3 17.8 2H16.32C16.34 2.11 16.35 2.23 16.35 2.35C16.35 3.37 15.5 4.2 14.5 4.2H14.5V5.7C16.71 5.7 18.5 7.5 18.5 9.7M11.83 8.63C12.05 8.68 12.27 8.7 12.5 8.7H14C15.07 8.66 15.96 9.5 16 10.56C16 10.61 16 10.65 16 10.7V12H17.5V10.36C17.42 8.53 15.88 7.12 14.05 7.2L14 7.2H12.5C11.45 7.12 10.65 6.25 10.65 5.2C10.67 4.22 11.5 3.43 12.46 3.45L12.5 3.45V2C10.65 2 9.15 3.5 9.15 5.35C9.15 5.58 9.17 5.8 9.22 6L11.83 8.63Z";
var mdiSnail = "M20.31 8.03L21.24 4.95C21.67 4.85 22 4.47 22 4C22 3.45 21.55 3 21 3S20 3.45 20 4C20 4.26 20.11 4.5 20.27 4.68L19.5 7.26L18.73 4.68C18.89 4.5 19 4.26 19 4C19 3.45 18.55 3 18 3S17 3.45 17 4C17 4.47 17.33 4.85 17.76 4.95L18.69 8.03C17.73 8.18 17 9 17 10V12.25C15.65 9.16 12.63 7 9.11 7C5.19 7 2 10.26 2 14.26C2 16.1 2.82 17.75 4.1 18.85L2.88 19C2.38 19.06 2 19.5 2 20C2 20.55 2.45 21 3 21L19.12 21C20.16 21 21 20.16 21 19.12V11.72C21.6 11.38 22 10.74 22 10C22 9 21.27 8.18 20.31 8.03M15.6 17.41L12.07 17.86C12.5 17.1 12.8 16.21 12.8 15.26C12.8 12.94 10.95 11.06 8.67 11.06C8.14 11.06 7.62 11.18 7.14 11.41C6.65 11.66 6.44 12.26 6.69 12.75C6.93 13.25 7.53 13.45 8.03 13.21C8.23 13.11 8.45 13.06 8.67 13.06C9.85 13.06 10.8 14.04 10.8 15.26C10.8 16.92 9.5 18.27 7.89 18.27C5.75 18.27 4 16.47 4 14.26C4 11.36 6.29 9 9.11 9C12.77 9 15.75 12.06 15.75 15.82C15.75 16.36 15.69 16.89 15.6 17.41Z";
var mdiSnake = "M19.5 17H18C19.1 17 20 16.1 20 15S19.1 13 18 13V9C18 8 18 7 16.92 6.14C16.97 5.93 17 5.72 17 5.5C17 3.57 15 2 12.5 2C10.24 2 8.38 3.31 8.07 5H6L3.71 2.79L3 3.5L5 5.5L3 7.5L3.71 8.21L6 6H8.07C8.38 7.69 10.24 9 12.5 9C13 9 13.5 8.92 13.93 8.8C13.97 8.87 14 8.94 14 9V13H8C6.9 13 6 13.9 6 15S6.9 17 8 17H6.5C5.12 17 4 18.12 4 19.5C4 19.67 4 19.84 4.05 20H4C2.9 20 2 20.9 2 22H19.5C20.88 22 22 20.88 22 19.5S20.88 17 19.5 17M12 5C11.45 5 11 4.55 11 4S11.45 3 12 3 13 3.45 13 4 12.55 5 12 5Z";
var mdiSnapchat = "M21.93 16.56C21.79 16.18 21.5 16 21.22 15.81C21.17 15.78 21.11 15.75 21.07 15.73C21 15.68 20.89 15.64 20.8 15.59C19.86 15.09 19.12 14.46 18.61 13.72C18.47 13.5 18.35 13.29 18.24 13.06C18.2 12.93 18.2 12.86 18.23 12.8C18.26 12.75 18.3 12.7 18.35 12.67C18.5 12.56 18.68 12.46 18.79 12.38C19 12.25 19.15 12.15 19.25 12.08C19.64 11.81 19.91 11.5 20.08 11.2C20.32 10.75 20.35 10.22 20.16 9.75C19.91 9.08 19.27 8.66 18.5 8.66C18.34 8.66 18.18 8.68 18 8.71C18 8.72 17.94 8.73 17.9 8.74C17.9 8.28 17.89 7.8 17.85 7.32C17.71 5.64 17.12 4.76 16.5 4.06C16.11 3.62 15.65 3.24 15.14 2.95C14.21 2.42 13.15 2.15 12 2.15S9.8 2.42 8.87 2.95C8.35 3.24 7.89 3.62 7.5 4.06C6.88 4.76 6.3 5.64 6.15 7.32C6.11 7.8 6.1 8.28 6.11 8.74C6.06 8.73 6 8.72 6 8.71C5.82 8.68 5.66 8.66 5.5 8.66C4.73 8.66 4.09 9.08 3.84 9.75C3.65 10.22 3.68 10.75 3.92 11.2C4.09 11.5 4.36 11.81 4.75 12.08C4.85 12.15 5 12.25 5.21 12.39L5.63 12.66C5.69 12.7 5.73 12.75 5.77 12.8C5.8 12.87 5.8 12.94 5.75 13.07C5.65 13.3 5.53 13.5 5.39 13.72C4.89 14.45 4.18 15.07 3.27 15.56C2.78 15.82 2.28 16 2.07 16.56C1.91 17 2 17.5 2.42 17.91C2.57 18.06 2.74 18.19 2.93 18.29C3.33 18.5 3.75 18.68 4.18 18.79C4.27 18.82 4.36 18.85 4.43 18.91C4.58 19.03 4.56 19.23 4.76 19.5C4.86 19.66 5 19.79 5.13 19.89C5.54 20.18 6 20.19 6.5 20.21C6.94 20.23 7.44 20.25 8 20.44C8.26 20.5 8.5 20.67 8.79 20.85C9.5 21.27 10.42 21.85 12 21.85C13.57 21.85 14.5 21.27 15.22 20.84C15.5 20.67 15.75 20.5 16 20.44C16.55 20.25 17.06 20.23 17.5 20.21C18 20.2 18.46 20.18 18.87 19.89C19.04 19.77 19.18 19.61 19.29 19.43C19.43 19.19 19.43 19 19.56 18.91C19.63 18.86 19.71 18.82 19.8 18.8C20.24 18.68 20.66 18.5 21.06 18.29C21.27 18.18 21.45 18.04 21.6 17.87L21.61 17.87C22 17.46 22.08 17 21.93 16.56M20.53 17.31C19.67 17.78 19.1 17.73 18.66 18C18.5 18.12 18.45 18.28 18.42 18.44C18.41 18.5 18.4 18.58 18.39 18.64C18.37 18.78 18.34 18.9 18.24 18.97C17.9 19.2 16.91 18.95 15.63 19.37C14.57 19.72 13.9 20.73 12 20.73C10.1 20.73 9.45 19.73 8.37 19.37C7.1 18.95 6.1 19.2 5.77 18.97C5.5 18.78 5.72 18.26 5.34 18C4.9 17.73 4.33 17.78 3.5 17.31C3.19 17.15 3.14 17 3.18 16.93C3.22 16.84 3.34 16.77 3.42 16.73C5.07 15.94 6 14.91 6.47 14.1C6.91 13.38 7 12.83 7.03 12.75C7.06 12.54 7.09 12.38 6.86 12.17C6.64 11.96 5.66 11.36 5.39 11.17C4.93 10.85 4.74 10.54 4.88 10.15L4.88 10.15V10.15C5 9.88 5.23 9.78 5.5 9.78C5.58 9.78 5.66 9.79 5.74 9.81C6.24 9.91 6.72 10.16 7 10.23C7.03 10.24 7.06 10.24 7.1 10.24C7.19 10.24 7.24 10.21 7.27 10.15C7.28 10.11 7.29 10.06 7.29 10C7.25 9.46 7.18 8.41 7.26 7.42C7.3 7 7.37 6.64 7.46 6.33C7.66 5.65 8 5.2 8.34 4.79C8.59 4.5 9.75 3.27 12 3.27C13.85 3.27 14.96 4.11 15.44 4.56C15.54 4.66 15.62 4.74 15.66 4.79C16.04 5.23 16.38 5.71 16.58 6.47C16.65 6.74 16.71 7.06 16.74 7.42C16.82 8.4 16.75 9.46 16.71 10C16.71 10.04 16.71 10.08 16.72 10.11C16.73 10.2 16.79 10.24 16.9 10.24C16.94 10.24 16.97 10.24 17 10.23C17.28 10.16 17.76 9.91 18.26 9.8C18.34 9.79 18.42 9.78 18.5 9.78C18.75 9.78 19 9.87 19.1 10.1L19.11 10.14L19.12 10.14L19.12 10.15C19.27 10.53 19.07 10.85 18.62 11.16C18.35 11.35 17.36 11.96 17.14 12.16C16.91 12.38 16.94 12.54 16.97 12.75C17 12.85 17.18 13.8 18.08 14.86C18.63 15.5 19.42 16.17 20.58 16.73C20.65 16.76 20.74 16.81 20.79 16.87C20.82 16.92 20.84 16.96 20.83 17C20.82 17.1 20.73 17.2 20.53 17.31Z";
var mdiSnowboard = "M15.4 5.4C15.4 4.3 16.3 3.4 17.4 3.4C18.5 3.4 19.4 4.3 19.4 5.4C19.4 6.5 18.5 7.4 17.4 7.4C16.3 7.4 15.4 6.5 15.4 5.4M22 19.2C21.4 19.8 20.8 20.2 20.1 20.5C19.4 20.8 18.6 21 17.8 21H6.2C5.4 21 4.6 20.8 3.9 20.5C3.2 20.2 2.6 19.8 2 19.2L2.9 18.3C3.3 18.7 3.8 19.1 4.4 19.3C4.9 19.6 5.4 19.7 5.9 19.7L9.7 16L8.5 12.5C8.3 11.9 8.6 11.4 9.1 11L11 9H6V7H14C14.5 7 14.7 7.1 15 7.3L17.3 9.5C18.3 10.5 19.5 11 20.9 11L21 13.1C19.1 13.1 17.4 12.4 15.9 11L15.2 10.3L12.9 12.7L15 15V19.7H17.8C18.4 19.7 19 19.6 19.6 19.3C20.2 19.1 20.7 18.7 21.1 18.3L22 19.2M8.8 19.7H13V15.8L11.7 14.6V16.8L8.8 19.7Z";
var mdiSnowflake = "M20.79,13.95L18.46,14.57L16.46,13.44V10.56L18.46,9.43L20.79,10.05L21.31,8.12L19.54,7.65L20,5.88L18.07,5.36L17.45,7.69L15.45,8.82L13,7.38V5.12L14.71,3.41L13.29,2L12,3.29L10.71,2L9.29,3.41L11,5.12V7.38L8.5,8.82L6.5,7.69L5.92,5.36L4,5.88L4.47,7.65L2.7,8.12L3.22,10.05L5.55,9.43L7.55,10.56V13.45L5.55,14.58L3.22,13.96L2.7,15.89L4.47,16.36L4,18.12L5.93,18.64L6.55,16.31L8.55,15.18L11,16.62V18.88L9.29,20.59L10.71,22L12,20.71L13.29,22L14.7,20.59L13,18.88V16.62L15.5,15.17L17.5,16.3L18.12,18.63L20,18.12L19.53,16.35L21.3,15.88L20.79,13.95M9.5,10.56L12,9.11L14.5,10.56V13.44L12,14.89L9.5,13.44V10.56Z";
var mdiSnowflakeAlert = "M16.46,9.41L13,7.38V5.12L14.71,3.41L13.29,2L12,3.29L10.71,2L9.29,3.41L11,5.12V7.38L8.5,8.82L6.5,7.69L5.92,5.36L4,5.88L4.47,7.65L2.7,8.12L3.22,10.05L5.55,9.43L7.55,10.56V13.45L5.55,14.58L3.22,13.96L2.7,15.89L4.47,16.36L4,18.12L5.93,18.64L6.55,16.31L8.55,15.18L11,16.62V18.88L9.29,20.59L10.71,22L12,20.71L13.29,22L14.7,20.59L13,18.88V16.62L16.46,14.61M9.5,10.56L12,9.11L14.5,10.56V13.44L12,14.89L9.5,13.44M19,13V7H21V13H19M19,17V15H21V17H19Z";
var mdiSnowflakeMelt = "M8 17.85C8 19.04 7.11 20 6 20S4 19.04 4 17.85C4 16.42 6 14 6 14S8 16.42 8 17.85M16.46 12V10.56L18.46 9.43L20.79 10.05L21.31 8.12L19.54 7.65L20 5.88L18.07 5.36L17.45 7.69L15.45 8.82L13 7.38V5.12L14.71 3.41L13.29 2L12 3.29L10.71 2L9.29 3.41L11 5.12V7.38L8.5 8.82L6.5 7.69L5.92 5.36L4 5.88L4.47 7.65L2.7 8.12L3.22 10.05L5.55 9.43L7.55 10.56V12H2V13H22V12H16.46M9.5 12V10.56L12 9.11L14.5 10.56V12H9.5M20 17.85C20 19.04 19.11 20 18 20S16 19.04 16 17.85C16 16.42 18 14 18 14S20 16.42 20 17.85M14 20.85C14 22.04 13.11 23 12 23S10 22.04 10 20.85C10 19.42 12 17 12 17S14 19.42 14 20.85Z";
var mdiSnowflakeOff = "M11 5.12L9.29 3.41L10.71 2L12 3.29L13.29 2L14.71 3.41L13 5.12V7.38L15.45 8.82L17.45 7.69L18.07 5.36L20 5.88L19.54 7.65L21.31 8.12L20.79 10.05L18.46 9.43L16.46 10.56V13.26L14.5 11.3V10.56L12.74 9.54L10.73 7.53L11 7.38V5.12M18.46 14.57L16.87 13.67L19.55 16.35L21.3 15.88L20.79 13.95L18.46 14.57M13 16.62V18.88L14.7 20.59L13.29 22L12 20.71L10.71 22L9.29 20.59L11 18.88V16.62L8.55 15.18L6.55 16.31L5.93 18.64L4 18.12L4.47 16.36L2.7 15.89L3.22 13.96L5.55 14.58L7.55 13.45V10.56L5.55 9.43L3.22 10.05L2.7 8.12L4.47 7.65L4 5.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73L14.1 16L13 16.62M12 14.89L12.63 14.5L9.5 11.39V13.44L12 14.89Z";
var mdiSnowflakeVariant = "M14.25,12L16.27,11H23L22,9H18.03L20.42,5.83L19.43,3.83L15.37,9.2L13.35,10.21L13.75,8L17.83,2.62L15.64,2.22L12,7L8.4,2.2L6.2,2.6L10.26,8L10.66,10.21L8.82,9.29L8.66,9.21L4.6,3.8L3.6,5.8L6,9H2L1,11H7.77L9.75,12L7.73,13H1L2,15H5.97L3.58,18.17L4.57,20.17L8.63,14.8L10.65,13.79L10.25,16L6.17,21.38L8.36,21.79L12,17L15.6,21.8L17.8,21.4L13.74,16L13.34,13.79L15.34,14.79L19.4,20.2L20.4,18.2L18,15H22L23,13H16.23";
var mdiSnowman = "M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.5 7.65,14.17 8.69,13.25C8.26,12.61 8,11.83 8,11C8,10.86 8,10.73 8,10.59L5.04,8.87L4.83,8.71L2.29,9.39L2.03,8.43L4.24,7.84L2.26,6.69L2.76,5.82L4.74,6.97L4.15,4.75L5.11,4.5L5.8,7.04L6.04,7.14L8.73,8.69C9.11,8.15 9.62,7.71 10.22,7.42C9.5,6.87 9,6 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6 14.5,6.87 13.78,7.42C14.38,7.71 14.89,8.15 15.27,8.69L17.96,7.14L18.2,7.04L18.89,4.5L19.85,4.75L19.26,6.97L21.24,5.82L21.74,6.69L19.76,7.84L21.97,8.43L21.71,9.39L19.17,8.71L18.96,8.87L16,10.59V11C16,11.83 15.74,12.61 15.31,13.25C16.35,14.17 17,15.5 17,17Z";
var mdiSoccer = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,3C13.76,3 15.4,3.53 16.78,4.41L16.5,5H13L12,5L10.28,4.16L10.63,3.13C11.08,3.05 11.53,3 12,3M9.53,3.38L9.19,4.41L6.63,5.69L5.38,5.94C6.5,4.73 7.92,3.84 9.53,3.38M13,6H16L18.69,9.59L17.44,12.16L14.81,12.78L11.53,8.94L13,6M6.16,6.66L7,10L5.78,13.06L3.22,13.94C3.08,13.31 3,12.67 3,12C3,10.1 3.59,8.36 4.59,6.91L6.16,6.66M20.56,9.22C20.85,10.09 21,11.03 21,12C21,13.44 20.63,14.79 20.03,16H19L18.16,12.66L19.66,9.66L20.56,9.22M8,10H11L13.81,13.28L12,16L8.84,16.78L6.53,13.69L8,10M12,17L15,19L14.13,20.72C13.44,20.88 12.73,21 12,21C10.25,21 8.63,20.5 7.25,19.63L8.41,17.91L12,17M19,17H19.5C18.5,18.5 17,19.67 15.31,20.34L16,19L19,17Z";
var mdiSoccerField = "M4,4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4H4M4,6H11V8.13C9.24,8.59 8,10.18 8,12C8,13.82 9.24,15.41 11,15.87V18H4V16H7V8H4V6M13,6H20V8H17V16H20V18H13V15.87C14.76,15.41 16,13.82 16,12C16,10.18 14.76,8.59 13,8.13V6M4,10H5V14H4V10M19,10H20V14H19V10M13,10.27C13.62,10.63 14,11.29 14,12C14,12.71 13.62,13.37 13,13.73V10.27M11,10.27V13.73C10.38,13.37 10,12.71 10,12C10,11.29 10.38,10.63 11,10.27Z";
var mdiSocialDistance2Meters = "M6 6C7.1 6 8 5.1 8 4S7.1 2 6 2 4 2.9 4 4 4.9 6 6 6M10 9.43C10 8.62 9.5 7.9 8.78 7.58C7.93 7.21 7 7 6 7S4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H10V9.43M18 6C19.1 6 20 5.1 20 4S19.1 2 18 2 16 2.9 16 4 16.9 6 18 6M22 9.43C22 8.62 21.5 7.9 20.78 7.58C19.93 7.21 19 7 18 7S16.07 7.21 15.22 7.58C14.5 7.9 14 8.62 14 9.43V10H22V9.43M19 17V15L5 15V17L2 14L5 11V13L19 13V11L22 14L19 17M9 20.5V21H11V22H8V20.5C8 19.95 8.45 19.5 9 19.5H10V19H8V18H10C10.55 18 11 18.45 11 19V19.5C11 20.05 10.55 20.5 10 20.5H9M16 19V22H15V19H14.5V21H13.5V19H13V22H12V19C12 18.45 12.45 18 13 18H15C15.55 18 16 18.45 16 19Z";
var mdiSocialDistance6Feet = "M6 6C7.1 6 8 5.1 8 4S7.1 2 6 2 4 2.9 4 4 4.9 6 6 6M10 9.43C10 8.62 9.5 7.9 8.78 7.58C7.93 7.21 7 7 6 7S4.07 7.21 3.22 7.58C2.5 7.9 2 8.62 2 9.43V10H10V9.43M18 6C19.1 6 20 5.1 20 4S19.1 2 18 2 16 2.9 16 4 16.9 6 18 6M22 9.43C22 8.62 21.5 7.9 20.78 7.58C19.93 7.21 19 7 18 7S16.07 7.21 15.22 7.58C14.5 7.9 14 8.62 14 9.43V10H22V9.43M19 17V15H5V17L2 14L5 11V13H19V11L22 14L19 17M10 19V18H7.5C7.22 18 7 18.22 7 18.5V21.5C7 21.78 7.22 22 7.5 22H9.5C9.78 22 10 21.78 10 21.5V20C10 19.72 9.78 19.5 9.5 19.5H8V19H10M9 20.5V21H8V20.5H9M17.5 19H16.5V22H15.5V19H14.5V18H17.5V19M12.5 19V19.5H13.5V20.5H12.5V22H11.5V18H14V19H12.5Z";
var mdiSofa = "M12.5 7C12.5 5.89 13.39 5 14.5 5H18C19.1 5 20 5.9 20 7V9.16C18.84 9.57 18 10.67 18 11.97V14H12.5V7M6 11.96V14H11.5V7C11.5 5.89 10.61 5 9.5 5H6C4.9 5 4 5.9 4 7V9.15C5.16 9.56 6 10.67 6 11.96M20.66 10.03C19.68 10.19 19 11.12 19 12.12V15H5V12C5 10.9 4.11 10 3 10S1 10.9 1 12V17C1 18.1 1.9 19 3 19V21H5V19H19V21H21V19C22.1 19 23 18.1 23 17V12C23 10.79 21.91 9.82 20.66 10.03Z";
var mdiSofaOutline = "M21 9V7C21 5.35 19.65 4 18 4H14C13.23 4 12.53 4.3 12 4.78C11.47 4.3 10.77 4 10 4H6C4.35 4 3 5.35 3 7V9C1.35 9 0 10.35 0 12V17C0 18.65 1.35 20 3 20V22H5V20H19V22H21V20C22.65 20 24 18.65 24 17V12C24 10.35 22.65 9 21 9M14 6H18C18.55 6 19 6.45 19 7V9.78C18.39 10.33 18 11.12 18 12V14H13V7C13 6.45 13.45 6 14 6M5 7C5 6.45 5.45 6 6 6H10C10.55 6 11 6.45 11 7V14H6V12C6 11.12 5.61 10.33 5 9.78V7M22 17C22 17.55 21.55 18 21 18H3C2.45 18 2 17.55 2 17V12C2 11.45 2.45 11 3 11S4 11.45 4 12V16H20V12C20 11.45 20.45 11 21 11S22 11.45 22 12V17Z";
var mdiSofaSingle = "M5 9.15V7C5 5.9 5.9 5 7 5H17C18.1 5 19 5.9 19 7V9.16C17.84 9.57 17 10.67 17 11.97V14H7V11.96C7 10.67 6.16 9.56 5 9.15M20 10C18.9 10 18 10.9 18 12V15H6V12C6 10.9 5.11 10 4 10S2 10.9 2 12V17C2 18.1 2.9 19 4 19V21H6V19H18V21H20V19C21.1 19 22 18.1 22 17V12C22 10.9 21.1 10 20 10Z";
var mdiSofaSingleOutline = "M19 9V7C19 5.35 17.65 4 16 4H8C6.35 4 5 5.35 5 7V9C3.35 9 2 10.35 2 12V17C2 18.65 3.35 20 5 20V22H7V20H17V22H19V20C20.65 20 22 18.65 22 17V12C22 10.35 20.65 9 19 9M7 7C7 6.45 7.45 6 8 6H16C16.55 6 17 6.45 17 7V9.78C16.39 10.33 16 11.12 16 12V14H8V12C8 11.12 7.61 10.33 7 9.78V7M20 17C20 17.55 19.55 18 19 18H5C4.45 18 4 17.55 4 17V12C4 11.45 4.45 11 5 11S6 11.45 6 12V16H18V12C18 11.45 18.45 11 19 11S20 11.45 20 12V17Z";
var mdiSolarPanel = "M4,2H20A2,2 0 0,1 22,4V14A2,2 0 0,1 20,16H15V20H18V22H13V16H11V22H6V20H9V16H4A2,2 0 0,1 2,14V4A2,2 0 0,1 4,2M4,4V8H11V4H4M4,14H11V10H4V14M20,14V10H13V14H20M20,4H13V8H20V4Z";
var mdiSolarPanelLarge = "M3,6H6V3H3V6M8,3V6H11V3H8M13,3V6H16V3H13M18,3V6H21V3H18M21,8H18V11H21V8M21,13H18V16H21V13M16,16V13H13V16H16M11,16V13H8V16H11M6,16V13H3V16H6M3,11H6V8H3V11M13,8V11H16V8H13M8,8V11H11V8H8M3,1H21A2,2 0 0,1 23,3V16A2,2 0 0,1 21,18H15V21H18V23H13V18H11V23H6V21H9V18H3A2,2 0 0,1 1,16V3A2,2 0 0,1 3,1Z";
var mdiSolarPower = "M11.45,2V5.55L15,3.77L11.45,2M10.45,8L8,10.46L11.75,11.71L10.45,8M2,11.45L3.77,15L5.55,11.45H2M10,2H2V10C2.57,10.17 3.17,10.25 3.77,10.25C7.35,10.26 10.26,7.35 10.27,3.75C10.26,3.16 10.17,2.57 10,2M17,22V16H14L19,7V13H22L17,22Z";
var mdiSolderingIron = "M4.86 4.03L2.03 6.86L5.21 10.04V12.87L6.63 14.28L12.28 8.63L10.87 7.21H8.04L4.86 4.03M17 6V7.5C18 7.5 18.85 8.33 18.85 9.35C18.85 10.37 18 11.2 17 11.2V12.7C19.24 12.7 21 14.53 21 16.77V21H22.5V16.76C22.5 14.54 21.22 12.62 19.35 11.73C19.97 11.12 20.35 10.28 20.35 9.35C20.35 7.5 18.85 6 17 6M11.93 11.1L9.1 13.93L14.05 18.88L14.76 18.17L16.88 20.29L19 21L18.29 18.88L16.17 16.76L16.88 16.05L11.93 11.1Z";
var mdiSolid = "M0,0H24V24H0";
var mdiSonyPlaystation = "M9.5,4.27C10.88,4.53 12.9,5.14 14,5.5C16.75,6.45 17.69,7.63 17.69,10.29C17.69,12.89 16.09,13.87 14.05,12.89V8.05C14.05,7.5 13.95,6.97 13.41,6.82C13,6.69 12.76,7.07 12.76,7.63V19.73L9.5,18.69V4.27M13.37,17.62L18.62,15.75C19.22,15.54 19.31,15.24 18.83,15.08C18.34,14.92 17.47,14.97 16.87,15.18L13.37,16.41V14.45L13.58,14.38C13.58,14.38 14.59,14 16,13.87C17.43,13.71 19.17,13.89 20.53,14.4C22.07,14.89 22.25,15.61 21.86,16.1C21.46,16.6 20.5,16.95 20.5,16.95L13.37,19.5V17.62M3.5,17.42C1.93,17 1.66,16.05 2.38,15.5C3.05,15 4.18,14.65 4.18,14.65L8.86,13V14.88L5.5,16.09C4.9,16.3 4.81,16.6 5.29,16.76C5.77,16.92 6.65,16.88 7.24,16.66L8.86,16.08V17.77L8.54,17.83C6.92,18.09 5.2,18 3.5,17.42Z";
var mdiSort = "M18 21L14 17H17V7H14L18 3L22 7H19V17H22M2 19V17H12V19M2 13V11H9V13M2 7V5H6V7H2Z";
var mdiSortAlphabeticalAscending = "M19 17H22L18 21L14 17H17V3H19M11 13V15L7.67 19H11V21H5V19L8.33 15H5V13M9 3H7C5.9 3 5 3.9 5 5V11H7V9H9V11H11V5C11 3.9 10.11 3 9 3M9 7H7V5H9Z";
var mdiSortAlphabeticalAscendingVariant = "M9.25 5L12.5 1.75L15.75 5H9.25M8.89 14.3H6L5.28 17H2.91L6 7H9L12.13 17H9.67L8.89 14.3M6.33 12.68H8.56L7.93 10.56L7.67 9.59L7.42 8.63H7.39L7.17 9.6L6.93 10.58L6.33 12.68M13.05 17V15.74L17.8 8.97V8.91H13.5V7H20.73V8.34L16.09 15V15.08H20.8V17H13.05Z";
var mdiSortAlphabeticalDescending = "M19 7H22L18 3L14 7H17V21H19M11 13V15L7.67 19H11V21H5V19L8.33 15H5V13M9 3H7C5.9 3 5 3.9 5 5V11H7V9H9V11H11V5C11 3.9 10.11 3 9 3M9 7H7V5H9Z";
var mdiSortAlphabeticalDescendingVariant = "M15.75 19L12.5 22.25L9.25 19H15.75M8.89 14.3H6L5.28 17H2.91L6 7H9L12.13 17H9.67L8.89 14.3M6.33 12.68H8.56L7.93 10.56L7.67 9.59L7.42 8.63H7.39L7.17 9.6L6.93 10.58L6.33 12.68M13.05 17V15.74L17.8 8.97V8.91H13.5V7H20.73V8.34L16.09 15V15.08H20.8V17H13.05Z";
var mdiSortAlphabeticalVariant = "M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75M8.89,14.3H6L5.28,17H2.91L6,7H9L12.13,17H9.67L8.89,14.3M6.33,12.68H8.56L7.93,10.56L7.67,9.59L7.42,8.63H7.39L7.17,9.6L6.93,10.58L6.33,12.68M13.05,17V15.74L17.8,8.97V8.91H13.5V7H20.73V8.34L16.09,15V15.08H20.8V17H13.05Z";
var mdiSortAscending = "M19 17H22L18 21L14 17H17V3H19M2 17H12V19H2M6 5V7H2V5M2 11H9V13H2V11Z";
var mdiSortBoolAscending = "M19 17H22L18 21L14 17H17V3H19V17M7 3C4.79 3 3 4.79 3 7S4.79 11 7 11 11 9.21 11 7 9.21 3 7 3M7 9C5.9 9 5 8.1 5 7S5.9 5 7 5 9 5.9 9 7 8.1 9 7 9M7 13C4.79 13 3 14.79 3 17S4.79 21 7 21 11 19.21 11 17 9.21 13 7 13Z";
var mdiSortBoolAscendingVariant = "M19 17H22L18 21L14 17H17V3H19V17M9 13H5C3.89 13 3 13.89 3 15V19C3 20.11 3.89 21 5 21H9C10.11 21 11 20.11 11 19V15C11 13.89 10.11 13 9 13M6.27 19.5L3.74 16.95L4.81 15.9L6.28 17.39L9.2 14.5L10.26 15.55L6.27 19.5M9 3H5C3.89 3 3 3.89 3 5V9C3 10.11 3.89 11 5 11H9C10.11 11 11 10.11 11 9V5C11 3.89 10.11 3 9 3M9 9H5V5H9V9Z";
var mdiSortBoolDescending = "M19 7H22L18 3L14 7H17V21H19M5 7C5 8.1 5.9 9 7 9C8.1 9 9 8.1 9 7C9 5.9 8.1 5 7 5C5.9 5 5 5.9 5 7M7 3C9.21 3 11 4.79 11 7C11 9.21 9.21 11 7 11C4.79 11 3 9.21 3 7C3 4.79 4.79 3 7 3M7 13C4.79 13 3 14.79 3 17C3 19.21 4.79 21 7 21C9.21 21 11 19.21 11 17C11 14.79 9.21 13 7 13Z";
var mdiSortBoolDescendingVariant = "M19 7H22L18 3L14 7H17V21H19M5 13C3.89 13 3 13.89 3 15V19C3 20.11 3.89 21 5 21H9C10.11 21 11 20.11 11 19V15C11 13.89 10.11 13 9 13M9.2 14.5L10.26 15.55L6.27 19.5L3.74 16.95L4.81 15.9L6.28 17.39M5 3C3.89 3 3 3.89 3 5V9C3 10.11 3.89 11 5 11H9C10.11 11 11 10.11 11 9V5C11 3.89 10.11 3 9 3M5 5H9V9H5Z";
var mdiSortCalendarAscending = "M21 17H24L20 21L16 17H19V3H21V17M8 16H11V13H8V16M13 5H12V3H10V5H6V3H4V5H3C1.89 5 1 5.89 1 7V18C1 19.11 1.89 20 3 20H13C14.11 20 15 19.11 15 18V7C15 5.89 14.11 5 13 5M3 18L3 11H13L13 18L3 18Z";
var mdiSortCalendarDescending = "M19 7H16L20 3L24 7H21V21H19V7M8 16H11V13H8V16M13 5H12V3H10V5H6V3H4V5H3C1.89 5 1 5.89 1 7V18C1 19.11 1.89 20 3 20H13C14.11 20 15 19.11 15 18V7C15 5.89 14.11 5 13 5M3 18L3 11H13L13 18L3 18Z";
var mdiSortClockAscending = "M20 17H23L19 21L15 17H18V3H20V17M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M10.19 14.53L7 12.69V9H8.5V11.82L10.94 13.23L10.19 14.53Z";
var mdiSortClockAscendingOutline = "M20 17H23L19 21L15 17H18V3H20V17M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M8 7.15C10.67 7.15 12.85 9.32 12.85 12C12.85 14.68 10.68 16.85 8 16.85C5.32 16.85 3.15 14.68 3.15 12C3.15 9.32 5.32 7.15 8 7.15M7 9V12.69L10.19 14.53L10.94 13.23L8.5 11.82V9";
var mdiSortClockDescending = "M18 7H15L19 3L23 7H20V21H18V7M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M10.19 14.53L7 12.69V9H8.5V11.82L10.94 13.23L10.19 14.53Z";
var mdiSortClockDescendingOutline = "M18 7H15L19 3L23 7H20V21H18V7M8 5C4.14 5 1 8.13 1 12C1 15.87 4.13 19 8 19C11.86 19 15 15.87 15 12C15 8.13 11.87 5 8 5M8 7.15C10.67 7.15 12.85 9.32 12.85 12C12.85 14.68 10.68 16.85 8 16.85C5.32 16.85 3.15 14.68 3.15 12C3.15 9.32 5.32 7.15 8 7.15M7 9V12.69L10.19 14.53L10.94 13.23L8.5 11.82V9";
var mdiSortDescending = "M19 7H22L18 3L14 7H17V21H19M2 17H12V19H2M6 5V7H2V5M2 11H9V13H2V11Z";
var mdiSortNumericAscending = "M19 17H22L18 21L14 17H17V3H19V17M9 13H7C5.9 13 5 13.9 5 15V16C5 17.11 5.9 18 7 18H9V19H5V21H9C10.11 21 11 20.11 11 19V15C11 13.9 10.11 13 9 13M9 16H7V15H9V16M9 3H7C5.9 3 5 3.9 5 5V9C5 10.11 5.9 11 7 11H9C10.11 11 11 10.11 11 9V5C11 3.9 10.11 3 9 3M9 9H7V5H9V9Z";
var mdiSortNumericAscendingVariant = "M7.78 7C9.08 7.04 10 7.53 10.57 8.46C11.13 9.4 11.41 10.56 11.39 11.95C11.4 13.5 11.09 14.73 10.5 15.62C9.88 16.5 8.95 16.97 7.71 17C6.45 16.96 5.54 16.5 4.96 15.56C4.38 14.63 4.09 13.45 4.09 12S4.39 9.36 5 8.44C5.59 7.5 6.5 7.04 7.78 7M7.75 8.63C7.31 8.63 6.96 8.9 6.7 9.46C6.44 10 6.32 10.87 6.32 12C6.31 13.15 6.44 14 6.69 14.54C6.95 15.1 7.31 15.37 7.77 15.37C8.69 15.37 9.16 14.24 9.17 12C9.17 9.77 8.7 8.65 7.75 8.63M13.33 17V15.22L13.76 15.24L14.3 15.22L15.34 15.03C15.68 14.92 16 14.78 16.26 14.58C16.59 14.35 16.86 14.08 17.07 13.76C17.29 13.45 17.44 13.12 17.53 12.78L17.5 12.77C17.05 13.19 16.38 13.4 15.47 13.41C14.62 13.4 13.91 13.15 13.34 12.65S12.5 11.43 12.46 10.5C12.47 9.5 12.81 8.69 13.47 8.03C14.14 7.37 15 7.03 16.12 7C17.37 7.04 18.29 7.45 18.88 8.24C19.47 9 19.76 10 19.76 11.19C19.75 12.15 19.61 13 19.32 13.76C19.03 14.5 18.64 15.13 18.12 15.64C17.66 16.06 17.11 16.38 16.47 16.61C15.83 16.83 15.12 16.96 14.34 17H13.33M16.06 8.63C15.65 8.64 15.32 8.8 15.06 9.11C14.81 9.42 14.68 9.84 14.68 10.36C14.68 10.8 14.8 11.16 15.03 11.46C15.27 11.77 15.63 11.92 16.11 11.93C16.43 11.93 16.7 11.86 16.92 11.74C17.14 11.61 17.3 11.46 17.41 11.28C17.5 11.17 17.53 10.97 17.53 10.71C17.54 10.16 17.43 9.69 17.2 9.28C16.97 8.87 16.59 8.65 16.06 8.63M9.25 5L12.5 1.75L15.75 5H9.25";
var mdiSortNumericDescending = "M19 7H22L18 3L14 7H17V21H19M9 21H5V19H9V18H7C5.9 18 5 17.11 5 16V15C5 13.9 5.9 13 7 13H9C10.11 13 11 13.9 11 15V19C11 20.11 10.11 21 9 21M9 15H7V16H9M7 3H9C10.11 3 11 3.9 11 5V9C11 10.11 10.11 11 9 11H7C5.9 11 5 10.11 5 9V5C5 3.9 5.9 3 7 3M7 9H9V5H7Z";
var mdiSortNumericDescendingVariant = "M7.78 7C9.08 7.04 10 7.53 10.57 8.46C11.13 9.4 11.41 10.56 11.39 11.95C11.4 13.5 11.09 14.73 10.5 15.62C9.88 16.5 8.95 16.97 7.71 17C6.45 16.96 5.54 16.5 4.96 15.56C4.38 14.63 4.09 13.45 4.09 12S4.39 9.36 5 8.44C5.59 7.5 6.5 7.04 7.78 7M7.75 8.63C7.31 8.63 6.96 8.9 6.7 9.46C6.44 10 6.32 10.87 6.32 12C6.31 13.15 6.44 14 6.69 14.54C6.95 15.1 7.31 15.37 7.77 15.37C8.69 15.37 9.16 14.24 9.17 12C9.17 9.77 8.7 8.65 7.75 8.63M13.33 17V15.22L13.76 15.24L14.3 15.22L15.34 15.03C15.68 14.92 16 14.78 16.26 14.58C16.59 14.35 16.86 14.08 17.07 13.76C17.29 13.45 17.44 13.12 17.53 12.78L17.5 12.77C17.05 13.19 16.38 13.4 15.47 13.41C14.62 13.4 13.91 13.15 13.34 12.65S12.5 11.43 12.46 10.5C12.47 9.5 12.81 8.69 13.47 8.03C14.14 7.37 15 7.03 16.12 7C17.37 7.04 18.29 7.45 18.88 8.24C19.47 9 19.76 10 19.76 11.19C19.75 12.15 19.61 13 19.32 13.76C19.03 14.5 18.64 15.13 18.12 15.64C17.66 16.06 17.11 16.38 16.47 16.61C15.83 16.83 15.12 16.96 14.34 17H13.33M16.06 8.63C15.65 8.64 15.32 8.8 15.06 9.11C14.81 9.42 14.68 9.84 14.68 10.36C14.68 10.8 14.8 11.16 15.03 11.46C15.27 11.77 15.63 11.92 16.11 11.93C16.43 11.93 16.7 11.86 16.92 11.74C17.14 11.61 17.3 11.46 17.41 11.28C17.5 11.17 17.53 10.97 17.53 10.71C17.54 10.16 17.43 9.69 17.2 9.28C16.97 8.87 16.59 8.65 16.06 8.63M15.75 19L12.5 22.25L9.25 19H15.75Z";
var mdiSortNumericVariant = "M7.78,7C9.08,7.04 10,7.53 10.57,8.46C11.13,9.4 11.41,10.56 11.39,11.95C11.4,13.5 11.09,14.73 10.5,15.62C9.88,16.5 8.95,16.97 7.71,17C6.45,16.96 5.54,16.5 4.96,15.56C4.38,14.63 4.09,13.45 4.09,12C4.09,10.55 4.39,9.36 5,8.44C5.59,7.5 6.5,7.04 7.78,7M7.75,8.63C7.31,8.63 6.96,8.9 6.7,9.46C6.44,10 6.32,10.87 6.32,12C6.31,13.15 6.44,14 6.69,14.54C6.95,15.1 7.31,15.37 7.77,15.37C8.69,15.37 9.16,14.24 9.17,12C9.17,9.77 8.7,8.65 7.75,8.63M13.33,17V15.22L13.76,15.24L14.3,15.22L15.34,15.03C15.68,14.92 16,14.78 16.26,14.58C16.59,14.35 16.86,14.08 17.07,13.76C17.29,13.45 17.44,13.12 17.53,12.78L17.5,12.77C17.05,13.19 16.38,13.4 15.47,13.41C14.62,13.4 13.91,13.15 13.34,12.65C12.77,12.15 12.5,11.43 12.46,10.5C12.47,9.5 12.81,8.69 13.47,8.03C14.14,7.37 15,7.03 16.12,7C17.37,7.04 18.29,7.45 18.88,8.24C19.47,9 19.76,10 19.76,11.19C19.75,12.15 19.61,13 19.32,13.76C19.03,14.5 18.64,15.13 18.12,15.64C17.66,16.06 17.11,16.38 16.47,16.61C15.83,16.83 15.12,16.96 14.34,17H13.33M16.06,8.63C15.65,8.64 15.32,8.8 15.06,9.11C14.81,9.42 14.68,9.84 14.68,10.36C14.68,10.8 14.8,11.16 15.03,11.46C15.27,11.77 15.63,11.92 16.11,11.93C16.43,11.93 16.7,11.86 16.92,11.74C17.14,11.61 17.3,11.46 17.41,11.28C17.5,11.17 17.53,10.97 17.53,10.71C17.54,10.16 17.43,9.69 17.2,9.28C16.97,8.87 16.59,8.65 16.06,8.63M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75Z";
var mdiSortReverseVariant = "M3 11H15V13H3M3 18V16H21V18M3 6H9V8H3Z";
var mdiSortVariant = "M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z";
var mdiSortVariantLock = "M3,13V11H15V13H3M3,6H21V8H3V6M3,18V16H9V18H3M22,22H14V18H15V17A3,3 0 0,1 18,14A3,3 0 0,1 21,17V18H22V22M18,16A1,1 0 0,0 17,17V18H19V17A1,1 0 0,0 18,16Z";
var mdiSortVariantLockOpen = "M3,13V11H15V13H3M3,6H21V8H3V6M3,18V16H9V18H3M22,22H14V18H15V16A3,3 0 0,1 18,13A3,3 0 0,1 21,16H19A1,1 0 0,0 18,15A1,1 0 0,0 17,16V18H22V22Z";
var mdiSortVariantRemove = "M3 13H15V11H3M3 6V8H21V6M3 18H9V16H3V18M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.47 21.12L17.59 19L15.47 16.88L16.88 15.47L19 17.59L21.12 15.46L22.54 16.88";
var mdiSoundcloud = "M11.56,8.87V17H20.32V17C22.17,16.87 23,15.73 23,14.33C23,12.85 21.88,11.66 20.38,11.66C20,11.66 19.68,11.74 19.35,11.88C19.11,9.54 17.12,7.71 14.67,7.71C13.5,7.71 12.39,8.15 11.56,8.87M10.68,9.89C10.38,9.71 10.06,9.57 9.71,9.5V17H11.1V9.34C10.95,9.5 10.81,9.7 10.68,9.89M8.33,9.35V17H9.25V9.38C9.06,9.35 8.87,9.34 8.67,9.34C8.55,9.34 8.44,9.34 8.33,9.35M6.5,10V17H7.41V9.54C7.08,9.65 6.77,9.81 6.5,10M4.83,12.5C4.77,12.5 4.71,12.44 4.64,12.41V17H5.56V10.86C5.19,11.34 4.94,11.91 4.83,12.5M2.79,12.22V16.91C3,16.97 3.24,17 3.5,17H3.72V12.14C3.64,12.13 3.56,12.12 3.5,12.12C3.24,12.12 3,12.16 2.79,12.22M1,14.56C1,15.31 1.34,15.97 1.87,16.42V12.71C1.34,13.15 1,13.82 1,14.56Z";
var mdiSourceBranch = "M13,14C9.64,14 8.54,15.35 8.18,16.24C9.25,16.7 10,17.76 10,19A3,3 0 0,1 7,22A3,3 0 0,1 4,19C4,17.69 4.83,16.58 6,16.17V7.83C4.83,7.42 4,6.31 4,5A3,3 0 0,1 7,2A3,3 0 0,1 10,5C10,6.31 9.17,7.42 8,7.83V13.12C8.88,12.47 10.16,12 12,12C14.67,12 15.56,10.66 15.85,9.77C14.77,9.32 14,8.25 14,7A3,3 0 0,1 17,4A3,3 0 0,1 20,7C20,8.34 19.12,9.5 17.91,9.86C17.65,11.29 16.68,14 13,14M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M17,6A1,1 0 0,0 16,7A1,1 0 0,0 17,8A1,1 0 0,0 18,7A1,1 0 0,0 17,6Z";
var mdiSourceBranchCheck = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M16.75 21.16L14 18.16L15.16 17L16.75 18.59L20.34 15L21.5 16.41L16.75 21.16";
var mdiSourceBranchMinus = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M14 17V19H22V17H14Z";
var mdiSourceBranchPlus = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z";
var mdiSourceBranchRefresh = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M18 14C19.1 14 20.1 14.4 20.8 15.2L22 14V18H18L19.8 16.2C19.3 15.8 18.7 15.5 18 15.5C16.6 15.5 15.5 16.6 15.5 18S16.6 20.5 18 20.5C18.8 20.5 19.5 20.1 20 19.5H21.7C21.1 21 19.7 22 18 22C15.8 22 14 20.2 14 18S15.8 14 18 14Z";
var mdiSourceBranchRemove = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M20.12 14.46L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.54L18 19.41L20.12 21.54L21.54 20.12L19.41 18L21.54 15.88L20.12 14.46Z";
var mdiSourceBranchSync = "M13 14C9.64 14 8.54 15.35 8.18 16.24C9.25 16.7 10 17.76 10 19C10 20.66 8.66 22 7 22S4 20.66 4 19C4 17.69 4.83 16.58 6 16.17V7.83C4.83 7.42 4 6.31 4 5C4 3.34 5.34 2 7 2S10 3.34 10 5C10 6.31 9.17 7.42 8 7.83V13.12C8.88 12.47 10.16 12 12 12C14.67 12 15.56 10.66 15.85 9.77C14.77 9.32 14 8.25 14 7C14 5.34 15.34 4 17 4S20 5.34 20 7C20 8.34 19.12 9.5 17.91 9.86C17.65 11.29 16.68 14 13 14M7 18C6.45 18 6 18.45 6 19S6.45 20 7 20 8 19.55 8 19 7.55 18 7 18M7 4C6.45 4 6 4.45 6 5S6.45 6 7 6 8 5.55 8 5 7.55 4 7 4M17 6C16.45 6 16 6.45 16 7S16.45 8 17 8 18 7.55 18 7 17.55 6 17 6M18 13V14.5C20.21 14.5 22 16.29 22 18.5C22 19.32 21.75 20.08 21.33 20.71L20.24 19.62C20.41 19.28 20.5 18.9 20.5 18.5C20.5 17.12 19.38 16 18 16V17.5L15.75 15.25L15.72 15.22C15.78 15.17 15.85 15.13 18 13M18 24V22.5C15.79 22.5 14 20.71 14 18.5C14 17.68 14.25 16.92 14.67 16.29L15.76 17.38C15.59 17.72 15.5 18.1 15.5 18.5C15.5 19.88 16.62 21 18 21V19.5L20.25 21.75L20.28 21.78C20.22 21.83 20.15 21.87 18 24";
var mdiSourceCommit = "M17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z";
var mdiSourceCommitEnd = "M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z";
var mdiSourceCommitEndLocal = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11Z";
var mdiSourceCommitLocal = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11M11,21V19H13V21H11Z";
var mdiSourceCommitNextLocal = "M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z";
var mdiSourceCommitStart = "M12,7A5,5 0 0,1 17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z";
var mdiSourceCommitStartNextLocal = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z";
var mdiSourceFork = "M6,2A3,3 0 0,1 9,5C9,6.28 8.19,7.38 7.06,7.81C7.15,8.27 7.39,8.83 8,9.63C9,10.92 11,12.83 12,14.17C13,12.83 15,10.92 16,9.63C16.61,8.83 16.85,8.27 16.94,7.81C15.81,7.38 15,6.28 15,5A3,3 0 0,1 18,2A3,3 0 0,1 21,5C21,6.32 20.14,7.45 18.95,7.85C18.87,8.37 18.64,9 18,9.83C17,11.17 15,13.08 14,14.38C13.39,15.17 13.15,15.73 13.06,16.19C14.19,16.62 15,17.72 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.72 9.81,16.62 10.94,16.19C10.85,15.73 10.61,15.17 10,14.38C9,13.08 7,11.17 6,9.83C5.36,9 5.13,8.37 5.05,7.85C3.86,7.45 3,6.32 3,5A3,3 0 0,1 6,2M6,4A1,1 0 0,0 5,5A1,1 0 0,0 6,6A1,1 0 0,0 7,5A1,1 0 0,0 6,4M18,4A1,1 0 0,0 17,5A1,1 0 0,0 18,6A1,1 0 0,0 19,5A1,1 0 0,0 18,4M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z";
var mdiSourceMerge = "M7,3A3,3 0 0,1 10,6C10,7.29 9.19,8.39 8.04,8.81C8.58,13.81 13.08,14.77 15.19,14.96C15.61,13.81 16.71,13 18,13A3,3 0 0,1 21,16A3,3 0 0,1 18,19C16.69,19 15.57,18.16 15.16,17C10.91,16.8 9.44,15.19 8,13.39V15.17C9.17,15.58 10,16.69 10,18A3,3 0 0,1 7,21A3,3 0 0,1 4,18C4,16.69 4.83,15.58 6,15.17V8.83C4.83,8.42 4,7.31 4,6A3,3 0 0,1 7,3M7,5A1,1 0 0,0 6,6A1,1 0 0,0 7,7A1,1 0 0,0 8,6A1,1 0 0,0 7,5M7,17A1,1 0 0,0 6,18A1,1 0 0,0 7,19A1,1 0 0,0 8,18A1,1 0 0,0 7,17M18,15A1,1 0 0,0 17,16A1,1 0 0,0 18,17A1,1 0 0,0 19,16A1,1 0 0,0 18,15Z";
var mdiSourcePull = "M6,3A3,3 0 0,1 9,6C9,7.31 8.17,8.42 7,8.83V15.17C8.17,15.58 9,16.69 9,18A3,3 0 0,1 6,21A3,3 0 0,1 3,18C3,16.69 3.83,15.58 5,15.17V8.83C3.83,8.42 3,7.31 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M21,18A3,3 0 0,1 18,21A3,3 0 0,1 15,18C15,16.69 15.83,15.58 17,15.17V7H15V10.25L10.75,6L15,1.75V5H17A2,2 0 0,1 19,7V15.17C20.17,15.58 21,16.69 21,18M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17Z";
var mdiSourceRepository = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12.75,13.5C15.5,13.5 16.24,11.47 16.43,10.4C17.34,10.11 18,9.26 18,8.25C18,7 17,6 15.75,6C14.5,6 13.5,7 13.5,8.25C13.5,9.19 14.07,10 14.89,10.33C14.67,11 14,12 12,12C10.62,12 9.66,12.35 9,12.84V8.87C9.87,8.56 10.5,7.73 10.5,6.75C10.5,5.5 9.5,4.5 8.25,4.5C7,4.5 6,5.5 6,6.75C6,7.73 6.63,8.56 7.5,8.87V15.13C6.63,15.44 6,16.27 6,17.25C6,18.5 7,19.5 8.25,19.5C9.5,19.5 10.5,18.5 10.5,17.25C10.5,16.32 9.94,15.5 9.13,15.18C9.41,14.5 10.23,13.5 12.75,13.5M8.25,16.5A0.75,0.75 0 0,1 9,17.25A0.75,0.75 0 0,1 8.25,18A0.75,0.75 0 0,1 7.5,17.25A0.75,0.75 0 0,1 8.25,16.5M8.25,6A0.75,0.75 0 0,1 9,6.75A0.75,0.75 0 0,1 8.25,7.5A0.75,0.75 0 0,1 7.5,6.75A0.75,0.75 0 0,1 8.25,6M15.75,7.5A0.75,0.75 0 0,1 16.5,8.25A0.75,0.75 0 0,1 15.75,9A0.75,0.75 0 0,1 15,8.25A0.75,0.75 0 0,1 15.75,7.5Z";
var mdiSourceRepositoryMultiple = "M8,0H20A2,2 0 0,1 22,2V18A2,2 0 0,1 20,20H8A2,2 0 0,1 6,18V2A2,2 0 0,1 8,0M14.75,11.5C17.5,11.5 18.24,9.47 18.43,8.4C19.34,8.11 20,7.26 20,6.25C20,5 19,4 17.75,4C16.5,4 15.5,5 15.5,6.25C15.5,7.19 16.07,8 16.89,8.33C16.67,9 16,10 14,10C12.62,10 11.66,10.35 11,10.84V6.87C11.87,6.56 12.5,5.73 12.5,4.75C12.5,3.5 11.5,2.5 10.25,2.5C9,2.5 8,3.5 8,4.75C8,5.73 8.63,6.56 9.5,6.87V13.13C8.63,13.44 8,14.27 8,15.25C8,16.5 9,17.5 10.25,17.5C11.5,17.5 12.5,16.5 12.5,15.25C12.5,14.32 11.94,13.5 11.13,13.18C11.41,12.5 12.23,11.5 14.75,11.5M10.25,14.5A0.75,0.75 0 0,1 11,15.25A0.75,0.75 0 0,1 10.25,16A0.75,0.75 0 0,1 9.5,15.25A0.75,0.75 0 0,1 10.25,14.5M10.25,4A0.75,0.75 0 0,1 11,4.75A0.75,0.75 0 0,1 10.25,5.5A0.75,0.75 0 0,1 9.5,4.75A0.75,0.75 0 0,1 10.25,4M17.75,5.5A0.75,0.75 0 0,1 18.5,6.25A0.75,0.75 0 0,1 17.75,7A0.75,0.75 0 0,1 17,6.25A0.75,0.75 0 0,1 17.75,5.5M16,22V24H4A2,2 0 0,1 2,22V6H4V22H16Z";
var mdiSoySauce = "M13.9,7.5C13.9,6.8 14.1,6.3 14.2,6H14.8L15.7,3.5H16.5V2H7.5V3.5H8.3L9.2,6H9.8C10,6.3 10.1,6.8 10.1,7.5C10.1,8.8 6,13.7 6,17.6V19.6C6,21 8.7,21.9 12,21.9C15.3,21.9 18,21 18,19.6V17.6C18,13.7 13.9,8.8 13.9,7.5M12,15A2,2 0 0,1 10,13A2,2 0 0,1 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15Z";
var mdiSoySauceOff = "M22.1 21.5L2.4 1.7L1.1 3L8.6 10.5C7.5 12.6 6 15.3 6 17.6V19.6C6 21 8.7 21.9 12 21.9C15.1 21.9 17.7 21.1 18 19.9L20.9 22.8L22.1 21.5M12 15C10.9 15 10 14.1 10 13C10 12.7 10.1 12.4 10.2 12.1L12.9 14.8C12.6 14.9 12.3 15 12 15M8.3 3.5H7.5V2H16.5V3.5H15.7L14.8 6H14.2C14.1 6.3 13.9 6.8 13.9 7.5C13.9 8.4 15.9 11 17.1 13.9L10.1 6.9C10 6.5 9.9 6.2 9.8 6H9.2L8.3 3.5Z";
var mdiSpa = "M15.5,9.63C15.31,6.84 14.18,4.12 12.06,2C9.92,4.14 8.74,6.86 8.5,9.63C9.79,10.31 10.97,11.19 12,12.26C13.03,11.2 14.21,10.32 15.5,9.63M12,15.45C9.85,12.17 6.18,10 2,10C2,20 11.32,21.89 12,22C12.68,21.88 22,20 22,10C17.82,10 14.15,12.17 12,15.45Z";
var mdiSpaOutline = "M15.5,9.63C14.21,10.32 13.03,11.2 12,12.26C10.97,11.19 9.79,10.31 8.5,9.63C8.74,6.86 9.92,4.14 12.06,2C14.18,4.12 15.31,6.84 15.5,9.63M12,15.45C14.15,12.17 17.82,10 22,10C22,20 12.68,21.88 12,22C11.32,21.89 2,20 2,10C6.18,10 9.85,12.17 12,15.45M12.05,5.19C11.39,6.23 10.93,7.38 10.68,8.58L12,9.55L13.35,8.57C13.12,7.37 12.68,6.22 12.05,5.19M12,19.97C12,19.97 18,19 19.74,12.25C14,14 12,19.1 12,19.1C12,19.1 9,13 4.26,12.26C6,19 12,19.97 12,19.97Z";
var mdiSpaceInvaders = "M7,6H5V4H7V6M17,6H19V4H17V6M23,12V18H21V14H19V18H17V16H7V18H5V14H3V18H1V12H3V10H5V8H7V6H9V8H15V6H17V8H19V10H21V12H23M15,10V12H17V10H15M7,12H9V10H7V12M11,18H7V20H11V18M17,18H13V20H17V18Z";
var mdiSpaceStation = "M15.5 19V21H13.73C13.39 21.6 12.74 22 12 22C11.26 22 10.61 21.6 10.27 21H8.5V19H10.27C10.44 18.7 10.7 18.44 11 18.27V17H10C9.45 17 9 16.55 9 16V13H6V17C6 17.55 5.55 18 5 18H3C2.45 18 2 17.55 2 17V8C2 7.45 2.45 7 3 7H5C5.55 7 6 7.45 6 8V11H9V8C9 7.45 9.45 7 10 7H11V6H10C9.45 6 9 5.55 9 5V4C9 3.45 9.45 3 10 3H14C14.55 3 15 3.45 15 4V5C15 5.55 14.55 6 14 6H13V7H14C14.55 7 15 7.45 15 8V11H18V8C18 7.45 18.45 7 19 7H21C21.55 7 22 7.45 22 8V17C22 17.55 21.55 18 21 18H19C18.45 18 18 17.55 18 17V13H15V16C15 16.55 14.55 17 14 17H13V18.27C13.3 18.44 13.56 18.7 13.73 19H15.5M3 16V17H5V16H3M3 14V15H5V14H3M3 12V13H5V12H3M3 10V11H5V10H3M3 8V9H5V8H3M19 16V17H21V16H19M19 14V15H21V14H19M19 12V13H21V12H19M19 10V11H21V10H19M19 8V9H21V8H19Z";
var mdiSpade = "M15.71,1.22L12.88,4.05C12.1,4.83 12.1,6.09 12.88,6.87L14.3,8.29L10.06,12.53L7.58,10.06L1.22,16.42L7.58,22.78L13.94,16.42L11.47,13.94L15.71,9.7L17.13,11.12C17.91,11.9 19.17,11.9 19.95,11.12L22.78,8.29L15.71,1.22M15.71,4.05L19.95,8.29L18.54,9.7L14.3,5.46L15.71,4.05Z";
var mdiSparkles = "M10.6 9.6L9 15L7.4 9.6L2 8L7.4 6.4L9 1L10.6 6.4L16 8L10.6 9.6M17 14.2L21 12L18.8 16L21 20L17 17.8L13 20L15.2 16L13 12L17 14.2M10 16L8.3 19L10 22L7 20.3L4 22L5.7 19L4 16L7 17.7L10 16";
var mdiSpeaker = "M12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12M12,20A5,5 0 0,1 7,15A5,5 0 0,1 12,10A5,5 0 0,1 17,15A5,5 0 0,1 12,20M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M17,2H7C5.89,2 5,2.89 5,4V20A2,2 0 0,0 7,22H17A2,2 0 0,0 19,20V4C19,2.89 18.1,2 17,2Z";
var mdiSpeakerBluetooth = "M4,3A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21H12A2,2 0 0,0 14,19V5A2,2 0 0,0 12,3H4M8,5A2,2 0 0,1 10,7A2,2 0 0,1 8,9A2,2 0 0,1 6,7A2,2 0 0,1 8,5M19,7V10.79L16.71,8.5L16,9.21L18.79,12L16,14.79L16.71,15.5L19,13.21V17H19.5L22.35,14.14L20.21,12L22.35,9.85L19.5,7H19M20,8.91L20.94,9.85L20,10.79V8.91M8,11A4,4 0 0,1 12,15A4,4 0 0,1 8,19A4,4 0 0,1 4,15A4,4 0 0,1 8,11M8,13A2,2 0 0,0 6,15A2,2 0 0,0 8,17A2,2 0 0,0 10,15A2,2 0 0,0 8,13M20,13.21L20.94,14.14L20,15.08V13.21Z";
var mdiSpeakerMultiple = "M14,10A3,3 0 0,0 11,13A3,3 0 0,0 14,16A3,3 0 0,0 17,13A3,3 0 0,0 14,10M14,18A5,5 0 0,1 9,13A5,5 0 0,1 14,8A5,5 0 0,1 19,13A5,5 0 0,1 14,18M14,2A2,2 0 0,1 16,4A2,2 0 0,1 14,6A2,2 0 0,1 12,4A2,2 0 0,1 14,2M19,0H9A2,2 0 0,0 7,2V18A2,2 0 0,0 9,20H19A2,2 0 0,0 21,18V2A2,2 0 0,0 19,0M5,22H17V24H5A2,2 0 0,1 3,22V4H5";
var mdiSpeakerOff = "M2,5.27L3.28,4L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.89,22 5,21.1 5,20V8.27L2,5.27M12,18A3,3 0 0,1 9,15C9,14.24 9.28,13.54 9.75,13L8.33,11.6C7.5,12.5 7,13.69 7,15A5,5 0 0,0 12,20C13.31,20 14.5,19.5 15.4,18.67L14,17.25C13.45,17.72 12.76,18 12,18M17,15A5,5 0 0,0 12,10H11.82L5.12,3.3C5.41,2.54 6.14,2 7,2H17A2,2 0 0,1 19,4V17.18L17,15.17V15M12,4C10.89,4 10,4.89 10,6A2,2 0 0,0 12,8A2,2 0 0,0 14,6C14,4.89 13.1,4 12,4Z";
var mdiSpeakerWireless = "M20.07,19.07L18.66,17.66C20.11,16.22 21,14.21 21,12C21,9.78 20.11,7.78 18.66,6.34L20.07,4.93C21.88,6.74 23,9.24 23,12C23,14.76 21.88,17.26 20.07,19.07M17.24,16.24L15.83,14.83C16.55,14.11 17,13.11 17,12C17,10.89 16.55,9.89 15.83,9.17L17.24,7.76C18.33,8.85 19,10.35 19,12C19,13.65 18.33,15.15 17.24,16.24M4,3H12A2,2 0 0,1 14,5V19A2,2 0 0,1 12,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M8,5A2,2 0 0,0 6,7A2,2 0 0,0 8,9A2,2 0 0,0 10,7A2,2 0 0,0 8,5M8,11A4,4 0 0,0 4,15A4,4 0 0,0 8,19A4,4 0 0,0 12,15A4,4 0 0,0 8,11M8,13A2,2 0 0,1 10,15A2,2 0 0,1 8,17A2,2 0 0,1 6,15A2,2 0 0,1 8,13Z";
var mdiSpeedometer = "M12,16A3,3 0 0,1 9,13C9,11.88 9.61,10.9 10.5,10.39L20.21,4.77L14.68,14.35C14.18,15.33 13.17,16 12,16M12,3C13.81,3 15.5,3.5 16.97,4.32L14.87,5.53C14,5.19 13,5 12,5A8,8 0 0,0 4,13C4,15.21 4.89,17.21 6.34,18.65H6.35C6.74,19.04 6.74,19.67 6.35,20.06C5.96,20.45 5.32,20.45 4.93,20.07V20.07C3.12,18.26 2,15.76 2,13A10,10 0 0,1 12,3M22,13C22,15.76 20.88,18.26 19.07,20.07V20.07C18.68,20.45 18.05,20.45 17.66,20.06C17.27,19.67 17.27,19.04 17.66,18.65V18.65C19.11,17.2 20,15.21 20,13C20,12 19.81,11 19.46,10.1L20.67,8C21.5,9.5 22,11.18 22,13Z";
var mdiSpeedometerMedium = "M12 1.38L9.14 12.06C8.8 13.1 9.04 14.29 9.86 15.12C11.04 16.29 12.94 16.29 14.11 15.12C14.9 14.33 15.16 13.2 14.89 12.21M14.6 3.35L15.22 5.68C18.04 6.92 20 9.73 20 13C20 15.21 19.11 17.21 17.66 18.65H17.65C17.26 19.04 17.26 19.67 17.65 20.06C18.04 20.45 18.68 20.45 19.07 20.07C20.88 18.26 22 15.76 22 13C22 8.38 18.86 4.5 14.6 3.35M9.4 3.36C5.15 4.5 2 8.4 2 13C2 15.76 3.12 18.26 4.93 20.07C5.32 20.45 5.95 20.45 6.34 20.06C6.73 19.67 6.73 19.04 6.34 18.65C4.89 17.2 4 15.21 4 13C4 9.65 5.94 6.86 8.79 5.65";
var mdiSpeedometerSlow = "M12 16C13.66 16 15 14.66 15 13C15 11.88 14.39 10.9 13.5 10.39L3.79 4.77L9.32 14.35C9.82 15.33 10.83 16 12 16M12 3C10.19 3 8.5 3.5 7.03 4.32L9.13 5.53C10 5.19 11 5 12 5C16.42 5 20 8.58 20 13C20 15.21 19.11 17.21 17.66 18.65H17.65C17.26 19.04 17.26 19.67 17.65 20.06C18.04 20.45 18.68 20.45 19.07 20.07C20.88 18.26 22 15.76 22 13C22 7.5 17.5 3 12 3M2 13C2 15.76 3.12 18.26 4.93 20.07C5.32 20.45 5.95 20.45 6.34 20.06C6.73 19.67 6.73 19.04 6.34 18.65C4.89 17.2 4 15.21 4 13C4 12 4.19 11 4.54 10.1L3.33 8C2.5 9.5 2 11.18 2 13Z";
var mdiSpellcheck = "M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13M6.43,11L8.5,5.5L10.57,11M12.45,16H14.54L9.43,3H7.57L2.46,16H4.55L5.67,13H11.31L12.45,16Z";
var mdiSpider = "M21.29 16.71L22.71 15.29L19.5 12.11L16.5 11.26L18.41 11L22.6 7.8L21.4 6.2L17.59 9.05L14.91 9.5L18.11 6.31L17 1.76L15 2.24L15.86 5.69L14.76 6.83A3 3 0 0 0 9.24 6.83L8.11 5.69L9 2.24L7 1.76L5.89 6.31L9.09 9.5L6.4 9.05L2.6 6.2L1.4 7.8L5.6 11L7.46 11.31L4.46 12.16L1.29 15.29L2.71 16.71L5.5 13.89L7.87 13.22L4 16.54V22H6V17.46L7.56 16.12A4.5 4.5 0 0 0 16.44 16.12L18 17.46V22H20V16.54L16.13 13.22L18.5 13.89Z";
var mdiSpiderThread = "M13 2V7.08A5.47 5.47 0 0 0 12 7A5.47 5.47 0 0 0 11 7.08V2M16.9 15A5 5 0 0 1 16.73 15.55L20 17.42V22H18V18.58L15.74 17.29A4.94 4.94 0 0 1 8.26 17.29L6 18.58V22H4V17.42L7.27 15.55A5 5 0 0 1 7.1 15H5.3L2.55 16.83L1.45 15.17L4.7 13H7.1A5 5 0 0 1 7.37 12.12L5.81 11.12L2.24 12L1.76 10L6.19 8.92L8.5 10.45A5 5 0 0 1 15.5 10.45L17.77 8.92L22.24 10L21.76 12L18.19 11.11L16.63 12.11A5 5 0 0 1 16.9 13H19.3L22.55 15.16L21.45 16.82L18.7 15M11 14A1 1 0 1 0 10 15A1 1 0 0 0 11 14M15 14A1 1 0 1 0 14 15A1 1 0 0 0 15 14Z";
var mdiSpiderWeb = "M13.62,13.28L15.26,15.54C15.29,15 15.38,14.47 15.56,13.93C15.74,13.37 16,12.86 16.3,12.41L13.62,13.28M17.77,19C17.75,17.68 17.95,16.27 18.41,14.85C18.88,13.42 19.56,12.14 20.36,11.09L18.32,11.75C17.54,12.26 16.87,13.14 16.5,14.23C16.17,15.29 16.18,16.36 16.5,17.22L17.77,19M19.25,21C18.75,21.46 18.21,21.86 17.63,22.2L17.31,21.76C15.9,21 14.04,20.5 12,20.5C9.96,20.5 8.1,21 6.69,21.76L6.37,22.2C5.79,21.86 5.25,21.46 4.75,21L5,20.69C5.33,19.08 5.22,17.12 4.58,15.14C3.94,13.19 2.9,11.56 1.71,10.46L1.27,10.32C1.42,9.66 1.63,9 1.89,8.41L2.29,8.54C3.92,8.37 5.74,7.65 7.43,6.43C9.09,5.22 10.32,3.73 11,2.26V1.79L12,1.75L13,1.79V2.21C13.67,3.71 14.91,5.23 16.6,6.45C18.26,7.66 20.06,8.37 21.67,8.56L22.11,8.41C22.37,9 22.58,9.66 22.73,10.32L22.23,10.5C21.04,11.58 20,13.21 19.37,15.16C18.74,17.09 18.62,19 18.92,20.57L19.25,21M11,11.37V8.5C10.66,8.92 10.26,9.32 9.78,9.67C9.29,10 8.77,10.29 8.25,10.5L11,11.37M11,4.22C10.25,5.31 9.24,6.35 8,7.24C6.78,8.14 5.46,8.78 4.18,9.16L6.15,9.8C7.11,9.88 8.22,9.56 9.19,8.86C10.13,8.18 10.76,7.27 11,6.36V4.22M13,11.37L15.74,10.5C15.23,10.3 14.72,10.03 14.25,9.69C13.76,9.33 13.34,8.92 13,8.5V11.37M19.8,9.16C18.53,8.78 17.23,8.15 16,7.26C14.77,6.36 13.76,5.31 13,4.2V6.27C13.22,7.21 13.86,8.17 14.84,8.88C15.77,9.56 16.83,9.87 17.77,9.82L19.8,9.16M10.38,13.28L7.64,12.39C7.95,12.84 8.2,13.35 8.38,13.91C8.57,14.5 8.66,15.06 8.68,15.62L10.38,13.28M3.58,11.07C4.38,12.12 5.06,13.4 5.53,14.83C6,16.29 6.2,17.74 6.17,19.08L7.38,17.41C7.76,16.5 7.8,15.36 7.43,14.22C7.07,13.12 6.4,12.24 5.61,11.73L3.58,11.07M12,14.45L10.35,16.72C10.87,16.58 11.42,16.5 12,16.5C12.58,16.5 13.13,16.58 13.65,16.72L12,14.45M7.84,20.18C9.08,19.75 10.5,19.5 12,19.5C13.5,19.5 14.92,19.75 16.16,20.18L14.88,18.42C14.16,17.85 13.13,17.5 12,17.5C10.87,17.5 9.84,17.85 9.12,18.42L7.84,20.18Z";
var mdiSpiritLevel = "M22 8H2V16H22V8M18 14V10H20V14H18M11 12H13C14.1 12 15 11.11 15 10H17V14H7V10H9C9 11.11 9.9 12 11 12M4 14V10H6V14H4Z";
var mdiSpoonSugar = "M6 13H3V10H6V13M10 10H7V13H10V10M8 6H5V9H8V6M18 12C14.25 12 12.28 13.25 11 14H2C2 16.21 3.79 18 6 18H7C8 18 8.92 17.63 9.62 17C11.06 15.78 12.68 14.74 14.55 14.36C15.61 14.15 16.78 14 18 14H22V12H18Z";
var mdiSpotify = "M17.9,10.9C14.7,9 9.35,8.8 6.3,9.75C5.8,9.9 5.3,9.6 5.15,9.15C5,8.65 5.3,8.15 5.75,8C9.3,6.95 15.15,7.15 18.85,9.35C19.3,9.6 19.45,10.2 19.2,10.65C18.95,11 18.35,11.15 17.9,10.9M17.8,13.7C17.55,14.05 17.1,14.2 16.75,13.95C14.05,12.3 9.95,11.8 6.8,12.8C6.4,12.9 5.95,12.7 5.85,12.3C5.75,11.9 5.95,11.45 6.35,11.35C10,10.25 14.5,10.8 17.6,12.7C17.9,12.85 18.05,13.35 17.8,13.7M16.6,16.45C16.4,16.75 16.05,16.85 15.75,16.65C13.4,15.2 10.45,14.9 6.95,15.7C6.6,15.8 6.3,15.55 6.2,15.25C6.1,14.9 6.35,14.6 6.65,14.5C10.45,13.65 13.75,14 16.35,15.6C16.7,15.75 16.75,16.15 16.6,16.45M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiSpotlight = "M2,6L7.09,8.55C6.4,9.5 6,10.71 6,12C6,13.29 6.4,14.5 7.09,15.45L2,18V6M6,3H18L15.45,7.09C14.5,6.4 13.29,6 12,6C10.71,6 9.5,6.4 8.55,7.09L6,3M22,6V18L16.91,15.45C17.6,14.5 18,13.29 18,12C18,10.71 17.6,9.5 16.91,8.55L22,6M18,21H6L8.55,16.91C9.5,17.6 10.71,18 12,18C13.29,18 14.5,17.6 15.45,16.91L18,21M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiSpotlightBeam = "M9,16.5L9.91,15.59L15.13,20.8L14.21,21.71L9,16.5M15.5,10L16.41,9.09L21.63,14.3L20.71,15.21L15.5,10M6.72,2.72L10.15,6.15L6.15,10.15L2.72,6.72C1.94,5.94 1.94,4.67 2.72,3.89L3.89,2.72C4.67,1.94 5.94,1.94 6.72,2.72M14.57,7.5L15.28,8.21L8.21,15.28L7.5,14.57L6.64,11.07L11.07,6.64L14.57,7.5Z";
var mdiSpray = "M10,4H12V6H10V4M7,3H9V5H7V3M7,6H9V8H7V6M6,8V10H4V8H6M6,5V7H4V5H6M6,2V4H4V2H6M13,22A2,2 0 0,1 11,20V10A2,2 0 0,1 13,8V7H14V4H17V7H18V8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H13M13,10V20H18V10H13Z";
var mdiSprayBottle = "M12,7H15C15.66,7.64 16,8.31 16,9V22H8V15C8,14.72 8.11,14.39 8.3,14L12,7M16,4L15,6H12V5L10,7H9L10,5V4H9V2H14.5A1.5,1.5 0 0,1 16,3.5V4Z";
var mdiSprinkler = "M11 7H13V9H11V7M5 22H9V10H5V22M14 11H16V9H14V11M17 10H19V8H17V10M17 5V7H19V5H17M14 8H16V6H14V8M17 13H19V11H17V13M5 7H5.33L6 9H8L8.67 7H9V6H5V7Z";
var mdiSprinklerVariant = "M10 10H14V22H10V10M7 9H9V7H7V9M4 8H6V6H4V8M4 11H6V9H4V11M1 13H3V11H1V13M1 7H3V5H1V7M1 10H3V8H1V10M18 11H20V9H18V11M21 10H23V8H21V10M21 5V7H23V5H21M21 13H23V11H21V13M15 9H17V7H15V9M18 8H20V6H18V8M10 7H10.33L11 9H13L13.67 7H14V6H10V7Z";
var mdiSprout = "M2,22V20C2,20 7,18 12,18C17,18 22,20 22,20V22H2M11.3,9.1C10.1,5.2 4,6.1 4,6.1C4,6.1 4.2,13.9 9.9,12.7C9.5,9.8 8,9 8,9C10.8,9 11,12.4 11,12.4V17C11.3,17 11.7,17 12,17C12.3,17 12.7,17 13,17V12.8C13,12.8 13,8.9 16,7.9C16,7.9 14,10.9 14,12.9C21,13.6 21,4 21,4C21,4 12.1,3 11.3,9.1Z";
var mdiSproutOutline = "M23,4.1V2.3L21.2,2.1C21.1,2.1 20.5,2 19.5,2C15.4,2 12.4,3.2 10.7,5.3C9.4,4.5 7.6,4 5.5,4C4.5,4 3.8,4.1 3.8,4.1L1.9,4.4L2,6.1C2.1,9.1 3.6,14.8 8.8,14.8C8.9,14.8 8.9,14.8 9,14.8V18.2C5.2,18.7 2,20 2,20V22H22V20C22,20 18.8,18.7 15,18.2V15C21.3,14.9 23,7.8 23,4.1M12,18C11.7,18 11.3,18 11,18V12.4C11,12.4 10.8,9 8,9C8,9 9.5,9.8 9.9,12.7C9.5,12.8 9.1,12.8 8.8,12.8C4.2,12.8 4,6.1 4,6.1C4,6.1 4.6,6 5.5,6C7.4,6 10.5,6.4 11.4,9.1C11.9,4.6 17,4 19.5,4C20.4,4 21,4.1 21,4.1C21,4.1 21,13.1 14.7,13.1C14.5,13.1 14.2,13.1 14,13.1C14,11.1 16,8.1 16,8.1C13,9.1 13,13 13,13V18C12.7,18 12.3,18 12,18Z";
var mdiSquare = "M3,3V21H21V3";
var mdiSquareCircle = "M20 4V20H4V4H20M22 2H2V22H22V2M12 6C8.69 6 6 8.69 6 12S8.69 18 12 18 18 15.31 18 12 15.31 6 12 6Z";
var mdiSquareEditOutline = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19H5V5H12V3H5M17.78,4C17.61,4 17.43,4.07 17.3,4.2L16.08,5.41L18.58,7.91L19.8,6.7C20.06,6.44 20.06,6 19.8,5.75L18.25,4.2C18.12,4.07 17.95,4 17.78,4M15.37,6.12L8,13.5V16H10.5L17.87,8.62L15.37,6.12Z";
var mdiSquareMedium = "M16,8H8V16H16V8Z";
var mdiSquareMediumOutline = "M14,10V14H10V10H14M16,8H8V16H16V8Z";
var mdiSquareOff = "M20.84 22.73L19.11 21H3V4.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M21 3H6.2L21 17.8V3Z";
var mdiSquareOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L3 4.89V21H19.11L20.84 22.73L22.11 21.46M5 19V6.89L17.11 19H5M8.2 5L6.2 3H21V17.8L19 15.8V5H8.2Z";
var mdiSquareOutline = "M3,3H21V21H3V3M5,5V19H19V5H5Z";
var mdiSquareRoot = "M11.76,16.83L14.59,14L11.76,11.17L13.17,9.76L16,12.59L18.83,9.76L20.24,11.17L17.41,14L20.24,16.83L18.83,18.24L16,15.41L13.17,18.24L11.76,16.83M2,11H5V11H5L7.29,16.4L10,6H22V8H11.55L8.68,19H6.22L3.68,13H2V11Z";
var mdiSquareRootBox = "M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M11.24,6H19V8H12.76L10,18H8L6.25,12H5V10H7.75L9,14.28L11.24,6V6M14,10.59L15.79,12.38L17.59,10.59L19,12L17.21,13.79L19,15.59L17.59,17L15.79,15.21L14,17L12.59,15.59L14.38,13.79L12.59,12L14,10.59Z";
var mdiSquareRounded = "M8 3H16C18.76 3 21 5.24 21 8V16C21 18.76 18.76 21 16 21H8C5.24 21 3 18.76 3 16V8C3 5.24 5.24 3 8 3Z";
var mdiSquareRoundedOutline = "M8 3H16C18.76 3 21 5.24 21 8V16C21 18.76 18.76 21 16 21H8C5.24 21 3 18.76 3 16V8C3 5.24 5.24 3 8 3M8 5C6.34 5 5 6.34 5 8V16C5 17.66 6.34 19 8 19H16C17.66 19 19 17.66 19 16V8C19 6.34 17.66 5 16 5H8Z";
var mdiSquareSmall = "M10,14V10H14V14H10Z";
var mdiSquareWave = "M2 2V12H4V4H11V22H22V12H20V20H13V2H2Z";
var mdiSqueegee = "M22,2V5H2V2H22M2,8H7L9,10H10V20A2,2 0 0,0 12,22A2,2 0 0,0 14,20V10H15L17,8H22V6H2V8Z";
var mdiSsh = "M4.5,9C3.9,9 3.5,9.5 3.5,10V11.75C3.5,12.25 3.9,12.75 4.5,12.75H7V13.5H3.5V15H7.5C8.1,15 8.5,14.5 8.5,14V12.25C8.5,11.75 8.1,11.25 7.5,11.25H5V10.5H8.5V9H4.5M10.5,9C9.9,9 9.5,9.5 9.5,10V11.75C9.5,12.25 9.9,12.75 10.5,12.75H13V13.5H9.5V15H13.5C14.1,15 14.5,14.5 14.5,14V12.25C14.5,11.75 14.1,11.25 13.5,11.25H11V10.5H14.5V9H10.5M15.5,9V15H17V12.5H19V15H20.5V9H19V11H17V9H15.5Z";
var mdiStackExchange = "M3.9 10.72H20V14.03H3.9V10.72M3.9 6.44H20V9.75H3.9V6.44M17.5 2H6.5C5.06 2 3.9 3.18 3.9 4.65V5.5H20V4.65C20 3.18 18.88 2 17.5 2M3.9 15V15.84C3.9 17.31 5.06 18.5 6.5 18.5H13.37V22L16.77 18.5H17.5C18.94 18.5 20.11 17.31 20.11 15.84V15H3.9Z";
var mdiStackOverflow = "M17.36,20.2V14.82H19.15V22H3V14.82H4.8V20.2H17.36M6.77,14.32L7.14,12.56L15.93,14.41L15.56,16.17L6.77,14.32M7.93,10.11L8.69,8.5L16.83,12.28L16.07,13.9L7.93,10.11M10.19,6.12L11.34,4.74L18.24,10.5L17.09,11.87L10.19,6.12M14.64,1.87L20,9.08L18.56,10.15L13.2,2.94L14.64,1.87M6.59,18.41V16.61H15.57V18.41H6.59Z";
var mdiStackpath = "M4.91 8C4.04 8 3.32 8.2 2.76 8.61C2.19 9 1.91 9.53 1.91 10.19C1.91 10.85 2.15 11.37 2.62 11.72C3.1 12.07 3.82 12.41 4.8 12.72C5.27 12.88 5.6 13.04 5.78 13.19C5.96 13.34 6.05 13.55 6.05 13.83C6.05 14.07 5.96 14.26 5.78 14.41C5.6 14.56 5.32 14.63 4.94 14.63C4.45 14.63 4.09 14.54 3.85 14.35C3.6 14.16 3.5 13.84 3.5 13.39H1.72L1.71 13.42C1.7 14.25 2 14.89 2.66 15.33C3.3 15.78 4.06 16 4.94 16C5.82 16 6.5 15.8 7.06 15.42C7.59 15.03 7.86 14.5 7.86 13.81C7.86 13.14 7.63 12.61 7.19 12.23C6.74 11.84 6.08 11.5 5.2 11.26C4.62 11.05 4.23 10.88 4 10.74C3.81 10.6 3.71 10.42 3.71 10.2C3.71 9.96 3.81 9.76 4 9.6C4.22 9.44 4.5 9.36 4.87 9.36C5.24 9.36 5.53 9.46 5.74 9.65C5.96 9.84 6.07 10.12 6.06 10.41H7.8L7.82 10.37C7.84 9.68 7.57 9.11 7 8.66C6.47 8.22 5.77 8 4.91 8M9 8.05V15.93H10.84V13.23H11.96C12.89 13.23 13.63 13 14.18 12.5C14.73 12.05 15 11.42 15 10.64C15 9.87 14.73 9.25 14.18 8.77C13.63 8.29 12.89 8.05 11.96 8.05H9M17.24 8.05L14.5 15.93H16.22L19 8.05M20.5 8.05L17.79 15.93H19.5L22.29 8.05M10.84 9.46H11.96C12.35 9.46 12.66 9.57 12.86 9.8C13.07 10 13.17 10.31 13.17 10.65C13.17 11 13.07 11.28 12.86 11.5C12.66 11.71 12.35 11.82 11.96 11.82H10.84";
var mdiStadium = "M22 13.5V17.5C22 19.2 17.5 20.5 12 20.5C10.6 20.5 9.2 20.4 8 20.2V17.5L4 16.5V19.3C2.7 18.8 2 18.2 2 17.5V11.5C2 10.5 4 9.5 6 9.5C12 9.5 14 15 19 15C21 15 22 13.5 22 13.5M5 8L9 9V6L5 5V8M18 6.5L22 7.5V4.5L18 3.5V6.5M22.3 10.8C22.3 9.8 21.5 8 18.7 8S13.4 10.7 13.3 10.9C15.1 12.2 16.5 13.5 19 13.5C22.3 13.5 22.3 10.8 22.3 10.8Z";
var mdiStadiumVariant = "M5,3H7L10,5L7,7V8.33C8.47,8.12 10.18,8 12,8C13.82,8 15.53,8.12 17,8.33V3H19L22,5L19,7V8.71C20.85,9.17 22,9.8 22,10.5C22,11.88 17.5,13 12,13C6.5,13 2,11.88 2,10.5C2,9.8 3.15,9.17 5,8.71V3M12,9.5C8.69,9.5 7,9.67 7,10.5C7,11.33 8.69,11.5 12,11.5C15.31,11.5 17,11.33 17,10.5C17,9.67 15.31,9.5 12,9.5M12,14.75C15.81,14.75 19.2,14.08 21.4,13.05L20,21H15V19A2,2 0 0,0 13,17H11A2,2 0 0,0 9,19V21H4L2.6,13.05C4.8,14.08 8.19,14.75 12,14.75Z";
var mdiStairs = "M15,5V9H11V13H7V17H3V20H10V16H14V12H18V8H22V5H15Z";
var mdiStairsBox = "M5 3C3.89 3 3 3.89 3 5V19C3 20.11 3.89 21 5 21H19C20.11 21 21 20.11 21 19V5C21 3.89 20.11 3 19 3H5M14 7H19V9H16V12H13V15H10V18H5V16H8V13H11V10H14V7Z";
var mdiStairsDown = "M15 6H22V9H18V13H14V17H10V21H3V18H7V14H11V10H15V6M4.83 8.34L10.34 2.83L12.17 4.66L6.66 10.17L8.5 12H3V6.5L4.83 8.34Z";
var mdiStairsUp = "M15 6H22V9H18V13H14V17H10V21H3V18H7V14H11V10H15V6M10.17 6.66L4.66 12.17L2.83 10.34L8.34 4.83L6.5 3H12V8.5L10.17 6.66Z";
var mdiStamper = "M12,3A3,3 0 0,0 9,6C9,9 14,13 6,13A2,2 0 0,0 4,15V17H20V15A2,2 0 0,0 18,13C10,13 15,9 15,6C15,4 13.66,3 12,3M6,19V21H18V19H6Z";
var mdiStandardDefinition = "M13,7H16A3,3 0 0,1 19,10V14A3,3 0 0,1 16,17H13V7M16,15A1,1 0 0,0 17,14V10A1,1 0 0,0 16,9H15V15H16M7,7H11V9H7V11H9A2,2 0 0,1 11,13V15A2,2 0 0,1 9,17H5V15H9V13H7A2,2 0 0,1 5,11V9A2,2 0 0,1 7,7Z";
var mdiStar = "M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z";
var mdiStarBox = "M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M15.58,17L14.63,12.92L17.79,10.19L13.62,9.83L12,6L10.38,9.84L6.21,10.2L9.37,12.93L8.42,17L12,14.84L15.58,17Z";
var mdiStarBoxMultiple = "M4 6V20H18V22H3C2.4 22 2 21.6 2 21V6H4M8 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H8C6.9 18 6 17.11 6 16V4C6 2.9 6.9 2 8 2M16.3 13.3L15.9 10.7L17.8 8.8L15.2 8.4L14 6L12.8 8.4L10.2 8.8L12.1 10.6L11.6 13.2L14 12L16.3 13.3Z";
var mdiStarBoxMultipleOutline = "M4 6V20H18V22H3C2.4 22 2 21.6 2 21V6H4M12.1 10.6L10.2 8.8L12.8 8.4L14 6L15.2 8.4L17.8 8.8L15.9 10.7L16.3 13.3L14 12L11.6 13.2L12.1 10.6M8 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H8C6.9 18 6 17.11 6 16V4C6 2.9 6.9 2 8 2M8 4V16H20V4H8Z";
var mdiStarBoxOutline = "M15.58,17L12,14.84L8.42,17L9.37,12.93L6.21,10.2L10.38,9.84L12,6L13.62,9.83L17.79,10.19L14.63,12.92L15.58,17M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M5,5V19H19V5H5Z";
var mdiStarCheck = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M17.8 21.2L22.6 16.4L21.3 15L17.7 18.6L16.2 17L15 18.2L17.8 21.2";
var mdiStarCheckOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M17.8 21.2L15 18.2L16.2 17L17.8 18.6L21.4 15L22.6 16.4L17.8 21.2";
var mdiStarCircle = "M16.23,18L12,15.45L7.77,18L8.89,13.19L5.16,9.96L10.08,9.54L12,5L13.92,9.53L18.84,9.95L15.11,13.18L16.23,18M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiStarCircleOutline = "M8.58,17.25L9.5,13.36L6.5,10.78L10.45,10.41L12,6.8L13.55,10.45L17.5,10.78L14.5,13.36L15.42,17.25L12,15.19L8.58,17.25M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z";
var mdiStarCog = "M18.8 12C15.59 12.1 12.91 14.37 12.19 17.39L12 17.27L5.82 21L7.45 13.97L2 9.24L9.19 8.62L12 2L14.81 8.62L22 9.24L18.8 12M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z";
var mdiStarCogOutline = "M10.29 10.13L5.91 10.5L9.23 13.38L8.24 17.66L12 15.39L12.76 15.85C12.5 16.33 12.32 16.85 12.19 17.39L12 17.27L5.82 21L7.45 13.97L2 9.24L9.19 8.63L12 2L14.81 8.63L22 9.24L18.8 12C17.29 12.05 15.91 12.57 14.78 13.43L14.77 13.38L18.09 10.5L13.71 10.13L12 6.09L10.29 10.13M23.83 20.64L22.83 22.37C22.76 22.5 22.63 22.5 22.5 22.5L21.27 22C21 22.18 20.73 22.34 20.43 22.47L20.24 23.79C20.22 23.91 20.11 24 20 24H18C17.86 24 17.76 23.91 17.74 23.79L17.55 22.47C17.24 22.35 16.96 22.18 16.7 22L15.46 22.5C15.34 22.5 15.21 22.5 15.15 22.37L14.15 20.64C14.09 20.53 14.12 20.4 14.21 20.32L15.27 19.5C15.25 19.33 15.24 19.17 15.24 19S15.25 18.67 15.27 18.5L14.21 17.68C14.11 17.6 14.09 17.47 14.15 17.36L15.15 15.63C15.22 15.5 15.35 15.5 15.46 15.5L16.7 16C16.96 15.82 17.25 15.66 17.55 15.53L17.74 14.21C17.76 14.09 17.87 14 18 14H20C20.11 14 20.22 14.09 20.23 14.21L20.42 15.53C20.73 15.65 21 15.82 21.27 16L22.5 15.5C22.63 15.5 22.76 15.5 22.82 15.63L23.82 17.36C23.88 17.47 23.85 17.6 23.76 17.68L22.7 18.5C22.73 18.67 22.74 18.83 22.74 19S22.72 19.33 22.7 19.5L23.77 20.32C23.86 20.4 23.89 20.53 23.83 20.64M20.5 19C20.5 18.17 19.83 17.5 19 17.5S17.5 18.17 17.5 19 18.16 20.5 19 20.5C19.83 20.5 20.5 19.83 20.5 19Z";
var mdiStarFace = "M12,2.5L8.42,8.06L2,9.74L6.2,14.88L5.82,21.5L12,19.09L18.18,21.5L17.8,14.88L22,9.74L15.58,8.06L12,2.5M9.38,10.5C10,10.5 10.5,11 10.5,11.63A1.12,1.12 0 0,1 9.38,12.75C8.75,12.75 8.25,12.25 8.25,11.63C8.25,11 8.75,10.5 9.38,10.5M14.63,10.5C15.25,10.5 15.75,11 15.75,11.63A1.12,1.12 0 0,1 14.63,12.75C14,12.75 13.5,12.25 13.5,11.63C13.5,11 14,10.5 14.63,10.5M9,15H15C14.5,16.21 13.31,17 12,17C10.69,17 9.5,16.21 9,15Z";
var mdiStarFourPoints = "M12,1L9,9L1,12L9,15L12,23L15,15L23,12L15,9L12,1Z";
var mdiStarFourPointsOutline = "M12,6.7L13.45,10.55L17.3,12L13.45,13.45L12,17.3L10.55,13.45L6.7,12L10.55,10.55L12,6.7M12,1L9,9L1,12L9,15L12,23L15,15L23,12L15,9L12,1Z";
var mdiStarHalf = "M12 2L9.19 8.62L2 9.24L7.45 13.97L5.82 21L12 17.27V2Z";
var mdiStarHalfFull = "M12,15.4V6.1L13.71,10.13L18.09,10.5L14.77,13.39L15.76,17.67M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z";
var mdiStarMinus = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M14 17V19H22V17H14Z";
var mdiStarMinusOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M14 17V19H22V17H14Z";
var mdiStarOff = "M20.8 22.7L17.9 19.8L18.2 21L12 17.3L5.8 21L7.4 14L2 9.2L6.9 8.8L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M22 9.2L14.8 8.6L12 2L10 6.8L16.9 13.7L22 9.2Z";
var mdiStarOffOutline = "M22.1 21.5L2.4 1.7L1.1 3L6.9 8.8L2 9.2L7.5 14L5.9 21L12.1 17.3L18.3 21L18 19.8L20.9 22.7L22.1 21.5M15.8 17.7L12 15.4L8.2 17.7L9.2 13.4L5.9 10.5L8.4 10.3L15.8 17.7M11.2 8L10 6.8L12 2L14.8 8.6L22 9.2L16.9 13.6L15.8 12.5L18.2 10.5L13.8 10.1L12.1 6.1L11.2 8Z";
var mdiStarOutline = "M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z";
var mdiStarPlus = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z";
var mdiStarPlusOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M17 14V17H14V19H17V22H19V19H22V17H19V14H17Z";
var mdiStarRemove = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C14.9 12 12.4 14.3 12 17.3L5.8 21M20.1 14.5L18 16.6L15.9 14.5L14.5 15.9L16.6 18L14.5 20.1L15.9 21.5L18 19.4L20.1 21.5L21.5 20.1L19.4 18L21.5 15.9L20.1 14.5Z";
var mdiStarRemoveOutline = "M5.8 21L7.4 14L2 9.2L9.2 8.6L12 2L14.8 8.6L22 9.2L18.8 12H18C17.3 12 16.6 12.1 15.9 12.4L18.1 10.5L13.7 10.1L12 6.1L10.3 10.1L5.9 10.5L9.2 13.4L8.2 17.7L12 15.4L12.5 15.7C12.3 16.2 12.1 16.8 12.1 17.3L5.8 21M20.1 14.5L18 16.6L15.9 14.5L14.5 15.9L16.6 18L14.5 20.1L15.9 21.5L18 19.4L20.1 21.5L21.5 20.1L19.4 18L21.5 15.9L20.1 14.5Z";
var mdiStarSettings = "M7 22H9V24H7V22M11 24H13V22H11V24M15 24H17V22H15V24M22 9.24L14.81 8.62L12 2L9.19 8.62L2 9.24L7.45 13.97L5.82 21L12 17.27L18.18 21L16.54 13.97L22 9.24Z";
var mdiStarSettingsOutline = "M11 22H13V24H11V22M7 24H9V22H7V24M15 24H17V22H15V24M16.54 13.97L18.18 21L12 17.27L5.82 21L7.45 13.97L2 9.24L9.19 8.63L12 2L14.81 8.63L22 9.24L16.54 13.97M15.76 17.66L14.77 13.38L18.09 10.5L13.71 10.13L12 6.09L10.29 10.13L5.91 10.5L9.23 13.38L8.24 17.66L12 15.39L15.76 17.66Z";
var mdiStarShooting = "M18.09 11.77L19.56 18.1L14 14.74L8.44 18.1L9.9 11.77L5 7.5L11.47 6.96L14 1L16.53 6.96L23 7.5L18.09 11.77M2 12.43C2.19 12.43 2.38 12.37 2.55 12.26L5.75 10.15L4.18 8.79L1.45 10.59C.989 10.89 .861 11.5 1.16 12C1.36 12.27 1.68 12.43 2 12.43M1.16 21.55C1.36 21.84 1.68 22 2 22C2.19 22 2.38 21.95 2.55 21.84L6.66 19.13L7 17.76L7.31 16.31L1.45 20.16C.989 20.47 .861 21.09 1.16 21.55M1.45 15.38C.989 15.68 .861 16.3 1.16 16.76C1.36 17.06 1.68 17.21 2 17.21C2.19 17.21 2.38 17.16 2.55 17.05L7.97 13.5L8.24 12.31L7.32 11.5L1.45 15.38Z";
var mdiStarShootingOutline = "M23 7.5L16.53 6.96L14 1L11.47 6.96L5 7.5L9.9 11.77L8.44 18.1L14 14.74L19.56 18.1L18.09 11.77L23 7.5M16.14 12.23L16.54 13.94L15.03 13.03L14 12.41L12.97 13.03L11.46 13.94L11.85 12.23L12.13 11.05L11.22 10.26L9.88 9.1L11.64 8.95L12.84 8.85L13.31 7.74L14 6.12L14.69 7.74L15.16 8.85L16.36 8.95L18.11 9.1L16.78 10.26L15.86 11.05L16.14 12.23M1.16 12C.861 11.5 .989 10.89 1.45 10.59L4.18 8.79L5.75 10.15L2.55 12.26C2.38 12.37 2.19 12.43 2 12.43C1.68 12.43 1.36 12.27 1.16 12M1.45 20.16L7.31 16.31L7 17.76L6.66 19.13L2.55 21.84C2.38 21.95 2.19 22 2 22C1.68 22 1.36 21.84 1.16 21.55C.861 21.09 .989 20.47 1.45 20.16M7.32 11.5L8.24 12.31L7.97 13.5L2.55 17.05C2.38 17.16 2.19 17.21 2 17.21C1.68 17.21 1.36 17.06 1.16 16.76C.861 16.3 .989 15.68 1.45 15.38L7.32 11.5Z";
var mdiStarThreePoints = "M12,2.6L9,12.4L2,19.9L12,17.6L22,20L15,12.5L12,2.6Z";
var mdiStarThreePointsOutline = "M12,9.5L13.2,13.5L16,16.5L12,15.6L7.9,16.5L10.7,13.5L12,9.5M12,2.6L9,12.4L2,19.9L12,17.6L22,20L15,12.5L12,2.6Z";
var mdiStateMachine = "M6.27 17.05C6.72 17.58 7 18.25 7 19C7 20.66 5.66 22 4 22S1 20.66 1 19 2.34 16 4 16C4.18 16 4.36 16 4.53 16.05L7.6 10.69L5.86 9.7L9.95 8.58L11.07 12.67L9.33 11.68L6.27 17.05M20 16C18.7 16 17.6 16.84 17.18 18H11V16L8 19L11 22V20H17.18C17.6 21.16 18.7 22 20 22C21.66 22 23 20.66 23 19S21.66 16 20 16M12 8C12.18 8 12.36 8 12.53 7.95L15.6 13.31L13.86 14.3L17.95 15.42L19.07 11.33L17.33 12.32L14.27 6.95C14.72 6.42 15 5.75 15 5C15 3.34 13.66 2 12 2S9 3.34 9 5 10.34 8 12 8Z";
var mdiSteam = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C7.4,22 3.55,18.92 2.36,14.73L6.19,16.31C6.45,17.6 7.6,18.58 8.97,18.58C10.53,18.58 11.8,17.31 11.8,15.75V15.62L15.2,13.19H15.28C17.36,13.19 19.05,11.5 19.05,9.42C19.05,7.34 17.36,5.65 15.28,5.65C13.2,5.65 11.5,7.34 11.5,9.42V9.47L9.13,12.93L8.97,12.92C8.38,12.92 7.83,13.1 7.38,13.41L2,11.2C2.43,6.05 6.73,2 12,2M8.28,17.17C9.08,17.5 10,17.13 10.33,16.33C10.66,15.53 10.28,14.62 9.5,14.29L8.22,13.76C8.71,13.58 9.26,13.57 9.78,13.79C10.31,14 10.72,14.41 10.93,14.94C11.15,15.46 11.15,16.04 10.93,16.56C10.5,17.64 9.23,18.16 8.15,17.71C7.65,17.5 7.27,17.12 7.06,16.67L8.28,17.17M17.8,9.42C17.8,10.81 16.67,11.94 15.28,11.94C13.9,11.94 12.77,10.81 12.77,9.42A2.5,2.5 0 0,1 15.28,6.91C16.67,6.91 17.8,8.04 17.8,9.42M13.4,9.42C13.4,10.46 14.24,11.31 15.29,11.31C16.33,11.31 17.17,10.46 17.17,9.42C17.17,8.38 16.33,7.53 15.29,7.53C14.24,7.53 13.4,8.38 13.4,9.42Z";
var mdiSteering = "M13,19.92C14.8,19.7 16.35,18.95 17.65,17.65C18.95,16.35 19.7,14.8 19.92,13H16.92C16.7,14 16.24,14.84 15.54,15.54C14.84,16.24 14,16.7 13,16.92V19.92M10,8H14L17,11H19.92C19.67,9.05 18.79,7.38 17.27,6C15.76,4.66 14,4 12,4C10,4 8.24,4.66 6.73,6C5.21,7.38 4.33,9.05 4.08,11H7L10,8M11,19.92V16.92C10,16.7 9.16,16.24 8.46,15.54C7.76,14.84 7.3,14 7.08,13H4.08C4.3,14.77 5.05,16.3 6.35,17.6C7.65,18.9 9.2,19.67 11,19.92M12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.75 21,17.1 19.05,19.05C17.1,21 14.75,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,9.25 3,6.9 4.95,4.95C6.9,3 9.25,2 12,2Z";
var mdiSteeringOff = "M2,5.27L3.28,4L20,20.72L18.73,22L17.25,20.5C15.7,21.5 13.95,22 12,22C9.25,22 6.9,21 4.95,19.05C3,17.1 2,14.75 2,12C2,10.05 2.5,8.3 3.5,6.75L2,5.27M13,19.92C14,19.8 14.93,19.5 15.78,19.05L13.5,16.78C13.34,16.84 13.16,16.88 13,16.92V19.92M4.08,11H7L7.37,10.63L4.96,8.23C4.5,9.08 4.21,10 4.08,11M19.92,13H16.92C16.8,13.54 16.6,14.05 16.33,14.5L9.91,8.09L10,8H14L17,11H19.92C19.67,9.05 18.79,7.38 17.27,6C15.76,4.66 14,4 12,4C10.26,4 8.71,4.5 7.34,5.5L5.91,4.09C7.66,2.71 9.69,2 12,2C14.75,2 17.1,3 19.05,4.95C21,6.9 22,9.25 22,12C22,14.31 21.29,16.34 19.91,18.09L18.5,16.67C19.28,15.59 19.76,14.36 19.92,13M11,19.92V16.92C10,16.7 9.16,16.24 8.46,15.54C7.76,14.84 7.3,14 7.08,13H4.08C4.3,14.77 5.05,16.3 6.35,17.6C7.65,18.9 9.2,19.67 11,19.92Z";
var mdiStepBackward = "M19,5V19H16V5M14,5V19L3,12";
var mdiStepBackward2 = "M17,5H14V19H17V5M12,5L1,12L12,19V5M22,5H19V19H22V5Z";
var mdiStepForward = "M5,5V19H8V5M10,5V19L21,12";
var mdiStepForward2 = "M7,5H10V19H7V5M12,5L23,12L12,19V5M2,5H5V19H2V5Z";
var mdiStethoscope = "M19,8C19.56,8 20,8.43 20,9A1,1 0 0,1 19,10C18.43,10 18,9.55 18,9C18,8.43 18.43,8 19,8M2,2V11C2,13.96 4.19,16.5 7.14,16.91C7.76,19.92 10.42,22 13.5,22A6.5,6.5 0 0,0 20,15.5V11.81C21.16,11.39 22,10.29 22,9A3,3 0 0,0 19,6A3,3 0 0,0 16,9C16,10.29 16.84,11.4 18,11.81V15.41C18,17.91 16,19.91 13.5,19.91C11.5,19.91 9.82,18.7 9.22,16.9C12,16.3 14,13.8 14,11V2H10V5H12V11A4,4 0 0,1 8,15A4,4 0 0,1 4,11V5H6V2H2Z";
var mdiSticker = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z";
var mdiStickerAlert = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M13 17H11V15H13V16M13 13H11V7H13V12M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z";
var mdiStickerAlertOutline = "M11 15H13V17H11V15M11 13H13V7H11V13M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z";
var mdiStickerCheck = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M7 12.5L8.3 11.1L10.4 13.2L15.6 8L17 9.4L10.5 16L7 12.5M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z";
var mdiStickerCheckOutline = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M20 15H18.5C16.6 15 15 16.6 15 18.5V20H5.8C4.8 20 4 19.2 4 18.2V5.8C4 4.8 4.8 4 5.8 4H18.3C19.3 4 20.1 4.8 20.1 5.8V15M15.2 8.2L16.7 9.7L10.7 15.7L7.2 12.2L8.7 10.7L10.7 12.7L15.2 8.2Z";
var mdiStickerCircleOutline = "M12.12,18.46L18.3,12.28C16.94,12.59 15.31,13.2 14.07,14.46C13.04,15.5 12.39,16.83 12.12,18.46M20.75,10H21.05C21.44,10 21.79,10.27 21.93,10.64C22.07,11 22,11.43 21.7,11.71L11.7,21.71C11.5,21.9 11.26,22 11,22L10.64,21.93C10.27,21.79 10,21.44 10,21.05C9.84,17.66 10.73,14.96 12.66,13.03C15.5,10.2 19.62,10 20.75,10M12,2C16.5,2 20.34,5 21.58,9.11L20,9H19.42C18.24,6.07 15.36,4 12,4A8,8 0 0,0 4,12C4,15.36 6.07,18.24 9,19.42C8.97,20.13 9,20.85 9.11,21.57C5,20.33 2,16.5 2,12C2,6.47 6.5,2 12,2Z";
var mdiStickerEmoji = "M5.5,2C3.56,2 2,3.56 2,5.5V18.5C2,20.44 3.56,22 5.5,22H16L22,16V5.5C22,3.56 20.44,2 18.5,2H5.5M5.75,4H18.25A1.75,1.75 0 0,1 20,5.75V15H18.5C16.56,15 15,16.56 15,18.5V20H5.75A1.75,1.75 0 0,1 4,18.25V5.75A1.75,1.75 0 0,1 5.75,4M14.44,6.77C14.28,6.77 14.12,6.79 13.97,6.83C13.03,7.09 12.5,8.05 12.74,9C12.79,9.15 12.86,9.3 12.95,9.44L16.18,8.56C16.18,8.39 16.16,8.22 16.12,8.05C15.91,7.3 15.22,6.77 14.44,6.77M8.17,8.5C8,8.5 7.85,8.5 7.7,8.55C6.77,8.81 6.22,9.77 6.47,10.7C6.5,10.86 6.59,11 6.68,11.16L9.91,10.28C9.91,10.11 9.89,9.94 9.85,9.78C9.64,9 8.95,8.5 8.17,8.5M16.72,11.26L7.59,13.77C8.91,15.3 11,15.94 12.95,15.41C14.9,14.87 16.36,13.25 16.72,11.26Z";
var mdiStickerMinus = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M8 11H16V13H8V11M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z";
var mdiStickerMinusOutline = "M8 11H16V13H8V11M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z";
var mdiStickerOutline = "M5.5 2C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2H5.5M5.8 4H18.3C19.3 4 20.1 4.8 20.1 5.8V15H18.6C16.7 15 15.1 16.6 15.1 18.5V20H5.8C4.8 20 4 19.2 4 18.2V5.8C4 4.8 4.8 4 5.8 4";
var mdiStickerPlus = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M13 16H11V13H8V11H11V8H13V11H16V13H13V16M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z";
var mdiStickerPlusOutline = "M13 11H16V13H13V16H11V13H8V11H11V8H13V11M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z";
var mdiStickerRemove = "M18.5 2H5.5C3.6 2 2 3.6 2 5.5V18.5C2 20.4 3.6 22 5.5 22H16L22 16V5.5C22 3.6 20.4 2 18.5 2M12 13.4L9.9 15.5L8.5 14.1L10.6 12L8.5 9.9L9.9 8.5L12 10.6L14.1 8.5L15.5 9.9L13.4 12L15.5 14.1L14.1 15.5L12 13.4M15 20V18.5C15 16.6 16.6 15 18.5 15H20L15 20Z";
var mdiStickerRemoveOutline = "M16 9.4L13.4 12L16 14.6L14.6 16L12 13.4L9.4 16L8 14.6L10.6 12L8 9.4L9.4 8L12 10.6L14.6 8L16 9.4M22 5.5V16L16 22H5.5C3.6 22 2 20.4 2 18.5V5.5C2 3.6 3.6 2 5.5 2H18.5C20.4 2 22 3.6 22 5.5M20 5.8C20 4.8 19.2 4 18.2 4H5.8C4.8 4 4 4.8 4 5.8V18.3C4 19.3 4.8 20.1 5.8 20.1H15V18.6C15 16.7 16.6 15.1 18.5 15.1H20V5.8Z";
var mdiStocking = "M17,2A2,2 0 0,1 19,4V7A2,2 0 0,1 17,9V17C17,17.85 16.5,18.57 15.74,18.86L9.5,21.77C8.5,22.24 7.29,21.81 6.83,20.81L6,19C5.5,18 5.95,16.8 6.95,16.34L10,14.91V9A2,2 0 0,1 8,7V4A2,2 0 0,1 10,2H17M10,4V7H17V4H10Z";
var mdiStomach = "M4 18C4.67 19.85 6.07 22 12 22C14.36 22 17.07 21.93 19 20C20 19 22 17 22 11S20 4 18 4C16.62 4 15 4 14 6V6.03A1.82 1.82 0 0 1 12.13 6.95C11 6.81 11 6.37 11 6V2H9V6A2.92 2.92 0 0 0 12 9C13 9 13 10.78 13 12C13 13.89 12.5 15.26 11 16C8.69 17.15 6.39 17 5.61 15.47A1.5 1.5 0 0 0 3.14 14.87A3.67 3.67 0 0 0 2 18V22H4Z";
var mdiStop = "M18,18H6V6H18V18Z";
var mdiStopCircle = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M9,9H15V15H9";
var mdiStopCircleOutline = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M9,9V15H15V9";
var mdiStore = "M12,18H6V14H12M21,14V12L20,7H4L3,12V14H4V20H14V14H18V20H20V14M20,4H4V6H20V4Z";
var mdiStore24Hour = "M16,12H15V10H13V7H14V9H15V7H16M11,10H9V11H11V12H8V9H10V8H8V7H11M19,7V4H5V7H2V20H10V16H14V20H22V7H19Z";
var mdiStoreMinus = "M4 4V6H20V4M4 7L3 12V14H4V20H13C12.95 19.66 12.92 19.31 12.92 18.95C12.92 17.73 13.3 16.53 14 15.53V14H15.54C16.54 13.33 17.71 12.96 18.91 12.96C19.62 12.96 20.33 13.09 21 13.34V12L20 7M6 14H12V18H6M15 18V20H23V18";
var mdiStoreOutline = "M18.36 9L18.96 12H5.04L5.64 9H18.36M20 4H4V6H20V4M20 7H4L3 12V14H4V20H14V14H18V20H20V14H21V12L20 7M6 18V14H12V18H6Z";
var mdiStorePlus = "M4 4V6H20V4M4 7L3 12V14H4V20H13C12.95 19.66 12.92 19.31 12.92 18.95C12.92 17.73 13.3 16.53 14 15.53V14H15.54C16.54 13.33 17.71 12.96 18.91 12.96C19.62 12.96 20.33 13.09 21 13.34V12L20 7M6 14H12V18H6M18 15V18H15V20H18V23H20V20H23V18H20V15";
var mdiStoreRemove = "M4 4H20V6H4V4M15.46 16.88L16.88 15.46L19 17.59L21.12 15.47L22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.47 16.88M4 7H20L21 12V13.34C20.33 13.09 19.62 12.96 18.91 12.96C17.71 12.96 16.54 13.33 15.54 14H14V15.53C13.3 16.53 12.92 17.73 12.92 18.95L13 20H4V14H3V12L4 7M6 14V18H12V14H6Z";
var mdiStorefront = "M5.06 3C4.63 3 4.22 3.14 3.84 3.42C3.46 3.7 3.24 4.06 3.14 4.5L2.11 8.91C1.86 10 2.06 10.92 2.69 11.73C2.81 11.85 2.93 11.97 3.04 12.07C3.63 12.64 4.28 13 5.22 13C6.16 13 6.91 12.59 7.47 12.05C8.1 12.67 8.86 13 9.8 13C10.64 13 11.44 12.63 12 12.07C12.68 12.7 13.45 13 14.3 13C15.17 13 15.91 12.67 16.54 12.05C17.11 12.62 17.86 13 18.81 13C19.76 13 20.43 12.65 21 12.06C21.09 11.97 21.18 11.87 21.28 11.77C21.94 10.95 22.14 10 21.89 8.91L20.86 4.5C20.73 4.06 20.5 3.7 20.13 3.42C19.77 3.14 19.38 3 18.94 3M18.89 4.97L19.97 9.38C20.06 9.81 19.97 10.2 19.69 10.55C19.44 10.86 19.13 11 18.75 11C18.44 11 18.17 10.9 17.95 10.66C17.73 10.43 17.61 10.16 17.58 9.84L16.97 5M5.06 5H7.03L6.42 9.84C6.3 10.63 5.91 11 5.25 11C4.84 11 4.53 10.86 4.31 10.55C4.03 10.2 3.94 9.81 4.03 9.38M9.05 5H11V9.7C11 10.05 10.89 10.35 10.64 10.62C10.39 10.88 10.08 11 9.7 11C9.36 11 9.07 10.88 8.84 10.59C8.61 10.3 8.5 10 8.5 9.66V9.5M13 5H14.95L15.5 9.5C15.58 9.92 15.5 10.27 15.21 10.57C14.95 10.87 14.61 11 14.2 11C13.89 11 13.61 10.88 13.36 10.62C13.11 10.35 13 10.05 13 9.7M3 14.03V19C3 20.11 3.89 21 5 21C9.67 21 14.33 21 19 21C20.1 21 21 20.11 21 19V14.05C20.45 14.63 19.75 14.96 19 15C18 15.03 17.25 14.74 16.54 14.05C15.94 14.65 15.14 15 14.3 15C13.4 15 12.6 14.64 12 14.07C11.43 14.64 10.65 15 9.78 15C8.87 15 8.07 14.65 7.47 14.05C6.89 14.64 6.1 15 5.23 15C4.33 15 3.66 14.65 3 14.03Z";
var mdiStorefrontOutline = "M5.06 3C4.63 3 4.22 3.14 3.84 3.42S3.24 4.06 3.14 4.5L2.11 8.91C1.86 10 2.06 10.95 2.72 11.77L3 12.05V19C3 19.5 3.2 20 3.61 20.39S4.5 21 5 21H19C19.5 21 20 20.8 20.39 20.39S21 19.5 21 19V12.05L21.28 11.77C21.94 10.95 22.14 10 21.89 8.91L20.86 4.5C20.73 4.06 20.5 3.7 20.13 3.42C19.77 3.14 19.38 3 18.94 3H5.06M18.89 4.97L19.97 9.38C20.06 9.81 19.97 10.2 19.69 10.55C19.44 10.86 19.13 11 18.75 11C18.44 11 18.17 10.9 17.95 10.66C17.73 10.43 17.61 10.16 17.58 9.84L16.97 5L18.89 4.97M5.06 5H7.03L6.42 9.84C6.3 10.63 5.91 11 5.25 11C4.84 11 4.53 10.86 4.31 10.55C4.03 10.2 3.94 9.81 4.03 9.38L5.06 5M9.05 5H11V9.7C11 10.05 10.89 10.35 10.64 10.62C10.39 10.88 10.08 11 9.7 11C9.36 11 9.07 10.88 8.84 10.59S8.5 10 8.5 9.66V9.5L9.05 5M13 5H14.95L15.5 9.5C15.58 9.92 15.5 10.27 15.21 10.57C14.95 10.87 14.61 11 14.2 11C13.89 11 13.61 10.88 13.36 10.62C13.11 10.35 13 10.05 13 9.7V5M7.45 12.05C8.08 12.67 8.86 13 9.8 13C10.64 13 11.38 12.67 12 12.05C12.69 12.67 13.45 13 14.3 13C15.17 13 15.92 12.67 16.55 12.05C17.11 12.67 17.86 13 18.8 13H19.03V19H5V13H5.25C6.16 13 6.89 12.67 7.45 12.05Z";
var mdiStove = "M6,14H8L11,17H9L6,14M4,4H5V3A1,1 0 0,1 6,2H10A1,1 0 0,1 11,3V4H13V3A1,1 0 0,1 14,2H18A1,1 0 0,1 19,3V4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21V22H17V21H7V22H4V21A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M18,7A1,1 0 0,1 19,8A1,1 0 0,1 18,9A1,1 0 0,1 17,8A1,1 0 0,1 18,7M14,7A1,1 0 0,1 15,8A1,1 0 0,1 14,9A1,1 0 0,1 13,8A1,1 0 0,1 14,7M20,6H4V10H20V6M4,19H20V12H4V19M6,7A1,1 0 0,1 7,8A1,1 0 0,1 6,9A1,1 0 0,1 5,8A1,1 0 0,1 6,7M13,14H15L18,17H16L13,14Z";
var mdiStrategy = "M6.91 5.5L9.21 7.79L7.79 9.21L5.5 6.91L3.21 9.21L1.79 7.79L4.09 5.5L1.79 3.21L3.21 1.79L5.5 4.09L7.79 1.79L9.21 3.21M22.21 16.21L20.79 14.79L18.5 17.09L16.21 14.79L14.79 16.21L17.09 18.5L14.79 20.79L16.21 22.21L18.5 19.91L20.79 22.21L22.21 20.79L19.91 18.5M20.4 6.83L17.18 11L15.6 9.73L16.77 8.23A9.08 9.08 0 0 0 10.11 13.85A4.5 4.5 0 1 1 7.5 13A4 4 0 0 1 8.28 13.08A11.27 11.27 0 0 1 16.43 6.26L15 5.18L16.27 3.6M10 17.5A2.5 2.5 0 1 0 7.5 20A2.5 2.5 0 0 0 10 17.5Z";
var mdiStretchToPage = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M9,19H5V15L6.29,16.29L7.83,14.75L9.25,16.17L7.71,17.71M7.83,9.25L6.29,7.71L5,9V5H9L7.71,6.29L9.25,7.83M19,19H15L16.29,17.71L14.75,16.17L16.17,14.75L17.71,16.29L19,15M19,9L17.71,7.71L16.17,9.25L14.75,7.83L16.29,6.29L15,5H19";
var mdiStretchToPageOutline = "M20,2H4C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2M20,20H4V4H20M8.83,10.25L7.29,8.71L6,10V6H10L8.71,7.29L10.25,8.83M13.75,8.83L15.29,7.29L14,6H18V10L16.71,8.71L15.17,10.25M15.17,13.75L16.71,15.29L18,14V18H14L15.29,16.71L13.75,15.17M10.25,15.17L8.71,16.71L10,18H6V14L7.29,15.29L8.83,13.75";
var mdiStringLights = "M22.56 11.39C22.36 10.59 21.82 9.85 21.05 9.44L20.63 7.74C21.11 7.58 21.57 7.41 22 7.23V5C20 6.07 16.53 7.03 12 7.03S4 6.07 2 5V7.23C2.43 7.41 2.89 7.58 3.37 7.74L2.95 9.44C2.18 9.85 1.64 10.59 1.44 11.39C.905 13.57 .385 17.31 2.92 17.93C4 18.2 6 17.89 7.27 12.82C7.46 12 7.33 11.12 6.84 10.39L7.26 8.67C8.14 8.81 9.05 8.9 10 8.96V10.74C9.35 11.33 9 12.17 9 13C9 15.24 9.39 19 12 19C13.12 19 15 18.22 15 13C15 12.17 14.65 11.33 14 10.74V8.96C14.95 8.9 15.86 8.81 16.74 8.67L17.16 10.39C16.67 11.12 16.54 12 16.73 12.82C18 17.89 20 18.2 21.08 17.93C23.61 17.31 23.09 13.57 22.56 11.39M5.81 12.47C5.81 12.47 4.74 16.84 3.28 16.5C1.82 16.12 2.9 11.75 2.9 11.75S3.26 10.29 4.71 10.65 5.81 12.47 5.81 12.47M12 17.5C10.5 17.5 10.5 13 10.5 13S10.5 11.5 12 11.5 13.5 13 13.5 13 13.5 17.5 12 17.5M20.72 16.5C19.27 16.84 18.19 12.47 18.19 12.47S17.83 11 19.29 10.65 21.1 11.75 21.1 11.75 22.18 16.12 20.72 16.5Z";
var mdiStringLightsOff = "M14 10.74V8.96C14.95 8.9 15.86 8.81 16.74 8.67L17.16 10.39C16.67 11.12 16.54 12 16.73 12.82C16.82 13.17 16.91 13.5 17 13.8L21.12 17.92C23.61 17.26 23.09 13.55 22.56 11.39C22.36 10.59 21.82 9.85 21.05 9.44L20.63 7.74C21.11 7.58 21.57 7.41 22 7.23V5C20 6.07 16.53 7.03 12 7.03C11.37 7.03 10.76 7 10.17 6.97M20.72 16.5C19.27 16.84 18.19 12.47 18.19 12.47S17.83 11 19.29 10.65 21.1 11.75 21.1 11.75 22.18 16.12 20.72 16.5M14.95 14.29L13.5 12.83V12.83L12.18 11.5H12.18L10 9.34V9.34L9.58 8.93H9.59L7.32 6.66H7.32L2.39 1.73L1.11 3L3.91 5.8C3.19 5.55 2.53 5.28 2 5V7.23C2.43 7.41 2.89 7.58 3.37 7.74L2.95 9.44C2.18 9.85 1.64 10.59 1.44 11.39C.905 13.57 .385 17.31 2.92 17.93C4 18.2 6 17.89 7.27 12.82C7.46 12 7.33 11.12 6.84 10.39L7.17 9.06L9.5 11.38C9.18 11.87 9 12.44 9 13C9 15.24 9.39 19 12 19C12.8 19 13.97 18.59 14.59 16.5L20.84 22.73L22.11 21.46L14.95 14.3L14.95 14.29M5.81 12.47C5.81 12.47 4.74 16.84 3.28 16.5C1.82 16.12 2.9 11.75 2.9 11.75S3.26 10.29 4.71 10.65 5.81 12.47 5.81 12.47M12 17.5C10.5 17.5 10.5 13 10.5 13S10.5 12.77 10.6 12.5L13.32 15.21C13.13 16.35 12.76 17.5 12 17.5Z";
var mdiSubdirectoryArrowLeft = "M11,9L12.42,10.42L8.83,14H18V4H20V16H8.83L12.42,19.58L11,21L5,15L11,9Z";
var mdiSubdirectoryArrowRight = "M19,15L13,21L11.58,19.58L15.17,16H4V4H6V14H15.17L11.58,10.42L13,9L19,15Z";
var mdiSubmarine = "M8 3.67C6.78 4.53 5.39 4.93 4 5H2V7H4C5.37 7 6.74 6.65 8 6C10.5 7.3 13.5 7.3 16 6C17.26 6.65 18.62 6.94 20 7H22V5H20C18.61 5 17.22 4.53 16 3.67C13.56 5.38 10.44 5.38 8 3.67M16 8.67L15 10V12H14L12 14H9L6 16L5 14H4V16L2 17L4 18V20H5.14L6 18L9 20H20A2 2 0 0 0 22 18V16A2 2 0 0 0 20 14H18L17 13V12H16V10H17V8.67Z";
var mdiSubtitles = "M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M4,12H8V14H4V12M14,18H4V16H14V18M20,18H16V16H20V18M20,14H10V12H20V14Z";
var mdiSubtitlesOutline = "M20,4A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20M20,18V6H4V18H20M6,10H8V12H6V10M6,14H14V16H6V14M16,14H18V16H16V14M10,10H18V12H10V10Z";
var mdiSubway = "M8.5,15A1,1 0 0,1 9.5,16A1,1 0 0,1 8.5,17A1,1 0 0,1 7.5,16A1,1 0 0,1 8.5,15M7,9H17V14H7V9M15.5,15A1,1 0 0,1 16.5,16A1,1 0 0,1 15.5,17A1,1 0 0,1 14.5,16A1,1 0 0,1 15.5,15M18,15.88V9C18,6.38 15.32,6 12,6C9,6 6,6.37 6,9V15.88A2.62,2.62 0 0,0 8.62,18.5L7.5,19.62V20H9.17L10.67,18.5H13.5L15,20H16.5V19.62L15.37,18.5C16.82,18.5 18,17.33 18,15.88M17.8,2.8C20.47,3.84 22,6.05 22,8.86V22H2V8.86C2,6.05 3.53,3.84 6.2,2.8C8,2.09 10.14,2 12,2C13.86,2 16,2.09 17.8,2.8Z";
var mdiSubwayAlertVariant = "M16 11V6H11V11H16M14.5 17C15.3 17 16 16.3 16 15.5C16 14.7 15.3 14 14.5 14S13 14.7 13 15.5C13 16.3 13.7 17 14.5 17M9 11V6H4V11H9M5.5 17C6.3 17 7 16.3 7 15.5C7 14.7 6.3 14 5.5 14S4 14.7 4 15.5C4 16.3 4.7 17 5.5 17M10 2C14.4 2 18 2.5 18 6V15.5C18 17.4 16.4 19 14.5 19L16 20.5V21H4V20.5L5.5 19C3.6 19 2 17.4 2 15.5V6C2 2.5 5.6 2 10 2M20 13V7H22V13H20M20 17V15H22V17H20Z";
var mdiSubwayVariant = "M18,11H13V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M11,11H6V6H11M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M12,2C7.58,2 4,2.5 4,6V15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V6C20,2.5 16.42,2 12,2Z";
var mdiSummit = "M15,3H17L22,5L17,7V10.17L22,21H2L8,13L11.5,17.7L15,10.17V3Z";
var mdiSunglasses = "M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17Z";
var mdiSurroundSound = "M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M7.76,16.24L6.35,17.65C4.78,16.1 4,14.05 4,12C4,9.95 4.78,7.9 6.34,6.34L7.75,7.75C6.59,8.93 6,10.46 6,12C6,13.54 6.59,15.07 7.76,16.24M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M17.66,17.66L16.25,16.25C17.41,15.07 18,13.54 18,12C18,10.46 17.41,8.93 16.24,7.76L17.65,6.35C19.22,7.9 20,9.95 20,12C20,14.05 19.22,16.1 17.66,17.66M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z";
var mdiSurroundSound20 = "M17,7H19A2,2 0 0,1 21,9V15A2,2 0 0,1 19,17H17A2,2 0 0,1 15,15V9A2,2 0 0,1 17,7M17,9V15H19V9H17M9,17H3V15L7,9H3V7H7A2,2 0 0,1 9,9C9,9.42 8.87,9.81 8.65,10.13L5.41,15H9V17M12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17Z";
var mdiSurroundSound21 = "M4 7V9H8V11H6A2 2 0 0 0 4 13V17H10V15H6V13H8A2 2 0 0 0 10 11V9A2 2 0 0 0 8 7H4M16 7V9H18V17H20V7H16M12 15V17H14V15H12Z";
var mdiSurroundSound31 = "M13,17A1,1 0 0,1 12,16A1,1 0 0,1 13,15A1,1 0 0,1 14,16A1,1 0 0,1 13,17M19,7V15H20V17H16V15H17V9H16L17,7H19M4,7H8A2,2 0 0,1 10,9V15A2,2 0 0,1 8,17H4V15H8V13H5V11H8V9H4V7Z";
var mdiSurroundSound51 = "M13,17A1,1 0 0,1 12,16A1,1 0 0,1 13,15A1,1 0 0,1 14,16A1,1 0 0,1 13,17M19,7V15H20V17H16V15H17V9H16L17,7H19M6,13A2,2 0 0,1 4,11V7H10V9H6V11H8A2,2 0 0,1 10,13V15A2,2 0 0,1 8,17H4V15H8V13H6Z";
var mdiSurroundSound512 = "M2 8V13H5V14H2V16H5C6.11 16 7 15.11 7 14V13C7 11.9 6.11 11 5 11H4V10H7V8H2M10 8V10H11V16H13V8H10M17 8V10H20V11H19C17.9 11 17 11.9 17 13V16H22V14H19V13H20C21.11 13 22 12.11 22 11V10C22 8.9 21.11 8 20 8H17M8 14V16H10V14H8M14 14V16H16V14H14Z";
var mdiSurroundSound71 = "M12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17M18,7V15H19V17H15V15H16V9H15L16,7H18M11,7L8,17H6L8.4,9H5V7H11Z";
var mdiSvg = "M5.13,10.71H8.87L6.22,8.06C5.21,8.06 4.39,7.24 4.39,6.22A1.83,1.83 0 0,1 6.22,4.39C7.24,4.39 8.06,5.21 8.06,6.22L10.71,8.87V5.13C10,4.41 10,3.25 10.71,2.54C11.42,1.82 12.58,1.82 13.29,2.54C14,3.25 14,4.41 13.29,5.13V8.87L15.95,6.22C15.95,5.21 16.76,4.39 17.78,4.39C18.79,4.39 19.61,5.21 19.61,6.22C19.61,7.24 18.79,8.06 17.78,8.06L15.13,10.71H18.87C19.59,10 20.75,10 21.46,10.71C22.18,11.42 22.18,12.58 21.46,13.29C20.75,14 19.59,14 18.87,13.29H15.13L17.78,15.95C18.79,15.95 19.61,16.76 19.61,17.78A1.83,1.83 0 0,1 17.78,19.61C16.76,19.61 15.95,18.79 15.95,17.78L13.29,15.13V18.87C14,19.59 14,20.75 13.29,21.46C12.58,22.18 11.42,22.18 10.71,21.46C10,20.75 10,19.59 10.71,18.87V15.13L8.06,17.78C8.06,18.79 7.24,19.61 6.22,19.61C5.21,19.61 4.39,18.79 4.39,17.78C4.39,16.76 5.21,15.95 6.22,15.95L8.87,13.29H5.13C4.41,14 3.25,14 2.54,13.29C1.82,12.58 1.82,11.42 2.54,10.71C3.25,10 4.41,10 5.13,10.71Z";
var mdiSwapHorizontal = "M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z";
var mdiSwapHorizontalBold = "M8,10V13H14V18H8V21L2,15.5L8,10M22,8.5L16,3V6H10V11H16V14L22,8.5Z";
var mdiSwapHorizontalCircle = "M22 12C22 6.5 17.5 2 12 2S2 6.5 2 12 6.5 22 12 22 22 17.5 22 12M15 6.5L18.5 10L15 13.5V11H11V9H15V6.5M9 17.5L5.5 14L9 10.5V13H13V15H9V17.5Z";
var mdiSwapHorizontalCircleOutline = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M15 6.5V9H11V11H15V13.5L18.5 10L15 6.5M9 10.5L5.5 14L9 17.5V15H13V13H9V10.5Z";
var mdiSwapHorizontalVariant = "M4,6L8,10V7H16A2,2 0 0,1 18,9A2,2 0 0,1 16,11H8A4,4 0 0,0 4,15A4,4 0 0,0 8,19H16V22L20,18L16,14V17H8A2,2 0 0,1 6,15A2,2 0 0,1 8,13H16A4,4 0 0,0 20,9A4,4 0 0,0 16,5H8V2L4,6Z";
var mdiSwapVertical = "M9,3L5,7H8V14H10V7H13M16,17V10H14V17H11L15,21L19,17H16Z";
var mdiSwapVerticalBold = "M14,8H11V14H6V8H3L8.5,2L14,8M15.5,22L21,16H18V10H13V16H10L15.5,22Z";
var mdiSwapVerticalCircle = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M6.5 9L10 5.5L13.5 9H11V13H9V9H6.5M17.5 15L14 18.5L10.5 15H13V11H15V15H17.5Z";
var mdiSwapVerticalCircleOutline = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M6.5 9L10 5.5L13.5 9H11V13H9V9H6.5M17.5 15L14 18.5L10.5 15H13V11H15V15H17.5Z";
var mdiSwapVerticalVariant = "M18,4L14,8H17V16A2,2 0 0,1 15,18A2,2 0 0,1 13,16V8A4,4 0 0,0 9,4A4,4 0 0,0 5,8V16H2L6,20L10,16H7V8A2,2 0 0,1 9,6A2,2 0 0,1 11,8V16A4,4 0 0,0 15,20A4,4 0 0,0 19,16V8H22L18,4Z";
var mdiSwim = "M2,18C4.22,17 6.44,16 8.67,16C10.89,16 13.11,18 15.33,18C17.56,18 19.78,16 22,16V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V18M8.67,13C7.89,13 7.12,13.12 6.35,13.32L11.27,9.88L10.23,8.64C10.09,8.47 10,8.24 10,8C10,7.66 10.17,7.35 10.44,7.17L16.16,3.17L17.31,4.8L12.47,8.19L17.7,14.42C16.91,14.75 16.12,15 15.33,15C13.11,15 10.89,13 8.67,13M18,7A2,2 0 0,1 20,9A2,2 0 0,1 18,11A2,2 0 0,1 16,9A2,2 0 0,1 18,7Z";
var mdiSwitch = "M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H8A1,1 0 0,1 7,15V3A1,1 0 0,1 8,2H16A1,1 0 0,1 17,3V15A1,1 0 0,1 16,16H13V18M13,6H14V4H13V6M9,4V6H11V4H9M9,8V10H11V8H9M9,12V14H11V12H9Z";
var mdiSword = "M6.92,5H5L14,14L15,13.06M19.96,19.12L19.12,19.96C18.73,20.35 18.1,20.35 17.71,19.96L14.59,16.84L11.91,19.5L10.5,18.09L11.92,16.67L3,7.75V3H7.75L16.67,11.92L18.09,10.5L19.5,11.91L16.83,14.58L19.95,17.7C20.35,18.1 20.35,18.73 19.96,19.12Z";
var mdiSwordCross = "M6.2,2.44L18.1,14.34L20.22,12.22L21.63,13.63L19.16,16.1L22.34,19.28C22.73,19.67 22.73,20.3 22.34,20.69L21.63,21.4C21.24,21.79 20.61,21.79 20.22,21.4L17,18.23L14.56,20.7L13.15,19.29L15.27,17.17L3.37,5.27V2.44H6.2M15.89,10L20.63,5.26V2.44H17.8L13.06,7.18L15.89,10M10.94,15L8.11,12.13L5.9,14.34L3.78,12.22L2.37,13.63L4.84,16.1L1.66,19.29C1.27,19.68 1.27,20.31 1.66,20.7L2.37,21.41C2.76,21.8 3.39,21.8 3.78,21.41L7,18.23L9.44,20.7L10.85,19.29L8.73,17.17L10.94,15Z";
var mdiSyllabaryHangul = "M8 4V6H4V8H6.39C5.55 8.74 5 9.8 5 11C5 13.2 6.8 15 9 15C11.2 15 13 13.2 13 11C13 9.8 12.45 8.74 11.61 8H14V6H10V4M15 4V16H17V11H20V9H17V4M9 9C10.12 9 11 9.88 11 11C11 12.12 10.12 13 9 13C7.88 13 7 12.12 7 11C7 9.88 7.88 9 9 9M7 16V20H17V18H9V16Z";
var mdiSyllabaryHiragana = "M9 4V6H6V8H9V10C6.25 10 4 12.27 4 15.03C4 17.8 6.26 20.06 9.03 20.06C9.89 20.06 10.72 19.77 11.4 19.26C11.63 19.54 11.88 19.82 12.15 20.09L13.56 18.67C13.3 18.42 13.07 18.15 12.86 17.89L13.86 16.89C14.93 15.82 15.78 14.23 16.42 12.59C17.31 13.11 18 13.9 18 15C18 16.32 17.47 17.6 16.54 18.54L17.95 19.95C19.26 18.64 20 16.86 20 15C20 13.04 18.82 11.36 17.15 10.55L17.5 9.29L15.55 8.78L15.21 10.05C15.13 10.05 15.06 10 14.97 10H11V8H16V6H11V4M11 12H14.5C13.94 13.37 13.19 14.72 12.44 15.47L11.79 16.13C11.25 14.93 11 13.59 11 12M9 12C9 14.07 9.41 15.94 10.3 17.59C9.94 17.89 9.5 18.06 9.03 18.06C7.33 18.06 6 16.73 6 15.03C6 13.34 7.32 12 9 12Z";
var mdiSyllabaryKatakana = "M4 4V6H18V6.09L14.29 9.79L15.71 11.21L20 6.91V4M11 9V13C11 15.78 10.25 16.89 8.36 18.46L9.64 20C11.75 18.24 13 16.22 13 13V9Z";
var mdiSyllabaryKatakanaHalfwidth = "M8 4V6H14L13 10.81L15 11.2L16 6.1V4M10 9V12C10 14.86 9.34 17.29 8.08 18.61L9.5 20C11.35 18.08 12 15.15 12 12V9Z";
var mdiSymbol = "M2 7V14H4V7H2M6 7V9H10V11H8V14H10V13C11.11 13 12 12.11 12 11V9C12 7.89 11.11 7 10 7H6M15.8 7L15.6 9H14V11H15.4L15.2 13H14V15H15L14.8 17H16.8L17 15H18.4L18.2 17H20.2L20.4 15H22V13H20.6L20.8 11H22V9H21L21.2 7H19.2L19 9H17.6L17.8 7H15.8M17.4 11H18.8L18.6 13H17.2L17.4 11M2 15V17H4V15H2M8 15V17H10V15H8Z";
var mdiSymfony = "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.37,5.7V5.7C17.39,5.67 18.15,6.13 18.21,6.84C18.22,7.15 18.04,7.75 17.42,7.77C16.95,7.79 16.63,7.5 16.62,7.09C16.61,6.93 16.88,6.42 16.88,6.33C16.87,6.06 16.47,6.05 16.36,6.06C14.86,6.11 14.46,8.13 14.14,9.78L14,10.65C14.84,10.78 15.46,10.62 15.8,10.4C16.28,10.09 15.66,9.77 15.74,9.41C15.82,9.04 16.15,8.87 16.41,8.86C16.78,8.85 17.04,9.23 17.03,9.62C17,10.26 16.17,11.14 14.5,11.1C14.28,11.1 14.09,11.08 13.91,11.06C13.3,14.16 12.92,16 11.56,17.58C10.39,18.97 9.2,19.18 8.67,19.2C7.67,19.24 7,18.71 7,18C6.97,17.32 7.57,16.94 7.97,16.93C8.5,16.91 8.87,17.3 8.88,17.74C8.9,18.11 8.7,18.23 8.57,18.3C8.5,18.37 8.35,18.45 8.36,18.6C8.36,18.67 8.43,18.82 8.65,18.81C9.07,18.8 9.34,18.59 9.54,18.45C10.5,17.65 10.88,16.24 11.37,13.68C11.63,12.23 11.82,11.3 12.1,10.38C11.42,9.87 11,9.23 10.09,9C9.46,8.81 9.08,8.96 8.81,9.3C8.5,9.71 8.6,10.23 8.9,10.54C10.05,11.82 10.39,12.38 10.26,13.14C10.06,14.35 8.62,15.27 6.92,14.75C5.47,14.3 5.2,13.28 5.37,12.71C5.53,12.22 5.92,12.12 6.31,12.24C6.73,12.37 6.89,12.87 6.77,13.26C6.75,13.3 6.55,13.67 6.5,13.79C6.41,14.1 6.83,14.31 7.12,14.4C7.77,14.6 8.4,14.26 8.55,13.73C8.7,13.25 8.4,12.91 8.27,12.78C7.38,11.8 6.76,10.93 7.06,9.95C7.18,9.58 7.42,9.18 7.78,8.91C8.53,8.36 9.35,8.26 10.12,8.5C11.13,8.77 11.61,9.44 12.24,9.95C12.59,8.93 13.08,7.92 13.81,7.07C14.47,6.3 15.35,5.74 16.37,5.7Z";
var mdiSync = "M12,18A6,6 0 0,1 6,12C6,11 6.25,10.03 6.7,9.2L5.24,7.74C4.46,8.97 4,10.43 4,12A8,8 0 0,0 12,20V23L16,19L12,15M12,4V1L8,5L12,9V6A6,6 0 0,1 18,12C18,13 17.75,13.97 17.3,14.8L18.76,16.26C19.54,15.03 20,13.57 20,12A8,8 0 0,0 12,4Z";
var mdiSyncAlert = "M11,13H13V7H11M21,4H15V10L17.24,7.76C18.32,8.85 19,10.34 19,12C19,14.61 17.33,16.83 15,17.65V19.74C18.45,18.85 21,15.73 21,12C21,9.79 20.09,7.8 18.64,6.36M11,17H13V15H11M3,12C3,14.21 3.91,16.2 5.36,17.64L3,20H9V14L6.76,16.24C5.68,15.15 5,13.66 5,12C5,9.39 6.67,7.17 9,6.35V4.26C5.55,5.15 3,8.27 3,12Z";
var mdiSyncCircle = "M2 12A10 10 0 1 0 12 2A10 10 0 0 0 2 12M15.6 13.72A4 4 0 0 0 16 12A4 4 0 0 0 12 8V10L8.88 7L12 4V6A6 6 0 0 1 18 12A5.9 5.9 0 0 1 17.07 15.19M6 12A5.9 5.9 0 0 1 6.93 8.81L8.4 10.28A4 4 0 0 0 8 12A4 4 0 0 0 12 16V14L15 17L12 20V18A6 6 0 0 1 6 12Z";
var mdiSyncOff = "M20,4H14V10L16.24,7.76C17.32,8.85 18,10.34 18,12C18,13 17.75,13.94 17.32,14.77L18.78,16.23C19.55,15 20,13.56 20,12C20,9.79 19.09,7.8 17.64,6.36L20,4M2.86,5.41L5.22,7.77C4.45,9 4,10.44 4,12C4,14.21 4.91,16.2 6.36,17.64L4,20H10V14L7.76,16.24C6.68,15.15 6,13.66 6,12C6,11 6.25,10.06 6.68,9.23L14.76,17.31C14.5,17.44 14.26,17.56 14,17.65V19.74C14.79,19.53 15.54,19.2 16.22,18.78L18.58,21.14L19.85,19.87L4.14,4.14L2.86,5.41M10,6.35V4.26C9.2,4.47 8.45,4.8 7.77,5.22L9.23,6.68C9.5,6.56 9.73,6.44 10,6.35Z";
var mdiTab = "M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H3V5H13V9H21V19Z";
var mdiTabMinus = "M3,3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3H3M3,5H13V9H21V19H3V5M7,13V15H15V13H7Z";
var mdiTabPlus = "M3,3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3H3M3,5H13V9H21V19H3V5M10,10V13H7V15H10V18H12V15H15V13H12V10H10Z";
var mdiTabRemove = "M7.46,11.88L8.88,10.46L11,12.59L13.12,10.46L14.54,11.88L12.41,14L14.54,16.12L13.12,17.54L11,15.41L8.88,17.54L7.46,16.12L9.59,14L7.46,11.88M3,3H21A2,2 0 0,1 23,5V19A2,2 0 0,1 21,21H3A2,2 0 0,1 1,19V5A2,2 0 0,1 3,3M3,5V19H21V9H13V5H3Z";
var mdiTabUnselected = "M1,9H3V7H1V9M1,13H3V11H1V13M1,5H3V3A2,2 0 0,0 1,5M9,21H11V19H9V21M1,17H3V15H1V17M3,21V19H1A2,2 0 0,0 3,21M21,3H13V9H23V5A2,2 0 0,0 21,3M21,17H23V15H21V17M9,5H11V3H9V5M5,21H7V19H5V21M5,5H7V3H5V5M21,21A2,2 0 0,0 23,19H21V21M21,13H23V11H21V13M13,21H15V19H13V21M17,21H19V19H17V21Z";
var mdiTable = "M5,4H19A2,2 0 0,1 21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4M5,8V12H11V8H5M13,8V12H19V8H13M5,14V18H11V14H5M13,14V18H19V14H13Z";
var mdiTableAccount = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M23 22V21C23 19.67 20.33 19 19 19S15 19.67 15 21V22H23M19 14C17.9 14 17 14.9 17 16S17.9 18 19 18 21 17.11 21 16 20.11 14 19 14Z";
var mdiTableAlert = "M3 4H17C18.11 4 19 4.89 19 6V18C19 19.11 18.11 20 17 20H3C1.9 20 1 19.11 1 18V6C1 4.89 1.9 4 3 4M3 8V12H9V8H3M11 8V12H17V8H11M3 14V18H9V14H3M11 14V18H17V14H11M23 7H21V13H23V7M23 15H21V17H23V15Z";
var mdiTableArrowDown = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M15.94 18.5H17.94V14.5H19.94V18.5H21.94L18.94 21.5L15.94 18.5";
var mdiTableArrowLeft = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M18.44 15V17H22.44V19H18.44V21L15.44 18L18.44 15";
var mdiTableArrowRight = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M19.44 21V19H15.44V17H19.44V15L22.44 18L19.44 21";
var mdiTableArrowUp = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M21.94 17.5H19.94V21.5H17.94V17.5H15.94L18.94 14.5L21.94 17.5";
var mdiTableBorder = "M21,19A1,1 0 0,1 20,20H19V18H21V19M15,20V18H17V20H15M11,20V18H13V20H11M7,20V18H9V20H7M4,20A1,1 0 0,1 3,19V18H5V20H4M19,4H5A2,2 0 0,0 3,6V8H5L11,8H13L19,8H21V6C21,4.89 20.11,4 19,4M5,14H3V16H5V14M5,10H3V12H5V10M21,10H19V12H21V10M21,14H19V16H21V14M11,16V14H13V16H11M11,12V10H13V12H11";
var mdiTableCancel = "M3 3H17C18.11 3 19 3.9 19 5V12.08C17.45 11.82 15.92 12.18 14.68 13H11V17H12.08C11.97 17.68 11.97 18.35 12.08 19H3C1.9 19 1 18.11 1 17V5C1 3.9 1.9 3 3 3M3 7V11H9V7H3M11 7V11H17V7H11M3 13V17H9V13H3M18.5 14C16 14 14 16 14 18.5S16 23 18.5 23 23 21 23 18.5 21 14 18.5 14M18.5 21.5C16.84 21.5 15.5 20.16 15.5 18.5C15.5 17.94 15.65 17.42 15.92 17L20 21.08C19.58 21.35 19.06 21.5 18.5 21.5M21.08 20L17 15.92C17.42 15.65 17.94 15.5 18.5 15.5C20.16 15.5 21.5 16.84 21.5 18.5C21.5 19.06 21.35 19.58 21.08 20Z";
var mdiTableChair = "M12 22H6A2 2 0 0 1 8 20V8H2V5H16V8H10V20A2 2 0 0 1 12 22M22 2V22H20V15H15V22H13V14A2 2 0 0 1 15 12H20V2Z";
var mdiTableCheck = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M17.75 21L15 18L16.16 16.84L17.75 18.43L21.34 14.84L22.5 16.25L17.75 21";
var mdiTableClock = "M16.5 15.82L18.94 17.23L18.19 18.53L15 16.69V13H16.5V15.82M20 10.26V5C20 3.9 19.11 3 18 3H4C2.9 3 2 3.9 2 5V17C2 18.11 2.9 19 4 19H9.68C10.81 21.36 13.21 23 16 23C19.87 23 23 19.87 23 16C23 13.62 21.81 11.53 20 10.26M18 7V9.29C17.37 9.11 16.7 9 16 9C14.5 9 13.13 9.47 12 10.26V7H18M4 7H10V11H4V7M4 17V13H9.68C9.25 13.91 9 14.93 9 16C9 16.34 9.03 16.67 9.08 17H4M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21Z";
var mdiTableCog = "M3 3H17C18.11 3 19 3.9 19 5V12.08C17.45 11.82 15.92 12.18 14.68 13H11V17H12.08C11.97 17.68 11.97 18.35 12.08 19H3C1.9 19 1 18.11 1 17V5C1 3.9 1.9 3 3 3M3 7V11H9V7H3M11 7V11H17V7H11M3 13V17H9V13H3M22.78 19.32L21.71 18.5C21.73 18.33 21.75 18.17 21.75 18S21.74 17.67 21.71 17.5L22.77 16.68C22.86 16.6 22.89 16.47 22.83 16.36L21.83 14.63C21.77 14.5 21.64 14.5 21.5 14.5L20.28 15C20 14.82 19.74 14.65 19.43 14.53L19.24 13.21C19.23 13.09 19.12 13 19 13H17C16.88 13 16.77 13.09 16.75 13.21L16.56 14.53C16.26 14.66 15.97 14.82 15.71 15L14.47 14.5C14.36 14.5 14.23 14.5 14.16 14.63L13.16 16.36C13.1 16.47 13.12 16.6 13.22 16.68L14.28 17.5C14.26 17.67 14.25 17.83 14.25 18S14.26 18.33 14.28 18.5L13.22 19.32C13.13 19.4 13.1 19.53 13.16 19.64L14.16 21.37C14.22 21.5 14.35 21.5 14.47 21.5L15.71 21C15.97 21.18 16.25 21.35 16.56 21.47L16.75 22.79C16.77 22.91 16.87 23 17 23H19C19.12 23 19.23 22.91 19.25 22.79L19.44 21.47C19.74 21.34 20 21.18 20.28 21L21.5 21.5C21.64 21.5 21.77 21.5 21.84 21.37L22.84 19.64C22.9 19.53 22.87 19.4 22.78 19.32M18 19.5C17.17 19.5 16.5 18.83 16.5 18S17.18 16.5 18 16.5 19.5 17.17 19.5 18 18.84 19.5 18 19.5Z";
var mdiTableColumn = "M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,10V14H16V10H8M8,16V20H16V16H8M8,4V8H16V4H8Z";
var mdiTableColumnPlusAfter = "M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z";
var mdiTableColumnPlusBefore = "M13,2A2,2 0 0,0 11,4V20A2,2 0 0,0 13,22H22V2H13M20,10V14H13V10H20M20,16V20H13V16H20M20,4V8H13V4H20M9,11H6V8H4V11H1V13H4V16H6V13H9V11Z";
var mdiTableColumnRemove = "M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z";
var mdiTableColumnWidth = "M5,8H19A2,2 0 0,1 21,10V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V10A2,2 0 0,1 5,8M5,12V15H11V12H5M13,12V15H19V12H13M5,17V20H11V17H5M13,17V20H19V17H13M11,2H21V6H19V4H13V6H11V2Z";
var mdiTableEdit = "M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.08 20.21,11.08 20.42,11.3L21.7,12.58C21.92,12.79 21.92,13.14 21.7,13.35M12,18.94L18.07,12.88L20.12,14.93L14.06,21H12V18.94M4,2H18A2,2 0 0,1 20,4V8.17L16.17,12H12V16.17L10.17,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,6V10H10V6H4M12,6V10H18V6H12M4,12V16H10V12H4Z";
var mdiTableEye = "M17 16.88C17.56 16.88 18 17.32 18 17.88S17.56 18.88 17 18.88 16 18.43 16 17.88 16.44 16.88 17 16.88M17 13.88C19.73 13.88 22.06 15.54 23 17.88C22.06 20.22 19.73 21.88 17 21.88S11.94 20.22 11 17.88C11.94 15.54 14.27 13.88 17 13.88M17 15.38C15.62 15.38 14.5 16.5 14.5 17.88S15.62 20.38 17 20.38 19.5 19.26 19.5 17.88 18.38 15.38 17 15.38M18 3H4C2.9 3 2 3.9 2 5V17C2 18.1 2.9 19 4 19H9.42C9.26 18.68 9.12 18.34 9 18C9.12 17.66 9.26 17.32 9.42 17H4V13H10V15.97C10.55 15.11 11.23 14.37 12 13.76V13H13.15C14.31 12.36 15.62 12 17 12C18.06 12 19.07 12.21 20 12.59V5C20 3.9 19.1 3 18 3M10 11H4V7H10V11M18 11H12V7H18V11Z";
var mdiTableEyeOff = "M12 8.8L6.2 3H18C19.1 3 20 3.9 20 5V12.59C19.07 12.21 18.06 12 17 12C16.45 12 15.91 12.07 15.38 12.18L14.2 11H18V7H12V8.8M17.09 13.89L22.31 19.11C22.58 18.73 22.82 18.32 23 17.88C22.07 15.57 19.78 13.92 17.09 13.89M22.11 21.46L20.84 22.73L19.5 21.37C18.71 21.69 17.88 21.88 17 21.88C14.27 21.88 11.94 20.22 11 17.88C11.45 16.76 12.23 15.8 13.21 15.1L11.93 13.82C11.19 14.42 10.53 15.14 10 15.97V13H4V17H9.42C9.26 17.32 9.12 17.66 9 18C9.12 18.34 9.26 18.68 9.42 19H4C2.9 19 2 18.1 2 17V5C2 4.68 2.08 4.38 2.22 4.11L1.11 3L2.39 1.73L22.11 21.46M9.11 11L5.11 7H4V11H9.11M18.18 20.07L14.81 16.7C14.61 17.05 14.5 17.45 14.5 17.88C14.5 19.26 15.62 20.38 17 20.38C17.43 20.38 17.83 20.27 18.18 20.07Z";
var mdiTableFurniture = "M2 7H22V10H20L21 19H18.5L17.94 14H6.06L5.5 19H3L4 10H2V7M17.5 10H6.5L6.29 12H17.71L17.5 10Z";
var mdiTableHeadersEye = "M1 6V19A2 2 0 0 0 3 21H9V11H21V6A2 2 0 0 0 19 4H3A2 2 0 0 0 1 6M3 6H7V9H3M7 19H3V16H7M7 14H3V11H7M9 9V6H13V9M19 9H15V6H19M17 16A1 1 0 1 1 16 17A1 1 0 0 1 17 16M17 13A6.45 6.45 0 0 1 23 17A6.5 6.5 0 0 1 11 17A6.45 6.45 0 0 1 17 13M17 14.5A2.5 2.5 0 1 0 19.5 17A2.5 2.5 0 0 0 17 14.5";
var mdiTableHeadersEyeOff = "M2.38 1.73L1.11 3L2.26 4.15A2 2 0 0 0 1 6V19A2 2 0 0 0 3 21H9V11H9.11L12.72 14.61A6.21 6.21 0 0 0 11 17A6.45 6.45 0 0 0 17 21A6.55 6.55 0 0 0 18.84 20.73L20.84 22.73L22.11 21.46L20.58 19.93M7 19H3V16H7M7 14H3V11H7M7 9H3V6H4.11L7 8.89M17 19.5A2.5 2.5 0 0 1 14.56 16.45L17.56 19.45A2.5 2.5 0 0 1 17 19.5M16.24 13L17.85 14.61A2.5 2.5 0 0 1 19.35 16.11L21.94 18.7A6.44 6.44 0 0 0 23 17A6.45 6.45 0 0 0 17 13H16.24M13 6V9H12.2L14.2 11H21V6A2 2 0 0 0 19 4H7.2L9.2 6M15 6H19V9H15Z";
var mdiTableHeart = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M19 22.3L18.4 21.8C16.4 19.9 15 18.7 15 17.2C15 16 16 15 17.2 15C17.9 15 18.6 15.3 19 15.8C19.4 15.3 20.1 15 20.8 15C22 15 23 15.9 23 17.2C23 18.7 21.6 19.9 19.6 21.8L19 22.3";
var mdiTableKey = "M16.83 17C16.42 15.83 15.31 15 14 15C12.34 15 11 16.34 11 18S12.34 21 14 21C15.31 21 16.42 20.17 16.83 19H19V21H21V19H22V17H16.83M14 19C13.45 19 13 18.55 13 18S13.45 17 14 17 15 17.45 15 18 14.55 19 14 19M9 18H4V14H10V15.03C10.91 13.81 12.36 13 14 13C15.1 13 16.14 13.37 17 14H18V15L18 15H20V6C20 4.89 19.11 4 18 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H9.42C9.15 19.39 9 18.71 9 18M12 8H18V12H12V8M4 8H10V12H4V8Z";
var mdiTableLarge = "M4,3H20A2,2 0 0,1 22,5V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V5A2,2 0 0,1 4,3M4,7V10H8V7H4M10,7V10H14V7H10M20,10V7H16V10H20M4,12V15H8V12H4M4,20H8V17H4V20M10,12V15H14V12H10M10,20H14V17H10V20M20,20V17H16V20H20M20,12H16V15H20V12Z";
var mdiTableLargePlus = "M12.35 20H10V17H12.09C12.21 16.28 12.46 15.61 12.81 15H10V12H14V13.54C14.58 13 15.25 12.61 16 12.35V12H20V12.35C20.75 12.61 21.42 13 22 13.54V5C22 3.9 21.1 3 20 3H4C2.9 3 2 3.9 2 5V20C2 21.1 2.9 22 4 22H13.54C13 21.42 12.61 20.75 12.35 20M16 7H20V10H16V7M10 7H14V10H10V7M8 20H4V17H8V20M8 15H4V12H8V15M8 10H4V7H8V10M17 14H19V17H22V19H19V22H17V19H14V17H17V14";
var mdiTableLargeRemove = "M12.35 20H10V17H12.09C12.21 16.28 12.46 15.61 12.81 15H10V12H14V13.54C14.58 13 15.25 12.61 16 12.35V12H20V12.35C20.75 12.61 21.42 13 22 13.54V5C22 3.9 21.1 3 20 3H4C2.9 3 2 3.9 2 5V20C2 21.1 2.9 22 4 22H13.54C13 21.42 12.61 20.75 12.35 20M16 7H20V10H16V7M10 7H14V10H10V7M8 20H4V17H8V20M8 15H4V12H8V15M8 10H4V7H8V10M14.46 15.88L15.88 14.46L18 16.59L20.12 14.46L21.54 15.88L19.41 18L21.54 20.12L20.12 21.54L18 19.41L15.88 21.54L14.46 20.12L16.59 18L14.46 15.88";
var mdiTableLock = "M21 16V15.5C21 14.12 19.88 13 18.5 13S16 14.12 16 15.5V16C15.45 16 15 16.45 15 17V21C15 21.55 15.45 22 16 22H21C21.55 22 22 21.55 22 21V17C22 16.45 21.55 16 21 16M20 16H17V15.5C17 14.67 17.67 14 18.5 14S20 14.67 20 15.5V16M13 18H12V14H14.26C14.54 13.21 15.04 12.5 15.69 12H12V8H18V11.05C18.17 11.03 18.33 11 18.5 11C19.03 11 19.53 11.1 20 11.26V6C20 4.89 19.11 4 18 4H4C2.9 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13V18M10 18H4V14H10V18M10 12H4V8H10V12Z";
var mdiTableMergeCells = "M5,10H3V4H11V6H5V10M19,18H13V20H21V14H19V18M5,18V14H3V20H11V18H5M21,4H13V6H19V10H21V4M8,13V15L11,12L8,9V11H3V13H8M16,11V9L13,12L16,15V13H21V11H16Z";
var mdiTableMinus = "M15 19V17H23V19H15M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4Z";
var mdiTableMultiple = "M7 2H21C22.11 2 23 2.9 23 4V16C23 17.11 22.11 18 21 18H7C5.9 18 5 17.11 5 16V4C5 2.9 5.9 2 7 2M7 6V10H13V6H7M15 6V10H21V6H15M7 12V16H13V12H7M15 12V16H21V12H15M3 20V6H1V20C1 21.11 1.89 22 3 22H19V20H3Z";
var mdiTableNetwork = "M15 20C15 19.45 14.55 19 14 19H13V17H19C20.11 17 21 16.11 21 15V3C21 1.9 20.11 1 19 1H5C3.9 1 3 1.9 3 3V15C3 16.11 3.9 17 5 17H11V19H10C9.45 19 9 19.45 9 20H2V22H9C9 22.55 9.45 23 10 23H14C14.55 23 15 22.55 15 22H22V20H15M13 5H19V9H13V5M13 11H19V15H13V11M5 5H11V9H5V5M5 15V11H11V15H5Z";
var mdiTableOfContents = "M3,9H17V7H3V9M3,13H17V11H3V13M3,17H17V15H3V17M19,17H21V15H19V17M19,7V9H21V7H19M19,13H21V11H19V13Z";
var mdiTableOff = "M22.11 21.46L2.39 1.73L1.11 3L3.22 5.11C3.08 5.38 3 5.68 3 6V18C3 19.11 3.9 20 5 20H18.11L20.84 22.73L22.11 21.46M10.11 12H5V8H6.11L10.11 12M11 18H5V14H11V18M13 18V14.89L16.11 18H13M13 9.8L7.2 4H19C20.11 4 21 4.89 21 6V17.8L19 15.8V14H17.2L15.2 12H19V8H13V9.8Z";
var mdiTablePicnic = "M4 6H20V9H18L18.22 11H23V13H18.44L19 18H16.5L15.94 13H8.06L7.5 18H5L5.56 13H1V11H5.78L6 9H4M15.5 9H8.5L8.29 11H15.71Z";
var mdiTablePlus = "M18,14H20V17H23V19H20V22H18V19H15V17H18V14M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z";
var mdiTableRefresh = "M18 14.5C19.11 14.5 20.11 14.95 20.83 15.67L22 14.5V18.5H18L19.77 16.73C19.32 16.28 18.69 16 18 16C16.62 16 15.5 17.12 15.5 18.5C15.5 19.88 16.62 21 18 21C18.82 21 19.55 20.61 20 20H21.71C21.12 21.47 19.68 22.5 18 22.5C15.79 22.5 14 20.71 14 18.5C14 16.29 15.79 14.5 18 14.5M4 3H18C19.11 3 20 3.9 20 5V12.17C19.5 12.06 19 12 18.5 12C17.23 12 16.04 12.37 15.04 13H12V17H12.18C12.06 17.5 12 18 12 18.5L12 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4Z";
var mdiTableRemove = "M15.46,15.88L16.88,14.46L19,16.59L21.12,14.46L22.54,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.54L15.46,20.12L17.59,18L15.46,15.88M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z";
var mdiTableRow = "M22,14A2,2 0 0,1 20,16H4A2,2 0 0,1 2,14V10A2,2 0 0,1 4,8H20A2,2 0 0,1 22,10V14M4,14H8V10H4V14M10,14H14V10H10V14M16,14H20V10H16V14Z";
var mdiTableRowHeight = "M3,5H15A2,2 0 0,1 17,7V17A2,2 0 0,1 15,19H3A2,2 0 0,1 1,17V7A2,2 0 0,1 3,5M3,9V12H8V9H3M10,9V12H15V9H10M3,14V17H8V14H3M10,14V17H15V14H10M23,14V7H19V9H21V12H19V14H23Z";
var mdiTableRowPlusAfter = "M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z";
var mdiTableRowPlusBefore = "M22,14A2,2 0 0,0 20,12H4A2,2 0 0,0 2,14V21H4V19H8V21H10V19H14V21H16V19H20V21H22V14M4,14H8V17H4V14M10,14H14V17H10V14M20,14V17H16V14H20M11,10H13V7H16V5H13V2H11V5H8V7H11V10Z";
var mdiTableRowRemove = "M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z";
var mdiTableSearch = "M19.3,17.89C20.62,15.79 20,13 17.89,11.68C15.79,10.36 13,11 11.68,13.09C10.36,15.2 11,18 13.09,19.3C14.56,20.22 16.42,20.22 17.89,19.3L21,22.39L22.39,21L19.3,17.89M17.3,17.27C16.32,18.25 14.74,18.24 13.76,17.27C12.79,16.29 12.79,14.71 13.77,13.73C14.74,12.76 16.32,12.76 17.3,13.73C18.26,14.72 18.25,16.3 17.27,17.27H17.3M19,4H5A2,2 0 0,0 3,6V18A2,2 0 0,0 5,20H10.81C10.25,19.42 9.8,18.74 9.5,18H5V14H9.18C9.34,13.29 9.61,12.61 10,12H5V8H11V10.81C11.58,10.25 12.26,9.8 13,9.5V8H19V10C19.4,10.25 19.77,10.55 20.1,10.88C20.44,11.22 20.74,11.59 21,12V6A2,2 0 0,0 19,4Z";
var mdiTableSettings = "M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22M5,4H19A2,2 0 0,1 21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4M5,8V12H11V8H5M13,8V12H19V8H13M5,14V18H11V14H5M13,14V18H19V14H13Z";
var mdiTableSplitCell = "M19 14H21V20H3V14H5V18H19V14M3 4V10H5V6H19V10H21V4H3M11 11V13H8V15L5 12L8 9V11H11M16 11V9L19 12L16 15V13H13V11H16Z";
var mdiTableStar = "M4 3H18C19.11 3 20 3.9 20 5V12.08C18.45 11.82 16.92 12.18 15.68 13H12V17H13.08C12.97 17.68 12.97 18.35 13.08 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4M16.5 21.6L17.2 18.8L15 16.9L17.9 16.7L19 14L20.1 16.6L23 16.8L20.8 18.7L21.5 21.5L19 20.1L16.5 21.6Z";
var mdiTableSync = "M19 12V13.5C21.21 13.5 23 15.29 23 17.5C23 18.32 22.76 19.08 22.33 19.71L21.24 18.62C21.41 18.28 21.5 17.9 21.5 17.5C21.5 16.12 20.38 15 19 15V16.5L16.75 14.25L19 12M19 23V21.5C16.79 21.5 15 19.71 15 17.5C15 16.68 15.25 15.92 15.67 15.29L16.76 16.38C16.59 16.72 16.5 17.1 16.5 17.5C16.5 18.88 17.62 20 19 20V18.5L21.25 20.75L19 23M4 3H18C19.11 3 20 3.9 20 5V11L19.5 11C17.66 11 16 11.77 14.81 13H12V17H13L13 17.5C13 18 13.06 18.5 13.17 19H4C2.9 19 2 18.11 2 17V5C2 3.9 2.9 3 4 3M4 7V11H10V7H4M12 7V11H18V7H12M4 13V17H10V13H4Z";
var mdiTableTennis = "M18.5,14C19.9,14 21,15.1 21,16.5C21,17.9 19.9,19 18.5,19C17.1,19 16,17.9 16,16.5C16,15.1 17.1,14 18.5,14M7,15C7,15 8,16 8,17V20.5C8,21.3 8.7,22 9.5,22C10.3,22 11,21.3 11,20.5V17C11,16 12,15 12,15H7M8,14H11C11,14 16,14 16,9C16,4 12,2 9.5,2C7,2 3,4 3,9C3,14 8,14 8,14Z";
var mdiTablet = "M19,18H5V6H19M21,4H3C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18V6C23,4.89 22.1,4 21,4Z";
var mdiTabletAndroid = "M19.25,19H4.75V3H19.25M14,22H10V21H14M18,0H6A3,3 0 0,0 3,3V21A3,3 0 0,0 6,24H18A3,3 0 0,0 21,21V3A3,3 0 0,0 18,0Z";
var mdiTabletCellphone = "M3,4H20A2,2 0 0,1 22,6V8H18V6H5V18H14V20H3A2,2 0 0,1 1,18V6A2,2 0 0,1 3,4M17,10H23A1,1 0 0,1 24,11V21A1,1 0 0,1 23,22H17A1,1 0 0,1 16,21V11A1,1 0 0,1 17,10M18,12V19H22V12H18Z";
var mdiTabletDashboard = "M19,18H5V6H19M21,4H3C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18V6C23,4.89 22.1,4 21,4M7,8H13V13H7V8M14,8H17V10H14V8M17,11V16H14V11H17M7,14H13V16H7V14Z";
var mdiTabletIpad = "M19,19H4V3H19M11.5,23A1.5,1.5 0 0,1 10,21.5A1.5,1.5 0 0,1 11.5,20A1.5,1.5 0 0,1 13,21.5A1.5,1.5 0 0,1 11.5,23M18.5,0H4.5A2.5,2.5 0 0,0 2,2.5V21.5A2.5,2.5 0 0,0 4.5,24H18.5A2.5,2.5 0 0,0 21,21.5V2.5A2.5,2.5 0 0,0 18.5,0Z";
var mdiTaco = "M19,18H5A4,4 0 0,1 1,14A8,8 0 0,1 9,6C10.06,6 11.07,6.21 12,6.58C12.93,6.21 13.94,6 15,6A8,8 0 0,1 23,14A4,4 0 0,1 19,18M3,14A2,2 0 0,0 5,16A2,2 0 0,0 7,14C7,11.63 8.03,9.5 9.67,8.04L9,8A6,6 0 0,0 3,14M19,16A2,2 0 0,0 21,14A6,6 0 0,0 15,8A6,6 0 0,0 9,14C9,14.73 8.81,15.41 8.46,16H19Z";
var mdiTag = "M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z";
var mdiTagArrowDown = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M7 19V15H5V19H3L6 22L9 19H7Z";
var mdiTagArrowDownOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M8 18V14H6V18H4L7 21L10 18H8Z";
var mdiTagArrowLeft = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M5 19H9V17H5V15L2 18L5 21V19Z";
var mdiTagArrowLeftOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M5 19H9V17H5V15L2 18L5 21V19Z";
var mdiTagArrowRight = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M6 17H2V19H6V21L9 18L6 15V17Z";
var mdiTagArrowRightOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6 17H2V19H6V21L9 18L6 15V17Z";
var mdiTagArrowUp = "M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.41L3 12.81C3.9 12.27 4.94 12 6 12C9.31 12 12 14.69 12 18C12 19.06 11.72 20.09 11.18 21L11.58 21.4C11.95 21.78 12.47 22 13 22S14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13S21.79 11.96 21.41 11.58M5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7M5 17V21H7V17H9L6 14L3 17H5Z";
var mdiTagArrowUpOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6 17V21H8V17H10L7 14L4 17H6Z";
var mdiTagFaces = "M15,18C11.68,18 9,15.31 9,12C9,8.68 11.68,6 15,6A6,6 0 0,1 21,12A6,6 0 0,1 15,18M4,13A1,1 0 0,1 3,12A1,1 0 0,1 4,11A1,1 0 0,1 5,12A1,1 0 0,1 4,13M22,3H7.63C6.97,3 6.38,3.32 6,3.81L0,12L6,20.18C6.38,20.68 6.97,21 7.63,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3M13,11A1,1 0 0,0 14,10A1,1 0 0,0 13,9A1,1 0 0,0 12,10A1,1 0 0,0 13,11M15,16C16.86,16 18.35,14.72 18.8,13H11.2C11.65,14.72 13.14,16 15,16M17,11A1,1 0 0,0 18,10A1,1 0 0,0 17,9A1,1 0 0,0 16,10A1,1 0 0,0 17,11Z";
var mdiTagHeart = "M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4A2,2 0 0,0 2,4V11C2,11.55 2.22,12.05 2.59,12.42L11.59,21.42C11.95,21.78 12.45,22 13,22C13.55,22 14.05,21.78 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.45 21.77,11.94 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M17.27,15.27L13,19.54L8.73,15.27C8.28,14.81 8,14.19 8,13.5A2.5,2.5 0 0,1 10.5,11C11.19,11 11.82,11.28 12.27,11.74L13,12.46L13.73,11.73C14.18,11.28 14.81,11 15.5,11A2.5,2.5 0 0,1 18,13.5C18,14.19 17.72,14.82 17.27,15.27Z";
var mdiTagHeartOutline = "M4,2A2,2 0 0,0 2,4V11C2,11.55 2.22,12.05 2.59,12.42L11.59,21.42C11.95,21.78 12.45,22 13,22C13.55,22 14.05,21.78 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.45 21.77,11.94 21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4V2M11,4L20,13L13,20L4,11V4H11V4H11M6.5,5A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 8,6.5A1.5,1.5 0 0,0 6.5,5M10.95,10.5C9.82,10.5 8.9,11.42 8.9,12.55C8.9,13.12 9.13,13.62 9.5,14L13,17.5L16.5,14C16.87,13.63 17.1,13.11 17.1,12.55A2.05,2.05 0 0,0 15.05,10.5C14.5,10.5 13.97,10.73 13.6,11.1L13,11.7L12.4,11.11C12.03,10.73 11.5,10.5 10.95,10.5Z";
var mdiTagMinus = "M21.41,11.58L12.41,2.58C12.04,2.21 11.53,2 11,2H4A2,2 0 0,0 2,4V11C2,11.53 2.21,12.04 2.59,12.41L3,12.81C3.9,12.27 4.94,12 6,12A6,6 0 0,1 12,18C12,19.06 11.72,20.09 11.18,21L11.58,21.4C11.95,21.78 12.47,22 13,22C13.53,22 14.04,21.79 14.41,21.41L21.41,14.41C21.79,14.04 22,13.53 22,13C22,12.47 21.79,11.96 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M10,19H2V17H10V19Z";
var mdiTagMinusOutline = "M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M21.41 11.58L12.41 2.58C12.04 2.21 11.53 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.53 2.21 12.04 2.59 12.42L3 12.82C3.64 12.44 4.35 12.19 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92C11.82 19.66 11.56 20.36 11.18 21L11.59 21.41C11.96 21.79 12.47 22 13 22C13.53 22 14.04 21.79 14.41 21.41L21.41 14.41C21.79 14.04 22 13.53 22 13C22 12.47 21.79 11.96 21.41 11.58M6.5 5C5.67 5 5 5.67 5 6.5S5.67 8 6.5 8 8 7.33 8 6.5 7.33 5 6.5 5M10 19H2V17H10V19Z";
var mdiTagMultiple = "M5.5,9A1.5,1.5 0 0,0 7,7.5A1.5,1.5 0 0,0 5.5,6A1.5,1.5 0 0,0 4,7.5A1.5,1.5 0 0,0 5.5,9M17.41,11.58C17.77,11.94 18,12.44 18,13C18,13.55 17.78,14.05 17.41,14.41L12.41,19.41C12.05,19.77 11.55,20 11,20C10.45,20 9.95,19.78 9.58,19.41L2.59,12.42C2.22,12.05 2,11.55 2,11V6C2,4.89 2.89,4 4,4H9C9.55,4 10.05,4.22 10.41,4.58L17.41,11.58M13.54,5.71L14.54,4.71L21.41,11.58C21.78,11.94 22,12.45 22,13C22,13.55 21.78,14.05 21.42,14.41L16.04,19.79L15.04,18.79L20.75,13L13.54,5.71Z";
var mdiTagMultipleOutline = "M6.5 10C7.3 10 8 9.3 8 8.5S7.3 7 6.5 7 5 7.7 5 8.5 5.7 10 6.5 10M9 6L16 13L11 18L4 11V6H9M9 4H4C2.9 4 2 4.9 2 6V11C2 11.6 2.2 12.1 2.6 12.4L9.6 19.4C9.9 19.8 10.4 20 11 20S12.1 19.8 12.4 19.4L17.4 14.4C17.8 14 18 13.5 18 13C18 12.4 17.8 11.9 17.4 11.6L10.4 4.6C10.1 4.2 9.6 4 9 4M13.5 5.7L14.5 4.7L21.4 11.6C21.8 12 22 12.5 22 13S21.8 14.1 21.4 14.4L16 19.8L15 18.8L20.7 13L13.5 5.7Z";
var mdiTagOff = "M18.33 8.5L22.92 3.92L21.5 2.5L2.5 21.5L3.92 22.92L8.5 18.33L11.58 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M5.61 15.43L15.47 5.65L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.41M5.5 4A1.5 1.5 0 1 1 4 5.5A1.5 1.5 0 0 1 5.5 4Z";
var mdiTagOffOutline = "M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M18.33 8.5L22.92 3.92L21.5 2.5L2.5 21.5L3.92 22.92L8.5 18.33L11.59 21.42A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M13 20L9.92 16.92L16.92 9.92L20 13M5.61 15.43L7 14L4 11V4H11L14.06 7.06L15.47 5.66L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42M5 6.5A1.5 1.5 0 1 0 6.5 5A1.5 1.5 0 0 0 5 6.5Z";
var mdiTagOutline = "M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L11.59 21.42A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M13 20L4 11V4H11L20 13M6.5 5A1.5 1.5 0 1 1 5 6.5A1.5 1.5 0 0 1 6.5 5Z";
var mdiTagPlus = "M21.41,11.58L12.41,2.58C12.04,2.21 11.53,2 11,2H4A2,2 0 0,0 2,4V11C2,11.53 2.21,12.04 2.59,12.41L3,12.81C3.9,12.27 4.94,12 6,12A6,6 0 0,1 12,18C12,19.06 11.72,20.09 11.18,21L11.58,21.4C11.95,21.78 12.47,22 13,22C13.53,22 14.04,21.79 14.41,21.41L21.41,14.41C21.79,14.04 22,13.53 22,13C22,12.47 21.79,11.96 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M10,19H7V22H5V19H2V17H5V14H7V17H10V19Z";
var mdiTagPlusOutline = "M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L3 12.82A5.62 5.62 0 0 1 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92A5.57 5.57 0 0 1 11.18 21L11.59 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M10 19H7V22H5V19H2V17H5V14H7V17H10Z";
var mdiTagRemove = "M21.41,11.58L12.41,2.58C12.04,2.21 11.53,2 11,2H4A2,2 0 0,0 2,4V11C2,11.53 2.21,12.04 2.59,12.41L3,12.81C3.9,12.27 4.94,12 6,12A6,6 0 0,1 12,18C12,19.06 11.72,20.09 11.18,21L11.58,21.4C11.95,21.78 12.47,22 13,22C13.53,22 14.04,21.79 14.41,21.41L21.41,14.41C21.79,14.04 22,13.53 22,13C22,12.47 21.79,11.96 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M8.12,21.54L6,19.41L3.88,21.54L2.46,20.12L4.59,18L2.46,15.88L3.87,14.47L6,16.59L8.12,14.47L9.53,15.88L7.41,18L9.53,20.12L8.12,21.54Z";
var mdiTagRemoveOutline = "M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L3 12.82A5.62 5.62 0 0 1 5.08 12.08L4 11V4H11L20 13L13 20L11.92 18.92A5.57 5.57 0 0 1 11.18 21L11.59 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M6.5 5A1.5 1.5 0 1 0 8 6.5A1.5 1.5 0 0 0 6.5 5M8.12 21.54L6 19.41L3.88 21.54L2.46 20.12L4.59 18L2.46 15.88L3.88 14.46L6 16.59L8.12 14.46L9.54 15.88L7.41 18L9.54 20.12Z";
var mdiTagText = "M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.41L11.59 21.41A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M6.5 8A1.5 1.5 0 1 1 8 6.5A1.5 1.5 0 0 1 6.5 8M11.59 15.41L7.59 11.41L9 10L13 14M15.59 14.41L10.09 8.91L11.5 7.5L17 13Z";
var mdiTagTextOutline = "M21.4 11.6L12.4 2.6C12 2.2 11.5 2 11 2H4C2.9 2 2 2.9 2 4V11C2 11.5 2.2 12 2.6 12.4L11.6 21.4C12 21.8 12.5 22 13 22C13.5 22 14 21.8 14.4 21.4L21.4 14.4C21.8 14 22 13.5 22 13C22 12.5 21.8 12 21.4 11.6M13 20L4 11V4H11L20 13M6.5 5C7.3 5 8 5.7 8 6.5S7.3 8 6.5 8 5 7.3 5 6.5 5.7 5 6.5 5M10.1 8.9L11.5 7.5L17 13L15.6 14.4L10.1 8.9M7.6 11.4L9 10L13 14L11.6 15.4L7.6 11.4Z";
var mdiTailwind = "M12 6C9.33 6 7.67 7.33 7 10C8 8.67 9.17 8.17 10.5 8.5C11.26 8.69 11.81 9.24 12.41 9.85C13.39 10.85 14.5 12 17 12C19.67 12 21.33 10.67 22 8C21 9.33 19.83 9.83 18.5 9.5C17.74 9.31 17.2 8.76 16.59 8.15C15.61 7.15 14.5 6 12 6M7 12C4.33 12 2.67 13.33 2 16C3 14.67 4.17 14.17 5.5 14.5C6.26 14.69 6.8 15.24 7.41 15.85C8.39 16.85 9.5 18 12 18C14.67 18 16.33 16.67 17 14C16 15.33 14.83 15.83 13.5 15.5C12.74 15.31 12.2 14.76 11.59 14.15C10.61 13.15 9.5 12 7 12Z";
var mdiTank = "M20,12H4V11H6L7,6H12L13,11H20V12M13.22,7L13.62,9H22V7H13.22M22,16A3,3 0 0,1 19,19H5A3,3 0 0,1 2,16A3,3 0 0,1 5,13H19A3,3 0 0,1 22,16M6,16A1,1 0 0,0 5,15A1,1 0 0,0 4,16A1,1 0 0,0 5,17A1,1 0 0,0 6,16M13,16A1,1 0 0,0 12,15A1,1 0 0,0 11,16A1,1 0 0,0 12,17A1,1 0 0,0 13,16M20,16A1,1 0 0,0 19,15A1,1 0 0,0 18,16A1,1 0 0,0 19,17A1,1 0 0,0 20,16Z";
var mdiTankerTruck = "M20 8H15V14H2V17H3C3 18.7 4.3 20 6 20S9 18.7 9 17H15C15 18.7 16.3 20 18 20S21 18.7 21 17H23V12L20 8M6 18.5C5.2 18.5 4.5 17.8 4.5 17S5.2 15.5 6 15.5 7.5 16.2 7.5 17 6.8 18.5 6 18.5M18 18.5C17.2 18.5 16.5 17.8 16.5 17S17.2 15.5 18 15.5 19.5 16.2 19.5 17 18.8 18.5 18 18.5M17 12V9.5H19.5L21.5 12H17M14 9.5C14 11.4 12.4 13 10.5 13H4.5C2.6 13 1 11.4 1 9.5S2.6 6 4.5 6H5V5H4V4H8V5H7V6H10.5C12.4 6 14 7.6 14 9.5Z";
var mdiTapeDrive = "M12 10C13.11 10 14 10.9 14 12C14 13.11 13.11 14 12 14C10.9 14 10 13.11 10 12C10 10.9 10.9 10 12 10M5 3H19C20.11 3 21 3.9 21 5V17H16.9C18.2 15.73 19 13.96 19 12C19 8.13 15.87 5 12 5C8.13 5 5 8.13 5 12C5 15.87 8.13 19 12 19H21C21 20.11 20.11 21 19 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3Z";
var mdiTapeMeasure = "M9,5A7,7 0 0,1 16,12H17V15H16V19H9A7,7 0 0,1 2,12A7,7 0 0,1 9,5M9,8A4,4 0 0,0 5,12A4,4 0 0,0 9,16A4,4 0 0,0 13,12A4,4 0 0,0 9,8M17,17H22V19L22,21H20V19H17V17Z";
var mdiTarget = "M11,2V4.07C7.38,4.53 4.53,7.38 4.07,11H2V13H4.07C4.53,16.62 7.38,19.47 11,19.93V22H13V19.93C16.62,19.47 19.47,16.62 19.93,13H22V11H19.93C19.47,7.38 16.62,4.53 13,4.07V2M11,6.08V8H13V6.09C15.5,6.5 17.5,8.5 17.92,11H16V13H17.91C17.5,15.5 15.5,17.5 13,17.92V16H11V17.91C8.5,17.5 6.5,15.5 6.08,13H8V11H6.09C6.5,8.5 8.5,6.5 11,6.08M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11Z";
var mdiTargetAccount = "M20.95,11H22.5V13H20.95C20.5,17.17 17.17,20.5 13,20.95V22.5H11V20.95C6.83,20.5 3.5,17.17 3.05,13H1.5V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1.5H13V3.05C17.17,3.5 20.5,6.83 20.95,11M5.07,11H6.5V13H5.07C5.5,16.07 7.93,18.5 11,18.93V17.5H13V18.93C16.07,18.5 18.5,16.07 18.93,13H17.5V11H18.93C18.5,7.93 16.07,5.5 13,5.07V6.5H11V5.07C7.93,5.5 5.5,7.93 5.07,11M16,16H8V15C8,13.67 10.67,13 12,13C13.33,13 16,13.67 16,15V16M12,8A2,2 0 0,1 14,10A2,2 0 0,1 12,12A2,2 0 0,1 10,10A2,2 0 0,1 12,8Z";
var mdiTargetVariant = "M22.08,11.04H20.08V4H13.05V2H11.04V4H4V11.04H2V13.05H4V20.08H11.04V22.08H13.05V20.08H20.08V13.05H22.08V11.04M18.07,18.07H13.05V16.06H11.04V18.07H6V13.05H8.03V11.04H6V6H11.04V8.03H13.05V6H18.07V11.04H16.06V13.05H18.07V18.07M13.05,12.05A1,1 0 0,1 12.05,13.05C11.5,13.05 11.04,12.6 11.04,12.05C11.04,11.5 11.5,11.04 12.05,11.04C12.6,11.04 13.05,11.5 13.05,12.05Z";
var mdiTaxi = "M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H15V3H9V5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z";
var mdiTea = "M4,19H20V21H4V19M20,8V5H18V8H20M20,3C20.6,3 21,3.2 21.4,3.6C21.8,4 22,4.5 22,5V8C22,8.6 21.8,9 21.4,9.4C21,9.8 20.6,10 20,10H18V13C18,14.1 17.6,15 16.8,15.8C16,16.6 15.1,17 14,17H8C6.9,17 6,16.6 5.2,15.8C4.4,15 4,14.1 4,13V3H9V5.4L7.2,6.8C7.1,6.9 7,7.1 7,7.2V11.5C7,11.8 7.2,12 7.5,12H11.5C11.8,12 12,11.8 12,11.5V7.2C12,7 11.9,6.9 11.8,6.8L10,5.4V3H20Z";
var mdiTeaOutline = "M4,19H20V21H4V19M21.4,3.6C21,3.2 20.6,3 20,3H4V13C4,14.1 4.4,15 5.2,15.8C6,16.6 6.9,17 8,17H14C15.1,17 16,16.6 16.8,15.8C17.6,15 18,14.1 18,13V10H20C20.6,10 21,9.8 21.4,9.4C21.8,9 22,8.6 22,8V5C22,4.5 21.8,4 21.4,3.6M16,5V8L16,10V13C16,13.6 15.8,14 15.4,14.4C15,14.8 14.6,15 14,15H8C7.4,15 7,14.8 6.6,14.4C6.2,14 6,13.5 6,13V5H10V6.4L8.2,7.8C8,7.9 8,8.1 8,8.2V12.5C8,12.8 8.2,13 8.5,13H12.5C12.8,13 13,12.8 13,12.5V8.2C13,8 12.9,7.9 12.8,7.8L11,6.4V5H16M20,8H18V5H20V8Z";
var mdiTeach = "M20,17A2,2 0 0,0 22,15V4A2,2 0 0,0 20,2H9.46C9.81,2.61 10,3.3 10,4H20V15H11V17M15,7V9H9V22H7V16H5V22H3V14H1.5V9A2,2 0 0,1 3.5,7H15M8,4A2,2 0 0,1 6,6A2,2 0 0,1 4,4A2,2 0 0,1 6,2A2,2 0 0,1 8,4Z";
var mdiTeamviewer = "M10.04 9.2L9.3 11H14.75L14 9.2L19.55 12L14 14.8L14.75 13H9.3L10.04 14.8L4.5 12L10.04 9.2M20.83 22H3.17C2.53 22 2 21.5 2 20.83V3.17C2 2.53 2.53 2 3.17 2H20.83C21.5 2 22 2.53 22 3.17V20.83C22 21.47 21.5 22 20.83 22M11.93 3.76C7.41 3.82 3.78 7.5 3.76 12C3.72 16.5 7.35 20.2 11.86 20.24H12C16.53 20.18 20.18 16.53 20.24 12C20.31 7.5 16.74 3.83 12.26 3.76C12.15 3.75 12.04 3.76 11.93 3.76Z";
var mdiTelegram = "M9.78,18.65L10.06,14.42L17.74,7.5C18.08,7.19 17.67,7.04 17.22,7.31L7.74,13.3L3.64,12C2.76,11.75 2.75,11.14 3.84,10.7L19.81,4.54C20.54,4.21 21.24,4.72 20.96,5.84L18.24,18.65C18.05,19.56 17.5,19.78 16.74,19.36L12.6,16.3L10.61,18.23C10.38,18.46 10.19,18.65 9.78,18.65Z";
var mdiTelescope = "M21.9,8.9L20.2,9.9L16.2,3L17.9,2L21.9,8.9M9.8,7.9L12.8,13.1L18.9,9.6L15.9,4.4L9.8,7.9M11.4,12.7L9.4,9.2L5.1,11.7L7.1,15.2L11.4,12.7M2.1,14.6L3.1,16.3L5.7,14.8L4.7,13.1L2.1,14.6M12.1,14L11.8,13.6L7.5,16.1L7.8,16.5C8,16.8 8.3,17.1 8.6,17.3L7,22H9L10.4,17.7H10.5L12,22H14L12.1,16.4C12.6,15.7 12.6,14.8 12.1,14Z";
var mdiTelevision = "M21,17H3V5H21M21,3H3A2,2 0 0,0 1,5V17A2,2 0 0,0 3,19H8V21H16V19H21A2,2 0 0,0 23,17V5A2,2 0 0,0 21,3Z";
var mdiTelevisionAmbientLight = "M3 11H0V9H3V11M3 14H0V16H3V14M5 5.12L2.88 3L1.46 4.41L3.59 6.54L5 5.12M10 5V2H8V5H10M24 9H21V11H24V9M16 5V2H14V5H16M20.41 6.54L22.54 4.42L21.12 3L19 5.12L20.41 6.54M24 14H21V16H24V14M19 9V16C19 17.1 18.1 18 17 18H15V20H9V18H7C5.9 18 5 17.1 5 16V9C5 7.9 5.9 7 7 7H17C18.1 7 19 7.9 19 9M17 9H7V16H17V9M19 19.88L21.12 22L22.54 20.59L20.41 18.47L19 19.88M3.59 18.46L1.47 20.59L2.88 22L5 19.88L3.59 18.46Z";
var mdiTelevisionBox = "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M16,16L19,8H16.5L15,12.5L13.5,8H5V10H8V16H10V10H11.77L14,16H16Z";
var mdiTelevisionClassic = "M8.16,3L6.75,4.41L9.34,7H4C2.89,7 2,7.89 2,9V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V9C22,7.89 21.11,7 20,7H14.66L17.25,4.41L15.84,3L12,6.84L8.16,3M4,9H17V19H4V9M19.5,9A1,1 0 0,1 20.5,10A1,1 0 0,1 19.5,11A1,1 0 0,1 18.5,10A1,1 0 0,1 19.5,9M19.5,12A1,1 0 0,1 20.5,13A1,1 0 0,1 19.5,14A1,1 0 0,1 18.5,13A1,1 0 0,1 19.5,12Z";
var mdiTelevisionClassicOff = "M2,5.27L3.28,4L21,21.72L19.73,23L17.73,21H4C2.89,21 2,20.11 2,19V9C2,8 2.76,7.14 3.75,7L2,5.27M8.16,3L12,6.84L15.84,3L17.25,4.41L14.66,7H20C21.11,7 22,7.89 22,9V19C22,19.34 21.92,19.66 21.77,19.94L17,15.18V9H10.82L8.82,7H9.34L6.75,4.41L8.16,3M4,9V19H15.73L5.73,9H4M19.5,9A1,1 0 0,0 18.5,10A1,1 0 0,0 19.5,11A1,1 0 0,0 20.5,10A1,1 0 0,0 19.5,9M19.5,12A1,1 0 0,0 18.5,13A1,1 0 0,0 19.5,14A1,1 0 0,0 20.5,13A1,1 0 0,0 19.5,12Z";
var mdiTelevisionClean = "M21 17H3V5H21M21 3H3C1.9 3 1 3.9 1 5V17C1 18.11 1.9 19 3 19H8V21H16V19H21C22.11 19 23 18.11 23 17V5C23 3.9 22.11 3 21 3M15 6.5L14.38 7.87L13 8.5L14.38 9.13L15 10.5L15.63 9.13L17 8.5L15.63 7.87L15 6.5M10.5 8.5L9.41 10.91L7 12L9.41 13.09L10.5 15.5L11.6 13.09L14 12L11.6 10.91L10.5 8.5";
var mdiTelevisionGuide = "M21,17V5H3V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H16V21H8V19H3A2,2 0 0,1 1,17V5A2,2 0 0,1 3,3H21M5,7H11V11H5V7M5,13H11V15H5V13M13,7H19V9H13V7M13,11H19V15H13V11Z";
var mdiTelevisionOff = "M0.5,2.77L1.78,1.5L21,20.72L19.73,22L16.73,19H16V21H8V19H3A2,2 0 0,1 1,17V5C1,4.5 1.17,4.07 1.46,3.73L0.5,2.77M21,17V5H7.82L5.82,3H21A2,2 0 0,1 23,5V17C23,17.85 22.45,18.59 21.7,18.87L19.82,17H21M3,17H14.73L3,5.27V17Z";
var mdiTelevisionPause = "M3 3C1.89 3 1 3.89 1 5V17C1 18.1 1.9 19 3 19H8V21H16V19H21C22.1 19 23 18.1 23 17V5C23 3.89 22.1 3 21 3M3 5H21V17H3M9 8V14H11V8M13 8V14H15V8";
var mdiTelevisionPlay = "M21,3H3C1.89,3 1,3.89 1,5V17A2,2 0 0,0 3,19H8V21H16V19H21A2,2 0 0,0 23,17V5C23,3.89 22.1,3 21,3M21,17H3V5H21M16,11L9,15V7";
var mdiTelevisionStop = "M3 3H21C22.1 3 23 3.89 23 5V17C23 18.1 22.1 19 21 19H16V21H8V19H3C1.9 19 1 18.1 1 17V5C1 3.89 1.89 3 3 3M3 5V17H21V5H3M9 8H15V14H9V8Z";
var mdiTemperatureCelsius = "M16.5,5C18.05,5 19.5,5.47 20.69,6.28L19.53,9.17C18.73,8.44 17.67,8 16.5,8C14,8 12,10 12,12.5C12,15 14,17 16.5,17C17.53,17 18.47,16.66 19.23,16.08L20.37,18.93C19.24,19.61 17.92,20 16.5,20A7.5,7.5 0 0,1 9,12.5A7.5,7.5 0 0,1 16.5,5M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z";
var mdiTemperatureFahrenheit = "M11,20V5H20V8H14V11H19V14H14V20H11M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z";
var mdiTemperatureKelvin = "M7,5H10V11L15,5H19L13.88,10.78L19,20H15.38L11.76,13.17L10,15.15V20H7V5Z";
var mdiTennis = "M18,15A4,4 0 0,1 22,19A4,4 0 0,1 18,23A4,4 0 0,1 14,19A4,4 0 0,1 18,15M18,17A2,2 0 0,0 16,19A2,2 0 0,0 18,21A2,2 0 0,0 20,19A2,2 0 0,0 18,17M6.05,14.54C6.05,14.54 7.46,13.12 7.47,10.3C7.11,8.11 7.97,5.54 9.94,3.58C12.87,0.65 17.14,0.17 19.5,2.5C21.83,4.86 21.35,9.13 18.42,12.06C16.46,14.03 13.89,14.89 11.7,14.53C8.88,14.54 7.46,15.95 7.46,15.95L3.22,20.19L1.81,18.78L6.05,14.54M18.07,3.93C16.5,2.37 13.5,2.84 11.35,5C9.21,7.14 8.73,10.15 10.29,11.71C11.86,13.27 14.86,12.79 17,10.65C19.16,8.5 19.63,5.5 18.07,3.93Z";
var mdiTennisBall = "M12,2C14.5,2 16.75,2.9 18.5,4.4C16.36,6.23 15,8.96 15,12C15,15.04 16.36,17.77 18.5,19.6C16.75,21.1 14.5,22 12,22C9.5,22 7.25,21.1 5.5,19.6C7.64,17.77 9,15.04 9,12C9,8.96 7.64,6.23 5.5,4.4C7.25,2.9 9.5,2 12,2M22,12C22,14.32 21.21,16.45 19.88,18.15C18.12,16.68 17,14.47 17,12C17,9.53 18.12,7.32 19.88,5.85C21.21,7.55 22,9.68 22,12M2,12C2,9.68 2.79,7.55 4.12,5.85C5.88,7.32 7,9.53 7,12C7,14.47 5.88,16.68 4.12,18.15C2.79,16.45 2,14.32 2,12Z";
var mdiTent = "M4,6C4,7.19 4.39,8.27 5,9A3,3 0 0,1 2,6A3,3 0 0,1 5,3C4.39,3.73 4,4.81 4,6M2,21V19H4.76L12,4.78L19.24,19H22V21H2M12,9.19L7,19H17L12,9.19Z";
var mdiTerraform = "M21 5.4V11.8L15.4 15V8.7L21 5.4M14.8 8.7V15L9.2 11.8V5.4L14.8 8.7M14.8 15.7V22.1L9.2 18.9V12.5L14.8 15.7M8.6 5.1V11.5L3 8.3V1.9L8.6 5.1Z";
var mdiTerrain = "M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z";
var mdiTestTube = "M7,2V4H8V18A4,4 0 0,0 12,22A4,4 0 0,0 16,18V4H17V2H7M11,16C10.4,16 10,15.6 10,15C10,14.4 10.4,14 11,14C11.6,14 12,14.4 12,15C12,15.6 11.6,16 11,16M13,12C12.4,12 12,11.6 12,11C12,10.4 12.4,10 13,10C13.6,10 14,10.4 14,11C14,11.6 13.6,12 13,12M14,7H10V4H14V7Z";
var mdiTestTubeEmpty = "M7,2H17V4H16V18A4,4 0 0,1 12,22A4,4 0 0,1 8,18V4H7V2M14,4H10V18A2,2 0 0,0 12,20A2,2 0 0,0 14,18V4Z";
var mdiTestTubeOff = "M2,5.27L3.28,4L20,20.72L18.73,22L15.84,19.11C15.36,20.77 13.82,22 12,22A4,4 0 0,1 8,18V11.27L2,5.27M7,2H17V4H16V14.18L13.63,11.81C13.86,11.63 14,11.35 14,11C14,10.4 13.6,10 13,10C12.65,10 12.37,10.14 12.19,10.37L8,6.18V4H7V2M11,16C11.5,16 11.88,15.71 12,15.24L10.76,14C10.29,14.12 10,14.5 10,15C10,15.6 10.4,16 11,16M14,7V4H10V7H14Z";
var mdiText = "M21,6V8H3V6H21M3,18H12V16H3V18M3,13H21V11H3V13Z";
var mdiTextAccount = "M21 5V7H3V5H21M3 17H12V15H3V17M3 12H21V10H3V12M18 14C19.11 14 20 14.9 20 16S19.11 18 18 18 16 17.11 16 16 16.9 14 18 14M14 22V21C14 19.9 15.79 19 18 19S22 19.9 22 21V22H14Z";
var mdiTextBox = "M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiTextBoxCheck = "M17,21L14.25,18L15.41,16.84L17,18.43L20.59,14.84L21.75,16.25M12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21M12,15H7V17H12M17,7H7V9H17";
var mdiTextBoxCheckOutline = "M17,21L14.25,18L15.41,16.84L17,18.43L20.59,14.84L21.75,16.25M12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21M12,17H7V15H12M14.68,13H7V11H17V12.08C16.15,12.22 15.37,12.54 14.68,13M17,9H7V7H17";
var mdiTextBoxMinus = "M22,17V19H14V17H22M12,17V15H7V17H12M17,11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11M17,9V7H7V9H17Z";
var mdiTextBoxMinusOutline = "M22,17V19H14V17H22M5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H17V12.08C16.15,12.22 15.37,12.54 14.68,13H7V11M7,15H12V17H7V15Z";
var mdiTextBoxMultiple = "M16,15H9V13H16M19,11H9V9H19M19,7H9V5H19M21,1H7C5.89,1 5,1.89 5,3V17C5,18.11 5.9,19 7,19H21C22.11,19 23,18.11 23,17V3C23,1.89 22.1,1 21,1M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3Z";
var mdiTextBoxMultipleOutline = "M16,15H9V13H16V15M19,11H9V9H19V11M19,7H9V5H19V7M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M21,1A2,2 0 0,1 23,3V17C23,18.11 22.11,19 21,19H7A2,2 0 0,1 5,17V3C5,1.89 5.89,1 7,1H21M7,3V17H21V3H7Z";
var mdiTextBoxOutline = "M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H19C20.11,21 21,20.11 21,19V5C21,3.89 20.11,3 19,3H5M5,5H19V19H5V5M7,7V9H17V7H7M7,11V13H17V11H7M7,15V17H14V15H7Z";
var mdiTextBoxPlus = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M12,17V15H7V17H12M17,11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11M17,9V7H7V9H17Z";
var mdiTextBoxPlusOutline = "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H17V12.08C16.15,12.22 15.37,12.54 14.68,13H7V11M7,15H12V17H7V15Z";
var mdiTextBoxRemove = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M12,17V15H7V17H12M17,11H7V13H14.69C13.07,14.07 12,15.91 12,18C12,19.09 12.29,20.12 12.8,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V12.8C20.12,12.29 19.09,12 18,12L17,12.08V11M17,9V7H7V9H17Z";
var mdiTextBoxRemoveOutline = "M14.46,15.88L15.88,14.46L18,16.59L20.12,14.46L21.54,15.88L19.41,18L21.54,20.12L20.12,21.54L18,19.41L15.88,21.54L14.46,20.12L16.59,18L14.46,15.88M5,3H19C20.11,3 21,3.89 21,5V12.8C20.39,12.45 19.72,12.2 19,12.08V5H5V19H12.08C12.2,19.72 12.45,20.39 12.8,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H17V12.08C16.15,12.22 15.37,12.54 14.68,13H7V11M7,15H12V17H7V15Z";
var mdiTextBoxSearch = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M7,15V17H9C9.14,18.55 9.8,19.94 10.81,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19A2,2 0 0,1 21,5V13.03C19.85,11.21 17.82,10 15.5,10C14.23,10 13.04,10.37 12.04,11H7V13H10C9.64,13.6 9.34,14.28 9.17,15H7M17,9V7H7V9H17Z";
var mdiTextBoxSearchOutline = "M15.5,12C18,12 20,14 20,16.5C20,17.38 19.75,18.21 19.31,18.9L22.39,22L21,23.39L17.88,20.32C17.19,20.75 16.37,21 15.5,21C13,21 11,19 11,16.5C11,14 13,12 15.5,12M15.5,14A2.5,2.5 0 0,0 13,16.5A2.5,2.5 0 0,0 15.5,19A2.5,2.5 0 0,0 18,16.5A2.5,2.5 0 0,0 15.5,14M5,3H19C20.11,3 21,3.89 21,5V13.03C20.5,12.23 19.81,11.54 19,11V5H5V19H9.5C9.81,19.75 10.26,20.42 10.81,21H5C3.89,21 3,20.11 3,19V5C3,3.89 3.89,3 5,3M7,7H17V9H7V7M7,11H12.03C11.23,11.5 10.54,12.19 10,13H7V11M7,15H9.17C9.06,15.5 9,16 9,16.5V17H7V15Z";
var mdiTextRecognition = "M2 4C2 2.9 2.9 2 4 2H8V4H4V8H2V4M22 20C22 21.11 21.11 22 20 22H16V20H20V16H22V20M4 22C2.9 22 2 21.11 2 20V16H4V20H8V22H4M20 2C21.11 2 22 2.9 22 4V8H20V4H16V2H20M9 7V9H11V17H13V9H15V7H9Z";
var mdiTextSearch = "M19.31 18.9L22.39 22L21 23.39L17.88 20.32C17.19 20.75 16.37 21 15.5 21C13 21 11 19 11 16.5C11 14 13 12 15.5 12C18 12 20 14 20 16.5C20 17.38 19.75 18.21 19.31 18.9M15.5 19C16.88 19 18 17.88 18 16.5C18 15.12 16.88 14 15.5 14C14.12 14 13 15.12 13 16.5C13 17.88 14.12 19 15.5 19M21 4V6H3V4H21M3 16V14H9V16H3M3 11V9H21V11H18.97C17.96 10.37 16.77 10 15.5 10C14.23 10 13.04 10.37 12.03 11H3Z";
var mdiTextShadow = "M3,3H16V6H11V18H8V6H3V3M12,7H14V9H12V7M15,7H17V9H15V7M18,7H20V9H18V7M12,10H14V12H12V10M12,13H14V15H12V13M12,16H14V18H12V16M12,19H14V21H12V19Z";
var mdiTextShort = "M4,9H20V11H4V9M4,13H14V15H4V13Z";
var mdiTextSubject = "M4,5H20V7H4V5M4,9H20V11H4V9M4,13H20V15H4V13M4,17H14V19H4V17Z";
var mdiTextToSpeech = "M8,7A2,2 0 0,1 10,9V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9A2,2 0 0,1 8,7M14,14C14,16.97 11.84,19.44 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18A4,4 0 0,0 12,14H14M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z";
var mdiTextToSpeechOff = "M2,5.27L3.28,4L20,20.72L18.73,22L13.38,16.65C12.55,18.35 10.93,19.59 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18C9.82,18 11.36,16.78 11.84,15.11L10,13.27V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9.27L2,5.27M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z";
var mdiTexture = "M9.29,21H12.12L21,12.12V9.29M19,21C19.55,21 20.05,20.78 20.41,20.41C20.78,20.05 21,19.55 21,19V17L17,21M5,3A2,2 0 0,0 3,5V7L7,3M11.88,3L3,11.88V14.71L14.71,3M19.5,3.08L3.08,19.5C3.17,19.85 3.35,20.16 3.59,20.41C3.84,20.65 4.15,20.83 4.5,20.92L20.93,4.5C20.74,3.8 20.2,3.26 19.5,3.08Z";
var mdiTextureBox = "M20 2H4C2.9 2 2 2.9 2 4V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V4C22 2.9 21.11 2 20 2M4 6L6 4H10.9L4 10.9V6M4 13.7L13.7 4H18.6L4 18.6V13.7M20 18L18 20H13.1L20 13.1V18M20 10.3L10.3 20H5.4L20 5.4V10.3Z";
var mdiTheater = "M4,15H6A2,2 0 0,1 8,17V19H9V17A2,2 0 0,1 11,15H13A2,2 0 0,1 15,17V19H16V17A2,2 0 0,1 18,15H20A2,2 0 0,1 22,17V19H23V22H1V19H2V17A2,2 0 0,1 4,15M11,7L15,10L11,13V7M4,2H20A2,2 0 0,1 22,4V13.54C21.41,13.19 20.73,13 20,13V4H4V13C3.27,13 2.59,13.19 2,13.54V4A2,2 0 0,1 4,2Z";
var mdiThemeLightDark = "M7.5,2C5.71,3.15 4.5,5.18 4.5,7.5C4.5,9.82 5.71,11.85 7.53,13C4.46,13 2,10.54 2,7.5A5.5,5.5 0 0,1 7.5,2M19.07,3.5L20.5,4.93L4.93,20.5L3.5,19.07L19.07,3.5M12.89,5.93L11.41,5L9.97,6L10.39,4.3L9,3.24L10.75,3.12L11.33,1.47L12,3.1L13.73,3.13L12.38,4.26L12.89,5.93M9.59,9.54L8.43,8.81L7.31,9.59L7.65,8.27L6.56,7.44L7.92,7.35L8.37,6.06L8.88,7.33L10.24,7.36L9.19,8.23L9.59,9.54M19,13.5A5.5,5.5 0 0,1 13.5,19C12.28,19 11.15,18.6 10.24,17.93L17.93,10.24C18.6,11.15 19,12.28 19,13.5M14.6,20.08L17.37,18.93L17.13,22.28L14.6,20.08M18.93,17.38L20.08,14.61L22.28,17.15L18.93,17.38M20.08,12.42L18.94,9.64L22.28,9.88L20.08,12.42M9.63,18.93L12.4,20.08L9.87,22.27L9.63,18.93Z";
var mdiThermometer = "M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5V8H11V5A1 1 0 0 1 12 4Z";
var mdiThermometerAlert = "M17 13V7H19V13H17M17 17V15H19V17H17M13 13V5C13 3.3 11.7 2 10 2S7 3.3 7 5V13C4.8 14.7 4.3 17.8 6 20S10.8 22.7 13 21 15.7 16.2 14 14C13.7 13.6 13.4 13.3 13 13M10 4C10.6 4 11 4.4 11 5V8H9V5C9 4.4 9.4 4 10 4Z";
var mdiThermometerChevronDown = "M17.41 12.17L14.24 9L12.83 10.41L17.41 15L22 10.41L20.58 9M10 13V5C10 3.34 8.66 2 7 2S4 3.34 4 5V13C1.79 14.66 1.34 17.79 3 20S7.79 22.66 10 21 12.66 16.21 11 14C10.72 13.62 10.38 13.28 10 13M7 4C7.55 4 8 4.45 8 5V8H6V5C6 4.45 6.45 4 7 4Z";
var mdiThermometerChevronUp = "M17.41 11.83L20.58 15L22 13.59L17.41 9L12.82 13.59L14.24 15L17.41 11.83M10 13V5C10 3.34 8.66 2 7 2S4 3.34 4 5V13C1.79 14.66 1.34 17.79 3 20S7.79 22.66 10 21 12.66 16.21 11 14C10.72 13.62 10.38 13.28 10 13M7 4C7.55 4 8 4.45 8 5V8H6V5C6 4.45 6.45 4 7 4Z";
var mdiThermometerHigh = "M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5H11A1 1 0 0 1 12 4Z";
var mdiThermometerLines = "M17 3H21V5H17V3M17 7H21V9H17V7M17 11H21V13H17.75L17 12.1V11M21 15V17H19C19 16.31 18.9 15.63 18.71 15H21M7 3V5H3V3H7M7 7V9H3V7H7M7 11V12.1L6.25 13H3V11H7M3 15H5.29C5.1 15.63 5 16.31 5 17H3V15M15 13V5C15 3.34 13.66 2 12 2S9 3.34 9 5V13C6.79 14.66 6.34 17.79 8 20S12.79 22.66 15 21 17.66 16.21 16 14C15.72 13.62 15.38 13.28 15 13M12 4C12.55 4 13 4.45 13 5V8H11V5C11 4.45 11.45 4 12 4Z";
var mdiThermometerLow = "M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5V12H11V5A1 1 0 0 1 12 4Z";
var mdiThermometerMinus = "M22 11H14V13H22V11M11 13V5C11 3.34 9.66 2 8 2S5 3.34 5 5V13C2.79 14.66 2.34 17.79 4 20S8.79 22.66 11 21 13.66 16.21 12 14C11.72 13.62 11.38 13.28 11 13M8 4C8.55 4 9 4.45 9 5V8H7V5C7 4.45 7.45 4 8 4Z";
var mdiThermometerOff = "M11 7.8L9 5.8V5C9 3.34 10.34 2 12 2S15 3.34 15 5V11.8L11.2 8H13V5C13 4.45 12.55 4 12 4S11 4.45 11 5V7.8M22.11 21.46L2.39 1.73L1.11 3L9 10.89V13C6.79 14.66 6.34 17.79 8 20C9.66 22.21 12.79 22.66 15 21C15.84 20.37 16.4 19.5 16.71 18.6L20.84 22.73L22.11 21.46Z";
var mdiThermometerPlus = "M19 11V8H17V11H14V13H17V16H19V13H22V11M11 13V5C11 3.34 9.66 2 8 2S5 3.34 5 5V13C2.79 14.66 2.34 17.79 4 20S8.79 22.66 11 21 13.66 16.21 12 14C11.72 13.62 11.38 13.28 11 13M8 4C8.55 4 9 4.45 9 5V8H7V5C7 4.45 7.45 4 8 4Z";
var mdiThermostat = "M16.95,16.95L14.83,14.83C15.55,14.1 16,13.1 16,12C16,11.26 15.79,10.57 15.43,10L17.6,7.81C18.5,9 19,10.43 19,12C19,13.93 18.22,15.68 16.95,16.95M12,5C13.57,5 15,5.5 16.19,6.4L14,8.56C13.43,8.21 12.74,8 12,8A4,4 0 0,0 8,12C8,13.1 8.45,14.1 9.17,14.83L7.05,16.95C5.78,15.68 5,13.93 5,12A7,7 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z";
var mdiThermostatBox = "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M12,5C13.57,5 15,5.5 16.19,6.4L14,8.56C13.43,8.21 12.74,8 12,8A4,4 0 0,0 8,12C8,13.1 8.45,14.1 9.17,14.83L7.05,16.95C5.78,15.68 5,13.93 5,12A7,7 0 0,1 12,5M17.6,7.81C18.5,9 19,10.43 19,12C19,13.93 18.22,15.68 16.95,16.95L14.83,14.83C15.55,14.1 16,13.1 16,12C16,11.26 15.79,10.57 15.43,10L17.6,7.81Z";
var mdiThoughtBubble = "M3.5,19A1.5,1.5 0 0,1 5,20.5A1.5,1.5 0 0,1 3.5,22A1.5,1.5 0 0,1 2,20.5A1.5,1.5 0 0,1 3.5,19M8.5,16A2.5,2.5 0 0,1 11,18.5A2.5,2.5 0 0,1 8.5,21A2.5,2.5 0 0,1 6,18.5A2.5,2.5 0 0,1 8.5,16M14.5,15C13.31,15 12.23,14.5 11.5,13.65C10.77,14.5 9.69,15 8.5,15C6.54,15 4.91,13.59 4.57,11.74C3.07,11.16 2,9.7 2,8A4,4 0 0,1 6,4C6.26,4 6.5,4.03 6.77,4.07C7.5,3.41 8.45,3 9.5,3C10.69,3 11.77,3.5 12.5,4.35C13.23,3.5 14.31,3 15.5,3C17.46,3 19.09,4.41 19.43,6.26C20.93,6.84 22,8.3 22,10A4,4 0 0,1 18,14L17.23,13.93C16.5,14.59 15.55,15 14.5,15Z";
var mdiThoughtBubbleOutline = "M3.5,19A1.5,1.5 0 0,1 5,20.5A1.5,1.5 0 0,1 3.5,22A1.5,1.5 0 0,1 2,20.5A1.5,1.5 0 0,1 3.5,19M8.5,16A2.5,2.5 0 0,1 11,18.5A2.5,2.5 0 0,1 8.5,21A2.5,2.5 0 0,1 6,18.5A2.5,2.5 0 0,1 8.5,16M14.5,15C13.31,15 12.23,14.5 11.5,13.65C10.77,14.5 9.69,15 8.5,15C6.54,15 4.91,13.59 4.57,11.74C3.07,11.16 2,9.7 2,8A4,4 0 0,1 6,4L6.77,4.07C7.5,3.41 8.45,3 9.5,3C10.69,3 11.77,3.5 12.5,4.35C13.23,3.5 14.31,3 15.5,3C17.46,3 19.09,4.41 19.43,6.26C20.93,6.84 22,8.3 22,10A4,4 0 0,1 18,14L17.23,13.93C16.5,14.59 15.55,15 14.5,15M6,6A2,2 0 0,0 4,8A2,2 0 0,0 6,10C6.33,10 6.64,9.92 6.92,9.78C6.66,10.12 6.5,10.54 6.5,11A2,2 0 0,0 8.5,13C9.1,13 9.64,12.73 10,12.31V12.31L11.47,10.63L13,12.34V12.34C13.38,12.74 13.91,13 14.5,13C15.5,13 16.33,12.26 16.5,11.3C16.84,11.73 17.39,12 18,12A2,2 0 0,0 20,10A2,2 0 0,0 18,8C17.67,8 17.36,8.08 17.08,8.22C17.34,7.88 17.5,7.46 17.5,7A2,2 0 0,0 15.5,5C14.91,5 14.38,5.26 14,5.66L12.47,7.37L11,5.69V5.69C10.64,5.27 10.1,5 9.5,5C8.5,5 7.67,5.74 7.5,6.7C7.16,6.27 6.61,6 6,6M8.5,17.5A1,1 0 0,0 7.5,18.5A1,1 0 0,0 8.5,19.5A1,1 0 0,0 9.5,18.5A1,1 0 0,0 8.5,17.5Z";
var mdiThumbDown = "M19,15H23V3H19M15,3H6C5.17,3 4.46,3.5 4.16,4.22L1.14,11.27C1.05,11.5 1,11.74 1,12V14A2,2 0 0,0 3,16H9.31L8.36,20.57C8.34,20.67 8.33,20.77 8.33,20.88C8.33,21.3 8.5,21.67 8.77,21.94L9.83,23L16.41,16.41C16.78,16.05 17,15.55 17,15V5C17,3.89 16.1,3 15,3Z";
var mdiThumbDownOutline = "M19,15V3H23V15H19M15,3A2,2 0 0,1 17,5V15C17,15.55 16.78,16.05 16.41,16.41L9.83,23L8.77,21.94C8.5,21.67 8.33,21.3 8.33,20.88L8.36,20.57L9.31,16H3C1.89,16 1,15.1 1,14V12C1,11.74 1.05,11.5 1.14,11.27L4.16,4.22C4.46,3.5 5.17,3 6,3H15M15,5H5.97L3,12V14H11.78L10.65,19.32L15,14.97V5Z";
var mdiThumbUp = "M23,10C23,8.89 22.1,8 21,8H14.68L15.64,3.43C15.66,3.33 15.67,3.22 15.67,3.11C15.67,2.7 15.5,2.32 15.23,2.05L14.17,1L7.59,7.58C7.22,7.95 7,8.45 7,9V19A2,2 0 0,0 9,21H18C18.83,21 19.54,20.5 19.84,19.78L22.86,12.73C22.95,12.5 23,12.26 23,12V10M1,21H5V9H1V21Z";
var mdiThumbUpOutline = "M5,9V21H1V9H5M9,21A2,2 0 0,1 7,19V9C7,8.45 7.22,7.95 7.59,7.59L14.17,1L15.23,2.06C15.5,2.33 15.67,2.7 15.67,3.11L15.64,3.43L14.69,8H21C22.11,8 23,8.9 23,10V12C23,12.26 22.95,12.5 22.86,12.73L19.84,19.78C19.54,20.5 18.83,21 18,21H9M9,19H18.03L21,12V10H12.21L13.34,4.68L9,9.03V19Z";
var mdiThumbsUpDown = "M22.5,10H15.75C15.13,10 14.6,10.38 14.37,10.91L12.11,16.2C12.04,16.37 12,16.56 12,16.75V18A1,1 0 0,0 13,19H18.18L17.5,22.18V22.42C17.5,22.73 17.63,23 17.83,23.22L18.62,24L23.56,19.06C23.83,18.79 24,18.41 24,18V11.5A1.5,1.5 0 0,0 22.5,10M12,6A1,1 0 0,0 11,5H5.82L6.5,1.82V1.59C6.5,1.28 6.37,1 6.17,0.79L5.38,0L0.44,4.94C0.17,5.21 0,5.59 0,6V12.5A1.5,1.5 0 0,0 1.5,14H8.25C8.87,14 9.4,13.62 9.63,13.09L11.89,7.8C11.96,7.63 12,7.44 12,7.25V6Z";
var mdiTicket = "M15.58,16.8L12,14.5L8.42,16.8L9.5,12.68L6.21,10L10.46,9.74L12,5.8L13.54,9.74L17.79,10L14.5,12.68M20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12Z";
var mdiTicketAccount = "M20,12A2,2 0 0,0 22,14V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V14C3.11,14 4,13.1 4,12A2,2 0 0,0 2,10V6C2,4.89 2.9,4 4,4H20A2,2 0 0,1 22,6V10A2,2 0 0,0 20,12M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5V16.25M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z";
var mdiTicketConfirmation = "M13,8.5H11V6.5H13V8.5M13,13H11V11H13V13M13,17.5H11V15.5H13V17.5M22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12A2,2 0 0,1 22,10Z";
var mdiTicketConfirmationOutline = "M22 10V6C22 4.89 21.1 4 20 4H4C2.9 4 2 4.89 2 6V10C3.11 10 4 10.9 4 12S3.11 14 2 14V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V14C20.9 14 20 13.1 20 12S20.9 10 22 10M20 8.54C18.81 9.23 18 10.53 18 12S18.81 14.77 20 15.46V18H4V15.46C5.19 14.77 6 13.47 6 12C6 10.5 5.2 9.23 4 8.54L4 6H20V8.54M11 15H13V17H11M11 11H13V13H11M11 7H13V9H11Z";
var mdiTicketOutline = "M4,4A2,2 0 0,0 2,6V10A2,2 0 0,1 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12A2,2 0 0,1 22,10V6A2,2 0 0,0 20,4H4M4,6H20V8.54C18.76,9.25 18,10.57 18,12C18,13.43 18.76,14.75 20,15.46V18H4V15.46C5.24,14.75 6,13.43 6,12C6,10.57 5.24,9.25 4,8.54V6Z";
var mdiTicketPercent = "M4,4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4M15.5,7L17,8.5L8.5,17L7,15.5L15.5,7M8.81,7.04C9.79,7.04 10.58,7.83 10.58,8.81A1.77,1.77 0 0,1 8.81,10.58C7.83,10.58 7.04,9.79 7.04,8.81A1.77,1.77 0 0,1 8.81,7.04M15.19,13.42C16.17,13.42 16.96,14.21 16.96,15.19A1.77,1.77 0 0,1 15.19,16.96C14.21,16.96 13.42,16.17 13.42,15.19A1.77,1.77 0 0,1 15.19,13.42Z";
var mdiTicketPercentOutline = "M14.8 8L16 9.2L9.2 16L8 14.8L14.8 8M4 4H20C21.11 4 22 4.89 22 6V10C20.9 10 20 10.9 20 12C20 13.11 20.9 14 22 14V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V14C3.11 14 4 13.11 4 12C4 10.9 3.11 10 2 10V6C2 4.89 2.9 4 4 4M4 6V8.54C5.24 9.26 6 10.57 6 12C6 13.43 5.24 14.75 4 15.46V18H20V15.46C18.76 14.75 18 13.43 18 12C18 10.57 18.76 9.26 20 8.54V6H4M9.5 8C10.33 8 11 8.67 11 9.5C11 10.33 10.33 11 9.5 11C8.67 11 8 10.33 8 9.5C8 8.67 8.67 8 9.5 8M14.5 13C15.33 13 16 13.67 16 14.5C16 15.33 15.33 16 14.5 16C13.67 16 13 15.33 13 14.5C13 13.67 13.67 13 14.5 13Z";
var mdiTie = "M6,2L10,6L7,17L12,22L17,17L14,6L18,2Z";
var mdiTilde = "M2,15C2,15 2,9 8,9C12,9 12.5,12.5 15.5,12.5C19.5,12.5 19.5,9 19.5,9H22C22,9 22,15 16,15C12,15 10.5,11.5 8.5,11.5C4.5,11.5 4.5,15 4.5,15H2";
var mdiTimelapse = "M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.24,7.76C15.07,6.58 13.53,6 12,6V12L7.76,16.24C10.1,18.58 13.9,18.58 16.24,16.24C18.59,13.9 18.59,10.1 16.24,7.76Z";
var mdiTimeline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6Z";
var mdiTimelineAlert = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M15 7V13H17V7H15M15 15V17H17V15H15Z";
var mdiTimelineAlertOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M10 6V18H22V6H10M15 7H17V13H15V7M15 15H17V17H15V15Z";
var mdiTimelineCheck = "M4 8H2V2H4V8M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M19.75 10.33L18.59 8.92L15 12.5L13.41 10.92L12.25 12.08L15 15.08L19.75 10.33Z";
var mdiTimelineCheckOutline = "M22 4H10C8.9 4 8 4.89 8 6V10L6 12L8 14V18C8 19.11 8.9 20 10 20H22C23.11 20 24 19.11 24 18V6C24 4.89 23.11 4 22 4M22 18H10V6H22V18M4 8H2V2H4V8M2 16H4V22H2V16M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M15 15.08L12.25 12.08L13.41 10.92L15 12.5L18.59 8.92L19.75 10.33L15 15.08Z";
var mdiTimelineClock = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M16 4C20.42 4 24 7.58 24 12C24 16.42 20.42 20 16 20C12.4 20 9.36 17.62 8.35 14.35L6 12L8.35 9.65C9.36 6.38 12.4 4 16 4M15 13L19.53 15.79L20.33 14.5L16.5 12.2V7H15V13Z";
var mdiTimelineClockOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M16 4C20.42 4 24 7.58 24 12C24 16.42 20.42 20 16 20C12.4 20 9.36 17.62 8.35 14.35L6 12L8.35 9.65C9.36 6.38 12.4 4 16 4M16 6C12.69 6 10 8.69 10 12C10 15.31 12.69 18 16 18C19.31 18 22 15.31 22 12C22 8.69 19.31 6 16 6M15 13V8H16.5V12.2L19.5 14L18.68 15.26L15 13Z";
var mdiTimelineHelp = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M16.5 15.5H15V17H16.5V15.5M14.5 10.5V10C14.5 9.17 15.17 8.5 16 8.5C16.83 8.5 17.5 9.18 17.5 10C17.5 10.47 17.27 10.9 16.88 11.16L16.59 11.35C15.6 12 15 13.11 15 14.3V14.5H16.5V14.3C16.5 13.62 16.84 13 17.41 12.6L17.71 12.41C18.5 11.88 19 10.97 19 10C19 8.34 17.66 7 16 7C14.34 7 13 8.34 13 10V10.5H14.5Z";
var mdiTimelineHelpOutline = "M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M4 2V8H2V2H4M2 22V16H4V22H2M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V10.83L8.83 12L10 13.17V18H22V6M16.5 15.5V17H15V15.5H16.5M14.5 10.5H13V10C13 8.34 14.34 7 16 7C17.66 7 19 8.34 19 10C19 10.97 18.5 11.88 17.71 12.41L17.41 12.6C16.84 13 16.5 13.62 16.5 14.3V14.5H15V14.3C15 13.11 15.6 12 16.59 11.35L16.88 11.16C17.27 10.9 17.5 10.47 17.5 10C17.5 9.18 16.83 8.5 16 8.5C15.17 8.5 14.5 9.17 14.5 10V10.5Z";
var mdiTimelineMinus = "M4 8H2V2H4V8M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M20 11H12V13H20V11M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10Z";
var mdiTimelineMinusOutline = "M2 16H4V22H2V16M4 2H2V8H4V2M20 11H12V13H20V11M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V18H22V6Z";
var mdiTimelineOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M10 6V18H22V6H10Z";
var mdiTimelinePlus = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M20 11H17V8H15V11H12V13H15V16H17V13H20V11Z";
var mdiTimelinePlusOutline = "M4 2V8H2V2H4M2 22V16H4V22H2M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M20 11V13H17V16H15V13H12V11H15V8H17V11H20M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M10 6V18H22V6H10Z";
var mdiTimelineRemove = "M4 8H2V2H4V8M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M17.41 12L19.53 9.88L18.12 8.47L16 10.59L13.88 8.47L12.47 9.88L14.59 12L12.47 14.12L13.88 15.53L16 13.41L18.12 15.53L19.53 14.12L17.41 12Z";
var mdiTimelineRemoveOutline = "M4 8H2V2H4V8M2 22H4V16H2V22M3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12C5 10.9 4.11 10 3 10M13.88 15.54L16 13.41L18.12 15.53L19.53 14.12L17.41 12L19.53 9.88L18.12 8.47L16 10.59L13.88 8.47L12.47 9.88L14.59 12L12.47 14.12L13.88 15.54M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V18H22V6Z";
var mdiTimelineText = "M4 2V8H2V2H4M2 22H4V16H2V22M5 12C5 10.9 4.11 10 3 10C1.9 10 1 10.9 1 12C1 13.11 1.9 14 3 14C4.11 14 5 13.11 5 12M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M19 13H11V15H19V13M21 9H11V11H21V9Z";
var mdiTimelineTextOutline = "M5 12C5 13.11 4.11 14 3 14C1.9 14 1 13.11 1 12C1 10.9 1.9 10 3 10C4.11 10 5 10.9 5 12M4 2V8H2V2H4M2 22V16H4V22H2M24 6V18C24 19.11 23.11 20 22 20H10C8.9 20 8 19.11 8 18V14L6 12L8 10V6C8 4.89 8.9 4 10 4H22C23.11 4 24 4.89 24 6M22 6H10V10.83L8.83 12L10 13.17V18H22V6M12 9H20V11H12V9M12 13H18V15H12V13Z";
var mdiTimer = "M19.03 7.39L20.45 5.97C20 5.46 19.55 5 19.04 4.56L17.62 6C16.07 4.74 14.12 4 12 4C7.03 4 3 8.03 3 13S7.03 22 12 22C17 22 21 17.97 21 13C21 10.88 20.26 8.93 19.03 7.39M13 14H11V7H13V14M15 1H9V3H15V1Z";
var mdiTimer10 = "M12.9,13.22C12.9,13.82 12.86,14.33 12.78,14.75C12.7,15.17 12.58,15.5 12.42,15.77C12.26,16.03 12.06,16.22 11.83,16.34C11.6,16.46 11.32,16.5 11,16.5C10.71,16.5 10.43,16.46 10.19,16.34C9.95,16.22 9.75,16.03 9.59,15.77C9.43,15.5 9.3,15.17 9.21,14.75C9.12,14.33 9.08,13.82 9.08,13.22V10.72C9.08,10.12 9.12,9.61 9.21,9.2C9.3,8.79 9.42,8.46 9.59,8.2C9.75,7.95 9.95,7.77 10.19,7.65C10.43,7.54 10.7,7.5 11,7.5C11.31,7.5 11.58,7.54 11.81,7.65C12.05,7.76 12.25,7.94 12.41,8.2C12.57,8.45 12.7,8.78 12.78,9.19C12.86,9.6 12.91,10.11 12.91,10.71V13.22M13.82,7.05C13.5,6.65 13.07,6.35 12.59,6.17C12.12,6 11.58,5.9 11,5.9C10.42,5.9 9.89,6 9.41,6.17C8.93,6.35 8.5,6.64 8.18,7.05C7.84,7.46 7.58,8 7.39,8.64C7.21,9.29 7.11,10.09 7.11,11.03V12.95C7.11,13.89 7.2,14.69 7.39,15.34C7.58,16 7.84,16.53 8.19,16.94C8.53,17.35 8.94,17.65 9.42,17.83C9.9,18 10.43,18.11 11,18.11C11.6,18.11 12.13,18 12.6,17.83C13.08,17.65 13.5,17.35 13.82,16.94C14.16,16.53 14.42,16 14.6,15.34C14.78,14.69 14.88,13.89 14.88,12.95V11.03C14.88,10.09 14.79,9.29 14.6,8.64C14.42,8 14.16,7.45 13.82,7.05M23.78,14.37C23.64,14.09 23.43,13.84 23.15,13.63C22.87,13.42 22.54,13.24 22.14,13.1C21.74,12.96 21.29,12.83 20.79,12.72C20.44,12.65 20.15,12.57 19.92,12.5C19.69,12.41 19.5,12.33 19.37,12.24C19.23,12.15 19.14,12.05 19.09,11.94C19.04,11.83 19,11.7 19,11.55C19,11.41 19.04,11.27 19.1,11.14C19.16,11 19.25,10.89 19.37,10.8C19.5,10.7 19.64,10.62 19.82,10.56C20,10.5 20.22,10.47 20.46,10.47C20.71,10.47 20.93,10.5 21.12,10.58C21.31,10.65 21.47,10.75 21.6,10.87C21.73,11 21.82,11.13 21.89,11.29C21.95,11.45 22,11.61 22,11.78H23.94C23.94,11.39 23.86,11.03 23.7,10.69C23.54,10.35 23.31,10.06 23,9.81C22.71,9.56 22.35,9.37 21.92,9.22C21.5,9.07 21,9 20.46,9C19.95,9 19.5,9.07 19.07,9.21C18.66,9.35 18.3,9.54 18,9.78C17.72,10 17.5,10.3 17.34,10.62C17.18,10.94 17.11,11.27 17.11,11.63C17.11,12 17.19,12.32 17.34,12.59C17.5,12.87 17.7,13.11 18,13.32C18.25,13.53 18.58,13.7 18.96,13.85C19.34,14 19.77,14.11 20.23,14.21C20.62,14.29 20.94,14.38 21.18,14.47C21.42,14.56 21.61,14.66 21.75,14.76C21.88,14.86 21.97,15 22,15.1C22.07,15.22 22.09,15.35 22.09,15.5C22.09,15.81 21.96,16.06 21.69,16.26C21.42,16.46 21.03,16.55 20.5,16.55C20.3,16.55 20.09,16.53 19.88,16.47C19.67,16.42 19.5,16.34 19.32,16.23C19.15,16.12 19,15.97 18.91,15.79C18.8,15.61 18.74,15.38 18.73,15.12H16.84C16.84,15.5 16.92,15.83 17.08,16.17C17.24,16.5 17.47,16.82 17.78,17.1C18.09,17.37 18.47,17.59 18.93,17.76C19.39,17.93 19.91,18 20.5,18C21.04,18 21.5,17.95 21.95,17.82C22.38,17.69 22.75,17.5 23.06,17.28C23.37,17.05 23.6,16.77 23.77,16.45C23.94,16.13 24,15.78 24,15.39C24,15 23.93,14.65 23.78,14.37M0,7.72V9.4L3,8.4V18H5V6H4.75L0,7.72Z";
var mdiTimer3 = "M20.87,14.37C20.73,14.09 20.5,13.84 20.24,13.63C19.96,13.42 19.63,13.24 19.23,13.1C18.83,12.96 18.38,12.83 17.88,12.72C17.53,12.65 17.24,12.57 17,12.5C16.78,12.41 16.6,12.33 16.46,12.24C16.32,12.15 16.23,12.05 16.18,11.94C16.13,11.83 16.1,11.7 16.1,11.55C16.1,11.4 16.13,11.27 16.19,11.14C16.25,11 16.34,10.89 16.46,10.8C16.58,10.7 16.73,10.62 16.91,10.56C17.09,10.5 17.31,10.47 17.55,10.47C17.8,10.47 18,10.5 18.21,10.58C18.4,10.65 18.56,10.75 18.69,10.87C18.82,11 18.91,11.13 19,11.29C19.04,11.45 19.08,11.61 19.08,11.78H21.03C21.03,11.39 20.95,11.03 20.79,10.69C20.63,10.35 20.4,10.06 20.1,9.81C19.8,9.56 19.44,9.37 19,9.22C18.58,9.07 18.09,9 17.55,9C17.04,9 16.57,9.07 16.16,9.21C15.75,9.35 15.39,9.54 15.1,9.78C14.81,10 14.59,10.3 14.43,10.62C14.27,10.94 14.2,11.27 14.2,11.63C14.2,12 14.28,12.31 14.43,12.59C14.58,12.87 14.8,13.11 15.07,13.32C15.34,13.53 15.67,13.7 16.05,13.85C16.43,14 16.86,14.11 17.32,14.21C17.71,14.29 18.03,14.38 18.27,14.47C18.5,14.56 18.7,14.66 18.84,14.76C18.97,14.86 19.06,15 19.11,15.1C19.16,15.22 19.18,15.35 19.18,15.5C19.18,15.81 19.05,16.06 18.78,16.26C18.5,16.46 18.12,16.55 17.61,16.55C17.39,16.55 17.18,16.53 16.97,16.47C16.76,16.42 16.57,16.34 16.41,16.23C16.24,16.12 16.11,15.97 16,15.79C15.89,15.61 15.83,15.38 15.82,15.12H13.93C13.93,15.5 14,15.83 14.17,16.17C14.33,16.5 14.56,16.82 14.87,17.1C15.18,17.37 15.56,17.59 16,17.76C16.5,17.93 17,18 17.6,18C18.13,18 18.61,17.95 19.04,17.82C19.47,17.69 19.84,17.5 20.15,17.28C20.46,17.05 20.69,16.77 20.86,16.45C21.03,16.13 21.11,15.78 21.11,15.39C21.09,15 21,14.65 20.87,14.37M11.61,12.97C11.45,12.73 11.25,12.5 11,12.32C10.74,12.13 10.43,11.97 10.06,11.84C10.36,11.7 10.63,11.54 10.86,11.34C11.09,11.14 11.28,10.93 11.43,10.7C11.58,10.47 11.7,10.24 11.77,10C11.85,9.75 11.88,9.5 11.88,9.26C11.88,8.71 11.79,8.22 11.6,7.8C11.42,7.38 11.16,7.03 10.82,6.74C10.5,6.46 10.09,6.24 9.62,6.1C9.17,5.97 8.65,5.9 8.09,5.9C7.54,5.9 7.03,6 6.57,6.14C6.1,6.31 5.7,6.54 5.37,6.83C5.04,7.12 4.77,7.46 4.59,7.86C4.39,8.25 4.3,8.69 4.3,9.15H6.28C6.28,8.89 6.33,8.66 6.42,8.46C6.5,8.26 6.64,8.08 6.8,7.94C6.97,7.8 7.16,7.69 7.38,7.61C7.6,7.53 7.84,7.5 8.11,7.5C8.72,7.5 9.17,7.65 9.47,7.96C9.77,8.27 9.91,8.71 9.91,9.28C9.91,9.55 9.87,9.8 9.79,10C9.71,10.24 9.58,10.43 9.41,10.59C9.24,10.75 9.03,10.87 8.78,10.96C8.53,11.05 8.23,11.09 7.89,11.09H6.72V12.66H7.9C8.24,12.66 8.54,12.7 8.81,12.77C9.08,12.85 9.31,12.96 9.5,13.12C9.69,13.28 9.84,13.5 9.94,13.73C10.04,13.97 10.1,14.27 10.1,14.6C10.1,15.22 9.92,15.69 9.57,16C9.22,16.35 8.73,16.5 8.12,16.5C7.83,16.5 7.56,16.47 7.32,16.38C7.08,16.3 6.88,16.18 6.71,16C6.54,15.86 6.41,15.68 6.32,15.46C6.23,15.24 6.18,15 6.18,14.74H4.19C4.19,15.29 4.3,15.77 4.5,16.19C4.72,16.61 5,16.96 5.37,17.24C5.73,17.5 6.14,17.73 6.61,17.87C7.08,18 7.57,18.08 8.09,18.08C8.66,18.08 9.18,18 9.67,17.85C10.16,17.7 10.58,17.47 10.93,17.17C11.29,16.87 11.57,16.5 11.77,16.07C11.97,15.64 12.07,15.14 12.07,14.59C12.07,14.3 12.03,14 11.96,13.73C11.88,13.5 11.77,13.22 11.61,12.97Z";
var mdiTimerOff = "M3 4L1.75 5.27L4.5 8.03C3.55 9.45 3 11.16 3 13C3 17.97 7.03 22 12 22C13.84 22 15.55 21.45 17 20.5L19.5 23L20.75 21.73L13.04 14L3 4M15 1H9V3H15M21 13C21 14.83 20.45 16.53 19.5 17.94L13 11.45V7H11V9.45L7.05 5.5C8.47 4.55 10.17 4 12 4C14.12 4 16.07 4.74 17.62 5.97L19.04 4.55L20.45 5.97L19.03 7.39C20.26 8.93 21 10.88 21 13Z";
var mdiTimerOffOutline = "M12,20A7,7 0 0,1 5,13C5,11.72 5.35,10.5 5.95,9.5L15.5,19.04C14.5,19.65 13.28,20 12,20M3,4L1.75,5.27L4.5,8.03C3.55,9.45 3,11.16 3,13A9,9 0 0,0 12,22C13.84,22 15.55,21.45 17,20.5L19.5,23L20.75,21.73L13.04,14L3,4M11,9.44L13,11.44V8H11M15,1H9V3H15M19.04,4.55L17.62,5.97C16.07,4.74 14.12,4 12,4C10.17,4 8.47,4.55 7.05,5.5L8.5,6.94C9.53,6.35 10.73,6 12,6A7,7 0 0,1 19,13C19,14.27 18.65,15.47 18.06,16.5L19.5,17.94C20.45,16.53 21,14.83 21,13C21,10.88 20.26,8.93 19.03,7.39L20.45,5.97L19.04,4.55Z";
var mdiTimerOutline = "M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M19.03,7.39L20.45,5.97C20,5.46 19.55,5 19.04,4.56L17.62,6C16.07,4.74 14.12,4 12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22C17,22 21,17.97 21,13C21,10.88 20.26,8.93 19.03,7.39M11,14H13V8H11M15,1H9V3H15V1Z";
var mdiTimerSand = "M6,2H18V8H18V8L14,12L18,16V16H18V22H6V16H6V16L10,12L6,8V8H6V2M16,16.5L12,12.5L8,16.5V20H16V16.5M12,11.5L16,7.5V4H8V7.5L12,11.5M10,6H14V6.75L12,8.75L10,6.75V6Z";
var mdiTimerSandEmpty = "M6,2V8H6V8L10,12L6,16V16H6V22H18V16H18V16L14,12L18,8V8H18V2H6M16,16.5V20H8V16.5L12,12.5L16,16.5M12,11.5L8,7.5V4H16V7.5L12,11.5Z";
var mdiTimerSandFull = "M6,2V8H6V8L10,12L6,16V16H6V22H18V16H18V16L14,12L18,8V8H18V2H6Z";
var mdiTimetable = "M14,12H15.5V14.82L17.94,16.23L17.19,17.53L14,15.69V12M4,2H18A2,2 0 0,1 20,4V10.1C21.24,11.36 22,13.09 22,15A7,7 0 0,1 15,22C13.09,22 11.36,21.24 10.1,20H4A2,2 0 0,1 2,18V4A2,2 0 0,1 4,2M4,15V18H8.67C8.24,17.09 8,16.07 8,15H4M4,8H10V5H4V8M18,8V5H12V8H18M4,13H8.29C8.63,11.85 9.26,10.82 10.1,10H4V13M15,10.15A4.85,4.85 0 0,0 10.15,15C10.15,17.68 12.32,19.85 15,19.85A4.85,4.85 0 0,0 19.85,15C19.85,12.32 17.68,10.15 15,10.15Z";
var mdiToaster = "M21 11A2 2 0 0 0 19 9H5A2 2 0 0 0 3 11H2V13H3V20H21V13H22V11M17 15A2 2 0 1 1 19 13A2 2 0 0 1 17 15M18 8H6C6.33 5.75 8.88 4 12 4S17.63 5.75 18 8Z";
var mdiToasterOff = "M20.8 22.7L18.1 20H3V13H2V11H3C3 9.9 3.9 9 5 9H7.1L1.1 3L2.4 1.7L22.1 21.4L20.8 22.7M15.3 12.1C15.6 11.5 16.3 11 17 11C18.1 11 19 11.9 19 13C19 13.8 18.6 14.4 17.9 14.7L21 17.8V13H22V11H21C21 9.9 20.1 9 19 9H12.2L15.3 12.1M18 8C17.6 5.8 15.1 4 12 4C10.6 4 9.2 4.4 8.2 5L11.2 8H18Z";
var mdiToasterOven = "M4,5A2,2 0 0,0 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7A2,2 0 0,0 20,5H4M4,7H16V17H4V7M19,7A1,1 0 0,1 20,8A1,1 0 0,1 19,9A1,1 0 0,1 18,8A1,1 0 0,1 19,7M6,9V11H14V9H6M19,11A1,1 0 0,1 20,12A1,1 0 0,1 19,13A1,1 0 0,1 18,12A1,1 0 0,1 19,11Z";
var mdiToggleSwitch = "M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z";
var mdiToggleSwitchOff = "M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M7,15A3,3 0 0,1 4,12A3,3 0 0,1 7,9A3,3 0 0,1 10,12A3,3 0 0,1 7,15Z";
var mdiToggleSwitchOffOutline = "M7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10M17,7A5,5 0 0,1 22,12A5,5 0 0,1 17,17H7A5,5 0 0,1 2,12A5,5 0 0,1 7,7H17M7,9A3,3 0 0,0 4,12A3,3 0 0,0 7,15H17A3,3 0 0,0 20,12A3,3 0 0,0 17,9H7Z";
var mdiToggleSwitchOutline = "M17,10A2,2 0 0,1 19,12A2,2 0 0,1 17,14A2,2 0 0,1 15,12A2,2 0 0,1 17,10M17,7A5,5 0 0,1 22,12A5,5 0 0,1 17,17H7A5,5 0 0,1 2,12A5,5 0 0,1 7,7H17M7,9A3,3 0 0,0 4,12A3,3 0 0,0 7,15H17A3,3 0 0,0 20,12A3,3 0 0,0 17,9H7Z";
var mdiToilet = "M9,22H17V19.5C19.41,17.87 21,15.12 21,12V4A2,2 0 0,0 19,2H15C13.89,2 13,2.9 13,4V12H3C3,15.09 5,18 9,19.5V22M5.29,14H18.71C18.14,15.91 16.77,17.5 15,18.33V20H11V18.33C9,18 5.86,15.91 5.29,14M15,4H19V12H15V4M16,5V8H18V5H16Z";
var mdiToolbox = "M9,5V6H15V5H9M22,18C22,18.53 21.79,19 21.4,19.41C21,19.81 20.55,20 20,20H4C3.45,20 3,19.81 2.6,19.41C2.21,19 2,18.53 2,18V14H7V15H9V14H15V15H17V14H22V18M4.5,7.22C4.84,6.41 5.45,6 6.33,6H7V5C7,4.45 7.18,4 7.57,3.59C7.96,3.2 8.44,3 9,3H15C15.56,3 16.04,3.2 16.43,3.59C16.82,4 17,4.45 17,5V6H17.67C18.55,6 19.16,6.41 19.5,7.22L21.58,12H17V11H15V12H9V11H7V12H2.42L4.5,7.22Z";
var mdiToolboxOutline = "M20,18V14H17V15H15V14H9V15H7V14H4V18H20M6.33,8L4.59,12H7V11H9V12H15V11H17V12H19.41L17.67,8H6.33M9,5V6H15V5H9M21.84,12.61C21.94,12.83 22,13.09 22,13.41V18C22,18.53 21.79,19 21.4,19.41C21,19.81 20.55,20 20,20H4C3.45,20 3,19.81 2.6,19.41C2.21,19 2,18.53 2,18V13.41C2,13.09 2.06,12.83 2.16,12.61L4.5,7.22C4.84,6.41 5.45,6 6.33,6H7V5C7,4.45 7.18,4 7.57,3.59C7.96,3.2 8.44,3 9,3H15C15.56,3 16.04,3.2 16.43,3.59C16.82,4 17,4.45 17,5V6H17.67C18.55,6 19.16,6.41 19.5,7.22L21.84,12.61Z";
var mdiTools = "M21.71 20.29L20.29 21.71A1 1 0 0 1 18.88 21.71L7 9.85A3.81 3.81 0 0 1 6 10A4 4 0 0 1 2.22 4.7L4.76 7.24L5.29 6.71L6.71 5.29L7.24 4.76L4.7 2.22A4 4 0 0 1 10 6A3.81 3.81 0 0 1 9.85 7L21.71 18.88A1 1 0 0 1 21.71 20.29M2.29 18.88A1 1 0 0 0 2.29 20.29L3.71 21.71A1 1 0 0 0 5.12 21.71L10.59 16.25L7.76 13.42M20 2L16 4V6L13.83 8.17L15.83 10.17L18 8H20L22 4Z";
var mdiTooltip = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2Z";
var mdiTooltipAccount = "M20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H8L12,22L16,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M12,4.3C13.5,4.3 14.7,5.5 14.7,7C14.7,8.5 13.5,9.7 12,9.7C10.5,9.7 9.3,8.5 9.3,7C9.3,5.5 10.5,4.3 12,4.3M18,15H6V14.1C6,12.1 10,11 12,11C14,11 18,12.1 18,14.1V15Z";
var mdiTooltipCheck = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M10.46 14L6.96 10.5L8.37 9.08L10.46 11.17L15.64 6L17.05 7.41L10.46 14Z";
var mdiTooltipCheckOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H15.17L12 19.17L8.83 16H4V4H20V16M10.75 13.71L7.25 10.21L8.66 8.79L10.75 10.88L15.34 6.3L16.75 7.71L10.75 13.71Z";
var mdiTooltipEdit = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M9.08 15H7V12.91L13.17 6.72L15.24 8.8L9.08 15M16.84 7.2L15.83 8.21L13.76 6.18L14.77 5.16C14.97 4.95 15.31 4.94 15.55 5.16L16.84 6.41C17.05 6.62 17.06 6.96 16.84 7.2Z";
var mdiTooltipEditOutline = "M4 2H20C21.11 2 22 2.9 22 4V16C22 17.11 21.11 18 20 18H16L12 22L8 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2M4 4V16H8.83L12 19.17L15.17 16H20V4H4M15.84 8.2L14.83 9.21L12.76 7.18L13.77 6.16C13.97 5.95 14.31 5.94 14.55 6.16L15.84 7.41C16.05 7.62 16.06 7.96 15.84 8.2M8 11.91L12.17 7.72L14.24 9.8L10.08 14H8V11.91Z";
var mdiTooltipImage = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M19,15V7L15,11L13,9L7,15H19M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z";
var mdiTooltipImageOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M7.5,6A1.5,1.5 0 0,1 9,7.5A1.5,1.5 0 0,1 7.5,9A1.5,1.5 0 0,1 6,7.5A1.5,1.5 0 0,1 7.5,6M6,14L11,9L13,11L18,6V14H6Z";
var mdiTooltipMinus = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M16 11H8V9H16V11Z";
var mdiTooltipMinusOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H15.17L12 19.17L8.83 16H4V4H20V16M16 11H8V9H16V11Z";
var mdiTooltipOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4Z";
var mdiTooltipPlus = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z";
var mdiTooltipPlusOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z";
var mdiTooltipRemove = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M15.54 12.12L14.12 13.54L12 11.41L9.88 13.54L8.47 12.12L10.59 10L8.46 7.88L9.88 6.47L12 8.59L14.12 6.47L15.54 7.88L13.41 10L15.54 12.12Z";
var mdiTooltipRemoveOutline = "M20 2H4C2.9 2 2 2.9 2 4V16C2 17.11 2.9 18 4 18H8L12 22L16 18H20C21.11 18 22 17.11 22 16V4C22 2.9 21.11 2 20 2M20 16H15.17L12 19.17L8.83 16H4V4H20V16M8.46 12.12L10.59 10L8.46 7.88L9.88 6.47L12 8.59L14.12 6.47L15.54 7.88L13.41 10L15.54 12.12L14.12 13.54L12 11.41L9.88 13.54L8.46 12.12Z";
var mdiTooltipText = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M5,5V7H19V5H5M5,9V11H15V9H5M5,13V15H17V13H5Z";
var mdiTooltipTextOutline = "M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M6,7H18V9H6V7M6,11H16V13H6V11Z";
var mdiTooth = "M7,2C4,2 2,5 2,8C2,10.11 3,13 4,14C5,15 6,22 8,22C12.54,22 10,15 12,15C14,15 11.46,22 16,22C18,22 19,15 20,14C21,13 22,10.11 22,8C22,5 20,2 17,2C14,2 14,3 12,3C10,3 10,2 7,2Z";
var mdiToothOutline = "M7,2C4,2 2,5 2,8C2,10.11 3,13 4,14C5,15 6,22 8,22C12.54,22 10,15 12,15C14,15 11.46,22 16,22C18,22 19,15 20,14C21,13 22,10.11 22,8C22,5 20,2 17,2C14,2 14,3 12,3C10,3 10,2 7,2M7,4C9,4 10,5 12,5C14,5 15,4 17,4C18.67,4 20,6 20,8C20,9.75 19.14,12.11 18.19,13.06C17.33,13.92 16.06,19.94 15.5,19.94C15.29,19.94 15,18.88 15,17.59C15,15.55 14.43,13 12,13C9.57,13 9,15.55 9,17.59C9,18.88 8.71,19.94 8.5,19.94C7.94,19.94 6.67,13.92 5.81,13.06C4.86,12.11 4,9.75 4,8C4,6 5.33,4 7,4Z";
var mdiToothbrush = "M12.91 6.43L15.03 8.55L16.09 7.5L15.03 6.43L17.86 3.6L18.92 4.66L20 3.6L17.86 1.5M3 20.57L4.43 22L14.5 11.9L16.63 11.19L21.4 6.43C22.18 5.65 22.18 4.38 21.4 3.6L15.55 9.44L13.43 10.15Z";
var mdiToothbrushElectric = "M12 1.5V14C10.34 14 9 15.34 9 17V22H17V17C17 15.34 15.66 14 14 14V3.5C14 2.4 13.11 1.5 12 1.5M7.5 2V9H11V7.5H9V3.5H11V2H7.5M13 17.5C13.83 17.5 14.5 18.17 14.5 19C14.5 19.83 13.83 20.5 13 20.5C12.17 20.5 11.5 19.83 11.5 19C11.5 18.17 12.17 17.5 13 17.5Z";
var mdiToothbrushPaste = "M17.86 1.5L12.91 6.43L15.03 8.55L16.09 7.5L15.03 6.43L17.86 3.6L18.92 4.66L20 3.6M21.4 3.6L15.56 9.44L13.43 10.15L3 20.57L4.43 22L10.08 16.33L14.33 20.57L18.57 16.33L14.33 12.09L14.5 11.9L16.63 11.19L21.4 6.43C22.18 5.65 22.18 4.38 21.4 3.6M6.55 4.31L2.31 8.55L7.26 13.5L11.5 9.26M18.22 18.1L16.09 20.22L17.5 21.63L19.63 19.5Z";
var mdiTorch = "M8.6 9.6C9 10.2 9.5 10.7 10.2 11H14.2C14.5 10.9 14.7 10.7 14.9 10.5C15.9 9.5 16.3 8 15.8 6.7L15.7 6.5C15.6 6.2 15.4 6 15.2 5.8C15.1 5.6 14.9 5.5 14.8 5.3C14.4 5 14 4.7 13.6 4.3C12.7 3.4 12.6 2 13.1 1C12.6 1.1 12.1 1.4 11.7 1.8C10.2 3 9.6 5.1 10.3 7V7.2C10.3 7.3 10.2 7.4 10.1 7.5C10 7.6 9.8 7.5 9.7 7.4L9.6 7.3C9 6.5 8.9 5.3 9.3 4.3C8.4 5.1 7.9 6.4 8 7.7C8 8 8.1 8.3 8.2 8.6C8.2 8.9 8.4 9.3 8.6 9.6M12.3 8.1C12.4 7.6 12.2 7.2 12.1 6.8C12 6.4 12 6 12.2 5.6L12.5 6.2C12.9 6.8 13.6 7 13.8 7.8V8.1C13.8 8.6 13.6 9.1 13.3 9.4C13.1 9.5 12.9 9.7 12.7 9.7C12.1 9.9 11.4 9.6 11 9.2C11.8 9.2 12.2 8.6 12.3 8.1M15 12V14H14L13 22H11L10 14H9V12H15Z";
var mdiTortoise = "M19.31,5.6C18.09,5.56 16.88,6.5 16.5,8C16,10 16,10 15,11C13,13 10,14 4,15C3,15.16 2.5,15.5 2,16C4,16 6,16 4.5,17.5L3,19H6L8,17C10,18 11.33,18 13.33,17L14,19H17L16,16C16,16 17,12 18,11C19,10 19,11 20,11C21,11 22,10 22,8.5C22,8 22,7 20.5,6C20.15,5.76 19.74,5.62 19.31,5.6M9,6A6,6 0 0,0 3,12C3,12.6 3.13,13.08 3.23,13.6C9.15,12.62 12.29,11.59 13.93,9.94L14.43,9.44C13.44,7.34 11.32,6 9,6Z";
var mdiToslink = "M20 10V7L17 4H7L4 7V10C2.9 10 2 10.9 2 12S2.9 14 4 14V18C4 19.1 4.9 20 6 20H18C19.1 20 20 19.1 20 18V14C21.11 14 22 13.11 22 12S21.11 10 20 10M12 16C9.79 16 8 14.21 8 12S9.79 8 12 8 16 9.79 16 12 14.21 16 12 16M14 12C14 13.11 13.11 14 12 14S10 13.11 10 12 10.9 10 12 10 14 10.9 14 12Z";
var mdiTournament = "M2,2V4H7V8H2V10H7C8.11,10 9,9.11 9,8V7H14V17H9V16C9,14.89 8.11,14 7,14H2V16H7V20H2V22H7C8.11,22 9,21.11 9,20V19H14C15.11,19 16,18.11 16,17V13H22V11H16V7C16,5.89 15.11,5 14,5H9V4C9,2.89 8.11,2 7,2H2Z";
var mdiTowTruck = "M15,10H20.39L17.06,6H15V10M17.5,18.5C17.89,18.5 18.24,18.37 18.54,18.07C18.84,17.77 19,17.42 19,17C19,16.61 18.84,16.26 18.54,15.96C18.24,15.66 17.89,15.5 17.5,15.5C17.08,15.5 16.73,15.66 16.43,15.96C16.13,16.26 16,16.61 16,17C16,17.42 16.13,17.77 16.43,18.07C16.73,18.37 17.08,18.5 17.5,18.5M6,18.5C6.44,18.5 6.8,18.37 7.08,18.07C7.36,17.77 7.5,17.42 7.5,17C7.5,16.61 7.36,16.26 7.08,15.96C6.8,15.66 6.44,15.5 6,15.5C5.56,15.5 5.2,15.66 4.92,15.96C4.64,16.26 4.5,16.61 4.5,17C4.5,17.42 4.64,17.77 4.92,18.07C5.2,18.37 5.56,18.5 6,18.5M18,4L23,10V17H20.5C20.5,17.83 20.19,18.53 19.59,19.13C19,19.72 18.3,20 17.5,20C16.67,20 15.97,19.72 15.38,19.13C14.78,18.53 14.5,17.83 14.5,17H9C9,17.83 8.7,18.53 8.11,19.13C7.5,19.72 6.81,20 6,20C5.19,20 4.5,19.72 3.89,19.13C3.3,18.53 3,17.83 3,17H1V13H9.19L3,8.11V11H1V5H2L13,11.06V4H18Z";
var mdiTowerBeach = "M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L18,1V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z";
var mdiTowerFire = "M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L12,1L18,3V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z";
var mdiToyBrick = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H21V6Z";
var mdiToyBrickMarker = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H14.54A9.55 9.55 0 0 1 13 15.5A5.58 5.58 0 0 1 18.5 10A5.3 5.3 0 0 1 21 10.63V6M18.5 12A3.54 3.54 0 0 0 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5A3.54 3.54 0 0 0 18.5 12M18.5 16.8A1.2 1.2 0 1 1 18.5 14.4A1.29 1.29 0 0 1 19.7 15.6A1.15 1.15 0 0 1 18.5 16.8Z";
var mdiToyBrickMarkerOutline = "M18.5 12A3.54 3.54 0 0 0 15 15.5C15 18.1 18.5 22 18.5 22S22 18.1 22 15.5A3.54 3.54 0 0 0 18.5 12M18.5 16.8A1.2 1.2 0 1 1 18.5 14.4A1.29 1.29 0 0 1 19.7 15.6A1.15 1.15 0 0 1 18.5 16.8M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H14.54A15.55 15.55 0 0 1 13.54 18H5V8H19V10A5.11 5.11 0 0 1 21 10.6V6Z";
var mdiToyBrickMinus = "M23 20H15V18H23V20M13 19C13 15.69 15.69 13 19 13C19.7 13 20.37 13.13 21 13.35V6H19V5C19 3.9 18.11 3 17 3H15C13.9 3 13 3.9 13 5V6H11V5C11 3.9 10.11 3 9 3H7C5.9 3 5 3.9 5 5V6H3V20H13.09C13.04 19.67 13 19.34 13 19Z";
var mdiToyBrickMinusOutline = "M13.09 20H3V6H5V5C5 3.9 5.9 3 7 3H9C10.11 3 11 3.9 11 5V6H13V5C13 3.9 13.9 3 15 3H17C18.11 3 19 3.9 19 5V6H21V13.35C20.37 13.13 19.7 13 19 13V8H5V18H13.09C13.04 18.33 13 18.66 13 19S13.04 19.67 13.09 20M23 18H15V20H23V18Z";
var mdiToyBrickOutline = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H21V6M19 18H5V8H19Z";
var mdiToyBrickPlus = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 21 13.34V6M20 15V18H23V20H20V23H18V20H15V18H18V15Z";
var mdiToyBrickPlusOutline = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H14V18H5V8H19V13H21V6M21 15V18H24V20H21V23H19V20H16V18H19V15Z";
var mdiToyBrickRemove = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H13.09A5.47 5.47 0 0 1 13 19A6 6 0 0 1 21 13.34V6M22.54 16.88L20.41 19L22.54 21.12L21.12 22.54L19 20.41L16.88 22.54L15.46 21.12L17.59 19L15.46 16.88L16.88 15.46L19 17.59L21.12 15.46Z";
var mdiToyBrickRemoveOutline = "M19 6V5C19 3.9 18.1 3 17 3H15C13.9 3 13 3.9 13 5V6H11V5C11 3.9 10.1 3 9 3H7C5.9 3 5 3.9 5 5V6H3V20H14V18H5V8H19V13H21V6M17.88 15.46L20 17.59L22.12 15.47L23.54 16.88L21.41 19L23.54 21.12L22.12 22.54L20 20.41L17.88 22.54L16.46 21.12L18.59 19L16.47 16.88";
var mdiToyBrickSearch = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H11.81A6.5 6.5 0 0 1 21 10.81V6M20.31 17.9A4.5 4.5 0 1 0 18.88 19.32L22 22.39L23.39 21M16.5 18A2.5 2.5 0 1 1 19 15.5A2.5 2.5 0 0 1 16.5 18Z";
var mdiToyBrickSearchOutline = "M19 6V5A2 2 0 0 0 17 3H15A2 2 0 0 0 13 5V6H11V5A2 2 0 0 0 9 3H7A2 2 0 0 0 5 5V6H3V20H11.81A6.59 6.59 0 0 1 10.5 18H5V8H19V9.5A6.59 6.59 0 0 1 21 10.81V6M20.31 17.9A4.5 4.5 0 1 0 18.88 19.32L22 22.39L23.39 21M16.5 18A2.5 2.5 0 1 1 19 15.5A2.5 2.5 0 0 1 16.5 18Z";
var mdiTrackLight = "M6,1V3H9V6.4L4.11,4.38L1.43,10.84L6.97,13.14L11.94,16.82L13.79,17.59L17.62,8.35L15.77,7.58L11,6.87V3H14V1H6M21.81,6.29L19.5,7.25L20.26,9.1L22.57,8.14L21.81,6.29M19.78,13.57L19,15.42L21.79,16.57L22.55,14.72L19.78,13.57M16.19,18.93L14.34,19.69L15.3,22L17.15,21.23L16.19,18.93Z";
var mdiTrackpad = "M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M4,5V13H20V5H4M4,19H11V15H4V19M20,19V15H13V19H20Z";
var mdiTrackpadLock = "M3,1C1.89,1 1,1.89 1,3V17C1,18.11 1.89,19 3,19H14V17H12V13H16.68C17.5,12.35 18.47,12 19.5,12C20,12 20.5,12.09 21,12.26V3C21,1.89 20.11,1 19,1H3M3,3H19V11H3V3M3,13H10V17H3V13M19.5,14A2.5,2.5 0 0,0 17,16.5V17A1,1 0 0,0 16,18V22A1,1 0 0,0 17,23H22A1,1 0 0,0 23,22V18A1,1 0 0,0 22,17V16.5A2.5,2.5 0 0,0 19.5,14M19.5,15A1.5,1.5 0 0,1 21,16.5V17H18V16.5A1.5,1.5 0 0,1 19.5,15Z";
var mdiTractor = "M5,4V11.26C3.2,11.9 2,13.6 2,15.5C2,18 4,20 6.5,20C8.79,20 10.71,18.28 10.97,16H15.17C15.06,16.32 15,16.66 15,17A3,3 0 0,0 18,20A3,3 0 0,0 21,17C21,16.66 20.94,16.32 20.82,16H22V13C22,11.89 21.11,11 20,11H15.04L13.65,4H5M7,6H12L13,11V14H10.74C10.16,12.38 8.71,11.23 7,11.03V6M6.5,13.25A2.25,2.25 0 0,1 8.75,15.5A2.25,2.25 0 0,1 6.5,17.75A2.25,2.25 0 0,1 4.25,15.5A2.25,2.25 0 0,1 6.5,13.25M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z";
var mdiTractorVariant = "M13.3 2.79L9.8 6.29L10.5 7L11.9 5.61L13 6.71V9C13 10.11 12.11 11 11 11H10.46A6 6 0 0 1 12 15A6 6 0 0 1 11.91 16H15.03A4.5 4.5 0 0 1 19.5 12A4.5 4.5 0 0 1 22 12.76V8C22 6.89 21.11 6 20 6H13.71L12.61 4.9L14 3.5L13.3 2.79M4 7C3.45 7 3 7.45 3 8C3 8.55 3.45 9 4 9H9C9 7.9 8.11 7 7 7H4M6 10A5 5 0 0 0 4.44 10.25L4.8 11.18L4.33 11.36L4 10.43A5 5 0 0 0 1.54 12.74L2.45 13.15L2.24 13.6L1.34 13.2A5 5 0 0 0 1 15A5 5 0 0 0 1.25 16.56L2.18 16.2L2.36 16.67L1.43 17A5 5 0 0 0 3.74 19.46L4.14 18.55L4.6 18.76L4.2 19.66A5 5 0 0 0 6 20A5 5 0 0 0 7.56 19.75L7.2 18.82L7.67 18.64L8 19.57A5 5 0 0 0 10.46 17.26L9.55 16.86L9.76 16.4L10.66 16.8A5 5 0 0 0 11 15A5 5 0 0 0 10.75 13.44L9.82 13.8L9.64 13.33L10.57 13A5 5 0 0 0 8.26 10.54L7.86 11.45L7.4 11.24L7.8 10.34A5 5 0 0 0 6 10M6 12A3 3 0 0 1 9 15A3 3 0 0 1 6 18A3 3 0 0 1 3 15A3 3 0 0 1 6 12M19.5 13A3.5 3.5 0 0 0 16 16.5A3.5 3.5 0 0 0 19.5 20A3.5 3.5 0 0 0 23 16.5A3.5 3.5 0 0 0 19.5 13M19.5 15A1.5 1.5 0 0 1 21 16.5A1.5 1.5 0 0 1 19.5 18A1.5 1.5 0 0 1 18 16.5A1.5 1.5 0 0 1 19.5 15Z";
var mdiTrademark = "M9.8,8.44H6.87V16H4.89V8.44H2V7H9.8V8.44M13.5,7L15.96,13.5L18.41,7H21V16H19V13.5L19.22,9.24L16.63,16H15.28L12.7,9.25L12.9,13.5V16H10.93V7H13.5Z";
var mdiTrafficCone = "M17 15L18 19H21V22H3V19H6L7 15H17M15 8L16 12H8L9 8H15M13 1L14 5H10L11 1H13Z";
var mdiTrafficLight = "M12,9A2,2 0 0,1 10,7C10,5.89 10.9,5 12,5C13.11,5 14,5.89 14,7A2,2 0 0,1 12,9M12,14A2,2 0 0,1 10,12C10,10.89 10.9,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,19A2,2 0 0,1 10,17C10,15.89 10.9,15 12,15C13.11,15 14,15.89 14,17A2,2 0 0,1 12,19M20,10H17V8.86C18.72,8.41 20,6.86 20,5H17V4A1,1 0 0,0 16,3H8A1,1 0 0,0 7,4V5H4C4,6.86 5.28,8.41 7,8.86V10H4C4,11.86 5.28,13.41 7,13.86V15H4C4,16.86 5.28,18.41 7,18.86V20A1,1 0 0,0 8,21H16A1,1 0 0,0 17,20V18.86C18.72,18.41 20,16.86 20,15H17V13.86C18.72,13.41 20,11.86 20,10Z";
var mdiTrain = "M12,2C8,2 4,2.5 4,6V15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H8.23L10.23,19H14L16,21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V6C20,2.5 16.42,2 12,2M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M11,10H6V6H11V10M13,10V6H18V10H13M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17Z";
var mdiTrainCar = "M12,4H5A3,3 0 0,0 2,7V15A3,3 0 0,0 5,18L4,19V20H5L7,17.97L9,18V13H4V6H13V8H15V7A3,3 0 0,0 12,4M5,14A1,1 0 0,1 6,15A1,1 0 0,1 5,16A1,1 0 0,1 4,15A1,1 0 0,1 5,14M20.57,9.66C20.43,9.26 20.05,9 19.6,9H12.41C11.95,9 11.58,9.26 11.43,9.66L10,13.77V19.28C10,19.66 10.32,20 10.7,20H11.32C11.7,20 12,19.62 12,19.24V18H20V19.24C20,19.62 20.31,20 20.69,20H21.3C21.68,20 22,19.66 22,19.28V17.91L22,13.77L20.57,9.66M12.41,10H19.6L20.63,13H11.38L12.41,10M12,16A1,1 0 0,1 11,15A1,1 0 0,1 12,14A1,1 0 0,1 13,15A1,1 0 0,1 12,16M20,16A1,1 0 0,1 19,15A1,1 0 0,1 20,14A1,1 0 0,1 21,15A1,1 0 0,1 20,16Z";
var mdiTrainCarPassenger = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M7 12H3V9H7V12M15 12H9V9H15V12M21 12H17V9H21V12Z";
var mdiTrainCarPassengerDoor = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M7 12H3V9H7V12M11 16H9V9H11V16M15 16H13V9H15V16M21 12H17V9H21V12Z";
var mdiTrainCarPassengerDoorOpen = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M8 12H3V9H8V12M14 16H10V9H14V16M21 12H16V9H21V12Z";
var mdiTrainCarPassengerVariant = "M21 7H3C1.9 7 1 7.9 1 9V17H2C2 18.11 2.9 19 4 19S6 18.11 6 17H18C18 18.11 18.9 19 20 19S22 18.11 22 17H23V9C23 7.9 22.11 7 21 7M11 12H3V9H11V12M21 12H13V9H21V12Z";
var mdiTrainVariant = "M18,10H6V5H18M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M4,15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V5C20,1.5 16.42,1 12,1C7.58,1 4,1.5 4,5V15.5Z";
var mdiTram = "M19,16.94V8.5C19,5.71 16.39,5.1 13,5L13.75,3.5H17V2H7V3.5H11.75L11,5C7.86,5.11 5,5.73 5,8.5V16.94C5,18.39 6.19,19.6 7.59,19.91L6,21.5V22H8.23L10.23,20H14L16,22H18V21.5L16.5,20H16.42C18.11,20 19,18.63 19,16.94M12,18.5A1.5,1.5 0 0,1 10.5,17A1.5,1.5 0 0,1 12,15.5A1.5,1.5 0 0,1 13.5,17A1.5,1.5 0 0,1 12,18.5M17,14H7V9H17V14Z";
var mdiTramSide = "M9 1L5 4L7.5 6H5C5 6 2 6 2 9V19H7C7 19 7 17 9 17H22V14H18V8H22V6H10.5L13 4L9 1M4 8H9V14H4V8M11 8H16V14H11V8M4 16H5V18H4V16M9 19V19.5C9 20.88 10.12 22 11.5 22C12.5 22 13.39 21.41 13.79 20.5H15.21C15.61 21.41 16.5 22 17.5 22C18.88 22 20 20.88 20 19.5V19H9Z";
var mdiTranscribe = "M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M18,17V15H12.5L10.5,17H18M6,17H8.5L15.35,10.12C15.55,9.93 15.55,9.61 15.35,9.41L13.59,7.65C13.39,7.45 13.07,7.45 12.88,7.65L6,14.53V17Z";
var mdiTranscribeClose = "M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M18,15V13H12.5L10.5,15H18M6,15H8.5L15.35,8.12C15.55,7.93 15.55,7.61 15.35,7.42L13.59,5.65C13.39,5.45 13.07,5.45 12.88,5.65L6,12.53V15Z";
var mdiTransfer = "M8 4A2 2 0 0 0 6 6V10H8V6H16V9H13.5L17 12.5L20.5 9H18V6A2 2 0 0 0 16 4H8M3 12V14H11V12H3M3 15V17H11V15H3M13 15V17H21V15H13M3 18V20H11V18H3M13 18V20H21V18H13Z";
var mdiTransferDown = "M16,3V5H8V3H16M16,7V9H8V7H16M16,11V13H8V11H16M5,15H19L12,22L5,15Z";
var mdiTransferLeft = "M21,16H19V8H21V16M17,16H15V8H17V16M13,16H11V8H13V16M9,5V19L2,12L9,5Z";
var mdiTransferRight = "M3,8H5V16H3V8M7,8H9V16H7V8M11,8H13V16H11V8M15,19.25V4.75L22.25,12L15,19.25Z";
var mdiTransferUp = "M8,21V19H16V21H8M8,17V15H16V17H8M8,13V11H16V13H8M19,9H5L12,2L19,9Z";
var mdiTransitConnection = "M15,12C15,10.7 14.16,9.6 13,9.18V6.82C14.16,6.4 15,5.3 15,4A3,3 0 0,0 12,1A3,3 0 0,0 9,4C9,5.3 9.84,6.4 11,6.82V9.19C9.84,9.6 9,10.7 9,12C9,13.3 9.84,14.4 11,14.82V17.18C9.84,17.6 9,18.7 9,20A3,3 0 0,0 12,23A3,3 0 0,0 15,20C15,18.7 14.16,17.6 13,17.18V14.82C14.16,14.4 15,13.3 15,12M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M12,21A1,1 0 0,1 11,20A1,1 0 0,1 12,19A1,1 0 0,1 13,20A1,1 0 0,1 12,21Z";
var mdiTransitConnectionHorizontal = "M12 9C10.7 9 9.6 9.8 9.2 11H6.8C6.4 9.8 5.3 9 4 9C2.3 9 1 10.3 1 12S2.3 15 4 15C5.3 15 6.4 14.2 6.8 13H9.2C9.6 14.2 10.7 15 12 15S14.4 14.2 14.8 13H17.2C17.6 14.2 18.7 15 20 15C21.7 15 23 13.7 23 12S21.7 9 20 9C18.7 9 17.6 9.8 17.2 11H14.8C14.4 9.8 13.3 9 12 9M3 12C3 11.4 3.4 11 4 11S5 11.4 5 12 4.6 13 4 13 3 12.6 3 12M21 12C21 12.6 20.6 13 20 13S19 12.6 19 12 19.4 11 20 11 21 11.4 21 12Z";
var mdiTransitConnectionVariant = "M18,11H14.82C14.4,9.84 13.3,9 12,9C10.7,9 9.6,9.84 9.18,11H6C5.67,11 4,10.9 4,9V8C4,6.17 5.54,6 6,6H16.18C16.6,7.16 17.7,8 19,8A3,3 0 0,0 22,5A3,3 0 0,0 19,2C17.7,2 16.6,2.84 16.18,4H6C4.39,4 2,5.06 2,8V9C2,11.94 4.39,13 6,13H9.18C9.6,14.16 10.7,15 12,15C13.3,15 14.4,14.16 14.82,13H18C18.33,13 20,13.1 20,15V16C20,17.83 18.46,18 18,18H7.82C7.4,16.84 6.3,16 5,16A3,3 0 0,0 2,19A3,3 0 0,0 5,22C6.3,22 7.4,21.16 7.82,20H18C19.61,20 22,18.93 22,16V15C22,12.07 19.61,11 18,11M19,4A1,1 0 0,1 20,5A1,1 0 0,1 19,6A1,1 0 0,1 18,5A1,1 0 0,1 19,4M5,20A1,1 0 0,1 4,19A1,1 0 0,1 5,18A1,1 0 0,1 6,19A1,1 0 0,1 5,20Z";
var mdiTransitDetour = "M19 3A3 3 0 0 0 16.61 4.21A11.5 11.5 0 0 0 13.75 4L13.88 6A9.47 9.47 0 0 1 16 6.13A3 3 0 1 0 19 3M19 7A1 1 0 1 1 20 6A1 1 0 0 1 19 7M8.86 7.86L7.67 6.25A11.5 11.5 0 0 1 11.6 4.37L12.1 6.31A9.5 9.5 0 0 0 8.86 7.86M21 18A3 3 0 1 1 15.69 16.11A9.47 9.47 0 0 0 8.59 13.46C8.37 13.47 8.16 13.5 7.94 13.54A3 3 0 1 1 4.39 10.06A11.54 11.54 0 0 1 6.04 7.7L7.5 9.06A9.34 9.34 0 0 0 6.5 10.41A3.04 3.04 0 0 1 7.62 11.56C7.91 11.5 8.19 11.5 8.5 11.46A11.47 11.47 0 0 1 17.46 15.05A2.96 2.96 0 0 1 18 15A3 3 0 0 1 21 18Z";
var mdiTransitSkip = "M21 12C21 8 18.5 4.7 15 3.5C14.7 2.1 13.5 1 12 1C10.3 1 9 2.3 9 4S10.3 7 12 7C13.1 7 14.1 6.4 14.6 5.5C17.2 6.5 19 9 19 12C19 14.9 17.2 17.5 14.6 18.5C14.1 17.6 13.1 17 12 17C10.3 17 9 18.3 9 20S10.3 23 12 23C13.5 23 14.7 21.9 15 20.5C18.5 19.3 21 15.9 21 12M12 5C11.4 5 11 4.6 11 4S11.4 3 12 3 13 3.4 13 4 12.6 5 12 5M12 21C11.4 21 11 20.6 11 20S11.4 19 12 19 13 19.4 13 20 12.6 21 12 21M12 9C13.7 9 15 10.3 15 12S13.7 15 12 15 9 13.7 9 12 10.3 9 12 9Z";
var mdiTransitTransfer = "M16.5,15.5H22V17H16.5V18.75L14,16.25L16.5,13.75V15.5M19.5,19.75V18L22,20.5L19.5,23V21.25H14V19.75H19.5M9.5,5.5A2,2 0 0,1 7.5,3.5A2,2 0 0,1 9.5,1.5A2,2 0 0,1 11.5,3.5A2,2 0 0,1 9.5,5.5M5.75,8.9L4,9.65V13H2V8.3L7.25,6.15C7.5,6.05 7.75,6 8,6C8.7,6 9.35,6.35 9.7,6.95L10.65,8.55C11.55,10 13.15,11 15,11V13C12.8,13 10.85,12 9.55,10.4L8.95,13.4L11,15.45V23H9V17L6.85,15L5.1,23H3L5.75,8.9Z";
var mdiTransition = "M15,2A7,7 0 0,1 22,9C22,11.71 20.46,14.05 18.22,15.22C17.55,16.5 16.5,17.55 15.22,18.22C14.05,20.46 11.71,22 9,22A7,7 0 0,1 2,15C2,12.29 3.54,9.95 5.78,8.78C6.45,7.5 7.5,6.45 8.78,5.78C9.95,3.54 12.29,2 15,2M12,19A7,7 0 0,1 5,12C4.37,12.84 4,13.87 4,15A5,5 0 0,0 9,20C10.13,20 11.16,19.63 12,19M15,16A7,7 0 0,1 8,9H8C7.37,9.84 7,10.87 7,12A5,5 0 0,0 12,17C13.13,17 14.16,16.63 15,16V16M15,4C13.87,4 12.84,4.37 12,5V5A7,7 0 0,1 19,12H19C19.63,11.16 20,10.13 20,9A5,5 0 0,0 15,4M10,9A5,5 0 0,0 15,14C15.6,14 16.17,13.9 16.7,13.7C16.9,13.17 17,12.6 17,12A5,5 0 0,0 12,7C11.4,7 10.83,7.1 10.3,7.3C10.1,7.83 10,8.4 10,9Z";
var mdiTransitionMasked = "M15,2C16.94,2 18.59,2.7 19.95,4.05C21.3,5.41 22,7.06 22,9C22,10.56 21.5,11.96 20.58,13.2C19.64,14.43 18.44,15.27 16.97,15.7L17,15.38V15C17,12.81 16.23,10.93 14.65,9.35C13.07,7.77 11.19,7 9,7H8.63L8.3,7.03C8.73,5.56 9.57,4.36 10.8,3.42C12.04,2.5 13.44,2 15,2M9,8A7,7 0 0,1 16,15A7,7 0 0,1 9,22A7,7 0 0,1 2,15A7,7 0 0,1 9,8M9,10A5,5 0 0,0 4,15A5,5 0 0,0 9,20A5,5 0 0,0 14,15A5,5 0 0,0 9,10Z";
var mdiTranslate = "M12.87,15.07L10.33,12.56L10.36,12.53C12.1,10.59 13.34,8.36 14.07,6H17V4H10V2H8V4H1V6H12.17C11.5,7.92 10.44,9.75 9,11.35C8.07,10.32 7.3,9.19 6.69,8H4.69C5.42,9.63 6.42,11.17 7.67,12.56L2.58,17.58L4,19L9,14L12.11,17.11L12.87,15.07M18.5,10H16.5L12,22H14L15.12,19H19.87L21,22H23L18.5,10M15.88,17L17.5,12.67L19.12,17H15.88Z";
var mdiTranslateOff = "M12.17,5.81C11.87,6.69 11.47,7.55 11,8.39L12.35,9.74C13.11,8.5 13.71,7.18 14.13,5.81H17.16V3.75H9.94V1.69H7.87V3.75H6.37L8.43,5.81H12.17M15.53,12.91L17.03,14.41L17.67,12.69L19.08,16.47L22.39,19.77L18.7,9.94H16.64L15.53,12.91M1.31,1.31L0,2.62L1.13,3.75H0.65V5.81H3.19L5.26,7.88H4.46C5.21,9.56 6.24,11.15 7.53,12.58L2.28,17.76L3.75,19.22L8.91,14.07L12.11,17.27L12.8,15.43L14.1,16.72L12,22.31H14.06L15.22,19.22H16.6L21.38,24L22.69,22.69L1.31,1.31Z";
var mdiTransmissionTower = "M8.28,5.45L6.5,4.55L7.76,2H16.23L17.5,4.55L15.72,5.44L15,4H9L8.28,5.45M18.62,8H14.09L13.3,5H10.7L9.91,8H5.38L4.1,10.55L5.89,11.44L6.62,10H17.38L18.1,11.45L19.89,10.56L18.62,8M17.77,22H15.7L15.46,21.1L12,15.9L8.53,21.1L8.3,22H6.23L9.12,11H11.19L10.83,12.35L12,14.1L13.16,12.35L12.81,11H14.88L17.77,22M11.4,15L10.5,13.65L9.32,18.13L11.4,15M14.68,18.12L13.5,13.64L12.6,15L14.68,18.12Z";
var mdiTrashCan = "M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M9,8H11V17H9V8M13,8H15V17H13V8Z";
var mdiTrashCanOutline = "M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z";
var mdiTray = "M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17Z";
var mdiTrayAlert = "M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17M13 12H11V14H13M13 4H11V10H13Z";
var mdiTrayFull = "M18 5H6V7H18M6 9H18V11H6M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17M18 13H6V15H18Z";
var mdiTrayMinus = "M16 10H8V8H16M2 17A2 2 0 0 0 4 19H20A2 2 0 0 0 22 17V12H20V17H4V12H2Z";
var mdiTrayPlus = "M2 12H4V17H20V12H22V17A2 2 0 0 1 20 19H4A2 2 0 0 1 2 17M11 5H13V8H16V10H13V13H11V10H8V8H11Z";
var mdiTrayRemove = "M2 17A2 2 0 0 0 4 19H20A2 2 0 0 0 22 17V12H20V17H4V12H2M14.12 5.46L15.54 6.88L13.41 9L15.54 11.12L14.12 12.54L12 10.41L9.88 12.54L8.46 11.12L10.59 9L8.46 6.88L9.88 5.46L12 7.59Z";
var mdiTreasureChest = "M5,4H19A3,3 0 0,1 22,7V11H15V10H9V11H2V7A3,3 0 0,1 5,4M11,11H13V13H11V11M2,12H9V13L11,15H13L15,13V12H22V20H2V12Z";
var mdiTree = "M11,21V16.74C10.53,16.91 10.03,17 9.5,17C7,17 5,15 5,12.5C5,11.23 5.5,10.09 6.36,9.27C6.13,8.73 6,8.13 6,7.5C6,5 8,3 10.5,3C12.06,3 13.44,3.8 14.25,5C14.33,5 14.41,5 14.5,5A5.5,5.5 0 0,1 20,10.5A5.5,5.5 0 0,1 14.5,16C14,16 13.5,15.93 13,15.79V21H11Z";
var mdiTreeOutline = "M10.5,3C8,3 6,5 6,7.5C6,8.11 6.13,8.71 6.37,9.27C5.5,10.12 5,11.28 5,12.5C5,15 7,17 9.5,17C10,17 10.5,16.89 11,16.72V21H13V15.77C13.5,15.91 14,16 14.5,16A5.5,5.5 0 0,0 20,10.5A5.5,5.5 0 0,0 14.5,5C14.41,5 14.33,5 14.24,5C13.41,3.76 12,3 10.5,3M10.5,5C11.82,5 12.91,6.03 13,7.35C13.46,7.12 14,7 14.5,7A3.5,3.5 0 0,1 18,10.5A3.5,3.5 0 0,1 14.5,14C13.54,14 12.63,13.61 11.96,12.91C11.76,14.12 10.72,15 9.5,15A2.5,2.5 0 0,1 7,12.5C7,11.12 7.8,10.54 9,9.79C8.2,8.76 8,8.16 8,7.5A2.5,2.5 0 0,1 10.5,5Z";
var mdiTrello = "M19.5,2H4.5A2.5,2.5 0 0,0 2,4.5V19.5A2.5,2.5 0 0,0 4.5,22H19.5A2.5,2.5 0 0,0 22,19.5V4.5A2.5,2.5 0 0,0 19.5,2M10.7,17.2A1.2,1.2 0 0,1 9.5,18.4H5.8C5.14,18.4 4.6,17.86 4.6,17.2V5.8A1.2,1.2 0 0,1 5.8,4.6H9.5C10.16,4.6 10.7,5.14 10.7,5.8V17.2M19.4,12.2C19.4,12.86 18.86,13.4 18.2,13.4H14.5C13.84,13.4 13.3,12.86 13.3,12.2V5.8C13.3,5.14 13.84,4.6 14.5,4.6H18.2C18.86,4.6 19.4,5.14 19.4,5.8V12.2Z";
var mdiTrendingDown = "M16,18L18.29,15.71L13.41,10.83L9.41,14.83L2,7.41L3.41,6L9.41,12L13.41,8L19.71,14.29L22,12V18H16Z";
var mdiTrendingNeutral = "M22,12L18,8V11H3V13H18V16L22,12Z";
var mdiTrendingUp = "M16,6L18.29,8.29L13.41,13.17L9.41,9.17L2,16.59L3.41,18L9.41,12L13.41,16L19.71,9.71L22,12V6H16Z";
var mdiTriangle = "M1,21H23L12,2";
var mdiTriangleOutline = "M12,2L1,21H23M12,6L19.53,19H4.47";
var mdiTriangleWave = "M22 12L17 22L7.1 6.04L4.24 12H2L7 2L16.9 17.96L19.76 12H22Z";
var mdiTriforce = "M1.5,21L12,3.5L22.5,21H1.5M12,21L17,12H7L12,21Z";
var mdiTrophy = "M18 2C17.1 2 16 3 16 4H8C8 3 6.9 2 6 2H2V11C2 12 3 13 4 13H6.2C6.6 15 7.9 16.7 11 17V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V17C16.1 16.7 17.4 15 17.8 13H20C21 13 22 12 22 11V2H18M6 11H4V4H6V11M20 11H18V4H20V11Z";
var mdiTrophyAward = "M15.2 10.7L16.6 16L12 12.2L7.4 16L8.8 10.8L4.6 7.3L10 7L12 2L14 7L19.4 7.3L15.2 10.7M14 19H13V16L12 15L11 16V19H10C8.9 19 8 19.9 8 21V22H16V21C16 19.9 15.11 19 14 19Z";
var mdiTrophyBroken = "M6.2 13C6.6 14.8 7.6 16.3 10 16.8V19.34C8 20.12 8 22 8 22H13.2L10.2 15L14.2 10L10.7 4H8C8 3 6.9 2 6 2H2V11C2 12 3 13 4 13H6.2M6 11H4V4H6V11M17.8 13H20C21 13 22 12 22 11V2H18C17.1 2 16 3 16 4H13.9L16.7 10L12.2 15L13.2 22H16C16 22 16 20.12 14 19.34L14 16.85C16.39 16.35 17.5 14.7 17.8 13M20 11H18V4H20V11Z";
var mdiTrophyOutline = "M18 2C17.1 2 16 3 16 4H8C8 3 6.9 2 6 2H2V11C2 12 3 13 4 13H6.2C6.6 15 7.9 16.7 11 17V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V17C16.1 16.7 17.4 15 17.8 13H20C21 13 22 12 22 11V2H18M6 11H4V4H6V11M16 11.5C16 13.43 15.42 15 12 15C8.59 15 8 13.43 8 11.5V6H16V11.5M20 11H18V4H20V11Z";
var mdiTrophyVariant = "M17 4V2H7V4H2V11C2 12.1 2.9 13 4 13H7.1C7.5 14.96 9.04 16.5 11 16.9V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V16.9C14.96 16.5 16.5 14.96 16.9 13H20C21.1 13 22 12.1 22 11V4H17M4 11V6H7V11L4 11M20 11L17 11V6H20L20 11Z";
var mdiTrophyVariantOutline = "M17 4V2H7V4H2V11C2 12.1 2.9 13 4 13H7.1C7.5 14.96 9.04 16.5 11 16.9V19.08C8 19.54 8 22 8 22H16C16 22 16 19.54 13 19.08V16.9C14.96 16.5 16.5 14.96 16.9 13H20C21.1 13 22 12.1 22 11V4H17M4 11V6H7V11L4 11M15 12C15 13.65 13.65 15 12 15S9 13.65 9 12V4H15V12M20 11L17 11V6H20L20 11Z";
var mdiTruck = "M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5M19.5,9.5L21.46,12H17V9.5M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M20,8H17V4H3C1.89,4 1,4.89 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8Z";
var mdiTruckCheck = "M3,4H17V8H20L23,12V17H21A3,3 0 0,1 18,20A3,3 0 0,1 15,17H9A3,3 0 0,1 6,20A3,3 0 0,1 3,17H1V6C1,4.89 1.9,4 3,4M17,9.5V12H21.47L19.5,9.5H17M6,15.5A1.5,1.5 0 0,0 4.5,17A1.5,1.5 0 0,0 6,18.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 6,15.5M18,15.5A1.5,1.5 0 0,0 16.5,17A1.5,1.5 0 0,0 18,18.5A1.5,1.5 0 0,0 19.5,17A1.5,1.5 0 0,0 18,15.5M8,14L14,8L12.59,6.58L8,11.17L5.91,9.08L4.5,10.5L8,14Z";
var mdiTruckCheckOutline = "M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H9C9 18.66 7.66 20 6 20C4.34 20 3 18.66 3 17H1V6C1 4.89 1.89 4 3 4H17V8H20M3 6V15H3.76C4.31 14.39 5.11 14 6 14C6.89 14 7.69 14.39 8.24 15H15V6H3M5 10.5L6.5 9L8 10.5L11.5 7L13 8.5L8 13.5L5 10.5Z";
var mdiTruckDelivery = "M3,4A2,2 0 0,0 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8H17V4M10,6L14,10L10,14V11H4V9H10M17,9.5H19.5L21.47,12H17M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z";
var mdiTruckDeliveryOutline = "M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H9C9 18.66 7.66 20 6 20C4.34 20 3 18.66 3 17H1V6C1 4.89 1.89 4 3 4H17V8H20M3 6V15H3.76C4.31 14.39 5.11 14 6 14C6.89 14 7.69 14.39 8.24 15H15V6H3M10 7L13.5 10.5L10 14V11.5H5V9.5H10V7Z";
var mdiTruckFast = "M3,13.5L2.25,12H7.5L6.9,10.5H2L1.25,9H9.05L8.45,7.5H1.11L0.25,6H4A2,2 0 0,1 6,4H18V8H21L24,12V17H22A3,3 0 0,1 19,20A3,3 0 0,1 16,17H12A3,3 0 0,1 9,20A3,3 0 0,1 6,17H4V13.5H3M19,18.5A1.5,1.5 0 0,0 20.5,17A1.5,1.5 0 0,0 19,15.5A1.5,1.5 0 0,0 17.5,17A1.5,1.5 0 0,0 19,18.5M20.5,9.5H18V12H22.46L20.5,9.5M9,18.5A1.5,1.5 0 0,0 10.5,17A1.5,1.5 0 0,0 9,15.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 9,18.5Z";
var mdiTruckFastOutline = "M.75 7.5H10.5L11.25 9H1.5L.75 7.5M1.75 10.5H11.5L12.25 12H2.5L1.75 10.5M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M8 18.5C8.83 18.5 9.5 17.83 9.5 17C9.5 16.17 8.83 15.5 8 15.5C7.17 15.5 6.5 16.17 6.5 17C6.5 17.83 7.17 18.5 8 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H11C11 18.66 9.65 20 8 20C6.34 20 5 18.66 5 17H3V13.5 13.5H5V15H5.76C6.31 14.39 7.11 14 8 14C8.89 14 9.69 14.39 10.24 15H15V6H3V6C3 4.89 3.89 4 5 4H17V8H20Z";
var mdiTruckOutline = "M18 18.5C18.83 18.5 19.5 17.83 19.5 17C19.5 16.17 18.83 15.5 18 15.5C17.17 15.5 16.5 16.17 16.5 17C16.5 17.83 17.17 18.5 18 18.5M19.5 9.5H17V12H21.46L19.5 9.5M6 18.5C6.83 18.5 7.5 17.83 7.5 17C7.5 16.17 6.83 15.5 6 15.5C5.17 15.5 4.5 16.17 4.5 17C4.5 17.83 5.17 18.5 6 18.5M20 8L23 12V17H21C21 18.66 19.66 20 18 20C16.34 20 15 18.66 15 17H9C9 18.66 7.66 20 6 20C4.34 20 3 18.66 3 17H1V6C1 4.89 1.89 4 3 4H17V8H20M3 6V15H3.76C4.31 14.39 5.11 14 6 14C6.89 14 7.69 14.39 8.24 15H15V6H3Z";
var mdiTruckTrailer = "M22,15V17H10A3,3 0 0,1 7,20A3,3 0 0,1 4,17H2V6A2,2 0 0,1 4,4H17A2,2 0 0,1 19,6V15H22M7,16A1,1 0 0,0 6,17A1,1 0 0,0 7,18A1,1 0 0,0 8,17A1,1 0 0,0 7,16Z";
var mdiTrumpet = "M22 6C21 11 15 11 15 11H4C3 11 2 10 2 10H1V14H2C2 14 3 13 4 13H4.3C4.1 13.3 4 13.6 4 14V16C4 17.1 4.9 18 6 18H7V19H9V18H10V19H12V18H13V19H15V18H16C17.1 18 18 17.1 18 16V14C18 13.9 18 13.7 17.9 13.6C19.6 14.2 21.4 15.4 22 18H23V6H22M6 16.5C5.7 16.5 5.5 16.3 5.5 16V14C5.5 13.7 5.7 13.5 6 13.5H7V16.5H6M9 16.5V13.5H10V16.5H9M12 16.5V13.5H13V16.5H12M16.5 16C16.5 16.3 16.3 16.5 16 16.5H15V13.5H16C16.3 13.5 16.5 13.7 16.5 14V16M9 10H7V9H9V10M12 10H10V9H12V10M15 10H13V9H15V10Z";
var mdiTshirtCrew = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.07C5.31,13.46 4.68,13.46 4.29,13.07L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10.34,5 12,5C13.66,5 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.12V20A1,1 0 0,1 16,21";
var mdiTshirtCrewOutline = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10.34,5 12,5C13.66,5 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15.8,5.63 15.43,5.94 15,6.2C14.16,6.7 13.13,7 12,7C10.3,7 8.79,6.32 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z";
var mdiTshirtV = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.07C5.31,13.46 4.68,13.46 4.29,13.07L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9.29,4.8 10.4,6.37 12,7.25C13.6,6.37 14.71,4.8 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.12V20A1,1 0 0,1 16,21";
var mdiTshirtVOutline = "M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10,6 12,7.25C14,6 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15,7 14,8.25 12,9.25C10,8.25 9,7 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z";
var mdiTumbleDryer = "M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M10,4A1,1 0 0,0 9,5A1,1 0 0,0 10,6A1,1 0 0,0 11,5A1,1 0 0,0 10,4M12,8A6,6 0 0,0 6,14A6,6 0 0,0 12,20A6,6 0 0,0 18,14A6,6 0 0,0 12,8M8.11,10.5H10C9.76,11.88 10,12.67 10.58,13.29C11.68,14.36 12.16,15.71 11.89,17.5H10C10.24,16.12 10,15.33 9.42,14.71C8.32,13.64 7.85,12.29 8.11,10.5M12.11,10.5H14C13.76,11.88 14,12.67 14.58,13.29C15.68,14.36 16.16,15.71 15.89,17.5H14C14.24,16.12 14,15.33 13.42,14.71C12.32,13.64 11.85,12.29 12.11,10.5Z";
var mdiTumbleDryerAlert = "M4 2H16C17.11 2 18 2.9 18 4V20C18 21.11 17.11 22 16 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2M5 4C4.45 4 4 4.45 4 5S4.45 6 5 6 6 5.55 6 5 5.55 4 5 4M8 4C7.45 4 7 4.45 7 5S7.45 6 8 6 9 5.55 9 5 8.55 4 8 4M10 8C6.69 8 4 10.69 4 14S6.69 20 10 20 16 17.31 16 14 13.31 8 10 8M6.11 10.5H8C7.76 11.88 8 12.67 8.58 13.29C9.68 14.36 10.16 15.71 9.89 17.5H8C8.24 16.12 8 15.33 7.42 14.71C6.32 13.64 5.85 12.29 6.11 10.5M10.11 10.5H12C11.76 11.88 12 12.67 12.58 13.29C13.68 14.36 14.16 15.71 13.89 17.5H12C12.24 16.12 12 15.33 11.42 14.71C10.32 13.64 9.85 12.29 10.11 10.5M20 15H22V17H20V15M20 7H22V13H20V7Z";
var mdiTumbleDryerOff = "M22.11 21.46L2.39 1.73L1.11 3L4 5.89V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M12 20C8.69 20 6 17.31 6 14C6 12.32 6.7 10.8 7.82 9.71L8.61 10.5H8.11C7.85 12.29 8.32 13.64 9.42 14.71C10 15.33 10.24 16.12 10 17.5H11.89C12.16 15.71 11.68 14.36 10.58 13.29C10.22 12.91 10 12.44 9.95 11.84L14.03 15.92C14.11 16.35 14.11 16.86 14 17.5H15.61L16.29 18.18C15.2 19.3 13.69 20 12 20M11.25 8.05C11.5 8 11.75 8 12 8C15.31 8 18 10.69 18 14C18 14.25 18 14.5 17.95 14.75L20 16.8V4C20 2.9 19.11 2 18 2H6C5.76 2 5.54 2.05 5.33 2.13L11.25 8.05M10 4C10.55 4 11 4.45 11 5S10.55 6 10 6 9 5.55 9 5 9.45 4 10 4Z";
var mdiTune = "M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z";
var mdiTuneVariant = "M8 13C6.14 13 4.59 14.28 4.14 16H2V18H4.14C4.59 19.72 6.14 21 8 21S11.41 19.72 11.86 18H22V16H11.86C11.41 14.28 9.86 13 8 13M8 19C6.9 19 6 18.1 6 17C6 15.9 6.9 15 8 15S10 15.9 10 17C10 18.1 9.1 19 8 19M19.86 6C19.41 4.28 17.86 3 16 3S12.59 4.28 12.14 6H2V8H12.14C12.59 9.72 14.14 11 16 11S19.41 9.72 19.86 8H22V6H19.86M16 9C14.9 9 14 8.1 14 7C14 5.9 14.9 5 16 5S18 5.9 18 7C18 8.1 17.1 9 16 9Z";
var mdiTuneVertical = "M7 3H5V9H7V3M19 3H17V13H19V3M3 13H5V21H7V13H9V11H3V13M15 7H13V3H11V7H9V9H15V7M11 21H13V11H11V21M15 15V17H17V21H19V17H21V15H15Z";
var mdiTuneVerticalVariant = "M8 12.14V2H6V12.14C4.28 12.59 3 14.14 3 16S4.28 19.41 6 19.86V22H8V19.86C9.72 19.41 11 17.86 11 16S9.72 12.59 8 12.14M7 14C8.1 14 9 14.9 9 16S8.1 18 7 18C5.9 18 5 17.1 5 16S5.9 14 7 14M18 2H16V4.14C14.28 4.59 13 6.14 13 8S14.28 11.41 16 11.86V22H18V11.86C19.72 11.41 21 9.86 21 8S19.72 4.59 18 4.14V2M17 6C18.1 6 19 6.9 19 8S18.1 10 17 10C15.9 10 15 9.1 15 8S15.9 6 17 6Z";
var mdiTurkey = "M10.5 19.44C9.75 19.8 8.9 20 8 20C4.69 20 2 17.31 2 14V9C2 5.69 4.69 3 8 3L10.5 7.58C8.1 8.81 6.5 11 6.5 13.5C6.5 16 8.11 18.2 10.5 19.44M16 18.94V20H17C17.55 20 18 20.45 18 21S17.55 22 17 22H14C13.45 22 13 21.55 13 21S13.45 20 14 20V18.94C10.61 18.56 8 16.27 8 13.5C8 10.46 11.13 8 15 8C15.19 8 15.37 8 15.56 8C14.84 6.63 14 5.23 14 4C14 2.9 14.9 2 16 2C18.21 2 20 3.79 20 6H18C18 6 22 9 22 13.5C22 16.27 19.39 18.56 16 18.94M16 4C16 4.55 16.45 5 17 5S18 4.55 18 4 17.55 3 17 3 16 3.45 16 4M17 12C17 10.9 16.11 10 15 10C12.79 10 11 11.79 11 14H15C16.11 14 17 13.11 17 12Z";
var mdiTurnstile = "M22,22H16V11L10,5V2H22V22M9.17,6.17C8.42,6.92 8,7.94 8,9H2V11H8.55C8.9,11.6 9.4,12.1 10,12.45V19H12V13C13.06,13 14.08,12.58 14.83,11.83L9.17,6.17Z";
var mdiTurnstileOutline = "M13.41,10.41C13.04,10.79 12.53,11 12,11A2,2 0 0,1 10,9C10,8.47 10.21,7.96 10.59,7.59L9.17,6.17C8.42,6.92 8,7.94 8,9H2V11H8.55C8.9,11.6 9.4,12.1 10,12.45V19H12V13C13.06,13 14.08,12.58 14.83,11.83L13.41,10.41M10,2V5L16,11V22H22V2H10M20,20H18V10.17L12,4.17V4H20V20Z";
var mdiTurtle = "M8.47,5.95C8.95,5.67 9.47,5.44 10,5.28V4C10,2.9 10.87,2 11.97,1.97C13.13,2 14,2.9 14,4V5.28C14.53,5.45 15.05,5.67 15.53,5.95L13.93,8.07H10.07L8.47,5.95M19,12C19,12.5 18.95,12.95 18.86,13.4L16.33,12.62L15.14,8.96L16.74,6.85C17.17,7.25 17.55,7.7 17.88,8.2C18.67,8.13 19.43,8.25 20.11,8.59C21.14,9.12 21.84,10.13 22,11.28L19,11.64C19,11.76 19,11.88 19,12M5,12C5,11.88 5,11.76 5,11.65L2,11.28C2.16,10.13 2.86,9.12 3.89,8.59C4.57,8.25 5.34,8.13 6.08,8.26C6.41,7.75 6.79,7.28 7.24,6.87L8.86,8.95L7.67,12.62L5.14,13.4C5.05,12.95 5,12.5 5,12M10.24,9.57H13.76L14.85,12.93L12,15L9.15,12.93L10.24,9.57M8.13,14.05L11.25,16.31V18.96C10.68,18.9 10.13,18.77 9.62,18.58L8.39,21.34C7.33,20.87 6.57,19.9 6.37,18.76C6.23,18 6.35,17.24 6.69,16.56C6.24,16.04 5.87,15.46 5.59,14.82L8.13,14.05M15.87,14.05L18.41,14.82C18.13,15.46 17.76,16.04 17.31,16.56C17.65,17.24 17.77,18 17.64,18.76C17.43,19.9 16.67,20.87 15.61,21.34L14.39,18.58C13.86,18.77 13.33,18.94 12.75,19V16.31L15.87,14.05Z";
var mdiTwitch = "M11.64 5.93H13.07V10.21H11.64M15.57 5.93H17V10.21H15.57M7 2L3.43 5.57V18.43H7.71V22L11.29 18.43H14.14L20.57 12V2M19.14 11.29L16.29 14.14H13.43L10.93 16.64V14.14H7.71V3.43H19.14Z";
var mdiTwitter = "M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 3,4.79C2.63,5.42 2.42,6.16 2.42,6.94C2.42,8.43 3.17,9.75 4.33,10.5C3.62,10.5 2.96,10.3 2.38,10C2.38,10 2.38,10 2.38,10.03C2.38,12.11 3.86,13.85 5.82,14.24C5.46,14.34 5.08,14.39 4.69,14.39C4.42,14.39 4.15,14.36 3.89,14.31C4.43,16 6,17.26 7.89,17.29C6.43,18.45 4.58,19.13 2.56,19.13C2.22,19.13 1.88,19.11 1.54,19.07C3.44,20.29 5.7,21 8.12,21C16,21 20.33,14.46 20.33,8.79C20.33,8.6 20.33,8.42 20.32,8.23C21.16,7.63 21.88,6.87 22.46,6Z";
var mdiTwitterRetweet = "M6,5.75L10.25,10H7V16H13.5L15.5,18H7A2,2 0 0,1 5,16V10H1.75L6,5.75M18,18.25L13.75,14H17V8H10.5L8.5,6H17A2,2 0 0,1 19,8V14H22.25L18,18.25Z";
var mdiTwoFactorAuthentication = "M2,7V9H6V11H4A2,2 0 0,0 2,13V17H8V15H4V13H6A2,2 0 0,0 8,11V9C8,7.89 7.1,7 6,7H2M9,7V17H11V13H14V11H11V9H15V7H9M18,7A2,2 0 0,0 16,9V17H18V14H20V17H22V9A2,2 0 0,0 20,7H18M18,9H20V12H18V9Z";
var mdiTypewriter = "M20 13H16C16 14.1 15.1 15 14 15H10C8.9 15 8 14.1 8 13H4L2 18V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V18M6 20C5.11 20 4.66 18.92 5.29 18.29C5.92 17.66 7 18.11 7 19C7 19.55 6.55 20 6 20M10 20C9.11 20 8.66 18.92 9.29 18.29C9.92 17.66 11 18.11 11 19C11 19.55 10.55 20 10 20M14 20C13.11 20 12.66 18.92 13.29 18.29C13.92 17.66 15 18.11 15 19C15 19.55 14.55 20 14 20M18 20C17.11 20 16.66 18.92 17.29 18.29C17.92 17.66 19 18.11 19 19C19 19.55 18.55 20 18 20M18 10V3H6V10H3V12H21V10M8 5H16V6H8M8 7H14V8H8";
var mdiUbisoft = "M11.41,2C5.21,2 2.53,7.53 2.53,7.53L3.32,8.09C3.32,8.09 2.33,10 2.35,12.4C2.35,17.34 6.29,22 12.07,22C17.33,22 21.67,17.71 21.67,12.41C21.67,5.5 16.31,2 11.41,2M11.47,3.69C16.31,3.69 20.07,7.6 20.07,12.14C20.07,16.95 16.45,20.3 12.23,20.3C9.13,20.3 6.33,17.94 6.33,14.7C6.33,12.82 7.32,11.5 8.44,10.82L8.6,11C8.3,11.24 7.43,12.64 7.43,14C7.43,16.56 9.43,18.33 11.95,18.33C15.16,18.33 17.3,15.59 17.3,12.41C17.3,8.71 14.03,5.57 10.1,5.57C7.93,5.57 6.09,6.5 5.03,7.33L4.86,7.18C6.25,5.04 8.65,3.69 11.47,3.69M10,7.23C12.53,7.23 14.97,8.89 15.59,11.25L15.36,11.33C14.27,9.88 12.47,8.68 10.35,8.68C6.44,8.68 4.39,12.23 4.69,15.19L4.46,15.28C4.46,15.28 4.03,14.33 4.03,13.2C4.03,9.93 6.71,7.23 10,7.23M11.68,11.33C12.86,11.33 13.81,12.3 13.81,13.44C13.81,14.38 13.21,14.94 13.21,14.94L13.92,15.45C13.92,15.45 13.21,16.57 11.76,16.57C10.37,16.57 9.13,15.44 9.13,13.93C9.13,12.38 10.47,11.33 11.68,11.33Z";
var mdiUbuntu = "M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14.34,7.74C14.92,8.07 15.65,7.87 16,7.3C16.31,6.73 16.12,6 15.54,5.66C14.97,5.33 14.23,5.5 13.9,6.1C13.57,6.67 13.77,7.41 14.34,7.74M11.88,15.5C11.35,15.5 10.85,15.39 10.41,15.18L9.57,16.68C10.27,17 11.05,17.22 11.88,17.22C12.37,17.22 12.83,17.15 13.28,17.03C13.36,16.54 13.64,16.1 14.1,15.84C14.56,15.57 15.08,15.55 15.54,15.72C16.43,14.85 17,13.66 17.09,12.33L15.38,12.31C15.22,14.1 13.72,15.5 11.88,15.5M11.88,8.5C13.72,8.5 15.22,9.89 15.38,11.69L17.09,11.66C17,10.34 16.43,9.15 15.54,8.28C15.08,8.45 14.55,8.42 14.1,8.16C13.64,7.9 13.36,7.45 13.28,6.97C12.83,6.85 12.37,6.78 11.88,6.78C11.05,6.78 10.27,6.97 9.57,7.32L10.41,8.82C10.85,8.61 11.35,8.5 11.88,8.5M8.37,12C8.37,10.81 8.96,9.76 9.86,9.13L9,7.65C7.94,8.36 7.15,9.43 6.83,10.69C7.21,11 7.45,11.47 7.45,12C7.45,12.53 7.21,13 6.83,13.31C7.15,14.56 7.94,15.64 9,16.34L9.86,14.87C8.96,14.24 8.37,13.19 8.37,12M14.34,16.26C13.77,16.59 13.57,17.32 13.9,17.9C14.23,18.47 14.97,18.67 15.54,18.34C16.12,18 16.31,17.27 16,16.7C15.65,16.12 14.92,15.93 14.34,16.26M5.76,10.8C5.1,10.8 4.56,11.34 4.56,12C4.56,12.66 5.1,13.2 5.76,13.2C6.43,13.2 6.96,12.66 6.96,12C6.96,11.34 6.43,10.8 5.76,10.8Z";
var mdiUfo = "M15.94 10.28C15.66 7.87 14 6 12 6S8.34 7.87 8.06 10.28C4.5 10.82 2 12.06 2 13.5C2 15.43 6.5 17 12 17S22 15.43 22 13.5C22 12.06 19.5 10.82 15.94 10.28Z";
var mdiUfoOutline = "M17 10.54C16.78 7.44 14.63 5 12 5S7.22 7.44 7 10.54C4 11.23 2 12.5 2 14C2 16.21 6.5 18 12 18S22 16.21 22 14C22 12.5 20 11.23 17 10.54M14.93 11.84C13.03 12.05 10.97 12.05 9.07 11.84C9.03 11.56 9 11.28 9 11C9 8.8 10.35 7 12 7S15 8.8 15 11C15 11.28 15 11.56 14.93 11.84Z";
var mdiUltraHighDefinition = "M9,7H11V11H13V7H15V17H13V13H11V17H9V7M17,7H20A3,3 0 0,1 23,10V14A3,3 0 0,1 20,17H17V7M20,15A1,1 0 0,0 21,14V10A1,1 0 0,0 20,9H19V15H20M7,14A3,3 0 0,1 4,17A3,3 0 0,1 1,14V7H3V14A1,1 0 0,0 4,15A1,1 0 0,0 5,14V7H7V14Z";
var mdiUmbraco = "M8.6,8.6L7.17,8.38C6.5,11.67 6.46,14.24 7.61,15.5C8.6,16.61 11.89,16.61 11.89,16.61C11.89,16.61 15.29,16.61 16.28,15.5C17.43,14.24 17.38,11.67 16.72,8.38L15.29,8.6C15.29,8.6 16.54,13.88 14.69,14.69C13.81,15.07 11.89,15.07 11.89,15.07C11.89,15.07 10.08,15.07 9.2,14.69C7.35,13.88 8.6,8.6 8.6,8.6M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3Z";
var mdiUmbrella = "M12,2A9,9 0 0,1 21,11H13V19A3,3 0 0,1 10,22A3,3 0 0,1 7,19V18H9V19A1,1 0 0,0 10,20A1,1 0 0,0 11,19V11H3A9,9 0 0,1 12,2Z";
var mdiUmbrellaClosed = "M12 2C11.6 2 11.3 2.2 11.1 2.6L6.5 15H11V19C11 19.6 10.6 20 10 20C9.4 20 9 19.6 9 19V18H7V19C7 20.7 8.3 22 10 22S13 20.7 13 19V15H17.5L12.9 2.6C12.7 2.2 12.4 2 12 2Z";
var mdiUmbrellaClosedOutline = "M12 2C12.4 2 12.8 2.2 12.9 2.6L17.5 15H13V19C13 20.7 11.7 22 10 22S7 20.7 7 19V18H9V19C9 19.6 9.4 20 10 20C10.6 20 11 19.6 11 19V15H6.5L11.1 2.6C11.2 2.2 11.6 2 12 2M12 5.9L9.4 13H14.7L12 5.9Z";
var mdiUmbrellaClosedVariant = "M15 7L13 6V3.5C13 3.2 13.2 3 13.5 3S14 3.2 14 3.5V4H16V3.5C16 2.1 14.9 1 13.5 1S11 2.1 11 3.5V6L9 7L6 6L11.1 21.3C11.4 22.2 12.7 22.2 13 21.3C14.6 16.2 18 6 18 6L15 7M11 15L9 8.9L9.7 9.1L11 8.1V15M13 8.1L14.3 9.1L15 8.9L13 15V8.1Z";
var mdiUmbrellaOutline = "M12,4C8.9,4 6.18,6.03 5.3,9H18.7C17.82,6.04 15.09,4 12,4M12,2A9,9 0 0,1 21,11H13V19A3,3 0 0,1 10,22A3,3 0 0,1 7,19V18H9V19A1,1 0 0,0 10,20A1,1 0 0,0 11,19V11H3A9,9 0 0,1 12,2Z";
var mdiUndo = "M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z";
var mdiUndoVariant = "M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z";
var mdiUnfoldLessHorizontal = "M16.59,5.41L15.17,4L12,7.17L8.83,4L7.41,5.41L12,10M7.41,18.59L8.83,20L12,16.83L15.17,20L16.58,18.59L12,14L7.41,18.59Z";
var mdiUnfoldLessVertical = "M5.41,7.41L10,12L5.41,16.59L4,15.17L7.17,12L4,8.83L5.41,7.41M18.59,16.59L14,12L18.59,7.42L20,8.83L16.83,12L20,15.17L18.59,16.59Z";
var mdiUnfoldMoreHorizontal = "M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z";
var mdiUnfoldMoreVertical = "M18.17,12L15,8.83L16.41,7.41L21,12L16.41,16.58L15,15.17L18.17,12M5.83,12L9,15.17L7.59,16.59L3,12L7.59,7.42L9,8.83L5.83,12Z";
var mdiUngroup = "M2,2H6V3H13V2H17V6H16V9H18V8H22V12H21V18H22V22H18V21H12V22H8V18H9V16H6V17H2V13H3V6H2V2M18,12V11H16V13H17V17H13V16H11V18H12V19H18V18H19V12H18M13,6V5H6V6H5V13H6V14H9V12H8V8H12V9H14V6H13M12,12H11V14H13V13H14V11H12V12Z";
var mdiUnicode = "M22 6A1.46 1.46 0 0 1 20.54 7.44A1.46 1.46 0 0 1 19.09 6A1.46 1.46 0 0 1 20.54 4.5A1.46 1.46 0 0 1 22 6M21.56 8.86H19.53C19.4 8.85 19.34 8.91 19.34 9V12.59C19.34 13.08 19.34 13.5 19.35 13.86L19.37 14.76C19.38 15 19.39 15.21 19.39 15.39C19.4 15.56 19.4 15.72 19.4 15.86H19.38C19.26 15.6 19.07 15.22 18.82 14.74C18.58 14.27 18.29 13.72 17.97 13.11C17.64 12.5 17.29 11.84 16.92 11.15C16.55 10.47 16.18 9.78 15.81 9.11C15.45 8.43 15.09 7.78 14.75 7.16C14.4 6.54 14.1 6 13.85 5.54C13.82 5.5 13.79 5.44 13.77 5.42C13.74 5.4 13.68 5.39 13.6 5.39H10.62C10.5 5.39 10.47 5.44 10.47 5.54H10.5C10.47 5.56 10.47 5.57 10.47 5.58V13.84C10.47 14.5 10.4 15 10.25 15.45C10.1 15.88 9.9 16.23 9.64 16.5C9.38 16.75 9.07 16.93 8.72 17.05C8.36 17.16 8 17.22 7.56 17.22C6.54 17.22 5.79 16.91 5.3 16.31C4.8 15.7 4.56 14.89 4.56 13.88V5.56C4.56 5.45 4.5 5.39 4.39 5.39H2.17C2.06 5.39 2 5.45 2 5.58V14.07C2 15 2.13 15.78 2.38 16.46C2.63 17.13 3 17.69 3.5 18.14C3.96 18.58 4.53 18.92 5.21 19.14C5.89 19.36 6.64 19.5 7.47 19.5C8.24 19.5 8.97 19.38 9.65 19.17C10.34 18.97 10.93 18.64 11.42 18.2C11.91 17.75 12.3 17.18 12.59 16.5C12.88 15.79 13.03 14.95 13.03 13.96V8.62C13.14 8.86 13.28 9.15 13.44 9.47C13.73 10.05 14.05 10.68 14.42 11.38C14.79 12.08 15.17 12.8 15.58 13.56C16 14.32 16.39 15.06 16.77 15.76C17.16 16.46 17.5 17.11 17.83 17.7C18.15 18.29 18.4 18.76 18.58 19.12C18.63 19.22 18.73 19.27 18.85 19.27H21.54C21.68 19.27 21.75 19.2 21.75 19.08V9.05C21.75 8.92 21.68 8.85 21.56 8.85Z";
var mdiUnicorn = "M22 5L21.11 6.34C21.65 6.7 22 7.31 22 8V11.5L20.5 12L18.96 9.54C18.83 9.33 18.5 9.42 18.5 9.67V13.25C18.5 14.23 18.11 15.11 17.5 15.78V22H15V17C14.92 17 14.84 17 14.75 17C14.54 17 14.33 16.97 14.13 16.94L9.45 16.16L8.57 18.12L9.54 22H6.96L6.04 18.3C5.97 18.03 6 17.74 6.11 17.5L7 15.5C6.12 14.92 5.53 13.94 5.5 12.81C5.46 12.96 5.44 13.18 5.47 13.5C5.5 13.94 5.61 14.59 5.54 15.31C5.5 16.03 5.18 16.77 4.76 17.26C4.32 17.75 3.85 18.09 3.35 18.35L2.65 17.65C2.84 17.18 3.03 16.76 3.07 16.37C3.13 16 3.06 15.7 2.95 15.43L2.42 14.3C2.21 13.79 1.95 13.05 2 12.18C2.03 11.33 2.5 10.22 3.39 9.61C4.29 9 5.26 8.91 6.05 9.08C6.55 9.18 7.06 9.42 7.5 9.76C7.87 9.59 8.3 9.5 8.75 9.5H14.5V9C14.5 6.79 16.29 5 18.5 5L22 2L21 5H22Z";
var mdiUnicornVariant = "M20 12V19L17 20L14 15.33C13.71 14.89 13 15.14 13.08 15.67L14 23L4 18L4.96 12.75C5.56 9.42 8.46 7 11.84 7H13L19 1L17 7H20L18.42 9.37C19.36 9.88 20 10.86 20 12Z";
var mdiUnicycle = "M13 9.09V5H14C14.55 5 15 4.55 15 4S14.55 3 14 3H10C9.45 3 9 3.45 9 4S9.45 5 10 5H11V9.09C8.16 9.57 6 12.03 6 15C6 18.31 8.69 21 12 21S18 18.31 18 15C18 12.03 15.84 9.57 13 9.09M12 19C9.79 19 8 17.21 8 15C8 13.14 9.28 11.59 11 11.14V16H13V11.14C14.72 11.59 16 13.14 16 15C16 17.21 14.21 19 12 19Z";
var mdiUnity = "M10.11,17H7.5L2.59,12L7.5,7H10.11L11.42,4.74L18.21,3L20.08,9.74L18.77,12L20.08,14.26L18.21,21L11.42,19.26L10.11,17M10.25,16.75L15.38,18.13L12.42,13H6.5L10.25,16.75M17.12,17.13L18.5,12L17.12,6.87L14.15,12L17.12,17.13M10.25,7.25L6.5,11H12.42L15.38,5.87L10.25,7.25Z";
var mdiUnreal = "M2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12M5.24,18.76C3.43,16.95 2.44,14.55 2.44,12C2.44,9.45 3.43,7.05 5.24,5.24C7.05,3.43 9.45,2.44 12,2.44C14.55,2.44 16.95,3.43 18.76,5.24C20.57,7.05 21.56,9.45 21.56,12C21.56,14.55 20.57,16.95 18.76,18.76C16.95,20.57 14.55,21.56 12,21.56C9.45,21.56 7.05,20.57 5.24,18.76M6.35,9.5C4.34,11.79 4.73,13.68 4.73,13.68C4.73,13.68 5.28,12.38 6.61,11C7.25,10.37 7.72,10.15 8.04,10.15C8.4,10.15 8.57,10.41 8.57,10.65V15.29C8.57,15.75 8.27,15.85 8,15.84C7.77,15.84 7.55,15.76 7.55,15.76C8.92,17.73 12.19,18 12.19,18L13.63,16.5H13.67L15,17.63C17.39,16.21 18.55,13.58 18.55,13.58C17.5,14.7 16.79,14.97 16.39,14.96C16.03,14.96 15.88,14.75 15.88,14.75C15.87,14.65 15.82,8.9 15.89,8.9C16.31,8.13 17.63,6.56 17.63,6.56C15.16,7.05 13.81,8.66 13.81,8.66C13.41,8.35 12.59,8.4 12.59,8.4C12.97,8.61 13.35,9.21 13.35,9.72V14.65C13.35,14.65 12.5,15.38 11.88,15.38C11.5,15.38 11.27,15.17 11.14,15C11.05,14.88 11,14.79 11,14.79V8.69C10.93,8.75 10.82,8.8 10.71,8.8C10.57,8.79 10.43,8.73 10.34,8.53C10.26,8.38 10.22,8.15 10.22,7.83C10.22,6.7 11.5,5.96 11.5,5.96C9.87,6.39 8.36,7.22 6.35,9.5";
var mdiUntappd = "M14.41,4C14.41,4 14.94,4.39 14.97,4.71C14.97,4.81 14.73,4.85 14.68,4.93C14.62,5 14.7,5.15 14.65,5.21C14.59,5.26 14.5,5.26 14.41,5.41C14.33,5.56 12.07,10.09 11.73,10.63C11.59,11.03 11.47,12.46 11.37,12.66C11.26,12.85 6.34,19.84 6.16,20.05C5.67,20.63 4.31,20.3 3.28,19.56C2.3,18.86 1.74,17.7 2.11,17.16C2.27,16.93 7.15,9.92 7.29,9.75C7.44,9.58 8.75,9 9.07,8.71C9.47,8.22 12.96,4.54 13.07,4.42C13.18,4.3 13.15,4.2 13.18,4.13C13.22,4.06 13.38,4.08 13.43,4C13.5,3.93 13.39,3.71 13.5,3.68C13.59,3.64 13.96,3.67 14.41,4M10.85,4.44L11.74,5.37L10.26,6.94L9.46,5.37C9.38,5.22 9.28,5.22 9.22,5.17C9.17,5.11 9.24,4.97 9.19,4.89C9.13,4.81 8.9,4.83 8.9,4.73C8.9,4.62 9.05,4.28 9.5,3.96C9.5,3.96 10.06,3.6 10.37,3.68C10.47,3.71 10.43,3.95 10.5,4C10.54,4.1 10.7,4.08 10.73,4.15C10.77,4.21 10.73,4.32 10.85,4.44M21.92,17.15C22.29,17.81 21.53,19 20.5,19.7C19.5,20.39 18.21,20.54 17.83,20C17.66,19.78 12.67,12.82 12.56,12.62C12.45,12.43 12.32,11 12.18,10.59L12.15,10.55C12.45,10 13.07,8.77 13.73,7.47C14.3,8.06 14.75,8.56 14.88,8.72C15.21,9 16.53,9.58 16.68,9.75C16.82,9.92 21.78,16.91 21.92,17.15Z";
var mdiUpdate = "M21,10.12H14.22L16.96,7.3C14.23,4.6 9.81,4.5 7.08,7.2C4.35,9.91 4.35,14.28 7.08,17C9.81,19.7 14.23,19.7 16.96,17C18.32,15.65 19,14.08 19,12.1H21C21,14.08 20.12,16.65 18.36,18.39C14.85,21.87 9.15,21.87 5.64,18.39C2.14,14.92 2.11,9.28 5.62,5.81C9.13,2.34 14.76,2.34 18.27,5.81L21,3V10.12M12.5,8V12.25L16,14.33L15.28,15.54L11,13V8H12.5Z";
var mdiUpload = "M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z";
var mdiUploadLock = "M22 22H17C16.5 22 16 21.5 16 21V17C16 16.5 16.5 16 17 16V14.5C17 13.1 18.1 12 19.5 12C20.9 12 22 13.1 22 14.5V16C22.5 16 23 16.5 23 17V21C23 21.5 22.5 22 22 22M14 20H5V18H14V20M21 16V14.5C21 13.7 20.3 13 19.5 13C18.7 13 18 13.7 18 14.5V16H21M15 16H9V10H5L12 3L19 10H15V16Z";
var mdiUploadLockOutline = "M22 22H17C16.5 22 16 21.5 16 21V17C16 16.5 16.5 16 17 16V14.5C17 13.1 18.1 12 19.5 12C20.9 12 22 13.1 22 14.5V16C22.5 16 23 16.5 23 17V21C23 21.5 22.5 22 22 22M5 18H14V20H5V18M21 16V14.5C21 13.7 20.3 13 19.5 13C18.7 13 18 13.7 18 14.5V16H21M9 16V10H5L12 3L19 10H15V16H9M9.83 8H11V14H13V8H14.17L12 5.83L9.83 8Z";
var mdiUploadMultiple = "M9,14V8H5L12,1L19,8H15V14H9M5,18V16H19V18H5M19,20H5V22H19V20Z";
var mdiUploadNetwork = "M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17M12,5.5L7.5,10H11V14H13V10H16.5L12,5.5Z";
var mdiUploadNetworkOutline = "M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7M12,6L8,10H11V14H13V10H16L12,6Z";
var mdiUploadOff = "M22.11 21.46L2.39 1.73L1.11 3L6.56 8.45L5 10H8.11L9 10.89V16H14.11L16.11 18H5V20H18.11L20.84 22.73L22.11 21.46M15 10H19L12 3L9.1 5.9L15 11.8V10Z";
var mdiUploadOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L6.56 8.45L5 10H8.11L9 10.89V16H14.11L16.11 18H5V20H18.11L20.84 22.73L22.11 21.46M11 14V12.89L12.11 14H11M12 5.8L14.2 8H13V9.8L15 11.8V10H19L12 3L9.1 5.9L10.5 7.3L12 5.8Z";
var mdiUploadOutline = "M9,10V16H15V10H19L12,3L5,10H9M12,5.8L14.2,8H13V14H11V8H9.8L12,5.8M19,18H5V20H19V18Z";
var mdiUsb = "M15,7V11H16V13H13V5H15L12,1L9,5H11V13H8V10.93C8.7,10.56 9.2,9.85 9.2,9C9.2,7.78 8.21,6.8 7,6.8C5.78,6.8 4.8,7.78 4.8,9C4.8,9.85 5.3,10.56 6,10.93V13A2,2 0 0,0 8,15H11V18.05C10.29,18.41 9.8,19.15 9.8,20A2.2,2.2 0 0,0 12,22.2A2.2,2.2 0 0,0 14.2,20C14.2,19.15 13.71,18.41 13,18.05V15H16A2,2 0 0,0 18,13V11H19V7H15Z";
var mdiUsbFlashDrive = "M8 15C8.55 15 9 15.45 9 16C9 16.55 8.55 17 8 17C7.45 17 7 16.55 7 16C7 15.45 7.45 15 8 15M15.07 4.69L16.5 6.1L15.07 7.5L13.66 6.1L15.07 4.69M17.9 7.5L19.31 8.93L17.9 10.34L16.5 8.93L17.9 7.5M8 13C6.34 13 5 14.34 5 16C5 17.66 6.34 19 8 19C9.66 19 11 17.66 11 16C11 14.34 9.66 13 8 13M9.77 4.33L10.5 5.08L14.29 1.29C14.47 1.11 14.72 1 15 1C15.28 1 15.53 1.11 15.71 1.29L22.78 8.36L22.78 8.37C22.92 8.54 23 8.76 23 9C23 9.3 22.87 9.57 22.66 9.76L22.66 9.76L18.93 13.5L19.67 14.23L12.95 20.95C11.68 22.22 9.93 23 8 23C4.13 23 1 19.87 1 16C1 14.07 1.78 12.32 3.05 11.05L9.77 4.33M20.59 9L15 3.41L11.93 6.5L17.5 12.08L20.59 9Z";
var mdiUsbFlashDriveOutline = "M8 13C9.66 13 11 14.34 11 16C11 17.66 9.66 19 8 19C6.34 19 5 17.66 5 16C5 14.34 6.34 13 8 13M8 15C7.45 15 7 15.45 7 16C7 16.55 7.45 17 8 17C8.55 17 9 16.55 9 16C9 15.45 8.55 15 8 15M9.77 4.33L10.5 5.08L14.29 1.29C14.47 1.11 14.72 1 15 1C15.28 1 15.53 1.11 15.71 1.29L22.78 8.36L22.78 8.37C22.92 8.54 23 8.76 23 9C23 9.3 22.87 9.57 22.66 9.76L22.66 9.76L18.93 13.5L19.67 14.23L12.95 20.95C11.68 22.22 9.93 23 8 23C4.13 23 1 19.87 1 16C1 14.07 1.78 12.32 3.05 11.05L9.77 4.33M11.54 19.54L16.84 14.23L9.77 7.16L4.46 12.46C3.56 13.37 3 14.62 3 16C3 18.76 5.24 21 8 21C9.38 21 10.63 20.44 11.54 19.54M15.07 4.69L16.5 6.1L15.07 7.5L13.66 6.1L15.07 4.69M17.9 7.5L19.31 8.93L17.9 10.34L16.5 8.93L17.9 7.5M20.59 9L15 3.41L11.93 6.5L17.5 12.08L20.59 9Z";
var mdiUsbPort = "M8 2C6.9 2 6 2.9 6 4V12H5V16L9 20V22H15V20L19 16V12H18V4C18 2.9 17.11 2 16 2M8 4H16V12H8M9 7V9H11V7M13 7V9H15V7Z";
var mdiValve = "M4 22H2V2H4M22 2H20V22H22M17.24 5.34L13.24 9.34A3 3 0 0 0 9.24 13.34L5.24 17.34L6.66 18.76L10.66 14.76A3 3 0 0 0 14.66 10.76L18.66 6.76Z";
var mdiValveClosed = "M22 2V22H20V13H14.82A3 3 0 0 1 9.18 13H4V22H2V2H4V11H9.18A3 3 0 0 1 14.82 11H20V2Z";
var mdiValveOpen = "M4 22H2V2H4M22 2H20V22H22M11 4V9.18A3 3 0 0 0 11 14.82V20H13V14.82A3 3 0 0 0 13 9.18V4Z";
var mdiVanPassenger = "M3,7C1.89,7 1,7.89 1,9V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V13C23,11.89 22.11,11 21,11L18,7H3M3,8.5H7V11H3V8.5M9,8.5H13V11H9V8.5M15,8.5H17.5L19.46,11H15V8.5M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z";
var mdiVanUtility = "M3,7C1.89,7 1,7.89 1,9V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V13C23,11.89 22.11,11 21,11L18,7H3M15,8.5H17.5L19.46,11H15V8.5M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z";
var mdiVanish = "M16,13V11H21V13H16M14.83,7.76L17.66,4.93L19.07,6.34L16.24,9.17L14.83,7.76M11,16H13V21H11V16M11,3H13V8H11V3M4.93,17.66L7.76,14.83L9.17,16.24L6.34,19.07L4.93,17.66M4.93,6.34L6.34,4.93L9.17,7.76L7.76,9.17L4.93,6.34M8,13H3V11H8V13M19.07,17.66L17.66,19.07L14.83,16.24L16.24,14.83L19.07,17.66Z";
var mdiVanishQuarter = "M11 3H13V8H11V3M4.9 6.3L6.3 4.9L9.1 7.7L7.8 9.2L4.9 6.3M8 13H3V11H8V13";
var mdiVanityLight = "M22 20H16C16 18.34 17.34 13 19 13S22 18.34 22 20M12 13C10.34 13 9 18.34 9 20H15C15 18.34 13.66 13 12 13M5 13C3.34 13 2 18.34 2 20H8C8 18.34 6.66 13 5 13M14.82 6C14.26 4.44 12.53 3.64 11 4.2C10.14 4.5 9.5 5.17 9.18 6H2V8H4V12H6V8H9.18C9.5 8.85 10.15 9.5 11 9.82V12H13V9.82C13.85 9.5 14.5 8.85 14.82 8H18V12H20V8H22V6H14.82Z";
var mdiVariable = "M20.41,3C21.8,5.71 22.35,8.84 22,12C21.8,15.16 20.7,18.29 18.83,21L17.3,20C18.91,17.57 19.85,14.8 20,12C20.34,9.2 19.89,6.43 18.7,4L20.41,3M5.17,3L6.7,4C5.09,6.43 4.15,9.2 4,12C3.66,14.8 4.12,17.57 5.3,20L3.61,21C2.21,18.29 1.65,15.17 2,12C2.2,8.84 3.3,5.71 5.17,3M12.08,10.68L14.4,7.45H16.93L13.15,12.45L15.35,17.37H13.09L11.71,14L9.28,17.33H6.76L10.66,12.21L8.53,7.45H10.8L12.08,10.68Z";
var mdiVariableBox = "M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7.4 18C5.9 16.5 5 14.3 5 12S5.9 7.5 7.4 6L9 6.7C7.7 7.9 7 9.9 7 12S7.7 16.1 9 17.3L7.4 18M12.7 15L11.9 13L10.5 15H9L11.3 11.9L10 9H11.3L12.1 11L13.5 9H15L12.8 12L14.1 15H12.7M16.6 18L15 17.3C16.3 16 17 14.1 17 12S16.3 7.9 15 6.7L16.6 6C18.1 7.5 19 9.7 19 12S18.1 16.5 16.6 18Z";
var mdiVectorArrangeAbove = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C6.67,16 10.33,16 14,16C15.11,16 16,15.11 16,14C16,10.33 16,6.67 16,3C16,1.89 15.11,1 14,1H3M3,3H14V14H3V3M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18Z";
var mdiVectorArrangeBelow = "M20,22C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C16.33,7 12.67,7 9,7C7.89,7 7,7.89 7,9C7,12.67 7,16.33 7,20C7,21.11 7.89,22 9,22H20M20,20H9V9H20V20M5,16V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5Z";
var mdiVectorBezier = "M7.5,4A1.5,1.5 0 0,0 6,5.5A1.5,1.5 0 0,0 7.5,7C8.13,7 8.7,6.6 8.91,6H13C13.67,5.33 14.33,5 15,5H8.91C8.7,4.4 8.13,4 7.5,4M19,5C8,5 14,17 5,17V19C16,19 10,7 19,7V5M16.5,17C15.87,17 15.3,17.4 15.09,18H11C10.33,18.67 9.67,19 9,19H15.09C15.3,19.6 15.87,20 16.5,20A1.5,1.5 0 0,0 18,18.5A1.5,1.5 0 0,0 16.5,17Z";
var mdiVectorCircle = "M9,2V4.06C6.72,4.92 4.92,6.72 4.05,9H2V15H4.06C4.92,17.28 6.72,19.09 9,19.95V22H15V19.94C17.28,19.08 19.09,17.28 19.95,15H22V9H19.94C19.08,6.72 17.28,4.92 15,4.05V2M11,4H13V6H11M9,6.25V8H15V6.25C16.18,6.86 17.14,7.82 17.75,9H16V15H17.75C17.14,16.18 16.18,17.14 15,17.75V16H9V17.75C7.82,17.14 6.86,16.18 6.25,15H8V9H6.25C6.86,7.82 7.82,6.86 9,6.25M4,11H6V13H4M18,11H20V13H18M11,18H13V20H11";
var mdiVectorCircleVariant = "M22,9H19.97C18.7,5.41 15.31,3 11.5,3A9,9 0 0,0 2.5,12C2.5,17 6.53,21 11.5,21C15.31,21 18.7,18.6 20,15H22M20,11V13H18V11M17.82,15C16.66,17.44 14.2,19 11.5,19C7.64,19 4.5,15.87 4.5,12C4.5,8.14 7.64,5 11.5,5C14.2,5 16.66,6.57 17.81,9H16V15";
var mdiVectorCombine = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C4.33,16 7,16 7,16C7,16 7,18.67 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18.67,7 16,7 16,7C16,7 16,4.33 16,3C16,1.89 15.11,1 14,1H3M3,3H14C14,4.33 14,7 14,7H9C7.89,7 7,7.89 7,9V14C7,14 4.33,14 3,14V3M9,9H14V14H9V9M16,9C16,9 18.67,9 20,9V20H9C9,18.67 9,16 9,16H14C15.11,16 16,15.11 16,14V9Z";
var mdiVectorCurve = "M18.5,2A1.5,1.5 0 0,1 20,3.5A1.5,1.5 0 0,1 18.5,5C18.27,5 18.05,4.95 17.85,4.85L14.16,8.55L14.5,9C16.69,7.74 19.26,7 22,7L23,7.03V9.04L22,9C19.42,9 17,9.75 15,11.04A3.96,3.96 0 0,1 11.04,15C9.75,17 9,19.42 9,22L9.04,23H7.03L7,22C7,19.26 7.74,16.69 9,14.5L8.55,14.16L4.85,17.85C4.95,18.05 5,18.27 5,18.5A1.5,1.5 0 0,1 3.5,20A1.5,1.5 0 0,1 2,18.5A1.5,1.5 0 0,1 3.5,17C3.73,17 3.95,17.05 4.15,17.15L7.84,13.45C7.31,12.78 7,11.92 7,11A4,4 0 0,1 11,7C11.92,7 12.78,7.31 13.45,7.84L17.15,4.15C17.05,3.95 17,3.73 17,3.5A1.5,1.5 0 0,1 18.5,2M11,9A2,2 0 0,0 9,11A2,2 0 0,0 11,13A2,2 0 0,0 13,11A2,2 0 0,0 11,9Z";
var mdiVectorDifference = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3M9,7C7.89,7 7,7.89 7,9V11H9V9H11V7H9M13,7V9H14V10H16V7H13M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18M14,12V14H12V16H14C15.11,16 16,15.11 16,14V12H14M7,13V16H10V14H9V13H7Z";
var mdiVectorDifferenceAb = "M3,1C1.89,1 1,1.89 1,3V5H3V3H5V1H3M7,1V3H10V1H7M12,1V3H14V5H16V3C16,1.89 15.11,1 14,1H12M1,7V10H3V7H1M14,7C14,7 14,11.67 14,14C11.67,14 7,14 7,14C7,14 7,18 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18,7 14,7 14,7M16,9H20V20H9V16H14C15.11,16 16,15.11 16,14V9M1,12V14C1,15.11 1.89,16 3,16H5V14H3V12H1Z";
var mdiVectorDifferenceBa = "M20,22C21.11,22 22,21.11 22,20V18H20V20H18V22H20M16,22V20H13V22H16M11,22V20H9V18H7V20C7,21.11 7.89,22 9,22H11M22,16V13H20V16H22M9,16C9,16 9,11.33 9,9C11.33,9 16,9 16,9C16,9 16,5 16,3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C5,16 9,16 9,16M7,14H3V3H14V7H9C7.89,7 7,7.89 7,9V14M22,11V9C22,7.89 21.11,7 20,7H18V9H20V11H22Z";
var mdiVectorEllipse = "M23,9V15H20.35C19.38,17.12 17.43,18.78 15,19.54V22H9V19.54C5.5,18.45 3,15.5 3,12C3,7.58 7.03,4 12,4C15.78,4 19,6.07 20.35,9H23M17,15V9H18.06C16.85,7.21 14.59,6 12,6C8.13,6 5,8.69 5,12C5,14.39 6.64,16.46 9,17.42V16H15V17.42C16.29,16.9 17.35,16.05 18.06,15H17M19,13H21V11H19V13M11,20H13V18H11V20Z";
var mdiVectorIntersection = "M3.14,1A2.14,2.14 0 0,0 1,3.14V5H3V3H5V1H3.14M7,1V3H10V1H7M12,1V3H14V5H16V3.14C16,1.96 15.04,1 13.86,1H12M1,7V10H3V7H1M9,7C7.89,7 7,7.89 7,9C7,11.33 7,16 7,16C7,16 11.57,16 13.86,16A2.14,2.14 0 0,0 16,13.86C16,11.57 16,7 16,7C16,7 11.33,7 9,7M18,7V9H20V11H22V9C22,7.89 21.11,7 20,7H18M9,9H14V14H9V9M1,12V13.86C1,15.04 1.96,16 3.14,16H5V14H3V12H1M20,13V16H22V13H20M7,18V20C7,21.11 7.89,22 9,22H11V20H9V18H7M20,18V20H18V22H20C21.11,22 22,21.11 22,20V18H20M13,20V22H16V20H13Z";
var mdiVectorLine = "M15,3V7.59L7.59,15H3V21H9V16.42L16.42,9H21V3M17,5H19V7H17M5,17H7V19H5";
var mdiVectorLink = "M3 1C1.89 1 1 1.89 1 3V14C1 15.11 1.89 16 3 16H14C15.11 16 16 15.11 16 14V11H14V14H3V3H14V5H16V3C16 1.89 15.11 1 14 1M9 7C7.89 7 7 7.89 7 9V12H9V9H20V20H9V18H7V20C7 21.11 7.89 22 9 22H20C21.11 22 22 21.11 22 20V9C22 7.89 21.11 7 20 7H9";
var mdiVectorPoint = "M12,20L7,22L12,11L17,22L12,20M8,2H16V5H22V7H16V10H8V7H2V5H8V2M10,4V8H14V4H10Z";
var mdiVectorPolygon = "M2,2V8H4.28L5.57,16H4V22H10V20.06L15,20.05V22H21V16H19.17L20,9H22V3H16V6.53L14.8,8H9.59L8,5.82V2M4,4H6V6H4M18,5H20V7H18M6.31,8H7.11L9,10.59V14H15V10.91L16.57,9H18L17.16,16H15V18.06H10V16H7.6M11,10H13V12H11M6,18H8V20H6M17,18H19V20H17";
var mdiVectorPolyline = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3M4 5H6V7H4M18 7H20V9H18M8 17H10V19H8Z";
var mdiVectorPolylineEdit = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3H2M4 5H6V7H4V5M18 7H20V9H18V7M21.15 13C21 13 20.87 13.05 20.76 13.16L19.75 14.18L21.82 16.25L22.84 15.24C23.05 15.03 23.05 14.67 22.84 14.46L21.54 13.16C21.43 13.05 21.29 13 21.15 13M19.15 14.76L13 20.91V23H15.09L21.23 16.84L19.15 14.76M8 17H10V19H8V17Z";
var mdiVectorPolylineMinus = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3H2M4 5H6V7H4V5M18 7H20V9H18V7M8 17H10V19H8V17M15 18V20H23V18H15Z";
var mdiVectorPolylinePlus = "M2 3V9H4.95L6.95 15H6V21H12V16.41L17.41 11H22V5H16V9.57L10.59 15H9.06L7.06 9H8V3H2M4 5H6V7H4V5M18 7H20V9H18V7M18 15V18H15V20H18V23H20V20H23V18H20V15H18M8 17H10V19H8V17Z";
var mdiVectorPolylineRemove = "M21.1 15.5L19 17.6L16.9 15.5L15.5 16.9L17.6 19L15.5 21.1L16.9 22.5L19 20.4L21.1 22.5L22.5 21.1L20.4 19L22.5 16.9L21.1 15.5M16 5V9.6L10.6 15H9.1L7.1 9H8V3H2V9H5L7 15H6V21H12V16.4L17.4 11H22V5H16M6 7H4V5H6V7M10 19H8V17H10V19M20 9H18V7H20V9";
var mdiVectorRadius = "M2,4H4V2H10V4A10,10 0 0,1 20,14H22V20H20V22H18V20H16V14H18A8,8 0 0,0 10,6V8H4V6H2V4M18,16V18H20V16H18M6,4V6H8V4H6Z";
var mdiVectorRectangle = "M2,4H8V6H16V4H22V10H20V14H22V20H16V18H8V20H2V14H4V10H2V4M16,10V8H8V10H6V14H8V16H16V14H18V10H16M4,6V8H6V6H4M18,6V8H20V6H18M4,16V18H6V16H4M18,16V18H20V16H18Z";
var mdiVectorSelection = "M3,1H5V3H3V5H1V3A2,2 0 0,1 3,1M14,1A2,2 0 0,1 16,3V5H14V3H12V1H14M20,7A2,2 0 0,1 22,9V11H20V9H18V7H20M22,20A2,2 0 0,1 20,22H18V20H20V18H22V20M20,13H22V16H20V13M13,9V7H16V10H14V9H13M13,22V20H16V22H13M9,22A2,2 0 0,1 7,20V18H9V20H11V22H9M7,16V13H9V14H10V16H7M7,3V1H10V3H7M3,16A2,2 0 0,1 1,14V12H3V14H5V16H3M1,7H3V10H1V7M9,7H11V9H9V11H7V9A2,2 0 0,1 9,7M16,14A2,2 0 0,1 14,16H12V14H14V12H16V14Z";
var mdiVectorSquare = "M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z";
var mdiVectorTriangle = "M9,3V9H9.73L5.79,16H2V22H8V20H16V22H22V16H18.21L14.27,9H15V3M11,5H13V7H11M12,9.04L16,16.15V18H8V16.15M4,18H6V20H4M18,18H20V20H18";
var mdiVectorUnion = "M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H16V3C16,1.89 15.11,1 14,1H3M3,3H14V9H20V20H9V14H3V3Z";
var mdiVhs = "M4,6A2,2 0 0,0 2,8V16A2,2 0 0,0 4,18H20A2,2 0 0,0 22,16V8A2,2 0 0,0 20,6H4M4.54,10H7V14H4.54C4.19,13.39 4,12.7 4,12C4,11.3 4.19,10.61 4.54,10M9,10H15V14H9V10M17,10H19.46C19.81,10.61 20,11.3 20,12C20,12.7 19.81,13.39 19.46,14H17V10Z";
var mdiVibrate = "M16,19H8V5H16M16.5,3H7.5A1.5,1.5 0 0,0 6,4.5V19.5A1.5,1.5 0 0,0 7.5,21H16.5A1.5,1.5 0 0,0 18,19.5V4.5A1.5,1.5 0 0,0 16.5,3M19,17H21V7H19M22,9V15H24V9M3,17H5V7H3M0,15H2V9H0V15Z";
var mdiVibrateOff = "M8.2,5L6.55,3.35C6.81,3.12 7.15,3 7.5,3H16.5A1.5,1.5 0 0,1 18,4.5V14.8L16,12.8V5H8.2M0,15H2V9H0V15M21,17V7H19V15.8L20.2,17H21M3,17H5V7H3V17M18,17.35L22.11,21.46L20.84,22.73L18,19.85C17.83,20.54 17.21,21 16.5,21H7.5A1.5,1.5 0 0,1 6,19.5V7.89L1.11,3L2.39,1.73L6.09,5.44L8,7.34L16,15.34L18,17.34V17.35M16,17.89L8,9.89V19H16V17.89M22,9V15H24V9H22Z";
var mdiVideo = "M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z";
var mdiVideo3d = "M5,7H9A2,2 0 0,1 11,9V15A2,2 0 0,1 9,17H5V15H9V13H6V11H9V9H5V7M13,7H16A3,3 0 0,1 19,10V14A3,3 0 0,1 16,17H13V7M16,15A1,1 0 0,0 17,14V10A1,1 0 0,0 16,9H15V15H16Z";
var mdiVideo3dOff = "M2.61 2L21.35 20.74L19.94 22.15L14.8 17H13V15.2L11 13.23V15.21C10.93 15.68 10.74 16.08 10.41 16.41C10.08 16.73 9.68 16.93 9.21 17H5V15H9V13H6V11H8.8L6.79 9H5V7.23L1.2 3.41L2.61 2M16 7H16.22C17 7.07 17.63 7.36 18.14 7.88C18.65 8.39 18.93 9 19 9.76V14.24C18.95 14.63 18.87 15 18.72 15.3L17 13.6V9.85C16.95 9.63 16.84 9.44 16.69 9.28C16.53 9.13 16.34 9.03 16.12 9H15V11.59L13 9.57V7H16Z";
var mdiVideo3dVariant = "M14,10V14A0.5,0.5 0 0,1 13.5,14.5H12.5V9.5H13.5A0.5,0.5 0 0,1 14,10M21,6.5V17.5L17,13.5V17A1,1 0 0,1 16,18H4A1,1 0 0,1 3,17V7A1,1 0 0,1 4,6H16A1,1 0 0,1 17,7V10.5M9.5,9.5A1.5,1.5 0 0,0 8,8H4.5V9.5H8V11.25H5.5V12.75H8V14.5H4.5V16H8A1.5,1.5 0 0,0 9.5,14.5M15.5,9.5A1.5,1.5 0 0,0 14,8H11V16H14A1.5,1.5 0 0,0 15.5,14.5";
var mdiVideo4kBox = "M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,13.5H11V15H9.5V13.5H6.5V9H8V12H9.5V9H11V12H12V13.5M18,15H16.2L14.4,12.8V15H13V9H14.5V11.2L16.2,9H18L15.8,12L18,15Z";
var mdiVideoAccount = "M17,10.5L21,6.5V17.5L17,13.5V17A1,1 0 0,1 16,18H4A1,1 0 0,1 3,17V7A1,1 0 0,1 4,6H16A1,1 0 0,1 17,7V10.5M14,16V15C14,13.67 11.33,13 10,13C8.67,13 6,13.67 6,15V16H14M10,8A2,2 0 0,0 8,10A2,2 0 0,0 10,12A2,2 0 0,0 12,10A2,2 0 0,0 10,8Z";
var mdiVideoBox = "M18,16L14,12.8V16H6V8H14V11.2L18,8M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z";
var mdiVideoBoxOff = "M6,8H6.73L14,15.27V16H6M2.27,1L1,2.27L3,4.28C2.41,4.62 2,5.26 2,6V18A2,2 0 0,0 4,20H18.73L20.73,22L22,20.73M20,4H7.82L11.82,8H14V10.18L14.57,10.75L18,8V14.18L22,18.17C22,18.11 22,18.06 22,18V6A2,2 0 0,0 20,4Z";
var mdiVideoCheck = "M17 10.5V7C17 6.45 16.55 6 16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5M8.93 15L6 11.8L7.24 10.56L8.93 12.26L12.76 8.43L14 9.93L8.93 15Z";
var mdiVideoCheckOutline = "M15 8V16H5V8H15M16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5V7C17 6.45 16.55 6 16 6M6.35 12.08L7.5 10.95L9 12.5L12.5 9L13.65 10.37L9 15L6.35 12.08Z";
var mdiVideoHighDefinition = "M14 10V14C14 14.3 13.8 14.5 13.5 14.5H12.5V9.5H13.5C13.8 9.5 14 9.7 14 10M17 10.5V7C17 6.4 16.6 6 16 6H4C3.4 6 3 6.4 3 7V17C3 17.6 3.4 18 4 18H16C16.6 18 17 17.6 17 17V13.5L21 17.5V6.5L17 10.5M9.5 16H8V12.8H6V16H4.5V8H6V11.2H8V8H9.5V16M15.5 14.5C15.5 15.3 14.8 16 14 16H11V8H14C14.8 8 15.5 8.7 15.5 9.5V14.5Z";
var mdiVideoImage = "M17,10.5L21,6.5V17.5L17,13.5V17A1,1 0 0,1 16,18H4A1,1 0 0,1 3,17V7A1,1 0 0,1 4,6H16A1,1 0 0,1 17,7V10.5M10.91,9.55L9.2,11.82L10.5,13.55L9.77,14.09L7.73,11.36L5,15H15L10.91,9.55Z";
var mdiVideoInputAntenna = "M12,5A7,7 0 0,0 5,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H19A7,7 0 0,0 12,5M13,14.29C13.88,13.9 14.5,13.03 14.5,12A2.5,2.5 0 0,0 12,9.5A2.5,2.5 0 0,0 9.5,12C9.5,13 10.12,13.9 11,14.29V17.59L7.59,21L9,22.41L12,19.41L15,22.41L16.41,21L13,17.59V14.29M12,1A11,11 0 0,0 1,12H3A9,9 0 0,1 12,3A9,9 0 0,1 21,12H23A11,11 0 0,0 12,1Z";
var mdiVideoInputComponent = "M5,2A1,1 0 0,0 4,1A1,1 0 0,0 3,2V6H1V12H7V6H5V2M9,16C9,17.3 9.84,18.4 11,18.82V23H13V18.82C14.16,18.41 15,17.31 15,16V14H9V16M1,16C1,17.3 1.84,18.4 3,18.82V23H5V18.82C6.16,18.4 7,17.3 7,16V14H1V16M21,6V2A1,1 0 0,0 20,1A1,1 0 0,0 19,2V6H17V12H23V6H21M13,2A1,1 0 0,0 12,1A1,1 0 0,0 11,2V6H9V12H15V6H13V2M17,16C17,17.3 17.84,18.4 19,18.82V23H21V18.82C22.16,18.41 23,17.31 23,16V14H17V16Z";
var mdiVideoInputHdmi = "M18,7V4A2,2 0 0,0 16,2H8A2,2 0 0,0 6,4V7H5V13L8,19V22H16V19L19,13V7H18M8,4H16V7H14V5H13V7H11V5H10V7H8V4Z";
var mdiVideoInputScart = "M20.6 2.2L17.3 2.4L13.8 4.4L13.3 3.5L2 10V17H3V19C3 20.1 3.9 21 5 21H15C16.1 21 17 20.1 17 19V17H18V10H17L16.8 9.6L20.3 7.6L22.1 4.8L20.6 2.2M15 17V19H5V17H15Z";
var mdiVideoInputSvideo = "M8,11.5A1.5,1.5 0 0,0 6.5,10A1.5,1.5 0 0,0 5,11.5A1.5,1.5 0 0,0 6.5,13A1.5,1.5 0 0,0 8,11.5M15,6.5A1.5,1.5 0 0,0 13.5,5H10.5A1.5,1.5 0 0,0 9,6.5A1.5,1.5 0 0,0 10.5,8H13.5A1.5,1.5 0 0,0 15,6.5M8.5,15A1.5,1.5 0 0,0 7,16.5A1.5,1.5 0 0,0 8.5,18A1.5,1.5 0 0,0 10,16.5A1.5,1.5 0 0,0 8.5,15M12,1A11,11 0 0,0 1,12A11,11 0 0,0 12,23A11,11 0 0,0 23,12A11,11 0 0,0 12,1M12,21C7.04,21 3,16.96 3,12C3,7.04 7.04,3 12,3C16.96,3 21,7.04 21,12C21,16.96 16.96,21 12,21M17.5,10A1.5,1.5 0 0,0 16,11.5A1.5,1.5 0 0,0 17.5,13A1.5,1.5 0 0,0 19,11.5A1.5,1.5 0 0,0 17.5,10M15.5,15A1.5,1.5 0 0,0 14,16.5A1.5,1.5 0 0,0 15.5,18A1.5,1.5 0 0,0 17,16.5A1.5,1.5 0 0,0 15.5,15Z";
var mdiVideoMinus = "M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5M14,13H6V11H14V13Z";
var mdiVideoMinusOutline = "M15 8V16H5V8H15M16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5V7C17 6.45 16.55 6 16 6M13 13H7V11H13V13Z";
var mdiVideoOff = "M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z";
var mdiVideoOffOutline = "M3.41,1.86L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.21,18 16.39,17.92 16.55,17.82L19.73,21L21.14,19.59L12.28,10.73L3.41,1.86M5,16V8H6.73L14.73,16H5M15,8V10.61L21,16.61V6.5L17,10.5V7A1,1 0 0,0 16,6H10.39L12.39,8H15Z";
var mdiVideoOutline = "M15,8V16H5V8H15M16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5V7A1,1 0 0,0 16,6Z";
var mdiVideoPlus = "M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5M14,13H11V16H9V13H6V11H9V8H11V11H14V13Z";
var mdiVideoPlusOutline = "M15 8V16H5V8H15M16 6H4C3.45 6 3 6.45 3 7V17C3 17.55 3.45 18 4 18H16C16.55 18 17 17.55 17 17V13.5L21 17.5V6.5L17 10.5V7C17 6.45 16.55 6 16 6M13 13H11V15H9V13H7V11H9V9H11V11H13V13Z";
var mdiVideoStabilization = "M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H20V6H4M7.24,6.58L18.83,9.69L16.76,17.42L5.17,14.31L7.24,6.58Z";
var mdiVideoSwitch = "M13,15.5V13H7V15.5L3.5,12L7,8.5V11H13V8.5L16.5,12M18,9.5V6A1,1 0 0,0 17,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H17A1,1 0 0,0 18,18V14.5L22,18.5V5.5L18,9.5Z";
var mdiVideoSwitchOutline = "M8 13H12V15L15 12L12 9V11H8V9L5 12L8 15V13M18 9.5V6C18 5.4 17.5 5 17 5H3C2.5 5 2 5.4 2 6V18C2 18.5 2.5 19 3 19H17C17.5 19 18 18.5 18 18V14.5L22 18.5V5.5L18 9.5M16 17H4V7H16V17Z";
var mdiVideoVintage = "M18,14.5V11A1,1 0 0,0 17,10H16C18.24,8.39 18.76,5.27 17.15,3C15.54,0.78 12.42,0.26 10.17,1.87C9.5,2.35 8.96,3 8.6,3.73C6.25,2.28 3.17,3 1.72,5.37C0.28,7.72 1,10.8 3.36,12.25C3.57,12.37 3.78,12.5 4,12.58V21A1,1 0 0,0 5,22H17A1,1 0 0,0 18,21V17.5L22,21.5V10.5L18,14.5M13,4A2,2 0 0,1 15,6A2,2 0 0,1 13,8A2,2 0 0,1 11,6A2,2 0 0,1 13,4M6,6A2,2 0 0,1 8,8A2,2 0 0,1 6,10A2,2 0 0,1 4,8A2,2 0 0,1 6,6Z";
var mdiVideoWireless = "M17,14.5V11A1,1 0 0,0 16,10H4A1,1 0 0,0 3,11V21A1,1 0 0,0 4,22H16A1,1 0 0,0 17,21V17.5L21,21.5V10.5M3,3.86L4.4,5.24C7.5,2.19 12.5,2.19 15.6,5.24L17,3.86C13.14,0.05 6.87,0.05 3,3.86M5.8,6.62L7.2,8C8.75,6.5 11.25,6.5 12.8,8L14.2,6.62C11.88,4.34 8.12,4.34 5.8,6.62Z";
var mdiVideoWirelessOutline = "M15,12V20H5V12H15M16,10H4A1,1 0 0,0 3,11V21A1,1 0 0,0 4,22H16A1,1 0 0,0 17,21V17.5L21,21.5V10.5L17,14.5V11A1,1 0 0,0 16,10M3,3.86L4.4,5.24C7.5,2.19 12.5,2.19 15.6,5.24L17,3.86C13.14,0.05 6.87,0.05 3,3.86M5.8,6.63L7.2,8C8.75,6.5 11.25,6.5 12.8,8L14.2,6.63C11.88,4.34 8.12,4.34 5.8,6.63Z";
var mdiViewAgenda = "M21 3H3C2.4 3 2 3.4 2 4V10C2 10.6 2.4 11 3 11H21C21.6 11 22 10.6 22 10V4C22 3.4 21.6 3 21 3M21 13H3C2.4 13 2 13.4 2 14V20C2 20.6 2.4 21 3 21H21C21.6 21 22 20.6 22 20V14C22 13.4 21.6 13 21 13Z";
var mdiViewAgendaOutline = "M21 13H3A1 1 0 0 0 2 14V20A1 1 0 0 0 3 21H21A1 1 0 0 0 22 20V14A1 1 0 0 0 21 13M20 19H4V15H20M21 3H3A1 1 0 0 0 2 4V10A1 1 0 0 0 3 11H21A1 1 0 0 0 22 10V4A1 1 0 0 0 21 3M20 9H4V5H20Z";
var mdiViewArray = "M8,18H17V5H8M18,5V18H21V5M4,18H7V5H4V18Z";
var mdiViewArrayOutline = "M15 7V16H10V7H15M21 5H18V18H21V5M17 5H8V18H17V5M7 5H4V18H7V5Z";
var mdiViewCarousel = "M18,6V17H22V6M2,17H6V6H2M7,19H17V4H7V19Z";
var mdiViewCarouselOutline = "M2 6H6V17H2V6M7 19H17V4H7V19M9 6H15V17H9V6M18 6H22V17H18V6Z";
var mdiViewColumn = "M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z";
var mdiViewColumnOutline = "M4 5V18H21V5H4M14 7V16H11V7H14M6 7H9V16H6V7M19 16H16V7H19V16Z";
var mdiViewComfy = "M3,9H7V5H3V9M3,14H7V10H3V14M8,14H12V10H8V14M13,14H17V10H13V14M8,9H12V5H8V9M13,5V9H17V5H13M18,14H22V10H18V14M3,19H7V15H3V19M8,19H12V15H8V19M13,19H17V15H13V19M18,19H22V15H18V19M18,5V9H22V5H18Z";
var mdiViewComfyOutline = "M3 5V19H22V5H3M20 9H17.75V7H20V9M9.25 11H11.5V13H9.25V11M7.25 13H5V11H7.25V13M11.5 9H9.25V7H11.5V9M13.5 7H15.75V9H13.5V7M11.5 15V17H9.25V15H11.5M13.5 15H15.75V17H13.5V15M13.5 13V11H15.75V13H13.5M17.75 11H20V13H17.75V11M7.25 7V9H5V7H7.25M5 15H7.25V17H5V15M17.75 17V15H20V17H17.75Z";
var mdiViewCompact = "M3,19H9V12H3V19M10,19H22V12H10V19M3,5V11H22V5H3Z";
var mdiViewCompactOutline = "M3,5V19H22V5H3M5,7H20V11H5V7M5,17V13H9V17H5M11,17V13H20V17H11Z";
var mdiViewDashboard = "M13,3V9H21V3M13,21H21V11H13M3,21H11V15H3M3,13H11V3H3V13Z";
var mdiViewDashboardOutline = "M19,5V7H15V5H19M9,5V11H5V5H9M19,13V19H15V13H19M9,17V19H5V17H9M21,3H13V9H21V3M11,3H3V13H11V3M21,11H13V21H21V11M11,15H3V21H11V15Z";
var mdiViewDashboardVariant = "M2,5V19H8V5H2M9,5V10H15V5H9M16,5V14H22V5H16M9,11V19H15V11H9M16,15V19H22V15H16Z";
var mdiViewDashboardVariantOutline = "M2 5V19H22V5H2M20 12H16V7H20V12M14 10H10V7H14V10M10 12H14V17H10V12M4 7H8V17H4V7M16 17V14H20V17H16Z";
var mdiViewDay = "M2,3V6H21V3M20,8H3A1,1 0 0,0 2,9V15A1,1 0 0,0 3,16H20A1,1 0 0,0 21,15V9A1,1 0 0,0 20,8M2,21H21V18H2V21Z";
var mdiViewDayOutline = "M21 18H2V20H21V18M19 10V14H4V10H19M20 8H3C2.45 8 2 8.45 2 9V15C2 15.55 2.45 16 3 16H20C20.55 16 21 15.55 21 15V9C21 8.45 20.55 8 20 8M21 4H2V6H21V4Z";
var mdiViewGrid = "M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3";
var mdiViewGridOutline = "M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z";
var mdiViewGridPlus = "M13 3V11H21V3H13M3 21H11V13H3V21M3 3V11H11V3H3M13 16H16V13H18V16H21V18H18V21H16V18H13V16Z";
var mdiViewGridPlusOutline = "M3 21H11V13H3M5 15H9V19H5M3 11H11V3H3M5 5H9V9H5M13 3V11H21V3M19 9H15V5H19M18 16H21V18H18V21H16V18H13V16H16V13H18Z";
var mdiViewHeadline = "M4,5V7H21V5M4,11H21V9H4M4,19H21V17H4M4,15H21V13H4V15Z";
var mdiViewList = "M9,5V9H21V5M9,19H21V15H9M9,14H21V10H9M4,9H8V5H4M4,19H8V15H4M4,14H8V10H4V14Z";
var mdiViewListOutline = "M3 5V19H20V5H3M7 7V9H5V7H7M5 13V11H7V13H5M5 15H7V17H5V15M18 17H9V15H18V17M18 13H9V11H18V13M18 9H9V7H18V9Z";
var mdiViewModule = "M16,5V11H21V5M10,11H15V5H10M16,18H21V12H16M10,18H15V12H10M4,18H9V12H4M4,11H9V5H4V11Z";
var mdiViewModuleOutline = "M4 5V18H21V5H4M14 7V10.5H11V7H14M6 7H9V10.5H6V7M6 16V12.5H9V16H6M11 16V12.5H14V16H11M19 16H16V12.5H19V16M16 10.5V7H19V10.5H16Z";
var mdiViewParallel = "M19 3V21H15V3H19M14 3V21H10V3H14M9 3V21H5V3H9Z";
var mdiViewParallelOutline = "M19 3H5V21H19V3M17 19H15V5H17V19M13 19H11V5H13V19M7 5H9V19H7V5Z";
var mdiViewQuilt = "M10,5V11H21V5M16,18H21V12H16M4,18H9V5H4M10,18H15V12H10V18Z";
var mdiViewQuiltOutline = "M4 5V18H21V5H4M6 16V7H9V16H6M11 16V12.5H14V16H11M19 16H16V12.5H19V16M11 10.5V7H19V10.5H11Z";
var mdiViewSequential = "M3 5H21V9H3V5M3 10H21V14H3V10M3 15H21V19H3V15Z";
var mdiViewSequentialOutline = "M3 5V19H21V5H3M19 7V9H5V7H19M19 11V13H5V11H19M5 17V15H19V17H5Z";
var mdiViewSplitHorizontal = "M3,5H21V7H3V5M3,11V9H21V11H3M3,19V13H21V19H3Z";
var mdiViewSplitVertical = "M13,5H21V19H13V5M3,5H11V7H3V5M3,11V9H11V11H3M3,19V17H11V19H3M3,15V13H11V15H3Z";
var mdiViewStream = "M4,5V11H21V5M4,18H21V12H4V18Z";
var mdiViewStreamOutline = "M4 6V18H21V6H4M19 16H6V13H19V16M6 11V8H19V11H6Z";
var mdiViewWeek = "M13,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H13A1,1 0 0,0 14,18V6A1,1 0 0,0 13,5M20,5H17A1,1 0 0,0 16,6V18A1,1 0 0,0 17,19H20A1,1 0 0,0 21,18V6A1,1 0 0,0 20,5M6,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H6A1,1 0 0,0 7,18V6A1,1 0 0,0 6,5Z";
var mdiViewWeekOutline = "M21 4H3C2.45 4 2 4.45 2 5V19C2 19.55 2.45 20 3 20H21C21.55 20 22 19.55 22 19V5C22 4.45 21.55 4 21 4M8 18H4V6H8V18M14 18H10V6H14V18M20 18H16V6H20V18Z";
var mdiVimeo = "M22,7.42C21.91,9.37 20.55,12.04 17.92,15.44C15.2,19 12.9,20.75 11,20.75C9.85,20.75 8.86,19.67 8.05,17.5C7.5,15.54 7,13.56 6.44,11.58C5.84,9.42 5.2,8.34 4.5,8.34C4.36,8.34 3.84,8.66 2.94,9.29L2,8.07C3,7.2 3.96,6.33 4.92,5.46C6.24,4.32 7.23,3.72 7.88,3.66C9.44,3.5 10.4,4.58 10.76,6.86C11.15,9.33 11.42,10.86 11.57,11.46C12,13.5 12.5,14.5 13.05,14.5C13.47,14.5 14.1,13.86 14.94,12.53C15.78,11.21 16.23,10.2 16.29,9.5C16.41,8.36 15.96,7.79 14.94,7.79C14.46,7.79 13.97,7.9 13.46,8.12C14.44,4.89 16.32,3.32 19.09,3.41C21.15,3.47 22.12,4.81 22,7.42Z";
var mdiViolin = "M11,2A1,1 0 0,0 10,3V5L10,9A0.5,0.5 0 0,0 10.5,9.5H12A0.5,0.5 0 0,1 12.5,10A0.5,0.5 0 0,1 12,10.5H10.5C9.73,10.5 9,9.77 9,9V5.16C7.27,5.6 6,7.13 6,9V10.5A2.5,2.5 0 0,1 8.5,13A2.5,2.5 0 0,1 6,15.5V17C6,19.77 8.23,22 11,22H13C15.77,22 18,19.77 18,17V15.5A2.5,2.5 0 0,1 15.5,13A2.5,2.5 0 0,1 18,10.5V9C18,6.78 16.22,5 14,5V3A1,1 0 0,0 13,2H11M10.75,16.5H13.25L12.75,20H11.25L10.75,16.5Z";
var mdiVirtualReality = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M6,9H7.5L8.5,12.43L9.5,9H11L9.25,15H7.75L6,9M13,9H16.5C17.35,9 18,9.65 18,10.5V11.5C18,12.1 17.6,12.65 17.1,12.9L18,15H16.5L15.65,13H14.5V15H13V9M14.5,10.5V11.5H16.5V10.5H14.5Z";
var mdiVirus = "M19.82 14C20.13 14.45 20.66 14.75 21.25 14.75C22.22 14.75 23 13.97 23 13S22.22 11.25 21.25 11.25C20.66 11.25 20.13 11.55 19.82 12H19C19 10.43 18.5 9 17.6 7.81L18.94 6.47C19.5 6.57 20.07 6.41 20.5 6C21.17 5.31 21.17 4.2 20.5 3.5C19.81 2.83 18.7 2.83 18 3.5C17.59 3.93 17.43 4.5 17.53 5.06L16.19 6.4C15.27 5.71 14.19 5.25 13 5.08V3.68C13.45 3.37 13.75 2.84 13.75 2.25C13.75 1.28 12.97 .5 12 .5S10.25 1.28 10.25 2.25C10.25 2.84 10.55 3.37 11 3.68V5.08C10.1 5.21 9.26 5.5 8.5 5.94L7.39 4.35C7.58 3.83 7.53 3.23 7.19 2.75C6.63 1.96 5.54 1.76 4.75 2.32C3.96 2.87 3.76 3.96 4.32 4.75C4.66 5.24 5.2 5.5 5.75 5.5L6.93 7.18C6.5 7.61 6.16 8.09 5.87 8.62C5.25 8.38 4.5 8.5 4 9C3.33 9.7 3.33 10.8 4 11.5C4.29 11.77 4.64 11.93 5 12L5 12C5 12.54 5.07 13.06 5.18 13.56L3.87 13.91C3.45 13.56 2.87 13.41 2.29 13.56C1.36 13.81 .808 14.77 1.06 15.71C1.31 16.64 2.28 17.19 3.21 16.94C3.78 16.78 4.21 16.36 4.39 15.84L5.9 15.43C6.35 16.22 6.95 16.92 7.65 17.5L6.55 19.5C6 19.58 5.5 19.89 5.21 20.42C4.75 21.27 5.07 22.33 5.92 22.79C6.77 23.25 7.83 22.93 8.29 22.08C8.57 21.56 8.56 20.96 8.31 20.47L9.38 18.5C10.19 18.82 11.07 19 12 19C12.06 19 12.12 19 12.18 19C12.05 19.26 12 19.56 12 19.88C12.08 20.85 12.92 21.57 13.88 21.5S15.57 20.58 15.5 19.62C15.46 19.12 15.21 18.68 14.85 18.39C15.32 18.18 15.77 17.91 16.19 17.6L18.53 19.94C18.43 20.5 18.59 21.07 19 21.5C19.7 22.17 20.8 22.17 21.5 21.5S22.17 19.7 21.5 19C21.07 18.59 20.5 18.43 19.94 18.53L17.6 16.19C18.09 15.54 18.47 14.8 18.71 14H19.82M10.5 12C9.67 12 9 11.33 9 10.5S9.67 9 10.5 9 12 9.67 12 10.5 11.33 12 10.5 12M14 15C13.45 15 13 14.55 13 14C13 13.45 13.45 13 14 13S15 13.45 15 14C15 14.55 14.55 15 14 15Z";
var mdiVirusOutline = "M12 .5C11.03 .5 10.25 1.28 10.25 2.25C10.25 2.84 10.55 3.37 11 3.68V5.08C10.1 5.21 9.26 5.5 8.5 5.94L7.39 4.35C7.58 3.83 7.53 3.23 7.19 2.75C6.84 2.26 6.3 2 5.75 2C5.4 2 5.05 2.1 4.75 2.32C3.96 2.87 3.76 3.96 4.32 4.75C4.66 5.24 5.2 5.5 5.75 5.5L6.93 7.18C6.5 7.61 6.16 8.09 5.87 8.62C5.67 8.54 5.46 8.5 5.25 8.5C4.8 8.5 4.35 8.67 4 9C3.33 9.7 3.33 10.8 4 11.5C4.29 11.77 4.64 11.92 5 12L5 12C5 12.54 5.07 13.06 5.18 13.56L3.87 13.91C3.56 13.65 3.16 13.5 2.75 13.5C2.6 13.5 2.44 13.5 2.29 13.56C1.36 13.81 .809 14.77 1.06 15.71C1.27 16.5 2 17 2.75 17C2.9 17 3.05 17 3.21 16.94C3.78 16.78 4.21 16.36 4.39 15.84L5.9 15.43C6.35 16.22 6.95 16.92 7.65 17.5L6.55 19.5C6 19.58 5.5 19.89 5.21 20.42C4.75 21.27 5.07 22.33 5.92 22.79C6.18 22.93 6.47 23 6.75 23C7.37 23 7.97 22.67 8.29 22.08C8.57 21.56 8.56 20.96 8.31 20.47L9.38 18.5C10.19 18.82 11.07 19 12 19C12.06 19 12.12 19 12.18 19C12.05 19.26 12 19.56 12 19.88C12.08 20.8 12.84 21.5 13.75 21.5C13.79 21.5 13.84 21.5 13.88 21.5C14.85 21.42 15.57 20.58 15.5 19.62C15.46 19.12 15.21 18.68 14.85 18.39C15.32 18.18 15.77 17.91 16.19 17.6L18.53 19.94C18.43 20.5 18.59 21.07 19 21.5C19.35 21.83 19.8 22 20.25 22S21.15 21.83 21.5 21.5C22.17 20.8 22.17 19.7 21.5 19C21.15 18.67 20.7 18.5 20.25 18.5C20.15 18.5 20.05 18.5 19.94 18.53L17.6 16.19C18.09 15.54 18.47 14.8 18.71 14H19.82C20.13 14.45 20.66 14.75 21.25 14.75C22.22 14.75 23 13.97 23 13S22.22 11.25 21.25 11.25C20.66 11.25 20.13 11.55 19.82 12H19C19 10.43 18.5 9 17.6 7.81L18.94 6.47C19.05 6.5 19.15 6.5 19.25 6.5C19.7 6.5 20.15 6.33 20.5 6C21.17 5.31 21.17 4.2 20.5 3.5C20.15 3.17 19.7 3 19.25 3S18.35 3.17 18 3.5C17.59 3.93 17.43 4.5 17.53 5.06L16.19 6.4C15.27 5.71 14.19 5.25 13 5.08V3.68C13.45 3.37 13.75 2.84 13.75 2.25C13.75 1.28 12.97 .5 12 .5M12 17C9.24 17 7 14.76 7 12S9.24 7 12 7 17 9.24 17 12 14.76 17 12 17M10.5 9C9.67 9 9 9.67 9 10.5S9.67 12 10.5 12 12 11.33 12 10.5 11.33 9 10.5 9M14 13C13.45 13 13 13.45 13 14C13 14.55 13.45 15 14 15C14.55 15 15 14.55 15 14C15 13.45 14.55 13 14 13Z";
var mdiVk = "M15.07 2H8.93C3.33 2 2 3.33 2 8.93V15.07C2 20.67 3.33 22 8.93 22H15.07C20.67 22 22 20.67 22 15.07V8.93C22 3.33 20.67 2 15.07 2M18.15 16.27H16.69C16.14 16.27 15.97 15.82 15 14.83C14.12 14 13.74 13.88 13.53 13.88C13.24 13.88 13.15 13.96 13.15 14.38V15.69C13.15 16.04 13.04 16.26 12.11 16.26C10.57 16.26 8.86 15.32 7.66 13.59C5.85 11.05 5.36 9.13 5.36 8.75C5.36 8.54 5.43 8.34 5.85 8.34H7.32C7.69 8.34 7.83 8.5 7.97 8.9C8.69 11 9.89 12.8 10.38 12.8C10.57 12.8 10.65 12.71 10.65 12.25V10.1C10.6 9.12 10.07 9.03 10.07 8.68C10.07 8.5 10.21 8.34 10.44 8.34H12.73C13.04 8.34 13.15 8.5 13.15 8.88V11.77C13.15 12.08 13.28 12.19 13.38 12.19C13.56 12.19 13.72 12.08 14.05 11.74C15.1 10.57 15.85 8.76 15.85 8.76C15.95 8.55 16.11 8.35 16.5 8.35H17.93C18.37 8.35 18.47 8.58 18.37 8.89C18.19 9.74 16.41 12.25 16.43 12.25C16.27 12.5 16.21 12.61 16.43 12.9C16.58 13.11 17.09 13.55 17.43 13.94C18.05 14.65 18.53 15.24 18.66 15.65C18.77 16.06 18.57 16.27 18.15 16.27Z";
var mdiVlc = "M12,1C11.58,1 11.19,1.23 11,1.75L9.88,4.88C10.36,5.4 11.28,5.5 12,5.5C12.72,5.5 13.64,5.4 14.13,4.88L13,1.75C12.82,1.25 12.42,1 12,1M8.44,8.91L7,12.91C8.07,14.27 10.26,14.5 12,14.5C13.74,14.5 15.93,14.27 17,12.91L15.56,8.91C14.76,9.83 13.24,10 12,10C10.76,10 9.24,9.83 8.44,8.91M5.44,15C4.62,15 3.76,15.65 3.53,16.44L2.06,21.56C1.84,22.35 2.3,23 3.13,23H20.88C21.7,23 22.16,22.35 21.94,21.56L20.47,16.44C20.24,15.65 19.38,15 18.56,15H17.75L18.09,15.97C18.21,16.29 18.29,16.69 18.09,16.97C16.84,18.7 14.14,19 12,19C9.86,19 7.16,18.7 5.91,16.97C5.71,16.69 5.79,16.29 5.91,15.97L6.25,15H5.44Z";
var mdiVoiceOff = "M2,3.27L3.28,2L22,20.72L20.73,22L16.73,18C16.9,18.31 17,18.64 17,19V21H1V19C1,16.34 6.33,15 9,15C10.77,15 13.72,15.59 15.5,16.77L11.12,12.39C10.5,12.78 9.78,13 9,13A4,4 0 0,1 5,9C5,8.22 5.22,7.5 5.61,6.88L2,3.27M9,5A4,4 0 0,1 13,9V9.17L8.83,5H9M16.76,5.36C18.78,7.56 18.78,10.61 16.76,12.63L15.08,10.94C15.92,9.76 15.92,8.23 15.08,7.05L16.76,5.36M20.07,2C24,6.05 23.97,12.11 20.07,16L18.44,14.37C21.21,11.19 21.21,6.65 18.44,3.63L20.07,2Z";
var mdiVoicemail = "M18.5,15A3.5,3.5 0 0,1 15,11.5A3.5,3.5 0 0,1 18.5,8A3.5,3.5 0 0,1 22,11.5A3.5,3.5 0 0,1 18.5,15M5.5,15A3.5,3.5 0 0,1 2,11.5A3.5,3.5 0 0,1 5.5,8A3.5,3.5 0 0,1 9,11.5A3.5,3.5 0 0,1 5.5,15M18.5,6A5.5,5.5 0 0,0 13,11.5C13,12.83 13.47,14.05 14.26,15H9.74C10.53,14.05 11,12.83 11,11.5A5.5,5.5 0 0,0 5.5,6A5.5,5.5 0 0,0 0,11.5A5.5,5.5 0 0,0 5.5,17H18.5A5.5,5.5 0 0,0 24,11.5A5.5,5.5 0 0,0 18.5,6Z";
var mdiVolleyball = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M13.6,20.35C15.96,18.04 17.69,15.08 18.5,11.76C17.84,11.62 17.18,11.54 16.5,11.5C15.56,15.11 13.41,18.22 10.5,20.37C11,20.45 11.5,20.5 12,20.5C12.55,20.5 13.08,20.45 13.6,20.35M9.23,20.04C12.23,18.07 14.5,15.05 15.46,11.5C14.71,11.55 13.97,11.65 13.27,11.81C12.18,14.89 9.97,17.44 7.13,18.97C7.77,19.42 8.5,19.78 9.23,20.04M20.5,12.37C20.16,12.23 19.81,12.11 19.46,12C18.76,14.9 17.39,17.53 15.54,19.73C18.36,18.44 20.35,15.64 20.5,12.37M3.56,11.04C3.5,11.35 3.5,11.68 3.5,12C3.5,14.5 4.57,16.73 6.27,18.28C6.86,18 7.41,17.66 7.94,17.29C6.08,15.54 4.58,13.41 3.56,11.04M5.33,6.74C4.73,7.5 4.26,8.35 3.95,9.28C4.92,12.13 6.58,14.66 8.74,16.67C9.25,16.24 9.72,15.77 10.15,15.26C7.74,13.03 6,10.08 5.33,6.74M8.04,4.5C7.36,4.85 6.73,5.3 6.18,5.82C6.71,9.21 8.37,12.23 10.77,14.47C11.17,13.91 11.5,13.32 11.82,12.7C9.68,10.56 8.28,7.69 8.04,4.5M19.96,9.03C18.7,8.68 17.37,8.5 16,8.5C14.1,8.5 12.28,8.85 10.61,9.5C10.96,10.1 11.35,10.67 11.8,11.2C13.12,10.75 14.53,10.5 16,10.5C17.57,10.5 19.08,10.78 20.47,11.29C20.4,10.5 20.23,9.74 19.96,9.03M17.54,5.57C17.03,5.5 16.5,5.5 16,5.5C13.69,5.5 11.47,5.94 9.44,6.73C9.62,7.38 9.86,8 10.14,8.61C11.96,7.89 13.93,7.5 16,7.5C17.18,7.5 18.32,7.63 19.42,7.87C18.93,7 18.29,6.21 17.54,5.57M16,4.5C14.79,3.87 13.44,3.5 12,3.5C10.95,3.5 9.94,3.7 9,4.05C9.04,4.63 9.11,5.2 9.21,5.75C11.31,4.95 13.6,4.5 16,4.5Z";
var mdiVolumeHigh = "M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z";
var mdiVolumeLow = "M7,9V15H11L16,20V4L11,9H7Z";
var mdiVolumeMedium = "M5,9V15H9L14,20V4L9,9M18.5,12C18.5,10.23 17.5,8.71 16,7.97V16C17.5,15.29 18.5,13.76 18.5,12Z";
var mdiVolumeMinus = "M3,9H7L12,4V20L7,15H3V9M14,11H22V13H14V11Z";
var mdiVolumeMute = "M3,9H7L12,4V20L7,15H3V9M16.59,12L14,9.41L15.41,8L18,10.59L20.59,8L22,9.41L19.41,12L22,14.59L20.59,16L18,13.41L15.41,16L14,14.59L16.59,12Z";
var mdiVolumeOff = "M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z";
var mdiVolumePlus = "M3,9H7L12,4V20L7,15H3V9M14,11H17V8H19V11H22V13H19V16H17V13H14V11Z";
var mdiVolumeSource = "M3 9V15H7L12 20V4L7 9H3M16 15H14V9H16V15M20 19H18V5H20V19Z";
var mdiVolumeVariantOff = "M5.64,3.64L21.36,19.36L19.95,20.78L16,16.83V20L11,15H7V9H8.17L4.22,5.05L5.64,3.64M16,4V11.17L12.41,7.58L16,4Z";
var mdiVolumeVibrate = "M4 9V15H8L13 20V4L8 9H4M16.55 2.47L15.5 3.53L17.93 6L15 9L17.93 12L15 15L17.93 18L15.5 20.47L16.55 21.53L20 18L17.07 15L20 12L17.07 9L20 6L16.55 2.47Z";
var mdiVote = "M18,13H17.32L15.32,15H17.23L19,17H5L6.78,15H8.83L6.83,13H6L3,16V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V16L18,13M17,7.95L12.05,12.9L8.5,9.36L13.46,4.41L17,7.95M12.76,2.29L6.39,8.66C6,9.05 6,9.68 6.39,10.07L11.34,15C11.73,15.41 12.36,15.41 12.75,15L19.11,8.66C19.5,8.27 19.5,7.64 19.11,7.25L14.16,2.3C13.78,1.9 13.15,1.9 12.76,2.29Z";
var mdiVoteOutline = "M18,13L21,16V20C21,21.11 20.1,22 19,22H5C3.89,22 3,21.1 3,20V16L6,13H6.83L8.83,15H6.78L5,17H19L17.23,15H15.32L17.32,13H18M19,20V19H5V20H19M11.34,15L6.39,10.07C6,9.68 6,9.05 6.39,8.66L12.76,2.29C13.15,1.9 13.78,1.9 14.16,2.3L19.11,7.25C19.5,7.64 19.5,8.27 19.11,8.66L12.75,15C12.36,15.41 11.73,15.41 11.34,15M13.46,4.41L8.5,9.36L12.05,12.9L17,7.95L13.46,4.41Z";
var mdiVpn = "M9,5H15L12,8L9,5M10.5,14.66C10.2,15 10,15.5 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.45 13.78,14.95 13.41,14.59L14.83,13.17C15.55,13.9 16,14.9 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16C8,14.93 8.42,13.96 9.1,13.25L9.09,13.24L16.17,6.17V6.17C16.89,5.45 17.89,5 19,5A4,4 0 0,1 23,9A4,4 0 0,1 19,13C17.9,13 16.9,12.55 16.17,11.83L17.59,10.41C17.95,10.78 18.45,11 19,11A2,2 0 0,0 21,9A2,2 0 0,0 19,7C18.45,7 17.95,7.22 17.59,7.59L10.5,14.66M6.41,7.59C6.05,7.22 5.55,7 5,7A2,2 0 0,0 3,9A2,2 0 0,0 5,11C5.55,11 6.05,10.78 6.41,10.41L7.83,11.83C7.1,12.55 6.1,13 5,13A4,4 0 0,1 1,9A4,4 0 0,1 5,5C6.11,5 7.11,5.45 7.83,6.17V6.17L10.59,8.93L9.17,10.35L6.41,7.59Z";
var mdiVuejs = "M2,3H5.5L12,15L18.5,3H22L12,21L2,3M6.5,3H9.5L12,7.58L14.5,3H17.5L12,13.08L6.5,3Z";
var mdiVuetify = "M12,11.64L7.92,2H16.08L12,11.64M12,21.95L3.27,4.91H7.84L12,14.47L16.16,4.91H20.73L12,21.95Z";
var mdiWalk = "M14.12,10H19V8.2H15.38L13.38,4.87C13.08,4.37 12.54,4.03 11.92,4.03C11.74,4.03 11.58,4.06 11.42,4.11L6,5.8V11H7.8V7.33L9.91,6.67L6,22H7.8L10.67,13.89L13,17V22H14.8V15.59L12.31,11.05L13.04,8.18M14,3.8C15,3.8 15.8,3 15.8,2C15.8,1 15,0.2 14,0.2C13,0.2 12.2,1 12.2,2C12.2,3 13,3.8 14,3.8Z";
var mdiWall = "M3,16H12V21H3V16M2,10H8V15H2V10M9,10H15V15H9V10M16,10H22V15H16V10M13,16H21V21H13V16M3,4H11V9H3V4M12,4H21V9H12V4Z";
var mdiWallSconce = "M11,4L7,13H19L15,4H11M4,14V22H6V19H14V14H12V17H6V14H4Z";
var mdiWallSconceFlat = "M5,5V11H19V5H5M5.27,13.32L3.5,15.09L4.91,16.5L6.68,14.73L5.27,13.32M18.73,13.32L17.32,14.73L19.09,16.5L20.5,15.09L18.73,13.32M11,16V19H13V16H11Z";
var mdiWallSconceFlatVariant = "M19 19V13H5V19H19M18.73 10.68L20.5 8.91L19.09 7.5L17.32 9.27L18.73 10.68M5.27 10.68L6.68 9.27L4.91 7.5L3.5 8.91L5.27 10.68M13 8V5H11V8H13Z";
var mdiWallSconceRound = "M13 19V16H11V19H13M19.09 16.5L20.5 15.09L18.73 13.32L17.32 14.73L19.09 16.5M4.91 16.5L6.68 14.73L5.27 13.32L3.5 15.09L4.91 16.5M20 12C20 9.14 18.5 6.5 16 5.07S10.5 3.64 8 5.07 4 9.14 4 12H20Z";
var mdiWallSconceRoundVariant = "M11 5V8H13V5H11M4.91 7.5L3.5 8.91L5.27 10.68L6.68 9.27L4.91 7.5M19.09 7.5L17.32 9.27L18.73 10.68L20.5 8.91L19.09 7.5M4 12C4 14.86 5.5 17.5 8 18.93S13.5 20.36 16 18.93 20 14.86 20 12H4Z";
var mdiWallet = "M21,18V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V6H12C10.89,6 10,6.9 10,8V16A2,2 0 0,0 12,18M12,16H22V8H12M16,13.5A1.5,1.5 0 0,1 14.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 16,13.5Z";
var mdiWalletGiftcard = "M20,14H4V8H9.08L7,10.83L8.62,12L11,8.76L12,7.4L13,8.76L15.38,12L17,10.83L14.92,8H20M20,19H4V17H20M9,4A1,1 0 0,1 10,5A1,1 0 0,1 9,6A1,1 0 0,1 8,5A1,1 0 0,1 9,4M15,4A1,1 0 0,1 16,5A1,1 0 0,1 15,6A1,1 0 0,1 14,5A1,1 0 0,1 15,4M20,6H17.82C17.93,5.69 18,5.35 18,5A3,3 0 0,0 15,2C13.95,2 13.04,2.54 12.5,3.35L12,4L11.5,3.34C10.96,2.54 10.05,2 9,2A3,3 0 0,0 6,5C6,5.35 6.07,5.69 6.18,6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z";
var mdiWalletMembership = "M20,10H4V4H20M20,15H4V13H20M20,2H4C2.89,2 2,2.89 2,4V15C2,16.11 2.89,17 4,17H8V22L12,20L16,22V17H20C21.11,17 22,16.11 22,15V4C22,2.89 21.11,2 20,2Z";
var mdiWalletOutline = "M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V16.72C21.59,16.37 22,15.74 22,15V9C22,8.26 21.59,7.63 21,7.28V5A2,2 0 0,0 19,3H5M5,5H19V7H13A2,2 0 0,0 11,9V15A2,2 0 0,0 13,17H19V19H5V5M13,9H20V15H13V9M16,10.5A1.5,1.5 0 0,0 14.5,12A1.5,1.5 0 0,0 16,13.5A1.5,1.5 0 0,0 17.5,12A1.5,1.5 0 0,0 16,10.5Z";
var mdiWalletPlus = "M3 0V3H0V5H3V8H5V5H8V3H5V0H3M9 3V6H6V9H3V19C3 20.1 3.89 21 5 21H19C20.11 21 21 20.11 21 19V18H12C10.9 18 10 17.11 10 16V8C10 6.9 10.89 6 12 6H21V5C21 3.9 20.11 3 19 3H9M12 8V16H22V8H12M16 10.5C16.83 10.5 17.5 11.17 17.5 12C17.5 12.83 16.83 13.5 16 13.5C15.17 13.5 14.5 12.83 14.5 12C14.5 11.17 15.17 10.5 16 10.5Z";
var mdiWalletPlusOutline = "M3 0V3H0V5H3V8H5V5H8V3H5V0H3M10 3V5H19V7H13C11.9 7 11 7.9 11 9V15C11 16.1 11.9 17 13 17H19V19H5V10H3V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V16.72C21.59 16.37 22 15.74 22 15V9C22 8.26 21.59 7.63 21 7.28V5C21 3.9 20.1 3 19 3H10M13 9H20V15H13V9M16 10.5A1.5 1.5 0 0 0 14.5 12A1.5 1.5 0 0 0 16 13.5A1.5 1.5 0 0 0 17.5 12A1.5 1.5 0 0 0 16 10.5Z";
var mdiWalletTravel = "M20,14H4V8H7V10H9V8H15V10H17V8H20M20,19H4V17H20M9,4H15V6H9M20,6H17V4C17,2.89 16.11,2 15,2H9C7.89,2 7,2.89 7,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z";
var mdiWallpaper = "M4,4H11V2H4A2,2 0 0,0 2,4V11H4V4M10,13L6,18H18L15,14L12.97,16.71L10,13M17,8.5A1.5,1.5 0 0,0 15.5,7A1.5,1.5 0 0,0 14,8.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5M20,2H13V4H20V11H22V4A2,2 0 0,0 20,2M20,20H13V22H20A2,2 0 0,0 22,20V13H20V20M4,13H2V20A2,2 0 0,0 4,22H11V20H4V13Z";
var mdiWan = "M12,2A8,8 0 0,0 4,10C4,14.03 7,17.42 11,17.93V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V17.93C17,17.43 20,14.03 20,10A8,8 0 0,0 12,2M12,4C12,4 12.74,5.28 13.26,7H10.74C11.26,5.28 12,4 12,4M9.77,4.43C9.5,4.93 9.09,5.84 8.74,7H6.81C7.5,5.84 8.5,4.93 9.77,4.43M14.23,4.44C15.5,4.94 16.5,5.84 17.19,7H15.26C14.91,5.84 14.5,4.93 14.23,4.44M6.09,9H8.32C8.28,9.33 8.25,9.66 8.25,10C8.25,10.34 8.28,10.67 8.32,11H6.09C6.03,10.67 6,10.34 6,10C6,9.66 6.03,9.33 6.09,9M10.32,9H13.68C13.72,9.33 13.75,9.66 13.75,10C13.75,10.34 13.72,10.67 13.68,11H10.32C10.28,10.67 10.25,10.34 10.25,10C10.25,9.66 10.28,9.33 10.32,9M15.68,9H17.91C17.97,9.33 18,9.66 18,10C18,10.34 17.97,10.67 17.91,11H15.68C15.72,10.67 15.75,10.34 15.75,10C15.75,9.66 15.72,9.33 15.68,9M6.81,13H8.74C9.09,14.16 9.5,15.07 9.77,15.56C8.5,15.06 7.5,14.16 6.81,13M10.74,13H13.26C12.74,14.72 12,16 12,16C12,16 11.26,14.72 10.74,13M15.26,13H17.19C16.5,14.16 15.5,15.07 14.23,15.57C14.5,15.07 14.91,14.16 15.26,13Z";
var mdiWardrobe = "M4 4V19C4 20.1 4.9 21 6 21V22H8V21H11.5V2H6C4.9 2 4 2.9 4 4M8 10H10V13H8V10M18 2H12.5V21H16V22H18V21C19.1 21 20 20.1 20 19V4C20 2.9 19.1 2 18 2M16 13H14V10H16V13Z";
var mdiWardrobeOutline = "M6 2C4.89 2 4 2.9 4 4V19C4 20.11 4.89 21 6 21V22H8V21H16V22H18V21C19.11 21 20 20.11 20 19V4C20 2.9 19.11 2 18 2H6M6 4H11V19H6V4M13 4H18V19H13V4M8 10V13H10V10H8M14 10V13H16V10H14Z";
var mdiWarehouse = "M6 19H8V21H6V19M12 3L2 8V21H4V13H20V21H22V8L12 3M8 11H4V9H8V11M14 11H10V9H14V11M20 11H16V9H20V11M6 15H8V17H6V15M10 15H12V17H10V15M10 19H12V21H10V19M14 19H16V21H14V19Z";
var mdiWashingMachine = "M14.83,11.17C16.39,12.73 16.39,15.27 14.83,16.83C13.27,18.39 10.73,18.39 9.17,16.83L14.83,11.17M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M10,4A1,1 0 0,0 9,5A1,1 0 0,0 10,6A1,1 0 0,0 11,5A1,1 0 0,0 10,4M12,8A6,6 0 0,0 6,14A6,6 0 0,0 12,20A6,6 0 0,0 18,14A6,6 0 0,0 12,8Z";
var mdiWashingMachineAlert = "M12.83 11.17C14.39 12.73 14.39 15.27 12.83 16.83S8.73 18.39 7.17 16.83L12.83 11.17M4 2H16C17.11 2 18 2.9 18 4V20C18 21.11 17.11 22 16 22H4C2.9 22 2 21.11 2 20V4C2 2.9 2.9 2 4 2M5 4C4.45 4 4 4.45 4 5S4.45 6 5 6 6 5.55 6 5 5.55 4 5 4M8 4C7.45 4 7 4.45 7 5S7.45 6 8 6 9 5.55 9 5 8.55 4 8 4M10 8C6.69 8 4 10.69 4 14S6.69 20 10 20 16 17.31 16 14 13.31 8 10 8M20 15H22V17H20V15M20 7H22V13H20V7Z";
var mdiWashingMachineOff = "M22.11 21.46L2.39 1.73L1.11 3L4 5.89V20C4 21.11 4.89 22 6 22H18C18.58 22 19.1 21.75 19.46 21.35L20.84 22.73L22.11 21.46M12 20C8.69 20 6 17.31 6 14C6 12.32 6.7 10.8 7.82 9.71L12.06 13.95L9.17 16.83C10.73 18.39 13.27 18.39 14.83 16.83C14.85 16.81 14.86 16.79 14.88 16.77L16.29 18.18C15.2 19.3 13.69 20 12 20M11.25 8.05C11.5 8 11.75 8 12 8C15.31 8 18 10.69 18 14C18 14.25 18 14.5 17.95 14.75L20 16.8V4C20 2.9 19.11 2 18 2H6C5.76 2 5.54 2.05 5.33 2.13L11.25 8.05M10 4C10.55 4 11 4.45 11 5S10.55 6 10 6 9 5.55 9 5 9.45 4 10 4Z";
var mdiWatch = "M6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12M20,12C20,9.45 18.81,7.19 16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.45 4,12C4,14.54 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27C18.81,16.81 20,14.54 20,12Z";
var mdiWatchExport = "M14,11H19L16.5,8.5L17.92,7.08L22.84,12L17.92,16.92L16.5,15.5L19,13H14V11M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.4,6 14.69,6.5 15.71,7.29L17.13,5.87L16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.46 4,12C4,14.55 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27L17.13,18.13L15.71,16.71C14.69,17.5 13.4,18 12,18Z";
var mdiWatchExportVariant = "M14,11H19L16.5,8.5L17.92,7.08L22.84,12L17.92,16.92L16.5,15.5L19,13H14V11M8,0H16L16.83,5H17C17.28,5 17.54,5.06 17.78,5.16L15.94,7H7V17H15.94L17.78,18.84C17.54,18.94 17.28,19 17,19H16.83L16,24H8L7.17,19H7A2,2 0 0,1 5,17V7C5,5.89 5.9,5 7,5H7.17L8,0Z";
var mdiWatchImport = "M2,11H7L4.5,8.5L5.92,7.08L10.84,12L5.92,16.92L4.5,15.5L7,13H2V11M12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6C10.6,6 9.31,6.5 8.29,7.29L6.87,5.87L7.05,5.73L8,0H16L16.95,5.73C18.81,7.19 20,9.45 20,12C20,14.54 18.81,16.81 16.95,18.27L16,24H8L7.05,18.27L6.87,18.13L8.29,16.71C9.31,17.5 10.6,18 12,18Z";
var mdiWatchImportVariant = "M1,11H6L3.5,8.5L4.92,7.08L9.84,12L4.92,16.92L3.5,15.5L6,13H1V11M8,0H16L16.83,5H17A2,2 0 0,1 19,7V17C19,18.11 18.1,19 17,19H16.83L16,24H8L7.17,19H7C6.46,19 6,18.79 5.62,18.44L7.06,17H17V7H7.06L5.62,5.56C6,5.21 6.46,5 7,5H7.17L8,0Z";
var mdiWatchVariant = "M8,0L7.17,5H7A2,2 0 0,0 5,7V17C5,18.11 5.9,19 7,19H7.17L8,24H16L16.83,19H17A2,2 0 0,0 19,17V7C19,5.89 18.1,5 17,5H16.83L16,0H8M7,7H17V17H7V7Z";
var mdiWatchVibrate = "M3,17V7H5V17H3M19,17V7H21V17H19M22,9H24V15H22V9M0,15V9H2V15H0M17.96,11.97C17.96,13.87 17.07,15.57 15.68,16.67L14.97,20.95H9L8.27,16.67C6.88,15.57 6,13.87 6,11.97C6,10.07 6.88,8.37 8.27,7.28L9,3H14.97L15.68,7.28C17.07,8.37 17.96,10.07 17.96,11.97M7.5,11.97C7.5,14.45 9.5,16.46 11.97,16.46A4.5,4.5 0 0,0 16.46,11.97C16.46,9.5 14.45,7.5 11.97,7.5A4.47,4.47 0 0,0 7.5,11.97Z";
var mdiWatchVibrateOff = "M0,9H2V15H0V9M12,7.5C14.47,7.5 16.47,9.53 16.46,12C16.45,12.38 16.4,12.76 16.3,13.13L17.5,14.31C17.81,13.58 18,12.8 18,12C18,10.17 17.16,8.44 15.72,7.31L15,3H9L8.59,5.39L10.86,7.66C11.23,7.55 11.61,7.5 12,7.5M21,17V7H19V15.8L20.2,17H21M16.5,15.86L22.11,21.46L20.84,22.73L15.55,17.44L15,21H9L8.27,16.72C5.85,14.82 5.27,11.4 6.91,8.8L1.11,3L2.39,1.73L8.09,7.44L9.17,8.5L15.44,14.79L16.5,15.86M14.05,15.94L8.05,9.94C7.7,10.57 7.5,11.28 7.5,12C7.5,14.47 9.53,16.47 12,16.46C12.72,16.46 13.42,16.28 14.05,15.94M22,9V15H24V9H22M3,17H5V7H3V17Z";
var mdiWater = "M12,20A6,6 0 0,1 6,14C6,10 12,3.25 12,3.25C12,3.25 18,10 18,14A6,6 0 0,1 12,20Z";
var mdiWaterAlert = "M10 3.25C10 3.25 16 10 16 14C16 17.31 13.31 20 10 20S4 17.31 4 14C4 10 10 3.25 10 3.25M20 7V13H18V7H20M18 17H20V15H18V17Z";
var mdiWaterAlertOutline = "M10 3.25C10 3.25 4 10 4 14C4 17.31 6.69 20 10 20S16 17.31 16 14C16 10 10 3.25 10 3.25M10 18C7.79 18 6 16.21 6 14C6 12.23 8 8.96 10 6.39C12 8.95 14 12.23 14 14C14 16.21 12.21 18 10 18M20 7V13H18V7H20M18 17H20V15H18V17Z";
var mdiWaterBoiler = "M8 2C6.89 2 6 2.89 6 4V16C6 17.11 6.89 18 8 18H9V20H6V22H9C10.11 22 11 21.11 11 20V18H13V20C13 21.11 13.89 22 15 22H18V20H15V18H16C17.11 18 18 17.11 18 16V4C18 2.89 17.11 2 16 2H8M12 4.97A2 2 0 0 1 14 6.97A2 2 0 0 1 12 8.97A2 2 0 0 1 10 6.97A2 2 0 0 1 12 4.97M10 14.5H14V16H10V14.5Z";
var mdiWaterBoilerAlert = "M6 2C4.89 2 4 2.89 4 4V16C4 17.11 4.89 18 6 18H7V20H4V22H7C8.11 22 9 21.11 9 20V18H11V20C11 21.11 11.89 22 13 22H16V20H13V18H14C15.11 18 16 17.11 16 16V4C16 2.89 15.11 2 14 2H6M10 4.97C11.11 4.97 12 5.87 12 6.97S11.11 8.97 10 8.97C8.9 8.97 8 8.07 8 6.97C8 5.87 8.9 4.97 10 4.97M8 14.5H12V16H8V14.5M18 15H20V17H18V15M18 7H20V13H18V7Z";
var mdiWaterBoilerOff = "M10 6.82L6.25 3.05C6.59 2.42 7.24 2 8 2H16C17.11 2 18 2.89 18 4V14.8L12.16 8.96C13.19 8.87 14 8 14 6.97C14 5.87 13.11 4.97 12 4.97C10.95 4.97 10.1 5.78 10 6.82M15 18V20H18V22H15C13.89 22 13 21.11 13 20V18H11V20C11 21.11 10.11 22 9 22H6V20H9V18H8C6.89 18 6 17.11 6 16V7.89L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73L16.1 18C16.06 18 16.03 18 16 18H15M14 16V15.89L12.61 14.5H10V16H14Z";
var mdiWaterCheck = "M21.75 16.25L17 21L14.25 18L15.41 16.84L17 18.43L20.59 14.84L21.75 16.25M17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20H12.34C12.12 19.36 12 18.7 12 18C12 14.82 14.5 12.22 17.62 12Z";
var mdiWaterCheckOutline = "M21.75 16.25L17 21L14.25 18L15.41 16.84L17 18.43L20.59 14.84L21.75 16.25M8 14C8 12.23 10 8.96 12 6.39C13.5 8.33 15 10.67 15.67 12.47C16.27 12.21 16.93 12.06 17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20C12.12 20 12.23 20 12.34 20C12.12 19.36 12 18.7 12 18C9.79 18 8 16.21 8 14Z";
var mdiWaterMinus = "M22 17V19H14V17H22M17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20C12.12 20 12.23 20 12.34 20C12.12 19.36 12 18.7 12 18C12 14.82 14.5 12.22 17.62 12Z";
var mdiWaterMinusOutline = "M22 17V19H14V17H22M8 14C8 12.23 10 8.96 12 6.39C13.5 8.33 15 10.67 15.67 12.47C16.27 12.21 16.93 12.06 17.62 12C16.31 8.1 12 3.25 12 3.25S6 10 6 14C6 17.31 8.69 20 12 20C12.12 20 12.23 20 12.34 20C12.12 19.36 12 18.7 12 18C9.79 18 8 16.21 8 14Z";
var mdiWaterOff = "M20.84 22.73L16.29 18.18C15.2 19.3 13.69 20 12 20C8.69 20 6 17.31 6 14C6 12.67 6.67 11.03 7.55 9.44L1.11 3L2.39 1.73L22.11 21.46L20.84 22.73M18 14C18 10 12 3.25 12 3.25S10.84 4.55 9.55 6.35L17.95 14.75C18 14.5 18 14.25 18 14Z";
var mdiWaterOffOutline = "M22.11 21.46L2.39 1.73L1.11 3L7.65 9.54C6.74 11.03 6 12.65 6 14.23C6 17.54 8.69 20.23 12 20.23C13.74 20.23 15.3 19.5 16.4 18.29L20.84 22.73L22.11 21.46M12 18.23C9.78 18.23 8 16.45 8 14.23C8 13.5 8.5 12.27 9.14 11.03L15 16.88C14.26 17.71 13.2 18.23 12 18.23M11.14 7.94L9.71 6.5C10.57 5.38 11.25 4.61 11.25 4.61L12 3.77L12.75 4.61C12.75 4.61 14.03 6.06 15.32 7.94S18 12.07 18 14.23C18 14.41 18 14.59 17.97 14.77L15.46 12.26C15 11.23 14.37 10.07 13.68 9.07C12.84 7.85 12.44 7.42 12 6.9C11.73 7.21 11.5 7.5 11.14 7.94Z";
var mdiWaterOutline = "M12,3.77L11.25,4.61C11.25,4.61 9.97,6.06 8.68,7.94C7.39,9.82 6,12.07 6,14.23A6,6 0 0,0 12,20.23A6,6 0 0,0 18,14.23C18,12.07 16.61,9.82 15.32,7.94C14.03,6.06 12.75,4.61 12.75,4.61L12,3.77M12,6.9C12.44,7.42 12.84,7.85 13.68,9.07C14.89,10.83 16,13.07 16,14.23C16,16.45 14.22,18.23 12,18.23C9.78,18.23 8,16.45 8,14.23C8,13.07 9.11,10.83 10.32,9.07C11.16,7.85 11.56,7.42 12,6.9Z";
var mdiWaterPercent = "M12,3.25C12,3.25 6,10 6,14C6,17.32 8.69,20 12,20A6,6 0 0,0 18,14C18,10 12,3.25 12,3.25M14.47,9.97L15.53,11.03L9.53,17.03L8.47,15.97M9.75,10A1.25,1.25 0 0,1 11,11.25A1.25,1.25 0 0,1 9.75,12.5A1.25,1.25 0 0,1 8.5,11.25A1.25,1.25 0 0,1 9.75,10M14.25,14.5A1.25,1.25 0 0,1 15.5,15.75A1.25,1.25 0 0,1 14.25,17A1.25,1.25 0 0,1 13,15.75A1.25,1.25 0 0,1 14.25,14.5Z";
var mdiWaterPercentAlert = "M20 7V13H18V7H20M18 17H20V15H18V17M10 3.25C10 3.25 4 10 4 14C4 17.32 6.69 20 10 20S16 17.31 16 14C16 10 10 3.25 10 3.25M7.75 10C8.44 10 9 10.56 9 11.25S8.44 12.5 7.75 12.5 6.5 11.94 6.5 11.25 7.06 10 7.75 10M12.25 17C11.56 17 11 16.44 11 15.75S11.56 14.5 12.25 14.5 13.5 15.06 13.5 15.75 12.94 17 12.25 17M7.53 17.03L6.47 15.97L12.47 9.97L13.53 11.03L7.53 17.03Z";
var mdiWaterPlus = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C14.5 12.22 12 14.82 12 18M19 17V14H17V17H14V19H17V22H19V19H22V17H19Z";
var mdiWaterPlusOutline = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C16.93 12.06 16.28 12.22 15.67 12.47C15 10.68 13.5 8.33 12 6.39C10 8.96 8 12.23 8 14C8 16.21 9.79 18 12 18M19 17V14H17V17H14V19H17V22H19V19H22V17H19Z";
var mdiWaterPolo = "M20 16H22V18H20C18.6 18 17.2 17.6 16 17C13.5 18.3 10.5 18.3 8 17C6.8 17.6 5.4 18 4 18H2V16H4C5.4 16 6.8 15.5 8 14.7C10.4 16.4 13.6 16.4 16 14.7C17.2 15.5 18.6 16 20 16M13 10.6C13.6 10.3 14.3 10 15 9.9V10.2C15.3 11.2 15.3 12.1 15.2 13.1C14.3 13.6 13.2 13.9 12.2 13.9C12.7 12.9 13 11.7 13 10.6M12.9 3.6C11.5 4 10.3 4.7 9.3 5.7C8.9 4.7 8.7 3.7 8.7 2.7C10.9 1.7 13.4 1.8 15.6 2.9C15.9 3 16.2 3.1 16.4 3.3C15.2 3.2 14 3.3 12.9 3.6M6.8 13.3C6.2 13.6 5.6 13.8 5 13.9C4.3 12.6 4 11.2 4 9.8C4.5 10.8 5.2 11.8 6 12.6C6.3 12.8 6.5 13.1 6.8 13.3M19 13.9C18.4 13.8 17.8 13.6 17.3 13.4C17.5 12.2 17.4 11 17.1 9.8C18.2 9.9 19.2 10.2 20.1 10.8C20 11.8 19.7 12.7 19.2 13.6L19 13.9M7.4 11.2C6.2 10.1 5.5 8.5 5.2 6.9L5.1 6C5.6 5.2 6.1 4.6 6.8 4C6.9 5.4 7.4 6.7 8.2 7.8C8.9 8.9 9.9 9.9 11 10.5C11 11.3 10.8 12.1 10.5 12.9C9.3 12.6 8.3 12 7.4 11.2M13.5 5.5C15 5.1 16.7 5.2 18.2 5.7L19 6.1C19.4 6.8 19.6 7.6 19.8 8.4C17.3 7.3 14.4 7.5 12 8.8C11.3 8.5 10.8 8 10.3 7.4L10.4 7.3C11.3 6.5 12.3 5.8 13.5 5.5M16 18.7C17.2 19.5 18.6 20 20 20H22V22H20C18.6 22 17.2 21.6 16 21C13.5 22.3 10.5 22.3 8 21C6.8 21.6 5.4 22 4 22H2V20H4C5.4 20 6.8 19.5 8 18.7C10.4 20.4 13.6 20.4 16 18.7Z";
var mdiWaterPump = "M19,14.5C19,14.5 21,16.67 21,18A2,2 0 0,1 19,20A2,2 0 0,1 17,18C17,16.67 19,14.5 19,14.5M5,18V9A2,2 0 0,1 3,7A2,2 0 0,1 5,5V4A2,2 0 0,1 7,2H9A2,2 0 0,1 11,4V5H19A2,2 0 0,1 21,7V9L21,11A1,1 0 0,1 22,12A1,1 0 0,1 21,13H17A1,1 0 0,1 16,12A1,1 0 0,1 17,11V9H11V18H12A2,2 0 0,1 14,20V22H2V20A2,2 0 0,1 4,18H5Z";
var mdiWaterPumpOff = "M5.7 2.5A2 2 0 0 1 7 2H9A2 2 0 0 1 11 4V5H19A2 2 0 0 1 21 7V11A1 1 0 0 1 21 13H17A1 1 0 0 1 17 11V9H12.2M20.84 22.73L22.11 21.46L11 10.34L2.39 1.73L1.11 3L3.65 5.54A2 2 0 0 0 5 9V18H4A2 2 0 0 0 2 20V22H14V20A2 2 0 0 0 12 18H11V12.89Z";
var mdiWaterRemove = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C14.5 12.22 12 14.82 12 18M21.54 15.88L20.13 14.47L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.53L18 19.41L20.12 21.53L21.53 20.12L19.41 18L21.54 15.88Z";
var mdiWaterRemoveOutline = "M12 18C12 18.7 12.12 19.36 12.34 20C12.23 20 12.12 20 12 20C8.69 20 6 17.31 6 14C6 10 12 3.25 12 3.25S16.31 8.1 17.62 12C16.93 12.06 16.28 12.22 15.67 12.47C15 10.68 13.5 8.33 12 6.39C10 8.96 8 12.23 8 14C8 16.21 9.79 18 12 18M21.54 15.88L20.13 14.47L18 16.59L15.88 14.47L14.47 15.88L16.59 18L14.47 20.12L15.88 21.53L18 19.41L20.12 21.53L21.53 20.12L19.41 18L21.54 15.88Z";
var mdiWaterWell = "M22 16H2V18H4V22H20V18H22V16M10.44 15C10.19 15 10 14.81 9.95 14.56L9.57 11.56C9.57 11.54 9.57 11.5 9.57 11.5C9.57 11.22 9.79 11 10.07 11H13.93C13.95 11 13.97 11 14 11C14.27 11.04 14.46 11.29 14.43 11.56L14.05 14.56C14 14.81 13.81 15 13.56 15H10.44M19 2L21.56 6.68C21.6 6.78 21.61 6.89 21.61 7C21.61 7.56 21.16 8 20.61 8H19V15H17V8H13V10H11V8H7V15H5V8H3.62C3.46 8 3.31 7.96 3.16 7.89C2.67 7.64 2.47 7.04 2.72 6.55L5 2H19Z";
var mdiWaterWellOutline = "M3.62 8H5V15H7V8H11V10H13V8H17V15H19V8H20.61C21.16 8 21.61 7.56 21.61 7C21.61 6.89 21.6 6.78 21.56 6.68L19 2H5L2.72 6.55C2.47 7.04 2.67 7.64 3.16 7.89C3.31 7.96 3.46 8 3.62 8M6.24 4H17.76L18.76 6H5.24L6.24 4M2 16V18H4V22H20V18H22V16H2M18 20H6V18H18V20M13.93 11C14.21 11 14.43 11.22 14.43 11.5C14.43 11.5 14.43 11.54 14.43 11.56L14.05 14.56C14 14.81 13.81 15 13.56 15H10.44C10.19 15 10 14.81 9.95 14.56L9.57 11.56C9.54 11.29 9.73 11.04 10 11C10.03 11 10.05 11 10.07 11H13.93Z";
var mdiWateringCan = "M18.5 7.47C17.76 8.2 17.57 9.25 17.92 10.15L15 13.07V11C15 10.45 14.55 10 14 10H12.97C13 9.83 13 9.67 13 9.5C13 6.46 10.54 4 7.5 4S2 6.46 2 9.5C2 11.21 2.78 12.73 4 13.74V20C4 20.55 4.45 21 5 21H14C14.55 21 15 20.55 15 20V15.89L19.33 11.56C20.23 11.91 21.28 11.73 22 11L18.5 7.47M4.05 10C4.03 9.83 4 9.67 4 9.5C4 7.57 5.57 6 7.5 6S11 7.57 11 9.5C11 9.67 10.97 9.83 10.95 10H4.05Z";
var mdiWateringCanOutline = "M18.5 7.47C17.76 8.2 17.57 9.25 17.92 10.15L15 13.07V11C15 10.45 14.55 10 14 10H12.97C13 9.83 13 9.67 13 9.5C13 6.46 10.54 4 7.5 4S2 6.46 2 9.5C2 11.21 2.78 12.73 4 13.74V20C4 20.55 4.45 21 5 21H14C14.55 21 15 20.55 15 20V15.89L19.33 11.56C20.23 11.91 21.28 11.73 22 11L18.5 7.47M4.05 10C4.03 9.83 4 9.67 4 9.5C4 7.57 5.57 6 7.5 6S11 7.57 11 9.5C11 9.67 10.97 9.83 10.95 10M13 19H6V12H13V19Z";
var mdiWatermark = "M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H12V13H21V19Z";
var mdiWave = "M20,12C18.61,12 17.22,11.53 16,10.67C13.56,12.38 10.44,12.38 8,10.67C6.78,11.53 5.39,12 4,12H2V14H4C5.37,14 6.74,13.65 8,13C10.5,14.3 13.5,14.3 16,13C17.26,13.65 18.62,14 20,14H22V12";
var mdiWaveform = "M22 12L20 13L19 14L18 13L17 16L16 13L15 21L14 13L13 15L12 13L11 17L10 13L9 22L8 13L7 19L6 13L5 14L4 13L2 12L4 11L5 10L6 11L7 5L8 11L9 2L10 11L11 7L12 11L13 9L14 11L15 3L16 11L17 8L18 11L19 10L20 11L22 12Z";
var mdiWaves = "M20,12H22V14H20C18.62,14 17.26,13.65 16,13C13.5,14.3 10.5,14.3 8,13C6.74,13.65 5.37,14 4,14H2V12H4C5.39,12 6.78,11.53 8,10.67C10.44,12.38 13.56,12.38 16,10.67C17.22,11.53 18.61,12 20,12M20,6H22V8H20C18.62,8 17.26,7.65 16,7C13.5,8.3 10.5,8.3 8,7C6.74,7.65 5.37,8 4,8H2V6H4C5.39,6 6.78,5.53 8,4.67C10.44,6.38 13.56,6.38 16,4.67C17.22,5.53 18.61,6 20,6M20,18H22V20H20C18.62,20 17.26,19.65 16,19C13.5,20.3 10.5,20.3 8,19C6.74,19.65 5.37,20 4,20H2V18H4C5.39,18 6.78,17.53 8,16.67C10.44,18.38 13.56,18.38 16,16.67C17.22,17.53 18.61,18 20,18Z";
var mdiWaze = "M20.54,6.63C21.23,7.57 21.69,8.67 21.89,9.82C22.1,11.07 22,12.34 21.58,13.54C21.18,14.71 20.5,15.76 19.58,16.6C18.91,17.24 18.15,17.77 17.32,18.18C17.73,19.25 17.19,20.45 16.12,20.86C15.88,20.95 15.63,21 15.38,21C14.27,21 13.35,20.11 13.31,19C13.05,19 10.73,19 10.24,19C10.13,20.14 9.11,21 7.97,20.87C6.91,20.77 6.11,19.89 6.09,18.83C6.1,18.64 6.13,18.44 6.19,18.26C4.6,17.73 3.21,16.74 2.19,15.41C1.86,14.97 1.96,14.34 2.42,14C2.6,13.86 2.82,13.78 3.05,13.78C3.77,13.78 4.05,13.53 4.22,13.15C4.46,12.43 4.6,11.68 4.61,10.92C4.64,10.39 4.7,9.87 4.78,9.35C5.13,7.62 6.1,6.07 7.5,5C9.16,3.7 11.19,3 13.29,3C14.72,3 16.13,3.35 17.4,4C18.64,4.62 19.71,5.5 20.54,6.63M16.72,17.31C18.5,16.5 19.9,15.04 20.59,13.21C22.21,8.27 18,4.05 13.29,4.05C12.94,4.05 12.58,4.07 12.23,4.12C9.36,4.5 6.4,6.5 5.81,9.5C5.43,11.5 6,14.79 3.05,14.79C4,16 5.32,16.93 6.81,17.37C7.66,16.61 8.97,16.69 9.74,17.55C9.85,17.67 9.94,17.8 10,17.94C10.59,17.94 13.2,17.94 13.55,17.94C14.07,16.92 15.33,16.5 16.35,17.04C16.5,17.12 16.6,17.21 16.72,17.31M10.97,10.31C10.39,10.34 9.88,9.9 9.85,9.31C9.82,8.73 10.27,8.23 10.85,8.19C11.43,8.16 11.94,8.61 11.97,9.25C12,9.8 11.56,10.27 11,10.29L10.97,10.31M15.66,10.31C15.08,10.34 14.57,9.9 14.54,9.31C14.5,8.73 14.96,8.23 15.54,8.19C16.12,8.16 16.63,8.61 16.66,9.25C16.68,9.8 16.25,10.27 15.66,10.29V10.31M9.71,12.07C9.65,11.79 9.84,11.5 10.12,11.45C10.4,11.4 10.68,11.58 10.74,11.86V11.86C11.09,12.97 12.16,13.69 13.32,13.6C14.46,13.66 15.5,12.96 15.89,11.88C16.03,11.62 16.35,11.5 16.6,11.65C16.78,11.75 16.89,11.92 16.89,12.12C16.7,12.83 16.26,13.45 15.66,13.88C14.97,14.36 14.16,14.63 13.32,14.64H13.21C11.58,14.71 10.11,13.64 9.68,12.06L9.71,12.07Z";
var mdiWeatherCloudy = "M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13Z";
var mdiWeatherCloudyAlert = "M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13M13,12H11V8H13V12M13,16H11V14H13";
var mdiWeatherCloudyArrowRight = "M6,7L6.69,7.06C7.32,4.72 9.46,3 12,3A5.5,5.5 0 0,1 17.5,8.5L17.42,9.45C17.88,9.16 18.42,9 19,9A3,3 0 0,1 22,12A3,3 0 0,1 19,15H6A4,4 0 0,1 2,11A4,4 0 0,1 6,7M6,9A2,2 0 0,0 4,11A2,2 0 0,0 6,13H19A1,1 0 0,0 20,12A1,1 0 0,0 19,11H15.5V8.5A3.5,3.5 0 0,0 12,5A3.5,3.5 0 0,0 8.5,8.5V9H6M22,19L19,22V20H2V18H19V16L22,19";
var mdiWeatherFog = "M3,15H13A1,1 0 0,1 14,16A1,1 0 0,1 13,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15M16,15H21A1,1 0 0,1 22,16A1,1 0 0,1 21,17H16A1,1 0 0,1 15,16A1,1 0 0,1 16,15M1,12A5,5 0 0,1 6,7C7,4.65 9.3,3 12,3C15.43,3 18.24,5.66 18.5,9.03L19,9C21.19,9 22.97,10.76 23,13H21A2,2 0 0,0 19,11H17V10A5,5 0 0,0 12,5C9.5,5 7.45,6.82 7.06,9.19C6.73,9.07 6.37,9 6,9A3,3 0 0,0 3,12C3,12.35 3.06,12.69 3.17,13H1.1L1,12M3,19H5A1,1 0 0,1 6,20A1,1 0 0,1 5,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19M8,19H21A1,1 0 0,1 22,20A1,1 0 0,1 21,21H8A1,1 0 0,1 7,20A1,1 0 0,1 8,19Z";
var mdiWeatherHail = "M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M10,18A2,2 0 0,1 12,20A2,2 0 0,1 10,22A2,2 0 0,1 8,20A2,2 0 0,1 10,18M14.5,16A1.5,1.5 0 0,1 16,17.5A1.5,1.5 0 0,1 14.5,19A1.5,1.5 0 0,1 13,17.5A1.5,1.5 0 0,1 14.5,16M10.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,15A1.5,1.5 0 0,1 9,13.5A1.5,1.5 0 0,1 10.5,12Z";
var mdiWeatherHazy = "M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64M14,15A1,1 0 0,0 13,14H3A1,1 0 0,0 2,15A1,1 0 0,0 3,16H13A1,1 0 0,0 14,15M22,15A1,1 0 0,0 21,14H17A1,1 0 0,0 16,15A1,1 0 0,0 17,16H21A1,1 0 0,0 22,15M10,19A1,1 0 0,0 11,20H20A1,1 0 0,0 21,19A1,1 0 0,0 20,18H11A1,1 0 0,0 10,19M3,19A1,1 0 0,0 4,20H7A1,1 0 0,0 8,19A1,1 0 0,0 7,18H4A1,1 0 0,0 3,19M12,9A3,3 0 0,1 15,12H17A5,5 0 0,0 12,7A5,5 0 0,0 7,12H9A3,3 0 0,1 12,9Z";
var mdiWeatherHurricane = "M15,6.79C16.86,7.86 18,9.85 18,12C18,22 6,22 6,22C7.25,21.06 8.38,19.95 9.34,18.71C9.38,18.66 9.41,18.61 9.44,18.55C9.69,18.06 9.5,17.46 9,17.21C7.14,16.14 6,14.15 6,12C6,2 18,2 18,2C16.75,2.94 15.62,4.05 14.66,5.29C14.62,5.34 14.59,5.39 14.56,5.45C14.31,5.94 14.5,6.54 15,6.79M12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14Z";
var mdiWeatherLightning = "M6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14H7A1,1 0 0,1 8,15A1,1 0 0,1 7,16H6M12,11H15L13,15H15L11.25,22L12,17H9.5L12,11Z";
var mdiWeatherLightningRainy = "M4.5,13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.44 4,15.6 3.5,15.33V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59M9.5,11H12.5L10.5,15H12.5L8.75,22L9.5,17H7L9.5,11M17.5,18.67C17.5,19.96 16.5,21 15.25,21C14,21 13,19.96 13,18.67C13,17.12 15.25,14.5 15.25,14.5C15.25,14.5 17.5,17.12 17.5,18.67Z";
var mdiWeatherNight = "M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.17,23 8.84,23 4.94,19.07C1.03,15.17 1.03,8.83 4.94,4.93C5.34,4.53 5.76,4.17 6.21,3.85C6.96,3.32 8.14,4.21 8.06,5.04C7.79,7.9 8.75,10.87 10.95,13.06C13.14,15.26 16.1,16.22 18.97,15.95M17.33,17.97C14.5,17.81 11.7,16.64 9.53,14.5C7.36,12.31 6.2,9.5 6.04,6.68C3.23,9.82 3.34,14.64 6.35,17.66C9.37,20.67 14.19,20.78 17.33,17.97Z";
var mdiWeatherNightPartlyCloudy = "M22,10.28C21.74,10.3 21.5,10.31 21.26,10.31C19.32,10.31 17.39,9.57 15.91,8.09C14.25,6.44 13.5,4.19 13.72,2C13.77,1.53 13.22,1 12.71,1C12.57,1 12.44,1.04 12.32,1.12C12,1.36 11.66,1.64 11.36,1.94C9.05,4.24 8.55,7.66 9.84,10.46C8.31,11.11 7.13,12.43 6.69,14.06L6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22H19A3,3 0 0,0 22,19A3,3 0 0,0 19,16C18.42,16 17.88,16.16 17.42,16.45L17.5,15.5C17.5,15.28 17.5,15.05 17.46,14.83C19.14,14.67 20.77,13.94 22.06,12.64C22.38,12.34 22.64,12 22.88,11.68C23.27,11.13 22.65,10.28 22.04,10.28M19,18A1,1 0 0,1 20,19A1,1 0 0,1 19,20H6A2,2 0 0,1 4,18A2,2 0 0,1 6,16H8.5V15.5C8.5,13.94 9.53,12.64 10.94,12.18C11.1,12.13 11.26,12.09 11.43,12.06C11.61,12.03 11.8,12 12,12C12.23,12 12.45,12.03 12.66,12.07C12.73,12.08 12.8,12.1 12.87,12.13C13,12.16 13.15,12.2 13.28,12.25C13.36,12.28 13.44,12.32 13.5,12.36C13.63,12.41 13.74,12.47 13.84,12.54C13.92,12.59 14,12.64 14.07,12.7C14.17,12.77 14.25,12.84 14.34,12.92C14.41,13 14.5,13.05 14.55,13.12C14.63,13.2 14.69,13.29 14.76,13.37C14.82,13.45 14.89,13.53 14.94,13.62C15,13.71 15.04,13.8 15.09,13.9C15.14,14 15.2,14.08 15.24,14.18C15.41,14.59 15.5,15.03 15.5,15.5V18M16.83,12.86C15.9,11.16 14.08,10 12,10H11.87C11.41,9.19 11.14,8.26 11.14,7.29C11.14,6.31 11.39,5.37 11.86,4.55C12.21,6.41 13.12,8.14 14.5,9.5C15.86,10.88 17.58,11.79 19.45,12.14C18.66,12.6 17.76,12.84 16.83,12.86Z";
var mdiWeatherPartlyCloudy = "M12.74,5.47C15.1,6.5 16.35,9.03 15.92,11.46C17.19,12.56 18,14.19 18,16V16.17C18.31,16.06 18.65,16 19,16A3,3 0 0,1 22,19A3,3 0 0,1 19,22H6A4,4 0 0,1 2,18A4,4 0 0,1 6,14H6.27C5,12.45 4.6,10.24 5.5,8.26C6.72,5.5 9.97,4.24 12.74,5.47M11.93,7.3C10.16,6.5 8.09,7.31 7.31,9.07C6.85,10.09 6.93,11.22 7.41,12.13C8.5,10.83 10.16,10 12,10C12.7,10 13.38,10.12 14,10.34C13.94,9.06 13.18,7.86 11.93,7.3M13.55,3.64C13,3.4 12.45,3.23 11.88,3.12L14.37,1.82L15.27,4.71C14.76,4.29 14.19,3.93 13.55,3.64M6.09,4.44C5.6,4.79 5.17,5.19 4.8,5.63L4.91,2.82L7.87,3.5C7.25,3.71 6.65,4.03 6.09,4.44M18,9.71C17.91,9.12 17.78,8.55 17.59,8L19.97,9.5L17.92,11.73C18.03,11.08 18.05,10.4 18,9.71M3.04,11.3C3.11,11.9 3.24,12.47 3.43,13L1.06,11.5L3.1,9.28C3,9.93 2.97,10.61 3.04,11.3M19,18H16V16A4,4 0 0,0 12,12A4,4 0 0,0 8,16H6A2,2 0 0,0 4,18A2,2 0 0,0 6,20H19A1,1 0 0,0 20,19A1,1 0 0,0 19,18Z";
var mdiWeatherPartlyLightning = "M19,15C18.65,15 18.31,15.06 18,15.17V15C18,13.19 17.19,11.56 15.92,10.46C16.35,8.03 15.1,5.5 12.75,4.47C9.97,3.24 6.72,4.5 5.5,7.25C4.6,9.24 5,11.45 6.27,13H6A4,4 0 0,0 2,17A4,4 0 0,0 6,21H7C7,21 8,21 8,20C8,19 7,19 7,19H6A2,2 0 0,1 4,17A2,2 0 0,1 6,15H8A4,4 0 0,1 12,11A4,4 0 0,1 16,15V17H19A1,1 0 0,1 20,18A1,1 0 0,1 19,19H17C17,19 16,19 16,20C16,21 17,21 17,21H19A3,3 0 0,0 22,18A3,3 0 0,0 19,15M12,9C10.16,9 8.5,9.83 7.41,11.13C6.93,10.22 6.85,9.09 7.31,8.07C8.09,6.31 10.16,5.5 11.93,6.3C13.18,6.86 13.94,8.06 14,9.34C13.38,9.12 12.7,9 12,9M13.55,2.63C13,2.4 12.45,2.23 11.88,2.12L14.37,0.82L15.27,3.71C14.76,3.29 14.19,2.93 13.55,2.63M6.09,3.44C5.6,3.79 5.17,4.19 4.8,4.63L4.91,1.82L7.87,2.5C7.25,2.71 6.65,3.03 6.09,3.44M18,8.71C17.91,8.12 17.78,7.55 17.59,7L19.97,8.5L17.92,10.73C18.03,10.08 18.05,9.4 18,8.71M3.04,10.3C3.11,10.9 3.25,11.47 3.43,12L1.06,10.5L3.1,8.28C3,8.93 2.97,9.61 3.04,10.3M11.8,15H14.25L12.61,18.27H14.25L11.18,24L11.8,19.91H9.75";
var mdiWeatherPartlyRainy = "M12.75,4.47C15.1,5.5 16.35,8.03 15.92,10.46C17.19,11.56 18,13.19 18,15V15.17C18.31,15.06 18.65,15 19,15A3,3 0 0,1 22,18A3,3 0 0,1 19,21H17C17,21 16,21 16,20C16,19 17,19 17,19H19A1,1 0 0,0 20,18A1,1 0 0,0 19,17H16V15A4,4 0 0,0 12,11A4,4 0 0,0 8,15H6A2,2 0 0,0 4,17A2,2 0 0,0 6,19H7C7,19 8,19 8,20C8,21 7,21 7,21H6A4,4 0 0,1 2,17A4,4 0 0,1 6,13H6.27C5,11.45 4.6,9.24 5.5,7.25C6.72,4.5 9.97,3.24 12.75,4.47M11.93,6.3C10.16,5.5 8.09,6.31 7.31,8.07C6.85,9.09 6.93,10.22 7.41,11.13C8.5,9.83 10.16,9 12,9C12.7,9 13.38,9.12 14,9.34C13.94,8.06 13.18,6.86 11.93,6.3M13.55,2.63C13,2.4 12.45,2.23 11.88,2.12L14.37,0.82L15.27,3.71C14.76,3.29 14.19,2.93 13.55,2.63M6.09,3.44C5.6,3.79 5.17,4.19 4.8,4.63L4.91,1.82L7.87,2.5C7.25,2.71 6.65,3.03 6.09,3.44M18,8.71C17.91,8.12 17.78,7.55 17.59,7L19.97,8.5L17.92,10.73C18.03,10.08 18.05,9.4 18,8.71M3.04,10.3C3.11,10.9 3.25,11.47 3.43,12L1.06,10.5L3.1,8.28C3,8.93 2.97,9.61 3.04,10.3M12,18.91C12.59,19.82 13,20.63 13,21A1,1 0 0,1 12,22A1,1 0 0,1 11,21C11,20.63 11.41,19.82 12,18.91M12,15.62C12,15.62 9,19 9,21A3,3 0 0,0 12,24A3,3 0 0,0 15,21C15,19 12,15.62 12,15.62Z";
var mdiWeatherPartlySnowy = "M6,19.03A2,2 0 0,1 4,17.03C4,15.92 4.9,15.03 6,15.03H8C8,12.81 9.79,11.03 12,11.03A4,4 0 0,1 16,15.03V17.03H19A1,1 0 0,1 20,18.03C20,18.57 19.55,19.03 19,19.03H17C17,19.03 16,19.03 16,20.03C16,21.03 17,21.03 17,21.03H19A3,3 0 0,0 22,18.03C22,16.37 20.66,15.03 19,15.03C18.65,15.03 18.31,15.08 18,15.19V15.03C18,13.21 17.19,11.58 15.92,10.5C16.35,8.05 15.1,5.53 12.75,4.5C9.97,3.27 6.72,4.53 5.5,7.28C4.6,9.27 5,11.47 6.27,13.03H6C3.79,13.03 2,14.81 2,17.03A4,4 0 0,0 6,21.03C6,21.03 7,21.03 7,20.03C7,19.03 6,19.03 6,19.03M12,9.03C10.16,9.03 8.5,9.85 7.41,11.16C6.93,10.25 6.85,9.11 7.31,8.09C8.09,6.33 10.16,5.53 11.93,6.32C13.18,6.89 13.94,8.08 14,9.37C13.38,9.15 12.7,9.03 12,9.03M13.55,2.66C13,2.42 12.45,2.26 11.88,2.15L14.37,0.84L15.27,3.73C14.76,3.31 14.19,2.95 13.55,2.66M6.09,3.46C5.6,3.81 5.17,4.21 4.8,4.66L4.91,1.84L7.87,2.53C7.25,2.73 6.65,3.05 6.09,3.46M18,8.73C17.91,8.15 17.78,7.57 17.59,7.03L19.97,8.53L17.92,10.76C18.03,10.1 18.05,9.42 18,8.73M3.04,10.32C3.11,10.92 3.25,11.5 3.43,12.03L1.06,10.53L3.1,8.3C3,8.95 2.97,9.64 3.04,10.32M8.03,21.45C8.13,21.84 8.53,22.06 8.91,21.96L10.5,21.54L10.06,23.11C9.96,23.5 10.19,23.9 10.57,24C10.95,24.1 11.35,23.87 11.45,23.5L11.87,21.91L13.03,23.07C13.3,23.35 13.77,23.35 14.05,23.07C14.33,22.79 14.33,22.32 14.05,22.05L12.89,20.88L14.47,20.47C14.85,20.37 15.08,19.97 15,19.59C14.88,19.21 14.5,19 14.09,19.08L12.5,19.5L12.94,17.93C13.04,17.54 12.82,17.15 12.43,17.05C12.05,16.95 11.66,17.17 11.55,17.56L11.14,19.14L10,17.97C9.7,17.69 9.23,17.69 8.95,17.97C8.68,18.27 8.68,18.72 8.95,19L10.11,20.16L8.54,20.57C8.15,20.68 7.93,21.07 8.03,21.45Z";
var mdiWeatherPartlySnowyRainy = "M13.55,2.66C13,2.42 12.45,2.26 11.88,2.15L14.37,0.84L15.27,3.73C14.76,3.31 14.19,2.95 13.55,2.66M6.09,3.46C5.6,3.81 5.17,4.21 4.8,4.66L4.91,1.84L7.87,2.53C7.25,2.73 6.65,3.05 6.09,3.46M18,8.73C17.91,8.15 17.78,7.57 17.59,7.03L19.97,8.53L17.92,10.76C18.03,10.1 18.05,9.42 18,8.73M3.04,10.32C3.11,10.92 3.25,11.5 3.43,12.03L1.06,10.53L3.1,8.3C3,8.95 2.97,9.64 3.04,10.32M16.68,22.21C16.68,23.2 15.91,24 14.95,24C14,24 13.23,23.2 13.23,22.21C13.23,21.03 14.95,19.03 14.95,19.03C14.95,19.03 16.68,21.03 16.68,22.21M6.03,21.45C5.93,21.07 6.15,20.68 6.54,20.58L8.13,20.15L6.96,19C6.68,18.72 6.68,18.27 6.96,18C7.23,17.7 7.7,17.7 8,18L9.14,19.14L9.55,17.56C9.65,17.17 10.05,16.94 10.43,17.05C10.82,17.15 11.05,17.55 10.93,17.93L10.5,19.5L12.1,19.1C12.5,19 12.88,19.21 13,19.6C13.08,19.97 12.86,20.37 12.47,20.47L10.89,20.89L12.05,22.05C12.33,22.32 12.33,22.79 12.05,23.07C11.77,23.35 11.31,23.35 11.03,23.07L9.87,21.9L9.45,23.5C9.35,23.88 8.95,24.1 8.57,24C8.18,23.9 7.97,23.5 8.06,23.12L8.5,21.55L6.91,21.96C6.5,22.06 6.13,21.84 6.03,21.45M19,15.03C18.65,15.03 18.31,15.08 18,15.19V15.03C18,13.21 17.19,11.58 15.92,10.5C16.35,8.05 15.1,5.53 12.75,4.5C9.97,3.27 6.72,4.53 5.5,7.28C4.6,9.27 5,11.47 6.27,13.03H6C3.79,13.03 2,14.81 2,17.03C2,18.17 2.5,19.2 3.27,19.93V19.93C3.27,19.93 3.97,20.64 4.68,19.93C5.39,19.22 4.68,18.5 4.68,18.5C4.27,18.15 4,17.62 4,17.03C4,15.92 4.9,15.03 6,15.03H8C8,12.81 9.79,11.03 12,11.03A4,4 0 0,1 16,15.03V17.03H19A1,1 0 0,1 20,18.03C20,18.57 19.55,19.03 19,19.03H18C18,19.03 17,19.03 17,20.03C17,21.03 18,21.03 18,21.03H19A3,3 0 0,0 22,18.03C22,16.37 20.66,15.03 19,15.03M12,9.03C10.16,9.03 8.5,9.85 7.41,11.16C6.93,10.25 6.85,9.11 7.31,8.09C8.09,6.33 10.16,5.53 11.93,6.32C13.18,6.89 13.94,8.08 14,9.37C13.38,9.15 12.7,9.03 12,9.03Z";
var mdiWeatherPouring = "M9,12C9.53,12.14 9.85,12.69 9.71,13.22L8.41,18.05C8.27,18.59 7.72,18.9 7.19,18.76C6.65,18.62 6.34,18.07 6.5,17.54L7.78,12.71C7.92,12.17 8.47,11.86 9,12M13,12C13.53,12.14 13.85,12.69 13.71,13.22L11.64,20.95C11.5,21.5 10.95,21.8 10.41,21.66C9.88,21.5 9.56,20.97 9.7,20.43L11.78,12.71C11.92,12.17 12.47,11.86 13,12M17,12C17.53,12.14 17.85,12.69 17.71,13.22L16.41,18.05C16.27,18.59 15.72,18.9 15.19,18.76C14.65,18.62 14.34,18.07 14.5,17.54L15.78,12.71C15.92,12.17 16.47,11.86 17,12M17,10V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.43 4,15.6 3.5,15.32V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12C23,13.5 22.2,14.77 21,15.46V15.46C20.5,15.73 19.91,15.57 19.63,15.09C19.36,14.61 19.5,14 20,13.72V13.73C20.6,13.39 21,12.74 21,12A2,2 0 0,0 19,10H17Z";
var mdiWeatherRainy = "M6,14.03A1,1 0 0,1 7,15.03C7,15.58 6.55,16.03 6,16.03C3.24,16.03 1,13.79 1,11.03C1,8.27 3.24,6.03 6,6.03C7,3.68 9.3,2.03 12,2.03C15.43,2.03 18.24,4.69 18.5,8.06L19,8.03A4,4 0 0,1 23,12.03C23,14.23 21.21,16.03 19,16.03H18C17.45,16.03 17,15.58 17,15.03C17,14.47 17.45,14.03 18,14.03H19A2,2 0 0,0 21,12.03A2,2 0 0,0 19,10.03H17V9.03C17,6.27 14.76,4.03 12,4.03C9.5,4.03 7.45,5.84 7.06,8.21C6.73,8.09 6.37,8.03 6,8.03A3,3 0 0,0 3,11.03A3,3 0 0,0 6,14.03M12,14.15C12.18,14.39 12.37,14.66 12.56,14.94C13,15.56 14,17.03 14,18C14,19.11 13.1,20 12,20A2,2 0 0,1 10,18C10,17.03 11,15.56 11.44,14.94C11.63,14.66 11.82,14.4 12,14.15M12,11.03L11.5,11.59C11.5,11.59 10.65,12.55 9.79,13.81C8.93,15.06 8,16.56 8,18A4,4 0 0,0 12,22A4,4 0 0,0 16,18C16,16.56 15.07,15.06 14.21,13.81C13.35,12.55 12.5,11.59 12.5,11.59";
var mdiWeatherSnowy = "M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M7.88,18.07L10.07,17.5L8.46,15.88C8.07,15.5 8.07,14.86 8.46,14.46C8.85,14.07 9.5,14.07 9.88,14.46L11.5,16.07L12.07,13.88C12.21,13.34 12.76,13.03 13.29,13.17C13.83,13.31 14.14,13.86 14,14.4L13.41,16.59L15.6,16C16.14,15.86 16.69,16.17 16.83,16.71C16.97,17.24 16.66,17.79 16.12,17.93L13.93,18.5L15.54,20.12C15.93,20.5 15.93,21.15 15.54,21.54C15.15,21.93 14.5,21.93 14.12,21.54L12.5,19.93L11.93,22.12C11.79,22.66 11.24,22.97 10.71,22.83C10.17,22.69 9.86,22.14 10,21.6L10.59,19.41L8.4,20C7.86,20.14 7.31,19.83 7.17,19.29C7.03,18.76 7.34,18.21 7.88,18.07Z";
var mdiWeatherSnowyHeavy = "M4,16.36C3.86,15.82 4.18,15.25 4.73,15.11L7,14.5L5.33,12.86C4.93,12.46 4.93,11.81 5.33,11.4C5.73,11 6.4,11 6.79,11.4L8.45,13.05L9.04,10.8C9.18,10.24 9.75,9.92 10.29,10.07C10.85,10.21 11.17,10.78 11,11.33L10.42,13.58L12.67,13C13.22,12.83 13.79,13.15 13.93,13.71C14.08,14.25 13.76,14.82 13.2,14.96L10.95,15.55L12.6,17.21C13,17.6 13,18.27 12.6,18.67C12.2,19.07 11.54,19.07 11.15,18.67L9.5,17L8.89,19.27C8.75,19.83 8.18,20.14 7.64,20C7.08,19.86 6.77,19.29 6.91,18.74L7.5,16.5L5.26,17.09C4.71,17.23 4.14,16.92 4,16.36M1,10A5,5 0 0,1 6,5C7,2.65 9.3,1 12,1C15.43,1 18.24,3.66 18.5,7.03L19,7A4,4 0 0,1 23,11A4,4 0 0,1 19,15A1,1 0 0,1 18,14A1,1 0 0,1 19,13A2,2 0 0,0 21,11A2,2 0 0,0 19,9H17V8A5,5 0 0,0 12,3C9.5,3 7.45,4.82 7.06,7.19C6.73,7.07 6.37,7 6,7A3,3 0 0,0 3,10C3,10.85 3.35,11.61 3.91,12.16C4.27,12.55 4.26,13.16 3.88,13.54C3.5,13.93 2.85,13.93 2.47,13.54C1.56,12.63 1,11.38 1,10M14.03,20.43C14.13,20.82 14.5,21.04 14.91,20.94L16.5,20.5L16.06,22.09C15.96,22.5 16.18,22.87 16.57,22.97C16.95,23.08 17.35,22.85 17.45,22.46L17.86,20.89L19.03,22.05C19.3,22.33 19.77,22.33 20.05,22.05C20.33,21.77 20.33,21.3 20.05,21.03L18.89,19.86L20.46,19.45C20.85,19.35 21.08,18.95 20.97,18.57C20.87,18.18 20.5,17.96 20.09,18.06L18.5,18.5L18.94,16.91C19.04,16.5 18.82,16.13 18.43,16.03C18.05,15.92 17.65,16.15 17.55,16.54L17.14,18.11L15.97,16.95C15.7,16.67 15.23,16.67 14.95,16.95C14.67,17.24 14.67,17.7 14.95,17.97L16.11,19.14L14.54,19.55C14.15,19.65 13.92,20.05 14.03,20.43Z";
var mdiWeatherSnowyRainy = "M18.5,18.67C18.5,19.96 17.5,21 16.25,21C15,21 14,19.96 14,18.67C14,17.12 16.25,14.5 16.25,14.5C16.25,14.5 18.5,17.12 18.5,18.67M4,17.36C3.86,16.82 4.18,16.25 4.73,16.11L7,15.5L5.33,13.86C4.93,13.46 4.93,12.81 5.33,12.4C5.73,12 6.4,12 6.79,12.4L8.45,14.05L9.04,11.8C9.18,11.24 9.75,10.92 10.29,11.07C10.85,11.21 11.17,11.78 11,12.33L10.42,14.58L12.67,14C13.22,13.83 13.79,14.15 13.93,14.71C14.08,15.25 13.76,15.82 13.2,15.96L10.95,16.55L12.6,18.21C13,18.6 13,19.27 12.6,19.67C12.2,20.07 11.54,20.07 11.15,19.67L9.5,18L8.89,20.27C8.75,20.83 8.18,21.14 7.64,21C7.08,20.86 6.77,20.29 6.91,19.74L7.5,17.5L5.26,18.09C4.71,18.23 4.14,17.92 4,17.36M1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,11.85 3.35,12.61 3.91,13.16C4.27,13.55 4.26,14.16 3.88,14.54C3.5,14.93 2.85,14.93 2.47,14.54C1.56,13.63 1,12.38 1,11Z";
var mdiWeatherSunny = "M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M20.64,17L16.5,17.36C17.09,16.85 17.62,16.22 18.04,15.5C18.46,14.77 18.73,14 18.87,13.21L20.64,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56L12,22Z";
var mdiWeatherSunnyAlert = "M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56M19,13V7H21V13H19M19,17V15H21V17";
var mdiWeatherSunnyOff = "M22.11 21.46L2.39 1.73L1.11 3L4.97 6.86L3.34 7L5.11 10.79C5.25 10 5.5 9.24 5.94 8.5C6 8.36 6.13 8.24 6.22 8.11L7.66 9.55C7.25 10.27 7 11.11 7 12C7 14.76 9.24 17 12 17C12.9 17 13.73 16.75 14.45 16.34L20.84 22.73L22.11 21.46M12 15C10.34 15 9 13.66 9 12C9 11.67 9.07 11.36 9.17 11.06L12.94 14.83C12.64 14.93 12.33 15 12 15M18.05 8.5C17.63 7.78 17.1 7.15 16.5 6.64L20.65 7L18.88 10.79C18.74 10 18.47 9.23 18.05 8.5M12 7C14.76 7 17 9.24 17 12C17 12.54 16.89 13.05 16.74 13.54L15 11.78C14.87 10.3 13.7 9.13 12.22 9L10.47 7.27C10.95 7.11 11.46 7 12 7M12 5C11.16 5 10.35 5.15 9.61 5.42L12 2L14.39 5.42C13.65 5.15 12.84 5 12 5M18.87 13.21L20.64 17L20.24 17.04L18.25 15.05C18.54 14.45 18.76 13.84 18.87 13.21M12 19C12.82 19 13.63 18.83 14.37 18.56L12 22L9.59 18.56C10.33 18.83 11.14 19 12 19M5.95 15.5C6.37 16.24 6.91 16.86 7.5 17.37L3.36 17L5.12 13.23C5.26 14 5.53 14.78 5.95 15.5Z";
var mdiWeatherSunset = "M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M5,16H19A1,1 0 0,1 20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17A1,1 0 0,1 5,16M17,20A1,1 0 0,1 18,21A1,1 0 0,1 17,22H7A1,1 0 0,1 6,21A1,1 0 0,1 7,20H17M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7Z";
var mdiWeatherSunsetDown = "M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,20.71L15.82,17.6C16.21,17.21 16.21,16.57 15.82,16.18C15.43,15.79 14.8,15.79 14.41,16.18L12,18.59L9.59,16.18C9.2,15.79 8.57,15.79 8.18,16.18C7.79,16.57 7.79,17.21 8.18,17.6L11.29,20.71C11.5,20.9 11.74,21 12,21C12.26,21 12.5,20.9 12.71,20.71Z";
var mdiWeatherSunsetUp = "M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,16.3L15.82,19.41C16.21,19.8 16.21,20.43 15.82,20.82C15.43,21.21 14.8,21.21 14.41,20.82L12,18.41L9.59,20.82C9.2,21.21 8.57,21.21 8.18,20.82C7.79,20.43 7.79,19.8 8.18,19.41L11.29,16.3C11.5,16.1 11.74,16 12,16C12.26,16 12.5,16.1 12.71,16.3Z";
var mdiWeatherTornado = "M21,5H3A1,1 0 0,1 2,4A1,1 0 0,1 3,3H21A1,1 0 0,1 22,4A1,1 0 0,1 21,5M20,8A1,1 0 0,0 19,7H5A1,1 0 0,0 4,8A1,1 0 0,0 5,9H19A1,1 0 0,0 20,8M21,12A1,1 0 0,0 20,11H10A1,1 0 0,0 9,12A1,1 0 0,0 10,13H20A1,1 0 0,0 21,12M16,16A1,1 0 0,0 15,15H9A1,1 0 0,0 8,16A1,1 0 0,0 9,17H15A1,1 0 0,0 16,16M13,20A1,1 0 0,0 12,19H10A1,1 0 0,0 9,20A1,1 0 0,0 10,21H12A1,1 0 0,0 13,20Z";
var mdiWeatherWindy = "M4,10A1,1 0 0,1 3,9A1,1 0 0,1 4,8H12A2,2 0 0,0 14,6A2,2 0 0,0 12,4C11.45,4 10.95,4.22 10.59,4.59C10.2,5 9.56,5 9.17,4.59C8.78,4.2 8.78,3.56 9.17,3.17C9.9,2.45 10.9,2 12,2A4,4 0 0,1 16,6A4,4 0 0,1 12,10H4M19,12A1,1 0 0,0 20,11A1,1 0 0,0 19,10C18.72,10 18.47,10.11 18.29,10.29C17.9,10.68 17.27,10.68 16.88,10.29C16.5,9.9 16.5,9.27 16.88,8.88C17.42,8.34 18.17,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H5A1,1 0 0,1 4,13A1,1 0 0,1 5,12H19M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z";
var mdiWeatherWindyVariant = "M6,6L6.69,6.06C7.32,3.72 9.46,2 12,2A5.5,5.5 0 0,1 17.5,7.5L17.42,8.45C17.88,8.16 18.42,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H6A4,4 0 0,1 2,10A4,4 0 0,1 6,6M6,8A2,2 0 0,0 4,10A2,2 0 0,0 6,12H19A1,1 0 0,0 20,11A1,1 0 0,0 19,10H15.5V7.5A3.5,3.5 0 0,0 12,4A3.5,3.5 0 0,0 8.5,7.5V8H6M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z";
var mdiWeb = "M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";
var mdiWebBox = "M8.95 13.4H6.58A5.5 5.5 0 0 1 6.58 10.6H8.95A11.56 11.56 0 0 0 8.85 12A11.56 11.56 0 0 0 8.95 13.4M7.16 9.2H9.2A12.06 12.06 0 0 1 10.18 6.71A5.55 5.55 0 0 0 7.16 9.2M16.84 9.2A5.59 5.59 0 0 0 13.81 6.71A10.95 10.95 0 0 1 14.78 9.2M12 17.57A9.5 9.5 0 0 0 13.34 14.8H10.66A9.5 9.5 0 0 0 12 17.57M12 6.42A9.53 9.53 0 0 0 10.66 9.2H13.34A9.53 9.53 0 0 0 12 6.42M7.16 14.8A5.61 5.61 0 0 0 10.18 17.29A12.06 12.06 0 0 1 9.2 14.8M21 5V19A2 2 0 0 1 19 21H5A2 2 0 0 1 3 19V5A2 2 0 0 1 5 3H19A2 2 0 0 1 21 5M19 12A7 7 0 1 0 12 19A7 7 0 0 0 19 12M15.15 12A11.56 11.56 0 0 1 15.05 13.4H17.42A5.5 5.5 0 0 0 17.42 10.6H15.05A11.56 11.56 0 0 1 15.15 12M13.81 17.29A5.62 5.62 0 0 0 16.84 14.8H14.78A10.95 10.95 0 0 1 13.81 17.29M10.36 10.6A8.81 8.81 0 0 0 10.36 13.4H13.64A10.3 10.3 0 0 0 13.75 12A10.21 10.21 0 0 0 13.64 10.6Z";
var mdiWebClock = "M15 12.5V16.5L18 18.5L18.75 17.25L16.5 15.75V12.5H15M22 12.39C22 12.26 22 12.13 22 12C22 6.5 17.5 2 12 2C6.47 2 2 6.5 2 12C2 17.5 6.5 22 12 22C12.13 22 12.24 22 12.37 21.97C13.43 22.62 14.67 23 16 23C19.86 23 23 19.86 23 16C23 14.68 22.62 13.44 22 12.39M19.76 10.11C19.7 10.07 19.65 10.04 19.59 10H19.74C19.75 10.03 19.75 10.07 19.76 10.11M18.92 8H15.97C15.65 6.75 15.19 5.55 14.59 4.44C16.43 5.07 17.96 6.34 18.92 8M12 4.03C12.83 5.23 13.5 6.57 13.91 8H10.09C10.5 6.57 11.17 5.23 12 4.03M9.66 10H12.41C11.16 10.75 10.15 11.88 9.57 13.24C9.53 12.83 9.5 12.42 9.5 12C9.5 11.32 9.56 10.65 9.66 10M9.4 4.44C8.8 5.55 8.35 6.75 8 8H5.08C6.03 6.34 7.57 5.06 9.4 4.44M4.26 14C4.1 13.36 4 12.69 4 12S4.1 10.64 4.26 10H7.64C7.56 10.66 7.5 11.32 7.5 12S7.56 13.34 7.64 14H4.26M5.08 16H8C8.35 17.25 8.8 18.45 9.4 19.56C7.57 18.93 6.03 17.65 5.08 16M16 21C13.24 21 11 18.76 11 16S13.24 11 16 11 21 13.24 21 16 18.76 21 16 21Z";
var mdiWebcam = "M12,2A7,7 0 0,1 19,9A7,7 0 0,1 12,16A7,7 0 0,1 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9A5,5 0 0,0 12,14A5,5 0 0,0 17,9A5,5 0 0,0 12,4M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M6,22A2,2 0 0,1 4,20C4,19.62 4.1,19.27 4.29,18.97L6.11,15.81C7.69,17.17 9.75,18 12,18C14.25,18 16.31,17.17 17.89,15.81L19.71,18.97C19.9,19.27 20,19.62 20,20A2,2 0 0,1 18,22H6Z";
var mdiWebcamOff = "M12 6C13.66 6 15 7.34 15 9C15 9.78 14.7 10.5 14.21 11L10 6.79C10.5 6.3 11.22 6 12 6M12 4C14.76 4 17 6.24 17 9C17 10.33 16.47 11.53 15.62 12.42L17.04 13.84C18.25 12.59 19 10.88 19 9C19 5.13 15.87 2 12 2C10.12 2 8.41 2.75 7.16 3.96L8.58 5.38C9.47 4.53 10.67 4 12 4M22.11 21.46L20.84 22.73L19.46 21.35C19.1 21.75 18.58 22 18 22H6C4.89 22 4 21.11 4 20C4 19.62 4.1 19.27 4.29 18.97L6.11 15.81C7.69 17.17 9.75 18 12 18C13.21 18 14.37 17.75 15.43 17.32L13.85 15.74C13.26 15.91 12.64 16 12 16C8.13 16 5 12.87 5 9C5 8.36 5.09 7.74 5.26 7.15L1.11 3L2.39 1.73L22.11 21.46M12.1 14L7 8.9C7 8.93 7 8.97 7 9C7 11.76 9.24 14 12 14C12.03 14 12.07 14 12.1 14Z";
var mdiWebhook = "M10.46,19C9,21.07 6.15,21.59 4.09,20.15C2.04,18.71 1.56,15.84 3,13.75C3.87,12.5 5.21,11.83 6.58,11.77L6.63,13.2C5.72,13.27 4.84,13.74 4.27,14.56C3.27,16 3.58,17.94 4.95,18.91C6.33,19.87 8.26,19.5 9.26,18.07C9.57,17.62 9.75,17.13 9.82,16.63V15.62L15.4,15.58L15.47,15.47C16,14.55 17.15,14.23 18.05,14.75C18.95,15.27 19.26,16.43 18.73,17.35C18.2,18.26 17.04,18.58 16.14,18.06C15.73,17.83 15.44,17.46 15.31,17.04L11.24,17.06C11.13,17.73 10.87,18.38 10.46,19M17.74,11.86C20.27,12.17 22.07,14.44 21.76,16.93C21.45,19.43 19.15,21.2 16.62,20.89C15.13,20.71 13.9,19.86 13.19,18.68L14.43,17.96C14.92,18.73 15.75,19.28 16.75,19.41C18.5,19.62 20.05,18.43 20.26,16.76C20.47,15.09 19.23,13.56 17.5,13.35C16.96,13.29 16.44,13.36 15.97,13.53L15.12,13.97L12.54,9.2H12.32C11.26,9.16 10.44,8.29 10.47,7.25C10.5,6.21 11.4,5.4 12.45,5.44C13.5,5.5 14.33,6.35 14.3,7.39C14.28,7.83 14.11,8.23 13.84,8.54L15.74,12.05C16.36,11.85 17.04,11.78 17.74,11.86M8.25,9.14C7.25,6.79 8.31,4.1 10.62,3.12C12.94,2.14 15.62,3.25 16.62,5.6C17.21,6.97 17.09,8.47 16.42,9.67L15.18,8.95C15.6,8.14 15.67,7.15 15.27,6.22C14.59,4.62 12.78,3.85 11.23,4.5C9.67,5.16 8.97,7 9.65,8.6C9.93,9.26 10.4,9.77 10.97,10.11L11.36,10.32L8.29,15.31C8.32,15.36 8.36,15.42 8.39,15.5C8.88,16.41 8.54,17.56 7.62,18.05C6.71,18.54 5.56,18.18 5.06,17.24C4.57,16.31 4.91,15.16 5.83,14.67C6.22,14.46 6.65,14.41 7.06,14.5L9.37,10.73C8.9,10.3 8.5,9.76 8.25,9.14Z";
var mdiWebpack = "M20.45 17.39L12.36 21.97V18.4L17.4 15.63L20.45 17.39M21 16.89V7.31L18.04 9V15.18L21 16.89M3.55 17.39L11.64 21.96V18.4L6.6 15.63L3.55 17.39M3 16.89V7.31L5.96 9V15.18L3 16.89M3.35 6.69L11.64 2V5.45L6.33 8.37L6.28 8.39L3.35 6.69M20.65 6.69L12.36 2V5.45L17.67 8.38L17.71 8.4L20.65 6.69M11.64 17.59L6.67 14.85V9.44L11.64 12.31V17.59M12.36 17.59L17.33 14.86V9.44L12.36 12.31V17.59M7 8.81L12 6.06L17 8.81L12 11.69L7 8.81Z";
var mdiWebrtc = "M12 2C14.44 2 16.5 3.75 16.91 6.07L17.75 6C20.5 6 22.75 8.24 22.75 11C22.75 12.89 21.7 14.53 20.16 15.38C20.54 16.09 20.75 16.89 20.75 17.75C20.75 20.5 18.5 22.75 15.75 22.75C14.26 22.75 12.92 22.1 12 21.06C11.08 22.1 9.74 22.75 8.25 22.75C5.5 22.75 3.25 20.5 3.25 17.75C3.25 16.89 3.47 16.09 3.84 15.38C2.3 14.53 1.25 12.89 1.25 11C1.25 8.24 3.5 6 6.25 6L7.09 6.07C7.5 3.75 9.56 2 12 2M6.75 20.25L13.66 17H17C17.55 17 18 16.55 18 16V9C18 8.45 17.55 8 17 8H7C6.45 8 6 8.45 6 9V16C6 16.55 6.45 17 7 17H7.77L6.75 20.25Z";
var mdiWechat = "M9.5,4C5.36,4 2,6.69 2,10C2,11.89 3.08,13.56 4.78,14.66L4,17L6.5,15.5C7.39,15.81 8.37,16 9.41,16C9.15,15.37 9,14.7 9,14C9,10.69 12.13,8 16,8C16.19,8 16.38,8 16.56,8.03C15.54,5.69 12.78,4 9.5,4M6.5,6.5A1,1 0 0,1 7.5,7.5A1,1 0 0,1 6.5,8.5A1,1 0 0,1 5.5,7.5A1,1 0 0,1 6.5,6.5M11.5,6.5A1,1 0 0,1 12.5,7.5A1,1 0 0,1 11.5,8.5A1,1 0 0,1 10.5,7.5A1,1 0 0,1 11.5,6.5M16,9C12.69,9 10,11.24 10,14C10,16.76 12.69,19 16,19C16.67,19 17.31,18.92 17.91,18.75L20,20L19.38,18.13C20.95,17.22 22,15.71 22,14C22,11.24 19.31,9 16,9M14,11.5A1,1 0 0,1 15,12.5A1,1 0 0,1 14,13.5A1,1 0 0,1 13,12.5A1,1 0 0,1 14,11.5M18,11.5A1,1 0 0,1 19,12.5A1,1 0 0,1 18,13.5A1,1 0 0,1 17,12.5A1,1 0 0,1 18,11.5Z";
var mdiWeight = "M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5Z";
var mdiWeightGram = "M19.95,10.56C19.75,9.67 18.95,9 18,9H15.46C15.81,8.41 16,7.73 16,7A4,4 0 0,0 12,3A4,4 0 0,0 8,7C8,7.73 8.19,8.41 8.54,9H6C5.05,9 4.25,9.67 4.05,10.56C2.04,18.57 2,18.78 2,19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19C22,18.78 21.96,18.57 19.95,10.56M12,5A2,2 0 0,1 14,7A2,2 0 0,1 12,9A2,2 0 0,1 10,7A2,2 0 0,1 12,5M15,13H11V17H13V14H15V19H11C9.89,19 9,18.11 9,17V13C9,11.89 9.89,11 11,11H15V13Z";
var mdiWeightKilogram = "M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M6,11V19H8V16.5L9,17.5V19H11V17L9,15L11,13V11H9V12.5L8,13.5V11H6M15,11C13.89,11 13,11.89 13,13V17C13,18.11 13.89,19 15,19H18V14H16V17H15V13H18V11H15Z";
var mdiWeightLifter = "M12 5C10.89 5 10 5.89 10 7S10.89 9 12 9 14 8.11 14 7 13.11 5 12 5M22 1V6H20V4H4V6H2V1H4V3H20V1H22M15 11.26V23H13V18H11V23H9V11.26C6.93 10.17 5.5 8 5.5 5.5L5.5 5H7.5L7.5 5.5C7.5 8 9.5 10 12 10S16.5 8 16.5 5.5L16.5 5H18.5L18.5 5.5C18.5 8 17.07 10.17 15 11.26Z";
var mdiWeightPound = "M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M6,11V19H11V17H8V11H6M13,11V19H16C17.11,19 18,18.11 18,17V16.5C18,15.93 17.75,15.38 17.32,15C17.75,14.62 18,14.07 18,13.5V13C18,11.89 17.11,11 16,11H13M15,13H16V14H15V13M15,16H16V17H15V16Z";
var mdiWhatsapp = "M12.04 2C6.58 2 2.13 6.45 2.13 11.91C2.13 13.66 2.59 15.36 3.45 16.86L2.05 22L7.3 20.62C8.75 21.41 10.38 21.83 12.04 21.83C17.5 21.83 21.95 17.38 21.95 11.92C21.95 9.27 20.92 6.78 19.05 4.91C17.18 3.03 14.69 2 12.04 2M12.05 3.67C14.25 3.67 16.31 4.53 17.87 6.09C19.42 7.65 20.28 9.72 20.28 11.92C20.28 16.46 16.58 20.15 12.04 20.15C10.56 20.15 9.11 19.76 7.85 19L7.55 18.83L4.43 19.65L5.26 16.61L5.06 16.29C4.24 15 3.8 13.47 3.8 11.91C3.81 7.37 7.5 3.67 12.05 3.67M8.53 7.33C8.37 7.33 8.1 7.39 7.87 7.64C7.65 7.89 7 8.5 7 9.71C7 10.93 7.89 12.1 8 12.27C8.14 12.44 9.76 14.94 12.25 16C12.84 16.27 13.3 16.42 13.66 16.53C14.25 16.72 14.79 16.69 15.22 16.63C15.7 16.56 16.68 16.03 16.89 15.45C17.1 14.87 17.1 14.38 17.04 14.27C16.97 14.17 16.81 14.11 16.56 14C16.31 13.86 15.09 13.26 14.87 13.18C14.64 13.1 14.5 13.06 14.31 13.3C14.15 13.55 13.67 14.11 13.53 14.27C13.38 14.44 13.24 14.46 13 14.34C12.74 14.21 11.94 13.95 11 13.11C10.26 12.45 9.77 11.64 9.62 11.39C9.5 11.15 9.61 11 9.73 10.89C9.84 10.78 10 10.6 10.1 10.45C10.23 10.31 10.27 10.2 10.35 10.04C10.43 9.87 10.39 9.73 10.33 9.61C10.27 9.5 9.77 8.26 9.56 7.77C9.36 7.29 9.16 7.35 9 7.34C8.86 7.34 8.7 7.33 8.53 7.33Z";
var mdiWheelBarrow = "M18 15.5C18.83 15.5 19.5 16.17 19.5 17S18.83 18.5 18 18.5 16.5 17.83 16.5 17 17.17 15.5 18 15.5M18 14C16.34 14 15 15.34 15 17S16.34 20 18 20C19.66 20 21 18.66 21 17S19.66 14 18 14M7 8L5 5H2V7H5.13L8 11.3V20H10L12.57 15H14.55C15.25 13.81 16.5 13 18 13C18.88 13 19.69 13.29 20.35 13.78L22 8H7M9.39 19H9V12.8L9.87 14.11C10.23 14.64 10.82 14.96 11.45 15L9.39 19Z";
var mdiWheelchairAccessibility = "M18.4,11.2L14.3,11.4L16.6,8.8C16.8,8.5 16.9,8 16.8,7.5C16.7,7.2 16.6,6.9 16.3,6.7L10.9,3.5C10.5,3.2 9.9,3.3 9.5,3.6L6.8,6.1C6.3,6.6 6.2,7.3 6.7,7.8C7.1,8.3 7.9,8.3 8.4,7.9L10.4,6.1L12.3,7.2L8.1,11.5C8,11.6 8,11.7 7.9,11.7C7.4,11.9 6.9,12.1 6.5,12.4L8,13.9C8.5,13.7 9,13.5 9.5,13.5C11.4,13.5 13,15.1 13,17C13,17.6 12.9,18.1 12.6,18.5L14.1,20C14.7,19.1 15,18.1 15,17C15,15.8 14.6,14.6 13.9,13.7L17.2,13.4L17,18.2C16.9,18.9 17.4,19.4 18.1,19.5H18.2C18.8,19.5 19.3,19 19.4,18.4L19.6,12.5C19.6,12.2 19.5,11.8 19.3,11.6C19,11.3 18.7,11.2 18.4,11.2M18,5.5A2,2 0 0,0 20,3.5A2,2 0 0,0 18,1.5A2,2 0 0,0 16,3.5A2,2 0 0,0 18,5.5M12.5,21.6C11.6,22.2 10.6,22.5 9.5,22.5C6.5,22.5 4,20 4,17C4,15.9 4.3,14.9 4.9,14L6.4,15.5C6.2,16 6,16.5 6,17C6,18.9 7.6,20.5 9.5,20.5C10.1,20.5 10.6,20.4 11,20.1L12.5,21.6Z";
var mdiWhistle = "M8.5,9A6.5,6.5 0 0,0 2,15.5A6.5,6.5 0 0,0 8.5,22A6.5,6.5 0 0,0 15,15.5V13.91L22,12V9H11V11H9V9H8.5M11,2V7H9V2H11M6.35,7.28C5.68,7.44 5.04,7.68 4.43,8L2.14,4.88L3.76,3.7L6.35,7.28M17.86,4.88L16.32,7H13.85L16.24,3.7L17.86,4.88Z";
var mdiWhistleOutline = "M3.76 3.7L2.14 4.88L4.43 8A8.23 8.23 0 0 1 6.35 7.28M11 9V11H18V11.29L13 12.71V15.5A4.5 4.5 0 1 1 8.5 11H9V9H8.5A6.5 6.5 0 1 0 15 15.5V13.91L22 12V9M16.24 3.7L13.85 7H16.32L17.86 4.88M9 2V7H11V2Z";
var mdiWhiteBalanceAuto = "M10.3,16L9.6,14H6.4L5.7,16H3.8L7,7H9L12.2,16M22,7L20.8,13.29L19.3,7H17.7L16.21,13.29L15,7H14.24C12.77,5.17 10.5,4 8,4A8,8 0 0,0 0,12A8,8 0 0,0 8,20C11.13,20 13.84,18.19 15.15,15.57L15.25,16H17L18.5,9.9L20,16H21.75L23.8,7M6.85,12.65H9.15L8,9L6.85,12.65Z";
var mdiWhiteBalanceIncandescent = "M17.24,18.15L19.04,19.95L20.45,18.53L18.66,16.74M20,12.5H23V10.5H20M15,6.31V1.5H9V6.31C7.21,7.35 6,9.28 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,9.28 16.79,7.35 15,6.31M4,10.5H1V12.5H4M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M3.55,18.53L4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53Z";
var mdiWhiteBalanceIridescent = "M4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53M3.55,4.46L5.34,6.26L6.76,4.84L4.96,3.05M20.45,18.53L18.66,16.74L17.24,18.15L19.04,19.95M13,22.45V19.5H11V22.45C11.32,22.45 13,22.45 13,22.45M19.04,3.05L17.24,4.84L18.66,6.26L20.45,4.46M11,3.5H13V0.55H11M5,14.5H19V8.5H5V14.5Z";
var mdiWhiteBalanceSunny = "M3.55,18.54L4.96,19.95L6.76,18.16L5.34,16.74M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M12,5.5A6,6 0 0,0 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,8.18 15.31,5.5 12,5.5M20,12.5H23V10.5H20M17.24,18.16L19.04,19.95L20.45,18.54L18.66,16.74M20.45,4.46L19.04,3.05L17.24,4.84L18.66,6.26M13,0.55H11V3.5H13M4,10.5H1V12.5H4M6.76,4.84L4.96,3.05L3.55,4.46L5.34,6.26L6.76,4.84Z";
var mdiWidgets = "M3,3H11V7.34L16.66,1.69L22.31,7.34L16.66,13H21V21H13V13H16.66L11,7.34V11H3V3M3,13H11V21H3V13Z";
var mdiWidgetsOutline = "M16.7 4.5L19.5 7.3L16.7 10.1L13.9 7.3L16.7 4.5M9 5V9H5V5H9M19 15V19H15V15H19M16.7 1.7L11 7.3L16.7 13H13V21H21V13H16.7L22.3 7.3L16.7 1.7M11 3H3V11H11V3M9 15V19H5V15H9M11 13H3V21H11V13Z";
var mdiWifi = "M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z";
var mdiWifiAlert = "M20.24 5H18V7.25C16.16 6.45 14.13 6 12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3C14.97 3 17.77 3.73 20.24 5M8.4 16.2L12 21L15.6 16.2C14.6 15.45 13.35 15 12 15S9.4 15.45 8.4 16.2M4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12S15.9 12.67 17.4 13.8L18 13V10.62C16.23 9.59 14.19 9 12 9C9.3 9 6.81 9.89 4.8 11.4M20 17H22V15H20V17M20 7V13H22V7H20Z";
var mdiWifiArrowDown = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M16.84 13.41C17.18 13.27 17.55 13.17 17.92 13.1L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.78 12 15.44 12.5 16.84 13.41M20 16H18V20H16L19 23L22 20H20V16Z";
var mdiWifiArrowLeft = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M18 16L15 19L18 22V20H22V18H18V16Z";
var mdiWifiArrowLeftRight = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M18 18.5L15 21L18 23.5V22H22V20H18V18.5M23 17L20 14.5V16H16V18H20V19.5L23 17Z";
var mdiWifiArrowRight = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M16.84 13.41C17.18 13.27 17.55 13.17 17.92 13.1L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.78 12 15.44 12.5 16.84 13.41M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M23 19L20 16V18H16V20H20V22L23 19Z";
var mdiWifiArrowUp = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M16 18H18V22H20V18H22L19 15L16 18Z";
var mdiWifiArrowUpDown = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M17 15L14.5 18H16V22H18V18H19.5L17 15M22 20V16H20V20H18.5L21 23L23.5 20H22Z";
var mdiWifiCancel = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M15.53 12.72C16.42 12.26 17.43 12 18.5 12C18.58 12 18.66 12 18.74 12L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.26 12 14.45 12.26 15.53 12.72M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L12.34 20.54C12.13 19.9 12 19.22 12 18.5C12 17.24 12.36 16.08 13 15.08C12.66 15.03 12.33 15 12 15M23 18.5C23 21 21 23 18.5 23S14 21 14 18.5 16 14 18.5 14 23 16 23 18.5M20 21.08L15.92 17C15.65 17.42 15.5 17.94 15.5 18.5C15.5 20.16 16.84 21.5 18.5 21.5C19.06 21.5 19.58 21.35 20 21.08M21.5 18.5C21.5 16.84 20.16 15.5 18.5 15.5C17.94 15.5 17.42 15.65 17 15.92L21.08 20C21.35 19.58 21.5 19.06 21.5 18.5Z";
var mdiWifiCheck = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M17.75 19.43L16.16 17.84L15 19L17.75 22L22.5 17.25L21.34 15.84L17.75 19.43Z";
var mdiWifiCog = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L18.74 12C17.66 12.05 16.63 12.33 15.73 12.81C14.6 12.29 13.33 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L12.22 20.71C12.08 20.16 12 19.59 12 19C12 17.57 12.43 16.24 13.17 15.13C12.79 15.05 12.4 15 12 15M23.8 20.4C23.9 20.4 23.9 20.5 23.8 20.6L22.8 22.3C22.7 22.4 22.6 22.4 22.5 22.4L21.3 22C21 22.2 20.8 22.3 20.5 22.5L20.3 23.8C20.3 23.9 20.2 24 20.1 24H18.1C18 24 17.9 23.9 17.8 23.8L17.6 22.5C17.3 22.4 17 22.2 16.8 22L15.6 22.5C15.5 22.5 15.4 22.5 15.3 22.4L14.3 20.7C14.2 20.6 14.3 20.5 14.4 20.4L15.5 19.6V18.6L14.4 17.8C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z";
var mdiWifiLock = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M17.4 10.29C15.77 9.47 13.94 9 12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C12.97 12 13.9 12.16 14.78 12.44C15.34 11.45 16.27 10.68 17.4 10.29M8.4 16.2L12 21L13 19.67V17.2C13 16.5 13.27 15.81 13.7 15.26C13.16 15.1 12.59 15 12 15C10.65 15 9.4 15.45 8.4 16.2M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z";
var mdiWifiLockOpen = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M16.31 9.81C14.97 9.29 13.5 9 12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C12.83 12 13.63 12.12 14.39 12.33C14.7 11.3 15.38 10.41 16.31 9.81M8.4 16.2L12 21L13 19.67V17.2C13 16.5 13.27 15.81 13.7 15.26C13.16 15.1 12.59 15 12 15C10.65 15 9.4 15.45 8.4 16.2M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z";
var mdiWifiMarker = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M13 15.09C12.69 15.03 12.35 15 12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.8 18.6C13.33 17.58 13 16.5 13 15.5C13 15.36 13 15.23 13 15.09M12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C12.73 12 13.43 12.09 14.1 12.25C14.86 11.25 15.93 10.5 17.17 10.18C15.6 9.43 13.85 9 12 9M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z";
var mdiWifiMinus = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M15 18V20H23V18H15Z";
var mdiWifiOff = "M2.28,3L1,4.27L2.47,5.74C2.04,6 1.61,6.29 1.2,6.6L3,9C3.53,8.6 4.08,8.25 4.66,7.93L6.89,10.16C6.15,10.5 5.44,10.91 4.8,11.4L6.6,13.8C7.38,13.22 8.26,12.77 9.2,12.47L11.75,15C10.5,15.07 9.34,15.5 8.4,16.2L12,21L14.46,17.73L17.74,21L19,19.72M12,3C9.85,3 7.8,3.38 5.9,4.07L8.29,6.47C9.5,6.16 10.72,6 12,6C15.38,6 18.5,7.11 21,9L22.8,6.6C19.79,4.34 16.06,3 12,3M12,9C11.62,9 11.25,9 10.88,9.05L14.07,12.25C15.29,12.53 16.43,13.07 17.4,13.8L19.2,11.4C17.2,9.89 14.7,9 12,9Z";
var mdiWifiPlus = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M16.84 13.41C17.18 13.27 17.55 13.17 17.92 13.1L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.78 12 15.44 12.5 16.84 13.41M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z";
var mdiWifiRefresh = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L18.74 12C18.66 12 18.58 12 18.5 12C17.43 12 16.42 12.26 15.53 12.72C14.45 12.26 13.26 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L12.34 20.54C12.13 19.9 12 19.22 12 18.5C12 17.24 12.36 16.08 13 15.08C12.66 15.03 12.33 15 12 15M18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5Z";
var mdiWifiRemove = "M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L17.92 13.1C17.55 13.17 17.18 13.27 16.84 13.41C15.44 12.5 13.78 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M21.12 15.46L19 17.59L16.88 15.47L15.47 16.88L17.59 19L15.47 21.12L16.88 22.54L19 20.41L21.12 22.54L22.54 21.12L20.41 19L22.54 16.88L21.12 15.46Z";
var mdiWifiSettings = "M12 20L8.4 15.2C9.4 14.45 10.65 14 12 14S14.6 14.45 15.6 15.2L12 20M4.8 10.4L6.6 12.8C8.1 11.67 9.97 11 12 11S15.9 11.67 17.4 12.8L19.2 10.4C17.19 8.89 14.7 8 12 8S6.81 8.89 4.8 10.4M12 2C7.95 2 4.21 3.34 1.2 5.6L3 8C5.5 6.12 8.62 5 12 5S18.5 6.12 21 8L22.8 5.6C19.79 3.34 16.05 2 12 2M7 24H9V22H7V24M15 24H17V22H15V24M11 24H13V22H11V24Z";
var mdiWifiStar = "M12,6C8.6,6 5.5,7.1 3,9L1.2,6.6C4.2,4.3 8,3 12,3C16,3 19.8,4.3 22.8,6.6L21,9C18.5,7.1 15.4,6 12,6M13,19C13,17.7 13.4,16.4 14.2,15.4C13.5,15.2 12.8,15 12,15C10.7,15 9.4,15.5 8.4,16.2L12,21L13,19.6C13,19.4 13,19.2 13,19M16.8,13.4C17.1,13.3 17.5,13.2 17.9,13.1L19.2,11.4C17.2,9.9 14.7,9 12,9C9.3,9 6.8,9.9 4.8,11.4L6.6,13.8C8.1,12.7 10,12 12,12C13.8,12 15.4,12.5 16.8,13.4M16.5,22.6L17.2,19.8L15,17.9L17.9,17.7L19,15L20.1,17.6L23,17.8L20.8,19.7L21.5,22.5L19,21.1L16.5,22.6Z";
var mdiWifiStrength1 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L15.61,13.81C14.5,13.28 13.25,13 12,13C10.75,13 9.5,13.28 8.39,13.8L3.27,7.44C5.91,5.85 8.93,5 12,5Z";
var mdiWifiStrength1Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V9.6L15.6 13.8C14.5 13.3 13.2 13 12 13S9.5 13.3 8.4 13.8L3.3 7.4C5.9 5.8 8.9 5 12 5S18.1 5.9 20.7 7.4L20.3 8H22.9C23.1 7.7 23.5 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18";
var mdiWifiStrength1Lock = "M12 13C12.8 13 13.61 13.13 14.38 13.36C14.28 13.73 14.2 14.11 14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L20.91 10.39C20.32 10.14 19.68 10 19 10C18.87 10 18.75 10.03 18.62 10.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L8.38 13.8C9.5 13.28 10.74 13 12 13M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z";
var mdiWifiStrength1LockOpen = "M12 13C12.74 13 13.5 13.12 14.22 13.31C14.22 13.38 14.2 13.44 14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.86 9.33 20.16 9.11 19.42 9.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L8.38 13.8C9.5 13.28 10.74 13 12 13M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z";
var mdiWifiStrength2 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L17.5,11.43C16.26,10.74 14.37,10 12,10C9.62,10 7.74,10.75 6.5,11.43L3.27,7.44C5.91,5.85 8.93,5 12,5Z";
var mdiWifiStrength2Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V9.6L17.5 11.4C16.3 10.7 14.4 10 12 10C9.6 10 7.7 10.8 6.5 11.4L3.3 7.4C5.9 5.8 8.9 5 12 5S18.1 5.9 20.7 7.4L20.3 8H22.9C23.1 7.7 23.5 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18";
var mdiWifiStrength2Lock = "M14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L20.91 10.39C20.32 10.14 19.68 10 19 10C18.87 10 18.74 10.03 18.61 10.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L6.5 11.43C7.73 10.75 9.61 10 12 10C13.68 10 15.12 10.38 16.26 10.84C15.03 11.67 14.2 13 14.2 14.5M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z";
var mdiWifiStrength2LockOpen = "M15.44 10.55C14.68 11.35 14.2 12.38 14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.86 9.33 20.16 9.1 19.41 9.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L6.5 11.43C7.73 10.75 9.61 10 12 10C13.29 10 14.45 10.23 15.44 10.55M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z";
var mdiWifiStrength3 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L18.77,9.88C17.26,9 14.88,8 12,8C9,8 6.68,9 5.21,9.84L3.27,7.44C5.91,5.85 8.93,5 12,5Z";
var mdiWifiStrength3Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V9.6L18.8 9.9C17.3 9 14.9 8 12 8C9 8 6.7 9 5.2 9.8L3.3 7.4C5.9 5.8 8.9 5 12 5S18.1 5.9 20.7 7.4L20.3 8H22.9C23.1 7.7 23.5 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18";
var mdiWifiStrength3Lock = "M19 10C19.68 10 20.32 10.14 20.91 10.39L23.64 7C20.31 4.41 16.2 3 12 3C7.78 3 3.69 4.41 .365 7C4.39 12.06 7.88 16.37 12 21.5L13 20.24V17.2C13 16.24 13.5 15.34 14.2 14.74V14.5C14.2 12.06 16.4 10 19 10M12 8C9 8 6.67 9 5.2 9.84L3.26 7.44C5.9 5.85 8.91 5 12 5S18.08 5.86 20.7 7.45L18.76 9.88C17.25 9 14.87 8 12 8M21.8 16V14.5C21.8 13.1 20.4 12 19 12S16.2 13.1 16.2 14.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16M20.5 16H17.5V14.5C17.5 13.7 18.2 13.2 19 13.2S20.5 13.7 20.5 14.5V16Z";
var mdiWifiStrength3LockOpen = "M14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.86 9.33 20.17 9.11 19.42 9.04L20.7 7.45C18.08 5.86 15.06 5 12 5S5.9 5.85 3.26 7.44L5.2 9.84C6.67 9 9 8 12 8C14.18 8 16.08 8.58 17.53 9.25C15.63 9.85 14.2 11.54 14.2 13.5M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z";
var mdiWifiStrength4 = "M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3Z";
var mdiWifiStrength4Alert = "M12 3C7.8 3 3.7 4.4 .4 7C4.4 12.1 7.9 16.4 12 21.5C14.4 18.5 16.7 15.7 19 12.8V8H22.8C23 7.7 23.4 7.3 23.6 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18";
var mdiWifiStrength4Lock = "M14.2 14.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L20.91 10.39C20.32 10.14 19.68 10 19 10C16.4 10 14.2 12.06 14.2 14.5M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z";
var mdiWifiStrength4LockOpen = "M14.2 13.5V14.74C13.5 15.34 13 16.24 13 17.2V20.24L12 21.5C7.88 16.37 4.39 12.06 .365 7C3.69 4.41 7.78 3 12 3C16.2 3 20.31 4.41 23.64 7L21.5 9.69C20.75 9.26 19.9 9 19 9C16.4 9 14.2 11.06 14.2 13.5M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z";
var mdiWifiStrengthAlertOutline = "M12 3C7.8 3 3.7 4.4 .4 7C4.3 11.8 8.2 16.7 12 21.5C14.3 18.6 16.7 15.7 19 12.8V9.6L12 18.3L3.3 7.4C5.9 5.8 8.9 5 12 5C15.1 5 18.1 5.9 20.7 7.4L20.3 8H22.9C23.2 7.7 23.4 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18";
var mdiWifiStrengthLockOpenOutline = "M23.65 7H23.64C22.92 7.9 22.2 8.79 21.5 9.69C20.87 9.33 20.17 9.11 19.43 9.04L20.71 7.45C18.09 5.86 15.07 5 12 5C8.91 5 5.9 5.85 3.27 7.44L12 18.3L13 17C13 17.08 13 17.14 13 17.2V20.25L12 21.5C8.13 16.66 4.24 11.83 .355 7H.375C3.7 4.41 7.79 3 12 3C16.22 3 20.32 4.41 23.65 7M21.8 16H17.5V13.5C17.5 12.7 18.2 12.2 19 12.2S20.5 12.7 20.5 13.5V14H21.8V13.5C21.8 12.1 20.4 11 19 11S16.2 12.1 16.2 13.5V16C15.6 16 15 16.6 15 17.2V20.7C15 21.4 15.6 22 16.2 22H21.7C22.4 22 23 21.4 23 20.8V17.3C23 16.6 22.4 16 21.8 16Z";
var mdiWifiStrengthLockOutline = "M23.65 7H23.64L20.91 10.39C20.32 10.14 19.68 10 19 10C18.87 10 18.75 10.03 18.63 10.04L20.71 7.45C18.09 5.86 15.07 5 12 5C8.91 5 5.9 5.85 3.27 7.44L12 18.3L13 17C13 17.08 13 17.14 13 17.2V20.25L12 21.5C8.13 16.66 4.24 11.83 .355 7H.375C3.7 4.41 7.79 3 12 3C16.22 3 20.32 4.41 23.65 7M23 17.3V20.8C23 21.4 22.4 22 21.7 22H16.2C15.6 22 15 21.4 15 20.7V17.2C15 16.6 15.6 16 16.2 16V14.5C16.2 13.1 17.6 12 19 12S21.8 13.1 21.8 14.5V16C22.4 16 23 16.6 23 17.3M20.5 14.5C20.5 13.7 19.8 13.2 19 13.2S17.5 13.7 17.5 14.5V16H20.5V14.5Z";
var mdiWifiStrengthOff = "M3.27,1.44L2,2.72L4.05,4.77C2.75,5.37 1.5,6.11 0.38,7C4.41,12.06 12,21.5 12,21.5L15.91,16.63L19.23,19.95L20.5,18.68M12,3C10.6,3 9.21,3.17 7.86,3.5L18.18,13.81C20,11.5 22.05,9 23.65,7C20.32,4.41 16.22,3 12,3Z";
var mdiWifiStrengthOffOutline = "M3.27,1.44L2,2.72L4.05,4.77C2.75,5.37 1.5,6.11 0.38,7C4.2,11.8 8.14,16.67 12,21.5L15.91,16.63L19.23,19.95L20.5,18.68C14.87,13.04 3.27,1.44 3.27,1.44M12,3C10.6,3 9.21,3.17 7.86,3.5L9.56,5.19C10.37,5.07 11.18,5 12,5C15.07,5 18.09,5.86 20.71,7.45L16.76,12.38L18.18,13.8C20.08,11.43 22,9 23.65,7C20.32,4.41 16.22,3 12,3M5.57,6.29L14.5,15.21L12,18.3L3.27,7.44C4,7 4.78,6.61 5.57,6.29Z";
var mdiWifiStrengthOutline = "M12,3C7.79,3 3.7,4.41 0.38,7H0.36C4.24,11.83 8.13,16.66 12,21.5C15.89,16.66 19.77,11.83 23.64,7H23.65C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L12,18.3L3.27,7.44C5.9,5.85 8.92,5 12,5Z";
var mdiWifiSync = "M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.26 19.32C13.1 18.74 13 18.13 13 17.5C13 16.69 13.16 15.91 13.43 15.19C12.97 15.08 12.5 15 12 15M15.23 12.61C16.19 11.77 17.38 11.22 18.7 11.05C16.78 9.76 14.5 9 12 9C9.3 9 6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.14 12 14.23 12.22 15.23 12.61M19 20C17.62 20 16.5 18.88 16.5 17.5C16.5 17.1 16.59 16.72 16.76 16.38L15.67 15.29C15.25 15.92 15 16.68 15 17.5C15 19.71 16.79 21.5 19 21.5V23L21.25 20.75L19 18.5V20M19 13.5V12L16.75 14.25L19 16.5V15C20.38 15 21.5 16.12 21.5 17.5C21.5 17.9 21.41 18.28 21.24 18.62L22.33 19.71C22.75 19.08 23 18.32 23 17.5C23 15.29 21.21 13.5 19 13.5Z";
var mdiWikipedia = "M14.97,18.95L12.41,12.92C11.39,14.91 10.27,17 9.31,18.95C9.3,18.96 8.84,18.95 8.84,18.95C7.37,15.5 5.85,12.1 4.37,8.68C4.03,7.84 2.83,6.5 2,6.5C2,6.4 2,6.18 2,6.05H7.06V6.5C6.46,6.5 5.44,6.9 5.7,7.55C6.42,9.09 8.94,15.06 9.63,16.58C10.1,15.64 11.43,13.16 12,12.11C11.55,11.23 10.13,7.93 9.71,7.11C9.39,6.57 8.58,6.5 7.96,6.5C7.96,6.35 7.97,6.25 7.96,6.06L12.42,6.07V6.47C11.81,6.5 11.24,6.71 11.5,7.29C12.1,8.53 12.45,9.42 13,10.57C13.17,10.23 14.07,8.38 14.5,7.41C14.76,6.76 14.37,6.5 13.29,6.5C13.3,6.38 13.3,6.17 13.3,6.07C14.69,6.06 16.78,6.06 17.15,6.05V6.47C16.44,6.5 15.71,6.88 15.33,7.46L13.5,11.3C13.68,11.81 15.46,15.76 15.65,16.2L19.5,7.37C19.2,6.65 18.34,6.5 18,6.5C18,6.37 18,6.2 18,6.05L22,6.08V6.1L22,6.5C21.12,6.5 20.57,7 20.25,7.75C19.45,9.54 17,15.24 15.4,18.95C15.4,18.95 14.97,18.95 14.97,18.95Z";
var mdiWindTurbine = "M13.33,11.67L16.21,14.58C17.62,13.16 16.21,11.75 16.21,11.75L14.72,10.24C14.9,9.86 15,9.44 15,9C15,7.95 14.46,7.03 13.64,6.5L15,2.11C13.09,1.53 12.5,3.44 12.5,3.44L11.69,6.03C10.46,6.16 9.46,7 9.13,8.18L4.67,9.63C5.31,11.53 7.2,10.9 7.2,10.9L9.27,10.23C9.61,10.97 10.23,11.54 11,11.82V19C11,19 9,19 9,21C9,21.5 9,21.81 9,22H15V21C15,21 15,19 13,19V11.82C13.12,11.78 13.23,11.72 13.33,11.67M10.5,9A1.5,1.5 0 0,1 12,7.5A1.5,1.5 0 0,1 13.5,9A1.5,1.5 0 0,1 12,10.5A1.5,1.5 0 0,1 10.5,9Z";
var mdiWindowClose = "M13.46,12L19,17.54V19H17.54L12,13.46L6.46,19H5V17.54L10.54,12L5,6.46V5H6.46L12,10.54L17.54,5H19V6.46L13.46,12Z";
var mdiWindowClosed = "M6,11H10V9H14V11H18V4H6V11M18,13H6V20H18V13M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z";
var mdiWindowClosedVariant = "M21 20V2H3V20H1V23H23V20M19 4V11H13V4M5 4H11V11H5M5 20V13H11V20M13 20V13H19V20Z";
var mdiWindowMaximize = "M4,4H20V20H4V4M6,8V18H18V8H6Z";
var mdiWindowMinimize = "M20,14H4V10H20";
var mdiWindowOpen = "M6,8H10V6H14V8H18V4H6V8M18,10H6V15H18V10M6,20H18V17H6V20M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z";
var mdiWindowOpenVariant = "M21 20V2H3V20H1V23H23V20M19 4V11H17V4M5 4H7V11H5M5 20V13H7V20M9 20V4H15V20M17 20V13H19V20Z";
var mdiWindowRestore = "M4,8H8V4H20V16H16V20H4V8M16,8V14H18V6H10V8H16M6,12V18H14V12H6Z";
var mdiWindowShutter = "M3 4H21V8H19V20H17V8H7V20H5V8H3V4M8 9H16V11H8V9M8 12H16V14H8V12M8 15H16V17H8V15M8 18H16V20H8V18Z";
var mdiWindowShutterAlert = "M2 4H20V8H18V20H16V8H6V20H4V8H2V4M7 9H15V11H7V9M7 12H15V14H7V12M20 19V17H22V19H20M20 15V10H22V15H20Z";
var mdiWindowShutterOpen = "M3 4H21V8H19V20H17V8H7V20H5V8H3V4M8 9H16V11H8V9Z";
var mdiWindsock = "M7 5V13L22 11V7L7 5M10 6.91L13 7.31V10.69L10 11.09V6.91M16 7.71L19 8.11V9.89L16 10.29V7.71M5 10V11H6V12H5V21H3V4C3 3.45 3.45 3 4 3S5 3.45 5 4V6H6V7H5V10Z";
var mdiWiper = "M12,4C5,4 2,9 2,9L9,16C9,16 9.5,15.1 10.4,14.5L10.7,16.5C10.3,16.8 10,17.4 10,18A2,2 0 0,0 12,20A2,2 0 0,0 14,18C14,17.1 13.5,16.4 12.7,16.1L12.3,14C14.1,14.2 15,16 15,16L22,9C22,9 19,4 12,4M15.1,13.1C14.3,12.5 13.3,12 12,12L11,6.1C11.3,6 11.7,6 12,6C15.7,6 18.1,7.7 19.3,8.9L15.1,13.1M8.9,13.1L4.7,8.9C5.5,8 7,7 9,6.4L10,12.4C9.6,12.6 9.2,12.8 8.9,13.1Z";
var mdiWiperWash = "M13,6C13,5.7 13.1,4.6 13.8,3.8L12,2.4L10.2,3.9C10.9,4.6 11,5.7 11,6C4.7,6.4 2,11 2,11L9,18C9,18 9.7,16.7 11,16.2V18.3C10.4,18.6 10,19.3 10,20A2,2 0 0,0 12,22A2,2 0 0,0 14,20C14,19.3 13.6,18.6 13,18.3V16.2C14.3,16.7 15,18 15,18L22,11C22,11 19.3,6.5 13,6M11,14.1C10.2,14.3 9.5,14.6 8.9,15.1L4.7,10.9C5.8,9.8 7.8,8.3 11,8.1V14.1M15.1,15.1C14.5,14.7 13.8,14.3 13,14.1V8.1C16.2,8.4 18.2,9.8 19.3,10.9L15.1,15.1M18,1.3L17.3,3.2C16.6,2.9 15.5,2.9 14.7,3.2L14,1.3C15.2,0.9 16.8,0.9 18,1.3M21,6H19C19,6 19,4.7 18.2,3.9L19.7,2.6C21,4 21,5.9 21,6M4.2,2.6L5.7,3.9C5,4.7 5,6 5,6H3C3,5.9 3,4 4.2,2.6M10,1.3L9.3,3.2C8.6,2.9 7.5,2.9 6.7,3.2L6,1.3C7.2,0.9 8.8,0.9 10,1.3Z";
var mdiWizardHat = "M21 22H3V20H21V22M19 19H5L11.1 2.6C11.3 2.2 11.6 2 12 2L18 5H13.9L19 19M10 7.5L11.04 7.97L11.5 9L11.97 7.97L13 7.5L11.97 7.03L11.5 6L11.04 7.03L10 7.5M13 15L10.94 14.07L10 12L9.07 14.07L7 15L9.07 15.93L10 18L10.94 15.93L13 15M13.97 11.97L15 11.5L13.97 11.03L13.5 10L13.04 11.03L12 11.5L13.04 11.97L13.5 13L13.97 11.97M15.97 15.97L17 15.5L15.97 15.03L15.5 14L15.04 15.03L14 15.5L15.04 15.97L15.5 17L15.97 15.97Z";
var mdiWordpress = "M3.42,12C3.42,10.76 3.69,9.58 4.16,8.5L8.26,19.72C5.39,18.33 3.42,15.4 3.42,12M17.79,11.57C17.79,12.3 17.5,13.15 17.14,14.34L16.28,17.2L13.18,8L14.16,7.9C14.63,7.84 14.57,7.16 14.11,7.19C14.11,7.19 12.72,7.3 11.82,7.3L9.56,7.19C9.1,7.16 9.05,7.87 9.5,7.9L10.41,8L11.75,11.64L9.87,17.27L6.74,8L7.73,7.9C8.19,7.84 8.13,7.16 7.67,7.19C7.67,7.19 6.28,7.3 5.38,7.3L4.83,7.29C6.37,4.96 9,3.42 12,3.42C14.23,3.42 16.27,4.28 17.79,5.67H17.68C16.84,5.67 16.24,6.4 16.24,7.19C16.24,7.9 16.65,8.5 17.08,9.2C17.41,9.77 17.79,10.5 17.79,11.57M12.15,12.75L14.79,19.97L14.85,20.09C13.96,20.41 13,20.58 12,20.58C11.16,20.58 10.35,20.46 9.58,20.23L12.15,12.75M19.53,7.88C20.2,9.11 20.58,10.5 20.58,12C20.58,15.16 18.86,17.93 16.31,19.41L18.93,11.84C19.42,10.62 19.59,9.64 19.59,8.77L19.53,7.88M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,21.54C17.26,21.54 21.54,17.26 21.54,12C21.54,6.74 17.26,2.46 12,2.46C6.74,2.46 2.46,6.74 2.46,12C2.46,17.26 6.74,21.54 12,21.54Z";
var mdiWrap = "M21,5H3V7H21V5M3,19H10V17H3V19M3,13H18C19,13 20,13.43 20,15C20,16.57 19,17 18,17H16V15L12,18L16,21V19H18C20.95,19 22,17.73 22,15C22,12.28 21,11 18,11H3V13Z";
var mdiWrapDisabled = "M16,7H3V5H16V7M3,19H16V17H3V19M22,12L18,9V11H3V13H18V15L22,12Z";
var mdiWrench = "M22.7,19L13.6,9.9C14.5,7.6 14,4.9 12.1,3C10.1,1 7.1,0.6 4.7,1.7L9,6L6,9L1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1C4.8,14 7.5,14.5 9.8,13.6L18.9,22.7C19.3,23.1 19.9,23.1 20.3,22.7L22.6,20.4C23.1,20 23.1,19.3 22.7,19Z";
var mdiWrenchOutline = "M22.61,19L13.53,9.91C14.46,7.57 14,4.81 12.09,2.91C9.79,0.61 6.21,0.4 3.66,2.26L7.5,6.11L6.08,7.5L2.25,3.69C0.39,6.23 0.6,9.82 2.9,12.11C4.76,13.97 7.47,14.46 9.79,13.59L18.9,22.7C19.29,23.09 19.92,23.09 20.31,22.7L22.61,20.4C23,20 23,19.39 22.61,19M19.61,20.59L10.15,11.13C9.54,11.58 8.86,11.85 8.15,11.95C6.79,12.15 5.36,11.74 4.32,10.7C3.37,9.76 2.93,8.5 3,7.26L6.09,10.35L10.33,6.11L7.24,3C8.5,2.95 9.73,3.39 10.68,4.33C11.76,5.41 12.17,6.9 11.92,8.29C11.8,9 11.5,9.66 11.04,10.25L20.5,19.7L19.61,20.59Z";
var mdiXamarin = "M22.75,11.07C22.91,11.35 23,11.67 23,12C23,12.33 22.91,12.65 22.75,12.93L18.08,21C17.72,21.62 17.06,22 16.35,22H7.65C6.94,22 6.28,21.62 5.92,21L1.25,12.93C1.09,12.65 1,12.33 1,12C1,11.67 1.09,11.35 1.25,11.07L5.92,3C6.28,2.38 6.94,2 7.65,2H16.35C17.06,2 17.72,2.38 18.08,3L22.75,11.07M12,12V11.9L9.42,7.1L9.25,7H7.66L7.5,7.1V7.3L10,12L7.5,16.7V16.9L7.66,17H9.25L9.42,16.9L12,12.1V12L12.03,12.1L14.58,16.9L14.75,17H16.34L16.5,16.9V16.7L14,12L16.5,7.3V7.1L16.34,7H14.75L14.58,7.1L12.03,11.9L12,12Z";
var mdiXamarinOutline = "M12,12L12.03,11.9L14.58,7.1L14.75,7H16.34L16.5,7.1V7.3L14,12L16.5,16.7V16.9L16.34,17H14.75L14.58,16.9L12.03,12.1L12,12V12.1L9.42,16.9L9.25,17H7.66L7.5,16.9V16.7L10,12L7.5,7.3V7.1L7.66,7H9.25L9.42,7.1L12,11.9V12M22.75,11.07C22.91,11.35 23,11.67 23,12C23,12.33 22.91,12.65 22.75,12.93L18.08,21C17.72,21.62 17.06,22 16.35,22H7.65C6.94,22 6.28,21.62 5.92,21L1.25,12.93C1.09,12.65 1,12.33 1,12C1,11.67 1.09,11.35 1.25,11.07L5.92,3C6.28,2.38 6.94,2 7.65,2H16.35C17.06,2 17.72,2.38 18.08,3L22.75,11.07M20.8,11.25L16.97,4.8C16.68,4.3 16.14,4 15.56,4H8.44C7.86,4 7.32,4.3 7.03,4.8L3.2,11.25C3.07,11.5 3,11.74 3,12C3,12.26 3.07,12.5 3.2,12.75L7.03,19.2C7.32,19.7 7.86,20 8.44,20H15.56C16.14,20 16.68,19.7 16.97,19.2L20.8,12.75C20.93,12.5 21,12.26 21,12C21,11.74 20.93,11.5 20.8,11.25Z";
var mdiXing = "M4.8,3C3.8,3 3,3.8 3,4.8V19.2C3,20.2 3.8,21 4.8,21H19.2C20.2,21 21,20.2 21,19.2V4.8C21,3.8 20.2,3 19.2,3M16.07,5H18.11C18.23,5 18.33,5.04 18.37,5.13C18.43,5.22 18.43,5.33 18.37,5.44L13.9,13.36L16.75,18.56C16.81,18.67 16.81,18.78 16.75,18.87C16.7,18.95 16.61,19 16.5,19H14.47C14.16,19 14,18.79 13.91,18.61L11.04,13.35C11.18,13.1 15.53,5.39 15.53,5.39C15.64,5.19 15.77,5 16.07,5M7.09,7.76H9.1C9.41,7.76 9.57,7.96 9.67,8.15L11.06,10.57C10.97,10.71 8.88,14.42 8.88,14.42C8.77,14.61 8.63,14.81 8.32,14.81H6.3C6.18,14.81 6.09,14.76 6.04,14.67C6,14.59 6,14.47 6.04,14.36L8.18,10.57L6.82,8.2C6.77,8.09 6.75,8 6.81,7.89C6.86,7.81 6.96,7.76 7.09,7.76Z";
var mdiXml = "M12.89,3L14.85,3.4L11.11,21L9.15,20.6L12.89,3M19.59,12L16,8.41V5.58L22.42,12L16,18.41V15.58L19.59,12M1.58,12L8,5.58V8.41L4.41,12L8,15.58V18.41L1.58,12Z";
var mdiXmpp = "M12,15.4C9.75,13.09 8,9.54 8,6C2,4 8,6 2,4C2,9.65 6.33,14.11 10.55,16.66C9.38,17.5 8.15,18 7,18C7,19 7,18 7,19C8.2,19 10.03,18.46 12,17.46C13.97,18.46 15.8,19 17,19C17,18 17,19 17,18C15.85,18 14.62,17.5 13.45,16.66C17.66,14.11 22,9.65 22,4C16,6 22,4 16,6C16,9.54 14.25,13.09 12,15.4Z";
var mdiYCombinator = "M2,2H22V22H2V2M11.25,17.5H12.75V13.06L16,7H14.5L12,11.66L9.5,7H8L11.25,13.06V17.5Z";
var mdiYahoo = "M10.5 7.59L8.16 13.2L5.85 7.59H2L6.29 17.23L4.75 20.7H8.5L14.24 7.59H10.5M15 12.73C13.63 12.73 12.59 13.77 12.59 15C12.59 16.17 13.59 17.16 14.93 17.16C16.32 17.16 17.36 16.13 17.36 14.9C17.36 13.69 16.36 12.73 15 12.73M17.72 3.3L13.89 11.89H18.17L22 3.3H17.72Z";
var mdiYeast = "M18,14A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18L14.09,17.15C14.05,16.45 13.92,15.84 13.55,15.5C13.35,15.3 13.07,15.19 12.75,15.13C11.79,15.68 10.68,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,10.68 15.68,11.79 15.13,12.75C15.19,13.07 15.3,13.35 15.5,13.55C15.84,13.92 16.45,14.05 17.15,14.09L18,14M7.5,10A1.5,1.5 0 0,1 9,11.5A1.5,1.5 0 0,1 7.5,13A1.5,1.5 0 0,1 6,11.5A1.5,1.5 0 0,1 7.5,10M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z";
var mdiYinYang = "M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,6.5A1.5,1.5 0 0,1 13.5,8A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 10.5,8A1.5,1.5 0 0,1 12,6.5M12,14.5A1.5,1.5 0 0,0 10.5,16A1.5,1.5 0 0,0 12,17.5A1.5,1.5 0 0,0 13.5,16A1.5,1.5 0 0,0 12,14.5Z";
var mdiYoga = "M13 2C11.9 2 11 2.9 11 4C11 5.11 11.9 6 13 6C14.11 6 15 5.11 15 4C15 2.9 14.11 2 13 2M4 7V9H10V15L4.93 20.07L6.34 21.5L13.06 14.77L17 17.13V21H19V16.57C19 16.21 18.82 15.89 18.5 15.71L15 13.6V9H21V7H4Z";
var mdiYoutube = "M10,15L15.19,12L10,9V15M21.56,7.17C21.69,7.64 21.78,8.27 21.84,9.07C21.91,9.87 21.94,10.56 21.94,11.16L22,12C22,14.19 21.84,15.8 21.56,16.83C21.31,17.73 20.73,18.31 19.83,18.56C19.36,18.69 18.5,18.78 17.18,18.84C15.88,18.91 14.69,18.94 13.59,18.94L12,19C7.81,19 5.2,18.84 4.17,18.56C3.27,18.31 2.69,17.73 2.44,16.83C2.31,16.36 2.22,15.73 2.16,14.93C2.09,14.13 2.06,13.44 2.06,12.84L2,12C2,9.81 2.16,8.2 2.44,7.17C2.69,6.27 3.27,5.69 4.17,5.44C4.64,5.31 5.5,5.22 6.82,5.16C8.12,5.09 9.31,5.06 10.41,5.06L12,5C16.19,5 18.8,5.16 19.83,5.44C20.73,5.69 21.31,6.27 21.56,7.17Z";
var mdiYoutubeGaming = "M22 13V8L17 5L12 8L7 5L2 8V13L12 19L22 13M9 11H7V13H6V11H4V10H6V8H7V10H9V11M15 13C14.45 13 14 12.55 14 12S14.45 11 15 11 16 11.45 16 12 15.55 13 15 13M18 11C17.45 11 17 10.55 17 10S17.45 9 18 9 19 9.45 19 10 18.55 11 18 11Z";
var mdiYoutubeStudio = "M10,15L15,12L10,9V15M19.45,13L21.56,14.63C21.78,14.78 21.81,15 21.66,15.28L19.64,18.75C19.5,18.97 19.31,19.03 19.03,18.94L16.55,17.95C15.89,18.42 15.33,18.75 14.86,18.94L14.5,21.56C14.42,21.84 14.27,22 14,22H10C9.73,22 9.58,21.84 9.5,21.56L9.14,18.94C8.55,18.69 8,18.36 7.45,17.95L4.97,18.94C4.69,19.03 4.5,18.97 4.36,18.75L2.34,15.28C2.19,15 2.22,14.78 2.44,14.63L4.55,13C4.5,12.77 4.5,12.44 4.5,12C4.5,11.56 4.5,11.23 4.55,11L2.44,9.38C2.22,9.22 2.19,9 2.34,8.72L4.36,5.25C4.5,5.03 4.69,4.97 4.97,5.06L7.45,6.05C8.11,5.58 8.67,5.25 9.14,5.06L9.5,2.44C9.58,2.16 9.73,2 10,2H14C14.27,2 14.42,2.16 14.5,2.44L14.86,5.06C15.45,5.31 16,5.64 16.55,6.05L19.03,5.06C19.31,4.97 19.5,5.03 19.64,5.25L21.66,8.72C21.81,9 21.78,9.22 21.56,9.38L19.45,11C19.5,11.23 19.5,11.56 19.5,12C19.5,12.44 19.5,12.77 19.45,13Z";
var mdiYoutubeSubscription = "M20,8H4V6H20V8M18,2H6V4H18V2M22,12V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12A2,2 0 0,1 4,10H20A2,2 0 0,1 22,12M16,16L10,12.73V19.26L16,16Z";
var mdiYoutubeTv = "M2.5,4.5H21.5C22.34,4.5 23,5.15 23,6V17.5C23,18.35 22.34,19 21.5,19H2.5C1.65,19 1,18.35 1,17.5V6C1,5.15 1.65,4.5 2.5,4.5M9.71,8.5V15L15.42,11.7L9.71,8.5M17.25,21H6.65C6.35,21 6.15,20.8 6.15,20.5C6.15,20.2 6.35,20 6.65,20H17.35C17.65,20 17.85,20.2 17.85,20.5C17.85,20.8 17.55,21 17.25,21Z";
var mdiYurt = "M22 14.87V22H14V16H10V22H2V14.87C2 14.33 2.29 13.83 2.76 13.57L8.66 10.2C8.88 10.07 9.14 10 9.4 10H12.5V9H14V10H14.59C14.85 10 15.11 10.07 15.33 10.2L21.23 13.57C21.71 13.84 22 14.33 22 14.87M7.86 6.25H9.4C10.73 6.25 11.92 6.95 12.5 8H14C13.6 6.2 12 4.85 10.1 4.85V3.35C11.1 3.35 11.95 2.5 11.95 1.5V1H7.86V2.5C6.86 2.5 6 3.23 6 4.25S6.86 6.25 7.86 6.25Z";
var mdiZWave = "M16.3,10.58C13.14,10.58 10.6,13.13 10.6,16.28C10.6,19.43 13.15,22 16.3,22C19.45,22 22,19.43 22,16.28C22,13.13 19.45,10.58 16.3,10.58M18,19.08H13.19L15.81,15H13.31L14.4,13.23H19.18L16.63,17.28H19.18L18,19.08M16.3,3.93V2C8.41,2 2,8.42 2,16.31H3.92C3.94,9.46 9.5,3.93 16.3,3.93M16.3,7.74V5.82C10.5,5.82 5.81,10.53 5.81,16.31H7.73C7.75,11.58 11.59,7.74 16.3,7.74";
var mdiZend = "M11.28,9.81C11.28,9.81 11.28,7 14.09,7H22.5C22.5,7 22.5,9.81 19.71,9.81H11.28M11.28,13.41C11.28,13.41 11.28,10.6 14.09,10.6H18.31C18.31,10.6 18.31,13.41 15.5,13.41H11.28M11.28,17C11.28,17 11.28,14.19 14.09,14.19H15.5C15.5,14.19 15.5,17 12.68,17H11.28M10.46,14.8V17H1.58L7.3,9.21H2.4V7H11.66L5.96,14.8H10.46Z";
var mdiZigbee = "M4.06,6.15C3.97,6.17 3.88,6.22 3.8,6.28C2.66,7.9 2,9.87 2,12A10,10 0 0,0 12,22C15,22 17.68,20.68 19.5,18.6L17,18.85C14.25,19.15 11.45,19.19 8.66,18.96C7.95,18.94 7.24,18.76 6.59,18.45C5.73,18.06 5.15,17.23 5.07,16.29C5.06,16.13 5.12,16 5.23,15.87L7.42,13.6L15.03,5.7V5.6H10.84C8.57,5.64 6.31,5.82 4.06,6.15M20.17,17.5C20.26,17.47 20.35,17.44 20.43,17.39C21.42,15.83 22,14 22,12A10,10 0 0,0 12,2C9.22,2 6.7,3.13 4.89,4.97H5.17C8.28,4.57 11.43,4.47 14.56,4.65C15.5,4.64 16.45,4.82 17.33,5.17C18.25,5.53 18.89,6.38 19,7.37C19,7.53 18.93,7.7 18.82,7.82L9.71,17.19L9,17.95V18.06H13.14C15.5,18 17.84,17.81 20.17,17.5Z";
var mdiZipBox = "M14,17H12V15H10V13H12V15H14M14,9H12V11H14V13H12V11H10V9H12V7H10V5H12V7H14M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z";
var mdiZipBoxOutline = "M12 17V15H14V17H12M14 13V11H12V13H14M14 9V7H12V9H14M10 11H12V9H10V11M10 15H12V13H10V15M21 5V19C21 20.1 20.1 21 19 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19C20.1 3 21 3.9 21 5M19 5H12V7H10V5H5V19H19V5Z";
var mdiZipDisk = "M7,3L3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5L17,3V5A1,1 0 0,1 16,6H10A1,1 0 0,1 9,5V3H7M8,10H16A1,1 0 0,1 17,11V19H7V11A1,1 0 0,1 8,10Z";
var mdiZodiacAquarius = "M15,12.41L12,9.41L9,12.41L6,9.41L3.71,11.71L2.29,10.29L6,6.59L9,9.59L12,6.59L15,9.59L18,6.59L21.71,10.29L20.29,11.71L18,9.41L15,12.41M18,15.41L20.29,17.71L21.71,16.29L18,12.59L15,15.59L12,12.59L9,15.59L6,12.59L2.29,16.29L3.71,17.71L6,15.41L9,18.41L12,15.41L15,18.41L18,15.41Z";
var mdiZodiacAries = "M16,2C14.95,2 13.91,2.27 13,2.81C12.64,3 12.3,3.26 12,3.54C11.7,3.26 11.36,3 11,2.81C10.09,2.27 9.05,2 8,2A6,6 0 0,0 2,8A6,6 0 0,0 8,14V12A4,4 0 0,1 4,8A4,4 0 0,1 8,4C9,4 10,4.39 10.75,5.1C10.84,5.18 10.92,5.27 11,5.36V22H13V5.36C13.08,5.27 13.16,5.18 13.25,5.1C14.85,3.58 17.38,3.64 18.91,5.25C20.43,6.85 20.36,9.38 18.76,10.9C18,11.61 17.03,12 16,12V14A6,6 0 0,0 22,8A6,6 0 0,0 16,2Z";
var mdiZodiacCancer = "M12,4C6.5,4 2,7.58 2,12C2,14.12 3.65,15.87 5.76,16H6A4,4 0 0,0 10,12A4,4 0 0,0 6,8H5.76C7.44,6.41 9.69,5.55 12,5.6C13.77,5.58 15.5,6.07 17,7L18.25,5.75C16.38,4.58 14.21,3.97 12,4M6,10A2,2 0 0,1 8,12C8,13.11 7.08,14 6,14C4.96,14 4.1,13.22 4,12.2C4,12.07 4,11.93 4,11.8C4.1,10.77 4.97,10 6,10M18.24,8H18A4,4 0 0,0 14,12A4,4 0 0,0 18,16H18.24C16.56,17.59 14.31,18.45 12,18.4C10.23,18.42 8.5,17.93 7,17L5.76,18.24C7.63,19.41 9.79,20 12,20C17.5,20 22,16.42 22,12C22,9.88 20.35,8.13 18.24,8M18,14A2,2 0 0,1 16,12C16,10.89 16.92,10 18,10C19.04,10 19.9,10.78 20,11.8C20,11.93 20,12.07 20,12.2C19.9,13.23 19.03,14 18,14Z";
var mdiZodiacCapricorn = "M15,13C14.3,13 13.61,13.19 13,13.55V6A3,3 0 0,0 10,3C9.25,3 8.55,3.29 8,3.78C7.45,3.28 6.74,3 6,3V5A1,1 0 0,1 7,6V16H9V6A1,1 0 0,1 10,5A1,1 0 0,1 11,6V17A2,2 0 0,1 9,19V21C10.15,21 11.25,20.5 12,19.62C13.45,21.29 15.97,21.47 17.64,20C19.31,18.58 19.5,16.05 18.04,14.38C17.28,13.5 16.17,13 15,13M15,19A2,2 0 0,1 13,17A2,2 0 0,1 15,15A2,2 0 0,1 17,17A2,2 0 0,1 15,19Z";
var mdiZodiacGemini = "M18,5.3C19.35,4.97 20.66,4.54 21.94,4L21.18,2.14C18.27,3.36 15.15,4 12,4C8.85,4 5.73,3.38 2.82,2.17L2.06,4C3.34,4.54 4.65,4.97 6,5.3V18.7C4.65,19.03 3.34,19.46 2.06,20L2.82,21.86C8.7,19.42 15.3,19.42 21.18,21.86L21.94,20C20.66,19.46 19.35,19.03 18,18.7V5.3M8,18.3V5.69C9.32,5.89 10.66,6 12,6C13.34,6 14.68,5.89 16,5.69V18.31C13.35,17.9 10.65,17.9 8,18.31V18.3Z";
var mdiZodiacLeo = "M20,17A3,3 0 0,1 17,20C15.38,19.92 14.08,18.62 14,17C14.16,15.39 14.5,13.8 15,12.26C15.54,10.55 15.87,8.79 16,7C15.93,4.27 13.73,2.07 11,2C8.27,2.07 6.07,4.27 6,7C6.15,8.53 6.5,10.03 7,11.5L7.21,12.2C5.1,11.53 2.86,12.7 2.19,14.8C1.5,16.91 2.68,19.16 4.79,19.83C6.9,20.5 9.14,19.33 9.81,17.22C9.94,16.83 10,16.41 10,16C9.84,14.27 9.5,12.56 8.91,10.92C8.47,9.65 8.16,8.34 8,7C8.08,5.38 9.38,4.08 11,4C12.62,4.08 13.92,5.38 14,7C13.84,8.61 13.5,10.2 13,11.74C12.46,13.45 12.13,15.21 12,17C12.07,19.73 14.27,21.93 17,22A5,5 0 0,0 22,17H20M6,18A2,2 0 0,1 4,16A2,2 0 0,1 6,14A2,2 0 0,1 8,16A2,2 0 0,1 6,18Z";
var mdiZodiacLibra = "M20,16V18H13V15.91C16,15.36 17.96,12.5 17.41,9.5C16.86,6.5 14,4.54 11,5.09C8,5.65 6.04,8.5 6.59,11.5C7,13.74 8.76,15.5 11,15.91V18H4V16H6.92C5.37,14.59 4.5,12.59 4.5,10.5A7.5,7.5 0 0,1 12,3A7.5,7.5 0 0,1 19.5,10.5C19.5,12.59 18.63,14.59 17.08,16H20M20,19H4V21H20V19Z";
var mdiZodiacPisces = "M20,11H18C18.11,8.19 18.73,5.42 19.81,2.82L18,2.06C16.81,4.9 16.13,7.92 16,11H8C7.87,7.92 7.19,4.9 6,2.06L4.14,2.82C5.24,5.41 5.87,8.18 6,11H4V13H6C5.89,15.81 5.27,18.58 4.19,21.18L6,21.94C7.19,19.1 7.87,16.08 8,13H16C16.13,16.08 16.81,19.1 18,21.94L19.86,21.18C18.76,18.59 18.13,15.82 18,13H20V11Z";
var mdiZodiacSagittarius = "M22,2V12H20V5.41L10.41,15L12.71,17.29L11.29,18.71L9,16.41L3.71,21.71L2.29,20.29L7.59,15L5.29,12.71L6.71,11.29L9,13.59L18.59,4H12V2H22Z";
var mdiZodiacScorpio = "M17.71,15.29L16.29,16.71L17.59,18H16A2,2 0 0,1 14,16V6A3,3 0 0,0 11,3C10.25,3 9.55,3.29 9,3.78C7.86,2.76 6.14,2.76 5,3.78C4.45,3.28 3.74,3 3,3V5A1,1 0 0,1 4,6V16H6V6A1,1 0 0,1 7,5A1,1 0 0,1 8,6V16H10V6A1,1 0 0,1 11,5A1,1 0 0,1 12,6V16A4,4 0 0,0 16,20H17.59L16.29,21.29L17.71,22.71L21.41,19L17.71,15.29Z";
var mdiZodiacTaurus = "M15.59,9C17.7,7.74 19,5.46 19,3H17A5,5 0 0,1 12,8A5,5 0 0,1 7,3H5C5,5.46 6.3,7.74 8.41,9C5.09,11 4,15.28 6,18.6C7.97,21.92 12.27,23 15.59,21C18.91,19.04 20,14.74 18,11.42C17.42,10.43 16.58,9.59 15.59,9M12,20A5,5 0 0,1 7,15A5,5 0 0,1 12,10A5,5 0 0,1 17,15A5,5 0 0,1 12,20Z";
var mdiZodiacVirgo = "M18.5,19.13C20,17.77 20,15.18 20,14A4,4 0 0,0 16,10C15.3,10 14.6,10.2 14,10.56V6A3,3 0 0,0 11,3C10.25,3 9.55,3.29 9,3.78C7.86,2.76 6.14,2.76 5,3.78C4.45,3.28 3.74,3 3,3V5A1,1 0 0,1 4,6V16H6V6A1,1 0 0,1 7,5A1,1 0 0,1 8,6V16H10V6A1,1 0 0,1 11,5A1,1 0 0,1 12,6V14C12,15.18 12,17.77 13.5,19.13C12.72,19.54 11.88,19.84 11,20V22C12.29,22 14.84,20.74 16,20.13C17.16,20.74 19.71,22 21,22V20C20.12,19.84 19.28,19.54 18.5,19.13M16,12A2,2 0 0,1 18,14C18,16.92 17.46,18 16,18C14.54,18 14,16.92 14,14A2,2 0 0,1 16,12Z";
var mdiIcons = /*#__PURE__*/Object.freeze({
__proto__: null,
mdiAbTesting: mdiAbTesting,
mdiAbacus: mdiAbacus,
mdiAbjadArabic: mdiAbjadArabic,
mdiAbjadHebrew: mdiAbjadHebrew,
mdiAbugidaDevanagari: mdiAbugidaDevanagari,
mdiAbugidaThai: mdiAbugidaThai,
mdiAccessPoint: mdiAccessPoint,
mdiAccessPointCheck: mdiAccessPointCheck,
mdiAccessPointMinus: mdiAccessPointMinus,
mdiAccessPointNetwork: mdiAccessPointNetwork,
mdiAccessPointNetworkOff: mdiAccessPointNetworkOff,
mdiAccessPointOff: mdiAccessPointOff,
mdiAccessPointPlus: mdiAccessPointPlus,
mdiAccessPointRemove: mdiAccessPointRemove,
mdiAccount: mdiAccount,
mdiAccountAlert: mdiAccountAlert,
mdiAccountAlertOutline: mdiAccountAlertOutline,
mdiAccountArrowLeft: mdiAccountArrowLeft,
mdiAccountArrowLeftOutline: mdiAccountArrowLeftOutline,
mdiAccountArrowRight: mdiAccountArrowRight,
mdiAccountArrowRightOutline: mdiAccountArrowRightOutline,
mdiAccountBox: mdiAccountBox,
mdiAccountBoxMultiple: mdiAccountBoxMultiple,
mdiAccountBoxMultipleOutline: mdiAccountBoxMultipleOutline,
mdiAccountBoxOutline: mdiAccountBoxOutline,
mdiAccountCancel: mdiAccountCancel,
mdiAccountCancelOutline: mdiAccountCancelOutline,
mdiAccountCash: mdiAccountCash,
mdiAccountCashOutline: mdiAccountCashOutline,
mdiAccountCheck: mdiAccountCheck,
mdiAccountCheckOutline: mdiAccountCheckOutline,
mdiAccountChild: mdiAccountChild,
mdiAccountChildCircle: mdiAccountChildCircle,
mdiAccountChildOutline: mdiAccountChildOutline,
mdiAccountCircle: mdiAccountCircle,
mdiAccountCircleOutline: mdiAccountCircleOutline,
mdiAccountClock: mdiAccountClock,
mdiAccountClockOutline: mdiAccountClockOutline,
mdiAccountCog: mdiAccountCog,
mdiAccountCogOutline: mdiAccountCogOutline,
mdiAccountConvert: mdiAccountConvert,
mdiAccountConvertOutline: mdiAccountConvertOutline,
mdiAccountCowboyHat: mdiAccountCowboyHat,
mdiAccountDetails: mdiAccountDetails,
mdiAccountDetailsOutline: mdiAccountDetailsOutline,
mdiAccountEdit: mdiAccountEdit,
mdiAccountEditOutline: mdiAccountEditOutline,
mdiAccountGroup: mdiAccountGroup,
mdiAccountGroupOutline: mdiAccountGroupOutline,
mdiAccountHardHat: mdiAccountHardHat,
mdiAccountHeart: mdiAccountHeart,
mdiAccountHeartOutline: mdiAccountHeartOutline,
mdiAccountKey: mdiAccountKey,
mdiAccountKeyOutline: mdiAccountKeyOutline,
mdiAccountLock: mdiAccountLock,
mdiAccountLockOutline: mdiAccountLockOutline,
mdiAccountMinus: mdiAccountMinus,
mdiAccountMinusOutline: mdiAccountMinusOutline,
mdiAccountMultiple: mdiAccountMultiple,
mdiAccountMultipleCheck: mdiAccountMultipleCheck,
mdiAccountMultipleCheckOutline: mdiAccountMultipleCheckOutline,
mdiAccountMultipleMinus: mdiAccountMultipleMinus,
mdiAccountMultipleMinusOutline: mdiAccountMultipleMinusOutline,
mdiAccountMultipleOutline: mdiAccountMultipleOutline,
mdiAccountMultiplePlus: mdiAccountMultiplePlus,
mdiAccountMultiplePlusOutline: mdiAccountMultiplePlusOutline,
mdiAccountMultipleRemove: mdiAccountMultipleRemove,
mdiAccountMultipleRemoveOutline: mdiAccountMultipleRemoveOutline,
mdiAccountMusic: mdiAccountMusic,
mdiAccountMusicOutline: mdiAccountMusicOutline,
mdiAccountNetwork: mdiAccountNetwork,
mdiAccountNetworkOutline: mdiAccountNetworkOutline,
mdiAccountOff: mdiAccountOff,
mdiAccountOffOutline: mdiAccountOffOutline,
mdiAccountOutline: mdiAccountOutline,
mdiAccountPlus: mdiAccountPlus,
mdiAccountPlusOutline: mdiAccountPlusOutline,
mdiAccountQuestion: mdiAccountQuestion,
mdiAccountQuestionOutline: mdiAccountQuestionOutline,
mdiAccountReactivate: mdiAccountReactivate,
mdiAccountReactivateOutline: mdiAccountReactivateOutline,
mdiAccountRemove: mdiAccountRemove,
mdiAccountRemoveOutline: mdiAccountRemoveOutline,
mdiAccountSearch: mdiAccountSearch,
mdiAccountSearchOutline: mdiAccountSearchOutline,
mdiAccountSettings: mdiAccountSettings,
mdiAccountSettingsOutline: mdiAccountSettingsOutline,
mdiAccountStar: mdiAccountStar,
mdiAccountStarOutline: mdiAccountStarOutline,
mdiAccountSupervisor: mdiAccountSupervisor,
mdiAccountSupervisorCircle: mdiAccountSupervisorCircle,
mdiAccountSupervisorCircleOutline: mdiAccountSupervisorCircleOutline,
mdiAccountSupervisorOutline: mdiAccountSupervisorOutline,
mdiAccountSwitch: mdiAccountSwitch,
mdiAccountSwitchOutline: mdiAccountSwitchOutline,
mdiAccountTie: mdiAccountTie,
mdiAccountTieOutline: mdiAccountTieOutline,
mdiAccountTieVoice: mdiAccountTieVoice,
mdiAccountTieVoiceOff: mdiAccountTieVoiceOff,
mdiAccountTieVoiceOffOutline: mdiAccountTieVoiceOffOutline,
mdiAccountTieVoiceOutline: mdiAccountTieVoiceOutline,
mdiAccountVoice: mdiAccountVoice,
mdiAdjust: mdiAdjust,
mdiAdobe: mdiAdobe,
mdiAdobeAcrobat: mdiAdobeAcrobat,
mdiAirConditioner: mdiAirConditioner,
mdiAirFilter: mdiAirFilter,
mdiAirHorn: mdiAirHorn,
mdiAirHumidifier: mdiAirHumidifier,
mdiAirHumidifierOff: mdiAirHumidifierOff,
mdiAirPurifier: mdiAirPurifier,
mdiAirbag: mdiAirbag,
mdiAirballoon: mdiAirballoon,
mdiAirballoonOutline: mdiAirballoonOutline,
mdiAirplane: mdiAirplane,
mdiAirplaneLanding: mdiAirplaneLanding,
mdiAirplaneOff: mdiAirplaneOff,
mdiAirplaneTakeoff: mdiAirplaneTakeoff,
mdiAirport: mdiAirport,
mdiAlarm: mdiAlarm,
mdiAlarmBell: mdiAlarmBell,
mdiAlarmCheck: mdiAlarmCheck,
mdiAlarmLight: mdiAlarmLight,
mdiAlarmLightOff: mdiAlarmLightOff,
mdiAlarmLightOffOutline: mdiAlarmLightOffOutline,
mdiAlarmLightOutline: mdiAlarmLightOutline,
mdiAlarmMultiple: mdiAlarmMultiple,
mdiAlarmNote: mdiAlarmNote,
mdiAlarmNoteOff: mdiAlarmNoteOff,
mdiAlarmOff: mdiAlarmOff,
mdiAlarmPanel: mdiAlarmPanel,
mdiAlarmPanelOutline: mdiAlarmPanelOutline,
mdiAlarmPlus: mdiAlarmPlus,
mdiAlarmSnooze: mdiAlarmSnooze,
mdiAlbum: mdiAlbum,
mdiAlert: mdiAlert,
mdiAlertBox: mdiAlertBox,
mdiAlertBoxOutline: mdiAlertBoxOutline,
mdiAlertCircle: mdiAlertCircle,
mdiAlertCircleCheck: mdiAlertCircleCheck,
mdiAlertCircleCheckOutline: mdiAlertCircleCheckOutline,
mdiAlertCircleOutline: mdiAlertCircleOutline,
mdiAlertDecagram: mdiAlertDecagram,
mdiAlertDecagramOutline: mdiAlertDecagramOutline,
mdiAlertMinus: mdiAlertMinus,
mdiAlertMinusOutline: mdiAlertMinusOutline,
mdiAlertOctagon: mdiAlertOctagon,
mdiAlertOctagonOutline: mdiAlertOctagonOutline,
mdiAlertOctagram: mdiAlertOctagram,
mdiAlertOctagramOutline: mdiAlertOctagramOutline,
mdiAlertOutline: mdiAlertOutline,
mdiAlertPlus: mdiAlertPlus,
mdiAlertPlusOutline: mdiAlertPlusOutline,
mdiAlertRemove: mdiAlertRemove,
mdiAlertRemoveOutline: mdiAlertRemoveOutline,
mdiAlertRhombus: mdiAlertRhombus,
mdiAlertRhombusOutline: mdiAlertRhombusOutline,
mdiAlien: mdiAlien,
mdiAlienOutline: mdiAlienOutline,
mdiAlignHorizontalCenter: mdiAlignHorizontalCenter,
mdiAlignHorizontalLeft: mdiAlignHorizontalLeft,
mdiAlignHorizontalRight: mdiAlignHorizontalRight,
mdiAlignVerticalBottom: mdiAlignVerticalBottom,
mdiAlignVerticalCenter: mdiAlignVerticalCenter,
mdiAlignVerticalTop: mdiAlignVerticalTop,
mdiAllInclusive: mdiAllInclusive,
mdiAllergy: mdiAllergy,
mdiAlpha: mdiAlpha,
mdiAlphaA: mdiAlphaA,
mdiAlphaABox: mdiAlphaABox,
mdiAlphaABoxOutline: mdiAlphaABoxOutline,
mdiAlphaACircle: mdiAlphaACircle,
mdiAlphaACircleOutline: mdiAlphaACircleOutline,
mdiAlphaB: mdiAlphaB,
mdiAlphaBBox: mdiAlphaBBox,
mdiAlphaBBoxOutline: mdiAlphaBBoxOutline,
mdiAlphaBCircle: mdiAlphaBCircle,
mdiAlphaBCircleOutline: mdiAlphaBCircleOutline,
mdiAlphaC: mdiAlphaC,
mdiAlphaCBox: mdiAlphaCBox,
mdiAlphaCBoxOutline: mdiAlphaCBoxOutline,
mdiAlphaCCircle: mdiAlphaCCircle,
mdiAlphaCCircleOutline: mdiAlphaCCircleOutline,
mdiAlphaD: mdiAlphaD,
mdiAlphaDBox: mdiAlphaDBox,
mdiAlphaDBoxOutline: mdiAlphaDBoxOutline,
mdiAlphaDCircle: mdiAlphaDCircle,
mdiAlphaDCircleOutline: mdiAlphaDCircleOutline,
mdiAlphaE: mdiAlphaE,
mdiAlphaEBox: mdiAlphaEBox,
mdiAlphaEBoxOutline: mdiAlphaEBoxOutline,
mdiAlphaECircle: mdiAlphaECircle,
mdiAlphaECircleOutline: mdiAlphaECircleOutline,
mdiAlphaF: mdiAlphaF,
mdiAlphaFBox: mdiAlphaFBox,
mdiAlphaFBoxOutline: mdiAlphaFBoxOutline,
mdiAlphaFCircle: mdiAlphaFCircle,
mdiAlphaFCircleOutline: mdiAlphaFCircleOutline,
mdiAlphaG: mdiAlphaG,
mdiAlphaGBox: mdiAlphaGBox,
mdiAlphaGBoxOutline: mdiAlphaGBoxOutline,
mdiAlphaGCircle: mdiAlphaGCircle,
mdiAlphaGCircleOutline: mdiAlphaGCircleOutline,
mdiAlphaH: mdiAlphaH,
mdiAlphaHBox: mdiAlphaHBox,
mdiAlphaHBoxOutline: mdiAlphaHBoxOutline,
mdiAlphaHCircle: mdiAlphaHCircle,
mdiAlphaHCircleOutline: mdiAlphaHCircleOutline,
mdiAlphaI: mdiAlphaI,
mdiAlphaIBox: mdiAlphaIBox,
mdiAlphaIBoxOutline: mdiAlphaIBoxOutline,
mdiAlphaICircle: mdiAlphaICircle,
mdiAlphaICircleOutline: mdiAlphaICircleOutline,
mdiAlphaJ: mdiAlphaJ,
mdiAlphaJBox: mdiAlphaJBox,
mdiAlphaJBoxOutline: mdiAlphaJBoxOutline,
mdiAlphaJCircle: mdiAlphaJCircle,
mdiAlphaJCircleOutline: mdiAlphaJCircleOutline,
mdiAlphaK: mdiAlphaK,
mdiAlphaKBox: mdiAlphaKBox,
mdiAlphaKBoxOutline: mdiAlphaKBoxOutline,
mdiAlphaKCircle: mdiAlphaKCircle,
mdiAlphaKCircleOutline: mdiAlphaKCircleOutline,
mdiAlphaL: mdiAlphaL,
mdiAlphaLBox: mdiAlphaLBox,
mdiAlphaLBoxOutline: mdiAlphaLBoxOutline,
mdiAlphaLCircle: mdiAlphaLCircle,
mdiAlphaLCircleOutline: mdiAlphaLCircleOutline,
mdiAlphaM: mdiAlphaM,
mdiAlphaMBox: mdiAlphaMBox,
mdiAlphaMBoxOutline: mdiAlphaMBoxOutline,
mdiAlphaMCircle: mdiAlphaMCircle,
mdiAlphaMCircleOutline: mdiAlphaMCircleOutline,
mdiAlphaN: mdiAlphaN,
mdiAlphaNBox: mdiAlphaNBox,
mdiAlphaNBoxOutline: mdiAlphaNBoxOutline,
mdiAlphaNCircle: mdiAlphaNCircle,
mdiAlphaNCircleOutline: mdiAlphaNCircleOutline,
mdiAlphaO: mdiAlphaO,
mdiAlphaOBox: mdiAlphaOBox,
mdiAlphaOBoxOutline: mdiAlphaOBoxOutline,
mdiAlphaOCircle: mdiAlphaOCircle,
mdiAlphaOCircleOutline: mdiAlphaOCircleOutline,
mdiAlphaP: mdiAlphaP,
mdiAlphaPBox: mdiAlphaPBox,
mdiAlphaPBoxOutline: mdiAlphaPBoxOutline,
mdiAlphaPCircle: mdiAlphaPCircle,
mdiAlphaPCircleOutline: mdiAlphaPCircleOutline,
mdiAlphaQ: mdiAlphaQ,
mdiAlphaQBox: mdiAlphaQBox,
mdiAlphaQBoxOutline: mdiAlphaQBoxOutline,
mdiAlphaQCircle: mdiAlphaQCircle,
mdiAlphaQCircleOutline: mdiAlphaQCircleOutline,
mdiAlphaR: mdiAlphaR,
mdiAlphaRBox: mdiAlphaRBox,
mdiAlphaRBoxOutline: mdiAlphaRBoxOutline,
mdiAlphaRCircle: mdiAlphaRCircle,
mdiAlphaRCircleOutline: mdiAlphaRCircleOutline,
mdiAlphaS: mdiAlphaS,
mdiAlphaSBox: mdiAlphaSBox,
mdiAlphaSBoxOutline: mdiAlphaSBoxOutline,
mdiAlphaSCircle: mdiAlphaSCircle,
mdiAlphaSCircleOutline: mdiAlphaSCircleOutline,
mdiAlphaT: mdiAlphaT,
mdiAlphaTBox: mdiAlphaTBox,
mdiAlphaTBoxOutline: mdiAlphaTBoxOutline,
mdiAlphaTCircle: mdiAlphaTCircle,
mdiAlphaTCircleOutline: mdiAlphaTCircleOutline,
mdiAlphaU: mdiAlphaU,
mdiAlphaUBox: mdiAlphaUBox,
mdiAlphaUBoxOutline: mdiAlphaUBoxOutline,
mdiAlphaUCircle: mdiAlphaUCircle,
mdiAlphaUCircleOutline: mdiAlphaUCircleOutline,
mdiAlphaV: mdiAlphaV,
mdiAlphaVBox: mdiAlphaVBox,
mdiAlphaVBoxOutline: mdiAlphaVBoxOutline,
mdiAlphaVCircle: mdiAlphaVCircle,
mdiAlphaVCircleOutline: mdiAlphaVCircleOutline,
mdiAlphaW: mdiAlphaW,
mdiAlphaWBox: mdiAlphaWBox,
mdiAlphaWBoxOutline: mdiAlphaWBoxOutline,
mdiAlphaWCircle: mdiAlphaWCircle,
mdiAlphaWCircleOutline: mdiAlphaWCircleOutline,
mdiAlphaX: mdiAlphaX,
mdiAlphaXBox: mdiAlphaXBox,
mdiAlphaXBoxOutline: mdiAlphaXBoxOutline,
mdiAlphaXCircle: mdiAlphaXCircle,
mdiAlphaXCircleOutline: mdiAlphaXCircleOutline,
mdiAlphaY: mdiAlphaY,
mdiAlphaYBox: mdiAlphaYBox,
mdiAlphaYBoxOutline: mdiAlphaYBoxOutline,
mdiAlphaYCircle: mdiAlphaYCircle,
mdiAlphaYCircleOutline: mdiAlphaYCircleOutline,
mdiAlphaZ: mdiAlphaZ,
mdiAlphaZBox: mdiAlphaZBox,
mdiAlphaZBoxOutline: mdiAlphaZBoxOutline,
mdiAlphaZCircle: mdiAlphaZCircle,
mdiAlphaZCircleOutline: mdiAlphaZCircleOutline,
mdiAlphabetAurebesh: mdiAlphabetAurebesh,
mdiAlphabetCyrillic: mdiAlphabetCyrillic,
mdiAlphabetGreek: mdiAlphabetGreek,
mdiAlphabetLatin: mdiAlphabetLatin,
mdiAlphabetPiqad: mdiAlphabetPiqad,
mdiAlphabetTengwar: mdiAlphabetTengwar,
mdiAlphabetical: mdiAlphabetical,
mdiAlphabeticalOff: mdiAlphabeticalOff,
mdiAlphabeticalVariant: mdiAlphabeticalVariant,
mdiAlphabeticalVariantOff: mdiAlphabeticalVariantOff,
mdiAltimeter: mdiAltimeter,
mdiAmazon: mdiAmazon,
mdiAmazonAlexa: mdiAmazonAlexa,
mdiAmbulance: mdiAmbulance,
mdiAmmunition: mdiAmmunition,
mdiAmpersand: mdiAmpersand,
mdiAmplifier: mdiAmplifier,
mdiAmplifierOff: mdiAmplifierOff,
mdiAnchor: mdiAnchor,
mdiAndroid: mdiAndroid,
mdiAndroidAuto: mdiAndroidAuto,
mdiAndroidDebugBridge: mdiAndroidDebugBridge,
mdiAndroidMessages: mdiAndroidMessages,
mdiAndroidStudio: mdiAndroidStudio,
mdiAngleAcute: mdiAngleAcute,
mdiAngleObtuse: mdiAngleObtuse,
mdiAngleRight: mdiAngleRight,
mdiAngular: mdiAngular,
mdiAngularjs: mdiAngularjs,
mdiAnimation: mdiAnimation,
mdiAnimationOutline: mdiAnimationOutline,
mdiAnimationPlay: mdiAnimationPlay,
mdiAnimationPlayOutline: mdiAnimationPlayOutline,
mdiAnsible: mdiAnsible,
mdiAntenna: mdiAntenna,
mdiAnvil: mdiAnvil,
mdiApacheKafka: mdiApacheKafka,
mdiApi: mdiApi,
mdiApiOff: mdiApiOff,
mdiApple: mdiApple,
mdiAppleAirplay: mdiAppleAirplay,
mdiAppleFinder: mdiAppleFinder,
mdiAppleIcloud: mdiAppleIcloud,
mdiAppleIos: mdiAppleIos,
mdiAppleKeyboardCaps: mdiAppleKeyboardCaps,
mdiAppleKeyboardCommand: mdiAppleKeyboardCommand,
mdiAppleKeyboardControl: mdiAppleKeyboardControl,
mdiAppleKeyboardOption: mdiAppleKeyboardOption,
mdiAppleKeyboardShift: mdiAppleKeyboardShift,
mdiAppleSafari: mdiAppleSafari,
mdiApplication: mdiApplication,
mdiApplicationCog: mdiApplicationCog,
mdiApplicationExport: mdiApplicationExport,
mdiApplicationImport: mdiApplicationImport,
mdiApplicationSettings: mdiApplicationSettings,
mdiApproximatelyEqual: mdiApproximatelyEqual,
mdiApproximatelyEqualBox: mdiApproximatelyEqualBox,
mdiApps: mdiApps,
mdiAppsBox: mdiAppsBox,
mdiArch: mdiArch,
mdiArchive: mdiArchive,
mdiArchiveAlert: mdiArchiveAlert,
mdiArchiveAlertOutline: mdiArchiveAlertOutline,
mdiArchiveArrowDown: mdiArchiveArrowDown,
mdiArchiveArrowDownOutline: mdiArchiveArrowDownOutline,
mdiArchiveArrowUp: mdiArchiveArrowUp,
mdiArchiveArrowUpOutline: mdiArchiveArrowUpOutline,
mdiArchiveOutline: mdiArchiveOutline,
mdiArmFlex: mdiArmFlex,
mdiArmFlexOutline: mdiArmFlexOutline,
mdiArrangeBringForward: mdiArrangeBringForward,
mdiArrangeBringToFront: mdiArrangeBringToFront,
mdiArrangeSendBackward: mdiArrangeSendBackward,
mdiArrangeSendToBack: mdiArrangeSendToBack,
mdiArrowAll: mdiArrowAll,
mdiArrowBottomLeft: mdiArrowBottomLeft,
mdiArrowBottomLeftBoldOutline: mdiArrowBottomLeftBoldOutline,
mdiArrowBottomLeftThick: mdiArrowBottomLeftThick,
mdiArrowBottomLeftThinCircleOutline: mdiArrowBottomLeftThinCircleOutline,
mdiArrowBottomRight: mdiArrowBottomRight,
mdiArrowBottomRightBoldOutline: mdiArrowBottomRightBoldOutline,
mdiArrowBottomRightThick: mdiArrowBottomRightThick,
mdiArrowBottomRightThinCircleOutline: mdiArrowBottomRightThinCircleOutline,
mdiArrowCollapse: mdiArrowCollapse,
mdiArrowCollapseAll: mdiArrowCollapseAll,
mdiArrowCollapseDown: mdiArrowCollapseDown,
mdiArrowCollapseHorizontal: mdiArrowCollapseHorizontal,
mdiArrowCollapseLeft: mdiArrowCollapseLeft,
mdiArrowCollapseRight: mdiArrowCollapseRight,
mdiArrowCollapseUp: mdiArrowCollapseUp,
mdiArrowCollapseVertical: mdiArrowCollapseVertical,
mdiArrowDecision: mdiArrowDecision,
mdiArrowDecisionAuto: mdiArrowDecisionAuto,
mdiArrowDecisionAutoOutline: mdiArrowDecisionAutoOutline,
mdiArrowDecisionOutline: mdiArrowDecisionOutline,
mdiArrowDown: mdiArrowDown,
mdiArrowDownBold: mdiArrowDownBold,
mdiArrowDownBoldBox: mdiArrowDownBoldBox,
mdiArrowDownBoldBoxOutline: mdiArrowDownBoldBoxOutline,
mdiArrowDownBoldCircle: mdiArrowDownBoldCircle,
mdiArrowDownBoldCircleOutline: mdiArrowDownBoldCircleOutline,
mdiArrowDownBoldHexagonOutline: mdiArrowDownBoldHexagonOutline,
mdiArrowDownBoldOutline: mdiArrowDownBoldOutline,
mdiArrowDownBox: mdiArrowDownBox,
mdiArrowDownCircle: mdiArrowDownCircle,
mdiArrowDownCircleOutline: mdiArrowDownCircleOutline,
mdiArrowDownDropCircle: mdiArrowDownDropCircle,
mdiArrowDownDropCircleOutline: mdiArrowDownDropCircleOutline,
mdiArrowDownThick: mdiArrowDownThick,
mdiArrowDownThinCircleOutline: mdiArrowDownThinCircleOutline,
mdiArrowExpand: mdiArrowExpand,
mdiArrowExpandAll: mdiArrowExpandAll,
mdiArrowExpandDown: mdiArrowExpandDown,
mdiArrowExpandHorizontal: mdiArrowExpandHorizontal,
mdiArrowExpandLeft: mdiArrowExpandLeft,
mdiArrowExpandRight: mdiArrowExpandRight,
mdiArrowExpandUp: mdiArrowExpandUp,
mdiArrowExpandVertical: mdiArrowExpandVertical,
mdiArrowHorizontalLock: mdiArrowHorizontalLock,
mdiArrowLeft: mdiArrowLeft,
mdiArrowLeftBold: mdiArrowLeftBold,
mdiArrowLeftBoldBox: mdiArrowLeftBoldBox,
mdiArrowLeftBoldBoxOutline: mdiArrowLeftBoldBoxOutline,
mdiArrowLeftBoldCircle: mdiArrowLeftBoldCircle,
mdiArrowLeftBoldCircleOutline: mdiArrowLeftBoldCircleOutline,
mdiArrowLeftBoldHexagonOutline: mdiArrowLeftBoldHexagonOutline,
mdiArrowLeftBoldOutline: mdiArrowLeftBoldOutline,
mdiArrowLeftBox: mdiArrowLeftBox,
mdiArrowLeftCircle: mdiArrowLeftCircle,
mdiArrowLeftCircleOutline: mdiArrowLeftCircleOutline,
mdiArrowLeftDropCircle: mdiArrowLeftDropCircle,
mdiArrowLeftDropCircleOutline: mdiArrowLeftDropCircleOutline,
mdiArrowLeftRight: mdiArrowLeftRight,
mdiArrowLeftRightBold: mdiArrowLeftRightBold,
mdiArrowLeftRightBoldOutline: mdiArrowLeftRightBoldOutline,
mdiArrowLeftThick: mdiArrowLeftThick,
mdiArrowLeftThinCircleOutline: mdiArrowLeftThinCircleOutline,
mdiArrowRight: mdiArrowRight,
mdiArrowRightBold: mdiArrowRightBold,
mdiArrowRightBoldBox: mdiArrowRightBoldBox,
mdiArrowRightBoldBoxOutline: mdiArrowRightBoldBoxOutline,
mdiArrowRightBoldCircle: mdiArrowRightBoldCircle,
mdiArrowRightBoldCircleOutline: mdiArrowRightBoldCircleOutline,
mdiArrowRightBoldHexagonOutline: mdiArrowRightBoldHexagonOutline,
mdiArrowRightBoldOutline: mdiArrowRightBoldOutline,
mdiArrowRightBox: mdiArrowRightBox,
mdiArrowRightCircle: mdiArrowRightCircle,
mdiArrowRightCircleOutline: mdiArrowRightCircleOutline,
mdiArrowRightDropCircle: mdiArrowRightDropCircle,
mdiArrowRightDropCircleOutline: mdiArrowRightDropCircleOutline,
mdiArrowRightThick: mdiArrowRightThick,
mdiArrowRightThinCircleOutline: mdiArrowRightThinCircleOutline,
mdiArrowSplitHorizontal: mdiArrowSplitHorizontal,
mdiArrowSplitVertical: mdiArrowSplitVertical,
mdiArrowTopLeft: mdiArrowTopLeft,
mdiArrowTopLeftBoldOutline: mdiArrowTopLeftBoldOutline,
mdiArrowTopLeftBottomRight: mdiArrowTopLeftBottomRight,
mdiArrowTopLeftBottomRightBold: mdiArrowTopLeftBottomRightBold,
mdiArrowTopLeftThick: mdiArrowTopLeftThick,
mdiArrowTopLeftThinCircleOutline: mdiArrowTopLeftThinCircleOutline,
mdiArrowTopRight: mdiArrowTopRight,
mdiArrowTopRightBoldOutline: mdiArrowTopRightBoldOutline,
mdiArrowTopRightBottomLeft: mdiArrowTopRightBottomLeft,
mdiArrowTopRightBottomLeftBold: mdiArrowTopRightBottomLeftBold,
mdiArrowTopRightThick: mdiArrowTopRightThick,
mdiArrowTopRightThinCircleOutline: mdiArrowTopRightThinCircleOutline,
mdiArrowUp: mdiArrowUp,
mdiArrowUpBold: mdiArrowUpBold,
mdiArrowUpBoldBox: mdiArrowUpBoldBox,
mdiArrowUpBoldBoxOutline: mdiArrowUpBoldBoxOutline,
mdiArrowUpBoldCircle: mdiArrowUpBoldCircle,
mdiArrowUpBoldCircleOutline: mdiArrowUpBoldCircleOutline,
mdiArrowUpBoldHexagonOutline: mdiArrowUpBoldHexagonOutline,
mdiArrowUpBoldOutline: mdiArrowUpBoldOutline,
mdiArrowUpBox: mdiArrowUpBox,
mdiArrowUpCircle: mdiArrowUpCircle,
mdiArrowUpCircleOutline: mdiArrowUpCircleOutline,
mdiArrowUpDown: mdiArrowUpDown,
mdiArrowUpDownBold: mdiArrowUpDownBold,
mdiArrowUpDownBoldOutline: mdiArrowUpDownBoldOutline,
mdiArrowUpDropCircle: mdiArrowUpDropCircle,
mdiArrowUpDropCircleOutline: mdiArrowUpDropCircleOutline,
mdiArrowUpThick: mdiArrowUpThick,
mdiArrowUpThinCircleOutline: mdiArrowUpThinCircleOutline,
mdiArrowVerticalLock: mdiArrowVerticalLock,
mdiArtstation: mdiArtstation,
mdiAspectRatio: mdiAspectRatio,
mdiAssistant: mdiAssistant,
mdiAsterisk: mdiAsterisk,
mdiAt: mdiAt,
mdiAtlassian: mdiAtlassian,
mdiAtm: mdiAtm,
mdiAtom: mdiAtom,
mdiAtomVariant: mdiAtomVariant,
mdiAttachment: mdiAttachment,
mdiAudioVideo: mdiAudioVideo,
mdiAudioVideoOff: mdiAudioVideoOff,
mdiAugmentedReality: mdiAugmentedReality,
mdiAutoDownload: mdiAutoDownload,
mdiAutoFix: mdiAutoFix,
mdiAutoUpload: mdiAutoUpload,
mdiAutorenew: mdiAutorenew,
mdiAvTimer: mdiAvTimer,
mdiAws: mdiAws,
mdiAxe: mdiAxe,
mdiAxis: mdiAxis,
mdiAxisArrow: mdiAxisArrow,
mdiAxisArrowInfo: mdiAxisArrowInfo,
mdiAxisArrowLock: mdiAxisArrowLock,
mdiAxisLock: mdiAxisLock,
mdiAxisXArrow: mdiAxisXArrow,
mdiAxisXArrowLock: mdiAxisXArrowLock,
mdiAxisXRotateClockwise: mdiAxisXRotateClockwise,
mdiAxisXRotateCounterclockwise: mdiAxisXRotateCounterclockwise,
mdiAxisXYArrowLock: mdiAxisXYArrowLock,
mdiAxisYArrow: mdiAxisYArrow,
mdiAxisYArrowLock: mdiAxisYArrowLock,
mdiAxisYRotateClockwise: mdiAxisYRotateClockwise,
mdiAxisYRotateCounterclockwise: mdiAxisYRotateCounterclockwise,
mdiAxisZArrow: mdiAxisZArrow,
mdiAxisZArrowLock: mdiAxisZArrowLock,
mdiAxisZRotateClockwise: mdiAxisZRotateClockwise,
mdiAxisZRotateCounterclockwise: mdiAxisZRotateCounterclockwise,
mdiBabel: mdiBabel,
mdiBaby: mdiBaby,
mdiBabyBottle: mdiBabyBottle,
mdiBabyBottleOutline: mdiBabyBottleOutline,
mdiBabyBuggy: mdiBabyBuggy,
mdiBabyCarriage: mdiBabyCarriage,
mdiBabyCarriageOff: mdiBabyCarriageOff,
mdiBabyFace: mdiBabyFace,
mdiBabyFaceOutline: mdiBabyFaceOutline,
mdiBackburger: mdiBackburger,
mdiBackspace: mdiBackspace,
mdiBackspaceOutline: mdiBackspaceOutline,
mdiBackspaceReverse: mdiBackspaceReverse,
mdiBackspaceReverseOutline: mdiBackspaceReverseOutline,
mdiBackupRestore: mdiBackupRestore,
mdiBacteria: mdiBacteria,
mdiBacteriaOutline: mdiBacteriaOutline,
mdiBadgeAccount: mdiBadgeAccount,
mdiBadgeAccountAlert: mdiBadgeAccountAlert,
mdiBadgeAccountAlertOutline: mdiBadgeAccountAlertOutline,
mdiBadgeAccountHorizontal: mdiBadgeAccountHorizontal,
mdiBadgeAccountHorizontalOutline: mdiBadgeAccountHorizontalOutline,
mdiBadgeAccountOutline: mdiBadgeAccountOutline,
mdiBadminton: mdiBadminton,
mdiBagCarryOn: mdiBagCarryOn,
mdiBagCarryOnCheck: mdiBagCarryOnCheck,
mdiBagCarryOnOff: mdiBagCarryOnOff,
mdiBagChecked: mdiBagChecked,
mdiBagPersonal: mdiBagPersonal,
mdiBagPersonalOff: mdiBagPersonalOff,
mdiBagPersonalOffOutline: mdiBagPersonalOffOutline,
mdiBagPersonalOutline: mdiBagPersonalOutline,
mdiBagSuitcase: mdiBagSuitcase,
mdiBagSuitcaseOff: mdiBagSuitcaseOff,
mdiBagSuitcaseOffOutline: mdiBagSuitcaseOffOutline,
mdiBagSuitcaseOutline: mdiBagSuitcaseOutline,
mdiBaguette: mdiBaguette,
mdiBalloon: mdiBalloon,
mdiBallot: mdiBallot,
mdiBallotOutline: mdiBallotOutline,
mdiBallotRecount: mdiBallotRecount,
mdiBallotRecountOutline: mdiBallotRecountOutline,
mdiBandage: mdiBandage,
mdiBandcamp: mdiBandcamp,
mdiBank: mdiBank,
mdiBankCheck: mdiBankCheck,
mdiBankMinus: mdiBankMinus,
mdiBankOff: mdiBankOff,
mdiBankOffOutline: mdiBankOffOutline,
mdiBankOutline: mdiBankOutline,
mdiBankPlus: mdiBankPlus,
mdiBankRemove: mdiBankRemove,
mdiBankTransfer: mdiBankTransfer,
mdiBankTransferIn: mdiBankTransferIn,
mdiBankTransferOut: mdiBankTransferOut,
mdiBarcode: mdiBarcode,
mdiBarcodeOff: mdiBarcodeOff,
mdiBarcodeScan: mdiBarcodeScan,
mdiBarley: mdiBarley,
mdiBarleyOff: mdiBarleyOff,
mdiBarn: mdiBarn,
mdiBarrel: mdiBarrel,
mdiBaseball: mdiBaseball,
mdiBaseballBat: mdiBaseballBat,
mdiBaseballDiamond: mdiBaseballDiamond,
mdiBaseballDiamondOutline: mdiBaseballDiamondOutline,
mdiBash: mdiBash,
mdiBasket: mdiBasket,
mdiBasketFill: mdiBasketFill,
mdiBasketMinus: mdiBasketMinus,
mdiBasketMinusOutline: mdiBasketMinusOutline,
mdiBasketOff: mdiBasketOff,
mdiBasketOffOutline: mdiBasketOffOutline,
mdiBasketOutline: mdiBasketOutline,
mdiBasketPlus: mdiBasketPlus,
mdiBasketPlusOutline: mdiBasketPlusOutline,
mdiBasketRemove: mdiBasketRemove,
mdiBasketRemoveOutline: mdiBasketRemoveOutline,
mdiBasketUnfill: mdiBasketUnfill,
mdiBasketball: mdiBasketball,
mdiBasketballHoop: mdiBasketballHoop,
mdiBasketballHoopOutline: mdiBasketballHoopOutline,
mdiBat: mdiBat,
mdiBattery: mdiBattery,
mdiBattery10: mdiBattery10,
mdiBattery10Bluetooth: mdiBattery10Bluetooth,
mdiBattery20: mdiBattery20,
mdiBattery20Bluetooth: mdiBattery20Bluetooth,
mdiBattery30: mdiBattery30,
mdiBattery30Bluetooth: mdiBattery30Bluetooth,
mdiBattery40: mdiBattery40,
mdiBattery40Bluetooth: mdiBattery40Bluetooth,
mdiBattery50: mdiBattery50,
mdiBattery50Bluetooth: mdiBattery50Bluetooth,
mdiBattery60: mdiBattery60,
mdiBattery60Bluetooth: mdiBattery60Bluetooth,
mdiBattery70: mdiBattery70,
mdiBattery70Bluetooth: mdiBattery70Bluetooth,
mdiBattery80: mdiBattery80,
mdiBattery80Bluetooth: mdiBattery80Bluetooth,
mdiBattery90: mdiBattery90,
mdiBattery90Bluetooth: mdiBattery90Bluetooth,
mdiBatteryAlert: mdiBatteryAlert,
mdiBatteryAlertBluetooth: mdiBatteryAlertBluetooth,
mdiBatteryAlertVariant: mdiBatteryAlertVariant,
mdiBatteryAlertVariantOutline: mdiBatteryAlertVariantOutline,
mdiBatteryBluetooth: mdiBatteryBluetooth,
mdiBatteryBluetoothVariant: mdiBatteryBluetoothVariant,
mdiBatteryCharging: mdiBatteryCharging,
mdiBatteryCharging10: mdiBatteryCharging10,
mdiBatteryCharging100: mdiBatteryCharging100,
mdiBatteryCharging20: mdiBatteryCharging20,
mdiBatteryCharging30: mdiBatteryCharging30,
mdiBatteryCharging40: mdiBatteryCharging40,
mdiBatteryCharging50: mdiBatteryCharging50,
mdiBatteryCharging60: mdiBatteryCharging60,
mdiBatteryCharging70: mdiBatteryCharging70,
mdiBatteryCharging80: mdiBatteryCharging80,
mdiBatteryCharging90: mdiBatteryCharging90,
mdiBatteryChargingHigh: mdiBatteryChargingHigh,
mdiBatteryChargingLow: mdiBatteryChargingLow,
mdiBatteryChargingMedium: mdiBatteryChargingMedium,
mdiBatteryChargingOutline: mdiBatteryChargingOutline,
mdiBatteryChargingWireless: mdiBatteryChargingWireless,
mdiBatteryChargingWireless10: mdiBatteryChargingWireless10,
mdiBatteryChargingWireless20: mdiBatteryChargingWireless20,
mdiBatteryChargingWireless30: mdiBatteryChargingWireless30,
mdiBatteryChargingWireless40: mdiBatteryChargingWireless40,
mdiBatteryChargingWireless50: mdiBatteryChargingWireless50,
mdiBatteryChargingWireless60: mdiBatteryChargingWireless60,
mdiBatteryChargingWireless70: mdiBatteryChargingWireless70,
mdiBatteryChargingWireless80: mdiBatteryChargingWireless80,
mdiBatteryChargingWireless90: mdiBatteryChargingWireless90,
mdiBatteryChargingWirelessAlert: mdiBatteryChargingWirelessAlert,
mdiBatteryChargingWirelessOutline: mdiBatteryChargingWirelessOutline,
mdiBatteryHeart: mdiBatteryHeart,
mdiBatteryHeartOutline: mdiBatteryHeartOutline,
mdiBatteryHeartVariant: mdiBatteryHeartVariant,
mdiBatteryHigh: mdiBatteryHigh,
mdiBatteryLow: mdiBatteryLow,
mdiBatteryMedium: mdiBatteryMedium,
mdiBatteryMinus: mdiBatteryMinus,
mdiBatteryNegative: mdiBatteryNegative,
mdiBatteryOff: mdiBatteryOff,
mdiBatteryOffOutline: mdiBatteryOffOutline,
mdiBatteryOutline: mdiBatteryOutline,
mdiBatteryPlus: mdiBatteryPlus,
mdiBatteryPositive: mdiBatteryPositive,
mdiBatteryUnknown: mdiBatteryUnknown,
mdiBatteryUnknownBluetooth: mdiBatteryUnknownBluetooth,
mdiBattlenet: mdiBattlenet,
mdiBeach: mdiBeach,
mdiBeaker: mdiBeaker,
mdiBeakerAlert: mdiBeakerAlert,
mdiBeakerAlertOutline: mdiBeakerAlertOutline,
mdiBeakerCheck: mdiBeakerCheck,
mdiBeakerCheckOutline: mdiBeakerCheckOutline,
mdiBeakerMinus: mdiBeakerMinus,
mdiBeakerMinusOutline: mdiBeakerMinusOutline,
mdiBeakerOutline: mdiBeakerOutline,
mdiBeakerPlus: mdiBeakerPlus,
mdiBeakerPlusOutline: mdiBeakerPlusOutline,
mdiBeakerQuestion: mdiBeakerQuestion,
mdiBeakerQuestionOutline: mdiBeakerQuestionOutline,
mdiBeakerRemove: mdiBeakerRemove,
mdiBeakerRemoveOutline: mdiBeakerRemoveOutline,
mdiBed: mdiBed,
mdiBedDouble: mdiBedDouble,
mdiBedDoubleOutline: mdiBedDoubleOutline,
mdiBedEmpty: mdiBedEmpty,
mdiBedKing: mdiBedKing,
mdiBedKingOutline: mdiBedKingOutline,
mdiBedOutline: mdiBedOutline,
mdiBedQueen: mdiBedQueen,
mdiBedQueenOutline: mdiBedQueenOutline,
mdiBedSingle: mdiBedSingle,
mdiBedSingleOutline: mdiBedSingleOutline,
mdiBee: mdiBee,
mdiBeeFlower: mdiBeeFlower,
mdiBeehiveOffOutline: mdiBeehiveOffOutline,
mdiBeehiveOutline: mdiBeehiveOutline,
mdiBeekeeper: mdiBeekeeper,
mdiBeer: mdiBeer,
mdiBeerOutline: mdiBeerOutline,
mdiBell: mdiBell,
mdiBellAlert: mdiBellAlert,
mdiBellAlertOutline: mdiBellAlertOutline,
mdiBellCancel: mdiBellCancel,
mdiBellCancelOutline: mdiBellCancelOutline,
mdiBellCheck: mdiBellCheck,
mdiBellCheckOutline: mdiBellCheckOutline,
mdiBellCircle: mdiBellCircle,
mdiBellCircleOutline: mdiBellCircleOutline,
mdiBellMinus: mdiBellMinus,
mdiBellMinusOutline: mdiBellMinusOutline,
mdiBellOff: mdiBellOff,
mdiBellOffOutline: mdiBellOffOutline,
mdiBellOutline: mdiBellOutline,
mdiBellPlus: mdiBellPlus,
mdiBellPlusOutline: mdiBellPlusOutline,
mdiBellRemove: mdiBellRemove,
mdiBellRemoveOutline: mdiBellRemoveOutline,
mdiBellRing: mdiBellRing,
mdiBellRingOutline: mdiBellRingOutline,
mdiBellSleep: mdiBellSleep,
mdiBellSleepOutline: mdiBellSleepOutline,
mdiBeta: mdiBeta,
mdiBetamax: mdiBetamax,
mdiBiathlon: mdiBiathlon,
mdiBicycle: mdiBicycle,
mdiBicycleBasket: mdiBicycleBasket,
mdiBicycleElectric: mdiBicycleElectric,
mdiBicyclePennyFarthing: mdiBicyclePennyFarthing,
mdiBike: mdiBike,
mdiBikeFast: mdiBikeFast,
mdiBillboard: mdiBillboard,
mdiBilliards: mdiBilliards,
mdiBilliardsRack: mdiBilliardsRack,
mdiBinoculars: mdiBinoculars,
mdiBio: mdiBio,
mdiBiohazard: mdiBiohazard,
mdiBird: mdiBird,
mdiBitbucket: mdiBitbucket,
mdiBitcoin: mdiBitcoin,
mdiBlackMesa: mdiBlackMesa,
mdiBlender: mdiBlender,
mdiBlenderSoftware: mdiBlenderSoftware,
mdiBlinds: mdiBlinds,
mdiBlindsOpen: mdiBlindsOpen,
mdiBlockHelper: mdiBlockHelper,
mdiBlogger: mdiBlogger,
mdiBloodBag: mdiBloodBag,
mdiBluetooth: mdiBluetooth,
mdiBluetoothAudio: mdiBluetoothAudio,
mdiBluetoothConnect: mdiBluetoothConnect,
mdiBluetoothOff: mdiBluetoothOff,
mdiBluetoothSettings: mdiBluetoothSettings,
mdiBluetoothTransfer: mdiBluetoothTransfer,
mdiBlur: mdiBlur,
mdiBlurLinear: mdiBlurLinear,
mdiBlurOff: mdiBlurOff,
mdiBlurRadial: mdiBlurRadial,
mdiBolnisiCross: mdiBolnisiCross,
mdiBolt: mdiBolt,
mdiBomb: mdiBomb,
mdiBombOff: mdiBombOff,
mdiBone: mdiBone,
mdiBook: mdiBook,
mdiBookAccount: mdiBookAccount,
mdiBookAccountOutline: mdiBookAccountOutline,
mdiBookAlert: mdiBookAlert,
mdiBookAlertOutline: mdiBookAlertOutline,
mdiBookAlphabet: mdiBookAlphabet,
mdiBookArrowDown: mdiBookArrowDown,
mdiBookArrowDownOutline: mdiBookArrowDownOutline,
mdiBookArrowLeft: mdiBookArrowLeft,
mdiBookArrowLeftOutline: mdiBookArrowLeftOutline,
mdiBookArrowRight: mdiBookArrowRight,
mdiBookArrowRightOutline: mdiBookArrowRightOutline,
mdiBookArrowUp: mdiBookArrowUp,
mdiBookArrowUpOutline: mdiBookArrowUpOutline,
mdiBookCancel: mdiBookCancel,
mdiBookCancelOutline: mdiBookCancelOutline,
mdiBookCheck: mdiBookCheck,
mdiBookCheckOutline: mdiBookCheckOutline,
mdiBookClock: mdiBookClock,
mdiBookClockOutline: mdiBookClockOutline,
mdiBookCog: mdiBookCog,
mdiBookCogOutline: mdiBookCogOutline,
mdiBookCross: mdiBookCross,
mdiBookEdit: mdiBookEdit,
mdiBookEditOutline: mdiBookEditOutline,
mdiBookEducation: mdiBookEducation,
mdiBookEducationOutline: mdiBookEducationOutline,
mdiBookInformationVariant: mdiBookInformationVariant,
mdiBookLock: mdiBookLock,
mdiBookLockOpen: mdiBookLockOpen,
mdiBookLockOpenOutline: mdiBookLockOpenOutline,
mdiBookLockOutline: mdiBookLockOutline,
mdiBookMarker: mdiBookMarker,
mdiBookMarkerOutline: mdiBookMarkerOutline,
mdiBookMinus: mdiBookMinus,
mdiBookMinusMultiple: mdiBookMinusMultiple,
mdiBookMinusMultipleOutline: mdiBookMinusMultipleOutline,
mdiBookMinusOutline: mdiBookMinusOutline,
mdiBookMultiple: mdiBookMultiple,
mdiBookMultipleOutline: mdiBookMultipleOutline,
mdiBookMusic: mdiBookMusic,
mdiBookMusicOutline: mdiBookMusicOutline,
mdiBookOff: mdiBookOff,
mdiBookOffOutline: mdiBookOffOutline,
mdiBookOpen: mdiBookOpen,
mdiBookOpenBlankVariant: mdiBookOpenBlankVariant,
mdiBookOpenOutline: mdiBookOpenOutline,
mdiBookOpenPageVariant: mdiBookOpenPageVariant,
mdiBookOpenPageVariantOutline: mdiBookOpenPageVariantOutline,
mdiBookOpenVariant: mdiBookOpenVariant,
mdiBookOutline: mdiBookOutline,
mdiBookPlay: mdiBookPlay,
mdiBookPlayOutline: mdiBookPlayOutline,
mdiBookPlus: mdiBookPlus,
mdiBookPlusMultiple: mdiBookPlusMultiple,
mdiBookPlusMultipleOutline: mdiBookPlusMultipleOutline,
mdiBookPlusOutline: mdiBookPlusOutline,
mdiBookRefresh: mdiBookRefresh,
mdiBookRefreshOutline: mdiBookRefreshOutline,
mdiBookRemove: mdiBookRemove,
mdiBookRemoveMultiple: mdiBookRemoveMultiple,
mdiBookRemoveMultipleOutline: mdiBookRemoveMultipleOutline,
mdiBookRemoveOutline: mdiBookRemoveOutline,
mdiBookSearch: mdiBookSearch,
mdiBookSearchOutline: mdiBookSearchOutline,
mdiBookSettings: mdiBookSettings,
mdiBookSettingsOutline: mdiBookSettingsOutline,
mdiBookSync: mdiBookSync,
mdiBookSyncOutline: mdiBookSyncOutline,
mdiBookVariant: mdiBookVariant,
mdiBookVariantMultiple: mdiBookVariantMultiple,
mdiBookmark: mdiBookmark,
mdiBookmarkCheck: mdiBookmarkCheck,
mdiBookmarkCheckOutline: mdiBookmarkCheckOutline,
mdiBookmarkMinus: mdiBookmarkMinus,
mdiBookmarkMinusOutline: mdiBookmarkMinusOutline,
mdiBookmarkMultiple: mdiBookmarkMultiple,
mdiBookmarkMultipleOutline: mdiBookmarkMultipleOutline,
mdiBookmarkMusic: mdiBookmarkMusic,
mdiBookmarkMusicOutline: mdiBookmarkMusicOutline,
mdiBookmarkOff: mdiBookmarkOff,
mdiBookmarkOffOutline: mdiBookmarkOffOutline,
mdiBookmarkOutline: mdiBookmarkOutline,
mdiBookmarkPlus: mdiBookmarkPlus,
mdiBookmarkPlusOutline: mdiBookmarkPlusOutline,
mdiBookmarkRemove: mdiBookmarkRemove,
mdiBookmarkRemoveOutline: mdiBookmarkRemoveOutline,
mdiBookshelf: mdiBookshelf,
mdiBoomGate: mdiBoomGate,
mdiBoomGateAlert: mdiBoomGateAlert,
mdiBoomGateAlertOutline: mdiBoomGateAlertOutline,
mdiBoomGateDown: mdiBoomGateDown,
mdiBoomGateDownOutline: mdiBoomGateDownOutline,
mdiBoomGateOutline: mdiBoomGateOutline,
mdiBoomGateUp: mdiBoomGateUp,
mdiBoomGateUpOutline: mdiBoomGateUpOutline,
mdiBoombox: mdiBoombox,
mdiBoomerang: mdiBoomerang,
mdiBootstrap: mdiBootstrap,
mdiBorderAll: mdiBorderAll,
mdiBorderAllVariant: mdiBorderAllVariant,
mdiBorderBottom: mdiBorderBottom,
mdiBorderBottomVariant: mdiBorderBottomVariant,
mdiBorderColor: mdiBorderColor,
mdiBorderHorizontal: mdiBorderHorizontal,
mdiBorderInside: mdiBorderInside,
mdiBorderLeft: mdiBorderLeft,
mdiBorderLeftVariant: mdiBorderLeftVariant,
mdiBorderNone: mdiBorderNone,
mdiBorderNoneVariant: mdiBorderNoneVariant,
mdiBorderOutside: mdiBorderOutside,
mdiBorderRight: mdiBorderRight,
mdiBorderRightVariant: mdiBorderRightVariant,
mdiBorderStyle: mdiBorderStyle,
mdiBorderTop: mdiBorderTop,
mdiBorderTopVariant: mdiBorderTopVariant,
mdiBorderVertical: mdiBorderVertical,
mdiBottleSoda: mdiBottleSoda,
mdiBottleSodaClassic: mdiBottleSodaClassic,
mdiBottleSodaClassicOutline: mdiBottleSodaClassicOutline,
mdiBottleSodaOutline: mdiBottleSodaOutline,
mdiBottleTonic: mdiBottleTonic,
mdiBottleTonicOutline: mdiBottleTonicOutline,
mdiBottleTonicPlus: mdiBottleTonicPlus,
mdiBottleTonicPlusOutline: mdiBottleTonicPlusOutline,
mdiBottleTonicSkull: mdiBottleTonicSkull,
mdiBottleTonicSkullOutline: mdiBottleTonicSkullOutline,
mdiBottleWine: mdiBottleWine,
mdiBottleWineOutline: mdiBottleWineOutline,
mdiBowTie: mdiBowTie,
mdiBowl: mdiBowl,
mdiBowlMix: mdiBowlMix,
mdiBowlMixOutline: mdiBowlMixOutline,
mdiBowlOutline: mdiBowlOutline,
mdiBowling: mdiBowling,
mdiBox: mdiBox,
mdiBoxCutter: mdiBoxCutter,
mdiBoxCutterOff: mdiBoxCutterOff,
mdiBoxShadow: mdiBoxShadow,
mdiBoxingGlove: mdiBoxingGlove,
mdiBraille: mdiBraille,
mdiBrain: mdiBrain,
mdiBreadSlice: mdiBreadSlice,
mdiBreadSliceOutline: mdiBreadSliceOutline,
mdiBridge: mdiBridge,
mdiBriefcase: mdiBriefcase,
mdiBriefcaseAccount: mdiBriefcaseAccount,
mdiBriefcaseAccountOutline: mdiBriefcaseAccountOutline,
mdiBriefcaseCheck: mdiBriefcaseCheck,
mdiBriefcaseCheckOutline: mdiBriefcaseCheckOutline,
mdiBriefcaseClock: mdiBriefcaseClock,
mdiBriefcaseClockOutline: mdiBriefcaseClockOutline,
mdiBriefcaseDownload: mdiBriefcaseDownload,
mdiBriefcaseDownloadOutline: mdiBriefcaseDownloadOutline,
mdiBriefcaseEdit: mdiBriefcaseEdit,
mdiBriefcaseEditOutline: mdiBriefcaseEditOutline,
mdiBriefcaseMinus: mdiBriefcaseMinus,
mdiBriefcaseMinusOutline: mdiBriefcaseMinusOutline,
mdiBriefcaseOff: mdiBriefcaseOff,
mdiBriefcaseOffOutline: mdiBriefcaseOffOutline,
mdiBriefcaseOutline: mdiBriefcaseOutline,
mdiBriefcasePlus: mdiBriefcasePlus,
mdiBriefcasePlusOutline: mdiBriefcasePlusOutline,
mdiBriefcaseRemove: mdiBriefcaseRemove,
mdiBriefcaseRemoveOutline: mdiBriefcaseRemoveOutline,
mdiBriefcaseSearch: mdiBriefcaseSearch,
mdiBriefcaseSearchOutline: mdiBriefcaseSearchOutline,
mdiBriefcaseUpload: mdiBriefcaseUpload,
mdiBriefcaseUploadOutline: mdiBriefcaseUploadOutline,
mdiBriefcaseVariant: mdiBriefcaseVariant,
mdiBriefcaseVariantOff: mdiBriefcaseVariantOff,
mdiBriefcaseVariantOffOutline: mdiBriefcaseVariantOffOutline,
mdiBriefcaseVariantOutline: mdiBriefcaseVariantOutline,
mdiBrightness1: mdiBrightness1,
mdiBrightness2: mdiBrightness2,
mdiBrightness3: mdiBrightness3,
mdiBrightness4: mdiBrightness4,
mdiBrightness5: mdiBrightness5,
mdiBrightness6: mdiBrightness6,
mdiBrightness7: mdiBrightness7,
mdiBrightnessAuto: mdiBrightnessAuto,
mdiBrightnessPercent: mdiBrightnessPercent,
mdiBroadcast: mdiBroadcast,
mdiBroadcastOff: mdiBroadcastOff,
mdiBroom: mdiBroom,
mdiBrush: mdiBrush,
mdiBucket: mdiBucket,
mdiBucketOutline: mdiBucketOutline,
mdiBuddhism: mdiBuddhism,
mdiBuffer: mdiBuffer,
mdiBuffet: mdiBuffet,
mdiBug: mdiBug,
mdiBugCheck: mdiBugCheck,
mdiBugCheckOutline: mdiBugCheckOutline,
mdiBugOutline: mdiBugOutline,
mdiBugle: mdiBugle,
mdiBulldozer: mdiBulldozer,
mdiBullet: mdiBullet,
mdiBulletinBoard: mdiBulletinBoard,
mdiBullhorn: mdiBullhorn,
mdiBullhornOutline: mdiBullhornOutline,
mdiBullseye: mdiBullseye,
mdiBullseyeArrow: mdiBullseyeArrow,
mdiBulma: mdiBulma,
mdiBunkBed: mdiBunkBed,
mdiBunkBedOutline: mdiBunkBedOutline,
mdiBus: mdiBus,
mdiBusAlert: mdiBusAlert,
mdiBusArticulatedEnd: mdiBusArticulatedEnd,
mdiBusArticulatedFront: mdiBusArticulatedFront,
mdiBusClock: mdiBusClock,
mdiBusDoubleDecker: mdiBusDoubleDecker,
mdiBusMarker: mdiBusMarker,
mdiBusMultiple: mdiBusMultiple,
mdiBusSchool: mdiBusSchool,
mdiBusSide: mdiBusSide,
mdiBusStop: mdiBusStop,
mdiBusStopCovered: mdiBusStopCovered,
mdiBusStopUncovered: mdiBusStopUncovered,
mdiButterfly: mdiButterfly,
mdiButterflyOutline: mdiButterflyOutline,
mdiCableData: mdiCableData,
mdiCached: mdiCached,
mdiCactus: mdiCactus,
mdiCake: mdiCake,
mdiCakeLayered: mdiCakeLayered,
mdiCakeVariant: mdiCakeVariant,
mdiCalculator: mdiCalculator,
mdiCalculatorVariant: mdiCalculatorVariant,
mdiCalculatorVariantOutline: mdiCalculatorVariantOutline,
mdiCalendar: mdiCalendar,
mdiCalendarAccount: mdiCalendarAccount,
mdiCalendarAccountOutline: mdiCalendarAccountOutline,
mdiCalendarAlert: mdiCalendarAlert,
mdiCalendarArrowLeft: mdiCalendarArrowLeft,
mdiCalendarArrowRight: mdiCalendarArrowRight,
mdiCalendarBlank: mdiCalendarBlank,
mdiCalendarBlankMultiple: mdiCalendarBlankMultiple,
mdiCalendarBlankOutline: mdiCalendarBlankOutline,
mdiCalendarCheck: mdiCalendarCheck,
mdiCalendarCheckOutline: mdiCalendarCheckOutline,
mdiCalendarClock: mdiCalendarClock,
mdiCalendarClockOutline: mdiCalendarClockOutline,
mdiCalendarCursor: mdiCalendarCursor,
mdiCalendarEdit: mdiCalendarEdit,
mdiCalendarEnd: mdiCalendarEnd,
mdiCalendarExport: mdiCalendarExport,
mdiCalendarHeart: mdiCalendarHeart,
mdiCalendarImport: mdiCalendarImport,
mdiCalendarLock: mdiCalendarLock,
mdiCalendarLockOutline: mdiCalendarLockOutline,
mdiCalendarMinus: mdiCalendarMinus,
mdiCalendarMonth: mdiCalendarMonth,
mdiCalendarMonthOutline: mdiCalendarMonthOutline,
mdiCalendarMultiple: mdiCalendarMultiple,
mdiCalendarMultipleCheck: mdiCalendarMultipleCheck,
mdiCalendarMultiselect: mdiCalendarMultiselect,
mdiCalendarOutline: mdiCalendarOutline,
mdiCalendarPlus: mdiCalendarPlus,
mdiCalendarQuestion: mdiCalendarQuestion,
mdiCalendarRange: mdiCalendarRange,
mdiCalendarRangeOutline: mdiCalendarRangeOutline,
mdiCalendarRefresh: mdiCalendarRefresh,
mdiCalendarRefreshOutline: mdiCalendarRefreshOutline,
mdiCalendarRemove: mdiCalendarRemove,
mdiCalendarRemoveOutline: mdiCalendarRemoveOutline,
mdiCalendarSearch: mdiCalendarSearch,
mdiCalendarStar: mdiCalendarStar,
mdiCalendarStart: mdiCalendarStart,
mdiCalendarSync: mdiCalendarSync,
mdiCalendarSyncOutline: mdiCalendarSyncOutline,
mdiCalendarText: mdiCalendarText,
mdiCalendarTextOutline: mdiCalendarTextOutline,
mdiCalendarToday: mdiCalendarToday,
mdiCalendarWeek: mdiCalendarWeek,
mdiCalendarWeekBegin: mdiCalendarWeekBegin,
mdiCalendarWeekend: mdiCalendarWeekend,
mdiCalendarWeekendOutline: mdiCalendarWeekendOutline,
mdiCallMade: mdiCallMade,
mdiCallMerge: mdiCallMerge,
mdiCallMissed: mdiCallMissed,
mdiCallReceived: mdiCallReceived,
mdiCallSplit: mdiCallSplit,
mdiCamcorder: mdiCamcorder,
mdiCamcorderOff: mdiCamcorderOff,
mdiCamera: mdiCamera,
mdiCameraAccount: mdiCameraAccount,
mdiCameraBurst: mdiCameraBurst,
mdiCameraControl: mdiCameraControl,
mdiCameraEnhance: mdiCameraEnhance,
mdiCameraEnhanceOutline: mdiCameraEnhanceOutline,
mdiCameraFlip: mdiCameraFlip,
mdiCameraFlipOutline: mdiCameraFlipOutline,
mdiCameraFront: mdiCameraFront,
mdiCameraFrontVariant: mdiCameraFrontVariant,
mdiCameraGopro: mdiCameraGopro,
mdiCameraImage: mdiCameraImage,
mdiCameraIris: mdiCameraIris,
mdiCameraMeteringCenter: mdiCameraMeteringCenter,
mdiCameraMeteringMatrix: mdiCameraMeteringMatrix,
mdiCameraMeteringPartial: mdiCameraMeteringPartial,
mdiCameraMeteringSpot: mdiCameraMeteringSpot,
mdiCameraOff: mdiCameraOff,
mdiCameraOutline: mdiCameraOutline,
mdiCameraPartyMode: mdiCameraPartyMode,
mdiCameraPlus: mdiCameraPlus,
mdiCameraPlusOutline: mdiCameraPlusOutline,
mdiCameraRear: mdiCameraRear,
mdiCameraRearVariant: mdiCameraRearVariant,
mdiCameraRetake: mdiCameraRetake,
mdiCameraRetakeOutline: mdiCameraRetakeOutline,
mdiCameraSwitch: mdiCameraSwitch,
mdiCameraSwitchOutline: mdiCameraSwitchOutline,
mdiCameraTimer: mdiCameraTimer,
mdiCameraWireless: mdiCameraWireless,
mdiCameraWirelessOutline: mdiCameraWirelessOutline,
mdiCampfire: mdiCampfire,
mdiCancel: mdiCancel,
mdiCandle: mdiCandle,
mdiCandycane: mdiCandycane,
mdiCannabis: mdiCannabis,
mdiCannabisOff: mdiCannabisOff,
mdiCapsLock: mdiCapsLock,
mdiCar: mdiCar,
mdiCar2Plus: mdiCar2Plus,
mdiCar3Plus: mdiCar3Plus,
mdiCarArrowLeft: mdiCarArrowLeft,
mdiCarArrowRight: mdiCarArrowRight,
mdiCarBack: mdiCarBack,
mdiCarBattery: mdiCarBattery,
mdiCarBrakeAbs: mdiCarBrakeAbs,
mdiCarBrakeAlert: mdiCarBrakeAlert,
mdiCarBrakeHold: mdiCarBrakeHold,
mdiCarBrakeParking: mdiCarBrakeParking,
mdiCarBrakeRetarder: mdiCarBrakeRetarder,
mdiCarChildSeat: mdiCarChildSeat,
mdiCarClutch: mdiCarClutch,
mdiCarCog: mdiCarCog,
mdiCarConnected: mdiCarConnected,
mdiCarConvertible: mdiCarConvertible,
mdiCarCoolantLevel: mdiCarCoolantLevel,
mdiCarCruiseControl: mdiCarCruiseControl,
mdiCarDefrostFront: mdiCarDefrostFront,
mdiCarDefrostRear: mdiCarDefrostRear,
mdiCarDoor: mdiCarDoor,
mdiCarDoorLock: mdiCarDoorLock,
mdiCarElectric: mdiCarElectric,
mdiCarElectricOutline: mdiCarElectricOutline,
mdiCarEmergency: mdiCarEmergency,
mdiCarEsp: mdiCarEsp,
mdiCarEstate: mdiCarEstate,
mdiCarHatchback: mdiCarHatchback,
mdiCarInfo: mdiCarInfo,
mdiCarKey: mdiCarKey,
mdiCarLiftedPickup: mdiCarLiftedPickup,
mdiCarLightDimmed: mdiCarLightDimmed,
mdiCarLightFog: mdiCarLightFog,
mdiCarLightHigh: mdiCarLightHigh,
mdiCarLimousine: mdiCarLimousine,
mdiCarMultiple: mdiCarMultiple,
mdiCarOff: mdiCarOff,
mdiCarOutline: mdiCarOutline,
mdiCarParkingLights: mdiCarParkingLights,
mdiCarPickup: mdiCarPickup,
mdiCarSeat: mdiCarSeat,
mdiCarSeatCooler: mdiCarSeatCooler,
mdiCarSeatHeater: mdiCarSeatHeater,
mdiCarSettings: mdiCarSettings,
mdiCarShiftPattern: mdiCarShiftPattern,
mdiCarSide: mdiCarSide,
mdiCarSports: mdiCarSports,
mdiCarTireAlert: mdiCarTireAlert,
mdiCarTractionControl: mdiCarTractionControl,
mdiCarTurbocharger: mdiCarTurbocharger,
mdiCarWash: mdiCarWash,
mdiCarWindshield: mdiCarWindshield,
mdiCarWindshieldOutline: mdiCarWindshieldOutline,
mdiCarabiner: mdiCarabiner,
mdiCaravan: mdiCaravan,
mdiCard: mdiCard,
mdiCardAccountDetails: mdiCardAccountDetails,
mdiCardAccountDetailsOutline: mdiCardAccountDetailsOutline,
mdiCardAccountDetailsStar: mdiCardAccountDetailsStar,
mdiCardAccountDetailsStarOutline: mdiCardAccountDetailsStarOutline,
mdiCardAccountMail: mdiCardAccountMail,
mdiCardAccountMailOutline: mdiCardAccountMailOutline,
mdiCardAccountPhone: mdiCardAccountPhone,
mdiCardAccountPhoneOutline: mdiCardAccountPhoneOutline,
mdiCardBulleted: mdiCardBulleted,
mdiCardBulletedOff: mdiCardBulletedOff,
mdiCardBulletedOffOutline: mdiCardBulletedOffOutline,
mdiCardBulletedOutline: mdiCardBulletedOutline,
mdiCardBulletedSettings: mdiCardBulletedSettings,
mdiCardBulletedSettingsOutline: mdiCardBulletedSettingsOutline,
mdiCardMinus: mdiCardMinus,
mdiCardMinusOutline: mdiCardMinusOutline,
mdiCardOff: mdiCardOff,
mdiCardOffOutline: mdiCardOffOutline,
mdiCardOutline: mdiCardOutline,
mdiCardPlus: mdiCardPlus,
mdiCardPlusOutline: mdiCardPlusOutline,
mdiCardRemove: mdiCardRemove,
mdiCardRemoveOutline: mdiCardRemoveOutline,
mdiCardSearch: mdiCardSearch,
mdiCardSearchOutline: mdiCardSearchOutline,
mdiCardText: mdiCardText,
mdiCardTextOutline: mdiCardTextOutline,
mdiCards: mdiCards,
mdiCardsClub: mdiCardsClub,
mdiCardsDiamond: mdiCardsDiamond,
mdiCardsDiamondOutline: mdiCardsDiamondOutline,
mdiCardsHeart: mdiCardsHeart,
mdiCardsOutline: mdiCardsOutline,
mdiCardsPlayingOutline: mdiCardsPlayingOutline,
mdiCardsSpade: mdiCardsSpade,
mdiCardsVariant: mdiCardsVariant,
mdiCarrot: mdiCarrot,
mdiCart: mdiCart,
mdiCartArrowDown: mdiCartArrowDown,
mdiCartArrowRight: mdiCartArrowRight,
mdiCartArrowUp: mdiCartArrowUp,
mdiCartCheck: mdiCartCheck,
mdiCartMinus: mdiCartMinus,
mdiCartOff: mdiCartOff,
mdiCartOutline: mdiCartOutline,
mdiCartPlus: mdiCartPlus,
mdiCartRemove: mdiCartRemove,
mdiCartVariant: mdiCartVariant,
mdiCaseSensitiveAlt: mdiCaseSensitiveAlt,
mdiCash: mdiCash,
mdiCash100: mdiCash100,
mdiCashCheck: mdiCashCheck,
mdiCashLock: mdiCashLock,
mdiCashLockOpen: mdiCashLockOpen,
mdiCashMarker: mdiCashMarker,
mdiCashMinus: mdiCashMinus,
mdiCashMultiple: mdiCashMultiple,
mdiCashPlus: mdiCashPlus,
mdiCashRefund: mdiCashRefund,
mdiCashRegister: mdiCashRegister,
mdiCashRemove: mdiCashRemove,
mdiCashUsd: mdiCashUsd,
mdiCashUsdOutline: mdiCashUsdOutline,
mdiCassette: mdiCassette,
mdiCast: mdiCast,
mdiCastAudio: mdiCastAudio,
mdiCastConnected: mdiCastConnected,
mdiCastEducation: mdiCastEducation,
mdiCastOff: mdiCastOff,
mdiCastle: mdiCastle,
mdiCat: mdiCat,
mdiCctv: mdiCctv,
mdiCeilingLight: mdiCeilingLight,
mdiCellphone: mdiCellphone,
mdiCellphoneAndroid: mdiCellphoneAndroid,
mdiCellphoneArrowDown: mdiCellphoneArrowDown,
mdiCellphoneBasic: mdiCellphoneBasic,
mdiCellphoneCharging: mdiCellphoneCharging,
mdiCellphoneCog: mdiCellphoneCog,
mdiCellphoneDock: mdiCellphoneDock,
mdiCellphoneErase: mdiCellphoneErase,
mdiCellphoneInformation: mdiCellphoneInformation,
mdiCellphoneIphone: mdiCellphoneIphone,
mdiCellphoneKey: mdiCellphoneKey,
mdiCellphoneLink: mdiCellphoneLink,
mdiCellphoneLinkOff: mdiCellphoneLinkOff,
mdiCellphoneLock: mdiCellphoneLock,
mdiCellphoneMessage: mdiCellphoneMessage,
mdiCellphoneMessageOff: mdiCellphoneMessageOff,
mdiCellphoneNfc: mdiCellphoneNfc,
mdiCellphoneNfcOff: mdiCellphoneNfcOff,
mdiCellphoneOff: mdiCellphoneOff,
mdiCellphonePlay: mdiCellphonePlay,
mdiCellphoneScreenshot: mdiCellphoneScreenshot,
mdiCellphoneSettings: mdiCellphoneSettings,
mdiCellphoneSound: mdiCellphoneSound,
mdiCellphoneText: mdiCellphoneText,
mdiCellphoneWireless: mdiCellphoneWireless,
mdiCelticCross: mdiCelticCross,
mdiCentos: mdiCentos,
mdiCertificate: mdiCertificate,
mdiCertificateOutline: mdiCertificateOutline,
mdiChairRolling: mdiChairRolling,
mdiChairSchool: mdiChairSchool,
mdiCharity: mdiCharity,
mdiChartArc: mdiChartArc,
mdiChartAreaspline: mdiChartAreaspline,
mdiChartAreasplineVariant: mdiChartAreasplineVariant,
mdiChartBar: mdiChartBar,
mdiChartBarStacked: mdiChartBarStacked,
mdiChartBellCurve: mdiChartBellCurve,
mdiChartBellCurveCumulative: mdiChartBellCurveCumulative,
mdiChartBox: mdiChartBox,
mdiChartBoxOutline: mdiChartBoxOutline,
mdiChartBoxPlusOutline: mdiChartBoxPlusOutline,
mdiChartBubble: mdiChartBubble,
mdiChartDonut: mdiChartDonut,
mdiChartDonutVariant: mdiChartDonutVariant,
mdiChartGantt: mdiChartGantt,
mdiChartHistogram: mdiChartHistogram,
mdiChartLine: mdiChartLine,
mdiChartLineStacked: mdiChartLineStacked,
mdiChartLineVariant: mdiChartLineVariant,
mdiChartMultiline: mdiChartMultiline,
mdiChartMultiple: mdiChartMultiple,
mdiChartPie: mdiChartPie,
mdiChartPpf: mdiChartPpf,
mdiChartSankey: mdiChartSankey,
mdiChartSankeyVariant: mdiChartSankeyVariant,
mdiChartScatterPlot: mdiChartScatterPlot,
mdiChartScatterPlotHexbin: mdiChartScatterPlotHexbin,
mdiChartTimeline: mdiChartTimeline,
mdiChartTimelineVariant: mdiChartTimelineVariant,
mdiChartTimelineVariantShimmer: mdiChartTimelineVariantShimmer,
mdiChartTree: mdiChartTree,
mdiChat: mdiChat,
mdiChatAlert: mdiChatAlert,
mdiChatAlertOutline: mdiChatAlertOutline,
mdiChatMinus: mdiChatMinus,
mdiChatMinusOutline: mdiChatMinusOutline,
mdiChatOutline: mdiChatOutline,
mdiChatPlus: mdiChatPlus,
mdiChatPlusOutline: mdiChatPlusOutline,
mdiChatProcessing: mdiChatProcessing,
mdiChatProcessingOutline: mdiChatProcessingOutline,
mdiChatQuestion: mdiChatQuestion,
mdiChatQuestionOutline: mdiChatQuestionOutline,
mdiChatRemove: mdiChatRemove,
mdiChatRemoveOutline: mdiChatRemoveOutline,
mdiChatSleep: mdiChatSleep,
mdiChatSleepOutline: mdiChatSleepOutline,
mdiCheck: mdiCheck,
mdiCheckAll: mdiCheckAll,
mdiCheckBold: mdiCheckBold,
mdiCheckBoxMultipleOutline: mdiCheckBoxMultipleOutline,
mdiCheckBoxOutline: mdiCheckBoxOutline,
mdiCheckCircle: mdiCheckCircle,
mdiCheckCircleOutline: mdiCheckCircleOutline,
mdiCheckDecagram: mdiCheckDecagram,
mdiCheckDecagramOutline: mdiCheckDecagramOutline,
mdiCheckNetwork: mdiCheckNetwork,
mdiCheckNetworkOutline: mdiCheckNetworkOutline,
mdiCheckOutline: mdiCheckOutline,
mdiCheckUnderline: mdiCheckUnderline,
mdiCheckUnderlineCircle: mdiCheckUnderlineCircle,
mdiCheckUnderlineCircleOutline: mdiCheckUnderlineCircleOutline,
mdiCheckbook: mdiCheckbook,
mdiCheckboxBlank: mdiCheckboxBlank,
mdiCheckboxBlankCircle: mdiCheckboxBlankCircle,
mdiCheckboxBlankCircleOutline: mdiCheckboxBlankCircleOutline,
mdiCheckboxBlankOff: mdiCheckboxBlankOff,
mdiCheckboxBlankOffOutline: mdiCheckboxBlankOffOutline,
mdiCheckboxBlankOutline: mdiCheckboxBlankOutline,
mdiCheckboxIntermediate: mdiCheckboxIntermediate,
mdiCheckboxMarked: mdiCheckboxMarked,
mdiCheckboxMarkedCircle: mdiCheckboxMarkedCircle,
mdiCheckboxMarkedCircleOutline: mdiCheckboxMarkedCircleOutline,
mdiCheckboxMarkedOutline: mdiCheckboxMarkedOutline,
mdiCheckboxMultipleBlank: mdiCheckboxMultipleBlank,
mdiCheckboxMultipleBlankCircle: mdiCheckboxMultipleBlankCircle,
mdiCheckboxMultipleBlankCircleOutline: mdiCheckboxMultipleBlankCircleOutline,
mdiCheckboxMultipleBlankOutline: mdiCheckboxMultipleBlankOutline,
mdiCheckboxMultipleMarked: mdiCheckboxMultipleMarked,
mdiCheckboxMultipleMarkedCircle: mdiCheckboxMultipleMarkedCircle,
mdiCheckboxMultipleMarkedCircleOutline: mdiCheckboxMultipleMarkedCircleOutline,
mdiCheckboxMultipleMarkedOutline: mdiCheckboxMultipleMarkedOutline,
mdiCheckerboard: mdiCheckerboard,
mdiCheckerboardMinus: mdiCheckerboardMinus,
mdiCheckerboardPlus: mdiCheckerboardPlus,
mdiCheckerboardRemove: mdiCheckerboardRemove,
mdiCheese: mdiCheese,
mdiCheeseOff: mdiCheeseOff,
mdiChefHat: mdiChefHat,
mdiChemicalWeapon: mdiChemicalWeapon,
mdiChessBishop: mdiChessBishop,
mdiChessKing: mdiChessKing,
mdiChessKnight: mdiChessKnight,
mdiChessPawn: mdiChessPawn,
mdiChessQueen: mdiChessQueen,
mdiChessRook: mdiChessRook,
mdiChevronDoubleDown: mdiChevronDoubleDown,
mdiChevronDoubleLeft: mdiChevronDoubleLeft,
mdiChevronDoubleRight: mdiChevronDoubleRight,
mdiChevronDoubleUp: mdiChevronDoubleUp,
mdiChevronDown: mdiChevronDown,
mdiChevronDownBox: mdiChevronDownBox,
mdiChevronDownBoxOutline: mdiChevronDownBoxOutline,
mdiChevronDownCircle: mdiChevronDownCircle,
mdiChevronDownCircleOutline: mdiChevronDownCircleOutline,
mdiChevronLeft: mdiChevronLeft,
mdiChevronLeftBox: mdiChevronLeftBox,
mdiChevronLeftBoxOutline: mdiChevronLeftBoxOutline,
mdiChevronLeftCircle: mdiChevronLeftCircle,
mdiChevronLeftCircleOutline: mdiChevronLeftCircleOutline,
mdiChevronRight: mdiChevronRight,
mdiChevronRightBox: mdiChevronRightBox,
mdiChevronRightBoxOutline: mdiChevronRightBoxOutline,
mdiChevronRightCircle: mdiChevronRightCircle,
mdiChevronRightCircleOutline: mdiChevronRightCircleOutline,
mdiChevronTripleDown: mdiChevronTripleDown,
mdiChevronTripleLeft: mdiChevronTripleLeft,
mdiChevronTripleRight: mdiChevronTripleRight,
mdiChevronTripleUp: mdiChevronTripleUp,
mdiChevronUp: mdiChevronUp,
mdiChevronUpBox: mdiChevronUpBox,
mdiChevronUpBoxOutline: mdiChevronUpBoxOutline,
mdiChevronUpCircle: mdiChevronUpCircle,
mdiChevronUpCircleOutline: mdiChevronUpCircleOutline,
mdiChiliHot: mdiChiliHot,
mdiChiliMedium: mdiChiliMedium,
mdiChiliMild: mdiChiliMild,
mdiChiliOff: mdiChiliOff,
mdiChip: mdiChip,
mdiChristianity: mdiChristianity,
mdiChristianityOutline: mdiChristianityOutline,
mdiChurch: mdiChurch,
mdiCigar: mdiCigar,
mdiCigarOff: mdiCigarOff,
mdiCircle: mdiCircle,
mdiCircleBox: mdiCircleBox,
mdiCircleBoxOutline: mdiCircleBoxOutline,
mdiCircleDouble: mdiCircleDouble,
mdiCircleEditOutline: mdiCircleEditOutline,
mdiCircleExpand: mdiCircleExpand,
mdiCircleHalf: mdiCircleHalf,
mdiCircleHalfFull: mdiCircleHalfFull,
mdiCircleMedium: mdiCircleMedium,
mdiCircleMultiple: mdiCircleMultiple,
mdiCircleMultipleOutline: mdiCircleMultipleOutline,
mdiCircleOffOutline: mdiCircleOffOutline,
mdiCircleOutline: mdiCircleOutline,
mdiCircleSlice1: mdiCircleSlice1,
mdiCircleSlice2: mdiCircleSlice2,
mdiCircleSlice3: mdiCircleSlice3,
mdiCircleSlice4: mdiCircleSlice4,
mdiCircleSlice5: mdiCircleSlice5,
mdiCircleSlice6: mdiCircleSlice6,
mdiCircleSlice7: mdiCircleSlice7,
mdiCircleSlice8: mdiCircleSlice8,
mdiCircleSmall: mdiCircleSmall,
mdiCircularSaw: mdiCircularSaw,
mdiCity: mdiCity,
mdiCityVariant: mdiCityVariant,
mdiCityVariantOutline: mdiCityVariantOutline,
mdiClipboard: mdiClipboard,
mdiClipboardAccount: mdiClipboardAccount,
mdiClipboardAccountOutline: mdiClipboardAccountOutline,
mdiClipboardAlert: mdiClipboardAlert,
mdiClipboardAlertOutline: mdiClipboardAlertOutline,
mdiClipboardArrowDown: mdiClipboardArrowDown,
mdiClipboardArrowDownOutline: mdiClipboardArrowDownOutline,
mdiClipboardArrowLeft: mdiClipboardArrowLeft,
mdiClipboardArrowLeftOutline: mdiClipboardArrowLeftOutline,
mdiClipboardArrowRight: mdiClipboardArrowRight,
mdiClipboardArrowRightOutline: mdiClipboardArrowRightOutline,
mdiClipboardArrowUp: mdiClipboardArrowUp,
mdiClipboardArrowUpOutline: mdiClipboardArrowUpOutline,
mdiClipboardCheck: mdiClipboardCheck,
mdiClipboardCheckMultiple: mdiClipboardCheckMultiple,
mdiClipboardCheckMultipleOutline: mdiClipboardCheckMultipleOutline,
mdiClipboardCheckOutline: mdiClipboardCheckOutline,
mdiClipboardClock: mdiClipboardClock,
mdiClipboardClockOutline: mdiClipboardClockOutline,
mdiClipboardEdit: mdiClipboardEdit,
mdiClipboardEditOutline: mdiClipboardEditOutline,
mdiClipboardFile: mdiClipboardFile,
mdiClipboardFileOutline: mdiClipboardFileOutline,
mdiClipboardFlow: mdiClipboardFlow,
mdiClipboardFlowOutline: mdiClipboardFlowOutline,
mdiClipboardList: mdiClipboardList,
mdiClipboardListOutline: mdiClipboardListOutline,
mdiClipboardMinus: mdiClipboardMinus,
mdiClipboardMinusOutline: mdiClipboardMinusOutline,
mdiClipboardMultiple: mdiClipboardMultiple,
mdiClipboardMultipleOutline: mdiClipboardMultipleOutline,
mdiClipboardOff: mdiClipboardOff,
mdiClipboardOffOutline: mdiClipboardOffOutline,
mdiClipboardOutline: mdiClipboardOutline,
mdiClipboardPlay: mdiClipboardPlay,
mdiClipboardPlayMultiple: mdiClipboardPlayMultiple,
mdiClipboardPlayMultipleOutline: mdiClipboardPlayMultipleOutline,
mdiClipboardPlayOutline: mdiClipboardPlayOutline,
mdiClipboardPlus: mdiClipboardPlus,
mdiClipboardPlusOutline: mdiClipboardPlusOutline,
mdiClipboardPulse: mdiClipboardPulse,
mdiClipboardPulseOutline: mdiClipboardPulseOutline,
mdiClipboardRemove: mdiClipboardRemove,
mdiClipboardRemoveOutline: mdiClipboardRemoveOutline,
mdiClipboardSearch: mdiClipboardSearch,
mdiClipboardSearchOutline: mdiClipboardSearchOutline,
mdiClipboardText: mdiClipboardText,
mdiClipboardTextMultiple: mdiClipboardTextMultiple,
mdiClipboardTextMultipleOutline: mdiClipboardTextMultipleOutline,
mdiClipboardTextOff: mdiClipboardTextOff,
mdiClipboardTextOffOutline: mdiClipboardTextOffOutline,
mdiClipboardTextOutline: mdiClipboardTextOutline,
mdiClipboardTextPlay: mdiClipboardTextPlay,
mdiClipboardTextPlayOutline: mdiClipboardTextPlayOutline,
mdiClipboardTextSearch: mdiClipboardTextSearch,
mdiClipboardTextSearchOutline: mdiClipboardTextSearchOutline,
mdiClippy: mdiClippy,
mdiClock: mdiClock,
mdiClockAlert: mdiClockAlert,
mdiClockAlertOutline: mdiClockAlertOutline,
mdiClockCheck: mdiClockCheck,
mdiClockCheckOutline: mdiClockCheckOutline,
mdiClockDigital: mdiClockDigital,
mdiClockEnd: mdiClockEnd,
mdiClockFast: mdiClockFast,
mdiClockIn: mdiClockIn,
mdiClockOut: mdiClockOut,
mdiClockOutline: mdiClockOutline,
mdiClockStart: mdiClockStart,
mdiClockTimeEight: mdiClockTimeEight,
mdiClockTimeEightOutline: mdiClockTimeEightOutline,
mdiClockTimeEleven: mdiClockTimeEleven,
mdiClockTimeElevenOutline: mdiClockTimeElevenOutline,
mdiClockTimeFive: mdiClockTimeFive,
mdiClockTimeFiveOutline: mdiClockTimeFiveOutline,
mdiClockTimeFour: mdiClockTimeFour,
mdiClockTimeFourOutline: mdiClockTimeFourOutline,
mdiClockTimeNine: mdiClockTimeNine,
mdiClockTimeNineOutline: mdiClockTimeNineOutline,
mdiClockTimeOne: mdiClockTimeOne,
mdiClockTimeOneOutline: mdiClockTimeOneOutline,
mdiClockTimeSeven: mdiClockTimeSeven,
mdiClockTimeSevenOutline: mdiClockTimeSevenOutline,
mdiClockTimeSix: mdiClockTimeSix,
mdiClockTimeSixOutline: mdiClockTimeSixOutline,
mdiClockTimeTen: mdiClockTimeTen,
mdiClockTimeTenOutline: mdiClockTimeTenOutline,
mdiClockTimeThree: mdiClockTimeThree,
mdiClockTimeThreeOutline: mdiClockTimeThreeOutline,
mdiClockTimeTwelve: mdiClockTimeTwelve,
mdiClockTimeTwelveOutline: mdiClockTimeTwelveOutline,
mdiClockTimeTwo: mdiClockTimeTwo,
mdiClockTimeTwoOutline: mdiClockTimeTwoOutline,
mdiClose: mdiClose,
mdiCloseBox: mdiCloseBox,
mdiCloseBoxMultiple: mdiCloseBoxMultiple,
mdiCloseBoxMultipleOutline: mdiCloseBoxMultipleOutline,
mdiCloseBoxOutline: mdiCloseBoxOutline,
mdiCloseCircle: mdiCloseCircle,
mdiCloseCircleMultiple: mdiCloseCircleMultiple,
mdiCloseCircleMultipleOutline: mdiCloseCircleMultipleOutline,
mdiCloseCircleOutline: mdiCloseCircleOutline,
mdiCloseNetwork: mdiCloseNetwork,
mdiCloseNetworkOutline: mdiCloseNetworkOutline,
mdiCloseOctagon: mdiCloseOctagon,
mdiCloseOctagonOutline: mdiCloseOctagonOutline,
mdiCloseOutline: mdiCloseOutline,
mdiCloseThick: mdiCloseThick,
mdiClosedCaption: mdiClosedCaption,
mdiClosedCaptionOutline: mdiClosedCaptionOutline,
mdiCloud: mdiCloud,
mdiCloudAlert: mdiCloudAlert,
mdiCloudBraces: mdiCloudBraces,
mdiCloudCheck: mdiCloudCheck,
mdiCloudCheckOutline: mdiCloudCheckOutline,
mdiCloudCircle: mdiCloudCircle,
mdiCloudDownload: mdiCloudDownload,
mdiCloudDownloadOutline: mdiCloudDownloadOutline,
mdiCloudLock: mdiCloudLock,
mdiCloudLockOutline: mdiCloudLockOutline,
mdiCloudOffOutline: mdiCloudOffOutline,
mdiCloudOutline: mdiCloudOutline,
mdiCloudPrint: mdiCloudPrint,
mdiCloudPrintOutline: mdiCloudPrintOutline,
mdiCloudQuestion: mdiCloudQuestion,
mdiCloudRefresh: mdiCloudRefresh,
mdiCloudSearch: mdiCloudSearch,
mdiCloudSearchOutline: mdiCloudSearchOutline,
mdiCloudSync: mdiCloudSync,
mdiCloudSyncOutline: mdiCloudSyncOutline,
mdiCloudTags: mdiCloudTags,
mdiCloudUpload: mdiCloudUpload,
mdiCloudUploadOutline: mdiCloudUploadOutline,
mdiClover: mdiClover,
mdiCoachLamp: mdiCoachLamp,
mdiCoatRack: mdiCoatRack,
mdiCodeArray: mdiCodeArray,
mdiCodeBraces: mdiCodeBraces,
mdiCodeBracesBox: mdiCodeBracesBox,
mdiCodeBrackets: mdiCodeBrackets,
mdiCodeEqual: mdiCodeEqual,
mdiCodeGreaterThan: mdiCodeGreaterThan,
mdiCodeGreaterThanOrEqual: mdiCodeGreaterThanOrEqual,
mdiCodeJson: mdiCodeJson,
mdiCodeLessThan: mdiCodeLessThan,
mdiCodeLessThanOrEqual: mdiCodeLessThanOrEqual,
mdiCodeNotEqual: mdiCodeNotEqual,
mdiCodeNotEqualVariant: mdiCodeNotEqualVariant,
mdiCodeParentheses: mdiCodeParentheses,
mdiCodeParenthesesBox: mdiCodeParenthesesBox,
mdiCodeString: mdiCodeString,
mdiCodeTags: mdiCodeTags,
mdiCodeTagsCheck: mdiCodeTagsCheck,
mdiCodepen: mdiCodepen,
mdiCoffee: mdiCoffee,
mdiCoffeeMaker: mdiCoffeeMaker,
mdiCoffeeOff: mdiCoffeeOff,
mdiCoffeeOffOutline: mdiCoffeeOffOutline,
mdiCoffeeOutline: mdiCoffeeOutline,
mdiCoffeeToGo: mdiCoffeeToGo,
mdiCoffeeToGoOutline: mdiCoffeeToGoOutline,
mdiCoffin: mdiCoffin,
mdiCog: mdiCog,
mdiCogBox: mdiCogBox,
mdiCogClockwise: mdiCogClockwise,
mdiCogCounterclockwise: mdiCogCounterclockwise,
mdiCogOff: mdiCogOff,
mdiCogOffOutline: mdiCogOffOutline,
mdiCogOutline: mdiCogOutline,
mdiCogRefresh: mdiCogRefresh,
mdiCogRefreshOutline: mdiCogRefreshOutline,
mdiCogSync: mdiCogSync,
mdiCogSyncOutline: mdiCogSyncOutline,
mdiCogTransfer: mdiCogTransfer,
mdiCogTransferOutline: mdiCogTransferOutline,
mdiCogs: mdiCogs,
mdiCollage: mdiCollage,
mdiCollapseAll: mdiCollapseAll,
mdiCollapseAllOutline: mdiCollapseAllOutline,
mdiColorHelper: mdiColorHelper,
mdiComma: mdiComma,
mdiCommaBox: mdiCommaBox,
mdiCommaBoxOutline: mdiCommaBoxOutline,
mdiCommaCircle: mdiCommaCircle,
mdiCommaCircleOutline: mdiCommaCircleOutline,
mdiComment: mdiComment,
mdiCommentAccount: mdiCommentAccount,
mdiCommentAccountOutline: mdiCommentAccountOutline,
mdiCommentAlert: mdiCommentAlert,
mdiCommentAlertOutline: mdiCommentAlertOutline,
mdiCommentArrowLeft: mdiCommentArrowLeft,
mdiCommentArrowLeftOutline: mdiCommentArrowLeftOutline,
mdiCommentArrowRight: mdiCommentArrowRight,
mdiCommentArrowRightOutline: mdiCommentArrowRightOutline,
mdiCommentBookmark: mdiCommentBookmark,
mdiCommentBookmarkOutline: mdiCommentBookmarkOutline,
mdiCommentCheck: mdiCommentCheck,
mdiCommentCheckOutline: mdiCommentCheckOutline,
mdiCommentEdit: mdiCommentEdit,
mdiCommentEditOutline: mdiCommentEditOutline,
mdiCommentEye: mdiCommentEye,
mdiCommentEyeOutline: mdiCommentEyeOutline,
mdiCommentFlash: mdiCommentFlash,
mdiCommentFlashOutline: mdiCommentFlashOutline,
mdiCommentMinus: mdiCommentMinus,
mdiCommentMinusOutline: mdiCommentMinusOutline,
mdiCommentMultiple: mdiCommentMultiple,
mdiCommentMultipleOutline: mdiCommentMultipleOutline,
mdiCommentOff: mdiCommentOff,
mdiCommentOffOutline: mdiCommentOffOutline,
mdiCommentOutline: mdiCommentOutline,
mdiCommentPlus: mdiCommentPlus,
mdiCommentPlusOutline: mdiCommentPlusOutline,
mdiCommentProcessing: mdiCommentProcessing,
mdiCommentProcessingOutline: mdiCommentProcessingOutline,
mdiCommentQuestion: mdiCommentQuestion,
mdiCommentQuestionOutline: mdiCommentQuestionOutline,
mdiCommentQuote: mdiCommentQuote,
mdiCommentQuoteOutline: mdiCommentQuoteOutline,
mdiCommentRemove: mdiCommentRemove,
mdiCommentRemoveOutline: mdiCommentRemoveOutline,
mdiCommentSearch: mdiCommentSearch,
mdiCommentSearchOutline: mdiCommentSearchOutline,
mdiCommentText: mdiCommentText,
mdiCommentTextMultiple: mdiCommentTextMultiple,
mdiCommentTextMultipleOutline: mdiCommentTextMultipleOutline,
mdiCommentTextOutline: mdiCommentTextOutline,
mdiCompare: mdiCompare,
mdiCompareHorizontal: mdiCompareHorizontal,
mdiCompareVertical: mdiCompareVertical,
mdiCompass: mdiCompass,
mdiCompassOff: mdiCompassOff,
mdiCompassOffOutline: mdiCompassOffOutline,
mdiCompassOutline: mdiCompassOutline,
mdiCompassRose: mdiCompassRose,
mdiConcourseCi: mdiConcourseCi,
mdiConnection: mdiConnection,
mdiConsole: mdiConsole,
mdiConsoleLine: mdiConsoleLine,
mdiConsoleNetwork: mdiConsoleNetwork,
mdiConsoleNetworkOutline: mdiConsoleNetworkOutline,
mdiConsolidate: mdiConsolidate,
mdiContactlessPayment: mdiContactlessPayment,
mdiContactlessPaymentCircle: mdiContactlessPaymentCircle,
mdiContactlessPaymentCircleOutline: mdiContactlessPaymentCircleOutline,
mdiContacts: mdiContacts,
mdiContactsOutline: mdiContactsOutline,
mdiContain: mdiContain,
mdiContainEnd: mdiContainEnd,
mdiContainStart: mdiContainStart,
mdiContentCopy: mdiContentCopy,
mdiContentCut: mdiContentCut,
mdiContentDuplicate: mdiContentDuplicate,
mdiContentPaste: mdiContentPaste,
mdiContentSave: mdiContentSave,
mdiContentSaveAlert: mdiContentSaveAlert,
mdiContentSaveAlertOutline: mdiContentSaveAlertOutline,
mdiContentSaveAll: mdiContentSaveAll,
mdiContentSaveAllOutline: mdiContentSaveAllOutline,
mdiContentSaveCog: mdiContentSaveCog,
mdiContentSaveCogOutline: mdiContentSaveCogOutline,
mdiContentSaveEdit: mdiContentSaveEdit,
mdiContentSaveEditOutline: mdiContentSaveEditOutline,
mdiContentSaveMove: mdiContentSaveMove,
mdiContentSaveMoveOutline: mdiContentSaveMoveOutline,
mdiContentSaveOff: mdiContentSaveOff,
mdiContentSaveOffOutline: mdiContentSaveOffOutline,
mdiContentSaveOutline: mdiContentSaveOutline,
mdiContentSaveSettings: mdiContentSaveSettings,
mdiContentSaveSettingsOutline: mdiContentSaveSettingsOutline,
mdiContrast: mdiContrast,
mdiContrastBox: mdiContrastBox,
mdiContrastCircle: mdiContrastCircle,
mdiControllerClassic: mdiControllerClassic,
mdiControllerClassicOutline: mdiControllerClassicOutline,
mdiCookie: mdiCookie,
mdiCookieAlert: mdiCookieAlert,
mdiCookieAlertOutline: mdiCookieAlertOutline,
mdiCookieCheck: mdiCookieCheck,
mdiCookieCheckOutline: mdiCookieCheckOutline,
mdiCookieClock: mdiCookieClock,
mdiCookieClockOutline: mdiCookieClockOutline,
mdiCookieCog: mdiCookieCog,
mdiCookieCogOutline: mdiCookieCogOutline,
mdiCookieEdit: mdiCookieEdit,
mdiCookieEditOutline: mdiCookieEditOutline,
mdiCookieLock: mdiCookieLock,
mdiCookieLockOutline: mdiCookieLockOutline,
mdiCookieMinus: mdiCookieMinus,
mdiCookieMinusOutline: mdiCookieMinusOutline,
mdiCookieOff: mdiCookieOff,
mdiCookieOffOutline: mdiCookieOffOutline,
mdiCookieOutline: mdiCookieOutline,
mdiCookiePlus: mdiCookiePlus,
mdiCookiePlusOutline: mdiCookiePlusOutline,
mdiCookieRefresh: mdiCookieRefresh,
mdiCookieRefreshOutline: mdiCookieRefreshOutline,
mdiCookieRemove: mdiCookieRemove,
mdiCookieRemoveOutline: mdiCookieRemoveOutline,
mdiCookieSettings: mdiCookieSettings,
mdiCookieSettingsOutline: mdiCookieSettingsOutline,
mdiCoolantTemperature: mdiCoolantTemperature,
mdiCopyright: mdiCopyright,
mdiCordova: mdiCordova,
mdiCorn: mdiCorn,
mdiCornOff: mdiCornOff,
mdiCosineWave: mdiCosineWave,
mdiCounter: mdiCounter,
mdiCow: mdiCow,
mdiCpu32Bit: mdiCpu32Bit,
mdiCpu64Bit: mdiCpu64Bit,
mdiCrane: mdiCrane,
mdiCreation: mdiCreation,
mdiCreativeCommons: mdiCreativeCommons,
mdiCreditCard: mdiCreditCard,
mdiCreditCardCheck: mdiCreditCardCheck,
mdiCreditCardCheckOutline: mdiCreditCardCheckOutline,
mdiCreditCardClock: mdiCreditCardClock,
mdiCreditCardClockOutline: mdiCreditCardClockOutline,
mdiCreditCardMarker: mdiCreditCardMarker,
mdiCreditCardMarkerOutline: mdiCreditCardMarkerOutline,
mdiCreditCardMinus: mdiCreditCardMinus,
mdiCreditCardMinusOutline: mdiCreditCardMinusOutline,
mdiCreditCardMultiple: mdiCreditCardMultiple,
mdiCreditCardMultipleOutline: mdiCreditCardMultipleOutline,
mdiCreditCardOff: mdiCreditCardOff,
mdiCreditCardOffOutline: mdiCreditCardOffOutline,
mdiCreditCardOutline: mdiCreditCardOutline,
mdiCreditCardPlus: mdiCreditCardPlus,
mdiCreditCardPlusOutline: mdiCreditCardPlusOutline,
mdiCreditCardRefresh: mdiCreditCardRefresh,
mdiCreditCardRefreshOutline: mdiCreditCardRefreshOutline,
mdiCreditCardRefund: mdiCreditCardRefund,
mdiCreditCardRefundOutline: mdiCreditCardRefundOutline,
mdiCreditCardRemove: mdiCreditCardRemove,
mdiCreditCardRemoveOutline: mdiCreditCardRemoveOutline,
mdiCreditCardScan: mdiCreditCardScan,
mdiCreditCardScanOutline: mdiCreditCardScanOutline,
mdiCreditCardSearch: mdiCreditCardSearch,
mdiCreditCardSearchOutline: mdiCreditCardSearchOutline,
mdiCreditCardSettings: mdiCreditCardSettings,
mdiCreditCardSettingsOutline: mdiCreditCardSettingsOutline,
mdiCreditCardSync: mdiCreditCardSync,
mdiCreditCardSyncOutline: mdiCreditCardSyncOutline,
mdiCreditCardWireless: mdiCreditCardWireless,
mdiCreditCardWirelessOff: mdiCreditCardWirelessOff,
mdiCreditCardWirelessOffOutline: mdiCreditCardWirelessOffOutline,
mdiCreditCardWirelessOutline: mdiCreditCardWirelessOutline,
mdiCricket: mdiCricket,
mdiCrop: mdiCrop,
mdiCropFree: mdiCropFree,
mdiCropLandscape: mdiCropLandscape,
mdiCropPortrait: mdiCropPortrait,
mdiCropRotate: mdiCropRotate,
mdiCropSquare: mdiCropSquare,
mdiCrosshairs: mdiCrosshairs,
mdiCrosshairsGps: mdiCrosshairsGps,
mdiCrosshairsOff: mdiCrosshairsOff,
mdiCrosshairsQuestion: mdiCrosshairsQuestion,
mdiCrown: mdiCrown,
mdiCrownOutline: mdiCrownOutline,
mdiCryengine: mdiCryengine,
mdiCrystalBall: mdiCrystalBall,
mdiCube: mdiCube,
mdiCubeOff: mdiCubeOff,
mdiCubeOffOutline: mdiCubeOffOutline,
mdiCubeOutline: mdiCubeOutline,
mdiCubeScan: mdiCubeScan,
mdiCubeSend: mdiCubeSend,
mdiCubeUnfolded: mdiCubeUnfolded,
mdiCup: mdiCup,
mdiCupOff: mdiCupOff,
mdiCupOffOutline: mdiCupOffOutline,
mdiCupOutline: mdiCupOutline,
mdiCupWater: mdiCupWater,
mdiCupboard: mdiCupboard,
mdiCupboardOutline: mdiCupboardOutline,
mdiCupcake: mdiCupcake,
mdiCurling: mdiCurling,
mdiCurrencyBdt: mdiCurrencyBdt,
mdiCurrencyBrl: mdiCurrencyBrl,
mdiCurrencyBtc: mdiCurrencyBtc,
mdiCurrencyCny: mdiCurrencyCny,
mdiCurrencyEth: mdiCurrencyEth,
mdiCurrencyEur: mdiCurrencyEur,
mdiCurrencyEurOff: mdiCurrencyEurOff,
mdiCurrencyGbp: mdiCurrencyGbp,
mdiCurrencyIls: mdiCurrencyIls,
mdiCurrencyInr: mdiCurrencyInr,
mdiCurrencyJpy: mdiCurrencyJpy,
mdiCurrencyKrw: mdiCurrencyKrw,
mdiCurrencyKzt: mdiCurrencyKzt,
mdiCurrencyMnt: mdiCurrencyMnt,
mdiCurrencyNgn: mdiCurrencyNgn,
mdiCurrencyPhp: mdiCurrencyPhp,
mdiCurrencyRial: mdiCurrencyRial,
mdiCurrencyRub: mdiCurrencyRub,
mdiCurrencySign: mdiCurrencySign,
mdiCurrencyTry: mdiCurrencyTry,
mdiCurrencyTwd: mdiCurrencyTwd,
mdiCurrencyUsd: mdiCurrencyUsd,
mdiCurrencyUsdCircle: mdiCurrencyUsdCircle,
mdiCurrencyUsdCircleOutline: mdiCurrencyUsdCircleOutline,
mdiCurrencyUsdOff: mdiCurrencyUsdOff,
mdiCurrentAc: mdiCurrentAc,
mdiCurrentDc: mdiCurrentDc,
mdiCursorDefault: mdiCursorDefault,
mdiCursorDefaultClick: mdiCursorDefaultClick,
mdiCursorDefaultClickOutline: mdiCursorDefaultClickOutline,
mdiCursorDefaultGesture: mdiCursorDefaultGesture,
mdiCursorDefaultGestureOutline: mdiCursorDefaultGestureOutline,
mdiCursorDefaultOutline: mdiCursorDefaultOutline,
mdiCursorMove: mdiCursorMove,
mdiCursorPointer: mdiCursorPointer,
mdiCursorText: mdiCursorText,
mdiDanceBallroom: mdiDanceBallroom,
mdiDancePole: mdiDancePole,
mdiDataMatrix: mdiDataMatrix,
mdiDataMatrixEdit: mdiDataMatrixEdit,
mdiDataMatrixMinus: mdiDataMatrixMinus,
mdiDataMatrixPlus: mdiDataMatrixPlus,
mdiDataMatrixRemove: mdiDataMatrixRemove,
mdiDataMatrixScan: mdiDataMatrixScan,
mdiDatabase: mdiDatabase,
mdiDatabaseAlert: mdiDatabaseAlert,
mdiDatabaseAlertOutline: mdiDatabaseAlertOutline,
mdiDatabaseArrowDown: mdiDatabaseArrowDown,
mdiDatabaseArrowDownOutline: mdiDatabaseArrowDownOutline,
mdiDatabaseArrowLeft: mdiDatabaseArrowLeft,
mdiDatabaseArrowLeftOutline: mdiDatabaseArrowLeftOutline,
mdiDatabaseArrowRight: mdiDatabaseArrowRight,
mdiDatabaseArrowRightOutline: mdiDatabaseArrowRightOutline,
mdiDatabaseArrowUp: mdiDatabaseArrowUp,
mdiDatabaseArrowUpOutline: mdiDatabaseArrowUpOutline,
mdiDatabaseCheck: mdiDatabaseCheck,
mdiDatabaseCheckOutline: mdiDatabaseCheckOutline,
mdiDatabaseClock: mdiDatabaseClock,
mdiDatabaseClockOutline: mdiDatabaseClockOutline,
mdiDatabaseCog: mdiDatabaseCog,
mdiDatabaseCogOutline: mdiDatabaseCogOutline,
mdiDatabaseEdit: mdiDatabaseEdit,
mdiDatabaseEditOutline: mdiDatabaseEditOutline,
mdiDatabaseExport: mdiDatabaseExport,
mdiDatabaseExportOutline: mdiDatabaseExportOutline,
mdiDatabaseImport: mdiDatabaseImport,
mdiDatabaseImportOutline: mdiDatabaseImportOutline,
mdiDatabaseLock: mdiDatabaseLock,
mdiDatabaseLockOutline: mdiDatabaseLockOutline,
mdiDatabaseMarker: mdiDatabaseMarker,
mdiDatabaseMarkerOutline: mdiDatabaseMarkerOutline,
mdiDatabaseMinus: mdiDatabaseMinus,
mdiDatabaseMinusOutline: mdiDatabaseMinusOutline,
mdiDatabaseOff: mdiDatabaseOff,
mdiDatabaseOffOutline: mdiDatabaseOffOutline,
mdiDatabaseOutline: mdiDatabaseOutline,
mdiDatabasePlus: mdiDatabasePlus,
mdiDatabasePlusOutline: mdiDatabasePlusOutline,
mdiDatabaseRefresh: mdiDatabaseRefresh,
mdiDatabaseRefreshOutline: mdiDatabaseRefreshOutline,
mdiDatabaseRemove: mdiDatabaseRemove,
mdiDatabaseRemoveOutline: mdiDatabaseRemoveOutline,
mdiDatabaseSearch: mdiDatabaseSearch,
mdiDatabaseSearchOutline: mdiDatabaseSearchOutline,
mdiDatabaseSettings: mdiDatabaseSettings,
mdiDatabaseSettingsOutline: mdiDatabaseSettingsOutline,
mdiDatabaseSync: mdiDatabaseSync,
mdiDatabaseSyncOutline: mdiDatabaseSyncOutline,
mdiDeathStar: mdiDeathStar,
mdiDeathStarVariant: mdiDeathStarVariant,
mdiDeathlyHallows: mdiDeathlyHallows,
mdiDebian: mdiDebian,
mdiDebugStepInto: mdiDebugStepInto,
mdiDebugStepOut: mdiDebugStepOut,
mdiDebugStepOver: mdiDebugStepOver,
mdiDecagram: mdiDecagram,
mdiDecagramOutline: mdiDecagramOutline,
mdiDecimal: mdiDecimal,
mdiDecimalComma: mdiDecimalComma,
mdiDecimalCommaDecrease: mdiDecimalCommaDecrease,
mdiDecimalCommaIncrease: mdiDecimalCommaIncrease,
mdiDecimalDecrease: mdiDecimalDecrease,
mdiDecimalIncrease: mdiDecimalIncrease,
mdiDelete: mdiDelete,
mdiDeleteAlert: mdiDeleteAlert,
mdiDeleteAlertOutline: mdiDeleteAlertOutline,
mdiDeleteCircle: mdiDeleteCircle,
mdiDeleteCircleOutline: mdiDeleteCircleOutline,
mdiDeleteClock: mdiDeleteClock,
mdiDeleteClockOutline: mdiDeleteClockOutline,
mdiDeleteEmpty: mdiDeleteEmpty,
mdiDeleteEmptyOutline: mdiDeleteEmptyOutline,
mdiDeleteForever: mdiDeleteForever,
mdiDeleteForeverOutline: mdiDeleteForeverOutline,
mdiDeleteOff: mdiDeleteOff,
mdiDeleteOffOutline: mdiDeleteOffOutline,
mdiDeleteOutline: mdiDeleteOutline,
mdiDeleteRestore: mdiDeleteRestore,
mdiDeleteSweep: mdiDeleteSweep,
mdiDeleteSweepOutline: mdiDeleteSweepOutline,
mdiDeleteVariant: mdiDeleteVariant,
mdiDelta: mdiDelta,
mdiDesk: mdiDesk,
mdiDeskLamp: mdiDeskLamp,
mdiDeskphone: mdiDeskphone,
mdiDesktopClassic: mdiDesktopClassic,
mdiDesktopMac: mdiDesktopMac,
mdiDesktopMacDashboard: mdiDesktopMacDashboard,
mdiDesktopTower: mdiDesktopTower,
mdiDesktopTowerMonitor: mdiDesktopTowerMonitor,
mdiDetails: mdiDetails,
mdiDevTo: mdiDevTo,
mdiDeveloperBoard: mdiDeveloperBoard,
mdiDeviantart: mdiDeviantart,
mdiDevices: mdiDevices,
mdiDiabetes: mdiDiabetes,
mdiDialpad: mdiDialpad,
mdiDiameter: mdiDiameter,
mdiDiameterOutline: mdiDiameterOutline,
mdiDiameterVariant: mdiDiameterVariant,
mdiDiamond: mdiDiamond,
mdiDiamondOutline: mdiDiamondOutline,
mdiDiamondStone: mdiDiamondStone,
mdiDice1: mdiDice1,
mdiDice1Outline: mdiDice1Outline,
mdiDice2: mdiDice2,
mdiDice2Outline: mdiDice2Outline,
mdiDice3: mdiDice3,
mdiDice3Outline: mdiDice3Outline,
mdiDice4: mdiDice4,
mdiDice4Outline: mdiDice4Outline,
mdiDice5: mdiDice5,
mdiDice5Outline: mdiDice5Outline,
mdiDice6: mdiDice6,
mdiDice6Outline: mdiDice6Outline,
mdiDiceD10: mdiDiceD10,
mdiDiceD10Outline: mdiDiceD10Outline,
mdiDiceD12: mdiDiceD12,
mdiDiceD12Outline: mdiDiceD12Outline,
mdiDiceD20: mdiDiceD20,
mdiDiceD20Outline: mdiDiceD20Outline,
mdiDiceD4: mdiDiceD4,
mdiDiceD4Outline: mdiDiceD4Outline,
mdiDiceD6: mdiDiceD6,
mdiDiceD6Outline: mdiDiceD6Outline,
mdiDiceD8: mdiDiceD8,
mdiDiceD8Outline: mdiDiceD8Outline,
mdiDiceMultiple: mdiDiceMultiple,
mdiDiceMultipleOutline: mdiDiceMultipleOutline,
mdiDigitalOcean: mdiDigitalOcean,
mdiDipSwitch: mdiDipSwitch,
mdiDirections: mdiDirections,
mdiDirectionsFork: mdiDirectionsFork,
mdiDisc: mdiDisc,
mdiDiscAlert: mdiDiscAlert,
mdiDiscPlayer: mdiDiscPlayer,
mdiDiscord: mdiDiscord,
mdiDishwasher: mdiDishwasher,
mdiDishwasherAlert: mdiDishwasherAlert,
mdiDishwasherOff: mdiDishwasherOff,
mdiDisqus: mdiDisqus,
mdiDistributeHorizontalCenter: mdiDistributeHorizontalCenter,
mdiDistributeHorizontalLeft: mdiDistributeHorizontalLeft,
mdiDistributeHorizontalRight: mdiDistributeHorizontalRight,
mdiDistributeVerticalBottom: mdiDistributeVerticalBottom,
mdiDistributeVerticalCenter: mdiDistributeVerticalCenter,
mdiDistributeVerticalTop: mdiDistributeVerticalTop,
mdiDivingFlippers: mdiDivingFlippers,
mdiDivingHelmet: mdiDivingHelmet,
mdiDivingScuba: mdiDivingScuba,
mdiDivingScubaFlag: mdiDivingScubaFlag,
mdiDivingScubaTank: mdiDivingScubaTank,
mdiDivingScubaTankMultiple: mdiDivingScubaTankMultiple,
mdiDivingSnorkel: mdiDivingSnorkel,
mdiDivision: mdiDivision,
mdiDivisionBox: mdiDivisionBox,
mdiDlna: mdiDlna,
mdiDna: mdiDna,
mdiDns: mdiDns,
mdiDnsOutline: mdiDnsOutline,
mdiDoNotDisturb: mdiDoNotDisturb,
mdiDoNotDisturbOff: mdiDoNotDisturbOff,
mdiDockBottom: mdiDockBottom,
mdiDockLeft: mdiDockLeft,
mdiDockRight: mdiDockRight,
mdiDockTop: mdiDockTop,
mdiDockWindow: mdiDockWindow,
mdiDocker: mdiDocker,
mdiDoctor: mdiDoctor,
mdiDog: mdiDog,
mdiDogService: mdiDogService,
mdiDogSide: mdiDogSide,
mdiDogSideOff: mdiDogSideOff,
mdiDolby: mdiDolby,
mdiDolly: mdiDolly,
mdiDomain: mdiDomain,
mdiDomainOff: mdiDomainOff,
mdiDomainPlus: mdiDomainPlus,
mdiDomainRemove: mdiDomainRemove,
mdiDomeLight: mdiDomeLight,
mdiDominoMask: mdiDominoMask,
mdiDonkey: mdiDonkey,
mdiDoor: mdiDoor,
mdiDoorClosed: mdiDoorClosed,
mdiDoorClosedLock: mdiDoorClosedLock,
mdiDoorOpen: mdiDoorOpen,
mdiDoorbell: mdiDoorbell,
mdiDoorbellVideo: mdiDoorbellVideo,
mdiDotNet: mdiDotNet,
mdiDotsGrid: mdiDotsGrid,
mdiDotsHexagon: mdiDotsHexagon,
mdiDotsHorizontal: mdiDotsHorizontal,
mdiDotsHorizontalCircle: mdiDotsHorizontalCircle,
mdiDotsHorizontalCircleOutline: mdiDotsHorizontalCircleOutline,
mdiDotsSquare: mdiDotsSquare,
mdiDotsTriangle: mdiDotsTriangle,
mdiDotsVertical: mdiDotsVertical,
mdiDotsVerticalCircle: mdiDotsVerticalCircle,
mdiDotsVerticalCircleOutline: mdiDotsVerticalCircleOutline,
mdiDouban: mdiDouban,
mdiDownload: mdiDownload,
mdiDownloadBox: mdiDownloadBox,
mdiDownloadBoxOutline: mdiDownloadBoxOutline,
mdiDownloadCircle: mdiDownloadCircle,
mdiDownloadCircleOutline: mdiDownloadCircleOutline,
mdiDownloadLock: mdiDownloadLock,
mdiDownloadLockOutline: mdiDownloadLockOutline,
mdiDownloadMultiple: mdiDownloadMultiple,
mdiDownloadNetwork: mdiDownloadNetwork,
mdiDownloadNetworkOutline: mdiDownloadNetworkOutline,
mdiDownloadOff: mdiDownloadOff,
mdiDownloadOffOutline: mdiDownloadOffOutline,
mdiDownloadOutline: mdiDownloadOutline,
mdiDrag: mdiDrag,
mdiDragHorizontal: mdiDragHorizontal,
mdiDragHorizontalVariant: mdiDragHorizontalVariant,
mdiDragVariant: mdiDragVariant,
mdiDragVertical: mdiDragVertical,
mdiDragVerticalVariant: mdiDragVerticalVariant,
mdiDramaMasks: mdiDramaMasks,
mdiDraw: mdiDraw,
mdiDrawing: mdiDrawing,
mdiDrawingBox: mdiDrawingBox,
mdiDresser: mdiDresser,
mdiDresserOutline: mdiDresserOutline,
mdiDrone: mdiDrone,
mdiDropbox: mdiDropbox,
mdiDrupal: mdiDrupal,
mdiDuck: mdiDuck,
mdiDumbbell: mdiDumbbell,
mdiDumpTruck: mdiDumpTruck,
mdiEarHearing: mdiEarHearing,
mdiEarHearingOff: mdiEarHearingOff,
mdiEarth: mdiEarth,
mdiEarthArrowRight: mdiEarthArrowRight,
mdiEarthBox: mdiEarthBox,
mdiEarthBoxMinus: mdiEarthBoxMinus,
mdiEarthBoxOff: mdiEarthBoxOff,
mdiEarthBoxPlus: mdiEarthBoxPlus,
mdiEarthBoxRemove: mdiEarthBoxRemove,
mdiEarthMinus: mdiEarthMinus,
mdiEarthOff: mdiEarthOff,
mdiEarthPlus: mdiEarthPlus,
mdiEarthRemove: mdiEarthRemove,
mdiEgg: mdiEgg,
mdiEggEaster: mdiEggEaster,
mdiEggOff: mdiEggOff,
mdiEggOffOutline: mdiEggOffOutline,
mdiEggOutline: mdiEggOutline,
mdiEiffelTower: mdiEiffelTower,
mdiEightTrack: mdiEightTrack,
mdiEject: mdiEject,
mdiEjectOutline: mdiEjectOutline,
mdiElectricSwitch: mdiElectricSwitch,
mdiElectricSwitchClosed: mdiElectricSwitchClosed,
mdiElectronFramework: mdiElectronFramework,
mdiElephant: mdiElephant,
mdiElevationDecline: mdiElevationDecline,
mdiElevationRise: mdiElevationRise,
mdiElevator: mdiElevator,
mdiElevatorDown: mdiElevatorDown,
mdiElevatorPassenger: mdiElevatorPassenger,
mdiElevatorUp: mdiElevatorUp,
mdiEllipse: mdiEllipse,
mdiEllipseOutline: mdiEllipseOutline,
mdiEmail: mdiEmail,
mdiEmailAlert: mdiEmailAlert,
mdiEmailAlertOutline: mdiEmailAlertOutline,
mdiEmailBox: mdiEmailBox,
mdiEmailCheck: mdiEmailCheck,
mdiEmailCheckOutline: mdiEmailCheckOutline,
mdiEmailEdit: mdiEmailEdit,
mdiEmailEditOutline: mdiEmailEditOutline,
mdiEmailLock: mdiEmailLock,
mdiEmailMarkAsUnread: mdiEmailMarkAsUnread,
mdiEmailMinus: mdiEmailMinus,
mdiEmailMinusOutline: mdiEmailMinusOutline,
mdiEmailMultiple: mdiEmailMultiple,
mdiEmailMultipleOutline: mdiEmailMultipleOutline,
mdiEmailNewsletter: mdiEmailNewsletter,
mdiEmailOff: mdiEmailOff,
mdiEmailOffOutline: mdiEmailOffOutline,
mdiEmailOpen: mdiEmailOpen,
mdiEmailOpenMultiple: mdiEmailOpenMultiple,
mdiEmailOpenMultipleOutline: mdiEmailOpenMultipleOutline,
mdiEmailOpenOutline: mdiEmailOpenOutline,
mdiEmailOutline: mdiEmailOutline,
mdiEmailPlus: mdiEmailPlus,
mdiEmailPlusOutline: mdiEmailPlusOutline,
mdiEmailReceive: mdiEmailReceive,
mdiEmailReceiveOutline: mdiEmailReceiveOutline,
mdiEmailRemove: mdiEmailRemove,
mdiEmailRemoveOutline: mdiEmailRemoveOutline,
mdiEmailSearch: mdiEmailSearch,
mdiEmailSearchOutline: mdiEmailSearchOutline,
mdiEmailSend: mdiEmailSend,
mdiEmailSendOutline: mdiEmailSendOutline,
mdiEmailSync: mdiEmailSync,
mdiEmailSyncOutline: mdiEmailSyncOutline,
mdiEmailVariant: mdiEmailVariant,
mdiEmber: mdiEmber,
mdiEmby: mdiEmby,
mdiEmoticon: mdiEmoticon,
mdiEmoticonAngry: mdiEmoticonAngry,
mdiEmoticonAngryOutline: mdiEmoticonAngryOutline,
mdiEmoticonConfused: mdiEmoticonConfused,
mdiEmoticonConfusedOutline: mdiEmoticonConfusedOutline,
mdiEmoticonCool: mdiEmoticonCool,
mdiEmoticonCoolOutline: mdiEmoticonCoolOutline,
mdiEmoticonCry: mdiEmoticonCry,
mdiEmoticonCryOutline: mdiEmoticonCryOutline,
mdiEmoticonDead: mdiEmoticonDead,
mdiEmoticonDeadOutline: mdiEmoticonDeadOutline,
mdiEmoticonDevil: mdiEmoticonDevil,
mdiEmoticonDevilOutline: mdiEmoticonDevilOutline,
mdiEmoticonExcited: mdiEmoticonExcited,
mdiEmoticonExcitedOutline: mdiEmoticonExcitedOutline,
mdiEmoticonFrown: mdiEmoticonFrown,
mdiEmoticonFrownOutline: mdiEmoticonFrownOutline,
mdiEmoticonHappy: mdiEmoticonHappy,
mdiEmoticonHappyOutline: mdiEmoticonHappyOutline,
mdiEmoticonKiss: mdiEmoticonKiss,
mdiEmoticonKissOutline: mdiEmoticonKissOutline,
mdiEmoticonLol: mdiEmoticonLol,
mdiEmoticonLolOutline: mdiEmoticonLolOutline,
mdiEmoticonNeutral: mdiEmoticonNeutral,
mdiEmoticonNeutralOutline: mdiEmoticonNeutralOutline,
mdiEmoticonOutline: mdiEmoticonOutline,
mdiEmoticonPoop: mdiEmoticonPoop,
mdiEmoticonPoopOutline: mdiEmoticonPoopOutline,
mdiEmoticonSad: mdiEmoticonSad,
mdiEmoticonSadOutline: mdiEmoticonSadOutline,
mdiEmoticonSick: mdiEmoticonSick,
mdiEmoticonSickOutline: mdiEmoticonSickOutline,
mdiEmoticonTongue: mdiEmoticonTongue,
mdiEmoticonTongueOutline: mdiEmoticonTongueOutline,
mdiEmoticonWink: mdiEmoticonWink,
mdiEmoticonWinkOutline: mdiEmoticonWinkOutline,
mdiEngine: mdiEngine,
mdiEngineOff: mdiEngineOff,
mdiEngineOffOutline: mdiEngineOffOutline,
mdiEngineOutline: mdiEngineOutline,
mdiEpsilon: mdiEpsilon,
mdiEqual: mdiEqual,
mdiEqualBox: mdiEqualBox,
mdiEqualizer: mdiEqualizer,
mdiEqualizerOutline: mdiEqualizerOutline,
mdiEraser: mdiEraser,
mdiEraserVariant: mdiEraserVariant,
mdiEscalator: mdiEscalator,
mdiEscalatorBox: mdiEscalatorBox,
mdiEscalatorDown: mdiEscalatorDown,
mdiEscalatorUp: mdiEscalatorUp,
mdiEslint: mdiEslint,
mdiEt: mdiEt,
mdiEthereum: mdiEthereum,
mdiEthernet: mdiEthernet,
mdiEthernetCable: mdiEthernetCable,
mdiEthernetCableOff: mdiEthernetCableOff,
mdiEvPlugCcs1: mdiEvPlugCcs1,
mdiEvPlugCcs2: mdiEvPlugCcs2,
mdiEvPlugChademo: mdiEvPlugChademo,
mdiEvPlugTesla: mdiEvPlugTesla,
mdiEvPlugType1: mdiEvPlugType1,
mdiEvPlugType2: mdiEvPlugType2,
mdiEvStation: mdiEvStation,
mdiEvernote: mdiEvernote,
mdiExcavator: mdiExcavator,
mdiExclamation: mdiExclamation,
mdiExclamationThick: mdiExclamationThick,
mdiExitRun: mdiExitRun,
mdiExitToApp: mdiExitToApp,
mdiExpandAll: mdiExpandAll,
mdiExpandAllOutline: mdiExpandAllOutline,
mdiExpansionCard: mdiExpansionCard,
mdiExpansionCardVariant: mdiExpansionCardVariant,
mdiExponent: mdiExponent,
mdiExponentBox: mdiExponentBox,
mdiExport: mdiExport,
mdiExportVariant: mdiExportVariant,
mdiEye: mdiEye,
mdiEyeCheck: mdiEyeCheck,
mdiEyeCheckOutline: mdiEyeCheckOutline,
mdiEyeCircle: mdiEyeCircle,
mdiEyeCircleOutline: mdiEyeCircleOutline,
mdiEyeMinus: mdiEyeMinus,
mdiEyeMinusOutline: mdiEyeMinusOutline,
mdiEyeOff: mdiEyeOff,
mdiEyeOffOutline: mdiEyeOffOutline,
mdiEyeOutline: mdiEyeOutline,
mdiEyePlus: mdiEyePlus,
mdiEyePlusOutline: mdiEyePlusOutline,
mdiEyeRemove: mdiEyeRemove,
mdiEyeRemoveOutline: mdiEyeRemoveOutline,
mdiEyeSettings: mdiEyeSettings,
mdiEyeSettingsOutline: mdiEyeSettingsOutline,
mdiEyedropper: mdiEyedropper,
mdiEyedropperMinus: mdiEyedropperMinus,
mdiEyedropperOff: mdiEyedropperOff,
mdiEyedropperPlus: mdiEyedropperPlus,
mdiEyedropperRemove: mdiEyedropperRemove,
mdiEyedropperVariant: mdiEyedropperVariant,
mdiFace: mdiFace,
mdiFaceAgent: mdiFaceAgent,
mdiFaceMask: mdiFaceMask,
mdiFaceMaskOutline: mdiFaceMaskOutline,
mdiFaceOutline: mdiFaceOutline,
mdiFaceProfile: mdiFaceProfile,
mdiFaceProfileWoman: mdiFaceProfileWoman,
mdiFaceRecognition: mdiFaceRecognition,
mdiFaceShimmer: mdiFaceShimmer,
mdiFaceShimmerOutline: mdiFaceShimmerOutline,
mdiFaceWoman: mdiFaceWoman,
mdiFaceWomanOutline: mdiFaceWomanOutline,
mdiFaceWomanShimmer: mdiFaceWomanShimmer,
mdiFaceWomanShimmerOutline: mdiFaceWomanShimmerOutline,
mdiFacebook: mdiFacebook,
mdiFacebookGaming: mdiFacebookGaming,
mdiFacebookMessenger: mdiFacebookMessenger,
mdiFacebookWorkplace: mdiFacebookWorkplace,
mdiFactory: mdiFactory,
mdiFamilyTree: mdiFamilyTree,
mdiFan: mdiFan,
mdiFanAlert: mdiFanAlert,
mdiFanAuto: mdiFanAuto,
mdiFanChevronDown: mdiFanChevronDown,
mdiFanChevronUp: mdiFanChevronUp,
mdiFanMinus: mdiFanMinus,
mdiFanOff: mdiFanOff,
mdiFanPlus: mdiFanPlus,
mdiFanRemove: mdiFanRemove,
mdiFanSpeed1: mdiFanSpeed1,
mdiFanSpeed2: mdiFanSpeed2,
mdiFanSpeed3: mdiFanSpeed3,
mdiFastForward: mdiFastForward,
mdiFastForward10: mdiFastForward10,
mdiFastForward30: mdiFastForward30,
mdiFastForward5: mdiFastForward5,
mdiFastForward60: mdiFastForward60,
mdiFastForwardOutline: mdiFastForwardOutline,
mdiFax: mdiFax,
mdiFeather: mdiFeather,
mdiFeatureSearch: mdiFeatureSearch,
mdiFeatureSearchOutline: mdiFeatureSearchOutline,
mdiFedora: mdiFedora,
mdiFencing: mdiFencing,
mdiFerrisWheel: mdiFerrisWheel,
mdiFerry: mdiFerry,
mdiFile: mdiFile,
mdiFileAccount: mdiFileAccount,
mdiFileAccountOutline: mdiFileAccountOutline,
mdiFileAlert: mdiFileAlert,
mdiFileAlertOutline: mdiFileAlertOutline,
mdiFileCabinet: mdiFileCabinet,
mdiFileCad: mdiFileCad,
mdiFileCadBox: mdiFileCadBox,
mdiFileCancel: mdiFileCancel,
mdiFileCancelOutline: mdiFileCancelOutline,
mdiFileCertificate: mdiFileCertificate,
mdiFileCertificateOutline: mdiFileCertificateOutline,
mdiFileChart: mdiFileChart,
mdiFileChartOutline: mdiFileChartOutline,
mdiFileCheck: mdiFileCheck,
mdiFileCheckOutline: mdiFileCheckOutline,
mdiFileClock: mdiFileClock,
mdiFileClockOutline: mdiFileClockOutline,
mdiFileCloud: mdiFileCloud,
mdiFileCloudOutline: mdiFileCloudOutline,
mdiFileCode: mdiFileCode,
mdiFileCodeOutline: mdiFileCodeOutline,
mdiFileCog: mdiFileCog,
mdiFileCogOutline: mdiFileCogOutline,
mdiFileCompare: mdiFileCompare,
mdiFileDelimited: mdiFileDelimited,
mdiFileDelimitedOutline: mdiFileDelimitedOutline,
mdiFileDocument: mdiFileDocument,
mdiFileDocumentEdit: mdiFileDocumentEdit,
mdiFileDocumentEditOutline: mdiFileDocumentEditOutline,
mdiFileDocumentMultiple: mdiFileDocumentMultiple,
mdiFileDocumentMultipleOutline: mdiFileDocumentMultipleOutline,
mdiFileDocumentOutline: mdiFileDocumentOutline,
mdiFileDownload: mdiFileDownload,
mdiFileDownloadOutline: mdiFileDownloadOutline,
mdiFileEdit: mdiFileEdit,
mdiFileEditOutline: mdiFileEditOutline,
mdiFileExcel: mdiFileExcel,
mdiFileExcelBox: mdiFileExcelBox,
mdiFileExcelBoxOutline: mdiFileExcelBoxOutline,
mdiFileExcelOutline: mdiFileExcelOutline,
mdiFileExport: mdiFileExport,
mdiFileExportOutline: mdiFileExportOutline,
mdiFileEye: mdiFileEye,
mdiFileEyeOutline: mdiFileEyeOutline,
mdiFileFind: mdiFileFind,
mdiFileFindOutline: mdiFileFindOutline,
mdiFileHidden: mdiFileHidden,
mdiFileImage: mdiFileImage,
mdiFileImageOutline: mdiFileImageOutline,
mdiFileImport: mdiFileImport,
mdiFileImportOutline: mdiFileImportOutline,
mdiFileKey: mdiFileKey,
mdiFileKeyOutline: mdiFileKeyOutline,
mdiFileLink: mdiFileLink,
mdiFileLinkOutline: mdiFileLinkOutline,
mdiFileLock: mdiFileLock,
mdiFileLockOutline: mdiFileLockOutline,
mdiFileMove: mdiFileMove,
mdiFileMoveOutline: mdiFileMoveOutline,
mdiFileMultiple: mdiFileMultiple,
mdiFileMultipleOutline: mdiFileMultipleOutline,
mdiFileMusic: mdiFileMusic,
mdiFileMusicOutline: mdiFileMusicOutline,
mdiFileOutline: mdiFileOutline,
mdiFilePdf: mdiFilePdf,
mdiFilePdfBox: mdiFilePdfBox,
mdiFilePdfBoxOutline: mdiFilePdfBoxOutline,
mdiFilePdfOutline: mdiFilePdfOutline,
mdiFilePercent: mdiFilePercent,
mdiFilePercentOutline: mdiFilePercentOutline,
mdiFilePhone: mdiFilePhone,
mdiFilePhoneOutline: mdiFilePhoneOutline,
mdiFilePlus: mdiFilePlus,
mdiFilePlusOutline: mdiFilePlusOutline,
mdiFilePowerpoint: mdiFilePowerpoint,
mdiFilePowerpointBox: mdiFilePowerpointBox,
mdiFilePowerpointBoxOutline: mdiFilePowerpointBoxOutline,
mdiFilePowerpointOutline: mdiFilePowerpointOutline,
mdiFilePresentationBox: mdiFilePresentationBox,
mdiFileQuestion: mdiFileQuestion,
mdiFileQuestionOutline: mdiFileQuestionOutline,
mdiFileRefresh: mdiFileRefresh,
mdiFileRefreshOutline: mdiFileRefreshOutline,
mdiFileRemove: mdiFileRemove,
mdiFileRemoveOutline: mdiFileRemoveOutline,
mdiFileReplace: mdiFileReplace,
mdiFileReplaceOutline: mdiFileReplaceOutline,
mdiFileRestore: mdiFileRestore,
mdiFileRestoreOutline: mdiFileRestoreOutline,
mdiFileSearch: mdiFileSearch,
mdiFileSearchOutline: mdiFileSearchOutline,
mdiFileSend: mdiFileSend,
mdiFileSendOutline: mdiFileSendOutline,
mdiFileSettings: mdiFileSettings,
mdiFileSettingsOutline: mdiFileSettingsOutline,
mdiFileStar: mdiFileStar,
mdiFileStarOutline: mdiFileStarOutline,
mdiFileSwap: mdiFileSwap,
mdiFileSwapOutline: mdiFileSwapOutline,
mdiFileSync: mdiFileSync,
mdiFileSyncOutline: mdiFileSyncOutline,
mdiFileTable: mdiFileTable,
mdiFileTableBox: mdiFileTableBox,
mdiFileTableBoxMultiple: mdiFileTableBoxMultiple,
mdiFileTableBoxMultipleOutline: mdiFileTableBoxMultipleOutline,
mdiFileTableBoxOutline: mdiFileTableBoxOutline,
mdiFileTableOutline: mdiFileTableOutline,
mdiFileTree: mdiFileTree,
mdiFileTreeOutline: mdiFileTreeOutline,
mdiFileUndo: mdiFileUndo,
mdiFileUndoOutline: mdiFileUndoOutline,
mdiFileUpload: mdiFileUpload,
mdiFileUploadOutline: mdiFileUploadOutline,
mdiFileVideo: mdiFileVideo,
mdiFileVideoOutline: mdiFileVideoOutline,
mdiFileWord: mdiFileWord,
mdiFileWordBox: mdiFileWordBox,
mdiFileWordBoxOutline: mdiFileWordBoxOutline,
mdiFileWordOutline: mdiFileWordOutline,
mdiFilm: mdiFilm,
mdiFilmstrip: mdiFilmstrip,
mdiFilmstripBox: mdiFilmstripBox,
mdiFilmstripBoxMultiple: mdiFilmstripBoxMultiple,
mdiFilmstripOff: mdiFilmstripOff,
mdiFilter: mdiFilter,
mdiFilterMenu: mdiFilterMenu,
mdiFilterMenuOutline: mdiFilterMenuOutline,
mdiFilterMinus: mdiFilterMinus,
mdiFilterMinusOutline: mdiFilterMinusOutline,
mdiFilterOff: mdiFilterOff,
mdiFilterOffOutline: mdiFilterOffOutline,
mdiFilterOutline: mdiFilterOutline,
mdiFilterPlus: mdiFilterPlus,
mdiFilterPlusOutline: mdiFilterPlusOutline,
mdiFilterRemove: mdiFilterRemove,
mdiFilterRemoveOutline: mdiFilterRemoveOutline,
mdiFilterVariant: mdiFilterVariant,
mdiFilterVariantMinus: mdiFilterVariantMinus,
mdiFilterVariantPlus: mdiFilterVariantPlus,
mdiFilterVariantRemove: mdiFilterVariantRemove,
mdiFinance: mdiFinance,
mdiFindReplace: mdiFindReplace,
mdiFingerprint: mdiFingerprint,
mdiFingerprintOff: mdiFingerprintOff,
mdiFire: mdiFire,
mdiFireAlert: mdiFireAlert,
mdiFireExtinguisher: mdiFireExtinguisher,
mdiFireHydrant: mdiFireHydrant,
mdiFireHydrantAlert: mdiFireHydrantAlert,
mdiFireHydrantOff: mdiFireHydrantOff,
mdiFireOff: mdiFireOff,
mdiFireTruck: mdiFireTruck,
mdiFirebase: mdiFirebase,
mdiFirefox: mdiFirefox,
mdiFireplace: mdiFireplace,
mdiFireplaceOff: mdiFireplaceOff,
mdiFirework: mdiFirework,
mdiFireworkOff: mdiFireworkOff,
mdiFish: mdiFish,
mdiFishOff: mdiFishOff,
mdiFishbowl: mdiFishbowl,
mdiFishbowlOutline: mdiFishbowlOutline,
mdiFitToPage: mdiFitToPage,
mdiFitToPageOutline: mdiFitToPageOutline,
mdiFlag: mdiFlag,
mdiFlagCheckered: mdiFlagCheckered,
mdiFlagMinus: mdiFlagMinus,
mdiFlagMinusOutline: mdiFlagMinusOutline,
mdiFlagOutline: mdiFlagOutline,
mdiFlagPlus: mdiFlagPlus,
mdiFlagPlusOutline: mdiFlagPlusOutline,
mdiFlagRemove: mdiFlagRemove,
mdiFlagRemoveOutline: mdiFlagRemoveOutline,
mdiFlagTriangle: mdiFlagTriangle,
mdiFlagVariant: mdiFlagVariant,
mdiFlagVariantOutline: mdiFlagVariantOutline,
mdiFlare: mdiFlare,
mdiFlash: mdiFlash,
mdiFlashAlert: mdiFlashAlert,
mdiFlashAlertOutline: mdiFlashAlertOutline,
mdiFlashAuto: mdiFlashAuto,
mdiFlashCircle: mdiFlashCircle,
mdiFlashOff: mdiFlashOff,
mdiFlashOutline: mdiFlashOutline,
mdiFlashRedEye: mdiFlashRedEye,
mdiFlashlight: mdiFlashlight,
mdiFlashlightOff: mdiFlashlightOff,
mdiFlask: mdiFlask,
mdiFlaskEmpty: mdiFlaskEmpty,
mdiFlaskEmptyMinus: mdiFlaskEmptyMinus,
mdiFlaskEmptyMinusOutline: mdiFlaskEmptyMinusOutline,
mdiFlaskEmptyOff: mdiFlaskEmptyOff,
mdiFlaskEmptyOffOutline: mdiFlaskEmptyOffOutline,
mdiFlaskEmptyOutline: mdiFlaskEmptyOutline,
mdiFlaskEmptyPlus: mdiFlaskEmptyPlus,
mdiFlaskEmptyPlusOutline: mdiFlaskEmptyPlusOutline,
mdiFlaskEmptyRemove: mdiFlaskEmptyRemove,
mdiFlaskEmptyRemoveOutline: mdiFlaskEmptyRemoveOutline,
mdiFlaskMinus: mdiFlaskMinus,
mdiFlaskMinusOutline: mdiFlaskMinusOutline,
mdiFlaskOff: mdiFlaskOff,
mdiFlaskOffOutline: mdiFlaskOffOutline,
mdiFlaskOutline: mdiFlaskOutline,
mdiFlaskPlus: mdiFlaskPlus,
mdiFlaskPlusOutline: mdiFlaskPlusOutline,
mdiFlaskRemove: mdiFlaskRemove,
mdiFlaskRemoveOutline: mdiFlaskRemoveOutline,
mdiFlaskRoundBottom: mdiFlaskRoundBottom,
mdiFlaskRoundBottomEmpty: mdiFlaskRoundBottomEmpty,
mdiFlaskRoundBottomEmptyOutline: mdiFlaskRoundBottomEmptyOutline,
mdiFlaskRoundBottomOutline: mdiFlaskRoundBottomOutline,
mdiFleurDeLis: mdiFleurDeLis,
mdiFlipHorizontal: mdiFlipHorizontal,
mdiFlipToBack: mdiFlipToBack,
mdiFlipToFront: mdiFlipToFront,
mdiFlipVertical: mdiFlipVertical,
mdiFloorLamp: mdiFloorLamp,
mdiFloorLampDual: mdiFloorLampDual,
mdiFloorLampVariant: mdiFloorLampVariant,
mdiFloorPlan: mdiFloorPlan,
mdiFloppy: mdiFloppy,
mdiFloppyVariant: mdiFloppyVariant,
mdiFlower: mdiFlower,
mdiFlowerOutline: mdiFlowerOutline,
mdiFlowerPoppy: mdiFlowerPoppy,
mdiFlowerTulip: mdiFlowerTulip,
mdiFlowerTulipOutline: mdiFlowerTulipOutline,
mdiFocusAuto: mdiFocusAuto,
mdiFocusField: mdiFocusField,
mdiFocusFieldHorizontal: mdiFocusFieldHorizontal,
mdiFocusFieldVertical: mdiFocusFieldVertical,
mdiFolder: mdiFolder,
mdiFolderAccount: mdiFolderAccount,
mdiFolderAccountOutline: mdiFolderAccountOutline,
mdiFolderAlert: mdiFolderAlert,
mdiFolderAlertOutline: mdiFolderAlertOutline,
mdiFolderClock: mdiFolderClock,
mdiFolderClockOutline: mdiFolderClockOutline,
mdiFolderCog: mdiFolderCog,
mdiFolderCogOutline: mdiFolderCogOutline,
mdiFolderDownload: mdiFolderDownload,
mdiFolderDownloadOutline: mdiFolderDownloadOutline,
mdiFolderEdit: mdiFolderEdit,
mdiFolderEditOutline: mdiFolderEditOutline,
mdiFolderGoogleDrive: mdiFolderGoogleDrive,
mdiFolderHeart: mdiFolderHeart,
mdiFolderHeartOutline: mdiFolderHeartOutline,
mdiFolderHome: mdiFolderHome,
mdiFolderHomeOutline: mdiFolderHomeOutline,
mdiFolderImage: mdiFolderImage,
mdiFolderInformation: mdiFolderInformation,
mdiFolderInformationOutline: mdiFolderInformationOutline,
mdiFolderKey: mdiFolderKey,
mdiFolderKeyNetwork: mdiFolderKeyNetwork,
mdiFolderKeyNetworkOutline: mdiFolderKeyNetworkOutline,
mdiFolderKeyOutline: mdiFolderKeyOutline,
mdiFolderLock: mdiFolderLock,
mdiFolderLockOpen: mdiFolderLockOpen,
mdiFolderMarker: mdiFolderMarker,
mdiFolderMarkerOutline: mdiFolderMarkerOutline,
mdiFolderMove: mdiFolderMove,
mdiFolderMoveOutline: mdiFolderMoveOutline,
mdiFolderMultiple: mdiFolderMultiple,
mdiFolderMultipleImage: mdiFolderMultipleImage,
mdiFolderMultipleOutline: mdiFolderMultipleOutline,
mdiFolderMultiplePlus: mdiFolderMultiplePlus,
mdiFolderMultiplePlusOutline: mdiFolderMultiplePlusOutline,
mdiFolderMusic: mdiFolderMusic,
mdiFolderMusicOutline: mdiFolderMusicOutline,
mdiFolderNetwork: mdiFolderNetwork,
mdiFolderNetworkOutline: mdiFolderNetworkOutline,
mdiFolderOpen: mdiFolderOpen,
mdiFolderOpenOutline: mdiFolderOpenOutline,
mdiFolderOutline: mdiFolderOutline,
mdiFolderPlus: mdiFolderPlus,
mdiFolderPlusOutline: mdiFolderPlusOutline,
mdiFolderPound: mdiFolderPound,
mdiFolderPoundOutline: mdiFolderPoundOutline,
mdiFolderRefresh: mdiFolderRefresh,
mdiFolderRefreshOutline: mdiFolderRefreshOutline,
mdiFolderRemove: mdiFolderRemove,
mdiFolderRemoveOutline: mdiFolderRemoveOutline,
mdiFolderSearch: mdiFolderSearch,
mdiFolderSearchOutline: mdiFolderSearchOutline,
mdiFolderSettings: mdiFolderSettings,
mdiFolderSettingsOutline: mdiFolderSettingsOutline,
mdiFolderStar: mdiFolderStar,
mdiFolderStarMultiple: mdiFolderStarMultiple,
mdiFolderStarMultipleOutline: mdiFolderStarMultipleOutline,
mdiFolderStarOutline: mdiFolderStarOutline,
mdiFolderSwap: mdiFolderSwap,
mdiFolderSwapOutline: mdiFolderSwapOutline,
mdiFolderSync: mdiFolderSync,
mdiFolderSyncOutline: mdiFolderSyncOutline,
mdiFolderTable: mdiFolderTable,
mdiFolderTableOutline: mdiFolderTableOutline,
mdiFolderText: mdiFolderText,
mdiFolderTextOutline: mdiFolderTextOutline,
mdiFolderUpload: mdiFolderUpload,
mdiFolderUploadOutline: mdiFolderUploadOutline,
mdiFolderZip: mdiFolderZip,
mdiFolderZipOutline: mdiFolderZipOutline,
mdiFontAwesome: mdiFontAwesome,
mdiFood: mdiFood,
mdiFoodApple: mdiFoodApple,
mdiFoodAppleOutline: mdiFoodAppleOutline,
mdiFoodCroissant: mdiFoodCroissant,
mdiFoodDrumstick: mdiFoodDrumstick,
mdiFoodDrumstickOff: mdiFoodDrumstickOff,
mdiFoodDrumstickOffOutline: mdiFoodDrumstickOffOutline,
mdiFoodDrumstickOutline: mdiFoodDrumstickOutline,
mdiFoodForkDrink: mdiFoodForkDrink,
mdiFoodHalal: mdiFoodHalal,
mdiFoodKosher: mdiFoodKosher,
mdiFoodOff: mdiFoodOff,
mdiFoodSteak: mdiFoodSteak,
mdiFoodSteakOff: mdiFoodSteakOff,
mdiFoodTurkey: mdiFoodTurkey,
mdiFoodVariant: mdiFoodVariant,
mdiFoodVariantOff: mdiFoodVariantOff,
mdiFootPrint: mdiFootPrint,
mdiFootball: mdiFootball,
mdiFootballAustralian: mdiFootballAustralian,
mdiFootballHelmet: mdiFootballHelmet,
mdiForklift: mdiForklift,
mdiFormDropdown: mdiFormDropdown,
mdiFormSelect: mdiFormSelect,
mdiFormTextarea: mdiFormTextarea,
mdiFormTextbox: mdiFormTextbox,
mdiFormTextboxLock: mdiFormTextboxLock,
mdiFormTextboxPassword: mdiFormTextboxPassword,
mdiFormatAlignBottom: mdiFormatAlignBottom,
mdiFormatAlignCenter: mdiFormatAlignCenter,
mdiFormatAlignJustify: mdiFormatAlignJustify,
mdiFormatAlignLeft: mdiFormatAlignLeft,
mdiFormatAlignMiddle: mdiFormatAlignMiddle,
mdiFormatAlignRight: mdiFormatAlignRight,
mdiFormatAlignTop: mdiFormatAlignTop,
mdiFormatAnnotationMinus: mdiFormatAnnotationMinus,
mdiFormatAnnotationPlus: mdiFormatAnnotationPlus,
mdiFormatBold: mdiFormatBold,
mdiFormatClear: mdiFormatClear,
mdiFormatColorFill: mdiFormatColorFill,
mdiFormatColorHighlight: mdiFormatColorHighlight,
mdiFormatColorMarkerCancel: mdiFormatColorMarkerCancel,
mdiFormatColorText: mdiFormatColorText,
mdiFormatColumns: mdiFormatColumns,
mdiFormatFloatCenter: mdiFormatFloatCenter,
mdiFormatFloatLeft: mdiFormatFloatLeft,
mdiFormatFloatNone: mdiFormatFloatNone,
mdiFormatFloatRight: mdiFormatFloatRight,
mdiFormatFont: mdiFormatFont,
mdiFormatFontSizeDecrease: mdiFormatFontSizeDecrease,
mdiFormatFontSizeIncrease: mdiFormatFontSizeIncrease,
mdiFormatHeader1: mdiFormatHeader1,
mdiFormatHeader2: mdiFormatHeader2,
mdiFormatHeader3: mdiFormatHeader3,
mdiFormatHeader4: mdiFormatHeader4,
mdiFormatHeader5: mdiFormatHeader5,
mdiFormatHeader6: mdiFormatHeader6,
mdiFormatHeaderDecrease: mdiFormatHeaderDecrease,
mdiFormatHeaderEqual: mdiFormatHeaderEqual,
mdiFormatHeaderIncrease: mdiFormatHeaderIncrease,
mdiFormatHeaderPound: mdiFormatHeaderPound,
mdiFormatHorizontalAlignCenter: mdiFormatHorizontalAlignCenter,
mdiFormatHorizontalAlignLeft: mdiFormatHorizontalAlignLeft,
mdiFormatHorizontalAlignRight: mdiFormatHorizontalAlignRight,
mdiFormatIndentDecrease: mdiFormatIndentDecrease,
mdiFormatIndentIncrease: mdiFormatIndentIncrease,
mdiFormatItalic: mdiFormatItalic,
mdiFormatLetterCase: mdiFormatLetterCase,
mdiFormatLetterCaseLower: mdiFormatLetterCaseLower,
mdiFormatLetterCaseUpper: mdiFormatLetterCaseUpper,
mdiFormatLetterEndsWith: mdiFormatLetterEndsWith,
mdiFormatLetterMatches: mdiFormatLetterMatches,
mdiFormatLetterStartsWith: mdiFormatLetterStartsWith,
mdiFormatLineSpacing: mdiFormatLineSpacing,
mdiFormatLineStyle: mdiFormatLineStyle,
mdiFormatLineWeight: mdiFormatLineWeight,
mdiFormatListBulleted: mdiFormatListBulleted,
mdiFormatListBulletedSquare: mdiFormatListBulletedSquare,
mdiFormatListBulletedTriangle: mdiFormatListBulletedTriangle,
mdiFormatListBulletedType: mdiFormatListBulletedType,
mdiFormatListCheckbox: mdiFormatListCheckbox,
mdiFormatListChecks: mdiFormatListChecks,
mdiFormatListNumbered: mdiFormatListNumbered,
mdiFormatListNumberedRtl: mdiFormatListNumberedRtl,
mdiFormatListText: mdiFormatListText,
mdiFormatOverline: mdiFormatOverline,
mdiFormatPageBreak: mdiFormatPageBreak,
mdiFormatPaint: mdiFormatPaint,
mdiFormatParagraph: mdiFormatParagraph,
mdiFormatPilcrow: mdiFormatPilcrow,
mdiFormatQuoteClose: mdiFormatQuoteClose,
mdiFormatQuoteCloseOutline: mdiFormatQuoteCloseOutline,
mdiFormatQuoteOpen: mdiFormatQuoteOpen,
mdiFormatQuoteOpenOutline: mdiFormatQuoteOpenOutline,
mdiFormatRotate90: mdiFormatRotate90,
mdiFormatSection: mdiFormatSection,
mdiFormatSize: mdiFormatSize,
mdiFormatStrikethrough: mdiFormatStrikethrough,
mdiFormatStrikethroughVariant: mdiFormatStrikethroughVariant,
mdiFormatSubscript: mdiFormatSubscript,
mdiFormatSuperscript: mdiFormatSuperscript,
mdiFormatText: mdiFormatText,
mdiFormatTextRotationAngleDown: mdiFormatTextRotationAngleDown,
mdiFormatTextRotationAngleUp: mdiFormatTextRotationAngleUp,
mdiFormatTextRotationDown: mdiFormatTextRotationDown,
mdiFormatTextRotationDownVertical: mdiFormatTextRotationDownVertical,
mdiFormatTextRotationNone: mdiFormatTextRotationNone,
mdiFormatTextRotationUp: mdiFormatTextRotationUp,
mdiFormatTextRotationVertical: mdiFormatTextRotationVertical,
mdiFormatTextVariant: mdiFormatTextVariant,
mdiFormatTextVariantOutline: mdiFormatTextVariantOutline,
mdiFormatTextWrappingClip: mdiFormatTextWrappingClip,
mdiFormatTextWrappingOverflow: mdiFormatTextWrappingOverflow,
mdiFormatTextWrappingWrap: mdiFormatTextWrappingWrap,
mdiFormatTextbox: mdiFormatTextbox,
mdiFormatTextdirectionLToR: mdiFormatTextdirectionLToR,
mdiFormatTextdirectionRToL: mdiFormatTextdirectionRToL,
mdiFormatTitle: mdiFormatTitle,
mdiFormatUnderline: mdiFormatUnderline,
mdiFormatVerticalAlignBottom: mdiFormatVerticalAlignBottom,
mdiFormatVerticalAlignCenter: mdiFormatVerticalAlignCenter,
mdiFormatVerticalAlignTop: mdiFormatVerticalAlignTop,
mdiFormatWrapInline: mdiFormatWrapInline,
mdiFormatWrapSquare: mdiFormatWrapSquare,
mdiFormatWrapTight: mdiFormatWrapTight,
mdiFormatWrapTopBottom: mdiFormatWrapTopBottom,
mdiForum: mdiForum,
mdiForumOutline: mdiForumOutline,
mdiForward: mdiForward,
mdiForwardburger: mdiForwardburger,
mdiFountain: mdiFountain,
mdiFountainPen: mdiFountainPen,
mdiFountainPenTip: mdiFountainPenTip,
mdiFreebsd: mdiFreebsd,
mdiFrequentlyAskedQuestions: mdiFrequentlyAskedQuestions,
mdiFridge: mdiFridge,
mdiFridgeAlert: mdiFridgeAlert,
mdiFridgeAlertOutline: mdiFridgeAlertOutline,
mdiFridgeBottom: mdiFridgeBottom,
mdiFridgeIndustrial: mdiFridgeIndustrial,
mdiFridgeIndustrialAlert: mdiFridgeIndustrialAlert,
mdiFridgeIndustrialAlertOutline: mdiFridgeIndustrialAlertOutline,
mdiFridgeIndustrialOff: mdiFridgeIndustrialOff,
mdiFridgeIndustrialOffOutline: mdiFridgeIndustrialOffOutline,
mdiFridgeIndustrialOutline: mdiFridgeIndustrialOutline,
mdiFridgeOff: mdiFridgeOff,
mdiFridgeOffOutline: mdiFridgeOffOutline,
mdiFridgeOutline: mdiFridgeOutline,
mdiFridgeTop: mdiFridgeTop,
mdiFridgeVariant: mdiFridgeVariant,
mdiFridgeVariantAlert: mdiFridgeVariantAlert,
mdiFridgeVariantAlertOutline: mdiFridgeVariantAlertOutline,
mdiFridgeVariantOff: mdiFridgeVariantOff,
mdiFridgeVariantOffOutline: mdiFridgeVariantOffOutline,
mdiFridgeVariantOutline: mdiFridgeVariantOutline,
mdiFruitCherries: mdiFruitCherries,
mdiFruitCherriesOff: mdiFruitCherriesOff,
mdiFruitCitrus: mdiFruitCitrus,
mdiFruitCitrusOff: mdiFruitCitrusOff,
mdiFruitGrapes: mdiFruitGrapes,
mdiFruitGrapesOutline: mdiFruitGrapesOutline,
mdiFruitPineapple: mdiFruitPineapple,
mdiFruitWatermelon: mdiFruitWatermelon,
mdiFuel: mdiFuel,
mdiFullscreen: mdiFullscreen,
mdiFullscreenExit: mdiFullscreenExit,
mdiFunction: mdiFunction,
mdiFunctionVariant: mdiFunctionVariant,
mdiFuriganaHorizontal: mdiFuriganaHorizontal,
mdiFuriganaVertical: mdiFuriganaVertical,
mdiFuse: mdiFuse,
mdiFuseAlert: mdiFuseAlert,
mdiFuseBlade: mdiFuseBlade,
mdiFuseOff: mdiFuseOff,
mdiGamepad: mdiGamepad,
mdiGamepadCircle: mdiGamepadCircle,
mdiGamepadCircleDown: mdiGamepadCircleDown,
mdiGamepadCircleLeft: mdiGamepadCircleLeft,
mdiGamepadCircleOutline: mdiGamepadCircleOutline,
mdiGamepadCircleRight: mdiGamepadCircleRight,
mdiGamepadCircleUp: mdiGamepadCircleUp,
mdiGamepadDown: mdiGamepadDown,
mdiGamepadLeft: mdiGamepadLeft,
mdiGamepadRight: mdiGamepadRight,
mdiGamepadRound: mdiGamepadRound,
mdiGamepadRoundDown: mdiGamepadRoundDown,
mdiGamepadRoundLeft: mdiGamepadRoundLeft,
mdiGamepadRoundOutline: mdiGamepadRoundOutline,
mdiGamepadRoundRight: mdiGamepadRoundRight,
mdiGamepadRoundUp: mdiGamepadRoundUp,
mdiGamepadSquare: mdiGamepadSquare,
mdiGamepadSquareOutline: mdiGamepadSquareOutline,
mdiGamepadUp: mdiGamepadUp,
mdiGamepadVariant: mdiGamepadVariant,
mdiGamepadVariantOutline: mdiGamepadVariantOutline,
mdiGamma: mdiGamma,
mdiGantryCrane: mdiGantryCrane,
mdiGarage: mdiGarage,
mdiGarageAlert: mdiGarageAlert,
mdiGarageAlertVariant: mdiGarageAlertVariant,
mdiGarageOpen: mdiGarageOpen,
mdiGarageOpenVariant: mdiGarageOpenVariant,
mdiGarageVariant: mdiGarageVariant,
mdiGasCylinder: mdiGasCylinder,
mdiGasStation: mdiGasStation,
mdiGasStationOff: mdiGasStationOff,
mdiGasStationOffOutline: mdiGasStationOffOutline,
mdiGasStationOutline: mdiGasStationOutline,
mdiGate: mdiGate,
mdiGateAnd: mdiGateAnd,
mdiGateArrowRight: mdiGateArrowRight,
mdiGateNand: mdiGateNand,
mdiGateNor: mdiGateNor,
mdiGateNot: mdiGateNot,
mdiGateOpen: mdiGateOpen,
mdiGateOr: mdiGateOr,
mdiGateXnor: mdiGateXnor,
mdiGateXor: mdiGateXor,
mdiGatsby: mdiGatsby,
mdiGauge: mdiGauge,
mdiGaugeEmpty: mdiGaugeEmpty,
mdiGaugeFull: mdiGaugeFull,
mdiGaugeLow: mdiGaugeLow,
mdiGavel: mdiGavel,
mdiGenderFemale: mdiGenderFemale,
mdiGenderMale: mdiGenderMale,
mdiGenderMaleFemale: mdiGenderMaleFemale,
mdiGenderMaleFemaleVariant: mdiGenderMaleFemaleVariant,
mdiGenderNonBinary: mdiGenderNonBinary,
mdiGenderTransgender: mdiGenderTransgender,
mdiGentoo: mdiGentoo,
mdiGesture: mdiGesture,
mdiGestureDoubleTap: mdiGestureDoubleTap,
mdiGesturePinch: mdiGesturePinch,
mdiGestureSpread: mdiGestureSpread,
mdiGestureSwipe: mdiGestureSwipe,
mdiGestureSwipeDown: mdiGestureSwipeDown,
mdiGestureSwipeHorizontal: mdiGestureSwipeHorizontal,
mdiGestureSwipeLeft: mdiGestureSwipeLeft,
mdiGestureSwipeRight: mdiGestureSwipeRight,
mdiGestureSwipeUp: mdiGestureSwipeUp,
mdiGestureSwipeVertical: mdiGestureSwipeVertical,
mdiGestureTap: mdiGestureTap,
mdiGestureTapBox: mdiGestureTapBox,
mdiGestureTapButton: mdiGestureTapButton,
mdiGestureTapHold: mdiGestureTapHold,
mdiGestureTwoDoubleTap: mdiGestureTwoDoubleTap,
mdiGestureTwoTap: mdiGestureTwoTap,
mdiGhost: mdiGhost,
mdiGhostOff: mdiGhostOff,
mdiGhostOffOutline: mdiGhostOffOutline,
mdiGhostOutline: mdiGhostOutline,
mdiGif: mdiGif,
mdiGift: mdiGift,
mdiGiftOff: mdiGiftOff,
mdiGiftOffOutline: mdiGiftOffOutline,
mdiGiftOpen: mdiGiftOpen,
mdiGiftOpenOutline: mdiGiftOpenOutline,
mdiGiftOutline: mdiGiftOutline,
mdiGit: mdiGit,
mdiGithub: mdiGithub,
mdiGitlab: mdiGitlab,
mdiGlassCocktail: mdiGlassCocktail,
mdiGlassCocktailOff: mdiGlassCocktailOff,
mdiGlassFlute: mdiGlassFlute,
mdiGlassMug: mdiGlassMug,
mdiGlassMugOff: mdiGlassMugOff,
mdiGlassMugVariant: mdiGlassMugVariant,
mdiGlassMugVariantOff: mdiGlassMugVariantOff,
mdiGlassPintOutline: mdiGlassPintOutline,
mdiGlassStange: mdiGlassStange,
mdiGlassTulip: mdiGlassTulip,
mdiGlassWine: mdiGlassWine,
mdiGlasses: mdiGlasses,
mdiGlobeLight: mdiGlobeLight,
mdiGlobeModel: mdiGlobeModel,
mdiGmail: mdiGmail,
mdiGnome: mdiGnome,
mdiGoKart: mdiGoKart,
mdiGoKartTrack: mdiGoKartTrack,
mdiGog: mdiGog,
mdiGold: mdiGold,
mdiGolf: mdiGolf,
mdiGolfCart: mdiGolfCart,
mdiGolfTee: mdiGolfTee,
mdiGondola: mdiGondola,
mdiGoodreads: mdiGoodreads,
mdiGoogle: mdiGoogle,
mdiGoogleAds: mdiGoogleAds,
mdiGoogleAnalytics: mdiGoogleAnalytics,
mdiGoogleAssistant: mdiGoogleAssistant,
mdiGoogleCardboard: mdiGoogleCardboard,
mdiGoogleChrome: mdiGoogleChrome,
mdiGoogleCircles: mdiGoogleCircles,
mdiGoogleCirclesCommunities: mdiGoogleCirclesCommunities,
mdiGoogleCirclesExtended: mdiGoogleCirclesExtended,
mdiGoogleCirclesGroup: mdiGoogleCirclesGroup,
mdiGoogleClassroom: mdiGoogleClassroom,
mdiGoogleCloud: mdiGoogleCloud,
mdiGoogleController: mdiGoogleController,
mdiGoogleControllerOff: mdiGoogleControllerOff,
mdiGoogleDownasaur: mdiGoogleDownasaur,
mdiGoogleDrive: mdiGoogleDrive,
mdiGoogleEarth: mdiGoogleEarth,
mdiGoogleFit: mdiGoogleFit,
mdiGoogleGlass: mdiGoogleGlass,
mdiGoogleHangouts: mdiGoogleHangouts,
mdiGoogleHome: mdiGoogleHome,
mdiGoogleKeep: mdiGoogleKeep,
mdiGoogleLens: mdiGoogleLens,
mdiGoogleMaps: mdiGoogleMaps,
mdiGoogleMyBusiness: mdiGoogleMyBusiness,
mdiGoogleNearby: mdiGoogleNearby,
mdiGooglePhotos: mdiGooglePhotos,
mdiGooglePlay: mdiGooglePlay,
mdiGooglePlus: mdiGooglePlus,
mdiGooglePodcast: mdiGooglePodcast,
mdiGoogleSpreadsheet: mdiGoogleSpreadsheet,
mdiGoogleStreetView: mdiGoogleStreetView,
mdiGoogleTranslate: mdiGoogleTranslate,
mdiGradient: mdiGradient,
mdiGrain: mdiGrain,
mdiGraph: mdiGraph,
mdiGraphOutline: mdiGraphOutline,
mdiGraphql: mdiGraphql,
mdiGrass: mdiGrass,
mdiGraveStone: mdiGraveStone,
mdiGreasePencil: mdiGreasePencil,
mdiGreaterThan: mdiGreaterThan,
mdiGreaterThanOrEqual: mdiGreaterThanOrEqual,
mdiGrid: mdiGrid,
mdiGridLarge: mdiGridLarge,
mdiGridOff: mdiGridOff,
mdiGrill: mdiGrill,
mdiGrillOutline: mdiGrillOutline,
mdiGroup: mdiGroup,
mdiGuitarAcoustic: mdiGuitarAcoustic,
mdiGuitarElectric: mdiGuitarElectric,
mdiGuitarPick: mdiGuitarPick,
mdiGuitarPickOutline: mdiGuitarPickOutline,
mdiGuyFawkesMask: mdiGuyFawkesMask,
mdiHail: mdiHail,
mdiHairDryer: mdiHairDryer,
mdiHairDryerOutline: mdiHairDryerOutline,
mdiHalloween: mdiHalloween,
mdiHamburger: mdiHamburger,
mdiHammer: mdiHammer,
mdiHammerScrewdriver: mdiHammerScrewdriver,
mdiHammerWrench: mdiHammerWrench,
mdiHand: mdiHand,
mdiHandHeart: mdiHandHeart,
mdiHandHeartOutline: mdiHandHeartOutline,
mdiHandLeft: mdiHandLeft,
mdiHandOkay: mdiHandOkay,
mdiHandPeace: mdiHandPeace,
mdiHandPeaceVariant: mdiHandPeaceVariant,
mdiHandPointingDown: mdiHandPointingDown,
mdiHandPointingLeft: mdiHandPointingLeft,
mdiHandPointingRight: mdiHandPointingRight,
mdiHandPointingUp: mdiHandPointingUp,
mdiHandRight: mdiHandRight,
mdiHandSaw: mdiHandSaw,
mdiHandWash: mdiHandWash,
mdiHandWashOutline: mdiHandWashOutline,
mdiHandWater: mdiHandWater,
mdiHandball: mdiHandball,
mdiHandcuffs: mdiHandcuffs,
mdiHandshake: mdiHandshake,
mdiHandshakeOutline: mdiHandshakeOutline,
mdiHanger: mdiHanger,
mdiHardHat: mdiHardHat,
mdiHarddisk: mdiHarddisk,
mdiHarddiskPlus: mdiHarddiskPlus,
mdiHarddiskRemove: mdiHarddiskRemove,
mdiHatFedora: mdiHatFedora,
mdiHazardLights: mdiHazardLights,
mdiHdr: mdiHdr,
mdiHdrOff: mdiHdrOff,
mdiHead: mdiHead,
mdiHeadAlert: mdiHeadAlert,
mdiHeadAlertOutline: mdiHeadAlertOutline,
mdiHeadCheck: mdiHeadCheck,
mdiHeadCheckOutline: mdiHeadCheckOutline,
mdiHeadCog: mdiHeadCog,
mdiHeadCogOutline: mdiHeadCogOutline,
mdiHeadDotsHorizontal: mdiHeadDotsHorizontal,
mdiHeadDotsHorizontalOutline: mdiHeadDotsHorizontalOutline,
mdiHeadFlash: mdiHeadFlash,
mdiHeadFlashOutline: mdiHeadFlashOutline,
mdiHeadHeart: mdiHeadHeart,
mdiHeadHeartOutline: mdiHeadHeartOutline,
mdiHeadLightbulb: mdiHeadLightbulb,
mdiHeadLightbulbOutline: mdiHeadLightbulbOutline,
mdiHeadMinus: mdiHeadMinus,
mdiHeadMinusOutline: mdiHeadMinusOutline,
mdiHeadOutline: mdiHeadOutline,
mdiHeadPlus: mdiHeadPlus,
mdiHeadPlusOutline: mdiHeadPlusOutline,
mdiHeadQuestion: mdiHeadQuestion,
mdiHeadQuestionOutline: mdiHeadQuestionOutline,
mdiHeadRemove: mdiHeadRemove,
mdiHeadRemoveOutline: mdiHeadRemoveOutline,
mdiHeadSnowflake: mdiHeadSnowflake,
mdiHeadSnowflakeOutline: mdiHeadSnowflakeOutline,
mdiHeadSync: mdiHeadSync,
mdiHeadSyncOutline: mdiHeadSyncOutline,
mdiHeadphones: mdiHeadphones,
mdiHeadphonesBluetooth: mdiHeadphonesBluetooth,
mdiHeadphonesBox: mdiHeadphonesBox,
mdiHeadphonesOff: mdiHeadphonesOff,
mdiHeadphonesSettings: mdiHeadphonesSettings,
mdiHeadset: mdiHeadset,
mdiHeadsetDock: mdiHeadsetDock,
mdiHeadsetOff: mdiHeadsetOff,
mdiHeart: mdiHeart,
mdiHeartBox: mdiHeartBox,
mdiHeartBoxOutline: mdiHeartBoxOutline,
mdiHeartBroken: mdiHeartBroken,
mdiHeartBrokenOutline: mdiHeartBrokenOutline,
mdiHeartCircle: mdiHeartCircle,
mdiHeartCircleOutline: mdiHeartCircleOutline,
mdiHeartCog: mdiHeartCog,
mdiHeartCogOutline: mdiHeartCogOutline,
mdiHeartFlash: mdiHeartFlash,
mdiHeartHalf: mdiHeartHalf,
mdiHeartHalfFull: mdiHeartHalfFull,
mdiHeartHalfOutline: mdiHeartHalfOutline,
mdiHeartMinus: mdiHeartMinus,
mdiHeartMinusOutline: mdiHeartMinusOutline,
mdiHeartMultiple: mdiHeartMultiple,
mdiHeartMultipleOutline: mdiHeartMultipleOutline,
mdiHeartOff: mdiHeartOff,
mdiHeartOffOutline: mdiHeartOffOutline,
mdiHeartOutline: mdiHeartOutline,
mdiHeartPlus: mdiHeartPlus,
mdiHeartPlusOutline: mdiHeartPlusOutline,
mdiHeartPulse: mdiHeartPulse,
mdiHeartRemove: mdiHeartRemove,
mdiHeartRemoveOutline: mdiHeartRemoveOutline,
mdiHeartSettings: mdiHeartSettings,
mdiHeartSettingsOutline: mdiHeartSettingsOutline,
mdiHelicopter: mdiHelicopter,
mdiHelp: mdiHelp,
mdiHelpBox: mdiHelpBox,
mdiHelpCircle: mdiHelpCircle,
mdiHelpCircleOutline: mdiHelpCircleOutline,
mdiHelpNetwork: mdiHelpNetwork,
mdiHelpNetworkOutline: mdiHelpNetworkOutline,
mdiHelpRhombus: mdiHelpRhombus,
mdiHelpRhombusOutline: mdiHelpRhombusOutline,
mdiHexadecimal: mdiHexadecimal,
mdiHexagon: mdiHexagon,
mdiHexagonMultiple: mdiHexagonMultiple,
mdiHexagonMultipleOutline: mdiHexagonMultipleOutline,
mdiHexagonOutline: mdiHexagonOutline,
mdiHexagonSlice1: mdiHexagonSlice1,
mdiHexagonSlice2: mdiHexagonSlice2,
mdiHexagonSlice3: mdiHexagonSlice3,
mdiHexagonSlice4: mdiHexagonSlice4,
mdiHexagonSlice5: mdiHexagonSlice5,
mdiHexagonSlice6: mdiHexagonSlice6,
mdiHexagram: mdiHexagram,
mdiHexagramOutline: mdiHexagramOutline,
mdiHighDefinition: mdiHighDefinition,
mdiHighDefinitionBox: mdiHighDefinitionBox,
mdiHighway: mdiHighway,
mdiHiking: mdiHiking,
mdiHinduism: mdiHinduism,
mdiHistory: mdiHistory,
mdiHockeyPuck: mdiHockeyPuck,
mdiHockeySticks: mdiHockeySticks,
mdiHololens: mdiHololens,
mdiHome: mdiHome,
mdiHomeAccount: mdiHomeAccount,
mdiHomeAlert: mdiHomeAlert,
mdiHomeAlertOutline: mdiHomeAlertOutline,
mdiHomeAnalytics: mdiHomeAnalytics,
mdiHomeAssistant: mdiHomeAssistant,
mdiHomeAutomation: mdiHomeAutomation,
mdiHomeCircle: mdiHomeCircle,
mdiHomeCircleOutline: mdiHomeCircleOutline,
mdiHomeCity: mdiHomeCity,
mdiHomeCityOutline: mdiHomeCityOutline,
mdiHomeCurrencyUsd: mdiHomeCurrencyUsd,
mdiHomeEdit: mdiHomeEdit,
mdiHomeEditOutline: mdiHomeEditOutline,
mdiHomeExportOutline: mdiHomeExportOutline,
mdiHomeFlood: mdiHomeFlood,
mdiHomeFloor0: mdiHomeFloor0,
mdiHomeFloor1: mdiHomeFloor1,
mdiHomeFloor2: mdiHomeFloor2,
mdiHomeFloor3: mdiHomeFloor3,
mdiHomeFloorA: mdiHomeFloorA,
mdiHomeFloorB: mdiHomeFloorB,
mdiHomeFloorG: mdiHomeFloorG,
mdiHomeFloorL: mdiHomeFloorL,
mdiHomeFloorNegative1: mdiHomeFloorNegative1,
mdiHomeGroup: mdiHomeGroup,
mdiHomeHeart: mdiHomeHeart,
mdiHomeImportOutline: mdiHomeImportOutline,
mdiHomeLightbulb: mdiHomeLightbulb,
mdiHomeLightbulbOutline: mdiHomeLightbulbOutline,
mdiHomeLock: mdiHomeLock,
mdiHomeLockOpen: mdiHomeLockOpen,
mdiHomeMapMarker: mdiHomeMapMarker,
mdiHomeMinus: mdiHomeMinus,
mdiHomeMinusOutline: mdiHomeMinusOutline,
mdiHomeModern: mdiHomeModern,
mdiHomeOutline: mdiHomeOutline,
mdiHomePlus: mdiHomePlus,
mdiHomePlusOutline: mdiHomePlusOutline,
mdiHomeRemove: mdiHomeRemove,
mdiHomeRemoveOutline: mdiHomeRemoveOutline,
mdiHomeRoof: mdiHomeRoof,
mdiHomeSearch: mdiHomeSearch,
mdiHomeSearchOutline: mdiHomeSearchOutline,
mdiHomeThermometer: mdiHomeThermometer,
mdiHomeThermometerOutline: mdiHomeThermometerOutline,
mdiHomeVariant: mdiHomeVariant,
mdiHomeVariantOutline: mdiHomeVariantOutline,
mdiHook: mdiHook,
mdiHookOff: mdiHookOff,
mdiHops: mdiHops,
mdiHorizontalRotateClockwise: mdiHorizontalRotateClockwise,
mdiHorizontalRotateCounterclockwise: mdiHorizontalRotateCounterclockwise,
mdiHorse: mdiHorse,
mdiHorseHuman: mdiHorseHuman,
mdiHorseVariant: mdiHorseVariant,
mdiHorseshoe: mdiHorseshoe,
mdiHospital: mdiHospital,
mdiHospitalBox: mdiHospitalBox,
mdiHospitalBoxOutline: mdiHospitalBoxOutline,
mdiHospitalBuilding: mdiHospitalBuilding,
mdiHospitalMarker: mdiHospitalMarker,
mdiHotTub: mdiHotTub,
mdiHours24: mdiHours24,
mdiHubspot: mdiHubspot,
mdiHulu: mdiHulu,
mdiHuman: mdiHuman,
mdiHumanBabyChangingTable: mdiHumanBabyChangingTable,
mdiHumanCane: mdiHumanCane,
mdiHumanCapacityDecrease: mdiHumanCapacityDecrease,
mdiHumanCapacityIncrease: mdiHumanCapacityIncrease,
mdiHumanChild: mdiHumanChild,
mdiHumanEdit: mdiHumanEdit,
mdiHumanFemale: mdiHumanFemale,
mdiHumanFemaleBoy: mdiHumanFemaleBoy,
mdiHumanFemaleDance: mdiHumanFemaleDance,
mdiHumanFemaleFemale: mdiHumanFemaleFemale,
mdiHumanFemaleGirl: mdiHumanFemaleGirl,
mdiHumanGreeting: mdiHumanGreeting,
mdiHumanGreetingProximity: mdiHumanGreetingProximity,
mdiHumanHandsdown: mdiHumanHandsdown,
mdiHumanHandsup: mdiHumanHandsup,
mdiHumanMale: mdiHumanMale,
mdiHumanMaleBoy: mdiHumanMaleBoy,
mdiHumanMaleChild: mdiHumanMaleChild,
mdiHumanMaleFemale: mdiHumanMaleFemale,
mdiHumanMaleGirl: mdiHumanMaleGirl,
mdiHumanMaleHeight: mdiHumanMaleHeight,
mdiHumanMaleHeightVariant: mdiHumanMaleHeightVariant,
mdiHumanMaleMale: mdiHumanMaleMale,
mdiHumanPregnant: mdiHumanPregnant,
mdiHumanQueue: mdiHumanQueue,
mdiHumanScooter: mdiHumanScooter,
mdiHumanWheelchair: mdiHumanWheelchair,
mdiHumbleBundle: mdiHumbleBundle,
mdiHvac: mdiHvac,
mdiHvacOff: mdiHvacOff,
mdiHydraulicOilLevel: mdiHydraulicOilLevel,
mdiHydraulicOilTemperature: mdiHydraulicOilTemperature,
mdiHydroPower: mdiHydroPower,
mdiIceCream: mdiIceCream,
mdiIceCreamOff: mdiIceCreamOff,
mdiIcePop: mdiIcePop,
mdiIdCard: mdiIdCard,
mdiIdentifier: mdiIdentifier,
mdiIdeogramCjk: mdiIdeogramCjk,
mdiIdeogramCjkVariant: mdiIdeogramCjkVariant,
mdiIframe: mdiIframe,
mdiIframeArray: mdiIframeArray,
mdiIframeArrayOutline: mdiIframeArrayOutline,
mdiIframeBraces: mdiIframeBraces,
mdiIframeBracesOutline: mdiIframeBracesOutline,
mdiIframeOutline: mdiIframeOutline,
mdiIframeParentheses: mdiIframeParentheses,
mdiIframeParenthesesOutline: mdiIframeParenthesesOutline,
mdiIframeVariable: mdiIframeVariable,
mdiIframeVariableOutline: mdiIframeVariableOutline,
mdiImage: mdiImage,
mdiImageAlbum: mdiImageAlbum,
mdiImageArea: mdiImageArea,
mdiImageAreaClose: mdiImageAreaClose,
mdiImageAutoAdjust: mdiImageAutoAdjust,
mdiImageBroken: mdiImageBroken,
mdiImageBrokenVariant: mdiImageBrokenVariant,
mdiImageEdit: mdiImageEdit,
mdiImageEditOutline: mdiImageEditOutline,
mdiImageFilterBlackWhite: mdiImageFilterBlackWhite,
mdiImageFilterCenterFocus: mdiImageFilterCenterFocus,
mdiImageFilterCenterFocusStrong: mdiImageFilterCenterFocusStrong,
mdiImageFilterCenterFocusStrongOutline: mdiImageFilterCenterFocusStrongOutline,
mdiImageFilterCenterFocusWeak: mdiImageFilterCenterFocusWeak,
mdiImageFilterDrama: mdiImageFilterDrama,
mdiImageFilterFrames: mdiImageFilterFrames,
mdiImageFilterHdr: mdiImageFilterHdr,
mdiImageFilterNone: mdiImageFilterNone,
mdiImageFilterTiltShift: mdiImageFilterTiltShift,
mdiImageFilterVintage: mdiImageFilterVintage,
mdiImageFrame: mdiImageFrame,
mdiImageMinus: mdiImageMinus,
mdiImageMove: mdiImageMove,
mdiImageMultiple: mdiImageMultiple,
mdiImageMultipleOutline: mdiImageMultipleOutline,
mdiImageOff: mdiImageOff,
mdiImageOffOutline: mdiImageOffOutline,
mdiImageOutline: mdiImageOutline,
mdiImagePlus: mdiImagePlus,
mdiImageRemove: mdiImageRemove,
mdiImageSearch: mdiImageSearch,
mdiImageSearchOutline: mdiImageSearchOutline,
mdiImageSizeSelectActual: mdiImageSizeSelectActual,
mdiImageSizeSelectLarge: mdiImageSizeSelectLarge,
mdiImageSizeSelectSmall: mdiImageSizeSelectSmall,
mdiImageText: mdiImageText,
mdiImport: mdiImport,
mdiInbox: mdiInbox,
mdiInboxArrowDown: mdiInboxArrowDown,
mdiInboxArrowDownOutline: mdiInboxArrowDownOutline,
mdiInboxArrowUp: mdiInboxArrowUp,
mdiInboxArrowUpOutline: mdiInboxArrowUpOutline,
mdiInboxFull: mdiInboxFull,
mdiInboxFullOutline: mdiInboxFullOutline,
mdiInboxMultiple: mdiInboxMultiple,
mdiInboxMultipleOutline: mdiInboxMultipleOutline,
mdiInboxOutline: mdiInboxOutline,
mdiInboxRemove: mdiInboxRemove,
mdiInboxRemoveOutline: mdiInboxRemoveOutline,
mdiIncognito: mdiIncognito,
mdiIncognitoCircle: mdiIncognitoCircle,
mdiIncognitoCircleOff: mdiIncognitoCircleOff,
mdiIncognitoOff: mdiIncognitoOff,
mdiInfinity: mdiInfinity,
mdiInformation: mdiInformation,
mdiInformationOutline: mdiInformationOutline,
mdiInformationVariant: mdiInformationVariant,
mdiInstagram: mdiInstagram,
mdiInstrumentTriangle: mdiInstrumentTriangle,
mdiInvertColors: mdiInvertColors,
mdiInvertColorsOff: mdiInvertColorsOff,
mdiIobroker: mdiIobroker,
mdiIp: mdiIp,
mdiIpNetwork: mdiIpNetwork,
mdiIpNetworkOutline: mdiIpNetworkOutline,
mdiIpod: mdiIpod,
mdiIslam: mdiIslam,
mdiIsland: mdiIsland,
mdiIvBag: mdiIvBag,
mdiJabber: mdiJabber,
mdiJeepney: mdiJeepney,
mdiJellyfish: mdiJellyfish,
mdiJellyfishOutline: mdiJellyfishOutline,
mdiJira: mdiJira,
mdiJquery: mdiJquery,
mdiJsfiddle: mdiJsfiddle,
mdiJudaism: mdiJudaism,
mdiJumpRope: mdiJumpRope,
mdiKabaddi: mdiKabaddi,
mdiKangaroo: mdiKangaroo,
mdiKarate: mdiKarate,
mdiKeg: mdiKeg,
mdiKettle: mdiKettle,
mdiKettleAlert: mdiKettleAlert,
mdiKettleAlertOutline: mdiKettleAlertOutline,
mdiKettleOff: mdiKettleOff,
mdiKettleOffOutline: mdiKettleOffOutline,
mdiKettleOutline: mdiKettleOutline,
mdiKettlePourOver: mdiKettlePourOver,
mdiKettleSteam: mdiKettleSteam,
mdiKettleSteamOutline: mdiKettleSteamOutline,
mdiKettlebell: mdiKettlebell,
mdiKey: mdiKey,
mdiKeyArrowRight: mdiKeyArrowRight,
mdiKeyChain: mdiKeyChain,
mdiKeyChainVariant: mdiKeyChainVariant,
mdiKeyChange: mdiKeyChange,
mdiKeyLink: mdiKeyLink,
mdiKeyMinus: mdiKeyMinus,
mdiKeyOutline: mdiKeyOutline,
mdiKeyPlus: mdiKeyPlus,
mdiKeyRemove: mdiKeyRemove,
mdiKeyStar: mdiKeyStar,
mdiKeyVariant: mdiKeyVariant,
mdiKeyWireless: mdiKeyWireless,
mdiKeyboard: mdiKeyboard,
mdiKeyboardBackspace: mdiKeyboardBackspace,
mdiKeyboardCaps: mdiKeyboardCaps,
mdiKeyboardClose: mdiKeyboardClose,
mdiKeyboardEsc: mdiKeyboardEsc,
mdiKeyboardF1: mdiKeyboardF1,
mdiKeyboardF10: mdiKeyboardF10,
mdiKeyboardF11: mdiKeyboardF11,
mdiKeyboardF12: mdiKeyboardF12,
mdiKeyboardF2: mdiKeyboardF2,
mdiKeyboardF3: mdiKeyboardF3,
mdiKeyboardF4: mdiKeyboardF4,
mdiKeyboardF5: mdiKeyboardF5,
mdiKeyboardF6: mdiKeyboardF6,
mdiKeyboardF7: mdiKeyboardF7,
mdiKeyboardF8: mdiKeyboardF8,
mdiKeyboardF9: mdiKeyboardF9,
mdiKeyboardOff: mdiKeyboardOff,
mdiKeyboardOffOutline: mdiKeyboardOffOutline,
mdiKeyboardOutline: mdiKeyboardOutline,
mdiKeyboardReturn: mdiKeyboardReturn,
mdiKeyboardSettings: mdiKeyboardSettings,
mdiKeyboardSettingsOutline: mdiKeyboardSettingsOutline,
mdiKeyboardSpace: mdiKeyboardSpace,
mdiKeyboardTab: mdiKeyboardTab,
mdiKeyboardVariant: mdiKeyboardVariant,
mdiKhanda: mdiKhanda,
mdiKickstarter: mdiKickstarter,
mdiKlingon: mdiKlingon,
mdiKnife: mdiKnife,
mdiKnifeMilitary: mdiKnifeMilitary,
mdiKoala: mdiKoala,
mdiKodi: mdiKodi,
mdiKubernetes: mdiKubernetes,
mdiLabel: mdiLabel,
mdiLabelMultiple: mdiLabelMultiple,
mdiLabelMultipleOutline: mdiLabelMultipleOutline,
mdiLabelOff: mdiLabelOff,
mdiLabelOffOutline: mdiLabelOffOutline,
mdiLabelOutline: mdiLabelOutline,
mdiLabelPercent: mdiLabelPercent,
mdiLabelPercentOutline: mdiLabelPercentOutline,
mdiLabelVariant: mdiLabelVariant,
mdiLabelVariantOutline: mdiLabelVariantOutline,
mdiLadder: mdiLadder,
mdiLadybug: mdiLadybug,
mdiLambda: mdiLambda,
mdiLamp: mdiLamp,
mdiLamps: mdiLamps,
mdiLan: mdiLan,
mdiLanCheck: mdiLanCheck,
mdiLanConnect: mdiLanConnect,
mdiLanDisconnect: mdiLanDisconnect,
mdiLanPending: mdiLanPending,
mdiLanguageC: mdiLanguageC,
mdiLanguageCpp: mdiLanguageCpp,
mdiLanguageCsharp: mdiLanguageCsharp,
mdiLanguageCss3: mdiLanguageCss3,
mdiLanguageFortran: mdiLanguageFortran,
mdiLanguageGo: mdiLanguageGo,
mdiLanguageHaskell: mdiLanguageHaskell,
mdiLanguageHtml5: mdiLanguageHtml5,
mdiLanguageJava: mdiLanguageJava,
mdiLanguageJavascript: mdiLanguageJavascript,
mdiLanguageKotlin: mdiLanguageKotlin,
mdiLanguageLua: mdiLanguageLua,
mdiLanguageMarkdown: mdiLanguageMarkdown,
mdiLanguageMarkdownOutline: mdiLanguageMarkdownOutline,
mdiLanguagePhp: mdiLanguagePhp,
mdiLanguagePython: mdiLanguagePython,
mdiLanguageR: mdiLanguageR,
mdiLanguageRuby: mdiLanguageRuby,
mdiLanguageRubyOnRails: mdiLanguageRubyOnRails,
mdiLanguageRust: mdiLanguageRust,
mdiLanguageSwift: mdiLanguageSwift,
mdiLanguageTypescript: mdiLanguageTypescript,
mdiLanguageXaml: mdiLanguageXaml,
mdiLaptop: mdiLaptop,
mdiLaptopChromebook: mdiLaptopChromebook,
mdiLaptopMac: mdiLaptopMac,
mdiLaptopOff: mdiLaptopOff,
mdiLaptopWindows: mdiLaptopWindows,
mdiLaravel: mdiLaravel,
mdiLaserPointer: mdiLaserPointer,
mdiLasso: mdiLasso,
mdiLastpass: mdiLastpass,
mdiLatitude: mdiLatitude,
mdiLaunch: mdiLaunch,
mdiLavaLamp: mdiLavaLamp,
mdiLayers: mdiLayers,
mdiLayersMinus: mdiLayersMinus,
mdiLayersOff: mdiLayersOff,
mdiLayersOffOutline: mdiLayersOffOutline,
mdiLayersOutline: mdiLayersOutline,
mdiLayersPlus: mdiLayersPlus,
mdiLayersRemove: mdiLayersRemove,
mdiLayersSearch: mdiLayersSearch,
mdiLayersSearchOutline: mdiLayersSearchOutline,
mdiLayersTriple: mdiLayersTriple,
mdiLayersTripleOutline: mdiLayersTripleOutline,
mdiLeadPencil: mdiLeadPencil,
mdiLeaf: mdiLeaf,
mdiLeafMaple: mdiLeafMaple,
mdiLeafMapleOff: mdiLeafMapleOff,
mdiLeafOff: mdiLeafOff,
mdiLeak: mdiLeak,
mdiLeakOff: mdiLeakOff,
mdiLedOff: mdiLedOff,
mdiLedOn: mdiLedOn,
mdiLedOutline: mdiLedOutline,
mdiLedStrip: mdiLedStrip,
mdiLedStripVariant: mdiLedStripVariant,
mdiLedVariantOff: mdiLedVariantOff,
mdiLedVariantOn: mdiLedVariantOn,
mdiLedVariantOutline: mdiLedVariantOutline,
mdiLeek: mdiLeek,
mdiLessThan: mdiLessThan,
mdiLessThanOrEqual: mdiLessThanOrEqual,
mdiLibrary: mdiLibrary,
mdiLibraryShelves: mdiLibraryShelves,
mdiLicense: mdiLicense,
mdiLifebuoy: mdiLifebuoy,
mdiLightSwitch: mdiLightSwitch,
mdiLightbulb: mdiLightbulb,
mdiLightbulbCfl: mdiLightbulbCfl,
mdiLightbulbCflOff: mdiLightbulbCflOff,
mdiLightbulbCflSpiral: mdiLightbulbCflSpiral,
mdiLightbulbCflSpiralOff: mdiLightbulbCflSpiralOff,
mdiLightbulbGroup: mdiLightbulbGroup,
mdiLightbulbGroupOff: mdiLightbulbGroupOff,
mdiLightbulbGroupOffOutline: mdiLightbulbGroupOffOutline,
mdiLightbulbGroupOutline: mdiLightbulbGroupOutline,
mdiLightbulbMultiple: mdiLightbulbMultiple,
mdiLightbulbMultipleOff: mdiLightbulbMultipleOff,
mdiLightbulbMultipleOffOutline: mdiLightbulbMultipleOffOutline,
mdiLightbulbMultipleOutline: mdiLightbulbMultipleOutline,
mdiLightbulbOff: mdiLightbulbOff,
mdiLightbulbOffOutline: mdiLightbulbOffOutline,
mdiLightbulbOn: mdiLightbulbOn,
mdiLightbulbOnOutline: mdiLightbulbOnOutline,
mdiLightbulbOutline: mdiLightbulbOutline,
mdiLighthouse: mdiLighthouse,
mdiLighthouseOn: mdiLighthouseOn,
mdiLightningBolt: mdiLightningBolt,
mdiLightningBoltOutline: mdiLightningBoltOutline,
mdiLingerie: mdiLingerie,
mdiLink: mdiLink,
mdiLinkBox: mdiLinkBox,
mdiLinkBoxOutline: mdiLinkBoxOutline,
mdiLinkBoxVariant: mdiLinkBoxVariant,
mdiLinkBoxVariantOutline: mdiLinkBoxVariantOutline,
mdiLinkLock: mdiLinkLock,
mdiLinkOff: mdiLinkOff,
mdiLinkPlus: mdiLinkPlus,
mdiLinkVariant: mdiLinkVariant,
mdiLinkVariantMinus: mdiLinkVariantMinus,
mdiLinkVariantOff: mdiLinkVariantOff,
mdiLinkVariantPlus: mdiLinkVariantPlus,
mdiLinkVariantRemove: mdiLinkVariantRemove,
mdiLinkedin: mdiLinkedin,
mdiLinux: mdiLinux,
mdiLinuxMint: mdiLinuxMint,
mdiLipstick: mdiLipstick,
mdiListStatus: mdiListStatus,
mdiLitecoin: mdiLitecoin,
mdiLoading: mdiLoading,
mdiLocationEnter: mdiLocationEnter,
mdiLocationExit: mdiLocationExit,
mdiLock: mdiLock,
mdiLockAlert: mdiLockAlert,
mdiLockAlertOutline: mdiLockAlertOutline,
mdiLockCheck: mdiLockCheck,
mdiLockCheckOutline: mdiLockCheckOutline,
mdiLockClock: mdiLockClock,
mdiLockMinus: mdiLockMinus,
mdiLockMinusOutline: mdiLockMinusOutline,
mdiLockOff: mdiLockOff,
mdiLockOffOutline: mdiLockOffOutline,
mdiLockOpen: mdiLockOpen,
mdiLockOpenAlert: mdiLockOpenAlert,
mdiLockOpenAlertOutline: mdiLockOpenAlertOutline,
mdiLockOpenCheck: mdiLockOpenCheck,
mdiLockOpenCheckOutline: mdiLockOpenCheckOutline,
mdiLockOpenMinus: mdiLockOpenMinus,
mdiLockOpenMinusOutline: mdiLockOpenMinusOutline,
mdiLockOpenOutline: mdiLockOpenOutline,
mdiLockOpenPlus: mdiLockOpenPlus,
mdiLockOpenPlusOutline: mdiLockOpenPlusOutline,
mdiLockOpenRemove: mdiLockOpenRemove,
mdiLockOpenRemoveOutline: mdiLockOpenRemoveOutline,
mdiLockOpenVariant: mdiLockOpenVariant,
mdiLockOpenVariantOutline: mdiLockOpenVariantOutline,
mdiLockOutline: mdiLockOutline,
mdiLockPattern: mdiLockPattern,
mdiLockPlus: mdiLockPlus,
mdiLockPlusOutline: mdiLockPlusOutline,
mdiLockQuestion: mdiLockQuestion,
mdiLockRemove: mdiLockRemove,
mdiLockRemoveOutline: mdiLockRemoveOutline,
mdiLockReset: mdiLockReset,
mdiLockSmart: mdiLockSmart,
mdiLocker: mdiLocker,
mdiLockerMultiple: mdiLockerMultiple,
mdiLogin: mdiLogin,
mdiLoginVariant: mdiLoginVariant,
mdiLogout: mdiLogout,
mdiLogoutVariant: mdiLogoutVariant,
mdiLongitude: mdiLongitude,
mdiLooks: mdiLooks,
mdiLotion: mdiLotion,
mdiLotionOutline: mdiLotionOutline,
mdiLotionPlus: mdiLotionPlus,
mdiLotionPlusOutline: mdiLotionPlusOutline,
mdiLoupe: mdiLoupe,
mdiLumx: mdiLumx,
mdiLungs: mdiLungs,
mdiMagnet: mdiMagnet,
mdiMagnetOn: mdiMagnetOn,
mdiMagnify: mdiMagnify,
mdiMagnifyClose: mdiMagnifyClose,
mdiMagnifyMinus: mdiMagnifyMinus,
mdiMagnifyMinusCursor: mdiMagnifyMinusCursor,
mdiMagnifyMinusOutline: mdiMagnifyMinusOutline,
mdiMagnifyPlus: mdiMagnifyPlus,
mdiMagnifyPlusCursor: mdiMagnifyPlusCursor,
mdiMagnifyPlusOutline: mdiMagnifyPlusOutline,
mdiMagnifyRemoveCursor: mdiMagnifyRemoveCursor,
mdiMagnifyRemoveOutline: mdiMagnifyRemoveOutline,
mdiMagnifyScan: mdiMagnifyScan,
mdiMail: mdiMail,
mdiMailbox: mdiMailbox,
mdiMailboxOpen: mdiMailboxOpen,
mdiMailboxOpenOutline: mdiMailboxOpenOutline,
mdiMailboxOpenUp: mdiMailboxOpenUp,
mdiMailboxOpenUpOutline: mdiMailboxOpenUpOutline,
mdiMailboxOutline: mdiMailboxOutline,
mdiMailboxUp: mdiMailboxUp,
mdiMailboxUpOutline: mdiMailboxUpOutline,
mdiManjaro: mdiManjaro,
mdiMap: mdiMap,
mdiMapCheck: mdiMapCheck,
mdiMapCheckOutline: mdiMapCheckOutline,
mdiMapClock: mdiMapClock,
mdiMapClockOutline: mdiMapClockOutline,
mdiMapLegend: mdiMapLegend,
mdiMapMarker: mdiMapMarker,
mdiMapMarkerAlert: mdiMapMarkerAlert,
mdiMapMarkerAlertOutline: mdiMapMarkerAlertOutline,
mdiMapMarkerCheck: mdiMapMarkerCheck,
mdiMapMarkerCheckOutline: mdiMapMarkerCheckOutline,
mdiMapMarkerCircle: mdiMapMarkerCircle,
mdiMapMarkerDistance: mdiMapMarkerDistance,
mdiMapMarkerDown: mdiMapMarkerDown,
mdiMapMarkerLeft: mdiMapMarkerLeft,
mdiMapMarkerLeftOutline: mdiMapMarkerLeftOutline,
mdiMapMarkerMinus: mdiMapMarkerMinus,
mdiMapMarkerMinusOutline: mdiMapMarkerMinusOutline,
mdiMapMarkerMultiple: mdiMapMarkerMultiple,
mdiMapMarkerMultipleOutline: mdiMapMarkerMultipleOutline,
mdiMapMarkerOff: mdiMapMarkerOff,
mdiMapMarkerOffOutline: mdiMapMarkerOffOutline,
mdiMapMarkerOutline: mdiMapMarkerOutline,
mdiMapMarkerPath: mdiMapMarkerPath,
mdiMapMarkerPlus: mdiMapMarkerPlus,
mdiMapMarkerPlusOutline: mdiMapMarkerPlusOutline,
mdiMapMarkerQuestion: mdiMapMarkerQuestion,
mdiMapMarkerQuestionOutline: mdiMapMarkerQuestionOutline,
mdiMapMarkerRadius: mdiMapMarkerRadius,
mdiMapMarkerRadiusOutline: mdiMapMarkerRadiusOutline,
mdiMapMarkerRemove: mdiMapMarkerRemove,
mdiMapMarkerRemoveOutline: mdiMapMarkerRemoveOutline,
mdiMapMarkerRemoveVariant: mdiMapMarkerRemoveVariant,
mdiMapMarkerRight: mdiMapMarkerRight,
mdiMapMarkerRightOutline: mdiMapMarkerRightOutline,
mdiMapMarkerStar: mdiMapMarkerStar,
mdiMapMarkerStarOutline: mdiMapMarkerStarOutline,
mdiMapMarkerUp: mdiMapMarkerUp,
mdiMapMinus: mdiMapMinus,
mdiMapOutline: mdiMapOutline,
mdiMapPlus: mdiMapPlus,
mdiMapSearch: mdiMapSearch,
mdiMapSearchOutline: mdiMapSearchOutline,
mdiMapbox: mdiMapbox,
mdiMargin: mdiMargin,
mdiMarker: mdiMarker,
mdiMarkerCancel: mdiMarkerCancel,
mdiMarkerCheck: mdiMarkerCheck,
mdiMastodon: mdiMastodon,
mdiMaterialDesign: mdiMaterialDesign,
mdiMaterialUi: mdiMaterialUi,
mdiMathCompass: mdiMathCompass,
mdiMathCos: mdiMathCos,
mdiMathIntegral: mdiMathIntegral,
mdiMathIntegralBox: mdiMathIntegralBox,
mdiMathLog: mdiMathLog,
mdiMathNorm: mdiMathNorm,
mdiMathNormBox: mdiMathNormBox,
mdiMathSin: mdiMathSin,
mdiMathTan: mdiMathTan,
mdiMatrix: mdiMatrix,
mdiMedal: mdiMedal,
mdiMedalOutline: mdiMedalOutline,
mdiMedicalBag: mdiMedicalBag,
mdiMeditation: mdiMeditation,
mdiMemory: mdiMemory,
mdiMenu: mdiMenu,
mdiMenuDown: mdiMenuDown,
mdiMenuDownOutline: mdiMenuDownOutline,
mdiMenuLeft: mdiMenuLeft,
mdiMenuLeftOutline: mdiMenuLeftOutline,
mdiMenuOpen: mdiMenuOpen,
mdiMenuRight: mdiMenuRight,
mdiMenuRightOutline: mdiMenuRightOutline,
mdiMenuSwap: mdiMenuSwap,
mdiMenuSwapOutline: mdiMenuSwapOutline,
mdiMenuUp: mdiMenuUp,
mdiMenuUpOutline: mdiMenuUpOutline,
mdiMerge: mdiMerge,
mdiMessage: mdiMessage,
mdiMessageAlert: mdiMessageAlert,
mdiMessageAlertOutline: mdiMessageAlertOutline,
mdiMessageArrowLeft: mdiMessageArrowLeft,
mdiMessageArrowLeftOutline: mdiMessageArrowLeftOutline,
mdiMessageArrowRight: mdiMessageArrowRight,
mdiMessageArrowRightOutline: mdiMessageArrowRightOutline,
mdiMessageBookmark: mdiMessageBookmark,
mdiMessageBookmarkOutline: mdiMessageBookmarkOutline,
mdiMessageBulleted: mdiMessageBulleted,
mdiMessageBulletedOff: mdiMessageBulletedOff,
mdiMessageCog: mdiMessageCog,
mdiMessageCogOutline: mdiMessageCogOutline,
mdiMessageDraw: mdiMessageDraw,
mdiMessageFlash: mdiMessageFlash,
mdiMessageFlashOutline: mdiMessageFlashOutline,
mdiMessageImage: mdiMessageImage,
mdiMessageImageOutline: mdiMessageImageOutline,
mdiMessageLock: mdiMessageLock,
mdiMessageLockOutline: mdiMessageLockOutline,
mdiMessageMinus: mdiMessageMinus,
mdiMessageMinusOutline: mdiMessageMinusOutline,
mdiMessageOff: mdiMessageOff,
mdiMessageOffOutline: mdiMessageOffOutline,
mdiMessageOutline: mdiMessageOutline,
mdiMessagePlus: mdiMessagePlus,
mdiMessagePlusOutline: mdiMessagePlusOutline,
mdiMessageProcessing: mdiMessageProcessing,
mdiMessageProcessingOutline: mdiMessageProcessingOutline,
mdiMessageQuestion: mdiMessageQuestion,
mdiMessageQuestionOutline: mdiMessageQuestionOutline,
mdiMessageReply: mdiMessageReply,
mdiMessageReplyOutline: mdiMessageReplyOutline,
mdiMessageReplyText: mdiMessageReplyText,
mdiMessageReplyTextOutline: mdiMessageReplyTextOutline,
mdiMessageSettings: mdiMessageSettings,
mdiMessageSettingsOutline: mdiMessageSettingsOutline,
mdiMessageText: mdiMessageText,
mdiMessageTextClock: mdiMessageTextClock,
mdiMessageTextClockOutline: mdiMessageTextClockOutline,
mdiMessageTextLock: mdiMessageTextLock,
mdiMessageTextLockOutline: mdiMessageTextLockOutline,
mdiMessageTextOutline: mdiMessageTextOutline,
mdiMessageVideo: mdiMessageVideo,
mdiMeteor: mdiMeteor,
mdiMetronome: mdiMetronome,
mdiMetronomeTick: mdiMetronomeTick,
mdiMicroSd: mdiMicroSd,
mdiMicrophone: mdiMicrophone,
mdiMicrophoneMinus: mdiMicrophoneMinus,
mdiMicrophoneOff: mdiMicrophoneOff,
mdiMicrophoneOutline: mdiMicrophoneOutline,
mdiMicrophonePlus: mdiMicrophonePlus,
mdiMicrophoneSettings: mdiMicrophoneSettings,
mdiMicrophoneVariant: mdiMicrophoneVariant,
mdiMicrophoneVariantOff: mdiMicrophoneVariantOff,
mdiMicroscope: mdiMicroscope,
mdiMicrosoft: mdiMicrosoft,
mdiMicrosoftAccess: mdiMicrosoftAccess,
mdiMicrosoftAzure: mdiMicrosoftAzure,
mdiMicrosoftAzureDevops: mdiMicrosoftAzureDevops,
mdiMicrosoftBing: mdiMicrosoftBing,
mdiMicrosoftDynamics365: mdiMicrosoftDynamics365,
mdiMicrosoftEdge: mdiMicrosoftEdge,
mdiMicrosoftEdgeLegacy: mdiMicrosoftEdgeLegacy,
mdiMicrosoftExcel: mdiMicrosoftExcel,
mdiMicrosoftInternetExplorer: mdiMicrosoftInternetExplorer,
mdiMicrosoftOffice: mdiMicrosoftOffice,
mdiMicrosoftOnedrive: mdiMicrosoftOnedrive,
mdiMicrosoftOnenote: mdiMicrosoftOnenote,
mdiMicrosoftOutlook: mdiMicrosoftOutlook,
mdiMicrosoftPowerpoint: mdiMicrosoftPowerpoint,
mdiMicrosoftSharepoint: mdiMicrosoftSharepoint,
mdiMicrosoftTeams: mdiMicrosoftTeams,
mdiMicrosoftVisualStudio: mdiMicrosoftVisualStudio,
mdiMicrosoftVisualStudioCode: mdiMicrosoftVisualStudioCode,
mdiMicrosoftWindows: mdiMicrosoftWindows,
mdiMicrosoftWindowsClassic: mdiMicrosoftWindowsClassic,
mdiMicrosoftWord: mdiMicrosoftWord,
mdiMicrosoftXbox: mdiMicrosoftXbox,
mdiMicrosoftXboxController: mdiMicrosoftXboxController,
mdiMicrosoftXboxControllerBatteryAlert: mdiMicrosoftXboxControllerBatteryAlert,
mdiMicrosoftXboxControllerBatteryCharging: mdiMicrosoftXboxControllerBatteryCharging,
mdiMicrosoftXboxControllerBatteryEmpty: mdiMicrosoftXboxControllerBatteryEmpty,
mdiMicrosoftXboxControllerBatteryFull: mdiMicrosoftXboxControllerBatteryFull,
mdiMicrosoftXboxControllerBatteryLow: mdiMicrosoftXboxControllerBatteryLow,
mdiMicrosoftXboxControllerBatteryMedium: mdiMicrosoftXboxControllerBatteryMedium,
mdiMicrosoftXboxControllerBatteryUnknown: mdiMicrosoftXboxControllerBatteryUnknown,
mdiMicrosoftXboxControllerMenu: mdiMicrosoftXboxControllerMenu,
mdiMicrosoftXboxControllerOff: mdiMicrosoftXboxControllerOff,
mdiMicrosoftXboxControllerView: mdiMicrosoftXboxControllerView,
mdiMicrosoftYammer: mdiMicrosoftYammer,
mdiMicrowave: mdiMicrowave,
mdiMicrowaveOff: mdiMicrowaveOff,
mdiMiddleware: mdiMiddleware,
mdiMiddlewareOutline: mdiMiddlewareOutline,
mdiMidi: mdiMidi,
mdiMidiPort: mdiMidiPort,
mdiMine: mdiMine,
mdiMinecraft: mdiMinecraft,
mdiMiniSd: mdiMiniSd,
mdiMinidisc: mdiMinidisc,
mdiMinus: mdiMinus,
mdiMinusBox: mdiMinusBox,
mdiMinusBoxMultiple: mdiMinusBoxMultiple,
mdiMinusBoxMultipleOutline: mdiMinusBoxMultipleOutline,
mdiMinusBoxOutline: mdiMinusBoxOutline,
mdiMinusCircle: mdiMinusCircle,
mdiMinusCircleMultiple: mdiMinusCircleMultiple,
mdiMinusCircleMultipleOutline: mdiMinusCircleMultipleOutline,
mdiMinusCircleOff: mdiMinusCircleOff,
mdiMinusCircleOffOutline: mdiMinusCircleOffOutline,
mdiMinusCircleOutline: mdiMinusCircleOutline,
mdiMinusNetwork: mdiMinusNetwork,
mdiMinusNetworkOutline: mdiMinusNetworkOutline,
mdiMinusThick: mdiMinusThick,
mdiMirror: mdiMirror,
mdiMixedMartialArts: mdiMixedMartialArts,
mdiMixedReality: mdiMixedReality,
mdiMolecule: mdiMolecule,
mdiMoleculeCo: mdiMoleculeCo,
mdiMoleculeCo2: mdiMoleculeCo2,
mdiMonitor: mdiMonitor,
mdiMonitorCellphone: mdiMonitorCellphone,
mdiMonitorCellphoneStar: mdiMonitorCellphoneStar,
mdiMonitorClean: mdiMonitorClean,
mdiMonitorDashboard: mdiMonitorDashboard,
mdiMonitorEdit: mdiMonitorEdit,
mdiMonitorEye: mdiMonitorEye,
mdiMonitorLock: mdiMonitorLock,
mdiMonitorMultiple: mdiMonitorMultiple,
mdiMonitorOff: mdiMonitorOff,
mdiMonitorScreenshot: mdiMonitorScreenshot,
mdiMonitorShare: mdiMonitorShare,
mdiMonitorSpeaker: mdiMonitorSpeaker,
mdiMonitorSpeakerOff: mdiMonitorSpeakerOff,
mdiMonitorStar: mdiMonitorStar,
mdiMoonFirstQuarter: mdiMoonFirstQuarter,
mdiMoonFull: mdiMoonFull,
mdiMoonLastQuarter: mdiMoonLastQuarter,
mdiMoonNew: mdiMoonNew,
mdiMoonWaningCrescent: mdiMoonWaningCrescent,
mdiMoonWaningGibbous: mdiMoonWaningGibbous,
mdiMoonWaxingCrescent: mdiMoonWaxingCrescent,
mdiMoonWaxingGibbous: mdiMoonWaxingGibbous,
mdiMoped: mdiMoped,
mdiMopedElectric: mdiMopedElectric,
mdiMopedElectricOutline: mdiMopedElectricOutline,
mdiMopedOutline: mdiMopedOutline,
mdiMore: mdiMore,
mdiMotherHeart: mdiMotherHeart,
mdiMotherNurse: mdiMotherNurse,
mdiMotion: mdiMotion,
mdiMotionOutline: mdiMotionOutline,
mdiMotionPause: mdiMotionPause,
mdiMotionPauseOutline: mdiMotionPauseOutline,
mdiMotionPlay: mdiMotionPlay,
mdiMotionPlayOutline: mdiMotionPlayOutline,
mdiMotionSensor: mdiMotionSensor,
mdiMotionSensorOff: mdiMotionSensorOff,
mdiMotorbike: mdiMotorbike,
mdiMotorbikeElectric: mdiMotorbikeElectric,
mdiMouse: mdiMouse,
mdiMouseBluetooth: mdiMouseBluetooth,
mdiMouseMoveDown: mdiMouseMoveDown,
mdiMouseMoveUp: mdiMouseMoveUp,
mdiMouseMoveVertical: mdiMouseMoveVertical,
mdiMouseOff: mdiMouseOff,
mdiMouseVariant: mdiMouseVariant,
mdiMouseVariantOff: mdiMouseVariantOff,
mdiMoveResize: mdiMoveResize,
mdiMoveResizeVariant: mdiMoveResizeVariant,
mdiMovie: mdiMovie,
mdiMovieCheck: mdiMovieCheck,
mdiMovieCheckOutline: mdiMovieCheckOutline,
mdiMovieCog: mdiMovieCog,
mdiMovieCogOutline: mdiMovieCogOutline,
mdiMovieEdit: mdiMovieEdit,
mdiMovieEditOutline: mdiMovieEditOutline,
mdiMovieFilter: mdiMovieFilter,
mdiMovieFilterOutline: mdiMovieFilterOutline,
mdiMovieMinus: mdiMovieMinus,
mdiMovieMinusOutline: mdiMovieMinusOutline,
mdiMovieOff: mdiMovieOff,
mdiMovieOffOutline: mdiMovieOffOutline,
mdiMovieOpen: mdiMovieOpen,
mdiMovieOpenCheck: mdiMovieOpenCheck,
mdiMovieOpenCheckOutline: mdiMovieOpenCheckOutline,
mdiMovieOpenCog: mdiMovieOpenCog,
mdiMovieOpenCogOutline: mdiMovieOpenCogOutline,
mdiMovieOpenEdit: mdiMovieOpenEdit,
mdiMovieOpenEditOutline: mdiMovieOpenEditOutline,
mdiMovieOpenMinus: mdiMovieOpenMinus,
mdiMovieOpenMinusOutline: mdiMovieOpenMinusOutline,
mdiMovieOpenOff: mdiMovieOpenOff,
mdiMovieOpenOffOutline: mdiMovieOpenOffOutline,
mdiMovieOpenOutline: mdiMovieOpenOutline,
mdiMovieOpenPlay: mdiMovieOpenPlay,
mdiMovieOpenPlayOutline: mdiMovieOpenPlayOutline,
mdiMovieOpenPlus: mdiMovieOpenPlus,
mdiMovieOpenPlusOutline: mdiMovieOpenPlusOutline,
mdiMovieOpenRemove: mdiMovieOpenRemove,
mdiMovieOpenRemoveOutline: mdiMovieOpenRemoveOutline,
mdiMovieOpenSettings: mdiMovieOpenSettings,
mdiMovieOpenSettingsOutline: mdiMovieOpenSettingsOutline,
mdiMovieOpenStar: mdiMovieOpenStar,
mdiMovieOpenStarOutline: mdiMovieOpenStarOutline,
mdiMovieOutline: mdiMovieOutline,
mdiMoviePlay: mdiMoviePlay,
mdiMoviePlayOutline: mdiMoviePlayOutline,
mdiMoviePlus: mdiMoviePlus,
mdiMoviePlusOutline: mdiMoviePlusOutline,
mdiMovieRemove: mdiMovieRemove,
mdiMovieRemoveOutline: mdiMovieRemoveOutline,
mdiMovieRoll: mdiMovieRoll,
mdiMovieSearch: mdiMovieSearch,
mdiMovieSearchOutline: mdiMovieSearchOutline,
mdiMovieSettings: mdiMovieSettings,
mdiMovieSettingsOutline: mdiMovieSettingsOutline,
mdiMovieStar: mdiMovieStar,
mdiMovieStarOutline: mdiMovieStarOutline,
mdiMower: mdiMower,
mdiMowerBag: mdiMowerBag,
mdiMuffin: mdiMuffin,
mdiMultiplication: mdiMultiplication,
mdiMultiplicationBox: mdiMultiplicationBox,
mdiMushroom: mdiMushroom,
mdiMushroomOff: mdiMushroomOff,
mdiMushroomOffOutline: mdiMushroomOffOutline,
mdiMushroomOutline: mdiMushroomOutline,
mdiMusic: mdiMusic,
mdiMusicAccidentalDoubleFlat: mdiMusicAccidentalDoubleFlat,
mdiMusicAccidentalDoubleSharp: mdiMusicAccidentalDoubleSharp,
mdiMusicAccidentalFlat: mdiMusicAccidentalFlat,
mdiMusicAccidentalNatural: mdiMusicAccidentalNatural,
mdiMusicAccidentalSharp: mdiMusicAccidentalSharp,
mdiMusicBox: mdiMusicBox,
mdiMusicBoxMultiple: mdiMusicBoxMultiple,
mdiMusicBoxMultipleOutline: mdiMusicBoxMultipleOutline,
mdiMusicBoxOutline: mdiMusicBoxOutline,
mdiMusicCircle: mdiMusicCircle,
mdiMusicCircleOutline: mdiMusicCircleOutline,
mdiMusicClefAlto: mdiMusicClefAlto,
mdiMusicClefBass: mdiMusicClefBass,
mdiMusicClefTreble: mdiMusicClefTreble,
mdiMusicNote: mdiMusicNote,
mdiMusicNoteBluetooth: mdiMusicNoteBluetooth,
mdiMusicNoteBluetoothOff: mdiMusicNoteBluetoothOff,
mdiMusicNoteEighth: mdiMusicNoteEighth,
mdiMusicNoteEighthDotted: mdiMusicNoteEighthDotted,
mdiMusicNoteHalf: mdiMusicNoteHalf,
mdiMusicNoteHalfDotted: mdiMusicNoteHalfDotted,
mdiMusicNoteOff: mdiMusicNoteOff,
mdiMusicNoteOffOutline: mdiMusicNoteOffOutline,
mdiMusicNoteOutline: mdiMusicNoteOutline,
mdiMusicNotePlus: mdiMusicNotePlus,
mdiMusicNoteQuarter: mdiMusicNoteQuarter,
mdiMusicNoteQuarterDotted: mdiMusicNoteQuarterDotted,
mdiMusicNoteSixteenth: mdiMusicNoteSixteenth,
mdiMusicNoteSixteenthDotted: mdiMusicNoteSixteenthDotted,
mdiMusicNoteWhole: mdiMusicNoteWhole,
mdiMusicNoteWholeDotted: mdiMusicNoteWholeDotted,
mdiMusicOff: mdiMusicOff,
mdiMusicRestEighth: mdiMusicRestEighth,
mdiMusicRestHalf: mdiMusicRestHalf,
mdiMusicRestQuarter: mdiMusicRestQuarter,
mdiMusicRestSixteenth: mdiMusicRestSixteenth,
mdiMusicRestWhole: mdiMusicRestWhole,
mdiMustache: mdiMustache,
mdiNail: mdiNail,
mdiNas: mdiNas,
mdiNativescript: mdiNativescript,
mdiNature: mdiNature,
mdiNaturePeople: mdiNaturePeople,
mdiNavigation: mdiNavigation,
mdiNavigationOutline: mdiNavigationOutline,
mdiNearMe: mdiNearMe,
mdiNecklace: mdiNecklace,
mdiNeedle: mdiNeedle,
mdiNetflix: mdiNetflix,
mdiNetwork: mdiNetwork,
mdiNetworkOff: mdiNetworkOff,
mdiNetworkOffOutline: mdiNetworkOffOutline,
mdiNetworkOutline: mdiNetworkOutline,
mdiNetworkStrength1: mdiNetworkStrength1,
mdiNetworkStrength1Alert: mdiNetworkStrength1Alert,
mdiNetworkStrength2: mdiNetworkStrength2,
mdiNetworkStrength2Alert: mdiNetworkStrength2Alert,
mdiNetworkStrength3: mdiNetworkStrength3,
mdiNetworkStrength3Alert: mdiNetworkStrength3Alert,
mdiNetworkStrength4: mdiNetworkStrength4,
mdiNetworkStrength4Alert: mdiNetworkStrength4Alert,
mdiNetworkStrengthOff: mdiNetworkStrengthOff,
mdiNetworkStrengthOffOutline: mdiNetworkStrengthOffOutline,
mdiNetworkStrengthOutline: mdiNetworkStrengthOutline,
mdiNewBox: mdiNewBox,
mdiNewspaper: mdiNewspaper,
mdiNewspaperMinus: mdiNewspaperMinus,
mdiNewspaperPlus: mdiNewspaperPlus,
mdiNewspaperVariant: mdiNewspaperVariant,
mdiNewspaperVariantMultiple: mdiNewspaperVariantMultiple,
mdiNewspaperVariantMultipleOutline: mdiNewspaperVariantMultipleOutline,
mdiNewspaperVariantOutline: mdiNewspaperVariantOutline,
mdiNfc: mdiNfc,
mdiNfcSearchVariant: mdiNfcSearchVariant,
mdiNfcTap: mdiNfcTap,
mdiNfcVariant: mdiNfcVariant,
mdiNfcVariantOff: mdiNfcVariantOff,
mdiNinja: mdiNinja,
mdiNintendoGameBoy: mdiNintendoGameBoy,
mdiNintendoSwitch: mdiNintendoSwitch,
mdiNintendoWii: mdiNintendoWii,
mdiNintendoWiiu: mdiNintendoWiiu,
mdiNix: mdiNix,
mdiNodejs: mdiNodejs,
mdiNoodles: mdiNoodles,
mdiNotEqual: mdiNotEqual,
mdiNotEqualVariant: mdiNotEqualVariant,
mdiNote: mdiNote,
mdiNoteMinus: mdiNoteMinus,
mdiNoteMinusOutline: mdiNoteMinusOutline,
mdiNoteMultiple: mdiNoteMultiple,
mdiNoteMultipleOutline: mdiNoteMultipleOutline,
mdiNoteOutline: mdiNoteOutline,
mdiNotePlus: mdiNotePlus,
mdiNotePlusOutline: mdiNotePlusOutline,
mdiNoteRemove: mdiNoteRemove,
mdiNoteRemoveOutline: mdiNoteRemoveOutline,
mdiNoteSearch: mdiNoteSearch,
mdiNoteSearchOutline: mdiNoteSearchOutline,
mdiNoteText: mdiNoteText,
mdiNoteTextOutline: mdiNoteTextOutline,
mdiNotebook: mdiNotebook,
mdiNotebookCheck: mdiNotebookCheck,
mdiNotebookCheckOutline: mdiNotebookCheckOutline,
mdiNotebookEdit: mdiNotebookEdit,
mdiNotebookEditOutline: mdiNotebookEditOutline,
mdiNotebookMinus: mdiNotebookMinus,
mdiNotebookMinusOutline: mdiNotebookMinusOutline,
mdiNotebookMultiple: mdiNotebookMultiple,
mdiNotebookOutline: mdiNotebookOutline,
mdiNotebookPlus: mdiNotebookPlus,
mdiNotebookPlusOutline: mdiNotebookPlusOutline,
mdiNotebookRemove: mdiNotebookRemove,
mdiNotebookRemoveOutline: mdiNotebookRemoveOutline,
mdiNotificationClearAll: mdiNotificationClearAll,
mdiNpm: mdiNpm,
mdiNuke: mdiNuke,
mdiNull: mdiNull,
mdiNumeric: mdiNumeric,
mdiNumeric0: mdiNumeric0,
mdiNumeric0Box: mdiNumeric0Box,
mdiNumeric0BoxMultiple: mdiNumeric0BoxMultiple,
mdiNumeric0BoxMultipleOutline: mdiNumeric0BoxMultipleOutline,
mdiNumeric0BoxOutline: mdiNumeric0BoxOutline,
mdiNumeric0Circle: mdiNumeric0Circle,
mdiNumeric0CircleOutline: mdiNumeric0CircleOutline,
mdiNumeric1: mdiNumeric1,
mdiNumeric1Box: mdiNumeric1Box,
mdiNumeric1BoxMultiple: mdiNumeric1BoxMultiple,
mdiNumeric1BoxMultipleOutline: mdiNumeric1BoxMultipleOutline,
mdiNumeric1BoxOutline: mdiNumeric1BoxOutline,
mdiNumeric1Circle: mdiNumeric1Circle,
mdiNumeric1CircleOutline: mdiNumeric1CircleOutline,
mdiNumeric10: mdiNumeric10,
mdiNumeric10Box: mdiNumeric10Box,
mdiNumeric10BoxMultiple: mdiNumeric10BoxMultiple,
mdiNumeric10BoxMultipleOutline: mdiNumeric10BoxMultipleOutline,
mdiNumeric10BoxOutline: mdiNumeric10BoxOutline,
mdiNumeric10Circle: mdiNumeric10Circle,
mdiNumeric10CircleOutline: mdiNumeric10CircleOutline,
mdiNumeric2: mdiNumeric2,
mdiNumeric2Box: mdiNumeric2Box,
mdiNumeric2BoxMultiple: mdiNumeric2BoxMultiple,
mdiNumeric2BoxMultipleOutline: mdiNumeric2BoxMultipleOutline,
mdiNumeric2BoxOutline: mdiNumeric2BoxOutline,
mdiNumeric2Circle: mdiNumeric2Circle,
mdiNumeric2CircleOutline: mdiNumeric2CircleOutline,
mdiNumeric3: mdiNumeric3,
mdiNumeric3Box: mdiNumeric3Box,
mdiNumeric3BoxMultiple: mdiNumeric3BoxMultiple,
mdiNumeric3BoxMultipleOutline: mdiNumeric3BoxMultipleOutline,
mdiNumeric3BoxOutline: mdiNumeric3BoxOutline,
mdiNumeric3Circle: mdiNumeric3Circle,
mdiNumeric3CircleOutline: mdiNumeric3CircleOutline,
mdiNumeric4: mdiNumeric4,
mdiNumeric4Box: mdiNumeric4Box,
mdiNumeric4BoxMultiple: mdiNumeric4BoxMultiple,
mdiNumeric4BoxMultipleOutline: mdiNumeric4BoxMultipleOutline,
mdiNumeric4BoxOutline: mdiNumeric4BoxOutline,
mdiNumeric4Circle: mdiNumeric4Circle,
mdiNumeric4CircleOutline: mdiNumeric4CircleOutline,
mdiNumeric5: mdiNumeric5,
mdiNumeric5Box: mdiNumeric5Box,
mdiNumeric5BoxMultiple: mdiNumeric5BoxMultiple,
mdiNumeric5BoxMultipleOutline: mdiNumeric5BoxMultipleOutline,
mdiNumeric5BoxOutline: mdiNumeric5BoxOutline,
mdiNumeric5Circle: mdiNumeric5Circle,
mdiNumeric5CircleOutline: mdiNumeric5CircleOutline,
mdiNumeric6: mdiNumeric6,
mdiNumeric6Box: mdiNumeric6Box,
mdiNumeric6BoxMultiple: mdiNumeric6BoxMultiple,
mdiNumeric6BoxMultipleOutline: mdiNumeric6BoxMultipleOutline,
mdiNumeric6BoxOutline: mdiNumeric6BoxOutline,
mdiNumeric6Circle: mdiNumeric6Circle,
mdiNumeric6CircleOutline: mdiNumeric6CircleOutline,
mdiNumeric7: mdiNumeric7,
mdiNumeric7Box: mdiNumeric7Box,
mdiNumeric7BoxMultiple: mdiNumeric7BoxMultiple,
mdiNumeric7BoxMultipleOutline: mdiNumeric7BoxMultipleOutline,
mdiNumeric7BoxOutline: mdiNumeric7BoxOutline,
mdiNumeric7Circle: mdiNumeric7Circle,
mdiNumeric7CircleOutline: mdiNumeric7CircleOutline,
mdiNumeric8: mdiNumeric8,
mdiNumeric8Box: mdiNumeric8Box,
mdiNumeric8BoxMultiple: mdiNumeric8BoxMultiple,
mdiNumeric8BoxMultipleOutline: mdiNumeric8BoxMultipleOutline,
mdiNumeric8BoxOutline: mdiNumeric8BoxOutline,
mdiNumeric8Circle: mdiNumeric8Circle,
mdiNumeric8CircleOutline: mdiNumeric8CircleOutline,
mdiNumeric9: mdiNumeric9,
mdiNumeric9Box: mdiNumeric9Box,
mdiNumeric9BoxMultiple: mdiNumeric9BoxMultiple,
mdiNumeric9BoxMultipleOutline: mdiNumeric9BoxMultipleOutline,
mdiNumeric9BoxOutline: mdiNumeric9BoxOutline,
mdiNumeric9Circle: mdiNumeric9Circle,
mdiNumeric9CircleOutline: mdiNumeric9CircleOutline,
mdiNumeric9Plus: mdiNumeric9Plus,
mdiNumeric9PlusBox: mdiNumeric9PlusBox,
mdiNumeric9PlusBoxMultiple: mdiNumeric9PlusBoxMultiple,
mdiNumeric9PlusBoxMultipleOutline: mdiNumeric9PlusBoxMultipleOutline,
mdiNumeric9PlusBoxOutline: mdiNumeric9PlusBoxOutline,
mdiNumeric9PlusCircle: mdiNumeric9PlusCircle,
mdiNumeric9PlusCircleOutline: mdiNumeric9PlusCircleOutline,
mdiNumericNegative1: mdiNumericNegative1,
mdiNumericPositive1: mdiNumericPositive1,
mdiNut: mdiNut,
mdiNutrition: mdiNutrition,
mdiNuxt: mdiNuxt,
mdiOar: mdiOar,
mdiOcarina: mdiOcarina,
mdiOci: mdiOci,
mdiOcr: mdiOcr,
mdiOctagon: mdiOctagon,
mdiOctagonOutline: mdiOctagonOutline,
mdiOctagram: mdiOctagram,
mdiOctagramOutline: mdiOctagramOutline,
mdiOdnoklassniki: mdiOdnoklassniki,
mdiOffer: mdiOffer,
mdiOfficeBuilding: mdiOfficeBuilding,
mdiOfficeBuildingMarker: mdiOfficeBuildingMarker,
mdiOfficeBuildingMarkerOutline: mdiOfficeBuildingMarkerOutline,
mdiOfficeBuildingOutline: mdiOfficeBuildingOutline,
mdiOil: mdiOil,
mdiOilLamp: mdiOilLamp,
mdiOilLevel: mdiOilLevel,
mdiOilTemperature: mdiOilTemperature,
mdiOmega: mdiOmega,
mdiOneUp: mdiOneUp,
mdiOnepassword: mdiOnepassword,
mdiOpacity: mdiOpacity,
mdiOpenInApp: mdiOpenInApp,
mdiOpenInNew: mdiOpenInNew,
mdiOpenSourceInitiative: mdiOpenSourceInitiative,
mdiOpenid: mdiOpenid,
mdiOpera: mdiOpera,
mdiOrbit: mdiOrbit,
mdiOrbitVariant: mdiOrbitVariant,
mdiOrderAlphabeticalAscending: mdiOrderAlphabeticalAscending,
mdiOrderAlphabeticalDescending: mdiOrderAlphabeticalDescending,
mdiOrderBoolAscending: mdiOrderBoolAscending,
mdiOrderBoolAscendingVariant: mdiOrderBoolAscendingVariant,
mdiOrderBoolDescending: mdiOrderBoolDescending,
mdiOrderBoolDescendingVariant: mdiOrderBoolDescendingVariant,
mdiOrderNumericAscending: mdiOrderNumericAscending,
mdiOrderNumericDescending: mdiOrderNumericDescending,
mdiOrigin: mdiOrigin,
mdiOrnament: mdiOrnament,
mdiOrnamentVariant: mdiOrnamentVariant,
mdiOutdoorLamp: mdiOutdoorLamp,
mdiOverscan: mdiOverscan,
mdiOwl: mdiOwl,
mdiPacMan: mdiPacMan,
mdiPackage: mdiPackage,
mdiPackageDown: mdiPackageDown,
mdiPackageUp: mdiPackageUp,
mdiPackageVariant: mdiPackageVariant,
mdiPackageVariantClosed: mdiPackageVariantClosed,
mdiPageFirst: mdiPageFirst,
mdiPageLast: mdiPageLast,
mdiPageLayoutBody: mdiPageLayoutBody,
mdiPageLayoutFooter: mdiPageLayoutFooter,
mdiPageLayoutHeader: mdiPageLayoutHeader,
mdiPageLayoutHeaderFooter: mdiPageLayoutHeaderFooter,
mdiPageLayoutSidebarLeft: mdiPageLayoutSidebarLeft,
mdiPageLayoutSidebarRight: mdiPageLayoutSidebarRight,
mdiPageNext: mdiPageNext,
mdiPageNextOutline: mdiPageNextOutline,
mdiPagePrevious: mdiPagePrevious,
mdiPagePreviousOutline: mdiPagePreviousOutline,
mdiPail: mdiPail,
mdiPailMinus: mdiPailMinus,
mdiPailMinusOutline: mdiPailMinusOutline,
mdiPailOff: mdiPailOff,
mdiPailOffOutline: mdiPailOffOutline,
mdiPailOutline: mdiPailOutline,
mdiPailPlus: mdiPailPlus,
mdiPailPlusOutline: mdiPailPlusOutline,
mdiPailRemove: mdiPailRemove,
mdiPailRemoveOutline: mdiPailRemoveOutline,
mdiPalette: mdiPalette,
mdiPaletteAdvanced: mdiPaletteAdvanced,
mdiPaletteOutline: mdiPaletteOutline,
mdiPaletteSwatch: mdiPaletteSwatch,
mdiPaletteSwatchOutline: mdiPaletteSwatchOutline,
mdiPalmTree: mdiPalmTree,
mdiPan: mdiPan,
mdiPanBottomLeft: mdiPanBottomLeft,
mdiPanBottomRight: mdiPanBottomRight,
mdiPanDown: mdiPanDown,
mdiPanHorizontal: mdiPanHorizontal,
mdiPanLeft: mdiPanLeft,
mdiPanRight: mdiPanRight,
mdiPanTopLeft: mdiPanTopLeft,
mdiPanTopRight: mdiPanTopRight,
mdiPanUp: mdiPanUp,
mdiPanVertical: mdiPanVertical,
mdiPanda: mdiPanda,
mdiPandora: mdiPandora,
mdiPanorama: mdiPanorama,
mdiPanoramaFisheye: mdiPanoramaFisheye,
mdiPanoramaHorizontal: mdiPanoramaHorizontal,
mdiPanoramaVertical: mdiPanoramaVertical,
mdiPanoramaWideAngle: mdiPanoramaWideAngle,
mdiPaperCutVertical: mdiPaperCutVertical,
mdiPaperRoll: mdiPaperRoll,
mdiPaperRollOutline: mdiPaperRollOutline,
mdiPaperclip: mdiPaperclip,
mdiParachute: mdiParachute,
mdiParachuteOutline: mdiParachuteOutline,
mdiParking: mdiParking,
mdiPartyPopper: mdiPartyPopper,
mdiPassport: mdiPassport,
mdiPassportBiometric: mdiPassportBiometric,
mdiPasta: mdiPasta,
mdiPatioHeater: mdiPatioHeater,
mdiPatreon: mdiPatreon,
mdiPause: mdiPause,
mdiPauseCircle: mdiPauseCircle,
mdiPauseCircleOutline: mdiPauseCircleOutline,
mdiPauseOctagon: mdiPauseOctagon,
mdiPauseOctagonOutline: mdiPauseOctagonOutline,
mdiPaw: mdiPaw,
mdiPawOff: mdiPawOff,
mdiPawOffOutline: mdiPawOffOutline,
mdiPawOutline: mdiPawOutline,
mdiPdfBox: mdiPdfBox,
mdiPeace: mdiPeace,
mdiPeanut: mdiPeanut,
mdiPeanutOff: mdiPeanutOff,
mdiPeanutOffOutline: mdiPeanutOffOutline,
mdiPeanutOutline: mdiPeanutOutline,
mdiPen: mdiPen,
mdiPenLock: mdiPenLock,
mdiPenMinus: mdiPenMinus,
mdiPenOff: mdiPenOff,
mdiPenPlus: mdiPenPlus,
mdiPenRemove: mdiPenRemove,
mdiPencil: mdiPencil,
mdiPencilBox: mdiPencilBox,
mdiPencilBoxMultiple: mdiPencilBoxMultiple,
mdiPencilBoxMultipleOutline: mdiPencilBoxMultipleOutline,
mdiPencilBoxOutline: mdiPencilBoxOutline,
mdiPencilCircle: mdiPencilCircle,
mdiPencilCircleOutline: mdiPencilCircleOutline,
mdiPencilLock: mdiPencilLock,
mdiPencilLockOutline: mdiPencilLockOutline,
mdiPencilMinus: mdiPencilMinus,
mdiPencilMinusOutline: mdiPencilMinusOutline,
mdiPencilOff: mdiPencilOff,
mdiPencilOffOutline: mdiPencilOffOutline,
mdiPencilOutline: mdiPencilOutline,
mdiPencilPlus: mdiPencilPlus,
mdiPencilPlusOutline: mdiPencilPlusOutline,
mdiPencilRemove: mdiPencilRemove,
mdiPencilRemoveOutline: mdiPencilRemoveOutline,
mdiPencilRuler: mdiPencilRuler,
mdiPenguin: mdiPenguin,
mdiPentagon: mdiPentagon,
mdiPentagonOutline: mdiPentagonOutline,
mdiPentagram: mdiPentagram,
mdiPercent: mdiPercent,
mdiPercentOutline: mdiPercentOutline,
mdiPeriodicTable: mdiPeriodicTable,
mdiPerspectiveLess: mdiPerspectiveLess,
mdiPerspectiveMore: mdiPerspectiveMore,
mdiPharmacy: mdiPharmacy,
mdiPhone: mdiPhone,
mdiPhoneAlert: mdiPhoneAlert,
mdiPhoneAlertOutline: mdiPhoneAlertOutline,
mdiPhoneBluetooth: mdiPhoneBluetooth,
mdiPhoneBluetoothOutline: mdiPhoneBluetoothOutline,
mdiPhoneCancel: mdiPhoneCancel,
mdiPhoneCancelOutline: mdiPhoneCancelOutline,
mdiPhoneCheck: mdiPhoneCheck,
mdiPhoneCheckOutline: mdiPhoneCheckOutline,
mdiPhoneClassic: mdiPhoneClassic,
mdiPhoneClassicOff: mdiPhoneClassicOff,
mdiPhoneDial: mdiPhoneDial,
mdiPhoneDialOutline: mdiPhoneDialOutline,
mdiPhoneForward: mdiPhoneForward,
mdiPhoneForwardOutline: mdiPhoneForwardOutline,
mdiPhoneHangup: mdiPhoneHangup,
mdiPhoneHangupOutline: mdiPhoneHangupOutline,
mdiPhoneInTalk: mdiPhoneInTalk,
mdiPhoneInTalkOutline: mdiPhoneInTalkOutline,
mdiPhoneIncoming: mdiPhoneIncoming,
mdiPhoneIncomingOutline: mdiPhoneIncomingOutline,
mdiPhoneLock: mdiPhoneLock,
mdiPhoneLockOutline: mdiPhoneLockOutline,
mdiPhoneLog: mdiPhoneLog,
mdiPhoneLogOutline: mdiPhoneLogOutline,
mdiPhoneMessage: mdiPhoneMessage,
mdiPhoneMessageOutline: mdiPhoneMessageOutline,
mdiPhoneMinus: mdiPhoneMinus,
mdiPhoneMinusOutline: mdiPhoneMinusOutline,
mdiPhoneMissed: mdiPhoneMissed,
mdiPhoneMissedOutline: mdiPhoneMissedOutline,
mdiPhoneOff: mdiPhoneOff,
mdiPhoneOffOutline: mdiPhoneOffOutline,
mdiPhoneOutgoing: mdiPhoneOutgoing,
mdiPhoneOutgoingOutline: mdiPhoneOutgoingOutline,
mdiPhoneOutline: mdiPhoneOutline,
mdiPhonePaused: mdiPhonePaused,
mdiPhonePausedOutline: mdiPhonePausedOutline,
mdiPhonePlus: mdiPhonePlus,
mdiPhonePlusOutline: mdiPhonePlusOutline,
mdiPhoneRemove: mdiPhoneRemove,
mdiPhoneRemoveOutline: mdiPhoneRemoveOutline,
mdiPhoneReturn: mdiPhoneReturn,
mdiPhoneReturnOutline: mdiPhoneReturnOutline,
mdiPhoneRing: mdiPhoneRing,
mdiPhoneRingOutline: mdiPhoneRingOutline,
mdiPhoneRotateLandscape: mdiPhoneRotateLandscape,
mdiPhoneRotatePortrait: mdiPhoneRotatePortrait,
mdiPhoneSettings: mdiPhoneSettings,
mdiPhoneSettingsOutline: mdiPhoneSettingsOutline,
mdiPhoneVoip: mdiPhoneVoip,
mdiPi: mdiPi,
mdiPiBox: mdiPiBox,
mdiPiHole: mdiPiHole,
mdiPiano: mdiPiano,
mdiPickaxe: mdiPickaxe,
mdiPictureInPictureBottomRight: mdiPictureInPictureBottomRight,
mdiPictureInPictureBottomRightOutline: mdiPictureInPictureBottomRightOutline,
mdiPictureInPictureTopRight: mdiPictureInPictureTopRight,
mdiPictureInPictureTopRightOutline: mdiPictureInPictureTopRightOutline,
mdiPier: mdiPier,
mdiPierCrane: mdiPierCrane,
mdiPig: mdiPig,
mdiPigVariant: mdiPigVariant,
mdiPigVariantOutline: mdiPigVariantOutline,
mdiPiggyBank: mdiPiggyBank,
mdiPiggyBankOutline: mdiPiggyBankOutline,
mdiPill: mdiPill,
mdiPillar: mdiPillar,
mdiPin: mdiPin,
mdiPinOff: mdiPinOff,
mdiPinOffOutline: mdiPinOffOutline,
mdiPinOutline: mdiPinOutline,
mdiPineTree: mdiPineTree,
mdiPineTreeBox: mdiPineTreeBox,
mdiPineTreeFire: mdiPineTreeFire,
mdiPinterest: mdiPinterest,
mdiPinwheel: mdiPinwheel,
mdiPinwheelOutline: mdiPinwheelOutline,
mdiPipe: mdiPipe,
mdiPipeDisconnected: mdiPipeDisconnected,
mdiPipeLeak: mdiPipeLeak,
mdiPipeWrench: mdiPipeWrench,
mdiPirate: mdiPirate,
mdiPistol: mdiPistol,
mdiPiston: mdiPiston,
mdiPitchfork: mdiPitchfork,
mdiPizza: mdiPizza,
mdiPlay: mdiPlay,
mdiPlayBox: mdiPlayBox,
mdiPlayBoxMultiple: mdiPlayBoxMultiple,
mdiPlayBoxMultipleOutline: mdiPlayBoxMultipleOutline,
mdiPlayBoxOutline: mdiPlayBoxOutline,
mdiPlayCircle: mdiPlayCircle,
mdiPlayCircleOutline: mdiPlayCircleOutline,
mdiPlayNetwork: mdiPlayNetwork,
mdiPlayNetworkOutline: mdiPlayNetworkOutline,
mdiPlayOutline: mdiPlayOutline,
mdiPlayPause: mdiPlayPause,
mdiPlayProtectedContent: mdiPlayProtectedContent,
mdiPlaySpeed: mdiPlaySpeed,
mdiPlaylistCheck: mdiPlaylistCheck,
mdiPlaylistEdit: mdiPlaylistEdit,
mdiPlaylistMinus: mdiPlaylistMinus,
mdiPlaylistMusic: mdiPlaylistMusic,
mdiPlaylistMusicOutline: mdiPlaylistMusicOutline,
mdiPlaylistPlay: mdiPlaylistPlay,
mdiPlaylistPlus: mdiPlaylistPlus,
mdiPlaylistRemove: mdiPlaylistRemove,
mdiPlaylistStar: mdiPlaylistStar,
mdiPlex: mdiPlex,
mdiPlus: mdiPlus,
mdiPlusBox: mdiPlusBox,
mdiPlusBoxMultiple: mdiPlusBoxMultiple,
mdiPlusBoxMultipleOutline: mdiPlusBoxMultipleOutline,
mdiPlusBoxOutline: mdiPlusBoxOutline,
mdiPlusCircle: mdiPlusCircle,
mdiPlusCircleMultiple: mdiPlusCircleMultiple,
mdiPlusCircleMultipleOutline: mdiPlusCircleMultipleOutline,
mdiPlusCircleOutline: mdiPlusCircleOutline,
mdiPlusMinus: mdiPlusMinus,
mdiPlusMinusBox: mdiPlusMinusBox,
mdiPlusMinusVariant: mdiPlusMinusVariant,
mdiPlusNetwork: mdiPlusNetwork,
mdiPlusNetworkOutline: mdiPlusNetworkOutline,
mdiPlusOne: mdiPlusOne,
mdiPlusOutline: mdiPlusOutline,
mdiPlusThick: mdiPlusThick,
mdiPodcast: mdiPodcast,
mdiPodium: mdiPodium,
mdiPodiumBronze: mdiPodiumBronze,
mdiPodiumGold: mdiPodiumGold,
mdiPodiumSilver: mdiPodiumSilver,
mdiPointOfSale: mdiPointOfSale,
mdiPokeball: mdiPokeball,
mdiPokemonGo: mdiPokemonGo,
mdiPokerChip: mdiPokerChip,
mdiPolaroid: mdiPolaroid,
mdiPoliceBadge: mdiPoliceBadge,
mdiPoliceBadgeOutline: mdiPoliceBadgeOutline,
mdiPoll: mdiPoll,
mdiPollBox: mdiPollBox,
mdiPollBoxOutline: mdiPollBoxOutline,
mdiPolo: mdiPolo,
mdiPolymer: mdiPolymer,
mdiPool: mdiPool,
mdiPopcorn: mdiPopcorn,
mdiPost: mdiPost,
mdiPostOutline: mdiPostOutline,
mdiPostageStamp: mdiPostageStamp,
mdiPot: mdiPot,
mdiPotMix: mdiPotMix,
mdiPotMixOutline: mdiPotMixOutline,
mdiPotOutline: mdiPotOutline,
mdiPotSteam: mdiPotSteam,
mdiPotSteamOutline: mdiPotSteamOutline,
mdiPound: mdiPound,
mdiPoundBox: mdiPoundBox,
mdiPoundBoxOutline: mdiPoundBoxOutline,
mdiPower: mdiPower,
mdiPowerCycle: mdiPowerCycle,
mdiPowerOff: mdiPowerOff,
mdiPowerOn: mdiPowerOn,
mdiPowerPlug: mdiPowerPlug,
mdiPowerPlugOff: mdiPowerPlugOff,
mdiPowerPlugOffOutline: mdiPowerPlugOffOutline,
mdiPowerPlugOutline: mdiPowerPlugOutline,
mdiPowerSettings: mdiPowerSettings,
mdiPowerSleep: mdiPowerSleep,
mdiPowerSocket: mdiPowerSocket,
mdiPowerSocketAu: mdiPowerSocketAu,
mdiPowerSocketDe: mdiPowerSocketDe,
mdiPowerSocketEu: mdiPowerSocketEu,
mdiPowerSocketFr: mdiPowerSocketFr,
mdiPowerSocketIt: mdiPowerSocketIt,
mdiPowerSocketJp: mdiPowerSocketJp,
mdiPowerSocketUk: mdiPowerSocketUk,
mdiPowerSocketUs: mdiPowerSocketUs,
mdiPowerStandby: mdiPowerStandby,
mdiPowershell: mdiPowershell,
mdiPrescription: mdiPrescription,
mdiPresentation: mdiPresentation,
mdiPresentationPlay: mdiPresentationPlay,
mdiPretzel: mdiPretzel,
mdiPrinter: mdiPrinter,
mdiPrinter3d: mdiPrinter3d,
mdiPrinter3dNozzle: mdiPrinter3dNozzle,
mdiPrinter3dNozzleAlert: mdiPrinter3dNozzleAlert,
mdiPrinter3dNozzleAlertOutline: mdiPrinter3dNozzleAlertOutline,
mdiPrinter3dNozzleOutline: mdiPrinter3dNozzleOutline,
mdiPrinterAlert: mdiPrinterAlert,
mdiPrinterCheck: mdiPrinterCheck,
mdiPrinterEye: mdiPrinterEye,
mdiPrinterOff: mdiPrinterOff,
mdiPrinterPos: mdiPrinterPos,
mdiPrinterSearch: mdiPrinterSearch,
mdiPrinterSettings: mdiPrinterSettings,
mdiPrinterWireless: mdiPrinterWireless,
mdiPriorityHigh: mdiPriorityHigh,
mdiPriorityLow: mdiPriorityLow,
mdiProfessionalHexagon: mdiProfessionalHexagon,
mdiProgressAlert: mdiProgressAlert,
mdiProgressCheck: mdiProgressCheck,
mdiProgressClock: mdiProgressClock,
mdiProgressClose: mdiProgressClose,
mdiProgressDownload: mdiProgressDownload,
mdiProgressQuestion: mdiProgressQuestion,
mdiProgressUpload: mdiProgressUpload,
mdiProgressWrench: mdiProgressWrench,
mdiProjector: mdiProjector,
mdiProjectorScreen: mdiProjectorScreen,
mdiProjectorScreenOutline: mdiProjectorScreenOutline,
mdiPropaneTank: mdiPropaneTank,
mdiPropaneTankOutline: mdiPropaneTankOutline,
mdiProtocol: mdiProtocol,
mdiPublish: mdiPublish,
mdiPulse: mdiPulse,
mdiPump: mdiPump,
mdiPumpkin: mdiPumpkin,
mdiPurse: mdiPurse,
mdiPurseOutline: mdiPurseOutline,
mdiPuzzle: mdiPuzzle,
mdiPuzzleCheck: mdiPuzzleCheck,
mdiPuzzleCheckOutline: mdiPuzzleCheckOutline,
mdiPuzzleEdit: mdiPuzzleEdit,
mdiPuzzleEditOutline: mdiPuzzleEditOutline,
mdiPuzzleHeart: mdiPuzzleHeart,
mdiPuzzleHeartOutline: mdiPuzzleHeartOutline,
mdiPuzzleMinus: mdiPuzzleMinus,
mdiPuzzleMinusOutline: mdiPuzzleMinusOutline,
mdiPuzzleOutline: mdiPuzzleOutline,
mdiPuzzlePlus: mdiPuzzlePlus,
mdiPuzzlePlusOutline: mdiPuzzlePlusOutline,
mdiPuzzleRemove: mdiPuzzleRemove,
mdiPuzzleRemoveOutline: mdiPuzzleRemoveOutline,
mdiPuzzleStar: mdiPuzzleStar,
mdiPuzzleStarOutline: mdiPuzzleStarOutline,
mdiQi: mdiQi,
mdiQqchat: mdiQqchat,
mdiQrcode: mdiQrcode,
mdiQrcodeEdit: mdiQrcodeEdit,
mdiQrcodeMinus: mdiQrcodeMinus,
mdiQrcodePlus: mdiQrcodePlus,
mdiQrcodeRemove: mdiQrcodeRemove,
mdiQrcodeScan: mdiQrcodeScan,
mdiQuadcopter: mdiQuadcopter,
mdiQualityHigh: mdiQualityHigh,
mdiQualityLow: mdiQualityLow,
mdiQualityMedium: mdiQualityMedium,
mdiQuora: mdiQuora,
mdiRabbit: mdiRabbit,
mdiRacingHelmet: mdiRacingHelmet,
mdiRacquetball: mdiRacquetball,
mdiRadar: mdiRadar,
mdiRadiator: mdiRadiator,
mdiRadiatorDisabled: mdiRadiatorDisabled,
mdiRadiatorOff: mdiRadiatorOff,
mdiRadio: mdiRadio,
mdiRadioAm: mdiRadioAm,
mdiRadioFm: mdiRadioFm,
mdiRadioHandheld: mdiRadioHandheld,
mdiRadioOff: mdiRadioOff,
mdiRadioTower: mdiRadioTower,
mdiRadioactive: mdiRadioactive,
mdiRadioactiveOff: mdiRadioactiveOff,
mdiRadioboxBlank: mdiRadioboxBlank,
mdiRadioboxMarked: mdiRadioboxMarked,
mdiRadiologyBox: mdiRadiologyBox,
mdiRadiologyBoxOutline: mdiRadiologyBoxOutline,
mdiRadius: mdiRadius,
mdiRadiusOutline: mdiRadiusOutline,
mdiRailroadLight: mdiRailroadLight,
mdiRake: mdiRake,
mdiRaspberryPi: mdiRaspberryPi,
mdiRayEnd: mdiRayEnd,
mdiRayEndArrow: mdiRayEndArrow,
mdiRayStart: mdiRayStart,
mdiRayStartArrow: mdiRayStartArrow,
mdiRayStartEnd: mdiRayStartEnd,
mdiRayStartVertexEnd: mdiRayStartVertexEnd,
mdiRayVertex: mdiRayVertex,
mdiReact: mdiReact,
mdiRead: mdiRead,
mdiReceipt: mdiReceipt,
mdiRecord: mdiRecord,
mdiRecordCircle: mdiRecordCircle,
mdiRecordCircleOutline: mdiRecordCircleOutline,
mdiRecordPlayer: mdiRecordPlayer,
mdiRecordRec: mdiRecordRec,
mdiRectangle: mdiRectangle,
mdiRectangleOutline: mdiRectangleOutline,
mdiRecycle: mdiRecycle,
mdiRecycleVariant: mdiRecycleVariant,
mdiReddit: mdiReddit,
mdiRedhat: mdiRedhat,
mdiRedo: mdiRedo,
mdiRedoVariant: mdiRedoVariant,
mdiReflectHorizontal: mdiReflectHorizontal,
mdiReflectVertical: mdiReflectVertical,
mdiRefresh: mdiRefresh,
mdiRefreshCircle: mdiRefreshCircle,
mdiRegex: mdiRegex,
mdiRegisteredTrademark: mdiRegisteredTrademark,
mdiReiterate: mdiReiterate,
mdiRelationManyToMany: mdiRelationManyToMany,
mdiRelationManyToOne: mdiRelationManyToOne,
mdiRelationManyToOneOrMany: mdiRelationManyToOneOrMany,
mdiRelationManyToOnlyOne: mdiRelationManyToOnlyOne,
mdiRelationManyToZeroOrMany: mdiRelationManyToZeroOrMany,
mdiRelationManyToZeroOrOne: mdiRelationManyToZeroOrOne,
mdiRelationOneOrManyToMany: mdiRelationOneOrManyToMany,
mdiRelationOneOrManyToOne: mdiRelationOneOrManyToOne,
mdiRelationOneOrManyToOneOrMany: mdiRelationOneOrManyToOneOrMany,
mdiRelationOneOrManyToOnlyOne: mdiRelationOneOrManyToOnlyOne,
mdiRelationOneOrManyToZeroOrMany: mdiRelationOneOrManyToZeroOrMany,
mdiRelationOneOrManyToZeroOrOne: mdiRelationOneOrManyToZeroOrOne,
mdiRelationOneToMany: mdiRelationOneToMany,
mdiRelationOneToOne: mdiRelationOneToOne,
mdiRelationOneToOneOrMany: mdiRelationOneToOneOrMany,
mdiRelationOneToOnlyOne: mdiRelationOneToOnlyOne,
mdiRelationOneToZeroOrMany: mdiRelationOneToZeroOrMany,
mdiRelationOneToZeroOrOne: mdiRelationOneToZeroOrOne,
mdiRelationOnlyOneToMany: mdiRelationOnlyOneToMany,
mdiRelationOnlyOneToOne: mdiRelationOnlyOneToOne,
mdiRelationOnlyOneToOneOrMany: mdiRelationOnlyOneToOneOrMany,
mdiRelationOnlyOneToOnlyOne: mdiRelationOnlyOneToOnlyOne,
mdiRelationOnlyOneToZeroOrMany: mdiRelationOnlyOneToZeroOrMany,
mdiRelationOnlyOneToZeroOrOne: mdiRelationOnlyOneToZeroOrOne,
mdiRelationZeroOrManyToMany: mdiRelationZeroOrManyToMany,
mdiRelationZeroOrManyToOne: mdiRelationZeroOrManyToOne,
mdiRelationZeroOrManyToOneOrMany: mdiRelationZeroOrManyToOneOrMany,
mdiRelationZeroOrManyToOnlyOne: mdiRelationZeroOrManyToOnlyOne,
mdiRelationZeroOrManyToZeroOrMany: mdiRelationZeroOrManyToZeroOrMany,
mdiRelationZeroOrManyToZeroOrOne: mdiRelationZeroOrManyToZeroOrOne,
mdiRelationZeroOrOneToMany: mdiRelationZeroOrOneToMany,
mdiRelationZeroOrOneToOne: mdiRelationZeroOrOneToOne,
mdiRelationZeroOrOneToOneOrMany: mdiRelationZeroOrOneToOneOrMany,
mdiRelationZeroOrOneToOnlyOne: mdiRelationZeroOrOneToOnlyOne,
mdiRelationZeroOrOneToZeroOrMany: mdiRelationZeroOrOneToZeroOrMany,
mdiRelationZeroOrOneToZeroOrOne: mdiRelationZeroOrOneToZeroOrOne,
mdiRelativeScale: mdiRelativeScale,
mdiReload: mdiReload,
mdiReloadAlert: mdiReloadAlert,
mdiReminder: mdiReminder,
mdiRemote: mdiRemote,
mdiRemoteDesktop: mdiRemoteDesktop,
mdiRemoteOff: mdiRemoteOff,
mdiRemoteTv: mdiRemoteTv,
mdiRemoteTvOff: mdiRemoteTvOff,
mdiRenameBox: mdiRenameBox,
mdiReorderHorizontal: mdiReorderHorizontal,
mdiReorderVertical: mdiReorderVertical,
mdiRepeat: mdiRepeat,
mdiRepeatOff: mdiRepeatOff,
mdiRepeatOnce: mdiRepeatOnce,
mdiReplay: mdiReplay,
mdiReply: mdiReply,
mdiReplyAll: mdiReplyAll,
mdiReplyAllOutline: mdiReplyAllOutline,
mdiReplyCircle: mdiReplyCircle,
mdiReplyOutline: mdiReplyOutline,
mdiReproduction: mdiReproduction,
mdiResistor: mdiResistor,
mdiResistorNodes: mdiResistorNodes,
mdiResize: mdiResize,
mdiResizeBottomRight: mdiResizeBottomRight,
mdiResponsive: mdiResponsive,
mdiRestart: mdiRestart,
mdiRestartAlert: mdiRestartAlert,
mdiRestartOff: mdiRestartOff,
mdiRestore: mdiRestore,
mdiRestoreAlert: mdiRestoreAlert,
mdiRewind: mdiRewind,
mdiRewind10: mdiRewind10,
mdiRewind30: mdiRewind30,
mdiRewind5: mdiRewind5,
mdiRewind60: mdiRewind60,
mdiRewindOutline: mdiRewindOutline,
mdiRhombus: mdiRhombus,
mdiRhombusMedium: mdiRhombusMedium,
mdiRhombusMediumOutline: mdiRhombusMediumOutline,
mdiRhombusOutline: mdiRhombusOutline,
mdiRhombusSplit: mdiRhombusSplit,
mdiRhombusSplitOutline: mdiRhombusSplitOutline,
mdiRibbon: mdiRibbon,
mdiRice: mdiRice,
mdiRickshaw: mdiRickshaw,
mdiRickshawElectric: mdiRickshawElectric,
mdiRing: mdiRing,
mdiRivet: mdiRivet,
mdiRoad: mdiRoad,
mdiRoadVariant: mdiRoadVariant,
mdiRobber: mdiRobber,
mdiRobot: mdiRobot,
mdiRobotAngry: mdiRobotAngry,
mdiRobotAngryOutline: mdiRobotAngryOutline,
mdiRobotConfused: mdiRobotConfused,
mdiRobotConfusedOutline: mdiRobotConfusedOutline,
mdiRobotDead: mdiRobotDead,
mdiRobotDeadOutline: mdiRobotDeadOutline,
mdiRobotExcited: mdiRobotExcited,
mdiRobotExcitedOutline: mdiRobotExcitedOutline,
mdiRobotHappy: mdiRobotHappy,
mdiRobotHappyOutline: mdiRobotHappyOutline,
mdiRobotIndustrial: mdiRobotIndustrial,
mdiRobotLove: mdiRobotLove,
mdiRobotLoveOutline: mdiRobotLoveOutline,
mdiRobotMower: mdiRobotMower,
mdiRobotMowerOutline: mdiRobotMowerOutline,
mdiRobotOff: mdiRobotOff,
mdiRobotOffOutline: mdiRobotOffOutline,
mdiRobotOutline: mdiRobotOutline,
mdiRobotVacuum: mdiRobotVacuum,
mdiRobotVacuumVariant: mdiRobotVacuumVariant,
mdiRocket: mdiRocket,
mdiRocketLaunch: mdiRocketLaunch,
mdiRocketLaunchOutline: mdiRocketLaunchOutline,
mdiRocketOutline: mdiRocketOutline,
mdiRodent: mdiRodent,
mdiRollerSkate: mdiRollerSkate,
mdiRollerSkateOff: mdiRollerSkateOff,
mdiRollerblade: mdiRollerblade,
mdiRollerbladeOff: mdiRollerbladeOff,
mdiRollupjs: mdiRollupjs,
mdiRomanNumeral1: mdiRomanNumeral1,
mdiRomanNumeral10: mdiRomanNumeral10,
mdiRomanNumeral2: mdiRomanNumeral2,
mdiRomanNumeral3: mdiRomanNumeral3,
mdiRomanNumeral4: mdiRomanNumeral4,
mdiRomanNumeral5: mdiRomanNumeral5,
mdiRomanNumeral6: mdiRomanNumeral6,
mdiRomanNumeral7: mdiRomanNumeral7,
mdiRomanNumeral8: mdiRomanNumeral8,
mdiRomanNumeral9: mdiRomanNumeral9,
mdiRoomService: mdiRoomService,
mdiRoomServiceOutline: mdiRoomServiceOutline,
mdiRotate3d: mdiRotate3d,
mdiRotate3dVariant: mdiRotate3dVariant,
mdiRotateLeft: mdiRotateLeft,
mdiRotateLeftVariant: mdiRotateLeftVariant,
mdiRotateOrbit: mdiRotateOrbit,
mdiRotateRight: mdiRotateRight,
mdiRotateRightVariant: mdiRotateRightVariant,
mdiRoundedCorner: mdiRoundedCorner,
mdiRouter: mdiRouter,
mdiRouterNetwork: mdiRouterNetwork,
mdiRouterWireless: mdiRouterWireless,
mdiRouterWirelessOff: mdiRouterWirelessOff,
mdiRouterWirelessSettings: mdiRouterWirelessSettings,
mdiRoutes: mdiRoutes,
mdiRoutesClock: mdiRoutesClock,
mdiRowing: mdiRowing,
mdiRss: mdiRss,
mdiRssBox: mdiRssBox,
mdiRssOff: mdiRssOff,
mdiRug: mdiRug,
mdiRugby: mdiRugby,
mdiRuler: mdiRuler,
mdiRulerSquare: mdiRulerSquare,
mdiRulerSquareCompass: mdiRulerSquareCompass,
mdiRun: mdiRun,
mdiRunFast: mdiRunFast,
mdiRvTruck: mdiRvTruck,
mdiSack: mdiSack,
mdiSackPercent: mdiSackPercent,
mdiSafe: mdiSafe,
mdiSafeSquare: mdiSafeSquare,
mdiSafeSquareOutline: mdiSafeSquareOutline,
mdiSafetyGoggles: mdiSafetyGoggles,
mdiSailBoat: mdiSailBoat,
mdiSale: mdiSale,
mdiSalesforce: mdiSalesforce,
mdiSass: mdiSass,
mdiSatellite: mdiSatellite,
mdiSatelliteUplink: mdiSatelliteUplink,
mdiSatelliteVariant: mdiSatelliteVariant,
mdiSausage: mdiSausage,
mdiSawBlade: mdiSawBlade,
mdiSawtoothWave: mdiSawtoothWave,
mdiSaxophone: mdiSaxophone,
mdiScale: mdiScale,
mdiScaleBalance: mdiScaleBalance,
mdiScaleBathroom: mdiScaleBathroom,
mdiScaleOff: mdiScaleOff,
mdiScanHelper: mdiScanHelper,
mdiScanner: mdiScanner,
mdiScannerOff: mdiScannerOff,
mdiScatterPlot: mdiScatterPlot,
mdiScatterPlotOutline: mdiScatterPlotOutline,
mdiSchool: mdiSchool,
mdiSchoolOutline: mdiSchoolOutline,
mdiScissorsCutting: mdiScissorsCutting,
mdiScooter: mdiScooter,
mdiScooterElectric: mdiScooterElectric,
mdiScoreboard: mdiScoreboard,
mdiScoreboardOutline: mdiScoreboardOutline,
mdiScreenRotation: mdiScreenRotation,
mdiScreenRotationLock: mdiScreenRotationLock,
mdiScrewFlatTop: mdiScrewFlatTop,
mdiScrewLag: mdiScrewLag,
mdiScrewMachineFlatTop: mdiScrewMachineFlatTop,
mdiScrewMachineRoundTop: mdiScrewMachineRoundTop,
mdiScrewRoundTop: mdiScrewRoundTop,
mdiScrewdriver: mdiScrewdriver,
mdiScript: mdiScript,
mdiScriptOutline: mdiScriptOutline,
mdiScriptText: mdiScriptText,
mdiScriptTextKey: mdiScriptTextKey,
mdiScriptTextKeyOutline: mdiScriptTextKeyOutline,
mdiScriptTextOutline: mdiScriptTextOutline,
mdiScriptTextPlay: mdiScriptTextPlay,
mdiScriptTextPlayOutline: mdiScriptTextPlayOutline,
mdiSd: mdiSd,
mdiSeal: mdiSeal,
mdiSealVariant: mdiSealVariant,
mdiSearchWeb: mdiSearchWeb,
mdiSeat: mdiSeat,
mdiSeatFlat: mdiSeatFlat,
mdiSeatFlatAngled: mdiSeatFlatAngled,
mdiSeatIndividualSuite: mdiSeatIndividualSuite,
mdiSeatLegroomExtra: mdiSeatLegroomExtra,
mdiSeatLegroomNormal: mdiSeatLegroomNormal,
mdiSeatLegroomReduced: mdiSeatLegroomReduced,
mdiSeatOutline: mdiSeatOutline,
mdiSeatPassenger: mdiSeatPassenger,
mdiSeatReclineExtra: mdiSeatReclineExtra,
mdiSeatReclineNormal: mdiSeatReclineNormal,
mdiSeatbelt: mdiSeatbelt,
mdiSecurity: mdiSecurity,
mdiSecurityNetwork: mdiSecurityNetwork,
mdiSeed: mdiSeed,
mdiSeedOff: mdiSeedOff,
mdiSeedOffOutline: mdiSeedOffOutline,
mdiSeedOutline: mdiSeedOutline,
mdiSeesaw: mdiSeesaw,
mdiSegment: mdiSegment,
mdiSelect: mdiSelect,
mdiSelectAll: mdiSelectAll,
mdiSelectColor: mdiSelectColor,
mdiSelectCompare: mdiSelectCompare,
mdiSelectDrag: mdiSelectDrag,
mdiSelectGroup: mdiSelectGroup,
mdiSelectInverse: mdiSelectInverse,
mdiSelectMarker: mdiSelectMarker,
mdiSelectMultiple: mdiSelectMultiple,
mdiSelectMultipleMarker: mdiSelectMultipleMarker,
mdiSelectOff: mdiSelectOff,
mdiSelectPlace: mdiSelectPlace,
mdiSelectSearch: mdiSelectSearch,
mdiSelection: mdiSelection,
mdiSelectionDrag: mdiSelectionDrag,
mdiSelectionEllipse: mdiSelectionEllipse,
mdiSelectionEllipseArrowInside: mdiSelectionEllipseArrowInside,
mdiSelectionMarker: mdiSelectionMarker,
mdiSelectionMultiple: mdiSelectionMultiple,
mdiSelectionMultipleMarker: mdiSelectionMultipleMarker,
mdiSelectionOff: mdiSelectionOff,
mdiSelectionSearch: mdiSelectionSearch,
mdiSemanticWeb: mdiSemanticWeb,
mdiSend: mdiSend,
mdiSendCheck: mdiSendCheck,
mdiSendCheckOutline: mdiSendCheckOutline,
mdiSendCircle: mdiSendCircle,
mdiSendCircleOutline: mdiSendCircleOutline,
mdiSendClock: mdiSendClock,
mdiSendClockOutline: mdiSendClockOutline,
mdiSendLock: mdiSendLock,
mdiSendLockOutline: mdiSendLockOutline,
mdiSendOutline: mdiSendOutline,
mdiSerialPort: mdiSerialPort,
mdiServer: mdiServer,
mdiServerMinus: mdiServerMinus,
mdiServerNetwork: mdiServerNetwork,
mdiServerNetworkOff: mdiServerNetworkOff,
mdiServerOff: mdiServerOff,
mdiServerPlus: mdiServerPlus,
mdiServerRemove: mdiServerRemove,
mdiServerSecurity: mdiServerSecurity,
mdiSetAll: mdiSetAll,
mdiSetCenter: mdiSetCenter,
mdiSetCenterRight: mdiSetCenterRight,
mdiSetLeft: mdiSetLeft,
mdiSetLeftCenter: mdiSetLeftCenter,
mdiSetLeftRight: mdiSetLeftRight,
mdiSetMerge: mdiSetMerge,
mdiSetNone: mdiSetNone,
mdiSetRight: mdiSetRight,
mdiSetSplit: mdiSetSplit,
mdiSetSquare: mdiSetSquare,
mdiSetTopBox: mdiSetTopBox,
mdiSettingsHelper: mdiSettingsHelper,
mdiShaker: mdiShaker,
mdiShakerOutline: mdiShakerOutline,
mdiShape: mdiShape,
mdiShapeCirclePlus: mdiShapeCirclePlus,
mdiShapeOutline: mdiShapeOutline,
mdiShapeOvalPlus: mdiShapeOvalPlus,
mdiShapePlus: mdiShapePlus,
mdiShapePolygonPlus: mdiShapePolygonPlus,
mdiShapeRectanglePlus: mdiShapeRectanglePlus,
mdiShapeSquarePlus: mdiShapeSquarePlus,
mdiShapeSquareRoundedPlus: mdiShapeSquareRoundedPlus,
mdiShare: mdiShare,
mdiShareAll: mdiShareAll,
mdiShareAllOutline: mdiShareAllOutline,
mdiShareCircle: mdiShareCircle,
mdiShareOff: mdiShareOff,
mdiShareOffOutline: mdiShareOffOutline,
mdiShareOutline: mdiShareOutline,
mdiShareVariant: mdiShareVariant,
mdiShareVariantOutline: mdiShareVariantOutline,
mdiSharkFin: mdiSharkFin,
mdiSharkFinOutline: mdiSharkFinOutline,
mdiSheep: mdiSheep,
mdiShield: mdiShield,
mdiShieldAccount: mdiShieldAccount,
mdiShieldAccountOutline: mdiShieldAccountOutline,
mdiShieldAccountVariant: mdiShieldAccountVariant,
mdiShieldAccountVariantOutline: mdiShieldAccountVariantOutline,
mdiShieldAirplane: mdiShieldAirplane,
mdiShieldAirplaneOutline: mdiShieldAirplaneOutline,
mdiShieldAlert: mdiShieldAlert,
mdiShieldAlertOutline: mdiShieldAlertOutline,
mdiShieldBug: mdiShieldBug,
mdiShieldBugOutline: mdiShieldBugOutline,
mdiShieldCar: mdiShieldCar,
mdiShieldCheck: mdiShieldCheck,
mdiShieldCheckOutline: mdiShieldCheckOutline,
mdiShieldCross: mdiShieldCross,
mdiShieldCrossOutline: mdiShieldCrossOutline,
mdiShieldEdit: mdiShieldEdit,
mdiShieldEditOutline: mdiShieldEditOutline,
mdiShieldHalf: mdiShieldHalf,
mdiShieldHalfFull: mdiShieldHalfFull,
mdiShieldHome: mdiShieldHome,
mdiShieldHomeOutline: mdiShieldHomeOutline,
mdiShieldKey: mdiShieldKey,
mdiShieldKeyOutline: mdiShieldKeyOutline,
mdiShieldLinkVariant: mdiShieldLinkVariant,
mdiShieldLinkVariantOutline: mdiShieldLinkVariantOutline,
mdiShieldLock: mdiShieldLock,
mdiShieldLockOutline: mdiShieldLockOutline,
mdiShieldOff: mdiShieldOff,
mdiShieldOffOutline: mdiShieldOffOutline,
mdiShieldOutline: mdiShieldOutline,
mdiShieldPlus: mdiShieldPlus,
mdiShieldPlusOutline: mdiShieldPlusOutline,
mdiShieldRefresh: mdiShieldRefresh,
mdiShieldRefreshOutline: mdiShieldRefreshOutline,
mdiShieldRemove: mdiShieldRemove,
mdiShieldRemoveOutline: mdiShieldRemoveOutline,
mdiShieldSearch: mdiShieldSearch,
mdiShieldStar: mdiShieldStar,
mdiShieldStarOutline: mdiShieldStarOutline,
mdiShieldSun: mdiShieldSun,
mdiShieldSunOutline: mdiShieldSunOutline,
mdiShieldSync: mdiShieldSync,
mdiShieldSyncOutline: mdiShieldSyncOutline,
mdiShipWheel: mdiShipWheel,
mdiShoeBallet: mdiShoeBallet,
mdiShoeCleat: mdiShoeCleat,
mdiShoeFormal: mdiShoeFormal,
mdiShoeHeel: mdiShoeHeel,
mdiShoePrint: mdiShoePrint,
mdiShoeSneaker: mdiShoeSneaker,
mdiShopping: mdiShopping,
mdiShoppingMusic: mdiShoppingMusic,
mdiShoppingOutline: mdiShoppingOutline,
mdiShoppingSearch: mdiShoppingSearch,
mdiShore: mdiShore,
mdiShovel: mdiShovel,
mdiShovelOff: mdiShovelOff,
mdiShower: mdiShower,
mdiShowerHead: mdiShowerHead,
mdiShredder: mdiShredder,
mdiShuffle: mdiShuffle,
mdiShuffleDisabled: mdiShuffleDisabled,
mdiShuffleVariant: mdiShuffleVariant,
mdiShuriken: mdiShuriken,
mdiSigma: mdiSigma,
mdiSigmaLower: mdiSigmaLower,
mdiSignCaution: mdiSignCaution,
mdiSignDirection: mdiSignDirection,
mdiSignDirectionMinus: mdiSignDirectionMinus,
mdiSignDirectionPlus: mdiSignDirectionPlus,
mdiSignDirectionRemove: mdiSignDirectionRemove,
mdiSignPole: mdiSignPole,
mdiSignRealEstate: mdiSignRealEstate,
mdiSignText: mdiSignText,
mdiSignal: mdiSignal,
mdiSignal2g: mdiSignal2g,
mdiSignal3g: mdiSignal3g,
mdiSignal4g: mdiSignal4g,
mdiSignal5g: mdiSignal5g,
mdiSignalCellular1: mdiSignalCellular1,
mdiSignalCellular2: mdiSignalCellular2,
mdiSignalCellular3: mdiSignalCellular3,
mdiSignalCellularOutline: mdiSignalCellularOutline,
mdiSignalDistanceVariant: mdiSignalDistanceVariant,
mdiSignalHspa: mdiSignalHspa,
mdiSignalHspaPlus: mdiSignalHspaPlus,
mdiSignalOff: mdiSignalOff,
mdiSignalVariant: mdiSignalVariant,
mdiSignature: mdiSignature,
mdiSignatureFreehand: mdiSignatureFreehand,
mdiSignatureImage: mdiSignatureImage,
mdiSignatureText: mdiSignatureText,
mdiSilo: mdiSilo,
mdiSilverware: mdiSilverware,
mdiSilverwareClean: mdiSilverwareClean,
mdiSilverwareFork: mdiSilverwareFork,
mdiSilverwareForkKnife: mdiSilverwareForkKnife,
mdiSilverwareSpoon: mdiSilverwareSpoon,
mdiSilverwareVariant: mdiSilverwareVariant,
mdiSim: mdiSim,
mdiSimAlert: mdiSimAlert,
mdiSimAlertOutline: mdiSimAlertOutline,
mdiSimOff: mdiSimOff,
mdiSimOffOutline: mdiSimOffOutline,
mdiSimOutline: mdiSimOutline,
mdiSimpleIcons: mdiSimpleIcons,
mdiSinaWeibo: mdiSinaWeibo,
mdiSineWave: mdiSineWave,
mdiSitemap: mdiSitemap,
mdiSizeL: mdiSizeL,
mdiSizeM: mdiSizeM,
mdiSizeS: mdiSizeS,
mdiSizeXl: mdiSizeXl,
mdiSizeXs: mdiSizeXs,
mdiSizeXxl: mdiSizeXxl,
mdiSizeXxs: mdiSizeXxs,
mdiSizeXxxl: mdiSizeXxxl,
mdiSkate: mdiSkate,
mdiSkateboard: mdiSkateboard,
mdiSkewLess: mdiSkewLess,
mdiSkewMore: mdiSkewMore,
mdiSki: mdiSki,
mdiSkiCrossCountry: mdiSkiCrossCountry,
mdiSkiWater: mdiSkiWater,
mdiSkipBackward: mdiSkipBackward,
mdiSkipBackwardOutline: mdiSkipBackwardOutline,
mdiSkipForward: mdiSkipForward,
mdiSkipForwardOutline: mdiSkipForwardOutline,
mdiSkipNext: mdiSkipNext,
mdiSkipNextCircle: mdiSkipNextCircle,
mdiSkipNextCircleOutline: mdiSkipNextCircleOutline,
mdiSkipNextOutline: mdiSkipNextOutline,
mdiSkipPrevious: mdiSkipPrevious,
mdiSkipPreviousCircle: mdiSkipPreviousCircle,
mdiSkipPreviousCircleOutline: mdiSkipPreviousCircleOutline,
mdiSkipPreviousOutline: mdiSkipPreviousOutline,
mdiSkull: mdiSkull,
mdiSkullCrossbones: mdiSkullCrossbones,
mdiSkullCrossbonesOutline: mdiSkullCrossbonesOutline,
mdiSkullOutline: mdiSkullOutline,
mdiSkullScan: mdiSkullScan,
mdiSkullScanOutline: mdiSkullScanOutline,
mdiSkype: mdiSkype,
mdiSkypeBusiness: mdiSkypeBusiness,
mdiSlack: mdiSlack,
mdiSlashForward: mdiSlashForward,
mdiSlashForwardBox: mdiSlashForwardBox,
mdiSleep: mdiSleep,
mdiSleepOff: mdiSleepOff,
mdiSlide: mdiSlide,
mdiSlopeDownhill: mdiSlopeDownhill,
mdiSlopeUphill: mdiSlopeUphill,
mdiSlotMachine: mdiSlotMachine,
mdiSlotMachineOutline: mdiSlotMachineOutline,
mdiSmartCard: mdiSmartCard,
mdiSmartCardOutline: mdiSmartCardOutline,
mdiSmartCardReader: mdiSmartCardReader,
mdiSmartCardReaderOutline: mdiSmartCardReaderOutline,
mdiSmog: mdiSmog,
mdiSmokeDetector: mdiSmokeDetector,
mdiSmoking: mdiSmoking,
mdiSmokingOff: mdiSmokingOff,
mdiSmokingPipe: mdiSmokingPipe,
mdiSmokingPipeOff: mdiSmokingPipeOff,
mdiSnail: mdiSnail,
mdiSnake: mdiSnake,
mdiSnapchat: mdiSnapchat,
mdiSnowboard: mdiSnowboard,
mdiSnowflake: mdiSnowflake,
mdiSnowflakeAlert: mdiSnowflakeAlert,
mdiSnowflakeMelt: mdiSnowflakeMelt,
mdiSnowflakeOff: mdiSnowflakeOff,
mdiSnowflakeVariant: mdiSnowflakeVariant,
mdiSnowman: mdiSnowman,
mdiSoccer: mdiSoccer,
mdiSoccerField: mdiSoccerField,
mdiSocialDistance2Meters: mdiSocialDistance2Meters,
mdiSocialDistance6Feet: mdiSocialDistance6Feet,
mdiSofa: mdiSofa,
mdiSofaOutline: mdiSofaOutline,
mdiSofaSingle: mdiSofaSingle,
mdiSofaSingleOutline: mdiSofaSingleOutline,
mdiSolarPanel: mdiSolarPanel,
mdiSolarPanelLarge: mdiSolarPanelLarge,
mdiSolarPower: mdiSolarPower,
mdiSolderingIron: mdiSolderingIron,
mdiSolid: mdiSolid,
mdiSonyPlaystation: mdiSonyPlaystation,
mdiSort: mdiSort,
mdiSortAlphabeticalAscending: mdiSortAlphabeticalAscending,
mdiSortAlphabeticalAscendingVariant: mdiSortAlphabeticalAscendingVariant,
mdiSortAlphabeticalDescending: mdiSortAlphabeticalDescending,
mdiSortAlphabeticalDescendingVariant: mdiSortAlphabeticalDescendingVariant,
mdiSortAlphabeticalVariant: mdiSortAlphabeticalVariant,
mdiSortAscending: mdiSortAscending,
mdiSortBoolAscending: mdiSortBoolAscending,
mdiSortBoolAscendingVariant: mdiSortBoolAscendingVariant,
mdiSortBoolDescending: mdiSortBoolDescending,
mdiSortBoolDescendingVariant: mdiSortBoolDescendingVariant,
mdiSortCalendarAscending: mdiSortCalendarAscending,
mdiSortCalendarDescending: mdiSortCalendarDescending,
mdiSortClockAscending: mdiSortClockAscending,
mdiSortClockAscendingOutline: mdiSortClockAscendingOutline,
mdiSortClockDescending: mdiSortClockDescending,
mdiSortClockDescendingOutline: mdiSortClockDescendingOutline,
mdiSortDescending: mdiSortDescending,
mdiSortNumericAscending: mdiSortNumericAscending,
mdiSortNumericAscendingVariant: mdiSortNumericAscendingVariant,
mdiSortNumericDescending: mdiSortNumericDescending,
mdiSortNumericDescendingVariant: mdiSortNumericDescendingVariant,
mdiSortNumericVariant: mdiSortNumericVariant,
mdiSortReverseVariant: mdiSortReverseVariant,
mdiSortVariant: mdiSortVariant,
mdiSortVariantLock: mdiSortVariantLock,
mdiSortVariantLockOpen: mdiSortVariantLockOpen,
mdiSortVariantRemove: mdiSortVariantRemove,
mdiSoundcloud: mdiSoundcloud,
mdiSourceBranch: mdiSourceBranch,
mdiSourceBranchCheck: mdiSourceBranchCheck,
mdiSourceBranchMinus: mdiSourceBranchMinus,
mdiSourceBranchPlus: mdiSourceBranchPlus,
mdiSourceBranchRefresh: mdiSourceBranchRefresh,
mdiSourceBranchRemove: mdiSourceBranchRemove,
mdiSourceBranchSync: mdiSourceBranchSync,
mdiSourceCommit: mdiSourceCommit,
mdiSourceCommitEnd: mdiSourceCommitEnd,
mdiSourceCommitEndLocal: mdiSourceCommitEndLocal,
mdiSourceCommitLocal: mdiSourceCommitLocal,
mdiSourceCommitNextLocal: mdiSourceCommitNextLocal,
mdiSourceCommitStart: mdiSourceCommitStart,
mdiSourceCommitStartNextLocal: mdiSourceCommitStartNextLocal,
mdiSourceFork: mdiSourceFork,
mdiSourceMerge: mdiSourceMerge,
mdiSourcePull: mdiSourcePull,
mdiSourceRepository: mdiSourceRepository,
mdiSourceRepositoryMultiple: mdiSourceRepositoryMultiple,
mdiSoySauce: mdiSoySauce,
mdiSoySauceOff: mdiSoySauceOff,
mdiSpa: mdiSpa,
mdiSpaOutline: mdiSpaOutline,
mdiSpaceInvaders: mdiSpaceInvaders,
mdiSpaceStation: mdiSpaceStation,
mdiSpade: mdiSpade,
mdiSparkles: mdiSparkles,
mdiSpeaker: mdiSpeaker,
mdiSpeakerBluetooth: mdiSpeakerBluetooth,
mdiSpeakerMultiple: mdiSpeakerMultiple,
mdiSpeakerOff: mdiSpeakerOff,
mdiSpeakerWireless: mdiSpeakerWireless,
mdiSpeedometer: mdiSpeedometer,
mdiSpeedometerMedium: mdiSpeedometerMedium,
mdiSpeedometerSlow: mdiSpeedometerSlow,
mdiSpellcheck: mdiSpellcheck,
mdiSpider: mdiSpider,
mdiSpiderThread: mdiSpiderThread,
mdiSpiderWeb: mdiSpiderWeb,
mdiSpiritLevel: mdiSpiritLevel,
mdiSpoonSugar: mdiSpoonSugar,
mdiSpotify: mdiSpotify,
mdiSpotlight: mdiSpotlight,
mdiSpotlightBeam: mdiSpotlightBeam,
mdiSpray: mdiSpray,
mdiSprayBottle: mdiSprayBottle,
mdiSprinkler: mdiSprinkler,
mdiSprinklerVariant: mdiSprinklerVariant,
mdiSprout: mdiSprout,
mdiSproutOutline: mdiSproutOutline,
mdiSquare: mdiSquare,
mdiSquareCircle: mdiSquareCircle,
mdiSquareEditOutline: mdiSquareEditOutline,
mdiSquareMedium: mdiSquareMedium,
mdiSquareMediumOutline: mdiSquareMediumOutline,
mdiSquareOff: mdiSquareOff,
mdiSquareOffOutline: mdiSquareOffOutline,
mdiSquareOutline: mdiSquareOutline,
mdiSquareRoot: mdiSquareRoot,
mdiSquareRootBox: mdiSquareRootBox,
mdiSquareRounded: mdiSquareRounded,
mdiSquareRoundedOutline: mdiSquareRoundedOutline,
mdiSquareSmall: mdiSquareSmall,
mdiSquareWave: mdiSquareWave,
mdiSqueegee: mdiSqueegee,
mdiSsh: mdiSsh,
mdiStackExchange: mdiStackExchange,
mdiStackOverflow: mdiStackOverflow,
mdiStackpath: mdiStackpath,
mdiStadium: mdiStadium,
mdiStadiumVariant: mdiStadiumVariant,
mdiStairs: mdiStairs,
mdiStairsBox: mdiStairsBox,
mdiStairsDown: mdiStairsDown,
mdiStairsUp: mdiStairsUp,
mdiStamper: mdiStamper,
mdiStandardDefinition: mdiStandardDefinition,
mdiStar: mdiStar,
mdiStarBox: mdiStarBox,
mdiStarBoxMultiple: mdiStarBoxMultiple,
mdiStarBoxMultipleOutline: mdiStarBoxMultipleOutline,
mdiStarBoxOutline: mdiStarBoxOutline,
mdiStarCheck: mdiStarCheck,
mdiStarCheckOutline: mdiStarCheckOutline,
mdiStarCircle: mdiStarCircle,
mdiStarCircleOutline: mdiStarCircleOutline,
mdiStarCog: mdiStarCog,
mdiStarCogOutline: mdiStarCogOutline,
mdiStarFace: mdiStarFace,
mdiStarFourPoints: mdiStarFourPoints,
mdiStarFourPointsOutline: mdiStarFourPointsOutline,
mdiStarHalf: mdiStarHalf,
mdiStarHalfFull: mdiStarHalfFull,
mdiStarMinus: mdiStarMinus,
mdiStarMinusOutline: mdiStarMinusOutline,
mdiStarOff: mdiStarOff,
mdiStarOffOutline: mdiStarOffOutline,
mdiStarOutline: mdiStarOutline,
mdiStarPlus: mdiStarPlus,
mdiStarPlusOutline: mdiStarPlusOutline,
mdiStarRemove: mdiStarRemove,
mdiStarRemoveOutline: mdiStarRemoveOutline,
mdiStarSettings: mdiStarSettings,
mdiStarSettingsOutline: mdiStarSettingsOutline,
mdiStarShooting: mdiStarShooting,
mdiStarShootingOutline: mdiStarShootingOutline,
mdiStarThreePoints: mdiStarThreePoints,
mdiStarThreePointsOutline: mdiStarThreePointsOutline,
mdiStateMachine: mdiStateMachine,
mdiSteam: mdiSteam,
mdiSteering: mdiSteering,
mdiSteeringOff: mdiSteeringOff,
mdiStepBackward: mdiStepBackward,
mdiStepBackward2: mdiStepBackward2,
mdiStepForward: mdiStepForward,
mdiStepForward2: mdiStepForward2,
mdiStethoscope: mdiStethoscope,
mdiSticker: mdiSticker,
mdiStickerAlert: mdiStickerAlert,
mdiStickerAlertOutline: mdiStickerAlertOutline,
mdiStickerCheck: mdiStickerCheck,
mdiStickerCheckOutline: mdiStickerCheckOutline,
mdiStickerCircleOutline: mdiStickerCircleOutline,
mdiStickerEmoji: mdiStickerEmoji,
mdiStickerMinus: mdiStickerMinus,
mdiStickerMinusOutline: mdiStickerMinusOutline,
mdiStickerOutline: mdiStickerOutline,
mdiStickerPlus: mdiStickerPlus,
mdiStickerPlusOutline: mdiStickerPlusOutline,
mdiStickerRemove: mdiStickerRemove,
mdiStickerRemoveOutline: mdiStickerRemoveOutline,
mdiStocking: mdiStocking,
mdiStomach: mdiStomach,
mdiStop: mdiStop,
mdiStopCircle: mdiStopCircle,
mdiStopCircleOutline: mdiStopCircleOutline,
mdiStore: mdiStore,
mdiStore24Hour: mdiStore24Hour,
mdiStoreMinus: mdiStoreMinus,
mdiStoreOutline: mdiStoreOutline,
mdiStorePlus: mdiStorePlus,
mdiStoreRemove: mdiStoreRemove,
mdiStorefront: mdiStorefront,
mdiStorefrontOutline: mdiStorefrontOutline,
mdiStove: mdiStove,
mdiStrategy: mdiStrategy,
mdiStretchToPage: mdiStretchToPage,
mdiStretchToPageOutline: mdiStretchToPageOutline,
mdiStringLights: mdiStringLights,
mdiStringLightsOff: mdiStringLightsOff,
mdiSubdirectoryArrowLeft: mdiSubdirectoryArrowLeft,
mdiSubdirectoryArrowRight: mdiSubdirectoryArrowRight,
mdiSubmarine: mdiSubmarine,
mdiSubtitles: mdiSubtitles,
mdiSubtitlesOutline: mdiSubtitlesOutline,
mdiSubway: mdiSubway,
mdiSubwayAlertVariant: mdiSubwayAlertVariant,
mdiSubwayVariant: mdiSubwayVariant,
mdiSummit: mdiSummit,
mdiSunglasses: mdiSunglasses,
mdiSurroundSound: mdiSurroundSound,
mdiSurroundSound20: mdiSurroundSound20,
mdiSurroundSound21: mdiSurroundSound21,
mdiSurroundSound31: mdiSurroundSound31,
mdiSurroundSound51: mdiSurroundSound51,
mdiSurroundSound512: mdiSurroundSound512,
mdiSurroundSound71: mdiSurroundSound71,
mdiSvg: mdiSvg,
mdiSwapHorizontal: mdiSwapHorizontal,
mdiSwapHorizontalBold: mdiSwapHorizontalBold,
mdiSwapHorizontalCircle: mdiSwapHorizontalCircle,
mdiSwapHorizontalCircleOutline: mdiSwapHorizontalCircleOutline,
mdiSwapHorizontalVariant: mdiSwapHorizontalVariant,
mdiSwapVertical: mdiSwapVertical,
mdiSwapVerticalBold: mdiSwapVerticalBold,
mdiSwapVerticalCircle: mdiSwapVerticalCircle,
mdiSwapVerticalCircleOutline: mdiSwapVerticalCircleOutline,
mdiSwapVerticalVariant: mdiSwapVerticalVariant,
mdiSwim: mdiSwim,
mdiSwitch: mdiSwitch,
mdiSword: mdiSword,
mdiSwordCross: mdiSwordCross,
mdiSyllabaryHangul: mdiSyllabaryHangul,
mdiSyllabaryHiragana: mdiSyllabaryHiragana,
mdiSyllabaryKatakana: mdiSyllabaryKatakana,
mdiSyllabaryKatakanaHalfwidth: mdiSyllabaryKatakanaHalfwidth,
mdiSymbol: mdiSymbol,
mdiSymfony: mdiSymfony,
mdiSync: mdiSync,
mdiSyncAlert: mdiSyncAlert,
mdiSyncCircle: mdiSyncCircle,
mdiSyncOff: mdiSyncOff,
mdiTab: mdiTab,
mdiTabMinus: mdiTabMinus,
mdiTabPlus: mdiTabPlus,
mdiTabRemove: mdiTabRemove,
mdiTabUnselected: mdiTabUnselected,
mdiTable: mdiTable,
mdiTableAccount: mdiTableAccount,
mdiTableAlert: mdiTableAlert,
mdiTableArrowDown: mdiTableArrowDown,
mdiTableArrowLeft: mdiTableArrowLeft,
mdiTableArrowRight: mdiTableArrowRight,
mdiTableArrowUp: mdiTableArrowUp,
mdiTableBorder: mdiTableBorder,
mdiTableCancel: mdiTableCancel,
mdiTableChair: mdiTableChair,
mdiTableCheck: mdiTableCheck,
mdiTableClock: mdiTableClock,
mdiTableCog: mdiTableCog,
mdiTableColumn: mdiTableColumn,
mdiTableColumnPlusAfter: mdiTableColumnPlusAfter,
mdiTableColumnPlusBefore: mdiTableColumnPlusBefore,
mdiTableColumnRemove: mdiTableColumnRemove,
mdiTableColumnWidth: mdiTableColumnWidth,
mdiTableEdit: mdiTableEdit,
mdiTableEye: mdiTableEye,
mdiTableEyeOff: mdiTableEyeOff,
mdiTableFurniture: mdiTableFurniture,
mdiTableHeadersEye: mdiTableHeadersEye,
mdiTableHeadersEyeOff: mdiTableHeadersEyeOff,
mdiTableHeart: mdiTableHeart,
mdiTableKey: mdiTableKey,
mdiTableLarge: mdiTableLarge,
mdiTableLargePlus: mdiTableLargePlus,
mdiTableLargeRemove: mdiTableLargeRemove,
mdiTableLock: mdiTableLock,
mdiTableMergeCells: mdiTableMergeCells,
mdiTableMinus: mdiTableMinus,
mdiTableMultiple: mdiTableMultiple,
mdiTableNetwork: mdiTableNetwork,
mdiTableOfContents: mdiTableOfContents,
mdiTableOff: mdiTableOff,
mdiTablePicnic: mdiTablePicnic,
mdiTablePlus: mdiTablePlus,
mdiTableRefresh: mdiTableRefresh,
mdiTableRemove: mdiTableRemove,
mdiTableRow: mdiTableRow,
mdiTableRowHeight: mdiTableRowHeight,
mdiTableRowPlusAfter: mdiTableRowPlusAfter,
mdiTableRowPlusBefore: mdiTableRowPlusBefore,
mdiTableRowRemove: mdiTableRowRemove,
mdiTableSearch: mdiTableSearch,
mdiTableSettings: mdiTableSettings,
mdiTableSplitCell: mdiTableSplitCell,
mdiTableStar: mdiTableStar,
mdiTableSync: mdiTableSync,
mdiTableTennis: mdiTableTennis,
mdiTablet: mdiTablet,
mdiTabletAndroid: mdiTabletAndroid,
mdiTabletCellphone: mdiTabletCellphone,
mdiTabletDashboard: mdiTabletDashboard,
mdiTabletIpad: mdiTabletIpad,
mdiTaco: mdiTaco,
mdiTag: mdiTag,
mdiTagArrowDown: mdiTagArrowDown,
mdiTagArrowDownOutline: mdiTagArrowDownOutline,
mdiTagArrowLeft: mdiTagArrowLeft,
mdiTagArrowLeftOutline: mdiTagArrowLeftOutline,
mdiTagArrowRight: mdiTagArrowRight,
mdiTagArrowRightOutline: mdiTagArrowRightOutline,
mdiTagArrowUp: mdiTagArrowUp,
mdiTagArrowUpOutline: mdiTagArrowUpOutline,
mdiTagFaces: mdiTagFaces,
mdiTagHeart: mdiTagHeart,
mdiTagHeartOutline: mdiTagHeartOutline,
mdiTagMinus: mdiTagMinus,
mdiTagMinusOutline: mdiTagMinusOutline,
mdiTagMultiple: mdiTagMultiple,
mdiTagMultipleOutline: mdiTagMultipleOutline,
mdiTagOff: mdiTagOff,
mdiTagOffOutline: mdiTagOffOutline,
mdiTagOutline: mdiTagOutline,
mdiTagPlus: mdiTagPlus,
mdiTagPlusOutline: mdiTagPlusOutline,
mdiTagRemove: mdiTagRemove,
mdiTagRemoveOutline: mdiTagRemoveOutline,
mdiTagText: mdiTagText,
mdiTagTextOutline: mdiTagTextOutline,
mdiTailwind: mdiTailwind,
mdiTank: mdiTank,
mdiTankerTruck: mdiTankerTruck,
mdiTapeDrive: mdiTapeDrive,
mdiTapeMeasure: mdiTapeMeasure,
mdiTarget: mdiTarget,
mdiTargetAccount: mdiTargetAccount,
mdiTargetVariant: mdiTargetVariant,
mdiTaxi: mdiTaxi,
mdiTea: mdiTea,
mdiTeaOutline: mdiTeaOutline,
mdiTeach: mdiTeach,
mdiTeamviewer: mdiTeamviewer,
mdiTelegram: mdiTelegram,
mdiTelescope: mdiTelescope,
mdiTelevision: mdiTelevision,
mdiTelevisionAmbientLight: mdiTelevisionAmbientLight,
mdiTelevisionBox: mdiTelevisionBox,
mdiTelevisionClassic: mdiTelevisionClassic,
mdiTelevisionClassicOff: mdiTelevisionClassicOff,
mdiTelevisionClean: mdiTelevisionClean,
mdiTelevisionGuide: mdiTelevisionGuide,
mdiTelevisionOff: mdiTelevisionOff,
mdiTelevisionPause: mdiTelevisionPause,
mdiTelevisionPlay: mdiTelevisionPlay,
mdiTelevisionStop: mdiTelevisionStop,
mdiTemperatureCelsius: mdiTemperatureCelsius,
mdiTemperatureFahrenheit: mdiTemperatureFahrenheit,
mdiTemperatureKelvin: mdiTemperatureKelvin,
mdiTennis: mdiTennis,
mdiTennisBall: mdiTennisBall,
mdiTent: mdiTent,
mdiTerraform: mdiTerraform,
mdiTerrain: mdiTerrain,
mdiTestTube: mdiTestTube,
mdiTestTubeEmpty: mdiTestTubeEmpty,
mdiTestTubeOff: mdiTestTubeOff,
mdiText: mdiText,
mdiTextAccount: mdiTextAccount,
mdiTextBox: mdiTextBox,
mdiTextBoxCheck: mdiTextBoxCheck,
mdiTextBoxCheckOutline: mdiTextBoxCheckOutline,
mdiTextBoxMinus: mdiTextBoxMinus,
mdiTextBoxMinusOutline: mdiTextBoxMinusOutline,
mdiTextBoxMultiple: mdiTextBoxMultiple,
mdiTextBoxMultipleOutline: mdiTextBoxMultipleOutline,
mdiTextBoxOutline: mdiTextBoxOutline,
mdiTextBoxPlus: mdiTextBoxPlus,
mdiTextBoxPlusOutline: mdiTextBoxPlusOutline,
mdiTextBoxRemove: mdiTextBoxRemove,
mdiTextBoxRemoveOutline: mdiTextBoxRemoveOutline,
mdiTextBoxSearch: mdiTextBoxSearch,
mdiTextBoxSearchOutline: mdiTextBoxSearchOutline,
mdiTextRecognition: mdiTextRecognition,
mdiTextSearch: mdiTextSearch,
mdiTextShadow: mdiTextShadow,
mdiTextShort: mdiTextShort,
mdiTextSubject: mdiTextSubject,
mdiTextToSpeech: mdiTextToSpeech,
mdiTextToSpeechOff: mdiTextToSpeechOff,
mdiTexture: mdiTexture,
mdiTextureBox: mdiTextureBox,
mdiTheater: mdiTheater,
mdiThemeLightDark: mdiThemeLightDark,
mdiThermometer: mdiThermometer,
mdiThermometerAlert: mdiThermometerAlert,
mdiThermometerChevronDown: mdiThermometerChevronDown,
mdiThermometerChevronUp: mdiThermometerChevronUp,
mdiThermometerHigh: mdiThermometerHigh,
mdiThermometerLines: mdiThermometerLines,
mdiThermometerLow: mdiThermometerLow,
mdiThermometerMinus: mdiThermometerMinus,
mdiThermometerOff: mdiThermometerOff,
mdiThermometerPlus: mdiThermometerPlus,
mdiThermostat: mdiThermostat,
mdiThermostatBox: mdiThermostatBox,
mdiThoughtBubble: mdiThoughtBubble,
mdiThoughtBubbleOutline: mdiThoughtBubbleOutline,
mdiThumbDown: mdiThumbDown,
mdiThumbDownOutline: mdiThumbDownOutline,
mdiThumbUp: mdiThumbUp,
mdiThumbUpOutline: mdiThumbUpOutline,
mdiThumbsUpDown: mdiThumbsUpDown,
mdiTicket: mdiTicket,
mdiTicketAccount: mdiTicketAccount,
mdiTicketConfirmation: mdiTicketConfirmation,
mdiTicketConfirmationOutline: mdiTicketConfirmationOutline,
mdiTicketOutline: mdiTicketOutline,
mdiTicketPercent: mdiTicketPercent,
mdiTicketPercentOutline: mdiTicketPercentOutline,
mdiTie: mdiTie,
mdiTilde: mdiTilde,
mdiTimelapse: mdiTimelapse,
mdiTimeline: mdiTimeline,
mdiTimelineAlert: mdiTimelineAlert,
mdiTimelineAlertOutline: mdiTimelineAlertOutline,
mdiTimelineCheck: mdiTimelineCheck,
mdiTimelineCheckOutline: mdiTimelineCheckOutline,
mdiTimelineClock: mdiTimelineClock,
mdiTimelineClockOutline: mdiTimelineClockOutline,
mdiTimelineHelp: mdiTimelineHelp,
mdiTimelineHelpOutline: mdiTimelineHelpOutline,
mdiTimelineMinus: mdiTimelineMinus,
mdiTimelineMinusOutline: mdiTimelineMinusOutline,
mdiTimelineOutline: mdiTimelineOutline,
mdiTimelinePlus: mdiTimelinePlus,
mdiTimelinePlusOutline: mdiTimelinePlusOutline,
mdiTimelineRemove: mdiTimelineRemove,
mdiTimelineRemoveOutline: mdiTimelineRemoveOutline,
mdiTimelineText: mdiTimelineText,
mdiTimelineTextOutline: mdiTimelineTextOutline,
mdiTimer: mdiTimer,
mdiTimer10: mdiTimer10,
mdiTimer3: mdiTimer3,
mdiTimerOff: mdiTimerOff,
mdiTimerOffOutline: mdiTimerOffOutline,
mdiTimerOutline: mdiTimerOutline,
mdiTimerSand: mdiTimerSand,
mdiTimerSandEmpty: mdiTimerSandEmpty,
mdiTimerSandFull: mdiTimerSandFull,
mdiTimetable: mdiTimetable,
mdiToaster: mdiToaster,
mdiToasterOff: mdiToasterOff,
mdiToasterOven: mdiToasterOven,
mdiToggleSwitch: mdiToggleSwitch,
mdiToggleSwitchOff: mdiToggleSwitchOff,
mdiToggleSwitchOffOutline: mdiToggleSwitchOffOutline,
mdiToggleSwitchOutline: mdiToggleSwitchOutline,
mdiToilet: mdiToilet,
mdiToolbox: mdiToolbox,
mdiToolboxOutline: mdiToolboxOutline,
mdiTools: mdiTools,
mdiTooltip: mdiTooltip,
mdiTooltipAccount: mdiTooltipAccount,
mdiTooltipCheck: mdiTooltipCheck,
mdiTooltipCheckOutline: mdiTooltipCheckOutline,
mdiTooltipEdit: mdiTooltipEdit,
mdiTooltipEditOutline: mdiTooltipEditOutline,
mdiTooltipImage: mdiTooltipImage,
mdiTooltipImageOutline: mdiTooltipImageOutline,
mdiTooltipMinus: mdiTooltipMinus,
mdiTooltipMinusOutline: mdiTooltipMinusOutline,
mdiTooltipOutline: mdiTooltipOutline,
mdiTooltipPlus: mdiTooltipPlus,
mdiTooltipPlusOutline: mdiTooltipPlusOutline,
mdiTooltipRemove: mdiTooltipRemove,
mdiTooltipRemoveOutline: mdiTooltipRemoveOutline,
mdiTooltipText: mdiTooltipText,
mdiTooltipTextOutline: mdiTooltipTextOutline,
mdiTooth: mdiTooth,
mdiToothOutline: mdiToothOutline,
mdiToothbrush: mdiToothbrush,
mdiToothbrushElectric: mdiToothbrushElectric,
mdiToothbrushPaste: mdiToothbrushPaste,
mdiTorch: mdiTorch,
mdiTortoise: mdiTortoise,
mdiToslink: mdiToslink,
mdiTournament: mdiTournament,
mdiTowTruck: mdiTowTruck,
mdiTowerBeach: mdiTowerBeach,
mdiTowerFire: mdiTowerFire,
mdiToyBrick: mdiToyBrick,
mdiToyBrickMarker: mdiToyBrickMarker,
mdiToyBrickMarkerOutline: mdiToyBrickMarkerOutline,
mdiToyBrickMinus: mdiToyBrickMinus,
mdiToyBrickMinusOutline: mdiToyBrickMinusOutline,
mdiToyBrickOutline: mdiToyBrickOutline,
mdiToyBrickPlus: mdiToyBrickPlus,
mdiToyBrickPlusOutline: mdiToyBrickPlusOutline,
mdiToyBrickRemove: mdiToyBrickRemove,
mdiToyBrickRemoveOutline: mdiToyBrickRemoveOutline,
mdiToyBrickSearch: mdiToyBrickSearch,
mdiToyBrickSearchOutline: mdiToyBrickSearchOutline,
mdiTrackLight: mdiTrackLight,
mdiTrackpad: mdiTrackpad,
mdiTrackpadLock: mdiTrackpadLock,
mdiTractor: mdiTractor,
mdiTractorVariant: mdiTractorVariant,
mdiTrademark: mdiTrademark,
mdiTrafficCone: mdiTrafficCone,
mdiTrafficLight: mdiTrafficLight,
mdiTrain: mdiTrain,
mdiTrainCar: mdiTrainCar,
mdiTrainCarPassenger: mdiTrainCarPassenger,
mdiTrainCarPassengerDoor: mdiTrainCarPassengerDoor,
mdiTrainCarPassengerDoorOpen: mdiTrainCarPassengerDoorOpen,
mdiTrainCarPassengerVariant: mdiTrainCarPassengerVariant,
mdiTrainVariant: mdiTrainVariant,
mdiTram: mdiTram,
mdiTramSide: mdiTramSide,
mdiTranscribe: mdiTranscribe,
mdiTranscribeClose: mdiTranscribeClose,
mdiTransfer: mdiTransfer,
mdiTransferDown: mdiTransferDown,
mdiTransferLeft: mdiTransferLeft,
mdiTransferRight: mdiTransferRight,
mdiTransferUp: mdiTransferUp,
mdiTransitConnection: mdiTransitConnection,
mdiTransitConnectionHorizontal: mdiTransitConnectionHorizontal,
mdiTransitConnectionVariant: mdiTransitConnectionVariant,
mdiTransitDetour: mdiTransitDetour,
mdiTransitSkip: mdiTransitSkip,
mdiTransitTransfer: mdiTransitTransfer,
mdiTransition: mdiTransition,
mdiTransitionMasked: mdiTransitionMasked,
mdiTranslate: mdiTranslate,
mdiTranslateOff: mdiTranslateOff,
mdiTransmissionTower: mdiTransmissionTower,
mdiTrashCan: mdiTrashCan,
mdiTrashCanOutline: mdiTrashCanOutline,
mdiTray: mdiTray,
mdiTrayAlert: mdiTrayAlert,
mdiTrayFull: mdiTrayFull,
mdiTrayMinus: mdiTrayMinus,
mdiTrayPlus: mdiTrayPlus,
mdiTrayRemove: mdiTrayRemove,
mdiTreasureChest: mdiTreasureChest,
mdiTree: mdiTree,
mdiTreeOutline: mdiTreeOutline,
mdiTrello: mdiTrello,
mdiTrendingDown: mdiTrendingDown,
mdiTrendingNeutral: mdiTrendingNeutral,
mdiTrendingUp: mdiTrendingUp,
mdiTriangle: mdiTriangle,
mdiTriangleOutline: mdiTriangleOutline,
mdiTriangleWave: mdiTriangleWave,
mdiTriforce: mdiTriforce,
mdiTrophy: mdiTrophy,
mdiTrophyAward: mdiTrophyAward,
mdiTrophyBroken: mdiTrophyBroken,
mdiTrophyOutline: mdiTrophyOutline,
mdiTrophyVariant: mdiTrophyVariant,
mdiTrophyVariantOutline: mdiTrophyVariantOutline,
mdiTruck: mdiTruck,
mdiTruckCheck: mdiTruckCheck,
mdiTruckCheckOutline: mdiTruckCheckOutline,
mdiTruckDelivery: mdiTruckDelivery,
mdiTruckDeliveryOutline: mdiTruckDeliveryOutline,
mdiTruckFast: mdiTruckFast,
mdiTruckFastOutline: mdiTruckFastOutline,
mdiTruckOutline: mdiTruckOutline,
mdiTruckTrailer: mdiTruckTrailer,
mdiTrumpet: mdiTrumpet,
mdiTshirtCrew: mdiTshirtCrew,
mdiTshirtCrewOutline: mdiTshirtCrewOutline,
mdiTshirtV: mdiTshirtV,
mdiTshirtVOutline: mdiTshirtVOutline,
mdiTumbleDryer: mdiTumbleDryer,
mdiTumbleDryerAlert: mdiTumbleDryerAlert,
mdiTumbleDryerOff: mdiTumbleDryerOff,
mdiTune: mdiTune,
mdiTuneVariant: mdiTuneVariant,
mdiTuneVertical: mdiTuneVertical,
mdiTuneVerticalVariant: mdiTuneVerticalVariant,
mdiTurkey: mdiTurkey,
mdiTurnstile: mdiTurnstile,
mdiTurnstileOutline: mdiTurnstileOutline,
mdiTurtle: mdiTurtle,
mdiTwitch: mdiTwitch,
mdiTwitter: mdiTwitter,
mdiTwitterRetweet: mdiTwitterRetweet,
mdiTwoFactorAuthentication: mdiTwoFactorAuthentication,
mdiTypewriter: mdiTypewriter,
mdiUbisoft: mdiUbisoft,
mdiUbuntu: mdiUbuntu,
mdiUfo: mdiUfo,
mdiUfoOutline: mdiUfoOutline,
mdiUltraHighDefinition: mdiUltraHighDefinition,
mdiUmbraco: mdiUmbraco,
mdiUmbrella: mdiUmbrella,
mdiUmbrellaClosed: mdiUmbrellaClosed,
mdiUmbrellaClosedOutline: mdiUmbrellaClosedOutline,
mdiUmbrellaClosedVariant: mdiUmbrellaClosedVariant,
mdiUmbrellaOutline: mdiUmbrellaOutline,
mdiUndo: mdiUndo,
mdiUndoVariant: mdiUndoVariant,
mdiUnfoldLessHorizontal: mdiUnfoldLessHorizontal,
mdiUnfoldLessVertical: mdiUnfoldLessVertical,
mdiUnfoldMoreHorizontal: mdiUnfoldMoreHorizontal,
mdiUnfoldMoreVertical: mdiUnfoldMoreVertical,
mdiUngroup: mdiUngroup,
mdiUnicode: mdiUnicode,
mdiUnicorn: mdiUnicorn,
mdiUnicornVariant: mdiUnicornVariant,
mdiUnicycle: mdiUnicycle,
mdiUnity: mdiUnity,
mdiUnreal: mdiUnreal,
mdiUntappd: mdiUntappd,
mdiUpdate: mdiUpdate,
mdiUpload: mdiUpload,
mdiUploadLock: mdiUploadLock,
mdiUploadLockOutline: mdiUploadLockOutline,
mdiUploadMultiple: mdiUploadMultiple,
mdiUploadNetwork: mdiUploadNetwork,
mdiUploadNetworkOutline: mdiUploadNetworkOutline,
mdiUploadOff: mdiUploadOff,
mdiUploadOffOutline: mdiUploadOffOutline,
mdiUploadOutline: mdiUploadOutline,
mdiUsb: mdiUsb,
mdiUsbFlashDrive: mdiUsbFlashDrive,
mdiUsbFlashDriveOutline: mdiUsbFlashDriveOutline,
mdiUsbPort: mdiUsbPort,
mdiValve: mdiValve,
mdiValveClosed: mdiValveClosed,
mdiValveOpen: mdiValveOpen,
mdiVanPassenger: mdiVanPassenger,
mdiVanUtility: mdiVanUtility,
mdiVanish: mdiVanish,
mdiVanishQuarter: mdiVanishQuarter,
mdiVanityLight: mdiVanityLight,
mdiVariable: mdiVariable,
mdiVariableBox: mdiVariableBox,
mdiVectorArrangeAbove: mdiVectorArrangeAbove,
mdiVectorArrangeBelow: mdiVectorArrangeBelow,
mdiVectorBezier: mdiVectorBezier,
mdiVectorCircle: mdiVectorCircle,
mdiVectorCircleVariant: mdiVectorCircleVariant,
mdiVectorCombine: mdiVectorCombine,
mdiVectorCurve: mdiVectorCurve,
mdiVectorDifference: mdiVectorDifference,
mdiVectorDifferenceAb: mdiVectorDifferenceAb,
mdiVectorDifferenceBa: mdiVectorDifferenceBa,
mdiVectorEllipse: mdiVectorEllipse,
mdiVectorIntersection: mdiVectorIntersection,
mdiVectorLine: mdiVectorLine,
mdiVectorLink: mdiVectorLink,
mdiVectorPoint: mdiVectorPoint,
mdiVectorPolygon: mdiVectorPolygon,
mdiVectorPolyline: mdiVectorPolyline,
mdiVectorPolylineEdit: mdiVectorPolylineEdit,
mdiVectorPolylineMinus: mdiVectorPolylineMinus,
mdiVectorPolylinePlus: mdiVectorPolylinePlus,
mdiVectorPolylineRemove: mdiVectorPolylineRemove,
mdiVectorRadius: mdiVectorRadius,
mdiVectorRectangle: mdiVectorRectangle,
mdiVectorSelection: mdiVectorSelection,
mdiVectorSquare: mdiVectorSquare,
mdiVectorTriangle: mdiVectorTriangle,
mdiVectorUnion: mdiVectorUnion,
mdiVhs: mdiVhs,
mdiVibrate: mdiVibrate,
mdiVibrateOff: mdiVibrateOff,
mdiVideo: mdiVideo,
mdiVideo3d: mdiVideo3d,
mdiVideo3dOff: mdiVideo3dOff,
mdiVideo3dVariant: mdiVideo3dVariant,
mdiVideo4kBox: mdiVideo4kBox,
mdiVideoAccount: mdiVideoAccount,
mdiVideoBox: mdiVideoBox,
mdiVideoBoxOff: mdiVideoBoxOff,
mdiVideoCheck: mdiVideoCheck,
mdiVideoCheckOutline: mdiVideoCheckOutline,
mdiVideoHighDefinition: mdiVideoHighDefinition,
mdiVideoImage: mdiVideoImage,
mdiVideoInputAntenna: mdiVideoInputAntenna,
mdiVideoInputComponent: mdiVideoInputComponent,
mdiVideoInputHdmi: mdiVideoInputHdmi,
mdiVideoInputScart: mdiVideoInputScart,
mdiVideoInputSvideo: mdiVideoInputSvideo,
mdiVideoMinus: mdiVideoMinus,
mdiVideoMinusOutline: mdiVideoMinusOutline,
mdiVideoOff: mdiVideoOff,
mdiVideoOffOutline: mdiVideoOffOutline,
mdiVideoOutline: mdiVideoOutline,
mdiVideoPlus: mdiVideoPlus,
mdiVideoPlusOutline: mdiVideoPlusOutline,
mdiVideoStabilization: mdiVideoStabilization,
mdiVideoSwitch: mdiVideoSwitch,
mdiVideoSwitchOutline: mdiVideoSwitchOutline,
mdiVideoVintage: mdiVideoVintage,
mdiVideoWireless: mdiVideoWireless,
mdiVideoWirelessOutline: mdiVideoWirelessOutline,
mdiViewAgenda: mdiViewAgenda,
mdiViewAgendaOutline: mdiViewAgendaOutline,
mdiViewArray: mdiViewArray,
mdiViewArrayOutline: mdiViewArrayOutline,
mdiViewCarousel: mdiViewCarousel,
mdiViewCarouselOutline: mdiViewCarouselOutline,
mdiViewColumn: mdiViewColumn,
mdiViewColumnOutline: mdiViewColumnOutline,
mdiViewComfy: mdiViewComfy,
mdiViewComfyOutline: mdiViewComfyOutline,
mdiViewCompact: mdiViewCompact,
mdiViewCompactOutline: mdiViewCompactOutline,
mdiViewDashboard: mdiViewDashboard,
mdiViewDashboardOutline: mdiViewDashboardOutline,
mdiViewDashboardVariant: mdiViewDashboardVariant,
mdiViewDashboardVariantOutline: mdiViewDashboardVariantOutline,
mdiViewDay: mdiViewDay,
mdiViewDayOutline: mdiViewDayOutline,
mdiViewGrid: mdiViewGrid,
mdiViewGridOutline: mdiViewGridOutline,
mdiViewGridPlus: mdiViewGridPlus,
mdiViewGridPlusOutline: mdiViewGridPlusOutline,
mdiViewHeadline: mdiViewHeadline,
mdiViewList: mdiViewList,
mdiViewListOutline: mdiViewListOutline,
mdiViewModule: mdiViewModule,
mdiViewModuleOutline: mdiViewModuleOutline,
mdiViewParallel: mdiViewParallel,
mdiViewParallelOutline: mdiViewParallelOutline,
mdiViewQuilt: mdiViewQuilt,
mdiViewQuiltOutline: mdiViewQuiltOutline,
mdiViewSequential: mdiViewSequential,
mdiViewSequentialOutline: mdiViewSequentialOutline,
mdiViewSplitHorizontal: mdiViewSplitHorizontal,
mdiViewSplitVertical: mdiViewSplitVertical,
mdiViewStream: mdiViewStream,
mdiViewStreamOutline: mdiViewStreamOutline,
mdiViewWeek: mdiViewWeek,
mdiViewWeekOutline: mdiViewWeekOutline,
mdiVimeo: mdiVimeo,
mdiViolin: mdiViolin,
mdiVirtualReality: mdiVirtualReality,
mdiVirus: mdiVirus,
mdiVirusOutline: mdiVirusOutline,
mdiVk: mdiVk,
mdiVlc: mdiVlc,
mdiVoiceOff: mdiVoiceOff,
mdiVoicemail: mdiVoicemail,
mdiVolleyball: mdiVolleyball,
mdiVolumeHigh: mdiVolumeHigh,
mdiVolumeLow: mdiVolumeLow,
mdiVolumeMedium: mdiVolumeMedium,
mdiVolumeMinus: mdiVolumeMinus,
mdiVolumeMute: mdiVolumeMute,
mdiVolumeOff: mdiVolumeOff,
mdiVolumePlus: mdiVolumePlus,
mdiVolumeSource: mdiVolumeSource,
mdiVolumeVariantOff: mdiVolumeVariantOff,
mdiVolumeVibrate: mdiVolumeVibrate,
mdiVote: mdiVote,
mdiVoteOutline: mdiVoteOutline,
mdiVpn: mdiVpn,
mdiVuejs: mdiVuejs,
mdiVuetify: mdiVuetify,
mdiWalk: mdiWalk,
mdiWall: mdiWall,
mdiWallSconce: mdiWallSconce,
mdiWallSconceFlat: mdiWallSconceFlat,
mdiWallSconceFlatVariant: mdiWallSconceFlatVariant,
mdiWallSconceRound: mdiWallSconceRound,
mdiWallSconceRoundVariant: mdiWallSconceRoundVariant,
mdiWallet: mdiWallet,
mdiWalletGiftcard: mdiWalletGiftcard,
mdiWalletMembership: mdiWalletMembership,
mdiWalletOutline: mdiWalletOutline,
mdiWalletPlus: mdiWalletPlus,
mdiWalletPlusOutline: mdiWalletPlusOutline,
mdiWalletTravel: mdiWalletTravel,
mdiWallpaper: mdiWallpaper,
mdiWan: mdiWan,
mdiWardrobe: mdiWardrobe,
mdiWardrobeOutline: mdiWardrobeOutline,
mdiWarehouse: mdiWarehouse,
mdiWashingMachine: mdiWashingMachine,
mdiWashingMachineAlert: mdiWashingMachineAlert,
mdiWashingMachineOff: mdiWashingMachineOff,
mdiWatch: mdiWatch,
mdiWatchExport: mdiWatchExport,
mdiWatchExportVariant: mdiWatchExportVariant,
mdiWatchImport: mdiWatchImport,
mdiWatchImportVariant: mdiWatchImportVariant,
mdiWatchVariant: mdiWatchVariant,
mdiWatchVibrate: mdiWatchVibrate,
mdiWatchVibrateOff: mdiWatchVibrateOff,
mdiWater: mdiWater,
mdiWaterAlert: mdiWaterAlert,
mdiWaterAlertOutline: mdiWaterAlertOutline,
mdiWaterBoiler: mdiWaterBoiler,
mdiWaterBoilerAlert: mdiWaterBoilerAlert,
mdiWaterBoilerOff: mdiWaterBoilerOff,
mdiWaterCheck: mdiWaterCheck,
mdiWaterCheckOutline: mdiWaterCheckOutline,
mdiWaterMinus: mdiWaterMinus,
mdiWaterMinusOutline: mdiWaterMinusOutline,
mdiWaterOff: mdiWaterOff,
mdiWaterOffOutline: mdiWaterOffOutline,
mdiWaterOutline: mdiWaterOutline,
mdiWaterPercent: mdiWaterPercent,
mdiWaterPercentAlert: mdiWaterPercentAlert,
mdiWaterPlus: mdiWaterPlus,
mdiWaterPlusOutline: mdiWaterPlusOutline,
mdiWaterPolo: mdiWaterPolo,
mdiWaterPump: mdiWaterPump,
mdiWaterPumpOff: mdiWaterPumpOff,
mdiWaterRemove: mdiWaterRemove,
mdiWaterRemoveOutline: mdiWaterRemoveOutline,
mdiWaterWell: mdiWaterWell,
mdiWaterWellOutline: mdiWaterWellOutline,
mdiWateringCan: mdiWateringCan,
mdiWateringCanOutline: mdiWateringCanOutline,
mdiWatermark: mdiWatermark,
mdiWave: mdiWave,
mdiWaveform: mdiWaveform,
mdiWaves: mdiWaves,
mdiWaze: mdiWaze,
mdiWeatherCloudy: mdiWeatherCloudy,
mdiWeatherCloudyAlert: mdiWeatherCloudyAlert,
mdiWeatherCloudyArrowRight: mdiWeatherCloudyArrowRight,
mdiWeatherFog: mdiWeatherFog,
mdiWeatherHail: mdiWeatherHail,
mdiWeatherHazy: mdiWeatherHazy,
mdiWeatherHurricane: mdiWeatherHurricane,
mdiWeatherLightning: mdiWeatherLightning,
mdiWeatherLightningRainy: mdiWeatherLightningRainy,
mdiWeatherNight: mdiWeatherNight,
mdiWeatherNightPartlyCloudy: mdiWeatherNightPartlyCloudy,
mdiWeatherPartlyCloudy: mdiWeatherPartlyCloudy,
mdiWeatherPartlyLightning: mdiWeatherPartlyLightning,
mdiWeatherPartlyRainy: mdiWeatherPartlyRainy,
mdiWeatherPartlySnowy: mdiWeatherPartlySnowy,
mdiWeatherPartlySnowyRainy: mdiWeatherPartlySnowyRainy,
mdiWeatherPouring: mdiWeatherPouring,
mdiWeatherRainy: mdiWeatherRainy,
mdiWeatherSnowy: mdiWeatherSnowy,
mdiWeatherSnowyHeavy: mdiWeatherSnowyHeavy,
mdiWeatherSnowyRainy: mdiWeatherSnowyRainy,
mdiWeatherSunny: mdiWeatherSunny,
mdiWeatherSunnyAlert: mdiWeatherSunnyAlert,
mdiWeatherSunnyOff: mdiWeatherSunnyOff,
mdiWeatherSunset: mdiWeatherSunset,
mdiWeatherSunsetDown: mdiWeatherSunsetDown,
mdiWeatherSunsetUp: mdiWeatherSunsetUp,
mdiWeatherTornado: mdiWeatherTornado,
mdiWeatherWindy: mdiWeatherWindy,
mdiWeatherWindyVariant: mdiWeatherWindyVariant,
mdiWeb: mdiWeb,
mdiWebBox: mdiWebBox,
mdiWebClock: mdiWebClock,
mdiWebcam: mdiWebcam,
mdiWebcamOff: mdiWebcamOff,
mdiWebhook: mdiWebhook,
mdiWebpack: mdiWebpack,
mdiWebrtc: mdiWebrtc,
mdiWechat: mdiWechat,
mdiWeight: mdiWeight,
mdiWeightGram: mdiWeightGram,
mdiWeightKilogram: mdiWeightKilogram,
mdiWeightLifter: mdiWeightLifter,
mdiWeightPound: mdiWeightPound,
mdiWhatsapp: mdiWhatsapp,
mdiWheelBarrow: mdiWheelBarrow,
mdiWheelchairAccessibility: mdiWheelchairAccessibility,
mdiWhistle: mdiWhistle,
mdiWhistleOutline: mdiWhistleOutline,
mdiWhiteBalanceAuto: mdiWhiteBalanceAuto,
mdiWhiteBalanceIncandescent: mdiWhiteBalanceIncandescent,
mdiWhiteBalanceIridescent: mdiWhiteBalanceIridescent,
mdiWhiteBalanceSunny: mdiWhiteBalanceSunny,
mdiWidgets: mdiWidgets,
mdiWidgetsOutline: mdiWidgetsOutline,
mdiWifi: mdiWifi,
mdiWifiAlert: mdiWifiAlert,
mdiWifiArrowDown: mdiWifiArrowDown,
mdiWifiArrowLeft: mdiWifiArrowLeft,
mdiWifiArrowLeftRight: mdiWifiArrowLeftRight,
mdiWifiArrowRight: mdiWifiArrowRight,
mdiWifiArrowUp: mdiWifiArrowUp,
mdiWifiArrowUpDown: mdiWifiArrowUpDown,
mdiWifiCancel: mdiWifiCancel,
mdiWifiCheck: mdiWifiCheck,
mdiWifiCog: mdiWifiCog,
mdiWifiLock: mdiWifiLock,
mdiWifiLockOpen: mdiWifiLockOpen,
mdiWifiMarker: mdiWifiMarker,
mdiWifiMinus: mdiWifiMinus,
mdiWifiOff: mdiWifiOff,
mdiWifiPlus: mdiWifiPlus,
mdiWifiRefresh: mdiWifiRefresh,
mdiWifiRemove: mdiWifiRemove,
mdiWifiSettings: mdiWifiSettings,
mdiWifiStar: mdiWifiStar,
mdiWifiStrength1: mdiWifiStrength1,
mdiWifiStrength1Alert: mdiWifiStrength1Alert,
mdiWifiStrength1Lock: mdiWifiStrength1Lock,
mdiWifiStrength1LockOpen: mdiWifiStrength1LockOpen,
mdiWifiStrength2: mdiWifiStrength2,
mdiWifiStrength2Alert: mdiWifiStrength2Alert,
mdiWifiStrength2Lock: mdiWifiStrength2Lock,
mdiWifiStrength2LockOpen: mdiWifiStrength2LockOpen,
mdiWifiStrength3: mdiWifiStrength3,
mdiWifiStrength3Alert: mdiWifiStrength3Alert,
mdiWifiStrength3Lock: mdiWifiStrength3Lock,
mdiWifiStrength3LockOpen: mdiWifiStrength3LockOpen,
mdiWifiStrength4: mdiWifiStrength4,
mdiWifiStrength4Alert: mdiWifiStrength4Alert,
mdiWifiStrength4Lock: mdiWifiStrength4Lock,
mdiWifiStrength4LockOpen: mdiWifiStrength4LockOpen,
mdiWifiStrengthAlertOutline: mdiWifiStrengthAlertOutline,
mdiWifiStrengthLockOpenOutline: mdiWifiStrengthLockOpenOutline,
mdiWifiStrengthLockOutline: mdiWifiStrengthLockOutline,
mdiWifiStrengthOff: mdiWifiStrengthOff,
mdiWifiStrengthOffOutline: mdiWifiStrengthOffOutline,
mdiWifiStrengthOutline: mdiWifiStrengthOutline,
mdiWifiSync: mdiWifiSync,
mdiWikipedia: mdiWikipedia,
mdiWindTurbine: mdiWindTurbine,
mdiWindowClose: mdiWindowClose,
mdiWindowClosed: mdiWindowClosed,
mdiWindowClosedVariant: mdiWindowClosedVariant,
mdiWindowMaximize: mdiWindowMaximize,
mdiWindowMinimize: mdiWindowMinimize,
mdiWindowOpen: mdiWindowOpen,
mdiWindowOpenVariant: mdiWindowOpenVariant,
mdiWindowRestore: mdiWindowRestore,
mdiWindowShutter: mdiWindowShutter,
mdiWindowShutterAlert: mdiWindowShutterAlert,
mdiWindowShutterOpen: mdiWindowShutterOpen,
mdiWindsock: mdiWindsock,
mdiWiper: mdiWiper,
mdiWiperWash: mdiWiperWash,
mdiWizardHat: mdiWizardHat,
mdiWordpress: mdiWordpress,
mdiWrap: mdiWrap,
mdiWrapDisabled: mdiWrapDisabled,
mdiWrench: mdiWrench,
mdiWrenchOutline: mdiWrenchOutline,
mdiXamarin: mdiXamarin,
mdiXamarinOutline: mdiXamarinOutline,
mdiXing: mdiXing,
mdiXml: mdiXml,
mdiXmpp: mdiXmpp,
mdiYCombinator: mdiYCombinator,
mdiYahoo: mdiYahoo,
mdiYeast: mdiYeast,
mdiYinYang: mdiYinYang,
mdiYoga: mdiYoga,
mdiYoutube: mdiYoutube,
mdiYoutubeGaming: mdiYoutubeGaming,
mdiYoutubeStudio: mdiYoutubeStudio,
mdiYoutubeSubscription: mdiYoutubeSubscription,
mdiYoutubeTv: mdiYoutubeTv,
mdiYurt: mdiYurt,
mdiZWave: mdiZWave,
mdiZend: mdiZend,
mdiZigbee: mdiZigbee,
mdiZipBox: mdiZipBox,
mdiZipBoxOutline: mdiZipBoxOutline,
mdiZipDisk: mdiZipDisk,
mdiZodiacAquarius: mdiZodiacAquarius,
mdiZodiacAries: mdiZodiacAries,
mdiZodiacCancer: mdiZodiacCancer,
mdiZodiacCapricorn: mdiZodiacCapricorn,
mdiZodiacGemini: mdiZodiacGemini,
mdiZodiacLeo: mdiZodiacLeo,
mdiZodiacLibra: mdiZodiacLibra,
mdiZodiacPisces: mdiZodiacPisces,
mdiZodiacSagittarius: mdiZodiacSagittarius,
mdiZodiacScorpio: mdiZodiacScorpio,
mdiZodiacTaurus: mdiZodiacTaurus,
mdiZodiacVirgo: mdiZodiacVirgo
});
// Attribution: https://github.com/Reocin/obsidian-markdown-formatting-assistant-plugin/blob/main/src/icons.ts
function pathToSvg(icon) {
return `
`; //
}
const icons = {
ag_expand: mdiArrowExpandAll,
ag_collapse: mdiArrowCollapseAll,
ag_select_all: mdiSelectAll,
ag_select_inverse: mdiSelectCompare,
ag_select_neighbors: mdiSelectGroup,
ag_lock: mdiLock,
ag_unlock: mdiLockOpenVariantOutline,
ag_hide: mdiEyeOff,
ag_unhide: mdiEye,
ag_fit: mdiFitToPageOutline,
ag_image: mdiImage,
ag_workspace: mdiToolboxOutline,
ag_local: mdiFlare,
ag_fdgd: mdiGrain,
ag_concentric: mdiGraphql,
ag_grid: mdiDotsGrid,
ag_hierarchy: mdiGraph,
ag_file: mdiFileOutline,
ag_filter: mdiFilterOutline,
ag_save: mdiContentSave,
ag_node_list: mdiFormatListBulletedType,
ag_style: mdiPaletteOutline,
ag_help: mdiHelp,
};
const addIcons = () => {
Object.keys(icons).forEach((key) => {
obsidian.addIcon(key.replace('_', '-').replace('_', '-'), pathToSvg(icons[key]));
});
};
/* src/ui/toolbar/ToolbarButton.svelte generated by Svelte v3.45.0 */
function create_fragment$a(ctx) {
let button;
let svg;
let path;
let mounted;
let dispose;
return {
c() {
button = element$1("button");
svg = svg_element("svg");
path = svg_element("path");
attr(path, "d", /*icon*/ ctx[0]);
set_style(svg, "width", "17px");
set_style(svg, "height", "17px");
attr(svg, "viewBox", "0 0 24 24");
attr(svg, "xmlns", "http://www.w3.org/2000/svg");
attr(button, "type", "button");
attr(button, "class", "juggl-button");
attr(button, "aria-label", /*title*/ ctx[3]);
button.disabled = /*disabled*/ ctx[2];
},
m(target, anchor) {
insert(target, button, anchor);
append(button, svg);
append(svg, path);
if (!mounted) {
dispose = listen(button, "click", function () {
if (is_function(/*onClick*/ ctx[1])) /*onClick*/ ctx[1].apply(this, arguments);
});
mounted = true;
}
},
p(new_ctx, [dirty]) {
ctx = new_ctx;
if (dirty & /*icon*/ 1) {
attr(path, "d", /*icon*/ ctx[0]);
}
if (dirty & /*title*/ 8) {
attr(button, "aria-label", /*title*/ ctx[3]);
}
if (dirty & /*disabled*/ 4) {
button.disabled = /*disabled*/ ctx[2];
}
},
i: noop$2,
o: noop$2,
d(detaching) {
if (detaching) detach(button);
mounted = false;
dispose();
}
};
}
function instance$a($$self, $$props, $$invalidate) {
let { icon } = $$props;
let { onClick } = $$props;
let { disabled = false } = $$props;
let { title } = $$props;
$$self.$$set = $$props => {
if ('icon' in $$props) $$invalidate(0, icon = $$props.icon);
if ('onClick' in $$props) $$invalidate(1, onClick = $$props.onClick);
if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled);
if ('title' in $$props) $$invalidate(3, title = $$props.title);
};
return [icon, onClick, disabled, title];
}
class ToolbarButton extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$a, create_fragment$a, safe_not_equal, {
icon: 0,
onClick: 1,
disabled: 2,
title: 3
});
}
}
class JugglHelpView extends obsidian.ItemView {
constructor() {
super(...arguments);
this.frame = null;
}
async onOpen() {
this.frame = document.createElement('iframe');
this.frame.addClass(`juggl-site`);
this.frame.setAttr('style', 'height: 100%; width:100%');
this.frame.setAttr('src', 'https://juggl.io');
this.frame.setAttr('tabindex', '0');
this.containerEl.children[1].appendChild(this.frame);
}
getDisplayText() {
return 'Juggl help';
}
getViewType() {
return JUGGL_HELP_VIEW;
}
}
/* src/ui/toolbar/HelpButton.svelte generated by Svelte v3.45.0 */
function create_fragment$9(ctx) {
let toolbarbutton;
let current;
toolbarbutton = new ToolbarButton({
props: {
icon: icons.ag_help,
title: "Help",
onClick: /*openHelp*/ ctx[0]
}
});
return {
c() {
create_component(toolbarbutton.$$.fragment);
},
m(target, anchor) {
mount_component(toolbarbutton, target, anchor);
current = true;
},
p: noop$2,
i(local) {
if (current) return;
transition_in(toolbarbutton.$$.fragment, local);
current = true;
},
o(local) {
transition_out(toolbarbutton.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(toolbarbutton, detaching);
}
};
}
function instance$9($$self, $$props, $$invalidate) {
let { workspace } = $$props;
let openHelp = function () {
let leaf = workspace.getLeaf(true);
let view = new JugglHelpView(leaf);
leaf.open(view);
};
$$self.$$set = $$props => {
if ('workspace' in $$props) $$invalidate(1, workspace = $$props.workspace);
};
return [openHelp, workspace];
}
class HelpButton extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$9, create_fragment$9, safe_not_equal, { workspace: 1 });
}
}
/* src/ui/toolbar/Toolbar.svelte generated by Svelte v3.45.0 */
function create_fragment$8(ctx) {
let div0;
let toolbarbutton0;
let t0;
let toolbarbutton1;
let t1;
let toolbarbutton2;
let t2;
let toolbarbutton3;
let t3;
let div1;
let toolbarbutton4;
let t4;
let toolbarbutton5;
let t5;
let div2;
let helpbutton;
let t6;
let toolbarbutton6;
let t7;
let div3;
let toolbarbutton7;
let t8;
let toolbarbutton8;
let t9;
let toolbarbutton9;
let t10;
let div4;
let toolbarbutton10;
let t11;
let toolbarbutton11;
let t12;
let toolbarbutton12;
let t13;
let div5;
let toolbarbutton13;
let t14;
let toolbarbutton14;
let t15;
let br;
let label;
let input;
let current;
let mounted;
let dispose;
toolbarbutton0 = new ToolbarButton({
props: {
icon: icons.ag_fdgd,
onClick: /*fdgdClick*/ ctx[2],
title: "Force directed layout"
}
});
toolbarbutton1 = new ToolbarButton({
props: {
icon: icons.ag_concentric,
onClick: /*concentricClick*/ ctx[3],
title: "Circle layout"
}
});
toolbarbutton2 = new ToolbarButton({
props: {
icon: icons.ag_grid,
onClick: /*gridClick*/ ctx[4],
title: "Grid layout"
}
});
toolbarbutton3 = new ToolbarButton({
props: {
icon: icons.ag_hierarchy,
onClick: /*hierarchyClick*/ ctx[5],
title: "Hierarchical layout"
}
});
toolbarbutton4 = new ToolbarButton({
props: {
icon: icons.ag_fit,
onClick: /*fitClick*/ ctx[14],
title: "Fit view"
}
});
toolbarbutton5 = new ToolbarButton({
props: {
icon: icons.ag_local,
onClick: /*localModeClick*/ ctx[15],
title: "Local mode"
}
});
helpbutton = new HelpButton({
props: { workspace: /*workspace*/ ctx[17] }
});
toolbarbutton6 = new ToolbarButton({
props: {
icon: icons.ag_save,
onClick: /*saveClick*/ ctx[16],
title: "Manage workspace graphs"
}
});
toolbarbutton7 = new ToolbarButton({
props: {
icon: icons.ag_expand,
onClick: /*expandClick*/ ctx[6],
disabled: /*disableOnNoneSelected*/ ctx[18],
title: "Expand selected nodes (E)"
}
});
toolbarbutton8 = new ToolbarButton({
props: {
icon: icons.ag_collapse,
onClick: /*collapseClick*/ ctx[7],
disabled: /*disableOnNoneSelected*/ ctx[18],
title: "Collapse expanded nodes (C)"
}
});
toolbarbutton9 = new ToolbarButton({
props: {
icon: icons.ag_hide,
onClick: /*hideClick*/ ctx[8],
disabled: /*disableOnNoneSelected*/ ctx[18],
title: "Hide selected nodes (H)"
}
});
toolbarbutton10 = new ToolbarButton({
props: {
icon: icons.ag_select_all,
onClick: /*selectAllClick*/ ctx[9],
title: "Select all nodes (A)"
}
});
toolbarbutton11 = new ToolbarButton({
props: {
icon: icons.ag_select_inverse,
onClick: /*selectInvertClick*/ ctx[10],
disabled: /*disableOnNoneSelected*/ ctx[18],
title: "Invert selection (I)"
}
});
toolbarbutton12 = new ToolbarButton({
props: {
icon: icons.ag_select_neighbors,
onClick: /*selectNeighborClick*/ ctx[11],
disabled: /*disableOnNoneSelected*/ ctx[18],
title: "Select neighbors (N)"
}
});
toolbarbutton13 = new ToolbarButton({
props: {
icon: icons.ag_lock,
onClick: /*lockClick*/ ctx[12],
disabled: /*disableOnAllPinned*/ ctx[19],
title: "Lock selected nodes in place (P)"
}
});
toolbarbutton14 = new ToolbarButton({
props: {
icon: icons.ag_unlock,
onClick: /*unlockClick*/ ctx[13],
disabled: /*disableOnNonePinned*/ ctx[20],
title: "Unlock selected nodes in place (U)"
}
});
return {
c() {
div0 = element$1("div");
create_component(toolbarbutton0.$$.fragment);
t0 = space();
create_component(toolbarbutton1.$$.fragment);
t1 = space();
create_component(toolbarbutton2.$$.fragment);
t2 = space();
create_component(toolbarbutton3.$$.fragment);
t3 = space();
div1 = element$1("div");
create_component(toolbarbutton4.$$.fragment);
t4 = space();
create_component(toolbarbutton5.$$.fragment);
t5 = space();
div2 = element$1("div");
create_component(helpbutton.$$.fragment);
t6 = space();
create_component(toolbarbutton6.$$.fragment);
t7 = space();
div3 = element$1("div");
create_component(toolbarbutton7.$$.fragment);
t8 = space();
create_component(toolbarbutton8.$$.fragment);
t9 = space();
create_component(toolbarbutton9.$$.fragment);
t10 = space();
div4 = element$1("div");
create_component(toolbarbutton10.$$.fragment);
t11 = space();
create_component(toolbarbutton11.$$.fragment);
t12 = space();
create_component(toolbarbutton12.$$.fragment);
t13 = space();
div5 = element$1("div");
create_component(toolbarbutton13.$$.fragment);
t14 = space();
create_component(toolbarbutton14.$$.fragment);
t15 = space();
br = element$1("br");
label = element$1("label");
label.textContent = "Filter: ";
input = element$1("input");
attr(div0, "class", "cy-toolbar-section");
attr(div1, "class", "cy-toolbar-section");
attr(div2, "class", "cy-toolbar-section");
attr(div3, "class", "cy-toolbar-section");
attr(div4, "class", "cy-toolbar-section");
attr(div5, "class", "cy-toolbar-section");
attr(label, "for", "ag-filter");
attr(input, "type", "text");
attr(input, "id", "ag-filter");
attr(input, "name", "ag-filter");
input.value = /*filterValue*/ ctx[1];
},
m(target, anchor) {
insert(target, div0, anchor);
mount_component(toolbarbutton0, div0, null);
append(div0, t0);
mount_component(toolbarbutton1, div0, null);
append(div0, t1);
mount_component(toolbarbutton2, div0, null);
append(div0, t2);
mount_component(toolbarbutton3, div0, null);
insert(target, t3, anchor);
insert(target, div1, anchor);
mount_component(toolbarbutton4, div1, null);
append(div1, t4);
mount_component(toolbarbutton5, div1, null);
insert(target, t5, anchor);
insert(target, div2, anchor);
mount_component(helpbutton, div2, null);
append(div2, t6);
mount_component(toolbarbutton6, div2, null);
insert(target, t7, anchor);
insert(target, div3, anchor);
mount_component(toolbarbutton7, div3, null);
append(div3, t8);
mount_component(toolbarbutton8, div3, null);
append(div3, t9);
mount_component(toolbarbutton9, div3, null);
insert(target, t10, anchor);
insert(target, div4, anchor);
mount_component(toolbarbutton10, div4, null);
append(div4, t11);
mount_component(toolbarbutton11, div4, null);
append(div4, t12);
mount_component(toolbarbutton12, div4, null);
insert(target, t13, anchor);
insert(target, div5, anchor);
mount_component(toolbarbutton13, div5, null);
append(div5, t14);
mount_component(toolbarbutton14, div5, null);
insert(target, t15, anchor);
insert(target, br, anchor);
insert(target, label, anchor);
insert(target, input, anchor);
current = true;
if (!mounted) {
dispose = listen(input, "input", function () {
if (is_function(/*filterInput*/ ctx[0])) /*filterInput*/ ctx[0].apply(this, arguments);
});
mounted = true;
}
},
p(new_ctx, [dirty]) {
ctx = new_ctx;
const toolbarbutton0_changes = {};
if (dirty & /*fdgdClick*/ 4) toolbarbutton0_changes.onClick = /*fdgdClick*/ ctx[2];
toolbarbutton0.$set(toolbarbutton0_changes);
const toolbarbutton1_changes = {};
if (dirty & /*concentricClick*/ 8) toolbarbutton1_changes.onClick = /*concentricClick*/ ctx[3];
toolbarbutton1.$set(toolbarbutton1_changes);
const toolbarbutton2_changes = {};
if (dirty & /*gridClick*/ 16) toolbarbutton2_changes.onClick = /*gridClick*/ ctx[4];
toolbarbutton2.$set(toolbarbutton2_changes);
const toolbarbutton3_changes = {};
if (dirty & /*hierarchyClick*/ 32) toolbarbutton3_changes.onClick = /*hierarchyClick*/ ctx[5];
toolbarbutton3.$set(toolbarbutton3_changes);
const toolbarbutton4_changes = {};
if (dirty & /*fitClick*/ 16384) toolbarbutton4_changes.onClick = /*fitClick*/ ctx[14];
toolbarbutton4.$set(toolbarbutton4_changes);
const toolbarbutton5_changes = {};
if (dirty & /*localModeClick*/ 32768) toolbarbutton5_changes.onClick = /*localModeClick*/ ctx[15];
toolbarbutton5.$set(toolbarbutton5_changes);
const helpbutton_changes = {};
if (dirty & /*workspace*/ 131072) helpbutton_changes.workspace = /*workspace*/ ctx[17];
helpbutton.$set(helpbutton_changes);
const toolbarbutton6_changes = {};
if (dirty & /*saveClick*/ 65536) toolbarbutton6_changes.onClick = /*saveClick*/ ctx[16];
toolbarbutton6.$set(toolbarbutton6_changes);
const toolbarbutton7_changes = {};
if (dirty & /*expandClick*/ 64) toolbarbutton7_changes.onClick = /*expandClick*/ ctx[6];
if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton7_changes.disabled = /*disableOnNoneSelected*/ ctx[18];
toolbarbutton7.$set(toolbarbutton7_changes);
const toolbarbutton8_changes = {};
if (dirty & /*collapseClick*/ 128) toolbarbutton8_changes.onClick = /*collapseClick*/ ctx[7];
if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton8_changes.disabled = /*disableOnNoneSelected*/ ctx[18];
toolbarbutton8.$set(toolbarbutton8_changes);
const toolbarbutton9_changes = {};
if (dirty & /*hideClick*/ 256) toolbarbutton9_changes.onClick = /*hideClick*/ ctx[8];
if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton9_changes.disabled = /*disableOnNoneSelected*/ ctx[18];
toolbarbutton9.$set(toolbarbutton9_changes);
const toolbarbutton10_changes = {};
if (dirty & /*selectAllClick*/ 512) toolbarbutton10_changes.onClick = /*selectAllClick*/ ctx[9];
toolbarbutton10.$set(toolbarbutton10_changes);
const toolbarbutton11_changes = {};
if (dirty & /*selectInvertClick*/ 1024) toolbarbutton11_changes.onClick = /*selectInvertClick*/ ctx[10];
if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton11_changes.disabled = /*disableOnNoneSelected*/ ctx[18];
toolbarbutton11.$set(toolbarbutton11_changes);
const toolbarbutton12_changes = {};
if (dirty & /*selectNeighborClick*/ 2048) toolbarbutton12_changes.onClick = /*selectNeighborClick*/ ctx[11];
if (dirty & /*disableOnNoneSelected*/ 262144) toolbarbutton12_changes.disabled = /*disableOnNoneSelected*/ ctx[18];
toolbarbutton12.$set(toolbarbutton12_changes);
const toolbarbutton13_changes = {};
if (dirty & /*lockClick*/ 4096) toolbarbutton13_changes.onClick = /*lockClick*/ ctx[12];
if (dirty & /*disableOnAllPinned*/ 524288) toolbarbutton13_changes.disabled = /*disableOnAllPinned*/ ctx[19];
toolbarbutton13.$set(toolbarbutton13_changes);
const toolbarbutton14_changes = {};
if (dirty & /*unlockClick*/ 8192) toolbarbutton14_changes.onClick = /*unlockClick*/ ctx[13];
if (dirty & /*disableOnNonePinned*/ 1048576) toolbarbutton14_changes.disabled = /*disableOnNonePinned*/ ctx[20];
toolbarbutton14.$set(toolbarbutton14_changes);
if (!current || dirty & /*filterValue*/ 2 && input.value !== /*filterValue*/ ctx[1]) {
input.value = /*filterValue*/ ctx[1];
}
},
i(local) {
if (current) return;
transition_in(toolbarbutton0.$$.fragment, local);
transition_in(toolbarbutton1.$$.fragment, local);
transition_in(toolbarbutton2.$$.fragment, local);
transition_in(toolbarbutton3.$$.fragment, local);
transition_in(toolbarbutton4.$$.fragment, local);
transition_in(toolbarbutton5.$$.fragment, local);
transition_in(helpbutton.$$.fragment, local);
transition_in(toolbarbutton6.$$.fragment, local);
transition_in(toolbarbutton7.$$.fragment, local);
transition_in(toolbarbutton8.$$.fragment, local);
transition_in(toolbarbutton9.$$.fragment, local);
transition_in(toolbarbutton10.$$.fragment, local);
transition_in(toolbarbutton11.$$.fragment, local);
transition_in(toolbarbutton12.$$.fragment, local);
transition_in(toolbarbutton13.$$.fragment, local);
transition_in(toolbarbutton14.$$.fragment, local);
current = true;
},
o(local) {
transition_out(toolbarbutton0.$$.fragment, local);
transition_out(toolbarbutton1.$$.fragment, local);
transition_out(toolbarbutton2.$$.fragment, local);
transition_out(toolbarbutton3.$$.fragment, local);
transition_out(toolbarbutton4.$$.fragment, local);
transition_out(toolbarbutton5.$$.fragment, local);
transition_out(helpbutton.$$.fragment, local);
transition_out(toolbarbutton6.$$.fragment, local);
transition_out(toolbarbutton7.$$.fragment, local);
transition_out(toolbarbutton8.$$.fragment, local);
transition_out(toolbarbutton9.$$.fragment, local);
transition_out(toolbarbutton10.$$.fragment, local);
transition_out(toolbarbutton11.$$.fragment, local);
transition_out(toolbarbutton12.$$.fragment, local);
transition_out(toolbarbutton13.$$.fragment, local);
transition_out(toolbarbutton14.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div0);
destroy_component(toolbarbutton0);
destroy_component(toolbarbutton1);
destroy_component(toolbarbutton2);
destroy_component(toolbarbutton3);
if (detaching) detach(t3);
if (detaching) detach(div1);
destroy_component(toolbarbutton4);
destroy_component(toolbarbutton5);
if (detaching) detach(t5);
if (detaching) detach(div2);
destroy_component(helpbutton);
destroy_component(toolbarbutton6);
if (detaching) detach(t7);
if (detaching) detach(div3);
destroy_component(toolbarbutton7);
destroy_component(toolbarbutton8);
destroy_component(toolbarbutton9);
if (detaching) detach(t10);
if (detaching) detach(div4);
destroy_component(toolbarbutton10);
destroy_component(toolbarbutton11);
destroy_component(toolbarbutton12);
if (detaching) detach(t13);
if (detaching) detach(div5);
destroy_component(toolbarbutton13);
destroy_component(toolbarbutton14);
if (detaching) detach(t15);
if (detaching) detach(br);
if (detaching) detach(label);
if (detaching) detach(input);
mounted = false;
dispose();
}
};
}
function instance$8($$self, $$props, $$invalidate) {
let { viz } = $$props;
let { filterValue } = $$props;
let { fdgdClick } = $$props;
let { concentricClick } = $$props;
let { gridClick } = $$props;
let { hierarchyClick } = $$props;
let { expandClick } = $$props;
let { collapseClick } = $$props;
let { hideClick } = $$props;
let { selectAllClick } = $$props;
let { selectInvertClick } = $$props;
let { selectNeighborClick } = $$props;
let { lockClick } = $$props;
let { unlockClick } = $$props;
let { fitClick } = $$props;
let { localModeClick } = $$props;
let { filterInput } = $$props;
let { saveClick } = $$props;
let { workspace } = $$props;
filterInput = obsidian.debounce(filterInput, 500, true);
let disableOnNoneSelected = false;
let disableOnAllPinned = false;
let disableOnNonePinned = true;
const onSelect = function () {
let selected = viz.nodes(":selected");
$$invalidate(18, disableOnNoneSelected = selected.length === 0);
// TODO: Hardcoded class
let pinned = viz.nodes(".pinned");
let anyUnpinned = selected.difference(pinned).length > 0;
let anyPinned = selected.intersection(pinned);
$$invalidate(19, disableOnAllPinned = !anyUnpinned || disableOnNoneSelected);
$$invalidate(20, disableOnNonePinned = !anyPinned || disableOnNoneSelected);
};
$$self.$$set = $$props => {
if ('viz' in $$props) $$invalidate(21, viz = $$props.viz);
if ('filterValue' in $$props) $$invalidate(1, filterValue = $$props.filterValue);
if ('fdgdClick' in $$props) $$invalidate(2, fdgdClick = $$props.fdgdClick);
if ('concentricClick' in $$props) $$invalidate(3, concentricClick = $$props.concentricClick);
if ('gridClick' in $$props) $$invalidate(4, gridClick = $$props.gridClick);
if ('hierarchyClick' in $$props) $$invalidate(5, hierarchyClick = $$props.hierarchyClick);
if ('expandClick' in $$props) $$invalidate(6, expandClick = $$props.expandClick);
if ('collapseClick' in $$props) $$invalidate(7, collapseClick = $$props.collapseClick);
if ('hideClick' in $$props) $$invalidate(8, hideClick = $$props.hideClick);
if ('selectAllClick' in $$props) $$invalidate(9, selectAllClick = $$props.selectAllClick);
if ('selectInvertClick' in $$props) $$invalidate(10, selectInvertClick = $$props.selectInvertClick);
if ('selectNeighborClick' in $$props) $$invalidate(11, selectNeighborClick = $$props.selectNeighborClick);
if ('lockClick' in $$props) $$invalidate(12, lockClick = $$props.lockClick);
if ('unlockClick' in $$props) $$invalidate(13, unlockClick = $$props.unlockClick);
if ('fitClick' in $$props) $$invalidate(14, fitClick = $$props.fitClick);
if ('localModeClick' in $$props) $$invalidate(15, localModeClick = $$props.localModeClick);
if ('filterInput' in $$props) $$invalidate(0, filterInput = $$props.filterInput);
if ('saveClick' in $$props) $$invalidate(16, saveClick = $$props.saveClick);
if ('workspace' in $$props) $$invalidate(17, workspace = $$props.workspace);
};
return [
filterInput,
filterValue,
fdgdClick,
concentricClick,
gridClick,
hierarchyClick,
expandClick,
collapseClick,
hideClick,
selectAllClick,
selectInvertClick,
selectNeighborClick,
lockClick,
unlockClick,
fitClick,
localModeClick,
saveClick,
workspace,
disableOnNoneSelected,
disableOnAllPinned,
disableOnNonePinned,
viz,
onSelect
];
}
class Toolbar extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$8, create_fragment$8, safe_not_equal, {
viz: 21,
filterValue: 1,
fdgdClick: 2,
concentricClick: 3,
gridClick: 4,
hierarchyClick: 5,
expandClick: 6,
collapseClick: 7,
hideClick: 8,
selectAllClick: 9,
selectInvertClick: 10,
selectNeighborClick: 11,
lockClick: 12,
unlockClick: 13,
fitClick: 14,
localModeClick: 15,
filterInput: 0,
saveClick: 16,
workspace: 17,
onSelect: 22
});
}
get onSelect() {
return this.$$.ctx[22];
}
}
class ColaGlobalLayout {
constructor(options, animate) {
this.options = Object.assign({}, ColaGlobalLayout.DEFAULT, options, { animate: animate ? 'end' : false });
}
startLayout(view) {
return view.viz.layout(this.options).start();
}
}
ColaGlobalLayout.DEFAULT = {
name: 'cola',
// @ts-ignore
animate: true,
refresh: 2,
maxSimulationTime: LAYOUT_ANIMATION_TIME,
ungrabifyWhileSimulating: false,
fit: false,
padding: 30,
nodeDimensionsIncludeLabels: true,
// positioning options
randomize: false,
avoidOverlap: true,
handleDisconnected: true,
convergenceThreshold: 0.01,
nodeSpacing: 10, // extra spacing around nodes
};
class D3GlobalLayout {
constructor(options, animate) {
this.options = Object.assign({}, D3GlobalLayout.DEFAULT, options, { animate: animate ? 'end' : false });
console.log({ options: this.options, animate });
}
startLayout(view) {
return view.viz.layout(Object.assign(this.options, { linkId: function id(d) {
return d.id;
}, // sets the node id accessor to the specified function
})).start();
}
}
D3GlobalLayout.DEFAULT = {
name: 'd3-force',
// @ts-ignore
animate: 'end',
maxIterations: 0,
maxSimulationTime: LAYOUT_ANIMATION_TIME,
ungrabifyWhileSimulating: false,
fixedAfterDragging: false,
fit: false,
padding: 30,
/** d3-force API**/
alpha: 1,
alphaMin: 0.001,
alphaDecay: 1 - Math.pow(0.001, 1 / 300),
alphaTarget: 0,
velocityDecay: 0.4,
collideRadius: 60,
collideStrength: 0.9,
collideIterations: 1,
linkDistance: 150,
linkStrength: 0.7,
linkIterations: 1,
manyBodyStrength: -600,
manyBodyDistanceMin: 5,
xStrength: 0.1,
xX: 0,
yStrength: 0.1,
yY: 0,
radialStrength: 0.1,
radialX: 0,
radialY: 0,
radialRadius: 10,
// positioning optsions
randomize: false,
// infinite layout options
infinite: false, // overrides all other options for a forces-all-the-time mode
};
class GridGlobalLayout {
constructor(options) {
this.options = Object.assign({}, GridGlobalLayout.DEFAULT, options);
}
startLayout(view) {
return view.viz.layout(this.options).start();
}
}
GridGlobalLayout.DEFAULT = {
name: 'grid',
animate: true,
animationDuration: DISCRETE_LAYOUT_ANIMATION_TIME,
// animationEasing // Should probably add something here
spacingFactor: DISCRETE_SPACING_FACTOR,
fit: false,
padding: 30,
nodeDimensionsIncludeLabels: true,
// positioning options
avoidOverlap: true, // if true, prevents overlap of node bounding boxes
};
class DagreGlobalLayout {
constructor(options) {
this.options = Object.assign({}, DagreGlobalLayout.DEFAULT, options);
}
startLayout(view) {
return view.viz.layout(this.options).start();
}
}
DagreGlobalLayout.DEFAULT = {
name: 'dagre',
// @ts-ignore
animate: true,
animationDuration: DISCRETE_LAYOUT_ANIMATION_TIME,
spacingFactor: DISCRETE_SPACING_FACTOR,
// animationEasing // Should probably add something here
fit: false,
padding: 30,
nodeDimensionsIncludeLabels: true,
// positioning options
avoidOverlap: true, // if true, prevents overlap of node bounding boxes
};
class ConcentricLayout {
constructor(options) {
this.options = Object.assign({}, ConcentricLayout.DEFAULT, options);
}
startLayout(view) {
return view.viz.layout(Object.assign(this.options, { concentric: (n) => {
// @ts-ignore
if (n.hasClass(CLASS_ACTIVE_NODE)) {
return 1000;
}
// @ts-ignore
if (n.hasClass(CLASS_EXPANDED)) {
return 100;
}
return 1;
} })).start();
}
}
ConcentricLayout.DEFAULT = {
name: 'concentric',
// @ts-ignore
animate: 'end',
animationDuration: DISCRETE_LAYOUT_ANIMATION_TIME,
// animationEasing // Should probably add something here
fit: false,
padding: 30,
nodeDimensionsIncludeLabels: true,
// positioning options
avoidOverlap: true, // if true, prevents overlap of node bounding boxes
};
const getLayoutSetting = function (layoutType, settings, options) {
switch (layoutType) {
case 'circle':
case 'concentric': return new ConcentricLayout(options);
case 'force-directed': if (settings && settings.fdgdLayout === 'd3-force') {
return new D3GlobalLayout(options, settings.animateLayout);
}
else {
return new ColaGlobalLayout(options, settings.animateLayout);
}
case 'hierarchy':
case 'dagre':
return new DagreGlobalLayout(options);
case 'grid': return new GridGlobalLayout(options);
case 'cola': return new ColaGlobalLayout(options, settings.animateLayout);
case 'd3-force': return new D3GlobalLayout(options, settings.animateLayout);
}
};
const parseLayoutSettings = function (settings) {
if (typeof settings.layout === 'string' || settings.layout instanceof String) {
return getLayoutSetting(settings.layout, settings);
}
else {
return getLayoutSetting(settings.layout.name, settings, settings.layout);
}
};
/* src/ui/SaveWorkspaceItem.svelte generated by Svelte v3.45.0 */
function create_fragment$7(ctx) {
let div2;
let div0;
let t0;
let t1;
let button;
let t3;
let div1;
let mounted;
let dispose;
return {
c() {
div2 = element$1("div");
div0 = element$1("div");
t0 = text(/*name*/ ctx[0]);
t1 = space();
button = element$1("button");
button.textContent = "Load";
t3 = space();
div1 = element$1("div");
div1.innerHTML = ``;
attr(div0, "class", "list-item-part mod-extended");
attr(button, "class", "list-item-part");
attr(div1, "class", "list-item-part clickable-icon");
attr(div1, "aria-label", "Delete graph");
attr(div2, "class", "list-item");
},
m(target, anchor) {
insert(target, div2, anchor);
append(div2, div0);
append(div0, t0);
append(div2, t1);
append(div2, button);
append(div2, t3);
append(div2, div1);
if (!mounted) {
dispose = [
listen(button, "click", function () {
if (is_function(/*onClick*/ ctx[1](/*name*/ ctx[0]))) /*onClick*/ ctx[1](/*name*/ ctx[0]).apply(this, arguments);
}),
listen(div1, "click", function () {
if (is_function(/*onDelete*/ ctx[2](/*name*/ ctx[0]))) /*onDelete*/ ctx[2](/*name*/ ctx[0]).apply(this, arguments);
})
];
mounted = true;
}
},
p(new_ctx, [dirty]) {
ctx = new_ctx;
if (dirty & /*name*/ 1) set_data(t0, /*name*/ ctx[0]);
},
i: noop$2,
o: noop$2,
d(detaching) {
if (detaching) detach(div2);
mounted = false;
run_all(dispose);
}
};
}
function instance$7($$self, $$props, $$invalidate) {
let { name } = $$props;
let { onClick } = $$props;
let { onDelete } = $$props;
$$self.$$set = $$props => {
if ('name' in $$props) $$invalidate(0, name = $$props.name);
if ('onClick' in $$props) $$invalidate(1, onClick = $$props.onClick);
if ('onDelete' in $$props) $$invalidate(2, onDelete = $$props.onDelete);
};
return [name, onClick, onDelete];
}
class SaveWorkspaceItem extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$7, create_fragment$7, safe_not_equal, { name: 0, onClick: 1, onDelete: 2 });
}
}
/* src/ui/SaveWorkspaces.svelte generated by Svelte v3.45.0 */
function get_each_context$2(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[9] = list[i];
return child_ctx;
}
// (31:4) {#each savedGraphs as graphName}
function create_each_block$2(ctx) {
let saveworkspaceitem;
let current;
saveworkspaceitem = new SaveWorkspaceItem({
props: {
name: /*graphName*/ ctx[9],
onClick: /*onLoad*/ ctx[1],
onDelete: /*_onDelete*/ ctx[4]
}
});
return {
c() {
create_component(saveworkspaceitem.$$.fragment);
},
m(target, anchor) {
mount_component(saveworkspaceitem, target, anchor);
current = true;
},
p(ctx, dirty) {
const saveworkspaceitem_changes = {};
if (dirty & /*savedGraphs*/ 1) saveworkspaceitem_changes.name = /*graphName*/ ctx[9];
if (dirty & /*onLoad*/ 2) saveworkspaceitem_changes.onClick = /*onLoad*/ ctx[1];
saveworkspaceitem.$set(saveworkspaceitem_changes);
},
i(local) {
if (current) return;
transition_in(saveworkspaceitem.$$.fragment, local);
current = true;
},
o(local) {
transition_out(saveworkspaceitem.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(saveworkspaceitem, detaching);
}
};
}
function create_fragment$6(ctx) {
let div0;
let input;
let t0;
let button;
let t2;
let hr;
let t3;
let div1;
let current;
let mounted;
let dispose;
let each_value = /*savedGraphs*/ ctx[0];
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));
}
const out = i => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
return {
c() {
div0 = element$1("div");
input = element$1("input");
t0 = space();
button = element$1("button");
button.textContent = "Save";
t2 = space();
hr = element$1("hr");
t3 = space();
div1 = element$1("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(input, "class", "list-item-part mod-extended");
attr(input, "type", "text");
attr(input, "placeholder", "Save current graph as...");
attr(button, "class", "list-item-part");
attr(div0, "class", "modal-content");
},
m(target, anchor) {
insert(target, div0, anchor);
append(div0, input);
set_input_value(input, /*saveName*/ ctx[2]);
append(div0, t0);
append(div0, button);
insert(target, t2, anchor);
insert(target, hr, anchor);
insert(target, t3, anchor);
insert(target, div1, anchor);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(div1, null);
}
current = true;
if (!mounted) {
dispose = [
listen(input, "input", /*input_input_handler*/ ctx[8]),
listen(input, "keydown", /*filterInput*/ ctx[5]),
listen(button, "click", function () {
if (is_function(/*_onSave*/ ctx[3](/*saveName*/ ctx[2]))) /*_onSave*/ ctx[3](/*saveName*/ ctx[2]).apply(this, arguments);
})
];
mounted = true;
}
},
p(new_ctx, [dirty]) {
ctx = new_ctx;
if (dirty & /*saveName*/ 4 && input.value !== /*saveName*/ ctx[2]) {
set_input_value(input, /*saveName*/ ctx[2]);
}
if (dirty & /*savedGraphs, onLoad, _onDelete*/ 19) {
each_value = /*savedGraphs*/ ctx[0];
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$2(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block$2(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(div1, null);
}
}
group_outros();
for (i = each_value.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
if (detaching) detach(div0);
if (detaching) detach(t2);
if (detaching) detach(hr);
if (detaching) detach(t3);
if (detaching) detach(div1);
destroy_each(each_blocks, detaching);
mounted = false;
run_all(dispose);
}
};
}
function instance$6($$self, $$props, $$invalidate) {
let { onLoad } = $$props;
let { onSave } = $$props;
let { onDelete } = $$props;
let { savedGraphs } = $$props;
let saveName = '';
let _onSave = async s => {
await onSave(s);
// Ensures svelte reacts.
$$invalidate(0, savedGraphs);
};
let _onDelete = async s => {
await onDelete(s);
$$invalidate(0, savedGraphs);
};
let filterInput = event => {
if (event.key === '/') {
event.preventDefault();
return false;
}
return true;
};
function input_input_handler() {
saveName = this.value;
$$invalidate(2, saveName);
}
$$self.$$set = $$props => {
if ('onLoad' in $$props) $$invalidate(1, onLoad = $$props.onLoad);
if ('onSave' in $$props) $$invalidate(6, onSave = $$props.onSave);
if ('onDelete' in $$props) $$invalidate(7, onDelete = $$props.onDelete);
if ('savedGraphs' in $$props) $$invalidate(0, savedGraphs = $$props.savedGraphs);
};
return [
savedGraphs,
onLoad,
saveName,
_onSave,
_onDelete,
filterInput,
onSave,
onDelete,
input_input_handler
];
}
class SaveWorkspaces extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$6, create_fragment$6, safe_not_equal, {
onLoad: 1,
onSave: 6,
onDelete: 7,
savedGraphs: 0
});
}
}
class WorkspaceModal extends obsidian.Modal {
constructor(app, workspaceManager, view) {
super(app);
this.manager = workspaceManager;
this.view = view;
}
onOpen() {
super.onOpen();
this.titleEl.innerHTML = 'Manage workspace graphs';
new SaveWorkspaces({
target: this.contentEl,
props: {
onSave: (s) => this.manager.saveGraph(s, this.view),
savedGraphs: this.manager.graphs,
onLoad: (s) => this.manager.loadGraph(s, this.view),
onDelete: (s) => this.manager.deleteGraph(s, this.view),
},
});
}
}
class WorkspaceMode extends obsidian.Component {
constructor(view) {
super();
this.events = [];
this.recursionPreventer = false;
this.view = view;
}
onload() {
if (this.view.vizReady) {
this._onLoad();
}
else {
this.registerEvent(this.view.on('vizReady', (viz) => {
this._onLoad();
}));
}
}
_onLoad() {
this.viz = this.view.viz;
const mode = this;
const view = this.view;
const style = getComputedStyle(document.body);
const selectColor = style.getPropertyValue('--text-selection');
const backgroundColor = style.getPropertyValue('--background-secondary');
const textColor = style.getPropertyValue('--text-normal');
style.getPropertyValue('--text');
const plugin = this.view.plugin;
// the default values of each option are outlined below:
const defaults = {
menuRadius: 70,
selector: 'node',
commands: (n) => {
const commands = [];
const id = VizId.fromNode(n);
if (id.storeId === 'core') {
commands.push({
content: pathToSvg(icons.ag_file),
select: async function (ele, gestureStart, event) {
// @ts-ignore
await plugin.openFileFromNode(ele, event.originalEvent.metaKey);
},
enabled: true,
});
}
commands.push({
content: pathToSvg(icons.ag_hide),
select: function (ele) {
mode.removeNodes(ele);
},
enabled: true,
}, {
content: pathToSvg(icons.ag_fit),
select: function (ele) {
mode.updateActiveNode(ele, true);
},
enabled: true, // whether the command is selectable
});
if (n.hasClass(CLASS_PINNED)) {
commands.push({
content: pathToSvg(icons.ag_unlock),
select: function (ele) {
mode.unpin(ele);
},
enabled: true, // whether the command is selectable
});
}
else {
commands.push({
content: pathToSvg(icons.ag_lock),
select: function (ele) {
mode.pin(ele);
},
enabled: true, // whether the command is selectable
});
}
if (n.hasClass(CLASS_EXPANDED)) {
commands.push({
content: pathToSvg(icons.ag_collapse),
select: function (ele) {
mode.removeNodes(ele);
},
enabled: true, // whether the command is selectable
});
}
else {
commands.push({
content: pathToSvg(icons.ag_expand),
select: function (ele) {
view.expand(ele);
},
enabled: true, // whether the command is selectable
});
}
return commands;
},
fillColor: `${backgroundColor}`,
activeFillColor: `${selectColor}`,
activePadding: 20,
indicatorSize: 24,
separatorWidth: 3,
spotlightPadding: 0,
adaptativeNodeSpotlightRadius: true,
// minSpotlightRadius: 12, // the minimum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background)
// maxSpotlightRadius: 28, // the maximum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background)
openMenuEvents: 'taphold',
itemColor: `${textColor}`,
itemTextShadowColor: 'transparent',
zIndex: 9999,
atMouse: false,
outsideMenuCancel: 15,
};
// @ts-ignore
this.menu = this.viz.cxtmenu(defaults);
this.registerCyEvent('tap', 'node', async (e) => {
if (!this.view.settings.openWithShift || e.originalEvent.shiftKey) {
const file = await this.view.plugin.openFileFromNode(e.target, e.originalEvent.metaKey);
if (file) {
this.updateActiveNode(e.target, this.view.settings.autoZoom);
}
}
});
this.registerCyEvent('taphold', 'node', (e) => {
if (this.view.destroyHover) {
this.view.destroyHover();
}
});
this.registerCyEvent('dblclick', 'node', async (e) => {
await this.view.expand(e.target);
});
this.registerCyEvent('tapselect tapunselect boxselect', null, (e) => {
this.view.trigger('selectChange');
});
// Register on file open event
this.registerEvent(this.view.workspace.on('file-open', async (file) => {
if (!this.view.settings.autoAddNodes) {
return;
}
if (file && this.view.settings.autoAddNodes) {
const name = file.name;
const id = new VizId(name, 'core');
let followImmediate = true;
if (this.viz.$id(id.toId()).length === 0) {
const node = await this.view.datastores.coreStore.get(id, this.view);
this.viz.startBatch();
// Make sure it doesn't immediately get removed
this.viz.add(node).addClass(CLASS_PROTECTED);
const edges = await this.view.buildEdges(this.viz.$id(id.toId()));
this.viz.add(edges);
this.view.onGraphChanged(false, true);
this.viz.endBatch();
followImmediate = false;
}
const node = this.viz.$id(id.toId());
node.addClass(CLASS_PROTECTED);
this.updateActiveNode(node, followImmediate && this.view.settings.autoZoom);
}
}));
this.registerEvent(this.view.on('expand', (expanded) => {
this.updateActiveNode(expanded, false);
}));
// TODO: What to do with this?
this.registerEvent(this.view.on('elementsChange', () => {
if (this.recursionPreventer) {
return;
}
// Remove nodes that are not protected and not connected to expanded nodes
this.viz.nodes()
.difference(this.viz.nodes(`.${CLASS_PROTECTED}`))
.filter((ele) => {
// If none in the closed neighborhood are expanded.
// Note that the closed neighborhood includes the current note.
return ele.closedNeighborhood(`node.${CLASS_PROTECTED}`).length === 0;
})
.remove();
this.updateActiveNode(this.viz.nodes(`.${CLASS_ACTIVE_NODE}`), false);
this.recursionPreventer = true;
this.view.onGraphChanged();
this.recursionPreventer = false;
}));
this.windowEvent = async (evt) => {
if (!(document.activeElement === this.view.element)) {
return;
}
if (evt.key === 'e') {
await this.expandSelection();
}
else if (evt.key === 'h' || evt.key === 'Backspace') {
this.removeSelection();
}
else if (evt.key === 'i') {
this.invertSelection();
}
else if (evt.key === 'a') {
this.selectAll();
}
else if (evt.key === 'n') {
this.selectNeighboursOfSelected();
}
else if (evt.key === 'p') {
this.pinSelection();
}
else if (evt.key === 'u') {
this.unpinSelection();
}
else if (evt.key === 'c') {
this.collapseSelection();
}
else if (evt.key === 'v') {
this.view.fitView();
}
else if (evt.key === 'f') {
this.view.fitView(this.viz.nodes(':selected'));
}
};
// // Register keypress event
// Note: Registered on window because it wouldn't fire on the div...
document.on('keydown', '.cy-content', this.windowEvent, true);
}
registerCyEvent(name, selector, callback) {
this.events.push({ eventName: name, selector: selector, event: callback });
if (selector) {
this.viz.on(name, selector, callback);
}
else {
this.viz.on(name, callback);
}
}
onunload() {
for (const listener of this.events) {
if (listener.selector) {
this.viz.off(listener.eventName, listener.selector, listener.event);
}
else {
this.viz.off(listener.eventName, listener.event);
}
}
this.events = [];
document.off('keydown', '.cy-content', this.windowEvent, true);
if (this.toolbar) {
this.toolbar.$destroy();
}
if (this.menu) {
this.menu.destroy();
}
}
getName() {
return 'workspace';
}
fillMenu(menu, nodes) {
if (nodes.length > 0) {
menu.addItem((item) => {
item.setTitle('Expand selection (E)').setIcon('ag-expand')
.onClick(async (evt) => {
await this.view.expand(nodes);
});
});
menu.addItem((item) => {
item.setTitle('Collapse selection (C)').setIcon('ag-collapse')
.onClick((evt) => {
this.collapse(nodes);
});
});
menu.addItem((item) => {
item.setTitle('Hide selection (H)').setIcon('ag-hide')
.onClick((evt) => {
this.removeNodes(nodes);
});
});
menu.addItem((item) => {
item.setTitle('Select all (A)').setIcon('ag-select-all')
.onClick((evt) => {
this.selectAll();
});
});
menu.addItem((item) => {
item.setTitle('Invert selection (I)').setIcon('ag-select-inverse')
.onClick((evt) => {
this.invertSelection();
});
});
}
if (nodes.length > 0) {
menu.addItem((item) => {
item.setTitle('Select neighbors (N)').setIcon('ag-select-neighbors')
.onClick((evt) => {
this.selectNeighbourhood(nodes);
});
});
const pinned = this.view.getPinned();
if (nodes.difference(pinned).length > 0) {
menu.addItem((item) => {
item.setTitle('Pin selection (P)').setIcon('ag-lock')
.onClick((evt) => {
this.pin(nodes);
});
});
}
if (nodes.intersect(pinned).length > 0) {
menu.addItem((item) => {
item.setTitle('Unpin selection (U)').setIcon('ag-unlock')
.onClick((evt) => {
this.unpin(nodes);
});
});
}
}
}
createToolbar(element) {
this.toolbar = new Toolbar({
target: element,
props: {
viz: this.viz,
filterValue: this.view.settings.filter,
expandClick: this.expandSelection.bind(this),
fdgdClick: () => this.view.setLayout(getLayoutSetting('force-directed', this.view.settings)),
concentricClick: () => this.view.setLayout(getLayoutSetting('circle')),
gridClick: () => this.view.setLayout(getLayoutSetting('grid')),
hierarchyClick: () => this.view.setLayout(getLayoutSetting('hierarchy')),
collapseClick: this.collapseSelection.bind(this),
hideClick: this.removeSelection.bind(this),
selectAllClick: this.selectAll.bind(this),
selectInvertClick: this.invertSelection.bind(this),
selectNeighborClick: this.selectNeighboursOfSelected.bind(this),
lockClick: this.pinSelection.bind(this),
unlockClick: this.unpinSelection.bind(this),
fitClick: this.view.fitView.bind(this.view),
localModeClick: () => this.view.setMode('local'),
filterInput: (handler) => {
// @ts-ignore
this.view.searchFilter(handler.target.value);
this.view.restartLayout();
},
saveClick: () => {
if ('app' in this.view.plugin && 'workspaceManager' in this.view.plugin) {
// @ts-ignore
new WorkspaceModal(this.view.plugin.app, this.view.plugin.workspaceManager, this.view).open();
}
},
workspace: this.view.plugin.app.workspace,
},
});
this.view.on('selectChange', this.toolbar.onSelect.bind(this.toolbar));
this.view.on('vizReady', (viz) => {
this.toolbar.$set({ viz: viz });
this.toolbar.onSelect.bind(this.toolbar)(); //
});
}
updateActiveNode(node, followImmediate) {
this.viz.elements()
.removeClass([CLASS_CONNECTED_ACTIVE_NODE, CLASS_ACTIVE_NODE, CLASS_INACTIVE_NODE])
.difference(node.closedNeighborhood())
.addClass(CLASS_INACTIVE_NODE);
node.addClass(CLASS_ACTIVE_NODE);
const neighbourhood = node.connectedEdges()
.addClass(CLASS_CONNECTED_ACTIVE_NODE)
.connectedNodes()
.addClass(CLASS_CONNECTED_ACTIVE_NODE)
.union(node);
if (followImmediate) {
this.viz.animate({
fit: {
eles: neighbourhood,
padding: 0,
},
duration: VIEWPORT_ANIMATION_TIME,
queue: false,
});
}
this.viz.one('tap', (e) => {
e.cy.elements().removeClass([CLASS_CONNECTED_ACTIVE_NODE, CLASS_ACTIVE_NODE, CLASS_INACTIVE_NODE]);
});
}
async expandSelection() {
await this.view.expand(this.viz.nodes(':selected'));
}
collapse(nodes) {
const selectedProtected = nodes.filter(`:selected`)
.removeClass([CLASS_PROTECTED, CLASS_EXPANDED]);
selectedProtected.openNeighborhood()
.nodes()
.filter((ele) => {
// If none in the closed neighborhood are protected that aren't also selected
// (their PROTECTED flag has been removed)
return ele.closedNeighborhood(`node.${CLASS_PROTECTED}`).length === 0;
})
.remove();
// can this cause race conditions with on elementsChange?
this.recursionPreventer = true;
this.view.onGraphChanged(true, true);
this.recursionPreventer = false;
}
collapseSelection() {
this.collapse(this.viz.nodes(':selected'));
}
removeNodes(nodes) {
nodes.addClass(CLASS_HARD_FILTERED);
this.view.onGraphChanged(true, true);
this.view.trigger('hide', nodes);
this.view.trigger('selectChange');
}
removeSelection() {
this.removeNodes(this.viz.nodes(':selected'));
}
selectAll() {
this.viz.nodes().select();
this.view.trigger('selectChange');
}
invertSelection() {
this.viz.$(':selected')
.unselect()
.absoluteComplement()
.select();
this.view.trigger('selectChange');
}
selectNeighboursOfSelected() {
this.selectNeighbourhood(this.viz.nodes(':selected'));
}
selectNeighbourhood(nodes) {
// TODO: This keeps self-loops selected.
this.viz.nodes(':selected')
.unselect();
nodes.openNeighborhood()
.select();
this.view.trigger('selectChange');
}
unpin(nodes) {
const unlocked = nodes
.unlock()
.removeClass(CLASS_PINNED);
this.view.restartLayout();
this.view.trigger('unpin', unlocked);
}
unpinSelection() {
this.unpin(this.viz.nodes(':selected'));
}
pin(nodes) {
const locked = nodes
.lock()
.addClass(CLASS_PINNED);
this.view.restartLayout();
this.view.trigger('pin', locked);
}
pinSelection() {
this.pin(this.viz.nodes(':selected'));
}
}
/* src/ui/toolbar/ToolbarLocal.svelte generated by Svelte v3.45.0 */
function create_fragment$5(ctx) {
let div0;
let toolbarbutton0;
let t0;
let toolbarbutton1;
let t1;
let toolbarbutton2;
let t2;
let toolbarbutton3;
let t3;
let div1;
let toolbarbutton4;
let t4;
let toolbarbutton5;
let t5;
let div2;
let helpbutton;
let t6;
let br;
let label;
let input;
let current;
let mounted;
let dispose;
toolbarbutton0 = new ToolbarButton({
props: {
icon: icons.ag_fdgd,
onClick: /*fdgdClick*/ ctx[1],
title: "Force directed layout"
}
});
toolbarbutton1 = new ToolbarButton({
props: {
icon: icons.ag_concentric,
onClick: /*concentricClick*/ ctx[2],
title: "Circle layout"
}
});
toolbarbutton2 = new ToolbarButton({
props: {
icon: icons.ag_grid,
onClick: /*gridClick*/ ctx[3],
title: "Grid layout"
}
});
toolbarbutton3 = new ToolbarButton({
props: {
icon: icons.ag_hierarchy,
onClick: /*hierarchyClick*/ ctx[4],
title: "Hierarchical layout"
}
});
toolbarbutton4 = new ToolbarButton({
props: {
icon: icons.ag_fit,
onClick: /*fitClick*/ ctx[5],
title: "Fit view"
}
});
toolbarbutton5 = new ToolbarButton({
props: {
icon: icons.ag_workspace,
onClick: /*workspaceModeClick*/ ctx[6],
title: "Workspace mode"
}
});
helpbutton = new HelpButton({
props: { workspace: /*workspace*/ ctx[8] }
});
return {
c() {
div0 = element$1("div");
create_component(toolbarbutton0.$$.fragment);
t0 = space();
create_component(toolbarbutton1.$$.fragment);
t1 = space();
create_component(toolbarbutton2.$$.fragment);
t2 = space();
create_component(toolbarbutton3.$$.fragment);
t3 = space();
div1 = element$1("div");
create_component(toolbarbutton4.$$.fragment);
t4 = space();
create_component(toolbarbutton5.$$.fragment);
t5 = space();
div2 = element$1("div");
create_component(helpbutton.$$.fragment);
t6 = space();
br = element$1("br");
label = element$1("label");
label.textContent = "Filter: ";
input = element$1("input");
attr(div0, "class", "cy-toolbar-section");
attr(div1, "class", "cy-toolbar-section");
attr(div2, "class", "cy-toolbar-section");
attr(label, "for", "ag-filter");
attr(input, "type", "text");
attr(input, "id", "ag-filter");
attr(input, "name", "ag-filter");
input.value = /*filterValue*/ ctx[7];
},
m(target, anchor) {
insert(target, div0, anchor);
mount_component(toolbarbutton0, div0, null);
append(div0, t0);
mount_component(toolbarbutton1, div0, null);
append(div0, t1);
mount_component(toolbarbutton2, div0, null);
append(div0, t2);
mount_component(toolbarbutton3, div0, null);
insert(target, t3, anchor);
insert(target, div1, anchor);
mount_component(toolbarbutton4, div1, null);
append(div1, t4);
mount_component(toolbarbutton5, div1, null);
insert(target, t5, anchor);
insert(target, div2, anchor);
mount_component(helpbutton, div2, null);
insert(target, t6, anchor);
insert(target, br, anchor);
insert(target, label, anchor);
insert(target, input, anchor);
current = true;
if (!mounted) {
dispose = listen(input, "input", function () {
if (is_function(/*filterInput*/ ctx[0])) /*filterInput*/ ctx[0].apply(this, arguments);
});
mounted = true;
}
},
p(new_ctx, [dirty]) {
ctx = new_ctx;
const toolbarbutton0_changes = {};
if (dirty & /*fdgdClick*/ 2) toolbarbutton0_changes.onClick = /*fdgdClick*/ ctx[1];
toolbarbutton0.$set(toolbarbutton0_changes);
const toolbarbutton1_changes = {};
if (dirty & /*concentricClick*/ 4) toolbarbutton1_changes.onClick = /*concentricClick*/ ctx[2];
toolbarbutton1.$set(toolbarbutton1_changes);
const toolbarbutton2_changes = {};
if (dirty & /*gridClick*/ 8) toolbarbutton2_changes.onClick = /*gridClick*/ ctx[3];
toolbarbutton2.$set(toolbarbutton2_changes);
const toolbarbutton3_changes = {};
if (dirty & /*hierarchyClick*/ 16) toolbarbutton3_changes.onClick = /*hierarchyClick*/ ctx[4];
toolbarbutton3.$set(toolbarbutton3_changes);
const toolbarbutton4_changes = {};
if (dirty & /*fitClick*/ 32) toolbarbutton4_changes.onClick = /*fitClick*/ ctx[5];
toolbarbutton4.$set(toolbarbutton4_changes);
const toolbarbutton5_changes = {};
if (dirty & /*workspaceModeClick*/ 64) toolbarbutton5_changes.onClick = /*workspaceModeClick*/ ctx[6];
toolbarbutton5.$set(toolbarbutton5_changes);
const helpbutton_changes = {};
if (dirty & /*workspace*/ 256) helpbutton_changes.workspace = /*workspace*/ ctx[8];
helpbutton.$set(helpbutton_changes);
if (!current || dirty & /*filterValue*/ 128 && input.value !== /*filterValue*/ ctx[7]) {
input.value = /*filterValue*/ ctx[7];
}
},
i(local) {
if (current) return;
transition_in(toolbarbutton0.$$.fragment, local);
transition_in(toolbarbutton1.$$.fragment, local);
transition_in(toolbarbutton2.$$.fragment, local);
transition_in(toolbarbutton3.$$.fragment, local);
transition_in(toolbarbutton4.$$.fragment, local);
transition_in(toolbarbutton5.$$.fragment, local);
transition_in(helpbutton.$$.fragment, local);
current = true;
},
o(local) {
transition_out(toolbarbutton0.$$.fragment, local);
transition_out(toolbarbutton1.$$.fragment, local);
transition_out(toolbarbutton2.$$.fragment, local);
transition_out(toolbarbutton3.$$.fragment, local);
transition_out(toolbarbutton4.$$.fragment, local);
transition_out(toolbarbutton5.$$.fragment, local);
transition_out(helpbutton.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div0);
destroy_component(toolbarbutton0);
destroy_component(toolbarbutton1);
destroy_component(toolbarbutton2);
destroy_component(toolbarbutton3);
if (detaching) detach(t3);
if (detaching) detach(div1);
destroy_component(toolbarbutton4);
destroy_component(toolbarbutton5);
if (detaching) detach(t5);
if (detaching) detach(div2);
destroy_component(helpbutton);
if (detaching) detach(t6);
if (detaching) detach(br);
if (detaching) detach(label);
if (detaching) detach(input);
mounted = false;
dispose();
}
};
}
function instance$5($$self, $$props, $$invalidate) {
let { fdgdClick } = $$props;
let { concentricClick } = $$props;
let { gridClick } = $$props;
let { hierarchyClick } = $$props;
let { fitClick } = $$props;
let { workspaceModeClick } = $$props;
let { filterInput } = $$props;
let { filterValue } = $$props;
let { workspace } = $$props;
filterInput = obsidian.debounce(filterInput, 500, true);
$$self.$$set = $$props => {
if ('fdgdClick' in $$props) $$invalidate(1, fdgdClick = $$props.fdgdClick);
if ('concentricClick' in $$props) $$invalidate(2, concentricClick = $$props.concentricClick);
if ('gridClick' in $$props) $$invalidate(3, gridClick = $$props.gridClick);
if ('hierarchyClick' in $$props) $$invalidate(4, hierarchyClick = $$props.hierarchyClick);
if ('fitClick' in $$props) $$invalidate(5, fitClick = $$props.fitClick);
if ('workspaceModeClick' in $$props) $$invalidate(6, workspaceModeClick = $$props.workspaceModeClick);
if ('filterInput' in $$props) $$invalidate(0, filterInput = $$props.filterInput);
if ('filterValue' in $$props) $$invalidate(7, filterValue = $$props.filterValue);
if ('workspace' in $$props) $$invalidate(8, workspace = $$props.workspace);
};
return [
filterInput,
fdgdClick,
concentricClick,
gridClick,
hierarchyClick,
fitClick,
workspaceModeClick,
filterValue,
workspace
];
}
class ToolbarLocal extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$5, create_fragment$5, safe_not_equal, {
fdgdClick: 1,
concentricClick: 2,
gridClick: 3,
hierarchyClick: 4,
fitClick: 5,
workspaceModeClick: 6,
filterInput: 0,
filterValue: 7,
workspace: 8
});
}
}
class LocalMode extends obsidian.Component {
constructor(view) {
super();
this.events = [];
this.view = view;
}
onload() {
if (this.view.vizReady) {
this._onLoad();
}
else {
this.registerEvent(this.view.on('vizReady', (viz) => {
this._onLoad();
}));
}
}
_onLoad() {
this.viz = this.view.viz;
this.registerCyEvent('tap', 'node', async (e) => {
const file = await this.view.plugin.openFileFromNode(e.target, e.originalEvent.metaKey);
if (file) {
await this.onOpenFile(file);
}
});
// Register on file open event
this.registerEvent(this.view.workspace.on('file-open', async (file) => {
if (file) {
await this.onOpenFile(file);
}
}));
}
async onOpenFile(file) {
if (!this.view.settings.autoAddNodes) {
return;
}
const id = new VizId(file.name, 'core');
let node;
this.viz.startBatch();
if (this.viz.$id(id.toId()).length === 0) {
const nodeDef = await this.view.datastores.coreStore.get(id, this.view);
node = this.viz.add(nodeDef);
}
else {
node = this.viz.$id(id.toId());
}
await this.view.expand(node, false);
node.addClass(CLASS_ACTIVE_NODE);
this.viz.nodes()
.difference(node.closedNeighborhood())
.remove();
this.view.onGraphChanged(false);
this.updateActiveFile(node);
this.viz.endBatch();
}
registerCyEvent(name, selector, callback) {
this.events.push({ eventName: name, selector: selector, event: callback });
if (selector) {
this.viz.on(name, selector, callback);
}
else {
this.viz.on(name, callback);
}
}
onunload() {
for (const listener of this.events) {
if (listener.selector) {
this.viz.off(listener.eventName, listener.selector, listener.event);
}
else {
this.viz.off(listener.eventName, listener.event);
}
}
this.events = [];
this.toolbar.$destroy();
}
getName() {
return 'local';
}
fillMenu(menu, nodes) {
}
createToolbar(element) {
const view = this.view;
this.toolbar = new ToolbarLocal({
target: element,
props: {
viz: this.viz,
fitClick: this.view.fitView.bind(view),
fdgdClick: () => this.view.setLayout(getLayoutSetting('force-directed', this.view.settings)),
concentricClick: () => this.view.setLayout(getLayoutSetting('circle')),
gridClick: () => this.view.setLayout(getLayoutSetting('grid')),
hierarchyClick: () => this.view.setLayout(getLayoutSetting('hierarchy')),
workspaceModeClick: () => view.setMode('workspace'),
filterInput: (handler) => {
// @ts-ignore
this.view.searchFilter(handler.target.value);
this.view.restartLayout();
},
filterValue: this.view.settings.filter,
workspace: this.view.plugin.app.workspace,
},
});
// this.view.on('vizReady', (viz) => {
// tb.$set({viz: viz});
// tb.onSelect.bind(tb)();
// });
}
updateActiveFile(node) {
this.viz.elements()
.removeClass([CLASS_CONNECTED_ACTIVE_NODE, CLASS_ACTIVE_NODE, CLASS_INACTIVE_NODE])
.difference(node.closedNeighborhood())
.addClass(CLASS_INACTIVE_NODE);
node.addClass(CLASS_ACTIVE_NODE);
node.connectedEdges()
.addClass(CLASS_CONNECTED_ACTIVE_NODE)
.connectedNodes()
.addClass(CLASS_CONNECTED_ACTIVE_NODE)
.union(node);
// this.viz.one('tap', (e) => {
// e.cy.elements().removeClass(['connected-active-file', 'active-file', 'inactive-file']);
// });
}
}
/*!
* search-query-parser.js
* Copyright(c) 2014-2019
* MIT Licensed
*/
var searchQueryParser$1 = createCommonjsModule(function (module, exports) {
exports.parse = function (string, options) {
// Set a default options object when none is provided
if (!options) {
options = {offsets: true};
} else {
// If options offsets was't passed, set it to true
options.offsets = (typeof options.offsets === 'undefined' ? true : options.offsets);
}
if (!string) {
string = '';
}
// When a simple string, return it
if (-1 === string.indexOf(':') && !options.tokenize) {
return string;
}
// When no keywords or ranges set, treat as a simple string
else if (!options.keywords && !options.ranges && !options.tokenize){
return string;
}
// Otherwise parse the advanced query syntax
else {
// Our object to store the query object
var query = {text: []};
// When offsets is true, create their array
if (options.offsets) {
query.offsets = [];
}
var exclusion = {};
var terms = [];
// Get a list of search terms respecting single and double quotes
var regex = /(\S+:'(?:[^'\\]|\\.)*')|(\S+:"(?:[^"\\]|\\.)*")|(-?"(?:[^"\\]|\\.)*")|(-?'(?:[^'\\]|\\.)*')|\S+|\S+:\S+/g;
var match;
while ((match = regex.exec(string)) !== null) {
var term = match[0];
var sepIndex = term.indexOf(':');
if (sepIndex !== -1) {
term.split(':');
var key = term.slice(0, sepIndex),
val = term.slice(sepIndex + 1);
// Strip surrounding quotes
val = val.replace(/^\"|\"$|^\'|\'$/g, '');
// Strip backslashes respecting escapes
val = (val + '').replace(/\\(.?)/g, function (s, n1) {
switch (n1) {
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
}
});
terms.push({
keyword: key,
value: val,
offsetStart: match.index,
offsetEnd: match.index + term.length
});
} else {
var isExcludedTerm = false;
if (term[0] === '-') {
isExcludedTerm = true;
term = term.slice(1);
}
// Strip surrounding quotes
term = term.replace(/^\"|\"$|^\'|\'$/g, '');
// Strip backslashes respecting escapes
term = (term + '').replace(/\\(.?)/g, function (s, n1) {
switch (n1) {
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
}
});
if (isExcludedTerm) {
if (exclusion['text']) {
if (exclusion['text'] instanceof Array) {
exclusion['text'].push(term);
} else {
exclusion['text'] = [exclusion['text']];
exclusion['text'].push(term);
}
} else {
// First time seeing an excluded text term
exclusion['text'] = term;
}
} else {
terms.push({
text: term,
offsetStart: match.index,
offsetEnd: match.index + term.length
});
}
}
}
// Reverse to ensure proper order when pop()'ing.
terms.reverse();
// For each search term
var term;
while (term = terms.pop()) {
// When just a simple term
if (term.text) {
// We add it as pure text
query.text.push(term.text);
// When offsets is true, push a new offset
if (options.offsets) {
query.offsets.push(term);
}
}
// We got an advanced search syntax
else {
var key = term.keyword;
// Check if the key is a registered keyword
options.keywords = options.keywords || [];
var isKeyword = false;
var isExclusion = false;
if (!/^-/.test(key)) {
isKeyword = !(-1 === options.keywords.indexOf(key));
} else if (key[0] === '-') {
var _key = key.slice(1);
isKeyword = !(-1 === options.keywords.indexOf(_key));
if (isKeyword) {
key = _key;
isExclusion = true;
}
}
// Check if the key is a registered range
options.ranges = options.ranges || [];
var isRange = !(-1 === options.ranges.indexOf(key));
// When the key matches a keyword
if (isKeyword) {
// When offsets is true, push a new offset
if (options.offsets) {
query.offsets.push({
keyword: key,
value: term.value,
offsetStart: isExclusion ? term.offsetStart + 1 : term.offsetStart,
offsetEnd: term.offsetEnd
});
}
var value = term.value;
// When value is a thing
if (value.length) {
// Get an array of values when several are there
var values = value.split(',');
if (isExclusion) {
if (exclusion[key]) {
// ...many times...
if (exclusion[key] instanceof Array) {
// ...and got several values this time...
if (values.length > 1) {
// ... concatenate both arrays.
exclusion[key] = exclusion[key].concat(values);
}
else {
// ... append the current single value.
exclusion[key].push(value);
}
}
// We saw that keyword only once before
else {
// Put both the current value and the new
// value in an array
exclusion[key] = [exclusion[key]];
exclusion[key].push(value);
}
}
// First time we see that keyword
else {
// ...and got several values this time...
if (values.length > 1) {
// ...add all values seen.
exclusion[key] = values;
}
// Got only a single value this time
else {
// Record its value as a string
if (options.alwaysArray) {
// ...but we always return an array if option alwaysArray is true
exclusion[key] = [value];
} else {
// Record its value as a string
exclusion[key] = value;
}
}
}
} else {
// If we already have seen that keyword...
if (query[key]) {
// ...many times...
if (query[key] instanceof Array) {
// ...and got several values this time...
if (values.length > 1) {
// ... concatenate both arrays.
query[key] = query[key].concat(values);
}
else {
// ... append the current single value.
query[key].push(value);
}
}
// We saw that keyword only once before
else {
// Put both the current value and the new
// value in an array
query[key] = [query[key]];
query[key].push(value);
}
}
// First time we see that keyword
else {
// ...and got several values this time...
if (values.length > 1) {
// ...add all values seen.
query[key] = values;
}
// Got only a single value this time
else {
if (options.alwaysArray) {
// ...but we always return an array if option alwaysArray is true
query[key] = [value];
} else {
// Record its value as a string
query[key] = value;
}
}
}
}
}
}
// The key allows a range
else if (isRange) {
// When offsets is true, push a new offset
if (options.offsets) {
query.offsets.push(term);
}
var value = term.value;
// Range are separated with a dash
var rangeValues = value.split('-');
// When both end of the range are specified
// keyword:XXXX-YYYY
query[key] = {};
if (2 === rangeValues.length) {
query[key].from = rangeValues[0];
query[key].to = rangeValues[1];
}
// When pairs of ranges are specified
// keyword:XXXX-YYYY,AAAA-BBBB
else if (!rangeValues.length % 2) ;
// When only getting a single value,
// or an odd number of values
else {
query[key].from = value;
}
}
else {
// We add it as pure text
var text = term.keyword + ':' + term.value;
query.text.push(text);
// When offsets is true, push a new offset
if (options.offsets) {
query.offsets.push({
text: text,
offsetStart: term.offsetStart,
offsetEnd: term.offsetEnd
});
}
}
}
}
// Concatenate all text terms if any
if (query.text.length) {
if (!options.tokenize) {
query.text = query.text.join(' ').trim();
}
}
// Just remove the attribute text when it's empty
else {
delete query.text;
}
// Return forged query object
query.exclude = exclusion;
return query;
}
};
exports.stringify = function (queryObject, options, prefix) {
// Set a default options object when none is provided
if (!options) {
options = {offsets: true};
}
// If the query object is falsy we can just return an empty string
if (!queryObject) {
return '';
}
// If the query object is already a string, we can return it immediately
if (typeof queryObject === 'string') {
return queryObject;
}
// If the query object is an array, we can return it concatenated with a space
if (Array.isArray(queryObject)) {
return queryObject.join(' ');
}
// If the query object does not have any keys, we can return an empty string
if (!Object.keys(queryObject).length) {
return '';
}
// If the query object contains only text which is a string, we can return it immediately
if (Object.keys(queryObject).length === 3 && !!queryObject.text && !!queryObject.offsets && !!queryObject.exclude && typeof queryObject.text === 'string') {
return queryObject.text;
}
// We will use a prefix for the exclude syntax later one
if (!prefix) {
prefix = '';
}
// Helpers
var addQuotes = function (string) {
return string.indexOf(' ') > - 1 ? JSON.stringify(string) : string;
};
var addPrefix = function (string) {
return prefix + string;
};
// Keep track of all single parts in this array
var parts = [];
// Text
if (queryObject.text) {
var value = [];
if (typeof queryObject.text === 'string') {
value.push(queryObject.text);
} else {
value.push.apply(value, queryObject.text);
}
if (value.length > 0) {
parts.push(value.map(addQuotes).map(addPrefix).join(' '));
}
}
// Keywords
if (options.keywords) {
options.keywords.forEach(function (keyword) {
if (!queryObject[keyword]) {
return
}
var value = [];
if (typeof queryObject[keyword] === 'string') {
value.push(queryObject[keyword]);
} else {
value.push.apply(value, queryObject[keyword]);
}
if (value.length > 0) {
parts.push(addPrefix(keyword + ':' + value.map(addQuotes).join(',')));
}
});
}
// Ranges
if (options.ranges) {
options.ranges.forEach(function (range) {
if (!queryObject[range]) {
return
}
var value = queryObject[range].from;
var to = queryObject[range].to;
if (to) {
value = value + '-' + to;
}
if (value) {
parts.push(addPrefix(range + ':' + value));
}
});
}
// Exclude
if (queryObject.exclude) {
if (Object.keys(queryObject.exclude).length > 0) {
parts.push(exports.stringify(queryObject.exclude, options, '-'));
}
}
return parts.join(' ');
};
});
var searchQueryParser = searchQueryParser$1;
const _containsSelector = function (attribute, filters, op = '*=') {
if (typeof (filters) === 'string' || filters instanceof String) {
return [`[${attribute} ${op} '${filters}']`];
}
return filters.map((s) => `[${attribute} ${op} '${s}']`);
};
const _tagSelector = function (tag) {
if (typeof (tag) === 'string' || tag instanceof String) {
if (tag.length > 0 && tag[0] === '#') {
// @ts-ignore
return [`.tag-${tag.slice(1).replace('/', '-')}`];
}
return [];
}
return tag.map((t) => {
if (t.length > 0 && t[0] === '#') {
return `.tag-${t.slice(1).replace('/', '-')}`;
}
return '';
});
};
const _classSelector = function (clazz) {
if (typeof (clazz) === 'string' || clazz instanceof String) {
return [`.${clazz}`];
}
return clazz.map((c) => `.${c}`);
};
const literal = function (atomicQuery, key) {
switch (key) {
case 'exclude': return [];
case 'content':
case 'ignore-case':
case 'text': return _containsSelector('content', atomicQuery[key], '@*=');
case 'match-case':
return _containsSelector('content', atomicQuery[key], '*=');
case 'file': return _containsSelector('name', atomicQuery[key]);
case 'name': return _containsSelector('name', atomicQuery[key], '@*=');
case 'tag': return _tagSelector(atomicQuery[key]);
case 'class': return _classSelector(atomicQuery[key]);
case 'raw': return [atomicQuery[key]];
default: return _containsSelector(key, atomicQuery[key]);
}
};
const _parseAtomicQuery = function (query, nodes) {
const keys = new Set();
nodes.forEach((node) => {
Object.keys(node.data()).forEach((key) => keys.add(key));
});
const keywords = ['file', 'tag', 'raw', 'match-case', 'ignore-case', 'class'];
keywords.push(...keys);
const options = {
keywords: keywords,
tokenize: true,
offsets: false,
};
const parsedQuery = searchQueryParser.parse(query, options);
let selector = 'node';
for (const key of Object.keys(parsedQuery)) {
selector += literal(parsedQuery, key).join();
}
let filteredNodes = nodes.filter(selector);
if (parsedQuery.exclude) {
for (const key of Object.keys(parsedQuery.exclude)) {
for (const query of literal(parsedQuery.exclude, key)) {
const selector = 'node' + query;
filteredNodes = filteredNodes.not(selector);
}
}
}
return filteredNodes;
};
const _parseConjuncts = function (query, toFilter) {
const conjuncts = [];
const negated = [];
let nesting = 0;
let startBrace = -1;
let lastEndBrace = -1;
for (let i = 0; i < query.length; i++) {
if (query[i] === '(') {
if (nesting === 0) {
startBrace = i;
const betweenBraces = query.slice(lastEndBrace + 1, i > 0 ? (query[i - 1] === '-' ? i - 1 : i) : i);
if (betweenBraces.trim().length > 0) {
negated.push(false);
conjuncts.push(betweenBraces);
}
}
nesting += 1;
}
else if (query[i] === ')') {
nesting -= 1;
if (nesting === 0) {
lastEndBrace = i;
negated.push(startBrace > 0 ? query[startBrace - 1] === '-' : false);
conjuncts.push(query.slice(startBrace + 1, lastEndBrace));
}
}
else if (i === query.length - 1) {
const betweenBraces = query.slice(lastEndBrace + 1);
if (betweenBraces.trim().length > 0) {
negated.push(false);
conjuncts.push(betweenBraces);
}
}
}
let coll = toFilter;
for (let i = 0; i < conjuncts.length; i++) {
const recFiltered = _parseDisjuncts(conjuncts[i], coll, query);
if (negated[i]) {
coll = coll.difference(recFiltered);
}
else {
coll = coll.intersection(recFiltered);
}
}
return coll;
};
const _parseDisjuncts = function (query, toFilter, lastDisjunct) {
if (lastDisjunct === query) {
return _parseAtomicQuery(query, toFilter);
}
const disjuncts = [];
let lastEnd = 0;
let nesting = 0;
for (let i = 0; i < query.length; i++) {
if (query[i] === '(') {
nesting += 1;
}
else if (query[i] === ')') {
nesting -= 1;
}
else if (nesting === 0 && query[i] === 'O' &&
i + 1 < query.length && query[i + 1] === 'R') {
disjuncts.push(query.slice(lastEnd, i));
lastEnd = i + 2;
}
}
if (lastEnd < query.length) {
disjuncts.push(query.slice(lastEnd));
}
return disjuncts.reduce((acc, s) =>
// Performance optimization: Use toFilter - acc to not consider elements that are already matched
acc.union(_parseConjuncts(s, toFilter.difference(acc))), cytoscape_cjs().collection());
};
const filter$1 = function (query, nodes) {
return _parseDisjuncts(query, nodes, '');
};
let VIEW_COUNTER = 0;
class Juggl extends obsidian.Component {
constructor(element, plugin, dataStores, settings, initialNodes) {
super();
this.rebuildRelations = true;
this.selectName = undefined;
this.hoverTimeout = {};
this.vizReady = false;
this.destroyHover = null;
this.element = element;
this.settings = settings;
this.workspace = plugin.app.workspace;
this.initialNodes = initialNodes;
this.vault = plugin.app.vault;
this.plugin = plugin;
this.datastores = dataStores;
this.events = new obsidian.Events();
if (this.settings.mode === 'local') {
this.mode = new LocalMode(this);
}
else if (this.settings.mode === 'workspace') {
this.mode = new WorkspaceMode(this);
}
this.addChild(this.mode);
this.debouncedRestartLayout = obsidian.debounce(this.restartLayout, DEBOUNCE_LAYOUT, true);
}
async onload() {
this.element.addClass('cy-content');
// Ensure the canvas fits the whole container
this.element.setAttr('style', 'padding: 0');
this.element.setAttr('tabindex', 0);
if (this.settings.toolbar) {
const toolbarDiv = document.createElement('div');
toolbarDiv.addClass('cy-toolbar');
this.element.appendChild(toolbarDiv);
this.mode.createToolbar(toolbarDiv);
}
const div = document.createElement('div');
div.id = 'cy' + VIEW_COUNTER;
this.element.appendChild(div);
div.setAttr('style', `height: ${this.settings.height}; width:${this.settings.width}`);
div.setAttr('tabindex', '0');
let nodes;
let idsInitial = null;
if (this.initialNodes) {
idsInitial = this.initialNodes.map((s) => new VizId(s, this.datastores.coreStore.storeId()));
if (this.settings.expandInitial) {
nodes = await this.neighbourhood(idsInitial);
}
else {
nodes = await Promise.all(idsInitial.map((id) => this.datastores.coreStore.get(id, this)));
}
// Filter nulls
nodes = nodes.filter((n) => n);
this.viz = cytoscape_cjs({
container: div,
elements: nodes,
minZoom: 0.3,
maxZoom: 10,
wheelSensitivity: this.settings.zoomSpeed,
});
}
else {
this.viz = cytoscape_cjs({
container: div,
elements: [{ data: { id: 'a' } }, { data: { id: 'b' } }],
minZoom: 0.3,
maxZoom: 10,
wheelSensitivity: this.settings.zoomSpeed,
});
}
this.viz.dblclick();
if (this.settings.navigator) {
const navDiv = document.createElement('div');
navDiv.id = 'cynav' + VIEW_COUNTER;
div.children[0].appendChild(navDiv);
navDiv.addClass('cy-navigator');
// @ts-ignore
this.viz.navigator({
container: '#cynav' + VIEW_COUNTER,
viewLiveFramerate: 0,
thumbnailEventFramerate: 10,
thumbnailLiveFramerate: false,
dblClickDelay: 200,
removeCustomContainer: true,
rerenderDelay: 100, // ms to throttle rerender updates to the panzoom for performance
});
}
VIEW_COUNTER += 1;
if (idsInitial) {
for (const id of idsInitial) {
const initialNode = this.viz.$id(id.toId());
if (this.settings.expandInitial) {
initialNode.addClass(CLASS_EXPANDED);
}
initialNode.addClass(CLASS_PROTECTED);
}
const nodez = this.viz.nodes();
const edges = await this.buildEdges(nodez);
this.viz.add(edges);
this.onGraphChanged(true);
}
await this.updateStylesheet();
// Shouldn'' this just call restartLayout?
if (idsInitial) {
this.restartLayout();
}
const view = this;
this.viz.on('tap boxselect', async (e) => {
// @ts-ignore
this.element.focus();
});
this.viz.on('tap', 'node', async (e) => {
const id = VizId.fromNode(e.target);
if (!(id.storeId === 'core')) {
return;
}
// TODO THIS SHOULD BE MOVED TO LOCAL MODE!
});
this.viz.on('tap', 'edge', async (e) => {
// todo: move to correct spot in the file.
});
this.viz.on('mouseover', 'node', async (e) => {
e.target.unlock();
const node = e.target;
e.cy.elements()
.difference(node.closedNeighborhood())
.addClass(CLASS_UNHOVER);
node.addClass(CLASS_HOVER)
.connectedEdges()
.addClass(CLASS_CONNECTED_HOVER)
.connectedNodes()
.addClass(CLASS_CONNECTED_HOVER);
const id = VizId.fromNode(e.target);
if (id.storeId === 'core') {
const file = this.plugin.metadata.getFirstLinkpathDest(id.id, '');
if (file && file.extension === 'md' && (e.originalEvent.metaKey || !this.settings.metaKeyHover)) {
const content = await view.vault.cachedRead(file);
this.hoverTimeout[e.target.id()] = setTimeout(async () => await this.popover(content, file.path, e.target, 'advanced-graph-preview-node'), 400);
}
}
});
this.viz.on('mouseover', 'edge', async (e) => {
const edge = e.target;
if (this.settings.hoverEdges) {
e.cy.elements()
.difference(edge.connectedNodes().union(edge))
.addClass(CLASS_UNHOVER);
edge.addClass('hover')
.connectedNodes()
.addClass(CLASS_CONNECTED_HOVER);
}
if ('context' in edge.data() && (e.originalEvent.metaKey || !this.settings.metaKeyHover)) { // && e.originalEvent.metaKey) {
// TODO resolve SourcePath, can be done using the source file.
this.hoverTimeout[e.target.id()] = setTimeout(async () =>
// @ts-ignore
await this.popover(edge.data()['context'], '', edge, 'juggl-preview-edge'), 800);
}
});
this.viz.on('mouseout', (e) => {
if (e.target === e.cy) {
return;
}
const id = e.target.id();
if (id in this.hoverTimeout) {
clearTimeout(this.hoverTimeout[id]);
this.hoverTimeout[id] = undefined;
}
e.cy.elements().removeClass([CLASS_HOVER, CLASS_UNHOVER, CLASS_CONNECTED_HOVER]);
if (e.target.hasClass(CLASS_PINNED)) {
e.target.lock();
}
});
this.viz.on('grab', (e) => {
if (this.activeLayout) {
this.activeLayout.stop();
}
});
this.viz.on('dragfree', (e) => {
if (this.activeLayout) {
this.activeLayout.stop();
}
// this.activeLayout = this.viz.layout(this.colaLayout()).start();
this.activeLayout.start();
const node = e.target;
node.lock();
this.activeLayout.one('layoutstop', (e) => {
if (!node.hasClass(CLASS_PINNED)) {
node.unlock();
}
});
});
this.viz.on('cxttap', (e) => {
// Thanks Liam for sharing how to do context menus
const fileMenu = new obsidian.Menu(this.plugin.app); // Creates empty file menu
if (!(e.target === this.viz) && e.target.group() === 'nodes') {
const id = VizId.fromNode(e.target);
e.target.select();
if (id.storeId === 'core') {
const file = this.plugin.app.metadataCache.getFirstLinkpathDest(id.id, '');
if (!(file === undefined)) {
// hook for plugins to populate menu with "file-aware" menu items
this.plugin.app.workspace.trigger('file-menu', fileMenu, file, 'my-context-menu', null);
}
}
}
this.mode.fillMenu(fileMenu, this.viz.nodes(':selected'));
fileMenu.showAtPosition({ x: e.originalEvent.x, y: e.originalEvent.y });
});
this.viz.on('layoutstop', obsidian.debounce((e) => {
if (!this.settings.autoZoom) {
return;
}
let fitNodes;
const activeFile = this.viz.nodes(`.${CLASS_ACTIVE_NODE}`);
if (activeFile.length > 0) {
fitNodes = activeFile.closedNeighborhood();
}
else {
fitNodes = this.viz.nodes();
}
e.cy.animate({
fit: {
eles: fitNodes,
padding: 0,
},
duration: VIEWPORT_ANIMATION_TIME,
queue: false,
});
}, DEBOUNCE_FOLLOW, true));
this.vizReady = true;
this.trigger('vizReady', this.viz);
console.log('Visualization ready');
}
async popover(mdContent, sourcePath, target, styleClass) {
const newDiv = document.createElement('div');
newDiv.addClasses(['popover', 'hover-popover', 'is-loaded', 'juggl-hover']);
const mdEmbedDiv = document.createElement('div');
mdEmbedDiv.addClasses(['markdown-embed', styleClass]);
newDiv.appendChild(mdEmbedDiv);
const mdEmbedContentDiv = document.createElement('div');
mdEmbedContentDiv.addClasses(['markdown-embed-content']);
mdEmbedDiv.appendChild(mdEmbedContentDiv);
const mdPreviewView = document.createElement('div');
mdPreviewView.addClasses(['markdown-preview-view']);
mdEmbedContentDiv.appendChild(mdPreviewView);
const mdPreviewSection = document.createElement('div');
mdPreviewSection.addClasses(['markdown-preview-sizer', 'markdown-preview-section']);
mdPreviewView.appendChild(mdPreviewSection);
await obsidian.MarkdownRenderer.renderMarkdown(mdContent, mdPreviewSection, sourcePath, null);
document.body.appendChild(newDiv);
// @ts-ignore
const popper = target.popper({
content: () => {
return newDiv;
},
popper: {
placement: 'top',
}, // my popper options here
});
const updatePopper = function () {
popper.update();
};
target.on('position', updatePopper);
this.viz.on('pan zoom resize', updatePopper);
newDiv.addEventListener('mouseenter', (e) => {
newDiv.addClass('popover-hovered');
});
this.destroyHover = () => {
popper.destroy();
newDiv.remove();
this.destroyHover = null;
};
newDiv.addEventListener('mouseleave', this.destroyHover);
const destroyHover = this.destroyHover;
this.viz.one('mouseout', (e) => {
setTimeout(function () {
if (!newDiv.hasClass('popover-hovered')) {
destroyHover();
}
}, 300);
});
}
async neighbourhood(toExpand) {
const nodes = [];
for (const store of this.datastores.dataStores) {
nodes.push(...await store.getNeighbourhood(toExpand, this));
}
return nodes;
}
async buildEdges(newNodes) {
const edges = [];
for (const store of this.datastores.dataStores) {
edges.push(...await store.connectNodes(this.viz.nodes(), newNodes, this));
}
return edges;
}
async expand(toExpand, batch = true, triggerGraphChanged = true) {
if (toExpand.length === 0) {
return null;
}
if (batch) {
this.viz.startBatch();
}
toExpand.addClass(CLASS_EXPANDED);
toExpand.addClass(CLASS_PROTECTED);
// Currently returns the edges merged into the graph, not the full neighborhood
const expandedIds = toExpand.map((n) => VizId.fromNode(n));
const neighbourhood = await this.neighbourhood(expandedIds);
this.mergeToGraph(neighbourhood, false, false);
const nodes = this.viz.collection();
neighbourhood.forEach((n) => {
nodes.merge(this.viz.$id(n.data.id));
});
const edges = await this.buildEdges(nodes);
const edgesInGraph = this.mergeToGraph(edges, false, triggerGraphChanged);
if (batch) {
this.viz.endBatch();
}
this.trigger('expand', toExpand);
return edgesInGraph;
}
async updateStylesheet() {
const sheet = new GraphStyleSheet(this.plugin);
this.trigger('stylesheet', sheet);
const sSheet = await sheet.getStylesheet(this);
this.viz.style(sSheet);
}
onunload() {
}
removeNodes(nodes) {
// Only call this method if the node is forcefully removed from the graph, not when the node no longer exists
// on the back-end. This is because of how it handles expanded.
// Remove as expanded if a neighbour is removed from the graph.
let removed = null;
this.viz.batch(() => {
this.getExpanded()
.intersection(nodes.neighborhood())
.removeClass('expanded');
removed = nodes.remove();
this.onGraphChanged(false, true);
});
return removed;
}
fitView(nodes) {
if (nodes) {
this.viz.fit(nodes);
}
else {
this.viz.fit();
}
}
// getInQuery(nodes: IdType[]): string {
// let query = 'IN [';
// let first = true;
// for (const id of nodes) {
// // @ts-ignore
// const title = this.findNodeRaw(id).properties['name'] as string;
// if (!first) {
// query += ', ';
// }
// query += '"' + title + '"';
// first = false;
// }
// query += ']';
// return query;
// }
restartLayout() {
if (this.activeLayout) {
this.activeLayout.stop();
}
const layoutSettings = parseLayoutSettings(this.settings);
this.activeLayout = layoutSettings.startLayout(this);
}
setLayout(settings) {
this.settings.layout = settings.options;
this.restartLayout();
}
mergeToGraph(elements, batch = true, triggerGraphChanged = true) {
if (batch) {
this.viz.startBatch();
}
const addElements = [];
const mergedCollection = this.viz.collection();
elements.forEach((n) => {
if (this.viz.$id(n.data.id).length === 0) {
addElements.push(n);
}
else {
const gElement = this.viz.$id(n.data.id);
const extraClasses = CLASSES.filter((clazz) => gElement.hasClass(clazz));
// @ts-ignore
extraClasses.push(...gElement.classes().filter((el) => el.startsWith('global-') || el.startsWith('local-')));
// TODO: Maybe make an event here
gElement.classes(n.classes);
for (const clazz of extraClasses) {
gElement.addClass(clazz);
}
gElement.data(n.data);
mergedCollection.merge(gElement);
}
});
const addCollection = this.viz.add(addElements);
mergedCollection.merge(addCollection);
if (triggerGraphChanged) {
this.onGraphChanged(false);
}
if (batch) {
this.viz.endBatch();
}
return { merged: mergedCollection, added: addCollection };
}
assignStyleGroups() {
const viz = this.viz;
const _assignGroups = function (groups, prefix) {
for (const [index, group] of groups.entries()) {
const clazz = `${prefix}-${index}`;
viz.nodes().removeClass(clazz);
const filteredNodes = filter$1(group.filter, viz.nodes());
filteredNodes.addClass(clazz);
}
};
_assignGroups(this.settings.styleGroups, 'local');
if ('settings' in this.plugin) {
// @ts-ignore
_assignGroups(this.plugin.settings.globalStyleGroups, 'global');
}
}
onGraphChanged(batch = true, debounceLayout = false) {
if (batch) {
this.viz.startBatch();
}
this.viz.nodes().forEach((node) => {
node.data('degree', node.degree(false));
node.data('nameLength', node.data('name').length);
});
if (batch) {
this.viz.endBatch();
}
this.trigger('elementsChange');
this.searchFilter(this.settings.filter);
if (debounceLayout) {
this.debouncedRestartLayout();
}
else {
this.restartLayout();
}
this.assignStyleGroups();
}
getViz() {
return this.viz;
}
setMode(modeName) {
this.removeChild(this.mode);
if (modeName === 'local') {
this.mode = new LocalMode(this);
}
else if (modeName === 'workspace') {
this.mode = new WorkspaceMode(this);
}
this.addChild(this.mode);
if (this.settings.toolbar) {
this.mode.createToolbar(this.element.children[0]);
}
}
searchFilter(query) {
// The query here is in approximately the format of Obsidian search queries
// This is much less efficient than using selectors, so only use this if you need to parse user input.
this.viz.nodes().removeClass(CLASS_FILTERED);
const filteredNodes = filter$1(query, this.viz.nodes());
this.viz.nodes().difference(filteredNodes).addClass(CLASS_FILTERED);
this.settings.filter = query;
}
getPinned() {
return this.viz.nodes(`.${CLASS_PINNED}`);
}
getExpanded() {
return this.viz.nodes(`.${CLASS_EXPANDED}`);
}
getProtected() {
return this.viz.nodes(`.${CLASS_PROTECTED}`);
}
on(name, callback, ctx) {
return this.events.on(name, callback, ctx);
}
off(name, callback) {
this.events.off(name, callback);
}
offref(ref) {
this.events.offref(ref);
}
trigger(name, ...data) {
this.events.trigger(name, ...data);
}
tryTrigger(evt, args) {
this.events.tryTrigger(evt, args);
}
}
class ImageServer extends obsidian.Component {
constructor(plugin) {
super();
this.settings = plugin.settings;
this.plugin = plugin;
this.imgServer = null;
}
async onload() {
super.onload();
const path = require('path');
const http = require('http');
const fs = require('fs');
let dir = null;
try {
dir = path.join(this.plugin.path);
}
catch (e) {
console.log('Couldn\'t start image server. This is likely because we\'re on mobile!');
console.log(e);
return;
}
const mime = {
gif: 'image/gif',
jpg: 'image/jpeg',
png: 'image/png',
svg: 'image/svg+xml',
};
const settings = this.settings;
const vault = this.plugin.app.vault;
this.imgServer = http.createServer(function (req, res) {
const reqpath = req.url.toString().split('?')[0];
if (req.method !== 'GET') {
res.statusCode = 501;
res.setHeader('Content-Type', 'text/plain');
return res.end('Method not implemented');
}
let file = path.join(dir, decodeURI(reqpath.replace(/\/$/, '/index.html')));
file = vault.adapter.getFullPath(file);
// console.log(vault.getResourcePath(nFile as TFile));
if (settings.debug) {
console.log('entering server query');
console.log(req);
console.log(file);
}
// if (file.indexOf(dir + path.sep) !== 0) {
// res.statusCode = 403;
// res.setHeader('Content-Type', 'text/plain');
// return res.end('Forbidden');
// }
// @ts-ignore
const type = mime[path.extname(file).slice(1)];
const s = fs.createReadStream(file);
s.on('open', function () {
res.setHeader('Content-Type', type);
res.setHeader('Access-Control-Allow-Origin', '*');
s.pipe(res);
});
s.on('error', function () {
console.log('Here3');
res.setHeader('Content-Type', 'text/plain');
res.statusCode = 404;
res.end('Not found');
});
});
try {
const port = this.settings.imgServerPort;
this.imgServer.listen(port, function () {
console.log('Image server listening on http://localhost:' + port + '/');
});
}
catch (e) {
console.log(e);
new obsidian.Notice('Neo4j: Couldn\'t start image server, see console');
}
}
async onunload() {
super.onunload();
this.imgServer.close();
this.imgServer = null;
}
}
var cytoscapeNavigator = createCommonjsModule(function (module) {
(function(){
var defaults = {
container: false // can be a HTML or jQuery element or jQuery selector
, viewLiveFramerate: 0 // set false to update graph pan only on drag end; set 0 to do it instantly; set a number (frames per second) to update not more than N times per second
, dblClickDelay: 200 // milliseconds
, removeCustomContainer: true // destroy the container specified by user on plugin destroy
, rerenderDelay: 500 // ms to throttle rerender updates to the panzoom for performance
};
var debounce = (function(){
/**
* lodash 3.1.1 (Custom Build)
* Build: `lodash modern modularize exports="npm" -o ./`
* Copyright 2012-2015 The Dojo Foundation
* Based on Underscore.js 1.8.3
* Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
* Available under MIT license
*/
/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';
/* Native method references for those with the same name as other `lodash` methods. */
var nativeMax = Math.max,
nativeNow = Date.now;
/**
* Gets the number of milliseconds that have elapsed since the Unix epoch
* (1 January 1970 00:00:00 UTC).
*
* @static
* @memberOf _
* @category Date
* @example
*
* _.defer(function(stamp) {
* console.log(_.now() - stamp);
* }, _.now());
* // => logs the number of milliseconds it took for the deferred function to be invoked
*/
var now = nativeNow || function() {
return new Date().getTime();
};
/**
* Creates a debounced function that delays invoking `func` until after `wait`
* milliseconds have elapsed since the last time the debounced function was
* invoked. The debounced function comes with a `cancel` method to cancel
* delayed invocations. Provide an options object to indicate that `func`
* should be invoked on the leading and/or trailing edge of the `wait` timeout.
* Subsequent calls to the debounced function return the result of the last
* `func` invocation.
*
* **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
* on the trailing edge of the timeout only if the the debounced function is
* invoked more than once during the `wait` timeout.
*
* See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
* for details over the differences between `_.debounce` and `_.throttle`.
*
* @static
* @memberOf _
* @category Function
* @param {Function} func The function to debounce.
* @param {number} [wait=0] The number of milliseconds to delay.
* @param {Object} [options] The options object.
* @param {boolean} [options.leading=false] Specify invoking on the leading
* edge of the timeout.
* @param {number} [options.maxWait] The maximum time `func` is allowed to be
* delayed before it's invoked.
* @param {boolean} [options.trailing=true] Specify invoking on the trailing
* edge of the timeout.
* @returns {Function} Returns the new debounced function.
* @example
*
* // avoid costly calculations while the window size is in flux
* jQuery(window).on('resize', _.debounce(calculateLayout, 150));
*
* // invoke `sendMail` when the click event is fired, debouncing subsequent calls
* jQuery('#postbox').on('click', _.debounce(sendMail, 300, {
* 'leading': true,
* 'trailing': false
* }));
*
* // ensure `batchLog` is invoked once after 1 second of debounced calls
* var source = new EventSource('/stream');
* jQuery(source).on('message', _.debounce(batchLog, 250, {
* 'maxWait': 1000
* }));
*
* // cancel a debounced call
* var todoChanges = _.debounce(batchLog, 1000);
* Object.observe(models.todo, todoChanges);
*
* Object.observe(models, function(changes) {
* if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {
* todoChanges.cancel();
* }
* }, ['delete']);
*
* // ...at some point `models.todo` is changed
* models.todo.completed = true;
*
* // ...before 1 second has passed `models.todo` is deleted
* // which cancels the debounced `todoChanges` call
* delete models.todo;
*/
function debounce(func, wait, options) {
var args,
maxTimeoutId,
result,
stamp,
thisArg,
timeoutId,
trailingCall,
lastCalled = 0,
maxWait = false,
trailing = true;
if (typeof func != 'function') {
throw new TypeError(FUNC_ERROR_TEXT);
}
wait = wait < 0 ? 0 : (+wait || 0);
if (options === true) {
var leading = true;
trailing = false;
} else if (isObject(options)) {
leading = !!options.leading;
maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);
trailing = 'trailing' in options ? !!options.trailing : trailing;
}
function cancel() {
if (timeoutId) {
clearTimeout(timeoutId);
}
if (maxTimeoutId) {
clearTimeout(maxTimeoutId);
}
lastCalled = 0;
maxTimeoutId = timeoutId = trailingCall = undefined;
}
function complete(isCalled, id) {
if (id) {
clearTimeout(id);
}
maxTimeoutId = timeoutId = trailingCall = undefined;
if (isCalled) {
lastCalled = now();
result = func.apply(thisArg, args);
if (!timeoutId && !maxTimeoutId) {
args = thisArg = undefined;
}
}
}
function delayed() {
var remaining = wait - (now() - stamp);
if (remaining <= 0 || remaining > wait) {
complete(trailingCall, maxTimeoutId);
} else {
timeoutId = setTimeout(delayed, remaining);
}
}
function maxDelayed() {
complete(trailing, timeoutId);
}
function debounced() {
args = arguments;
stamp = now();
thisArg = this;
trailingCall = trailing && (timeoutId || !leading);
if (maxWait === false) {
var leadingCall = leading && !timeoutId;
} else {
if (!maxTimeoutId && !leading) {
lastCalled = stamp;
}
var remaining = maxWait - (stamp - lastCalled),
isCalled = remaining <= 0 || remaining > maxWait;
if (isCalled) {
if (maxTimeoutId) {
maxTimeoutId = clearTimeout(maxTimeoutId);
}
lastCalled = stamp;
result = func.apply(thisArg, args);
}
else if (!maxTimeoutId) {
maxTimeoutId = setTimeout(maxDelayed, remaining);
}
}
if (isCalled && timeoutId) {
timeoutId = clearTimeout(timeoutId);
}
else if (!timeoutId && wait !== maxWait) {
timeoutId = setTimeout(delayed, wait);
}
if (leadingCall) {
isCalled = true;
result = func.apply(thisArg, args);
}
if (isCalled && !timeoutId && !maxTimeoutId) {
args = thisArg = undefined;
}
return result;
}
debounced.cancel = cancel;
return debounced;
}
/**
* Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
* (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
* @memberOf _
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
* @example
*
* _.isObject({});
* // => true
*
* _.isObject([1, 2, 3]);
* // => true
*
* _.isObject(1);
* // => false
*/
function isObject(value) {
// Avoid a V8 JIT bug in Chrome 19-20.
// See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
var type = typeof value;
return !!value && (type == 'object' || type == 'function');
}
return debounce;
})();
// ported lodash throttle function
var throttle = function( func, wait, options ){
var leading = true,
trailing = true;
if( options === false ){
leading = false;
} else if( typeof options === typeof {} ){
leading = 'leading' in options ? options.leading : leading;
trailing = 'trailing' in options ? options.trailing : trailing;
}
options = options || {};
options.leading = leading;
options.maxWait = wait;
options.trailing = trailing;
return debounce( func, wait, options );
};
var Navigator = function ( element, options ) {
this._init(element, options);
};
var extend = function() {
for(var i = 1; i < arguments.length; i++) {
for(var key in arguments[i]) {
if(arguments[i].hasOwnProperty(key)) {
arguments[0][key] = arguments[i][key];
}
}
}
return arguments[0];
};
var wid = function(elem) {
return elem.getBoundingClientRect().width;
};
var hei = function(elem) {
return elem.getBoundingClientRect().height;
};
Navigator.prototype = {
constructor: Navigator
/****************************
Main functions
****************************/
, bb: function(){
var bb = this.cy.elements().boundingBox();
if( bb.w === 0 || bb.h === 0 ){
return {
x1: 0,
x2: Infinity,
y1: 0,
y2: Infinity,
w: Infinity,
h: Infinity
} // => hide interactive overlay
}
return bb
}
, _addCyListener: function(events, handler){
this._cyListeners.push({
events: events,
handler: handler
});
this.cy.on(events, handler);
}
, _removeCyListeners: function(){
var cy = this.cy;
this._cyListeners.forEach(function(l){
cy.off(l.events, l.handler);
});
cy.offRender(this._onRenderHandler);
}
, _init: function ( cy, options ) {
this._cyListeners = [];
this.$element = cy.container();
this.options = extend({}, defaults, options);
this.cy = cy;
// Cache bounding box
this.boundingBox = this.bb();
// Cache sizes
this.width = wid(this.$element);
this.height = hei(this.$element);
// Init components
this._initPanel();
this._initThumbnail();
this._initView();
this._initOverlay();
}
, destroy: function () {
this._removeEventsHandling();
// If container is not created by navigator and its removal is prohibited
if (this.options.container && !this.options.removeCustomContainer) {
this.$panel.innerHTML = '';
} else {
this.$panel.parentElement.removeChild(this.$panel);
}
}
/****************************
Navigator elements functions
****************************/
/*
* Used inner attributes
*
* w {number} width
* h {number} height
*/
, _initPanel: function () {
var options = this.options;
if(options.container && typeof options.container === 'string' && options.container.length > 0) {
// to not break users which gives a jquery string selector
if (options.container.indexOf('#') !== -1) {
this.$panel = document.getElementById(options.container.replace('#', ''));
} else {
this.$panel = document.getElementsByClassName(options.container.replace('.', ''))[0];
}
} else {
this.$panel = document.createElement('div');
this.$panel.className = 'cytoscape-navigator';
document.body.appendChild(this.$panel);
}
this._setupPanel();
this._addCyListener('resize', this.resize.bind(this));
}
, _setupPanel: function () {
// Cache sizes
this.panelWidth = wid(this.$panel);
this.panelHeight = hei(this.$panel);
}
/*
* Used inner attributes
*
* zoom {number}
* pan {object} - {x: 0, y: 0}
*/
, _initThumbnail: function () {
// Create thumbnail
this.$thumbnail = document.createElement('img');
// Add thumbnail canvas to the DOM
this.$panel.appendChild(this.$thumbnail);
// Setup thumbnail
this._setupThumbnailSizes();
this._setupThumbnail();
}
, _setupThumbnail: function () {
this._updateThumbnailImage();
}
, _setupThumbnailSizes: function () {
// Update bounding box cache
this.boundingBox = this.bb();
this.thumbnailZoom = Math.min(this.panelHeight / this.boundingBox.h, this.panelWidth / this.boundingBox.w);
// Used on thumbnail generation
this.thumbnailPan = {
x: (this.panelWidth - this.thumbnailZoom * (this.boundingBox.x1 + this.boundingBox.x2))/2
, y: (this.panelHeight - this.thumbnailZoom * (this.boundingBox.y1 + this.boundingBox.y2))/2
};
}
// If bounding box has changed then update sizes
// Otherwise just update the thumbnail
, _checkThumbnailSizesAndUpdate: function () {
// Cache previous values
var _zoom = this.thumbnailZoom
, _pan_x = this.thumbnailPan.x
, _pan_y = this.thumbnailPan.y;
this._setupThumbnailSizes();
if (_zoom != this.thumbnailZoom || _pan_x != this.thumbnailPan.x || _pan_y != this.thumbnailPan.y) {
this._setupThumbnail();
this._setupView();
} else {
this._updateThumbnailImage();
}
}
/*
* Used inner attributes
*
* w {number} width
* h {number} height
* x {number}
* y {number}
* borderWidth {number}
* locked {boolean}
*/
, _initView: function () {
this.$view = document.createElement('div');
this.$view.className = 'cytoscape-navigatorView';
this.$panel.appendChild(this.$view);
// Compute borders
this.viewBorderTop = parseInt(this.$view.style['border-top-width'], 10) || 0;
this.viewBorderRight = parseInt(this.$view.style['border-right-width'], 10) || 0;
this.viewBorderBottom = parseInt(this.$view.style['border-bottom-width'], 10) || 0;
this.viewBorderLeft = parseInt(this.$view.style['border-left-width'], 10) || 0;
// Abstract borders
this.viewBorderHorizontal = this.viewBorderLeft + this.viewBorderRight;
this.viewBorderVertical = this.viewBorderTop + this.viewBorderBottom;
this._setupView();
// Hook graph zoom and pan
this._addCyListener('zoom pan', this._setupView.bind(this));
}
, _setupView: function () {
if (this.viewLocked)
return
var cyZoom = this.cy.zoom()
, cyPan = this.cy.pan();
// Horizontal computation
this.viewW = this.width / cyZoom * this.thumbnailZoom;
this.viewX = -cyPan.x * this.viewW / this.width + this.thumbnailPan.x - this.viewBorderLeft;
// Vertical computation
this.viewH = this.height / cyZoom * this.thumbnailZoom;
this.viewY = -cyPan.y * this.viewH / this.height + this.thumbnailPan.y - this.viewBorderTop;
// CSS view
this.$view.style['width'] = this.viewW + 'px';
this.$view.style['height'] = this.viewH + 'px';
this.$view.style['position'] = 'absolute';
this.$view.style['left'] = this.viewX + 'px';
this.$view.style['top'] = this.viewY + 'px';
}
/*
* Used inner attributes
*
* timeout {number} used to keep stable frame rate
* lastMoveStartTime {number}
* inMovement {boolean}
* hookPoint {object} {x: 0, y: 0}
*/
, _initOverlay: function () {
// Used to capture mouse events
this.$overlay = document.createElement('div');
this.$overlay.className = 'cytoscape-navigatorOverlay';
// Add overlay to the DOM
this.$panel.appendChild(this.$overlay);
// Init some attributes
this.overlayHookPointX = 0;
this.overlayHookPointY = 0;
// Listen for events
this._initEventsHandling();
}
/****************************
Event handling functions
****************************/
, resize: function () {
// Cache sizes
this.width = wid(this.$element);
this.height = hei(this.$element);
this._thumbnailSetup = false;
this._setupPanel();
this._checkThumbnailSizesAndUpdate();
this._setupView();
}
, _initEventsHandling: function () {
var that = this
, eventsLocal = [
// Mouse events
'mousedown'
, 'mousewheel'
, 'DOMMouseScroll' // Mozilla specific event
// Touch events
, 'touchstart'
]
, eventsGlobal = [
'mouseup'
, 'mouseout'
, 'mousemove'
// Touch events
, 'touchmove'
, 'touchend'
];
// handle events and stop their propagation
var overlayListener = function (ev) {
// Touch events
if (ev.type == 'touchstart') {
// Will count as middle of View
Object.defineProperty(ev, 'offsetX', {
value: that.viewX + that.viewW / 2,
writable: true
});
Object.defineProperty(ev, 'offsetY', {
value: that.viewY + that.viewH / 2,
writable: true
});
}
// Normalize offset for browsers which do not provide that value
if (ev.offsetX === undefined || ev.offsetY === undefined) {
var rect = ev.target.getBoundingClientRect();
var targetOffset = {
top: rect.top + window.scrollY,
left: rect.left + window.scrollX,
};
Object.defineProperty(ev, 'offsetX', {
value: ev.pageX - targetOffset.left,
writable: true
});
Object.defineProperty(ev, 'offsetY', {
value: ev.pageY - targetOffset.top,
writable: true
});
}
if (ev.type == 'mousedown' || ev.type == 'touchstart') {
that._eventMoveStart(ev);
} else if (ev.type == 'mousewheel' || ev.type == 'DOMMouseScroll') {
that._eventZoom(ev);
}
// Prevent default and propagation
// Don't use peventPropagation as it breaks mouse events
return false;
};
// Hook global events
var globalListener = function (ev) {
// Do not make any computations if it is has no effect on Navigator
if (!that.overlayInMovement)
return;
// Touch events
if (ev.type == 'touchend') {
// Will count as middle of View
Object.defineProperty(ev, 'offsetX', {
value: that.viewX + that.viewW / 2,
writable: true
});
Object.defineProperty(ev, 'offsetY', {
value: that.viewY + that.viewH / 2,
writable: true
});
} else if (ev.type == 'touchmove') {
// Hack - we take in account only first touch
Object.defineProperty(ev, 'pageX', {
value: ev.originalEvent.touches[0].pageX,
writable: true
});
Object.defineProperty(ev, 'pageY', {
value: ev.originalEvent.touches[0].pageY,
writable: true
});
}
// Normalize offset for browsers which do not provide that value
if (ev.offsetX === undefined || ev.offsetY === undefined) {
var rect = ev.target.getBoundingClientRect();
var targetOffset = {
top: rect.top + window.scrollY,
left: rect.left + window.scrollX,
};
Object.defineProperty(ev, 'offsetX', {
value: ev.pageX - targetOffset.left,
writable: true
});
Object.defineProperty(ev, 'offsetY', {
value: ev.pageY - targetOffset.top,
writable: true
});
}
// Translate global events into local coordinates
if (ev.target !== that.$overlay) {
var rect = ev.target.getBoundingClientRect();
var rect2 = that.$overlay.getBoundingClientRect();
var targetOffset = {
top: rect.top + window.scrollY,
left: rect.left + window.scrollX,
};
var overlayOffset = {
top: rect2.top + window.scrollY,
left: rect2.left + window.scrollX,
};
if(targetOffset && overlayOffset) {
Object.defineProperty(ev, 'offsetX', {
value: ev.offsetX - overlayOffset.left + targetOffset.left,
writable: true
});
Object.defineProperty(ev, 'offsetY', {
value: ev.offsetY - overlayOffset.top + targetOffset.top,
writable: true
});
} else {
return false;
}
}
if (ev.type == 'mousemove' || ev.type == 'touchmove') {
that._eventMove(ev);
} else if (ev.type == 'mouseup' || ev.type == 'touchend') {
that._eventMoveEnd(ev);
}
// Prevent default and propagation
// Don't use peventPropagation as it breaks mouse events
return false;
};
for (var i = 0; i < eventsLocal.length; i++) {
this.$overlay.addEventListener(eventsLocal[i], overlayListener, false);
}
for (var i = 0; i < eventsGlobal.length; i++) {
window.addEventListener(eventsGlobal[i], globalListener, false);
}
this._removeEventsHandling = function(){
for (var i = 0; i < eventsLocal.length; i++) {
this.$overlay.removeEventListener(eventsLocal[i], overlayListener);
}
for (var i = 0; i < eventsGlobal.length; i++) {
window.removeEventListener(eventsGlobal[i], globalListener);
}
};
}
, _eventMoveStart: function (ev) {
var now = new Date().getTime();
// Check if it was double click
if (this.overlayLastMoveStartTime
&& this.overlayLastMoveStartTime + this.options.dblClickDelay > now) {
// Reset lastMoveStartTime
this.overlayLastMoveStartTime = 0;
// Enable View in order to move it to the center
this.overlayInMovement = true;
// Set hook point as View center
this.overlayHookPointX = this.viewW / 2;
this.overlayHookPointY = this.viewH / 2;
// Move View to start point
if (this.options.viewLiveFramerate !== false) {
this._eventMove({
offsetX: this.panelWidth / 2
, offsetY: this.panelHeight / 2
});
} else {
this._eventMoveEnd({
offsetX: this.panelWidth / 2
, offsetY: this.panelHeight / 2
});
}
// View should be inactive as we don't want to move it right after double click
this.overlayInMovement = false;
}
// This is a single click
// Take care as single click happens before double click 2 times
else {
this.overlayLastMoveStartTime = now;
this.overlayInMovement = true;
// Lock view moving caused by cy events
this.viewLocked = true;
// if event started in View
if (ev.offsetX >= this.viewX && ev.offsetX <= this.viewX + this.viewW
&& ev.offsetY >= this.viewY && ev.offsetY <= this.viewY + this.viewH
) {
this.overlayHookPointX = ev.offsetX - this.viewX;
this.overlayHookPointY = ev.offsetY - this.viewY;
}
// if event started in Thumbnail (outside of View)
else {
// Set hook point as View center
this.overlayHookPointX = this.viewW / 2;
this.overlayHookPointY = this.viewH / 2;
// Move View to start point
this._eventMove(ev);
}
}
}
, _eventMove: function (ev) {
var that = this;
this._checkMousePosition(ev);
// break if it is useless event
if (!this.overlayInMovement) {
return;
}
// Update cache
this.viewX = ev.offsetX - this.overlayHookPointX;
this.viewY = ev.offsetY - this.overlayHookPointY;
// Update view position
this.$view.style['left'] = this.viewX + 'px';
this.$view.style['top'] = this.viewY + 'px';
// Move Cy
if (this.options.viewLiveFramerate !== false) {
// trigger instantly
if (this.options.viewLiveFramerate == 0) {
this._moveCy();
}
// trigger less often than frame rate
else if (!this.overlayTimeout) {
// Set a timeout for graph movement
this.overlayTimeout = setTimeout(function () {
that._moveCy();
that.overlayTimeout = false;
}, 1000 / this.options.viewLiveFramerate);
}
}
}
, _checkMousePosition: function (ev) {
// If mouse in over View
if(ev.offsetX > this.viewX && ev.offsetX < this.viewX + this.viewBorderHorizontal + this.viewW
&& ev.offsetY > this.viewY && ev.offsetY < this.viewY + this.viewBorderVertical + this.viewH) {
this.$panel.classList.add('mouseover-view');
} else {
this.$panel.classList.remove('mouseover-view');
}
}
, _eventMoveEnd: function (ev) {
// Unlock view changing caused by graph events
this.viewLocked = false;
// Remove class when mouse is not over Navigator
this.$panel.classList.remove('mouseover-view');
if (!this.overlayInMovement) {
return;
}
// Trigger one last move
this._eventMove(ev);
// If mode is not live then move graph on drag end
if (this.options.viewLiveFramerate === false) {
this._moveCy();
}
// Stop movement permission
this.overlayInMovement = false;
}
, _eventZoom: function (ev) {
var ev2 = extend({}, ev.originalEvent);
var delta = ev.wheelDeltaY / 1000 || ev.wheelDelta / 1000 || ev.detail / -32 || ev2.wheelDeltaY / 1000 || ev2.wheelDelta / 1000 || ev2.detail / -32;
var zoomRate = Math.pow(10, delta)
, mousePosition = {
left: ev.offsetX
, top: ev.offsetY
};
if (this.cy.zoomingEnabled()) {
this._zoomCy(zoomRate, mousePosition);
}
}
, _updateThumbnailImage: function () {
var that = this;
if( this._thumbnailUpdating ){
return;
}
this._thumbnailUpdating = true;
var render = function() {
that._checkThumbnailSizesAndUpdate();
that._setupView();
var $img = that.$thumbnail;
var img = $img;
var w = that.panelWidth;
var h = that.panelHeight;
var bb = that.boundingBox;
var zoom = Math.min( w/bb.w, h/bb.h );
var png = that.cy.png({
full: true,
scale: zoom,
maxHeight: h,
maxWidth: w
});
if( png.indexOf('image/png') < 0 ){
img.removeAttribute( 'src' );
} else {
img.setAttribute( 'src', png );
}
var translate = {
x: (w - zoom*( bb.w ))/2,
y: (h - zoom*( bb.h ))/2
};
$img.style['position'] = 'absolute';
$img.style['left'] = translate.x + 'px';
$img.style['top'] = translate.y + 'px';
};
this._onRenderHandler = throttle(render, that.options.rerenderDelay);
this.cy.onRender( this._onRenderHandler );
}
/****************************
Navigator view moving
****************************/
, _moveCy: function () {
this.cy.pan({
x: -(this.viewX + this.viewBorderLeft - this.thumbnailPan.x) * this.width / this.viewW
, y: -(this.viewY + this.viewBorderLeft - this.thumbnailPan.y) * this.height / this.viewH
});
}
/**
* Zooms graph.
*
* @this {cytoscapeNavigator}
* @param {number} zoomRate The zoom rate value. 1 is 100%.
*/
, _zoomCy: function (zoomRate, zoomCenterRaw) {
var zoomCenter
;
zoomCenter = {
x: this.width / 2
, y: this.height / 2
};
this.cy.zoom({
level: this.cy.zoom() * zoomRate
, renderedPosition: zoomCenter
});
}
};
// registers the extension on a cytoscape lib ref
var register = function( cytoscape ){
if (!cytoscape){ return; } // can't register if cytoscape unspecified
cytoscape( 'core', 'navigator', function( options ){
var cy = this;
return new Navigator( cy, options );
} );
};
if (module.exports) { // expose as a commonjs module
module.exports = function( cytoscape ){
register( cytoscape );
};
}
if (typeof cytoscape !== 'undefined') { // expose to global cytoscape (i.e. window.cytoscape)
register(cytoscape);
}
})();
});
var top = 'top';
var bottom = 'bottom';
var right = 'right';
var left = 'left';
var auto = 'auto';
var basePlacements = [top, bottom, right, left];
var start = 'start';
var end = 'end';
var clippingParents = 'clippingParents';
var viewport = 'viewport';
var popper$1 = 'popper';
var reference = 'reference';
var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
return acc.concat([placement + "-" + start, placement + "-" + end]);
}, []);
var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
}, []); // modifiers that need to read the DOM
var beforeRead = 'beforeRead';
var read$1 = 'read';
var afterRead = 'afterRead'; // pure-logic modifiers
var beforeMain = 'beforeMain';
var main = 'main';
var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)
var beforeWrite = 'beforeWrite';
var write$1 = 'write';
var afterWrite = 'afterWrite';
var modifierPhases = [beforeRead, read$1, afterRead, beforeMain, main, afterMain, beforeWrite, write$1, afterWrite];
function getNodeName(element) {
return element ? (element.nodeName || '').toLowerCase() : null;
}
function getWindow(node) {
if (node == null) {
return window;
}
if (node.toString() !== '[object Window]') {
var ownerDocument = node.ownerDocument;
return ownerDocument ? ownerDocument.defaultView || window : window;
}
return node;
}
function isElement(node) {
var OwnElement = getWindow(node).Element;
return node instanceof OwnElement || node instanceof Element;
}
function isHTMLElement(node) {
var OwnElement = getWindow(node).HTMLElement;
return node instanceof OwnElement || node instanceof HTMLElement;
}
function isShadowRoot(node) {
// IE 11 has no ShadowRoot
if (typeof ShadowRoot === 'undefined') {
return false;
}
var OwnElement = getWindow(node).ShadowRoot;
return node instanceof OwnElement || node instanceof ShadowRoot;
}
// and applies them to the HTMLElements such as popper and arrow
function applyStyles(_ref) {
var state = _ref.state;
Object.keys(state.elements).forEach(function (name) {
var style = state.styles[name] || {};
var attributes = state.attributes[name] || {};
var element = state.elements[name]; // arrow is optional + virtual elements
if (!isHTMLElement(element) || !getNodeName(element)) {
return;
} // Flow doesn't support to extend this property, but it's the most
// effective way to apply styles to an HTMLElement
// $FlowFixMe[cannot-write]
Object.assign(element.style, style);
Object.keys(attributes).forEach(function (name) {
var value = attributes[name];
if (value === false) {
element.removeAttribute(name);
} else {
element.setAttribute(name, value === true ? '' : value);
}
});
});
}
function effect$2(_ref2) {
var state = _ref2.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
}
return function () {
Object.keys(state.elements).forEach(function (name) {
var element = state.elements[name];
var attributes = state.attributes[name] || {};
var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them
var style = styleProperties.reduce(function (style, property) {
style[property] = '';
return style;
}, {}); // arrow is optional + virtual elements
if (!isHTMLElement(element) || !getNodeName(element)) {
return;
}
Object.assign(element.style, style);
Object.keys(attributes).forEach(function (attribute) {
element.removeAttribute(attribute);
});
});
};
} // eslint-disable-next-line import/no-unused-modules
var applyStyles$1 = {
name: 'applyStyles',
enabled: true,
phase: 'write',
fn: applyStyles,
effect: effect$2,
requires: ['computeStyles']
};
function getBasePlacement(placement) {
return placement.split('-')[0];
}
var max$1 = Math.max;
var min$1 = Math.min;
var round = Math.round;
function getBoundingClientRect(element, includeScale) {
if (includeScale === void 0) {
includeScale = false;
}
var rect = element.getBoundingClientRect();
var scaleX = 1;
var scaleY = 1;
if (isHTMLElement(element) && includeScale) {
var offsetHeight = element.offsetHeight;
var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale
// Fallback to 1 in case both values are `0`
if (offsetWidth > 0) {
scaleX = round(rect.width) / offsetWidth || 1;
}
if (offsetHeight > 0) {
scaleY = round(rect.height) / offsetHeight || 1;
}
}
return {
width: rect.width / scaleX,
height: rect.height / scaleY,
top: rect.top / scaleY,
right: rect.right / scaleX,
bottom: rect.bottom / scaleY,
left: rect.left / scaleX,
x: rect.left / scaleX,
y: rect.top / scaleY
};
}
// means it doesn't take into account transforms.
function getLayoutRect(element) {
var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.
// Fixes https://github.com/popperjs/popper-core/issues/1223
var width = element.offsetWidth;
var height = element.offsetHeight;
if (Math.abs(clientRect.width - width) <= 1) {
width = clientRect.width;
}
if (Math.abs(clientRect.height - height) <= 1) {
height = clientRect.height;
}
return {
x: element.offsetLeft,
y: element.offsetTop,
width: width,
height: height
};
}
function contains(parent, child) {
var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
if (parent.contains(child)) {
return true;
} // then fallback to custom implementation with Shadow DOM support
else if (rootNode && isShadowRoot(rootNode)) {
var next = child;
do {
if (next && parent.isSameNode(next)) {
return true;
} // $FlowFixMe[prop-missing]: need a better way to handle this...
next = next.parentNode || next.host;
} while (next);
} // Give up, the result is false
return false;
}
function getComputedStyle$1(element) {
return getWindow(element).getComputedStyle(element);
}
function isTableElement(element) {
return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
}
function getDocumentElement(element) {
// $FlowFixMe[incompatible-return]: assume body is always available
return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]
element.document) || window.document).documentElement;
}
function getParentNode(element) {
if (getNodeName(element) === 'html') {
return element;
}
return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
// $FlowFixMe[incompatible-return]
// $FlowFixMe[prop-missing]
element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
element.parentNode || ( // DOM Element detected
isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
// $FlowFixMe[incompatible-call]: HTMLElement is a Node
getDocumentElement(element) // fallback
);
}
function getTrueOffsetParent(element) {
if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
getComputedStyle$1(element).position === 'fixed') {
return null;
}
return element.offsetParent;
} // `.offsetParent` reports `null` for fixed elements, while absolute elements
// return the containing block
function getContainingBlock(element) {
var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;
var isIE = navigator.userAgent.indexOf('Trident') !== -1;
if (isIE && isHTMLElement(element)) {
// In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
var elementCss = getComputedStyle$1(element);
if (elementCss.position === 'fixed') {
return null;
}
}
var currentNode = getParentNode(element);
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that
// create a containing block.
// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {
return currentNode;
} else {
currentNode = currentNode.parentNode;
}
}
return null;
} // Gets the closest ancestor positioned element. Handles some edge cases,
// such as table ancestors and cross browser bugs.
function getOffsetParent(element) {
var window = getWindow(element);
var offsetParent = getTrueOffsetParent(element);
while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {
offsetParent = getTrueOffsetParent(offsetParent);
}
if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) {
return window;
}
return offsetParent || getContainingBlock(element) || window;
}
function getMainAxisFromPlacement(placement) {
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
}
function within(min, value, max) {
return max$1(min, min$1(value, max));
}
function withinMaxClamp(min, value, max) {
var v = within(min, value, max);
return v > max ? max : v;
}
function getFreshSideObject() {
return {
top: 0,
right: 0,
bottom: 0,
left: 0
};
}
function mergePaddingObject(paddingObject) {
return Object.assign({}, getFreshSideObject(), paddingObject);
}
function expandToHashMap(value, keys) {
return keys.reduce(function (hashMap, key) {
hashMap[key] = value;
return hashMap;
}, {});
}
var toPaddingObject = function toPaddingObject(padding, state) {
padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {
placement: state.placement
})) : padding;
return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
};
function arrow(_ref) {
var _state$modifiersData$;
var state = _ref.state,
name = _ref.name,
options = _ref.options;
var arrowElement = state.elements.arrow;
var popperOffsets = state.modifiersData.popperOffsets;
var basePlacement = getBasePlacement(state.placement);
var axis = getMainAxisFromPlacement(basePlacement);
var isVertical = [left, right].indexOf(basePlacement) >= 0;
var len = isVertical ? 'height' : 'width';
if (!arrowElement || !popperOffsets) {
return;
}
var paddingObject = toPaddingObject(options.padding, state);
var arrowRect = getLayoutRect(arrowElement);
var minProp = axis === 'y' ? top : left;
var maxProp = axis === 'y' ? bottom : right;
var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
var startDiff = popperOffsets[axis] - state.rects.reference[axis];
var arrowOffsetParent = getOffsetParent(arrowElement);
var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
// outside of the popper bounds
var min = paddingObject[minProp];
var max = clientSize - arrowRect[len] - paddingObject[maxProp];
var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
var offset = within(min, center, max); // Prevents breaking syntax highlighting...
var axisProp = axis;
state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
}
function effect$1(_ref2) {
var state = _ref2.state,
options = _ref2.options;
var _options$element = options.element,
arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;
if (arrowElement == null) {
return;
} // CSS selector
if (typeof arrowElement === 'string') {
arrowElement = state.elements.popper.querySelector(arrowElement);
if (!arrowElement) {
return;
}
}
if (process.env.NODE_ENV !== "production") {
if (!isHTMLElement(arrowElement)) {
console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));
}
}
if (!contains(state.elements.popper, arrowElement)) {
if (process.env.NODE_ENV !== "production") {
console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' '));
}
return;
}
state.elements.arrow = arrowElement;
} // eslint-disable-next-line import/no-unused-modules
var arrow$1 = {
name: 'arrow',
enabled: true,
phase: 'main',
fn: arrow,
effect: effect$1,
requires: ['popperOffsets'],
requiresIfExists: ['preventOverflow']
};
function getVariation(placement) {
return placement.split('-')[1];
}
var unsetSides = {
top: 'auto',
right: 'auto',
bottom: 'auto',
left: 'auto'
}; // Round the offsets to the nearest suitable subpixel based on the DPR.
// Zooming can change the DPR, but it seems to report a value that will
// cleanly divide the values into the appropriate subpixels.
function roundOffsetsByDPR(_ref) {
var x = _ref.x,
y = _ref.y;
var win = window;
var dpr = win.devicePixelRatio || 1;
return {
x: round(x * dpr) / dpr || 0,
y: round(y * dpr) / dpr || 0
};
}
function mapToStyles(_ref2) {
var _Object$assign2;
var popper = _ref2.popper,
popperRect = _ref2.popperRect,
placement = _ref2.placement,
variation = _ref2.variation,
offsets = _ref2.offsets,
position = _ref2.position,
gpuAcceleration = _ref2.gpuAcceleration,
adaptive = _ref2.adaptive,
roundOffsets = _ref2.roundOffsets,
isFixed = _ref2.isFixed;
var _offsets$x = offsets.x,
x = _offsets$x === void 0 ? 0 : _offsets$x,
_offsets$y = offsets.y,
y = _offsets$y === void 0 ? 0 : _offsets$y;
var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({
x: x,
y: y
}) : {
x: x,
y: y
};
x = _ref3.x;
y = _ref3.y;
var hasX = offsets.hasOwnProperty('x');
var hasY = offsets.hasOwnProperty('y');
var sideX = left;
var sideY = top;
var win = window;
if (adaptive) {
var offsetParent = getOffsetParent(popper);
var heightProp = 'clientHeight';
var widthProp = 'clientWidth';
if (offsetParent === getWindow(popper)) {
offsetParent = getDocumentElement(popper);
if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') {
heightProp = 'scrollHeight';
widthProp = 'scrollWidth';
}
} // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
offsetParent = offsetParent;
if (placement === top || (placement === left || placement === right) && variation === end) {
sideY = bottom;
var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
offsetParent[heightProp];
y -= offsetY - popperRect.height;
y *= gpuAcceleration ? 1 : -1;
}
if (placement === left || (placement === top || placement === bottom) && variation === end) {
sideX = right;
var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
offsetParent[widthProp];
x -= offsetX - popperRect.width;
x *= gpuAcceleration ? 1 : -1;
}
}
var commonStyles = Object.assign({
position: position
}, adaptive && unsetSides);
var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
x: x,
y: y
}) : {
x: x,
y: y
};
x = _ref4.x;
y = _ref4.y;
if (gpuAcceleration) {
var _Object$assign;
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
}
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
}
function computeStyles(_ref5) {
var state = _ref5.state,
options = _ref5.options;
var _options$gpuAccelerat = options.gpuAcceleration,
gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
_options$adaptive = options.adaptive,
adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
_options$roundOffsets = options.roundOffsets,
roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
if (process.env.NODE_ENV !== "production") {
var transitionProperty = getComputedStyle$1(state.elements.popper).transitionProperty || '';
if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {
return transitionProperty.indexOf(property) >= 0;
})) {
console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));
}
}
var commonStyles = {
placement: getBasePlacement(state.placement),
variation: getVariation(state.placement),
popper: state.elements.popper,
popperRect: state.rects.popper,
gpuAcceleration: gpuAcceleration,
isFixed: state.options.strategy === 'fixed'
};
if (state.modifiersData.popperOffsets != null) {
state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
offsets: state.modifiersData.popperOffsets,
position: state.options.strategy,
adaptive: adaptive,
roundOffsets: roundOffsets
})));
}
if (state.modifiersData.arrow != null) {
state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
offsets: state.modifiersData.arrow,
position: 'absolute',
adaptive: false,
roundOffsets: roundOffsets
})));
}
state.attributes.popper = Object.assign({}, state.attributes.popper, {
'data-popper-placement': state.placement
});
} // eslint-disable-next-line import/no-unused-modules
var computeStyles$1 = {
name: 'computeStyles',
enabled: true,
phase: 'beforeWrite',
fn: computeStyles,
data: {}
};
var passive = {
passive: true
};
function effect(_ref) {
var state = _ref.state,
instance = _ref.instance,
options = _ref.options;
var _options$scroll = options.scroll,
scroll = _options$scroll === void 0 ? true : _options$scroll,
_options$resize = options.resize,
resize = _options$resize === void 0 ? true : _options$resize;
var window = getWindow(state.elements.popper);
var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
if (scroll) {
scrollParents.forEach(function (scrollParent) {
scrollParent.addEventListener('scroll', instance.update, passive);
});
}
if (resize) {
window.addEventListener('resize', instance.update, passive);
}
return function () {
if (scroll) {
scrollParents.forEach(function (scrollParent) {
scrollParent.removeEventListener('scroll', instance.update, passive);
});
}
if (resize) {
window.removeEventListener('resize', instance.update, passive);
}
};
} // eslint-disable-next-line import/no-unused-modules
var eventListeners = {
name: 'eventListeners',
enabled: true,
phase: 'write',
fn: function fn() {},
effect: effect,
data: {}
};
var hash$1 = {
left: 'right',
right: 'left',
bottom: 'top',
top: 'bottom'
};
function getOppositePlacement(placement) {
return placement.replace(/left|right|bottom|top/g, function (matched) {
return hash$1[matched];
});
}
var hash = {
start: 'end',
end: 'start'
};
function getOppositeVariationPlacement(placement) {
return placement.replace(/start|end/g, function (matched) {
return hash[matched];
});
}
function getWindowScroll(node) {
var win = getWindow(node);
var scrollLeft = win.pageXOffset;
var scrollTop = win.pageYOffset;
return {
scrollLeft: scrollLeft,
scrollTop: scrollTop
};
}
function getWindowScrollBarX(element) {
// If has a CSS width greater than the viewport, then this will be
// incorrect for RTL.
// Popper 1 is broken in this case and never had a bug report so let's assume
// it's not an issue. I don't think anyone ever specifies width on
// anyway.
// Browsers where the left scrollbar doesn't cause an issue report `0` for
// this (e.g. Edge 2019, IE11, Safari)
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
}
function getViewportRect(element) {
var win = getWindow(element);
var html = getDocumentElement(element);
var visualViewport = win.visualViewport;
var width = html.clientWidth;
var height = html.clientHeight;
var x = 0;
var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
// can be obscured underneath it.
// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
// if it isn't open, so if this isn't available, the popper will be detected
// to overflow the bottom of the screen too early.
if (visualViewport) {
width = visualViewport.width;
height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
// In Chrome, it returns a value very close to 0 (+/-) but contains rounding
// errors due to floating point numbers, so we need to check precision.
// Safari returns a number <= 0, usually < -1 when pinch-zoomed
// Feature detection fails in mobile emulation mode in Chrome.
// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
// 0.001
// Fallback here: "Not Safari" userAgent
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
x = visualViewport.offsetLeft;
y = visualViewport.offsetTop;
}
}
return {
width: width,
height: height,
x: x + getWindowScrollBarX(element),
y: y
};
}
// of the `` and `` rect bounds if horizontally scrollable
function getDocumentRect(element) {
var _element$ownerDocumen;
var html = getDocumentElement(element);
var winScroll = getWindowScroll(element);
var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
var width = max$1(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
var height = max$1(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
var y = -winScroll.scrollTop;
if (getComputedStyle$1(body || html).direction === 'rtl') {
x += max$1(html.clientWidth, body ? body.clientWidth : 0) - width;
}
return {
width: width,
height: height,
x: x,
y: y
};
}
function isScrollParent(element) {
// Firefox wants us to check `-x` and `-y` variations as well
var _getComputedStyle = getComputedStyle$1(element),
overflow = _getComputedStyle.overflow,
overflowX = _getComputedStyle.overflowX,
overflowY = _getComputedStyle.overflowY;
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function getScrollParent(node) {
if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
// $FlowFixMe[incompatible-return]: assume body is always available
return node.ownerDocument.body;
}
if (isHTMLElement(node) && isScrollParent(node)) {
return node;
}
return getScrollParent(getParentNode(node));
}
/*
given a DOM element, return the list of all scroll parents, up the list of ancesors
until we get to the top window object. This list is what we attach scroll listeners
to, because if any of these parent elements scroll, we'll need to re-calculate the
reference element's position.
*/
function listScrollParents(element, list) {
var _element$ownerDocumen;
if (list === void 0) {
list = [];
}
var scrollParent = getScrollParent(element);
var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
var win = getWindow(scrollParent);
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
var updatedList = list.concat(target);
return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
updatedList.concat(listScrollParents(getParentNode(target)));
}
function rectToClientRect(rect) {
return Object.assign({}, rect, {
left: rect.x,
top: rect.y,
right: rect.x + rect.width,
bottom: rect.y + rect.height
});
}
function getInnerBoundingClientRect(element) {
var rect = getBoundingClientRect(element);
rect.top = rect.top + element.clientTop;
rect.left = rect.left + element.clientLeft;
rect.bottom = rect.top + element.clientHeight;
rect.right = rect.left + element.clientWidth;
rect.width = element.clientWidth;
rect.height = element.clientHeight;
rect.x = rect.left;
rect.y = rect.top;
return rect;
}
function getClientRectFromMixedType(element, clippingParent) {
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
} // A "clipping parent" is an overflowable container with the characteristic of
// clipping (or hiding) overflowing elements with a position different from
// `initial`
function getClippingParents(element) {
var clippingParents = listScrollParents(getParentNode(element));
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0;
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
if (!isElement(clipperElement)) {
return [];
} // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
return clippingParents.filter(function (clippingParent) {
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
});
} // Gets the maximum area that the element is visible in due to any number of
// clipping parents
function getClippingRect(element, boundary, rootBoundary) {
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
var firstClippingParent = clippingParents[0];
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
var rect = getClientRectFromMixedType(element, clippingParent);
accRect.top = max$1(rect.top, accRect.top);
accRect.right = min$1(rect.right, accRect.right);
accRect.bottom = min$1(rect.bottom, accRect.bottom);
accRect.left = max$1(rect.left, accRect.left);
return accRect;
}, getClientRectFromMixedType(element, firstClippingParent));
clippingRect.width = clippingRect.right - clippingRect.left;
clippingRect.height = clippingRect.bottom - clippingRect.top;
clippingRect.x = clippingRect.left;
clippingRect.y = clippingRect.top;
return clippingRect;
}
function computeOffsets(_ref) {
var reference = _ref.reference,
element = _ref.element,
placement = _ref.placement;
var basePlacement = placement ? getBasePlacement(placement) : null;
var variation = placement ? getVariation(placement) : null;
var commonX = reference.x + reference.width / 2 - element.width / 2;
var commonY = reference.y + reference.height / 2 - element.height / 2;
var offsets;
switch (basePlacement) {
case top:
offsets = {
x: commonX,
y: reference.y - element.height
};
break;
case bottom:
offsets = {
x: commonX,
y: reference.y + reference.height
};
break;
case right:
offsets = {
x: reference.x + reference.width,
y: commonY
};
break;
case left:
offsets = {
x: reference.x - element.width,
y: commonY
};
break;
default:
offsets = {
x: reference.x,
y: reference.y
};
}
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
if (mainAxis != null) {
var len = mainAxis === 'y' ? 'height' : 'width';
switch (variation) {
case start:
offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
break;
case end:
offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
break;
}
}
return offsets;
}
function detectOverflow(state, options) {
if (options === void 0) {
options = {};
}
var _options = options,
_options$placement = _options.placement,
placement = _options$placement === void 0 ? state.placement : _options$placement,
_options$boundary = _options.boundary,
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
_options$rootBoundary = _options.rootBoundary,
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
_options$elementConte = _options.elementContext,
elementContext = _options$elementConte === void 0 ? popper$1 : _options$elementConte,
_options$altBoundary = _options.altBoundary,
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
_options$padding = _options.padding,
padding = _options$padding === void 0 ? 0 : _options$padding;
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
var altContext = elementContext === popper$1 ? reference : popper$1;
var popperRect = state.rects.popper;
var element = state.elements[altBoundary ? altContext : elementContext];
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
var referenceClientRect = getBoundingClientRect(state.elements.reference);
var popperOffsets = computeOffsets({
reference: referenceClientRect,
element: popperRect,
strategy: 'absolute',
placement: placement
});
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
var elementClientRect = elementContext === popper$1 ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
// 0 or negative = within the clipping rect
var overflowOffsets = {
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
};
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
if (elementContext === popper$1 && offsetData) {
var offset = offsetData[placement];
Object.keys(overflowOffsets).forEach(function (key) {
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
overflowOffsets[key] += offset[axis] * multiply;
});
}
return overflowOffsets;
}
function computeAutoPlacement(state, options) {
if (options === void 0) {
options = {};
}
var _options = options,
placement = _options.placement,
boundary = _options.boundary,
rootBoundary = _options.rootBoundary,
padding = _options.padding,
flipVariations = _options.flipVariations,
_options$allowedAutoP = _options.allowedAutoPlacements,
allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
var variation = getVariation(placement);
var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
return getVariation(placement) === variation;
}) : basePlacements;
var allowedPlacements = placements$1.filter(function (placement) {
return allowedAutoPlacements.indexOf(placement) >= 0;
});
if (allowedPlacements.length === 0) {
allowedPlacements = placements$1;
if (process.env.NODE_ENV !== "production") {
console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' '));
}
} // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
var overflows = allowedPlacements.reduce(function (acc, placement) {
acc[placement] = detectOverflow(state, {
placement: placement,
boundary: boundary,
rootBoundary: rootBoundary,
padding: padding
})[getBasePlacement(placement)];
return acc;
}, {});
return Object.keys(overflows).sort(function (a, b) {
return overflows[a] - overflows[b];
});
}
function getExpandedFallbackPlacements(placement) {
if (getBasePlacement(placement) === auto) {
return [];
}
var oppositePlacement = getOppositePlacement(placement);
return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
}
function flip(_ref) {
var state = _ref.state,
options = _ref.options,
name = _ref.name;
if (state.modifiersData[name]._skip) {
return;
}
var _options$mainAxis = options.mainAxis,
checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
_options$altAxis = options.altAxis,
checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
specifiedFallbackPlacements = options.fallbackPlacements,
padding = options.padding,
boundary = options.boundary,
rootBoundary = options.rootBoundary,
altBoundary = options.altBoundary,
_options$flipVariatio = options.flipVariations,
flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
allowedAutoPlacements = options.allowedAutoPlacements;
var preferredPlacement = state.options.placement;
var basePlacement = getBasePlacement(preferredPlacement);
var isBasePlacement = basePlacement === preferredPlacement;
var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
placement: placement,
boundary: boundary,
rootBoundary: rootBoundary,
padding: padding,
flipVariations: flipVariations,
allowedAutoPlacements: allowedAutoPlacements
}) : placement);
}, []);
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var checksMap = new Map();
var makeFallbackChecks = true;
var firstFittingPlacement = placements[0];
for (var i = 0; i < placements.length; i++) {
var placement = placements[i];
var _basePlacement = getBasePlacement(placement);
var isStartVariation = getVariation(placement) === start;
var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
var len = isVertical ? 'width' : 'height';
var overflow = detectOverflow(state, {
placement: placement,
boundary: boundary,
rootBoundary: rootBoundary,
altBoundary: altBoundary,
padding: padding
});
var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
if (referenceRect[len] > popperRect[len]) {
mainVariationSide = getOppositePlacement(mainVariationSide);
}
var altVariationSide = getOppositePlacement(mainVariationSide);
var checks = [];
if (checkMainAxis) {
checks.push(overflow[_basePlacement] <= 0);
}
if (checkAltAxis) {
checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
}
if (checks.every(function (check) {
return check;
})) {
firstFittingPlacement = placement;
makeFallbackChecks = false;
break;
}
checksMap.set(placement, checks);
}
if (makeFallbackChecks) {
// `2` may be desired in some cases – research later
var numberOfChecks = flipVariations ? 3 : 1;
var _loop = function _loop(_i) {
var fittingPlacement = placements.find(function (placement) {
var checks = checksMap.get(placement);
if (checks) {
return checks.slice(0, _i).every(function (check) {
return check;
});
}
});
if (fittingPlacement) {
firstFittingPlacement = fittingPlacement;
return "break";
}
};
for (var _i = numberOfChecks; _i > 0; _i--) {
var _ret = _loop(_i);
if (_ret === "break") break;
}
}
if (state.placement !== firstFittingPlacement) {
state.modifiersData[name]._skip = true;
state.placement = firstFittingPlacement;
state.reset = true;
}
} // eslint-disable-next-line import/no-unused-modules
var flip$1 = {
name: 'flip',
enabled: true,
phase: 'main',
fn: flip,
requiresIfExists: ['offset'],
data: {
_skip: false
}
};
function getSideOffsets(overflow, rect, preventedOffsets) {
if (preventedOffsets === void 0) {
preventedOffsets = {
x: 0,
y: 0
};
}
return {
top: overflow.top - rect.height - preventedOffsets.y,
right: overflow.right - rect.width + preventedOffsets.x,
bottom: overflow.bottom - rect.height + preventedOffsets.y,
left: overflow.left - rect.width - preventedOffsets.x
};
}
function isAnySideFullyClipped(overflow) {
return [top, right, bottom, left].some(function (side) {
return overflow[side] >= 0;
});
}
function hide(_ref) {
var state = _ref.state,
name = _ref.name;
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var preventedOffsets = state.modifiersData.preventOverflow;
var referenceOverflow = detectOverflow(state, {
elementContext: 'reference'
});
var popperAltOverflow = detectOverflow(state, {
altBoundary: true
});
var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
state.modifiersData[name] = {
referenceClippingOffsets: referenceClippingOffsets,
popperEscapeOffsets: popperEscapeOffsets,
isReferenceHidden: isReferenceHidden,
hasPopperEscaped: hasPopperEscaped
};
state.attributes.popper = Object.assign({}, state.attributes.popper, {
'data-popper-reference-hidden': isReferenceHidden,
'data-popper-escaped': hasPopperEscaped
});
} // eslint-disable-next-line import/no-unused-modules
var hide$1 = {
name: 'hide',
enabled: true,
phase: 'main',
requiresIfExists: ['preventOverflow'],
fn: hide
};
function distanceAndSkiddingToXY(placement, rects, offset) {
var basePlacement = getBasePlacement(placement);
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
placement: placement
})) : offset,
skidding = _ref[0],
distance = _ref[1];
skidding = skidding || 0;
distance = (distance || 0) * invertDistance;
return [left, right].indexOf(basePlacement) >= 0 ? {
x: distance,
y: skidding
} : {
x: skidding,
y: distance
};
}
function offset(_ref2) {
var state = _ref2.state,
options = _ref2.options,
name = _ref2.name;
var _options$offset = options.offset,
offset = _options$offset === void 0 ? [0, 0] : _options$offset;
var data = placements.reduce(function (acc, placement) {
acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
return acc;
}, {});
var _data$state$placement = data[state.placement],
x = _data$state$placement.x,
y = _data$state$placement.y;
if (state.modifiersData.popperOffsets != null) {
state.modifiersData.popperOffsets.x += x;
state.modifiersData.popperOffsets.y += y;
}
state.modifiersData[name] = data;
} // eslint-disable-next-line import/no-unused-modules
var offset$1 = {
name: 'offset',
enabled: true,
phase: 'main',
requires: ['popperOffsets'],
fn: offset
};
function popperOffsets(_ref) {
var state = _ref.state,
name = _ref.name;
// Offsets are the actual position the popper needs to have to be
// properly positioned near its reference element
// This is the most basic placement, and will be adjusted by
// the modifiers in the next step
state.modifiersData[name] = computeOffsets({
reference: state.rects.reference,
element: state.rects.popper,
strategy: 'absolute',
placement: state.placement
});
} // eslint-disable-next-line import/no-unused-modules
var popperOffsets$1 = {
name: 'popperOffsets',
enabled: true,
phase: 'read',
fn: popperOffsets,
data: {}
};
function getAltAxis(axis) {
return axis === 'x' ? 'y' : 'x';
}
function preventOverflow(_ref) {
var state = _ref.state,
options = _ref.options,
name = _ref.name;
var _options$mainAxis = options.mainAxis,
checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
_options$altAxis = options.altAxis,
checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
boundary = options.boundary,
rootBoundary = options.rootBoundary,
altBoundary = options.altBoundary,
padding = options.padding,
_options$tether = options.tether,
tether = _options$tether === void 0 ? true : _options$tether,
_options$tetherOffset = options.tetherOffset,
tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
var overflow = detectOverflow(state, {
boundary: boundary,
rootBoundary: rootBoundary,
padding: padding,
altBoundary: altBoundary
});
var basePlacement = getBasePlacement(state.placement);
var variation = getVariation(state.placement);
var isBasePlacement = !variation;
var mainAxis = getMainAxisFromPlacement(basePlacement);
var altAxis = getAltAxis(mainAxis);
var popperOffsets = state.modifiersData.popperOffsets;
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
placement: state.placement
})) : tetherOffset;
var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {
mainAxis: tetherOffsetValue,
altAxis: tetherOffsetValue
} : Object.assign({
mainAxis: 0,
altAxis: 0
}, tetherOffsetValue);
var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
var data = {
x: 0,
y: 0
};
if (!popperOffsets) {
return;
}
if (checkMainAxis) {
var _offsetModifierState$;
var mainSide = mainAxis === 'y' ? top : left;
var altSide = mainAxis === 'y' ? bottom : right;
var len = mainAxis === 'y' ? 'height' : 'width';
var offset = popperOffsets[mainAxis];
var min = offset + overflow[mainSide];
var max = offset - overflow[altSide];
var additive = tether ? -popperRect[len] / 2 : 0;
var minLen = variation === start ? referenceRect[len] : popperRect[len];
var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
// outside the reference bounds
var arrowElement = state.elements.arrow;
var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
width: 0,
height: 0
};
var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();
var arrowPaddingMin = arrowPaddingObject[mainSide];
var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want
// to include its full size in the calculation. If the reference is small
// and near the edge of a boundary, the popper can overflow even if the
// reference is not overflowing as well (e.g. virtual elements with no
// width or height)
var arrowLen = within(0, referenceRect[len], arrowRect[len]);
var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
var tetherMax = offset + maxOffset - offsetModifierValue;
var preventedOffset = within(tether ? min$1(min, tetherMin) : min, offset, tether ? max$1(max, tetherMax) : max);
popperOffsets[mainAxis] = preventedOffset;
data[mainAxis] = preventedOffset - offset;
}
if (checkAltAxis) {
var _offsetModifierState$2;
var _mainSide = mainAxis === 'x' ? top : left;
var _altSide = mainAxis === 'x' ? bottom : right;
var _offset = popperOffsets[altAxis];
var _len = altAxis === 'y' ? 'height' : 'width';
var _min = _offset + overflow[_mainSide];
var _max = _offset - overflow[_altSide];
var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
popperOffsets[altAxis] = _preventedOffset;
data[altAxis] = _preventedOffset - _offset;
}
state.modifiersData[name] = data;
} // eslint-disable-next-line import/no-unused-modules
var preventOverflow$1 = {
name: 'preventOverflow',
enabled: true,
phase: 'main',
fn: preventOverflow,
requiresIfExists: ['offset']
};
function getHTMLElementScroll(element) {
return {
scrollLeft: element.scrollLeft,
scrollTop: element.scrollTop
};
}
function getNodeScroll(node) {
if (node === getWindow(node) || !isHTMLElement(node)) {
return getWindowScroll(node);
} else {
return getHTMLElementScroll(node);
}
}
function isElementScaled(element) {
var rect = element.getBoundingClientRect();
var scaleX = round(rect.width) / element.offsetWidth || 1;
var scaleY = round(rect.height) / element.offsetHeight || 1;
return scaleX !== 1 || scaleY !== 1;
} // Returns the composite rect of an element relative to its offsetParent.
// Composite means it takes into account transforms as well as layout.
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
if (isFixed === void 0) {
isFixed = false;
}
var isOffsetParentAnElement = isHTMLElement(offsetParent);
var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
var documentElement = getDocumentElement(offsetParent);
var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
var scroll = {
scrollLeft: 0,
scrollTop: 0
};
var offsets = {
x: 0,
y: 0
};
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
isScrollParent(documentElement)) {
scroll = getNodeScroll(offsetParent);
}
if (isHTMLElement(offsetParent)) {
offsets = getBoundingClientRect(offsetParent, true);
offsets.x += offsetParent.clientLeft;
offsets.y += offsetParent.clientTop;
} else if (documentElement) {
offsets.x = getWindowScrollBarX(documentElement);
}
}
return {
x: rect.left + scroll.scrollLeft - offsets.x,
y: rect.top + scroll.scrollTop - offsets.y,
width: rect.width,
height: rect.height
};
}
function order$1(modifiers) {
var map = new Map();
var visited = new Set();
var result = [];
modifiers.forEach(function (modifier) {
map.set(modifier.name, modifier);
}); // On visiting object, check for its dependencies and visit them recursively
function sort(modifier) {
visited.add(modifier.name);
var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
requires.forEach(function (dep) {
if (!visited.has(dep)) {
var depModifier = map.get(dep);
if (depModifier) {
sort(depModifier);
}
}
});
result.push(modifier);
}
modifiers.forEach(function (modifier) {
if (!visited.has(modifier.name)) {
// check for visited object
sort(modifier);
}
});
return result;
}
function orderModifiers(modifiers) {
// order based on dependencies
var orderedModifiers = order$1(modifiers); // order based on phase
return modifierPhases.reduce(function (acc, phase) {
return acc.concat(orderedModifiers.filter(function (modifier) {
return modifier.phase === phase;
}));
}, []);
}
function debounce(fn) {
var pending;
return function () {
if (!pending) {
pending = new Promise(function (resolve) {
Promise.resolve().then(function () {
pending = undefined;
resolve(fn());
});
});
}
return pending;
};
}
function format(str) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
return [].concat(args).reduce(function (p, c) {
return p.replace(/%s/, c);
}, str);
}
var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';
var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available';
var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];
function validateModifiers(modifiers) {
modifiers.forEach(function (modifier) {
[].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`
.filter(function (value, index, self) {
return self.indexOf(value) === index;
}).forEach(function (key) {
switch (key) {
case 'name':
if (typeof modifier.name !== 'string') {
console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\""));
}
break;
case 'enabled':
if (typeof modifier.enabled !== 'boolean') {
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\""));
}
break;
case 'phase':
if (modifierPhases.indexOf(modifier.phase) < 0) {
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\""));
}
break;
case 'fn':
if (typeof modifier.fn !== 'function') {
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\""));
}
break;
case 'effect':
if (modifier.effect != null && typeof modifier.effect !== 'function') {
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\""));
}
break;
case 'requires':
if (modifier.requires != null && !Array.isArray(modifier.requires)) {
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\""));
}
break;
case 'requiresIfExists':
if (!Array.isArray(modifier.requiresIfExists)) {
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\""));
}
break;
case 'options':
case 'data':
break;
default:
console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) {
return "\"" + s + "\"";
}).join(', ') + "; but \"" + key + "\" was provided.");
}
modifier.requires && modifier.requires.forEach(function (requirement) {
if (modifiers.find(function (mod) {
return mod.name === requirement;
}) == null) {
console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));
}
});
});
});
}
function uniqueBy(arr, fn) {
var identifiers = new Set();
return arr.filter(function (item) {
var identifier = fn(item);
if (!identifiers.has(identifier)) {
identifiers.add(identifier);
return true;
}
});
}
function mergeByName(modifiers) {
var merged = modifiers.reduce(function (merged, current) {
var existing = merged[current.name];
merged[current.name] = existing ? Object.assign({}, existing, current, {
options: Object.assign({}, existing.options, current.options),
data: Object.assign({}, existing.data, current.data)
}) : current;
return merged;
}, {}); // IE11 does not support Object.values
return Object.keys(merged).map(function (key) {
return merged[key];
});
}
var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';
var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';
var DEFAULT_OPTIONS = {
placement: 'bottom',
modifiers: [],
strategy: 'absolute'
};
function areValidElements() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return !args.some(function (element) {
return !(element && typeof element.getBoundingClientRect === 'function');
});
}
function popperGenerator(generatorOptions) {
if (generatorOptions === void 0) {
generatorOptions = {};
}
var _generatorOptions = generatorOptions,
_generatorOptions$def = _generatorOptions.defaultModifiers,
defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
_generatorOptions$def2 = _generatorOptions.defaultOptions,
defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
return function createPopper(reference, popper, options) {
if (options === void 0) {
options = defaultOptions;
}
var state = {
placement: 'bottom',
orderedModifiers: [],
options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
modifiersData: {},
elements: {
reference: reference,
popper: popper
},
attributes: {},
styles: {}
};
var effectCleanupFns = [];
var isDestroyed = false;
var instance = {
state: state,
setOptions: function setOptions(setOptionsAction) {
var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;
cleanupModifierEffects();
state.options = Object.assign({}, defaultOptions, state.options, options);
state.scrollParents = {
reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
popper: listScrollParents(popper)
}; // Orders the modifiers based on their dependencies and `phase`
// properties
var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers
state.orderedModifiers = orderedModifiers.filter(function (m) {
return m.enabled;
}); // Validate the provided modifiers so that the consumer will get warned
// if one of the modifiers is invalid for any reason
if (process.env.NODE_ENV !== "production") {
var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {
var name = _ref.name;
return name;
});
validateModifiers(modifiers);
if (getBasePlacement(state.options.placement) === auto) {
var flipModifier = state.orderedModifiers.find(function (_ref2) {
var name = _ref2.name;
return name === 'flip';
});
if (!flipModifier) {
console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' '));
}
}
var _getComputedStyle = getComputedStyle$1(popper),
marginTop = _getComputedStyle.marginTop,
marginRight = _getComputedStyle.marginRight,
marginBottom = _getComputedStyle.marginBottom,
marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can
// cause bugs with positioning, so we'll warn the consumer
if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {
return parseFloat(margin);
})) {
console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));
}
}
runModifierEffects();
return instance.update();
},
// Sync update – it will always be executed, even if not necessary. This
// is useful for low frequency updates where sync behavior simplifies the
// logic.
// For high frequency updates (e.g. `resize` and `scroll` events), always
// prefer the async Popper#update method
forceUpdate: function forceUpdate() {
if (isDestroyed) {
return;
}
var _state$elements = state.elements,
reference = _state$elements.reference,
popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements
// anymore
if (!areValidElements(reference, popper)) {
if (process.env.NODE_ENV !== "production") {
console.error(INVALID_ELEMENT_ERROR);
}
return;
} // Store the reference and popper rects to be read by modifiers
state.rects = {
reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),
popper: getLayoutRect(popper)
}; // Modifiers have the ability to reset the current update cycle. The
// most common use case for this is the `flip` modifier changing the
// placement, which then needs to re-run all the modifiers, because the
// logic was previously ran for the previous placement and is therefore
// stale/incorrect
state.reset = false;
state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier
// is filled with the initial data specified by the modifier. This means
// it doesn't persist and is fresh on each update.
// To ensure persistent data, use `${name}#persistent`
state.orderedModifiers.forEach(function (modifier) {
return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
});
var __debug_loops__ = 0;
for (var index = 0; index < state.orderedModifiers.length; index++) {
if (process.env.NODE_ENV !== "production") {
__debug_loops__ += 1;
if (__debug_loops__ > 100) {
console.error(INFINITE_LOOP_ERROR);
break;
}
}
if (state.reset === true) {
state.reset = false;
index = -1;
continue;
}
var _state$orderedModifie = state.orderedModifiers[index],
fn = _state$orderedModifie.fn,
_state$orderedModifie2 = _state$orderedModifie.options,
_options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
name = _state$orderedModifie.name;
if (typeof fn === 'function') {
state = fn({
state: state,
options: _options,
name: name,
instance: instance
}) || state;
}
}
},
// Async and optimistically optimized update – it will not be executed if
// not necessary (debounced to run at most once-per-tick)
update: debounce(function () {
return new Promise(function (resolve) {
instance.forceUpdate();
resolve(state);
});
}),
destroy: function destroy() {
cleanupModifierEffects();
isDestroyed = true;
}
};
if (!areValidElements(reference, popper)) {
if (process.env.NODE_ENV !== "production") {
console.error(INVALID_ELEMENT_ERROR);
}
return instance;
}
instance.setOptions(options).then(function (state) {
if (!isDestroyed && options.onFirstUpdate) {
options.onFirstUpdate(state);
}
}); // Modifiers have the ability to execute arbitrary code before the first
// update cycle runs. They will be executed in the same order as the update
// cycle. This is useful when a modifier adds some persistent data that
// other modifiers need to use, but the modifier is run after the dependent
// one.
function runModifierEffects() {
state.orderedModifiers.forEach(function (_ref3) {
var name = _ref3.name,
_ref3$options = _ref3.options,
options = _ref3$options === void 0 ? {} : _ref3$options,
effect = _ref3.effect;
if (typeof effect === 'function') {
var cleanupFn = effect({
state: state,
name: name,
instance: instance,
options: options
});
var noopFn = function noopFn() {};
effectCleanupFns.push(cleanupFn || noopFn);
}
});
}
function cleanupModifierEffects() {
effectCleanupFns.forEach(function (fn) {
return fn();
});
effectCleanupFns = [];
}
return instance;
};
}
var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
var createPopper$1 = /*#__PURE__*/popperGenerator({
defaultModifiers: defaultModifiers$1
}); // eslint-disable-next-line import/no-unused-modules
var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
var createPopper = /*#__PURE__*/popperGenerator({
defaultModifiers: defaultModifiers
}); // eslint-disable-next-line import/no-unused-modules
var lib$1 = /*#__PURE__*/Object.freeze({
__proto__: null,
popperGenerator: popperGenerator,
detectOverflow: detectOverflow,
createPopperBase: createPopper$2,
createPopper: createPopper,
createPopperLite: createPopper$1,
top: top,
bottom: bottom,
right: right,
left: left,
auto: auto,
basePlacements: basePlacements,
start: start,
end: end,
clippingParents: clippingParents,
viewport: viewport,
popper: popper$1,
reference: reference,
variationPlacements: variationPlacements,
placements: placements,
beforeRead: beforeRead,
read: read$1,
afterRead: afterRead,
beforeMain: beforeMain,
main: main,
afterMain: afterMain,
beforeWrite: beforeWrite,
write: write$1,
afterWrite: afterWrite,
modifierPhases: modifierPhases,
applyStyles: applyStyles$1,
arrow: arrow$1,
computeStyles: computeStyles$1,
eventListeners: eventListeners,
flip: flip$1,
hide: hide$1,
offset: offset$1,
popperOffsets: popperOffsets$1,
preventOverflow: preventOverflow$1
});
var require$$0 = /*@__PURE__*/getAugmentedNamespace(lib$1);
var cytoscapePopper = createCommonjsModule(function (module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory(require$$0);
})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_8__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 7);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
// Simple, internal Object.assign() polyfill for options objects etc.
module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {
for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
srcs[_key - 1] = arguments[_key];
}
srcs.forEach(function (src) {
if (src !== null && src !== undefined) {
Object.keys(src).forEach(function (k) {
return tgt[k] = src[k];
});
}
});
return tgt;
};
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
var _require = __webpack_require__(5),
getBoundingBox = _require.getBoundingBox;
// Create a popper virtual element (aka popper v1 reference object)
// https://popper.js.org/docs/v2/virtual-elements/
function getRef(target, opts) {
//Define popper reference object and cy reference object
var refObject = {
getBoundingClientRect: function getBoundingClientRect() {
return getBoundingBox(target, opts);
}
};
return refObject;
}
module.exports = { getRef: getRef };
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
var assign = __webpack_require__(0);
var _require = __webpack_require__(1),
getRef = _require.getRef;
var _require2 = __webpack_require__(6),
getContent = _require2.getContent;
var popperDefaults = {};
var _require3 = __webpack_require__(8),
createPopper = _require3.createPopper;
// Create a new popper object for a core or element target
function getPopper(target, opts) {
var refObject = getRef(target, opts);
var content = getContent(target, opts.content);
var popperOpts = assign({}, popperDefaults, opts.popper);
return createPopper(refObject, content, popperOpts);
}
module.exports = { getPopper: getPopper };
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
var assign = __webpack_require__(0);
var _require = __webpack_require__(2),
getPopper = _require.getPopper;
var _require2 = __webpack_require__(1),
getRef = _require2.getRef;
function popper(opts) {
checkForWarning(this);
return getPopper(this[0], createOptionsObject(this[0], opts));
}
function popperRef(opts) {
checkForWarning(this);
return getRef(this[0], createOptionsObject(this[0], opts));
}
function createOptionsObject(target, opts) {
var renderedDimensions = function renderedDimensions(el) {
return el.isNode() ? { w: el.renderedWidth(), h: el.renderedHeight() } : { w: 3, h: 3 };
};
var renderedPosition = function renderedPosition(el) {
return el.isNode() ? getRenderedCenter(el, renderedDimensions) : getRenderedMidpoint(el);
};
var popper = {};
var cy = target.cy();
var defaults = { renderedDimensions: renderedDimensions, renderedPosition: renderedPosition, popper: popper, cy: cy };
return assign({}, defaults, opts);
}
//Get the rendered center
function getRenderedCenter(target, renderedDimensions) {
var pos = target.renderedPosition();
var dimensions = renderedDimensions(target);
var offsetX = dimensions.w / 2;
var offsetY = dimensions.h / 2;
return {
x: pos.x - offsetX,
y: pos.y - offsetY
};
}
//Get the rendered position of the midpoint
function getRenderedMidpoint(target) {
var p = target.midpoint();
var pan = target.cy().pan();
var zoom = target.cy().zoom();
return {
x: p.x * zoom + pan.x,
y: p.y * zoom + pan.y
};
}
//Warn user about misuse of the plugin
function checkForWarning(elements) {
/* eslint-disable no-console */
//Popper.js Should only be used on 1 element
if (elements.length > 1) {
console.warn("Popper.js Extension should only be used on one element.");
console.warn("Ignoring all subsequent elements");
}
/* eslint-enable */
}
module.exports = { popper: popper, popperRef: popperRef };
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
var assign = __webpack_require__(0);
var _require = __webpack_require__(2),
getPopper = _require.getPopper;
var _require2 = __webpack_require__(1),
getRef = _require2.getRef;
function popper(opts) {
return getPopper(this, createOptionsObject(this, opts));
}
function popperRef(opts) {
return getRef(this, createOptionsObject(this, opts));
}
//Create a options object with required default values
function createOptionsObject(target, opts) {
var defaults = {
boundingBox: {
top: 0,
left: 0,
right: 0,
bottom: 0,
w: 3,
h: 3
},
renderedDimensions: function renderedDimensions() {
return { w: 3, h: 3 };
},
renderedPosition: function renderedPosition() {
return { x: 0, y: 0 };
},
popper: {},
cy: target
};
return assign({}, defaults, opts);
}
module.exports = { popper: popper, popperRef: popperRef };
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
function getBoundingBox(target, opts) {
var renderedPosition = opts.renderedPosition,
cy = opts.cy,
renderedDimensions = opts.renderedDimensions;
var offset = cy.container().getBoundingClientRect();
var dims = renderedDimensions(target);
var pos = renderedPosition(target);
return {
top: pos.y + offset.top,
left: pos.x + offset.left,
right: pos.x + dims.w + offset.left,
bottom: pos.y + dims.h + offset.top,
width: dims.w,
height: dims.h
};
}
module.exports = { getBoundingBox: getBoundingBox };
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
function getContent(target, content) {
var contentObject = null;
if (typeof content === "function") {
//Execute function if user opted for a dyanamic target
contentObject = content(target);
} else if (content instanceof HTMLElement) {
//Target option is an HTML element
return content;
} else {
throw new Error("Can not create popper from 'target' with unknown type");
}
// Check validity of parsed target
if (contentObject === null) {
throw new Error("No 'target' specified to create popper");
} else {
return contentObject;
}
}
module.exports = { getContent: getContent };
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
/* global cytoscape */
var coreImpl = __webpack_require__(4);
var collectionImpl = __webpack_require__(3);
// registers the extension on a cytoscape lib ref
var register = function register(cytoscape) {
if (!cytoscape) {
return;
} // can't register if cytoscape unspecified
// register with cytoscape.js
cytoscape('core', 'popper', coreImpl.popper); //Cytoscape Core
cytoscape('collection', 'popper', collectionImpl.popper); //Cytoscape Collections
cytoscape('core', 'popperRef', coreImpl.popperRef); //Cytoscape Core for References
cytoscape('collection', 'popperRef', collectionImpl.popperRef); //Cytoscape Collections for References
};
if (typeof cytoscape !== 'undefined') {
// expose to global cytoscape (i.e. window.cytoscape)
register(cytoscape);
}
module.exports = register;
/***/ }),
/* 8 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_8__;
/***/ })
/******/ ]);
});
});
var popper = /*@__PURE__*/getDefaultExportFromCjs(cytoscapePopper);
var PowerEdge = (function () {
function PowerEdge(source, target, type) {
this.source = source;
this.target = target;
this.type = type;
}
return PowerEdge;
}());
var PowerEdge_1 = PowerEdge;
var Configuration = (function () {
function Configuration(n, edges, linkAccessor, rootGroup) {
var _this = this;
this.linkAccessor = linkAccessor;
this.modules = new Array(n);
this.roots = [];
if (rootGroup) {
this.initModulesFromGroup(rootGroup);
}
else {
this.roots.push(new ModuleSet());
for (var i = 0; i < n; ++i)
this.roots[0].add(this.modules[i] = new Module(i));
}
this.R = edges.length;
edges.forEach(function (e) {
var s = _this.modules[linkAccessor.getSourceIndex(e)], t = _this.modules[linkAccessor.getTargetIndex(e)], type = linkAccessor.getType(e);
s.outgoing.add(type, t);
t.incoming.add(type, s);
});
}
Configuration.prototype.initModulesFromGroup = function (group) {
var moduleSet = new ModuleSet();
this.roots.push(moduleSet);
for (var i = 0; i < group.leaves.length; ++i) {
var node = group.leaves[i];
var module = new Module(node.id);
this.modules[node.id] = module;
moduleSet.add(module);
}
if (group.groups) {
for (var j = 0; j < group.groups.length; ++j) {
var child = group.groups[j];
var definition = {};
for (var prop in child)
if (prop !== "leaves" && prop !== "groups" && child.hasOwnProperty(prop))
definition[prop] = child[prop];
moduleSet.add(new Module(-1 - j, new LinkSets(), new LinkSets(), this.initModulesFromGroup(child), definition));
}
}
return moduleSet;
};
Configuration.prototype.merge = function (a, b, k) {
if (k === void 0) { k = 0; }
var inInt = a.incoming.intersection(b.incoming), outInt = a.outgoing.intersection(b.outgoing);
var children = new ModuleSet();
children.add(a);
children.add(b);
var m = new Module(this.modules.length, outInt, inInt, children);
this.modules.push(m);
var update = function (s, i, o) {
s.forAll(function (ms, linktype) {
ms.forAll(function (n) {
var nls = n[i];
nls.add(linktype, m);
nls.remove(linktype, a);
nls.remove(linktype, b);
a[o].remove(linktype, n);
b[o].remove(linktype, n);
});
});
};
update(outInt, "incoming", "outgoing");
update(inInt, "outgoing", "incoming");
this.R -= inInt.count() + outInt.count();
this.roots[k].remove(a);
this.roots[k].remove(b);
this.roots[k].add(m);
return m;
};
Configuration.prototype.rootMerges = function (k) {
if (k === void 0) { k = 0; }
var rs = this.roots[k].modules();
var n = rs.length;
var merges = new Array(n * (n - 1));
var ctr = 0;
for (var i = 0, i_ = n - 1; i < i_; ++i) {
for (var j = i + 1; j < n; ++j) {
var a = rs[i], b = rs[j];
merges[ctr] = { id: ctr, nEdges: this.nEdges(a, b), a: a, b: b };
ctr++;
}
}
return merges;
};
Configuration.prototype.greedyMerge = function () {
for (var i = 0; i < this.roots.length; ++i) {
if (this.roots[i].modules().length < 2)
continue;
var ms = this.rootMerges(i).sort(function (a, b) { return a.nEdges == b.nEdges ? a.id - b.id : a.nEdges - b.nEdges; });
var m = ms[0];
if (m.nEdges >= this.R)
continue;
this.merge(m.a, m.b, i);
return true;
}
};
Configuration.prototype.nEdges = function (a, b) {
var inInt = a.incoming.intersection(b.incoming), outInt = a.outgoing.intersection(b.outgoing);
return this.R - inInt.count() - outInt.count();
};
Configuration.prototype.getGroupHierarchy = function (retargetedEdges) {
var _this = this;
var groups = [];
var root = {};
toGroups(this.roots[0], root, groups);
var es = this.allEdges();
es.forEach(function (e) {
var a = _this.modules[e.source];
var b = _this.modules[e.target];
retargetedEdges.push(new PowerEdge(typeof a.gid === "undefined" ? e.source : groups[a.gid], typeof b.gid === "undefined" ? e.target : groups[b.gid], e.type));
});
return groups;
};
Configuration.prototype.allEdges = function () {
var es = [];
Configuration.getEdges(this.roots[0], es);
return es;
};
Configuration.getEdges = function (modules, es) {
modules.forAll(function (m) {
m.getEdges(es);
Configuration.getEdges(m.children, es);
});
};
return Configuration;
}());
var Configuration_1 = Configuration;
function toGroups(modules, group, groups) {
modules.forAll(function (m) {
if (m.isLeaf()) {
if (!group.leaves)
group.leaves = [];
group.leaves.push(m.id);
}
else {
var g = group;
m.gid = groups.length;
if (!m.isIsland() || m.isPredefined()) {
g = { id: m.gid };
if (m.isPredefined())
for (var prop in m.definition)
g[prop] = m.definition[prop];
if (!group.groups)
group.groups = [];
group.groups.push(m.gid);
groups.push(g);
}
toGroups(m.children, g, groups);
}
});
}
var Module = (function () {
function Module(id, outgoing, incoming, children, definition) {
if (outgoing === void 0) { outgoing = new LinkSets(); }
if (incoming === void 0) { incoming = new LinkSets(); }
if (children === void 0) { children = new ModuleSet(); }
this.id = id;
this.outgoing = outgoing;
this.incoming = incoming;
this.children = children;
this.definition = definition;
}
Module.prototype.getEdges = function (es) {
var _this = this;
this.outgoing.forAll(function (ms, edgetype) {
ms.forAll(function (target) {
es.push(new PowerEdge(_this.id, target.id, edgetype));
});
});
};
Module.prototype.isLeaf = function () {
return this.children.count() === 0;
};
Module.prototype.isIsland = function () {
return this.outgoing.count() === 0 && this.incoming.count() === 0;
};
Module.prototype.isPredefined = function () {
return typeof this.definition !== "undefined";
};
return Module;
}());
var Module_1 = Module;
function intersection(m, n) {
var i = {};
for (var v in m)
if (v in n)
i[v] = m[v];
return i;
}
var ModuleSet = (function () {
function ModuleSet() {
this.table = {};
}
ModuleSet.prototype.count = function () {
return Object.keys(this.table).length;
};
ModuleSet.prototype.intersection = function (other) {
var result = new ModuleSet();
result.table = intersection(this.table, other.table);
return result;
};
ModuleSet.prototype.intersectionCount = function (other) {
return this.intersection(other).count();
};
ModuleSet.prototype.contains = function (id) {
return id in this.table;
};
ModuleSet.prototype.add = function (m) {
this.table[m.id] = m;
};
ModuleSet.prototype.remove = function (m) {
delete this.table[m.id];
};
ModuleSet.prototype.forAll = function (f) {
for (var mid in this.table) {
f(this.table[mid]);
}
};
ModuleSet.prototype.modules = function () {
var vs = [];
this.forAll(function (m) {
if (!m.isPredefined())
vs.push(m);
});
return vs;
};
return ModuleSet;
}());
var ModuleSet_1 = ModuleSet;
var LinkSets = (function () {
function LinkSets() {
this.sets = {};
this.n = 0;
}
LinkSets.prototype.count = function () {
return this.n;
};
LinkSets.prototype.contains = function (id) {
var result = false;
this.forAllModules(function (m) {
if (!result && m.id == id) {
result = true;
}
});
return result;
};
LinkSets.prototype.add = function (linktype, m) {
var s = linktype in this.sets ? this.sets[linktype] : this.sets[linktype] = new ModuleSet();
s.add(m);
++this.n;
};
LinkSets.prototype.remove = function (linktype, m) {
var ms = this.sets[linktype];
ms.remove(m);
if (ms.count() === 0) {
delete this.sets[linktype];
}
--this.n;
};
LinkSets.prototype.forAll = function (f) {
for (var linktype in this.sets) {
f(this.sets[linktype], Number(linktype));
}
};
LinkSets.prototype.forAllModules = function (f) {
this.forAll(function (ms, lt) { return ms.forAll(f); });
};
LinkSets.prototype.intersection = function (other) {
var result = new LinkSets();
this.forAll(function (ms, lt) {
if (lt in other.sets) {
var i = ms.intersection(other.sets[lt]), n = i.count();
if (n > 0) {
result.sets[lt] = i;
result.n += n;
}
}
});
return result;
};
return LinkSets;
}());
var LinkSets_1 = LinkSets;
function getGroups(nodes, links, la, rootGroup) {
var n = nodes.length, c = new Configuration(n, links, la, rootGroup);
while (c.greedyMerge())
;
var powerEdges = [];
var g = c.getGroupHierarchy(powerEdges);
powerEdges.forEach(function (e) {
var f = function (end) {
var g = e[end];
if (typeof g == "number")
e[end] = nodes[g];
};
f("source");
f("target");
});
return { groups: g, powerEdges: powerEdges };
}
var getGroups_1 = getGroups;
var powergraph = /*#__PURE__*/Object.defineProperty({
PowerEdge: PowerEdge_1,
Configuration: Configuration_1,
Module: Module_1,
ModuleSet: ModuleSet_1,
LinkSets: LinkSets_1,
getGroups: getGroups_1
}, '__esModule', {value: true});
function unionCount(a, b) {
var u = {};
for (var i in a)
u[i] = {};
for (var i in b)
u[i] = {};
return Object.keys(u).length;
}
function intersectionCount(a, b) {
var n = 0;
for (var i in a)
if (typeof b[i] !== 'undefined')
++n;
return n;
}
function getNeighbours(links, la) {
var neighbours = {};
var addNeighbours = function (u, v) {
if (typeof neighbours[u] === 'undefined')
neighbours[u] = {};
neighbours[u][v] = {};
};
links.forEach(function (e) {
var u = la.getSourceIndex(e), v = la.getTargetIndex(e);
addNeighbours(u, v);
addNeighbours(v, u);
});
return neighbours;
}
function computeLinkLengths(links, w, f, la) {
var neighbours = getNeighbours(links, la);
links.forEach(function (l) {
var a = neighbours[la.getSourceIndex(l)];
var b = neighbours[la.getTargetIndex(l)];
la.setLength(l, 1 + w * f(a, b));
});
}
function symmetricDiffLinkLengths(links, la, w) {
if (w === void 0) { w = 1; }
computeLinkLengths(links, w, function (a, b) { return Math.sqrt(unionCount(a, b) - intersectionCount(a, b)); }, la);
}
var symmetricDiffLinkLengths_1 = symmetricDiffLinkLengths;
function jaccardLinkLengths(links, la, w) {
if (w === void 0) { w = 1; }
computeLinkLengths(links, w, function (a, b) {
return Math.min(Object.keys(a).length, Object.keys(b).length) < 1.1 ? 0 : intersectionCount(a, b) / unionCount(a, b);
}, la);
}
var jaccardLinkLengths_1 = jaccardLinkLengths;
function generateDirectedEdgeConstraints(n, links, axis, la) {
var components = stronglyConnectedComponents(n, links, la);
var nodes = {};
components.forEach(function (c, i) {
return c.forEach(function (v) { return nodes[v] = i; });
});
var constraints = [];
links.forEach(function (l) {
var ui = la.getSourceIndex(l), vi = la.getTargetIndex(l), u = nodes[ui], v = nodes[vi];
if (u !== v) {
constraints.push({
axis: axis,
left: ui,
right: vi,
gap: la.getMinSeparation(l)
});
}
});
return constraints;
}
var generateDirectedEdgeConstraints_1 = generateDirectedEdgeConstraints;
function stronglyConnectedComponents(numVertices, edges, la) {
var nodes = [];
var index = 0;
var stack = [];
var components = [];
function strongConnect(v) {
v.index = v.lowlink = index++;
stack.push(v);
v.onStack = true;
for (var _i = 0, _a = v.out; _i < _a.length; _i++) {
var w = _a[_i];
if (typeof w.index === 'undefined') {
strongConnect(w);
v.lowlink = Math.min(v.lowlink, w.lowlink);
}
else if (w.onStack) {
v.lowlink = Math.min(v.lowlink, w.index);
}
}
if (v.lowlink === v.index) {
var component = [];
while (stack.length) {
w = stack.pop();
w.onStack = false;
component.push(w);
if (w === v)
break;
}
components.push(component.map(function (v) { return v.id; }));
}
}
for (var i = 0; i < numVertices; i++) {
nodes.push({ id: i, out: [] });
}
for (var _i = 0, edges_1 = edges; _i < edges_1.length; _i++) {
var e = edges_1[_i];
var v_1 = nodes[la.getSourceIndex(e)], w = nodes[la.getTargetIndex(e)];
v_1.out.push(w);
}
for (var _a = 0, nodes_1 = nodes; _a < nodes_1.length; _a++) {
var v = nodes_1[_a];
if (typeof v.index === 'undefined')
strongConnect(v);
}
return components;
}
var stronglyConnectedComponents_1 = stronglyConnectedComponents;
var linklengths = /*#__PURE__*/Object.defineProperty({
symmetricDiffLinkLengths: symmetricDiffLinkLengths_1,
jaccardLinkLengths: jaccardLinkLengths_1,
generateDirectedEdgeConstraints: generateDirectedEdgeConstraints_1,
stronglyConnectedComponents: stronglyConnectedComponents_1
}, '__esModule', {value: true});
var Locks = (function () {
function Locks() {
this.locks = {};
}
Locks.prototype.add = function (id, x) {
this.locks[id] = x;
};
Locks.prototype.clear = function () {
this.locks = {};
};
Locks.prototype.isEmpty = function () {
for (var l in this.locks)
return false;
return true;
};
Locks.prototype.apply = function (f) {
for (var l in this.locks) {
f(Number(l), this.locks[l]);
}
};
return Locks;
}());
var Locks_1 = Locks;
var Descent = (function () {
function Descent(x, D, G) {
if (G === void 0) { G = null; }
this.D = D;
this.G = G;
this.threshold = 0.0001;
this.numGridSnapNodes = 0;
this.snapGridSize = 100;
this.snapStrength = 1000;
this.scaleSnapByMaxH = false;
this.random = new PseudoRandom();
this.project = null;
this.x = x;
this.k = x.length;
var n = this.n = x[0].length;
this.H = new Array(this.k);
this.g = new Array(this.k);
this.Hd = new Array(this.k);
this.a = new Array(this.k);
this.b = new Array(this.k);
this.c = new Array(this.k);
this.d = new Array(this.k);
this.e = new Array(this.k);
this.ia = new Array(this.k);
this.ib = new Array(this.k);
this.xtmp = new Array(this.k);
this.locks = new Locks();
this.minD = Number.MAX_VALUE;
var i = n, j;
while (i--) {
j = n;
while (--j > i) {
var d = D[i][j];
if (d > 0 && d < this.minD) {
this.minD = d;
}
}
}
if (this.minD === Number.MAX_VALUE)
this.minD = 1;
i = this.k;
while (i--) {
this.g[i] = new Array(n);
this.H[i] = new Array(n);
j = n;
while (j--) {
this.H[i][j] = new Array(n);
}
this.Hd[i] = new Array(n);
this.a[i] = new Array(n);
this.b[i] = new Array(n);
this.c[i] = new Array(n);
this.d[i] = new Array(n);
this.e[i] = new Array(n);
this.ia[i] = new Array(n);
this.ib[i] = new Array(n);
this.xtmp[i] = new Array(n);
}
}
Descent.createSquareMatrix = function (n, f) {
var M = new Array(n);
for (var i = 0; i < n; ++i) {
M[i] = new Array(n);
for (var j = 0; j < n; ++j) {
M[i][j] = f(i, j);
}
}
return M;
};
Descent.prototype.offsetDir = function () {
var _this = this;
var u = new Array(this.k);
var l = 0;
for (var i = 0; i < this.k; ++i) {
var x = u[i] = this.random.getNextBetween(0.01, 1) - 0.5;
l += x * x;
}
l = Math.sqrt(l);
return u.map(function (x) { return x *= _this.minD / l; });
};
Descent.prototype.computeDerivatives = function (x) {
var _this = this;
var n = this.n;
if (n < 1)
return;
var i;
var d = new Array(this.k);
var d2 = new Array(this.k);
var Huu = new Array(this.k);
var maxH = 0;
for (var u = 0; u < n; ++u) {
for (i = 0; i < this.k; ++i)
Huu[i] = this.g[i][u] = 0;
for (var v = 0; v < n; ++v) {
if (u === v)
continue;
var maxDisplaces = n;
while (maxDisplaces--) {
var sd2 = 0;
for (i = 0; i < this.k; ++i) {
var dx = d[i] = x[i][u] - x[i][v];
sd2 += d2[i] = dx * dx;
}
if (sd2 > 1e-9)
break;
var rd = this.offsetDir();
for (i = 0; i < this.k; ++i)
x[i][v] += rd[i];
}
var l = Math.sqrt(sd2);
var D = this.D[u][v];
var weight = this.G != null ? this.G[u][v] : 1;
if (weight > 1 && l > D || !isFinite(D)) {
for (i = 0; i < this.k; ++i)
this.H[i][u][v] = 0;
continue;
}
if (weight > 1) {
weight = 1;
}
var D2 = D * D;
var gs = 2 * weight * (l - D) / (D2 * l);
var l3 = l * l * l;
var hs = 2 * -weight / (D2 * l3);
if (!isFinite(gs))
console.log(gs);
for (i = 0; i < this.k; ++i) {
this.g[i][u] += d[i] * gs;
Huu[i] -= this.H[i][u][v] = hs * (l3 + D * (d2[i] - sd2) + l * sd2);
}
}
for (i = 0; i < this.k; ++i)
maxH = Math.max(maxH, this.H[i][u][u] = Huu[i]);
}
var r = this.snapGridSize / 2;
var g = this.snapGridSize;
var w = this.snapStrength;
var k = w / (r * r);
var numNodes = this.numGridSnapNodes;
for (var u = 0; u < numNodes; ++u) {
for (i = 0; i < this.k; ++i) {
var xiu = this.x[i][u];
var m = xiu / g;
var f = m % 1;
var q = m - f;
var a = Math.abs(f);
var dx = (a <= 0.5) ? xiu - q * g :
(xiu > 0) ? xiu - (q + 1) * g : xiu - (q - 1) * g;
if (-r < dx && dx <= r) {
if (this.scaleSnapByMaxH) {
this.g[i][u] += maxH * k * dx;
this.H[i][u][u] += maxH * k;
}
else {
this.g[i][u] += k * dx;
this.H[i][u][u] += k;
}
}
}
}
if (!this.locks.isEmpty()) {
this.locks.apply(function (u, p) {
for (i = 0; i < _this.k; ++i) {
_this.H[i][u][u] += maxH;
_this.g[i][u] -= maxH * (p[i] - x[i][u]);
}
});
}
};
Descent.dotProd = function (a, b) {
var x = 0, i = a.length;
while (i--)
x += a[i] * b[i];
return x;
};
Descent.rightMultiply = function (m, v, r) {
var i = m.length;
while (i--)
r[i] = Descent.dotProd(m[i], v);
};
Descent.prototype.computeStepSize = function (d) {
var numerator = 0, denominator = 0;
for (var i = 0; i < this.k; ++i) {
numerator += Descent.dotProd(this.g[i], d[i]);
Descent.rightMultiply(this.H[i], d[i], this.Hd[i]);
denominator += Descent.dotProd(d[i], this.Hd[i]);
}
if (denominator === 0 || !isFinite(denominator))
return 0;
return 1 * numerator / denominator;
};
Descent.prototype.reduceStress = function () {
this.computeDerivatives(this.x);
var alpha = this.computeStepSize(this.g);
for (var i = 0; i < this.k; ++i) {
this.takeDescentStep(this.x[i], this.g[i], alpha);
}
return this.computeStress();
};
Descent.copy = function (a, b) {
var m = a.length, n = b[0].length;
for (var i = 0; i < m; ++i) {
for (var j = 0; j < n; ++j) {
b[i][j] = a[i][j];
}
}
};
Descent.prototype.stepAndProject = function (x0, r, d, stepSize) {
Descent.copy(x0, r);
this.takeDescentStep(r[0], d[0], stepSize);
if (this.project)
this.project[0](x0[0], x0[1], r[0]);
this.takeDescentStep(r[1], d[1], stepSize);
if (this.project)
this.project[1](r[0], x0[1], r[1]);
for (var i = 2; i < this.k; i++)
this.takeDescentStep(r[i], d[i], stepSize);
};
Descent.mApply = function (m, n, f) {
var i = m;
while (i-- > 0) {
var j = n;
while (j-- > 0)
f(i, j);
}
};
Descent.prototype.matrixApply = function (f) {
Descent.mApply(this.k, this.n, f);
};
Descent.prototype.computeNextPosition = function (x0, r) {
var _this = this;
this.computeDerivatives(x0);
var alpha = this.computeStepSize(this.g);
this.stepAndProject(x0, r, this.g, alpha);
if (this.project) {
this.matrixApply(function (i, j) { return _this.e[i][j] = x0[i][j] - r[i][j]; });
var beta = this.computeStepSize(this.e);
beta = Math.max(0.2, Math.min(beta, 1));
this.stepAndProject(x0, r, this.e, beta);
}
};
Descent.prototype.run = function (iterations) {
var stress = Number.MAX_VALUE, converged = false;
while (!converged && iterations-- > 0) {
var s = this.rungeKutta();
converged = Math.abs(stress / s - 1) < this.threshold;
stress = s;
}
return stress;
};
Descent.prototype.rungeKutta = function () {
var _this = this;
this.computeNextPosition(this.x, this.a);
Descent.mid(this.x, this.a, this.ia);
this.computeNextPosition(this.ia, this.b);
Descent.mid(this.x, this.b, this.ib);
this.computeNextPosition(this.ib, this.c);
this.computeNextPosition(this.c, this.d);
var disp = 0;
this.matrixApply(function (i, j) {
var x = (_this.a[i][j] + 2.0 * _this.b[i][j] + 2.0 * _this.c[i][j] + _this.d[i][j]) / 6.0, d = _this.x[i][j] - x;
disp += d * d;
_this.x[i][j] = x;
});
return disp;
};
Descent.mid = function (a, b, m) {
Descent.mApply(a.length, a[0].length, function (i, j) {
return m[i][j] = a[i][j] + (b[i][j] - a[i][j]) / 2.0;
});
};
Descent.prototype.takeDescentStep = function (x, d, stepSize) {
for (var i = 0; i < this.n; ++i) {
x[i] = x[i] - stepSize * d[i];
}
};
Descent.prototype.computeStress = function () {
var stress = 0;
for (var u = 0, nMinus1 = this.n - 1; u < nMinus1; ++u) {
for (var v = u + 1, n = this.n; v < n; ++v) {
var l = 0;
for (var i = 0; i < this.k; ++i) {
var dx = this.x[i][u] - this.x[i][v];
l += dx * dx;
}
l = Math.sqrt(l);
var d = this.D[u][v];
if (!isFinite(d))
continue;
var rl = d - l;
var d2 = d * d;
stress += rl * rl / d2;
}
}
return stress;
};
Descent.zeroDistance = 1e-10;
return Descent;
}());
var Descent_1 = Descent;
var PseudoRandom = (function () {
function PseudoRandom(seed) {
if (seed === void 0) { seed = 1; }
this.seed = seed;
this.a = 214013;
this.c = 2531011;
this.m = 2147483648;
this.range = 32767;
}
PseudoRandom.prototype.getNext = function () {
this.seed = (this.seed * this.a + this.c) % this.m;
return (this.seed >> 16) / this.range;
};
PseudoRandom.prototype.getNextBetween = function (min, max) {
return min + this.getNext() * (max - min);
};
return PseudoRandom;
}());
var PseudoRandom_1 = PseudoRandom;
var descent = /*#__PURE__*/Object.defineProperty({
Locks: Locks_1,
Descent: Descent_1,
PseudoRandom: PseudoRandom_1
}, '__esModule', {value: true});
var PositionStats = (function () {
function PositionStats(scale) {
this.scale = scale;
this.AB = 0;
this.AD = 0;
this.A2 = 0;
}
PositionStats.prototype.addVariable = function (v) {
var ai = this.scale / v.scale;
var bi = v.offset / v.scale;
var wi = v.weight;
this.AB += wi * ai * bi;
this.AD += wi * ai * v.desiredPosition;
this.A2 += wi * ai * ai;
};
PositionStats.prototype.getPosn = function () {
return (this.AD - this.AB) / this.A2;
};
return PositionStats;
}());
var PositionStats_1 = PositionStats;
var Constraint = (function () {
function Constraint(left, right, gap, equality) {
if (equality === void 0) { equality = false; }
this.left = left;
this.right = right;
this.gap = gap;
this.equality = equality;
this.active = false;
this.unsatisfiable = false;
this.left = left;
this.right = right;
this.gap = gap;
this.equality = equality;
}
Constraint.prototype.slack = function () {
return this.unsatisfiable ? Number.MAX_VALUE
: this.right.scale * this.right.position() - this.gap
- this.left.scale * this.left.position();
};
return Constraint;
}());
var Constraint_1 = Constraint;
var Variable = (function () {
function Variable(desiredPosition, weight, scale) {
if (weight === void 0) { weight = 1; }
if (scale === void 0) { scale = 1; }
this.desiredPosition = desiredPosition;
this.weight = weight;
this.scale = scale;
this.offset = 0;
}
Variable.prototype.dfdv = function () {
return 2.0 * this.weight * (this.position() - this.desiredPosition);
};
Variable.prototype.position = function () {
return (this.block.ps.scale * this.block.posn + this.offset) / this.scale;
};
Variable.prototype.visitNeighbours = function (prev, f) {
var ff = function (c, next) { return c.active && prev !== next && f(c, next); };
this.cOut.forEach(function (c) { return ff(c, c.right); });
this.cIn.forEach(function (c) { return ff(c, c.left); });
};
return Variable;
}());
var Variable_1 = Variable;
var Block = (function () {
function Block(v) {
this.vars = [];
v.offset = 0;
this.ps = new PositionStats(v.scale);
this.addVariable(v);
}
Block.prototype.addVariable = function (v) {
v.block = this;
this.vars.push(v);
this.ps.addVariable(v);
this.posn = this.ps.getPosn();
};
Block.prototype.updateWeightedPosition = function () {
this.ps.AB = this.ps.AD = this.ps.A2 = 0;
for (var i = 0, n = this.vars.length; i < n; ++i)
this.ps.addVariable(this.vars[i]);
this.posn = this.ps.getPosn();
};
Block.prototype.compute_lm = function (v, u, postAction) {
var _this = this;
var dfdv = v.dfdv();
v.visitNeighbours(u, function (c, next) {
var _dfdv = _this.compute_lm(next, v, postAction);
if (next === c.right) {
dfdv += _dfdv * c.left.scale;
c.lm = _dfdv;
}
else {
dfdv += _dfdv * c.right.scale;
c.lm = -_dfdv;
}
postAction(c);
});
return dfdv / v.scale;
};
Block.prototype.populateSplitBlock = function (v, prev) {
var _this = this;
v.visitNeighbours(prev, function (c, next) {
next.offset = v.offset + (next === c.right ? c.gap : -c.gap);
_this.addVariable(next);
_this.populateSplitBlock(next, v);
});
};
Block.prototype.traverse = function (visit, acc, v, prev) {
var _this = this;
if (v === void 0) { v = this.vars[0]; }
if (prev === void 0) { prev = null; }
v.visitNeighbours(prev, function (c, next) {
acc.push(visit(c));
_this.traverse(visit, acc, next, v);
});
};
Block.prototype.findMinLM = function () {
var m = null;
this.compute_lm(this.vars[0], null, function (c) {
if (!c.equality && (m === null || c.lm < m.lm))
m = c;
});
return m;
};
Block.prototype.findMinLMBetween = function (lv, rv) {
this.compute_lm(lv, null, function () { });
var m = null;
this.findPath(lv, null, rv, function (c, next) {
if (!c.equality && c.right === next && (m === null || c.lm < m.lm))
m = c;
});
return m;
};
Block.prototype.findPath = function (v, prev, to, visit) {
var _this = this;
var endFound = false;
v.visitNeighbours(prev, function (c, next) {
if (!endFound && (next === to || _this.findPath(next, v, to, visit))) {
endFound = true;
visit(c, next);
}
});
return endFound;
};
Block.prototype.isActiveDirectedPathBetween = function (u, v) {
if (u === v)
return true;
var i = u.cOut.length;
while (i--) {
var c = u.cOut[i];
if (c.active && this.isActiveDirectedPathBetween(c.right, v))
return true;
}
return false;
};
Block.split = function (c) {
c.active = false;
return [Block.createSplitBlock(c.left), Block.createSplitBlock(c.right)];
};
Block.createSplitBlock = function (startVar) {
var b = new Block(startVar);
b.populateSplitBlock(startVar, null);
return b;
};
Block.prototype.splitBetween = function (vl, vr) {
var c = this.findMinLMBetween(vl, vr);
if (c !== null) {
var bs = Block.split(c);
return { constraint: c, lb: bs[0], rb: bs[1] };
}
return null;
};
Block.prototype.mergeAcross = function (b, c, dist) {
c.active = true;
for (var i = 0, n = b.vars.length; i < n; ++i) {
var v = b.vars[i];
v.offset += dist;
this.addVariable(v);
}
this.posn = this.ps.getPosn();
};
Block.prototype.cost = function () {
var sum = 0, i = this.vars.length;
while (i--) {
var v = this.vars[i], d = v.position() - v.desiredPosition;
sum += d * d * v.weight;
}
return sum;
};
return Block;
}());
var Block_1 = Block;
var Blocks = (function () {
function Blocks(vs) {
this.vs = vs;
var n = vs.length;
this.list = new Array(n);
while (n--) {
var b = new Block(vs[n]);
this.list[n] = b;
b.blockInd = n;
}
}
Blocks.prototype.cost = function () {
var sum = 0, i = this.list.length;
while (i--)
sum += this.list[i].cost();
return sum;
};
Blocks.prototype.insert = function (b) {
b.blockInd = this.list.length;
this.list.push(b);
};
Blocks.prototype.remove = function (b) {
var last = this.list.length - 1;
var swapBlock = this.list[last];
this.list.length = last;
if (b !== swapBlock) {
this.list[b.blockInd] = swapBlock;
swapBlock.blockInd = b.blockInd;
}
};
Blocks.prototype.merge = function (c) {
var l = c.left.block, r = c.right.block;
var dist = c.right.offset - c.left.offset - c.gap;
if (l.vars.length < r.vars.length) {
r.mergeAcross(l, c, dist);
this.remove(l);
}
else {
l.mergeAcross(r, c, -dist);
this.remove(r);
}
};
Blocks.prototype.forEach = function (f) {
this.list.forEach(f);
};
Blocks.prototype.updateBlockPositions = function () {
this.list.forEach(function (b) { return b.updateWeightedPosition(); });
};
Blocks.prototype.split = function (inactive) {
var _this = this;
this.updateBlockPositions();
this.list.forEach(function (b) {
var v = b.findMinLM();
if (v !== null && v.lm < Solver.LAGRANGIAN_TOLERANCE) {
b = v.left.block;
Block.split(v).forEach(function (nb) { return _this.insert(nb); });
_this.remove(b);
inactive.push(v);
}
});
};
return Blocks;
}());
var Blocks_1 = Blocks;
var Solver = (function () {
function Solver(vs, cs) {
this.vs = vs;
this.cs = cs;
this.vs = vs;
vs.forEach(function (v) {
v.cIn = [], v.cOut = [];
});
this.cs = cs;
cs.forEach(function (c) {
c.left.cOut.push(c);
c.right.cIn.push(c);
});
this.inactive = cs.map(function (c) { c.active = false; return c; });
this.bs = null;
}
Solver.prototype.cost = function () {
return this.bs.cost();
};
Solver.prototype.setStartingPositions = function (ps) {
this.inactive = this.cs.map(function (c) { c.active = false; return c; });
this.bs = new Blocks(this.vs);
this.bs.forEach(function (b, i) { return b.posn = ps[i]; });
};
Solver.prototype.setDesiredPositions = function (ps) {
this.vs.forEach(function (v, i) { return v.desiredPosition = ps[i]; });
};
Solver.prototype.mostViolated = function () {
var minSlack = Number.MAX_VALUE, v = null, l = this.inactive, n = l.length, deletePoint = n;
for (var i = 0; i < n; ++i) {
var c = l[i];
if (c.unsatisfiable)
continue;
var slack = c.slack();
if (c.equality || slack < minSlack) {
minSlack = slack;
v = c;
deletePoint = i;
if (c.equality)
break;
}
}
if (deletePoint !== n &&
(minSlack < Solver.ZERO_UPPERBOUND && !v.active || v.equality)) {
l[deletePoint] = l[n - 1];
l.length = n - 1;
}
return v;
};
Solver.prototype.satisfy = function () {
if (this.bs == null) {
this.bs = new Blocks(this.vs);
}
this.bs.split(this.inactive);
var v = null;
while ((v = this.mostViolated()) && (v.equality || v.slack() < Solver.ZERO_UPPERBOUND && !v.active)) {
var lb = v.left.block, rb = v.right.block;
if (lb !== rb) {
this.bs.merge(v);
}
else {
if (lb.isActiveDirectedPathBetween(v.right, v.left)) {
v.unsatisfiable = true;
continue;
}
var split = lb.splitBetween(v.left, v.right);
if (split !== null) {
this.bs.insert(split.lb);
this.bs.insert(split.rb);
this.bs.remove(lb);
this.inactive.push(split.constraint);
}
else {
v.unsatisfiable = true;
continue;
}
if (v.slack() >= 0) {
this.inactive.push(v);
}
else {
this.bs.merge(v);
}
}
}
};
Solver.prototype.solve = function () {
this.satisfy();
var lastcost = Number.MAX_VALUE, cost = this.bs.cost();
while (Math.abs(lastcost - cost) > 0.0001) {
this.satisfy();
lastcost = cost;
cost = this.bs.cost();
}
return cost;
};
Solver.LAGRANGIAN_TOLERANCE = -1e-4;
Solver.ZERO_UPPERBOUND = -1e-10;
return Solver;
}());
var Solver_1 = Solver;
function removeOverlapInOneDimension(spans, lowerBound, upperBound) {
var vs = spans.map(function (s) { return new Variable(s.desiredCenter); });
var cs = [];
var n = spans.length;
for (var i = 0; i < n - 1; i++) {
var left = spans[i], right = spans[i + 1];
cs.push(new Constraint(vs[i], vs[i + 1], (left.size + right.size) / 2));
}
var leftMost = vs[0], rightMost = vs[n - 1], leftMostSize = spans[0].size / 2, rightMostSize = spans[n - 1].size / 2;
var vLower = null, vUpper = null;
if (lowerBound) {
vLower = new Variable(lowerBound, leftMost.weight * 1000);
vs.push(vLower);
cs.push(new Constraint(vLower, leftMost, leftMostSize));
}
if (upperBound) {
vUpper = new Variable(upperBound, rightMost.weight * 1000);
vs.push(vUpper);
cs.push(new Constraint(rightMost, vUpper, rightMostSize));
}
var solver = new Solver(vs, cs);
solver.solve();
return {
newCenters: vs.slice(0, spans.length).map(function (v) { return v.position(); }),
lowerBound: vLower ? vLower.position() : leftMost.position() - leftMostSize,
upperBound: vUpper ? vUpper.position() : rightMost.position() + rightMostSize
};
}
var removeOverlapInOneDimension_1 = removeOverlapInOneDimension;
var vpsc = /*#__PURE__*/Object.defineProperty({
PositionStats: PositionStats_1,
Constraint: Constraint_1,
Variable: Variable_1,
Block: Block_1,
Blocks: Blocks_1,
Solver: Solver_1,
removeOverlapInOneDimension: removeOverlapInOneDimension_1
}, '__esModule', {value: true});
var __extends$5 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var TreeBase = (function () {
function TreeBase() {
this.findIter = function (data) {
var res = this._root;
var iter = this.iterator();
while (res !== null) {
var c = this._comparator(data, res.data);
if (c === 0) {
iter._cursor = res;
return iter;
}
else {
iter._ancestors.push(res);
res = res.get_child(c > 0);
}
}
return null;
};
}
TreeBase.prototype.clear = function () {
this._root = null;
this.size = 0;
};
TreeBase.prototype.find = function (data) {
var res = this._root;
while (res !== null) {
var c = this._comparator(data, res.data);
if (c === 0) {
return res.data;
}
else {
res = res.get_child(c > 0);
}
}
return null;
};
TreeBase.prototype.lowerBound = function (data) {
return this._bound(data, this._comparator);
};
TreeBase.prototype.upperBound = function (data) {
var cmp = this._comparator;
function reverse_cmp(a, b) {
return cmp(b, a);
}
return this._bound(data, reverse_cmp);
};
TreeBase.prototype.min = function () {
var res = this._root;
if (res === null) {
return null;
}
while (res.left !== null) {
res = res.left;
}
return res.data;
};
TreeBase.prototype.max = function () {
var res = this._root;
if (res === null) {
return null;
}
while (res.right !== null) {
res = res.right;
}
return res.data;
};
TreeBase.prototype.iterator = function () {
return new Iterator(this);
};
TreeBase.prototype.each = function (cb) {
var it = this.iterator(), data;
while ((data = it.next()) !== null) {
cb(data);
}
};
TreeBase.prototype.reach = function (cb) {
var it = this.iterator(), data;
while ((data = it.prev()) !== null) {
cb(data);
}
};
TreeBase.prototype._bound = function (data, cmp) {
var cur = this._root;
var iter = this.iterator();
while (cur !== null) {
var c = this._comparator(data, cur.data);
if (c === 0) {
iter._cursor = cur;
return iter;
}
iter._ancestors.push(cur);
cur = cur.get_child(c > 0);
}
for (var i = iter._ancestors.length - 1; i >= 0; --i) {
cur = iter._ancestors[i];
if (cmp(data, cur.data) > 0) {
iter._cursor = cur;
iter._ancestors.length = i;
return iter;
}
}
iter._ancestors.length = 0;
return iter;
};
return TreeBase;
}());
var TreeBase_1 = TreeBase;
var Iterator = (function () {
function Iterator(tree) {
this._tree = tree;
this._ancestors = [];
this._cursor = null;
}
Iterator.prototype.data = function () {
return this._cursor !== null ? this._cursor.data : null;
};
Iterator.prototype.next = function () {
if (this._cursor === null) {
var root = this._tree._root;
if (root !== null) {
this._minNode(root);
}
}
else {
if (this._cursor.right === null) {
var save;
do {
save = this._cursor;
if (this._ancestors.length) {
this._cursor = this._ancestors.pop();
}
else {
this._cursor = null;
break;
}
} while (this._cursor.right === save);
}
else {
this._ancestors.push(this._cursor);
this._minNode(this._cursor.right);
}
}
return this._cursor !== null ? this._cursor.data : null;
};
Iterator.prototype.prev = function () {
if (this._cursor === null) {
var root = this._tree._root;
if (root !== null) {
this._maxNode(root);
}
}
else {
if (this._cursor.left === null) {
var save;
do {
save = this._cursor;
if (this._ancestors.length) {
this._cursor = this._ancestors.pop();
}
else {
this._cursor = null;
break;
}
} while (this._cursor.left === save);
}
else {
this._ancestors.push(this._cursor);
this._maxNode(this._cursor.left);
}
}
return this._cursor !== null ? this._cursor.data : null;
};
Iterator.prototype._minNode = function (start) {
while (start.left !== null) {
this._ancestors.push(start);
start = start.left;
}
this._cursor = start;
};
Iterator.prototype._maxNode = function (start) {
while (start.right !== null) {
this._ancestors.push(start);
start = start.right;
}
this._cursor = start;
};
return Iterator;
}());
var Iterator_1 = Iterator;
var Node$2 = (function () {
function Node(data) {
this.data = data;
this.left = null;
this.right = null;
this.red = true;
}
Node.prototype.get_child = function (dir) {
return dir ? this.right : this.left;
};
Node.prototype.set_child = function (dir, val) {
if (dir) {
this.right = val;
}
else {
this.left = val;
}
};
return Node;
}());
var RBTree = (function (_super) {
__extends$5(RBTree, _super);
function RBTree(comparator) {
var _this = _super.call(this) || this;
_this._root = null;
_this._comparator = comparator;
_this.size = 0;
return _this;
}
RBTree.prototype.insert = function (data) {
var ret = false;
if (this._root === null) {
this._root = new Node$2(data);
ret = true;
this.size++;
}
else {
var head = new Node$2(undefined);
var dir = false;
var last = false;
var gp = null;
var ggp = head;
var p = null;
var node = this._root;
ggp.right = this._root;
while (true) {
if (node === null) {
node = new Node$2(data);
p.set_child(dir, node);
ret = true;
this.size++;
}
else if (RBTree.is_red(node.left) && RBTree.is_red(node.right)) {
node.red = true;
node.left.red = false;
node.right.red = false;
}
if (RBTree.is_red(node) && RBTree.is_red(p)) {
var dir2 = ggp.right === gp;
if (node === p.get_child(last)) {
ggp.set_child(dir2, RBTree.single_rotate(gp, !last));
}
else {
ggp.set_child(dir2, RBTree.double_rotate(gp, !last));
}
}
var cmp = this._comparator(node.data, data);
if (cmp === 0) {
break;
}
last = dir;
dir = cmp < 0;
if (gp !== null) {
ggp = gp;
}
gp = p;
p = node;
node = node.get_child(dir);
}
this._root = head.right;
}
this._root.red = false;
return ret;
};
RBTree.prototype.remove = function (data) {
if (this._root === null) {
return false;
}
var head = new Node$2(undefined);
var node = head;
node.right = this._root;
var p = null;
var gp = null;
var found = null;
var dir = true;
while (node.get_child(dir) !== null) {
var last = dir;
gp = p;
p = node;
node = node.get_child(dir);
var cmp = this._comparator(data, node.data);
dir = cmp > 0;
if (cmp === 0) {
found = node;
}
if (!RBTree.is_red(node) && !RBTree.is_red(node.get_child(dir))) {
if (RBTree.is_red(node.get_child(!dir))) {
var sr = RBTree.single_rotate(node, dir);
p.set_child(last, sr);
p = sr;
}
else if (!RBTree.is_red(node.get_child(!dir))) {
var sibling = p.get_child(!last);
if (sibling !== null) {
if (!RBTree.is_red(sibling.get_child(!last)) && !RBTree.is_red(sibling.get_child(last))) {
p.red = false;
sibling.red = true;
node.red = true;
}
else {
var dir2 = gp.right === p;
if (RBTree.is_red(sibling.get_child(last))) {
gp.set_child(dir2, RBTree.double_rotate(p, last));
}
else if (RBTree.is_red(sibling.get_child(!last))) {
gp.set_child(dir2, RBTree.single_rotate(p, last));
}
var gpc = gp.get_child(dir2);
gpc.red = true;
node.red = true;
gpc.left.red = false;
gpc.right.red = false;
}
}
}
}
}
if (found !== null) {
found.data = node.data;
p.set_child(p.right === node, node.get_child(node.left === null));
this.size--;
}
this._root = head.right;
if (this._root !== null) {
this._root.red = false;
}
return found !== null;
};
RBTree.is_red = function (node) {
return node !== null && node.red;
};
RBTree.single_rotate = function (root, dir) {
var save = root.get_child(!dir);
root.set_child(!dir, save.get_child(dir));
save.set_child(dir, root);
root.red = true;
save.red = false;
return save;
};
RBTree.double_rotate = function (root, dir) {
root.set_child(!dir, RBTree.single_rotate(root.get_child(!dir), !dir));
return RBTree.single_rotate(root, dir);
};
return RBTree;
}(TreeBase));
var RBTree_1 = RBTree;
var rbtree = /*#__PURE__*/Object.defineProperty({
TreeBase: TreeBase_1,
Iterator: Iterator_1,
RBTree: RBTree_1
}, '__esModule', {value: true});
var __extends$4 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
function computeGroupBounds(g) {
g.bounds = typeof g.leaves !== "undefined" ?
g.leaves.reduce(function (r, c) { return c.bounds.union(r); }, Rectangle.empty()) :
Rectangle.empty();
if (typeof g.groups !== "undefined")
g.bounds = g.groups.reduce(function (r, c) { return computeGroupBounds(c).union(r); }, g.bounds);
g.bounds = g.bounds.inflate(g.padding);
return g.bounds;
}
var computeGroupBounds_1 = computeGroupBounds;
var Rectangle = (function () {
function Rectangle(x, X, y, Y) {
this.x = x;
this.X = X;
this.y = y;
this.Y = Y;
}
Rectangle.empty = function () { return new Rectangle(Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY); };
Rectangle.prototype.cx = function () { return (this.x + this.X) / 2; };
Rectangle.prototype.cy = function () { return (this.y + this.Y) / 2; };
Rectangle.prototype.overlapX = function (r) {
var ux = this.cx(), vx = r.cx();
if (ux <= vx && r.x < this.X)
return this.X - r.x;
if (vx <= ux && this.x < r.X)
return r.X - this.x;
return 0;
};
Rectangle.prototype.overlapY = function (r) {
var uy = this.cy(), vy = r.cy();
if (uy <= vy && r.y < this.Y)
return this.Y - r.y;
if (vy <= uy && this.y < r.Y)
return r.Y - this.y;
return 0;
};
Rectangle.prototype.setXCentre = function (cx) {
var dx = cx - this.cx();
this.x += dx;
this.X += dx;
};
Rectangle.prototype.setYCentre = function (cy) {
var dy = cy - this.cy();
this.y += dy;
this.Y += dy;
};
Rectangle.prototype.width = function () {
return this.X - this.x;
};
Rectangle.prototype.height = function () {
return this.Y - this.y;
};
Rectangle.prototype.union = function (r) {
return new Rectangle(Math.min(this.x, r.x), Math.max(this.X, r.X), Math.min(this.y, r.y), Math.max(this.Y, r.Y));
};
Rectangle.prototype.lineIntersections = function (x1, y1, x2, y2) {
var sides = [[this.x, this.y, this.X, this.y],
[this.X, this.y, this.X, this.Y],
[this.X, this.Y, this.x, this.Y],
[this.x, this.Y, this.x, this.y]];
var intersections = [];
for (var i = 0; i < 4; ++i) {
var r = Rectangle.lineIntersection(x1, y1, x2, y2, sides[i][0], sides[i][1], sides[i][2], sides[i][3]);
if (r !== null)
intersections.push({ x: r.x, y: r.y });
}
return intersections;
};
Rectangle.prototype.rayIntersection = function (x2, y2) {
var ints = this.lineIntersections(this.cx(), this.cy(), x2, y2);
return ints.length > 0 ? ints[0] : null;
};
Rectangle.prototype.vertices = function () {
return [
{ x: this.x, y: this.y },
{ x: this.X, y: this.y },
{ x: this.X, y: this.Y },
{ x: this.x, y: this.Y }
];
};
Rectangle.lineIntersection = function (x1, y1, x2, y2, x3, y3, x4, y4) {
var dx12 = x2 - x1, dx34 = x4 - x3, dy12 = y2 - y1, dy34 = y4 - y3, denominator = dy34 * dx12 - dx34 * dy12;
if (denominator == 0)
return null;
var dx31 = x1 - x3, dy31 = y1 - y3, numa = dx34 * dy31 - dy34 * dx31, a = numa / denominator, numb = dx12 * dy31 - dy12 * dx31, b = numb / denominator;
if (a >= 0 && a <= 1 && b >= 0 && b <= 1) {
return {
x: x1 + a * dx12,
y: y1 + a * dy12
};
}
return null;
};
Rectangle.prototype.inflate = function (pad) {
return new Rectangle(this.x - pad, this.X + pad, this.y - pad, this.Y + pad);
};
return Rectangle;
}());
var Rectangle_1 = Rectangle;
function makeEdgeBetween(source, target, ah) {
var si = source.rayIntersection(target.cx(), target.cy()) || { x: source.cx(), y: source.cy() }, ti = target.rayIntersection(source.cx(), source.cy()) || { x: target.cx(), y: target.cy() }, dx = ti.x - si.x, dy = ti.y - si.y, l = Math.sqrt(dx * dx + dy * dy), al = l - ah;
return {
sourceIntersection: si,
targetIntersection: ti,
arrowStart: { x: si.x + al * dx / l, y: si.y + al * dy / l }
};
}
var makeEdgeBetween_1 = makeEdgeBetween;
function makeEdgeTo(s, target, ah) {
var ti = target.rayIntersection(s.x, s.y);
if (!ti)
ti = { x: target.cx(), y: target.cy() };
var dx = ti.x - s.x, dy = ti.y - s.y, l = Math.sqrt(dx * dx + dy * dy);
return { x: ti.x - ah * dx / l, y: ti.y - ah * dy / l };
}
var makeEdgeTo_1 = makeEdgeTo;
var Node$1 = (function () {
function Node(v, r, pos) {
this.v = v;
this.r = r;
this.pos = pos;
this.prev = makeRBTree();
this.next = makeRBTree();
}
return Node;
}());
var Event = (function () {
function Event(isOpen, v, pos) {
this.isOpen = isOpen;
this.v = v;
this.pos = pos;
}
return Event;
}());
function compareEvents(a, b) {
if (a.pos > b.pos) {
return 1;
}
if (a.pos < b.pos) {
return -1;
}
if (a.isOpen) {
return -1;
}
if (b.isOpen) {
return 1;
}
return 0;
}
function makeRBTree() {
return new rbtree.RBTree(function (a, b) { return a.pos - b.pos; });
}
var xRect = {
getCentre: function (r) { return r.cx(); },
getOpen: function (r) { return r.y; },
getClose: function (r) { return r.Y; },
getSize: function (r) { return r.width(); },
makeRect: function (open, close, center, size) { return new Rectangle(center - size / 2, center + size / 2, open, close); },
findNeighbours: findXNeighbours
};
var yRect = {
getCentre: function (r) { return r.cy(); },
getOpen: function (r) { return r.x; },
getClose: function (r) { return r.X; },
getSize: function (r) { return r.height(); },
makeRect: function (open, close, center, size) { return new Rectangle(open, close, center - size / 2, center + size / 2); },
findNeighbours: findYNeighbours
};
function generateGroupConstraints(root, f, minSep, isContained) {
if (isContained === void 0) { isContained = false; }
var padding = root.padding, gn = typeof root.groups !== 'undefined' ? root.groups.length : 0, ln = typeof root.leaves !== 'undefined' ? root.leaves.length : 0, childConstraints = !gn ? []
: root.groups.reduce(function (ccs, g) { return ccs.concat(generateGroupConstraints(g, f, minSep, true)); }, []), n = (isContained ? 2 : 0) + ln + gn, vs = new Array(n), rs = new Array(n), i = 0, add = function (r, v) { rs[i] = r; vs[i++] = v; };
if (isContained) {
var b = root.bounds, c = f.getCentre(b), s = f.getSize(b) / 2, open = f.getOpen(b), close = f.getClose(b), min = c - s + padding / 2, max = c + s - padding / 2;
root.minVar.desiredPosition = min;
add(f.makeRect(open, close, min, padding), root.minVar);
root.maxVar.desiredPosition = max;
add(f.makeRect(open, close, max, padding), root.maxVar);
}
if (ln)
root.leaves.forEach(function (l) { return add(l.bounds, l.variable); });
if (gn)
root.groups.forEach(function (g) {
var b = g.bounds;
add(f.makeRect(f.getOpen(b), f.getClose(b), f.getCentre(b), f.getSize(b)), g.minVar);
});
var cs = generateConstraints(rs, vs, f, minSep);
if (gn) {
vs.forEach(function (v) { v.cOut = [], v.cIn = []; });
cs.forEach(function (c) { c.left.cOut.push(c), c.right.cIn.push(c); });
root.groups.forEach(function (g) {
var gapAdjustment = (g.padding - f.getSize(g.bounds)) / 2;
g.minVar.cIn.forEach(function (c) { return c.gap += gapAdjustment; });
g.minVar.cOut.forEach(function (c) { c.left = g.maxVar; c.gap += gapAdjustment; });
});
}
return childConstraints.concat(cs);
}
function generateConstraints(rs, vars, rect, minSep) {
var i, n = rs.length;
var N = 2 * n;
console.assert(vars.length >= n);
var events = new Array(N);
for (i = 0; i < n; ++i) {
var r = rs[i];
var v = new Node$1(vars[i], r, rect.getCentre(r));
events[i] = new Event(true, v, rect.getOpen(r));
events[i + n] = new Event(false, v, rect.getClose(r));
}
events.sort(compareEvents);
var cs = new Array();
var scanline = makeRBTree();
for (i = 0; i < N; ++i) {
var e = events[i];
var v = e.v;
if (e.isOpen) {
scanline.insert(v);
rect.findNeighbours(v, scanline);
}
else {
scanline.remove(v);
var makeConstraint = function (l, r) {
var sep = (rect.getSize(l.r) + rect.getSize(r.r)) / 2 + minSep;
cs.push(new vpsc.Constraint(l.v, r.v, sep));
};
var visitNeighbours = function (forward, reverse, mkcon) {
var u, it = v[forward].iterator();
while ((u = it[forward]()) !== null) {
mkcon(u, v);
u[reverse].remove(v);
}
};
visitNeighbours("prev", "next", function (u, v) { return makeConstraint(u, v); });
visitNeighbours("next", "prev", function (u, v) { return makeConstraint(v, u); });
}
}
console.assert(scanline.size === 0);
return cs;
}
function findXNeighbours(v, scanline) {
var f = function (forward, reverse) {
var it = scanline.findIter(v);
var u;
while ((u = it[forward]()) !== null) {
var uovervX = u.r.overlapX(v.r);
if (uovervX <= 0 || uovervX <= u.r.overlapY(v.r)) {
v[forward].insert(u);
u[reverse].insert(v);
}
if (uovervX <= 0) {
break;
}
}
};
f("next", "prev");
f("prev", "next");
}
function findYNeighbours(v, scanline) {
var f = function (forward, reverse) {
var u = scanline.findIter(v)[forward]();
if (u !== null && u.r.overlapX(v.r) > 0) {
v[forward].insert(u);
u[reverse].insert(v);
}
};
f("next", "prev");
f("prev", "next");
}
function generateXConstraints(rs, vars) {
return generateConstraints(rs, vars, xRect, 1e-6);
}
var generateXConstraints_1 = generateXConstraints;
function generateYConstraints(rs, vars) {
return generateConstraints(rs, vars, yRect, 1e-6);
}
var generateYConstraints_1 = generateYConstraints;
function generateXGroupConstraints(root) {
return generateGroupConstraints(root, xRect, 1e-6);
}
var generateXGroupConstraints_1 = generateXGroupConstraints;
function generateYGroupConstraints(root) {
return generateGroupConstraints(root, yRect, 1e-6);
}
var generateYGroupConstraints_1 = generateYGroupConstraints;
function removeOverlaps(rs) {
var vs = rs.map(function (r) { return new vpsc.Variable(r.cx()); });
var cs = generateXConstraints(rs, vs);
var solver = new vpsc.Solver(vs, cs);
solver.solve();
vs.forEach(function (v, i) { return rs[i].setXCentre(v.position()); });
vs = rs.map(function (r) { return new vpsc.Variable(r.cy()); });
cs = generateYConstraints(rs, vs);
solver = new vpsc.Solver(vs, cs);
solver.solve();
vs.forEach(function (v, i) { return rs[i].setYCentre(v.position()); });
}
var removeOverlaps_1 = removeOverlaps;
var IndexedVariable = (function (_super) {
__extends$4(IndexedVariable, _super);
function IndexedVariable(index, w) {
var _this = _super.call(this, 0, w) || this;
_this.index = index;
return _this;
}
return IndexedVariable;
}(vpsc.Variable));
var IndexedVariable_1 = IndexedVariable;
var Projection = (function () {
function Projection(nodes, groups, rootGroup, constraints, avoidOverlaps) {
var _this = this;
if (rootGroup === void 0) { rootGroup = null; }
if (constraints === void 0) { constraints = null; }
if (avoidOverlaps === void 0) { avoidOverlaps = false; }
this.nodes = nodes;
this.groups = groups;
this.rootGroup = rootGroup;
this.avoidOverlaps = avoidOverlaps;
this.variables = nodes.map(function (v, i) {
return v.variable = new IndexedVariable(i, 1);
});
if (constraints)
this.createConstraints(constraints);
if (avoidOverlaps && rootGroup && typeof rootGroup.groups !== 'undefined') {
nodes.forEach(function (v) {
if (!v.width || !v.height) {
v.bounds = new Rectangle(v.x, v.x, v.y, v.y);
return;
}
var w2 = v.width / 2, h2 = v.height / 2;
v.bounds = new Rectangle(v.x - w2, v.x + w2, v.y - h2, v.y + h2);
});
computeGroupBounds(rootGroup);
var i = nodes.length;
groups.forEach(function (g) {
_this.variables[i] = g.minVar = new IndexedVariable(i++, typeof g.stiffness !== "undefined" ? g.stiffness : 0.01);
_this.variables[i] = g.maxVar = new IndexedVariable(i++, typeof g.stiffness !== "undefined" ? g.stiffness : 0.01);
});
}
}
Projection.prototype.createSeparation = function (c) {
return new vpsc.Constraint(this.nodes[c.left].variable, this.nodes[c.right].variable, c.gap, typeof c.equality !== "undefined" ? c.equality : false);
};
Projection.prototype.makeFeasible = function (c) {
var _this = this;
if (!this.avoidOverlaps)
return;
var axis = 'x', dim = 'width';
if (c.axis === 'x')
axis = 'y', dim = 'height';
var vs = c.offsets.map(function (o) { return _this.nodes[o.node]; }).sort(function (a, b) { return a[axis] - b[axis]; });
var p = null;
vs.forEach(function (v) {
if (p) {
var nextPos = p[axis] + p[dim];
if (nextPos > v[axis]) {
v[axis] = nextPos;
}
}
p = v;
});
};
Projection.prototype.createAlignment = function (c) {
var _this = this;
var u = this.nodes[c.offsets[0].node].variable;
this.makeFeasible(c);
var cs = c.axis === 'x' ? this.xConstraints : this.yConstraints;
c.offsets.slice(1).forEach(function (o) {
var v = _this.nodes[o.node].variable;
cs.push(new vpsc.Constraint(u, v, o.offset, true));
});
};
Projection.prototype.createConstraints = function (constraints) {
var _this = this;
var isSep = function (c) { return typeof c.type === 'undefined' || c.type === 'separation'; };
this.xConstraints = constraints
.filter(function (c) { return c.axis === "x" && isSep(c); })
.map(function (c) { return _this.createSeparation(c); });
this.yConstraints = constraints
.filter(function (c) { return c.axis === "y" && isSep(c); })
.map(function (c) { return _this.createSeparation(c); });
constraints
.filter(function (c) { return c.type === 'alignment'; })
.forEach(function (c) { return _this.createAlignment(c); });
};
Projection.prototype.setupVariablesAndBounds = function (x0, y0, desired, getDesired) {
this.nodes.forEach(function (v, i) {
if (v.fixed) {
v.variable.weight = v.fixedWeight ? v.fixedWeight : 1000;
desired[i] = getDesired(v);
}
else {
v.variable.weight = 1;
}
var w = (v.width || 0) / 2, h = (v.height || 0) / 2;
var ix = x0[i], iy = y0[i];
v.bounds = new Rectangle(ix - w, ix + w, iy - h, iy + h);
});
};
Projection.prototype.xProject = function (x0, y0, x) {
if (!this.rootGroup && !(this.avoidOverlaps || this.xConstraints))
return;
this.project(x0, y0, x0, x, function (v) { return v.px; }, this.xConstraints, generateXGroupConstraints, function (v) { return v.bounds.setXCentre(x[v.variable.index] = v.variable.position()); }, function (g) {
var xmin = x[g.minVar.index] = g.minVar.position();
var xmax = x[g.maxVar.index] = g.maxVar.position();
var p2 = g.padding / 2;
g.bounds.x = xmin - p2;
g.bounds.X = xmax + p2;
});
};
Projection.prototype.yProject = function (x0, y0, y) {
if (!this.rootGroup && !this.yConstraints)
return;
this.project(x0, y0, y0, y, function (v) { return v.py; }, this.yConstraints, generateYGroupConstraints, function (v) { return v.bounds.setYCentre(y[v.variable.index] = v.variable.position()); }, function (g) {
var ymin = y[g.minVar.index] = g.minVar.position();
var ymax = y[g.maxVar.index] = g.maxVar.position();
var p2 = g.padding / 2;
g.bounds.y = ymin - p2;
g.bounds.Y = ymax + p2;
});
};
Projection.prototype.projectFunctions = function () {
var _this = this;
return [
function (x0, y0, x) { return _this.xProject(x0, y0, x); },
function (x0, y0, y) { return _this.yProject(x0, y0, y); }
];
};
Projection.prototype.project = function (x0, y0, start, desired, getDesired, cs, generateConstraints, updateNodeBounds, updateGroupBounds) {
this.setupVariablesAndBounds(x0, y0, desired, getDesired);
if (this.rootGroup && this.avoidOverlaps) {
computeGroupBounds(this.rootGroup);
cs = cs.concat(generateConstraints(this.rootGroup));
}
this.solve(this.variables, cs, start, desired);
this.nodes.forEach(updateNodeBounds);
if (this.rootGroup && this.avoidOverlaps) {
this.groups.forEach(updateGroupBounds);
computeGroupBounds(this.rootGroup);
}
};
Projection.prototype.solve = function (vs, cs, starting, desired) {
var solver = new vpsc.Solver(vs, cs);
solver.setStartingPositions(starting);
solver.setDesiredPositions(desired);
solver.solve();
};
return Projection;
}());
var Projection_1 = Projection;
var rectangle = /*#__PURE__*/Object.defineProperty({
computeGroupBounds: computeGroupBounds_1,
Rectangle: Rectangle_1,
makeEdgeBetween: makeEdgeBetween_1,
makeEdgeTo: makeEdgeTo_1,
generateXConstraints: generateXConstraints_1,
generateYConstraints: generateYConstraints_1,
generateXGroupConstraints: generateXGroupConstraints_1,
generateYGroupConstraints: generateYGroupConstraints_1,
removeOverlaps: removeOverlaps_1,
IndexedVariable: IndexedVariable_1,
Projection: Projection_1
}, '__esModule', {value: true});
var PairingHeap = (function () {
function PairingHeap(elem) {
this.elem = elem;
this.subheaps = [];
}
PairingHeap.prototype.toString = function (selector) {
var str = "", needComma = false;
for (var i = 0; i < this.subheaps.length; ++i) {
var subheap = this.subheaps[i];
if (!subheap.elem) {
needComma = false;
continue;
}
if (needComma) {
str = str + ",";
}
str = str + subheap.toString(selector);
needComma = true;
}
if (str !== "") {
str = "(" + str + ")";
}
return (this.elem ? selector(this.elem) : "") + str;
};
PairingHeap.prototype.forEach = function (f) {
if (!this.empty()) {
f(this.elem, this);
this.subheaps.forEach(function (s) { return s.forEach(f); });
}
};
PairingHeap.prototype.count = function () {
return this.empty() ? 0 : 1 + this.subheaps.reduce(function (n, h) {
return n + h.count();
}, 0);
};
PairingHeap.prototype.min = function () {
return this.elem;
};
PairingHeap.prototype.empty = function () {
return this.elem == null;
};
PairingHeap.prototype.contains = function (h) {
if (this === h)
return true;
for (var i = 0; i < this.subheaps.length; i++) {
if (this.subheaps[i].contains(h))
return true;
}
return false;
};
PairingHeap.prototype.isHeap = function (lessThan) {
var _this = this;
return this.subheaps.every(function (h) { return lessThan(_this.elem, h.elem) && h.isHeap(lessThan); });
};
PairingHeap.prototype.insert = function (obj, lessThan) {
return this.merge(new PairingHeap(obj), lessThan);
};
PairingHeap.prototype.merge = function (heap2, lessThan) {
if (this.empty())
return heap2;
else if (heap2.empty())
return this;
else if (lessThan(this.elem, heap2.elem)) {
this.subheaps.push(heap2);
return this;
}
else {
heap2.subheaps.push(this);
return heap2;
}
};
PairingHeap.prototype.removeMin = function (lessThan) {
if (this.empty())
return null;
else
return this.mergePairs(lessThan);
};
PairingHeap.prototype.mergePairs = function (lessThan) {
if (this.subheaps.length == 0)
return new PairingHeap(null);
else if (this.subheaps.length == 1) {
return this.subheaps[0];
}
else {
var firstPair = this.subheaps.pop().merge(this.subheaps.pop(), lessThan);
var remaining = this.mergePairs(lessThan);
return firstPair.merge(remaining, lessThan);
}
};
PairingHeap.prototype.decreaseKey = function (subheap, newValue, setHeapNode, lessThan) {
var newHeap = subheap.removeMin(lessThan);
subheap.elem = newHeap.elem;
subheap.subheaps = newHeap.subheaps;
if (setHeapNode !== null && newHeap.elem !== null) {
setHeapNode(subheap.elem, subheap);
}
var pairingNode = new PairingHeap(newValue);
if (setHeapNode !== null) {
setHeapNode(newValue, pairingNode);
}
return this.merge(pairingNode, lessThan);
};
return PairingHeap;
}());
var PairingHeap_1 = PairingHeap;
var PriorityQueue$1 = (function () {
function PriorityQueue(lessThan) {
this.lessThan = lessThan;
}
PriorityQueue.prototype.top = function () {
if (this.empty()) {
return null;
}
return this.root.elem;
};
PriorityQueue.prototype.push = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var pairingNode;
for (var i = 0, arg; arg = args[i]; ++i) {
pairingNode = new PairingHeap(arg);
this.root = this.empty() ?
pairingNode : this.root.merge(pairingNode, this.lessThan);
}
return pairingNode;
};
PriorityQueue.prototype.empty = function () {
return !this.root || !this.root.elem;
};
PriorityQueue.prototype.isHeap = function () {
return this.root.isHeap(this.lessThan);
};
PriorityQueue.prototype.forEach = function (f) {
this.root.forEach(f);
};
PriorityQueue.prototype.pop = function () {
if (this.empty()) {
return null;
}
var obj = this.root.min();
this.root = this.root.removeMin(this.lessThan);
return obj;
};
PriorityQueue.prototype.reduceKey = function (heapNode, newKey, setHeapNode) {
if (setHeapNode === void 0) { setHeapNode = null; }
this.root = this.root.decreaseKey(heapNode, newKey, setHeapNode, this.lessThan);
};
PriorityQueue.prototype.toString = function (selector) {
return this.root.toString(selector);
};
PriorityQueue.prototype.count = function () {
return this.root.count();
};
return PriorityQueue;
}());
var PriorityQueue_1 = PriorityQueue$1;
var pqueue = /*#__PURE__*/Object.defineProperty({
PairingHeap: PairingHeap_1,
PriorityQueue: PriorityQueue_1
}, '__esModule', {value: true});
var Neighbour = (function () {
function Neighbour(id, distance) {
this.id = id;
this.distance = distance;
}
return Neighbour;
}());
var Node = (function () {
function Node(id) {
this.id = id;
this.neighbours = [];
}
return Node;
}());
var QueueEntry = (function () {
function QueueEntry(node, prev, d) {
this.node = node;
this.prev = prev;
this.d = d;
}
return QueueEntry;
}());
var Calculator = (function () {
function Calculator(n, es, getSourceIndex, getTargetIndex, getLength) {
this.n = n;
this.es = es;
this.neighbours = new Array(this.n);
var i = this.n;
while (i--)
this.neighbours[i] = new Node(i);
i = this.es.length;
while (i--) {
var e = this.es[i];
var u = getSourceIndex(e), v = getTargetIndex(e);
var d = getLength(e);
this.neighbours[u].neighbours.push(new Neighbour(v, d));
this.neighbours[v].neighbours.push(new Neighbour(u, d));
}
}
Calculator.prototype.DistanceMatrix = function () {
var D = new Array(this.n);
for (var i = 0; i < this.n; ++i) {
D[i] = this.dijkstraNeighbours(i);
}
return D;
};
Calculator.prototype.DistancesFromNode = function (start) {
return this.dijkstraNeighbours(start);
};
Calculator.prototype.PathFromNodeToNode = function (start, end) {
return this.dijkstraNeighbours(start, end);
};
Calculator.prototype.PathFromNodeToNodeWithPrevCost = function (start, end, prevCost) {
var q = new pqueue.PriorityQueue(function (a, b) { return a.d <= b.d; }), u = this.neighbours[start], qu = new QueueEntry(u, null, 0), visitedFrom = {};
q.push(qu);
while (!q.empty()) {
qu = q.pop();
u = qu.node;
if (u.id === end) {
break;
}
var i = u.neighbours.length;
while (i--) {
var neighbour = u.neighbours[i], v = this.neighbours[neighbour.id];
if (qu.prev && v.id === qu.prev.node.id)
continue;
var viduid = v.id + ',' + u.id;
if (viduid in visitedFrom && visitedFrom[viduid] <= qu.d)
continue;
var cc = qu.prev ? prevCost(qu.prev.node.id, u.id, v.id) : 0, t = qu.d + neighbour.distance + cc;
visitedFrom[viduid] = t;
q.push(new QueueEntry(v, qu, t));
}
}
var path = [];
while (qu.prev) {
qu = qu.prev;
path.push(qu.node.id);
}
return path;
};
Calculator.prototype.dijkstraNeighbours = function (start, dest) {
if (dest === void 0) { dest = -1; }
var q = new pqueue.PriorityQueue(function (a, b) { return a.d <= b.d; }), i = this.neighbours.length, d = new Array(i);
while (i--) {
var node = this.neighbours[i];
node.d = i === start ? 0 : Number.POSITIVE_INFINITY;
node.q = q.push(node);
}
while (!q.empty()) {
var u = q.pop();
d[u.id] = u.d;
if (u.id === dest) {
var path = [];
var v = u;
while (typeof v.prev !== 'undefined') {
path.push(v.prev.id);
v = v.prev;
}
return path;
}
i = u.neighbours.length;
while (i--) {
var neighbour = u.neighbours[i];
var v = this.neighbours[neighbour.id];
var t = u.d + neighbour.distance;
if (u.d !== Number.MAX_VALUE && v.d > t) {
v.d = t;
v.prev = u;
q.reduceKey(v.q, v, function (e, q) { return e.q = q; });
}
}
}
return d;
};
return Calculator;
}());
var Calculator_1 = Calculator;
var shortestpaths = /*#__PURE__*/Object.defineProperty({
Calculator: Calculator_1
}, '__esModule', {value: true});
var __extends$3 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var Point$1 = (function () {
function Point() {
}
return Point;
}());
var Point_1 = Point$1;
var LineSegment = (function () {
function LineSegment(x1, y1, x2, y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
return LineSegment;
}());
var LineSegment_1 = LineSegment;
var PolyPoint = (function (_super) {
__extends$3(PolyPoint, _super);
function PolyPoint() {
return _super !== null && _super.apply(this, arguments) || this;
}
return PolyPoint;
}(Point$1));
var PolyPoint_1 = PolyPoint;
function isLeft(P0, P1, P2) {
return (P1.x - P0.x) * (P2.y - P0.y) - (P2.x - P0.x) * (P1.y - P0.y);
}
var isLeft_1 = isLeft;
function above(p, vi, vj) {
return isLeft(p, vi, vj) > 0;
}
function below(p, vi, vj) {
return isLeft(p, vi, vj) < 0;
}
function ConvexHull(S) {
var P = S.slice(0).sort(function (a, b) { return a.x !== b.x ? b.x - a.x : b.y - a.y; });
var n = S.length, i;
var minmin = 0;
var xmin = P[0].x;
for (i = 1; i < n; ++i) {
if (P[i].x !== xmin)
break;
}
var minmax = i - 1;
var H = [];
H.push(P[minmin]);
if (minmax === n - 1) {
if (P[minmax].y !== P[minmin].y)
H.push(P[minmax]);
}
else {
var maxmin, maxmax = n - 1;
var xmax = P[n - 1].x;
for (i = n - 2; i >= 0; i--)
if (P[i].x !== xmax)
break;
maxmin = i + 1;
i = minmax;
while (++i <= maxmin) {
if (isLeft(P[minmin], P[maxmin], P[i]) >= 0 && i < maxmin)
continue;
while (H.length > 1) {
if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0)
break;
else
H.length -= 1;
}
if (i != minmin)
H.push(P[i]);
}
if (maxmax != maxmin)
H.push(P[maxmax]);
var bot = H.length;
i = maxmin;
while (--i >= minmax) {
if (isLeft(P[maxmax], P[minmax], P[i]) >= 0 && i > minmax)
continue;
while (H.length > bot) {
if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0)
break;
else
H.length -= 1;
}
if (i != minmin)
H.push(P[i]);
}
}
return H;
}
var ConvexHull_1 = ConvexHull;
function clockwiseRadialSweep(p, P, f) {
P.slice(0).sort(function (a, b) { return Math.atan2(a.y - p.y, a.x - p.x) - Math.atan2(b.y - p.y, b.x - p.x); }).forEach(f);
}
var clockwiseRadialSweep_1 = clockwiseRadialSweep;
function tangent_PointPolyC(P, V) {
var Vclosed = V.slice(0);
Vclosed.push(V[0]);
return { rtan: Rtangent_PointPolyC(P, Vclosed), ltan: Ltangent_PointPolyC(P, Vclosed) };
}
function Rtangent_PointPolyC(P, V) {
var n = V.length - 1;
var a, b, c;
var upA, dnC;
if (below(P, V[1], V[0]) && !above(P, V[n - 1], V[0]))
return 0;
for (a = 0, b = n;;) {
if (b - a === 1)
if (above(P, V[a], V[b]))
return a;
else
return b;
c = Math.floor((a + b) / 2);
dnC = below(P, V[c + 1], V[c]);
if (dnC && !above(P, V[c - 1], V[c]))
return c;
upA = above(P, V[a + 1], V[a]);
if (upA) {
if (dnC)
b = c;
else {
if (above(P, V[a], V[c]))
b = c;
else
a = c;
}
}
else {
if (!dnC)
a = c;
else {
if (below(P, V[a], V[c]))
b = c;
else
a = c;
}
}
}
}
function Ltangent_PointPolyC(P, V) {
var n = V.length - 1;
var a, b, c;
var dnA, dnC;
if (above(P, V[n - 1], V[0]) && !below(P, V[1], V[0]))
return 0;
for (a = 0, b = n;;) {
if (b - a === 1)
if (below(P, V[a], V[b]))
return a;
else
return b;
c = Math.floor((a + b) / 2);
dnC = below(P, V[c + 1], V[c]);
if (above(P, V[c - 1], V[c]) && !dnC)
return c;
dnA = below(P, V[a + 1], V[a]);
if (dnA) {
if (!dnC)
b = c;
else {
if (below(P, V[a], V[c]))
b = c;
else
a = c;
}
}
else {
if (dnC)
a = c;
else {
if (above(P, V[a], V[c]))
b = c;
else
a = c;
}
}
}
}
function tangent_PolyPolyC(V, W, t1, t2, cmp1, cmp2) {
var ix1, ix2;
ix1 = t1(W[0], V);
ix2 = t2(V[ix1], W);
var done = false;
while (!done) {
done = true;
while (true) {
if (ix1 === V.length - 1)
ix1 = 0;
if (cmp1(W[ix2], V[ix1], V[ix1 + 1]))
break;
++ix1;
}
while (true) {
if (ix2 === 0)
ix2 = W.length - 1;
if (cmp2(V[ix1], W[ix2], W[ix2 - 1]))
break;
--ix2;
done = false;
}
}
return { t1: ix1, t2: ix2 };
}
var tangent_PolyPolyC_1 = tangent_PolyPolyC;
function LRtangent_PolyPolyC(V, W) {
var rl = RLtangent_PolyPolyC(W, V);
return { t1: rl.t2, t2: rl.t1 };
}
var LRtangent_PolyPolyC_1 = LRtangent_PolyPolyC;
function RLtangent_PolyPolyC(V, W) {
return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Ltangent_PointPolyC, above, below);
}
var RLtangent_PolyPolyC_1 = RLtangent_PolyPolyC;
function LLtangent_PolyPolyC(V, W) {
return tangent_PolyPolyC(V, W, Ltangent_PointPolyC, Ltangent_PointPolyC, below, below);
}
var LLtangent_PolyPolyC_1 = LLtangent_PolyPolyC;
function RRtangent_PolyPolyC(V, W) {
return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Rtangent_PointPolyC, above, above);
}
var RRtangent_PolyPolyC_1 = RRtangent_PolyPolyC;
var BiTangent = (function () {
function BiTangent(t1, t2) {
this.t1 = t1;
this.t2 = t2;
}
return BiTangent;
}());
var BiTangent_1 = BiTangent;
var BiTangents = (function () {
function BiTangents() {
}
return BiTangents;
}());
var BiTangents_1 = BiTangents;
var TVGPoint = (function (_super) {
__extends$3(TVGPoint, _super);
function TVGPoint() {
return _super !== null && _super.apply(this, arguments) || this;
}
return TVGPoint;
}(Point$1));
var TVGPoint_1 = TVGPoint;
var VisibilityVertex = (function () {
function VisibilityVertex(id, polyid, polyvertid, p) {
this.id = id;
this.polyid = polyid;
this.polyvertid = polyvertid;
this.p = p;
p.vv = this;
}
return VisibilityVertex;
}());
var VisibilityVertex_1 = VisibilityVertex;
var VisibilityEdge = (function () {
function VisibilityEdge(source, target) {
this.source = source;
this.target = target;
}
VisibilityEdge.prototype.length = function () {
var dx = this.source.p.x - this.target.p.x;
var dy = this.source.p.y - this.target.p.y;
return Math.sqrt(dx * dx + dy * dy);
};
return VisibilityEdge;
}());
var VisibilityEdge_1 = VisibilityEdge;
var TangentVisibilityGraph = (function () {
function TangentVisibilityGraph(P, g0) {
this.P = P;
this.V = [];
this.E = [];
if (!g0) {
var n = P.length;
for (var i = 0; i < n; i++) {
var p = P[i];
for (var j = 0; j < p.length; ++j) {
var pj = p[j], vv = new VisibilityVertex(this.V.length, i, j, pj);
this.V.push(vv);
if (j > 0)
this.E.push(new VisibilityEdge(p[j - 1].vv, vv));
}
if (p.length > 1)
this.E.push(new VisibilityEdge(p[0].vv, p[p.length - 1].vv));
}
for (var i = 0; i < n - 1; i++) {
var Pi = P[i];
for (var j = i + 1; j < n; j++) {
var Pj = P[j], t = tangents(Pi, Pj);
for (var q in t) {
var c = t[q], source = Pi[c.t1], target = Pj[c.t2];
this.addEdgeIfVisible(source, target, i, j);
}
}
}
}
else {
this.V = g0.V.slice(0);
this.E = g0.E.slice(0);
}
}
TangentVisibilityGraph.prototype.addEdgeIfVisible = function (u, v, i1, i2) {
if (!this.intersectsPolys(new LineSegment(u.x, u.y, v.x, v.y), i1, i2)) {
this.E.push(new VisibilityEdge(u.vv, v.vv));
}
};
TangentVisibilityGraph.prototype.addPoint = function (p, i1) {
var n = this.P.length;
this.V.push(new VisibilityVertex(this.V.length, n, 0, p));
for (var i = 0; i < n; ++i) {
if (i === i1)
continue;
var poly = this.P[i], t = tangent_PointPolyC(p, poly);
this.addEdgeIfVisible(p, poly[t.ltan], i1, i);
this.addEdgeIfVisible(p, poly[t.rtan], i1, i);
}
return p.vv;
};
TangentVisibilityGraph.prototype.intersectsPolys = function (l, i1, i2) {
for (var i = 0, n = this.P.length; i < n; ++i) {
if (i != i1 && i != i2 && intersects(l, this.P[i]).length > 0) {
return true;
}
}
return false;
};
return TangentVisibilityGraph;
}());
var TangentVisibilityGraph_1 = TangentVisibilityGraph;
function intersects(l, P) {
var ints = [];
for (var i = 1, n = P.length; i < n; ++i) {
var int = rectangle.Rectangle.lineIntersection(l.x1, l.y1, l.x2, l.y2, P[i - 1].x, P[i - 1].y, P[i].x, P[i].y);
if (int)
ints.push(int);
}
return ints;
}
function tangents(V, W) {
var m = V.length - 1, n = W.length - 1;
var bt = new BiTangents();
for (var i = 0; i < m; ++i) {
for (var j = 0; j < n; ++j) {
var v1 = V[i == 0 ? m - 1 : i - 1];
var v2 = V[i];
var v3 = V[i + 1];
var w1 = W[j == 0 ? n - 1 : j - 1];
var w2 = W[j];
var w3 = W[j + 1];
var v1v2w2 = isLeft(v1, v2, w2);
var v2w1w2 = isLeft(v2, w1, w2);
var v2w2w3 = isLeft(v2, w2, w3);
var w1w2v2 = isLeft(w1, w2, v2);
var w2v1v2 = isLeft(w2, v1, v2);
var w2v2v3 = isLeft(w2, v2, v3);
if (v1v2w2 >= 0 && v2w1w2 >= 0 && v2w2w3 < 0
&& w1w2v2 >= 0 && w2v1v2 >= 0 && w2v2v3 < 0) {
bt.ll = new BiTangent(i, j);
}
else if (v1v2w2 <= 0 && v2w1w2 <= 0 && v2w2w3 > 0
&& w1w2v2 <= 0 && w2v1v2 <= 0 && w2v2v3 > 0) {
bt.rr = new BiTangent(i, j);
}
else if (v1v2w2 <= 0 && v2w1w2 > 0 && v2w2w3 <= 0
&& w1w2v2 >= 0 && w2v1v2 < 0 && w2v2v3 >= 0) {
bt.rl = new BiTangent(i, j);
}
else if (v1v2w2 >= 0 && v2w1w2 < 0 && v2w2w3 >= 0
&& w1w2v2 <= 0 && w2v1v2 > 0 && w2v2v3 <= 0) {
bt.lr = new BiTangent(i, j);
}
}
}
return bt;
}
var tangents_1 = tangents;
function isPointInsidePoly(p, poly) {
for (var i = 1, n = poly.length; i < n; ++i)
if (below(poly[i - 1], poly[i], p))
return false;
return true;
}
function isAnyPInQ(p, q) {
return !p.every(function (v) { return !isPointInsidePoly(v, q); });
}
function polysOverlap(p, q) {
if (isAnyPInQ(p, q))
return true;
if (isAnyPInQ(q, p))
return true;
for (var i = 1, n = p.length; i < n; ++i) {
var v = p[i], u = p[i - 1];
if (intersects(new LineSegment(u.x, u.y, v.x, v.y), q).length > 0)
return true;
}
return false;
}
var polysOverlap_1 = polysOverlap;
var geom = /*#__PURE__*/Object.defineProperty({
Point: Point_1,
LineSegment: LineSegment_1,
PolyPoint: PolyPoint_1,
isLeft: isLeft_1,
ConvexHull: ConvexHull_1,
clockwiseRadialSweep: clockwiseRadialSweep_1,
tangent_PolyPolyC: tangent_PolyPolyC_1,
LRtangent_PolyPolyC: LRtangent_PolyPolyC_1,
RLtangent_PolyPolyC: RLtangent_PolyPolyC_1,
LLtangent_PolyPolyC: LLtangent_PolyPolyC_1,
RRtangent_PolyPolyC: RRtangent_PolyPolyC_1,
BiTangent: BiTangent_1,
BiTangents: BiTangents_1,
TVGPoint: TVGPoint_1,
VisibilityVertex: VisibilityVertex_1,
VisibilityEdge: VisibilityEdge_1,
TangentVisibilityGraph: TangentVisibilityGraph_1,
tangents: tangents_1,
polysOverlap: polysOverlap_1
}, '__esModule', {value: true});
var packingOptions = {
PADDING: 10,
GOLDEN_SECTION: (1 + Math.sqrt(5)) / 2,
FLOAT_EPSILON: 0.0001,
MAX_INERATIONS: 100
};
function applyPacking(graphs, w, h, node_size, desired_ratio, centerGraph) {
if (desired_ratio === void 0) { desired_ratio = 1; }
if (centerGraph === void 0) { centerGraph = true; }
var init_x = 0, init_y = 0, svg_width = w, svg_height = h, desired_ratio = typeof desired_ratio !== 'undefined' ? desired_ratio : 1, node_size = typeof node_size !== 'undefined' ? node_size : 0, real_width = 0, real_height = 0, min_width = 0, global_bottom = 0, line = [];
if (graphs.length == 0)
return;
calculate_bb(graphs);
apply(graphs);
if (centerGraph) {
put_nodes_to_right_positions(graphs);
}
function calculate_bb(graphs) {
graphs.forEach(function (g) {
calculate_single_bb(g);
});
function calculate_single_bb(graph) {
var min_x = Number.MAX_VALUE, min_y = Number.MAX_VALUE, max_x = 0, max_y = 0;
graph.array.forEach(function (v) {
var w = typeof v.width !== 'undefined' ? v.width : node_size;
var h = typeof v.height !== 'undefined' ? v.height : node_size;
w /= 2;
h /= 2;
max_x = Math.max(v.x + w, max_x);
min_x = Math.min(v.x - w, min_x);
max_y = Math.max(v.y + h, max_y);
min_y = Math.min(v.y - h, min_y);
});
graph.width = max_x - min_x;
graph.height = max_y - min_y;
}
}
function put_nodes_to_right_positions(graphs) {
graphs.forEach(function (g) {
var center = { x: 0, y: 0 };
g.array.forEach(function (node) {
center.x += node.x;
center.y += node.y;
});
center.x /= g.array.length;
center.y /= g.array.length;
var corner = { x: center.x - g.width / 2, y: center.y - g.height / 2 };
var offset = { x: g.x - corner.x + svg_width / 2 - real_width / 2, y: g.y - corner.y + svg_height / 2 - real_height / 2 };
g.array.forEach(function (node) {
node.x += offset.x;
node.y += offset.y;
});
});
}
function apply(data, desired_ratio) {
var curr_best_f = Number.POSITIVE_INFINITY;
var curr_best = 0;
data.sort(function (a, b) { return b.height - a.height; });
min_width = data.reduce(function (a, b) {
return a.width < b.width ? a.width : b.width;
});
var left = x1 = min_width;
var right = x2 = get_entire_width(data);
var iterationCounter = 0;
var f_x1 = Number.MAX_VALUE;
var f_x2 = Number.MAX_VALUE;
var flag = -1;
var dx = Number.MAX_VALUE;
var df = Number.MAX_VALUE;
while ((dx > min_width) || df > packingOptions.FLOAT_EPSILON) {
if (flag != 1) {
var x1 = right - (right - left) / packingOptions.GOLDEN_SECTION;
var f_x1 = step(data, x1);
}
if (flag != 0) {
var x2 = left + (right - left) / packingOptions.GOLDEN_SECTION;
var f_x2 = step(data, x2);
}
dx = Math.abs(x1 - x2);
df = Math.abs(f_x1 - f_x2);
if (f_x1 < curr_best_f) {
curr_best_f = f_x1;
curr_best = x1;
}
if (f_x2 < curr_best_f) {
curr_best_f = f_x2;
curr_best = x2;
}
if (f_x1 > f_x2) {
left = x1;
x1 = x2;
f_x1 = f_x2;
flag = 1;
}
else {
right = x2;
x2 = x1;
f_x2 = f_x1;
flag = 0;
}
if (iterationCounter++ > 100) {
break;
}
}
step(data, curr_best);
}
function step(data, max_width) {
line = [];
real_width = 0;
real_height = 0;
global_bottom = init_y;
for (var i = 0; i < data.length; i++) {
var o = data[i];
put_rect(o, max_width);
}
return Math.abs(get_real_ratio() - desired_ratio);
}
function put_rect(rect, max_width) {
var parent = undefined;
for (var i = 0; i < line.length; i++) {
if ((line[i].space_left >= rect.height) && (line[i].x + line[i].width + rect.width + packingOptions.PADDING - max_width) <= packingOptions.FLOAT_EPSILON) {
parent = line[i];
break;
}
}
line.push(rect);
if (parent !== undefined) {
rect.x = parent.x + parent.width + packingOptions.PADDING;
rect.y = parent.bottom;
rect.space_left = rect.height;
rect.bottom = rect.y;
parent.space_left -= rect.height + packingOptions.PADDING;
parent.bottom += rect.height + packingOptions.PADDING;
}
else {
rect.y = global_bottom;
global_bottom += rect.height + packingOptions.PADDING;
rect.x = init_x;
rect.bottom = rect.y;
rect.space_left = rect.height;
}
if (rect.y + rect.height - real_height > -packingOptions.FLOAT_EPSILON)
real_height = rect.y + rect.height - init_y;
if (rect.x + rect.width - real_width > -packingOptions.FLOAT_EPSILON)
real_width = rect.x + rect.width - init_x;
}
function get_entire_width(data) {
var width = 0;
data.forEach(function (d) { return width += d.width + packingOptions.PADDING; });
return width;
}
function get_real_ratio() {
return (real_width / real_height);
}
}
var applyPacking_1 = applyPacking;
function separateGraphs(nodes, links) {
var marks = {};
var ways = {};
var graphs = [];
var clusters = 0;
for (var i = 0; i < links.length; i++) {
var link = links[i];
var n1 = link.source;
var n2 = link.target;
if (ways[n1.index])
ways[n1.index].push(n2);
else
ways[n1.index] = [n2];
if (ways[n2.index])
ways[n2.index].push(n1);
else
ways[n2.index] = [n1];
}
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
if (marks[node.index])
continue;
explore_node(node, true);
}
function explore_node(n, is_new) {
if (marks[n.index] !== undefined)
return;
if (is_new) {
clusters++;
graphs.push({ array: [] });
}
marks[n.index] = clusters;
graphs[clusters - 1].array.push(n);
var adjacent = ways[n.index];
if (!adjacent)
return;
for (var j = 0; j < adjacent.length; j++) {
explore_node(adjacent[j], false);
}
}
return graphs;
}
var separateGraphs_1 = separateGraphs;
var handledisconnected = /*#__PURE__*/Object.defineProperty({
applyPacking: applyPacking_1,
separateGraphs: separateGraphs_1
}, '__esModule', {value: true});
var layout$1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var EventType;
(function (EventType) {
EventType[EventType["start"] = 0] = "start";
EventType[EventType["tick"] = 1] = "tick";
EventType[EventType["end"] = 2] = "end";
})(EventType = exports.EventType || (exports.EventType = {}));
function isGroup(g) {
return typeof g.leaves !== 'undefined' || typeof g.groups !== 'undefined';
}
var Layout = (function () {
function Layout() {
var _this = this;
this._canvasSize = [1, 1];
this._linkDistance = 20;
this._defaultNodeSize = 10;
this._linkLengthCalculator = null;
this._linkType = null;
this._avoidOverlaps = false;
this._handleDisconnected = true;
this._running = false;
this._nodes = [];
this._groups = [];
this._rootGroup = null;
this._links = [];
this._constraints = [];
this._distanceMatrix = null;
this._descent = null;
this._directedLinkConstraints = null;
this._threshold = 0.01;
this._visibilityGraph = null;
this._groupCompactness = 1e-6;
this.event = null;
this.linkAccessor = {
getSourceIndex: Layout.getSourceIndex,
getTargetIndex: Layout.getTargetIndex,
setLength: Layout.setLinkLength,
getType: function (l) { return typeof _this._linkType === "function" ? _this._linkType(l) : 0; }
};
}
Layout.prototype.on = function (e, listener) {
if (!this.event)
this.event = {};
if (typeof e === 'string') {
this.event[EventType[e]] = listener;
}
else {
this.event[e] = listener;
}
return this;
};
Layout.prototype.trigger = function (e) {
if (this.event && typeof this.event[e.type] !== 'undefined') {
this.event[e.type](e);
}
};
Layout.prototype.kick = function () {
while (!this.tick())
;
};
Layout.prototype.tick = function () {
if (this._alpha < this._threshold) {
this._running = false;
this.trigger({ type: EventType.end, alpha: this._alpha = 0, stress: this._lastStress });
return true;
}
var n = this._nodes.length; this._links.length;
var o, i;
this._descent.locks.clear();
for (i = 0; i < n; ++i) {
o = this._nodes[i];
if (o.fixed) {
if (typeof o.px === 'undefined' || typeof o.py === 'undefined') {
o.px = o.x;
o.py = o.y;
}
var p = [o.px, o.py];
this._descent.locks.add(i, p);
}
}
var s1 = this._descent.rungeKutta();
if (s1 === 0) {
this._alpha = 0;
}
else if (typeof this._lastStress !== 'undefined') {
this._alpha = s1;
}
this._lastStress = s1;
this.updateNodePositions();
this.trigger({ type: EventType.tick, alpha: this._alpha, stress: this._lastStress });
return false;
};
Layout.prototype.updateNodePositions = function () {
var x = this._descent.x[0], y = this._descent.x[1];
var o, i = this._nodes.length;
while (i--) {
o = this._nodes[i];
o.x = x[i];
o.y = y[i];
}
};
Layout.prototype.nodes = function (v) {
if (!v) {
if (this._nodes.length === 0 && this._links.length > 0) {
var n = 0;
this._links.forEach(function (l) {
n = Math.max(n, l.source, l.target);
});
this._nodes = new Array(++n);
for (var i = 0; i < n; ++i) {
this._nodes[i] = {};
}
}
return this._nodes;
}
this._nodes = v;
return this;
};
Layout.prototype.groups = function (x) {
var _this = this;
if (!x)
return this._groups;
this._groups = x;
this._rootGroup = {};
this._groups.forEach(function (g) {
if (typeof g.padding === "undefined")
g.padding = 1;
if (typeof g.leaves !== "undefined") {
g.leaves.forEach(function (v, i) {
if (typeof v === 'number')
(g.leaves[i] = _this._nodes[v]).parent = g;
});
}
if (typeof g.groups !== "undefined") {
g.groups.forEach(function (gi, i) {
if (typeof gi === 'number')
(g.groups[i] = _this._groups[gi]).parent = g;
});
}
});
this._rootGroup.leaves = this._nodes.filter(function (v) { return typeof v.parent === 'undefined'; });
this._rootGroup.groups = this._groups.filter(function (g) { return typeof g.parent === 'undefined'; });
return this;
};
Layout.prototype.powerGraphGroups = function (f) {
var g = powergraph.getGroups(this._nodes, this._links, this.linkAccessor, this._rootGroup);
this.groups(g.groups);
f(g);
return this;
};
Layout.prototype.avoidOverlaps = function (v) {
if (!arguments.length)
return this._avoidOverlaps;
this._avoidOverlaps = v;
return this;
};
Layout.prototype.handleDisconnected = function (v) {
if (!arguments.length)
return this._handleDisconnected;
this._handleDisconnected = v;
return this;
};
Layout.prototype.flowLayout = function (axis, minSeparation) {
if (!arguments.length)
axis = 'y';
this._directedLinkConstraints = {
axis: axis,
getMinSeparation: typeof minSeparation === 'number' ? function () { return minSeparation; } : minSeparation
};
return this;
};
Layout.prototype.links = function (x) {
if (!arguments.length)
return this._links;
this._links = x;
return this;
};
Layout.prototype.constraints = function (c) {
if (!arguments.length)
return this._constraints;
this._constraints = c;
return this;
};
Layout.prototype.distanceMatrix = function (d) {
if (!arguments.length)
return this._distanceMatrix;
this._distanceMatrix = d;
return this;
};
Layout.prototype.size = function (x) {
if (!x)
return this._canvasSize;
this._canvasSize = x;
return this;
};
Layout.prototype.defaultNodeSize = function (x) {
if (!x)
return this._defaultNodeSize;
this._defaultNodeSize = x;
return this;
};
Layout.prototype.groupCompactness = function (x) {
if (!x)
return this._groupCompactness;
this._groupCompactness = x;
return this;
};
Layout.prototype.linkDistance = function (x) {
if (!x) {
return this._linkDistance;
}
this._linkDistance = typeof x === "function" ? x : +x;
this._linkLengthCalculator = null;
return this;
};
Layout.prototype.linkType = function (f) {
this._linkType = f;
return this;
};
Layout.prototype.convergenceThreshold = function (x) {
if (!x)
return this._threshold;
this._threshold = typeof x === "function" ? x : +x;
return this;
};
Layout.prototype.alpha = function (x) {
if (!arguments.length)
return this._alpha;
else {
x = +x;
if (this._alpha) {
if (x > 0)
this._alpha = x;
else
this._alpha = 0;
}
else if (x > 0) {
if (!this._running) {
this._running = true;
this.trigger({ type: EventType.start, alpha: this._alpha = x });
this.kick();
}
}
return this;
}
};
Layout.prototype.getLinkLength = function (link) {
return typeof this._linkDistance === "function" ? +(this._linkDistance(link)) : this._linkDistance;
};
Layout.setLinkLength = function (link, length) {
link.length = length;
};
Layout.prototype.getLinkType = function (link) {
return typeof this._linkType === "function" ? this._linkType(link) : 0;
};
Layout.prototype.symmetricDiffLinkLengths = function (idealLength, w) {
var _this = this;
if (w === void 0) { w = 1; }
this.linkDistance(function (l) { return idealLength * l.length; });
this._linkLengthCalculator = function () { return linklengths.symmetricDiffLinkLengths(_this._links, _this.linkAccessor, w); };
return this;
};
Layout.prototype.jaccardLinkLengths = function (idealLength, w) {
var _this = this;
if (w === void 0) { w = 1; }
this.linkDistance(function (l) { return idealLength * l.length; });
this._linkLengthCalculator = function () { return linklengths.jaccardLinkLengths(_this._links, _this.linkAccessor, w); };
return this;
};
Layout.prototype.start = function (initialUnconstrainedIterations, initialUserConstraintIterations, initialAllConstraintsIterations, gridSnapIterations, keepRunning, centerGraph) {
var _this = this;
if (initialUnconstrainedIterations === void 0) { initialUnconstrainedIterations = 0; }
if (initialUserConstraintIterations === void 0) { initialUserConstraintIterations = 0; }
if (initialAllConstraintsIterations === void 0) { initialAllConstraintsIterations = 0; }
if (gridSnapIterations === void 0) { gridSnapIterations = 0; }
if (keepRunning === void 0) { keepRunning = true; }
if (centerGraph === void 0) { centerGraph = true; }
var i, n = this.nodes().length, N = n + 2 * this._groups.length; this._links.length; var w = this._canvasSize[0], h = this._canvasSize[1];
var x = new Array(N), y = new Array(N);
var G = null;
var ao = this._avoidOverlaps;
this._nodes.forEach(function (v, i) {
v.index = i;
if (typeof v.x === 'undefined') {
v.x = w / 2, v.y = h / 2;
}
x[i] = v.x, y[i] = v.y;
});
if (this._linkLengthCalculator)
this._linkLengthCalculator();
var distances;
if (this._distanceMatrix) {
distances = this._distanceMatrix;
}
else {
distances = (new shortestpaths.Calculator(N, this._links, Layout.getSourceIndex, Layout.getTargetIndex, function (l) { return _this.getLinkLength(l); })).DistanceMatrix();
G = descent.Descent.createSquareMatrix(N, function () { return 2; });
this._links.forEach(function (l) {
if (typeof l.source == "number")
l.source = _this._nodes[l.source];
if (typeof l.target == "number")
l.target = _this._nodes[l.target];
});
this._links.forEach(function (e) {
var u = Layout.getSourceIndex(e), v = Layout.getTargetIndex(e);
G[u][v] = G[v][u] = e.weight || 1;
});
}
var D = descent.Descent.createSquareMatrix(N, function (i, j) {
return distances[i][j];
});
if (this._rootGroup && typeof this._rootGroup.groups !== 'undefined') {
var i = n;
var addAttraction = function (i, j, strength, idealDistance) {
G[i][j] = G[j][i] = strength;
D[i][j] = D[j][i] = idealDistance;
};
this._groups.forEach(function (g) {
addAttraction(i, i + 1, _this._groupCompactness, 0.1);
x[i] = 0, y[i++] = 0;
x[i] = 0, y[i++] = 0;
});
}
else
this._rootGroup = { leaves: this._nodes, groups: [] };
var curConstraints = this._constraints || [];
if (this._directedLinkConstraints) {
this.linkAccessor.getMinSeparation = this._directedLinkConstraints.getMinSeparation;
curConstraints = curConstraints.concat(linklengths.generateDirectedEdgeConstraints(n, this._links, this._directedLinkConstraints.axis, (this.linkAccessor)));
}
this.avoidOverlaps(false);
this._descent = new descent.Descent([x, y], D);
this._descent.locks.clear();
for (var i = 0; i < n; ++i) {
var o = this._nodes[i];
if (o.fixed) {
o.px = o.x;
o.py = o.y;
var p = [o.x, o.y];
this._descent.locks.add(i, p);
}
}
this._descent.threshold = this._threshold;
this.initialLayout(initialUnconstrainedIterations, x, y);
if (curConstraints.length > 0)
this._descent.project = new rectangle.Projection(this._nodes, this._groups, this._rootGroup, curConstraints).projectFunctions();
this._descent.run(initialUserConstraintIterations);
this.separateOverlappingComponents(w, h, centerGraph);
this.avoidOverlaps(ao);
if (ao) {
this._nodes.forEach(function (v, i) { v.x = x[i], v.y = y[i]; });
this._descent.project = new rectangle.Projection(this._nodes, this._groups, this._rootGroup, curConstraints, true).projectFunctions();
this._nodes.forEach(function (v, i) { x[i] = v.x, y[i] = v.y; });
}
this._descent.G = G;
this._descent.run(initialAllConstraintsIterations);
if (gridSnapIterations) {
this._descent.snapStrength = 1000;
this._descent.snapGridSize = this._nodes[0].width;
this._descent.numGridSnapNodes = n;
this._descent.scaleSnapByMaxH = n != N;
var G0 = descent.Descent.createSquareMatrix(N, function (i, j) {
if (i >= n || j >= n)
return G[i][j];
return 0;
});
this._descent.G = G0;
this._descent.run(gridSnapIterations);
}
this.updateNodePositions();
this.separateOverlappingComponents(w, h, centerGraph);
return keepRunning ? this.resume() : this;
};
Layout.prototype.initialLayout = function (iterations, x, y) {
if (this._groups.length > 0 && iterations > 0) {
var n = this._nodes.length;
var edges = this._links.map(function (e) { return ({ source: e.source.index, target: e.target.index }); });
var vs = this._nodes.map(function (v) { return ({ index: v.index }); });
this._groups.forEach(function (g, i) {
vs.push({ index: g.index = n + i });
});
this._groups.forEach(function (g, i) {
if (typeof g.leaves !== 'undefined')
g.leaves.forEach(function (v) { return edges.push({ source: g.index, target: v.index }); });
if (typeof g.groups !== 'undefined')
g.groups.forEach(function (gg) { return edges.push({ source: g.index, target: gg.index }); });
});
new Layout()
.size(this.size())
.nodes(vs)
.links(edges)
.avoidOverlaps(false)
.linkDistance(this.linkDistance())
.symmetricDiffLinkLengths(5)
.convergenceThreshold(1e-4)
.start(iterations, 0, 0, 0, false);
this._nodes.forEach(function (v) {
x[v.index] = vs[v.index].x;
y[v.index] = vs[v.index].y;
});
}
else {
this._descent.run(iterations);
}
};
Layout.prototype.separateOverlappingComponents = function (width, height, centerGraph) {
var _this = this;
if (centerGraph === void 0) { centerGraph = true; }
if (!this._distanceMatrix && this._handleDisconnected) {
var x_1 = this._descent.x[0], y_1 = this._descent.x[1];
this._nodes.forEach(function (v, i) { v.x = x_1[i], v.y = y_1[i]; });
var graphs = handledisconnected.separateGraphs(this._nodes, this._links);
handledisconnected.applyPacking(graphs, width, height, this._defaultNodeSize, 1, centerGraph);
this._nodes.forEach(function (v, i) {
_this._descent.x[0][i] = v.x, _this._descent.x[1][i] = v.y;
if (v.bounds) {
v.bounds.setXCentre(v.x);
v.bounds.setYCentre(v.y);
}
});
}
};
Layout.prototype.resume = function () {
return this.alpha(0.1);
};
Layout.prototype.stop = function () {
return this.alpha(0);
};
Layout.prototype.prepareEdgeRouting = function (nodeMargin) {
if (nodeMargin === void 0) { nodeMargin = 0; }
this._visibilityGraph = new geom.TangentVisibilityGraph(this._nodes.map(function (v) {
return v.bounds.inflate(-nodeMargin).vertices();
}));
};
Layout.prototype.routeEdge = function (edge, ah, draw) {
if (ah === void 0) { ah = 5; }
var lineData = [];
var vg2 = new geom.TangentVisibilityGraph(this._visibilityGraph.P, { V: this._visibilityGraph.V, E: this._visibilityGraph.E }), port1 = { x: edge.source.x, y: edge.source.y }, port2 = { x: edge.target.x, y: edge.target.y }, start = vg2.addPoint(port1, edge.source.index), end = vg2.addPoint(port2, edge.target.index);
vg2.addEdgeIfVisible(port1, port2, edge.source.index, edge.target.index);
if (typeof draw !== 'undefined') {
draw(vg2);
}
var sourceInd = function (e) { return e.source.id; }, targetInd = function (e) { return e.target.id; }, length = function (e) { return e.length(); }, spCalc = new shortestpaths.Calculator(vg2.V.length, vg2.E, sourceInd, targetInd, length), shortestPath = spCalc.PathFromNodeToNode(start.id, end.id);
if (shortestPath.length === 1 || shortestPath.length === vg2.V.length) {
var route = rectangle.makeEdgeBetween(edge.source.innerBounds, edge.target.innerBounds, ah);
lineData = [route.sourceIntersection, route.arrowStart];
}
else {
var n = shortestPath.length - 2, p = vg2.V[shortestPath[n]].p, q = vg2.V[shortestPath[0]].p, lineData = [edge.source.innerBounds.rayIntersection(p.x, p.y)];
for (var i = n; i >= 0; --i)
lineData.push(vg2.V[shortestPath[i]].p);
lineData.push(rectangle.makeEdgeTo(q, edge.target.innerBounds, ah));
}
return lineData;
};
Layout.getSourceIndex = function (e) {
return typeof e.source === 'number' ? e.source : e.source.index;
};
Layout.getTargetIndex = function (e) {
return typeof e.target === 'number' ? e.target : e.target.index;
};
Layout.linkId = function (e) {
return Layout.getSourceIndex(e) + "-" + Layout.getTargetIndex(e);
};
Layout.dragStart = function (d) {
if (isGroup(d)) {
Layout.storeOffset(d, Layout.dragOrigin(d));
}
else {
Layout.stopNode(d);
d.fixed |= 2;
}
};
Layout.stopNode = function (v) {
v.px = v.x;
v.py = v.y;
};
Layout.storeOffset = function (d, origin) {
if (typeof d.leaves !== 'undefined') {
d.leaves.forEach(function (v) {
v.fixed |= 2;
Layout.stopNode(v);
v._dragGroupOffsetX = v.x - origin.x;
v._dragGroupOffsetY = v.y - origin.y;
});
}
if (typeof d.groups !== 'undefined') {
d.groups.forEach(function (g) { return Layout.storeOffset(g, origin); });
}
};
Layout.dragOrigin = function (d) {
if (isGroup(d)) {
return {
x: d.bounds.cx(),
y: d.bounds.cy()
};
}
else {
return d;
}
};
Layout.drag = function (d, position) {
if (isGroup(d)) {
if (typeof d.leaves !== 'undefined') {
d.leaves.forEach(function (v) {
d.bounds.setXCentre(position.x);
d.bounds.setYCentre(position.y);
v.px = v._dragGroupOffsetX + position.x;
v.py = v._dragGroupOffsetY + position.y;
});
}
if (typeof d.groups !== 'undefined') {
d.groups.forEach(function (g) { return Layout.drag(g, position); });
}
}
else {
d.px = position.x;
d.py = position.y;
}
};
Layout.dragEnd = function (d) {
if (isGroup(d)) {
if (typeof d.leaves !== 'undefined') {
d.leaves.forEach(function (v) {
Layout.dragEnd(v);
delete v._dragGroupOffsetX;
delete v._dragGroupOffsetY;
});
}
if (typeof d.groups !== 'undefined') {
d.groups.forEach(Layout.dragEnd);
}
}
else {
d.fixed &= ~6;
}
};
Layout.mouseOver = function (d) {
d.fixed |= 4;
d.px = d.x, d.py = d.y;
};
Layout.mouseOut = function (d) {
d.fixed &= ~4;
};
return Layout;
}());
exports.Layout = Layout;
});
var __extends$2 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var LayoutAdaptor = (function (_super) {
__extends$2(LayoutAdaptor, _super);
function LayoutAdaptor(options) {
var _this = _super.call(this) || this;
var o = options;
if (o.trigger) {
_this.trigger = o.trigger;
}
if (o.kick) {
_this.kick = o.kick;
}
if (o.drag) {
_this.drag = o.drag;
}
if (o.on) {
_this.on = o.on;
}
_this.dragstart = _this.dragStart = layout$1.Layout.dragStart;
_this.dragend = _this.dragEnd = layout$1.Layout.dragEnd;
return _this;
}
LayoutAdaptor.prototype.trigger = function (e) { };
LayoutAdaptor.prototype.kick = function () { };
LayoutAdaptor.prototype.drag = function () { };
LayoutAdaptor.prototype.on = function (eventType, listener) { return this; };
return LayoutAdaptor;
}(layout$1.Layout));
var LayoutAdaptor_1 = LayoutAdaptor;
function adaptor(options) {
return new LayoutAdaptor(options);
}
var adaptor_2 = adaptor;
var adaptor_1 = /*#__PURE__*/Object.defineProperty({
LayoutAdaptor: LayoutAdaptor_1,
adaptor: adaptor_2
}, '__esModule', {value: true});
var __extends$1 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var D3StyleLayoutAdaptor$1 = (function (_super) {
__extends$1(D3StyleLayoutAdaptor, _super);
function D3StyleLayoutAdaptor() {
var _this = _super.call(this) || this;
_this.event = d3.dispatch(layout$1.EventType[layout$1.EventType.start], layout$1.EventType[layout$1.EventType.tick], layout$1.EventType[layout$1.EventType.end]);
var d3layout = _this;
_this.drag = function () {
if (!drag) {
var drag = d3.behavior.drag()
.origin(layout$1.Layout.dragOrigin)
.on("dragstart.d3adaptor", layout$1.Layout.dragStart)
.on("drag.d3adaptor", function (d) {
layout$1.Layout.drag(d, d3.event);
d3layout.resume();
})
.on("dragend.d3adaptor", layout$1.Layout.dragEnd);
}
if (!arguments.length)
return drag;
this
.call(drag);
};
return _this;
}
D3StyleLayoutAdaptor.prototype.trigger = function (e) {
var d3event = { type: layout$1.EventType[e.type], alpha: e.alpha, stress: e.stress };
this.event[d3event.type](d3event);
};
D3StyleLayoutAdaptor.prototype.kick = function () {
var _this = this;
d3.timer(function () { return _super.prototype.tick.call(_this); });
};
D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) {
if (typeof eventType === 'string') {
this.event.on(eventType, listener);
}
else {
this.event.on(layout$1.EventType[eventType], listener);
}
return this;
};
return D3StyleLayoutAdaptor;
}(layout$1.Layout));
var D3StyleLayoutAdaptor_1$1 = D3StyleLayoutAdaptor$1;
function d3adaptor$1() {
return new D3StyleLayoutAdaptor$1();
}
var d3adaptor_1$1 = d3adaptor$1;
var d3v3adaptor = /*#__PURE__*/Object.defineProperty({
D3StyleLayoutAdaptor: D3StyleLayoutAdaptor_1$1,
d3adaptor: d3adaptor_1$1
}, '__esModule', {value: true});
var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var D3StyleLayoutAdaptor = (function (_super) {
__extends(D3StyleLayoutAdaptor, _super);
function D3StyleLayoutAdaptor(d3Context) {
var _this = _super.call(this) || this;
_this.d3Context = d3Context;
_this.event = d3Context.dispatch(layout$1.EventType[layout$1.EventType.start], layout$1.EventType[layout$1.EventType.tick], layout$1.EventType[layout$1.EventType.end]);
var d3layout = _this;
_this.drag = function () {
if (!drag) {
var drag = d3Context.drag()
.subject(layout$1.Layout.dragOrigin)
.on("start.d3adaptor", layout$1.Layout.dragStart)
.on("drag.d3adaptor", function (d) {
layout$1.Layout.drag(d, d3Context.event);
d3layout.resume();
})
.on("end.d3adaptor", layout$1.Layout.dragEnd);
}
if (!arguments.length)
return drag;
arguments[0].call(drag);
};
return _this;
}
D3StyleLayoutAdaptor.prototype.trigger = function (e) {
var d3event = { type: layout$1.EventType[e.type], alpha: e.alpha, stress: e.stress };
this.event.call(d3event.type, d3event);
};
D3StyleLayoutAdaptor.prototype.kick = function () {
var _this = this;
var t = this.d3Context.timer(function () { return _super.prototype.tick.call(_this) && t.stop(); });
};
D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) {
if (typeof eventType === 'string') {
this.event.on(eventType, listener);
}
else {
this.event.on(layout$1.EventType[eventType], listener);
}
return this;
};
return D3StyleLayoutAdaptor;
}(layout$1.Layout));
var D3StyleLayoutAdaptor_1 = D3StyleLayoutAdaptor;
var d3v4adaptor = /*#__PURE__*/Object.defineProperty({
D3StyleLayoutAdaptor: D3StyleLayoutAdaptor_1
}, '__esModule', {value: true});
function d3adaptor(d3Context) {
if (!d3Context || isD3V3(d3Context)) {
return new d3v3adaptor.D3StyleLayoutAdaptor();
}
return new d3v4adaptor.D3StyleLayoutAdaptor(d3Context);
}
var d3adaptor_2 = d3adaptor;
function isD3V3(d3Context) {
var v3exp = /^3\./;
return d3Context.version && d3Context.version.match(v3exp) !== null;
}
var d3adaptor_1 = /*#__PURE__*/Object.defineProperty({
d3adaptor: d3adaptor_2
}, '__esModule', {value: true});
var NodeWrapper = (function () {
function NodeWrapper(id, rect, children) {
this.id = id;
this.rect = rect;
this.children = children;
this.leaf = typeof children === 'undefined' || children.length === 0;
}
return NodeWrapper;
}());
var NodeWrapper_1 = NodeWrapper;
var Vert = (function () {
function Vert(id, x, y, node, line) {
if (node === void 0) { node = null; }
if (line === void 0) { line = null; }
this.id = id;
this.x = x;
this.y = y;
this.node = node;
this.line = line;
}
return Vert;
}());
var Vert_1 = Vert;
var LongestCommonSubsequence = (function () {
function LongestCommonSubsequence(s, t) {
this.s = s;
this.t = t;
var mf = LongestCommonSubsequence.findMatch(s, t);
var tr = t.slice(0).reverse();
var mr = LongestCommonSubsequence.findMatch(s, tr);
if (mf.length >= mr.length) {
this.length = mf.length;
this.si = mf.si;
this.ti = mf.ti;
this.reversed = false;
}
else {
this.length = mr.length;
this.si = mr.si;
this.ti = t.length - mr.ti - mr.length;
this.reversed = true;
}
}
LongestCommonSubsequence.findMatch = function (s, t) {
var m = s.length;
var n = t.length;
var match = { length: 0, si: -1, ti: -1 };
var l = new Array(m);
for (var i = 0; i < m; i++) {
l[i] = new Array(n);
for (var j = 0; j < n; j++)
if (s[i] === t[j]) {
var v = l[i][j] = (i === 0 || j === 0) ? 1 : l[i - 1][j - 1] + 1;
if (v > match.length) {
match.length = v;
match.si = i - v + 1;
match.ti = j - v + 1;
}
}
else
l[i][j] = 0;
}
return match;
};
LongestCommonSubsequence.prototype.getSequence = function () {
return this.length >= 0 ? this.s.slice(this.si, this.si + this.length) : [];
};
return LongestCommonSubsequence;
}());
var LongestCommonSubsequence_1 = LongestCommonSubsequence;
var GridRouter = (function () {
function GridRouter(originalnodes, accessor, groupPadding) {
var _this = this;
if (groupPadding === void 0) { groupPadding = 12; }
this.originalnodes = originalnodes;
this.groupPadding = groupPadding;
this.leaves = null;
this.nodes = originalnodes.map(function (v, i) { return new NodeWrapper(i, accessor.getBounds(v), accessor.getChildren(v)); });
this.leaves = this.nodes.filter(function (v) { return v.leaf; });
this.groups = this.nodes.filter(function (g) { return !g.leaf; });
this.cols = this.getGridLines('x');
this.rows = this.getGridLines('y');
this.groups.forEach(function (v) {
return v.children.forEach(function (c) { return _this.nodes[c].parent = v; });
});
this.root = { children: [] };
this.nodes.forEach(function (v) {
if (typeof v.parent === 'undefined') {
v.parent = _this.root;
_this.root.children.push(v.id);
}
v.ports = [];
});
this.backToFront = this.nodes.slice(0);
this.backToFront.sort(function (x, y) { return _this.getDepth(x) - _this.getDepth(y); });
var frontToBackGroups = this.backToFront.slice(0).reverse().filter(function (g) { return !g.leaf; });
frontToBackGroups.forEach(function (v) {
var r = rectangle.Rectangle.empty();
v.children.forEach(function (c) { return r = r.union(_this.nodes[c].rect); });
v.rect = r.inflate(_this.groupPadding);
});
var colMids = this.midPoints(this.cols.map(function (r) { return r.pos; }));
var rowMids = this.midPoints(this.rows.map(function (r) { return r.pos; }));
var rowx = colMids[0], rowX = colMids[colMids.length - 1];
var coly = rowMids[0], colY = rowMids[rowMids.length - 1];
var hlines = this.rows.map(function (r) { return ({ x1: rowx, x2: rowX, y1: r.pos, y2: r.pos }); })
.concat(rowMids.map(function (m) { return ({ x1: rowx, x2: rowX, y1: m, y2: m }); }));
var vlines = this.cols.map(function (c) { return ({ x1: c.pos, x2: c.pos, y1: coly, y2: colY }); })
.concat(colMids.map(function (m) { return ({ x1: m, x2: m, y1: coly, y2: colY }); }));
var lines = hlines.concat(vlines);
lines.forEach(function (l) { return l.verts = []; });
this.verts = [];
this.edges = [];
hlines.forEach(function (h) {
return vlines.forEach(function (v) {
var p = new Vert(_this.verts.length, v.x1, h.y1);
h.verts.push(p);
v.verts.push(p);
_this.verts.push(p);
var i = _this.backToFront.length;
while (i-- > 0) {
var node = _this.backToFront[i], r = node.rect;
var dx = Math.abs(p.x - r.cx()), dy = Math.abs(p.y - r.cy());
if (dx < r.width() / 2 && dy < r.height() / 2) {
p.node = node;
break;
}
}
});
});
lines.forEach(function (l, li) {
_this.nodes.forEach(function (v, i) {
v.rect.lineIntersections(l.x1, l.y1, l.x2, l.y2).forEach(function (intersect, j) {
var p = new Vert(_this.verts.length, intersect.x, intersect.y, v, l);
_this.verts.push(p);
l.verts.push(p);
v.ports.push(p);
});
});
var isHoriz = Math.abs(l.y1 - l.y2) < 0.1;
var delta = function (a, b) { return isHoriz ? b.x - a.x : b.y - a.y; };
l.verts.sort(delta);
for (var i = 1; i < l.verts.length; i++) {
var u = l.verts[i - 1], v = l.verts[i];
if (u.node && u.node === v.node && u.node.leaf)
continue;
_this.edges.push({ source: u.id, target: v.id, length: Math.abs(delta(u, v)) });
}
});
}
GridRouter.prototype.avg = function (a) { return a.reduce(function (x, y) { return x + y; }) / a.length; };
GridRouter.prototype.getGridLines = function (axis) {
var columns = [];
var ls = this.leaves.slice(0, this.leaves.length);
while (ls.length > 0) {
var overlapping = ls.filter(function (v) { return v.rect['overlap' + axis.toUpperCase()](ls[0].rect); });
var col = {
nodes: overlapping,
pos: this.avg(overlapping.map(function (v) { return v.rect['c' + axis](); }))
};
columns.push(col);
col.nodes.forEach(function (v) { return ls.splice(ls.indexOf(v), 1); });
}
columns.sort(function (a, b) { return a.pos - b.pos; });
return columns;
};
GridRouter.prototype.getDepth = function (v) {
var depth = 0;
while (v.parent !== this.root) {
depth++;
v = v.parent;
}
return depth;
};
GridRouter.prototype.midPoints = function (a) {
var gap = a[1] - a[0];
var mids = [a[0] - gap / 2];
for (var i = 1; i < a.length; i++) {
mids.push((a[i] + a[i - 1]) / 2);
}
mids.push(a[a.length - 1] + gap / 2);
return mids;
};
GridRouter.prototype.findLineage = function (v) {
var lineage = [v];
do {
v = v.parent;
lineage.push(v);
} while (v !== this.root);
return lineage.reverse();
};
GridRouter.prototype.findAncestorPathBetween = function (a, b) {
var aa = this.findLineage(a), ba = this.findLineage(b), i = 0;
while (aa[i] === ba[i])
i++;
return { commonAncestor: aa[i - 1], lineages: aa.slice(i).concat(ba.slice(i)) };
};
GridRouter.prototype.siblingObstacles = function (a, b) {
var _this = this;
var path = this.findAncestorPathBetween(a, b);
var lineageLookup = {};
path.lineages.forEach(function (v) { return lineageLookup[v.id] = {}; });
var obstacles = path.commonAncestor.children.filter(function (v) { return !(v in lineageLookup); });
path.lineages
.filter(function (v) { return v.parent !== path.commonAncestor; })
.forEach(function (v) { return obstacles = obstacles.concat(v.parent.children.filter(function (c) { return c !== v.id; })); });
return obstacles.map(function (v) { return _this.nodes[v]; });
};
GridRouter.getSegmentSets = function (routes, x, y) {
var vsegments = [];
for (var ei = 0; ei < routes.length; ei++) {
var route = routes[ei];
for (var si = 0; si < route.length; si++) {
var s = route[si];
s.edgeid = ei;
s.i = si;
var sdx = s[1][x] - s[0][x];
if (Math.abs(sdx) < 0.1) {
vsegments.push(s);
}
}
}
vsegments.sort(function (a, b) { return a[0][x] - b[0][x]; });
var vsegmentsets = [];
var segmentset = null;
for (var i = 0; i < vsegments.length; i++) {
var s = vsegments[i];
if (!segmentset || Math.abs(s[0][x] - segmentset.pos) > 0.1) {
segmentset = { pos: s[0][x], segments: [] };
vsegmentsets.push(segmentset);
}
segmentset.segments.push(s);
}
return vsegmentsets;
};
GridRouter.nudgeSegs = function (x, y, routes, segments, leftOf, gap) {
var n = segments.length;
if (n <= 1)
return;
var vs = segments.map(function (s) { return new vpsc.Variable(s[0][x]); });
var cs = [];
for (var i = 0; i < n; i++) {
for (var j = 0; j < n; j++) {
if (i === j)
continue;
var s1 = segments[i], s2 = segments[j], e1 = s1.edgeid, e2 = s2.edgeid, lind = -1, rind = -1;
if (x == 'x') {
if (leftOf(e1, e2)) {
if (s1[0][y] < s1[1][y]) {
lind = j, rind = i;
}
else {
lind = i, rind = j;
}
}
}
else {
if (leftOf(e1, e2)) {
if (s1[0][y] < s1[1][y]) {
lind = i, rind = j;
}
else {
lind = j, rind = i;
}
}
}
if (lind >= 0) {
cs.push(new vpsc.Constraint(vs[lind], vs[rind], gap));
}
}
}
var solver = new vpsc.Solver(vs, cs);
solver.solve();
vs.forEach(function (v, i) {
var s = segments[i];
var pos = v.position();
s[0][x] = s[1][x] = pos;
var route = routes[s.edgeid];
if (s.i > 0)
route[s.i - 1][1][x] = pos;
if (s.i < route.length - 1)
route[s.i + 1][0][x] = pos;
});
};
GridRouter.nudgeSegments = function (routes, x, y, leftOf, gap) {
var vsegmentsets = GridRouter.getSegmentSets(routes, x, y);
for (var i = 0; i < vsegmentsets.length; i++) {
var ss = vsegmentsets[i];
var events = [];
for (var j = 0; j < ss.segments.length; j++) {
var s = ss.segments[j];
events.push({ type: 0, s: s, pos: Math.min(s[0][y], s[1][y]) });
events.push({ type: 1, s: s, pos: Math.max(s[0][y], s[1][y]) });
}
events.sort(function (a, b) { return a.pos - b.pos + a.type - b.type; });
var open = [];
var openCount = 0;
events.forEach(function (e) {
if (e.type === 0) {
open.push(e.s);
openCount++;
}
else {
openCount--;
}
if (openCount == 0) {
GridRouter.nudgeSegs(x, y, routes, open, leftOf, gap);
open = [];
}
});
}
};
GridRouter.prototype.routeEdges = function (edges, nudgeGap, source, target) {
var _this = this;
var routePaths = edges.map(function (e) { return _this.route(source(e), target(e)); });
var order = GridRouter.orderEdges(routePaths);
var routes = routePaths.map(function (e) { return GridRouter.makeSegments(e); });
GridRouter.nudgeSegments(routes, 'x', 'y', order, nudgeGap);
GridRouter.nudgeSegments(routes, 'y', 'x', order, nudgeGap);
GridRouter.unreverseEdges(routes, routePaths);
return routes;
};
GridRouter.unreverseEdges = function (routes, routePaths) {
routes.forEach(function (segments, i) {
var path = routePaths[i];
if (path.reversed) {
segments.reverse();
segments.forEach(function (segment) {
segment.reverse();
});
}
});
};
GridRouter.angleBetween2Lines = function (line1, line2) {
var angle1 = Math.atan2(line1[0].y - line1[1].y, line1[0].x - line1[1].x);
var angle2 = Math.atan2(line2[0].y - line2[1].y, line2[0].x - line2[1].x);
var diff = angle1 - angle2;
if (diff > Math.PI || diff < -Math.PI) {
diff = angle2 - angle1;
}
return diff;
};
GridRouter.isLeft = function (a, b, c) {
return ((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) <= 0;
};
GridRouter.getOrder = function (pairs) {
var outgoing = {};
for (var i = 0; i < pairs.length; i++) {
var p = pairs[i];
if (typeof outgoing[p.l] === 'undefined')
outgoing[p.l] = {};
outgoing[p.l][p.r] = true;
}
return function (l, r) { return typeof outgoing[l] !== 'undefined' && outgoing[l][r]; };
};
GridRouter.orderEdges = function (edges) {
var edgeOrder = [];
for (var i = 0; i < edges.length - 1; i++) {
for (var j = i + 1; j < edges.length; j++) {
var e = edges[i], f = edges[j], lcs = new LongestCommonSubsequence(e, f);
var u, vi, vj;
if (lcs.length === 0)
continue;
if (lcs.reversed) {
f.reverse();
f.reversed = true;
lcs = new LongestCommonSubsequence(e, f);
}
if ((lcs.si <= 0 || lcs.ti <= 0) &&
(lcs.si + lcs.length >= e.length || lcs.ti + lcs.length >= f.length)) {
edgeOrder.push({ l: i, r: j });
continue;
}
if (lcs.si + lcs.length >= e.length || lcs.ti + lcs.length >= f.length) {
u = e[lcs.si + 1];
vj = e[lcs.si - 1];
vi = f[lcs.ti - 1];
}
else {
u = e[lcs.si + lcs.length - 2];
vi = e[lcs.si + lcs.length];
vj = f[lcs.ti + lcs.length];
}
if (GridRouter.isLeft(u, vi, vj)) {
edgeOrder.push({ l: j, r: i });
}
else {
edgeOrder.push({ l: i, r: j });
}
}
}
return GridRouter.getOrder(edgeOrder);
};
GridRouter.makeSegments = function (path) {
function copyPoint(p) {
return { x: p.x, y: p.y };
}
var isStraight = function (a, b, c) { return Math.abs((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) < 0.001; };
var segments = [];
var a = copyPoint(path[0]);
for (var i = 1; i < path.length; i++) {
var b = copyPoint(path[i]), c = i < path.length - 1 ? path[i + 1] : null;
if (!c || !isStraight(a, b, c)) {
segments.push([a, b]);
a = b;
}
}
return segments;
};
GridRouter.prototype.route = function (s, t) {
var _this = this;
var source = this.nodes[s], target = this.nodes[t];
this.obstacles = this.siblingObstacles(source, target);
var obstacleLookup = {};
this.obstacles.forEach(function (o) { return obstacleLookup[o.id] = o; });
this.passableEdges = this.edges.filter(function (e) {
var u = _this.verts[e.source], v = _this.verts[e.target];
return !(u.node && u.node.id in obstacleLookup
|| v.node && v.node.id in obstacleLookup);
});
for (var i = 1; i < source.ports.length; i++) {
var u = source.ports[0].id;
var v = source.ports[i].id;
this.passableEdges.push({
source: u,
target: v,
length: 0
});
}
for (var i = 1; i < target.ports.length; i++) {
var u = target.ports[0].id;
var v = target.ports[i].id;
this.passableEdges.push({
source: u,
target: v,
length: 0
});
}
var getSource = function (e) { return e.source; }, getTarget = function (e) { return e.target; }, getLength = function (e) { return e.length; };
var shortestPathCalculator = new shortestpaths.Calculator(this.verts.length, this.passableEdges, getSource, getTarget, getLength);
var bendPenalty = function (u, v, w) {
var a = _this.verts[u], b = _this.verts[v], c = _this.verts[w];
var dx = Math.abs(c.x - a.x), dy = Math.abs(c.y - a.y);
if (a.node === source && a.node === b.node || b.node === target && b.node === c.node)
return 0;
return dx > 1 && dy > 1 ? 1000 : 0;
};
var shortestPath = shortestPathCalculator.PathFromNodeToNodeWithPrevCost(source.ports[0].id, target.ports[0].id, bendPenalty);
var pathPoints = shortestPath.reverse().map(function (vi) { return _this.verts[vi]; });
pathPoints.push(this.nodes[target.id].ports[0]);
return pathPoints.filter(function (v, i) {
return !(i < pathPoints.length - 1 && pathPoints[i + 1].node === source && v.node === source
|| i > 0 && v.node === target && pathPoints[i - 1].node === target);
});
};
GridRouter.getRoutePath = function (route, cornerradius, arrowwidth, arrowheight) {
var result = {
routepath: 'M ' + route[0][0].x + ' ' + route[0][0].y + ' ',
arrowpath: ''
};
if (route.length > 1) {
for (var i = 0; i < route.length; i++) {
var li = route[i];
var x = li[1].x, y = li[1].y;
var dx = x - li[0].x;
var dy = y - li[0].y;
if (i < route.length - 1) {
if (Math.abs(dx) > 0) {
x -= dx / Math.abs(dx) * cornerradius;
}
else {
y -= dy / Math.abs(dy) * cornerradius;
}
result.routepath += 'L ' + x + ' ' + y + ' ';
var l = route[i + 1];
var x0 = l[0].x, y0 = l[0].y;
var x1 = l[1].x;
var y1 = l[1].y;
dx = x1 - x0;
dy = y1 - y0;
var angle = GridRouter.angleBetween2Lines(li, l) < 0 ? 1 : 0;
var x2, y2;
if (Math.abs(dx) > 0) {
x2 = x0 + dx / Math.abs(dx) * cornerradius;
y2 = y0;
}
else {
x2 = x0;
y2 = y0 + dy / Math.abs(dy) * cornerradius;
}
var cx = Math.abs(x2 - x);
var cy = Math.abs(y2 - y);
result.routepath += 'A ' + cx + ' ' + cy + ' 0 0 ' + angle + ' ' + x2 + ' ' + y2 + ' ';
}
else {
var arrowtip = [x, y];
var arrowcorner1, arrowcorner2;
if (Math.abs(dx) > 0) {
x -= dx / Math.abs(dx) * arrowheight;
arrowcorner1 = [x, y + arrowwidth];
arrowcorner2 = [x, y - arrowwidth];
}
else {
y -= dy / Math.abs(dy) * arrowheight;
arrowcorner1 = [x + arrowwidth, y];
arrowcorner2 = [x - arrowwidth, y];
}
result.routepath += 'L ' + x + ' ' + y + ' ';
if (arrowheight > 0) {
result.arrowpath = 'M ' + arrowtip[0] + ' ' + arrowtip[1] + ' L ' + arrowcorner1[0] + ' ' + arrowcorner1[1]
+ ' L ' + arrowcorner2[0] + ' ' + arrowcorner2[1];
}
}
}
}
else {
var li = route[0];
var x = li[1].x, y = li[1].y;
var dx = x - li[0].x;
var dy = y - li[0].y;
var arrowtip = [x, y];
var arrowcorner1, arrowcorner2;
if (Math.abs(dx) > 0) {
x -= dx / Math.abs(dx) * arrowheight;
arrowcorner1 = [x, y + arrowwidth];
arrowcorner2 = [x, y - arrowwidth];
}
else {
y -= dy / Math.abs(dy) * arrowheight;
arrowcorner1 = [x + arrowwidth, y];
arrowcorner2 = [x - arrowwidth, y];
}
result.routepath += 'L ' + x + ' ' + y + ' ';
if (arrowheight > 0) {
result.arrowpath = 'M ' + arrowtip[0] + ' ' + arrowtip[1] + ' L ' + arrowcorner1[0] + ' ' + arrowcorner1[1]
+ ' L ' + arrowcorner2[0] + ' ' + arrowcorner2[1];
}
}
return result;
};
return GridRouter;
}());
var GridRouter_1 = GridRouter;
var gridrouter = /*#__PURE__*/Object.defineProperty({
NodeWrapper: NodeWrapper_1,
Vert: Vert_1,
LongestCommonSubsequence: LongestCommonSubsequence_1,
GridRouter: GridRouter_1
}, '__esModule', {value: true});
var Link3D = (function () {
function Link3D(source, target) {
this.source = source;
this.target = target;
}
Link3D.prototype.actualLength = function (x) {
var _this = this;
return Math.sqrt(x.reduce(function (c, v) {
var dx = v[_this.target] - v[_this.source];
return c + dx * dx;
}, 0));
};
return Link3D;
}());
var Link3D_1 = Link3D;
var Node3D = (function () {
function Node3D(x, y, z) {
if (x === void 0) { x = 0; }
if (y === void 0) { y = 0; }
if (z === void 0) { z = 0; }
this.x = x;
this.y = y;
this.z = z;
}
return Node3D;
}());
var Node3D_1 = Node3D;
var Layout3D = (function () {
function Layout3D(nodes, links, idealLinkLength) {
var _this = this;
if (idealLinkLength === void 0) { idealLinkLength = 1; }
this.nodes = nodes;
this.links = links;
this.idealLinkLength = idealLinkLength;
this.constraints = null;
this.useJaccardLinkLengths = true;
this.result = new Array(Layout3D.k);
for (var i = 0; i < Layout3D.k; ++i) {
this.result[i] = new Array(nodes.length);
}
nodes.forEach(function (v, i) {
for (var _i = 0, _a = Layout3D.dims; _i < _a.length; _i++) {
var dim = _a[_i];
if (typeof v[dim] == 'undefined')
v[dim] = Math.random();
}
_this.result[0][i] = v.x;
_this.result[1][i] = v.y;
_this.result[2][i] = v.z;
});
}
Layout3D.prototype.linkLength = function (l) {
return l.actualLength(this.result);
};
Layout3D.prototype.start = function (iterations) {
var _this = this;
if (iterations === void 0) { iterations = 100; }
var n = this.nodes.length;
var linkAccessor = new LinkAccessor();
if (this.useJaccardLinkLengths)
linklengths.jaccardLinkLengths(this.links, linkAccessor, 1.5);
this.links.forEach(function (e) { return e.length *= _this.idealLinkLength; });
var distanceMatrix = (new shortestpaths.Calculator(n, this.links, function (e) { return e.source; }, function (e) { return e.target; }, function (e) { return e.length; })).DistanceMatrix();
var D = descent.Descent.createSquareMatrix(n, function (i, j) { return distanceMatrix[i][j]; });
var G = descent.Descent.createSquareMatrix(n, function () { return 2; });
this.links.forEach(function (_a) {
var source = _a.source, target = _a.target;
return G[source][target] = G[target][source] = 1;
});
this.descent = new descent.Descent(this.result, D);
this.descent.threshold = 1e-3;
this.descent.G = G;
if (this.constraints)
this.descent.project = new rectangle.Projection(this.nodes, null, null, this.constraints).projectFunctions();
for (var i = 0; i < this.nodes.length; i++) {
var v = this.nodes[i];
if (v.fixed) {
this.descent.locks.add(i, [v.x, v.y, v.z]);
}
}
this.descent.run(iterations);
return this;
};
Layout3D.prototype.tick = function () {
this.descent.locks.clear();
for (var i = 0; i < this.nodes.length; i++) {
var v = this.nodes[i];
if (v.fixed) {
this.descent.locks.add(i, [v.x, v.y, v.z]);
}
}
return this.descent.rungeKutta();
};
Layout3D.dims = ['x', 'y', 'z'];
Layout3D.k = Layout3D.dims.length;
return Layout3D;
}());
var Layout3D_1 = Layout3D;
var LinkAccessor = (function () {
function LinkAccessor() {
}
LinkAccessor.prototype.getSourceIndex = function (e) { return e.source; };
LinkAccessor.prototype.getTargetIndex = function (e) { return e.target; };
LinkAccessor.prototype.getLength = function (e) { return e.length; };
LinkAccessor.prototype.setLength = function (e, l) { e.length = l; };
return LinkAccessor;
}());
var layout3d = /*#__PURE__*/Object.defineProperty({
Link3D: Link3D_1,
Node3D: Node3D_1,
Layout3D: Layout3D_1
}, '__esModule', {value: true});
function gridify(pgLayout, nudgeGap, margin, groupMargin) {
pgLayout.cola.start(0, 0, 0, 10, false);
var gridrouter = route(pgLayout.cola.nodes(), pgLayout.cola.groups(), margin, groupMargin);
return gridrouter.routeEdges(pgLayout.powerGraph.powerEdges, nudgeGap, function (e) { return e.source.routerNode.id; }, function (e) { return e.target.routerNode.id; });
}
var gridify_1 = gridify;
function route(nodes, groups, margin, groupMargin) {
nodes.forEach(function (d) {
d.routerNode = {
name: d.name,
bounds: d.bounds.inflate(-margin)
};
});
groups.forEach(function (d) {
d.routerNode = {
bounds: d.bounds.inflate(-groupMargin),
children: (typeof d.groups !== 'undefined' ? d.groups.map(function (c) { return nodes.length + c.id; }) : [])
.concat(typeof d.leaves !== 'undefined' ? d.leaves.map(function (c) { return c.index; }) : [])
};
});
var gridRouterNodes = nodes.concat(groups).map(function (d, i) {
d.routerNode.id = i;
return d.routerNode;
});
return new gridrouter.GridRouter(gridRouterNodes, {
getChildren: function (v) { return v.children; },
getBounds: function (v) { return v.bounds; }
}, margin - groupMargin);
}
function powerGraphGridLayout(graph, size, grouppadding) {
var powerGraph;
graph.nodes.forEach(function (v, i) { return v.index = i; });
new layout$1.Layout()
.avoidOverlaps(false)
.nodes(graph.nodes)
.links(graph.links)
.powerGraphGroups(function (d) {
powerGraph = d;
powerGraph.groups.forEach(function (v) { return v.padding = grouppadding; });
});
var n = graph.nodes.length;
var edges = [];
var vs = graph.nodes.slice(0);
vs.forEach(function (v, i) { return v.index = i; });
powerGraph.groups.forEach(function (g) {
var sourceInd = g.index = g.id + n;
vs.push(g);
if (typeof g.leaves !== 'undefined')
g.leaves.forEach(function (v) { return edges.push({ source: sourceInd, target: v.index }); });
if (typeof g.groups !== 'undefined')
g.groups.forEach(function (gg) { return edges.push({ source: sourceInd, target: gg.id + n }); });
});
powerGraph.powerEdges.forEach(function (e) {
edges.push({ source: e.source.index, target: e.target.index });
});
new layout$1.Layout()
.size(size)
.nodes(vs)
.links(edges)
.avoidOverlaps(false)
.linkDistance(30)
.symmetricDiffLinkLengths(5)
.convergenceThreshold(1e-4)
.start(100, 0, 0, 0, false);
return {
cola: new layout$1.Layout()
.convergenceThreshold(1e-3)
.size(size)
.avoidOverlaps(true)
.nodes(graph.nodes)
.links(graph.links)
.groupCompactness(1e-4)
.linkDistance(30)
.symmetricDiffLinkLengths(5)
.powerGraphGroups(function (d) {
powerGraph = d;
powerGraph.groups.forEach(function (v) {
v.padding = grouppadding;
});
}).start(50, 0, 100, 0, false),
powerGraph: powerGraph
};
}
var powerGraphGridLayout_1 = powerGraphGridLayout;
var batch = /*#__PURE__*/Object.defineProperty({
gridify: gridify_1,
powerGraphGridLayout: powerGraphGridLayout_1
}, '__esModule', {value: true});
var dist = createCommonjsModule(function (module, exports) {
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(adaptor_1);
__export(d3adaptor_1);
__export(descent);
__export(geom);
__export(gridrouter);
__export(handledisconnected);
__export(layout$1);
__export(layout3d);
__export(linklengths);
__export(powergraph);
__export(pqueue);
__export(rbtree);
__export(rectangle);
__export(shortestpaths);
__export(vpsc);
__export(batch);
});
var cytoscapeCola = createCommonjsModule(function (module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory(dist);
})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_5__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 3);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var assign = __webpack_require__(1);
var defaults = __webpack_require__(2);
var cola = __webpack_require__(5) || (typeof window !== 'undefined' ? window.cola : null);
var raf = __webpack_require__(4);
var isString = function isString(o) {
return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof('');
};
var isNumber = function isNumber(o) {
return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(0);
};
var isObject = function isObject(o) {
return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof({});
};
var isFunction = function isFunction(o) {
return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(function () {});
};
var nop = function nop() {};
var getOptVal = function getOptVal(val, ele) {
if (isFunction(val)) {
var fn = val;
return fn.apply(ele, [ele]);
} else {
return val;
}
};
// constructor
// options : object containing layout options
function ColaLayout(options) {
this.options = assign({}, defaults, options);
}
// runs the layout
ColaLayout.prototype.run = function () {
var layout = this;
var options = this.options;
layout.manuallyStopped = false;
var cy = options.cy; // cy is automatically populated for us in the constructor
var eles = options.eles;
var nodes = eles.nodes();
var edges = eles.edges();
var ready = false;
var isParent = function isParent(ele) {
return ele.isParent();
};
var parentNodes = nodes.filter(isParent);
var nonparentNodes = nodes.subtract(parentNodes);
var bb = options.boundingBox || { x1: 0, y1: 0, w: cy.width(), h: cy.height() };
if (bb.x2 === undefined) {
bb.x2 = bb.x1 + bb.w;
}
if (bb.w === undefined) {
bb.w = bb.x2 - bb.x1;
}
if (bb.y2 === undefined) {
bb.y2 = bb.y1 + bb.h;
}
if (bb.h === undefined) {
bb.h = bb.y2 - bb.y1;
}
var updateNodePositions = function updateNodePositions() {
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
var dimensions = node.layoutDimensions(options);
var scratch = node.scratch('cola');
// update node dims
if (!scratch.updatedDims) {
var padding = getOptVal(options.nodeSpacing, node);
scratch.width = dimensions.w + 2 * padding;
scratch.height = dimensions.h + 2 * padding;
}
}
nodes.positions(function (node) {
var scratch = node.scratch().cola;
var retPos = void 0;
if (!node.grabbed() && nonparentNodes.contains(node)) {
retPos = {
x: bb.x1 + scratch.x,
y: bb.y1 + scratch.y
};
if (!isNumber(retPos.x) || !isNumber(retPos.y)) {
retPos = undefined;
}
}
return retPos;
});
nodes.updateCompoundBounds(); // because the way this layout sets positions is buggy for some reason; ref #878
if (!ready) {
onReady();
ready = true;
}
if (options.fit) {
cy.fit(options.padding);
}
};
var onDone = function onDone() {
if (options.ungrabifyWhileSimulating) {
grabbableNodes.grabify();
}
cy.off('destroy', destroyHandler);
nodes.off('grab free position', grabHandler);
nodes.off('lock unlock', lockHandler);
// trigger layoutstop when the layout stops (e.g. finishes)
layout.one('layoutstop', options.stop);
layout.trigger({ type: 'layoutstop', layout: layout });
};
var onReady = function onReady() {
// trigger layoutready when each node has had its position set at least once
layout.one('layoutready', options.ready);
layout.trigger({ type: 'layoutready', layout: layout });
};
var ticksPerFrame = options.refresh;
if (options.refresh < 0) {
ticksPerFrame = 1;
} else {
ticksPerFrame = Math.max(1, ticksPerFrame); // at least 1
}
var adaptor = layout.adaptor = cola.adaptor({
trigger: function trigger(e) {
// on sim event
var TICK = cola.EventType ? cola.EventType.tick : null;
var END = cola.EventType ? cola.EventType.end : null;
switch (e.type) {
case 'tick':
case TICK:
if (options.animate) {
updateNodePositions();
}
break;
case 'end':
case END:
updateNodePositions();
if (!options.infinite) {
onDone();
}
break;
}
},
kick: function kick() {
// kick off the simulation
//let skip = 0;
var firstTick = true;
var inftick = function inftick() {
if (layout.manuallyStopped) {
onDone();
return true;
}
var ret = adaptor.tick();
if (!options.infinite && !firstTick) {
adaptor.convergenceThreshold(options.convergenceThreshold);
}
firstTick = false;
if (ret && options.infinite) {
// resume layout if done
adaptor.resume(); // resume => new kick
}
return ret; // allow regular finish b/c of new kick
};
var multitick = function multitick() {
// multiple ticks in a row
var ret = void 0;
for (var i = 0; i < ticksPerFrame && !ret; i++) {
ret = ret || inftick(); // pick up true ret vals => sim done
}
return ret;
};
if (options.animate) {
var frame = function frame() {
if (multitick()) {
return;
}
raf(frame);
};
raf(frame);
} else {
while (!inftick()) {
// keep going...
}
}
},
on: nop, // dummy; not needed
drag: nop // not needed for our case
});
layout.adaptor = adaptor;
// if set no grabbing during layout
var grabbableNodes = nodes.filter(':grabbable');
if (options.ungrabifyWhileSimulating) {
grabbableNodes.ungrabify();
}
var destroyHandler = void 0;
cy.one('destroy', destroyHandler = function destroyHandler() {
layout.stop();
});
// handle node dragging
var grabHandler = void 0;
nodes.on('grab free position', grabHandler = function grabHandler(e) {
var node = this;
var scrCola = node.scratch().cola;
var pos = node.position();
var nodeIsTarget = e.cyTarget === node || e.target === node;
if (!nodeIsTarget) {
return;
}
switch (e.type) {
case 'grab':
adaptor.dragstart(scrCola);
break;
case 'free':
adaptor.dragend(scrCola);
break;
case 'position':
// only update when different (i.e. manual .position() call or drag) so we don't loop needlessly
if (scrCola.px !== pos.x - bb.x1 || scrCola.py !== pos.y - bb.y1) {
scrCola.px = pos.x - bb.x1;
scrCola.py = pos.y - bb.y1;
}
break;
}
});
var lockHandler = void 0;
nodes.on('lock unlock', lockHandler = function lockHandler() {
var node = this;
var scrCola = node.scratch().cola;
scrCola.fixed = node.locked();
if (node.locked()) {
adaptor.dragstart(scrCola);
} else {
adaptor.dragend(scrCola);
}
});
// add nodes to cola
adaptor.nodes(nonparentNodes.map(function (node, i) {
var padding = getOptVal(options.nodeSpacing, node);
var pos = node.position();
var dimensions = node.layoutDimensions(options);
var struct = node.scratch().cola = {
x: options.randomize && !node.locked() || pos.x === undefined ? Math.round(Math.random() * bb.w) : pos.x,
y: options.randomize && !node.locked() || pos.y === undefined ? Math.round(Math.random() * bb.h) : pos.y,
width: dimensions.w + 2 * padding,
height: dimensions.h + 2 * padding,
index: i,
fixed: node.locked()
};
return struct;
}));
// the constraints to be added on nodes
var constraints = [];
if (options.alignment) {
// then set alignment constraints
if (options.alignment.vertical) {
var verticalAlignments = options.alignment.vertical;
verticalAlignments.forEach(function (alignment) {
var offsetsX = [];
alignment.forEach(function (nodeData) {
var node = nodeData.node;
var scrCola = node.scratch().cola;
var index = scrCola.index;
offsetsX.push({
node: index,
offset: nodeData.offset ? nodeData.offset : 0
});
});
constraints.push({
type: 'alignment',
axis: 'x',
offsets: offsetsX
});
});
}
if (options.alignment.horizontal) {
var horizontalAlignments = options.alignment.horizontal;
horizontalAlignments.forEach(function (alignment) {
var offsetsY = [];
alignment.forEach(function (nodeData) {
var node = nodeData.node;
var scrCola = node.scratch().cola;
var index = scrCola.index;
offsetsY.push({
node: index,
offset: nodeData.offset ? nodeData.offset : 0
});
});
constraints.push({
type: 'alignment',
axis: 'y',
offsets: offsetsY
});
});
}
}
// if gapInequalities variable is set add each inequality constraint to list of constraints
if (options.gapInequalities) {
options.gapInequalities.forEach(function (inequality) {
// for the constraints to be passed to cola layout adaptor use indices of nodes,
// not the nodes themselves
var leftIndex = inequality.left.scratch().cola.index;
var rightIndex = inequality.right.scratch().cola.index;
constraints.push({
axis: inequality.axis,
left: leftIndex,
right: rightIndex,
gap: inequality.gap,
equality: inequality.equality
});
});
}
// add constraints if any
if (constraints.length > 0) {
adaptor.constraints(constraints);
}
// add compound nodes to cola
adaptor.groups(parentNodes.map(function (node, i) {
// add basic group incl leaf nodes
var optPadding = getOptVal(options.nodeSpacing, node);
var getPadding = function getPadding(d) {
return parseFloat(node.style('padding-' + d));
};
var pleft = getPadding('left') + optPadding;
var pright = getPadding('right') + optPadding;
var ptop = getPadding('top') + optPadding;
var pbottom = getPadding('bottom') + optPadding;
node.scratch().cola = {
index: i,
padding: Math.max(pleft, pright, ptop, pbottom),
// leaves should only contain direct descendants (children),
// not the leaves of nested compound nodes or any nodes that are compounds themselves
leaves: node.children().intersection(nonparentNodes).map(function (child) {
return child[0].scratch().cola.index;
}),
fixed: node.locked()
};
return node;
}).map(function (node) {
// add subgroups
node.scratch().cola.groups = node.children().intersection(parentNodes).map(function (child) {
return child.scratch().cola.index;
});
return node.scratch().cola;
}));
// get the edge length setting mechanism
var length = void 0;
var lengthFnName = void 0;
if (options.edgeLength != null) {
length = options.edgeLength;
lengthFnName = 'linkDistance';
} else if (options.edgeSymDiffLength != null) {
length = options.edgeSymDiffLength;
lengthFnName = 'symmetricDiffLinkLengths';
} else if (options.edgeJaccardLength != null) {
length = options.edgeJaccardLength;
lengthFnName = 'jaccardLinkLengths';
} else {
length = 100;
lengthFnName = 'linkDistance';
}
var lengthGetter = function lengthGetter(link) {
return link.calcLength;
};
// add the edges to cola
adaptor.links(edges.stdFilter(function (edge) {
return nonparentNodes.contains(edge.source()) && nonparentNodes.contains(edge.target());
}).map(function (edge) {
var c = edge.scratch().cola = {
source: edge.source()[0].scratch().cola.index,
target: edge.target()[0].scratch().cola.index
};
if (length != null) {
c.calcLength = getOptVal(length, edge);
}
return c;
}));
adaptor.size([bb.w, bb.h]);
if (length != null) {
adaptor[lengthFnName](lengthGetter);
}
// set the flow of cola
if (options.flow) {
var flow = void 0;
var defAxis = 'y';
var defMinSep = 50;
if (isString(options.flow)) {
flow = {
axis: options.flow,
minSeparation: defMinSep
};
} else if (isNumber(options.flow)) {
flow = {
axis: defAxis,
minSeparation: options.flow
};
} else if (isObject(options.flow)) {
flow = options.flow;
flow.axis = flow.axis || defAxis;
flow.minSeparation = flow.minSeparation != null ? flow.minSeparation : defMinSep;
} else {
// e.g. options.flow: true
flow = {
axis: defAxis,
minSeparation: defMinSep
};
}
adaptor.flowLayout(flow.axis, flow.minSeparation);
}
layout.trigger({ type: 'layoutstart', layout: layout });
adaptor.avoidOverlaps(options.avoidOverlap).handleDisconnected(options.handleDisconnected).start(options.unconstrIter, options.userConstIter, options.allConstIter, undefined, // gridSnapIterations = 0
undefined, // keepRunning = true
options.centerGraph);
if (!options.infinite) {
setTimeout(function () {
if (!layout.manuallyStopped) {
adaptor.stop();
}
}, options.maxSimulationTime);
}
return this; // chaining
};
// called on continuous layouts to stop them before they finish
ColaLayout.prototype.stop = function () {
if (this.adaptor) {
this.manuallyStopped = true;
this.adaptor.stop();
}
return this; // chaining
};
module.exports = ColaLayout;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
// Simple, internal Object.assign() polyfill for options objects etc.
module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {
for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
srcs[_key - 1] = arguments[_key];
}
srcs.filter(function (src) {
return src != null;
}).forEach(function (src) {
Object.keys(src).forEach(function (k) {
return tgt[k] = src[k];
});
});
return tgt;
};
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
// default layout options
var defaults = {
animate: true, // whether to show the layout as it's running
refresh: 1, // number of ticks per frame; higher is faster but more jerky
maxSimulationTime: 4000, // max length in ms to run the layout
ungrabifyWhileSimulating: false, // so you can't drag nodes during layout
fit: true, // on every layout reposition of nodes, fit the viewport
padding: 30, // padding around the simulation
boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
nodeDimensionsIncludeLabels: false, // whether labels should be included in determining the space used by a node
// layout event callbacks
ready: function ready() {}, // on layoutready
stop: function stop() {}, // on layoutstop
// positioning options
randomize: false, // use random node positions at beginning of layout
avoidOverlap: true, // if true, prevents overlap of node bounding boxes
handleDisconnected: true, // if true, avoids disconnected components from overlapping
convergenceThreshold: 0.01, // when the alpha value (system energy) falls below this value, the layout stops
nodeSpacing: function nodeSpacing(node) {
return 10;
}, // extra spacing around nodes
flow: undefined, // use DAG/tree flow layout if specified, e.g. { axis: 'y', minSeparation: 30 }
alignment: undefined, // relative alignment constraints on nodes, e.g. function( node ){ return { x: 0, y: 1 } }
gapInequalities: undefined, // list of inequality constraints for the gap between the nodes, e.g. [{"axis":"y", "left":node1, "right":node2, "gap":25}]
centerGraph: true, // adjusts the node positions initially to center the graph (pass false if you want to start the layout from the current position)
// different methods of specifying edge length
// each can be a constant numerical value or a function like `function( edge ){ return 2; }`
edgeLength: undefined, // sets edge length directly in simulation
edgeSymDiffLength: undefined, // symmetric diff edge length in simulation
edgeJaccardLength: undefined, // jaccard edge length in simulation
// iterations of cola algorithm; uses default values on undefined
unconstrIter: undefined, // unconstrained initial layout iterations
userConstIter: undefined, // initial layout iterations with user-specified constraints
allConstIter: undefined, // initial layout iterations with all constraints including non-overlap
// infinite layout options
infinite: false // overrides all other options for a forces-all-the-time mode
};
module.exports = defaults;
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
var impl = __webpack_require__(0);
// registers the extension on a cytoscape lib ref
var register = function register(cytoscape) {
if (!cytoscape) {
return;
} // can't register if cytoscape unspecified
cytoscape('layout', 'cola', impl); // register with cytoscape.js
};
if (typeof cytoscape !== 'undefined') {
// expose to global cytoscape (i.e. window.cytoscape)
register(cytoscape);
}
module.exports = register;
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var raf = void 0;
if ((typeof window === "undefined" ? "undefined" : _typeof(window)) !== ( "undefined" )) {
raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) {
return setTimeout(fn, 16);
};
} else {
// if not available, all you get is immediate calls
raf = function raf(cb) {
cb();
};
}
module.exports = raf;
/***/ }),
/* 5 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_5__;
/***/ })
/******/ ]);
});
});
var cola = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeCola);
var layoutBase = createCommonjsModule(function (module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory();
})(commonjsGlobal, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 26);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
function LayoutConstants() {}
/**
* Layout Quality: 0:draft, 1:default, 2:proof
*/
LayoutConstants.QUALITY = 1;
/**
* Default parameters
*/
LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false;
LayoutConstants.DEFAULT_INCREMENTAL = false;
LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true;
LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false;
LayoutConstants.DEFAULT_ANIMATION_PERIOD = 50;
LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false;
// -----------------------------------------------------------------------------
// Section: General other constants
// -----------------------------------------------------------------------------
/*
* Margins of a graph to be applied on bouding rectangle of its contents. We
* assume margins on all four sides to be uniform.
*/
LayoutConstants.DEFAULT_GRAPH_MARGIN = 15;
/*
* Whether to consider labels in node dimensions or not
*/
LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false;
/*
* Default dimension of a non-compound node.
*/
LayoutConstants.SIMPLE_NODE_SIZE = 40;
/*
* Default dimension of a non-compound node.
*/
LayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2;
/*
* Empty compound node size. When a compound node is empty, its both
* dimensions should be of this value.
*/
LayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40;
/*
* Minimum length that an edge should take during layout
*/
LayoutConstants.MIN_EDGE_LENGTH = 1;
/*
* World boundaries that layout operates on
*/
LayoutConstants.WORLD_BOUNDARY = 1000000;
/*
* World boundaries that random positioning can be performed with
*/
LayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1000;
/*
* Coordinates of the world center
*/
LayoutConstants.WORLD_CENTER_X = 1200;
LayoutConstants.WORLD_CENTER_Y = 900;
module.exports = LayoutConstants;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
var LGraphObject = __webpack_require__(2);
var IGeometry = __webpack_require__(8);
var IMath = __webpack_require__(9);
function LEdge(source, target, vEdge) {
LGraphObject.call(this, vEdge);
this.isOverlapingSourceAndTarget = false;
this.vGraphObject = vEdge;
this.bendpoints = [];
this.source = source;
this.target = target;
}
LEdge.prototype = Object.create(LGraphObject.prototype);
for (var prop in LGraphObject) {
LEdge[prop] = LGraphObject[prop];
}
LEdge.prototype.getSource = function () {
return this.source;
};
LEdge.prototype.getTarget = function () {
return this.target;
};
LEdge.prototype.isInterGraph = function () {
return this.isInterGraph;
};
LEdge.prototype.getLength = function () {
return this.length;
};
LEdge.prototype.isOverlapingSourceAndTarget = function () {
return this.isOverlapingSourceAndTarget;
};
LEdge.prototype.getBendpoints = function () {
return this.bendpoints;
};
LEdge.prototype.getLca = function () {
return this.lca;
};
LEdge.prototype.getSourceInLca = function () {
return this.sourceInLca;
};
LEdge.prototype.getTargetInLca = function () {
return this.targetInLca;
};
LEdge.prototype.getOtherEnd = function (node) {
if (this.source === node) {
return this.target;
} else if (this.target === node) {
return this.source;
} else {
throw "Node is not incident with this edge";
}
};
LEdge.prototype.getOtherEndInGraph = function (node, graph) {
var otherEnd = this.getOtherEnd(node);
var root = graph.getGraphManager().getRoot();
while (true) {
if (otherEnd.getOwner() == graph) {
return otherEnd;
}
if (otherEnd.getOwner() == root) {
break;
}
otherEnd = otherEnd.getOwner().getParent();
}
return null;
};
LEdge.prototype.updateLength = function () {
var clipPointCoordinates = new Array(4);
this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates);
if (!this.isOverlapingSourceAndTarget) {
this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2];
this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3];
if (Math.abs(this.lengthX) < 1.0) {
this.lengthX = IMath.sign(this.lengthX);
}
if (Math.abs(this.lengthY) < 1.0) {
this.lengthY = IMath.sign(this.lengthY);
}
this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);
}
};
LEdge.prototype.updateLengthSimple = function () {
this.lengthX = this.target.getCenterX() - this.source.getCenterX();
this.lengthY = this.target.getCenterY() - this.source.getCenterY();
if (Math.abs(this.lengthX) < 1.0) {
this.lengthX = IMath.sign(this.lengthX);
}
if (Math.abs(this.lengthY) < 1.0) {
this.lengthY = IMath.sign(this.lengthY);
}
this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);
};
module.exports = LEdge;
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
function LGraphObject(vGraphObject) {
this.vGraphObject = vGraphObject;
}
module.exports = LGraphObject;
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
var LGraphObject = __webpack_require__(2);
var Integer = __webpack_require__(10);
var RectangleD = __webpack_require__(13);
var LayoutConstants = __webpack_require__(0);
var RandomSeed = __webpack_require__(16);
var PointD = __webpack_require__(4);
function LNode(gm, loc, size, vNode) {
//Alternative constructor 1 : LNode(LGraphManager gm, Point loc, Dimension size, Object vNode)
if (size == null && vNode == null) {
vNode = loc;
}
LGraphObject.call(this, vNode);
//Alternative constructor 2 : LNode(Layout layout, Object vNode)
if (gm.graphManager != null) gm = gm.graphManager;
this.estimatedSize = Integer.MIN_VALUE;
this.inclusionTreeDepth = Integer.MAX_VALUE;
this.vGraphObject = vNode;
this.edges = [];
this.graphManager = gm;
if (size != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size.width, size.height);else this.rect = new RectangleD();
}
LNode.prototype = Object.create(LGraphObject.prototype);
for (var prop in LGraphObject) {
LNode[prop] = LGraphObject[prop];
}
LNode.prototype.getEdges = function () {
return this.edges;
};
LNode.prototype.getChild = function () {
return this.child;
};
LNode.prototype.getOwner = function () {
// if (this.owner != null) {
// if (!(this.owner == null || this.owner.getNodes().indexOf(this) > -1)) {
// throw "assert failed";
// }
// }
return this.owner;
};
LNode.prototype.getWidth = function () {
return this.rect.width;
};
LNode.prototype.setWidth = function (width) {
this.rect.width = width;
};
LNode.prototype.getHeight = function () {
return this.rect.height;
};
LNode.prototype.setHeight = function (height) {
this.rect.height = height;
};
LNode.prototype.getCenterX = function () {
return this.rect.x + this.rect.width / 2;
};
LNode.prototype.getCenterY = function () {
return this.rect.y + this.rect.height / 2;
};
LNode.prototype.getCenter = function () {
return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2);
};
LNode.prototype.getLocation = function () {
return new PointD(this.rect.x, this.rect.y);
};
LNode.prototype.getRect = function () {
return this.rect;
};
LNode.prototype.getDiagonal = function () {
return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height);
};
/**
* This method returns half the diagonal length of this node.
*/
LNode.prototype.getHalfTheDiagonal = function () {
return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2;
};
LNode.prototype.setRect = function (upperLeft, dimension) {
this.rect.x = upperLeft.x;
this.rect.y = upperLeft.y;
this.rect.width = dimension.width;
this.rect.height = dimension.height;
};
LNode.prototype.setCenter = function (cx, cy) {
this.rect.x = cx - this.rect.width / 2;
this.rect.y = cy - this.rect.height / 2;
};
LNode.prototype.setLocation = function (x, y) {
this.rect.x = x;
this.rect.y = y;
};
LNode.prototype.moveBy = function (dx, dy) {
this.rect.x += dx;
this.rect.y += dy;
};
LNode.prototype.getEdgeListToNode = function (to) {
var edgeList = [];
var self = this;
self.edges.forEach(function (edge) {
if (edge.target == to) {
if (edge.source != self) throw "Incorrect edge source!";
edgeList.push(edge);
}
});
return edgeList;
};
LNode.prototype.getEdgesBetween = function (other) {
var edgeList = [];
var self = this;
self.edges.forEach(function (edge) {
if (!(edge.source == self || edge.target == self)) throw "Incorrect edge source and/or target";
if (edge.target == other || edge.source == other) {
edgeList.push(edge);
}
});
return edgeList;
};
LNode.prototype.getNeighborsList = function () {
var neighbors = new Set();
var self = this;
self.edges.forEach(function (edge) {
if (edge.source == self) {
neighbors.add(edge.target);
} else {
if (edge.target != self) {
throw "Incorrect incidency!";
}
neighbors.add(edge.source);
}
});
return neighbors;
};
LNode.prototype.withChildren = function () {
var withNeighborsList = new Set();
var childNode;
var children;
withNeighborsList.add(this);
if (this.child != null) {
var nodes = this.child.getNodes();
for (var i = 0; i < nodes.length; i++) {
childNode = nodes[i];
children = childNode.withChildren();
children.forEach(function (node) {
withNeighborsList.add(node);
});
}
}
return withNeighborsList;
};
LNode.prototype.getNoOfChildren = function () {
var noOfChildren = 0;
var childNode;
if (this.child == null) {
noOfChildren = 1;
} else {
var nodes = this.child.getNodes();
for (var i = 0; i < nodes.length; i++) {
childNode = nodes[i];
noOfChildren += childNode.getNoOfChildren();
}
}
if (noOfChildren == 0) {
noOfChildren = 1;
}
return noOfChildren;
};
LNode.prototype.getEstimatedSize = function () {
if (this.estimatedSize == Integer.MIN_VALUE) {
throw "assert failed";
}
return this.estimatedSize;
};
LNode.prototype.calcEstimatedSize = function () {
if (this.child == null) {
return this.estimatedSize = (this.rect.width + this.rect.height) / 2;
} else {
this.estimatedSize = this.child.calcEstimatedSize();
this.rect.width = this.estimatedSize;
this.rect.height = this.estimatedSize;
return this.estimatedSize;
}
};
LNode.prototype.scatter = function () {
var randomCenterX;
var randomCenterY;
var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY;
var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY;
randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX;
var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY;
var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY;
randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY;
this.rect.x = randomCenterX;
this.rect.y = randomCenterY;
};
LNode.prototype.updateBounds = function () {
if (this.getChild() == null) {
throw "assert failed";
}
if (this.getChild().getNodes().length != 0) {
// wrap the children nodes by re-arranging the boundaries
var childGraph = this.getChild();
childGraph.updateBounds(true);
this.rect.x = childGraph.getLeft();
this.rect.y = childGraph.getTop();
this.setWidth(childGraph.getRight() - childGraph.getLeft());
this.setHeight(childGraph.getBottom() - childGraph.getTop());
// Update compound bounds considering its label properties
if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {
var width = childGraph.getRight() - childGraph.getLeft();
var height = childGraph.getBottom() - childGraph.getTop();
if (this.labelWidth > width) {
this.rect.x -= (this.labelWidth - width) / 2;
this.setWidth(this.labelWidth);
}
if (this.labelHeight > height) {
if (this.labelPos == "center") {
this.rect.y -= (this.labelHeight - height) / 2;
} else if (this.labelPos == "top") {
this.rect.y -= this.labelHeight - height;
}
this.setHeight(this.labelHeight);
}
}
}
};
LNode.prototype.getInclusionTreeDepth = function () {
if (this.inclusionTreeDepth == Integer.MAX_VALUE) {
throw "assert failed";
}
return this.inclusionTreeDepth;
};
LNode.prototype.transform = function (trans) {
var left = this.rect.x;
if (left > LayoutConstants.WORLD_BOUNDARY) {
left = LayoutConstants.WORLD_BOUNDARY;
} else if (left < -LayoutConstants.WORLD_BOUNDARY) {
left = -LayoutConstants.WORLD_BOUNDARY;
}
var top = this.rect.y;
if (top > LayoutConstants.WORLD_BOUNDARY) {
top = LayoutConstants.WORLD_BOUNDARY;
} else if (top < -LayoutConstants.WORLD_BOUNDARY) {
top = -LayoutConstants.WORLD_BOUNDARY;
}
var leftTop = new PointD(left, top);
var vLeftTop = trans.inverseTransformPoint(leftTop);
this.setLocation(vLeftTop.x, vLeftTop.y);
};
LNode.prototype.getLeft = function () {
return this.rect.x;
};
LNode.prototype.getRight = function () {
return this.rect.x + this.rect.width;
};
LNode.prototype.getTop = function () {
return this.rect.y;
};
LNode.prototype.getBottom = function () {
return this.rect.y + this.rect.height;
};
LNode.prototype.getParent = function () {
if (this.owner == null) {
return null;
}
return this.owner.getParent();
};
module.exports = LNode;
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
function PointD(x, y) {
if (x == null && y == null) {
this.x = 0;
this.y = 0;
} else {
this.x = x;
this.y = y;
}
}
PointD.prototype.getX = function () {
return this.x;
};
PointD.prototype.getY = function () {
return this.y;
};
PointD.prototype.setX = function (x) {
this.x = x;
};
PointD.prototype.setY = function (y) {
this.y = y;
};
PointD.prototype.getDifference = function (pt) {
return new DimensionD(this.x - pt.x, this.y - pt.y);
};
PointD.prototype.getCopy = function () {
return new PointD(this.x, this.y);
};
PointD.prototype.translate = function (dim) {
this.x += dim.width;
this.y += dim.height;
return this;
};
module.exports = PointD;
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
var LGraphObject = __webpack_require__(2);
var Integer = __webpack_require__(10);
var LayoutConstants = __webpack_require__(0);
var LGraphManager = __webpack_require__(6);
var LNode = __webpack_require__(3);
var LEdge = __webpack_require__(1);
var RectangleD = __webpack_require__(13);
var Point = __webpack_require__(12);
var LinkedList = __webpack_require__(11);
function LGraph(parent, obj2, vGraph) {
LGraphObject.call(this, vGraph);
this.estimatedSize = Integer.MIN_VALUE;
this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN;
this.edges = [];
this.nodes = [];
this.isConnected = false;
this.parent = parent;
if (obj2 != null && obj2 instanceof LGraphManager) {
this.graphManager = obj2;
} else if (obj2 != null && obj2 instanceof Layout) {
this.graphManager = obj2.graphManager;
}
}
LGraph.prototype = Object.create(LGraphObject.prototype);
for (var prop in LGraphObject) {
LGraph[prop] = LGraphObject[prop];
}
LGraph.prototype.getNodes = function () {
return this.nodes;
};
LGraph.prototype.getEdges = function () {
return this.edges;
};
LGraph.prototype.getGraphManager = function () {
return this.graphManager;
};
LGraph.prototype.getParent = function () {
return this.parent;
};
LGraph.prototype.getLeft = function () {
return this.left;
};
LGraph.prototype.getRight = function () {
return this.right;
};
LGraph.prototype.getTop = function () {
return this.top;
};
LGraph.prototype.getBottom = function () {
return this.bottom;
};
LGraph.prototype.isConnected = function () {
return this.isConnected;
};
LGraph.prototype.add = function (obj1, sourceNode, targetNode) {
if (sourceNode == null && targetNode == null) {
var newNode = obj1;
if (this.graphManager == null) {
throw "Graph has no graph mgr!";
}
if (this.getNodes().indexOf(newNode) > -1) {
throw "Node already in graph!";
}
newNode.owner = this;
this.getNodes().push(newNode);
return newNode;
} else {
var newEdge = obj1;
if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) {
throw "Source or target not in graph!";
}
if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) {
throw "Both owners must be this graph!";
}
if (sourceNode.owner != targetNode.owner) {
return null;
}
// set source and target
newEdge.source = sourceNode;
newEdge.target = targetNode;
// set as intra-graph edge
newEdge.isInterGraph = false;
// add to graph edge list
this.getEdges().push(newEdge);
// add to incidency lists
sourceNode.edges.push(newEdge);
if (targetNode != sourceNode) {
targetNode.edges.push(newEdge);
}
return newEdge;
}
};
LGraph.prototype.remove = function (obj) {
var node = obj;
if (obj instanceof LNode) {
if (node == null) {
throw "Node is null!";
}
if (!(node.owner != null && node.owner == this)) {
throw "Owner graph is invalid!";
}
if (this.graphManager == null) {
throw "Owner graph manager is invalid!";
}
// remove incident edges first (make a copy to do it safely)
var edgesToBeRemoved = node.edges.slice();
var edge;
var s = edgesToBeRemoved.length;
for (var i = 0; i < s; i++) {
edge = edgesToBeRemoved[i];
if (edge.isInterGraph) {
this.graphManager.remove(edge);
} else {
edge.source.owner.remove(edge);
}
}
// now the node itself
var index = this.nodes.indexOf(node);
if (index == -1) {
throw "Node not in owner node list!";
}
this.nodes.splice(index, 1);
} else if (obj instanceof LEdge) {
var edge = obj;
if (edge == null) {
throw "Edge is null!";
}
if (!(edge.source != null && edge.target != null)) {
throw "Source and/or target is null!";
}
if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) {
throw "Source and/or target owner is invalid!";
}
var sourceIndex = edge.source.edges.indexOf(edge);
var targetIndex = edge.target.edges.indexOf(edge);
if (!(sourceIndex > -1 && targetIndex > -1)) {
throw "Source and/or target doesn't know this edge!";
}
edge.source.edges.splice(sourceIndex, 1);
if (edge.target != edge.source) {
edge.target.edges.splice(targetIndex, 1);
}
var index = edge.source.owner.getEdges().indexOf(edge);
if (index == -1) {
throw "Not in owner's edge list!";
}
edge.source.owner.getEdges().splice(index, 1);
}
};
LGraph.prototype.updateLeftTop = function () {
var top = Integer.MAX_VALUE;
var left = Integer.MAX_VALUE;
var nodeTop;
var nodeLeft;
var margin;
var nodes = this.getNodes();
var s = nodes.length;
for (var i = 0; i < s; i++) {
var lNode = nodes[i];
nodeTop = lNode.getTop();
nodeLeft = lNode.getLeft();
if (top > nodeTop) {
top = nodeTop;
}
if (left > nodeLeft) {
left = nodeLeft;
}
}
// Do we have any nodes in this graph?
if (top == Integer.MAX_VALUE) {
return null;
}
if (nodes[0].getParent().paddingLeft != undefined) {
margin = nodes[0].getParent().paddingLeft;
} else {
margin = this.margin;
}
this.left = left - margin;
this.top = top - margin;
// Apply the margins and return the result
return new Point(this.left, this.top);
};
LGraph.prototype.updateBounds = function (recursive) {
// calculate bounds
var left = Integer.MAX_VALUE;
var right = -Integer.MAX_VALUE;
var top = Integer.MAX_VALUE;
var bottom = -Integer.MAX_VALUE;
var nodeLeft;
var nodeRight;
var nodeTop;
var nodeBottom;
var margin;
var nodes = this.nodes;
var s = nodes.length;
for (var i = 0; i < s; i++) {
var lNode = nodes[i];
if (recursive && lNode.child != null) {
lNode.updateBounds();
}
nodeLeft = lNode.getLeft();
nodeRight = lNode.getRight();
nodeTop = lNode.getTop();
nodeBottom = lNode.getBottom();
if (left > nodeLeft) {
left = nodeLeft;
}
if (right < nodeRight) {
right = nodeRight;
}
if (top > nodeTop) {
top = nodeTop;
}
if (bottom < nodeBottom) {
bottom = nodeBottom;
}
}
var boundingRect = new RectangleD(left, top, right - left, bottom - top);
if (left == Integer.MAX_VALUE) {
this.left = this.parent.getLeft();
this.right = this.parent.getRight();
this.top = this.parent.getTop();
this.bottom = this.parent.getBottom();
}
if (nodes[0].getParent().paddingLeft != undefined) {
margin = nodes[0].getParent().paddingLeft;
} else {
margin = this.margin;
}
this.left = boundingRect.x - margin;
this.right = boundingRect.x + boundingRect.width + margin;
this.top = boundingRect.y - margin;
this.bottom = boundingRect.y + boundingRect.height + margin;
};
LGraph.calculateBounds = function (nodes) {
var left = Integer.MAX_VALUE;
var right = -Integer.MAX_VALUE;
var top = Integer.MAX_VALUE;
var bottom = -Integer.MAX_VALUE;
var nodeLeft;
var nodeRight;
var nodeTop;
var nodeBottom;
var s = nodes.length;
for (var i = 0; i < s; i++) {
var lNode = nodes[i];
nodeLeft = lNode.getLeft();
nodeRight = lNode.getRight();
nodeTop = lNode.getTop();
nodeBottom = lNode.getBottom();
if (left > nodeLeft) {
left = nodeLeft;
}
if (right < nodeRight) {
right = nodeRight;
}
if (top > nodeTop) {
top = nodeTop;
}
if (bottom < nodeBottom) {
bottom = nodeBottom;
}
}
var boundingRect = new RectangleD(left, top, right - left, bottom - top);
return boundingRect;
};
LGraph.prototype.getInclusionTreeDepth = function () {
if (this == this.graphManager.getRoot()) {
return 1;
} else {
return this.parent.getInclusionTreeDepth();
}
};
LGraph.prototype.getEstimatedSize = function () {
if (this.estimatedSize == Integer.MIN_VALUE) {
throw "assert failed";
}
return this.estimatedSize;
};
LGraph.prototype.calcEstimatedSize = function () {
var size = 0;
var nodes = this.nodes;
var s = nodes.length;
for (var i = 0; i < s; i++) {
var lNode = nodes[i];
size += lNode.calcEstimatedSize();
}
if (size == 0) {
this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE;
} else {
this.estimatedSize = size / Math.sqrt(this.nodes.length);
}
return this.estimatedSize;
};
LGraph.prototype.updateConnected = function () {
var self = this;
if (this.nodes.length == 0) {
this.isConnected = true;
return;
}
var queue = new LinkedList();
var visited = new Set();
var currentNode = this.nodes[0];
var neighborEdges;
var currentNeighbor;
var childrenOfNode = currentNode.withChildren();
childrenOfNode.forEach(function (node) {
queue.push(node);
visited.add(node);
});
while (queue.length !== 0) {
currentNode = queue.shift();
// Traverse all neighbors of this node
neighborEdges = currentNode.getEdges();
var size = neighborEdges.length;
for (var i = 0; i < size; i++) {
var neighborEdge = neighborEdges[i];
currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this);
// Add unvisited neighbors to the list to visit
if (currentNeighbor != null && !visited.has(currentNeighbor)) {
var childrenOfNeighbor = currentNeighbor.withChildren();
childrenOfNeighbor.forEach(function (node) {
queue.push(node);
visited.add(node);
});
}
}
}
this.isConnected = false;
if (visited.size >= this.nodes.length) {
var noOfVisitedInThisGraph = 0;
visited.forEach(function (visitedNode) {
if (visitedNode.owner == self) {
noOfVisitedInThisGraph++;
}
});
if (noOfVisitedInThisGraph == this.nodes.length) {
this.isConnected = true;
}
}
};
module.exports = LGraph;
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
var LGraph;
var LEdge = __webpack_require__(1);
function LGraphManager(layout) {
LGraph = __webpack_require__(5); // It may be better to initilize this out of this function but it gives an error (Right-hand side of 'instanceof' is not callable) now.
this.layout = layout;
this.graphs = [];
this.edges = [];
}
LGraphManager.prototype.addRoot = function () {
var ngraph = this.layout.newGraph();
var nnode = this.layout.newNode(null);
var root = this.add(ngraph, nnode);
this.setRootGraph(root);
return this.rootGraph;
};
LGraphManager.prototype.add = function (newGraph, parentNode, newEdge, sourceNode, targetNode) {
//there are just 2 parameters are passed then it adds an LGraph else it adds an LEdge
if (newEdge == null && sourceNode == null && targetNode == null) {
if (newGraph == null) {
throw "Graph is null!";
}
if (parentNode == null) {
throw "Parent node is null!";
}
if (this.graphs.indexOf(newGraph) > -1) {
throw "Graph already in this graph mgr!";
}
this.graphs.push(newGraph);
if (newGraph.parent != null) {
throw "Already has a parent!";
}
if (parentNode.child != null) {
throw "Already has a child!";
}
newGraph.parent = parentNode;
parentNode.child = newGraph;
return newGraph;
} else {
//change the order of the parameters
targetNode = newEdge;
sourceNode = parentNode;
newEdge = newGraph;
var sourceGraph = sourceNode.getOwner();
var targetGraph = targetNode.getOwner();
if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) {
throw "Source not in this graph mgr!";
}
if (!(targetGraph != null && targetGraph.getGraphManager() == this)) {
throw "Target not in this graph mgr!";
}
if (sourceGraph == targetGraph) {
newEdge.isInterGraph = false;
return sourceGraph.add(newEdge, sourceNode, targetNode);
} else {
newEdge.isInterGraph = true;
// set source and target
newEdge.source = sourceNode;
newEdge.target = targetNode;
// add edge to inter-graph edge list
if (this.edges.indexOf(newEdge) > -1) {
throw "Edge already in inter-graph edge list!";
}
this.edges.push(newEdge);
// add edge to source and target incidency lists
if (!(newEdge.source != null && newEdge.target != null)) {
throw "Edge source and/or target is null!";
}
if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) {
throw "Edge already in source and/or target incidency list!";
}
newEdge.source.edges.push(newEdge);
newEdge.target.edges.push(newEdge);
return newEdge;
}
}
};
LGraphManager.prototype.remove = function (lObj) {
if (lObj instanceof LGraph) {
var graph = lObj;
if (graph.getGraphManager() != this) {
throw "Graph not in this graph mgr";
}
if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) {
throw "Invalid parent node!";
}
// first the edges (make a copy to do it safely)
var edgesToBeRemoved = [];
edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges());
var edge;
var s = edgesToBeRemoved.length;
for (var i = 0; i < s; i++) {
edge = edgesToBeRemoved[i];
graph.remove(edge);
}
// then the nodes (make a copy to do it safely)
var nodesToBeRemoved = [];
nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes());
var node;
s = nodesToBeRemoved.length;
for (var i = 0; i < s; i++) {
node = nodesToBeRemoved[i];
graph.remove(node);
}
// check if graph is the root
if (graph == this.rootGraph) {
this.setRootGraph(null);
}
// now remove the graph itself
var index = this.graphs.indexOf(graph);
this.graphs.splice(index, 1);
// also reset the parent of the graph
graph.parent = null;
} else if (lObj instanceof LEdge) {
edge = lObj;
if (edge == null) {
throw "Edge is null!";
}
if (!edge.isInterGraph) {
throw "Not an inter-graph edge!";
}
if (!(edge.source != null && edge.target != null)) {
throw "Source and/or target is null!";
}
// remove edge from source and target nodes' incidency lists
if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) {
throw "Source and/or target doesn't know this edge!";
}
var index = edge.source.edges.indexOf(edge);
edge.source.edges.splice(index, 1);
index = edge.target.edges.indexOf(edge);
edge.target.edges.splice(index, 1);
// remove edge from owner graph manager's inter-graph edge list
if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) {
throw "Edge owner graph or owner graph manager is null!";
}
if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) {
throw "Not in owner graph manager's edge list!";
}
var index = edge.source.owner.getGraphManager().edges.indexOf(edge);
edge.source.owner.getGraphManager().edges.splice(index, 1);
}
};
LGraphManager.prototype.updateBounds = function () {
this.rootGraph.updateBounds(true);
};
LGraphManager.prototype.getGraphs = function () {
return this.graphs;
};
LGraphManager.prototype.getAllNodes = function () {
if (this.allNodes == null) {
var nodeList = [];
var graphs = this.getGraphs();
var s = graphs.length;
for (var i = 0; i < s; i++) {
nodeList = nodeList.concat(graphs[i].getNodes());
}
this.allNodes = nodeList;
}
return this.allNodes;
};
LGraphManager.prototype.resetAllNodes = function () {
this.allNodes = null;
};
LGraphManager.prototype.resetAllEdges = function () {
this.allEdges = null;
};
LGraphManager.prototype.resetAllNodesToApplyGravitation = function () {
this.allNodesToApplyGravitation = null;
};
LGraphManager.prototype.getAllEdges = function () {
if (this.allEdges == null) {
var edgeList = [];
var graphs = this.getGraphs();
graphs.length;
for (var i = 0; i < graphs.length; i++) {
edgeList = edgeList.concat(graphs[i].getEdges());
}
edgeList = edgeList.concat(this.edges);
this.allEdges = edgeList;
}
return this.allEdges;
};
LGraphManager.prototype.getAllNodesToApplyGravitation = function () {
return this.allNodesToApplyGravitation;
};
LGraphManager.prototype.setAllNodesToApplyGravitation = function (nodeList) {
if (this.allNodesToApplyGravitation != null) {
throw "assert failed";
}
this.allNodesToApplyGravitation = nodeList;
};
LGraphManager.prototype.getRoot = function () {
return this.rootGraph;
};
LGraphManager.prototype.setRootGraph = function (graph) {
if (graph.getGraphManager() != this) {
throw "Root not in this graph mgr!";
}
this.rootGraph = graph;
// root graph must have a root node associated with it for convenience
if (graph.parent == null) {
graph.parent = this.layout.newNode("Root node");
}
};
LGraphManager.prototype.getLayout = function () {
return this.layout;
};
LGraphManager.prototype.isOneAncestorOfOther = function (firstNode, secondNode) {
if (!(firstNode != null && secondNode != null)) {
throw "assert failed";
}
if (firstNode == secondNode) {
return true;
}
// Is second node an ancestor of the first one?
var ownerGraph = firstNode.getOwner();
var parentNode;
do {
parentNode = ownerGraph.getParent();
if (parentNode == null) {
break;
}
if (parentNode == secondNode) {
return true;
}
ownerGraph = parentNode.getOwner();
if (ownerGraph == null) {
break;
}
} while (true);
// Is first node an ancestor of the second one?
ownerGraph = secondNode.getOwner();
do {
parentNode = ownerGraph.getParent();
if (parentNode == null) {
break;
}
if (parentNode == firstNode) {
return true;
}
ownerGraph = parentNode.getOwner();
if (ownerGraph == null) {
break;
}
} while (true);
return false;
};
LGraphManager.prototype.calcLowestCommonAncestors = function () {
var edge;
var sourceNode;
var targetNode;
var sourceAncestorGraph;
var targetAncestorGraph;
var edges = this.getAllEdges();
var s = edges.length;
for (var i = 0; i < s; i++) {
edge = edges[i];
sourceNode = edge.source;
targetNode = edge.target;
edge.lca = null;
edge.sourceInLca = sourceNode;
edge.targetInLca = targetNode;
if (sourceNode == targetNode) {
edge.lca = sourceNode.getOwner();
continue;
}
sourceAncestorGraph = sourceNode.getOwner();
while (edge.lca == null) {
edge.targetInLca = targetNode;
targetAncestorGraph = targetNode.getOwner();
while (edge.lca == null) {
if (targetAncestorGraph == sourceAncestorGraph) {
edge.lca = targetAncestorGraph;
break;
}
if (targetAncestorGraph == this.rootGraph) {
break;
}
if (edge.lca != null) {
throw "assert failed";
}
edge.targetInLca = targetAncestorGraph.getParent();
targetAncestorGraph = edge.targetInLca.getOwner();
}
if (sourceAncestorGraph == this.rootGraph) {
break;
}
if (edge.lca == null) {
edge.sourceInLca = sourceAncestorGraph.getParent();
sourceAncestorGraph = edge.sourceInLca.getOwner();
}
}
if (edge.lca == null) {
throw "assert failed";
}
}
};
LGraphManager.prototype.calcLowestCommonAncestor = function (firstNode, secondNode) {
if (firstNode == secondNode) {
return firstNode.getOwner();
}
var firstOwnerGraph = firstNode.getOwner();
do {
if (firstOwnerGraph == null) {
break;
}
var secondOwnerGraph = secondNode.getOwner();
do {
if (secondOwnerGraph == null) {
break;
}
if (secondOwnerGraph == firstOwnerGraph) {
return secondOwnerGraph;
}
secondOwnerGraph = secondOwnerGraph.getParent().getOwner();
} while (true);
firstOwnerGraph = firstOwnerGraph.getParent().getOwner();
} while (true);
return firstOwnerGraph;
};
LGraphManager.prototype.calcInclusionTreeDepths = function (graph, depth) {
if (graph == null && depth == null) {
graph = this.rootGraph;
depth = 1;
}
var node;
var nodes = graph.getNodes();
var s = nodes.length;
for (var i = 0; i < s; i++) {
node = nodes[i];
node.inclusionTreeDepth = depth;
if (node.child != null) {
this.calcInclusionTreeDepths(node.child, depth + 1);
}
}
};
LGraphManager.prototype.includesInvalidEdge = function () {
var edge;
var s = this.edges.length;
for (var i = 0; i < s; i++) {
edge = this.edges[i];
if (this.isOneAncestorOfOther(edge.source, edge.target)) {
return true;
}
}
return false;
};
module.exports = LGraphManager;
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
var LayoutConstants = __webpack_require__(0);
function FDLayoutConstants() {}
//FDLayoutConstants inherits static props in LayoutConstants
for (var prop in LayoutConstants) {
FDLayoutConstants[prop] = LayoutConstants[prop];
}
FDLayoutConstants.MAX_ITERATIONS = 2500;
FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50;
FDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45;
FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500.0;
FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4;
FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1.0;
FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8;
FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5;
FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true;
FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true;
FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3;
FDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33;
FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1000;
FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5000;
FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100.0;
FDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3;
FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0;
FDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100;
FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1;
FDLayoutConstants.MIN_EDGE_LENGTH = 1;
FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10;
module.exports = FDLayoutConstants;
/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
/**
* This class maintains a list of static geometry related utility methods.
*
*
* Copyright: i-Vis Research Group, Bilkent University, 2007 - present
*/
var Point = __webpack_require__(12);
function IGeometry() {}
/**
* This method calculates *half* the amount in x and y directions of the two
* input rectangles needed to separate them keeping their respective
* positioning, and returns the result in the input array. An input
* separation buffer added to the amount in both directions. We assume that
* the two rectangles do intersect.
*/
IGeometry.calcSeparationAmount = function (rectA, rectB, overlapAmount, separationBuffer) {
if (!rectA.intersects(rectB)) {
throw "assert failed";
}
var directions = new Array(2);
this.decideDirectionsForOverlappingNodes(rectA, rectB, directions);
overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x);
overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y);
// update the overlapping amounts for the following cases:
if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) {
/* Case x.1:
*
* rectA
* | |
* | _________ |
* | | | |
* |________|_______|______|
* | |
* | |
* rectB
*/
overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight());
} else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) {
/* Case x.2:
*
* rectB
* | |
* | _________ |
* | | | |
* |________|_______|______|
* | |
* | |
* rectA
*/
overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight());
}
if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) {
/* Case y.1:
* ________ rectA
* |
* |
* ______|____ rectB
* | |
* | |
* ______|____|
* |
* |
* |________
*
*/
overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom());
} else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) {
/* Case y.2:
* ________ rectB
* |
* |
* ______|____ rectA
* | |
* | |
* ______|____|
* |
* |
* |________
*
*/
overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom());
}
// find slope of the line passes two centers
var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX()));
// if centers are overlapped
if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) {
// assume the slope is 1 (45 degree)
slope = 1.0;
}
var moveByY = slope * overlapAmount[0];
var moveByX = overlapAmount[1] / slope;
if (overlapAmount[0] < moveByX) {
moveByX = overlapAmount[0];
} else {
moveByY = overlapAmount[1];
}
// return half the amount so that if each rectangle is moved by these
// amounts in opposite directions, overlap will be resolved
overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer);
overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer);
};
/**
* This method decides the separation direction of overlapping nodes
*
* if directions[0] = -1, then rectA goes left
* if directions[0] = 1, then rectA goes right
* if directions[1] = -1, then rectA goes up
* if directions[1] = 1, then rectA goes down
*/
IGeometry.decideDirectionsForOverlappingNodes = function (rectA, rectB, directions) {
if (rectA.getCenterX() < rectB.getCenterX()) {
directions[0] = -1;
} else {
directions[0] = 1;
}
if (rectA.getCenterY() < rectB.getCenterY()) {
directions[1] = -1;
} else {
directions[1] = 1;
}
};
/**
* This method calculates the intersection (clipping) points of the two
* input rectangles with line segment defined by the centers of these two
* rectangles. The clipping points are saved in the input double array and
* whether or not the two rectangles overlap is returned.
*/
IGeometry.getIntersection2 = function (rectA, rectB, result) {
//result[0-1] will contain clipPoint of rectA, result[2-3] will contain clipPoint of rectB
var p1x = rectA.getCenterX();
var p1y = rectA.getCenterY();
var p2x = rectB.getCenterX();
var p2y = rectB.getCenterY();
//if two rectangles intersect, then clipping points are centers
if (rectA.intersects(rectB)) {
result[0] = p1x;
result[1] = p1y;
result[2] = p2x;
result[3] = p2y;
return true;
}
//variables for rectA
var topLeftAx = rectA.getX();
var topLeftAy = rectA.getY();
var topRightAx = rectA.getRight();
var bottomLeftAx = rectA.getX();
var bottomLeftAy = rectA.getBottom();
var bottomRightAx = rectA.getRight();
var halfWidthA = rectA.getWidthHalf();
var halfHeightA = rectA.getHeightHalf();
//variables for rectB
var topLeftBx = rectB.getX();
var topLeftBy = rectB.getY();
var topRightBx = rectB.getRight();
var bottomLeftBx = rectB.getX();
var bottomLeftBy = rectB.getBottom();
var bottomRightBx = rectB.getRight();
var halfWidthB = rectB.getWidthHalf();
var halfHeightB = rectB.getHeightHalf();
//flag whether clipping points are found
var clipPointAFound = false;
var clipPointBFound = false;
// line is vertical
if (p1x === p2x) {
if (p1y > p2y) {
result[0] = p1x;
result[1] = topLeftAy;
result[2] = p2x;
result[3] = bottomLeftBy;
return false;
} else if (p1y < p2y) {
result[0] = p1x;
result[1] = bottomLeftAy;
result[2] = p2x;
result[3] = topLeftBy;
return false;
} else ;
}
// line is horizontal
else if (p1y === p2y) {
if (p1x > p2x) {
result[0] = topLeftAx;
result[1] = p1y;
result[2] = topRightBx;
result[3] = p2y;
return false;
} else if (p1x < p2x) {
result[0] = topRightAx;
result[1] = p1y;
result[2] = topLeftBx;
result[3] = p2y;
return false;
} else ;
} else {
//slopes of rectA's and rectB's diagonals
var slopeA = rectA.height / rectA.width;
var slopeB = rectB.height / rectB.width;
//slope of line between center of rectA and center of rectB
var slopePrime = (p2y - p1y) / (p2x - p1x);
var cardinalDirectionA = void 0;
var cardinalDirectionB = void 0;
var tempPointAx = void 0;
var tempPointAy = void 0;
var tempPointBx = void 0;
var tempPointBy = void 0;
//determine whether clipping point is the corner of nodeA
if (-slopeA === slopePrime) {
if (p1x > p2x) {
result[0] = bottomLeftAx;
result[1] = bottomLeftAy;
clipPointAFound = true;
} else {
result[0] = topRightAx;
result[1] = topLeftAy;
clipPointAFound = true;
}
} else if (slopeA === slopePrime) {
if (p1x > p2x) {
result[0] = topLeftAx;
result[1] = topLeftAy;
clipPointAFound = true;
} else {
result[0] = bottomRightAx;
result[1] = bottomLeftAy;
clipPointAFound = true;
}
}
//determine whether clipping point is the corner of nodeB
if (-slopeB === slopePrime) {
if (p2x > p1x) {
result[2] = bottomLeftBx;
result[3] = bottomLeftBy;
clipPointBFound = true;
} else {
result[2] = topRightBx;
result[3] = topLeftBy;
clipPointBFound = true;
}
} else if (slopeB === slopePrime) {
if (p2x > p1x) {
result[2] = topLeftBx;
result[3] = topLeftBy;
clipPointBFound = true;
} else {
result[2] = bottomRightBx;
result[3] = bottomLeftBy;
clipPointBFound = true;
}
}
//if both clipping points are corners
if (clipPointAFound && clipPointBFound) {
return false;
}
//determine Cardinal Direction of rectangles
if (p1x > p2x) {
if (p1y > p2y) {
cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4);
cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2);
} else {
cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3);
cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1);
}
} else {
if (p1y > p2y) {
cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1);
cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3);
} else {
cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2);
cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4);
}
}
//calculate clipping Point if it is not found before
if (!clipPointAFound) {
switch (cardinalDirectionA) {
case 1:
tempPointAy = topLeftAy;
tempPointAx = p1x + -halfHeightA / slopePrime;
result[0] = tempPointAx;
result[1] = tempPointAy;
break;
case 2:
tempPointAx = bottomRightAx;
tempPointAy = p1y + halfWidthA * slopePrime;
result[0] = tempPointAx;
result[1] = tempPointAy;
break;
case 3:
tempPointAy = bottomLeftAy;
tempPointAx = p1x + halfHeightA / slopePrime;
result[0] = tempPointAx;
result[1] = tempPointAy;
break;
case 4:
tempPointAx = bottomLeftAx;
tempPointAy = p1y + -halfWidthA * slopePrime;
result[0] = tempPointAx;
result[1] = tempPointAy;
break;
}
}
if (!clipPointBFound) {
switch (cardinalDirectionB) {
case 1:
tempPointBy = topLeftBy;
tempPointBx = p2x + -halfHeightB / slopePrime;
result[2] = tempPointBx;
result[3] = tempPointBy;
break;
case 2:
tempPointBx = bottomRightBx;
tempPointBy = p2y + halfWidthB * slopePrime;
result[2] = tempPointBx;
result[3] = tempPointBy;
break;
case 3:
tempPointBy = bottomLeftBy;
tempPointBx = p2x + halfHeightB / slopePrime;
result[2] = tempPointBx;
result[3] = tempPointBy;
break;
case 4:
tempPointBx = bottomLeftBx;
tempPointBy = p2y + -halfWidthB * slopePrime;
result[2] = tempPointBx;
result[3] = tempPointBy;
break;
}
}
}
return false;
};
/**
* This method returns in which cardinal direction does input point stays
* 1: North
* 2: East
* 3: South
* 4: West
*/
IGeometry.getCardinalDirection = function (slope, slopePrime, line) {
if (slope > slopePrime) {
return line;
} else {
return 1 + line % 4;
}
};
/**
* This method calculates the intersection of the two lines defined by
* point pairs (s1,s2) and (f1,f2).
*/
IGeometry.getIntersection = function (s1, s2, f1, f2) {
if (f2 == null) {
return this.getIntersection2(s1, s2, f1);
}
var x1 = s1.x;
var y1 = s1.y;
var x2 = s2.x;
var y2 = s2.y;
var x3 = f1.x;
var y3 = f1.y;
var x4 = f2.x;
var y4 = f2.y;
var x = void 0,
y = void 0; // intersection point
var a1 = void 0,
a2 = void 0,
b1 = void 0,
b2 = void 0,
c1 = void 0,
c2 = void 0; // coefficients of line eqns.
var denom = void 0;
a1 = y2 - y1;
b1 = x1 - x2;
c1 = x2 * y1 - x1 * y2; // { a1*x + b1*y + c1 = 0 is line 1 }
a2 = y4 - y3;
b2 = x3 - x4;
c2 = x4 * y3 - x3 * y4; // { a2*x + b2*y + c2 = 0 is line 2 }
denom = a1 * b2 - a2 * b1;
if (denom === 0) {
return null;
}
x = (b1 * c2 - b2 * c1) / denom;
y = (a2 * c1 - a1 * c2) / denom;
return new Point(x, y);
};
/**
* This method finds and returns the angle of the vector from the + x-axis
* in clockwise direction (compatible w/ Java coordinate system!).
*/
IGeometry.angleOfVector = function (Cx, Cy, Nx, Ny) {
var C_angle = void 0;
if (Cx !== Nx) {
C_angle = Math.atan((Ny - Cy) / (Nx - Cx));
if (Nx < Cx) {
C_angle += Math.PI;
} else if (Ny < Cy) {
C_angle += this.TWO_PI;
}
} else if (Ny < Cy) {
C_angle = this.ONE_AND_HALF_PI; // 270 degrees
} else {
C_angle = this.HALF_PI; // 90 degrees
}
return C_angle;
};
/**
* This method checks whether the given two line segments (one with point
* p1 and p2, the other with point p3 and p4) intersect at a point other
* than these points.
*/
IGeometry.doIntersect = function (p1, p2, p3, p4) {
var a = p1.x;
var b = p1.y;
var c = p2.x;
var d = p2.y;
var p = p3.x;
var q = p3.y;
var r = p4.x;
var s = p4.y;
var det = (c - a) * (s - q) - (r - p) * (d - b);
if (det === 0) {
return false;
} else {
var lambda = ((s - q) * (r - a) + (p - r) * (s - b)) / det;
var gamma = ((b - d) * (r - a) + (c - a) * (s - b)) / det;
return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1;
}
};
// -----------------------------------------------------------------------------
// Section: Class Constants
// -----------------------------------------------------------------------------
/**
* Some useful pre-calculated constants
*/
IGeometry.HALF_PI = 0.5 * Math.PI;
IGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI;
IGeometry.TWO_PI = 2.0 * Math.PI;
IGeometry.THREE_PI = 3.0 * Math.PI;
module.exports = IGeometry;
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
function IMath() {}
/**
* This method returns the sign of the input value.
*/
IMath.sign = function (value) {
if (value > 0) {
return 1;
} else if (value < 0) {
return -1;
} else {
return 0;
}
};
IMath.floor = function (value) {
return value < 0 ? Math.ceil(value) : Math.floor(value);
};
IMath.ceil = function (value) {
return value < 0 ? Math.floor(value) : Math.ceil(value);
};
module.exports = IMath;
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
function Integer() {}
Integer.MAX_VALUE = 2147483647;
Integer.MIN_VALUE = -2147483648;
module.exports = Integer;
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var nodeFrom = function nodeFrom(value) {
return { value: value, next: null, prev: null };
};
var add = function add(prev, node, next, list) {
if (prev !== null) {
prev.next = node;
} else {
list.head = node;
}
if (next !== null) {
next.prev = node;
} else {
list.tail = node;
}
node.prev = prev;
node.next = next;
list.length++;
return node;
};
var _remove = function _remove(node, list) {
var prev = node.prev,
next = node.next;
if (prev !== null) {
prev.next = next;
} else {
list.head = next;
}
if (next !== null) {
next.prev = prev;
} else {
list.tail = prev;
}
node.prev = node.next = null;
list.length--;
return node;
};
var LinkedList = function () {
function LinkedList(vals) {
var _this = this;
_classCallCheck(this, LinkedList);
this.length = 0;
this.head = null;
this.tail = null;
if (vals != null) {
vals.forEach(function (v) {
return _this.push(v);
});
}
}
_createClass(LinkedList, [{
key: "size",
value: function size() {
return this.length;
}
}, {
key: "insertBefore",
value: function insertBefore(val, otherNode) {
return add(otherNode.prev, nodeFrom(val), otherNode, this);
}
}, {
key: "insertAfter",
value: function insertAfter(val, otherNode) {
return add(otherNode, nodeFrom(val), otherNode.next, this);
}
}, {
key: "insertNodeBefore",
value: function insertNodeBefore(newNode, otherNode) {
return add(otherNode.prev, newNode, otherNode, this);
}
}, {
key: "insertNodeAfter",
value: function insertNodeAfter(newNode, otherNode) {
return add(otherNode, newNode, otherNode.next, this);
}
}, {
key: "push",
value: function push(val) {
return add(this.tail, nodeFrom(val), null, this);
}
}, {
key: "unshift",
value: function unshift(val) {
return add(null, nodeFrom(val), this.head, this);
}
}, {
key: "remove",
value: function remove(node) {
return _remove(node, this);
}
}, {
key: "pop",
value: function pop() {
return _remove(this.tail, this).value;
}
}, {
key: "popNode",
value: function popNode() {
return _remove(this.tail, this);
}
}, {
key: "shift",
value: function shift() {
return _remove(this.head, this).value;
}
}, {
key: "shiftNode",
value: function shiftNode() {
return _remove(this.head, this);
}
}, {
key: "get_object_at",
value: function get_object_at(index) {
if (index <= this.length()) {
var i = 1;
var current = this.head;
while (i < index) {
current = current.next;
i++;
}
return current.value;
}
}
}, {
key: "set_object_at",
value: function set_object_at(index, value) {
if (index <= this.length()) {
var i = 1;
var current = this.head;
while (i < index) {
current = current.next;
i++;
}
current.value = value;
}
}
}]);
return LinkedList;
}();
module.exports = LinkedList;
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
/*
*This class is the javascript implementation of the Point.java class in jdk
*/
function Point(x, y, p) {
this.x = null;
this.y = null;
if (x == null && y == null && p == null) {
this.x = 0;
this.y = 0;
} else if (typeof x == 'number' && typeof y == 'number' && p == null) {
this.x = x;
this.y = y;
} else if (x.constructor.name == 'Point' && y == null && p == null) {
p = x;
this.x = p.x;
this.y = p.y;
}
}
Point.prototype.getX = function () {
return this.x;
};
Point.prototype.getY = function () {
return this.y;
};
Point.prototype.getLocation = function () {
return new Point(this.x, this.y);
};
Point.prototype.setLocation = function (x, y, p) {
if (x.constructor.name == 'Point' && y == null && p == null) {
p = x;
this.setLocation(p.x, p.y);
} else if (typeof x == 'number' && typeof y == 'number' && p == null) {
//if both parameters are integer just move (x,y) location
if (parseInt(x) == x && parseInt(y) == y) {
this.move(x, y);
} else {
this.x = Math.floor(x + 0.5);
this.y = Math.floor(y + 0.5);
}
}
};
Point.prototype.move = function (x, y) {
this.x = x;
this.y = y;
};
Point.prototype.translate = function (dx, dy) {
this.x += dx;
this.y += dy;
};
Point.prototype.equals = function (obj) {
if (obj.constructor.name == "Point") {
var pt = obj;
return this.x == pt.x && this.y == pt.y;
}
return this == obj;
};
Point.prototype.toString = function () {
return new Point().constructor.name + "[x=" + this.x + ",y=" + this.y + "]";
};
module.exports = Point;
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
function RectangleD(x, y, width, height) {
this.x = 0;
this.y = 0;
this.width = 0;
this.height = 0;
if (x != null && y != null && width != null && height != null) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
}
RectangleD.prototype.getX = function () {
return this.x;
};
RectangleD.prototype.setX = function (x) {
this.x = x;
};
RectangleD.prototype.getY = function () {
return this.y;
};
RectangleD.prototype.setY = function (y) {
this.y = y;
};
RectangleD.prototype.getWidth = function () {
return this.width;
};
RectangleD.prototype.setWidth = function (width) {
this.width = width;
};
RectangleD.prototype.getHeight = function () {
return this.height;
};
RectangleD.prototype.setHeight = function (height) {
this.height = height;
};
RectangleD.prototype.getRight = function () {
return this.x + this.width;
};
RectangleD.prototype.getBottom = function () {
return this.y + this.height;
};
RectangleD.prototype.intersects = function (a) {
if (this.getRight() < a.x) {
return false;
}
if (this.getBottom() < a.y) {
return false;
}
if (a.getRight() < this.x) {
return false;
}
if (a.getBottom() < this.y) {
return false;
}
return true;
};
RectangleD.prototype.getCenterX = function () {
return this.x + this.width / 2;
};
RectangleD.prototype.getMinX = function () {
return this.getX();
};
RectangleD.prototype.getMaxX = function () {
return this.getX() + this.width;
};
RectangleD.prototype.getCenterY = function () {
return this.y + this.height / 2;
};
RectangleD.prototype.getMinY = function () {
return this.getY();
};
RectangleD.prototype.getMaxY = function () {
return this.getY() + this.height;
};
RectangleD.prototype.getWidthHalf = function () {
return this.width / 2;
};
RectangleD.prototype.getHeightHalf = function () {
return this.height / 2;
};
module.exports = RectangleD;
/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
function UniqueIDGeneretor() {}
UniqueIDGeneretor.lastID = 0;
UniqueIDGeneretor.createID = function (obj) {
if (UniqueIDGeneretor.isPrimitive(obj)) {
return obj;
}
if (obj.uniqueID != null) {
return obj.uniqueID;
}
obj.uniqueID = UniqueIDGeneretor.getString();
UniqueIDGeneretor.lastID++;
return obj.uniqueID;
};
UniqueIDGeneretor.getString = function (id) {
if (id == null) id = UniqueIDGeneretor.lastID;
return "Object#" + id + "";
};
UniqueIDGeneretor.isPrimitive = function (arg) {
var type = typeof arg === "undefined" ? "undefined" : _typeof(arg);
return arg == null || type != "object" && type != "function";
};
module.exports = UniqueIDGeneretor;
/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var LayoutConstants = __webpack_require__(0);
var LGraphManager = __webpack_require__(6);
var LNode = __webpack_require__(3);
var LEdge = __webpack_require__(1);
var LGraph = __webpack_require__(5);
var PointD = __webpack_require__(4);
var Transform = __webpack_require__(17);
var Emitter = __webpack_require__(27);
function Layout(isRemoteUse) {
Emitter.call(this);
//Layout Quality: 0:draft, 1:default, 2:proof
this.layoutQuality = LayoutConstants.QUALITY;
//Whether layout should create bendpoints as needed or not
this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;
//Whether layout should be incremental or not
this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;
//Whether we animate from before to after layout node positions
this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;
//Whether we animate the layout process or not
this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;
//Number iterations that should be done between two successive animations
this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;
/**
* Whether or not leaf nodes (non-compound nodes) are of uniform sizes. When
* they are, both spring and repulsion forces between two leaf nodes can be
* calculated without the expensive clipping point calculations, resulting
* in major speed-up.
*/
this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;
/**
* This is used for creation of bendpoints by using dummy nodes and edges.
* Maps an LEdge to its dummy bendpoint path.
*/
this.edgeToDummyNodes = new Map();
this.graphManager = new LGraphManager(this);
this.isLayoutFinished = false;
this.isSubLayout = false;
this.isRemoteUse = false;
if (isRemoteUse != null) {
this.isRemoteUse = isRemoteUse;
}
}
Layout.RANDOM_SEED = 1;
Layout.prototype = Object.create(Emitter.prototype);
Layout.prototype.getGraphManager = function () {
return this.graphManager;
};
Layout.prototype.getAllNodes = function () {
return this.graphManager.getAllNodes();
};
Layout.prototype.getAllEdges = function () {
return this.graphManager.getAllEdges();
};
Layout.prototype.getAllNodesToApplyGravitation = function () {
return this.graphManager.getAllNodesToApplyGravitation();
};
Layout.prototype.newGraphManager = function () {
var gm = new LGraphManager(this);
this.graphManager = gm;
return gm;
};
Layout.prototype.newGraph = function (vGraph) {
return new LGraph(null, this.graphManager, vGraph);
};
Layout.prototype.newNode = function (vNode) {
return new LNode(this.graphManager, vNode);
};
Layout.prototype.newEdge = function (vEdge) {
return new LEdge(null, null, vEdge);
};
Layout.prototype.checkLayoutSuccess = function () {
return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge();
};
Layout.prototype.runLayout = function () {
this.isLayoutFinished = false;
if (this.tilingPreLayout) {
this.tilingPreLayout();
}
this.initParameters();
var isLayoutSuccessfull;
if (this.checkLayoutSuccess()) {
isLayoutSuccessfull = false;
} else {
isLayoutSuccessfull = this.layout();
}
if (LayoutConstants.ANIMATE === 'during') {
// If this is a 'during' layout animation. Layout is not finished yet.
// We need to perform these in index.js when layout is really finished.
return false;
}
if (isLayoutSuccessfull) {
if (!this.isSubLayout) {
this.doPostLayout();
}
}
if (this.tilingPostLayout) {
this.tilingPostLayout();
}
this.isLayoutFinished = true;
return isLayoutSuccessfull;
};
/**
* This method performs the operations required after layout.
*/
Layout.prototype.doPostLayout = function () {
//assert !isSubLayout : "Should not be called on sub-layout!";
// Propagate geometric changes to v-level objects
if (!this.incremental) {
this.transform();
}
this.update();
};
/**
* This method updates the geometry of the target graph according to
* calculated layout.
*/
Layout.prototype.update2 = function () {
// update bend points
if (this.createBendsAsNeeded) {
this.createBendpointsFromDummyNodes();
// reset all edges, since the topology has changed
this.graphManager.resetAllEdges();
}
// perform edge, node and root updates if layout is not called
// remotely
if (!this.isRemoteUse) {
var allEdges = this.graphManager.getAllEdges();
for (var i = 0; i < allEdges.length; i++) {
// this.update(edge);
}
var nodes = this.graphManager.getRoot().getNodes();
for (var i = 0; i < nodes.length; i++) {
// this.update(node);
}
// update root graph
this.update(this.graphManager.getRoot());
}
};
Layout.prototype.update = function (obj) {
if (obj == null) {
this.update2();
} else if (obj instanceof LNode) {
var node = obj;
if (node.getChild() != null) {
// since node is compound, recursively update child nodes
var nodes = node.getChild().getNodes();
for (var i = 0; i < nodes.length; i++) {
update(nodes[i]);
}
}
// if the l-level node is associated with a v-level graph object,
// then it is assumed that the v-level node implements the
// interface Updatable.
if (node.vGraphObject != null) {
// cast to Updatable without any type check
var vNode = node.vGraphObject;
// call the update method of the interface
vNode.update(node);
}
} else if (obj instanceof LEdge) {
var edge = obj;
// if the l-level edge is associated with a v-level graph object,
// then it is assumed that the v-level edge implements the
// interface Updatable.
if (edge.vGraphObject != null) {
// cast to Updatable without any type check
var vEdge = edge.vGraphObject;
// call the update method of the interface
vEdge.update(edge);
}
} else if (obj instanceof LGraph) {
var graph = obj;
// if the l-level graph is associated with a v-level graph object,
// then it is assumed that the v-level object implements the
// interface Updatable.
if (graph.vGraphObject != null) {
// cast to Updatable without any type check
var vGraph = graph.vGraphObject;
// call the update method of the interface
vGraph.update(graph);
}
}
};
/**
* This method is used to set all layout parameters to default values
* determined at compile time.
*/
Layout.prototype.initParameters = function () {
if (!this.isSubLayout) {
this.layoutQuality = LayoutConstants.QUALITY;
this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;
this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;
this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;
this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;
this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;
this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;
}
if (this.animationDuringLayout) {
this.animationOnLayout = false;
}
};
Layout.prototype.transform = function (newLeftTop) {
if (newLeftTop == undefined) {
this.transform(new PointD(0, 0));
} else {
// create a transformation object (from Eclipse to layout). When an
// inverse transform is applied, we get upper-left coordinate of the
// drawing or the root graph at given input coordinate (some margins
// already included in calculation of left-top).
var trans = new Transform();
var leftTop = this.graphManager.getRoot().updateLeftTop();
if (leftTop != null) {
trans.setWorldOrgX(newLeftTop.x);
trans.setWorldOrgY(newLeftTop.y);
trans.setDeviceOrgX(leftTop.x);
trans.setDeviceOrgY(leftTop.y);
var nodes = this.getAllNodes();
var node;
for (var i = 0; i < nodes.length; i++) {
node = nodes[i];
node.transform(trans);
}
}
}
};
Layout.prototype.positionNodesRandomly = function (graph) {
if (graph == undefined) {
//assert !this.incremental;
this.positionNodesRandomly(this.getGraphManager().getRoot());
this.getGraphManager().getRoot().updateBounds(true);
} else {
var lNode;
var childGraph;
var nodes = graph.getNodes();
for (var i = 0; i < nodes.length; i++) {
lNode = nodes[i];
childGraph = lNode.getChild();
if (childGraph == null) {
lNode.scatter();
} else if (childGraph.getNodes().length == 0) {
lNode.scatter();
} else {
this.positionNodesRandomly(childGraph);
lNode.updateBounds();
}
}
}
};
/**
* This method returns a list of trees where each tree is represented as a
* list of l-nodes. The method returns a list of size 0 when:
* - The graph is not flat or
* - One of the component(s) of the graph is not a tree.
*/
Layout.prototype.getFlatForest = function () {
var flatForest = [];
var isForest = true;
// Quick reference for all nodes in the graph manager associated with
// this layout. The list should not be changed.
var allNodes = this.graphManager.getRoot().getNodes();
// First be sure that the graph is flat
var isFlat = true;
for (var i = 0; i < allNodes.length; i++) {
if (allNodes[i].getChild() != null) {
isFlat = false;
}
}
// Return empty forest if the graph is not flat.
if (!isFlat) {
return flatForest;
}
// Run BFS for each component of the graph.
var visited = new Set();
var toBeVisited = [];
var parents = new Map();
var unProcessedNodes = [];
unProcessedNodes = unProcessedNodes.concat(allNodes);
// Each iteration of this loop finds a component of the graph and
// decides whether it is a tree or not. If it is a tree, adds it to the
// forest and continued with the next component.
while (unProcessedNodes.length > 0 && isForest) {
toBeVisited.push(unProcessedNodes[0]);
// Start the BFS. Each iteration of this loop visits a node in a
// BFS manner.
while (toBeVisited.length > 0 && isForest) {
//pool operation
var currentNode = toBeVisited[0];
toBeVisited.splice(0, 1);
visited.add(currentNode);
// Traverse all neighbors of this node
var neighborEdges = currentNode.getEdges();
for (var i = 0; i < neighborEdges.length; i++) {
var currentNeighbor = neighborEdges[i].getOtherEnd(currentNode);
// If BFS is not growing from this neighbor.
if (parents.get(currentNode) != currentNeighbor) {
// We haven't previously visited this neighbor.
if (!visited.has(currentNeighbor)) {
toBeVisited.push(currentNeighbor);
parents.set(currentNeighbor, currentNode);
}
// Since we have previously visited this neighbor and
// this neighbor is not parent of currentNode, given
// graph contains a component that is not tree, hence
// it is not a forest.
else {
isForest = false;
break;
}
}
}
}
// The graph contains a component that is not a tree. Empty
// previously found trees. The method will end.
if (!isForest) {
flatForest = [];
}
// Save currently visited nodes as a tree in our forest. Reset
// visited and parents lists. Continue with the next component of
// the graph, if any.
else {
var temp = [].concat(_toConsumableArray(visited));
flatForest.push(temp);
//flatForest = flatForest.concat(temp);
//unProcessedNodes.removeAll(visited);
for (var i = 0; i < temp.length; i++) {
var value = temp[i];
var index = unProcessedNodes.indexOf(value);
if (index > -1) {
unProcessedNodes.splice(index, 1);
}
}
visited = new Set();
parents = new Map();
}
}
return flatForest;
};
/**
* This method creates dummy nodes (an l-level node with minimal dimensions)
* for the given edge (one per bendpoint). The existing l-level structure
* is updated accordingly.
*/
Layout.prototype.createDummyNodesForBendpoints = function (edge) {
var dummyNodes = [];
var prev = edge.source;
var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target);
for (var i = 0; i < edge.bendpoints.length; i++) {
// create new dummy node
var dummyNode = this.newNode(null);
dummyNode.setRect(new Point(0, 0), new Dimension(1, 1));
graph.add(dummyNode);
// create new dummy edge between prev and dummy node
var dummyEdge = this.newEdge(null);
this.graphManager.add(dummyEdge, prev, dummyNode);
dummyNodes.add(dummyNode);
prev = dummyNode;
}
var dummyEdge = this.newEdge(null);
this.graphManager.add(dummyEdge, prev, edge.target);
this.edgeToDummyNodes.set(edge, dummyNodes);
// remove real edge from graph manager if it is inter-graph
if (edge.isInterGraph()) {
this.graphManager.remove(edge);
}
// else, remove the edge from the current graph
else {
graph.remove(edge);
}
return dummyNodes;
};
/**
* This method creates bendpoints for edges from the dummy nodes
* at l-level.
*/
Layout.prototype.createBendpointsFromDummyNodes = function () {
var edges = [];
edges = edges.concat(this.graphManager.getAllEdges());
edges = [].concat(_toConsumableArray(this.edgeToDummyNodes.keys())).concat(edges);
for (var k = 0; k < edges.length; k++) {
var lEdge = edges[k];
if (lEdge.bendpoints.length > 0) {
var path = this.edgeToDummyNodes.get(lEdge);
for (var i = 0; i < path.length; i++) {
var dummyNode = path[i];
var p = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY());
// update bendpoint's location according to dummy node
var ebp = lEdge.bendpoints.get(i);
ebp.x = p.x;
ebp.y = p.y;
// remove the dummy node, dummy edges incident with this
// dummy node is also removed (within the remove method)
dummyNode.getOwner().remove(dummyNode);
}
// add the real edge to graph
this.graphManager.add(lEdge, lEdge.source, lEdge.target);
}
}
};
Layout.transform = function (sliderValue, defaultValue, minDiv, maxMul) {
if (minDiv != undefined && maxMul != undefined) {
var value = defaultValue;
if (sliderValue <= 50) {
var minValue = defaultValue / minDiv;
value -= (defaultValue - minValue) / 50 * (50 - sliderValue);
} else {
var maxValue = defaultValue * maxMul;
value += (maxValue - defaultValue) / 50 * (sliderValue - 50);
}
return value;
} else {
var a, b;
if (sliderValue <= 50) {
a = 9.0 * defaultValue / 500.0;
b = defaultValue / 10.0;
} else {
a = 9.0 * defaultValue / 50.0;
b = -8 * defaultValue;
}
return a * sliderValue + b;
}
};
/**
* This method finds and returns the center of the given nodes, assuming
* that the given nodes form a tree in themselves.
*/
Layout.findCenterOfTree = function (nodes) {
var list = [];
list = list.concat(nodes);
var removedNodes = [];
var remainingDegrees = new Map();
var foundCenter = false;
var centerNode = null;
if (list.length == 1 || list.length == 2) {
foundCenter = true;
centerNode = list[0];
}
for (var i = 0; i < list.length; i++) {
var node = list[i];
var degree = node.getNeighborsList().size;
remainingDegrees.set(node, node.getNeighborsList().size);
if (degree == 1) {
removedNodes.push(node);
}
}
var tempList = [];
tempList = tempList.concat(removedNodes);
while (!foundCenter) {
var tempList2 = [];
tempList2 = tempList2.concat(tempList);
tempList = [];
for (var i = 0; i < list.length; i++) {
var node = list[i];
var index = list.indexOf(node);
if (index >= 0) {
list.splice(index, 1);
}
var neighbours = node.getNeighborsList();
neighbours.forEach(function (neighbour) {
if (removedNodes.indexOf(neighbour) < 0) {
var otherDegree = remainingDegrees.get(neighbour);
var newDegree = otherDegree - 1;
if (newDegree == 1) {
tempList.push(neighbour);
}
remainingDegrees.set(neighbour, newDegree);
}
});
}
removedNodes = removedNodes.concat(tempList);
if (list.length == 1 || list.length == 2) {
foundCenter = true;
centerNode = list[0];
}
}
return centerNode;
};
/**
* During the coarsening process, this layout may be referenced by two graph managers
* this setter function grants access to change the currently being used graph manager
*/
Layout.prototype.setGraphManager = function (gm) {
this.graphManager = gm;
};
module.exports = Layout;
/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {
function RandomSeed() {}
// adapted from: https://stackoverflow.com/a/19303725
RandomSeed.seed = 1;
RandomSeed.x = 0;
RandomSeed.nextDouble = function () {
RandomSeed.x = Math.sin(RandomSeed.seed++) * 10000;
return RandomSeed.x - Math.floor(RandomSeed.x);
};
module.exports = RandomSeed;
/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {
var PointD = __webpack_require__(4);
function Transform(x, y) {
this.lworldOrgX = 0.0;
this.lworldOrgY = 0.0;
this.ldeviceOrgX = 0.0;
this.ldeviceOrgY = 0.0;
this.lworldExtX = 1.0;
this.lworldExtY = 1.0;
this.ldeviceExtX = 1.0;
this.ldeviceExtY = 1.0;
}
Transform.prototype.getWorldOrgX = function () {
return this.lworldOrgX;
};
Transform.prototype.setWorldOrgX = function (wox) {
this.lworldOrgX = wox;
};
Transform.prototype.getWorldOrgY = function () {
return this.lworldOrgY;
};
Transform.prototype.setWorldOrgY = function (woy) {
this.lworldOrgY = woy;
};
Transform.prototype.getWorldExtX = function () {
return this.lworldExtX;
};
Transform.prototype.setWorldExtX = function (wex) {
this.lworldExtX = wex;
};
Transform.prototype.getWorldExtY = function () {
return this.lworldExtY;
};
Transform.prototype.setWorldExtY = function (wey) {
this.lworldExtY = wey;
};
/* Device related */
Transform.prototype.getDeviceOrgX = function () {
return this.ldeviceOrgX;
};
Transform.prototype.setDeviceOrgX = function (dox) {
this.ldeviceOrgX = dox;
};
Transform.prototype.getDeviceOrgY = function () {
return this.ldeviceOrgY;
};
Transform.prototype.setDeviceOrgY = function (doy) {
this.ldeviceOrgY = doy;
};
Transform.prototype.getDeviceExtX = function () {
return this.ldeviceExtX;
};
Transform.prototype.setDeviceExtX = function (dex) {
this.ldeviceExtX = dex;
};
Transform.prototype.getDeviceExtY = function () {
return this.ldeviceExtY;
};
Transform.prototype.setDeviceExtY = function (dey) {
this.ldeviceExtY = dey;
};
Transform.prototype.transformX = function (x) {
var xDevice = 0.0;
var worldExtX = this.lworldExtX;
if (worldExtX != 0.0) {
xDevice = this.ldeviceOrgX + (x - this.lworldOrgX) * this.ldeviceExtX / worldExtX;
}
return xDevice;
};
Transform.prototype.transformY = function (y) {
var yDevice = 0.0;
var worldExtY = this.lworldExtY;
if (worldExtY != 0.0) {
yDevice = this.ldeviceOrgY + (y - this.lworldOrgY) * this.ldeviceExtY / worldExtY;
}
return yDevice;
};
Transform.prototype.inverseTransformX = function (x) {
var xWorld = 0.0;
var deviceExtX = this.ldeviceExtX;
if (deviceExtX != 0.0) {
xWorld = this.lworldOrgX + (x - this.ldeviceOrgX) * this.lworldExtX / deviceExtX;
}
return xWorld;
};
Transform.prototype.inverseTransformY = function (y) {
var yWorld = 0.0;
var deviceExtY = this.ldeviceExtY;
if (deviceExtY != 0.0) {
yWorld = this.lworldOrgY + (y - this.ldeviceOrgY) * this.lworldExtY / deviceExtY;
}
return yWorld;
};
Transform.prototype.inverseTransformPoint = function (inPoint) {
var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y));
return outPoint;
};
module.exports = Transform;
/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var Layout = __webpack_require__(15);
var FDLayoutConstants = __webpack_require__(7);
var LayoutConstants = __webpack_require__(0);
var IGeometry = __webpack_require__(8);
var IMath = __webpack_require__(9);
function FDLayout() {
Layout.call(this);
this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;
this.idealEdgeLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;
this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;
this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;
this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;
this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;
this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;
this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;
this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100;
this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;
this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;
this.totalDisplacement = 0.0;
this.oldTotalDisplacement = 0.0;
this.maxIterations = FDLayoutConstants.MAX_ITERATIONS;
}
FDLayout.prototype = Object.create(Layout.prototype);
for (var prop in Layout) {
FDLayout[prop] = Layout[prop];
}
FDLayout.prototype.initParameters = function () {
Layout.prototype.initParameters.call(this, arguments);
this.totalIterations = 0;
this.notAnimatedIterations = 0;
this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION;
this.grid = [];
};
FDLayout.prototype.calcIdealEdgeLengths = function () {
var edge;
var lcaDepth;
var source;
var target;
var sizeOfSourceInLca;
var sizeOfTargetInLca;
var allEdges = this.getGraphManager().getAllEdges();
for (var i = 0; i < allEdges.length; i++) {
edge = allEdges[i];
edge.idealLength = this.idealEdgeLength;
if (edge.isInterGraph) {
source = edge.getSource();
target = edge.getTarget();
sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize();
sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize();
if (this.useSmartIdealEdgeLengthCalculation) {
edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE;
}
lcaDepth = edge.getLca().getInclusionTreeDepth();
edge.idealLength += FDLayoutConstants.DEFAULT_EDGE_LENGTH * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth);
}
}
};
FDLayout.prototype.initSpringEmbedder = function () {
var s = this.getAllNodes().length;
if (this.incremental) {
if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {
this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));
}
this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL;
} else {
if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {
this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1.0 - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));
} else {
this.coolingFactor = 1.0;
}
this.initialCoolingFactor = this.coolingFactor;
this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT;
}
this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations);
this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length;
this.repulsionRange = this.calcRepulsionRange();
};
FDLayout.prototype.calcSpringForces = function () {
var lEdges = this.getAllEdges();
var edge;
for (var i = 0; i < lEdges.length; i++) {
edge = lEdges[i];
this.calcSpringForce(edge, edge.idealLength);
}
};
FDLayout.prototype.calcRepulsionForces = function () {
var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var i, j;
var nodeA, nodeB;
var lNodes = this.getAllNodes();
var processedNodeSet;
if (this.useFRGridVariant) {
if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) {
this.updateGrid();
}
processedNodeSet = new Set();
// calculate repulsion forces between each nodes and its surrounding
for (i = 0; i < lNodes.length; i++) {
nodeA = lNodes[i];
this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate);
processedNodeSet.add(nodeA);
}
} else {
for (i = 0; i < lNodes.length; i++) {
nodeA = lNodes[i];
for (j = i + 1; j < lNodes.length; j++) {
nodeB = lNodes[j];
// If both nodes are not members of the same graph, skip.
if (nodeA.getOwner() != nodeB.getOwner()) {
continue;
}
this.calcRepulsionForce(nodeA, nodeB);
}
}
}
};
FDLayout.prototype.calcGravitationalForces = function () {
var node;
var lNodes = this.getAllNodesToApplyGravitation();
for (var i = 0; i < lNodes.length; i++) {
node = lNodes[i];
this.calcGravitationalForce(node);
}
};
FDLayout.prototype.moveNodes = function () {
var lNodes = this.getAllNodes();
var node;
for (var i = 0; i < lNodes.length; i++) {
node = lNodes[i];
node.move();
}
};
FDLayout.prototype.calcSpringForce = function (edge, idealLength) {
var sourceNode = edge.getSource();
var targetNode = edge.getTarget();
var length;
var springForce;
var springForceX;
var springForceY;
// Update edge length
if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) {
edge.updateLengthSimple();
} else {
edge.updateLength();
if (edge.isOverlapingSourceAndTarget) {
return;
}
}
length = edge.getLength();
if (length == 0) return;
// Calculate spring forces
springForce = this.springConstant * (length - idealLength);
// Project force onto x and y axes
springForceX = springForce * (edge.lengthX / length);
springForceY = springForce * (edge.lengthY / length);
// Apply forces on the end nodes
sourceNode.springForceX += springForceX;
sourceNode.springForceY += springForceY;
targetNode.springForceX -= springForceX;
targetNode.springForceY -= springForceY;
};
FDLayout.prototype.calcRepulsionForce = function (nodeA, nodeB) {
var rectA = nodeA.getRect();
var rectB = nodeB.getRect();
var overlapAmount = new Array(2);
var clipPoints = new Array(4);
var distanceX;
var distanceY;
var distanceSquared;
var distance;
var repulsionForce;
var repulsionForceX;
var repulsionForceY;
if (rectA.intersects(rectB)) // two nodes overlap
{
// calculate separation amount in x and y directions
IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2.0);
repulsionForceX = 2 * overlapAmount[0];
repulsionForceY = 2 * overlapAmount[1];
var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren);
// Apply forces on the two nodes
nodeA.repulsionForceX -= childrenConstant * repulsionForceX;
nodeA.repulsionForceY -= childrenConstant * repulsionForceY;
nodeB.repulsionForceX += childrenConstant * repulsionForceX;
nodeB.repulsionForceY += childrenConstant * repulsionForceY;
} else // no overlap
{
// calculate distance
if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) // simply base repulsion on distance of node centers
{
distanceX = rectB.getCenterX() - rectA.getCenterX();
distanceY = rectB.getCenterY() - rectA.getCenterY();
} else // use clipping points
{
IGeometry.getIntersection(rectA, rectB, clipPoints);
distanceX = clipPoints[2] - clipPoints[0];
distanceY = clipPoints[3] - clipPoints[1];
}
// No repulsion range. FR grid variant should take care of this.
if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) {
distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST;
}
if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) {
distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST;
}
distanceSquared = distanceX * distanceX + distanceY * distanceY;
distance = Math.sqrt(distanceSquared);
repulsionForce = this.repulsionConstant * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared;
// Project force onto x and y axes
repulsionForceX = repulsionForce * distanceX / distance;
repulsionForceY = repulsionForce * distanceY / distance;
// Apply forces on the two nodes
nodeA.repulsionForceX -= repulsionForceX;
nodeA.repulsionForceY -= repulsionForceY;
nodeB.repulsionForceX += repulsionForceX;
nodeB.repulsionForceY += repulsionForceY;
}
};
FDLayout.prototype.calcGravitationalForce = function (node) {
var ownerGraph;
var ownerCenterX;
var ownerCenterY;
var distanceX;
var distanceY;
var absDistanceX;
var absDistanceY;
var estimatedSize;
ownerGraph = node.getOwner();
ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2;
ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2;
distanceX = node.getCenterX() - ownerCenterX;
distanceY = node.getCenterY() - ownerCenterY;
absDistanceX = Math.abs(distanceX) + node.getWidth() / 2;
absDistanceY = Math.abs(distanceY) + node.getHeight() / 2;
if (node.getOwner() == this.graphManager.getRoot()) // in the root graph
{
estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor;
if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {
node.gravitationForceX = -this.gravityConstant * distanceX;
node.gravitationForceY = -this.gravityConstant * distanceY;
}
} else // inside a compound
{
estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor;
if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {
node.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant;
node.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant;
}
}
};
FDLayout.prototype.isConverged = function () {
var converged;
var oscilating = false;
if (this.totalIterations > this.maxIterations / 3) {
oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2;
}
converged = this.totalDisplacement < this.totalDisplacementThreshold;
this.oldTotalDisplacement = this.totalDisplacement;
return converged || oscilating;
};
FDLayout.prototype.animate = function () {
if (this.animationDuringLayout && !this.isSubLayout) {
if (this.notAnimatedIterations == this.animationPeriod) {
this.update();
this.notAnimatedIterations = 0;
} else {
this.notAnimatedIterations++;
}
}
};
//This method calculates the number of children (weight) for all nodes
FDLayout.prototype.calcNoOfChildrenForAllNodes = function () {
var node;
var allNodes = this.graphManager.getAllNodes();
for (var i = 0; i < allNodes.length; i++) {
node = allNodes[i];
node.noOfChildren = node.getNoOfChildren();
}
};
// -----------------------------------------------------------------------------
// Section: FR-Grid Variant Repulsion Force Calculation
// -----------------------------------------------------------------------------
FDLayout.prototype.calcGrid = function (graph) {
var sizeX = 0;
var sizeY = 0;
sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange));
sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange));
var grid = new Array(sizeX);
for (var i = 0; i < sizeX; i++) {
grid[i] = new Array(sizeY);
}
for (var i = 0; i < sizeX; i++) {
for (var j = 0; j < sizeY; j++) {
grid[i][j] = new Array();
}
}
return grid;
};
FDLayout.prototype.addNodeToGrid = function (v, left, top) {
var startX = 0;
var finishX = 0;
var startY = 0;
var finishY = 0;
startX = parseInt(Math.floor((v.getRect().x - left) / this.repulsionRange));
finishX = parseInt(Math.floor((v.getRect().width + v.getRect().x - left) / this.repulsionRange));
startY = parseInt(Math.floor((v.getRect().y - top) / this.repulsionRange));
finishY = parseInt(Math.floor((v.getRect().height + v.getRect().y - top) / this.repulsionRange));
for (var i = startX; i <= finishX; i++) {
for (var j = startY; j <= finishY; j++) {
this.grid[i][j].push(v);
v.setGridCoordinates(startX, finishX, startY, finishY);
}
}
};
FDLayout.prototype.updateGrid = function () {
var i;
var nodeA;
var lNodes = this.getAllNodes();
this.grid = this.calcGrid(this.graphManager.getRoot());
// put all nodes to proper grid cells
for (i = 0; i < lNodes.length; i++) {
nodeA = lNodes[i];
this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop());
}
};
FDLayout.prototype.calculateRepulsionForceOfANode = function (nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) {
if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) {
var surrounding = new Set();
nodeA.surrounding = new Array();
var nodeB;
var grid = this.grid;
for (var i = nodeA.startX - 1; i < nodeA.finishX + 2; i++) {
for (var j = nodeA.startY - 1; j < nodeA.finishY + 2; j++) {
if (!(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length)) {
for (var k = 0; k < grid[i][j].length; k++) {
nodeB = grid[i][j][k];
// If both nodes are not members of the same graph,
// or both nodes are the same, skip.
if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) {
continue;
}
// check if the repulsion force between
// nodeA and nodeB has already been calculated
if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) {
var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2);
var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2);
// if the distance between nodeA and nodeB
// is less then calculation range
if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) {
//then add nodeB to surrounding of nodeA
surrounding.add(nodeB);
}
}
}
}
}
}
nodeA.surrounding = [].concat(_toConsumableArray(surrounding));
}
for (i = 0; i < nodeA.surrounding.length; i++) {
this.calcRepulsionForce(nodeA, nodeA.surrounding[i]);
}
};
FDLayout.prototype.calcRepulsionRange = function () {
return 0.0;
};
module.exports = FDLayout;
/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {
var LEdge = __webpack_require__(1);
var FDLayoutConstants = __webpack_require__(7);
function FDLayoutEdge(source, target, vEdge) {
LEdge.call(this, source, target, vEdge);
this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;
}
FDLayoutEdge.prototype = Object.create(LEdge.prototype);
for (var prop in LEdge) {
FDLayoutEdge[prop] = LEdge[prop];
}
module.exports = FDLayoutEdge;
/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {
var LNode = __webpack_require__(3);
function FDLayoutNode(gm, loc, size, vNode) {
// alternative constructor is handled inside LNode
LNode.call(this, gm, loc, size, vNode);
//Spring, repulsion and gravitational forces acting on this node
this.springForceX = 0;
this.springForceY = 0;
this.repulsionForceX = 0;
this.repulsionForceY = 0;
this.gravitationForceX = 0;
this.gravitationForceY = 0;
//Amount by which this node is to be moved in this iteration
this.displacementX = 0;
this.displacementY = 0;
//Start and finish grid coordinates that this node is fallen into
this.startX = 0;
this.finishX = 0;
this.startY = 0;
this.finishY = 0;
//Geometric neighbors of this node
this.surrounding = [];
}
FDLayoutNode.prototype = Object.create(LNode.prototype);
for (var prop in LNode) {
FDLayoutNode[prop] = LNode[prop];
}
FDLayoutNode.prototype.setGridCoordinates = function (_startX, _finishX, _startY, _finishY) {
this.startX = _startX;
this.finishX = _finishX;
this.startY = _startY;
this.finishY = _finishY;
};
module.exports = FDLayoutNode;
/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {
function DimensionD(width, height) {
this.width = 0;
this.height = 0;
if (width !== null && height !== null) {
this.height = height;
this.width = width;
}
}
DimensionD.prototype.getWidth = function () {
return this.width;
};
DimensionD.prototype.setWidth = function (width) {
this.width = width;
};
DimensionD.prototype.getHeight = function () {
return this.height;
};
DimensionD.prototype.setHeight = function (height) {
this.height = height;
};
module.exports = DimensionD;
/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {
var UniqueIDGeneretor = __webpack_require__(14);
function HashMap() {
this.map = {};
this.keys = [];
}
HashMap.prototype.put = function (key, value) {
var theId = UniqueIDGeneretor.createID(key);
if (!this.contains(theId)) {
this.map[theId] = value;
this.keys.push(key);
}
};
HashMap.prototype.contains = function (key) {
UniqueIDGeneretor.createID(key);
return this.map[key] != null;
};
HashMap.prototype.get = function (key) {
var theId = UniqueIDGeneretor.createID(key);
return this.map[theId];
};
HashMap.prototype.keySet = function () {
return this.keys;
};
module.exports = HashMap;
/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {
var UniqueIDGeneretor = __webpack_require__(14);
function HashSet() {
this.set = {};
}
HashSet.prototype.add = function (obj) {
var theId = UniqueIDGeneretor.createID(obj);
if (!this.contains(theId)) this.set[theId] = obj;
};
HashSet.prototype.remove = function (obj) {
delete this.set[UniqueIDGeneretor.createID(obj)];
};
HashSet.prototype.clear = function () {
this.set = {};
};
HashSet.prototype.contains = function (obj) {
return this.set[UniqueIDGeneretor.createID(obj)] == obj;
};
HashSet.prototype.isEmpty = function () {
return this.size() === 0;
};
HashSet.prototype.size = function () {
return Object.keys(this.set).length;
};
//concats this.set to the given list
HashSet.prototype.addAllTo = function (list) {
var keys = Object.keys(this.set);
var length = keys.length;
for (var i = 0; i < length; i++) {
list.push(this.set[keys[i]]);
}
};
HashSet.prototype.size = function () {
return Object.keys(this.set).length;
};
HashSet.prototype.addAll = function (list) {
var s = list.length;
for (var i = 0; i < s; i++) {
var v = list[i];
this.add(v);
}
};
module.exports = HashSet;
/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/**
* A classic Quicksort algorithm with Hoare's partition
* - Works also on LinkedList objects
*
* Copyright: i-Vis Research Group, Bilkent University, 2007 - present
*/
var LinkedList = __webpack_require__(11);
var Quicksort = function () {
function Quicksort(A, compareFunction) {
_classCallCheck(this, Quicksort);
if (compareFunction !== null || compareFunction !== undefined) this.compareFunction = this._defaultCompareFunction;
var length = void 0;
if (A instanceof LinkedList) length = A.size();else length = A.length;
this._quicksort(A, 0, length - 1);
}
_createClass(Quicksort, [{
key: '_quicksort',
value: function _quicksort(A, p, r) {
if (p < r) {
var q = this._partition(A, p, r);
this._quicksort(A, p, q);
this._quicksort(A, q + 1, r);
}
}
}, {
key: '_partition',
value: function _partition(A, p, r) {
var x = this._get(A, p);
var i = p;
var j = r;
while (true) {
while (this.compareFunction(x, this._get(A, j))) {
j--;
}while (this.compareFunction(this._get(A, i), x)) {
i++;
}if (i < j) {
this._swap(A, i, j);
i++;
j--;
} else return j;
}
}
}, {
key: '_get',
value: function _get(object, index) {
if (object instanceof LinkedList) return object.get_object_at(index);else return object[index];
}
}, {
key: '_set',
value: function _set(object, index, value) {
if (object instanceof LinkedList) object.set_object_at(index, value);else object[index] = value;
}
}, {
key: '_swap',
value: function _swap(A, i, j) {
var temp = this._get(A, i);
this._set(A, i, this._get(A, j));
this._set(A, j, temp);
}
}, {
key: '_defaultCompareFunction',
value: function _defaultCompareFunction(a, b) {
return b > a;
}
}]);
return Quicksort;
}();
module.exports = Quicksort;
/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/**
* Needleman-Wunsch algorithm is an procedure to compute the optimal global alignment of two string
* sequences by S.B.Needleman and C.D.Wunsch (1970).
*
* Aside from the inputs, you can assign the scores for,
* - Match: The two characters at the current index are same.
* - Mismatch: The two characters at the current index are different.
* - Insertion/Deletion(gaps): The best alignment involves one letter aligning to a gap in the other string.
*/
var NeedlemanWunsch = function () {
function NeedlemanWunsch(sequence1, sequence2) {
var match_score = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
var mismatch_penalty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1;
var gap_penalty = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;
_classCallCheck(this, NeedlemanWunsch);
this.sequence1 = sequence1;
this.sequence2 = sequence2;
this.match_score = match_score;
this.mismatch_penalty = mismatch_penalty;
this.gap_penalty = gap_penalty;
// Just the remove redundancy
this.iMax = sequence1.length + 1;
this.jMax = sequence2.length + 1;
// Grid matrix of scores
this.grid = new Array(this.iMax);
for (var i = 0; i < this.iMax; i++) {
this.grid[i] = new Array(this.jMax);
for (var j = 0; j < this.jMax; j++) {
this.grid[i][j] = 0;
}
}
// Traceback matrix (2D array, each cell is an array of boolean values for [`Diag`, `Up`, `Left`] positions)
this.tracebackGrid = new Array(this.iMax);
for (var _i = 0; _i < this.iMax; _i++) {
this.tracebackGrid[_i] = new Array(this.jMax);
for (var _j = 0; _j < this.jMax; _j++) {
this.tracebackGrid[_i][_j] = [null, null, null];
}
}
// The aligned sequences (return multiple possibilities)
this.alignments = [];
// Final alignment score
this.score = -1;
// Calculate scores and tracebacks
this.computeGrids();
}
_createClass(NeedlemanWunsch, [{
key: "getScore",
value: function getScore() {
return this.score;
}
}, {
key: "getAlignments",
value: function getAlignments() {
return this.alignments;
}
// Main dynamic programming procedure
}, {
key: "computeGrids",
value: function computeGrids() {
// Fill in the first row
for (var j = 1; j < this.jMax; j++) {
this.grid[0][j] = this.grid[0][j - 1] + this.gap_penalty;
this.tracebackGrid[0][j] = [false, false, true];
}
// Fill in the first column
for (var i = 1; i < this.iMax; i++) {
this.grid[i][0] = this.grid[i - 1][0] + this.gap_penalty;
this.tracebackGrid[i][0] = [false, true, false];
}
// Fill the rest of the grid
for (var _i2 = 1; _i2 < this.iMax; _i2++) {
for (var _j2 = 1; _j2 < this.jMax; _j2++) {
// Find the max score(s) among [`Diag`, `Up`, `Left`]
var diag = void 0;
if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score;else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty;
var up = this.grid[_i2 - 1][_j2] + this.gap_penalty;
var left = this.grid[_i2][_j2 - 1] + this.gap_penalty;
// If there exists multiple max values, capture them for multiple paths
var maxOf = [diag, up, left];
var indices = this.arrayAllMaxIndexes(maxOf);
// Update Grids
this.grid[_i2][_j2] = maxOf[indices[0]];
this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)];
}
}
// Update alignment score
this.score = this.grid[this.iMax - 1][this.jMax - 1];
}
// Gets all possible valid sequence combinations
}, {
key: "alignmentTraceback",
value: function alignmentTraceback() {
var inProcessAlignments = [];
inProcessAlignments.push({ pos: [this.sequence1.length, this.sequence2.length],
seq1: "",
seq2: ""
});
while (inProcessAlignments[0]) {
var current = inProcessAlignments[0];
var directions = this.tracebackGrid[current.pos[0]][current.pos[1]];
if (directions[0]) {
inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1] - 1],
seq1: this.sequence1[current.pos[0] - 1] + current.seq1,
seq2: this.sequence2[current.pos[1] - 1] + current.seq2
});
}
if (directions[1]) {
inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1]],
seq1: this.sequence1[current.pos[0] - 1] + current.seq1,
seq2: '-' + current.seq2
});
}
if (directions[2]) {
inProcessAlignments.push({ pos: [current.pos[0], current.pos[1] - 1],
seq1: '-' + current.seq1,
seq2: this.sequence2[current.pos[1] - 1] + current.seq2
});
}
if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ sequence1: current.seq1,
sequence2: current.seq2
});
inProcessAlignments.shift();
}
return this.alignments;
}
// Helper Functions
}, {
key: "getAllIndexes",
value: function getAllIndexes(arr, val) {
var indexes = [],
i = -1;
while ((i = arr.indexOf(val, i + 1)) !== -1) {
indexes.push(i);
}
return indexes;
}
}, {
key: "arrayAllMaxIndexes",
value: function arrayAllMaxIndexes(array) {
return this.getAllIndexes(array, Math.max.apply(null, array));
}
}]);
return NeedlemanWunsch;
}();
module.exports = NeedlemanWunsch;
/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {
var layoutBase = function layoutBase() {
return;
};
layoutBase.FDLayout = __webpack_require__(18);
layoutBase.FDLayoutConstants = __webpack_require__(7);
layoutBase.FDLayoutEdge = __webpack_require__(19);
layoutBase.FDLayoutNode = __webpack_require__(20);
layoutBase.DimensionD = __webpack_require__(21);
layoutBase.HashMap = __webpack_require__(22);
layoutBase.HashSet = __webpack_require__(23);
layoutBase.IGeometry = __webpack_require__(8);
layoutBase.IMath = __webpack_require__(9);
layoutBase.Integer = __webpack_require__(10);
layoutBase.Point = __webpack_require__(12);
layoutBase.PointD = __webpack_require__(4);
layoutBase.RandomSeed = __webpack_require__(16);
layoutBase.RectangleD = __webpack_require__(13);
layoutBase.Transform = __webpack_require__(17);
layoutBase.UniqueIDGeneretor = __webpack_require__(14);
layoutBase.Quicksort = __webpack_require__(24);
layoutBase.LinkedList = __webpack_require__(11);
layoutBase.LGraphObject = __webpack_require__(2);
layoutBase.LGraph = __webpack_require__(5);
layoutBase.LEdge = __webpack_require__(1);
layoutBase.LGraphManager = __webpack_require__(6);
layoutBase.LNode = __webpack_require__(3);
layoutBase.Layout = __webpack_require__(15);
layoutBase.LayoutConstants = __webpack_require__(0);
layoutBase.NeedlemanWunsch = __webpack_require__(25);
module.exports = layoutBase;
/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {
function Emitter() {
this.listeners = [];
}
var p = Emitter.prototype;
p.addListener = function (event, callback) {
this.listeners.push({
event: event,
callback: callback
});
};
p.removeListener = function (event, callback) {
for (var i = this.listeners.length; i >= 0; i--) {
var l = this.listeners[i];
if (l.event === event && l.callback === callback) {
this.listeners.splice(i, 1);
}
}
};
p.emit = function (event, data) {
for (var i = 0; i < this.listeners.length; i++) {
var l = this.listeners[i];
if (event === l.event) {
l.callback(data);
}
}
};
module.exports = Emitter;
/***/ })
/******/ ]);
});
});
var avsdfBase = createCommonjsModule(function (module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory(layoutBase);
})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_0__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 6);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
/**
* This class implements data and functionality required for AVSDF layout per
* circle.
*
*
* Copyright: i-Vis Research Group, Bilkent University, 2007 - present
*/
var LGraph = __webpack_require__(0).LGraph;
// -----------------------------------------------------------------------------
// Section: Initializations
// -----------------------------------------------------------------------------
function AVSDFCircle(parent, graphMgr, vObject) {
LGraph.call(this, parent, graphMgr, vObject);
this.inOrder = undefined;
this.currentIndex = 0;
this.nodeSeparation = undefined;
this.stack = [];
this.perimeter = 0;
this.centerX = 0;
this.centerY = 0;
this.radius = 0;
}
AVSDFCircle.prototype = Object.create(LGraph.prototype);
for (var property in LGraph) {
AVSDFCircle[property] = LGraph[property];
}
AVSDFCircle.prototype.initOrdering = function () {
this.inOrder = [];
};
// -----------------------------------------------------------------------------
// Section: Accessor Functions
// -----------------------------------------------------------------------------
// This function returns the array in which the nodes of this circle are kept in order.
AVSDFCircle.prototype.getOrder = function () {
return this.inOrder;
};
// This function returns the x-coordinate of the center of this circle.
AVSDFCircle.prototype.getCenterX = function () {
return this.centerX;
};
// This function returns the y-coordinate of the center of this circle.
AVSDFCircle.prototype.getCenterY = function () {
return this.centerY;
};
// This function returns the radius of this circle.
AVSDFCircle.prototype.getRadius = function () {
return this.radius;
};
// This function returns the total number of vertices of this circle.
AVSDFCircle.prototype.getSize = function () {
return this.getNodes().length;
};
// This function calculates and returns the total number of crossings in this
// circle by adding up the crossing number of individual nodes on it.
AVSDFCircle.prototype.getTotalCrossingOfCircle = function () {
var self = this;
var crossingNumber = 0;
for (var node in self.inOrder) {
var nodeCrossing = node.getTotalCrossingOfEdges();
if (nodeCrossing === -1) {
return -1;
}
crossingNumber += nodeCrossing;
}
return crossingNumber / 4;
};
// This function checks whether or not all of the vertices of this circle are
// assigned an index on the circle.
AVSDFCircle.prototype.hasFinishedOrdering = function () {
return this.currentIndex === this.getNodes().length;
};
// This function returns the node separation of this circle.
AVSDFCircle.prototype.getNodeSeparation = function () {
return this.nodeSeparation;
};
// This function sets the node separation of this circle.
AVSDFCircle.prototype.setNodeSeparation = function (nodeSeparation) {
this.nodeSeparation = nodeSeparation;
};
// -----------------------------------------------------------------------------
// Section: Remaining Functions
// -----------------------------------------------------------------------------
// This function traverses the vertices of this circle and corrects the angle
// of the vertices with respect to their circle indices.
AVSDFCircle.prototype.correctAngles = function () {
var self = this;
self.currentIndex = 0;
self.inOrder.forEach(function (node) {
return self.putInOrder(node);
});
};
// This function puts the given node on the circle in the current order and
// sets its angle appropriately.
AVSDFCircle.prototype.putInOrder = function (node) {
var self = this;
var nodes = self.getNodes();
// Note that id attribute of a node is added before
// AVSDFLayout is called
var found = false;
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].id == node.id) {
found = true;
break;
}
}
if (!found) {
throw "The node must be a member of LGraph";
}
self.inOrder[self.currentIndex] = node;
node.setIndex(self.currentIndex);
if (self.currentIndex === 0) {
node.setAngle(0.0);
} else {
node.setAngle(self.inOrder[self.currentIndex - 1].getAngle() + 2 * Math.PI * (node.getDiagonal() / 2 + self.nodeSeparation + self.inOrder[self.currentIndex - 1].getDiagonal() / 2) / self.perimeter);
}
self.currentIndex++;
};
// This function returns the next node to be placed on this circle with
// respect to the AVSDF algorithm.
AVSDFCircle.prototype.findNodeToPlace = function () {
var self = this;
var sDegreeNode = undefined;
// Find the smallest degree vertex if the stack is empty
if (self.stack.length === 0) {
sDegreeNode = self.findUnorderedSmallestDegreeNode();
}
// Find the first vertex in the stack not yet placed
else {
var foundUnorderNode = false;
while (!foundUnorderNode && !(self.stack.length === 0)) {
sDegreeNode = self.stack.pop();
foundUnorderNode = !sDegreeNode.isOrdered();
}
if (!foundUnorderNode) {
sDegreeNode = undefined;
}
}
// If no unordered vertex is found in the stack, find one
// from the remaining ones
if (sDegreeNode === undefined) {
sDegreeNode = self.findUnorderedSmallestDegreeNode();
}
// Add the unordered neighbors of this node to the stack
if (sDegreeNode !== undefined) {
var neighbors = sDegreeNode.getNeighborsSortedByDegree();
for (var i = neighbors.length - 1; i >= 0; i--) {
var neighbor = neighbors[i];
if (!neighbor.isOrdered()) // Check here for possible error
{
self.stack.push(neighbor);
}
}
}
return sDegreeNode;
};
// This function calculates the radius of this circle with respect to the sizes
// of the vertices and the node separation parameter.
AVSDFCircle.prototype.calculateRadius = function () {
var self = this;
var totalDiagonal = 0;
self.getNodes().forEach(function (node) {
return totalDiagonal += Math.sqrt(node.getWidth() * node.getWidth() + node.getHeight() * node.getHeight());
});
self.perimeter = totalDiagonal + self.getNodes().length * self.nodeSeparation;
var radius = self.perimeter / (2 * Math.PI);
// Check here for possible error
self.getParent().setWidth(2 * radius);
self.getParent().setHeight(2 * radius);
self.getParent().setCenter(self.getParent().getWidth(), self.getParent().getHeight());
self.centerX = self.getParent().getCenterX();
self.centerY = self.getParent().getCenterY();
self.radius = self.getParent().getHeight() / 2;
};
// This function calculates the total number of crossings of all vertices of
// this circle.
AVSDFCircle.prototype.calculateEdgeCrossingsOfNodes = function () {
this.getNodes().forEach(function (node) {
return node.calculateTotalCrossing();
});
};
// This function sets the index of each vertex to its position in inOrder
// array. Note that index of a node can be different from its place in the
// array due to crossing reduction phase of the AVSDF algorithm. It loads
// old index values to vertices due to an increase in the number of
// crossings with the new indices.
AVSDFCircle.prototype.loadOldIndicesOfNodes = function () {
//this.inOrder.forEach( (node,index) => node.setIndex(index));
var self = this;
for (var i = 0; i < this.inOrder.length; i++) {
self.inOrder[i].setIndex(i);
}
};
// This function sets the position of each node in inOrder array to its index.
// Note that index of a node can be different from its place in the inOrder
// array due to crossing reduction phase of the AVSDF algorithm. This function
// puts the nodes to their new index values in inOrder array due to a
// decrease in the number of crossings with the new indices.
AVSDFCircle.prototype.reOrderVertices = function () {
var self = this;
this.getNodes().forEach(function (node) {
return self.inOrder[node.getIndex()] = node;
});
};
// This function finds and returns the unordered smallest degree vertex on
// this circle.
AVSDFCircle.prototype.findUnorderedSmallestDegreeNode = function () {
var minDegree = Number.MAX_SAFE_INTEGER;
var sDegreeNode = void 0;
this.getNodes().forEach(function (node) {
if (node.getDegree() < minDegree && !node.isOrdered()) {
minDegree = node.getDegree();
sDegreeNode = node;
}
});
return sDegreeNode;
};
module.exports = AVSDFCircle;
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
var LayoutConstants = __webpack_require__(0).LayoutConstants;
function AVSDFConstants() {}
// AVSDFConstants inherits properties in LayoutConstants
for (var prop in LayoutConstants) {
AVSDFConstants[prop] = LayoutConstants[prop];
}
AVSDFConstants.DEFAULT_NODE_SEPARATION = 60;
module.exports = AVSDFConstants;
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
/**
* This class implements data and functionality required for AVSDF layout per
* edge.
*
* Copyright: i-Vis Research Group, Bilkent University, 2007 - present
*/
var LEdge = __webpack_require__(0).LEdge;
// -----------------------------------------------------------------------------
// Section: Initializations
// -----------------------------------------------------------------------------
function AVSDFEdge(source, target, vEdge) {
LEdge.call(this, source, target, vEdge);
}
AVSDFEdge.prototype = Object.create(LEdge.prototype);
for (var properties in LEdge) {
AVSDFEdge[properties] = LEdge[properties];
}
// -----------------------------------------------------------------------------
// Section: Accessor Functions
// -----------------------------------------------------------------------------
// The function getOtherEnd returns the other end of this edge.
AVSDFEdge.prototype.getOtherEnd = function (node) {
return LEdge.prototype.getOtherEnd(node);
};
// -----------------------------------------------------------------------------
// Section: Remaining Functions
// -----------------------------------------------------------------------------
// This function checks whether this edge crosses with the input edge. It
// returns false, if any of the vertices those edges are incident to are not
// yet placed on the circle.
AVSDFEdge.prototype.crossesWithEdge = function (otherEdge) {
var self = this;
var sourcePos = self.getSource().getIndex();
var targetPos = self.getTarget().getIndex();
var otherSourcePos = otherEdge.getSource().getIndex();
var otherTargetPos = otherEdge.getTarget().getIndex();
// if any of the vertices those two edges are not yet placed
if (sourcePos === -1 || targetPos === -1 || otherSourcePos === -1 || otherTargetPos === -1) {
return false;
}
var otherSourceDist = otherEdge.getSource().getCircDistWithTheNode(self.getSource());
var otherTargetDist = otherEdge.getTarget().getCircDistWithTheNode(self.getSource());
var thisTargetDist = self.getTarget().getCircDistWithTheNode(self.getSource());
if (thisTargetDist < Math.max(otherSourceDist, otherTargetDist) && thisTargetDist > Math.min(otherSourceDist, otherTargetDist) && otherTargetDist !== 0 && otherSourceDist !== 0) {
return true;
}
return false;
};
// This function returns 1 if this edge crosses with the input edge, 0
// otherwise.
AVSDFEdge.prototype.crossingWithEdge = function (otherEdge) {
var self = this;
var result = self.crossesWithEdge(otherEdge);
return result ? 1 : 0;
};
// This function calculates the total number of crossings of this edge with
// all the edges given in the input list.
AVSDFEdge.prototype.calculateTotalCrossingWithList = function (edgeList) {
var self = this;
var totalCrossing = 0;
edgeList.forEach(function (edge) {
return totalCrossing += self.crossingWithEdge(edge);
});
return totalCrossing;
};
module.exports = AVSDFEdge;
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
/**
* This class implements data and functionality required for AVSDF layout per
* node.
*
*
* Copyright: i-Vis Research Group, Bilkent University, 2007 - present
*/
var LNode = __webpack_require__(0).LNode;
__webpack_require__(0).Quicksort;
// -----------------------------------------------------------------------------
// Section: Initializations
// -----------------------------------------------------------------------------
function AVSDFNode(gm, vNode, loc, size) {
// Constructor 1: AVSDFNode(gm, vNode, loc, size)
if (loc !== undefined && size !== undefined) {
LNode.call(this, gm, vNode, loc, size);
}
// Constructor 2: AVSDFNode(gm, vNode)
else {
LNode.call(this, gm, vNode);
}
// Angle of this node on the owner circle in radians
this.angle = 0;
// Index of this node on the owner circle
this.circleIndex = -1;
// Total number of crossings of the edges this node is incident to
this.totalCrossingOfEdges = -1;
// Whether the current edge crossing number is valid or it needs to be
// recalculated
this.isCrossingNumberValid = false;
}
AVSDFNode.prototype = Object.create(LNode.prototype);
for (var properties in LNode) {
AVSDFNode[properties] = LNode[properties];
}
// -----------------------------------------------------------------------------
// Section: Accessor Functions
// -----------------------------------------------------------------------------
// This function returns the circle this node is owned by.
AVSDFNode.prototype.getCircle = function () {
return this.getOwner();
};
// This function sets the index of this node on the circle, and sets the
// crossing number invalid. Due to the index change of the node; it needs to
// be recalculated.
AVSDFNode.prototype.setIndex = function (index) {
this.circleIndex = index;
this.isCrossingNumberValid = false;
};
// This function returns the index of this node in the ordering of its owner
// circle. Here -1 means that the vertex is not yet placed on its owner
//circle.
AVSDFNode.prototype.getIndex = function () {
return this.circleIndex;
};
// This function returns the array of the neigbors of this node sorted in
// ascending order.
AVSDFNode.prototype.getNeighborsSortedByDegree = function () {
var self = this;
var result = Array.from(self.getNeighborsList());
result = result.filter(function (node) {
return node.getIndex() === -1;
});
result.sort(function (a, b) {
return a.getDegree() - b.getDegree();
});
return result;
};
// This function returns the degree of this node.
AVSDFNode.prototype.getDegree = function () {
return this.getEdges().length;
};
// This function returns whether or not this node is currently placed on its
// owner circle.
AVSDFNode.prototype.isOrdered = function () {
return this.getIndex() > -1;
};
// This function sets the angle of this node w.r.t. its owner circle. Here
// the angle value is in radian.
AVSDFNode.prototype.setAngle = function (angle) {
this.angle = angle;
};
// This function returns the angle of this node w.r.t. its owner circle. Here
// the angle value is in radian.
AVSDFNode.prototype.getAngle = function () {
return this.angle;
};
// This function returns the index difference of this node with the input
// node. Note that the index difference cannot be negative if both nodes are
// placed on the circle. Here -1 means at least one of the nodes are not yet
// placed on the circle.
AVSDFNode.prototype.getCircDistWithTheNode = function (refNode) {
var self = this;
var otherIndex = refNode.getIndex();
if (otherIndex === -1 || self.getIndex() === -1) {
return -1;
}
var diff = self.getIndex() - otherIndex;
if (diff < 0) {
diff += self.getCircle().getSize();
}
return diff;
};
// This function finds the number of edge crossings between the edges of
// this node and the edges of the input one.
AVSDFNode.prototype.getCrossingNumberWithNode = function (otherNode) {
var self = this;
var totalCrossing = 0;
self.getEdges().forEach(function (edge) {
otherNode.getEdges().forEach(function (otherEdge) {
totalCrossing += edge.crossingWithEdge(otherEdge);
});
});
return totalCrossing;
};
// This function returns the total number of edge crossings. If the previously
// calculated value is not valid due to an index change on the circle, then
// a recalculation is performed.
AVSDFNode.prototype.getTotalCrossingOfEdges = function () {
var self = this;
if (!self.isCrossingNumberValid) {
self.calculateTotalCrossing();
self.isCrossingNumberValid = true;
}
return self.totalCrossingOfEdges;
};
// -----------------------------------------------------------------------------
// Section: Remaining Functions
// -----------------------------------------------------------------------------
// This function calculates the total number of crossings the edges of this
// node cause.
AVSDFNode.prototype.calculateTotalCrossing = function () {
var self = this;
var temp_crossing_count = 0;
var temp_edge_list = [];
temp_edge_list.push.apply(temp_edge_list, self.getCircle().getEdges());
temp_edge_list = temp_edge_list.filter(function (ele) {
return self.getEdges().indexOf(ele) < 0;
});
self.getEdges().forEach(function (edge) {
return temp_crossing_count += edge.calculateTotalCrossingWithList(temp_edge_list);
});
self.totalCrossingOfEdges = temp_crossing_count;
};
module.exports = AVSDFNode;
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
/**
* This class implements the overall layout process for the AVSDF algorithm
* (Circular Drawing Algorithm by He and Sykora).
*
*
* Copyright: i-Vis Research Group, Bilkent University, 2007 - present
*/
var Layout = __webpack_require__(0).Layout;
var AVSDFConstants = __webpack_require__(2);
var AVSDFCircle = __webpack_require__(1);
var AVSDFNode = __webpack_require__(4);
var AVSDFEdge = __webpack_require__(3);
// -----------------------------------------------------------------------------
// Section: Initializations
// -----------------------------------------------------------------------------
// Constructor
function AVSDFLayout() {
Layout.call(this);
this.nodeSeparation = AVSDFConstants.DEFAULT_NODE_SEPARATION;
}
AVSDFLayout.prototype = Object.create(Layout.prototype);
for (var property in Layout) {
AVSDFLayout[property] = Layout[property];
}
AVSDFLayout.prototype.newGraph = function (vObject) {
this.avsdfCircle = new AVSDFCircle(null, this.graphManager, vObject);
return this.avsdfCircle;
};
AVSDFLayout.prototype.newNode = function (vNode) {
return new AVSDFNode(this.graphManager, vNode);
};
AVSDFLayout.prototype.newEdge = function (vEdge) {
return new AVSDFEdge(null, null, vEdge);
};
// -----------------------------------------------------------------------------
// Section: Accessor Functions
// -----------------------------------------------------------------------------
// This function returns the position data for all nodes
AVSDFLayout.prototype.getPositionsData = function () {
var allNodes = this.graphManager.getAllNodes();
var pData = {};
for (var i = 0; i < allNodes.length; i++) {
var rect = allNodes[i].rect;
var id = allNodes[i].id;
pData[id] = {
id: id,
x: rect.getCenterX(),
y: rect.getCenterY(),
w: rect.width,
h: rect.height
};
}
return pData;
};
// -----------------------------------------------------------------------------
// Section: Layout Related
// -----------------------------------------------------------------------------
/**
* This function performs layout on constructed l-level graph.
* It returns true on success, false otherwise.
* Important!: If you want to see the results of this function then, after this function is called, you have to calculate
* and set the positions of every node. To do this call updateNodeCoordinates. However, updateNodeAngles on the other
* hand is not needed (redundant) for this function.
*/
AVSDFLayout.prototype.layout = function () {
var self = this;
// Check if graph contains any compound structures
if (self.graphManager.getGraphs().length > 1) {
return false;
}
var clusterGraph = this.avsdfCircle; // Fixed reference, but now it is a bit redundant
clusterGraph.setNodeSeparation(this.nodeSeparation);
clusterGraph.calculateRadius();
clusterGraph.initOrdering();
while (!clusterGraph.hasFinishedOrdering()) {
var node = clusterGraph.findNodeToPlace();
clusterGraph.putInOrder(node);
}
return true;
};
// This function updates the angle (in radians) property of AVSDFNode elements in the circle
AVSDFLayout.prototype.updateNodeAngles = function () {
this.graphManager.getRoot().correctAngles(); //AVSDFCircle object
};
// This function traverses the vertices of the graph and sets their correct coordinates with respect to the owner circle.
AVSDFLayout.prototype.updateNodeCoordinates = function () {
var clusterGraph = this.graphManager.getRoot();
clusterGraph.getNodes().forEach(function (node) {
node.setCenter(clusterGraph.getCenterX() + clusterGraph.getRadius() * Math.cos(node.getAngle()), clusterGraph.getCenterY() + clusterGraph.getRadius() * Math.sin(node.getAngle()));
});
};
// -----------------------------------------------------------------------------
// Section: Post Processing
// -----------------------------------------------------------------------------
/**
* This method implements the post processing step of the algorithm, which
* tries to minimize the number of edges further with respect to the local
* adjusting algorithm described by He and Sykora.
*/
AVSDFLayout.prototype.initPostProcess = function () {
this.avsdfCircle.calculateEdgeCrossingsOfNodes();
var list = this.avsdfCircle.getNodes();
list.sort(function (a, b) {
return b.getTotalCrossingOfEdges() - a.getTotalCrossingOfEdges();
});
return list;
};
AVSDFLayout.prototype.oneStepPostProcess = function (node) {
var self = this;
var currentCrossingNumber = node.getTotalCrossingOfEdges();
var newCrossingNumber = void 0;
var neighbours = Array.from(node.getNeighborsList());
for (var j = 0; j < neighbours.length; j++) {
var neighbour = neighbours[j];
var oldIndex = node.getIndex();
var newIndex = (neighbour.getIndex() + 1) % self.avsdfCircle.getSize();
if (oldIndex !== newIndex) {
node.setIndex(newIndex);
if (oldIndex < node.getIndex()) {
oldIndex += self.avsdfCircle.getSize();
}
var index = node.getIndex();
while (index < oldIndex) {
var temp = self.avsdfCircle.getOrder()[index % self.avsdfCircle.getSize()];
temp.setIndex((temp.getIndex() + 1) % self.avsdfCircle.getSize());
index += 1;
}
node.calculateTotalCrossing();
newCrossingNumber = node.getTotalCrossingOfEdges();
if (newCrossingNumber >= currentCrossingNumber) {
self.avsdfCircle.loadOldIndicesOfNodes();
} else {
self.avsdfCircle.reOrderVertices();
currentCrossingNumber = newCrossingNumber;
}
}
}
};
module.exports = AVSDFLayout;
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
var avsdfBase = {};
avsdfBase.layoutBase = __webpack_require__(0);
avsdfBase.AVSDFConstants = __webpack_require__(2);
avsdfBase.AVSDFEdge = __webpack_require__(3);
avsdfBase.AVSDFCircle = __webpack_require__(1);
avsdfBase.AVSDFLayout = __webpack_require__(5);
avsdfBase.AVSDFNode = __webpack_require__(4);
module.exports = avsdfBase;
/***/ })
/******/ ]);
});
});
var cytoscapeAvsdf = createCommonjsModule(function (module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory(avsdfBase);
})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_0__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 3);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
// Simple, internal Object.assign() polyfill for options objects etc.
module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {
for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
srcs[_key - 1] = arguments[_key];
}
srcs.forEach(function (src) {
Object.keys(src).forEach(function (k) {
return tgt[k] = src[k];
});
});
return tgt;
};
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
/**
*
* Choose the type of layout that best suits your usecase as a starting point.
*
* A discrete layout is one that algorithmically sets resultant positions. It
* does not have intermediate positions.
*
* A continuous layout is one that updates positions continuously, like a force-
* directed / physics simulation layout.
*/
module.exports = __webpack_require__(4);
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
var impl = __webpack_require__(2);
// registers the extension on a cytoscape lib ref
var register = function register(cytoscape) {
if (!cytoscape) {
return;
} // can't register if cytoscape unspecified
cytoscape('layout', 'avsdf', impl); // register with cytoscape.js
};
if (typeof cytoscape !== 'undefined') {
// expose to global cytoscape (i.e. window.cytoscape)
register(cytoscape);
}
module.exports = register;
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
/**
* This class implements the overall layout process for the
* Adjacent Vertex with Smallest Degree First (AVSDF) algorithm.
* (Circular Drawing Algorithm by Hongmei He & Ondrej Sýkora).
*
* @author Doruk Çakmakçı
* @author Alihan Okka
*
* Copyright: i-Vis (Information Visualization) Research Lab, Bilkent University, 2019 - present
*/
// cytosscape.js-avsdf REQUIRES avsdf-base library elements
var AVSDFLayout = __webpack_require__(0).AVSDFLayout;
var AVSDFNode = __webpack_require__(0).AVSDFNode;
var AVSDFConstants = __webpack_require__(0).AVSDFConstants;
var PointD = __webpack_require__(0).layoutBase.PointD;
var DimensionD = __webpack_require__(0).layoutBase.DimensionD;
// Cytoscape-extention template requirements
// More details can be found in NPM 'slush-cytoscape-extension' package
var assign = __webpack_require__(1);
var ContinuousLayout = __webpack_require__(6);
var defaults = {
ready: function ready() {}, // Called on `layoutready`
stop: function stop() {}, // Called on `layoutstop`
refresh: 30, // number of ticks per frame; higher is faster but more jerky
fit: true, // Whether to fit the network view after when done
padding: 10, // Padding on fit
randomize: false, // Whether to enable incremental mode
animate: 'end', // Type of layout animation. The option set is {'during', 'end', false}
animationDuration: 500, // Duration for animate:end
nodeSeparation: 60 // How apart the nodes are
};
/**
* This is the main class that does all the functionality.
* The class is utilized by functions in the continuous-base folder.
*/
var AVSDF = function (_ContinuousLayout) {
_inherits(AVSDF, _ContinuousLayout);
function AVSDF(options) {
_classCallCheck(this, AVSDF);
// Whether node separation value is used
var _this = _possibleConstructorReturn(this, (AVSDF.__proto__ || Object.getPrototypeOf(AVSDF)).call(this, assign({}, defaults, options)));
if (options.nodeSeparation != null) AVSDFConstants.DEFAULT_NODE_SEPARATION = options.nodeSeparation;else AVSDFConstants.DEFAULT_NODE_SEPARATION = defaults.nodeSeparation;
return _this;
}
/**
* Initializing AVSDF elements and arranging the nodes of the graph around the circle
*/
_createClass(AVSDF, [{
key: 'prerun',
value: function prerun() {
var state = this.state; // options object combined with current state
// Initialize AVSDF elements and their requirements
var avsdfLayout = this.avsdfLayout = new AVSDFLayout();
var graphManager = this.graphManager = avsdfLayout.newGraphManager();
var root = this.root = graphManager.addRoot();
var nodes = state.nodes;
var edges = state.edges;
// Getting nodes of cytoscape and converting it to AVSDF structure
this.idToLNode = {};
this.processChildrenList(root, nodes, avsdfLayout);
// Getting edges of cytoscape and transfering it to GraphManager
for (var i = 0; i < edges.length; i++) {
var edge = edges[i];
var sourceNode = this.idToLNode[edge.data("source")];
var targetNode = this.idToLNode[edge.data("target")];
if (sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length === 0) {
var e1 = graphManager.add(avsdfLayout.newEdge(), sourceNode, targetNode);
e1.id = edge.id();
}
}
// Running the AVSDF layout.
// Note: This function doesn't do post-processing. Plus, nodes have to be positioned.
// See AVSDFLayout for details.
avsdfLayout.layout();
// We need to calculate the initial circle position if we want to render it
avsdfLayout.updateNodeCoordinates();
// Post process is iterated over the sorted list of vertex degrees (descending)
this.sortedByDegreeList = avsdfLayout.initPostProcess();
}
/**
* Runs this in each iteration
*/
}, {
key: 'tick',
value: function tick() {
var _this2 = this;
var state = this.state;
// This function is used for getting coordinates from AVSDF elements and passing it to cytoscape
var positions = this.avsdfLayout.getPositionsData();
state.nodes.forEach(function (n) {
var s = _this2.getScratch(n);
// example : put node at random position
s.x = positions[n.data('id')].x;
s.y = positions[n.data('id')].y;
});
if (state.tickIndex >= state.nodes.size()) return true;
this.avsdfLayout.oneStepPostProcess(this.sortedByDegreeList[state.tickIndex]);
this.avsdfLayout.updateNodeAngles();
this.avsdfLayout.updateNodeCoordinates();
}
/**
* Runs this function after the layout is done ticking
*/
}, {
key: 'postrun',
value: function postrun() {}
/**
* Clean up any object refs that could prevent garbage collection, etc.
*/
}, {
key: 'destroy',
value: function destroy() {
_get(AVSDF.prototype.__proto__ || Object.getPrototypeOf(AVSDF.prototype), 'destroy', this).call(this);
return this;
}
/**
* Transition from cytoscape nodes to AVSDF elements
*/
}, {
key: 'processChildrenList',
value: function processChildrenList(parent, children, layout) {
var size = children.length;
for (var i = 0; i < size; i++) {
var theChild = children[i];
var theNode = void 0;
//Label dimensions are NOT included when calculating node dimensions
var dimensions = theChild.layoutDimensions({
nodeDimensionsIncludeLabels: false
});
if (theChild.outerWidth() != null && theChild.outerHeight() != null) {
theNode = parent.add(new AVSDFNode(layout.graphManager, null, new PointD(theChild.position('x') - dimensions.w / 2, theChild.position('y') - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));
} else {
theNode = parent.add(new AVSDFNode(this.graphManager));
}
// Attach id to the layout node
theNode.id = theChild.data("id");
// Attach the paddings of cy node to layout node
theNode.paddingLeft = parseInt(theChild.css('padding'));
theNode.paddingTop = parseInt(theChild.css('padding'));
theNode.paddingRight = parseInt(theChild.css('padding'));
theNode.paddingBottom = parseInt(theChild.css('padding'));
// Map the layout node
this.idToLNode[theChild.data("id")] = theNode;
if (isNaN(theNode.rect.x)) {
theNode.rect.x = 0;
}
if (isNaN(theNode.rect.y)) {
theNode.rect.y = 0;
}
}
}
}]);
return AVSDF;
}(ContinuousLayout);
module.exports = AVSDF;
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
// general default options for force-directed layout
module.exports = Object.freeze({
animate: true, // whether to show the layout as it's running; special 'end' value makes the layout animate like a discrete layout
refresh: 10, // number of ticks per frame; higher is faster but more jerky
maxIterations: 1000, // max iterations before the layout will bail out
ungrabifyWhileSimulating: false, // so you can't drag nodes during layout
fit: true, // on every layout reposition of nodes, fit the viewport
padding: 30, // padding around the simulation
boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
// layout event callbacks
ready: function ready() {}, // on layoutready
stop: function stop() {}, // on layoutstop
// positioning options
randomize: false, // use random node positions at beginning of layout
// infinite layout options
infinite: false // overrides all other options for a forces-all-the-time mode
});
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/**
A generic continuous layout class
*/
var assign = __webpack_require__(1);
var defaults = __webpack_require__(5);
var makeBoundingBox = __webpack_require__(7);
var _require = __webpack_require__(8),
setInitialPositionState = _require.setInitialPositionState,
refreshPositions = _require.refreshPositions,
getNodePositionData = _require.getNodePositionData;
var _require2 = __webpack_require__(9),
multitick = _require2.multitick;
var Layout = function () {
function Layout(options) {
_classCallCheck(this, Layout);
var o = this.options = assign({}, defaults, options);
var s = this.state = assign({}, o, {
layout: this,
nodes: o.eles.nodes(),
edges: o.eles.edges(),
tickIndex: 0,
firstUpdate: true
});
s.animateEnd = o.animate && o.animate === 'end';
s.animateContinuously = o.animate && !s.animateEnd;
}
_createClass(Layout, [{
key: 'getScratch',
value: function getScratch(el) {
var name = this.state.name;
var scratch = el.scratch(name);
if (!scratch) {
scratch = {};
el.scratch(name, scratch);
}
return scratch;
}
}, {
key: 'run',
value: function run() {
var l = this;
var s = this.state;
s.tickIndex = 0;
s.firstUpdate = true;
s.startTime = Date.now();
s.running = true;
s.currentBoundingBox = makeBoundingBox(s.boundingBox, s.cy);
if (s.ready) {
l.one('ready', s.ready);
}
if (s.stop) {
l.one('stop', s.stop);
}
s.nodes.forEach(function (n) {
return setInitialPositionState(n, s);
});
l.prerun(s);
if (s.animateContinuously) {
var ungrabify = function ungrabify(node) {
if (!s.ungrabifyWhileSimulating) {
return;
}
var grabbable = getNodePositionData(node, s).grabbable = node.grabbable();
if (grabbable) {
node.ungrabify();
}
};
var regrabify = function regrabify(node) {
if (!s.ungrabifyWhileSimulating) {
return;
}
var grabbable = getNodePositionData(node, s).grabbable;
if (grabbable) {
node.grabify();
}
};
var updateGrabState = function updateGrabState(node) {
return getNodePositionData(node, s).grabbed = node.grabbed();
};
var onGrab = function onGrab(_ref) {
var target = _ref.target;
updateGrabState(target);
};
var onFree = onGrab;
var onDrag = function onDrag(_ref2) {
var target = _ref2.target;
var p = getNodePositionData(target, s);
var tp = target.position();
p.x = tp.x;
p.y = tp.y;
};
var listenToGrab = function listenToGrab(node) {
node.on('grab', onGrab);
node.on('free', onFree);
node.on('drag', onDrag);
};
var unlistenToGrab = function unlistenToGrab(node) {
node.removeListener('grab', onGrab);
node.removeListener('free', onFree);
node.removeListener('drag', onDrag);
};
var fit = function fit() {
if (s.fit && s.animateContinuously) {
s.cy.fit(s.padding);
}
};
var onNotDone = function onNotDone() {
refreshPositions(s.nodes, s);
fit();
requestAnimationFrame(_frame);
};
var _frame = function _frame() {
multitick(s, onNotDone, _onDone);
};
var _onDone = function _onDone() {
refreshPositions(s.nodes, s);
fit();
s.nodes.forEach(function (n) {
regrabify(n);
unlistenToGrab(n);
});
s.running = false;
l.emit('layoutstop');
};
l.emit('layoutstart');
s.nodes.forEach(function (n) {
ungrabify(n);
listenToGrab(n);
});
_frame(); // kick off
} else {
var done = false;
var _onNotDone = function _onNotDone() {};
var _onDone2 = function _onDone2() {
return done = true;
};
while (!done) {
multitick(s, _onNotDone, _onDone2);
}
s.eles.layoutPositions(this, s, function (node) {
var pd = getNodePositionData(node, s);
return { x: pd.x, y: pd.y };
});
}
l.postrun(s);
return this; // chaining
}
}, {
key: 'prerun',
value: function prerun() {}
}, {
key: 'postrun',
value: function postrun() {}
}, {
key: 'tick',
value: function tick() {}
}, {
key: 'stop',
value: function stop() {
this.state.running = false;
return this; // chaining
}
}, {
key: 'destroy',
value: function destroy() {
return this; // chaining
}
}]);
return Layout;
}();
module.exports = Layout;
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = function (bb, cy) {
if (bb == null) {
bb = { x1: 0, y1: 0, w: cy.width(), h: cy.height() };
} else {
// copy
bb = { x1: bb.x1, x2: bb.x2, y1: bb.y1, y2: bb.y2, w: bb.w, h: bb.h };
}
if (bb.x2 == null) {
bb.x2 = bb.x1 + bb.w;
}
if (bb.w == null) {
bb.w = bb.x2 - bb.x1;
}
if (bb.y2 == null) {
bb.y2 = bb.y1 + bb.h;
}
if (bb.h == null) {
bb.h = bb.y2 - bb.y1;
}
return bb;
};
/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
var assign = __webpack_require__(1);
var setInitialPositionState = function setInitialPositionState(node, state) {
var p = node.position();
var bb = state.currentBoundingBox;
var scratch = node.scratch(state.name);
if (scratch == null) {
scratch = {};
node.scratch(state.name, scratch);
}
assign(scratch, state.randomize ? {
x: bb.x1 + Math.round(Math.random() * bb.w),
y: bb.y1 + Math.round(Math.random() * bb.h)
} : {
x: p.x,
y: p.y
});
scratch.locked = node.locked();
};
var getNodePositionData = function getNodePositionData(node, state) {
return node.scratch(state.name);
};
var refreshPositions = function refreshPositions(nodes, state) {
nodes.positions(function (node) {
var scratch = node.scratch(state.name);
return {
x: scratch.x,
y: scratch.y
};
});
};
module.exports = { setInitialPositionState: setInitialPositionState, getNodePositionData: getNodePositionData, refreshPositions: refreshPositions };
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
var nop = function nop() {};
var tick = function tick(state) {
var s = state;
var l = state.layout;
var tickIndicatesDone = l.tick(s);
if (s.firstUpdate) {
if (s.animateContinuously) {
// indicate the initial positions have been set
s.layout.emit('layoutready');
}
s.firstUpdate = false;
}
s.tickIndex++;
Date.now() - s.startTime;
return !s.infinite && tickIndicatesDone;
};
var multitick = function multitick(state) {
var onNotDone = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : nop;
var onDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : nop;
var done = false;
var s = state;
for (var i = 0; i < s.refresh; i++) {
done = !s.running || tick(s);
if (done) {
break;
}
}
if (!done) {
onNotDone();
} else {
onDone();
}
};
module.exports = { tick: tick, multitick: multitick };
/***/ })
/******/ ]);
});
});
var avsdf = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeAvsdf);
/**
* Removes all key-value entries from the list cache.
*
* @private
* @name clear
* @memberOf ListCache
*/
function listCacheClear() {
this.__data__ = [];
this.size = 0;
}
var _listCacheClear = listCacheClear;
/**
* Performs a
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* comparison between two values to determine if they are equivalent.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
* @example
*
* var object = { 'a': 1 };
* var other = { 'a': 1 };
*
* _.eq(object, object);
* // => true
*
* _.eq(object, other);
* // => false
*
* _.eq('a', 'a');
* // => true
*
* _.eq('a', Object('a'));
* // => false
*
* _.eq(NaN, NaN);
* // => true
*/
function eq(value, other) {
return value === other || (value !== value && other !== other);
}
var eq_1 = eq;
/**
* Gets the index at which the `key` is found in `array` of key-value pairs.
*
* @private
* @param {Array} array The array to inspect.
* @param {*} key The key to search for.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
function assocIndexOf(array, key) {
var length = array.length;
while (length--) {
if (eq_1(array[length][0], key)) {
return length;
}
}
return -1;
}
var _assocIndexOf = assocIndexOf;
/** Used for built-in method references. */
var arrayProto = Array.prototype;
/** Built-in value references. */
var splice = arrayProto.splice;
/**
* Removes `key` and its value from the list cache.
*
* @private
* @name delete
* @memberOf ListCache
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function listCacheDelete(key) {
var data = this.__data__,
index = _assocIndexOf(data, key);
if (index < 0) {
return false;
}
var lastIndex = data.length - 1;
if (index == lastIndex) {
data.pop();
} else {
splice.call(data, index, 1);
}
--this.size;
return true;
}
var _listCacheDelete = listCacheDelete;
/**
* Gets the list cache value for `key`.
*
* @private
* @name get
* @memberOf ListCache
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function listCacheGet(key) {
var data = this.__data__,
index = _assocIndexOf(data, key);
return index < 0 ? undefined : data[index][1];
}
var _listCacheGet = listCacheGet;
/**
* Checks if a list cache value for `key` exists.
*
* @private
* @name has
* @memberOf ListCache
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function listCacheHas(key) {
return _assocIndexOf(this.__data__, key) > -1;
}
var _listCacheHas = listCacheHas;
/**
* Sets the list cache `key` to `value`.
*
* @private
* @name set
* @memberOf ListCache
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the list cache instance.
*/
function listCacheSet(key, value) {
var data = this.__data__,
index = _assocIndexOf(data, key);
if (index < 0) {
++this.size;
data.push([key, value]);
} else {
data[index][1] = value;
}
return this;
}
var _listCacheSet = listCacheSet;
/**
* Creates an list cache object.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function ListCache(entries) {
var index = -1,
length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
// Add methods to `ListCache`.
ListCache.prototype.clear = _listCacheClear;
ListCache.prototype['delete'] = _listCacheDelete;
ListCache.prototype.get = _listCacheGet;
ListCache.prototype.has = _listCacheHas;
ListCache.prototype.set = _listCacheSet;
var _ListCache = ListCache;
/**
* Removes all key-value entries from the stack.
*
* @private
* @name clear
* @memberOf Stack
*/
function stackClear() {
this.__data__ = new _ListCache;
this.size = 0;
}
var _stackClear = stackClear;
/**
* Removes `key` and its value from the stack.
*
* @private
* @name delete
* @memberOf Stack
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function stackDelete(key) {
var data = this.__data__,
result = data['delete'](key);
this.size = data.size;
return result;
}
var _stackDelete = stackDelete;
/**
* Gets the stack value for `key`.
*
* @private
* @name get
* @memberOf Stack
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function stackGet(key) {
return this.__data__.get(key);
}
var _stackGet = stackGet;
/**
* Checks if a stack value for `key` exists.
*
* @private
* @name has
* @memberOf Stack
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function stackHas(key) {
return this.__data__.has(key);
}
var _stackHas = stackHas;
/** Detect free variable `global` from Node.js. */
var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
var _freeGlobal = freeGlobal;
/** Detect free variable `self`. */
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
/** Used as a reference to the global object. */
var root = _freeGlobal || freeSelf || Function('return this')();
var _root = root;
/** Built-in value references. */
var Symbol$1 = _root.Symbol;
var _Symbol = Symbol$1;
/** Used for built-in method references. */
var objectProto$i = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$f = objectProto$i.hasOwnProperty;
/**
* Used to resolve the
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var nativeObjectToString$1 = objectProto$i.toString;
/** Built-in value references. */
var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
/**
* A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the raw `toStringTag`.
*/
function getRawTag(value) {
var isOwn = hasOwnProperty$f.call(value, symToStringTag$1),
tag = value[symToStringTag$1];
try {
value[symToStringTag$1] = undefined;
var unmasked = true;
} catch (e) {}
var result = nativeObjectToString$1.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag$1] = tag;
} else {
delete value[symToStringTag$1];
}
}
return result;
}
var _getRawTag = getRawTag;
/** Used for built-in method references. */
var objectProto$h = Object.prototype;
/**
* Used to resolve the
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var nativeObjectToString = objectProto$h.toString;
/**
* Converts `value` to a string using `Object.prototype.toString`.
*
* @private
* @param {*} value The value to convert.
* @returns {string} Returns the converted string.
*/
function objectToString(value) {
return nativeObjectToString.call(value);
}
var _objectToString = objectToString;
/** `Object#toString` result references. */
var nullTag = '[object Null]',
undefinedTag = '[object Undefined]';
/** Built-in value references. */
var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
/**
* The base implementation of `getTag` without fallbacks for buggy environments.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the `toStringTag`.
*/
function baseGetTag(value) {
if (value == null) {
return value === undefined ? undefinedTag : nullTag;
}
return (symToStringTag && symToStringTag in Object(value))
? _getRawTag(value)
: _objectToString(value);
}
var _baseGetTag = baseGetTag;
/**
* Checks if `value` is the
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
* @example
*
* _.isObject({});
* // => true
*
* _.isObject([1, 2, 3]);
* // => true
*
* _.isObject(_.noop);
* // => true
*
* _.isObject(null);
* // => false
*/
function isObject(value) {
var type = typeof value;
return value != null && (type == 'object' || type == 'function');
}
var isObject_1 = isObject;
/** `Object#toString` result references. */
var asyncTag = '[object AsyncFunction]',
funcTag$2 = '[object Function]',
genTag$1 = '[object GeneratorFunction]',
proxyTag = '[object Proxy]';
/**
* Checks if `value` is classified as a `Function` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
* @example
*
* _.isFunction(_);
* // => true
*
* _.isFunction(/abc/);
* // => false
*/
function isFunction(value) {
if (!isObject_1(value)) {
return false;
}
// The use of `Object#toString` avoids issues with the `typeof` operator
// in Safari 9 which returns 'object' for typed arrays and other constructors.
var tag = _baseGetTag(value);
return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag;
}
var isFunction_1 = isFunction;
/** Used to detect overreaching core-js shims. */
var coreJsData = _root['__core-js_shared__'];
var _coreJsData = coreJsData;
/** Used to detect methods masquerading as native. */
var maskSrcKey = (function() {
var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');
return uid ? ('Symbol(src)_1.' + uid) : '';
}());
/**
* Checks if `func` has its source masked.
*
* @private
* @param {Function} func The function to check.
* @returns {boolean} Returns `true` if `func` is masked, else `false`.
*/
function isMasked(func) {
return !!maskSrcKey && (maskSrcKey in func);
}
var _isMasked = isMasked;
/** Used for built-in method references. */
var funcProto$2 = Function.prototype;
/** Used to resolve the decompiled source of functions. */
var funcToString$2 = funcProto$2.toString;
/**
* Converts `func` to its source code.
*
* @private
* @param {Function} func The function to convert.
* @returns {string} Returns the source code.
*/
function toSource(func) {
if (func != null) {
try {
return funcToString$2.call(func);
} catch (e) {}
try {
return (func + '');
} catch (e) {}
}
return '';
}
var _toSource = toSource;
/**
* Used to match `RegExp`
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
*/
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
/** Used to detect host constructors (Safari). */
var reIsHostCtor = /^\[object .+?Constructor\]$/;
/** Used for built-in method references. */
var funcProto$1 = Function.prototype,
objectProto$g = Object.prototype;
/** Used to resolve the decompiled source of functions. */
var funcToString$1 = funcProto$1.toString;
/** Used to check objects for own properties. */
var hasOwnProperty$e = objectProto$g.hasOwnProperty;
/** Used to detect if a method is native. */
var reIsNative = RegExp('^' +
funcToString$1.call(hasOwnProperty$e).replace(reRegExpChar, '\\$&')
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
);
/**
* The base implementation of `_.isNative` without bad shim checks.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a native function,
* else `false`.
*/
function baseIsNative(value) {
if (!isObject_1(value) || _isMasked(value)) {
return false;
}
var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;
return pattern.test(_toSource(value));
}
var _baseIsNative = baseIsNative;
/**
* Gets the value at `key` of `object`.
*
* @private
* @param {Object} [object] The object to query.
* @param {string} key The key of the property to get.
* @returns {*} Returns the property value.
*/
function getValue(object, key) {
return object == null ? undefined : object[key];
}
var _getValue = getValue;
/**
* Gets the native function at `key` of `object`.
*
* @private
* @param {Object} object The object to query.
* @param {string} key The key of the method to get.
* @returns {*} Returns the function if it's native, else `undefined`.
*/
function getNative(object, key) {
var value = _getValue(object, key);
return _baseIsNative(value) ? value : undefined;
}
var _getNative = getNative;
/* Built-in method references that are verified to be native. */
var Map$1 = _getNative(_root, 'Map');
var _Map = Map$1;
/* Built-in method references that are verified to be native. */
var nativeCreate = _getNative(Object, 'create');
var _nativeCreate = nativeCreate;
/**
* Removes all key-value entries from the hash.
*
* @private
* @name clear
* @memberOf Hash
*/
function hashClear() {
this.__data__ = _nativeCreate ? _nativeCreate(null) : {};
this.size = 0;
}
var _hashClear = hashClear;
/**
* Removes `key` and its value from the hash.
*
* @private
* @name delete
* @memberOf Hash
* @param {Object} hash The hash to modify.
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function hashDelete(key) {
var result = this.has(key) && delete this.__data__[key];
this.size -= result ? 1 : 0;
return result;
}
var _hashDelete = hashDelete;
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED$2 = '__lodash_hash_undefined__';
/** Used for built-in method references. */
var objectProto$f = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$d = objectProto$f.hasOwnProperty;
/**
* Gets the hash value for `key`.
*
* @private
* @name get
* @memberOf Hash
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function hashGet(key) {
var data = this.__data__;
if (_nativeCreate) {
var result = data[key];
return result === HASH_UNDEFINED$2 ? undefined : result;
}
return hasOwnProperty$d.call(data, key) ? data[key] : undefined;
}
var _hashGet = hashGet;
/** Used for built-in method references. */
var objectProto$e = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$c = objectProto$e.hasOwnProperty;
/**
* Checks if a hash value for `key` exists.
*
* @private
* @name has
* @memberOf Hash
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function hashHas(key) {
var data = this.__data__;
return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$c.call(data, key);
}
var _hashHas = hashHas;
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED$1 = '__lodash_hash_undefined__';
/**
* Sets the hash `key` to `value`.
*
* @private
* @name set
* @memberOf Hash
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the hash instance.
*/
function hashSet(key, value) {
var data = this.__data__;
this.size += this.has(key) ? 0 : 1;
data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;
return this;
}
var _hashSet = hashSet;
/**
* Creates a hash object.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function Hash(entries) {
var index = -1,
length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
// Add methods to `Hash`.
Hash.prototype.clear = _hashClear;
Hash.prototype['delete'] = _hashDelete;
Hash.prototype.get = _hashGet;
Hash.prototype.has = _hashHas;
Hash.prototype.set = _hashSet;
var _Hash = Hash;
/**
* Removes all key-value entries from the map.
*
* @private
* @name clear
* @memberOf MapCache
*/
function mapCacheClear() {
this.size = 0;
this.__data__ = {
'hash': new _Hash,
'map': new (_Map || _ListCache),
'string': new _Hash
};
}
var _mapCacheClear = mapCacheClear;
/**
* Checks if `value` is suitable for use as unique object key.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is suitable, else `false`.
*/
function isKeyable(value) {
var type = typeof value;
return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
? (value !== '__proto__')
: (value === null);
}
var _isKeyable = isKeyable;
/**
* Gets the data for `map`.
*
* @private
* @param {Object} map The map to query.
* @param {string} key The reference key.
* @returns {*} Returns the map data.
*/
function getMapData(map, key) {
var data = map.__data__;
return _isKeyable(key)
? data[typeof key == 'string' ? 'string' : 'hash']
: data.map;
}
var _getMapData = getMapData;
/**
* Removes `key` and its value from the map.
*
* @private
* @name delete
* @memberOf MapCache
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function mapCacheDelete(key) {
var result = _getMapData(this, key)['delete'](key);
this.size -= result ? 1 : 0;
return result;
}
var _mapCacheDelete = mapCacheDelete;
/**
* Gets the map value for `key`.
*
* @private
* @name get
* @memberOf MapCache
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function mapCacheGet(key) {
return _getMapData(this, key).get(key);
}
var _mapCacheGet = mapCacheGet;
/**
* Checks if a map value for `key` exists.
*
* @private
* @name has
* @memberOf MapCache
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function mapCacheHas(key) {
return _getMapData(this, key).has(key);
}
var _mapCacheHas = mapCacheHas;
/**
* Sets the map `key` to `value`.
*
* @private
* @name set
* @memberOf MapCache
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the map cache instance.
*/
function mapCacheSet(key, value) {
var data = _getMapData(this, key),
size = data.size;
data.set(key, value);
this.size += data.size == size ? 0 : 1;
return this;
}
var _mapCacheSet = mapCacheSet;
/**
* Creates a map cache object to store key-value pairs.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function MapCache(entries) {
var index = -1,
length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
// Add methods to `MapCache`.
MapCache.prototype.clear = _mapCacheClear;
MapCache.prototype['delete'] = _mapCacheDelete;
MapCache.prototype.get = _mapCacheGet;
MapCache.prototype.has = _mapCacheHas;
MapCache.prototype.set = _mapCacheSet;
var _MapCache = MapCache;
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE$1 = 200;
/**
* Sets the stack `key` to `value`.
*
* @private
* @name set
* @memberOf Stack
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the stack cache instance.
*/
function stackSet(key, value) {
var data = this.__data__;
if (data instanceof _ListCache) {
var pairs = data.__data__;
if (!_Map || (pairs.length < LARGE_ARRAY_SIZE$1 - 1)) {
pairs.push([key, value]);
this.size = ++data.size;
return this;
}
data = this.__data__ = new _MapCache(pairs);
}
data.set(key, value);
this.size = data.size;
return this;
}
var _stackSet = stackSet;
/**
* Creates a stack cache object to store key-value pairs.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function Stack(entries) {
var data = this.__data__ = new _ListCache(entries);
this.size = data.size;
}
// Add methods to `Stack`.
Stack.prototype.clear = _stackClear;
Stack.prototype['delete'] = _stackDelete;
Stack.prototype.get = _stackGet;
Stack.prototype.has = _stackHas;
Stack.prototype.set = _stackSet;
var _Stack = Stack;
/**
* A specialized version of `_.forEach` for arrays without support for
* iteratee shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns `array`.
*/
function arrayEach(array, iteratee) {
var index = -1,
length = array == null ? 0 : array.length;
while (++index < length) {
if (iteratee(array[index], index, array) === false) {
break;
}
}
return array;
}
var _arrayEach = arrayEach;
var defineProperty = (function() {
try {
var func = _getNative(Object, 'defineProperty');
func({}, '', {});
return func;
} catch (e) {}
}());
var _defineProperty = defineProperty;
/**
* The base implementation of `assignValue` and `assignMergeValue` without
* value checks.
*
* @private
* @param {Object} object The object to modify.
* @param {string} key The key of the property to assign.
* @param {*} value The value to assign.
*/
function baseAssignValue(object, key, value) {
if (key == '__proto__' && _defineProperty) {
_defineProperty(object, key, {
'configurable': true,
'enumerable': true,
'value': value,
'writable': true
});
} else {
object[key] = value;
}
}
var _baseAssignValue = baseAssignValue;
/** Used for built-in method references. */
var objectProto$d = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$b = objectProto$d.hasOwnProperty;
/**
* Assigns `value` to `key` of `object` if the existing value is not equivalent
* using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* @private
* @param {Object} object The object to modify.
* @param {string} key The key of the property to assign.
* @param {*} value The value to assign.
*/
function assignValue(object, key, value) {
var objValue = object[key];
if (!(hasOwnProperty$b.call(object, key) && eq_1(objValue, value)) ||
(value === undefined && !(key in object))) {
_baseAssignValue(object, key, value);
}
}
var _assignValue = assignValue;
/**
* Copies properties of `source` to `object`.
*
* @private
* @param {Object} source The object to copy properties from.
* @param {Array} props The property identifiers to copy.
* @param {Object} [object={}] The object to copy properties to.
* @param {Function} [customizer] The function to customize copied values.
* @returns {Object} Returns `object`.
*/
function copyObject(source, props, object, customizer) {
var isNew = !object;
object || (object = {});
var index = -1,
length = props.length;
while (++index < length) {
var key = props[index];
var newValue = customizer
? customizer(object[key], source[key], key, object, source)
: undefined;
if (newValue === undefined) {
newValue = source[key];
}
if (isNew) {
_baseAssignValue(object, key, newValue);
} else {
_assignValue(object, key, newValue);
}
}
return object;
}
var _copyObject = copyObject;
/**
* The base implementation of `_.times` without support for iteratee shorthands
* or max array length checks.
*
* @private
* @param {number} n The number of times to invoke `iteratee`.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the array of results.
*/
function baseTimes(n, iteratee) {
var index = -1,
result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
var _baseTimes = baseTimes;
/**
* Checks if `value` is object-like. A value is object-like if it's not `null`
* and has a `typeof` result of "object".
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
* @example
*
* _.isObjectLike({});
* // => true
*
* _.isObjectLike([1, 2, 3]);
* // => true
*
* _.isObjectLike(_.noop);
* // => false
*
* _.isObjectLike(null);
* // => false
*/
function isObjectLike(value) {
return value != null && typeof value == 'object';
}
var isObjectLike_1 = isObjectLike;
/** `Object#toString` result references. */
var argsTag$3 = '[object Arguments]';
/**
* The base implementation of `_.isArguments`.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an `arguments` object,
*/
function baseIsArguments(value) {
return isObjectLike_1(value) && _baseGetTag(value) == argsTag$3;
}
var _baseIsArguments = baseIsArguments;
/** Used for built-in method references. */
var objectProto$c = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$a = objectProto$c.hasOwnProperty;
/** Built-in value references. */
var propertyIsEnumerable$1 = objectProto$c.propertyIsEnumerable;
/**
* Checks if `value` is likely an `arguments` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an `arguments` object,
* else `false`.
* @example
*
* _.isArguments(function() { return arguments; }());
* // => true
*
* _.isArguments([1, 2, 3]);
* // => false
*/
var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
return isObjectLike_1(value) && hasOwnProperty$a.call(value, 'callee') &&
!propertyIsEnumerable$1.call(value, 'callee');
};
var isArguments_1 = isArguments;
/**
* Checks if `value` is classified as an `Array` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
* @example
*
* _.isArray([1, 2, 3]);
* // => true
*
* _.isArray(document.body.children);
* // => false
*
* _.isArray('abc');
* // => false
*
* _.isArray(_.noop);
* // => false
*/
var isArray = Array.isArray;
var isArray_1 = isArray;
/**
* This method returns `false`.
*
* @static
* @memberOf _
* @since 4.13.0
* @category Util
* @returns {boolean} Returns `false`.
* @example
*
* _.times(2, _.stubFalse);
* // => [false, false]
*/
function stubFalse() {
return false;
}
var stubFalse_1 = stubFalse;
var isBuffer_1 = createCommonjsModule(function (module, exports) {
/** Detect free variable `exports`. */
var freeExports = exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;
/** Built-in value references. */
var Buffer = moduleExports ? _root.Buffer : undefined;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
/**
* Checks if `value` is a buffer.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
* @example
*
* _.isBuffer(new Buffer(2));
* // => true
*
* _.isBuffer(new Uint8Array(2));
* // => false
*/
var isBuffer = nativeIsBuffer || stubFalse_1;
module.exports = isBuffer;
});
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER$1 = 9007199254740991;
/** Used to detect unsigned integer values. */
var reIsUint = /^(?:0|[1-9]\d*)$/;
/**
* Checks if `value` is a valid array-like index.
*
* @private
* @param {*} value The value to check.
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
*/
function isIndex(value, length) {
var type = typeof value;
length = length == null ? MAX_SAFE_INTEGER$1 : length;
return !!length &&
(type == 'number' ||
(type != 'symbol' && reIsUint.test(value))) &&
(value > -1 && value % 1 == 0 && value < length);
}
var _isIndex = isIndex;
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;
/**
* Checks if `value` is a valid array-like length.
*
* **Note:** This method is loosely based on
* [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
* @example
*
* _.isLength(3);
* // => true
*
* _.isLength(Number.MIN_VALUE);
* // => false
*
* _.isLength(Infinity);
* // => false
*
* _.isLength('3');
* // => false
*/
function isLength(value) {
return typeof value == 'number' &&
value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
var isLength_1 = isLength;
/** `Object#toString` result references. */
var argsTag$2 = '[object Arguments]',
arrayTag$2 = '[object Array]',
boolTag$3 = '[object Boolean]',
dateTag$3 = '[object Date]',
errorTag$2 = '[object Error]',
funcTag$1 = '[object Function]',
mapTag$7 = '[object Map]',
numberTag$3 = '[object Number]',
objectTag$4 = '[object Object]',
regexpTag$3 = '[object RegExp]',
setTag$7 = '[object Set]',
stringTag$4 = '[object String]',
weakMapTag$2 = '[object WeakMap]';
var arrayBufferTag$3 = '[object ArrayBuffer]',
dataViewTag$4 = '[object DataView]',
float32Tag$2 = '[object Float32Array]',
float64Tag$2 = '[object Float64Array]',
int8Tag$2 = '[object Int8Array]',
int16Tag$2 = '[object Int16Array]',
int32Tag$2 = '[object Int32Array]',
uint8Tag$2 = '[object Uint8Array]',
uint8ClampedTag$2 = '[object Uint8ClampedArray]',
uint16Tag$2 = '[object Uint16Array]',
uint32Tag$2 = '[object Uint32Array]';
/** Used to identify `toStringTag` values of typed arrays. */
var typedArrayTags = {};
typedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] =
typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] =
typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] =
typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] =
typedArrayTags[uint32Tag$2] = true;
typedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] =
typedArrayTags[arrayBufferTag$3] = typedArrayTags[boolTag$3] =
typedArrayTags[dataViewTag$4] = typedArrayTags[dateTag$3] =
typedArrayTags[errorTag$2] = typedArrayTags[funcTag$1] =
typedArrayTags[mapTag$7] = typedArrayTags[numberTag$3] =
typedArrayTags[objectTag$4] = typedArrayTags[regexpTag$3] =
typedArrayTags[setTag$7] = typedArrayTags[stringTag$4] =
typedArrayTags[weakMapTag$2] = false;
/**
* The base implementation of `_.isTypedArray` without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
*/
function baseIsTypedArray(value) {
return isObjectLike_1(value) &&
isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];
}
var _baseIsTypedArray = baseIsTypedArray;
/**
* The base implementation of `_.unary` without support for storing metadata.
*
* @private
* @param {Function} func The function to cap arguments for.
* @returns {Function} Returns the new capped function.
*/
function baseUnary(func) {
return function(value) {
return func(value);
};
}
var _baseUnary = baseUnary;
var _nodeUtil = createCommonjsModule(function (module, exports) {
/** Detect free variable `exports`. */
var freeExports = exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;
/** Detect free variable `process` from Node.js. */
var freeProcess = moduleExports && _freeGlobal.process;
/** Used to access faster Node.js helpers. */
var nodeUtil = (function() {
try {
// Use `util.types` for Node.js 10+.
var types = freeModule && freeModule.require && freeModule.require('util').types;
if (types) {
return types;
}
// Legacy `process.binding('util')` for Node.js < 10.
return freeProcess && freeProcess.binding && freeProcess.binding('util');
} catch (e) {}
}());
module.exports = nodeUtil;
});
/* Node.js helper references. */
var nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;
/**
* Checks if `value` is classified as a typed array.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
* @example
*
* _.isTypedArray(new Uint8Array);
* // => true
*
* _.isTypedArray([]);
* // => false
*/
var isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;
var isTypedArray_1 = isTypedArray;
/** Used for built-in method references. */
var objectProto$b = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$9 = objectProto$b.hasOwnProperty;
/**
* Creates an array of the enumerable property names of the array-like `value`.
*
* @private
* @param {*} value The value to query.
* @param {boolean} inherited Specify returning inherited property names.
* @returns {Array} Returns the array of property names.
*/
function arrayLikeKeys(value, inherited) {
var isArr = isArray_1(value),
isArg = !isArr && isArguments_1(value),
isBuff = !isArr && !isArg && isBuffer_1(value),
isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),
skipIndexes = isArr || isArg || isBuff || isType,
result = skipIndexes ? _baseTimes(value.length, String) : [],
length = result.length;
for (var key in value) {
if ((inherited || hasOwnProperty$9.call(value, key)) &&
!(skipIndexes && (
// Safari 9 has enumerable `arguments.length` in strict mode.
key == 'length' ||
// Node.js 0.10 has enumerable non-index properties on buffers.
(isBuff && (key == 'offset' || key == 'parent')) ||
// PhantomJS 2 has enumerable non-index properties on typed arrays.
(isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
// Skip index properties.
_isIndex(key, length)
))) {
result.push(key);
}
}
return result;
}
var _arrayLikeKeys = arrayLikeKeys;
/** Used for built-in method references. */
var objectProto$a = Object.prototype;
/**
* Checks if `value` is likely a prototype object.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
*/
function isPrototype(value) {
var Ctor = value && value.constructor,
proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$a;
return value === proto;
}
var _isPrototype = isPrototype;
/**
* Creates a unary function that invokes `func` with its argument transformed.
*
* @private
* @param {Function} func The function to wrap.
* @param {Function} transform The argument transform.
* @returns {Function} Returns the new function.
*/
function overArg(func, transform) {
return function(arg) {
return func(transform(arg));
};
}
var _overArg = overArg;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeKeys = _overArg(Object.keys, Object);
var _nativeKeys = nativeKeys;
/** Used for built-in method references. */
var objectProto$9 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$8 = objectProto$9.hasOwnProperty;
/**
* The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function baseKeys(object) {
if (!_isPrototype(object)) {
return _nativeKeys(object);
}
var result = [];
for (var key in Object(object)) {
if (hasOwnProperty$8.call(object, key) && key != 'constructor') {
result.push(key);
}
}
return result;
}
var _baseKeys = baseKeys;
/**
* Checks if `value` is array-like. A value is considered array-like if it's
* not a function and has a `value.length` that's an integer greater than or
* equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is array-like, else `false`.
* @example
*
* _.isArrayLike([1, 2, 3]);
* // => true
*
* _.isArrayLike(document.body.children);
* // => true
*
* _.isArrayLike('abc');
* // => true
*
* _.isArrayLike(_.noop);
* // => false
*/
function isArrayLike(value) {
return value != null && isLength_1(value.length) && !isFunction_1(value);
}
var isArrayLike_1 = isArrayLike;
/**
* Creates an array of the own enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects. See the
* [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* for more details.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.keys(new Foo);
* // => ['a', 'b'] (iteration order is not guaranteed)
*
* _.keys('hi');
* // => ['0', '1']
*/
function keys(object) {
return isArrayLike_1(object) ? _arrayLikeKeys(object) : _baseKeys(object);
}
var keys_1 = keys;
/**
* The base implementation of `_.assign` without support for multiple sources
* or `customizer` functions.
*
* @private
* @param {Object} object The destination object.
* @param {Object} source The source object.
* @returns {Object} Returns `object`.
*/
function baseAssign(object, source) {
return object && _copyObject(source, keys_1(source), object);
}
var _baseAssign = baseAssign;
/**
* This function is like
* [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* except that it includes inherited enumerable properties.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function nativeKeysIn(object) {
var result = [];
if (object != null) {
for (var key in Object(object)) {
result.push(key);
}
}
return result;
}
var _nativeKeysIn = nativeKeysIn;
/** Used for built-in method references. */
var objectProto$8 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$7 = objectProto$8.hasOwnProperty;
/**
* The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function baseKeysIn(object) {
if (!isObject_1(object)) {
return _nativeKeysIn(object);
}
var isProto = _isPrototype(object),
result = [];
for (var key in object) {
if (!(key == 'constructor' && (isProto || !hasOwnProperty$7.call(object, key)))) {
result.push(key);
}
}
return result;
}
var _baseKeysIn = baseKeysIn;
/**
* Creates an array of the own and inherited enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.keysIn(new Foo);
* // => ['a', 'b', 'c'] (iteration order is not guaranteed)
*/
function keysIn(object) {
return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);
}
var keysIn_1 = keysIn;
/**
* The base implementation of `_.assignIn` without support for multiple sources
* or `customizer` functions.
*
* @private
* @param {Object} object The destination object.
* @param {Object} source The source object.
* @returns {Object} Returns `object`.
*/
function baseAssignIn(object, source) {
return object && _copyObject(source, keysIn_1(source), object);
}
var _baseAssignIn = baseAssignIn;
var _cloneBuffer = createCommonjsModule(function (module, exports) {
/** Detect free variable `exports`. */
var freeExports = exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;
/** Built-in value references. */
var Buffer = moduleExports ? _root.Buffer : undefined,
allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;
/**
* Creates a clone of `buffer`.
*
* @private
* @param {Buffer} buffer The buffer to clone.
* @param {boolean} [isDeep] Specify a deep clone.
* @returns {Buffer} Returns the cloned buffer.
*/
function cloneBuffer(buffer, isDeep) {
if (isDeep) {
return buffer.slice();
}
var length = buffer.length,
result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
buffer.copy(result);
return result;
}
module.exports = cloneBuffer;
});
/**
* Copies the values of `source` to `array`.
*
* @private
* @param {Array} source The array to copy values from.
* @param {Array} [array=[]] The array to copy values to.
* @returns {Array} Returns `array`.
*/
function copyArray(source, array) {
var index = -1,
length = source.length;
array || (array = Array(length));
while (++index < length) {
array[index] = source[index];
}
return array;
}
var _copyArray = copyArray;
/**
* A specialized version of `_.filter` for arrays without support for
* iteratee shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {Array} Returns the new filtered array.
*/
function arrayFilter(array, predicate) {
var index = -1,
length = array == null ? 0 : array.length,
resIndex = 0,
result = [];
while (++index < length) {
var value = array[index];
if (predicate(value, index, array)) {
result[resIndex++] = value;
}
}
return result;
}
var _arrayFilter = arrayFilter;
/**
* This method returns a new empty array.
*
* @static
* @memberOf _
* @since 4.13.0
* @category Util
* @returns {Array} Returns the new empty array.
* @example
*
* var arrays = _.times(2, _.stubArray);
*
* console.log(arrays);
* // => [[], []]
*
* console.log(arrays[0] === arrays[1]);
* // => false
*/
function stubArray() {
return [];
}
var stubArray_1 = stubArray;
/** Used for built-in method references. */
var objectProto$7 = Object.prototype;
/** Built-in value references. */
var propertyIsEnumerable = objectProto$7.propertyIsEnumerable;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeGetSymbols$1 = Object.getOwnPropertySymbols;
/**
* Creates an array of the own enumerable symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of symbols.
*/
var getSymbols = !nativeGetSymbols$1 ? stubArray_1 : function(object) {
if (object == null) {
return [];
}
object = Object(object);
return _arrayFilter(nativeGetSymbols$1(object), function(symbol) {
return propertyIsEnumerable.call(object, symbol);
});
};
var _getSymbols = getSymbols;
/**
* Copies own symbols of `source` to `object`.
*
* @private
* @param {Object} source The object to copy symbols from.
* @param {Object} [object={}] The object to copy symbols to.
* @returns {Object} Returns `object`.
*/
function copySymbols(source, object) {
return _copyObject(source, _getSymbols(source), object);
}
var _copySymbols = copySymbols;
/**
* Appends the elements of `values` to `array`.
*
* @private
* @param {Array} array The array to modify.
* @param {Array} values The values to append.
* @returns {Array} Returns `array`.
*/
function arrayPush(array, values) {
var index = -1,
length = values.length,
offset = array.length;
while (++index < length) {
array[offset + index] = values[index];
}
return array;
}
var _arrayPush = arrayPush;
/** Built-in value references. */
var getPrototype = _overArg(Object.getPrototypeOf, Object);
var _getPrototype = getPrototype;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeGetSymbols = Object.getOwnPropertySymbols;
/**
* Creates an array of the own and inherited enumerable symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of symbols.
*/
var getSymbolsIn = !nativeGetSymbols ? stubArray_1 : function(object) {
var result = [];
while (object) {
_arrayPush(result, _getSymbols(object));
object = _getPrototype(object);
}
return result;
};
var _getSymbolsIn = getSymbolsIn;
/**
* Copies own and inherited symbols of `source` to `object`.
*
* @private
* @param {Object} source The object to copy symbols from.
* @param {Object} [object={}] The object to copy symbols to.
* @returns {Object} Returns `object`.
*/
function copySymbolsIn(source, object) {
return _copyObject(source, _getSymbolsIn(source), object);
}
var _copySymbolsIn = copySymbolsIn;
/**
* The base implementation of `getAllKeys` and `getAllKeysIn` which uses
* `keysFunc` and `symbolsFunc` to get the enumerable property names and
* symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @param {Function} keysFunc The function to get the keys of `object`.
* @param {Function} symbolsFunc The function to get the symbols of `object`.
* @returns {Array} Returns the array of property names and symbols.
*/
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
var result = keysFunc(object);
return isArray_1(object) ? result : _arrayPush(result, symbolsFunc(object));
}
var _baseGetAllKeys = baseGetAllKeys;
/**
* Creates an array of own enumerable property names and symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names and symbols.
*/
function getAllKeys(object) {
return _baseGetAllKeys(object, keys_1, _getSymbols);
}
var _getAllKeys = getAllKeys;
/**
* Creates an array of own and inherited enumerable property names and
* symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names and symbols.
*/
function getAllKeysIn(object) {
return _baseGetAllKeys(object, keysIn_1, _getSymbolsIn);
}
var _getAllKeysIn = getAllKeysIn;
/* Built-in method references that are verified to be native. */
var DataView = _getNative(_root, 'DataView');
var _DataView = DataView;
/* Built-in method references that are verified to be native. */
var Promise$1 = _getNative(_root, 'Promise');
var _Promise = Promise$1;
/* Built-in method references that are verified to be native. */
var Set$1 = _getNative(_root, 'Set');
var _Set = Set$1;
/* Built-in method references that are verified to be native. */
var WeakMap = _getNative(_root, 'WeakMap');
var _WeakMap = WeakMap;
/** `Object#toString` result references. */
var mapTag$6 = '[object Map]',
objectTag$3 = '[object Object]',
promiseTag = '[object Promise]',
setTag$6 = '[object Set]',
weakMapTag$1 = '[object WeakMap]';
var dataViewTag$3 = '[object DataView]';
/** Used to detect maps, sets, and weakmaps. */
var dataViewCtorString = _toSource(_DataView),
mapCtorString = _toSource(_Map),
promiseCtorString = _toSource(_Promise),
setCtorString = _toSource(_Set),
weakMapCtorString = _toSource(_WeakMap);
/**
* Gets the `toStringTag` of `value`.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the `toStringTag`.
*/
var getTag = _baseGetTag;
// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
if ((_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag$3) ||
(_Map && getTag(new _Map) != mapTag$6) ||
(_Promise && getTag(_Promise.resolve()) != promiseTag) ||
(_Set && getTag(new _Set) != setTag$6) ||
(_WeakMap && getTag(new _WeakMap) != weakMapTag$1)) {
getTag = function(value) {
var result = _baseGetTag(value),
Ctor = result == objectTag$3 ? value.constructor : undefined,
ctorString = Ctor ? _toSource(Ctor) : '';
if (ctorString) {
switch (ctorString) {
case dataViewCtorString: return dataViewTag$3;
case mapCtorString: return mapTag$6;
case promiseCtorString: return promiseTag;
case setCtorString: return setTag$6;
case weakMapCtorString: return weakMapTag$1;
}
}
return result;
};
}
var _getTag = getTag;
/** Used for built-in method references. */
var objectProto$6 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
/**
* Initializes an array clone.
*
* @private
* @param {Array} array The array to clone.
* @returns {Array} Returns the initialized clone.
*/
function initCloneArray(array) {
var length = array.length,
result = new array.constructor(length);
// Add properties assigned by `RegExp#exec`.
if (length && typeof array[0] == 'string' && hasOwnProperty$6.call(array, 'index')) {
result.index = array.index;
result.input = array.input;
}
return result;
}
var _initCloneArray = initCloneArray;
/** Built-in value references. */
var Uint8Array$1 = _root.Uint8Array;
var _Uint8Array = Uint8Array$1;
/**
* Creates a clone of `arrayBuffer`.
*
* @private
* @param {ArrayBuffer} arrayBuffer The array buffer to clone.
* @returns {ArrayBuffer} Returns the cloned array buffer.
*/
function cloneArrayBuffer(arrayBuffer) {
var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
new _Uint8Array(result).set(new _Uint8Array(arrayBuffer));
return result;
}
var _cloneArrayBuffer = cloneArrayBuffer;
/**
* Creates a clone of `dataView`.
*
* @private
* @param {Object} dataView The data view to clone.
* @param {boolean} [isDeep] Specify a deep clone.
* @returns {Object} Returns the cloned data view.
*/
function cloneDataView(dataView, isDeep) {
var buffer = isDeep ? _cloneArrayBuffer(dataView.buffer) : dataView.buffer;
return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
}
var _cloneDataView = cloneDataView;
/** Used to match `RegExp` flags from their coerced string values. */
var reFlags = /\w*$/;
/**
* Creates a clone of `regexp`.
*
* @private
* @param {Object} regexp The regexp to clone.
* @returns {Object} Returns the cloned regexp.
*/
function cloneRegExp(regexp) {
var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
result.lastIndex = regexp.lastIndex;
return result;
}
var _cloneRegExp = cloneRegExp;
/** Used to convert symbols to primitives and strings. */
var symbolProto$2 = _Symbol ? _Symbol.prototype : undefined,
symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : undefined;
/**
* Creates a clone of the `symbol` object.
*
* @private
* @param {Object} symbol The symbol object to clone.
* @returns {Object} Returns the cloned symbol object.
*/
function cloneSymbol(symbol) {
return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {};
}
var _cloneSymbol = cloneSymbol;
/**
* Creates a clone of `typedArray`.
*
* @private
* @param {Object} typedArray The typed array to clone.
* @param {boolean} [isDeep] Specify a deep clone.
* @returns {Object} Returns the cloned typed array.
*/
function cloneTypedArray(typedArray, isDeep) {
var buffer = isDeep ? _cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
}
var _cloneTypedArray = cloneTypedArray;
/** `Object#toString` result references. */
var boolTag$2 = '[object Boolean]',
dateTag$2 = '[object Date]',
mapTag$5 = '[object Map]',
numberTag$2 = '[object Number]',
regexpTag$2 = '[object RegExp]',
setTag$5 = '[object Set]',
stringTag$3 = '[object String]',
symbolTag$3 = '[object Symbol]';
var arrayBufferTag$2 = '[object ArrayBuffer]',
dataViewTag$2 = '[object DataView]',
float32Tag$1 = '[object Float32Array]',
float64Tag$1 = '[object Float64Array]',
int8Tag$1 = '[object Int8Array]',
int16Tag$1 = '[object Int16Array]',
int32Tag$1 = '[object Int32Array]',
uint8Tag$1 = '[object Uint8Array]',
uint8ClampedTag$1 = '[object Uint8ClampedArray]',
uint16Tag$1 = '[object Uint16Array]',
uint32Tag$1 = '[object Uint32Array]';
/**
* Initializes an object clone based on its `toStringTag`.
*
* **Note:** This function only supports cloning values with tags of
* `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
*
* @private
* @param {Object} object The object to clone.
* @param {string} tag The `toStringTag` of the object to clone.
* @param {boolean} [isDeep] Specify a deep clone.
* @returns {Object} Returns the initialized clone.
*/
function initCloneByTag(object, tag, isDeep) {
var Ctor = object.constructor;
switch (tag) {
case arrayBufferTag$2:
return _cloneArrayBuffer(object);
case boolTag$2:
case dateTag$2:
return new Ctor(+object);
case dataViewTag$2:
return _cloneDataView(object, isDeep);
case float32Tag$1: case float64Tag$1:
case int8Tag$1: case int16Tag$1: case int32Tag$1:
case uint8Tag$1: case uint8ClampedTag$1: case uint16Tag$1: case uint32Tag$1:
return _cloneTypedArray(object, isDeep);
case mapTag$5:
return new Ctor;
case numberTag$2:
case stringTag$3:
return new Ctor(object);
case regexpTag$2:
return _cloneRegExp(object);
case setTag$5:
return new Ctor;
case symbolTag$3:
return _cloneSymbol(object);
}
}
var _initCloneByTag = initCloneByTag;
/** Built-in value references. */
var objectCreate = Object.create;
/**
* The base implementation of `_.create` without support for assigning
* properties to the created object.
*
* @private
* @param {Object} proto The object to inherit from.
* @returns {Object} Returns the new object.
*/
var baseCreate = (function() {
function object() {}
return function(proto) {
if (!isObject_1(proto)) {
return {};
}
if (objectCreate) {
return objectCreate(proto);
}
object.prototype = proto;
var result = new object;
object.prototype = undefined;
return result;
};
}());
var _baseCreate = baseCreate;
/**
* Initializes an object clone.
*
* @private
* @param {Object} object The object to clone.
* @returns {Object} Returns the initialized clone.
*/
function initCloneObject(object) {
return (typeof object.constructor == 'function' && !_isPrototype(object))
? _baseCreate(_getPrototype(object))
: {};
}
var _initCloneObject = initCloneObject;
/** `Object#toString` result references. */
var mapTag$4 = '[object Map]';
/**
* The base implementation of `_.isMap` without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a map, else `false`.
*/
function baseIsMap(value) {
return isObjectLike_1(value) && _getTag(value) == mapTag$4;
}
var _baseIsMap = baseIsMap;
/* Node.js helper references. */
var nodeIsMap = _nodeUtil && _nodeUtil.isMap;
/**
* Checks if `value` is classified as a `Map` object.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a map, else `false`.
* @example
*
* _.isMap(new Map);
* // => true
*
* _.isMap(new WeakMap);
* // => false
*/
var isMap = nodeIsMap ? _baseUnary(nodeIsMap) : _baseIsMap;
var isMap_1 = isMap;
/** `Object#toString` result references. */
var setTag$4 = '[object Set]';
/**
* The base implementation of `_.isSet` without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a set, else `false`.
*/
function baseIsSet(value) {
return isObjectLike_1(value) && _getTag(value) == setTag$4;
}
var _baseIsSet = baseIsSet;
/* Node.js helper references. */
var nodeIsSet = _nodeUtil && _nodeUtil.isSet;
/**
* Checks if `value` is classified as a `Set` object.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a set, else `false`.
* @example
*
* _.isSet(new Set);
* // => true
*
* _.isSet(new WeakSet);
* // => false
*/
var isSet = nodeIsSet ? _baseUnary(nodeIsSet) : _baseIsSet;
var isSet_1 = isSet;
/** Used to compose bitmasks for cloning. */
var CLONE_DEEP_FLAG$1 = 1,
CLONE_FLAT_FLAG = 2,
CLONE_SYMBOLS_FLAG$2 = 4;
/** `Object#toString` result references. */
var argsTag$1 = '[object Arguments]',
arrayTag$1 = '[object Array]',
boolTag$1 = '[object Boolean]',
dateTag$1 = '[object Date]',
errorTag$1 = '[object Error]',
funcTag = '[object Function]',
genTag = '[object GeneratorFunction]',
mapTag$3 = '[object Map]',
numberTag$1 = '[object Number]',
objectTag$2 = '[object Object]',
regexpTag$1 = '[object RegExp]',
setTag$3 = '[object Set]',
stringTag$2 = '[object String]',
symbolTag$2 = '[object Symbol]',
weakMapTag = '[object WeakMap]';
var arrayBufferTag$1 = '[object ArrayBuffer]',
dataViewTag$1 = '[object DataView]',
float32Tag = '[object Float32Array]',
float64Tag = '[object Float64Array]',
int8Tag = '[object Int8Array]',
int16Tag = '[object Int16Array]',
int32Tag = '[object Int32Array]',
uint8Tag = '[object Uint8Array]',
uint8ClampedTag = '[object Uint8ClampedArray]',
uint16Tag = '[object Uint16Array]',
uint32Tag = '[object Uint32Array]';
/** Used to identify `toStringTag` values supported by `_.clone`. */
var cloneableTags = {};
cloneableTags[argsTag$1] = cloneableTags[arrayTag$1] =
cloneableTags[arrayBufferTag$1] = cloneableTags[dataViewTag$1] =
cloneableTags[boolTag$1] = cloneableTags[dateTag$1] =
cloneableTags[float32Tag] = cloneableTags[float64Tag] =
cloneableTags[int8Tag] = cloneableTags[int16Tag] =
cloneableTags[int32Tag] = cloneableTags[mapTag$3] =
cloneableTags[numberTag$1] = cloneableTags[objectTag$2] =
cloneableTags[regexpTag$1] = cloneableTags[setTag$3] =
cloneableTags[stringTag$2] = cloneableTags[symbolTag$2] =
cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag$1] = cloneableTags[funcTag] =
cloneableTags[weakMapTag] = false;
/**
* The base implementation of `_.clone` and `_.cloneDeep` which tracks
* traversed objects.
*
* @private
* @param {*} value The value to clone.
* @param {boolean} bitmask The bitmask flags.
* 1 - Deep clone
* 2 - Flatten inherited properties
* 4 - Clone symbols
* @param {Function} [customizer] The function to customize cloning.
* @param {string} [key] The key of `value`.
* @param {Object} [object] The parent object of `value`.
* @param {Object} [stack] Tracks traversed objects and their clone counterparts.
* @returns {*} Returns the cloned value.
*/
function baseClone(value, bitmask, customizer, key, object, stack) {
var result,
isDeep = bitmask & CLONE_DEEP_FLAG$1,
isFlat = bitmask & CLONE_FLAT_FLAG,
isFull = bitmask & CLONE_SYMBOLS_FLAG$2;
if (customizer) {
result = object ? customizer(value, key, object, stack) : customizer(value);
}
if (result !== undefined) {
return result;
}
if (!isObject_1(value)) {
return value;
}
var isArr = isArray_1(value);
if (isArr) {
result = _initCloneArray(value);
if (!isDeep) {
return _copyArray(value, result);
}
} else {
var tag = _getTag(value),
isFunc = tag == funcTag || tag == genTag;
if (isBuffer_1(value)) {
return _cloneBuffer(value, isDeep);
}
if (tag == objectTag$2 || tag == argsTag$1 || (isFunc && !object)) {
result = (isFlat || isFunc) ? {} : _initCloneObject(value);
if (!isDeep) {
return isFlat
? _copySymbolsIn(value, _baseAssignIn(result, value))
: _copySymbols(value, _baseAssign(result, value));
}
} else {
if (!cloneableTags[tag]) {
return object ? value : {};
}
result = _initCloneByTag(value, tag, isDeep);
}
}
// Check for circular references and return its corresponding clone.
stack || (stack = new _Stack);
var stacked = stack.get(value);
if (stacked) {
return stacked;
}
stack.set(value, result);
if (isSet_1(value)) {
value.forEach(function(subValue) {
result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
});
} else if (isMap_1(value)) {
value.forEach(function(subValue, key) {
result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
});
}
var keysFunc = isFull
? (isFlat ? _getAllKeysIn : _getAllKeys)
: (isFlat ? keysIn_1 : keys_1);
var props = isArr ? undefined : keysFunc(value);
_arrayEach(props || value, function(subValue, key) {
if (props) {
key = subValue;
subValue = value[key];
}
// Recursively populate clone (susceptible to call stack limits).
_assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
});
return result;
}
var _baseClone = baseClone;
/** Used to compose bitmasks for cloning. */
var CLONE_SYMBOLS_FLAG$1 = 4;
/**
* Creates a shallow clone of `value`.
*
* **Note:** This method is loosely based on the
* [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
* and supports cloning arrays, array buffers, booleans, date objects, maps,
* numbers, `Object` objects, regexes, sets, strings, symbols, and typed
* arrays. The own enumerable properties of `arguments` objects are cloned
* as plain objects. An empty object is returned for uncloneable values such
* as error objects, functions, DOM nodes, and WeakMaps.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to clone.
* @returns {*} Returns the cloned value.
* @see _.cloneDeep
* @example
*
* var objects = [{ 'a': 1 }, { 'b': 2 }];
*
* var shallow = _.clone(objects);
* console.log(shallow[0] === objects[0]);
* // => true
*/
function clone(value) {
return _baseClone(value, CLONE_SYMBOLS_FLAG$1);
}
var clone_1 = clone;
/**
* Creates a function that returns `value`.
*
* @static
* @memberOf _
* @since 2.4.0
* @category Util
* @param {*} value The value to return from the new function.
* @returns {Function} Returns the new constant function.
* @example
*
* var objects = _.times(2, _.constant({ 'a': 1 }));
*
* console.log(objects);
* // => [{ 'a': 1 }, { 'a': 1 }]
*
* console.log(objects[0] === objects[1]);
* // => true
*/
function constant(value) {
return function() {
return value;
};
}
var constant_1 = constant;
/**
* Creates a base function for methods like `_.forIn` and `_.forOwn`.
*
* @private
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {Function} Returns the new base function.
*/
function createBaseFor(fromRight) {
return function(object, iteratee, keysFunc) {
var index = -1,
iterable = Object(object),
props = keysFunc(object),
length = props.length;
while (length--) {
var key = props[fromRight ? length : ++index];
if (iteratee(iterable[key], key, iterable) === false) {
break;
}
}
return object;
};
}
var _createBaseFor = createBaseFor;
/**
* The base implementation of `baseForOwn` which iterates over `object`
* properties returned by `keysFunc` and invokes `iteratee` for each property.
* Iteratee functions may exit iteration early by explicitly returning `false`.
*
* @private
* @param {Object} object The object to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {Function} keysFunc The function to get the keys of `object`.
* @returns {Object} Returns `object`.
*/
var baseFor = _createBaseFor();
var _baseFor = baseFor;
/**
* The base implementation of `_.forOwn` without support for iteratee shorthands.
*
* @private
* @param {Object} object The object to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Object} Returns `object`.
*/
function baseForOwn(object, iteratee) {
return object && _baseFor(object, iteratee, keys_1);
}
var _baseForOwn = baseForOwn;
/**
* Creates a `baseEach` or `baseEachRight` function.
*
* @private
* @param {Function} eachFunc The function to iterate over a collection.
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {Function} Returns the new base function.
*/
function createBaseEach(eachFunc, fromRight) {
return function(collection, iteratee) {
if (collection == null) {
return collection;
}
if (!isArrayLike_1(collection)) {
return eachFunc(collection, iteratee);
}
var length = collection.length,
index = fromRight ? length : -1,
iterable = Object(collection);
while ((fromRight ? index-- : ++index < length)) {
if (iteratee(iterable[index], index, iterable) === false) {
break;
}
}
return collection;
};
}
var _createBaseEach = createBaseEach;
/**
* The base implementation of `_.forEach` without support for iteratee shorthands.
*
* @private
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array|Object} Returns `collection`.
*/
var baseEach = _createBaseEach(_baseForOwn);
var _baseEach = baseEach;
/**
* This method returns the first argument it receives.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Util
* @param {*} value Any value.
* @returns {*} Returns `value`.
* @example
*
* var object = { 'a': 1 };
*
* console.log(_.identity(object) === object);
* // => true
*/
function identity(value) {
return value;
}
var identity_1 = identity;
/**
* Casts `value` to `identity` if it's not a function.
*
* @private
* @param {*} value The value to inspect.
* @returns {Function} Returns cast function.
*/
function castFunction(value) {
return typeof value == 'function' ? value : identity_1;
}
var _castFunction = castFunction;
/**
* Iterates over elements of `collection` and invokes `iteratee` for each element.
* The iteratee is invoked with three arguments: (value, index|key, collection).
* Iteratee functions may exit iteration early by explicitly returning `false`.
*
* **Note:** As with other "Collections" methods, objects with a "length"
* property are iterated like arrays. To avoid this behavior use `_.forIn`
* or `_.forOwn` for object iteration.
*
* @static
* @memberOf _
* @since 0.1.0
* @alias each
* @category Collection
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
* @returns {Array|Object} Returns `collection`.
* @see _.forEachRight
* @example
*
* _.forEach([1, 2], function(value) {
* console.log(value);
* });
* // => Logs `1` then `2`.
*
* _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
* console.log(key);
* });
* // => Logs 'a' then 'b' (iteration order is not guaranteed).
*/
function forEach(collection, iteratee) {
var func = isArray_1(collection) ? _arrayEach : _baseEach;
return func(collection, _castFunction(iteratee));
}
var forEach_1 = forEach;
var each = forEach_1;
/**
* The base implementation of `_.filter` without support for iteratee shorthands.
*
* @private
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {Array} Returns the new filtered array.
*/
function baseFilter(collection, predicate) {
var result = [];
_baseEach(collection, function(value, index, collection) {
if (predicate(value, index, collection)) {
result.push(value);
}
});
return result;
}
var _baseFilter = baseFilter;
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';
/**
* Adds `value` to the array cache.
*
* @private
* @name add
* @memberOf SetCache
* @alias push
* @param {*} value The value to cache.
* @returns {Object} Returns the cache instance.
*/
function setCacheAdd(value) {
this.__data__.set(value, HASH_UNDEFINED);
return this;
}
var _setCacheAdd = setCacheAdd;
/**
* Checks if `value` is in the array cache.
*
* @private
* @name has
* @memberOf SetCache
* @param {*} value The value to search for.
* @returns {number} Returns `true` if `value` is found, else `false`.
*/
function setCacheHas(value) {
return this.__data__.has(value);
}
var _setCacheHas = setCacheHas;
/**
*
* Creates an array cache object to store unique values.
*
* @private
* @constructor
* @param {Array} [values] The values to cache.
*/
function SetCache(values) {
var index = -1,
length = values == null ? 0 : values.length;
this.__data__ = new _MapCache;
while (++index < length) {
this.add(values[index]);
}
}
// Add methods to `SetCache`.
SetCache.prototype.add = SetCache.prototype.push = _setCacheAdd;
SetCache.prototype.has = _setCacheHas;
var _SetCache = SetCache;
/**
* A specialized version of `_.some` for arrays without support for iteratee
* shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {boolean} Returns `true` if any element passes the predicate check,
* else `false`.
*/
function arraySome(array, predicate) {
var index = -1,
length = array == null ? 0 : array.length;
while (++index < length) {
if (predicate(array[index], index, array)) {
return true;
}
}
return false;
}
var _arraySome = arraySome;
/**
* Checks if a `cache` value for `key` exists.
*
* @private
* @param {Object} cache The cache to query.
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function cacheHas(cache, key) {
return cache.has(key);
}
var _cacheHas = cacheHas;
/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG$5 = 1,
COMPARE_UNORDERED_FLAG$3 = 2;
/**
* A specialized version of `baseIsEqualDeep` for arrays with support for
* partial deep comparisons.
*
* @private
* @param {Array} array The array to compare.
* @param {Array} other The other array to compare.
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} stack Tracks traversed `array` and `other` objects.
* @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
*/
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5,
arrLength = array.length,
othLength = other.length;
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
// Check that cyclic values are equal.
var arrStacked = stack.get(array);
var othStacked = stack.get(other);
if (arrStacked && othStacked) {
return arrStacked == other && othStacked == array;
}
var index = -1,
result = true,
seen = (bitmask & COMPARE_UNORDERED_FLAG$3) ? new _SetCache : undefined;
stack.set(array, other);
stack.set(other, array);
// Ignore non-index properties.
while (++index < arrLength) {
var arrValue = array[index],
othValue = other[index];
if (customizer) {
var compared = isPartial
? customizer(othValue, arrValue, index, other, array, stack)
: customizer(arrValue, othValue, index, array, other, stack);
}
if (compared !== undefined) {
if (compared) {
continue;
}
result = false;
break;
}
// Recursively compare arrays (susceptible to call stack limits).
if (seen) {
if (!_arraySome(other, function(othValue, othIndex) {
if (!_cacheHas(seen, othIndex) &&
(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
return seen.push(othIndex);
}
})) {
result = false;
break;
}
} else if (!(
arrValue === othValue ||
equalFunc(arrValue, othValue, bitmask, customizer, stack)
)) {
result = false;
break;
}
}
stack['delete'](array);
stack['delete'](other);
return result;
}
var _equalArrays = equalArrays;
/**
* Converts `map` to its key-value pairs.
*
* @private
* @param {Object} map The map to convert.
* @returns {Array} Returns the key-value pairs.
*/
function mapToArray(map) {
var index = -1,
result = Array(map.size);
map.forEach(function(value, key) {
result[++index] = [key, value];
});
return result;
}
var _mapToArray = mapToArray;
/**
* Converts `set` to an array of its values.
*
* @private
* @param {Object} set The set to convert.
* @returns {Array} Returns the values.
*/
function setToArray(set) {
var index = -1,
result = Array(set.size);
set.forEach(function(value) {
result[++index] = value;
});
return result;
}
var _setToArray = setToArray;
/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG$4 = 1,
COMPARE_UNORDERED_FLAG$2 = 2;
/** `Object#toString` result references. */
var boolTag = '[object Boolean]',
dateTag = '[object Date]',
errorTag = '[object Error]',
mapTag$2 = '[object Map]',
numberTag = '[object Number]',
regexpTag = '[object RegExp]',
setTag$2 = '[object Set]',
stringTag$1 = '[object String]',
symbolTag$1 = '[object Symbol]';
var arrayBufferTag = '[object ArrayBuffer]',
dataViewTag = '[object DataView]';
/** Used to convert symbols to primitives and strings. */
var symbolProto$1 = _Symbol ? _Symbol.prototype : undefined,
symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : undefined;
/**
* A specialized version of `baseIsEqualDeep` for comparing objects of
* the same `toStringTag`.
*
* **Note:** This function only supports comparing values with tags of
* `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {string} tag The `toStringTag` of the objects to compare.
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} stack Tracks traversed `object` and `other` objects.
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
*/
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
switch (tag) {
case dataViewTag:
if ((object.byteLength != other.byteLength) ||
(object.byteOffset != other.byteOffset)) {
return false;
}
object = object.buffer;
other = other.buffer;
case arrayBufferTag:
if ((object.byteLength != other.byteLength) ||
!equalFunc(new _Uint8Array(object), new _Uint8Array(other))) {
return false;
}
return true;
case boolTag:
case dateTag:
case numberTag:
// Coerce booleans to `1` or `0` and dates to milliseconds.
// Invalid dates are coerced to `NaN`.
return eq_1(+object, +other);
case errorTag:
return object.name == other.name && object.message == other.message;
case regexpTag:
case stringTag$1:
// Coerce regexes to strings and treat strings, primitives and objects,
// as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
// for more details.
return object == (other + '');
case mapTag$2:
var convert = _mapToArray;
case setTag$2:
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4;
convert || (convert = _setToArray);
if (object.size != other.size && !isPartial) {
return false;
}
// Assume cyclic values are equal.
var stacked = stack.get(object);
if (stacked) {
return stacked == other;
}
bitmask |= COMPARE_UNORDERED_FLAG$2;
// Recursively compare objects (susceptible to call stack limits).
stack.set(object, other);
var result = _equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
stack['delete'](object);
return result;
case symbolTag$1:
if (symbolValueOf) {
return symbolValueOf.call(object) == symbolValueOf.call(other);
}
}
return false;
}
var _equalByTag = equalByTag;
/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG$3 = 1;
/** Used for built-in method references. */
var objectProto$5 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
/**
* A specialized version of `baseIsEqualDeep` for objects with support for
* partial deep comparisons.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} stack Tracks traversed `object` and `other` objects.
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
*/
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3,
objProps = _getAllKeys(object),
objLength = objProps.length,
othProps = _getAllKeys(other),
othLength = othProps.length;
if (objLength != othLength && !isPartial) {
return false;
}
var index = objLength;
while (index--) {
var key = objProps[index];
if (!(isPartial ? key in other : hasOwnProperty$5.call(other, key))) {
return false;
}
}
// Check that cyclic values are equal.
var objStacked = stack.get(object);
var othStacked = stack.get(other);
if (objStacked && othStacked) {
return objStacked == other && othStacked == object;
}
var result = true;
stack.set(object, other);
stack.set(other, object);
var skipCtor = isPartial;
while (++index < objLength) {
key = objProps[index];
var objValue = object[key],
othValue = other[key];
if (customizer) {
var compared = isPartial
? customizer(othValue, objValue, key, other, object, stack)
: customizer(objValue, othValue, key, object, other, stack);
}
// Recursively compare objects (susceptible to call stack limits).
if (!(compared === undefined
? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
: compared
)) {
result = false;
break;
}
skipCtor || (skipCtor = key == 'constructor');
}
if (result && !skipCtor) {
var objCtor = object.constructor,
othCtor = other.constructor;
// Non `Object` object instances with different constructors are not equal.
if (objCtor != othCtor &&
('constructor' in object && 'constructor' in other) &&
!(typeof objCtor == 'function' && objCtor instanceof objCtor &&
typeof othCtor == 'function' && othCtor instanceof othCtor)) {
result = false;
}
}
stack['delete'](object);
stack['delete'](other);
return result;
}
var _equalObjects = equalObjects;
/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG$2 = 1;
/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
arrayTag = '[object Array]',
objectTag$1 = '[object Object]';
/** Used for built-in method references. */
var objectProto$4 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
/**
* A specialized version of `baseIsEqual` for arrays and objects which performs
* deep comparisons and tracks traversed objects enabling objects with circular
* references to be compared.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} [stack] Tracks traversed `object` and `other` objects.
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
*/
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
var objIsArr = isArray_1(object),
othIsArr = isArray_1(other),
objTag = objIsArr ? arrayTag : _getTag(object),
othTag = othIsArr ? arrayTag : _getTag(other);
objTag = objTag == argsTag ? objectTag$1 : objTag;
othTag = othTag == argsTag ? objectTag$1 : othTag;
var objIsObj = objTag == objectTag$1,
othIsObj = othTag == objectTag$1,
isSameTag = objTag == othTag;
if (isSameTag && isBuffer_1(object)) {
if (!isBuffer_1(other)) {
return false;
}
objIsArr = true;
objIsObj = false;
}
if (isSameTag && !objIsObj) {
stack || (stack = new _Stack);
return (objIsArr || isTypedArray_1(object))
? _equalArrays(object, other, bitmask, customizer, equalFunc, stack)
: _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
}
if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
var objIsWrapped = objIsObj && hasOwnProperty$4.call(object, '__wrapped__'),
othIsWrapped = othIsObj && hasOwnProperty$4.call(other, '__wrapped__');
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object.value() : object,
othUnwrapped = othIsWrapped ? other.value() : other;
stack || (stack = new _Stack);
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
}
}
if (!isSameTag) {
return false;
}
stack || (stack = new _Stack);
return _equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}
var _baseIsEqualDeep = baseIsEqualDeep;
/**
* The base implementation of `_.isEqual` which supports partial comparisons
* and tracks traversed objects.
*
* @private
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @param {boolean} bitmask The bitmask flags.
* 1 - Unordered comparison
* 2 - Partial comparison
* @param {Function} [customizer] The function to customize comparisons.
* @param {Object} [stack] Tracks traversed `value` and `other` objects.
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
*/
function baseIsEqual(value, other, bitmask, customizer, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || (!isObjectLike_1(value) && !isObjectLike_1(other))) {
return value !== value && other !== other;
}
return _baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}
var _baseIsEqual = baseIsEqual;
/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG$1 = 1,
COMPARE_UNORDERED_FLAG$1 = 2;
/**
* The base implementation of `_.isMatch` without support for iteratee shorthands.
*
* @private
* @param {Object} object The object to inspect.
* @param {Object} source The object of property values to match.
* @param {Array} matchData The property names, values, and compare flags to match.
* @param {Function} [customizer] The function to customize comparisons.
* @returns {boolean} Returns `true` if `object` is a match, else `false`.
*/
function baseIsMatch(object, source, matchData, customizer) {
var index = matchData.length,
length = index,
noCustomizer = !customizer;
if (object == null) {
return !length;
}
object = Object(object);
while (index--) {
var data = matchData[index];
if ((noCustomizer && data[2])
? data[1] !== object[data[0]]
: !(data[0] in object)
) {
return false;
}
}
while (++index < length) {
data = matchData[index];
var key = data[0],
objValue = object[key],
srcValue = data[1];
if (noCustomizer && data[2]) {
if (objValue === undefined && !(key in object)) {
return false;
}
} else {
var stack = new _Stack;
if (customizer) {
var result = customizer(objValue, srcValue, key, object, source, stack);
}
if (!(result === undefined
? _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack)
: result
)) {
return false;
}
}
}
return true;
}
var _baseIsMatch = baseIsMatch;
/**
* Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` if suitable for strict
* equality comparisons, else `false`.
*/
function isStrictComparable(value) {
return value === value && !isObject_1(value);
}
var _isStrictComparable = isStrictComparable;
/**
* Gets the property names, values, and compare flags of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the match data of `object`.
*/
function getMatchData(object) {
var result = keys_1(object),
length = result.length;
while (length--) {
var key = result[length],
value = object[key];
result[length] = [key, value, _isStrictComparable(value)];
}
return result;
}
var _getMatchData = getMatchData;
/**
* A specialized version of `matchesProperty` for source values suitable
* for strict equality comparisons, i.e. `===`.
*
* @private
* @param {string} key The key of the property to get.
* @param {*} srcValue The value to match.
* @returns {Function} Returns the new spec function.
*/
function matchesStrictComparable(key, srcValue) {
return function(object) {
if (object == null) {
return false;
}
return object[key] === srcValue &&
(srcValue !== undefined || (key in Object(object)));
};
}
var _matchesStrictComparable = matchesStrictComparable;
/**
* The base implementation of `_.matches` which doesn't clone `source`.
*
* @private
* @param {Object} source The object of property values to match.
* @returns {Function} Returns the new spec function.
*/
function baseMatches(source) {
var matchData = _getMatchData(source);
if (matchData.length == 1 && matchData[0][2]) {
return _matchesStrictComparable(matchData[0][0], matchData[0][1]);
}
return function(object) {
return object === source || _baseIsMatch(object, source, matchData);
};
}
var _baseMatches = baseMatches;
/** `Object#toString` result references. */
var symbolTag = '[object Symbol]';
/**
* Checks if `value` is classified as a `Symbol` primitive or object.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
* @example
*
* _.isSymbol(Symbol.iterator);
* // => true
*
* _.isSymbol('abc');
* // => false
*/
function isSymbol(value) {
return typeof value == 'symbol' ||
(isObjectLike_1(value) && _baseGetTag(value) == symbolTag);
}
var isSymbol_1 = isSymbol;
/** Used to match property names within property paths. */
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
reIsPlainProp = /^\w*$/;
/**
* Checks if `value` is a property name and not a property path.
*
* @private
* @param {*} value The value to check.
* @param {Object} [object] The object to query keys on.
* @returns {boolean} Returns `true` if `value` is a property name, else `false`.
*/
function isKey(value, object) {
if (isArray_1(value)) {
return false;
}
var type = typeof value;
if (type == 'number' || type == 'symbol' || type == 'boolean' ||
value == null || isSymbol_1(value)) {
return true;
}
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
(object != null && value in Object(object));
}
var _isKey = isKey;
/** Error message constants. */
var FUNC_ERROR_TEXT = 'Expected a function';
/**
* Creates a function that memoizes the result of `func`. If `resolver` is
* provided, it determines the cache key for storing the result based on the
* arguments provided to the memoized function. By default, the first argument
* provided to the memoized function is used as the map cache key. The `func`
* is invoked with the `this` binding of the memoized function.
*
* **Note:** The cache is exposed as the `cache` property on the memoized
* function. Its creation may be customized by replacing the `_.memoize.Cache`
* constructor with one whose instances implement the
* [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
* method interface of `clear`, `delete`, `get`, `has`, and `set`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Function
* @param {Function} func The function to have its output memoized.
* @param {Function} [resolver] The function to resolve the cache key.
* @returns {Function} Returns the new memoized function.
* @example
*
* var object = { 'a': 1, 'b': 2 };
* var other = { 'c': 3, 'd': 4 };
*
* var values = _.memoize(_.values);
* values(object);
* // => [1, 2]
*
* values(other);
* // => [3, 4]
*
* object.a = 2;
* values(object);
* // => [1, 2]
*
* // Modify the result cache.
* values.cache.set(object, ['a', 'b']);
* values(object);
* // => ['a', 'b']
*
* // Replace `_.memoize.Cache`.
* _.memoize.Cache = WeakMap;
*/
function memoize(func, resolver) {
if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
throw new TypeError(FUNC_ERROR_TEXT);
}
var memoized = function() {
var args = arguments,
key = resolver ? resolver.apply(this, args) : args[0],
cache = memoized.cache;
if (cache.has(key)) {
return cache.get(key);
}
var result = func.apply(this, args);
memoized.cache = cache.set(key, result) || cache;
return result;
};
memoized.cache = new (memoize.Cache || _MapCache);
return memoized;
}
// Expose `MapCache`.
memoize.Cache = _MapCache;
var memoize_1 = memoize;
/** Used as the maximum memoize cache size. */
var MAX_MEMOIZE_SIZE = 500;
/**
* A specialized version of `_.memoize` which clears the memoized function's
* cache when it exceeds `MAX_MEMOIZE_SIZE`.
*
* @private
* @param {Function} func The function to have its output memoized.
* @returns {Function} Returns the new memoized function.
*/
function memoizeCapped(func) {
var result = memoize_1(func, function(key) {
if (cache.size === MAX_MEMOIZE_SIZE) {
cache.clear();
}
return key;
});
var cache = result.cache;
return result;
}
var _memoizeCapped = memoizeCapped;
/** Used to match property names within property paths. */
var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
/** Used to match backslashes in property paths. */
var reEscapeChar = /\\(\\)?/g;
/**
* Converts `string` to a property path array.
*
* @private
* @param {string} string The string to convert.
* @returns {Array} Returns the property path array.
*/
var stringToPath = _memoizeCapped(function(string) {
var result = [];
if (string.charCodeAt(0) === 46 /* . */) {
result.push('');
}
string.replace(rePropName, function(match, number, quote, subString) {
result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
});
return result;
});
var _stringToPath = stringToPath;
/**
* A specialized version of `_.map` for arrays without support for iteratee
* shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
*/
function arrayMap(array, iteratee) {
var index = -1,
length = array == null ? 0 : array.length,
result = Array(length);
while (++index < length) {
result[index] = iteratee(array[index], index, array);
}
return result;
}
var _arrayMap = arrayMap;
/** Used as references for various `Number` constants. */
var INFINITY$3 = 1 / 0;
/** Used to convert symbols to primitives and strings. */
var symbolProto = _Symbol ? _Symbol.prototype : undefined,
symbolToString = symbolProto ? symbolProto.toString : undefined;
/**
* The base implementation of `_.toString` which doesn't convert nullish
* values to empty strings.
*
* @private
* @param {*} value The value to process.
* @returns {string} Returns the string.
*/
function baseToString(value) {
// Exit early for strings to avoid a performance hit in some environments.
if (typeof value == 'string') {
return value;
}
if (isArray_1(value)) {
// Recursively convert values (susceptible to call stack limits).
return _arrayMap(value, baseToString) + '';
}
if (isSymbol_1(value)) {
return symbolToString ? symbolToString.call(value) : '';
}
var result = (value + '');
return (result == '0' && (1 / value) == -INFINITY$3) ? '-0' : result;
}
var _baseToString = baseToString;
/**
* Converts `value` to a string. An empty string is returned for `null`
* and `undefined` values. The sign of `-0` is preserved.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to convert.
* @returns {string} Returns the converted string.
* @example
*
* _.toString(null);
* // => ''
*
* _.toString(-0);
* // => '-0'
*
* _.toString([1, 2, 3]);
* // => '1,2,3'
*/
function toString(value) {
return value == null ? '' : _baseToString(value);
}
var toString_1 = toString;
/**
* Casts `value` to a path array if it's not one.
*
* @private
* @param {*} value The value to inspect.
* @param {Object} [object] The object to query keys on.
* @returns {Array} Returns the cast property path array.
*/
function castPath(value, object) {
if (isArray_1(value)) {
return value;
}
return _isKey(value, object) ? [value] : _stringToPath(toString_1(value));
}
var _castPath = castPath;
/** Used as references for various `Number` constants. */
var INFINITY$2 = 1 / 0;
/**
* Converts `value` to a string key if it's not a string or symbol.
*
* @private
* @param {*} value The value to inspect.
* @returns {string|symbol} Returns the key.
*/
function toKey(value) {
if (typeof value == 'string' || isSymbol_1(value)) {
return value;
}
var result = (value + '');
return (result == '0' && (1 / value) == -INFINITY$2) ? '-0' : result;
}
var _toKey = toKey;
/**
* The base implementation of `_.get` without support for default values.
*
* @private
* @param {Object} object The object to query.
* @param {Array|string} path The path of the property to get.
* @returns {*} Returns the resolved value.
*/
function baseGet(object, path) {
path = _castPath(path, object);
var index = 0,
length = path.length;
while (object != null && index < length) {
object = object[_toKey(path[index++])];
}
return (index && index == length) ? object : undefined;
}
var _baseGet = baseGet;
/**
* Gets the value at `path` of `object`. If the resolved value is
* `undefined`, the `defaultValue` is returned in its place.
*
* @static
* @memberOf _
* @since 3.7.0
* @category Object
* @param {Object} object The object to query.
* @param {Array|string} path The path of the property to get.
* @param {*} [defaultValue] The value returned for `undefined` resolved values.
* @returns {*} Returns the resolved value.
* @example
*
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
*
* _.get(object, 'a[0].b.c');
* // => 3
*
* _.get(object, ['a', '0', 'b', 'c']);
* // => 3
*
* _.get(object, 'a.b.c', 'default');
* // => 'default'
*/
function get(object, path, defaultValue) {
var result = object == null ? undefined : _baseGet(object, path);
return result === undefined ? defaultValue : result;
}
var get_1 = get;
/**
* The base implementation of `_.hasIn` without support for deep paths.
*
* @private
* @param {Object} [object] The object to query.
* @param {Array|string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
function baseHasIn(object, key) {
return object != null && key in Object(object);
}
var _baseHasIn = baseHasIn;
/**
* Checks if `path` exists on `object`.
*
* @private
* @param {Object} object The object to query.
* @param {Array|string} path The path to check.
* @param {Function} hasFunc The function to check properties.
* @returns {boolean} Returns `true` if `path` exists, else `false`.
*/
function hasPath(object, path, hasFunc) {
path = _castPath(path, object);
var index = -1,
length = path.length,
result = false;
while (++index < length) {
var key = _toKey(path[index]);
if (!(result = object != null && hasFunc(object, key))) {
break;
}
object = object[key];
}
if (result || ++index != length) {
return result;
}
length = object == null ? 0 : object.length;
return !!length && isLength_1(length) && _isIndex(key, length) &&
(isArray_1(object) || isArguments_1(object));
}
var _hasPath = hasPath;
/**
* Checks if `path` is a direct or inherited property of `object`.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Object
* @param {Object} object The object to query.
* @param {Array|string} path The path to check.
* @returns {boolean} Returns `true` if `path` exists, else `false`.
* @example
*
* var object = _.create({ 'a': _.create({ 'b': 2 }) });
*
* _.hasIn(object, 'a');
* // => true
*
* _.hasIn(object, 'a.b');
* // => true
*
* _.hasIn(object, ['a', 'b']);
* // => true
*
* _.hasIn(object, 'b');
* // => false
*/
function hasIn(object, path) {
return object != null && _hasPath(object, path, _baseHasIn);
}
var hasIn_1 = hasIn;
/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
COMPARE_UNORDERED_FLAG = 2;
/**
* The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
*
* @private
* @param {string} path The path of the property to get.
* @param {*} srcValue The value to match.
* @returns {Function} Returns the new spec function.
*/
function baseMatchesProperty(path, srcValue) {
if (_isKey(path) && _isStrictComparable(srcValue)) {
return _matchesStrictComparable(_toKey(path), srcValue);
}
return function(object) {
var objValue = get_1(object, path);
return (objValue === undefined && objValue === srcValue)
? hasIn_1(object, path)
: _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
};
}
var _baseMatchesProperty = baseMatchesProperty;
/**
* The base implementation of `_.property` without support for deep paths.
*
* @private
* @param {string} key The key of the property to get.
* @returns {Function} Returns the new accessor function.
*/
function baseProperty(key) {
return function(object) {
return object == null ? undefined : object[key];
};
}
var _baseProperty = baseProperty;
/**
* A specialized version of `baseProperty` which supports deep paths.
*
* @private
* @param {Array|string} path The path of the property to get.
* @returns {Function} Returns the new accessor function.
*/
function basePropertyDeep(path) {
return function(object) {
return _baseGet(object, path);
};
}
var _basePropertyDeep = basePropertyDeep;
/**
* Creates a function that returns the value at `path` of a given object.
*
* @static
* @memberOf _
* @since 2.4.0
* @category Util
* @param {Array|string} path The path of the property to get.
* @returns {Function} Returns the new accessor function.
* @example
*
* var objects = [
* { 'a': { 'b': 2 } },
* { 'a': { 'b': 1 } }
* ];
*
* _.map(objects, _.property('a.b'));
* // => [2, 1]
*
* _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
* // => [1, 2]
*/
function property(path) {
return _isKey(path) ? _baseProperty(_toKey(path)) : _basePropertyDeep(path);
}
var property_1 = property;
/**
* The base implementation of `_.iteratee`.
*
* @private
* @param {*} [value=_.identity] The value to convert to an iteratee.
* @returns {Function} Returns the iteratee.
*/
function baseIteratee(value) {
// Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
// See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
if (typeof value == 'function') {
return value;
}
if (value == null) {
return identity_1;
}
if (typeof value == 'object') {
return isArray_1(value)
? _baseMatchesProperty(value[0], value[1])
: _baseMatches(value);
}
return property_1(value);
}
var _baseIteratee = baseIteratee;
/**
* Iterates over elements of `collection`, returning an array of all elements
* `predicate` returns truthy for. The predicate is invoked with three
* arguments: (value, index|key, collection).
*
* **Note:** Unlike `_.remove`, this method returns a new array.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Collection
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} [predicate=_.identity] The function invoked per iteration.
* @returns {Array} Returns the new filtered array.
* @see _.reject
* @example
*
* var users = [
* { 'user': 'barney', 'age': 36, 'active': true },
* { 'user': 'fred', 'age': 40, 'active': false }
* ];
*
* _.filter(users, function(o) { return !o.active; });
* // => objects for ['fred']
*
* // The `_.matches` iteratee shorthand.
* _.filter(users, { 'age': 36, 'active': true });
* // => objects for ['barney']
*
* // The `_.matchesProperty` iteratee shorthand.
* _.filter(users, ['active', false]);
* // => objects for ['fred']
*
* // The `_.property` iteratee shorthand.
* _.filter(users, 'active');
* // => objects for ['barney']
*
* // Combining several predicates using `_.overEvery` or `_.overSome`.
* _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
* // => objects for ['fred', 'barney']
*/
function filter(collection, predicate) {
var func = isArray_1(collection) ? _arrayFilter : _baseFilter;
return func(collection, _baseIteratee(predicate));
}
var filter_1 = filter;
/** Used for built-in method references. */
var objectProto$3 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$3 = objectProto$3.hasOwnProperty;
/**
* The base implementation of `_.has` without support for deep paths.
*
* @private
* @param {Object} [object] The object to query.
* @param {Array|string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
function baseHas(object, key) {
return object != null && hasOwnProperty$3.call(object, key);
}
var _baseHas = baseHas;
/**
* Checks if `path` is a direct property of `object`.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The object to query.
* @param {Array|string} path The path to check.
* @returns {boolean} Returns `true` if `path` exists, else `false`.
* @example
*
* var object = { 'a': { 'b': 2 } };
* var other = _.create({ 'a': _.create({ 'b': 2 }) });
*
* _.has(object, 'a');
* // => true
*
* _.has(object, 'a.b');
* // => true
*
* _.has(object, ['a', 'b']);
* // => true
*
* _.has(other, 'a');
* // => false
*/
function has(object, path) {
return object != null && _hasPath(object, path, _baseHas);
}
var has_1 = has;
/** `Object#toString` result references. */
var mapTag$1 = '[object Map]',
setTag$1 = '[object Set]';
/** Used for built-in method references. */
var objectProto$2 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$2 = objectProto$2.hasOwnProperty;
/**
* Checks if `value` is an empty object, collection, map, or set.
*
* Objects are considered empty if they have no own enumerable string keyed
* properties.
*
* Array-like values such as `arguments` objects, arrays, buffers, strings, or
* jQuery-like collections are considered empty if they have a `length` of `0`.
* Similarly, maps and sets are considered empty if they have a `size` of `0`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is empty, else `false`.
* @example
*
* _.isEmpty(null);
* // => true
*
* _.isEmpty(true);
* // => true
*
* _.isEmpty(1);
* // => true
*
* _.isEmpty([1, 2, 3]);
* // => false
*
* _.isEmpty({ 'a': 1 });
* // => false
*/
function isEmpty(value) {
if (value == null) {
return true;
}
if (isArrayLike_1(value) &&
(isArray_1(value) || typeof value == 'string' || typeof value.splice == 'function' ||
isBuffer_1(value) || isTypedArray_1(value) || isArguments_1(value))) {
return !value.length;
}
var tag = _getTag(value);
if (tag == mapTag$1 || tag == setTag$1) {
return !value.size;
}
if (_isPrototype(value)) {
return !_baseKeys(value).length;
}
for (var key in value) {
if (hasOwnProperty$2.call(value, key)) {
return false;
}
}
return true;
}
var isEmpty_1 = isEmpty;
/**
* Checks if `value` is `undefined`.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
* @example
*
* _.isUndefined(void 0);
* // => true
*
* _.isUndefined(null);
* // => false
*/
function isUndefined(value) {
return value === undefined;
}
var isUndefined_1 = isUndefined;
/**
* The base implementation of `_.map` without support for iteratee shorthands.
*
* @private
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
*/
function baseMap(collection, iteratee) {
var index = -1,
result = isArrayLike_1(collection) ? Array(collection.length) : [];
_baseEach(collection, function(value, key, collection) {
result[++index] = iteratee(value, key, collection);
});
return result;
}
var _baseMap = baseMap;
/**
* Creates an array of values by running each element in `collection` thru
* `iteratee`. The iteratee is invoked with three arguments:
* (value, index|key, collection).
*
* Many lodash methods are guarded to work as iteratees for methods like
* `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
*
* The guarded methods are:
* `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
* `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
* `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
* `template`, `trim`, `trimEnd`, `trimStart`, and `words`
*
* @static
* @memberOf _
* @since 0.1.0
* @category Collection
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
* @example
*
* function square(n) {
* return n * n;
* }
*
* _.map([4, 8], square);
* // => [16, 64]
*
* _.map({ 'a': 4, 'b': 8 }, square);
* // => [16, 64] (iteration order is not guaranteed)
*
* var users = [
* { 'user': 'barney' },
* { 'user': 'fred' }
* ];
*
* // The `_.property` iteratee shorthand.
* _.map(users, 'user');
* // => ['barney', 'fred']
*/
function map(collection, iteratee) {
var func = isArray_1(collection) ? _arrayMap : _baseMap;
return func(collection, _baseIteratee(iteratee));
}
var map_1 = map;
/**
* A specialized version of `_.reduce` for arrays without support for
* iteratee shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {*} [accumulator] The initial value.
* @param {boolean} [initAccum] Specify using the first element of `array` as
* the initial value.
* @returns {*} Returns the accumulated value.
*/
function arrayReduce(array, iteratee, accumulator, initAccum) {
var index = -1,
length = array == null ? 0 : array.length;
if (initAccum && length) {
accumulator = array[++index];
}
while (++index < length) {
accumulator = iteratee(accumulator, array[index], index, array);
}
return accumulator;
}
var _arrayReduce = arrayReduce;
/**
* The base implementation of `_.reduce` and `_.reduceRight`, without support
* for iteratee shorthands, which iterates over `collection` using `eachFunc`.
*
* @private
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {*} accumulator The initial value.
* @param {boolean} initAccum Specify using the first or last element of
* `collection` as the initial value.
* @param {Function} eachFunc The function to iterate over `collection`.
* @returns {*} Returns the accumulated value.
*/
function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
eachFunc(collection, function(value, index, collection) {
accumulator = initAccum
? (initAccum = false, value)
: iteratee(accumulator, value, index, collection);
});
return accumulator;
}
var _baseReduce = baseReduce;
/**
* Reduces `collection` to a value which is the accumulated result of running
* each element in `collection` thru `iteratee`, where each successive
* invocation is supplied the return value of the previous. If `accumulator`
* is not given, the first element of `collection` is used as the initial
* value. The iteratee is invoked with four arguments:
* (accumulator, value, index|key, collection).
*
* Many lodash methods are guarded to work as iteratees for methods like
* `_.reduce`, `_.reduceRight`, and `_.transform`.
*
* The guarded methods are:
* `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
* and `sortBy`
*
* @static
* @memberOf _
* @since 0.1.0
* @category Collection
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
* @param {*} [accumulator] The initial value.
* @returns {*} Returns the accumulated value.
* @see _.reduceRight
* @example
*
* _.reduce([1, 2], function(sum, n) {
* return sum + n;
* }, 0);
* // => 3
*
* _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
* (result[value] || (result[value] = [])).push(key);
* return result;
* }, {});
* // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
*/
function reduce(collection, iteratee, accumulator) {
var func = isArray_1(collection) ? _arrayReduce : _baseReduce,
initAccum = arguments.length < 3;
return func(collection, _baseIteratee(iteratee), accumulator, initAccum, _baseEach);
}
var reduce_1 = reduce;
/** `Object#toString` result references. */
var stringTag = '[object String]';
/**
* Checks if `value` is classified as a `String` primitive or object.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a string, else `false`.
* @example
*
* _.isString('abc');
* // => true
*
* _.isString(1);
* // => false
*/
function isString(value) {
return typeof value == 'string' ||
(!isArray_1(value) && isObjectLike_1(value) && _baseGetTag(value) == stringTag);
}
var isString_1 = isString;
/**
* Gets the size of an ASCII `string`.
*
* @private
* @param {string} string The string inspect.
* @returns {number} Returns the string size.
*/
var asciiSize = _baseProperty('length');
var _asciiSize = asciiSize;
/** Used to compose unicode character classes. */
var rsAstralRange$1 = '\\ud800-\\udfff',
rsComboMarksRange$1 = '\\u0300-\\u036f',
reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f',
rsComboSymbolsRange$1 = '\\u20d0-\\u20ff',
rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1,
rsVarRange$1 = '\\ufe0e\\ufe0f';
/** Used to compose unicode capture groups. */
var rsZWJ$1 = '\\u200d';
/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
var reHasUnicode = RegExp('[' + rsZWJ$1 + rsAstralRange$1 + rsComboRange$1 + rsVarRange$1 + ']');
/**
* Checks if `string` contains Unicode symbols.
*
* @private
* @param {string} string The string to inspect.
* @returns {boolean} Returns `true` if a symbol is found, else `false`.
*/
function hasUnicode(string) {
return reHasUnicode.test(string);
}
var _hasUnicode = hasUnicode;
/** Used to compose unicode character classes. */
var rsAstralRange = '\\ud800-\\udfff',
rsComboMarksRange = '\\u0300-\\u036f',
reComboHalfMarksRange = '\\ufe20-\\ufe2f',
rsComboSymbolsRange = '\\u20d0-\\u20ff',
rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
rsVarRange = '\\ufe0e\\ufe0f';
/** Used to compose unicode capture groups. */
var rsAstral = '[' + rsAstralRange + ']',
rsCombo = '[' + rsComboRange + ']',
rsFitz = '\\ud83c[\\udffb-\\udfff]',
rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
rsNonAstral = '[^' + rsAstralRange + ']',
rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
rsZWJ = '\\u200d';
/** Used to compose unicode regexes. */
var reOptMod = rsModifier + '?',
rsOptVar = '[' + rsVarRange + ']?',
rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
rsSeq = rsOptVar + reOptMod + rsOptJoin,
rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
/**
* Gets the size of a Unicode `string`.
*
* @private
* @param {string} string The string inspect.
* @returns {number} Returns the string size.
*/
function unicodeSize(string) {
var result = reUnicode.lastIndex = 0;
while (reUnicode.test(string)) {
++result;
}
return result;
}
var _unicodeSize = unicodeSize;
/**
* Gets the number of symbols in `string`.
*
* @private
* @param {string} string The string to inspect.
* @returns {number} Returns the string size.
*/
function stringSize(string) {
return _hasUnicode(string)
? _unicodeSize(string)
: _asciiSize(string);
}
var _stringSize = stringSize;
/** `Object#toString` result references. */
var mapTag = '[object Map]',
setTag = '[object Set]';
/**
* Gets the size of `collection` by returning its length for array-like
* values or the number of own enumerable string keyed properties for objects.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Collection
* @param {Array|Object|string} collection The collection to inspect.
* @returns {number} Returns the collection size.
* @example
*
* _.size([1, 2, 3]);
* // => 3
*
* _.size({ 'a': 1, 'b': 2 });
* // => 2
*
* _.size('pebbles');
* // => 7
*/
function size(collection) {
if (collection == null) {
return 0;
}
if (isArrayLike_1(collection)) {
return isString_1(collection) ? _stringSize(collection) : collection.length;
}
var tag = _getTag(collection);
if (tag == mapTag || tag == setTag) {
return collection.size;
}
return _baseKeys(collection).length;
}
var size_1 = size;
/**
* An alternative to `_.reduce`; this method transforms `object` to a new
* `accumulator` object which is the result of running each of its own
* enumerable string keyed properties thru `iteratee`, with each invocation
* potentially mutating the `accumulator` object. If `accumulator` is not
* provided, a new object with the same `[[Prototype]]` will be used. The
* iteratee is invoked with four arguments: (accumulator, value, key, object).
* Iteratee functions may exit iteration early by explicitly returning `false`.
*
* @static
* @memberOf _
* @since 1.3.0
* @category Object
* @param {Object} object The object to iterate over.
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
* @param {*} [accumulator] The custom accumulator value.
* @returns {*} Returns the accumulated value.
* @example
*
* _.transform([2, 3, 4], function(result, n) {
* result.push(n *= n);
* return n % 2 == 0;
* }, []);
* // => [4, 9]
*
* _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
* (result[value] || (result[value] = [])).push(key);
* }, {});
* // => { '1': ['a', 'c'], '2': ['b'] }
*/
function transform(object, iteratee, accumulator) {
var isArr = isArray_1(object),
isArrLike = isArr || isBuffer_1(object) || isTypedArray_1(object);
iteratee = _baseIteratee(iteratee);
if (accumulator == null) {
var Ctor = object && object.constructor;
if (isArrLike) {
accumulator = isArr ? new Ctor : [];
}
else if (isObject_1(object)) {
accumulator = isFunction_1(Ctor) ? _baseCreate(_getPrototype(object)) : {};
}
else {
accumulator = {};
}
}
(isArrLike ? _arrayEach : _baseForOwn)(object, function(value, index, object) {
return iteratee(accumulator, value, index, object);
});
return accumulator;
}
var transform_1 = transform;
/** Built-in value references. */
var spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined;
/**
* Checks if `value` is a flattenable `arguments` object or array.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
*/
function isFlattenable(value) {
return isArray_1(value) || isArguments_1(value) ||
!!(spreadableSymbol && value && value[spreadableSymbol]);
}
var _isFlattenable = isFlattenable;
/**
* The base implementation of `_.flatten` with support for restricting flattening.
*
* @private
* @param {Array} array The array to flatten.
* @param {number} depth The maximum recursion depth.
* @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
* @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
* @param {Array} [result=[]] The initial result value.
* @returns {Array} Returns the new flattened array.
*/
function baseFlatten(array, depth, predicate, isStrict, result) {
var index = -1,
length = array.length;
predicate || (predicate = _isFlattenable);
result || (result = []);
while (++index < length) {
var value = array[index];
if (depth > 0 && predicate(value)) {
if (depth > 1) {
// Recursively flatten arrays (susceptible to call stack limits).
baseFlatten(value, depth - 1, predicate, isStrict, result);
} else {
_arrayPush(result, value);
}
} else if (!isStrict) {
result[result.length] = value;
}
}
return result;
}
var _baseFlatten = baseFlatten;
/**
* A faster alternative to `Function#apply`, this function invokes `func`
* with the `this` binding of `thisArg` and the arguments of `args`.
*
* @private
* @param {Function} func The function to invoke.
* @param {*} thisArg The `this` binding of `func`.
* @param {Array} args The arguments to invoke `func` with.
* @returns {*} Returns the result of `func`.
*/
function apply(func, thisArg, args) {
switch (args.length) {
case 0: return func.call(thisArg);
case 1: return func.call(thisArg, args[0]);
case 2: return func.call(thisArg, args[0], args[1]);
case 3: return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
var _apply = apply;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMax$2 = Math.max;
/**
* A specialized version of `baseRest` which transforms the rest array.
*
* @private
* @param {Function} func The function to apply a rest parameter to.
* @param {number} [start=func.length-1] The start position of the rest parameter.
* @param {Function} transform The rest array transform.
* @returns {Function} Returns the new function.
*/
function overRest(func, start, transform) {
start = nativeMax$2(start === undefined ? (func.length - 1) : start, 0);
return function() {
var args = arguments,
index = -1,
length = nativeMax$2(args.length - start, 0),
array = Array(length);
while (++index < length) {
array[index] = args[start + index];
}
index = -1;
var otherArgs = Array(start + 1);
while (++index < start) {
otherArgs[index] = args[index];
}
otherArgs[start] = transform(array);
return _apply(func, this, otherArgs);
};
}
var _overRest = overRest;
/**
* The base implementation of `setToString` without support for hot loop shorting.
*
* @private
* @param {Function} func The function to modify.
* @param {Function} string The `toString` result.
* @returns {Function} Returns `func`.
*/
var baseSetToString = !_defineProperty ? identity_1 : function(func, string) {
return _defineProperty(func, 'toString', {
'configurable': true,
'enumerable': false,
'value': constant_1(string),
'writable': true
});
};
var _baseSetToString = baseSetToString;
/** Used to detect hot functions by number of calls within a span of milliseconds. */
var HOT_COUNT = 800,
HOT_SPAN = 16;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeNow = Date.now;
/**
* Creates a function that'll short out and invoke `identity` instead
* of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
* milliseconds.
*
* @private
* @param {Function} func The function to restrict.
* @returns {Function} Returns the new shortable function.
*/
function shortOut(func) {
var count = 0,
lastCalled = 0;
return function() {
var stamp = nativeNow(),
remaining = HOT_SPAN - (stamp - lastCalled);
lastCalled = stamp;
if (remaining > 0) {
if (++count >= HOT_COUNT) {
return arguments[0];
}
} else {
count = 0;
}
return func.apply(undefined, arguments);
};
}
var _shortOut = shortOut;
/**
* Sets the `toString` method of `func` to return `string`.
*
* @private
* @param {Function} func The function to modify.
* @param {Function} string The `toString` result.
* @returns {Function} Returns `func`.
*/
var setToString = _shortOut(_baseSetToString);
var _setToString = setToString;
/**
* The base implementation of `_.rest` which doesn't validate or coerce arguments.
*
* @private
* @param {Function} func The function to apply a rest parameter to.
* @param {number} [start=func.length-1] The start position of the rest parameter.
* @returns {Function} Returns the new function.
*/
function baseRest(func, start) {
return _setToString(_overRest(func, start, identity_1), func + '');
}
var _baseRest = baseRest;
/**
* The base implementation of `_.findIndex` and `_.findLastIndex` without
* support for iteratee shorthands.
*
* @private
* @param {Array} array The array to inspect.
* @param {Function} predicate The function invoked per iteration.
* @param {number} fromIndex The index to search from.
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
function baseFindIndex(array, predicate, fromIndex, fromRight) {
var length = array.length,
index = fromIndex + (fromRight ? 1 : -1);
while ((fromRight ? index-- : ++index < length)) {
if (predicate(array[index], index, array)) {
return index;
}
}
return -1;
}
var _baseFindIndex = baseFindIndex;
/**
* The base implementation of `_.isNaN` without support for number objects.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
*/
function baseIsNaN(value) {
return value !== value;
}
var _baseIsNaN = baseIsNaN;
/**
* A specialized version of `_.indexOf` which performs strict equality
* comparisons of values, i.e. `===`.
*
* @private
* @param {Array} array The array to inspect.
* @param {*} value The value to search for.
* @param {number} fromIndex The index to search from.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
function strictIndexOf(array, value, fromIndex) {
var index = fromIndex - 1,
length = array.length;
while (++index < length) {
if (array[index] === value) {
return index;
}
}
return -1;
}
var _strictIndexOf = strictIndexOf;
/**
* The base implementation of `_.indexOf` without `fromIndex` bounds checks.
*
* @private
* @param {Array} array The array to inspect.
* @param {*} value The value to search for.
* @param {number} fromIndex The index to search from.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
function baseIndexOf(array, value, fromIndex) {
return value === value
? _strictIndexOf(array, value, fromIndex)
: _baseFindIndex(array, _baseIsNaN, fromIndex);
}
var _baseIndexOf = baseIndexOf;
/**
* A specialized version of `_.includes` for arrays without support for
* specifying an index to search from.
*
* @private
* @param {Array} [array] The array to inspect.
* @param {*} target The value to search for.
* @returns {boolean} Returns `true` if `target` is found, else `false`.
*/
function arrayIncludes(array, value) {
var length = array == null ? 0 : array.length;
return !!length && _baseIndexOf(array, value, 0) > -1;
}
var _arrayIncludes = arrayIncludes;
/**
* This function is like `arrayIncludes` except that it accepts a comparator.
*
* @private
* @param {Array} [array] The array to inspect.
* @param {*} target The value to search for.
* @param {Function} comparator The comparator invoked per element.
* @returns {boolean} Returns `true` if `target` is found, else `false`.
*/
function arrayIncludesWith(array, value, comparator) {
var index = -1,
length = array == null ? 0 : array.length;
while (++index < length) {
if (comparator(value, array[index])) {
return true;
}
}
return false;
}
var _arrayIncludesWith = arrayIncludesWith;
/**
* This method returns `undefined`.
*
* @static
* @memberOf _
* @since 2.3.0
* @category Util
* @example
*
* _.times(2, _.noop);
* // => [undefined, undefined]
*/
function noop() {
// No operation performed.
}
var noop_1 = noop;
/** Used as references for various `Number` constants. */
var INFINITY$1 = 1 / 0;
/**
* Creates a set object of `values`.
*
* @private
* @param {Array} values The values to add to the set.
* @returns {Object} Returns the new set.
*/
var createSet = !(_Set && (1 / _setToArray(new _Set([,-0]))[1]) == INFINITY$1) ? noop_1 : function(values) {
return new _Set(values);
};
var _createSet = createSet;
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
/**
* The base implementation of `_.uniqBy` without support for iteratee shorthands.
*
* @private
* @param {Array} array The array to inspect.
* @param {Function} [iteratee] The iteratee invoked per element.
* @param {Function} [comparator] The comparator invoked per element.
* @returns {Array} Returns the new duplicate free array.
*/
function baseUniq(array, iteratee, comparator) {
var index = -1,
includes = _arrayIncludes,
length = array.length,
isCommon = true,
result = [],
seen = result;
if (comparator) {
isCommon = false;
includes = _arrayIncludesWith;
}
else if (length >= LARGE_ARRAY_SIZE) {
var set = iteratee ? null : _createSet(array);
if (set) {
return _setToArray(set);
}
isCommon = false;
includes = _cacheHas;
seen = new _SetCache;
}
else {
seen = iteratee ? [] : result;
}
outer:
while (++index < length) {
var value = array[index],
computed = iteratee ? iteratee(value) : value;
value = (comparator || value !== 0) ? value : 0;
if (isCommon && computed === computed) {
var seenIndex = seen.length;
while (seenIndex--) {
if (seen[seenIndex] === computed) {
continue outer;
}
}
if (iteratee) {
seen.push(computed);
}
result.push(value);
}
else if (!includes(seen, computed, comparator)) {
if (seen !== result) {
seen.push(computed);
}
result.push(value);
}
}
return result;
}
var _baseUniq = baseUniq;
/**
* This method is like `_.isArrayLike` except that it also checks if `value`
* is an object.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an array-like object,
* else `false`.
* @example
*
* _.isArrayLikeObject([1, 2, 3]);
* // => true
*
* _.isArrayLikeObject(document.body.children);
* // => true
*
* _.isArrayLikeObject('abc');
* // => false
*
* _.isArrayLikeObject(_.noop);
* // => false
*/
function isArrayLikeObject(value) {
return isObjectLike_1(value) && isArrayLike_1(value);
}
var isArrayLikeObject_1 = isArrayLikeObject;
/**
* Creates an array of unique values, in order, from all given arrays using
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Array
* @param {...Array} [arrays] The arrays to inspect.
* @returns {Array} Returns the new array of combined values.
* @example
*
* _.union([2], [1, 2]);
* // => [2, 1]
*/
var union = _baseRest(function(arrays) {
return _baseUniq(_baseFlatten(arrays, 1, isArrayLikeObject_1, true));
});
var union_1 = union;
/**
* The base implementation of `_.values` and `_.valuesIn` which creates an
* array of `object` property values corresponding to the property names
* of `props`.
*
* @private
* @param {Object} object The object to query.
* @param {Array} props The property names to get values for.
* @returns {Object} Returns the array of property values.
*/
function baseValues(object, props) {
return _arrayMap(props, function(key) {
return object[key];
});
}
var _baseValues = baseValues;
/**
* Creates an array of the own enumerable string keyed property values of `object`.
*
* **Note:** Non-object values are coerced to objects.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property values.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.values(new Foo);
* // => [1, 2] (iteration order is not guaranteed)
*
* _.values('hi');
* // => ['h', 'i']
*/
function values(object) {
return object == null ? [] : _baseValues(object, keys_1(object));
}
var values_1 = values;
/* global window */
var lodash$1;
if (typeof commonjsRequire === "function") {
try {
lodash$1 = {
clone: clone_1,
constant: constant_1,
each: each,
filter: filter_1,
has: has_1,
isArray: isArray_1,
isEmpty: isEmpty_1,
isFunction: isFunction_1,
isUndefined: isUndefined_1,
keys: keys_1,
map: map_1,
reduce: reduce_1,
size: size_1,
transform: transform_1,
union: union_1,
values: values_1
};
} catch (e) {
// continue regardless of error
}
}
if (!lodash$1) {
lodash$1 = window._;
}
var lodash_1$1 = lodash$1;
var graph = Graph$8;
var DEFAULT_EDGE_NAME = "\x00";
var GRAPH_NODE = "\x00";
var EDGE_KEY_DELIM = "\x01";
// Implementation notes:
//
// * Node id query functions should return string ids for the nodes
// * Edge id query functions should return an "edgeObj", edge object, that is
// composed of enough information to uniquely identify an edge: {v, w, name}.
// * Internally we use an "edgeId", a stringified form of the edgeObj, to
// reference edges. This is because we need a performant way to look these
// edges up and, object properties, which have string keys, are the closest
// we're going to get to a performant hashtable in JavaScript.
function Graph$8(opts) {
this._isDirected = lodash_1$1.has(opts, "directed") ? opts.directed : true;
this._isMultigraph = lodash_1$1.has(opts, "multigraph") ? opts.multigraph : false;
this._isCompound = lodash_1$1.has(opts, "compound") ? opts.compound : false;
// Label for the graph itself
this._label = undefined;
// Defaults to be set when creating a new node
this._defaultNodeLabelFn = lodash_1$1.constant(undefined);
// Defaults to be set when creating a new edge
this._defaultEdgeLabelFn = lodash_1$1.constant(undefined);
// v -> label
this._nodes = {};
if (this._isCompound) {
// v -> parent
this._parent = {};
// v -> children
this._children = {};
this._children[GRAPH_NODE] = {};
}
// v -> edgeObj
this._in = {};
// u -> v -> Number
this._preds = {};
// v -> edgeObj
this._out = {};
// v -> w -> Number
this._sucs = {};
// e -> edgeObj
this._edgeObjs = {};
// e -> label
this._edgeLabels = {};
}
/* Number of nodes in the graph. Should only be changed by the implementation. */
Graph$8.prototype._nodeCount = 0;
/* Number of edges in the graph. Should only be changed by the implementation. */
Graph$8.prototype._edgeCount = 0;
/* === Graph functions ========= */
Graph$8.prototype.isDirected = function() {
return this._isDirected;
};
Graph$8.prototype.isMultigraph = function() {
return this._isMultigraph;
};
Graph$8.prototype.isCompound = function() {
return this._isCompound;
};
Graph$8.prototype.setGraph = function(label) {
this._label = label;
return this;
};
Graph$8.prototype.graph = function() {
return this._label;
};
/* === Node functions ========== */
Graph$8.prototype.setDefaultNodeLabel = function(newDefault) {
if (!lodash_1$1.isFunction(newDefault)) {
newDefault = lodash_1$1.constant(newDefault);
}
this._defaultNodeLabelFn = newDefault;
return this;
};
Graph$8.prototype.nodeCount = function() {
return this._nodeCount;
};
Graph$8.prototype.nodes = function() {
return lodash_1$1.keys(this._nodes);
};
Graph$8.prototype.sources = function() {
var self = this;
return lodash_1$1.filter(this.nodes(), function(v) {
return lodash_1$1.isEmpty(self._in[v]);
});
};
Graph$8.prototype.sinks = function() {
var self = this;
return lodash_1$1.filter(this.nodes(), function(v) {
return lodash_1$1.isEmpty(self._out[v]);
});
};
Graph$8.prototype.setNodes = function(vs, value) {
var args = arguments;
var self = this;
lodash_1$1.each(vs, function(v) {
if (args.length > 1) {
self.setNode(v, value);
} else {
self.setNode(v);
}
});
return this;
};
Graph$8.prototype.setNode = function(v, value) {
if (lodash_1$1.has(this._nodes, v)) {
if (arguments.length > 1) {
this._nodes[v] = value;
}
return this;
}
this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);
if (this._isCompound) {
this._parent[v] = GRAPH_NODE;
this._children[v] = {};
this._children[GRAPH_NODE][v] = true;
}
this._in[v] = {};
this._preds[v] = {};
this._out[v] = {};
this._sucs[v] = {};
++this._nodeCount;
return this;
};
Graph$8.prototype.node = function(v) {
return this._nodes[v];
};
Graph$8.prototype.hasNode = function(v) {
return lodash_1$1.has(this._nodes, v);
};
Graph$8.prototype.removeNode = function(v) {
var self = this;
if (lodash_1$1.has(this._nodes, v)) {
var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); };
delete this._nodes[v];
if (this._isCompound) {
this._removeFromParentsChildList(v);
delete this._parent[v];
lodash_1$1.each(this.children(v), function(child) {
self.setParent(child);
});
delete this._children[v];
}
lodash_1$1.each(lodash_1$1.keys(this._in[v]), removeEdge);
delete this._in[v];
delete this._preds[v];
lodash_1$1.each(lodash_1$1.keys(this._out[v]), removeEdge);
delete this._out[v];
delete this._sucs[v];
--this._nodeCount;
}
return this;
};
Graph$8.prototype.setParent = function(v, parent) {
if (!this._isCompound) {
throw new Error("Cannot set parent in a non-compound graph");
}
if (lodash_1$1.isUndefined(parent)) {
parent = GRAPH_NODE;
} else {
// Coerce parent to string
parent += "";
for (var ancestor = parent;
!lodash_1$1.isUndefined(ancestor);
ancestor = this.parent(ancestor)) {
if (ancestor === v) {
throw new Error("Setting " + parent+ " as parent of " + v +
" would create a cycle");
}
}
this.setNode(parent);
}
this.setNode(v);
this._removeFromParentsChildList(v);
this._parent[v] = parent;
this._children[parent][v] = true;
return this;
};
Graph$8.prototype._removeFromParentsChildList = function(v) {
delete this._children[this._parent[v]][v];
};
Graph$8.prototype.parent = function(v) {
if (this._isCompound) {
var parent = this._parent[v];
if (parent !== GRAPH_NODE) {
return parent;
}
}
};
Graph$8.prototype.children = function(v) {
if (lodash_1$1.isUndefined(v)) {
v = GRAPH_NODE;
}
if (this._isCompound) {
var children = this._children[v];
if (children) {
return lodash_1$1.keys(children);
}
} else if (v === GRAPH_NODE) {
return this.nodes();
} else if (this.hasNode(v)) {
return [];
}
};
Graph$8.prototype.predecessors = function(v) {
var predsV = this._preds[v];
if (predsV) {
return lodash_1$1.keys(predsV);
}
};
Graph$8.prototype.successors = function(v) {
var sucsV = this._sucs[v];
if (sucsV) {
return lodash_1$1.keys(sucsV);
}
};
Graph$8.prototype.neighbors = function(v) {
var preds = this.predecessors(v);
if (preds) {
return lodash_1$1.union(preds, this.successors(v));
}
};
Graph$8.prototype.isLeaf = function (v) {
var neighbors;
if (this.isDirected()) {
neighbors = this.successors(v);
} else {
neighbors = this.neighbors(v);
}
return neighbors.length === 0;
};
Graph$8.prototype.filterNodes = function(filter) {
var copy = new this.constructor({
directed: this._isDirected,
multigraph: this._isMultigraph,
compound: this._isCompound
});
copy.setGraph(this.graph());
var self = this;
lodash_1$1.each(this._nodes, function(value, v) {
if (filter(v)) {
copy.setNode(v, value);
}
});
lodash_1$1.each(this._edgeObjs, function(e) {
if (copy.hasNode(e.v) && copy.hasNode(e.w)) {
copy.setEdge(e, self.edge(e));
}
});
var parents = {};
function findParent(v) {
var parent = self.parent(v);
if (parent === undefined || copy.hasNode(parent)) {
parents[v] = parent;
return parent;
} else if (parent in parents) {
return parents[parent];
} else {
return findParent(parent);
}
}
if (this._isCompound) {
lodash_1$1.each(copy.nodes(), function(v) {
copy.setParent(v, findParent(v));
});
}
return copy;
};
/* === Edge functions ========== */
Graph$8.prototype.setDefaultEdgeLabel = function(newDefault) {
if (!lodash_1$1.isFunction(newDefault)) {
newDefault = lodash_1$1.constant(newDefault);
}
this._defaultEdgeLabelFn = newDefault;
return this;
};
Graph$8.prototype.edgeCount = function() {
return this._edgeCount;
};
Graph$8.prototype.edges = function() {
return lodash_1$1.values(this._edgeObjs);
};
Graph$8.prototype.setPath = function(vs, value) {
var self = this;
var args = arguments;
lodash_1$1.reduce(vs, function(v, w) {
if (args.length > 1) {
self.setEdge(v, w, value);
} else {
self.setEdge(v, w);
}
return w;
});
return this;
};
/*
* setEdge(v, w, [value, [name]])
* setEdge({ v, w, [name] }, [value])
*/
Graph$8.prototype.setEdge = function() {
var v, w, name, value;
var valueSpecified = false;
var arg0 = arguments[0];
if (typeof arg0 === "object" && arg0 !== null && "v" in arg0) {
v = arg0.v;
w = arg0.w;
name = arg0.name;
if (arguments.length === 2) {
value = arguments[1];
valueSpecified = true;
}
} else {
v = arg0;
w = arguments[1];
name = arguments[3];
if (arguments.length > 2) {
value = arguments[2];
valueSpecified = true;
}
}
v = "" + v;
w = "" + w;
if (!lodash_1$1.isUndefined(name)) {
name = "" + name;
}
var e = edgeArgsToId(this._isDirected, v, w, name);
if (lodash_1$1.has(this._edgeLabels, e)) {
if (valueSpecified) {
this._edgeLabels[e] = value;
}
return this;
}
if (!lodash_1$1.isUndefined(name) && !this._isMultigraph) {
throw new Error("Cannot set a named edge when isMultigraph = false");
}
// It didn't exist, so we need to create it.
// First ensure the nodes exist.
this.setNode(v);
this.setNode(w);
this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);
var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);
// Ensure we add undirected edges in a consistent way.
v = edgeObj.v;
w = edgeObj.w;
Object.freeze(edgeObj);
this._edgeObjs[e] = edgeObj;
incrementOrInitEntry(this._preds[w], v);
incrementOrInitEntry(this._sucs[v], w);
this._in[w][e] = edgeObj;
this._out[v][e] = edgeObj;
this._edgeCount++;
return this;
};
Graph$8.prototype.edge = function(v, w, name) {
var e = (arguments.length === 1
? edgeObjToId(this._isDirected, arguments[0])
: edgeArgsToId(this._isDirected, v, w, name));
return this._edgeLabels[e];
};
Graph$8.prototype.hasEdge = function(v, w, name) {
var e = (arguments.length === 1
? edgeObjToId(this._isDirected, arguments[0])
: edgeArgsToId(this._isDirected, v, w, name));
return lodash_1$1.has(this._edgeLabels, e);
};
Graph$8.prototype.removeEdge = function(v, w, name) {
var e = (arguments.length === 1
? edgeObjToId(this._isDirected, arguments[0])
: edgeArgsToId(this._isDirected, v, w, name));
var edge = this._edgeObjs[e];
if (edge) {
v = edge.v;
w = edge.w;
delete this._edgeLabels[e];
delete this._edgeObjs[e];
decrementOrRemoveEntry(this._preds[w], v);
decrementOrRemoveEntry(this._sucs[v], w);
delete this._in[w][e];
delete this._out[v][e];
this._edgeCount--;
}
return this;
};
Graph$8.prototype.inEdges = function(v, u) {
var inV = this._in[v];
if (inV) {
var edges = lodash_1$1.values(inV);
if (!u) {
return edges;
}
return lodash_1$1.filter(edges, function(edge) { return edge.v === u; });
}
};
Graph$8.prototype.outEdges = function(v, w) {
var outV = this._out[v];
if (outV) {
var edges = lodash_1$1.values(outV);
if (!w) {
return edges;
}
return lodash_1$1.filter(edges, function(edge) { return edge.w === w; });
}
};
Graph$8.prototype.nodeEdges = function(v, w) {
var inEdges = this.inEdges(v, w);
if (inEdges) {
return inEdges.concat(this.outEdges(v, w));
}
};
function incrementOrInitEntry(map, k) {
if (map[k]) {
map[k]++;
} else {
map[k] = 1;
}
}
function decrementOrRemoveEntry(map, k) {
if (!--map[k]) { delete map[k]; }
}
function edgeArgsToId(isDirected, v_, w_, name) {
var v = "" + v_;
var w = "" + w_;
if (!isDirected && v > w) {
var tmp = v;
v = w;
w = tmp;
}
return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +
(lodash_1$1.isUndefined(name) ? DEFAULT_EDGE_NAME : name);
}
function edgeArgsToObj(isDirected, v_, w_, name) {
var v = "" + v_;
var w = "" + w_;
if (!isDirected && v > w) {
var tmp = v;
v = w;
w = tmp;
}
var edgeObj = { v: v, w: w };
if (name) {
edgeObj.name = name;
}
return edgeObj;
}
function edgeObjToId(isDirected, edgeObj) {
return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);
}
var version$1 = '2.1.8';
// Includes only the "core" of graphlib
var lib = {
Graph: graph,
version: version$1
};
var json = {
write: write,
read: read
};
function write(g) {
var json = {
options: {
directed: g.isDirected(),
multigraph: g.isMultigraph(),
compound: g.isCompound()
},
nodes: writeNodes(g),
edges: writeEdges(g)
};
if (!lodash_1$1.isUndefined(g.graph())) {
json.value = lodash_1$1.clone(g.graph());
}
return json;
}
function writeNodes(g) {
return lodash_1$1.map(g.nodes(), function(v) {
var nodeValue = g.node(v);
var parent = g.parent(v);
var node = { v: v };
if (!lodash_1$1.isUndefined(nodeValue)) {
node.value = nodeValue;
}
if (!lodash_1$1.isUndefined(parent)) {
node.parent = parent;
}
return node;
});
}
function writeEdges(g) {
return lodash_1$1.map(g.edges(), function(e) {
var edgeValue = g.edge(e);
var edge = { v: e.v, w: e.w };
if (!lodash_1$1.isUndefined(e.name)) {
edge.name = e.name;
}
if (!lodash_1$1.isUndefined(edgeValue)) {
edge.value = edgeValue;
}
return edge;
});
}
function read(json) {
var g = new graph(json.options).setGraph(json.value);
lodash_1$1.each(json.nodes, function(entry) {
g.setNode(entry.v, entry.value);
if (entry.parent) {
g.setParent(entry.v, entry.parent);
}
});
lodash_1$1.each(json.edges, function(entry) {
g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);
});
return g;
}
var components_1 = components;
function components(g) {
var visited = {};
var cmpts = [];
var cmpt;
function dfs(v) {
if (lodash_1$1.has(visited, v)) return;
visited[v] = true;
cmpt.push(v);
lodash_1$1.each(g.successors(v), dfs);
lodash_1$1.each(g.predecessors(v), dfs);
}
lodash_1$1.each(g.nodes(), function(v) {
cmpt = [];
dfs(v);
if (cmpt.length) {
cmpts.push(cmpt);
}
});
return cmpts;
}
var priorityQueue = PriorityQueue;
/**
* A min-priority queue data structure. This algorithm is derived from Cormen,
* et al., "Introduction to Algorithms". The basic idea of a min-priority
* queue is that you can efficiently (in O(1) time) get the smallest key in
* the queue. Adding and removing elements takes O(log n) time. A key can
* have its priority decreased in O(log n) time.
*/
function PriorityQueue() {
this._arr = [];
this._keyIndices = {};
}
/**
* Returns the number of elements in the queue. Takes `O(1)` time.
*/
PriorityQueue.prototype.size = function() {
return this._arr.length;
};
/**
* Returns the keys that are in the queue. Takes `O(n)` time.
*/
PriorityQueue.prototype.keys = function() {
return this._arr.map(function(x) { return x.key; });
};
/**
* Returns `true` if **key** is in the queue and `false` if not.
*/
PriorityQueue.prototype.has = function(key) {
return lodash_1$1.has(this._keyIndices, key);
};
/**
* Returns the priority for **key**. If **key** is not present in the queue
* then this function returns `undefined`. Takes `O(1)` time.
*
* @param {Object} key
*/
PriorityQueue.prototype.priority = function(key) {
var index = this._keyIndices[key];
if (index !== undefined) {
return this._arr[index].priority;
}
};
/**
* Returns the key for the minimum element in this queue. If the queue is
* empty this function throws an Error. Takes `O(1)` time.
*/
PriorityQueue.prototype.min = function() {
if (this.size() === 0) {
throw new Error("Queue underflow");
}
return this._arr[0].key;
};
/**
* Inserts a new key into the priority queue. If the key already exists in
* the queue this function returns `false`; otherwise it will return `true`.
* Takes `O(n)` time.
*
* @param {Object} key the key to add
* @param {Number} priority the initial priority for the key
*/
PriorityQueue.prototype.add = function(key, priority) {
var keyIndices = this._keyIndices;
key = String(key);
if (!lodash_1$1.has(keyIndices, key)) {
var arr = this._arr;
var index = arr.length;
keyIndices[key] = index;
arr.push({key: key, priority: priority});
this._decrease(index);
return true;
}
return false;
};
/**
* Removes and returns the smallest key in the queue. Takes `O(log n)` time.
*/
PriorityQueue.prototype.removeMin = function() {
this._swap(0, this._arr.length - 1);
var min = this._arr.pop();
delete this._keyIndices[min.key];
this._heapify(0);
return min.key;
};
/**
* Decreases the priority for **key** to **priority**. If the new priority is
* greater than the previous priority, this function will throw an Error.
*
* @param {Object} key the key for which to raise priority
* @param {Number} priority the new priority for the key
*/
PriorityQueue.prototype.decrease = function(key, priority) {
var index = this._keyIndices[key];
if (priority > this._arr[index].priority) {
throw new Error("New priority is greater than current priority. " +
"Key: " + key + " Old: " + this._arr[index].priority + " New: " + priority);
}
this._arr[index].priority = priority;
this._decrease(index);
};
PriorityQueue.prototype._heapify = function(i) {
var arr = this._arr;
var l = 2 * i;
var r = l + 1;
var largest = i;
if (l < arr.length) {
largest = arr[l].priority < arr[largest].priority ? l : largest;
if (r < arr.length) {
largest = arr[r].priority < arr[largest].priority ? r : largest;
}
if (largest !== i) {
this._swap(i, largest);
this._heapify(largest);
}
}
};
PriorityQueue.prototype._decrease = function(index) {
var arr = this._arr;
var priority = arr[index].priority;
var parent;
while (index !== 0) {
parent = index >> 1;
if (arr[parent].priority < priority) {
break;
}
this._swap(index, parent);
index = parent;
}
};
PriorityQueue.prototype._swap = function(i, j) {
var arr = this._arr;
var keyIndices = this._keyIndices;
var origArrI = arr[i];
var origArrJ = arr[j];
arr[i] = origArrJ;
arr[j] = origArrI;
keyIndices[origArrJ.key] = i;
keyIndices[origArrI.key] = j;
};
var dijkstra_1 = dijkstra;
var DEFAULT_WEIGHT_FUNC$1 = lodash_1$1.constant(1);
function dijkstra(g, source, weightFn, edgeFn) {
return runDijkstra(g, String(source),
weightFn || DEFAULT_WEIGHT_FUNC$1,
edgeFn || function(v) { return g.outEdges(v); });
}
function runDijkstra(g, source, weightFn, edgeFn) {
var results = {};
var pq = new priorityQueue();
var v, vEntry;
var updateNeighbors = function(edge) {
var w = edge.v !== v ? edge.v : edge.w;
var wEntry = results[w];
var weight = weightFn(edge);
var distance = vEntry.distance + weight;
if (weight < 0) {
throw new Error("dijkstra does not allow negative edge weights. " +
"Bad edge: " + edge + " Weight: " + weight);
}
if (distance < wEntry.distance) {
wEntry.distance = distance;
wEntry.predecessor = v;
pq.decrease(w, distance);
}
};
g.nodes().forEach(function(v) {
var distance = v === source ? 0 : Number.POSITIVE_INFINITY;
results[v] = { distance: distance };
pq.add(v, distance);
});
while (pq.size() > 0) {
v = pq.removeMin();
vEntry = results[v];
if (vEntry.distance === Number.POSITIVE_INFINITY) {
break;
}
edgeFn(v).forEach(updateNeighbors);
}
return results;
}
var dijkstraAll_1 = dijkstraAll;
function dijkstraAll(g, weightFunc, edgeFunc) {
return lodash_1$1.transform(g.nodes(), function(acc, v) {
acc[v] = dijkstra_1(g, v, weightFunc, edgeFunc);
}, {});
}
var tarjan_1 = tarjan;
function tarjan(g) {
var index = 0;
var stack = [];
var visited = {}; // node id -> { onStack, lowlink, index }
var results = [];
function dfs(v) {
var entry = visited[v] = {
onStack: true,
lowlink: index,
index: index++
};
stack.push(v);
g.successors(v).forEach(function(w) {
if (!lodash_1$1.has(visited, w)) {
dfs(w);
entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);
} else if (visited[w].onStack) {
entry.lowlink = Math.min(entry.lowlink, visited[w].index);
}
});
if (entry.lowlink === entry.index) {
var cmpt = [];
var w;
do {
w = stack.pop();
visited[w].onStack = false;
cmpt.push(w);
} while (v !== w);
results.push(cmpt);
}
}
g.nodes().forEach(function(v) {
if (!lodash_1$1.has(visited, v)) {
dfs(v);
}
});
return results;
}
var findCycles_1 = findCycles;
function findCycles(g) {
return lodash_1$1.filter(tarjan_1(g), function(cmpt) {
return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));
});
}
var floydWarshall_1 = floydWarshall;
var DEFAULT_WEIGHT_FUNC = lodash_1$1.constant(1);
function floydWarshall(g, weightFn, edgeFn) {
return runFloydWarshall(g,
weightFn || DEFAULT_WEIGHT_FUNC,
edgeFn || function(v) { return g.outEdges(v); });
}
function runFloydWarshall(g, weightFn, edgeFn) {
var results = {};
var nodes = g.nodes();
nodes.forEach(function(v) {
results[v] = {};
results[v][v] = { distance: 0 };
nodes.forEach(function(w) {
if (v !== w) {
results[v][w] = { distance: Number.POSITIVE_INFINITY };
}
});
edgeFn(v).forEach(function(edge) {
var w = edge.v === v ? edge.w : edge.v;
var d = weightFn(edge);
results[v][w] = { distance: d, predecessor: v };
});
});
nodes.forEach(function(k) {
var rowK = results[k];
nodes.forEach(function(i) {
var rowI = results[i];
nodes.forEach(function(j) {
var ik = rowI[k];
var kj = rowK[j];
var ij = rowI[j];
var altDistance = ik.distance + kj.distance;
if (altDistance < ij.distance) {
ij.distance = altDistance;
ij.predecessor = kj.predecessor;
}
});
});
});
return results;
}
var topsort_1 = topsort;
topsort.CycleException = CycleException;
function topsort(g) {
var visited = {};
var stack = {};
var results = [];
function visit(node) {
if (lodash_1$1.has(stack, node)) {
throw new CycleException();
}
if (!lodash_1$1.has(visited, node)) {
stack[node] = true;
visited[node] = true;
lodash_1$1.each(g.predecessors(node), visit);
delete stack[node];
results.push(node);
}
}
lodash_1$1.each(g.sinks(), visit);
if (lodash_1$1.size(visited) !== g.nodeCount()) {
throw new CycleException();
}
return results;
}
function CycleException() {}
CycleException.prototype = new Error(); // must be an instance of Error to pass testing
var isAcyclic_1 = isAcyclic;
function isAcyclic(g) {
try {
topsort_1(g);
} catch (e) {
if (e instanceof topsort_1.CycleException) {
return false;
}
throw e;
}
return true;
}
var dfs_1 = dfs$1;
/*
* A helper that preforms a pre- or post-order traversal on the input graph
* and returns the nodes in the order they were visited. If the graph is
* undirected then this algorithm will navigate using neighbors. If the graph
* is directed then this algorithm will navigate using successors.
*
* Order must be one of "pre" or "post".
*/
function dfs$1(g, vs, order) {
if (!lodash_1$1.isArray(vs)) {
vs = [vs];
}
var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);
var acc = [];
var visited = {};
lodash_1$1.each(vs, function(v) {
if (!g.hasNode(v)) {
throw new Error("Graph does not have node: " + v);
}
doDfs(g, v, order === "post", visited, navigation, acc);
});
return acc;
}
function doDfs(g, v, postorder, visited, navigation, acc) {
if (!lodash_1$1.has(visited, v)) {
visited[v] = true;
if (!postorder) { acc.push(v); }
lodash_1$1.each(navigation(v), function(w) {
doDfs(g, w, postorder, visited, navigation, acc);
});
if (postorder) { acc.push(v); }
}
}
var postorder_1 = postorder$2;
function postorder$2(g, vs) {
return dfs_1(g, vs, "post");
}
var preorder_1 = preorder$1;
function preorder$1(g, vs) {
return dfs_1(g, vs, "pre");
}
var prim_1 = prim;
function prim(g, weightFunc) {
var result = new graph();
var parents = {};
var pq = new priorityQueue();
var v;
function updateNeighbors(edge) {
var w = edge.v === v ? edge.w : edge.v;
var pri = pq.priority(w);
if (pri !== undefined) {
var edgeWeight = weightFunc(edge);
if (edgeWeight < pri) {
parents[w] = v;
pq.decrease(w, edgeWeight);
}
}
}
if (g.nodeCount() === 0) {
return result;
}
lodash_1$1.each(g.nodes(), function(v) {
pq.add(v, Number.POSITIVE_INFINITY);
result.setNode(v);
});
// Start from an arbitrary node
pq.decrease(g.nodes()[0], 0);
var init = false;
while (pq.size() > 0) {
v = pq.removeMin();
if (lodash_1$1.has(parents, v)) {
result.setEdge(v, parents[v]);
} else if (init) {
throw new Error("Input graph is not connected: " + g);
} else {
init = true;
}
g.nodeEdges(v).forEach(updateNeighbors);
}
return result;
}
var alg = {
components: components_1,
dijkstra: dijkstra_1,
dijkstraAll: dijkstraAll_1,
findCycles: findCycles_1,
floydWarshall: floydWarshall_1,
isAcyclic: isAcyclic_1,
postorder: postorder_1,
preorder: preorder_1,
prim: prim_1,
tarjan: tarjan_1,
topsort: topsort_1
};
/**
* Copyright (c) 2014, Chris Pettitt
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
var graphlib$1 = {
Graph: lib.Graph,
json: json,
alg: alg,
version: lib.version
};
/* global window */
var graphlib;
if (typeof commonjsRequire === "function") {
try {
graphlib = graphlib$1;
} catch (e) {
// continue regardless of error
}
}
if (!graphlib) {
graphlib = window.graphlib;
}
var graphlib_1 = graphlib;
/** Used to compose bitmasks for cloning. */
var CLONE_DEEP_FLAG = 1,
CLONE_SYMBOLS_FLAG = 4;
/**
* This method is like `_.clone` except that it recursively clones `value`.
*
* @static
* @memberOf _
* @since 1.0.0
* @category Lang
* @param {*} value The value to recursively clone.
* @returns {*} Returns the deep cloned value.
* @see _.clone
* @example
*
* var objects = [{ 'a': 1 }, { 'b': 2 }];
*
* var deep = _.cloneDeep(objects);
* console.log(deep[0] === objects[0]);
* // => false
*/
function cloneDeep(value) {
return _baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
}
var cloneDeep_1 = cloneDeep;
/**
* Checks if the given arguments are from an iteratee call.
*
* @private
* @param {*} value The potential iteratee value argument.
* @param {*} index The potential iteratee index or key argument.
* @param {*} object The potential iteratee object argument.
* @returns {boolean} Returns `true` if the arguments are from an iteratee call,
* else `false`.
*/
function isIterateeCall(value, index, object) {
if (!isObject_1(object)) {
return false;
}
var type = typeof index;
if (type == 'number'
? (isArrayLike_1(object) && _isIndex(index, object.length))
: (type == 'string' && index in object)
) {
return eq_1(object[index], value);
}
return false;
}
var _isIterateeCall = isIterateeCall;
/** Used for built-in method references. */
var objectProto$1 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
/**
* Assigns own and inherited enumerable string keyed properties of source
* objects to the destination object for all destination properties that
* resolve to `undefined`. Source objects are applied from left to right.
* Once a property is set, additional values of the same property are ignored.
*
* **Note:** This method mutates `object`.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The destination object.
* @param {...Object} [sources] The source objects.
* @returns {Object} Returns `object`.
* @see _.defaultsDeep
* @example
*
* _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
* // => { 'a': 1, 'b': 2 }
*/
var defaults = _baseRest(function(object, sources) {
object = Object(object);
var index = -1;
var length = sources.length;
var guard = length > 2 ? sources[2] : undefined;
if (guard && _isIterateeCall(sources[0], sources[1], guard)) {
length = 1;
}
while (++index < length) {
var source = sources[index];
var props = keysIn_1(source);
var propsIndex = -1;
var propsLength = props.length;
while (++propsIndex < propsLength) {
var key = props[propsIndex];
var value = object[key];
if (value === undefined ||
(eq_1(value, objectProto$1[key]) && !hasOwnProperty$1.call(object, key))) {
object[key] = source[key];
}
}
}
return object;
});
var defaults_1 = defaults;
/**
* Creates a `_.find` or `_.findLast` function.
*
* @private
* @param {Function} findIndexFunc The function to find the collection index.
* @returns {Function} Returns the new find function.
*/
function createFind(findIndexFunc) {
return function(collection, predicate, fromIndex) {
var iterable = Object(collection);
if (!isArrayLike_1(collection)) {
var iteratee = _baseIteratee(predicate);
collection = keys_1(collection);
predicate = function(key) { return iteratee(iterable[key], key, iterable); };
}
var index = findIndexFunc(collection, predicate, fromIndex);
return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
};
}
var _createFind = createFind;
/** Used to match a single whitespace character. */
var reWhitespace = /\s/;
/**
* Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
* character of `string`.
*
* @private
* @param {string} string The string to inspect.
* @returns {number} Returns the index of the last non-whitespace character.
*/
function trimmedEndIndex(string) {
var index = string.length;
while (index-- && reWhitespace.test(string.charAt(index))) {}
return index;
}
var _trimmedEndIndex = trimmedEndIndex;
/** Used to match leading whitespace. */
var reTrimStart = /^\s+/;
/**
* The base implementation of `_.trim`.
*
* @private
* @param {string} string The string to trim.
* @returns {string} Returns the trimmed string.
*/
function baseTrim(string) {
return string
? string.slice(0, _trimmedEndIndex(string) + 1).replace(reTrimStart, '')
: string;
}
var _baseTrim = baseTrim;
/** Used as references for various `Number` constants. */
var NAN = 0 / 0;
/** Used to detect bad signed hexadecimal string values. */
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
/** Used to detect binary string values. */
var reIsBinary = /^0b[01]+$/i;
/** Used to detect octal string values. */
var reIsOctal = /^0o[0-7]+$/i;
/** Built-in method references without a dependency on `root`. */
var freeParseInt = parseInt;
/**
* Converts `value` to a number.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to process.
* @returns {number} Returns the number.
* @example
*
* _.toNumber(3.2);
* // => 3.2
*
* _.toNumber(Number.MIN_VALUE);
* // => 5e-324
*
* _.toNumber(Infinity);
* // => Infinity
*
* _.toNumber('3.2');
* // => 3.2
*/
function toNumber(value) {
if (typeof value == 'number') {
return value;
}
if (isSymbol_1(value)) {
return NAN;
}
if (isObject_1(value)) {
var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
value = isObject_1(other) ? (other + '') : other;
}
if (typeof value != 'string') {
return value === 0 ? value : +value;
}
value = _baseTrim(value);
var isBinary = reIsBinary.test(value);
return (isBinary || reIsOctal.test(value))
? freeParseInt(value.slice(2), isBinary ? 2 : 8)
: (reIsBadHex.test(value) ? NAN : +value);
}
var toNumber_1 = toNumber;
/** Used as references for various `Number` constants. */
var INFINITY = 1 / 0,
MAX_INTEGER = 1.7976931348623157e+308;
/**
* Converts `value` to a finite number.
*
* @static
* @memberOf _
* @since 4.12.0
* @category Lang
* @param {*} value The value to convert.
* @returns {number} Returns the converted number.
* @example
*
* _.toFinite(3.2);
* // => 3.2
*
* _.toFinite(Number.MIN_VALUE);
* // => 5e-324
*
* _.toFinite(Infinity);
* // => 1.7976931348623157e+308
*
* _.toFinite('3.2');
* // => 3.2
*/
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0;
}
value = toNumber_1(value);
if (value === INFINITY || value === -INFINITY) {
var sign = (value < 0 ? -1 : 1);
return sign * MAX_INTEGER;
}
return value === value ? value : 0;
}
var toFinite_1 = toFinite;
/**
* Converts `value` to an integer.
*
* **Note:** This method is loosely based on
* [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to convert.
* @returns {number} Returns the converted integer.
* @example
*
* _.toInteger(3.2);
* // => 3
*
* _.toInteger(Number.MIN_VALUE);
* // => 0
*
* _.toInteger(Infinity);
* // => 1.7976931348623157e+308
*
* _.toInteger('3.2');
* // => 3
*/
function toInteger(value) {
var result = toFinite_1(value),
remainder = result % 1;
return result === result ? (remainder ? result - remainder : result) : 0;
}
var toInteger_1 = toInteger;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMax$1 = Math.max;
/**
* This method is like `_.find` except that it returns the index of the first
* element `predicate` returns truthy for instead of the element itself.
*
* @static
* @memberOf _
* @since 1.1.0
* @category Array
* @param {Array} array The array to inspect.
* @param {Function} [predicate=_.identity] The function invoked per iteration.
* @param {number} [fromIndex=0] The index to search from.
* @returns {number} Returns the index of the found element, else `-1`.
* @example
*
* var users = [
* { 'user': 'barney', 'active': false },
* { 'user': 'fred', 'active': false },
* { 'user': 'pebbles', 'active': true }
* ];
*
* _.findIndex(users, function(o) { return o.user == 'barney'; });
* // => 0
*
* // The `_.matches` iteratee shorthand.
* _.findIndex(users, { 'user': 'fred', 'active': false });
* // => 1
*
* // The `_.matchesProperty` iteratee shorthand.
* _.findIndex(users, ['active', false]);
* // => 0
*
* // The `_.property` iteratee shorthand.
* _.findIndex(users, 'active');
* // => 2
*/
function findIndex(array, predicate, fromIndex) {
var length = array == null ? 0 : array.length;
if (!length) {
return -1;
}
var index = fromIndex == null ? 0 : toInteger_1(fromIndex);
if (index < 0) {
index = nativeMax$1(length + index, 0);
}
return _baseFindIndex(array, _baseIteratee(predicate), index);
}
var findIndex_1 = findIndex;
/**
* Iterates over elements of `collection`, returning the first element
* `predicate` returns truthy for. The predicate is invoked with three
* arguments: (value, index|key, collection).
*
* @static
* @memberOf _
* @since 0.1.0
* @category Collection
* @param {Array|Object} collection The collection to inspect.
* @param {Function} [predicate=_.identity] The function invoked per iteration.
* @param {number} [fromIndex=0] The index to search from.
* @returns {*} Returns the matched element, else `undefined`.
* @example
*
* var users = [
* { 'user': 'barney', 'age': 36, 'active': true },
* { 'user': 'fred', 'age': 40, 'active': false },
* { 'user': 'pebbles', 'age': 1, 'active': true }
* ];
*
* _.find(users, function(o) { return o.age < 40; });
* // => object for 'barney'
*
* // The `_.matches` iteratee shorthand.
* _.find(users, { 'age': 1, 'active': true });
* // => object for 'pebbles'
*
* // The `_.matchesProperty` iteratee shorthand.
* _.find(users, ['active', false]);
* // => object for 'fred'
*
* // The `_.property` iteratee shorthand.
* _.find(users, 'active');
* // => object for 'barney'
*/
var find = _createFind(findIndex_1);
var find_1 = find;
/**
* Flattens `array` a single level deep.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Array
* @param {Array} array The array to flatten.
* @returns {Array} Returns the new flattened array.
* @example
*
* _.flatten([1, [2, [3, [4]], 5]]);
* // => [1, 2, [3, [4]], 5]
*/
function flatten(array) {
var length = array == null ? 0 : array.length;
return length ? _baseFlatten(array, 1) : [];
}
var flatten_1 = flatten;
/**
* Iterates over own and inherited enumerable string keyed properties of an
* object and invokes `iteratee` for each property. The iteratee is invoked
* with three arguments: (value, key, object). Iteratee functions may exit
* iteration early by explicitly returning `false`.
*
* @static
* @memberOf _
* @since 0.3.0
* @category Object
* @param {Object} object The object to iterate over.
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
* @returns {Object} Returns `object`.
* @see _.forInRight
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.forIn(new Foo, function(value, key) {
* console.log(key);
* });
* // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
*/
function forIn(object, iteratee) {
return object == null
? object
: _baseFor(object, _castFunction(iteratee), keysIn_1);
}
var forIn_1 = forIn;
/**
* Gets the last element of `array`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Array
* @param {Array} array The array to query.
* @returns {*} Returns the last element of `array`.
* @example
*
* _.last([1, 2, 3]);
* // => 3
*/
function last(array) {
var length = array == null ? 0 : array.length;
return length ? array[length - 1] : undefined;
}
var last_1 = last;
/**
* Creates an object with the same keys as `object` and values generated
* by running each own enumerable string keyed property of `object` thru
* `iteratee`. The iteratee is invoked with three arguments:
* (value, key, object).
*
* @static
* @memberOf _
* @since 2.4.0
* @category Object
* @param {Object} object The object to iterate over.
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
* @returns {Object} Returns the new mapped object.
* @see _.mapKeys
* @example
*
* var users = {
* 'fred': { 'user': 'fred', 'age': 40 },
* 'pebbles': { 'user': 'pebbles', 'age': 1 }
* };
*
* _.mapValues(users, function(o) { return o.age; });
* // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
*
* // The `_.property` iteratee shorthand.
* _.mapValues(users, 'age');
* // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
*/
function mapValues(object, iteratee) {
var result = {};
iteratee = _baseIteratee(iteratee);
_baseForOwn(object, function(value, key, object) {
_baseAssignValue(result, key, iteratee(value, key, object));
});
return result;
}
var mapValues_1 = mapValues;
/**
* The base implementation of methods like `_.max` and `_.min` which accepts a
* `comparator` to determine the extremum value.
*
* @private
* @param {Array} array The array to iterate over.
* @param {Function} iteratee The iteratee invoked per iteration.
* @param {Function} comparator The comparator used to compare values.
* @returns {*} Returns the extremum value.
*/
function baseExtremum(array, iteratee, comparator) {
var index = -1,
length = array.length;
while (++index < length) {
var value = array[index],
current = iteratee(value);
if (current != null && (computed === undefined
? (current === current && !isSymbol_1(current))
: comparator(current, computed)
)) {
var computed = current,
result = value;
}
}
return result;
}
var _baseExtremum = baseExtremum;
/**
* The base implementation of `_.gt` which doesn't coerce arguments.
*
* @private
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @returns {boolean} Returns `true` if `value` is greater than `other`,
* else `false`.
*/
function baseGt(value, other) {
return value > other;
}
var _baseGt = baseGt;
/**
* Computes the maximum value of `array`. If `array` is empty or falsey,
* `undefined` is returned.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Math
* @param {Array} array The array to iterate over.
* @returns {*} Returns the maximum value.
* @example
*
* _.max([4, 2, 8, 6]);
* // => 8
*
* _.max([]);
* // => undefined
*/
function max(array) {
return (array && array.length)
? _baseExtremum(array, identity_1, _baseGt)
: undefined;
}
var max_1 = max;
/**
* This function is like `assignValue` except that it doesn't assign
* `undefined` values.
*
* @private
* @param {Object} object The object to modify.
* @param {string} key The key of the property to assign.
* @param {*} value The value to assign.
*/
function assignMergeValue(object, key, value) {
if ((value !== undefined && !eq_1(object[key], value)) ||
(value === undefined && !(key in object))) {
_baseAssignValue(object, key, value);
}
}
var _assignMergeValue = assignMergeValue;
/** `Object#toString` result references. */
var objectTag = '[object Object]';
/** Used for built-in method references. */
var funcProto = Function.prototype,
objectProto = Object.prototype;
/** Used to resolve the decompiled source of functions. */
var funcToString = funcProto.toString;
/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;
/** Used to infer the `Object` constructor. */
var objectCtorString = funcToString.call(Object);
/**
* Checks if `value` is a plain object, that is, an object created by the
* `Object` constructor or one with a `[[Prototype]]` of `null`.
*
* @static
* @memberOf _
* @since 0.8.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
* @example
*
* function Foo() {
* this.a = 1;
* }
*
* _.isPlainObject(new Foo);
* // => false
*
* _.isPlainObject([1, 2, 3]);
* // => false
*
* _.isPlainObject({ 'x': 0, 'y': 0 });
* // => true
*
* _.isPlainObject(Object.create(null));
* // => true
*/
function isPlainObject(value) {
if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {
return false;
}
var proto = _getPrototype(value);
if (proto === null) {
return true;
}
var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
return typeof Ctor == 'function' && Ctor instanceof Ctor &&
funcToString.call(Ctor) == objectCtorString;
}
var isPlainObject_1 = isPlainObject;
/**
* Gets the value at `key`, unless `key` is "__proto__" or "constructor".
*
* @private
* @param {Object} object The object to query.
* @param {string} key The key of the property to get.
* @returns {*} Returns the property value.
*/
function safeGet(object, key) {
if (key === 'constructor' && typeof object[key] === 'function') {
return;
}
if (key == '__proto__') {
return;
}
return object[key];
}
var _safeGet = safeGet;
/**
* Converts `value` to a plain object flattening inherited enumerable string
* keyed properties of `value` to own properties of the plain object.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Lang
* @param {*} value The value to convert.
* @returns {Object} Returns the converted plain object.
* @example
*
* function Foo() {
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.assign({ 'a': 1 }, new Foo);
* // => { 'a': 1, 'b': 2 }
*
* _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
* // => { 'a': 1, 'b': 2, 'c': 3 }
*/
function toPlainObject(value) {
return _copyObject(value, keysIn_1(value));
}
var toPlainObject_1 = toPlainObject;
/**
* A specialized version of `baseMerge` for arrays and objects which performs
* deep merges and tracks traversed objects enabling objects with circular
* references to be merged.
*
* @private
* @param {Object} object The destination object.
* @param {Object} source The source object.
* @param {string} key The key of the value to merge.
* @param {number} srcIndex The index of `source`.
* @param {Function} mergeFunc The function to merge values.
* @param {Function} [customizer] The function to customize assigned values.
* @param {Object} [stack] Tracks traversed source values and their merged
* counterparts.
*/
function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
var objValue = _safeGet(object, key),
srcValue = _safeGet(source, key),
stacked = stack.get(srcValue);
if (stacked) {
_assignMergeValue(object, key, stacked);
return;
}
var newValue = customizer
? customizer(objValue, srcValue, (key + ''), object, source, stack)
: undefined;
var isCommon = newValue === undefined;
if (isCommon) {
var isArr = isArray_1(srcValue),
isBuff = !isArr && isBuffer_1(srcValue),
isTyped = !isArr && !isBuff && isTypedArray_1(srcValue);
newValue = srcValue;
if (isArr || isBuff || isTyped) {
if (isArray_1(objValue)) {
newValue = objValue;
}
else if (isArrayLikeObject_1(objValue)) {
newValue = _copyArray(objValue);
}
else if (isBuff) {
isCommon = false;
newValue = _cloneBuffer(srcValue, true);
}
else if (isTyped) {
isCommon = false;
newValue = _cloneTypedArray(srcValue, true);
}
else {
newValue = [];
}
}
else if (isPlainObject_1(srcValue) || isArguments_1(srcValue)) {
newValue = objValue;
if (isArguments_1(objValue)) {
newValue = toPlainObject_1(objValue);
}
else if (!isObject_1(objValue) || isFunction_1(objValue)) {
newValue = _initCloneObject(srcValue);
}
}
else {
isCommon = false;
}
}
if (isCommon) {
// Recursively merge objects and arrays (susceptible to call stack limits).
stack.set(srcValue, newValue);
mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
stack['delete'](srcValue);
}
_assignMergeValue(object, key, newValue);
}
var _baseMergeDeep = baseMergeDeep;
/**
* The base implementation of `_.merge` without support for multiple sources.
*
* @private
* @param {Object} object The destination object.
* @param {Object} source The source object.
* @param {number} srcIndex The index of `source`.
* @param {Function} [customizer] The function to customize merged values.
* @param {Object} [stack] Tracks traversed source values and their merged
* counterparts.
*/
function baseMerge(object, source, srcIndex, customizer, stack) {
if (object === source) {
return;
}
_baseFor(source, function(srcValue, key) {
stack || (stack = new _Stack);
if (isObject_1(srcValue)) {
_baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
}
else {
var newValue = customizer
? customizer(_safeGet(object, key), srcValue, (key + ''), object, source, stack)
: undefined;
if (newValue === undefined) {
newValue = srcValue;
}
_assignMergeValue(object, key, newValue);
}
}, keysIn_1);
}
var _baseMerge = baseMerge;
/**
* Creates a function like `_.assign`.
*
* @private
* @param {Function} assigner The function to assign values.
* @returns {Function} Returns the new assigner function.
*/
function createAssigner(assigner) {
return _baseRest(function(object, sources) {
var index = -1,
length = sources.length,
customizer = length > 1 ? sources[length - 1] : undefined,
guard = length > 2 ? sources[2] : undefined;
customizer = (assigner.length > 3 && typeof customizer == 'function')
? (length--, customizer)
: undefined;
if (guard && _isIterateeCall(sources[0], sources[1], guard)) {
customizer = length < 3 ? undefined : customizer;
length = 1;
}
object = Object(object);
while (++index < length) {
var source = sources[index];
if (source) {
assigner(object, source, index, customizer);
}
}
return object;
});
}
var _createAssigner = createAssigner;
/**
* This method is like `_.assign` except that it recursively merges own and
* inherited enumerable string keyed properties of source objects into the
* destination object. Source properties that resolve to `undefined` are
* skipped if a destination value exists. Array and plain object properties
* are merged recursively. Other objects and value types are overridden by
* assignment. Source objects are applied from left to right. Subsequent
* sources overwrite property assignments of previous sources.
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @since 0.5.0
* @category Object
* @param {Object} object The destination object.
* @param {...Object} [sources] The source objects.
* @returns {Object} Returns `object`.
* @example
*
* var object = {
* 'a': [{ 'b': 2 }, { 'd': 4 }]
* };
*
* var other = {
* 'a': [{ 'c': 3 }, { 'e': 5 }]
* };
*
* _.merge(object, other);
* // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
*/
var merge = _createAssigner(function(object, source, srcIndex) {
_baseMerge(object, source, srcIndex);
});
var merge_1 = merge;
/**
* The base implementation of `_.lt` which doesn't coerce arguments.
*
* @private
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @returns {boolean} Returns `true` if `value` is less than `other`,
* else `false`.
*/
function baseLt(value, other) {
return value < other;
}
var _baseLt = baseLt;
/**
* Computes the minimum value of `array`. If `array` is empty or falsey,
* `undefined` is returned.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Math
* @param {Array} array The array to iterate over.
* @returns {*} Returns the minimum value.
* @example
*
* _.min([4, 2, 8, 6]);
* // => 2
*
* _.min([]);
* // => undefined
*/
function min(array) {
return (array && array.length)
? _baseExtremum(array, identity_1, _baseLt)
: undefined;
}
var min_1 = min;
/**
* This method is like `_.min` except that it accepts `iteratee` which is
* invoked for each element in `array` to generate the criterion by which
* the value is ranked. The iteratee is invoked with one argument: (value).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Math
* @param {Array} array The array to iterate over.
* @param {Function} [iteratee=_.identity] The iteratee invoked per element.
* @returns {*} Returns the minimum value.
* @example
*
* var objects = [{ 'n': 1 }, { 'n': 2 }];
*
* _.minBy(objects, function(o) { return o.n; });
* // => { 'n': 1 }
*
* // The `_.property` iteratee shorthand.
* _.minBy(objects, 'n');
* // => { 'n': 1 }
*/
function minBy(array, iteratee) {
return (array && array.length)
? _baseExtremum(array, _baseIteratee(iteratee), _baseLt)
: undefined;
}
var minBy_1 = minBy;
/**
* Gets the timestamp of the number of milliseconds that have elapsed since
* the Unix epoch (1 January 1970 00:00:00 UTC).
*
* @static
* @memberOf _
* @since 2.4.0
* @category Date
* @returns {number} Returns the timestamp.
* @example
*
* _.defer(function(stamp) {
* console.log(_.now() - stamp);
* }, _.now());
* // => Logs the number of milliseconds it took for the deferred invocation.
*/
var now = function() {
return _root.Date.now();
};
var now_1 = now;
/**
* The base implementation of `_.set`.
*
* @private
* @param {Object} object The object to modify.
* @param {Array|string} path The path of the property to set.
* @param {*} value The value to set.
* @param {Function} [customizer] The function to customize path creation.
* @returns {Object} Returns `object`.
*/
function baseSet(object, path, value, customizer) {
if (!isObject_1(object)) {
return object;
}
path = _castPath(path, object);
var index = -1,
length = path.length,
lastIndex = length - 1,
nested = object;
while (nested != null && ++index < length) {
var key = _toKey(path[index]),
newValue = value;
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
return object;
}
if (index != lastIndex) {
var objValue = nested[key];
newValue = customizer ? customizer(objValue, key, nested) : undefined;
if (newValue === undefined) {
newValue = isObject_1(objValue)
? objValue
: (_isIndex(path[index + 1]) ? [] : {});
}
}
_assignValue(nested, key, newValue);
nested = nested[key];
}
return object;
}
var _baseSet = baseSet;
/**
* The base implementation of `_.pickBy` without support for iteratee shorthands.
*
* @private
* @param {Object} object The source object.
* @param {string[]} paths The property paths to pick.
* @param {Function} predicate The function invoked per property.
* @returns {Object} Returns the new object.
*/
function basePickBy(object, paths, predicate) {
var index = -1,
length = paths.length,
result = {};
while (++index < length) {
var path = paths[index],
value = _baseGet(object, path);
if (predicate(value, path)) {
_baseSet(result, _castPath(path, object), value);
}
}
return result;
}
var _basePickBy = basePickBy;
/**
* The base implementation of `_.pick` without support for individual
* property identifiers.
*
* @private
* @param {Object} object The source object.
* @param {string[]} paths The property paths to pick.
* @returns {Object} Returns the new object.
*/
function basePick(object, paths) {
return _basePickBy(object, paths, function(value, path) {
return hasIn_1(object, path);
});
}
var _basePick = basePick;
/**
* A specialized version of `baseRest` which flattens the rest array.
*
* @private
* @param {Function} func The function to apply a rest parameter to.
* @returns {Function} Returns the new function.
*/
function flatRest(func) {
return _setToString(_overRest(func, undefined, flatten_1), func + '');
}
var _flatRest = flatRest;
/**
* Creates an object composed of the picked `object` properties.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The source object.
* @param {...(string|string[])} [paths] The property paths to pick.
* @returns {Object} Returns the new object.
* @example
*
* var object = { 'a': 1, 'b': '2', 'c': 3 };
*
* _.pick(object, ['a', 'c']);
* // => { 'a': 1, 'c': 3 }
*/
var pick = _flatRest(function(object, paths) {
return object == null ? {} : _basePick(object, paths);
});
var pick_1 = pick;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeCeil = Math.ceil,
nativeMax = Math.max;
/**
* The base implementation of `_.range` and `_.rangeRight` which doesn't
* coerce arguments.
*
* @private
* @param {number} start The start of the range.
* @param {number} end The end of the range.
* @param {number} step The value to increment or decrement by.
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {Array} Returns the range of numbers.
*/
function baseRange(start, end, step, fromRight) {
var index = -1,
length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
result = Array(length);
while (length--) {
result[fromRight ? length : ++index] = start;
start += step;
}
return result;
}
var _baseRange = baseRange;
/**
* Creates a `_.range` or `_.rangeRight` function.
*
* @private
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {Function} Returns the new range function.
*/
function createRange(fromRight) {
return function(start, end, step) {
if (step && typeof step != 'number' && _isIterateeCall(start, end, step)) {
end = step = undefined;
}
// Ensure the sign of `-0` is preserved.
start = toFinite_1(start);
if (end === undefined) {
end = start;
start = 0;
} else {
end = toFinite_1(end);
}
step = step === undefined ? (start < end ? 1 : -1) : toFinite_1(step);
return _baseRange(start, end, step, fromRight);
};
}
var _createRange = createRange;
/**
* Creates an array of numbers (positive and/or negative) progressing from
* `start` up to, but not including, `end`. A step of `-1` is used if a negative
* `start` is specified without an `end` or `step`. If `end` is not specified,
* it's set to `start` with `start` then set to `0`.
*
* **Note:** JavaScript follows the IEEE-754 standard for resolving
* floating-point values which can produce unexpected results.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Util
* @param {number} [start=0] The start of the range.
* @param {number} end The end of the range.
* @param {number} [step=1] The value to increment or decrement by.
* @returns {Array} Returns the range of numbers.
* @see _.inRange, _.rangeRight
* @example
*
* _.range(4);
* // => [0, 1, 2, 3]
*
* _.range(-4);
* // => [0, -1, -2, -3]
*
* _.range(1, 5);
* // => [1, 2, 3, 4]
*
* _.range(0, 20, 5);
* // => [0, 5, 10, 15]
*
* _.range(0, -4, -1);
* // => [0, -1, -2, -3]
*
* _.range(1, 4, 0);
* // => [1, 1, 1]
*
* _.range(0);
* // => []
*/
var range = _createRange();
var range_1 = range;
/**
* The base implementation of `_.sortBy` which uses `comparer` to define the
* sort order of `array` and replaces criteria objects with their corresponding
* values.
*
* @private
* @param {Array} array The array to sort.
* @param {Function} comparer The function to define sort order.
* @returns {Array} Returns `array`.
*/
function baseSortBy(array, comparer) {
var length = array.length;
array.sort(comparer);
while (length--) {
array[length] = array[length].value;
}
return array;
}
var _baseSortBy = baseSortBy;
/**
* Compares values to sort them in ascending order.
*
* @private
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @returns {number} Returns the sort order indicator for `value`.
*/
function compareAscending(value, other) {
if (value !== other) {
var valIsDefined = value !== undefined,
valIsNull = value === null,
valIsReflexive = value === value,
valIsSymbol = isSymbol_1(value);
var othIsDefined = other !== undefined,
othIsNull = other === null,
othIsReflexive = other === other,
othIsSymbol = isSymbol_1(other);
if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
(valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
(valIsNull && othIsDefined && othIsReflexive) ||
(!valIsDefined && othIsReflexive) ||
!valIsReflexive) {
return 1;
}
if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
(othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
(othIsNull && valIsDefined && valIsReflexive) ||
(!othIsDefined && valIsReflexive) ||
!othIsReflexive) {
return -1;
}
}
return 0;
}
var _compareAscending = compareAscending;
/**
* Used by `_.orderBy` to compare multiple properties of a value to another
* and stable sort them.
*
* If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
* specify an order of "desc" for descending or "asc" for ascending sort order
* of corresponding values.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {boolean[]|string[]} orders The order to sort by for each property.
* @returns {number} Returns the sort order indicator for `object`.
*/
function compareMultiple(object, other, orders) {
var index = -1,
objCriteria = object.criteria,
othCriteria = other.criteria,
length = objCriteria.length,
ordersLength = orders.length;
while (++index < length) {
var result = _compareAscending(objCriteria[index], othCriteria[index]);
if (result) {
if (index >= ordersLength) {
return result;
}
var order = orders[index];
return result * (order == 'desc' ? -1 : 1);
}
}
// Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
// that causes it, under certain circumstances, to provide the same value for
// `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
// for more details.
//
// This also ensures a stable sort in V8 and other engines.
// See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
return object.index - other.index;
}
var _compareMultiple = compareMultiple;
/**
* The base implementation of `_.orderBy` without param guards.
*
* @private
* @param {Array|Object} collection The collection to iterate over.
* @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
* @param {string[]} orders The sort orders of `iteratees`.
* @returns {Array} Returns the new sorted array.
*/
function baseOrderBy(collection, iteratees, orders) {
if (iteratees.length) {
iteratees = _arrayMap(iteratees, function(iteratee) {
if (isArray_1(iteratee)) {
return function(value) {
return _baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
}
}
return iteratee;
});
} else {
iteratees = [identity_1];
}
var index = -1;
iteratees = _arrayMap(iteratees, _baseUnary(_baseIteratee));
var result = _baseMap(collection, function(value, key, collection) {
var criteria = _arrayMap(iteratees, function(iteratee) {
return iteratee(value);
});
return { 'criteria': criteria, 'index': ++index, 'value': value };
});
return _baseSortBy(result, function(object, other) {
return _compareMultiple(object, other, orders);
});
}
var _baseOrderBy = baseOrderBy;
/**
* Creates an array of elements, sorted in ascending order by the results of
* running each element in a collection thru each iteratee. This method
* performs a stable sort, that is, it preserves the original sort order of
* equal elements. The iteratees are invoked with one argument: (value).
*
* @static
* @memberOf _
* @since 0.1.0
* @category Collection
* @param {Array|Object} collection The collection to iterate over.
* @param {...(Function|Function[])} [iteratees=[_.identity]]
* The iteratees to sort by.
* @returns {Array} Returns the new sorted array.
* @example
*
* var users = [
* { 'user': 'fred', 'age': 48 },
* { 'user': 'barney', 'age': 36 },
* { 'user': 'fred', 'age': 30 },
* { 'user': 'barney', 'age': 34 }
* ];
*
* _.sortBy(users, [function(o) { return o.user; }]);
* // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
*
* _.sortBy(users, ['user', 'age']);
* // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
*/
var sortBy = _baseRest(function(collection, iteratees) {
if (collection == null) {
return [];
}
var length = iteratees.length;
if (length > 1 && _isIterateeCall(collection, iteratees[0], iteratees[1])) {
iteratees = [];
} else if (length > 2 && _isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
iteratees = [iteratees[0]];
}
return _baseOrderBy(collection, _baseFlatten(iteratees, 1), []);
});
var sortBy_1 = sortBy;
/** Used to generate unique IDs. */
var idCounter = 0;
/**
* Generates a unique ID. If `prefix` is given, the ID is appended to it.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Util
* @param {string} [prefix=''] The value to prefix the ID with.
* @returns {string} Returns the unique ID.
* @example
*
* _.uniqueId('contact_');
* // => 'contact_104'
*
* _.uniqueId();
* // => '105'
*/
function uniqueId(prefix) {
var id = ++idCounter;
return toString_1(prefix) + id;
}
var uniqueId_1 = uniqueId;
/**
* This base implementation of `_.zipObject` which assigns values using `assignFunc`.
*
* @private
* @param {Array} props The property identifiers.
* @param {Array} values The property values.
* @param {Function} assignFunc The function to assign values.
* @returns {Object} Returns the new object.
*/
function baseZipObject(props, values, assignFunc) {
var index = -1,
length = props.length,
valsLength = values.length,
result = {};
while (++index < length) {
var value = index < valsLength ? values[index] : undefined;
assignFunc(result, props[index], value);
}
return result;
}
var _baseZipObject = baseZipObject;
/**
* This method is like `_.fromPairs` except that it accepts two arrays,
* one of property identifiers and one of corresponding values.
*
* @static
* @memberOf _
* @since 0.4.0
* @category Array
* @param {Array} [props=[]] The property identifiers.
* @param {Array} [values=[]] The property values.
* @returns {Object} Returns the new object.
* @example
*
* _.zipObject(['a', 'b'], [1, 2]);
* // => { 'a': 1, 'b': 2 }
*/
function zipObject(props, values) {
return _baseZipObject(props || [], values || [], _assignValue);
}
var zipObject_1 = zipObject;
/* global window */
var lodash;
if (typeof commonjsRequire === "function") {
try {
lodash = {
cloneDeep: cloneDeep_1,
constant: constant_1,
defaults: defaults_1,
each: each,
filter: filter_1,
find: find_1,
flatten: flatten_1,
forEach: forEach_1,
forIn: forIn_1,
has: has_1,
isUndefined: isUndefined_1,
last: last_1,
map: map_1,
mapValues: mapValues_1,
max: max_1,
merge: merge_1,
min: min_1,
minBy: minBy_1,
now: now_1,
pick: pick_1,
range: range_1,
reduce: reduce_1,
sortBy: sortBy_1,
uniqueId: uniqueId_1,
values: values_1,
zipObject: zipObject_1,
};
} catch (e) {
// continue regardless of error
}
}
if (!lodash) {
lodash = window._;
}
var lodash_1 = lodash;
/*
* Simple doubly linked list implementation derived from Cormen, et al.,
* "Introduction to Algorithms".
*/
var list = List;
function List() {
var sentinel = {};
sentinel._next = sentinel._prev = sentinel;
this._sentinel = sentinel;
}
List.prototype.dequeue = function() {
var sentinel = this._sentinel;
var entry = sentinel._prev;
if (entry !== sentinel) {
unlink(entry);
return entry;
}
};
List.prototype.enqueue = function(entry) {
var sentinel = this._sentinel;
if (entry._prev && entry._next) {
unlink(entry);
}
entry._next = sentinel._next;
sentinel._next._prev = entry;
sentinel._next = entry;
entry._prev = sentinel;
};
List.prototype.toString = function() {
var strs = [];
var sentinel = this._sentinel;
var curr = sentinel._prev;
while (curr !== sentinel) {
strs.push(JSON.stringify(curr, filterOutLinks));
curr = curr._prev;
}
return "[" + strs.join(", ") + "]";
};
function unlink(entry) {
entry._prev._next = entry._next;
entry._next._prev = entry._prev;
delete entry._next;
delete entry._prev;
}
function filterOutLinks(k, v) {
if (k !== "_next" && k !== "_prev") {
return v;
}
}
var Graph$7 = graphlib_1.Graph;
/*
* A greedy heuristic for finding a feedback arc set for a graph. A feedback
* arc set is a set of edges that can be removed to make a graph acyclic.
* The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, "A fast and
* effective heuristic for the feedback arc set problem." This implementation
* adjusts that from the paper to allow for weighted edges.
*/
var greedyFas = greedyFAS;
var DEFAULT_WEIGHT_FN = lodash_1.constant(1);
function greedyFAS(g, weightFn) {
if (g.nodeCount() <= 1) {
return [];
}
var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);
var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);
// Expand multi-edges
return lodash_1.flatten(lodash_1.map(results, function(e) {
return g.outEdges(e.v, e.w);
}), true);
}
function doGreedyFAS(g, buckets, zeroIdx) {
var results = [];
var sources = buckets[buckets.length - 1];
var sinks = buckets[0];
var entry;
while (g.nodeCount()) {
while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }
while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }
if (g.nodeCount()) {
for (var i = buckets.length - 2; i > 0; --i) {
entry = buckets[i].dequeue();
if (entry) {
results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));
break;
}
}
}
}
return results;
}
function removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {
var results = collectPredecessors ? [] : undefined;
lodash_1.forEach(g.inEdges(entry.v), function(edge) {
var weight = g.edge(edge);
var uEntry = g.node(edge.v);
if (collectPredecessors) {
results.push({ v: edge.v, w: edge.w });
}
uEntry.out -= weight;
assignBucket(buckets, zeroIdx, uEntry);
});
lodash_1.forEach(g.outEdges(entry.v), function(edge) {
var weight = g.edge(edge);
var w = edge.w;
var wEntry = g.node(w);
wEntry["in"] -= weight;
assignBucket(buckets, zeroIdx, wEntry);
});
g.removeNode(entry.v);
return results;
}
function buildState(g, weightFn) {
var fasGraph = new Graph$7();
var maxIn = 0;
var maxOut = 0;
lodash_1.forEach(g.nodes(), function(v) {
fasGraph.setNode(v, { v: v, "in": 0, out: 0 });
});
// Aggregate weights on nodes, but also sum the weights across multi-edges
// into a single edge for the fasGraph.
lodash_1.forEach(g.edges(), function(e) {
var prevWeight = fasGraph.edge(e.v, e.w) || 0;
var weight = weightFn(e);
var edgeWeight = prevWeight + weight;
fasGraph.setEdge(e.v, e.w, edgeWeight);
maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);
maxIn = Math.max(maxIn, fasGraph.node(e.w)["in"] += weight);
});
var buckets = lodash_1.range(maxOut + maxIn + 3).map(function() { return new list(); });
var zeroIdx = maxIn + 1;
lodash_1.forEach(fasGraph.nodes(), function(v) {
assignBucket(buckets, zeroIdx, fasGraph.node(v));
});
return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };
}
function assignBucket(buckets, zeroIdx, entry) {
if (!entry.out) {
buckets[0].enqueue(entry);
} else if (!entry["in"]) {
buckets[buckets.length - 1].enqueue(entry);
} else {
buckets[entry.out - entry["in"] + zeroIdx].enqueue(entry);
}
}
var acyclic = {
run: run$2,
undo: undo$2
};
function run$2(g) {
var fas = (g.graph().acyclicer === "greedy"
? greedyFas(g, weightFn(g))
: dfsFAS(g));
lodash_1.forEach(fas, function(e) {
var label = g.edge(e);
g.removeEdge(e);
label.forwardName = e.name;
label.reversed = true;
g.setEdge(e.w, e.v, label, lodash_1.uniqueId("rev"));
});
function weightFn(g) {
return function(e) {
return g.edge(e).weight;
};
}
}
function dfsFAS(g) {
var fas = [];
var stack = {};
var visited = {};
function dfs(v) {
if (lodash_1.has(visited, v)) {
return;
}
visited[v] = true;
stack[v] = true;
lodash_1.forEach(g.outEdges(v), function(e) {
if (lodash_1.has(stack, e.w)) {
fas.push(e);
} else {
dfs(e.w);
}
});
delete stack[v];
}
lodash_1.forEach(g.nodes(), dfs);
return fas;
}
function undo$2(g) {
lodash_1.forEach(g.edges(), function(e) {
var label = g.edge(e);
if (label.reversed) {
g.removeEdge(e);
var forwardName = label.forwardName;
delete label.reversed;
delete label.forwardName;
g.setEdge(e.w, e.v, label, forwardName);
}
});
}
/* eslint "no-console": off */
var Graph$6 = graphlib_1.Graph;
var util$1 = {
addDummyNode: addDummyNode,
simplify: simplify$1,
asNonCompoundGraph: asNonCompoundGraph,
successorWeights: successorWeights,
predecessorWeights: predecessorWeights,
intersectRect: intersectRect,
buildLayerMatrix: buildLayerMatrix,
normalizeRanks: normalizeRanks$1,
removeEmptyRanks: removeEmptyRanks$1,
addBorderNode: addBorderNode$1,
maxRank: maxRank,
partition: partition,
time: time,
notime: notime
};
/*
* Adds a dummy node to the graph and return v.
*/
function addDummyNode(g, type, attrs, name) {
var v;
do {
v = lodash_1.uniqueId(name);
} while (g.hasNode(v));
attrs.dummy = type;
g.setNode(v, attrs);
return v;
}
/*
* Returns a new graph with only simple edges. Handles aggregation of data
* associated with multi-edges.
*/
function simplify$1(g) {
var simplified = new Graph$6().setGraph(g.graph());
lodash_1.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });
lodash_1.forEach(g.edges(), function(e) {
var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };
var label = g.edge(e);
simplified.setEdge(e.v, e.w, {
weight: simpleLabel.weight + label.weight,
minlen: Math.max(simpleLabel.minlen, label.minlen)
});
});
return simplified;
}
function asNonCompoundGraph(g) {
var simplified = new Graph$6({ multigraph: g.isMultigraph() }).setGraph(g.graph());
lodash_1.forEach(g.nodes(), function(v) {
if (!g.children(v).length) {
simplified.setNode(v, g.node(v));
}
});
lodash_1.forEach(g.edges(), function(e) {
simplified.setEdge(e, g.edge(e));
});
return simplified;
}
function successorWeights(g) {
var weightMap = lodash_1.map(g.nodes(), function(v) {
var sucs = {};
lodash_1.forEach(g.outEdges(v), function(e) {
sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;
});
return sucs;
});
return lodash_1.zipObject(g.nodes(), weightMap);
}
function predecessorWeights(g) {
var weightMap = lodash_1.map(g.nodes(), function(v) {
var preds = {};
lodash_1.forEach(g.inEdges(v), function(e) {
preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;
});
return preds;
});
return lodash_1.zipObject(g.nodes(), weightMap);
}
/*
* Finds where a line starting at point ({x, y}) would intersect a rectangle
* ({x, y, width, height}) if it were pointing at the rectangle's center.
*/
function intersectRect(rect, point) {
var x = rect.x;
var y = rect.y;
// Rectangle intersection algorithm from:
// http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes
var dx = point.x - x;
var dy = point.y - y;
var w = rect.width / 2;
var h = rect.height / 2;
if (!dx && !dy) {
throw new Error("Not possible to find intersection inside of the rectangle");
}
var sx, sy;
if (Math.abs(dy) * w > Math.abs(dx) * h) {
// Intersection is top or bottom of rect.
if (dy < 0) {
h = -h;
}
sx = h * dx / dy;
sy = h;
} else {
// Intersection is left or right of rect.
if (dx < 0) {
w = -w;
}
sx = w;
sy = w * dy / dx;
}
return { x: x + sx, y: y + sy };
}
/*
* Given a DAG with each node assigned "rank" and "order" properties, this
* function will produce a matrix with the ids of each node.
*/
function buildLayerMatrix(g) {
var layering = lodash_1.map(lodash_1.range(maxRank(g) + 1), function() { return []; });
lodash_1.forEach(g.nodes(), function(v) {
var node = g.node(v);
var rank = node.rank;
if (!lodash_1.isUndefined(rank)) {
layering[rank][node.order] = v;
}
});
return layering;
}
/*
* Adjusts the ranks for all nodes in the graph such that all nodes v have
* rank(v) >= 0 and at least one node w has rank(w) = 0.
*/
function normalizeRanks$1(g) {
var min = lodash_1.min(lodash_1.map(g.nodes(), function(v) { return g.node(v).rank; }));
lodash_1.forEach(g.nodes(), function(v) {
var node = g.node(v);
if (lodash_1.has(node, "rank")) {
node.rank -= min;
}
});
}
function removeEmptyRanks$1(g) {
// Ranks may not start at 0, so we need to offset them
var offset = lodash_1.min(lodash_1.map(g.nodes(), function(v) { return g.node(v).rank; }));
var layers = [];
lodash_1.forEach(g.nodes(), function(v) {
var rank = g.node(v).rank - offset;
if (!layers[rank]) {
layers[rank] = [];
}
layers[rank].push(v);
});
var delta = 0;
var nodeRankFactor = g.graph().nodeRankFactor;
lodash_1.forEach(layers, function(vs, i) {
if (lodash_1.isUndefined(vs) && i % nodeRankFactor !== 0) {
--delta;
} else if (delta) {
lodash_1.forEach(vs, function(v) { g.node(v).rank += delta; });
}
});
}
function addBorderNode$1(g, prefix, rank, order) {
var node = {
width: 0,
height: 0
};
if (arguments.length >= 4) {
node.rank = rank;
node.order = order;
}
return addDummyNode(g, "border", node, prefix);
}
function maxRank(g) {
return lodash_1.max(lodash_1.map(g.nodes(), function(v) {
var rank = g.node(v).rank;
if (!lodash_1.isUndefined(rank)) {
return rank;
}
}));
}
/*
* Partition a collection into two groups: `lhs` and `rhs`. If the supplied
* function returns true for an entry it goes into `lhs`. Otherwise it goes
* into `rhs.
*/
function partition(collection, fn) {
var result = { lhs: [], rhs: [] };
lodash_1.forEach(collection, function(value) {
if (fn(value)) {
result.lhs.push(value);
} else {
result.rhs.push(value);
}
});
return result;
}
/*
* Returns a new function that wraps `fn` with a timer. The wrapper logs the
* time it takes to execute the function.
*/
function time(name, fn) {
var start = lodash_1.now();
try {
return fn();
} finally {
console.log(name + " time: " + (lodash_1.now() - start) + "ms");
}
}
function notime(name, fn) {
return fn();
}
var normalize = {
run: run$1,
undo: undo$1
};
/*
* Breaks any long edges in the graph into short segments that span 1 layer
* each. This operation is undoable with the denormalize function.
*
* Pre-conditions:
*
* 1. The input graph is a DAG.
* 2. Each node in the graph has a "rank" property.
*
* Post-condition:
*
* 1. All edges in the graph have a length of 1.
* 2. Dummy nodes are added where edges have been split into segments.
* 3. The graph is augmented with a "dummyChains" attribute which contains
* the first dummy in each chain of dummy nodes produced.
*/
function run$1(g) {
g.graph().dummyChains = [];
lodash_1.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });
}
function normalizeEdge(g, e) {
var v = e.v;
var vRank = g.node(v).rank;
var w = e.w;
var wRank = g.node(w).rank;
var name = e.name;
var edgeLabel = g.edge(e);
var labelRank = edgeLabel.labelRank;
if (wRank === vRank + 1) return;
g.removeEdge(e);
var dummy, attrs, i;
for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {
edgeLabel.points = [];
attrs = {
width: 0, height: 0,
edgeLabel: edgeLabel, edgeObj: e,
rank: vRank
};
dummy = util$1.addDummyNode(g, "edge", attrs, "_d");
if (vRank === labelRank) {
attrs.width = edgeLabel.width;
attrs.height = edgeLabel.height;
attrs.dummy = "edge-label";
attrs.labelpos = edgeLabel.labelpos;
}
g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);
if (i === 0) {
g.graph().dummyChains.push(dummy);
}
v = dummy;
}
g.setEdge(v, w, { weight: edgeLabel.weight }, name);
}
function undo$1(g) {
lodash_1.forEach(g.graph().dummyChains, function(v) {
var node = g.node(v);
var origLabel = node.edgeLabel;
var w;
g.setEdge(node.edgeObj, origLabel);
while (node.dummy) {
w = g.successors(v)[0];
g.removeNode(v);
origLabel.points.push({ x: node.x, y: node.y });
if (node.dummy === "edge-label") {
origLabel.x = node.x;
origLabel.y = node.y;
origLabel.width = node.width;
origLabel.height = node.height;
}
v = w;
node = g.node(v);
}
});
}
var util = {
longestPath: longestPath$1,
slack: slack$2
};
/*
* Initializes ranks for the input graph using the longest path algorithm. This
* algorithm scales well and is fast in practice, it yields rather poor
* solutions. Nodes are pushed to the lowest layer possible, leaving the bottom
* ranks wide and leaving edges longer than necessary. However, due to its
* speed, this algorithm is good for getting an initial ranking that can be fed
* into other algorithms.
*
* This algorithm does not normalize layers because it will be used by other
* algorithms in most cases. If using this algorithm directly, be sure to
* run normalize at the end.
*
* Pre-conditions:
*
* 1. Input graph is a DAG.
* 2. Input graph node labels can be assigned properties.
*
* Post-conditions:
*
* 1. Each node will be assign an (unnormalized) "rank" property.
*/
function longestPath$1(g) {
var visited = {};
function dfs(v) {
var label = g.node(v);
if (lodash_1.has(visited, v)) {
return label.rank;
}
visited[v] = true;
var rank = lodash_1.min(lodash_1.map(g.outEdges(v), function(e) {
return dfs(e.w) - g.edge(e).minlen;
}));
if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3
rank === undefined || // return value of _.map([]) for Lodash 4
rank === null) { // return value of _.map([null])
rank = 0;
}
return (label.rank = rank);
}
lodash_1.forEach(g.sources(), dfs);
}
/*
* Returns the amount of slack for the given edge. The slack is defined as the
* difference between the length of the edge and its minimum length.
*/
function slack$2(g, e) {
return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;
}
var Graph$5 = graphlib_1.Graph;
var slack$1 = util.slack;
var feasibleTree_1 = feasibleTree;
/*
* Constructs a spanning tree with tight edges and adjusted the input node's
* ranks to achieve this. A tight edge is one that is has a length that matches
* its "minlen" attribute.
*
* The basic structure for this function is derived from Gansner, et al., "A
* Technique for Drawing Directed Graphs."
*
* Pre-conditions:
*
* 1. Graph must be a DAG.
* 2. Graph must be connected.
* 3. Graph must have at least one node.
* 5. Graph nodes must have been previously assigned a "rank" property that
* respects the "minlen" property of incident edges.
* 6. Graph edges must have a "minlen" property.
*
* Post-conditions:
*
* - Graph nodes will have their rank adjusted to ensure that all edges are
* tight.
*
* Returns a tree (undirected graph) that is constructed using only "tight"
* edges.
*/
function feasibleTree(g) {
var t = new Graph$5({ directed: false });
// Choose arbitrary node from which to start our tree
var start = g.nodes()[0];
var size = g.nodeCount();
t.setNode(start, {});
var edge, delta;
while (tightTree(t, g) < size) {
edge = findMinSlackEdge(t, g);
delta = t.hasNode(edge.v) ? slack$1(g, edge) : -slack$1(g, edge);
shiftRanks(t, g, delta);
}
return t;
}
/*
* Finds a maximal tree of tight edges and returns the number of nodes in the
* tree.
*/
function tightTree(t, g) {
function dfs(v) {
lodash_1.forEach(g.nodeEdges(v), function(e) {
var edgeV = e.v,
w = (v === edgeV) ? e.w : edgeV;
if (!t.hasNode(w) && !slack$1(g, e)) {
t.setNode(w, {});
t.setEdge(v, w, {});
dfs(w);
}
});
}
lodash_1.forEach(t.nodes(), dfs);
return t.nodeCount();
}
/*
* Finds the edge with the smallest slack that is incident on tree and returns
* it.
*/
function findMinSlackEdge(t, g) {
return lodash_1.minBy(g.edges(), function(e) {
if (t.hasNode(e.v) !== t.hasNode(e.w)) {
return slack$1(g, e);
}
});
}
function shiftRanks(t, g, delta) {
lodash_1.forEach(t.nodes(), function(v) {
g.node(v).rank += delta;
});
}
var slack = util.slack;
var initRank = util.longestPath;
var preorder = graphlib_1.alg.preorder;
var postorder$1 = graphlib_1.alg.postorder;
var simplify = util$1.simplify;
var networkSimplex_1 = networkSimplex;
// Expose some internals for testing purposes
networkSimplex.initLowLimValues = initLowLimValues;
networkSimplex.initCutValues = initCutValues;
networkSimplex.calcCutValue = calcCutValue;
networkSimplex.leaveEdge = leaveEdge;
networkSimplex.enterEdge = enterEdge;
networkSimplex.exchangeEdges = exchangeEdges;
/*
* The network simplex algorithm assigns ranks to each node in the input graph
* and iteratively improves the ranking to reduce the length of edges.
*
* Preconditions:
*
* 1. The input graph must be a DAG.
* 2. All nodes in the graph must have an object value.
* 3. All edges in the graph must have "minlen" and "weight" attributes.
*
* Postconditions:
*
* 1. All nodes in the graph will have an assigned "rank" attribute that has
* been optimized by the network simplex algorithm. Ranks start at 0.
*
*
* A rough sketch of the algorithm is as follows:
*
* 1. Assign initial ranks to each node. We use the longest path algorithm,
* which assigns ranks to the lowest position possible. In general this
* leads to very wide bottom ranks and unnecessarily long edges.
* 2. Construct a feasible tight tree. A tight tree is one such that all
* edges in the tree have no slack (difference between length of edge
* and minlen for the edge). This by itself greatly improves the assigned
* rankings by shorting edges.
* 3. Iteratively find edges that have negative cut values. Generally a
* negative cut value indicates that the edge could be removed and a new
* tree edge could be added to produce a more compact graph.
*
* Much of the algorithms here are derived from Gansner, et al., "A Technique
* for Drawing Directed Graphs." The structure of the file roughly follows the
* structure of the overall algorithm.
*/
function networkSimplex(g) {
g = simplify(g);
initRank(g);
var t = feasibleTree_1(g);
initLowLimValues(t);
initCutValues(t, g);
var e, f;
while ((e = leaveEdge(t))) {
f = enterEdge(t, g, e);
exchangeEdges(t, g, e, f);
}
}
/*
* Initializes cut values for all edges in the tree.
*/
function initCutValues(t, g) {
var vs = postorder$1(t, t.nodes());
vs = vs.slice(0, vs.length - 1);
lodash_1.forEach(vs, function(v) {
assignCutValue(t, g, v);
});
}
function assignCutValue(t, g, child) {
var childLab = t.node(child);
var parent = childLab.parent;
t.edge(child, parent).cutvalue = calcCutValue(t, g, child);
}
/*
* Given the tight tree, its graph, and a child in the graph calculate and
* return the cut value for the edge between the child and its parent.
*/
function calcCutValue(t, g, child) {
var childLab = t.node(child);
var parent = childLab.parent;
// True if the child is on the tail end of the edge in the directed graph
var childIsTail = true;
// The graph's view of the tree edge we're inspecting
var graphEdge = g.edge(child, parent);
// The accumulated cut value for the edge between this node and its parent
var cutValue = 0;
if (!graphEdge) {
childIsTail = false;
graphEdge = g.edge(parent, child);
}
cutValue = graphEdge.weight;
lodash_1.forEach(g.nodeEdges(child), function(e) {
var isOutEdge = e.v === child,
other = isOutEdge ? e.w : e.v;
if (other !== parent) {
var pointsToHead = isOutEdge === childIsTail,
otherWeight = g.edge(e).weight;
cutValue += pointsToHead ? otherWeight : -otherWeight;
if (isTreeEdge(t, child, other)) {
var otherCutValue = t.edge(child, other).cutvalue;
cutValue += pointsToHead ? -otherCutValue : otherCutValue;
}
}
});
return cutValue;
}
function initLowLimValues(tree, root) {
if (arguments.length < 2) {
root = tree.nodes()[0];
}
dfsAssignLowLim(tree, {}, 1, root);
}
function dfsAssignLowLim(tree, visited, nextLim, v, parent) {
var low = nextLim;
var label = tree.node(v);
visited[v] = true;
lodash_1.forEach(tree.neighbors(v), function(w) {
if (!lodash_1.has(visited, w)) {
nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);
}
});
label.low = low;
label.lim = nextLim++;
if (parent) {
label.parent = parent;
} else {
// TODO should be able to remove this when we incrementally update low lim
delete label.parent;
}
return nextLim;
}
function leaveEdge(tree) {
return lodash_1.find(tree.edges(), function(e) {
return tree.edge(e).cutvalue < 0;
});
}
function enterEdge(t, g, edge) {
var v = edge.v;
var w = edge.w;
// For the rest of this function we assume that v is the tail and w is the
// head, so if we don't have this edge in the graph we should flip it to
// match the correct orientation.
if (!g.hasEdge(v, w)) {
v = edge.w;
w = edge.v;
}
var vLabel = t.node(v);
var wLabel = t.node(w);
var tailLabel = vLabel;
var flip = false;
// If the root is in the tail of the edge then we need to flip the logic that
// checks for the head and tail nodes in the candidates function below.
if (vLabel.lim > wLabel.lim) {
tailLabel = wLabel;
flip = true;
}
var candidates = lodash_1.filter(g.edges(), function(edge) {
return flip === isDescendant(t, t.node(edge.v), tailLabel) &&
flip !== isDescendant(t, t.node(edge.w), tailLabel);
});
return lodash_1.minBy(candidates, function(edge) { return slack(g, edge); });
}
function exchangeEdges(t, g, e, f) {
var v = e.v;
var w = e.w;
t.removeEdge(v, w);
t.setEdge(f.v, f.w, {});
initLowLimValues(t);
initCutValues(t, g);
updateRanks(t, g);
}
function updateRanks(t, g) {
var root = lodash_1.find(t.nodes(), function(v) { return !g.node(v).parent; });
var vs = preorder(t, root);
vs = vs.slice(1);
lodash_1.forEach(vs, function(v) {
var parent = t.node(v).parent,
edge = g.edge(v, parent),
flipped = false;
if (!edge) {
edge = g.edge(parent, v);
flipped = true;
}
g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);
});
}
/*
* Returns true if the edge is in the tree.
*/
function isTreeEdge(tree, u, v) {
return tree.hasEdge(u, v);
}
/*
* Returns true if the specified node is descendant of the root node per the
* assigned low and lim attributes in the tree.
*/
function isDescendant(tree, vLabel, rootLabel) {
return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;
}
var longestPath = util.longestPath;
var rank_1 = rank;
/*
* Assigns a rank to each node in the input graph that respects the "minlen"
* constraint specified on edges between nodes.
*
* This basic structure is derived from Gansner, et al., "A Technique for
* Drawing Directed Graphs."
*
* Pre-conditions:
*
* 1. Graph must be a connected DAG
* 2. Graph nodes must be objects
* 3. Graph edges must have "weight" and "minlen" attributes
*
* Post-conditions:
*
* 1. Graph nodes will have a "rank" attribute based on the results of the
* algorithm. Ranks can start at any index (including negative), we'll
* fix them up later.
*/
function rank(g) {
switch(g.graph().ranker) {
case "network-simplex": networkSimplexRanker(g); break;
case "tight-tree": tightTreeRanker(g); break;
case "longest-path": longestPathRanker(g); break;
default: networkSimplexRanker(g);
}
}
// A fast and simple ranker, but results are far from optimal.
var longestPathRanker = longestPath;
function tightTreeRanker(g) {
longestPath(g);
feasibleTree_1(g);
}
function networkSimplexRanker(g) {
networkSimplex_1(g);
}
var parentDummyChains_1 = parentDummyChains;
function parentDummyChains(g) {
var postorderNums = postorder(g);
lodash_1.forEach(g.graph().dummyChains, function(v) {
var node = g.node(v);
var edgeObj = node.edgeObj;
var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);
var path = pathData.path;
var lca = pathData.lca;
var pathIdx = 0;
var pathV = path[pathIdx];
var ascending = true;
while (v !== edgeObj.w) {
node = g.node(v);
if (ascending) {
while ((pathV = path[pathIdx]) !== lca &&
g.node(pathV).maxRank < node.rank) {
pathIdx++;
}
if (pathV === lca) {
ascending = false;
}
}
if (!ascending) {
while (pathIdx < path.length - 1 &&
g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {
pathIdx++;
}
pathV = path[pathIdx];
}
g.setParent(v, pathV);
v = g.successors(v)[0];
}
});
}
// Find a path from v to w through the lowest common ancestor (LCA). Return the
// full path and the LCA.
function findPath(g, postorderNums, v, w) {
var vPath = [];
var wPath = [];
var low = Math.min(postorderNums[v].low, postorderNums[w].low);
var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);
var parent;
var lca;
// Traverse up from v to find the LCA
parent = v;
do {
parent = g.parent(parent);
vPath.push(parent);
} while (parent &&
(postorderNums[parent].low > low || lim > postorderNums[parent].lim));
lca = parent;
// Traverse from w to LCA
parent = w;
while ((parent = g.parent(parent)) !== lca) {
wPath.push(parent);
}
return { path: vPath.concat(wPath.reverse()), lca: lca };
}
function postorder(g) {
var result = {};
var lim = 0;
function dfs(v) {
var low = lim;
lodash_1.forEach(g.children(v), dfs);
result[v] = { low: low, lim: lim++ };
}
lodash_1.forEach(g.children(), dfs);
return result;
}
var nestingGraph = {
run: run,
cleanup: cleanup
};
/*
* A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,
* adds appropriate edges to ensure that all cluster nodes are placed between
* these boundries, and ensures that the graph is connected.
*
* In addition we ensure, through the use of the minlen property, that nodes
* and subgraph border nodes to not end up on the same rank.
*
* Preconditions:
*
* 1. Input graph is a DAG
* 2. Nodes in the input graph has a minlen attribute
*
* Postconditions:
*
* 1. Input graph is connected.
* 2. Dummy nodes are added for the tops and bottoms of subgraphs.
* 3. The minlen attribute for nodes is adjusted to ensure nodes do not
* get placed on the same rank as subgraph border nodes.
*
* The nesting graph idea comes from Sander, "Layout of Compound Directed
* Graphs."
*/
function run(g) {
var root = util$1.addDummyNode(g, "root", {}, "_root");
var depths = treeDepths(g);
var height = lodash_1.max(lodash_1.values(depths)) - 1; // Note: depths is an Object not an array
var nodeSep = 2 * height + 1;
g.graph().nestingRoot = root;
// Multiply minlen by nodeSep to align nodes on non-border ranks.
lodash_1.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });
// Calculate a weight that is sufficient to keep subgraphs vertically compact
var weight = sumWeights(g) + 1;
// Create border nodes and link them up
lodash_1.forEach(g.children(), function(child) {
dfs(g, root, nodeSep, weight, height, depths, child);
});
// Save the multiplier for node layers for later removal of empty border
// layers.
g.graph().nodeRankFactor = nodeSep;
}
function dfs(g, root, nodeSep, weight, height, depths, v) {
var children = g.children(v);
if (!children.length) {
if (v !== root) {
g.setEdge(root, v, { weight: 0, minlen: nodeSep });
}
return;
}
var top = util$1.addBorderNode(g, "_bt");
var bottom = util$1.addBorderNode(g, "_bb");
var label = g.node(v);
g.setParent(top, v);
label.borderTop = top;
g.setParent(bottom, v);
label.borderBottom = bottom;
lodash_1.forEach(children, function(child) {
dfs(g, root, nodeSep, weight, height, depths, child);
var childNode = g.node(child);
var childTop = childNode.borderTop ? childNode.borderTop : child;
var childBottom = childNode.borderBottom ? childNode.borderBottom : child;
var thisWeight = childNode.borderTop ? weight : 2 * weight;
var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;
g.setEdge(top, childTop, {
weight: thisWeight,
minlen: minlen,
nestingEdge: true
});
g.setEdge(childBottom, bottom, {
weight: thisWeight,
minlen: minlen,
nestingEdge: true
});
});
if (!g.parent(v)) {
g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });
}
}
function treeDepths(g) {
var depths = {};
function dfs(v, depth) {
var children = g.children(v);
if (children && children.length) {
lodash_1.forEach(children, function(child) {
dfs(child, depth + 1);
});
}
depths[v] = depth;
}
lodash_1.forEach(g.children(), function(v) { dfs(v, 1); });
return depths;
}
function sumWeights(g) {
return lodash_1.reduce(g.edges(), function(acc, e) {
return acc + g.edge(e).weight;
}, 0);
}
function cleanup(g) {
var graphLabel = g.graph();
g.removeNode(graphLabel.nestingRoot);
delete graphLabel.nestingRoot;
lodash_1.forEach(g.edges(), function(e) {
var edge = g.edge(e);
if (edge.nestingEdge) {
g.removeEdge(e);
}
});
}
var addBorderSegments_1 = addBorderSegments;
function addBorderSegments(g) {
function dfs(v) {
var children = g.children(v);
var node = g.node(v);
if (children.length) {
lodash_1.forEach(children, dfs);
}
if (lodash_1.has(node, "minRank")) {
node.borderLeft = [];
node.borderRight = [];
for (var rank = node.minRank, maxRank = node.maxRank + 1;
rank < maxRank;
++rank) {
addBorderNode(g, "borderLeft", "_bl", v, node, rank);
addBorderNode(g, "borderRight", "_br", v, node, rank);
}
}
}
lodash_1.forEach(g.children(), dfs);
}
function addBorderNode(g, prop, prefix, sg, sgNode, rank) {
var label = { width: 0, height: 0, rank: rank, borderType: prop };
var prev = sgNode[prop][rank - 1];
var curr = util$1.addDummyNode(g, "border", label, prefix);
sgNode[prop][rank] = curr;
g.setParent(curr, sg);
if (prev) {
g.setEdge(prev, curr, { weight: 1 });
}
}
var coordinateSystem = {
adjust: adjust,
undo: undo
};
function adjust(g) {
var rankDir = g.graph().rankdir.toLowerCase();
if (rankDir === "lr" || rankDir === "rl") {
swapWidthHeight(g);
}
}
function undo(g) {
var rankDir = g.graph().rankdir.toLowerCase();
if (rankDir === "bt" || rankDir === "rl") {
reverseY(g);
}
if (rankDir === "lr" || rankDir === "rl") {
swapXY(g);
swapWidthHeight(g);
}
}
function swapWidthHeight(g) {
lodash_1.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });
lodash_1.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });
}
function swapWidthHeightOne(attrs) {
var w = attrs.width;
attrs.width = attrs.height;
attrs.height = w;
}
function reverseY(g) {
lodash_1.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });
lodash_1.forEach(g.edges(), function(e) {
var edge = g.edge(e);
lodash_1.forEach(edge.points, reverseYOne);
if (lodash_1.has(edge, "y")) {
reverseYOne(edge);
}
});
}
function reverseYOne(attrs) {
attrs.y = -attrs.y;
}
function swapXY(g) {
lodash_1.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });
lodash_1.forEach(g.edges(), function(e) {
var edge = g.edge(e);
lodash_1.forEach(edge.points, swapXYOne);
if (lodash_1.has(edge, "x")) {
swapXYOne(edge);
}
});
}
function swapXYOne(attrs) {
var x = attrs.x;
attrs.x = attrs.y;
attrs.y = x;
}
var initOrder_1 = initOrder;
/*
* Assigns an initial order value for each node by performing a DFS search
* starting from nodes in the first rank. Nodes are assigned an order in their
* rank as they are first visited.
*
* This approach comes from Gansner, et al., "A Technique for Drawing Directed
* Graphs."
*
* Returns a layering matrix with an array per layer and each layer sorted by
* the order of its nodes.
*/
function initOrder(g) {
var visited = {};
var simpleNodes = lodash_1.filter(g.nodes(), function(v) {
return !g.children(v).length;
});
var maxRank = lodash_1.max(lodash_1.map(simpleNodes, function(v) { return g.node(v).rank; }));
var layers = lodash_1.map(lodash_1.range(maxRank + 1), function() { return []; });
function dfs(v) {
if (lodash_1.has(visited, v)) return;
visited[v] = true;
var node = g.node(v);
layers[node.rank].push(v);
lodash_1.forEach(g.successors(v), dfs);
}
var orderedVs = lodash_1.sortBy(simpleNodes, function(v) { return g.node(v).rank; });
lodash_1.forEach(orderedVs, dfs);
return layers;
}
var crossCount_1 = crossCount;
/*
* A function that takes a layering (an array of layers, each with an array of
* ordererd nodes) and a graph and returns a weighted crossing count.
*
* Pre-conditions:
*
* 1. Input graph must be simple (not a multigraph), directed, and include
* only simple edges.
* 2. Edges in the input graph must have assigned weights.
*
* Post-conditions:
*
* 1. The graph and layering matrix are left unchanged.
*
* This algorithm is derived from Barth, et al., "Bilayer Cross Counting."
*/
function crossCount(g, layering) {
var cc = 0;
for (var i = 1; i < layering.length; ++i) {
cc += twoLayerCrossCount(g, layering[i-1], layering[i]);
}
return cc;
}
function twoLayerCrossCount(g, northLayer, southLayer) {
// Sort all of the edges between the north and south layers by their position
// in the north layer and then the south. Map these edges to the position of
// their head in the south layer.
var southPos = lodash_1.zipObject(southLayer,
lodash_1.map(southLayer, function (v, i) { return i; }));
var southEntries = lodash_1.flatten(lodash_1.map(northLayer, function(v) {
return lodash_1.sortBy(lodash_1.map(g.outEdges(v), function(e) {
return { pos: southPos[e.w], weight: g.edge(e).weight };
}), "pos");
}), true);
// Build the accumulator tree
var firstIndex = 1;
while (firstIndex < southLayer.length) firstIndex <<= 1;
var treeSize = 2 * firstIndex - 1;
firstIndex -= 1;
var tree = lodash_1.map(new Array(treeSize), function() { return 0; });
// Calculate the weighted crossings
var cc = 0;
lodash_1.forEach(southEntries.forEach(function(entry) {
var index = entry.pos + firstIndex;
tree[index] += entry.weight;
var weightSum = 0;
while (index > 0) {
if (index % 2) {
weightSum += tree[index + 1];
}
index = (index - 1) >> 1;
tree[index] += entry.weight;
}
cc += entry.weight * weightSum;
}));
return cc;
}
var barycenter_1 = barycenter;
function barycenter(g, movable) {
return lodash_1.map(movable, function(v) {
var inV = g.inEdges(v);
if (!inV.length) {
return { v: v };
} else {
var result = lodash_1.reduce(inV, function(acc, e) {
var edge = g.edge(e),
nodeU = g.node(e.v);
return {
sum: acc.sum + (edge.weight * nodeU.order),
weight: acc.weight + edge.weight
};
}, { sum: 0, weight: 0 });
return {
v: v,
barycenter: result.sum / result.weight,
weight: result.weight
};
}
});
}
var resolveConflicts_1 = resolveConflicts;
/*
* Given a list of entries of the form {v, barycenter, weight} and a
* constraint graph this function will resolve any conflicts between the
* constraint graph and the barycenters for the entries. If the barycenters for
* an entry would violate a constraint in the constraint graph then we coalesce
* the nodes in the conflict into a new node that respects the contraint and
* aggregates barycenter and weight information.
*
* This implementation is based on the description in Forster, "A Fast and
* Simple Hueristic for Constrained Two-Level Crossing Reduction," thought it
* differs in some specific details.
*
* Pre-conditions:
*
* 1. Each entry has the form {v, barycenter, weight}, or if the node has
* no barycenter, then {v}.
*
* Returns:
*
* A new list of entries of the form {vs, i, barycenter, weight}. The list
* `vs` may either be a singleton or it may be an aggregation of nodes
* ordered such that they do not violate constraints from the constraint
* graph. The property `i` is the lowest original index of any of the
* elements in `vs`.
*/
function resolveConflicts(entries, cg) {
var mappedEntries = {};
lodash_1.forEach(entries, function(entry, i) {
var tmp = mappedEntries[entry.v] = {
indegree: 0,
"in": [],
out: [],
vs: [entry.v],
i: i
};
if (!lodash_1.isUndefined(entry.barycenter)) {
tmp.barycenter = entry.barycenter;
tmp.weight = entry.weight;
}
});
lodash_1.forEach(cg.edges(), function(e) {
var entryV = mappedEntries[e.v];
var entryW = mappedEntries[e.w];
if (!lodash_1.isUndefined(entryV) && !lodash_1.isUndefined(entryW)) {
entryW.indegree++;
entryV.out.push(mappedEntries[e.w]);
}
});
var sourceSet = lodash_1.filter(mappedEntries, function(entry) {
return !entry.indegree;
});
return doResolveConflicts(sourceSet);
}
function doResolveConflicts(sourceSet) {
var entries = [];
function handleIn(vEntry) {
return function(uEntry) {
if (uEntry.merged) {
return;
}
if (lodash_1.isUndefined(uEntry.barycenter) ||
lodash_1.isUndefined(vEntry.barycenter) ||
uEntry.barycenter >= vEntry.barycenter) {
mergeEntries(vEntry, uEntry);
}
};
}
function handleOut(vEntry) {
return function(wEntry) {
wEntry["in"].push(vEntry);
if (--wEntry.indegree === 0) {
sourceSet.push(wEntry);
}
};
}
while (sourceSet.length) {
var entry = sourceSet.pop();
entries.push(entry);
lodash_1.forEach(entry["in"].reverse(), handleIn(entry));
lodash_1.forEach(entry.out, handleOut(entry));
}
return lodash_1.map(lodash_1.filter(entries, function(entry) { return !entry.merged; }),
function(entry) {
return lodash_1.pick(entry, ["vs", "i", "barycenter", "weight"]);
});
}
function mergeEntries(target, source) {
var sum = 0;
var weight = 0;
if (target.weight) {
sum += target.barycenter * target.weight;
weight += target.weight;
}
if (source.weight) {
sum += source.barycenter * source.weight;
weight += source.weight;
}
target.vs = source.vs.concat(target.vs);
target.barycenter = sum / weight;
target.weight = weight;
target.i = Math.min(source.i, target.i);
source.merged = true;
}
var sort_1 = sort;
function sort(entries, biasRight) {
var parts = util$1.partition(entries, function(entry) {
return lodash_1.has(entry, "barycenter");
});
var sortable = parts.lhs,
unsortable = lodash_1.sortBy(parts.rhs, function(entry) { return -entry.i; }),
vs = [],
sum = 0,
weight = 0,
vsIndex = 0;
sortable.sort(compareWithBias(!!biasRight));
vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
lodash_1.forEach(sortable, function (entry) {
vsIndex += entry.vs.length;
vs.push(entry.vs);
sum += entry.barycenter * entry.weight;
weight += entry.weight;
vsIndex = consumeUnsortable(vs, unsortable, vsIndex);
});
var result = { vs: lodash_1.flatten(vs, true) };
if (weight) {
result.barycenter = sum / weight;
result.weight = weight;
}
return result;
}
function consumeUnsortable(vs, unsortable, index) {
var last;
while (unsortable.length && (last = lodash_1.last(unsortable)).i <= index) {
unsortable.pop();
vs.push(last.vs);
index++;
}
return index;
}
function compareWithBias(bias) {
return function(entryV, entryW) {
if (entryV.barycenter < entryW.barycenter) {
return -1;
} else if (entryV.barycenter > entryW.barycenter) {
return 1;
}
return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;
};
}
var sortSubgraph_1 = sortSubgraph;
function sortSubgraph(g, v, cg, biasRight) {
var movable = g.children(v);
var node = g.node(v);
var bl = node ? node.borderLeft : undefined;
var br = node ? node.borderRight: undefined;
var subgraphs = {};
if (bl) {
movable = lodash_1.filter(movable, function(w) {
return w !== bl && w !== br;
});
}
var barycenters = barycenter_1(g, movable);
lodash_1.forEach(barycenters, function(entry) {
if (g.children(entry.v).length) {
var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);
subgraphs[entry.v] = subgraphResult;
if (lodash_1.has(subgraphResult, "barycenter")) {
mergeBarycenters(entry, subgraphResult);
}
}
});
var entries = resolveConflicts_1(barycenters, cg);
expandSubgraphs(entries, subgraphs);
var result = sort_1(entries, biasRight);
if (bl) {
result.vs = lodash_1.flatten([bl, result.vs, br], true);
if (g.predecessors(bl).length) {
var blPred = g.node(g.predecessors(bl)[0]),
brPred = g.node(g.predecessors(br)[0]);
if (!lodash_1.has(result, "barycenter")) {
result.barycenter = 0;
result.weight = 0;
}
result.barycenter = (result.barycenter * result.weight +
blPred.order + brPred.order) / (result.weight + 2);
result.weight += 2;
}
}
return result;
}
function expandSubgraphs(entries, subgraphs) {
lodash_1.forEach(entries, function(entry) {
entry.vs = lodash_1.flatten(entry.vs.map(function(v) {
if (subgraphs[v]) {
return subgraphs[v].vs;
}
return v;
}), true);
});
}
function mergeBarycenters(target, other) {
if (!lodash_1.isUndefined(target.barycenter)) {
target.barycenter = (target.barycenter * target.weight +
other.barycenter * other.weight) /
(target.weight + other.weight);
target.weight += other.weight;
} else {
target.barycenter = other.barycenter;
target.weight = other.weight;
}
}
var Graph$4 = graphlib_1.Graph;
var buildLayerGraph_1 = buildLayerGraph;
/*
* Constructs a graph that can be used to sort a layer of nodes. The graph will
* contain all base and subgraph nodes from the request layer in their original
* hierarchy and any edges that are incident on these nodes and are of the type
* requested by the "relationship" parameter.
*
* Nodes from the requested rank that do not have parents are assigned a root
* node in the output graph, which is set in the root graph attribute. This
* makes it easy to walk the hierarchy of movable nodes during ordering.
*
* Pre-conditions:
*
* 1. Input graph is a DAG
* 2. Base nodes in the input graph have a rank attribute
* 3. Subgraph nodes in the input graph has minRank and maxRank attributes
* 4. Edges have an assigned weight
*
* Post-conditions:
*
* 1. Output graph has all nodes in the movable rank with preserved
* hierarchy.
* 2. Root nodes in the movable layer are made children of the node
* indicated by the root attribute of the graph.
* 3. Non-movable nodes incident on movable nodes, selected by the
* relationship parameter, are included in the graph (without hierarchy).
* 4. Edges incident on movable nodes, selected by the relationship
* parameter, are added to the output graph.
* 5. The weights for copied edges are aggregated as need, since the output
* graph is not a multi-graph.
*/
function buildLayerGraph(g, rank, relationship) {
var root = createRootNode(g),
result = new Graph$4({ compound: true }).setGraph({ root: root })
.setDefaultNodeLabel(function(v) { return g.node(v); });
lodash_1.forEach(g.nodes(), function(v) {
var node = g.node(v),
parent = g.parent(v);
if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {
result.setNode(v);
result.setParent(v, parent || root);
// This assumes we have only short edges!
lodash_1.forEach(g[relationship](v), function(e) {
var u = e.v === v ? e.w : e.v,
edge = result.edge(u, v),
weight = !lodash_1.isUndefined(edge) ? edge.weight : 0;
result.setEdge(u, v, { weight: g.edge(e).weight + weight });
});
if (lodash_1.has(node, "minRank")) {
result.setNode(v, {
borderLeft: node.borderLeft[rank],
borderRight: node.borderRight[rank]
});
}
}
});
return result;
}
function createRootNode(g) {
var v;
while (g.hasNode((v = lodash_1.uniqueId("_root"))));
return v;
}
var addSubgraphConstraints_1 = addSubgraphConstraints;
function addSubgraphConstraints(g, cg, vs) {
var prev = {},
rootPrev;
lodash_1.forEach(vs, function(v) {
var child = g.parent(v),
parent,
prevChild;
while (child) {
parent = g.parent(child);
if (parent) {
prevChild = prev[parent];
prev[parent] = child;
} else {
prevChild = rootPrev;
rootPrev = child;
}
if (prevChild && prevChild !== child) {
cg.setEdge(prevChild, child);
return;
}
child = parent;
}
});
/*
function dfs(v) {
var children = v ? g.children(v) : g.children();
if (children.length) {
var min = Number.POSITIVE_INFINITY,
subgraphs = [];
_.each(children, function(child) {
var childMin = dfs(child);
if (g.children(child).length) {
subgraphs.push({ v: child, order: childMin });
}
min = Math.min(min, childMin);
});
_.reduce(_.sortBy(subgraphs, "order"), function(prev, curr) {
cg.setEdge(prev.v, curr.v);
return curr;
});
return min;
}
return g.node(v).order;
}
dfs(undefined);
*/
}
var Graph$3 = graphlib_1.Graph;
var order_1 = order;
/*
* Applies heuristics to minimize edge crossings in the graph and sets the best
* order solution as an order attribute on each node.
*
* Pre-conditions:
*
* 1. Graph must be DAG
* 2. Graph nodes must be objects with a "rank" attribute
* 3. Graph edges must have the "weight" attribute
*
* Post-conditions:
*
* 1. Graph nodes will have an "order" attribute based on the results of the
* algorithm.
*/
function order(g) {
var maxRank = util$1.maxRank(g),
downLayerGraphs = buildLayerGraphs(g, lodash_1.range(1, maxRank + 1), "inEdges"),
upLayerGraphs = buildLayerGraphs(g, lodash_1.range(maxRank - 1, -1, -1), "outEdges");
var layering = initOrder_1(g);
assignOrder(g, layering);
var bestCC = Number.POSITIVE_INFINITY,
best;
for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {
sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);
layering = util$1.buildLayerMatrix(g);
var cc = crossCount_1(g, layering);
if (cc < bestCC) {
lastBest = 0;
best = lodash_1.cloneDeep(layering);
bestCC = cc;
}
}
assignOrder(g, best);
}
function buildLayerGraphs(g, ranks, relationship) {
return lodash_1.map(ranks, function(rank) {
return buildLayerGraph_1(g, rank, relationship);
});
}
function sweepLayerGraphs(layerGraphs, biasRight) {
var cg = new Graph$3();
lodash_1.forEach(layerGraphs, function(lg) {
var root = lg.graph().root;
var sorted = sortSubgraph_1(lg, root, cg, biasRight);
lodash_1.forEach(sorted.vs, function(v, i) {
lg.node(v).order = i;
});
addSubgraphConstraints_1(lg, cg, sorted.vs);
});
}
function assignOrder(g, layering) {
lodash_1.forEach(layering, function(layer) {
lodash_1.forEach(layer, function(v, i) {
g.node(v).order = i;
});
});
}
var Graph$2 = graphlib_1.Graph;
/*
* This module provides coordinate assignment based on Brandes and Köpf, "Fast
* and Simple Horizontal Coordinate Assignment."
*/
var bk = {
positionX: positionX$1,
findType1Conflicts: findType1Conflicts,
findType2Conflicts: findType2Conflicts,
addConflict: addConflict,
hasConflict: hasConflict,
verticalAlignment: verticalAlignment,
horizontalCompaction: horizontalCompaction,
alignCoordinates: alignCoordinates,
findSmallestWidthAlignment: findSmallestWidthAlignment,
balance: balance
};
/*
* Marks all edges in the graph with a type-1 conflict with the "type1Conflict"
* property. A type-1 conflict is one where a non-inner segment crosses an
* inner segment. An inner segment is an edge with both incident nodes marked
* with the "dummy" property.
*
* This algorithm scans layer by layer, starting with the second, for type-1
* conflicts between the current layer and the previous layer. For each layer
* it scans the nodes from left to right until it reaches one that is incident
* on an inner segment. It then scans predecessors to determine if they have
* edges that cross that inner segment. At the end a final scan is done for all
* nodes on the current rank to see if they cross the last visited inner
* segment.
*
* This algorithm (safely) assumes that a dummy node will only be incident on a
* single node in the layers being scanned.
*/
function findType1Conflicts(g, layering) {
var conflicts = {};
function visitLayer(prevLayer, layer) {
var
// last visited node in the previous layer that is incident on an inner
// segment.
k0 = 0,
// Tracks the last node in this layer scanned for crossings with a type-1
// segment.
scanPos = 0,
prevLayerLength = prevLayer.length,
lastNode = lodash_1.last(layer);
lodash_1.forEach(layer, function(v, i) {
var w = findOtherInnerSegmentNode(g, v),
k1 = w ? g.node(w).order : prevLayerLength;
if (w || v === lastNode) {
lodash_1.forEach(layer.slice(scanPos, i +1), function(scanNode) {
lodash_1.forEach(g.predecessors(scanNode), function(u) {
var uLabel = g.node(u),
uPos = uLabel.order;
if ((uPos < k0 || k1 < uPos) &&
!(uLabel.dummy && g.node(scanNode).dummy)) {
addConflict(conflicts, u, scanNode);
}
});
});
scanPos = i + 1;
k0 = k1;
}
});
return layer;
}
lodash_1.reduce(layering, visitLayer);
return conflicts;
}
function findType2Conflicts(g, layering) {
var conflicts = {};
function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {
var v;
lodash_1.forEach(lodash_1.range(southPos, southEnd), function(i) {
v = south[i];
if (g.node(v).dummy) {
lodash_1.forEach(g.predecessors(v), function(u) {
var uNode = g.node(u);
if (uNode.dummy &&
(uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {
addConflict(conflicts, u, v);
}
});
}
});
}
function visitLayer(north, south) {
var prevNorthPos = -1,
nextNorthPos,
southPos = 0;
lodash_1.forEach(south, function(v, southLookahead) {
if (g.node(v).dummy === "border") {
var predecessors = g.predecessors(v);
if (predecessors.length) {
nextNorthPos = g.node(predecessors[0]).order;
scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);
southPos = southLookahead;
prevNorthPos = nextNorthPos;
}
}
scan(south, southPos, south.length, nextNorthPos, north.length);
});
return south;
}
lodash_1.reduce(layering, visitLayer);
return conflicts;
}
function findOtherInnerSegmentNode(g, v) {
if (g.node(v).dummy) {
return lodash_1.find(g.predecessors(v), function(u) {
return g.node(u).dummy;
});
}
}
function addConflict(conflicts, v, w) {
if (v > w) {
var tmp = v;
v = w;
w = tmp;
}
var conflictsV = conflicts[v];
if (!conflictsV) {
conflicts[v] = conflictsV = {};
}
conflictsV[w] = true;
}
function hasConflict(conflicts, v, w) {
if (v > w) {
var tmp = v;
v = w;
w = tmp;
}
return lodash_1.has(conflicts[v], w);
}
/*
* Try to align nodes into vertical "blocks" where possible. This algorithm
* attempts to align a node with one of its median neighbors. If the edge
* connecting a neighbor is a type-1 conflict then we ignore that possibility.
* If a previous node has already formed a block with a node after the node
* we're trying to form a block with, we also ignore that possibility - our
* blocks would be split in that scenario.
*/
function verticalAlignment(g, layering, conflicts, neighborFn) {
var root = {},
align = {},
pos = {};
// We cache the position here based on the layering because the graph and
// layering may be out of sync. The layering matrix is manipulated to
// generate different extreme alignments.
lodash_1.forEach(layering, function(layer) {
lodash_1.forEach(layer, function(v, order) {
root[v] = v;
align[v] = v;
pos[v] = order;
});
});
lodash_1.forEach(layering, function(layer) {
var prevIdx = -1;
lodash_1.forEach(layer, function(v) {
var ws = neighborFn(v);
if (ws.length) {
ws = lodash_1.sortBy(ws, function(w) { return pos[w]; });
var mp = (ws.length - 1) / 2;
for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {
var w = ws[i];
if (align[v] === v &&
prevIdx < pos[w] &&
!hasConflict(conflicts, v, w)) {
align[w] = v;
align[v] = root[v] = root[w];
prevIdx = pos[w];
}
}
}
});
});
return { root: root, align: align };
}
function horizontalCompaction(g, layering, root, align, reverseSep) {
// This portion of the algorithm differs from BK due to a number of problems.
// Instead of their algorithm we construct a new block graph and do two
// sweeps. The first sweep places blocks with the smallest possible
// coordinates. The second sweep removes unused space by moving blocks to the
// greatest coordinates without violating separation.
var xs = {},
blockG = buildBlockGraph(g, layering, root, reverseSep),
borderType = reverseSep ? "borderLeft" : "borderRight";
function iterate(setXsFunc, nextNodesFunc) {
var stack = blockG.nodes();
var elem = stack.pop();
var visited = {};
while (elem) {
if (visited[elem]) {
setXsFunc(elem);
} else {
visited[elem] = true;
stack.push(elem);
stack = stack.concat(nextNodesFunc(elem));
}
elem = stack.pop();
}
}
// First pass, assign smallest coordinates
function pass1(elem) {
xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {
return Math.max(acc, xs[e.v] + blockG.edge(e));
}, 0);
}
// Second pass, assign greatest coordinates
function pass2(elem) {
var min = blockG.outEdges(elem).reduce(function(acc, e) {
return Math.min(acc, xs[e.w] - blockG.edge(e));
}, Number.POSITIVE_INFINITY);
var node = g.node(elem);
if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {
xs[elem] = Math.max(xs[elem], min);
}
}
iterate(pass1, blockG.predecessors.bind(blockG));
iterate(pass2, blockG.successors.bind(blockG));
// Assign x coordinates to all nodes
lodash_1.forEach(align, function(v) {
xs[v] = xs[root[v]];
});
return xs;
}
function buildBlockGraph(g, layering, root, reverseSep) {
var blockGraph = new Graph$2(),
graphLabel = g.graph(),
sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);
lodash_1.forEach(layering, function(layer) {
var u;
lodash_1.forEach(layer, function(v) {
var vRoot = root[v];
blockGraph.setNode(vRoot);
if (u) {
var uRoot = root[u],
prevMax = blockGraph.edge(uRoot, vRoot);
blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));
}
u = v;
});
});
return blockGraph;
}
/*
* Returns the alignment that has the smallest width of the given alignments.
*/
function findSmallestWidthAlignment(g, xss) {
return lodash_1.minBy(lodash_1.values(xss), function (xs) {
var max = Number.NEGATIVE_INFINITY;
var min = Number.POSITIVE_INFINITY;
lodash_1.forIn(xs, function (x, v) {
var halfWidth = width(g, v) / 2;
max = Math.max(x + halfWidth, max);
min = Math.min(x - halfWidth, min);
});
return max - min;
});
}
/*
* Align the coordinates of each of the layout alignments such that
* left-biased alignments have their minimum coordinate at the same point as
* the minimum coordinate of the smallest width alignment and right-biased
* alignments have their maximum coordinate at the same point as the maximum
* coordinate of the smallest width alignment.
*/
function alignCoordinates(xss, alignTo) {
var alignToVals = lodash_1.values(alignTo),
alignToMin = lodash_1.min(alignToVals),
alignToMax = lodash_1.max(alignToVals);
lodash_1.forEach(["u", "d"], function(vert) {
lodash_1.forEach(["l", "r"], function(horiz) {
var alignment = vert + horiz,
xs = xss[alignment],
delta;
if (xs === alignTo) return;
var xsVals = lodash_1.values(xs);
delta = horiz === "l" ? alignToMin - lodash_1.min(xsVals) : alignToMax - lodash_1.max(xsVals);
if (delta) {
xss[alignment] = lodash_1.mapValues(xs, function(x) { return x + delta; });
}
});
});
}
function balance(xss, align) {
return lodash_1.mapValues(xss.ul, function(ignore, v) {
if (align) {
return xss[align.toLowerCase()][v];
} else {
var xs = lodash_1.sortBy(lodash_1.map(xss, v));
return (xs[1] + xs[2]) / 2;
}
});
}
function positionX$1(g) {
var layering = util$1.buildLayerMatrix(g);
var conflicts = lodash_1.merge(
findType1Conflicts(g, layering),
findType2Conflicts(g, layering));
var xss = {};
var adjustedLayering;
lodash_1.forEach(["u", "d"], function(vert) {
adjustedLayering = vert === "u" ? layering : lodash_1.values(layering).reverse();
lodash_1.forEach(["l", "r"], function(horiz) {
if (horiz === "r") {
adjustedLayering = lodash_1.map(adjustedLayering, function(inner) {
return lodash_1.values(inner).reverse();
});
}
var neighborFn = (vert === "u" ? g.predecessors : g.successors).bind(g);
var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);
var xs = horizontalCompaction(g, adjustedLayering,
align.root, align.align, horiz === "r");
if (horiz === "r") {
xs = lodash_1.mapValues(xs, function(x) { return -x; });
}
xss[vert + horiz] = xs;
});
});
var smallestWidth = findSmallestWidthAlignment(g, xss);
alignCoordinates(xss, smallestWidth);
return balance(xss, g.graph().align);
}
function sep(nodeSep, edgeSep, reverseSep) {
return function(g, v, w) {
var vLabel = g.node(v);
var wLabel = g.node(w);
var sum = 0;
var delta;
sum += vLabel.width / 2;
if (lodash_1.has(vLabel, "labelpos")) {
switch (vLabel.labelpos.toLowerCase()) {
case "l": delta = -vLabel.width / 2; break;
case "r": delta = vLabel.width / 2; break;
}
}
if (delta) {
sum += reverseSep ? delta : -delta;
}
delta = 0;
sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;
sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;
sum += wLabel.width / 2;
if (lodash_1.has(wLabel, "labelpos")) {
switch (wLabel.labelpos.toLowerCase()) {
case "l": delta = wLabel.width / 2; break;
case "r": delta = -wLabel.width / 2; break;
}
}
if (delta) {
sum += reverseSep ? delta : -delta;
}
delta = 0;
return sum;
};
}
function width(g, v) {
return g.node(v).width;
}
var positionX = bk.positionX;
var position_1 = position;
function position(g) {
g = util$1.asNonCompoundGraph(g);
positionY(g);
lodash_1.forEach(positionX(g), function(x, v) {
g.node(v).x = x;
});
}
function positionY(g) {
var layering = util$1.buildLayerMatrix(g);
var rankSep = g.graph().ranksep;
var prevY = 0;
lodash_1.forEach(layering, function(layer) {
var maxHeight = lodash_1.max(lodash_1.map(layer, function(v) { return g.node(v).height; }));
lodash_1.forEach(layer, function(v) {
g.node(v).y = prevY + maxHeight / 2;
});
prevY += maxHeight + rankSep;
});
}
var normalizeRanks = util$1.normalizeRanks;
var removeEmptyRanks = util$1.removeEmptyRanks;
var Graph$1 = graphlib_1.Graph;
var layout_1 = layout;
function layout(g, opts) {
var time = opts && opts.debugTiming ? util$1.time : util$1.notime;
time("layout", function() {
var layoutGraph =
time(" buildLayoutGraph", function() { return buildLayoutGraph(g); });
time(" runLayout", function() { runLayout(layoutGraph, time); });
time(" updateInputGraph", function() { updateInputGraph(g, layoutGraph); });
});
}
function runLayout(g, time) {
time(" makeSpaceForEdgeLabels", function() { makeSpaceForEdgeLabels(g); });
time(" removeSelfEdges", function() { removeSelfEdges(g); });
time(" acyclic", function() { acyclic.run(g); });
time(" nestingGraph.run", function() { nestingGraph.run(g); });
time(" rank", function() { rank_1(util$1.asNonCompoundGraph(g)); });
time(" injectEdgeLabelProxies", function() { injectEdgeLabelProxies(g); });
time(" removeEmptyRanks", function() { removeEmptyRanks(g); });
time(" nestingGraph.cleanup", function() { nestingGraph.cleanup(g); });
time(" normalizeRanks", function() { normalizeRanks(g); });
time(" assignRankMinMax", function() { assignRankMinMax(g); });
time(" removeEdgeLabelProxies", function() { removeEdgeLabelProxies(g); });
time(" normalize.run", function() { normalize.run(g); });
time(" parentDummyChains", function() { parentDummyChains_1(g); });
time(" addBorderSegments", function() { addBorderSegments_1(g); });
time(" order", function() { order_1(g); });
time(" insertSelfEdges", function() { insertSelfEdges(g); });
time(" adjustCoordinateSystem", function() { coordinateSystem.adjust(g); });
time(" position", function() { position_1(g); });
time(" positionSelfEdges", function() { positionSelfEdges(g); });
time(" removeBorderNodes", function() { removeBorderNodes(g); });
time(" normalize.undo", function() { normalize.undo(g); });
time(" fixupEdgeLabelCoords", function() { fixupEdgeLabelCoords(g); });
time(" undoCoordinateSystem", function() { coordinateSystem.undo(g); });
time(" translateGraph", function() { translateGraph(g); });
time(" assignNodeIntersects", function() { assignNodeIntersects(g); });
time(" reversePoints", function() { reversePointsForReversedEdges(g); });
time(" acyclic.undo", function() { acyclic.undo(g); });
}
/*
* Copies final layout information from the layout graph back to the input
* graph. This process only copies whitelisted attributes from the layout graph
* to the input graph, so it serves as a good place to determine what
* attributes can influence layout.
*/
function updateInputGraph(inputGraph, layoutGraph) {
lodash_1.forEach(inputGraph.nodes(), function(v) {
var inputLabel = inputGraph.node(v);
var layoutLabel = layoutGraph.node(v);
if (inputLabel) {
inputLabel.x = layoutLabel.x;
inputLabel.y = layoutLabel.y;
if (layoutGraph.children(v).length) {
inputLabel.width = layoutLabel.width;
inputLabel.height = layoutLabel.height;
}
}
});
lodash_1.forEach(inputGraph.edges(), function(e) {
var inputLabel = inputGraph.edge(e);
var layoutLabel = layoutGraph.edge(e);
inputLabel.points = layoutLabel.points;
if (lodash_1.has(layoutLabel, "x")) {
inputLabel.x = layoutLabel.x;
inputLabel.y = layoutLabel.y;
}
});
inputGraph.graph().width = layoutGraph.graph().width;
inputGraph.graph().height = layoutGraph.graph().height;
}
var graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"];
var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" };
var graphAttrs = ["acyclicer", "ranker", "rankdir", "align"];
var nodeNumAttrs = ["width", "height"];
var nodeDefaults = { width: 0, height: 0 };
var edgeNumAttrs = ["minlen", "weight", "width", "height", "labeloffset"];
var edgeDefaults = {
minlen: 1, weight: 1, width: 0, height: 0,
labeloffset: 10, labelpos: "r"
};
var edgeAttrs = ["labelpos"];
/*
* Constructs a new graph from the input graph, which can be used for layout.
* This process copies only whitelisted attributes from the input graph to the
* layout graph. Thus this function serves as a good place to determine what
* attributes can influence layout.
*/
function buildLayoutGraph(inputGraph) {
var g = new Graph$1({ multigraph: true, compound: true });
var graph = canonicalize(inputGraph.graph());
g.setGraph(lodash_1.merge({},
graphDefaults,
selectNumberAttrs(graph, graphNumAttrs),
lodash_1.pick(graph, graphAttrs)));
lodash_1.forEach(inputGraph.nodes(), function(v) {
var node = canonicalize(inputGraph.node(v));
g.setNode(v, lodash_1.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));
g.setParent(v, inputGraph.parent(v));
});
lodash_1.forEach(inputGraph.edges(), function(e) {
var edge = canonicalize(inputGraph.edge(e));
g.setEdge(e, lodash_1.merge({},
edgeDefaults,
selectNumberAttrs(edge, edgeNumAttrs),
lodash_1.pick(edge, edgeAttrs)));
});
return g;
}
/*
* This idea comes from the Gansner paper: to account for edge labels in our
* layout we split each rank in half by doubling minlen and halving ranksep.
* Then we can place labels at these mid-points between nodes.
*
* We also add some minimal padding to the width to push the label for the edge
* away from the edge itself a bit.
*/
function makeSpaceForEdgeLabels(g) {
var graph = g.graph();
graph.ranksep /= 2;
lodash_1.forEach(g.edges(), function(e) {
var edge = g.edge(e);
edge.minlen *= 2;
if (edge.labelpos.toLowerCase() !== "c") {
if (graph.rankdir === "TB" || graph.rankdir === "BT") {
edge.width += edge.labeloffset;
} else {
edge.height += edge.labeloffset;
}
}
});
}
/*
* Creates temporary dummy nodes that capture the rank in which each edge's
* label is going to, if it has one of non-zero width and height. We do this
* so that we can safely remove empty ranks while preserving balance for the
* label's position.
*/
function injectEdgeLabelProxies(g) {
lodash_1.forEach(g.edges(), function(e) {
var edge = g.edge(e);
if (edge.width && edge.height) {
var v = g.node(e.v);
var w = g.node(e.w);
var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };
util$1.addDummyNode(g, "edge-proxy", label, "_ep");
}
});
}
function assignRankMinMax(g) {
var maxRank = 0;
lodash_1.forEach(g.nodes(), function(v) {
var node = g.node(v);
if (node.borderTop) {
node.minRank = g.node(node.borderTop).rank;
node.maxRank = g.node(node.borderBottom).rank;
maxRank = lodash_1.max(maxRank, node.maxRank);
}
});
g.graph().maxRank = maxRank;
}
function removeEdgeLabelProxies(g) {
lodash_1.forEach(g.nodes(), function(v) {
var node = g.node(v);
if (node.dummy === "edge-proxy") {
g.edge(node.e).labelRank = node.rank;
g.removeNode(v);
}
});
}
function translateGraph(g) {
var minX = Number.POSITIVE_INFINITY;
var maxX = 0;
var minY = Number.POSITIVE_INFINITY;
var maxY = 0;
var graphLabel = g.graph();
var marginX = graphLabel.marginx || 0;
var marginY = graphLabel.marginy || 0;
function getExtremes(attrs) {
var x = attrs.x;
var y = attrs.y;
var w = attrs.width;
var h = attrs.height;
minX = Math.min(minX, x - w / 2);
maxX = Math.max(maxX, x + w / 2);
minY = Math.min(minY, y - h / 2);
maxY = Math.max(maxY, y + h / 2);
}
lodash_1.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });
lodash_1.forEach(g.edges(), function(e) {
var edge = g.edge(e);
if (lodash_1.has(edge, "x")) {
getExtremes(edge);
}
});
minX -= marginX;
minY -= marginY;
lodash_1.forEach(g.nodes(), function(v) {
var node = g.node(v);
node.x -= minX;
node.y -= minY;
});
lodash_1.forEach(g.edges(), function(e) {
var edge = g.edge(e);
lodash_1.forEach(edge.points, function(p) {
p.x -= minX;
p.y -= minY;
});
if (lodash_1.has(edge, "x")) { edge.x -= minX; }
if (lodash_1.has(edge, "y")) { edge.y -= minY; }
});
graphLabel.width = maxX - minX + marginX;
graphLabel.height = maxY - minY + marginY;
}
function assignNodeIntersects(g) {
lodash_1.forEach(g.edges(), function(e) {
var edge = g.edge(e);
var nodeV = g.node(e.v);
var nodeW = g.node(e.w);
var p1, p2;
if (!edge.points) {
edge.points = [];
p1 = nodeW;
p2 = nodeV;
} else {
p1 = edge.points[0];
p2 = edge.points[edge.points.length - 1];
}
edge.points.unshift(util$1.intersectRect(nodeV, p1));
edge.points.push(util$1.intersectRect(nodeW, p2));
});
}
function fixupEdgeLabelCoords(g) {
lodash_1.forEach(g.edges(), function(e) {
var edge = g.edge(e);
if (lodash_1.has(edge, "x")) {
if (edge.labelpos === "l" || edge.labelpos === "r") {
edge.width -= edge.labeloffset;
}
switch (edge.labelpos) {
case "l": edge.x -= edge.width / 2 + edge.labeloffset; break;
case "r": edge.x += edge.width / 2 + edge.labeloffset; break;
}
}
});
}
function reversePointsForReversedEdges(g) {
lodash_1.forEach(g.edges(), function(e) {
var edge = g.edge(e);
if (edge.reversed) {
edge.points.reverse();
}
});
}
function removeBorderNodes(g) {
lodash_1.forEach(g.nodes(), function(v) {
if (g.children(v).length) {
var node = g.node(v);
var t = g.node(node.borderTop);
var b = g.node(node.borderBottom);
var l = g.node(lodash_1.last(node.borderLeft));
var r = g.node(lodash_1.last(node.borderRight));
node.width = Math.abs(r.x - l.x);
node.height = Math.abs(b.y - t.y);
node.x = l.x + node.width / 2;
node.y = t.y + node.height / 2;
}
});
lodash_1.forEach(g.nodes(), function(v) {
if (g.node(v).dummy === "border") {
g.removeNode(v);
}
});
}
function removeSelfEdges(g) {
lodash_1.forEach(g.edges(), function(e) {
if (e.v === e.w) {
var node = g.node(e.v);
if (!node.selfEdges) {
node.selfEdges = [];
}
node.selfEdges.push({ e: e, label: g.edge(e) });
g.removeEdge(e);
}
});
}
function insertSelfEdges(g) {
var layers = util$1.buildLayerMatrix(g);
lodash_1.forEach(layers, function(layer) {
var orderShift = 0;
lodash_1.forEach(layer, function(v, i) {
var node = g.node(v);
node.order = i + orderShift;
lodash_1.forEach(node.selfEdges, function(selfEdge) {
util$1.addDummyNode(g, "selfedge", {
width: selfEdge.label.width,
height: selfEdge.label.height,
rank: node.rank,
order: i + (++orderShift),
e: selfEdge.e,
label: selfEdge.label
}, "_se");
});
delete node.selfEdges;
});
});
}
function positionSelfEdges(g) {
lodash_1.forEach(g.nodes(), function(v) {
var node = g.node(v);
if (node.dummy === "selfedge") {
var selfNode = g.node(node.e.v);
var x = selfNode.x + selfNode.width / 2;
var y = selfNode.y;
var dx = node.x - x;
var dy = selfNode.height / 2;
g.setEdge(node.e, node.label);
g.removeNode(v);
node.label.points = [
{ x: x + 2 * dx / 3, y: y - dy },
{ x: x + 5 * dx / 6, y: y - dy },
{ x: x + dx , y: y },
{ x: x + 5 * dx / 6, y: y + dy },
{ x: x + 2 * dx / 3, y: y + dy }
];
node.label.x = node.x;
node.label.y = node.y;
}
});
}
function selectNumberAttrs(obj, attrs) {
return lodash_1.mapValues(lodash_1.pick(obj, attrs), Number);
}
function canonicalize(attrs) {
var newAttrs = {};
lodash_1.forEach(attrs, function(v, k) {
newAttrs[k.toLowerCase()] = v;
});
return newAttrs;
}
var Graph = graphlib_1.Graph;
var debug = {
debugOrdering: debugOrdering
};
/* istanbul ignore next */
function debugOrdering(g) {
var layerMatrix = util$1.buildLayerMatrix(g);
var h = new Graph({ compound: true, multigraph: true }).setGraph({});
lodash_1.forEach(g.nodes(), function(v) {
h.setNode(v, { label: v });
h.setParent(v, "layer" + g.node(v).rank);
});
lodash_1.forEach(g.edges(), function(e) {
h.setEdge(e.v, e.w, {}, e.name);
});
lodash_1.forEach(layerMatrix, function(layer, i) {
var layerV = "layer" + i;
h.setNode(layerV, { rank: "same" });
lodash_1.reduce(layer, function(u, v) {
h.setEdge(u, v, { style: "invis" });
return v;
});
});
return h;
}
var version = "0.8.5";
/*
Copyright (c) 2012-2014 Chris Pettitt
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
var dagre$1 = {
graphlib: graphlib_1,
layout: layout_1,
debug: debug,
util: {
time: util$1.time,
notime: util$1.notime
},
version: version
};
var cytoscapeDagre = createCommonjsModule(function (module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory(dagre$1);
})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE__4__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
var impl = __webpack_require__(1); // registers the extension on a cytoscape lib ref
var register = function register(cytoscape) {
if (!cytoscape) {
return;
} // can't register if cytoscape unspecified
cytoscape('layout', 'dagre', impl); // register with cytoscape.js
};
if (typeof cytoscape !== 'undefined') {
// expose to global cytoscape (i.e. window.cytoscape)
register(cytoscape);
}
module.exports = register;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
var isFunction = function isFunction(o) {
return typeof o === 'function';
};
var defaults = __webpack_require__(2);
var assign = __webpack_require__(3);
var dagre = __webpack_require__(4); // constructor
// options : object containing layout options
function DagreLayout(options) {
this.options = assign({}, defaults, options);
} // runs the layout
DagreLayout.prototype.run = function () {
var options = this.options;
var layout = this;
var cy = options.cy; // cy is automatically populated for us in the constructor
var eles = options.eles;
var getVal = function getVal(ele, val) {
return isFunction(val) ? val.apply(ele, [ele]) : val;
};
var bb = options.boundingBox || {
x1: 0,
y1: 0,
w: cy.width(),
h: cy.height()
};
if (bb.x2 === undefined) {
bb.x2 = bb.x1 + bb.w;
}
if (bb.w === undefined) {
bb.w = bb.x2 - bb.x1;
}
if (bb.y2 === undefined) {
bb.y2 = bb.y1 + bb.h;
}
if (bb.h === undefined) {
bb.h = bb.y2 - bb.y1;
}
var g = new dagre.graphlib.Graph({
multigraph: true,
compound: true
});
var gObj = {};
var setGObj = function setGObj(name, val) {
if (val != null) {
gObj[name] = val;
}
};
setGObj('nodesep', options.nodeSep);
setGObj('edgesep', options.edgeSep);
setGObj('ranksep', options.rankSep);
setGObj('rankdir', options.rankDir);
setGObj('ranker', options.ranker);
g.setGraph(gObj);
g.setDefaultEdgeLabel(function () {
return {};
});
g.setDefaultNodeLabel(function () {
return {};
}); // add nodes to dagre
var nodes = eles.nodes();
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
var nbb = node.layoutDimensions(options);
g.setNode(node.id(), {
width: nbb.w,
height: nbb.h,
name: node.id()
}); // console.log( g.node(node.id()) );
} // set compound parents
for (var _i = 0; _i < nodes.length; _i++) {
var _node = nodes[_i];
if (_node.isChild()) {
g.setParent(_node.id(), _node.parent().id());
}
} // add edges to dagre
var edges = eles.edges().stdFilter(function (edge) {
return !edge.source().isParent() && !edge.target().isParent(); // dagre can't handle edges on compound nodes
});
for (var _i2 = 0; _i2 < edges.length; _i2++) {
var edge = edges[_i2];
g.setEdge(edge.source().id(), edge.target().id(), {
minlen: getVal(edge, options.minLen),
weight: getVal(edge, options.edgeWeight),
name: edge.id()
}, edge.id()); // console.log( g.edge(edge.source().id(), edge.target().id(), edge.id()) );
}
dagre.layout(g);
var gNodeIds = g.nodes();
for (var _i3 = 0; _i3 < gNodeIds.length; _i3++) {
var id = gNodeIds[_i3];
var n = g.node(id);
cy.getElementById(id).scratch().dagre = n;
}
var dagreBB;
if (options.boundingBox) {
dagreBB = {
x1: Infinity,
x2: -Infinity,
y1: Infinity,
y2: -Infinity
};
nodes.forEach(function (node) {
var dModel = node.scratch().dagre;
dagreBB.x1 = Math.min(dagreBB.x1, dModel.x);
dagreBB.x2 = Math.max(dagreBB.x2, dModel.x);
dagreBB.y1 = Math.min(dagreBB.y1, dModel.y);
dagreBB.y2 = Math.max(dagreBB.y2, dModel.y);
});
dagreBB.w = dagreBB.x2 - dagreBB.x1;
dagreBB.h = dagreBB.y2 - dagreBB.y1;
} else {
dagreBB = bb;
}
var constrainPos = function constrainPos(p) {
if (options.boundingBox) {
var xPct = dagreBB.w === 0 ? 0 : (p.x - dagreBB.x1) / dagreBB.w;
var yPct = dagreBB.h === 0 ? 0 : (p.y - dagreBB.y1) / dagreBB.h;
return {
x: bb.x1 + xPct * bb.w,
y: bb.y1 + yPct * bb.h
};
} else {
return p;
}
};
nodes.layoutPositions(layout, options, function (ele) {
ele = _typeof(ele) === "object" ? ele : this;
var dModel = ele.scratch().dagre;
return constrainPos({
x: dModel.x,
y: dModel.y
});
});
return this; // chaining
};
module.exports = DagreLayout;
/***/ }),
/* 2 */
/***/ (function(module, exports) {
var defaults = {
// dagre algo options, uses default value on undefined
nodeSep: undefined,
// the separation between adjacent nodes in the same rank
edgeSep: undefined,
// the separation between adjacent edges in the same rank
rankSep: undefined,
// the separation between adjacent nodes in the same rank
rankDir: undefined,
// 'TB' for top to bottom flow, 'LR' for left to right,
ranker: undefined,
// Type of algorithm to assigns a rank to each node in the input graph.
// Possible values: network-simplex, tight-tree or longest-path
minLen: function minLen(edge) {
return 1;
},
// number of ranks to keep between the source and target of the edge
edgeWeight: function edgeWeight(edge) {
return 1;
},
// higher weight edges are generally made shorter and straighter than lower weight edges
// general layout options
fit: true,
// whether to fit to viewport
padding: 30,
// fit padding
spacingFactor: undefined,
// Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up
nodeDimensionsIncludeLabels: false,
// whether labels should be included in determining the space used by a node
animate: false,
// whether to transition the node positions
animateFilter: function animateFilter(node, i) {
return true;
},
// whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions
animationDuration: 500,
// duration of animation in ms if enabled
animationEasing: undefined,
// easing of animation if enabled
boundingBox: undefined,
// constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
transform: function transform(node, pos) {
return pos;
},
// a function that applies a transform to the final node position
ready: function ready() {},
// on layoutready
stop: function stop() {} // on layoutstop
};
module.exports = defaults;
/***/ }),
/* 3 */
/***/ (function(module, exports) {
// Simple, internal Object.assign() polyfill for options objects etc.
module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {
for (var _len = arguments.length, srcs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
srcs[_key - 1] = arguments[_key];
}
srcs.forEach(function (src) {
Object.keys(src).forEach(function (k) {
return tgt[k] = src[k];
});
});
return tgt;
};
/***/ }),
/* 4 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE__4__;
/***/ })
/******/ ]);
});
});
var dagre = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeDagre);
var d3Quadtree = createCommonjsModule(function (module, exports) {
// https://d3js.org/d3-quadtree/ v2.0.0 Copyright 2020 Mike Bostock
(function (global, factory) {
factory(exports) ;
}(commonjsGlobal, function (exports) {
function tree_add(d) {
const x = +this._x.call(null, d),
y = +this._y.call(null, d);
return add(this.cover(x, y), x, y, d);
}
function add(tree, x, y, d) {
if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points
var parent,
node = tree._root,
leaf = {data: d},
x0 = tree._x0,
y0 = tree._y0,
x1 = tree._x1,
y1 = tree._y1,
xm,
ym,
xp,
yp,
right,
bottom,
i,
j;
// If the tree is empty, initialize the root as a leaf.
if (!node) return tree._root = leaf, tree;
// Find the existing leaf for the new point, or add it.
while (node.length) {
if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;
}
// Is the new point is exactly coincident with the existing point?
xp = +tree._x.call(null, node.data);
yp = +tree._y.call(null, node.data);
if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;
// Otherwise, split the leaf node until the old and new point are separated.
do {
parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);
if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
} while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));
return parent[j] = node, parent[i] = leaf, tree;
}
function addAll(data) {
var d, i, n = data.length,
x,
y,
xz = new Array(n),
yz = new Array(n),
x0 = Infinity,
y0 = Infinity,
x1 = -Infinity,
y1 = -Infinity;
// Compute the points and their extent.
for (i = 0; i < n; ++i) {
if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;
xz[i] = x;
yz[i] = y;
if (x < x0) x0 = x;
if (x > x1) x1 = x;
if (y < y0) y0 = y;
if (y > y1) y1 = y;
}
// If there were no (valid) points, abort.
if (x0 > x1 || y0 > y1) return this;
// Expand the tree to cover the new points.
this.cover(x0, y0).cover(x1, y1);
// Add the new points.
for (i = 0; i < n; ++i) {
add(this, xz[i], yz[i], data[i]);
}
return this;
}
function tree_cover(x, y) {
if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points
var x0 = this._x0,
y0 = this._y0,
x1 = this._x1,
y1 = this._y1;
// If the quadtree has no extent, initialize them.
// Integer extent are necessary so that if we later double the extent,
// the existing quadrant boundaries don’t change due to floating point error!
if (isNaN(x0)) {
x1 = (x0 = Math.floor(x)) + 1;
y1 = (y0 = Math.floor(y)) + 1;
}
// Otherwise, double repeatedly to cover.
else {
var z = x1 - x0 || 1,
node = this._root,
parent,
i;
while (x0 > x || x >= x1 || y0 > y || y >= y1) {
i = (y < y0) << 1 | (x < x0);
parent = new Array(4), parent[i] = node, node = parent, z *= 2;
switch (i) {
case 0: x1 = x0 + z, y1 = y0 + z; break;
case 1: x0 = x1 - z, y1 = y0 + z; break;
case 2: x1 = x0 + z, y0 = y1 - z; break;
case 3: x0 = x1 - z, y0 = y1 - z; break;
}
}
if (this._root && this._root.length) this._root = node;
}
this._x0 = x0;
this._y0 = y0;
this._x1 = x1;
this._y1 = y1;
return this;
}
function tree_data() {
var data = [];
this.visit(function(node) {
if (!node.length) do data.push(node.data); while (node = node.next)
});
return data;
}
function tree_extent(_) {
return arguments.length
? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])
: isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];
}
function Quad(node, x0, y0, x1, y1) {
this.node = node;
this.x0 = x0;
this.y0 = y0;
this.x1 = x1;
this.y1 = y1;
}
function tree_find(x, y, radius) {
var data,
x0 = this._x0,
y0 = this._y0,
x1,
y1,
x2,
y2,
x3 = this._x1,
y3 = this._y1,
quads = [],
node = this._root,
q,
i;
if (node) quads.push(new Quad(node, x0, y0, x3, y3));
if (radius == null) radius = Infinity;
else {
x0 = x - radius, y0 = y - radius;
x3 = x + radius, y3 = y + radius;
radius *= radius;
}
while (q = quads.pop()) {
// Stop searching if this quadrant can’t contain a closer node.
if (!(node = q.node)
|| (x1 = q.x0) > x3
|| (y1 = q.y0) > y3
|| (x2 = q.x1) < x0
|| (y2 = q.y1) < y0) continue;
// Bisect the current quadrant.
if (node.length) {
var xm = (x1 + x2) / 2,
ym = (y1 + y2) / 2;
quads.push(
new Quad(node[3], xm, ym, x2, y2),
new Quad(node[2], x1, ym, xm, y2),
new Quad(node[1], xm, y1, x2, ym),
new Quad(node[0], x1, y1, xm, ym)
);
// Visit the closest quadrant first.
if (i = (y >= ym) << 1 | (x >= xm)) {
q = quads[quads.length - 1];
quads[quads.length - 1] = quads[quads.length - 1 - i];
quads[quads.length - 1 - i] = q;
}
}
// Visit this point. (Visiting coincident points isn’t necessary!)
else {
var dx = x - +this._x.call(null, node.data),
dy = y - +this._y.call(null, node.data),
d2 = dx * dx + dy * dy;
if (d2 < radius) {
var d = Math.sqrt(radius = d2);
x0 = x - d, y0 = y - d;
x3 = x + d, y3 = y + d;
data = node.data;
}
}
}
return data;
}
function tree_remove(d) {
if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points
var parent,
node = this._root,
retainer,
previous,
next,
x0 = this._x0,
y0 = this._y0,
x1 = this._x1,
y1 = this._y1,
x,
y,
xm,
ym,
right,
bottom,
i,
j;
// If the tree is empty, initialize the root as a leaf.
if (!node) return this;
// Find the leaf node for the point.
// While descending, also retain the deepest parent with a non-removed sibling.
if (node.length) while (true) {
if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
if (!(parent = node, node = node[i = bottom << 1 | right])) return this;
if (!node.length) break;
if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;
}
// Find the point to remove.
while (node.data !== d) if (!(previous = node, node = node.next)) return this;
if (next = node.next) delete node.next;
// If there are multiple coincident points, remove just the point.
if (previous) return (next ? previous.next = next : delete previous.next), this;
// If this is the root point, remove it.
if (!parent) return this._root = next, this;
// Remove this leaf.
next ? parent[i] = next : delete parent[i];
// If the parent now contains exactly one leaf, collapse superfluous parents.
if ((node = parent[0] || parent[1] || parent[2] || parent[3])
&& node === (parent[3] || parent[2] || parent[1] || parent[0])
&& !node.length) {
if (retainer) retainer[j] = node;
else this._root = node;
}
return this;
}
function removeAll(data) {
for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);
return this;
}
function tree_root() {
return this._root;
}
function tree_size() {
var size = 0;
this.visit(function(node) {
if (!node.length) do ++size; while (node = node.next)
});
return size;
}
function tree_visit(callback) {
var quads = [], q, node = this._root, child, x0, y0, x1, y1;
if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));
while (q = quads.pop()) {
if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {
var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;
if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));
if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));
if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));
if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));
}
}
return this;
}
function tree_visitAfter(callback) {
var quads = [], next = [], q;
if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));
while (q = quads.pop()) {
var node = q.node;
if (node.length) {
var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;
if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));
if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));
if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));
if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));
}
next.push(q);
}
while (q = next.pop()) {
callback(q.node, q.x0, q.y0, q.x1, q.y1);
}
return this;
}
function defaultX(d) {
return d[0];
}
function tree_x(_) {
return arguments.length ? (this._x = _, this) : this._x;
}
function defaultY(d) {
return d[1];
}
function tree_y(_) {
return arguments.length ? (this._y = _, this) : this._y;
}
function quadtree(nodes, x, y) {
var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);
return nodes == null ? tree : tree.addAll(nodes);
}
function Quadtree(x, y, x0, y0, x1, y1) {
this._x = x;
this._y = y;
this._x0 = x0;
this._y0 = y0;
this._x1 = x1;
this._y1 = y1;
this._root = undefined;
}
function leaf_copy(leaf) {
var copy = {data: leaf.data}, next = copy;
while (leaf = leaf.next) next = next.next = {data: leaf.data};
return copy;
}
var treeProto = quadtree.prototype = Quadtree.prototype;
treeProto.copy = function() {
var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),
node = this._root,
nodes,
child;
if (!node) return copy;
if (!node.length) return copy._root = leaf_copy(node), copy;
nodes = [{source: node, target: copy._root = new Array(4)}];
while (node = nodes.pop()) {
for (var i = 0; i < 4; ++i) {
if (child = node.source[i]) {
if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});
else node.target[i] = leaf_copy(child);
}
}
}
return copy;
};
treeProto.add = tree_add;
treeProto.addAll = addAll;
treeProto.cover = tree_cover;
treeProto.data = tree_data;
treeProto.extent = tree_extent;
treeProto.find = tree_find;
treeProto.remove = tree_remove;
treeProto.removeAll = removeAll;
treeProto.root = tree_root;
treeProto.size = tree_size;
treeProto.visit = tree_visit;
treeProto.visitAfter = tree_visitAfter;
treeProto.x = tree_x;
treeProto.y = tree_y;
exports.quadtree = quadtree;
Object.defineProperty(exports, '__esModule', { value: true });
}));
});
var d3Dispatch = createCommonjsModule(function (module, exports) {
// https://d3js.org/d3-dispatch/ v2.0.0 Copyright 2020 Mike Bostock
(function (global, factory) {
factory(exports) ;
}(commonjsGlobal, function (exports) {
var noop = {value: () => {}};
function dispatch() {
for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {
if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t);
_[t] = [];
}
return new Dispatch(_);
}
function Dispatch(_) {
this._ = _;
}
function parseTypenames(typenames, types) {
return typenames.trim().split(/^|\s+/).map(function(t) {
var name = "", i = t.indexOf(".");
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t);
return {type: t, name: name};
});
}
Dispatch.prototype = dispatch.prototype = {
constructor: Dispatch,
on: function(typename, callback) {
var _ = this._,
T = parseTypenames(typename + "", _),
t,
i = -1,
n = T.length;
// If no callback was specified, return the callback of the given type and name.
if (arguments.length < 2) {
while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;
return;
}
// If a type was specified, set the callback for the given type and name.
// Otherwise, if a null callback was specified, remove callbacks of the given name.
if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback);
while (++i < n) {
if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);
else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);
}
return this;
},
copy: function() {
var copy = {}, _ = this._;
for (var t in _) copy[t] = _[t].slice();
return new Dispatch(copy);
},
call: function(type, that) {
if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];
if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
},
apply: function(type, that, args) {
if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
}
};
function get(type, name) {
for (var i = 0, n = type.length, c; i < n; ++i) {
if ((c = type[i]).name === name) {
return c.value;
}
}
}
function set(type, name, callback) {
for (var i = 0, n = type.length; i < n; ++i) {
if (type[i].name === name) {
type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));
break;
}
}
if (callback != null) type.push({name: name, value: callback});
return type;
}
exports.dispatch = dispatch;
Object.defineProperty(exports, '__esModule', { value: true });
}));
});
var d3Timer = createCommonjsModule(function (module, exports) {
// https://d3js.org/d3-timer/ v2.0.0 Copyright 2020 Mike Bostock
(function (global, factory) {
factory(exports) ;
}(commonjsGlobal, function (exports) {
var frame = 0, // is an animation frame pending?
timeout = 0, // is a timeout pending?
interval = 0, // are any timers active?
pokeDelay = 1000, // how frequently we check for clock skew
taskHead,
taskTail,
clockLast = 0,
clockNow = 0,
clockSkew = 0,
clock = typeof performance === "object" && performance.now ? performance : Date,
setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };
function now() {
return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);
}
function clearNow() {
clockNow = 0;
}
function Timer() {
this._call =
this._time =
this._next = null;
}
Timer.prototype = timer.prototype = {
constructor: Timer,
restart: function(callback, delay, time) {
if (typeof callback !== "function") throw new TypeError("callback is not a function");
time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);
if (!this._next && taskTail !== this) {
if (taskTail) taskTail._next = this;
else taskHead = this;
taskTail = this;
}
this._call = callback;
this._time = time;
sleep();
},
stop: function() {
if (this._call) {
this._call = null;
this._time = Infinity;
sleep();
}
}
};
function timer(callback, delay, time) {
var t = new Timer;
t.restart(callback, delay, time);
return t;
}
function timerFlush() {
now(); // Get the current time, if not already set.
++frame; // Pretend we’ve set an alarm, if we haven’t already.
var t = taskHead, e;
while (t) {
if ((e = clockNow - t._time) >= 0) t._call.call(null, e);
t = t._next;
}
--frame;
}
function wake() {
clockNow = (clockLast = clock.now()) + clockSkew;
frame = timeout = 0;
try {
timerFlush();
} finally {
frame = 0;
nap();
clockNow = 0;
}
}
function poke() {
var now = clock.now(), delay = now - clockLast;
if (delay > pokeDelay) clockSkew -= delay, clockLast = now;
}
function nap() {
var t0, t1 = taskHead, t2, time = Infinity;
while (t1) {
if (t1._call) {
if (time > t1._time) time = t1._time;
t0 = t1, t1 = t1._next;
} else {
t2 = t1._next, t1._next = null;
t1 = t0 ? t0._next = t2 : taskHead = t2;
}
}
taskTail = t0;
sleep(time);
}
function sleep(time) {
if (frame) return; // Soonest alarm already set, or will be.
if (timeout) timeout = clearTimeout(timeout);
var delay = time - clockNow; // Strictly less than if we recomputed clockNow.
if (delay > 24) {
if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);
if (interval) interval = clearInterval(interval);
} else {
if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);
frame = 1, setFrame(wake);
}
}
function timeout$1(callback, delay, time) {
var t = new Timer;
delay = delay == null ? 0 : +delay;
t.restart(elapsed => {
t.stop();
callback(elapsed + delay);
}, delay, time);
return t;
}
function interval$1(callback, delay, time) {
var t = new Timer, total = delay;
if (delay == null) return t.restart(callback, delay, time), t;
t._restart = t.restart;
t.restart = function(callback, delay, time) {
delay = +delay, time = time == null ? now() : +time;
t._restart(function tick(elapsed) {
elapsed += total;
t._restart(tick, total += delay, time);
callback(elapsed);
}, delay, time);
};
t.restart(callback, delay, time);
return t;
}
exports.interval = interval$1;
exports.now = now;
exports.timeout = timeout$1;
exports.timer = timer;
exports.timerFlush = timerFlush;
Object.defineProperty(exports, '__esModule', { value: true });
}));
});
var d3Force$1 = createCommonjsModule(function (module, exports) {
// https://d3js.org/d3-force/ v2.1.1 Copyright 2020 Mike Bostock
(function (global, factory) {
factory(exports, d3Quadtree, d3Dispatch, d3Timer) ;
}(commonjsGlobal, function (exports, d3Quadtree, d3Dispatch, d3Timer) {
function center(x, y) {
var nodes, strength = 1;
if (x == null) x = 0;
if (y == null) y = 0;
function force() {
var i,
n = nodes.length,
node,
sx = 0,
sy = 0;
for (i = 0; i < n; ++i) {
node = nodes[i], sx += node.x, sy += node.y;
}
for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {
node = nodes[i], node.x -= sx, node.y -= sy;
}
}
force.initialize = function(_) {
nodes = _;
};
force.x = function(_) {
return arguments.length ? (x = +_, force) : x;
};
force.y = function(_) {
return arguments.length ? (y = +_, force) : y;
};
force.strength = function(_) {
return arguments.length ? (strength = +_, force) : strength;
};
return force;
}
function constant(x) {
return function() {
return x;
};
}
function jiggle(random) {
return (random() - 0.5) * 1e-6;
}
function x(d) {
return d.x + d.vx;
}
function y(d) {
return d.y + d.vy;
}
function collide(radius) {
var nodes,
radii,
random,
strength = 1,
iterations = 1;
if (typeof radius !== "function") radius = constant(radius == null ? 1 : +radius);
function force() {
var i, n = nodes.length,
tree,
node,
xi,
yi,
ri,
ri2;
for (var k = 0; k < iterations; ++k) {
tree = d3Quadtree.quadtree(nodes, x, y).visitAfter(prepare);
for (i = 0; i < n; ++i) {
node = nodes[i];
ri = radii[node.index], ri2 = ri * ri;
xi = node.x + node.vx;
yi = node.y + node.vy;
tree.visit(apply);
}
}
function apply(quad, x0, y0, x1, y1) {
var data = quad.data, rj = quad.r, r = ri + rj;
if (data) {
if (data.index > node.index) {
var x = xi - data.x - data.vx,
y = yi - data.y - data.vy,
l = x * x + y * y;
if (l < r * r) {
if (x === 0) x = jiggle(random), l += x * x;
if (y === 0) y = jiggle(random), l += y * y;
l = (r - (l = Math.sqrt(l))) / l * strength;
node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));
node.vy += (y *= l) * r;
data.vx -= x * (r = 1 - r);
data.vy -= y * r;
}
}
return;
}
return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;
}
}
function prepare(quad) {
if (quad.data) return quad.r = radii[quad.data.index];
for (var i = quad.r = 0; i < 4; ++i) {
if (quad[i] && quad[i].r > quad.r) {
quad.r = quad[i].r;
}
}
}
function initialize() {
if (!nodes) return;
var i, n = nodes.length, node;
radii = new Array(n);
for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);
}
force.initialize = function(_nodes, _random) {
nodes = _nodes;
random = _random;
initialize();
};
force.iterations = function(_) {
return arguments.length ? (iterations = +_, force) : iterations;
};
force.strength = function(_) {
return arguments.length ? (strength = +_, force) : strength;
};
force.radius = function(_) {
return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initialize(), force) : radius;
};
return force;
}
function index(d) {
return d.index;
}
function find(nodeById, nodeId) {
var node = nodeById.get(nodeId);
if (!node) throw new Error("node not found: " + nodeId);
return node;
}
function link(links) {
var id = index,
strength = defaultStrength,
strengths,
distance = constant(30),
distances,
nodes,
count,
bias,
random,
iterations = 1;
if (links == null) links = [];
function defaultStrength(link) {
return 1 / Math.min(count[link.source.index], count[link.target.index]);
}
function force(alpha) {
for (var k = 0, n = links.length; k < iterations; ++k) {
for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {
link = links[i], source = link.source, target = link.target;
x = target.x + target.vx - source.x - source.vx || jiggle(random);
y = target.y + target.vy - source.y - source.vy || jiggle(random);
l = Math.sqrt(x * x + y * y);
l = (l - distances[i]) / l * alpha * strengths[i];
x *= l, y *= l;
target.vx -= x * (b = bias[i]);
target.vy -= y * b;
source.vx += x * (b = 1 - b);
source.vy += y * b;
}
}
}
function initialize() {
if (!nodes) return;
var i,
n = nodes.length,
m = links.length,
nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),
link;
for (i = 0, count = new Array(n); i < m; ++i) {
link = links[i], link.index = i;
if (typeof link.source !== "object") link.source = find(nodeById, link.source);
if (typeof link.target !== "object") link.target = find(nodeById, link.target);
count[link.source.index] = (count[link.source.index] || 0) + 1;
count[link.target.index] = (count[link.target.index] || 0) + 1;
}
for (i = 0, bias = new Array(m); i < m; ++i) {
link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);
}
strengths = new Array(m), initializeStrength();
distances = new Array(m), initializeDistance();
}
function initializeStrength() {
if (!nodes) return;
for (var i = 0, n = links.length; i < n; ++i) {
strengths[i] = +strength(links[i], i, links);
}
}
function initializeDistance() {
if (!nodes) return;
for (var i = 0, n = links.length; i < n; ++i) {
distances[i] = +distance(links[i], i, links);
}
}
force.initialize = function(_nodes, _random) {
nodes = _nodes;
random = _random;
initialize();
};
force.links = function(_) {
return arguments.length ? (links = _, initialize(), force) : links;
};
force.id = function(_) {
return arguments.length ? (id = _, force) : id;
};
force.iterations = function(_) {
return arguments.length ? (iterations = +_, force) : iterations;
};
force.strength = function(_) {
return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initializeStrength(), force) : strength;
};
force.distance = function(_) {
return arguments.length ? (distance = typeof _ === "function" ? _ : constant(+_), initializeDistance(), force) : distance;
};
return force;
}
// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use
const a = 1664525;
const c = 1013904223;
const m = 4294967296; // 2^32
function lcg() {
let s = 1;
return () => (s = (a * s + c) % m) / m;
}
function x$1(d) {
return d.x;
}
function y$1(d) {
return d.y;
}
var initialRadius = 10,
initialAngle = Math.PI * (3 - Math.sqrt(5));
function simulation(nodes) {
var simulation,
alpha = 1,
alphaMin = 0.001,
alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),
alphaTarget = 0,
velocityDecay = 0.6,
forces = new Map(),
stepper = d3Timer.timer(step),
event = d3Dispatch.dispatch("tick", "end"),
random = lcg();
if (nodes == null) nodes = [];
function step() {
tick();
event.call("tick", simulation);
if (alpha < alphaMin) {
stepper.stop();
event.call("end", simulation);
}
}
function tick(iterations) {
var i, n = nodes.length, node;
if (iterations === undefined) iterations = 1;
for (var k = 0; k < iterations; ++k) {
alpha += (alphaTarget - alpha) * alphaDecay;
forces.forEach(function(force) {
force(alpha);
});
for (i = 0; i < n; ++i) {
node = nodes[i];
if (node.fx == null) node.x += node.vx *= velocityDecay;
else node.x = node.fx, node.vx = 0;
if (node.fy == null) node.y += node.vy *= velocityDecay;
else node.y = node.fy, node.vy = 0;
}
}
return simulation;
}
function initializeNodes() {
for (var i = 0, n = nodes.length, node; i < n; ++i) {
node = nodes[i], node.index = i;
if (node.fx != null) node.x = node.fx;
if (node.fy != null) node.y = node.fy;
if (isNaN(node.x) || isNaN(node.y)) {
var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;
node.x = radius * Math.cos(angle);
node.y = radius * Math.sin(angle);
}
if (isNaN(node.vx) || isNaN(node.vy)) {
node.vx = node.vy = 0;
}
}
}
function initializeForce(force) {
if (force.initialize) force.initialize(nodes, random);
return force;
}
initializeNodes();
return simulation = {
tick: tick,
restart: function() {
return stepper.restart(step), simulation;
},
stop: function() {
return stepper.stop(), simulation;
},
nodes: function(_) {
return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;
},
alpha: function(_) {
return arguments.length ? (alpha = +_, simulation) : alpha;
},
alphaMin: function(_) {
return arguments.length ? (alphaMin = +_, simulation) : alphaMin;
},
alphaDecay: function(_) {
return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;
},
alphaTarget: function(_) {
return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;
},
velocityDecay: function(_) {
return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;
},
randomSource: function(_) {
return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;
},
force: function(name, _) {
return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);
},
find: function(x, y, radius) {
var i = 0,
n = nodes.length,
dx,
dy,
d2,
node,
closest;
if (radius == null) radius = Infinity;
else radius *= radius;
for (i = 0; i < n; ++i) {
node = nodes[i];
dx = x - node.x;
dy = y - node.y;
d2 = dx * dx + dy * dy;
if (d2 < radius) closest = node, radius = d2;
}
return closest;
},
on: function(name, _) {
return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);
}
};
}
function manyBody() {
var nodes,
node,
random,
alpha,
strength = constant(-30),
strengths,
distanceMin2 = 1,
distanceMax2 = Infinity,
theta2 = 0.81;
function force(_) {
var i, n = nodes.length, tree = d3Quadtree.quadtree(nodes, x$1, y$1).visitAfter(accumulate);
for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);
}
function initialize() {
if (!nodes) return;
var i, n = nodes.length, node;
strengths = new Array(n);
for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);
}
function accumulate(quad) {
var strength = 0, q, c, weight = 0, x, y, i;
// For internal nodes, accumulate forces from child quadrants.
if (quad.length) {
for (x = y = i = 0; i < 4; ++i) {
if ((q = quad[i]) && (c = Math.abs(q.value))) {
strength += q.value, weight += c, x += c * q.x, y += c * q.y;
}
}
quad.x = x / weight;
quad.y = y / weight;
}
// For leaf nodes, accumulate forces from coincident quadrants.
else {
q = quad;
q.x = q.data.x;
q.y = q.data.y;
do strength += strengths[q.data.index];
while (q = q.next);
}
quad.value = strength;
}
function apply(quad, x1, _, x2) {
if (!quad.value) return true;
var x = quad.x - node.x,
y = quad.y - node.y,
w = x2 - x1,
l = x * x + y * y;
// Apply the Barnes-Hut approximation if possible.
// Limit forces for very close nodes; randomize direction if coincident.
if (w * w / theta2 < l) {
if (l < distanceMax2) {
if (x === 0) x = jiggle(random), l += x * x;
if (y === 0) y = jiggle(random), l += y * y;
if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);
node.vx += x * quad.value * alpha / l;
node.vy += y * quad.value * alpha / l;
}
return true;
}
// Otherwise, process points directly.
else if (quad.length || l >= distanceMax2) return;
// Limit forces for very close nodes; randomize direction if coincident.
if (quad.data !== node || quad.next) {
if (x === 0) x = jiggle(random), l += x * x;
if (y === 0) y = jiggle(random), l += y * y;
if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);
}
do if (quad.data !== node) {
w = strengths[quad.data.index] * alpha / l;
node.vx += x * w;
node.vy += y * w;
} while (quad = quad.next);
}
force.initialize = function(_nodes, _random) {
nodes = _nodes;
random = _random;
initialize();
};
force.strength = function(_) {
return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength;
};
force.distanceMin = function(_) {
return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);
};
force.distanceMax = function(_) {
return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);
};
force.theta = function(_) {
return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);
};
return force;
}
function radial(radius, x, y) {
var nodes,
strength = constant(0.1),
strengths,
radiuses;
if (typeof radius !== "function") radius = constant(+radius);
if (x == null) x = 0;
if (y == null) y = 0;
function force(alpha) {
for (var i = 0, n = nodes.length; i < n; ++i) {
var node = nodes[i],
dx = node.x - x || 1e-6,
dy = node.y - y || 1e-6,
r = Math.sqrt(dx * dx + dy * dy),
k = (radiuses[i] - r) * strengths[i] * alpha / r;
node.vx += dx * k;
node.vy += dy * k;
}
}
function initialize() {
if (!nodes) return;
var i, n = nodes.length;
strengths = new Array(n);
radiuses = new Array(n);
for (i = 0; i < n; ++i) {
radiuses[i] = +radius(nodes[i], i, nodes);
strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);
}
}
force.initialize = function(_) {
nodes = _, initialize();
};
force.strength = function(_) {
return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength;
};
force.radius = function(_) {
return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initialize(), force) : radius;
};
force.x = function(_) {
return arguments.length ? (x = +_, force) : x;
};
force.y = function(_) {
return arguments.length ? (y = +_, force) : y;
};
return force;
}
function x$2(x) {
var strength = constant(0.1),
nodes,
strengths,
xz;
if (typeof x !== "function") x = constant(x == null ? 0 : +x);
function force(alpha) {
for (var i = 0, n = nodes.length, node; i < n; ++i) {
node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;
}
}
function initialize() {
if (!nodes) return;
var i, n = nodes.length;
strengths = new Array(n);
xz = new Array(n);
for (i = 0; i < n; ++i) {
strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);
}
}
force.initialize = function(_) {
nodes = _;
initialize();
};
force.strength = function(_) {
return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength;
};
force.x = function(_) {
return arguments.length ? (x = typeof _ === "function" ? _ : constant(+_), initialize(), force) : x;
};
return force;
}
function y$2(y) {
var strength = constant(0.1),
nodes,
strengths,
yz;
if (typeof y !== "function") y = constant(y == null ? 0 : +y);
function force(alpha) {
for (var i = 0, n = nodes.length, node; i < n; ++i) {
node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;
}
}
function initialize() {
if (!nodes) return;
var i, n = nodes.length;
strengths = new Array(n);
yz = new Array(n);
for (i = 0; i < n; ++i) {
strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);
}
}
force.initialize = function(_) {
nodes = _;
initialize();
};
force.strength = function(_) {
return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength;
};
force.y = function(_) {
return arguments.length ? (y = typeof _ === "function" ? _ : constant(+_), initialize(), force) : y;
};
return force;
}
exports.forceCenter = center;
exports.forceCollide = collide;
exports.forceLink = link;
exports.forceManyBody = manyBody;
exports.forceRadial = radial;
exports.forceSimulation = simulation;
exports.forceX = x$2;
exports.forceY = y$2;
Object.defineProperty(exports, '__esModule', { value: true });
}));
});
var cytoscapeD3Force = createCommonjsModule(function (module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory(d3Force$1);
})(commonjsGlobal, function(__WEBPACK_EXTERNAL_MODULE_4__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 3);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/**
* cytoscape-d3-force
*/
var defaults = __webpack_require__(2);
var d3 = __webpack_require__(4);
var assign = __webpack_require__(1);
var ContinuousLayout = function () {
function ContinuousLayout(options) {
_classCallCheck(this, ContinuousLayout);
var o = this.options = assign({}, defaults, options);
this.state = assign({}, o, {
layout: this,
nodes: o.eles.nodes(),
edges: o.eles.edges(),
progress: 0,
iterations: 0,
startTime: 0
});
this.simulation = null;
this.removeCytoscapeEvents = null;
this.destroyedEvent = null;
}
_createClass(ContinuousLayout, [{
key: 'makeBoundingBox',
value: function makeBoundingBox(bb, cy) {
if (bb == null) {
bb = { x1: 0, y1: 0, w: cy.width(), h: cy.height() };
} else {
bb = { x1: bb.x1, x2: bb.x2, y1: bb.y1, y2: bb.y2, w: bb.w, h: bb.h };
}
if (bb.x2 == null) {
bb.x2 = bb.x1 + bb.w;
}
if (bb.w == null) {
bb.w = bb.x2 - bb.x1;
}
if (bb.y2 == null) {
bb.y2 = bb.y1 + bb.h;
}
if (bb.h == null) {
bb.h = bb.y2 - bb.y1;
}
return bb;
}
}, {
key: 'setInitialPositionState',
value: function setInitialPositionState(node, state) {
var p = node.position();
var bb = state.currentBoundingBox;
var scratch = node.scratch(state.name);
if (scratch == null) {
scratch = {};
node.scratch(state.name, scratch);
}
assign(scratch, state.randomize ? {
x: bb.x1 + Math.round(Math.random() * bb.w),
y: bb.y1 + Math.round(Math.random() * bb.h)
} : {
x: p.x,
y: p.y
});
if (node.locked()) {
assign(scratch, {
fx: p.x,
fy: p.y
});
}
}
}, {
key: 'refreshPositions',
value: function refreshPositions(nodes, state, fit) {
nodes.positions(function (node) {
var scratch = node.scratch(state.name);
return {
x: scratch.x,
y: scratch.y
};
});
fit && state.cy.fit(state.padding);
}
}, {
key: 'getScratch',
value: function getScratch(el) {
var name = this.state.name;
var scratch = el.scratch(name);
if (!scratch) {
scratch = {};
el.scratch(name, scratch);
}
return scratch;
}
}, {
key: 'ungrabify',
value: function ungrabify(nodes) {
var _this = this;
if (!this.state.ungrabifyWhileSimulating) {
return;
}
nodes.filter(function (node) {
var nodeGrabbable = _this.getScratch(node).grabbable = node.grabbable();
return nodeGrabbable;
});
nodes.ungrabify();
}
}, {
key: 'regrabify',
value: function regrabify(nodes) {
var _this2 = this;
if (!this.state.ungrabifyWhileSimulating) {
return;
}
nodes.filter(function (node) {
var nodeGrabbable = _this2.getScratch(node).grabbable;
return nodeGrabbable;
});
nodes.grabify();
}
}, {
key: 'tick',
value: function tick() {
var s = this.state;
s.progress += 1 / Math.ceil(Math.log(this.simulation.alphaMin()) / Math.log(1 - this.simulation.alphaDecay()));
s.iterations++;
var _iterations = s.maxIterations && !s.infinite ? s.iterations / s.maxIterations : 0;
var _timeRunning = Date.now() - s.startTime;
var _timeIterations = s.maxSimulationTime && !s.infinite ? _timeRunning / s.maxSimulationTime : 0;
var _progress = Math.max(_iterations, _timeIterations, s.progress);
_progress = _progress > 1 ? 1 : _progress;
if (_progress >= 1) {
this.end(!s.infinite);
return;
}
s.tick && s.tick(_progress);
if (s.animate) {
this.refreshPositions(s.nodes, s, s.fit);
}
}
}, {
key: 'end',
value: function end(destroyed) {
var s = this.state;
this.refreshPositions(s.nodes, s, s.fit);
this.emit('layoutstop', s.cy);
this.reset(destroyed);
}
}, {
key: 'reset',
value: function reset(destroyed) {
this.simulation && this.simulation.stop();
var s = this.state;
this.destroyedEvent && this.destroyedEvent();
(destroyed || !s.infinite) && this.removeCytoscapeEvents && this.removeCytoscapeEvents();
s.animate && this.regrabify(s.nodes);
return this;
}
}, {
key: 'run',
value: function run() {
var _this3 = this;
this.reset();
var l = this;
var s = this.state;
var ready = false;
s.currentBoundingBox = this.makeBoundingBox(s.boundingBox, s.cy);
if (s.ready) {
l.one('layoutready', s.ready);
}
if (s.stop) {
l.one('layoutstop', s.stop);
}
s.nodes.forEach(function (n) {
return _this3.setInitialPositionState(n, s);
});
if (!ready) {
ready = true;
l.emit('layoutready');
}
if (!l.simulation) {
var _forcenodes = s.nodes.map(function (n) {
return assign(l.getScratch(n), n.data());
});
var _forceedges = s.edges.map(function (e) {
return assign({}, e.data());
});
l.simulation = d3.forceSimulation(_forcenodes);
s.alpha && l.simulation.alpha(s.alpha);
s.alphaMin && l.simulation.alphaMin(s.alphaMin);
s.alphaDecay && l.simulation.alphaDecay(s.alphaDecay);
s.alphaTarget && l.simulation.alphaTarget(s.alphaTarget);
s.velocityDecay && l.simulation.velocityDecay(s.velocityDecay);
var _collide = d3.forceCollide();
s.collideRadius && _collide.radius(s.collideRadius);
s.collideStrength && _collide.strength(s.collideStrength);
s.collideIterations && _collide.iterations(s.collideIterations);
var _link = d3.forceLink(_forceedges);
s.linkId && _link.id(s.linkId);
s.linkDistance && _link.distance(s.linkDistance);
s.linkStrength && _link.strength(s.linkStrength);
s.linkIterations && _link.iterations(s.linkIterations);
var _manyBody = d3.forceManyBody();
s.manyBodyStrength && _manyBody.strength(s.manyBodyStrength);
s.manyBodyTheta && _manyBody.theta(s.manyBodyTheta);
s.manyBodyDistanceMin && _manyBody.distanceMin(s.manyBodyDistanceMin);
s.manyBodyDistanceMax && _manyBody.distanceMax(s.manyBodyDistanceMax);
var _x = d3.forceX();
s.xX && _x.x(s.xX);
s.xStrength && _x.strength(s.xStrength);
var _y = d3.forceY();
s.yY && _y.y(s.yY);
s.yStrength && _y.strength(s.yStrength);
var _radius = null;
if (s.radialRadius || s.radialStrength || s.radialX || s.radialY) {
_radius = d3.forceRadial();
s.radialRadius && _radius.radius(s.radialRadius);
s.radialStrength && _radius.strength(s.radialStrength);
s.radialX && _radius.x(s.radialX);
s.radialY && _radius.y(s.radialY);
}
var _center = d3.forceCenter(s.currentBoundingBox.w / 2, s.currentBoundingBox.h / 2);
l.simulation.force('collide', _collide).force('link', _link).force('many-body', _manyBody).force('x', _x).force('y', _y).force("center", _center);
_radius && l.simulation.force('radius', _radius);
l.simulation.on("tick", function () {
l.tick();
}).on("end", function () {
l.end();
});
}
if (!l.destroyedEvent) {
var destroyHandler = void 0;
s.cy.one('destroy', destroyHandler = function destroyHandler() {
l.stop();
});
l.destroyedEvent = function () {
s.cy.off('destroy', destroyHandler);
l.destroyedEvent = null;
};
}
l.prerun(s);
l.emit('layoutstart');
s.progress = 0;
s.iterations = 0;
s.startTime = Date.now();
if (s.animate) {
var restartAlphaTarget = Math.abs((s.alpha || 1) - (s.alphaTarget || 0)) / 3;
if (!l.removeCytoscapeEvents) {
var _cytoscapeEvent = function _cytoscapeEvent(e) {
var node = this;
var pos = node.position();
var nodeIsTarget = e.cyTarget === node || e.target === node;
if (!nodeIsTarget) {
return;
}
var _scratch = l.getScratch(node);
s.progress = 0;
s.iterations = 0;
s.startTime = Date.now();
_scratch.x = pos.x;
_scratch.y = pos.y;
if (e.type === 'grab') {
l.simulation.alphaTarget(restartAlphaTarget).restart();
} else if (e.type === 'unlock' || e.type === 'free') {
if (!s.fixedAfterDragging) {
delete _scratch.fx;
delete _scratch.fy;
} else {
_scratch.fx = pos.x;
_scratch.fy = pos.y;
}
l.simulation.alphaTarget(restartAlphaTarget).restart();
} else {
_scratch.fx = pos.x;
_scratch.fy = pos.y;
}
};
l.removeCytoscapeEvents = function () {
s.nodes.off('grab free drag lock unlock', _cytoscapeEvent);
l.removeCytoscapeEvents = null;
};
s.nodes.on('grab free drag lock unlock', _cytoscapeEvent);
}
l.ungrabify(s.nodes);
}
l.postrun(s);
return this;
}
}, {
key: 'prerun',
value: function prerun() {}
}, {
key: 'postrun',
value: function postrun() {}
}, {
key: 'stop',
value: function stop() {
return this.reset(true);
}
}]);
return ContinuousLayout;
}();
module.exports = ContinuousLayout;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
// Simple, internal Object.assign() polyfill for options objects etc.
module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {
for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
srcs[_key - 1] = arguments[_key];
}
srcs.forEach(function (src) {
Object.keys(src).forEach(function (k) {
return tgt[k] = src[k];
});
});
return tgt;
};
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = Object.freeze({
animate: true, // whether to show the layout as it's running; special 'end' value makes the layout animate like a discrete layout
maxIterations: 0, // max iterations before the layout will bail out
maxSimulationTime: 0, // max length in ms to run the layout
ungrabifyWhileSimulating: false, // so you can't drag nodes during layout
fixedAfterDragging: false, // fixed node after dragging
fit: false, // on every layout reposition of nodes, fit the viewport
padding: 30, // padding around the simulation
boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
/**d3-force API**/
alpha: undefined, // sets the current alpha to the specified number in the range [0,1]
alphaMin: undefined, // sets the minimum alpha to the specified number in the range [0,1]
alphaDecay: undefined, // sets the alpha decay rate to the specified number in the range [0,1]
alphaTarget: undefined, // sets the current target alpha to the specified number in the range [0,1]
velocityDecay: undefined, // sets the velocity decay factor to the specified number in the range [0,1]
collideRadius: undefined, // sets the radius accessor to the specified number or function
collideStrength: undefined, // sets the force strength to the specified number in the range [0,1]
collideIterations: undefined, // sets the number of iterations per application to the specified number
linkId: undefined, // sets the node id accessor to the specified function
linkDistance: 30, // sets the distance accessor to the specified number or function
linkStrength: undefined, // sets the strength accessor to the specified number or function
linkIterations: undefined, // sets the number of iterations per application to the specified number
manyBodyStrength: undefined, // sets the strength accessor to the specified number or function
manyBodyTheta: undefined, // sets the Barnes–Hut approximation criterion to the specified number
manyBodyDistanceMin: undefined, // sets the minimum distance between nodes over which this force is considered
manyBodyDistanceMax: undefined, // sets the maximum distance between nodes over which this force is considered
xStrength: undefined, // sets the strength accessor to the specified number or function
xX: undefined, // sets the x-coordinate accessor to the specified number or function
yStrength: undefined, // sets the strength accessor to the specified number or function
yY: undefined, // sets the y-coordinate accessor to the specified number or function
radialStrength: undefined, // sets the strength accessor to the specified number or function
radialRadius: undefined, // sets the circle radius to the specified number or function
radialX: undefined, // sets the x-coordinate of the circle center to the specified number
radialY: undefined, // sets the y-coordinate of the circle center to the specified number
// layout event callbacks
ready: function ready() {}, // on layoutready
stop: function stop() {}, // on layoutstop
tick: function tick() {}, // on every iteration
// positioning options
randomize: false, // use random node positions at beginning of layout
// infinite layout options
infinite: false // overrides all other options for a forces-all-the-time mode
});
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
var impl = __webpack_require__(0);
// registers the extension on a cytoscape lib ref
var register = function register(cytoscape) {
if (!cytoscape) {
return;
} // can't register if cytoscape unspecified
cytoscape('layout', 'd3-force', impl); // register with cytoscape.js
};
if (typeof cytoscape !== 'undefined') {
// expose to global cytoscape (i.e. window.cytoscape)
register(cytoscape);
}
module.exports = register;
/***/ }),
/* 4 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_4__;
/***/ })
/******/ ]);
});
});
var d3Force = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeD3Force);
// https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setdoubleclicktime
var INTERVAL = 500;
function extension(interval) {
if (interval === void 0) { interval = INTERVAL; }
var clicked = null;
this.on('click', function (evt) {
if (clicked && clicked === evt.target) {
clicked = null;
evt.preventDefault();
evt.stopPropagation();
evt.target.emit('dblclick', [evt]);
}
else {
clicked = evt.target;
setTimeout(function () {
if (clicked && clicked === evt.target) {
clicked = null;
evt.target.emit('dblclick:timeout', [evt]);
}
}, interval);
}
});
return this; // chainability
}
function register(cy) {
if (!cy) {
return;
}
// Initialize extension
// Register extension
var extensionName = 'dblclick';
cy('core', extensionName, extension);
// cy('collection', extensionName, extension);
// cy('layout', extensionName, extension);
// cy('renderer', extensionName, extension);
}
if (typeof window.cytoscape !== 'undefined') {
register(window.cytoscape);
}
var cytoscapeCxtmenu = createCommonjsModule(function (module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory();
})(commonjsGlobal, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 4);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
var defaults = __webpack_require__(2);
var assign = __webpack_require__(1);
var _require = __webpack_require__(3),
removeEles = _require.removeEles,
setStyles = _require.setStyles,
createElement = _require.createElement,
getPixelRatio = _require.getPixelRatio,
getOffset = _require.getOffset;
var cxtmenu = function cxtmenu(params) {
var options = assign({}, defaults, params);
var cy = this;
var container = cy.container();
var target = void 0;
var data = {
options: options,
handlers: [],
container: createElement({ class: 'cxtmenu' })
};
var wrapper = data.container;
var parent = createElement();
var canvas = createElement({ tag: 'canvas' });
var commands = [];
var c2d = canvas.getContext('2d');
var r = 100; // defailt radius;
var containerSize = (r + options.activePadding) * 2;
var activeCommandI = void 0;
var offset = void 0;
container.insertBefore(wrapper, container.firstChild);
wrapper.appendChild(parent);
parent.appendChild(canvas);
setStyles(wrapper, {
position: 'absolute',
zIndex: options.zIndex,
userSelect: 'none',
pointerEvents: 'none' // prevent events on menu in modern browsers
});
// prevent events on menu in legacy browsers
['mousedown', 'mousemove', 'mouseup', 'contextmenu'].forEach(function (evt) {
wrapper.addEventListener(evt, function (e) {
e.preventDefault();
return false;
});
});
setStyles(parent, {
display: 'none',
width: containerSize + 'px',
height: containerSize + 'px',
position: 'absolute',
zIndex: 1,
marginLeft: -options.activePadding + 'px',
marginTop: -options.activePadding + 'px',
userSelect: 'none'
});
canvas.width = containerSize;
canvas.height = containerSize;
function createMenuItems(r, rs) {
removeEles('.cxtmenu-item', parent);
var dtheta = 2 * Math.PI / commands.length;
var theta1 = Math.PI / 2;
var theta2 = theta1 + dtheta;
for (var i = 0; i < commands.length; i++) {
var command = commands[i];
var midtheta = (theta1 + theta2) / 2;
var rx1 = (r + rs) / 2 * Math.cos(midtheta);
var ry1 = (r + rs) / 2 * Math.sin(midtheta);
// Arbitrary multiplier to increase the sizing of the space
// available for the item.
var width = 1 * Math.abs((r - rs) * Math.cos(midtheta));
var height = 1 * Math.abs((r - rs) * Math.sin(midtheta));
width = Math.max(width, height);
var item = createElement({ class: 'cxtmenu-item' });
setStyles(item, {
color: options.itemColor,
cursor: 'default',
display: 'table',
'text-align': 'center',
//background: 'red',
position: 'absolute',
'text-shadow': '-1px -1px 2px ' + options.itemTextShadowColor + ', 1px -1px 2px ' + options.itemTextShadowColor + ', -1px 1px 2px ' + options.itemTextShadowColor + ', 1px 1px 1px ' + options.itemTextShadowColor,
left: '50%',
top: '50%',
'min-height': width + 'px',
width: width + 'px',
height: width + 'px',
marginLeft: rx1 - width / 2 + 'px',
marginTop: -ry1 - width / 2 + 'px'
});
var content = createElement({ class: 'cxtmenu-content' });
if (command.content instanceof HTMLElement) {
content.appendChild(command.content);
} else {
content.innerHTML = command.content;
}
setStyles(content, {
'width': width + 'px',
'height': width + 'px',
'vertical-align': 'middle',
'display': 'table-cell'
});
setStyles(content, command.contentStyle || {});
if (command.disabled === true || command.enabled === false) {
content.setAttribute('class', 'cxtmenu-content cxtmenu-disabled');
}
parent.appendChild(item);
item.appendChild(content);
theta1 += dtheta;
theta2 += dtheta;
}
}
function queueDrawBg(radius, rspotlight) {
redrawQueue.drawBg = [radius, rspotlight];
}
function drawBg(radius, rspotlight) {
c2d.globalCompositeOperation = 'source-over';
c2d.clearRect(0, 0, containerSize, containerSize);
// draw background items
c2d.fillStyle = options.fillColor;
var dtheta = 2 * Math.PI / commands.length;
var theta1 = Math.PI / 2;
var theta2 = theta1 + dtheta;
for (var index = 0; index < commands.length; index++) {
var command = commands[index];
if (command.fillColor) {
c2d.fillStyle = command.fillColor;
}
c2d.beginPath();
c2d.moveTo(radius + options.activePadding, radius + options.activePadding);
c2d.arc(radius + options.activePadding, radius + options.activePadding, radius, 2 * Math.PI - theta1, 2 * Math.PI - theta2, true);
c2d.closePath();
c2d.fill();
theta1 += dtheta;
theta2 += dtheta;
c2d.fillStyle = options.fillColor;
}
// draw separators between items
c2d.globalCompositeOperation = 'destination-out';
c2d.strokeStyle = 'white';
c2d.lineWidth = options.separatorWidth;
theta1 = Math.PI / 2;
theta2 = theta1 + dtheta;
for (var i = 0; i < commands.length; i++) {
var rx1 = radius * Math.cos(theta1);
var ry1 = radius * Math.sin(theta1);
c2d.beginPath();
c2d.moveTo(radius + options.activePadding, radius + options.activePadding);
c2d.lineTo(radius + options.activePadding + rx1, radius + options.activePadding - ry1);
c2d.closePath();
c2d.stroke();
theta1 += dtheta;
theta2 += dtheta;
}
c2d.fillStyle = 'white';
c2d.globalCompositeOperation = 'destination-out';
c2d.beginPath();
c2d.arc(radius + options.activePadding, radius + options.activePadding, rspotlight + options.spotlightPadding, 0, Math.PI * 2, true);
c2d.closePath();
c2d.fill();
c2d.globalCompositeOperation = 'source-over';
}
function queueDrawCommands(rx, ry, radius, theta, rspotlight) {
redrawQueue.drawCommands = [rx, ry, radius, theta, rspotlight];
}
function drawCommands(rx, ry, radius, theta, rs) {
var dtheta = 2 * Math.PI / commands.length;
var theta1 = Math.PI / 2;
var theta2 = theta1 + dtheta;
theta1 += dtheta * activeCommandI;
theta2 += dtheta * activeCommandI;
c2d.fillStyle = options.activeFillColor;
c2d.strokeStyle = 'black';
c2d.lineWidth = 1;
c2d.beginPath();
c2d.moveTo(radius + options.activePadding, radius + options.activePadding);
c2d.arc(radius + options.activePadding, radius + options.activePadding, radius + options.activePadding, 2 * Math.PI - theta1, 2 * Math.PI - theta2, true);
c2d.closePath();
c2d.fill();
c2d.fillStyle = 'white';
c2d.globalCompositeOperation = 'destination-out';
var tx = radius + options.activePadding + rx / radius * (rs + options.spotlightPadding - options.indicatorSize / 4);
var ty = radius + options.activePadding + ry / radius * (rs + options.spotlightPadding - options.indicatorSize / 4);
var rot = Math.PI / 4 - theta;
c2d.translate(tx, ty);
c2d.rotate(rot);
// clear the indicator
// The indicator size (arrow) depends on the node size as well. If the indicator size is bigger and the rendered node size + padding,
// use the rendered node size + padding as the indicator size.
var indicatorSize = options.indicatorSize > rs + options.spotlightPadding ? rs + options.spotlightPadding : options.indicatorSize;
c2d.beginPath();
c2d.fillRect(-indicatorSize / 2, -indicatorSize / 2, indicatorSize, indicatorSize);
c2d.closePath();
c2d.fill();
c2d.rotate(-rot);
c2d.translate(-tx, -ty);
// c2d.setTransform( 1, 0, 0, 1, 0, 0 );
// clear the spotlight
c2d.beginPath();
c2d.arc(radius + options.activePadding, radius + options.activePadding, rs + options.spotlightPadding, 0, Math.PI * 2, true);
c2d.closePath();
c2d.fill();
c2d.globalCompositeOperation = 'source-over';
}
function updatePixelRatio() {
var pxr = getPixelRatio();
var w = containerSize;
var h = containerSize;
canvas.width = w * pxr;
canvas.height = h * pxr;
canvas.style.width = w + 'px';
canvas.style.height = h + 'px';
c2d.setTransform(1, 0, 0, 1, 0, 0);
c2d.scale(pxr, pxr);
}
var redrawing = true;
var redrawQueue = {};
var raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) {
return setTimeout(fn, 16);
};
var redraw = function redraw() {
if (redrawQueue.drawBg) {
drawBg.apply(null, redrawQueue.drawBg);
}
if (redrawQueue.drawCommands) {
drawCommands.apply(null, redrawQueue.drawCommands);
}
redrawQueue = {};
if (redrawing) {
raf(redraw);
}
};
// kick off
updatePixelRatio();
redraw();
var ctrx = void 0,
ctry = void 0,
rs = void 0;
var bindings = {
on: function on(events, selector, fn) {
var _fn = fn;
if (selector === 'core') {
_fn = function _fn(e) {
if (e.cyTarget === cy || e.target === cy) {
// only if event target is directly core
return fn.apply(this, [e]);
}
};
}
data.handlers.push({
events: events,
selector: selector,
fn: _fn
});
if (selector === 'core') {
cy.on(events, _fn);
} else {
cy.on(events, selector, _fn);
}
return this;
}
};
function addEventListeners() {
var grabbable = void 0;
var inGesture = false;
var dragHandler = void 0;
var zoomEnabled = void 0;
var panEnabled = void 0;
var boxEnabled = void 0;
var gestureStartEvent = void 0;
var restoreZoom = function restoreZoom() {
if (zoomEnabled) {
cy.userZoomingEnabled(true);
}
};
var restoreGrab = function restoreGrab() {
if (grabbable) {
target.grabify();
}
};
var restorePan = function restorePan() {
if (panEnabled) {
cy.userPanningEnabled(true);
}
};
var restoreBoxSeln = function restoreBoxSeln() {
if (boxEnabled) {
cy.boxSelectionEnabled(true);
}
};
var restoreGestures = function restoreGestures() {
restoreGrab();
restoreZoom();
restorePan();
restoreBoxSeln();
};
window.addEventListener('resize', updatePixelRatio);
bindings.on('resize', function () {
updatePixelRatio();
}).on(options.openMenuEvents, options.selector, function (e) {
target = this; // Remember which node the context menu is for
var ele = this;
var isCy = this === cy;
if (inGesture) {
parent.style.display = 'none';
inGesture = false;
restoreGestures();
}
if (typeof options.commands === 'function') {
var res = options.commands(target);
if (res.then) {
res.then(function (_commands) {
commands = _commands;
openMenu();
});
} else {
commands = res;
openMenu();
}
} else {
commands = options.commands;
openMenu();
}
function openMenu() {
if (!commands || commands.length === 0) {
return;
}
zoomEnabled = cy.userZoomingEnabled();
cy.userZoomingEnabled(false);
panEnabled = cy.userPanningEnabled();
cy.userPanningEnabled(false);
boxEnabled = cy.boxSelectionEnabled();
cy.boxSelectionEnabled(false);
grabbable = target.grabbable && target.grabbable();
if (grabbable) {
target.ungrabify();
}
var rp = void 0,
rw = void 0,
rs = void 0;
if (!isCy && ele && ele.isNode instanceof Function && ele.isNode() && !ele.isParent() && !options.atMouse) {
// If it's a node, the default spotlight radius for a node is the node width
rp = ele.renderedPosition();
rw = ele.renderedOuterWidth();
ele.renderedOuterHeight();
rs = rw / 2;
// If adaptativeNodespotlightRadius is not enabled and min|maxSpotlighrRadius is defined, use those instead
rs = !options.adaptativeNodeSpotlightRadius && options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs;
rs = !options.adaptativeNodeSpotlightRadius && options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs;
} else {
// If it's the background or an edge, the spotlight radius is the min|maxSpotlightRadius
rp = e.renderedPosition || e.cyRenderedPosition;
rw = 1;
rs = rw / 2;
rs = options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs;
rs = options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs;
}
offset = getOffset(container);
ctrx = rp.x;
ctry = rp.y;
r = rw / 2 + (options.menuRadius instanceof Function ? options.menuRadius(target) : Number(options.menuRadius));
containerSize = (r + options.activePadding) * 2;
updatePixelRatio();
setStyles(parent, {
width: containerSize + 'px',
height: containerSize + 'px',
display: 'block',
left: rp.x - r + 'px',
top: rp.y - r + 'px'
});
createMenuItems(r, rs);
queueDrawBg(r, rs);
activeCommandI = undefined;
inGesture = true;
gestureStartEvent = e;
}
}).on('cxtdrag tapdrag', options.selector, dragHandler = function dragHandler(e) {
if (!inGesture) {
return;
}
e.preventDefault(); // Otherwise, on mobile, the pull-down refresh gesture gets activated
var origE = e.originalEvent;
var isTouch = origE.touches && origE.touches.length > 0;
var pageX = (isTouch ? origE.touches[0].pageX : origE.pageX) - window.pageXOffset;
var pageY = (isTouch ? origE.touches[0].pageY : origE.pageY) - window.pageYOffset;
activeCommandI = undefined;
var dx = pageX - offset.left - ctrx;
var dy = pageY - offset.top - ctry;
if (dx === 0) {
dx = 0.01;
}
var d = Math.sqrt(dx * dx + dy * dy);
var cosTheta = (dy * dy - d * d - dx * dx) / (-2 * d * dx);
var theta = Math.acos(cosTheta);
var rw = void 0;
if (target && target.isNode instanceof Function && target.isNode() && !target.isParent() && !options.atMouse) {
// If it's a node, the default spotlight radius for a node is the node width
rw = target.renderedOuterWidth();
rs = rw / 2;
// If adaptativeNodespotlightRadius is not enabled and min|maxSpotlighrRadius is defined, use those instead
rs = !options.adaptativeNodeSpotlightRadius && options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs;
rs = !options.adaptativeNodeSpotlightRadius && options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs;
} else {
// If it's the background or an edge, the spotlight radius is the min|maxSpotlightRadius
rw = 1;
rs = rw / 2;
rs = options.minSpotlightRadius ? Math.max(rs, options.minSpotlightRadius) : rs;
rs = options.maxSpotlightRadius ? Math.min(rs, options.maxSpotlightRadius) : rs;
}
r = rw / 2 + (options.menuRadius instanceof Function ? options.menuRadius(target) : Number(options.menuRadius));
if (d < rs + options.spotlightPadding || typeof options.outsideMenuCancel === "number" && d > r + options.activePadding + options.outsideMenuCancel) {
//
queueDrawBg(r, rs);
return;
}
queueDrawBg(r, rs);
var rx = dx * r / d;
var ry = dy * r / d;
if (dy > 0) {
theta = Math.PI + Math.abs(theta - Math.PI);
}
var dtheta = 2 * Math.PI / commands.length;
var theta1 = Math.PI / 2;
var theta2 = theta1 + dtheta;
for (var i = 0; i < commands.length; i++) {
var command = commands[i];
var inThisCommand = theta1 <= theta && theta <= theta2 || theta1 <= theta + 2 * Math.PI && theta + 2 * Math.PI <= theta2;
if (command.disabled === true || command.enabled === false) {
inThisCommand = false;
}
if (inThisCommand) {
activeCommandI = i;
break;
}
theta1 += dtheta;
theta2 += dtheta;
}
queueDrawCommands(rx, ry, r, theta, rs);
}).on('tapdrag', dragHandler).on('cxttapend tapend', function (e) {
parent.style.display = 'none';
if (activeCommandI !== undefined) {
var select = commands[activeCommandI].select;
if (select) {
select.apply(target, [target, gestureStartEvent, e]);
activeCommandI = undefined;
}
}
inGesture = false;
restoreGestures();
});
}
function removeEventListeners() {
var handlers = data.handlers;
for (var i = 0; i < handlers.length; i++) {
var h = handlers[i];
if (h.selector === 'core') {
cy.off(h.events, h.fn);
} else {
cy.off(h.events, h.selector, h.fn);
}
}
window.removeEventListener('resize', updatePixelRatio);
}
function destroyInstance() {
redrawing = false;
removeEventListeners();
wrapper.remove();
}
addEventListeners();
return {
destroy: function destroy() {
destroyInstance();
}
};
};
module.exports = cxtmenu;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
// Simple, internal Object.assign() polyfill for options objects etc.
module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {
for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
srcs[_key - 1] = arguments[_key];
}
srcs.filter(function (src) {
return src != null;
}).forEach(function (src) {
Object.keys(src).forEach(function (k) {
return tgt[k] = src[k];
});
});
return tgt;
};
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
var defaults = {
menuRadius: function menuRadius(ele) {
return 100;
}, // the radius of the circular menu in pixels
selector: 'node', // elements matching this Cytoscape.js selector will trigger cxtmenus
commands: [// an array of commands to list in the menu or a function that returns the array
/*
{ // example command
fillColor: 'rgba(200, 200, 200, 0.75)', // optional: custom background color for item
content: 'a command name' // html/text content to be displayed in the menu
contentStyle: {}, // css key:value pairs to set the command's css in js if you want
select: function(ele){ // a function to execute when the command is selected
console.log( ele.id() ) // `ele` holds the reference to the active element
},
enabled: true // whether the command is selectable
}
*/
], // function( ele ){ return [ /*...*/ ] }, // example function for commands
fillColor: 'rgba(0, 0, 0, 0.75)', // the background colour of the menu
activeFillColor: 'rgba(1, 105, 217, 0.75)', // the colour used to indicate the selected command
activePadding: 20, // additional size in pixels for the active command
indicatorSize: 24, // the size in pixels of the pointer to the active command, will default to the node size if the node size is smaller than the indicator size,
separatorWidth: 3, // the empty spacing in pixels between successive commands
spotlightPadding: 4, // extra spacing in pixels between the element and the spotlight
adaptativeNodeSpotlightRadius: false, // specify whether the spotlight radius should adapt to the node size
minSpotlightRadius: 24, // the minimum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background)
maxSpotlightRadius: 38, // the maximum radius in pixels of the spotlight (ignored for the node if adaptativeNodeSpotlightRadius is enabled but still used for the edge & background)
openMenuEvents: 'cxttapstart taphold', // space-separated cytoscape events that will open the menu; only `cxttapstart` and/or `taphold` work here
itemColor: 'white', // the colour of text in the command's content
itemTextShadowColor: 'transparent', // the text shadow colour of the command's content
zIndex: 9999, // the z-index of the ui div
atMouse: false, // draw menu at mouse position
outsideMenuCancel: false // if set to a number, this will cancel the command if the pointer is released outside of the spotlight, padded by the number given
};
module.exports = defaults;
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
var removeEles = function removeEles(query) {
var ancestor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
var els = ancestor.querySelectorAll(query);
for (var i = 0; i < els.length; i++) {
var el = els[i];
el.parentNode.removeChild(el);
}
};
var setStyles = function setStyles(el, style) {
var props = Object.keys(style);
for (var i = 0, l = props.length; i < l; i++) {
el.style[props[i]] = style[props[i]];
}
};
var createElement = function createElement(options) {
options = options || {};
var el = document.createElement(options.tag || 'div');
el.className = options.class || '';
if (options.style) {
setStyles(el, options.style);
}
return el;
};
var getPixelRatio = function getPixelRatio() {
return window.devicePixelRatio || 1;
};
var getOffset = function getOffset(el) {
var offset = el.getBoundingClientRect();
return {
left: offset.left + document.body.scrollLeft + parseFloat(getComputedStyle(document.body)['padding-left']) + parseFloat(getComputedStyle(document.body)['border-left-width']),
top: offset.top + document.body.scrollTop + parseFloat(getComputedStyle(document.body)['padding-top']) + parseFloat(getComputedStyle(document.body)['border-top-width'])
};
};
module.exports = { removeEles: removeEles, setStyles: setStyles, createElement: createElement, getPixelRatio: getPixelRatio, getOffset: getOffset };
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
var cxtmenu = __webpack_require__(0);
// registers the extension on a cytoscape lib ref
var register = function register(cytoscape) {
if (!cytoscape) {
return;
} // can't register if cytoscape unspecified
cytoscape('core', 'cxtmenu', cxtmenu); // register with cytoscape.js
};
if (typeof cytoscape !== 'undefined') {
// expose to global cytoscape (i.e. window.cytoscape)
register(cytoscape);
}
module.exports = register;
/***/ })
/******/ ]);
});
});
var cxtmenu = /*@__PURE__*/getDefaultExportFromCjs(cytoscapeCxtmenu);
class JugglView extends obsidian.ItemView {
constructor(leaf, settings, plugin, initialNodes) {
super(leaf);
// TODO: Maybe make this configurable
leaf.setPinned(true);
const coreStore = plugin.coreStores[settings.coreStore];
const stores = {
dataStores: [coreStore].concat(plugin.stores),
coreStore: coreStore
};
this.juggl = new Juggl(this.containerEl.children[1], plugin, stores, settings, initialNodes);
this.addChild(this.juggl);
}
getDisplayText() {
// TODO: Make this interactive: Either the active workspace or the local graph
return 'Juggl';
}
getViewType() {
return JUGGL_VIEW_TYPE;
}
}
/* src/pane/NodesList.svelte generated by Svelte v3.45.0 */
function get_each_context$1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[11] = list[i];
return child_ctx;
}
// (18:0) {#if displayList}
function create_if_block$1(ctx) {
let each_1_anchor;
let each_value = /*nodes*/ ctx[1].sort(func);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));
}
return {
c() {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
each_1_anchor = empty();
},
m(target, anchor) {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(target, anchor);
}
insert(target, each_1_anchor, anchor);
},
p(ctx, dirty) {
if (dirty & /*icon_tooltip, onClickButton, nodes, icon, onClickText, ctxmenu*/ 126) {
each_value = /*nodes*/ ctx[1].sort(func);
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$1(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block$1(child_ctx);
each_blocks[i].c();
each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value.length;
}
},
d(detaching) {
destroy_each(each_blocks, detaching);
if (detaching) detach(each_1_anchor);
}
};
}
// (27:16) {#if icon}
function create_if_block_1$1(ctx) {
let button;
let svg;
let path;
let mounted;
let dispose;
return {
c() {
button = element$1("button");
svg = svg_element("svg");
path = svg_element("path");
attr(path, "d", /*icon*/ ctx[4]);
set_style(svg, "width", "14px");
set_style(svg, "height", "14px");
attr(svg, "viewBox", "0 0 24 24");
attr(svg, "xmlns", "http://www.w3.org/2000/svg");
attr(button, "type", "button");
attr(button, "class", "juggl-button juggl-button-pane");
attr(button, "aria-label", /*icon_tooltip*/ ctx[5]);
},
m(target, anchor) {
insert(target, button, anchor);
append(button, svg);
append(svg, path);
if (!mounted) {
dispose = listen(button, "click", function () {
if (is_function(/*onClickButton*/ ctx[3](/*v*/ ctx[11]))) /*onClickButton*/ ctx[3](/*v*/ ctx[11]).apply(this, arguments);
});
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*icon*/ 16) {
attr(path, "d", /*icon*/ ctx[4]);
}
if (dirty & /*icon_tooltip*/ 32) {
attr(button, "aria-label", /*icon_tooltip*/ ctx[5]);
}
},
d(detaching) {
if (detaching) detach(button);
mounted = false;
dispose();
}
};
}
// (19:4) {#each nodes.sort((a, b) => a.data("name").localeCompare(b.data("name"))) as v}
function create_each_block$1(ctx) {
let div2;
let div1;
let div0;
let t0_value = /*v*/ ctx[11].data("name") + "";
let t0;
let t1;
let t2;
let mounted;
let dispose;
function click_handler(...args) {
return /*click_handler*/ ctx[9](/*v*/ ctx[11], ...args);
}
function contextmenu_handler(...args) {
return /*contextmenu_handler*/ ctx[10](/*v*/ ctx[11], ...args);
}
let if_block = /*icon*/ ctx[4] && create_if_block_1$1(ctx);
return {
c() {
div2 = element$1("div");
div1 = element$1("div");
div0 = element$1("div");
t0 = text(t0_value);
t1 = space();
if (if_block) if_block.c();
t2 = space();
attr(div0, "class", "tree-item-inner juggl-list-text");
set_style(div0, "color", /*v*/ ctx[11].style('background-color'));
attr(div1, "class", "tree-item-self is-clickable");
attr(div2, "class", "tree-item");
},
m(target, anchor) {
insert(target, div2, anchor);
append(div2, div1);
append(div1, div0);
append(div0, t0);
append(div1, t1);
if (if_block) if_block.m(div1, null);
append(div2, t2);
if (!mounted) {
dispose = [
listen(div0, "click", click_handler),
listen(div0, "contextmenu", contextmenu_handler)
];
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*nodes*/ 2 && t0_value !== (t0_value = /*v*/ ctx[11].data("name") + "")) set_data(t0, t0_value);
if (dirty & /*nodes*/ 2) {
set_style(div0, "color", /*v*/ ctx[11].style('background-color'));
}
if (/*icon*/ ctx[4]) {
if (if_block) {
if_block.p(ctx, dirty);
} else {
if_block = create_if_block_1$1(ctx);
if_block.c();
if_block.m(div1, null);
}
} else if (if_block) {
if_block.d(1);
if_block = null;
}
},
d(detaching) {
if (detaching) detach(div2);
if (if_block) if_block.d();
mounted = false;
run_all(dispose);
}
};
}
function create_fragment$4(ctx) {
let div;
let t0;
let t1;
let if_block_anchor;
let mounted;
let dispose;
let if_block = /*displayList*/ ctx[7] && create_if_block$1(ctx);
return {
c() {
div = element$1("div");
t0 = text(/*name*/ ctx[0]);
t1 = space();
if (if_block) if_block.c();
if_block_anchor = empty();
attr(div, "class", "juggl-list-header");
},
m(target, anchor) {
insert(target, div, anchor);
append(div, t0);
insert(target, t1, anchor);
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
if (!mounted) {
dispose = listen(div, "click", /*setDisplayList*/ ctx[8]);
mounted = true;
}
},
p(ctx, [dirty]) {
if (dirty & /*name*/ 1) set_data(t0, /*name*/ ctx[0]);
if (/*displayList*/ ctx[7]) {
if (if_block) {
if_block.p(ctx, dirty);
} else {
if_block = create_if_block$1(ctx);
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
if_block.d(1);
if_block = null;
}
},
i: noop$2,
o: noop$2,
d(detaching) {
if (detaching) detach(div);
if (detaching) detach(t1);
if (if_block) if_block.d(detaching);
if (detaching) detach(if_block_anchor);
mounted = false;
dispose();
}
};
}
const func = (a, b) => a.data("name").localeCompare(b.data("name"));
function instance$4($$self, $$props, $$invalidate) {
let { name } = $$props;
let { nodes } = $$props;
let { onClickText } = $$props;
let { onClickButton } = $$props;
let { icon = null } = $$props;
let { icon_tooltip = null } = $$props;
let { ctxmenu } = $$props;
let displayList = true;
let setDisplayList = function () {
$$invalidate(7, displayList = !displayList);
};
const click_handler = (v, e) => onClickText(v, e);
const contextmenu_handler = (v, e) => ctxmenu(v, e);
$$self.$$set = $$props => {
if ('name' in $$props) $$invalidate(0, name = $$props.name);
if ('nodes' in $$props) $$invalidate(1, nodes = $$props.nodes);
if ('onClickText' in $$props) $$invalidate(2, onClickText = $$props.onClickText);
if ('onClickButton' in $$props) $$invalidate(3, onClickButton = $$props.onClickButton);
if ('icon' in $$props) $$invalidate(4, icon = $$props.icon);
if ('icon_tooltip' in $$props) $$invalidate(5, icon_tooltip = $$props.icon_tooltip);
if ('ctxmenu' in $$props) $$invalidate(6, ctxmenu = $$props.ctxmenu);
};
return [
name,
nodes,
onClickText,
onClickButton,
icon,
icon_tooltip,
ctxmenu,
displayList,
setDisplayList,
click_handler,
contextmenu_handler
];
}
class NodesList extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$4, create_fragment$4, safe_not_equal, {
name: 0,
nodes: 1,
onClickText: 2,
onClickButton: 3,
icon: 4,
icon_tooltip: 5,
ctxmenu: 6
});
}
}
/* src/pane/NodesPane.svelte generated by Svelte v3.45.0 */
function create_fragment$3(ctx) {
let div;
let nodeslist0;
let t;
let nodeslist1;
let current;
nodeslist0 = new NodesList({
props: {
nodes: /*visible*/ ctx[0],
name: "Nodes in graph",
ctxmenu: /*ctxMenu*/ ctx[2],
onClickText: /*clickTxt*/ ctx[3]
}
});
nodeslist1 = new NodesList({
props: {
nodes: /*hidden*/ ctx[1],
name: "Hidden nodes",
ctxmenu: /*ctxMenu*/ ctx[2],
onClickText: /*clickTxt*/ ctx[3],
icon: icons.ag_unhide,
icon_tooltip: "Show in graph",
onClickButton: /*filterButtonClick*/ ctx[4]
}
});
return {
c() {
div = element$1("div");
create_component(nodeslist0.$$.fragment);
t = space();
create_component(nodeslist1.$$.fragment);
attr(div, "class", "juggl-nodes-pane");
},
m(target, anchor) {
insert(target, div, anchor);
mount_component(nodeslist0, div, null);
append(div, t);
mount_component(nodeslist1, div, null);
current = true;
},
p(ctx, [dirty]) {
const nodeslist0_changes = {};
if (dirty & /*visible*/ 1) nodeslist0_changes.nodes = /*visible*/ ctx[0];
nodeslist0.$set(nodeslist0_changes);
const nodeslist1_changes = {};
if (dirty & /*hidden*/ 2) nodeslist1_changes.nodes = /*hidden*/ ctx[1];
nodeslist1.$set(nodeslist1_changes);
},
i(local) {
if (current) return;
transition_in(nodeslist0.$$.fragment, local);
transition_in(nodeslist1.$$.fragment, local);
current = true;
},
o(local) {
transition_out(nodeslist0.$$.fragment, local);
transition_out(nodeslist1.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div);
destroy_component(nodeslist0);
destroy_component(nodeslist1);
}
};
}
function instance$3($$self, $$props, $$invalidate) {
let viz = null;
let visible = cytoscape_cjs().collection();
let hidden = cytoscape_cjs().collection();
const setViz = function (juggl) {
if (!juggl) {
viz = null;
$$invalidate(0, visible = cytoscape_cjs().collection());
$$invalidate(1, hidden = cytoscape_cjs().collection());
return;
}
viz = juggl;
// TODO: Can probably do something like not HARD FILTERED, rather than relying on styling.
$$invalidate(0, visible = viz.viz.nodes(":visible"));
$$invalidate(1, hidden = viz.viz.nodes(`.${CLASS_HARD_FILTERED}`));
};
let ctxMenu = function (node, e) {
const fileMenu = new obsidian.Menu(); // Creates empty file menu
const id = VizId.fromNode(node);
const file = viz.plugin.metadata.getFirstLinkpathDest(id.id, '');
if (!(file === undefined)) {
// hook for plugins to populate menu with "file-aware" menu items
viz.plugin.app.workspace.trigger('file-menu', fileMenu, file, 'my-context-menu', null);
}
viz.mode.fillMenu(fileMenu, node);
fileMenu.showAtPosition({ x: e.x, y: e.y });
};
let clickTxt = function (node, e) {
viz.plugin.openFileFromNode(node, e.metaKey);
};
let filterButtonClick = function (node) {
node.removeClass(CLASS_HARD_FILTERED);
viz.onGraphChanged(true, true);
};
return [visible, hidden, ctxMenu, clickTxt, filterButtonClick, setViz];
}
class NodesPane extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$3, create_fragment$3, safe_not_equal, { setViz: 5 });
}
get setViz() {
return this.$$.ctx[5];
}
}
class IconModal extends obsidian.FuzzySuggestModal {
constructor(app, callback, color) {
super(app);
this.callback = callback;
this.resultContainerEl.addClass('juggl-icon-picker');
this.color = color;
}
getItemText(item) {
return item.name;
}
getItems() {
const icons = [{ name: 'No icon', path: '', color: this.color }];
icons.push(...Object.keys(mdiIcons).map((k) => {
return { name: k.slice(3).replace(/([A-Z])/g, ' $1').trim(),
// @ts-ignore
path: mdiIcons[k],
color: this.color };
}));
return icons;
}
onChooseItem(item, evt) {
this.callback(item);
}
renderSuggestion(item, el) {
el.empty();
const iconHtml = pathToSvg(item.item.path);
// // const renderedResult = el.createEl('span', {cls: ''});
const innerResult = el.createEl('span', {
cls: 'react-icon ',
});
innerResult.innerHTML = iconHtml;
// el.createEl('span', {
super.renderSuggestion(item, el);
// cls: '',
// text: item.item.name,
// });
}
}
/* src/pane/StyleGroups.svelte generated by Svelte v3.45.0 */
function get_each_context(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[15] = list[i];
child_ctx[16] = list;
child_ctx[17] = i;
return child_ctx;
}
function get_each_context_1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[18] = list[i];
return child_ctx;
}
// (103:8) {:else}
function create_else_block_1(ctx) {
let div1;
let div0;
let t0;
let t1_value = /*group*/ ctx[15].filter + "";
let t1;
let t2;
let br;
let mounted;
let dispose;
return {
c() {
div1 = element$1("div");
div0 = element$1("div");
div0.innerHTML = ``;
t0 = space();
t1 = text(t1_value);
t2 = space();
br = element$1("br");
attr(div0, "class", "clickable-icon");
set_style(div0, "display", "inline");
attr(div0, "aria-label", "Show group options");
attr(div1, "class", "juggl-style-group-hidden");
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
append(div1, t0);
append(div1, t1);
insert(target, t2, anchor);
insert(target, br, anchor);
if (!mounted) {
dispose = listen(div0, "click", function () {
if (is_function(/*showGroup*/ ctx[7](/*group*/ ctx[15], true))) /*showGroup*/ ctx[7](/*group*/ ctx[15], true).apply(this, arguments);
});
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*groups*/ 1 && t1_value !== (t1_value = /*group*/ ctx[15].filter + "")) set_data(t1, t1_value);
},
d(detaching) {
if (detaching) detach(div1);
if (detaching) detach(t2);
if (detaching) detach(br);
mounted = false;
dispose();
}
};
}
// (47:8) {#if group.showInPane}
function create_if_block(ctx) {
let div10;
let div2;
let div0;
let t0;
let div1;
let svg1;
let path1;
let path1_d_value;
let div1_aria_label_value;
let t1;
let input0;
let t2;
let div3;
let t3;
let div4;
let t4;
let div5;
let input1;
let t5;
let select;
let t6;
let div6;
let t7;
let div7;
let t8;
let button;
let t9;
let div8;
let t10;
let div9;
let t11_value = Math.round(/*group*/ ctx[15].size * 100) / 100 + "";
let t11;
let t12;
let input2;
let mounted;
let dispose;
function input0_input_handler() {
/*input0_input_handler*/ ctx[10].call(input0, /*each_value*/ ctx[16], /*group_index*/ ctx[17]);
}
function input1_input_handler() {
/*input1_input_handler*/ ctx[11].call(input1, /*each_value*/ ctx[16], /*group_index*/ ctx[17]);
}
let each_value_1 = SHAPES;
let each_blocks = [];
for (let i = 0; i < each_value_1.length; i += 1) {
each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
}
function select_change_handler() {
/*select_change_handler*/ ctx[12].call(select, /*each_value*/ ctx[16], /*group_index*/ ctx[17]);
}
let if_block0 = /*group*/ ctx[15].icon.path && create_if_block_2(ctx);
function select_block_type_1(ctx, dirty) {
if (/*group*/ ctx[15].icon.path) return create_if_block_1;
return create_else_block;
}
let current_block_type = select_block_type_1(ctx);
let if_block1 = current_block_type(ctx);
function input2_change_input_handler() {
/*input2_change_input_handler*/ ctx[14].call(input2, /*each_value*/ ctx[16], /*group_index*/ ctx[17]);
}
return {
c() {
div10 = element$1("div");
div2 = element$1("div");
div0 = element$1("div");
div0.innerHTML = ``;
t0 = space();
div1 = element$1("div");
svg1 = svg_element("svg");
path1 = svg_element("path");
t1 = space();
input0 = element$1("input");
t2 = space();
div3 = element$1("div");
div3.innerHTML = ``;
t3 = space();
div4 = element$1("div");
t4 = space();
div5 = element$1("div");
input1 = element$1("input");
t5 = space();
select = element$1("select");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
t6 = space();
div6 = element$1("div");
t7 = space();
div7 = element$1("div");
if (if_block0) if_block0.c();
t8 = space();
button = element$1("button");
if_block1.c();
t9 = space();
div8 = element$1("div");
t10 = space();
div9 = element$1("div");
t11 = text(t11_value);
t12 = space();
input2 = element$1("input");
attr(div0, "class", "clickable-icon");
attr(div0, "aria-label", "Hide group options");
attr(div0, "flex-basis", "100%");
attr(path1, "fill", "currentColor");
attr(path1, "stroke", "currentColor");
attr(path1, "d", path1_d_value = /*group*/ ctx[15].show ? icons.ag_unhide : icons.ag_hide);
attr(svg1, "viewBox", "0 0 24 24");
attr(svg1, "width", "16");
attr(svg1, "height", "16");
attr(svg1, "class", "right-triangle");
attr(div1, "class", "clickable-icon");
attr(div1, "aria-label", div1_aria_label_value = /*group*/ ctx[15].show ? "Hide group" : "Show group");
attr(div1, "flex-basis", "100%");
attr(div2, "class", "juggl-style-pane-left");
attr(input0, "type", "text");
attr(input0, "placeholder", "Enter filter...");
attr(div3, "class", "clickable-icon");
attr(div3, "aria-label", "Delete group");
attr(div3, "flex-basis", "100%");
attr(div4, "class", "break");
attr(input1, "type", "color");
attr(input1, "aria-label", "Click to change color");
attr(input1, "flex-basis", "100%");
attr(div5, "class", "juggl-style-pane-left");
attr(select, "class", "dropdown");
if (/*group*/ ctx[15].shape === void 0) add_render_callback(select_change_handler);
attr(div6, "class", "break");
attr(div7, "class", "juggl-style-pane-left");
attr(button, "class", "juggl-icon-button");
attr(div8, "class", "break");
attr(div9, "class", "juggl-style-pane-left");
attr(input2, "class", "slider");
attr(input2, "type", "range");
attr(input2, "min", "0.01");
attr(input2, "max", "10");
attr(input2, "step", "any");
attr(input2, "aria-label", "Size");
attr(div10, "class", "juggl-style-group");
},
m(target, anchor) {
insert(target, div10, anchor);
append(div10, div2);
append(div2, div0);
append(div2, t0);
append(div2, div1);
append(div1, svg1);
append(svg1, path1);
append(div10, t1);
append(div10, input0);
set_input_value(input0, /*group*/ ctx[15].filter);
append(div10, t2);
append(div10, div3);
append(div10, t3);
append(div10, div4);
append(div10, t4);
append(div10, div5);
append(div5, input1);
set_input_value(input1, /*group*/ ctx[15].color);
append(div10, t5);
append(div10, select);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(select, null);
}
select_option(select, /*group*/ ctx[15].shape);
append(div10, t6);
append(div10, div6);
append(div10, t7);
append(div10, div7);
if (if_block0) if_block0.m(div7, null);
append(div10, t8);
append(div10, button);
if_block1.m(button, null);
append(div10, t9);
append(div10, div8);
append(div10, t10);
append(div10, div9);
append(div9, t11);
append(div10, t12);
append(div10, input2);
set_input_value(input2, /*group*/ ctx[15].size);
if (!mounted) {
dispose = [
listen(div0, "click", function () {
if (is_function(/*showGroup*/ ctx[7](/*group*/ ctx[15], false))) /*showGroup*/ ctx[7](/*group*/ ctx[15], false).apply(this, arguments);
}),
listen(div1, "click", function () {
if (is_function(/*changeShow*/ ctx[8](/*group*/ ctx[15]))) /*changeShow*/ ctx[8](/*group*/ ctx[15]).apply(this, arguments);
}),
listen(input0, "input", input0_input_handler),
listen(input0, "change", function () {
if (is_function(/*onChangeFilter*/ ctx[2])) /*onChangeFilter*/ ctx[2].apply(this, arguments);
}),
listen(div3, "click", function () {
if (is_function(/*onDeleteGroup*/ ctx[5](/*group*/ ctx[15]))) /*onDeleteGroup*/ ctx[5](/*group*/ ctx[15]).apply(this, arguments);
}),
listen(input1, "input", input1_input_handler),
listen(input1, "change", function () {
if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments);
}),
listen(select, "change", select_change_handler),
listen(select, "blur", function () {
if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments);
}),
listen(button, "click", function () {
if (is_function(/*onIconButton*/ ctx[6](/*group*/ ctx[15]))) /*onIconButton*/ ctx[6](/*group*/ ctx[15]).apply(this, arguments);
}),
listen(input2, "change", input2_change_input_handler),
listen(input2, "input", input2_change_input_handler),
listen(input2, "change", function () {
if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments);
})
];
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*groups, SHAPES*/ 1 && path1_d_value !== (path1_d_value = /*group*/ ctx[15].show ? icons.ag_unhide : icons.ag_hide)) {
attr(path1, "d", path1_d_value);
}
if (dirty & /*groups, SHAPES*/ 1 && div1_aria_label_value !== (div1_aria_label_value = /*group*/ ctx[15].show ? "Hide group" : "Show group")) {
attr(div1, "aria-label", div1_aria_label_value);
}
if (dirty & /*groups, SHAPES*/ 1 && input0.value !== /*group*/ ctx[15].filter) {
set_input_value(input0, /*group*/ ctx[15].filter);
}
if (dirty & /*groups, SHAPES*/ 1) {
set_input_value(input1, /*group*/ ctx[15].color);
}
if (dirty & /*SHAPES*/ 0) {
each_value_1 = SHAPES;
let i;
for (i = 0; i < each_value_1.length; i += 1) {
const child_ctx = get_each_context_1(ctx, each_value_1, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block_1(child_ctx);
each_blocks[i].c();
each_blocks[i].m(select, null);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value_1.length;
}
if (dirty & /*groups, SHAPES*/ 1) {
select_option(select, /*group*/ ctx[15].shape);
}
if (/*group*/ ctx[15].icon.path) {
if (if_block0) {
if_block0.p(ctx, dirty);
} else {
if_block0 = create_if_block_2(ctx);
if_block0.c();
if_block0.m(div7, null);
}
} else if (if_block0) {
if_block0.d(1);
if_block0 = null;
}
if (current_block_type === (current_block_type = select_block_type_1(ctx)) && if_block1) {
if_block1.p(ctx, dirty);
} else {
if_block1.d(1);
if_block1 = current_block_type(ctx);
if (if_block1) {
if_block1.c();
if_block1.m(button, null);
}
}
if (dirty & /*groups*/ 1 && t11_value !== (t11_value = Math.round(/*group*/ ctx[15].size * 100) / 100 + "")) set_data(t11, t11_value);
if (dirty & /*groups, SHAPES*/ 1) {
set_input_value(input2, /*group*/ ctx[15].size);
}
},
d(detaching) {
if (detaching) detach(div10);
destroy_each(each_blocks, detaching);
if (if_block0) if_block0.d();
if_block1.d();
mounted = false;
run_all(dispose);
}
};
}
// (78:16) {#each SHAPES as shape}
function create_each_block_1(ctx) {
let option;
let t_value = /*shape*/ ctx[18] + "";
let t;
let option_value_value;
return {
c() {
option = element$1("option");
t = text(t_value);
option.__value = option_value_value = /*shape*/ ctx[18];
option.value = option.__value;
},
m(target, anchor) {
insert(target, option, anchor);
append(option, t);
},
p: noop$2,
d(detaching) {
if (detaching) detach(option);
}
};
}
// (84:16) {#if group.icon.path}
function create_if_block_2(ctx) {
let input;
let mounted;
let dispose;
function input_input_handler() {
/*input_input_handler*/ ctx[13].call(input, /*each_value*/ ctx[16], /*group_index*/ ctx[17]);
}
return {
c() {
input = element$1("input");
attr(input, "type", "color");
attr(input, "aria-label", "Click to change icon color");
attr(input, "flex-basis", "100%");
},
m(target, anchor) {
insert(target, input, anchor);
set_input_value(input, /*group*/ ctx[15].icon.color);
if (!mounted) {
dispose = [
listen(input, "input", input_input_handler),
listen(input, "change", function () {
if (is_function(/*onChangeGroups*/ ctx[3])) /*onChangeGroups*/ ctx[3].apply(this, arguments);
})
];
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*groups, SHAPES*/ 1) {
set_input_value(input, /*group*/ ctx[15].icon.color);
}
},
d(detaching) {
if (detaching) detach(input);
mounted = false;
run_all(dispose);
}
};
}
// (93:16) {:else}
function create_else_block(ctx) {
let t_value = /*group*/ ctx[15].icon.name + "";
let t;
return {
c() {
t = text(t_value);
},
m(target, anchor) {
insert(target, t, anchor);
},
p(ctx, dirty) {
if (dirty & /*groups*/ 1 && t_value !== (t_value = /*group*/ ctx[15].icon.name + "")) set_data(t, t_value);
},
d(detaching) {
if (detaching) detach(t);
}
};
}
// (89:16) {#if group.icon.path}
function create_if_block_1(ctx) {
let svg;
let path;
let path_d_value;
return {
c() {
svg = svg_element("svg");
path = svg_element("path");
attr(path, "fill", "currentcolor");
attr(path, "d", path_d_value = /*group*/ ctx[15].icon.path);
set_style(svg, "width", "24px");
set_style(svg, "height", "24px");
attr(svg, "viewBox", "0 0 24 24");
attr(svg, "xmlns", "http://www.w3.org/2000/svg");
},
m(target, anchor) {
insert(target, svg, anchor);
append(svg, path);
},
p(ctx, dirty) {
if (dirty & /*groups, SHAPES*/ 1 && path_d_value !== (path_d_value = /*group*/ ctx[15].icon.path)) {
attr(path, "d", path_d_value);
}
},
d(detaching) {
if (detaching) detach(svg);
}
};
}
// (46:4) {#each groups as group}
function create_each_block(ctx) {
let if_block_anchor;
function select_block_type(ctx, dirty) {
if (/*group*/ ctx[15].showInPane) return create_if_block;
return create_else_block_1;
}
let current_block_type = select_block_type(ctx);
let if_block = current_block_type(ctx);
return {
c() {
if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
},
p(ctx, dirty) {
if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
if_block.p(ctx, dirty);
} else {
if_block.d(1);
if_block = current_block_type(ctx);
if (if_block) {
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
}
},
d(detaching) {
if_block.d(detaching);
if (detaching) detach(if_block_anchor);
}
};
}
function create_fragment$2(ctx) {
let div0;
let t0;
let t1;
let div2;
let t2;
let div1;
let mounted;
let dispose;
let each_value = /*groups*/ ctx[0];
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
}
return {
c() {
div0 = element$1("div");
t0 = text(/*title*/ ctx[1]);
t1 = space();
div2 = element$1("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
t2 = space();
div1 = element$1("div");
div1.innerHTML = ``;
attr(div0, "class", "juggl-list-header");
attr(div1, "class", "graph-color-button-container");
attr(div2, "class", "juggl-style-group-container");
},
m(target, anchor) {
insert(target, div0, anchor);
append(div0, t0);
insert(target, t1, anchor);
insert(target, div2, anchor);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(div2, null);
}
append(div2, t2);
append(div2, div1);
if (!mounted) {
dispose = listen(div1, "click", /*onNewGroup*/ ctx[4]);
mounted = true;
}
},
p(ctx, [dirty]) {
if (dirty & /*title*/ 2) set_data(t0, /*title*/ ctx[1]);
if (dirty & /*groups, onChangeGroups, Math, onIconButton, SHAPES, onDeleteGroup, onChangeFilter, changeShow, icons, showGroup*/ 493) {
each_value = /*groups*/ ctx[0];
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block(child_ctx);
each_blocks[i].c();
each_blocks[i].m(div2, t2);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value.length;
}
},
i: noop$2,
o: noop$2,
d(detaching) {
if (detaching) detach(div0);
if (detaching) detach(t1);
if (detaching) detach(div2);
destroy_each(each_blocks, detaching);
mounted = false;
dispose();
}
};
}
function instance$2($$self, $$props, $$invalidate) {
let { groups } = $$props;
let { title } = $$props;
let { onChangeFilter } = $$props;
let { onChangeGroups } = $$props;
let { plugin } = $$props;
let onNewGroup = function () {
groups.push({ ...emptyStyleGroup });
$$invalidate(0, groups);
onChangeGroups();
};
let onDeleteGroup = function (group) {
groups.remove(group);
$$invalidate(0, groups);
onChangeFilter();
onChangeGroups();
};
let onIconButton = function (group) {
let callback = function (icon) {
group.icon = icon;
onChangeGroups();
$$invalidate(0, groups);
};
let iconModal = new IconModal(plugin.app, callback, group.icon.color);
iconModal.open();
};
let showGroup = function (group, show) {
group.showInPane = show;
$$invalidate(0, groups);
};
let changeShow = function (group) {
group.show = !group.show;
onChangeGroups();
$$invalidate(0, groups);
};
function input0_input_handler(each_value, group_index) {
each_value[group_index].filter = this.value;
$$invalidate(0, groups);
}
function input1_input_handler(each_value, group_index) {
each_value[group_index].color = this.value;
$$invalidate(0, groups);
}
function select_change_handler(each_value, group_index) {
each_value[group_index].shape = select_value(this);
$$invalidate(0, groups);
}
function input_input_handler(each_value, group_index) {
each_value[group_index].icon.color = this.value;
$$invalidate(0, groups);
}
function input2_change_input_handler(each_value, group_index) {
each_value[group_index].size = to_number(this.value);
$$invalidate(0, groups);
}
$$self.$$set = $$props => {
if ('groups' in $$props) $$invalidate(0, groups = $$props.groups);
if ('title' in $$props) $$invalidate(1, title = $$props.title);
if ('onChangeFilter' in $$props) $$invalidate(2, onChangeFilter = $$props.onChangeFilter);
if ('onChangeGroups' in $$props) $$invalidate(3, onChangeGroups = $$props.onChangeGroups);
if ('plugin' in $$props) $$invalidate(9, plugin = $$props.plugin);
};
return [
groups,
title,
onChangeFilter,
onChangeGroups,
onNewGroup,
onDeleteGroup,
onIconButton,
showGroup,
changeShow,
plugin,
input0_input_handler,
input1_input_handler,
select_change_handler,
input_input_handler,
input2_change_input_handler
];
}
class StyleGroups extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$2, create_fragment$2, safe_not_equal, {
groups: 0,
title: 1,
onChangeFilter: 2,
onChangeGroups: 3,
plugin: 9
});
}
}
/* src/pane/StylePane.svelte generated by Svelte v3.45.0 */
function create_fragment$1(ctx) {
let div;
let stylegroups0;
let t;
let stylegroups1;
let current;
stylegroups0 = new StyleGroups({
props: {
groups: /*localGroups*/ ctx[1],
title: "Local style groups",
onChangeGroups: /*onChangeGroups*/ ctx[3],
onChangeFilter: /*onChangeFilter*/ ctx[5],
plugin: /*plugin*/ ctx[0]
}
});
stylegroups1 = new StyleGroups({
props: {
groups: /*globalGroups*/ ctx[2],
title: "Global style groups",
onChangeGroups: /*onChangeGroupsGlobal*/ ctx[4],
onChangeFilter: /*onChangeFilterGlobal*/ ctx[6],
plugin: /*plugin*/ ctx[0]
}
});
return {
c() {
div = element$1("div");
create_component(stylegroups0.$$.fragment);
t = space();
create_component(stylegroups1.$$.fragment);
attr(div, "class", "juggl-style-pane");
},
m(target, anchor) {
insert(target, div, anchor);
mount_component(stylegroups0, div, null);
append(div, t);
mount_component(stylegroups1, div, null);
current = true;
},
p(ctx, [dirty]) {
const stylegroups0_changes = {};
if (dirty & /*localGroups*/ 2) stylegroups0_changes.groups = /*localGroups*/ ctx[1];
if (dirty & /*plugin*/ 1) stylegroups0_changes.plugin = /*plugin*/ ctx[0];
stylegroups0.$set(stylegroups0_changes);
const stylegroups1_changes = {};
if (dirty & /*plugin*/ 1) stylegroups1_changes.plugin = /*plugin*/ ctx[0];
stylegroups1.$set(stylegroups1_changes);
},
i(local) {
if (current) return;
transition_in(stylegroups0.$$.fragment, local);
transition_in(stylegroups1.$$.fragment, local);
current = true;
},
o(local) {
transition_out(stylegroups0.$$.fragment, local);
transition_out(stylegroups1.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div);
destroy_component(stylegroups0);
destroy_component(stylegroups1);
}
};
}
function instance$1($$self, $$props, $$invalidate) {
let { viz } = $$props;
let { plugin } = $$props;
let settings = plugin?.settings;
const setViz = function (_viz) {
$$invalidate(7, viz = _viz);
if (viz) {
$$invalidate(1, localGroups = viz.settings.styleGroups);
} else {
$$invalidate(1, localGroups = []);
}
};
let localGroups = [];
let globalGroups = settings.globalStyleGroups;
let onChangeGroups = function () {
if (viz) {
viz.updateStylesheet();
}
};
let onChangeGroupsGlobal = function () {
plugin.saveData(settings);
plugin.activeGraphs().forEach(j => j.updateStylesheet());
};
let onChangeFilter = function () {
if (viz) {
viz.assignStyleGroups();
}
};
let onChangeFilterGlobal = function () {
plugin.saveData(settings);
plugin.activeGraphs().forEach(j => j.assignStyleGroups());
};
$$self.$$set = $$props => {
if ('viz' in $$props) $$invalidate(7, viz = $$props.viz);
if ('plugin' in $$props) $$invalidate(0, plugin = $$props.plugin);
};
return [
plugin,
localGroups,
globalGroups,
onChangeGroups,
onChangeGroupsGlobal,
onChangeFilter,
onChangeFilterGlobal,
viz,
setViz
];
}
class StylePane extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$1, create_fragment$1, safe_not_equal, { viz: 7, plugin: 0, setViz: 8 });
}
get setViz() {
return this.$$.ctx[8];
}
}
class JugglPane extends obsidian.ItemView {
constructor(leaf, plugin) {
super(leaf);
this.activeViz = null;
this.changeRef = null;
this.plugin = plugin;
const view = this;
this.registerEvent(this.plugin.app.workspace.on('active-leaf-change', (leaf) => {
if (this.changeRef) {
this.activeViz.offref(this.changeRef);
this.changeRef = null;
}
if (leaf) {
if (leaf.view.getViewType() === JUGGL_VIEW_TYPE) {
const activeViz = leaf.view.juggl;
this.changeRef = activeViz.on('elementsChange', () => {
view.onActiveVizChange();
});
if (activeViz === this.activeViz) {
return;
}
this.activeViz = activeViz;
}
else if (!(leaf.view instanceof JugglPane)) {
this.activeViz = null;
}
}
else {
this.activeViz = null;
}
this.onActiveVizChange();
}));
}
setViz(viz) {
this.activeViz = viz;
this.onActiveVizChange();
}
}
class JugglNodesPane extends JugglPane {
constructor(leaf, plugin) {
super(leaf, plugin);
this.icon = 'ag-node-list';
}
onload() {
super.onload();
this.pane = new NodesPane({ target: this.contentEl });
}
getDisplayText() {
return 'Juggl nodes';
}
getViewType() {
return JUGGL_NODES_VIEW_TYPE;
}
onActiveVizChange() {
if (this.pane) {
this.pane.setViz.bind(this.pane)(this.activeViz);
}
}
}
class JugglStylePane extends JugglPane {
constructor(leaf, plugin) {
super(leaf, plugin);
this.icon = 'ag-style';
}
onload() {
super.onload();
this.pane = new StylePane({ target: this.contentEl, props: {
plugin: this.plugin,
} });
}
getDisplayText() {
return 'Juggl style';
}
getViewType() {
return JUGGL_STYLE_VIEW_TYPE;
}
onActiveVizChange() {
if (this.pane) {
this.pane.setViz.bind(this.pane)(this.activeViz);
}
}
}
class WorkspaceManager extends obsidian.Component {
constructor(plugin) {
super();
this.graphs = [];
this.plugin = plugin;
this.adapter = this.plugin.app.vault.adapter;
}
async onload() {
super.onload();
try {
await this.adapter.mkdir(DATA_FOLDER(this.plugin.vault));
const path = require('path');
this.graphs = (await this.adapter.list(DATA_FOLDER(this.plugin.vault))).folders.map((s) => path.basename(s));
}
catch (e) {
console.log(e);
}
}
async saveGraph(name, viz) {
try {
const folder = DATA_FOLDER(viz.vault) + name;
await this.adapter.mkdir(folder);
const graphJson = viz.viz.json();
await this.adapter.write(folder + '/graph.json', JSON.stringify(graphJson));
const settings = viz.settings;
await this.adapter.write(folder + '/settings.json', JSON.stringify(settings));
if (!this.graphs.contains(name)) {
this.graphs.push(name);
}
}
catch (e) {
console.log(e);
}
}
async loadGraph(name, viz) {
try {
const folder = DATA_FOLDER(viz.vault) + name;
const graph = JSON.parse(await this.adapter.read(folder + '/graph.json'));
const settings = JSON.parse(await this.adapter.read(folder + '/settings.json'));
viz.viz.json(graph);
viz.settings = settings;
// After loading in the graph, we have to validate with the datastores that the data is still up-to-date:
// This could create race-condition conflicts possibly when a node updates in the meantime.
const nodes = viz.viz.nodes();
for (let i = 1; i < nodes.length; i++) {
if (!nodes[i]) {
continue;
}
const vId = VizId.fromNode(nodes[i]);
for (const store of viz.datastores.dataStores) {
if (store.storeId() === vId.storeId) {
await store.refreshNode(vId, viz);
break;
}
}
}
}
catch (e) {
console.log(e);
}
}
;
async deleteGraph(name, view) {
try {
await this.adapter.rmdir(DATA_FOLDER + name, true);
this.graphs.remove(name);
}
catch (e) {
console.log(e);
}
}
}
/* src/ui/settings/GlobalGraphModal.svelte generated by Svelte v3.45.0 */
function create_fragment(ctx) {
let t0;
let br;
let t1;
let button0;
let t3;
let button1;
let mounted;
let dispose;
return {
c() {
t0 = text("Warning: Juggl is not optimized for large graphs. We advise not to use the global graph if your vault\ncontains more than 250 notes to prevent Obsidian from freezing. ");
br = element$1("br");
t1 = space();
button0 = element$1("button");
button0.textContent = "Cancel";
t3 = space();
button1 = element$1("button");
button1.textContent = "Understood, continue";
attr(button0, "class", "mod-cta");
attr(button1, "class", "mod-cta");
},
m(target, anchor) {
insert(target, t0, anchor);
insert(target, br, anchor);
insert(target, t1, anchor);
insert(target, button0, anchor);
insert(target, t3, anchor);
insert(target, button1, anchor);
if (!mounted) {
dispose = [
listen(button0, "click", function () {
if (is_function(/*cancelCallback*/ ctx[0])) /*cancelCallback*/ ctx[0].apply(this, arguments);
}),
listen(button1, "click", function () {
if (is_function(/*continueCallback*/ ctx[1])) /*continueCallback*/ ctx[1].apply(this, arguments);
})
];
mounted = true;
}
},
p(new_ctx, [dirty]) {
ctx = new_ctx;
},
i: noop$2,
o: noop$2,
d(detaching) {
if (detaching) detach(t0);
if (detaching) detach(br);
if (detaching) detach(t1);
if (detaching) detach(button0);
if (detaching) detach(t3);
if (detaching) detach(button1);
mounted = false;
run_all(dispose);
}
};
}
function instance($$self, $$props, $$invalidate) {
let { cancelCallback } = $$props;
let { continueCallback } = $$props;
$$self.$$set = $$props => {
if ('cancelCallback' in $$props) $$invalidate(0, cancelCallback = $$props.cancelCallback);
if ('continueCallback' in $$props) $$invalidate(1, continueCallback = $$props.continueCallback);
};
return [cancelCallback, continueCallback];
}
class GlobalGraphModal extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance, create_fragment, safe_not_equal, { cancelCallback: 0, continueCallback: 1 });
}
}
class GlobalWarningModal extends obsidian.Modal {
constructor(app, callback) {
super(app);
const modal = this;
new GlobalGraphModal({ target: this.modalEl, props: {
cancelCallback: this.close.bind(modal),
continueCallback: callback,
} });
}
}
// I got this from https://github.com/SilentVoid13/Templater/blob/master/src/fuzzy_suggester.ts
// const STATUS_OFFLINE = 'Neo4j stream offline';
class JugglPlugin extends obsidian.Plugin {
constructor() {
super(...arguments);
this.coreStores = {};
this.stores = [];
}
async onload() {
super.onload();
console.log('Loading Juggl');
cytoscapeNavigator(cytoscape_cjs);
cytoscape_cjs.use(popper);
cytoscape_cjs.use(cola);
cytoscape_cjs.use(dagre);
cytoscape_cjs.use(avsdf);
cytoscape_cjs.use(d3Force);
cytoscape_cjs.use(register);
cytoscape_cjs.use(cxtmenu);
addIcons();
this.vault = this.app.vault;
this.metadata = this.app.metadataCache;
this.path = this.vault.getRoot().path;
const obsidianStore = new ObsidianStore(this);
this.addChild(obsidianStore);
this.workspaceManager = new WorkspaceManager(this);
this.addChild(this.workspaceManager);
this.registerCoreStore(obsidianStore, OBSIDIAN_STORE_NAME);
DefaultJugglSettings.globalStyleGroups = genStyleGroups(this);
this.settings = Object.assign({}, DefaultJugglSettings, await this.loadData());
this.settings.globalStyleGroups = this.settings.globalStyleGroups.map((g) => Object.assign({}, emptyStyleGroup, g));
this.settings.graphSettings = Object.assign({}, DefaultJugglSettings.graphSettings, this.settings.graphSettings);
this.settings.embedSettings = Object.assign({}, DefaultJugglSettings.embedSettings, this.settings.embedSettings);
this.addCommand({
id: 'open-vis',
name: 'Open local graph of note',
callback: () => {
const file = this.app.workspace.getActiveFile();
const name = file.name;
this.openLocalGraph(name);
},
});
this.addCommand({
id: 'open-vis-global',
name: 'Open global graph',
callback: () => {
this.openGlobalGraph();
},
});
this.addSettingTab(new JugglGraphSettingsTab(this.app, this));
this.registerEvent(this.app.workspace.on('file-menu', (menu, file) => {
if (!file) {
return;
}
menu.addItem((item) => {
item.setTitle('Open Juggl').setIcon('dot-network')
.onClick((evt) => {
if (file.extension === 'md') {
this.openLocalGraph(file.basename);
}
else {
this.openLocalGraph(file.name);
}
});
});
}));
this.registerMarkdownCodeBlockProcessor('juggl', async (src, el, context) => {
// timeout is needed to ensure the div is added to the window. The graph will only load if
// it is attached. This will also prevent any annoying hickups while looading the graph.
setTimeout(async () => {
const parsed = obsidian.parseYaml(src);
try {
const settings = Object.assign({}, this.settings.embedSettings, parsed);
if (!(LAYOUTS.contains(settings.layout))) {
throw new Error(`Invalid layout. Choose one from ${LAYOUTS}`);
}
const stores = {
dataStores: [this.coreStores[settings.coreStore]].concat(this.stores),
coreStore: this.coreStores[settings.coreStore],
};
el.style.width = settings.width;
el.style.height = settings.height;
if (Object.keys(parsed).contains('local')) {
this.addChild(new Juggl(el, this, stores, settings, [parsed.local]));
}
else if (Object.keys(parsed).contains('workspace')) {
const graph = new Juggl(el, this, stores, settings, null);
if (!this.workspaceManager.graphs.contains(parsed.workspace)) {
throw new Error('Did not recognize workspace. Did you misspell its name?');
}
this.addChild(graph);
await this.workspaceManager.loadGraph(parsed.workspace, graph);
}
else if (Object.keys(parsed).contains('oql')) {
// @ts-ignore
if ('obsidian-query-language' in this.app.plugins.plugins) {
// @ts-ignore
const searchResults = await this.app.plugins.plugins['obsidian-query-language'].search(parsed.oql);
settings.expandInitial = false;
this.addChild(new Juggl(el, this, stores, settings, searchResults.map((file) => file.title)));
}
else {
throw new Error('The Obsidian Query Language plugin isn\'t loaded, so cannot query using oql!');
}
}
else {
throw new Error('Invalid query. Specify either the local property or the workspace property.');
}
}
catch (error) {
// taken from https://github.com/jplattel/obsidian-query-language/blob/main/src/renderer.ts
const errorElement = document.createElement('div');
errorElement.addClass('juggl-error');
errorElement.innerText = error.message;
el.appendChild(errorElement);
}
}, 200);
});
const plugin = this;
// Adapted from https://github.com/liamcain/obsidian-calendar-plugin/blob/master/src/main.ts
this.registerView(JUGGL_NODES_VIEW_TYPE, (leaf) => new JugglNodesPane(leaf, plugin));
this.registerView(JUGGL_STYLE_VIEW_TYPE, (leaf) => new JugglStylePane(leaf, plugin));
const createNodesPane = function () {
if (plugin.app.workspace.getLeavesOfType(JUGGL_NODES_VIEW_TYPE).length === 0) {
const leaf = plugin.app.workspace.getRightLeaf(false);
leaf.setViewState({ type: JUGGL_NODES_VIEW_TYPE });
} //
};
const createStylePane = function () {
if (plugin.app.workspace.getLeavesOfType(JUGGL_STYLE_VIEW_TYPE).length === 0) {
const leaf = plugin.app.workspace.getRightLeaf(false);
leaf.setViewState({ type: JUGGL_STYLE_VIEW_TYPE });
}
};
this.app.workspace.onLayoutReady(createNodesPane);
this.app.workspace.onLayoutReady(createStylePane);
this.addCommand({
id: 'show-nodes-pane',
name: 'Open Nodes Pane',
checkCallback: (checking) => {
if (checking) {
return (this.app.workspace.getLeavesOfType(JUGGL_NODES_VIEW_TYPE).length === 0);
}
createNodesPane();
},
});
this.addCommand({
id: 'show-style-pane',
name: 'Open Style Pane',
checkCallback: (checking) => {
if (checking) {
return (this.app.workspace.getLeavesOfType(JUGGL_STYLE_VIEW_TYPE).length === 0);
}
createStylePane();
},
});
const sheetPath = STYLESHEET_PATH(this.vault);
// @ts-ignore
this.registerEvent(this.vault.on('raw', (file) => {
// @ts-ignore
if (file === sheetPath) {
console.log(`Updating stylesheet from ${sheetPath}`);
for (const view of this.activeGraphs()) {
view.updateStylesheet().then();
}
}
}));
this.setGlobalIcon();
this.addChild(new ImageServer(this));
}
setGlobalIcon() {
if (this.ribbonIcon) {
this.ribbonIcon.detach();
}
if (this.settings.globalGraphRibbon) {
this.ribbonIcon = this.addRibbonIcon('ag-concentric', 'Juggl global graph', () => {
this.openGlobalGraph();
});
}
}
async openFileFromNode(node, newLeaf = false) {
const id = VizId.fromNode(node);
if (!(id.storeId === 'core')) {
return null;
}
let file = this.app.metadataCache.getFirstLinkpathDest(id.id, '');
if (file) {
await this.openFile(file);
}
else {
// create dangling file
// todo: add default folder
const filename = id.id + '.md';
file = await this.vault.create(filename, '');
await this.openFile(file);
}
return file;
}
async openFile(file, newLeaf = false) {
await this.app.workspace.getLeaf(newLeaf).openFile(file);
}
async openLocalGraph(name) {
const leaf = this.app.workspace.splitActiveLeaf(this.settings.splitDirection);
// const query = this.localNeighborhoodCypher(name);
const neovisView = new JugglView(leaf, this.settings.graphSettings, this, [name]);
await leaf.open(neovisView);
}
async openGlobalGraph() {
const leaf = this.app.workspace.getLeaf(false);
// const query = this.localNeighborhoodCypher(name);
const names = this.app.vault.getFiles().map((f) => f.extension === 'md' ? f.basename : f.name);
if (names.length > 250) {
const modal = new GlobalWarningModal(this.app, async () => {
const neovisView = new JugglView(leaf, this.settings.globalGraphSettings, this, names);
await leaf.open(neovisView);
modal.close();
});
modal.open();
}
else {
const neovisView = new JugglView(leaf, this.settings.globalGraphSettings, this, names);
await leaf.open(neovisView);
}
}
activeGraphs() {
// TODO: This is not a great method, no way to find back the inline graphs!
return this.app.workspace
.getLeavesOfType(JUGGL_VIEW_TYPE)
.map((l) => l.view.juggl);
}
async onunload() {
super.onunload();
console.log('Unloading Juggl');
this.app.workspace.detachLeavesOfType(JUGGL_NODES_VIEW_TYPE);
this.app.workspace.detachLeavesOfType(JUGGL_STYLE_VIEW_TYPE);
if (this.watcher) {
this.watcher.close();
}
}
registerStore(store) {
this.stores.push(store);
}
registerCoreStore(store, name) {
if (!(store.storeId() === 'core')) {
throw new Error('Can only register IDataStores as core if their storeId is core');
}
this.coreStores[name] = store;
}
createJuggl(el, settings, datastores, initialNodes) {
// Public constructor for Juggl instances. Used for the API.
if (!settings) {
settings = Object.assign({}, DefaultJugglSettings.embedSettings);
if (initialNodes) {
settings.expandInitial = false;
}
}
if (!datastores) {
datastores = this.defaultStores();
}
return new Juggl(el, this, datastores, settings, initialNodes);
}
defaultStores() {
return {
dataStores: [this.coreStores[OBSIDIAN_STORE_NAME]].concat(this.stores),
coreStore: this.coreStores[OBSIDIAN_STORE_NAME],
};
}
}
// Match around [[ and ]], and ensure content isn't a wikilnk closure
// This doesn't explicitly parse aliases.
JugglPlugin.CAT_DANGLING = 'dangling';
module.exports = JugglPlugin;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsic3JjL2V2ZW50cy50cyIsInNyYy9jb25zdGFudHMudHMiLCJub2RlX21vZHVsZXMvanVnZ2wtYXBpL2Rpc3QvaW5kZXgubWpzIiwic3JjL29ic2lkaWFuLXN0b3JlLnRzIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS9pbnRlcm5hbC9pbmRleC5tanMiLCJzcmMvdml6L3N0eWxlc2hlZXQudHMiLCJzcmMvdWkvc2V0dGluZ3MvQXBwZWFyYW5jZVNldHRpbmdzLnN2ZWx0ZSIsInNyYy91aS9Lb0ZpLnN2ZWx0ZSIsInNyYy9zZXR0aW5ncy50cyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2guZGVib3VuY2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaGVhcC9saWIvaGVhcC5qcyIsIm5vZGVfbW9kdWxlcy9oZWFwL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2N5dG9zY2FwZS9kaXN0L2N5dG9zY2FwZS5janMuanMiLCJub2RlX21vZHVsZXMvQG1kaS9qcy9tZGkuanMiLCJzcmMvdWkvaWNvbnMudHMiLCJzcmMvdWkvdG9vbGJhci9Ub29sYmFyQnV0dG9uLnN2ZWx0ZSIsInNyYy91aS9oZWxwLXZpZXcudHMiLCJzcmMvdWkvdG9vbGJhci9IZWxwQnV0dG9uLnN2ZWx0ZSIsInNyYy91aS90b29sYmFyL1Rvb2xiYXIuc3ZlbHRlIiwic3JjL3Zpei9sYXlvdXQtc2V0dGluZ3MudHMiLCJzcmMvdWkvU2F2ZVdvcmtzcGFjZUl0ZW0uc3ZlbHRlIiwic3JjL3VpL1NhdmVXb3Jrc3BhY2VzLnN2ZWx0ZSIsInNyYy91aS93b3Jrc3BhY2UtbW9kYWwudHMiLCJzcmMvdml6L3dvcmtzcGFjZXMvd29ya3NwYWNlLW1vZGUudHMiLCJzcmMvdWkvdG9vbGJhci9Ub29sYmFyTG9jYWwuc3ZlbHRlIiwic3JjL3Zpei9sb2NhbC1tb2RlLnRzIiwibm9kZV9tb2R1bGVzL3NlYXJjaC1xdWVyeS1wYXJzZXIvbGliL3NlYXJjaC1xdWVyeS1wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvc2VhcmNoLXF1ZXJ5LXBhcnNlci9pbmRleC5qcyIsInNyYy92aXovcXVlcnktYnVpbGRlci50cyIsInNyYy92aXovdmlzdWFsaXphdGlvbi50cyIsInNyYy9pbWFnZS1zZXJ2ZXIudHMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLW5hdmlnYXRvci9jeXRvc2NhcGUtbmF2aWdhdG9yLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVOYW1lLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tYXRoLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2NvbnRhaW5zLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzVGFibGVFbGVtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy93aXRoaW4uanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9leHBhbmRUb0hhc2hNYXAuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0VmFyaWF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZU9mZnNldHMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvb2Zmc2V0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QWx0QXhpcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZWJvdW5jZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZm9ybWF0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdW5pcXVlQnkuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9jcmVhdGVQb3BwZXIuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1saXRlLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXIuanMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLXBvcHBlci9jeXRvc2NhcGUtcG9wcGVyLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvcG93ZXJncmFwaC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2xpbmtsZW5ndGhzLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZGVzY2VudC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL3Zwc2MuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9yYnRyZWUuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9yZWN0YW5nbGUuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9wcXVldWUuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9zaG9ydGVzdHBhdGhzLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZ2VvbS5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2hhbmRsZWRpc2Nvbm5lY3RlZC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2xheW91dC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2FkYXB0b3IuanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L3NyYy9kM3YzYWRhcHRvci5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2QzdjRhZGFwdG9yLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZDNhZGFwdG9yLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvZ3JpZHJvdXRlci5qcyIsIm5vZGVfbW9kdWxlcy93ZWJjb2xhL2Rpc3Qvc3JjL2xheW91dDNkLmpzIiwibm9kZV9tb2R1bGVzL3dlYmNvbGEvZGlzdC9zcmMvYmF0Y2guanMiLCJub2RlX21vZHVsZXMvd2ViY29sYS9kaXN0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2N5dG9zY2FwZS1jb2xhL2N5dG9zY2FwZS1jb2xhLmpzIiwibm9kZV9tb2R1bGVzL2xheW91dC1iYXNlL2xheW91dC1iYXNlLmpzIiwibm9kZV9tb2R1bGVzL2F2c2RmLWJhc2UvYXZzZGYtYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9jeXRvc2NhcGUtYXZzZGYvY3l0b3NjYXBlLWF2c2RmLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzb2NJbmRleE9mLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fTGlzdENhY2hlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tDbGVhci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU3ltYm9sLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UmF3VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcmVKc0RhdGEuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VmFsdWUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoRGVsZXRlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hIYXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlQ2xlYXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXBEYXRhLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUVhY2guanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25WYWx1ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnblZhbHVlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc0J1ZmZlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzTGVuZ3RoLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbmFyeS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNQcm90b3R5cGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gva2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ24uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUJ1ZmZlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RmlsdGVyLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViQXJyYXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weVN5bWJvbHMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzSW4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldEFsbEtleXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5c0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fRGF0YVZpZXcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFRhZy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fVWludDhBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQXJyYXlCdWZmZXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVSZWdFeHAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVN5bWJvbC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUJ5VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZU9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hcC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNsb25lLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvY29uc3RhbnQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VFYWNoLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pZGVudGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nhc3RGdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvZm9yRWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvZWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGaWx0ZXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0Q2FjaGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jYWNoZUhhcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQXJyYXlzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwVG9BcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvQXJyYXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEJ5VGFnLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxPYmplY3RzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWxEZWVwLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzU3RyaWN0Q29tcGFyYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hdGNoRGF0YS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlNYXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL190b0tleS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXNJbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1BhdGguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2hhc0luLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eURlZXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3Byb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUl0ZXJhdGVlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9maWx0ZXIuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9oYXMuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzRW1wdHkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzVW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hcC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlSZWR1Y2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVkdWNlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9yZWR1Y2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2lzU3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNjaWlTaXplLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzVW5pY29kZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuaWNvZGVTaXplLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nU2l6ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvc2l6ZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNGbGF0dGVuYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXBwbHkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyUmVzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXRUb1N0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3Nob3J0T3V0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9TdHJpbmcuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGaW5kSW5kZXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYU4uanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpY3RJbmRleE9mLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUluZGV4T2YuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlc1dpdGguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5pcS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3VuaW9uLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVZhbHVlcy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdmFsdWVzLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9sb2Rhc2guanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2dyYXBoLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi92ZXJzaW9uLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvanNvbi5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2NvbXBvbmVudHMuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2RhdGEvcHJpb3JpdHktcXVldWUuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2RpamtzdHJhLWFsbC5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3Rhcmphbi5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2ZpbmQtY3ljbGVzLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvZmxveWQtd2Fyc2hhbGwuanMiLCJub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90b3Bzb3J0LmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvaXMtYWN5Y2xpYy5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2Rmcy5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3Bvc3RvcmRlci5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3ByZW9yZGVyLmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvcHJpbS5qcyIsIm5vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2dyYXBobGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ncmFwaGxpYi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVEZWVwLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJdGVyYXRlZUNhbGwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2RlZmF1bHRzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlRmluZC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUcmltLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC90b051bWJlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdG9GaW5pdGUuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3RvSW50ZWdlci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvZmluZEluZGV4LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9maW5kLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9mbGF0dGVuLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9mb3JJbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbGFzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwVmFsdWVzLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUV4dHJlbXVtLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUd0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9tYXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fc2FmZUdldC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdG9QbGFpbk9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNZXJnZURlZXAuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2UuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTHQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL21pbi5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvbWluQnkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL25vdy5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGlja0J5LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2suanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19mbGF0UmVzdC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvcGljay5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSYW5nZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZVJhbmdlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9yYW5nZS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTb3J0QnkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19jb21wYXJlQXNjZW5kaW5nLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fY29tcGFyZU11bHRpcGxlLmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU9yZGVyQnkuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL3NvcnRCeS5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gvdW5pcXVlSWQuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlWmlwT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC96aXBPYmplY3QuanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL2xvZGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvZGF0YS9saXN0LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ncmVlZHktZmFzLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9hY3ljbGljLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi91dGlsLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ub3JtYWxpemUuanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL3JhbmsvdXRpbC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9mZWFzaWJsZS10cmVlLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9yYW5rL25ldHdvcmstc2ltcGxleC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvcGFyZW50LWR1bW15LWNoYWlucy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvbmVzdGluZy1ncmFwaC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvYWRkLWJvcmRlci1zZWdtZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvY29vcmRpbmF0ZS1zeXN0ZW0uanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2luaXQtb3JkZXIuanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2Nyb3NzLWNvdW50LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9iYXJ5Y2VudGVyLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9yZXNvbHZlLWNvbmZsaWN0cy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvc29ydC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvc29ydC1zdWJncmFwaC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvYnVpbGQtbGF5ZXItZ3JhcGguanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2FkZC1zdWJncmFwaC1jb25zdHJhaW50cy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZGFncmUvbGliL3Bvc2l0aW9uL2JrLmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9wb3NpdGlvbi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvbGF5b3V0LmpzIiwibm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9kZWJ1Zy5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9saWIvdmVyc2lvbi5qcyIsIm5vZGVfbW9kdWxlcy9kYWdyZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jeXRvc2NhcGUtZGFncmUvY3l0b3NjYXBlLWRhZ3JlLmpzIiwibm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL2Rpc3QvZDMtcXVhZHRyZWUuanMiLCJub2RlX21vZHVsZXMvZDMtZGlzcGF0Y2gvZGlzdC9kMy1kaXNwYXRjaC5qcyIsIm5vZGVfbW9kdWxlcy9kMy10aW1lci9kaXN0L2QzLXRpbWVyLmpzIiwibm9kZV9tb2R1bGVzL2QzLWZvcmNlL2Rpc3QvZDMtZm9yY2UuanMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLWQzLWZvcmNlL2N5dG9zY2FwZS1kMy1mb3JjZS5qcyIsIm5vZGVfbW9kdWxlcy9jeXRvc2NhcGUtZGJsY2xpY2svZGlzdC9pbmRleC5lc20uanMiLCJub2RlX21vZHVsZXMvY3l0b3NjYXBlLWN4dG1lbnUvY3l0b3NjYXBlLWN4dG1lbnUuanMiLCJzcmMvdml6L2p1Z2dsLXZpZXcudHMiLCJzcmMvcGFuZS9Ob2Rlc0xpc3Quc3ZlbHRlIiwic3JjL3BhbmUvTm9kZXNQYW5lLnN2ZWx0ZSIsInNyYy9wYW5lL2ljb24tbW9kYWwudHMiLCJzcmMvcGFuZS9TdHlsZUdyb3Vwcy5zdmVsdGUiLCJzcmMvcGFuZS9TdHlsZVBhbmUuc3ZlbHRlIiwic3JjL3BhbmUvdmlldy50cyIsInNyYy92aXovd29ya3NwYWNlcy93b3Jrc3BhY2UtbWFuYWdlci50cyIsInNyYy91aS9zZXR0aW5ncy9HbG9iYWxHcmFwaE1vZGFsLnN2ZWx0ZSIsInNyYy91aS9zZXR0aW5ncy9nbG9iYWwtZ3JhcGgtbW9kYWwudHMiLCJzcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCwiaW1wb3J0IHsgcGFyc2VGcm9udE1hdHRlclRhZ3MsIHBhcnNlRnJvbnRNYXR0ZXJTdHJpbmdBcnJheSB9IGZyb20gJ29ic2lkaWFuJztcblxuY29uc3QgQ0FUX0RBTkdMSU5HID0gJ2RhbmdsaW5nJztcbmNvbnN0IENPUkVfU1RPUkVfSUQgPSAnY29yZSc7XG5jbGFzcyBWaXpJZCB7XG4gICAgY29uc3RydWN0b3IoaWQsIHN0b3JlSWQpIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLnN0b3JlSWQgPSBzdG9yZUlkO1xuICAgIH1cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc3RvcmVJZH06JHt0aGlzLmlkfWA7XG4gICAgfVxuICAgIHRvSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tSWQoaWQpIHtcbiAgICAgICAgY29uc3Qgc3BsaXQgPSBpZC5zcGxpdCgnOicpO1xuICAgICAgICBjb25zdCBzdG9yZUlkID0gc3BsaXRbMF07XG4gICAgICAgIGNvbnN0IF9pZCA9IHNwbGl0LnNsaWNlKDEpLmpvaW4oJzonKTtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXpJZChfaWQsIHN0b3JlSWQpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbU5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gVml6SWQuZnJvbUlkKG5vZGUuaWQoKSk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tTm9kZXMobm9kZXMpIHtcbiAgICAgICAgcmV0dXJuIG5vZGVzLm1hcCgobikgPT4gVml6SWQuZnJvbU5vZGUobikpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbUZpbGUoZmlsZSkge1xuICAgICAgICByZXR1cm4gbmV3IFZpeklkKGZpbGUubmFtZSwgJ2NvcmUnKTtcbiAgICB9XG4gICAgc3RhdGljIHRvSWQoaWQsIHN0b3JlSWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXpJZChpZCwgc3RvcmVJZCkudG9JZCgpO1xuICAgIH1cbn1cbmNvbnN0IF9wYXJzZVRhZ3MgPSBmdW5jdGlvbiAodGFncykge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4udGFnc1xuICAgICAgICAubWFwKCh0YWcpID0+IHtcbiAgICAgICAgdGFnID0gdGFnLnNsaWNlKDEpO1xuICAgICAgICBjb25zdCBoU3BsaXQgPSB0YWcuc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgdGFncyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgaW4gaFNwbGl0KSB7XG4gICAgICAgICAgICBjb25zdCBoVGFnID0gaFNwbGl0LnNsaWNlKDAsIHBhcnNlSW50KGkpICsgMSkuam9pbignLScpO1xuICAgICAgICAgICAgdGFncy5wdXNoKGB0YWctJHtoVGFnfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWdzO1xuICAgIH0pKTtcbn07XG5jb25zdCBnZXRDbGFzc2VzID0gZnVuY3Rpb24gKGZpbGUsIG1ldGFkYXRhQ2FjaGUpIHtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gW107XG4gICAgICAgIGlmIChbJ3BuZycsICdqcGcnLCAnanBlZycsICdnaWYnLCAnYm1wJywgJ3N2ZycsICd0aWZmJ10uY29udGFpbnMoZmlsZS5leHRlbnNpb24pKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ2ltYWdlJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoWydtcDMnLCAnd2VibScsICd3YXYnLCAnbTRhJywgJ29nZycsICczZ3AnLCAnZmxhYyddLmNvbnRhaW5zKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdhdWRpbycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFsnbXA0JywgJ3dlYm0nLCAnb2d2J10uY29udGFpbnMoZmlsZS5leHRlbnNpb24pKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3ZpZGVvJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmlsZS5leHRlbnNpb24gPT09ICdwZGYnKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3BkZicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgcmVwbGFjZWQgYnkgdGhlICdwYXRoJyBkYXRhIGF0dHJpYnV0ZS5cbiAgICAgICAgLy8gaWYgKCEoZmlsZS5wYXJlbnQubmFtZSA9PT0gJy8nIHx8IGZpbGUucGFyZW50Lm5hbWUgPT09ICcnKSkge1xuICAgICAgICAvLyAgIGNsYXNzZXMucHVzaChgZm9sZGVyLSR7ZmlsZS5wYXJlbnQubmFtZVxuICAgICAgICAvLyAgICAgICAucmVwbGFjZSgnICcsICdfJyl9YCk7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgY2xhc3Nlcy5wdXNoKCdyb290Jyk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKGZpbGUuZXh0ZW5zaW9uID09PSAnbWQnKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ25vdGUnKTtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gbWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgICAgICAgICBpZiAoY2FjaGU/LmZyb250bWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCdpbWFnZScgaW4gY2FjaGUuZnJvbnRtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdpbWFnZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoJ3RhZ3MnIGluIGNhY2hlLmZyb250bWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBwYXJzZUZyb250TWF0dGVyVGFncyhjYWNoZS5mcm9udG1hdHRlcik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uX3BhcnNlVGFncyh0YWdzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCdjc3NjbGFzcycgaW4gY2FjaGUuZnJvbnRtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xhenplcyA9IHBhcnNlRnJvbnRNYXR0ZXJTdHJpbmdBcnJheShjYWNoZS5mcm9udG1hdHRlciwgJ2Nzc2NsYXNzJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGF6emVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uY2xhenplcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FjaGU/LnRhZ3MpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uX3BhcnNlVGFncyhjYWNoZS50YWdzLm1hcCgodCkgPT4gdC50YWcpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ2ZpbGUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9XG4gICAgcmV0dXJuIFtDQVRfREFOR0xJTkddO1xufTtcbmNvbnN0IG5vZGVGcm9tRmlsZSA9IGFzeW5jIGZ1bmN0aW9uIChmaWxlLCBwbHVnaW4sIHNldHRpbmdzLCBpZCkge1xuICAgIGlmICghaWQpIHtcbiAgICAgICAgaWQgPSBWaXpJZC50b0lkKGZpbGUubmFtZSwgQ09SRV9TVE9SRV9JRCk7XG4gICAgfVxuICAgIGNvbnN0IGNhY2hlID0gcGx1Z2luLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcbiAgICBjb25zdCBuYW1lID0gZmlsZS5leHRlbnNpb24gPT09ICdtZCcgPyBmaWxlLmJhc2VuYW1lIDogZmlsZS5uYW1lO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBnZXRDbGFzc2VzKGZpbGUsIHBsdWdpbi5hcHAubWV0YWRhdGFDYWNoZSkuam9pbignICcpO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIGlkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBwYXRoOiBmaWxlLnBhdGgsXG4gICAgfTtcbiAgICBpZiAoWydwbmcnLCAnanBnJywgJ2pwZWcnLCAnZ2lmJywgJ2JtcCcsICdzdmcnLCAndGlmZiddLmNvbnRhaW5zKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgZGF0YVsncmVzb3VyY2VfdXJsJ10gPSBgaHR0cDovL2xvY2FsaG9zdDoke3BsdWdpbi5zZXR0aW5ncy5pbWdTZXJ2ZXJQb3J0fS8ke2VuY29kZVVSSShmaWxlLnBhdGgpfWA7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggeyB9XG4gICAgfVxuICAgIGlmIChzZXR0aW5ncy5yZWFkQ29udGVudCAmJiBmaWxlLmV4dGVuc2lvbiA9PSAnbWQnKSB7XG4gICAgICAgIGRhdGFbJ2NvbnRlbnQnXSA9IGF3YWl0IHBsdWdpbi5hcHAudmF1bHQuY2FjaGVkUmVhZChmaWxlKTtcbiAgICB9XG4gICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBjYWNoZT8uZnJvbnRtYXR0ZXI7XG4gICAgaWYgKGZyb250bWF0dGVyKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGZyb250bWF0dGVyKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICBpZiAoIShrID09PSAncG9zaXRpb24nKSkge1xuICAgICAgICAgICAgICAgIGlmIChrID09PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlRmllbGQgPSBmcm9udG1hdHRlcltrXTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHVybC4gdGhyb3dzIGVycm9yIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVSTChpbWFnZUZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSBpbWFnZUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSBgaHR0cDovL2xvY2FsaG9zdDoke3BsdWdpbi5zZXR0aW5ncy5pbWdTZXJ2ZXJQb3J0fS8ke2VuY29kZVVSSShpbWFnZUZpZWxkKX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFba10gPSBmcm9udG1hdHRlcltrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBncm91cDogJ25vZGVzJyxcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICB9O1xufTtcbmNvbnN0IG5vZGVEYW5nbGluZyA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ3JvdXA6ICdub2RlcycsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGlkOiBWaXpJZC50b0lkKHBhdGgsIENPUkVfU1RPUkVfSUQpLFxuICAgICAgICAgICAgbmFtZTogcGF0aCxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NlczogJ2RhbmdsaW5nJyxcbiAgICB9O1xufTtcbmNvbnN0IHdpa2lsaW5rUmVnZXggPSAnXFxcXFtcXFxcWyhbXlxcXFxdXFxcXHJcXFxcbl0rPylcXFxcXVxcXFxdJztcbmNvbnN0IG5hbWVSZWdleCA9ICdbXlxcXFxXXFxcXGRdXFxcXHcqJztcbmNvbnN0IHJlZ2V4RXNjYXBlID0gZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG59O1xuY29uc3QgcGFyc2VUeXBlZExpbmsgPSBmdW5jdGlvbiAobGluaywgbGluZSwgdHlwZWRMaW5rUHJlZml4KSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBzb21ldGhpbmcgc3BlY2lmaWMgSSB1c2UsIGJ1dCBzaG91bGRuJ3Qga2VlcCBiZWluZyBpbiB0aGlzIHJlcG8uXG4gICAgY29uc3QgcmVnZXhQdWJsaXNoZWRJbiA9IG5ldyBSZWdFeHAoYF4ke3JlZ2V4RXNjYXBlKHR5cGVkTGlua1ByZWZpeCl9IChwdWJsaXNoZWRJbikgKFxcXFxkXFxcXGRcXFxcZFxcXFxkKSAoJHt3aWtpbGlua1JlZ2V4fSw/ICopKyRgKTtcbiAgICBjb25zdCBtYXRjaFBJID0gcmVnZXhQdWJsaXNoZWRJbi5leGVjKGxpbmUpO1xuICAgIGlmICghKG1hdGNoUEkgPT09IG51bGwpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGFzczogJ3R5cGUtcHVibGlzaGVkSW4nLFxuICAgICAgICAgICAgaXNJbmxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHllYXI6IG1hdGNoUElbMl0sXG4gICAgICAgICAgICAgICAgY29udGV4dDogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3B1Ymxpc2hlZEluJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIEludHVpdGlvbjogU3RhcnQgd2l0aCB0aGUgdHlwZWQgbGluayBwcmVmaXguIFRoZW4gYSBuZW80aiBuYW1lIChuYW1lUmVnZXgpLlxuICAgIC8vIFRoZW4gb25lIG9yIG1vcmUgb2YgdGhlIHdpa2lsaW5rIGdyb3VwOiB3aWtpbGluayByZWdleCBzZXBhcmF0ZWQgYnkgb3B0aW9uYWwgY29tbWEgYW5kIG11bHRpcGxlIHNwYWNlc1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cmVnZXhFc2NhcGUodHlwZWRMaW5rUHJlZml4KX0gKCR7bmFtZVJlZ2V4fSkgKCR7d2lraWxpbmtSZWdleH0sPyAqKSskYCk7XG4gICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKGxpbmUpO1xuICAgIGNvbnN0IHNwbGl0TGluayA9IGxpbmsub3JpZ2luYWwuc3BsaXQoJ3wnKTtcbiAgICBsZXQgYWxpYXMgPSBudWxsO1xuICAgIGlmIChzcGxpdExpbmsubGVuZ3RoID4gMSkge1xuICAgICAgICBhbGlhcyA9IHNwbGl0TGluay5zbGljZSgxKS5qb2luKCkuc2xpY2UoMCwgLTIpO1xuICAgIH1cbiAgICBpZiAoIShtYXRjaCA9PT0gbnVsbCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsYXNzOiBgdHlwZS0ke21hdGNoWzFdfWAsXG4gICAgICAgICAgICBpc0lubGluZTogZmFsc2UsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgYWxpYXM6IGFsaWFzLFxuICAgICAgICAgICAgICAgIGNvbnRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6IG1hdGNoWzFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuY29uc3QgcGFyc2VSZWZDYWNoZSA9IGZ1bmN0aW9uIChyZWYsIGNvbnRlbnQsIGlkLCBzb3VyY2UsIHRhcmdldCwgdHlwZWRMaW5rUHJlZml4KSB7XG4gICAgY29uc3QgbGluZSA9IGNvbnRlbnRbcmVmLnBvc2l0aW9uLnN0YXJ0LmxpbmVdO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgICBpZDogaWQsXG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldCxcbiAgICAgICAgY29udGV4dDogbGluZSxcbiAgICAgICAgZWRnZUNvdW50OiAxLFxuICAgIH07XG4gICAgY29uc3Qgc3BsaXRMaW5rID0gcmVmLm9yaWdpbmFsLnNwbGl0KCd8Jyk7XG4gICAgaWYgKHNwbGl0TGluay5sZW5ndGggPiAxKSB7XG4gICAgICAgIGRhdGFbJ2FsaWFzJ10gPSBzcGxpdExpbmsuc2xpY2UoMSkuam9pbigpLnNsaWNlKDAsIC0yKTtcbiAgICB9XG4gICAgbGV0IGNsYXNzZXMgPSAnJztcbiAgICBjb25zdCB0eXBlZExpbmsgPSBwYXJzZVR5cGVkTGluayhyZWYsIGxpbmUsIHR5cGVkTGlua1ByZWZpeCk7XG4gICAgaWYgKHR5cGVkTGluayA9PT0gbnVsbCkge1xuICAgICAgICBjbGFzc2VzID0gYCR7Y2xhc3Nlc30gaW5saW5lYDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGRhdGEgPSB7IC4uLnR5cGVkTGluay5wcm9wZXJ0aWVzLCAuLi5kYXRhIH07XG4gICAgICAgIGNsYXNzZXMgPSBgJHtjbGFzc2VzfSAke3R5cGVkTGluay5jbGFzc31gO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBncm91cDogJ2VkZ2VzJyxcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICB9O1xufTtcblxuY29uc3QgZ2V0UGx1Z2luID0gZnVuY3Rpb24gKGFwcCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoJ2p1Z2dsJyBpbiBhcHAucGx1Z2lucy5wbHVnaW5zKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGFwcC5wbHVnaW5zLnBsdWdpbnNbJ2p1Z2dsJ107XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IHsgVml6SWQsIGdldENsYXNzZXMsIGdldFBsdWdpbiwgbm9kZURhbmdsaW5nLCBub2RlRnJvbUZpbGUsIHBhcnNlUmVmQ2FjaGUsIHBhcnNlVHlwZWRMaW5rIH07XG4iLG51bGwsImZ1bmN0aW9uIG5vb3AoKSB7IH1cbmNvbnN0IGlkZW50aXR5ID0geCA9PiB4O1xuZnVuY3Rpb24gYXNzaWduKHRhciwgc3JjKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGZvciAoY29uc3QgayBpbiBzcmMpXG4gICAgICAgIHRhcltrXSA9IHNyY1trXTtcbiAgICByZXR1cm4gdGFyO1xufVxuZnVuY3Rpb24gaXNfcHJvbWlzZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSAnZnVuY3Rpb24nO1xufVxuZnVuY3Rpb24gYWRkX2xvY2F0aW9uKGVsZW1lbnQsIGZpbGUsIGxpbmUsIGNvbHVtbiwgY2hhcikge1xuICAgIGVsZW1lbnQuX19zdmVsdGVfbWV0YSA9IHtcbiAgICAgICAgbG9jOiB7IGZpbGUsIGxpbmUsIGNvbHVtbiwgY2hhciB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHJ1bihmbikge1xuICAgIHJldHVybiBmbigpO1xufVxuZnVuY3Rpb24gYmxhbmtfb2JqZWN0KCkge1xuICAgIHJldHVybiBPYmplY3QuY3JlYXRlKG51bGwpO1xufVxuZnVuY3Rpb24gcnVuX2FsbChmbnMpIHtcbiAgICBmbnMuZm9yRWFjaChydW4pO1xufVxuZnVuY3Rpb24gaXNfZnVuY3Rpb24odGhpbmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaW5nID09PSAnZnVuY3Rpb24nO1xufVxuZnVuY3Rpb24gc2FmZV9ub3RfZXF1YWwoYSwgYikge1xuICAgIHJldHVybiBhICE9IGEgPyBiID09IGIgOiBhICE9PSBiIHx8ICgoYSAmJiB0eXBlb2YgYSA9PT0gJ29iamVjdCcpIHx8IHR5cGVvZiBhID09PSAnZnVuY3Rpb24nKTtcbn1cbmxldCBzcmNfdXJsX2VxdWFsX2FuY2hvcjtcbmZ1bmN0aW9uIHNyY191cmxfZXF1YWwoZWxlbWVudF9zcmMsIHVybCkge1xuICAgIGlmICghc3JjX3VybF9lcXVhbF9hbmNob3IpIHtcbiAgICAgICAgc3JjX3VybF9lcXVhbF9hbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgfVxuICAgIHNyY191cmxfZXF1YWxfYW5jaG9yLmhyZWYgPSB1cmw7XG4gICAgcmV0dXJuIGVsZW1lbnRfc3JjID09PSBzcmNfdXJsX2VxdWFsX2FuY2hvci5ocmVmO1xufVxuZnVuY3Rpb24gbm90X2VxdWFsKGEsIGIpIHtcbiAgICByZXR1cm4gYSAhPSBhID8gYiA9PSBiIDogYSAhPT0gYjtcbn1cbmZ1bmN0aW9uIGlzX2VtcHR5KG9iaikge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlX3N0b3JlKHN0b3JlLCBuYW1lKSB7XG4gICAgaWYgKHN0b3JlICE9IG51bGwgJiYgdHlwZW9mIHN0b3JlLnN1YnNjcmliZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke25hbWV9JyBpcyBub3QgYSBzdG9yZSB3aXRoIGEgJ3N1YnNjcmliZScgbWV0aG9kYCk7XG4gICAgfVxufVxuZnVuY3Rpb24gc3Vic2NyaWJlKHN0b3JlLCAuLi5jYWxsYmFja3MpIHtcbiAgICBpZiAoc3RvcmUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG4gICAgY29uc3QgdW5zdWIgPSBzdG9yZS5zdWJzY3JpYmUoLi4uY2FsbGJhY2tzKTtcbiAgICByZXR1cm4gdW5zdWIudW5zdWJzY3JpYmUgPyAoKSA9PiB1bnN1Yi51bnN1YnNjcmliZSgpIDogdW5zdWI7XG59XG5mdW5jdGlvbiBnZXRfc3RvcmVfdmFsdWUoc3RvcmUpIHtcbiAgICBsZXQgdmFsdWU7XG4gICAgc3Vic2NyaWJlKHN0b3JlLCBfID0+IHZhbHVlID0gXykoKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5mdW5jdGlvbiBjb21wb25lbnRfc3Vic2NyaWJlKGNvbXBvbmVudCwgc3RvcmUsIGNhbGxiYWNrKSB7XG4gICAgY29tcG9uZW50LiQkLm9uX2Rlc3Ryb3kucHVzaChzdWJzY3JpYmUoc3RvcmUsIGNhbGxiYWNrKSk7XG59XG5mdW5jdGlvbiBjcmVhdGVfc2xvdChkZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGZuKSB7XG4gICAgaWYgKGRlZmluaXRpb24pIHtcbiAgICAgICAgY29uc3Qgc2xvdF9jdHggPSBnZXRfc2xvdF9jb250ZXh0KGRlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZm4pO1xuICAgICAgICByZXR1cm4gZGVmaW5pdGlvblswXShzbG90X2N0eCk7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0X3Nsb3RfY29udGV4dChkZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGZuKSB7XG4gICAgcmV0dXJuIGRlZmluaXRpb25bMV0gJiYgZm5cbiAgICAgICAgPyBhc3NpZ24oJCRzY29wZS5jdHguc2xpY2UoKSwgZGVmaW5pdGlvblsxXShmbihjdHgpKSlcbiAgICAgICAgOiAkJHNjb3BlLmN0eDtcbn1cbmZ1bmN0aW9uIGdldF9zbG90X2NoYW5nZXMoZGVmaW5pdGlvbiwgJCRzY29wZSwgZGlydHksIGZuKSB7XG4gICAgaWYgKGRlZmluaXRpb25bMl0gJiYgZm4pIHtcbiAgICAgICAgY29uc3QgbGV0cyA9IGRlZmluaXRpb25bMl0oZm4oZGlydHkpKTtcbiAgICAgICAgaWYgKCQkc2NvcGUuZGlydHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGxldHM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBsZXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0gW107XG4gICAgICAgICAgICBjb25zdCBsZW4gPSBNYXRoLm1heCgkJHNjb3BlLmRpcnR5Lmxlbmd0aCwgbGV0cy5sZW5ndGgpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIG1lcmdlZFtpXSA9ICQkc2NvcGUuZGlydHlbaV0gfCBsZXRzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1lcmdlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJCRzY29wZS5kaXJ0eSB8IGxldHM7XG4gICAgfVxuICAgIHJldHVybiAkJHNjb3BlLmRpcnR5O1xufVxuZnVuY3Rpb24gdXBkYXRlX3Nsb3RfYmFzZShzbG90LCBzbG90X2RlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgc2xvdF9jaGFuZ2VzLCBnZXRfc2xvdF9jb250ZXh0X2ZuKSB7XG4gICAgaWYgKHNsb3RfY2hhbmdlcykge1xuICAgICAgICBjb25zdCBzbG90X2NvbnRleHQgPSBnZXRfc2xvdF9jb250ZXh0KHNsb3RfZGVmaW5pdGlvbiwgY3R4LCAkJHNjb3BlLCBnZXRfc2xvdF9jb250ZXh0X2ZuKTtcbiAgICAgICAgc2xvdC5wKHNsb3RfY29udGV4dCwgc2xvdF9jaGFuZ2VzKTtcbiAgICB9XG59XG5mdW5jdGlvbiB1cGRhdGVfc2xvdChzbG90LCBzbG90X2RlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZGlydHksIGdldF9zbG90X2NoYW5nZXNfZm4sIGdldF9zbG90X2NvbnRleHRfZm4pIHtcbiAgICBjb25zdCBzbG90X2NoYW5nZXMgPSBnZXRfc2xvdF9jaGFuZ2VzKHNsb3RfZGVmaW5pdGlvbiwgJCRzY29wZSwgZGlydHksIGdldF9zbG90X2NoYW5nZXNfZm4pO1xuICAgIHVwZGF0ZV9zbG90X2Jhc2Uoc2xvdCwgc2xvdF9kZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIHNsb3RfY2hhbmdlcywgZ2V0X3Nsb3RfY29udGV4dF9mbik7XG59XG5mdW5jdGlvbiBnZXRfYWxsX2RpcnR5X2Zyb21fc2NvcGUoJCRzY29wZSkge1xuICAgIGlmICgkJHNjb3BlLmN0eC5sZW5ndGggPiAzMikge1xuICAgICAgICBjb25zdCBkaXJ0eSA9IFtdO1xuICAgICAgICBjb25zdCBsZW5ndGggPSAkJHNjb3BlLmN0eC5sZW5ndGggLyAzMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZGlydHlbaV0gPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlydHk7XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn1cbmZ1bmN0aW9uIGV4Y2x1ZGVfaW50ZXJuYWxfcHJvcHMocHJvcHMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGsgaW4gcHJvcHMpXG4gICAgICAgIGlmIChrWzBdICE9PSAnJCcpXG4gICAgICAgICAgICByZXN1bHRba10gPSBwcm9wc1trXTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gY29tcHV0ZV9yZXN0X3Byb3BzKHByb3BzLCBrZXlzKSB7XG4gICAgY29uc3QgcmVzdCA9IHt9O1xuICAgIGtleXMgPSBuZXcgU2V0KGtleXMpO1xuICAgIGZvciAoY29uc3QgayBpbiBwcm9wcylcbiAgICAgICAgaWYgKCFrZXlzLmhhcyhrKSAmJiBrWzBdICE9PSAnJCcpXG4gICAgICAgICAgICByZXN0W2tdID0gcHJvcHNba107XG4gICAgcmV0dXJuIHJlc3Q7XG59XG5mdW5jdGlvbiBjb21wdXRlX3Nsb3RzKHNsb3RzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gc2xvdHMpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gb25jZShmbikge1xuICAgIGxldCByYW4gPSBmYWxzZTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKHJhbilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcmFuID0gdHJ1ZTtcbiAgICAgICAgZm4uY2FsbCh0aGlzLCAuLi5hcmdzKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gbnVsbF90b19lbXB0eSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIHNldF9zdG9yZV92YWx1ZShzdG9yZSwgcmV0LCB2YWx1ZSkge1xuICAgIHN0b3JlLnNldCh2YWx1ZSk7XG4gICAgcmV0dXJuIHJldDtcbn1cbmNvbnN0IGhhc19wcm9wID0gKG9iaiwgcHJvcCkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG5mdW5jdGlvbiBhY3Rpb25fZGVzdHJveWVyKGFjdGlvbl9yZXN1bHQpIHtcbiAgICByZXR1cm4gYWN0aW9uX3Jlc3VsdCAmJiBpc19mdW5jdGlvbihhY3Rpb25fcmVzdWx0LmRlc3Ryb3kpID8gYWN0aW9uX3Jlc3VsdC5kZXN0cm95IDogbm9vcDtcbn1cblxuY29uc3QgaXNfY2xpZW50ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG5sZXQgbm93ID0gaXNfY2xpZW50XG4gICAgPyAoKSA9PiB3aW5kb3cucGVyZm9ybWFuY2Uubm93KClcbiAgICA6ICgpID0+IERhdGUubm93KCk7XG5sZXQgcmFmID0gaXNfY2xpZW50ID8gY2IgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNiKSA6IG5vb3A7XG4vLyB1c2VkIGludGVybmFsbHkgZm9yIHRlc3RpbmdcbmZ1bmN0aW9uIHNldF9ub3coZm4pIHtcbiAgICBub3cgPSBmbjtcbn1cbmZ1bmN0aW9uIHNldF9yYWYoZm4pIHtcbiAgICByYWYgPSBmbjtcbn1cblxuY29uc3QgdGFza3MgPSBuZXcgU2V0KCk7XG5mdW5jdGlvbiBydW5fdGFza3Mobm93KSB7XG4gICAgdGFza3MuZm9yRWFjaCh0YXNrID0+IHtcbiAgICAgICAgaWYgKCF0YXNrLmMobm93KSkge1xuICAgICAgICAgICAgdGFza3MuZGVsZXRlKHRhc2spO1xuICAgICAgICAgICAgdGFzay5mKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGFza3Muc2l6ZSAhPT0gMClcbiAgICAgICAgcmFmKHJ1bl90YXNrcyk7XG59XG4vKipcbiAqIEZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkhXG4gKi9cbmZ1bmN0aW9uIGNsZWFyX2xvb3BzKCkge1xuICAgIHRhc2tzLmNsZWFyKCk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdGFzayB0aGF0IHJ1bnMgb24gZWFjaCByYWYgZnJhbWVcbiAqIHVudGlsIGl0IHJldHVybnMgYSBmYWxzeSB2YWx1ZSBvciBpcyBhYm9ydGVkXG4gKi9cbmZ1bmN0aW9uIGxvb3AoY2FsbGJhY2spIHtcbiAgICBsZXQgdGFzaztcbiAgICBpZiAodGFza3Muc2l6ZSA9PT0gMClcbiAgICAgICAgcmFmKHJ1bl90YXNrcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvbWlzZTogbmV3IFByb21pc2UoZnVsZmlsbCA9PiB7XG4gICAgICAgICAgICB0YXNrcy5hZGQodGFzayA9IHsgYzogY2FsbGJhY2ssIGY6IGZ1bGZpbGwgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBhYm9ydCgpIHtcbiAgICAgICAgICAgIHRhc2tzLmRlbGV0ZSh0YXNrKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbi8vIFRyYWNrIHdoaWNoIG5vZGVzIGFyZSBjbGFpbWVkIGR1cmluZyBoeWRyYXRpb24uIFVuY2xhaW1lZCBub2RlcyBjYW4gdGhlbiBiZSByZW1vdmVkIGZyb20gdGhlIERPTVxuLy8gYXQgdGhlIGVuZCBvZiBoeWRyYXRpb24gd2l0aG91dCB0b3VjaGluZyB0aGUgcmVtYWluaW5nIG5vZGVzLlxubGV0IGlzX2h5ZHJhdGluZyA9IGZhbHNlO1xuZnVuY3Rpb24gc3RhcnRfaHlkcmF0aW5nKCkge1xuICAgIGlzX2h5ZHJhdGluZyA9IHRydWU7XG59XG5mdW5jdGlvbiBlbmRfaHlkcmF0aW5nKCkge1xuICAgIGlzX2h5ZHJhdGluZyA9IGZhbHNlO1xufVxuZnVuY3Rpb24gdXBwZXJfYm91bmQobG93LCBoaWdoLCBrZXksIHZhbHVlKSB7XG4gICAgLy8gUmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlIGxhcmdlciB0aGFuIGlucHV0IHZhbHVlIGluIHRoZSByYW5nZSBbbG93LCBoaWdoKVxuICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgIGNvbnN0IG1pZCA9IGxvdyArICgoaGlnaCAtIGxvdykgPj4gMSk7XG4gICAgICAgIGlmIChrZXkobWlkKSA8PSB2YWx1ZSkge1xuICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxvdztcbn1cbmZ1bmN0aW9uIGluaXRfaHlkcmF0ZSh0YXJnZXQpIHtcbiAgICBpZiAodGFyZ2V0Lmh5ZHJhdGVfaW5pdClcbiAgICAgICAgcmV0dXJuO1xuICAgIHRhcmdldC5oeWRyYXRlX2luaXQgPSB0cnVlO1xuICAgIC8vIFdlIGtub3cgdGhhdCBhbGwgY2hpbGRyZW4gaGF2ZSBjbGFpbV9vcmRlciB2YWx1ZXMgc2luY2UgdGhlIHVuY2xhaW1lZCBoYXZlIGJlZW4gZGV0YWNoZWQgaWYgdGFyZ2V0IGlzIG5vdCA8aGVhZD5cbiAgICBsZXQgY2hpbGRyZW4gPSB0YXJnZXQuY2hpbGROb2RlcztcbiAgICAvLyBJZiB0YXJnZXQgaXMgPGhlYWQ+LCB0aGVyZSBtYXkgYmUgY2hpbGRyZW4gd2l0aG91dCBjbGFpbV9vcmRlclxuICAgIGlmICh0YXJnZXQubm9kZU5hbWUgPT09ICdIRUFEJykge1xuICAgICAgICBjb25zdCBteUNoaWxkcmVuID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgICAgIGlmIChub2RlLmNsYWltX29yZGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBteUNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2hpbGRyZW4gPSBteUNoaWxkcmVuO1xuICAgIH1cbiAgICAvKlxuICAgICogUmVvcmRlciBjbGFpbWVkIGNoaWxkcmVuIG9wdGltYWxseS5cbiAgICAqIFdlIGNhbiByZW9yZGVyIGNsYWltZWQgY2hpbGRyZW4gb3B0aW1hbGx5IGJ5IGZpbmRpbmcgdGhlIGxvbmdlc3Qgc3Vic2VxdWVuY2Ugb2ZcbiAgICAqIG5vZGVzIHRoYXQgYXJlIGFscmVhZHkgY2xhaW1lZCBpbiBvcmRlciBhbmQgb25seSBtb3ZpbmcgdGhlIHJlc3QuIFRoZSBsb25nZXN0XG4gICAgKiBzdWJzZXF1ZW5jZSBzdWJzZXF1ZW5jZSBvZiBub2RlcyB0aGF0IGFyZSBjbGFpbWVkIGluIG9yZGVyIGNhbiBiZSBmb3VuZCBieVxuICAgICogY29tcHV0aW5nIHRoZSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2YgLmNsYWltX29yZGVyIHZhbHVlcy5cbiAgICAqXG4gICAgKiBUaGlzIGFsZ29yaXRobSBpcyBvcHRpbWFsIGluIGdlbmVyYXRpbmcgdGhlIGxlYXN0IGFtb3VudCBvZiByZW9yZGVyIG9wZXJhdGlvbnNcbiAgICAqIHBvc3NpYmxlLlxuICAgICpcbiAgICAqIFByb29mOlxuICAgICogV2Uga25vdyB0aGF0LCBnaXZlbiBhIHNldCBvZiByZW9yZGVyaW5nIG9wZXJhdGlvbnMsIHRoZSBub2RlcyB0aGF0IGRvIG5vdCBtb3ZlXG4gICAgKiBhbHdheXMgZm9ybSBhbiBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlLCBzaW5jZSB0aGV5IGRvIG5vdCBtb3ZlIGFtb25nIGVhY2ggb3RoZXJcbiAgICAqIG1lYW5pbmcgdGhhdCB0aGV5IG11c3QgYmUgYWxyZWFkeSBvcmRlcmVkIGFtb25nIGVhY2ggb3RoZXIuIFRodXMsIHRoZSBtYXhpbWFsXG4gICAgKiBzZXQgb2Ygbm9kZXMgdGhhdCBkbyBub3QgbW92ZSBmb3JtIGEgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlLlxuICAgICovXG4gICAgLy8gQ29tcHV0ZSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2VcbiAgICAvLyBtOiBzdWJzZXF1ZW5jZSBsZW5ndGggaiA9PiBpbmRleCBrIG9mIHNtYWxsZXN0IHZhbHVlIHRoYXQgZW5kcyBhbiBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIGxlbmd0aCBqXG4gICAgY29uc3QgbSA9IG5ldyBJbnQzMkFycmF5KGNoaWxkcmVuLmxlbmd0aCArIDEpO1xuICAgIC8vIFByZWRlY2Vzc29yIGluZGljZXMgKyAxXG4gICAgY29uc3QgcCA9IG5ldyBJbnQzMkFycmF5KGNoaWxkcmVuLmxlbmd0aCk7XG4gICAgbVswXSA9IC0xO1xuICAgIGxldCBsb25nZXN0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjaGlsZHJlbltpXS5jbGFpbV9vcmRlcjtcbiAgICAgICAgLy8gRmluZCB0aGUgbGFyZ2VzdCBzdWJzZXF1ZW5jZSBsZW5ndGggc3VjaCB0aGF0IGl0IGVuZHMgaW4gYSB2YWx1ZSBsZXNzIHRoYW4gb3VyIGN1cnJlbnQgdmFsdWVcbiAgICAgICAgLy8gdXBwZXJfYm91bmQgcmV0dXJucyBmaXJzdCBncmVhdGVyIHZhbHVlLCBzbyB3ZSBzdWJ0cmFjdCBvbmVcbiAgICAgICAgLy8gd2l0aCBmYXN0IHBhdGggZm9yIHdoZW4gd2UgYXJlIG9uIHRoZSBjdXJyZW50IGxvbmdlc3Qgc3Vic2VxdWVuY2VcbiAgICAgICAgY29uc3Qgc2VxTGVuID0gKChsb25nZXN0ID4gMCAmJiBjaGlsZHJlblttW2xvbmdlc3RdXS5jbGFpbV9vcmRlciA8PSBjdXJyZW50KSA/IGxvbmdlc3QgKyAxIDogdXBwZXJfYm91bmQoMSwgbG9uZ2VzdCwgaWR4ID0+IGNoaWxkcmVuW21baWR4XV0uY2xhaW1fb3JkZXIsIGN1cnJlbnQpKSAtIDE7XG4gICAgICAgIHBbaV0gPSBtW3NlcUxlbl0gKyAxO1xuICAgICAgICBjb25zdCBuZXdMZW4gPSBzZXFMZW4gKyAxO1xuICAgICAgICAvLyBXZSBjYW4gZ3VhcmFudGVlIHRoYXQgY3VycmVudCBpcyB0aGUgc21hbGxlc3QgdmFsdWUuIE90aGVyd2lzZSwgd2Ugd291bGQgaGF2ZSBnZW5lcmF0ZWQgYSBsb25nZXIgc2VxdWVuY2UuXG4gICAgICAgIG1bbmV3TGVuXSA9IGk7XG4gICAgICAgIGxvbmdlc3QgPSBNYXRoLm1heChuZXdMZW4sIGxvbmdlc3QpO1xuICAgIH1cbiAgICAvLyBUaGUgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIG5vZGVzIChpbml0aWFsbHkgcmV2ZXJzZWQpXG4gICAgY29uc3QgbGlzID0gW107XG4gICAgLy8gVGhlIHJlc3Qgb2YgdGhlIG5vZGVzLCBub2RlcyB0aGF0IHdpbGwgYmUgbW92ZWRcbiAgICBjb25zdCB0b01vdmUgPSBbXTtcbiAgICBsZXQgbGFzdCA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7XG4gICAgZm9yIChsZXQgY3VyID0gbVtsb25nZXN0XSArIDE7IGN1ciAhPSAwOyBjdXIgPSBwW2N1ciAtIDFdKSB7XG4gICAgICAgIGxpcy5wdXNoKGNoaWxkcmVuW2N1ciAtIDFdKTtcbiAgICAgICAgZm9yICg7IGxhc3QgPj0gY3VyOyBsYXN0LS0pIHtcbiAgICAgICAgICAgIHRvTW92ZS5wdXNoKGNoaWxkcmVuW2xhc3RdKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0LS07XG4gICAgfVxuICAgIGZvciAoOyBsYXN0ID49IDA7IGxhc3QtLSkge1xuICAgICAgICB0b01vdmUucHVzaChjaGlsZHJlbltsYXN0XSk7XG4gICAgfVxuICAgIGxpcy5yZXZlcnNlKCk7XG4gICAgLy8gV2Ugc29ydCB0aGUgbm9kZXMgYmVpbmcgbW92ZWQgdG8gZ3VhcmFudGVlIHRoYXQgdGhlaXIgaW5zZXJ0aW9uIG9yZGVyIG1hdGNoZXMgdGhlIGNsYWltIG9yZGVyXG4gICAgdG9Nb3ZlLnNvcnQoKGEsIGIpID0+IGEuY2xhaW1fb3JkZXIgLSBiLmNsYWltX29yZGVyKTtcbiAgICAvLyBGaW5hbGx5LCB3ZSBtb3ZlIHRoZSBub2Rlc1xuICAgIGZvciAobGV0IGkgPSAwLCBqID0gMDsgaSA8IHRvTW92ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB3aGlsZSAoaiA8IGxpcy5sZW5ndGggJiYgdG9Nb3ZlW2ldLmNsYWltX29yZGVyID49IGxpc1tqXS5jbGFpbV9vcmRlcikge1xuICAgICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IGogPCBsaXMubGVuZ3RoID8gbGlzW2pdIDogbnVsbDtcbiAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZSh0b01vdmVbaV0sIGFuY2hvcik7XG4gICAgfVxufVxuZnVuY3Rpb24gYXBwZW5kKHRhcmdldCwgbm9kZSkge1xuICAgIHRhcmdldC5hcHBlbmRDaGlsZChub2RlKTtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9zdHlsZXModGFyZ2V0LCBzdHlsZV9zaGVldF9pZCwgc3R5bGVzKSB7XG4gICAgY29uc3QgYXBwZW5kX3N0eWxlc190byA9IGdldF9yb290X2Zvcl9zdHlsZSh0YXJnZXQpO1xuICAgIGlmICghYXBwZW5kX3N0eWxlc190by5nZXRFbGVtZW50QnlJZChzdHlsZV9zaGVldF9pZCkpIHtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBlbGVtZW50KCdzdHlsZScpO1xuICAgICAgICBzdHlsZS5pZCA9IHN0eWxlX3NoZWV0X2lkO1xuICAgICAgICBzdHlsZS50ZXh0Q29udGVudCA9IHN0eWxlcztcbiAgICAgICAgYXBwZW5kX3N0eWxlc2hlZXQoYXBwZW5kX3N0eWxlc190bywgc3R5bGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldF9yb290X2Zvcl9zdHlsZShub2RlKSB7XG4gICAgaWYgKCFub2RlKVxuICAgICAgICByZXR1cm4gZG9jdW1lbnQ7XG4gICAgY29uc3Qgcm9vdCA9IG5vZGUuZ2V0Um9vdE5vZGUgPyBub2RlLmdldFJvb3ROb2RlKCkgOiBub2RlLm93bmVyRG9jdW1lbnQ7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5ob3N0KSB7XG4gICAgICAgIHJldHVybiByb290O1xuICAgIH1cbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50O1xufVxuZnVuY3Rpb24gYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQobm9kZSkge1xuICAgIGNvbnN0IHN0eWxlX2VsZW1lbnQgPSBlbGVtZW50KCdzdHlsZScpO1xuICAgIGFwcGVuZF9zdHlsZXNoZWV0KGdldF9yb290X2Zvcl9zdHlsZShub2RlKSwgc3R5bGVfZWxlbWVudCk7XG4gICAgcmV0dXJuIHN0eWxlX2VsZW1lbnQ7XG59XG5mdW5jdGlvbiBhcHBlbmRfc3R5bGVzaGVldChub2RlLCBzdHlsZSkge1xuICAgIGFwcGVuZChub2RlLmhlYWQgfHwgbm9kZSwgc3R5bGUpO1xufVxuZnVuY3Rpb24gYXBwZW5kX2h5ZHJhdGlvbih0YXJnZXQsIG5vZGUpIHtcbiAgICBpZiAoaXNfaHlkcmF0aW5nKSB7XG4gICAgICAgIGluaXRfaHlkcmF0ZSh0YXJnZXQpO1xuICAgICAgICBpZiAoKHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkID09PSB1bmRlZmluZWQpIHx8ICgodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgIT09IG51bGwpICYmICh0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZC5wYXJlbnRFbGVtZW50ICE9PSB0YXJnZXQpKSkge1xuICAgICAgICAgICAgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSB0YXJnZXQuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBTa2lwIG5vZGVzIG9mIHVuZGVmaW5lZCBvcmRlcmluZ1xuICAgICAgICB3aGlsZSAoKHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkICE9PSBudWxsKSAmJiAodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQuY2xhaW1fb3JkZXIgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkID0gdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQubmV4dFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUgIT09IHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkKSB7XG4gICAgICAgICAgICAvLyBXZSBvbmx5IGluc2VydCBpZiB0aGUgb3JkZXJpbmcgb2YgdGhpcyBub2RlIHNob3VsZCBiZSBtb2RpZmllZCBvciB0aGUgcGFyZW50IG5vZGUgaXMgbm90IHRhcmdldFxuICAgICAgICAgICAgaWYgKG5vZGUuY2xhaW1fb3JkZXIgIT09IHVuZGVmaW5lZCB8fCBub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5pbnNlcnRCZWZvcmUobm9kZSwgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKG5vZGUucGFyZW50Tm9kZSAhPT0gdGFyZ2V0IHx8IG5vZGUubmV4dFNpYmxpbmcgIT09IG51bGwpIHtcbiAgICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKG5vZGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGluc2VydCh0YXJnZXQsIG5vZGUsIGFuY2hvcikge1xuICAgIHRhcmdldC5pbnNlcnRCZWZvcmUobm9kZSwgYW5jaG9yIHx8IG51bGwpO1xufVxuZnVuY3Rpb24gaW5zZXJ0X2h5ZHJhdGlvbih0YXJnZXQsIG5vZGUsIGFuY2hvcikge1xuICAgIGlmIChpc19oeWRyYXRpbmcgJiYgIWFuY2hvcikge1xuICAgICAgICBhcHBlbmRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKG5vZGUucGFyZW50Tm9kZSAhPT0gdGFyZ2V0IHx8IG5vZGUubmV4dFNpYmxpbmcgIT0gYW5jaG9yKSB7XG4gICAgICAgIHRhcmdldC5pbnNlcnRCZWZvcmUobm9kZSwgYW5jaG9yIHx8IG51bGwpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRldGFjaChub2RlKSB7XG4gICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpO1xufVxuZnVuY3Rpb24gZGVzdHJveV9lYWNoKGl0ZXJhdGlvbnMsIGRldGFjaGluZykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlcmF0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBpZiAoaXRlcmF0aW9uc1tpXSlcbiAgICAgICAgICAgIGl0ZXJhdGlvbnNbaV0uZChkZXRhY2hpbmcpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVsZW1lbnQobmFtZSkge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpO1xufVxuZnVuY3Rpb24gZWxlbWVudF9pcyhuYW1lLCBpcykge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUsIHsgaXMgfSk7XG59XG5mdW5jdGlvbiBvYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzKG9iaiwgZXhjbHVkZSkge1xuICAgIGNvbnN0IHRhcmdldCA9IHt9O1xuICAgIGZvciAoY29uc3QgayBpbiBvYmopIHtcbiAgICAgICAgaWYgKGhhc19wcm9wKG9iaiwgaylcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICYmIGV4Y2x1ZGUuaW5kZXhPZihrKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRhcmdldFtrXSA9IG9ialtrXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gc3ZnX2VsZW1lbnQobmFtZSkge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgbmFtZSk7XG59XG5mdW5jdGlvbiB0ZXh0KGRhdGEpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGF0YSk7XG59XG5mdW5jdGlvbiBzcGFjZSgpIHtcbiAgICByZXR1cm4gdGV4dCgnICcpO1xufVxuZnVuY3Rpb24gZW1wdHkoKSB7XG4gICAgcmV0dXJuIHRleHQoJycpO1xufVxuZnVuY3Rpb24gbGlzdGVuKG5vZGUsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKSB7XG4gICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgICByZXR1cm4gKCkgPT4gbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHByZXZlbnRfZGVmYXVsdChmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHN0b3BfcHJvcGFnYXRpb24oZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gc2VsZihmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzKVxuICAgICAgICAgICAgZm4uY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHRydXN0ZWQoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKGV2ZW50LmlzVHJ1c3RlZClcbiAgICAgICAgICAgIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH07XG59XG5mdW5jdGlvbiBhdHRyKG5vZGUsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbClcbiAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICBlbHNlIGlmIChub2RlLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpICE9PSB2YWx1ZSlcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSk7XG59XG5mdW5jdGlvbiBzZXRfYXR0cmlidXRlcyhub2RlLCBhdHRyaWJ1dGVzKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobm9kZS5fX3Byb3RvX18pO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXNba2V5XSA9PSBudWxsKSB7XG4gICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ3N0eWxlJykge1xuICAgICAgICAgICAgbm9kZS5zdHlsZS5jc3NUZXh0ID0gYXR0cmlidXRlc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ19fdmFsdWUnKSB7XG4gICAgICAgICAgICBub2RlLnZhbHVlID0gbm9kZVtrZXldID0gYXR0cmlidXRlc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRlc2NyaXB0b3JzW2tleV0gJiYgZGVzY3JpcHRvcnNba2V5XS5zZXQpIHtcbiAgICAgICAgICAgIG5vZGVba2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF0dHIobm9kZSwga2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gc2V0X3N2Z19hdHRyaWJ1dGVzKG5vZGUsIGF0dHJpYnV0ZXMpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIGF0dHIobm9kZSwga2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNldF9jdXN0b21fZWxlbWVudF9kYXRhKG5vZGUsIHByb3AsIHZhbHVlKSB7XG4gICAgaWYgKHByb3AgaW4gbm9kZSkge1xuICAgICAgICBub2RlW3Byb3BdID0gdHlwZW9mIG5vZGVbcHJvcF0gPT09ICdib29sZWFuJyAmJiB2YWx1ZSA9PT0gJycgPyB0cnVlIDogdmFsdWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBhdHRyKG5vZGUsIHByb3AsIHZhbHVlKTtcbiAgICB9XG59XG5mdW5jdGlvbiB4bGlua19hdHRyKG5vZGUsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgICBub2RlLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJywgYXR0cmlidXRlLCB2YWx1ZSk7XG59XG5mdW5jdGlvbiBnZXRfYmluZGluZ19ncm91cF92YWx1ZShncm91cCwgX192YWx1ZSwgY2hlY2tlZCkge1xuICAgIGNvbnN0IHZhbHVlID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGdyb3VwW2ldLmNoZWNrZWQpXG4gICAgICAgICAgICB2YWx1ZS5hZGQoZ3JvdXBbaV0uX192YWx1ZSk7XG4gICAgfVxuICAgIGlmICghY2hlY2tlZCkge1xuICAgICAgICB2YWx1ZS5kZWxldGUoX192YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5mcm9tKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIHRvX251bWJlcih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJycgPyBudWxsIDogK3ZhbHVlO1xufVxuZnVuY3Rpb24gdGltZV9yYW5nZXNfdG9fYXJyYXkocmFuZ2VzKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBhcnJheS5wdXNoKHsgc3RhcnQ6IHJhbmdlcy5zdGFydChpKSwgZW5kOiByYW5nZXMuZW5kKGkpIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59XG5mdW5jdGlvbiBjaGlsZHJlbihlbGVtZW50KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5jaGlsZE5vZGVzKTtcbn1cbmZ1bmN0aW9uIGluaXRfY2xhaW1faW5mbyhub2Rlcykge1xuICAgIGlmIChub2Rlcy5jbGFpbV9pbmZvID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbm9kZXMuY2xhaW1faW5mbyA9IHsgbGFzdF9pbmRleDogMCwgdG90YWxfY2xhaW1lZDogMCB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNsYWltX25vZGUobm9kZXMsIHByZWRpY2F0ZSwgcHJvY2Vzc05vZGUsIGNyZWF0ZU5vZGUsIGRvbnRVcGRhdGVMYXN0SW5kZXggPSBmYWxzZSkge1xuICAgIC8vIFRyeSB0byBmaW5kIG5vZGVzIGluIGFuIG9yZGVyIHN1Y2ggdGhhdCB3ZSBsZW5ndGhlbiB0aGUgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlXG4gICAgaW5pdF9jbGFpbV9pbmZvKG5vZGVzKTtcbiAgICBjb25zdCByZXN1bHROb2RlID0gKCgpID0+IHtcbiAgICAgICAgLy8gV2UgZmlyc3QgdHJ5IHRvIGZpbmQgYW4gZWxlbWVudCBhZnRlciB0aGUgcHJldmlvdXMgb25lXG4gICAgICAgIGZvciAobGV0IGkgPSBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXg7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICAgICAgaWYgKHByZWRpY2F0ZShub2RlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcHJvY2Vzc05vZGUobm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXNbaV0gPSByZXBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFkb250VXBkYXRlTGFzdEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyd2lzZSwgd2UgdHJ5IHRvIGZpbmQgb25lIGJlZm9yZVxuICAgICAgICAvLyBXZSBpdGVyYXRlIGluIHJldmVyc2Ugc28gdGhhdCB3ZSBkb24ndCBnbyB0b28gZmFyIGJhY2tcbiAgICAgICAgZm9yIChsZXQgaSA9IG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XG4gICAgICAgICAgICBpZiAocHJlZGljYXRlKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBwcm9jZXNzTm9kZShub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub2Rlc1tpXSA9IHJlcGxhY2VtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWRvbnRVcGRhdGVMYXN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4ID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVwbGFjZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBzcGxpY2VkIGJlZm9yZSB0aGUgbGFzdF9pbmRleCwgd2UgZGVjcmVhc2UgaXRcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4LS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIElmIHdlIGNhbid0IGZpbmQgYW55IG1hdGNoaW5nIG5vZGUsIHdlIGNyZWF0ZSBhIG5ldyBvbmVcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU5vZGUoKTtcbiAgICB9KSgpO1xuICAgIHJlc3VsdE5vZGUuY2xhaW1fb3JkZXIgPSBub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQ7XG4gICAgbm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkICs9IDE7XG4gICAgcmV0dXJuIHJlc3VsdE5vZGU7XG59XG5mdW5jdGlvbiBjbGFpbV9lbGVtZW50X2Jhc2Uobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMsIGNyZWF0ZV9lbGVtZW50KSB7XG4gICAgcmV0dXJuIGNsYWltX25vZGUobm9kZXMsIChub2RlKSA9PiBub2RlLm5vZGVOYW1lID09PSBuYW1lLCAobm9kZSkgPT4ge1xuICAgICAgICBjb25zdCByZW1vdmUgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IG5vZGUuYXR0cmlidXRlc1tqXTtcbiAgICAgICAgICAgIGlmICghYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZW1vdmUucHVzaChhdHRyaWJ1dGUubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVtb3ZlLmZvckVhY2godiA9PiBub2RlLnJlbW92ZUF0dHJpYnV0ZSh2KSk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSwgKCkgPT4gY3JlYXRlX2VsZW1lbnQobmFtZSkpO1xufVxuZnVuY3Rpb24gY2xhaW1fZWxlbWVudChub2RlcywgbmFtZSwgYXR0cmlidXRlcykge1xuICAgIHJldHVybiBjbGFpbV9lbGVtZW50X2Jhc2Uobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMsIGVsZW1lbnQpO1xufVxuZnVuY3Rpb24gY2xhaW1fc3ZnX2VsZW1lbnQobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMpIHtcbiAgICByZXR1cm4gY2xhaW1fZWxlbWVudF9iYXNlKG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzLCBzdmdfZWxlbWVudCk7XG59XG5mdW5jdGlvbiBjbGFpbV90ZXh0KG5vZGVzLCBkYXRhKSB7XG4gICAgcmV0dXJuIGNsYWltX25vZGUobm9kZXMsIChub2RlKSA9PiBub2RlLm5vZGVUeXBlID09PSAzLCAobm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhU3RyID0gJycgKyBkYXRhO1xuICAgICAgICBpZiAobm9kZS5kYXRhLnN0YXJ0c1dpdGgoZGF0YVN0cikpIHtcbiAgICAgICAgICAgIGlmIChub2RlLmRhdGEubGVuZ3RoICE9PSBkYXRhU3RyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlLnNwbGl0VGV4dChkYXRhU3RyLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2RlLmRhdGEgPSBkYXRhU3RyO1xuICAgICAgICB9XG4gICAgfSwgKCkgPT4gdGV4dChkYXRhKSwgdHJ1ZSAvLyBUZXh0IG5vZGVzIHNob3VsZCBub3QgdXBkYXRlIGxhc3QgaW5kZXggc2luY2UgaXQgaXMgbGlrZWx5IG5vdCB3b3J0aCBpdCB0byBlbGltaW5hdGUgYW4gaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBvZiBhY3R1YWwgZWxlbWVudHNcbiAgICApO1xufVxuZnVuY3Rpb24gY2xhaW1fc3BhY2Uobm9kZXMpIHtcbiAgICByZXR1cm4gY2xhaW1fdGV4dChub2RlcywgJyAnKTtcbn1cbmZ1bmN0aW9uIGZpbmRfY29tbWVudChub2RlcywgdGV4dCwgc3RhcnQpIHtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBub2Rlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSA4IC8qIGNvbW1lbnQgbm9kZSAqLyAmJiBub2RlLnRleHRDb250ZW50LnRyaW0oKSA9PT0gdGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzLmxlbmd0aDtcbn1cbmZ1bmN0aW9uIGNsYWltX2h0bWxfdGFnKG5vZGVzKSB7XG4gICAgLy8gZmluZCBodG1sIG9wZW5pbmcgdGFnXG4gICAgY29uc3Qgc3RhcnRfaW5kZXggPSBmaW5kX2NvbW1lbnQobm9kZXMsICdIVE1MX1RBR19TVEFSVCcsIDApO1xuICAgIGNvbnN0IGVuZF9pbmRleCA9IGZpbmRfY29tbWVudChub2RlcywgJ0hUTUxfVEFHX0VORCcsIHN0YXJ0X2luZGV4KTtcbiAgICBpZiAoc3RhcnRfaW5kZXggPT09IGVuZF9pbmRleCkge1xuICAgICAgICByZXR1cm4gbmV3IEh0bWxUYWdIeWRyYXRpb24oKTtcbiAgICB9XG4gICAgaW5pdF9jbGFpbV9pbmZvKG5vZGVzKTtcbiAgICBjb25zdCBodG1sX3RhZ19ub2RlcyA9IG5vZGVzLnNwbGljZShzdGFydF9pbmRleCwgZW5kX2luZGV4ICsgMSk7XG4gICAgZGV0YWNoKGh0bWxfdGFnX25vZGVzWzBdKTtcbiAgICBkZXRhY2goaHRtbF90YWdfbm9kZXNbaHRtbF90YWdfbm9kZXMubGVuZ3RoIC0gMV0pO1xuICAgIGNvbnN0IGNsYWltZWRfbm9kZXMgPSBodG1sX3RhZ19ub2Rlcy5zbGljZSgxLCBodG1sX3RhZ19ub2Rlcy5sZW5ndGggLSAxKTtcbiAgICBmb3IgKGNvbnN0IG4gb2YgY2xhaW1lZF9ub2Rlcykge1xuICAgICAgICBuLmNsYWltX29yZGVyID0gbm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkO1xuICAgICAgICBub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBIdG1sVGFnSHlkcmF0aW9uKGNsYWltZWRfbm9kZXMpO1xufVxuZnVuY3Rpb24gc2V0X2RhdGEodGV4dCwgZGF0YSkge1xuICAgIGRhdGEgPSAnJyArIGRhdGE7XG4gICAgaWYgKHRleHQud2hvbGVUZXh0ICE9PSBkYXRhKVxuICAgICAgICB0ZXh0LmRhdGEgPSBkYXRhO1xufVxuZnVuY3Rpb24gc2V0X2lucHV0X3ZhbHVlKGlucHV0LCB2YWx1ZSkge1xuICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XG59XG5mdW5jdGlvbiBzZXRfaW5wdXRfdHlwZShpbnB1dCwgdHlwZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGlucHV0LnR5cGUgPSB0eXBlO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgfVxufVxuZnVuY3Rpb24gc2V0X3N0eWxlKG5vZGUsIGtleSwgdmFsdWUsIGltcG9ydGFudCkge1xuICAgIG5vZGUuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgaW1wb3J0YW50ID8gJ2ltcG9ydGFudCcgOiAnJyk7XG59XG5mdW5jdGlvbiBzZWxlY3Rfb3B0aW9uKHNlbGVjdCwgdmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHNlbGVjdC5vcHRpb25zW2ldO1xuICAgICAgICBpZiAob3B0aW9uLl9fdmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gLTE7IC8vIG5vIG9wdGlvbiBzaG91bGQgYmUgc2VsZWN0ZWRcbn1cbmZ1bmN0aW9uIHNlbGVjdF9vcHRpb25zKHNlbGVjdCwgdmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHNlbGVjdC5vcHRpb25zW2ldO1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB+dmFsdWUuaW5kZXhPZihvcHRpb24uX192YWx1ZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gc2VsZWN0X3ZhbHVlKHNlbGVjdCkge1xuICAgIGNvbnN0IHNlbGVjdGVkX29wdGlvbiA9IHNlbGVjdC5xdWVyeVNlbGVjdG9yKCc6Y2hlY2tlZCcpIHx8IHNlbGVjdC5vcHRpb25zWzBdO1xuICAgIHJldHVybiBzZWxlY3RlZF9vcHRpb24gJiYgc2VsZWN0ZWRfb3B0aW9uLl9fdmFsdWU7XG59XG5mdW5jdGlvbiBzZWxlY3RfbXVsdGlwbGVfdmFsdWUoc2VsZWN0KSB7XG4gICAgcmV0dXJuIFtdLm1hcC5jYWxsKHNlbGVjdC5xdWVyeVNlbGVjdG9yQWxsKCc6Y2hlY2tlZCcpLCBvcHRpb24gPT4gb3B0aW9uLl9fdmFsdWUpO1xufVxuLy8gdW5mb3J0dW5hdGVseSB0aGlzIGNhbid0IGJlIGEgY29uc3RhbnQgYXMgdGhhdCB3b3VsZG4ndCBiZSB0cmVlLXNoYWtlYWJsZVxuLy8gc28gd2UgY2FjaGUgdGhlIHJlc3VsdCBpbnN0ZWFkXG5sZXQgY3Jvc3NvcmlnaW47XG5mdW5jdGlvbiBpc19jcm9zc29yaWdpbigpIHtcbiAgICBpZiAoY3Jvc3NvcmlnaW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjcm9zc29yaWdpbiA9IGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICB2b2lkIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjcm9zc29yaWdpbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNyb3Nzb3JpZ2luO1xufVxuZnVuY3Rpb24gYWRkX3Jlc2l6ZV9saXN0ZW5lcihub2RlLCBmbikge1xuICAgIGNvbnN0IGNvbXB1dGVkX3N0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICBpZiAoY29tcHV0ZWRfc3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICAgIG5vZGUuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIH1cbiAgICBjb25zdCBpZnJhbWUgPSBlbGVtZW50KCdpZnJhbWUnKTtcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7ICcgK1xuICAgICAgICAnb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyOiAwOyBvcGFjaXR5OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgei1pbmRleDogLTE7Jyk7XG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgIGlmcmFtZS50YWJJbmRleCA9IC0xO1xuICAgIGNvbnN0IGNyb3Nzb3JpZ2luID0gaXNfY3Jvc3NvcmlnaW4oKTtcbiAgICBsZXQgdW5zdWJzY3JpYmU7XG4gICAgaWYgKGNyb3Nzb3JpZ2luKSB7XG4gICAgICAgIGlmcmFtZS5zcmMgPSBcImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+b25yZXNpemU9ZnVuY3Rpb24oKXtwYXJlbnQucG9zdE1lc3NhZ2UoMCwnKicpfTwvc2NyaXB0PlwiO1xuICAgICAgICB1bnN1YnNjcmliZSA9IGxpc3Rlbih3aW5kb3csICdtZXNzYWdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBpZnJhbWUuY29udGVudFdpbmRvdylcbiAgICAgICAgICAgICAgICBmbigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmcmFtZS5zcmMgPSAnYWJvdXQ6YmxhbmsnO1xuICAgICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUgPSBsaXN0ZW4oaWZyYW1lLmNvbnRlbnRXaW5kb3csICdyZXNpemUnLCBmbik7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFwcGVuZChub2RlLCBpZnJhbWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChjcm9zc29yaWdpbikge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1bnN1YnNjcmliZSAmJiBpZnJhbWUuY29udGVudFdpbmRvdykge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBkZXRhY2goaWZyYW1lKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gdG9nZ2xlX2NsYXNzKGVsZW1lbnQsIG5hbWUsIHRvZ2dsZSkge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0W3RvZ2dsZSA/ICdhZGQnIDogJ3JlbW92ZSddKG5hbWUpO1xufVxuZnVuY3Rpb24gY3VzdG9tX2V2ZW50KHR5cGUsIGRldGFpbCwgYnViYmxlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgIGUuaW5pdEN1c3RvbUV2ZW50KHR5cGUsIGJ1YmJsZXMsIGZhbHNlLCBkZXRhaWwpO1xuICAgIHJldHVybiBlO1xufVxuZnVuY3Rpb24gcXVlcnlfc2VsZWN0b3JfYWxsKHNlbGVjdG9yLCBwYXJlbnQgPSBkb2N1bWVudC5ib2R5KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20ocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTtcbn1cbmNsYXNzIEh0bWxUYWcge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmUgPSB0aGlzLm4gPSBudWxsO1xuICAgIH1cbiAgICBjKGh0bWwpIHtcbiAgICAgICAgdGhpcy5oKGh0bWwpO1xuICAgIH1cbiAgICBtKGh0bWwsIHRhcmdldCwgYW5jaG9yID0gbnVsbCkge1xuICAgICAgICBpZiAoIXRoaXMuZSkge1xuICAgICAgICAgICAgdGhpcy5lID0gZWxlbWVudCh0YXJnZXQubm9kZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy50ID0gdGFyZ2V0O1xuICAgICAgICAgICAgdGhpcy5jKGh0bWwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaShhbmNob3IpO1xuICAgIH1cbiAgICBoKGh0bWwpIHtcbiAgICAgICAgdGhpcy5lLmlubmVySFRNTCA9IGh0bWw7XG4gICAgICAgIHRoaXMubiA9IEFycmF5LmZyb20odGhpcy5lLmNoaWxkTm9kZXMpO1xuICAgIH1cbiAgICBpKGFuY2hvcikge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubi5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgaW5zZXJ0KHRoaXMudCwgdGhpcy5uW2ldLCBhbmNob3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHAoaHRtbCkge1xuICAgICAgICB0aGlzLmQoKTtcbiAgICAgICAgdGhpcy5oKGh0bWwpO1xuICAgICAgICB0aGlzLmkodGhpcy5hKTtcbiAgICB9XG4gICAgZCgpIHtcbiAgICAgICAgdGhpcy5uLmZvckVhY2goZGV0YWNoKTtcbiAgICB9XG59XG5jbGFzcyBIdG1sVGFnSHlkcmF0aW9uIGV4dGVuZHMgSHRtbFRhZyB7XG4gICAgY29uc3RydWN0b3IoY2xhaW1lZF9ub2Rlcykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmUgPSB0aGlzLm4gPSBudWxsO1xuICAgICAgICB0aGlzLmwgPSBjbGFpbWVkX25vZGVzO1xuICAgIH1cbiAgICBjKGh0bWwpIHtcbiAgICAgICAgaWYgKHRoaXMubCkge1xuICAgICAgICAgICAgdGhpcy5uID0gdGhpcy5sO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIuYyhodG1sKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpKGFuY2hvcikge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubi5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgaW5zZXJ0X2h5ZHJhdGlvbih0aGlzLnQsIHRoaXMubltpXSwgYW5jaG9yKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGF0dHJpYnV0ZV90b19vYmplY3QoYXR0cmlidXRlcykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgcmVzdWx0W2F0dHJpYnV0ZS5uYW1lXSA9IGF0dHJpYnV0ZS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldF9jdXN0b21fZWxlbWVudHNfc2xvdHMoZWxlbWVudCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGVsZW1lbnQuY2hpbGROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIHJlc3VsdFtub2RlLnNsb3QgfHwgJ2RlZmF1bHQnXSA9IHRydWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuY29uc3QgYWN0aXZlX2RvY3MgPSBuZXcgU2V0KCk7XG5sZXQgYWN0aXZlID0gMDtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJrc2t5YXBwL3N0cmluZy1oYXNoL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG5mdW5jdGlvbiBoYXNoKHN0cikge1xuICAgIGxldCBoYXNoID0gNTM4MTtcbiAgICBsZXQgaSA9IHN0ci5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSlcbiAgICAgICAgaGFzaCA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpIF4gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGhhc2ggPj4+IDA7XG59XG5mdW5jdGlvbiBjcmVhdGVfcnVsZShub2RlLCBhLCBiLCBkdXJhdGlvbiwgZGVsYXksIGVhc2UsIGZuLCB1aWQgPSAwKSB7XG4gICAgY29uc3Qgc3RlcCA9IDE2LjY2NiAvIGR1cmF0aW9uO1xuICAgIGxldCBrZXlmcmFtZXMgPSAne1xcbic7XG4gICAgZm9yIChsZXQgcCA9IDA7IHAgPD0gMTsgcCArPSBzdGVwKSB7XG4gICAgICAgIGNvbnN0IHQgPSBhICsgKGIgLSBhKSAqIGVhc2UocCk7XG4gICAgICAgIGtleWZyYW1lcyArPSBwICogMTAwICsgYCV7JHtmbih0LCAxIC0gdCl9fVxcbmA7XG4gICAgfVxuICAgIGNvbnN0IHJ1bGUgPSBrZXlmcmFtZXMgKyBgMTAwJSB7JHtmbihiLCAxIC0gYil9fVxcbn1gO1xuICAgIGNvbnN0IG5hbWUgPSBgX19zdmVsdGVfJHtoYXNoKHJ1bGUpfV8ke3VpZH1gO1xuICAgIGNvbnN0IGRvYyA9IGdldF9yb290X2Zvcl9zdHlsZShub2RlKTtcbiAgICBhY3RpdmVfZG9jcy5hZGQoZG9jKTtcbiAgICBjb25zdCBzdHlsZXNoZWV0ID0gZG9jLl9fc3ZlbHRlX3N0eWxlc2hlZXQgfHwgKGRvYy5fX3N2ZWx0ZV9zdHlsZXNoZWV0ID0gYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQobm9kZSkuc2hlZXQpO1xuICAgIGNvbnN0IGN1cnJlbnRfcnVsZXMgPSBkb2MuX19zdmVsdGVfcnVsZXMgfHwgKGRvYy5fX3N2ZWx0ZV9ydWxlcyA9IHt9KTtcbiAgICBpZiAoIWN1cnJlbnRfcnVsZXNbbmFtZV0pIHtcbiAgICAgICAgY3VycmVudF9ydWxlc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIHN0eWxlc2hlZXQuaW5zZXJ0UnVsZShgQGtleWZyYW1lcyAke25hbWV9ICR7cnVsZX1gLCBzdHlsZXNoZWV0LmNzc1J1bGVzLmxlbmd0aCk7XG4gICAgfVxuICAgIGNvbnN0IGFuaW1hdGlvbiA9IG5vZGUuc3R5bGUuYW5pbWF0aW9uIHx8ICcnO1xuICAgIG5vZGUuc3R5bGUuYW5pbWF0aW9uID0gYCR7YW5pbWF0aW9uID8gYCR7YW5pbWF0aW9ufSwgYCA6ICcnfSR7bmFtZX0gJHtkdXJhdGlvbn1tcyBsaW5lYXIgJHtkZWxheX1tcyAxIGJvdGhgO1xuICAgIGFjdGl2ZSArPSAxO1xuICAgIHJldHVybiBuYW1lO1xufVxuZnVuY3Rpb24gZGVsZXRlX3J1bGUobm9kZSwgbmFtZSkge1xuICAgIGNvbnN0IHByZXZpb3VzID0gKG5vZGUuc3R5bGUuYW5pbWF0aW9uIHx8ICcnKS5zcGxpdCgnLCAnKTtcbiAgICBjb25zdCBuZXh0ID0gcHJldmlvdXMuZmlsdGVyKG5hbWVcbiAgICAgICAgPyBhbmltID0+IGFuaW0uaW5kZXhPZihuYW1lKSA8IDAgLy8gcmVtb3ZlIHNwZWNpZmljIGFuaW1hdGlvblxuICAgICAgICA6IGFuaW0gPT4gYW5pbS5pbmRleE9mKCdfX3N2ZWx0ZScpID09PSAtMSAvLyByZW1vdmUgYWxsIFN2ZWx0ZSBhbmltYXRpb25zXG4gICAgKTtcbiAgICBjb25zdCBkZWxldGVkID0gcHJldmlvdXMubGVuZ3RoIC0gbmV4dC5sZW5ndGg7XG4gICAgaWYgKGRlbGV0ZWQpIHtcbiAgICAgICAgbm9kZS5zdHlsZS5hbmltYXRpb24gPSBuZXh0LmpvaW4oJywgJyk7XG4gICAgICAgIGFjdGl2ZSAtPSBkZWxldGVkO1xuICAgICAgICBpZiAoIWFjdGl2ZSlcbiAgICAgICAgICAgIGNsZWFyX3J1bGVzKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gY2xlYXJfcnVsZXMoKSB7XG4gICAgcmFmKCgpID0+IHtcbiAgICAgICAgaWYgKGFjdGl2ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgYWN0aXZlX2RvY3MuZm9yRWFjaChkb2MgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3R5bGVzaGVldCA9IGRvYy5fX3N2ZWx0ZV9zdHlsZXNoZWV0O1xuICAgICAgICAgICAgbGV0IGkgPSBzdHlsZXNoZWV0LmNzc1J1bGVzLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChpLS0pXG4gICAgICAgICAgICAgICAgc3R5bGVzaGVldC5kZWxldGVSdWxlKGkpO1xuICAgICAgICAgICAgZG9jLl9fc3ZlbHRlX3J1bGVzID0ge307XG4gICAgICAgIH0pO1xuICAgICAgICBhY3RpdmVfZG9jcy5jbGVhcigpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVfYW5pbWF0aW9uKG5vZGUsIGZyb20sIGZuLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZyb20pXG4gICAgICAgIHJldHVybiBub29wO1xuICAgIGNvbnN0IHRvID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoZnJvbS5sZWZ0ID09PSB0by5sZWZ0ICYmIGZyb20ucmlnaHQgPT09IHRvLnJpZ2h0ICYmIGZyb20udG9wID09PSB0by50b3AgJiYgZnJvbS5ib3R0b20gPT09IHRvLmJvdHRvbSlcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgY29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gMzAwLCBlYXNpbmcgPSBpZGVudGl0eSwgXG4gICAgLy8gQHRzLWlnbm9yZSB0b2RvOiBzaG91bGQgdGhpcyBiZSBzZXBhcmF0ZWQgZnJvbSBkZXN0cnVjdHVyaW5nPyBPciBzdGFydC9lbmQgYWRkZWQgdG8gcHVibGljIGFwaSBhbmQgZG9jdW1lbnRhdGlvbj9cbiAgICBzdGFydDogc3RhcnRfdGltZSA9IG5vdygpICsgZGVsYXksIFxuICAgIC8vIEB0cy1pZ25vcmUgdG9kbzpcbiAgICBlbmQgPSBzdGFydF90aW1lICsgZHVyYXRpb24sIHRpY2sgPSBub29wLCBjc3MgfSA9IGZuKG5vZGUsIHsgZnJvbSwgdG8gfSwgcGFyYW1zKTtcbiAgICBsZXQgcnVubmluZyA9IHRydWU7XG4gICAgbGV0IHN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBsZXQgbmFtZTtcbiAgICBmdW5jdGlvbiBzdGFydCgpIHtcbiAgICAgICAgaWYgKGNzcykge1xuICAgICAgICAgICAgbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIDAsIDEsIGR1cmF0aW9uLCBkZWxheSwgZWFzaW5nLCBjc3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVsYXkpIHtcbiAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICAgIGlmIChjc3MpXG4gICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBuYW1lKTtcbiAgICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgIH1cbiAgICBsb29wKG5vdyA9PiB7XG4gICAgICAgIGlmICghc3RhcnRlZCAmJiBub3cgPj0gc3RhcnRfdGltZSkge1xuICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0ZWQgJiYgbm93ID49IGVuZCkge1xuICAgICAgICAgICAgdGljaygxLCAwKTtcbiAgICAgICAgICAgIHN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJ1bm5pbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRlZCkge1xuICAgICAgICAgICAgY29uc3QgcCA9IG5vdyAtIHN0YXJ0X3RpbWU7XG4gICAgICAgICAgICBjb25zdCB0ID0gMCArIDEgKiBlYXNpbmcocCAvIGR1cmF0aW9uKTtcbiAgICAgICAgICAgIHRpY2sodCwgMSAtIHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIHN0YXJ0KCk7XG4gICAgdGljaygwLCAxKTtcbiAgICByZXR1cm4gc3RvcDtcbn1cbmZ1bmN0aW9uIGZpeF9wb3NpdGlvbihub2RlKSB7XG4gICAgY29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgIGlmIChzdHlsZS5wb3NpdGlvbiAhPT0gJ2Fic29sdXRlJyAmJiBzdHlsZS5wb3NpdGlvbiAhPT0gJ2ZpeGVkJykge1xuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHN0eWxlO1xuICAgICAgICBjb25zdCBhID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbm9kZS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIG5vZGUuc3R5bGUud2lkdGggPSB3aWR0aDtcbiAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIGFkZF90cmFuc2Zvcm0obm9kZSwgYSk7XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkX3RyYW5zZm9ybShub2RlLCBhKSB7XG4gICAgY29uc3QgYiA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYgKGEubGVmdCAhPT0gYi5sZWZ0IHx8IGEudG9wICE9PSBiLnRvcCkge1xuICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IHN0eWxlLnRyYW5zZm9ybSA9PT0gJ25vbmUnID8gJycgOiBzdHlsZS50cmFuc2Zvcm07XG4gICAgICAgIG5vZGUuc3R5bGUudHJhbnNmb3JtID0gYCR7dHJhbnNmb3JtfSB0cmFuc2xhdGUoJHthLmxlZnQgLSBiLmxlZnR9cHgsICR7YS50b3AgLSBiLnRvcH1weClgO1xuICAgIH1cbn1cblxubGV0IGN1cnJlbnRfY29tcG9uZW50O1xuZnVuY3Rpb24gc2V0X2N1cnJlbnRfY29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgIGN1cnJlbnRfY29tcG9uZW50ID0gY29tcG9uZW50O1xufVxuZnVuY3Rpb24gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkge1xuICAgIGlmICghY3VycmVudF9jb21wb25lbnQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gY2FsbGVkIG91dHNpZGUgY29tcG9uZW50IGluaXRpYWxpemF0aW9uJyk7XG4gICAgcmV0dXJuIGN1cnJlbnRfY29tcG9uZW50O1xufVxuZnVuY3Rpb24gYmVmb3JlVXBkYXRlKGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuYmVmb3JlX3VwZGF0ZS5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIG9uTW91bnQoZm4pIHtcbiAgICBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5vbl9tb3VudC5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIGFmdGVyVXBkYXRlKGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuYWZ0ZXJfdXBkYXRlLnB1c2goZm4pO1xufVxuZnVuY3Rpb24gb25EZXN0cm95KGZuKSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQub25fZGVzdHJveS5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcigpIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSBnZXRfY3VycmVudF9jb21wb25lbnQoKTtcbiAgICByZXR1cm4gKHR5cGUsIGRldGFpbCkgPT4ge1xuICAgICAgICBjb25zdCBjYWxsYmFja3MgPSBjb21wb25lbnQuJCQuY2FsbGJhY2tzW3R5cGVdO1xuICAgICAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICAgICAgICAvLyBUT0RPIGFyZSB0aGVyZSBzaXR1YXRpb25zIHdoZXJlIGV2ZW50cyBjb3VsZCBiZSBkaXNwYXRjaGVkXG4gICAgICAgICAgICAvLyBpbiBhIHNlcnZlciAobm9uLURPTSkgZW52aXJvbm1lbnQ/XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IGN1c3RvbV9ldmVudCh0eXBlLCBkZXRhaWwpO1xuICAgICAgICAgICAgY2FsbGJhY2tzLnNsaWNlKCkuZm9yRWFjaChmbiA9PiB7XG4gICAgICAgICAgICAgICAgZm4uY2FsbChjb21wb25lbnQsIGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHNldENvbnRleHQoa2V5LCBjb250ZXh0KSB7XG4gICAgZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuY29udGV4dC5zZXQoa2V5LCBjb250ZXh0KTtcbn1cbmZ1bmN0aW9uIGdldENvbnRleHQoa2V5KSB7XG4gICAgcmV0dXJuIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQuZ2V0KGtleSk7XG59XG5mdW5jdGlvbiBnZXRBbGxDb250ZXh0cygpIHtcbiAgICByZXR1cm4gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuY29udGV4dDtcbn1cbmZ1bmN0aW9uIGhhc0NvbnRleHQoa2V5KSB7XG4gICAgcmV0dXJuIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQuaGFzKGtleSk7XG59XG4vLyBUT0RPIGZpZ3VyZSBvdXQgaWYgd2Ugc3RpbGwgd2FudCB0byBzdXBwb3J0XG4vLyBzaG9ydGhhbmQgZXZlbnRzLCBvciBpZiB3ZSB3YW50IHRvIGltcGxlbWVudFxuLy8gYSByZWFsIGJ1YmJsaW5nIG1lY2hhbmlzbVxuZnVuY3Rpb24gYnViYmxlKGNvbXBvbmVudCwgZXZlbnQpIHtcbiAgICBjb25zdCBjYWxsYmFja3MgPSBjb21wb25lbnQuJCQuY2FsbGJhY2tzW2V2ZW50LnR5cGVdO1xuICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjYWxsYmFja3Muc2xpY2UoKS5mb3JFYWNoKGZuID0+IGZuLmNhbGwodGhpcywgZXZlbnQpKTtcbiAgICB9XG59XG5cbmNvbnN0IGRpcnR5X2NvbXBvbmVudHMgPSBbXTtcbmNvbnN0IGludHJvcyA9IHsgZW5hYmxlZDogZmFsc2UgfTtcbmNvbnN0IGJpbmRpbmdfY2FsbGJhY2tzID0gW107XG5jb25zdCByZW5kZXJfY2FsbGJhY2tzID0gW107XG5jb25zdCBmbHVzaF9jYWxsYmFja3MgPSBbXTtcbmNvbnN0IHJlc29sdmVkX3Byb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbmxldCB1cGRhdGVfc2NoZWR1bGVkID0gZmFsc2U7XG5mdW5jdGlvbiBzY2hlZHVsZV91cGRhdGUoKSB7XG4gICAgaWYgKCF1cGRhdGVfc2NoZWR1bGVkKSB7XG4gICAgICAgIHVwZGF0ZV9zY2hlZHVsZWQgPSB0cnVlO1xuICAgICAgICByZXNvbHZlZF9wcm9taXNlLnRoZW4oZmx1c2gpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRpY2soKSB7XG4gICAgc2NoZWR1bGVfdXBkYXRlKCk7XG4gICAgcmV0dXJuIHJlc29sdmVkX3Byb21pc2U7XG59XG5mdW5jdGlvbiBhZGRfcmVuZGVyX2NhbGxiYWNrKGZuKSB7XG4gICAgcmVuZGVyX2NhbGxiYWNrcy5wdXNoKGZuKTtcbn1cbmZ1bmN0aW9uIGFkZF9mbHVzaF9jYWxsYmFjayhmbikge1xuICAgIGZsdXNoX2NhbGxiYWNrcy5wdXNoKGZuKTtcbn1cbi8vIGZsdXNoKCkgY2FsbHMgY2FsbGJhY2tzIGluIHRoaXMgb3JkZXI6XG4vLyAxLiBBbGwgYmVmb3JlVXBkYXRlIGNhbGxiYWNrcywgaW4gb3JkZXI6IHBhcmVudHMgYmVmb3JlIGNoaWxkcmVuXG4vLyAyLiBBbGwgYmluZDp0aGlzIGNhbGxiYWNrcywgaW4gcmV2ZXJzZSBvcmRlcjogY2hpbGRyZW4gYmVmb3JlIHBhcmVudHMuXG4vLyAzLiBBbGwgYWZ0ZXJVcGRhdGUgY2FsbGJhY2tzLCBpbiBvcmRlcjogcGFyZW50cyBiZWZvcmUgY2hpbGRyZW4uIEVYQ0VQVFxuLy8gICAgZm9yIGFmdGVyVXBkYXRlcyBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsIG9uTW91bnQsIHdoaWNoIGFyZSBjYWxsZWQgaW5cbi8vICAgIHJldmVyc2Ugb3JkZXI6IGNoaWxkcmVuIGJlZm9yZSBwYXJlbnRzLlxuLy8gU2luY2UgY2FsbGJhY2tzIG1pZ2h0IHVwZGF0ZSBjb21wb25lbnQgdmFsdWVzLCB3aGljaCBjb3VsZCB0cmlnZ2VyIGFub3RoZXJcbi8vIGNhbGwgdG8gZmx1c2goKSwgdGhlIGZvbGxvd2luZyBzdGVwcyBndWFyZCBhZ2FpbnN0IHRoaXM6XG4vLyAxLiBEdXJpbmcgYmVmb3JlVXBkYXRlLCBhbnkgdXBkYXRlZCBjb21wb25lbnRzIHdpbGwgYmUgYWRkZWQgdG8gdGhlXG4vLyAgICBkaXJ0eV9jb21wb25lbnRzIGFycmF5IGFuZCB3aWxsIGNhdXNlIGEgcmVlbnRyYW50IGNhbGwgdG8gZmx1c2goKS4gQmVjYXVzZVxuLy8gICAgdGhlIGZsdXNoIGluZGV4IGlzIGtlcHQgb3V0c2lkZSB0aGUgZnVuY3Rpb24sIHRoZSByZWVudHJhbnQgY2FsbCB3aWxsIHBpY2tcbi8vICAgIHVwIHdoZXJlIHRoZSBlYXJsaWVyIGNhbGwgbGVmdCBvZmYgYW5kIGdvIHRocm91Z2ggYWxsIGRpcnR5IGNvbXBvbmVudHMuIFRoZVxuLy8gICAgY3VycmVudF9jb21wb25lbnQgdmFsdWUgaXMgc2F2ZWQgYW5kIHJlc3RvcmVkIHNvIHRoYXQgdGhlIHJlZW50cmFudCBjYWxsIHdpbGxcbi8vICAgIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgXCJwYXJlbnRcIiBmbHVzaCgpIGNhbGwuXG4vLyAyLiBiaW5kOnRoaXMgY2FsbGJhY2tzIGNhbm5vdCB0cmlnZ2VyIG5ldyBmbHVzaCgpIGNhbGxzLlxuLy8gMy4gRHVyaW5nIGFmdGVyVXBkYXRlLCBhbnkgdXBkYXRlZCBjb21wb25lbnRzIHdpbGwgTk9UIGhhdmUgdGhlaXIgYWZ0ZXJVcGRhdGVcbi8vICAgIGNhbGxiYWNrIGNhbGxlZCBhIHNlY29uZCB0aW1lOyB0aGUgc2Vlbl9jYWxsYmFja3Mgc2V0LCBvdXRzaWRlIHRoZSBmbHVzaCgpXG4vLyAgICBmdW5jdGlvbiwgZ3VhcmFudGVlcyB0aGlzIGJlaGF2aW9yLlxuY29uc3Qgc2Vlbl9jYWxsYmFja3MgPSBuZXcgU2V0KCk7XG5sZXQgZmx1c2hpZHggPSAwOyAvLyBEbyAqbm90KiBtb3ZlIHRoaXMgaW5zaWRlIHRoZSBmbHVzaCgpIGZ1bmN0aW9uXG5mdW5jdGlvbiBmbHVzaCgpIHtcbiAgICBjb25zdCBzYXZlZF9jb21wb25lbnQgPSBjdXJyZW50X2NvbXBvbmVudDtcbiAgICBkbyB7XG4gICAgICAgIC8vIGZpcnN0LCBjYWxsIGJlZm9yZVVwZGF0ZSBmdW5jdGlvbnNcbiAgICAgICAgLy8gYW5kIHVwZGF0ZSBjb21wb25lbnRzXG4gICAgICAgIHdoaWxlIChmbHVzaGlkeCA8IGRpcnR5X2NvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBkaXJ0eV9jb21wb25lbnRzW2ZsdXNoaWR4XTtcbiAgICAgICAgICAgIGZsdXNoaWR4Kys7XG4gICAgICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgICAgIHVwZGF0ZShjb21wb25lbnQuJCQpO1xuICAgICAgICB9XG4gICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChudWxsKTtcbiAgICAgICAgZGlydHlfY29tcG9uZW50cy5sZW5ndGggPSAwO1xuICAgICAgICBmbHVzaGlkeCA9IDA7XG4gICAgICAgIHdoaWxlIChiaW5kaW5nX2NhbGxiYWNrcy5sZW5ndGgpXG4gICAgICAgICAgICBiaW5kaW5nX2NhbGxiYWNrcy5wb3AoKSgpO1xuICAgICAgICAvLyB0aGVuLCBvbmNlIGNvbXBvbmVudHMgYXJlIHVwZGF0ZWQsIGNhbGxcbiAgICAgICAgLy8gYWZ0ZXJVcGRhdGUgZnVuY3Rpb25zLiBUaGlzIG1heSBjYXVzZVxuICAgICAgICAvLyBzdWJzZXF1ZW50IHVwZGF0ZXMuLi5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZW5kZXJfY2FsbGJhY2tzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9IHJlbmRlcl9jYWxsYmFja3NbaV07XG4gICAgICAgICAgICBpZiAoIXNlZW5fY2FsbGJhY2tzLmhhcyhjYWxsYmFjaykpIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5zbyBndWFyZCBhZ2FpbnN0IGluZmluaXRlIGxvb3BzXG4gICAgICAgICAgICAgICAgc2Vlbl9jYWxsYmFja3MuYWRkKGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlbmRlcl9jYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgICB9IHdoaWxlIChkaXJ0eV9jb21wb25lbnRzLmxlbmd0aCk7XG4gICAgd2hpbGUgKGZsdXNoX2NhbGxiYWNrcy5sZW5ndGgpIHtcbiAgICAgICAgZmx1c2hfY2FsbGJhY2tzLnBvcCgpKCk7XG4gICAgfVxuICAgIHVwZGF0ZV9zY2hlZHVsZWQgPSBmYWxzZTtcbiAgICBzZWVuX2NhbGxiYWNrcy5jbGVhcigpO1xuICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChzYXZlZF9jb21wb25lbnQpO1xufVxuZnVuY3Rpb24gdXBkYXRlKCQkKSB7XG4gICAgaWYgKCQkLmZyYWdtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICQkLnVwZGF0ZSgpO1xuICAgICAgICBydW5fYWxsKCQkLmJlZm9yZV91cGRhdGUpO1xuICAgICAgICBjb25zdCBkaXJ0eSA9ICQkLmRpcnR5O1xuICAgICAgICAkJC5kaXJ0eSA9IFstMV07XG4gICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LnAoJCQuY3R4LCBkaXJ0eSk7XG4gICAgICAgICQkLmFmdGVyX3VwZGF0ZS5mb3JFYWNoKGFkZF9yZW5kZXJfY2FsbGJhY2spO1xuICAgIH1cbn1cblxubGV0IHByb21pc2U7XG5mdW5jdGlvbiB3YWl0KCkge1xuICAgIGlmICghcHJvbWlzZSkge1xuICAgICAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIHByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwcm9taXNlO1xufVxuZnVuY3Rpb24gZGlzcGF0Y2gobm9kZSwgZGlyZWN0aW9uLCBraW5kKSB7XG4gICAgbm9kZS5kaXNwYXRjaEV2ZW50KGN1c3RvbV9ldmVudChgJHtkaXJlY3Rpb24gPyAnaW50cm8nIDogJ291dHJvJ30ke2tpbmR9YCkpO1xufVxuY29uc3Qgb3V0cm9pbmcgPSBuZXcgU2V0KCk7XG5sZXQgb3V0cm9zO1xuZnVuY3Rpb24gZ3JvdXBfb3V0cm9zKCkge1xuICAgIG91dHJvcyA9IHtcbiAgICAgICAgcjogMCxcbiAgICAgICAgYzogW10sXG4gICAgICAgIHA6IG91dHJvcyAvLyBwYXJlbnQgZ3JvdXBcbiAgICB9O1xufVxuZnVuY3Rpb24gY2hlY2tfb3V0cm9zKCkge1xuICAgIGlmICghb3V0cm9zLnIpIHtcbiAgICAgICAgcnVuX2FsbChvdXRyb3MuYyk7XG4gICAgfVxuICAgIG91dHJvcyA9IG91dHJvcy5wO1xufVxuZnVuY3Rpb24gdHJhbnNpdGlvbl9pbihibG9jaywgbG9jYWwpIHtcbiAgICBpZiAoYmxvY2sgJiYgYmxvY2suaSkge1xuICAgICAgICBvdXRyb2luZy5kZWxldGUoYmxvY2spO1xuICAgICAgICBibG9jay5pKGxvY2FsKTtcbiAgICB9XG59XG5mdW5jdGlvbiB0cmFuc2l0aW9uX291dChibG9jaywgbG9jYWwsIGRldGFjaCwgY2FsbGJhY2spIHtcbiAgICBpZiAoYmxvY2sgJiYgYmxvY2subykge1xuICAgICAgICBpZiAob3V0cm9pbmcuaGFzKGJsb2NrKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgb3V0cm9pbmcuYWRkKGJsb2NrKTtcbiAgICAgICAgb3V0cm9zLmMucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICBvdXRyb2luZy5kZWxldGUoYmxvY2spO1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRldGFjaClcbiAgICAgICAgICAgICAgICAgICAgYmxvY2suZCgxKTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYmxvY2subyhsb2NhbCk7XG4gICAgfVxufVxuY29uc3QgbnVsbF90cmFuc2l0aW9uID0geyBkdXJhdGlvbjogMCB9O1xuZnVuY3Rpb24gY3JlYXRlX2luX3RyYW5zaXRpb24obm9kZSwgZm4sIHBhcmFtcykge1xuICAgIGxldCBjb25maWcgPSBmbihub2RlLCBwYXJhbXMpO1xuICAgIGxldCBydW5uaW5nID0gZmFsc2U7XG4gICAgbGV0IGFuaW1hdGlvbl9uYW1lO1xuICAgIGxldCB0YXNrO1xuICAgIGxldCB1aWQgPSAwO1xuICAgIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICAgIGlmIChhbmltYXRpb25fbmFtZSlcbiAgICAgICAgICAgIGRlbGV0ZV9ydWxlKG5vZGUsIGFuaW1hdGlvbl9uYW1lKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ28oKSB7XG4gICAgICAgIGNvbnN0IHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDMwMCwgZWFzaW5nID0gaWRlbnRpdHksIHRpY2sgPSBub29wLCBjc3MgfSA9IGNvbmZpZyB8fCBudWxsX3RyYW5zaXRpb247XG4gICAgICAgIGlmIChjc3MpXG4gICAgICAgICAgICBhbmltYXRpb25fbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIDAsIDEsIGR1cmF0aW9uLCBkZWxheSwgZWFzaW5nLCBjc3MsIHVpZCsrKTtcbiAgICAgICAgdGljaygwLCAxKTtcbiAgICAgICAgY29uc3Qgc3RhcnRfdGltZSA9IG5vdygpICsgZGVsYXk7XG4gICAgICAgIGNvbnN0IGVuZF90aW1lID0gc3RhcnRfdGltZSArIGR1cmF0aW9uO1xuICAgICAgICBpZiAodGFzaylcbiAgICAgICAgICAgIHRhc2suYWJvcnQoKTtcbiAgICAgICAgcnVubmluZyA9IHRydWU7XG4gICAgICAgIGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4gZGlzcGF0Y2gobm9kZSwgdHJ1ZSwgJ3N0YXJ0JykpO1xuICAgICAgICB0YXNrID0gbG9vcChub3cgPT4ge1xuICAgICAgICAgICAgaWYgKHJ1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93ID49IGVuZF90aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRpY2soMSwgMCk7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG5vZGUsIHRydWUsICdlbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobm93ID49IHN0YXJ0X3RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGVhc2luZygobm93IC0gc3RhcnRfdGltZSkgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHRpY2sodCwgMSAtIHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBydW5uaW5nO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgbGV0IHN0YXJ0ZWQgPSBmYWxzZTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdGFydCgpIHtcbiAgICAgICAgICAgIGlmIChzdGFydGVkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgZGVsZXRlX3J1bGUobm9kZSk7XG4gICAgICAgICAgICBpZiAoaXNfZnVuY3Rpb24oY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGNvbmZpZyA9IGNvbmZpZygpO1xuICAgICAgICAgICAgICAgIHdhaXQoKS50aGVuKGdvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdvKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGludmFsaWRhdGUoKSB7XG4gICAgICAgICAgICBzdGFydGVkID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVuZCgpIHtcbiAgICAgICAgICAgIGlmIChydW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICAgICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBjcmVhdGVfb3V0X3RyYW5zaXRpb24obm9kZSwgZm4sIHBhcmFtcykge1xuICAgIGxldCBjb25maWcgPSBmbihub2RlLCBwYXJhbXMpO1xuICAgIGxldCBydW5uaW5nID0gdHJ1ZTtcbiAgICBsZXQgYW5pbWF0aW9uX25hbWU7XG4gICAgY29uc3QgZ3JvdXAgPSBvdXRyb3M7XG4gICAgZ3JvdXAuciArPSAxO1xuICAgIGZ1bmN0aW9uIGdvKCkge1xuICAgICAgICBjb25zdCB7IGRlbGF5ID0gMCwgZHVyYXRpb24gPSAzMDAsIGVhc2luZyA9IGlkZW50aXR5LCB0aWNrID0gbm9vcCwgY3NzIH0gPSBjb25maWcgfHwgbnVsbF90cmFuc2l0aW9uO1xuICAgICAgICBpZiAoY3NzKVxuICAgICAgICAgICAgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCAxLCAwLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzKTtcbiAgICAgICAgY29uc3Qgc3RhcnRfdGltZSA9IG5vdygpICsgZGVsYXk7XG4gICAgICAgIGNvbnN0IGVuZF90aW1lID0gc3RhcnRfdGltZSArIGR1cmF0aW9uO1xuICAgICAgICBhZGRfcmVuZGVyX2NhbGxiYWNrKCgpID0+IGRpc3BhdGNoKG5vZGUsIGZhbHNlLCAnc3RhcnQnKSk7XG4gICAgICAgIGxvb3Aobm93ID0+IHtcbiAgICAgICAgICAgIGlmIChydW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdyA+PSBlbmRfdGltZSkge1xuICAgICAgICAgICAgICAgICAgICB0aWNrKDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChub2RlLCBmYWxzZSwgJ2VuZCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIS0tZ3JvdXAucikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB3aWxsIHJlc3VsdCBpbiBgZW5kKClgIGJlaW5nIGNhbGxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHdlIGRvbid0IG5lZWQgdG8gY2xlYW4gdXAgaGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2FsbChncm91cC5jKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChub3cgPj0gc3RhcnRfdGltZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZWFzaW5nKChub3cgLSBzdGFydF90aW1lKSAvIGR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdGljaygxIC0gdCwgdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJ1bm5pbmc7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaXNfZnVuY3Rpb24oY29uZmlnKSkge1xuICAgICAgICB3YWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25maWcgPSBjb25maWcoKTtcbiAgICAgICAgICAgIGdvKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZ28oKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZW5kKHJlc2V0KSB7XG4gICAgICAgICAgICBpZiAocmVzZXQgJiYgY29uZmlnLnRpY2spIHtcbiAgICAgICAgICAgICAgICBjb25maWcudGljaygxLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFuaW1hdGlvbl9uYW1lKVxuICAgICAgICAgICAgICAgICAgICBkZWxldGVfcnVsZShub2RlLCBhbmltYXRpb25fbmFtZSk7XG4gICAgICAgICAgICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZV9iaWRpcmVjdGlvbmFsX3RyYW5zaXRpb24obm9kZSwgZm4sIHBhcmFtcywgaW50cm8pIHtcbiAgICBsZXQgY29uZmlnID0gZm4obm9kZSwgcGFyYW1zKTtcbiAgICBsZXQgdCA9IGludHJvID8gMCA6IDE7XG4gICAgbGV0IHJ1bm5pbmdfcHJvZ3JhbSA9IG51bGw7XG4gICAgbGV0IHBlbmRpbmdfcHJvZ3JhbSA9IG51bGw7XG4gICAgbGV0IGFuaW1hdGlvbl9uYW1lID0gbnVsbDtcbiAgICBmdW5jdGlvbiBjbGVhcl9hbmltYXRpb24oKSB7XG4gICAgICAgIGlmIChhbmltYXRpb25fbmFtZSlcbiAgICAgICAgICAgIGRlbGV0ZV9ydWxlKG5vZGUsIGFuaW1hdGlvbl9uYW1lKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdChwcm9ncmFtLCBkdXJhdGlvbikge1xuICAgICAgICBjb25zdCBkID0gKHByb2dyYW0uYiAtIHQpO1xuICAgICAgICBkdXJhdGlvbiAqPSBNYXRoLmFicyhkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGE6IHQsXG4gICAgICAgICAgICBiOiBwcm9ncmFtLmIsXG4gICAgICAgICAgICBkLFxuICAgICAgICAgICAgZHVyYXRpb24sXG4gICAgICAgICAgICBzdGFydDogcHJvZ3JhbS5zdGFydCxcbiAgICAgICAgICAgIGVuZDogcHJvZ3JhbS5zdGFydCArIGR1cmF0aW9uLFxuICAgICAgICAgICAgZ3JvdXA6IHByb2dyYW0uZ3JvdXBcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ28oYikge1xuICAgICAgICBjb25zdCB7IGRlbGF5ID0gMCwgZHVyYXRpb24gPSAzMDAsIGVhc2luZyA9IGlkZW50aXR5LCB0aWNrID0gbm9vcCwgY3NzIH0gPSBjb25maWcgfHwgbnVsbF90cmFuc2l0aW9uO1xuICAgICAgICBjb25zdCBwcm9ncmFtID0ge1xuICAgICAgICAgICAgc3RhcnQ6IG5vdygpICsgZGVsYXksXG4gICAgICAgICAgICBiXG4gICAgICAgIH07XG4gICAgICAgIGlmICghYikge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSB0b2RvOiBpbXByb3ZlIHR5cGluZ3NcbiAgICAgICAgICAgIHByb2dyYW0uZ3JvdXAgPSBvdXRyb3M7XG4gICAgICAgICAgICBvdXRyb3MuciArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydW5uaW5nX3Byb2dyYW0gfHwgcGVuZGluZ19wcm9ncmFtKSB7XG4gICAgICAgICAgICBwZW5kaW5nX3Byb2dyYW0gPSBwcm9ncmFtO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBhbiBpbnRybywgYW5kIHRoZXJlJ3MgYSBkZWxheSwgd2UgbmVlZCB0byBkb1xuICAgICAgICAgICAgLy8gYW4gaW5pdGlhbCB0aWNrIGFuZC9vciBhcHBseSBDU1MgYW5pbWF0aW9uIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICBpZiAoY3NzKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJfYW5pbWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCB0LCBiLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiKVxuICAgICAgICAgICAgICAgIHRpY2soMCwgMSk7XG4gICAgICAgICAgICBydW5uaW5nX3Byb2dyYW0gPSBpbml0KHByb2dyYW0sIGR1cmF0aW9uKTtcbiAgICAgICAgICAgIGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4gZGlzcGF0Y2gobm9kZSwgYiwgJ3N0YXJ0JykpO1xuICAgICAgICAgICAgbG9vcChub3cgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nX3Byb2dyYW0gJiYgbm93ID4gcGVuZGluZ19wcm9ncmFtLnN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfcHJvZ3JhbSA9IGluaXQocGVuZGluZ19wcm9ncmFtLCBkdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdfcHJvZ3JhbSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG5vZGUsIHJ1bm5pbmdfcHJvZ3JhbS5iLCAnc3RhcnQnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfYW5pbWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25fbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIHQsIHJ1bm5pbmdfcHJvZ3JhbS5iLCBydW5uaW5nX3Byb2dyYW0uZHVyYXRpb24sIDAsIGVhc2luZywgY29uZmlnLmNzcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bm5pbmdfcHJvZ3JhbSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobm93ID49IHJ1bm5pbmdfcHJvZ3JhbS5lbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2sodCA9IHJ1bm5pbmdfcHJvZ3JhbS5iLCAxIC0gdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChub2RlLCBydW5uaW5nX3Byb2dyYW0uYiwgJ2VuZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwZW5kaW5nX3Byb2dyYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBkb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bm5pbmdfcHJvZ3JhbS5iKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludHJvIOKAlCB3ZSBjYW4gdGlkeSB1cCBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcl9hbmltYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHJvIOKAlCBuZWVkcyB0byBiZSBjb29yZGluYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIS0tcnVubmluZ19wcm9ncmFtLmdyb3VwLnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5fYWxsKHJ1bm5pbmdfcHJvZ3JhbS5ncm91cC5jKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vdyA+PSBydW5uaW5nX3Byb2dyYW0uc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBub3cgLSBydW5uaW5nX3Byb2dyYW0uc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ID0gcnVubmluZ19wcm9ncmFtLmEgKyBydW5uaW5nX3Byb2dyYW0uZCAqIGVhc2luZyhwIC8gcnVubmluZ19wcm9ncmFtLmR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2sodCwgMSAtIHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAhIShydW5uaW5nX3Byb2dyYW0gfHwgcGVuZGluZ19wcm9ncmFtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHJ1bihiKSB7XG4gICAgICAgICAgICBpZiAoaXNfZnVuY3Rpb24oY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHdhaXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBjb25maWcoKTtcbiAgICAgICAgICAgICAgICAgICAgZ28oYik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBnbyhiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZW5kKCkge1xuICAgICAgICAgICAgY2xlYXJfYW5pbWF0aW9uKCk7XG4gICAgICAgICAgICBydW5uaW5nX3Byb2dyYW0gPSBwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlX3Byb21pc2UocHJvbWlzZSwgaW5mbykge1xuICAgIGNvbnN0IHRva2VuID0gaW5mby50b2tlbiA9IHt9O1xuICAgIGZ1bmN0aW9uIHVwZGF0ZSh0eXBlLCBpbmRleCwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoaW5mby50b2tlbiAhPT0gdG9rZW4pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluZm8ucmVzb2x2ZWQgPSB2YWx1ZTtcbiAgICAgICAgbGV0IGNoaWxkX2N0eCA9IGluZm8uY3R4O1xuICAgICAgICBpZiAoa2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNoaWxkX2N0eCA9IGNoaWxkX2N0eC5zbGljZSgpO1xuICAgICAgICAgICAgY2hpbGRfY3R4W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBibG9jayA9IHR5cGUgJiYgKGluZm8uY3VycmVudCA9IHR5cGUpKGNoaWxkX2N0eCk7XG4gICAgICAgIGxldCBuZWVkc19mbHVzaCA9IGZhbHNlO1xuICAgICAgICBpZiAoaW5mby5ibG9jaykge1xuICAgICAgICAgICAgaWYgKGluZm8uYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgaW5mby5ibG9ja3MuZm9yRWFjaCgoYmxvY2ssIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IGluZGV4ICYmIGJsb2NrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cF9vdXRyb3MoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25fb3V0KGJsb2NrLCAxLCAxLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8uYmxvY2tzW2ldID09PSBibG9jaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJsb2Nrc1tpXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja19vdXRyb3MoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5mby5ibG9jay5kKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYmxvY2suYygpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbl9pbihibG9jaywgMSk7XG4gICAgICAgICAgICBibG9jay5tKGluZm8ubW91bnQoKSwgaW5mby5hbmNob3IpO1xuICAgICAgICAgICAgbmVlZHNfZmx1c2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGluZm8uYmxvY2sgPSBibG9jaztcbiAgICAgICAgaWYgKGluZm8uYmxvY2tzKVxuICAgICAgICAgICAgaW5mby5ibG9ja3NbaW5kZXhdID0gYmxvY2s7XG4gICAgICAgIGlmIChuZWVkc19mbHVzaCkge1xuICAgICAgICAgICAgZmx1c2goKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNfcHJvbWlzZShwcm9taXNlKSkge1xuICAgICAgICBjb25zdCBjdXJyZW50X2NvbXBvbmVudCA9IGdldF9jdXJyZW50X2NvbXBvbmVudCgpO1xuICAgICAgICBwcm9taXNlLnRoZW4odmFsdWUgPT4ge1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KGN1cnJlbnRfY29tcG9uZW50KTtcbiAgICAgICAgICAgIHVwZGF0ZShpbmZvLnRoZW4sIDEsIGluZm8udmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChudWxsKTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KGN1cnJlbnRfY29tcG9uZW50KTtcbiAgICAgICAgICAgIHVwZGF0ZShpbmZvLmNhdGNoLCAyLCBpbmZvLmVycm9yLCBlcnJvcik7XG4gICAgICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQobnVsbCk7XG4gICAgICAgICAgICBpZiAoIWluZm8uaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGlmIHdlIHByZXZpb3VzbHkgaGFkIGEgdGhlbi9jYXRjaCBibG9jaywgZGVzdHJveSBpdFxuICAgICAgICBpZiAoaW5mby5jdXJyZW50ICE9PSBpbmZvLnBlbmRpbmcpIHtcbiAgICAgICAgICAgIHVwZGF0ZShpbmZvLnBlbmRpbmcsIDApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmIChpbmZvLmN1cnJlbnQgIT09IGluZm8udGhlbikge1xuICAgICAgICAgICAgdXBkYXRlKGluZm8udGhlbiwgMSwgaW5mby52YWx1ZSwgcHJvbWlzZSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpbmZvLnJlc29sdmVkID0gcHJvbWlzZTtcbiAgICB9XG59XG5mdW5jdGlvbiB1cGRhdGVfYXdhaXRfYmxvY2tfYnJhbmNoKGluZm8sIGN0eCwgZGlydHkpIHtcbiAgICBjb25zdCBjaGlsZF9jdHggPSBjdHguc2xpY2UoKTtcbiAgICBjb25zdCB7IHJlc29sdmVkIH0gPSBpbmZvO1xuICAgIGlmIChpbmZvLmN1cnJlbnQgPT09IGluZm8udGhlbikge1xuICAgICAgICBjaGlsZF9jdHhbaW5mby52YWx1ZV0gPSByZXNvbHZlZDtcbiAgICB9XG4gICAgaWYgKGluZm8uY3VycmVudCA9PT0gaW5mby5jYXRjaCkge1xuICAgICAgICBjaGlsZF9jdHhbaW5mby5lcnJvcl0gPSByZXNvbHZlZDtcbiAgICB9XG4gICAgaW5mby5ibG9jay5wKGNoaWxkX2N0eCwgZGlydHkpO1xufVxuXG5jb25zdCBnbG9iYWxzID0gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgPyB3aW5kb3dcbiAgICA6IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IGdsb2JhbFRoaXNcbiAgICAgICAgOiBnbG9iYWwpO1xuXG5mdW5jdGlvbiBkZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApIHtcbiAgICBibG9jay5kKDEpO1xuICAgIGxvb2t1cC5kZWxldGUoYmxvY2sua2V5KTtcbn1cbmZ1bmN0aW9uIG91dHJvX2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApIHtcbiAgICB0cmFuc2l0aW9uX291dChibG9jaywgMSwgMSwgKCkgPT4ge1xuICAgICAgICBsb29rdXAuZGVsZXRlKGJsb2NrLmtleSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBmaXhfYW5kX2Rlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCkge1xuICAgIGJsb2NrLmYoKTtcbiAgICBkZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApO1xufVxuZnVuY3Rpb24gZml4X2FuZF9vdXRyb19hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG4gICAgYmxvY2suZigpO1xuICAgIG91dHJvX2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApO1xufVxuZnVuY3Rpb24gdXBkYXRlX2tleWVkX2VhY2gob2xkX2Jsb2NrcywgZGlydHksIGdldF9rZXksIGR5bmFtaWMsIGN0eCwgbGlzdCwgbG9va3VwLCBub2RlLCBkZXN0cm95LCBjcmVhdGVfZWFjaF9ibG9jaywgbmV4dCwgZ2V0X2NvbnRleHQpIHtcbiAgICBsZXQgbyA9IG9sZF9ibG9ja3MubGVuZ3RoO1xuICAgIGxldCBuID0gbGlzdC5sZW5ndGg7XG4gICAgbGV0IGkgPSBvO1xuICAgIGNvbnN0IG9sZF9pbmRleGVzID0ge307XG4gICAgd2hpbGUgKGktLSlcbiAgICAgICAgb2xkX2luZGV4ZXNbb2xkX2Jsb2Nrc1tpXS5rZXldID0gaTtcbiAgICBjb25zdCBuZXdfYmxvY2tzID0gW107XG4gICAgY29uc3QgbmV3X2xvb2t1cCA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBkZWx0YXMgPSBuZXcgTWFwKCk7XG4gICAgaSA9IG47XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICBjb25zdCBjaGlsZF9jdHggPSBnZXRfY29udGV4dChjdHgsIGxpc3QsIGkpO1xuICAgICAgICBjb25zdCBrZXkgPSBnZXRfa2V5KGNoaWxkX2N0eCk7XG4gICAgICAgIGxldCBibG9jayA9IGxvb2t1cC5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCFibG9jaykge1xuICAgICAgICAgICAgYmxvY2sgPSBjcmVhdGVfZWFjaF9ibG9jayhrZXksIGNoaWxkX2N0eCk7XG4gICAgICAgICAgICBibG9jay5jKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZHluYW1pYykge1xuICAgICAgICAgICAgYmxvY2sucChjaGlsZF9jdHgsIGRpcnR5KTtcbiAgICAgICAgfVxuICAgICAgICBuZXdfbG9va3VwLnNldChrZXksIG5ld19ibG9ja3NbaV0gPSBibG9jayk7XG4gICAgICAgIGlmIChrZXkgaW4gb2xkX2luZGV4ZXMpXG4gICAgICAgICAgICBkZWx0YXMuc2V0KGtleSwgTWF0aC5hYnMoaSAtIG9sZF9pbmRleGVzW2tleV0pKTtcbiAgICB9XG4gICAgY29uc3Qgd2lsbF9tb3ZlID0gbmV3IFNldCgpO1xuICAgIGNvbnN0IGRpZF9tb3ZlID0gbmV3IFNldCgpO1xuICAgIGZ1bmN0aW9uIGluc2VydChibG9jaykge1xuICAgICAgICB0cmFuc2l0aW9uX2luKGJsb2NrLCAxKTtcbiAgICAgICAgYmxvY2subShub2RlLCBuZXh0KTtcbiAgICAgICAgbG9va3VwLnNldChibG9jay5rZXksIGJsb2NrKTtcbiAgICAgICAgbmV4dCA9IGJsb2NrLmZpcnN0O1xuICAgICAgICBuLS07XG4gICAgfVxuICAgIHdoaWxlIChvICYmIG4pIHtcbiAgICAgICAgY29uc3QgbmV3X2Jsb2NrID0gbmV3X2Jsb2Nrc1tuIC0gMV07XG4gICAgICAgIGNvbnN0IG9sZF9ibG9jayA9IG9sZF9ibG9ja3NbbyAtIDFdO1xuICAgICAgICBjb25zdCBuZXdfa2V5ID0gbmV3X2Jsb2NrLmtleTtcbiAgICAgICAgY29uc3Qgb2xkX2tleSA9IG9sZF9ibG9jay5rZXk7XG4gICAgICAgIGlmIChuZXdfYmxvY2sgPT09IG9sZF9ibG9jaykge1xuICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgbmV4dCA9IG5ld19ibG9jay5maXJzdDtcbiAgICAgICAgICAgIG8tLTtcbiAgICAgICAgICAgIG4tLTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghbmV3X2xvb2t1cC5oYXMob2xkX2tleSkpIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSBvbGQgYmxvY2tcbiAgICAgICAgICAgIGRlc3Ryb3kob2xkX2Jsb2NrLCBsb29rdXApO1xuICAgICAgICAgICAgby0tO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFsb29rdXAuaGFzKG5ld19rZXkpIHx8IHdpbGxfbW92ZS5oYXMobmV3X2tleSkpIHtcbiAgICAgICAgICAgIGluc2VydChuZXdfYmxvY2spO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRpZF9tb3ZlLmhhcyhvbGRfa2V5KSkge1xuICAgICAgICAgICAgby0tO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRlbHRhcy5nZXQobmV3X2tleSkgPiBkZWx0YXMuZ2V0KG9sZF9rZXkpKSB7XG4gICAgICAgICAgICBkaWRfbW92ZS5hZGQobmV3X2tleSk7XG4gICAgICAgICAgICBpbnNlcnQobmV3X2Jsb2NrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHdpbGxfbW92ZS5hZGQob2xkX2tleSk7XG4gICAgICAgICAgICBvLS07XG4gICAgICAgIH1cbiAgICB9XG4gICAgd2hpbGUgKG8tLSkge1xuICAgICAgICBjb25zdCBvbGRfYmxvY2sgPSBvbGRfYmxvY2tzW29dO1xuICAgICAgICBpZiAoIW5ld19sb29rdXAuaGFzKG9sZF9ibG9jay5rZXkpKVxuICAgICAgICAgICAgZGVzdHJveShvbGRfYmxvY2ssIGxvb2t1cCk7XG4gICAgfVxuICAgIHdoaWxlIChuKVxuICAgICAgICBpbnNlcnQobmV3X2Jsb2Nrc1tuIC0gMV0pO1xuICAgIHJldHVybiBuZXdfYmxvY2tzO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVfZWFjaF9rZXlzKGN0eCwgbGlzdCwgZ2V0X2NvbnRleHQsIGdldF9rZXkpIHtcbiAgICBjb25zdCBrZXlzID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSBnZXRfa2V5KGdldF9jb250ZXh0KGN0eCwgbGlzdCwgaSkpO1xuICAgICAgICBpZiAoa2V5cy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgaGF2ZSBkdXBsaWNhdGUga2V5cyBpbiBhIGtleWVkIGVhY2gnKTtcbiAgICAgICAgfVxuICAgICAgICBrZXlzLmFkZChrZXkpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0X3NwcmVhZF91cGRhdGUobGV2ZWxzLCB1cGRhdGVzKSB7XG4gICAgY29uc3QgdXBkYXRlID0ge307XG4gICAgY29uc3QgdG9fbnVsbF9vdXQgPSB7fTtcbiAgICBjb25zdCBhY2NvdW50ZWRfZm9yID0geyAkJHNjb3BlOiAxIH07XG4gICAgbGV0IGkgPSBsZXZlbHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgbyA9IGxldmVsc1tpXTtcbiAgICAgICAgY29uc3QgbiA9IHVwZGF0ZXNbaV07XG4gICAgICAgIGlmIChuKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEoa2V5IGluIG4pKVxuICAgICAgICAgICAgICAgICAgICB0b19udWxsX291dFtrZXldID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG4pIHtcbiAgICAgICAgICAgICAgICBpZiAoIWFjY291bnRlZF9mb3Jba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVba2V5XSA9IG5ba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgYWNjb3VudGVkX2ZvcltrZXldID0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXZlbHNbaV0gPSBuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbykge1xuICAgICAgICAgICAgICAgIGFjY291bnRlZF9mb3Jba2V5XSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdG9fbnVsbF9vdXQpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIHVwZGF0ZSkpXG4gICAgICAgICAgICB1cGRhdGVba2V5XSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVwZGF0ZTtcbn1cbmZ1bmN0aW9uIGdldF9zcHJlYWRfb2JqZWN0KHNwcmVhZF9wcm9wcykge1xuICAgIHJldHVybiB0eXBlb2Ygc3ByZWFkX3Byb3BzID09PSAnb2JqZWN0JyAmJiBzcHJlYWRfcHJvcHMgIT09IG51bGwgPyBzcHJlYWRfcHJvcHMgOiB7fTtcbn1cblxuLy8gc291cmNlOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmRpY2VzLmh0bWxcbmNvbnN0IGJvb2xlYW5fYXR0cmlidXRlcyA9IG5ldyBTZXQoW1xuICAgICdhbGxvd2Z1bGxzY3JlZW4nLFxuICAgICdhbGxvd3BheW1lbnRyZXF1ZXN0JyxcbiAgICAnYXN5bmMnLFxuICAgICdhdXRvZm9jdXMnLFxuICAgICdhdXRvcGxheScsXG4gICAgJ2NoZWNrZWQnLFxuICAgICdjb250cm9scycsXG4gICAgJ2RlZmF1bHQnLFxuICAgICdkZWZlcicsXG4gICAgJ2Rpc2FibGVkJyxcbiAgICAnZm9ybW5vdmFsaWRhdGUnLFxuICAgICdoaWRkZW4nLFxuICAgICdpc21hcCcsXG4gICAgJ2xvb3AnLFxuICAgICdtdWx0aXBsZScsXG4gICAgJ211dGVkJyxcbiAgICAnbm9tb2R1bGUnLFxuICAgICdub3ZhbGlkYXRlJyxcbiAgICAnb3BlbicsXG4gICAgJ3BsYXlzaW5saW5lJyxcbiAgICAncmVhZG9ubHknLFxuICAgICdyZXF1aXJlZCcsXG4gICAgJ3JldmVyc2VkJyxcbiAgICAnc2VsZWN0ZWQnXG5dKTtcblxuY29uc3QgaW52YWxpZF9hdHRyaWJ1dGVfbmFtZV9jaGFyYWN0ZXIgPSAvW1xccydcIj4vPVxcdXtGREQwfS1cXHV7RkRFRn1cXHV7RkZGRX1cXHV7RkZGRn1cXHV7MUZGRkV9XFx1ezFGRkZGfVxcdXsyRkZGRX1cXHV7MkZGRkZ9XFx1ezNGRkZFfVxcdXszRkZGRn1cXHV7NEZGRkV9XFx1ezRGRkZGfVxcdXs1RkZGRX1cXHV7NUZGRkZ9XFx1ezZGRkZFfVxcdXs2RkZGRn1cXHV7N0ZGRkV9XFx1ezdGRkZGfVxcdXs4RkZGRX1cXHV7OEZGRkZ9XFx1ezlGRkZFfVxcdXs5RkZGRn1cXHV7QUZGRkV9XFx1e0FGRkZGfVxcdXtCRkZGRX1cXHV7QkZGRkZ9XFx1e0NGRkZFfVxcdXtDRkZGRn1cXHV7REZGRkV9XFx1e0RGRkZGfVxcdXtFRkZGRX1cXHV7RUZGRkZ9XFx1e0ZGRkZFfVxcdXtGRkZGRn1cXHV7MTBGRkZFfVxcdXsxMEZGRkZ9XS91O1xuLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjYXR0cmlidXRlcy0yXG4vLyBodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jbm9uY2hhcmFjdGVyXG5mdW5jdGlvbiBzcHJlYWQoYXJncywgY2xhc3Nlc190b19hZGQpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uYXJncyk7XG4gICAgaWYgKGNsYXNzZXNfdG9fYWRkKSB7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzLmNsYXNzID09IG51bGwpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMuY2xhc3MgPSBjbGFzc2VzX3RvX2FkZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMuY2xhc3MgKz0gJyAnICsgY2xhc3Nlc190b19hZGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgIGlmIChpbnZhbGlkX2F0dHJpYnV0ZV9uYW1lX2NoYXJhY3Rlci50ZXN0KG5hbWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJpYnV0ZXNbbmFtZV07XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSlcbiAgICAgICAgICAgIHN0ciArPSAnICcgKyBuYW1lO1xuICAgICAgICBlbHNlIGlmIChib29sZWFuX2F0dHJpYnV0ZXMuaGFzKG5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSlcbiAgICAgICAgICAgICAgICBzdHIgKz0gJyAnICsgbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBzdHIgKz0gYCAke25hbWV9PVwiJHt2YWx1ZX1cImA7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc3RyO1xufVxuY29uc3QgZXNjYXBlZCA9IHtcbiAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICBcIidcIjogJyYjMzk7JyxcbiAgICAnJic6ICcmYW1wOycsXG4gICAgJzwnOiAnJmx0OycsXG4gICAgJz4nOiAnJmd0Oydcbn07XG5mdW5jdGlvbiBlc2NhcGUoaHRtbCkge1xuICAgIHJldHVybiBTdHJpbmcoaHRtbCkucmVwbGFjZSgvW1wiJyY8Pl0vZywgbWF0Y2ggPT4gZXNjYXBlZFttYXRjaF0pO1xufVxuZnVuY3Rpb24gZXNjYXBlX2F0dHJpYnV0ZV92YWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gZXNjYXBlKHZhbHVlKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZXNjYXBlX29iamVjdChvYmopIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBlc2NhcGVfYXR0cmlidXRlX3ZhbHVlKG9ialtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGVhY2goaXRlbXMsIGZuKSB7XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgc3RyICs9IGZuKGl0ZW1zW2ldLCBpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn1cbmNvbnN0IG1pc3NpbmdfY29tcG9uZW50ID0ge1xuICAgICQkcmVuZGVyOiAoKSA9PiAnJ1xufTtcbmZ1bmN0aW9uIHZhbGlkYXRlX2NvbXBvbmVudChjb21wb25lbnQsIG5hbWUpIHtcbiAgICBpZiAoIWNvbXBvbmVudCB8fCAhY29tcG9uZW50LiQkcmVuZGVyKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnc3ZlbHRlOmNvbXBvbmVudCcpXG4gICAgICAgICAgICBuYW1lICs9ICcgdGhpcz17Li4ufSc7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgPCR7bmFtZX0+IGlzIG5vdCBhIHZhbGlkIFNTUiBjb21wb25lbnQuIFlvdSBtYXkgbmVlZCB0byByZXZpZXcgeW91ciBidWlsZCBjb25maWcgdG8gZW5zdXJlIHRoYXQgZGVwZW5kZW5jaWVzIGFyZSBjb21waWxlZCwgcmF0aGVyIHRoYW4gaW1wb3J0ZWQgYXMgcHJlLWNvbXBpbGVkIG1vZHVsZXNgKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudDtcbn1cbmZ1bmN0aW9uIGRlYnVnKGZpbGUsIGxpbmUsIGNvbHVtbiwgdmFsdWVzKSB7XG4gICAgY29uc29sZS5sb2coYHtAZGVidWd9ICR7ZmlsZSA/IGZpbGUgKyAnICcgOiAnJ30oJHtsaW5lfToke2NvbHVtbn0pYCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUubG9nKHZhbHVlcyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgIHJldHVybiAnJztcbn1cbmxldCBvbl9kZXN0cm95O1xuZnVuY3Rpb24gY3JlYXRlX3Nzcl9jb21wb25lbnQoZm4pIHtcbiAgICBmdW5jdGlvbiAkJHJlbmRlcihyZXN1bHQsIHByb3BzLCBiaW5kaW5ncywgc2xvdHMsIGNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50X2NvbXBvbmVudCA9IGN1cnJlbnRfY29tcG9uZW50O1xuICAgICAgICBjb25zdCAkJCA9IHtcbiAgICAgICAgICAgIG9uX2Rlc3Ryb3ksXG4gICAgICAgICAgICBjb250ZXh0OiBuZXcgTWFwKGNvbnRleHQgfHwgKHBhcmVudF9jb21wb25lbnQgPyBwYXJlbnRfY29tcG9uZW50LiQkLmNvbnRleHQgOiBbXSkpLFxuICAgICAgICAgICAgLy8gdGhlc2Ugd2lsbCBiZSBpbW1lZGlhdGVseSBkaXNjYXJkZWRcbiAgICAgICAgICAgIG9uX21vdW50OiBbXSxcbiAgICAgICAgICAgIGJlZm9yZV91cGRhdGU6IFtdLFxuICAgICAgICAgICAgYWZ0ZXJfdXBkYXRlOiBbXSxcbiAgICAgICAgICAgIGNhbGxiYWNrczogYmxhbmtfb2JqZWN0KClcbiAgICAgICAgfTtcbiAgICAgICAgc2V0X2N1cnJlbnRfY29tcG9uZW50KHsgJCQgfSk7XG4gICAgICAgIGNvbnN0IGh0bWwgPSBmbihyZXN1bHQsIHByb3BzLCBiaW5kaW5ncywgc2xvdHMpO1xuICAgICAgICBzZXRfY3VycmVudF9jb21wb25lbnQocGFyZW50X2NvbXBvbmVudCk7XG4gICAgICAgIHJldHVybiBodG1sO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICByZW5kZXI6IChwcm9wcyA9IHt9LCB7ICQkc2xvdHMgPSB7fSwgY29udGV4dCA9IG5ldyBNYXAoKSB9ID0ge30pID0+IHtcbiAgICAgICAgICAgIG9uX2Rlc3Ryb3kgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHsgdGl0bGU6ICcnLCBoZWFkOiAnJywgY3NzOiBuZXcgU2V0KCkgfTtcbiAgICAgICAgICAgIGNvbnN0IGh0bWwgPSAkJHJlbmRlcihyZXN1bHQsIHByb3BzLCB7fSwgJCRzbG90cywgY29udGV4dCk7XG4gICAgICAgICAgICBydW5fYWxsKG9uX2Rlc3Ryb3kpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBodG1sLFxuICAgICAgICAgICAgICAgIGNzczoge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBBcnJheS5mcm9tKHJlc3VsdC5jc3MpLm1hcChjc3MgPT4gY3NzLmNvZGUpLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgICAgICAgICBtYXA6IG51bGwgLy8gVE9ET1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaGVhZDogcmVzdWx0LnRpdGxlICsgcmVzdWx0LmhlYWRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgICQkcmVuZGVyXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGFkZF9hdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCAoYm9vbGVhbiAmJiAhdmFsdWUpKVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGAgJHtuYW1lfSR7dmFsdWUgPT09IHRydWUgJiYgYm9vbGVhbl9hdHRyaWJ1dGVzLmhhcyhuYW1lKSA/ICcnIDogYD0ke3R5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBKU09OLnN0cmluZ2lmeShlc2NhcGUodmFsdWUpKSA6IGBcIiR7dmFsdWV9XCJgfWB9YDtcbn1cbmZ1bmN0aW9uIGFkZF9jbGFzc2VzKGNsYXNzZXMpIHtcbiAgICByZXR1cm4gY2xhc3NlcyA/IGAgY2xhc3M9XCIke2NsYXNzZXN9XCJgIDogJyc7XG59XG5cbmZ1bmN0aW9uIGJpbmQoY29tcG9uZW50LCBuYW1lLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IGluZGV4ID0gY29tcG9uZW50LiQkLnByb3BzW25hbWVdO1xuICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbXBvbmVudC4kJC5ib3VuZFtpbmRleF0gPSBjYWxsYmFjaztcbiAgICAgICAgY2FsbGJhY2soY29tcG9uZW50LiQkLmN0eFtpbmRleF0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZV9jb21wb25lbnQoYmxvY2spIHtcbiAgICBibG9jayAmJiBibG9jay5jKCk7XG59XG5mdW5jdGlvbiBjbGFpbV9jb21wb25lbnQoYmxvY2ssIHBhcmVudF9ub2Rlcykge1xuICAgIGJsb2NrICYmIGJsb2NrLmwocGFyZW50X25vZGVzKTtcbn1cbmZ1bmN0aW9uIG1vdW50X2NvbXBvbmVudChjb21wb25lbnQsIHRhcmdldCwgYW5jaG9yLCBjdXN0b21FbGVtZW50KSB7XG4gICAgY29uc3QgeyBmcmFnbWVudCwgb25fbW91bnQsIG9uX2Rlc3Ryb3ksIGFmdGVyX3VwZGF0ZSB9ID0gY29tcG9uZW50LiQkO1xuICAgIGZyYWdtZW50ICYmIGZyYWdtZW50Lm0odGFyZ2V0LCBhbmNob3IpO1xuICAgIGlmICghY3VzdG9tRWxlbWVudCkge1xuICAgICAgICAvLyBvbk1vdW50IGhhcHBlbnMgYmVmb3JlIHRoZSBpbml0aWFsIGFmdGVyVXBkYXRlXG4gICAgICAgIGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3X29uX2Rlc3Ryb3kgPSBvbl9tb3VudC5tYXAocnVuKS5maWx0ZXIoaXNfZnVuY3Rpb24pO1xuICAgICAgICAgICAgaWYgKG9uX2Rlc3Ryb3kpIHtcbiAgICAgICAgICAgICAgICBvbl9kZXN0cm95LnB1c2goLi4ubmV3X29uX2Rlc3Ryb3kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRWRnZSBjYXNlIC0gY29tcG9uZW50IHdhcyBkZXN0cm95ZWQgaW1tZWRpYXRlbHksXG4gICAgICAgICAgICAgICAgLy8gbW9zdCBsaWtlbHkgYXMgYSByZXN1bHQgb2YgYSBiaW5kaW5nIGluaXRpYWxpc2luZ1xuICAgICAgICAgICAgICAgIHJ1bl9hbGwobmV3X29uX2Rlc3Ryb3kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcG9uZW50LiQkLm9uX21vdW50ID0gW107XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhZnRlcl91cGRhdGUuZm9yRWFjaChhZGRfcmVuZGVyX2NhbGxiYWNrKTtcbn1cbmZ1bmN0aW9uIGRlc3Ryb3lfY29tcG9uZW50KGNvbXBvbmVudCwgZGV0YWNoaW5nKSB7XG4gICAgY29uc3QgJCQgPSBjb21wb25lbnQuJCQ7XG4gICAgaWYgKCQkLmZyYWdtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHJ1bl9hbGwoJCQub25fZGVzdHJveSk7XG4gICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LmQoZGV0YWNoaW5nKTtcbiAgICAgICAgLy8gVE9ETyBudWxsIG91dCBvdGhlciByZWZzLCBpbmNsdWRpbmcgY29tcG9uZW50LiQkIChidXQgbmVlZCB0b1xuICAgICAgICAvLyBwcmVzZXJ2ZSBmaW5hbCBzdGF0ZT8pXG4gICAgICAgICQkLm9uX2Rlc3Ryb3kgPSAkJC5mcmFnbWVudCA9IG51bGw7XG4gICAgICAgICQkLmN0eCA9IFtdO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1ha2VfZGlydHkoY29tcG9uZW50LCBpKSB7XG4gICAgaWYgKGNvbXBvbmVudC4kJC5kaXJ0eVswXSA9PT0gLTEpIHtcbiAgICAgICAgZGlydHlfY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgIHNjaGVkdWxlX3VwZGF0ZSgpO1xuICAgICAgICBjb21wb25lbnQuJCQuZGlydHkuZmlsbCgwKTtcbiAgICB9XG4gICAgY29tcG9uZW50LiQkLmRpcnR5WyhpIC8gMzEpIHwgMF0gfD0gKDEgPDwgKGkgJSAzMSkpO1xufVxuZnVuY3Rpb24gaW5pdChjb21wb25lbnQsIG9wdGlvbnMsIGluc3RhbmNlLCBjcmVhdGVfZnJhZ21lbnQsIG5vdF9lcXVhbCwgcHJvcHMsIGFwcGVuZF9zdHlsZXMsIGRpcnR5ID0gWy0xXSkge1xuICAgIGNvbnN0IHBhcmVudF9jb21wb25lbnQgPSBjdXJyZW50X2NvbXBvbmVudDtcbiAgICBzZXRfY3VycmVudF9jb21wb25lbnQoY29tcG9uZW50KTtcbiAgICBjb25zdCAkJCA9IGNvbXBvbmVudC4kJCA9IHtcbiAgICAgICAgZnJhZ21lbnQ6IG51bGwsXG4gICAgICAgIGN0eDogbnVsbCxcbiAgICAgICAgLy8gc3RhdGVcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIHVwZGF0ZTogbm9vcCxcbiAgICAgICAgbm90X2VxdWFsLFxuICAgICAgICBib3VuZDogYmxhbmtfb2JqZWN0KCksXG4gICAgICAgIC8vIGxpZmVjeWNsZVxuICAgICAgICBvbl9tb3VudDogW10sXG4gICAgICAgIG9uX2Rlc3Ryb3k6IFtdLFxuICAgICAgICBvbl9kaXNjb25uZWN0OiBbXSxcbiAgICAgICAgYmVmb3JlX3VwZGF0ZTogW10sXG4gICAgICAgIGFmdGVyX3VwZGF0ZTogW10sXG4gICAgICAgIGNvbnRleHQ6IG5ldyBNYXAob3B0aW9ucy5jb250ZXh0IHx8IChwYXJlbnRfY29tcG9uZW50ID8gcGFyZW50X2NvbXBvbmVudC4kJC5jb250ZXh0IDogW10pKSxcbiAgICAgICAgLy8gZXZlcnl0aGluZyBlbHNlXG4gICAgICAgIGNhbGxiYWNrczogYmxhbmtfb2JqZWN0KCksXG4gICAgICAgIGRpcnR5LFxuICAgICAgICBza2lwX2JvdW5kOiBmYWxzZSxcbiAgICAgICAgcm9vdDogb3B0aW9ucy50YXJnZXQgfHwgcGFyZW50X2NvbXBvbmVudC4kJC5yb290XG4gICAgfTtcbiAgICBhcHBlbmRfc3R5bGVzICYmIGFwcGVuZF9zdHlsZXMoJCQucm9vdCk7XG4gICAgbGV0IHJlYWR5ID0gZmFsc2U7XG4gICAgJCQuY3R4ID0gaW5zdGFuY2VcbiAgICAgICAgPyBpbnN0YW5jZShjb21wb25lbnQsIG9wdGlvbnMucHJvcHMgfHwge30sIChpLCByZXQsIC4uLnJlc3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmVzdC5sZW5ndGggPyByZXN0WzBdIDogcmV0O1xuICAgICAgICAgICAgaWYgKCQkLmN0eCAmJiBub3RfZXF1YWwoJCQuY3R4W2ldLCAkJC5jdHhbaV0gPSB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoISQkLnNraXBfYm91bmQgJiYgJCQuYm91bmRbaV0pXG4gICAgICAgICAgICAgICAgICAgICQkLmJvdW5kW2ldKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAocmVhZHkpXG4gICAgICAgICAgICAgICAgICAgIG1ha2VfZGlydHkoY29tcG9uZW50LCBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH0pXG4gICAgICAgIDogW107XG4gICAgJCQudXBkYXRlKCk7XG4gICAgcmVhZHkgPSB0cnVlO1xuICAgIHJ1bl9hbGwoJCQuYmVmb3JlX3VwZGF0ZSk7XG4gICAgLy8gYGZhbHNlYCBhcyBhIHNwZWNpYWwgY2FzZSBvZiBubyBET00gY29tcG9uZW50XG4gICAgJCQuZnJhZ21lbnQgPSBjcmVhdGVfZnJhZ21lbnQgPyBjcmVhdGVfZnJhZ21lbnQoJCQuY3R4KSA6IGZhbHNlO1xuICAgIGlmIChvcHRpb25zLnRhcmdldCkge1xuICAgICAgICBpZiAob3B0aW9ucy5oeWRyYXRlKSB7XG4gICAgICAgICAgICBzdGFydF9oeWRyYXRpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gY2hpbGRyZW4ob3B0aW9ucy50YXJnZXQpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50Lmwobm9kZXMpO1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaChkZXRhY2gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LmMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5pbnRybylcbiAgICAgICAgICAgIHRyYW5zaXRpb25faW4oY29tcG9uZW50LiQkLmZyYWdtZW50KTtcbiAgICAgICAgbW91bnRfY29tcG9uZW50KGNvbXBvbmVudCwgb3B0aW9ucy50YXJnZXQsIG9wdGlvbnMuYW5jaG9yLCBvcHRpb25zLmN1c3RvbUVsZW1lbnQpO1xuICAgICAgICBlbmRfaHlkcmF0aW5nKCk7XG4gICAgICAgIGZsdXNoKCk7XG4gICAgfVxuICAgIHNldF9jdXJyZW50X2NvbXBvbmVudChwYXJlbnRfY29tcG9uZW50KTtcbn1cbmxldCBTdmVsdGVFbGVtZW50O1xuaWYgKHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIFN2ZWx0ZUVsZW1lbnQgPSBjbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICBzdXBlcigpO1xuICAgICAgICAgICAgdGhpcy5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICAgICAgICBjb25zdCB7IG9uX21vdW50IH0gPSB0aGlzLiQkO1xuICAgICAgICAgICAgdGhpcy4kJC5vbl9kaXNjb25uZWN0ID0gb25fbW91bnQubWFwKHJ1bikuZmlsdGVyKGlzX2Z1bmN0aW9uKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgdG9kbzogaW1wcm92ZSB0eXBpbmdzXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLiQkLnNsb3R0ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHRvZG86IGltcHJvdmUgdHlwaW5nc1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodGhpcy4kJC5zbG90dGVkW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhhdHRyLCBfb2xkVmFsdWUsIG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzW2F0dHJdID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICAgICAgICBydW5fYWxsKHRoaXMuJCQub25fZGlzY29ubmVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgJGRlc3Ryb3koKSB7XG4gICAgICAgICAgICBkZXN0cm95X2NvbXBvbmVudCh0aGlzLCAxKTtcbiAgICAgICAgICAgIHRoaXMuJGRlc3Ryb3kgPSBub29wO1xuICAgICAgICB9XG4gICAgICAgICRvbih0eXBlLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgLy8gVE9ETyBzaG91bGQgdGhpcyBkZWxlZ2F0ZSB0byBhZGRFdmVudExpc3RlbmVyP1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2tzID0gKHRoaXMuJCQuY2FsbGJhY2tzW3R5cGVdIHx8ICh0aGlzLiQkLmNhbGxiYWNrc1t0eXBlXSA9IFtdKSk7XG4gICAgICAgICAgICBjYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gY2FsbGJhY2tzLmluZGV4T2YoY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAkc2V0KCQkcHJvcHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiQkc2V0ICYmICFpc19lbXB0eSgkJHByb3BzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy4kJHNldCgkJHByb3BzKTtcbiAgICAgICAgICAgICAgICB0aGlzLiQkLnNraXBfYm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFN2ZWx0ZSBjb21wb25lbnRzLiBVc2VkIHdoZW4gZGV2PWZhbHNlLlxuICovXG5jbGFzcyBTdmVsdGVDb21wb25lbnQge1xuICAgICRkZXN0cm95KCkge1xuICAgICAgICBkZXN0cm95X2NvbXBvbmVudCh0aGlzLCAxKTtcbiAgICAgICAgdGhpcy4kZGVzdHJveSA9IG5vb3A7XG4gICAgfVxuICAgICRvbih0eXBlLCBjYWxsYmFjaykge1xuICAgICAgICBjb25zdCBjYWxsYmFja3MgPSAodGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gfHwgKHRoaXMuJCQuY2FsbGJhY2tzW3R5cGVdID0gW10pKTtcbiAgICAgICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja3MuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAkc2V0KCQkcHJvcHMpIHtcbiAgICAgICAgaWYgKHRoaXMuJCRzZXQgJiYgIWlzX2VtcHR5KCQkcHJvcHMpKSB7XG4gICAgICAgICAgICB0aGlzLiQkLnNraXBfYm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy4kJHNldCgkJHByb3BzKTtcbiAgICAgICAgICAgIHRoaXMuJCQuc2tpcF9ib3VuZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkaXNwYXRjaF9kZXYodHlwZSwgZGV0YWlsKSB7XG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21fZXZlbnQodHlwZSwgT2JqZWN0LmFzc2lnbih7IHZlcnNpb246ICczLjQ1LjAnIH0sIGRldGFpbCksIHRydWUpKTtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9kZXYodGFyZ2V0LCBub2RlKSB7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01JbnNlcnQnLCB7IHRhcmdldCwgbm9kZSB9KTtcbiAgICBhcHBlbmQodGFyZ2V0LCBub2RlKTtcbn1cbmZ1bmN0aW9uIGFwcGVuZF9oeWRyYXRpb25fZGV2KHRhcmdldCwgbm9kZSkge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NSW5zZXJ0JywgeyB0YXJnZXQsIG5vZGUgfSk7XG4gICAgYXBwZW5kX2h5ZHJhdGlvbih0YXJnZXQsIG5vZGUpO1xufVxuZnVuY3Rpb24gaW5zZXJ0X2Rldih0YXJnZXQsIG5vZGUsIGFuY2hvcikge1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NSW5zZXJ0JywgeyB0YXJnZXQsIG5vZGUsIGFuY2hvciB9KTtcbiAgICBpbnNlcnQodGFyZ2V0LCBub2RlLCBhbmNob3IpO1xufVxuZnVuY3Rpb24gaW5zZXJ0X2h5ZHJhdGlvbl9kZXYodGFyZ2V0LCBub2RlLCBhbmNob3IpIHtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTUluc2VydCcsIHsgdGFyZ2V0LCBub2RlLCBhbmNob3IgfSk7XG4gICAgaW5zZXJ0X2h5ZHJhdGlvbih0YXJnZXQsIG5vZGUsIGFuY2hvcik7XG59XG5mdW5jdGlvbiBkZXRhY2hfZGV2KG5vZGUpIHtcbiAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVJlbW92ZScsIHsgbm9kZSB9KTtcbiAgICBkZXRhY2gobm9kZSk7XG59XG5mdW5jdGlvbiBkZXRhY2hfYmV0d2Vlbl9kZXYoYmVmb3JlLCBhZnRlcikge1xuICAgIHdoaWxlIChiZWZvcmUubmV4dFNpYmxpbmcgJiYgYmVmb3JlLm5leHRTaWJsaW5nICE9PSBhZnRlcikge1xuICAgICAgICBkZXRhY2hfZGV2KGJlZm9yZS5uZXh0U2libGluZyk7XG4gICAgfVxufVxuZnVuY3Rpb24gZGV0YWNoX2JlZm9yZV9kZXYoYWZ0ZXIpIHtcbiAgICB3aGlsZSAoYWZ0ZXIucHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgIGRldGFjaF9kZXYoYWZ0ZXIucHJldmlvdXNTaWJsaW5nKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZXRhY2hfYWZ0ZXJfZGV2KGJlZm9yZSkge1xuICAgIHdoaWxlIChiZWZvcmUubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgZGV0YWNoX2RldihiZWZvcmUubmV4dFNpYmxpbmcpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxpc3Rlbl9kZXYobm9kZSwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMsIGhhc19wcmV2ZW50X2RlZmF1bHQsIGhhc19zdG9wX3Byb3BhZ2F0aW9uKSB7XG4gICAgY29uc3QgbW9kaWZpZXJzID0gb3B0aW9ucyA9PT0gdHJ1ZSA/IFsnY2FwdHVyZSddIDogb3B0aW9ucyA/IEFycmF5LmZyb20oT2JqZWN0LmtleXMob3B0aW9ucykpIDogW107XG4gICAgaWYgKGhhc19wcmV2ZW50X2RlZmF1bHQpXG4gICAgICAgIG1vZGlmaWVycy5wdXNoKCdwcmV2ZW50RGVmYXVsdCcpO1xuICAgIGlmIChoYXNfc3RvcF9wcm9wYWdhdGlvbilcbiAgICAgICAgbW9kaWZpZXJzLnB1c2goJ3N0b3BQcm9wYWdhdGlvbicpO1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NQWRkRXZlbnRMaXN0ZW5lcicsIHsgbm9kZSwgZXZlbnQsIGhhbmRsZXIsIG1vZGlmaWVycyB9KTtcbiAgICBjb25zdCBkaXNwb3NlID0gbGlzdGVuKG5vZGUsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVJlbW92ZUV2ZW50TGlzdGVuZXInLCB7IG5vZGUsIGV2ZW50LCBoYW5kbGVyLCBtb2RpZmllcnMgfSk7XG4gICAgICAgIGRpc3Bvc2UoKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gYXR0cl9kZXYobm9kZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIGF0dHIobm9kZSwgYXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgaWYgKHZhbHVlID09IG51bGwpXG4gICAgICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NUmVtb3ZlQXR0cmlidXRlJywgeyBub2RlLCBhdHRyaWJ1dGUgfSk7XG4gICAgZWxzZVxuICAgICAgICBkaXNwYXRjaF9kZXYoJ1N2ZWx0ZURPTVNldEF0dHJpYnV0ZScsIHsgbm9kZSwgYXR0cmlidXRlLCB2YWx1ZSB9KTtcbn1cbmZ1bmN0aW9uIHByb3BfZGV2KG5vZGUsIHByb3BlcnR5LCB2YWx1ZSkge1xuICAgIG5vZGVbcHJvcGVydHldID0gdmFsdWU7XG4gICAgZGlzcGF0Y2hfZGV2KCdTdmVsdGVET01TZXRQcm9wZXJ0eScsIHsgbm9kZSwgcHJvcGVydHksIHZhbHVlIH0pO1xufVxuZnVuY3Rpb24gZGF0YXNldF9kZXYobm9kZSwgcHJvcGVydHksIHZhbHVlKSB7XG4gICAgbm9kZS5kYXRhc2V0W3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NU2V0RGF0YXNldCcsIHsgbm9kZSwgcHJvcGVydHksIHZhbHVlIH0pO1xufVxuZnVuY3Rpb24gc2V0X2RhdGFfZGV2KHRleHQsIGRhdGEpIHtcbiAgICBkYXRhID0gJycgKyBkYXRhO1xuICAgIGlmICh0ZXh0Lndob2xlVGV4dCA9PT0gZGF0YSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGRpc3BhdGNoX2RldignU3ZlbHRlRE9NU2V0RGF0YScsIHsgbm9kZTogdGV4dCwgZGF0YSB9KTtcbiAgICB0ZXh0LmRhdGEgPSBkYXRhO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVfZWFjaF9hcmd1bWVudChhcmcpIHtcbiAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ3N0cmluZycgJiYgIShhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gYXJnKSkge1xuICAgICAgICBsZXQgbXNnID0gJ3sjZWFjaH0gb25seSBpdGVyYXRlcyBvdmVyIGFycmF5LWxpa2Ugb2JqZWN0cy4nO1xuICAgICAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBhcmcgJiYgU3ltYm9sLml0ZXJhdG9yIGluIGFyZykge1xuICAgICAgICAgICAgbXNnICs9ICcgWW91IGNhbiB1c2UgYSBzcHJlYWQgdG8gY29udmVydCB0aGlzIGl0ZXJhYmxlIGludG8gYW4gYXJyYXkuJztcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZV9zbG90cyhuYW1lLCBzbG90LCBrZXlzKSB7XG4gICAgZm9yIChjb25zdCBzbG90X2tleSBvZiBPYmplY3Qua2V5cyhzbG90KSkge1xuICAgICAgICBpZiAoIX5rZXlzLmluZGV4T2Yoc2xvdF9rZXkpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYDwke25hbWV9PiByZWNlaXZlZCBhbiB1bmV4cGVjdGVkIHNsb3QgXCIke3Nsb3Rfa2V5fVwiLmApO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBTdmVsdGUgY29tcG9uZW50cyB3aXRoIHNvbWUgbWlub3IgZGV2LWVuaGFuY2VtZW50cy4gVXNlZCB3aGVuIGRldj10cnVlLlxuICovXG5jbGFzcyBTdmVsdGVDb21wb25lbnREZXYgZXh0ZW5kcyBTdmVsdGVDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFvcHRpb25zIHx8ICghb3B0aW9ucy50YXJnZXQgJiYgIW9wdGlvbnMuJCRpbmxpbmUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIndGFyZ2V0JyBpcyBhIHJlcXVpcmVkIG9wdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICAkZGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIuJGRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy4kZGVzdHJveSA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignQ29tcG9uZW50IHdhcyBhbHJlYWR5IGRlc3Ryb3llZCcpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgJGNhcHR1cmVfc3RhdGUoKSB7IH1cbiAgICAkaW5qZWN0X3N0YXRlKCkgeyB9XG59XG4vKipcbiAqIEJhc2UgY2xhc3MgdG8gY3JlYXRlIHN0cm9uZ2x5IHR5cGVkIFN2ZWx0ZSBjb21wb25lbnRzLlxuICogVGhpcyBvbmx5IGV4aXN0cyBmb3IgdHlwaW5nIHB1cnBvc2VzIGFuZCBzaG91bGQgYmUgdXNlZCBpbiBgLmQudHNgIGZpbGVzLlxuICpcbiAqICMjIyBFeGFtcGxlOlxuICpcbiAqIFlvdSBoYXZlIGNvbXBvbmVudCBsaWJyYXJ5IG9uIG5wbSBjYWxsZWQgYGNvbXBvbmVudC1saWJyYXJ5YCwgZnJvbSB3aGljaFxuICogeW91IGV4cG9ydCBhIGNvbXBvbmVudCBjYWxsZWQgYE15Q29tcG9uZW50YC4gRm9yIFN2ZWx0ZStUeXBlU2NyaXB0IHVzZXJzLFxuICogeW91IHdhbnQgdG8gcHJvdmlkZSB0eXBpbmdzLiBUaGVyZWZvcmUgeW91IGNyZWF0ZSBhIGBpbmRleC5kLnRzYDpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBTdmVsdGVDb21wb25lbnRUeXBlZCB9IGZyb20gXCJzdmVsdGVcIjtcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCBleHRlbmRzIFN2ZWx0ZUNvbXBvbmVudFR5cGVkPHtmb286IHN0cmluZ30+IHt9XG4gKiBgYGBcbiAqIFR5cGluZyB0aGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciBJREVzIGxpa2UgVlMgQ29kZSB3aXRoIHRoZSBTdmVsdGUgZXh0ZW5zaW9uXG4gKiB0byBwcm92aWRlIGludGVsbGlzZW5zZSBhbmQgdG8gdXNlIHRoZSBjb21wb25lbnQgbGlrZSB0aGlzIGluIGEgU3ZlbHRlIGZpbGVcbiAqIHdpdGggVHlwZVNjcmlwdDpcbiAqIGBgYHN2ZWx0ZVxuICogPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAqIFx0aW1wb3J0IHsgTXlDb21wb25lbnQgfSBmcm9tIFwiY29tcG9uZW50LWxpYnJhcnlcIjtcbiAqIDwvc2NyaXB0PlxuICogPE15Q29tcG9uZW50IGZvbz17J2Jhcid9IC8+XG4gKiBgYGBcbiAqXG4gKiAjIyMjIFdoeSBub3QgbWFrZSB0aGlzIHBhcnQgb2YgYFN2ZWx0ZUNvbXBvbmVudChEZXYpYD9cbiAqIEJlY2F1c2VcbiAqIGBgYHRzXG4gKiBjbGFzcyBBU3ViY2xhc3NPZlN2ZWx0ZUNvbXBvbmVudCBleHRlbmRzIFN2ZWx0ZUNvbXBvbmVudDx7Zm9vOiBzdHJpbmd9PiB7fVxuICogY29uc3QgY29tcG9uZW50OiB0eXBlb2YgU3ZlbHRlQ29tcG9uZW50ID0gQVN1YmNsYXNzT2ZTdmVsdGVDb21wb25lbnQ7XG4gKiBgYGBcbiAqIHdpbGwgdGhyb3cgYSB0eXBlIGVycm9yLCBzbyB3ZSBuZWVkIHRvIHNlcGFyYXRlIHRoZSBtb3JlIHN0cmljdGx5IHR5cGVkIGNsYXNzLlxuICovXG5jbGFzcyBTdmVsdGVDb21wb25lbnRUeXBlZCBleHRlbmRzIFN2ZWx0ZUNvbXBvbmVudERldiB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG59XG5mdW5jdGlvbiBsb29wX2d1YXJkKHRpbWVvdXQpIHtcbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKERhdGUubm93KCkgLSBzdGFydCA+IHRpbWVvdXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5maW5pdGUgbG9vcCBkZXRlY3RlZCcpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuZXhwb3J0IHsgSHRtbFRhZywgSHRtbFRhZ0h5ZHJhdGlvbiwgU3ZlbHRlQ29tcG9uZW50LCBTdmVsdGVDb21wb25lbnREZXYsIFN2ZWx0ZUNvbXBvbmVudFR5cGVkLCBTdmVsdGVFbGVtZW50LCBhY3Rpb25fZGVzdHJveWVyLCBhZGRfYXR0cmlidXRlLCBhZGRfY2xhc3NlcywgYWRkX2ZsdXNoX2NhbGxiYWNrLCBhZGRfbG9jYXRpb24sIGFkZF9yZW5kZXJfY2FsbGJhY2ssIGFkZF9yZXNpemVfbGlzdGVuZXIsIGFkZF90cmFuc2Zvcm0sIGFmdGVyVXBkYXRlLCBhcHBlbmQsIGFwcGVuZF9kZXYsIGFwcGVuZF9lbXB0eV9zdHlsZXNoZWV0LCBhcHBlbmRfaHlkcmF0aW9uLCBhcHBlbmRfaHlkcmF0aW9uX2RldiwgYXBwZW5kX3N0eWxlcywgYXNzaWduLCBhdHRyLCBhdHRyX2RldiwgYXR0cmlidXRlX3RvX29iamVjdCwgYmVmb3JlVXBkYXRlLCBiaW5kLCBiaW5kaW5nX2NhbGxiYWNrcywgYmxhbmtfb2JqZWN0LCBidWJibGUsIGNoZWNrX291dHJvcywgY2hpbGRyZW4sIGNsYWltX2NvbXBvbmVudCwgY2xhaW1fZWxlbWVudCwgY2xhaW1faHRtbF90YWcsIGNsYWltX3NwYWNlLCBjbGFpbV9zdmdfZWxlbWVudCwgY2xhaW1fdGV4dCwgY2xlYXJfbG9vcHMsIGNvbXBvbmVudF9zdWJzY3JpYmUsIGNvbXB1dGVfcmVzdF9wcm9wcywgY29tcHV0ZV9zbG90cywgY3JlYXRlRXZlbnREaXNwYXRjaGVyLCBjcmVhdGVfYW5pbWF0aW9uLCBjcmVhdGVfYmlkaXJlY3Rpb25hbF90cmFuc2l0aW9uLCBjcmVhdGVfY29tcG9uZW50LCBjcmVhdGVfaW5fdHJhbnNpdGlvbiwgY3JlYXRlX291dF90cmFuc2l0aW9uLCBjcmVhdGVfc2xvdCwgY3JlYXRlX3Nzcl9jb21wb25lbnQsIGN1cnJlbnRfY29tcG9uZW50LCBjdXN0b21fZXZlbnQsIGRhdGFzZXRfZGV2LCBkZWJ1ZywgZGVzdHJveV9ibG9jaywgZGVzdHJveV9jb21wb25lbnQsIGRlc3Ryb3lfZWFjaCwgZGV0YWNoLCBkZXRhY2hfYWZ0ZXJfZGV2LCBkZXRhY2hfYmVmb3JlX2RldiwgZGV0YWNoX2JldHdlZW5fZGV2LCBkZXRhY2hfZGV2LCBkaXJ0eV9jb21wb25lbnRzLCBkaXNwYXRjaF9kZXYsIGVhY2gsIGVsZW1lbnQsIGVsZW1lbnRfaXMsIGVtcHR5LCBlbmRfaHlkcmF0aW5nLCBlc2NhcGUsIGVzY2FwZV9hdHRyaWJ1dGVfdmFsdWUsIGVzY2FwZV9vYmplY3QsIGVzY2FwZWQsIGV4Y2x1ZGVfaW50ZXJuYWxfcHJvcHMsIGZpeF9hbmRfZGVzdHJveV9ibG9jaywgZml4X2FuZF9vdXRyb19hbmRfZGVzdHJveV9ibG9jaywgZml4X3Bvc2l0aW9uLCBmbHVzaCwgZ2V0QWxsQ29udGV4dHMsIGdldENvbnRleHQsIGdldF9hbGxfZGlydHlfZnJvbV9zY29wZSwgZ2V0X2JpbmRpbmdfZ3JvdXBfdmFsdWUsIGdldF9jdXJyZW50X2NvbXBvbmVudCwgZ2V0X2N1c3RvbV9lbGVtZW50c19zbG90cywgZ2V0X3Jvb3RfZm9yX3N0eWxlLCBnZXRfc2xvdF9jaGFuZ2VzLCBnZXRfc3ByZWFkX29iamVjdCwgZ2V0X3NwcmVhZF91cGRhdGUsIGdldF9zdG9yZV92YWx1ZSwgZ2xvYmFscywgZ3JvdXBfb3V0cm9zLCBoYW5kbGVfcHJvbWlzZSwgaGFzQ29udGV4dCwgaGFzX3Byb3AsIGlkZW50aXR5LCBpbml0LCBpbnNlcnQsIGluc2VydF9kZXYsIGluc2VydF9oeWRyYXRpb24sIGluc2VydF9oeWRyYXRpb25fZGV2LCBpbnRyb3MsIGludmFsaWRfYXR0cmlidXRlX25hbWVfY2hhcmFjdGVyLCBpc19jbGllbnQsIGlzX2Nyb3Nzb3JpZ2luLCBpc19lbXB0eSwgaXNfZnVuY3Rpb24sIGlzX3Byb21pc2UsIGxpc3RlbiwgbGlzdGVuX2RldiwgbG9vcCwgbG9vcF9ndWFyZCwgbWlzc2luZ19jb21wb25lbnQsIG1vdW50X2NvbXBvbmVudCwgbm9vcCwgbm90X2VxdWFsLCBub3csIG51bGxfdG9fZW1wdHksIG9iamVjdF93aXRob3V0X3Byb3BlcnRpZXMsIG9uRGVzdHJveSwgb25Nb3VudCwgb25jZSwgb3V0cm9fYW5kX2Rlc3Ryb3lfYmxvY2ssIHByZXZlbnRfZGVmYXVsdCwgcHJvcF9kZXYsIHF1ZXJ5X3NlbGVjdG9yX2FsbCwgcmFmLCBydW4sIHJ1bl9hbGwsIHNhZmVfbm90X2VxdWFsLCBzY2hlZHVsZV91cGRhdGUsIHNlbGVjdF9tdWx0aXBsZV92YWx1ZSwgc2VsZWN0X29wdGlvbiwgc2VsZWN0X29wdGlvbnMsIHNlbGVjdF92YWx1ZSwgc2VsZiwgc2V0Q29udGV4dCwgc2V0X2F0dHJpYnV0ZXMsIHNldF9jdXJyZW50X2NvbXBvbmVudCwgc2V0X2N1c3RvbV9lbGVtZW50X2RhdGEsIHNldF9kYXRhLCBzZXRfZGF0YV9kZXYsIHNldF9pbnB1dF90eXBlLCBzZXRfaW5wdXRfdmFsdWUsIHNldF9ub3csIHNldF9yYWYsIHNldF9zdG9yZV92YWx1ZSwgc2V0X3N0eWxlLCBzZXRfc3ZnX2F0dHJpYnV0ZXMsIHNwYWNlLCBzcHJlYWQsIHNyY191cmxfZXF1YWwsIHN0YXJ0X2h5ZHJhdGluZywgc3RvcF9wcm9wYWdhdGlvbiwgc3Vic2NyaWJlLCBzdmdfZWxlbWVudCwgdGV4dCwgdGljaywgdGltZV9yYW5nZXNfdG9fYXJyYXksIHRvX251bWJlciwgdG9nZ2xlX2NsYXNzLCB0cmFuc2l0aW9uX2luLCB0cmFuc2l0aW9uX291dCwgdHJ1c3RlZCwgdXBkYXRlX2F3YWl0X2Jsb2NrX2JyYW5jaCwgdXBkYXRlX2tleWVkX2VhY2gsIHVwZGF0ZV9zbG90LCB1cGRhdGVfc2xvdF9iYXNlLCB2YWxpZGF0ZV9jb21wb25lbnQsIHZhbGlkYXRlX2VhY2hfYXJndW1lbnQsIHZhbGlkYXRlX2VhY2hfa2V5cywgdmFsaWRhdGVfc2xvdHMsIHZhbGlkYXRlX3N0b3JlLCB4bGlua19hdHRyIH07XG4iLG51bGwsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgaW1wb3J0IHtGaWxlU3lzdGVtQWRhcHRlcn0gZnJvbSBcIm9ic2lkaWFuXCI7XG4gICAgaW1wb3J0IHtTVFlMRVNIRUVUX1BBVEgsIEdyYXBoU3R5bGVTaGVldCwgREVGQVVMVF9VU0VSX1NIRUVUfSBmcm9tIFwiLi4vLi4vdml6L3N0eWxlc2hlZXRcIjtcbiAgICAvLyBpbXBvcnQge3Byb21pc2VzIGFzIGZzfSBmcm9tIFwiZnNcIjtcbiAgICBpbXBvcnQgdHlwZSBKdWdnbFBsdWdpbiBmcm9tIFwiLi4vLi4vLi4vbWFpblwiO1xuXG4gICAgZXhwb3J0IGxldCBwbHVnaW46IEp1Z2dsUGx1Z2luO1xuICAgIGxldCBzdHlsZXNoZWV0UGF0aCA9IFNUWUxFU0hFRVRfUEFUSChwbHVnaW4udmF1bHQpO1xuICAgIGxldCBvcGVuR3JhcGhDU1MgPSBhc3luYyBmdW5jdGlvbigpIHtcbiAgICAgICAgbGV0IGZ1bGxQYXRoID0gKHBsdWdpbi52YXVsdC5hZGFwdGVyIGFzIEZpbGVTeXN0ZW1BZGFwdGVyKS5nZXRGdWxsUGF0aChzdHlsZXNoZWV0UGF0aCk7XG4gICAgICAgIC8vIFdyaXRlIGEgZmlsZSwgdGhyb3cgYW4gZXJyb3IgaWYgaXQgYWxyZWFkeSBleGlzdHMgKGZsYWcgd3gpLiBKdXN0IGNhdGNoIHRoYXQgYmVjYXVzZSBpdCdzIGZpbmUuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzaGVsbCA9IHJlcXVpcmUoJ2VsZWN0cm9uJykuc2hlbGw7XG4gICAgICAgICAgICBjb25zdCB7cHJvbWlzZXN9ID0gcmVxdWlyZShcImZzXCIpO1xuICAgICAgICAgICAgYXdhaXQgcHJvbWlzZXMud3JpdGVGaWxlKGZ1bGxQYXRoLFxuICAgICAgICAgICAgICAgIERFRkFVTFRfVVNFUl9TSEVFVCxcbiAgICAgICAgICAgICAgICB7ZmxhZzogJ3d4J30pLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhd2FpdCBzaGVsbC5vcGVuUGF0aChmdWxsUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ291bGRuJ3Qgb3BlbiBncmFwaC5jc3MuIFRoaXMgaXMgcHJvYmFibHkgYmVjYXVzZSB3ZSBhcmUgb24gbW9iaWxlLlwiKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG48L3NjcmlwdD5cblxuPGgzPlxuICAgIEFwcGVhcmFuY2VcbjwvaDM+XG48cD5cbiAgICBZb3UgY2FuIHN0eWxlIHRoZSBncmFwaCB3aXRoIGNzcy4gVGhpcyBpcyBkb25lIGluIHRoZSB7c3R5bGVzaGVldFBhdGh9IGZpbGUuXG4gICAgU2VlIDxhIGhyZWY9XCJodHRwczovL3B1Ymxpc2gub2JzaWRpYW4ubWQvc2VtYW50aWMtb2JzaWRpYW4vTm9kZStzdHlsaW5nXCI+dGhpcyBwYWdlPC9hPiBmb3IgaGVscCB3aXRoIHN0eWxpbmcuXG48L3A+XG5cbjxidXR0b24gb246Y2xpY2s9e29wZW5HcmFwaENTU30+XG4gICAgT3BlbiBncmFwaC5jc3MgaW4gZGVmYXVsdCBlZGl0b3IuXG48L2J1dHRvbj4iLCJcbjxzY3JpcHQ+XG4gICAgbGV0IGJ1dHRvbjtcbiAgICB2YXIgaW5pdGlhbGl6ZUtvZmkgPSAoKSA9PiB7XG4gICAgICAgIGtvZml3aWRnZXQyLmluaXQoJ1N1cHBvcnQgSnVnZ2wgZGV2ZWxvcG1lbnQhJywgJyMyOWFiZTAnLCAnQjBCMjNPUFVFJyk7XG4gICAgICAgIGJ1dHRvbi5pbm5lckhUTUwgPSBrb2Zpd2lkZ2V0Mi5nZXRIVE1MKCk7XG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxzdmVsdGU6aGVhZD5cbiAgICA8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9J2h0dHBzOi8va28tZmkuY29tL3dpZGdldHMvd2lkZ2V0XzIuanMnIG9uOmxvYWQ9e2luaXRpYWxpemVLb2ZpfT5cbiAgICA8L3NjcmlwdD5cbjwvc3ZlbHRlOmhlYWQ+XG48ZGl2IGJpbmQ6dGhpcz17YnV0dG9ufT48L2Rpdj5cbiIsbnVsbCwiLyoqXG4gKiBsb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBVc2VkIGFzIHRoZSBgVHlwZUVycm9yYCBtZXNzYWdlIGZvciBcIkZ1bmN0aW9uc1wiIG1ldGhvZHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAqIHRoZSBVbml4IGVwb2NoICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBEYXRlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lc3RhbXAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVmZXIoZnVuY3Rpb24oc3RhbXApIHtcbiAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAqIH0sIF8ubm93KCkpO1xuICogLy8gPT4gTG9ncyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCB0b29rIGZvciB0aGUgZGVmZXJyZWQgaW52b2NhdGlvbi5cbiAqL1xudmFyIG5vdyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICByZXN1bHQgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICByZXR1cm4gbWF4aW5nID8gbmF0aXZlTWluKHJlc3VsdCwgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpIDogcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lO1xuXG4gICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgIC8vIGl0IGFzIHRoZSB0cmFpbGluZyBlZGdlLCBvciB3ZSd2ZSBoaXQgdGhlIGBtYXhXYWl0YCBsaW1pdC5cbiAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgIGlmIChzaG91bGRJbnZva2UodGltZSkpIHtcbiAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgfVxuICAgIC8vIFJlc3RhcnQgdGhlIHRpbWVyLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFpbGluZ0VkZ2UodGltZSkge1xuICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgLy8gZGVib3VuY2VkIGF0IGxlYXN0IG9uY2UuXG4gICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICB9XG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICB9XG4gICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgIGxhc3RBcmdzID0gbGFzdENhbGxUaW1lID0gbGFzdFRoaXMgPSB0aW1lcklkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgcmV0dXJuIHRpbWVySWQgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHRyYWlsaW5nRWRnZShub3coKSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgdmFyIHRpbWUgPSBub3coKSxcbiAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgIGxhc3RUaGlzID0gdGhpcztcbiAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgICBpZiAobWF4aW5nKSB7XG4gICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIHJldHVybiBpbnZva2VGdW5jKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgZGVib3VuY2VkLmZsdXNoID0gZmx1c2g7XG4gIHJldHVybiBkZWJvdW5jZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIiwiLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjguMFxuKGZ1bmN0aW9uKCkge1xuICB2YXIgSGVhcCwgZGVmYXVsdENtcCwgZmxvb3IsIGhlYXBpZnksIGhlYXBwb3AsIGhlYXBwdXNoLCBoZWFwcHVzaHBvcCwgaGVhcHJlcGxhY2UsIGluc29ydCwgbWluLCBubGFyZ2VzdCwgbnNtYWxsZXN0LCB1cGRhdGVJdGVtLCBfc2lmdGRvd24sIF9zaWZ0dXA7XG5cbiAgZmxvb3IgPSBNYXRoLmZsb29yLCBtaW4gPSBNYXRoLm1pbjtcblxuXG4gIC8qXG4gIERlZmF1bHQgY29tcGFyaXNvbiBmdW5jdGlvbiB0byBiZSB1c2VkXG4gICAqL1xuXG4gIGRlZmF1bHRDbXAgPSBmdW5jdGlvbih4LCB5KSB7XG4gICAgaWYgKHggPCB5KSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmICh4ID4geSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9O1xuXG5cbiAgLypcbiAgSW5zZXJ0IGl0ZW0geCBpbiBsaXN0IGEsIGFuZCBrZWVwIGl0IHNvcnRlZCBhc3N1bWluZyBhIGlzIHNvcnRlZC5cbiAgXG4gIElmIHggaXMgYWxyZWFkeSBpbiBhLCBpbnNlcnQgaXQgdG8gdGhlIHJpZ2h0IG9mIHRoZSByaWdodG1vc3QgeC5cbiAgXG4gIE9wdGlvbmFsIGFyZ3MgbG8gKGRlZmF1bHQgMCkgYW5kIGhpIChkZWZhdWx0IGEubGVuZ3RoKSBib3VuZCB0aGUgc2xpY2VcbiAgb2YgYSB0byBiZSBzZWFyY2hlZC5cbiAgICovXG5cbiAgaW5zb3J0ID0gZnVuY3Rpb24oYSwgeCwgbG8sIGhpLCBjbXApIHtcbiAgICB2YXIgbWlkO1xuICAgIGlmIChsbyA9PSBudWxsKSB7XG4gICAgICBsbyA9IDA7XG4gICAgfVxuICAgIGlmIChjbXAgPT0gbnVsbCkge1xuICAgICAgY21wID0gZGVmYXVsdENtcDtcbiAgICB9XG4gICAgaWYgKGxvIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZScpO1xuICAgIH1cbiAgICBpZiAoaGkgPT0gbnVsbCkge1xuICAgICAgaGkgPSBhLmxlbmd0aDtcbiAgICB9XG4gICAgd2hpbGUgKGxvIDwgaGkpIHtcbiAgICAgIG1pZCA9IGZsb29yKChsbyArIGhpKSAvIDIpO1xuICAgICAgaWYgKGNtcCh4LCBhW21pZF0pIDwgMCkge1xuICAgICAgICBoaSA9IG1pZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvID0gbWlkICsgMTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIChbXS5zcGxpY2UuYXBwbHkoYSwgW2xvLCBsbyAtIGxvXS5jb25jYXQoeCkpLCB4KTtcbiAgfTtcblxuXG4gIC8qXG4gIFB1c2ggaXRlbSBvbnRvIGhlYXAsIG1haW50YWluaW5nIHRoZSBoZWFwIGludmFyaWFudC5cbiAgICovXG5cbiAgaGVhcHB1c2ggPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgIH1cbiAgICBhcnJheS5wdXNoKGl0ZW0pO1xuICAgIHJldHVybiBfc2lmdGRvd24oYXJyYXksIDAsIGFycmF5Lmxlbmd0aCAtIDEsIGNtcCk7XG4gIH07XG5cblxuICAvKlxuICBQb3AgdGhlIHNtYWxsZXN0IGl0ZW0gb2ZmIHRoZSBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuXG4gICAqL1xuXG4gIGhlYXBwb3AgPSBmdW5jdGlvbihhcnJheSwgY21wKSB7XG4gICAgdmFyIGxhc3RlbHQsIHJldHVybml0ZW07XG4gICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgIH1cbiAgICBsYXN0ZWx0ID0gYXJyYXkucG9wKCk7XG4gICAgaWYgKGFycmF5Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuaXRlbSA9IGFycmF5WzBdO1xuICAgICAgYXJyYXlbMF0gPSBsYXN0ZWx0O1xuICAgICAgX3NpZnR1cChhcnJheSwgMCwgY21wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuaXRlbSA9IGxhc3RlbHQ7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5pdGVtO1xuICB9O1xuXG5cbiAgLypcbiAgUG9wIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgc21hbGxlc3QgdmFsdWUsIGFuZCBhZGQgdGhlIG5ldyBpdGVtLlxuICBcbiAgVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGhlYXBwb3AoKSBmb2xsb3dlZCBieSBoZWFwcHVzaCgpLCBhbmQgY2FuIGJlXG4gIG1vcmUgYXBwcm9wcmlhdGUgd2hlbiB1c2luZyBhIGZpeGVkIHNpemUgaGVhcC4gTm90ZSB0aGF0IHRoZSB2YWx1ZVxuICByZXR1cm5lZCBtYXkgYmUgbGFyZ2VyIHRoYW4gaXRlbSEgVGhhdCBjb25zdHJhaW5zIHJlYXNvbmFibGUgdXNlIG9mXG4gIHRoaXMgcm91dGluZSB1bmxlc3Mgd3JpdHRlbiBhcyBwYXJ0IG9mIGEgY29uZGl0aW9uYWwgcmVwbGFjZW1lbnQ6XG4gICAgICBpZiBpdGVtID4gYXJyYXlbMF1cbiAgICAgICAgaXRlbSA9IGhlYXByZXBsYWNlKGFycmF5LCBpdGVtKVxuICAgKi9cblxuICBoZWFwcmVwbGFjZSA9IGZ1bmN0aW9uKGFycmF5LCBpdGVtLCBjbXApIHtcbiAgICB2YXIgcmV0dXJuaXRlbTtcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIHJldHVybml0ZW0gPSBhcnJheVswXTtcbiAgICBhcnJheVswXSA9IGl0ZW07XG4gICAgX3NpZnR1cChhcnJheSwgMCwgY21wKTtcbiAgICByZXR1cm4gcmV0dXJuaXRlbTtcbiAgfTtcblxuXG4gIC8qXG4gIEZhc3QgdmVyc2lvbiBvZiBhIGhlYXBwdXNoIGZvbGxvd2VkIGJ5IGEgaGVhcHBvcC5cbiAgICovXG5cbiAgaGVhcHB1c2hwb3AgPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgdmFyIF9yZWY7XG4gICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgIH1cbiAgICBpZiAoYXJyYXkubGVuZ3RoICYmIGNtcChhcnJheVswXSwgaXRlbSkgPCAwKSB7XG4gICAgICBfcmVmID0gW2FycmF5WzBdLCBpdGVtXSwgaXRlbSA9IF9yZWZbMF0sIGFycmF5WzBdID0gX3JlZlsxXTtcbiAgICAgIF9zaWZ0dXAoYXJyYXksIDAsIGNtcCk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtO1xuICB9O1xuXG5cbiAgLypcbiAgVHJhbnNmb3JtIGxpc3QgaW50byBhIGhlYXAsIGluLXBsYWNlLCBpbiBPKGFycmF5Lmxlbmd0aCkgdGltZS5cbiAgICovXG5cbiAgaGVhcGlmeSA9IGZ1bmN0aW9uKGFycmF5LCBjbXApIHtcbiAgICB2YXIgaSwgX2ksIF9qLCBfbGVuLCBfcmVmLCBfcmVmMSwgX3Jlc3VsdHMsIF9yZXN1bHRzMTtcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIF9yZWYxID0gKGZ1bmN0aW9uKCkge1xuICAgICAgX3Jlc3VsdHMxID0gW107XG4gICAgICBmb3IgKHZhciBfaiA9IDAsIF9yZWYgPSBmbG9vcihhcnJheS5sZW5ndGggLyAyKTsgMCA8PSBfcmVmID8gX2ogPCBfcmVmIDogX2ogPiBfcmVmOyAwIDw9IF9yZWYgPyBfaisrIDogX2otLSl7IF9yZXN1bHRzMS5wdXNoKF9qKTsgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzMTtcbiAgICB9KS5hcHBseSh0aGlzKS5yZXZlcnNlKCk7XG4gICAgX3Jlc3VsdHMgPSBbXTtcbiAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYxLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICBpID0gX3JlZjFbX2ldO1xuICAgICAgX3Jlc3VsdHMucHVzaChfc2lmdHVwKGFycmF5LCBpLCBjbXApKTtcbiAgICB9XG4gICAgcmV0dXJuIF9yZXN1bHRzO1xuICB9O1xuXG5cbiAgLypcbiAgVXBkYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZ2l2ZW4gaXRlbSBpbiB0aGUgaGVhcC5cbiAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGl0ZW0gaXMgYmVpbmcgbW9kaWZpZWQuXG4gICAqL1xuXG4gIHVwZGF0ZUl0ZW0gPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgdmFyIHBvcztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIHBvcyA9IGFycmF5LmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgX3NpZnRkb3duKGFycmF5LCAwLCBwb3MsIGNtcCk7XG4gICAgcmV0dXJuIF9zaWZ0dXAoYXJyYXksIHBvcywgY21wKTtcbiAgfTtcblxuXG4gIC8qXG4gIEZpbmQgdGhlIG4gbGFyZ2VzdCBlbGVtZW50cyBpbiBhIGRhdGFzZXQuXG4gICAqL1xuXG4gIG5sYXJnZXN0ID0gZnVuY3Rpb24oYXJyYXksIG4sIGNtcCkge1xuICAgIHZhciBlbGVtLCByZXN1bHQsIF9pLCBfbGVuLCBfcmVmO1xuICAgIGlmIChjbXAgPT0gbnVsbCkge1xuICAgICAgY21wID0gZGVmYXVsdENtcDtcbiAgICB9XG4gICAgcmVzdWx0ID0gYXJyYXkuc2xpY2UoMCwgbik7XG4gICAgaWYgKCFyZXN1bHQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBoZWFwaWZ5KHJlc3VsdCwgY21wKTtcbiAgICBfcmVmID0gYXJyYXkuc2xpY2Uobik7XG4gICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICBlbGVtID0gX3JlZltfaV07XG4gICAgICBoZWFwcHVzaHBvcChyZXN1bHQsIGVsZW0sIGNtcCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQuc29ydChjbXApLnJldmVyc2UoKTtcbiAgfTtcblxuXG4gIC8qXG4gIEZpbmQgdGhlIG4gc21hbGxlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LlxuICAgKi9cblxuICBuc21hbGxlc3QgPSBmdW5jdGlvbihhcnJheSwgbiwgY21wKSB7XG4gICAgdmFyIGVsZW0sIGksIGxvcywgcmVzdWx0LCBfaSwgX2osIF9sZW4sIF9yZWYsIF9yZWYxLCBfcmVzdWx0cztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIGlmIChuICogMTAgPD0gYXJyYXkubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgPSBhcnJheS5zbGljZSgwLCBuKS5zb3J0KGNtcCk7XG4gICAgICBpZiAoIXJlc3VsdC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGxvcyA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07XG4gICAgICBfcmVmID0gYXJyYXkuc2xpY2Uobik7XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgZWxlbSA9IF9yZWZbX2ldO1xuICAgICAgICBpZiAoY21wKGVsZW0sIGxvcykgPCAwKSB7XG4gICAgICAgICAgaW5zb3J0KHJlc3VsdCwgZWxlbSwgMCwgbnVsbCwgY21wKTtcbiAgICAgICAgICByZXN1bHQucG9wKCk7XG4gICAgICAgICAgbG9zID0gcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgaGVhcGlmeShhcnJheSwgY21wKTtcbiAgICBfcmVzdWx0cyA9IFtdO1xuICAgIGZvciAoaSA9IF9qID0gMCwgX3JlZjEgPSBtaW4obiwgYXJyYXkubGVuZ3RoKTsgMCA8PSBfcmVmMSA/IF9qIDwgX3JlZjEgOiBfaiA+IF9yZWYxOyBpID0gMCA8PSBfcmVmMSA/ICsrX2ogOiAtLV9qKSB7XG4gICAgICBfcmVzdWx0cy5wdXNoKGhlYXBwb3AoYXJyYXksIGNtcCkpO1xuICAgIH1cbiAgICByZXR1cm4gX3Jlc3VsdHM7XG4gIH07XG5cbiAgX3NpZnRkb3duID0gZnVuY3Rpb24oYXJyYXksIHN0YXJ0cG9zLCBwb3MsIGNtcCkge1xuICAgIHZhciBuZXdpdGVtLCBwYXJlbnQsIHBhcmVudHBvcztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIG5ld2l0ZW0gPSBhcnJheVtwb3NdO1xuICAgIHdoaWxlIChwb3MgPiBzdGFydHBvcykge1xuICAgICAgcGFyZW50cG9zID0gKHBvcyAtIDEpID4+IDE7XG4gICAgICBwYXJlbnQgPSBhcnJheVtwYXJlbnRwb3NdO1xuICAgICAgaWYgKGNtcChuZXdpdGVtLCBwYXJlbnQpIDwgMCkge1xuICAgICAgICBhcnJheVtwb3NdID0gcGFyZW50O1xuICAgICAgICBwb3MgPSBwYXJlbnRwb3M7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBhcnJheVtwb3NdID0gbmV3aXRlbTtcbiAgfTtcblxuICBfc2lmdHVwID0gZnVuY3Rpb24oYXJyYXksIHBvcywgY21wKSB7XG4gICAgdmFyIGNoaWxkcG9zLCBlbmRwb3MsIG5ld2l0ZW0sIHJpZ2h0cG9zLCBzdGFydHBvcztcbiAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgfVxuICAgIGVuZHBvcyA9IGFycmF5Lmxlbmd0aDtcbiAgICBzdGFydHBvcyA9IHBvcztcbiAgICBuZXdpdGVtID0gYXJyYXlbcG9zXTtcbiAgICBjaGlsZHBvcyA9IDIgKiBwb3MgKyAxO1xuICAgIHdoaWxlIChjaGlsZHBvcyA8IGVuZHBvcykge1xuICAgICAgcmlnaHRwb3MgPSBjaGlsZHBvcyArIDE7XG4gICAgICBpZiAocmlnaHRwb3MgPCBlbmRwb3MgJiYgIShjbXAoYXJyYXlbY2hpbGRwb3NdLCBhcnJheVtyaWdodHBvc10pIDwgMCkpIHtcbiAgICAgICAgY2hpbGRwb3MgPSByaWdodHBvcztcbiAgICAgIH1cbiAgICAgIGFycmF5W3Bvc10gPSBhcnJheVtjaGlsZHBvc107XG4gICAgICBwb3MgPSBjaGlsZHBvcztcbiAgICAgIGNoaWxkcG9zID0gMiAqIHBvcyArIDE7XG4gICAgfVxuICAgIGFycmF5W3Bvc10gPSBuZXdpdGVtO1xuICAgIHJldHVybiBfc2lmdGRvd24oYXJyYXksIHN0YXJ0cG9zLCBwb3MsIGNtcCk7XG4gIH07XG5cbiAgSGVhcCA9IChmdW5jdGlvbigpIHtcbiAgICBIZWFwLnB1c2ggPSBoZWFwcHVzaDtcblxuICAgIEhlYXAucG9wID0gaGVhcHBvcDtcblxuICAgIEhlYXAucmVwbGFjZSA9IGhlYXByZXBsYWNlO1xuXG4gICAgSGVhcC5wdXNocG9wID0gaGVhcHB1c2hwb3A7XG5cbiAgICBIZWFwLmhlYXBpZnkgPSBoZWFwaWZ5O1xuXG4gICAgSGVhcC51cGRhdGVJdGVtID0gdXBkYXRlSXRlbTtcblxuICAgIEhlYXAubmxhcmdlc3QgPSBubGFyZ2VzdDtcblxuICAgIEhlYXAubnNtYWxsZXN0ID0gbnNtYWxsZXN0O1xuXG4gICAgZnVuY3Rpb24gSGVhcChjbXApIHtcbiAgICAgIHRoaXMuY21wID0gY21wICE9IG51bGwgPyBjbXAgOiBkZWZhdWx0Q21wO1xuICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgIH1cblxuICAgIEhlYXAucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbih4KSB7XG4gICAgICByZXR1cm4gaGVhcHB1c2godGhpcy5ub2RlcywgeCwgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBoZWFwcG9wKHRoaXMubm9kZXMsIHRoaXMuY21wKTtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUucGVlayA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXNbMF07XG4gICAgfTtcblxuICAgIEhlYXAucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXMuaW5kZXhPZih4KSAhPT0gLTE7XG4gICAgfTtcblxuICAgIEhlYXAucHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbih4KSB7XG4gICAgICByZXR1cm4gaGVhcHJlcGxhY2UodGhpcy5ub2RlcywgeCwgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5wdXNocG9wID0gZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuIGhlYXBwdXNocG9wKHRoaXMubm9kZXMsIHgsIHRoaXMuY21wKTtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUuaGVhcGlmeSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGhlYXBpZnkodGhpcy5ub2RlcywgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS51cGRhdGVJdGVtID0gZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuIHVwZGF0ZUl0ZW0odGhpcy5ub2RlcywgeCwgdGhpcy5jbXApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXMgPSBbXTtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUuZW1wdHkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGVzLmxlbmd0aCA9PT0gMDtcbiAgICB9O1xuXG4gICAgSGVhcC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXMubGVuZ3RoO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGhlYXA7XG4gICAgICBoZWFwID0gbmV3IEhlYXAoKTtcbiAgICAgIGhlYXAubm9kZXMgPSB0aGlzLm5vZGVzLnNsaWNlKDApO1xuICAgICAgcmV0dXJuIGhlYXA7XG4gICAgfTtcblxuICAgIEhlYXAucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGVzLnNsaWNlKDApO1xuICAgIH07XG5cbiAgICBIZWFwLnByb3RvdHlwZS5pbnNlcnQgPSBIZWFwLnByb3RvdHlwZS5wdXNoO1xuXG4gICAgSGVhcC5wcm90b3R5cGUudG9wID0gSGVhcC5wcm90b3R5cGUucGVlaztcblxuICAgIEhlYXAucHJvdG90eXBlLmZyb250ID0gSGVhcC5wcm90b3R5cGUucGVlaztcblxuICAgIEhlYXAucHJvdG90eXBlLmhhcyA9IEhlYXAucHJvdG90eXBlLmNvbnRhaW5zO1xuXG4gICAgSGVhcC5wcm90b3R5cGUuY29weSA9IEhlYXAucHJvdG90eXBlLmNsb25lO1xuXG4gICAgcmV0dXJuIEhlYXA7XG5cbiAgfSkoKTtcblxuICAoZnVuY3Rpb24ocm9vdCwgZmFjdG9yeSkge1xuICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICAgIHJldHVybiBkZWZpbmUoW10sIGZhY3RvcnkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByb290LkhlYXAgPSBmYWN0b3J5KCk7XG4gICAgfVxuICB9KSh0aGlzLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gSGVhcDtcbiAgfSk7XG5cbn0pLmNhbGwodGhpcyk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2hlYXAnKTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjEsIFRoZSBDeXRvc2NhcGUgQ29uc29ydGl1bS5cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mXG4gKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSDigJxTb2Z0d2FyZeKAnSksIHRvIGRlYWwgaW5cbiAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbiAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzXG4gKiBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG9cbiAqIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT4oCdLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdCAoZXgpIHsgcmV0dXJuIChleCAmJiAodHlwZW9mIGV4ID09PSAnb2JqZWN0JykgJiYgJ2RlZmF1bHQnIGluIGV4KSA/IGV4WydkZWZhdWx0J10gOiBleDsgfVxuXG52YXIgdXRpbCA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdsb2Rhc2guZGVib3VuY2UnKSk7XG52YXIgSGVhcCA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdoZWFwJykpO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpO1xufVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG4gIHZhciBfZSA9IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTtcbn1cblxudmFyIHdpbmRvdyQxID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogd2luZG93OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbnZhciBuYXZpZ2F0b3IgPSB3aW5kb3ckMSA/IHdpbmRvdyQxLm5hdmlnYXRvciA6IG51bGw7XG52YXIgZG9jdW1lbnQkMSA9IHdpbmRvdyQxID8gd2luZG93JDEuZG9jdW1lbnQgOiBudWxsO1xuXG52YXIgdHlwZW9mc3RyID0gX3R5cGVvZignJyk7XG5cbnZhciB0eXBlb2ZvYmogPSBfdHlwZW9mKHt9KTtcblxudmFyIHR5cGVvZmZuID0gX3R5cGVvZihmdW5jdGlvbiAoKSB7fSk7XG5cbnZhciB0eXBlb2ZodG1sZWxlID0gdHlwZW9mIEhUTUxFbGVtZW50ID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoSFRNTEVsZW1lbnQpO1xuXG52YXIgaW5zdGFuY2VTdHIgPSBmdW5jdGlvbiBpbnN0YW5jZVN0cihvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBvYmouaW5zdGFuY2VTdHJpbmcgJiYgZm4ob2JqLmluc3RhbmNlU3RyaW5nKSA/IG9iai5pbnN0YW5jZVN0cmluZygpIDogbnVsbDtcbn07XG5cbnZhciBzdHJpbmcgPSBmdW5jdGlvbiBzdHJpbmcob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBfdHlwZW9mKG9iaikgPT0gdHlwZW9mc3RyO1xufTtcbnZhciBmbiA9IGZ1bmN0aW9uIGZuKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgX3R5cGVvZihvYmopID09PSB0eXBlb2Zmbjtcbn07XG52YXIgYXJyYXkgPSBmdW5jdGlvbiBhcnJheShvYmopIHtcbiAgcmV0dXJuICFlbGVtZW50T3JDb2xsZWN0aW9uKG9iaikgJiYgKEFycmF5LmlzQXJyYXkgPyBBcnJheS5pc0FycmF5KG9iaikgOiBvYmogIT0gbnVsbCAmJiBvYmogaW5zdGFuY2VvZiBBcnJheSk7XG59O1xudmFyIHBsYWluT2JqZWN0ID0gZnVuY3Rpb24gcGxhaW5PYmplY3Qob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiBfdHlwZW9mKG9iaikgPT09IHR5cGVvZm9iaiAmJiAhYXJyYXkob2JqKSAmJiBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdDtcbn07XG52YXIgb2JqZWN0ID0gZnVuY3Rpb24gb2JqZWN0KG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgX3R5cGVvZihvYmopID09PSB0eXBlb2ZvYmo7XG59O1xudmFyIG51bWJlciA9IGZ1bmN0aW9uIG51bWJlcihvYmopIHtcbiAgcmV0dXJuIG9iaiAhPSBudWxsICYmIF90eXBlb2Yob2JqKSA9PT0gX3R5cGVvZigxKSAmJiAhaXNOYU4ob2JqKTtcbn07XG52YXIgaW50ZWdlciA9IGZ1bmN0aW9uIGludGVnZXIob2JqKSB7XG4gIHJldHVybiBudW1iZXIob2JqKSAmJiBNYXRoLmZsb29yKG9iaikgPT09IG9iajtcbn07XG52YXIgaHRtbEVsZW1lbnQgPSBmdW5jdGlvbiBodG1sRWxlbWVudChvYmopIHtcbiAgaWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2ZodG1sZWxlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbCAhPSBvYmogJiYgb2JqIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG4gIH1cbn07XG52YXIgZWxlbWVudE9yQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIGVsZW1lbnRPckNvbGxlY3Rpb24ob2JqKSB7XG4gIHJldHVybiBlbGVtZW50KG9iaikgfHwgY29sbGVjdGlvbihvYmopO1xufTtcbnZhciBlbGVtZW50ID0gZnVuY3Rpb24gZWxlbWVudChvYmopIHtcbiAgcmV0dXJuIGluc3RhbmNlU3RyKG9iaikgPT09ICdjb2xsZWN0aW9uJyAmJiBvYmouX3ByaXZhdGUuc2luZ2xlO1xufTtcbnZhciBjb2xsZWN0aW9uID0gZnVuY3Rpb24gY29sbGVjdGlvbihvYmopIHtcbiAgcmV0dXJuIGluc3RhbmNlU3RyKG9iaikgPT09ICdjb2xsZWN0aW9uJyAmJiAhb2JqLl9wcml2YXRlLnNpbmdsZTtcbn07XG52YXIgY29yZSA9IGZ1bmN0aW9uIGNvcmUob2JqKSB7XG4gIHJldHVybiBpbnN0YW5jZVN0cihvYmopID09PSAnY29yZSc7XG59O1xudmFyIHN0eWxlc2hlZXQgPSBmdW5jdGlvbiBzdHlsZXNoZWV0KG9iaikge1xuICByZXR1cm4gaW5zdGFuY2VTdHIob2JqKSA9PT0gJ3N0eWxlc2hlZXQnO1xufTtcbnZhciBldmVudCA9IGZ1bmN0aW9uIGV2ZW50KG9iaikge1xuICByZXR1cm4gaW5zdGFuY2VTdHIob2JqKSA9PT0gJ2V2ZW50Jztcbn07XG52YXIgZW1wdHlTdHJpbmcgPSBmdW5jdGlvbiBlbXB0eVN0cmluZyhvYmopIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgIC8vIG51bGwgaXMgZW1wdHlcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChvYmogPT09ICcnIHx8IG9iai5tYXRjaCgvXlxccyskLykpIHtcbiAgICByZXR1cm4gdHJ1ZTsgLy8gZW1wdHkgc3RyaW5nIGlzIGVtcHR5XG4gIH1cblxuICByZXR1cm4gZmFsc2U7IC8vIG90aGVyd2lzZSwgd2UgZG9uJ3Qga25vdyB3aGF0IHdlJ3ZlIGdvdFxufTtcbnZhciBkb21FbGVtZW50ID0gZnVuY3Rpb24gZG9tRWxlbWVudChvYmopIHtcbiAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7IC8vIHdlJ3JlIG5vdCBpbiBhIGJyb3dzZXIgc28gaXQgZG9lc24ndCBtYXR0ZXJcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG4gIH1cbn07XG52YXIgYm91bmRpbmdCb3ggPSBmdW5jdGlvbiBib3VuZGluZ0JveChvYmopIHtcbiAgcmV0dXJuIHBsYWluT2JqZWN0KG9iaikgJiYgbnVtYmVyKG9iai54MSkgJiYgbnVtYmVyKG9iai54MikgJiYgbnVtYmVyKG9iai55MSkgJiYgbnVtYmVyKG9iai55Mik7XG59O1xudmFyIHByb21pc2UgPSBmdW5jdGlvbiBwcm9taXNlKG9iaikge1xuICByZXR1cm4gb2JqZWN0KG9iaikgJiYgZm4ob2JqLnRoZW4pO1xufTtcbnZhciBtcyA9IGZ1bmN0aW9uIG1zKCkge1xuICByZXR1cm4gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL21zaWV8dHJpZGVudHxlZGdlL2kpO1xufTsgLy8gcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRldGVjdCB0aGlzLi4uXG5cbnZhciBtZW1vaXplID0gZnVuY3Rpb24gbWVtb2l6ZShmbiwga2V5Rm4pIHtcbiAgaWYgKCFrZXlGbikge1xuICAgIGtleUZuID0gZnVuY3Rpb24ga2V5Rm4oKSB7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICAgIH1cblxuICAgICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhcmdzLmpvaW4oJyQnKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIG1lbW9pemVkRm4gPSBmdW5jdGlvbiBtZW1vaXplZEZuKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgcmV0O1xuICAgIHZhciBrID0ga2V5Rm4uYXBwbHkoc2VsZiwgYXJncyk7XG4gICAgdmFyIGNhY2hlID0gbWVtb2l6ZWRGbi5jYWNoZTtcblxuICAgIGlmICghKHJldCA9IGNhY2hlW2tdKSkge1xuICAgICAgcmV0ID0gY2FjaGVba10gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIG1lbW9pemVkRm4uY2FjaGUgPSB7fTtcbiAgcmV0dXJuIG1lbW9pemVkRm47XG59O1xuXG52YXIgY2FtZWwyZGFzaCA9IG1lbW9pemUoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbQS1aXSkvZywgZnVuY3Rpb24gKHYpIHtcbiAgICByZXR1cm4gJy0nICsgdi50b0xvd2VyQ2FzZSgpO1xuICB9KTtcbn0pO1xudmFyIGRhc2gyY2FtZWwgPSBtZW1vaXplKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oLVxcdykvZywgZnVuY3Rpb24gKHYpIHtcbiAgICByZXR1cm4gdlsxXS50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn0pO1xudmFyIHByZXBlbmRDYW1lbCA9IG1lbW9pemUoZnVuY3Rpb24gKHByZWZpeCwgc3RyKSB7XG4gIHJldHVybiBwcmVmaXggKyBzdHJbMF0udG9VcHBlckNhc2UoKSArIHN0ci5zdWJzdHJpbmcoMSk7XG59LCBmdW5jdGlvbiAocHJlZml4LCBzdHIpIHtcbiAgcmV0dXJuIHByZWZpeCArICckJyArIHN0cjtcbn0pO1xudmFyIGNhcGl0YWxpemUgPSBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cikge1xuICBpZiAoZW1wdHlTdHJpbmcoc3RyKSkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKTtcbn07XG5cbnZhciBudW1iZXIkMSA9ICcoPzpbLStdPyg/Oig/OlxcXFxkK3xcXFxcZCpcXFxcLlxcXFxkKykoPzpbRWVdWystXT9cXFxcZCspPykpJztcbnZhciByZ2JhID0gJ3JnYlthXT9cXFxcKCgnICsgbnVtYmVyJDEgKyAnWyVdPylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIkMSArICdbJV0/KVxcXFxzKixcXFxccyooJyArIG51bWJlciQxICsgJ1slXT8pKD86XFxcXHMqLFxcXFxzKignICsgbnVtYmVyJDEgKyAnKSk/XFxcXCknO1xudmFyIHJnYmFOb0JhY2tSZWZzID0gJ3JnYlthXT9cXFxcKCg/OicgKyBudW1iZXIkMSArICdbJV0/KVxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnWyVdPylcXFxccyosXFxcXHMqKD86JyArIG51bWJlciQxICsgJ1slXT8pKD86XFxcXHMqLFxcXFxzKig/OicgKyBudW1iZXIkMSArICcpKT9cXFxcKSc7XG52YXIgaHNsYSA9ICdoc2xbYV0/XFxcXCgoJyArIG51bWJlciQxICsgJylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIkMSArICdbJV0pXFxcXHMqLFxcXFxzKignICsgbnVtYmVyJDEgKyAnWyVdKSg/OlxcXFxzKixcXFxccyooJyArIG51bWJlciQxICsgJykpP1xcXFwpJztcbnZhciBoc2xhTm9CYWNrUmVmcyA9ICdoc2xbYV0/XFxcXCgoPzonICsgbnVtYmVyJDEgKyAnKVxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnWyVdKVxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnWyVdKSg/OlxcXFxzKixcXFxccyooPzonICsgbnVtYmVyJDEgKyAnKSk/XFxcXCknO1xudmFyIGhleDMgPSAnXFxcXCNbMC05YS1mQS1GXXszfSc7XG52YXIgaGV4NiA9ICdcXFxcI1swLTlhLWZBLUZdezZ9JztcblxudmFyIGFzY2VuZGluZyA9IGZ1bmN0aW9uIGFzY2VuZGluZyhhLCBiKSB7XG4gIGlmIChhIDwgYikge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIGlmIChhID4gYikge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59O1xudmFyIGRlc2NlbmRpbmcgPSBmdW5jdGlvbiBkZXNjZW5kaW5nKGEsIGIpIHtcbiAgcmV0dXJuIC0xICogYXNjZW5kaW5nKGEsIGIpO1xufTtcblxudmFyIGV4dGVuZCA9IE9iamVjdC5hc3NpZ24gIT0gbnVsbCA/IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpIDogZnVuY3Rpb24gKHRndCkge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb2JqID0gYXJnc1tpXTtcblxuICAgIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBrZXlzLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgayA9IGtleXNbal07XG4gICAgICB0Z3Rba10gPSBvYmpba107XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRndDtcbn07XG5cbnZhciBoZXgydHVwbGUgPSBmdW5jdGlvbiBoZXgydHVwbGUoaGV4KSB7XG4gIGlmICghKGhleC5sZW5ndGggPT09IDQgfHwgaGV4Lmxlbmd0aCA9PT0gNykgfHwgaGV4WzBdICE9PSAnIycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgc2hvcnRIZXggPSBoZXgubGVuZ3RoID09PSA0O1xuICB2YXIgciwgZywgYjtcbiAgdmFyIGJhc2UgPSAxNjtcblxuICBpZiAoc2hvcnRIZXgpIHtcbiAgICByID0gcGFyc2VJbnQoaGV4WzFdICsgaGV4WzFdLCBiYXNlKTtcbiAgICBnID0gcGFyc2VJbnQoaGV4WzJdICsgaGV4WzJdLCBiYXNlKTtcbiAgICBiID0gcGFyc2VJbnQoaGV4WzNdICsgaGV4WzNdLCBiYXNlKTtcbiAgfSBlbHNlIHtcbiAgICByID0gcGFyc2VJbnQoaGV4WzFdICsgaGV4WzJdLCBiYXNlKTtcbiAgICBnID0gcGFyc2VJbnQoaGV4WzNdICsgaGV4WzRdLCBiYXNlKTtcbiAgICBiID0gcGFyc2VJbnQoaGV4WzVdICsgaGV4WzZdLCBiYXNlKTtcbiAgfVxuXG4gIHJldHVybiBbciwgZywgYl07XG59OyAvLyBnZXQgW3IsIGcsIGIsIGFdIGZyb20gaHNsKDAsIDAsIDApIG9yIGhzbGEoMCwgMCwgMCwgMClcblxudmFyIGhzbDJ0dXBsZSA9IGZ1bmN0aW9uIGhzbDJ0dXBsZShoc2wpIHtcbiAgdmFyIHJldDtcbiAgdmFyIGgsIHMsIGwsIGEsIHIsIGcsIGI7XG5cbiAgZnVuY3Rpb24gaHVlMnJnYihwLCBxLCB0KSB7XG4gICAgaWYgKHQgPCAwKSB0ICs9IDE7XG4gICAgaWYgKHQgPiAxKSB0IC09IDE7XG4gICAgaWYgKHQgPCAxIC8gNikgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7XG4gICAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHE7XG4gICAgaWYgKHQgPCAyIC8gMykgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2O1xuICAgIHJldHVybiBwO1xuICB9XG5cbiAgdmFyIG0gPSBuZXcgUmVnRXhwKCdeJyArIGhzbGEgKyAnJCcpLmV4ZWMoaHNsKTtcblxuICBpZiAobSkge1xuICAgIC8vIGdldCBodWVcbiAgICBoID0gcGFyc2VJbnQobVsxXSk7XG5cbiAgICBpZiAoaCA8IDApIHtcbiAgICAgIGggPSAoMzYwIC0gLTEgKiBoICUgMzYwKSAlIDM2MDtcbiAgICB9IGVsc2UgaWYgKGggPiAzNjApIHtcbiAgICAgIGggPSBoICUgMzYwO1xuICAgIH1cblxuICAgIGggLz0gMzYwOyAvLyBub3JtYWxpc2Ugb24gWzAsIDFdXG5cbiAgICBzID0gcGFyc2VGbG9hdChtWzJdKTtcblxuICAgIGlmIChzIDwgMCB8fCBzID4gMTAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBzYXR1cmF0aW9uIGlzIFswLCAxMDBdXG5cblxuICAgIHMgPSBzIC8gMTAwOyAvLyBub3JtYWxpc2Ugb24gWzAsIDFdXG5cbiAgICBsID0gcGFyc2VGbG9hdChtWzNdKTtcblxuICAgIGlmIChsIDwgMCB8fCBsID4gMTAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBsaWdodG5lc3MgaXMgWzAsIDEwMF1cblxuXG4gICAgbCA9IGwgLyAxMDA7IC8vIG5vcm1hbGlzZSBvbiBbMCwgMV1cblxuICAgIGEgPSBtWzRdO1xuXG4gICAgaWYgKGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYSA9IHBhcnNlRmxvYXQoYSk7XG5cbiAgICAgIGlmIChhIDwgMCB8fCBhID4gMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGFscGhhIGlzIFswLCAxXVxuXG4gICAgfSAvLyBub3csIGNvbnZlcnQgdG8gcmdiXG4gICAgLy8gY29kZSBmcm9tIGh0dHA6Ly9tamlqYWNrc29uLmNvbS8yMDA4LzAyL3JnYi10by1oc2wtYW5kLXJnYi10by1oc3YtY29sb3ItbW9kZWwtY29udmVyc2lvbi1hbGdvcml0aG1zLWluLWphdmFzY3JpcHRcblxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIHIgPSBnID0gYiA9IE1hdGgucm91bmQobCAqIDI1NSk7IC8vIGFjaHJvbWF0aWNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgICAgdmFyIHAgPSAyICogbCAtIHE7XG4gICAgICByID0gTWF0aC5yb3VuZCgyNTUgKiBodWUycmdiKHAsIHEsIGggKyAxIC8gMykpO1xuICAgICAgZyA9IE1hdGgucm91bmQoMjU1ICogaHVlMnJnYihwLCBxLCBoKSk7XG4gICAgICBiID0gTWF0aC5yb3VuZCgyNTUgKiBodWUycmdiKHAsIHEsIGggLSAxIC8gMykpO1xuICAgIH1cblxuICAgIHJldCA9IFtyLCBnLCBiLCBhXTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59OyAvLyBnZXQgW3IsIGcsIGIsIGFdIGZyb20gcmdiKDAsIDAsIDApIG9yIHJnYmEoMCwgMCwgMCwgMClcblxudmFyIHJnYjJ0dXBsZSA9IGZ1bmN0aW9uIHJnYjJ0dXBsZShyZ2IpIHtcbiAgdmFyIHJldDtcbiAgdmFyIG0gPSBuZXcgUmVnRXhwKCdeJyArIHJnYmEgKyAnJCcpLmV4ZWMocmdiKTtcblxuICBpZiAobSkge1xuICAgIHJldCA9IFtdO1xuICAgIHZhciBpc1BjdCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgICB2YXIgY2hhbm5lbCA9IG1baV07XG5cbiAgICAgIGlmIChjaGFubmVsW2NoYW5uZWwubGVuZ3RoIC0gMV0gPT09ICclJykge1xuICAgICAgICBpc1BjdFtpXSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNoYW5uZWwgPSBwYXJzZUZsb2F0KGNoYW5uZWwpO1xuXG4gICAgICBpZiAoaXNQY3RbaV0pIHtcbiAgICAgICAgY2hhbm5lbCA9IGNoYW5uZWwgLyAxMDAgKiAyNTU7IC8vIG5vcm1hbGlzZSB0byBbMCwgMjU1XVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbm5lbCA8IDAgfHwgY2hhbm5lbCA+IDI1NSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGludmFsaWQgY2hhbm5lbCB2YWx1ZVxuXG5cbiAgICAgIHJldC5wdXNoKE1hdGguZmxvb3IoY2hhbm5lbCkpO1xuICAgIH1cblxuICAgIHZhciBhdExlYXN0T25lSXNQY3QgPSBpc1BjdFsxXSB8fCBpc1BjdFsyXSB8fCBpc1BjdFszXTtcbiAgICB2YXIgYWxsQXJlUGN0ID0gaXNQY3RbMV0gJiYgaXNQY3RbMl0gJiYgaXNQY3RbM107XG5cbiAgICBpZiAoYXRMZWFzdE9uZUlzUGN0ICYmICFhbGxBcmVQY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIG11c3QgYWxsIGJlIHBlcmNlbnQgdmFsdWVzIGlmIG9uZSBpc1xuXG5cbiAgICB2YXIgYWxwaGEgPSBtWzRdO1xuXG4gICAgaWYgKGFscGhhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFscGhhID0gcGFyc2VGbG9hdChhbHBoYSk7XG5cbiAgICAgIGlmIChhbHBoYSA8IDAgfHwgYWxwaGEgPiAxKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gaW52YWxpZCBhbHBoYSB2YWx1ZVxuXG5cbiAgICAgIHJldC5wdXNoKGFscGhhKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcbnZhciBjb2xvcm5hbWUydHVwbGUgPSBmdW5jdGlvbiBjb2xvcm5hbWUydHVwbGUoY29sb3IpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvci50b0xvd2VyQ2FzZSgpXTtcbn07XG52YXIgY29sb3IydHVwbGUgPSBmdW5jdGlvbiBjb2xvcjJ0dXBsZShjb2xvcikge1xuICByZXR1cm4gKGFycmF5KGNvbG9yKSA/IGNvbG9yIDogbnVsbCkgfHwgY29sb3JuYW1lMnR1cGxlKGNvbG9yKSB8fCBoZXgydHVwbGUoY29sb3IpIHx8IHJnYjJ0dXBsZShjb2xvcikgfHwgaHNsMnR1cGxlKGNvbG9yKTtcbn07XG52YXIgY29sb3JzID0ge1xuICAvLyBzcGVjaWFsIGNvbG91ciBuYW1lc1xuICB0cmFuc3BhcmVudDogWzAsIDAsIDAsIDBdLFxuICAvLyBOQiBhbHBoYSA9PT0gMFxuICAvLyByZWd1bGFyIGNvbG91cnNcbiAgYWxpY2VibHVlOiBbMjQwLCAyNDgsIDI1NV0sXG4gIGFudGlxdWV3aGl0ZTogWzI1MCwgMjM1LCAyMTVdLFxuICBhcXVhOiBbMCwgMjU1LCAyNTVdLFxuICBhcXVhbWFyaW5lOiBbMTI3LCAyNTUsIDIxMl0sXG4gIGF6dXJlOiBbMjQwLCAyNTUsIDI1NV0sXG4gIGJlaWdlOiBbMjQ1LCAyNDUsIDIyMF0sXG4gIGJpc3F1ZTogWzI1NSwgMjI4LCAxOTZdLFxuICBibGFjazogWzAsIDAsIDBdLFxuICBibGFuY2hlZGFsbW9uZDogWzI1NSwgMjM1LCAyMDVdLFxuICBibHVlOiBbMCwgMCwgMjU1XSxcbiAgYmx1ZXZpb2xldDogWzEzOCwgNDMsIDIyNl0sXG4gIGJyb3duOiBbMTY1LCA0MiwgNDJdLFxuICBidXJseXdvb2Q6IFsyMjIsIDE4NCwgMTM1XSxcbiAgY2FkZXRibHVlOiBbOTUsIDE1OCwgMTYwXSxcbiAgY2hhcnRyZXVzZTogWzEyNywgMjU1LCAwXSxcbiAgY2hvY29sYXRlOiBbMjEwLCAxMDUsIDMwXSxcbiAgY29yYWw6IFsyNTUsIDEyNywgODBdLFxuICBjb3JuZmxvd2VyYmx1ZTogWzEwMCwgMTQ5LCAyMzddLFxuICBjb3Juc2lsazogWzI1NSwgMjQ4LCAyMjBdLFxuICBjcmltc29uOiBbMjIwLCAyMCwgNjBdLFxuICBjeWFuOiBbMCwgMjU1LCAyNTVdLFxuICBkYXJrYmx1ZTogWzAsIDAsIDEzOV0sXG4gIGRhcmtjeWFuOiBbMCwgMTM5LCAxMzldLFxuICBkYXJrZ29sZGVucm9kOiBbMTg0LCAxMzQsIDExXSxcbiAgZGFya2dyYXk6IFsxNjksIDE2OSwgMTY5XSxcbiAgZGFya2dyZWVuOiBbMCwgMTAwLCAwXSxcbiAgZGFya2dyZXk6IFsxNjksIDE2OSwgMTY5XSxcbiAgZGFya2toYWtpOiBbMTg5LCAxODMsIDEwN10sXG4gIGRhcmttYWdlbnRhOiBbMTM5LCAwLCAxMzldLFxuICBkYXJrb2xpdmVncmVlbjogWzg1LCAxMDcsIDQ3XSxcbiAgZGFya29yYW5nZTogWzI1NSwgMTQwLCAwXSxcbiAgZGFya29yY2hpZDogWzE1MywgNTAsIDIwNF0sXG4gIGRhcmtyZWQ6IFsxMzksIDAsIDBdLFxuICBkYXJrc2FsbW9uOiBbMjMzLCAxNTAsIDEyMl0sXG4gIGRhcmtzZWFncmVlbjogWzE0MywgMTg4LCAxNDNdLFxuICBkYXJrc2xhdGVibHVlOiBbNzIsIDYxLCAxMzldLFxuICBkYXJrc2xhdGVncmF5OiBbNDcsIDc5LCA3OV0sXG4gIGRhcmtzbGF0ZWdyZXk6IFs0NywgNzksIDc5XSxcbiAgZGFya3R1cnF1b2lzZTogWzAsIDIwNiwgMjA5XSxcbiAgZGFya3Zpb2xldDogWzE0OCwgMCwgMjExXSxcbiAgZGVlcHBpbms6IFsyNTUsIDIwLCAxNDddLFxuICBkZWVwc2t5Ymx1ZTogWzAsIDE5MSwgMjU1XSxcbiAgZGltZ3JheTogWzEwNSwgMTA1LCAxMDVdLFxuICBkaW1ncmV5OiBbMTA1LCAxMDUsIDEwNV0sXG4gIGRvZGdlcmJsdWU6IFszMCwgMTQ0LCAyNTVdLFxuICBmaXJlYnJpY2s6IFsxNzgsIDM0LCAzNF0sXG4gIGZsb3JhbHdoaXRlOiBbMjU1LCAyNTAsIDI0MF0sXG4gIGZvcmVzdGdyZWVuOiBbMzQsIDEzOSwgMzRdLFxuICBmdWNoc2lhOiBbMjU1LCAwLCAyNTVdLFxuICBnYWluc2Jvcm86IFsyMjAsIDIyMCwgMjIwXSxcbiAgZ2hvc3R3aGl0ZTogWzI0OCwgMjQ4LCAyNTVdLFxuICBnb2xkOiBbMjU1LCAyMTUsIDBdLFxuICBnb2xkZW5yb2Q6IFsyMTgsIDE2NSwgMzJdLFxuICBncmF5OiBbMTI4LCAxMjgsIDEyOF0sXG4gIGdyZXk6IFsxMjgsIDEyOCwgMTI4XSxcbiAgZ3JlZW46IFswLCAxMjgsIDBdLFxuICBncmVlbnllbGxvdzogWzE3MywgMjU1LCA0N10sXG4gIGhvbmV5ZGV3OiBbMjQwLCAyNTUsIDI0MF0sXG4gIGhvdHBpbms6IFsyNTUsIDEwNSwgMTgwXSxcbiAgaW5kaWFucmVkOiBbMjA1LCA5MiwgOTJdLFxuICBpbmRpZ286IFs3NSwgMCwgMTMwXSxcbiAgaXZvcnk6IFsyNTUsIDI1NSwgMjQwXSxcbiAga2hha2k6IFsyNDAsIDIzMCwgMTQwXSxcbiAgbGF2ZW5kZXI6IFsyMzAsIDIzMCwgMjUwXSxcbiAgbGF2ZW5kZXJibHVzaDogWzI1NSwgMjQwLCAyNDVdLFxuICBsYXduZ3JlZW46IFsxMjQsIDI1MiwgMF0sXG4gIGxlbW9uY2hpZmZvbjogWzI1NSwgMjUwLCAyMDVdLFxuICBsaWdodGJsdWU6IFsxNzMsIDIxNiwgMjMwXSxcbiAgbGlnaHRjb3JhbDogWzI0MCwgMTI4LCAxMjhdLFxuICBsaWdodGN5YW46IFsyMjQsIDI1NSwgMjU1XSxcbiAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IFsyNTAsIDI1MCwgMjEwXSxcbiAgbGlnaHRncmF5OiBbMjExLCAyMTEsIDIxMV0sXG4gIGxpZ2h0Z3JlZW46IFsxNDQsIDIzOCwgMTQ0XSxcbiAgbGlnaHRncmV5OiBbMjExLCAyMTEsIDIxMV0sXG4gIGxpZ2h0cGluazogWzI1NSwgMTgyLCAxOTNdLFxuICBsaWdodHNhbG1vbjogWzI1NSwgMTYwLCAxMjJdLFxuICBsaWdodHNlYWdyZWVuOiBbMzIsIDE3OCwgMTcwXSxcbiAgbGlnaHRza3libHVlOiBbMTM1LCAyMDYsIDI1MF0sXG4gIGxpZ2h0c2xhdGVncmF5OiBbMTE5LCAxMzYsIDE1M10sXG4gIGxpZ2h0c2xhdGVncmV5OiBbMTE5LCAxMzYsIDE1M10sXG4gIGxpZ2h0c3RlZWxibHVlOiBbMTc2LCAxOTYsIDIyMl0sXG4gIGxpZ2h0eWVsbG93OiBbMjU1LCAyNTUsIDIyNF0sXG4gIGxpbWU6IFswLCAyNTUsIDBdLFxuICBsaW1lZ3JlZW46IFs1MCwgMjA1LCA1MF0sXG4gIGxpbmVuOiBbMjUwLCAyNDAsIDIzMF0sXG4gIG1hZ2VudGE6IFsyNTUsIDAsIDI1NV0sXG4gIG1hcm9vbjogWzEyOCwgMCwgMF0sXG4gIG1lZGl1bWFxdWFtYXJpbmU6IFsxMDIsIDIwNSwgMTcwXSxcbiAgbWVkaXVtYmx1ZTogWzAsIDAsIDIwNV0sXG4gIG1lZGl1bW9yY2hpZDogWzE4NiwgODUsIDIxMV0sXG4gIG1lZGl1bXB1cnBsZTogWzE0NywgMTEyLCAyMTldLFxuICBtZWRpdW1zZWFncmVlbjogWzYwLCAxNzksIDExM10sXG4gIG1lZGl1bXNsYXRlYmx1ZTogWzEyMywgMTA0LCAyMzhdLFxuICBtZWRpdW1zcHJpbmdncmVlbjogWzAsIDI1MCwgMTU0XSxcbiAgbWVkaXVtdHVycXVvaXNlOiBbNzIsIDIwOSwgMjA0XSxcbiAgbWVkaXVtdmlvbGV0cmVkOiBbMTk5LCAyMSwgMTMzXSxcbiAgbWlkbmlnaHRibHVlOiBbMjUsIDI1LCAxMTJdLFxuICBtaW50Y3JlYW06IFsyNDUsIDI1NSwgMjUwXSxcbiAgbWlzdHlyb3NlOiBbMjU1LCAyMjgsIDIyNV0sXG4gIG1vY2Nhc2luOiBbMjU1LCAyMjgsIDE4MV0sXG4gIG5hdmFqb3doaXRlOiBbMjU1LCAyMjIsIDE3M10sXG4gIG5hdnk6IFswLCAwLCAxMjhdLFxuICBvbGRsYWNlOiBbMjUzLCAyNDUsIDIzMF0sXG4gIG9saXZlOiBbMTI4LCAxMjgsIDBdLFxuICBvbGl2ZWRyYWI6IFsxMDcsIDE0MiwgMzVdLFxuICBvcmFuZ2U6IFsyNTUsIDE2NSwgMF0sXG4gIG9yYW5nZXJlZDogWzI1NSwgNjksIDBdLFxuICBvcmNoaWQ6IFsyMTgsIDExMiwgMjE0XSxcbiAgcGFsZWdvbGRlbnJvZDogWzIzOCwgMjMyLCAxNzBdLFxuICBwYWxlZ3JlZW46IFsxNTIsIDI1MSwgMTUyXSxcbiAgcGFsZXR1cnF1b2lzZTogWzE3NSwgMjM4LCAyMzhdLFxuICBwYWxldmlvbGV0cmVkOiBbMjE5LCAxMTIsIDE0N10sXG4gIHBhcGF5YXdoaXA6IFsyNTUsIDIzOSwgMjEzXSxcbiAgcGVhY2hwdWZmOiBbMjU1LCAyMTgsIDE4NV0sXG4gIHBlcnU6IFsyMDUsIDEzMywgNjNdLFxuICBwaW5rOiBbMjU1LCAxOTIsIDIwM10sXG4gIHBsdW06IFsyMjEsIDE2MCwgMjIxXSxcbiAgcG93ZGVyYmx1ZTogWzE3NiwgMjI0LCAyMzBdLFxuICBwdXJwbGU6IFsxMjgsIDAsIDEyOF0sXG4gIHJlZDogWzI1NSwgMCwgMF0sXG4gIHJvc3licm93bjogWzE4OCwgMTQzLCAxNDNdLFxuICByb3lhbGJsdWU6IFs2NSwgMTA1LCAyMjVdLFxuICBzYWRkbGVicm93bjogWzEzOSwgNjksIDE5XSxcbiAgc2FsbW9uOiBbMjUwLCAxMjgsIDExNF0sXG4gIHNhbmR5YnJvd246IFsyNDQsIDE2NCwgOTZdLFxuICBzZWFncmVlbjogWzQ2LCAxMzksIDg3XSxcbiAgc2Vhc2hlbGw6IFsyNTUsIDI0NSwgMjM4XSxcbiAgc2llbm5hOiBbMTYwLCA4MiwgNDVdLFxuICBzaWx2ZXI6IFsxOTIsIDE5MiwgMTkyXSxcbiAgc2t5Ymx1ZTogWzEzNSwgMjA2LCAyMzVdLFxuICBzbGF0ZWJsdWU6IFsxMDYsIDkwLCAyMDVdLFxuICBzbGF0ZWdyYXk6IFsxMTIsIDEyOCwgMTQ0XSxcbiAgc2xhdGVncmV5OiBbMTEyLCAxMjgsIDE0NF0sXG4gIHNub3c6IFsyNTUsIDI1MCwgMjUwXSxcbiAgc3ByaW5nZ3JlZW46IFswLCAyNTUsIDEyN10sXG4gIHN0ZWVsYmx1ZTogWzcwLCAxMzAsIDE4MF0sXG4gIHRhbjogWzIxMCwgMTgwLCAxNDBdLFxuICB0ZWFsOiBbMCwgMTI4LCAxMjhdLFxuICB0aGlzdGxlOiBbMjE2LCAxOTEsIDIxNl0sXG4gIHRvbWF0bzogWzI1NSwgOTksIDcxXSxcbiAgdHVycXVvaXNlOiBbNjQsIDIyNCwgMjA4XSxcbiAgdmlvbGV0OiBbMjM4LCAxMzAsIDIzOF0sXG4gIHdoZWF0OiBbMjQ1LCAyMjIsIDE3OV0sXG4gIHdoaXRlOiBbMjU1LCAyNTUsIDI1NV0sXG4gIHdoaXRlc21va2U6IFsyNDUsIDI0NSwgMjQ1XSxcbiAgeWVsbG93OiBbMjU1LCAyNTUsIDBdLFxuICB5ZWxsb3dncmVlbjogWzE1NCwgMjA1LCA1MF1cbn07XG5cbnZhciBzZXRNYXAgPSBmdW5jdGlvbiBzZXRNYXAob3B0aW9ucykge1xuICB2YXIgb2JqID0gb3B0aW9ucy5tYXA7XG4gIHZhciBrZXlzID0gb3B0aW9ucy5rZXlzO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICBpZiAocGxhaW5PYmplY3Qoa2V5KSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1RyaWVkIHRvIHNldCBtYXAgd2l0aCBvYmplY3Qga2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKGkgPCBrZXlzLmxlbmd0aCAtIDEpIHtcbiAgICAgIC8vIGV4dGVuZCB0aGUgbWFwIGlmIG5lY2Vzc2FyeVxuICAgICAgaWYgKG9ialtrZXldID09IG51bGwpIHtcbiAgICAgICAgb2JqW2tleV0gPSB7fTtcbiAgICAgIH1cblxuICAgICAgb2JqID0gb2JqW2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNldCB0aGUgdmFsdWVcbiAgICAgIG9ialtrZXldID0gb3B0aW9ucy52YWx1ZTtcbiAgICB9XG4gIH1cbn07IC8vIGdldHMgdGhlIHZhbHVlIGluIGEgbWFwIGV2ZW4gaWYgaXQncyBub3QgYnVpbHQgaW4gcGxhY2VzXG5cbnZhciBnZXRNYXAgPSBmdW5jdGlvbiBnZXRNYXAob3B0aW9ucykge1xuICB2YXIgb2JqID0gb3B0aW9ucy5tYXA7XG4gIHZhciBrZXlzID0gb3B0aW9ucy5rZXlzO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICBpZiAocGxhaW5PYmplY3Qoa2V5KSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1RyaWVkIHRvIGdldCBtYXAgd2l0aCBvYmplY3Qga2V5Jyk7XG4gICAgfVxuXG4gICAgb2JqID0gb2JqW2tleV07XG5cbiAgICBpZiAob2JqID09IG51bGwpIHtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn07IC8vIGRlbGV0ZXMgdGhlIGVudHJ5IGluIHRoZSBtYXBcblxudmFyIHBlcmZvcm1hbmNlID0gd2luZG93JDEgPyB3aW5kb3ckMS5wZXJmb3JtYW5jZSA6IG51bGw7XG52YXIgcG5vdyA9IHBlcmZvcm1hbmNlICYmIHBlcmZvcm1hbmNlLm5vdyA/IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpO1xufSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIERhdGUubm93KCk7XG59O1xuXG52YXIgcmFmID0gZnVuY3Rpb24gKCkge1xuICBpZiAod2luZG93JDEpIHtcbiAgICBpZiAod2luZG93JDEucmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHdpbmRvdyQxLnJlcXVlc3RBbmltYXRpb25GcmFtZShmbik7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAod2luZG93JDEubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHdpbmRvdyQxLm1velJlcXVlc3RBbmltYXRpb25GcmFtZShmbik7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAod2luZG93JDEud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHdpbmRvdyQxLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZShmbik7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAod2luZG93JDEubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgd2luZG93JDEubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgaWYgKGZuKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm4ocG5vdygpKTtcbiAgICAgIH0sIDEwMDAgLyA2MCk7XG4gICAgfVxuICB9O1xufSgpO1xuXG52YXIgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKSB7XG4gIHJldHVybiByYWYoZm4pO1xufTtcbnZhciBwZXJmb3JtYW5jZU5vdyA9IHBub3c7XG5cbnZhciBERUZBVUxUX0hBU0hfU0VFRCA9IDkyNjE7XG52YXIgSyA9IDY1NTk5OyAvLyAzNyBhbHNvIHdvcmtzIHByZXR0eSB3ZWxsXG5cbnZhciBERUZBVUxUX0hBU0hfU0VFRF9BTFQgPSA1MzgxO1xudmFyIGhhc2hJdGVyYWJsZUludHMgPSBmdW5jdGlvbiBoYXNoSXRlcmFibGVJbnRzKGl0ZXJhdG9yKSB7XG4gIHZhciBzZWVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBERUZBVUxUX0hBU0hfU0VFRDtcbiAgLy8gc2RibS9zdHJpbmctaGFzaFxuICB2YXIgaGFzaCA9IHNlZWQ7XG4gIHZhciBlbnRyeTtcblxuICBmb3IgKDs7KSB7XG4gICAgZW50cnkgPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICBpZiAoZW50cnkuZG9uZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaGFzaCA9IGhhc2ggKiBLICsgZW50cnkudmFsdWUgfCAwO1xuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59O1xudmFyIGhhc2hJbnQgPSBmdW5jdGlvbiBoYXNoSW50KG51bSkge1xuICB2YXIgc2VlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogREVGQVVMVF9IQVNIX1NFRUQ7XG4gIC8vIHNkYm0vc3RyaW5nLWhhc2hcbiAgcmV0dXJuIHNlZWQgKiBLICsgbnVtIHwgMDtcbn07XG52YXIgaGFzaEludEFsdCA9IGZ1bmN0aW9uIGhhc2hJbnRBbHQobnVtKSB7XG4gIHZhciBzZWVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBERUZBVUxUX0hBU0hfU0VFRF9BTFQ7XG4gIC8vIGRqYjIvc3RyaW5nLWhhc2hcbiAgcmV0dXJuIChzZWVkIDw8IDUpICsgc2VlZCArIG51bSB8IDA7XG59O1xudmFyIGNvbWJpbmVIYXNoZXMgPSBmdW5jdGlvbiBjb21iaW5lSGFzaGVzKGhhc2gxLCBoYXNoMikge1xuICByZXR1cm4gaGFzaDEgKiAweDIwMDAwMCArIGhhc2gyO1xufTtcbnZhciBjb21iaW5lSGFzaGVzQXJyYXkgPSBmdW5jdGlvbiBjb21iaW5lSGFzaGVzQXJyYXkoaGFzaGVzKSB7XG4gIHJldHVybiBoYXNoZXNbMF0gKiAweDIwMDAwMCArIGhhc2hlc1sxXTtcbn07XG52YXIgaGFzaEFycmF5cyA9IGZ1bmN0aW9uIGhhc2hBcnJheXMoaGFzaGVzMSwgaGFzaGVzMikge1xuICByZXR1cm4gW2hhc2hJbnQoaGFzaGVzMVswXSwgaGFzaGVzMlswXSksIGhhc2hJbnRBbHQoaGFzaGVzMVsxXSwgaGFzaGVzMlsxXSldO1xufTtcbnZhciBoYXNoSW50c0FycmF5ID0gZnVuY3Rpb24gaGFzaEludHNBcnJheShpbnRzLCBzZWVkKSB7XG4gIHZhciBlbnRyeSA9IHtcbiAgICB2YWx1ZTogMCxcbiAgICBkb25lOiBmYWxzZVxuICB9O1xuICB2YXIgaSA9IDA7XG4gIHZhciBsZW5ndGggPSBpbnRzLmxlbmd0aDtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICBpZiAoaSA8IGxlbmd0aCkge1xuICAgICAgICBlbnRyeS52YWx1ZSA9IGludHNbaSsrXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudHJ5LmRvbmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW50cnk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gaGFzaEl0ZXJhYmxlSW50cyhpdGVyYXRvciwgc2VlZCk7XG59O1xudmFyIGhhc2hTdHJpbmcgPSBmdW5jdGlvbiBoYXNoU3RyaW5nKHN0ciwgc2VlZCkge1xuICB2YXIgZW50cnkgPSB7XG4gICAgdmFsdWU6IDAsXG4gICAgZG9uZTogZmFsc2VcbiAgfTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICBpZiAoaSA8IGxlbmd0aCkge1xuICAgICAgICBlbnRyeS52YWx1ZSA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnRyeS5kb25lID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGhhc2hJdGVyYWJsZUludHMoaXRlcmF0b3IsIHNlZWQpO1xufTtcbnZhciBoYXNoU3RyaW5ncyA9IGZ1bmN0aW9uIGhhc2hTdHJpbmdzKCkge1xuICByZXR1cm4gaGFzaFN0cmluZ3NBcnJheShhcmd1bWVudHMpO1xufTtcbnZhciBoYXNoU3RyaW5nc0FycmF5ID0gZnVuY3Rpb24gaGFzaFN0cmluZ3NBcnJheShzdHJzKSB7XG4gIHZhciBoYXNoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3Rycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzdHIgPSBzdHJzW2ldO1xuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGhhc2ggPSBoYXNoU3RyaW5nKHN0cik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhc2ggPSBoYXNoU3RyaW5nKHN0ciwgaGFzaCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59O1xuXG4vKmdsb2JhbCBjb25zb2xlICovXG52YXIgd2FybmluZ3NFbmFibGVkID0gdHJ1ZTtcbnZhciB3YXJuU3VwcG9ydGVkID0gY29uc29sZS53YXJuICE9IG51bGw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuXG52YXIgdHJhY2VTdXBwb3J0ZWQgPSBjb25zb2xlLnRyYWNlICE9IG51bGw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuXG52YXIgTUFYX0lOVCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIHx8IDkwMDcxOTkyNTQ3NDA5OTE7XG52YXIgdHJ1ZWlmeSA9IGZ1bmN0aW9uIHRydWVpZnkoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBmYWxzaWZ5ID0gZnVuY3Rpb24gZmFsc2lmeSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufTtcbnZhciB6ZXJvaWZ5ID0gZnVuY3Rpb24gemVyb2lmeSgpIHtcbiAgcmV0dXJuIDA7XG59O1xudmFyIG5vb3AgPSBmdW5jdGlvbiBub29wKCkge307XG52YXIgZXJyb3IgPSBmdW5jdGlvbiBlcnJvcihtc2cpIHtcbiAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG59O1xudmFyIHdhcm5pbmdzID0gZnVuY3Rpb24gd2FybmluZ3MoZW5hYmxlZCkge1xuICBpZiAoZW5hYmxlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgd2FybmluZ3NFbmFibGVkID0gISFlbmFibGVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB3YXJuaW5nc0VuYWJsZWQ7XG4gIH1cbn07XG52YXIgd2FybiA9IGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgaWYgKCF3YXJuaW5ncygpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHdhcm5TdXBwb3J0ZWQpIHtcbiAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhtc2cpO1xuXG4gICAgaWYgKHRyYWNlU3VwcG9ydGVkKSB7XG4gICAgICBjb25zb2xlLnRyYWNlKCk7XG4gICAgfVxuICB9XG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG52YXIgY2xvbmUgPSBmdW5jdGlvbiBjbG9uZShvYmopIHtcbiAgcmV0dXJuIGV4dGVuZCh7fSwgb2JqKTtcbn07IC8vIGdldHMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIGFyZ3VtZW50XG5cbnZhciBjb3B5ID0gZnVuY3Rpb24gY29weShvYmopIHtcbiAgaWYgKG9iaiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGlmIChhcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5zbGljZSgpO1xuICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KG9iaikpIHtcbiAgICByZXR1cm4gY2xvbmUob2JqKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG59O1xudmFyIGNvcHlBcnJheSA9IGZ1bmN0aW9uIGNvcHlBcnJheShhcnIpIHtcbiAgcmV0dXJuIGFyci5zbGljZSgpO1xufTtcbnZhciB1dWlkID0gZnVuY3Rpb24gdXVpZChhLCBiXG4vKiBwbGFjZWhvbGRlcnMgKi9cbikge1xuICBmb3IgKCAvLyBsb29wIDopXG4gIGIgPSBhID0gJyc7IC8vIGIgLSByZXN1bHQgLCBhIC0gbnVtZXJpYyBsZXRpYWJsZVxuICBhKysgPCAzNjsgLy9cbiAgYiArPSBhICogNTEgJiA1MiAvLyBpZiBcImFcIiBpcyBub3QgOSBvciAxNCBvciAxOSBvciAyNFxuICA/IC8vICByZXR1cm4gYSByYW5kb20gbnVtYmVyIG9yIDRcbiAgKGEgXiAxNSAvLyBpZiBcImFcIiBpcyBub3QgMTVcbiAgPyAvLyBnZW5ldGF0ZSBhIHJhbmRvbSBudW1iZXIgZnJvbSAwIHRvIDE1XG4gIDggXiBNYXRoLnJhbmRvbSgpICogKGEgXiAyMCA/IDE2IDogNCkgLy8gdW5sZXNzIFwiYVwiIGlzIDIwLCBpbiB3aGljaCBjYXNlIGEgcmFuZG9tIG51bWJlciBmcm9tIDggdG8gMTFcbiAgOiA0IC8vICBvdGhlcndpc2UgNFxuICApLnRvU3RyaW5nKDE2KSA6ICctJyAvLyAgaW4gb3RoZXIgY2FzZXMgKGlmIFwiYVwiIGlzIDksMTQsMTksMjQpIGluc2VydCBcIi1cIlxuICApIHtcbiAgfVxuXG4gIHJldHVybiBiO1xufTtcbnZhciBfc3RhdGljRW1wdHlPYmplY3QgPSB7fTtcbnZhciBzdGF0aWNFbXB0eU9iamVjdCA9IGZ1bmN0aW9uIHN0YXRpY0VtcHR5T2JqZWN0KCkge1xuICByZXR1cm4gX3N0YXRpY0VtcHR5T2JqZWN0O1xufTtcbnZhciBkZWZhdWx0cyA9IGZ1bmN0aW9uIGRlZmF1bHRzKF9kZWZhdWx0cykge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKF9kZWZhdWx0cyk7XG4gIHJldHVybiBmdW5jdGlvbiAob3B0cykge1xuICAgIHZhciBmaWxsZWRPcHRzID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgdmFyIG9wdFZhbCA9IG9wdHMgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9wdHNba2V5XTtcbiAgICAgIGZpbGxlZE9wdHNba2V5XSA9IG9wdFZhbCA9PT0gdW5kZWZpbmVkID8gX2RlZmF1bHRzW2tleV0gOiBvcHRWYWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGxlZE9wdHM7XG4gIH07XG59O1xudmFyIHJlbW92ZUZyb21BcnJheSA9IGZ1bmN0aW9uIHJlbW92ZUZyb21BcnJheShhcnIsIGVsZSwgb25lQ29weSkge1xuICBmb3IgKHZhciBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGFycltpXSA9PT0gZWxlKSB7XG4gICAgICBhcnIuc3BsaWNlKGksIDEpO1xuXG4gICAgICBpZiAob25lQ29weSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG52YXIgY2xlYXJBcnJheSA9IGZ1bmN0aW9uIGNsZWFyQXJyYXkoYXJyKSB7XG4gIGFyci5zcGxpY2UoMCwgYXJyLmxlbmd0aCk7XG59O1xudmFyIHB1c2ggPSBmdW5jdGlvbiBwdXNoKGFyciwgb3RoZXJBcnIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdGhlckFyci5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbCA9IG90aGVyQXJyW2ldO1xuICAgIGFyci5wdXNoKGVsKTtcbiAgfVxufTtcbnZhciBnZXRQcmVmaXhlZFByb3BlcnR5ID0gZnVuY3Rpb24gZ2V0UHJlZml4ZWRQcm9wZXJ0eShvYmosIHByb3BOYW1lLCBwcmVmaXgpIHtcbiAgaWYgKHByZWZpeCkge1xuICAgIHByb3BOYW1lID0gcHJlcGVuZENhbWVsKHByZWZpeCwgcHJvcE5hbWUpOyAvLyBlLmcuIChsYWJlbFdpZHRoLCBzb3VyY2UpID0+IHNvdXJjZUxhYmVsV2lkdGhcbiAgfVxuXG4gIHJldHVybiBvYmpbcHJvcE5hbWVdO1xufTtcbnZhciBzZXRQcmVmaXhlZFByb3BlcnR5ID0gZnVuY3Rpb24gc2V0UHJlZml4ZWRQcm9wZXJ0eShvYmosIHByb3BOYW1lLCBwcmVmaXgsIHZhbHVlKSB7XG4gIGlmIChwcmVmaXgpIHtcbiAgICBwcm9wTmFtZSA9IHByZXBlbmRDYW1lbChwcmVmaXgsIHByb3BOYW1lKTsgLy8gZS5nLiAobGFiZWxXaWR0aCwgc291cmNlKSA9PiBzb3VyY2VMYWJlbFdpZHRoXG4gIH1cblxuICBvYmpbcHJvcE5hbWVdID0gdmFsdWU7XG59O1xuXG4vKiBnbG9iYWwgTWFwICovXG52YXIgT2JqZWN0TWFwID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gT2JqZWN0TWFwKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBPYmplY3RNYXApO1xuXG4gICAgdGhpcy5fb2JqID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoT2JqZWN0TWFwLCBbe1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGtleSwgdmFsKSB7XG4gICAgICB0aGlzLl9vYmpba2V5XSA9IHZhbDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZWxldGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2RlbGV0ZShrZXkpIHtcbiAgICAgIHRoaXMuX29ialtrZXldID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5fb2JqID0ge307XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fb2JqW2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vYmpba2V5XTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gT2JqZWN0TWFwO1xufSgpO1xuXG52YXIgTWFwJDEgPSB0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJyA/IE1hcCA6IE9iamVjdE1hcDtcblxuLyogZ2xvYmFsIFNldCAqL1xudmFyIHVuZGVmID0gIFwidW5kZWZpbmVkXCIgO1xuXG52YXIgT2JqZWN0U2V0ID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gT2JqZWN0U2V0KGFycmF5T3JPYmplY3RTZXQpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgT2JqZWN0U2V0KTtcblxuICAgIHRoaXMuX29iaiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5zaXplID0gMDtcblxuICAgIGlmIChhcnJheU9yT2JqZWN0U2V0ICE9IG51bGwpIHtcbiAgICAgIHZhciBhcnI7XG5cbiAgICAgIGlmIChhcnJheU9yT2JqZWN0U2V0Lmluc3RhbmNlU3RyaW5nICE9IG51bGwgJiYgYXJyYXlPck9iamVjdFNldC5pbnN0YW5jZVN0cmluZygpID09PSB0aGlzLmluc3RhbmNlU3RyaW5nKCkpIHtcbiAgICAgICAgYXJyID0gYXJyYXlPck9iamVjdFNldC50b0FycmF5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnIgPSBhcnJheU9yT2JqZWN0U2V0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLmFkZChhcnJbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhPYmplY3RTZXQsIFt7XG4gICAga2V5OiBcImluc3RhbmNlU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgICAgcmV0dXJuICdzZXQnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkKHZhbCkge1xuICAgICAgdmFyIG8gPSB0aGlzLl9vYmo7XG5cbiAgICAgIGlmIChvW3ZhbF0gIT09IDEpIHtcbiAgICAgICAgb1t2YWxdID0gMTtcbiAgICAgICAgdGhpcy5zaXplKys7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlbGV0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZGVsZXRlKHZhbCkge1xuICAgICAgdmFyIG8gPSB0aGlzLl9vYmo7XG5cbiAgICAgIGlmIChvW3ZhbF0gPT09IDEpIHtcbiAgICAgICAgb1t2YWxdID0gMDtcbiAgICAgICAgdGhpcy5zaXplLS07XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5fb2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhcyh2YWwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vYmpbdmFsXSA9PT0gMTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9BcnJheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0FycmF5KCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX29iaikuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmhhcyhrZXkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvckVhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZykge1xuICAgICAgcmV0dXJuIHRoaXMudG9BcnJheSgpLmZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBPYmplY3RTZXQ7XG59KCk7XG5cbnZhciBTZXQkMSA9ICh0eXBlb2YgU2V0ID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoU2V0KSkgIT09IHVuZGVmID8gU2V0IDogT2JqZWN0U2V0O1xuXG52YXIgRWxlbWVudCA9IGZ1bmN0aW9uIEVsZW1lbnQoY3ksIHBhcmFtcykge1xuICB2YXIgcmVzdG9yZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogdHJ1ZTtcblxuICBpZiAoY3kgPT09IHVuZGVmaW5lZCB8fCBwYXJhbXMgPT09IHVuZGVmaW5lZCB8fCAhY29yZShjeSkpIHtcbiAgICBlcnJvcignQW4gZWxlbWVudCBtdXN0IGhhdmUgYSBjb3JlIHJlZmVyZW5jZSBhbmQgcGFyYW1ldGVycyBzZXQnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZ3JvdXAgPSBwYXJhbXMuZ3JvdXA7IC8vIHRyeSB0byBhdXRvbWF0aWNhbGx5IGluZmVyIHRoZSBncm91cCBpZiB1bnNwZWNpZmllZFxuXG4gIGlmIChncm91cCA9PSBudWxsKSB7XG4gICAgaWYgKHBhcmFtcy5kYXRhICYmIHBhcmFtcy5kYXRhLnNvdXJjZSAhPSBudWxsICYmIHBhcmFtcy5kYXRhLnRhcmdldCAhPSBudWxsKSB7XG4gICAgICBncm91cCA9ICdlZGdlcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3VwID0gJ25vZGVzJztcbiAgICB9XG4gIH0gLy8gdmFsaWRhdGUgZ3JvdXBcblxuXG4gIGlmIChncm91cCAhPT0gJ25vZGVzJyAmJiBncm91cCAhPT0gJ2VkZ2VzJykge1xuICAgIGVycm9yKCdBbiBlbGVtZW50IG11c3QgYmUgb2YgdHlwZSBgbm9kZXNgIG9yIGBlZGdlc2A7IHlvdSBzcGVjaWZpZWQgYCcgKyBncm91cCArICdgJyk7XG4gICAgcmV0dXJuO1xuICB9IC8vIG1ha2UgdGhlIGVsZW1lbnQgYXJyYXktbGlrZSwganVzdCBsaWtlIGEgY29sbGVjdGlvblxuXG5cbiAgdGhpcy5sZW5ndGggPSAxO1xuICB0aGlzWzBdID0gdGhpczsgLy8gTk9URTogd2hlbiBzb21ldGhpbmcgaXMgYWRkZWQgaGVyZSwgYWRkIGFsc28gdG8gZWxlLmpzb24oKVxuXG4gIHZhciBfcCA9IHRoaXMuX3ByaXZhdGUgPSB7XG4gICAgY3k6IGN5LFxuICAgIHNpbmdsZTogdHJ1ZSxcbiAgICAvLyBpbmRpY2F0ZXMgdGhpcyBpcyBhbiBlbGVtZW50XG4gICAgZGF0YTogcGFyYW1zLmRhdGEgfHwge30sXG4gICAgLy8gZGF0YSBvYmplY3RcbiAgICBwb3NpdGlvbjogcGFyYW1zLnBvc2l0aW9uIHx8IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfSxcbiAgICAvLyAoeCwgeSkgcG9zaXRpb24gcGFpclxuICAgIGF1dG9XaWR0aDogdW5kZWZpbmVkLFxuICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgb2Ygbm9kZXMgY2FsY3VsYXRlZCBieSB0aGUgcmVuZGVyZXIgd2hlbiBzZXQgdG8gc3BlY2lhbCAnYXV0bycgdmFsdWVcbiAgICBhdXRvSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgYXV0b1BhZGRpbmc6IHVuZGVmaW5lZCxcbiAgICBjb21wb3VuZEJvdW5kc0NsZWFuOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRoZSBjb21wb3VuZCBkaW1lbnNpb25zIG5lZWQgdG8gYmUgcmVjYWxjdWxhdGVkIHRoZSBuZXh0IHRpbWUgZGltZW5zaW9ucyBhcmUgcmVhZFxuICAgIGxpc3RlbmVyczogW10sXG4gICAgLy8gYXJyYXkgb2YgYm91bmQgbGlzdGVuZXJzXG4gICAgZ3JvdXA6IGdyb3VwLFxuICAgIC8vIHN0cmluZzsgJ25vZGVzJyBvciAnZWRnZXMnXG4gICAgc3R5bGU6IHt9LFxuICAgIC8vIHByb3BlcnRpZXMgYXMgc2V0IGJ5IHRoZSBzdHlsZVxuICAgIHJzdHlsZToge30sXG4gICAgLy8gcHJvcGVydGllcyBmb3Igc3R5bGUgc2VudCBmcm9tIHRoZSByZW5kZXJlciB0byB0aGUgY29yZVxuICAgIHN0eWxlQ3h0czogW10sXG4gICAgLy8gYXBwbGllZCBzdHlsZSBjb250ZXh0cyBmcm9tIHRoZSBzdHlsZXJcbiAgICBzdHlsZUtleXM6IHt9LFxuICAgIC8vIHBlci1ncm91cCBrZXlzIG9mIHN0eWxlIHByb3BlcnR5IHZhbHVlc1xuICAgIHJlbW92ZWQ6IHRydWUsXG4gICAgLy8gd2hldGhlciBpdCdzIGluc2lkZSB0aGUgdmlzOyB0cnVlIGlmIHJlbW92ZWQgKHNldCB0cnVlIGhlcmUgc2luY2Ugd2UgY2FsbCByZXN0b3JlKVxuICAgIHNlbGVjdGVkOiBwYXJhbXMuc2VsZWN0ZWQgPyB0cnVlIDogZmFsc2UsXG4gICAgLy8gd2hldGhlciBpdCdzIHNlbGVjdGVkXG4gICAgc2VsZWN0YWJsZTogcGFyYW1zLnNlbGVjdGFibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBwYXJhbXMuc2VsZWN0YWJsZSA/IHRydWUgOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIGl0J3Mgc2VsZWN0YWJsZVxuICAgIGxvY2tlZDogcGFyYW1zLmxvY2tlZCA/IHRydWUgOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGxvY2tlZCAoY2Fubm90IGJlIG1vdmVkKVxuICAgIGdyYWJiZWQ6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgZ3JhYmJlZCBieSB0aGUgbW91c2U7IHJlbmRlcmVyIHNldHMgdGhpcyBwcml2YXRlbHlcbiAgICBncmFiYmFibGU6IHBhcmFtcy5ncmFiYmFibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBwYXJhbXMuZ3JhYmJhYmxlID8gdHJ1ZSA6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdGhlIGVsZW1lbnQgY2FuIGJlIGdyYWJiZWRcbiAgICBwYW5uYWJsZTogcGFyYW1zLnBhbm5hYmxlID09PSB1bmRlZmluZWQgPyBncm91cCA9PT0gJ2VkZ2VzJyA/IHRydWUgOiBmYWxzZSA6IHBhcmFtcy5wYW5uYWJsZSA/IHRydWUgOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRoZSBlbGVtZW50IGhhcyBwYXNzdGhyb3VnaCBwYW5uaW5nIGVuYWJsZWRcbiAgICBhY3RpdmU6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgYWN0aXZlIGZyb20gdXNlciBpbnRlcmFjdGlvblxuICAgIGNsYXNzZXM6IG5ldyBTZXQkMSgpLFxuICAgIC8vIG1hcCAoIGNsYXNzTmFtZSA9PiB0cnVlIClcbiAgICBhbmltYXRpb246IHtcbiAgICAgIC8vIG9iamVjdCBmb3IgY3VycmVudGx5LXJ1bm5pbmcgYW5pbWF0aW9uc1xuICAgICAgY3VycmVudDogW10sXG4gICAgICBxdWV1ZTogW11cbiAgICB9LFxuICAgIHJzY3JhdGNoOiB7fSxcbiAgICAvLyBvYmplY3QgaW4gd2hpY2ggdGhlIHJlbmRlcmVyIGNhbiBzdG9yZSBpbmZvcm1hdGlvblxuICAgIHNjcmF0Y2g6IHBhcmFtcy5zY3JhdGNoIHx8IHt9LFxuICAgIC8vIHNjcmF0Y2ggb2JqZWN0c1xuICAgIGVkZ2VzOiBbXSxcbiAgICAvLyBhcnJheSBvZiBjb25uZWN0ZWQgZWRnZXNcbiAgICBjaGlsZHJlbjogW10sXG4gICAgLy8gYXJyYXkgb2YgY2hpbGRyZW5cbiAgICBwYXJlbnQ6IG51bGwsXG4gICAgLy8gcGFyZW50IHJlZlxuICAgIHRyYXZlcnNhbENhY2hlOiB7fSxcbiAgICAvLyBjYWNoZSBvZiBvdXRwdXQgb2YgdHJhdmVyc2FsIGZ1bmN0aW9uc1xuICAgIGJhY2tncm91bmRpbmc6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgYmFja2dyb3VuZCBpbWFnZXMgYXJlIGxvYWRpbmdcbiAgICBiYkNhY2hlOiBudWxsLFxuICAgIC8vIGNhY2hlIG9mIHRoZSBjdXJyZW50IGJvdW5kaW5nIGJveFxuICAgIGJiQ2FjaGVTaGlmdDoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9LFxuICAgIC8vIHNoaWZ0IGFwcGxpZWQgdG8gY2FjaGVkIGJiIHRvIGJlIGFwcGxpZWQgb24gbmV4dCBnZXRcbiAgICBib2R5Qm91bmRzOiBudWxsLFxuICAgIC8vIGJvdW5kcyBjYWNoZSBvZiBlbGVtZW50IGJvZHksIHcvbyBvdmVybGF5XG4gICAgb3ZlcmxheUJvdW5kczogbnVsbCxcbiAgICAvLyBib3VuZHMgY2FjaGUgb2YgZWxlbWVudCBib2R5LCBpbmNsdWRpbmcgb3ZlcmxheVxuICAgIGxhYmVsQm91bmRzOiB7XG4gICAgICAvLyBib3VuZHMgY2FjaGUgb2YgbGFiZWxzXG4gICAgICBhbGw6IG51bGwsXG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICBtYWluOiBudWxsXG4gICAgfSxcbiAgICBhcnJvd0JvdW5kczoge1xuICAgICAgLy8gYm91bmRzIGNhY2hlIG9mIGVkZ2UgYXJyb3dzXG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAnbWlkLXNvdXJjZSc6IG51bGwsXG4gICAgICAnbWlkLXRhcmdldCc6IG51bGxcbiAgICB9XG4gIH07XG5cbiAgaWYgKF9wLnBvc2l0aW9uLnggPT0gbnVsbCkge1xuICAgIF9wLnBvc2l0aW9uLnggPSAwO1xuICB9XG5cbiAgaWYgKF9wLnBvc2l0aW9uLnkgPT0gbnVsbCkge1xuICAgIF9wLnBvc2l0aW9uLnkgPSAwO1xuICB9IC8vIHJlbmRlcmVkUG9zaXRpb24gb3ZlcnJpZGVzIGlmIHNwZWNpZmllZFxuXG5cbiAgaWYgKHBhcmFtcy5yZW5kZXJlZFBvc2l0aW9uKSB7XG4gICAgdmFyIHJwb3MgPSBwYXJhbXMucmVuZGVyZWRQb3NpdGlvbjtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgX3AucG9zaXRpb24gPSB7XG4gICAgICB4OiAocnBvcy54IC0gcGFuLngpIC8gem9vbSxcbiAgICAgIHk6IChycG9zLnkgLSBwYW4ueSkgLyB6b29tXG4gICAgfTtcbiAgfVxuXG4gIHZhciBjbGFzc2VzID0gW107XG5cbiAgaWYgKGFycmF5KHBhcmFtcy5jbGFzc2VzKSkge1xuICAgIGNsYXNzZXMgPSBwYXJhbXMuY2xhc3NlcztcbiAgfSBlbHNlIGlmIChzdHJpbmcocGFyYW1zLmNsYXNzZXMpKSB7XG4gICAgY2xhc3NlcyA9IHBhcmFtcy5jbGFzc2VzLnNwbGl0KC9cXHMrLyk7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGNsYXNzZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGNscyA9IGNsYXNzZXNbaV07XG5cbiAgICBpZiAoIWNscyB8fCBjbHMgPT09ICcnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBfcC5jbGFzc2VzLmFkZChjbHMpO1xuICB9XG5cbiAgdGhpcy5jcmVhdGVFbWl0dGVyKCk7XG4gIHZhciBieXBhc3MgPSBwYXJhbXMuc3R5bGUgfHwgcGFyYW1zLmNzcztcblxuICBpZiAoYnlwYXNzKSB7XG4gICAgd2FybignU2V0dGluZyBhIGBzdHlsZWAgYnlwYXNzIGF0IGVsZW1lbnQgY3JlYXRpb24gc2hvdWxkIGJlIGRvbmUgb25seSB3aGVuIGFic29sdXRlbHkgbmVjZXNzYXJ5LiAgVHJ5IHRvIHVzZSB0aGUgc3R5bGVzaGVldCBpbnN0ZWFkLicpO1xuICAgIHRoaXMuc3R5bGUoYnlwYXNzKTtcbiAgfVxuXG4gIGlmIChyZXN0b3JlID09PSB1bmRlZmluZWQgfHwgcmVzdG9yZSkge1xuICAgIHRoaXMucmVzdG9yZSgpO1xuICB9XG59O1xuXG52YXIgZGVmaW5lU2VhcmNoID0gZnVuY3Rpb24gZGVmaW5lU2VhcmNoKHBhcmFtcykge1xuICBwYXJhbXMgPSB7XG4gICAgYmZzOiBwYXJhbXMuYmZzIHx8ICFwYXJhbXMuZGZzLFxuICAgIGRmczogcGFyYW1zLmRmcyB8fCAhcGFyYW1zLmJmc1xuICB9OyAvLyBmcm9tIHBzZXVkb2NvZGUgb24gd2lraXBlZGlhXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHNlYXJjaEZuKHJvb3RzLCBmbiQxLCBkaXJlY3RlZCkge1xuICAgIHZhciBvcHRpb25zO1xuXG4gICAgaWYgKHBsYWluT2JqZWN0KHJvb3RzKSAmJiAhZWxlbWVudE9yQ29sbGVjdGlvbihyb290cykpIHtcbiAgICAgIG9wdGlvbnMgPSByb290cztcbiAgICAgIHJvb3RzID0gb3B0aW9ucy5yb290cyB8fCBvcHRpb25zLnJvb3Q7XG4gICAgICBmbiQxID0gb3B0aW9ucy52aXNpdDtcbiAgICAgIGRpcmVjdGVkID0gb3B0aW9ucy5kaXJlY3RlZDtcbiAgICB9XG5cbiAgICBkaXJlY3RlZCA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgIWZuKGZuJDEpID8gZm4kMSA6IGRpcmVjdGVkO1xuICAgIGZuJDEgPSBmbihmbiQxKSA/IGZuJDEgOiBmdW5jdGlvbiAoKSB7fTtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuICAgIHZhciB2ID0gcm9vdHMgPSBzdHJpbmcocm9vdHMpID8gdGhpcy5maWx0ZXIocm9vdHMpIDogcm9vdHM7XG4gICAgdmFyIFEgPSBbXTtcbiAgICB2YXIgY29ubmVjdGVkTm9kZXMgPSBbXTtcbiAgICB2YXIgY29ubmVjdGVkQnkgPSB7fTtcbiAgICB2YXIgaWQyZGVwdGggPSB7fTtcbiAgICB2YXIgViA9IHt9O1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIgZm91bmQ7XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlczsgLy8gZW5xdWV1ZSB2XG5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZpID0gdltpXTtcbiAgICAgIHZhciB2aUlkID0gdmkuaWQoKTtcblxuICAgICAgaWYgKHZpLmlzTm9kZSgpKSB7XG4gICAgICAgIFEudW5zaGlmdCh2aSk7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5iZnMpIHtcbiAgICAgICAgICBWW3ZpSWRdID0gdHJ1ZTtcbiAgICAgICAgICBjb25uZWN0ZWROb2Rlcy5wdXNoKHZpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlkMmRlcHRoW3ZpSWRdID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgX2xvb3AyID0gZnVuY3Rpb24gX2xvb3AyKCkge1xuICAgICAgdmFyIHYgPSBwYXJhbXMuYmZzID8gUS5zaGlmdCgpIDogUS5wb3AoKTtcbiAgICAgIHZhciB2SWQgPSB2LmlkKCk7XG5cbiAgICAgIGlmIChwYXJhbXMuZGZzKSB7XG4gICAgICAgIGlmIChWW3ZJZF0pIHtcbiAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICB9XG5cbiAgICAgICAgVlt2SWRdID0gdHJ1ZTtcbiAgICAgICAgY29ubmVjdGVkTm9kZXMucHVzaCh2KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRlcHRoID0gaWQyZGVwdGhbdklkXTtcbiAgICAgIHZhciBwcmV2RWRnZSA9IGNvbm5lY3RlZEJ5W3ZJZF07XG4gICAgICB2YXIgc3JjID0gcHJldkVkZ2UgIT0gbnVsbCA/IHByZXZFZGdlLnNvdXJjZSgpIDogbnVsbDtcbiAgICAgIHZhciB0Z3QgPSBwcmV2RWRnZSAhPSBudWxsID8gcHJldkVkZ2UudGFyZ2V0KCkgOiBudWxsO1xuICAgICAgdmFyIHByZXZOb2RlID0gcHJldkVkZ2UgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHYuc2FtZShzcmMpID8gdGd0WzBdIDogc3JjWzBdO1xuICAgICAgdmFyIHJldCA9IHZvaWQgMDtcbiAgICAgIHJldCA9IGZuJDEodiwgcHJldkVkZ2UsIHByZXZOb2RlLCBqKyssIGRlcHRoKTtcblxuICAgICAgaWYgKHJldCA9PT0gdHJ1ZSkge1xuICAgICAgICBmb3VuZCA9IHY7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG5cbiAgICAgIHZhciB2d0VkZ2VzID0gdi5jb25uZWN0ZWRFZGdlcygpLmZpbHRlcihmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gKCFkaXJlY3RlZCB8fCBlLnNvdXJjZSgpLnNhbWUodikpICYmIGVkZ2VzLmhhcyhlKTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCB2d0VkZ2VzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgdmFyIGUgPSB2d0VkZ2VzW19pMl07XG4gICAgICAgIHZhciB3ID0gZS5jb25uZWN0ZWROb2RlcygpLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgICAgIHJldHVybiAhbi5zYW1lKHYpICYmIG5vZGVzLmhhcyhuKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB3SWQgPSB3LmlkKCk7XG5cbiAgICAgICAgaWYgKHcubGVuZ3RoICE9PSAwICYmICFWW3dJZF0pIHtcbiAgICAgICAgICB3ID0gd1swXTtcbiAgICAgICAgICBRLnB1c2godyk7XG5cbiAgICAgICAgICBpZiAocGFyYW1zLmJmcykge1xuICAgICAgICAgICAgVlt3SWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbm5lY3RlZE5vZGVzLnB1c2godyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29ubmVjdGVkQnlbd0lkXSA9IGU7XG4gICAgICAgICAgaWQyZGVwdGhbd0lkXSA9IGlkMmRlcHRoW3ZJZF0gKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9sb29wOiB3aGlsZSAoUS5sZW5ndGggIT09IDApIHtcbiAgICAgIHZhciBfcmV0ID0gX2xvb3AyKCk7XG5cbiAgICAgIHN3aXRjaCAoX3JldCkge1xuICAgICAgICBjYXNlIFwiY29udGludWVcIjpcbiAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBjYXNlIFwiYnJlYWtcIjpcbiAgICAgICAgICBicmVhayBfbG9vcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY29ubmVjdGVkRWxlcyA9IGN5LmNvbGxlY3Rpb24oKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBjb25uZWN0ZWROb2Rlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBub2RlID0gY29ubmVjdGVkTm9kZXNbX2ldO1xuICAgICAgdmFyIGVkZ2UgPSBjb25uZWN0ZWRCeVtub2RlLmlkKCldO1xuXG4gICAgICBpZiAoZWRnZSAhPSBudWxsKSB7XG4gICAgICAgIGNvbm5lY3RlZEVsZXMucHVzaChlZGdlKTtcbiAgICAgIH1cblxuICAgICAgY29ubmVjdGVkRWxlcy5wdXNoKG5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBjeS5jb2xsZWN0aW9uKGNvbm5lY3RlZEVsZXMpLFxuICAgICAgZm91bmQ6IGN5LmNvbGxlY3Rpb24oZm91bmQpXG4gICAgfTtcbiAgfTtcbn07IC8vIHNlYXJjaCwgc3Bhbm5pbmcgdHJlZXMsIGV0Y1xuXG5cbnZhciBlbGVzZm4gPSB7XG4gIGJyZWFkdGhGaXJzdFNlYXJjaDogZGVmaW5lU2VhcmNoKHtcbiAgICBiZnM6IHRydWVcbiAgfSksXG4gIGRlcHRoRmlyc3RTZWFyY2g6IGRlZmluZVNlYXJjaCh7XG4gICAgZGZzOiB0cnVlXG4gIH0pXG59OyAvLyBuaWNlLCBzaG9ydCBtYXRoZW1hdGhpY2FsIGFsaWFzXG5cbmVsZXNmbi5iZnMgPSBlbGVzZm4uYnJlYWR0aEZpcnN0U2VhcmNoO1xuZWxlc2ZuLmRmcyA9IGVsZXNmbi5kZXB0aEZpcnN0U2VhcmNoO1xuXG52YXIgZGlqa3N0cmFEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgcm9vdDogbnVsbCxcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2Vcbn0pO1xudmFyIGVsZXNmbiQxID0ge1xuICBkaWprc3RyYTogZnVuY3Rpb24gZGlqa3N0cmEob3B0aW9ucykge1xuICAgIGlmICghcGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgcm9vdDogYXJnc1swXSxcbiAgICAgICAgd2VpZ2h0OiBhcmdzWzFdLFxuICAgICAgICBkaXJlY3RlZDogYXJnc1syXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgX2RpamtzdHJhRGVmYXVsdHMgPSBkaWprc3RyYURlZmF1bHRzKG9wdGlvbnMpLFxuICAgICAgICByb290ID0gX2RpamtzdHJhRGVmYXVsdHMucm9vdCxcbiAgICAgICAgd2VpZ2h0ID0gX2RpamtzdHJhRGVmYXVsdHMud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9kaWprc3RyYURlZmF1bHRzLmRpcmVjdGVkO1xuXG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuICAgIHZhciB3ZWlnaHRGbiA9IHdlaWdodDtcbiAgICB2YXIgc291cmNlID0gc3RyaW5nKHJvb3QpID8gdGhpcy5maWx0ZXIocm9vdClbMF0gOiByb290WzBdO1xuICAgIHZhciBkaXN0ID0ge307XG4gICAgdmFyIHByZXYgPSB7fTtcbiAgICB2YXIga25vd25EaXN0ID0ge307XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgIGVkZ2VzLnVubWVyZ2VCeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTG9vcCgpO1xuICAgIH0pO1xuXG4gICAgdmFyIGdldERpc3QgPSBmdW5jdGlvbiBnZXREaXN0KG5vZGUpIHtcbiAgICAgIHJldHVybiBkaXN0W25vZGUuaWQoKV07XG4gICAgfTtcblxuICAgIHZhciBzZXREaXN0ID0gZnVuY3Rpb24gc2V0RGlzdChub2RlLCBkKSB7XG4gICAgICBkaXN0W25vZGUuaWQoKV0gPSBkO1xuICAgICAgUS51cGRhdGVJdGVtKG5vZGUpO1xuICAgIH07XG5cbiAgICB2YXIgUSA9IG5ldyBIZWFwKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZ2V0RGlzdChhKSAtIGdldERpc3QoYik7XG4gICAgfSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgZGlzdFtub2RlLmlkKCldID0gbm9kZS5zYW1lKHNvdXJjZSkgPyAwIDogSW5maW5pdHk7XG4gICAgICBRLnB1c2gobm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIGRpc3RCZXR3ZWVuID0gZnVuY3Rpb24gZGlzdEJldHdlZW4odSwgdikge1xuICAgICAgdmFyIHV2cyA9IChkaXJlY3RlZCA/IHUuZWRnZXNUbyh2KSA6IHUuZWRnZXNXaXRoKHYpKS5pbnRlcnNlY3QoZWRnZXMpO1xuICAgICAgdmFyIHNtYWxsZXN0RGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICAgIHZhciBzbWFsbGVzdEVkZ2U7XG5cbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB1dnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBlZGdlID0gdXZzW19pXTtcblxuICAgICAgICB2YXIgX3dlaWdodCA9IHdlaWdodEZuKGVkZ2UpO1xuXG4gICAgICAgIGlmIChfd2VpZ2h0IDwgc21hbGxlc3REaXN0YW5jZSB8fCAhc21hbGxlc3RFZGdlKSB7XG4gICAgICAgICAgc21hbGxlc3REaXN0YW5jZSA9IF93ZWlnaHQ7XG4gICAgICAgICAgc21hbGxlc3RFZGdlID0gZWRnZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBlZGdlOiBzbWFsbGVzdEVkZ2UsXG4gICAgICAgIGRpc3Q6IHNtYWxsZXN0RGlzdGFuY2VcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHdoaWxlIChRLnNpemUoKSA+IDApIHtcbiAgICAgIHZhciB1ID0gUS5wb3AoKTtcbiAgICAgIHZhciBzbWFsbGV0c0Rpc3QgPSBnZXREaXN0KHUpO1xuICAgICAgdmFyIHVpZCA9IHUuaWQoKTtcbiAgICAgIGtub3duRGlzdFt1aWRdID0gc21hbGxldHNEaXN0O1xuXG4gICAgICBpZiAoc21hbGxldHNEaXN0ID09PSBJbmZpbml0eSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9ycyA9IHUubmVpZ2hib3Job29kKCkuaW50ZXJzZWN0KG5vZGVzKTtcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbmVpZ2hib3JzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgdmFyIHYgPSBuZWlnaGJvcnNbX2kyXTtcbiAgICAgICAgdmFyIHZpZCA9IHYuaWQoKTtcbiAgICAgICAgdmFyIHZEaXN0ID0gZGlzdEJldHdlZW4odSwgdik7XG4gICAgICAgIHZhciBhbHQgPSBzbWFsbGV0c0Rpc3QgKyB2RGlzdC5kaXN0O1xuXG4gICAgICAgIGlmIChhbHQgPCBnZXREaXN0KHYpKSB7XG4gICAgICAgICAgc2V0RGlzdCh2LCBhbHQpO1xuICAgICAgICAgIHByZXZbdmlkXSA9IHtcbiAgICAgICAgICAgIG5vZGU6IHUsXG4gICAgICAgICAgICBlZGdlOiB2RGlzdC5lZGdlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBmb3JcblxuICAgIH0gLy8gd2hpbGVcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3RhbmNlVG86IGZ1bmN0aW9uIGRpc3RhbmNlVG8obm9kZSkge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gc3RyaW5nKG5vZGUpID8gbm9kZXMuZmlsdGVyKG5vZGUpWzBdIDogbm9kZVswXTtcbiAgICAgICAgcmV0dXJuIGtub3duRGlzdFt0YXJnZXQuaWQoKV07XG4gICAgICB9LFxuICAgICAgcGF0aFRvOiBmdW5jdGlvbiBwYXRoVG8obm9kZSkge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gc3RyaW5nKG5vZGUpID8gbm9kZXMuZmlsdGVyKG5vZGUpWzBdIDogbm9kZVswXTtcbiAgICAgICAgdmFyIFMgPSBbXTtcbiAgICAgICAgdmFyIHUgPSB0YXJnZXQ7XG4gICAgICAgIHZhciB1aWQgPSB1LmlkKCk7XG5cbiAgICAgICAgaWYgKHRhcmdldC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgUy51bnNoaWZ0KHRhcmdldCk7XG5cbiAgICAgICAgICB3aGlsZSAocHJldlt1aWRdKSB7XG4gICAgICAgICAgICB2YXIgcCA9IHByZXZbdWlkXTtcbiAgICAgICAgICAgIFMudW5zaGlmdChwLmVkZ2UpO1xuICAgICAgICAgICAgUy51bnNoaWZ0KHAubm9kZSk7XG4gICAgICAgICAgICB1ID0gcC5ub2RlO1xuICAgICAgICAgICAgdWlkID0gdS5pZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbGVzLnNwYXduKFMpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn07XG5cbnZhciBlbGVzZm4kMiA9IHtcbiAgLy8ga3J1c2thbCdzIGFsZ29yaXRobSAoZmluZHMgbWluIHNwYW5uaW5nIHRyZWUsIGFzc3VtaW5nIHVuZGlyZWN0ZWQgZ3JhcGgpXG4gIC8vIGltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICBrcnVza2FsOiBmdW5jdGlvbiBrcnVza2FsKHdlaWdodEZuKSB7XG4gICAgd2VpZ2h0Rm4gPSB3ZWlnaHRGbiB8fCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfTtcblxuICAgIHZhciBfdGhpcyRieUdyb3VwID0gdGhpcy5ieUdyb3VwKCksXG4gICAgICAgIG5vZGVzID0gX3RoaXMkYnlHcm91cC5ub2RlcyxcbiAgICAgICAgZWRnZXMgPSBfdGhpcyRieUdyb3VwLmVkZ2VzO1xuXG4gICAgdmFyIG51bU5vZGVzID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBmb3Jlc3QgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuICAgIHZhciBBID0gbm9kZXM7IC8vIGFzc3VtZXMgYnlHcm91cCgpIGNyZWF0ZXMgbmV3IGNvbGxlY3Rpb25zIHRoYXQgY2FuIGJlIHNhZmVseSBtdXRhdGVkXG5cbiAgICB2YXIgZmluZFNldEluZGV4ID0gZnVuY3Rpb24gZmluZFNldEluZGV4KGVsZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3Jlc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZXMgPSBmb3Jlc3RbaV07XG5cbiAgICAgICAgaWYgKGVsZXMuaGFzKGVsZSkpIHtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07IC8vIHN0YXJ0IHdpdGggb25lIGZvcmVzdCBwZXIgbm9kZVxuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bU5vZGVzOyBpKyspIHtcbiAgICAgIGZvcmVzdFtpXSA9IHRoaXMuc3Bhd24obm9kZXNbaV0pO1xuICAgIH1cblxuICAgIHZhciBTID0gZWRnZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIHdlaWdodEZuKGEpIC0gd2VpZ2h0Rm4oYik7XG4gICAgfSk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgUy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBlZGdlID0gU1tfaV07XG4gICAgICB2YXIgdSA9IGVkZ2Uuc291cmNlKClbMF07XG4gICAgICB2YXIgdiA9IGVkZ2UudGFyZ2V0KClbMF07XG4gICAgICB2YXIgc2V0VUluZGV4ID0gZmluZFNldEluZGV4KHUpO1xuICAgICAgdmFyIHNldFZJbmRleCA9IGZpbmRTZXRJbmRleCh2KTtcbiAgICAgIHZhciBzZXRVID0gZm9yZXN0W3NldFVJbmRleF07XG4gICAgICB2YXIgc2V0ViA9IGZvcmVzdFtzZXRWSW5kZXhdO1xuXG4gICAgICBpZiAoc2V0VUluZGV4ICE9PSBzZXRWSW5kZXgpIHtcbiAgICAgICAgQS5tZXJnZShlZGdlKTsgLy8gY29tYmluZSBmb3Jlc3RzIGZvciB1IGFuZCB2XG5cbiAgICAgICAgc2V0VS5tZXJnZShzZXRWKTtcbiAgICAgICAgZm9yZXN0LnNwbGljZShzZXRWSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBBO1xuICB9XG59O1xuXG52YXIgYVN0YXJEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgcm9vdDogbnVsbCxcbiAgZ29hbDogbnVsbCxcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBoZXVyaXN0aWM6IGZ1bmN0aW9uIGhldXJpc3RpYyhlZGdlKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gIGRpcmVjdGVkOiBmYWxzZVxufSk7XG52YXIgZWxlc2ZuJDMgPSB7XG4gIC8vIEltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICBhU3RhcjogZnVuY3Rpb24gYVN0YXIob3B0aW9ucykge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIHZhciBfYVN0YXJEZWZhdWx0cyA9IGFTdGFyRGVmYXVsdHMob3B0aW9ucyksXG4gICAgICAgIHJvb3QgPSBfYVN0YXJEZWZhdWx0cy5yb290LFxuICAgICAgICBnb2FsID0gX2FTdGFyRGVmYXVsdHMuZ29hbCxcbiAgICAgICAgaGV1cmlzdGljID0gX2FTdGFyRGVmYXVsdHMuaGV1cmlzdGljLFxuICAgICAgICBkaXJlY3RlZCA9IF9hU3RhckRlZmF1bHRzLmRpcmVjdGVkLFxuICAgICAgICB3ZWlnaHQgPSBfYVN0YXJEZWZhdWx0cy53ZWlnaHQ7XG5cbiAgICByb290ID0gY3kuY29sbGVjdGlvbihyb290KVswXTtcbiAgICBnb2FsID0gY3kuY29sbGVjdGlvbihnb2FsKVswXTtcbiAgICB2YXIgc2lkID0gcm9vdC5pZCgpO1xuICAgIHZhciB0aWQgPSBnb2FsLmlkKCk7XG4gICAgdmFyIGdTY29yZSA9IHt9O1xuICAgIHZhciBmU2NvcmUgPSB7fTtcbiAgICB2YXIgY2xvc2VkU2V0SWRzID0ge307XG4gICAgdmFyIG9wZW5TZXQgPSBuZXcgSGVhcChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZTY29yZVthLmlkKCldIC0gZlNjb3JlW2IuaWQoKV07XG4gICAgfSk7XG4gICAgdmFyIG9wZW5TZXRJZHMgPSBuZXcgU2V0JDEoKTtcbiAgICB2YXIgY2FtZUZyb20gPSB7fTtcbiAgICB2YXIgY2FtZUZyb21FZGdlID0ge307XG5cbiAgICB2YXIgYWRkVG9PcGVuU2V0ID0gZnVuY3Rpb24gYWRkVG9PcGVuU2V0KGVsZSwgaWQpIHtcbiAgICAgIG9wZW5TZXQucHVzaChlbGUpO1xuICAgICAgb3BlblNldElkcy5hZGQoaWQpO1xuICAgIH07XG5cbiAgICB2YXIgY01pbiwgY01pbklkO1xuXG4gICAgdmFyIHBvcEZyb21PcGVuU2V0ID0gZnVuY3Rpb24gcG9wRnJvbU9wZW5TZXQoKSB7XG4gICAgICBjTWluID0gb3BlblNldC5wb3AoKTtcbiAgICAgIGNNaW5JZCA9IGNNaW4uaWQoKTtcbiAgICAgIG9wZW5TZXRJZHNbXCJkZWxldGVcIl0oY01pbklkKTtcbiAgICB9O1xuXG4gICAgdmFyIGlzSW5PcGVuU2V0ID0gZnVuY3Rpb24gaXNJbk9wZW5TZXQoaWQpIHtcbiAgICAgIHJldHVybiBvcGVuU2V0SWRzLmhhcyhpZCk7XG4gICAgfTtcblxuICAgIGFkZFRvT3BlblNldChyb290LCBzaWQpO1xuICAgIGdTY29yZVtzaWRdID0gMDtcbiAgICBmU2NvcmVbc2lkXSA9IGhldXJpc3RpYyhyb290KTsgLy8gQ291bnRlclxuXG4gICAgdmFyIHN0ZXBzID0gMDsgLy8gTWFpbiBsb29wXG5cbiAgICB3aGlsZSAob3BlblNldC5zaXplKCkgPiAwKSB7XG4gICAgICBwb3BGcm9tT3BlblNldCgpO1xuICAgICAgc3RlcHMrKzsgLy8gSWYgd2UndmUgZm91bmQgb3VyIGdvYWwsIHRoZW4gd2UgYXJlIGRvbmVcblxuICAgICAgaWYgKGNNaW5JZCA9PT0gdGlkKSB7XG4gICAgICAgIHZhciBwYXRoID0gW107XG4gICAgICAgIHZhciBwYXRoTm9kZSA9IGdvYWw7XG4gICAgICAgIHZhciBwYXRoTm9kZUlkID0gdGlkO1xuICAgICAgICB2YXIgcGF0aEVkZ2UgPSBjYW1lRnJvbUVkZ2VbcGF0aE5vZGVJZF07XG5cbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHBhdGgudW5zaGlmdChwYXRoTm9kZSk7XG5cbiAgICAgICAgICBpZiAocGF0aEVkZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgcGF0aC51bnNoaWZ0KHBhdGhFZGdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXRoTm9kZSA9IGNhbWVGcm9tW3BhdGhOb2RlSWRdO1xuXG4gICAgICAgICAgaWYgKHBhdGhOb2RlID09IG51bGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhdGhOb2RlSWQgPSBwYXRoTm9kZS5pZCgpO1xuICAgICAgICAgIHBhdGhFZGdlID0gY2FtZUZyb21FZGdlW3BhdGhOb2RlSWRdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmb3VuZDogdHJ1ZSxcbiAgICAgICAgICBkaXN0YW5jZTogZ1Njb3JlW2NNaW5JZF0sXG4gICAgICAgICAgcGF0aDogdGhpcy5zcGF3bihwYXRoKSxcbiAgICAgICAgICBzdGVwczogc3RlcHNcbiAgICAgICAgfTtcbiAgICAgIH0gLy8gQWRkIGNNaW4gdG8gcHJvY2Vzc2VkIG5vZGVzXG5cblxuICAgICAgY2xvc2VkU2V0SWRzW2NNaW5JZF0gPSB0cnVlOyAvLyBVcGRhdGUgc2NvcmVzIGZvciBuZWlnaGJvcnMgb2YgY01pblxuICAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgaWYgZ3JhcGggaXMgZGlyZWN0ZWQgb3Igbm90XG5cbiAgICAgIHZhciB2d0VkZ2VzID0gY01pbi5fcHJpdmF0ZS5lZGdlcztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2d0VkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlID0gdndFZGdlc1tpXTsgLy8gZWRnZSBtdXN0IGJlIGluIHNldCBvZiBjYWxsaW5nIGVsZXNcblxuICAgICAgICBpZiAoIXRoaXMuaGFzRWxlbWVudFdpdGhJZChlLmlkKCkpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gY01pbiBtdXN0IGJlIHRoZSBzb3VyY2Ugb2YgZWRnZSBpZiBkaXJlY3RlZFxuXG5cbiAgICAgICAgaWYgKGRpcmVjdGVkICYmIGUuZGF0YSgnc291cmNlJykgIT09IGNNaW5JZCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHdTcmMgPSBlLnNvdXJjZSgpO1xuICAgICAgICB2YXIgd1RndCA9IGUudGFyZ2V0KCk7XG4gICAgICAgIHZhciB3ID0gd1NyYy5pZCgpICE9PSBjTWluSWQgPyB3U3JjIDogd1RndDtcbiAgICAgICAgdmFyIHdpZCA9IHcuaWQoKTsgLy8gbm9kZSBtdXN0IGJlIGluIHNldCBvZiBjYWxsaW5nIGVsZXNcblxuICAgICAgICBpZiAoIXRoaXMuaGFzRWxlbWVudFdpdGhJZCh3aWQpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gaWYgbm9kZSBpcyBpbiBjbG9zZWRTZXQsIGlnbm9yZSBpdFxuXG5cbiAgICAgICAgaWYgKGNsb3NlZFNldElkc1t3aWRdKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gTmV3IHRlbnRhdGl2ZSBzY29yZSBmb3Igbm9kZSB3XG5cblxuICAgICAgICB2YXIgdGVtcFNjb3JlID0gZ1Njb3JlW2NNaW5JZF0gKyB3ZWlnaHQoZSk7IC8vIFVwZGF0ZSBnU2NvcmUgZm9yIG5vZGUgdyBpZjpcbiAgICAgICAgLy8gICB3IG5vdCBwcmVzZW50IGluIG9wZW5TZXRcbiAgICAgICAgLy8gT1JcbiAgICAgICAgLy8gICB0ZW50YXRpdmUgZ1Njb3JlIGlzIGxlc3MgdGhhbiBwcmV2aW91cyB2YWx1ZVxuICAgICAgICAvLyB3IG5vdCBpbiBvcGVuU2V0XG5cbiAgICAgICAgaWYgKCFpc0luT3BlblNldCh3aWQpKSB7XG4gICAgICAgICAgZ1Njb3JlW3dpZF0gPSB0ZW1wU2NvcmU7XG4gICAgICAgICAgZlNjb3JlW3dpZF0gPSB0ZW1wU2NvcmUgKyBoZXVyaXN0aWModyk7XG4gICAgICAgICAgYWRkVG9PcGVuU2V0KHcsIHdpZCk7XG4gICAgICAgICAgY2FtZUZyb21bd2lkXSA9IGNNaW47XG4gICAgICAgICAgY2FtZUZyb21FZGdlW3dpZF0gPSBlO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IC8vIHcgYWxyZWFkeSBpbiBvcGVuU2V0LCBidXQgd2l0aCBncmVhdGVyIGdTY29yZVxuXG5cbiAgICAgICAgaWYgKHRlbXBTY29yZSA8IGdTY29yZVt3aWRdKSB7XG4gICAgICAgICAgZ1Njb3JlW3dpZF0gPSB0ZW1wU2NvcmU7XG4gICAgICAgICAgZlNjb3JlW3dpZF0gPSB0ZW1wU2NvcmUgKyBoZXVyaXN0aWModyk7XG4gICAgICAgICAgY2FtZUZyb21bd2lkXSA9IGNNaW47XG4gICAgICAgICAgY2FtZUZyb21FZGdlW3dpZF0gPSBlO1xuICAgICAgICB9XG4gICAgICB9IC8vIEVuZCBvZiBuZWlnaGJvcnMgdXBkYXRlXG5cbiAgICB9IC8vIEVuZCBvZiBtYWluIGxvb3BcbiAgICAvLyBJZiB3ZSd2ZSByZWFjaGVkIGhlcmUsIHRoZW4gd2UndmUgbm90IHJlYWNoZWQgb3VyIGdvYWxcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZvdW5kOiBmYWxzZSxcbiAgICAgIGRpc3RhbmNlOiB1bmRlZmluZWQsXG4gICAgICBwYXRoOiB1bmRlZmluZWQsXG4gICAgICBzdGVwczogc3RlcHNcbiAgICB9O1xuICB9XG59OyAvLyBlbGVzZm5cblxudmFyIGZsb3lkV2Fyc2hhbGxEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2Vcbn0pO1xudmFyIGVsZXNmbiQ0ID0ge1xuICAvLyBJbXBsZW1lbnRlZCBmcm9tIHBzZXVkb2NvZGUgZnJvbSB3aWtpcGVkaWFcbiAgZmxveWRXYXJzaGFsbDogZnVuY3Rpb24gZmxveWRXYXJzaGFsbChvcHRpb25zKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgdmFyIF9mbG95ZFdhcnNoYWxsRGVmYXVsdCA9IGZsb3lkV2Fyc2hhbGxEZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgd2VpZ2h0ID0gX2Zsb3lkV2Fyc2hhbGxEZWZhdWx0LndlaWdodCxcbiAgICAgICAgZGlyZWN0ZWQgPSBfZmxveWRXYXJzaGFsbERlZmF1bHQuZGlyZWN0ZWQ7XG5cbiAgICB2YXIgd2VpZ2h0Rm4gPSB3ZWlnaHQ7XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgIHZhciBOID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBOc3EgPSBOICogTjtcblxuICAgIHZhciBpbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZihub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZXMuaW5kZXhPZihub2RlKTtcbiAgICB9O1xuXG4gICAgdmFyIGF0SW5kZXggPSBmdW5jdGlvbiBhdEluZGV4KGkpIHtcbiAgICAgIHJldHVybiBub2Rlc1tpXTtcbiAgICB9OyAvLyBJbml0aWFsaXplIGRpc3RhbmNlIG1hdHJpeFxuXG5cbiAgICB2YXIgZGlzdCA9IG5ldyBBcnJheShOc3EpO1xuXG4gICAgZm9yICh2YXIgbiA9IDA7IG4gPCBOc3E7IG4rKykge1xuICAgICAgdmFyIGogPSBuICUgTjtcbiAgICAgIHZhciBpID0gKG4gLSBqKSAvIE47XG5cbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3Rbbl0gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtuXSA9IEluZmluaXR5O1xuICAgICAgfVxuICAgIH0gLy8gSW5pdGlhbGl6ZSBtYXRyaXggdXNlZCBmb3IgcGF0aCByZWNvbnN0cnVjdGlvblxuICAgIC8vIEluaXRpYWxpemUgZGlzdGFuY2UgbWF0cml4XG5cblxuICAgIHZhciBuZXh0ID0gbmV3IEFycmF5KE5zcSk7XG4gICAgdmFyIGVkZ2VOZXh0ID0gbmV3IEFycmF5KE5zcSk7IC8vIFByb2Nlc3MgZWRnZXNcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBlZGdlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbX2ldO1xuICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKClbMF07XG4gICAgICB2YXIgdGd0ID0gZWRnZS50YXJnZXQoKVswXTtcblxuICAgICAgaWYgKHNyYyA9PT0gdGd0KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBleGNsdWRlIGxvb3BzXG5cblxuICAgICAgdmFyIHMgPSBpbmRleE9mKHNyYyk7XG4gICAgICB2YXIgdCA9IGluZGV4T2YodGd0KTtcbiAgICAgIHZhciBzdCA9IHMgKiBOICsgdDsgLy8gc291cmNlIHRvIHRhcmdldCBpbmRleFxuXG4gICAgICB2YXIgX3dlaWdodCA9IHdlaWdodEZuKGVkZ2UpOyAvLyBDaGVjayBpZiBhbHJlYWR5IHByb2Nlc3MgYW5vdGhlciBlZGdlIGJldHdlZW4gc2FtZSAyIG5vZGVzXG5cblxuICAgICAgaWYgKGRpc3Rbc3RdID4gX3dlaWdodCkge1xuICAgICAgICBkaXN0W3N0XSA9IF93ZWlnaHQ7XG4gICAgICAgIG5leHRbc3RdID0gdDtcbiAgICAgICAgZWRnZU5leHRbc3RdID0gZWRnZTtcbiAgICAgIH0gLy8gSWYgdW5kaXJlY3RlZCBncmFwaCwgcHJvY2VzcyAncmV2ZXJzZWQnIGVkZ2VcblxuXG4gICAgICBpZiAoIWRpcmVjdGVkKSB7XG4gICAgICAgIHZhciB0cyA9IHQgKiBOICsgczsgLy8gdGFyZ2V0IHRvIHNvdXJjZSBpbmRleFxuXG4gICAgICAgIGlmICghZGlyZWN0ZWQgJiYgZGlzdFt0c10gPiBfd2VpZ2h0KSB7XG4gICAgICAgICAgZGlzdFt0c10gPSBfd2VpZ2h0O1xuICAgICAgICAgIG5leHRbdHNdID0gcztcbiAgICAgICAgICBlZGdlTmV4dFt0c10gPSBlZGdlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBNYWluIGxvb3BcblxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBOOyBrKyspIHtcbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IE47IF9pMisrKSB7XG4gICAgICAgIHZhciBpayA9IF9pMiAqIE4gKyBrO1xuXG4gICAgICAgIGZvciAodmFyIF9qID0gMDsgX2ogPCBOOyBfaisrKSB7XG4gICAgICAgICAgdmFyIGlqID0gX2kyICogTiArIF9qO1xuICAgICAgICAgIHZhciBraiA9IGsgKiBOICsgX2o7XG5cbiAgICAgICAgICBpZiAoZGlzdFtpa10gKyBkaXN0W2tqXSA8IGRpc3RbaWpdKSB7XG4gICAgICAgICAgICBkaXN0W2lqXSA9IGRpc3RbaWtdICsgZGlzdFtral07XG4gICAgICAgICAgICBuZXh0W2lqXSA9IG5leHRbaWtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBnZXRBcmdFbGUgPSBmdW5jdGlvbiBnZXRBcmdFbGUoZWxlKSB7XG4gICAgICByZXR1cm4gKHN0cmluZyhlbGUpID8gY3kuZmlsdGVyKGVsZSkgOiBlbGUpWzBdO1xuICAgIH07XG5cbiAgICB2YXIgaW5kZXhPZkFyZ0VsZSA9IGZ1bmN0aW9uIGluZGV4T2ZBcmdFbGUoZWxlKSB7XG4gICAgICByZXR1cm4gaW5kZXhPZihnZXRBcmdFbGUoZWxlKSk7XG4gICAgfTtcblxuICAgIHZhciByZXMgPSB7XG4gICAgICBkaXN0YW5jZTogZnVuY3Rpb24gZGlzdGFuY2UoZnJvbSwgdG8pIHtcbiAgICAgICAgdmFyIGkgPSBpbmRleE9mQXJnRWxlKGZyb20pO1xuICAgICAgICB2YXIgaiA9IGluZGV4T2ZBcmdFbGUodG8pO1xuICAgICAgICByZXR1cm4gZGlzdFtpICogTiArIGpdO1xuICAgICAgfSxcbiAgICAgIHBhdGg6IGZ1bmN0aW9uIHBhdGgoZnJvbSwgdG8pIHtcbiAgICAgICAgdmFyIGkgPSBpbmRleE9mQXJnRWxlKGZyb20pO1xuICAgICAgICB2YXIgaiA9IGluZGV4T2ZBcmdFbGUodG8pO1xuICAgICAgICB2YXIgZnJvbU5vZGUgPSBhdEluZGV4KGkpO1xuXG4gICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb21Ob2RlLmNvbGxlY3Rpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0W2kgKiBOICsgal0gPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGF0aCA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgICAgdmFyIHByZXYgPSBpO1xuICAgICAgICB2YXIgZWRnZTtcbiAgICAgICAgcGF0aC5tZXJnZShmcm9tTm9kZSk7XG5cbiAgICAgICAgd2hpbGUgKGkgIT09IGopIHtcbiAgICAgICAgICBwcmV2ID0gaTtcbiAgICAgICAgICBpID0gbmV4dFtpICogTiArIGpdO1xuICAgICAgICAgIGVkZ2UgPSBlZGdlTmV4dFtwcmV2ICogTiArIGldO1xuICAgICAgICAgIHBhdGgubWVyZ2UoZWRnZSk7XG4gICAgICAgICAgcGF0aC5tZXJnZShhdEluZGV4KGkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBmbG95ZFdhcnNoYWxsXG5cbn07IC8vIGVsZXNmblxuXG52YXIgYmVsbG1hbkZvcmREZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2UsXG4gIHJvb3Q6IG51bGxcbn0pO1xudmFyIGVsZXNmbiQ1ID0ge1xuICAvLyBJbXBsZW1lbnRlZCBmcm9tIHBzZXVkb2NvZGUgZnJvbSB3aWtpcGVkaWFcbiAgYmVsbG1hbkZvcmQ6IGZ1bmN0aW9uIGJlbGxtYW5Gb3JkKG9wdGlvbnMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9iZWxsbWFuRm9yZERlZmF1bHRzID0gYmVsbG1hbkZvcmREZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgd2VpZ2h0ID0gX2JlbGxtYW5Gb3JkRGVmYXVsdHMud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9iZWxsbWFuRm9yZERlZmF1bHRzLmRpcmVjdGVkLFxuICAgICAgICByb290ID0gX2JlbGxtYW5Gb3JkRGVmYXVsdHMucm9vdDtcblxuICAgIHZhciB3ZWlnaHRGbiA9IHdlaWdodDtcbiAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgdmFyIF90aGlzJGJ5R3JvdXAgPSB0aGlzLmJ5R3JvdXAoKSxcbiAgICAgICAgZWRnZXMgPSBfdGhpcyRieUdyb3VwLmVkZ2VzLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXM7XG5cbiAgICB2YXIgbnVtTm9kZXMgPSBub2Rlcy5sZW5ndGg7XG4gICAgdmFyIGluZm9NYXAgPSBuZXcgTWFwJDEoKTtcbiAgICB2YXIgaGFzTmVnYXRpdmVXZWlnaHRDeWNsZSA9IGZhbHNlO1xuICAgIHZhciBuZWdhdGl2ZVdlaWdodEN5Y2xlcyA9IFtdO1xuICAgIHJvb3QgPSBjeS5jb2xsZWN0aW9uKHJvb3QpWzBdOyAvLyBpbiBjYXNlIHNlbGVjdG9yIHBhc3NlZFxuXG4gICAgZWRnZXMudW5tZXJnZUJ5KGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5pc0xvb3AoKTtcbiAgICB9KTtcbiAgICB2YXIgbnVtRWRnZXMgPSBlZGdlcy5sZW5ndGg7XG5cbiAgICB2YXIgZ2V0SW5mbyA9IGZ1bmN0aW9uIGdldEluZm8obm9kZSkge1xuICAgICAgdmFyIG9iaiA9IGluZm9NYXAuZ2V0KG5vZGUuaWQoKSk7XG5cbiAgICAgIGlmICghb2JqKSB7XG4gICAgICAgIG9iaiA9IHt9O1xuICAgICAgICBpbmZvTWFwLnNldChub2RlLmlkKCksIG9iaik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfTtcblxuICAgIHZhciBnZXROb2RlRnJvbVRvID0gZnVuY3Rpb24gZ2V0Tm9kZUZyb21Ubyh0bykge1xuICAgICAgcmV0dXJuIChzdHJpbmcodG8pID8gY3kuJCh0bykgOiB0bylbMF07XG4gICAgfTtcblxuICAgIHZhciBkaXN0YW5jZVRvID0gZnVuY3Rpb24gZGlzdGFuY2VUbyh0bykge1xuICAgICAgcmV0dXJuIGdldEluZm8oZ2V0Tm9kZUZyb21Ubyh0bykpLmRpc3Q7XG4gICAgfTtcblxuICAgIHZhciBwYXRoVG8gPSBmdW5jdGlvbiBwYXRoVG8odG8pIHtcbiAgICAgIHZhciB0aGlzU3RhcnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHJvb3Q7XG4gICAgICB2YXIgZW5kID0gZ2V0Tm9kZUZyb21Ubyh0byk7XG4gICAgICB2YXIgcGF0aCA9IFtdO1xuICAgICAgdmFyIG5vZGUgPSBlbmQ7XG5cbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5zcGF3bigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9nZXRJbmZvID0gZ2V0SW5mbyhub2RlKSxcbiAgICAgICAgICAgIGVkZ2UgPSBfZ2V0SW5mby5lZGdlLFxuICAgICAgICAgICAgcHJlZCA9IF9nZXRJbmZvLnByZWQ7XG5cbiAgICAgICAgcGF0aC51bnNoaWZ0KG5vZGVbMF0pO1xuXG4gICAgICAgIGlmIChub2RlLnNhbWUodGhpc1N0YXJ0KSAmJiBwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlZGdlICE9IG51bGwpIHtcbiAgICAgICAgICBwYXRoLnVuc2hpZnQoZWRnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlID0gcHJlZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsZXMuc3Bhd24ocGF0aCk7XG4gICAgfTsgLy8gSW5pdGlhbGl6YXRpb25zIHsgZGlzdCwgcHJlZCwgZWRnZSB9XG5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTm9kZXM7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIHZhciBpbmZvID0gZ2V0SW5mbyhub2RlKTtcblxuICAgICAgaWYgKG5vZGUuc2FtZShyb290KSkge1xuICAgICAgICBpbmZvLmRpc3QgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5mby5kaXN0ID0gSW5maW5pdHk7XG4gICAgICB9XG5cbiAgICAgIGluZm8ucHJlZCA9IG51bGw7XG4gICAgICBpbmZvLmVkZ2UgPSBudWxsO1xuICAgIH0gLy8gRWRnZXMgcmVsYXhhdGlvblxuXG5cbiAgICB2YXIgcmVwbGFjZWRFZGdlID0gZmFsc2U7XG5cbiAgICB2YXIgY2hlY2tGb3JFZGdlUmVwbGFjZW1lbnQgPSBmdW5jdGlvbiBjaGVja0ZvckVkZ2VSZXBsYWNlbWVudChub2RlMSwgbm9kZTIsIGVkZ2UsIGluZm8xLCBpbmZvMiwgd2VpZ2h0KSB7XG4gICAgICB2YXIgZGlzdCA9IGluZm8xLmRpc3QgKyB3ZWlnaHQ7XG5cbiAgICAgIGlmIChkaXN0IDwgaW5mbzIuZGlzdCAmJiAhZWRnZS5zYW1lKGluZm8xLmVkZ2UpKSB7XG4gICAgICAgIGluZm8yLmRpc3QgPSBkaXN0O1xuICAgICAgICBpbmZvMi5wcmVkID0gbm9kZTE7XG4gICAgICAgIGluZm8yLmVkZ2UgPSBlZGdlO1xuICAgICAgICByZXBsYWNlZEVkZ2UgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgbnVtTm9kZXM7IF9pKyspIHtcbiAgICAgIHJlcGxhY2VkRWRnZSA9IGZhbHNlO1xuXG4gICAgICBmb3IgKHZhciBlID0gMDsgZSA8IG51bUVkZ2VzOyBlKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tlXTtcbiAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKCk7XG4gICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpO1xuXG4gICAgICAgIHZhciBfd2VpZ2h0ID0gd2VpZ2h0Rm4oZWRnZSk7XG5cbiAgICAgICAgdmFyIHNyY0luZm8gPSBnZXRJbmZvKHNyYyk7XG4gICAgICAgIHZhciB0Z3RJbmZvID0gZ2V0SW5mbyh0Z3QpO1xuICAgICAgICBjaGVja0ZvckVkZ2VSZXBsYWNlbWVudChzcmMsIHRndCwgZWRnZSwgc3JjSW5mbywgdGd0SW5mbywgX3dlaWdodCk7IC8vIElmIHVuZGlyZWN0ZWQgZ3JhcGgsIHdlIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlICdyZXZlcnNlJyBlZGdlXG5cbiAgICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICAgIGNoZWNrRm9yRWRnZVJlcGxhY2VtZW50KHRndCwgc3JjLCBlZGdlLCB0Z3RJbmZvLCBzcmNJbmZvLCBfd2VpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXJlcGxhY2VkRWRnZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVwbGFjZWRFZGdlKSB7XG4gICAgICAvLyBDaGVjayBmb3IgbmVnYXRpdmUgd2VpZ2h0IGN5Y2xlc1xuICAgICAgZm9yICh2YXIgX2UgPSAwOyBfZSA8IG51bUVkZ2VzOyBfZSsrKSB7XG4gICAgICAgIHZhciBfZWRnZSA9IGVkZ2VzW19lXTtcblxuICAgICAgICB2YXIgX3NyYyA9IF9lZGdlLnNvdXJjZSgpO1xuXG4gICAgICAgIHZhciBfdGd0ID0gX2VkZ2UudGFyZ2V0KCk7XG5cbiAgICAgICAgdmFyIF93ZWlnaHQyID0gd2VpZ2h0Rm4oX2VkZ2UpO1xuXG4gICAgICAgIHZhciBzcmNEaXN0ID0gZ2V0SW5mbyhfc3JjKS5kaXN0O1xuICAgICAgICB2YXIgdGd0RGlzdCA9IGdldEluZm8oX3RndCkuZGlzdDtcblxuICAgICAgICBpZiAoc3JjRGlzdCArIF93ZWlnaHQyIDwgdGd0RGlzdCB8fCAhZGlyZWN0ZWQgJiYgdGd0RGlzdCArIF93ZWlnaHQyIDwgc3JjRGlzdCkge1xuICAgICAgICAgIHdhcm4oJ0dyYXBoIGNvbnRhaW5zIGEgbmVnYXRpdmUgd2VpZ2h0IGN5Y2xlIGZvciBCZWxsbWFuLUZvcmQnKTtcbiAgICAgICAgICBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXN0YW5jZVRvOiBkaXN0YW5jZVRvLFxuICAgICAgcGF0aFRvOiBwYXRoVG8sXG4gICAgICBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlOiBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlLFxuICAgICAgbmVnYXRpdmVXZWlnaHRDeWNsZXM6IG5lZ2F0aXZlV2VpZ2h0Q3ljbGVzXG4gICAgfTtcbiAgfSAvLyBiZWxsbWFuRm9yZFxuXG59OyAvLyBlbGVzZm5cblxudmFyIHNxcnQyID0gTWF0aC5zcXJ0KDIpOyAvLyBGdW5jdGlvbiB3aGljaCBjb2xhcHNlcyAyIChtZXRhKSBub2RlcyBpbnRvIG9uZVxuLy8gVXBkYXRlcyB0aGUgcmVtYWluaW5nIGVkZ2UgbGlzdHNcbi8vIFJlY2VpdmVzIGFzIGEgcGFyYW1hdGVyIHRoZSBlZGdlIHdoaWNoIGNhdXNlcyB0aGUgY29sbGFwc2VcblxudmFyIGNvbGxhcHNlID0gZnVuY3Rpb24gY29sbGFwc2UoZWRnZUluZGV4LCBub2RlTWFwLCByZW1haW5pbmdFZGdlcykge1xuICBpZiAocmVtYWluaW5nRWRnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgZXJyb3IoXCJLYXJnZXItU3RlaW4gbXVzdCBiZSBydW4gb24gYSBjb25uZWN0ZWQgKHN1YilncmFwaFwiKTtcbiAgfVxuXG4gIHZhciBlZGdlSW5mbyA9IHJlbWFpbmluZ0VkZ2VzW2VkZ2VJbmRleF07XG4gIHZhciBzb3VyY2VJbiA9IGVkZ2VJbmZvWzFdO1xuICB2YXIgdGFyZ2V0SW4gPSBlZGdlSW5mb1syXTtcbiAgdmFyIHBhcnRpdGlvbjEgPSBub2RlTWFwW3NvdXJjZUluXTtcbiAgdmFyIHBhcnRpdGlvbjIgPSBub2RlTWFwW3RhcmdldEluXTtcbiAgdmFyIG5ld0VkZ2VzID0gcmVtYWluaW5nRWRnZXM7IC8vIHJlLXVzZSBhcnJheVxuICAvLyBEZWxldGUgYWxsIGVkZ2VzIGJldHdlZW4gcGFydGl0aW9uMSBhbmQgcGFydGl0aW9uMlxuXG4gIGZvciAodmFyIGkgPSBuZXdFZGdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBlZGdlID0gbmV3RWRnZXNbaV07XG4gICAgdmFyIHNyYyA9IGVkZ2VbMV07XG4gICAgdmFyIHRndCA9IGVkZ2VbMl07XG5cbiAgICBpZiAobm9kZU1hcFtzcmNdID09PSBwYXJ0aXRpb24xICYmIG5vZGVNYXBbdGd0XSA9PT0gcGFydGl0aW9uMiB8fCBub2RlTWFwW3NyY10gPT09IHBhcnRpdGlvbjIgJiYgbm9kZU1hcFt0Z3RdID09PSBwYXJ0aXRpb24xKSB7XG4gICAgICBuZXdFZGdlcy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9IC8vIEFsbCBlZGdlcyBwb2ludGluZyB0byBwYXJ0aXRpb24yIHNob3VsZCBub3cgcG9pbnQgdG8gcGFydGl0aW9uMVxuXG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5ld0VkZ2VzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBfZWRnZSA9IG5ld0VkZ2VzW19pXTtcblxuICAgIGlmIChfZWRnZVsxXSA9PT0gcGFydGl0aW9uMikge1xuICAgICAgLy8gQ2hlY2sgc291cmNlXG4gICAgICBuZXdFZGdlc1tfaV0gPSBfZWRnZS5zbGljZSgpOyAvLyBjb3B5XG5cbiAgICAgIG5ld0VkZ2VzW19pXVsxXSA9IHBhcnRpdGlvbjE7XG4gICAgfSBlbHNlIGlmIChfZWRnZVsyXSA9PT0gcGFydGl0aW9uMikge1xuICAgICAgLy8gQ2hlY2sgdGFyZ2V0XG4gICAgICBuZXdFZGdlc1tfaV0gPSBfZWRnZS5zbGljZSgpOyAvLyBjb3B5XG5cbiAgICAgIG5ld0VkZ2VzW19pXVsyXSA9IHBhcnRpdGlvbjE7XG4gICAgfVxuICB9IC8vIE1vdmUgYWxsIG5vZGVzIGZyb20gcGFydGl0aW9uMiB0byBwYXJ0aXRpb24xXG5cblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2RlTWFwLmxlbmd0aDsgX2kyKyspIHtcbiAgICBpZiAobm9kZU1hcFtfaTJdID09PSBwYXJ0aXRpb24yKSB7XG4gICAgICBub2RlTWFwW19pMl0gPSBwYXJ0aXRpb24xO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdFZGdlcztcbn07IC8vIENvbnRyYWN0cyBhIGdyYXBoIHVudGlsIHdlIHJlYWNoIGEgY2VydGFpbiBudW1iZXIgb2YgbWV0YSBub2Rlc1xuXG5cbnZhciBjb250cmFjdFVudGlsID0gZnVuY3Rpb24gY29udHJhY3RVbnRpbChtZXRhTm9kZU1hcCwgcmVtYWluaW5nRWRnZXMsIHNpemUsIHNpemVMaW1pdCkge1xuICB3aGlsZSAoc2l6ZSA+IHNpemVMaW1pdCkge1xuICAgIC8vIENob29zZSBhbiBlZGdlIHJhbmRvbWx5XG4gICAgdmFyIGVkZ2VJbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHJlbWFpbmluZ0VkZ2VzLmxlbmd0aCk7IC8vIENvbGxhcHNlIGdyYXBoIGJhc2VkIG9uIGVkZ2VcblxuICAgIHJlbWFpbmluZ0VkZ2VzID0gY29sbGFwc2UoZWRnZUluZGV4LCBtZXRhTm9kZU1hcCwgcmVtYWluaW5nRWRnZXMpO1xuICAgIHNpemUtLTtcbiAgfVxuXG4gIHJldHVybiByZW1haW5pbmdFZGdlcztcbn07XG5cbnZhciBlbGVzZm4kNiA9IHtcbiAgLy8gQ29tcHV0ZXMgdGhlIG1pbmltdW0gY3V0IG9mIGFuIHVuZGlyZWN0ZWQgZ3JhcGhcbiAgLy8gUmV0dXJucyB0aGUgY29ycmVjdCBhbnN3ZXIgd2l0aCBoaWdoIHByb2JhYmlsaXR5XG4gIGthcmdlclN0ZWluOiBmdW5jdGlvbiBrYXJnZXJTdGVpbigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF90aGlzJGJ5R3JvdXAgPSB0aGlzLmJ5R3JvdXAoKSxcbiAgICAgICAgbm9kZXMgPSBfdGhpcyRieUdyb3VwLm5vZGVzLFxuICAgICAgICBlZGdlcyA9IF90aGlzJGJ5R3JvdXAuZWRnZXM7XG5cbiAgICBlZGdlcy51bm1lcmdlQnkoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLmlzTG9vcCgpO1xuICAgIH0pO1xuICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcbiAgICB2YXIgbnVtRWRnZXMgPSBlZGdlcy5sZW5ndGg7XG4gICAgdmFyIG51bUl0ZXIgPSBNYXRoLmNlaWwoTWF0aC5wb3coTWF0aC5sb2cobnVtTm9kZXMpIC8gTWF0aC5MTjIsIDIpKTtcbiAgICB2YXIgc3RvcFNpemUgPSBNYXRoLmZsb29yKG51bU5vZGVzIC8gc3FydDIpO1xuXG4gICAgaWYgKG51bU5vZGVzIDwgMikge1xuICAgICAgZXJyb3IoJ0F0IGxlYXN0IDIgbm9kZXMgYXJlIHJlcXVpcmVkIGZvciBLYXJnZXItU3RlaW4gYWxnb3JpdGhtJyk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gLy8gTm93IHN0b3JlIGVkZ2UgZGVzdGluYXRpb24gYXMgaW5kZXhlc1xuICAgIC8vIEZvcm1hdCBmb3IgZWFjaCBlZGdlIChlZGdlIGluZGV4LCBzb3VyY2Ugbm9kZSBpbmRleCwgdGFyZ2V0IG5vZGUgaW5kZXgpXG5cblxuICAgIHZhciBlZGdlSW5kZXhlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FZGdlczsgaSsrKSB7XG4gICAgICB2YXIgZSA9IGVkZ2VzW2ldO1xuICAgICAgZWRnZUluZGV4ZXMucHVzaChbaSwgbm9kZXMuaW5kZXhPZihlLnNvdXJjZSgpKSwgbm9kZXMuaW5kZXhPZihlLnRhcmdldCgpKV0pO1xuICAgIH0gLy8gV2Ugd2lsbCBzdG9yZSB0aGUgYmVzdCBjdXQgZm91bmQgaGVyZVxuXG5cbiAgICB2YXIgbWluQ3V0U2l6ZSA9IEluZmluaXR5O1xuICAgIHZhciBtaW5DdXRFZGdlSW5kZXhlcyA9IFtdO1xuICAgIHZhciBtaW5DdXROb2RlTWFwID0gbmV3IEFycmF5KG51bU5vZGVzKTsgLy8gSW5pdGlhbCBtZXRhIG5vZGUgcGFydGl0aW9uXG5cbiAgICB2YXIgbWV0YU5vZGVNYXAgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuICAgIHZhciBtZXRhTm9kZU1hcDIgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuXG4gICAgdmFyIGNvcHlOb2Rlc01hcCA9IGZ1bmN0aW9uIGNvcHlOb2Rlc01hcChmcm9tLCB0bykge1xuICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgbnVtTm9kZXM7IF9pMysrKSB7XG4gICAgICAgIHRvW19pM10gPSBmcm9tW19pM107XG4gICAgICB9XG4gICAgfTsgLy8gTWFpbiBsb29wXG5cblxuICAgIGZvciAodmFyIGl0ZXIgPSAwOyBpdGVyIDw9IG51bUl0ZXI7IGl0ZXIrKykge1xuICAgICAgLy8gUmVzZXQgbWV0YSBub2RlIHBhcnRpdGlvblxuICAgICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbnVtTm9kZXM7IF9pNCsrKSB7XG4gICAgICAgIG1ldGFOb2RlTWFwW19pNF0gPSBfaTQ7XG4gICAgICB9IC8vIENvbnRyYWN0IHVudGlsIHN0b3AgcG9pbnQgKHN0b3BTaXplIG5vZGVzKVxuXG5cbiAgICAgIHZhciBlZGdlc1N0YXRlID0gY29udHJhY3RVbnRpbChtZXRhTm9kZU1hcCwgZWRnZUluZGV4ZXMuc2xpY2UoKSwgbnVtTm9kZXMsIHN0b3BTaXplKTtcbiAgICAgIHZhciBlZGdlc1N0YXRlMiA9IGVkZ2VzU3RhdGUuc2xpY2UoKTsgLy8gY29weVxuICAgICAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGUgY29sYXBzZWQgbm9kZXMgc3RhdGVcblxuICAgICAgY29weU5vZGVzTWFwKG1ldGFOb2RlTWFwLCBtZXRhTm9kZU1hcDIpOyAvLyBSdW4gMiBpdGVyYXRpb25zIHN0YXJ0aW5nIGluIHRoZSBzdG9wIHN0YXRlXG5cbiAgICAgIHZhciByZXMxID0gY29udHJhY3RVbnRpbChtZXRhTm9kZU1hcCwgZWRnZXNTdGF0ZSwgc3RvcFNpemUsIDIpO1xuICAgICAgdmFyIHJlczIgPSBjb250cmFjdFVudGlsKG1ldGFOb2RlTWFwMiwgZWRnZXNTdGF0ZTIsIHN0b3BTaXplLCAyKTsgLy8gSXMgYW55IG9mIHRoZSAyIHJlc3VsdHMgdGhlIGJlc3QgY3V0IHNvIGZhcj9cblxuICAgICAgaWYgKHJlczEubGVuZ3RoIDw9IHJlczIubGVuZ3RoICYmIHJlczEubGVuZ3RoIDwgbWluQ3V0U2l6ZSkge1xuICAgICAgICBtaW5DdXRTaXplID0gcmVzMS5sZW5ndGg7XG4gICAgICAgIG1pbkN1dEVkZ2VJbmRleGVzID0gcmVzMTtcbiAgICAgICAgY29weU5vZGVzTWFwKG1ldGFOb2RlTWFwLCBtaW5DdXROb2RlTWFwKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzMi5sZW5ndGggPD0gcmVzMS5sZW5ndGggJiYgcmVzMi5sZW5ndGggPCBtaW5DdXRTaXplKSB7XG4gICAgICAgIG1pbkN1dFNpemUgPSByZXMyLmxlbmd0aDtcbiAgICAgICAgbWluQ3V0RWRnZUluZGV4ZXMgPSByZXMyO1xuICAgICAgICBjb3B5Tm9kZXNNYXAobWV0YU5vZGVNYXAyLCBtaW5DdXROb2RlTWFwKTtcbiAgICAgIH1cbiAgICB9IC8vIGVuZCBvZiBtYWluIGxvb3BcbiAgICAvLyBDb25zdHJ1Y3QgcmVzdWx0XG5cblxuICAgIHZhciBjdXQgPSB0aGlzLnNwYXduKG1pbkN1dEVkZ2VJbmRleGVzLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGVkZ2VzW2VbMF1dO1xuICAgIH0pKTtcbiAgICB2YXIgcGFydGl0aW9uMSA9IHRoaXMuc3Bhd24oKTtcbiAgICB2YXIgcGFydGl0aW9uMiA9IHRoaXMuc3Bhd24oKTsgLy8gdHJhdmVyc2UgbWV0YU5vZGVNYXAgZm9yIGJlc3QgY3V0XG5cbiAgICB2YXIgd2l0bmVzc05vZGVQYXJ0aXRpb24gPSBtaW5DdXROb2RlTWFwWzBdO1xuXG4gICAgZm9yICh2YXIgX2k1ID0gMDsgX2k1IDwgbWluQ3V0Tm9kZU1hcC5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgcGFydGl0aW9uSWQgPSBtaW5DdXROb2RlTWFwW19pNV07XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW19pNV07XG5cbiAgICAgIGlmIChwYXJ0aXRpb25JZCA9PT0gd2l0bmVzc05vZGVQYXJ0aXRpb24pIHtcbiAgICAgICAgcGFydGl0aW9uMS5tZXJnZShub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnRpdGlvbjIubWVyZ2Uobm9kZSk7XG4gICAgICB9XG4gICAgfSAvLyBjb25zdHJ1Y3QgY29tcG9uZW50cyBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZGlzam9pbnQgc3Vic2V0IG9mIG5vZGVzXG5cblxuICAgIHZhciBjb25zdHJ1Y3RDb21wb25lbnQgPSBmdW5jdGlvbiBjb25zdHJ1Y3RDb21wb25lbnQoc3Vic2V0KSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gX3RoaXMuc3Bhd24oKTtcblxuICAgICAgc3Vic2V0LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgY29tcG9uZW50Lm1lcmdlKG5vZGUpO1xuICAgICAgICBub2RlLmNvbm5lY3RlZEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIC8vIGVuc3VyZSBlZGdlIGlzIHdpdGhpbiBjYWxsaW5nIGNvbGxlY3Rpb24gYW5kIGVkZ2UgaXMgbm90IGluIGN1dFxuICAgICAgICAgIGlmIChfdGhpcy5jb250YWlucyhlZGdlKSAmJiAhY3V0LmNvbnRhaW5zKGVkZ2UpKSB7XG4gICAgICAgICAgICBjb21wb25lbnQubWVyZ2UoZWRnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICB9O1xuXG4gICAgdmFyIGNvbXBvbmVudHMgPSBbY29uc3RydWN0Q29tcG9uZW50KHBhcnRpdGlvbjEpLCBjb25zdHJ1Y3RDb21wb25lbnQocGFydGl0aW9uMildO1xuICAgIHZhciByZXQgPSB7XG4gICAgICBjdXQ6IGN1dCxcbiAgICAgIGNvbXBvbmVudHM6IGNvbXBvbmVudHMsXG4gICAgICAvLyBuLmIuIHBhcnRpdGlvbnMgYXJlIGluY2x1ZGVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIGFwaSBzcGVjXG4gICAgICAvLyAoY291bGQgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uKVxuICAgICAgcGFydGl0aW9uMTogcGFydGl0aW9uMSxcbiAgICAgIHBhcnRpdGlvbjI6IHBhcnRpdGlvbjJcbiAgICB9O1xuICAgIHJldHVybiByZXQ7XG4gIH1cbn07IC8vIGVsZXNmblxuXG52YXIgY29weVBvc2l0aW9uID0gZnVuY3Rpb24gY29weVBvc2l0aW9uKHApIHtcbiAgcmV0dXJuIHtcbiAgICB4OiBwLngsXG4gICAgeTogcC55XG4gIH07XG59O1xudmFyIG1vZGVsVG9SZW5kZXJlZFBvc2l0aW9uID0gZnVuY3Rpb24gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24ocCwgem9vbSwgcGFuKSB7XG4gIHJldHVybiB7XG4gICAgeDogcC54ICogem9vbSArIHBhbi54LFxuICAgIHk6IHAueSAqIHpvb20gKyBwYW4ueVxuICB9O1xufTtcbnZhciByZW5kZXJlZFRvTW9kZWxQb3NpdGlvbiA9IGZ1bmN0aW9uIHJlbmRlcmVkVG9Nb2RlbFBvc2l0aW9uKHAsIHpvb20sIHBhbikge1xuICByZXR1cm4ge1xuICAgIHg6IChwLnggLSBwYW4ueCkgLyB6b29tLFxuICAgIHk6IChwLnkgLSBwYW4ueSkgLyB6b29tXG4gIH07XG59O1xudmFyIGFycmF5MnBvaW50ID0gZnVuY3Rpb24gYXJyYXkycG9pbnQoYXJyKSB7XG4gIHJldHVybiB7XG4gICAgeDogYXJyWzBdLFxuICAgIHk6IGFyclsxXVxuICB9O1xufTtcbnZhciBtaW4gPSBmdW5jdGlvbiBtaW4oYXJyKSB7XG4gIHZhciBiZWdpbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogYXJyLmxlbmd0aDtcbiAgdmFyIG1pbiA9IEluZmluaXR5O1xuXG4gIGZvciAodmFyIGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7XG4gICAgdmFyIHZhbCA9IGFycltpXTtcblxuICAgIGlmIChpc0Zpbml0ZSh2YWwpKSB7XG4gICAgICBtaW4gPSBNYXRoLm1pbih2YWwsIG1pbik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pbjtcbn07XG52YXIgbWF4ID0gZnVuY3Rpb24gbWF4KGFycikge1xuICB2YXIgYmVnaW4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gIHZhciBlbmQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGFyci5sZW5ndGg7XG4gIHZhciBtYXggPSAtSW5maW5pdHk7XG5cbiAgZm9yICh2YXIgaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHtcbiAgICB2YXIgdmFsID0gYXJyW2ldO1xuXG4gICAgaWYgKGlzRmluaXRlKHZhbCkpIHtcbiAgICAgIG1heCA9IE1hdGgubWF4KHZhbCwgbWF4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF4O1xufTtcbnZhciBtZWFuID0gZnVuY3Rpb24gbWVhbihhcnIpIHtcbiAgdmFyIGJlZ2luID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAwO1xuICB2YXIgZW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBhcnIubGVuZ3RoO1xuICB2YXIgdG90YWwgPSAwO1xuICB2YXIgbiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHtcbiAgICB2YXIgdmFsID0gYXJyW2ldO1xuXG4gICAgaWYgKGlzRmluaXRlKHZhbCkpIHtcbiAgICAgIHRvdGFsICs9IHZhbDtcbiAgICAgIG4rKztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG90YWwgLyBuO1xufTtcbnZhciBtZWRpYW4gPSBmdW5jdGlvbiBtZWRpYW4oYXJyKSB7XG4gIHZhciBiZWdpbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogYXJyLmxlbmd0aDtcbiAgdmFyIGNvcHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHRydWU7XG4gIHZhciBzb3J0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiB0cnVlO1xuICB2YXIgaW5jbHVkZUhvbGVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB0cnVlO1xuXG4gIGlmIChjb3B5KSB7XG4gICAgYXJyID0gYXJyLnNsaWNlKGJlZ2luLCBlbmQpO1xuICB9IGVsc2Uge1xuICAgIGlmIChlbmQgPCBhcnIubGVuZ3RoKSB7XG4gICAgICBhcnIuc3BsaWNlKGVuZCwgYXJyLmxlbmd0aCAtIGVuZCk7XG4gICAgfVxuXG4gICAgaWYgKGJlZ2luID4gMCkge1xuICAgICAgYXJyLnNwbGljZSgwLCBiZWdpbik7XG4gICAgfVxuICB9IC8vIGFsbCBub24gZmluaXRlIChlLmcuIEluZmluaXR5LCBOYU4pIGVsZW1lbnRzIG11c3QgYmUgLUluZmluaXR5IHNvIHRoZXkgZ28gdG8gdGhlIHN0YXJ0XG5cblxuICB2YXIgb2ZmID0gMDsgLy8gb2Zmc2V0IGZyb20gbm9uLWZpbml0ZSB2YWx1ZXNcblxuICBmb3IgKHZhciBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHYgPSBhcnJbaV07XG5cbiAgICBpZiAoaW5jbHVkZUhvbGVzKSB7XG4gICAgICBpZiAoIWlzRmluaXRlKHYpKSB7XG4gICAgICAgIGFycltpXSA9IC1JbmZpbml0eTtcbiAgICAgICAgb2ZmKys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGp1c3QgcmVtb3ZlIGl0IGlmIHdlIGRvbid0IHdhbnQgdG8gY29uc2lkZXIgaG9sZXNcbiAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNvcnQpIHtcbiAgICBhcnIuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pOyAvLyByZXF1aXJlcyBjb3B5ID0gdHJ1ZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdGhlIG9yaWdcbiAgfVxuXG4gIHZhciBsZW4gPSBhcnIubGVuZ3RoO1xuICB2YXIgbWlkID0gTWF0aC5mbG9vcihsZW4gLyAyKTtcblxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHJldHVybiBhcnJbbWlkICsgMSArIG9mZl07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChhcnJbbWlkIC0gMSArIG9mZl0gKyBhcnJbbWlkICsgb2ZmXSkgLyAyO1xuICB9XG59O1xudmFyIGRlZzJyYWQgPSBmdW5jdGlvbiBkZWcycmFkKGRlZykge1xuICByZXR1cm4gTWF0aC5QSSAqIGRlZyAvIDE4MDtcbn07XG52YXIgZ2V0QW5nbGVGcm9tRGlzcCA9IGZ1bmN0aW9uIGdldEFuZ2xlRnJvbURpc3AoZGlzcFgsIGRpc3BZKSB7XG4gIHJldHVybiBNYXRoLmF0YW4yKGRpc3BZLCBkaXNwWCkgLSBNYXRoLlBJIC8gMjtcbn07XG52YXIgbG9nMiA9IE1hdGgubG9nMiB8fCBmdW5jdGlvbiAobikge1xuICByZXR1cm4gTWF0aC5sb2cobikgLyBNYXRoLmxvZygyKTtcbn07XG52YXIgc2lnbnVtID0gZnVuY3Rpb24gc2lnbnVtKHgpIHtcbiAgaWYgKHggPiAwKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0gZWxzZSBpZiAoeCA8IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG52YXIgZGlzdCA9IGZ1bmN0aW9uIGRpc3QocDEsIHAyKSB7XG4gIHJldHVybiBNYXRoLnNxcnQoc3FkaXN0KHAxLCBwMikpO1xufTtcbnZhciBzcWRpc3QgPSBmdW5jdGlvbiBzcWRpc3QocDEsIHAyKSB7XG4gIHZhciBkeCA9IHAyLnggLSBwMS54O1xuICB2YXIgZHkgPSBwMi55IC0gcDEueTtcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xufTtcbnZhciBpblBsYWNlU3VtTm9ybWFsaXplID0gZnVuY3Rpb24gaW5QbGFjZVN1bU5vcm1hbGl6ZSh2KSB7XG4gIHZhciBsZW5ndGggPSB2Lmxlbmd0aDsgLy8gRmlyc3QsIGdldCBzdW0gb2YgYWxsIGVsZW1lbnRzXG5cbiAgdmFyIHRvdGFsID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdG90YWwgKz0gdltpXTtcbiAgfSAvLyBOb3csIGRpdmlkZSBlYWNoIGJ5IHRoZSBzdW0gb2YgYWxsIGVsZW1lbnRzXG5cblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuZ3RoOyBfaSsrKSB7XG4gICAgdltfaV0gPSB2W19pXSAvIHRvdGFsO1xuICB9XG5cbiAgcmV0dXJuIHY7XG59O1xuXG52YXIgcWJlemllckF0ID0gZnVuY3Rpb24gcWJlemllckF0KHAwLCBwMSwgcDIsIHQpIHtcbiAgcmV0dXJuICgxIC0gdCkgKiAoMSAtIHQpICogcDAgKyAyICogKDEgLSB0KSAqIHQgKiBwMSArIHQgKiB0ICogcDI7XG59O1xudmFyIHFiZXppZXJQdEF0ID0gZnVuY3Rpb24gcWJlemllclB0QXQocDAsIHAxLCBwMiwgdCkge1xuICByZXR1cm4ge1xuICAgIHg6IHFiZXppZXJBdChwMC54LCBwMS54LCBwMi54LCB0KSxcbiAgICB5OiBxYmV6aWVyQXQocDAueSwgcDEueSwgcDIueSwgdClcbiAgfTtcbn07XG52YXIgbGluZUF0ID0gZnVuY3Rpb24gbGluZUF0KHAwLCBwMSwgdCwgZCkge1xuICB2YXIgdmVjID0ge1xuICAgIHg6IHAxLnggLSBwMC54LFxuICAgIHk6IHAxLnkgLSBwMC55XG4gIH07XG4gIHZhciB2ZWNEaXN0ID0gZGlzdChwMCwgcDEpO1xuICB2YXIgbm9ybVZlYyA9IHtcbiAgICB4OiB2ZWMueCAvIHZlY0Rpc3QsXG4gICAgeTogdmVjLnkgLyB2ZWNEaXN0XG4gIH07XG4gIHQgPSB0ID09IG51bGwgPyAwIDogdDtcbiAgZCA9IGQgIT0gbnVsbCA/IGQgOiB0ICogdmVjRGlzdDtcbiAgcmV0dXJuIHtcbiAgICB4OiBwMC54ICsgbm9ybVZlYy54ICogZCxcbiAgICB5OiBwMC55ICsgbm9ybVZlYy55ICogZFxuICB9O1xufTtcbnZhciBib3VuZCA9IGZ1bmN0aW9uIGJvdW5kKG1pbiwgdmFsLCBtYXgpIHtcbiAgcmV0dXJuIE1hdGgubWF4KG1pbiwgTWF0aC5taW4obWF4LCB2YWwpKTtcbn07IC8vIG1ha2VzIGEgZnVsbCBiYiAoeDEsIHkxLCB4MiwgeTIsIHcsIGgpIGZyb20gaW1wbGljaXQgcGFyYW1zXG5cbnZhciBtYWtlQm91bmRpbmdCb3ggPSBmdW5jdGlvbiBtYWtlQm91bmRpbmdCb3goYmIpIHtcbiAgaWYgKGJiID09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDE6IEluZmluaXR5LFxuICAgICAgeTE6IEluZmluaXR5LFxuICAgICAgeDI6IC1JbmZpbml0eSxcbiAgICAgIHkyOiAtSW5maW5pdHksXG4gICAgICB3OiAwLFxuICAgICAgaDogMFxuICAgIH07XG4gIH0gZWxzZSBpZiAoYmIueDEgIT0gbnVsbCAmJiBiYi55MSAhPSBudWxsKSB7XG4gICAgaWYgKGJiLngyICE9IG51bGwgJiYgYmIueTIgIT0gbnVsbCAmJiBiYi54MiA+PSBiYi54MSAmJiBiYi55MiA+PSBiYi55MSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDE6IGJiLngxLFxuICAgICAgICB5MTogYmIueTEsXG4gICAgICAgIHgyOiBiYi54MixcbiAgICAgICAgeTI6IGJiLnkyLFxuICAgICAgICB3OiBiYi54MiAtIGJiLngxLFxuICAgICAgICBoOiBiYi55MiAtIGJiLnkxXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoYmIudyAhPSBudWxsICYmIGJiLmggIT0gbnVsbCAmJiBiYi53ID49IDAgJiYgYmIuaCA+PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4MTogYmIueDEsXG4gICAgICAgIHkxOiBiYi55MSxcbiAgICAgICAgeDI6IGJiLngxICsgYmIudyxcbiAgICAgICAgeTI6IGJiLnkxICsgYmIuaCxcbiAgICAgICAgdzogYmIudyxcbiAgICAgICAgaDogYmIuaFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG52YXIgY29weUJvdW5kaW5nQm94ID0gZnVuY3Rpb24gY29weUJvdW5kaW5nQm94KGJiKSB7XG4gIHJldHVybiB7XG4gICAgeDE6IGJiLngxLFxuICAgIHgyOiBiYi54MixcbiAgICB3OiBiYi53LFxuICAgIHkxOiBiYi55MSxcbiAgICB5MjogYmIueTIsXG4gICAgaDogYmIuaFxuICB9O1xufTtcbnZhciBjbGVhckJvdW5kaW5nQm94ID0gZnVuY3Rpb24gY2xlYXJCb3VuZGluZ0JveChiYikge1xuICBiYi54MSA9IEluZmluaXR5O1xuICBiYi55MSA9IEluZmluaXR5O1xuICBiYi54MiA9IC1JbmZpbml0eTtcbiAgYmIueTIgPSAtSW5maW5pdHk7XG4gIGJiLncgPSAwO1xuICBiYi5oID0gMDtcbn07XG52YXIgdXBkYXRlQm91bmRpbmdCb3ggPSBmdW5jdGlvbiB1cGRhdGVCb3VuZGluZ0JveChiYjEsIGJiMikge1xuICAvLyB1cGRhdGUgYmIxIHdpdGggYmIyIGJvdW5kc1xuICBiYjEueDEgPSBNYXRoLm1pbihiYjEueDEsIGJiMi54MSk7XG4gIGJiMS54MiA9IE1hdGgubWF4KGJiMS54MiwgYmIyLngyKTtcbiAgYmIxLncgPSBiYjEueDIgLSBiYjEueDE7XG4gIGJiMS55MSA9IE1hdGgubWluKGJiMS55MSwgYmIyLnkxKTtcbiAgYmIxLnkyID0gTWF0aC5tYXgoYmIxLnkyLCBiYjIueTIpO1xuICBiYjEuaCA9IGJiMS55MiAtIGJiMS55MTtcbn07XG52YXIgZXhwYW5kQm91bmRpbmdCb3hCeVBvaW50ID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3hCeVBvaW50KGJiLCB4LCB5KSB7XG4gIGJiLngxID0gTWF0aC5taW4oYmIueDEsIHgpO1xuICBiYi54MiA9IE1hdGgubWF4KGJiLngyLCB4KTtcbiAgYmIudyA9IGJiLngyIC0gYmIueDE7XG4gIGJiLnkxID0gTWF0aC5taW4oYmIueTEsIHkpO1xuICBiYi55MiA9IE1hdGgubWF4KGJiLnkyLCB5KTtcbiAgYmIuaCA9IGJiLnkyIC0gYmIueTE7XG59O1xudmFyIGV4cGFuZEJvdW5kaW5nQm94ID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3goYmIpIHtcbiAgdmFyIHBhZGRpbmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gIGJiLngxIC09IHBhZGRpbmc7XG4gIGJiLngyICs9IHBhZGRpbmc7XG4gIGJiLnkxIC09IHBhZGRpbmc7XG4gIGJiLnkyICs9IHBhZGRpbmc7XG4gIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgcmV0dXJuIGJiO1xufTtcbnZhciBleHBhbmRCb3VuZGluZ0JveFNpZGVzID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhiYikge1xuICB2YXIgcGFkZGluZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogWzBdO1xuICB2YXIgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0O1xuXG4gIGlmIChwYWRkaW5nLmxlbmd0aCA9PT0gMSkge1xuICAgIHRvcCA9IHJpZ2h0ID0gYm90dG9tID0gbGVmdCA9IHBhZGRpbmdbMF07XG4gIH0gZWxzZSBpZiAocGFkZGluZy5sZW5ndGggPT09IDIpIHtcbiAgICB0b3AgPSBib3R0b20gPSBwYWRkaW5nWzBdO1xuICAgIGxlZnQgPSByaWdodCA9IHBhZGRpbmdbMV07XG4gIH0gZWxzZSBpZiAocGFkZGluZy5sZW5ndGggPT09IDQpIHtcbiAgICB2YXIgX3BhZGRpbmcgPSBfc2xpY2VkVG9BcnJheShwYWRkaW5nLCA0KTtcblxuICAgIHRvcCA9IF9wYWRkaW5nWzBdO1xuICAgIHJpZ2h0ID0gX3BhZGRpbmdbMV07XG4gICAgYm90dG9tID0gX3BhZGRpbmdbMl07XG4gICAgbGVmdCA9IF9wYWRkaW5nWzNdO1xuICB9XG5cbiAgYmIueDEgLT0gbGVmdDtcbiAgYmIueDIgKz0gcmlnaHQ7XG4gIGJiLnkxIC09IHRvcDtcbiAgYmIueTIgKz0gYm90dG9tO1xuICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgYmIuaCA9IGJiLnkyIC0gYmIueTE7XG4gIHJldHVybiBiYjtcbn07XG5cbnZhciBhc3NpZ25Cb3VuZGluZ0JveCA9IGZ1bmN0aW9uIGFzc2lnbkJvdW5kaW5nQm94KGJiMSwgYmIyKSB7XG4gIGJiMS54MSA9IGJiMi54MTtcbiAgYmIxLnkxID0gYmIyLnkxO1xuICBiYjEueDIgPSBiYjIueDI7XG4gIGJiMS55MiA9IGJiMi55MjtcbiAgYmIxLncgPSBiYjEueDIgLSBiYjEueDE7XG4gIGJiMS5oID0gYmIxLnkyIC0gYmIxLnkxO1xufTtcbnZhciBib3VuZGluZ0JveGVzSW50ZXJzZWN0ID0gZnVuY3Rpb24gYm91bmRpbmdCb3hlc0ludGVyc2VjdChiYjEsIGJiMikge1xuICAvLyBjYXNlOiBvbmUgYmIgdG8gcmlnaHQgb2Ygb3RoZXJcbiAgaWYgKGJiMS54MSA+IGJiMi54Mikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChiYjIueDEgPiBiYjEueDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gY2FzZTogb25lIGJiIHRvIGxlZnQgb2Ygb3RoZXJcblxuXG4gIGlmIChiYjEueDIgPCBiYjIueDEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYmIyLngyIDwgYmIxLngxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIGNhc2U6IG9uZSBiYiBhYm92ZSBvdGhlclxuXG5cbiAgaWYgKGJiMS55MiA8IGJiMi55MSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChiYjIueTIgPCBiYjEueTEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gY2FzZTogb25lIGJiIGJlbG93IG90aGVyXG5cblxuICBpZiAoYmIxLnkxID4gYmIyLnkyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGJiMi55MSA+IGJiMS55Mikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBvdGhlcndpc2UsIG11c3QgaGF2ZSBzb21lIG92ZXJsYXBcblxuXG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBpbkJvdW5kaW5nQm94ID0gZnVuY3Rpb24gaW5Cb3VuZGluZ0JveChiYiwgeCwgeSkge1xuICByZXR1cm4gYmIueDEgPD0geCAmJiB4IDw9IGJiLngyICYmIGJiLnkxIDw9IHkgJiYgeSA8PSBiYi55Mjtcbn07XG52YXIgcG9pbnRJbkJvdW5kaW5nQm94ID0gZnVuY3Rpb24gcG9pbnRJbkJvdW5kaW5nQm94KGJiLCBwdCkge1xuICByZXR1cm4gaW5Cb3VuZGluZ0JveChiYiwgcHQueCwgcHQueSk7XG59O1xudmFyIGJvdW5kaW5nQm94SW5Cb3VuZGluZ0JveCA9IGZ1bmN0aW9uIGJvdW5kaW5nQm94SW5Cb3VuZGluZ0JveChiYjEsIGJiMikge1xuICByZXR1cm4gaW5Cb3VuZGluZ0JveChiYjEsIGJiMi54MSwgYmIyLnkxKSAmJiBpbkJvdW5kaW5nQm94KGJiMSwgYmIyLngyLCBiYjIueTIpO1xufTtcbnZhciByb3VuZFJlY3RhbmdsZUludGVyc2VjdExpbmUgPSBmdW5jdGlvbiByb3VuZFJlY3RhbmdsZUludGVyc2VjdExpbmUoeCwgeSwgbm9kZVgsIG5vZGVZLCB3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nKSB7XG4gIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoIC8gMjtcbiAgdmFyIGhhbGZIZWlnaHQgPSBoZWlnaHQgLyAyOyAvLyBDaGVjayBpbnRlcnNlY3Rpb25zIHdpdGggc3RyYWlnaHQgbGluZSBzZWdtZW50c1xuXG4gIHZhciBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zOyAvLyBUb3Agc2VnbWVudCwgbGVmdCB0byByaWdodFxuXG4gIHtcbiAgICB2YXIgdG9wU3RhcnRYID0gbm9kZVggLSBoYWxmV2lkdGggKyBjb3JuZXJSYWRpdXMgLSBwYWRkaW5nO1xuICAgIHZhciB0b3BTdGFydFkgPSBub2RlWSAtIGhhbGZIZWlnaHQgLSBwYWRkaW5nO1xuICAgIHZhciB0b3BFbmRYID0gbm9kZVggKyBoYWxmV2lkdGggLSBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nO1xuICAgIHZhciB0b3BFbmRZID0gdG9wU3RhcnRZO1xuICAgIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnMgPSBmaW5pdGVMaW5lc0ludGVyc2VjdCh4LCB5LCBub2RlWCwgbm9kZVksIHRvcFN0YXJ0WCwgdG9wU3RhcnRZLCB0b3BFbmRYLCB0b3BFbmRZLCBmYWxzZSk7XG5cbiAgICBpZiAoc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucztcbiAgICB9XG4gIH0gLy8gUmlnaHQgc2VnbWVudCwgdG9wIHRvIGJvdHRvbVxuXG4gIHtcbiAgICB2YXIgcmlnaHRTdGFydFggPSBub2RlWCArIGhhbGZXaWR0aCArIHBhZGRpbmc7XG4gICAgdmFyIHJpZ2h0U3RhcnRZID0gbm9kZVkgLSBoYWxmSGVpZ2h0ICsgY29ybmVyUmFkaXVzIC0gcGFkZGluZztcbiAgICB2YXIgcmlnaHRFbmRYID0gcmlnaHRTdGFydFg7XG4gICAgdmFyIHJpZ2h0RW5kWSA9IG5vZGVZICsgaGFsZkhlaWdodCAtIGNvcm5lclJhZGl1cyArIHBhZGRpbmc7XG4gICAgc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucyA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KHgsIHksIG5vZGVYLCBub2RlWSwgcmlnaHRTdGFydFgsIHJpZ2h0U3RhcnRZLCByaWdodEVuZFgsIHJpZ2h0RW5kWSwgZmFsc2UpO1xuXG4gICAgaWYgKHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnM7XG4gICAgfVxuICB9IC8vIEJvdHRvbSBzZWdtZW50LCBsZWZ0IHRvIHJpZ2h0XG5cbiAge1xuICAgIHZhciBib3R0b21TdGFydFggPSBub2RlWCAtIGhhbGZXaWR0aCArIGNvcm5lclJhZGl1cyAtIHBhZGRpbmc7XG4gICAgdmFyIGJvdHRvbVN0YXJ0WSA9IG5vZGVZICsgaGFsZkhlaWdodCArIHBhZGRpbmc7XG4gICAgdmFyIGJvdHRvbUVuZFggPSBub2RlWCArIGhhbGZXaWR0aCAtIGNvcm5lclJhZGl1cyArIHBhZGRpbmc7XG4gICAgdmFyIGJvdHRvbUVuZFkgPSBib3R0b21TdGFydFk7XG4gICAgc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucyA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KHgsIHksIG5vZGVYLCBub2RlWSwgYm90dG9tU3RhcnRYLCBib3R0b21TdGFydFksIGJvdHRvbUVuZFgsIGJvdHRvbUVuZFksIGZhbHNlKTtcblxuICAgIGlmIChzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zO1xuICAgIH1cbiAgfSAvLyBMZWZ0IHNlZ21lbnQsIHRvcCB0byBib3R0b21cblxuICB7XG4gICAgdmFyIGxlZnRTdGFydFggPSBub2RlWCAtIGhhbGZXaWR0aCAtIHBhZGRpbmc7XG4gICAgdmFyIGxlZnRTdGFydFkgPSBub2RlWSAtIGhhbGZIZWlnaHQgKyBjb3JuZXJSYWRpdXMgLSBwYWRkaW5nO1xuICAgIHZhciBsZWZ0RW5kWCA9IGxlZnRTdGFydFg7XG4gICAgdmFyIGxlZnRFbmRZID0gbm9kZVkgKyBoYWxmSGVpZ2h0IC0gY29ybmVyUmFkaXVzICsgcGFkZGluZztcbiAgICBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgbm9kZVgsIG5vZGVZLCBsZWZ0U3RhcnRYLCBsZWZ0U3RhcnRZLCBsZWZ0RW5kWCwgbGVmdEVuZFksIGZhbHNlKTtcblxuICAgIGlmIChzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zO1xuICAgIH1cbiAgfSAvLyBDaGVjayBpbnRlcnNlY3Rpb25zIHdpdGggYXJjIHNlZ21lbnRzXG5cbiAgdmFyIGFyY0ludGVyc2VjdGlvbnM7IC8vIFRvcCBMZWZ0XG5cbiAge1xuICAgIHZhciB0b3BMZWZ0Q2VudGVyWCA9IG5vZGVYIC0gaGFsZldpZHRoICsgY29ybmVyUmFkaXVzO1xuICAgIHZhciB0b3BMZWZ0Q2VudGVyWSA9IG5vZGVZIC0gaGFsZkhlaWdodCArIGNvcm5lclJhZGl1cztcbiAgICBhcmNJbnRlcnNlY3Rpb25zID0gaW50ZXJzZWN0TGluZUNpcmNsZSh4LCB5LCBub2RlWCwgbm9kZVksIHRvcExlZnRDZW50ZXJYLCB0b3BMZWZ0Q2VudGVyWSwgY29ybmVyUmFkaXVzICsgcGFkZGluZyk7IC8vIEVuc3VyZSB0aGUgaW50ZXJzZWN0aW9uIGlzIG9uIHRoZSBkZXNpcmVkIHF1YXJ0ZXIgb2YgdGhlIGNpcmNsZVxuXG4gICAgaWYgKGFyY0ludGVyc2VjdGlvbnMubGVuZ3RoID4gMCAmJiBhcmNJbnRlcnNlY3Rpb25zWzBdIDw9IHRvcExlZnRDZW50ZXJYICYmIGFyY0ludGVyc2VjdGlvbnNbMV0gPD0gdG9wTGVmdENlbnRlclkpIHtcbiAgICAgIHJldHVybiBbYXJjSW50ZXJzZWN0aW9uc1swXSwgYXJjSW50ZXJzZWN0aW9uc1sxXV07XG4gICAgfVxuICB9IC8vIFRvcCBSaWdodFxuXG4gIHtcbiAgICB2YXIgdG9wUmlnaHRDZW50ZXJYID0gbm9kZVggKyBoYWxmV2lkdGggLSBjb3JuZXJSYWRpdXM7XG4gICAgdmFyIHRvcFJpZ2h0Q2VudGVyWSA9IG5vZGVZIC0gaGFsZkhlaWdodCArIGNvcm5lclJhZGl1cztcbiAgICBhcmNJbnRlcnNlY3Rpb25zID0gaW50ZXJzZWN0TGluZUNpcmNsZSh4LCB5LCBub2RlWCwgbm9kZVksIHRvcFJpZ2h0Q2VudGVyWCwgdG9wUmlnaHRDZW50ZXJZLCBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nKTsgLy8gRW5zdXJlIHRoZSBpbnRlcnNlY3Rpb24gaXMgb24gdGhlIGRlc2lyZWQgcXVhcnRlciBvZiB0aGUgY2lyY2xlXG5cbiAgICBpZiAoYXJjSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwICYmIGFyY0ludGVyc2VjdGlvbnNbMF0gPj0gdG9wUmlnaHRDZW50ZXJYICYmIGFyY0ludGVyc2VjdGlvbnNbMV0gPD0gdG9wUmlnaHRDZW50ZXJZKSB7XG4gICAgICByZXR1cm4gW2FyY0ludGVyc2VjdGlvbnNbMF0sIGFyY0ludGVyc2VjdGlvbnNbMV1dO1xuICAgIH1cbiAgfSAvLyBCb3R0b20gUmlnaHRcblxuICB7XG4gICAgdmFyIGJvdHRvbVJpZ2h0Q2VudGVyWCA9IG5vZGVYICsgaGFsZldpZHRoIC0gY29ybmVyUmFkaXVzO1xuICAgIHZhciBib3R0b21SaWdodENlbnRlclkgPSBub2RlWSArIGhhbGZIZWlnaHQgLSBjb3JuZXJSYWRpdXM7XG4gICAgYXJjSW50ZXJzZWN0aW9ucyA9IGludGVyc2VjdExpbmVDaXJjbGUoeCwgeSwgbm9kZVgsIG5vZGVZLCBib3R0b21SaWdodENlbnRlclgsIGJvdHRvbVJpZ2h0Q2VudGVyWSwgY29ybmVyUmFkaXVzICsgcGFkZGluZyk7IC8vIEVuc3VyZSB0aGUgaW50ZXJzZWN0aW9uIGlzIG9uIHRoZSBkZXNpcmVkIHF1YXJ0ZXIgb2YgdGhlIGNpcmNsZVxuXG4gICAgaWYgKGFyY0ludGVyc2VjdGlvbnMubGVuZ3RoID4gMCAmJiBhcmNJbnRlcnNlY3Rpb25zWzBdID49IGJvdHRvbVJpZ2h0Q2VudGVyWCAmJiBhcmNJbnRlcnNlY3Rpb25zWzFdID49IGJvdHRvbVJpZ2h0Q2VudGVyWSkge1xuICAgICAgcmV0dXJuIFthcmNJbnRlcnNlY3Rpb25zWzBdLCBhcmNJbnRlcnNlY3Rpb25zWzFdXTtcbiAgICB9XG4gIH0gLy8gQm90dG9tIExlZnRcblxuICB7XG4gICAgdmFyIGJvdHRvbUxlZnRDZW50ZXJYID0gbm9kZVggLSBoYWxmV2lkdGggKyBjb3JuZXJSYWRpdXM7XG4gICAgdmFyIGJvdHRvbUxlZnRDZW50ZXJZID0gbm9kZVkgKyBoYWxmSGVpZ2h0IC0gY29ybmVyUmFkaXVzO1xuICAgIGFyY0ludGVyc2VjdGlvbnMgPSBpbnRlcnNlY3RMaW5lQ2lyY2xlKHgsIHksIG5vZGVYLCBub2RlWSwgYm90dG9tTGVmdENlbnRlclgsIGJvdHRvbUxlZnRDZW50ZXJZLCBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nKTsgLy8gRW5zdXJlIHRoZSBpbnRlcnNlY3Rpb24gaXMgb24gdGhlIGRlc2lyZWQgcXVhcnRlciBvZiB0aGUgY2lyY2xlXG5cbiAgICBpZiAoYXJjSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwICYmIGFyY0ludGVyc2VjdGlvbnNbMF0gPD0gYm90dG9tTGVmdENlbnRlclggJiYgYXJjSW50ZXJzZWN0aW9uc1sxXSA+PSBib3R0b21MZWZ0Q2VudGVyWSkge1xuICAgICAgcmV0dXJuIFthcmNJbnRlcnNlY3Rpb25zWzBdLCBhcmNJbnRlcnNlY3Rpb25zWzFdXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtdOyAvLyBpZiBub3RoaW5nXG59O1xudmFyIGluTGluZVZpY2luaXR5ID0gZnVuY3Rpb24gaW5MaW5lVmljaW5pdHkoeCwgeSwgbHgxLCBseTEsIGx4MiwgbHkyLCB0b2xlcmFuY2UpIHtcbiAgdmFyIHQgPSB0b2xlcmFuY2U7XG4gIHZhciB4MSA9IE1hdGgubWluKGx4MSwgbHgyKTtcbiAgdmFyIHgyID0gTWF0aC5tYXgobHgxLCBseDIpO1xuICB2YXIgeTEgPSBNYXRoLm1pbihseTEsIGx5Mik7XG4gIHZhciB5MiA9IE1hdGgubWF4KGx5MSwgbHkyKTtcbiAgcmV0dXJuIHgxIC0gdCA8PSB4ICYmIHggPD0geDIgKyB0ICYmIHkxIC0gdCA8PSB5ICYmIHkgPD0geTIgKyB0O1xufTtcbnZhciBpbkJlemllclZpY2luaXR5ID0gZnVuY3Rpb24gaW5CZXppZXJWaWNpbml0eSh4LCB5LCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB0b2xlcmFuY2UpIHtcbiAgdmFyIGJiID0ge1xuICAgIHgxOiBNYXRoLm1pbih4MSwgeDMsIHgyKSAtIHRvbGVyYW5jZSxcbiAgICB4MjogTWF0aC5tYXgoeDEsIHgzLCB4MikgKyB0b2xlcmFuY2UsXG4gICAgeTE6IE1hdGgubWluKHkxLCB5MywgeTIpIC0gdG9sZXJhbmNlLFxuICAgIHkyOiBNYXRoLm1heCh5MSwgeTMsIHkyKSArIHRvbGVyYW5jZVxuICB9OyAvLyBpZiBvdXRzaWRlIHRoZSByb3VnaCBib3VuZGluZyBib3ggZm9yIHRoZSBiZXppZXIsIHRoZW4gaXQgY2FuJ3QgYmUgYSBoaXRcblxuICBpZiAoeCA8IGJiLngxIHx8IHggPiBiYi54MiB8fCB5IDwgYmIueTEgfHwgeSA+IGJiLnkyKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2JlemllciBvdXQgb2Ygcm91Z2ggYmInKVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBjb25zb2xlLmxvZygnZG8gbW9yZSBleHBlbnNpdmUgY2hlY2snKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbnZhciBzb2x2ZVF1YWRyYXRpYyA9IGZ1bmN0aW9uIHNvbHZlUXVhZHJhdGljKGEsIGIsIGMsIHZhbCkge1xuICBjIC09IHZhbDtcbiAgdmFyIHIgPSBiICogYiAtIDQgKiBhICogYztcblxuICBpZiAociA8IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgc3FydFIgPSBNYXRoLnNxcnQocik7XG4gIHZhciBkZW5vbSA9IDIgKiBhO1xuICB2YXIgcm9vdDEgPSAoLWIgKyBzcXJ0UikgLyBkZW5vbTtcbiAgdmFyIHJvb3QyID0gKC1iIC0gc3FydFIpIC8gZGVub207XG4gIHJldHVybiBbcm9vdDEsIHJvb3QyXTtcbn07XG52YXIgc29sdmVDdWJpYyA9IGZ1bmN0aW9uIHNvbHZlQ3ViaWMoYSwgYiwgYywgZCwgcmVzdWx0KSB7XG4gIC8vIFNvbHZlcyBhIGN1YmljIGZ1bmN0aW9uLCByZXR1cm5zIHJvb3QgaW4gZm9ybSBbcjEsIGkxLCByMiwgaTIsIHIzLCBpM10sIHdoZXJlXG4gIC8vIHIgaXMgdGhlIHJlYWwgY29tcG9uZW50LCBpIGlzIHRoZSBpbWFnaW5hcnkgY29tcG9uZW50XG4gIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBDYXJkYW5vIG1ldGhvZCBmcm9tIHRoZSB5ZWFyIDE1NDVcbiAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DdWJpY19mdW5jdGlvbiNUaGVfbmF0dXJlX29mX3RoZV9yb290c1xuICB2YXIgZXBzaWxvbiA9IDAuMDAwMDE7IC8vIGF2b2lkIGRpdmlzaW9uIGJ5IHplcm8gd2hpbGUga2VlcGluZyB0aGUgb3ZlcmFsbCBleHByZXNzaW9uIGNsb3NlIGluIHZhbHVlXG5cbiAgaWYgKGEgPT09IDApIHtcbiAgICBhID0gZXBzaWxvbjtcbiAgfVxuXG4gIGIgLz0gYTtcbiAgYyAvPSBhO1xuICBkIC89IGE7XG4gIHZhciBkaXNjcmltaW5hbnQsIHEsIHIsIGR1bTEsIHMsIHQsIHRlcm0xLCByMTM7XG4gIHEgPSAoMy4wICogYyAtIGIgKiBiKSAvIDkuMDtcbiAgciA9IC0oMjcuMCAqIGQpICsgYiAqICg5LjAgKiBjIC0gMi4wICogKGIgKiBiKSk7XG4gIHIgLz0gNTQuMDtcbiAgZGlzY3JpbWluYW50ID0gcSAqIHEgKiBxICsgciAqIHI7XG4gIHJlc3VsdFsxXSA9IDA7XG4gIHRlcm0xID0gYiAvIDMuMDtcblxuICBpZiAoZGlzY3JpbWluYW50ID4gMCkge1xuICAgIHMgPSByICsgTWF0aC5zcXJ0KGRpc2NyaW1pbmFudCk7XG4gICAgcyA9IHMgPCAwID8gLU1hdGgucG93KC1zLCAxLjAgLyAzLjApIDogTWF0aC5wb3cocywgMS4wIC8gMy4wKTtcbiAgICB0ID0gciAtIE1hdGguc3FydChkaXNjcmltaW5hbnQpO1xuICAgIHQgPSB0IDwgMCA/IC1NYXRoLnBvdygtdCwgMS4wIC8gMy4wKSA6IE1hdGgucG93KHQsIDEuMCAvIDMuMCk7XG4gICAgcmVzdWx0WzBdID0gLXRlcm0xICsgcyArIHQ7XG4gICAgdGVybTEgKz0gKHMgKyB0KSAvIDIuMDtcbiAgICByZXN1bHRbNF0gPSByZXN1bHRbMl0gPSAtdGVybTE7XG4gICAgdGVybTEgPSBNYXRoLnNxcnQoMy4wKSAqICgtdCArIHMpIC8gMjtcbiAgICByZXN1bHRbM10gPSB0ZXJtMTtcbiAgICByZXN1bHRbNV0gPSAtdGVybTE7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVzdWx0WzVdID0gcmVzdWx0WzNdID0gMDtcblxuICBpZiAoZGlzY3JpbWluYW50ID09PSAwKSB7XG4gICAgcjEzID0gciA8IDAgPyAtTWF0aC5wb3coLXIsIDEuMCAvIDMuMCkgOiBNYXRoLnBvdyhyLCAxLjAgLyAzLjApO1xuICAgIHJlc3VsdFswXSA9IC10ZXJtMSArIDIuMCAqIHIxMztcbiAgICByZXN1bHRbNF0gPSByZXN1bHRbMl0gPSAtKHIxMyArIHRlcm0xKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBxID0gLXE7XG4gIGR1bTEgPSBxICogcSAqIHE7XG4gIGR1bTEgPSBNYXRoLmFjb3MociAvIE1hdGguc3FydChkdW0xKSk7XG4gIHIxMyA9IDIuMCAqIE1hdGguc3FydChxKTtcbiAgcmVzdWx0WzBdID0gLXRlcm0xICsgcjEzICogTWF0aC5jb3MoZHVtMSAvIDMuMCk7XG4gIHJlc3VsdFsyXSA9IC10ZXJtMSArIHIxMyAqIE1hdGguY29zKChkdW0xICsgMi4wICogTWF0aC5QSSkgLyAzLjApO1xuICByZXN1bHRbNF0gPSAtdGVybTEgKyByMTMgKiBNYXRoLmNvcygoZHVtMSArIDQuMCAqIE1hdGguUEkpIC8gMy4wKTtcbiAgcmV0dXJuO1xufTtcbnZhciBzcWRpc3RUb1F1YWRyYXRpY0JlemllciA9IGZ1bmN0aW9uIHNxZGlzdFRvUXVhZHJhdGljQmV6aWVyKHgsIHksIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgLy8gRmluZCBtaW5pbXVtIGRpc3RhbmNlIGJ5IHVzaW5nIHRoZSBtaW5pbXVtIG9mIHRoZSBkaXN0YW5jZVxuICAvLyBmdW5jdGlvbiBiZXR3ZWVuIHRoZSBnaXZlbiBwb2ludCBhbmQgdGhlIGN1cnZlXG4gIC8vIFRoaXMgZ2l2ZXMgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcmVzdWx0aW5nIGN1YmljIGVxdWF0aW9uXG4gIC8vIHdob3NlIHJvb3RzIHRlbGwgdXMgd2hlcmUgYSBwb3NzaWJsZSBtaW5pbXVtIGlzXG4gIC8vIChDb2VmZmljaWVudHMgYXJlIGRpdmlkZWQgYnkgNClcbiAgdmFyIGEgPSAxLjAgKiB4MSAqIHgxIC0gNCAqIHgxICogeDIgKyAyICogeDEgKiB4MyArIDQgKiB4MiAqIHgyIC0gNCAqIHgyICogeDMgKyB4MyAqIHgzICsgeTEgKiB5MSAtIDQgKiB5MSAqIHkyICsgMiAqIHkxICogeTMgKyA0ICogeTIgKiB5MiAtIDQgKiB5MiAqIHkzICsgeTMgKiB5MztcbiAgdmFyIGIgPSAxLjAgKiA5ICogeDEgKiB4MiAtIDMgKiB4MSAqIHgxIC0gMyAqIHgxICogeDMgLSA2ICogeDIgKiB4MiArIDMgKiB4MiAqIHgzICsgOSAqIHkxICogeTIgLSAzICogeTEgKiB5MSAtIDMgKiB5MSAqIHkzIC0gNiAqIHkyICogeTIgKyAzICogeTIgKiB5MztcbiAgdmFyIGMgPSAxLjAgKiAzICogeDEgKiB4MSAtIDYgKiB4MSAqIHgyICsgeDEgKiB4MyAtIHgxICogeCArIDIgKiB4MiAqIHgyICsgMiAqIHgyICogeCAtIHgzICogeCArIDMgKiB5MSAqIHkxIC0gNiAqIHkxICogeTIgKyB5MSAqIHkzIC0geTEgKiB5ICsgMiAqIHkyICogeTIgKyAyICogeTIgKiB5IC0geTMgKiB5O1xuICB2YXIgZCA9IDEuMCAqIHgxICogeDIgLSB4MSAqIHgxICsgeDEgKiB4IC0geDIgKiB4ICsgeTEgKiB5MiAtIHkxICogeTEgKyB5MSAqIHkgLSB5MiAqIHk7IC8vIGRlYnVnKFwiY29lZmZpY2llbnRzOiBcIiArIGEgLyBhICsgXCIsIFwiICsgYiAvIGEgKyBcIiwgXCIgKyBjIC8gYSArIFwiLCBcIiArIGQgLyBhKTtcblxuICB2YXIgcm9vdHMgPSBbXTsgLy8gVXNlIHRoZSBjdWJpYyBzb2x2aW5nIGFsZ29yaXRobVxuXG4gIHNvbHZlQ3ViaWMoYSwgYiwgYywgZCwgcm9vdHMpO1xuICB2YXIgemVyb1RocmVzaG9sZCA9IDAuMDAwMDAwMTtcbiAgdmFyIHBhcmFtcyA9IFtdO1xuXG4gIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCA2OyBpbmRleCArPSAyKSB7XG4gICAgaWYgKE1hdGguYWJzKHJvb3RzW2luZGV4ICsgMV0pIDwgemVyb1RocmVzaG9sZCAmJiByb290c1tpbmRleF0gPj0gMCAmJiByb290c1tpbmRleF0gPD0gMS4wKSB7XG4gICAgICBwYXJhbXMucHVzaChyb290c1tpbmRleF0pO1xuICAgIH1cbiAgfVxuXG4gIHBhcmFtcy5wdXNoKDEuMCk7XG4gIHBhcmFtcy5wdXNoKDAuMCk7XG4gIHZhciBtaW5EaXN0YW5jZVNxdWFyZWQgPSAtMTtcbiAgdmFyIGN1clgsIGN1clksIGRpc3RTcXVhcmVkO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgY3VyWCA9IE1hdGgucG93KDEuMCAtIHBhcmFtc1tpXSwgMi4wKSAqIHgxICsgMi4wICogKDEgLSBwYXJhbXNbaV0pICogcGFyYW1zW2ldICogeDIgKyBwYXJhbXNbaV0gKiBwYXJhbXNbaV0gKiB4MztcbiAgICBjdXJZID0gTWF0aC5wb3coMSAtIHBhcmFtc1tpXSwgMi4wKSAqIHkxICsgMiAqICgxLjAgLSBwYXJhbXNbaV0pICogcGFyYW1zW2ldICogeTIgKyBwYXJhbXNbaV0gKiBwYXJhbXNbaV0gKiB5MztcbiAgICBkaXN0U3F1YXJlZCA9IE1hdGgucG93KGN1clggLSB4LCAyKSArIE1hdGgucG93KGN1clkgLSB5LCAyKTsgLy8gZGVidWcoJ2Rpc3RhbmNlIGZvciBwYXJhbSAnICsgcGFyYW1zW2ldICsgXCI6IFwiICsgTWF0aC5zcXJ0KGRpc3RTcXVhcmVkKSk7XG5cbiAgICBpZiAobWluRGlzdGFuY2VTcXVhcmVkID49IDApIHtcbiAgICAgIGlmIChkaXN0U3F1YXJlZCA8IG1pbkRpc3RhbmNlU3F1YXJlZCkge1xuICAgICAgICBtaW5EaXN0YW5jZVNxdWFyZWQgPSBkaXN0U3F1YXJlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWluRGlzdGFuY2VTcXVhcmVkID0gZGlzdFNxdWFyZWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pbkRpc3RhbmNlU3F1YXJlZDtcbn07XG52YXIgc3FkaXN0VG9GaW5pdGVMaW5lID0gZnVuY3Rpb24gc3FkaXN0VG9GaW5pdGVMaW5lKHgsIHksIHgxLCB5MSwgeDIsIHkyKSB7XG4gIHZhciBvZmZzZXQgPSBbeCAtIHgxLCB5IC0geTFdO1xuICB2YXIgbGluZSA9IFt4MiAtIHgxLCB5MiAtIHkxXTtcbiAgdmFyIGxpbmVTcSA9IGxpbmVbMF0gKiBsaW5lWzBdICsgbGluZVsxXSAqIGxpbmVbMV07XG4gIHZhciBoeXBTcSA9IG9mZnNldFswXSAqIG9mZnNldFswXSArIG9mZnNldFsxXSAqIG9mZnNldFsxXTtcbiAgdmFyIGRvdFByb2R1Y3QgPSBvZmZzZXRbMF0gKiBsaW5lWzBdICsgb2Zmc2V0WzFdICogbGluZVsxXTtcbiAgdmFyIGFkalNxID0gZG90UHJvZHVjdCAqIGRvdFByb2R1Y3QgLyBsaW5lU3E7XG5cbiAgaWYgKGRvdFByb2R1Y3QgPCAwKSB7XG4gICAgcmV0dXJuIGh5cFNxO1xuICB9XG5cbiAgaWYgKGFkalNxID4gbGluZVNxKSB7XG4gICAgcmV0dXJuICh4IC0geDIpICogKHggLSB4MikgKyAoeSAtIHkyKSAqICh5IC0geTIpO1xuICB9XG5cbiAgcmV0dXJuIGh5cFNxIC0gYWRqU3E7XG59O1xudmFyIHBvaW50SW5zaWRlUG9seWdvblBvaW50cyA9IGZ1bmN0aW9uIHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBwb2ludHMpIHtcbiAgdmFyIHgxLCB5MSwgeDIsIHkyO1xuICB2YXIgeTM7IC8vIEludGVyc2VjdCB3aXRoIHZlcnRpY2FsIGxpbmUgdGhyb3VnaCAoeCwgeSlcblxuICB2YXIgdXAgPSAwOyAvLyBsZXQgZG93biA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgeDEgPSBwb2ludHNbaSAqIDJdO1xuICAgIHkxID0gcG9pbnRzW2kgKiAyICsgMV07XG5cbiAgICBpZiAoaSArIDEgPCBwb2ludHMubGVuZ3RoIC8gMikge1xuICAgICAgeDIgPSBwb2ludHNbKGkgKyAxKSAqIDJdO1xuICAgICAgeTIgPSBwb2ludHNbKGkgKyAxKSAqIDIgKyAxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgeDIgPSBwb2ludHNbKGkgKyAxIC0gcG9pbnRzLmxlbmd0aCAvIDIpICogMl07XG4gICAgICB5MiA9IHBvaW50c1soaSArIDEgLSBwb2ludHMubGVuZ3RoIC8gMikgKiAyICsgMV07XG4gICAgfVxuXG4gICAgaWYgKHgxID09IHggJiYgeDIgPT0geCkgOyBlbHNlIGlmICh4MSA+PSB4ICYmIHggPj0geDIgfHwgeDEgPD0geCAmJiB4IDw9IHgyKSB7XG4gICAgICB5MyA9ICh4IC0geDEpIC8gKHgyIC0geDEpICogKHkyIC0geTEpICsgeTE7XG5cbiAgICAgIGlmICh5MyA+IHkpIHtcbiAgICAgICAgdXArKztcbiAgICAgIH0gLy8gaWYoIHkzIDwgeSApe1xuICAgICAgLy8gZG93bisrO1xuICAgICAgLy8gfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1cCAlIDIgPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG52YXIgcG9pbnRJbnNpZGVQb2x5Z29uID0gZnVuY3Rpb24gcG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIGRpcmVjdGlvbiwgcGFkZGluZykge1xuICB2YXIgdHJhbnNmb3JtZWRQb2ludHMgPSBuZXcgQXJyYXkoYmFzZVBvaW50cy5sZW5ndGgpOyAvLyBHaXZlcyBuZWdhdGl2ZSBhbmdsZVxuXG4gIHZhciBhbmdsZTtcblxuICBpZiAoZGlyZWN0aW9uWzBdICE9IG51bGwpIHtcbiAgICBhbmdsZSA9IE1hdGguYXRhbihkaXJlY3Rpb25bMV0gLyBkaXJlY3Rpb25bMF0pO1xuXG4gICAgaWYgKGRpcmVjdGlvblswXSA8IDApIHtcbiAgICAgIGFuZ2xlID0gYW5nbGUgKyBNYXRoLlBJIC8gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYW5nbGUgPSAtYW5nbGUgLSBNYXRoLlBJIC8gMjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYW5nbGUgPSBkaXJlY3Rpb247XG4gIH1cblxuICB2YXIgY29zID0gTWF0aC5jb3MoLWFuZ2xlKTtcbiAgdmFyIHNpbiA9IE1hdGguc2luKC1hbmdsZSk7IC8vICAgIGNvbnNvbGUubG9nKFwiYmFzZTogXCIgKyBiYXNlUG9pbnRzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRyYW5zZm9ybWVkUG9pbnRzLmxlbmd0aCAvIDI7IGkrKykge1xuICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyXSA9IHdpZHRoIC8gMiAqIChiYXNlUG9pbnRzW2kgKiAyXSAqIGNvcyAtIGJhc2VQb2ludHNbaSAqIDIgKyAxXSAqIHNpbik7XG4gICAgdHJhbnNmb3JtZWRQb2ludHNbaSAqIDIgKyAxXSA9IGhlaWdodCAvIDIgKiAoYmFzZVBvaW50c1tpICogMiArIDFdICogY29zICsgYmFzZVBvaW50c1tpICogMl0gKiBzaW4pO1xuICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyXSArPSBjZW50ZXJYO1xuICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyICsgMV0gKz0gY2VudGVyWTtcbiAgfVxuXG4gIHZhciBwb2ludHM7XG5cbiAgaWYgKHBhZGRpbmcgPiAwKSB7XG4gICAgdmFyIGV4cGFuZGVkTGluZVNldCA9IGV4cGFuZFBvbHlnb24odHJhbnNmb3JtZWRQb2ludHMsIC1wYWRkaW5nKTtcbiAgICBwb2ludHMgPSBqb2luTGluZXMoZXhwYW5kZWRMaW5lU2V0KTtcbiAgfSBlbHNlIHtcbiAgICBwb2ludHMgPSB0cmFuc2Zvcm1lZFBvaW50cztcbiAgfVxuXG4gIHJldHVybiBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgcG9pbnRzKTtcbn07XG52YXIgcG9pbnRJbnNpZGVSb3VuZFBvbHlnb24gPSBmdW5jdGlvbiBwb2ludEluc2lkZVJvdW5kUG9seWdvbih4LCB5LCBiYXNlUG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBjdXRQb2x5Z29uUG9pbnRzID0gbmV3IEFycmF5KGJhc2VQb2ludHMubGVuZ3RoKTtcbiAgdmFyIGhhbGZXID0gd2lkdGggLyAyO1xuICB2YXIgaGFsZkggPSBoZWlnaHQgLyAyO1xuICB2YXIgY29ybmVyUmFkaXVzID0gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuICB2YXIgc3F1YXJlZENvcm5lclJhZGl1cyA9IGNvcm5lclJhZGl1cyAqIGNvcm5lclJhZGl1cztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhc2VQb2ludHMubGVuZ3RoIC8gNDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZVV2ID0gdm9pZCAwLFxuICAgICAgICBkZXN0VXYgPSB2b2lkIDA7XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgc291cmNlVXYgPSBiYXNlUG9pbnRzLmxlbmd0aCAtIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNvdXJjZVV2ID0gaSAqIDQgLSAyO1xuICAgIH1cblxuICAgIGRlc3RVdiA9IGkgKiA0ICsgMjtcbiAgICB2YXIgcHggPSBjZW50ZXJYICsgaGFsZlcgKiBiYXNlUG9pbnRzW2kgKiA0XTtcbiAgICB2YXIgcHkgPSBjZW50ZXJZICsgaGFsZkggKiBiYXNlUG9pbnRzW2kgKiA0ICsgMV07XG4gICAgdmFyIGNvc1RoZXRhID0gLWJhc2VQb2ludHNbc291cmNlVXZdICogYmFzZVBvaW50c1tkZXN0VXZdIC0gYmFzZVBvaW50c1tzb3VyY2VVdiArIDFdICogYmFzZVBvaW50c1tkZXN0VXYgKyAxXTtcbiAgICB2YXIgb2Zmc2V0ID0gY29ybmVyUmFkaXVzIC8gTWF0aC50YW4oTWF0aC5hY29zKGNvc1RoZXRhKSAvIDIpO1xuICAgIHZhciBjcDB4ID0gcHggLSBvZmZzZXQgKiBiYXNlUG9pbnRzW3NvdXJjZVV2XTtcbiAgICB2YXIgY3AweSA9IHB5IC0gb2Zmc2V0ICogYmFzZVBvaW50c1tzb3VyY2VVdiArIDFdO1xuICAgIHZhciBjcDF4ID0gcHggKyBvZmZzZXQgKiBiYXNlUG9pbnRzW2Rlc3RVdl07XG4gICAgdmFyIGNwMXkgPSBweSArIG9mZnNldCAqIGJhc2VQb2ludHNbZGVzdFV2ICsgMV07XG4gICAgY3V0UG9seWdvblBvaW50c1tpICogNF0gPSBjcDB4O1xuICAgIGN1dFBvbHlnb25Qb2ludHNbaSAqIDQgKyAxXSA9IGNwMHk7XG4gICAgY3V0UG9seWdvblBvaW50c1tpICogNCArIDJdID0gY3AxeDtcbiAgICBjdXRQb2x5Z29uUG9pbnRzW2kgKiA0ICsgM10gPSBjcDF5O1xuICAgIHZhciBvcnRoeCA9IGJhc2VQb2ludHNbc291cmNlVXYgKyAxXTtcbiAgICB2YXIgb3J0aHkgPSAtYmFzZVBvaW50c1tzb3VyY2VVdl07XG4gICAgdmFyIGNvc0FscGhhID0gb3J0aHggKiBiYXNlUG9pbnRzW2Rlc3RVdl0gKyBvcnRoeSAqIGJhc2VQb2ludHNbZGVzdFV2ICsgMV07XG5cbiAgICBpZiAoY29zQWxwaGEgPCAwKSB7XG4gICAgICBvcnRoeCAqPSAtMTtcbiAgICAgIG9ydGh5ICo9IC0xO1xuICAgIH1cblxuICAgIHZhciBjeCA9IGNwMHggKyBvcnRoeCAqIGNvcm5lclJhZGl1cztcbiAgICB2YXIgY3kgPSBjcDB5ICsgb3J0aHkgKiBjb3JuZXJSYWRpdXM7XG4gICAgdmFyIHNxdWFyZWREaXN0YW5jZSA9IE1hdGgucG93KGN4IC0geCwgMikgKyBNYXRoLnBvdyhjeSAtIHksIDIpO1xuXG4gICAgaWYgKHNxdWFyZWREaXN0YW5jZSA8PSBzcXVhcmVkQ29ybmVyUmFkaXVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIGN1dFBvbHlnb25Qb2ludHMpO1xufTtcbnZhciBqb2luTGluZXMgPSBmdW5jdGlvbiBqb2luTGluZXMobGluZVNldCkge1xuICB2YXIgdmVydGljZXMgPSBuZXcgQXJyYXkobGluZVNldC5sZW5ndGggLyAyKTtcbiAgdmFyIGN1cnJlbnRMaW5lU3RhcnRYLCBjdXJyZW50TGluZVN0YXJ0WSwgY3VycmVudExpbmVFbmRYLCBjdXJyZW50TGluZUVuZFk7XG4gIHZhciBuZXh0TGluZVN0YXJ0WCwgbmV4dExpbmVTdGFydFksIG5leHRMaW5lRW5kWCwgbmV4dExpbmVFbmRZO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZVNldC5sZW5ndGggLyA0OyBpKyspIHtcbiAgICBjdXJyZW50TGluZVN0YXJ0WCA9IGxpbmVTZXRbaSAqIDRdO1xuICAgIGN1cnJlbnRMaW5lU3RhcnRZID0gbGluZVNldFtpICogNCArIDFdO1xuICAgIGN1cnJlbnRMaW5lRW5kWCA9IGxpbmVTZXRbaSAqIDQgKyAyXTtcbiAgICBjdXJyZW50TGluZUVuZFkgPSBsaW5lU2V0W2kgKiA0ICsgM107XG5cbiAgICBpZiAoaSA8IGxpbmVTZXQubGVuZ3RoIC8gNCAtIDEpIHtcbiAgICAgIG5leHRMaW5lU3RhcnRYID0gbGluZVNldFsoaSArIDEpICogNF07XG4gICAgICBuZXh0TGluZVN0YXJ0WSA9IGxpbmVTZXRbKGkgKyAxKSAqIDQgKyAxXTtcbiAgICAgIG5leHRMaW5lRW5kWCA9IGxpbmVTZXRbKGkgKyAxKSAqIDQgKyAyXTtcbiAgICAgIG5leHRMaW5lRW5kWSA9IGxpbmVTZXRbKGkgKyAxKSAqIDQgKyAzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dExpbmVTdGFydFggPSBsaW5lU2V0WzBdO1xuICAgICAgbmV4dExpbmVTdGFydFkgPSBsaW5lU2V0WzFdO1xuICAgICAgbmV4dExpbmVFbmRYID0gbGluZVNldFsyXTtcbiAgICAgIG5leHRMaW5lRW5kWSA9IGxpbmVTZXRbM107XG4gICAgfVxuXG4gICAgdmFyIGludGVyc2VjdGlvbiA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KGN1cnJlbnRMaW5lU3RhcnRYLCBjdXJyZW50TGluZVN0YXJ0WSwgY3VycmVudExpbmVFbmRYLCBjdXJyZW50TGluZUVuZFksIG5leHRMaW5lU3RhcnRYLCBuZXh0TGluZVN0YXJ0WSwgbmV4dExpbmVFbmRYLCBuZXh0TGluZUVuZFksIHRydWUpO1xuICAgIHZlcnRpY2VzW2kgKiAyXSA9IGludGVyc2VjdGlvblswXTtcbiAgICB2ZXJ0aWNlc1tpICogMiArIDFdID0gaW50ZXJzZWN0aW9uWzFdO1xuICB9XG5cbiAgcmV0dXJuIHZlcnRpY2VzO1xufTtcbnZhciBleHBhbmRQb2x5Z29uID0gZnVuY3Rpb24gZXhwYW5kUG9seWdvbihwb2ludHMsIHBhZCkge1xuICB2YXIgZXhwYW5kZWRMaW5lU2V0ID0gbmV3IEFycmF5KHBvaW50cy5sZW5ndGggKiAyKTtcbiAgdmFyIGN1cnJlbnRQb2ludFgsIGN1cnJlbnRQb2ludFksIG5leHRQb2ludFgsIG5leHRQb2ludFk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgY3VycmVudFBvaW50WCA9IHBvaW50c1tpICogMl07XG4gICAgY3VycmVudFBvaW50WSA9IHBvaW50c1tpICogMiArIDFdO1xuXG4gICAgaWYgKGkgPCBwb2ludHMubGVuZ3RoIC8gMiAtIDEpIHtcbiAgICAgIG5leHRQb2ludFggPSBwb2ludHNbKGkgKyAxKSAqIDJdO1xuICAgICAgbmV4dFBvaW50WSA9IHBvaW50c1soaSArIDEpICogMiArIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0UG9pbnRYID0gcG9pbnRzWzBdO1xuICAgICAgbmV4dFBvaW50WSA9IHBvaW50c1sxXTtcbiAgICB9IC8vIEN1cnJlbnQgbGluZTogW2N1cnJlbnRQb2ludFgsIGN1cnJlbnRQb2ludFldIHRvIFtuZXh0UG9pbnRYLCBuZXh0UG9pbnRZXVxuICAgIC8vIEFzc3VtZSBDQ1cgcG9seWdvbiB3aW5kaW5nXG5cblxuICAgIHZhciBvZmZzZXRYID0gbmV4dFBvaW50WSAtIGN1cnJlbnRQb2ludFk7XG4gICAgdmFyIG9mZnNldFkgPSAtKG5leHRQb2ludFggLSBjdXJyZW50UG9pbnRYKTsgLy8gTm9ybWFsaXplXG5cbiAgICB2YXIgb2Zmc2V0TGVuZ3RoID0gTWF0aC5zcXJ0KG9mZnNldFggKiBvZmZzZXRYICsgb2Zmc2V0WSAqIG9mZnNldFkpO1xuICAgIHZhciBub3JtYWxpemVkT2Zmc2V0WCA9IG9mZnNldFggLyBvZmZzZXRMZW5ndGg7XG4gICAgdmFyIG5vcm1hbGl6ZWRPZmZzZXRZID0gb2Zmc2V0WSAvIG9mZnNldExlbmd0aDtcbiAgICBleHBhbmRlZExpbmVTZXRbaSAqIDRdID0gY3VycmVudFBvaW50WCArIG5vcm1hbGl6ZWRPZmZzZXRYICogcGFkO1xuICAgIGV4cGFuZGVkTGluZVNldFtpICogNCArIDFdID0gY3VycmVudFBvaW50WSArIG5vcm1hbGl6ZWRPZmZzZXRZICogcGFkO1xuICAgIGV4cGFuZGVkTGluZVNldFtpICogNCArIDJdID0gbmV4dFBvaW50WCArIG5vcm1hbGl6ZWRPZmZzZXRYICogcGFkO1xuICAgIGV4cGFuZGVkTGluZVNldFtpICogNCArIDNdID0gbmV4dFBvaW50WSArIG5vcm1hbGl6ZWRPZmZzZXRZICogcGFkO1xuICB9XG5cbiAgcmV0dXJuIGV4cGFuZGVkTGluZVNldDtcbn07XG52YXIgaW50ZXJzZWN0TGluZUVsbGlwc2UgPSBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lRWxsaXBzZSh4LCB5LCBjZW50ZXJYLCBjZW50ZXJZLCBlbGxpcHNlV3JhZGl1cywgZWxsaXBzZUhyYWRpdXMpIHtcbiAgdmFyIGRpc3BYID0gY2VudGVyWCAtIHg7XG4gIHZhciBkaXNwWSA9IGNlbnRlclkgLSB5O1xuICBkaXNwWCAvPSBlbGxpcHNlV3JhZGl1cztcbiAgZGlzcFkgLz0gZWxsaXBzZUhyYWRpdXM7XG4gIHZhciBsZW4gPSBNYXRoLnNxcnQoZGlzcFggKiBkaXNwWCArIGRpc3BZICogZGlzcFkpO1xuICB2YXIgbmV3TGVuZ3RoID0gbGVuIC0gMTtcblxuICBpZiAobmV3TGVuZ3RoIDwgMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBsZW5Qcm9wb3J0aW9uID0gbmV3TGVuZ3RoIC8gbGVuO1xuICByZXR1cm4gWyhjZW50ZXJYIC0geCkgKiBsZW5Qcm9wb3J0aW9uICsgeCwgKGNlbnRlclkgLSB5KSAqIGxlblByb3BvcnRpb24gKyB5XTtcbn07XG52YXIgY2hlY2tJbkVsbGlwc2UgPSBmdW5jdGlvbiBjaGVja0luRWxsaXBzZSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZLCBwYWRkaW5nKSB7XG4gIHggLT0gY2VudGVyWDtcbiAgeSAtPSBjZW50ZXJZO1xuICB4IC89IHdpZHRoIC8gMiArIHBhZGRpbmc7XG4gIHkgLz0gaGVpZ2h0IC8gMiArIHBhZGRpbmc7XG4gIHJldHVybiB4ICogeCArIHkgKiB5IDw9IDE7XG59OyAvLyBSZXR1cm5zIGludGVyc2VjdGlvbnMgb2YgaW5jcmVhc2luZyBkaXN0YW5jZSBmcm9tIGxpbmUncyBzdGFydCBwb2ludFxuXG52YXIgaW50ZXJzZWN0TGluZUNpcmNsZSA9IGZ1bmN0aW9uIGludGVyc2VjdExpbmVDaXJjbGUoeDEsIHkxLCB4MiwgeTIsIGNlbnRlclgsIGNlbnRlclksIHJhZGl1cykge1xuICAvLyBDYWxjdWxhdGUgZCwgZGlyZWN0aW9uIHZlY3RvciBvZiBsaW5lXG4gIHZhciBkID0gW3gyIC0geDEsIHkyIC0geTFdOyAvLyBEaXJlY3Rpb24gdmVjdG9yIG9mIGxpbmVcblxuICB2YXIgZiA9IFt4MSAtIGNlbnRlclgsIHkxIC0gY2VudGVyWV07XG4gIHZhciBhID0gZFswXSAqIGRbMF0gKyBkWzFdICogZFsxXTtcbiAgdmFyIGIgPSAyICogKGZbMF0gKiBkWzBdICsgZlsxXSAqIGRbMV0pO1xuICB2YXIgYyA9IGZbMF0gKiBmWzBdICsgZlsxXSAqIGZbMV0gLSByYWRpdXMgKiByYWRpdXM7XG4gIHZhciBkaXNjcmltaW5hbnQgPSBiICogYiAtIDQgKiBhICogYztcblxuICBpZiAoZGlzY3JpbWluYW50IDwgMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciB0MSA9ICgtYiArIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvICgyICogYSk7XG4gIHZhciB0MiA9ICgtYiAtIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvICgyICogYSk7XG4gIHZhciB0TWluID0gTWF0aC5taW4odDEsIHQyKTtcbiAgdmFyIHRNYXggPSBNYXRoLm1heCh0MSwgdDIpO1xuICB2YXIgaW5SYW5nZVBhcmFtcyA9IFtdO1xuXG4gIGlmICh0TWluID49IDAgJiYgdE1pbiA8PSAxKSB7XG4gICAgaW5SYW5nZVBhcmFtcy5wdXNoKHRNaW4pO1xuICB9XG5cbiAgaWYgKHRNYXggPj0gMCAmJiB0TWF4IDw9IDEpIHtcbiAgICBpblJhbmdlUGFyYW1zLnB1c2godE1heCk7XG4gIH1cblxuICBpZiAoaW5SYW5nZVBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgbmVhckludGVyc2VjdGlvblggPSBpblJhbmdlUGFyYW1zWzBdICogZFswXSArIHgxO1xuICB2YXIgbmVhckludGVyc2VjdGlvblkgPSBpblJhbmdlUGFyYW1zWzBdICogZFsxXSArIHkxO1xuXG4gIGlmIChpblJhbmdlUGFyYW1zLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoaW5SYW5nZVBhcmFtc1swXSA9PSBpblJhbmdlUGFyYW1zWzFdKSB7XG4gICAgICByZXR1cm4gW25lYXJJbnRlcnNlY3Rpb25YLCBuZWFySW50ZXJzZWN0aW9uWV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBmYXJJbnRlcnNlY3Rpb25YID0gaW5SYW5nZVBhcmFtc1sxXSAqIGRbMF0gKyB4MTtcbiAgICAgIHZhciBmYXJJbnRlcnNlY3Rpb25ZID0gaW5SYW5nZVBhcmFtc1sxXSAqIGRbMV0gKyB5MTtcbiAgICAgIHJldHVybiBbbmVhckludGVyc2VjdGlvblgsIG5lYXJJbnRlcnNlY3Rpb25ZLCBmYXJJbnRlcnNlY3Rpb25YLCBmYXJJbnRlcnNlY3Rpb25ZXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtuZWFySW50ZXJzZWN0aW9uWCwgbmVhckludGVyc2VjdGlvblldO1xuICB9XG59O1xudmFyIG1pZE9mVGhyZWUgPSBmdW5jdGlvbiBtaWRPZlRocmVlKGEsIGIsIGMpIHtcbiAgaWYgKGIgPD0gYSAmJiBhIDw9IGMgfHwgYyA8PSBhICYmIGEgPD0gYikge1xuICAgIHJldHVybiBhO1xuICB9IGVsc2UgaWYgKGEgPD0gYiAmJiBiIDw9IGMgfHwgYyA8PSBiICYmIGIgPD0gYSkge1xuICAgIHJldHVybiBiO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjO1xuICB9XG59OyAvLyAoeDEseTEpPT4oeDIseTIpIGludGVyc2VjdCB3aXRoICh4Myx5Myk9Pih4NCx5NClcblxudmFyIGZpbml0ZUxpbmVzSW50ZXJzZWN0ID0gZnVuY3Rpb24gZmluaXRlTGluZXNJbnRlcnNlY3QoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCBpbmZpbml0ZUxpbmVzKSB7XG4gIHZhciBkeDEzID0geDEgLSB4MztcbiAgdmFyIGR4MjEgPSB4MiAtIHgxO1xuICB2YXIgZHg0MyA9IHg0IC0geDM7XG4gIHZhciBkeTEzID0geTEgLSB5MztcbiAgdmFyIGR5MjEgPSB5MiAtIHkxO1xuICB2YXIgZHk0MyA9IHk0IC0geTM7XG4gIHZhciB1YV90ID0gZHg0MyAqIGR5MTMgLSBkeTQzICogZHgxMztcbiAgdmFyIHViX3QgPSBkeDIxICogZHkxMyAtIGR5MjEgKiBkeDEzO1xuICB2YXIgdV9iID0gZHk0MyAqIGR4MjEgLSBkeDQzICogZHkyMTtcblxuICBpZiAodV9iICE9PSAwKSB7XG4gICAgdmFyIHVhID0gdWFfdCAvIHVfYjtcbiAgICB2YXIgdWIgPSB1Yl90IC8gdV9iO1xuICAgIHZhciBmbHB0VGhyZXNob2xkID0gMC4wMDE7XG5cbiAgICB2YXIgX21pbiA9IDAgLSBmbHB0VGhyZXNob2xkO1xuXG4gICAgdmFyIF9tYXggPSAxICsgZmxwdFRocmVzaG9sZDtcblxuICAgIGlmIChfbWluIDw9IHVhICYmIHVhIDw9IF9tYXggJiYgX21pbiA8PSB1YiAmJiB1YiA8PSBfbWF4KSB7XG4gICAgICByZXR1cm4gW3gxICsgdWEgKiBkeDIxLCB5MSArIHVhICogZHkyMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghaW5maW5pdGVMaW5lcykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW3gxICsgdWEgKiBkeDIxLCB5MSArIHVhICogZHkyMV07XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh1YV90ID09PSAwIHx8IHViX3QgPT09IDApIHtcbiAgICAgIC8vIFBhcmFsbGVsLCBjb2luY2lkZW50IGxpbmVzLiBDaGVjayBpZiBvdmVybGFwXG4gICAgICAvLyBDaGVjayBlbmRwb2ludCBvZiBzZWNvbmQgbGluZVxuICAgICAgaWYgKG1pZE9mVGhyZWUoeDEsIHgyLCB4NCkgPT09IHg0KSB7XG4gICAgICAgIHJldHVybiBbeDQsIHk0XTtcbiAgICAgIH0gLy8gQ2hlY2sgc3RhcnQgcG9pbnQgb2Ygc2Vjb25kIGxpbmVcblxuXG4gICAgICBpZiAobWlkT2ZUaHJlZSh4MSwgeDIsIHgzKSA9PT0geDMpIHtcbiAgICAgICAgcmV0dXJuIFt4MywgeTNdO1xuICAgICAgfSAvLyBFbmRwb2ludCBvZiBmaXJzdCBsaW5lXG5cblxuICAgICAgaWYgKG1pZE9mVGhyZWUoeDMsIHg0LCB4MikgPT09IHgyKSB7XG4gICAgICAgIHJldHVybiBbeDIsIHkyXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQYXJhbGxlbCwgbm9uLWNvaW5jaWRlbnRcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07IC8vIG1hdGgucG9seWdvbkludGVyc2VjdExpbmUoIHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHBhZGRpbmcgKVxuLy8gaW50ZXJzZWN0IGEgbm9kZSBwb2x5Z29uIChwdHMgdHJhbnNmb3JtZWQpXG4vL1xuLy8gbWF0aC5wb2x5Z29uSW50ZXJzZWN0TGluZSggeCwgeSwgYmFzZVBvaW50cywgY2VudGVyWCwgY2VudGVyWSApXG4vLyBpbnRlcnNlY3QgdGhlIHBvaW50cyAobm8gdHJhbnNmb3JtKVxuXG52YXIgcG9seWdvbkludGVyc2VjdExpbmUgPSBmdW5jdGlvbiBwb2x5Z29uSW50ZXJzZWN0TGluZSh4LCB5LCBiYXNlUG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nKSB7XG4gIHZhciBpbnRlcnNlY3Rpb25zID0gW107XG4gIHZhciBpbnRlcnNlY3Rpb247XG4gIHZhciB0cmFuc2Zvcm1lZFBvaW50cyA9IG5ldyBBcnJheShiYXNlUG9pbnRzLmxlbmd0aCk7XG4gIHZhciBkb1RyYW5zZm9ybSA9IHRydWU7XG5cbiAgaWYgKHdpZHRoID09IG51bGwpIHtcbiAgICBkb1RyYW5zZm9ybSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIHBvaW50cztcblxuICBpZiAoZG9UcmFuc2Zvcm0pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyYW5zZm9ybWVkUG9pbnRzLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgdHJhbnNmb3JtZWRQb2ludHNbaSAqIDJdID0gYmFzZVBvaW50c1tpICogMl0gKiB3aWR0aCArIGNlbnRlclg7XG4gICAgICB0cmFuc2Zvcm1lZFBvaW50c1tpICogMiArIDFdID0gYmFzZVBvaW50c1tpICogMiArIDFdICogaGVpZ2h0ICsgY2VudGVyWTtcbiAgICB9XG5cbiAgICBpZiAocGFkZGluZyA+IDApIHtcbiAgICAgIHZhciBleHBhbmRlZExpbmVTZXQgPSBleHBhbmRQb2x5Z29uKHRyYW5zZm9ybWVkUG9pbnRzLCAtcGFkZGluZyk7XG4gICAgICBwb2ludHMgPSBqb2luTGluZXMoZXhwYW5kZWRMaW5lU2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnRzID0gdHJhbnNmb3JtZWRQb2ludHM7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHBvaW50cyA9IGJhc2VQb2ludHM7XG4gIH1cblxuICB2YXIgY3VycmVudFgsIGN1cnJlbnRZLCBuZXh0WCwgbmV4dFk7XG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgcG9pbnRzLmxlbmd0aCAvIDI7IF9pMisrKSB7XG4gICAgY3VycmVudFggPSBwb2ludHNbX2kyICogMl07XG4gICAgY3VycmVudFkgPSBwb2ludHNbX2kyICogMiArIDFdO1xuXG4gICAgaWYgKF9pMiA8IHBvaW50cy5sZW5ndGggLyAyIC0gMSkge1xuICAgICAgbmV4dFggPSBwb2ludHNbKF9pMiArIDEpICogMl07XG4gICAgICBuZXh0WSA9IHBvaW50c1soX2kyICsgMSkgKiAyICsgMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRYID0gcG9pbnRzWzBdO1xuICAgICAgbmV4dFkgPSBwb2ludHNbMV07XG4gICAgfVxuXG4gICAgaW50ZXJzZWN0aW9uID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgY2VudGVyWCwgY2VudGVyWSwgY3VycmVudFgsIGN1cnJlbnRZLCBuZXh0WCwgbmV4dFkpO1xuXG4gICAgaWYgKGludGVyc2VjdGlvbi5sZW5ndGggIT09IDApIHtcbiAgICAgIGludGVyc2VjdGlvbnMucHVzaChpbnRlcnNlY3Rpb25bMF0sIGludGVyc2VjdGlvblsxXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGludGVyc2VjdGlvbnM7XG59O1xudmFyIHJvdW5kUG9seWdvbkludGVyc2VjdExpbmUgPSBmdW5jdGlvbiByb3VuZFBvbHlnb25JbnRlcnNlY3RMaW5lKHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHBhZGRpbmcpIHtcbiAgdmFyIGludGVyc2VjdGlvbnMgPSBbXTtcbiAgdmFyIGludGVyc2VjdGlvbjtcbiAgdmFyIGxpbmVzID0gbmV3IEFycmF5KGJhc2VQb2ludHMubGVuZ3RoKTtcbiAgdmFyIGhhbGZXID0gd2lkdGggLyAyO1xuICB2YXIgaGFsZkggPSBoZWlnaHQgLyAyO1xuICB2YXIgY29ybmVyUmFkaXVzID0gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzZVBvaW50cy5sZW5ndGggLyA0OyBpKyspIHtcbiAgICB2YXIgc291cmNlVXYgPSB2b2lkIDAsXG4gICAgICAgIGRlc3RVdiA9IHZvaWQgMDtcblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBzb3VyY2VVdiA9IGJhc2VQb2ludHMubGVuZ3RoIC0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlVXYgPSBpICogNCAtIDI7XG4gICAgfVxuXG4gICAgZGVzdFV2ID0gaSAqIDQgKyAyO1xuICAgIHZhciBweCA9IGNlbnRlclggKyBoYWxmVyAqIGJhc2VQb2ludHNbaSAqIDRdO1xuICAgIHZhciBweSA9IGNlbnRlclkgKyBoYWxmSCAqIGJhc2VQb2ludHNbaSAqIDQgKyAxXTtcbiAgICB2YXIgY29zVGhldGEgPSAtYmFzZVBvaW50c1tzb3VyY2VVdl0gKiBiYXNlUG9pbnRzW2Rlc3RVdl0gLSBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV0gKiBiYXNlUG9pbnRzW2Rlc3RVdiArIDFdO1xuICAgIHZhciBvZmZzZXQgPSBjb3JuZXJSYWRpdXMgLyBNYXRoLnRhbihNYXRoLmFjb3MoY29zVGhldGEpIC8gMik7XG4gICAgdmFyIGNwMHggPSBweCAtIG9mZnNldCAqIGJhc2VQb2ludHNbc291cmNlVXZdO1xuICAgIHZhciBjcDB5ID0gcHkgLSBvZmZzZXQgKiBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV07XG4gICAgdmFyIGNwMXggPSBweCArIG9mZnNldCAqIGJhc2VQb2ludHNbZGVzdFV2XTtcbiAgICB2YXIgY3AxeSA9IHB5ICsgb2Zmc2V0ICogYmFzZVBvaW50c1tkZXN0VXYgKyAxXTtcblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBsaW5lc1tiYXNlUG9pbnRzLmxlbmd0aCAtIDJdID0gY3AweDtcbiAgICAgIGxpbmVzW2Jhc2VQb2ludHMubGVuZ3RoIC0gMV0gPSBjcDB5O1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lc1tpICogNCAtIDJdID0gY3AweDtcbiAgICAgIGxpbmVzW2kgKiA0IC0gMV0gPSBjcDB5O1xuICAgIH1cblxuICAgIGxpbmVzW2kgKiA0XSA9IGNwMXg7XG4gICAgbGluZXNbaSAqIDQgKyAxXSA9IGNwMXk7XG4gICAgdmFyIG9ydGh4ID0gYmFzZVBvaW50c1tzb3VyY2VVdiArIDFdO1xuICAgIHZhciBvcnRoeSA9IC1iYXNlUG9pbnRzW3NvdXJjZVV2XTtcbiAgICB2YXIgY29zQWxwaGEgPSBvcnRoeCAqIGJhc2VQb2ludHNbZGVzdFV2XSArIG9ydGh5ICogYmFzZVBvaW50c1tkZXN0VXYgKyAxXTtcblxuICAgIGlmIChjb3NBbHBoYSA8IDApIHtcbiAgICAgIG9ydGh4ICo9IC0xO1xuICAgICAgb3J0aHkgKj0gLTE7XG4gICAgfVxuXG4gICAgdmFyIGN4ID0gY3AweCArIG9ydGh4ICogY29ybmVyUmFkaXVzO1xuICAgIHZhciBjeSA9IGNwMHkgKyBvcnRoeSAqIGNvcm5lclJhZGl1cztcbiAgICBpbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3RMaW5lQ2lyY2xlKHgsIHksIGNlbnRlclgsIGNlbnRlclksIGN4LCBjeSwgY29ybmVyUmFkaXVzKTtcblxuICAgIGlmIChpbnRlcnNlY3Rpb24ubGVuZ3RoICE9PSAwKSB7XG4gICAgICBpbnRlcnNlY3Rpb25zLnB1c2goaW50ZXJzZWN0aW9uWzBdLCBpbnRlcnNlY3Rpb25bMV0pO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGxpbmVzLmxlbmd0aCAvIDQ7IF9pMysrKSB7XG4gICAgaW50ZXJzZWN0aW9uID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgY2VudGVyWCwgY2VudGVyWSwgbGluZXNbX2kzICogNF0sIGxpbmVzW19pMyAqIDQgKyAxXSwgbGluZXNbX2kzICogNCArIDJdLCBsaW5lc1tfaTMgKiA0ICsgM10sIGZhbHNlKTtcblxuICAgIGlmIChpbnRlcnNlY3Rpb24ubGVuZ3RoICE9PSAwKSB7XG4gICAgICBpbnRlcnNlY3Rpb25zLnB1c2goaW50ZXJzZWN0aW9uWzBdLCBpbnRlcnNlY3Rpb25bMV0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDIpIHtcbiAgICB2YXIgbG93ZXN0SW50ZXJzZWN0aW9uID0gW2ludGVyc2VjdGlvbnNbMF0sIGludGVyc2VjdGlvbnNbMV1dO1xuICAgIHZhciBsb3dlc3RTcXVhcmVkRGlzdGFuY2UgPSBNYXRoLnBvdyhsb3dlc3RJbnRlcnNlY3Rpb25bMF0gLSB4LCAyKSArIE1hdGgucG93KGxvd2VzdEludGVyc2VjdGlvblsxXSAtIHksIDIpO1xuXG4gICAgZm9yICh2YXIgX2k0ID0gMTsgX2k0IDwgaW50ZXJzZWN0aW9ucy5sZW5ndGggLyAyOyBfaTQrKykge1xuICAgICAgdmFyIHNxdWFyZWREaXN0YW5jZSA9IE1hdGgucG93KGludGVyc2VjdGlvbnNbX2k0ICogMl0gLSB4LCAyKSArIE1hdGgucG93KGludGVyc2VjdGlvbnNbX2k0ICogMiArIDFdIC0geSwgMik7XG5cbiAgICAgIGlmIChzcXVhcmVkRGlzdGFuY2UgPD0gbG93ZXN0U3F1YXJlZERpc3RhbmNlKSB7XG4gICAgICAgIGxvd2VzdEludGVyc2VjdGlvblswXSA9IGludGVyc2VjdGlvbnNbX2k0ICogMl07XG4gICAgICAgIGxvd2VzdEludGVyc2VjdGlvblsxXSA9IGludGVyc2VjdGlvbnNbX2k0ICogMiArIDFdO1xuICAgICAgICBsb3dlc3RTcXVhcmVkRGlzdGFuY2UgPSBzcXVhcmVkRGlzdGFuY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvd2VzdEludGVyc2VjdGlvbjtcbiAgfVxuXG4gIHJldHVybiBpbnRlcnNlY3Rpb25zO1xufTtcbnZhciBzaG9ydGVuSW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gc2hvcnRlbkludGVyc2VjdGlvbihpbnRlcnNlY3Rpb24sIG9mZnNldCwgYW1vdW50KSB7XG4gIHZhciBkaXNwID0gW2ludGVyc2VjdGlvblswXSAtIG9mZnNldFswXSwgaW50ZXJzZWN0aW9uWzFdIC0gb2Zmc2V0WzFdXTtcbiAgdmFyIGxlbmd0aCA9IE1hdGguc3FydChkaXNwWzBdICogZGlzcFswXSArIGRpc3BbMV0gKiBkaXNwWzFdKTtcbiAgdmFyIGxlblJhdGlvID0gKGxlbmd0aCAtIGFtb3VudCkgLyBsZW5ndGg7XG5cbiAgaWYgKGxlblJhdGlvIDwgMCkge1xuICAgIGxlblJhdGlvID0gMC4wMDAwMTtcbiAgfVxuXG4gIHJldHVybiBbb2Zmc2V0WzBdICsgbGVuUmF0aW8gKiBkaXNwWzBdLCBvZmZzZXRbMV0gKyBsZW5SYXRpbyAqIGRpc3BbMV1dO1xufTtcbnZhciBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUgPSBmdW5jdGlvbiBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoc2lkZXMsIHJvdGF0aW9uUmFkaWFucykge1xuICB2YXIgcG9pbnRzID0gZ2VuZXJhdGVVbml0TmdvblBvaW50cyhzaWRlcywgcm90YXRpb25SYWRpYW5zKTtcbiAgcG9pbnRzID0gZml0UG9seWdvblRvU3F1YXJlKHBvaW50cyk7XG4gIHJldHVybiBwb2ludHM7XG59O1xudmFyIGZpdFBvbHlnb25Ub1NxdWFyZSA9IGZ1bmN0aW9uIGZpdFBvbHlnb25Ub1NxdWFyZShwb2ludHMpIHtcbiAgdmFyIHgsIHk7XG4gIHZhciBzaWRlcyA9IHBvaW50cy5sZW5ndGggLyAyO1xuICB2YXIgbWluWCA9IEluZmluaXR5LFxuICAgICAgbWluWSA9IEluZmluaXR5LFxuICAgICAgbWF4WCA9IC1JbmZpbml0eSxcbiAgICAgIG1heFkgPSAtSW5maW5pdHk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWRlczsgaSsrKSB7XG4gICAgeCA9IHBvaW50c1syICogaV07XG4gICAgeSA9IHBvaW50c1syICogaSArIDFdO1xuICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCB4KTtcbiAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgeCk7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHkpO1xuICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCB5KTtcbiAgfSAvLyBzdHJldGNoIGZhY3RvcnNcblxuXG4gIHZhciBzeCA9IDIgLyAobWF4WCAtIG1pblgpO1xuICB2YXIgc3kgPSAyIC8gKG1heFkgLSBtaW5ZKTtcblxuICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBzaWRlczsgX2k1KyspIHtcbiAgICB4ID0gcG9pbnRzWzIgKiBfaTVdID0gcG9pbnRzWzIgKiBfaTVdICogc3g7XG4gICAgeSA9IHBvaW50c1syICogX2k1ICsgMV0gPSBwb2ludHNbMiAqIF9pNSArIDFdICogc3k7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIHgpO1xuICAgIG1heFggPSBNYXRoLm1heChtYXhYLCB4KTtcbiAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeSk7XG4gICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkpO1xuICB9XG5cbiAgaWYgKG1pblkgPCAtMSkge1xuICAgIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IHNpZGVzOyBfaTYrKykge1xuICAgICAgeSA9IHBvaW50c1syICogX2k2ICsgMV0gPSBwb2ludHNbMiAqIF9pNiArIDFdICsgKC0xIC0gbWluWSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBvaW50cztcbn07XG52YXIgZ2VuZXJhdGVVbml0TmdvblBvaW50cyA9IGZ1bmN0aW9uIGdlbmVyYXRlVW5pdE5nb25Qb2ludHMoc2lkZXMsIHJvdGF0aW9uUmFkaWFucykge1xuICB2YXIgaW5jcmVtZW50ID0gMS4wIC8gc2lkZXMgKiAyICogTWF0aC5QSTtcbiAgdmFyIHN0YXJ0QW5nbGUgPSBzaWRlcyAlIDIgPT09IDAgPyBNYXRoLlBJIC8gMi4wICsgaW5jcmVtZW50IC8gMi4wIDogTWF0aC5QSSAvIDIuMDtcbiAgc3RhcnRBbmdsZSArPSByb3RhdGlvblJhZGlhbnM7XG4gIHZhciBwb2ludHMgPSBuZXcgQXJyYXkoc2lkZXMgKiAyKTtcbiAgdmFyIGN1cnJlbnRBbmdsZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZGVzOyBpKyspIHtcbiAgICBjdXJyZW50QW5nbGUgPSBpICogaW5jcmVtZW50ICsgc3RhcnRBbmdsZTtcbiAgICBwb2ludHNbMiAqIGldID0gTWF0aC5jb3MoY3VycmVudEFuZ2xlKTsgLy8geFxuXG4gICAgcG9pbnRzWzIgKiBpICsgMV0gPSBNYXRoLnNpbigtY3VycmVudEFuZ2xlKTsgLy8geVxuICB9XG5cbiAgcmV0dXJuIHBvaW50cztcbn07IC8vIFNldCB0aGUgZGVmYXVsdCByYWRpdXMsIHVubGVzcyBoYWxmIG9mIHdpZHRoIG9yIGhlaWdodCBpcyBzbWFsbGVyIHRoYW4gZGVmYXVsdFxuXG52YXIgZ2V0Um91bmRSZWN0YW5nbGVSYWRpdXMgPSBmdW5jdGlvbiBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KSB7XG4gIHJldHVybiBNYXRoLm1pbih3aWR0aCAvIDQsIGhlaWdodCAvIDQsIDgpO1xufTsgLy8gU2V0IHRoZSBkZWZhdWx0IHJhZGl1c1xuXG52YXIgZ2V0Um91bmRQb2x5Z29uUmFkaXVzID0gZnVuY3Rpb24gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpIHtcbiAgcmV0dXJuIE1hdGgubWluKHdpZHRoIC8gMTAsIGhlaWdodCAvIDEwLCA4KTtcbn07XG52YXIgZ2V0Q3V0UmVjdGFuZ2xlQ29ybmVyTGVuZ3RoID0gZnVuY3Rpb24gZ2V0Q3V0UmVjdGFuZ2xlQ29ybmVyTGVuZ3RoKCkge1xuICByZXR1cm4gODtcbn07XG52YXIgYmV6aWVyUHRzVG9RdWFkQ29lZmYgPSBmdW5jdGlvbiBiZXppZXJQdHNUb1F1YWRDb2VmZihwMCwgcDEsIHAyKSB7XG4gIHJldHVybiBbcDAgLSAyICogcDEgKyBwMiwgMiAqIChwMSAtIHAwKSwgcDBdO1xufTsgLy8gZ2V0IGN1cnZlIHdpZHRoLCBoZWlnaHQsIGFuZCBjb250cm9sIHBvaW50IHBvc2l0aW9uIG9mZnNldHMgYXMgYSBwZXJjZW50YWdlIG9mIG5vZGUgaGVpZ2h0IC8gd2lkdGhcblxudmFyIGdldEJhcnJlbEN1cnZlQ29uc3RhbnRzID0gZnVuY3Rpb24gZ2V0QmFycmVsQ3VydmVDb25zdGFudHMod2lkdGgsIGhlaWdodCkge1xuICByZXR1cm4ge1xuICAgIGhlaWdodE9mZnNldDogTWF0aC5taW4oMTUsIDAuMDUgKiBoZWlnaHQpLFxuICAgIHdpZHRoT2Zmc2V0OiBNYXRoLm1pbigxMDAsIDAuMjUgKiB3aWR0aCksXG4gICAgY3RybFB0T2Zmc2V0UGN0OiAwLjA1XG4gIH07XG59O1xuXG52YXIgcGFnZVJhbmtEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgZGFtcGluZ0ZhY3RvcjogMC44LFxuICBwcmVjaXNpb246IDAuMDAwMDAxLFxuICBpdGVyYXRpb25zOiAyMDAsXG4gIHdlaWdodDogZnVuY3Rpb24gd2VpZ2h0KGVkZ2UpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxufSk7XG52YXIgZWxlc2ZuJDcgPSB7XG4gIHBhZ2VSYW5rOiBmdW5jdGlvbiBwYWdlUmFuayhvcHRpb25zKSB7XG4gICAgdmFyIF9wYWdlUmFua0RlZmF1bHRzID0gcGFnZVJhbmtEZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgZGFtcGluZ0ZhY3RvciA9IF9wYWdlUmFua0RlZmF1bHRzLmRhbXBpbmdGYWN0b3IsXG4gICAgICAgIHByZWNpc2lvbiA9IF9wYWdlUmFua0RlZmF1bHRzLnByZWNpc2lvbixcbiAgICAgICAgaXRlcmF0aW9ucyA9IF9wYWdlUmFua0RlZmF1bHRzLml0ZXJhdGlvbnMsXG4gICAgICAgIHdlaWdodCA9IF9wYWdlUmFua0RlZmF1bHRzLndlaWdodDtcblxuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcbiAgICB2YXIgbnVtTm9kZXNTcWQgPSBudW1Ob2RlcyAqIG51bU5vZGVzO1xuICAgIHZhciBudW1FZGdlcyA9IGVkZ2VzLmxlbmd0aDsgLy8gQ29uc3RydWN0IHRyYW5zcG9zZWQgYWRqYWNlbmN5IG1hdHJpeFxuICAgIC8vIEZpcnN0IGxldHMgaGF2ZSBhIHplcm9lZCBtYXRyaXggb2YgdGhlIHJpZ2h0IHNpemVcbiAgICAvLyBXZSdsbCBhbHNvIGtlZXAgdHJhY2sgb2YgdGhlIHN1bSBvZiBlYWNoIGNvbHVtblxuXG4gICAgdmFyIG1hdHJpeCA9IG5ldyBBcnJheShudW1Ob2Rlc1NxZCk7XG4gICAgdmFyIGNvbHVtblN1bSA9IG5ldyBBcnJheShudW1Ob2Rlcyk7XG4gICAgdmFyIGFkZGl0aW9uYWxQcm9iID0gKDEgLSBkYW1waW5nRmFjdG9yKSAvIG51bU5vZGVzOyAvLyBDcmVhdGUgbnVsbCBtYXRyaXhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTm9kZXM7IGkrKykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1Ob2RlczsgaisrKSB7XG4gICAgICAgIHZhciBuID0gaSAqIG51bU5vZGVzICsgajtcbiAgICAgICAgbWF0cml4W25dID0gMDtcbiAgICAgIH1cblxuICAgICAgY29sdW1uU3VtW2ldID0gMDtcbiAgICB9IC8vIE5vdywgcHJvY2VzcyBlZGdlc1xuXG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbnVtRWRnZXM7IF9pKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbX2ldO1xuICAgICAgdmFyIHNyY0lkID0gZWRnZS5kYXRhKCdzb3VyY2UnKTtcbiAgICAgIHZhciB0Z3RJZCA9IGVkZ2UuZGF0YSgndGFyZ2V0Jyk7IC8vIERvbid0IGluY2x1ZGUgbG9vcHMgaW4gdGhlIG1hdHJpeFxuXG4gICAgICBpZiAoc3JjSWQgPT09IHRndElkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcyA9IG5vZGVzLmluZGV4T2ZJZChzcmNJZCk7XG4gICAgICB2YXIgdCA9IG5vZGVzLmluZGV4T2ZJZCh0Z3RJZCk7XG4gICAgICB2YXIgdyA9IHdlaWdodChlZGdlKTtcblxuICAgICAgdmFyIF9uID0gdCAqIG51bU5vZGVzICsgczsgLy8gVXBkYXRlIG1hdHJpeFxuXG5cbiAgICAgIG1hdHJpeFtfbl0gKz0gdzsgLy8gVXBkYXRlIGNvbHVtbiBzdW1cblxuICAgICAgY29sdW1uU3VtW3NdICs9IHc7XG4gICAgfSAvLyBBZGQgYWRkaXRpb25hbCBwcm9iYWJpbGl0eSBiYXNlZCBvbiBkYW1waW5nIGZhY3RvclxuICAgIC8vIEFsc28sIHRha2UgaW50byBhY2NvdW50IGNvbHVtbnMgdGhhdCBoYXZlIHN1bSA9IDBcblxuXG4gICAgdmFyIHAgPSAxLjAgLyBudW1Ob2RlcyArIGFkZGl0aW9uYWxQcm9iOyAvLyBTaG9ydGhhbmRcbiAgICAvLyBUcmF2ZXJzZSBtYXRyaXgsIGNvbHVtbiBieSBjb2x1bW5cblxuICAgIGZvciAodmFyIF9qID0gMDsgX2ogPCBudW1Ob2RlczsgX2orKykge1xuICAgICAgaWYgKGNvbHVtblN1bVtfal0gPT09IDApIHtcbiAgICAgICAgLy8gTm8gJ2xpbmtzJyBvdXQgZnJvbSBub2RlIGp0aCwgYXNzdW1lIGVxdWFsIHByb2JhYmlsaXR5IGZvciBlYWNoIHBvc3NpYmxlIG5vZGVcbiAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbnVtTm9kZXM7IF9pMisrKSB7XG4gICAgICAgICAgdmFyIF9uMiA9IF9pMiAqIG51bU5vZGVzICsgX2o7XG5cbiAgICAgICAgICBtYXRyaXhbX24yXSA9IHA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vZGUganRoIGhhcyBvdXRnb2luZyBsaW5rLCBjb21wdXRlIG5vcm1hbGl6ZWQgcHJvYmFiaWxpdGllc1xuICAgICAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBudW1Ob2RlczsgX2kzKyspIHtcbiAgICAgICAgICB2YXIgX24zID0gX2kzICogbnVtTm9kZXMgKyBfajtcblxuICAgICAgICAgIG1hdHJpeFtfbjNdID0gbWF0cml4W19uM10gLyBjb2x1bW5TdW1bX2pdICsgYWRkaXRpb25hbFByb2I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIENvbXB1dGUgZG9taW5hbnQgZWlnZW52ZWN0b3IgdXNpbmcgcG93ZXIgbWV0aG9kXG5cblxuICAgIHZhciBlaWdlbnZlY3RvciA9IG5ldyBBcnJheShudW1Ob2Rlcyk7XG4gICAgdmFyIHRlbXAgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuICAgIHZhciBwcmV2aW91czsgLy8gU3RhcnQgd2l0aCBhIHZlY3RvciBvZiBhbGwgMSdzXG4gICAgLy8gQWxzbywgaW5pdGlhbGl6ZSBhIG51bGwgdmVjdG9yIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBzaG9ydGhhbmRcblxuICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG51bU5vZGVzOyBfaTQrKykge1xuICAgICAgZWlnZW52ZWN0b3JbX2k0XSA9IDE7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaXRlciA9IDA7IGl0ZXIgPCBpdGVyYXRpb25zOyBpdGVyKyspIHtcbiAgICAgIC8vIFRlbXAgYXJyYXkgd2l0aCBhbGwgMCdzXG4gICAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBudW1Ob2RlczsgX2k1KyspIHtcbiAgICAgICAgdGVtcFtfaTVdID0gMDtcbiAgICAgIH0gLy8gTXVsdGlwbHkgbWF0cml4IHdpdGggcHJldmlvdXMgcmVzdWx0XG5cblxuICAgICAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgbnVtTm9kZXM7IF9pNisrKSB7XG4gICAgICAgIGZvciAodmFyIF9qMiA9IDA7IF9qMiA8IG51bU5vZGVzOyBfajIrKykge1xuICAgICAgICAgIHZhciBfbjQgPSBfaTYgKiBudW1Ob2RlcyArIF9qMjtcblxuICAgICAgICAgIHRlbXBbX2k2XSArPSBtYXRyaXhbX240XSAqIGVpZ2VudmVjdG9yW19qMl07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5QbGFjZVN1bU5vcm1hbGl6ZSh0ZW1wKTtcbiAgICAgIHByZXZpb3VzID0gZWlnZW52ZWN0b3I7XG4gICAgICBlaWdlbnZlY3RvciA9IHRlbXA7XG4gICAgICB0ZW1wID0gcHJldmlvdXM7XG4gICAgICB2YXIgZGlmZiA9IDA7IC8vIENvbXB1dGUgZGlmZmVyZW5jZSAoc3F1YXJlZCBtb2R1bGUpIG9mIGJvdGggdmVjdG9yc1xuXG4gICAgICBmb3IgKHZhciBfaTcgPSAwOyBfaTcgPCBudW1Ob2RlczsgX2k3KyspIHtcbiAgICAgICAgdmFyIGRlbHRhID0gcHJldmlvdXNbX2k3XSAtIGVpZ2VudmVjdG9yW19pN107XG4gICAgICAgIGRpZmYgKz0gZGVsdGEgKiBkZWx0YTtcbiAgICAgIH0gLy8gSWYgZGlmZmVyZW5jZSBpcyBsZXNzIHRoYW4gdGhlIGRlc2lyZWQgdGhyZXNob2xkLCBzdG9wIGl0ZXJhdGluZ1xuXG5cbiAgICAgIGlmIChkaWZmIDwgcHJlY2lzaW9uKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gLy8gQ29uc3RydWN0IHJlc3VsdFxuXG5cbiAgICB2YXIgcmVzID0ge1xuICAgICAgcmFuazogZnVuY3Rpb24gcmFuayhub2RlKSB7XG4gICAgICAgIG5vZGUgPSBjeS5jb2xsZWN0aW9uKG5vZGUpWzBdO1xuICAgICAgICByZXR1cm4gZWlnZW52ZWN0b3Jbbm9kZXMuaW5kZXhPZihub2RlKV07XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gcmVzO1xuICB9IC8vIHBhZ2VSYW5rXG5cbn07IC8vIGVsZXNmblxuXG52YXIgZGVmYXVsdHMkMSA9IGRlZmF1bHRzKHtcbiAgcm9vdDogbnVsbCxcbiAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9LFxuICBkaXJlY3RlZDogZmFsc2UsXG4gIGFscGhhOiAwXG59KTtcbnZhciBlbGVzZm4kOCA9IHtcbiAgZGVncmVlQ2VudHJhbGl0eU5vcm1hbGl6ZWQ6IGZ1bmN0aW9uIGRlZ3JlZUNlbnRyYWxpdHlOb3JtYWxpemVkKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gZGVmYXVsdHMkMShvcHRpb25zKTtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcblxuICAgIGlmICghb3B0aW9ucy5kaXJlY3RlZCkge1xuICAgICAgdmFyIGRlZ3JlZXMgPSB7fTtcbiAgICAgIHZhciBtYXhEZWdyZWUgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bU5vZGVzOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTsgLy8gYWRkIGN1cnJlbnQgbm9kZSB0byB0aGUgY3VycmVudCBvcHRpb25zIG9iamVjdCBhbmQgY2FsbCBkZWdyZWVDZW50cmFsaXR5XG5cbiAgICAgICAgb3B0aW9ucy5yb290ID0gbm9kZTtcbiAgICAgICAgdmFyIGN1cnJEZWdyZWUgPSB0aGlzLmRlZ3JlZUNlbnRyYWxpdHkob3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKG1heERlZ3JlZSA8IGN1cnJEZWdyZWUuZGVncmVlKSB7XG4gICAgICAgICAgbWF4RGVncmVlID0gY3VyckRlZ3JlZS5kZWdyZWU7XG4gICAgICAgIH1cblxuICAgICAgICBkZWdyZWVzW25vZGUuaWQoKV0gPSBjdXJyRGVncmVlLmRlZ3JlZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVncmVlOiBmdW5jdGlvbiBkZWdyZWUobm9kZSkge1xuICAgICAgICAgIGlmIChtYXhEZWdyZWUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdHJpbmcobm9kZSkpIHtcbiAgICAgICAgICAgIC8vIGZyb20gaXMgYSBzZWxlY3RvciBzdHJpbmdcbiAgICAgICAgICAgIG5vZGUgPSBjeS5maWx0ZXIobm9kZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGRlZ3JlZXNbbm9kZS5pZCgpXSAvIG1heERlZ3JlZTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGluZGVncmVlcyA9IHt9O1xuICAgICAgdmFyIG91dGRlZ3JlZXMgPSB7fTtcbiAgICAgIHZhciBtYXhJbmRlZ3JlZSA9IDA7XG4gICAgICB2YXIgbWF4T3V0ZGVncmVlID0gMDtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG51bU5vZGVzOyBfaSsrKSB7XG4gICAgICAgIHZhciBfbm9kZSA9IG5vZGVzW19pXTtcblxuICAgICAgICB2YXIgaWQgPSBfbm9kZS5pZCgpOyAvLyBhZGQgY3VycmVudCBub2RlIHRvIHRoZSBjdXJyZW50IG9wdGlvbnMgb2JqZWN0IGFuZCBjYWxsIGRlZ3JlZUNlbnRyYWxpdHlcblxuXG4gICAgICAgIG9wdGlvbnMucm9vdCA9IF9ub2RlO1xuXG4gICAgICAgIHZhciBfY3VyckRlZ3JlZSA9IHRoaXMuZGVncmVlQ2VudHJhbGl0eShvcHRpb25zKTtcblxuICAgICAgICBpZiAobWF4SW5kZWdyZWUgPCBfY3VyckRlZ3JlZS5pbmRlZ3JlZSkgbWF4SW5kZWdyZWUgPSBfY3VyckRlZ3JlZS5pbmRlZ3JlZTtcbiAgICAgICAgaWYgKG1heE91dGRlZ3JlZSA8IF9jdXJyRGVncmVlLm91dGRlZ3JlZSkgbWF4T3V0ZGVncmVlID0gX2N1cnJEZWdyZWUub3V0ZGVncmVlO1xuICAgICAgICBpbmRlZ3JlZXNbaWRdID0gX2N1cnJEZWdyZWUuaW5kZWdyZWU7XG4gICAgICAgIG91dGRlZ3JlZXNbaWRdID0gX2N1cnJEZWdyZWUub3V0ZGVncmVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbmRlZ3JlZTogZnVuY3Rpb24gaW5kZWdyZWUobm9kZSkge1xuICAgICAgICAgIGlmIChtYXhJbmRlZ3JlZSA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RyaW5nKG5vZGUpKSB7XG4gICAgICAgICAgICAvLyBmcm9tIGlzIGEgc2VsZWN0b3Igc3RyaW5nXG4gICAgICAgICAgICBub2RlID0gY3kuZmlsdGVyKG5vZGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBpbmRlZ3JlZXNbbm9kZS5pZCgpXSAvIG1heEluZGVncmVlO1xuICAgICAgICB9LFxuICAgICAgICBvdXRkZWdyZWU6IGZ1bmN0aW9uIG91dGRlZ3JlZShub2RlKSB7XG4gICAgICAgICAgaWYgKG1heE91dGRlZ3JlZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0cmluZyhub2RlKSkge1xuICAgICAgICAgICAgLy8gZnJvbSBpcyBhIHNlbGVjdG9yIHN0cmluZ1xuICAgICAgICAgICAgbm9kZSA9IGN5LmZpbHRlcihub2RlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb3V0ZGVncmVlc1tub2RlLmlkKCldIC8gbWF4T3V0ZGVncmVlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgLy8gZGVncmVlQ2VudHJhbGl0eU5vcm1hbGl6ZWRcbiAgLy8gSW1wbGVtZW50ZWQgZnJvbSB0aGUgYWxnb3JpdGhtIGluIE9wc2FobCdzIHBhcGVyXG4gIC8vIFwiTm9kZSBjZW50cmFsaXR5IGluIHdlaWdodGVkIG5ldHdvcmtzOiBHZW5lcmFsaXppbmcgZGVncmVlIGFuZCBzaG9ydGVzdCBwYXRoc1wiXG4gIC8vIGNoZWNrIHRoZSBoZWFkaW5nIDIgXCJEZWdyZWVcIlxuICBkZWdyZWVDZW50cmFsaXR5OiBmdW5jdGlvbiBkZWdyZWVDZW50cmFsaXR5KG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gZGVmYXVsdHMkMShvcHRpb25zKTtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgdmFyIGNhbGxpbmdFbGVzID0gdGhpcztcbiAgICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgICByb290ID0gX29wdGlvbnMucm9vdCxcbiAgICAgICAgd2VpZ2h0ID0gX29wdGlvbnMud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9vcHRpb25zLmRpcmVjdGVkLFxuICAgICAgICBhbHBoYSA9IF9vcHRpb25zLmFscGhhO1xuICAgIHJvb3QgPSBjeS5jb2xsZWN0aW9uKHJvb3QpWzBdO1xuXG4gICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgdmFyIGNvbm5FZGdlcyA9IHJvb3QuY29ubmVjdGVkRWRnZXMoKS5pbnRlcnNlY3Rpb24oY2FsbGluZ0VsZXMpO1xuICAgICAgdmFyIGsgPSBjb25uRWRnZXMubGVuZ3RoO1xuICAgICAgdmFyIHMgPSAwOyAvLyBOb3csIHN1bSBlZGdlIHdlaWdodHNcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25uRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcyArPSB3ZWlnaHQoY29ubkVkZ2VzW2ldKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVncmVlOiBNYXRoLnBvdyhrLCAxIC0gYWxwaGEpICogTWF0aC5wb3cocywgYWxwaGEpXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZWRnZXMgPSByb290LmNvbm5lY3RlZEVkZ2VzKCk7XG4gICAgICB2YXIgaW5jb21pbmcgPSBlZGdlcy5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0KCkuc2FtZShyb290KSAmJiBjYWxsaW5nRWxlcy5oYXMoZWRnZSk7XG4gICAgICB9KTtcbiAgICAgIHZhciBvdXRnb2luZyA9IGVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5zb3VyY2UoKS5zYW1lKHJvb3QpICYmIGNhbGxpbmdFbGVzLmhhcyhlZGdlKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGtfaW4gPSBpbmNvbWluZy5sZW5ndGg7XG4gICAgICB2YXIga19vdXQgPSBvdXRnb2luZy5sZW5ndGg7XG4gICAgICB2YXIgc19pbiA9IDA7XG4gICAgICB2YXIgc19vdXQgPSAwOyAvLyBOb3csIHN1bSBpbmNvbWluZyBlZGdlIHdlaWdodHNcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgaW5jb21pbmcubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICBzX2luICs9IHdlaWdodChpbmNvbWluZ1tfaTJdKTtcbiAgICAgIH0gLy8gTm93LCBzdW0gb3V0Z29pbmcgZWRnZSB3ZWlnaHRzXG5cblxuICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgb3V0Z29pbmcubGVuZ3RoOyBfaTMrKykge1xuICAgICAgICBzX291dCArPSB3ZWlnaHQob3V0Z29pbmdbX2kzXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGluZGVncmVlOiBNYXRoLnBvdyhrX2luLCAxIC0gYWxwaGEpICogTWF0aC5wb3coc19pbiwgYWxwaGEpLFxuICAgICAgICBvdXRkZWdyZWU6IE1hdGgucG93KGtfb3V0LCAxIC0gYWxwaGEpICogTWF0aC5wb3coc19vdXQsIGFscGhhKVxuICAgICAgfTtcbiAgICB9XG4gIH0gLy8gZGVncmVlQ2VudHJhbGl0eVxuXG59OyAvLyBlbGVzZm5cbi8vIG5pY2UsIHNob3J0IG1hdGhlbWF0aGljYWwgYWxpYXNcblxuZWxlc2ZuJDguZGMgPSBlbGVzZm4kOC5kZWdyZWVDZW50cmFsaXR5O1xuZWxlc2ZuJDguZGNuID0gZWxlc2ZuJDguZGVncmVlQ2VudHJhbGl0eU5vcm1hbGlzZWQgPSBlbGVzZm4kOC5kZWdyZWVDZW50cmFsaXR5Tm9ybWFsaXplZDtcblxudmFyIGRlZmF1bHRzJDIgPSBkZWZhdWx0cyh7XG4gIGhhcm1vbmljOiB0cnVlLFxuICB3ZWlnaHQ6IGZ1bmN0aW9uIHdlaWdodCgpIHtcbiAgICByZXR1cm4gMTtcbiAgfSxcbiAgZGlyZWN0ZWQ6IGZhbHNlLFxuICByb290OiBudWxsXG59KTtcbnZhciBlbGVzZm4kOSA9IHtcbiAgY2xvc2VuZXNzQ2VudHJhbGl0eU5vcm1hbGl6ZWQ6IGZ1bmN0aW9uIGNsb3NlbmVzc0NlbnRyYWxpdHlOb3JtYWxpemVkKG9wdGlvbnMpIHtcbiAgICB2YXIgX2RlZmF1bHRzID0gZGVmYXVsdHMkMihvcHRpb25zKSxcbiAgICAgICAgaGFybW9uaWMgPSBfZGVmYXVsdHMuaGFybW9uaWMsXG4gICAgICAgIHdlaWdodCA9IF9kZWZhdWx0cy53ZWlnaHQsXG4gICAgICAgIGRpcmVjdGVkID0gX2RlZmF1bHRzLmRpcmVjdGVkO1xuXG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHZhciBjbG9zZW5lc3NlcyA9IHt9O1xuICAgIHZhciBtYXhDbG9zZW5lc3MgPSAwO1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgICB2YXIgZncgPSB0aGlzLmZsb3lkV2Fyc2hhbGwoe1xuICAgICAgd2VpZ2h0OiB3ZWlnaHQsXG4gICAgICBkaXJlY3RlZDogZGlyZWN0ZWRcbiAgICB9KTsgLy8gQ29tcHV0ZSBjbG9zZW5lc3MgZm9yIGV2ZXJ5IG5vZGUgYW5kIGZpbmQgdGhlIG1heGltdW0gY2xvc2VuZXNzXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY3VyckNsb3NlbmVzcyA9IDA7XG4gICAgICB2YXIgbm9kZV9pID0gbm9kZXNbaV07XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbm9kZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKGkgIT09IGopIHtcbiAgICAgICAgICB2YXIgZCA9IGZ3LmRpc3RhbmNlKG5vZGVfaSwgbm9kZXNbal0pO1xuXG4gICAgICAgICAgaWYgKGhhcm1vbmljKSB7XG4gICAgICAgICAgICBjdXJyQ2xvc2VuZXNzICs9IDEgLyBkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyQ2xvc2VuZXNzICs9IGQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFybW9uaWMpIHtcbiAgICAgICAgY3VyckNsb3NlbmVzcyA9IDEgLyBjdXJyQ2xvc2VuZXNzO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF4Q2xvc2VuZXNzIDwgY3VyckNsb3NlbmVzcykge1xuICAgICAgICBtYXhDbG9zZW5lc3MgPSBjdXJyQ2xvc2VuZXNzO1xuICAgICAgfVxuXG4gICAgICBjbG9zZW5lc3Nlc1tub2RlX2kuaWQoKV0gPSBjdXJyQ2xvc2VuZXNzO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjbG9zZW5lc3M6IGZ1bmN0aW9uIGNsb3NlbmVzcyhub2RlKSB7XG4gICAgICAgIGlmIChtYXhDbG9zZW5lc3MgPT0gMCkge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmluZyhub2RlKSkge1xuICAgICAgICAgIC8vIGZyb20gaXMgYSBzZWxlY3RvciBzdHJpbmdcbiAgICAgICAgICBub2RlID0gY3kuZmlsdGVyKG5vZGUpWzBdLmlkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZnJvbSBpcyBhIG5vZGVcbiAgICAgICAgICBub2RlID0gbm9kZS5pZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsb3NlbmVzc2VzW25vZGVdIC8gbWF4Q2xvc2VuZXNzO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIC8vIEltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICBjbG9zZW5lc3NDZW50cmFsaXR5OiBmdW5jdGlvbiBjbG9zZW5lc3NDZW50cmFsaXR5KG9wdGlvbnMpIHtcbiAgICB2YXIgX2RlZmF1bHRzMiA9IGRlZmF1bHRzJDIob3B0aW9ucyksXG4gICAgICAgIHJvb3QgPSBfZGVmYXVsdHMyLnJvb3QsXG4gICAgICAgIHdlaWdodCA9IF9kZWZhdWx0czIud2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZCA9IF9kZWZhdWx0czIuZGlyZWN0ZWQsXG4gICAgICAgIGhhcm1vbmljID0gX2RlZmF1bHRzMi5oYXJtb25pYztcblxuICAgIHJvb3QgPSB0aGlzLmZpbHRlcihyb290KVswXTsgLy8gd2UgbmVlZCBkaXN0YW5jZSBmcm9tIHRoaXMgbm9kZSB0byBldmVyeSBvdGhlciBub2RlXG5cbiAgICB2YXIgZGlqa3N0cmEgPSB0aGlzLmRpamtzdHJhKHtcbiAgICAgIHJvb3Q6IHJvb3QsXG4gICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICAgIH0pO1xuICAgIHZhciB0b3RhbERpc3RhbmNlID0gMDtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbiA9IG5vZGVzW2ldO1xuXG4gICAgICBpZiAoIW4uc2FtZShyb290KSkge1xuICAgICAgICB2YXIgZCA9IGRpamtzdHJhLmRpc3RhbmNlVG8obik7XG5cbiAgICAgICAgaWYgKGhhcm1vbmljKSB7XG4gICAgICAgICAgdG90YWxEaXN0YW5jZSArPSAxIC8gZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b3RhbERpc3RhbmNlICs9IGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFybW9uaWMgPyB0b3RhbERpc3RhbmNlIDogMSAvIHRvdGFsRGlzdGFuY2U7XG4gIH0gLy8gY2xvc2VuZXNzQ2VudHJhbGl0eVxuXG59OyAvLyBlbGVzZm5cbi8vIG5pY2UsIHNob3J0IG1hdGhlbWF0aGljYWwgYWxpYXNcblxuZWxlc2ZuJDkuY2MgPSBlbGVzZm4kOS5jbG9zZW5lc3NDZW50cmFsaXR5O1xuZWxlc2ZuJDkuY2NuID0gZWxlc2ZuJDkuY2xvc2VuZXNzQ2VudHJhbGl0eU5vcm1hbGlzZWQgPSBlbGVzZm4kOS5jbG9zZW5lc3NDZW50cmFsaXR5Tm9ybWFsaXplZDtcblxudmFyIGRlZmF1bHRzJDMgPSBkZWZhdWx0cyh7XG4gIHdlaWdodDogbnVsbCxcbiAgZGlyZWN0ZWQ6IGZhbHNlXG59KTtcbnZhciBlbGVzZm4kYSA9IHtcbiAgLy8gSW1wbGVtZW50ZWQgZnJvbSB0aGUgYWxnb3JpdGhtIGluIHRoZSBwYXBlciBcIk9uIFZhcmlhbnRzIG9mIFNob3J0ZXN0LVBhdGggQmV0d2Vlbm5lc3MgQ2VudHJhbGl0eSBhbmQgdGhlaXIgR2VuZXJpYyBDb21wdXRhdGlvblwiIGJ5IFVscmlrIEJyYW5kZXNcbiAgYmV0d2Vlbm5lc3NDZW50cmFsaXR5OiBmdW5jdGlvbiBiZXR3ZWVubmVzc0NlbnRyYWxpdHkob3B0aW9ucykge1xuICAgIHZhciBfZGVmYXVsdHMgPSBkZWZhdWx0cyQzKG9wdGlvbnMpLFxuICAgICAgICBkaXJlY3RlZCA9IF9kZWZhdWx0cy5kaXJlY3RlZCxcbiAgICAgICAgd2VpZ2h0ID0gX2RlZmF1bHRzLndlaWdodDtcblxuICAgIHZhciB3ZWlnaHRlZCA9IHdlaWdodCAhPSBudWxsO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTsgLy8gc3RhcnRpbmdcblxuICAgIHZhciBWID0gdGhpcy5ub2RlcygpO1xuICAgIHZhciBBID0ge307XG4gICAgdmFyIF9DID0ge307XG4gICAgdmFyIG1heCA9IDA7XG4gICAgdmFyIEMgPSB7XG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbCkge1xuICAgICAgICBfQ1trZXldID0gdmFsO1xuXG4gICAgICAgIGlmICh2YWwgPiBtYXgpIHtcbiAgICAgICAgICBtYXggPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgICAgcmV0dXJuIF9DW2tleV07XG4gICAgICB9XG4gICAgfTsgLy8gQSBjb250YWlucyB0aGUgbmVpZ2hib3Job29kcyBvZiBldmVyeSBub2RlXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IFYubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2ID0gVltpXTtcbiAgICAgIHZhciB2aWQgPSB2LmlkKCk7XG5cbiAgICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICBBW3ZpZF0gPSB2Lm91dGdvZXJzKCkubm9kZXMoKTsgLy8gZ2V0IG91dGdvZXJzIG9mIGV2ZXJ5IG5vZGVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEFbdmlkXSA9IHYub3Blbk5laWdoYm9yaG9vZCgpLm5vZGVzKCk7IC8vIGdldCBuZWlnaGJvcnMgb2YgZXZlcnkgbm9kZVxuICAgICAgfVxuXG4gICAgICBDLnNldCh2aWQsIDApO1xuICAgIH1cblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKHMpIHtcbiAgICAgIHZhciBzaWQgPSBWW3NdLmlkKCk7XG4gICAgICB2YXIgUyA9IFtdOyAvLyBzdGFja1xuXG4gICAgICB2YXIgUCA9IHt9O1xuICAgICAgdmFyIGcgPSB7fTtcbiAgICAgIHZhciBkID0ge307XG4gICAgICB2YXIgUSA9IG5ldyBIZWFwKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBkW2FdIC0gZFtiXTtcbiAgICAgIH0pOyAvLyBxdWV1ZVxuICAgICAgLy8gaW5pdCBkaWN0aW9uYXJpZXNcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IFYubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBfdmlkID0gVltfaV0uaWQoKTtcblxuICAgICAgICBQW192aWRdID0gW107XG4gICAgICAgIGdbX3ZpZF0gPSAwO1xuICAgICAgICBkW192aWRdID0gSW5maW5pdHk7XG4gICAgICB9XG5cbiAgICAgIGdbc2lkXSA9IDE7IC8vIHNpZ21hXG5cbiAgICAgIGRbc2lkXSA9IDA7IC8vIGRpc3RhbmNlIHRvIHNcblxuICAgICAgUS5wdXNoKHNpZCk7XG5cbiAgICAgIHdoaWxlICghUS5lbXB0eSgpKSB7XG4gICAgICAgIHZhciBfdiA9IFEucG9wKCk7XG5cbiAgICAgICAgUy5wdXNoKF92KTtcblxuICAgICAgICBpZiAod2VpZ2h0ZWQpIHtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IEFbX3ZdLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICB2YXIgdyA9IEFbX3ZdW2pdO1xuICAgICAgICAgICAgdmFyIHZFbGUgPSBjeS5nZXRFbGVtZW50QnlJZChfdik7XG4gICAgICAgICAgICB2YXIgZWRnZSA9IHZvaWQgMDtcblxuICAgICAgICAgICAgaWYgKHZFbGUuZWRnZXNUbyh3KS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGVkZ2UgPSB2RWxlLmVkZ2VzVG8odylbMF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlZGdlID0gdy5lZGdlc1RvKHZFbGUpWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgZWRnZVdlaWdodCA9IHdlaWdodChlZGdlKTtcbiAgICAgICAgICAgIHcgPSB3LmlkKCk7XG5cbiAgICAgICAgICAgIGlmIChkW3ddID4gZFtfdl0gKyBlZGdlV2VpZ2h0KSB7XG4gICAgICAgICAgICAgIGRbd10gPSBkW192XSArIGVkZ2VXZWlnaHQ7XG5cbiAgICAgICAgICAgICAgaWYgKFEubm9kZXMuaW5kZXhPZih3KSA8IDApIHtcbiAgICAgICAgICAgICAgICAvL2lmIHcgaXMgbm90IGluIFFcbiAgICAgICAgICAgICAgICBRLnB1c2godyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHBvc2l0aW9uIGlmIHcgaXMgaW4gUVxuICAgICAgICAgICAgICAgIFEudXBkYXRlSXRlbSh3KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGdbd10gPSAwO1xuICAgICAgICAgICAgICBQW3ddID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkW3ddID09IGRbX3ZdICsgZWRnZVdlaWdodCkge1xuICAgICAgICAgICAgICBnW3ddID0gZ1t3XSArIGdbX3ZdO1xuICAgICAgICAgICAgICBQW3ddLnB1c2goX3YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgQVtfdl0ubGVuZ3RoOyBfaisrKSB7XG4gICAgICAgICAgICB2YXIgX3cgPSBBW192XVtfal0uaWQoKTtcblxuICAgICAgICAgICAgaWYgKGRbX3ddID09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgIFEucHVzaChfdyk7XG4gICAgICAgICAgICAgIGRbX3ddID0gZFtfdl0gKyAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZFtfd10gPT0gZFtfdl0gKyAxKSB7XG4gICAgICAgICAgICAgIGdbX3ddID0gZ1tfd10gKyBnW192XTtcblxuICAgICAgICAgICAgICBQW193XS5wdXNoKF92KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGUgPSB7fTtcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgVi5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIGVbVltfaTJdLmlkKCldID0gMDtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKFMubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgX3cyID0gUy5wb3AoKTtcblxuICAgICAgICBmb3IgKHZhciBfajIgPSAwOyBfajIgPCBQW193Ml0ubGVuZ3RoOyBfajIrKykge1xuICAgICAgICAgIHZhciBfdjIgPSBQW193Ml1bX2oyXTtcbiAgICAgICAgICBlW192Ml0gPSBlW192Ml0gKyBnW192Ml0gLyBnW193Ml0gKiAoMSArIGVbX3cyXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3cyICE9IFZbc10uaWQoKSkge1xuICAgICAgICAgIEMuc2V0KF93MiwgQy5nZXQoX3cyKSArIGVbX3cyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPCBWLmxlbmd0aDsgcysrKSB7XG4gICAgICBfbG9vcChzKTtcbiAgICB9XG5cbiAgICB2YXIgcmV0ID0ge1xuICAgICAgYmV0d2Vlbm5lc3M6IGZ1bmN0aW9uIGJldHdlZW5uZXNzKG5vZGUpIHtcbiAgICAgICAgdmFyIGlkID0gY3kuY29sbGVjdGlvbihub2RlKS5pZCgpO1xuICAgICAgICByZXR1cm4gQy5nZXQoaWQpO1xuICAgICAgfSxcbiAgICAgIGJldHdlZW5uZXNzTm9ybWFsaXplZDogZnVuY3Rpb24gYmV0d2Vlbm5lc3NOb3JtYWxpemVkKG5vZGUpIHtcbiAgICAgICAgaWYgKG1heCA9PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaWQgPSBjeS5jb2xsZWN0aW9uKG5vZGUpLmlkKCk7XG4gICAgICAgIHJldHVybiBDLmdldChpZCkgLyBtYXg7XG4gICAgICB9XG4gICAgfTsgLy8gYWxpYXNcblxuICAgIHJldC5iZXR3ZWVubmVzc05vcm1hbGlzZWQgPSByZXQuYmV0d2Vlbm5lc3NOb3JtYWxpemVkO1xuICAgIHJldHVybiByZXQ7XG4gIH0gLy8gYmV0d2Vlbm5lc3NDZW50cmFsaXR5XG5cbn07IC8vIGVsZXNmblxuLy8gbmljZSwgc2hvcnQgbWF0aGVtYXRoaWNhbCBhbGlhc1xuXG5lbGVzZm4kYS5iYyA9IGVsZXNmbiRhLmJldHdlZW5uZXNzQ2VudHJhbGl0eTtcblxuLy8gSW1wbGVtZW50ZWQgYnkgWm9lIFhpIEB6b2V4aSBmb3IgR1NPQyAyMDE2XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG52YXIgZGVmYXVsdHMkNCA9IGRlZmF1bHRzKHtcbiAgZXhwYW5kRmFjdG9yOiAyLFxuICAvLyBhZmZlY3RzIHRpbWUgb2YgY29tcHV0YXRpb24gYW5kIGNsdXN0ZXIgZ3JhbnVsYXJpdHkgdG8gc29tZSBleHRlbnQ6IE0gKiBNXG4gIGluZmxhdGVGYWN0b3I6IDIsXG4gIC8vIGFmZmVjdHMgY2x1c3RlciBncmFudWxhcml0eSAodGhlIGdyZWF0ZXIgdGhlIHZhbHVlLCB0aGUgbW9yZSBjbHVzdGVycyk6IE0oaSxqKSAvIEUoailcbiAgbXVsdEZhY3RvcjogMSxcbiAgLy8gb3B0aW9uYWwgc2VsZiBsb29wcyBmb3IgZWFjaCBub2RlLiBVc2UgYSBuZXV0cmFsIHZhbHVlIHRvIGltcHJvdmUgY2x1c3RlciBjb21wdXRhdGlvbnMuXG4gIG1heEl0ZXJhdGlvbnM6IDIwLFxuICAvLyBtYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zIG9mIHRoZSBNQ0wgYWxnb3JpdGhtIGluIGEgc2luZ2xlIHJ1blxuICBhdHRyaWJ1dGVzOiBbLy8gYXR0cmlidXRlcy9mZWF0dXJlcyB1c2VkIHRvIGdyb3VwIG5vZGVzLCBpZS4gc2ltaWxhcml0eSB2YWx1ZXMgYmV0d2VlbiBub2Rlc1xuICBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiAxO1xuICB9XVxufSk7XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cbnZhciBzZXRPcHRpb25zID0gZnVuY3Rpb24gc2V0T3B0aW9ucyhvcHRpb25zKSB7XG4gIHJldHVybiBkZWZhdWx0cyQ0KG9wdGlvbnMpO1xufTtcbi8qIGVzbGludC1lbmFibGUgKi9cblxuXG52YXIgZ2V0U2ltaWxhcml0eSA9IGZ1bmN0aW9uIGdldFNpbWlsYXJpdHkoZWRnZSwgYXR0cmlidXRlcykge1xuICB2YXIgdG90YWwgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgIHRvdGFsICs9IGF0dHJpYnV0ZXNbaV0oZWRnZSk7XG4gIH1cblxuICByZXR1cm4gdG90YWw7XG59O1xuXG52YXIgYWRkTG9vcHMgPSBmdW5jdGlvbiBhZGRMb29wcyhNLCBuLCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBNW2kgKiBuICsgaV0gPSB2YWw7XG4gIH1cbn07XG5cbnZhciBub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoTSwgbikge1xuICB2YXIgc3VtO1xuXG4gIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG47IGNvbCsrKSB7XG4gICAgc3VtID0gMDtcblxuICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IG47IHJvdysrKSB7XG4gICAgICBzdW0gKz0gTVtyb3cgKiBuICsgY29sXTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfcm93ID0gMDsgX3JvdyA8IG47IF9yb3crKykge1xuICAgICAgTVtfcm93ICogbiArIGNvbF0gPSBNW19yb3cgKiBuICsgY29sXSAvIHN1bTtcbiAgICB9XG4gIH1cbn07IC8vIFRPRE86IGJsb2NrZWQgbWF0cml4IG11bHRpcGxpY2F0aW9uP1xuXG5cbnZhciBtbXVsdCA9IGZ1bmN0aW9uIG1tdWx0KEEsIEIsIG4pIHtcbiAgdmFyIEMgPSBuZXcgQXJyYXkobiAqIG4pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgIENbaSAqIG4gKyBqXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgIGZvciAodmFyIF9qID0gMDsgX2ogPCBuOyBfaisrKSB7XG4gICAgICAgIENbaSAqIG4gKyBfal0gKz0gQVtpICogbiArIGtdICogQltrICogbiArIF9qXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gQztcbn07XG5cbnZhciBleHBhbmQgPSBmdW5jdGlvbiBleHBhbmQoTSwgbiwgZXhwYW5kRmFjdG9yXG4vKiogcG93ZXIgKiovXG4pIHtcbiAgdmFyIF9NID0gTS5zbGljZSgwKTtcblxuICBmb3IgKHZhciBwID0gMTsgcCA8IGV4cGFuZEZhY3RvcjsgcCsrKSB7XG4gICAgTSA9IG1tdWx0KE0sIF9NLCBuKTtcbiAgfVxuXG4gIHJldHVybiBNO1xufTtcblxudmFyIGluZmxhdGUgPSBmdW5jdGlvbiBpbmZsYXRlKE0sIG4sIGluZmxhdGVGYWN0b3Jcbi8qKiByICoqL1xuKSB7XG4gIHZhciBfTSA9IG5ldyBBcnJheShuICogbik7IC8vIE0oaSxqKSBeIGluZmxhdGVQb3dlclxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbjsgaSsrKSB7XG4gICAgX01baV0gPSBNYXRoLnBvdyhNW2ldLCBpbmZsYXRlRmFjdG9yKTtcbiAgfVxuXG4gIG5vcm1hbGl6ZShfTSwgbik7XG4gIHJldHVybiBfTTtcbn07XG5cbnZhciBoYXNDb252ZXJnZWQgPSBmdW5jdGlvbiBoYXNDb252ZXJnZWQoTSwgX00sIG4yLCByb3VuZEZhY3Rvcikge1xuICAvLyBDaGVjayB0aGF0IGJvdGggbWF0cmljZXMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cyAoaSxqKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG4yOyBpKyspIHtcbiAgICB2YXIgdjEgPSBNYXRoLnJvdW5kKE1baV0gKiBNYXRoLnBvdygxMCwgcm91bmRGYWN0b3IpKSAvIE1hdGgucG93KDEwLCByb3VuZEZhY3Rvcik7IC8vIHRydW5jYXRlIHRvICdyb3VuZEZhY3RvcicgZGVjaW1hbCBwbGFjZXNcblxuICAgIHZhciB2MiA9IE1hdGgucm91bmQoX01baV0gKiBNYXRoLnBvdygxMCwgcm91bmRGYWN0b3IpKSAvIE1hdGgucG93KDEwLCByb3VuZEZhY3Rvcik7XG5cbiAgICBpZiAodjEgIT09IHYyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG52YXIgYXNzaWduID0gZnVuY3Rpb24gYXNzaWduKE0sIG4sIG5vZGVzLCBjeSkge1xuICB2YXIgY2x1c3RlcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgIHZhciBjbHVzdGVyID0gW107XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgLy8gUm93LXdpc2UgYXR0cmFjdG9ycyBhbmQgZWxlbWVudHMgdGhhdCB0aGV5IGF0dHJhY3QgYmVsb25nIGluIHNhbWUgY2x1c3RlclxuICAgICAgaWYgKE1hdGgucm91bmQoTVtpICogbiArIGpdICogMTAwMCkgLyAxMDAwID4gMCkge1xuICAgICAgICBjbHVzdGVyLnB1c2gobm9kZXNbal0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbHVzdGVyLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY2x1c3RlcnMucHVzaChjeS5jb2xsZWN0aW9uKGNsdXN0ZXIpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgaXNEdXBsaWNhdGUgPSBmdW5jdGlvbiBpc0R1cGxpY2F0ZShjMSwgYzIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjMS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghYzJbaV0gfHwgYzFbaV0uaWQoKSAhPT0gYzJbaV0uaWQoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxudmFyIHJlbW92ZUR1cGxpY2F0ZXMgPSBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVzKGNsdXN0ZXJzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2x1c3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNsdXN0ZXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoaSAhPSBqICYmIGlzRHVwbGljYXRlKGNsdXN0ZXJzW2ldLCBjbHVzdGVyc1tqXSkpIHtcbiAgICAgICAgY2x1c3RlcnMuc3BsaWNlKGosIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHVzdGVycztcbn07XG5cbnZhciBtYXJrb3ZDbHVzdGVyaW5nID0gZnVuY3Rpb24gbWFya292Q2x1c3RlcmluZyhvcHRpb25zKSB7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgdmFyIGVkZ2VzID0gdGhpcy5lZGdlcygpO1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7IC8vIFNldCBwYXJhbWV0ZXJzIG9mIGFsZ29yaXRobTpcblxuICB2YXIgb3B0cyA9IHNldE9wdGlvbnMob3B0aW9ucyk7IC8vIE1hcCBlYWNoIG5vZGUgdG8gaXRzIHBvc2l0aW9uIGluIG5vZGUgYXJyYXlcblxuICB2YXIgaWQycG9zaXRpb24gPSB7fTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWQycG9zaXRpb25bbm9kZXNbaV0uaWQoKV0gPSBpO1xuICB9IC8vIEdlbmVyYXRlIHN0b2NoYXN0aWMgbWF0cml4IE0gZnJvbSBpbnB1dCBncmFwaCBHIChzaG91bGQgYmUgc3ltbWV0cmljL3VuZGlyZWN0ZWQpXG5cblxuICB2YXIgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgIG4yID0gbiAqIG47XG5cbiAgdmFyIE0gPSBuZXcgQXJyYXkobjIpLFxuICAgICAgX007XG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG4yOyBfaSsrKSB7XG4gICAgTVtfaV0gPSAwO1xuICB9XG5cbiAgZm9yICh2YXIgZSA9IDA7IGUgPCBlZGdlcy5sZW5ndGg7IGUrKykge1xuICAgIHZhciBlZGdlID0gZWRnZXNbZV07XG4gICAgdmFyIF9pMiA9IGlkMnBvc2l0aW9uW2VkZ2Uuc291cmNlKCkuaWQoKV07XG4gICAgdmFyIGogPSBpZDJwb3NpdGlvbltlZGdlLnRhcmdldCgpLmlkKCldO1xuICAgIHZhciBzaW0gPSBnZXRTaW1pbGFyaXR5KGVkZ2UsIG9wdHMuYXR0cmlidXRlcyk7XG4gICAgTVtfaTIgKiBuICsgal0gKz0gc2ltOyAvLyBHIHNob3VsZCBiZSBzeW1tZXRyaWMgYW5kIHVuZGlyZWN0ZWRcblxuICAgIE1baiAqIG4gKyBfaTJdICs9IHNpbTtcbiAgfSAvLyBCZWdpbiBNYXJrb3YgY2x1c3RlciBhbGdvcml0aG1cbiAgLy8gU3RlcCAxOiBBZGQgc2VsZiBsb29wcyB0byBlYWNoIG5vZGUsIGllLiBhZGQgbXVsdEZhY3RvciB0byBtYXRyaXggZGlhZ29uYWxcblxuXG4gIGFkZExvb3BzKE0sIG4sIG9wdHMubXVsdEZhY3Rvcik7IC8vIFN0ZXAgMjogTSA9IG5vcm1hbGl6ZSggTSApO1xuXG4gIG5vcm1hbGl6ZShNLCBuKTtcbiAgdmFyIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG5cbiAgd2hpbGUgKGlzU3RpbGxNb3ZpbmcgJiYgaXRlcmF0aW9ucyA8IG9wdHMubWF4SXRlcmF0aW9ucykge1xuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTsgLy8gU3RlcCAzOlxuXG4gICAgX00gPSBleHBhbmQoTSwgbiwgb3B0cy5leHBhbmRGYWN0b3IpOyAvLyBTdGVwIDQ6XG5cbiAgICBNID0gaW5mbGF0ZShfTSwgbiwgb3B0cy5pbmZsYXRlRmFjdG9yKTsgLy8gU3RlcCA1OiBjaGVjayB0byBzZWUgaWYgfnN0ZWFkeSBzdGF0ZSBoYXMgYmVlbiByZWFjaGVkXG5cbiAgICBpZiAoIWhhc0NvbnZlcmdlZChNLCBfTSwgbjIsIDQpKSB7XG4gICAgICBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpdGVyYXRpb25zKys7XG4gIH0gLy8gQnVpbGQgY2x1c3RlcnMgZnJvbSBtYXRyaXhcblxuXG4gIHZhciBjbHVzdGVycyA9IGFzc2lnbihNLCBuLCBub2RlcywgY3kpOyAvLyBSZW1vdmUgZHVwbGljYXRlIGNsdXN0ZXJzIGR1ZSB0byBzeW1tZXRyeSBvZiBncmFwaCBhbmQgTSBtYXRyaXhcblxuICBjbHVzdGVycyA9IHJlbW92ZUR1cGxpY2F0ZXMoY2x1c3RlcnMpO1xuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgbWFya292Q2x1c3RlcmluZyQxID0ge1xuICBtYXJrb3ZDbHVzdGVyaW5nOiBtYXJrb3ZDbHVzdGVyaW5nLFxuICBtY2w6IG1hcmtvdkNsdXN0ZXJpbmdcbn07XG5cbi8vIENvbW1vbiBkaXN0YW5jZSBtZXRyaWNzIGZvciBjbHVzdGVyaW5nIGFsZ29yaXRobXNcblxudmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICByZXR1cm4geDtcbn07XG5cbnZhciBhYnNEaWZmID0gZnVuY3Rpb24gYWJzRGlmZihwLCBxKSB7XG4gIHJldHVybiBNYXRoLmFicyhxIC0gcCk7XG59O1xuXG52YXIgYWRkQWJzRGlmZiA9IGZ1bmN0aW9uIGFkZEFic0RpZmYodG90YWwsIHAsIHEpIHtcbiAgcmV0dXJuIHRvdGFsICsgYWJzRGlmZihwLCBxKTtcbn07XG5cbnZhciBhZGRTcXVhcmVkRGlmZiA9IGZ1bmN0aW9uIGFkZFNxdWFyZWREaWZmKHRvdGFsLCBwLCBxKSB7XG4gIHJldHVybiB0b3RhbCArIE1hdGgucG93KHEgLSBwLCAyKTtcbn07XG5cbnZhciBzcXJ0ID0gZnVuY3Rpb24gc3FydCh4KSB7XG4gIHJldHVybiBNYXRoLnNxcnQoeCk7XG59O1xuXG52YXIgbWF4QWJzRGlmZiA9IGZ1bmN0aW9uIG1heEFic0RpZmYoY3VycmVudE1heCwgcCwgcSkge1xuICByZXR1cm4gTWF0aC5tYXgoY3VycmVudE1heCwgYWJzRGlmZihwLCBxKSk7XG59O1xuXG52YXIgZ2V0RGlzdGFuY2UgPSBmdW5jdGlvbiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIGluaXQsIHZpc2l0KSB7XG4gIHZhciBwb3N0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiBpZGVudGl0eTtcbiAgdmFyIHJldCA9IGluaXQ7XG4gIHZhciBwLCBxO1xuXG4gIGZvciAodmFyIGRpbSA9IDA7IGRpbSA8IGxlbmd0aDsgZGltKyspIHtcbiAgICBwID0gZ2V0UChkaW0pO1xuICAgIHEgPSBnZXRRKGRpbSk7XG4gICAgcmV0ID0gdmlzaXQocmV0LCBwLCBxKTtcbiAgfVxuXG4gIHJldHVybiBwb3N0KHJldCk7XG59O1xuXG52YXIgZGlzdGFuY2VzID0ge1xuICBldWNsaWRlYW46IGZ1bmN0aW9uIGV1Y2xpZGVhbihsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICBpZiAobGVuZ3RoID49IDIpIHtcbiAgICAgIHJldHVybiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIDAsIGFkZFNxdWFyZWREaWZmLCBzcXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZm9yIHNpbmdsZSBhdHRyIGNhc2UsIG1vcmUgZWZmaWNpZW50IHRvIGF2b2lkIHNxcnRcbiAgICAgIHJldHVybiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIDAsIGFkZEFic0RpZmYpO1xuICAgIH1cbiAgfSxcbiAgc3F1YXJlZEV1Y2xpZGVhbjogZnVuY3Rpb24gc3F1YXJlZEV1Y2xpZGVhbihsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2UobGVuZ3RoLCBnZXRQLCBnZXRRLCAwLCBhZGRTcXVhcmVkRGlmZik7XG4gIH0sXG4gIG1hbmhhdHRhbjogZnVuY3Rpb24gbWFuaGF0dGFuKGxlbmd0aCwgZ2V0UCwgZ2V0USkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIDAsIGFkZEFic0RpZmYpO1xuICB9LFxuICBtYXg6IGZ1bmN0aW9uIG1heChsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2UobGVuZ3RoLCBnZXRQLCBnZXRRLCAtSW5maW5pdHksIG1heEFic0RpZmYpO1xuICB9XG59OyAvLyBpbiBjYXNlIHRoZSB1c2VyIGFjY2lkZW50YWxseSBkb2Vzbid0IHVzZSBjYW1lbCBjYXNlXG5cbmRpc3RhbmNlc1snc3F1YXJlZC1ldWNsaWRlYW4nXSA9IGRpc3RhbmNlc1snc3F1YXJlZEV1Y2xpZGVhbiddO1xuZGlzdGFuY2VzWydzcXVhcmVkZXVjbGlkZWFuJ10gPSBkaXN0YW5jZXNbJ3NxdWFyZWRFdWNsaWRlYW4nXTtcbmZ1bmN0aW9uIGNsdXN0ZXJpbmdEaXN0YW5jZSAobWV0aG9kLCBsZW5ndGgsIGdldFAsIGdldFEsIG5vZGVQLCBub2RlUSkge1xuICB2YXIgaW1wbDtcblxuICBpZiAoZm4obWV0aG9kKSkge1xuICAgIGltcGwgPSBtZXRob2Q7XG4gIH0gZWxzZSB7XG4gICAgaW1wbCA9IGRpc3RhbmNlc1ttZXRob2RdIHx8IGRpc3RhbmNlcy5ldWNsaWRlYW47XG4gIH1cblxuICBpZiAobGVuZ3RoID09PSAwICYmIGZuKG1ldGhvZCkpIHtcbiAgICByZXR1cm4gaW1wbChub2RlUCwgbm9kZVEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbXBsKGxlbmd0aCwgZ2V0UCwgZ2V0USwgbm9kZVAsIG5vZGVRKTtcbiAgfVxufVxuXG52YXIgZGVmYXVsdHMkNSA9IGRlZmF1bHRzKHtcbiAgazogMixcbiAgbTogMixcbiAgc2Vuc2l0aXZpdHlUaHJlc2hvbGQ6IDAuMDAwMSxcbiAgZGlzdGFuY2U6ICdldWNsaWRlYW4nLFxuICBtYXhJdGVyYXRpb25zOiAxMCxcbiAgYXR0cmlidXRlczogW10sXG4gIHRlc3RNb2RlOiBmYWxzZSxcbiAgdGVzdENlbnRyb2lkczogbnVsbFxufSk7XG5cbnZhciBzZXRPcHRpb25zJDEgPSBmdW5jdGlvbiBzZXRPcHRpb25zKG9wdGlvbnMpIHtcbiAgcmV0dXJuIGRlZmF1bHRzJDUob3B0aW9ucyk7XG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbnZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdCh0eXBlLCBub2RlLCBjZW50cm9pZCwgYXR0cmlidXRlcywgbW9kZSkge1xuICB2YXIgbm9Ob2RlUCA9IG1vZGUgIT09ICdrTWVkb2lkcyc7XG4gIHZhciBnZXRQID0gbm9Ob2RlUCA/IGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGNlbnRyb2lkW2ldO1xuICB9IDogZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gYXR0cmlidXRlc1tpXShjZW50cm9pZCk7XG4gIH07XG5cbiAgdmFyIGdldFEgPSBmdW5jdGlvbiBnZXRRKGkpIHtcbiAgICByZXR1cm4gYXR0cmlidXRlc1tpXShub2RlKTtcbiAgfTtcblxuICB2YXIgbm9kZVAgPSBjZW50cm9pZDtcbiAgdmFyIG5vZGVRID0gbm9kZTtcbiAgcmV0dXJuIGNsdXN0ZXJpbmdEaXN0YW5jZSh0eXBlLCBhdHRyaWJ1dGVzLmxlbmd0aCwgZ2V0UCwgZ2V0USwgbm9kZVAsIG5vZGVRKTtcbn07XG5cbnZhciByYW5kb21DZW50cm9pZHMgPSBmdW5jdGlvbiByYW5kb21DZW50cm9pZHMobm9kZXMsIGssIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIG5kaW0gPSBhdHRyaWJ1dGVzLmxlbmd0aDtcbiAgdmFyIG1pbiA9IG5ldyBBcnJheShuZGltKTtcbiAgdmFyIG1heCA9IG5ldyBBcnJheShuZGltKTtcbiAgdmFyIGNlbnRyb2lkcyA9IG5ldyBBcnJheShrKTtcbiAgdmFyIGNlbnRyb2lkID0gbnVsbDsgLy8gRmluZCBtaW4sIG1heCB2YWx1ZXMgZm9yIGVhY2ggYXR0cmlidXRlIGRpbWVuc2lvblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7XG4gICAgbWluW2ldID0gbm9kZXMubWluKGF0dHJpYnV0ZXNbaV0pLnZhbHVlO1xuICAgIG1heFtpXSA9IG5vZGVzLm1heChhdHRyaWJ1dGVzW2ldKS52YWx1ZTtcbiAgfSAvLyBCdWlsZCBrIGNlbnRyb2lkcywgZWFjaCByZXByZXNlbnRlZCBhcyBhbiBuLWRpbSBmZWF0dXJlIHZlY3RvclxuXG5cbiAgZm9yICh2YXIgYyA9IDA7IGMgPCBrOyBjKyspIHtcbiAgICBjZW50cm9pZCA9IFtdO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5kaW07IF9pKyspIHtcbiAgICAgIGNlbnRyb2lkW19pXSA9IE1hdGgucmFuZG9tKCkgKiAobWF4W19pXSAtIG1pbltfaV0pICsgbWluW19pXTsgLy8gcmFuZG9tIGluaXRpYWwgdmFsdWVcbiAgICB9XG5cbiAgICBjZW50cm9pZHNbY10gPSBjZW50cm9pZDtcbiAgfVxuXG4gIHJldHVybiBjZW50cm9pZHM7XG59O1xuXG52YXIgY2xhc3NpZnkgPSBmdW5jdGlvbiBjbGFzc2lmeShub2RlLCBjZW50cm9pZHMsIGRpc3RhbmNlLCBhdHRyaWJ1dGVzLCB0eXBlKSB7XG4gIHZhciBtaW4gPSBJbmZpbml0eTtcbiAgdmFyIGluZGV4ID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNlbnRyb2lkcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkaXN0ID0gZ2V0RGlzdChkaXN0YW5jZSwgbm9kZSwgY2VudHJvaWRzW2ldLCBhdHRyaWJ1dGVzLCB0eXBlKTtcblxuICAgIGlmIChkaXN0IDwgbWluKSB7XG4gICAgICBtaW4gPSBkaXN0O1xuICAgICAgaW5kZXggPSBpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn07XG5cbnZhciBidWlsZENsdXN0ZXIgPSBmdW5jdGlvbiBidWlsZENsdXN0ZXIoY2VudHJvaWQsIG5vZGVzLCBhc3NpZ25tZW50KSB7XG4gIHZhciBjbHVzdGVyID0gW107XG4gIHZhciBub2RlID0gbnVsbDtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgbm9kZSA9IG5vZGVzW25dO1xuXG4gICAgaWYgKGFzc2lnbm1lbnRbbm9kZS5pZCgpXSA9PT0gY2VudHJvaWQpIHtcbiAgICAgIC8vY29uc29sZS5sb2coXCJOb2RlIFwiICsgbm9kZS5pZCgpICsgXCIgaXMgYXNzb2NpYXRlZCB3aXRoIG1lZG9pZCAjOiBcIiArIG0pO1xuICAgICAgY2x1c3Rlci5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHVzdGVyO1xufTtcblxudmFyIGhhdmVWYWx1ZXNDb252ZXJnZWQgPSBmdW5jdGlvbiBoYXZlVmFsdWVzQ29udmVyZ2VkKHYxLCB2Miwgc2Vuc2l0aXZpdHlUaHJlc2hvbGQpIHtcbiAgcmV0dXJuIE1hdGguYWJzKHYyIC0gdjEpIDw9IHNlbnNpdGl2aXR5VGhyZXNob2xkO1xufTtcblxudmFyIGhhdmVNYXRyaWNlc0NvbnZlcmdlZCA9IGZ1bmN0aW9uIGhhdmVNYXRyaWNlc0NvbnZlcmdlZCh2MSwgdjIsIHNlbnNpdGl2aXR5VGhyZXNob2xkKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHYxW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKHYxW2ldW2pdIC0gdjJbaV1bal0pO1xuXG4gICAgICBpZiAoZGlmZiA+IHNlbnNpdGl2aXR5VGhyZXNob2xkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciBzZWVuQmVmb3JlID0gZnVuY3Rpb24gc2VlbkJlZm9yZShub2RlLCBtZWRvaWRzLCBuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgaWYgKG5vZGUgPT09IG1lZG9pZHNbaV0pIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxudmFyIHJhbmRvbU1lZG9pZHMgPSBmdW5jdGlvbiByYW5kb21NZWRvaWRzKG5vZGVzLCBrKSB7XG4gIHZhciBtZWRvaWRzID0gbmV3IEFycmF5KGspOyAvLyBGb3Igc21hbGwgZGF0YSBzZXRzLCB0aGUgcHJvYmFiaWxpdHkgb2YgbWVkb2lkIGNvbmZsaWN0IGlzIGdyZWF0ZXIsXG4gIC8vIHNvIHdlIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHdlJ3ZlIGFscmVhZHkgc2VlbiBvciBjaG9zZSB0aGlzIG5vZGUgYmVmb3JlLlxuXG4gIGlmIChub2Rlcy5sZW5ndGggPCA1MCkge1xuICAgIC8vIFJhbmRvbWx5IHNlbGVjdCBrIG1lZG9pZHMgZnJvbSB0aGUgbiBub2Rlc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG5vZGVzLmxlbmd0aCldOyAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGNob3NlbiB0aGlzIG5vZGUgdG8gYmUgYSBtZWRvaWQsIGRvbid0IGNob29zZSBpdCBhZ2FpbiAoZm9yIHNtYWxsIGRhdGEgc2V0cykuXG4gICAgICAvLyBJbnN0ZWFkIGNob29zZSBhIGRpZmZlcmVudCByYW5kb20gbm9kZS5cblxuICAgICAgd2hpbGUgKHNlZW5CZWZvcmUobm9kZSwgbWVkb2lkcywgaSkpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG5vZGVzLmxlbmd0aCldO1xuICAgICAgfVxuXG4gICAgICBtZWRvaWRzW2ldID0gbm9kZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gUmVsYXRpdmVseSBsYXJnZSBkYXRhIHNldCwgc28gcHJldHR5IHNhZmUgdG8gbm90IGNoZWNrIGFuZCBqdXN0IHNlbGVjdCByYW5kb20gbm9kZXNcbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBrOyBfaTIrKykge1xuICAgICAgbWVkb2lkc1tfaTJdID0gbm9kZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbm9kZXMubGVuZ3RoKV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lZG9pZHM7XG59O1xuXG52YXIgZmluZENvc3QgPSBmdW5jdGlvbiBmaW5kQ29zdChwb3RlbnRpYWxOZXdNZWRvaWQsIGNsdXN0ZXIsIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIGNvc3QgPSAwO1xuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwgY2x1c3Rlci5sZW5ndGg7IG4rKykge1xuICAgIGNvc3QgKz0gZ2V0RGlzdCgnbWFuaGF0dGFuJywgY2x1c3RlcltuXSwgcG90ZW50aWFsTmV3TWVkb2lkLCBhdHRyaWJ1dGVzLCAna01lZG9pZHMnKTtcbiAgfVxuXG4gIHJldHVybiBjb3N0O1xufTtcblxudmFyIGtNZWFucyA9IGZ1bmN0aW9uIGtNZWFucyhvcHRpb25zKSB7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICB2YXIgbm9kZSA9IG51bGw7IC8vIFNldCBwYXJhbWV0ZXJzIG9mIGFsZ29yaXRobTogIyBvZiBjbHVzdGVycywgZGlzdGFuY2UgbWV0cmljLCBldGMuXG5cbiAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDEob3B0aW9ucyk7IC8vIEJlZ2luIGstbWVhbnMgYWxnb3JpdGhtXG5cbiAgdmFyIGNsdXN0ZXJzID0gbmV3IEFycmF5KG9wdHMuayk7XG4gIHZhciBhc3NpZ25tZW50ID0ge307XG4gIHZhciBjZW50cm9pZHM7IC8vIFN0ZXAgMTogSW5pdGlhbGl6ZSBjZW50cm9pZCBwb3NpdGlvbnNcblxuICBpZiAob3B0cy50ZXN0TW9kZSkge1xuICAgIGlmICh0eXBlb2Ygb3B0cy50ZXN0Q2VudHJvaWRzID09PSAnbnVtYmVyJykge1xuICAgICAgY2VudHJvaWRzID0gcmFuZG9tQ2VudHJvaWRzKG5vZGVzLCBvcHRzLmssIG9wdHMuYXR0cmlidXRlcyk7XG4gICAgfSBlbHNlIGlmIChfdHlwZW9mKG9wdHMudGVzdENlbnRyb2lkcykgPT09ICdvYmplY3QnKSB7XG4gICAgICBjZW50cm9pZHMgPSBvcHRzLnRlc3RDZW50cm9pZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlbnRyb2lkcyA9IHJhbmRvbUNlbnRyb2lkcyhub2Rlcywgb3B0cy5rLCBvcHRzLmF0dHJpYnV0ZXMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjZW50cm9pZHMgPSByYW5kb21DZW50cm9pZHMobm9kZXMsIG9wdHMuaywgb3B0cy5hdHRyaWJ1dGVzKTtcbiAgfVxuXG4gIHZhciBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgdmFyIGl0ZXJhdGlvbnMgPSAwO1xuXG4gIHdoaWxlIChpc1N0aWxsTW92aW5nICYmIGl0ZXJhdGlvbnMgPCBvcHRzLm1heEl0ZXJhdGlvbnMpIHtcbiAgICAvLyBTdGVwIDI6IEFzc2lnbiBub2RlcyB0byB0aGUgbmVhcmVzdCBjZW50cm9pZFxuICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tuXTsgLy8gRGV0ZXJtaW5lIHdoaWNoIGNsdXN0ZXIgdGhpcyBub2RlIGJlbG9uZ3MgdG86IG5vZGUgaWQgPT4gY2x1c3RlciAjXG5cbiAgICAgIGFzc2lnbm1lbnRbbm9kZS5pZCgpXSA9IGNsYXNzaWZ5KG5vZGUsIGNlbnRyb2lkcywgb3B0cy5kaXN0YW5jZSwgb3B0cy5hdHRyaWJ1dGVzLCAna01lYW5zJyk7XG4gICAgfSAvLyBTdGVwIDM6IEZvciBlYWNoIG9mIHRoZSBrIGNsdXN0ZXJzLCB1cGRhdGUgaXRzIGNlbnRyb2lkXG5cblxuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGMgPSAwOyBjIDwgb3B0cy5rOyBjKyspIHtcbiAgICAgIC8vIEdldCBhbGwgbm9kZXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBjbHVzdGVyXG4gICAgICB2YXIgY2x1c3RlciA9IGJ1aWxkQ2x1c3RlcihjLCBub2RlcywgYXNzaWdubWVudCk7XG5cbiAgICAgIGlmIChjbHVzdGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBJZiBjbHVzdGVyIGlzIGVtcHR5LCBicmVhayBvdXQgZWFybHkgJiBtb3ZlIHRvIG5leHQgY2x1c3RlclxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gVXBkYXRlIGNlbnRyb2lkcyBieSBjYWxjdWxhdGluZyBhdmcgb2YgYWxsIG5vZGVzIHdpdGhpbiB0aGUgY2x1c3Rlci5cblxuXG4gICAgICB2YXIgbmRpbSA9IG9wdHMuYXR0cmlidXRlcy5sZW5ndGg7XG4gICAgICB2YXIgY2VudHJvaWQgPSBjZW50cm9pZHNbY107IC8vIFsgZGltXzEsIGRpbV8yLCBkaW1fMywgLi4uICwgZGltX24gXVxuXG4gICAgICB2YXIgbmV3Q2VudHJvaWQgPSBuZXcgQXJyYXkobmRpbSk7XG4gICAgICB2YXIgc3VtID0gbmV3IEFycmF5KG5kaW0pO1xuXG4gICAgICBmb3IgKHZhciBkID0gMDsgZCA8IG5kaW07IGQrKykge1xuICAgICAgICBzdW1bZF0gPSAwLjA7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbHVzdGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbm9kZSA9IGNsdXN0ZXJbaV07XG4gICAgICAgICAgc3VtW2RdICs9IG9wdHMuYXR0cmlidXRlc1tkXShub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld0NlbnRyb2lkW2RdID0gc3VtW2RdIC8gY2x1c3Rlci5sZW5ndGg7IC8vIENoZWNrIHRvIHNlZSBpZiBhbGdvcml0aG0gaGFzIGNvbnZlcmdlZCwgaS5lLiB3aGVuIGNlbnRyb2lkcyBubyBsb25nZXIgY2hhbmdlXG5cbiAgICAgICAgaWYgKCFoYXZlVmFsdWVzQ29udmVyZ2VkKG5ld0NlbnRyb2lkW2RdLCBjZW50cm9pZFtkXSwgb3B0cy5zZW5zaXRpdml0eVRocmVzaG9sZCkpIHtcbiAgICAgICAgICBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjZW50cm9pZHNbY10gPSBuZXdDZW50cm9pZDtcbiAgICAgIGNsdXN0ZXJzW2NdID0gY3kuY29sbGVjdGlvbihjbHVzdGVyKTtcbiAgICB9XG5cbiAgICBpdGVyYXRpb25zKys7XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIga01lZG9pZHMgPSBmdW5jdGlvbiBrTWVkb2lkcyhvcHRpb25zKSB7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICB2YXIgbm9kZSA9IG51bGw7XG4gIHZhciBvcHRzID0gc2V0T3B0aW9ucyQxKG9wdGlvbnMpOyAvLyBCZWdpbiBrLW1lZG9pZHMgYWxnb3JpdGhtXG5cbiAgdmFyIGNsdXN0ZXJzID0gbmV3IEFycmF5KG9wdHMuayk7XG4gIHZhciBtZWRvaWRzO1xuICB2YXIgYXNzaWdubWVudCA9IHt9O1xuICB2YXIgY3VyQ29zdDtcbiAgdmFyIG1pbkNvc3RzID0gbmV3IEFycmF5KG9wdHMuayk7IC8vIG1pbmltdW0gY29zdCBjb25maWd1cmF0aW9uIGZvciBlYWNoIGNsdXN0ZXJcbiAgLy8gU3RlcCAxOiBJbml0aWFsaXplIGsgbWVkb2lkc1xuXG4gIGlmIChvcHRzLnRlc3RNb2RlKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRzLnRlc3RDZW50cm9pZHMgPT09ICdudW1iZXInKSA7IGVsc2UgaWYgKF90eXBlb2Yob3B0cy50ZXN0Q2VudHJvaWRzKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG1lZG9pZHMgPSBvcHRzLnRlc3RDZW50cm9pZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lZG9pZHMgPSByYW5kb21NZWRvaWRzKG5vZGVzLCBvcHRzLmspO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtZWRvaWRzID0gcmFuZG9tTWVkb2lkcyhub2Rlcywgb3B0cy5rKTtcbiAgfVxuXG4gIHZhciBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgdmFyIGl0ZXJhdGlvbnMgPSAwO1xuXG4gIHdoaWxlIChpc1N0aWxsTW92aW5nICYmIGl0ZXJhdGlvbnMgPCBvcHRzLm1heEl0ZXJhdGlvbnMpIHtcbiAgICAvLyBTdGVwIDI6IEFzc2lnbiBub2RlcyB0byB0aGUgbmVhcmVzdCBtZWRvaWRcbiAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgICBub2RlID0gbm9kZXNbbl07IC8vIERldGVybWluZSB3aGljaCBjbHVzdGVyIHRoaXMgbm9kZSBiZWxvbmdzIHRvOiBub2RlIGlkID0+IGNsdXN0ZXIgI1xuXG4gICAgICBhc3NpZ25tZW50W25vZGUuaWQoKV0gPSBjbGFzc2lmeShub2RlLCBtZWRvaWRzLCBvcHRzLmRpc3RhbmNlLCBvcHRzLmF0dHJpYnV0ZXMsICdrTWVkb2lkcycpO1xuICAgIH1cblxuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTsgLy8gU3RlcCAzOiBGb3IgZWFjaCBtZWRvaWQgbSwgYW5kIGZvciBlYWNoIG5vZGUgYXNzY2lhdGVkIHdpdGggbWVkaW9kIG0sXG4gICAgLy8gc2VsZWN0IHRoZSBub2RlIHdpdGggdGhlIGxvd2VzdCBjb25maWd1cmF0aW9uIGNvc3QgYXMgbmV3IG1lZG9pZC5cblxuICAgIGZvciAodmFyIG0gPSAwOyBtIDwgbWVkb2lkcy5sZW5ndGg7IG0rKykge1xuICAgICAgLy8gR2V0IGFsbCBub2RlcyB0aGF0IGJlbG9uZyB0byB0aGlzIG1lZG9pZFxuICAgICAgdmFyIGNsdXN0ZXIgPSBidWlsZENsdXN0ZXIobSwgbm9kZXMsIGFzc2lnbm1lbnQpO1xuXG4gICAgICBpZiAoY2x1c3Rlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gSWYgY2x1c3RlciBpcyBlbXB0eSwgYnJlYWsgb3V0IGVhcmx5ICYgbW92ZSB0byBuZXh0IGNsdXN0ZXJcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG1pbkNvc3RzW21dID0gZmluZENvc3QobWVkb2lkc1ttXSwgY2x1c3Rlciwgb3B0cy5hdHRyaWJ1dGVzKTsgLy8gb3JpZ2luYWwgY29zdFxuICAgICAgLy8gU2VsZWN0IGRpZmZlcmVudCBtZWRvaWQgaWYgaXRzIGNvbmZpZ3VyYXRpb24gaGFzIHRoZSBsb3dlc3QgY29zdFxuXG4gICAgICBmb3IgKHZhciBfbiA9IDA7IF9uIDwgY2x1c3Rlci5sZW5ndGg7IF9uKyspIHtcbiAgICAgICAgY3VyQ29zdCA9IGZpbmRDb3N0KGNsdXN0ZXJbX25dLCBjbHVzdGVyLCBvcHRzLmF0dHJpYnV0ZXMpO1xuXG4gICAgICAgIGlmIChjdXJDb3N0IDwgbWluQ29zdHNbbV0pIHtcbiAgICAgICAgICBtaW5Db3N0c1ttXSA9IGN1ckNvc3Q7XG4gICAgICAgICAgbWVkb2lkc1ttXSA9IGNsdXN0ZXJbX25dO1xuICAgICAgICAgIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNsdXN0ZXJzW21dID0gY3kuY29sbGVjdGlvbihjbHVzdGVyKTtcbiAgICB9XG5cbiAgICBpdGVyYXRpb25zKys7XG4gIH1cblxuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgdXBkYXRlQ2VudHJvaWRzID0gZnVuY3Rpb24gdXBkYXRlQ2VudHJvaWRzKGNlbnRyb2lkcywgbm9kZXMsIFUsIHdlaWdodCwgb3B0cykge1xuICB2YXIgbnVtZXJhdG9yLCBkZW5vbWluYXRvcjtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjZW50cm9pZHMubGVuZ3RoOyBjKyspIHtcbiAgICAgIHdlaWdodFtuXVtjXSA9IE1hdGgucG93KFVbbl1bY10sIG9wdHMubSk7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgX2MgPSAwOyBfYyA8IGNlbnRyb2lkcy5sZW5ndGg7IF9jKyspIHtcbiAgICBmb3IgKHZhciBkaW0gPSAwOyBkaW0gPCBvcHRzLmF0dHJpYnV0ZXMubGVuZ3RoOyBkaW0rKykge1xuICAgICAgbnVtZXJhdG9yID0gMDtcbiAgICAgIGRlbm9taW5hdG9yID0gMDtcblxuICAgICAgZm9yICh2YXIgX24yID0gMDsgX24yIDwgbm9kZXMubGVuZ3RoOyBfbjIrKykge1xuICAgICAgICBudW1lcmF0b3IgKz0gd2VpZ2h0W19uMl1bX2NdICogb3B0cy5hdHRyaWJ1dGVzW2RpbV0obm9kZXNbX24yXSk7XG4gICAgICAgIGRlbm9taW5hdG9yICs9IHdlaWdodFtfbjJdW19jXTtcbiAgICAgIH1cblxuICAgICAgY2VudHJvaWRzW19jXVtkaW1dID0gbnVtZXJhdG9yIC8gZGVub21pbmF0b3I7XG4gICAgfVxuICB9XG59O1xuXG52YXIgdXBkYXRlTWVtYmVyc2hpcCA9IGZ1bmN0aW9uIHVwZGF0ZU1lbWJlcnNoaXAoVSwgX1UsIGNlbnRyb2lkcywgbm9kZXMsIG9wdHMpIHtcbiAgLy8gU2F2ZSBwcmV2aW91cyBzdGVwXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVS5sZW5ndGg7IGkrKykge1xuICAgIF9VW2ldID0gVVtpXS5zbGljZSgpO1xuICB9XG5cbiAgdmFyIHN1bSwgbnVtZXJhdG9yLCBkZW5vbWluYXRvcjtcbiAgdmFyIHBvdyA9IDIgLyAob3B0cy5tIC0gMSk7XG5cbiAgZm9yICh2YXIgYyA9IDA7IGMgPCBjZW50cm9pZHMubGVuZ3RoOyBjKyspIHtcbiAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XG4gICAgICBzdW0gPSAwO1xuXG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGNlbnRyb2lkcy5sZW5ndGg7IGsrKykge1xuICAgICAgICAvLyBhZ2FpbnN0IGFsbCBvdGhlciBjZW50cm9pZHNcbiAgICAgICAgbnVtZXJhdG9yID0gZ2V0RGlzdChvcHRzLmRpc3RhbmNlLCBub2Rlc1tuXSwgY2VudHJvaWRzW2NdLCBvcHRzLmF0dHJpYnV0ZXMsICdjbWVhbnMnKTtcbiAgICAgICAgZGVub21pbmF0b3IgPSBnZXREaXN0KG9wdHMuZGlzdGFuY2UsIG5vZGVzW25dLCBjZW50cm9pZHNba10sIG9wdHMuYXR0cmlidXRlcywgJ2NtZWFucycpO1xuICAgICAgICBzdW0gKz0gTWF0aC5wb3cobnVtZXJhdG9yIC8gZGVub21pbmF0b3IsIHBvdyk7XG4gICAgICB9XG5cbiAgICAgIFVbbl1bY10gPSAxIC8gc3VtO1xuICAgIH1cbiAgfVxufTtcblxudmFyIGFzc2lnbiQxID0gZnVuY3Rpb24gYXNzaWduKG5vZGVzLCBVLCBvcHRzLCBjeSkge1xuICB2YXIgY2x1c3RlcnMgPSBuZXcgQXJyYXkob3B0cy5rKTtcblxuICBmb3IgKHZhciBjID0gMDsgYyA8IGNsdXN0ZXJzLmxlbmd0aDsgYysrKSB7XG4gICAgY2x1c3RlcnNbY10gPSBbXTtcbiAgfVxuXG4gIHZhciBtYXg7XG4gIHZhciBpbmRleDtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IFUubGVuZ3RoOyBuKyspIHtcbiAgICAvLyBmb3IgZWFjaCBub2RlIChVIGlzIE4geCBDIG1hdHJpeClcbiAgICBtYXggPSAtSW5maW5pdHk7XG4gICAgaW5kZXggPSAtMTsgLy8gRGV0ZXJtaW5lIHdoaWNoIGNsdXN0ZXIgdGhlIG5vZGUgaXMgbW9zdCBsaWtlbHkgdG8gYmVsb25nIGluXG5cbiAgICBmb3IgKHZhciBfYzIgPSAwOyBfYzIgPCBVWzBdLmxlbmd0aDsgX2MyKyspIHtcbiAgICAgIGlmIChVW25dW19jMl0gPiBtYXgpIHtcbiAgICAgICAgbWF4ID0gVVtuXVtfYzJdO1xuICAgICAgICBpbmRleCA9IF9jMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjbHVzdGVyc1tpbmRleF0ucHVzaChub2Rlc1tuXSk7XG4gIH0gLy8gVHVybiBldmVyeSBhcnJheSBpbnRvIGEgY29sbGVjdGlvbiBvZiBub2Rlc1xuXG5cbiAgZm9yICh2YXIgX2MzID0gMDsgX2MzIDwgY2x1c3RlcnMubGVuZ3RoOyBfYzMrKykge1xuICAgIGNsdXN0ZXJzW19jM10gPSBjeS5jb2xsZWN0aW9uKGNsdXN0ZXJzW19jM10pO1xuICB9XG5cbiAgcmV0dXJuIGNsdXN0ZXJzO1xufTtcblxudmFyIGZ1enp5Q01lYW5zID0gZnVuY3Rpb24gZnV6enlDTWVhbnMob3B0aW9ucykge1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDEob3B0aW9ucyk7IC8vIEJlZ2luIGZ1enp5IGMtbWVhbnMgYWxnb3JpdGhtXG5cbiAgdmFyIGNsdXN0ZXJzO1xuICB2YXIgY2VudHJvaWRzO1xuICB2YXIgVTtcblxuICB2YXIgX1U7XG5cbiAgdmFyIHdlaWdodDsgLy8gU3RlcCAxOiBJbml0aWFsaXplIGxldGlhYmxlcy5cblxuICBfVSA9IG5ldyBBcnJheShub2Rlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBOIHggQyBtYXRyaXhcbiAgICBfVVtpXSA9IG5ldyBBcnJheShvcHRzLmspO1xuICB9XG5cbiAgVSA9IG5ldyBBcnJheShub2Rlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IG5vZGVzLmxlbmd0aDsgX2kzKyspIHtcbiAgICAvLyBOIHggQyBtYXRyaXhcbiAgICBVW19pM10gPSBuZXcgQXJyYXkob3B0cy5rKTtcbiAgfVxuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG5vZGVzLmxlbmd0aDsgX2k0KyspIHtcbiAgICB2YXIgdG90YWwgPSAwO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBvcHRzLms7IGorKykge1xuICAgICAgVVtfaTRdW2pdID0gTWF0aC5yYW5kb20oKTtcbiAgICAgIHRvdGFsICs9IFVbX2k0XVtqXTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgb3B0cy5rOyBfaisrKSB7XG4gICAgICBVW19pNF1bX2pdID0gVVtfaTRdW19qXSAvIHRvdGFsO1xuICAgIH1cbiAgfVxuXG4gIGNlbnRyb2lkcyA9IG5ldyBBcnJheShvcHRzLmspO1xuXG4gIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IG9wdHMuazsgX2k1KyspIHtcbiAgICBjZW50cm9pZHNbX2k1XSA9IG5ldyBBcnJheShvcHRzLmF0dHJpYnV0ZXMubGVuZ3RoKTtcbiAgfVxuXG4gIHdlaWdodCA9IG5ldyBBcnJheShub2Rlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IG5vZGVzLmxlbmd0aDsgX2k2KyspIHtcbiAgICAvLyBOIHggQyBtYXRyaXhcbiAgICB3ZWlnaHRbX2k2XSA9IG5ldyBBcnJheShvcHRzLmspO1xuICB9IC8vIGVuZCBpbml0IEZDTVxuXG5cbiAgdmFyIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG5cbiAgd2hpbGUgKGlzU3RpbGxNb3ZpbmcgJiYgaXRlcmF0aW9ucyA8IG9wdHMubWF4SXRlcmF0aW9ucykge1xuICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTsgLy8gU3RlcCAyOiBDYWxjdWxhdGUgdGhlIGNlbnRyb2lkcyBmb3IgZWFjaCBzdGVwLlxuXG4gICAgdXBkYXRlQ2VudHJvaWRzKGNlbnRyb2lkcywgbm9kZXMsIFUsIHdlaWdodCwgb3B0cyk7IC8vIFN0ZXAgMzogVXBkYXRlIHRoZSBwYXJ0aXRpb24gbWF0cml4IFUuXG5cbiAgICB1cGRhdGVNZW1iZXJzaGlwKFUsIF9VLCBjZW50cm9pZHMsIG5vZGVzLCBvcHRzKTsgLy8gU3RlcCA0OiBDaGVjayBmb3IgY29udmVyZ2VuY2UuXG5cbiAgICBpZiAoIWhhdmVNYXRyaWNlc0NvbnZlcmdlZChVLCBfVSwgb3B0cy5zZW5zaXRpdml0eVRocmVzaG9sZCkpIHtcbiAgICAgIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIGl0ZXJhdGlvbnMrKztcbiAgfSAvLyBBc3NpZ24gbm9kZXMgdG8gY2x1c3RlcnMgd2l0aCBoaWdoZXN0IHByb2JhYmlsaXR5LlxuXG5cbiAgY2x1c3RlcnMgPSBhc3NpZ24kMShub2RlcywgVSwgb3B0cywgY3kpO1xuICByZXR1cm4ge1xuICAgIGNsdXN0ZXJzOiBjbHVzdGVycyxcbiAgICBkZWdyZWVPZk1lbWJlcnNoaXA6IFVcbiAgfTtcbn07XG5cbnZhciBrQ2x1c3RlcmluZyA9IHtcbiAga01lYW5zOiBrTWVhbnMsXG4gIGtNZWRvaWRzOiBrTWVkb2lkcyxcbiAgZnV6enlDTWVhbnM6IGZ1enp5Q01lYW5zLFxuICBmY206IGZ1enp5Q01lYW5zXG59O1xuXG4vLyBJbXBsZW1lbnRlZCBieSBab2UgWGkgQHpvZXhpIGZvciBHU09DIDIwMTZcbnZhciBkZWZhdWx0cyQ2ID0gZGVmYXVsdHMoe1xuICBkaXN0YW5jZTogJ2V1Y2xpZGVhbicsXG4gIC8vIGRpc3RhbmNlIG1ldHJpYyB0byBjb21wYXJlIG5vZGVzXG4gIGxpbmthZ2U6ICdtaW4nLFxuICAvLyBsaW5rYWdlIGNyaXRlcmlvbiA6IGhvdyB0byBkZXRlcm1pbmUgdGhlIGRpc3RhbmNlIGJldHdlZW4gY2x1c3RlcnMgb2Ygbm9kZXNcbiAgbW9kZTogJ3RocmVzaG9sZCcsXG4gIC8vIG1vZGU6J3RocmVzaG9sZCcgPT4gY2x1c3RlcnMgbXVzdCBiZSB0aHJlc2hvbGQgZGlzdGFuY2UgYXBhcnRcbiAgdGhyZXNob2xkOiBJbmZpbml0eSxcbiAgLy8gdGhlIGRpc3RhbmNlIHRocmVzaG9sZFxuICAvLyBtb2RlOidkZW5kcm9ncmFtJyA9PiB0aGUgbm9kZXMgYXJlIG9yZ2FuaXNlZCBhcyBsZWF2ZXMgaW4gYSB0cmVlIChzaWJsaW5ncyBhcmUgY2xvc2UpLCBtZXJnaW5nIG1ha2VzIGNsdXN0ZXJzXG4gIGFkZERlbmRyb2dyYW06IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIGFkZCB0aGUgZGVuZHJvZ3JhbSB0byB0aGUgZ3JhcGggZm9yIHZpelxuICBkZW5kcm9ncmFtRGVwdGg6IDAsXG4gIC8vIGRlcHRoIGF0IHdoaWNoIGRlbmRyb2dyYW0gYnJhbmNoZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSByZXR1cm5lZCBjbHVzdGVyc1xuICBhdHRyaWJ1dGVzOiBbXSAvLyBhcnJheSBvZiBhdHRyIGZ1bmN0aW9uc1xuXG59KTtcbnZhciBsaW5rYWdlQWxpYXNlcyA9IHtcbiAgJ3NpbmdsZSc6ICdtaW4nLFxuICAnY29tcGxldGUnOiAnbWF4J1xufTtcblxudmFyIHNldE9wdGlvbnMkMiA9IGZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgb3B0cyA9IGRlZmF1bHRzJDYob3B0aW9ucyk7XG4gIHZhciBwcmVmZXJyZWRBbGlhcyA9IGxpbmthZ2VBbGlhc2VzW29wdHMubGlua2FnZV07XG5cbiAgaWYgKHByZWZlcnJlZEFsaWFzICE9IG51bGwpIHtcbiAgICBvcHRzLmxpbmthZ2UgPSBwcmVmZXJyZWRBbGlhcztcbiAgfVxuXG4gIHJldHVybiBvcHRzO1xufTtcblxudmFyIG1lcmdlQ2xvc2VzdCA9IGZ1bmN0aW9uIG1lcmdlQ2xvc2VzdChjbHVzdGVycywgaW5kZXgsIGRpc3RzLCBtaW5zLCBvcHRzKSB7XG4gIC8vIEZpbmQgdHdvIGNsb3Nlc3QgY2x1c3RlcnMgZnJvbSBjYWNoZWQgbWluc1xuICB2YXIgbWluS2V5ID0gMDtcbiAgdmFyIG1pbiA9IEluZmluaXR5O1xuICB2YXIgZGlzdDtcbiAgdmFyIGF0dHJzID0gb3B0cy5hdHRyaWJ1dGVzO1xuXG4gIHZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdChuMSwgbjIpIHtcbiAgICByZXR1cm4gY2x1c3RlcmluZ0Rpc3RhbmNlKG9wdHMuZGlzdGFuY2UsIGF0dHJzLmxlbmd0aCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMSk7XG4gICAgfSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMik7XG4gICAgfSwgbjEsIG4yKTtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNsdXN0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGNsdXN0ZXJzW2ldLmtleTtcbiAgICB2YXIgX2Rpc3QgPSBkaXN0c1trZXldW21pbnNba2V5XV07XG5cbiAgICBpZiAoX2Rpc3QgPCBtaW4pIHtcbiAgICAgIG1pbktleSA9IGtleTtcbiAgICAgIG1pbiA9IF9kaXN0O1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLm1vZGUgPT09ICd0aHJlc2hvbGQnICYmIG1pbiA+PSBvcHRzLnRocmVzaG9sZCB8fCBvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJyAmJiBjbHVzdGVycy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgYzEgPSBpbmRleFttaW5LZXldO1xuICB2YXIgYzIgPSBpbmRleFttaW5zW21pbktleV1dO1xuICB2YXIgbWVyZ2VkOyAvLyBNZXJnZSB0d28gY2xvc2VzdCBjbHVzdGVyc1xuXG4gIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykge1xuICAgIG1lcmdlZCA9IHtcbiAgICAgIGxlZnQ6IGMxLFxuICAgICAgcmlnaHQ6IGMyLFxuICAgICAga2V5OiBjMS5rZXlcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG1lcmdlZCA9IHtcbiAgICAgIHZhbHVlOiBjMS52YWx1ZS5jb25jYXQoYzIudmFsdWUpLFxuICAgICAga2V5OiBjMS5rZXlcbiAgICB9O1xuICB9XG5cbiAgY2x1c3RlcnNbYzEuaW5kZXhdID0gbWVyZ2VkO1xuICBjbHVzdGVycy5zcGxpY2UoYzIuaW5kZXgsIDEpO1xuICBpbmRleFtjMS5rZXldID0gbWVyZ2VkOyAvLyBVcGRhdGUgZGlzdGFuY2VzIHdpdGggbmV3IG1lcmdlZCBjbHVzdGVyXG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGNsdXN0ZXJzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBjdXIgPSBjbHVzdGVyc1tfaV07XG5cbiAgICBpZiAoYzEua2V5ID09PSBjdXIua2V5KSB7XG4gICAgICBkaXN0ID0gSW5maW5pdHk7XG4gICAgfSBlbHNlIGlmIChvcHRzLmxpbmthZ2UgPT09ICdtaW4nKSB7XG4gICAgICBkaXN0ID0gZGlzdHNbYzEua2V5XVtjdXIua2V5XTtcblxuICAgICAgaWYgKGRpc3RzW2MxLmtleV1bY3VyLmtleV0gPiBkaXN0c1tjMi5rZXldW2N1ci5rZXldKSB7XG4gICAgICAgIGRpc3QgPSBkaXN0c1tjMi5rZXldW2N1ci5rZXldO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob3B0cy5saW5rYWdlID09PSAnbWF4Jykge1xuICAgICAgZGlzdCA9IGRpc3RzW2MxLmtleV1bY3VyLmtleV07XG5cbiAgICAgIGlmIChkaXN0c1tjMS5rZXldW2N1ci5rZXldIDwgZGlzdHNbYzIua2V5XVtjdXIua2V5XSkge1xuICAgICAgICBkaXN0ID0gZGlzdHNbYzIua2V5XVtjdXIua2V5XTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9wdHMubGlua2FnZSA9PT0gJ21lYW4nKSB7XG4gICAgICBkaXN0ID0gKGRpc3RzW2MxLmtleV1bY3VyLmtleV0gKiBjMS5zaXplICsgZGlzdHNbYzIua2V5XVtjdXIua2V5XSAqIGMyLnNpemUpIC8gKGMxLnNpemUgKyBjMi5zaXplKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdHMubW9kZSA9PT0gJ2RlbmRyb2dyYW0nKSBkaXN0ID0gZ2V0RGlzdChjdXIudmFsdWUsIGMxLnZhbHVlKTtlbHNlIGRpc3QgPSBnZXREaXN0KGN1ci52YWx1ZVswXSwgYzEudmFsdWVbMF0pO1xuICAgIH1cblxuICAgIGRpc3RzW2MxLmtleV1bY3VyLmtleV0gPSBkaXN0c1tjdXIua2V5XVtjMS5rZXldID0gZGlzdDsgLy8gZGlzdGFuY2UgbWF0cml4IGlzIHN5bW1ldHJpY1xuICB9IC8vIFVwZGF0ZSBjYWNoZWQgbWluc1xuXG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgY2x1c3RlcnMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBrZXkxID0gY2x1c3RlcnNbX2kyXS5rZXk7XG5cbiAgICBpZiAobWluc1trZXkxXSA9PT0gYzEua2V5IHx8IG1pbnNba2V5MV0gPT09IGMyLmtleSkge1xuICAgICAgdmFyIF9taW4gPSBrZXkxO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNsdXN0ZXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBrZXkyID0gY2x1c3RlcnNbal0ua2V5O1xuXG4gICAgICAgIGlmIChkaXN0c1trZXkxXVtrZXkyXSA8IGRpc3RzW2tleTFdW19taW5dKSB7XG4gICAgICAgICAgX21pbiA9IGtleTI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWluc1trZXkxXSA9IF9taW47XG4gICAgfVxuXG4gICAgY2x1c3RlcnNbX2kyXS5pbmRleCA9IF9pMjtcbiAgfSAvLyBDbGVhbiB1cCBtZXRhIGRhdGEgdXNlZCBmb3IgY2x1c3RlcmluZ1xuXG5cbiAgYzEua2V5ID0gYzIua2V5ID0gYzEuaW5kZXggPSBjMi5pbmRleCA9IG51bGw7XG4gIHJldHVybiB0cnVlO1xufTtcblxudmFyIGdldEFsbENoaWxkcmVuID0gZnVuY3Rpb24gZ2V0QWxsQ2hpbGRyZW4ocm9vdCwgYXJyLCBjeSkge1xuICBpZiAoIXJvb3QpIHJldHVybjtcblxuICBpZiAocm9vdC52YWx1ZSkge1xuICAgIGFyci5wdXNoKHJvb3QudmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGlmIChyb290LmxlZnQpIGdldEFsbENoaWxkcmVuKHJvb3QubGVmdCwgYXJyKTtcbiAgICBpZiAocm9vdC5yaWdodCkgZ2V0QWxsQ2hpbGRyZW4ocm9vdC5yaWdodCwgYXJyKTtcbiAgfVxufTtcblxudmFyIGJ1aWxkRGVuZHJvZ3JhbSA9IGZ1bmN0aW9uIGJ1aWxkRGVuZHJvZ3JhbShyb290LCBjeSkge1xuICBpZiAoIXJvb3QpIHJldHVybiAnJztcblxuICBpZiAocm9vdC5sZWZ0ICYmIHJvb3QucmlnaHQpIHtcbiAgICB2YXIgbGVmdFN0ciA9IGJ1aWxkRGVuZHJvZ3JhbShyb290LmxlZnQsIGN5KTtcbiAgICB2YXIgcmlnaHRTdHIgPSBidWlsZERlbmRyb2dyYW0ocm9vdC5yaWdodCwgY3kpO1xuICAgIHZhciBub2RlID0gY3kuYWRkKHtcbiAgICAgIGdyb3VwOiAnbm9kZXMnLFxuICAgICAgZGF0YToge1xuICAgICAgICBpZDogbGVmdFN0ciArICcsJyArIHJpZ2h0U3RyXG4gICAgICB9XG4gICAgfSk7XG4gICAgY3kuYWRkKHtcbiAgICAgIGdyb3VwOiAnZWRnZXMnLFxuICAgICAgZGF0YToge1xuICAgICAgICBzb3VyY2U6IGxlZnRTdHIsXG4gICAgICAgIHRhcmdldDogbm9kZS5pZCgpXG4gICAgICB9XG4gICAgfSk7XG4gICAgY3kuYWRkKHtcbiAgICAgIGdyb3VwOiAnZWRnZXMnLFxuICAgICAgZGF0YToge1xuICAgICAgICBzb3VyY2U6IHJpZ2h0U3RyLFxuICAgICAgICB0YXJnZXQ6IG5vZGUuaWQoKVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBub2RlLmlkKCk7XG4gIH0gZWxzZSBpZiAocm9vdC52YWx1ZSkge1xuICAgIHJldHVybiByb290LnZhbHVlLmlkKCk7XG4gIH1cbn07XG5cbnZhciBidWlsZENsdXN0ZXJzRnJvbVRyZWUgPSBmdW5jdGlvbiBidWlsZENsdXN0ZXJzRnJvbVRyZWUocm9vdCwgaywgY3kpIHtcbiAgaWYgKCFyb290KSByZXR1cm4gW107XG4gIHZhciBsZWZ0ID0gW10sXG4gICAgICByaWdodCA9IFtdLFxuICAgICAgbGVhdmVzID0gW107XG5cbiAgaWYgKGsgPT09IDApIHtcbiAgICAvLyBkb24ndCBjdXQgdHJlZSwgc2ltcGx5IHJldHVybiBhbGwgbm9kZXMgYXMgMSBzaW5nbGUgY2x1c3RlclxuICAgIGlmIChyb290LmxlZnQpIGdldEFsbENoaWxkcmVuKHJvb3QubGVmdCwgbGVmdCk7XG4gICAgaWYgKHJvb3QucmlnaHQpIGdldEFsbENoaWxkcmVuKHJvb3QucmlnaHQsIHJpZ2h0KTtcbiAgICBsZWF2ZXMgPSBsZWZ0LmNvbmNhdChyaWdodCk7XG4gICAgcmV0dXJuIFtjeS5jb2xsZWN0aW9uKGxlYXZlcyldO1xuICB9IGVsc2UgaWYgKGsgPT09IDEpIHtcbiAgICAvLyBjdXQgYXQgcm9vdFxuICAgIGlmIChyb290LnZhbHVlKSB7XG4gICAgICAvLyBsZWFmIG5vZGVcbiAgICAgIHJldHVybiBbY3kuY29sbGVjdGlvbihyb290LnZhbHVlKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyb290LmxlZnQpIGdldEFsbENoaWxkcmVuKHJvb3QubGVmdCwgbGVmdCk7XG4gICAgICBpZiAocm9vdC5yaWdodCkgZ2V0QWxsQ2hpbGRyZW4ocm9vdC5yaWdodCwgcmlnaHQpO1xuICAgICAgcmV0dXJuIFtjeS5jb2xsZWN0aW9uKGxlZnQpLCBjeS5jb2xsZWN0aW9uKHJpZ2h0KV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChyb290LnZhbHVlKSB7XG4gICAgICByZXR1cm4gW2N5LmNvbGxlY3Rpb24ocm9vdC52YWx1ZSldO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocm9vdC5sZWZ0KSBsZWZ0ID0gYnVpbGRDbHVzdGVyc0Zyb21UcmVlKHJvb3QubGVmdCwgayAtIDEsIGN5KTtcbiAgICAgIGlmIChyb290LnJpZ2h0KSByaWdodCA9IGJ1aWxkQ2x1c3RlcnNGcm9tVHJlZShyb290LnJpZ2h0LCBrIC0gMSwgY3kpO1xuICAgICAgcmV0dXJuIGxlZnQuY29uY2F0KHJpZ2h0KTtcbiAgICB9XG4gIH1cbn07XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cblxudmFyIGhpZXJhcmNoaWNhbENsdXN0ZXJpbmcgPSBmdW5jdGlvbiBoaWVyYXJjaGljYWxDbHVzdGVyaW5nKG9wdGlvbnMpIHtcbiAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7IC8vIFNldCBwYXJhbWV0ZXJzIG9mIGFsZ29yaXRobTogbGlua2FnZSB0eXBlLCBkaXN0YW5jZSBtZXRyaWMsIGV0Yy5cblxuICB2YXIgb3B0cyA9IHNldE9wdGlvbnMkMihvcHRpb25zKTtcbiAgdmFyIGF0dHJzID0gb3B0cy5hdHRyaWJ1dGVzO1xuXG4gIHZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdChuMSwgbjIpIHtcbiAgICByZXR1cm4gY2x1c3RlcmluZ0Rpc3RhbmNlKG9wdHMuZGlzdGFuY2UsIGF0dHJzLmxlbmd0aCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMSk7XG4gICAgfSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyc1tpXShuMik7XG4gICAgfSwgbjEsIG4yKTtcbiAgfTsgLy8gQmVnaW4gaGllcmFyY2hpY2FsIGFsZ29yaXRobVxuXG5cbiAgdmFyIGNsdXN0ZXJzID0gW107XG4gIHZhciBkaXN0cyA9IFtdOyAvLyBkaXN0YW5jZXMgYmV0d2VlbiBlYWNoIHBhaXIgb2YgY2x1c3RlcnNcblxuICB2YXIgbWlucyA9IFtdOyAvLyBjbG9zZXN0IGNsdXN0ZXIgZm9yIGVhY2ggY2x1c3RlclxuXG4gIHZhciBpbmRleCA9IFtdOyAvLyBoYXNoIG9mIGFsbCBjbHVzdGVycyBieSBrZXlcbiAgLy8gSW4gYWdnbG9tZXJhdGl2ZSAoYm90dG9tLXVwKSBjbHVzdGVyaW5nLCBlYWNoIG5vZGUgc3RhcnRzIGFzIGl0cyBvd24gY2x1c3RlclxuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICB2YXIgY2x1c3RlciA9IHtcbiAgICAgIHZhbHVlOiBvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJyA/IG5vZGVzW25dIDogW25vZGVzW25dXSxcbiAgICAgIGtleTogbixcbiAgICAgIGluZGV4OiBuXG4gICAgfTtcbiAgICBjbHVzdGVyc1tuXSA9IGNsdXN0ZXI7XG4gICAgaW5kZXhbbl0gPSBjbHVzdGVyO1xuICAgIGRpc3RzW25dID0gW107XG4gICAgbWluc1tuXSA9IDA7XG4gIH0gLy8gQ2FsY3VsYXRlIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIGVhY2ggcGFpciBvZiBjbHVzdGVyc1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbHVzdGVycy5sZW5ndGg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IGk7IGorKykge1xuICAgICAgdmFyIGRpc3QgPSB2b2lkIDA7XG5cbiAgICAgIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykge1xuICAgICAgICAvLyBtb2RlcyBzdG9yZSBjbHVzdGVyIHZhbHVlcyBkaWZmZXJlbnRseVxuICAgICAgICBkaXN0ID0gaSA9PT0gaiA/IEluZmluaXR5IDogZ2V0RGlzdChjbHVzdGVyc1tpXS52YWx1ZSwgY2x1c3RlcnNbal0udmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdCA9IGkgPT09IGogPyBJbmZpbml0eSA6IGdldERpc3QoY2x1c3RlcnNbaV0udmFsdWVbMF0sIGNsdXN0ZXJzW2pdLnZhbHVlWzBdKTtcbiAgICAgIH1cblxuICAgICAgZGlzdHNbaV1bal0gPSBkaXN0O1xuICAgICAgZGlzdHNbal1baV0gPSBkaXN0O1xuXG4gICAgICBpZiAoZGlzdCA8IGRpc3RzW2ldW21pbnNbaV1dKSB7XG4gICAgICAgIG1pbnNbaV0gPSBqOyAvLyBDYWNoZSBtaW5zOiBjbG9zZXN0IGNsdXN0ZXIgdG8gY2x1c3RlciBpIGlzIGNsdXN0ZXIgalxuICAgICAgfVxuICAgIH1cbiAgfSAvLyBGaW5kIHRoZSBjbG9zZXN0IHBhaXIgb2YgY2x1c3RlcnMgYW5kIG1lcmdlIHRoZW0gaW50byBhIHNpbmdsZSBjbHVzdGVyLlxuICAvLyBVcGRhdGUgZGlzdGFuY2VzIGJldHdlZW4gbmV3IGNsdXN0ZXIgYW5kIGVhY2ggb2YgdGhlIG9sZCBjbHVzdGVycywgYW5kIGxvb3AgdW50aWwgdGhyZXNob2xkIHJlYWNoZWQuXG5cblxuICB2YXIgbWVyZ2VkID0gbWVyZ2VDbG9zZXN0KGNsdXN0ZXJzLCBpbmRleCwgZGlzdHMsIG1pbnMsIG9wdHMpO1xuXG4gIHdoaWxlIChtZXJnZWQpIHtcbiAgICBtZXJnZWQgPSBtZXJnZUNsb3Nlc3QoY2x1c3RlcnMsIGluZGV4LCBkaXN0cywgbWlucywgb3B0cyk7XG4gIH1cblxuICB2YXIgcmV0Q2x1c3RlcnM7IC8vIERlbmRyb2dyYW0gbW9kZSBidWlsZHMgdGhlIGhpZXJhcmNoeSBhbmQgYWRkcyBpbnRlcm1lZGlhcnkgbm9kZXMgKyBlZGdlc1xuICAvLyBpbiBhZGRpdGlvbiB0byByZXR1cm5pbmcgdGhlIGNsdXN0ZXJzLlxuXG4gIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykge1xuICAgIHJldENsdXN0ZXJzID0gYnVpbGRDbHVzdGVyc0Zyb21UcmVlKGNsdXN0ZXJzWzBdLCBvcHRzLmRlbmRyb2dyYW1EZXB0aCwgY3kpO1xuICAgIGlmIChvcHRzLmFkZERlbmRyb2dyYW0pIGJ1aWxkRGVuZHJvZ3JhbShjbHVzdGVyc1swXSwgY3kpO1xuICB9IGVsc2Uge1xuICAgIC8vIFJlZ3VsYXIgbW9kZSBzaW1wbHkgcmV0dXJucyB0aGUgY2x1c3RlcnNcbiAgICByZXRDbHVzdGVycyA9IG5ldyBBcnJheShjbHVzdGVycy5sZW5ndGgpO1xuICAgIGNsdXN0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXIsIGkpIHtcbiAgICAgIC8vIENsZWFuIHVwIG1ldGEgZGF0YSB1c2VkIGZvciBjbHVzdGVyaW5nXG4gICAgICBjbHVzdGVyLmtleSA9IGNsdXN0ZXIuaW5kZXggPSBudWxsO1xuICAgICAgcmV0Q2x1c3RlcnNbaV0gPSBjeS5jb2xsZWN0aW9uKGNsdXN0ZXIudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJldENsdXN0ZXJzO1xufTtcblxudmFyIGhpZXJhcmNoaWNhbENsdXN0ZXJpbmckMSA9IHtcbiAgaGllcmFyY2hpY2FsQ2x1c3RlcmluZzogaGllcmFyY2hpY2FsQ2x1c3RlcmluZyxcbiAgaGNhOiBoaWVyYXJjaGljYWxDbHVzdGVyaW5nXG59O1xuXG4vLyBJbXBsZW1lbnRlZCBieSBab2UgWGkgQHpvZXhpIGZvciBHU09DIDIwMTZcbnZhciBkZWZhdWx0cyQ3ID0gZGVmYXVsdHMoe1xuICBkaXN0YW5jZTogJ2V1Y2xpZGVhbicsXG4gIC8vIGRpc3RhbmNlIG1ldHJpYyB0byBjb21wYXJlIGF0dHJpYnV0ZXMgYmV0d2VlbiB0d28gbm9kZXNcbiAgcHJlZmVyZW5jZTogJ21lZGlhbicsXG4gIC8vIHN1aXRhYmlsaXR5IG9mIGEgZGF0YSBwb2ludCB0byBzZXJ2ZSBhcyBhbiBleGVtcGxhclxuICBkYW1waW5nOiAwLjgsXG4gIC8vIGRhbXBpbmcgZmFjdG9yIGJldHdlZW4gWzAuNSwgMSlcbiAgbWF4SXRlcmF0aW9uczogMTAwMCxcbiAgLy8gbWF4IG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHJ1blxuICBtaW5JdGVyYXRpb25zOiAxMDAsXG4gIC8vIG1pbiBudW1iZXIgb2YgaXRlcmF0aW9ucyB0byBydW4gaW4gb3JkZXIgZm9yIGNsdXN0ZXJpbmcgdG8gc3RvcFxuICBhdHRyaWJ1dGVzOiBbLy8gZnVuY3Rpb25zIHRvIHF1YW50aWZ5IHRoZSBzaW1pbGFyaXR5IGJldHdlZW4gYW55IHR3byBwb2ludHNcbiAgICAvLyBlLmcuIG5vZGUgPT4gbm9kZS5kYXRhKCd3ZWlnaHQnKVxuICBdXG59KTtcblxudmFyIHNldE9wdGlvbnMkMyA9IGZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgZG1wID0gb3B0aW9ucy5kYW1waW5nO1xuICB2YXIgcHJlZiA9IG9wdGlvbnMucHJlZmVyZW5jZTtcblxuICBpZiAoISgwLjUgPD0gZG1wICYmIGRtcCA8IDEpKSB7XG4gICAgZXJyb3IoXCJEYW1waW5nIG11c3QgcmFuZ2Ugb24gWzAuNSwgMSkuICBHb3Q6IFwiLmNvbmNhdChkbXApKTtcbiAgfVxuXG4gIHZhciB2YWxpZFByZWZzID0gWydtZWRpYW4nLCAnbWVhbicsICdtaW4nLCAnbWF4J107XG5cbiAgaWYgKCEodmFsaWRQcmVmcy5zb21lKGZ1bmN0aW9uICh2KSB7XG4gICAgcmV0dXJuIHYgPT09IHByZWY7XG4gIH0pIHx8IG51bWJlcihwcmVmKSkpIHtcbiAgICBlcnJvcihcIlByZWZlcmVuY2UgbXVzdCBiZSBvbmUgb2YgW1wiLmNvbmNhdCh2YWxpZFByZWZzLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIFwiJ1wiLmNvbmNhdChwLCBcIidcIik7XG4gICAgfSkuam9pbignLCAnKSwgXCJdIG9yIGEgbnVtYmVyLiAgR290OiBcIikuY29uY2F0KHByZWYpKTtcbiAgfVxuXG4gIHJldHVybiBkZWZhdWx0cyQ3KG9wdGlvbnMpO1xufTtcbi8qIGVzbGludC1lbmFibGUgKi9cblxuXG52YXIgZ2V0U2ltaWxhcml0eSQxID0gZnVuY3Rpb24gZ2V0U2ltaWxhcml0eSh0eXBlLCBuMSwgbjIsIGF0dHJpYnV0ZXMpIHtcbiAgdmFyIGF0dHIgPSBmdW5jdGlvbiBhdHRyKG4sIGkpIHtcbiAgICByZXR1cm4gYXR0cmlidXRlc1tpXShuKTtcbiAgfTsgLy8gbmIgbmVnYXRpdmUgYmVjYXVzZSBzaW1pbGFyaXR5IHNob3VsZCBoYXZlIGFuIGludmVyc2UgcmVsYXRpb25zaGlwIHRvIGRpc3RhbmNlXG5cblxuICByZXR1cm4gLWNsdXN0ZXJpbmdEaXN0YW5jZSh0eXBlLCBhdHRyaWJ1dGVzLmxlbmd0aCwgZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gYXR0cihuMSwgaSk7XG4gIH0sIGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIGF0dHIobjIsIGkpO1xuICB9LCBuMSwgbjIpO1xufTtcblxudmFyIGdldFByZWZlcmVuY2UgPSBmdW5jdGlvbiBnZXRQcmVmZXJlbmNlKFMsIHByZWZlcmVuY2UpIHtcbiAgLy8gbGFyZ2VyIHByZWZlcmVuY2UgPSBncmVhdGVyICMgb2YgY2x1c3RlcnNcbiAgdmFyIHAgPSBudWxsO1xuXG4gIGlmIChwcmVmZXJlbmNlID09PSAnbWVkaWFuJykge1xuICAgIHAgPSBtZWRpYW4oUyk7XG4gIH0gZWxzZSBpZiAocHJlZmVyZW5jZSA9PT0gJ21lYW4nKSB7XG4gICAgcCA9IG1lYW4oUyk7XG4gIH0gZWxzZSBpZiAocHJlZmVyZW5jZSA9PT0gJ21pbicpIHtcbiAgICBwID0gbWluKFMpO1xuICB9IGVsc2UgaWYgKHByZWZlcmVuY2UgPT09ICdtYXgnKSB7XG4gICAgcCA9IG1heChTKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDdXN0b20gcHJlZmVyZW5jZSBudW1iZXIsIGFzIHNldCBieSB1c2VyXG4gICAgcCA9IHByZWZlcmVuY2U7XG4gIH1cblxuICByZXR1cm4gcDtcbn07XG5cbnZhciBmaW5kRXhlbXBsYXJzID0gZnVuY3Rpb24gZmluZEV4ZW1wbGFycyhuLCBSLCBBKSB7XG4gIHZhciBpbmRpY2VzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBpZiAoUltpICogbiArIGldICsgQVtpICogbiArIGldID4gMCkge1xuICAgICAgaW5kaWNlcy5wdXNoKGkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmRpY2VzO1xufTtcblxudmFyIGFzc2lnbkNsdXN0ZXJzID0gZnVuY3Rpb24gYXNzaWduQ2x1c3RlcnMobiwgUywgZXhlbXBsYXJzKSB7XG4gIHZhciBjbHVzdGVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgdmFyIGluZGV4ID0gLTE7XG4gICAgdmFyIG1heCA9IC1JbmZpbml0eTtcblxuICAgIGZvciAodmFyIGVpID0gMDsgZWkgPCBleGVtcGxhcnMubGVuZ3RoOyBlaSsrKSB7XG4gICAgICB2YXIgZSA9IGV4ZW1wbGFyc1tlaV07XG5cbiAgICAgIGlmIChTW2kgKiBuICsgZV0gPiBtYXgpIHtcbiAgICAgICAgaW5kZXggPSBlO1xuICAgICAgICBtYXggPSBTW2kgKiBuICsgZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgY2x1c3RlcnMucHVzaChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgX2VpID0gMDsgX2VpIDwgZXhlbXBsYXJzLmxlbmd0aDsgX2VpKyspIHtcbiAgICBjbHVzdGVyc1tleGVtcGxhcnNbX2VpXV0gPSBleGVtcGxhcnNbX2VpXTtcbiAgfVxuXG4gIHJldHVybiBjbHVzdGVycztcbn07XG5cbnZhciBhc3NpZ24kMiA9IGZ1bmN0aW9uIGFzc2lnbihuLCBTLCBleGVtcGxhcnMpIHtcbiAgdmFyIGNsdXN0ZXJzID0gYXNzaWduQ2x1c3RlcnMobiwgUywgZXhlbXBsYXJzKTtcblxuICBmb3IgKHZhciBlaSA9IDA7IGVpIDwgZXhlbXBsYXJzLmxlbmd0aDsgZWkrKykge1xuICAgIHZhciBpaSA9IFtdO1xuXG4gICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjbHVzdGVycy5sZW5ndGg7IGMrKykge1xuICAgICAgaWYgKGNsdXN0ZXJzW2NdID09PSBleGVtcGxhcnNbZWldKSB7XG4gICAgICAgIGlpLnB1c2goYyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1heEkgPSAtMTtcbiAgICB2YXIgbWF4U3VtID0gLUluZmluaXR5O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpaS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHN1bSA9IDA7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaWkubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgc3VtICs9IFNbaWlbal0gKiBuICsgaWlbaV1dO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3VtID4gbWF4U3VtKSB7XG4gICAgICAgIG1heEkgPSBpO1xuICAgICAgICBtYXhTdW0gPSBzdW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgZXhlbXBsYXJzW2VpXSA9IGlpW21heEldO1xuICB9XG5cbiAgY2x1c3RlcnMgPSBhc3NpZ25DbHVzdGVycyhuLCBTLCBleGVtcGxhcnMpO1xuICByZXR1cm4gY2x1c3RlcnM7XG59O1xuXG52YXIgYWZmaW5pdHlQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uIGFmZmluaXR5UHJvcGFnYXRpb24ob3B0aW9ucykge1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDMob3B0aW9ucyk7IC8vIE1hcCBlYWNoIG5vZGUgdG8gaXRzIHBvc2l0aW9uIGluIG5vZGUgYXJyYXlcblxuICB2YXIgaWQycG9zaXRpb24gPSB7fTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWQycG9zaXRpb25bbm9kZXNbaV0uaWQoKV0gPSBpO1xuICB9IC8vIEJlZ2luIGFmZmluaXR5IHByb3BhZ2F0aW9uIGFsZ29yaXRobVxuXG5cbiAgdmFyIG47IC8vIG51bWJlciBvZiBkYXRhIHBvaW50c1xuXG4gIHZhciBuMjsgLy8gc2l6ZSBvZiBtYXRyaWNlc1xuXG4gIHZhciBTOyAvLyBzaW1pbGFyaXR5IG1hdHJpeCAoMUQgYXJyYXkpXG5cbiAgdmFyIHA7IC8vIHByZWZlcmVuY2Uvc3VpdGFiaWxpdHkgb2YgYSBkYXRhIHBvaW50IHRvIHNlcnZlIGFzIGFuIGV4ZW1wbGFyXG5cbiAgdmFyIFI7IC8vIHJlc3BvbnNpYmlsaXR5IG1hdHJpeCAoMUQgYXJyYXkpXG5cbiAgdmFyIEE7IC8vIGF2YWlsYWJpbGl0eSBtYXRyaXggKDFEIGFycmF5KVxuXG4gIG4gPSBub2Rlcy5sZW5ndGg7XG4gIG4yID0gbiAqIG47IC8vIEluaXRpYWxpemUgYW5kIGJ1aWxkIFMgc2ltaWxhcml0eSBtYXRyaXhcblxuICBTID0gbmV3IEFycmF5KG4yKTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbjI7IF9pKyspIHtcbiAgICBTW19pXSA9IC1JbmZpbml0eTsgLy8gZm9yIGNhc2VzIHdoZXJlIHR3byBkYXRhIHBvaW50cyBzaG91bGRuJ3QgYmUgbGlua2VkIHRvZ2V0aGVyXG4gIH1cblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBuOyBfaTIrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICBpZiAoX2kyICE9PSBqKSB7XG4gICAgICAgIFNbX2kyICogbiArIGpdID0gZ2V0U2ltaWxhcml0eSQxKG9wdHMuZGlzdGFuY2UsIG5vZGVzW19pMl0sIG5vZGVzW2pdLCBvcHRzLmF0dHJpYnV0ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBQbGFjZSBwcmVmZXJlbmNlcyBvbiB0aGUgZGlhZ29uYWwgb2YgU1xuXG5cbiAgcCA9IGdldFByZWZlcmVuY2UoUywgb3B0cy5wcmVmZXJlbmNlKTtcblxuICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBuOyBfaTMrKykge1xuICAgIFNbX2kzICogbiArIF9pM10gPSBwO1xuICB9IC8vIEluaXRpYWxpemUgUiByZXNwb25zaWJpbGl0eSBtYXRyaXhcblxuXG4gIFIgPSBuZXcgQXJyYXkobjIpO1xuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG4yOyBfaTQrKykge1xuICAgIFJbX2k0XSA9IDAuMDtcbiAgfSAvLyBJbml0aWFsaXplIEEgYXZhaWxhYmlsaXR5IG1hdHJpeFxuXG5cbiAgQSA9IG5ldyBBcnJheShuMik7XG5cbiAgZm9yICh2YXIgX2k1ID0gMDsgX2k1IDwgbjI7IF9pNSsrKSB7XG4gICAgQVtfaTVdID0gMC4wO1xuICB9XG5cbiAgdmFyIG9sZCA9IG5ldyBBcnJheShuKTtcbiAgdmFyIFJwID0gbmV3IEFycmF5KG4pO1xuICB2YXIgc2UgPSBuZXcgQXJyYXkobik7XG5cbiAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgbjsgX2k2KyspIHtcbiAgICBvbGRbX2k2XSA9IDAuMDtcbiAgICBScFtfaTZdID0gMC4wO1xuICAgIHNlW19pNl0gPSAwO1xuICB9XG5cbiAgdmFyIGUgPSBuZXcgQXJyYXkobiAqIG9wdHMubWluSXRlcmF0aW9ucyk7XG5cbiAgZm9yICh2YXIgX2k3ID0gMDsgX2k3IDwgZS5sZW5ndGg7IF9pNysrKSB7XG4gICAgZVtfaTddID0gMDtcbiAgfVxuXG4gIHZhciBpdGVyO1xuXG4gIGZvciAoaXRlciA9IDA7IGl0ZXIgPCBvcHRzLm1heEl0ZXJhdGlvbnM7IGl0ZXIrKykge1xuICAgIC8vIG1haW4gYWxnb3JpdGhtaWMgbG9vcFxuICAgIC8vIFVwZGF0ZSBSIHJlc3BvbnNpYmlsaXR5IG1hdHJpeFxuICAgIGZvciAodmFyIF9pOCA9IDA7IF9pOCA8IG47IF9pOCsrKSB7XG4gICAgICB2YXIgbWF4ID0gLUluZmluaXR5LFxuICAgICAgICAgIG1heDIgPSAtSW5maW5pdHksXG4gICAgICAgICAgbWF4SSA9IC0xLFxuICAgICAgICAgIEFTID0gMC4wO1xuXG4gICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgbjsgX2orKykge1xuICAgICAgICBvbGRbX2pdID0gUltfaTggKiBuICsgX2pdO1xuICAgICAgICBBUyA9IEFbX2k4ICogbiArIF9qXSArIFNbX2k4ICogbiArIF9qXTtcblxuICAgICAgICBpZiAoQVMgPj0gbWF4KSB7XG4gICAgICAgICAgbWF4MiA9IG1heDtcbiAgICAgICAgICBtYXggPSBBUztcbiAgICAgICAgICBtYXhJID0gX2o7XG4gICAgICAgIH0gZWxzZSBpZiAoQVMgPiBtYXgyKSB7XG4gICAgICAgICAgbWF4MiA9IEFTO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIF9qMiA9IDA7IF9qMiA8IG47IF9qMisrKSB7XG4gICAgICAgIFJbX2k4ICogbiArIF9qMl0gPSAoMSAtIG9wdHMuZGFtcGluZykgKiAoU1tfaTggKiBuICsgX2oyXSAtIG1heCkgKyBvcHRzLmRhbXBpbmcgKiBvbGRbX2oyXTtcbiAgICAgIH1cblxuICAgICAgUltfaTggKiBuICsgbWF4SV0gPSAoMSAtIG9wdHMuZGFtcGluZykgKiAoU1tfaTggKiBuICsgbWF4SV0gLSBtYXgyKSArIG9wdHMuZGFtcGluZyAqIG9sZFttYXhJXTtcbiAgICB9IC8vIFVwZGF0ZSBBIGF2YWlsYWJpbGl0eSBtYXRyaXhcblxuXG4gICAgZm9yICh2YXIgX2k5ID0gMDsgX2k5IDwgbjsgX2k5KyspIHtcbiAgICAgIHZhciBzdW0gPSAwO1xuXG4gICAgICBmb3IgKHZhciBfajMgPSAwOyBfajMgPCBuOyBfajMrKykge1xuICAgICAgICBvbGRbX2ozXSA9IEFbX2ozICogbiArIF9pOV07XG4gICAgICAgIFJwW19qM10gPSBNYXRoLm1heCgwLCBSW19qMyAqIG4gKyBfaTldKTtcbiAgICAgICAgc3VtICs9IFJwW19qM107XG4gICAgICB9XG5cbiAgICAgIHN1bSAtPSBScFtfaTldO1xuICAgICAgUnBbX2k5XSA9IFJbX2k5ICogbiArIF9pOV07XG4gICAgICBzdW0gKz0gUnBbX2k5XTtcblxuICAgICAgZm9yICh2YXIgX2o0ID0gMDsgX2o0IDwgbjsgX2o0KyspIHtcbiAgICAgICAgQVtfajQgKiBuICsgX2k5XSA9ICgxIC0gb3B0cy5kYW1waW5nKSAqIE1hdGgubWluKDAsIHN1bSAtIFJwW19qNF0pICsgb3B0cy5kYW1waW5nICogb2xkW19qNF07XG4gICAgICB9XG5cbiAgICAgIEFbX2k5ICogbiArIF9pOV0gPSAoMSAtIG9wdHMuZGFtcGluZykgKiAoc3VtIC0gUnBbX2k5XSkgKyBvcHRzLmRhbXBpbmcgKiBvbGRbX2k5XTtcbiAgICB9IC8vIENoZWNrIGZvciBjb252ZXJnZW5jZVxuXG5cbiAgICB2YXIgSyA9IDA7XG5cbiAgICBmb3IgKHZhciBfaTEwID0gMDsgX2kxMCA8IG47IF9pMTArKykge1xuICAgICAgdmFyIEUgPSBBW19pMTAgKiBuICsgX2kxMF0gKyBSW19pMTAgKiBuICsgX2kxMF0gPiAwID8gMSA6IDA7XG4gICAgICBlW2l0ZXIgJSBvcHRzLm1pbkl0ZXJhdGlvbnMgKiBuICsgX2kxMF0gPSBFO1xuICAgICAgSyArPSBFO1xuICAgIH1cblxuICAgIGlmIChLID4gMCAmJiAoaXRlciA+PSBvcHRzLm1pbkl0ZXJhdGlvbnMgLSAxIHx8IGl0ZXIgPT0gb3B0cy5tYXhJdGVyYXRpb25zIC0gMSkpIHtcbiAgICAgIHZhciBfc3VtID0gMDtcblxuICAgICAgZm9yICh2YXIgX2kxMSA9IDA7IF9pMTEgPCBuOyBfaTExKyspIHtcbiAgICAgICAgc2VbX2kxMV0gPSAwO1xuXG4gICAgICAgIGZvciAodmFyIF9qNSA9IDA7IF9qNSA8IG9wdHMubWluSXRlcmF0aW9uczsgX2o1KyspIHtcbiAgICAgICAgICBzZVtfaTExXSArPSBlW19qNSAqIG4gKyBfaTExXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZVtfaTExXSA9PT0gMCB8fCBzZVtfaTExXSA9PT0gb3B0cy5taW5JdGVyYXRpb25zKSB7XG4gICAgICAgICAgX3N1bSsrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChfc3VtID09PSBuKSB7XG4gICAgICAgIC8vIHRoZW4gd2UgaGF2ZSBjb252ZXJnZW5jZVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gSWRlbnRpZnkgZXhlbXBsYXJzIChjbHVzdGVyIGNlbnRlcnMpXG5cblxuICB2YXIgZXhlbXBsYXJzSW5kaWNlcyA9IGZpbmRFeGVtcGxhcnMobiwgUiwgQSk7IC8vIEFzc2lnbiBub2RlcyB0byBjbHVzdGVyc1xuXG4gIHZhciBjbHVzdGVySW5kaWNlcyA9IGFzc2lnbiQyKG4sIFMsIGV4ZW1wbGFyc0luZGljZXMpO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcblxuICBmb3IgKHZhciBjID0gMDsgYyA8IGV4ZW1wbGFyc0luZGljZXMubGVuZ3RoOyBjKyspIHtcbiAgICBjbHVzdGVyc1tleGVtcGxhcnNJbmRpY2VzW2NdXSA9IFtdO1xuICB9XG5cbiAgZm9yICh2YXIgX2kxMiA9IDA7IF9pMTIgPCBub2Rlcy5sZW5ndGg7IF9pMTIrKykge1xuICAgIHZhciBwb3MgPSBpZDJwb3NpdGlvbltub2Rlc1tfaTEyXS5pZCgpXTtcblxuICAgIHZhciBjbHVzdGVySW5kZXggPSBjbHVzdGVySW5kaWNlc1twb3NdO1xuXG4gICAgaWYgKGNsdXN0ZXJJbmRleCAhPSBudWxsKSB7XG4gICAgICAvLyB0aGUgbm9kZSBtYXkgaGF2ZSBub3QgYmVlbiBhc3NpZ25lZCBhIGNsdXN0ZXIgaWYgbm8gdmFsaWQgYXR0cmlidXRlcyB3ZXJlIHNwZWNpZmllZFxuICAgICAgY2x1c3RlcnNbY2x1c3RlckluZGV4XS5wdXNoKG5vZGVzW19pMTJdKTtcbiAgICB9XG4gIH1cblxuICB2YXIgcmV0Q2x1c3RlcnMgPSBuZXcgQXJyYXkoZXhlbXBsYXJzSW5kaWNlcy5sZW5ndGgpO1xuXG4gIGZvciAodmFyIF9jID0gMDsgX2MgPCBleGVtcGxhcnNJbmRpY2VzLmxlbmd0aDsgX2MrKykge1xuICAgIHJldENsdXN0ZXJzW19jXSA9IGN5LmNvbGxlY3Rpb24oY2x1c3RlcnNbZXhlbXBsYXJzSW5kaWNlc1tfY11dKTtcbiAgfVxuXG4gIHJldHVybiByZXRDbHVzdGVycztcbn07XG5cbnZhciBhZmZpbml0eVByb3BhZ2F0aW9uJDEgPSB7XG4gIGFmZmluaXR5UHJvcGFnYXRpb246IGFmZmluaXR5UHJvcGFnYXRpb24sXG4gIGFwOiBhZmZpbml0eVByb3BhZ2F0aW9uXG59O1xuXG52YXIgaGllcmhvbHplckRlZmF1bHRzID0gZGVmYXVsdHMoe1xuICByb290OiB1bmRlZmluZWQsXG4gIGRpcmVjdGVkOiBmYWxzZVxufSk7XG52YXIgZWxlc2ZuJGIgPSB7XG4gIGhpZXJob2x6ZXI6IGZ1bmN0aW9uIGhpZXJob2x6ZXIob3B0aW9ucykge1xuICAgIGlmICghcGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgcm9vdDogYXJnc1swXSxcbiAgICAgICAgZGlyZWN0ZWQ6IGFyZ3NbMV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIF9oaWVyaG9semVyRGVmYXVsdHMgPSBoaWVyaG9semVyRGVmYXVsdHMob3B0aW9ucyksXG4gICAgICAgIHJvb3QgPSBfaGllcmhvbHplckRlZmF1bHRzLnJvb3QsXG4gICAgICAgIGRpcmVjdGVkID0gX2hpZXJob2x6ZXJEZWZhdWx0cy5kaXJlY3RlZDtcblxuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIgZGZsYWcgPSBmYWxzZTtcbiAgICB2YXIgb2RkSW47XG4gICAgdmFyIG9kZE91dDtcbiAgICB2YXIgc3RhcnRWZXJ0ZXg7XG4gICAgaWYgKHJvb3QpIHN0YXJ0VmVydGV4ID0gc3RyaW5nKHJvb3QpID8gdGhpcy5maWx0ZXIocm9vdClbMF0uaWQoKSA6IHJvb3RbMF0uaWQoKTtcbiAgICB2YXIgbm9kZXMgPSB7fTtcbiAgICB2YXIgZWRnZXMgPSB7fTtcblxuICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgZWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgdmFyIGlkID0gZWxlLmlkKCk7XG5cbiAgICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAgIHZhciBpbmQgPSBlbGUuaW5kZWdyZWUodHJ1ZSk7XG4gICAgICAgICAgdmFyIG91dGQgPSBlbGUub3V0ZGVncmVlKHRydWUpO1xuICAgICAgICAgIHZhciBkMSA9IGluZCAtIG91dGQ7XG4gICAgICAgICAgdmFyIGQyID0gb3V0ZCAtIGluZDtcblxuICAgICAgICAgIGlmIChkMSA9PSAxKSB7XG4gICAgICAgICAgICBpZiAob2RkSW4pIGRmbGFnID0gdHJ1ZTtlbHNlIG9kZEluID0gaWQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChkMiA9PSAxKSB7XG4gICAgICAgICAgICBpZiAob2RkT3V0KSBkZmxhZyA9IHRydWU7ZWxzZSBvZGRPdXQgPSBpZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGQyID4gMSB8fCBkMSA+IDEpIHtcbiAgICAgICAgICAgIGRmbGFnID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBub2Rlc1tpZF0gPSBbXTtcbiAgICAgICAgICBlbGUub3V0Z29lcnMoKS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBpZiAoZS5pc0VkZ2UoKSkgbm9kZXNbaWRdLnB1c2goZS5pZCgpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlZGdlc1tpZF0gPSBbdW5kZWZpbmVkLCBlbGUudGFyZ2V0KCkuaWQoKV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICB2YXIgaWQgPSBlbGUuaWQoKTtcblxuICAgICAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgICAgdmFyIGQgPSBlbGUuZGVncmVlKHRydWUpO1xuXG4gICAgICAgICAgaWYgKGQgJSAyKSB7XG4gICAgICAgICAgICBpZiAoIW9kZEluKSBvZGRJbiA9IGlkO2Vsc2UgaWYgKCFvZGRPdXQpIG9kZE91dCA9IGlkO2Vsc2UgZGZsYWcgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGVzW2lkXSA9IFtdO1xuICAgICAgICAgIGVsZS5jb25uZWN0ZWRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBub2Rlc1tpZF0ucHVzaChlLmlkKCkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVkZ2VzW2lkXSA9IFtlbGUuc291cmNlKCkuaWQoKSwgZWxlLnRhcmdldCgpLmlkKCldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgZm91bmQ6IGZhbHNlLFxuICAgICAgdHJhaWw6IHVuZGVmaW5lZFxuICAgIH07XG4gICAgaWYgKGRmbGFnKSByZXR1cm4gcmVzdWx0O2Vsc2UgaWYgKG9kZE91dCAmJiBvZGRJbikge1xuICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgIGlmIChzdGFydFZlcnRleCAmJiBvZGRPdXQgIT0gc3RhcnRWZXJ0ZXgpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnRWZXJ0ZXggPSBvZGRPdXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RhcnRWZXJ0ZXggJiYgb2RkT3V0ICE9IHN0YXJ0VmVydGV4ICYmIG9kZEluICE9IHN0YXJ0VmVydGV4KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIGlmICghc3RhcnRWZXJ0ZXgpIHtcbiAgICAgICAgICBzdGFydFZlcnRleCA9IG9kZE91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXN0YXJ0VmVydGV4KSBzdGFydFZlcnRleCA9IGVsZXNbMF0uaWQoKTtcbiAgICB9XG5cbiAgICB2YXIgd2FsayA9IGZ1bmN0aW9uIHdhbGsodikge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gdjtcbiAgICAgIHZhciBzdWJ0b3VyID0gW3ZdO1xuICAgICAgdmFyIGFkaiwgYWRqVGFpbCwgYWRqSGVhZDtcblxuICAgICAgd2hpbGUgKG5vZGVzW2N1cnJlbnROb2RlXS5sZW5ndGgpIHtcbiAgICAgICAgYWRqID0gbm9kZXNbY3VycmVudE5vZGVdLnNoaWZ0KCk7XG4gICAgICAgIGFkalRhaWwgPSBlZGdlc1thZGpdWzBdO1xuICAgICAgICBhZGpIZWFkID0gZWRnZXNbYWRqXVsxXTtcblxuICAgICAgICBpZiAoY3VycmVudE5vZGUgIT0gYWRqSGVhZCkge1xuICAgICAgICAgIG5vZGVzW2FkakhlYWRdID0gbm9kZXNbYWRqSGVhZF0uZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZSAhPSBhZGo7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY3VycmVudE5vZGUgPSBhZGpIZWFkO1xuICAgICAgICB9IGVsc2UgaWYgKCFkaXJlY3RlZCAmJiBjdXJyZW50Tm9kZSAhPSBhZGpUYWlsKSB7XG4gICAgICAgICAgbm9kZXNbYWRqVGFpbF0gPSBub2Rlc1thZGpUYWlsXS5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBlICE9IGFkajtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjdXJyZW50Tm9kZSA9IGFkalRhaWw7XG4gICAgICAgIH1cblxuICAgICAgICBzdWJ0b3VyLnVuc2hpZnQoYWRqKTtcbiAgICAgICAgc3VidG91ci51bnNoaWZ0KGN1cnJlbnROb2RlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN1YnRvdXI7XG4gICAgfTtcblxuICAgIHZhciB0cmFpbCA9IFtdO1xuICAgIHZhciBzdWJ0b3VyID0gW107XG4gICAgc3VidG91ciA9IHdhbGsoc3RhcnRWZXJ0ZXgpO1xuXG4gICAgd2hpbGUgKHN1YnRvdXIubGVuZ3RoICE9IDEpIHtcbiAgICAgIGlmIChub2Rlc1tzdWJ0b3VyWzBdXS5sZW5ndGggPT0gMCkge1xuICAgICAgICB0cmFpbC51bnNoaWZ0KGVsZXMuZ2V0RWxlbWVudEJ5SWQoc3VidG91ci5zaGlmdCgpKSk7XG4gICAgICAgIHRyYWlsLnVuc2hpZnQoZWxlcy5nZXRFbGVtZW50QnlJZChzdWJ0b3VyLnNoaWZ0KCkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnRvdXIgPSB3YWxrKHN1YnRvdXIuc2hpZnQoKSkuY29uY2F0KHN1YnRvdXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyYWlsLnVuc2hpZnQoZWxlcy5nZXRFbGVtZW50QnlJZChzdWJ0b3VyLnNoaWZ0KCkpKTsgLy8gZmluYWwgbm9kZVxuXG4gICAgZm9yICh2YXIgZCBpbiBub2Rlcykge1xuICAgICAgaWYgKG5vZGVzW2RdLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlc3VsdC5mb3VuZCA9IHRydWU7XG4gICAgcmVzdWx0LnRyYWlsID0gdGhpcy5zcGF3bih0cmFpbCwgdHJ1ZSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcblxudmFyIGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQgPSBmdW5jdGlvbiBob3Bjcm9mdFRhcmphbkJpY29ubmVjdGVkKCkge1xuICB2YXIgZWxlcyA9IHRoaXM7XG4gIHZhciBub2RlcyA9IHt9O1xuICB2YXIgaWQgPSAwO1xuICB2YXIgZWRnZUNvdW50ID0gMDtcbiAgdmFyIGNvbXBvbmVudHMgPSBbXTtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciB2aXNpdGVkRWRnZXMgPSB7fTtcblxuICB2YXIgYnVpbGRDb21wb25lbnQgPSBmdW5jdGlvbiBidWlsZENvbXBvbmVudCh4LCB5KSB7XG4gICAgdmFyIGkgPSBzdGFjay5sZW5ndGggLSAxO1xuICAgIHZhciBjdXRzZXQgPSBbXTtcbiAgICB2YXIgY29tcG9uZW50ID0gZWxlcy5zcGF3bigpO1xuXG4gICAgd2hpbGUgKHN0YWNrW2ldLnggIT0geCB8fCBzdGFja1tpXS55ICE9IHkpIHtcbiAgICAgIGN1dHNldC5wdXNoKHN0YWNrLnBvcCgpLmVkZ2UpO1xuICAgICAgaS0tO1xuICAgIH1cblxuICAgIGN1dHNldC5wdXNoKHN0YWNrLnBvcCgpLmVkZ2UpO1xuICAgIGN1dHNldC5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgY29ubmVjdGVkTm9kZXMgPSBlZGdlLmNvbm5lY3RlZE5vZGVzKCkuaW50ZXJzZWN0aW9uKGVsZXMpO1xuICAgICAgY29tcG9uZW50Lm1lcmdlKGVkZ2UpO1xuICAgICAgY29ubmVjdGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgbm9kZUlkID0gbm9kZS5pZCgpO1xuICAgICAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLmNvbm5lY3RlZEVkZ2VzKCkuaW50ZXJzZWN0aW9uKGVsZXMpO1xuICAgICAgICBjb21wb25lbnQubWVyZ2Uobm9kZSk7XG5cbiAgICAgICAgaWYgKCFub2Rlc1tub2RlSWRdLmN1dFZlcnRleCkge1xuICAgICAgICAgIGNvbXBvbmVudC5tZXJnZShjb25uZWN0ZWRFZGdlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tcG9uZW50Lm1lcmdlKGNvbm5lY3RlZEVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVkZ2UuaXNMb29wKCk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgfTtcblxuICB2YXIgYmljb25uZWN0ZWRTZWFyY2ggPSBmdW5jdGlvbiBiaWNvbm5lY3RlZFNlYXJjaChyb290LCBjdXJyZW50Tm9kZSwgcGFyZW50KSB7XG4gICAgaWYgKHJvb3QgPT09IHBhcmVudCkgZWRnZUNvdW50ICs9IDE7XG4gICAgbm9kZXNbY3VycmVudE5vZGVdID0ge1xuICAgICAgaWQ6IGlkLFxuICAgICAgbG93OiBpZCsrLFxuICAgICAgY3V0VmVydGV4OiBmYWxzZVxuICAgIH07XG4gICAgdmFyIGVkZ2VzID0gZWxlcy5nZXRFbGVtZW50QnlJZChjdXJyZW50Tm9kZSkuY29ubmVjdGVkRWRnZXMoKS5pbnRlcnNlY3Rpb24oZWxlcyk7XG5cbiAgICBpZiAoZWRnZXMuc2l6ZSgpID09PSAwKSB7XG4gICAgICBjb21wb25lbnRzLnB1c2goZWxlcy5zcGF3bihlbGVzLmdldEVsZW1lbnRCeUlkKGN1cnJlbnROb2RlKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc291cmNlSWQsIHRhcmdldElkLCBvdGhlck5vZGVJZCwgZWRnZUlkO1xuICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICBzb3VyY2VJZCA9IGVkZ2Uuc291cmNlKCkuaWQoKTtcbiAgICAgICAgdGFyZ2V0SWQgPSBlZGdlLnRhcmdldCgpLmlkKCk7XG4gICAgICAgIG90aGVyTm9kZUlkID0gc291cmNlSWQgPT09IGN1cnJlbnROb2RlID8gdGFyZ2V0SWQgOiBzb3VyY2VJZDtcblxuICAgICAgICBpZiAob3RoZXJOb2RlSWQgIT09IHBhcmVudCkge1xuICAgICAgICAgIGVkZ2VJZCA9IGVkZ2UuaWQoKTtcblxuICAgICAgICAgIGlmICghdmlzaXRlZEVkZ2VzW2VkZ2VJZF0pIHtcbiAgICAgICAgICAgIHZpc2l0ZWRFZGdlc1tlZGdlSWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICB4OiBjdXJyZW50Tm9kZSxcbiAgICAgICAgICAgICAgeTogb3RoZXJOb2RlSWQsXG4gICAgICAgICAgICAgIGVkZ2U6IGVkZ2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghKG90aGVyTm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICAgICAgYmljb25uZWN0ZWRTZWFyY2gocm9vdCwgb3RoZXJOb2RlSWQsIGN1cnJlbnROb2RlKTtcbiAgICAgICAgICAgIG5vZGVzW2N1cnJlbnROb2RlXS5sb3cgPSBNYXRoLm1pbihub2Rlc1tjdXJyZW50Tm9kZV0ubG93LCBub2Rlc1tvdGhlck5vZGVJZF0ubG93KTtcblxuICAgICAgICAgICAgaWYgKG5vZGVzW2N1cnJlbnROb2RlXS5pZCA8PSBub2Rlc1tvdGhlck5vZGVJZF0ubG93KSB7XG4gICAgICAgICAgICAgIG5vZGVzW2N1cnJlbnROb2RlXS5jdXRWZXJ0ZXggPSB0cnVlO1xuICAgICAgICAgICAgICBidWlsZENvbXBvbmVudChjdXJyZW50Tm9kZSwgb3RoZXJOb2RlSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub2Rlc1tjdXJyZW50Tm9kZV0ubG93ID0gTWF0aC5taW4obm9kZXNbY3VycmVudE5vZGVdLmxvdywgbm9kZXNbb3RoZXJOb2RlSWRdLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIHZhciBub2RlSWQgPSBlbGUuaWQoKTtcblxuICAgICAgaWYgKCEobm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICBlZGdlQ291bnQgPSAwO1xuICAgICAgICBiaWNvbm5lY3RlZFNlYXJjaChub2RlSWQsIG5vZGVJZCk7XG4gICAgICAgIG5vZGVzW25vZGVJZF0uY3V0VmVydGV4ID0gZWRnZUNvdW50ID4gMTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICB2YXIgY3V0VmVydGljZXMgPSBPYmplY3Qua2V5cyhub2RlcykuZmlsdGVyKGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiBub2Rlc1tpZF0uY3V0VmVydGV4O1xuICB9KS5tYXAoZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIGVsZXMuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBjdXQ6IGVsZXMuc3Bhd24oY3V0VmVydGljZXMpLFxuICAgIGNvbXBvbmVudHM6IGNvbXBvbmVudHNcbiAgfTtcbn07XG5cbnZhciBob3Bjcm9mdFRhcmphbkJpY29ubmVjdGVkJDEgPSB7XG4gIGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQ6IGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQsXG4gIGh0YmM6IGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQsXG4gIGh0YjogaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZCxcbiAgaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZENvbXBvbmVudHM6IGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWRcbn07XG5cbnZhciB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZCA9IGZ1bmN0aW9uIHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkKCkge1xuICB2YXIgZWxlcyA9IHRoaXM7XG4gIHZhciBub2RlcyA9IHt9O1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgY29tcG9uZW50cyA9IFtdO1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGN1dCA9IGVsZXMuc3Bhd24oZWxlcyk7XG5cbiAgdmFyIHN0cm9uZ2x5Q29ubmVjdGVkU2VhcmNoID0gZnVuY3Rpb24gc3Ryb25nbHlDb25uZWN0ZWRTZWFyY2goc291cmNlTm9kZUlkKSB7XG4gICAgc3RhY2sucHVzaChzb3VyY2VOb2RlSWQpO1xuICAgIG5vZGVzW3NvdXJjZU5vZGVJZF0gPSB7XG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICBsb3c6IGluZGV4KyssXG4gICAgICBleHBsb3JlZDogZmFsc2VcbiAgICB9O1xuICAgIHZhciBjb25uZWN0ZWRFZGdlcyA9IGVsZXMuZ2V0RWxlbWVudEJ5SWQoc291cmNlTm9kZUlkKS5jb25uZWN0ZWRFZGdlcygpLmludGVyc2VjdGlvbihlbGVzKTtcbiAgICBjb25uZWN0ZWRFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgdGFyZ2V0Tm9kZUlkID0gZWRnZS50YXJnZXQoKS5pZCgpO1xuXG4gICAgICBpZiAodGFyZ2V0Tm9kZUlkICE9PSBzb3VyY2VOb2RlSWQpIHtcbiAgICAgICAgaWYgKCEodGFyZ2V0Tm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICAgIHN0cm9uZ2x5Q29ubmVjdGVkU2VhcmNoKHRhcmdldE5vZGVJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5vZGVzW3RhcmdldE5vZGVJZF0uZXhwbG9yZWQpIHtcbiAgICAgICAgICBub2Rlc1tzb3VyY2VOb2RlSWRdLmxvdyA9IE1hdGgubWluKG5vZGVzW3NvdXJjZU5vZGVJZF0ubG93LCBub2Rlc1t0YXJnZXROb2RlSWRdLmxvdyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChub2Rlc1tzb3VyY2VOb2RlSWRdLmluZGV4ID09PSBub2Rlc1tzb3VyY2VOb2RlSWRdLmxvdykge1xuICAgICAgdmFyIGNvbXBvbmVudE5vZGVzID0gZWxlcy5zcGF3bigpO1xuXG4gICAgICBmb3IgKDs7KSB7XG4gICAgICAgIHZhciBub2RlSWQgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgY29tcG9uZW50Tm9kZXMubWVyZ2UoZWxlcy5nZXRFbGVtZW50QnlJZChub2RlSWQpKTtcbiAgICAgICAgbm9kZXNbbm9kZUlkXS5sb3cgPSBub2Rlc1tzb3VyY2VOb2RlSWRdLmluZGV4O1xuICAgICAgICBub2Rlc1tub2RlSWRdLmV4cGxvcmVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAobm9kZUlkID09PSBzb3VyY2VOb2RlSWQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgY29tcG9uZW50RWRnZXMgPSBjb21wb25lbnROb2Rlcy5lZGdlc1dpdGgoY29tcG9uZW50Tm9kZXMpO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudE5vZGVzLm1lcmdlKGNvbXBvbmVudEVkZ2VzKTtcbiAgICAgIGNvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgY3V0ID0gY3V0LmRpZmZlcmVuY2UoY29tcG9uZW50KTtcbiAgICB9XG4gIH07XG5cbiAgZWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICB2YXIgbm9kZUlkID0gZWxlLmlkKCk7XG5cbiAgICAgIGlmICghKG5vZGVJZCBpbiBub2RlcykpIHtcbiAgICAgICAgc3Ryb25nbHlDb25uZWN0ZWRTZWFyY2gobm9kZUlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGN1dDogY3V0LFxuICAgIGNvbXBvbmVudHM6IGNvbXBvbmVudHNcbiAgfTtcbn07XG5cbnZhciB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZCQxID0ge1xuICB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZDogdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQsXG4gIHRzYzogdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQsXG4gIHRzY2M6IHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkLFxuICB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHM6IHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkXG59O1xuXG52YXIgZWxlc2ZuJGMgPSB7fTtcbltlbGVzZm4sIGVsZXNmbiQxLCBlbGVzZm4kMiwgZWxlc2ZuJDMsIGVsZXNmbiQ0LCBlbGVzZm4kNSwgZWxlc2ZuJDYsIGVsZXNmbiQ3LCBlbGVzZm4kOCwgZWxlc2ZuJDksIGVsZXNmbiRhLCBtYXJrb3ZDbHVzdGVyaW5nJDEsIGtDbHVzdGVyaW5nLCBoaWVyYXJjaGljYWxDbHVzdGVyaW5nJDEsIGFmZmluaXR5UHJvcGFnYXRpb24kMSwgZWxlc2ZuJGIsIGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQkMSwgdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQkMV0uZm9yRWFjaChmdW5jdGlvbiAocHJvcHMpIHtcbiAgZXh0ZW5kKGVsZXNmbiRjLCBwcm9wcyk7XG59KTtcblxuLyohXG5FbWJlZGRhYmxlIE1pbmltdW0gU3RyaWN0bHktQ29tcGxpYW50IFByb21pc2VzL0ErIDEuMS4xIFRoZW5hYmxlXG5Db3B5cmlnaHQgKGMpIDIwMTMtMjAxNCBSYWxmIFMuIEVuZ2Vsc2NoYWxsIChodHRwOi8vZW5nZWxzY2hhbGwuY29tKVxuTGljZW5zZWQgdW5kZXIgVGhlIE1JVCBMaWNlbnNlIChodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKVxuKi9cblxuLyogIHByb21pc2Ugc3RhdGVzIFtQcm9taXNlcy9BKyAyLjFdICAqL1xudmFyIFNUQVRFX1BFTkRJTkcgPSAwO1xuLyogIFtQcm9taXNlcy9BKyAyLjEuMV0gICovXG5cbnZhciBTVEFURV9GVUxGSUxMRUQgPSAxO1xuLyogIFtQcm9taXNlcy9BKyAyLjEuMl0gICovXG5cbnZhciBTVEFURV9SRUpFQ1RFRCA9IDI7XG4vKiAgW1Byb21pc2VzL0ErIDIuMS4zXSAgKi9cblxuLyogIHByb21pc2Ugb2JqZWN0IGNvbnN0cnVjdG9yICAqL1xuXG52YXIgYXBpID0gZnVuY3Rpb24gYXBpKGV4ZWN1dG9yKSB7XG4gIC8qICBvcHRpb25hbGx5IHN1cHBvcnQgbm9uLWNvbnN0cnVjdG9yL3BsYWluLWZ1bmN0aW9uIGNhbGwgICovXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBhcGkpKSByZXR1cm4gbmV3IGFwaShleGVjdXRvcik7XG4gIC8qICBpbml0aWFsaXplIG9iamVjdCAgKi9cblxuICB0aGlzLmlkID0gJ1RoZW5hYmxlLzEuMC43JztcbiAgdGhpcy5zdGF0ZSA9IFNUQVRFX1BFTkRJTkc7XG4gIC8qICBpbml0aWFsIHN0YXRlICAqL1xuXG4gIHRoaXMuZnVsZmlsbFZhbHVlID0gdW5kZWZpbmVkO1xuICAvKiAgaW5pdGlhbCB2YWx1ZSAgKi9cblxuICAvKiAgW1Byb21pc2VzL0ErIDEuMywgMi4xLjIuMl0gICovXG5cbiAgdGhpcy5yZWplY3RSZWFzb24gPSB1bmRlZmluZWQ7XG4gIC8qICBpbml0aWFsIHJlYXNvbiAqL1xuXG4gIC8qICBbUHJvbWlzZXMvQSsgMS41LCAyLjEuMy4yXSAgKi9cblxuICB0aGlzLm9uRnVsZmlsbGVkID0gW107XG4gIC8qICBpbml0aWFsIGhhbmRsZXJzICAqL1xuXG4gIHRoaXMub25SZWplY3RlZCA9IFtdO1xuICAvKiAgaW5pdGlhbCBoYW5kbGVycyAgKi9cblxuICAvKiAgcHJvdmlkZSBvcHRpb25hbCBpbmZvcm1hdGlvbi1oaWRpbmcgcHJveHkgICovXG5cbiAgdGhpcy5wcm94eSA9IHtcbiAgICB0aGVuOiB0aGlzLnRoZW4uYmluZCh0aGlzKVxuICB9O1xuICAvKiAgc3VwcG9ydCBvcHRpb25hbCBleGVjdXRvciBmdW5jdGlvbiAgKi9cblxuICBpZiAodHlwZW9mIGV4ZWN1dG9yID09PSAnZnVuY3Rpb24nKSBleGVjdXRvci5jYWxsKHRoaXMsIHRoaXMuZnVsZmlsbC5iaW5kKHRoaXMpLCB0aGlzLnJlamVjdC5iaW5kKHRoaXMpKTtcbn07XG4vKiAgcHJvbWlzZSBBUEkgbWV0aG9kcyAgKi9cblxuXG5hcGkucHJvdG90eXBlID0ge1xuICAvKiAgcHJvbWlzZSByZXNvbHZpbmcgbWV0aG9kcyAgKi9cbiAgZnVsZmlsbDogZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkge1xuICAgIHJldHVybiBkZWxpdmVyKHRoaXMsIFNUQVRFX0ZVTEZJTExFRCwgJ2Z1bGZpbGxWYWx1ZScsIHZhbHVlKTtcbiAgfSxcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gZGVsaXZlcih0aGlzLCBTVEFURV9SRUpFQ1RFRCwgJ3JlamVjdFJlYXNvbicsIHZhbHVlKTtcbiAgfSxcblxuICAvKiAgXCJUaGUgdGhlbiBNZXRob2RcIiBbUHJvbWlzZXMvQSsgMS4xLCAxLjIsIDIuMl0gICovXG4gIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICB2YXIgY3VyciA9IHRoaXM7XG4gICAgdmFyIG5leHQgPSBuZXcgYXBpKCk7XG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjIuN10gICovXG5cbiAgICBjdXJyLm9uRnVsZmlsbGVkLnB1c2gocmVzb2x2ZXIob25GdWxmaWxsZWQsIG5leHQsICdmdWxmaWxsJykpO1xuICAgIC8qICBbUHJvbWlzZXMvQSsgMi4yLjIvMi4yLjZdICAqL1xuXG4gICAgY3Vyci5vblJlamVjdGVkLnB1c2gocmVzb2x2ZXIob25SZWplY3RlZCwgbmV4dCwgJ3JlamVjdCcpKTtcbiAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi4zLzIuMi42XSAgKi9cblxuICAgIGV4ZWN1dGUoY3Vycik7XG4gICAgcmV0dXJuIG5leHQucHJveHk7XG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNywgMy4zXSAgKi9cbiAgfVxufTtcbi8qICBkZWxpdmVyIGFuIGFjdGlvbiAgKi9cblxudmFyIGRlbGl2ZXIgPSBmdW5jdGlvbiBkZWxpdmVyKGN1cnIsIHN0YXRlLCBuYW1lLCB2YWx1ZSkge1xuICBpZiAoY3Vyci5zdGF0ZSA9PT0gU1RBVEVfUEVORElORykge1xuICAgIGN1cnIuc3RhdGUgPSBzdGF0ZTtcbiAgICAvKiAgW1Byb21pc2VzL0ErIDIuMS4yLjEsIDIuMS4zLjFdICAqL1xuXG4gICAgY3VycltuYW1lXSA9IHZhbHVlO1xuICAgIC8qICBbUHJvbWlzZXMvQSsgMi4xLjIuMiwgMi4xLjMuMl0gICovXG5cbiAgICBleGVjdXRlKGN1cnIpO1xuICB9XG5cbiAgcmV0dXJuIGN1cnI7XG59O1xuLyogIGV4ZWN1dGUgYWxsIGhhbmRsZXJzICAqL1xuXG5cbnZhciBleGVjdXRlID0gZnVuY3Rpb24gZXhlY3V0ZShjdXJyKSB7XG4gIGlmIChjdXJyLnN0YXRlID09PSBTVEFURV9GVUxGSUxMRUQpIGV4ZWN1dGVfaGFuZGxlcnMoY3VyciwgJ29uRnVsZmlsbGVkJywgY3Vyci5mdWxmaWxsVmFsdWUpO2Vsc2UgaWYgKGN1cnIuc3RhdGUgPT09IFNUQVRFX1JFSkVDVEVEKSBleGVjdXRlX2hhbmRsZXJzKGN1cnIsICdvblJlamVjdGVkJywgY3Vyci5yZWplY3RSZWFzb24pO1xufTtcbi8qICBleGVjdXRlIHBhcnRpY3VsYXIgc2V0IG9mIGhhbmRsZXJzICAqL1xuXG5cbnZhciBleGVjdXRlX2hhbmRsZXJzID0gZnVuY3Rpb24gZXhlY3V0ZV9oYW5kbGVycyhjdXJyLCBuYW1lLCB2YWx1ZSkge1xuICAvKiBnbG9iYWwgc2V0SW1tZWRpYXRlOiB0cnVlICovXG5cbiAgLyogZ2xvYmFsIHNldFRpbWVvdXQ6IHRydWUgKi9cblxuICAvKiAgc2hvcnQtY2lyY3VpdCBwcm9jZXNzaW5nICAqL1xuICBpZiAoY3VycltuYW1lXS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgLyogIGl0ZXJhdGUgb3ZlciBhbGwgaGFuZGxlcnMsIGV4YWN0bHkgb25jZSAgKi9cblxuICB2YXIgaGFuZGxlcnMgPSBjdXJyW25hbWVdO1xuICBjdXJyW25hbWVdID0gW107XG4gIC8qICBbUHJvbWlzZXMvQSsgMi4yLjIuMywgMi4yLjMuM10gICovXG5cbiAgdmFyIGZ1bmMgPSBmdW5jdGlvbiBmdW5jKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhbmRsZXJzW2ldKHZhbHVlKTtcbiAgICB9XG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNV0gICovXG5cbiAgfTtcbiAgLyogIGV4ZWN1dGUgcHJvY2VkdXJlIGFzeW5jaHJvbm91c2x5ICAqL1xuXG4gIC8qICBbUHJvbWlzZXMvQSsgMi4yLjQsIDMuMV0gICovXG5cblxuICBpZiAodHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gJ2Z1bmN0aW9uJykgc2V0SW1tZWRpYXRlKGZ1bmMpO2Vsc2Ugc2V0VGltZW91dChmdW5jLCAwKTtcbn07XG4vKiAgZ2VuZXJhdGUgYSByZXNvbHZlciBmdW5jdGlvbiAgKi9cblxuXG52YXIgcmVzb2x2ZXIgPSBmdW5jdGlvbiByZXNvbHZlcihjYiwgbmV4dCwgbWV0aG9kKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKVxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuMSwgMi4yLjcuMywgMi4yLjcuNF0gICovXG4gICAgICBuZXh0W21ldGhvZF0uY2FsbChuZXh0LCB2YWx1ZSk7XG4gICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi43LjMsIDIuMi43LjRdICAqL1xuICAgIGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzdWx0ID0gY2IodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4yLjIuMSwgMi4yLjMuMSwgMi4yLjUsIDMuMl0gICovXG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgbmV4dC5yZWplY3QoZSk7XG4gICAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNy4yXSAgKi9cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmUobmV4dCwgcmVzdWx0KTtcbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNy4xXSAgKi9cbiAgICAgIH1cbiAgfTtcbn07XG4vKiAgXCJQcm9taXNlIFJlc29sdXRpb24gUHJvY2VkdXJlXCIgICovXG5cbi8qICBbUHJvbWlzZXMvQSsgMi4zXSAgKi9cblxuXG52YXIgcmVzb2x2ZSA9IGZ1bmN0aW9uIHJlc29sdmUocHJvbWlzZSwgeCkge1xuICAvKiAgc2FuaXR5IGNoZWNrIGFyZ3VtZW50cyAgKi9cblxuICAvKiAgW1Byb21pc2VzL0ErIDIuMy4xXSAgKi9cbiAgaWYgKHByb21pc2UgPT09IHggfHwgcHJvbWlzZS5wcm94eSA9PT0geCkge1xuICAgIHByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ2Nhbm5vdCByZXNvbHZlIHByb21pc2Ugd2l0aCBpdHNlbGYnKSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8qICBzdXJnaWNhbGx5IGNoZWNrIGZvciBhIFwidGhlblwiIG1ldGhvZFxuICAgIChtYWlubHkgdG8ganVzdCBjYWxsIHRoZSBcImdldHRlclwiIG9mIFwidGhlblwiIG9ubHkgb25jZSkgICovXG5cblxuICB2YXIgdGhlbjtcblxuICBpZiAoX3R5cGVvZih4KSA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCB8fCB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICB0aGVuID0geC50aGVuO1xuICAgIH1cbiAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjEsIDMuNV0gICovXG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4yXSAgKi9cblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICAvKiAgaGFuZGxlIG93biBUaGVuYWJsZXMgICAgW1Byb21pc2VzL0ErIDIuMy4yXVxuICAgIGFuZCBzaW1pbGFyIFwidGhlbmFibGVzXCIgW1Byb21pc2VzL0ErIDIuMy4zXSAgKi9cblxuXG4gIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8qICBjYWxsIHJldHJpZXZlZCBcInRoZW5cIiBtZXRob2QgKi9cblxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zXSAgKi9cbiAgICAgIHRoZW4uY2FsbCh4LFxuICAgICAgLyogIHJlc29sdmVQcm9taXNlICAqL1xuXG4gICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjMuMV0gICovXG4gICAgICBmdW5jdGlvbiAoeSkge1xuICAgICAgICBpZiAocmVzb2x2ZWQpIHJldHVybjtcbiAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjMuM10gICovXG5cbiAgICAgICAgaWYgKHkgPT09IHgpXG4gICAgICAgICAgLyogIFtQcm9taXNlcy9BKyAzLjZdICAqL1xuICAgICAgICAgIHByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ2NpcmN1bGFyIHRoZW5hYmxlIGNoYWluJykpO2Vsc2UgcmVzb2x2ZShwcm9taXNlLCB5KTtcbiAgICAgIH0sXG4gICAgICAvKiAgcmVqZWN0UHJvbWlzZSAgKi9cblxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zLjJdICAqL1xuICAgICAgZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgaWYgKHJlc29sdmVkKSByZXR1cm47XG4gICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zLjNdICAqL1xuXG4gICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFyZXNvbHZlZClcbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zLjNdICAqL1xuICAgICAgICBwcm9taXNlLnJlamVjdChlKTtcbiAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4zLjMuMy40XSAgKi9cbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cbiAgLyogIGhhbmRsZSBvdGhlciB2YWx1ZXMgICovXG5cblxuICBwcm9taXNlLmZ1bGZpbGwoeCk7XG4gIC8qICBbUHJvbWlzZXMvQSsgMi4zLjQsIDIuMy4zLjRdICAqL1xufTsgLy8gc28gd2UgYWx3YXlzIGhhdmUgUHJvbWlzZS5hbGwoKVxuXG5cbmFwaS5hbGwgPSBmdW5jdGlvbiAocHMpIHtcbiAgcmV0dXJuIG5ldyBhcGkoZnVuY3Rpb24gKHJlc29sdmVBbGwsIHJlamVjdEFsbCkge1xuICAgIHZhciB2YWxzID0gbmV3IEFycmF5KHBzLmxlbmd0aCk7XG4gICAgdmFyIGRvbmVDb3VudCA9IDA7XG5cbiAgICB2YXIgZnVsZmlsbCA9IGZ1bmN0aW9uIGZ1bGZpbGwoaSwgdmFsKSB7XG4gICAgICB2YWxzW2ldID0gdmFsO1xuICAgICAgZG9uZUNvdW50Kys7XG5cbiAgICAgIGlmIChkb25lQ291bnQgPT09IHBzLmxlbmd0aCkge1xuICAgICAgICByZXNvbHZlQWxsKHZhbHMpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgdmFyIHAgPSBwc1tpXTtcbiAgICAgICAgdmFyIGlzUHJvbWlzZSA9IHAgIT0gbnVsbCAmJiBwLnRoZW4gIT0gbnVsbDtcblxuICAgICAgICBpZiAoaXNQcm9taXNlKSB7XG4gICAgICAgICAgcC50aGVuKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgIGZ1bGZpbGwoaSwgdmFsKTtcbiAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3RBbGwoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgdmFsID0gcDtcbiAgICAgICAgICBmdWxmaWxsKGksIHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH0pKGkpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5hcGkucmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgcmV0dXJuIG5ldyBhcGkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlc29sdmUodmFsKTtcbiAgfSk7XG59O1xuXG5hcGkucmVqZWN0ID0gZnVuY3Rpb24gKHZhbCkge1xuICByZXR1cm4gbmV3IGFwaShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVqZWN0KHZhbCk7XG4gIH0pO1xufTtcblxudmFyIFByb21pc2UkMSA9IHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJyA/IFByb21pc2UgOiBhcGk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxudmFyIEFuaW1hdGlvbiA9IGZ1bmN0aW9uIEFuaW1hdGlvbih0YXJnZXQsIG9wdHMsIG9wdHMyKSB7XG4gIHZhciBpc0NvcmUgPSBjb3JlKHRhcmdldCk7XG4gIHZhciBpc0VsZSA9ICFpc0NvcmU7XG5cbiAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZSA9IGV4dGVuZCh7XG4gICAgZHVyYXRpb246IDEwMDBcbiAgfSwgb3B0cywgb3B0czIpO1xuXG4gIF9wLnRhcmdldCA9IHRhcmdldDtcbiAgX3Auc3R5bGUgPSBfcC5zdHlsZSB8fCBfcC5jc3M7XG4gIF9wLnN0YXJ0ZWQgPSBmYWxzZTtcbiAgX3AucGxheWluZyA9IGZhbHNlO1xuICBfcC5ob29rZWQgPSBmYWxzZTtcbiAgX3AuYXBwbHlpbmcgPSBmYWxzZTtcbiAgX3AucHJvZ3Jlc3MgPSAwO1xuICBfcC5jb21wbGV0ZXMgPSBbXTtcbiAgX3AuZnJhbWVzID0gW107XG5cbiAgaWYgKF9wLmNvbXBsZXRlICYmIGZuKF9wLmNvbXBsZXRlKSkge1xuICAgIF9wLmNvbXBsZXRlcy5wdXNoKF9wLmNvbXBsZXRlKTtcbiAgfVxuXG4gIGlmIChpc0VsZSkge1xuICAgIHZhciBwb3MgPSB0YXJnZXQucG9zaXRpb24oKTtcbiAgICBfcC5zdGFydFBvc2l0aW9uID0gX3Auc3RhcnRQb3NpdGlvbiB8fCB7XG4gICAgICB4OiBwb3MueCxcbiAgICAgIHk6IHBvcy55XG4gICAgfTtcbiAgICBfcC5zdGFydFN0eWxlID0gX3Auc3RhcnRTdHlsZSB8fCB0YXJnZXQuY3koKS5zdHlsZSgpLmdldEFuaW1hdGlvblN0YXJ0U3R5bGUodGFyZ2V0LCBfcC5zdHlsZSk7XG4gIH1cblxuICBpZiAoaXNDb3JlKSB7XG4gICAgdmFyIHBhbiA9IHRhcmdldC5wYW4oKTtcbiAgICBfcC5zdGFydFBhbiA9IHtcbiAgICAgIHg6IHBhbi54LFxuICAgICAgeTogcGFuLnlcbiAgICB9O1xuICAgIF9wLnN0YXJ0Wm9vbSA9IHRhcmdldC56b29tKCk7XG4gIH0gLy8gZm9yIGZ1dHVyZSB0aW1lbGluZS9hbmltYXRpb25zIGltcGxcblxuXG4gIHRoaXMubGVuZ3RoID0gMTtcbiAgdGhpc1swXSA9IHRoaXM7XG59O1xuXG52YXIgYW5pZm4gPSBBbmltYXRpb24ucHJvdG90eXBlO1xuZXh0ZW5kKGFuaWZuLCB7XG4gIGluc3RhbmNlU3RyaW5nOiBmdW5jdGlvbiBpbnN0YW5jZVN0cmluZygpIHtcbiAgICByZXR1cm4gJ2FuaW1hdGlvbic7XG4gIH0sXG4gIGhvb2s6IGZ1bmN0aW9uIGhvb2soKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICAgIGlmICghX3AuaG9va2VkKSB7XG4gICAgICAvLyBhZGQgdG8gdGFyZ2V0J3MgYW5pbWF0aW9uIHF1ZXVlXG4gICAgICB2YXIgcTtcbiAgICAgIHZhciB0QW5pID0gX3AudGFyZ2V0Ll9wcml2YXRlLmFuaW1hdGlvbjtcblxuICAgICAgaWYgKF9wLnF1ZXVlKSB7XG4gICAgICAgIHEgPSB0QW5pLnF1ZXVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcSA9IHRBbmkuY3VycmVudDtcbiAgICAgIH1cblxuICAgICAgcS5wdXNoKHRoaXMpOyAvLyBhZGQgdG8gdGhlIGFuaW1hdGlvbiBsb29wIHBvb2xcblxuICAgICAgaWYgKGVsZW1lbnRPckNvbGxlY3Rpb24oX3AudGFyZ2V0KSkge1xuICAgICAgICBfcC50YXJnZXQuY3koKS5hZGRUb0FuaW1hdGlvblBvb2woX3AudGFyZ2V0KTtcbiAgICAgIH1cblxuICAgICAgX3AuaG9va2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcGxheTogZnVuY3Rpb24gcGxheSgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlOyAvLyBhdXRvcmV3aW5kXG5cbiAgICBpZiAoX3AucHJvZ3Jlc3MgPT09IDEpIHtcbiAgICAgIF9wLnByb2dyZXNzID0gMDtcbiAgICB9XG5cbiAgICBfcC5wbGF5aW5nID0gdHJ1ZTtcbiAgICBfcC5zdGFydGVkID0gZmFsc2U7IC8vIG5lZWRzIHRvIGJlIHN0YXJ0ZWQgYnkgYW5pbWF0aW9uIGxvb3BcblxuICAgIF9wLnN0b3BwZWQgPSBmYWxzZTtcbiAgICB0aGlzLmhvb2soKTsgLy8gdGhlIGFuaW1hdGlvbiBsb29wIHdpbGwgc3RhcnQgdGhlIGFuaW1hdGlvbi4uLlxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHBsYXlpbmc6IGZ1bmN0aW9uIHBsYXlpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucGxheWluZztcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uIGFwcGx5KCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgX3AuYXBwbHlpbmcgPSB0cnVlO1xuICAgIF9wLnN0YXJ0ZWQgPSBmYWxzZTsgLy8gbmVlZHMgdG8gYmUgc3RhcnRlZCBieSBhbmltYXRpb24gbG9vcFxuXG4gICAgX3Auc3RvcHBlZCA9IGZhbHNlO1xuICAgIHRoaXMuaG9vaygpOyAvLyB0aGUgYW5pbWF0aW9uIGxvb3Agd2lsbCBhcHBseSB0aGUgYW5pbWF0aW9uIGF0IHRoaXMgcHJvZ3Jlc3NcblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBhcHBseWluZzogZnVuY3Rpb24gYXBwbHlpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuYXBwbHlpbmc7XG4gIH0sXG4gIHBhdXNlOiBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgIF9wLnBsYXlpbmcgPSBmYWxzZTtcbiAgICBfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICBfcC5wbGF5aW5nID0gZmFsc2U7XG4gICAgX3Auc3RhcnRlZCA9IGZhbHNlO1xuICAgIF9wLnN0b3BwZWQgPSB0cnVlOyAvLyB0byBiZSByZW1vdmVkIGZyb20gYW5pbWF0aW9uIHF1ZXVlc1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJld2luZDogZnVuY3Rpb24gcmV3aW5kKCkge1xuICAgIHJldHVybiB0aGlzLnByb2dyZXNzKDApO1xuICB9LFxuICBmYXN0Zm9yd2FyZDogZnVuY3Rpb24gZmFzdGZvcndhcmQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3MoMSk7XG4gIH0sXG4gIHRpbWU6IGZ1bmN0aW9uIHRpbWUodCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gX3AucHJvZ3Jlc3MgKiBfcC5kdXJhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3ModCAvIF9wLmR1cmF0aW9uKTtcbiAgICB9XG4gIH0sXG4gIHByb2dyZXNzOiBmdW5jdGlvbiBwcm9ncmVzcyhwKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgd2FzUGxheWluZyA9IF9wLnBsYXlpbmc7XG5cbiAgICBpZiAocCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gX3AucHJvZ3Jlc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh3YXNQbGF5aW5nKSB7XG4gICAgICAgIHRoaXMucGF1c2UoKTtcbiAgICAgIH1cblxuICAgICAgX3AucHJvZ3Jlc3MgPSBwO1xuICAgICAgX3Auc3RhcnRlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAod2FzUGxheWluZykge1xuICAgICAgICB0aGlzLnBsYXkoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgY29tcGxldGVkOiBmdW5jdGlvbiBjb21wbGV0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucHJvZ3Jlc3MgPT09IDE7XG4gIH0sXG4gIHJldmVyc2U6IGZ1bmN0aW9uIHJldmVyc2UoKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgd2FzUGxheWluZyA9IF9wLnBsYXlpbmc7XG5cbiAgICBpZiAod2FzUGxheWluZykge1xuICAgICAgdGhpcy5wYXVzZSgpO1xuICAgIH1cblxuICAgIF9wLnByb2dyZXNzID0gMSAtIF9wLnByb2dyZXNzO1xuICAgIF9wLnN0YXJ0ZWQgPSBmYWxzZTtcblxuICAgIHZhciBzd2FwID0gZnVuY3Rpb24gc3dhcChhLCBiKSB7XG4gICAgICB2YXIgX3BhID0gX3BbYV07XG5cbiAgICAgIGlmIChfcGEgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIF9wW2FdID0gX3BbYl07XG4gICAgICBfcFtiXSA9IF9wYTtcbiAgICB9O1xuXG4gICAgc3dhcCgnem9vbScsICdzdGFydFpvb20nKTtcbiAgICBzd2FwKCdwYW4nLCAnc3RhcnRQYW4nKTtcbiAgICBzd2FwKCdwb3NpdGlvbicsICdzdGFydFBvc2l0aW9uJyk7IC8vIHN3YXAgc3R5bGVzXG5cbiAgICBpZiAoX3Auc3R5bGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX3Auc3R5bGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHByb3AgPSBfcC5zdHlsZVtpXTtcbiAgICAgICAgdmFyIG5hbWUgPSBwcm9wLm5hbWU7XG4gICAgICAgIHZhciBzdGFydFN0eWxlUHJvcCA9IF9wLnN0YXJ0U3R5bGVbbmFtZV07XG4gICAgICAgIF9wLnN0YXJ0U3R5bGVbbmFtZV0gPSBwcm9wO1xuICAgICAgICBfcC5zdHlsZVtpXSA9IHN0YXJ0U3R5bGVQcm9wO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3YXNQbGF5aW5nKSB7XG4gICAgICB0aGlzLnBsYXkoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcHJvbWlzZTogZnVuY3Rpb24gcHJvbWlzZSh0eXBlKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgYXJyO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdmcmFtZSc6XG4gICAgICAgIGFyciA9IF9wLmZyYW1lcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICBhcnIgPSBfcC5jb21wbGV0ZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgYXJyLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSk7XG5hbmlmbi5jb21wbGV0ZSA9IGFuaWZuLmNvbXBsZXRlZDtcbmFuaWZuLnJ1biA9IGFuaWZuLnBsYXk7XG5hbmlmbi5ydW5uaW5nID0gYW5pZm4ucGxheWluZztcblxudmFyIGRlZmluZSA9IHtcbiAgYW5pbWF0ZWQ6IGZ1bmN0aW9uIGFuaW1hdGVkKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBhbmltYXRlZEltcGwoKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IGFsbFswXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLl9wcml2YXRlLmFuaW1hdGlvbi5jdXJyZW50Lmxlbmd0aCA+IDA7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgLy8gYW5pbWF0ZWRcbiAgY2xlYXJRdWV1ZTogZnVuY3Rpb24gY2xlYXJRdWV1ZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2xlYXJRdWV1ZUltcGwoKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gYWxsW2ldO1xuICAgICAgICBlbGUuX3ByaXZhdGUuYW5pbWF0aW9uLnF1ZXVlID0gW107XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gIH0sXG4gIC8vIGNsZWFyUXVldWVcbiAgZGVsYXk6IGZ1bmN0aW9uIGRlbGF5KCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBkZWxheUltcGwodGltZSwgY29tcGxldGUpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3kgfHwgdGhpcztcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSh7XG4gICAgICAgIGRlbGF5OiB0aW1lLFxuICAgICAgICBkdXJhdGlvbjogdGltZSxcbiAgICAgICAgY29tcGxldGU6IGNvbXBsZXRlXG4gICAgICB9KTtcbiAgICB9O1xuICB9LFxuICAvLyBkZWxheVxuICBkZWxheUFuaW1hdGlvbjogZnVuY3Rpb24gZGVsYXlBbmltYXRpb24oKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRlbGF5QW5pbWF0aW9uSW1wbCh0aW1lLCBjb21wbGV0ZSkge1xuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5hbmltYXRpb24oe1xuICAgICAgICBkZWxheTogdGltZSxcbiAgICAgICAgZHVyYXRpb246IHRpbWUsXG4gICAgICAgIGNvbXBsZXRlOiBjb21wbGV0ZVxuICAgICAgfSk7XG4gICAgfTtcbiAgfSxcbiAgLy8gZGVsYXlcbiAgYW5pbWF0aW9uOiBmdW5jdGlvbiBhbmltYXRpb24oKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGFuaW1hdGlvbkltcGwocHJvcGVydGllcywgcGFyYW1zKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuICAgICAgdmFyIGlzQ29yZSA9ICFzZWxmSXNBcnJheUxpa2U7XG4gICAgICB2YXIgaXNFbGVzID0gIWlzQ29yZTtcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdmFyIHN0eWxlID0gY3kuc3R5bGUoKTtcbiAgICAgIHByb3BlcnRpZXMgPSBleHRlbmQoe30sIHByb3BlcnRpZXMsIHBhcmFtcyk7XG4gICAgICB2YXIgcHJvcGVydGllc0VtcHR5ID0gT2JqZWN0LmtleXMocHJvcGVydGllcykubGVuZ3RoID09PSAwO1xuXG4gICAgICBpZiAocHJvcGVydGllc0VtcHR5KSB7XG4gICAgICAgIHJldHVybiBuZXcgQW5pbWF0aW9uKGFsbFswXSwgcHJvcGVydGllcyk7IC8vIG5vdGhpbmcgdG8gYW5pbWF0ZVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydGllcy5kdXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByb3BlcnRpZXMuZHVyYXRpb24gPSA0MDA7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcGVydGllcy5kdXJhdGlvbikge1xuICAgICAgICBjYXNlICdzbG93JzpcbiAgICAgICAgICBwcm9wZXJ0aWVzLmR1cmF0aW9uID0gNjAwO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Zhc3QnOlxuICAgICAgICAgIHByb3BlcnRpZXMuZHVyYXRpb24gPSAyMDA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VsZXMpIHtcbiAgICAgICAgcHJvcGVydGllcy5zdHlsZSA9IHN0eWxlLmdldFByb3BzTGlzdChwcm9wZXJ0aWVzLnN0eWxlIHx8IHByb3BlcnRpZXMuY3NzKTtcbiAgICAgICAgcHJvcGVydGllcy5jc3MgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VsZXMgJiYgcHJvcGVydGllcy5yZW5kZXJlZFBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgdmFyIHJwb3MgPSBwcm9wZXJ0aWVzLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICAgICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgICAgIHByb3BlcnRpZXMucG9zaXRpb24gPSByZW5kZXJlZFRvTW9kZWxQb3NpdGlvbihycG9zLCB6b29tLCBwYW4pO1xuICAgICAgfSAvLyBvdmVycmlkZSBwYW4gdy8gcGFuQnkgaWYgc2V0XG5cblxuICAgICAgaWYgKGlzQ29yZSAmJiBwcm9wZXJ0aWVzLnBhbkJ5ICE9IG51bGwpIHtcbiAgICAgICAgdmFyIHBhbkJ5ID0gcHJvcGVydGllcy5wYW5CeTtcbiAgICAgICAgdmFyIGN5UGFuID0gY3kucGFuKCk7XG4gICAgICAgIHByb3BlcnRpZXMucGFuID0ge1xuICAgICAgICAgIHg6IGN5UGFuLnggKyBwYW5CeS54LFxuICAgICAgICAgIHk6IGN5UGFuLnkgKyBwYW5CeS55XG4gICAgICAgIH07XG4gICAgICB9IC8vIG92ZXJyaWRlIHBhbiB3LyBjZW50ZXIgaWYgc2V0XG5cblxuICAgICAgdmFyIGNlbnRlciA9IHByb3BlcnRpZXMuY2VudGVyIHx8IHByb3BlcnRpZXMuY2VudHJlO1xuXG4gICAgICBpZiAoaXNDb3JlICYmIGNlbnRlciAhPSBudWxsKSB7XG4gICAgICAgIHZhciBjZW50ZXJQYW4gPSBjeS5nZXRDZW50ZXJQYW4oY2VudGVyLmVsZXMsIHByb3BlcnRpZXMuem9vbSk7XG5cbiAgICAgICAgaWYgKGNlbnRlclBhbiAhPSBudWxsKSB7XG4gICAgICAgICAgcHJvcGVydGllcy5wYW4gPSBjZW50ZXJQYW47XG4gICAgICAgIH1cbiAgICAgIH0gLy8gb3ZlcnJpZGUgcGFuICYgem9vbSB3LyBmaXQgaWYgc2V0XG5cblxuICAgICAgaWYgKGlzQ29yZSAmJiBwcm9wZXJ0aWVzLmZpdCAhPSBudWxsKSB7XG4gICAgICAgIHZhciBmaXQgPSBwcm9wZXJ0aWVzLmZpdDtcbiAgICAgICAgdmFyIGZpdFZwID0gY3kuZ2V0Rml0Vmlld3BvcnQoZml0LmVsZXMgfHwgZml0LmJvdW5kaW5nQm94LCBmaXQucGFkZGluZyk7XG5cbiAgICAgICAgaWYgKGZpdFZwICE9IG51bGwpIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzLnBhbiA9IGZpdFZwLnBhbjtcbiAgICAgICAgICBwcm9wZXJ0aWVzLnpvb20gPSBmaXRWcC56b29tO1xuICAgICAgICB9XG4gICAgICB9IC8vIG92ZXJyaWRlIHpvb20gKCYgcG90ZW50aWFsbHkgcGFuKSB3LyB6b29tIG9iaiBpZiBzZXRcblxuXG4gICAgICBpZiAoaXNDb3JlICYmIHBsYWluT2JqZWN0KHByb3BlcnRpZXMuem9vbSkpIHtcbiAgICAgICAgdmFyIHZwID0gY3kuZ2V0Wm9vbWVkVmlld3BvcnQocHJvcGVydGllcy56b29tKTtcblxuICAgICAgICBpZiAodnAgIT0gbnVsbCkge1xuICAgICAgICAgIGlmICh2cC56b29tZWQpIHtcbiAgICAgICAgICAgIHByb3BlcnRpZXMuem9vbSA9IHZwLnpvb207XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZwLnBhbm5lZCkge1xuICAgICAgICAgICAgcHJvcGVydGllcy5wYW4gPSB2cC5wYW47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3BlcnRpZXMuem9vbSA9IG51bGw7IC8vIGFuIGluYXZhbGlkIHpvb20gKGUuZy4gbm8gZGVsdGEpIGdldHMgYXV0b21hdGljYWxseSBkZXN0cm95ZWRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IEFuaW1hdGlvbihhbGxbMF0sIHByb3BlcnRpZXMpO1xuICAgIH07XG4gIH0sXG4gIC8vIGFuaW1hdGVcbiAgYW5pbWF0ZTogZnVuY3Rpb24gYW5pbWF0ZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gYW5pbWF0ZUltcGwocHJvcGVydGllcywgcGFyYW1zKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgIHByb3BlcnRpZXMgPSBleHRlbmQoe30sIHByb3BlcnRpZXMsIHBhcmFtcyk7XG4gICAgICB9IC8vIG1hbnVhbGx5IGhvb2sgYW5kIHJ1biB0aGUgYW5pbWF0aW9uXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IGFsbFtpXTtcbiAgICAgICAgdmFyIHF1ZXVlID0gZWxlLmFuaW1hdGVkKCkgJiYgKHByb3BlcnRpZXMucXVldWUgPT09IHVuZGVmaW5lZCB8fCBwcm9wZXJ0aWVzLnF1ZXVlKTtcbiAgICAgICAgdmFyIGFuaSA9IGVsZS5hbmltYXRpb24ocHJvcGVydGllcywgcXVldWUgPyB7XG4gICAgICAgICAgcXVldWU6IHRydWVcbiAgICAgICAgfSA6IHVuZGVmaW5lZCk7XG4gICAgICAgIGFuaS5wbGF5KCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH07XG4gIH0sXG4gIC8vIGFuaW1hdGVcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gc3RvcEltcGwoY2xlYXJRdWV1ZSwganVtcFRvRW5kKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gYWxsW2ldO1xuICAgICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICAgIHZhciBhbmlzID0gX3AuYW5pbWF0aW9uLmN1cnJlbnQ7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhbmlzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdmFyIGFuaSA9IGFuaXNbal07XG4gICAgICAgICAgdmFyIGFuaV9wID0gYW5pLl9wcml2YXRlO1xuXG4gICAgICAgICAgaWYgKGp1bXBUb0VuZCkge1xuICAgICAgICAgICAgLy8gbmV4dCBpdGVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbiBsb29wLCB0aGUgYW5pbWF0aW9uXG4gICAgICAgICAgICAvLyB3aWxsIGdvIHN0cmFpZ2h0IHRvIHRoZSBlbmQgYW5kIGJlIHJlbW92ZWRcbiAgICAgICAgICAgIGFuaV9wLmR1cmF0aW9uID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gY2xlYXIgdGhlIHF1ZXVlIG9mIGZ1dHVyZSBhbmltYXRpb25zXG5cblxuICAgICAgICBpZiAoY2xlYXJRdWV1ZSkge1xuICAgICAgICAgIF9wLmFuaW1hdGlvbi5xdWV1ZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFqdW1wVG9FbmQpIHtcbiAgICAgICAgICBfcC5hbmltYXRpb24uY3VycmVudCA9IFtdO1xuICAgICAgICB9XG4gICAgICB9IC8vIHdlIGhhdmUgdG8gbm90aWZ5ICh0aGUgYW5pbWF0aW9uIGxvb3AgZG9lc24ndCBkbyBpdCBmb3IgdXMgb24gYHN0b3BgKVxuXG5cbiAgICAgIGN5Lm5vdGlmeSgnZHJhdycpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgfSAvLyBzdG9wXG5cbn07IC8vIGRlZmluZVxuXG52YXIgZGVmaW5lJDEgPSB7XG4gIC8vIGFjY2VzcyBkYXRhIGZpZWxkXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEocGFyYW1zKSB7XG4gICAgdmFyIGRlZmF1bHRzID0ge1xuICAgICAgZmllbGQ6ICdkYXRhJyxcbiAgICAgIGJpbmRpbmdFdmVudDogJ2RhdGEnLFxuICAgICAgYWxsb3dCaW5kaW5nOiBmYWxzZSxcbiAgICAgIGFsbG93U2V0dGluZzogZmFsc2UsXG4gICAgICBhbGxvd0dldHRpbmc6IGZhbHNlLFxuICAgICAgc2V0dGluZ0V2ZW50OiAnZGF0YScsXG4gICAgICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogZmFsc2UsXG4gICAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgICBpbW11dGFibGVLZXlzOiB7fSxcbiAgICAgIC8vIGtleSA9PiB0cnVlIGlmIGltbXV0YWJsZVxuICAgICAgdXBkYXRlU3R5bGU6IGZhbHNlLFxuICAgICAgYmVmb3JlR2V0OiBmdW5jdGlvbiBiZWZvcmVHZXQoc2VsZikge30sXG4gICAgICBiZWZvcmVTZXQ6IGZ1bmN0aW9uIGJlZm9yZVNldChzZWxmLCBvYmopIHt9LFxuICAgICAgb25TZXQ6IGZ1bmN0aW9uIG9uU2V0KHNlbGYpIHt9LFxuICAgICAgY2FuU2V0OiBmdW5jdGlvbiBjYW5TZXQoc2VsZikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHBhcmFtcyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRhdGFJbXBsKG5hbWUsIHZhbHVlKSB7XG4gICAgICB2YXIgcCA9IHBhcmFtcztcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBzZWxmSXNBcnJheUxpa2UgPSBzZWxmLmxlbmd0aCAhPT0gdW5kZWZpbmVkO1xuICAgICAgdmFyIGFsbCA9IHNlbGZJc0FycmF5TGlrZSA/IHNlbGYgOiBbc2VsZl07IC8vIHB1dCBpbiBhcnJheSBpZiBub3QgYXJyYXktbGlrZVxuXG4gICAgICB2YXIgc2luZ2xlID0gc2VsZklzQXJyYXlMaWtlID8gc2VsZlswXSA6IHNlbGY7IC8vIC5kYXRhKCdmb28nLCAuLi4pXG5cbiAgICAgIGlmIChzdHJpbmcobmFtZSkpIHtcbiAgICAgICAgLy8gc2V0IG9yIGdldCBwcm9wZXJ0eVxuICAgICAgICAvLyAuZGF0YSgnZm9vJylcbiAgICAgICAgaWYgKHAuYWxsb3dHZXR0aW5nICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBnZXRcbiAgICAgICAgICB2YXIgcmV0O1xuXG4gICAgICAgICAgaWYgKHNpbmdsZSkge1xuICAgICAgICAgICAgcC5iZWZvcmVHZXQoc2luZ2xlKTtcbiAgICAgICAgICAgIHJldCA9IHNpbmdsZS5fcHJpdmF0ZVtwLmZpZWxkXVtuYW1lXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmV0OyAvLyAuZGF0YSgnZm9vJywgJ2JhcicpXG4gICAgICAgIH0gZWxzZSBpZiAocC5hbGxvd1NldHRpbmcgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIHNldFxuICAgICAgICAgIHZhciB2YWxpZCA9ICFwLmltbXV0YWJsZUtleXNbbmFtZV07XG5cbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjaGFuZ2UgPSBfZGVmaW5lUHJvcGVydHkoe30sIG5hbWUsIHZhbHVlKTtcblxuICAgICAgICAgICAgcC5iZWZvcmVTZXQoc2VsZiwgY2hhbmdlKTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhbGwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgIHZhciBlbGUgPSBhbGxbaV07XG5cbiAgICAgICAgICAgICAgaWYgKHAuY2FuU2V0KGVsZSkpIHtcbiAgICAgICAgICAgICAgICBlbGUuX3ByaXZhdGVbcC5maWVsZF1bbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSAvLyB1cGRhdGUgbWFwcGVycyBpZiBhc2tlZFxuXG5cbiAgICAgICAgICAgIGlmIChwLnVwZGF0ZVN0eWxlKSB7XG4gICAgICAgICAgICAgIHNlbGYudXBkYXRlU3R5bGUoKTtcbiAgICAgICAgICAgIH0gLy8gY2FsbCBvblNldCBjYWxsYmFja1xuXG5cbiAgICAgICAgICAgIHAub25TZXQoc2VsZik7XG5cbiAgICAgICAgICAgIGlmIChwLnNldHRpbmdUcmlnZ2Vyc0V2ZW50KSB7XG4gICAgICAgICAgICAgIHNlbGZbcC50cmlnZ2VyRm5OYW1lXShwLnNldHRpbmdFdmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIC5kYXRhKHsgJ2Zvbyc6ICdiYXInIH0pXG5cbiAgICAgIH0gZWxzZSBpZiAocC5hbGxvd1NldHRpbmcgJiYgcGxhaW5PYmplY3QobmFtZSkpIHtcbiAgICAgICAgLy8gZXh0ZW5kXG4gICAgICAgIHZhciBvYmogPSBuYW1lO1xuICAgICAgICB2YXIgaywgdjtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBwLmJlZm9yZVNldChzZWxmLCBvYmopO1xuXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBrZXlzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgIGsgPSBrZXlzW19pXTtcbiAgICAgICAgICB2ID0gb2JqW2tdO1xuXG4gICAgICAgICAgdmFyIF92YWxpZCA9ICFwLmltbXV0YWJsZUtleXNba107XG5cbiAgICAgICAgICBpZiAoX3ZhbGlkKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFsbC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICB2YXIgX2VsZSA9IGFsbFtqXTtcblxuICAgICAgICAgICAgICBpZiAocC5jYW5TZXQoX2VsZSkpIHtcbiAgICAgICAgICAgICAgICBfZWxlLl9wcml2YXRlW3AuZmllbGRdW2tdID0gdjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyB1cGRhdGUgbWFwcGVycyBpZiBhc2tlZFxuXG5cbiAgICAgICAgaWYgKHAudXBkYXRlU3R5bGUpIHtcbiAgICAgICAgICBzZWxmLnVwZGF0ZVN0eWxlKCk7XG4gICAgICAgIH0gLy8gY2FsbCBvblNldCBjYWxsYmFja1xuXG5cbiAgICAgICAgcC5vblNldChzZWxmKTtcblxuICAgICAgICBpZiAocC5zZXR0aW5nVHJpZ2dlcnNFdmVudCkge1xuICAgICAgICAgIHNlbGZbcC50cmlnZ2VyRm5OYW1lXShwLnNldHRpbmdFdmVudCk7XG4gICAgICAgIH0gLy8gLmRhdGEoZnVuY3Rpb24oKXsgLi4uIH0pXG5cbiAgICAgIH0gZWxzZSBpZiAocC5hbGxvd0JpbmRpbmcgJiYgZm4obmFtZSkpIHtcbiAgICAgICAgLy8gYmluZCB0byBldmVudFxuICAgICAgICB2YXIgZm4kMSA9IG5hbWU7XG4gICAgICAgIHNlbGYub24ocC5iaW5kaW5nRXZlbnQsIGZuJDEpOyAvLyAuZGF0YSgpXG4gICAgICB9IGVsc2UgaWYgKHAuYWxsb3dHZXR0aW5nICYmIG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBnZXQgd2hvbGUgb2JqZWN0XG4gICAgICAgIHZhciBfcmV0O1xuXG4gICAgICAgIGlmIChzaW5nbGUpIHtcbiAgICAgICAgICBwLmJlZm9yZUdldChzaW5nbGUpO1xuICAgICAgICAgIF9yZXQgPSBzaW5nbGUuX3ByaXZhdGVbcC5maWVsZF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX3JldDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGY7IC8vIG1haW50YWluIGNoYWluYWJpbGl0eVxuICAgIH07IC8vIGZ1bmN0aW9uXG4gIH0sXG4gIC8vIGRhdGFcbiAgLy8gcmVtb3ZlIGRhdGEgZmllbGRcbiAgcmVtb3ZlRGF0YTogZnVuY3Rpb24gcmVtb3ZlRGF0YShwYXJhbXMpIHtcbiAgICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICBmaWVsZDogJ2RhdGEnLFxuICAgICAgZXZlbnQ6ICdkYXRhJyxcbiAgICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICAgIHRyaWdnZXJFdmVudDogZmFsc2UsXG4gICAgICBpbW11dGFibGVLZXlzOiB7fSAvLyBrZXkgPT4gdHJ1ZSBpZiBpbW11dGFibGVcblxuICAgIH07XG4gICAgcGFyYW1zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgcGFyYW1zKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gcmVtb3ZlRGF0YUltcGwobmFtZXMpIHtcbiAgICAgIHZhciBwID0gcGFyYW1zO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIHNlbGZJc0FycmF5TGlrZSA9IHNlbGYubGVuZ3RoICE9PSB1bmRlZmluZWQ7XG4gICAgICB2YXIgYWxsID0gc2VsZklzQXJyYXlMaWtlID8gc2VsZiA6IFtzZWxmXTsgLy8gcHV0IGluIGFycmF5IGlmIG5vdCBhcnJheS1saWtlXG4gICAgICAvLyAucmVtb3ZlRGF0YSgnZm9vIGJhcicpXG5cbiAgICAgIGlmIChzdHJpbmcobmFtZXMpKSB7XG4gICAgICAgIC8vIHRoZW4gZ2V0IHRoZSBsaXN0IG9mIGtleXMsIGFuZCBkZWxldGUgdGhlbVxuICAgICAgICB2YXIga2V5cyA9IG5hbWVzLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIHZhciBsID0ga2V5cy5sZW5ndGg7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAvLyBkZWxldGUgZWFjaCBub24tZW1wdHkga2V5XG4gICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgICAgICBpZiAoZW1wdHlTdHJpbmcoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHZhbGlkID0gIXAuaW1tdXRhYmxlS2V5c1trZXldOyAvLyBub3QgdmFsaWQgaWYgaW1tdXRhYmxlXG5cbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGlfYSA9IDAsIGxfYSA9IGFsbC5sZW5ndGg7IGlfYSA8IGxfYTsgaV9hKyspIHtcbiAgICAgICAgICAgICAgYWxsW2lfYV0uX3ByaXZhdGVbcC5maWVsZF1ba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC50cmlnZ2VyRXZlbnQpIHtcbiAgICAgICAgICBzZWxmW3AudHJpZ2dlckZuTmFtZV0ocC5ldmVudCk7XG4gICAgICAgIH0gLy8gLnJlbW92ZURhdGEoKVxuXG4gICAgICB9IGVsc2UgaWYgKG5hbWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gdGhlbiBkZWxldGUgYWxsIGtleXNcbiAgICAgICAgZm9yICh2YXIgX2lfYSA9IDAsIF9sX2EgPSBhbGwubGVuZ3RoOyBfaV9hIDwgX2xfYTsgX2lfYSsrKSB7XG4gICAgICAgICAgdmFyIF9wcml2YXRlRmllbGRzID0gYWxsW19pX2FdLl9wcml2YXRlW3AuZmllbGRdO1xuXG4gICAgICAgICAgdmFyIF9rZXlzID0gT2JqZWN0LmtleXMoX3ByaXZhdGVGaWVsZHMpO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgX2tleXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgICAgdmFyIF9rZXkgPSBfa2V5c1tfaTJdO1xuICAgICAgICAgICAgdmFyIHZhbGlkS2V5VG9EZWxldGUgPSAhcC5pbW11dGFibGVLZXlzW19rZXldO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRLZXlUb0RlbGV0ZSkge1xuICAgICAgICAgICAgICBfcHJpdmF0ZUZpZWxkc1tfa2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocC50cmlnZ2VyRXZlbnQpIHtcbiAgICAgICAgICBzZWxmW3AudHJpZ2dlckZuTmFtZV0ocC5ldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGY7IC8vIG1haW50YWluIGNoYWluaW5nXG4gICAgfTsgLy8gZnVuY3Rpb25cbiAgfSAvLyByZW1vdmVEYXRhXG5cbn07IC8vIGRlZmluZVxuXG52YXIgZGVmaW5lJDIgPSB7XG4gIGV2ZW50QWxpYXNlc09uOiBmdW5jdGlvbiBldmVudEFsaWFzZXNPbihwcm90bykge1xuICAgIHZhciBwID0gcHJvdG87XG4gICAgcC5hZGRMaXN0ZW5lciA9IHAubGlzdGVuID0gcC5iaW5kID0gcC5vbjtcbiAgICBwLnVubGlzdGVuID0gcC51bmJpbmQgPSBwLm9mZiA9IHAucmVtb3ZlTGlzdGVuZXI7XG4gICAgcC50cmlnZ2VyID0gcC5lbWl0OyAvLyB0aGlzIGlzIGp1c3QgYSB3cmFwcGVyIGFsaWFzIG9mIC5vbigpXG5cbiAgICBwLnBvbiA9IHAucHJvbWlzZU9uID0gZnVuY3Rpb24gKGV2ZW50cywgc2VsZWN0b3IpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soZSkge1xuICAgICAgICAgIHNlbGYub2ZmLmFwcGx5KHNlbGYsIG9mZkFyZ3MpO1xuICAgICAgICAgIHJlc29sdmUoZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIG9uQXJncyA9IGFyZ3MuY29uY2F0KFtjYWxsYmFja10pO1xuICAgICAgICB2YXIgb2ZmQXJncyA9IG9uQXJncy5jb25jYXQoW10pO1xuICAgICAgICBzZWxmLm9uLmFwcGx5KHNlbGYsIG9uQXJncyk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59OyAvLyBkZWZpbmVcblxuLy8gdXNlIHRoaXMgbW9kdWxlIHRvIGNoZXJyeSBwaWNrIGZ1bmN0aW9ucyBpbnRvIHlvdXIgcHJvdG90eXBlXG52YXIgZGVmaW5lJDMgPSB7fTtcbltkZWZpbmUsIGRlZmluZSQxLCBkZWZpbmUkMl0uZm9yRWFjaChmdW5jdGlvbiAobSkge1xuICBleHRlbmQoZGVmaW5lJDMsIG0pO1xufSk7XG5cbnZhciBlbGVzZm4kZCA9IHtcbiAgYW5pbWF0ZTogZGVmaW5lJDMuYW5pbWF0ZSgpLFxuICBhbmltYXRpb246IGRlZmluZSQzLmFuaW1hdGlvbigpLFxuICBhbmltYXRlZDogZGVmaW5lJDMuYW5pbWF0ZWQoKSxcbiAgY2xlYXJRdWV1ZTogZGVmaW5lJDMuY2xlYXJRdWV1ZSgpLFxuICBkZWxheTogZGVmaW5lJDMuZGVsYXkoKSxcbiAgZGVsYXlBbmltYXRpb246IGRlZmluZSQzLmRlbGF5QW5pbWF0aW9uKCksXG4gIHN0b3A6IGRlZmluZSQzLnN0b3AoKVxufTtcblxudmFyIGVsZXNmbiRlID0ge1xuICBjbGFzc2VzOiBmdW5jdGlvbiBjbGFzc2VzKF9jbGFzc2VzKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKF9jbGFzc2VzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciByZXQgPSBbXTtcblxuICAgICAgc2VsZlswXS5fcHJpdmF0ZS5jbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgICByZXR1cm4gcmV0LnB1c2goY2xzKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSBpZiAoIWFycmF5KF9jbGFzc2VzKSkge1xuICAgICAgLy8gZXh0cmFjdCBjbGFzc2VzIGZyb20gc3RyaW5nXG4gICAgICBfY2xhc3NlcyA9IChfY2xhc3NlcyB8fCAnJykubWF0Y2goL1xcUysvZykgfHwgW107XG4gICAgfVxuXG4gICAgdmFyIGNoYW5nZWQgPSBbXTtcbiAgICB2YXIgY2xhc3Nlc1NldCA9IG5ldyBTZXQkMShfY2xhc3Nlcyk7IC8vIGNoZWNrIGFuZCB1cGRhdGUgZWFjaCBlbGVcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VsZi5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGVsZSA9IHNlbGZbal07XG4gICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICB2YXIgZWxlQ2xhc3NlcyA9IF9wLmNsYXNzZXM7XG4gICAgICB2YXIgY2hhbmdlZEVsZSA9IGZhbHNlOyAvLyBjaGVjayBpZiBlbGUgaGFzIGFsbCBvZiB0aGUgcGFzc2VkIGNsYXNzZXNcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfY2xhc3Nlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2xzID0gX2NsYXNzZXNbaV07XG4gICAgICAgIHZhciBlbGVIYXNDbGFzcyA9IGVsZUNsYXNzZXMuaGFzKGNscyk7XG5cbiAgICAgICAgaWYgKCFlbGVIYXNDbGFzcykge1xuICAgICAgICAgIGNoYW5nZWRFbGUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IC8vIGNoZWNrIGlmIGVsZSBoYXMgY2xhc3NlcyBvdXRzaWRlIG9mIHRob3NlIHBhc3NlZFxuXG5cbiAgICAgIGlmICghY2hhbmdlZEVsZSkge1xuICAgICAgICBjaGFuZ2VkRWxlID0gZWxlQ2xhc3Nlcy5zaXplICE9PSBfY2xhc3Nlcy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VkRWxlKSB7XG4gICAgICAgIF9wLmNsYXNzZXMgPSBjbGFzc2VzU2V0O1xuICAgICAgICBjaGFuZ2VkLnB1c2goZWxlKTtcbiAgICAgIH1cbiAgICB9IC8vIHRyaWdnZXIgdXBkYXRlIHN0eWxlIG9uIHRob3NlIGVsZXMgdGhhdCBoYWQgY2xhc3MgY2hhbmdlc1xuXG5cbiAgICBpZiAoY2hhbmdlZC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNwYXduKGNoYW5nZWQpLnVwZGF0ZVN0eWxlKCkuZW1pdCgnY2xhc3MnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZjtcbiAgfSxcbiAgYWRkQ2xhc3M6IGZ1bmN0aW9uIGFkZENsYXNzKGNsYXNzZXMpIHtcbiAgICByZXR1cm4gdGhpcy50b2dnbGVDbGFzcyhjbGFzc2VzLCB0cnVlKTtcbiAgfSxcbiAgaGFzQ2xhc3M6IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHJldHVybiBlbGUgIT0gbnVsbCAmJiBlbGUuX3ByaXZhdGUuY2xhc3Nlcy5oYXMoY2xhc3NOYW1lKTtcbiAgfSxcbiAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGNsYXNzZXMsIHRvZ2dsZSkge1xuICAgIGlmICghYXJyYXkoY2xhc3NlcykpIHtcbiAgICAgIC8vIGV4dHJhY3QgY2xhc3NlcyBmcm9tIHN0cmluZ1xuICAgICAgY2xhc3NlcyA9IGNsYXNzZXMubWF0Y2goL1xcUysvZykgfHwgW107XG4gICAgfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b2dnbGVVbmRlZmQgPSB0b2dnbGUgPT09IHVuZGVmaW5lZDtcbiAgICB2YXIgY2hhbmdlZCA9IFtdOyAvLyBlbGVzIHdobyBoYWQgY2xhc3NlcyBjaGFuZ2VkXG5cbiAgICBmb3IgKHZhciBpID0gMCwgaWwgPSBzZWxmLmxlbmd0aDsgaSA8IGlsOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBzZWxmW2ldO1xuICAgICAgdmFyIGVsZUNsYXNzZXMgPSBlbGUuX3ByaXZhdGUuY2xhc3NlcztcbiAgICAgIHZhciBjaGFuZ2VkRWxlID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2xhc3Nlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgY2xzID0gY2xhc3Nlc1tqXTtcbiAgICAgICAgdmFyIGhhc0NsYXNzID0gZWxlQ2xhc3Nlcy5oYXMoY2xzKTtcbiAgICAgICAgdmFyIGNoYW5nZWROb3cgPSBmYWxzZTtcblxuICAgICAgICBpZiAodG9nZ2xlIHx8IHRvZ2dsZVVuZGVmZCAmJiAhaGFzQ2xhc3MpIHtcbiAgICAgICAgICBlbGVDbGFzc2VzLmFkZChjbHMpO1xuICAgICAgICAgIGNoYW5nZWROb3cgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCF0b2dnbGUgfHwgdG9nZ2xlVW5kZWZkICYmIGhhc0NsYXNzKSB7XG4gICAgICAgICAgZWxlQ2xhc3Nlc1tcImRlbGV0ZVwiXShjbHMpO1xuICAgICAgICAgIGNoYW5nZWROb3cgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjaGFuZ2VkRWxlICYmIGNoYW5nZWROb3cpIHtcbiAgICAgICAgICBjaGFuZ2VkLnB1c2goZWxlKTtcbiAgICAgICAgICBjaGFuZ2VkRWxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBmb3IgaiBjbGFzc2VzXG5cbiAgICB9IC8vIGZvciBpIGVsZXNcbiAgICAvLyB0cmlnZ2VyIHVwZGF0ZSBzdHlsZSBvbiB0aG9zZSBlbGVzIHRoYXQgaGFkIGNsYXNzIGNoYW5nZXNcblxuXG4gICAgaWYgKGNoYW5nZWQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zcGF3bihjaGFuZ2VkKS51cGRhdGVTdHlsZSgpLmVtaXQoJ2NsYXNzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGY7XG4gIH0sXG4gIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiByZW1vdmVDbGFzcyhjbGFzc2VzKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlQ2xhc3MoY2xhc3NlcywgZmFsc2UpO1xuICB9LFxuICBmbGFzaENsYXNzOiBmdW5jdGlvbiBmbGFzaENsYXNzKGNsYXNzZXMsIGR1cmF0aW9uKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKGR1cmF0aW9uID09IG51bGwpIHtcbiAgICAgIGR1cmF0aW9uID0gMjUwO1xuICAgIH0gZWxzZSBpZiAoZHVyYXRpb24gPT09IDApIHtcbiAgICAgIHJldHVybiBzZWxmOyAvLyBub3RoaW5nIHRvIGRvIHJlYWxseVxuICAgIH1cblxuICAgIHNlbGYuYWRkQ2xhc3MoY2xhc3Nlcyk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLnJlbW92ZUNsYXNzKGNsYXNzZXMpO1xuICAgIH0sIGR1cmF0aW9uKTtcbiAgICByZXR1cm4gc2VsZjtcbiAgfVxufTtcbmVsZXNmbiRlLmNsYXNzTmFtZSA9IGVsZXNmbiRlLmNsYXNzTmFtZXMgPSBlbGVzZm4kZS5jbGFzc2VzO1xuXG52YXIgdG9rZW5zID0ge1xuICBtZXRhQ2hhcjogJ1tcXFxcIVxcXFxcIlxcXFwjXFxcXCRcXFxcJVxcXFwmXFxcXFxcJ1xcXFwoXFxcXClcXFxcKlxcXFwrXFxcXCxcXFxcLlxcXFwvXFxcXDpcXFxcO1xcXFw8XFxcXD1cXFxcPlxcXFw/XFxcXEBcXFxcW1xcXFxdXFxcXF5cXFxcYFxcXFx7XFxcXHxcXFxcfVxcXFx+XScsXG4gIC8vIGNoYXJzIHdlIG5lZWQgdG8gZXNjYXBlIGluIGxldCBuYW1lcywgZXRjXG4gIGNvbXBhcmF0b3JPcDogJz18XFxcXCE9fD58Pj18PHw8PXxcXFxcJD18XFxcXF49fFxcXFwqPScsXG4gIC8vIGJpbmFyeSBjb21wYXJpc29uIG9wICh1c2VkIGluIGRhdGEgc2VsZWN0b3JzKVxuICBib29sT3A6ICdcXFxcP3xcXFxcIXxcXFxcXicsXG4gIC8vIGJvb2xlYW4gKHVuYXJ5KSBvcGVyYXRvcnMgKHVzZWQgaW4gZGF0YSBzZWxlY3RvcnMpXG4gIHN0cmluZzogJ1wiKD86XFxcXFxcXFxcInxbXlwiXSkqXCInICsgJ3wnICsgXCInKD86XFxcXFxcXFwnfFteJ10pKidcIixcbiAgLy8gc3RyaW5nIGxpdGVyYWxzICh1c2VkIGluIGRhdGEgc2VsZWN0b3JzKSAtLSBkb3VibGVxdW90ZXMgfCBzaW5nbGVxdW90ZXNcbiAgbnVtYmVyOiBudW1iZXIkMSxcbiAgLy8gbnVtYmVyIGxpdGVyYWwgKHVzZWQgaW4gZGF0YSBzZWxlY3RvcnMpIC0tLSBlLmcuIDAuMTIzNCwgMTIzNCwgMTJlMTIzXG4gIG1ldGE6ICdkZWdyZWV8aW5kZWdyZWV8b3V0ZGVncmVlJyxcbiAgLy8gYWxsb3dlZCBtZXRhZGF0YSBmaWVsZHMgKGkuZS4gYWxsb3dlZCBmdW5jdGlvbnMgdG8gdXNlIGZyb20gQ29sbGVjdGlvbilcbiAgc2VwYXJhdG9yOiAnXFxcXHMqLFxcXFxzKicsXG4gIC8vIHF1ZXJpZXMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGUuZy4gZWRnZVtmb28gPSAnYmFyJ10sIG5vZGUuc29tZUNsYXNzXG4gIGRlc2NlbmRhbnQ6ICdcXFxccysnLFxuICBjaGlsZDogJ1xcXFxzKz5cXFxccysnLFxuICBzdWJqZWN0OiAnXFxcXCQnLFxuICBncm91cDogJ25vZGV8ZWRnZXxcXFxcKicsXG4gIGRpcmVjdGVkRWRnZTogJ1xcXFxzKy0+XFxcXHMrJyxcbiAgdW5kaXJlY3RlZEVkZ2U6ICdcXFxccys8LT5cXFxccysnXG59O1xudG9rZW5zLnZhcmlhYmxlID0gJyg/OltcXFxcdy1dfCg/OlxcXFxcXFxcJyArIHRva2Vucy5tZXRhQ2hhciArICcpKSsnOyAvLyBhIHZhcmlhYmxlIG5hbWVcblxudG9rZW5zLnZhbHVlID0gdG9rZW5zLnN0cmluZyArICd8JyArIHRva2Vucy5udW1iZXI7IC8vIGEgdmFsdWUgbGl0ZXJhbCwgZWl0aGVyIGEgc3RyaW5nIG9yIG51bWJlclxuXG50b2tlbnMuY2xhc3NOYW1lID0gdG9rZW5zLnZhcmlhYmxlOyAvLyBhIGNsYXNzIG5hbWUgKGZvbGxvd3MgdmFyaWFibGUgY29udmVudGlvbnMpXG5cbnRva2Vucy5pZCA9IHRva2Vucy52YXJpYWJsZTsgLy8gYW4gZWxlbWVudCBpZCAoZm9sbG93cyB2YXJpYWJsZSBjb252ZW50aW9ucylcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIG9wcywgb3AsIGk7IC8vIGFkZCBAIHZhcmlhbnRzIHRvIGNvbXBhcmF0b3JPcFxuXG4gIG9wcyA9IHRva2Vucy5jb21wYXJhdG9yT3Auc3BsaXQoJ3wnKTtcblxuICBmb3IgKGkgPSAwOyBpIDwgb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgb3AgPSBvcHNbaV07XG4gICAgdG9rZW5zLmNvbXBhcmF0b3JPcCArPSAnfEAnICsgb3A7XG4gIH0gLy8gYWRkICEgdmFyaWFudHMgdG8gY29tcGFyYXRvck9wXG5cblxuICBvcHMgPSB0b2tlbnMuY29tcGFyYXRvck9wLnNwbGl0KCd8Jyk7XG5cbiAgZm9yIChpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xuICAgIG9wID0gb3BzW2ldO1xuXG4gICAgaWYgKG9wLmluZGV4T2YoJyEnKSA+PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIHNraXAgb3BzIHRoYXQgZXhwbGljaXRseSBjb250YWluICFcblxuXG4gICAgaWYgKG9wID09PSAnPScpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gc2tpcCA9IGIvYyAhPSBpcyBleHBsaWNpdGx5IGRlZmluZWRcblxuXG4gICAgdG9rZW5zLmNvbXBhcmF0b3JPcCArPSAnfFxcXFwhJyArIG9wO1xuICB9XG59KSgpO1xuXG4vKipcbiAqIE1ha2UgYSBuZXcgcXVlcnkgb2JqZWN0XG4gKlxuICogQHByb3AgdHlwZSB7VHlwZX0gVGhlIHR5cGUgZW51bSAoaW50KSBvZiB0aGUgcXVlcnlcbiAqIEBwcm9wIGNoZWNrcyBMaXN0IG9mIGNoZWNrcyB0byBtYWtlIGFnYWluc3QgYW4gZWxlIHRvIHRlc3QgZm9yIGEgbWF0Y2hcbiAqL1xudmFyIG5ld1F1ZXJ5ID0gZnVuY3Rpb24gbmV3UXVlcnkoKSB7XG4gIHJldHVybiB7XG4gICAgY2hlY2tzOiBbXVxuICB9O1xufTtcblxuLyoqXG4gKiBBIGNoZWNrIHR5cGUgZW51bS1saWtlIG9iamVjdC4gIFVzZXMgaW50ZWdlciB2YWx1ZXMgZm9yIGZhc3QgbWF0Y2goKSBsb29rdXAuXG4gKiBUaGUgb3JkZXJpbmcgZG9lcyBub3QgbWF0dGVyIGFzIGxvbmcgYXMgdGhlIGludHMgYXJlIHVuaXF1ZS5cbiAqL1xudmFyIFR5cGUgPSB7XG4gIC8qKiBFLmcuIG5vZGUgKi9cbiAgR1JPVVA6IDAsXG5cbiAgLyoqIEEgY29sbGVjdGlvbiBvZiBlbGVtZW50cyAqL1xuICBDT0xMRUNUSU9OOiAxLFxuXG4gIC8qKiBBIGZpbHRlcihlbGUpIGZ1bmN0aW9uICovXG4gIEZJTFRFUjogMixcblxuICAvKiogRS5nLiBbZm9vID4gMV0gKi9cbiAgREFUQV9DT01QQVJFOiAzLFxuXG4gIC8qKiBFLmcuIFtmb29dICovXG4gIERBVEFfRVhJU1Q6IDQsXG5cbiAgLyoqIEUuZy4gWz9mb29dICovXG4gIERBVEFfQk9PTDogNSxcblxuICAvKiogRS5nLiBbW2RlZ3JlZSA+IDJdXSAqL1xuICBNRVRBX0NPTVBBUkU6IDYsXG5cbiAgLyoqIEUuZy4gOnNlbGVjdGVkICovXG4gIFNUQVRFOiA3LFxuXG4gIC8qKiBFLmcuICNmb28gKi9cbiAgSUQ6IDgsXG5cbiAgLyoqIEUuZy4gLmZvbyAqL1xuICBDTEFTUzogOSxcblxuICAvKiogRS5nLiAjZm9vIDwtPiAjYmFyICovXG4gIFVORElSRUNURURfRURHRTogMTAsXG5cbiAgLyoqIEUuZy4gI2ZvbyAtPiAjYmFyICovXG4gIERJUkVDVEVEX0VER0U6IDExLFxuXG4gIC8qKiBFLmcuICQjZm9vIC0+ICNiYXIgKi9cbiAgTk9ERV9TT1VSQ0U6IDEyLFxuXG4gIC8qKiBFLmcuICNmb28gLT4gJCNiYXIgKi9cbiAgTk9ERV9UQVJHRVQ6IDEzLFxuXG4gIC8qKiBFLmcuICQjZm9vIDwtPiAjYmFyICovXG4gIE5PREVfTkVJR0hCT1I6IDE0LFxuXG4gIC8qKiBFLmcuICNmb28gPiAjYmFyICovXG4gIENISUxEOiAxNSxcblxuICAvKiogRS5nLiAjZm9vICNiYXIgKi9cbiAgREVTQ0VOREFOVDogMTYsXG5cbiAgLyoqIEUuZy4gJCNmb28gPiAjYmFyICovXG4gIFBBUkVOVDogMTcsXG5cbiAgLyoqIEUuZy4gJCNmb28gI2JhciAqL1xuICBBTkNFU1RPUjogMTgsXG5cbiAgLyoqIEUuZy4gI2ZvbyA+ICRiYXIgPiAjYmF6ICovXG4gIENPTVBPVU5EX1NQTElUOiAxOSxcblxuICAvKiogQWx3YXlzIG1hdGNoZXMsIHVzZWZ1bCBwbGFjZWhvbGRlciBmb3Igc3ViamVjdCBpbiBgQ09NUE9VTkRfU1BMSVRgICovXG4gIFRSVUU6IDIwXG59O1xuXG52YXIgc3RhdGVTZWxlY3RvcnMgPSBbe1xuICBzZWxlY3RvcjogJzpzZWxlY3RlZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5zZWxlY3RlZCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOnVuc2VsZWN0ZWQnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLnNlbGVjdGVkKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6c2VsZWN0YWJsZScsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5zZWxlY3RhYmxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6dW5zZWxlY3RhYmxlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5zZWxlY3RhYmxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6bG9ja2VkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmxvY2tlZCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOnVubG9ja2VkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5sb2NrZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzp2aXNpYmxlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLnZpc2libGUoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpoaWRkZW4nLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLnZpc2libGUoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzp0cmFuc3BhcmVudCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS50cmFuc3BhcmVudCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmdyYWJiZWQnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuZ3JhYmJlZCgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmZyZWUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLmdyYWJiZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpyZW1vdmVkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLnJlbW92ZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzppbnNpZGUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLnJlbW92ZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpncmFiYmFibGUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuZ3JhYmJhYmxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6dW5ncmFiYmFibGUnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiAhZWxlLmdyYWJiYWJsZSgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmFuaW1hdGVkJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmFuaW1hdGVkKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6dW5hbmltYXRlZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUuYW5pbWF0ZWQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpwYXJlbnQnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNQYXJlbnQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpjaGlsZGxlc3MnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNDaGlsZGxlc3MoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpjaGlsZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5pc0NoaWxkKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6b3JwaGFuJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzT3JwaGFuKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6bm9ub3JwaGFuJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzQ2hpbGQoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpjb21wb3VuZCcsXG4gIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgcmV0dXJuIGVsZS5pc1BhcmVudCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZWxlLnNvdXJjZSgpLmlzUGFyZW50KCkgfHwgZWxlLnRhcmdldCgpLmlzUGFyZW50KCk7XG4gICAgfVxuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmxvb3AnLFxuICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNMb29wKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6c2ltcGxlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzU2ltcGxlKCk7XG4gIH1cbn0sIHtcbiAgc2VsZWN0b3I6ICc6YWN0aXZlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmFjdGl2ZSgpO1xuICB9XG59LCB7XG4gIHNlbGVjdG9yOiAnOmluYWN0aXZlJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5hY3RpdmUoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpiYWNrZ3JvdW5kaW5nJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gZWxlLmJhY2tncm91bmRpbmcoKTtcbiAgfVxufSwge1xuICBzZWxlY3RvcjogJzpub25iYWNrZ3JvdW5kaW5nJyxcbiAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICByZXR1cm4gIWVsZS5iYWNrZ3JvdW5kaW5nKCk7XG4gIH1cbn1dLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgLy8gbi5iLiBzZWxlY3RvcnMgdGhhdCBhcmUgc3RhcnRpbmcgc3Vic3RyaW5ncyBvZiBvdGhlcnMgbXVzdCBoYXZlIHRoZSBsb25nZXIgb25lcyBmaXJzdFxuICByZXR1cm4gZGVzY2VuZGluZyhhLnNlbGVjdG9yLCBiLnNlbGVjdG9yKTtcbn0pO1xuXG52YXIgbG9va3VwID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2VsVG9GbiA9IHt9O1xuICB2YXIgcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlU2VsZWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgcyA9IHN0YXRlU2VsZWN0b3JzW2ldO1xuICAgIHNlbFRvRm5bcy5zZWxlY3Rvcl0gPSBzLm1hdGNoZXM7XG4gIH1cblxuICByZXR1cm4gc2VsVG9Gbjtcbn0oKTtcblxudmFyIHN0YXRlU2VsZWN0b3JNYXRjaGVzID0gZnVuY3Rpb24gc3RhdGVTZWxlY3Rvck1hdGNoZXMoc2VsLCBlbGUpIHtcbiAgcmV0dXJuIGxvb2t1cFtzZWxdKGVsZSk7XG59O1xudmFyIHN0YXRlU2VsZWN0b3JSZWdleCA9ICcoJyArIHN0YXRlU2VsZWN0b3JzLm1hcChmdW5jdGlvbiAocykge1xuICByZXR1cm4gcy5zZWxlY3Rvcjtcbn0pLmpvaW4oJ3wnKSArICcpJztcblxuLy8gc28gdGhhdCB2YWx1ZXMgZ2V0IGNvbXBhcmVkIHByb3Blcmx5IGluIFNlbGVjdG9yLmZpbHRlcigpXG5cbnZhciBjbGVhbk1ldGFDaGFycyA9IGZ1bmN0aW9uIGNsZWFuTWV0YUNoYXJzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXFxcXFwoJyArIHRva2Vucy5tZXRhQ2hhciArICcpJywgJ2cnKSwgZnVuY3Rpb24gKG1hdGNoLCAkMSkge1xuICAgIHJldHVybiAkMTtcbiAgfSk7XG59O1xuXG52YXIgcmVwbGFjZUxhc3RRdWVyeSA9IGZ1bmN0aW9uIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIGV4YW1pbmluZ1F1ZXJ5LCByZXBsYWNlbWVudFF1ZXJ5KSB7XG4gIHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdID0gcmVwbGFjZW1lbnRRdWVyeTtcbn07IC8vIE5PVEU6IGFkZCBuZXcgZXhwcmVzc2lvbiBzeW50YXggaGVyZSB0byBoYXZlIGl0IHJlY29nbmlzZWQgYnkgdGhlIHBhcnNlcjtcbi8vIC0gYSBxdWVyeSBjb250YWlucyBhbGwgYWRqYWNlbnQgKGkuZS4gbm8gc2VwYXJhdG9yIGluIGJldHdlZW4pIGV4cHJlc3Npb25zO1xuLy8gLSB0aGUgY3VycmVudCBxdWVyeSBpcyBzdG9yZWQgaW4gc2VsZWN0b3JbaV1cbi8vIC0geW91IG5lZWQgdG8gY2hlY2sgdGhlIHF1ZXJ5IG9iamVjdHMgaW4gbWF0Y2goKSBmb3IgaXQgYWN0dWFsbHkgZmlsdGVyIHByb3Blcmx5LCBidXQgdGhhdCdzIHByZXR0eSBzdHJhaWdodCBmb3J3YXJkXG5cblxudmFyIGV4cHJzID0gW3tcbiAgbmFtZTogJ2dyb3VwJyxcbiAgLy8ganVzdCB1c2VkIGZvciBpZGVudGlmeWluZyB3aGVuIGRlYnVnZ2luZ1xuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICcoJyArIHRva2Vucy5ncm91cCArICcpJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZikge1xuICAgIHZhciBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDEpLFxuICAgICAgICBncm91cCA9IF9yZWYyWzBdO1xuXG4gICAgcXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgdHlwZTogVHlwZS5HUk9VUCxcbiAgICAgIHZhbHVlOiBncm91cCA9PT0gJyonID8gZ3JvdXAgOiBncm91cCArICdzJ1xuICAgIH0pO1xuICB9XG59LCB7XG4gIG5hbWU6ICdzdGF0ZScsXG4gIHF1ZXJ5OiB0cnVlLFxuICByZWdleDogc3RhdGVTZWxlY3RvclJlZ2V4LFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmMykge1xuICAgIHZhciBfcmVmNCA9IF9zbGljZWRUb0FycmF5KF9yZWYzLCAxKSxcbiAgICAgICAgc3RhdGUgPSBfcmVmNFswXTtcblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuU1RBVEUsXG4gICAgICB2YWx1ZTogc3RhdGVcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnaWQnLFxuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICdcXFxcIygnICsgdG9rZW5zLmlkICsgJyknLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmNSkge1xuICAgIHZhciBfcmVmNiA9IF9zbGljZWRUb0FycmF5KF9yZWY1LCAxKSxcbiAgICAgICAgaWQgPSBfcmVmNlswXTtcblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuSUQsXG4gICAgICB2YWx1ZTogY2xlYW5NZXRhQ2hhcnMoaWQpXG4gICAgfSk7XG4gIH1cbn0sIHtcbiAgbmFtZTogJ2NsYXNzTmFtZScsXG4gIHF1ZXJ5OiB0cnVlLFxuICByZWdleDogJ1xcXFwuKCcgKyB0b2tlbnMuY2xhc3NOYW1lICsgJyknLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmNykge1xuICAgIHZhciBfcmVmOCA9IF9zbGljZWRUb0FycmF5KF9yZWY3LCAxKSxcbiAgICAgICAgY2xhc3NOYW1lID0gX3JlZjhbMF07XG5cbiAgICBxdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICB0eXBlOiBUeXBlLkNMQVNTLFxuICAgICAgdmFsdWU6IGNsZWFuTWV0YUNoYXJzKGNsYXNzTmFtZSlcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnZGF0YUV4aXN0cycsXG4gIHF1ZXJ5OiB0cnVlLFxuICByZWdleDogJ1xcXFxbXFxcXHMqKCcgKyB0b2tlbnMudmFyaWFibGUgKyAnKVxcXFxzKlxcXFxdJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZjkpIHtcbiAgICB2YXIgX3JlZjEwID0gX3NsaWNlZFRvQXJyYXkoX3JlZjksIDEpLFxuICAgICAgICB2YXJpYWJsZSA9IF9yZWYxMFswXTtcblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuREFUQV9FWElTVCxcbiAgICAgIGZpZWxkOiBjbGVhbk1ldGFDaGFycyh2YXJpYWJsZSlcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnZGF0YUNvbXBhcmUnLFxuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICdcXFxcW1xcXFxzKignICsgdG9rZW5zLnZhcmlhYmxlICsgJylcXFxccyooJyArIHRva2Vucy5jb21wYXJhdG9yT3AgKyAnKVxcXFxzKignICsgdG9rZW5zLnZhbHVlICsgJylcXFxccypcXFxcXScsXG4gIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnksIF9yZWYxMSkge1xuICAgIHZhciBfcmVmMTIgPSBfc2xpY2VkVG9BcnJheShfcmVmMTEsIDMpLFxuICAgICAgICB2YXJpYWJsZSA9IF9yZWYxMlswXSxcbiAgICAgICAgY29tcGFyYXRvck9wID0gX3JlZjEyWzFdLFxuICAgICAgICB2YWx1ZSA9IF9yZWYxMlsyXTtcblxuICAgIHZhciB2YWx1ZUlzU3RyaW5nID0gbmV3IFJlZ0V4cCgnXicgKyB0b2tlbnMuc3RyaW5nICsgJyQnKS5leGVjKHZhbHVlKSAhPSBudWxsO1xuXG4gICAgaWYgKHZhbHVlSXNTdHJpbmcpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEsIHZhbHVlLmxlbmd0aCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIH1cblxuICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgIHR5cGU6IFR5cGUuREFUQV9DT01QQVJFLFxuICAgICAgZmllbGQ6IGNsZWFuTWV0YUNoYXJzKHZhcmlhYmxlKSxcbiAgICAgIG9wZXJhdG9yOiBjb21wYXJhdG9yT3AsXG4gICAgICB2YWx1ZTogdmFsdWVcbiAgICB9KTtcbiAgfVxufSwge1xuICBuYW1lOiAnZGF0YUJvb2wnLFxuICBxdWVyeTogdHJ1ZSxcbiAgcmVnZXg6ICdcXFxcW1xcXFxzKignICsgdG9rZW5zLmJvb2xPcCArICcpXFxcXHMqKCcgKyB0b2tlbnMudmFyaWFibGUgKyAnKVxcXFxzKlxcXFxdJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZjEzKSB7XG4gICAgdmFyIF9yZWYxNCA9IF9zbGljZWRUb0FycmF5KF9yZWYxMywgMiksXG4gICAgICAgIGJvb2xPcCA9IF9yZWYxNFswXSxcbiAgICAgICAgdmFyaWFibGUgPSBfcmVmMTRbMV07XG5cbiAgICBxdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICB0eXBlOiBUeXBlLkRBVEFfQk9PTCxcbiAgICAgIGZpZWxkOiBjbGVhbk1ldGFDaGFycyh2YXJpYWJsZSksXG4gICAgICBvcGVyYXRvcjogYm9vbE9wXG4gICAgfSk7XG4gIH1cbn0sIHtcbiAgbmFtZTogJ21ldGFDb21wYXJlJyxcbiAgcXVlcnk6IHRydWUsXG4gIHJlZ2V4OiAnXFxcXFtcXFxcW1xcXFxzKignICsgdG9rZW5zLm1ldGEgKyAnKVxcXFxzKignICsgdG9rZW5zLmNvbXBhcmF0b3JPcCArICcpXFxcXHMqKCcgKyB0b2tlbnMubnVtYmVyICsgJylcXFxccypcXFxcXVxcXFxdJyxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZjE1KSB7XG4gICAgdmFyIF9yZWYxNiA9IF9zbGljZWRUb0FycmF5KF9yZWYxNSwgMyksXG4gICAgICAgIG1ldGEgPSBfcmVmMTZbMF0sXG4gICAgICAgIGNvbXBhcmF0b3JPcCA9IF9yZWYxNlsxXSxcbiAgICAgICAgbnVtYmVyID0gX3JlZjE2WzJdO1xuXG4gICAgcXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgdHlwZTogVHlwZS5NRVRBX0NPTVBBUkUsXG4gICAgICBmaWVsZDogY2xlYW5NZXRhQ2hhcnMobWV0YSksXG4gICAgICBvcGVyYXRvcjogY29tcGFyYXRvck9wLFxuICAgICAgdmFsdWU6IHBhcnNlRmxvYXQobnVtYmVyKVxuICAgIH0pO1xuICB9XG59LCB7XG4gIG5hbWU6ICduZXh0UXVlcnknLFxuICBzZXBhcmF0b3I6IHRydWUsXG4gIHJlZ2V4OiB0b2tlbnMuc2VwYXJhdG9yLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgdmFyIGN1cnJlbnRTdWJqZWN0ID0gc2VsZWN0b3IuY3VycmVudFN1YmplY3Q7XG4gICAgdmFyIGVkZ2VDb3VudCA9IHNlbGVjdG9yLmVkZ2VDb3VudDtcbiAgICB2YXIgY29tcG91bmRDb3VudCA9IHNlbGVjdG9yLmNvbXBvdW5kQ291bnQ7XG4gICAgdmFyIGxhc3RRID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoY3VycmVudFN1YmplY3QgIT0gbnVsbCkge1xuICAgICAgbGFzdFEuc3ViamVjdCA9IGN1cnJlbnRTdWJqZWN0O1xuICAgICAgc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIGxhc3RRLmVkZ2VDb3VudCA9IGVkZ2VDb3VudDtcbiAgICBsYXN0US5jb21wb3VuZENvdW50ID0gY29tcG91bmRDb3VudDtcbiAgICBzZWxlY3Rvci5lZGdlQ291bnQgPSAwO1xuICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQgPSAwOyAvLyBnbyBvbiB0byBuZXh0IHF1ZXJ5XG5cbiAgICB2YXIgbmV4dFF1ZXJ5ID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoKytdID0gbmV3UXVlcnkoKTtcbiAgICByZXR1cm4gbmV4dFF1ZXJ5OyAvLyB0aGlzIGlzIHRoZSBuZXcgcXVlcnkgdG8gYmUgZmlsbGVkIGJ5IHRoZSBmb2xsb3dpbmcgZXhwcnNcbiAgfVxufSwge1xuICBuYW1lOiAnZGlyZWN0ZWRFZGdlJyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLmRpcmVjdGVkRWRnZSxcbiAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSkge1xuICAgIGlmIChzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9PSBudWxsKSB7XG4gICAgICAvLyB1bmRpcmVjdGVkIGVkZ2VcbiAgICAgIHZhciBlZGdlUXVlcnkgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIHNvdXJjZSA9IHF1ZXJ5O1xuICAgICAgdmFyIHRhcmdldCA9IG5ld1F1ZXJ5KCk7XG4gICAgICBlZGdlUXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLkRJUkVDVEVEX0VER0UsXG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldFxuICAgICAgfSk7IC8vIHRoZSBxdWVyeSBpbiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIHRoZSBlZGdlIHJhdGhlciB0aGFuIHRoZSBzb3VyY2VcblxuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgcXVlcnksIGVkZ2VRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5lZGdlQ291bnQrKzsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNvdXJjZS90YXJnZXRcbiAgICAgIHZhciBzcmNUZ3RRID0gbmV3UXVlcnkoKTtcbiAgICAgIHZhciBfc291cmNlID0gcXVlcnk7XG5cbiAgICAgIHZhciBfdGFyZ2V0ID0gbmV3UXVlcnkoKTtcblxuICAgICAgc3JjVGd0US5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuTk9ERV9TT1VSQ0UsXG4gICAgICAgIHNvdXJjZTogX3NvdXJjZSxcbiAgICAgICAgdGFyZ2V0OiBfdGFyZ2V0XG4gICAgICB9KTsgLy8gdGhlIHF1ZXJ5IGluIHRoZSBzZWxlY3RvciBzaG91bGQgYmUgdGhlIG5laWdoYm91cmhvb2QgcmF0aGVyIHRoYW4gdGhlIG5vZGVcblxuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgcXVlcnksIHNyY1RndFEpO1xuICAgICAgc2VsZWN0b3IuZWRnZUNvdW50Kys7XG4gICAgICByZXR1cm4gX3RhcmdldDsgLy8gbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnNcbiAgICB9XG4gIH1cbn0sIHtcbiAgbmFtZTogJ3VuZGlyZWN0ZWRFZGdlJyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLnVuZGlyZWN0ZWRFZGdlLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09IG51bGwpIHtcbiAgICAgIC8vIHVuZGlyZWN0ZWQgZWRnZVxuICAgICAgdmFyIGVkZ2VRdWVyeSA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgc291cmNlID0gcXVlcnk7XG4gICAgICB2YXIgdGFyZ2V0ID0gbmV3UXVlcnkoKTtcbiAgICAgIGVkZ2VRdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuVU5ESVJFQ1RFRF9FREdFLFxuICAgICAgICBub2RlczogW3NvdXJjZSwgdGFyZ2V0XVxuICAgICAgfSk7IC8vIHRoZSBxdWVyeSBpbiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIHRoZSBlZGdlIHJhdGhlciB0aGFuIHRoZSBzb3VyY2VcblxuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgcXVlcnksIGVkZ2VRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5lZGdlQ291bnQrKzsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5laWdoYm91cmhvb2RcbiAgICAgIHZhciBuaG9vZFEgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIG5vZGUgPSBxdWVyeTtcbiAgICAgIHZhciBuZWlnaGJvciA9IG5ld1F1ZXJ5KCk7XG4gICAgICBuaG9vZFEuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLk5PREVfTkVJR0hCT1IsXG4gICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgIG5laWdoYm9yOiBuZWlnaGJvclxuICAgICAgfSk7IC8vIHRoZSBxdWVyeSBpbiB0aGUgc2VsZWN0b3Igc2hvdWxkIGJlIHRoZSBuZWlnaGJvdXJob29kIHJhdGhlciB0aGFuIHRoZSBub2RlXG5cbiAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIHF1ZXJ5LCBuaG9vZFEpO1xuICAgICAgcmV0dXJuIG5laWdoYm9yOyAvLyBub3cgcG9wdWxhdGluZyB0aGUgbmVpZ2hib3Igd2l0aCBmb2xsb3dpbmcgZXhwcmVzc2lvbnNcbiAgICB9XG4gIH1cbn0sIHtcbiAgbmFtZTogJ2NoaWxkJyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLmNoaWxkLFxuICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09IG51bGwpIHtcbiAgICAgIC8vIGRlZmF1bHQ6IGNoaWxkIHF1ZXJ5XG4gICAgICB2YXIgcGFyZW50Q2hpbGRRdWVyeSA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgY2hpbGQgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIHBhcmVudCA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdO1xuICAgICAgcGFyZW50Q2hpbGRRdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuQ0hJTEQsXG4gICAgICAgIHBhcmVudDogcGFyZW50LFxuICAgICAgICBjaGlsZDogY2hpbGRcbiAgICAgIH0pOyAvLyB0aGUgcXVlcnkgaW4gdGhlIHNlbGVjdG9yIHNob3VsZCBiZSB0aGUgJz4nIGl0c2VsZlxuXG4gICAgICByZXBsYWNlTGFzdFF1ZXJ5KHNlbGVjdG9yLCBxdWVyeSwgcGFyZW50Q2hpbGRRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7IC8vIHdlJ3JlIG5vdyBwb3B1bGF0aW5nIHRoZSBjaGlsZCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09PSBxdWVyeSkge1xuICAgICAgLy8gY29tcG91bmQgc3BsaXQgcXVlcnlcbiAgICAgIHZhciBjb21wb3VuZCA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgbGVmdCA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIHJpZ2h0ID0gbmV3UXVlcnkoKTtcbiAgICAgIHZhciBzdWJqZWN0ID0gbmV3UXVlcnkoKTtcblxuICAgICAgdmFyIF9jaGlsZCA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfcGFyZW50ID0gbmV3UXVlcnkoKTsgLy8gc2V0IHVwIHRoZSByb290IGNvbXBvdW5kIHFcblxuXG4gICAgICBjb21wb3VuZC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuQ09NUE9VTkRfU1BMSVQsXG4gICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgICAgc3ViamVjdDogc3ViamVjdFxuICAgICAgfSk7IC8vIHBvcHVsYXRlIHRoZSBzdWJqZWN0IGFuZCByZXBsYWNlIHRoZSBxIGF0IHRoZSBvbGQgc3BvdCAod2l0aGluIGxlZnQpIHdpdGggVFJVRVxuXG4gICAgICBzdWJqZWN0LmNoZWNrcyA9IHF1ZXJ5LmNoZWNrczsgLy8gdGFrZSB0aGUgY2hlY2tzIGZyb20gdGhlIGxlZnRcblxuICAgICAgcXVlcnkuY2hlY2tzID0gW3tcbiAgICAgICAgdHlwZTogVHlwZS5UUlVFXG4gICAgICB9XTsgLy8gY2hlY2tzIHVuZGVyIGxlZnQgcmVmcyB0aGUgc3ViamVjdCBpbXBsaWNpdGx5XG4gICAgICAvLyBzZXQgdXAgdGhlIHJpZ2h0IHFcblxuICAgICAgX3BhcmVudC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuVFJVRVxuICAgICAgfSk7IC8vIHBhcmVudCBpbXBsaWNpdGx5IHJlZnMgdGhlIHN1YmplY3RcblxuXG4gICAgICByaWdodC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuUEFSRU5ULFxuICAgICAgICAvLyB0eXBlIGlzIHN3YXBwZWQgb24gcmlnaHQgc2lkZSBxdWVyaWVzXG4gICAgICAgIHBhcmVudDogX3BhcmVudCxcbiAgICAgICAgY2hpbGQ6IF9jaGlsZCAvLyBlbXB0eSBmb3Igbm93XG5cbiAgICAgIH0pO1xuICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgbGVmdCwgY29tcG91bmQpOyAvLyB1cGRhdGUgdGhlIHJlZiBzaW5jZSB3ZSBtb3ZlZCB0aGluZ3MgYXJvdW5kIGZvciBgcXVlcnlgXG5cbiAgICAgIHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID0gc3ViamVjdDtcbiAgICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQrKztcbiAgICAgIHJldHVybiBfY2hpbGQ7IC8vIG5vdyBwb3B1bGF0aW5nIHRoZSByaWdodCBzaWRlJ3MgY2hpbGRcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcGFyZW50IHF1ZXJ5XG4gICAgICAvLyBpbmZvIGZvciBwYXJlbnQgcXVlcnlcbiAgICAgIHZhciBfcGFyZW50MiA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfY2hpbGQyID0gbmV3UXVlcnkoKTtcblxuICAgICAgdmFyIHBjUUNoZWNrcyA9IFt7XG4gICAgICAgIHR5cGU6IFR5cGUuUEFSRU5ULFxuICAgICAgICBwYXJlbnQ6IF9wYXJlbnQyLFxuICAgICAgICBjaGlsZDogX2NoaWxkMlxuICAgICAgfV07IC8vIHRoZSBwYXJlbnQtY2hpbGQgcXVlcnkgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBxdWVyeSBwcmV2aW91c2x5IGJlaW5nIHBvcHVsYXRlZFxuXG4gICAgICBfcGFyZW50Mi5jaGVja3MgPSBxdWVyeS5jaGVja3M7IC8vIHRoZSBwcmV2aW91cyBxdWVyeSBjb250YWlucyB0aGUgY2hlY2tzIGZvciB0aGUgcGFyZW50XG5cbiAgICAgIHF1ZXJ5LmNoZWNrcyA9IHBjUUNoZWNrczsgLy8gcGMgcXVlcnkgdGFrZXMgb3ZlclxuXG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7XG4gICAgICByZXR1cm4gX2NoaWxkMjsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIGNoaWxkXG4gICAgfVxuICB9XG59LCB7XG4gIG5hbWU6ICdkZXNjZW5kYW50JyxcbiAgc2VwYXJhdG9yOiB0cnVlLFxuICByZWdleDogdG9rZW5zLmRlc2NlbmRhbnQsXG4gIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnkpIHtcbiAgICBpZiAoc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPT0gbnVsbCkge1xuICAgICAgLy8gZGVmYXVsdDogZGVzY2VuZGFudCBxdWVyeVxuICAgICAgdmFyIGFuY0NoUXVlcnkgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIGRlc2NlbmRhbnQgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIGFuY2VzdG9yID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoIC0gMV07XG4gICAgICBhbmNDaFF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgICAgdHlwZTogVHlwZS5ERVNDRU5EQU5ULFxuICAgICAgICBhbmNlc3RvcjogYW5jZXN0b3IsXG4gICAgICAgIGRlc2NlbmRhbnQ6IGRlc2NlbmRhbnRcbiAgICAgIH0pOyAvLyB0aGUgcXVlcnkgaW4gdGhlIHNlbGVjdG9yIHNob3VsZCBiZSB0aGUgJz4nIGl0c2VsZlxuXG4gICAgICByZXBsYWNlTGFzdFF1ZXJ5KHNlbGVjdG9yLCBxdWVyeSwgYW5jQ2hRdWVyeSk7XG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7IC8vIHdlJ3JlIG5vdyBwb3B1bGF0aW5nIHRoZSBkZXNjZW5kYW50IHF1ZXJ5IHdpdGggZXhwcmVzc2lvbnMgdGhhdCBmb2xsb3dcblxuICAgICAgcmV0dXJuIGRlc2NlbmRhbnQ7XG4gICAgfSBlbHNlIGlmIChzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9PT0gcXVlcnkpIHtcbiAgICAgIC8vIGNvbXBvdW5kIHNwbGl0IHF1ZXJ5XG4gICAgICB2YXIgY29tcG91bmQgPSBuZXdRdWVyeSgpO1xuICAgICAgdmFyIGxlZnQgPSBzZWxlY3RvcltzZWxlY3Rvci5sZW5ndGggLSAxXTtcbiAgICAgIHZhciByaWdodCA9IG5ld1F1ZXJ5KCk7XG4gICAgICB2YXIgc3ViamVjdCA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfZGVzY2VuZGFudCA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfYW5jZXN0b3IgPSBuZXdRdWVyeSgpOyAvLyBzZXQgdXAgdGhlIHJvb3QgY29tcG91bmQgcVxuXG5cbiAgICAgIGNvbXBvdW5kLmNoZWNrcy5wdXNoKHtcbiAgICAgICAgdHlwZTogVHlwZS5DT01QT1VORF9TUExJVCxcbiAgICAgICAgbGVmdDogbGVmdCxcbiAgICAgICAgcmlnaHQ6IHJpZ2h0LFxuICAgICAgICBzdWJqZWN0OiBzdWJqZWN0XG4gICAgICB9KTsgLy8gcG9wdWxhdGUgdGhlIHN1YmplY3QgYW5kIHJlcGxhY2UgdGhlIHEgYXQgdGhlIG9sZCBzcG90ICh3aXRoaW4gbGVmdCkgd2l0aCBUUlVFXG5cbiAgICAgIHN1YmplY3QuY2hlY2tzID0gcXVlcnkuY2hlY2tzOyAvLyB0YWtlIHRoZSBjaGVja3MgZnJvbSB0aGUgbGVmdFxuXG4gICAgICBxdWVyeS5jaGVja3MgPSBbe1xuICAgICAgICB0eXBlOiBUeXBlLlRSVUVcbiAgICAgIH1dOyAvLyBjaGVja3MgdW5kZXIgbGVmdCByZWZzIHRoZSBzdWJqZWN0IGltcGxpY2l0bHlcbiAgICAgIC8vIHNldCB1cCB0aGUgcmlnaHQgcVxuXG4gICAgICBfYW5jZXN0b3IuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLlRSVUVcbiAgICAgIH0pOyAvLyBhbmNlc3RvciBpbXBsaWNpdGx5IHJlZnMgdGhlIHN1YmplY3RcblxuXG4gICAgICByaWdodC5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuQU5DRVNUT1IsXG4gICAgICAgIC8vIHR5cGUgaXMgc3dhcHBlZCBvbiByaWdodCBzaWRlIHF1ZXJpZXNcbiAgICAgICAgYW5jZXN0b3I6IF9hbmNlc3RvcixcbiAgICAgICAgZGVzY2VuZGFudDogX2Rlc2NlbmRhbnQgLy8gZW1wdHkgZm9yIG5vd1xuXG4gICAgICB9KTtcbiAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIGxlZnQsIGNvbXBvdW5kKTsgLy8gdXBkYXRlIHRoZSByZWYgc2luY2Ugd2UgbW92ZWQgdGhpbmdzIGFyb3VuZCBmb3IgYHF1ZXJ5YFxuXG4gICAgICBzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9IHN1YmplY3Q7XG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7XG4gICAgICByZXR1cm4gX2Rlc2NlbmRhbnQ7IC8vIG5vdyBwb3B1bGF0aW5nIHRoZSByaWdodCBzaWRlJ3MgZGVzY2VuZGFudFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhbmNlc3RvciBxdWVyeVxuICAgICAgLy8gaW5mbyBmb3IgcGFyZW50IHF1ZXJ5XG4gICAgICB2YXIgX2FuY2VzdG9yMiA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgIHZhciBfZGVzY2VuZGFudDIgPSBuZXdRdWVyeSgpO1xuXG4gICAgICB2YXIgYWRRQ2hlY2tzID0gW3tcbiAgICAgICAgdHlwZTogVHlwZS5BTkNFU1RPUixcbiAgICAgICAgYW5jZXN0b3I6IF9hbmNlc3RvcjIsXG4gICAgICAgIGRlc2NlbmRhbnQ6IF9kZXNjZW5kYW50MlxuICAgICAgfV07IC8vIHRoZSBwYXJlbnQtY2hpbGQgcXVlcnkgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBxdWVyeSBwcmV2aW91c2x5IGJlaW5nIHBvcHVsYXRlZFxuXG4gICAgICBfYW5jZXN0b3IyLmNoZWNrcyA9IHF1ZXJ5LmNoZWNrczsgLy8gdGhlIHByZXZpb3VzIHF1ZXJ5IGNvbnRhaW5zIHRoZSBjaGVja3MgZm9yIHRoZSBwYXJlbnRcblxuICAgICAgcXVlcnkuY2hlY2tzID0gYWRRQ2hlY2tzOyAvLyBwYyBxdWVyeSB0YWtlcyBvdmVyXG5cbiAgICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQrKztcbiAgICAgIHJldHVybiBfZGVzY2VuZGFudDI7IC8vIHdlJ3JlIG5vdyBwb3B1bGF0aW5nIHRoZSBjaGlsZFxuICAgIH1cbiAgfVxufSwge1xuICBuYW1lOiAnc3ViamVjdCcsXG4gIG1vZGlmaWVyOiB0cnVlLFxuICByZWdleDogdG9rZW5zLnN1YmplY3QsXG4gIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnkpIHtcbiAgICBpZiAoc2VsZWN0b3IuY3VycmVudFN1YmplY3QgIT0gbnVsbCAmJiBzZWxlY3Rvci5jdXJyZW50U3ViamVjdCAhPT0gcXVlcnkpIHtcbiAgICAgIHdhcm4oJ1JlZGVmaW5pdGlvbiBvZiBzdWJqZWN0IGluIHNlbGVjdG9yIGAnICsgc2VsZWN0b3IudG9TdHJpbmcoKSArICdgJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPSBxdWVyeTtcbiAgICB2YXIgdG9wUSA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdO1xuICAgIHZhciB0b3BDaGsgPSB0b3BRLmNoZWNrc1swXTtcbiAgICB2YXIgdG9wVHlwZSA9IHRvcENoayA9PSBudWxsID8gbnVsbCA6IHRvcENoay50eXBlO1xuXG4gICAgaWYgKHRvcFR5cGUgPT09IFR5cGUuRElSRUNURURfRURHRSkge1xuICAgICAgLy8gZGlyZWN0ZWQgZWRnZSB3aXRoIHN1YmplY3Qgb24gdGhlIHRhcmdldFxuICAgICAgLy8gY2hhbmdlIHRvIHRhcmdldCBub2RlIGNoZWNrXG4gICAgICB0b3BDaGsudHlwZSA9IFR5cGUuTk9ERV9UQVJHRVQ7XG4gICAgfSBlbHNlIGlmICh0b3BUeXBlID09PSBUeXBlLlVORElSRUNURURfRURHRSkge1xuICAgICAgLy8gdW5kaXJlY3RlZCBlZGdlIHdpdGggc3ViamVjdCBvbiB0aGUgc2Vjb25kIG5vZGVcbiAgICAgIC8vIGNoYW5nZSB0byBuZWlnaGJvciBjaGVja1xuICAgICAgdG9wQ2hrLnR5cGUgPSBUeXBlLk5PREVfTkVJR0hCT1I7XG4gICAgICB0b3BDaGsubm9kZSA9IHRvcENoay5ub2Rlc1sxXTsgLy8gc2Vjb25kIG5vZGUgaXMgc3ViamVjdFxuXG4gICAgICB0b3BDaGsubmVpZ2hib3IgPSB0b3BDaGsubm9kZXNbMF07IC8vIGNsZWFuIHVwIHVudXNlZCBmaWVsZHMgZm9yIG5ldyB0eXBlXG5cbiAgICAgIHRvcENoay5ub2RlcyA9IG51bGw7XG4gICAgfVxuICB9XG59XTtcbmV4cHJzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgcmV0dXJuIGUucmVnZXhPYmogPSBuZXcgUmVnRXhwKCdeJyArIGUucmVnZXgpO1xufSk7XG5cbi8qKlxuICogT2YgYWxsIHRoZSBleHByZXNzaW9ucywgZmluZCB0aGUgZmlyc3QgbWF0Y2ggaW4gdGhlIHJlbWFpbmluZyB0ZXh0LlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbWFpbmluZyBUaGUgcmVtYWluaW5nIHRleHQgdG8gcGFyc2VcbiAqIEByZXR1cm5zIFRoZSBtYXRjaGVkIGV4cHJlc3Npb24gYW5kIHRoZSBuZXdseSByZW1haW5pbmcgdGV4dCBgeyBleHByLCBtYXRjaCwgbmFtZSwgcmVtYWluaW5nIH1gXG4gKi9cblxudmFyIGNvbnN1bWVFeHByID0gZnVuY3Rpb24gY29uc3VtZUV4cHIocmVtYWluaW5nKSB7XG4gIHZhciBleHByO1xuICB2YXIgbWF0Y2g7XG4gIHZhciBuYW1lO1xuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgZXhwcnMubGVuZ3RoOyBqKyspIHtcbiAgICB2YXIgZSA9IGV4cHJzW2pdO1xuICAgIHZhciBuID0gZS5uYW1lO1xuICAgIHZhciBtID0gcmVtYWluaW5nLm1hdGNoKGUucmVnZXhPYmopO1xuXG4gICAgaWYgKG0gIT0gbnVsbCkge1xuICAgICAgbWF0Y2ggPSBtO1xuICAgICAgZXhwciA9IGU7XG4gICAgICBuYW1lID0gbjtcbiAgICAgIHZhciBjb25zdW1lZCA9IG1bMF07XG4gICAgICByZW1haW5pbmcgPSByZW1haW5pbmcuc3Vic3RyaW5nKGNvbnN1bWVkLmxlbmd0aCk7XG4gICAgICBicmVhazsgLy8gd2UndmUgY29uc3VtZWQgb25lIGV4cHIsIHNvIHdlIGNhbiByZXR1cm4gbm93XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHByOiBleHByLFxuICAgIG1hdGNoOiBtYXRjaCxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHJlbWFpbmluZzogcmVtYWluaW5nXG4gIH07XG59O1xuLyoqXG4gKiBDb25zdW1lIGFsbCB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtYWluaW5nIFRoZSB0ZXh0IHRvIGNvbnN1bWVcbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSByZW1vdmVkXG4gKi9cblxuXG52YXIgY29uc3VtZVdoaXRlc3BhY2UgPSBmdW5jdGlvbiBjb25zdW1lV2hpdGVzcGFjZShyZW1haW5pbmcpIHtcbiAgdmFyIG1hdGNoID0gcmVtYWluaW5nLm1hdGNoKC9eXFxzKy8pO1xuXG4gIGlmIChtYXRjaCkge1xuICAgIHZhciBjb25zdW1lZCA9IG1hdGNoWzBdO1xuICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZy5zdWJzdHJpbmcoY29uc3VtZWQubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiByZW1haW5pbmc7XG59O1xuLyoqXG4gKiBQYXJzZSB0aGUgc3RyaW5nIGFuZCBzdG9yZSB0aGUgcGFyc2VkIHJlcHJlc2VudGF0aW9uIGluIHRoZSBTZWxlY3Rvci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciBUaGUgc2VsZWN0b3Igc3RyaW5nXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHNlbGVjdG9yIHdhcyBzdWNjZXNzZnVsbHkgcGFyc2VkLCBgZmFsc2VgIG90aGVyd2lzZVxuICovXG5cblxudmFyIHBhcnNlID0gZnVuY3Rpb24gcGFyc2Uoc2VsZWN0b3IpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgcmVtYWluaW5nID0gc2VsZi5pbnB1dFRleHQgPSBzZWxlY3RvcjtcbiAgdmFyIGN1cnJlbnRRdWVyeSA9IHNlbGZbMF0gPSBuZXdRdWVyeSgpO1xuICBzZWxmLmxlbmd0aCA9IDE7XG4gIHJlbWFpbmluZyA9IGNvbnN1bWVXaGl0ZXNwYWNlKHJlbWFpbmluZyk7IC8vIGdldCByaWQgb2YgbGVhZGluZyB3aGl0ZXNwYWNlXG5cbiAgZm9yICg7Oykge1xuICAgIHZhciBleHBySW5mbyA9IGNvbnN1bWVFeHByKHJlbWFpbmluZyk7XG5cbiAgICBpZiAoZXhwckluZm8uZXhwciA9PSBudWxsKSB7XG4gICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgaXMgaW52YWxpZCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IGV4cHJJbmZvLm1hdGNoLnNsaWNlKDEpOyAvLyBsZXQgdGhlIHRva2VuIHBvcHVsYXRlIHRoZSBzZWxlY3RvciBvYmplY3QgaW4gY3VycmVudFF1ZXJ5XG5cbiAgICAgIHZhciByZXQgPSBleHBySW5mby5leHByLnBvcHVsYXRlKHNlbGYsIGN1cnJlbnRRdWVyeSwgYXJncyk7XG5cbiAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gZXhpdCBpZiBwb3B1bGF0aW9uIGZhaWxlZFxuICAgICAgfSBlbHNlIGlmIChyZXQgIT0gbnVsbCkge1xuICAgICAgICBjdXJyZW50UXVlcnkgPSByZXQ7IC8vIGNoYW5nZSB0aGUgY3VycmVudCBxdWVyeSB0byBiZSBmaWxsZWQgaWYgdGhlIGV4cHIgc3BlY2lmaWVzXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVtYWluaW5nID0gZXhwckluZm8ucmVtYWluaW5nOyAvLyB3ZSdyZSBkb25lIHdoZW4gdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gcGFyc2VcblxuICAgIGlmIChyZW1haW5pbmcubWF0Y2goL15cXHMqJC8pKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgbGFzdFEgPSBzZWxmW3NlbGYubGVuZ3RoIC0gMV07XG5cbiAgaWYgKHNlbGYuY3VycmVudFN1YmplY3QgIT0gbnVsbCkge1xuICAgIGxhc3RRLnN1YmplY3QgPSBzZWxmLmN1cnJlbnRTdWJqZWN0O1xuICB9XG5cbiAgbGFzdFEuZWRnZUNvdW50ID0gc2VsZi5lZGdlQ291bnQ7XG4gIGxhc3RRLmNvbXBvdW5kQ291bnQgPSBzZWxmLmNvbXBvdW5kQ291bnQ7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHEgPSBzZWxmW2ldOyAvLyBpbiBmdXR1cmUsIHRoaXMgY291bGQgcG90ZW50aWFsbHkgYmUgYWxsb3dlZCBpZiB0aGVyZSB3ZXJlIG9wZXJhdG9yIHByZWNlZGVuY2UgYW5kIGRldGVjdGlvbiBvZiBpbnZhbGlkIGNvbWJpbmF0aW9uc1xuXG4gICAgaWYgKHEuY29tcG91bmRDb3VudCA+IDAgJiYgcS5lZGdlQ291bnQgPiAwKSB7XG4gICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgIGlzIGludmFsaWQgYmVjYXVzZSBpdCB1c2VzIGJvdGggYSBjb21wb3VuZCBzZWxlY3RvciBhbmQgYW4gZWRnZSBzZWxlY3RvcicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChxLmVkZ2VDb3VudCA+IDEpIHtcbiAgICAgIHdhcm4oJ1RoZSBzZWxlY3RvciBgJyArIHNlbGVjdG9yICsgJ2AgaXMgaW52YWxpZCBiZWNhdXNlIGl0IHVzZXMgbXVsdGlwbGUgZWRnZSBzZWxlY3RvcnMnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHEuZWRnZUNvdW50ID09PSAxKSB7XG4gICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgIGlzIGRlcHJlY2F0ZWQuICBFZGdlIHNlbGVjdG9ycyBkbyBub3QgdGFrZSBlZmZlY3Qgb24gY2hhbmdlcyB0byBzb3VyY2UgYW5kIHRhcmdldCBub2RlcyBhZnRlciBhbiBlZGdlIGlzIGFkZGVkLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIFVzZSBhIGNsYXNzIG9yIGRhdGEgc2VsZWN0b3Igb24gZWRnZXMgaW5zdGVhZCwgdXBkYXRpbmcgdGhlIGNsYXNzIG9yIGRhdGEgb2YgYW4gZWRnZSB3aGVuIHlvdXIgYXBwIGRldGVjdHMgYSBjaGFuZ2UgaW4gc291cmNlIG9yIHRhcmdldCBub2Rlcy4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTsgLy8gc3VjY2Vzc1xufTtcbi8qKlxuICogR2V0IHRoZSBzZWxlY3RvciByZXByZXNlbnRlZCBhcyBhIHN0cmluZy4gIFRoaXMgdmFsdWUgdXNlcyBkZWZhdWx0IGZvcm1hdHRpbmcsXG4gKiBzbyB0aGluZ3MgbGlrZSBzcGFjaW5nIG1heSBkaWZmZXIgZnJvbSB0aGUgaW5wdXQgdGV4dCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIHNlbGVjdG9yIHN0cmluZ1xuICovXG5cblxudmFyIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIGlmICh0aGlzLnRvU3RyaW5nQ2FjaGUgIT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nQ2FjaGU7XG4gIH1cblxuICB2YXIgY2xlYW4gPSBmdW5jdGlvbiBjbGVhbihvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGNsZWFuVmFsID0gZnVuY3Rpb24gY2xlYW5WYWwodmFsKSB7XG4gICAgaWYgKHN0cmluZyh2YWwpKSB7XG4gICAgICByZXR1cm4gJ1wiJyArIHZhbCArICdcIic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjbGVhbih2YWwpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgc3BhY2UgPSBmdW5jdGlvbiBzcGFjZSh2YWwpIHtcbiAgICByZXR1cm4gJyAnICsgdmFsICsgJyAnO1xuICB9O1xuXG4gIHZhciBjaGVja1RvU3RyaW5nID0gZnVuY3Rpb24gY2hlY2tUb1N0cmluZyhjaGVjaywgc3ViamVjdCkge1xuICAgIHZhciB0eXBlID0gY2hlY2sudHlwZSxcbiAgICAgICAgdmFsdWUgPSBjaGVjay52YWx1ZTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBUeXBlLkdST1VQOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGdyb3VwID0gY2xlYW4odmFsdWUpO1xuICAgICAgICAgIHJldHVybiBncm91cC5zdWJzdHJpbmcoMCwgZ3JvdXAubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkRBVEFfQ09NUEFSRTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgICAgICAgICBvcGVyYXRvciA9IGNoZWNrLm9wZXJhdG9yO1xuICAgICAgICAgIHJldHVybiAnWycgKyBmaWVsZCArIHNwYWNlKGNsZWFuKG9wZXJhdG9yKSkgKyBjbGVhblZhbCh2YWx1ZSkgKyAnXSc7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkRBVEFfQk9PTDpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBfb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcixcbiAgICAgICAgICAgICAgX2ZpZWxkID0gY2hlY2suZmllbGQ7XG4gICAgICAgICAgcmV0dXJuICdbJyArIGNsZWFuKF9vcGVyYXRvcikgKyBfZmllbGQgKyAnXSc7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkRBVEFfRVhJU1Q6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgX2ZpZWxkMiA9IGNoZWNrLmZpZWxkO1xuICAgICAgICAgIHJldHVybiAnWycgKyBfZmllbGQyICsgJ10nO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgVHlwZS5NRVRBX0NPTVBBUkU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgX29wZXJhdG9yMiA9IGNoZWNrLm9wZXJhdG9yLFxuICAgICAgICAgICAgICBfZmllbGQzID0gY2hlY2suZmllbGQ7XG4gICAgICAgICAgcmV0dXJuICdbWycgKyBfZmllbGQzICsgc3BhY2UoY2xlYW4oX29wZXJhdG9yMikpICsgY2xlYW5WYWwodmFsdWUpICsgJ11dJztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFR5cGUuU1RBVEU6XG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLklEOlxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuICcjJyArIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgVHlwZS5DTEFTUzpcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybiAnLicgKyB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFR5cGUuUEFSRU5UOlxuICAgICAgY2FzZSBUeXBlLkNISUxEOlxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5VG9TdHJpbmcoY2hlY2sucGFyZW50LCBzdWJqZWN0KSArIHNwYWNlKCc+JykgKyBxdWVyeVRvU3RyaW5nKGNoZWNrLmNoaWxkLCBzdWJqZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFR5cGUuQU5DRVNUT1I6XG4gICAgICBjYXNlIFR5cGUuREVTQ0VOREFOVDpcbiAgICAgICAge1xuICAgICAgICAgIHJldHVybiBxdWVyeVRvU3RyaW5nKGNoZWNrLmFuY2VzdG9yLCBzdWJqZWN0KSArICcgJyArIHF1ZXJ5VG9TdHJpbmcoY2hlY2suZGVzY2VuZGFudCwgc3ViamVjdCk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLkNPTVBPVU5EX1NQTElUOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxocyA9IHF1ZXJ5VG9TdHJpbmcoY2hlY2subGVmdCwgc3ViamVjdCk7XG4gICAgICAgICAgdmFyIHN1YiA9IHF1ZXJ5VG9TdHJpbmcoY2hlY2suc3ViamVjdCwgc3ViamVjdCk7XG4gICAgICAgICAgdmFyIHJocyA9IHF1ZXJ5VG9TdHJpbmcoY2hlY2sucmlnaHQsIHN1YmplY3QpO1xuICAgICAgICAgIHJldHVybiBsaHMgKyAobGhzLmxlbmd0aCA+IDAgPyAnICcgOiAnJykgKyBzdWIgKyByaHM7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUeXBlLlRSVUU6XG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIHF1ZXJ5VG9TdHJpbmcgPSBmdW5jdGlvbiBxdWVyeVRvU3RyaW5nKHF1ZXJ5LCBzdWJqZWN0KSB7XG4gICAgcmV0dXJuIHF1ZXJ5LmNoZWNrcy5yZWR1Y2UoZnVuY3Rpb24gKHN0ciwgY2hrLCBpKSB7XG4gICAgICByZXR1cm4gc3RyICsgKHN1YmplY3QgPT09IHF1ZXJ5ICYmIGkgPT09IDAgPyAnJCcgOiAnJykgKyBjaGVja1RvU3RyaW5nKGNoaywgc3ViamVjdCk7XG4gICAgfSwgJycpO1xuICB9O1xuXG4gIHZhciBzdHIgPSAnJztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcXVlcnkgPSB0aGlzW2ldO1xuICAgIHN0ciArPSBxdWVyeVRvU3RyaW5nKHF1ZXJ5LCBxdWVyeS5zdWJqZWN0KTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEgJiYgaSA8IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgc3RyICs9ICcsICc7XG4gICAgfVxuICB9XG5cbiAgdGhpcy50b1N0cmluZ0NhY2hlID0gc3RyO1xuICByZXR1cm4gc3RyO1xufTtcbnZhciBwYXJzZSQxID0ge1xuICBwYXJzZTogcGFyc2UsXG4gIHRvU3RyaW5nOiB0b1N0cmluZ1xufTtcblxudmFyIHZhbENtcCA9IGZ1bmN0aW9uIHZhbENtcChmaWVsZFZhbCwgb3BlcmF0b3IsIHZhbHVlKSB7XG4gIHZhciBtYXRjaGVzO1xuICB2YXIgaXNGaWVsZFN0ciA9IHN0cmluZyhmaWVsZFZhbCk7XG4gIHZhciBpc0ZpZWxkTnVtID0gbnVtYmVyKGZpZWxkVmFsKTtcbiAgdmFyIGlzVmFsU3RyID0gc3RyaW5nKHZhbHVlKTtcbiAgdmFyIGZpZWxkU3RyLCB2YWxTdHI7XG4gIHZhciBjYXNlSW5zZW5zaXRpdmUgPSBmYWxzZTtcbiAgdmFyIG5vdEV4cHIgPSBmYWxzZTtcbiAgdmFyIGlzSW5lcUNtcCA9IGZhbHNlO1xuXG4gIGlmIChvcGVyYXRvci5pbmRleE9mKCchJykgPj0gMCkge1xuICAgIG9wZXJhdG9yID0gb3BlcmF0b3IucmVwbGFjZSgnIScsICcnKTtcbiAgICBub3RFeHByID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChvcGVyYXRvci5pbmRleE9mKCdAJykgPj0gMCkge1xuICAgIG9wZXJhdG9yID0gb3BlcmF0b3IucmVwbGFjZSgnQCcsICcnKTtcbiAgICBjYXNlSW5zZW5zaXRpdmUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGlzRmllbGRTdHIgfHwgaXNWYWxTdHIgfHwgY2FzZUluc2Vuc2l0aXZlKSB7XG4gICAgZmllbGRTdHIgPSAhaXNGaWVsZFN0ciAmJiAhaXNGaWVsZE51bSA/ICcnIDogJycgKyBmaWVsZFZhbDtcbiAgICB2YWxTdHIgPSAnJyArIHZhbHVlO1xuICB9IC8vIGlmIHdlJ3JlIGRvaW5nIGEgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uLCB0aGVuIHdlJ3JlIHVzaW5nIGEgU1RSSU5HIGNvbXBhcmlzb25cbiAgLy8gZXZlbiBpZiB3ZSdyZSBjb21wYXJpbmcgbnVtYmVyc1xuXG5cbiAgaWYgKGNhc2VJbnNlbnNpdGl2ZSkge1xuICAgIGZpZWxkVmFsID0gZmllbGRTdHIgPSBmaWVsZFN0ci50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbHVlID0gdmFsU3RyID0gdmFsU3RyLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgY2FzZSAnKj0nOlxuICAgICAgbWF0Y2hlcyA9IGZpZWxkU3RyLmluZGV4T2YodmFsU3RyKSA+PSAwO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICckPSc6XG4gICAgICBtYXRjaGVzID0gZmllbGRTdHIuaW5kZXhPZih2YWxTdHIsIGZpZWxkU3RyLmxlbmd0aCAtIHZhbFN0ci5sZW5ndGgpID49IDA7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ149JzpcbiAgICAgIG1hdGNoZXMgPSBmaWVsZFN0ci5pbmRleE9mKHZhbFN0cikgPT09IDA7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJz0nOlxuICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsID09PSB2YWx1ZTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnPic6XG4gICAgICBpc0luZXFDbXAgPSB0cnVlO1xuICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsID4gdmFsdWU7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJz49JzpcbiAgICAgIGlzSW5lcUNtcCA9IHRydWU7XG4gICAgICBtYXRjaGVzID0gZmllbGRWYWwgPj0gdmFsdWU7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJzwnOlxuICAgICAgaXNJbmVxQ21wID0gdHJ1ZTtcbiAgICAgIG1hdGNoZXMgPSBmaWVsZFZhbCA8IHZhbHVlO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICc8PSc6XG4gICAgICBpc0luZXFDbXAgPSB0cnVlO1xuICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsIDw9IHZhbHVlO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gIH0gLy8gYXBwbHkgdGhlIG5vdCBvcCwgYnV0IG51bGwgdmFscyBmb3IgaW5lcXVhbGl0aWVzIHNob3VsZCBhbHdheXMgc3RheSBub24tbWF0Y2hpbmdcblxuXG4gIGlmIChub3RFeHByICYmIChmaWVsZFZhbCAhPSBudWxsIHx8ICFpc0luZXFDbXApKSB7XG4gICAgbWF0Y2hlcyA9ICFtYXRjaGVzO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoZXM7XG59O1xudmFyIGJvb2xDbXAgPSBmdW5jdGlvbiBib29sQ21wKGZpZWxkVmFsLCBvcGVyYXRvcikge1xuICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgY2FzZSAnPyc6XG4gICAgICByZXR1cm4gZmllbGRWYWwgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBjYXNlICchJzpcbiAgICAgIHJldHVybiBmaWVsZFZhbCA/IGZhbHNlIDogdHJ1ZTtcblxuICAgIGNhc2UgJ14nOlxuICAgICAgcmV0dXJuIGZpZWxkVmFsID09PSB1bmRlZmluZWQ7XG4gIH1cbn07XG52YXIgZXhpc3RDbXAgPSBmdW5jdGlvbiBleGlzdENtcChmaWVsZFZhbCkge1xuICByZXR1cm4gZmllbGRWYWwgIT09IHVuZGVmaW5lZDtcbn07XG52YXIgZGF0YSA9IGZ1bmN0aW9uIGRhdGEoZWxlLCBmaWVsZCkge1xuICByZXR1cm4gZWxlLmRhdGEoZmllbGQpO1xufTtcbnZhciBtZXRhID0gZnVuY3Rpb24gbWV0YShlbGUsIGZpZWxkKSB7XG4gIHJldHVybiBlbGVbZmllbGRdKCk7XG59O1xuXG4vKiogQSBsb29rdXAgb2YgYG1hdGNoKGNoZWNrLCBlbGUpYCBmdW5jdGlvbnMgYnkgYFR5cGVgIGludCAqL1xuXG52YXIgbWF0Y2ggPSBbXTtcbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBxdWVyeSBtYXRjaGVzIGZvciB0aGUgZWxlbWVudFxuICogQHBhcmFtIHF1ZXJ5IFRoZSBgeyB0eXBlLCB2YWx1ZSwgLi4uIH1gIHF1ZXJ5IG9iamVjdFxuICogQHBhcmFtIGVsZSBUaGUgZWxlbWVudCB0byBjb21wYXJlIGFnYWluc3RcbiovXG5cbnZhciBtYXRjaGVzID0gZnVuY3Rpb24gbWF0Y2hlcyhxdWVyeSwgZWxlKSB7XG4gIHJldHVybiBxdWVyeS5jaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoaykge1xuICAgIHJldHVybiBtYXRjaFtjaGsudHlwZV0oY2hrLCBlbGUpO1xuICB9KTtcbn07XG5cbm1hdGNoW1R5cGUuR1JPVVBdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIGdyb3VwID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiBncm91cCA9PT0gJyonIHx8IGdyb3VwID09PSBlbGUuZ3JvdXAoKTtcbn07XG5cbm1hdGNoW1R5cGUuU1RBVEVdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIHN0YXRlU2VsZWN0b3IgPSBjaGVjay52YWx1ZTtcbiAgcmV0dXJuIHN0YXRlU2VsZWN0b3JNYXRjaGVzKHN0YXRlU2VsZWN0b3IsIGVsZSk7XG59O1xuXG5tYXRjaFtUeXBlLklEXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBpZCA9IGNoZWNrLnZhbHVlO1xuICByZXR1cm4gZWxlLmlkKCkgPT09IGlkO1xufTtcblxubWF0Y2hbVHlwZS5DTEFTU10gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICB2YXIgY2xzID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiBlbGUuaGFzQ2xhc3MoY2xzKTtcbn07XG5cbm1hdGNoW1R5cGUuTUVUQV9DT01QQVJFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcixcbiAgICAgIHZhbHVlID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiB2YWxDbXAobWV0YShlbGUsIGZpZWxkKSwgb3BlcmF0b3IsIHZhbHVlKTtcbn07XG5cbm1hdGNoW1R5cGUuREFUQV9DT01QQVJFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcixcbiAgICAgIHZhbHVlID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiB2YWxDbXAoZGF0YShlbGUsIGZpZWxkKSwgb3BlcmF0b3IsIHZhbHVlKTtcbn07XG5cbm1hdGNoW1R5cGUuREFUQV9CT09MXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcjtcbiAgcmV0dXJuIGJvb2xDbXAoZGF0YShlbGUsIGZpZWxkKSwgb3BlcmF0b3IpO1xufTtcblxubWF0Y2hbVHlwZS5EQVRBX0VYSVNUXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHZhciBmaWVsZCA9IGNoZWNrLmZpZWxkLFxuICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcjtcbiAgcmV0dXJuIGV4aXN0Q21wKGRhdGEoZWxlLCBmaWVsZCkpO1xufTtcblxubWF0Y2hbVHlwZS5VTkRJUkVDVEVEX0VER0VdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIHFBID0gY2hlY2subm9kZXNbMF07XG4gIHZhciBxQiA9IGNoZWNrLm5vZGVzWzFdO1xuICB2YXIgc3JjID0gZWxlLnNvdXJjZSgpO1xuICB2YXIgdGd0ID0gZWxlLnRhcmdldCgpO1xuICByZXR1cm4gbWF0Y2hlcyhxQSwgc3JjKSAmJiBtYXRjaGVzKHFCLCB0Z3QpIHx8IG1hdGNoZXMocUIsIHNyYykgJiYgbWF0Y2hlcyhxQSwgdGd0KTtcbn07XG5cbm1hdGNoW1R5cGUuTk9ERV9ORUlHSEJPUl0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay5ub2RlLCBlbGUpICYmIGVsZS5uZWlnaGJvcmhvb2QoKS5zb21lKGZ1bmN0aW9uIChuKSB7XG4gICAgcmV0dXJuIG4uaXNOb2RlKCkgJiYgbWF0Y2hlcyhjaGVjay5uZWlnaGJvciwgbik7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5ESVJFQ1RFRF9FREdFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHJldHVybiBtYXRjaGVzKGNoZWNrLnNvdXJjZSwgZWxlLnNvdXJjZSgpKSAmJiBtYXRjaGVzKGNoZWNrLnRhcmdldCwgZWxlLnRhcmdldCgpKTtcbn07XG5cbm1hdGNoW1R5cGUuTk9ERV9TT1VSQ0VdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgcmV0dXJuIG1hdGNoZXMoY2hlY2suc291cmNlLCBlbGUpICYmIGVsZS5vdXRnb2VycygpLnNvbWUoZnVuY3Rpb24gKG4pIHtcbiAgICByZXR1cm4gbi5pc05vZGUoKSAmJiBtYXRjaGVzKGNoZWNrLnRhcmdldCwgbik7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5OT0RFX1RBUkdFVF0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay50YXJnZXQsIGVsZSkgJiYgZWxlLmluY29tZXJzKCkuc29tZShmdW5jdGlvbiAobikge1xuICAgIHJldHVybiBuLmlzTm9kZSgpICYmIG1hdGNoZXMoY2hlY2suc291cmNlLCBuKTtcbiAgfSk7XG59O1xuXG5tYXRjaFtUeXBlLkNISUxEXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHJldHVybiBtYXRjaGVzKGNoZWNrLmNoaWxkLCBlbGUpICYmIG1hdGNoZXMoY2hlY2sucGFyZW50LCBlbGUucGFyZW50KCkpO1xufTtcblxubWF0Y2hbVHlwZS5QQVJFTlRdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgcmV0dXJuIG1hdGNoZXMoY2hlY2sucGFyZW50LCBlbGUpICYmIGVsZS5jaGlsZHJlbigpLnNvbWUoZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyhjaGVjay5jaGlsZCwgYyk7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5ERVNDRU5EQU5UXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gIHJldHVybiBtYXRjaGVzKGNoZWNrLmRlc2NlbmRhbnQsIGVsZSkgJiYgZWxlLmFuY2VzdG9ycygpLnNvbWUoZnVuY3Rpb24gKGEpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyhjaGVjay5hbmNlc3RvciwgYSk7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5BTkNFU1RPUl0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay5hbmNlc3RvciwgZWxlKSAmJiBlbGUuZGVzY2VuZGFudHMoKS5zb21lKGZ1bmN0aW9uIChkKSB7XG4gICAgcmV0dXJuIG1hdGNoZXMoY2hlY2suZGVzY2VuZGFudCwgZCk7XG4gIH0pO1xufTtcblxubWF0Y2hbVHlwZS5DT01QT1VORF9TUExJVF0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICByZXR1cm4gbWF0Y2hlcyhjaGVjay5zdWJqZWN0LCBlbGUpICYmIG1hdGNoZXMoY2hlY2subGVmdCwgZWxlKSAmJiBtYXRjaGVzKGNoZWNrLnJpZ2h0LCBlbGUpO1xufTtcblxubWF0Y2hbVHlwZS5UUlVFXSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5tYXRjaFtUeXBlLkNPTExFQ1RJT05dID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgdmFyIGNvbGxlY3Rpb24gPSBjaGVjay52YWx1ZTtcbiAgcmV0dXJuIGNvbGxlY3Rpb24uaGFzKGVsZSk7XG59O1xuXG5tYXRjaFtUeXBlLkZJTFRFUl0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICB2YXIgZmlsdGVyID0gY2hlY2sudmFsdWU7XG4gIHJldHVybiBmaWx0ZXIoZWxlKTtcbn07XG5cbnZhciBmaWx0ZXIgPSBmdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbikge1xuICB2YXIgc2VsZiA9IHRoaXM7IC8vIGZvciAxIGlkICNmb28gcXVlcmllcywganVzdCBnZXQgdGhlIGVsZW1lbnRcblxuICBpZiAoc2VsZi5sZW5ndGggPT09IDEgJiYgc2VsZlswXS5jaGVja3MubGVuZ3RoID09PSAxICYmIHNlbGZbMF0uY2hlY2tzWzBdLnR5cGUgPT09IFR5cGUuSUQpIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5nZXRFbGVtZW50QnlJZChzZWxmWzBdLmNoZWNrc1swXS52YWx1ZSkuY29sbGVjdGlvbigpO1xuICB9XG5cbiAgdmFyIHNlbGVjdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiBzZWxlY3RvckZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGYubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBxdWVyeSA9IHNlbGZbal07XG5cbiAgICAgIGlmIChtYXRjaGVzKHF1ZXJ5LCBlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgaWYgKHNlbGYudGV4dCgpID09IG51bGwpIHtcbiAgICBzZWxlY3RvckZ1bmN0aW9uID0gZnVuY3Rpb24gc2VsZWN0b3JGdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gY29sbGVjdGlvbi5maWx0ZXIoc2VsZWN0b3JGdW5jdGlvbik7XG59OyAvLyBmaWx0ZXJcbi8vIGRvZXMgc2VsZWN0b3IgbWF0Y2ggYSBzaW5nbGUgZWxlbWVudD9cblxuXG52YXIgbWF0Y2hlcyQxID0gZnVuY3Rpb24gbWF0Y2hlcyQxKGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWxmLmxlbmd0aDsgaisrKSB7XG4gICAgdmFyIHF1ZXJ5ID0gc2VsZltqXTtcblxuICAgIGlmIChtYXRjaGVzKHF1ZXJ5LCBlbGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59OyAvLyBtYXRjaGVzXG5cblxudmFyIG1hdGNoaW5nID0ge1xuICBtYXRjaGVzOiBtYXRjaGVzJDEsXG4gIGZpbHRlcjogZmlsdGVyXG59O1xuXG52YXIgU2VsZWN0b3IgPSBmdW5jdGlvbiBTZWxlY3RvcihzZWxlY3Rvcikge1xuICB0aGlzLmlucHV0VGV4dCA9IHNlbGVjdG9yO1xuICB0aGlzLmN1cnJlbnRTdWJqZWN0ID0gbnVsbDtcbiAgdGhpcy5jb21wb3VuZENvdW50ID0gMDtcbiAgdGhpcy5lZGdlQ291bnQgPSAwO1xuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgaWYgKHNlbGVjdG9yID09IG51bGwgfHwgc3RyaW5nKHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5tYXRjaCgvXlxccyokLykpIDsgZWxzZSBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihzZWxlY3RvcikpIHtcbiAgICB0aGlzLmFkZFF1ZXJ5KHtcbiAgICAgIGNoZWNrczogW3tcbiAgICAgICAgdHlwZTogVHlwZS5DT0xMRUNUSU9OLFxuICAgICAgICB2YWx1ZTogc2VsZWN0b3IuY29sbGVjdGlvbigpXG4gICAgICB9XVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGZuKHNlbGVjdG9yKSkge1xuICAgIHRoaXMuYWRkUXVlcnkoe1xuICAgICAgY2hlY2tzOiBbe1xuICAgICAgICB0eXBlOiBUeXBlLkZJTFRFUixcbiAgICAgICAgdmFsdWU6IHNlbGVjdG9yXG4gICAgICB9XVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHN0cmluZyhzZWxlY3RvcikpIHtcbiAgICBpZiAoIXRoaXMucGFyc2Uoc2VsZWN0b3IpKSB7XG4gICAgICB0aGlzLmludmFsaWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBlcnJvcignQSBzZWxlY3RvciBtdXN0IGJlIGNyZWF0ZWQgZnJvbSBhIHN0cmluZzsgZm91bmQgJyk7XG4gIH1cbn07XG5cbnZhciBzZWxmbiA9IFNlbGVjdG9yLnByb3RvdHlwZTtcbltwYXJzZSQxLCBtYXRjaGluZ10uZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICByZXR1cm4gZXh0ZW5kKHNlbGZuLCBwKTtcbn0pO1xuXG5zZWxmbi50ZXh0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5pbnB1dFRleHQ7XG59O1xuXG5zZWxmbi5zaXplID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sZW5ndGg7XG59O1xuXG5zZWxmbi5lcSA9IGZ1bmN0aW9uIChpKSB7XG4gIHJldHVybiB0aGlzW2ldO1xufTtcblxuc2VsZm4uc2FtZVRleHQgPSBmdW5jdGlvbiAob3RoZXJTZWwpIHtcbiAgcmV0dXJuICF0aGlzLmludmFsaWQgJiYgIW90aGVyU2VsLmludmFsaWQgJiYgdGhpcy50ZXh0KCkgPT09IG90aGVyU2VsLnRleHQoKTtcbn07XG5cbnNlbGZuLmFkZFF1ZXJ5ID0gZnVuY3Rpb24gKHEpIHtcbiAgdGhpc1t0aGlzLmxlbmd0aCsrXSA9IHE7XG59O1xuXG5zZWxmbi5zZWxlY3RvciA9IHNlbGZuLnRvU3RyaW5nO1xuXG52YXIgZWxlc2ZuJGYgPSB7XG4gIGFsbEFyZTogZnVuY3Rpb24gYWxsQXJlKHNlbGVjdG9yKSB7XG4gICAgdmFyIHNlbE9iaiA9IG5ldyBTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMuZXZlcnkoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIHNlbE9iai5tYXRjaGVzKGVsZSk7XG4gICAgfSk7XG4gIH0sXG4gIGlzOiBmdW5jdGlvbiBpcyhzZWxlY3Rvcikge1xuICAgIHZhciBzZWxPYmogPSBuZXcgU2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIHJldHVybiB0aGlzLnNvbWUoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIHNlbE9iai5tYXRjaGVzKGVsZSk7XG4gICAgfSk7XG4gIH0sXG4gIHNvbWU6IGZ1bmN0aW9uIHNvbWUoZm4sIHRoaXNBcmcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByZXQgPSAhdGhpc0FyZyA/IGZuKHRoaXNbaV0sIGksIHRoaXMpIDogZm4uYXBwbHkodGhpc0FyZywgW3RoaXNbaV0sIGksIHRoaXNdKTtcblxuICAgICAgaWYgKHJldCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShmbiwgdGhpc0FyZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJldCA9ICF0aGlzQXJnID8gZm4odGhpc1tpXSwgaSwgdGhpcykgOiBmbi5hcHBseSh0aGlzQXJnLCBbdGhpc1tpXSwgaSwgdGhpc10pO1xuXG4gICAgICBpZiAoIXJldCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNhbWU6IGZ1bmN0aW9uIHNhbWUoY29sbGVjdGlvbikge1xuICAgIC8vIGNoZWFwIGNvbGxlY3Rpb24gcmVmIGNoZWNrXG4gICAgaWYgKHRoaXMgPT09IGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbGxlY3Rpb24gPSB0aGlzLmN5KCkuY29sbGVjdGlvbihjb2xsZWN0aW9uKTtcbiAgICB2YXIgdGhpc0xlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIHZhciBjb2xsZWN0aW9uTGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7IC8vIGNoZWFwIGxlbmd0aCBjaGVja1xuXG4gICAgaWYgKHRoaXNMZW5ndGggIT09IGNvbGxlY3Rpb25MZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGNoZWFwIGVsZW1lbnQgcmVmIGNoZWNrXG5cblxuICAgIGlmICh0aGlzTGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdGhpc1swXSA9PT0gY29sbGVjdGlvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ldmVyeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbi5oYXNFbGVtZW50V2l0aElkKGVsZS5pZCgpKTtcbiAgICB9KTtcbiAgfSxcbiAgYW55U2FtZTogZnVuY3Rpb24gYW55U2FtZShjb2xsZWN0aW9uKSB7XG4gICAgY29sbGVjdGlvbiA9IHRoaXMuY3koKS5jb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICAgIHJldHVybiB0aGlzLnNvbWUoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uaGFzRWxlbWVudFdpdGhJZChlbGUuaWQoKSk7XG4gICAgfSk7XG4gIH0sXG4gIGFsbEFyZU5laWdoYm9yczogZnVuY3Rpb24gYWxsQXJlTmVpZ2hib3JzKGNvbGxlY3Rpb24pIHtcbiAgICBjb2xsZWN0aW9uID0gdGhpcy5jeSgpLmNvbGxlY3Rpb24oY29sbGVjdGlvbik7XG4gICAgdmFyIG5ob29kID0gdGhpcy5uZWlnaGJvcmhvb2QoKTtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5ldmVyeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gbmhvb2QuaGFzRWxlbWVudFdpdGhJZChlbGUuaWQoKSk7XG4gICAgfSk7XG4gIH0sXG4gIGNvbnRhaW5zOiBmdW5jdGlvbiBjb250YWlucyhjb2xsZWN0aW9uKSB7XG4gICAgY29sbGVjdGlvbiA9IHRoaXMuY3koKS5jb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gY29sbGVjdGlvbi5ldmVyeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gc2VsZi5oYXNFbGVtZW50V2l0aElkKGVsZS5pZCgpKTtcbiAgICB9KTtcbiAgfVxufTtcbmVsZXNmbiRmLmFsbEFyZU5laWdoYm91cnMgPSBlbGVzZm4kZi5hbGxBcmVOZWlnaGJvcnM7XG5lbGVzZm4kZi5oYXMgPSBlbGVzZm4kZi5jb250YWlucztcbmVsZXNmbiRmLmVxdWFsID0gZWxlc2ZuJGYuZXF1YWxzID0gZWxlc2ZuJGYuc2FtZTtcblxudmFyIGNhY2hlID0gZnVuY3Rpb24gY2FjaGUoZm4sIG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyYXZlcnNhbENhY2hlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpIHtcbiAgICB2YXIgc2VsZWN0b3JPckVsZXMgPSBhcmcxO1xuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIga2V5O1xuXG4gICAgaWYgKHNlbGVjdG9yT3JFbGVzID09IG51bGwpIHtcbiAgICAgIGtleSA9ICcnO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihzZWxlY3Rvck9yRWxlcykgJiYgc2VsZWN0b3JPckVsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBrZXkgPSBzZWxlY3Rvck9yRWxlcy5pZCgpO1xuICAgIH1cblxuICAgIGlmIChlbGVzLmxlbmd0aCA9PT0gMSAmJiBrZXkpIHtcbiAgICAgIHZhciBfcCA9IGVsZXNbMF0uX3ByaXZhdGU7XG4gICAgICB2YXIgdGNoID0gX3AudHJhdmVyc2FsQ2FjaGUgPSBfcC50cmF2ZXJzYWxDYWNoZSB8fCB7fTtcbiAgICAgIHZhciBjaCA9IHRjaFtuYW1lXSA9IHRjaFtuYW1lXSB8fCBbXTtcbiAgICAgIHZhciBoYXNoID0gaGFzaFN0cmluZyhrZXkpO1xuICAgICAgdmFyIGNhY2hlSGl0ID0gY2hbaGFzaF07XG5cbiAgICAgIGlmIChjYWNoZUhpdCkge1xuICAgICAgICByZXR1cm4gY2FjaGVIaXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2hbaGFzaF0gPSBmbi5jYWxsKGVsZXMsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZm4uY2FsbChlbGVzLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgZWxlc2ZuJGcgPSB7XG4gIHBhcmVudDogZnVuY3Rpb24gcGFyZW50KHNlbGVjdG9yKSB7XG4gICAgdmFyIHBhcmVudHMgPSBbXTsgLy8gb3B0aW1pc2F0aW9uIGZvciBzaW5nbGUgZWxlIGNhbGxcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIHBhcmVudCA9IHRoaXNbMF0uX3ByaXZhdGUucGFyZW50O1xuXG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIHZhciBfcGFyZW50ID0gZWxlLl9wcml2YXRlLnBhcmVudDtcblxuICAgICAgaWYgKF9wYXJlbnQpIHtcbiAgICAgICAgcGFyZW50cy5wdXNoKF9wYXJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNwYXduKHBhcmVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sXG4gIHBhcmVudHM6IGZ1bmN0aW9uIHBhcmVudHMoc2VsZWN0b3IpIHtcbiAgICB2YXIgcGFyZW50cyA9IFtdO1xuICAgIHZhciBlbGVzID0gdGhpcy5wYXJlbnQoKTtcblxuICAgIHdoaWxlIChlbGVzLm5vbmVtcHR5KCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgcGFyZW50cy5wdXNoKGVsZSk7XG4gICAgICB9XG5cbiAgICAgIGVsZXMgPSBlbGVzLnBhcmVudCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNwYXduKHBhcmVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sXG4gIGNvbW1vbkFuY2VzdG9yczogZnVuY3Rpb24gY29tbW9uQW5jZXN0b3JzKHNlbGVjdG9yKSB7XG4gICAgdmFyIGFuY2VzdG9ycztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgcGFyZW50cyA9IGVsZS5wYXJlbnRzKCk7XG4gICAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMgfHwgcGFyZW50cztcbiAgICAgIGFuY2VzdG9ycyA9IGFuY2VzdG9ycy5pbnRlcnNlY3QocGFyZW50cyk7IC8vIGN1cnJlbnQgbGlzdCBtdXN0IGJlIGNvbW1vbiB3aXRoIGN1cnJlbnQgZWxlIHBhcmVudHMgc2V0XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9ycy5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBvcnBoYW5zOiBmdW5jdGlvbiBvcnBoYW5zKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RkRmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNPcnBoYW4oKTtcbiAgICB9KS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBub25vcnBoYW5zOiBmdW5jdGlvbiBub25vcnBoYW5zKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RkRmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNDaGlsZCgpO1xuICAgIH0pLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sXG4gIGNoaWxkcmVuOiBjYWNoZShmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgZWxlQ2hpbGRyZW4gPSBlbGUuX3ByaXZhdGUuY2hpbGRyZW47XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlQ2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChlbGVDaGlsZHJlbltqXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oY2hpbGRyZW4sIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH0sICdjaGlsZHJlbicpLFxuICBzaWJsaW5nczogZnVuY3Rpb24gc2libGluZ3Moc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQoKS5jaGlsZHJlbigpLm5vdCh0aGlzKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBpc1BhcmVudDogZnVuY3Rpb24gaXNQYXJlbnQoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5jaGlsZHJlbi5sZW5ndGggIT09IDA7XG4gICAgfVxuICB9LFxuICBpc0NoaWxkbGVzczogZnVuY3Rpb24gaXNDaGlsZGxlc3MoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gICAgfVxuICB9LFxuICBpc0NoaWxkOiBmdW5jdGlvbiBpc0NoaWxkKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5pc05vZGUoKSAmJiBlbGUuX3ByaXZhdGUucGFyZW50ICE9IG51bGw7XG4gICAgfVxuICB9LFxuICBpc09ycGhhbjogZnVuY3Rpb24gaXNPcnBoYW4oKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5wYXJlbnQgPT0gbnVsbDtcbiAgICB9XG4gIH0sXG4gIGRlc2NlbmRhbnRzOiBmdW5jdGlvbiBkZXNjZW5kYW50cyhzZWxlY3Rvcikge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuXG4gICAgZnVuY3Rpb24gYWRkKGVsZXMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgZWxlbWVudHMucHVzaChlbGUpO1xuXG4gICAgICAgIGlmIChlbGUuY2hpbGRyZW4oKS5ub25lbXB0eSgpKSB7XG4gICAgICAgICAgYWRkKGVsZS5jaGlsZHJlbigpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGFkZCh0aGlzLmNoaWxkcmVuKCkpO1xuICAgIHJldHVybiB0aGlzLnNwYXduKGVsZW1lbnRzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBmb3JFYWNoQ29tcG91bmQoZWxlcywgZm4sIGluY2x1ZGVTZWxmLCByZWN1cnNpdmVTdGVwKSB7XG4gIHZhciBxID0gW107XG4gIHZhciBkaWQgPSBuZXcgU2V0JDEoKTtcbiAgdmFyIGN5ID0gZWxlcy5jeSgpO1xuICB2YXIgaGFzQ29tcG91bmRzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuXG4gICAgaWYgKGluY2x1ZGVTZWxmKSB7XG4gICAgICBxLnB1c2goZWxlKTtcbiAgICB9IGVsc2UgaWYgKGhhc0NvbXBvdW5kcykge1xuICAgICAgcmVjdXJzaXZlU3RlcChxLCBkaWQsIGVsZSk7XG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKHEubGVuZ3RoID4gMCkge1xuICAgIHZhciBfZWxlID0gcS5zaGlmdCgpO1xuXG4gICAgZm4oX2VsZSk7XG4gICAgZGlkLmFkZChfZWxlLmlkKCkpO1xuXG4gICAgaWYgKGhhc0NvbXBvdW5kcykge1xuICAgICAgcmVjdXJzaXZlU3RlcChxLCBkaWQsIF9lbGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbGVzO1xufVxuXG5mdW5jdGlvbiBhZGRDaGlsZHJlbihxLCBkaWQsIGVsZSkge1xuICBpZiAoZWxlLmlzUGFyZW50KCkpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBlbGUuX3ByaXZhdGUuY2hpbGRyZW47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcblxuICAgICAgaWYgKCFkaWQuaGFzKGNoaWxkLmlkKCkpKSB7XG4gICAgICAgIHEucHVzaChjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59IC8vIHZlcnkgZWZmaWNpZW50IHZlcnNpb24gb2YgZWxlcy5hZGQoIGVsZXMuZGVzY2VuZGFudHMoKSApLmZvckVhY2goKVxuLy8gZm9yIGludGVybmFsIHVzZVxuXG5cbmVsZXNmbiRnLmZvckVhY2hEb3duID0gZnVuY3Rpb24gKGZuKSB7XG4gIHZhciBpbmNsdWRlU2VsZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgcmV0dXJuIGZvckVhY2hDb21wb3VuZCh0aGlzLCBmbiwgaW5jbHVkZVNlbGYsIGFkZENoaWxkcmVuKTtcbn07XG5cbmZ1bmN0aW9uIGFkZFBhcmVudChxLCBkaWQsIGVsZSkge1xuICBpZiAoZWxlLmlzQ2hpbGQoKSkge1xuICAgIHZhciBwYXJlbnQgPSBlbGUuX3ByaXZhdGUucGFyZW50O1xuXG4gICAgaWYgKCFkaWQuaGFzKHBhcmVudC5pZCgpKSkge1xuICAgICAgcS5wdXNoKHBhcmVudCk7XG4gICAgfVxuICB9XG59XG5cbmVsZXNmbiRnLmZvckVhY2hVcCA9IGZ1bmN0aW9uIChmbikge1xuICB2YXIgaW5jbHVkZVNlbGYgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gIHJldHVybiBmb3JFYWNoQ29tcG91bmQodGhpcywgZm4sIGluY2x1ZGVTZWxmLCBhZGRQYXJlbnQpO1xufTtcblxuZnVuY3Rpb24gYWRkUGFyZW50QW5kQ2hpbGRyZW4ocSwgZGlkLCBlbGUpIHtcbiAgYWRkUGFyZW50KHEsIGRpZCwgZWxlKTtcbiAgYWRkQ2hpbGRyZW4ocSwgZGlkLCBlbGUpO1xufVxuXG5lbGVzZm4kZy5mb3JFYWNoVXBBbmREb3duID0gZnVuY3Rpb24gKGZuKSB7XG4gIHZhciBpbmNsdWRlU2VsZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgcmV0dXJuIGZvckVhY2hDb21wb3VuZCh0aGlzLCBmbiwgaW5jbHVkZVNlbGYsIGFkZFBhcmVudEFuZENoaWxkcmVuKTtcbn07IC8vIGFsaWFzZXNcblxuXG5lbGVzZm4kZy5hbmNlc3RvcnMgPSBlbGVzZm4kZy5wYXJlbnRzO1xuXG52YXIgZm4kMSwgZWxlc2ZuJGg7XG5mbiQxID0gZWxlc2ZuJGggPSB7XG4gIGRhdGE6IGRlZmluZSQzLmRhdGEoe1xuICAgIGZpZWxkOiAnZGF0YScsXG4gICAgYmluZGluZ0V2ZW50OiAnZGF0YScsXG4gICAgYWxsb3dCaW5kaW5nOiB0cnVlLFxuICAgIGFsbG93U2V0dGluZzogdHJ1ZSxcbiAgICBzZXR0aW5nRXZlbnQ6ICdkYXRhJyxcbiAgICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogdHJ1ZSxcbiAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgYWxsb3dHZXR0aW5nOiB0cnVlLFxuICAgIGltbXV0YWJsZUtleXM6IHtcbiAgICAgICdpZCc6IHRydWUsXG4gICAgICAnc291cmNlJzogdHJ1ZSxcbiAgICAgICd0YXJnZXQnOiB0cnVlLFxuICAgICAgJ3BhcmVudCc6IHRydWVcbiAgICB9LFxuICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gIH0pLFxuICByZW1vdmVEYXRhOiBkZWZpbmUkMy5yZW1vdmVEYXRhKHtcbiAgICBmaWVsZDogJ2RhdGEnLFxuICAgIGV2ZW50OiAnZGF0YScsXG4gICAgdHJpZ2dlckZuTmFtZTogJ3RyaWdnZXInLFxuICAgIHRyaWdnZXJFdmVudDogdHJ1ZSxcbiAgICBpbW11dGFibGVLZXlzOiB7XG4gICAgICAnaWQnOiB0cnVlLFxuICAgICAgJ3NvdXJjZSc6IHRydWUsXG4gICAgICAndGFyZ2V0JzogdHJ1ZSxcbiAgICAgICdwYXJlbnQnOiB0cnVlXG4gICAgfSxcbiAgICB1cGRhdGVTdHlsZTogdHJ1ZVxuICB9KSxcbiAgc2NyYXRjaDogZGVmaW5lJDMuZGF0YSh7XG4gICAgZmllbGQ6ICdzY3JhdGNoJyxcbiAgICBiaW5kaW5nRXZlbnQ6ICdzY3JhdGNoJyxcbiAgICBhbGxvd0JpbmRpbmc6IHRydWUsXG4gICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgIHNldHRpbmdFdmVudDogJ3NjcmF0Y2gnLFxuICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiB0cnVlLFxuICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICBhbGxvd0dldHRpbmc6IHRydWUsXG4gICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgfSksXG4gIHJlbW92ZVNjcmF0Y2g6IGRlZmluZSQzLnJlbW92ZURhdGEoe1xuICAgIGZpZWxkOiAnc2NyYXRjaCcsXG4gICAgZXZlbnQ6ICdzY3JhdGNoJyxcbiAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgdHJpZ2dlckV2ZW50OiB0cnVlLFxuICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gIH0pLFxuICByc2NyYXRjaDogZGVmaW5lJDMuZGF0YSh7XG4gICAgZmllbGQ6ICdyc2NyYXRjaCcsXG4gICAgYWxsb3dCaW5kaW5nOiBmYWxzZSxcbiAgICBhbGxvd1NldHRpbmc6IHRydWUsXG4gICAgc2V0dGluZ1RyaWdnZXJzRXZlbnQ6IGZhbHNlLFxuICAgIGFsbG93R2V0dGluZzogdHJ1ZVxuICB9KSxcbiAgcmVtb3ZlUnNjcmF0Y2g6IGRlZmluZSQzLnJlbW92ZURhdGEoe1xuICAgIGZpZWxkOiAncnNjcmF0Y2gnLFxuICAgIHRyaWdnZXJFdmVudDogZmFsc2VcbiAgfSksXG4gIGlkOiBmdW5jdGlvbiBpZCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuX3ByaXZhdGUuZGF0YS5pZDtcbiAgICB9XG4gIH1cbn07IC8vIGFsaWFzZXNcblxuZm4kMS5hdHRyID0gZm4kMS5kYXRhO1xuZm4kMS5yZW1vdmVBdHRyID0gZm4kMS5yZW1vdmVEYXRhO1xudmFyIGRhdGEkMSA9IGVsZXNmbiRoO1xuXG52YXIgZWxlc2ZuJGkgPSB7fTtcblxuZnVuY3Rpb24gZGVmaW5lRGVncmVlRnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpbmNsdWRlTG9vcHMpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAoaW5jbHVkZUxvb3BzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluY2x1ZGVMb29wcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNlbGYubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlbGYuaXNOb2RlKCkgJiYgIXNlbGYucmVtb3ZlZCgpKSB7XG4gICAgICB2YXIgZGVncmVlID0gMDtcbiAgICAgIHZhciBub2RlID0gc2VsZlswXTtcbiAgICAgIHZhciBjb25uZWN0ZWRFZGdlcyA9IG5vZGUuX3ByaXZhdGUuZWRnZXM7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29ubmVjdGVkRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBjb25uZWN0ZWRFZGdlc1tpXTtcblxuICAgICAgICBpZiAoIWluY2x1ZGVMb29wcyAmJiBlZGdlLmlzTG9vcCgpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBkZWdyZWUgKz0gY2FsbGJhY2sobm9kZSwgZWRnZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZWdyZWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH07XG59XG5cbmV4dGVuZChlbGVzZm4kaSwge1xuICBkZWdyZWU6IGRlZmluZURlZ3JlZUZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBlZGdlKSB7XG4gICAgaWYgKGVkZ2Uuc291cmNlKCkuc2FtZShlZGdlLnRhcmdldCgpKSkge1xuICAgICAgcmV0dXJuIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSksXG4gIGluZGVncmVlOiBkZWZpbmVEZWdyZWVGdW5jdGlvbihmdW5jdGlvbiAobm9kZSwgZWRnZSkge1xuICAgIGlmIChlZGdlLnRhcmdldCgpLnNhbWUobm9kZSkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH0pLFxuICBvdXRkZWdyZWU6IGRlZmluZURlZ3JlZUZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBlZGdlKSB7XG4gICAgaWYgKGVkZ2Uuc291cmNlKCkuc2FtZShub2RlKSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSlcbn0pO1xuXG5mdW5jdGlvbiBkZWZpbmVEZWdyZWVCb3VuZHNGdW5jdGlvbihkZWdyZWVGbiwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpbmNsdWRlTG9vcHMpIHtcbiAgICB2YXIgcmV0O1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBub2Rlc1tpXTtcbiAgICAgIHZhciBkZWdyZWUgPSBlbGVbZGVncmVlRm5dKGluY2x1ZGVMb29wcyk7XG5cbiAgICAgIGlmIChkZWdyZWUgIT09IHVuZGVmaW5lZCAmJiAocmV0ID09PSB1bmRlZmluZWQgfHwgY2FsbGJhY2soZGVncmVlLCByZXQpKSkge1xuICAgICAgICByZXQgPSBkZWdyZWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbn1cblxuZXh0ZW5kKGVsZXNmbiRpLCB7XG4gIG1pbkRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ2RlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgIHJldHVybiBkZWdyZWUgPCBtaW47XG4gIH0pLFxuICBtYXhEZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdkZWdyZWUnLCBmdW5jdGlvbiAoZGVncmVlLCBtYXgpIHtcbiAgICByZXR1cm4gZGVncmVlID4gbWF4O1xuICB9KSxcbiAgbWluSW5kZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdpbmRlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgIHJldHVybiBkZWdyZWUgPCBtaW47XG4gIH0pLFxuICBtYXhJbmRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ2luZGVncmVlJywgZnVuY3Rpb24gKGRlZ3JlZSwgbWF4KSB7XG4gICAgcmV0dXJuIGRlZ3JlZSA+IG1heDtcbiAgfSksXG4gIG1pbk91dGRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ291dGRlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgIHJldHVybiBkZWdyZWUgPCBtaW47XG4gIH0pLFxuICBtYXhPdXRkZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdvdXRkZWdyZWUnLCBmdW5jdGlvbiAoZGVncmVlLCBtYXgpIHtcbiAgICByZXR1cm4gZGVncmVlID4gbWF4O1xuICB9KVxufSk7XG5leHRlbmQoZWxlc2ZuJGksIHtcbiAgdG90YWxEZWdyZWU6IGZ1bmN0aW9uIHRvdGFsRGVncmVlKGluY2x1ZGVMb29wcykge1xuICAgIHZhciB0b3RhbCA9IDA7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdG90YWwgKz0gbm9kZXNbaV0uZGVncmVlKGluY2x1ZGVMb29wcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvdGFsO1xuICB9XG59KTtcblxudmFyIGZuJDIsIGVsZXNmbiRqO1xuXG52YXIgYmVmb3JlUG9zaXRpb25TZXQgPSBmdW5jdGlvbiBiZWZvcmVQb3NpdGlvblNldChlbGVzLCBuZXdQb3MsIHNpbGVudCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tpXTtcblxuICAgIGlmICghZWxlLmxvY2tlZCgpKSB7XG4gICAgICB2YXIgb2xkUG9zID0gZWxlLl9wcml2YXRlLnBvc2l0aW9uO1xuICAgICAgdmFyIGRlbHRhID0ge1xuICAgICAgICB4OiBuZXdQb3MueCAhPSBudWxsID8gbmV3UG9zLnggLSBvbGRQb3MueCA6IDAsXG4gICAgICAgIHk6IG5ld1Bvcy55ICE9IG51bGwgPyBuZXdQb3MueSAtIG9sZFBvcy55IDogMFxuICAgICAgfTtcblxuICAgICAgaWYgKGVsZS5pc1BhcmVudCgpICYmICEoZGVsdGEueCA9PT0gMCAmJiBkZWx0YS55ID09PSAwKSkge1xuICAgICAgICBlbGUuY2hpbGRyZW4oKS5zaGlmdChkZWx0YSwgc2lsZW50KTtcbiAgICAgIH1cblxuICAgICAgZWxlLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHBvc2l0aW9uRGVmID0ge1xuICBmaWVsZDogJ3Bvc2l0aW9uJyxcbiAgYmluZGluZ0V2ZW50OiAncG9zaXRpb24nLFxuICBhbGxvd0JpbmRpbmc6IHRydWUsXG4gIGFsbG93U2V0dGluZzogdHJ1ZSxcbiAgc2V0dGluZ0V2ZW50OiAncG9zaXRpb24nLFxuICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogdHJ1ZSxcbiAgdHJpZ2dlckZuTmFtZTogJ2VtaXRBbmROb3RpZnknLFxuICBhbGxvd0dldHRpbmc6IHRydWUsXG4gIHZhbGlkS2V5czogWyd4JywgJ3knXSxcbiAgYmVmb3JlR2V0OiBmdW5jdGlvbiBiZWZvcmVHZXQoZWxlKSB7XG4gICAgZWxlLnVwZGF0ZUNvbXBvdW5kQm91bmRzKCk7XG4gIH0sXG4gIGJlZm9yZVNldDogZnVuY3Rpb24gYmVmb3JlU2V0KGVsZXMsIG5ld1Bvcykge1xuICAgIGJlZm9yZVBvc2l0aW9uU2V0KGVsZXMsIG5ld1BvcywgZmFsc2UpO1xuICB9LFxuICBvblNldDogZnVuY3Rpb24gb25TZXQoZWxlcykge1xuICAgIGVsZXMuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gIH0sXG4gIGNhblNldDogZnVuY3Rpb24gY2FuU2V0KGVsZSkge1xuICAgIHJldHVybiAhZWxlLmxvY2tlZCgpO1xuICB9XG59O1xuZm4kMiA9IGVsZXNmbiRqID0ge1xuICBwb3NpdGlvbjogZGVmaW5lJDMuZGF0YShwb3NpdGlvbkRlZiksXG4gIC8vIHBvc2l0aW9uIGJ1dCBubyBub3RpZmljYXRpb24gdG8gcmVuZGVyZXJcbiAgc2lsZW50UG9zaXRpb246IGRlZmluZSQzLmRhdGEoZXh0ZW5kKHt9LCBwb3NpdGlvbkRlZiwge1xuICAgIGFsbG93QmluZGluZzogZmFsc2UsXG4gICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiBmYWxzZSxcbiAgICBhbGxvd0dldHRpbmc6IGZhbHNlLFxuICAgIGJlZm9yZVNldDogZnVuY3Rpb24gYmVmb3JlU2V0KGVsZXMsIG5ld1Bvcykge1xuICAgICAgYmVmb3JlUG9zaXRpb25TZXQoZWxlcywgbmV3UG9zLCB0cnVlKTtcbiAgICB9LFxuICAgIG9uU2V0OiBmdW5jdGlvbiBvblNldChlbGVzKSB7XG4gICAgICBlbGVzLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpO1xuICAgIH1cbiAgfSkpLFxuICBwb3NpdGlvbnM6IGZ1bmN0aW9uIHBvc2l0aW9ucyhwb3MsIHNpbGVudCkge1xuICAgIGlmIChwbGFpbk9iamVjdChwb3MpKSB7XG4gICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgIHRoaXMuc2lsZW50UG9zaXRpb24ocG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9zaXRpb24ocG9zKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZuKHBvcykpIHtcbiAgICAgIHZhciBfZm4gPSBwb3M7XG4gICAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgICBjeS5zdGFydEJhdGNoKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcblxuICAgICAgICB2YXIgX3BvcyA9IHZvaWQgMDtcblxuICAgICAgICBpZiAoX3BvcyA9IF9mbihlbGUsIGkpKSB7XG4gICAgICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICAgICAgZWxlLnNpbGVudFBvc2l0aW9uKF9wb3MpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGUucG9zaXRpb24oX3Bvcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGN5LmVuZEJhdGNoKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHNpbGVudFBvc2l0aW9uczogZnVuY3Rpb24gc2lsZW50UG9zaXRpb25zKHBvcykge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9ucyhwb3MsIHRydWUpO1xuICB9LFxuICBzaGlmdDogZnVuY3Rpb24gc2hpZnQoZGltLCB2YWwsIHNpbGVudCkge1xuICAgIHZhciBkZWx0YTtcblxuICAgIGlmIChwbGFpbk9iamVjdChkaW0pKSB7XG4gICAgICBkZWx0YSA9IHtcbiAgICAgICAgeDogbnVtYmVyKGRpbS54KSA/IGRpbS54IDogMCxcbiAgICAgICAgeTogbnVtYmVyKGRpbS55KSA/IGRpbS55IDogMFxuICAgICAgfTtcbiAgICAgIHNpbGVudCA9IHZhbDtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyhkaW0pICYmIG51bWJlcih2YWwpKSB7XG4gICAgICBkZWx0YSA9IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfTtcbiAgICAgIGRlbHRhW2RpbV0gPSB2YWw7XG4gICAgfVxuXG4gICAgaWYgKGRlbHRhICE9IG51bGwpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICAgIGN5LnN0YXJ0QmF0Y2goKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgICB2YXIgcG9zID0gZWxlLnBvc2l0aW9uKCk7XG4gICAgICAgIHZhciBuZXdQb3MgPSB7XG4gICAgICAgICAgeDogcG9zLnggKyBkZWx0YS54LFxuICAgICAgICAgIHk6IHBvcy55ICsgZGVsdGEueVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgICBlbGUuc2lsZW50UG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGUucG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjeS5lbmRCYXRjaCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBzaWxlbnRTaGlmdDogZnVuY3Rpb24gc2lsZW50U2hpZnQoZGltLCB2YWwpIHtcbiAgICBpZiAocGxhaW5PYmplY3QoZGltKSkge1xuICAgICAgdGhpcy5zaGlmdChkaW0sIHRydWUpO1xuICAgIH0gZWxzZSBpZiAoc3RyaW5nKGRpbSkgJiYgbnVtYmVyKHZhbCkpIHtcbiAgICAgIHRoaXMuc2hpZnQoZGltLCB2YWwsIHRydWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICAvLyBnZXQvc2V0IHRoZSByZW5kZXJlZCAoaS5lLiBvbiBzY3JlZW4pIHBvc2l0b24gb2YgdGhlIGVsZW1lbnRcbiAgcmVuZGVyZWRQb3NpdGlvbjogZnVuY3Rpb24gcmVuZGVyZWRQb3NpdGlvbihkaW0sIHZhbCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHJwb3MgPSBwbGFpbk9iamVjdChkaW0pID8gZGltIDogdW5kZWZpbmVkO1xuICAgIHZhciBzZXR0aW5nID0gcnBvcyAhPT0gdW5kZWZpbmVkIHx8IHZhbCAhPT0gdW5kZWZpbmVkICYmIHN0cmluZyhkaW0pO1xuXG4gICAgaWYgKGVsZSAmJiBlbGUuaXNOb2RlKCkpIHtcbiAgICAgIC8vIG11c3QgaGF2ZSBhbiBlbGVtZW50IGFuZCBtdXN0IGJlIGEgbm9kZSB0byByZXR1cm4gcG9zaXRpb25cbiAgICAgIGlmIChzZXR0aW5nKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBfZWxlID0gdGhpc1tpXTtcblxuICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gc2V0IG9uZSBkaW1lbnNpb25cbiAgICAgICAgICAgIF9lbGUucG9zaXRpb24oZGltLCAodmFsIC0gcGFuW2RpbV0pIC8gem9vbSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChycG9zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHNldCB3aG9sZSBwb3NpdGlvblxuICAgICAgICAgICAgX2VsZS5wb3NpdGlvbihyZW5kZXJlZFRvTW9kZWxQb3NpdGlvbihycG9zLCB6b29tLCBwYW4pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGdldHRpbmdcbiAgICAgICAgdmFyIHBvcyA9IGVsZS5wb3NpdGlvbigpO1xuICAgICAgICBycG9zID0gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24ocG9zLCB6b29tLCBwYW4pO1xuXG4gICAgICAgIGlmIChkaW0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIHRoZW4gcmV0dXJuIHRoZSB3aG9sZSByZW5kZXJlZCBwb3NpdGlvblxuICAgICAgICAgIHJldHVybiBycG9zO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRoZW4gcmV0dXJuIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9uXG4gICAgICAgICAgcmV0dXJuIHJwb3NbZGltXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXNldHRpbmcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIGZvciBlbXB0eSBjb2xsZWN0aW9uIGNhc2VcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgLy8gZ2V0L3NldCB0aGUgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHBhcmVudFxuICByZWxhdGl2ZVBvc2l0aW9uOiBmdW5jdGlvbiByZWxhdGl2ZVBvc2l0aW9uKGRpbSwgdmFsKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHZhciBwcG9zID0gcGxhaW5PYmplY3QoZGltKSA/IGRpbSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgc2V0dGluZyA9IHBwb3MgIT09IHVuZGVmaW5lZCB8fCB2YWwgIT09IHVuZGVmaW5lZCAmJiBzdHJpbmcoZGltKTtcbiAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGN5Lmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgIGlmIChlbGUgJiYgZWxlLmlzTm9kZSgpKSB7XG4gICAgICAvLyBtdXN0IGhhdmUgYW4gZWxlbWVudCBhbmQgbXVzdCBiZSBhIG5vZGUgdG8gcmV0dXJuIHBvc2l0aW9uXG4gICAgICBpZiAoc2V0dGluZykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgX2VsZTIgPSB0aGlzW2ldO1xuICAgICAgICAgIHZhciBwYXJlbnQgPSBoYXNDb21wb3VuZE5vZGVzID8gX2VsZTIucGFyZW50KCkgOiBudWxsO1xuICAgICAgICAgIHZhciBoYXNQYXJlbnQgPSBwYXJlbnQgJiYgcGFyZW50Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgdmFyIHJlbGF0aXZlVG9QYXJlbnQgPSBoYXNQYXJlbnQ7XG5cbiAgICAgICAgICBpZiAoaGFzUGFyZW50KSB7XG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnRbMF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIG9yaWdpbiA9IHJlbGF0aXZlVG9QYXJlbnQgPyBwYXJlbnQucG9zaXRpb24oKSA6IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gc2V0IG9uZSBkaW1lbnNpb25cbiAgICAgICAgICAgIF9lbGUyLnBvc2l0aW9uKGRpbSwgdmFsICsgb3JpZ2luW2RpbV0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAocHBvcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBzZXQgd2hvbGUgcG9zaXRpb25cbiAgICAgICAgICAgIF9lbGUyLnBvc2l0aW9uKHtcbiAgICAgICAgICAgICAgeDogcHBvcy54ICsgb3JpZ2luLngsXG4gICAgICAgICAgICAgIHk6IHBwb3MueSArIG9yaWdpbi55XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGdldHRpbmdcbiAgICAgICAgdmFyIHBvcyA9IGVsZS5wb3NpdGlvbigpO1xuXG4gICAgICAgIHZhciBfcGFyZW50ID0gaGFzQ29tcG91bmROb2RlcyA/IGVsZS5wYXJlbnQoKSA6IG51bGw7XG5cbiAgICAgICAgdmFyIF9oYXNQYXJlbnQgPSBfcGFyZW50ICYmIF9wYXJlbnQubGVuZ3RoID4gMDtcblxuICAgICAgICB2YXIgX3JlbGF0aXZlVG9QYXJlbnQgPSBfaGFzUGFyZW50O1xuXG4gICAgICAgIGlmIChfaGFzUGFyZW50KSB7XG4gICAgICAgICAgX3BhcmVudCA9IF9wYXJlbnRbMF07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX29yaWdpbiA9IF9yZWxhdGl2ZVRvUGFyZW50ID8gX3BhcmVudC5wb3NpdGlvbigpIDoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9O1xuXG4gICAgICAgIHBwb3MgPSB7XG4gICAgICAgICAgeDogcG9zLnggLSBfb3JpZ2luLngsXG4gICAgICAgICAgeTogcG9zLnkgLSBfb3JpZ2luLnlcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZGltID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyB0aGVuIHJldHVybiB0aGUgd2hvbGUgcmVuZGVyZWQgcG9zaXRpb25cbiAgICAgICAgICByZXR1cm4gcHBvcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGVuIHJldHVybiB0aGUgc3BlY2lmaWVkIGRpbWVuc2lvblxuICAgICAgICAgIHJldHVybiBwcG9zW2RpbV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFzZXR0aW5nKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBmb3IgZW1wdHkgY29sbGVjdGlvbiBjYXNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH1cbn07IC8vIGFsaWFzZXNcblxuZm4kMi5tb2RlbFBvc2l0aW9uID0gZm4kMi5wb2ludCA9IGZuJDIucG9zaXRpb247XG5mbiQyLm1vZGVsUG9zaXRpb25zID0gZm4kMi5wb2ludHMgPSBmbiQyLnBvc2l0aW9ucztcbmZuJDIucmVuZGVyZWRQb2ludCA9IGZuJDIucmVuZGVyZWRQb3NpdGlvbjtcbmZuJDIucmVsYXRpdmVQb2ludCA9IGZuJDIucmVsYXRpdmVQb3NpdGlvbjtcbnZhciBwb3NpdGlvbiA9IGVsZXNmbiRqO1xuXG52YXIgZm4kMywgZWxlc2ZuJGs7XG5mbiQzID0gZWxlc2ZuJGsgPSB7fTtcblxuZWxlc2ZuJGsucmVuZGVyZWRCb3VuZGluZ0JveCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBiYiA9IHRoaXMuYm91bmRpbmdCb3gob3B0aW9ucyk7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgdmFyIHgxID0gYmIueDEgKiB6b29tICsgcGFuLng7XG4gIHZhciB4MiA9IGJiLngyICogem9vbSArIHBhbi54O1xuICB2YXIgeTEgPSBiYi55MSAqIHpvb20gKyBwYW4ueTtcbiAgdmFyIHkyID0gYmIueTIgKiB6b29tICsgcGFuLnk7XG4gIHJldHVybiB7XG4gICAgeDE6IHgxLFxuICAgIHgyOiB4MixcbiAgICB5MTogeTEsXG4gICAgeTI6IHkyLFxuICAgIHc6IHgyIC0geDEsXG4gICAgaDogeTIgLSB5MVxuICB9O1xufTtcblxuZWxlc2ZuJGsuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2lsZW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcbiAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gIGlmICghY3kuc3R5bGVFbmFibGVkKCkgfHwgIWN5Lmhhc0NvbXBvdW5kTm9kZXMoKSkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5mb3JFYWNoVXAoZnVuY3Rpb24gKGVsZSkge1xuICAgIGlmIChlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgX3AuY29tcG91bmRCb3VuZHNDbGVhbiA9IGZhbHNlO1xuICAgICAgX3AuYmJDYWNoZSA9IG51bGw7XG5cbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIGVsZS5lbWl0QW5kTm90aWZ5KCdib3VuZHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmVsZXNmbiRrLnVwZGF0ZUNvbXBvdW5kQm91bmRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZm9yY2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZhbHNlO1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7IC8vIG5vdCBwb3NzaWJsZSB0byBkbyBvbiBub24tY29tcG91bmQgZ3JhcGhzIG9yIHdpdGggdGhlIHN0eWxlIGRpc2FibGVkXG5cbiAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSB8fCAhY3kuaGFzQ29tcG91bmROb2RlcygpKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gLy8gc2F2ZSBjeWNsZXMgd2hlbiBiYXRjaGluZyAtLSBidXQgYm91bmRzIHdpbGwgYmUgc3RhbGUgKG9yIG5vdCBleGlzdCB5ZXQpXG5cblxuICBpZiAoIWZvcmNlICYmIGN5LmJhdGNoaW5nKCkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZShwYXJlbnQpIHtcbiAgICBpZiAoIXBhcmVudC5pc1BhcmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIF9wID0gcGFyZW50Ll9wcml2YXRlO1xuICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbigpO1xuICAgIHZhciBpbmNsdWRlTGFiZWxzID0gcGFyZW50LnBzdHlsZSgnY29tcG91bmQtc2l6aW5nLXdydC1sYWJlbHMnKS52YWx1ZSA9PT0gJ2luY2x1ZGUnO1xuICAgIHZhciBtaW4gPSB7XG4gICAgICB3aWR0aDoge1xuICAgICAgICB2YWw6IHBhcmVudC5wc3R5bGUoJ21pbi13aWR0aCcpLnBmVmFsdWUsXG4gICAgICAgIGxlZnQ6IHBhcmVudC5wc3R5bGUoJ21pbi13aWR0aC1iaWFzLWxlZnQnKSxcbiAgICAgICAgcmlnaHQ6IHBhcmVudC5wc3R5bGUoJ21pbi13aWR0aC1iaWFzLXJpZ2h0JylcbiAgICAgIH0sXG4gICAgICBoZWlnaHQ6IHtcbiAgICAgICAgdmFsOiBwYXJlbnQucHN0eWxlKCdtaW4taGVpZ2h0JykucGZWYWx1ZSxcbiAgICAgICAgdG9wOiBwYXJlbnQucHN0eWxlKCdtaW4taGVpZ2h0LWJpYXMtdG9wJyksXG4gICAgICAgIGJvdHRvbTogcGFyZW50LnBzdHlsZSgnbWluLWhlaWdodC1iaWFzLWJvdHRvbScpXG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgYmIgPSBjaGlsZHJlbi5ib3VuZGluZ0JveCh7XG4gICAgICBpbmNsdWRlTGFiZWxzOiBpbmNsdWRlTGFiZWxzLFxuICAgICAgaW5jbHVkZU92ZXJsYXlzOiBmYWxzZSxcbiAgICAgIC8vIHVwZGF0aW5nIHRoZSBjb21wb3VuZCBib3VuZHMgaGFwcGVucyBvdXRzaWRlIG9mIHRoZSByZWd1bGFyXG4gICAgICAvLyBjYWNoZSBjeWNsZSAoaS5lLiBiZWZvcmUgZmlyZWQgZXZlbnRzKVxuICAgICAgdXNlQ2FjaGU6IGZhbHNlXG4gICAgfSk7XG4gICAgdmFyIHBvcyA9IF9wLnBvc2l0aW9uOyAvLyBpZiBjaGlsZHJlbiB0YWtlIHVwIHplcm8gYXJlYSB0aGVuIGtlZXAgcG9zaXRpb24gYW5kIGZhbGwgYmFjayBvbiBzdHlsZXNoZWV0IHcvaFxuXG4gICAgaWYgKGJiLncgPT09IDAgfHwgYmIuaCA9PT0gMCkge1xuICAgICAgYmIgPSB7XG4gICAgICAgIHc6IHBhcmVudC5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSxcbiAgICAgICAgaDogcGFyZW50LnBzdHlsZSgnaGVpZ2h0JykucGZWYWx1ZVxuICAgICAgfTtcbiAgICAgIGJiLngxID0gcG9zLnggLSBiYi53IC8gMjtcbiAgICAgIGJiLngyID0gcG9zLnggKyBiYi53IC8gMjtcbiAgICAgIGJiLnkxID0gcG9zLnkgLSBiYi5oIC8gMjtcbiAgICAgIGJiLnkyID0gcG9zLnkgKyBiYi5oIC8gMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlQmlhc1ZhbHVlcyhwcm9wRGlmZiwgcHJvcEJpYXMsIHByb3BCaWFzQ29tcGxlbWVudCkge1xuICAgICAgdmFyIGJpYXNEaWZmID0gMDtcbiAgICAgIHZhciBiaWFzQ29tcGxlbWVudERpZmYgPSAwO1xuICAgICAgdmFyIGJpYXNUb3RhbCA9IHByb3BCaWFzICsgcHJvcEJpYXNDb21wbGVtZW50O1xuXG4gICAgICBpZiAocHJvcERpZmYgPiAwICYmIGJpYXNUb3RhbCA+IDApIHtcbiAgICAgICAgYmlhc0RpZmYgPSBwcm9wQmlhcyAvIGJpYXNUb3RhbCAqIHByb3BEaWZmO1xuICAgICAgICBiaWFzQ29tcGxlbWVudERpZmYgPSBwcm9wQmlhc0NvbXBsZW1lbnQgLyBiaWFzVG90YWwgKiBwcm9wRGlmZjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmlhc0RpZmY6IGJpYXNEaWZmLFxuICAgICAgICBiaWFzQ29tcGxlbWVudERpZmY6IGJpYXNDb21wbGVtZW50RGlmZlxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlUGFkZGluZ1ZhbHVlcyh3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nT2JqZWN0LCByZWxhdGl2ZVRvKSB7XG4gICAgICAvLyBBc3N1bWluZyBwZXJjZW50YWdlIGlzIG51bWJlciBmcm9tIDAgdG8gMVxuICAgICAgaWYgKHBhZGRpbmdPYmplY3QudW5pdHMgPT09ICclJykge1xuICAgICAgICBzd2l0Y2ggKHJlbGF0aXZlVG8pIHtcbiAgICAgICAgICBjYXNlICd3aWR0aCc6XG4gICAgICAgICAgICByZXR1cm4gd2lkdGggPiAwID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiAwO1xuXG4gICAgICAgICAgY2FzZSAnaGVpZ2h0JzpcbiAgICAgICAgICAgIHJldHVybiBoZWlnaHQgPiAwID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogaGVpZ2h0IDogMDtcblxuICAgICAgICAgIGNhc2UgJ2F2ZXJhZ2UnOlxuICAgICAgICAgICAgcmV0dXJuIHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogKHdpZHRoICsgaGVpZ2h0KSAvIDIgOiAwO1xuXG4gICAgICAgICAgY2FzZSAnbWluJzpcbiAgICAgICAgICAgIHJldHVybiB3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCA/IHdpZHRoID4gaGVpZ2h0ID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogaGVpZ2h0IDogcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiAwO1xuXG4gICAgICAgICAgY2FzZSAnbWF4JzpcbiAgICAgICAgICAgIHJldHVybiB3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCA/IHdpZHRoID4gaGVpZ2h0ID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiBwYWRkaW5nT2JqZWN0LnBmVmFsdWUgKiBoZWlnaHQgOiAwO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhZGRpbmdPYmplY3QudW5pdHMgPT09ICdweCcpIHtcbiAgICAgICAgcmV0dXJuIHBhZGRpbmdPYmplY3QucGZWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsZWZ0VmFsID0gbWluLndpZHRoLmxlZnQudmFsdWU7XG5cbiAgICBpZiAobWluLndpZHRoLmxlZnQudW5pdHMgPT09ICdweCcgJiYgbWluLndpZHRoLnZhbCA+IDApIHtcbiAgICAgIGxlZnRWYWwgPSBsZWZ0VmFsICogMTAwIC8gbWluLndpZHRoLnZhbDtcbiAgICB9XG5cbiAgICB2YXIgcmlnaHRWYWwgPSBtaW4ud2lkdGgucmlnaHQudmFsdWU7XG5cbiAgICBpZiAobWluLndpZHRoLnJpZ2h0LnVuaXRzID09PSAncHgnICYmIG1pbi53aWR0aC52YWwgPiAwKSB7XG4gICAgICByaWdodFZhbCA9IHJpZ2h0VmFsICogMTAwIC8gbWluLndpZHRoLnZhbDtcbiAgICB9XG5cbiAgICB2YXIgdG9wVmFsID0gbWluLmhlaWdodC50b3AudmFsdWU7XG5cbiAgICBpZiAobWluLmhlaWdodC50b3AudW5pdHMgPT09ICdweCcgJiYgbWluLmhlaWdodC52YWwgPiAwKSB7XG4gICAgICB0b3BWYWwgPSB0b3BWYWwgKiAxMDAgLyBtaW4uaGVpZ2h0LnZhbDtcbiAgICB9XG5cbiAgICB2YXIgYm90dG9tVmFsID0gbWluLmhlaWdodC5ib3R0b20udmFsdWU7XG5cbiAgICBpZiAobWluLmhlaWdodC5ib3R0b20udW5pdHMgPT09ICdweCcgJiYgbWluLmhlaWdodC52YWwgPiAwKSB7XG4gICAgICBib3R0b21WYWwgPSBib3R0b21WYWwgKiAxMDAgLyBtaW4uaGVpZ2h0LnZhbDtcbiAgICB9XG5cbiAgICB2YXIgd2lkdGhCaWFzRGlmZnMgPSBjb21wdXRlQmlhc1ZhbHVlcyhtaW4ud2lkdGgudmFsIC0gYmIudywgbGVmdFZhbCwgcmlnaHRWYWwpO1xuICAgIHZhciBkaWZmTGVmdCA9IHdpZHRoQmlhc0RpZmZzLmJpYXNEaWZmO1xuICAgIHZhciBkaWZmUmlnaHQgPSB3aWR0aEJpYXNEaWZmcy5iaWFzQ29tcGxlbWVudERpZmY7XG4gICAgdmFyIGhlaWdodEJpYXNEaWZmcyA9IGNvbXB1dGVCaWFzVmFsdWVzKG1pbi5oZWlnaHQudmFsIC0gYmIuaCwgdG9wVmFsLCBib3R0b21WYWwpO1xuICAgIHZhciBkaWZmVG9wID0gaGVpZ2h0Qmlhc0RpZmZzLmJpYXNEaWZmO1xuICAgIHZhciBkaWZmQm90dG9tID0gaGVpZ2h0Qmlhc0RpZmZzLmJpYXNDb21wbGVtZW50RGlmZjtcbiAgICBfcC5hdXRvUGFkZGluZyA9IGNvbXB1dGVQYWRkaW5nVmFsdWVzKGJiLncsIGJiLmgsIHBhcmVudC5wc3R5bGUoJ3BhZGRpbmcnKSwgcGFyZW50LnBzdHlsZSgncGFkZGluZy1yZWxhdGl2ZS10bycpLnZhbHVlKTtcbiAgICBfcC5hdXRvV2lkdGggPSBNYXRoLm1heChiYi53LCBtaW4ud2lkdGgudmFsKTtcbiAgICBwb3MueCA9ICgtZGlmZkxlZnQgKyBiYi54MSArIGJiLngyICsgZGlmZlJpZ2h0KSAvIDI7XG4gICAgX3AuYXV0b0hlaWdodCA9IE1hdGgubWF4KGJiLmgsIG1pbi5oZWlnaHQudmFsKTtcbiAgICBwb3MueSA9ICgtZGlmZlRvcCArIGJiLnkxICsgYmIueTIgKyBkaWZmQm90dG9tKSAvIDI7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG5cbiAgICBpZiAoIV9wLmNvbXBvdW5kQm91bmRzQ2xlYW4gfHwgZm9yY2UpIHtcbiAgICAgIHVwZGF0ZShlbGUpO1xuXG4gICAgICBpZiAoIWN5LmJhdGNoaW5nKCkpIHtcbiAgICAgICAgX3AuY29tcG91bmRCb3VuZHNDbGVhbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG52YXIgbm9uaW5mID0gZnVuY3Rpb24gbm9uaW5mKHgpIHtcbiAgaWYgKHggPT09IEluZmluaXR5IHx8IHggPT09IC1JbmZpbml0eSkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHg7XG59O1xuXG52YXIgdXBkYXRlQm91bmRzID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzKGIsIHgxLCB5MSwgeDIsIHkyKSB7XG4gIC8vIGRvbid0IHVwZGF0ZSB3aXRoIHplcm8gYXJlYSBib3hlc1xuICBpZiAoeDIgLSB4MSA9PT0gMCB8fCB5MiAtIHkxID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIGRvbid0IHVwZGF0ZSB3aXRoIG51bGwgZGltXG5cblxuICBpZiAoeDEgPT0gbnVsbCB8fCB5MSA9PSBudWxsIHx8IHgyID09IG51bGwgfHwgeTIgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGIueDEgPSB4MSA8IGIueDEgPyB4MSA6IGIueDE7XG4gIGIueDIgPSB4MiA+IGIueDIgPyB4MiA6IGIueDI7XG4gIGIueTEgPSB5MSA8IGIueTEgPyB5MSA6IGIueTE7XG4gIGIueTIgPSB5MiA+IGIueTIgPyB5MiA6IGIueTI7XG4gIGIudyA9IGIueDIgLSBiLngxO1xuICBiLmggPSBiLnkyIC0gYi55MTtcbn07XG5cbnZhciB1cGRhdGVCb3VuZHNGcm9tQm94ID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzRnJvbUJveChiLCBiMikge1xuICBpZiAoYjIgPT0gbnVsbCkge1xuICAgIHJldHVybiBiO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZUJvdW5kcyhiLCBiMi54MSwgYjIueTEsIGIyLngyLCBiMi55Mik7XG59O1xuXG52YXIgcHJlZml4ZWRQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByZWZpeGVkUHJvcGVydHkob2JqLCBmaWVsZCwgcHJlZml4KSB7XG4gIHJldHVybiBnZXRQcmVmaXhlZFByb3BlcnR5KG9iaiwgZmllbGQsIHByZWZpeCk7XG59O1xuXG52YXIgdXBkYXRlQm91bmRzRnJvbUFycm93ID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzRnJvbUFycm93KGJvdW5kcywgZWxlLCBwcmVmaXgpIHtcbiAgaWYgKGVsZS5jeSgpLmhlYWRsZXNzKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gIHZhciBoYWxmQXJXID0gcnN0eWxlLmFycm93V2lkdGggLyAyO1xuICB2YXIgYXJyb3dUeXBlID0gZWxlLnBzdHlsZShwcmVmaXggKyAnLWFycm93LXNoYXBlJykudmFsdWU7XG4gIHZhciB4O1xuICB2YXIgeTtcblxuICBpZiAoYXJyb3dUeXBlICE9PSAnbm9uZScpIHtcbiAgICBpZiAocHJlZml4ID09PSAnc291cmNlJykge1xuICAgICAgeCA9IHJzdHlsZS5zcmNYO1xuICAgICAgeSA9IHJzdHlsZS5zcmNZO1xuICAgIH0gZWxzZSBpZiAocHJlZml4ID09PSAndGFyZ2V0Jykge1xuICAgICAgeCA9IHJzdHlsZS50Z3RYO1xuICAgICAgeSA9IHJzdHlsZS50Z3RZO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0gcnN0eWxlLm1pZFg7XG4gICAgICB5ID0gcnN0eWxlLm1pZFk7XG4gICAgfSAvLyBhbHdheXMgc3RvcmUgdGhlIGluZGl2aWR1YWwgYXJyb3cgYm91bmRzXG5cblxuICAgIHZhciBiYnMgPSBfcC5hcnJvd0JvdW5kcyA9IF9wLmFycm93Qm91bmRzIHx8IHt9O1xuICAgIHZhciBiYiA9IGJic1twcmVmaXhdID0gYmJzW3ByZWZpeF0gfHwge307XG4gICAgYmIueDEgPSB4IC0gaGFsZkFyVztcbiAgICBiYi55MSA9IHkgLSBoYWxmQXJXO1xuICAgIGJiLngyID0geCArIGhhbGZBclc7XG4gICAgYmIueTIgPSB5ICsgaGFsZkFyVztcbiAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgICBleHBhbmRCb3VuZGluZ0JveChiYiwgMSk7XG4gICAgdXBkYXRlQm91bmRzKGJvdW5kcywgYmIueDEsIGJiLnkxLCBiYi54MiwgYmIueTIpO1xuICB9XG59O1xuXG52YXIgdXBkYXRlQm91bmRzRnJvbUxhYmVsID0gZnVuY3Rpb24gdXBkYXRlQm91bmRzRnJvbUxhYmVsKGJvdW5kcywgZWxlLCBwcmVmaXgpIHtcbiAgaWYgKGVsZS5jeSgpLmhlYWRsZXNzKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcHJlZml4RGFzaDtcblxuICBpZiAocHJlZml4KSB7XG4gICAgcHJlZml4RGFzaCA9IHByZWZpeCArICctJztcbiAgfSBlbHNlIHtcbiAgICBwcmVmaXhEYXNoID0gJyc7XG4gIH1cblxuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gIHZhciBsYWJlbCA9IGVsZS5wc3R5bGUocHJlZml4RGFzaCArICdsYWJlbCcpLnN0clZhbHVlO1xuXG4gIGlmIChsYWJlbCkge1xuICAgIHZhciBoYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpO1xuICAgIHZhciB2YWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LXZhbGlnbicpO1xuICAgIHZhciBsYWJlbFdpZHRoID0gcHJlZml4ZWRQcm9wZXJ0eShyc3R5bGUsICdsYWJlbFdpZHRoJywgcHJlZml4KTtcbiAgICB2YXIgbGFiZWxIZWlnaHQgPSBwcmVmaXhlZFByb3BlcnR5KHJzdHlsZSwgJ2xhYmVsSGVpZ2h0JywgcHJlZml4KTtcbiAgICB2YXIgbGFiZWxYID0gcHJlZml4ZWRQcm9wZXJ0eShyc3R5bGUsICdsYWJlbFgnLCBwcmVmaXgpO1xuICAgIHZhciBsYWJlbFkgPSBwcmVmaXhlZFByb3BlcnR5KHJzdHlsZSwgJ2xhYmVsWScsIHByZWZpeCk7XG4gICAgdmFyIG1hcmdpblggPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teCcpLnBmVmFsdWU7XG4gICAgdmFyIG1hcmdpblkgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teScpLnBmVmFsdWU7XG4gICAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgICB2YXIgcm90YXRpb24gPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1yb3RhdGlvbicpO1xuICAgIHZhciBvdXRsaW5lV2lkdGggPSBlbGUucHN0eWxlKCd0ZXh0LW91dGxpbmUtd2lkdGgnKS5wZlZhbHVlO1xuICAgIHZhciBib3JkZXJXaWR0aCA9IGVsZS5wc3R5bGUoJ3RleHQtYm9yZGVyLXdpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgaGFsZkJvcmRlcldpZHRoID0gYm9yZGVyV2lkdGggLyAyO1xuICAgIHZhciBwYWRkaW5nID0gZWxlLnBzdHlsZSgndGV4dC1iYWNrZ3JvdW5kLXBhZGRpbmcnKS5wZlZhbHVlO1xuICAgIHZhciBtYXJnaW5PZkVycm9yID0gMjsgLy8gZXhwYW5kIHRvIHdvcmsgYXJvdW5kIGJyb3dzZXIgZGltZW5zaW9uIGluYWNjdXJhY2llc1xuXG4gICAgdmFyIGxoID0gbGFiZWxIZWlnaHQ7XG4gICAgdmFyIGx3ID0gbGFiZWxXaWR0aDtcbiAgICB2YXIgbHdfMiA9IGx3IC8gMjtcbiAgICB2YXIgbGhfMiA9IGxoIC8gMjtcbiAgICB2YXIgbHgxLCBseDIsIGx5MSwgbHkyO1xuXG4gICAgaWYgKGlzRWRnZSkge1xuICAgICAgbHgxID0gbGFiZWxYIC0gbHdfMjtcbiAgICAgIGx4MiA9IGxhYmVsWCArIGx3XzI7XG4gICAgICBseTEgPSBsYWJlbFkgLSBsaF8yO1xuICAgICAgbHkyID0gbGFiZWxZICsgbGhfMjtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChoYWxpZ24udmFsdWUpIHtcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgbHgxID0gbGFiZWxYIC0gbHc7XG4gICAgICAgICAgbHgyID0gbGFiZWxYO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgbHgxID0gbGFiZWxYIC0gbHdfMjtcbiAgICAgICAgICBseDIgPSBsYWJlbFggKyBsd18yO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBseDEgPSBsYWJlbFg7XG4gICAgICAgICAgbHgyID0gbGFiZWxYICsgbHc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAodmFsaWduLnZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgbHkxID0gbGFiZWxZIC0gbGg7XG4gICAgICAgICAgbHkyID0gbGFiZWxZO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgbHkxID0gbGFiZWxZIC0gbGhfMjtcbiAgICAgICAgICBseTIgPSBsYWJlbFkgKyBsaF8yO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgbHkxID0gbGFiZWxZO1xuICAgICAgICAgIGx5MiA9IGxhYmVsWSArIGxoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gLy8gc2hpZnQgYnkgbWFyZ2luIGFuZCBleHBhbmQgYnkgb3V0bGluZSBhbmQgYm9yZGVyXG5cblxuICAgIGx4MSArPSBtYXJnaW5YIC0gTWF0aC5tYXgob3V0bGluZVdpZHRoLCBoYWxmQm9yZGVyV2lkdGgpIC0gcGFkZGluZyAtIG1hcmdpbk9mRXJyb3I7XG4gICAgbHgyICs9IG1hcmdpblggKyBNYXRoLm1heChvdXRsaW5lV2lkdGgsIGhhbGZCb3JkZXJXaWR0aCkgKyBwYWRkaW5nICsgbWFyZ2luT2ZFcnJvcjtcbiAgICBseTEgKz0gbWFyZ2luWSAtIE1hdGgubWF4KG91dGxpbmVXaWR0aCwgaGFsZkJvcmRlcldpZHRoKSAtIHBhZGRpbmcgLSBtYXJnaW5PZkVycm9yO1xuICAgIGx5MiArPSBtYXJnaW5ZICsgTWF0aC5tYXgob3V0bGluZVdpZHRoLCBoYWxmQm9yZGVyV2lkdGgpICsgcGFkZGluZyArIG1hcmdpbk9mRXJyb3I7IC8vIGFsd2F5cyBzdG9yZSB0aGUgdW5yb3RhdGVkIGxhYmVsIGJvdW5kcyBzZXBhcmF0ZWx5XG5cbiAgICB2YXIgYmJQcmVmaXggPSBwcmVmaXggfHwgJ21haW4nO1xuICAgIHZhciBiYnMgPSBfcC5sYWJlbEJvdW5kcztcbiAgICB2YXIgYmIgPSBiYnNbYmJQcmVmaXhdID0gYmJzW2JiUHJlZml4XSB8fCB7fTtcbiAgICBiYi54MSA9IGx4MTtcbiAgICBiYi55MSA9IGx5MTtcbiAgICBiYi54MiA9IGx4MjtcbiAgICBiYi55MiA9IGx5MjtcbiAgICBiYi53ID0gbHgyIC0gbHgxO1xuICAgIGJiLmggPSBseTIgLSBseTE7XG4gICAgdmFyIGlzQXV0b3JvdGF0ZSA9IGlzRWRnZSAmJiByb3RhdGlvbi5zdHJWYWx1ZSA9PT0gJ2F1dG9yb3RhdGUnO1xuICAgIHZhciBpc1BmVmFsdWUgPSByb3RhdGlvbi5wZlZhbHVlICE9IG51bGwgJiYgcm90YXRpb24ucGZWYWx1ZSAhPT0gMDtcblxuICAgIGlmIChpc0F1dG9yb3RhdGUgfHwgaXNQZlZhbHVlKSB7XG4gICAgICB2YXIgdGhldGEgPSBpc0F1dG9yb3RhdGUgPyBwcmVmaXhlZFByb3BlcnR5KF9wLnJzdHlsZSwgJ2xhYmVsQW5nbGUnLCBwcmVmaXgpIDogcm90YXRpb24ucGZWYWx1ZTtcbiAgICAgIHZhciBjb3MgPSBNYXRoLmNvcyh0aGV0YSk7XG4gICAgICB2YXIgc2luID0gTWF0aC5zaW4odGhldGEpOyAvLyByb3RhdGlvbiBwb2ludCAoZGVmYXVsdCB2YWx1ZSBmb3IgY2VudGVyLWNlbnRlcilcblxuICAgICAgdmFyIHhvID0gKGx4MSArIGx4MikgLyAyO1xuICAgICAgdmFyIHlvID0gKGx5MSArIGx5MikgLyAyO1xuXG4gICAgICBpZiAoIWlzRWRnZSkge1xuICAgICAgICBzd2l0Y2ggKGhhbGlnbi52YWx1ZSkge1xuICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgeG8gPSBseDI7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgIHhvID0gbHgxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHZhbGlnbi52YWx1ZSkge1xuICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICB5byA9IGx5MjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgIHlvID0gbHkxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZSh4LCB5KSB7XG4gICAgICAgIHggPSB4IC0geG87XG4gICAgICAgIHkgPSB5IC0geW87XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogeCAqIGNvcyAtIHkgKiBzaW4gKyB4byxcbiAgICAgICAgICB5OiB4ICogc2luICsgeSAqIGNvcyArIHlvXG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgICB2YXIgcHgxeTEgPSByb3RhdGUobHgxLCBseTEpO1xuICAgICAgdmFyIHB4MXkyID0gcm90YXRlKGx4MSwgbHkyKTtcbiAgICAgIHZhciBweDJ5MSA9IHJvdGF0ZShseDIsIGx5MSk7XG4gICAgICB2YXIgcHgyeTIgPSByb3RhdGUobHgyLCBseTIpO1xuICAgICAgbHgxID0gTWF0aC5taW4ocHgxeTEueCwgcHgxeTIueCwgcHgyeTEueCwgcHgyeTIueCk7XG4gICAgICBseDIgPSBNYXRoLm1heChweDF5MS54LCBweDF5Mi54LCBweDJ5MS54LCBweDJ5Mi54KTtcbiAgICAgIGx5MSA9IE1hdGgubWluKHB4MXkxLnksIHB4MXkyLnksIHB4MnkxLnksIHB4MnkyLnkpO1xuICAgICAgbHkyID0gTWF0aC5tYXgocHgxeTEueSwgcHgxeTIueSwgcHgyeTEueSwgcHgyeTIueSk7XG4gICAgfVxuXG4gICAgdmFyIGJiUHJlZml4Um90ID0gYmJQcmVmaXggKyAnUm90JztcbiAgICB2YXIgYmJSb3QgPSBiYnNbYmJQcmVmaXhSb3RdID0gYmJzW2JiUHJlZml4Um90XSB8fCB7fTtcbiAgICBiYlJvdC54MSA9IGx4MTtcbiAgICBiYlJvdC55MSA9IGx5MTtcbiAgICBiYlJvdC54MiA9IGx4MjtcbiAgICBiYlJvdC55MiA9IGx5MjtcbiAgICBiYlJvdC53ID0gbHgyIC0gbHgxO1xuICAgIGJiUm90LmggPSBseTIgLSBseTE7XG4gICAgdXBkYXRlQm91bmRzKGJvdW5kcywgbHgxLCBseTEsIGx4MiwgbHkyKTtcbiAgICB1cGRhdGVCb3VuZHMoX3AubGFiZWxCb3VuZHMuYWxsLCBseDEsIGx5MSwgbHgyLCBseTIpO1xuICB9XG5cbiAgcmV0dXJuIGJvdW5kcztcbn07IC8vIGdldCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBlbGVtZW50cyAoaW4gcmF3IG1vZGVsIHBvc2l0aW9uKVxuXG5cbnZhciBib3VuZGluZ0JveEltcGwgPSBmdW5jdGlvbiBib3VuZGluZ0JveEltcGwoZWxlLCBvcHRpb25zKSB7XG4gIHZhciBjeSA9IGVsZS5fcHJpdmF0ZS5jeTtcbiAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5LnN0eWxlRW5hYmxlZCgpO1xuICB2YXIgaGVhZGxlc3MgPSBjeS5oZWFkbGVzcygpO1xuICB2YXIgYm91bmRzID0gbWFrZUJvdW5kaW5nQm94KCk7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIGlzTm9kZSA9IGVsZS5pc05vZGUoKTtcbiAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgdmFyIGV4MSwgZXgyLCBleTEsIGV5MjsgLy8gZXh0cmVtYSBvZiBib2R5IC8gbGluZXNcblxuICB2YXIgeCwgeTsgLy8gbm9kZSBwb3NcblxuICB2YXIgcnN0eWxlID0gX3AucnN0eWxlO1xuICB2YXIgbWFudWFsRXhwYW5zaW9uID0gaXNOb2RlICYmIHN0eWxlRW5hYmxlZCA/IGVsZS5wc3R5bGUoJ2JvdW5kcy1leHBhbnNpb24nKS5wZlZhbHVlIDogWzBdOyAvLyBtdXN0IHVzZSBgZGlzcGxheWAgcHJvcCBvbmx5LCBhcyByZWFkaW5nIGBjb21wb3VuZC53aWR0aCgpYCBjYXVzZXMgcmVjdXJzaW9uXG4gIC8vIChvdGhlciBmYWN0b3JzIGxpa2Ugd2lkdGggdmFsdWVzIHdpbGwgYmUgY29uc2lkZXJlZCBsYXRlciBpbiB0aGlzIGZ1bmN0aW9uIGFueXdheSlcblxuICB2YXIgaXNEaXNwbGF5ZWQgPSBmdW5jdGlvbiBpc0Rpc3BsYXllZChlbGUpIHtcbiAgICByZXR1cm4gZWxlLnBzdHlsZSgnZGlzcGxheScpLnZhbHVlICE9PSAnbm9uZSc7XG4gIH07XG5cbiAgdmFyIGRpc3BsYXllZCA9ICFzdHlsZUVuYWJsZWQgfHwgaXNEaXNwbGF5ZWQoZWxlKSAvLyBtdXN0IHRha2UgaW50byBhY2NvdW50IGNvbm5lY3RlZCBub2RlcyBiL2Mgb2YgaW1wbGljaXQgZWRnZSBoaWRpbmcgb24gZGlzcGxheTpub25lIG5vZGVcbiAgJiYgKCFpc0VkZ2UgfHwgaXNEaXNwbGF5ZWQoZWxlLnNvdXJjZSgpKSAmJiBpc0Rpc3BsYXllZChlbGUudGFyZ2V0KCkpKTtcblxuICBpZiAoZGlzcGxheWVkKSB7XG4gICAgLy8gZGlzcGxheWVkIHN1ZmZpY2VzLCBzaW5jZSB3ZSB3aWxsIGZpbmQgemVybyBhcmVhIGVsZXMgYW55d2F5XG4gICAgdmFyIG92ZXJsYXlPcGFjaXR5ID0gMDtcbiAgICB2YXIgb3ZlcmxheVBhZGRpbmcgPSAwO1xuXG4gICAgaWYgKHN0eWxlRW5hYmxlZCAmJiBvcHRpb25zLmluY2x1ZGVPdmVybGF5cykge1xuICAgICAgb3ZlcmxheU9wYWNpdHkgPSBlbGUucHN0eWxlKCdvdmVybGF5LW9wYWNpdHknKS52YWx1ZTtcblxuICAgICAgaWYgKG92ZXJsYXlPcGFjaXR5ICE9PSAwKSB7XG4gICAgICAgIG92ZXJsYXlQYWRkaW5nID0gZWxlLnBzdHlsZSgnb3ZlcmxheS1wYWRkaW5nJykudmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHcgPSAwO1xuICAgIHZhciB3SGFsZiA9IDA7XG5cbiAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICB3ID0gZWxlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuICAgICAgd0hhbGYgPSB3IC8gMjtcbiAgICB9XG5cbiAgICBpZiAoaXNOb2RlICYmIG9wdGlvbnMuaW5jbHVkZU5vZGVzKSB7XG4gICAgICB2YXIgcG9zID0gZWxlLnBvc2l0aW9uKCk7XG4gICAgICB4ID0gcG9zLng7XG4gICAgICB5ID0gcG9zLnk7XG5cbiAgICAgIHZhciBfdyA9IGVsZS5vdXRlcldpZHRoKCk7XG5cbiAgICAgIHZhciBoYWxmVyA9IF93IC8gMjtcbiAgICAgIHZhciBoID0gZWxlLm91dGVySGVpZ2h0KCk7XG4gICAgICB2YXIgaGFsZkggPSBoIC8gMjsgLy8gaGFuZGxlIG5vZGUgZGltZW5zaW9uc1xuICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICBleDEgPSB4IC0gaGFsZlc7XG4gICAgICBleDIgPSB4ICsgaGFsZlc7XG4gICAgICBleTEgPSB5IC0gaGFsZkg7XG4gICAgICBleTIgPSB5ICsgaGFsZkg7XG4gICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEsIGV5MSwgZXgyLCBleTIpO1xuICAgIH0gZWxzZSBpZiAoaXNFZGdlICYmIG9wdGlvbnMuaW5jbHVkZUVkZ2VzKSB7XG4gICAgICBpZiAoc3R5bGVFbmFibGVkICYmICFoZWFkbGVzcykge1xuICAgICAgICB2YXIgY3VydmVTdHlsZSA9IGVsZS5wc3R5bGUoJ2N1cnZlLXN0eWxlJykuc3RyVmFsdWU7IC8vIGhhbmRsZSBlZGdlIGRpbWVuc2lvbnMgKHJvdWdoIGJveCBlc3RpbWF0ZSlcbiAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGV4MSA9IE1hdGgubWluKHJzdHlsZS5zcmNYLCByc3R5bGUubWlkWCwgcnN0eWxlLnRndFgpO1xuICAgICAgICBleDIgPSBNYXRoLm1heChyc3R5bGUuc3JjWCwgcnN0eWxlLm1pZFgsIHJzdHlsZS50Z3RYKTtcbiAgICAgICAgZXkxID0gTWF0aC5taW4ocnN0eWxlLnNyY1ksIHJzdHlsZS5taWRZLCByc3R5bGUudGd0WSk7XG4gICAgICAgIGV5MiA9IE1hdGgubWF4KHJzdHlsZS5zcmNZLCByc3R5bGUubWlkWSwgcnN0eWxlLnRndFkpOyAvLyB0YWtlIGludG8gYWNjb3VudCBlZGdlIHdpZHRoXG5cbiAgICAgICAgZXgxIC09IHdIYWxmO1xuICAgICAgICBleDIgKz0gd0hhbGY7XG4gICAgICAgIGV5MSAtPSB3SGFsZjtcbiAgICAgICAgZXkyICs9IHdIYWxmO1xuICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEsIGV5MSwgZXgyLCBleTIpOyAvLyBwcmVjaXNlIGVkZ2VzXG4gICAgICAgIC8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICBpZiAoY3VydmVTdHlsZSA9PT0gJ2hheXN0YWNrJykge1xuICAgICAgICAgIHZhciBocHRzID0gcnN0eWxlLmhheXN0YWNrUHRzO1xuXG4gICAgICAgICAgaWYgKGhwdHMgJiYgaHB0cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGV4MSA9IGhwdHNbMF0ueDtcbiAgICAgICAgICAgIGV5MSA9IGhwdHNbMF0ueTtcbiAgICAgICAgICAgIGV4MiA9IGhwdHNbMV0ueDtcbiAgICAgICAgICAgIGV5MiA9IGhwdHNbMV0ueTtcblxuICAgICAgICAgICAgaWYgKGV4MSA+IGV4Mikge1xuICAgICAgICAgICAgICB2YXIgdGVtcCA9IGV4MTtcbiAgICAgICAgICAgICAgZXgxID0gZXgyO1xuICAgICAgICAgICAgICBleDIgPSB0ZW1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXkxID4gZXkyKSB7XG4gICAgICAgICAgICAgIHZhciBfdGVtcCA9IGV5MTtcbiAgICAgICAgICAgICAgZXkxID0gZXkyO1xuICAgICAgICAgICAgICBleTIgPSBfdGVtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlQm91bmRzKGJvdW5kcywgZXgxIC0gd0hhbGYsIGV5MSAtIHdIYWxmLCBleDIgKyB3SGFsZiwgZXkyICsgd0hhbGYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjdXJ2ZVN0eWxlID09PSAnYmV6aWVyJyB8fCBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJyB8fCBjdXJ2ZVN0eWxlID09PSAndGF4aScpIHtcbiAgICAgICAgICB2YXIgcHRzO1xuXG4gICAgICAgICAgc3dpdGNoIChjdXJ2ZVN0eWxlKSB7XG4gICAgICAgICAgICBjYXNlICdiZXppZXInOlxuICAgICAgICAgICAgY2FzZSAndW5idW5kbGVkLWJlemllcic6XG4gICAgICAgICAgICAgIHB0cyA9IHJzdHlsZS5iZXppZXJQdHM7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdzZWdtZW50cyc6XG4gICAgICAgICAgICBjYXNlICd0YXhpJzpcbiAgICAgICAgICAgICAgcHRzID0gcnN0eWxlLmxpbmVQdHM7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwdHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwdHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgdmFyIHB0ID0gcHRzW2pdO1xuICAgICAgICAgICAgICBleDEgPSBwdC54IC0gd0hhbGY7XG4gICAgICAgICAgICAgIGV4MiA9IHB0LnggKyB3SGFsZjtcbiAgICAgICAgICAgICAgZXkxID0gcHQueSAtIHdIYWxmO1xuICAgICAgICAgICAgICBleTIgPSBwdC55ICsgd0hhbGY7XG4gICAgICAgICAgICAgIHVwZGF0ZUJvdW5kcyhib3VuZHMsIGV4MSwgZXkxLCBleDIsIGV5Mik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIGJlemllci1saWtlIG9yIHNlZ21lbnQtbGlrZSBlZGdlXG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGhlYWRsZXNzIG9yIHN0eWxlIGRpc2FibGVkXG4gICAgICAgIC8vIGZhbGxiYWNrIG9uIHNvdXJjZSBhbmQgdGFyZ2V0IHBvc2l0aW9uc1xuICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgICAgdmFyIG4xID0gZWxlLnNvdXJjZSgpO1xuICAgICAgICB2YXIgbjFwb3MgPSBuMS5wb3NpdGlvbigpO1xuICAgICAgICB2YXIgbjIgPSBlbGUudGFyZ2V0KCk7XG4gICAgICAgIHZhciBuMnBvcyA9IG4yLnBvc2l0aW9uKCk7XG4gICAgICAgIGV4MSA9IG4xcG9zLng7XG4gICAgICAgIGV4MiA9IG4ycG9zLng7XG4gICAgICAgIGV5MSA9IG4xcG9zLnk7XG4gICAgICAgIGV5MiA9IG4ycG9zLnk7XG5cbiAgICAgICAgaWYgKGV4MSA+IGV4Mikge1xuICAgICAgICAgIHZhciBfdGVtcDIgPSBleDE7XG4gICAgICAgICAgZXgxID0gZXgyO1xuICAgICAgICAgIGV4MiA9IF90ZW1wMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleTEgPiBleTIpIHtcbiAgICAgICAgICB2YXIgX3RlbXAzID0gZXkxO1xuICAgICAgICAgIGV5MSA9IGV5MjtcbiAgICAgICAgICBleTIgPSBfdGVtcDM7XG4gICAgICAgIH0gLy8gdGFrZSBpbnRvIGFjY291bnQgZWRnZSB3aWR0aFxuXG5cbiAgICAgICAgZXgxIC09IHdIYWxmO1xuICAgICAgICBleDIgKz0gd0hhbGY7XG4gICAgICAgIGV5MSAtPSB3SGFsZjtcbiAgICAgICAgZXkyICs9IHdIYWxmO1xuICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEsIGV5MSwgZXgyLCBleTIpO1xuICAgICAgfSAvLyBoZWFkbGVzcyBvciBzdHlsZSBkaXNhYmxlZFxuXG4gICAgfSAvLyBlZGdlc1xuICAgIC8vIGhhbmRsZSBlZGdlIGFycm93IHNpemVcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cblxuICAgIGlmIChzdHlsZUVuYWJsZWQgJiYgb3B0aW9ucy5pbmNsdWRlRWRnZXMgJiYgaXNFZGdlKSB7XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsICdtaWQtc291cmNlJyk7XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsICdtaWQtdGFyZ2V0Jyk7XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsICdzb3VyY2UnKTtcbiAgICAgIHVwZGF0ZUJvdW5kc0Zyb21BcnJvdyhib3VuZHMsIGVsZSwgJ3RhcmdldCcpO1xuICAgIH0gLy8gZ2hvc3RcbiAgICAvLy8vLy8vL1xuXG5cbiAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICB2YXIgZ2hvc3QgPSBlbGUucHN0eWxlKCdnaG9zdCcpLnZhbHVlID09PSAneWVzJztcblxuICAgICAgaWYgKGdob3N0KSB7XG4gICAgICAgIHZhciBneCA9IGVsZS5wc3R5bGUoJ2dob3N0LW9mZnNldC14JykucGZWYWx1ZTtcbiAgICAgICAgdmFyIGd5ID0gZWxlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXknKS5wZlZhbHVlO1xuICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBib3VuZHMueDEgKyBneCwgYm91bmRzLnkxICsgZ3ksIGJvdW5kcy54MiArIGd4LCBib3VuZHMueTIgKyBneSk7XG4gICAgICB9XG4gICAgfSAvLyBhbHdheXMgc3RvcmUgdGhlIGJvZHkgYm91bmRzIHNlcGFyYXRlbHkgZnJvbSB0aGUgbGFiZWxzXG5cblxuICAgIHZhciBiYkJvZHkgPSBfcC5ib2R5Qm91bmRzID0gX3AuYm9keUJvdW5kcyB8fCB7fTtcbiAgICBhc3NpZ25Cb3VuZGluZ0JveChiYkJvZHksIGJvdW5kcyk7XG4gICAgZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhiYkJvZHksIG1hbnVhbEV4cGFuc2lvbik7XG4gICAgZXhwYW5kQm91bmRpbmdCb3goYmJCb2R5LCAxKTsgLy8gZXhwYW5kIHRvIHdvcmsgYXJvdW5kIGJyb3dzZXIgZGltZW5zaW9uIGluYWNjdXJhY2llc1xuICAgIC8vIG92ZXJsYXlcbiAgICAvLy8vLy8vLy8vXG5cbiAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICBleDEgPSBib3VuZHMueDE7XG4gICAgICBleDIgPSBib3VuZHMueDI7XG4gICAgICBleTEgPSBib3VuZHMueTE7XG4gICAgICBleTIgPSBib3VuZHMueTI7XG4gICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEgLSBvdmVybGF5UGFkZGluZywgZXkxIC0gb3ZlcmxheVBhZGRpbmcsIGV4MiArIG92ZXJsYXlQYWRkaW5nLCBleTIgKyBvdmVybGF5UGFkZGluZyk7XG4gICAgfSAvLyBhbHdheXMgc3RvcmUgdGhlIGJvZHkgYm91bmRzIHNlcGFyYXRlbHkgZnJvbSB0aGUgbGFiZWxzXG5cblxuICAgIHZhciBiYk92ZXJsYXkgPSBfcC5vdmVybGF5Qm91bmRzID0gX3Aub3ZlcmxheUJvdW5kcyB8fCB7fTtcbiAgICBhc3NpZ25Cb3VuZGluZ0JveChiYk92ZXJsYXksIGJvdW5kcyk7XG4gICAgZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhiYk92ZXJsYXksIG1hbnVhbEV4cGFuc2lvbik7XG4gICAgZXhwYW5kQm91bmRpbmdCb3goYmJPdmVybGF5LCAxKTsgLy8gZXhwYW5kIHRvIHdvcmsgYXJvdW5kIGJyb3dzZXIgZGltZW5zaW9uIGluYWNjdXJhY2llc1xuICAgIC8vIGhhbmRsZSBsYWJlbCBkaW1lbnNpb25zXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHZhciBiYkxhYmVscyA9IF9wLmxhYmVsQm91bmRzID0gX3AubGFiZWxCb3VuZHMgfHwge307XG5cbiAgICBpZiAoYmJMYWJlbHMuYWxsICE9IG51bGwpIHtcbiAgICAgIGNsZWFyQm91bmRpbmdCb3goYmJMYWJlbHMuYWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmJMYWJlbHMuYWxsID0gbWFrZUJvdW5kaW5nQm94KCk7XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlRW5hYmxlZCAmJiBvcHRpb25zLmluY2x1ZGVMYWJlbHMpIHtcbiAgICAgIGlmIChvcHRpb25zLmluY2x1ZGVNYWluTGFiZWxzKSB7XG4gICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21MYWJlbChib3VuZHMsIGVsZSwgbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VkZ2UpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuaW5jbHVkZVNvdXJjZUxhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21MYWJlbChib3VuZHMsIGVsZSwgJ3NvdXJjZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuaW5jbHVkZVRhcmdldExhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21MYWJlbChib3VuZHMsIGVsZSwgJ3RhcmdldCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBzdHlsZSBlbmFibGVkIGZvciBsYWJlbHNcblxuICB9IC8vIGlmIGRpc3BsYXllZFxuXG5cbiAgYm91bmRzLngxID0gbm9uaW5mKGJvdW5kcy54MSk7XG4gIGJvdW5kcy55MSA9IG5vbmluZihib3VuZHMueTEpO1xuICBib3VuZHMueDIgPSBub25pbmYoYm91bmRzLngyKTtcbiAgYm91bmRzLnkyID0gbm9uaW5mKGJvdW5kcy55Mik7XG4gIGJvdW5kcy53ID0gbm9uaW5mKGJvdW5kcy54MiAtIGJvdW5kcy54MSk7XG4gIGJvdW5kcy5oID0gbm9uaW5mKGJvdW5kcy55MiAtIGJvdW5kcy55MSk7XG5cbiAgaWYgKGJvdW5kcy53ID4gMCAmJiBib3VuZHMuaCA+IDAgJiYgZGlzcGxheWVkKSB7XG4gICAgZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhib3VuZHMsIG1hbnVhbEV4cGFuc2lvbik7IC8vIGV4cGFuZCBib3VuZHMgYnkgMSBiZWNhdXNlIGFudGlhbGlhc2luZyBjYW4gaW5jcmVhc2UgdGhlIHZpc3VhbC9lZmZlY3RpdmUgc2l6ZSBieSAxIG9uIGFsbCBzaWRlc1xuXG4gICAgZXhwYW5kQm91bmRpbmdCb3goYm91bmRzLCAxKTtcbiAgfVxuXG4gIHJldHVybiBib3VuZHM7XG59O1xuXG52YXIgZ2V0S2V5ID0gZnVuY3Rpb24gZ2V0S2V5KG9wdHMpIHtcbiAgdmFyIGkgPSAwO1xuXG4gIHZhciB0ZiA9IGZ1bmN0aW9uIHRmKHZhbCkge1xuICAgIHJldHVybiAodmFsID8gMSA6IDApIDw8IGkrKztcbiAgfTtcblxuICB2YXIga2V5ID0gMDtcbiAga2V5ICs9IHRmKG9wdHMuaW5jdWRlTm9kZXMpO1xuICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlRWRnZXMpO1xuICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlTGFiZWxzKTtcbiAga2V5ICs9IHRmKG9wdHMuaW5jbHVkZU1haW5MYWJlbHMpO1xuICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlU291cmNlTGFiZWxzKTtcbiAga2V5ICs9IHRmKG9wdHMuaW5jbHVkZVRhcmdldExhYmVscyk7XG4gIGtleSArPSB0ZihvcHRzLmluY2x1ZGVPdmVybGF5cyk7XG4gIHJldHVybiBrZXk7XG59O1xuXG52YXIgZ2V0Qm91bmRpbmdCb3hQb3NLZXkgPSBmdW5jdGlvbiBnZXRCb3VuZGluZ0JveFBvc0tleShlbGUpIHtcbiAgaWYgKGVsZS5pc0VkZ2UoKSkge1xuICAgIHZhciBwMSA9IGVsZS5zb3VyY2UoKS5wb3NpdGlvbigpO1xuICAgIHZhciBwMiA9IGVsZS50YXJnZXQoKS5wb3NpdGlvbigpO1xuXG4gICAgdmFyIHIgPSBmdW5jdGlvbiByKHgpIHtcbiAgICAgIHJldHVybiBNYXRoLnJvdW5kKHgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gaGFzaEludHNBcnJheShbcihwMS54KSwgcihwMS55KSwgcihwMi54KSwgcihwMi55KV0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59O1xuXG52YXIgY2FjaGVkQm91bmRpbmdCb3hJbXBsID0gZnVuY3Rpb24gY2FjaGVkQm91bmRpbmdCb3hJbXBsKGVsZSwgb3B0cykge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBiYjtcbiAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgdmFyIGtleSA9IG9wdHMgPT0gbnVsbCA/IGRlZkJiT3B0c0tleSA6IGdldEtleShvcHRzKTtcbiAgdmFyIHVzaW5nRGVmT3B0cyA9IGtleSA9PT0gZGVmQmJPcHRzS2V5O1xuICB2YXIgY3VyclBvc0tleSA9IGdldEJvdW5kaW5nQm94UG9zS2V5KGVsZSk7XG4gIHZhciBpc1Bvc0tleVNhbWUgPSBfcC5iYkNhY2hlUG9zS2V5ID09PSBjdXJyUG9zS2V5O1xuICB2YXIgdXNlQ2FjaGUgPSBvcHRzLnVzZUNhY2hlICYmIGlzUG9zS2V5U2FtZTtcblxuICB2YXIgaXNEaXJ0eSA9IGZ1bmN0aW9uIGlzRGlydHkoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5fcHJpdmF0ZS5iYkNhY2hlID09IG51bGwgfHwgZWxlLl9wcml2YXRlLnN0eWxlRGlydHk7XG4gIH07XG5cbiAgdmFyIG5lZWRSZWNhbGMgPSAhdXNlQ2FjaGUgfHwgaXNEaXJ0eShlbGUpIHx8IGlzRWRnZSAmJiBpc0RpcnR5KGVsZS5zb3VyY2UoKSkgfHwgaXNEaXJ0eShlbGUudGFyZ2V0KCkpO1xuXG4gIGlmIChuZWVkUmVjYWxjKSB7XG4gICAgaWYgKCFpc1Bvc0tleVNhbWUpIHtcbiAgICAgIGVsZS5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUodXNlQ2FjaGUpO1xuICAgIH1cblxuICAgIGJiID0gYm91bmRpbmdCb3hJbXBsKGVsZSwgZGVmQmJPcHRzKTtcbiAgICBfcC5iYkNhY2hlID0gYmI7XG4gICAgX3AuYmJDYWNoZVBvc0tleSA9IGN1cnJQb3NLZXk7XG4gIH0gZWxzZSB7XG4gICAgYmIgPSBfcC5iYkNhY2hlO1xuICB9IC8vIG5vdCB1c2luZyBkZWYgb3B0cyA9PiBuZWVkIHRvIGJ1aWxkIHVwIGJiIGZyb20gY29tYmluYXRpb24gb2Ygc3ViIGJic1xuXG5cbiAgaWYgKCF1c2luZ0RlZk9wdHMpIHtcbiAgICB2YXIgaXNOb2RlID0gZWxlLmlzTm9kZSgpO1xuICAgIGJiID0gbWFrZUJvdW5kaW5nQm94KCk7XG5cbiAgICBpZiAob3B0cy5pbmNsdWRlTm9kZXMgJiYgaXNOb2RlIHx8IG9wdHMuaW5jbHVkZUVkZ2VzICYmICFpc05vZGUpIHtcbiAgICAgIGlmIChvcHRzLmluY2x1ZGVPdmVybGF5cykge1xuICAgICAgICB1cGRhdGVCb3VuZHNGcm9tQm94KGJiLCBfcC5vdmVybGF5Qm91bmRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmJvZHlCb3VuZHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRzLmluY2x1ZGVMYWJlbHMpIHtcbiAgICAgIGlmIChvcHRzLmluY2x1ZGVNYWluTGFiZWxzICYmICghaXNFZGdlIHx8IG9wdHMuaW5jbHVkZVNvdXJjZUxhYmVscyAmJiBvcHRzLmluY2x1ZGVUYXJnZXRMYWJlbHMpKSB7XG4gICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLmFsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3B0cy5pbmNsdWRlTWFpbkxhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLm1haW5Sb3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMuaW5jbHVkZVNvdXJjZUxhYmVscykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLnNvdXJjZVJvdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cy5pbmNsdWRlVGFyZ2V0TGFiZWxzKSB7XG4gICAgICAgICAgdXBkYXRlQm91bmRzRnJvbUJveChiYiwgX3AubGFiZWxCb3VuZHMudGFyZ2V0Um90KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICB9XG5cbiAgcmV0dXJuIGJiO1xufTtcblxudmFyIGRlZkJiT3B0cyA9IHtcbiAgaW5jbHVkZU5vZGVzOiB0cnVlLFxuICBpbmNsdWRlRWRnZXM6IHRydWUsXG4gIGluY2x1ZGVMYWJlbHM6IHRydWUsXG4gIGluY2x1ZGVNYWluTGFiZWxzOiB0cnVlLFxuICBpbmNsdWRlU291cmNlTGFiZWxzOiB0cnVlLFxuICBpbmNsdWRlVGFyZ2V0TGFiZWxzOiB0cnVlLFxuICBpbmNsdWRlT3ZlcmxheXM6IHRydWUsXG4gIHVzZUNhY2hlOiB0cnVlXG59O1xudmFyIGRlZkJiT3B0c0tleSA9IGdldEtleShkZWZCYk9wdHMpO1xudmFyIGZpbGxlZEJiT3B0cyA9IGRlZmF1bHRzKGRlZkJiT3B0cyk7XG5cbmVsZXNmbiRrLmJvdW5kaW5nQm94ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGJvdW5kczsgLy8gdGhlIG1haW4gdXNlY2FzZSBpcyBlbGUuYm91bmRpbmdCb3goKSBmb3IgYSBzaW5nbGUgZWxlbWVudCB3aXRoIG5vL2RlZiBvcHRpb25zXG4gIC8vIHNwZWNpZmllZCBzLnQuIHRoZSBjYWNoZSBpcyB1c2VkLCBzbyBjaGVjayBmb3IgdGhpcyBjYXNlIHRvIG1ha2UgaXQgZmFzdGVyIGJ5XG4gIC8vIGF2b2lkaW5nIHRoZSBvdmVyaGVhZCBvZiB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb25cblxuICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpc1swXS5fcHJpdmF0ZS5iYkNhY2hlICE9IG51bGwgJiYgIXRoaXNbMF0uX3ByaXZhdGUuc3R5bGVEaXJ0eSAmJiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMudXNlQ2FjaGUgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnVzZUNhY2hlID09PSB0cnVlKSkge1xuICAgIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZCYk9wdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMgPSBmaWxsZWRCYk9wdHMob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgYm91bmRzID0gY2FjaGVkQm91bmRpbmdCb3hJbXBsKHRoaXNbMF0sIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIGJvdW5kcyA9IG1ha2VCb3VuZGluZ0JveCgpO1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IGRlZkJiT3B0cztcbiAgICB2YXIgb3B0cyA9IGZpbGxlZEJiT3B0cyhvcHRpb25zKTtcbiAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgdmFyIGN5ID0gZWxlcy5jeSgpO1xuICAgIHZhciBzdHlsZUVuYWJsZWQgPSBjeS5zdHlsZUVuYWJsZWQoKTtcblxuICAgIGlmIChzdHlsZUVuYWJsZWQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgICB2YXIgY3VyclBvc0tleSA9IGdldEJvdW5kaW5nQm94UG9zS2V5KGVsZSk7XG4gICAgICAgIHZhciBpc1Bvc0tleVNhbWUgPSBfcC5iYkNhY2hlUG9zS2V5ID09PSBjdXJyUG9zS2V5O1xuICAgICAgICB2YXIgdXNlQ2FjaGUgPSBvcHRzLnVzZUNhY2hlICYmIGlzUG9zS2V5U2FtZSAmJiAhX3Auc3R5bGVEaXJ0eTtcbiAgICAgICAgZWxlLnJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZSh1c2VDYWNoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDb21wb3VuZEJvdW5kcyghb3B0aW9ucy51c2VDYWNoZSk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfZWxlID0gZWxlc1tfaV07XG4gICAgICB1cGRhdGVCb3VuZHNGcm9tQm94KGJvdW5kcywgY2FjaGVkQm91bmRpbmdCb3hJbXBsKF9lbGUsIG9wdHMpKTtcbiAgICB9XG4gIH1cblxuICBib3VuZHMueDEgPSBub25pbmYoYm91bmRzLngxKTtcbiAgYm91bmRzLnkxID0gbm9uaW5mKGJvdW5kcy55MSk7XG4gIGJvdW5kcy54MiA9IG5vbmluZihib3VuZHMueDIpO1xuICBib3VuZHMueTIgPSBub25pbmYoYm91bmRzLnkyKTtcbiAgYm91bmRzLncgPSBub25pbmYoYm91bmRzLngyIC0gYm91bmRzLngxKTtcbiAgYm91bmRzLmggPSBub25pbmYoYm91bmRzLnkyIC0gYm91bmRzLnkxKTtcbiAgcmV0dXJuIGJvdW5kcztcbn07XG5cbmVsZXNmbiRrLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIF9wID0gdGhpc1tpXS5fcHJpdmF0ZTtcbiAgICBfcC5iYkNhY2hlID0gbnVsbDtcbiAgICBfcC5iYkNhY2hlUG9zS2V5ID0gbnVsbDtcbiAgICBfcC5ib2R5Qm91bmRzID0gbnVsbDtcbiAgICBfcC5vdmVybGF5Qm91bmRzID0gbnVsbDtcbiAgICBfcC5sYWJlbEJvdW5kcy5hbGwgPSBudWxsO1xuICAgIF9wLmxhYmVsQm91bmRzLnNvdXJjZSA9IG51bGw7XG4gICAgX3AubGFiZWxCb3VuZHMudGFyZ2V0ID0gbnVsbDtcbiAgICBfcC5sYWJlbEJvdW5kcy5tYWluID0gbnVsbDtcbiAgICBfcC5sYWJlbEJvdW5kcy5zb3VyY2VSb3QgPSBudWxsO1xuICAgIF9wLmxhYmVsQm91bmRzLnRhcmdldFJvdCA9IG51bGw7XG4gICAgX3AubGFiZWxCb3VuZHMubWFpblJvdCA9IG51bGw7XG4gICAgX3AuYXJyb3dCb3VuZHMuc291cmNlID0gbnVsbDtcbiAgICBfcC5hcnJvd0JvdW5kcy50YXJnZXQgPSBudWxsO1xuICAgIF9wLmFycm93Qm91bmRzWydtaWQtc291cmNlJ10gPSBudWxsO1xuICAgIF9wLmFycm93Qm91bmRzWydtaWQtdGFyZ2V0J10gPSBudWxsO1xuICB9XG5cbiAgdGhpcy5lbWl0QW5kTm90aWZ5KCdib3VuZHMnKTtcbiAgcmV0dXJuIHRoaXM7XG59OyAvLyBwcml2YXRlIGhlbHBlciB0byBnZXQgYm91bmRpbmcgYm94IGZvciBjdXN0b20gbm9kZSBwb3NpdGlvbnNcbi8vIC0gZ29vZCBmb3IgcGVyZiBpbiBjZXJ0YWluIGNhc2VzIGJ1dCBjdXJyZW50bHkgcmVxdWlyZXMgZGlydHlpbmcgdGhlIHJlbmRlcmVkIHN0eWxlXG4vLyAtIHdvdWxkIGJlIGJldHRlciB0byBub3QgbW9kaWZ5IHRoZSBub2RlcyBidXQgdGhlIG5vZGVzIGFyZSByZWFkIGRpcmVjdGx5IGV2ZXJ5d2hlcmUgaW4gdGhlIHJlbmRlcmVyLi4uXG4vLyAtIHRyeSB0byB1c2UgZm9yIG9ubHkgdGhpbmdzIGxpa2UgZGlzY3JldGUgbGF5b3V0cyB3aGVyZSB0aGUgbm9kZSBwb3NpdGlvbiB3b3VsZCBjaGFuZ2UgYW55d2F5XG5cblxuZWxlc2ZuJGsuYm91bmRpbmdCb3hBdCA9IGZ1bmN0aW9uIChmbikge1xuICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgdmFyIGhhc0NvbXBvdW5kTm9kZXMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBwYXJlbnRzID0gY3kuY29sbGVjdGlvbigpO1xuXG4gIGlmIChoYXNDb21wb3VuZE5vZGVzKSB7XG4gICAgcGFyZW50cyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaXNQYXJlbnQoKTtcbiAgICB9KTtcbiAgICBub2RlcyA9IG5vZGVzLm5vdChwYXJlbnRzKTtcbiAgfVxuXG4gIGlmIChwbGFpbk9iamVjdChmbikpIHtcbiAgICB2YXIgb2JqID0gZm47XG5cbiAgICBmbiA9IGZ1bmN0aW9uIGZuKCkge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9O1xuICB9XG5cbiAgdmFyIHN0b3JlT2xkUG9zID0gZnVuY3Rpb24gc3RvcmVPbGRQb3Mobm9kZSwgaSkge1xuICAgIHJldHVybiBub2RlLl9wcml2YXRlLmJiQXRPbGRQb3MgPSBmbihub2RlLCBpKTtcbiAgfTtcblxuICB2YXIgZ2V0T2xkUG9zID0gZnVuY3Rpb24gZ2V0T2xkUG9zKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5fcHJpdmF0ZS5iYkF0T2xkUG9zO1xuICB9O1xuXG4gIGN5LnN0YXJ0QmF0Y2goKTtcbiAgbm9kZXMuZm9yRWFjaChzdG9yZU9sZFBvcykuc2lsZW50UG9zaXRpb25zKGZuKTtcblxuICBpZiAoaGFzQ29tcG91bmROb2Rlcykge1xuICAgIHBhcmVudHMuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gICAgcGFyZW50cy5kaXJ0eUJvdW5kaW5nQm94Q2FjaGUoKTtcbiAgICBwYXJlbnRzLnVwZGF0ZUNvbXBvdW5kQm91bmRzKHRydWUpOyAvLyBmb3JjZSB1cGRhdGUgYi9jIHdlJ3JlIGluc2lkZSBhIGJhdGNoIGN5Y2xlXG4gIH1cblxuICB2YXIgYmIgPSBjb3B5Qm91bmRpbmdCb3godGhpcy5ib3VuZGluZ0JveCh7XG4gICAgdXNlQ2FjaGU6IGZhbHNlXG4gIH0pKTtcbiAgbm9kZXMuc2lsZW50UG9zaXRpb25zKGdldE9sZFBvcyk7XG5cbiAgaWYgKGhhc0NvbXBvdW5kTm9kZXMpIHtcbiAgICBwYXJlbnRzLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpO1xuICAgIHBhcmVudHMuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7XG4gICAgcGFyZW50cy51cGRhdGVDb21wb3VuZEJvdW5kcyh0cnVlKTsgLy8gZm9yY2UgdXBkYXRlIGIvYyB3ZSdyZSBpbnNpZGUgYSBiYXRjaCBjeWNsZVxuICB9XG5cbiAgY3kuZW5kQmF0Y2goKTtcbiAgcmV0dXJuIGJiO1xufTtcblxuZm4kMy5ib3VuZGluZ2JveCA9IGZuJDMuYmIgPSBmbiQzLmJvdW5kaW5nQm94O1xuZm4kMy5yZW5kZXJlZEJvdW5kaW5nYm94ID0gZm4kMy5yZW5kZXJlZEJvdW5kaW5nQm94O1xudmFyIGJvdW5kcyA9IGVsZXNmbiRrO1xuXG52YXIgZm4kNCwgZWxlc2ZuJGw7XG5mbiQ0ID0gZWxlc2ZuJGwgPSB7fTtcblxudmFyIGRlZmluZURpbUZucyA9IGZ1bmN0aW9uIGRlZmluZURpbUZucyhvcHRzKSB7XG4gIG9wdHMudXBwZXJjYXNlTmFtZSA9IGNhcGl0YWxpemUob3B0cy5uYW1lKTtcbiAgb3B0cy5hdXRvTmFtZSA9ICdhdXRvJyArIG9wdHMudXBwZXJjYXNlTmFtZTtcbiAgb3B0cy5sYWJlbE5hbWUgPSAnbGFiZWwnICsgb3B0cy51cHBlcmNhc2VOYW1lO1xuICBvcHRzLm91dGVyTmFtZSA9ICdvdXRlcicgKyBvcHRzLnVwcGVyY2FzZU5hbWU7XG4gIG9wdHMudXBwZXJjYXNlT3V0ZXJOYW1lID0gY2FwaXRhbGl6ZShvcHRzLm91dGVyTmFtZSk7XG5cbiAgZm4kNFtvcHRzLm5hbWVdID0gZnVuY3Rpb24gZGltSW1wbCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgdmFyIGN5ID0gX3AuY3k7XG4gICAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5Ll9wcml2YXRlLnN0eWxlRW5hYmxlZDtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIGlmIChzdHlsZUVuYWJsZWQpIHtcbiAgICAgICAgaWYgKGVsZS5pc1BhcmVudCgpKSB7XG4gICAgICAgICAgZWxlLnVwZGF0ZUNvbXBvdW5kQm91bmRzKCk7XG4gICAgICAgICAgcmV0dXJuIF9wW29wdHMuYXV0b05hbWVdIHx8IDA7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZCA9IGVsZS5wc3R5bGUob3B0cy5uYW1lKTtcblxuICAgICAgICBzd2l0Y2ggKGQuc3RyVmFsdWUpIHtcbiAgICAgICAgICBjYXNlICdsYWJlbCc6XG4gICAgICAgICAgICBlbGUucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKCk7XG4gICAgICAgICAgICByZXR1cm4gX3AucnN0eWxlW29wdHMubGFiZWxOYW1lXSB8fCAwO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBkLnBmVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBmbiQ0WydvdXRlcicgKyBvcHRzLnVwcGVyY2FzZU5hbWVdID0gZnVuY3Rpb24gb3V0ZXJEaW1JbXBsKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgY3kgPSBfcC5jeTtcbiAgICB2YXIgc3R5bGVFbmFibGVkID0gY3kuX3ByaXZhdGUuc3R5bGVFbmFibGVkO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgaWYgKHN0eWxlRW5hYmxlZCkge1xuICAgICAgICB2YXIgZGltID0gZWxlW29wdHMubmFtZV0oKTtcbiAgICAgICAgdmFyIGJvcmRlciA9IGVsZS5wc3R5bGUoJ2JvcmRlci13aWR0aCcpLnBmVmFsdWU7IC8vIG4uYi4gMS8yIGVhY2ggc2lkZVxuXG4gICAgICAgIHZhciBwYWRkaW5nID0gMiAqIGVsZS5wYWRkaW5nKCk7XG4gICAgICAgIHJldHVybiBkaW0gKyBib3JkZXIgKyBwYWRkaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGZuJDRbJ3JlbmRlcmVkJyArIG9wdHMudXBwZXJjYXNlTmFtZV0gPSBmdW5jdGlvbiByZW5kZXJlZERpbUltcGwoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICB2YXIgZCA9IGVsZVtvcHRzLm5hbWVdKCk7XG4gICAgICByZXR1cm4gZCAqIHRoaXMuY3koKS56b29tKCk7XG4gICAgfVxuICB9O1xuXG4gIGZuJDRbJ3JlbmRlcmVkJyArIG9wdHMudXBwZXJjYXNlT3V0ZXJOYW1lXSA9IGZ1bmN0aW9uIHJlbmRlcmVkT3V0ZXJEaW1JbXBsKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdmFyIG9kID0gZWxlW29wdHMub3V0ZXJOYW1lXSgpO1xuICAgICAgcmV0dXJuIG9kICogdGhpcy5jeSgpLnpvb20oKTtcbiAgICB9XG4gIH07XG59O1xuXG5kZWZpbmVEaW1GbnMoe1xuICBuYW1lOiAnd2lkdGgnXG59KTtcbmRlZmluZURpbUZucyh7XG4gIG5hbWU6ICdoZWlnaHQnXG59KTtcblxuZWxlc2ZuJGwucGFkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVsZSA9IHRoaXNbMF07XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcblxuICBpZiAoZWxlLmlzUGFyZW50KCkpIHtcbiAgICBlbGUudXBkYXRlQ29tcG91bmRCb3VuZHMoKTtcblxuICAgIGlmIChfcC5hdXRvUGFkZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gX3AuYXV0b1BhZGRpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlbGUucHN0eWxlKCdwYWRkaW5nJykucGZWYWx1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVsZS5wc3R5bGUoJ3BhZGRpbmcnKS5wZlZhbHVlO1xuICB9XG59O1xuXG5lbGVzZm4kbC5wYWRkZWRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlbGUgPSB0aGlzWzBdO1xuICByZXR1cm4gZWxlLmhlaWdodCgpICsgMiAqIGVsZS5wYWRkaW5nKCk7XG59O1xuXG5lbGVzZm4kbC5wYWRkZWRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVsZSA9IHRoaXNbMF07XG4gIHJldHVybiBlbGUud2lkdGgoKSArIDIgKiBlbGUucGFkZGluZygpO1xufTtcblxudmFyIHdpZHRoSGVpZ2h0ID0gZWxlc2ZuJGw7XG5cbnZhciBpZkVkZ2UgPSBmdW5jdGlvbiBpZkVkZ2UoZWxlLCBnZXRWYWx1ZSkge1xuICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgcmV0dXJuIGdldFZhbHVlKGVsZSk7XG4gIH1cbn07XG5cbnZhciBpZkVkZ2VSZW5kZXJlZFBvc2l0aW9uID0gZnVuY3Rpb24gaWZFZGdlUmVuZGVyZWRQb3NpdGlvbihlbGUsIGdldFBvaW50KSB7XG4gIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICB2YXIgY3kgPSBlbGUuY3koKTtcbiAgICByZXR1cm4gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24oZ2V0UG9pbnQoZWxlKSwgY3kuem9vbSgpLCBjeS5wYW4oKSk7XG4gIH1cbn07XG5cbnZhciBpZkVkZ2VSZW5kZXJlZFBvc2l0aW9ucyA9IGZ1bmN0aW9uIGlmRWRnZVJlbmRlcmVkUG9zaXRpb25zKGVsZSwgZ2V0UG9pbnRzKSB7XG4gIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICB2YXIgY3kgPSBlbGUuY3koKTtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgcmV0dXJuIGdldFBvaW50cyhlbGUpLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIG1vZGVsVG9SZW5kZXJlZFBvc2l0aW9uKHAsIHpvb20sIHBhbik7XG4gICAgfSk7XG4gIH1cbn07XG5cbnZhciBjb250cm9sUG9pbnRzID0gZnVuY3Rpb24gY29udHJvbFBvaW50cyhlbGUpIHtcbiAgcmV0dXJuIGVsZS5yZW5kZXJlcigpLmdldENvbnRyb2xQb2ludHMoZWxlKTtcbn07XG5cbnZhciBzZWdtZW50UG9pbnRzID0gZnVuY3Rpb24gc2VnbWVudFBvaW50cyhlbGUpIHtcbiAgcmV0dXJuIGVsZS5yZW5kZXJlcigpLmdldFNlZ21lbnRQb2ludHMoZWxlKTtcbn07XG5cbnZhciBzb3VyY2VFbmRwb2ludCA9IGZ1bmN0aW9uIHNvdXJjZUVuZHBvaW50KGVsZSkge1xuICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0U291cmNlRW5kcG9pbnQoZWxlKTtcbn07XG5cbnZhciB0YXJnZXRFbmRwb2ludCA9IGZ1bmN0aW9uIHRhcmdldEVuZHBvaW50KGVsZSkge1xuICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0VGFyZ2V0RW5kcG9pbnQoZWxlKTtcbn07XG5cbnZhciBtaWRwb2ludCA9IGZ1bmN0aW9uIG1pZHBvaW50KGVsZSkge1xuICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0RWRnZU1pZHBvaW50KGVsZSk7XG59O1xuXG52YXIgcHRzID0ge1xuICBjb250cm9sUG9pbnRzOiB7XG4gICAgZ2V0OiBjb250cm9sUG9pbnRzLFxuICAgIG11bHQ6IHRydWVcbiAgfSxcbiAgc2VnbWVudFBvaW50czoge1xuICAgIGdldDogc2VnbWVudFBvaW50cyxcbiAgICBtdWx0OiB0cnVlXG4gIH0sXG4gIHNvdXJjZUVuZHBvaW50OiB7XG4gICAgZ2V0OiBzb3VyY2VFbmRwb2ludFxuICB9LFxuICB0YXJnZXRFbmRwb2ludDoge1xuICAgIGdldDogdGFyZ2V0RW5kcG9pbnRcbiAgfSxcbiAgbWlkcG9pbnQ6IHtcbiAgICBnZXQ6IG1pZHBvaW50XG4gIH1cbn07XG5cbnZhciByZW5kZXJlZE5hbWUgPSBmdW5jdGlvbiByZW5kZXJlZE5hbWUobmFtZSkge1xuICByZXR1cm4gJ3JlbmRlcmVkJyArIG5hbWVbMF0udG9VcHBlckNhc2UoKSArIG5hbWUuc3Vic3RyKDEpO1xufTtcblxudmFyIGVkZ2VQb2ludHMgPSBPYmplY3Qua2V5cyhwdHMpLnJlZHVjZShmdW5jdGlvbiAob2JqLCBuYW1lKSB7XG4gIHZhciBzcGVjID0gcHRzW25hbWVdO1xuICB2YXIgck5hbWUgPSByZW5kZXJlZE5hbWUobmFtZSk7XG5cbiAgb2JqW25hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBpZkVkZ2UodGhpcywgc3BlYy5nZXQpO1xuICB9O1xuXG4gIGlmIChzcGVjLm11bHQpIHtcbiAgICBvYmpbck5hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGlmRWRnZVJlbmRlcmVkUG9zaXRpb25zKHRoaXMsIHNwZWMuZ2V0KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9ialtyTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gaWZFZGdlUmVuZGVyZWRQb3NpdGlvbih0aGlzLCBzcGVjLmdldCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59LCB7fSk7XG5cbnZhciBkaW1lbnNpb25zID0gZXh0ZW5kKHt9LCBwb3NpdGlvbiwgYm91bmRzLCB3aWR0aEhlaWdodCwgZWRnZVBvaW50cyk7XG5cbi8qIVxuRXZlbnQgb2JqZWN0IGJhc2VkIG9uIGpRdWVyeSBldmVudHMsIE1JVCBsaWNlbnNlXG5cbmh0dHBzOi8vanF1ZXJ5Lm9yZy9saWNlbnNlL1xuaHR0cHM6Ly90bGRybGVnYWwuY29tL2xpY2Vuc2UvbWl0LWxpY2Vuc2Vcbmh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L2Jsb2IvbWFzdGVyL3NyYy9ldmVudC5qc1xuKi9cbnZhciBFdmVudCA9IGZ1bmN0aW9uIEV2ZW50KHNyYywgcHJvcHMpIHtcbiAgdGhpcy5yZWN5Y2xlKHNyYywgcHJvcHMpO1xufTtcblxuZnVuY3Rpb24gcmV0dXJuRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcbiAgcmV0dXJuIHRydWU7XG59IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbFxuXG5cbkV2ZW50LnByb3RvdHlwZSA9IHtcbiAgaW5zdGFuY2VTdHJpbmc6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgIHJldHVybiAnZXZlbnQnO1xuICB9LFxuICByZWN5Y2xlOiBmdW5jdGlvbiByZWN5Y2xlKHNyYywgcHJvcHMpIHtcbiAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuRmFsc2U7XG5cbiAgICBpZiAoc3JjICE9IG51bGwgJiYgc3JjLnByZXZlbnREZWZhdWx0KSB7XG4gICAgICAvLyBCcm93c2VyIEV2ZW50IG9iamVjdFxuICAgICAgdGhpcy50eXBlID0gc3JjLnR5cGU7IC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXG4gICAgICAvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblxuICAgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCA/IHJldHVyblRydWUgOiByZXR1cm5GYWxzZTtcbiAgICB9IGVsc2UgaWYgKHNyYyAhPSBudWxsICYmIHNyYy50eXBlKSB7XG4gICAgICAvLyBQbGFpbiBvYmplY3QgY29udGFpbmluZyBhbGwgZXZlbnQgZGV0YWlsc1xuICAgICAgcHJvcHMgPSBzcmM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEV2ZW50IHN0cmluZ1xuICAgICAgdGhpcy50eXBlID0gc3JjO1xuICAgIH0gLy8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3RcblxuXG4gICAgaWYgKHByb3BzICE9IG51bGwpIHtcbiAgICAgIC8vIG1vcmUgZWZmaWNpZW50IHRvIG1hbnVhbGx5IGNvcHkgZmllbGRzIHdlIHVzZVxuICAgICAgdGhpcy5vcmlnaW5hbEV2ZW50ID0gcHJvcHMub3JpZ2luYWxFdmVudDtcbiAgICAgIHRoaXMudHlwZSA9IHByb3BzLnR5cGUgIT0gbnVsbCA/IHByb3BzLnR5cGUgOiB0aGlzLnR5cGU7XG4gICAgICB0aGlzLmN5ID0gcHJvcHMuY3k7XG4gICAgICB0aGlzLnRhcmdldCA9IHByb3BzLnRhcmdldDtcbiAgICAgIHRoaXMucG9zaXRpb24gPSBwcm9wcy5wb3NpdGlvbjtcbiAgICAgIHRoaXMucmVuZGVyZWRQb3NpdGlvbiA9IHByb3BzLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICB0aGlzLm5hbWVzcGFjZSA9IHByb3BzLm5hbWVzcGFjZTtcbiAgICAgIHRoaXMubGF5b3V0ID0gcHJvcHMubGF5b3V0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN5ICE9IG51bGwgJiYgdGhpcy5wb3NpdGlvbiAhPSBudWxsICYmIHRoaXMucmVuZGVyZWRQb3NpdGlvbiA9PSBudWxsKSB7XG4gICAgICAvLyBjcmVhdGUgYSByZW5kZXJlZCBwb3NpdGlvbiBiYXNlZCBvbiB0aGUgcGFzc2VkIHBvc2l0aW9uXG4gICAgICB2YXIgcG9zID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgIHZhciB6b29tID0gdGhpcy5jeS56b29tKCk7XG4gICAgICB2YXIgcGFuID0gdGhpcy5jeS5wYW4oKTtcbiAgICAgIHRoaXMucmVuZGVyZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgeDogcG9zLnggKiB6b29tICsgcGFuLngsXG4gICAgICAgIHk6IHBvcy55ICogem9vbSArIHBhbi55XG4gICAgICB9O1xuICAgIH0gLy8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmVcblxuXG4gICAgdGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuICB9LFxuICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gcHJldmVudERlZmF1bHQoKSB7XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlO1xuICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG4gICAgaWYgKCFlKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBpZiBwcmV2ZW50RGVmYXVsdCBleGlzdHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudFxuXG5cbiAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfSxcbiAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiBzdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG4gICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cbiAgICBpZiAoIWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGlmIHN0b3BQcm9wYWdhdGlvbiBleGlzdHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudFxuXG5cbiAgICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9LFxuICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpIHtcbiAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9LFxuICBpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLFxuICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG4gIGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZVxufTtcblxudmFyIGV2ZW50UmVnZXggPSAvXihbXi5dKykoXFwuKD86W14uXSspKT8kLzsgLy8gcmVnZXggZm9yIG1hdGNoaW5nIGV2ZW50IHN0cmluZ3MgKGUuZy4gXCJjbGljay5uYW1lc3BhY2VcIilcblxudmFyIHVuaXZlcnNhbE5hbWVzcGFjZSA9ICcuKic7IC8vIG1hdGNoZXMgYXMgaWYgbm8gbmFtZXNwYWNlIHNwZWNpZmllZCBhbmQgcHJldmVudHMgdXNlcnMgZnJvbSB1bmJpbmRpbmcgYWNjaWRlbnRhbGx5XG5cbnZhciBkZWZhdWx0cyQ4ID0ge1xuICBxdWFsaWZpZXJDb21wYXJlOiBmdW5jdGlvbiBxdWFsaWZpZXJDb21wYXJlKHExLCBxMikge1xuICAgIHJldHVybiBxMSA9PT0gcTI7XG4gIH0sXG4gIGV2ZW50TWF0Y2hlczogZnVuY3Rpb24gZXZlbnRNYXRjaGVzKClcbiAgLypjb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmoqL1xuICB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGFkZEV2ZW50RmllbGRzOiBmdW5jdGlvbiBhZGRFdmVudEZpZWxkcygpXG4gIC8qY29udGV4dCwgZXZ0Ki9cbiAge30sXG4gIGNhbGxiYWNrQ29udGV4dDogZnVuY3Rpb24gY2FsbGJhY2tDb250ZXh0KGNvbnRleHRcbiAgLyosIGxpc3RlbmVyLCBldmVudE9iaiovXG4gICkge1xuICAgIHJldHVybiBjb250ZXh0O1xuICB9LFxuICBiZWZvcmVFbWl0OiBmdW5jdGlvbiBiZWZvcmVFbWl0KClcbiAgLyogY29udGV4dCwgbGlzdGVuZXIsIGV2ZW50T2JqICovXG4gIHt9LFxuICBhZnRlckVtaXQ6IGZ1bmN0aW9uIGFmdGVyRW1pdCgpXG4gIC8qIGNvbnRleHQsIGxpc3RlbmVyLCBldmVudE9iaiAqL1xuICB7fSxcbiAgYnViYmxlOiBmdW5jdGlvbiBidWJibGUoKVxuICAvKmNvbnRleHQqL1xuICB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBwYXJlbnQ6IGZ1bmN0aW9uIHBhcmVudCgpXG4gIC8qY29udGV4dCovXG4gIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgY29udGV4dDogbnVsbFxufTtcbnZhciBkZWZhdWx0c0tleXMgPSBPYmplY3Qua2V5cyhkZWZhdWx0cyQ4KTtcbnZhciBlbXB0eU9wdHMgPSB7fTtcblxuZnVuY3Rpb24gRW1pdHRlcigpIHtcbiAgdmFyIG9wdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGVtcHR5T3B0cztcbiAgdmFyIGNvbnRleHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcblxuICAvLyBtaWNyby1vcHRpbWlzYXRpb24gdnMgT2JqZWN0LmFzc2lnbigpIC0tIHJlZHVjZXMgRWxlbWVudCBpbnN0YW50aWF0aW9uIHRpbWVcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWZhdWx0c0tleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gZGVmYXVsdHNLZXlzW2ldO1xuICAgIHRoaXNba2V5XSA9IG9wdHNba2V5XSB8fCBkZWZhdWx0cyQ4W2tleV07XG4gIH1cblxuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0IHx8IHRoaXMuY29udGV4dDtcbiAgdGhpcy5saXN0ZW5lcnMgPSBbXTtcbiAgdGhpcy5lbWl0dGluZyA9IDA7XG59XG5cbnZhciBwID0gRW1pdHRlci5wcm90b3R5cGU7XG5cbnZhciBmb3JFYWNoRXZlbnQgPSBmdW5jdGlvbiBmb3JFYWNoRXZlbnQoc2VsZiwgaGFuZGxlciwgZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCBjb25mT3ZlcnJpZGVzKSB7XG4gIGlmIChmbihxdWFsaWZpZXIpKSB7XG4gICAgY2FsbGJhY2sgPSBxdWFsaWZpZXI7XG4gICAgcXVhbGlmaWVyID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjb25mT3ZlcnJpZGVzKSB7XG4gICAgaWYgKGNvbmYgPT0gbnVsbCkge1xuICAgICAgY29uZiA9IGNvbmZPdmVycmlkZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmYgPSBleHRlbmQoe30sIGNvbmYsIGNvbmZPdmVycmlkZXMpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBldmVudExpc3QgPSBhcnJheShldmVudHMpID8gZXZlbnRzIDogZXZlbnRzLnNwbGl0KC9cXHMrLyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZXZ0ID0gZXZlbnRMaXN0W2ldO1xuXG4gICAgaWYgKGVtcHR5U3RyaW5nKGV2dCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBtYXRjaCA9IGV2dC5tYXRjaChldmVudFJlZ2V4KTsgLy8gdHlwZVsubmFtZXNwYWNlXVxuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICB2YXIgdHlwZSA9IG1hdGNoWzFdO1xuICAgICAgdmFyIG5hbWVzcGFjZSA9IG1hdGNoWzJdID8gbWF0Y2hbMl0gOiBudWxsO1xuICAgICAgdmFyIHJldCA9IGhhbmRsZXIoc2VsZiwgZXZ0LCB0eXBlLCBuYW1lc3BhY2UsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYpO1xuXG4gICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gYWxsb3cgZXhpdGluZyBlYXJseVxuXG4gICAgfVxuICB9XG59O1xuXG52YXIgbWFrZUV2ZW50T2JqID0gZnVuY3Rpb24gbWFrZUV2ZW50T2JqKHNlbGYsIG9iaikge1xuICBzZWxmLmFkZEV2ZW50RmllbGRzKHNlbGYuY29udGV4dCwgb2JqKTtcbiAgcmV0dXJuIG5ldyBFdmVudChvYmoudHlwZSwgb2JqKTtcbn07XG5cbnZhciBmb3JFYWNoRXZlbnRPYmogPSBmdW5jdGlvbiBmb3JFYWNoRXZlbnRPYmooc2VsZiwgaGFuZGxlciwgZXZlbnRzKSB7XG4gIGlmIChldmVudChldmVudHMpKSB7XG4gICAgaGFuZGxlcihzZWxmLCBldmVudHMpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmIChwbGFpbk9iamVjdChldmVudHMpKSB7XG4gICAgaGFuZGxlcihzZWxmLCBtYWtlRXZlbnRPYmooc2VsZiwgZXZlbnRzKSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGV2ZW50TGlzdCA9IGFycmF5KGV2ZW50cykgPyBldmVudHMgOiBldmVudHMuc3BsaXQoL1xccysvKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50TGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBldnQgPSBldmVudExpc3RbaV07XG5cbiAgICBpZiAoZW1wdHlTdHJpbmcoZXZ0KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoID0gZXZ0Lm1hdGNoKGV2ZW50UmVnZXgpOyAvLyB0eXBlWy5uYW1lc3BhY2VdXG5cbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHZhciB0eXBlID0gbWF0Y2hbMV07XG4gICAgICB2YXIgbmFtZXNwYWNlID0gbWF0Y2hbMl0gPyBtYXRjaFsyXSA6IG51bGw7XG4gICAgICB2YXIgZXZlbnRPYmogPSBtYWtlRXZlbnRPYmooc2VsZiwge1xuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZSxcbiAgICAgICAgdGFyZ2V0OiBzZWxmLmNvbnRleHRcbiAgICAgIH0pO1xuICAgICAgaGFuZGxlcihzZWxmLCBldmVudE9iaik7XG4gICAgfVxuICB9XG59O1xuXG5wLm9uID0gcC5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudHMsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYsIGNvbmZPdmVycmlkZXMpIHtcbiAgZm9yRWFjaEV2ZW50KHRoaXMsIGZ1bmN0aW9uIChzZWxmLCBldmVudCwgdHlwZSwgbmFtZXNwYWNlLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mKSB7XG4gICAgaWYgKGZuKGNhbGxiYWNrKSkge1xuICAgICAgc2VsZi5saXN0ZW5lcnMucHVzaCh7XG4gICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgLy8gZnVsbCBldmVudCBzdHJpbmdcbiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAvLyBjYWxsYmFjayB0byBydW5cbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgLy8gdGhlIGV2ZW50IHR5cGUgKGUuZy4gJ2NsaWNrJylcbiAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UsXG4gICAgICAgIC8vIHRoZSBldmVudCBuYW1lc3BhY2UgKGUuZy4gXCIuZm9vXCIpXG4gICAgICAgIHF1YWxpZmllcjogcXVhbGlmaWVyLFxuICAgICAgICAvLyBhIHJlc3RyaWN0aW9uIG9uIHdoZXRoZXIgdG8gbWF0Y2ggdGhpcyBlbWl0dGVyXG4gICAgICAgIGNvbmY6IGNvbmYgLy8gYWRkaXRpb25hbCBjb25maWd1cmF0aW9uXG5cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCBjb25mT3ZlcnJpZGVzKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5wLm9uZSA9IGZ1bmN0aW9uIChldmVudHMsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYpIHtcbiAgcmV0dXJuIHRoaXMub24oZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCB7XG4gICAgb25lOiB0cnVlXG4gIH0pO1xufTtcblxucC5yZW1vdmVMaXN0ZW5lciA9IHAub2ZmID0gZnVuY3Rpb24gKGV2ZW50cywgcXVhbGlmaWVyLCBjYWxsYmFjaywgY29uZikge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIGlmICh0aGlzLmVtaXR0aW5nICE9PSAwKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSBjb3B5QXJyYXkodGhpcy5saXN0ZW5lcnMpO1xuICB9XG5cbiAgdmFyIGxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzO1xuXG4gIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKGkpIHtcbiAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG4gICAgZm9yRWFjaEV2ZW50KF90aGlzLCBmdW5jdGlvbiAoc2VsZiwgZXZlbnQsIHR5cGUsIG5hbWVzcGFjZSwgcXVhbGlmaWVyLCBjYWxsYmFja1xuICAgIC8qLCBjb25mKi9cbiAgICApIHtcbiAgICAgIGlmICgobGlzdGVuZXIudHlwZSA9PT0gdHlwZSB8fCBldmVudHMgPT09ICcqJykgJiYgKCFuYW1lc3BhY2UgJiYgbGlzdGVuZXIubmFtZXNwYWNlICE9PSAnLionIHx8IGxpc3RlbmVyLm5hbWVzcGFjZSA9PT0gbmFtZXNwYWNlKSAmJiAoIXF1YWxpZmllciB8fCBzZWxmLnF1YWxpZmllckNvbXBhcmUobGlzdGVuZXIucXVhbGlmaWVyLCBxdWFsaWZpZXIpKSAmJiAoIWNhbGxiYWNrIHx8IGxpc3RlbmVyLmNhbGxiYWNrID09PSBjYWxsYmFjaykpIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpLCAxKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sIGV2ZW50cywgcXVhbGlmaWVyLCBjYWxsYmFjaywgY29uZik7XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIF9sb29wKGkpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5wLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVtb3ZlTGlzdGVuZXIoJyonKTtcbn07XG5cbnAuZW1pdCA9IHAudHJpZ2dlciA9IGZ1bmN0aW9uIChldmVudHMsIGV4dHJhUGFyYW1zLCBtYW51YWxDYWxsYmFjaykge1xuICB2YXIgbGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnM7XG4gIHZhciBudW1MaXN0ZW5lcnNCZWZvcmVFbWl0ID0gbGlzdGVuZXJzLmxlbmd0aDtcbiAgdGhpcy5lbWl0dGluZysrO1xuXG4gIGlmICghYXJyYXkoZXh0cmFQYXJhbXMpKSB7XG4gICAgZXh0cmFQYXJhbXMgPSBbZXh0cmFQYXJhbXNdO1xuICB9XG5cbiAgZm9yRWFjaEV2ZW50T2JqKHRoaXMsIGZ1bmN0aW9uIChzZWxmLCBldmVudE9iaikge1xuICAgIGlmIChtYW51YWxDYWxsYmFjayAhPSBudWxsKSB7XG4gICAgICBsaXN0ZW5lcnMgPSBbe1xuICAgICAgICBldmVudDogZXZlbnRPYmouZXZlbnQsXG4gICAgICAgIHR5cGU6IGV2ZW50T2JqLnR5cGUsXG4gICAgICAgIG5hbWVzcGFjZTogZXZlbnRPYmoubmFtZXNwYWNlLFxuICAgICAgICBjYWxsYmFjazogbWFudWFsQ2FsbGJhY2tcbiAgICAgIH1dO1xuICAgICAgbnVtTGlzdGVuZXJzQmVmb3JlRW1pdCA9IGxpc3RlbmVycy5sZW5ndGg7XG4gICAgfVxuXG4gICAgdmFyIF9sb29wMiA9IGZ1bmN0aW9uIF9sb29wMihpKSB7XG4gICAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG5cbiAgICAgIGlmIChsaXN0ZW5lci50eXBlID09PSBldmVudE9iai50eXBlICYmICghbGlzdGVuZXIubmFtZXNwYWNlIHx8IGxpc3RlbmVyLm5hbWVzcGFjZSA9PT0gZXZlbnRPYmoubmFtZXNwYWNlIHx8IGxpc3RlbmVyLm5hbWVzcGFjZSA9PT0gdW5pdmVyc2FsTmFtZXNwYWNlKSAmJiBzZWxmLmV2ZW50TWF0Y2hlcyhzZWxmLmNvbnRleHQsIGxpc3RlbmVyLCBldmVudE9iaikpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbZXZlbnRPYmpdO1xuXG4gICAgICAgIGlmIChleHRyYVBhcmFtcyAhPSBudWxsKSB7XG4gICAgICAgICAgcHVzaChhcmdzLCBleHRyYVBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmJlZm9yZUVtaXQoc2VsZi5jb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmopO1xuXG4gICAgICAgIGlmIChsaXN0ZW5lci5jb25mICYmIGxpc3RlbmVyLmNvbmYub25lKSB7XG4gICAgICAgICAgc2VsZi5saXN0ZW5lcnMgPSBzZWxmLmxpc3RlbmVycy5maWx0ZXIoZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsICE9PSBsaXN0ZW5lcjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb250ZXh0ID0gc2VsZi5jYWxsYmFja0NvbnRleHQoc2VsZi5jb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmopO1xuICAgICAgICB2YXIgcmV0ID0gbGlzdGVuZXIuY2FsbGJhY2suYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIHNlbGYuYWZ0ZXJFbWl0KHNlbGYuY29udGV4dCwgbGlzdGVuZXIsIGV2ZW50T2JqKTtcblxuICAgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICAgIGV2ZW50T2JqLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGV2ZW50T2JqLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gaWYgbGlzdGVuZXIgbWF0Y2hlc1xuXG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTGlzdGVuZXJzQmVmb3JlRW1pdDsgaSsrKSB7XG4gICAgICBfbG9vcDIoaSk7XG4gICAgfSAvLyBmb3IgbGlzdGVuZXJcblxuXG4gICAgaWYgKHNlbGYuYnViYmxlKHNlbGYuY29udGV4dCkgJiYgIWV2ZW50T2JqLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgIHNlbGYucGFyZW50KHNlbGYuY29udGV4dCkuZW1pdChldmVudE9iaiwgZXh0cmFQYXJhbXMpO1xuICAgIH1cbiAgfSwgZXZlbnRzKTtcbiAgdGhpcy5lbWl0dGluZy0tO1xuICByZXR1cm4gdGhpcztcbn07XG5cbnZhciBlbWl0dGVyT3B0aW9ucyA9IHtcbiAgcXVhbGlmaWVyQ29tcGFyZTogZnVuY3Rpb24gcXVhbGlmaWVyQ29tcGFyZShzZWxlY3RvcjEsIHNlbGVjdG9yMikge1xuICAgIGlmIChzZWxlY3RvcjEgPT0gbnVsbCB8fCBzZWxlY3RvcjIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHNlbGVjdG9yMSA9PSBudWxsICYmIHNlbGVjdG9yMiA9PSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc2VsZWN0b3IxLnNhbWVUZXh0KHNlbGVjdG9yMik7XG4gICAgfVxuICB9LFxuICBldmVudE1hdGNoZXM6IGZ1bmN0aW9uIGV2ZW50TWF0Y2hlcyhlbGUsIGxpc3RlbmVyLCBldmVudE9iaikge1xuICAgIHZhciBzZWxlY3RvciA9IGxpc3RlbmVyLnF1YWxpZmllcjtcblxuICAgIGlmIChzZWxlY3RvciAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gZWxlICE9PSBldmVudE9iai50YXJnZXQgJiYgZWxlbWVudChldmVudE9iai50YXJnZXQpICYmIHNlbGVjdG9yLm1hdGNoZXMoZXZlbnRPYmoudGFyZ2V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgYWRkRXZlbnRGaWVsZHM6IGZ1bmN0aW9uIGFkZEV2ZW50RmllbGRzKGVsZSwgZXZ0KSB7XG4gICAgZXZ0LmN5ID0gZWxlLmN5KCk7XG4gICAgZXZ0LnRhcmdldCA9IGVsZTtcbiAgfSxcbiAgY2FsbGJhY2tDb250ZXh0OiBmdW5jdGlvbiBjYWxsYmFja0NvbnRleHQoZWxlLCBsaXN0ZW5lciwgZXZlbnRPYmopIHtcbiAgICByZXR1cm4gbGlzdGVuZXIucXVhbGlmaWVyICE9IG51bGwgPyBldmVudE9iai50YXJnZXQgOiBlbGU7XG4gIH0sXG4gIGJlZm9yZUVtaXQ6IGZ1bmN0aW9uIGJlZm9yZUVtaXQoY29udGV4dCwgbGlzdGVuZXJcbiAgLyosIGV2ZW50T2JqKi9cbiAgKSB7XG4gICAgaWYgKGxpc3RlbmVyLmNvbmYgJiYgbGlzdGVuZXIuY29uZi5vbmNlKSB7XG4gICAgICBsaXN0ZW5lci5jb25mLm9uY2VDb2xsZWN0aW9uLnJlbW92ZUxpc3RlbmVyKGxpc3RlbmVyLmV2ZW50LCBsaXN0ZW5lci5xdWFsaWZpZXIsIGxpc3RlbmVyLmNhbGxiYWNrKTtcbiAgICB9XG4gIH0sXG4gIGJ1YmJsZTogZnVuY3Rpb24gYnViYmxlKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBwYXJlbnQ6IGZ1bmN0aW9uIHBhcmVudChlbGUpIHtcbiAgICByZXR1cm4gZWxlLmlzQ2hpbGQoKSA/IGVsZS5wYXJlbnQoKSA6IGVsZS5jeSgpO1xuICB9XG59O1xuXG52YXIgYXJnU2VsZWN0b3IgPSBmdW5jdGlvbiBhcmdTZWxlY3RvcihhcmcpIHtcbiAgaWYgKHN0cmluZyhhcmcpKSB7XG4gICAgcmV0dXJuIG5ldyBTZWxlY3RvcihhcmcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhcmc7XG4gIH1cbn07XG5cbnZhciBlbGVzZm4kbSA9IHtcbiAgY3JlYXRlRW1pdHRlcjogZnVuY3Rpb24gY3JlYXRlRW1pdHRlcigpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuXG4gICAgICBpZiAoIV9wLmVtaXR0ZXIpIHtcbiAgICAgICAgX3AuZW1pdHRlciA9IG5ldyBFbWl0dGVyKGVtaXR0ZXJPcHRpb25zLCBlbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBlbWl0dGVyOiBmdW5jdGlvbiBlbWl0dGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmVtaXR0ZXI7XG4gIH0sXG4gIG9uOiBmdW5jdGlvbiBvbihldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIHZhciBhcmdTZWwgPSBhcmdTZWxlY3RvcihzZWxlY3Rvcik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgZWxlLmVtaXR0ZXIoKS5vbihldmVudHMsIGFyZ1NlbCwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICByZW1vdmVMaXN0ZW5lcjogZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIoZXZlbnRzLCBzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICB2YXIgYXJnU2VsID0gYXJnU2VsZWN0b3Ioc2VsZWN0b3IpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIGVsZS5lbWl0dGVyKCkucmVtb3ZlTGlzdGVuZXIoZXZlbnRzLCBhcmdTZWwsIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcmVtb3ZlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnMoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIGVsZS5lbWl0dGVyKCkucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIG9uZTogZnVuY3Rpb24gb25lKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGFyZ1NlbCA9IGFyZ1NlbGVjdG9yKHNlbGVjdG9yKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICBlbGUuZW1pdHRlcigpLm9uZShldmVudHMsIGFyZ1NlbCwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBvbmNlOiBmdW5jdGlvbiBvbmNlKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGFyZ1NlbCA9IGFyZ1NlbGVjdG9yKHNlbGVjdG9yKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICBlbGUuZW1pdHRlcigpLm9uKGV2ZW50cywgYXJnU2VsLCBjYWxsYmFjaywge1xuICAgICAgICBvbmNlOiB0cnVlLFxuICAgICAgICBvbmNlQ29sbGVjdGlvbjogdGhpc1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBlbWl0OiBmdW5jdGlvbiBlbWl0KGV2ZW50cywgZXh0cmFQYXJhbXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgZWxlLmVtaXR0ZXIoKS5lbWl0KGV2ZW50cywgZXh0cmFQYXJhbXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBlbWl0QW5kTm90aWZ5OiBmdW5jdGlvbiBlbWl0QW5kTm90aWZ5KGV2ZW50LCBleHRyYVBhcmFtcykge1xuICAgIC8vIGZvciBpbnRlcm5hbCB1c2Ugb25seVxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gZW1wdHkgY29sbGVjdGlvbnMgZG9uJ3QgbmVlZCB0byBub3RpZnkgYW55dGhpbmdcbiAgICAvLyBub3RpZnkgcmVuZGVyZXJcblxuXG4gICAgdGhpcy5jeSgpLm5vdGlmeShldmVudCwgdGhpcyk7XG4gICAgdGhpcy5lbWl0KGV2ZW50LCBleHRyYVBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn07XG5kZWZpbmUkMy5ldmVudEFsaWFzZXNPbihlbGVzZm4kbSk7XG5cbnZhciBlbGVzZm4kbiA9IHtcbiAgbm9kZXM6IGZ1bmN0aW9uIG5vZGVzKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNOb2RlKCk7XG4gICAgfSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSxcbiAgZWRnZXM6IGZ1bmN0aW9uIGVkZ2VzKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNFZGdlKCk7XG4gICAgfSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSxcbiAgLy8gaW50ZXJuYWwgaGVscGVyIHRvIGdldCBub2RlcyBhbmQgZWRnZXMgYXMgc2VwYXJhdGUgY29sbGVjdGlvbnMgd2l0aCBzaW5nbGUgaXRlcmF0aW9uIG92ZXIgZWxlbWVudHNcbiAgYnlHcm91cDogZnVuY3Rpb24gYnlHcm91cCgpIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLnNwYXduKCk7XG4gICAgdmFyIGVkZ2VzID0gdGhpcy5zcGF3bigpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcblxuICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICBub2Rlcy5wdXNoKGVsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlcy5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBub2RlcyxcbiAgICAgIGVkZ2VzOiBlZGdlc1xuICAgIH07XG4gIH0sXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKF9maWx0ZXIsIHRoaXNBcmcpIHtcbiAgICBpZiAoX2ZpbHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBjaGVjayB0aGlzIGZpcnN0IGIvYyBpdCdzIHRoZSBtb3N0IGNvbW1vbi9wZXJmb3JtYW50IGNhc2VcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSBpZiAoc3RyaW5nKF9maWx0ZXIpIHx8IGVsZW1lbnRPckNvbGxlY3Rpb24oX2ZpbHRlcikpIHtcbiAgICAgIHJldHVybiBuZXcgU2VsZWN0b3IoX2ZpbHRlcikuZmlsdGVyKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoZm4oX2ZpbHRlcikpIHtcbiAgICAgIHZhciBmaWx0ZXJFbGVzID0gdGhpcy5zcGF3bigpO1xuICAgICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgIHZhciBpbmNsdWRlID0gdGhpc0FyZyA/IF9maWx0ZXIuYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogX2ZpbHRlcihlbGUsIGksIGVsZXMpO1xuXG4gICAgICAgIGlmIChpbmNsdWRlKSB7XG4gICAgICAgICAgZmlsdGVyRWxlcy5wdXNoKGVsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpbHRlckVsZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oKTsgLy8gaWYgbm90IGhhbmRsZWQgYnkgYWJvdmUsIGdpdmUgJ2VtIGFuIGVtcHR5IGNvbGxlY3Rpb25cbiAgfSxcbiAgbm90OiBmdW5jdGlvbiBub3QodG9SZW1vdmUpIHtcbiAgICBpZiAoIXRvUmVtb3ZlKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0cmluZyh0b1JlbW92ZSkpIHtcbiAgICAgICAgdG9SZW1vdmUgPSB0aGlzLmZpbHRlcih0b1JlbW92ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMuc3Bhd24oKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpc1tpXTtcbiAgICAgICAgdmFyIHJlbW92ZSA9IHRvUmVtb3ZlLmhhcyhlbGVtZW50KTtcblxuICAgICAgICBpZiAoIXJlbW92ZSkge1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgIH1cbiAgfSxcbiAgYWJzb2x1dGVDb21wbGVtZW50OiBmdW5jdGlvbiBhYnNvbHV0ZUNvbXBsZW1lbnQoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHJldHVybiBjeS5tdXRhYmxlRWxlbWVudHMoKS5ub3QodGhpcyk7XG4gIH0sXG4gIGludGVyc2VjdDogZnVuY3Rpb24gaW50ZXJzZWN0KG90aGVyKSB7XG4gICAgLy8gaWYgYSBzZWxlY3RvciBpcyBzcGVjaWZpZWQsIHRoZW4gZmlsdGVyIGJ5IGl0IGluc3RlYWRcbiAgICBpZiAoc3RyaW5nKG90aGVyKSkge1xuICAgICAgdmFyIHNlbGVjdG9yID0gb3RoZXI7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHZhciBlbGVtZW50cyA9IHRoaXMuc3Bhd24oKTtcbiAgICB2YXIgY29sMSA9IHRoaXM7XG4gICAgdmFyIGNvbDIgPSBvdGhlcjtcbiAgICB2YXIgY29sMVNtYWxsZXIgPSB0aGlzLmxlbmd0aCA8IG90aGVyLmxlbmd0aDtcbiAgICB2YXIgY29sUyA9IGNvbDFTbWFsbGVyID8gY29sMSA6IGNvbDI7XG4gICAgdmFyIGNvbEwgPSBjb2wxU21hbGxlciA/IGNvbDIgOiBjb2wxO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2xTLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gY29sU1tpXTtcblxuICAgICAgaWYgKGNvbEwuaGFzKGVsZSkpIHtcbiAgICAgICAgZWxlbWVudHMucHVzaChlbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50cztcbiAgfSxcbiAgeG9yOiBmdW5jdGlvbiB4b3Iob3RoZXIpIHtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuXG4gICAgaWYgKHN0cmluZyhvdGhlcikpIHtcbiAgICAgIG90aGVyID0gY3kuJChvdGhlcik7XG4gICAgfVxuXG4gICAgdmFyIGVsZW1lbnRzID0gdGhpcy5zcGF3bigpO1xuICAgIHZhciBjb2wxID0gdGhpcztcbiAgICB2YXIgY29sMiA9IG90aGVyO1xuXG4gICAgdmFyIGFkZCA9IGZ1bmN0aW9uIGFkZChjb2wsIG90aGVyKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gY29sW2ldO1xuICAgICAgICB2YXIgaWQgPSBlbGUuX3ByaXZhdGUuZGF0YS5pZDtcbiAgICAgICAgdmFyIGluT3RoZXIgPSBvdGhlci5oYXNFbGVtZW50V2l0aElkKGlkKTtcblxuICAgICAgICBpZiAoIWluT3RoZXIpIHtcbiAgICAgICAgICBlbGVtZW50cy5wdXNoKGVsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYWRkKGNvbDEsIGNvbDIpO1xuICAgIGFkZChjb2wyLCBjb2wxKTtcbiAgICByZXR1cm4gZWxlbWVudHM7XG4gIH0sXG4gIGRpZmY6IGZ1bmN0aW9uIGRpZmYob3RoZXIpIHtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuXG4gICAgaWYgKHN0cmluZyhvdGhlcikpIHtcbiAgICAgIG90aGVyID0gY3kuJChvdGhlcik7XG4gICAgfVxuXG4gICAgdmFyIGxlZnQgPSB0aGlzLnNwYXduKCk7XG4gICAgdmFyIHJpZ2h0ID0gdGhpcy5zcGF3bigpO1xuICAgIHZhciBib3RoID0gdGhpcy5zcGF3bigpO1xuICAgIHZhciBjb2wxID0gdGhpcztcbiAgICB2YXIgY29sMiA9IG90aGVyO1xuXG4gICAgdmFyIGFkZCA9IGZ1bmN0aW9uIGFkZChjb2wsIG90aGVyLCByZXRFbGVzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gY29sW2ldO1xuICAgICAgICB2YXIgaWQgPSBlbGUuX3ByaXZhdGUuZGF0YS5pZDtcbiAgICAgICAgdmFyIGluT3RoZXIgPSBvdGhlci5oYXNFbGVtZW50V2l0aElkKGlkKTtcblxuICAgICAgICBpZiAoaW5PdGhlcikge1xuICAgICAgICAgIGJvdGgubWVyZ2UoZWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXRFbGVzLnB1c2goZWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhZGQoY29sMSwgY29sMiwgbGVmdCk7XG4gICAgYWRkKGNvbDIsIGNvbDEsIHJpZ2h0KTtcbiAgICByZXR1cm4ge1xuICAgICAgbGVmdDogbGVmdCxcbiAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgIGJvdGg6IGJvdGhcbiAgICB9O1xuICB9LFxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh0b0FkZCkge1xuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgICBpZiAoIXRvQWRkKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoc3RyaW5nKHRvQWRkKSkge1xuICAgICAgdmFyIHNlbGVjdG9yID0gdG9BZGQ7XG4gICAgICB0b0FkZCA9IGN5Lm11dGFibGVFbGVtZW50cygpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgdmFyIGVsZW1lbnRzID0gdGhpcy5zcGF3blNlbGYoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9BZGQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSB0b0FkZFtpXTtcbiAgICAgIHZhciBhZGQgPSAhdGhpcy5oYXMoZWxlKTtcblxuICAgICAgaWYgKGFkZCkge1xuICAgICAgICBlbGVtZW50cy5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnRzO1xuICB9LFxuICAvLyBpbiBwbGFjZSBtZXJnZSBvbiBjYWxsaW5nIGNvbGxlY3Rpb25cbiAgbWVyZ2U6IGZ1bmN0aW9uIG1lcmdlKHRvQWRkKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgY3kgPSBfcC5jeTtcblxuICAgIGlmICghdG9BZGQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmICh0b0FkZCAmJiBzdHJpbmcodG9BZGQpKSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSB0b0FkZDtcbiAgICAgIHRvQWRkID0gY3kubXV0YWJsZUVsZW1lbnRzKCkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICB2YXIgbWFwID0gX3AubWFwO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b0FkZC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRvQWRkRWxlID0gdG9BZGRbaV07XG4gICAgICB2YXIgaWQgPSB0b0FkZEVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgdmFyIGFkZCA9ICFtYXAuaGFzKGlkKTtcblxuICAgICAgaWYgKGFkZCkge1xuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmxlbmd0aCsrO1xuICAgICAgICB0aGlzW2luZGV4XSA9IHRvQWRkRWxlO1xuICAgICAgICBtYXAuc2V0KGlkLCB7XG4gICAgICAgICAgZWxlOiB0b0FkZEVsZSxcbiAgICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHVubWVyZ2VBdDogZnVuY3Rpb24gdW5tZXJnZUF0KGkpIHtcbiAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICB2YXIgaWQgPSBlbGUuaWQoKTtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgIHZhciBtYXAgPSBfcC5tYXA7IC8vIHJlbW92ZSBlbGVcblxuICAgIHRoaXNbaV0gPSB1bmRlZmluZWQ7XG4gICAgbWFwW1wiZGVsZXRlXCJdKGlkKTtcbiAgICB2YXIgdW5tZXJnZWRMYXN0RWxlID0gaSA9PT0gdGhpcy5sZW5ndGggLSAxOyAvLyByZXBsYWNlIGVtcHR5IHNwb3Qgd2l0aCBsYXN0IGVsZSBpbiBjb2xsZWN0aW9uXG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiAxICYmICF1bm1lcmdlZExhc3RFbGUpIHtcbiAgICAgIHZhciBsYXN0RWxlSSA9IHRoaXMubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBsYXN0RWxlID0gdGhpc1tsYXN0RWxlSV07XG4gICAgICB2YXIgbGFzdEVsZUlkID0gbGFzdEVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgdGhpc1tsYXN0RWxlSV0gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzW2ldID0gbGFzdEVsZTtcbiAgICAgIG1hcC5zZXQobGFzdEVsZUlkLCB7XG4gICAgICAgIGVsZTogbGFzdEVsZSxcbiAgICAgICAgaW5kZXg6IGlcbiAgICAgIH0pO1xuICAgIH0gLy8gdGhlIGNvbGxlY3Rpb24gaXMgbm93IDEgZWxlIHNtYWxsZXJcblxuXG4gICAgdGhpcy5sZW5ndGgtLTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgLy8gcmVtb3ZlIHNpbmdsZSBlbGUgaW4gcGxhY2UgaW4gY2FsbGluZyBjb2xsZWN0aW9uXG4gIHVubWVyZ2VPbmU6IGZ1bmN0aW9uIHVubWVyZ2VPbmUoZWxlKSB7XG4gICAgZWxlID0gZWxlWzBdO1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgdmFyIGlkID0gZWxlLl9wcml2YXRlLmRhdGEuaWQ7XG4gICAgdmFyIG1hcCA9IF9wLm1hcDtcbiAgICB2YXIgZW50cnkgPSBtYXAuZ2V0KGlkKTtcblxuICAgIGlmICghZW50cnkpIHtcbiAgICAgIHJldHVybiB0aGlzOyAvLyBubyBuZWVkIHRvIHJlbW92ZVxuICAgIH1cblxuICAgIHZhciBpID0gZW50cnkuaW5kZXg7XG4gICAgdGhpcy51bm1lcmdlQXQoaSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIC8vIHJlbW92ZSBlbGVzIGluIHBsYWNlIG9uIGNhbGxpbmcgY29sbGVjdGlvblxuICB1bm1lcmdlOiBmdW5jdGlvbiB1bm1lcmdlKHRvUmVtb3ZlKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcblxuICAgIGlmICghdG9SZW1vdmUpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmICh0b1JlbW92ZSAmJiBzdHJpbmcodG9SZW1vdmUpKSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSB0b1JlbW92ZTtcbiAgICAgIHRvUmVtb3ZlID0gY3kubXV0YWJsZUVsZW1lbnRzKCkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvUmVtb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnVubWVyZ2VPbmUodG9SZW1vdmVbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICB1bm1lcmdlQnk6IGZ1bmN0aW9uIHVubWVyZ2VCeSh0b1JtRm4pIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG5cbiAgICAgIGlmICh0b1JtRm4oZWxlKSkge1xuICAgICAgICB0aGlzLnVubWVyZ2VBdChpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgbWFwOiBmdW5jdGlvbiBtYXAobWFwRm4sIHRoaXNBcmcpIHtcbiAgICB2YXIgYXJyID0gW107XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgIHZhciByZXQgPSB0aGlzQXJnID8gbWFwRm4uYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogbWFwRm4oZWxlLCBpLCBlbGVzKTtcbiAgICAgIGFyci5wdXNoKHJldCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycjtcbiAgfSxcbiAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoZm4sIGluaXRpYWxWYWx1ZSkge1xuICAgIHZhciB2YWwgPSBpbml0aWFsVmFsdWU7XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWwgPSBmbih2YWwsIGVsZXNbaV0sIGksIGVsZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWw7XG4gIH0sXG4gIG1heDogZnVuY3Rpb24gbWF4KHZhbEZuLCB0aGlzQXJnKSB7XG4gICAgdmFyIG1heCA9IC1JbmZpbml0eTtcbiAgICB2YXIgbWF4RWxlO1xuICAgIHZhciBlbGVzID0gdGhpcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICB2YXIgdmFsID0gdGhpc0FyZyA/IHZhbEZuLmFwcGx5KHRoaXNBcmcsIFtlbGUsIGksIGVsZXNdKSA6IHZhbEZuKGVsZSwgaSwgZWxlcyk7XG5cbiAgICAgIGlmICh2YWwgPiBtYXgpIHtcbiAgICAgICAgbWF4ID0gdmFsO1xuICAgICAgICBtYXhFbGUgPSBlbGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBtYXgsXG4gICAgICBlbGU6IG1heEVsZVxuICAgIH07XG4gIH0sXG4gIG1pbjogZnVuY3Rpb24gbWluKHZhbEZuLCB0aGlzQXJnKSB7XG4gICAgdmFyIG1pbiA9IEluZmluaXR5O1xuICAgIHZhciBtaW5FbGU7XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgIHZhciB2YWwgPSB0aGlzQXJnID8gdmFsRm4uYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogdmFsRm4oZWxlLCBpLCBlbGVzKTtcblxuICAgICAgaWYgKHZhbCA8IG1pbikge1xuICAgICAgICBtaW4gPSB2YWw7XG4gICAgICAgIG1pbkVsZSA9IGVsZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IG1pbixcbiAgICAgIGVsZTogbWluRWxlXG4gICAgfTtcbiAgfVxufTsgLy8gYWxpYXNlc1xuXG52YXIgZm4kNSA9IGVsZXNmbiRuO1xuZm4kNVsndSddID0gZm4kNVsnfCddID0gZm4kNVsnKyddID0gZm4kNS51bmlvbiA9IGZuJDUub3IgPSBmbiQ1LmFkZDtcbmZuJDVbJ1xcXFwnXSA9IGZuJDVbJyEnXSA9IGZuJDVbJy0nXSA9IGZuJDUuZGlmZmVyZW5jZSA9IGZuJDUucmVsYXRpdmVDb21wbGVtZW50ID0gZm4kNS5zdWJ0cmFjdCA9IGZuJDUubm90O1xuZm4kNVsnbiddID0gZm4kNVsnJiddID0gZm4kNVsnLiddID0gZm4kNS5hbmQgPSBmbiQ1LmludGVyc2VjdGlvbiA9IGZuJDUuaW50ZXJzZWN0O1xuZm4kNVsnXiddID0gZm4kNVsnKCspJ10gPSBmbiQ1WycoLSknXSA9IGZuJDUuc3ltbWV0cmljRGlmZmVyZW5jZSA9IGZuJDUuc3ltZGlmZiA9IGZuJDUueG9yO1xuZm4kNS5mbkZpbHRlciA9IGZuJDUuZmlsdGVyRm4gPSBmbiQ1LnN0ZEZpbHRlciA9IGZuJDUuZmlsdGVyO1xuZm4kNS5jb21wbGVtZW50ID0gZm4kNS5hYnNjb21wID0gZm4kNS5hYnNvbHV0ZUNvbXBsZW1lbnQ7XG5cbnZhciBlbGVzZm4kbyA9IHtcbiAgaXNOb2RlOiBmdW5jdGlvbiBpc05vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXAoKSA9PT0gJ25vZGVzJztcbiAgfSxcbiAgaXNFZGdlOiBmdW5jdGlvbiBpc0VkZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXAoKSA9PT0gJ2VkZ2VzJztcbiAgfSxcbiAgaXNMb29wOiBmdW5jdGlvbiBpc0xvb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGdlKCkgJiYgdGhpcy5zb3VyY2UoKVswXSA9PT0gdGhpcy50YXJnZXQoKVswXTtcbiAgfSxcbiAgaXNTaW1wbGU6IGZ1bmN0aW9uIGlzU2ltcGxlKCkge1xuICAgIHJldHVybiB0aGlzLmlzRWRnZSgpICYmIHRoaXMuc291cmNlKClbMF0gIT09IHRoaXMudGFyZ2V0KClbMF07XG4gIH0sXG4gIGdyb3VwOiBmdW5jdGlvbiBncm91cCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuX3ByaXZhdGUuZ3JvdXA7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqICBFbGVtZW50cyBhcmUgZHJhd24gaW4gYSBzcGVjaWZpYyBvcmRlciBiYXNlZCBvbiBjb21wb3VuZCBkZXB0aCAobG93IHRvIGhpZ2gpLCB0aGUgZWxlbWVudCB0eXBlIChub2RlcyBhYm92ZSBlZGdlcyksXG4gKiAgYW5kIHotaW5kZXggKGxvdyB0byBoaWdoKS4gIFRoZXNlIHN0eWxlcyBhZmZlY3QgaG93IHRoaXMgYXBwbGllczpcbiAqXG4gKiAgei1jb21wb3VuZC1kZXB0aDogTWF5IGJlIGBib3R0b20gfCBvcnBoYW4gfCBhdXRvIHwgdG9wYC4gIFRoZSBmaXJzdCBkcmF3biBpcyBgYm90dG9tYCwgdGhlbiBgb3JwaGFuYCB3aGljaCBpcyB0aGVcbiAqICAgICAgc2FtZSBkZXB0aCBhcyB0aGUgcm9vdCBvZiB0aGUgY29tcG91bmQgZ3JhcGgsIGZvbGxvd2VkIGJ5IHRoZSBkZWZhdWx0IHZhbHVlIGBhdXRvYCB3aGljaCBkcmF3cyBpbiBvcmRlciBmcm9tXG4gKiAgICAgIHJvb3QgdG8gbGVhdmVzIG9mIHRoZSBjb21wb3VuZCBncmFwaC4gIFRoZSBsYXN0IGRyYXduIGlzIGB0b3BgLlxuICogIHotaW5kZXgtY29tcGFyZTogTWF5IGJlIGBhdXRvIHwgbWFudWFsYC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBhdXRvYCB3aGljaCBhbHdheXMgZHJhd3MgZWRnZXMgdW5kZXIgbm9kZXMuXG4gKiAgICAgIGBtYW51YWxgIGlnbm9yZXMgdGhpcyBjb252ZW50aW9uIGFuZCBkcmF3cyBiYXNlZCBvbiB0aGUgYHotaW5kZXhgIHZhbHVlIHNldHRpbmcuXG4gKiAgei1pbmRleDogQW4gaW50ZWdlciB2YWx1ZSB0aGF0IGFmZmVjdHMgdGhlIHJlbGF0aXZlIGRyYXcgb3JkZXIgb2YgZWxlbWVudHMuICBJbiBnZW5lcmFsLCBhbiBlbGVtZW50IHdpdGggYSBoaWdoZXJcbiAqICAgICAgYHotaW5kZXhgIHdpbGwgYmUgZHJhd24gb24gdG9wIG9mIGFuIGVsZW1lbnQgd2l0aCBhIGxvd2VyIGB6LWluZGV4YC5cbiAqL1xuXG52YXIgekluZGV4U29ydCA9IGZ1bmN0aW9uIHpJbmRleFNvcnQoYSwgYikge1xuICB2YXIgY3kgPSBhLmN5KCk7XG4gIHZhciBoYXNDb21wb3VuZE5vZGVzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuXG4gIGZ1bmN0aW9uIGdldERlcHRoKGVsZSkge1xuICAgIHZhciBzdHlsZSA9IGVsZS5wc3R5bGUoJ3otY29tcG91bmQtZGVwdGgnKTtcblxuICAgIGlmIChzdHlsZS52YWx1ZSA9PT0gJ2F1dG8nKSB7XG4gICAgICByZXR1cm4gaGFzQ29tcG91bmROb2RlcyA/IGVsZS56RGVwdGgoKSA6IDA7XG4gICAgfSBlbHNlIGlmIChzdHlsZS52YWx1ZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9IGVsc2UgaWYgKHN0eWxlLnZhbHVlID09PSAndG9wJykge1xuICAgICAgcmV0dXJuIE1BWF9JTlQ7XG4gICAgfSAvLyAnb3JwaGFuJ1xuXG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBkZXB0aERpZmYgPSBnZXREZXB0aChhKSAtIGdldERlcHRoKGIpO1xuXG4gIGlmIChkZXB0aERpZmYgIT09IDApIHtcbiAgICByZXR1cm4gZGVwdGhEaWZmO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RWxlRGVwdGgoZWxlKSB7XG4gICAgdmFyIHN0eWxlID0gZWxlLnBzdHlsZSgnei1pbmRleC1jb21wYXJlJyk7XG5cbiAgICBpZiAoc3R5bGUudmFsdWUgPT09ICdhdXRvJykge1xuICAgICAgcmV0dXJuIGVsZS5pc05vZGUoKSA/IDEgOiAwO1xuICAgIH0gLy8gJ21hbnVhbCdcblxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgZWxlRGlmZiA9IGdldEVsZURlcHRoKGEpIC0gZ2V0RWxlRGVwdGgoYik7XG5cbiAgaWYgKGVsZURpZmYgIT09IDApIHtcbiAgICByZXR1cm4gZWxlRGlmZjtcbiAgfVxuXG4gIHZhciB6RGlmZiA9IGEucHN0eWxlKCd6LWluZGV4JykudmFsdWUgLSBiLnBzdHlsZSgnei1pbmRleCcpLnZhbHVlO1xuXG4gIGlmICh6RGlmZiAhPT0gMCkge1xuICAgIHJldHVybiB6RGlmZjtcbiAgfSAvLyBjb21wYXJlIGluZGljZXMgaW4gdGhlIGNvcmUgKG9yZGVyIGFkZGVkIHRvIGdyYXBoIHcvIGxhc3Qgb24gdG9wKVxuXG5cbiAgcmV0dXJuIGEucG9vbEluZGV4KCkgLSBiLnBvb2xJbmRleCgpO1xufTtcblxudmFyIGVsZXNmbiRwID0ge1xuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGZuJDEsIHRoaXNBcmcpIHtcbiAgICBpZiAoZm4oZm4kMSkpIHtcbiAgICAgIHZhciBOID0gdGhpcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgICB2YXIgcmV0ID0gdGhpc0FyZyA/IGZuJDEuYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgdGhpc10pIDogZm4kMShlbGUsIGksIHRoaXMpO1xuXG4gICAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gLy8gZXhpdCBlYWNoIGVhcmx5IG9uIHJldHVybiBmYWxzZVxuXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHRvQXJyYXk6IGZ1bmN0aW9uIHRvQXJyYXkoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycmF5LnB1c2godGhpc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycmF5O1xuICB9LFxuICBzbGljZTogZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIHZhciB0aGlzU2l6ZSA9IHRoaXMubGVuZ3RoO1xuXG4gICAgaWYgKGVuZCA9PSBudWxsKSB7XG4gICAgICBlbmQgPSB0aGlzU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPT0gbnVsbCkge1xuICAgICAgc3RhcnQgPSAwO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgIHN0YXJ0ID0gdGhpc1NpemUgKyBzdGFydDtcbiAgICB9XG5cbiAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgZW5kID0gdGhpc1NpemUgKyBlbmQ7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpID49IDAgJiYgaSA8IGVuZCAmJiBpIDwgdGhpc1NpemU7IGkrKykge1xuICAgICAgYXJyYXkucHVzaCh0aGlzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihhcnJheSk7XG4gIH0sXG4gIHNpemU6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoO1xuICB9LFxuICBlcTogZnVuY3Rpb24gZXEoaSkge1xuICAgIHJldHVybiB0aGlzW2ldIHx8IHRoaXMuc3Bhd24oKTtcbiAgfSxcbiAgZmlyc3Q6IGZ1bmN0aW9uIGZpcnN0KCkge1xuICAgIHJldHVybiB0aGlzWzBdIHx8IHRoaXMuc3Bhd24oKTtcbiAgfSxcbiAgbGFzdDogZnVuY3Rpb24gbGFzdCgpIHtcbiAgICByZXR1cm4gdGhpc1t0aGlzLmxlbmd0aCAtIDFdIHx8IHRoaXMuc3Bhd24oKTtcbiAgfSxcbiAgZW1wdHk6IGZ1bmN0aW9uIGVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMDtcbiAgfSxcbiAgbm9uZW1wdHk6IGZ1bmN0aW9uIG5vbmVtcHR5KCkge1xuICAgIHJldHVybiAhdGhpcy5lbXB0eSgpO1xuICB9LFxuICBzb3J0OiBmdW5jdGlvbiBzb3J0KHNvcnRGbikge1xuICAgIGlmICghZm4oc29ydEZuKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIHNvcnRlZCA9IHRoaXMudG9BcnJheSgpLnNvcnQoc29ydEZuKTtcbiAgICByZXR1cm4gdGhpcy5zcGF3bihzb3J0ZWQpO1xuICB9LFxuICBzb3J0QnlaSW5kZXg6IGZ1bmN0aW9uIHNvcnRCeVpJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0KHpJbmRleFNvcnQpO1xuICB9LFxuICB6RGVwdGg6IGZ1bmN0aW9uIHpEZXB0aCgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmICghZWxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gLy8gbGV0IGN5ID0gZWxlLmN5KCk7XG5cblxuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgZ3JvdXAgPSBfcC5ncm91cDtcblxuICAgIGlmIChncm91cCA9PT0gJ25vZGVzJykge1xuICAgICAgdmFyIGRlcHRoID0gX3AuZGF0YS5wYXJlbnQgPyBlbGUucGFyZW50cygpLnNpemUoKSA6IDA7XG5cbiAgICAgIGlmICghZWxlLmlzUGFyZW50KCkpIHtcbiAgICAgICAgcmV0dXJuIE1BWF9JTlQgLSAxOyAvLyBjaGlsZGxlc3Mgbm9kZXMgYWx3YXlzIG9uIHRvcFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVwdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzcmMgPSBfcC5zb3VyY2U7XG4gICAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgICAgdmFyIHNyY0RlcHRoID0gc3JjLnpEZXB0aCgpO1xuICAgICAgdmFyIHRndERlcHRoID0gdGd0LnpEZXB0aCgpO1xuICAgICAgcmV0dXJuIE1hdGgubWF4KHNyY0RlcHRoLCB0Z3REZXB0aCwgMCk7IC8vIGRlcHRoIG9mIGRlZXBlc3QgcGFyZW50XG4gICAgfVxuICB9XG59O1xuZWxlc2ZuJHAuZWFjaCA9IGVsZXNmbiRwLmZvckVhY2g7XG5cbnZhciBkZWZpbmVTeW1ib2xJdGVyYXRvciA9IGZ1bmN0aW9uIGRlZmluZVN5bWJvbEl0ZXJhdG9yKCkge1xuICB2YXIgdHlwZW9mVW5kZWYgPSAgXCJ1bmRlZmluZWRcIiA7XG4gIHZhciBpc0l0ZXJhdG9yU3VwcG9ydGVkID0gKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZihTeW1ib2wpKSAhPSB0eXBlb2ZVbmRlZiAmJiBfdHlwZW9mKFN5bWJvbC5pdGVyYXRvcikgIT0gdHlwZW9mVW5kZWY7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICBpZiAoaXNJdGVyYXRvclN1cHBvcnRlZCkge1xuICAgIGVsZXNmbiRwW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgICB2YXIgZW50cnkgPSB7XG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICB9O1xuICAgICAgdmFyIGkgPSAwO1xuICAgICAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgICAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgaWYgKGkgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gX3RoaXNbaSsrXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBlbnRyeS5kb25lID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgIH1cbiAgICAgIH0sIFN5bWJvbC5pdGVyYXRvciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufTtcblxuZGVmaW5lU3ltYm9sSXRlcmF0b3IoKTtcblxudmFyIGdldExheW91dERpbWVuc2lvbk9wdGlvbnMgPSBkZWZhdWx0cyh7XG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2Vcbn0pO1xudmFyIGVsZXNmbiRxID0ge1xuICAvLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIG5vZGUgZGltZW5zaW9ucyB7IHgsIHkgfSBiYXNlZCBvbiBvcHRpb25zIGdpdmVuXG4gIGxheW91dERpbWVuc2lvbnM6IGZ1bmN0aW9uIGxheW91dERpbWVuc2lvbnMob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBnZXRMYXlvdXREaW1lbnNpb25PcHRpb25zKG9wdGlvbnMpO1xuICAgIHZhciBkaW1zO1xuXG4gICAgaWYgKCF0aGlzLnRha2VzVXBTcGFjZSgpKSB7XG4gICAgICBkaW1zID0ge1xuICAgICAgICB3OiAwLFxuICAgICAgICBoOiAwXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5ub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHMpIHtcbiAgICAgIHZhciBiYkRpbSA9IHRoaXMuYm91bmRpbmdCb3goKTtcbiAgICAgIGRpbXMgPSB7XG4gICAgICAgIHc6IGJiRGltLncsXG4gICAgICAgIGg6IGJiRGltLmhcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpbXMgPSB7XG4gICAgICAgIHc6IHRoaXMub3V0ZXJXaWR0aCgpLFxuICAgICAgICBoOiB0aGlzLm91dGVySGVpZ2h0KClcbiAgICAgIH07XG4gICAgfSAvLyBzYW5pdGlzZSB0aGUgZGltZW5zaW9ucyBmb3IgZXh0ZXJuYWwgbGF5b3V0cyAoYXZvaWQgZGl2aXNpb24gYnkgemVybylcblxuXG4gICAgaWYgKGRpbXMudyA9PT0gMCB8fCBkaW1zLmggPT09IDApIHtcbiAgICAgIGRpbXMudyA9IGRpbXMuaCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpbXM7XG4gIH0sXG4gIC8vIHVzaW5nIHN0YW5kYXJkIGxheW91dCBvcHRpb25zLCBhcHBseSBwb3NpdGlvbiBmdW5jdGlvbiAody8gb3Igdy9vIGFuaW1hdGlvbilcbiAgbGF5b3V0UG9zaXRpb25zOiBmdW5jdGlvbiBsYXlvdXRQb3NpdGlvbnMobGF5b3V0LCBvcHRpb25zLCBmbikge1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiAhbi5pc1BhcmVudCgpO1xuICAgIH0pO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICB2YXIgbGF5b3V0RWxlcyA9IG9wdGlvbnMuZWxlczsgLy8gbm9kZXMgJiBlZGdlc1xuXG4gICAgdmFyIGdldE1lbW9pemVLZXkgPSBmdW5jdGlvbiBnZXRNZW1vaXplS2V5KG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmlkKCk7XG4gICAgfTtcblxuICAgIHZhciBmbk1lbSA9IG1lbW9pemUoZm4sIGdldE1lbW9pemVLZXkpOyAvLyBtZW1vaXplZCB2ZXJzaW9uIG9mIHBvc2l0aW9uIGZ1bmN0aW9uXG5cbiAgICBsYXlvdXQuZW1pdCh7XG4gICAgICB0eXBlOiAnbGF5b3V0c3RhcnQnLFxuICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICB9KTtcbiAgICBsYXlvdXQuYW5pbWF0aW9ucyA9IFtdO1xuXG4gICAgdmFyIGNhbGN1bGF0ZVNwYWNpbmcgPSBmdW5jdGlvbiBjYWxjdWxhdGVTcGFjaW5nKHNwYWNpbmcsIG5vZGVzQmIsIHBvcykge1xuICAgICAgdmFyIGNlbnRlciA9IHtcbiAgICAgICAgeDogbm9kZXNCYi54MSArIG5vZGVzQmIudyAvIDIsXG4gICAgICAgIHk6IG5vZGVzQmIueTEgKyBub2Rlc0JiLmggLyAyXG4gICAgICB9O1xuICAgICAgdmFyIHNwYWNpbmdWZWN0b3IgPSB7XG4gICAgICAgIC8vIHNjYWxlIGZyb20gY2VudGVyIG9mIGJvdW5kaW5nIGJveCAobm90IG5lY2Vzc2FyaWx5IDAsMClcbiAgICAgICAgeDogKHBvcy54IC0gY2VudGVyLngpICogc3BhY2luZyxcbiAgICAgICAgeTogKHBvcy55IC0gY2VudGVyLnkpICogc3BhY2luZ1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGNlbnRlci54ICsgc3BhY2luZ1ZlY3Rvci54LFxuICAgICAgICB5OiBjZW50ZXIueSArIHNwYWNpbmdWZWN0b3IueVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdmFyIHVzZVNwYWNpbmdGYWN0b3IgPSBvcHRpb25zLnNwYWNpbmdGYWN0b3IgJiYgb3B0aW9ucy5zcGFjaW5nRmFjdG9yICE9PSAxO1xuXG4gICAgdmFyIHNwYWNpbmdCYiA9IGZ1bmN0aW9uIHNwYWNpbmdCYigpIHtcbiAgICAgIGlmICghdXNlU3BhY2luZ0ZhY3Rvcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgdmFyIHBvcyA9IGZuTWVtKG5vZGUsIGkpO1xuICAgICAgICBleHBhbmRCb3VuZGluZ0JveEJ5UG9pbnQoYmIsIHBvcy54LCBwb3MueSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBiYjtcbiAgICB9O1xuXG4gICAgdmFyIGJiID0gc3BhY2luZ0JiKCk7XG4gICAgdmFyIGdldEZpbmFsUG9zID0gbWVtb2l6ZShmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgdmFyIG5ld1BvcyA9IGZuTWVtKG5vZGUsIGkpO1xuXG4gICAgICBpZiAodXNlU3BhY2luZ0ZhY3Rvcikge1xuICAgICAgICB2YXIgc3BhY2luZyA9IE1hdGguYWJzKG9wdGlvbnMuc3BhY2luZ0ZhY3Rvcik7XG4gICAgICAgIG5ld1BvcyA9IGNhbGN1bGF0ZVNwYWNpbmcoc3BhY2luZywgYmIsIG5ld1Bvcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRyYW5zZm9ybSAhPSBudWxsKSB7XG4gICAgICAgIG5ld1BvcyA9IG9wdGlvbnMudHJhbnNmb3JtKG5vZGUsIG5ld1Bvcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdQb3M7XG4gICAgfSwgZ2V0TWVtb2l6ZUtleSk7XG5cbiAgICBpZiAob3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIHZhciBuZXdQb3MgPSBnZXRGaW5hbFBvcyhub2RlLCBpKTtcbiAgICAgICAgdmFyIGFuaW1hdGVOb2RlID0gb3B0aW9ucy5hbmltYXRlRmlsdGVyID09IG51bGwgfHwgb3B0aW9ucy5hbmltYXRlRmlsdGVyKG5vZGUsIGkpO1xuXG4gICAgICAgIGlmIChhbmltYXRlTm9kZSkge1xuICAgICAgICAgIHZhciBhbmkgPSBub2RlLmFuaW1hdGlvbih7XG4gICAgICAgICAgICBwb3NpdGlvbjogbmV3UG9zLFxuICAgICAgICAgICAgZHVyYXRpb246IG9wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgICAgICBlYXNpbmc6IG9wdGlvbnMuYW5pbWF0aW9uRWFzaW5nXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGF5b3V0LmFuaW1hdGlvbnMucHVzaChhbmkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUucG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5maXQpIHtcbiAgICAgICAgdmFyIGZpdEFuaSA9IGN5LmFuaW1hdGlvbih7XG4gICAgICAgICAgZml0OiB7XG4gICAgICAgICAgICBib3VuZGluZ0JveDogbGF5b3V0RWxlcy5ib3VuZGluZ0JveEF0KGdldEZpbmFsUG9zKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IG9wdGlvbnMucGFkZGluZ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZHVyYXRpb246IG9wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgICAgZWFzaW5nOiBvcHRpb25zLmFuaW1hdGlvbkVhc2luZ1xuICAgICAgICB9KTtcbiAgICAgICAgbGF5b3V0LmFuaW1hdGlvbnMucHVzaChmaXRBbmkpO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnpvb20gIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnBhbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciB6b29tUGFuQW5pID0gY3kuYW5pbWF0aW9uKHtcbiAgICAgICAgICB6b29tOiBvcHRpb25zLnpvb20sXG4gICAgICAgICAgcGFuOiBvcHRpb25zLnBhbixcbiAgICAgICAgICBkdXJhdGlvbjogb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgICBlYXNpbmc6IG9wdGlvbnMuYW5pbWF0aW9uRWFzaW5nXG4gICAgICAgIH0pO1xuICAgICAgICBsYXlvdXQuYW5pbWF0aW9ucy5wdXNoKHpvb21QYW5BbmkpO1xuICAgICAgfVxuXG4gICAgICBsYXlvdXQuYW5pbWF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChhbmkpIHtcbiAgICAgICAgcmV0dXJuIGFuaS5wbGF5KCk7XG4gICAgICB9KTtcbiAgICAgIGxheW91dC5vbmUoJ2xheW91dHJlYWR5Jywgb3B0aW9ucy5yZWFkeSk7XG4gICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdsYXlvdXRyZWFkeScsXG4gICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICB9KTtcbiAgICAgIFByb21pc2UkMS5hbGwobGF5b3V0LmFuaW1hdGlvbnMubWFwKGZ1bmN0aW9uIChhbmkpIHtcbiAgICAgICAgcmV0dXJuIGFuaS5wcm9taXNlKCk7XG4gICAgICB9KSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxheW91dC5vbmUoJ2xheW91dHN0b3AnLCBvcHRpb25zLnN0b3ApO1xuICAgICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ2xheW91dHN0b3AnLFxuICAgICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVzLnBvc2l0aW9ucyhnZXRGaW5hbFBvcyk7XG5cbiAgICAgIGlmIChvcHRpb25zLmZpdCkge1xuICAgICAgICBjeS5maXQob3B0aW9ucy5lbGVzLCBvcHRpb25zLnBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy56b29tICE9IG51bGwpIHtcbiAgICAgICAgY3kuem9vbShvcHRpb25zLnpvb20pO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5wYW4pIHtcbiAgICAgICAgY3kucGFuKG9wdGlvbnMucGFuKTtcbiAgICAgIH1cblxuICAgICAgbGF5b3V0Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICAgIGxheW91dC5lbWl0KHtcbiAgICAgICAgdHlwZTogJ2xheW91dHJlYWR5JyxcbiAgICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICAgIH0pO1xuICAgICAgbGF5b3V0Lm9uZSgnbGF5b3V0c3RvcCcsIG9wdGlvbnMuc3RvcCk7XG4gICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdsYXlvdXRzdG9wJyxcbiAgICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBsYXlvdXQ6IGZ1bmN0aW9uIGxheW91dChvcHRpb25zKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHJldHVybiBjeS5tYWtlTGF5b3V0KGV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgZWxlczogdGhpc1xuICAgIH0pKTtcbiAgfVxufTsgLy8gYWxpYXNlczpcblxuZWxlc2ZuJHEuY3JlYXRlTGF5b3V0ID0gZWxlc2ZuJHEubWFrZUxheW91dCA9IGVsZXNmbiRxLmxheW91dDtcblxuZnVuY3Rpb24gc3R5bGVDYWNoZShrZXksIGZuLCBlbGUpIHtcbiAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICB2YXIgY2FjaGUgPSBfcC5zdHlsZUNhY2hlID0gX3Auc3R5bGVDYWNoZSB8fCBbXTtcbiAgdmFyIHZhbDtcblxuICBpZiAoKHZhbCA9IGNhY2hlW2tleV0pICE9IG51bGwpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9IGVsc2Uge1xuICAgIHZhbCA9IGNhY2hlW2tleV0gPSBmbihlbGUpO1xuICAgIHJldHVybiB2YWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FjaGVTdHlsZUZ1bmN0aW9uKGtleSwgZm4pIHtcbiAga2V5ID0gaGFzaFN0cmluZyhrZXkpO1xuICByZXR1cm4gZnVuY3Rpb24gY2FjaGVkU3R5bGVGdW5jdGlvbihlbGUpIHtcbiAgICByZXR1cm4gc3R5bGVDYWNoZShrZXksIGZuLCBlbGUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oa2V5LCBmbikge1xuICBrZXkgPSBoYXNoU3RyaW5nKGtleSk7XG5cbiAgdmFyIHNlbGZGbiA9IGZ1bmN0aW9uIHNlbGZGbihlbGUpIHtcbiAgICByZXR1cm4gZm4uY2FsbChlbGUpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiBjYWNoZWRQcm90b3R5cGVTdHlsZUZ1bmN0aW9uKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgcmV0dXJuIHN0eWxlQ2FjaGUoa2V5LCBzZWxmRm4sIGVsZSk7XG4gICAgfVxuICB9O1xufVxuXG52YXIgZWxlc2ZuJHIgPSB7XG4gIHJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZTogZnVuY3Rpb24gcmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKHVzZUNhY2hlKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHZhciByZW5kZXJlciA9IGN5LnJlbmRlcmVyKCk7XG4gICAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5LnN0eWxlRW5hYmxlZCgpO1xuXG4gICAgaWYgKHJlbmRlcmVyICYmIHN0eWxlRW5hYmxlZCkge1xuICAgICAgcmVuZGVyZXIucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKHRoaXMsIHVzZUNhY2hlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZGlydHlTdHlsZUNhY2hlOiBmdW5jdGlvbiBkaXJ0eVN0eWxlQ2FjaGUoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgdmFyIGRpcnR5ID0gZnVuY3Rpb24gZGlydHkoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLl9wcml2YXRlLnN0eWxlQ2FjaGUgPSBudWxsO1xuICAgIH07XG5cbiAgICBpZiAoY3kuaGFzQ29tcG91bmROb2RlcygpKSB7XG4gICAgICB2YXIgZWxlcztcbiAgICAgIGVsZXMgPSB0aGlzLnNwYXduU2VsZigpLm1lcmdlKHRoaXMuZGVzY2VuZGFudHMoKSkubWVyZ2UodGhpcy5wYXJlbnRzKCkpO1xuICAgICAgZWxlcy5tZXJnZShlbGVzLmNvbm5lY3RlZEVkZ2VzKCkpO1xuICAgICAgZWxlcy5mb3JFYWNoKGRpcnR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgZGlydHkoZWxlKTtcbiAgICAgICAgZWxlLmNvbm5lY3RlZEVkZ2VzKCkuZm9yRWFjaChkaXJ0eSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgLy8gZnVsbHkgdXBkYXRlcyAocmVjYWxjdWxhdGVzKSB0aGUgc3R5bGUgZm9yIHRoZSBlbGVtZW50c1xuICB1cGRhdGVTdHlsZTogZnVuY3Rpb24gdXBkYXRlU3R5bGUobm90aWZ5UmVuZGVyZXIpIHtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuXG4gICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKGN5LmJhdGNoaW5nKCkpIHtcbiAgICAgIHZhciBiRWxlcyA9IGN5Ll9wcml2YXRlLmJhdGNoU3R5bGVFbGVzO1xuICAgICAgYkVsZXMubWVyZ2UodGhpcyk7XG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmcgYW5kIGV4aXQgZWFybHkgd2hlbiBiYXRjaGluZ1xuICAgIH1cblxuICAgIHZhciBoYXNDb21wb3VuZHMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gICAgdmFyIHVwZGF0ZWRFbGVzID0gdGhpcztcbiAgICBub3RpZnlSZW5kZXJlciA9IG5vdGlmeVJlbmRlcmVyIHx8IG5vdGlmeVJlbmRlcmVyID09PSB1bmRlZmluZWQgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAoaGFzQ29tcG91bmRzKSB7XG4gICAgICAvLyB0aGVuIGFkZCBldmVyeXRoaW5nIHVwIGFuZCBkb3duIGZvciBjb21wb3VuZCBzZWxlY3RvciBjaGVja3NcbiAgICAgIHVwZGF0ZWRFbGVzID0gdGhpcy5zcGF3blNlbGYoKS5tZXJnZSh0aGlzLmRlc2NlbmRhbnRzKCkpLm1lcmdlKHRoaXMucGFyZW50cygpKTtcbiAgICB9IC8vIGxldCBjaGFuZ2VkRWxlcyA9IHN0eWxlLmFwcGx5KCB1cGRhdGVkRWxlcyApO1xuXG5cbiAgICB2YXIgY2hhbmdlZEVsZXMgPSB1cGRhdGVkRWxlcztcblxuICAgIGlmIChub3RpZnlSZW5kZXJlcikge1xuICAgICAgY2hhbmdlZEVsZXMuZW1pdEFuZE5vdGlmeSgnc3R5bGUnKTsgLy8gbGV0IHJlbmRlcmVyIGtub3cgd2UgY2hhbmdlZCBzdHlsZVxuICAgIH0gZWxzZSB7XG4gICAgICBjaGFuZ2VkRWxlcy5lbWl0KCdzdHlsZScpOyAvLyBqdXN0IGZpcmUgdGhlIGV2ZW50XG4gICAgfVxuXG4gICAgdXBkYXRlZEVsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLl9wcml2YXRlLnN0eWxlRGlydHkgPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICAvLyBwcml2YXRlOiBjbGVhcnMgZGlydHkgZmxhZyBhbmQgcmVjYWxjdWxhdGVzIHN0eWxlXG4gIGNsZWFuU3R5bGU6IGZ1bmN0aW9uIGNsZWFuU3R5bGUoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG5cbiAgICAgIGlmIChlbGUuX3ByaXZhdGUuc3R5bGVEaXJ0eSkge1xuICAgICAgICAvLyBuLmIuIHRoaXMgZmxhZyBzaG91bGQgYmUgc2V0IGJlZm9yZSBhcHBseSgpIHRvIGF2b2lkIHBvdGVudGlhbCBpbmZpbml0ZSByZWN1cnNpb25cbiAgICAgICAgZWxlLl9wcml2YXRlLnN0eWxlRGlydHkgPSBmYWxzZTtcbiAgICAgICAgY3kuc3R5bGUoKS5hcHBseShlbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgLy8gZ2V0IHRoZSBpbnRlcm5hbCBwYXJzZWQgc3R5bGUgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIHByb3BlcnR5XG4gIHBhcnNlZFN0eWxlOiBmdW5jdGlvbiBwYXJzZWRTdHlsZShwcm9wZXJ0eSkge1xuICAgIHZhciBpbmNsdWRlTm9uRGVmYXVsdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgY3kgPSBlbGUuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICB0aGlzLmNsZWFuU3R5bGUoKTtcbiAgICAgIHZhciBvdmVycmlkZGVuU3R5bGUgPSBlbGUuX3ByaXZhdGUuc3R5bGVbcHJvcGVydHldO1xuXG4gICAgICBpZiAob3ZlcnJpZGRlblN0eWxlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRkZW5TdHlsZTtcbiAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZU5vbkRlZmF1bHQpIHtcbiAgICAgICAgcmV0dXJuIGN5LnN0eWxlKCkuZ2V0RGVmYXVsdFByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbnVtZXJpY1N0eWxlOiBmdW5jdGlvbiBudW1lcmljU3R5bGUocHJvcGVydHkpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmICghZWxlLmN5KCkuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICB2YXIgcHN0eWxlID0gZWxlLnBzdHlsZShwcm9wZXJ0eSk7XG4gICAgICByZXR1cm4gcHN0eWxlLnBmVmFsdWUgIT09IHVuZGVmaW5lZCA/IHBzdHlsZS5wZlZhbHVlIDogcHN0eWxlLnZhbHVlO1xuICAgIH1cbiAgfSxcbiAgbnVtZXJpY1N0eWxlVW5pdHM6IGZ1bmN0aW9uIG51bWVyaWNTdHlsZVVuaXRzKHByb3BlcnR5KSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoIWVsZS5jeSgpLnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5wc3R5bGUocHJvcGVydHkpLnVuaXRzO1xuICAgIH1cbiAgfSxcbiAgLy8gZ2V0IHRoZSBzcGVjaWZpZWQgY3NzIHByb3BlcnR5IGFzIGEgcmVuZGVyZWQgdmFsdWUgKGkuZS4gb24tc2NyZWVuIHZhbHVlKVxuICAvLyBvciBnZXQgdGhlIHdob2xlIHJlbmRlcmVkIHN0eWxlIGlmIG5vIHByb3BlcnR5IHNwZWNpZmllZCAoTkIgZG9lc24ndCBhbGxvdyBzZXR0aW5nKVxuICByZW5kZXJlZFN0eWxlOiBmdW5jdGlvbiByZW5kZXJlZFN0eWxlKHByb3BlcnR5KSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gY3kuc3R5bGUoKS5nZXRSZW5kZXJlZFN0eWxlKGVsZSwgcHJvcGVydHkpO1xuICAgIH1cbiAgfSxcbiAgLy8gcmVhZCB0aGUgY2FsY3VsYXRlZCBjc3Mgc3R5bGUgb2YgdGhlIGVsZW1lbnQgb3Igb3ZlcnJpZGUgdGhlIHN0eWxlICh2aWEgYSBieXBhc3MpXG4gIHN0eWxlOiBmdW5jdGlvbiBzdHlsZShuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHZhciB1cGRhdGVUcmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgIHZhciBzdHlsZSA9IGN5LnN0eWxlKCk7XG5cbiAgICBpZiAocGxhaW5PYmplY3QobmFtZSkpIHtcbiAgICAgIC8vIHRoZW4gZXh0ZW5kIHRoZSBieXBhc3NcbiAgICAgIHZhciBwcm9wcyA9IG5hbWU7XG4gICAgICBzdHlsZS5hcHBseUJ5cGFzcyh0aGlzLCBwcm9wcywgdXBkYXRlVHJhbnNpdGlvbnMpO1xuICAgICAgdGhpcy5lbWl0QW5kTm90aWZ5KCdzdHlsZScpOyAvLyBsZXQgdGhlIHJlbmRlcmVyIGtub3cgd2UndmUgdXBkYXRlZCBzdHlsZVxuICAgIH0gZWxzZSBpZiAoc3RyaW5nKG5hbWUpKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyB0aGVuIGdldCB0aGUgcHJvcGVydHkgZnJvbSB0aGUgc3R5bGVcbiAgICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICAgICAgaWYgKGVsZSkge1xuICAgICAgICAgIHJldHVybiBzdHlsZS5nZXRTdHlsZVByb3BlcnR5VmFsdWUoZWxlLCBuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBlbXB0eSBjb2xsZWN0aW9uID0+IGNhbid0IGdldCBhbnkgdmFsdWVcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoZW4gc2V0IHRoZSBieXBhc3Mgd2l0aCB0aGUgcHJvcGVydHkgdmFsdWVcbiAgICAgICAgc3R5bGUuYXBwbHlCeXBhc3ModGhpcywgbmFtZSwgdmFsdWUsIHVwZGF0ZVRyYW5zaXRpb25zKTtcbiAgICAgICAgdGhpcy5lbWl0QW5kTm90aWZ5KCdzdHlsZScpOyAvLyBsZXQgdGhlIHJlbmRlcmVyIGtub3cgd2UndmUgdXBkYXRlZCBzdHlsZVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgX2VsZSA9IHRoaXNbMF07XG5cbiAgICAgIGlmIChfZWxlKSB7XG4gICAgICAgIHJldHVybiBzdHlsZS5nZXRSYXdTdHlsZShfZWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVtcHR5IGNvbGxlY3Rpb24gPT4gY2FuJ3QgZ2V0IGFueSB2YWx1ZVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHJlbW92ZVN0eWxlOiBmdW5jdGlvbiByZW1vdmVTdHlsZShuYW1lcykge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHZhciB1cGRhdGVUcmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgIHZhciBzdHlsZSA9IGN5LnN0eWxlKCk7XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgaWYgKG5hbWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgc3R5bGUucmVtb3ZlQWxsQnlwYXNzZXMoZWxlLCB1cGRhdGVUcmFuc2l0aW9ucyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5hbWVzID0gbmFtZXMuc3BsaXQoL1xccysvKTtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBfZWxlMiA9IGVsZXNbX2ldO1xuICAgICAgICBzdHlsZS5yZW1vdmVCeXBhc3NlcyhfZWxlMiwgbmFtZXMsIHVwZGF0ZVRyYW5zaXRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVtaXRBbmROb3RpZnkoJ3N0eWxlJyk7IC8vIGxldCB0aGUgcmVuZGVyZXIga25vdyB3ZSd2ZSB1cGRhdGVkIHN0eWxlXG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgc2hvdzogZnVuY3Rpb24gc2hvdygpIHtcbiAgICB0aGlzLmNzcygnZGlzcGxheScsICdlbGVtZW50Jyk7XG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIGhpZGU6IGZ1bmN0aW9uIGhpZGUoKSB7XG4gICAgdGhpcy5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBlZmZlY3RpdmVPcGFjaXR5OiBmdW5jdGlvbiBlZmZlY3RpdmVPcGFjaXR5KCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHZhciBoYXNDb21wb3VuZE5vZGVzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgdmFyIHBhcmVudE9wYWNpdHkgPSBlbGUucHN0eWxlKCdvcGFjaXR5JykudmFsdWU7XG5cbiAgICAgIGlmICghaGFzQ29tcG91bmROb2Rlcykge1xuICAgICAgICByZXR1cm4gcGFyZW50T3BhY2l0eTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcmVudHMgPSAhX3AuZGF0YS5wYXJlbnQgPyBudWxsIDogZWxlLnBhcmVudHMoKTtcblxuICAgICAgaWYgKHBhcmVudHMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJlbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHBhcmVudCA9IHBhcmVudHNbaV07XG4gICAgICAgICAgdmFyIG9wYWNpdHkgPSBwYXJlbnQucHN0eWxlKCdvcGFjaXR5JykudmFsdWU7XG4gICAgICAgICAgcGFyZW50T3BhY2l0eSA9IG9wYWNpdHkgKiBwYXJlbnRPcGFjaXR5O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJlbnRPcGFjaXR5O1xuICAgIH1cbiAgfSxcbiAgdHJhbnNwYXJlbnQ6IGZ1bmN0aW9uIHRyYW5zcGFyZW50KCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGVsZS5jeSgpLmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIGlmICghaGFzQ29tcG91bmROb2Rlcykge1xuICAgICAgICByZXR1cm4gZWxlLnBzdHlsZSgnb3BhY2l0eScpLnZhbHVlID09PSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGVsZS5lZmZlY3RpdmVPcGFjaXR5KCkgPT09IDA7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBiYWNrZ3JvdW5kaW5nOiBmdW5jdGlvbiBiYWNrZ3JvdW5kaW5nKCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICByZXR1cm4gZWxlLl9wcml2YXRlLmJhY2tncm91bmRpbmcgPyB0cnVlIDogZmFsc2U7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNoZWNrQ29tcG91bmQoZWxlLCBwYXJlbnRPaykge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBwYXJlbnRzID0gX3AuZGF0YS5wYXJlbnQgPyBlbGUucGFyZW50cygpIDogbnVsbDtcblxuICBpZiAocGFyZW50cykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBhcmVudCA9IHBhcmVudHNbaV07XG5cbiAgICAgIGlmICghcGFyZW50T2socGFyZW50KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGRlZmluZURlcml2ZWRTdGF0ZUZ1bmN0aW9uKHNwZWNzKSB7XG4gIHZhciBvayA9IHNwZWNzLm9rO1xuICB2YXIgZWRnZU9rVmlhTm9kZSA9IHNwZWNzLmVkZ2VPa1ZpYU5vZGUgfHwgc3BlY3Mub2s7XG4gIHZhciBwYXJlbnRPayA9IHNwZWNzLnBhcmVudE9rIHx8IHNwZWNzLm9rO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHZhciBoYXNDb21wb3VuZE5vZGVzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuXG4gICAgICBpZiAoIW9rKGVsZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgIHJldHVybiAhaGFzQ29tcG91bmROb2RlcyB8fCBjaGVja0NvbXBvdW5kKGVsZSwgcGFyZW50T2spO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICAgICAgdmFyIHRndCA9IF9wLnRhcmdldDtcbiAgICAgICAgcmV0dXJuIGVkZ2VPa1ZpYU5vZGUoc3JjKSAmJiAoIWhhc0NvbXBvdW5kTm9kZXMgfHwgY2hlY2tDb21wb3VuZChzcmMsIGVkZ2VPa1ZpYU5vZGUpKSAmJiAoc3JjID09PSB0Z3QgfHwgZWRnZU9rVmlhTm9kZSh0Z3QpICYmICghaGFzQ29tcG91bmROb2RlcyB8fCBjaGVja0NvbXBvdW5kKHRndCwgZWRnZU9rVmlhTm9kZSkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbnZhciBlbGVUYWtlc1VwU3BhY2UgPSBjYWNoZVN0eWxlRnVuY3Rpb24oJ2VsZVRha2VzVXBTcGFjZScsIGZ1bmN0aW9uIChlbGUpIHtcbiAgcmV0dXJuIGVsZS5wc3R5bGUoJ2Rpc3BsYXknKS52YWx1ZSA9PT0gJ2VsZW1lbnQnICYmIGVsZS53aWR0aCgpICE9PSAwICYmIChlbGUuaXNOb2RlKCkgPyBlbGUuaGVpZ2h0KCkgIT09IDAgOiB0cnVlKTtcbn0pO1xuZWxlc2ZuJHIudGFrZXNVcFNwYWNlID0gY2FjaGVQcm90b3R5cGVTdHlsZUZ1bmN0aW9uKCd0YWtlc1VwU3BhY2UnLCBkZWZpbmVEZXJpdmVkU3RhdGVGdW5jdGlvbih7XG4gIG9rOiBlbGVUYWtlc1VwU3BhY2Vcbn0pKTtcbnZhciBlbGVJbnRlcmFjdGl2ZSA9IGNhY2hlU3R5bGVGdW5jdGlvbignZWxlSW50ZXJhY3RpdmUnLCBmdW5jdGlvbiAoZWxlKSB7XG4gIHJldHVybiBlbGUucHN0eWxlKCdldmVudHMnKS52YWx1ZSA9PT0gJ3llcycgJiYgZWxlLnBzdHlsZSgndmlzaWJpbGl0eScpLnZhbHVlID09PSAndmlzaWJsZScgJiYgZWxlVGFrZXNVcFNwYWNlKGVsZSk7XG59KTtcbnZhciBwYXJlbnRJbnRlcmFjdGl2ZSA9IGNhY2hlU3R5bGVGdW5jdGlvbigncGFyZW50SW50ZXJhY3RpdmUnLCBmdW5jdGlvbiAocGFyZW50KSB7XG4gIHJldHVybiBwYXJlbnQucHN0eWxlKCd2aXNpYmlsaXR5JykudmFsdWUgPT09ICd2aXNpYmxlJyAmJiBlbGVUYWtlc1VwU3BhY2UocGFyZW50KTtcbn0pO1xuZWxlc2ZuJHIuaW50ZXJhY3RpdmUgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ2ludGVyYWN0aXZlJywgZGVmaW5lRGVyaXZlZFN0YXRlRnVuY3Rpb24oe1xuICBvazogZWxlSW50ZXJhY3RpdmUsXG4gIHBhcmVudE9rOiBwYXJlbnRJbnRlcmFjdGl2ZSxcbiAgZWRnZU9rVmlhTm9kZTogZWxlVGFrZXNVcFNwYWNlXG59KSk7XG5cbmVsZXNmbiRyLm5vbmludGVyYWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcblxuICBpZiAoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUuaW50ZXJhY3RpdmUoKTtcbiAgfVxufTtcblxudmFyIGVsZVZpc2libGUgPSBjYWNoZVN0eWxlRnVuY3Rpb24oJ2VsZVZpc2libGUnLCBmdW5jdGlvbiAoZWxlKSB7XG4gIHJldHVybiBlbGUucHN0eWxlKCd2aXNpYmlsaXR5JykudmFsdWUgPT09ICd2aXNpYmxlJyAmJiBlbGUucHN0eWxlKCdvcGFjaXR5JykucGZWYWx1ZSAhPT0gMCAmJiBlbGVUYWtlc1VwU3BhY2UoZWxlKTtcbn0pO1xudmFyIGVkZ2VWaXNpYmxlVmlhTm9kZSA9IGVsZVRha2VzVXBTcGFjZTtcbmVsZXNmbiRyLnZpc2libGUgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ3Zpc2libGUnLCBkZWZpbmVEZXJpdmVkU3RhdGVGdW5jdGlvbih7XG4gIG9rOiBlbGVWaXNpYmxlLFxuICBlZGdlT2tWaWFOb2RlOiBlZGdlVmlzaWJsZVZpYU5vZGVcbn0pKTtcblxuZWxlc2ZuJHIuaGlkZGVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcblxuICBpZiAoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUudmlzaWJsZSgpO1xuICB9XG59O1xuXG5lbGVzZm4kci5pc0J1bmRsZWRCZXppZXIgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ2lzQnVuZGxlZEJlemllcicsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLmN5KCkuc3R5bGVFbmFibGVkKCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIXRoaXMucmVtb3ZlZCgpICYmIHRoaXMucHN0eWxlKCdjdXJ2ZS1zdHlsZScpLnZhbHVlID09PSAnYmV6aWVyJyAmJiB0aGlzLnRha2VzVXBTcGFjZSgpO1xufSk7XG5lbGVzZm4kci5ieXBhc3MgPSBlbGVzZm4kci5jc3MgPSBlbGVzZm4kci5zdHlsZTtcbmVsZXNmbiRyLnJlbmRlcmVkQ3NzID0gZWxlc2ZuJHIucmVuZGVyZWRTdHlsZTtcbmVsZXNmbiRyLnJlbW92ZUJ5cGFzcyA9IGVsZXNmbiRyLnJlbW92ZUNzcyA9IGVsZXNmbiRyLnJlbW92ZVN0eWxlO1xuZWxlc2ZuJHIucHN0eWxlID0gZWxlc2ZuJHIucGFyc2VkU3R5bGU7XG5cbnZhciBlbGVzZm4kcyA9IHt9O1xuXG5mdW5jdGlvbiBkZWZpbmVTd2l0Y2hGdW5jdGlvbihwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgY2hhbmdlZEVsZXMgPSBbXTsgLy8gZS5nLiBjeS5ub2RlcygpLnNlbGVjdCggZGF0YSwgaGFuZGxlciApXG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHZhciBkYXRhID0gYXJnc1swXTtcbiAgICAgIHZhciBoYW5kbGVyID0gYXJnc1sxXTtcbiAgICAgIHRoaXMub24ocGFyYW1zLmV2ZW50LCBkYXRhLCBoYW5kbGVyKTtcbiAgICB9IC8vIGUuZy4gY3kubm9kZXMoKS5zZWxlY3QoIGhhbmRsZXIgKVxuICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIGZuKGFyZ3NbMF0pKSB7XG4gICAgICAgIHZhciBfaGFuZGxlciA9IGFyZ3NbMF07XG4gICAgICAgIHRoaXMub24ocGFyYW1zLmV2ZW50LCBfaGFuZGxlcik7XG4gICAgICB9IC8vIGUuZy4gY3kubm9kZXMoKS5zZWxlY3QoKVxuICAgICAgLy8gZS5nLiAocHJpdmF0ZSkgY3kubm9kZXMoKS5zZWxlY3QoWyd0YXBzZWxlY3QnXSlcbiAgICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAwIHx8IGFyZ3MubGVuZ3RoID09PSAxICYmIGFycmF5KGFyZ3NbMF0pKSB7XG4gICAgICAgICAgdmFyIGFkZGxFdmVudHMgPSBhcmdzLmxlbmd0aCA9PT0gMSA/IGFyZ3NbMF0gOiBudWxsO1xuXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgICAgICAgIHZhciBhYmxlID0gIXBhcmFtcy5hYmxlRmllbGQgfHwgZWxlLl9wcml2YXRlW3BhcmFtcy5hYmxlRmllbGRdO1xuICAgICAgICAgICAgdmFyIGNoYW5nZWQgPSBlbGUuX3ByaXZhdGVbcGFyYW1zLmZpZWxkXSAhPSBwYXJhbXMudmFsdWU7XG5cbiAgICAgICAgICAgIGlmIChwYXJhbXMub3ZlcnJpZGVBYmxlKSB7XG4gICAgICAgICAgICAgIHZhciBvdmVycmlkZUFibGUgPSBwYXJhbXMub3ZlcnJpZGVBYmxlKGVsZSk7XG5cbiAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlQWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYWJsZSA9IG92ZXJyaWRlQWJsZTtcblxuICAgICAgICAgICAgICAgIGlmICghb3ZlcnJpZGVBYmxlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9IC8vIHRvIHNhdmUgY3ljbGVzIGFzc3VtZSBub3QgYWJsZSBmb3IgYWxsIG9uIG92ZXJyaWRlXG5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYWJsZSkge1xuICAgICAgICAgICAgICBlbGUuX3ByaXZhdGVbcGFyYW1zLmZpZWxkXSA9IHBhcmFtcy52YWx1ZTtcblxuICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIGNoYW5nZWRFbGVzLnB1c2goZWxlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBjaGFuZ2VkQ29sbCA9IHRoaXMuc3Bhd24oY2hhbmdlZEVsZXMpO1xuICAgICAgICAgIGNoYW5nZWRDb2xsLnVwZGF0ZVN0eWxlKCk7IC8vIGNoYW5nZSBvZiBzdGF0ZSA9PiBwb3NzaWJsZSBjaGFuZ2Ugb2Ygc3R5bGVcblxuICAgICAgICAgIGNoYW5nZWRDb2xsLmVtaXQocGFyYW1zLmV2ZW50KTtcblxuICAgICAgICAgIGlmIChhZGRsRXZlbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkQ29sbC5lbWl0KGFkZGxFdmVudHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlZmluZVN3aXRjaFNldChwYXJhbXMpIHtcbiAgZWxlc2ZuJHNbcGFyYW1zLmZpZWxkXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIGlmIChwYXJhbXMub3ZlcnJpZGVGaWVsZCkge1xuICAgICAgICB2YXIgdmFsID0gcGFyYW1zLm92ZXJyaWRlRmllbGQoZWxlKTtcblxuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGUuX3ByaXZhdGVbcGFyYW1zLmZpZWxkXTtcbiAgICB9XG4gIH07XG5cbiAgZWxlc2ZuJHNbcGFyYW1zLm9uXSA9IGRlZmluZVN3aXRjaEZ1bmN0aW9uKHtcbiAgICBldmVudDogcGFyYW1zLm9uLFxuICAgIGZpZWxkOiBwYXJhbXMuZmllbGQsXG4gICAgYWJsZUZpZWxkOiBwYXJhbXMuYWJsZUZpZWxkLFxuICAgIG92ZXJyaWRlQWJsZTogcGFyYW1zLm92ZXJyaWRlQWJsZSxcbiAgICB2YWx1ZTogdHJ1ZVxuICB9KTtcbiAgZWxlc2ZuJHNbcGFyYW1zLm9mZl0gPSBkZWZpbmVTd2l0Y2hGdW5jdGlvbih7XG4gICAgZXZlbnQ6IHBhcmFtcy5vZmYsXG4gICAgZmllbGQ6IHBhcmFtcy5maWVsZCxcbiAgICBhYmxlRmllbGQ6IHBhcmFtcy5hYmxlRmllbGQsXG4gICAgb3ZlcnJpZGVBYmxlOiBwYXJhbXMub3ZlcnJpZGVBYmxlLFxuICAgIHZhbHVlOiBmYWxzZVxuICB9KTtcbn1cblxuZGVmaW5lU3dpdGNoU2V0KHtcbiAgZmllbGQ6ICdsb2NrZWQnLFxuICBvdmVycmlkZUZpZWxkOiBmdW5jdGlvbiBvdmVycmlkZUZpZWxkKGVsZSkge1xuICAgIHJldHVybiBlbGUuY3koKS5hdXRvbG9jaygpID8gdHJ1ZSA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgb246ICdsb2NrJyxcbiAgb2ZmOiAndW5sb2NrJ1xufSk7XG5kZWZpbmVTd2l0Y2hTZXQoe1xuICBmaWVsZDogJ2dyYWJiYWJsZScsXG4gIG92ZXJyaWRlRmllbGQ6IGZ1bmN0aW9uIG92ZXJyaWRlRmllbGQoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5jeSgpLmF1dG91bmdyYWJpZnkoKSB8fCBlbGUucGFubmFibGUoKSA/IGZhbHNlIDogdW5kZWZpbmVkO1xuICB9LFxuICBvbjogJ2dyYWJpZnknLFxuICBvZmY6ICd1bmdyYWJpZnknXG59KTtcbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAnc2VsZWN0ZWQnLFxuICBhYmxlRmllbGQ6ICdzZWxlY3RhYmxlJyxcbiAgb3ZlcnJpZGVBYmxlOiBmdW5jdGlvbiBvdmVycmlkZUFibGUoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5jeSgpLmF1dG91bnNlbGVjdGlmeSgpID8gZmFsc2UgOiB1bmRlZmluZWQ7XG4gIH0sXG4gIG9uOiAnc2VsZWN0JyxcbiAgb2ZmOiAndW5zZWxlY3QnXG59KTtcbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAnc2VsZWN0YWJsZScsXG4gIG92ZXJyaWRlRmllbGQ6IGZ1bmN0aW9uIG92ZXJyaWRlRmllbGQoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5jeSgpLmF1dG91bnNlbGVjdGlmeSgpID8gZmFsc2UgOiB1bmRlZmluZWQ7XG4gIH0sXG4gIG9uOiAnc2VsZWN0aWZ5JyxcbiAgb2ZmOiAndW5zZWxlY3RpZnknXG59KTtcbmVsZXNmbiRzLmRlc2VsZWN0ID0gZWxlc2ZuJHMudW5zZWxlY3Q7XG5cbmVsZXNmbiRzLmdyYWJiZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gIGlmIChlbGUpIHtcbiAgICByZXR1cm4gZWxlLl9wcml2YXRlLmdyYWJiZWQ7XG4gIH1cbn07XG5cbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAnYWN0aXZlJyxcbiAgb246ICdhY3RpdmF0ZScsXG4gIG9mZjogJ3VuYWN0aXZhdGUnXG59KTtcbmRlZmluZVN3aXRjaFNldCh7XG4gIGZpZWxkOiAncGFubmFibGUnLFxuICBvbjogJ3BhbmlmeScsXG4gIG9mZjogJ3VucGFuaWZ5J1xufSk7XG5cbmVsZXNmbiRzLmluYWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcblxuICBpZiAoZWxlKSB7XG4gICAgcmV0dXJuICFlbGUuX3ByaXZhdGUuYWN0aXZlO1xuICB9XG59O1xuXG52YXIgZWxlc2ZuJHQgPSB7fTsgLy8gREFHIGZ1bmN0aW9uc1xuLy8vLy8vLy8vLy8vLy8vL1xuXG52YXIgZGVmaW5lRGFnRXh0cmVtaXR5ID0gZnVuY3Rpb24gZGVmaW5lRGFnRXh0cmVtaXR5KHBhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24gZGFnRXh0cmVtaXR5SW1wbChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIgcmV0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuXG4gICAgICBpZiAoIWVsZS5pc05vZGUoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRpc3F1YWxpZmllZCA9IGZhbHNlO1xuICAgICAgdmFyIGVkZ2VzID0gZWxlLmNvbm5lY3RlZEVkZ2VzKCk7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWRnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tqXTtcbiAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKCk7XG4gICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpO1xuXG4gICAgICAgIGlmIChwYXJhbXMubm9JbmNvbWluZ0VkZ2VzICYmIHRndCA9PT0gZWxlICYmIHNyYyAhPT0gZWxlIHx8IHBhcmFtcy5ub091dGdvaW5nRWRnZXMgJiYgc3JjID09PSBlbGUgJiYgdGd0ICE9PSBlbGUpIHtcbiAgICAgICAgICBkaXNxdWFsaWZpZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZGlzcXVhbGlmaWVkKSB7XG4gICAgICAgIHJldC5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24ocmV0LCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9O1xufTtcblxudmFyIGRlZmluZURhZ09uZUhvcCA9IGZ1bmN0aW9uIGRlZmluZURhZ09uZUhvcChwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIgb0VsZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICAgIGlmICghZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWRnZXMgPSBlbGUuY29ubmVjdGVkRWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlZGdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgICB2YXIgc3JjID0gZWRnZS5zb3VyY2UoKTtcbiAgICAgICAgdmFyIHRndCA9IGVkZ2UudGFyZ2V0KCk7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5vdXRnb2luZyAmJiBzcmMgPT09IGVsZSkge1xuICAgICAgICAgIG9FbGVzLnB1c2goZWRnZSk7XG4gICAgICAgICAgb0VsZXMucHVzaCh0Z3QpO1xuICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy5pbmNvbWluZyAmJiB0Z3QgPT09IGVsZSkge1xuICAgICAgICAgIG9FbGVzLnB1c2goZWRnZSk7XG4gICAgICAgICAgb0VsZXMucHVzaChzcmMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24ob0VsZXMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH07XG59O1xuXG52YXIgZGVmaW5lRGFnQWxsSG9wcyA9IGZ1bmN0aW9uIGRlZmluZURhZ0FsbEhvcHMocGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgdmFyIHNFbGVzID0gW107XG4gICAgdmFyIHNFbGVzSWRzID0ge307XG5cbiAgICBmb3IgKDs7KSB7XG4gICAgICB2YXIgbmV4dCA9IHBhcmFtcy5vdXRnb2luZyA/IGVsZXMub3V0Z29lcnMoKSA6IGVsZXMuaW5jb21lcnMoKTtcblxuICAgICAgaWYgKG5leHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBkb25lIGlmIG5vbmUgbGVmdFxuXG5cbiAgICAgIHZhciBuZXdOZXh0ID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbiA9IG5leHRbaV07XG4gICAgICAgIHZhciBuaWQgPSBuLmlkKCk7XG5cbiAgICAgICAgaWYgKCFzRWxlc0lkc1tuaWRdKSB7XG4gICAgICAgICAgc0VsZXNJZHNbbmlkXSA9IHRydWU7XG4gICAgICAgICAgc0VsZXMucHVzaChuKTtcbiAgICAgICAgICBuZXdOZXh0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIW5ld05leHQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IC8vIGRvbmUgaWYgdG91Y2hlZCBhbGwgb3V0Z29lcnMgYWxyZWFkeVxuXG5cbiAgICAgIGVsZXMgPSBuZXh0O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNwYXduKHNFbGVzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9O1xufTtcblxuZWxlc2ZuJHQuY2xlYXJUcmF2ZXJzYWxDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpc1tpXS5fcHJpdmF0ZS50cmF2ZXJzYWxDYWNoZSA9IG51bGw7XG4gIH1cbn07XG5cbmV4dGVuZChlbGVzZm4kdCwge1xuICAvLyBnZXQgdGhlIHJvb3Qgbm9kZXMgaW4gdGhlIERBR1xuICByb290czogZGVmaW5lRGFnRXh0cmVtaXR5KHtcbiAgICBub0luY29taW5nRWRnZXM6IHRydWVcbiAgfSksXG4gIC8vIGdldCB0aGUgbGVhZiBub2RlcyBpbiB0aGUgREFHXG4gIGxlYXZlczogZGVmaW5lRGFnRXh0cmVtaXR5KHtcbiAgICBub091dGdvaW5nRWRnZXM6IHRydWVcbiAgfSksXG4gIC8vIG5vcm1hbGx5IGNhbGxlZCBjaGlsZHJlbiBpbiBncmFwaCB0aGVvcnlcbiAgLy8gdGhlc2Ugbm9kZXMgPWVkZ2VzPT4gb3V0Z29pbmcgbm9kZXNcbiAgb3V0Z29lcnM6IGNhY2hlKGRlZmluZURhZ09uZUhvcCh7XG4gICAgb3V0Z29pbmc6IHRydWVcbiAgfSksICdvdXRnb2VycycpLFxuICAvLyBha2EgREFHIGRlc2NlbmRhbnRzXG4gIHN1Y2Nlc3NvcnM6IGRlZmluZURhZ0FsbEhvcHMoe1xuICAgIG91dGdvaW5nOiB0cnVlXG4gIH0pLFxuICAvLyBub3JtYWxseSBjYWxsZWQgcGFyZW50cyBpbiBncmFwaCB0aGVvcnlcbiAgLy8gdGhlc2Ugbm9kZXMgPD1lZGdlcz0gaW5jb21pbmcgbm9kZXNcbiAgaW5jb21lcnM6IGNhY2hlKGRlZmluZURhZ09uZUhvcCh7XG4gICAgaW5jb21pbmc6IHRydWVcbiAgfSksICdpbmNvbWVycycpLFxuICAvLyBha2EgREFHIGFuY2VzdG9yc1xuICBwcmVkZWNlc3NvcnM6IGRlZmluZURhZ0FsbEhvcHMoe1xuICAgIGluY29taW5nOiB0cnVlXG4gIH0pXG59KTsgLy8gTmVpZ2hib3VyaG9vZCBmdW5jdGlvbnNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4dGVuZChlbGVzZm4kdCwge1xuICBuZWlnaGJvcmhvb2Q6IGNhY2hlKGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIGZvciBhbGwgbm9kZXNcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLmNvbm5lY3RlZEVkZ2VzKCk7IC8vIGZvciBlYWNoIGNvbm5lY3RlZCBlZGdlLCBhZGQgdGhlIGVkZ2UgYW5kIHRoZSBvdGhlciBub2RlXG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29ubmVjdGVkRWRnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBjb25uZWN0ZWRFZGdlc1tqXTtcbiAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKCk7XG4gICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpO1xuICAgICAgICB2YXIgb3RoZXJOb2RlID0gbm9kZSA9PT0gc3JjID8gdGd0IDogc3JjOyAvLyBuZWVkIGNoZWNrIGluIGNhc2Ugb2YgbG9vcFxuXG4gICAgICAgIGlmIChvdGhlck5vZGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2gob3RoZXJOb2RlWzBdKTsgLy8gYWRkIG5vZGUgMSBob3AgYXdheVxuICAgICAgICB9IC8vIGFkZCBjb25uZWN0ZWQgZWRnZVxuXG5cbiAgICAgICAgZWxlbWVudHMucHVzaChlZGdlWzBdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihlbGVtZW50cywgdHJ1ZSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSwgJ25laWdoYm9yaG9vZCcpLFxuICBjbG9zZWROZWlnaGJvcmhvb2Q6IGZ1bmN0aW9uIGNsb3NlZE5laWdoYm9yaG9vZChzZWxlY3Rvcikge1xuICAgIHJldHVybiB0aGlzLm5laWdoYm9yaG9vZCgpLmFkZCh0aGlzKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LFxuICBvcGVuTmVpZ2hib3Job29kOiBmdW5jdGlvbiBvcGVuTmVpZ2hib3Job29kKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMubmVpZ2hib3Job29kKHNlbGVjdG9yKTtcbiAgfVxufSk7IC8vIGFsaWFzZXNcblxuZWxlc2ZuJHQubmVpZ2hib3VyaG9vZCA9IGVsZXNmbiR0Lm5laWdoYm9yaG9vZDtcbmVsZXNmbiR0LmNsb3NlZE5laWdoYm91cmhvb2QgPSBlbGVzZm4kdC5jbG9zZWROZWlnaGJvcmhvb2Q7XG5lbGVzZm4kdC5vcGVuTmVpZ2hib3VyaG9vZCA9IGVsZXNmbiR0Lm9wZW5OZWlnaGJvcmhvb2Q7IC8vIEVkZ2UgZnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vL1xuXG5leHRlbmQoZWxlc2ZuJHQsIHtcbiAgc291cmNlOiBjYWNoZShmdW5jdGlvbiBzb3VyY2VJbXBsKHNlbGVjdG9yKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgdmFyIHNyYztcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHNyYyA9IGVsZS5fcHJpdmF0ZS5zb3VyY2UgfHwgZWxlLmN5KCkuY29sbGVjdGlvbigpO1xuICAgIH1cblxuICAgIHJldHVybiBzcmMgJiYgc2VsZWN0b3IgPyBzcmMuZmlsdGVyKHNlbGVjdG9yKSA6IHNyYztcbiAgfSwgJ3NvdXJjZScpLFxuICB0YXJnZXQ6IGNhY2hlKGZ1bmN0aW9uIHRhcmdldEltcGwoc2VsZWN0b3IpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgdGd0O1xuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdGd0ID0gZWxlLl9wcml2YXRlLnRhcmdldCB8fCBlbGUuY3koKS5jb2xsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRndCAmJiBzZWxlY3RvciA/IHRndC5maWx0ZXIoc2VsZWN0b3IpIDogdGd0O1xuICB9LCAndGFyZ2V0JyksXG4gIHNvdXJjZXM6IGRlZmluZVNvdXJjZUZ1bmN0aW9uKHtcbiAgICBhdHRyOiAnc291cmNlJ1xuICB9KSxcbiAgdGFyZ2V0czogZGVmaW5lU291cmNlRnVuY3Rpb24oe1xuICAgIGF0dHI6ICd0YXJnZXQnXG4gIH0pXG59KTtcblxuZnVuY3Rpb24gZGVmaW5lU291cmNlRnVuY3Rpb24ocGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzb3VyY2VJbXBsKHNlbGVjdG9yKSB7XG4gICAgdmFyIHNvdXJjZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgc3JjID0gZWxlLl9wcml2YXRlW3BhcmFtcy5hdHRyXTtcblxuICAgICAgaWYgKHNyYykge1xuICAgICAgICBzb3VyY2VzLnB1c2goc3JjKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihzb3VyY2VzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9O1xufVxuXG5leHRlbmQoZWxlc2ZuJHQsIHtcbiAgZWRnZXNXaXRoOiBjYWNoZShkZWZpbmVFZGdlc1dpdGhGdW5jdGlvbigpLCAnZWRnZXNXaXRoJyksXG4gIGVkZ2VzVG86IGNhY2hlKGRlZmluZUVkZ2VzV2l0aEZ1bmN0aW9uKHtcbiAgICB0aGlzSXNTcmM6IHRydWVcbiAgfSksICdlZGdlc1RvJylcbn0pO1xuXG5mdW5jdGlvbiBkZWZpbmVFZGdlc1dpdGhGdW5jdGlvbihwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGVkZ2VzV2l0aEltcGwob3RoZXJOb2Rlcykge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG4gICAgdmFyIHAgPSBwYXJhbXMgfHwge307IC8vIGdldCBlbGVtZW50cyBpZiBhIHNlbGVjdG9yIGlzIHNwZWNpZmllZFxuXG4gICAgaWYgKHN0cmluZyhvdGhlck5vZGVzKSkge1xuICAgICAgb3RoZXJOb2RlcyA9IGN5LiQob3RoZXJOb2Rlcyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaCA9IDA7IGggPCBvdGhlck5vZGVzLmxlbmd0aDsgaCsrKSB7XG4gICAgICB2YXIgZWRnZXMgPSBvdGhlck5vZGVzW2hdLl9wcml2YXRlLmVkZ2VzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICAgIHZhciBlZGdlRGF0YSA9IGVkZ2UuX3ByaXZhdGUuZGF0YTtcbiAgICAgICAgdmFyIHRoaXNUb090aGVyID0gdGhpcy5oYXNFbGVtZW50V2l0aElkKGVkZ2VEYXRhLnNvdXJjZSkgJiYgb3RoZXJOb2Rlcy5oYXNFbGVtZW50V2l0aElkKGVkZ2VEYXRhLnRhcmdldCk7XG4gICAgICAgIHZhciBvdGhlclRvVGhpcyA9IG90aGVyTm9kZXMuaGFzRWxlbWVudFdpdGhJZChlZGdlRGF0YS5zb3VyY2UpICYmIHRoaXMuaGFzRWxlbWVudFdpdGhJZChlZGdlRGF0YS50YXJnZXQpO1xuICAgICAgICB2YXIgZWRnZUNvbm5lY3RzVGhpc0FuZE90aGVyID0gdGhpc1RvT3RoZXIgfHwgb3RoZXJUb1RoaXM7XG5cbiAgICAgICAgaWYgKCFlZGdlQ29ubmVjdHNUaGlzQW5kT3RoZXIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwLnRoaXNJc1NyYyB8fCBwLnRoaXNJc1RndCkge1xuICAgICAgICAgIGlmIChwLnRoaXNJc1NyYyAmJiAhdGhpc1RvT3RoZXIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwLnRoaXNJc1RndCAmJiAhb3RoZXJUb1RoaXMpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnRzLnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oZWxlbWVudHMsIHRydWUpO1xuICB9O1xufVxuXG5leHRlbmQoZWxlc2ZuJHQsIHtcbiAgY29ubmVjdGVkRWRnZXM6IGNhY2hlKGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgIHZhciByZXRFbGVzID0gW107XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IGVsZXNbaV07XG5cbiAgICAgIGlmICghbm9kZS5pc05vZGUoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVkZ2VzID0gbm9kZS5fcHJpdmF0ZS5lZGdlcztcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlZGdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgICByZXRFbGVzLnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24ocmV0RWxlcywgdHJ1ZSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgfSwgJ2Nvbm5lY3RlZEVkZ2VzJyksXG4gIGNvbm5lY3RlZE5vZGVzOiBjYWNoZShmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICB2YXIgcmV0RWxlcyA9IFtdO1xuICAgIHZhciBlbGVzID0gdGhpcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlbGVzW2ldO1xuXG4gICAgICBpZiAoIWVkZ2UuaXNFZGdlKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJldEVsZXMucHVzaChlZGdlLnNvdXJjZSgpWzBdKTtcbiAgICAgIHJldEVsZXMucHVzaChlZGdlLnRhcmdldCgpWzBdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcGF3bihyZXRFbGVzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICB9LCAnY29ubmVjdGVkTm9kZXMnKSxcbiAgcGFyYWxsZWxFZGdlczogY2FjaGUoZGVmaW5lUGFyYWxsZWxFZGdlc0Z1bmN0aW9uKCksICdwYXJhbGxlbEVkZ2VzJyksXG4gIGNvZGlyZWN0ZWRFZGdlczogY2FjaGUoZGVmaW5lUGFyYWxsZWxFZGdlc0Z1bmN0aW9uKHtcbiAgICBjb2RpcmVjdGVkOiB0cnVlXG4gIH0pLCAnY29kaXJlY3RlZEVkZ2VzJylcbn0pO1xuXG5mdW5jdGlvbiBkZWZpbmVQYXJhbGxlbEVkZ2VzRnVuY3Rpb24ocGFyYW1zKSB7XG4gIHZhciBkZWZhdWx0cyA9IHtcbiAgICBjb2RpcmVjdGVkOiBmYWxzZVxuICB9O1xuICBwYXJhbXMgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBwYXJhbXMpO1xuICByZXR1cm4gZnVuY3Rpb24gcGFyYWxsZWxFZGdlc0ltcGwoc2VsZWN0b3IpIHtcbiAgICAvLyBtaWNyby1vcHRpbWlzZWQgZm9yIHJlbmRlcmVyXG4gICAgdmFyIGVsZW1lbnRzID0gW107XG4gICAgdmFyIGVkZ2VzID0gdGhpcy5lZGdlcygpO1xuICAgIHZhciBwID0gcGFyYW1zOyAvLyBsb29rIGF0IGFsbCB0aGUgZWRnZXMgaW4gdGhlIGNvbGxlY3Rpb25cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlMSA9IGVkZ2VzW2ldO1xuICAgICAgdmFyIGVkZ2UxX3AgPSBlZGdlMS5fcHJpdmF0ZTtcbiAgICAgIHZhciBzcmMxID0gZWRnZTFfcC5zb3VyY2U7XG4gICAgICB2YXIgc3JjaWQxID0gc3JjMS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgdmFyIHRndGlkMSA9IGVkZ2UxX3AuZGF0YS50YXJnZXQ7XG4gICAgICB2YXIgc3JjRWRnZXMxID0gc3JjMS5fcHJpdmF0ZS5lZGdlczsgLy8gbG9vayBhdCBlZGdlcyBjb25uZWN0ZWQgdG8gdGhlIHNyYyBub2RlIG9mIHRoaXMgZWRnZVxuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNyY0VkZ2VzMS5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZWRnZTIgPSBzcmNFZGdlczFbal07XG4gICAgICAgIHZhciBlZGdlMmRhdGEgPSBlZGdlMi5fcHJpdmF0ZS5kYXRhO1xuICAgICAgICB2YXIgdGd0aWQyID0gZWRnZTJkYXRhLnRhcmdldDtcbiAgICAgICAgdmFyIHNyY2lkMiA9IGVkZ2UyZGF0YS5zb3VyY2U7XG4gICAgICAgIHZhciBjb2RpcmVjdGVkID0gdGd0aWQyID09PSB0Z3RpZDEgJiYgc3JjaWQyID09PSBzcmNpZDE7XG4gICAgICAgIHZhciBvcHBkaXJlY3RlZCA9IHNyY2lkMSA9PT0gdGd0aWQyICYmIHRndGlkMSA9PT0gc3JjaWQyO1xuXG4gICAgICAgIGlmIChwLmNvZGlyZWN0ZWQgJiYgY29kaXJlY3RlZCB8fCAhcC5jb2RpcmVjdGVkICYmIChjb2RpcmVjdGVkIHx8IG9wcGRpcmVjdGVkKSkge1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWRnZTIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3Bhd24oZWxlbWVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gIH07XG59IC8vIE1pc2MgZnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vL1xuXG5cbmV4dGVuZChlbGVzZm4kdCwge1xuICBjb21wb25lbnRzOiBmdW5jdGlvbiBjb21wb25lbnRzKHJvb3QpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGN5ID0gc2VsZi5jeSgpO1xuICAgIHZhciB2aXNpdGVkID0gY3kuY29sbGVjdGlvbigpO1xuICAgIHZhciB1bnZpc2l0ZWQgPSByb290ID09IG51bGwgPyBzZWxmLm5vZGVzKCkgOiByb290Lm5vZGVzKCk7XG4gICAgdmFyIGNvbXBvbmVudHMgPSBbXTtcblxuICAgIGlmIChyb290ICE9IG51bGwgJiYgdW52aXNpdGVkLmVtcHR5KCkpIHtcbiAgICAgIC8vIHJvb3QgbWF5IGNvbnRhaW4gb25seSBlZGdlc1xuICAgICAgdW52aXNpdGVkID0gcm9vdC5zb3VyY2VzKCk7IC8vIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIG5vZGUgdG8gdXNlICh1bmRpcmVjdGVkKSwgc28ganVzdCB1c2UgdGhlIHNvdXJjZSBzaWRlc1xuICAgIH1cblxuICAgIHZhciB2aXNpdEluQ29tcG9uZW50ID0gZnVuY3Rpb24gdmlzaXRJbkNvbXBvbmVudChub2RlLCBjb21wb25lbnQpIHtcbiAgICAgIHZpc2l0ZWQubWVyZ2Uobm9kZSk7XG4gICAgICB1bnZpc2l0ZWQudW5tZXJnZShub2RlKTtcbiAgICAgIGNvbXBvbmVudC5tZXJnZShub2RlKTtcbiAgICB9O1xuXG4gICAgaWYgKHVudmlzaXRlZC5lbXB0eSgpKSB7XG4gICAgICByZXR1cm4gc2VsZi5zcGF3bigpO1xuICAgIH1cblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKCkge1xuICAgICAgLy8gZWFjaCBpdGVyYXRpb24geWllbGRzIGEgY29tcG9uZW50XG4gICAgICB2YXIgY21wdCA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgIGNvbXBvbmVudHMucHVzaChjbXB0KTtcbiAgICAgIHZhciByb290ID0gdW52aXNpdGVkWzBdO1xuICAgICAgdmlzaXRJbkNvbXBvbmVudChyb290LCBjbXB0KTtcbiAgICAgIHNlbGYuYmZzKHtcbiAgICAgICAgZGlyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICByb290czogcm9vdCxcbiAgICAgICAgdmlzaXQ6IGZ1bmN0aW9uIHZpc2l0KHYpIHtcbiAgICAgICAgICByZXR1cm4gdmlzaXRJbkNvbXBvbmVudCh2LCBjbXB0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjbXB0LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgbm9kZS5jb25uZWN0ZWRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAvLyBjb25uZWN0ZWRFZGdlcygpIHVzdWFsbHkgY2FjaGVkXG4gICAgICAgICAgaWYgKHNlbGYuaGFzKGUpICYmIGNtcHQuaGFzKGUuc291cmNlKCkpICYmIGNtcHQuaGFzKGUudGFyZ2V0KCkpKSB7XG4gICAgICAgICAgICAvLyBoYXMoKSBpcyBjaGVhcFxuICAgICAgICAgICAgY21wdC5tZXJnZShlKTsgLy8gZm9yRWFjaCgpIG9ubHkgY29uc2lkZXJzIG5vZGVzIC0tIHNldHMgTiBhdCBjYWxsIHRpbWVcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGRvIHtcbiAgICAgIF9sb29wKCk7XG4gICAgfSB3aGlsZSAodW52aXNpdGVkLmxlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gIH0sXG4gIGNvbXBvbmVudDogZnVuY3Rpb24gY29tcG9uZW50KCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHJldHVybiBlbGUuY3koKS5tdXRhYmxlRWxlbWVudHMoKS5jb21wb25lbnRzKGVsZSlbMF07XG4gIH1cbn0pO1xuZWxlc2ZuJHQuY29tcG9uZW50c09mID0gZWxlc2ZuJHQuY29tcG9uZW50cztcblxudmFyIENvbGxlY3Rpb24gPSBmdW5jdGlvbiBDb2xsZWN0aW9uKGN5LCBlbGVtZW50cykge1xuICB2YXIgdW5pcXVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTtcblxuICBpZiAoY3kgPT09IHVuZGVmaW5lZCkge1xuICAgIGVycm9yKCdBIGNvbGxlY3Rpb24gbXVzdCBoYXZlIGEgcmVmZXJlbmNlIHRvIHRoZSBjb3JlJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIG1hcCA9IG5ldyBNYXAkMSgpO1xuICB2YXIgY3JlYXRlZEVsZW1lbnRzID0gZmFsc2U7XG5cbiAgaWYgKCFlbGVtZW50cykge1xuICAgIGVsZW1lbnRzID0gW107XG4gIH0gZWxzZSBpZiAoZWxlbWVudHMubGVuZ3RoID4gMCAmJiBwbGFpbk9iamVjdChlbGVtZW50c1swXSkgJiYgIWVsZW1lbnQoZWxlbWVudHNbMF0pKSB7XG4gICAgY3JlYXRlZEVsZW1lbnRzID0gdHJ1ZTsgLy8gbWFrZSBlbGVtZW50cyBmcm9tIGpzb24gYW5kIHJlc3RvcmUgYWxsIGF0IG9uY2UgbGF0ZXJcblxuICAgIHZhciBlbGVzID0gW107XG4gICAgdmFyIGVsZXNJZHMgPSBuZXcgU2V0JDEoKTtcblxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gZWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIganNvbiA9IGVsZW1lbnRzW2ldO1xuXG4gICAgICBpZiAoanNvbi5kYXRhID09IG51bGwpIHtcbiAgICAgICAganNvbi5kYXRhID0ge307XG4gICAgICB9XG5cbiAgICAgIHZhciBfZGF0YSA9IGpzb24uZGF0YTsgLy8gbWFrZSBzdXJlIG5ld2x5IGNyZWF0ZWQgZWxlbWVudHMgaGF2ZSB2YWxpZCBpZHNcblxuICAgICAgaWYgKF9kYXRhLmlkID09IG51bGwpIHtcbiAgICAgICAgX2RhdGEuaWQgPSB1dWlkKCk7XG4gICAgICB9IGVsc2UgaWYgKGN5Lmhhc0VsZW1lbnRXaXRoSWQoX2RhdGEuaWQpIHx8IGVsZXNJZHMuaGFzKF9kYXRhLmlkKSkge1xuICAgICAgICBjb250aW51ZTsgLy8gY2FuJ3QgY3JlYXRlIGVsZW1lbnQgaWYgcHJpb3IgaWQgYWxyZWFkeSBleGlzdHNcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IG5ldyBFbGVtZW50KGN5LCBqc29uLCBmYWxzZSk7XG4gICAgICBlbGVzLnB1c2goZWxlKTtcbiAgICAgIGVsZXNJZHMuYWRkKF9kYXRhLmlkKTtcbiAgICB9XG5cbiAgICBlbGVtZW50cyA9IGVsZXM7XG4gIH1cblxuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgZm9yICh2YXIgX2kgPSAwLCBfbCA9IGVsZW1lbnRzLmxlbmd0aDsgX2kgPCBfbDsgX2krKykge1xuICAgIHZhciBlbGVtZW50JDEgPSBlbGVtZW50c1tfaV1bMF07IC8vIFswXSBpbiBjYXNlIGVsZW1lbnRzIGlzIGFuIGFycmF5IG9mIGNvbGxlY3Rpb25zLCByYXRoZXIgdGhhbiBhcnJheSBvZiBlbGVtZW50c1xuXG4gICAgaWYgKGVsZW1lbnQkMSA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgaWQgPSBlbGVtZW50JDEuX3ByaXZhdGUuZGF0YS5pZDtcblxuICAgIGlmICghdW5pcXVlIHx8ICFtYXAuaGFzKGlkKSkge1xuICAgICAgaWYgKHVuaXF1ZSkge1xuICAgICAgICBtYXAuc2V0KGlkLCB7XG4gICAgICAgICAgaW5kZXg6IHRoaXMubGVuZ3RoLFxuICAgICAgICAgIGVsZTogZWxlbWVudCQxXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzW3RoaXMubGVuZ3RoXSA9IGVsZW1lbnQkMTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICB9XG5cbiAgdGhpcy5fcHJpdmF0ZSA9IHtcbiAgICBlbGVzOiB0aGlzLFxuICAgIGN5OiBjeSxcblxuICAgIGdldCBtYXAoKSB7XG4gICAgICBpZiAodGhpcy5sYXp5TWFwID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5yZWJ1aWxkTWFwKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmxhenlNYXA7XG4gICAgfSxcblxuICAgIHNldCBtYXAobSkge1xuICAgICAgdGhpcy5sYXp5TWFwID0gbTtcbiAgICB9LFxuXG4gICAgcmVidWlsZE1hcDogZnVuY3Rpb24gcmVidWlsZE1hcCgpIHtcbiAgICAgIHZhciBtID0gdGhpcy5sYXp5TWFwID0gbmV3IE1hcCQxKCk7XG4gICAgICB2YXIgZWxlcyA9IHRoaXMuZWxlcztcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgZWxlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIHZhciBfZWxlID0gZWxlc1tfaTJdO1xuICAgICAgICBtLnNldChfZWxlLmlkKCksIHtcbiAgICAgICAgICBpbmRleDogX2kyLFxuICAgICAgICAgIGVsZTogX2VsZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgaWYgKHVuaXF1ZSkge1xuICAgIHRoaXMuX3ByaXZhdGUubWFwID0gbWFwO1xuICB9IC8vIHJlc3RvcmUgdGhlIGVsZW1lbnRzIGlmIHdlIGNyZWF0ZWQgdGhlbSBmcm9tIGpzb25cblxuXG4gIGlmIChjcmVhdGVkRWxlbWVudHMpIHtcbiAgICB0aGlzLnJlc3RvcmUoKTtcbiAgfVxufTsgLy8gRnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBrZWVwIHRoZSBwcm90b3R5cGVzIGluIHN5bmMgKGFuIGVsZW1lbnQgaGFzIHRoZSBzYW1lIGZ1bmN0aW9ucyBhcyBhIGNvbGxlY3Rpb24pXG4vLyBhbmQgdXNlIGVsZWZuIGFuZCBlbGVzZm4gYXMgc2hvcnRoYW5kcyB0byB0aGUgcHJvdG90eXBlc1xuXG5cbnZhciBlbGVzZm4kdSA9IEVsZW1lbnQucHJvdG90eXBlID0gQ29sbGVjdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFycmF5LnByb3RvdHlwZSk7XG5cbmVsZXNmbiR1Lmluc3RhbmNlU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ2NvbGxlY3Rpb24nO1xufTtcblxuZWxlc2ZuJHUuc3Bhd24gPSBmdW5jdGlvbiAoZWxlcywgdW5pcXVlKSB7XG4gIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLmN5KCksIGVsZXMsIHVuaXF1ZSk7XG59O1xuXG5lbGVzZm4kdS5zcGF3blNlbGYgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnNwYXduKHRoaXMpO1xufTtcblxuZWxlc2ZuJHUuY3kgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9wcml2YXRlLmN5O1xufTtcblxuZWxlc2ZuJHUucmVuZGVyZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9wcml2YXRlLmN5LnJlbmRlcmVyKCk7XG59O1xuXG5lbGVzZm4kdS5lbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpc1swXTtcbn07XG5cbmVsZXNmbiR1LmNvbGxlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChjb2xsZWN0aW9uKHRoaXMpKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gZWxzZSB7XG4gICAgLy8gYW4gZWxlbWVudFxuICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLl9wcml2YXRlLmN5LCBbdGhpc10pO1xuICB9XG59O1xuXG5lbGVzZm4kdS51bmlxdWUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLl9wcml2YXRlLmN5LCB0aGlzLCB0cnVlKTtcbn07XG5cbmVsZXNmbiR1Lmhhc0VsZW1lbnRXaXRoSWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWQgPSAnJyArIGlkOyAvLyBpZCBtdXN0IGJlIHN0cmluZ1xuXG4gIHJldHVybiB0aGlzLl9wcml2YXRlLm1hcC5oYXMoaWQpO1xufTtcblxuZWxlc2ZuJHUuZ2V0RWxlbWVudEJ5SWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWQgPSAnJyArIGlkOyAvLyBpZCBtdXN0IGJlIHN0cmluZ1xuXG4gIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgdmFyIGVudHJ5ID0gdGhpcy5fcHJpdmF0ZS5tYXAuZ2V0KGlkKTtcblxuICByZXR1cm4gZW50cnkgPyBlbnRyeS5lbGUgOiBuZXcgQ29sbGVjdGlvbihjeSk7IC8vIGdldCBlbGUgb3IgZW1wdHkgY29sbGVjdGlvblxufTtcblxuZWxlc2ZuJHUuJGlkID0gZWxlc2ZuJHUuZ2V0RWxlbWVudEJ5SWQ7XG5cbmVsZXNmbiR1LnBvb2xJbmRleCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgdmFyIGVsZXMgPSBjeS5fcHJpdmF0ZS5lbGVtZW50cztcbiAgdmFyIGlkID0gdGhpc1swXS5fcHJpdmF0ZS5kYXRhLmlkO1xuICByZXR1cm4gZWxlcy5fcHJpdmF0ZS5tYXAuZ2V0KGlkKS5pbmRleDtcbn07XG5cbmVsZXNmbiR1LmluZGV4T2YgPSBmdW5jdGlvbiAoZWxlKSB7XG4gIHZhciBpZCA9IGVsZVswXS5fcHJpdmF0ZS5kYXRhLmlkO1xuICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5tYXAuZ2V0KGlkKS5pbmRleDtcbn07XG5cbmVsZXNmbiR1LmluZGV4T2ZJZCA9IGZ1bmN0aW9uIChpZCkge1xuICBpZCA9ICcnICsgaWQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG5cbiAgcmV0dXJuIHRoaXMuX3ByaXZhdGUubWFwLmdldChpZCkuaW5kZXg7XG59O1xuXG5lbGVzZm4kdS5qc29uID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgZWxlID0gdGhpcy5lbGVtZW50KCk7XG4gIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICBpZiAoZWxlID09IG51bGwgJiYgb2JqKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gLy8gY2FuJ3Qgc2V0IHRvIG5vIGVsZXNcblxuXG4gIGlmIChlbGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gLy8gY2FuJ3QgZ2V0IGZyb20gbm8gZWxlc1xuXG5cbiAgdmFyIHAgPSBlbGUuX3ByaXZhdGU7XG5cbiAgaWYgKHBsYWluT2JqZWN0KG9iaikpIHtcbiAgICAvLyBzZXRcbiAgICBjeS5zdGFydEJhdGNoKCk7XG5cbiAgICBpZiAob2JqLmRhdGEpIHtcbiAgICAgIGVsZS5kYXRhKG9iai5kYXRhKTtcbiAgICAgIHZhciBfZGF0YTIgPSBwLmRhdGE7XG5cbiAgICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgICAgLy8gc291cmNlIGFuZCB0YXJnZXQgYXJlIGltbXV0YWJsZSB2aWEgZGF0YSgpXG4gICAgICAgIHZhciBtb3ZlID0gZmFsc2U7XG4gICAgICAgIHZhciBzcGVjID0ge307XG4gICAgICAgIHZhciBzcmMgPSBvYmouZGF0YS5zb3VyY2U7XG4gICAgICAgIHZhciB0Z3QgPSBvYmouZGF0YS50YXJnZXQ7XG5cbiAgICAgICAgaWYgKHNyYyAhPSBudWxsICYmIHNyYyAhPSBfZGF0YTIuc291cmNlKSB7XG4gICAgICAgICAgc3BlYy5zb3VyY2UgPSAnJyArIHNyYzsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuICAgICAgICAgIG1vdmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRndCAhPSBudWxsICYmIHRndCAhPSBfZGF0YTIudGFyZ2V0KSB7XG4gICAgICAgICAgc3BlYy50YXJnZXQgPSAnJyArIHRndDsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuICAgICAgICAgIG1vdmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vdmUpIHtcbiAgICAgICAgICBlbGUgPSBlbGUubW92ZShzcGVjKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcGFyZW50IGlzIGltbXV0YWJsZSB2aWEgZGF0YSgpXG4gICAgICAgIHZhciBuZXdQYXJlbnRWYWxTcGVjZCA9ICdwYXJlbnQnIGluIG9iai5kYXRhO1xuICAgICAgICB2YXIgcGFyZW50ID0gb2JqLmRhdGEucGFyZW50O1xuXG4gICAgICAgIGlmIChuZXdQYXJlbnRWYWxTcGVjZCAmJiAocGFyZW50ICE9IG51bGwgfHwgX2RhdGEyLnBhcmVudCAhPSBudWxsKSAmJiBwYXJlbnQgIT0gX2RhdGEyLnBhcmVudCkge1xuICAgICAgICAgIGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gY2FuJ3Qgc2V0IHVuZGVmaW5lZCBpbXBlcmF0aXZlbHksIHNvIHVzZSBudWxsXG4gICAgICAgICAgICBwYXJlbnQgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYXJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcGFyZW50ID0gJycgKyBwYXJlbnQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZWxlID0gZWxlLm1vdmUoe1xuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvYmoucG9zaXRpb24pIHtcbiAgICAgIGVsZS5wb3NpdGlvbihvYmoucG9zaXRpb24pO1xuICAgIH0gLy8gaWdub3JlIGdyb3VwIC0tIGltbXV0YWJsZVxuXG5cbiAgICB2YXIgY2hlY2tTd2l0Y2ggPSBmdW5jdGlvbiBjaGVja1N3aXRjaChrLCB0cnVlRm5OYW1lLCBmYWxzZUZuTmFtZSkge1xuICAgICAgdmFyIG9ial9rID0gb2JqW2tdO1xuXG4gICAgICBpZiAob2JqX2sgIT0gbnVsbCAmJiBvYmpfayAhPT0gcFtrXSkge1xuICAgICAgICBpZiAob2JqX2spIHtcbiAgICAgICAgICBlbGVbdHJ1ZUZuTmFtZV0oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVbZmFsc2VGbk5hbWVdKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY2hlY2tTd2l0Y2goJ3JlbW92ZWQnLCAncmVtb3ZlJywgJ3Jlc3RvcmUnKTtcbiAgICBjaGVja1N3aXRjaCgnc2VsZWN0ZWQnLCAnc2VsZWN0JywgJ3Vuc2VsZWN0Jyk7XG4gICAgY2hlY2tTd2l0Y2goJ3NlbGVjdGFibGUnLCAnc2VsZWN0aWZ5JywgJ3Vuc2VsZWN0aWZ5Jyk7XG4gICAgY2hlY2tTd2l0Y2goJ2xvY2tlZCcsICdsb2NrJywgJ3VubG9jaycpO1xuICAgIGNoZWNrU3dpdGNoKCdncmFiYmFibGUnLCAnZ3JhYmlmeScsICd1bmdyYWJpZnknKTtcbiAgICBjaGVja1N3aXRjaCgncGFubmFibGUnLCAncGFuaWZ5JywgJ3VucGFuaWZ5Jyk7XG5cbiAgICBpZiAob2JqLmNsYXNzZXMgIT0gbnVsbCkge1xuICAgICAgZWxlLmNsYXNzZXMob2JqLmNsYXNzZXMpO1xuICAgIH1cblxuICAgIGN5LmVuZEJhdGNoKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gZWxzZSBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBnZXRcbiAgICB2YXIganNvbiA9IHtcbiAgICAgIGRhdGE6IGNvcHkocC5kYXRhKSxcbiAgICAgIHBvc2l0aW9uOiBjb3B5KHAucG9zaXRpb24pLFxuICAgICAgZ3JvdXA6IHAuZ3JvdXAsXG4gICAgICByZW1vdmVkOiBwLnJlbW92ZWQsXG4gICAgICBzZWxlY3RlZDogcC5zZWxlY3RlZCxcbiAgICAgIHNlbGVjdGFibGU6IHAuc2VsZWN0YWJsZSxcbiAgICAgIGxvY2tlZDogcC5sb2NrZWQsXG4gICAgICBncmFiYmFibGU6IHAuZ3JhYmJhYmxlLFxuICAgICAgcGFubmFibGU6IHAucGFubmFibGUsXG4gICAgICBjbGFzc2VzOiBudWxsXG4gICAgfTtcbiAgICBqc29uLmNsYXNzZXMgPSAnJztcbiAgICB2YXIgaSA9IDA7XG4gICAgcC5jbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgcmV0dXJuIGpzb24uY2xhc3NlcyArPSBpKysgPT09IDAgPyBjbHMgOiAnICcgKyBjbHM7XG4gICAgfSk7XG4gICAgcmV0dXJuIGpzb247XG4gIH1cbn07XG5cbmVsZXNmbiR1Lmpzb25zID0gZnVuY3Rpb24gKCkge1xuICB2YXIganNvbnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICB2YXIganNvbiA9IGVsZS5qc29uKCk7XG4gICAganNvbnMucHVzaChqc29uKTtcbiAgfVxuXG4gIHJldHVybiBqc29ucztcbn07XG5cbmVsZXNmbiR1LmNsb25lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gIHZhciBlbGVzQXJyID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgdmFyIGpzb24gPSBlbGUuanNvbigpO1xuICAgIHZhciBjbG9uZSA9IG5ldyBFbGVtZW50KGN5LCBqc29uLCBmYWxzZSk7IC8vIE5CIG5vIHJlc3RvcmVcblxuICAgIGVsZXNBcnIucHVzaChjbG9uZSk7XG4gIH1cblxuICByZXR1cm4gbmV3IENvbGxlY3Rpb24oY3ksIGVsZXNBcnIpO1xufTtcblxuZWxlc2ZuJHUuY29weSA9IGVsZXNmbiR1LmNsb25lO1xuXG5lbGVzZm4kdS5yZXN0b3JlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbm90aWZ5UmVuZGVyZXIgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHRydWU7XG4gIHZhciBhZGRUb1Bvb2wgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGN5ID0gc2VsZi5jeSgpO1xuICB2YXIgY3lfcCA9IGN5Ll9wcml2YXRlOyAvLyBjcmVhdGUgYXJyYXlzIG9mIG5vZGVzIGFuZCBlZGdlcywgc2luY2Ugd2UgbmVlZCB0b1xuICAvLyByZXN0b3JlIHRoZSBub2RlcyBmaXJzdFxuXG4gIHZhciBub2RlcyA9IFtdO1xuICB2YXIgZWRnZXMgPSBbXTtcbiAgdmFyIGVsZW1lbnRzO1xuXG4gIGZvciAodmFyIF9pMyA9IDAsIGwgPSBzZWxmLmxlbmd0aDsgX2kzIDwgbDsgX2kzKyspIHtcbiAgICB2YXIgZWxlID0gc2VsZltfaTNdO1xuXG4gICAgaWYgKGFkZFRvUG9vbCAmJiAhZWxlLnJlbW92ZWQoKSkge1xuICAgICAgLy8gZG9uJ3QgbmVlZCB0byBoYW5kbGUgdGhpcyBlbGVcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8ga2VlcCBub2RlcyBmaXJzdCBpbiB0aGUgYXJyYXkgYW5kIGVkZ2VzIGFmdGVyXG5cblxuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIC8vIHB1dCB0byBmcm9udCBvZiBhcnJheSBpZiBub2RlXG4gICAgICBub2Rlcy5wdXNoKGVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHB1dCB0byBlbmQgb2YgYXJyYXkgaWYgZWRnZVxuICAgICAgZWRnZXMucHVzaChlbGUpO1xuICAgIH1cbiAgfVxuXG4gIGVsZW1lbnRzID0gbm9kZXMuY29uY2F0KGVkZ2VzKTtcbiAgdmFyIGk7XG5cbiAgdmFyIHJlbW92ZUZyb21FbGVtZW50cyA9IGZ1bmN0aW9uIHJlbW92ZUZyb21FbGVtZW50cygpIHtcbiAgICBlbGVtZW50cy5zcGxpY2UoaSwgMSk7XG4gICAgaS0tO1xuICB9OyAvLyBub3csIHJlc3RvcmUgZWFjaCBlbGVtZW50XG5cblxuICBmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgX2VsZTIgPSBlbGVtZW50c1tpXTtcbiAgICB2YXIgX3ByaXZhdGUgPSBfZWxlMi5fcHJpdmF0ZTtcbiAgICB2YXIgX2RhdGEzID0gX3ByaXZhdGUuZGF0YTsgLy8gdGhlIHRyYXZlcnNhbCBjYWNoZSBzaG91bGQgc3RhcnQgZnJlc2ggd2hlbiBlbGUgaXMgYWRkZWRcblxuICAgIF9lbGUyLmNsZWFyVHJhdmVyc2FsQ2FjaGUoKTsgLy8gc2V0IGlkIGFuZCB2YWxpZGF0ZVxuXG5cbiAgICBpZiAoIWFkZFRvUG9vbCAmJiAhX3ByaXZhdGUucmVtb3ZlZCkgOyBlbHNlIGlmIChfZGF0YTMuaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgX2RhdGEzLmlkID0gdXVpZCgpO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyKF9kYXRhMy5pZCkpIHtcbiAgICAgIF9kYXRhMy5pZCA9ICcnICsgX2RhdGEzLmlkOyAvLyBub3cgaXQncyBhIHN0cmluZ1xuICAgIH0gZWxzZSBpZiAoZW1wdHlTdHJpbmcoX2RhdGEzLmlkKSB8fCAhc3RyaW5nKF9kYXRhMy5pZCkpIHtcbiAgICAgIGVycm9yKCdDYW4gbm90IGNyZWF0ZSBlbGVtZW50IHdpdGggaW52YWxpZCBzdHJpbmcgSUQgYCcgKyBfZGF0YTMuaWQgKyAnYCcpOyAvLyBjYW4ndCBjcmVhdGUgZWxlbWVudCBpZiBpdCBoYXMgZW1wdHkgc3RyaW5nIGFzIGlkIG9yIG5vbi1zdHJpbmcgaWRcblxuICAgICAgcmVtb3ZlRnJvbUVsZW1lbnRzKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IGVsc2UgaWYgKGN5Lmhhc0VsZW1lbnRXaXRoSWQoX2RhdGEzLmlkKSkge1xuICAgICAgZXJyb3IoJ0NhbiBub3QgY3JlYXRlIHNlY29uZCBlbGVtZW50IHdpdGggSUQgYCcgKyBfZGF0YTMuaWQgKyAnYCcpOyAvLyBjYW4ndCBjcmVhdGUgZWxlbWVudCBpZiBvbmUgYWxyZWFkeSBoYXMgdGhhdCBpZFxuXG4gICAgICByZW1vdmVGcm9tRWxlbWVudHMoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBpZCA9IF9kYXRhMy5pZDsgLy8gaWQgaXMgZmluYWxpc2VkLCBub3cgbGV0J3Mga2VlcCBhIHJlZlxuXG4gICAgaWYgKF9lbGUyLmlzTm9kZSgpKSB7XG4gICAgICAvLyBleHRyYSBjaGVja3MgZm9yIG5vZGVzXG4gICAgICB2YXIgcG9zID0gX3ByaXZhdGUucG9zaXRpb247IC8vIG1ha2Ugc3VyZSB0aGUgbm9kZXMgaGF2ZSBhIGRlZmluZWQgcG9zaXRpb25cblxuICAgICAgaWYgKHBvcy54ID09IG51bGwpIHtcbiAgICAgICAgcG9zLnggPSAwO1xuICAgICAgfVxuXG4gICAgICBpZiAocG9zLnkgPT0gbnVsbCkge1xuICAgICAgICBwb3MueSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKF9lbGUyLmlzRWRnZSgpKSB7XG4gICAgICAvLyBleHRyYSBjaGVja3MgZm9yIGVkZ2VzXG4gICAgICB2YXIgZWRnZSA9IF9lbGUyO1xuICAgICAgdmFyIGZpZWxkcyA9IFsnc291cmNlJywgJ3RhcmdldCddO1xuICAgICAgdmFyIGZpZWxkc0xlbmd0aCA9IGZpZWxkcy5sZW5ndGg7XG4gICAgICB2YXIgYmFkU291cmNlT3JUYXJnZXQgPSBmYWxzZTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBmaWVsZHNMZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgZmllbGQgPSBmaWVsZHNbal07XG4gICAgICAgIHZhciB2YWwgPSBfZGF0YTNbZmllbGRdO1xuXG4gICAgICAgIGlmIChudW1iZXIodmFsKSkge1xuICAgICAgICAgIHZhbCA9IF9kYXRhM1tmaWVsZF0gPSAnJyArIF9kYXRhM1tmaWVsZF07IC8vIG5vdyBzdHJpbmdcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWwgPT0gbnVsbCB8fCB2YWwgPT09ICcnKSB7XG4gICAgICAgICAgLy8gY2FuJ3QgY3JlYXRlIGlmIHNvdXJjZSBvciB0YXJnZXQgaXMgbm90IGRlZmluZWQgcHJvcGVybHlcbiAgICAgICAgICBlcnJvcignQ2FuIG5vdCBjcmVhdGUgZWRnZSBgJyArIGlkICsgJ2Agd2l0aCB1bnNwZWNpZmllZCAnICsgZmllbGQpO1xuICAgICAgICAgIGJhZFNvdXJjZU9yVGFyZ2V0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICghY3kuaGFzRWxlbWVudFdpdGhJZCh2YWwpKSB7XG4gICAgICAgICAgLy8gY2FuJ3QgY3JlYXRlIGVkZ2UgaWYgb25lIG9mIGl0cyBub2RlcyBkb2Vzbid0IGV4aXN0XG4gICAgICAgICAgZXJyb3IoJ0NhbiBub3QgY3JlYXRlIGVkZ2UgYCcgKyBpZCArICdgIHdpdGggbm9uZXhpc3RhbnQgJyArIGZpZWxkICsgJyBgJyArIHZhbCArICdgJyk7XG4gICAgICAgICAgYmFkU291cmNlT3JUYXJnZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChiYWRTb3VyY2VPclRhcmdldCkge1xuICAgICAgICByZW1vdmVGcm9tRWxlbWVudHMoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGNhbid0IGNyZWF0ZSB0aGlzXG5cblxuICAgICAgdmFyIHNyYyA9IGN5LmdldEVsZW1lbnRCeUlkKF9kYXRhMy5zb3VyY2UpO1xuICAgICAgdmFyIHRndCA9IGN5LmdldEVsZW1lbnRCeUlkKF9kYXRhMy50YXJnZXQpOyAvLyBvbmx5IG9uZSBlZGdlIGluIG5vZGUgaWYgbG9vcFxuXG4gICAgICBpZiAoc3JjLnNhbWUodGd0KSkge1xuICAgICAgICBzcmMuX3ByaXZhdGUuZWRnZXMucHVzaChlZGdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNyYy5fcHJpdmF0ZS5lZGdlcy5wdXNoKGVkZ2UpO1xuXG4gICAgICAgIHRndC5fcHJpdmF0ZS5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgfVxuXG4gICAgICBlZGdlLl9wcml2YXRlLnNvdXJjZSA9IHNyYztcbiAgICAgIGVkZ2UuX3ByaXZhdGUudGFyZ2V0ID0gdGd0O1xuICAgIH0gLy8gaWYgaXMgZWRnZVxuICAgIC8vIGNyZWF0ZSBtb2NrIGlkcyAvIGluZGV4ZXMgbWFwcyBmb3IgZWxlbWVudCBzbyBpdCBjYW4gYmUgdXNlZCBsaWtlIGNvbGxlY3Rpb25zXG5cblxuICAgIF9wcml2YXRlLm1hcCA9IG5ldyBNYXAkMSgpO1xuXG4gICAgX3ByaXZhdGUubWFwLnNldChpZCwge1xuICAgICAgZWxlOiBfZWxlMixcbiAgICAgIGluZGV4OiAwXG4gICAgfSk7XG5cbiAgICBfcHJpdmF0ZS5yZW1vdmVkID0gZmFsc2U7XG5cbiAgICBpZiAoYWRkVG9Qb29sKSB7XG4gICAgICBjeS5hZGRUb1Bvb2woX2VsZTIpO1xuICAgIH1cbiAgfSAvLyBmb3IgZWFjaCBlbGVtZW50XG4gIC8vIGRvIGNvbXBvdW5kIG5vZGUgc2FuaXR5IGNoZWNrc1xuXG5cbiAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbm9kZXMubGVuZ3RoOyBfaTQrKykge1xuICAgIC8vIGVhY2ggbm9kZVxuICAgIHZhciBub2RlID0gbm9kZXNbX2k0XTtcbiAgICB2YXIgX2RhdGE0ID0gbm9kZS5fcHJpdmF0ZS5kYXRhO1xuXG4gICAgaWYgKG51bWJlcihfZGF0YTQucGFyZW50KSkge1xuICAgICAgLy8gdGhlbiBhdXRvbWFrZSBzdHJpbmdcbiAgICAgIF9kYXRhNC5wYXJlbnQgPSAnJyArIF9kYXRhNC5wYXJlbnQ7XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudElkID0gX2RhdGE0LnBhcmVudDtcbiAgICB2YXIgc3BlY2lmaWVkUGFyZW50ID0gcGFyZW50SWQgIT0gbnVsbDtcblxuICAgIGlmIChzcGVjaWZpZWRQYXJlbnQpIHtcbiAgICAgIHZhciBwYXJlbnQgPSBjeS5nZXRFbGVtZW50QnlJZChwYXJlbnRJZCk7XG5cbiAgICAgIGlmIChwYXJlbnQuZW1wdHkoKSkge1xuICAgICAgICAvLyBub24tZXhpc3RhbnQgcGFyZW50OyBqdXN0IHJlbW92ZSBpdFxuICAgICAgICBfZGF0YTQucGFyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNlbGZBc1BhcmVudCA9IGZhbHNlO1xuICAgICAgICB2YXIgYW5jZXN0b3IgPSBwYXJlbnQ7XG5cbiAgICAgICAgd2hpbGUgKCFhbmNlc3Rvci5lbXB0eSgpKSB7XG4gICAgICAgICAgaWYgKG5vZGUuc2FtZShhbmNlc3RvcikpIHtcbiAgICAgICAgICAgIC8vIG1hcmsgc2VsZiBhcyBwYXJlbnQgYW5kIHJlbW92ZSBmcm9tIGRhdGFcbiAgICAgICAgICAgIHNlbGZBc1BhcmVudCA9IHRydWU7XG4gICAgICAgICAgICBfZGF0YTQucGFyZW50ID0gdW5kZWZpbmVkOyAvLyByZW1vdmUgcGFyZW50IHJlZmVyZW5jZVxuICAgICAgICAgICAgLy8gZXhpdCBvciB3ZSBsb29wIGZvcmV2ZXJcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2VsZkFzUGFyZW50KSB7XG4gICAgICAgICAgLy8gY29ubmVjdCB3aXRoIGNoaWxkcmVuXG4gICAgICAgICAgcGFyZW50WzBdLl9wcml2YXRlLmNoaWxkcmVuLnB1c2gobm9kZSk7XG5cbiAgICAgICAgICBub2RlLl9wcml2YXRlLnBhcmVudCA9IHBhcmVudFswXTsgLy8gbGV0IHRoZSBjb3JlIGtub3cgd2UgaGF2ZSBhIGNvbXBvdW5kIGdyYXBoXG5cbiAgICAgICAgICBjeV9wLmhhc0NvbXBvdW5kTm9kZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIGVsc2VcblxuICAgIH0gLy8gaWYgc3BlY2lmaWVkIHBhcmVudFxuXG4gIH0gLy8gZm9yIGVhY2ggbm9kZVxuXG5cbiAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgcmVzdG9yZWQgPSBlbGVtZW50cy5sZW5ndGggPT09IHNlbGYubGVuZ3RoID8gc2VsZiA6IG5ldyBDb2xsZWN0aW9uKGN5LCBlbGVtZW50cyk7XG5cbiAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCByZXN0b3JlZC5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgX2VsZTMgPSByZXN0b3JlZFtfaTVdO1xuXG4gICAgICBpZiAoX2VsZTMuaXNOb2RlKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGFkZGluZyBhbiBlZGdlIGludmFsaWRhdGVzIHRoZSB0cmF2ZXJzYWwgY2FjaGVzIGZvciB0aGUgcGFyYWxsZWwgZWRnZXNcblxuXG4gICAgICBfZWxlMy5wYXJhbGxlbEVkZ2VzKCkuY2xlYXJUcmF2ZXJzYWxDYWNoZSgpOyAvLyBhZGRpbmcgYW4gZWRnZSBpbnZhbGlkYXRlcyB0aGUgdHJhdmVyc2FsIGNhY2hlIGZvciB0aGUgY29ubmVjdGVkIG5vZGVzXG5cblxuICAgICAgX2VsZTMuc291cmNlKCkuY2xlYXJUcmF2ZXJzYWxDYWNoZSgpO1xuXG4gICAgICBfZWxlMy50YXJnZXQoKS5jbGVhclRyYXZlcnNhbENhY2hlKCk7XG4gICAgfVxuXG4gICAgdmFyIHRvVXBkYXRlU3R5bGU7XG5cbiAgICBpZiAoY3lfcC5oYXNDb21wb3VuZE5vZGVzKSB7XG4gICAgICB0b1VwZGF0ZVN0eWxlID0gY3kuY29sbGVjdGlvbigpLm1lcmdlKHJlc3RvcmVkKS5tZXJnZShyZXN0b3JlZC5jb25uZWN0ZWROb2RlcygpKS5tZXJnZShyZXN0b3JlZC5wYXJlbnQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvVXBkYXRlU3R5bGUgPSByZXN0b3JlZDtcbiAgICB9XG5cbiAgICB0b1VwZGF0ZVN0eWxlLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpLnVwZGF0ZVN0eWxlKG5vdGlmeVJlbmRlcmVyKTtcblxuICAgIGlmIChub3RpZnlSZW5kZXJlcikge1xuICAgICAgcmVzdG9yZWQuZW1pdEFuZE5vdGlmeSgnYWRkJyk7XG4gICAgfSBlbHNlIGlmIChhZGRUb1Bvb2wpIHtcbiAgICAgIHJlc3RvcmVkLmVtaXQoJ2FkZCcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxmOyAvLyBjaGFpbmFiaWxpdHlcbn07XG5cbmVsZXNmbiR1LnJlbW92ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlbGUgPSB0aGlzWzBdO1xuICByZXR1cm4gZWxlICYmIGVsZS5fcHJpdmF0ZS5yZW1vdmVkO1xufTtcblxuZWxlc2ZuJHUuaW5zaWRlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlID0gdGhpc1swXTtcbiAgcmV0dXJuIGVsZSAmJiAhZWxlLl9wcml2YXRlLnJlbW92ZWQ7XG59O1xuXG5lbGVzZm4kdS5yZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub3RpZnlSZW5kZXJlciA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcbiAgdmFyIHJlbW92ZUZyb21Qb29sID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBlbGVzVG9SZW1vdmUgPSBbXTtcbiAgdmFyIGVsZXNUb1JlbW92ZUlkcyA9IHt9O1xuICB2YXIgY3kgPSBzZWxmLl9wcml2YXRlLmN5OyAvLyBhZGQgY29ubmVjdGVkIGVkZ2VzXG5cbiAgZnVuY3Rpb24gYWRkQ29ubmVjdGVkRWRnZXMobm9kZSkge1xuICAgIHZhciBlZGdlcyA9IG5vZGUuX3ByaXZhdGUuZWRnZXM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhZGQoZWRnZXNbaV0pO1xuICAgIH1cbiAgfSAvLyBhZGQgZGVzY2VuZGFudCBub2Rlc1xuXG5cbiAgZnVuY3Rpb24gYWRkQ2hpbGRyZW4obm9kZSkge1xuICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuX3ByaXZhdGUuY2hpbGRyZW47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhZGQoY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZChlbGUpIHtcbiAgICB2YXIgYWxyZWFkeUFkZGVkID0gZWxlc1RvUmVtb3ZlSWRzW2VsZS5pZCgpXTtcblxuICAgIGlmIChyZW1vdmVGcm9tUG9vbCAmJiBlbGUucmVtb3ZlZCgpIHx8IGFscmVhZHlBZGRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVzVG9SZW1vdmVJZHNbZWxlLmlkKCldID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICBlbGVzVG9SZW1vdmUucHVzaChlbGUpOyAvLyBub2RlcyBhcmUgcmVtb3ZlZCBsYXN0XG5cbiAgICAgIGFkZENvbm5lY3RlZEVkZ2VzKGVsZSk7XG4gICAgICBhZGRDaGlsZHJlbihlbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVzVG9SZW1vdmUudW5zaGlmdChlbGUpOyAvLyBlZGdlcyBhcmUgcmVtb3ZlZCBmaXJzdFxuICAgIH1cbiAgfSAvLyBtYWtlIHRoZSBsaXN0IG9mIGVsZW1lbnRzIHRvIHJlbW92ZVxuICAvLyAobWF5IGJlIHJlbW92aW5nIG1vcmUgdGhhbiBzcGVjaWZpZWQgZHVlIHRvIGNvbm5lY3RlZCBlZGdlcyBldGMpXG5cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHNlbGYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IHNlbGZbaV07XG4gICAgYWRkKGVsZSk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVFZGdlUmVmKG5vZGUsIGVkZ2UpIHtcbiAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLl9wcml2YXRlLmVkZ2VzO1xuICAgIHJlbW92ZUZyb21BcnJheShjb25uZWN0ZWRFZGdlcywgZWRnZSk7IC8vIHJlbW92aW5nIGFuIGVkZ2VzIGludmFsaWRhdGVzIHRoZSB0cmF2ZXJzYWwgY2FjaGUgZm9yIGl0cyBub2Rlc1xuXG4gICAgbm9kZS5jbGVhclRyYXZlcnNhbENhY2hlKCk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVQYXJhbGxlbFJlZihwbGxFZGdlKSB7XG4gICAgLy8gcmVtb3ZpbmcgYW4gZWRnZSBpbnZhbGlkYXRlcyB0aGUgdHJhdmVyc2FsIGNhY2hlcyBmb3IgdGhlIHBhcmFsbGVsIGVkZ2VzXG4gICAgcGxsRWRnZS5jbGVhclRyYXZlcnNhbENhY2hlKCk7XG4gIH1cblxuICB2YXIgYWx0ZXJlZFBhcmVudHMgPSBbXTtcbiAgYWx0ZXJlZFBhcmVudHMuaWRzID0ge307XG5cbiAgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRSZWYocGFyZW50LCBlbGUpIHtcbiAgICBlbGUgPSBlbGVbMF07XG4gICAgcGFyZW50ID0gcGFyZW50WzBdO1xuICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5fcHJpdmF0ZS5jaGlsZHJlbjtcbiAgICB2YXIgcGlkID0gcGFyZW50LmlkKCk7XG4gICAgcmVtb3ZlRnJvbUFycmF5KGNoaWxkcmVuLCBlbGUpOyAvLyByZW1vdmUgcGFyZW50ID0+IGNoaWxkIHJlZlxuXG4gICAgZWxlLl9wcml2YXRlLnBhcmVudCA9IG51bGw7IC8vIHJlbW92ZSBjaGlsZCA9PiBwYXJlbnQgcmVmXG5cbiAgICBpZiAoIWFsdGVyZWRQYXJlbnRzLmlkc1twaWRdKSB7XG4gICAgICBhbHRlcmVkUGFyZW50cy5pZHNbcGlkXSA9IHRydWU7XG4gICAgICBhbHRlcmVkUGFyZW50cy5wdXNoKHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZi5kaXJ0eUNvbXBvdW5kQm91bmRzQ2FjaGUoKTtcblxuICBpZiAocmVtb3ZlRnJvbVBvb2wpIHtcbiAgICBjeS5yZW1vdmVGcm9tUG9vbChlbGVzVG9SZW1vdmUpOyAvLyByZW1vdmUgZnJvbSBjb3JlIHBvb2xcbiAgfVxuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IGVsZXNUb1JlbW92ZS5sZW5ndGg7IF9pNisrKSB7XG4gICAgdmFyIF9lbGU0ID0gZWxlc1RvUmVtb3ZlW19pNl07XG5cbiAgICBpZiAoX2VsZTQuaXNFZGdlKCkpIHtcbiAgICAgIC8vIHJlbW92ZSByZWZlcmVuY2VzIHRvIHRoaXMgZWRnZSBpbiBpdHMgY29ubmVjdGVkIG5vZGVzXG4gICAgICB2YXIgc3JjID0gX2VsZTQuc291cmNlKClbMF07XG5cbiAgICAgIHZhciB0Z3QgPSBfZWxlNC50YXJnZXQoKVswXTtcblxuICAgICAgcmVtb3ZlRWRnZVJlZihzcmMsIF9lbGU0KTtcbiAgICAgIHJlbW92ZUVkZ2VSZWYodGd0LCBfZWxlNCk7XG5cbiAgICAgIHZhciBwbGxFZGdlcyA9IF9lbGU0LnBhcmFsbGVsRWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwbGxFZGdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgcGxsRWRnZSA9IHBsbEVkZ2VzW2pdO1xuICAgICAgICByZW1vdmVQYXJhbGxlbFJlZihwbGxFZGdlKTtcblxuICAgICAgICBpZiAocGxsRWRnZS5pc0J1bmRsZWRCZXppZXIoKSkge1xuICAgICAgICAgIHBsbEVkZ2UuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSB0byBwYXJlbnRcbiAgICAgIHZhciBwYXJlbnQgPSBfZWxlNC5wYXJlbnQoKTtcblxuICAgICAgaWYgKHBhcmVudC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmVtb3ZlQ2hpbGRSZWYocGFyZW50LCBfZWxlNCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlbW92ZUZyb21Qb29sKSB7XG4gICAgICAvLyBtYXJrIGFzIHJlbW92ZWRcbiAgICAgIF9lbGU0Ll9wcml2YXRlLnJlbW92ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSAvLyBjaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIGNvbXBvdW5kIGdyYXBoIG9yIG5vdFxuXG5cbiAgdmFyIGVsZXNTdGlsbEluc2lkZSA9IGN5Ll9wcml2YXRlLmVsZW1lbnRzO1xuICBjeS5fcHJpdmF0ZS5oYXNDb21wb3VuZE5vZGVzID0gZmFsc2U7XG5cbiAgZm9yICh2YXIgX2k3ID0gMDsgX2k3IDwgZWxlc1N0aWxsSW5zaWRlLmxlbmd0aDsgX2k3KyspIHtcbiAgICB2YXIgX2VsZTUgPSBlbGVzU3RpbGxJbnNpZGVbX2k3XTtcblxuICAgIGlmIChfZWxlNS5pc1BhcmVudCgpKSB7XG4gICAgICBjeS5fcHJpdmF0ZS5oYXNDb21wb3VuZE5vZGVzID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciByZW1vdmVkRWxlbWVudHMgPSBuZXcgQ29sbGVjdGlvbih0aGlzLmN5KCksIGVsZXNUb1JlbW92ZSk7XG5cbiAgaWYgKHJlbW92ZWRFbGVtZW50cy5zaXplKCkgPiAwKSB7XG4gICAgLy8gbXVzdCBtYW51YWxseSBub3RpZnkgc2luY2UgdHJpZ2dlciB3b24ndCBkbyB0aGlzIGF1dG9tYXRpY2FsbHkgb25jZSByZW1vdmVkXG4gICAgaWYgKG5vdGlmeVJlbmRlcmVyKSB7XG4gICAgICByZW1vdmVkRWxlbWVudHMuZW1pdEFuZE5vdGlmeSgncmVtb3ZlJyk7XG4gICAgfSBlbHNlIGlmIChyZW1vdmVGcm9tUG9vbCkge1xuICAgICAgcmVtb3ZlZEVsZW1lbnRzLmVtaXQoJ3JlbW92ZScpO1xuICAgIH1cbiAgfSAvLyB0aGUgcGFyZW50cyB3aG8gd2VyZSBtb2RpZmllZCBieSB0aGUgcmVtb3ZhbCBuZWVkIHRoZWlyIHN0eWxlIHVwZGF0ZWRcblxuXG4gIGZvciAodmFyIF9pOCA9IDA7IF9pOCA8IGFsdGVyZWRQYXJlbnRzLmxlbmd0aDsgX2k4KyspIHtcbiAgICB2YXIgX2VsZTYgPSBhbHRlcmVkUGFyZW50c1tfaThdO1xuXG4gICAgaWYgKCFyZW1vdmVGcm9tUG9vbCB8fCAhX2VsZTYucmVtb3ZlZCgpKSB7XG4gICAgICBfZWxlNi51cGRhdGVTdHlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW1vdmVkRWxlbWVudHM7XG59O1xuXG5lbGVzZm4kdS5tb3ZlID0gZnVuY3Rpb24gKHN0cnVjdCkge1xuICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuICB2YXIgZWxlcyA9IHRoaXM7IC8vIGp1c3QgY2xlYW4gdXAgcmVmcywgY2FjaGVzLCBldGMuIGluIHRoZSBzYW1lIHdheSBhcyB3aGVuIHJlbW92aW5nIGFuZCB0aGVuIHJlc3RvcmluZ1xuICAvLyAob3VyIGNhbGxzIHRvIHJlbW92ZS9yZXN0b3JlIGRvIG5vdCByZW1vdmUgZnJvbSB0aGUgZ3JhcGggb3IgbWFrZSBldmVudHMpXG5cbiAgdmFyIG5vdGlmeVJlbmRlcmVyID0gZmFsc2U7XG4gIHZhciBtb2RpZnlQb29sID0gZmFsc2U7XG5cbiAgdmFyIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoaWQpIHtcbiAgICByZXR1cm4gaWQgPT0gbnVsbCA/IGlkIDogJycgKyBpZDtcbiAgfTsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuXG4gIGlmIChzdHJ1Y3Quc291cmNlICE9PSB1bmRlZmluZWQgfHwgc3RydWN0LnRhcmdldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHNyY0lkID0gdG9TdHJpbmcoc3RydWN0LnNvdXJjZSk7XG4gICAgdmFyIHRndElkID0gdG9TdHJpbmcoc3RydWN0LnRhcmdldCk7XG4gICAgdmFyIHNyY0V4aXN0cyA9IHNyY0lkICE9IG51bGwgJiYgY3kuaGFzRWxlbWVudFdpdGhJZChzcmNJZCk7XG4gICAgdmFyIHRndEV4aXN0cyA9IHRndElkICE9IG51bGwgJiYgY3kuaGFzRWxlbWVudFdpdGhJZCh0Z3RJZCk7XG5cbiAgICBpZiAoc3JjRXhpc3RzIHx8IHRndEV4aXN0cykge1xuICAgICAgY3kuYmF0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBhdm9pZCBkdXBsaWNhdGUgc3R5bGUgdXBkYXRlc1xuICAgICAgICBlbGVzLnJlbW92ZShub3RpZnlSZW5kZXJlciwgbW9kaWZ5UG9vbCk7IC8vIGNsZWFuIHVwIHJlZnMgZXRjLlxuXG4gICAgICAgIGVsZXMuZW1pdEFuZE5vdGlmeSgnbW92ZW91dCcpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgICAgIHZhciBfZGF0YTUgPSBlbGUuX3ByaXZhdGUuZGF0YTtcblxuICAgICAgICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgICAgICAgIGlmIChzcmNFeGlzdHMpIHtcbiAgICAgICAgICAgICAgX2RhdGE1LnNvdXJjZSA9IHNyY0lkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGd0RXhpc3RzKSB7XG4gICAgICAgICAgICAgIF9kYXRhNS50YXJnZXQgPSB0Z3RJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBlbGVzLnJlc3RvcmUobm90aWZ5UmVuZGVyZXIsIG1vZGlmeVBvb2wpOyAvLyBtYWtlIG5ldyByZWZzLCBzdHlsZSwgZXRjLlxuICAgICAgfSk7XG4gICAgICBlbGVzLmVtaXRBbmROb3RpZnkoJ21vdmUnKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoc3RydWN0LnBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gbW92ZSBub2RlIHRvIG5ldyBwYXJlbnRcbiAgICB2YXIgcGFyZW50SWQgPSB0b1N0cmluZyhzdHJ1Y3QucGFyZW50KTtcbiAgICB2YXIgcGFyZW50RXhpc3RzID0gcGFyZW50SWQgPT09IG51bGwgfHwgY3kuaGFzRWxlbWVudFdpdGhJZChwYXJlbnRJZCk7XG5cbiAgICBpZiAocGFyZW50RXhpc3RzKSB7XG4gICAgICB2YXIgcGlkVG9Bc3NpZ24gPSBwYXJlbnRJZCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHBhcmVudElkO1xuICAgICAgY3kuYmF0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBhdm9pZCBkdXBsaWNhdGUgc3R5bGUgdXBkYXRlc1xuICAgICAgICB2YXIgdXBkYXRlZCA9IGVsZXMucmVtb3ZlKG5vdGlmeVJlbmRlcmVyLCBtb2RpZnlQb29sKTsgLy8gY2xlYW4gdXAgcmVmcyBldGMuXG5cbiAgICAgICAgdXBkYXRlZC5lbWl0QW5kTm90aWZ5KCdtb3Zlb3V0Jyk7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgICAgdmFyIF9kYXRhNiA9IGVsZS5fcHJpdmF0ZS5kYXRhO1xuXG4gICAgICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAgICAgX2RhdGE2LnBhcmVudCA9IHBpZFRvQXNzaWduO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZWQucmVzdG9yZShub3RpZnlSZW5kZXJlciwgbW9kaWZ5UG9vbCk7IC8vIG1ha2UgbmV3IHJlZnMsIHN0eWxlLCBldGMuXG4gICAgICB9KTtcbiAgICAgIGVsZXMuZW1pdEFuZE5vdGlmeSgnbW92ZScpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuW2VsZXNmbiRjLCBlbGVzZm4kZCwgZWxlc2ZuJGUsIGVsZXNmbiRmLCBlbGVzZm4kZywgZGF0YSQxLCBlbGVzZm4kaSwgZGltZW5zaW9ucywgZWxlc2ZuJG0sIGVsZXNmbiRuLCBlbGVzZm4kbywgZWxlc2ZuJHAsIGVsZXNmbiRxLCBlbGVzZm4kciwgZWxlc2ZuJHMsIGVsZXNmbiR0XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoZWxlc2ZuJHUsIHByb3BzKTtcbn0pO1xuXG52YXIgY29yZWZuID0ge1xuICBhZGQ6IGZ1bmN0aW9uIGFkZChvcHRzKSB7XG4gICAgdmFyIGVsZW1lbnRzO1xuICAgIHZhciBjeSA9IHRoaXM7IC8vIGFkZCB0aGUgZWxlbWVudHNcblxuICAgIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKG9wdHMpKSB7XG4gICAgICB2YXIgZWxlcyA9IG9wdHM7XG5cbiAgICAgIGlmIChlbGVzLl9wcml2YXRlLmN5ID09PSBjeSkge1xuICAgICAgICAvLyBzYW1lIGluc3RhbmNlID0+IGp1c3QgcmVzdG9yZVxuICAgICAgICBlbGVtZW50cyA9IGVsZXMucmVzdG9yZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb3RoZXJ3aXNlLCBjb3B5IGZyb20ganNvblxuICAgICAgICB2YXIganNvbnMgPSBbXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgICBqc29ucy5wdXNoKGVsZS5qc29uKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudHMgPSBuZXcgQ29sbGVjdGlvbihjeSwganNvbnMpO1xuICAgICAgfVxuICAgIH0gLy8gc3BlY2lmeSBhbiBhcnJheSBvZiBvcHRpb25zXG4gICAgZWxzZSBpZiAoYXJyYXkob3B0cykpIHtcbiAgICAgICAgdmFyIF9qc29ucyA9IG9wdHM7XG4gICAgICAgIGVsZW1lbnRzID0gbmV3IENvbGxlY3Rpb24oY3ksIF9qc29ucyk7XG4gICAgICB9IC8vIHNwZWNpZnkgdmlhIG9wdHMubm9kZXMgYW5kIG9wdHMuZWRnZXNcbiAgICAgIGVsc2UgaWYgKHBsYWluT2JqZWN0KG9wdHMpICYmIChhcnJheShvcHRzLm5vZGVzKSB8fCBhcnJheShvcHRzLmVkZ2VzKSkpIHtcbiAgICAgICAgICB2YXIgZWxlc0J5R3JvdXAgPSBvcHRzO1xuICAgICAgICAgIHZhciBfanNvbnMyID0gW107XG4gICAgICAgICAgdmFyIGdycyA9IFsnbm9kZXMnLCAnZWRnZXMnXTtcblxuICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgaWwgPSBncnMubGVuZ3RoOyBfaSA8IGlsOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgZ3JvdXAgPSBncnNbX2ldO1xuICAgICAgICAgICAgdmFyIGVsZXNBcnJheSA9IGVsZXNCeUdyb3VwW2dyb3VwXTtcblxuICAgICAgICAgICAgaWYgKGFycmF5KGVsZXNBcnJheSkpIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGpsID0gZWxlc0FycmF5Lmxlbmd0aDsgaiA8IGpsOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIganNvbiA9IGV4dGVuZCh7XG4gICAgICAgICAgICAgICAgICBncm91cDogZ3JvdXBcbiAgICAgICAgICAgICAgICB9LCBlbGVzQXJyYXlbal0pO1xuXG4gICAgICAgICAgICAgICAgX2pzb25zMi5wdXNoKGpzb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZWxlbWVudHMgPSBuZXcgQ29sbGVjdGlvbihjeSwgX2pzb25zMik7XG4gICAgICAgIH0gLy8gc3BlY2lmeSBvcHRpb25zIGZvciBvbmUgZWxlbWVudFxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBfanNvbiA9IG9wdHM7XG4gICAgICAgICAgICBlbGVtZW50cyA9IG5ldyBFbGVtZW50KGN5LCBfanNvbikuY29sbGVjdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50cztcbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoY29sbGVjdGlvbikge1xuICAgIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKGNvbGxlY3Rpb24pKSA7IGVsc2UgaWYgKHN0cmluZyhjb2xsZWN0aW9uKSkge1xuICAgICAgdmFyIHNlbGVjdG9yID0gY29sbGVjdGlvbjtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLiQoc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHJldHVybiBjb2xsZWN0aW9uLnJlbW92ZSgpO1xuICB9XG59O1xuXG4vKiBnbG9iYWwgRmxvYXQzMkFycmF5ICovXG5cbi8qISBCZXppZXIgY3VydmUgZnVuY3Rpb24gZ2VuZXJhdG9yLiBDb3B5cmlnaHQgR2FldGFuIFJlbmF1ZGVhdS4gTUlUIExpY2Vuc2U6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UgKi9cbmZ1bmN0aW9uIGdlbmVyYXRlQ3ViaWNCZXppZXIobVgxLCBtWTEsIG1YMiwgbVkyKSB7XG4gIHZhciBORVdUT05fSVRFUkFUSU9OUyA9IDQsXG4gICAgICBORVdUT05fTUlOX1NMT1BFID0gMC4wMDEsXG4gICAgICBTVUJESVZJU0lPTl9QUkVDSVNJT04gPSAwLjAwMDAwMDEsXG4gICAgICBTVUJESVZJU0lPTl9NQVhfSVRFUkFUSU9OUyA9IDEwLFxuICAgICAga1NwbGluZVRhYmxlU2l6ZSA9IDExLFxuICAgICAga1NhbXBsZVN0ZXBTaXplID0gMS4wIC8gKGtTcGxpbmVUYWJsZVNpemUgLSAxLjApLFxuICAgICAgZmxvYXQzMkFycmF5U3VwcG9ydGVkID0gdHlwZW9mIEZsb2F0MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCc7XG4gIC8qIE11c3QgY29udGFpbiBmb3VyIGFyZ3VtZW50cy4gKi9cblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPT0gNCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvKiBBcmd1bWVudHMgbXVzdCBiZSBudW1iZXJzLiAqL1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSAhPT0gXCJudW1iZXJcIiB8fCBpc05hTihhcmd1bWVudHNbaV0pIHx8ICFpc0Zpbml0ZShhcmd1bWVudHNbaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8qIFggdmFsdWVzIG11c3QgYmUgaW4gdGhlIFswLCAxXSByYW5nZS4gKi9cblxuXG4gIG1YMSA9IE1hdGgubWluKG1YMSwgMSk7XG4gIG1YMiA9IE1hdGgubWluKG1YMiwgMSk7XG4gIG1YMSA9IE1hdGgubWF4KG1YMSwgMCk7XG4gIG1YMiA9IE1hdGgubWF4KG1YMiwgMCk7XG4gIHZhciBtU2FtcGxlVmFsdWVzID0gZmxvYXQzMkFycmF5U3VwcG9ydGVkID8gbmV3IEZsb2F0MzJBcnJheShrU3BsaW5lVGFibGVTaXplKSA6IG5ldyBBcnJheShrU3BsaW5lVGFibGVTaXplKTtcblxuICBmdW5jdGlvbiBBKGFBMSwgYUEyKSB7XG4gICAgcmV0dXJuIDEuMCAtIDMuMCAqIGFBMiArIDMuMCAqIGFBMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIEIoYUExLCBhQTIpIHtcbiAgICByZXR1cm4gMy4wICogYUEyIC0gNi4wICogYUExO1xuICB9XG5cbiAgZnVuY3Rpb24gQyhhQTEpIHtcbiAgICByZXR1cm4gMy4wICogYUExO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FsY0JlemllcihhVCwgYUExLCBhQTIpIHtcbiAgICByZXR1cm4gKChBKGFBMSwgYUEyKSAqIGFUICsgQihhQTEsIGFBMikpICogYVQgKyBDKGFBMSkpICogYVQ7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRTbG9wZShhVCwgYUExLCBhQTIpIHtcbiAgICByZXR1cm4gMy4wICogQShhQTEsIGFBMikgKiBhVCAqIGFUICsgMi4wICogQihhQTEsIGFBMikgKiBhVCArIEMoYUExKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5ld3RvblJhcGhzb25JdGVyYXRlKGFYLCBhR3Vlc3NUKSB7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IE5FV1RPTl9JVEVSQVRJT05TOyArK19pKSB7XG4gICAgICB2YXIgY3VycmVudFNsb3BlID0gZ2V0U2xvcGUoYUd1ZXNzVCwgbVgxLCBtWDIpO1xuXG4gICAgICBpZiAoY3VycmVudFNsb3BlID09PSAwLjApIHtcbiAgICAgICAgcmV0dXJuIGFHdWVzc1Q7XG4gICAgICB9XG5cbiAgICAgIHZhciBjdXJyZW50WCA9IGNhbGNCZXppZXIoYUd1ZXNzVCwgbVgxLCBtWDIpIC0gYVg7XG4gICAgICBhR3Vlc3NUIC09IGN1cnJlbnRYIC8gY3VycmVudFNsb3BlO1xuICAgIH1cblxuICAgIHJldHVybiBhR3Vlc3NUO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FsY1NhbXBsZVZhbHVlcygpIHtcbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBrU3BsaW5lVGFibGVTaXplOyArK19pMikge1xuICAgICAgbVNhbXBsZVZhbHVlc1tfaTJdID0gY2FsY0JlemllcihfaTIgKiBrU2FtcGxlU3RlcFNpemUsIG1YMSwgbVgyKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBiaW5hcnlTdWJkaXZpZGUoYVgsIGFBLCBhQikge1xuICAgIHZhciBjdXJyZW50WCxcbiAgICAgICAgY3VycmVudFQsXG4gICAgICAgIGkgPSAwO1xuXG4gICAgZG8ge1xuICAgICAgY3VycmVudFQgPSBhQSArIChhQiAtIGFBKSAvIDIuMDtcbiAgICAgIGN1cnJlbnRYID0gY2FsY0JlemllcihjdXJyZW50VCwgbVgxLCBtWDIpIC0gYVg7XG5cbiAgICAgIGlmIChjdXJyZW50WCA+IDAuMCkge1xuICAgICAgICBhQiA9IGN1cnJlbnRUO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYUEgPSBjdXJyZW50VDtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChNYXRoLmFicyhjdXJyZW50WCkgPiBTVUJESVZJU0lPTl9QUkVDSVNJT04gJiYgKytpIDwgU1VCRElWSVNJT05fTUFYX0lURVJBVElPTlMpO1xuXG4gICAgcmV0dXJuIGN1cnJlbnRUO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0VEZvclgoYVgpIHtcbiAgICB2YXIgaW50ZXJ2YWxTdGFydCA9IDAuMCxcbiAgICAgICAgY3VycmVudFNhbXBsZSA9IDEsXG4gICAgICAgIGxhc3RTYW1wbGUgPSBrU3BsaW5lVGFibGVTaXplIC0gMTtcblxuICAgIGZvciAoOyBjdXJyZW50U2FtcGxlICE9PSBsYXN0U2FtcGxlICYmIG1TYW1wbGVWYWx1ZXNbY3VycmVudFNhbXBsZV0gPD0gYVg7ICsrY3VycmVudFNhbXBsZSkge1xuICAgICAgaW50ZXJ2YWxTdGFydCArPSBrU2FtcGxlU3RlcFNpemU7XG4gICAgfVxuXG4gICAgLS1jdXJyZW50U2FtcGxlO1xuICAgIHZhciBkaXN0ID0gKGFYIC0gbVNhbXBsZVZhbHVlc1tjdXJyZW50U2FtcGxlXSkgLyAobVNhbXBsZVZhbHVlc1tjdXJyZW50U2FtcGxlICsgMV0gLSBtU2FtcGxlVmFsdWVzW2N1cnJlbnRTYW1wbGVdKSxcbiAgICAgICAgZ3Vlc3NGb3JUID0gaW50ZXJ2YWxTdGFydCArIGRpc3QgKiBrU2FtcGxlU3RlcFNpemUsXG4gICAgICAgIGluaXRpYWxTbG9wZSA9IGdldFNsb3BlKGd1ZXNzRm9yVCwgbVgxLCBtWDIpO1xuXG4gICAgaWYgKGluaXRpYWxTbG9wZSA+PSBORVdUT05fTUlOX1NMT1BFKSB7XG4gICAgICByZXR1cm4gbmV3dG9uUmFwaHNvbkl0ZXJhdGUoYVgsIGd1ZXNzRm9yVCk7XG4gICAgfSBlbHNlIGlmIChpbml0aWFsU2xvcGUgPT09IDAuMCkge1xuICAgICAgcmV0dXJuIGd1ZXNzRm9yVDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJpbmFyeVN1YmRpdmlkZShhWCwgaW50ZXJ2YWxTdGFydCwgaW50ZXJ2YWxTdGFydCArIGtTYW1wbGVTdGVwU2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIF9wcmVjb21wdXRlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHByZWNvbXB1dGUoKSB7XG4gICAgX3ByZWNvbXB1dGVkID0gdHJ1ZTtcblxuICAgIGlmIChtWDEgIT09IG1ZMSB8fCBtWDIgIT09IG1ZMikge1xuICAgICAgY2FsY1NhbXBsZVZhbHVlcygpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBmID0gZnVuY3Rpb24gZihhWCkge1xuICAgIGlmICghX3ByZWNvbXB1dGVkKSB7XG4gICAgICBwcmVjb21wdXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKG1YMSA9PT0gbVkxICYmIG1YMiA9PT0gbVkyKSB7XG4gICAgICByZXR1cm4gYVg7XG4gICAgfVxuXG4gICAgaWYgKGFYID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAoYVggPT09IDEpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHJldHVybiBjYWxjQmV6aWVyKGdldFRGb3JYKGFYKSwgbVkxLCBtWTIpO1xuICB9O1xuXG4gIGYuZ2V0Q29udHJvbFBvaW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gW3tcbiAgICAgIHg6IG1YMSxcbiAgICAgIHk6IG1ZMVxuICAgIH0sIHtcbiAgICAgIHg6IG1YMixcbiAgICAgIHk6IG1ZMlxuICAgIH1dO1xuICB9O1xuXG4gIHZhciBzdHIgPSBcImdlbmVyYXRlQmV6aWVyKFwiICsgW21YMSwgbVkxLCBtWDIsIG1ZMl0gKyBcIilcIjtcblxuICBmLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBzdHI7XG4gIH07XG5cbiAgcmV0dXJuIGY7XG59XG5cbi8qISBSdW5nZS1LdXR0YSBzcHJpbmcgcGh5c2ljcyBmdW5jdGlvbiBnZW5lcmF0b3IuIEFkYXB0ZWQgZnJvbSBGcmFtZXIuanMsIGNvcHlyaWdodCBLb2VuIEJvay4gTUlUIExpY2Vuc2U6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UgKi9cblxuLyogR2l2ZW4gYSB0ZW5zaW9uLCBmcmljdGlvbiwgYW5kIGR1cmF0aW9uLCBhIHNpbXVsYXRpb24gYXQgNjBGUFMgd2lsbCBmaXJzdCBydW4gd2l0aG91dCBhIGRlZmluZWQgZHVyYXRpb24gaW4gb3JkZXIgdG8gY2FsY3VsYXRlIHRoZSBmdWxsIHBhdGguIEEgc2Vjb25kIHBhc3NcbiAgIHRoZW4gYWRqdXN0cyB0aGUgdGltZSBkZWx0YSAtLSB1c2luZyB0aGUgcmVsYXRpb24gYmV0d2VlbiBhY3R1YWwgdGltZSBhbmQgZHVyYXRpb24gLS0gdG8gY2FsY3VsYXRlIHRoZSBwYXRoIGZvciB0aGUgZHVyYXRpb24tY29uc3RyYWluZWQgYW5pbWF0aW9uLiAqL1xudmFyIGdlbmVyYXRlU3ByaW5nUks0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBzcHJpbmdBY2NlbGVyYXRpb25Gb3JTdGF0ZShzdGF0ZSkge1xuICAgIHJldHVybiAtc3RhdGUudGVuc2lvbiAqIHN0YXRlLnggLSBzdGF0ZS5mcmljdGlvbiAqIHN0YXRlLnY7XG4gIH1cblxuICBmdW5jdGlvbiBzcHJpbmdFdmFsdWF0ZVN0YXRlV2l0aERlcml2YXRpdmUoaW5pdGlhbFN0YXRlLCBkdCwgZGVyaXZhdGl2ZSkge1xuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHg6IGluaXRpYWxTdGF0ZS54ICsgZGVyaXZhdGl2ZS5keCAqIGR0LFxuICAgICAgdjogaW5pdGlhbFN0YXRlLnYgKyBkZXJpdmF0aXZlLmR2ICogZHQsXG4gICAgICB0ZW5zaW9uOiBpbml0aWFsU3RhdGUudGVuc2lvbixcbiAgICAgIGZyaWN0aW9uOiBpbml0aWFsU3RhdGUuZnJpY3Rpb25cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBkeDogc3RhdGUudixcbiAgICAgIGR2OiBzcHJpbmdBY2NlbGVyYXRpb25Gb3JTdGF0ZShzdGF0ZSlcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gc3ByaW5nSW50ZWdyYXRlU3RhdGUoc3RhdGUsIGR0KSB7XG4gICAgdmFyIGEgPSB7XG4gICAgICBkeDogc3RhdGUudixcbiAgICAgIGR2OiBzcHJpbmdBY2NlbGVyYXRpb25Gb3JTdGF0ZShzdGF0ZSlcbiAgICB9LFxuICAgICAgICBiID0gc3ByaW5nRXZhbHVhdGVTdGF0ZVdpdGhEZXJpdmF0aXZlKHN0YXRlLCBkdCAqIDAuNSwgYSksXG4gICAgICAgIGMgPSBzcHJpbmdFdmFsdWF0ZVN0YXRlV2l0aERlcml2YXRpdmUoc3RhdGUsIGR0ICogMC41LCBiKSxcbiAgICAgICAgZCA9IHNwcmluZ0V2YWx1YXRlU3RhdGVXaXRoRGVyaXZhdGl2ZShzdGF0ZSwgZHQsIGMpLFxuICAgICAgICBkeGR0ID0gMS4wIC8gNi4wICogKGEuZHggKyAyLjAgKiAoYi5keCArIGMuZHgpICsgZC5keCksXG4gICAgICAgIGR2ZHQgPSAxLjAgLyA2LjAgKiAoYS5kdiArIDIuMCAqIChiLmR2ICsgYy5kdikgKyBkLmR2KTtcbiAgICBzdGF0ZS54ID0gc3RhdGUueCArIGR4ZHQgKiBkdDtcbiAgICBzdGF0ZS52ID0gc3RhdGUudiArIGR2ZHQgKiBkdDtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gc3ByaW5nUks0RmFjdG9yeSh0ZW5zaW9uLCBmcmljdGlvbiwgZHVyYXRpb24pIHtcbiAgICB2YXIgaW5pdFN0YXRlID0ge1xuICAgICAgeDogLTEsXG4gICAgICB2OiAwLFxuICAgICAgdGVuc2lvbjogbnVsbCxcbiAgICAgIGZyaWN0aW9uOiBudWxsXG4gICAgfSxcbiAgICAgICAgcGF0aCA9IFswXSxcbiAgICAgICAgdGltZV9sYXBzZWQgPSAwLFxuICAgICAgICB0b2xlcmFuY2UgPSAxIC8gMTAwMDAsXG4gICAgICAgIERUID0gMTYgLyAxMDAwLFxuICAgICAgICBoYXZlX2R1cmF0aW9uLFxuICAgICAgICBkdCxcbiAgICAgICAgbGFzdF9zdGF0ZTtcbiAgICB0ZW5zaW9uID0gcGFyc2VGbG9hdCh0ZW5zaW9uKSB8fCA1MDA7XG4gICAgZnJpY3Rpb24gPSBwYXJzZUZsb2F0KGZyaWN0aW9uKSB8fCAyMDtcbiAgICBkdXJhdGlvbiA9IGR1cmF0aW9uIHx8IG51bGw7XG4gICAgaW5pdFN0YXRlLnRlbnNpb24gPSB0ZW5zaW9uO1xuICAgIGluaXRTdGF0ZS5mcmljdGlvbiA9IGZyaWN0aW9uO1xuICAgIGhhdmVfZHVyYXRpb24gPSBkdXJhdGlvbiAhPT0gbnVsbDtcbiAgICAvKiBDYWxjdWxhdGUgdGhlIGFjdHVhbCB0aW1lIGl0IHRha2VzIGZvciB0aGlzIGFuaW1hdGlvbiB0byBjb21wbGV0ZSB3aXRoIHRoZSBwcm92aWRlZCBjb25kaXRpb25zLiAqL1xuXG4gICAgaWYgKGhhdmVfZHVyYXRpb24pIHtcbiAgICAgIC8qIFJ1biB0aGUgc2ltdWxhdGlvbiB3aXRob3V0IGEgZHVyYXRpb24uICovXG4gICAgICB0aW1lX2xhcHNlZCA9IHNwcmluZ1JLNEZhY3RvcnkodGVuc2lvbiwgZnJpY3Rpb24pO1xuICAgICAgLyogQ29tcHV0ZSB0aGUgYWRqdXN0ZWQgdGltZSBkZWx0YS4gKi9cblxuICAgICAgZHQgPSB0aW1lX2xhcHNlZCAvIGR1cmF0aW9uICogRFQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGR0ID0gRFQ7XG4gICAgfVxuXG4gICAgZm9yICg7Oykge1xuICAgICAgLyogTmV4dC9zdGVwIGZ1bmN0aW9uIC4qL1xuICAgICAgbGFzdF9zdGF0ZSA9IHNwcmluZ0ludGVncmF0ZVN0YXRlKGxhc3Rfc3RhdGUgfHwgaW5pdFN0YXRlLCBkdCk7XG4gICAgICAvKiBTdG9yZSB0aGUgcG9zaXRpb24uICovXG5cbiAgICAgIHBhdGgucHVzaCgxICsgbGFzdF9zdGF0ZS54KTtcbiAgICAgIHRpbWVfbGFwc2VkICs9IDE2O1xuICAgICAgLyogSWYgdGhlIGNoYW5nZSB0aHJlc2hvbGQgaXMgcmVhY2hlZCwgYnJlYWsuICovXG5cbiAgICAgIGlmICghKE1hdGguYWJzKGxhc3Rfc3RhdGUueCkgPiB0b2xlcmFuY2UgJiYgTWF0aC5hYnMobGFzdF9zdGF0ZS52KSA+IHRvbGVyYW5jZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIC8qIElmIGR1cmF0aW9uIGlzIG5vdCBkZWZpbmVkLCByZXR1cm4gdGhlIGFjdHVhbCB0aW1lIHJlcXVpcmVkIGZvciBjb21wbGV0aW5nIHRoaXMgYW5pbWF0aW9uLiBPdGhlcndpc2UsIHJldHVybiBhIGNsb3N1cmUgdGhhdCBob2xkcyB0aGVcbiAgICAgICBjb21wdXRlZCBwYXRoIGFuZCByZXR1cm5zIGEgc25hcHNob3Qgb2YgdGhlIHBvc2l0aW9uIGFjY29yZGluZyB0byBhIGdpdmVuIHBlcmNlbnRDb21wbGV0ZS4gKi9cblxuXG4gICAgcmV0dXJuICFoYXZlX2R1cmF0aW9uID8gdGltZV9sYXBzZWQgOiBmdW5jdGlvbiAocGVyY2VudENvbXBsZXRlKSB7XG4gICAgICByZXR1cm4gcGF0aFtwZXJjZW50Q29tcGxldGUgKiAocGF0aC5sZW5ndGggLSAxKSB8IDBdO1xuICAgIH07XG4gIH07XG59KCk7XG5cbnZhciBjdWJpY0JlemllciA9IGZ1bmN0aW9uIGN1YmljQmV6aWVyKHQxLCBwMSwgdDIsIHAyKSB7XG4gIHZhciBiZXppZXIgPSBnZW5lcmF0ZUN1YmljQmV6aWVyKHQxLCBwMSwgdDIsIHAyKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzdGFydCwgZW5kLCBwZXJjZW50KSB7XG4gICAgcmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIGJlemllcihwZXJjZW50KTtcbiAgfTtcbn07XG5cbnZhciBlYXNpbmdzID0ge1xuICAnbGluZWFyJzogZnVuY3Rpb24gbGluZWFyKHN0YXJ0LCBlbmQsIHBlcmNlbnQpIHtcbiAgICByZXR1cm4gc3RhcnQgKyAoZW5kIC0gc3RhcnQpICogcGVyY2VudDtcbiAgfSxcbiAgLy8gZGVmYXVsdCBlYXNpbmdzXG4gICdlYXNlJzogY3ViaWNCZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKSxcbiAgJ2Vhc2UtaW4nOiBjdWJpY0JlemllcigwLjQyLCAwLCAxLCAxKSxcbiAgJ2Vhc2Utb3V0JzogY3ViaWNCZXppZXIoMCwgMCwgMC41OCwgMSksXG4gICdlYXNlLWluLW91dCc6IGN1YmljQmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpLFxuICAvLyBzaW5lXG4gICdlYXNlLWluLXNpbmUnOiBjdWJpY0JlemllcigwLjQ3LCAwLCAwLjc0NSwgMC43MTUpLFxuICAnZWFzZS1vdXQtc2luZSc6IGN1YmljQmV6aWVyKDAuMzksIDAuNTc1LCAwLjU2NSwgMSksXG4gICdlYXNlLWluLW91dC1zaW5lJzogY3ViaWNCZXppZXIoMC40NDUsIDAuMDUsIDAuNTUsIDAuOTUpLFxuICAvLyBxdWFkXG4gICdlYXNlLWluLXF1YWQnOiBjdWJpY0JlemllcigwLjU1LCAwLjA4NSwgMC42OCwgMC41MyksXG4gICdlYXNlLW91dC1xdWFkJzogY3ViaWNCZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCksXG4gICdlYXNlLWluLW91dC1xdWFkJzogY3ViaWNCZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSksXG4gIC8vIGN1YmljXG4gICdlYXNlLWluLWN1YmljJzogY3ViaWNCZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KSxcbiAgJ2Vhc2Utb3V0LWN1YmljJzogY3ViaWNCZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKSxcbiAgJ2Vhc2UtaW4tb3V0LWN1YmljJzogY3ViaWNCZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSksXG4gIC8vIHF1YXJ0XG4gICdlYXNlLWluLXF1YXJ0JzogY3ViaWNCZXppZXIoMC44OTUsIDAuMDMsIDAuNjg1LCAwLjIyKSxcbiAgJ2Vhc2Utb3V0LXF1YXJ0JzogY3ViaWNCZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpLFxuICAnZWFzZS1pbi1vdXQtcXVhcnQnOiBjdWJpY0JlemllcigwLjc3LCAwLCAwLjE3NSwgMSksXG4gIC8vIHF1aW50XG4gICdlYXNlLWluLXF1aW50JzogY3ViaWNCZXppZXIoMC43NTUsIDAuMDUsIDAuODU1LCAwLjA2KSxcbiAgJ2Vhc2Utb3V0LXF1aW50JzogY3ViaWNCZXppZXIoMC4yMywgMSwgMC4zMiwgMSksXG4gICdlYXNlLWluLW91dC1xdWludCc6IGN1YmljQmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpLFxuICAvLyBleHBvXG4gICdlYXNlLWluLWV4cG8nOiBjdWJpY0JlemllcigwLjk1LCAwLjA1LCAwLjc5NSwgMC4wMzUpLFxuICAnZWFzZS1vdXQtZXhwbyc6IGN1YmljQmV6aWVyKDAuMTksIDEsIDAuMjIsIDEpLFxuICAnZWFzZS1pbi1vdXQtZXhwbyc6IGN1YmljQmV6aWVyKDEsIDAsIDAsIDEpLFxuICAvLyBjaXJjXG4gICdlYXNlLWluLWNpcmMnOiBjdWJpY0JlemllcigwLjYsIDAuMDQsIDAuOTgsIDAuMzM1KSxcbiAgJ2Vhc2Utb3V0LWNpcmMnOiBjdWJpY0JlemllcigwLjA3NSwgMC44MiwgMC4xNjUsIDEpLFxuICAnZWFzZS1pbi1vdXQtY2lyYyc6IGN1YmljQmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNSwgMC44NiksXG4gIC8vIHVzZXIgcGFyYW0gZWFzaW5ncy4uLlxuICAnc3ByaW5nJzogZnVuY3Rpb24gc3ByaW5nKHRlbnNpb24sIGZyaWN0aW9uLCBkdXJhdGlvbikge1xuICAgIGlmIChkdXJhdGlvbiA9PT0gMCkge1xuICAgICAgLy8gY2FuJ3QgZ2V0IGEgc3ByaW5nIHcvIGR1cmF0aW9uIDBcbiAgICAgIHJldHVybiBlYXNpbmdzLmxpbmVhcjsgLy8gZHVyYXRpb24gMCA9PiBqdW1wIHRvIGVuZCBzbyBpbXBsIGRvZXNuJ3QgbWF0dGVyXG4gICAgfVxuXG4gICAgdmFyIHNwcmluZyA9IGdlbmVyYXRlU3ByaW5nUks0KHRlbnNpb24sIGZyaWN0aW9uLCBkdXJhdGlvbik7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzdGFydCwgZW5kLCBwZXJjZW50KSB7XG4gICAgICByZXR1cm4gc3RhcnQgKyAoZW5kIC0gc3RhcnQpICogc3ByaW5nKHBlcmNlbnQpO1xuICAgIH07XG4gIH0sXG4gICdjdWJpYy1iZXppZXInOiBjdWJpY0JlemllclxufTtcblxuZnVuY3Rpb24gZ2V0RWFzZWRWYWx1ZSh0eXBlLCBzdGFydCwgZW5kLCBwZXJjZW50LCBlYXNpbmdGbikge1xuICBpZiAocGVyY2VudCA9PT0gMSkge1xuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICBpZiAoc3RhcnQgPT09IGVuZCkge1xuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICB2YXIgdmFsID0gZWFzaW5nRm4oc3RhcnQsIGVuZCwgcGVyY2VudCk7XG5cbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBpZiAodHlwZS5yb3VuZFZhbHVlIHx8IHR5cGUuY29sb3IpIHtcbiAgICB2YWwgPSBNYXRoLnJvdW5kKHZhbCk7XG4gIH1cblxuICBpZiAodHlwZS5taW4gIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbCA9IE1hdGgubWF4KHZhbCwgdHlwZS5taW4pO1xuICB9XG5cbiAgaWYgKHR5cGUubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YWwgPSBNYXRoLm1pbih2YWwsIHR5cGUubWF4KTtcbiAgfVxuXG4gIHJldHVybiB2YWw7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlKHByb3AsIHNwZWMpIHtcbiAgaWYgKHByb3AucGZWYWx1ZSAhPSBudWxsIHx8IHByb3AudmFsdWUgIT0gbnVsbCkge1xuICAgIGlmIChwcm9wLnBmVmFsdWUgIT0gbnVsbCAmJiAoc3BlYyA9PSBudWxsIHx8IHNwZWMudHlwZS51bml0cyAhPT0gJyUnKSkge1xuICAgICAgcmV0dXJuIHByb3AucGZWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByb3AudmFsdWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBwcm9wO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVhc2Uoc3RhcnRQcm9wLCBlbmRQcm9wLCBwZXJjZW50LCBlYXNpbmdGbiwgcHJvcFNwZWMpIHtcbiAgdmFyIHR5cGUgPSBwcm9wU3BlYyAhPSBudWxsID8gcHJvcFNwZWMudHlwZSA6IG51bGw7XG5cbiAgaWYgKHBlcmNlbnQgPCAwKSB7XG4gICAgcGVyY2VudCA9IDA7XG4gIH0gZWxzZSBpZiAocGVyY2VudCA+IDEpIHtcbiAgICBwZXJjZW50ID0gMTtcbiAgfVxuXG4gIHZhciBzdGFydCA9IGdldFZhbHVlKHN0YXJ0UHJvcCwgcHJvcFNwZWMpO1xuICB2YXIgZW5kID0gZ2V0VmFsdWUoZW5kUHJvcCwgcHJvcFNwZWMpO1xuXG4gIGlmIChudW1iZXIoc3RhcnQpICYmIG51bWJlcihlbmQpKSB7XG4gICAgcmV0dXJuIGdldEVhc2VkVmFsdWUodHlwZSwgc3RhcnQsIGVuZCwgcGVyY2VudCwgZWFzaW5nRm4pO1xuICB9IGVsc2UgaWYgKGFycmF5KHN0YXJ0KSAmJiBhcnJheShlbmQpKSB7XG4gICAgdmFyIGVhc2VkQXJyID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVuZC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNpID0gc3RhcnRbaV07XG4gICAgICB2YXIgZWkgPSBlbmRbaV07XG5cbiAgICAgIGlmIChzaSAhPSBudWxsICYmIGVpICE9IG51bGwpIHtcbiAgICAgICAgdmFyIHZhbCA9IGdldEVhc2VkVmFsdWUodHlwZSwgc2ksIGVpLCBwZXJjZW50LCBlYXNpbmdGbik7XG4gICAgICAgIGVhc2VkQXJyLnB1c2godmFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVhc2VkQXJyLnB1c2goZWkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlYXNlZEFycjtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHN0ZXAoc2VsZiwgYW5pLCBub3csIGlzQ29yZSkge1xuICB2YXIgaXNFbGVzID0gIWlzQ29yZTtcbiAgdmFyIF9wID0gc2VsZi5fcHJpdmF0ZTtcbiAgdmFyIGFuaV9wID0gYW5pLl9wcml2YXRlO1xuICB2YXIgcEVhc2luZyA9IGFuaV9wLmVhc2luZztcbiAgdmFyIHN0YXJ0VGltZSA9IGFuaV9wLnN0YXJ0VGltZTtcbiAgdmFyIGN5ID0gaXNDb3JlID8gc2VsZiA6IHNlbGYuY3koKTtcbiAgdmFyIHN0eWxlID0gY3kuc3R5bGUoKTtcblxuICBpZiAoIWFuaV9wLmVhc2luZ0ltcGwpIHtcbiAgICBpZiAocEVhc2luZyA9PSBudWxsKSB7XG4gICAgICAvLyB1c2UgZGVmYXVsdFxuICAgICAgYW5pX3AuZWFzaW5nSW1wbCA9IGVhc2luZ3NbJ2xpbmVhciddO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGVuIGRlZmluZSB3LyBuYW1lXG4gICAgICB2YXIgZWFzaW5nVmFscztcblxuICAgICAgaWYgKHN0cmluZyhwRWFzaW5nKSkge1xuICAgICAgICB2YXIgZWFzaW5nUHJvcCA9IHN0eWxlLnBhcnNlKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicsIHBFYXNpbmcpO1xuICAgICAgICBlYXNpbmdWYWxzID0gZWFzaW5nUHJvcC52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoZW4gYXNzdW1lIHByZXBhcnNlZCBhcnJheVxuICAgICAgICBlYXNpbmdWYWxzID0gcEVhc2luZztcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUsIGFyZ3M7XG5cbiAgICAgIGlmIChzdHJpbmcoZWFzaW5nVmFscykpIHtcbiAgICAgICAgbmFtZSA9IGVhc2luZ1ZhbHM7XG4gICAgICAgIGFyZ3MgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5hbWUgPSBlYXNpbmdWYWxzWzFdO1xuICAgICAgICBhcmdzID0gZWFzaW5nVmFscy5zbGljZSgyKS5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICByZXR1cm4gK247XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIGNyZWF0ZSB3aXRoIGFyZ3NcbiAgICAgICAgaWYgKG5hbWUgPT09ICdzcHJpbmcnKSB7XG4gICAgICAgICAgYXJncy5wdXNoKGFuaV9wLmR1cmF0aW9uKTsgLy8gbmVlZCBkdXJhdGlvbiB0byBnZW5lcmF0ZSBzcHJpbmdcbiAgICAgICAgfVxuXG4gICAgICAgIGFuaV9wLmVhc2luZ0ltcGwgPSBlYXNpbmdzW25hbWVdLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc3RhdGljIGltcGwgYnkgbmFtZVxuICAgICAgICBhbmlfcC5lYXNpbmdJbXBsID0gZWFzaW5nc1tuYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgZWFzaW5nID0gYW5pX3AuZWFzaW5nSW1wbDtcbiAgdmFyIHBlcmNlbnQ7XG5cbiAgaWYgKGFuaV9wLmR1cmF0aW9uID09PSAwKSB7XG4gICAgcGVyY2VudCA9IDE7XG4gIH0gZWxzZSB7XG4gICAgcGVyY2VudCA9IChub3cgLSBzdGFydFRpbWUpIC8gYW5pX3AuZHVyYXRpb247XG4gIH1cblxuICBpZiAoYW5pX3AuYXBwbHlpbmcpIHtcbiAgICBwZXJjZW50ID0gYW5pX3AucHJvZ3Jlc3M7XG4gIH1cblxuICBpZiAocGVyY2VudCA8IDApIHtcbiAgICBwZXJjZW50ID0gMDtcbiAgfSBlbHNlIGlmIChwZXJjZW50ID4gMSkge1xuICAgIHBlcmNlbnQgPSAxO1xuICB9XG5cbiAgaWYgKGFuaV9wLmRlbGF5ID09IG51bGwpIHtcbiAgICAvLyB0aGVuIHVwZGF0ZVxuICAgIHZhciBzdGFydFBvcyA9IGFuaV9wLnN0YXJ0UG9zaXRpb247XG4gICAgdmFyIGVuZFBvcyA9IGFuaV9wLnBvc2l0aW9uO1xuXG4gICAgaWYgKGVuZFBvcyAmJiBpc0VsZXMgJiYgIXNlbGYubG9ja2VkKCkpIHtcbiAgICAgIHZhciBuZXdQb3MgPSB7fTtcblxuICAgICAgaWYgKHZhbGlkKHN0YXJ0UG9zLngsIGVuZFBvcy54KSkge1xuICAgICAgICBuZXdQb3MueCA9IGVhc2Uoc3RhcnRQb3MueCwgZW5kUG9zLngsIHBlcmNlbnQsIGVhc2luZyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZChzdGFydFBvcy55LCBlbmRQb3MueSkpIHtcbiAgICAgICAgbmV3UG9zLnkgPSBlYXNlKHN0YXJ0UG9zLnksIGVuZFBvcy55LCBwZXJjZW50LCBlYXNpbmcpO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnBvc2l0aW9uKG5ld1Bvcyk7XG4gICAgfVxuXG4gICAgdmFyIHN0YXJ0UGFuID0gYW5pX3Auc3RhcnRQYW47XG4gICAgdmFyIGVuZFBhbiA9IGFuaV9wLnBhbjtcbiAgICB2YXIgcGFuID0gX3AucGFuO1xuICAgIHZhciBhbmltYXRpbmdQYW4gPSBlbmRQYW4gIT0gbnVsbCAmJiBpc0NvcmU7XG5cbiAgICBpZiAoYW5pbWF0aW5nUGFuKSB7XG4gICAgICBpZiAodmFsaWQoc3RhcnRQYW4ueCwgZW5kUGFuLngpKSB7XG4gICAgICAgIHBhbi54ID0gZWFzZShzdGFydFBhbi54LCBlbmRQYW4ueCwgcGVyY2VudCwgZWFzaW5nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkKHN0YXJ0UGFuLnksIGVuZFBhbi55KSkge1xuICAgICAgICBwYW4ueSA9IGVhc2Uoc3RhcnRQYW4ueSwgZW5kUGFuLnksIHBlcmNlbnQsIGVhc2luZyk7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuZW1pdCgncGFuJyk7XG4gICAgfVxuXG4gICAgdmFyIHN0YXJ0Wm9vbSA9IGFuaV9wLnN0YXJ0Wm9vbTtcbiAgICB2YXIgZW5kWm9vbSA9IGFuaV9wLnpvb207XG4gICAgdmFyIGFuaW1hdGluZ1pvb20gPSBlbmRab29tICE9IG51bGwgJiYgaXNDb3JlO1xuXG4gICAgaWYgKGFuaW1hdGluZ1pvb20pIHtcbiAgICAgIGlmICh2YWxpZChzdGFydFpvb20sIGVuZFpvb20pKSB7XG4gICAgICAgIF9wLnpvb20gPSBib3VuZChfcC5taW5ab29tLCBlYXNlKHN0YXJ0Wm9vbSwgZW5kWm9vbSwgcGVyY2VudCwgZWFzaW5nKSwgX3AubWF4Wm9vbSk7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuZW1pdCgnem9vbScpO1xuICAgIH1cblxuICAgIGlmIChhbmltYXRpbmdQYW4gfHwgYW5pbWF0aW5nWm9vbSkge1xuICAgICAgc2VsZi5lbWl0KCd2aWV3cG9ydCcpO1xuICAgIH1cblxuICAgIHZhciBwcm9wcyA9IGFuaV9wLnN0eWxlO1xuXG4gICAgaWYgKHByb3BzICYmIHByb3BzLmxlbmd0aCA+IDAgJiYgaXNFbGVzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwcm9wID0gcHJvcHNbaV07XG4gICAgICAgIHZhciBfbmFtZSA9IHByb3AubmFtZTtcbiAgICAgICAgdmFyIGVuZCA9IHByb3A7XG4gICAgICAgIHZhciBzdGFydCA9IGFuaV9wLnN0YXJ0U3R5bGVbX25hbWVdO1xuICAgICAgICB2YXIgcHJvcFNwZWMgPSBzdHlsZS5wcm9wZXJ0aWVzW3N0YXJ0Lm5hbWVdO1xuICAgICAgICB2YXIgZWFzZWRWYWwgPSBlYXNlKHN0YXJ0LCBlbmQsIHBlcmNlbnQsIGVhc2luZywgcHJvcFNwZWMpO1xuICAgICAgICBzdHlsZS5vdmVycmlkZUJ5cGFzcyhzZWxmLCBfbmFtZSwgZWFzZWRWYWwpO1xuICAgICAgfSAvLyBmb3IgcHJvcHNcblxuXG4gICAgICBzZWxmLmVtaXQoJ3N0eWxlJyk7XG4gICAgfSAvLyBpZlxuXG4gIH1cblxuICBhbmlfcC5wcm9ncmVzcyA9IHBlcmNlbnQ7XG4gIHJldHVybiBwZXJjZW50O1xufVxuXG5mdW5jdGlvbiB2YWxpZChzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PSBudWxsIHx8IGVuZCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKG51bWJlcihzdGFydCkgJiYgbnVtYmVyKGVuZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc3RhcnRBbmltYXRpb24oc2VsZiwgYW5pLCBub3csIGlzQ29yZSkge1xuICB2YXIgYW5pX3AgPSBhbmkuX3ByaXZhdGU7XG4gIGFuaV9wLnN0YXJ0ZWQgPSB0cnVlO1xuICBhbmlfcC5zdGFydFRpbWUgPSBub3cgLSBhbmlfcC5wcm9ncmVzcyAqIGFuaV9wLmR1cmF0aW9uO1xufVxuXG5mdW5jdGlvbiBzdGVwQWxsKG5vdywgY3kpIHtcbiAgdmFyIGVsZXMgPSBjeS5fcHJpdmF0ZS5hbmlFbGVzO1xuICB2YXIgZG9uZUVsZXMgPSBbXTtcblxuICBmdW5jdGlvbiBzdGVwT25lKGVsZSwgaXNDb3JlKSB7XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciBjdXJyZW50ID0gX3AuYW5pbWF0aW9uLmN1cnJlbnQ7XG4gICAgdmFyIHF1ZXVlID0gX3AuYW5pbWF0aW9uLnF1ZXVlO1xuICAgIHZhciByYW5BbmlzID0gZmFsc2U7IC8vIGlmIG5vdGhpbmcgY3VycmVudGx5IGFuaW1hdGluZywgZ2V0IHNvbWV0aGluZyBmcm9tIHRoZSBxdWV1ZVxuXG4gICAgaWYgKGN1cnJlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YXIgbmV4dCA9IHF1ZXVlLnNoaWZ0KCk7XG5cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIGN1cnJlbnQucHVzaChuZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY2FsbGJhY2tzID0gZnVuY3Rpb24gY2FsbGJhY2tzKF9jYWxsYmFja3MpIHtcbiAgICAgIGZvciAodmFyIGogPSBfY2FsbGJhY2tzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBjYiA9IF9jYWxsYmFja3Nbal07XG4gICAgICAgIGNiKCk7XG4gICAgICB9XG5cbiAgICAgIF9jYWxsYmFja3Muc3BsaWNlKDAsIF9jYWxsYmFja3MubGVuZ3RoKTtcbiAgICB9OyAvLyBzdGVwIGFuZCByZW1vdmUgaWYgZG9uZVxuXG5cbiAgICBmb3IgKHZhciBpID0gY3VycmVudC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGFuaSA9IGN1cnJlbnRbaV07XG4gICAgICB2YXIgYW5pX3AgPSBhbmkuX3ByaXZhdGU7XG5cbiAgICAgIGlmIChhbmlfcC5zdG9wcGVkKSB7XG4gICAgICAgIGN1cnJlbnQuc3BsaWNlKGksIDEpO1xuICAgICAgICBhbmlfcC5ob29rZWQgPSBmYWxzZTtcbiAgICAgICAgYW5pX3AucGxheWluZyA9IGZhbHNlO1xuICAgICAgICBhbmlfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIGNhbGxiYWNrcyhhbmlfcC5mcmFtZXMpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFhbmlfcC5wbGF5aW5nICYmICFhbmlfcC5hcHBseWluZykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gYW4gYXBwbHkoKSB3aGlsZSBwbGF5aW5nIHNob3VsZG4ndCBkbyBhbnl0aGluZ1xuXG5cbiAgICAgIGlmIChhbmlfcC5wbGF5aW5nICYmIGFuaV9wLmFwcGx5aW5nKSB7XG4gICAgICAgIGFuaV9wLmFwcGx5aW5nID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghYW5pX3Auc3RhcnRlZCkge1xuICAgICAgICBzdGFydEFuaW1hdGlvbihlbGUsIGFuaSwgbm93KTtcbiAgICAgIH1cblxuICAgICAgc3RlcChlbGUsIGFuaSwgbm93LCBpc0NvcmUpO1xuXG4gICAgICBpZiAoYW5pX3AuYXBwbHlpbmcpIHtcbiAgICAgICAgYW5pX3AuYXBwbHlpbmcgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2tzKGFuaV9wLmZyYW1lcyk7XG5cbiAgICAgIGlmIChhbmlfcC5zdGVwICE9IG51bGwpIHtcbiAgICAgICAgYW5pX3Auc3RlcChub3cpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYW5pLmNvbXBsZXRlZCgpKSB7XG4gICAgICAgIGN1cnJlbnQuc3BsaWNlKGksIDEpO1xuICAgICAgICBhbmlfcC5ob29rZWQgPSBmYWxzZTtcbiAgICAgICAgYW5pX3AucGxheWluZyA9IGZhbHNlO1xuICAgICAgICBhbmlfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIGNhbGxiYWNrcyhhbmlfcC5jb21wbGV0ZXMpO1xuICAgICAgfVxuXG4gICAgICByYW5BbmlzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzQ29yZSAmJiBjdXJyZW50Lmxlbmd0aCA9PT0gMCAmJiBxdWV1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIGRvbmVFbGVzLnB1c2goZWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmFuQW5pcztcbiAgfSAvLyBzdGVwRWxlbWVudFxuICAvLyBoYW5kbGUgYWxsIGVsZXNcblxuXG4gIHZhciByYW5FbGVBbmkgPSBmYWxzZTtcblxuICBmb3IgKHZhciBlID0gMDsgZSA8IGVsZXMubGVuZ3RoOyBlKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tlXTtcbiAgICB2YXIgaGFuZGxlZFRoaXNFbGUgPSBzdGVwT25lKGVsZSk7XG4gICAgcmFuRWxlQW5pID0gcmFuRWxlQW5pIHx8IGhhbmRsZWRUaGlzRWxlO1xuICB9IC8vIGVhY2ggZWxlbWVudFxuXG5cbiAgdmFyIHJhbkNvcmVBbmkgPSBzdGVwT25lKGN5LCB0cnVlKTsgLy8gbm90aWZ5IHJlbmRlcmVyXG5cbiAgaWYgKHJhbkVsZUFuaSB8fCByYW5Db3JlQW5pKSB7XG4gICAgaWYgKGVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY3kubm90aWZ5KCdkcmF3JywgZWxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN5Lm5vdGlmeSgnZHJhdycpO1xuICAgIH1cbiAgfSAvLyByZW1vdmUgZWxlbWVudHMgZnJvbSBsaXN0IG9mIGN1cnJlbnRseSBhbmltYXRpbmcgaWYgaXRzIHF1ZXVlcyBhcmUgZW1wdHlcblxuXG4gIGVsZXMudW5tZXJnZShkb25lRWxlcyk7XG4gIGN5LmVtaXQoJ3N0ZXAnKTtcbn0gLy8gc3RlcEFsbFxuXG52YXIgY29yZWZuJDEgPSB7XG4gIC8vIHB1bGwgaW4gYW5pbWF0aW9uIGZ1bmN0aW9uc1xuICBhbmltYXRlOiBkZWZpbmUkMy5hbmltYXRlKCksXG4gIGFuaW1hdGlvbjogZGVmaW5lJDMuYW5pbWF0aW9uKCksXG4gIGFuaW1hdGVkOiBkZWZpbmUkMy5hbmltYXRlZCgpLFxuICBjbGVhclF1ZXVlOiBkZWZpbmUkMy5jbGVhclF1ZXVlKCksXG4gIGRlbGF5OiBkZWZpbmUkMy5kZWxheSgpLFxuICBkZWxheUFuaW1hdGlvbjogZGVmaW5lJDMuZGVsYXlBbmltYXRpb24oKSxcbiAgc3RvcDogZGVmaW5lJDMuc3RvcCgpLFxuICBhZGRUb0FuaW1hdGlvblBvb2w6IGZ1bmN0aW9uIGFkZFRvQW5pbWF0aW9uUG9vbChlbGVzKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gbm8gc3R5bGUgdXNlZFxuXG5cbiAgICBjeS5fcHJpdmF0ZS5hbmlFbGVzLm1lcmdlKGVsZXMpO1xuICB9LFxuICBzdG9wQW5pbWF0aW9uTG9vcDogZnVuY3Rpb24gc3RvcEFuaW1hdGlvbkxvb3AoKSB7XG4gICAgdGhpcy5fcHJpdmF0ZS5hbmltYXRpb25zUnVubmluZyA9IGZhbHNlO1xuICB9LFxuICBzdGFydEFuaW1hdGlvbkxvb3A6IGZ1bmN0aW9uIHN0YXJ0QW5pbWF0aW9uTG9vcCgpIHtcbiAgICB2YXIgY3kgPSB0aGlzO1xuICAgIGN5Ll9wcml2YXRlLmFuaW1hdGlvbnNSdW5uaW5nID0gdHJ1ZTtcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gbm8gc3R5bGUgdXNlZFxuICAgIC8vIE5CIHRoZSBhbmltYXRpb24gbG9vcCB3aWxsIGV4ZWMgaW4gaGVhZGxlc3MgZW52aXJvbm1lbnRzIGlmIHN0eWxlIGVuYWJsZWRcbiAgICAvLyBhbmQgZXhwbGljaXQgY3kuZGVzdHJveSgpIGlzIG5lY2Vzc2FyeSB0byBzdG9wIHRoZSBsb29wXG5cblxuICAgIGZ1bmN0aW9uIGhlYWRsZXNzU3RlcCgpIHtcbiAgICAgIGlmICghY3kuX3ByaXZhdGUuYW5pbWF0aW9uc1J1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gYW5pbWF0aW9uU3RlcChub3cpIHtcbiAgICAgICAgc3RlcEFsbChub3csIGN5KTtcbiAgICAgICAgaGVhZGxlc3NTdGVwKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgcmVuZGVyZXIgPSBjeS5yZW5kZXJlcigpO1xuXG4gICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLmJlZm9yZVJlbmRlcikge1xuICAgICAgLy8gbGV0IHRoZSByZW5kZXJlciBzY2hlZHVsZSBhbmltYXRpb25zXG4gICAgICByZW5kZXJlci5iZWZvcmVSZW5kZXIoZnVuY3Rpb24gcmVuZGVyZXJBbmltYXRpb25TdGVwKHdpbGxEcmF3LCBub3cpIHtcbiAgICAgICAgc3RlcEFsbChub3csIGN5KTtcbiAgICAgIH0sIHJlbmRlcmVyLmJlZm9yZVJlbmRlclByaW9yaXRpZXMuYW5pbWF0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG1hbmFnZSB0aGUgYW5pbWF0aW9uIGxvb3Agb3Vyc2VsdmVzXG4gICAgICBoZWFkbGVzc1N0ZXAoKTsgLy8gZmlyc3QgY2FsbFxuICAgIH1cbiAgfVxufTtcblxudmFyIGVtaXR0ZXJPcHRpb25zJDEgPSB7XG4gIHF1YWxpZmllckNvbXBhcmU6IGZ1bmN0aW9uIHF1YWxpZmllckNvbXBhcmUoc2VsZWN0b3IxLCBzZWxlY3RvcjIpIHtcbiAgICBpZiAoc2VsZWN0b3IxID09IG51bGwgfHwgc2VsZWN0b3IyID09IG51bGwpIHtcbiAgICAgIHJldHVybiBzZWxlY3RvcjEgPT0gbnVsbCAmJiBzZWxlY3RvcjIgPT0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHNlbGVjdG9yMS5zYW1lVGV4dChzZWxlY3RvcjIpO1xuICAgIH1cbiAgfSxcbiAgZXZlbnRNYXRjaGVzOiBmdW5jdGlvbiBldmVudE1hdGNoZXMoY3ksIGxpc3RlbmVyLCBldmVudE9iaikge1xuICAgIHZhciBzZWxlY3RvciA9IGxpc3RlbmVyLnF1YWxpZmllcjtcblxuICAgIGlmIChzZWxlY3RvciAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gY3kgIT09IGV2ZW50T2JqLnRhcmdldCAmJiBlbGVtZW50KGV2ZW50T2JqLnRhcmdldCkgJiYgc2VsZWN0b3IubWF0Y2hlcyhldmVudE9iai50YXJnZXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBhZGRFdmVudEZpZWxkczogZnVuY3Rpb24gYWRkRXZlbnRGaWVsZHMoY3ksIGV2dCkge1xuICAgIGV2dC5jeSA9IGN5O1xuICAgIGV2dC50YXJnZXQgPSBjeTtcbiAgfSxcbiAgY2FsbGJhY2tDb250ZXh0OiBmdW5jdGlvbiBjYWxsYmFja0NvbnRleHQoY3ksIGxpc3RlbmVyLCBldmVudE9iaikge1xuICAgIHJldHVybiBsaXN0ZW5lci5xdWFsaWZpZXIgIT0gbnVsbCA/IGV2ZW50T2JqLnRhcmdldCA6IGN5O1xuICB9XG59O1xuXG52YXIgYXJnU2VsZWN0b3IkMSA9IGZ1bmN0aW9uIGFyZ1NlbGVjdG9yKGFyZykge1xuICBpZiAoc3RyaW5nKGFyZykpIHtcbiAgICByZXR1cm4gbmV3IFNlbGVjdG9yKGFyZyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGFyZztcbiAgfVxufTtcblxudmFyIGVsZXNmbiR2ID0ge1xuICBjcmVhdGVFbWl0dGVyOiBmdW5jdGlvbiBjcmVhdGVFbWl0dGVyKCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoIV9wLmVtaXR0ZXIpIHtcbiAgICAgIF9wLmVtaXR0ZXIgPSBuZXcgRW1pdHRlcihlbWl0dGVyT3B0aW9ucyQxLCB0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZW1pdHRlcjogZnVuY3Rpb24gZW1pdHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbWl0dGVyO1xuICB9LFxuICBvbjogZnVuY3Rpb24gb24oZXZlbnRzLCBzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICB0aGlzLmVtaXR0ZXIoKS5vbihldmVudHMsIGFyZ1NlbGVjdG9yJDEoc2VsZWN0b3IpLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJlbW92ZUxpc3RlbmVyOiBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZW1pdHRlcigpLnJlbW92ZUxpc3RlbmVyKGV2ZW50cywgYXJnU2VsZWN0b3IkMShzZWxlY3RvciksIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcmVtb3ZlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy5lbWl0dGVyKCkucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIG9uZTogZnVuY3Rpb24gb25lKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5lbWl0dGVyKCkub25lKGV2ZW50cywgYXJnU2VsZWN0b3IkMShzZWxlY3RvciksIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgb25jZTogZnVuY3Rpb24gb25jZShldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZW1pdHRlcigpLm9uZShldmVudHMsIGFyZ1NlbGVjdG9yJDEoc2VsZWN0b3IpLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGVtaXQ6IGZ1bmN0aW9uIGVtaXQoZXZlbnRzLCBleHRyYVBhcmFtcykge1xuICAgIHRoaXMuZW1pdHRlcigpLmVtaXQoZXZlbnRzLCBleHRyYVBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGVtaXRBbmROb3RpZnk6IGZ1bmN0aW9uIGVtaXRBbmROb3RpZnkoZXZlbnQsIGVsZXMpIHtcbiAgICB0aGlzLmVtaXQoZXZlbnQpO1xuICAgIHRoaXMubm90aWZ5KGV2ZW50LCBlbGVzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufTtcbmRlZmluZSQzLmV2ZW50QWxpYXNlc09uKGVsZXNmbiR2KTtcblxudmFyIGNvcmVmbiQyID0ge1xuICBwbmc6IGZ1bmN0aW9uIHBuZyhvcHRpb25zKSB7XG4gICAgdmFyIHJlbmRlcmVyID0gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICByZXR1cm4gcmVuZGVyZXIucG5nKG9wdGlvbnMpO1xuICB9LFxuICBqcGc6IGZ1bmN0aW9uIGpwZyhvcHRpb25zKSB7XG4gICAgdmFyIHJlbmRlcmVyID0gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLmJnID0gb3B0aW9ucy5iZyB8fCAnI2ZmZic7XG4gICAgcmV0dXJuIHJlbmRlcmVyLmpwZyhvcHRpb25zKTtcbiAgfVxufTtcbmNvcmVmbiQyLmpwZWcgPSBjb3JlZm4kMi5qcGc7XG5cbnZhciBjb3JlZm4kMyA9IHtcbiAgbGF5b3V0OiBmdW5jdGlvbiBsYXlvdXQob3B0aW9ucykge1xuICAgIHZhciBjeSA9IHRoaXM7XG5cbiAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgICBlcnJvcignTGF5b3V0IG9wdGlvbnMgbXVzdCBiZSBzcGVjaWZpZWQgdG8gbWFrZSBhIGxheW91dCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm5hbWUgPT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ0EgYG5hbWVgIG11c3QgYmUgc3BlY2lmaWVkIHRvIG1ha2UgYSBsYXlvdXQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IG9wdGlvbnMubmFtZTtcbiAgICB2YXIgTGF5b3V0ID0gY3kuZXh0ZW5zaW9uKCdsYXlvdXQnLCBuYW1lKTtcblxuICAgIGlmIChMYXlvdXQgPT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ05vIHN1Y2ggbGF5b3V0IGAnICsgbmFtZSArICdgIGZvdW5kLiAgRGlkIHlvdSBmb3JnZXQgdG8gaW1wb3J0IGl0IGFuZCBgY3l0b3NjYXBlLnVzZSgpYCBpdD8nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZWxlcztcblxuICAgIGlmIChzdHJpbmcob3B0aW9ucy5lbGVzKSkge1xuICAgICAgZWxlcyA9IGN5LiQob3B0aW9ucy5lbGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlcyA9IG9wdGlvbnMuZWxlcyAhPSBudWxsID8gb3B0aW9ucy5lbGVzIDogY3kuJCgpO1xuICAgIH1cblxuICAgIHZhciBsYXlvdXQgPSBuZXcgTGF5b3V0KGV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgY3k6IGN5LFxuICAgICAgZWxlczogZWxlc1xuICAgIH0pKTtcbiAgICByZXR1cm4gbGF5b3V0O1xuICB9XG59O1xuY29yZWZuJDMuY3JlYXRlTGF5b3V0ID0gY29yZWZuJDMubWFrZUxheW91dCA9IGNvcmVmbiQzLmxheW91dDtcblxudmFyIGNvcmVmbiQ0ID0ge1xuICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeShldmVudE5hbWUsIGV2ZW50RWxlcykge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAodGhpcy5iYXRjaGluZygpKSB7XG4gICAgICBfcC5iYXRjaE5vdGlmaWNhdGlvbnMgPSBfcC5iYXRjaE5vdGlmaWNhdGlvbnMgfHwge307XG4gICAgICB2YXIgZWxlcyA9IF9wLmJhdGNoTm90aWZpY2F0aW9uc1tldmVudE5hbWVdID0gX3AuYmF0Y2hOb3RpZmljYXRpb25zW2V2ZW50TmFtZV0gfHwgdGhpcy5jb2xsZWN0aW9uKCk7XG5cbiAgICAgIGlmIChldmVudEVsZXMgIT0gbnVsbCkge1xuICAgICAgICBlbGVzLm1lcmdlKGV2ZW50RWxlcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjsgLy8gbm90aWZpY2F0aW9ucyBhcmUgZGlzYWJsZWQgZHVyaW5nIGJhdGNoaW5nXG4gICAgfVxuXG4gICAgaWYgKCFfcC5ub3RpZmljYXRpb25zRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gZXhpdCBvbiBkaXNhYmxlZFxuXG5cbiAgICB2YXIgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyKCk7IC8vIGV4aXQgaWYgZGVzdHJveSgpIGNhbGxlZCBvbiBjb3JlIG9yIHJlbmRlcmVyIGluIGJldHdlZW4gZnJhbWVzICMxNDk5ICMxNTI4XG5cbiAgICBpZiAodGhpcy5kZXN0cm95ZWQoKSB8fCAhcmVuZGVyZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZW5kZXJlci5ub3RpZnkoZXZlbnROYW1lLCBldmVudEVsZXMpO1xuICB9LFxuICBub3RpZmljYXRpb25zOiBmdW5jdGlvbiBub3RpZmljYXRpb25zKGJvb2wpIHtcbiAgICB2YXIgcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoYm9vbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcC5ub3RpZmljYXRpb25zRW5hYmxlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcC5ub3RpZmljYXRpb25zRW5hYmxlZCA9IGJvb2wgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIG5vTm90aWZpY2F0aW9uczogZnVuY3Rpb24gbm9Ob3RpZmljYXRpb25zKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zKGZhbHNlKTtcbiAgICBjYWxsYmFjaygpO1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyh0cnVlKTtcbiAgfSxcbiAgYmF0Y2hpbmc6IGZ1bmN0aW9uIGJhdGNoaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmJhdGNoQ291bnQgPiAwO1xuICB9LFxuICBzdGFydEJhdGNoOiBmdW5jdGlvbiBzdGFydEJhdGNoKCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoX3AuYmF0Y2hDb3VudCA9PSBudWxsKSB7XG4gICAgICBfcC5iYXRjaENvdW50ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoX3AuYmF0Y2hDb3VudCA9PT0gMCkge1xuICAgICAgX3AuYmF0Y2hTdHlsZUVsZXMgPSB0aGlzLmNvbGxlY3Rpb24oKTtcbiAgICAgIF9wLmJhdGNoTm90aWZpY2F0aW9ucyA9IHt9O1xuICAgIH1cblxuICAgIF9wLmJhdGNoQ291bnQrKztcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZW5kQmF0Y2g6IGZ1bmN0aW9uIGVuZEJhdGNoKCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoX3AuYmF0Y2hDb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgX3AuYmF0Y2hDb3VudC0tO1xuXG4gICAgaWYgKF9wLmJhdGNoQ291bnQgPT09IDApIHtcbiAgICAgIC8vIHVwZGF0ZSBzdHlsZSBmb3IgZGlydHkgZWxlc1xuICAgICAgX3AuYmF0Y2hTdHlsZUVsZXMudXBkYXRlU3R5bGUoKTtcblxuICAgICAgdmFyIHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcigpOyAvLyBub3RpZnkgdGhlIHJlbmRlcmVyIG9mIHF1ZXVlZCBlbGVzIGFuZCBldmVudCB0eXBlc1xuXG4gICAgICBPYmplY3Qua2V5cyhfcC5iYXRjaE5vdGlmaWNhdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICB2YXIgZWxlcyA9IF9wLmJhdGNoTm90aWZpY2F0aW9uc1tldmVudE5hbWVdO1xuXG4gICAgICAgIGlmIChlbGVzLmVtcHR5KCkpIHtcbiAgICAgICAgICByZW5kZXJlci5ub3RpZnkoZXZlbnROYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW5kZXJlci5ub3RpZnkoZXZlbnROYW1lLCBlbGVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGJhdGNoOiBmdW5jdGlvbiBiYXRjaChjYWxsYmFjaykge1xuICAgIHRoaXMuc3RhcnRCYXRjaCgpO1xuICAgIGNhbGxiYWNrKCk7XG4gICAgdGhpcy5lbmRCYXRjaCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgYmF0Y2hEYXRhOiBmdW5jdGlvbiBiYXRjaERhdGEobWFwKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICByZXR1cm4gdGhpcy5iYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgaWRzID0gT2JqZWN0LmtleXMobWFwKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGlkID0gaWRzW2ldO1xuICAgICAgICB2YXIgZGF0YSA9IG1hcFtpZF07XG4gICAgICAgIHZhciBlbGUgPSBjeS5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgIGVsZS5kYXRhKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuXG52YXIgcmVuZGVyZXJEZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgaGlkZUVkZ2VzT25WaWV3cG9ydDogZmFsc2UsXG4gIHRleHR1cmVPblZpZXdwb3J0OiBmYWxzZSxcbiAgbW90aW9uQmx1cjogZmFsc2UsXG4gIG1vdGlvbkJsdXJPcGFjaXR5OiAwLjA1LFxuICBwaXhlbFJhdGlvOiB1bmRlZmluZWQsXG4gIGRlc2t0b3BUYXBUaHJlc2hvbGQ6IDQsXG4gIHRvdWNoVGFwVGhyZXNob2xkOiA4LFxuICB3aGVlbFNlbnNpdGl2aXR5OiAxLFxuICBkZWJ1ZzogZmFsc2UsXG4gIHNob3dGcHM6IGZhbHNlXG59KTtcbnZhciBjb3JlZm4kNSA9IHtcbiAgcmVuZGVyVG86IGZ1bmN0aW9uIHJlbmRlclRvKGNvbnRleHQsIHpvb20sIHBhbiwgcHhSYXRpbykge1xuICAgIHZhciByID0gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICByLnJlbmRlclRvKGNvbnRleHQsIHpvb20sIHBhbiwgcHhSYXRpbyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJlbmRlcmVyOiBmdW5jdGlvbiByZW5kZXJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgfSxcbiAgZm9yY2VSZW5kZXI6IGZ1bmN0aW9uIGZvcmNlUmVuZGVyKCkge1xuICAgIHRoaXMubm90aWZ5KCdkcmF3Jyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJlc2l6ZTogZnVuY3Rpb24gcmVzaXplKCkge1xuICAgIHRoaXMuaW52YWxpZGF0ZVNpemUoKTtcbiAgICB0aGlzLmVtaXRBbmROb3RpZnkoJ3Jlc2l6ZScpO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBpbml0UmVuZGVyZXI6IGZ1bmN0aW9uIGluaXRSZW5kZXJlcihvcHRpb25zKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICB2YXIgUmVuZGVyZXJQcm90byA9IGN5LmV4dGVuc2lvbigncmVuZGVyZXInLCBvcHRpb25zLm5hbWUpO1xuXG4gICAgaWYgKFJlbmRlcmVyUHJvdG8gPT0gbnVsbCkge1xuICAgICAgZXJyb3IoXCJDYW4gbm90IGluaXRpYWxpc2U6IE5vIHN1Y2ggcmVuZGVyZXIgYFwiLmNvbmNhdChvcHRpb25zLm5hbWUsIFwiYCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gaW1wb3J0IGl0IGFuZCBgY3l0b3NjYXBlLnVzZSgpYCBpdD9cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLndoZWVsU2Vuc2l0aXZpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd2FybihcIllvdSBoYXZlIHNldCBhIGN1c3RvbSB3aGVlbCBzZW5zaXRpdml0eS4gIFRoaXMgd2lsbCBtYWtlIHlvdXIgYXBwIHpvb20gdW5uYXR1cmFsbHkgd2hlbiB1c2luZyBtYWluc3RyZWFtIG1pY2UuICBZb3Ugc2hvdWxkIGNoYW5nZSB0aGlzIHZhbHVlIGZyb20gdGhlIGRlZmF1bHQgb25seSBpZiB5b3UgY2FuIGd1YXJhbnRlZSB0aGF0IGFsbCB5b3VyIHVzZXJzIHdpbGwgdXNlIHRoZSBzYW1lIGhhcmR3YXJlIGFuZCBPUyBjb25maWd1cmF0aW9uIGFzIHlvdXIgY3VycmVudCBtYWNoaW5lLlwiKTtcbiAgICB9XG5cbiAgICB2YXIgck9wdHMgPSByZW5kZXJlckRlZmF1bHRzKG9wdGlvbnMpO1xuICAgIHJPcHRzLmN5ID0gY3k7XG4gICAgY3kuX3ByaXZhdGUucmVuZGVyZXIgPSBuZXcgUmVuZGVyZXJQcm90byhyT3B0cyk7XG4gICAgdGhpcy5ub3RpZnkoJ2luaXQnKTtcbiAgfSxcbiAgZGVzdHJveVJlbmRlcmVyOiBmdW5jdGlvbiBkZXN0cm95UmVuZGVyZXIoKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICBjeS5ub3RpZnkoJ2Rlc3Ryb3knKTsgLy8gZGVzdHJveSB0aGUgcmVuZGVyZXJcblxuICAgIHZhciBkb21FbGUgPSBjeS5jb250YWluZXIoKTtcblxuICAgIGlmIChkb21FbGUpIHtcbiAgICAgIGRvbUVsZS5fY3lyZWcgPSBudWxsO1xuXG4gICAgICB3aGlsZSAoZG9tRWxlLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBkb21FbGUucmVtb3ZlQ2hpbGQoZG9tRWxlLmNoaWxkTm9kZXNbMF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN5Ll9wcml2YXRlLnJlbmRlcmVyID0gbnVsbDsgLy8gdG8gYmUgZXh0cmEgc2FmZSwgcmVtb3ZlIHRoZSByZWZcblxuICAgIGN5Lm11dGFibGVFbGVtZW50cygpLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgX3AucnNjcmF0Y2ggPSB7fTtcbiAgICAgIF9wLnJzdHlsZSA9IHt9O1xuICAgICAgX3AuYW5pbWF0aW9uLmN1cnJlbnQgPSBbXTtcbiAgICAgIF9wLmFuaW1hdGlvbi5xdWV1ZSA9IFtdO1xuICAgIH0pO1xuICB9LFxuICBvblJlbmRlcjogZnVuY3Rpb24gb25SZW5kZXIoZm4pIHtcbiAgICByZXR1cm4gdGhpcy5vbigncmVuZGVyJywgZm4pO1xuICB9LFxuICBvZmZSZW5kZXI6IGZ1bmN0aW9uIG9mZlJlbmRlcihmbikge1xuICAgIHJldHVybiB0aGlzLm9mZigncmVuZGVyJywgZm4pO1xuICB9XG59O1xuY29yZWZuJDUuaW52YWxpZGF0ZURpbWVuc2lvbnMgPSBjb3JlZm4kNS5yZXNpemU7XG5cbnZhciBjb3JlZm4kNiA9IHtcbiAgLy8gZ2V0IGEgY29sbGVjdGlvblxuICAvLyAtIGVtcHR5IGNvbGxlY3Rpb24gb24gbm8gYXJnc1xuICAvLyAtIGNvbGxlY3Rpb24gb2YgZWxlbWVudHMgaW4gdGhlIGdyYXBoIG9uIHNlbGVjdG9yIGFyZ1xuICAvLyAtIGd1YXJhbnRlZSBhIHJldHVybmVkIGNvbGxlY3Rpb24gd2hlbiBlbGVtZW50cyBvciBjb2xsZWN0aW9uIHNwZWNpZmllZFxuICBjb2xsZWN0aW9uOiBmdW5jdGlvbiBjb2xsZWN0aW9uKGVsZXMsIG9wdHMpIHtcbiAgICBpZiAoc3RyaW5nKGVsZXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy4kKGVsZXMpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihlbGVzKSkge1xuICAgICAgcmV0dXJuIGVsZXMuY29sbGVjdGlvbigpO1xuICAgIH0gZWxzZSBpZiAoYXJyYXkoZWxlcykpIHtcbiAgICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLCBlbGVzLCBvcHRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24odGhpcyk7XG4gIH0sXG4gIG5vZGVzOiBmdW5jdGlvbiBub2RlcyhzZWxlY3Rvcikge1xuICAgIHZhciBub2RlcyA9IHRoaXMuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzTm9kZSgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gbm9kZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH0sXG4gIGVkZ2VzOiBmdW5jdGlvbiBlZGdlcyhzZWxlY3Rvcikge1xuICAgIHZhciBlZGdlcyA9IHRoaXMuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzRWRnZSgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gZWRnZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWRnZXM7XG4gIH0sXG4gIC8vIHNlYXJjaCB0aGUgZ3JhcGggbGlrZSBqUXVlcnlcbiAgJDogZnVuY3Rpb24gJChzZWxlY3Rvcikge1xuICAgIHZhciBlbGVzID0gdGhpcy5fcHJpdmF0ZS5lbGVtZW50cztcblxuICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIGVsZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGVsZXMuc3Bhd25TZWxmKCk7XG4gICAgfVxuICB9LFxuICBtdXRhYmxlRWxlbWVudHM6IGZ1bmN0aW9uIG11dGFibGVFbGVtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbGVtZW50cztcbiAgfVxufTsgLy8gYWxpYXNlc1xuXG5jb3JlZm4kNi5lbGVtZW50cyA9IGNvcmVmbiQ2LmZpbHRlciA9IGNvcmVmbiQ2LiQ7XG5cbnZhciBzdHlmbiA9IHt9OyAvLyBrZXlzIGZvciBzdHlsZSBibG9ja3MsIGUuZy4gdHRmZnR0XG5cbnZhciBUUlVFID0gJ3QnO1xudmFyIEZBTFNFID0gJ2YnOyAvLyAocG90ZW50aWFsbHkgZXhwZW5zaXZlIGNhbGN1bGF0aW9uKVxuLy8gYXBwbHkgdGhlIHN0eWxlIHRvIHRoZSBlbGVtZW50IGJhc2VkIG9uXG4vLyAtIGl0cyBieXBhc3Ncbi8vIC0gd2hhdCBzZWxlY3RvcnMgbWF0Y2ggaXRcblxuc3R5Zm4uYXBwbHkgPSBmdW5jdGlvbiAoZWxlcykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBfcCA9IHNlbGYuX3ByaXZhdGU7XG4gIHZhciBjeSA9IF9wLmN5O1xuICB2YXIgdXBkYXRlZEVsZXMgPSBjeS5jb2xsZWN0aW9uKCk7XG5cbiAgZm9yICh2YXIgaWUgPSAwOyBpZSA8IGVsZXMubGVuZ3RoOyBpZSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaWVdO1xuICAgIHZhciBjeHRNZXRhID0gc2VsZi5nZXRDb250ZXh0TWV0YShlbGUpO1xuXG4gICAgaWYgKGN4dE1ldGEuZW1wdHkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBjeHRTdHlsZSA9IHNlbGYuZ2V0Q29udGV4dFN0eWxlKGN4dE1ldGEpO1xuICAgIHZhciBhcHAgPSBzZWxmLmFwcGx5Q29udGV4dFN0eWxlKGN4dE1ldGEsIGN4dFN0eWxlLCBlbGUpO1xuXG4gICAgaWYgKGVsZS5fcHJpdmF0ZS5hcHBsaWVkSW5pdFN0eWxlKSB7XG4gICAgICBzZWxmLnVwZGF0ZVRyYW5zaXRpb25zKGVsZSwgYXBwLmRpZmZQcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZS5fcHJpdmF0ZS5hcHBsaWVkSW5pdFN0eWxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgaGludHNEaWZmID0gc2VsZi51cGRhdGVTdHlsZUhpbnRzKGVsZSk7XG5cbiAgICBpZiAoaGludHNEaWZmKSB7XG4gICAgICB1cGRhdGVkRWxlcy5wdXNoKGVsZSk7XG4gICAgfVxuICB9IC8vIGZvciBlbGVtZW50c1xuXG5cbiAgcmV0dXJuIHVwZGF0ZWRFbGVzO1xufTtcblxuc3R5Zm4uZ2V0UHJvcGVydGllc0RpZmYgPSBmdW5jdGlvbiAob2xkQ3h0S2V5LCBuZXdDeHRLZXkpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY2FjaGUgPSBzZWxmLl9wcml2YXRlLnByb3BEaWZmcyA9IHNlbGYuX3ByaXZhdGUucHJvcERpZmZzIHx8IHt9O1xuICB2YXIgZHVhbEN4dEtleSA9IG9sZEN4dEtleSArICctJyArIG5ld0N4dEtleTtcbiAgdmFyIGNhY2hlZFZhbCA9IGNhY2hlW2R1YWxDeHRLZXldO1xuXG4gIGlmIChjYWNoZWRWYWwpIHtcbiAgICByZXR1cm4gY2FjaGVkVmFsO1xuICB9XG5cbiAgdmFyIGRpZmZQcm9wcyA9IFtdO1xuICB2YXIgYWRkZWRQcm9wID0ge307XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGN4dCA9IHNlbGZbaV07XG4gICAgdmFyIG9sZEhhc0N4dCA9IG9sZEN4dEtleVtpXSA9PT0gVFJVRTtcbiAgICB2YXIgbmV3SGFzQ3h0ID0gbmV3Q3h0S2V5W2ldID09PSBUUlVFO1xuICAgIHZhciBjeHRIYXNEaWZmZWQgPSBvbGRIYXNDeHQgIT09IG5ld0hhc0N4dDtcbiAgICB2YXIgY3h0SGFzTWFwcGVkUHJvcHMgPSBjeHQubWFwcGVkUHJvcGVydGllcy5sZW5ndGggPiAwO1xuXG4gICAgaWYgKGN4dEhhc0RpZmZlZCB8fCBuZXdIYXNDeHQgJiYgY3h0SGFzTWFwcGVkUHJvcHMpIHtcbiAgICAgIHZhciBwcm9wcyA9IHZvaWQgMDtcblxuICAgICAgaWYgKGN4dEhhc0RpZmZlZCAmJiBjeHRIYXNNYXBwZWRQcm9wcykge1xuICAgICAgICBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzOyAvLyBzdWZmaWNlcyBiL2MgbWFwcGVkUHJvcGVydGllcyBpcyBhIHN1YnNldCBvZiBwcm9wZXJ0aWVzXG4gICAgICB9IGVsc2UgaWYgKGN4dEhhc0RpZmZlZCkge1xuICAgICAgICBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzOyAvLyBuZWVkIHRvIGNoZWNrIHRoZW0gYWxsXG4gICAgICB9IGVsc2UgaWYgKGN4dEhhc01hcHBlZFByb3BzKSB7XG4gICAgICAgIHByb3BzID0gY3h0Lm1hcHBlZFByb3BlcnRpZXM7IC8vIG9ubHkgbmVlZCB0byBjaGVjayBtYXBwZWRcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwcm9wcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgcHJvcCA9IHByb3BzW2pdO1xuICAgICAgICB2YXIgbmFtZSA9IHByb3AubmFtZTsgLy8gaWYgYSBsYXRlciBjb250ZXh0IG92ZXJyaWRlcyB0aGlzIHByb3BlcnR5LCB0aGVuIHRoZSBmYWN0IHRoYXQgdGhpcyBjb250ZXh0IGhhcyBzd2l0Y2hlZC9kaWZmZWQgZG9lc24ndCBtYXR0ZXJcbiAgICAgICAgLy8gKHNlbWkgZXhwZW5zaXZlIGNoZWNrIHNpbmNlIGl0IG1ha2VzIHRoaXMgZnVuY3Rpb24gTyhuXjIpIG9uIGNvbnRleHQgbGVuZ3RoLCBidXQgd29ydGggaXQgc2luY2Ugb3ZlcmFsbCByZXN1bHRcbiAgICAgICAgLy8gaXMgY2FjaGVkKVxuXG4gICAgICAgIHZhciBsYXRlckN4dE92ZXJyaWRlcyA9IGZhbHNlO1xuXG4gICAgICAgIGZvciAodmFyIGsgPSBpICsgMTsgayA8IHNlbGYubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICB2YXIgbGF0ZXJDeHQgPSBzZWxmW2tdO1xuICAgICAgICAgIHZhciBoYXNMYXRlckN4dCA9IG5ld0N4dEtleVtrXSA9PT0gVFJVRTtcblxuICAgICAgICAgIGlmICghaGFzTGF0ZXJDeHQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gLy8gY2FuJ3Qgb3ZlcnJpZGUgdW5sZXNzIHRoZSBjb250ZXh0IGlzIGFjdGl2ZVxuXG5cbiAgICAgICAgICBsYXRlckN4dE92ZXJyaWRlcyA9IGxhdGVyQ3h0LnByb3BlcnRpZXNbcHJvcC5uYW1lXSAhPSBudWxsO1xuXG4gICAgICAgICAgaWYgKGxhdGVyQ3h0T3ZlcnJpZGVzKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IC8vIGV4aXQgZWFybHkgYXMgbG9uZyBhcyBvbmUgbGF0ZXIgY29udGV4dCBvdmVycmlkZXNcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhZGRlZFByb3BbbmFtZV0gJiYgIWxhdGVyQ3h0T3ZlcnJpZGVzKSB7XG4gICAgICAgICAgYWRkZWRQcm9wW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgICBkaWZmUHJvcHMucHVzaChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBmb3IgcHJvcHNcblxuICAgIH0gLy8gaWZcblxuICB9IC8vIGZvciBjb250ZXh0c1xuXG5cbiAgY2FjaGVbZHVhbEN4dEtleV0gPSBkaWZmUHJvcHM7XG4gIHJldHVybiBkaWZmUHJvcHM7XG59O1xuXG5zdHlmbi5nZXRDb250ZXh0TWV0YSA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY3h0S2V5ID0gJyc7XG4gIHZhciBkaWZmUHJvcHM7XG4gIHZhciBwcmV2S2V5ID0gZWxlLl9wcml2YXRlLnN0eWxlQ3h0S2V5IHx8ICcnOyAvLyBnZXQgdGhlIGN4dCBrZXlcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY29udGV4dCA9IHNlbGZbaV07XG4gICAgdmFyIGNvbnRleHRTZWxlY3Rvck1hdGNoZXMgPSBjb250ZXh0LnNlbGVjdG9yICYmIGNvbnRleHQuc2VsZWN0b3IubWF0Y2hlcyhlbGUpOyAvLyBOQjogY29udGV4dC5zZWxlY3RvciBtYXkgYmUgbnVsbCBmb3IgJ2NvcmUnXG5cbiAgICBpZiAoY29udGV4dFNlbGVjdG9yTWF0Y2hlcykge1xuICAgICAgY3h0S2V5ICs9IFRSVUU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN4dEtleSArPSBGQUxTRTtcbiAgICB9XG4gIH0gLy8gZm9yIGNvbnRleHRcblxuXG4gIGRpZmZQcm9wcyA9IHNlbGYuZ2V0UHJvcGVydGllc0RpZmYocHJldktleSwgY3h0S2V5KTtcbiAgZWxlLl9wcml2YXRlLnN0eWxlQ3h0S2V5ID0gY3h0S2V5O1xuICByZXR1cm4ge1xuICAgIGtleTogY3h0S2V5LFxuICAgIGRpZmZQcm9wTmFtZXM6IGRpZmZQcm9wcyxcbiAgICBlbXB0eTogZGlmZlByb3BzLmxlbmd0aCA9PT0gMFxuICB9O1xufTsgLy8gZ2V0cyBhIGNvbXB1dGVkIGVsZSBzdHlsZSBvYmplY3QgYmFzZWQgb24gbWF0Y2hlZCBjb250ZXh0c1xuXG5cbnN0eWZuLmdldENvbnRleHRTdHlsZSA9IGZ1bmN0aW9uIChjeHRNZXRhKSB7XG4gIHZhciBjeHRLZXkgPSBjeHRNZXRhLmtleTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY3h0U3R5bGVzID0gdGhpcy5fcHJpdmF0ZS5jb250ZXh0U3R5bGVzID0gdGhpcy5fcHJpdmF0ZS5jb250ZXh0U3R5bGVzIHx8IHt9OyAvLyBpZiBhbHJlYWR5IGNvbXB1dGVkIHN0eWxlLCByZXR1cm5lZCBjYWNoZWQgY29weVxuXG4gIGlmIChjeHRTdHlsZXNbY3h0S2V5XSkge1xuICAgIHJldHVybiBjeHRTdHlsZXNbY3h0S2V5XTtcbiAgfVxuXG4gIHZhciBzdHlsZSA9IHtcbiAgICBfcHJpdmF0ZToge1xuICAgICAga2V5OiBjeHRLZXlcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGN4dCA9IHNlbGZbaV07XG4gICAgdmFyIGhhc0N4dCA9IGN4dEtleVtpXSA9PT0gVFJVRTtcblxuICAgIGlmICghaGFzQ3h0KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGN4dC5wcm9wZXJ0aWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgcHJvcCA9IGN4dC5wcm9wZXJ0aWVzW2pdO1xuICAgICAgc3R5bGVbcHJvcC5uYW1lXSA9IHByb3A7XG4gICAgfVxuICB9XG5cbiAgY3h0U3R5bGVzW2N4dEtleV0gPSBzdHlsZTtcbiAgcmV0dXJuIHN0eWxlO1xufTtcblxuc3R5Zm4uYXBwbHlDb250ZXh0U3R5bGUgPSBmdW5jdGlvbiAoY3h0TWV0YSwgY3h0U3R5bGUsIGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBkaWZmUHJvcHMgPSBjeHRNZXRhLmRpZmZQcm9wTmFtZXM7XG4gIHZhciByZXREaWZmUHJvcHMgPSB7fTtcbiAgdmFyIHR5cGVzID0gc2VsZi50eXBlcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZmZQcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkaWZmUHJvcE5hbWUgPSBkaWZmUHJvcHNbaV07XG4gICAgdmFyIGN4dFByb3AgPSBjeHRTdHlsZVtkaWZmUHJvcE5hbWVdO1xuICAgIHZhciBlbGVQcm9wID0gZWxlLnBzdHlsZShkaWZmUHJvcE5hbWUpO1xuXG4gICAgaWYgKCFjeHRQcm9wKSB7XG4gICAgICAvLyBubyBjb250ZXh0IHByb3AgbWVhbnMgZGVsZXRlXG4gICAgICBpZiAoIWVsZVByb3ApIHtcbiAgICAgICAgY29udGludWU7IC8vIG5vIGV4aXN0aW5nIHByb3AgbWVhbnMgbm90aGluZyBuZWVkcyB0byBiZSByZW1vdmVkXG4gICAgICAgIC8vIG5iIGFmZmVjdHMgaW5pdGlhbCBhcHBsaWNhdGlvbiBvbiBtYXBwZWQgdmFsdWVzIGxpa2UgY29udHJvbC1wb2ludC1kaXN0YW5jZXNcbiAgICAgIH0gZWxzZSBpZiAoZWxlUHJvcC5ieXBhc3MpIHtcbiAgICAgICAgY3h0UHJvcCA9IHtcbiAgICAgICAgICBuYW1lOiBkaWZmUHJvcE5hbWUsXG4gICAgICAgICAgZGVsZXRlQnlwYXNzZWQ6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN4dFByb3AgPSB7XG4gICAgICAgICAgbmFtZTogZGlmZlByb3BOYW1lLFxuICAgICAgICAgIFwiZGVsZXRlXCI6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gdGhlIGNvbnRleHQgcHJvcCBkb2Vzbid0IG5lZWQgdG8gYmUgYXBwbGllZFxuXG5cbiAgICBpZiAoZWxlUHJvcCA9PT0gY3h0UHJvcCkge1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBzYXZlIGN5Y2xlcyB3aGVuIGEgbWFwcGVkIGNvbnRleHQgcHJvcCBkb2Vzbid0IG5lZWQgdG8gYmUgYXBwbGllZFxuXG5cbiAgICBpZiAoY3h0UHJvcC5tYXBwZWQgPT09IHR5cGVzLmZuIC8vIGNvbnRleHQgcHJvcCBpcyBmdW5jdGlvbiBtYXBwZXJcbiAgICAmJiBlbGVQcm9wICE9IG51bGwgLy8gc29tZSBwcm9wcyBjYW4gYmUgbnVsbCBldmVuIGJ5IGRlZmF1bHQgKGUuZy4gYSBwcm9wIHRoYXQgb3ZlcnJpZGVzIGFub3RoZXIgb25lKVxuICAgICYmIGVsZVByb3AubWFwcGluZyAhPSBudWxsIC8vIGVsZSBwcm9wIGlzIGEgY29uY3JldGUgdmFsdWUgZnJvbSBmcm9tIGEgbWFwcGVyXG4gICAgJiYgZWxlUHJvcC5tYXBwaW5nLnZhbHVlID09PSBjeHRQcm9wLnZhbHVlIC8vIHRoZSBjdXJyZW50IHByb3Agb24gdGhlIGVsZSBpcyBhIGZsYXQgcHJvcCB2YWx1ZSBmb3IgdGhlIGZ1bmN0aW9uIG1hcHBlclxuICAgICkge1xuICAgICAgICAvLyBOQiBkb24ndCB3cml0ZSB0byBjeHRQcm9wLCBhcyBpdCdzIHNoYXJlZCBhbW9uZyBlbGVzIChzdG9yZWQgaW4gc3R5bGVzaGVldClcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBlbGVQcm9wLm1hcHBpbmc7IC8vIGNhbiB3cml0ZSB0byBtYXBwaW5nLCBhcyBpdCdzIGEgcGVyLWVsZSBjb3B5XG5cbiAgICAgICAgdmFyIGZuVmFsdWUgPSBtYXBwaW5nLmZuVmFsdWUgPSBjeHRQcm9wLnZhbHVlKGVsZSk7IC8vIHRlbXBvcmFyaWx5IGNhY2hlIHRoZSB2YWx1ZSBpbiBjYXNlIG9mIGEgbWlzc1xuXG4gICAgICAgIGlmIChmblZhbHVlID09PSBtYXBwaW5nLnByZXZGblZhbHVlKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIHZhciByZXREaWZmUHJvcCA9IHJldERpZmZQcm9wc1tkaWZmUHJvcE5hbWVdID0ge1xuICAgICAgcHJldjogZWxlUHJvcFxuICAgIH07XG4gICAgc2VsZi5hcHBseVBhcnNlZFByb3BlcnR5KGVsZSwgY3h0UHJvcCk7XG4gICAgcmV0RGlmZlByb3AubmV4dCA9IGVsZS5wc3R5bGUoZGlmZlByb3BOYW1lKTtcblxuICAgIGlmIChyZXREaWZmUHJvcC5uZXh0ICYmIHJldERpZmZQcm9wLm5leHQuYnlwYXNzKSB7XG4gICAgICByZXREaWZmUHJvcC5uZXh0ID0gcmV0RGlmZlByb3AubmV4dC5ieXBhc3NlZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRpZmZQcm9wczogcmV0RGlmZlByb3BzXG4gIH07XG59O1xuXG5zdHlmbi51cGRhdGVTdHlsZUhpbnRzID0gZnVuY3Rpb24gKGVsZSkge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHByb3BOYW1lcyA9IHNlbGYucHJvcGVydHlHcm91cE5hbWVzO1xuICB2YXIgcHJvcEdyS2V5cyA9IHNlbGYucHJvcGVydHlHcm91cEtleXM7XG5cbiAgdmFyIHByb3BIYXNoID0gZnVuY3Rpb24gcHJvcEhhc2goZWxlLCBwcm9wTmFtZXMsIHNlZWRLZXkpIHtcbiAgICByZXR1cm4gc2VsZi5nZXRQcm9wZXJ0aWVzSGFzaChlbGUsIHByb3BOYW1lcywgc2VlZEtleSk7XG4gIH07XG5cbiAgdmFyIG9sZFN0eWxlS2V5ID0gX3Auc3R5bGVLZXk7XG5cbiAgaWYgKGVsZS5yZW1vdmVkKCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNOb2RlID0gX3AuZ3JvdXAgPT09ICdub2Rlcyc7IC8vIGdldCB0aGUgc3R5bGUga2V5IGhhc2hlcyBwZXIgcHJvcCBncm91cFxuICAvLyBidXQgbGF6aWx5IC0tIG9ubHkgdXNlIG5vbi1kZWZhdWx0IHByb3AgdmFsdWVzIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGhhc2hlc1xuICAvL1xuXG4gIHZhciBvdmVycmlkZGVuU3R5bGVzID0gZWxlLl9wcml2YXRlLnN0eWxlO1xuICBwcm9wTmFtZXMgPSBPYmplY3Qua2V5cyhvdmVycmlkZGVuU3R5bGVzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BHcktleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZ3JLZXkgPSBwcm9wR3JLZXlzW2ldO1xuICAgIF9wLnN0eWxlS2V5c1tncktleV0gPSBbREVGQVVMVF9IQVNIX1NFRUQsIERFRkFVTFRfSEFTSF9TRUVEX0FMVF07XG4gIH1cblxuICB2YXIgdXBkYXRlR3JLZXkxID0gZnVuY3Rpb24gdXBkYXRlR3JLZXkxKHZhbCwgZ3JLZXkpIHtcbiAgICByZXR1cm4gX3Auc3R5bGVLZXlzW2dyS2V5XVswXSA9IGhhc2hJbnQodmFsLCBfcC5zdHlsZUtleXNbZ3JLZXldWzBdKTtcbiAgfTtcblxuICB2YXIgdXBkYXRlR3JLZXkyID0gZnVuY3Rpb24gdXBkYXRlR3JLZXkyKHZhbCwgZ3JLZXkpIHtcbiAgICByZXR1cm4gX3Auc3R5bGVLZXlzW2dyS2V5XVsxXSA9IGhhc2hJbnRBbHQodmFsLCBfcC5zdHlsZUtleXNbZ3JLZXldWzFdKTtcbiAgfTtcblxuICB2YXIgdXBkYXRlR3JLZXkgPSBmdW5jdGlvbiB1cGRhdGVHcktleSh2YWwsIGdyS2V5KSB7XG4gICAgdXBkYXRlR3JLZXkxKHZhbCwgZ3JLZXkpO1xuICAgIHVwZGF0ZUdyS2V5Mih2YWwsIGdyS2V5KTtcbiAgfTtcblxuICB2YXIgdXBkYXRlR3JLZXlXU3RyID0gZnVuY3Rpb24gdXBkYXRlR3JLZXlXU3RyKHN0clZhbCwgZ3JLZXkpIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN0clZhbC5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGNoID0gc3RyVmFsLmNoYXJDb2RlQXQoaik7XG4gICAgICB1cGRhdGVHcktleTEoY2gsIGdyS2V5KTtcbiAgICAgIHVwZGF0ZUdyS2V5MihjaCwgZ3JLZXkpO1xuICAgIH1cbiAgfTsgLy8gLSBoYXNoaW5nIHdvcmtzIG9uIDMyIGJpdCBpbnRzIGIvYyB3ZSB1c2UgYml0d2lzZSBvcHNcbiAgLy8gLSBzbWFsbCBudW1iZXJzIGdldCBjdXQgb2ZmIChlLmcuIDAuMTIzIGlzIHNlZW4gYXMgMCBieSB0aGUgaGFzaGluZyBmdW5jdGlvbilcbiAgLy8gLSByYWlzZSB1cCBzbWFsbCBudW1iZXJzIHNvIG1vcmUgc2lnbmlmaWNhbnQgZGlnaXRzIGFyZSBzZWVuIGJ5IGhhc2hpbmdcbiAgLy8gLSBtYWtlIHNtYWxsIG51bWJlcnMgbGFyZ2VyIHRoYW4gYSBub3JtYWwgdmFsdWUgdG8gYXZvaWQgY29sbGlzaW9uc1xuICAvLyAtIHdvcmtzIGluIHByYWN0aWNlIGFuZCBpdCdzIHJlbGF0aXZlbHkgY2hlYXBcblxuXG4gIHZhciBOID0gMjAwMDAwMDAwMDtcblxuICB2YXIgY2xlYW5OdW0gPSBmdW5jdGlvbiBjbGVhbk51bSh2YWwpIHtcbiAgICByZXR1cm4gLTEyOCA8IHZhbCAmJiB2YWwgPCAxMjggJiYgTWF0aC5mbG9vcih2YWwpICE9PSB2YWwgPyBOIC0gKHZhbCAqIDEwMjQgfCAwKSA6IHZhbDtcbiAgfTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcHJvcE5hbWVzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBuYW1lID0gcHJvcE5hbWVzW19pXTtcbiAgICB2YXIgcGFyc2VkUHJvcCA9IG92ZXJyaWRkZW5TdHlsZXNbbmFtZV07XG5cbiAgICBpZiAocGFyc2VkUHJvcCA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgcHJvcEluZm8gPSB0aGlzLnByb3BlcnRpZXNbbmFtZV07XG4gICAgdmFyIHR5cGUgPSBwcm9wSW5mby50eXBlO1xuICAgIHZhciBfZ3JLZXkgPSBwcm9wSW5mby5ncm91cEtleTtcbiAgICB2YXIgbm9ybWFsaXplZE51bWJlclZhbCA9IHZvaWQgMDtcblxuICAgIGlmIChwcm9wSW5mby5oYXNoT3ZlcnJpZGUgIT0gbnVsbCkge1xuICAgICAgbm9ybWFsaXplZE51bWJlclZhbCA9IHByb3BJbmZvLmhhc2hPdmVycmlkZShlbGUsIHBhcnNlZFByb3ApO1xuICAgIH0gZWxzZSBpZiAocGFyc2VkUHJvcC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgIG5vcm1hbGl6ZWROdW1iZXJWYWwgPSBwYXJzZWRQcm9wLnBmVmFsdWU7XG4gICAgfSAvLyBtaWdodCBub3QgYmUgYSBudW1iZXIgaWYgaXQgYWxsb3dzIGVudW1zXG5cblxuICAgIHZhciBudW1iZXJWYWwgPSBwcm9wSW5mby5lbnVtcyA9PSBudWxsID8gcGFyc2VkUHJvcC52YWx1ZSA6IG51bGw7XG4gICAgdmFyIGhhdmVOb3JtTnVtID0gbm9ybWFsaXplZE51bWJlclZhbCAhPSBudWxsO1xuICAgIHZhciBoYXZlVW5pdGVkTnVtID0gbnVtYmVyVmFsICE9IG51bGw7XG4gICAgdmFyIGhhdmVOdW0gPSBoYXZlTm9ybU51bSB8fCBoYXZlVW5pdGVkTnVtO1xuICAgIHZhciB1bml0cyA9IHBhcnNlZFByb3AudW5pdHM7IC8vIG51bWJlcnMgYXJlIGNoZWFwZXIgdG8gaGFzaCB0aGFuIHN0cmluZ3NcbiAgICAvLyAxIGhhc2ggb3AgdnMgbiBoYXNoIG9wcyAoZm9yIGxlbmd0aCBuIHN0cmluZylcblxuICAgIGlmICh0eXBlLm51bWJlciAmJiBoYXZlTnVtICYmICF0eXBlLm11bHRpcGxlKSB7XG4gICAgICB2YXIgdiA9IGhhdmVOb3JtTnVtID8gbm9ybWFsaXplZE51bWJlclZhbCA6IG51bWJlclZhbDtcbiAgICAgIHVwZGF0ZUdyS2V5KGNsZWFuTnVtKHYpLCBfZ3JLZXkpO1xuXG4gICAgICBpZiAoIWhhdmVOb3JtTnVtICYmIHVuaXRzICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlR3JLZXlXU3RyKHVuaXRzLCBfZ3JLZXkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGVHcktleVdTdHIocGFyc2VkUHJvcC5zdHJWYWx1ZSwgX2dyS2V5KTtcbiAgICB9XG4gIH0gLy8gb3ZlcmFsbCBzdHlsZSBrZXlcbiAgLy9cblxuXG4gIHZhciBoYXNoID0gW0RFRkFVTFRfSEFTSF9TRUVELCBERUZBVUxUX0hBU0hfU0VFRF9BTFRdO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHByb3BHcktleXMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBfZ3JLZXkyID0gcHJvcEdyS2V5c1tfaTJdO1xuICAgIHZhciBnckhhc2ggPSBfcC5zdHlsZUtleXNbX2dyS2V5Ml07XG4gICAgaGFzaFswXSA9IGhhc2hJbnQoZ3JIYXNoWzBdLCBoYXNoWzBdKTtcbiAgICBoYXNoWzFdID0gaGFzaEludEFsdChnckhhc2hbMV0sIGhhc2hbMV0pO1xuICB9XG5cbiAgX3Auc3R5bGVLZXkgPSBjb21iaW5lSGFzaGVzKGhhc2hbMF0sIGhhc2hbMV0pOyAvLyBsYWJlbCBkaW1zXG4gIC8vXG5cbiAgdmFyIHNrID0gX3Auc3R5bGVLZXlzO1xuICBfcC5sYWJlbERpbXNLZXkgPSBjb21iaW5lSGFzaGVzQXJyYXkoc2subGFiZWxEaW1lbnNpb25zKTtcbiAgdmFyIGxhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWydsYWJlbCddLCBzay5sYWJlbERpbWVuc2lvbnMpO1xuICBfcC5sYWJlbEtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShsYWJlbEtleXMpO1xuICBfcC5sYWJlbFN0eWxlS2V5ID0gY29tYmluZUhhc2hlc0FycmF5KGhhc2hBcnJheXMoc2suY29tbW9uTGFiZWwsIGxhYmVsS2V5cykpO1xuXG4gIGlmICghaXNOb2RlKSB7XG4gICAgdmFyIHNvdXJjZUxhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWydzb3VyY2UtbGFiZWwnXSwgc2subGFiZWxEaW1lbnNpb25zKTtcbiAgICBfcC5zb3VyY2VMYWJlbEtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShzb3VyY2VMYWJlbEtleXMpO1xuICAgIF9wLnNvdXJjZUxhYmVsU3R5bGVLZXkgPSBjb21iaW5lSGFzaGVzQXJyYXkoaGFzaEFycmF5cyhzay5jb21tb25MYWJlbCwgc291cmNlTGFiZWxLZXlzKSk7XG4gICAgdmFyIHRhcmdldExhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWyd0YXJnZXQtbGFiZWwnXSwgc2subGFiZWxEaW1lbnNpb25zKTtcbiAgICBfcC50YXJnZXRMYWJlbEtleSA9IGNvbWJpbmVIYXNoZXNBcnJheSh0YXJnZXRMYWJlbEtleXMpO1xuICAgIF9wLnRhcmdldExhYmVsU3R5bGVLZXkgPSBjb21iaW5lSGFzaGVzQXJyYXkoaGFzaEFycmF5cyhzay5jb21tb25MYWJlbCwgdGFyZ2V0TGFiZWxLZXlzKSk7XG4gIH0gLy8gbm9kZVxuICAvL1xuXG5cbiAgaWYgKGlzTm9kZSkge1xuICAgIHZhciBfcCRzdHlsZUtleXMgPSBfcC5zdHlsZUtleXMsXG4gICAgICAgIG5vZGVCb2R5ID0gX3Akc3R5bGVLZXlzLm5vZGVCb2R5LFxuICAgICAgICBub2RlQm9yZGVyID0gX3Akc3R5bGVLZXlzLm5vZGVCb3JkZXIsXG4gICAgICAgIGJhY2tncm91bmRJbWFnZSA9IF9wJHN0eWxlS2V5cy5iYWNrZ3JvdW5kSW1hZ2UsXG4gICAgICAgIGNvbXBvdW5kID0gX3Akc3R5bGVLZXlzLmNvbXBvdW5kLFxuICAgICAgICBwaWUgPSBfcCRzdHlsZUtleXMucGllO1xuICAgIHZhciBub2RlS2V5cyA9IFtub2RlQm9keSwgbm9kZUJvcmRlciwgYmFja2dyb3VuZEltYWdlLCBjb21wb3VuZCwgcGllXS5maWx0ZXIoZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiBrICE9IG51bGw7XG4gICAgfSkucmVkdWNlKGhhc2hBcnJheXMsIFtERUZBVUxUX0hBU0hfU0VFRCwgREVGQVVMVF9IQVNIX1NFRURfQUxUXSk7XG4gICAgX3Aubm9kZUtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShub2RlS2V5cyk7XG4gICAgX3AuaGFzUGllID0gcGllICE9IG51bGwgJiYgcGllWzBdICE9PSBERUZBVUxUX0hBU0hfU0VFRCAmJiBwaWVbMV0gIT09IERFRkFVTFRfSEFTSF9TRUVEX0FMVDtcbiAgfVxuXG4gIHJldHVybiBvbGRTdHlsZUtleSAhPT0gX3Auc3R5bGVLZXk7XG59O1xuXG5zdHlmbi5jbGVhclN0eWxlSGludHMgPSBmdW5jdGlvbiAoZWxlKSB7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgX3Auc3R5bGVDeHRLZXkgPSAnJztcbiAgX3Auc3R5bGVLZXlzID0ge307XG4gIF9wLnN0eWxlS2V5ID0gbnVsbDtcbiAgX3AubGFiZWxLZXkgPSBudWxsO1xuICBfcC5sYWJlbFN0eWxlS2V5ID0gbnVsbDtcbiAgX3Auc291cmNlTGFiZWxLZXkgPSBudWxsO1xuICBfcC5zb3VyY2VMYWJlbFN0eWxlS2V5ID0gbnVsbDtcbiAgX3AudGFyZ2V0TGFiZWxLZXkgPSBudWxsO1xuICBfcC50YXJnZXRMYWJlbFN0eWxlS2V5ID0gbnVsbDtcbiAgX3Aubm9kZUtleSA9IG51bGw7XG4gIF9wLmhhc1BpZSA9IG51bGw7XG59OyAvLyBhcHBseSBhIHByb3BlcnR5IHRvIHRoZSBzdHlsZSAoZm9yIGludGVybmFsIHVzZSlcbi8vIHJldHVybnMgd2hldGhlciBhcHBsaWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bFxuLy9cbi8vIG5vdywgdGhpcyBmdW5jdGlvbiBmbGF0dGVucyB0aGUgcHJvcGVydHksIGFuZCBoZXJlJ3MgaG93OlxuLy9cbi8vIGZvciBwYXJzZWRQcm9wOnsgYnlwYXNzOiB0cnVlLCBkZWxldGVCeXBhc3M6IHRydWUgfVxuLy8gbm8gcHJvcGVydHkgaXMgZ2VuZXJhdGVkLCBpbnN0ZWFkIHRoZSBieXBhc3MgcHJvcGVydHkgaW4gdGhlXG4vLyBlbGVtZW50J3Mgc3R5bGUgaXMgcmVwbGFjZWQgYnkgd2hhdCdzIHBvaW50ZWQgdG8gYnkgdGhlIGBieXBhc3NlZGBcbi8vIGZpZWxkIGluIHRoZSBieXBhc3MgcHJvcGVydHkgKGkuZS4gcmVzdG9yaW5nIHRoZSBwcm9wZXJ0eSB0aGVcbi8vIGJ5cGFzcyB3YXMgb3ZlcnJpZGluZylcbi8vXG4vLyBmb3IgcGFyc2VkUHJvcDp7IG1hcHBlZDogdHJ1dGh5IH1cbi8vIHRoZSBnZW5lcmF0ZWQgZmxhdHRlbmVkUHJvcDp7IG1hcHBpbmc6IHByb3AgfVxuLy9cbi8vIGZvciBwYXJzZWRQcm9wOnsgYnlwYXNzOiB0cnVlIH1cbi8vIHRoZSBnZW5lcmF0ZWQgZmxhdHRlbmVkUHJvcDp7IGJ5cGFzc2VkOiBwYXJzZWRQcm9wIH1cblxuXG5zdHlmbi5hcHBseVBhcnNlZFByb3BlcnR5ID0gZnVuY3Rpb24gKGVsZSwgcGFyc2VkUHJvcCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBwcm9wID0gcGFyc2VkUHJvcDtcbiAgdmFyIHN0eWxlID0gZWxlLl9wcml2YXRlLnN0eWxlO1xuICB2YXIgZmxhdFByb3A7XG4gIHZhciB0eXBlcyA9IHNlbGYudHlwZXM7XG4gIHZhciB0eXBlID0gc2VsZi5wcm9wZXJ0aWVzW3Byb3AubmFtZV0udHlwZTtcbiAgdmFyIHByb3BJc0J5cGFzcyA9IHByb3AuYnlwYXNzO1xuICB2YXIgb3JpZ1Byb3AgPSBzdHlsZVtwcm9wLm5hbWVdO1xuICB2YXIgb3JpZ1Byb3BJc0J5cGFzcyA9IG9yaWdQcm9wICYmIG9yaWdQcm9wLmJ5cGFzcztcbiAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICB2YXIgZmxhdFByb3BNYXBwaW5nID0gJ21hcHBpbmcnO1xuXG4gIHZhciBnZXRWYWwgPSBmdW5jdGlvbiBnZXRWYWwocCkge1xuICAgIGlmIChwID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAocC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwLnBmVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwLnZhbHVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgY2hlY2tUcmlnZ2VycyA9IGZ1bmN0aW9uIGNoZWNrVHJpZ2dlcnMoKSB7XG4gICAgdmFyIGZyb21WYWwgPSBnZXRWYWwob3JpZ1Byb3ApO1xuICAgIHZhciB0b1ZhbCA9IGdldFZhbChwcm9wKTtcbiAgICBzZWxmLmNoZWNrVHJpZ2dlcnMoZWxlLCBwcm9wLm5hbWUsIGZyb21WYWwsIHRvVmFsKTtcbiAgfTtcblxuICBpZiAocHJvcCAmJiBwcm9wLm5hbWUuc3Vic3RyKDAsIDMpID09PSAncGllJykge1xuICAgIHdhcm4oJ1RoZSBwaWUgc3R5bGUgcHJvcGVydGllcyBhcmUgZGVwcmVjYXRlZC4gIENyZWF0ZSBjaGFydHMgdXNpbmcgYmFja2dyb3VuZCBpbWFnZXMgaW5zdGVhZC4nKTtcbiAgfSAvLyBlZGdlIHNhbml0eSBjaGVja3MgdG8gcHJldmVudCB0aGUgY2xpZW50IGZyb20gbWFraW5nIHNlcmlvdXMgbWlzdGFrZXNcblxuXG4gIGlmIChwYXJzZWRQcm9wLm5hbWUgPT09ICdjdXJ2ZS1zdHlsZScgJiYgZWxlLmlzRWRnZSgpICYmICggLy8gbG9vcHMgbXVzdCBiZSBidW5kbGVkIGJlemllcnNcbiAgcGFyc2VkUHJvcC52YWx1ZSAhPT0gJ2JlemllcicgJiYgZWxlLmlzTG9vcCgpIHx8IC8vIGVkZ2VzIGNvbm5lY3RlZCB0byBjb21wb3VuZCBub2RlcyBjYW4gbm90IGJlIGhheXN0YWNrc1xuICBwYXJzZWRQcm9wLnZhbHVlID09PSAnaGF5c3RhY2snICYmIChlbGUuc291cmNlKCkuaXNQYXJlbnQoKSB8fCBlbGUudGFyZ2V0KCkuaXNQYXJlbnQoKSkpKSB7XG4gICAgcHJvcCA9IHBhcnNlZFByb3AgPSB0aGlzLnBhcnNlKHBhcnNlZFByb3AubmFtZSwgJ2JlemllcicsIHByb3BJc0J5cGFzcyk7XG4gIH1cblxuICBpZiAocHJvcFtcImRlbGV0ZVwiXSkge1xuICAgIC8vIGRlbGV0ZSB0aGUgcHJvcGVydHkgYW5kIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZSBvbiBmYWxzZXkgdmFsdWVcbiAgICBzdHlsZVtwcm9wLm5hbWVdID0gdW5kZWZpbmVkO1xuICAgIGNoZWNrVHJpZ2dlcnMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wLmRlbGV0ZUJ5cGFzc2VkKSB7XG4gICAgLy8gZGVsZXRlIHRoZSBwcm9wZXJ0eSB0aGF0IHRoZVxuICAgIGlmICghb3JpZ1Byb3ApIHtcbiAgICAgIGNoZWNrVHJpZ2dlcnMoKTtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBjYW4ndCBkZWxldGUgaWYgbm8gcHJvcFxuICAgIH0gZWxzZSBpZiAob3JpZ1Byb3AuYnlwYXNzKSB7XG4gICAgICAvLyBkZWxldGUgYnlwYXNzZWRcbiAgICAgIG9yaWdQcm9wLmJ5cGFzc2VkID0gdW5kZWZpbmVkO1xuICAgICAgY2hlY2tUcmlnZ2VycygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTsgLy8gd2UncmUgdW5zdWNjZXNzZnVsIGRlbGV0aW5nIHRoZSBieXBhc3NlZFxuICAgIH1cbiAgfSAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIGRlbGV0ZSB0aGUgY3VycmVudCBieXBhc3NcblxuXG4gIGlmIChwcm9wLmRlbGV0ZUJ5cGFzcykge1xuICAgIC8vIHRoZW4gdGhpcyBwcm9wZXJ0eSBpcyBqdXN0IGhlcmUgdG8gaW5kaWNhdGUgd2UgbmVlZCB0byBkZWxldGVcbiAgICBpZiAoIW9yaWdQcm9wKSB7XG4gICAgICBjaGVja1RyaWdnZXJzKCk7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gcHJvcGVydHkgaXMgYWxyZWFkeSBub3QgZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAob3JpZ1Byb3AuYnlwYXNzKSB7XG4gICAgICAvLyB0aGVuIHJlcGxhY2UgdGhlIGJ5cGFzcyBwcm9wZXJ0eSB3aXRoIHRoZSBvcmlnaW5hbFxuICAgICAgLy8gYmVjYXVzZSB0aGUgYnlwYXNzZWQgcHJvcGVydHkgd2FzIGFscmVhZHkgYXBwbGllZCAoYW5kIHRoZXJlZm9yZSBwYXJzZWQpLCB3ZSBjYW4ganVzdCByZXBsYWNlIGl0IChubyByZWFwcGx5aW5nIG5lY2Vzc2FyeSlcbiAgICAgIHN0eWxlW3Byb3AubmFtZV0gPSBvcmlnUHJvcC5ieXBhc3NlZDtcbiAgICAgIGNoZWNrVHJpZ2dlcnMoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIHdlJ3JlIHVuc3VjY2Vzc2Z1bCBkZWxldGluZyB0aGUgYnlwYXNzXG4gICAgfVxuICB9XG5cbiAgdmFyIHByaW50TWFwcGluZ0VyciA9IGZ1bmN0aW9uIHByaW50TWFwcGluZ0VycigpIHtcbiAgICB3YXJuKCdEbyBub3QgYXNzaWduIG1hcHBpbmdzIHRvIGVsZW1lbnRzIHdpdGhvdXQgY29ycmVzcG9uZGluZyBkYXRhIChpLmUuIGVsZSBgJyArIGVsZS5pZCgpICsgJ2AgaGFzIG5vIG1hcHBpbmcgZm9yIHByb3BlcnR5IGAnICsgcHJvcC5uYW1lICsgJ2Agd2l0aCBkYXRhIGZpZWxkIGAnICsgcHJvcC5maWVsZCArICdgKTsgdHJ5IGEgYFsnICsgcHJvcC5maWVsZCArICddYCBzZWxlY3RvciB0byBsaW1pdCBzY29wZSB0byBlbGVtZW50cyB3aXRoIGAnICsgcHJvcC5maWVsZCArICdgIGRlZmluZWQnKTtcbiAgfTsgLy8gcHV0IHRoZSBwcm9wZXJ0eSBpbiB0aGUgc3R5bGUgb2JqZWN0c1xuXG5cbiAgc3dpdGNoIChwcm9wLm1hcHBlZCkge1xuICAgIC8vIGZsYXR0ZW4gdGhlIHByb3BlcnR5IGlmIG1hcHBlZFxuICAgIGNhc2UgdHlwZXMubWFwRGF0YTpcbiAgICAgIHtcbiAgICAgICAgLy8gZmxhdHRlbiB0aGUgZmllbGQgKGUuZy4gZGF0YS5mb28uYmFyKVxuICAgICAgICB2YXIgZmllbGRzID0gcHJvcC5maWVsZC5zcGxpdCgnLicpO1xuICAgICAgICB2YXIgZmllbGRWYWwgPSBfcC5kYXRhO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aCAmJiBmaWVsZFZhbDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICAgIGZpZWxkVmFsID0gZmllbGRWYWxbZmllbGRdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkVmFsID09IG51bGwpIHtcbiAgICAgICAgICBwcmludE1hcHBpbmdFcnIoKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGVyY2VudDtcblxuICAgICAgICBpZiAoIW51bWJlcihmaWVsZFZhbCkpIHtcbiAgICAgICAgICAvLyB0aGVuIGRvbid0IGFwcGx5IGFuZCBmYWxsIGJhY2sgb24gdGhlIGV4aXN0aW5nIHN0eWxlXG4gICAgICAgICAgd2FybignRG8gbm90IHVzZSBjb250aW51b3VzIG1hcHBlcnMgd2l0aG91dCBzcGVjaWZ5aW5nIG51bWVyaWMgZGF0YSAoaS5lLiBgJyArIHByb3AuZmllbGQgKyAnOiAnICsgZmllbGRWYWwgKyAnYCBmb3IgYCcgKyBlbGUuaWQoKSArICdgIGlzIG5vbi1udW1lcmljKScpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgZmllbGRXaWR0aCA9IHByb3AuZmllbGRNYXggLSBwcm9wLmZpZWxkTWluO1xuXG4gICAgICAgICAgaWYgKGZpZWxkV2lkdGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIHNhZmV0eSBjaGVjayAtLSBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGFzIG5vIHByb3BzIG9mIHplcm8gcmFuZ2Ugc2hvdWxkIGJlIHBhc3NlZCBoZXJlXG4gICAgICAgICAgICBwZXJjZW50ID0gMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVyY2VudCA9IChmaWVsZFZhbCAtIHByb3AuZmllbGRNaW4pIC8gZmllbGRXaWR0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gbWFrZSBzdXJlIHRvIGJvdW5kIHBlcmNlbnQgdmFsdWVcblxuXG4gICAgICAgIGlmIChwZXJjZW50IDwgMCkge1xuICAgICAgICAgIHBlcmNlbnQgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxKSB7XG4gICAgICAgICAgcGVyY2VudCA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZS5jb2xvcikge1xuICAgICAgICAgIHZhciByMSA9IHByb3AudmFsdWVNaW5bMF07XG4gICAgICAgICAgdmFyIHIyID0gcHJvcC52YWx1ZU1heFswXTtcbiAgICAgICAgICB2YXIgZzEgPSBwcm9wLnZhbHVlTWluWzFdO1xuICAgICAgICAgIHZhciBnMiA9IHByb3AudmFsdWVNYXhbMV07XG4gICAgICAgICAgdmFyIGIxID0gcHJvcC52YWx1ZU1pblsyXTtcbiAgICAgICAgICB2YXIgYjIgPSBwcm9wLnZhbHVlTWF4WzJdO1xuICAgICAgICAgIHZhciBhMSA9IHByb3AudmFsdWVNaW5bM10gPT0gbnVsbCA/IDEgOiBwcm9wLnZhbHVlTWluWzNdO1xuICAgICAgICAgIHZhciBhMiA9IHByb3AudmFsdWVNYXhbM10gPT0gbnVsbCA/IDEgOiBwcm9wLnZhbHVlTWF4WzNdO1xuICAgICAgICAgIHZhciBjbHIgPSBbTWF0aC5yb3VuZChyMSArIChyMiAtIHIxKSAqIHBlcmNlbnQpLCBNYXRoLnJvdW5kKGcxICsgKGcyIC0gZzEpICogcGVyY2VudCksIE1hdGgucm91bmQoYjEgKyAoYjIgLSBiMSkgKiBwZXJjZW50KSwgTWF0aC5yb3VuZChhMSArIChhMiAtIGExKSAqIHBlcmNlbnQpXTtcbiAgICAgICAgICBmbGF0UHJvcCA9IHtcbiAgICAgICAgICAgIC8vIGNvbG91cnMgYXJlIHNpbXBsZSwgc28ganVzdCBjcmVhdGUgdGhlIGZsYXQgcHJvcGVydHkgaW5zdGVhZCBvZiBleHBlbnNpdmUgc3RyaW5nIHBhcnNpbmdcbiAgICAgICAgICAgIGJ5cGFzczogcHJvcC5ieXBhc3MsXG4gICAgICAgICAgICAvLyB3ZSdyZSBhIGJ5cGFzcyBpZiB0aGUgbWFwcGluZyBwcm9wZXJ0eSBpcyBhIGJ5cGFzc1xuICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IGNscixcbiAgICAgICAgICAgIHN0clZhbHVlOiAncmdiKCcgKyBjbHJbMF0gKyAnLCAnICsgY2xyWzFdICsgJywgJyArIGNsclsyXSArICcpJ1xuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZS5udW1iZXIpIHtcbiAgICAgICAgICB2YXIgY2FsY1ZhbHVlID0gcHJvcC52YWx1ZU1pbiArIChwcm9wLnZhbHVlTWF4IC0gcHJvcC52YWx1ZU1pbikgKiBwZXJjZW50O1xuICAgICAgICAgIGZsYXRQcm9wID0gdGhpcy5wYXJzZShwcm9wLm5hbWUsIGNhbGNWYWx1ZSwgcHJvcC5ieXBhc3MsIGZsYXRQcm9wTWFwcGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBjYW4gb25seSBtYXAgdG8gY29sb3VycyBhbmQgbnVtYmVyc1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmbGF0UHJvcCkge1xuICAgICAgICAgIC8vIGlmIHdlIGNhbid0IGZsYXR0ZW4gdGhlIHByb3BlcnR5LCB0aGVuIGRvbid0IGFwcGx5IHRoZSBwcm9wZXJ0eSBhbmQgZmFsbCBiYWNrIG9uIHRoZSBleGlzdGluZyBzdHlsZVxuICAgICAgICAgIHByaW50TWFwcGluZ0VycigpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZsYXRQcm9wLm1hcHBpbmcgPSBwcm9wOyAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBtYXBwaW5nXG5cbiAgICAgICAgcHJvcCA9IGZsYXRQcm9wOyAvLyB0aGUgZmxhdHRlbmVkIChtYXBwZWQpIHByb3BlcnR5IGlzIHRoZSBvbmUgd2Ugd2FudFxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIC8vIGRpcmVjdCBtYXBwaW5nXG5cbiAgICBjYXNlIHR5cGVzLmRhdGE6XG4gICAgICB7XG4gICAgICAgIC8vIGZsYXR0ZW4gdGhlIGZpZWxkIChlLmcuIGRhdGEuZm9vLmJhcilcbiAgICAgICAgdmFyIF9maWVsZHMgPSBwcm9wLmZpZWxkLnNwbGl0KCcuJyk7XG5cbiAgICAgICAgdmFyIF9maWVsZFZhbCA9IF9wLmRhdGE7XG5cbiAgICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgX2ZpZWxkcy5sZW5ndGggJiYgX2ZpZWxkVmFsOyBfaTMrKykge1xuICAgICAgICAgIHZhciBfZmllbGQgPSBfZmllbGRzW19pM107XG4gICAgICAgICAgX2ZpZWxkVmFsID0gX2ZpZWxkVmFsW19maWVsZF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX2ZpZWxkVmFsICE9IG51bGwpIHtcbiAgICAgICAgICBmbGF0UHJvcCA9IHRoaXMucGFyc2UocHJvcC5uYW1lLCBfZmllbGRWYWwsIHByb3AuYnlwYXNzLCBmbGF0UHJvcE1hcHBpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmbGF0UHJvcCkge1xuICAgICAgICAgIC8vIGlmIHdlIGNhbid0IGZsYXR0ZW4gdGhlIHByb3BlcnR5LCB0aGVuIGRvbid0IGFwcGx5IGFuZCBmYWxsIGJhY2sgb24gdGhlIGV4aXN0aW5nIHN0eWxlXG4gICAgICAgICAgcHJpbnRNYXBwaW5nRXJyKCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZmxhdFByb3AubWFwcGluZyA9IHByb3A7IC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1hcHBpbmdcblxuICAgICAgICBwcm9wID0gZmxhdFByb3A7IC8vIHRoZSBmbGF0dGVuZWQgKG1hcHBlZCkgcHJvcGVydHkgaXMgdGhlIG9uZSB3ZSB3YW50XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlIHR5cGVzLmZuOlxuICAgICAge1xuICAgICAgICB2YXIgZm4gPSBwcm9wLnZhbHVlO1xuICAgICAgICB2YXIgZm5SZXRWYWwgPSBwcm9wLmZuVmFsdWUgIT0gbnVsbCA/IHByb3AuZm5WYWx1ZSA6IGZuKGVsZSk7IC8vIGNoZWNrIGZvciBjYWNoZWQgdmFsdWUgYmVmb3JlIGNhbGxpbmcgZnVuY3Rpb25cblxuICAgICAgICBwcm9wLnByZXZGblZhbHVlID0gZm5SZXRWYWw7XG5cbiAgICAgICAgaWYgKGZuUmV0VmFsID09IG51bGwpIHtcbiAgICAgICAgICB3YXJuKCdDdXN0b20gZnVuY3Rpb24gbWFwcGVycyBtYXkgbm90IHJldHVybiBudWxsIChpLmUuIGAnICsgcHJvcC5uYW1lICsgJ2AgZm9yIGVsZSBgJyArIGVsZS5pZCgpICsgJ2AgaXMgbnVsbCknKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmbGF0UHJvcCA9IHRoaXMucGFyc2UocHJvcC5uYW1lLCBmblJldFZhbCwgcHJvcC5ieXBhc3MsIGZsYXRQcm9wTWFwcGluZyk7XG5cbiAgICAgICAgaWYgKCFmbGF0UHJvcCkge1xuICAgICAgICAgIHdhcm4oJ0N1c3RvbSBmdW5jdGlvbiBtYXBwZXJzIG1heSBub3QgcmV0dXJuIGludmFsaWQgdmFsdWVzIGZvciB0aGUgcHJvcGVydHkgdHlwZSAoaS5lLiBgJyArIHByb3AubmFtZSArICdgIGZvciBlbGUgYCcgKyBlbGUuaWQoKSArICdgIGlzIGludmFsaWQpJyk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZmxhdFByb3AubWFwcGluZyA9IGNvcHkocHJvcCk7IC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1hcHBpbmdcblxuICAgICAgICBwcm9wID0gZmxhdFByb3A7IC8vIHRoZSBmbGF0dGVuZWQgKG1hcHBlZCkgcHJvcGVydHkgaXMgdGhlIG9uZSB3ZSB3YW50XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgIGJyZWFrO1xuICAgIC8vIGp1c3Qgc2V0IHRoZSBwcm9wZXJ0eVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBub3QgYSB2YWxpZCBtYXBwaW5nXG4gIH0gLy8gaWYgdGhlIHByb3BlcnR5IGlzIGEgYnlwYXNzIHByb3BlcnR5LCB0aGVuIGxpbmsgdGhlIHJlc3VsdGFudCBwcm9wZXJ0eSB0byB0aGUgb3JpZ2luYWwgb25lXG5cblxuICBpZiAocHJvcElzQnlwYXNzKSB7XG4gICAgaWYgKG9yaWdQcm9wSXNCeXBhc3MpIHtcbiAgICAgIC8vIHRoZW4gdGhpcyBieXBhc3Mgb3ZlcnJpZGVzIHRoZSBleGlzdGluZyBvbmVcbiAgICAgIHByb3AuYnlwYXNzZWQgPSBvcmlnUHJvcC5ieXBhc3NlZDsgLy8gc3RlYWwgYnlwYXNzZWQgcHJvcCBmcm9tIG9sZCBieXBhc3NcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdGhlbiBsaW5rIHRoZSBvcmlnIHByb3AgdG8gdGhlIG5ldyBieXBhc3NcbiAgICAgIHByb3AuYnlwYXNzZWQgPSBvcmlnUHJvcDtcbiAgICB9XG5cbiAgICBzdHlsZVtwcm9wLm5hbWVdID0gcHJvcDsgLy8gYW5kIHNldFxuICB9IGVsc2Uge1xuICAgIC8vIHByb3AgaXMgbm90IGJ5cGFzc1xuICAgIGlmIChvcmlnUHJvcElzQnlwYXNzKSB7XG4gICAgICAvLyB0aGVuIGtlZXAgdGhlIG9yaWcgcHJvcCAoc2luY2UgaXQncyBhIGJ5cGFzcykgYW5kIGxpbmsgdG8gdGhlIG5ldyBwcm9wXG4gICAgICBvcmlnUHJvcC5ieXBhc3NlZCA9IHByb3A7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoZW4ganVzdCByZXBsYWNlIHRoZSBvbGQgcHJvcCB3aXRoIHRoZSBuZXcgb25lXG4gICAgICBzdHlsZVtwcm9wLm5hbWVdID0gcHJvcDtcbiAgICB9XG4gIH1cblxuICBjaGVja1RyaWdnZXJzKCk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuc3R5Zm4uY2xlYW5FbGVtZW50cyA9IGZ1bmN0aW9uIChlbGVzLCBrZWVwQnlwYXNzZXMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgdGhpcy5jbGVhclN0eWxlSGludHMoZWxlKTtcbiAgICBlbGUuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gICAgZWxlLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpO1xuXG4gICAgaWYgKCFrZWVwQnlwYXNzZXMpIHtcbiAgICAgIGVsZS5fcHJpdmF0ZS5zdHlsZSA9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3R5bGUgPSBlbGUuX3ByaXZhdGUuc3R5bGU7XG4gICAgICB2YXIgcHJvcE5hbWVzID0gT2JqZWN0LmtleXMoc3R5bGUpO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BOYW1lcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wTmFtZXNbal07XG4gICAgICAgIHZhciBlbGVQcm9wID0gc3R5bGVbcHJvcE5hbWVdO1xuXG4gICAgICAgIGlmIChlbGVQcm9wICE9IG51bGwpIHtcbiAgICAgICAgICBpZiAoZWxlUHJvcC5ieXBhc3MpIHtcbiAgICAgICAgICAgIGVsZVByb3AuYnlwYXNzZWQgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZVtwcm9wTmFtZV0gPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufTsgLy8gdXBkYXRlcyB0aGUgdmlzdWFsIHN0eWxlIGZvciBhbGwgZWxlbWVudHMgKHVzZWZ1bCBmb3IgbWFudWFsIHN0eWxlIG1vZGlmaWNhdGlvbiBhZnRlciBpbml0KVxuXG5cbnN0eWZuLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgdmFyIGVsZXMgPSBjeS5tdXRhYmxlRWxlbWVudHMoKTtcbiAgZWxlcy51cGRhdGVTdHlsZSgpO1xufTsgLy8gZGlmZlByb3BzIDogeyBuYW1lID0+IHsgcHJldiwgbmV4dCB9IH1cblxuXG5zdHlmbi51cGRhdGVUcmFuc2l0aW9ucyA9IGZ1bmN0aW9uIChlbGUsIGRpZmZQcm9wcykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIHByb3BzID0gZWxlLnBzdHlsZSgndHJhbnNpdGlvbi1wcm9wZXJ0eScpLnZhbHVlO1xuICB2YXIgZHVyYXRpb24gPSBlbGUucHN0eWxlKCd0cmFuc2l0aW9uLWR1cmF0aW9uJykucGZWYWx1ZTtcbiAgdmFyIGRlbGF5ID0gZWxlLnBzdHlsZSgndHJhbnNpdGlvbi1kZWxheScpLnBmVmFsdWU7XG5cbiAgaWYgKHByb3BzLmxlbmd0aCA+IDAgJiYgZHVyYXRpb24gPiAwKSB7XG4gICAgdmFyIHN0eWxlID0ge307IC8vIGJ1aWxkIHVwIHRoZSBzdHlsZSB0byBhbmltYXRlIHRvd2FyZHNcblxuICAgIHZhciBhbnlQcmV2ID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAgICAgdmFyIHN0eVByb3AgPSBlbGUucHN0eWxlKHByb3ApO1xuICAgICAgdmFyIGRpZmZQcm9wID0gZGlmZlByb3BzW3Byb3BdO1xuXG4gICAgICBpZiAoIWRpZmZQcm9wKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJldlByb3AgPSBkaWZmUHJvcC5wcmV2O1xuICAgICAgdmFyIGZyb21Qcm9wID0gcHJldlByb3A7XG4gICAgICB2YXIgdG9Qcm9wID0gZGlmZlByb3AubmV4dCAhPSBudWxsID8gZGlmZlByb3AubmV4dCA6IHN0eVByb3A7XG4gICAgICB2YXIgZGlmZiA9IGZhbHNlO1xuICAgICAgdmFyIGluaXRWYWwgPSB2b2lkIDA7XG4gICAgICB2YXIgaW5pdER0ID0gMC4wMDAwMDE7IC8vIGRlbHRhIHRpbWUgJSB2YWx1ZSBmb3IgaW5pdFZhbCAoYWxsb3dzIGFuaW1hdGluZyBvdXQgb2YgaW5pdCB6ZXJvIG9wYWNpdHkpXG5cbiAgICAgIGlmICghZnJvbVByb3ApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGNvbnNpZGVyIHB4IHZhbHVlc1xuXG5cbiAgICAgIGlmIChudW1iZXIoZnJvbVByb3AucGZWYWx1ZSkgJiYgbnVtYmVyKHRvUHJvcC5wZlZhbHVlKSkge1xuICAgICAgICBkaWZmID0gdG9Qcm9wLnBmVmFsdWUgLSBmcm9tUHJvcC5wZlZhbHVlOyAvLyBub256ZXJvIGlzIHRydXRoeVxuXG4gICAgICAgIGluaXRWYWwgPSBmcm9tUHJvcC5wZlZhbHVlICsgaW5pdER0ICogZGlmZjsgLy8gY29uc2lkZXIgbnVtZXJpY2FsIHZhbHVlc1xuICAgICAgfSBlbHNlIGlmIChudW1iZXIoZnJvbVByb3AudmFsdWUpICYmIG51bWJlcih0b1Byb3AudmFsdWUpKSB7XG4gICAgICAgIGRpZmYgPSB0b1Byb3AudmFsdWUgLSBmcm9tUHJvcC52YWx1ZTsgLy8gbm9uemVybyBpcyB0cnV0aHlcblxuICAgICAgICBpbml0VmFsID0gZnJvbVByb3AudmFsdWUgKyBpbml0RHQgKiBkaWZmOyAvLyBjb25zaWRlciBjb2xvdXIgdmFsdWVzXG4gICAgICB9IGVsc2UgaWYgKGFycmF5KGZyb21Qcm9wLnZhbHVlKSAmJiBhcnJheSh0b1Byb3AudmFsdWUpKSB7XG4gICAgICAgIGRpZmYgPSBmcm9tUHJvcC52YWx1ZVswXSAhPT0gdG9Qcm9wLnZhbHVlWzBdIHx8IGZyb21Qcm9wLnZhbHVlWzFdICE9PSB0b1Byb3AudmFsdWVbMV0gfHwgZnJvbVByb3AudmFsdWVbMl0gIT09IHRvUHJvcC52YWx1ZVsyXTtcbiAgICAgICAgaW5pdFZhbCA9IGZyb21Qcm9wLnN0clZhbHVlO1xuICAgICAgfSAvLyB0aGUgcHJldmlvdXMgdmFsdWUgaXMgZ29vZCBmb3IgYW4gYW5pbWF0aW9uIG9ubHkgaWYgaXQncyBkaWZmZXJlbnRcblxuXG4gICAgICBpZiAoZGlmZikge1xuICAgICAgICBzdHlsZVtwcm9wXSA9IHRvUHJvcC5zdHJWYWx1ZTsgLy8gdG8gdmFsXG5cbiAgICAgICAgdGhpcy5hcHBseUJ5cGFzcyhlbGUsIHByb3AsIGluaXRWYWwpOyAvLyBmcm9tIHZhbFxuXG4gICAgICAgIGFueVByZXYgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gLy8gZW5kIGlmIHByb3BzIGFsbG93IGFuaVxuICAgIC8vIGNhbid0IHRyYW5zaXRpb24gaWYgdGhlcmUncyBub3RoaW5nIHByZXZpb3VzIHRvIHRyYW5zaXRpb24gZnJvbVxuXG5cbiAgICBpZiAoIWFueVByZXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBfcC50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBpZiAoZGVsYXkgPiAwKSB7XG4gICAgICAgIGVsZS5kZWxheUFuaW1hdGlvbihkZWxheSkucGxheSgpLnByb21pc2UoKS50aGVuKHJlc29sdmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGVsZS5hbmltYXRpb24oe1xuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcbiAgICAgICAgZWFzaW5nOiBlbGUucHN0eWxlKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicpLnZhbHVlLFxuICAgICAgICBxdWV1ZTogZmFsc2VcbiAgICAgIH0pLnBsYXkoKS5wcm9taXNlKCk7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBpZiggIWlzQnlwYXNzICl7XG4gICAgICBzZWxmLnJlbW92ZUJ5cGFzc2VzKGVsZSwgcHJvcHMpO1xuICAgICAgZWxlLmVtaXRBbmROb3RpZnkoJ3N0eWxlJyk7IC8vIH1cblxuICAgICAgX3AudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKF9wLnRyYW5zaXRpb25pbmcpIHtcbiAgICB0aGlzLnJlbW92ZUJ5cGFzc2VzKGVsZSwgcHJvcHMpO1xuICAgIGVsZS5lbWl0QW5kTm90aWZ5KCdzdHlsZScpO1xuICAgIF9wLnRyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgfVxufTtcblxuc3R5Zm4uY2hlY2tUcmlnZ2VyID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlLCBnZXRUcmlnZ2VyLCBvblRyaWdnZXIpIHtcbiAgdmFyIHByb3AgPSB0aGlzLnByb3BlcnRpZXNbbmFtZV07XG4gIHZhciB0cmlnZ2VyQ2hlY2sgPSBnZXRUcmlnZ2VyKHByb3ApO1xuXG4gIGlmICh0cmlnZ2VyQ2hlY2sgIT0gbnVsbCAmJiB0cmlnZ2VyQ2hlY2soZnJvbVZhbHVlLCB0b1ZhbHVlKSkge1xuICAgIG9uVHJpZ2dlcihwcm9wKTtcbiAgfVxufTtcblxuc3R5Zm4uY2hlY2taT3JkZXJUcmlnZ2VyID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5jaGVja1RyaWdnZXIoZWxlLCBuYW1lLCBmcm9tVmFsdWUsIHRvVmFsdWUsIGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgcmV0dXJuIHByb3AudHJpZ2dlcnNaT3JkZXI7XG4gIH0sIGZ1bmN0aW9uICgpIHtcbiAgICBfdGhpcy5fcHJpdmF0ZS5jeS5ub3RpZnkoJ3pvcmRlcicsIGVsZSk7XG4gIH0pO1xufTtcblxuc3R5Zm4uY2hlY2tCb3VuZHNUcmlnZ2VyID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKSB7XG4gIHRoaXMuY2hlY2tUcmlnZ2VyKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlLCBmdW5jdGlvbiAocHJvcCkge1xuICAgIHJldHVybiBwcm9wLnRyaWdnZXJzQm91bmRzO1xuICB9LCBmdW5jdGlvbiAocHJvcCkge1xuICAgIGVsZS5kaXJ0eUNvbXBvdW5kQm91bmRzQ2FjaGUoKTtcbiAgICBlbGUuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7IC8vIGlmIHRoZSBwcm9wIGNoYW5nZSBtYWtlcyB0aGUgYmIgb2YgcGxsIGJlemllciBlZGdlcyBpbnZhbGlkLFxuICAgIC8vIHRoZW4gZGlydHkgdGhlIHBsbCBlZGdlIGJiIGNhY2hlIGFzIHdlbGxcblxuICAgIGlmICggLy8gb25seSBmb3IgYmV6aWVycyAtLSBzbyBwZXJmb3JtYW5jZSBvZiBvdGhlciBlZGdlcyBpc24ndCBhZmZlY3RlZFxuICAgIG5hbWUgPT09ICdjdXJ2ZS1zdHlsZScgJiYgKGZyb21WYWx1ZSA9PT0gJ2JlemllcicgfHwgdG9WYWx1ZSA9PT0gJ2JlemllcicpICYmIHByb3AudHJpZ2dlcnNCb3VuZHNPZlBhcmFsbGVsQmV6aWVycykge1xuICAgICAgZWxlLnBhcmFsbGVsRWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChwbGxFZGdlKSB7XG4gICAgICAgIGlmIChwbGxFZGdlLmlzQnVuZGxlZEJlemllcigpKSB7XG4gICAgICAgICAgcGxsRWRnZS5kaXJ0eUJvdW5kaW5nQm94Q2FjaGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn07XG5cbnN0eWZuLmNoZWNrVHJpZ2dlcnMgPSBmdW5jdGlvbiAoZWxlLCBuYW1lLCBmcm9tVmFsdWUsIHRvVmFsdWUpIHtcbiAgZWxlLmRpcnR5U3R5bGVDYWNoZSgpO1xuICB0aGlzLmNoZWNrWk9yZGVyVHJpZ2dlcihlbGUsIG5hbWUsIGZyb21WYWx1ZSwgdG9WYWx1ZSk7XG4gIHRoaXMuY2hlY2tCb3VuZHNUcmlnZ2VyKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKTtcbn07XG5cbnZhciBzdHlmbiQxID0ge307IC8vIGJ5cGFzc2VzIGFyZSBhcHBsaWVkIHRvIGFuIGV4aXN0aW5nIHN0eWxlIG9uIGFuIGVsZW1lbnQsIGFuZCBqdXN0IHRhY2tlZCBvbiB0ZW1wb3JhcmlseVxuLy8gcmV0dXJucyB0cnVlIGlmZiBhcHBsaWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bCBmb3IgYXQgbGVhc3QgMSBzcGVjaWZpZWQgcHJvcGVydHlcblxuc3R5Zm4kMS5hcHBseUJ5cGFzcyA9IGZ1bmN0aW9uIChlbGVzLCBuYW1lLCB2YWx1ZSwgdXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgcHJvcHMgPSBbXTtcbiAgdmFyIGlzQnlwYXNzID0gdHJ1ZTsgLy8gcHV0IGFsbCB0aGUgcHJvcGVydGllcyAoY2FuIHNwZWNpZnkgb25lIG9yIG1hbnkpIGluIGFuIGFycmF5IGFmdGVyIHBhcnNpbmcgdGhlbVxuXG4gIGlmIChuYW1lID09PSAnKicgfHwgbmFtZSA9PT0gJyoqJykge1xuICAgIC8vIGFwcGx5IHRvIGFsbCBwcm9wZXJ0eSBuYW1lc1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYucHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcHJvcCA9IHNlbGYucHJvcGVydGllc1tpXTtcbiAgICAgICAgdmFyIF9uYW1lID0gcHJvcC5uYW1lO1xuICAgICAgICB2YXIgcGFyc2VkUHJvcCA9IHRoaXMucGFyc2UoX25hbWUsIHZhbHVlLCB0cnVlKTtcblxuICAgICAgICBpZiAocGFyc2VkUHJvcCkge1xuICAgICAgICAgIHByb3BzLnB1c2gocGFyc2VkUHJvcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoc3RyaW5nKG5hbWUpKSB7XG4gICAgLy8gdGhlbiBwYXJzZSB0aGUgc2luZ2xlIHByb3BlcnR5XG4gICAgdmFyIF9wYXJzZWRQcm9wID0gdGhpcy5wYXJzZShuYW1lLCB2YWx1ZSwgdHJ1ZSk7XG5cbiAgICBpZiAoX3BhcnNlZFByb3ApIHtcbiAgICAgIHByb3BzLnB1c2goX3BhcnNlZFByb3ApO1xuICAgIH1cbiAgfSBlbHNlIGlmIChwbGFpbk9iamVjdChuYW1lKSkge1xuICAgIC8vIHRoZW4gcGFyc2UgZWFjaCBwcm9wZXJ0eVxuICAgIHZhciBzcGVjaWZpZWRQcm9wcyA9IG5hbWU7XG4gICAgdXBkYXRlVHJhbnNpdGlvbnMgPSB2YWx1ZTtcbiAgICB2YXIgbmFtZXMgPSBPYmplY3Qua2V5cyhzcGVjaWZpZWRQcm9wcyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbmFtZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX25hbWUyID0gbmFtZXNbX2ldO1xuICAgICAgdmFyIF92YWx1ZSA9IHNwZWNpZmllZFByb3BzW19uYW1lMl07XG5cbiAgICAgIGlmIChfdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyB0cnkgY2FtZWwgY2FzZSBuYW1lIHRvb1xuICAgICAgICBfdmFsdWUgPSBzcGVjaWZpZWRQcm9wc1tkYXNoMmNhbWVsKF9uYW1lMildO1xuICAgICAgfVxuXG4gICAgICBpZiAoX3ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIF9wYXJzZWRQcm9wMiA9IHRoaXMucGFyc2UoX25hbWUyLCBfdmFsdWUsIHRydWUpO1xuXG4gICAgICAgIGlmIChfcGFyc2VkUHJvcDIpIHtcbiAgICAgICAgICBwcm9wcy5wdXNoKF9wYXJzZWRQcm9wMik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gY2FuJ3QgZG8gYW55dGhpbmcgd2l0aG91dCB3ZWxsIGRlZmluZWQgcHJvcGVydGllc1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyB3ZSd2ZSBmYWlsZWQgaWYgdGhlcmUgYXJlIG5vIHZhbGlkIHByb3BlcnRpZXNcblxuXG4gIGlmIChwcm9wcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gbm93LCBhcHBseSB0aGUgYnlwYXNzIHByb3BlcnRpZXMgb24gdGhlIGVsZW1lbnRzXG5cblxuICB2YXIgcmV0ID0gZmFsc2U7IC8vIHJldHVybiB0cnVlIGlmIGF0IGxlYXN0IG9uZSBzdWNjZXNmdWwgYnlwYXNzIGFwcGxpZWRcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBlbGVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAvLyBmb3IgZWFjaCBlbGVcbiAgICB2YXIgZWxlID0gZWxlc1tfaTJdO1xuICAgIHZhciBkaWZmUHJvcHMgPSB7fTtcbiAgICB2YXIgZGlmZlByb3AgPSB2b2lkIDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BzLmxlbmd0aDsgaisrKSB7XG4gICAgICAvLyBmb3IgZWFjaCBwcm9wXG4gICAgICB2YXIgX3Byb3AgPSBwcm9wc1tqXTtcblxuICAgICAgaWYgKHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gICAgICAgIHZhciBwcmV2UHJvcCA9IGVsZS5wc3R5bGUoX3Byb3AubmFtZSk7XG4gICAgICAgIGRpZmZQcm9wID0gZGlmZlByb3BzW19wcm9wLm5hbWVdID0ge1xuICAgICAgICAgIHByZXY6IHByZXZQcm9wXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldCA9IHRoaXMuYXBwbHlQYXJzZWRQcm9wZXJ0eShlbGUsIGNvcHkoX3Byb3ApKSB8fCByZXQ7XG5cbiAgICAgIGlmICh1cGRhdGVUcmFuc2l0aW9ucykge1xuICAgICAgICBkaWZmUHJvcC5uZXh0ID0gZWxlLnBzdHlsZShfcHJvcC5uYW1lKTtcbiAgICAgIH1cbiAgICB9IC8vIGZvciBwcm9wc1xuXG5cbiAgICBpZiAocmV0KSB7XG4gICAgICB0aGlzLnVwZGF0ZVN0eWxlSGludHMoZWxlKTtcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgICAgIHRoaXMudXBkYXRlVHJhbnNpdGlvbnMoZWxlLCBkaWZmUHJvcHMsIGlzQnlwYXNzKTtcbiAgICB9XG4gIH0gLy8gZm9yIGVsZXNcblxuXG4gIHJldHVybiByZXQ7XG59OyAvLyBvbmx5IHVzZWZ1bCBpbiBzcGVjaWZpYyBjYXNlcyBsaWtlIGFuaW1hdGlvblxuXG5cbnN0eWZuJDEub3ZlcnJpZGVCeXBhc3MgPSBmdW5jdGlvbiAoZWxlcywgbmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IGNhbWVsMmRhc2gobmFtZSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgdmFyIHByb3AgPSBlbGUuX3ByaXZhdGUuc3R5bGVbbmFtZV07XG4gICAgdmFyIHR5cGUgPSB0aGlzLnByb3BlcnRpZXNbbmFtZV0udHlwZTtcbiAgICB2YXIgaXNDb2xvciA9IHR5cGUuY29sb3I7XG4gICAgdmFyIGlzTXVsdGkgPSB0eXBlLm11dGlwbGU7XG4gICAgdmFyIG9sZFZhbHVlID0gIXByb3AgPyBudWxsIDogcHJvcC5wZlZhbHVlICE9IG51bGwgPyBwcm9wLnBmVmFsdWUgOiBwcm9wLnZhbHVlO1xuXG4gICAgaWYgKCFwcm9wIHx8ICFwcm9wLmJ5cGFzcykge1xuICAgICAgLy8gbmVlZCBhIGJ5cGFzcyBpZiBvbmUgZG9lc24ndCBleGlzdFxuICAgICAgdGhpcy5hcHBseUJ5cGFzcyhlbGUsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvcC52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICBpZiAocHJvcC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgcHJvcC5wZlZhbHVlID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0NvbG9yKSB7XG4gICAgICAgIHByb3Auc3RyVmFsdWUgPSAncmdiKCcgKyB2YWx1ZS5qb2luKCcsJykgKyAnKSc7XG4gICAgICB9IGVsc2UgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgcHJvcC5zdHJWYWx1ZSA9IHZhbHVlLmpvaW4oJyAnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3Auc3RyVmFsdWUgPSAnJyArIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVwZGF0ZVN0eWxlSGludHMoZWxlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrVHJpZ2dlcnMoZWxlLCBuYW1lLCBvbGRWYWx1ZSwgdmFsdWUpO1xuICB9XG59O1xuXG5zdHlmbiQxLnJlbW92ZUFsbEJ5cGFzc2VzID0gZnVuY3Rpb24gKGVsZXMsIHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gIHJldHVybiB0aGlzLnJlbW92ZUJ5cGFzc2VzKGVsZXMsIHRoaXMucHJvcGVydHlOYW1lcywgdXBkYXRlVHJhbnNpdGlvbnMpO1xufTtcblxuc3R5Zm4kMS5yZW1vdmVCeXBhc3NlcyA9IGZ1bmN0aW9uIChlbGVzLCBwcm9wcywgdXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgdmFyIGlzQnlwYXNzID0gdHJ1ZTtcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IGVsZXMubGVuZ3RoOyBqKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tqXTtcbiAgICB2YXIgZGlmZlByb3BzID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmFtZSA9IHByb3BzW2ldO1xuICAgICAgdmFyIHByb3AgPSB0aGlzLnByb3BlcnRpZXNbbmFtZV07XG4gICAgICB2YXIgcHJldlByb3AgPSBlbGUucHN0eWxlKHByb3AubmFtZSk7XG5cbiAgICAgIGlmICghcHJldlByb3AgfHwgIXByZXZQcm9wLmJ5cGFzcykge1xuICAgICAgICAvLyBpZiBhIGJ5cGFzcyBkb2Vzbid0IGV4aXN0IGZvciB0aGUgcHJvcCwgbm90aGluZyBuZWVkcyB0byBiZSByZW1vdmVkXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgdmFsdWUgPSAnJzsgLy8gZW1wdHkgPT4gcmVtb3ZlIGJ5cGFzc1xuXG4gICAgICB2YXIgcGFyc2VkUHJvcCA9IHRoaXMucGFyc2UobmFtZSwgdmFsdWUsIHRydWUpO1xuICAgICAgdmFyIGRpZmZQcm9wID0gZGlmZlByb3BzW3Byb3AubmFtZV0gPSB7XG4gICAgICAgIHByZXY6IHByZXZQcm9wXG4gICAgICB9O1xuICAgICAgdGhpcy5hcHBseVBhcnNlZFByb3BlcnR5KGVsZSwgcGFyc2VkUHJvcCk7XG4gICAgICBkaWZmUHJvcC5uZXh0ID0gZWxlLnBzdHlsZShwcm9wLm5hbWUpO1xuICAgIH0gLy8gZm9yIHByb3BzXG5cblxuICAgIHRoaXMudXBkYXRlU3R5bGVIaW50cyhlbGUpO1xuXG4gICAgaWYgKHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRyYW5zaXRpb25zKGVsZSwgZGlmZlByb3BzLCBpc0J5cGFzcyk7XG4gICAgfVxuICB9IC8vIGZvciBlbGVzXG5cbn07XG5cbnZhciBzdHlmbiQyID0ge307IC8vIGdldHMgd2hhdCBhbiBlbSBzaXplIGNvcnJlc3BvbmRzIHRvIGluIHBpeGVscyByZWxhdGl2ZSB0byBhIGRvbSBlbGVtZW50XG5cbnN0eWZuJDIuZ2V0RW1TaXplSW5QaXhlbHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBweCA9IHRoaXMuY29udGFpbmVyQ3NzKCdmb250LXNpemUnKTtcblxuICBpZiAocHggIT0gbnVsbCkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHB4KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMTsgLy8gZm9yIGhlYWRsZXNzXG4gIH1cbn07IC8vIGdldHMgY3NzIHByb3BlcnR5IGZyb20gdGhlIGNvcmUgY29udGFpbmVyXG5cblxuc3R5Zm4kMi5jb250YWluZXJDc3MgPSBmdW5jdGlvbiAocHJvcE5hbWUpIHtcbiAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgdmFyIGRvbUVsZW1lbnQgPSBjeS5jb250YWluZXIoKTtcblxuICBpZiAod2luZG93JDEgJiYgZG9tRWxlbWVudCAmJiB3aW5kb3ckMS5nZXRDb21wdXRlZFN0eWxlKSB7XG4gICAgcmV0dXJuIHdpbmRvdyQxLmdldENvbXB1dGVkU3R5bGUoZG9tRWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wTmFtZSk7XG4gIH1cbn07XG5cbnZhciBzdHlmbiQzID0ge307IC8vIGdldHMgdGhlIHJlbmRlcmVkIHN0eWxlIGZvciBhbiBlbGVtZW50XG5cbnN0eWZuJDMuZ2V0UmVuZGVyZWRTdHlsZSA9IGZ1bmN0aW9uIChlbGUsIHByb3ApIHtcbiAgaWYgKHByb3ApIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHlsZVByb3BlcnR5VmFsdWUoZWxlLCBwcm9wLCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSYXdTdHlsZShlbGUsIHRydWUpO1xuICB9XG59OyAvLyBnZXRzIHRoZSByYXcgc3R5bGUgZm9yIGFuIGVsZW1lbnRcblxuXG5zdHlmbiQzLmdldFJhd1N0eWxlID0gZnVuY3Rpb24gKGVsZSwgaXNSZW5kZXJlZFZhbCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGVsZSA9IGVsZVswXTsgLy8gaW5zdXJlIGl0J3MgYW4gZWxlbWVudFxuXG4gIGlmIChlbGUpIHtcbiAgICB2YXIgcnN0eWxlID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYucHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHByb3AgPSBzZWxmLnByb3BlcnRpZXNbaV07XG4gICAgICB2YXIgdmFsID0gc2VsZi5nZXRTdHlsZVByb3BlcnR5VmFsdWUoZWxlLCBwcm9wLm5hbWUsIGlzUmVuZGVyZWRWYWwpO1xuXG4gICAgICBpZiAodmFsICE9IG51bGwpIHtcbiAgICAgICAgcnN0eWxlW3Byb3AubmFtZV0gPSB2YWw7XG4gICAgICAgIHJzdHlsZVtkYXNoMmNhbWVsKHByb3AubmFtZSldID0gdmFsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByc3R5bGU7XG4gIH1cbn07XG5cbnN0eWZuJDMuZ2V0SW5kZXhlZFN0eWxlID0gZnVuY3Rpb24gKGVsZSwgcHJvcGVydHksIHN1YnByb3BlcnR5LCBpbmRleCkge1xuICB2YXIgcHN0eWxlID0gZWxlLnBzdHlsZShwcm9wZXJ0eSlbc3VicHJvcGVydHldW2luZGV4XTtcbiAgcmV0dXJuIHBzdHlsZSAhPSBudWxsID8gcHN0eWxlIDogZWxlLmN5KCkuc3R5bGUoKS5nZXREZWZhdWx0UHJvcGVydHkocHJvcGVydHkpW3N1YnByb3BlcnR5XVswXTtcbn07XG5cbnN0eWZuJDMuZ2V0U3R5bGVQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24gKGVsZSwgcHJvcE5hbWUsIGlzUmVuZGVyZWRWYWwpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBlbGUgPSBlbGVbMF07IC8vIGluc3VyZSBpdCdzIGFuIGVsZW1lbnRcblxuICBpZiAoZWxlKSB7XG4gICAgdmFyIHByb3AgPSBzZWxmLnByb3BlcnRpZXNbcHJvcE5hbWVdO1xuXG4gICAgaWYgKHByb3AuYWxpYXMpIHtcbiAgICAgIHByb3AgPSBwcm9wLnBvaW50c1RvO1xuICAgIH1cblxuICAgIHZhciB0eXBlID0gcHJvcC50eXBlO1xuICAgIHZhciBzdHlsZVByb3AgPSBlbGUucHN0eWxlKHByb3AubmFtZSk7XG5cbiAgICBpZiAoc3R5bGVQcm9wKSB7XG4gICAgICB2YXIgdmFsdWUgPSBzdHlsZVByb3AudmFsdWUsXG4gICAgICAgICAgdW5pdHMgPSBzdHlsZVByb3AudW5pdHMsXG4gICAgICAgICAgc3RyVmFsdWUgPSBzdHlsZVByb3Auc3RyVmFsdWU7XG5cbiAgICAgIGlmIChpc1JlbmRlcmVkVmFsICYmIHR5cGUubnVtYmVyICYmIHZhbHVlICE9IG51bGwgJiYgbnVtYmVyKHZhbHVlKSkge1xuICAgICAgICB2YXIgem9vbSA9IGVsZS5jeSgpLnpvb20oKTtcblxuICAgICAgICB2YXIgZ2V0UmVuZGVyZWRWYWx1ZSA9IGZ1bmN0aW9uIGdldFJlbmRlcmVkVmFsdWUodmFsKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbCAqIHpvb207XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGdldFZhbHVlU3RyaW5nV2l0aFVuaXRzID0gZnVuY3Rpb24gZ2V0VmFsdWVTdHJpbmdXaXRoVW5pdHModmFsLCB1bml0cykge1xuICAgICAgICAgIHJldHVybiBnZXRSZW5kZXJlZFZhbHVlKHZhbCkgKyB1bml0cztcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgaXNBcnJheVZhbHVlID0gYXJyYXkodmFsdWUpO1xuICAgICAgICB2YXIgaGF2ZVVuaXRzID0gaXNBcnJheVZhbHVlID8gdW5pdHMuZXZlcnkoZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgICByZXR1cm4gdSAhPSBudWxsO1xuICAgICAgICB9KSA6IHVuaXRzICE9IG51bGw7XG5cbiAgICAgICAgaWYgKGhhdmVVbml0cykge1xuICAgICAgICAgIGlmIChpc0FycmF5VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlU3RyaW5nV2l0aFVuaXRzKHYsIHVuaXRzW2ldKTtcbiAgICAgICAgICAgIH0pLmpvaW4oJyAnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlU3RyaW5nV2l0aFVuaXRzKHZhbHVlLCB1bml0cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0FycmF5VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZyh2KSA/IHYgOiAnJyArIGdldFJlbmRlcmVkVmFsdWUodik7XG4gICAgICAgICAgICB9KS5qb2luKCcgJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJyArIGdldFJlbmRlcmVkVmFsdWUodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzdHJWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuc3R5Zm4kMy5nZXRBbmltYXRpb25TdGFydFN0eWxlID0gZnVuY3Rpb24gKGVsZSwgYW5pUHJvcHMpIHtcbiAgdmFyIHJzdHlsZSA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYW5pUHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYW5pUHJvcCA9IGFuaVByb3BzW2ldO1xuICAgIHZhciBuYW1lID0gYW5pUHJvcC5uYW1lO1xuICAgIHZhciBzdHlsZVByb3AgPSBlbGUucHN0eWxlKG5hbWUpO1xuXG4gICAgaWYgKHN0eWxlUHJvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyB0aGVuIG1ha2UgYSBwcm9wIG9mIGl0XG4gICAgICBpZiAocGxhaW5PYmplY3Qoc3R5bGVQcm9wKSkge1xuICAgICAgICBzdHlsZVByb3AgPSB0aGlzLnBhcnNlKG5hbWUsIHN0eWxlUHJvcC5zdHJWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHlsZVByb3AgPSB0aGlzLnBhcnNlKG5hbWUsIHN0eWxlUHJvcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlUHJvcCkge1xuICAgICAgcnN0eWxlW25hbWVdID0gc3R5bGVQcm9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByc3R5bGU7XG59O1xuXG5zdHlmbiQzLmdldFByb3BzTGlzdCA9IGZ1bmN0aW9uIChwcm9wc09iaikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByc3R5bGUgPSBbXTtcbiAgdmFyIHN0eWxlID0gcHJvcHNPYmo7XG4gIHZhciBwcm9wcyA9IHNlbGYucHJvcGVydGllcztcblxuICBpZiAoc3R5bGUpIHtcbiAgICB2YXIgbmFtZXMgPSBPYmplY3Qua2V5cyhzdHlsZSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgdmFyIHZhbCA9IHN0eWxlW25hbWVdO1xuICAgICAgdmFyIHByb3AgPSBwcm9wc1tuYW1lXSB8fCBwcm9wc1tjYW1lbDJkYXNoKG5hbWUpXTtcbiAgICAgIHZhciBzdHlsZVByb3AgPSB0aGlzLnBhcnNlKHByb3AubmFtZSwgdmFsKTtcblxuICAgICAgaWYgKHN0eWxlUHJvcCkge1xuICAgICAgICByc3R5bGUucHVzaChzdHlsZVByb3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByc3R5bGU7XG59O1xuXG5zdHlmbiQzLmdldE5vbkRlZmF1bHRQcm9wZXJ0aWVzSGFzaCA9IGZ1bmN0aW9uIChlbGUsIHByb3BOYW1lcywgc2VlZCkge1xuICB2YXIgaGFzaCA9IHNlZWQuc2xpY2UoKTtcbiAgdmFyIG5hbWUsIHZhbCwgc3RyVmFsLCBjaFZhbDtcbiAgdmFyIGksIGo7XG5cbiAgZm9yIChpID0gMDsgaSA8IHByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIG5hbWUgPSBwcm9wTmFtZXNbaV07XG4gICAgdmFsID0gZWxlLnBzdHlsZShuYW1lLCBmYWxzZSk7XG5cbiAgICBpZiAodmFsID09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gZWxzZSBpZiAodmFsLnBmVmFsdWUgIT0gbnVsbCkge1xuICAgICAgaGFzaFswXSA9IGhhc2hJbnQoY2hWYWwsIGhhc2hbMF0pO1xuICAgICAgaGFzaFsxXSA9IGhhc2hJbnRBbHQoY2hWYWwsIGhhc2hbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJWYWwgPSB2YWwuc3RyVmFsdWU7XG5cbiAgICAgIGZvciAoaiA9IDA7IGogPCBzdHJWYWwubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY2hWYWwgPSBzdHJWYWwuY2hhckNvZGVBdChqKTtcbiAgICAgICAgaGFzaFswXSA9IGhhc2hJbnQoY2hWYWwsIGhhc2hbMF0pO1xuICAgICAgICBoYXNoWzFdID0gaGFzaEludEFsdChjaFZhbCwgaGFzaFsxXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59O1xuXG5zdHlmbiQzLmdldFByb3BlcnRpZXNIYXNoID0gc3R5Zm4kMy5nZXROb25EZWZhdWx0UHJvcGVydGllc0hhc2g7XG5cbnZhciBzdHlmbiQ0ID0ge307XG5cbnN0eWZuJDQuYXBwZW5kRnJvbUpzb24gPSBmdW5jdGlvbiAoanNvbikge1xuICB2YXIgc3R5bGUgPSB0aGlzO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwganNvbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjb250ZXh0ID0ganNvbltpXTtcbiAgICB2YXIgc2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yO1xuICAgIHZhciBwcm9wcyA9IGNvbnRleHQuc3R5bGUgfHwgY29udGV4dC5jc3M7XG4gICAgdmFyIG5hbWVzID0gT2JqZWN0LmtleXMocHJvcHMpO1xuICAgIHN0eWxlLnNlbGVjdG9yKHNlbGVjdG9yKTsgLy8gYXBwbHkgc2VsZWN0b3JcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmFtZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBuYW1lID0gbmFtZXNbal07XG4gICAgICB2YXIgdmFsdWUgPSBwcm9wc1tuYW1lXTtcbiAgICAgIHN0eWxlLmNzcyhuYW1lLCB2YWx1ZSk7IC8vIGFwcGx5IHByb3BlcnR5XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufTsgLy8gYWNjZXNzaWJsZSBjeS5zdHlsZSgpIGZ1bmN0aW9uXG5cblxuc3R5Zm4kNC5mcm9tSnNvbiA9IGZ1bmN0aW9uIChqc29uKSB7XG4gIHZhciBzdHlsZSA9IHRoaXM7XG4gIHN0eWxlLnJlc2V0VG9EZWZhdWx0KCk7XG4gIHN0eWxlLmFwcGVuZEZyb21Kc29uKGpzb24pO1xuICByZXR1cm4gc3R5bGU7XG59OyAvLyBnZXQganNvbiBmcm9tIGN5LnN0eWxlKCkgYXBpXG5cblxuc3R5Zm4kNC5qc29uID0gZnVuY3Rpb24gKCkge1xuICB2YXIganNvbiA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSB0aGlzLmRlZmF1bHRMZW5ndGg7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGN4dCA9IHRoaXNbaV07XG4gICAgdmFyIHNlbGVjdG9yID0gY3h0LnNlbGVjdG9yO1xuICAgIHZhciBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzO1xuICAgIHZhciBjc3MgPSB7fTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJvcHMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBwcm9wID0gcHJvcHNbal07XG4gICAgICBjc3NbcHJvcC5uYW1lXSA9IHByb3Auc3RyVmFsdWU7XG4gICAgfVxuXG4gICAganNvbi5wdXNoKHtcbiAgICAgIHNlbGVjdG9yOiAhc2VsZWN0b3IgPyAnY29yZScgOiBzZWxlY3Rvci50b1N0cmluZygpLFxuICAgICAgc3R5bGU6IGNzc1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGpzb247XG59O1xuXG52YXIgc3R5Zm4kNSA9IHt9O1xuXG5zdHlmbiQ1LmFwcGVuZEZyb21TdHJpbmcgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHN0eWxlID0gdGhpcztcbiAgdmFyIHJlbWFpbmluZyA9ICcnICsgc3RyaW5nO1xuICB2YXIgc2VsQW5kQmxvY2tTdHI7XG4gIHZhciBibG9ja1JlbTtcbiAgdmFyIHByb3BBbmRWYWxTdHI7IC8vIHJlbW92ZSBjb21tZW50cyBmcm9tIHRoZSBzdHlsZSBzdHJpbmdcblxuICByZW1haW5pbmcgPSByZW1haW5pbmcucmVwbGFjZSgvWy9dWypdKFxcc3wuKSs/WypdWy9dL2csICcnKTtcblxuICBmdW5jdGlvbiByZW1vdmVTZWxBbmRCbG9ja0Zyb21SZW1haW5pbmcoKSB7XG4gICAgLy8gcmVtb3ZlIHRoZSBwYXJzZWQgc2VsZWN0b3IgYW5kIGJsb2NrIGZyb20gdGhlIHJlbWFpbmluZyB0ZXh0IHRvIHBhcnNlXG4gICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPiBzZWxBbmRCbG9ja1N0ci5sZW5ndGgpIHtcbiAgICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZy5zdWJzdHIoc2VsQW5kQmxvY2tTdHIubGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtYWluaW5nID0gJyc7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKSB7XG4gICAgLy8gcmVtb3ZlIHRoZSBwYXJzZWQgcHJvcGVydHkgYW5kIHZhbHVlIGZyb20gdGhlIHJlbWFpbmluZyBibG9jayB0ZXh0IHRvIHBhcnNlXG4gICAgaWYgKGJsb2NrUmVtLmxlbmd0aCA+IHByb3BBbmRWYWxTdHIubGVuZ3RoKSB7XG4gICAgICBibG9ja1JlbSA9IGJsb2NrUmVtLnN1YnN0cihwcm9wQW5kVmFsU3RyLmxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJsb2NrUmVtID0gJyc7XG4gICAgfVxuICB9XG5cbiAgZm9yICg7Oykge1xuICAgIHZhciBub3RoaW5nTGVmdFRvUGFyc2UgPSByZW1haW5pbmcubWF0Y2goL15cXHMqJC8pO1xuXG4gICAgaWYgKG5vdGhpbmdMZWZ0VG9QYXJzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIHNlbEFuZEJsb2NrID0gcmVtYWluaW5nLm1hdGNoKC9eXFxzKigoPzoufFxccykrPylcXHMqXFx7KCg/Oi58XFxzKSs/KVxcfS8pO1xuXG4gICAgaWYgKCFzZWxBbmRCbG9jaykge1xuICAgICAgd2FybignSGFsdGluZyBzdHlsZXNoZWV0IHBhcnNpbmc6IFN0cmluZyBzdHlsZXNoZWV0IGNvbnRhaW5zIG1vcmUgdG8gcGFyc2UgYnV0IG5vIHNlbGVjdG9yIGFuZCBibG9jayBmb3VuZCBpbjogJyArIHJlbWFpbmluZyk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzZWxBbmRCbG9ja1N0ciA9IHNlbEFuZEJsb2NrWzBdOyAvLyBwYXJzZSB0aGUgc2VsZWN0b3JcblxuICAgIHZhciBzZWxlY3RvclN0ciA9IHNlbEFuZEJsb2NrWzFdO1xuXG4gICAgaWYgKHNlbGVjdG9yU3RyICE9PSAnY29yZScpIHtcbiAgICAgIHZhciBzZWxlY3RvciA9IG5ldyBTZWxlY3RvcihzZWxlY3RvclN0cik7XG5cbiAgICAgIGlmIChzZWxlY3Rvci5pbnZhbGlkKSB7XG4gICAgICAgIHdhcm4oJ1NraXBwaW5nIHBhcnNpbmcgb2YgYmxvY2s6IEludmFsaWQgc2VsZWN0b3IgZm91bmQgaW4gc3RyaW5nIHN0eWxlc2hlZXQ6ICcgKyBzZWxlY3RvclN0cik7IC8vIHNraXAgdGhpcyBzZWxlY3RvciBhbmQgYmxvY2tcblxuICAgICAgICByZW1vdmVTZWxBbmRCbG9ja0Zyb21SZW1haW5pbmcoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfSAvLyBwYXJzZSB0aGUgYmxvY2sgb2YgcHJvcGVydGllcyBhbmQgdmFsdWVzXG5cblxuICAgIHZhciBibG9ja1N0ciA9IHNlbEFuZEJsb2NrWzJdO1xuICAgIHZhciBpbnZhbGlkQmxvY2sgPSBmYWxzZTtcbiAgICBibG9ja1JlbSA9IGJsb2NrU3RyO1xuICAgIHZhciBwcm9wcyA9IFtdO1xuXG4gICAgZm9yICg7Oykge1xuICAgICAgdmFyIF9ub3RoaW5nTGVmdFRvUGFyc2UgPSBibG9ja1JlbS5tYXRjaCgvXlxccyokLyk7XG5cbiAgICAgIGlmIChfbm90aGluZ0xlZnRUb1BhcnNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcEFuZFZhbCA9IGJsb2NrUmVtLm1hdGNoKC9eXFxzKiguKz8pXFxzKjpcXHMqKC4rPylcXHMqOy8pO1xuXG4gICAgICBpZiAoIXByb3BBbmRWYWwpIHtcbiAgICAgICAgd2FybignU2tpcHBpbmcgcGFyc2luZyBvZiBibG9jazogSW52YWxpZCBmb3JtYXR0aW5nIG9mIHN0eWxlIHByb3BlcnR5IGFuZCB2YWx1ZSBkZWZpbml0aW9ucyBmb3VuZCBpbjonICsgYmxvY2tTdHIpO1xuICAgICAgICBpbnZhbGlkQmxvY2sgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcHJvcEFuZFZhbFN0ciA9IHByb3BBbmRWYWxbMF07XG4gICAgICB2YXIgcHJvcFN0ciA9IHByb3BBbmRWYWxbMV07XG4gICAgICB2YXIgdmFsU3RyID0gcHJvcEFuZFZhbFsyXTtcbiAgICAgIHZhciBwcm9wID0gc2VsZi5wcm9wZXJ0aWVzW3Byb3BTdHJdO1xuXG4gICAgICBpZiAoIXByb3ApIHtcbiAgICAgICAgd2FybignU2tpcHBpbmcgcHJvcGVydHk6IEludmFsaWQgcHJvcGVydHkgbmFtZSBpbjogJyArIHByb3BBbmRWYWxTdHIpOyAvLyBza2lwIHRoaXMgcHJvcGVydHkgaW4gdGhlIGJsb2NrXG5cbiAgICAgICAgcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJzZWRQcm9wID0gc3R5bGUucGFyc2UocHJvcFN0ciwgdmFsU3RyKTtcblxuICAgICAgaWYgKCFwYXJzZWRQcm9wKSB7XG4gICAgICAgIHdhcm4oJ1NraXBwaW5nIHByb3BlcnR5OiBJbnZhbGlkIHByb3BlcnR5IGRlZmluaXRpb24gaW46ICcgKyBwcm9wQW5kVmFsU3RyKTsgLy8gc2tpcCB0aGlzIHByb3BlcnR5IGluIHRoZSBibG9ja1xuXG4gICAgICAgIHJlbW92ZVByb3BBbmRWYWxGcm9tUmVtKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwcm9wcy5wdXNoKHtcbiAgICAgICAgbmFtZTogcHJvcFN0cixcbiAgICAgICAgdmFsOiB2YWxTdHJcbiAgICAgIH0pO1xuICAgICAgcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKTtcbiAgICB9XG5cbiAgICBpZiAoaW52YWxpZEJsb2NrKSB7XG4gICAgICByZW1vdmVTZWxBbmRCbG9ja0Zyb21SZW1haW5pbmcoKTtcbiAgICAgIGJyZWFrO1xuICAgIH0gLy8gcHV0IHRoZSBwYXJzZWQgYmxvY2sgaW4gdGhlIHN0eWxlXG5cblxuICAgIHN0eWxlLnNlbGVjdG9yKHNlbGVjdG9yU3RyKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBfcHJvcCA9IHByb3BzW2ldO1xuICAgICAgc3R5bGUuY3NzKF9wcm9wLm5hbWUsIF9wcm9wLnZhbCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlU2VsQW5kQmxvY2tGcm9tUmVtYWluaW5nKCk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59O1xuXG5zdHlmbiQ1LmZyb21TdHJpbmcgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBzdHlsZSA9IHRoaXM7XG4gIHN0eWxlLnJlc2V0VG9EZWZhdWx0KCk7XG4gIHN0eWxlLmFwcGVuZEZyb21TdHJpbmcoc3RyaW5nKTtcbiAgcmV0dXJuIHN0eWxlO1xufTtcblxudmFyIHN0eWZuJDYgPSB7fTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIG51bWJlciA9IG51bWJlciQxO1xuICB2YXIgcmdiYSA9IHJnYmFOb0JhY2tSZWZzO1xuICB2YXIgaHNsYSA9IGhzbGFOb0JhY2tSZWZzO1xuICB2YXIgaGV4MyQxID0gaGV4MztcbiAgdmFyIGhleDYkMSA9IGhleDY7XG5cbiAgdmFyIGRhdGEgPSBmdW5jdGlvbiBkYXRhKHByZWZpeCkge1xuICAgIHJldHVybiAnXicgKyBwcmVmaXggKyAnXFxcXHMqXFxcXChcXFxccyooW1xcXFx3XFxcXC5dKylcXFxccypcXFxcKSQnO1xuICB9O1xuXG4gIHZhciBtYXBEYXRhID0gZnVuY3Rpb24gbWFwRGF0YShwcmVmaXgpIHtcbiAgICB2YXIgbWFwQXJnID0gbnVtYmVyICsgJ3xcXFxcdyt8JyArIHJnYmEgKyAnfCcgKyBoc2xhICsgJ3wnICsgaGV4MyQxICsgJ3wnICsgaGV4NiQxO1xuICAgIHJldHVybiAnXicgKyBwcmVmaXggKyAnXFxcXHMqXFxcXCgoW1xcXFx3XFxcXC5dKylcXFxccypcXFxcLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccypcXFxcLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccyosXFxcXHMqKCcgKyBtYXBBcmcgKyAnKVxcXFxzKlxcXFwsXFxcXHMqKCcgKyBtYXBBcmcgKyAnKVxcXFwpJCc7XG4gIH07XG5cbiAgdmFyIHVybFJlZ2V4ZXMgPSBbJ151cmxcXFxccypcXFxcKFxcXFxzKltcXCdcIl0/KC4rPylbXFwnXCJdP1xcXFxzKlxcXFwpJCcsICdeKG5vbmUpJCcsICdeKC4rKSQnXTsgLy8gZWFjaCB2aXN1YWwgc3R5bGUgcHJvcGVydHkgaGFzIGEgdHlwZSBhbmQgbmVlZHMgdG8gYmUgdmFsaWRhdGVkIGFjY29yZGluZyB0byBpdFxuXG4gIHN0eWZuJDYudHlwZXMgPSB7XG4gICAgdGltZToge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgbWluOiAwLFxuICAgICAgdW5pdHM6ICdzfG1zJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICdtcydcbiAgICB9LFxuICAgIHBlcmNlbnQ6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMTAwLFxuICAgICAgdW5pdHM6ICclJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICclJ1xuICAgIH0sXG4gICAgcGVyY2VudGFnZXM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMTAwLFxuICAgICAgdW5pdHM6ICclJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICclJyxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICB6ZXJvT25lTnVtYmVyOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICBtaW46IDAsXG4gICAgICBtYXg6IDEsXG4gICAgICB1bml0bGVzczogdHJ1ZVxuICAgIH0sXG4gICAgemVyb09uZU51bWJlcnM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMSxcbiAgICAgIHVuaXRsZXNzOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIG5PbmVPbmVOdW1iZXI6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogLTEsXG4gICAgICBtYXg6IDEsXG4gICAgICB1bml0bGVzczogdHJ1ZVxuICAgIH0sXG4gICAgbm9uTmVnYXRpdmVJbnQ6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIGludGVnZXI6IHRydWUsXG4gICAgICB1bml0bGVzczogdHJ1ZVxuICAgIH0sXG4gICAgcG9zaXRpb246IHtcbiAgICAgIGVudW1zOiBbJ3BhcmVudCcsICdvcmlnaW4nXVxuICAgIH0sXG4gICAgbm9kZVNpemU6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIGVudW1zOiBbJ2xhYmVsJ11cbiAgICB9LFxuICAgIG51bWJlcjoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgdW5pdGxlc3M6IHRydWVcbiAgICB9LFxuICAgIG51bWJlcnM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIHVuaXRsZXNzOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIHBvc2l0aXZlTnVtYmVyOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICB1bml0bGVzczogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIHN0cmljdE1pbjogdHJ1ZVxuICAgIH0sXG4gICAgc2l6ZToge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgbWluOiAwXG4gICAgfSxcbiAgICBiaWRpcmVjdGlvbmFsU2l6ZToge1xuICAgICAgbnVtYmVyOiB0cnVlXG4gICAgfSxcbiAgICAvLyBhbGxvd3MgbmVnYXRpdmVcbiAgICBiaWRpcmVjdGlvbmFsU2l6ZU1heWJlUGVyY2VudDoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgYWxsb3dQZXJjZW50OiB0cnVlXG4gICAgfSxcbiAgICAvLyBhbGxvd3MgbmVnYXRpdmVcbiAgICBiaWRpcmVjdGlvbmFsU2l6ZXM6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICAvLyBhbGxvd3MgbmVnYXRpdmVcbiAgICBzaXplTWF5YmVQZXJjZW50OiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICBtaW46IDAsXG4gICAgICBhbGxvd1BlcmNlbnQ6IHRydWVcbiAgICB9LFxuICAgIGF4aXNEaXJlY3Rpb246IHtcbiAgICAgIGVudW1zOiBbJ2hvcml6b250YWwnLCAnbGVmdHdhcmQnLCAncmlnaHR3YXJkJywgJ3ZlcnRpY2FsJywgJ3Vwd2FyZCcsICdkb3dud2FyZCcsICdhdXRvJ11cbiAgICB9LFxuICAgIHBhZGRpbmdSZWxhdGl2ZVRvOiB7XG4gICAgICBlbnVtczogWyd3aWR0aCcsICdoZWlnaHQnLCAnYXZlcmFnZScsICdtaW4nLCAnbWF4J11cbiAgICB9LFxuICAgIGJnV0g6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIGFsbG93UGVyY2VudDogdHJ1ZSxcbiAgICAgIGVudW1zOiBbJ2F1dG8nXSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBiZ1Bvczoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgYWxsb3dQZXJjZW50OiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIGJnUmVsYXRpdmVUbzoge1xuICAgICAgZW51bXM6IFsnaW5uZXInLCAnaW5jbHVkZS1wYWRkaW5nJ10sXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgYmdSZXBlYXQ6IHtcbiAgICAgIGVudW1zOiBbJ3JlcGVhdCcsICdyZXBlYXQteCcsICdyZXBlYXQteScsICduby1yZXBlYXQnXSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBiZ0ZpdDoge1xuICAgICAgZW51bXM6IFsnbm9uZScsICdjb250YWluJywgJ2NvdmVyJ10sXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgYmdDcm9zc09yaWdpbjoge1xuICAgICAgZW51bXM6IFsnYW5vbnltb3VzJywgJ3VzZS1jcmVkZW50aWFscyddLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIGJnQ2xpcDoge1xuICAgICAgZW51bXM6IFsnbm9uZScsICdub2RlJ10sXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgYmdDb250YWlubWVudDoge1xuICAgICAgZW51bXM6IFsnaW5zaWRlJywgJ292ZXInXSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBjb2xvcjoge1xuICAgICAgY29sb3I6IHRydWVcbiAgICB9LFxuICAgIGNvbG9yczoge1xuICAgICAgY29sb3I6IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgIH0sXG4gICAgZmlsbDoge1xuICAgICAgZW51bXM6IFsnc29saWQnLCAnbGluZWFyLWdyYWRpZW50JywgJ3JhZGlhbC1ncmFkaWVudCddXG4gICAgfSxcbiAgICBib29sOiB7XG4gICAgICBlbnVtczogWyd5ZXMnLCAnbm8nXVxuICAgIH0sXG4gICAgYm9vbHM6IHtcbiAgICAgIGVudW1zOiBbJ3llcycsICdubyddLFxuICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICB9LFxuICAgIGxpbmVTdHlsZToge1xuICAgICAgZW51bXM6IFsnc29saWQnLCAnZG90dGVkJywgJ2Rhc2hlZCddXG4gICAgfSxcbiAgICBsaW5lQ2FwOiB7XG4gICAgICBlbnVtczogWydidXR0JywgJ3JvdW5kJywgJ3NxdWFyZSddXG4gICAgfSxcbiAgICBib3JkZXJTdHlsZToge1xuICAgICAgZW51bXM6IFsnc29saWQnLCAnZG90dGVkJywgJ2Rhc2hlZCcsICdkb3VibGUnXVxuICAgIH0sXG4gICAgY3VydmVTdHlsZToge1xuICAgICAgZW51bXM6IFsnYmV6aWVyJywgJ3VuYnVuZGxlZC1iZXppZXInLCAnaGF5c3RhY2snLCAnc2VnbWVudHMnLCAnc3RyYWlnaHQnLCAnc3RyYWlnaHQtdHJpYW5nbGUnLCAndGF4aSddXG4gICAgfSxcbiAgICBmb250RmFtaWx5OiB7XG4gICAgICByZWdleDogJ14oW1xcXFx3LSBcXFxcXCJdKyg/OlxcXFxzKixcXFxccypbXFxcXHctIFxcXFxcIl0rKSopJCdcbiAgICB9LFxuICAgIGZvbnRTdHlsZToge1xuICAgICAgZW51bXM6IFsnaXRhbGljJywgJ25vcm1hbCcsICdvYmxpcXVlJ11cbiAgICB9LFxuICAgIGZvbnRXZWlnaHQ6IHtcbiAgICAgIGVudW1zOiBbJ25vcm1hbCcsICdib2xkJywgJ2JvbGRlcicsICdsaWdodGVyJywgJzEwMCcsICcyMDAnLCAnMzAwJywgJzQwMCcsICc1MDAnLCAnNjAwJywgJzgwMCcsICc5MDAnLCAxMDAsIDIwMCwgMzAwLCA0MDAsIDUwMCwgNjAwLCA3MDAsIDgwMCwgOTAwXVxuICAgIH0sXG4gICAgdGV4dERlY29yYXRpb246IHtcbiAgICAgIGVudW1zOiBbJ25vbmUnLCAndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCddXG4gICAgfSxcbiAgICB0ZXh0VHJhbnNmb3JtOiB7XG4gICAgICBlbnVtczogWydub25lJywgJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnXVxuICAgIH0sXG4gICAgdGV4dFdyYXA6IHtcbiAgICAgIGVudW1zOiBbJ25vbmUnLCAnd3JhcCcsICdlbGxpcHNpcyddXG4gICAgfSxcbiAgICB0ZXh0T3ZlcmZsb3dXcmFwOiB7XG4gICAgICBlbnVtczogWyd3aGl0ZXNwYWNlJywgJ2FueXdoZXJlJ11cbiAgICB9LFxuICAgIHRleHRCYWNrZ3JvdW5kU2hhcGU6IHtcbiAgICAgIGVudW1zOiBbJ3JlY3RhbmdsZScsICdyb3VuZHJlY3RhbmdsZScsICdyb3VuZC1yZWN0YW5nbGUnXVxuICAgIH0sXG4gICAgbm9kZVNoYXBlOiB7XG4gICAgICBlbnVtczogWydyZWN0YW5nbGUnLCAncm91bmRyZWN0YW5nbGUnLCAncm91bmQtcmVjdGFuZ2xlJywgJ2N1dHJlY3RhbmdsZScsICdjdXQtcmVjdGFuZ2xlJywgJ2JvdHRvbXJvdW5kcmVjdGFuZ2xlJywgJ2JvdHRvbS1yb3VuZC1yZWN0YW5nbGUnLCAnYmFycmVsJywgJ2VsbGlwc2UnLCAndHJpYW5nbGUnLCAncm91bmQtdHJpYW5nbGUnLCAnc3F1YXJlJywgJ3BlbnRhZ29uJywgJ3JvdW5kLXBlbnRhZ29uJywgJ2hleGFnb24nLCAncm91bmQtaGV4YWdvbicsICdjb25jYXZlaGV4YWdvbicsICdjb25jYXZlLWhleGFnb24nLCAnaGVwdGFnb24nLCAncm91bmQtaGVwdGFnb24nLCAnb2N0YWdvbicsICdyb3VuZC1vY3RhZ29uJywgJ3RhZycsICdyb3VuZC10YWcnLCAnc3RhcicsICdkaWFtb25kJywgJ3JvdW5kLWRpYW1vbmQnLCAndmVlJywgJ3Job21ib2lkJywgJ3BvbHlnb24nXVxuICAgIH0sXG4gICAgb3ZlcmxheVNoYXBlOiB7XG4gICAgICBlbnVtczogWydyb3VuZHJlY3RhbmdsZScsICdyb3VuZC1yZWN0YW5nbGUnLCAnZWxsaXBzZSddXG4gICAgfSxcbiAgICBjb21wb3VuZEluY2x1ZGVMYWJlbHM6IHtcbiAgICAgIGVudW1zOiBbJ2luY2x1ZGUnLCAnZXhjbHVkZSddXG4gICAgfSxcbiAgICBhcnJvd1NoYXBlOiB7XG4gICAgICBlbnVtczogWyd0ZWUnLCAndHJpYW5nbGUnLCAndHJpYW5nbGUtdGVlJywgJ2NpcmNsZS10cmlhbmdsZScsICd0cmlhbmdsZS1jcm9zcycsICd0cmlhbmdsZS1iYWNrY3VydmUnLCAndmVlJywgJ3NxdWFyZScsICdjaXJjbGUnLCAnZGlhbW9uZCcsICdjaGV2cm9uJywgJ25vbmUnXVxuICAgIH0sXG4gICAgYXJyb3dGaWxsOiB7XG4gICAgICBlbnVtczogWydmaWxsZWQnLCAnaG9sbG93J11cbiAgICB9LFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIGVudW1zOiBbJ2VsZW1lbnQnLCAnbm9uZSddXG4gICAgfSxcbiAgICB2aXNpYmlsaXR5OiB7XG4gICAgICBlbnVtczogWydoaWRkZW4nLCAndmlzaWJsZSddXG4gICAgfSxcbiAgICB6Q29tcG91bmREZXB0aDoge1xuICAgICAgZW51bXM6IFsnYm90dG9tJywgJ29ycGhhbicsICdhdXRvJywgJ3RvcCddXG4gICAgfSxcbiAgICB6SW5kZXhDb21wYXJlOiB7XG4gICAgICBlbnVtczogWydhdXRvJywgJ21hbnVhbCddXG4gICAgfSxcbiAgICB2YWxpZ246IHtcbiAgICAgIGVudW1zOiBbJ3RvcCcsICdjZW50ZXInLCAnYm90dG9tJ11cbiAgICB9LFxuICAgIGhhbGlnbjoge1xuICAgICAgZW51bXM6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnXVxuICAgIH0sXG4gICAganVzdGlmaWNhdGlvbjoge1xuICAgICAgZW51bXM6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnYXV0byddXG4gICAgfSxcbiAgICB0ZXh0OiB7XG4gICAgICBzdHJpbmc6IHRydWVcbiAgICB9LFxuICAgIGRhdGE6IHtcbiAgICAgIG1hcHBpbmc6IHRydWUsXG4gICAgICByZWdleDogZGF0YSgnZGF0YScpXG4gICAgfSxcbiAgICBsYXlvdXREYXRhOiB7XG4gICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgcmVnZXg6IGRhdGEoJ2xheW91dERhdGEnKVxuICAgIH0sXG4gICAgc2NyYXRjaDoge1xuICAgICAgbWFwcGluZzogdHJ1ZSxcbiAgICAgIHJlZ2V4OiBkYXRhKCdzY3JhdGNoJylcbiAgICB9LFxuICAgIG1hcERhdGE6IHtcbiAgICAgIG1hcHBpbmc6IHRydWUsXG4gICAgICByZWdleDogbWFwRGF0YSgnbWFwRGF0YScpXG4gICAgfSxcbiAgICBtYXBMYXlvdXREYXRhOiB7XG4gICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgcmVnZXg6IG1hcERhdGEoJ21hcExheW91dERhdGEnKVxuICAgIH0sXG4gICAgbWFwU2NyYXRjaDoge1xuICAgICAgbWFwcGluZzogdHJ1ZSxcbiAgICAgIHJlZ2V4OiBtYXBEYXRhKCdtYXBTY3JhdGNoJylcbiAgICB9LFxuICAgIGZuOiB7XG4gICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgZm46IHRydWVcbiAgICB9LFxuICAgIHVybDoge1xuICAgICAgcmVnZXhlczogdXJsUmVnZXhlcyxcbiAgICAgIHNpbmdsZVJlZ2V4TWF0Y2hWYWx1ZTogdHJ1ZVxuICAgIH0sXG4gICAgdXJsczoge1xuICAgICAgcmVnZXhlczogdXJsUmVnZXhlcyxcbiAgICAgIHNpbmdsZVJlZ2V4TWF0Y2hWYWx1ZTogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgfSxcbiAgICBwcm9wTGlzdDoge1xuICAgICAgcHJvcExpc3Q6IHRydWVcbiAgICB9LFxuICAgIGFuZ2xlOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICB1bml0czogJ2RlZ3xyYWQnLFxuICAgICAgaW1wbGljaXRVbml0czogJ3JhZCdcbiAgICB9LFxuICAgIHRleHRSb3RhdGlvbjoge1xuICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgdW5pdHM6ICdkZWd8cmFkJyxcbiAgICAgIGltcGxpY2l0VW5pdHM6ICdyYWQnLFxuICAgICAgZW51bXM6IFsnbm9uZScsICdhdXRvcm90YXRlJ11cbiAgICB9LFxuICAgIHBvbHlnb25Qb2ludExpc3Q6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgZXZlbk11bHRpcGxlOiB0cnVlLFxuICAgICAgbWluOiAtMSxcbiAgICAgIG1heDogMSxcbiAgICAgIHVuaXRsZXNzOiB0cnVlXG4gICAgfSxcbiAgICBlZGdlRGlzdGFuY2VzOiB7XG4gICAgICBlbnVtczogWydpbnRlcnNlY3Rpb24nLCAnbm9kZS1wb3NpdGlvbiddXG4gICAgfSxcbiAgICBlZGdlRW5kcG9pbnQ6IHtcbiAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgdW5pdHM6ICclfHB4fGVtfGRlZ3xyYWQnLFxuICAgICAgaW1wbGljaXRVbml0czogJ3B4JyxcbiAgICAgIGVudW1zOiBbJ2luc2lkZS10by1ub2RlJywgJ291dHNpZGUtdG8tbm9kZScsICdvdXRzaWRlLXRvLW5vZGUtb3ItbGFiZWwnLCAnb3V0c2lkZS10by1saW5lJywgJ291dHNpZGUtdG8tbGluZS1vci1sYWJlbCddLFxuICAgICAgc2luZ2xlRW51bTogdHJ1ZSxcbiAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiB2YWxpZGF0ZSh2YWxBcnIsIHVuaXRzQXJyKSB7XG4gICAgICAgIHN3aXRjaCAodmFsQXJyLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIC8vIGNhbiBiZSAlIG9yIHB4IG9ubHlcbiAgICAgICAgICAgIHJldHVybiB1bml0c0FyclswXSAhPT0gJ2RlZycgJiYgdW5pdHNBcnJbMF0gIT09ICdyYWQnICYmIHVuaXRzQXJyWzFdICE9PSAnZGVnJyAmJiB1bml0c0FyclsxXSAhPT0gJ3JhZCc7XG5cbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAvLyBjYW4gYmUgZW51bSwgZGVnLCBvciByYWQgb25seVxuICAgICAgICAgICAgcmV0dXJuIHN0cmluZyh2YWxBcnJbMF0pIHx8IHVuaXRzQXJyWzBdID09PSAnZGVnJyB8fCB1bml0c0FyclswXSA9PT0gJ3JhZCc7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBlYXNpbmc6IHtcbiAgICAgIHJlZ2V4ZXM6IFsnXihzcHJpbmcpXFxcXHMqXFxcXChcXFxccyooJyArIG51bWJlciArICcpXFxcXHMqLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccypcXFxcKSQnLCAnXihjdWJpYy1iZXppZXIpXFxcXHMqXFxcXChcXFxccyooJyArIG51bWJlciArICcpXFxcXHMqLFxcXFxzKignICsgbnVtYmVyICsgJylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIgKyAnKVxcXFxzKixcXFxccyooJyArIG51bWJlciArICcpXFxcXHMqXFxcXCkkJ10sXG4gICAgICBlbnVtczogWydsaW5lYXInLCAnZWFzZScsICdlYXNlLWluJywgJ2Vhc2Utb3V0JywgJ2Vhc2UtaW4tb3V0JywgJ2Vhc2UtaW4tc2luZScsICdlYXNlLW91dC1zaW5lJywgJ2Vhc2UtaW4tb3V0LXNpbmUnLCAnZWFzZS1pbi1xdWFkJywgJ2Vhc2Utb3V0LXF1YWQnLCAnZWFzZS1pbi1vdXQtcXVhZCcsICdlYXNlLWluLWN1YmljJywgJ2Vhc2Utb3V0LWN1YmljJywgJ2Vhc2UtaW4tb3V0LWN1YmljJywgJ2Vhc2UtaW4tcXVhcnQnLCAnZWFzZS1vdXQtcXVhcnQnLCAnZWFzZS1pbi1vdXQtcXVhcnQnLCAnZWFzZS1pbi1xdWludCcsICdlYXNlLW91dC1xdWludCcsICdlYXNlLWluLW91dC1xdWludCcsICdlYXNlLWluLWV4cG8nLCAnZWFzZS1vdXQtZXhwbycsICdlYXNlLWluLW91dC1leHBvJywgJ2Vhc2UtaW4tY2lyYycsICdlYXNlLW91dC1jaXJjJywgJ2Vhc2UtaW4tb3V0LWNpcmMnXVxuICAgIH0sXG4gICAgZ3JhZGllbnREaXJlY3Rpb246IHtcbiAgICAgIGVudW1zOiBbJ3RvLWJvdHRvbScsICd0by10b3AnLCAndG8tbGVmdCcsICd0by1yaWdodCcsICd0by1ib3R0b20tcmlnaHQnLCAndG8tYm90dG9tLWxlZnQnLCAndG8tdG9wLXJpZ2h0JywgJ3RvLXRvcC1sZWZ0JywgJ3RvLXJpZ2h0LWJvdHRvbScsICd0by1sZWZ0LWJvdHRvbScsICd0by1yaWdodC10b3AnLCAndG8tbGVmdC10b3AnXVxuICAgIH0sXG4gICAgYm91bmRzRXhwYW5zaW9uOiB7XG4gICAgICBudW1iZXI6IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG1pbjogMCxcbiAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiB2YWxpZGF0ZSh2YWxBcnIpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IHZhbEFyci5sZW5ndGg7XG4gICAgICAgIHJldHVybiBsZW5ndGggPT09IDEgfHwgbGVuZ3RoID09PSAyIHx8IGxlbmd0aCA9PT0gNDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHZhciBkaWZmID0ge1xuICAgIHplcm9Ob25aZXJvOiBmdW5jdGlvbiB6ZXJvTm9uWmVybyh2YWwxLCB2YWwyKSB7XG4gICAgICBpZiAoKHZhbDEgPT0gbnVsbCB8fCB2YWwyID09IG51bGwpICYmIHZhbDEgIT09IHZhbDIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIG51bGwgY2FzZXMgY291bGQgcmVwcmVzZW50IGFueSB2YWx1ZVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsMSA9PSAwICYmIHZhbDIgIT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsMSAhPSAwICYmIHZhbDIgPT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFueTogZnVuY3Rpb24gYW55KHZhbDEsIHZhbDIpIHtcbiAgICAgIHJldHVybiB2YWwxICE9IHZhbDI7XG4gICAgfSxcbiAgICBlbXB0eU5vbkVtcHR5OiBmdW5jdGlvbiBlbXB0eU5vbkVtcHR5KHN0cjEsIHN0cjIpIHtcbiAgICAgIHZhciBlbXB0eTEgPSBlbXB0eVN0cmluZyhzdHIxKTtcbiAgICAgIHZhciBlbXB0eTIgPSBlbXB0eVN0cmluZyhzdHIyKTtcbiAgICAgIHJldHVybiBlbXB0eTEgJiYgIWVtcHR5MiB8fCAhZW1wdHkxICYmIGVtcHR5MjtcbiAgICB9XG4gIH07IC8vIGRlZmluZSB2aXN1YWwgc3R5bGUgcHJvcGVydGllc1xuICAvL1xuICAvLyAtIG4uYi4gYWRkaW5nIGEgbmV3IGdyb3VwIG9mIHByb3BzIG1heSByZXF1aXJlIHVwZGF0ZXMgdG8gdXBkYXRlU3R5bGVIaW50cygpXG4gIC8vIC0gYWRkaW5nIG5ldyBwcm9wcyB0byBhbiBleGlzdGluZyBncm91cCBnZXRzIGhhbmRsZWQgYXV0b21hdGljYWxseVxuXG4gIHZhciB0ID0gc3R5Zm4kNi50eXBlcztcbiAgdmFyIG1haW5MYWJlbCA9IFt7XG4gICAgbmFtZTogJ2xhYmVsJyxcbiAgICB0eXBlOiB0LnRleHQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLmVtcHR5Tm9uRW1wdHlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LXJvdGF0aW9uJyxcbiAgICB0eXBlOiB0LnRleHRSb3RhdGlvbixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LW1hcmdpbi14JyxcbiAgICB0eXBlOiB0LmJpZGlyZWN0aW9uYWxTaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtbWFyZ2luLXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgc291cmNlTGFiZWwgPSBbe1xuICAgIG5hbWU6ICdzb3VyY2UtbGFiZWwnLFxuICAgIHR5cGU6IHQudGV4dCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdzb3VyY2UtdGV4dC1yb3RhdGlvbicsXG4gICAgdHlwZTogdC50ZXh0Um90YXRpb24sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLXRleHQtbWFyZ2luLXgnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLXRleHQtbWFyZ2luLXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLXRleHQtb2Zmc2V0JyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgdGFyZ2V0TGFiZWwgPSBbe1xuICAgIG5hbWU6ICd0YXJnZXQtbGFiZWwnLFxuICAgIHR5cGU6IHQudGV4dCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0YXJnZXQtdGV4dC1yb3RhdGlvbicsXG4gICAgdHlwZTogdC50ZXh0Um90YXRpb24sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGFyZ2V0LXRleHQtbWFyZ2luLXgnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGFyZ2V0LXRleHQtbWFyZ2luLXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGFyZ2V0LXRleHQtb2Zmc2V0JyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgbGFiZWxEaW1lbnNpb25zID0gW3tcbiAgICBuYW1lOiAnZm9udC1mYW1pbHknLFxuICAgIHR5cGU6IHQuZm9udEZhbWlseSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdmb250LXN0eWxlJyxcbiAgICB0eXBlOiB0LmZvbnRTdHlsZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdmb250LXdlaWdodCcsXG4gICAgdHlwZTogdC5mb250V2VpZ2h0LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2ZvbnQtc2l6ZScsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtdHJhbnNmb3JtJyxcbiAgICB0eXBlOiB0LnRleHRUcmFuc2Zvcm0sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC13cmFwJyxcbiAgICB0eXBlOiB0LnRleHRXcmFwLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtb3ZlcmZsb3ctd3JhcCcsXG4gICAgdHlwZTogdC50ZXh0T3ZlcmZsb3dXcmFwLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtbWF4LXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vdXRsaW5lLXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbGluZS1oZWlnaHQnLFxuICAgIHR5cGU6IHQucG9zaXRpdmVOdW1iZXIsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgY29tbW9uTGFiZWwgPSBbe1xuICAgIG5hbWU6ICd0ZXh0LXZhbGlnbicsXG4gICAgdHlwZTogdC52YWxpZ24sXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1oYWxpZ24nLFxuICAgIHR5cGU6IHQuaGFsaWduLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2NvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vdXRsaW5lLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vdXRsaW5lLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYmFja2dyb3VuZC1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYmFja2dyb3VuZC1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWJhY2tncm91bmQtcGFkZGluZycsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYm9yZGVyLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ3RleHQtYm9yZGVyLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1ib3JkZXItd2lkdGgnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWJvcmRlci1zdHlsZScsXG4gICAgdHlwZTogdC5ib3JkZXJTdHlsZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWJhY2tncm91bmQtc2hhcGUnLFxuICAgIHR5cGU6IHQudGV4dEJhY2tncm91bmRTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWp1c3RpZmljYXRpb24nLFxuICAgIHR5cGU6IHQuanVzdGlmaWNhdGlvblxuICB9XTtcbiAgdmFyIGJlaGF2aW9yID0gW3tcbiAgICBuYW1lOiAnZXZlbnRzJyxcbiAgICB0eXBlOiB0LmJvb2xcbiAgfSwge1xuICAgIG5hbWU6ICd0ZXh0LWV2ZW50cycsXG4gICAgdHlwZTogdC5ib29sXG4gIH1dO1xuICB2YXIgdmlzaWJpbGl0eSA9IFt7XG4gICAgbmFtZTogJ2Rpc3BsYXknLFxuICAgIHR5cGU6IHQuZGlzcGxheSxcbiAgICB0cmlnZ2Vyc1pPcmRlcjogZGlmZi5hbnksXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIHRyaWdnZXJzQm91bmRzT2ZQYXJhbGxlbEJlemllcnM6IHRydWVcbiAgfSwge1xuICAgIG5hbWU6ICd2aXNpYmlsaXR5JyxcbiAgICB0eXBlOiB0LnZpc2liaWxpdHksXG4gICAgdHJpZ2dlcnNaT3JkZXI6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyLFxuICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLnplcm9Ob25aZXJvXG4gIH0sIHtcbiAgICBuYW1lOiAndGV4dC1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICdtaW4tem9vbWVkLWZvbnQtc2l6ZScsXG4gICAgdHlwZTogdC5zaXplXG4gIH0sIHtcbiAgICBuYW1lOiAnei1jb21wb3VuZC1kZXB0aCcsXG4gICAgdHlwZTogdC56Q29tcG91bmREZXB0aCxcbiAgICB0cmlnZ2Vyc1pPcmRlcjogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd6LWluZGV4LWNvbXBhcmUnLFxuICAgIHR5cGU6IHQuekluZGV4Q29tcGFyZSxcbiAgICB0cmlnZ2Vyc1pPcmRlcjogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd6LWluZGV4JyxcbiAgICB0eXBlOiB0Lm5vbk5lZ2F0aXZlSW50LFxuICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLmFueVxuICB9XTtcbiAgdmFyIG92ZXJsYXkgPSBbe1xuICAgIG5hbWU6ICdvdmVybGF5LXBhZGRpbmcnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdvdmVybGF5LWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAnb3ZlcmxheS1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXIsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuemVyb05vblplcm9cbiAgfSwge1xuICAgIG5hbWU6ICdvdmVybGF5LXNoYXBlJyxcbiAgICB0eXBlOiB0Lm92ZXJsYXlTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfV07XG4gIHZhciB1bmRlcmxheSA9IFt7XG4gICAgbmFtZTogJ3VuZGVybGF5LXBhZGRpbmcnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd1bmRlcmxheS1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ3VuZGVybGF5LW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlcixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi56ZXJvTm9uWmVyb1xuICB9LCB7XG4gICAgbmFtZTogJ3VuZGVybGF5LXNoYXBlJyxcbiAgICB0eXBlOiB0Lm92ZXJsYXlTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfV07XG4gIHZhciB0cmFuc2l0aW9uID0gW3tcbiAgICBuYW1lOiAndHJhbnNpdGlvbi1wcm9wZXJ0eScsXG4gICAgdHlwZTogdC5wcm9wTGlzdFxuICB9LCB7XG4gICAgbmFtZTogJ3RyYW5zaXRpb24tZHVyYXRpb24nLFxuICAgIHR5cGU6IHQudGltZVxuICB9LCB7XG4gICAgbmFtZTogJ3RyYW5zaXRpb24tZGVsYXknLFxuICAgIHR5cGU6IHQudGltZVxuICB9LCB7XG4gICAgbmFtZTogJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgICB0eXBlOiB0LmVhc2luZ1xuICB9XTtcblxuICB2YXIgbm9kZVNpemVIYXNoT3ZlcnJpZGUgPSBmdW5jdGlvbiBub2RlU2l6ZUhhc2hPdmVycmlkZShlbGUsIHBhcnNlZFByb3ApIHtcbiAgICBpZiAocGFyc2VkUHJvcC52YWx1ZSA9PT0gJ2xhYmVsJykge1xuICAgICAgcmV0dXJuIC1lbGUucG9vbEluZGV4KCk7IC8vIG5vIGhhc2gga2V5IGhpdHMgaXMgdXNpbmcgbGFiZWwgc2l6ZSAoaGl0cmF0ZSBmb3IgcGVyZiBwcm9iYWJseSBsb3cgYW55d2F5KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFyc2VkUHJvcC5wZlZhbHVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgbm9kZUJvZHkgPSBbe1xuICAgIG5hbWU6ICdoZWlnaHQnLFxuICAgIHR5cGU6IHQubm9kZVNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIGhhc2hPdmVycmlkZTogbm9kZVNpemVIYXNoT3ZlcnJpZGVcbiAgfSwge1xuICAgIG5hbWU6ICd3aWR0aCcsXG4gICAgdHlwZTogdC5ub2RlU2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnksXG4gICAgaGFzaE92ZXJyaWRlOiBub2RlU2l6ZUhhc2hPdmVycmlkZVxuICB9LCB7XG4gICAgbmFtZTogJ3NoYXBlJyxcbiAgICB0eXBlOiB0Lm5vZGVTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdzaGFwZS1wb2x5Z29uLXBvaW50cycsXG4gICAgdHlwZTogdC5wb2x5Z29uUG9pbnRMaXN0LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWZpbGwnLFxuICAgIHR5cGU6IHQuZmlsbFxuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1ibGFja2VuJyxcbiAgICB0eXBlOiB0Lm5PbmVPbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWdyYWRpZW50LXN0b3AtY29sb3JzJyxcbiAgICB0eXBlOiB0LmNvbG9yc1xuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtZ3JhZGllbnQtc3RvcC1wb3NpdGlvbnMnLFxuICAgIHR5cGU6IHQucGVyY2VudGFnZXNcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWdyYWRpZW50LWRpcmVjdGlvbicsXG4gICAgdHlwZTogdC5ncmFkaWVudERpcmVjdGlvblxuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmcnLFxuICAgIHR5cGU6IHQuc2l6ZU1heWJlUGVyY2VudCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdwYWRkaW5nLXJlbGF0aXZlLXRvJyxcbiAgICB0eXBlOiB0LnBhZGRpbmdSZWxhdGl2ZVRvLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2JvdW5kcy1leHBhbnNpb24nLFxuICAgIHR5cGU6IHQuYm91bmRzRXhwYW5zaW9uLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9XTtcbiAgdmFyIG5vZGVCb3JkZXIgPSBbe1xuICAgIG5hbWU6ICdib3JkZXItY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdib3JkZXItb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gIH0sIHtcbiAgICBuYW1lOiAnYm9yZGVyLXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnYm9yZGVyLXN0eWxlJyxcbiAgICB0eXBlOiB0LmJvcmRlclN0eWxlXG4gIH1dO1xuICB2YXIgYmFja2dyb3VuZEltYWdlID0gW3tcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZScsXG4gICAgdHlwZTogdC51cmxzXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1jcm9zc29yaWdpbicsXG4gICAgdHlwZTogdC5iZ0Nyb3NzT3JpZ2luXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJzXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1jb250YWlubWVudCcsXG4gICAgdHlwZTogdC5iZ0NvbnRhaW5tZW50XG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1pbWFnZS1zbW9vdGhpbmcnLFxuICAgIHR5cGU6IHQuYm9vbHNcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXgnLFxuICAgIHR5cGU6IHQuYmdQb3NcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXknLFxuICAgIHR5cGU6IHQuYmdQb3NcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLXdpZHRoLXJlbGF0aXZlLXRvJyxcbiAgICB0eXBlOiB0LmJnUmVsYXRpdmVUb1xuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtaGVpZ2h0LXJlbGF0aXZlLXRvJyxcbiAgICB0eXBlOiB0LmJnUmVsYXRpdmVUb1xuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtcmVwZWF0JyxcbiAgICB0eXBlOiB0LmJnUmVwZWF0XG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1maXQnLFxuICAgIHR5cGU6IHQuYmdGaXRcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWNsaXAnLFxuICAgIHR5cGU6IHQuYmdDbGlwXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC13aWR0aCcsXG4gICAgdHlwZTogdC5iZ1dIXG4gIH0sIHtcbiAgICBuYW1lOiAnYmFja2dyb3VuZC1oZWlnaHQnLFxuICAgIHR5cGU6IHQuYmdXSFxuICB9LCB7XG4gICAgbmFtZTogJ2JhY2tncm91bmQtb2Zmc2V0LXgnLFxuICAgIHR5cGU6IHQuYmdQb3NcbiAgfSwge1xuICAgIG5hbWU6ICdiYWNrZ3JvdW5kLW9mZnNldC15JyxcbiAgICB0eXBlOiB0LmJnUG9zXG4gIH1dO1xuICB2YXIgY29tcG91bmQgPSBbe1xuICAgIG5hbWU6ICdwb3NpdGlvbicsXG4gICAgdHlwZTogdC5wb3NpdGlvbixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdjb21wb3VuZC1zaXppbmctd3J0LWxhYmVscycsXG4gICAgdHlwZTogdC5jb21wb3VuZEluY2x1ZGVMYWJlbHMsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbWluLXdpZHRoJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbWluLXdpZHRoLWJpYXMtbGVmdCcsXG4gICAgdHlwZTogdC5zaXplTWF5YmVQZXJjZW50LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ21pbi13aWR0aC1iaWFzLXJpZ2h0JyxcbiAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnbWluLWhlaWdodCcsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ21pbi1oZWlnaHQtYmlhcy10b3AnLFxuICAgIHR5cGU6IHQuc2l6ZU1heWJlUGVyY2VudCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdtaW4taGVpZ2h0LWJpYXMtYm90dG9tJyxcbiAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH1dO1xuICB2YXIgZWRnZUxpbmUgPSBbe1xuICAgIG5hbWU6ICdsaW5lLXN0eWxlJyxcbiAgICB0eXBlOiB0LmxpbmVTdHlsZVxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdsaW5lLWZpbGwnLFxuICAgIHR5cGU6IHQuZmlsbFxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtY2FwJyxcbiAgICB0eXBlOiB0LmxpbmVDYXBcbiAgfSwge1xuICAgIG5hbWU6ICdsaW5lLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtZGFzaC1wYXR0ZXJuJyxcbiAgICB0eXBlOiB0Lm51bWJlcnNcbiAgfSwge1xuICAgIG5hbWU6ICdsaW5lLWRhc2gtb2Zmc2V0JyxcbiAgICB0eXBlOiB0Lm51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ2xpbmUtZ3JhZGllbnQtc3RvcC1jb2xvcnMnLFxuICAgIHR5cGU6IHQuY29sb3JzXG4gIH0sIHtcbiAgICBuYW1lOiAnbGluZS1ncmFkaWVudC1zdG9wLXBvc2l0aW9ucycsXG4gICAgdHlwZTogdC5wZXJjZW50YWdlc1xuICB9LCB7XG4gICAgbmFtZTogJ2N1cnZlLXN0eWxlJyxcbiAgICB0eXBlOiB0LmN1cnZlU3R5bGUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgIHRyaWdnZXJzQm91bmRzT2ZQYXJhbGxlbEJlemllcnM6IHRydWVcbiAgfSwge1xuICAgIG5hbWU6ICdoYXlzdGFjay1yYWRpdXMnLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlcixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdzb3VyY2UtZW5kcG9pbnQnLFxuICAgIHR5cGU6IHQuZWRnZUVuZHBvaW50LFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RhcmdldC1lbmRwb2ludCcsXG4gICAgdHlwZTogdC5lZGdlRW5kcG9pbnQsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnY29udHJvbC1wb2ludC1zdGVwLXNpemUnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdjb250cm9sLXBvaW50LWRpc3RhbmNlcycsXG4gICAgdHlwZTogdC5iaWRpcmVjdGlvbmFsU2l6ZXMsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnY29udHJvbC1wb2ludC13ZWlnaHRzJyxcbiAgICB0eXBlOiB0Lm51bWJlcnMsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc2VnbWVudC1kaXN0YW5jZXMnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemVzLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3NlZ21lbnQtd2VpZ2h0cycsXG4gICAgdHlwZTogdC5udW1iZXJzLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RheGktdHVybicsXG4gICAgdHlwZTogdC5iaWRpcmVjdGlvbmFsU2l6ZU1heWJlUGVyY2VudCxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICd0YXhpLXR1cm4tbWluLWRpc3RhbmNlJyxcbiAgICB0eXBlOiB0LnNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAndGF4aS1kaXJlY3Rpb24nLFxuICAgIHR5cGU6IHQuYXhpc0RpcmVjdGlvbixcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdlZGdlLWRpc3RhbmNlcycsXG4gICAgdHlwZTogdC5lZGdlRGlzdGFuY2VzLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2Fycm93LXNjYWxlJyxcbiAgICB0eXBlOiB0LnBvc2l0aXZlTnVtYmVyLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2xvb3AtZGlyZWN0aW9uJyxcbiAgICB0eXBlOiB0LmFuZ2xlLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ2xvb3Atc3dlZXAnLFxuICAgIHR5cGU6IHQuYW5nbGUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnc291cmNlLWRpc3RhbmNlLWZyb20tbm9kZScsXG4gICAgdHlwZTogdC5zaXplLFxuICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICB9LCB7XG4gICAgbmFtZTogJ3RhcmdldC1kaXN0YW5jZS1mcm9tLW5vZGUnLFxuICAgIHR5cGU6IHQuc2l6ZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfV07XG4gIHZhciBnaG9zdCA9IFt7XG4gICAgbmFtZTogJ2dob3N0JyxcbiAgICB0eXBlOiB0LmJvb2wsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnZ2hvc3Qtb2Zmc2V0LXgnLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnZ2hvc3Qtb2Zmc2V0LXknLFxuICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gIH0sIHtcbiAgICBuYW1lOiAnZ2hvc3Qtb3BhY2l0eScsXG4gICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gIH1dO1xuICB2YXIgY29yZSA9IFt7XG4gICAgbmFtZTogJ3NlbGVjdGlvbi1ib3gtY29sb3InLFxuICAgIHR5cGU6IHQuY29sb3JcbiAgfSwge1xuICAgIG5hbWU6ICdzZWxlY3Rpb24tYm94LW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9LCB7XG4gICAgbmFtZTogJ3NlbGVjdGlvbi1ib3gtYm9yZGVyLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAnc2VsZWN0aW9uLWJveC1ib3JkZXItd2lkdGgnLFxuICAgIHR5cGU6IHQuc2l6ZVxuICB9LCB7XG4gICAgbmFtZTogJ2FjdGl2ZS1iZy1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ2FjdGl2ZS1iZy1vcGFjaXR5JyxcbiAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgfSwge1xuICAgIG5hbWU6ICdhY3RpdmUtYmctc2l6ZScsXG4gICAgdHlwZTogdC5zaXplXG4gIH0sIHtcbiAgICBuYW1lOiAnb3V0c2lkZS10ZXh0dXJlLWJnLWNvbG9yJyxcbiAgICB0eXBlOiB0LmNvbG9yXG4gIH0sIHtcbiAgICBuYW1lOiAnb3V0c2lkZS10ZXh0dXJlLWJnLW9wYWNpdHknLFxuICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICB9XTsgLy8gcGllIGJhY2tncm91bmRzIGZvciBub2Rlc1xuXG4gIHZhciBwaWUgPSBbXTtcbiAgc3R5Zm4kNi5waWVCYWNrZ3JvdW5kTiA9IDE2OyAvLyBiZWNhdXNlIHRoZSBwaWUgcHJvcGVydGllcyBhcmUgbnVtYmVyZWQsIGdpdmUgYWNjZXNzIHRvIGEgY29uc3RhbnQgTiAoZm9yIHJlbmRlcmVyIHVzZSlcblxuICBwaWUucHVzaCh7XG4gICAgbmFtZTogJ3BpZS1zaXplJyxcbiAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnRcbiAgfSk7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc3R5Zm4kNi5waWVCYWNrZ3JvdW5kTjsgaSsrKSB7XG4gICAgcGllLnB1c2goe1xuICAgICAgbmFtZTogJ3BpZS0nICsgaSArICctYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICB0eXBlOiB0LmNvbG9yXG4gICAgfSk7XG4gICAgcGllLnB1c2goe1xuICAgICAgbmFtZTogJ3BpZS0nICsgaSArICctYmFja2dyb3VuZC1zaXplJyxcbiAgICAgIHR5cGU6IHQucGVyY2VudFxuICAgIH0pO1xuICAgIHBpZS5wdXNoKHtcbiAgICAgIG5hbWU6ICdwaWUtJyArIGkgKyAnLWJhY2tncm91bmQtb3BhY2l0eScsXG4gICAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgICB9KTtcbiAgfSAvLyBlZGdlIGFycm93c1xuXG5cbiAgdmFyIGVkZ2VBcnJvdyA9IFtdO1xuICB2YXIgYXJyb3dQcmVmaXhlcyA9IHN0eWZuJDYuYXJyb3dQcmVmaXhlcyA9IFsnc291cmNlJywgJ21pZC1zb3VyY2UnLCAndGFyZ2V0JywgJ21pZC10YXJnZXQnXTtcbiAgW3tcbiAgICBuYW1lOiAnYXJyb3ctc2hhcGUnLFxuICAgIHR5cGU6IHQuYXJyb3dTaGFwZSxcbiAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgfSwge1xuICAgIG5hbWU6ICdhcnJvdy1jb2xvcicsXG4gICAgdHlwZTogdC5jb2xvclxuICB9LCB7XG4gICAgbmFtZTogJ2Fycm93LWZpbGwnLFxuICAgIHR5cGU6IHQuYXJyb3dGaWxsXG4gIH1dLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICBhcnJvd1ByZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkge1xuICAgICAgdmFyIG5hbWUgPSBwcmVmaXggKyAnLScgKyBwcm9wLm5hbWU7XG4gICAgICB2YXIgdHlwZSA9IHByb3AudHlwZSxcbiAgICAgICAgICB0cmlnZ2Vyc0JvdW5kcyA9IHByb3AudHJpZ2dlcnNCb3VuZHM7XG4gICAgICBlZGdlQXJyb3cucHVzaCh7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIHRyaWdnZXJzQm91bmRzOiB0cmlnZ2Vyc0JvdW5kc1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIHt9KTtcbiAgdmFyIHByb3BzID0gc3R5Zm4kNi5wcm9wZXJ0aWVzID0gW10uY29uY2F0KGJlaGF2aW9yLCB0cmFuc2l0aW9uLCB2aXNpYmlsaXR5LCBvdmVybGF5LCB1bmRlcmxheSwgZ2hvc3QsIGNvbW1vbkxhYmVsLCBsYWJlbERpbWVuc2lvbnMsIG1haW5MYWJlbCwgc291cmNlTGFiZWwsIHRhcmdldExhYmVsLCBub2RlQm9keSwgbm9kZUJvcmRlciwgYmFja2dyb3VuZEltYWdlLCBwaWUsIGNvbXBvdW5kLCBlZGdlTGluZSwgZWRnZUFycm93LCBjb3JlKTtcbiAgdmFyIHByb3BHcm91cHMgPSBzdHlmbiQ2LnByb3BlcnR5R3JvdXBzID0ge1xuICAgIC8vIGNvbW1vbiB0byBhbGwgZWxlc1xuICAgIGJlaGF2aW9yOiBiZWhhdmlvcixcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLFxuICAgIHZpc2liaWxpdHk6IHZpc2liaWxpdHksXG4gICAgb3ZlcmxheTogb3ZlcmxheSxcbiAgICB1bmRlcmxheTogdW5kZXJsYXksXG4gICAgZ2hvc3Q6IGdob3N0LFxuICAgIC8vIGxhYmVsc1xuICAgIGNvbW1vbkxhYmVsOiBjb21tb25MYWJlbCxcbiAgICBsYWJlbERpbWVuc2lvbnM6IGxhYmVsRGltZW5zaW9ucyxcbiAgICBtYWluTGFiZWw6IG1haW5MYWJlbCxcbiAgICBzb3VyY2VMYWJlbDogc291cmNlTGFiZWwsXG4gICAgdGFyZ2V0TGFiZWw6IHRhcmdldExhYmVsLFxuICAgIC8vIG5vZGUgcHJvcHNcbiAgICBub2RlQm9keTogbm9kZUJvZHksXG4gICAgbm9kZUJvcmRlcjogbm9kZUJvcmRlcixcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IGJhY2tncm91bmRJbWFnZSxcbiAgICBwaWU6IHBpZSxcbiAgICBjb21wb3VuZDogY29tcG91bmQsXG4gICAgLy8gZWRnZSBwcm9wc1xuICAgIGVkZ2VMaW5lOiBlZGdlTGluZSxcbiAgICBlZGdlQXJyb3c6IGVkZ2VBcnJvdyxcbiAgICBjb3JlOiBjb3JlXG4gIH07XG4gIHZhciBwcm9wR3JvdXBOYW1lcyA9IHN0eWZuJDYucHJvcGVydHlHcm91cE5hbWVzID0ge307XG4gIHZhciBwcm9wR3JvdXBLZXlzID0gc3R5Zm4kNi5wcm9wZXJ0eUdyb3VwS2V5cyA9IE9iamVjdC5rZXlzKHByb3BHcm91cHMpO1xuICBwcm9wR3JvdXBLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHByb3BHcm91cE5hbWVzW2tleV0gPSBwcm9wR3JvdXBzW2tleV0ubWFwKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICByZXR1cm4gcHJvcC5uYW1lO1xuICAgIH0pO1xuICAgIHByb3BHcm91cHNba2V5XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICByZXR1cm4gcHJvcC5ncm91cEtleSA9IGtleTtcbiAgICB9KTtcbiAgfSk7IC8vIGRlZmluZSBhbGlhc2VzXG5cbiAgdmFyIGFsaWFzZXMgPSBzdHlmbiQ2LmFsaWFzZXMgPSBbe1xuICAgIG5hbWU6ICdjb250ZW50JyxcbiAgICBwb2ludHNUbzogJ2xhYmVsJ1xuICB9LCB7XG4gICAgbmFtZTogJ2NvbnRyb2wtcG9pbnQtZGlzdGFuY2UnLFxuICAgIHBvaW50c1RvOiAnY29udHJvbC1wb2ludC1kaXN0YW5jZXMnXG4gIH0sIHtcbiAgICBuYW1lOiAnY29udHJvbC1wb2ludC13ZWlnaHQnLFxuICAgIHBvaW50c1RvOiAnY29udHJvbC1wb2ludC13ZWlnaHRzJ1xuICB9LCB7XG4gICAgbmFtZTogJ2VkZ2UtdGV4dC1yb3RhdGlvbicsXG4gICAgcG9pbnRzVG86ICd0ZXh0LXJvdGF0aW9uJ1xuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmctbGVmdCcsXG4gICAgcG9pbnRzVG86ICdwYWRkaW5nJ1xuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmctcmlnaHQnLFxuICAgIHBvaW50c1RvOiAncGFkZGluZydcbiAgfSwge1xuICAgIG5hbWU6ICdwYWRkaW5nLXRvcCcsXG4gICAgcG9pbnRzVG86ICdwYWRkaW5nJ1xuICB9LCB7XG4gICAgbmFtZTogJ3BhZGRpbmctYm90dG9tJyxcbiAgICBwb2ludHNUbzogJ3BhZGRpbmcnXG4gIH1dOyAvLyBsaXN0IG9mIHByb3BlcnR5IG5hbWVzXG5cbiAgc3R5Zm4kNi5wcm9wZXJ0eU5hbWVzID0gcHJvcHMubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgcmV0dXJuIHAubmFtZTtcbiAgfSk7IC8vIGFsbG93IGFjY2VzcyBvZiBwcm9wZXJ0aWVzIGJ5IG5hbWUgKCBlLmcuIHN0eWxlLnByb3BlcnRpZXMuaGVpZ2h0IClcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcHJvcHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIHByb3AgPSBwcm9wc1tfaV07XG4gICAgcHJvcHNbcHJvcC5uYW1lXSA9IHByb3A7IC8vIGFsbG93IGxvb2t1cCBieSBuYW1lXG4gIH0gLy8gbWFwIGFsaWFzZXNcblxuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGFsaWFzZXMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBhbGlhcyA9IGFsaWFzZXNbX2kyXTtcbiAgICB2YXIgcG9pbnRzVG9Qcm9wID0gcHJvcHNbYWxpYXMucG9pbnRzVG9dO1xuICAgIHZhciBhbGlhc1Byb3AgPSB7XG4gICAgICBuYW1lOiBhbGlhcy5uYW1lLFxuICAgICAgYWxpYXM6IHRydWUsXG4gICAgICBwb2ludHNUbzogcG9pbnRzVG9Qcm9wXG4gICAgfTsgLy8gYWRkIGFsaWFzIHByb3AgZm9yIHBhcnNpbmdcblxuICAgIHByb3BzLnB1c2goYWxpYXNQcm9wKTtcbiAgICBwcm9wc1thbGlhcy5uYW1lXSA9IGFsaWFzUHJvcDsgLy8gYWxsb3cgbG9va3VwIGJ5IG5hbWVcbiAgfVxufSkoKTtcblxuc3R5Zm4kNi5nZXREZWZhdWx0UHJvcGVydHkgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gdGhpcy5nZXREZWZhdWx0UHJvcGVydGllcygpW25hbWVdO1xufTtcblxuc3R5Zm4kNi5nZXREZWZhdWx0UHJvcGVydGllcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICBpZiAoX3AuZGVmYXVsdFByb3BlcnRpZXMgIT0gbnVsbCkge1xuICAgIHJldHVybiBfcC5kZWZhdWx0UHJvcGVydGllcztcbiAgfVxuXG4gIHZhciByYXdQcm9wcyA9IGV4dGVuZCh7XG4gICAgLy8gY29yZSBwcm9wc1xuICAgICdzZWxlY3Rpb24tYm94LWNvbG9yJzogJyNkZGQnLFxuICAgICdzZWxlY3Rpb24tYm94LW9wYWNpdHknOiAwLjY1LFxuICAgICdzZWxlY3Rpb24tYm94LWJvcmRlci1jb2xvcic6ICcjYWFhJyxcbiAgICAnc2VsZWN0aW9uLWJveC1ib3JkZXItd2lkdGgnOiAxLFxuICAgICdhY3RpdmUtYmctY29sb3InOiAnYmxhY2snLFxuICAgICdhY3RpdmUtYmctb3BhY2l0eSc6IDAuMTUsXG4gICAgJ2FjdGl2ZS1iZy1zaXplJzogMzAsXG4gICAgJ291dHNpZGUtdGV4dHVyZS1iZy1jb2xvcic6ICcjMDAwJyxcbiAgICAnb3V0c2lkZS10ZXh0dXJlLWJnLW9wYWNpdHknOiAwLjEyNSxcbiAgICAvLyBjb21tb24gbm9kZS9lZGdlIHByb3BzXG4gICAgJ2V2ZW50cyc6ICd5ZXMnLFxuICAgICd0ZXh0LWV2ZW50cyc6ICdubycsXG4gICAgJ3RleHQtdmFsaWduJzogJ3RvcCcsXG4gICAgJ3RleHQtaGFsaWduJzogJ2NlbnRlcicsXG4gICAgJ3RleHQtanVzdGlmaWNhdGlvbic6ICdhdXRvJyxcbiAgICAnbGluZS1oZWlnaHQnOiAxLFxuICAgICdjb2xvcic6ICcjMDAwJyxcbiAgICAndGV4dC1vdXRsaW5lLWNvbG9yJzogJyMwMDAnLFxuICAgICd0ZXh0LW91dGxpbmUtd2lkdGgnOiAwLFxuICAgICd0ZXh0LW91dGxpbmUtb3BhY2l0eSc6IDEsXG4gICAgJ3RleHQtb3BhY2l0eSc6IDEsXG4gICAgJ3RleHQtZGVjb3JhdGlvbic6ICdub25lJyxcbiAgICAndGV4dC10cmFuc2Zvcm0nOiAnbm9uZScsXG4gICAgJ3RleHQtd3JhcCc6ICdub25lJyxcbiAgICAndGV4dC1vdmVyZmxvdy13cmFwJzogJ3doaXRlc3BhY2UnLFxuICAgICd0ZXh0LW1heC13aWR0aCc6IDk5OTksXG4gICAgJ3RleHQtYmFja2dyb3VuZC1jb2xvcic6ICcjMDAwJyxcbiAgICAndGV4dC1iYWNrZ3JvdW5kLW9wYWNpdHknOiAwLFxuICAgICd0ZXh0LWJhY2tncm91bmQtc2hhcGUnOiAncmVjdGFuZ2xlJyxcbiAgICAndGV4dC1iYWNrZ3JvdW5kLXBhZGRpbmcnOiAwLFxuICAgICd0ZXh0LWJvcmRlci1vcGFjaXR5JzogMCxcbiAgICAndGV4dC1ib3JkZXItd2lkdGgnOiAwLFxuICAgICd0ZXh0LWJvcmRlci1zdHlsZSc6ICdzb2xpZCcsXG4gICAgJ3RleHQtYm9yZGVyLWNvbG9yJzogJyMwMDAnLFxuICAgICdmb250LWZhbWlseSc6ICdIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJyxcbiAgICAnZm9udC1zdHlsZSc6ICdub3JtYWwnLFxuICAgICdmb250LXdlaWdodCc6ICdub3JtYWwnLFxuICAgICdmb250LXNpemUnOiAxNixcbiAgICAnbWluLXpvb21lZC1mb250LXNpemUnOiAwLFxuICAgICd0ZXh0LXJvdGF0aW9uJzogJ25vbmUnLFxuICAgICdzb3VyY2UtdGV4dC1yb3RhdGlvbic6ICdub25lJyxcbiAgICAndGFyZ2V0LXRleHQtcm90YXRpb24nOiAnbm9uZScsXG4gICAgJ3Zpc2liaWxpdHknOiAndmlzaWJsZScsXG4gICAgJ2Rpc3BsYXknOiAnZWxlbWVudCcsXG4gICAgJ29wYWNpdHknOiAxLFxuICAgICd6LWNvbXBvdW5kLWRlcHRoJzogJ2F1dG8nLFxuICAgICd6LWluZGV4LWNvbXBhcmUnOiAnYXV0bycsXG4gICAgJ3otaW5kZXgnOiAwLFxuICAgICdsYWJlbCc6ICcnLFxuICAgICd0ZXh0LW1hcmdpbi14JzogMCxcbiAgICAndGV4dC1tYXJnaW4teSc6IDAsXG4gICAgJ3NvdXJjZS1sYWJlbCc6ICcnLFxuICAgICdzb3VyY2UtdGV4dC1vZmZzZXQnOiAwLFxuICAgICdzb3VyY2UtdGV4dC1tYXJnaW4teCc6IDAsXG4gICAgJ3NvdXJjZS10ZXh0LW1hcmdpbi15JzogMCxcbiAgICAndGFyZ2V0LWxhYmVsJzogJycsXG4gICAgJ3RhcmdldC10ZXh0LW9mZnNldCc6IDAsXG4gICAgJ3RhcmdldC10ZXh0LW1hcmdpbi14JzogMCxcbiAgICAndGFyZ2V0LXRleHQtbWFyZ2luLXknOiAwLFxuICAgICdvdmVybGF5LW9wYWNpdHknOiAwLFxuICAgICdvdmVybGF5LWNvbG9yJzogJyMwMDAnLFxuICAgICdvdmVybGF5LXBhZGRpbmcnOiAxMCxcbiAgICAnb3ZlcmxheS1zaGFwZSc6ICdyb3VuZC1yZWN0YW5nbGUnLFxuICAgICd1bmRlcmxheS1vcGFjaXR5JzogMCxcbiAgICAndW5kZXJsYXktY29sb3InOiAnIzAwMCcsXG4gICAgJ3VuZGVybGF5LXBhZGRpbmcnOiAxMCxcbiAgICAndW5kZXJsYXktc2hhcGUnOiAncm91bmQtcmVjdGFuZ2xlJyxcbiAgICAndHJhbnNpdGlvbi1wcm9wZXJ0eSc6ICdub25lJyxcbiAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6IDAsXG4gICAgJ3RyYW5zaXRpb24tZGVsYXknOiAwLFxuICAgICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbic6ICdsaW5lYXInLFxuICAgIC8vIG5vZGUgcHJvcHNcbiAgICAnYmFja2dyb3VuZC1ibGFja2VuJzogMCxcbiAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjOTk5JyxcbiAgICAnYmFja2dyb3VuZC1maWxsJzogJ3NvbGlkJyxcbiAgICAnYmFja2dyb3VuZC1vcGFjaXR5JzogMSxcbiAgICAnYmFja2dyb3VuZC1pbWFnZSc6ICdub25lJyxcbiAgICAnYmFja2dyb3VuZC1pbWFnZS1jcm9zc29yaWdpbic6ICdhbm9ueW1vdXMnLFxuICAgICdiYWNrZ3JvdW5kLWltYWdlLW9wYWNpdHknOiAxLFxuICAgICdiYWNrZ3JvdW5kLWltYWdlLWNvbnRhaW5tZW50JzogJ2luc2lkZScsXG4gICAgJ2JhY2tncm91bmQtaW1hZ2Utc21vb3RoaW5nJzogJ3llcycsXG4gICAgJ2JhY2tncm91bmQtcG9zaXRpb24teCc6ICc1MCUnLFxuICAgICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXknOiAnNTAlJyxcbiAgICAnYmFja2dyb3VuZC1vZmZzZXQteCc6IDAsXG4gICAgJ2JhY2tncm91bmQtb2Zmc2V0LXknOiAwLFxuICAgICdiYWNrZ3JvdW5kLXdpZHRoLXJlbGF0aXZlLXRvJzogJ2luY2x1ZGUtcGFkZGluZycsXG4gICAgJ2JhY2tncm91bmQtaGVpZ2h0LXJlbGF0aXZlLXRvJzogJ2luY2x1ZGUtcGFkZGluZycsXG4gICAgJ2JhY2tncm91bmQtcmVwZWF0JzogJ25vLXJlcGVhdCcsXG4gICAgJ2JhY2tncm91bmQtZml0JzogJ25vbmUnLFxuICAgICdiYWNrZ3JvdW5kLWNsaXAnOiAnbm9kZScsXG4gICAgJ2JhY2tncm91bmQtd2lkdGgnOiAnYXV0bycsXG4gICAgJ2JhY2tncm91bmQtaGVpZ2h0JzogJ2F1dG8nLFxuICAgICdib3JkZXItY29sb3InOiAnIzAwMCcsXG4gICAgJ2JvcmRlci1vcGFjaXR5JzogMSxcbiAgICAnYm9yZGVyLXdpZHRoJzogMCxcbiAgICAnYm9yZGVyLXN0eWxlJzogJ3NvbGlkJyxcbiAgICAnaGVpZ2h0JzogMzAsXG4gICAgJ3dpZHRoJzogMzAsXG4gICAgJ3NoYXBlJzogJ2VsbGlwc2UnLFxuICAgICdzaGFwZS1wb2x5Z29uLXBvaW50cyc6ICctMSwgLTEsICAgMSwgLTEsICAgMSwgMSwgICAtMSwgMScsXG4gICAgJ2JvdW5kcy1leHBhbnNpb24nOiAwLFxuICAgIC8vIG5vZGUgZ3JhZGllbnRcbiAgICAnYmFja2dyb3VuZC1ncmFkaWVudC1kaXJlY3Rpb24nOiAndG8tYm90dG9tJyxcbiAgICAnYmFja2dyb3VuZC1ncmFkaWVudC1zdG9wLWNvbG9ycyc6ICcjOTk5JyxcbiAgICAnYmFja2dyb3VuZC1ncmFkaWVudC1zdG9wLXBvc2l0aW9ucyc6ICcwJScsXG4gICAgLy8gZ2hvc3QgcHJvcHNcbiAgICAnZ2hvc3QnOiAnbm8nLFxuICAgICdnaG9zdC1vZmZzZXQteSc6IDAsXG4gICAgJ2dob3N0LW9mZnNldC14JzogMCxcbiAgICAnZ2hvc3Qtb3BhY2l0eSc6IDAsXG4gICAgLy8gY29tcG91bmQgcHJvcHNcbiAgICAncGFkZGluZyc6IDAsXG4gICAgJ3BhZGRpbmctcmVsYXRpdmUtdG8nOiAnd2lkdGgnLFxuICAgICdwb3NpdGlvbic6ICdvcmlnaW4nLFxuICAgICdjb21wb3VuZC1zaXppbmctd3J0LWxhYmVscyc6ICdpbmNsdWRlJyxcbiAgICAnbWluLXdpZHRoJzogMCxcbiAgICAnbWluLXdpZHRoLWJpYXMtbGVmdCc6IDAsXG4gICAgJ21pbi13aWR0aC1iaWFzLXJpZ2h0JzogMCxcbiAgICAnbWluLWhlaWdodCc6IDAsXG4gICAgJ21pbi1oZWlnaHQtYmlhcy10b3AnOiAwLFxuICAgICdtaW4taGVpZ2h0LWJpYXMtYm90dG9tJzogMFxuICB9LCB7XG4gICAgLy8gbm9kZSBwaWUgYmdcbiAgICAncGllLXNpemUnOiAnMTAwJSdcbiAgfSwgW3tcbiAgICBuYW1lOiAncGllLXt7aX19LWJhY2tncm91bmQtY29sb3InLFxuICAgIHZhbHVlOiAnYmxhY2snXG4gIH0sIHtcbiAgICBuYW1lOiAncGllLXt7aX19LWJhY2tncm91bmQtc2l6ZScsXG4gICAgdmFsdWU6ICcwJSdcbiAgfSwge1xuICAgIG5hbWU6ICdwaWUte3tpfX0tYmFja2dyb3VuZC1vcGFjaXR5JyxcbiAgICB2YWx1ZTogMVxuICB9XS5yZWR1Y2UoZnVuY3Rpb24gKGNzcywgcHJvcCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHN0eWZuJDYucGllQmFja2dyb3VuZE47IGkrKykge1xuICAgICAgdmFyIG5hbWUgPSBwcm9wLm5hbWUucmVwbGFjZSgne3tpfX0nLCBpKTtcbiAgICAgIHZhciB2YWwgPSBwcm9wLnZhbHVlO1xuICAgICAgY3NzW25hbWVdID0gdmFsO1xuICAgIH1cblxuICAgIHJldHVybiBjc3M7XG4gIH0sIHt9KSwge1xuICAgIC8vIGVkZ2UgcHJvcHNcbiAgICAnbGluZS1zdHlsZSc6ICdzb2xpZCcsXG4gICAgJ2xpbmUtY29sb3InOiAnIzk5OScsXG4gICAgJ2xpbmUtZmlsbCc6ICdzb2xpZCcsXG4gICAgJ2xpbmUtY2FwJzogJ2J1dHQnLFxuICAgICdsaW5lLW9wYWNpdHknOiAxLFxuICAgICdsaW5lLWdyYWRpZW50LXN0b3AtY29sb3JzJzogJyM5OTknLFxuICAgICdsaW5lLWdyYWRpZW50LXN0b3AtcG9zaXRpb25zJzogJzAlJyxcbiAgICAnY29udHJvbC1wb2ludC1zdGVwLXNpemUnOiA0MCxcbiAgICAnY29udHJvbC1wb2ludC13ZWlnaHRzJzogMC41LFxuICAgICdzZWdtZW50LXdlaWdodHMnOiAwLjUsXG4gICAgJ3NlZ21lbnQtZGlzdGFuY2VzJzogMjAsXG4gICAgJ3RheGktdHVybic6ICc1MCUnLFxuICAgICd0YXhpLXR1cm4tbWluLWRpc3RhbmNlJzogMTAsXG4gICAgJ3RheGktZGlyZWN0aW9uJzogJ2F1dG8nLFxuICAgICdlZGdlLWRpc3RhbmNlcyc6ICdpbnRlcnNlY3Rpb24nLFxuICAgICdjdXJ2ZS1zdHlsZSc6ICdoYXlzdGFjaycsXG4gICAgJ2hheXN0YWNrLXJhZGl1cyc6IDAsXG4gICAgJ2Fycm93LXNjYWxlJzogMSxcbiAgICAnbG9vcC1kaXJlY3Rpb24nOiAnLTQ1ZGVnJyxcbiAgICAnbG9vcC1zd2VlcCc6ICctOTBkZWcnLFxuICAgICdzb3VyY2UtZGlzdGFuY2UtZnJvbS1ub2RlJzogMCxcbiAgICAndGFyZ2V0LWRpc3RhbmNlLWZyb20tbm9kZSc6IDAsXG4gICAgJ3NvdXJjZS1lbmRwb2ludCc6ICdvdXRzaWRlLXRvLW5vZGUnLFxuICAgICd0YXJnZXQtZW5kcG9pbnQnOiAnb3V0c2lkZS10by1ub2RlJyxcbiAgICAnbGluZS1kYXNoLXBhdHRlcm4nOiBbNiwgM10sXG4gICAgJ2xpbmUtZGFzaC1vZmZzZXQnOiAwXG4gIH0sIFt7XG4gICAgbmFtZTogJ2Fycm93LXNoYXBlJyxcbiAgICB2YWx1ZTogJ25vbmUnXG4gIH0sIHtcbiAgICBuYW1lOiAnYXJyb3ctY29sb3InLFxuICAgIHZhbHVlOiAnIzk5OSdcbiAgfSwge1xuICAgIG5hbWU6ICdhcnJvdy1maWxsJyxcbiAgICB2YWx1ZTogJ2ZpbGxlZCdcbiAgfV0ucmVkdWNlKGZ1bmN0aW9uIChjc3MsIHByb3ApIHtcbiAgICBzdHlmbiQ2LmFycm93UHJlZml4ZXMuZm9yRWFjaChmdW5jdGlvbiAocHJlZml4KSB7XG4gICAgICB2YXIgbmFtZSA9IHByZWZpeCArICctJyArIHByb3AubmFtZTtcbiAgICAgIHZhciB2YWwgPSBwcm9wLnZhbHVlO1xuICAgICAgY3NzW25hbWVdID0gdmFsO1xuICAgIH0pO1xuICAgIHJldHVybiBjc3M7XG4gIH0sIHt9KSk7XG4gIHZhciBwYXJzZWRQcm9wcyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3AgPSB0aGlzLnByb3BlcnRpZXNbaV07XG5cbiAgICBpZiAocHJvcC5wb2ludHNUbykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIG5hbWUgPSBwcm9wLm5hbWU7XG4gICAgdmFyIHZhbCA9IHJhd1Byb3BzW25hbWVdO1xuICAgIHZhciBwYXJzZWRQcm9wID0gdGhpcy5wYXJzZShuYW1lLCB2YWwpO1xuICAgIHBhcnNlZFByb3BzW25hbWVdID0gcGFyc2VkUHJvcDtcbiAgfVxuXG4gIF9wLmRlZmF1bHRQcm9wZXJ0aWVzID0gcGFyc2VkUHJvcHM7XG4gIHJldHVybiBfcC5kZWZhdWx0UHJvcGVydGllcztcbn07XG5cbnN0eWZuJDYuYWRkRGVmYXVsdFN0eWxlc2hlZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VsZWN0b3IoJzpwYXJlbnQnKS5jc3Moe1xuICAgICdzaGFwZSc6ICdyZWN0YW5nbGUnLFxuICAgICdwYWRkaW5nJzogMTAsXG4gICAgJ2JhY2tncm91bmQtY29sb3InOiAnI2VlZScsXG4gICAgJ2JvcmRlci1jb2xvcic6ICcjY2NjJyxcbiAgICAnYm9yZGVyLXdpZHRoJzogMVxuICB9KS5zZWxlY3RvcignZWRnZScpLmNzcyh7XG4gICAgJ3dpZHRoJzogM1xuICB9KS5zZWxlY3RvcignOmxvb3AnKS5jc3Moe1xuICAgICdjdXJ2ZS1zdHlsZSc6ICdiZXppZXInXG4gIH0pLnNlbGVjdG9yKCdlZGdlOmNvbXBvdW5kJykuY3NzKHtcbiAgICAnY3VydmUtc3R5bGUnOiAnYmV6aWVyJyxcbiAgICAnc291cmNlLWVuZHBvaW50JzogJ291dHNpZGUtdG8tbGluZScsXG4gICAgJ3RhcmdldC1lbmRwb2ludCc6ICdvdXRzaWRlLXRvLWxpbmUnXG4gIH0pLnNlbGVjdG9yKCc6c2VsZWN0ZWQnKS5jc3Moe1xuICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyMwMTY5RDknLFxuICAgICdsaW5lLWNvbG9yJzogJyMwMTY5RDknLFxuICAgICdzb3VyY2UtYXJyb3ctY29sb3InOiAnIzAxNjlEOScsXG4gICAgJ3RhcmdldC1hcnJvdy1jb2xvcic6ICcjMDE2OUQ5JyxcbiAgICAnbWlkLXNvdXJjZS1hcnJvdy1jb2xvcic6ICcjMDE2OUQ5JyxcbiAgICAnbWlkLXRhcmdldC1hcnJvdy1jb2xvcic6ICcjMDE2OUQ5J1xuICB9KS5zZWxlY3RvcignOnBhcmVudDpzZWxlY3RlZCcpLmNzcyh7XG4gICAgJ2JhY2tncm91bmQtY29sb3InOiAnI0NDRTFGOScsXG4gICAgJ2JvcmRlci1jb2xvcic6ICcjYWVjOGU1J1xuICB9KS5zZWxlY3RvcignOmFjdGl2ZScpLmNzcyh7XG4gICAgJ292ZXJsYXktY29sb3InOiAnYmxhY2snLFxuICAgICdvdmVybGF5LXBhZGRpbmcnOiAxMCxcbiAgICAnb3ZlcmxheS1vcGFjaXR5JzogMC4yNVxuICB9KTtcbiAgdGhpcy5kZWZhdWx0TGVuZ3RoID0gdGhpcy5sZW5ndGg7XG59O1xuXG52YXIgc3R5Zm4kNyA9IHt9OyAvLyBhIGNhY2hpbmcgbGF5ZXIgZm9yIHByb3BlcnR5IHBhcnNpbmdcblxuc3R5Zm4kNy5wYXJzZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KSB7XG4gIHZhciBzZWxmID0gdGhpczsgLy8gZnVuY3Rpb24gdmFsdWVzIGNhbid0IGJlIGNhY2hlZCBpbiBhbGwgY2FzZXMsIGFuZCB0aGVyZSBpc24ndCBtdWNoIGJlbmVmaXQgb2YgY2FjaGluZyB0aGVtIGFueXdheVxuXG4gIGlmIChmbih2YWx1ZSkpIHtcbiAgICByZXR1cm4gc2VsZi5wYXJzZUltcGxXYXJuKG5hbWUsIHZhbHVlLCBwcm9wSXNCeXBhc3MsIHByb3BJc0ZsYXQpO1xuICB9XG5cbiAgdmFyIGZsYXRLZXkgPSBwcm9wSXNGbGF0ID09PSAnbWFwcGluZycgfHwgcHJvcElzRmxhdCA9PT0gdHJ1ZSB8fCBwcm9wSXNGbGF0ID09PSBmYWxzZSB8fCBwcm9wSXNGbGF0ID09IG51bGwgPyAnZG9udGNhcmUnIDogcHJvcElzRmxhdDtcbiAgdmFyIGJ5cGFzc0tleSA9IHByb3BJc0J5cGFzcyA/ICd0JyA6ICdmJztcbiAgdmFyIHZhbHVlS2V5ID0gJycgKyB2YWx1ZTtcbiAgdmFyIGFyZ0hhc2ggPSBoYXNoU3RyaW5ncyhuYW1lLCB2YWx1ZUtleSwgYnlwYXNzS2V5LCBmbGF0S2V5KTtcbiAgdmFyIHByb3BDYWNoZSA9IHNlbGYucHJvcENhY2hlID0gc2VsZi5wcm9wQ2FjaGUgfHwgW107XG4gIHZhciByZXQ7XG5cbiAgaWYgKCEocmV0ID0gcHJvcENhY2hlW2FyZ0hhc2hdKSkge1xuICAgIHJldCA9IHByb3BDYWNoZVthcmdIYXNoXSA9IHNlbGYucGFyc2VJbXBsV2FybihuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KTtcbiAgfSAvLyAtIGJ5cGFzc2VzIGNhbid0IGJlIHNoYXJlZCBiL2MgdGhlIHZhbHVlIGNhbiBiZSBjaGFuZ2VkIGJ5IGFuaW1hdGlvbnMgb3Igb3RoZXJ3aXNlIG92ZXJyaWRkZW5cbiAgLy8gLSBtYXBwaW5ncyBjYW4ndCBiZSBzaGFyZWQgYi9jIG1hcHBpbmdzIGFyZSBwZXItZWxlbWVudFxuXG5cbiAgaWYgKHByb3BJc0J5cGFzcyB8fCBwcm9wSXNGbGF0ID09PSAnbWFwcGluZycpIHtcbiAgICAvLyBuZWVkIGEgY29weSBzaW5jZSBwcm9wcyBhcmUgbXV0YXRlZCBsYXRlciBpbiB0aGVpciBsaWZlY3ljbGVzXG4gICAgcmV0ID0gY29weShyZXQpO1xuXG4gICAgaWYgKHJldCkge1xuICAgICAgcmV0LnZhbHVlID0gY29weShyZXQudmFsdWUpOyAvLyBiZWNhdXNlIGl0IGNvdWxkIGJlIGFuIGFycmF5LCBlLmcuIGNvbG91clxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuXG5zdHlmbiQ3LnBhcnNlSW1wbFdhcm4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIHByb3BJc0J5cGFzcywgcHJvcElzRmxhdCkge1xuICB2YXIgcHJvcCA9IHRoaXMucGFyc2VJbXBsKG5hbWUsIHZhbHVlLCBwcm9wSXNCeXBhc3MsIHByb3BJc0ZsYXQpO1xuXG4gIGlmICghcHJvcCAmJiB2YWx1ZSAhPSBudWxsKSB7XG4gICAgd2FybihcIlRoZSBzdHlsZSBwcm9wZXJ0eSBgXCIuY29uY2F0KG5hbWUsIFwiOiBcIikuY29uY2F0KHZhbHVlLCBcImAgaXMgaW52YWxpZFwiKSk7XG4gIH1cblxuICBpZiAocHJvcCAmJiAocHJvcC5uYW1lID09PSAnd2lkdGgnIHx8IHByb3AubmFtZSA9PT0gJ2hlaWdodCcpICYmIHZhbHVlID09PSAnbGFiZWwnKSB7XG4gICAgd2FybignVGhlIHN0eWxlIHZhbHVlIG9mIGBsYWJlbGAgaXMgZGVwcmVjYXRlZCBmb3IgYCcgKyBwcm9wLm5hbWUgKyAnYCcpO1xuICB9XG5cbiAgcmV0dXJuIHByb3A7XG59OyAvLyBwYXJzZSBhIHByb3BlcnR5OyByZXR1cm4gbnVsbCBvbiBpbnZhbGlkOyByZXR1cm4gcGFyc2VkIHByb3BlcnR5IG90aGVyd2lzZVxuLy8gZmllbGRzIDpcbi8vIC0gbmFtZSA6IHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eVxuLy8gLSB2YWx1ZSA6IHRoZSBwYXJzZWQsIG5hdGl2ZS10eXBlZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHlcbi8vIC0gc3RyVmFsdWUgOiBhIHN0cmluZyB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgdGhlIHByb3BlcnR5IHZhbHVlIGluIHZhbGlkIGNzc1xuLy8gLSBieXBhc3MgOiB0cnVlIGlmZiB0aGUgcHJvcGVydHkgaXMgYSBieXBhc3MgcHJvcGVydHlcblxuXG5zdHlmbiQ3LnBhcnNlSW1wbCA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgbmFtZSA9IGNhbWVsMmRhc2gobmFtZSk7IC8vIG1ha2Ugc3VyZSB0aGUgcHJvcGVydHkgbmFtZSBpcyBpbiBkYXNoIGZvcm0gKGUuZy4gJ3Byb3BlcnR5LW5hbWUnIG5vdCAncHJvcGVydHlOYW1lJylcblxuICB2YXIgcHJvcGVydHkgPSBzZWxmLnByb3BlcnRpZXNbbmFtZV07XG4gIHZhciBwYXNzZWRWYWx1ZSA9IHZhbHVlO1xuICB2YXIgdHlwZXMgPSBzZWxmLnR5cGVzO1xuXG4gIGlmICghcHJvcGVydHkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyByZXR1cm4gbnVsbCBvbiBwcm9wZXJ0eSBvZiB1bmtub3duIG5hbWVcblxuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gY2FuJ3QgYXNzaWduIHVuZGVmaW5lZFxuICAvLyB0aGUgcHJvcGVydHkgbWF5IGJlIGFuIGFsaWFzXG5cblxuICBpZiAocHJvcGVydHkuYWxpYXMpIHtcbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5LnBvaW50c1RvO1xuICAgIG5hbWUgPSBwcm9wZXJ0eS5uYW1lO1xuICB9XG5cbiAgdmFyIHZhbHVlSXNTdHJpbmcgPSBzdHJpbmcodmFsdWUpO1xuXG4gIGlmICh2YWx1ZUlzU3RyaW5nKSB7XG4gICAgLy8gdHJpbSB0aGUgdmFsdWUgdG8gbWFrZSBwYXJzaW5nIGVhc2llclxuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuICB9XG5cbiAgdmFyIHR5cGUgPSBwcm9wZXJ0eS50eXBlO1xuXG4gIGlmICghdHlwZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9IC8vIG5vIHR5cGUsIG5vIGx1Y2tcbiAgLy8gY2hlY2sgaWYgYnlwYXNzIGlzIG51bGwgb3IgZW1wdHkgc3RyaW5nIChpLmUuIGluZGljYXRpb24gdG8gZGVsZXRlIGJ5cGFzcyBwcm9wZXJ0eSlcblxuXG4gIGlmIChwcm9wSXNCeXBhc3MgJiYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGJ5cGFzczogdHJ1ZSxcbiAgICAgIGRlbGV0ZUJ5cGFzczogdHJ1ZVxuICAgIH07XG4gIH0gLy8gY2hlY2sgaWYgdmFsdWUgaXMgYSBmdW5jdGlvbiB1c2VkIGFzIGEgbWFwcGVyXG5cblxuICBpZiAoZm4odmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBzdHJWYWx1ZTogJ2ZuJyxcbiAgICAgIG1hcHBlZDogdHlwZXMuZm4sXG4gICAgICBieXBhc3M6IHByb3BJc0J5cGFzc1xuICAgIH07XG4gIH0gLy8gY2hlY2sgaWYgdmFsdWUgaXMgbWFwcGVkXG5cblxuICB2YXIgZGF0YSwgbWFwRGF0YTtcblxuICBpZiAoIXZhbHVlSXNTdHJpbmcgfHwgcHJvcElzRmxhdCB8fCB2YWx1ZS5sZW5ndGggPCA3IHx8IHZhbHVlWzFdICE9PSAnYScpIDsgZWxzZSBpZiAodmFsdWUubGVuZ3RoID49IDcgJiYgdmFsdWVbMF0gPT09ICdkJyAmJiAoZGF0YSA9IG5ldyBSZWdFeHAodHlwZXMuZGF0YS5yZWdleCkuZXhlYyh2YWx1ZSkpKSB7XG4gICAgaWYgKHByb3BJc0J5cGFzcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gbWFwcGVycyBub3QgYWxsb3dlZCBpbiBieXBhc3NcblxuXG4gICAgdmFyIG1hcHBlZCA9IHR5cGVzLmRhdGE7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogZGF0YSxcbiAgICAgIHN0clZhbHVlOiAnJyArIHZhbHVlLFxuICAgICAgbWFwcGVkOiBtYXBwZWQsXG4gICAgICBmaWVsZDogZGF0YVsxXSxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTtcbiAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPj0gMTAgJiYgdmFsdWVbMF0gPT09ICdtJyAmJiAobWFwRGF0YSA9IG5ldyBSZWdFeHAodHlwZXMubWFwRGF0YS5yZWdleCkuZXhlYyh2YWx1ZSkpKSB7XG4gICAgaWYgKHByb3BJc0J5cGFzcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gbWFwcGVycyBub3QgYWxsb3dlZCBpbiBieXBhc3NcblxuXG4gICAgaWYgKHR5cGUubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGltcG9zc2libGUgdG8gbWFwIHRvIG51bVxuXG5cbiAgICB2YXIgX21hcHBlZCA9IHR5cGVzLm1hcERhdGE7IC8vIHdlIGNhbiBtYXAgb25seSBpZiB0aGUgdHlwZSBpcyBhIGNvbG91ciBvciBhIG51bWJlclxuXG4gICAgaWYgKCEodHlwZS5jb2xvciB8fCB0eXBlLm51bWJlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVNaW4gPSB0aGlzLnBhcnNlKG5hbWUsIG1hcERhdGFbNF0pOyAvLyBwYXJzZSB0byB2YWxpZGF0ZVxuXG4gICAgaWYgKCF2YWx1ZU1pbiB8fCB2YWx1ZU1pbi5tYXBwZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGNhbid0IGJlIGludmFsaWQgb3IgbWFwcGVkXG5cblxuICAgIHZhciB2YWx1ZU1heCA9IHRoaXMucGFyc2UobmFtZSwgbWFwRGF0YVs1XSk7IC8vIHBhcnNlIHRvIHZhbGlkYXRlXG5cbiAgICBpZiAoIXZhbHVlTWF4IHx8IHZhbHVlTWF4Lm1hcHBlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gY2FuJ3QgYmUgaW52YWxpZCBvciBtYXBwZWRcbiAgICAvLyBjaGVjayBpZiB2YWx1ZU1pbiBhbmQgdmFsdWVNYXggYXJlIHRoZSBzYW1lXG5cblxuICAgIGlmICh2YWx1ZU1pbi5wZlZhbHVlID09PSB2YWx1ZU1heC5wZlZhbHVlIHx8IHZhbHVlTWluLnN0clZhbHVlID09PSB2YWx1ZU1heC5zdHJWYWx1ZSkge1xuICAgICAgd2FybignYCcgKyBuYW1lICsgJzogJyArIHZhbHVlICsgJ2AgaXMgbm90IGEgdmFsaWQgbWFwcGVyIGJlY2F1c2UgdGhlIG91dHB1dCByYW5nZSBpcyB6ZXJvOyBjb252ZXJ0aW5nIHRvIGAnICsgbmFtZSArICc6ICcgKyB2YWx1ZU1pbi5zdHJWYWx1ZSArICdgJyk7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZShuYW1lLCB2YWx1ZU1pbi5zdHJWYWx1ZSk7IC8vIGNhbid0IG1ha2UgbXVjaCBvZiBhIG1hcHBlciB3aXRob3V0IGEgcmFuZ2VcbiAgICB9IGVsc2UgaWYgKHR5cGUuY29sb3IpIHtcbiAgICAgIHZhciBjMSA9IHZhbHVlTWluLnZhbHVlO1xuICAgICAgdmFyIGMyID0gdmFsdWVNYXgudmFsdWU7XG4gICAgICB2YXIgc2FtZSA9IGMxWzBdID09PSBjMlswXSAvLyByZWRcbiAgICAgICYmIGMxWzFdID09PSBjMlsxXSAvLyBncmVlblxuICAgICAgJiYgYzFbMl0gPT09IGMyWzJdIC8vIGJsdWVcbiAgICAgICYmICggLy8gb3B0aW9uYWwgYWxwaGFcbiAgICAgIGMxWzNdID09PSBjMlszXSAvLyBzYW1lIGFscGhhIG91dHJpZ2h0XG4gICAgICB8fCAoYzFbM10gPT0gbnVsbCB8fCBjMVszXSA9PT0gMSkgJiYgKCAvLyBmdWxsIG9wYWNpdHkgZm9yIGNvbG91ciAxP1xuICAgICAgYzJbM10gPT0gbnVsbCB8fCBjMlszXSA9PT0gMSkgLy8gZnVsbCBvcGFjaXR5IGZvciBjb2xvdXIgMj9cbiAgICAgICk7XG5cbiAgICAgIGlmIChzYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gY2FuJ3QgbWFrZSBhIG1hcHBlciB3aXRob3V0IGEgcmFuZ2VcblxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IG1hcERhdGEsXG4gICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgIG1hcHBlZDogX21hcHBlZCxcbiAgICAgIGZpZWxkOiBtYXBEYXRhWzFdLFxuICAgICAgZmllbGRNaW46IHBhcnNlRmxvYXQobWFwRGF0YVsyXSksXG4gICAgICAvLyBtaW4gJiBtYXggYXJlIG51bWVyaWNcbiAgICAgIGZpZWxkTWF4OiBwYXJzZUZsb2F0KG1hcERhdGFbM10pLFxuICAgICAgdmFsdWVNaW46IHZhbHVlTWluLnZhbHVlLFxuICAgICAgdmFsdWVNYXg6IHZhbHVlTWF4LnZhbHVlLFxuICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICB9O1xuICB9XG5cbiAgaWYgKHR5cGUubXVsdGlwbGUgJiYgcHJvcElzRmxhdCAhPT0gJ211bHRpcGxlJykge1xuICAgIHZhciB2YWxzO1xuXG4gICAgaWYgKHZhbHVlSXNTdHJpbmcpIHtcbiAgICAgIHZhbHMgPSB2YWx1ZS5zcGxpdCgvXFxzKy8pO1xuICAgIH0gZWxzZSBpZiAoYXJyYXkodmFsdWUpKSB7XG4gICAgICB2YWxzID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHMgPSBbdmFsdWVdO1xuICAgIH1cblxuICAgIGlmICh0eXBlLmV2ZW5NdWx0aXBsZSAmJiB2YWxzLmxlbmd0aCAlIDIgIT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciB2YWxBcnIgPSBbXTtcbiAgICB2YXIgdW5pdHNBcnIgPSBbXTtcbiAgICB2YXIgcGZWYWxBcnIgPSBbXTtcbiAgICB2YXIgc3RyVmFsID0gJyc7XG4gICAgdmFyIGhhc0VudW0gPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHAgPSBzZWxmLnBhcnNlKG5hbWUsIHZhbHNbaV0sIHByb3BJc0J5cGFzcywgJ211bHRpcGxlJyk7XG4gICAgICBoYXNFbnVtID0gaGFzRW51bSB8fCBzdHJpbmcocC52YWx1ZSk7XG4gICAgICB2YWxBcnIucHVzaChwLnZhbHVlKTtcbiAgICAgIHBmVmFsQXJyLnB1c2gocC5wZlZhbHVlICE9IG51bGwgPyBwLnBmVmFsdWUgOiBwLnZhbHVlKTtcbiAgICAgIHVuaXRzQXJyLnB1c2gocC51bml0cyk7XG4gICAgICBzdHJWYWwgKz0gKGkgPiAwID8gJyAnIDogJycpICsgcC5zdHJWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZS52YWxpZGF0ZSAmJiAhdHlwZS52YWxpZGF0ZSh2YWxBcnIsIHVuaXRzQXJyKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUuc2luZ2xlRW51bSAmJiBoYXNFbnVtKSB7XG4gICAgICBpZiAodmFsQXJyLmxlbmd0aCA9PT0gMSAmJiBzdHJpbmcodmFsQXJyWzBdKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgdmFsdWU6IHZhbEFyclswXSxcbiAgICAgICAgICBzdHJWYWx1ZTogdmFsQXJyWzBdLFxuICAgICAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWxBcnIsXG4gICAgICBwZlZhbHVlOiBwZlZhbEFycixcbiAgICAgIHN0clZhbHVlOiBzdHJWYWwsXG4gICAgICBieXBhc3M6IHByb3BJc0J5cGFzcyxcbiAgICAgIHVuaXRzOiB1bml0c0FyclxuICAgIH07XG4gIH0gLy8gc2V2ZXJhbCB0eXBlcyBhbHNvIGFsbG93IGVudW1zXG5cblxuICB2YXIgY2hlY2tFbnVtcyA9IGZ1bmN0aW9uIGNoZWNrRW51bXMoKSB7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHR5cGUuZW51bXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgZW4gPSB0eXBlLmVudW1zW19pXTtcblxuICAgICAgaWYgKGVuID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIHN0clZhbHVlOiAnJyArIHZhbHVlLFxuICAgICAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07IC8vIGNoZWNrIHRoZSB0eXBlIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIG9iamVjdFxuXG5cbiAgaWYgKHR5cGUubnVtYmVyKSB7XG4gICAgdmFyIHVuaXRzO1xuICAgIHZhciBpbXBsaWNpdFVuaXRzID0gJ3B4JzsgLy8gbm90IHNldCA9PiBweFxuXG4gICAgaWYgKHR5cGUudW5pdHMpIHtcbiAgICAgIC8vIHVzZSBzcGVjaWZpZWQgdW5pdHMgaWYgc2V0XG4gICAgICB1bml0cyA9IHR5cGUudW5pdHM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUuaW1wbGljaXRVbml0cykge1xuICAgICAgaW1wbGljaXRVbml0cyA9IHR5cGUuaW1wbGljaXRVbml0cztcbiAgICB9XG5cbiAgICBpZiAoIXR5cGUudW5pdGxlc3MpIHtcbiAgICAgIGlmICh2YWx1ZUlzU3RyaW5nKSB7XG4gICAgICAgIHZhciB1bml0c1JlZ2V4ID0gJ3B4fGVtJyArICh0eXBlLmFsbG93UGVyY2VudCA/ICd8XFxcXCUnIDogJycpO1xuXG4gICAgICAgIGlmICh1bml0cykge1xuICAgICAgICAgIHVuaXRzUmVnZXggPSB1bml0cztcbiAgICAgICAgfSAvLyBvbmx5IGFsbG93IGV4cGxpY2l0IHVuaXRzIGlmIHNvIHNldFxuXG5cbiAgICAgICAgdmFyIG1hdGNoID0gdmFsdWUubWF0Y2goJ14oJyArIG51bWJlciQxICsgJykoJyArIHVuaXRzUmVnZXggKyAnKT8nICsgJyQnKTtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB2YWx1ZSA9IG1hdGNoWzFdO1xuICAgICAgICAgIHVuaXRzID0gbWF0Y2hbMl0gfHwgaW1wbGljaXRVbml0cztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdW5pdHMgfHwgdHlwZS5pbXBsaWNpdFVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gaW1wbGljaXRVbml0czsgLy8gaW1wbGljaXRseSBweCBpZiB1bnNwZWNpZmllZFxuICAgICAgfVxuICAgIH1cblxuICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7IC8vIGlmIG5vdCBhIG51bWJlciBhbmQgZW51bXMgbm90IGFsbG93ZWQsIHRoZW4gdGhlIHZhbHVlIGlzIGludmFsaWRcblxuICAgIGlmIChpc05hTih2YWx1ZSkgJiYgdHlwZS5lbnVtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIGNoZWNrIGlmIHRoaXMgbnVtYmVyIHR5cGUgYWxzbyBhY2NlcHRzIHNwZWNpYWwga2V5d29yZHMgaW4gcGxhY2Ugb2YgbnVtYmVyc1xuICAgIC8vIChpLmUuIGBsZWZ0YCwgYGF1dG9gLCBldGMpXG5cblxuICAgIGlmIChpc05hTih2YWx1ZSkgJiYgdHlwZS5lbnVtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZSA9IHBhc3NlZFZhbHVlO1xuICAgICAgcmV0dXJuIGNoZWNrRW51bXMoKTtcbiAgICB9IC8vIGNoZWNrIGlmIHZhbHVlIG11c3QgYmUgYW4gaW50ZWdlclxuXG5cbiAgICBpZiAodHlwZS5pbnRlZ2VyICYmICFpbnRlZ2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSAvLyBjaGVjayB2YWx1ZSBpcyB3aXRoaW4gcmFuZ2VcblxuXG4gICAgaWYgKHR5cGUubWluICE9PSB1bmRlZmluZWQgJiYgKHZhbHVlIDwgdHlwZS5taW4gfHwgdHlwZS5zdHJpY3RNaW4gJiYgdmFsdWUgPT09IHR5cGUubWluKSB8fCB0eXBlLm1heCAhPT0gdW5kZWZpbmVkICYmICh2YWx1ZSA+IHR5cGUubWF4IHx8IHR5cGUuc3RyaWN0TWF4ICYmIHZhbHVlID09PSB0eXBlLm1heCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciByZXQgPSB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgc3RyVmFsdWU6ICcnICsgdmFsdWUgKyAodW5pdHMgPyB1bml0cyA6ICcnKSxcbiAgICAgIHVuaXRzOiB1bml0cyxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTsgLy8gbm9ybWFsaXNlIHZhbHVlIGluIHBpeGVsc1xuXG4gICAgaWYgKHR5cGUudW5pdGxlc3MgfHwgdW5pdHMgIT09ICdweCcgJiYgdW5pdHMgIT09ICdlbScpIHtcbiAgICAgIHJldC5wZlZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldC5wZlZhbHVlID0gdW5pdHMgPT09ICdweCcgfHwgIXVuaXRzID8gdmFsdWUgOiB0aGlzLmdldEVtU2l6ZUluUGl4ZWxzKCkgKiB2YWx1ZTtcbiAgICB9IC8vIG5vcm1hbGlzZSB2YWx1ZSBpbiBtc1xuXG5cbiAgICBpZiAodW5pdHMgPT09ICdtcycgfHwgdW5pdHMgPT09ICdzJykge1xuICAgICAgcmV0LnBmVmFsdWUgPSB1bml0cyA9PT0gJ21zJyA/IHZhbHVlIDogMTAwMCAqIHZhbHVlO1xuICAgIH0gLy8gbm9ybWFsaXNlIHZhbHVlIGluIHJhZFxuXG5cbiAgICBpZiAodW5pdHMgPT09ICdkZWcnIHx8IHVuaXRzID09PSAncmFkJykge1xuICAgICAgcmV0LnBmVmFsdWUgPSB1bml0cyA9PT0gJ3JhZCcgPyB2YWx1ZSA6IGRlZzJyYWQodmFsdWUpO1xuICAgIH0gLy8gbm9ybWFsaXplIHZhbHVlIGluICVcblxuXG4gICAgaWYgKHVuaXRzID09PSAnJScpIHtcbiAgICAgIHJldC5wZlZhbHVlID0gdmFsdWUgLyAxMDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSBlbHNlIGlmICh0eXBlLnByb3BMaXN0KSB7XG4gICAgdmFyIHByb3BzID0gW107XG4gICAgdmFyIHByb3BzU3RyID0gJycgKyB2YWx1ZTtcblxuICAgIGlmIChwcm9wc1N0ciA9PT0gJ25vbmUnKSA7IGVsc2Uge1xuICAgICAgLy8gZ28gb3ZlciBlYWNoIHByb3BcbiAgICAgIHZhciBwcm9wc1NwbGl0ID0gcHJvcHNTdHIuc3BsaXQoL1xccyosXFxzKnxcXHMrLyk7XG5cbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHByb3BzU3BsaXQubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wc1NwbGl0W19pMl0udHJpbSgpO1xuXG4gICAgICAgIGlmIChzZWxmLnByb3BlcnRpZXNbcHJvcE5hbWVdKSB7XG4gICAgICAgICAgcHJvcHMucHVzaChwcm9wTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2FybignYCcgKyBwcm9wTmFtZSArICdgIGlzIG5vdCBhIHZhbGlkIHByb3BlcnR5IG5hbWUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IHByb3BzLFxuICAgICAgc3RyVmFsdWU6IHByb3BzLmxlbmd0aCA9PT0gMCA/ICdub25lJyA6IHByb3BzLmpvaW4oJyAnKSxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlLmNvbG9yKSB7XG4gICAgdmFyIHR1cGxlID0gY29sb3IydHVwbGUodmFsdWUpO1xuXG4gICAgaWYgKCF0dXBsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdHVwbGUsXG4gICAgICBwZlZhbHVlOiB0dXBsZSxcbiAgICAgIHN0clZhbHVlOiAncmdiKCcgKyB0dXBsZVswXSArICcsJyArIHR1cGxlWzFdICsgJywnICsgdHVwbGVbMl0gKyAnKScsXG4gICAgICAvLyBuLmIuIG5vIHNwYWNlcyBiL2Mgb2YgbXVsdGlwbGUgc3VwcG9ydFxuICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICB9O1xuICB9IGVsc2UgaWYgKHR5cGUucmVnZXggfHwgdHlwZS5yZWdleGVzKSB7XG4gICAgLy8gZmlyc3QgY2hlY2sgZW51bXNcbiAgICBpZiAodHlwZS5lbnVtcykge1xuICAgICAgdmFyIGVudW1Qcm9wID0gY2hlY2tFbnVtcygpO1xuXG4gICAgICBpZiAoZW51bVByb3ApIHtcbiAgICAgICAgcmV0dXJuIGVudW1Qcm9wO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZWdleGVzID0gdHlwZS5yZWdleGVzID8gdHlwZS5yZWdleGVzIDogW3R5cGUucmVnZXhdO1xuXG4gICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgcmVnZXhlcy5sZW5ndGg7IF9pMysrKSB7XG4gICAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4ZXNbX2kzXSk7IC8vIG1ha2UgYSByZWdleCBmcm9tIHRoZSB0eXBlIHN0cmluZ1xuXG4gICAgICB2YXIgbSA9IHJlZ2V4LmV4ZWModmFsdWUpO1xuXG4gICAgICBpZiAobSkge1xuICAgICAgICAvLyByZWdleCBtYXRjaGVzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICB2YWx1ZTogdHlwZS5zaW5nbGVSZWdleE1hdGNoVmFsdWUgPyBtWzFdIDogbSxcbiAgICAgICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgICAgICBieXBhc3M6IHByb3BJc0J5cGFzc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsOyAvLyBkaWRuJ3QgbWF0Y2ggYW55XG4gIH0gZWxzZSBpZiAodHlwZS5zdHJpbmcpIHtcbiAgICAvLyBqdXN0IHJldHVyblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6ICcnICsgdmFsdWUsXG4gICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlLmVudW1zKSB7XG4gICAgLy8gY2hlY2sgZW51bXMgbGFzdCBiZWNhdXNlIGl0J3MgYSBjb21ibyB0eXBlIGluIG90aGVyc1xuICAgIHJldHVybiBjaGVja0VudW1zKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7IC8vIG5vdCBhIHR5cGUgd2UgY2FuIGhhbmRsZVxuICB9XG59O1xuXG52YXIgU3R5bGUgPSBmdW5jdGlvbiBTdHlsZShjeSkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3R5bGUpKSB7XG4gICAgcmV0dXJuIG5ldyBTdHlsZShjeSk7XG4gIH1cblxuICBpZiAoIWNvcmUoY3kpKSB7XG4gICAgZXJyb3IoJ0Egc3R5bGUgbXVzdCBoYXZlIGEgY29yZSByZWZlcmVuY2UnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLl9wcml2YXRlID0ge1xuICAgIGN5OiBjeSxcbiAgICBjb3JlU3R5bGU6IHt9XG4gIH07XG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgdGhpcy5yZXNldFRvRGVmYXVsdCgpO1xufTtcblxudmFyIHN0eWZuJDggPSBTdHlsZS5wcm90b3R5cGU7XG5cbnN0eWZuJDguaW5zdGFuY2VTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnc3R5bGUnO1xufTsgLy8gcmVtb3ZlIGFsbCBjb250ZXh0c1xuXG5cbnN0eWZuJDguY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gIHZhciBjeSA9IF9wLmN5O1xuICB2YXIgZWxlcyA9IGN5LmVsZW1lbnRzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpc1tpXSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgX3AuY29udGV4dFN0eWxlcyA9IHt9O1xuICBfcC5wcm9wRGlmZnMgPSB7fTtcbiAgdGhpcy5jbGVhbkVsZW1lbnRzKGVsZXMsIHRydWUpO1xuICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgIHZhciBlbGVfcCA9IGVsZVswXS5fcHJpdmF0ZTtcbiAgICBlbGVfcC5zdHlsZURpcnR5ID0gdHJ1ZTtcbiAgICBlbGVfcC5hcHBsaWVkSW5pdFN0eWxlID0gZmFsc2U7XG4gIH0pO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnN0eWZuJDgucmVzZXRUb0RlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2xlYXIoKTtcbiAgdGhpcy5hZGREZWZhdWx0U3R5bGVzaGVldCgpO1xuICByZXR1cm4gdGhpcztcbn07IC8vIGJ1aWxkcyBhIHN0eWxlIG9iamVjdCBmb3IgdGhlICdjb3JlJyBzZWxlY3RvclxuXG5cbnN0eWZuJDguY29yZSA9IGZ1bmN0aW9uIChwcm9wTmFtZSkge1xuICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5jb3JlU3R5bGVbcHJvcE5hbWVdIHx8IHRoaXMuZ2V0RGVmYXVsdFByb3BlcnR5KHByb3BOYW1lKTtcbn07IC8vIGNyZWF0ZSBhIG5ldyBjb250ZXh0IGZyb20gdGhlIHNwZWNpZmllZCBzZWxlY3RvciBzdHJpbmcgYW5kIHN3aXRjaCB0byB0aGF0IGNvbnRleHRcblxuXG5zdHlmbiQ4LnNlbGVjdG9yID0gZnVuY3Rpb24gKHNlbGVjdG9yU3RyKSB7XG4gIC8vICdjb3JlJyBpcyBhIHNwZWNpYWwgY2FzZSBhbmQgZG9lcyBub3QgbmVlZCBhIHNlbGVjdG9yXG4gIHZhciBzZWxlY3RvciA9IHNlbGVjdG9yU3RyID09PSAnY29yZScgPyBudWxsIDogbmV3IFNlbGVjdG9yKHNlbGVjdG9yU3RyKTtcbiAgdmFyIGkgPSB0aGlzLmxlbmd0aCsrOyAvLyBuZXcgY29udGV4dCBtZWFucyBuZXcgaW5kZXhcblxuICB0aGlzW2ldID0ge1xuICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICBtYXBwZWRQcm9wZXJ0aWVzOiBbXSxcbiAgICBpbmRleDogaVxuICB9O1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07IC8vIGFkZCBvbmUgb3IgbWFueSBjc3MgcnVsZXMgdG8gdGhlIGN1cnJlbnQgY29udGV4dFxuXG5cbnN0eWZuJDguY3NzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgIHZhciBtYXAgPSBhcmdzWzBdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwcm9wID0gc2VsZi5wcm9wZXJ0aWVzW2ldO1xuICAgICAgdmFyIG1hcFZhbCA9IG1hcFtwcm9wLm5hbWVdO1xuXG4gICAgICBpZiAobWFwVmFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFwVmFsID0gbWFwW2Rhc2gyY2FtZWwocHJvcC5uYW1lKV07XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBWYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNzc1J1bGUocHJvcC5uYW1lLCBtYXBWYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgIHRoaXMuY3NzUnVsZShhcmdzWzBdLCBhcmdzWzFdKTtcbiAgfSAvLyBkbyBub3RoaW5nIGlmIGFyZ3MgYXJlIGludmFsaWRcblxuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuc3R5Zm4kOC5zdHlsZSA9IHN0eWZuJDguY3NzOyAvLyBhZGQgYSBzaW5nbGUgY3NzIHJ1bGUgdG8gdGhlIGN1cnJlbnQgY29udGV4dFxuXG5zdHlmbiQ4LmNzc1J1bGUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgLy8gbmFtZS12YWx1ZSBwYWlyXG4gIHZhciBwcm9wZXJ0eSA9IHRoaXMucGFyc2UobmFtZSwgdmFsdWUpOyAvLyBhZGQgcHJvcGVydHkgdG8gY3VycmVudCBjb250ZXh0IGlmIHZhbGlkXG5cbiAgaWYgKHByb3BlcnR5KSB7XG4gICAgdmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7XG4gICAgdGhpc1tpXS5wcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuICAgIHRoaXNbaV0ucHJvcGVydGllc1twcm9wZXJ0eS5uYW1lXSA9IHByb3BlcnR5OyAvLyBhbGxvdyBhY2Nlc3MgYnkgbmFtZSBhcyB3ZWxsXG5cbiAgICBpZiAocHJvcGVydHkubmFtZS5tYXRjaCgvcGllLShcXGQrKS1iYWNrZ3JvdW5kLXNpemUvKSAmJiBwcm9wZXJ0eS52YWx1ZSkge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5oYXNQaWUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9wZXJ0eS5tYXBwZWQpIHtcbiAgICAgIHRoaXNbaV0ubWFwcGVkUHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTtcbiAgICB9IC8vIGFkZCB0byBjb3JlIHN0eWxlIGlmIG5lY2Vzc2FyeVxuXG5cbiAgICB2YXIgY3VycmVudFNlbGVjdG9ySXNDb3JlID0gIXRoaXNbaV0uc2VsZWN0b3I7XG5cbiAgICBpZiAoY3VycmVudFNlbGVjdG9ySXNDb3JlKSB7XG4gICAgICB0aGlzLl9wcml2YXRlLmNvcmVTdHlsZVtwcm9wZXJ0eS5uYW1lXSA9IHByb3BlcnR5O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuc3R5Zm4kOC5hcHBlbmQgPSBmdW5jdGlvbiAoc3R5bGUpIHtcbiAgaWYgKHN0eWxlc2hlZXQoc3R5bGUpKSB7XG4gICAgc3R5bGUuYXBwZW5kVG9TdHlsZSh0aGlzKTtcbiAgfSBlbHNlIGlmIChhcnJheShzdHlsZSkpIHtcbiAgICB0aGlzLmFwcGVuZEZyb21Kc29uKHN0eWxlKTtcbiAgfSBlbHNlIGlmIChzdHJpbmcoc3R5bGUpKSB7XG4gICAgdGhpcy5hcHBlbmRGcm9tU3RyaW5nKHN0eWxlKTtcbiAgfSAvLyB5b3UgcHJvYmFibHkgd291bGRuJ3Qgd2FudCB0byBhcHBlbmQgYSBTdHlsZSwgc2luY2UgeW91J2QgZHVwbGljYXRlIHRoZSBkZWZhdWx0IHBhcnRzXG5cblxuICByZXR1cm4gdGhpcztcbn07IC8vIHN0YXRpYyBmdW5jdGlvblxuXG5cblN0eWxlLmZyb21Kc29uID0gZnVuY3Rpb24gKGN5LCBqc29uKSB7XG4gIHZhciBzdHlsZSA9IG5ldyBTdHlsZShjeSk7XG4gIHN0eWxlLmZyb21Kc29uKGpzb24pO1xuICByZXR1cm4gc3R5bGU7XG59O1xuXG5TdHlsZS5mcm9tU3RyaW5nID0gZnVuY3Rpb24gKGN5LCBzdHJpbmcpIHtcbiAgcmV0dXJuIG5ldyBTdHlsZShjeSkuZnJvbVN0cmluZyhzdHJpbmcpO1xufTtcblxuW3N0eWZuLCBzdHlmbiQxLCBzdHlmbiQyLCBzdHlmbiQzLCBzdHlmbiQ0LCBzdHlmbiQ1LCBzdHlmbiQ2LCBzdHlmbiQ3XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoc3R5Zm4kOCwgcHJvcHMpO1xufSk7XG5TdHlsZS50eXBlcyA9IHN0eWZuJDgudHlwZXM7XG5TdHlsZS5wcm9wZXJ0aWVzID0gc3R5Zm4kOC5wcm9wZXJ0aWVzO1xuU3R5bGUucHJvcGVydHlHcm91cHMgPSBzdHlmbiQ4LnByb3BlcnR5R3JvdXBzO1xuU3R5bGUucHJvcGVydHlHcm91cE5hbWVzID0gc3R5Zm4kOC5wcm9wZXJ0eUdyb3VwTmFtZXM7XG5TdHlsZS5wcm9wZXJ0eUdyb3VwS2V5cyA9IHN0eWZuJDgucHJvcGVydHlHcm91cEtleXM7XG5cbnZhciBjb3JlZm4kNyA9IHtcbiAgc3R5bGU6IGZ1bmN0aW9uIHN0eWxlKG5ld1N0eWxlKSB7XG4gICAgaWYgKG5ld1N0eWxlKSB7XG4gICAgICB2YXIgcyA9IHRoaXMuc2V0U3R5bGUobmV3U3R5bGUpO1xuICAgICAgcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5zdHlsZTtcbiAgfSxcbiAgc2V0U3R5bGU6IGZ1bmN0aW9uIHNldFN0eWxlKHN0eWxlKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICAgIGlmIChzdHlsZXNoZWV0KHN0eWxlKSkge1xuICAgICAgX3Auc3R5bGUgPSBzdHlsZS5nZW5lcmF0ZVN0eWxlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoYXJyYXkoc3R5bGUpKSB7XG4gICAgICBfcC5zdHlsZSA9IFN0eWxlLmZyb21Kc29uKHRoaXMsIHN0eWxlKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyhzdHlsZSkpIHtcbiAgICAgIF9wLnN0eWxlID0gU3R5bGUuZnJvbVN0cmluZyh0aGlzLCBzdHlsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9wLnN0eWxlID0gU3R5bGUodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9wLnN0eWxlO1xuICB9LFxuICAvLyBlLmcuIGN5LmRhdGEoKSBjaGFuZ2VkID0+IHJlY2FsYyBlbGUgbWFwcGVyc1xuICB1cGRhdGVTdHlsZTogZnVuY3Rpb24gdXBkYXRlU3R5bGUoKSB7XG4gICAgdGhpcy5tdXRhYmxlRWxlbWVudHMoKS51cGRhdGVTdHlsZSgpOyAvLyBqdXN0IHNlbmQgdG8gYWxsIGVsZXNcbiAgfVxufTtcblxudmFyIGRlZmF1bHRTZWxlY3Rpb25UeXBlID0gJ3NpbmdsZSc7XG52YXIgY29yZWZuJDggPSB7XG4gIGF1dG9sb2NrOiBmdW5jdGlvbiBhdXRvbG9jayhib29sKSB7XG4gICAgaWYgKGJvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5hdXRvbG9jayA9IGJvb2wgPyB0cnVlIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmF1dG9sb2NrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBhdXRvdW5ncmFiaWZ5OiBmdW5jdGlvbiBhdXRvdW5ncmFiaWZ5KGJvb2wpIHtcbiAgICBpZiAoYm9vbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9wcml2YXRlLmF1dG91bmdyYWJpZnkgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5hdXRvdW5ncmFiaWZ5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBhdXRvdW5zZWxlY3RpZnk6IGZ1bmN0aW9uIGF1dG91bnNlbGVjdGlmeShib29sKSB7XG4gICAgaWYgKGJvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5hdXRvdW5zZWxlY3RpZnkgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5hdXRvdW5zZWxlY3RpZnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHNlbGVjdGlvblR5cGU6IGZ1bmN0aW9uIHNlbGVjdGlvblR5cGUoc2VsVHlwZSkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICBpZiAoX3Auc2VsZWN0aW9uVHlwZSA9PSBudWxsKSB7XG4gICAgICBfcC5zZWxlY3Rpb25UeXBlID0gZGVmYXVsdFNlbGVjdGlvblR5cGU7XG4gICAgfVxuXG4gICAgaWYgKHNlbFR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHNlbFR5cGUgPT09ICdhZGRpdGl2ZScgfHwgc2VsVHlwZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgX3Auc2VsZWN0aW9uVHlwZSA9IHNlbFR5cGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBfcC5zZWxlY3Rpb25UeXBlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBwYW5uaW5nRW5hYmxlZDogZnVuY3Rpb24gcGFubmluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5wYW5uaW5nRW5hYmxlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgdXNlclBhbm5pbmdFbmFibGVkOiBmdW5jdGlvbiB1c2VyUGFubmluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUudXNlclBhbm5pbmdFbmFibGVkID0gYm9vbCA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUudXNlclBhbm5pbmdFbmFibGVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICB6b29taW5nRW5hYmxlZDogZnVuY3Rpb24gem9vbWluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUuem9vbWluZ0VuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS56b29taW5nRW5hYmxlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgdXNlclpvb21pbmdFbmFibGVkOiBmdW5jdGlvbiB1c2VyWm9vbWluZ0VuYWJsZWQoYm9vbCkge1xuICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUudXNlclpvb21pbmdFbmFibGVkID0gYm9vbCA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUudXNlclpvb21pbmdFbmFibGVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBib3hTZWxlY3Rpb25FbmFibGVkOiBmdW5jdGlvbiBib3hTZWxlY3Rpb25FbmFibGVkKGJvb2wpIHtcbiAgICBpZiAoYm9vbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9wcml2YXRlLmJveFNlbGVjdGlvbkVuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5ib3hTZWxlY3Rpb25FbmFibGVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBwYW46IGZ1bmN0aW9uIHBhbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgcGFuID0gdGhpcy5fcHJpdmF0ZS5wYW47XG4gICAgdmFyIGRpbSwgdmFsLCBkaW1zLCB4LCB5O1xuXG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICAvLyAucGFuKClcbiAgICAgICAgcmV0dXJuIHBhbjtcblxuICAgICAgY2FzZSAxOlxuICAgICAgICBpZiAoc3RyaW5nKGFyZ3NbMF0pKSB7XG4gICAgICAgICAgLy8gLnBhbigneCcpXG4gICAgICAgICAgZGltID0gYXJnc1swXTtcbiAgICAgICAgICByZXR1cm4gcGFuW2RpbV07XG4gICAgICAgIH0gZWxzZSBpZiAocGxhaW5PYmplY3QoYXJnc1swXSkpIHtcbiAgICAgICAgICAvLyAucGFuKHsgeDogMCwgeTogMTAwIH0pXG4gICAgICAgICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkaW1zID0gYXJnc1swXTtcbiAgICAgICAgICB4ID0gZGltcy54O1xuICAgICAgICAgIHkgPSBkaW1zLnk7XG5cbiAgICAgICAgICBpZiAobnVtYmVyKHgpKSB7XG4gICAgICAgICAgICBwYW4ueCA9IHg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG51bWJlcih5KSkge1xuICAgICAgICAgICAgcGFuLnkgPSB5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICAvLyAucGFuKCd4JywgMTAwKVxuICAgICAgICBpZiAoIXRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGRpbSA9IGFyZ3NbMF07XG4gICAgICAgIHZhbCA9IGFyZ3NbMV07XG5cbiAgICAgICAgaWYgKChkaW0gPT09ICd4JyB8fCBkaW0gPT09ICd5JykgJiYgbnVtYmVyKHZhbCkpIHtcbiAgICAgICAgICBwYW5bZGltXSA9IHZhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gaW52YWxpZFxuICAgIH1cblxuICAgIHRoaXMubm90aWZ5KCd2aWV3cG9ydCcpO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9LFxuICBwYW5CeTogZnVuY3Rpb24gcGFuQnkoYXJnMCwgYXJnMSkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgIHZhciBwYW4gPSB0aGlzLl9wcml2YXRlLnBhbjtcbiAgICB2YXIgZGltLCB2YWwsIGRpbXMsIHgsIHk7XG5cbiAgICBpZiAoIXRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaWYgKHBsYWluT2JqZWN0KGFyZzApKSB7XG4gICAgICAgICAgLy8gLnBhbkJ5KHsgeDogMCwgeTogMTAwIH0pXG4gICAgICAgICAgZGltcyA9IGFyZ3NbMF07XG4gICAgICAgICAgeCA9IGRpbXMueDtcbiAgICAgICAgICB5ID0gZGltcy55O1xuXG4gICAgICAgICAgaWYgKG51bWJlcih4KSkge1xuICAgICAgICAgICAgcGFuLnggKz0geDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobnVtYmVyKHkpKSB7XG4gICAgICAgICAgICBwYW4ueSArPSB5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICAvLyAucGFuQnkoJ3gnLCAxMDApXG4gICAgICAgIGRpbSA9IGFyZzA7XG4gICAgICAgIHZhbCA9IGFyZzE7XG5cbiAgICAgICAgaWYgKChkaW0gPT09ICd4JyB8fCBkaW0gPT09ICd5JykgJiYgbnVtYmVyKHZhbCkpIHtcbiAgICAgICAgICBwYW5bZGltXSArPSB2YWw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtaXQoJ3BhbiB2aWV3cG9ydCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIGludmFsaWRcbiAgICB9XG5cbiAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgZml0OiBmdW5jdGlvbiBmaXQoZWxlbWVudHMsIHBhZGRpbmcpIHtcbiAgICB2YXIgdmlld3BvcnRTdGF0ZSA9IHRoaXMuZ2V0Rml0Vmlld3BvcnQoZWxlbWVudHMsIHBhZGRpbmcpO1xuXG4gICAgaWYgKHZpZXdwb3J0U3RhdGUpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgICBfcC56b29tID0gdmlld3BvcnRTdGF0ZS56b29tO1xuICAgICAgX3AucGFuID0gdmlld3BvcnRTdGF0ZS5wYW47XG4gICAgICB0aGlzLmVtaXQoJ3BhbiB6b29tIHZpZXdwb3J0Jyk7XG4gICAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgZ2V0Rml0Vmlld3BvcnQ6IGZ1bmN0aW9uIGdldEZpdFZpZXdwb3J0KGVsZW1lbnRzLCBwYWRkaW5nKSB7XG4gICAgaWYgKG51bWJlcihlbGVtZW50cykgJiYgcGFkZGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBlbGVtZW50cyBpcyBvcHRpb25hbFxuICAgICAgcGFkZGluZyA9IGVsZW1lbnRzO1xuICAgICAgZWxlbWVudHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkIHx8ICF0aGlzLl9wcml2YXRlLnpvb21pbmdFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGJiO1xuXG4gICAgaWYgKHN0cmluZyhlbGVtZW50cykpIHtcbiAgICAgIHZhciBzZWwgPSBlbGVtZW50cztcbiAgICAgIGVsZW1lbnRzID0gdGhpcy4kKHNlbCk7XG4gICAgfSBlbHNlIGlmIChib3VuZGluZ0JveChlbGVtZW50cykpIHtcbiAgICAgIC8vIGFzc3VtZSBiYlxuICAgICAgdmFyIGJiZSA9IGVsZW1lbnRzO1xuICAgICAgYmIgPSB7XG4gICAgICAgIHgxOiBiYmUueDEsXG4gICAgICAgIHkxOiBiYmUueTEsXG4gICAgICAgIHgyOiBiYmUueDIsXG4gICAgICAgIHkyOiBiYmUueTJcbiAgICAgIH07XG4gICAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICAgIH0gZWxzZSBpZiAoIWVsZW1lbnRPckNvbGxlY3Rpb24oZWxlbWVudHMpKSB7XG4gICAgICBlbGVtZW50cyA9IHRoaXMubXV0YWJsZUVsZW1lbnRzKCk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnRPckNvbGxlY3Rpb24oZWxlbWVudHMpICYmIGVsZW1lbnRzLmVtcHR5KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGNhbid0IGZpdCB0byBub3RoaW5nXG5cblxuICAgIGJiID0gYmIgfHwgZWxlbWVudHMuYm91bmRpbmdCb3goKTtcbiAgICB2YXIgdyA9IHRoaXMud2lkdGgoKTtcbiAgICB2YXIgaCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgdmFyIHpvb207XG4gICAgcGFkZGluZyA9IG51bWJlcihwYWRkaW5nKSA/IHBhZGRpbmcgOiAwO1xuXG4gICAgaWYgKCFpc05hTih3KSAmJiAhaXNOYU4oaCkgJiYgdyA+IDAgJiYgaCA+IDAgJiYgIWlzTmFOKGJiLncpICYmICFpc05hTihiYi5oKSAmJiBiYi53ID4gMCAmJiBiYi5oID4gMCkge1xuICAgICAgem9vbSA9IE1hdGgubWluKCh3IC0gMiAqIHBhZGRpbmcpIC8gYmIudywgKGggLSAyICogcGFkZGluZykgLyBiYi5oKTsgLy8gY3JvcCB6b29tXG5cbiAgICAgIHpvb20gPSB6b29tID4gdGhpcy5fcHJpdmF0ZS5tYXhab29tID8gdGhpcy5fcHJpdmF0ZS5tYXhab29tIDogem9vbTtcbiAgICAgIHpvb20gPSB6b29tIDwgdGhpcy5fcHJpdmF0ZS5taW5ab29tID8gdGhpcy5fcHJpdmF0ZS5taW5ab29tIDogem9vbTtcbiAgICAgIHZhciBwYW4gPSB7XG4gICAgICAgIC8vIG5vdyBwYW4gdG8gbWlkZGxlXG4gICAgICAgIHg6ICh3IC0gem9vbSAqIChiYi54MSArIGJiLngyKSkgLyAyLFxuICAgICAgICB5OiAoaCAtIHpvb20gKiAoYmIueTEgKyBiYi55MikpIC8gMlxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHpvb206IHpvb20sXG4gICAgICAgIHBhbjogcGFuXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfSxcbiAgem9vbVJhbmdlOiBmdW5jdGlvbiB6b29tUmFuZ2UobWluLCBtYXgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuXG4gICAgaWYgKG1heCA9PSBudWxsKSB7XG4gICAgICB2YXIgb3B0cyA9IG1pbjtcbiAgICAgIG1pbiA9IG9wdHMubWluO1xuICAgICAgbWF4ID0gb3B0cy5tYXg7XG4gICAgfVxuXG4gICAgaWYgKG51bWJlcihtaW4pICYmIG51bWJlcihtYXgpICYmIG1pbiA8PSBtYXgpIHtcbiAgICAgIF9wLm1pblpvb20gPSBtaW47XG4gICAgICBfcC5tYXhab29tID0gbWF4O1xuICAgIH0gZWxzZSBpZiAobnVtYmVyKG1pbikgJiYgbWF4ID09PSB1bmRlZmluZWQgJiYgbWluIDw9IF9wLm1heFpvb20pIHtcbiAgICAgIF9wLm1pblpvb20gPSBtaW47XG4gICAgfSBlbHNlIGlmIChudW1iZXIobWF4KSAmJiBtaW4gPT09IHVuZGVmaW5lZCAmJiBtYXggPj0gX3AubWluWm9vbSkge1xuICAgICAgX3AubWF4Wm9vbSA9IG1heDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgbWluWm9vbTogZnVuY3Rpb24gbWluWm9vbSh6b29tKSB7XG4gICAgaWYgKHpvb20gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUubWluWm9vbTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuem9vbVJhbmdlKHtcbiAgICAgICAgbWluOiB6b29tXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIG1heFpvb206IGZ1bmN0aW9uIG1heFpvb20oem9vbSkge1xuICAgIGlmICh6b29tID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLm1heFpvb207XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnpvb21SYW5nZSh7XG4gICAgICAgIG1heDogem9vbVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRab29tZWRWaWV3cG9ydDogZnVuY3Rpb24gZ2V0Wm9vbWVkVmlld3BvcnQocGFyYW1zKSB7XG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICB2YXIgY3VycmVudFBhbiA9IF9wLnBhbjtcbiAgICB2YXIgY3VycmVudFpvb20gPSBfcC56b29tO1xuICAgIHZhciBwb3M7IC8vIGluIHJlbmRlcmVkIHB4XG5cbiAgICB2YXIgem9vbTtcbiAgICB2YXIgYmFpbCA9IGZhbHNlO1xuXG4gICAgaWYgKCFfcC56b29taW5nRW5hYmxlZCkge1xuICAgICAgLy8gem9vbWluZyBkaXNhYmxlZFxuICAgICAgYmFpbCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG51bWJlcihwYXJhbXMpKSB7XG4gICAgICAvLyB0aGVuIHNldCB0aGUgem9vbVxuICAgICAgem9vbSA9IHBhcmFtcztcbiAgICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KHBhcmFtcykpIHtcbiAgICAgIC8vIHRoZW4gem9vbSBhYm91dCBhIHBvaW50XG4gICAgICB6b29tID0gcGFyYW1zLmxldmVsO1xuXG4gICAgICBpZiAocGFyYW1zLnBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgcG9zID0gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24ocGFyYW1zLnBvc2l0aW9uLCBjdXJyZW50Wm9vbSwgY3VycmVudFBhbik7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5yZW5kZXJlZFBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgcG9zID0gcGFyYW1zLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICB9XG5cbiAgICAgIGlmIChwb3MgIT0gbnVsbCAmJiAhX3AucGFubmluZ0VuYWJsZWQpIHtcbiAgICAgICAgLy8gcGFubmluZyBkaXNhYmxlZFxuICAgICAgICBiYWlsID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IC8vIGNyb3Agem9vbVxuXG5cbiAgICB6b29tID0gem9vbSA+IF9wLm1heFpvb20gPyBfcC5tYXhab29tIDogem9vbTtcbiAgICB6b29tID0gem9vbSA8IF9wLm1pblpvb20gPyBfcC5taW5ab29tIDogem9vbTsgLy8gY2FuJ3Qgem9vbSB3aXRoIGludmFsaWQgcGFyYW1zXG5cbiAgICBpZiAoYmFpbCB8fCAhbnVtYmVyKHpvb20pIHx8IHpvb20gPT09IGN1cnJlbnRab29tIHx8IHBvcyAhPSBudWxsICYmICghbnVtYmVyKHBvcy54KSB8fCAhbnVtYmVyKHBvcy55KSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChwb3MgIT0gbnVsbCkge1xuICAgICAgLy8gc2V0IHpvb20gYWJvdXQgcG9zaXRpb25cbiAgICAgIHZhciBwYW4xID0gY3VycmVudFBhbjtcbiAgICAgIHZhciB6b29tMSA9IGN1cnJlbnRab29tO1xuICAgICAgdmFyIHpvb20yID0gem9vbTtcbiAgICAgIHZhciBwYW4yID0ge1xuICAgICAgICB4OiAtem9vbTIgLyB6b29tMSAqIChwb3MueCAtIHBhbjEueCkgKyBwb3MueCxcbiAgICAgICAgeTogLXpvb20yIC8gem9vbTEgKiAocG9zLnkgLSBwYW4xLnkpICsgcG9zLnlcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICB6b29tZWQ6IHRydWUsXG4gICAgICAgIHBhbm5lZDogdHJ1ZSxcbiAgICAgICAgem9vbTogem9vbTIsXG4gICAgICAgIHBhbjogcGFuMlxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8ganVzdCBzZXQgdGhlIHpvb21cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHpvb21lZDogdHJ1ZSxcbiAgICAgICAgcGFubmVkOiBmYWxzZSxcbiAgICAgICAgem9vbTogem9vbSxcbiAgICAgICAgcGFuOiBjdXJyZW50UGFuXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgem9vbTogZnVuY3Rpb24gem9vbShwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGdldFxuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuem9vbTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2V0XG4gICAgICB2YXIgdnAgPSB0aGlzLmdldFpvb21lZFZpZXdwb3J0KHBhcmFtcyk7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuXG4gICAgICBpZiAodnAgPT0gbnVsbCB8fCAhdnAuem9vbWVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBfcC56b29tID0gdnAuem9vbTtcblxuICAgICAgaWYgKHZwLnBhbm5lZCkge1xuICAgICAgICBfcC5wYW4ueCA9IHZwLnBhbi54O1xuICAgICAgICBfcC5wYW4ueSA9IHZwLnBhbi55O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXQoJ3pvb20nICsgKHZwLnBhbm5lZCA/ICcgcGFuJyA6ICcnKSArICcgdmlld3BvcnQnKTtcbiAgICAgIHRoaXMubm90aWZ5KCd2aWV3cG9ydCcpO1xuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfVxuICB9LFxuICB2aWV3cG9ydDogZnVuY3Rpb24gdmlld3BvcnQob3B0cykge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgdmFyIHpvb21EZWZkID0gdHJ1ZTtcbiAgICB2YXIgcGFuRGVmZCA9IHRydWU7XG4gICAgdmFyIGV2ZW50cyA9IFtdOyAvLyB0byB0cmlnZ2VyXG5cbiAgICB2YXIgem9vbUZhaWxlZCA9IGZhbHNlO1xuICAgIHZhciBwYW5GYWlsZWQgPSBmYWxzZTtcblxuICAgIGlmICghb3B0cykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKCFudW1iZXIob3B0cy56b29tKSkge1xuICAgICAgem9vbURlZmQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXBsYWluT2JqZWN0KG9wdHMucGFuKSkge1xuICAgICAgcGFuRGVmZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghem9vbURlZmQgJiYgIXBhbkRlZmQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmICh6b29tRGVmZCkge1xuICAgICAgdmFyIHogPSBvcHRzLnpvb207XG5cbiAgICAgIGlmICh6IDwgX3AubWluWm9vbSB8fCB6ID4gX3AubWF4Wm9vbSB8fCAhX3Auem9vbWluZ0VuYWJsZWQpIHtcbiAgICAgICAgem9vbUZhaWxlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcC56b29tID0gejtcbiAgICAgICAgZXZlbnRzLnB1c2goJ3pvb20nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFuRGVmZCAmJiAoIXpvb21GYWlsZWQgfHwgIW9wdHMuY2FuY2VsT25GYWlsZWRab29tKSAmJiBfcC5wYW5uaW5nRW5hYmxlZCkge1xuICAgICAgdmFyIHAgPSBvcHRzLnBhbjtcblxuICAgICAgaWYgKG51bWJlcihwLngpKSB7XG4gICAgICAgIF9wLnBhbi54ID0gcC54O1xuICAgICAgICBwYW5GYWlsZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG51bWJlcihwLnkpKSB7XG4gICAgICAgIF9wLnBhbi55ID0gcC55O1xuICAgICAgICBwYW5GYWlsZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwYW5GYWlsZWQpIHtcbiAgICAgICAgZXZlbnRzLnB1c2goJ3BhbicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChldmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgZXZlbnRzLnB1c2goJ3ZpZXdwb3J0Jyk7XG4gICAgICB0aGlzLmVtaXQoZXZlbnRzLmpvaW4oJyAnKSk7XG4gICAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgY2VudGVyOiBmdW5jdGlvbiBjZW50ZXIoZWxlbWVudHMpIHtcbiAgICB2YXIgcGFuID0gdGhpcy5nZXRDZW50ZXJQYW4oZWxlbWVudHMpO1xuXG4gICAgaWYgKHBhbikge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5wYW4gPSBwYW47XG4gICAgICB0aGlzLmVtaXQoJ3BhbiB2aWV3cG9ydCcpO1xuICAgICAgdGhpcy5ub3RpZnkoJ3ZpZXdwb3J0Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIGdldENlbnRlclBhbjogZnVuY3Rpb24gZ2V0Q2VudGVyUGFuKGVsZW1lbnRzLCB6b29tKSB7XG4gICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHN0cmluZyhlbGVtZW50cykpIHtcbiAgICAgIHZhciBzZWxlY3RvciA9IGVsZW1lbnRzO1xuICAgICAgZWxlbWVudHMgPSB0aGlzLm11dGFibGVFbGVtZW50cygpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfSBlbHNlIGlmICghZWxlbWVudE9yQ29sbGVjdGlvbihlbGVtZW50cykpIHtcbiAgICAgIGVsZW1lbnRzID0gdGhpcy5tdXRhYmxlRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBjYW4ndCBjZW50cmUgcGFuIHRvIG5vdGhpbmdcblxuXG4gICAgdmFyIGJiID0gZWxlbWVudHMuYm91bmRpbmdCb3goKTtcbiAgICB2YXIgdyA9IHRoaXMud2lkdGgoKTtcbiAgICB2YXIgaCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgem9vbSA9IHpvb20gPT09IHVuZGVmaW5lZCA/IHRoaXMuX3ByaXZhdGUuem9vbSA6IHpvb207XG4gICAgdmFyIHBhbiA9IHtcbiAgICAgIC8vIG1pZGRsZVxuICAgICAgeDogKHcgLSB6b29tICogKGJiLngxICsgYmIueDIpKSAvIDIsXG4gICAgICB5OiAoaCAtIHpvb20gKiAoYmIueTEgKyBiYi55MikpIC8gMlxuICAgIH07XG4gICAgcmV0dXJuIHBhbjtcbiAgfSxcbiAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGlmICghdGhpcy5fcHJpdmF0ZS5wYW5uaW5nRW5hYmxlZCB8fCAhdGhpcy5fcHJpdmF0ZS56b29taW5nRW5hYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy52aWV3cG9ydCh7XG4gICAgICBwYW46IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSxcbiAgICAgIHpvb206IDFcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfSxcbiAgaW52YWxpZGF0ZVNpemU6IGZ1bmN0aW9uIGludmFsaWRhdGVTaXplKCkge1xuICAgIHRoaXMuX3ByaXZhdGUuc2l6ZUNhY2hlID0gbnVsbDtcbiAgfSxcbiAgc2l6ZTogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgIHZhciBjb250YWluZXIgPSBfcC5jb250YWluZXI7XG4gICAgcmV0dXJuIF9wLnNpemVDYWNoZSA9IF9wLnNpemVDYWNoZSB8fCAoY29udGFpbmVyID8gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHN0eWxlID0gd2luZG93JDEuZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXIpO1xuXG4gICAgICB2YXIgdmFsID0gZnVuY3Rpb24gdmFsKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogY29udGFpbmVyLmNsaWVudFdpZHRoIC0gdmFsKCdwYWRkaW5nLWxlZnQnKSAtIHZhbCgncGFkZGluZy1yaWdodCcpLFxuICAgICAgICBoZWlnaHQ6IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgLSB2YWwoJ3BhZGRpbmctdG9wJykgLSB2YWwoJ3BhZGRpbmctYm90dG9tJylcbiAgICAgIH07XG4gICAgfSgpIDoge1xuICAgICAgLy8gZmFsbGJhY2sgaWYgbm8gY29udGFpbmVyIChub3QgMCBiL2MgY2FuIGJlIHVzZWQgZm9yIGRpdmlkaW5nIGV0YylcbiAgICAgIHdpZHRoOiAxLFxuICAgICAgaGVpZ2h0OiAxXG4gICAgfSk7XG4gIH0sXG4gIHdpZHRoOiBmdW5jdGlvbiB3aWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5zaXplKCkud2lkdGg7XG4gIH0sXG4gIGhlaWdodDogZnVuY3Rpb24gaGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnNpemUoKS5oZWlnaHQ7XG4gIH0sXG4gIGV4dGVudDogZnVuY3Rpb24gZXh0ZW50KCkge1xuICAgIHZhciBwYW4gPSB0aGlzLl9wcml2YXRlLnBhbjtcbiAgICB2YXIgem9vbSA9IHRoaXMuX3ByaXZhdGUuem9vbTtcbiAgICB2YXIgcmIgPSB0aGlzLnJlbmRlcmVkRXh0ZW50KCk7XG4gICAgdmFyIGIgPSB7XG4gICAgICB4MTogKHJiLngxIC0gcGFuLngpIC8gem9vbSxcbiAgICAgIHgyOiAocmIueDIgLSBwYW4ueCkgLyB6b29tLFxuICAgICAgeTE6IChyYi55MSAtIHBhbi55KSAvIHpvb20sXG4gICAgICB5MjogKHJiLnkyIC0gcGFuLnkpIC8gem9vbVxuICAgIH07XG4gICAgYi53ID0gYi54MiAtIGIueDE7XG4gICAgYi5oID0gYi55MiAtIGIueTE7XG4gICAgcmV0dXJuIGI7XG4gIH0sXG4gIHJlbmRlcmVkRXh0ZW50OiBmdW5jdGlvbiByZW5kZXJlZEV4dGVudCgpIHtcbiAgICB2YXIgd2lkdGggPSB0aGlzLndpZHRoKCk7XG4gICAgdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHgxOiAwLFxuICAgICAgeTE6IDAsXG4gICAgICB4Mjogd2lkdGgsXG4gICAgICB5MjogaGVpZ2h0LFxuICAgICAgdzogd2lkdGgsXG4gICAgICBoOiBoZWlnaHRcbiAgICB9O1xuICB9LFxuICBtdWx0aUNsaWNrRGVib3VuY2VUaW1lOiBmdW5jdGlvbiBtdWx0aUNsaWNrRGVib3VuY2VUaW1lKF9pbnQpIHtcbiAgICBpZiAoX2ludCkgdGhpcy5fcHJpdmF0ZS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lID0gX2ludDtlbHNlIHJldHVybiB0aGlzLl9wcml2YXRlLm11bHRpQ2xpY2tEZWJvdW5jZVRpbWU7XG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH1cbn07IC8vIGFsaWFzZXNcblxuY29yZWZuJDguY2VudHJlID0gY29yZWZuJDguY2VudGVyOyAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG5jb3JlZm4kOC5hdXRvbG9ja05vZGVzID0gY29yZWZuJDguYXV0b2xvY2s7XG5jb3JlZm4kOC5hdXRvdW5ncmFiaWZ5Tm9kZXMgPSBjb3JlZm4kOC5hdXRvdW5ncmFiaWZ5O1xuXG52YXIgZm4kNiA9IHtcbiAgZGF0YTogZGVmaW5lJDMuZGF0YSh7XG4gICAgZmllbGQ6ICdkYXRhJyxcbiAgICBiaW5kaW5nRXZlbnQ6ICdkYXRhJyxcbiAgICBhbGxvd0JpbmRpbmc6IHRydWUsXG4gICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgIHNldHRpbmdFdmVudDogJ2RhdGEnLFxuICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiB0cnVlLFxuICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICBhbGxvd0dldHRpbmc6IHRydWUsXG4gICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgfSksXG4gIHJlbW92ZURhdGE6IGRlZmluZSQzLnJlbW92ZURhdGEoe1xuICAgIGZpZWxkOiAnZGF0YScsXG4gICAgZXZlbnQ6ICdkYXRhJyxcbiAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgdHJpZ2dlckV2ZW50OiB0cnVlLFxuICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gIH0pLFxuICBzY3JhdGNoOiBkZWZpbmUkMy5kYXRhKHtcbiAgICBmaWVsZDogJ3NjcmF0Y2gnLFxuICAgIGJpbmRpbmdFdmVudDogJ3NjcmF0Y2gnLFxuICAgIGFsbG93QmluZGluZzogdHJ1ZSxcbiAgICBhbGxvd1NldHRpbmc6IHRydWUsXG4gICAgc2V0dGluZ0V2ZW50OiAnc2NyYXRjaCcsXG4gICAgc2V0dGluZ1RyaWdnZXJzRXZlbnQ6IHRydWUsXG4gICAgdHJpZ2dlckZuTmFtZTogJ3RyaWdnZXInLFxuICAgIGFsbG93R2V0dGluZzogdHJ1ZSxcbiAgICB1cGRhdGVTdHlsZTogdHJ1ZVxuICB9KSxcbiAgcmVtb3ZlU2NyYXRjaDogZGVmaW5lJDMucmVtb3ZlRGF0YSh7XG4gICAgZmllbGQ6ICdzY3JhdGNoJyxcbiAgICBldmVudDogJ3NjcmF0Y2gnLFxuICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICB0cmlnZ2VyRXZlbnQ6IHRydWUsXG4gICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgfSlcbn07IC8vIGFsaWFzZXNcblxuZm4kNi5hdHRyID0gZm4kNi5kYXRhO1xuZm4kNi5yZW1vdmVBdHRyID0gZm4kNi5yZW1vdmVEYXRhO1xuXG52YXIgQ29yZSA9IGZ1bmN0aW9uIENvcmUob3B0cykge1xuICB2YXIgY3kgPSB0aGlzO1xuICBvcHRzID0gZXh0ZW5kKHt9LCBvcHRzKTtcbiAgdmFyIGNvbnRhaW5lciA9IG9wdHMuY29udGFpbmVyOyAvLyBhbGxvdyBmb3IgcGFzc2luZyBhIHdyYXBwZWQganF1ZXJ5IG9iamVjdFxuICAvLyBlLmcuIGN5dG9zY2FwZSh7IGNvbnRhaW5lcjogJCgnI2N5JykgfSlcblxuICBpZiAoY29udGFpbmVyICYmICFodG1sRWxlbWVudChjb250YWluZXIpICYmIGh0bWxFbGVtZW50KGNvbnRhaW5lclswXSkpIHtcbiAgICBjb250YWluZXIgPSBjb250YWluZXJbMF07XG4gIH1cblxuICB2YXIgcmVnID0gY29udGFpbmVyID8gY29udGFpbmVyLl9jeXJlZyA6IG51bGw7IC8vIGUuZy4gYWxyZWFkeSByZWdpc3RlcmVkIHNvbWUgaW5mbyAoZS5nLiByZWFkaWVzKSB2aWEganF1ZXJ5XG5cbiAgcmVnID0gcmVnIHx8IHt9O1xuXG4gIGlmIChyZWcgJiYgcmVnLmN5KSB7XG4gICAgcmVnLmN5LmRlc3Ryb3koKTtcbiAgICByZWcgPSB7fTsgLy8gb2xkIGluc3RhbmNlID0+IHJlcGxhY2UgcmVnIGNvbXBsZXRlbHlcbiAgfVxuXG4gIHZhciByZWFkaWVzID0gcmVnLnJlYWRpZXMgPSByZWcucmVhZGllcyB8fCBbXTtcblxuICBpZiAoY29udGFpbmVyKSB7XG4gICAgY29udGFpbmVyLl9jeXJlZyA9IHJlZztcbiAgfSAvLyBtYWtlIHN1cmUgY29udGFpbmVyIGFzc29jJ2QgcmVnIHBvaW50cyB0byB0aGlzIGN5XG5cblxuICByZWcuY3kgPSBjeTtcbiAgdmFyIGhlYWQgPSB3aW5kb3ckMSAhPT0gdW5kZWZpbmVkICYmIGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkICYmICFvcHRzLmhlYWRsZXNzO1xuICB2YXIgb3B0aW9ucyA9IG9wdHM7XG4gIG9wdGlvbnMubGF5b3V0ID0gZXh0ZW5kKHtcbiAgICBuYW1lOiBoZWFkID8gJ2dyaWQnIDogJ251bGwnXG4gIH0sIG9wdGlvbnMubGF5b3V0KTtcbiAgb3B0aW9ucy5yZW5kZXJlciA9IGV4dGVuZCh7XG4gICAgbmFtZTogaGVhZCA/ICdjYW52YXMnIDogJ251bGwnXG4gIH0sIG9wdGlvbnMucmVuZGVyZXIpO1xuXG4gIHZhciBkZWZWYWwgPSBmdW5jdGlvbiBkZWZWYWwoZGVmLCB2YWwsIGFsdFZhbCkge1xuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9IGVsc2UgaWYgKGFsdFZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYWx0VmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGVmO1xuICAgIH1cbiAgfTtcblxuICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlID0ge1xuICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgIC8vIGh0bWwgZG9tIGVsZSBjb250YWluZXJcbiAgICByZWFkeTogZmFsc2UsXG4gICAgLy8gd2hldGhlciByZWFkeSBoYXMgYmVlbiB0cmlnZ2VyZWRcbiAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgIC8vIGNhY2hlZCBvcHRpb25zXG4gICAgZWxlbWVudHM6IG5ldyBDb2xsZWN0aW9uKHRoaXMpLFxuICAgIC8vIGVsZW1lbnRzIGluIHRoZSBncmFwaFxuICAgIGxpc3RlbmVyczogW10sXG4gICAgLy8gbGlzdCBvZiBsaXN0ZW5lcnNcbiAgICBhbmlFbGVzOiBuZXcgQ29sbGVjdGlvbih0aGlzKSxcbiAgICAvLyBlbGVtZW50cyBiZWluZyBhbmltYXRlZFxuICAgIGRhdGE6IG9wdGlvbnMuZGF0YSB8fCB7fSxcbiAgICAvLyBkYXRhIGZvciB0aGUgY29yZVxuICAgIHNjcmF0Y2g6IHt9LFxuICAgIC8vIHNjcmF0Y2ggb2JqZWN0IGZvciBjb3JlXG4gICAgbGF5b3V0OiBudWxsLFxuICAgIHJlbmRlcmVyOiBudWxsLFxuICAgIGRlc3Ryb3llZDogZmFsc2UsXG4gICAgLy8gd2hldGhlciBkZXN0cm95IHdhcyBjYWxsZWRcbiAgICBub3RpZmljYXRpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICAvLyB3aGV0aGVyIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgdG8gdGhlIHJlbmRlcmVyXG4gICAgbWluWm9vbTogMWUtNTAsXG4gICAgbWF4Wm9vbTogMWU1MCxcbiAgICB6b29taW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMuem9vbWluZ0VuYWJsZWQpLFxuICAgIHVzZXJab29taW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMudXNlclpvb21pbmdFbmFibGVkKSxcbiAgICBwYW5uaW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMucGFubmluZ0VuYWJsZWQpLFxuICAgIHVzZXJQYW5uaW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMudXNlclBhbm5pbmdFbmFibGVkKSxcbiAgICBib3hTZWxlY3Rpb25FbmFibGVkOiBkZWZWYWwodHJ1ZSwgb3B0aW9ucy5ib3hTZWxlY3Rpb25FbmFibGVkKSxcbiAgICBhdXRvbG9jazogZGVmVmFsKGZhbHNlLCBvcHRpb25zLmF1dG9sb2NrLCBvcHRpb25zLmF1dG9sb2NrTm9kZXMpLFxuICAgIGF1dG91bmdyYWJpZnk6IGRlZlZhbChmYWxzZSwgb3B0aW9ucy5hdXRvdW5ncmFiaWZ5LCBvcHRpb25zLmF1dG91bmdyYWJpZnlOb2RlcyksXG4gICAgYXV0b3Vuc2VsZWN0aWZ5OiBkZWZWYWwoZmFsc2UsIG9wdGlvbnMuYXV0b3Vuc2VsZWN0aWZ5KSxcbiAgICBzdHlsZUVuYWJsZWQ6IG9wdGlvbnMuc3R5bGVFbmFibGVkID09PSB1bmRlZmluZWQgPyBoZWFkIDogb3B0aW9ucy5zdHlsZUVuYWJsZWQsXG4gICAgem9vbTogbnVtYmVyKG9wdGlvbnMuem9vbSkgPyBvcHRpb25zLnpvb20gOiAxLFxuICAgIHBhbjoge1xuICAgICAgeDogcGxhaW5PYmplY3Qob3B0aW9ucy5wYW4pICYmIG51bWJlcihvcHRpb25zLnBhbi54KSA/IG9wdGlvbnMucGFuLnggOiAwLFxuICAgICAgeTogcGxhaW5PYmplY3Qob3B0aW9ucy5wYW4pICYmIG51bWJlcihvcHRpb25zLnBhbi55KSA/IG9wdGlvbnMucGFuLnkgOiAwXG4gICAgfSxcbiAgICBhbmltYXRpb246IHtcbiAgICAgIC8vIG9iamVjdCBmb3IgY3VycmVudGx5LXJ1bm5pbmcgYW5pbWF0aW9uc1xuICAgICAgY3VycmVudDogW10sXG4gICAgICBxdWV1ZTogW11cbiAgICB9LFxuICAgIGhhc0NvbXBvdW5kTm9kZXM6IGZhbHNlLFxuICAgIG11bHRpQ2xpY2tEZWJvdW5jZVRpbWU6IGRlZlZhbCgyNTAsIG9wdGlvbnMubXVsdGlDbGlja0RlYm91bmNlVGltZSlcbiAgfTtcblxuICB0aGlzLmNyZWF0ZUVtaXR0ZXIoKTsgLy8gc2V0IHNlbGVjdGlvbiB0eXBlXG5cbiAgdGhpcy5zZWxlY3Rpb25UeXBlKG9wdGlvbnMuc2VsZWN0aW9uVHlwZSk7IC8vIGluaXQgem9vbSBib3VuZHNcblxuICB0aGlzLnpvb21SYW5nZSh7XG4gICAgbWluOiBvcHRpb25zLm1pblpvb20sXG4gICAgbWF4OiBvcHRpb25zLm1heFpvb21cbiAgfSk7XG5cbiAgdmFyIGxvYWRFeHREYXRhID0gZnVuY3Rpb24gbG9hZEV4dERhdGEoZXh0RGF0YSwgbmV4dCkge1xuICAgIHZhciBhbnlJc1Byb21pc2UgPSBleHREYXRhLnNvbWUocHJvbWlzZSk7XG5cbiAgICBpZiAoYW55SXNQcm9taXNlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZSQxLmFsbChleHREYXRhKS50aGVuKG5leHQpOyAvLyBsb2FkIGFsbCBkYXRhIGFzeW5jaHJvbm91c2x5LCB0aGVuIGV4ZWMgcmVzdCBvZiBpbml0XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQoZXh0RGF0YSk7IC8vIGV4ZWMgc3luY2hyb25vdXNseSBmb3IgY29udmVuaWVuY2VcbiAgICB9XG4gIH07IC8vIHN0YXJ0IHdpdGggdGhlIGRlZmF1bHQgc3R5bGVzaGVldCBzbyB3ZSBoYXZlIHNvbWV0aGluZyBiZWZvcmUgbG9hZGluZyBhbiBleHRlcm5hbCBzdHlsZXNoZWV0XG5cblxuICBpZiAoX3Auc3R5bGVFbmFibGVkKSB7XG4gICAgY3kuc2V0U3R5bGUoW10pO1xuICB9IC8vIGNyZWF0ZSB0aGUgcmVuZGVyZXJcblxuXG4gIHZhciByZW5kZXJlck9wdGlvbnMgPSBleHRlbmQoe30sIG9wdGlvbnMsIG9wdGlvbnMucmVuZGVyZXIpOyAvLyBhbGxvdyByZW5kZXJpbmcgaGludHMgaW4gdG9wIGxldmVsIG9wdGlvbnNcblxuICBjeS5pbml0UmVuZGVyZXIocmVuZGVyZXJPcHRpb25zKTtcblxuICB2YXIgc2V0RWxlc0FuZExheW91dCA9IGZ1bmN0aW9uIHNldEVsZXNBbmRMYXlvdXQoZWxlbWVudHMsIG9ubG9hZCwgb25kb25lKSB7XG4gICAgY3kubm90aWZpY2F0aW9ucyhmYWxzZSk7IC8vIHJlbW92ZSBvbGQgZWxlbWVudHNcblxuICAgIHZhciBvbGRFbGVzID0gY3kubXV0YWJsZUVsZW1lbnRzKCk7XG5cbiAgICBpZiAob2xkRWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBvbGRFbGVzLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50cyAhPSBudWxsKSB7XG4gICAgICBpZiAocGxhaW5PYmplY3QoZWxlbWVudHMpIHx8IGFycmF5KGVsZW1lbnRzKSkge1xuICAgICAgICBjeS5hZGQoZWxlbWVudHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN5Lm9uZSgnbGF5b3V0cmVhZHknLCBmdW5jdGlvbiAoZSkge1xuICAgICAgY3kubm90aWZpY2F0aW9ucyh0cnVlKTtcbiAgICAgIGN5LmVtaXQoZSk7IC8vIHdlIG1pc3NlZCB0aGlzIGV2ZW50IGJ5IHR1cm5pbmcgbm90aWZpY2F0aW9ucyBvZmYsIHNvIHBhc3MgaXQgb25cblxuICAgICAgY3kub25lKCdsb2FkJywgb25sb2FkKTtcbiAgICAgIGN5LmVtaXRBbmROb3RpZnkoJ2xvYWQnKTtcbiAgICB9KS5vbmUoJ2xheW91dHN0b3AnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjeS5vbmUoJ2RvbmUnLCBvbmRvbmUpO1xuICAgICAgY3kuZW1pdCgnZG9uZScpO1xuICAgIH0pO1xuICAgIHZhciBsYXlvdXRPcHRzID0gZXh0ZW5kKHt9LCBjeS5fcHJpdmF0ZS5vcHRpb25zLmxheW91dCk7XG4gICAgbGF5b3V0T3B0cy5lbGVzID0gY3kuZWxlbWVudHMoKTtcbiAgICBjeS5sYXlvdXQobGF5b3V0T3B0cykucnVuKCk7XG4gIH07XG5cbiAgbG9hZEV4dERhdGEoW29wdGlvbnMuc3R5bGUsIG9wdGlvbnMuZWxlbWVudHNdLCBmdW5jdGlvbiAodGhlbnMpIHtcbiAgICB2YXIgaW5pdFN0eWxlID0gdGhlbnNbMF07XG4gICAgdmFyIGluaXRFbGVzID0gdGhlbnNbMV07IC8vIGluaXQgc3R5bGVcblxuICAgIGlmIChfcC5zdHlsZUVuYWJsZWQpIHtcbiAgICAgIGN5LnN0eWxlKCkuYXBwZW5kKGluaXRTdHlsZSk7XG4gICAgfSAvLyBpbml0aWFsIGxvYWRcblxuXG4gICAgc2V0RWxlc0FuZExheW91dChpbml0RWxlcywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gb25yZWFkeVxuICAgICAgY3kuc3RhcnRBbmltYXRpb25Mb29wKCk7XG4gICAgICBfcC5yZWFkeSA9IHRydWU7IC8vIGlmIGEgcmVhZHkgY2FsbGJhY2sgaXMgc3BlY2lmaWVkIGFzIGFuIG9wdGlvbiwgdGhlIGJpbmQgaXRcblxuICAgICAgaWYgKGZuKG9wdGlvbnMucmVhZHkpKSB7XG4gICAgICAgIGN5Lm9uKCdyZWFkeScsIG9wdGlvbnMucmVhZHkpO1xuICAgICAgfSAvLyBiaW5kIGFsbCB0aGUgcmVhZHkgaGFuZGxlcnMgcmVnaXN0ZXJlZCBiZWZvcmUgY3JlYXRpbmcgdGhpcyBpbnN0YW5jZVxuXG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVhZGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZm4kMSA9IHJlYWRpZXNbaV07XG4gICAgICAgIGN5Lm9uKCdyZWFkeScsIGZuJDEpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVnKSB7XG4gICAgICAgIHJlZy5yZWFkaWVzID0gW107XG4gICAgICB9IC8vIGNsZWFyIGIvYyB3ZSd2ZSBib3VuZCB0aGVtIGFsbCBhbmQgZG9uJ3Qgd2FudCB0byBrZWVwIGl0IGFyb3VuZCBpbiBjYXNlIGEgbmV3IGNvcmUgdXNlcyB0aGUgc2FtZSBkaXYgZXRjXG5cblxuICAgICAgY3kuZW1pdCgncmVhZHknKTtcbiAgICB9LCBvcHRpb25zLmRvbmUpO1xuICB9KTtcbn07XG5cbnZhciBjb3JlZm4kOSA9IENvcmUucHJvdG90eXBlOyAvLyBzaG9ydCBhbGlhc1xuXG5leHRlbmQoY29yZWZuJDksIHtcbiAgaW5zdGFuY2VTdHJpbmc6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgIHJldHVybiAnY29yZSc7XG4gIH0sXG4gIGlzUmVhZHk6IGZ1bmN0aW9uIGlzUmVhZHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucmVhZHk7XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KGZuKSB7XG4gICAgaWYgKHRoaXMuaXNSZWFkeSgpKSB7XG4gICAgICB0aGlzLmVtaXR0ZXIoKS5lbWl0KCdyZWFkeScsIFtdLCBmbik7IC8vIGp1c3QgY2FsbHMgZm4gYXMgdGhvdWdoIHRyaWdnZXJlZCB2aWEgcmVhZHkgZXZlbnRcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbigncmVhZHknLCBmbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICBpZiAoY3kuZGVzdHJveWVkKCkpIHJldHVybjtcbiAgICBjeS5zdG9wQW5pbWF0aW9uTG9vcCgpO1xuICAgIGN5LmRlc3Ryb3lSZW5kZXJlcigpO1xuICAgIHRoaXMuZW1pdCgnZGVzdHJveScpO1xuICAgIGN5Ll9wcml2YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgcmV0dXJuIGN5O1xuICB9LFxuICBoYXNFbGVtZW50V2l0aElkOiBmdW5jdGlvbiBoYXNFbGVtZW50V2l0aElkKGlkKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuZWxlbWVudHMuaGFzRWxlbWVudFdpdGhJZChpZCk7XG4gIH0sXG4gIGdldEVsZW1lbnRCeUlkOiBmdW5jdGlvbiBnZXRFbGVtZW50QnlJZChpZCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmVsZW1lbnRzLmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgfSxcbiAgaGFzQ29tcG91bmROb2RlczogZnVuY3Rpb24gaGFzQ29tcG91bmROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5oYXNDb21wb3VuZE5vZGVzO1xuICB9LFxuICBoZWFkbGVzczogZnVuY3Rpb24gaGVhZGxlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucmVuZGVyZXIuaXNIZWFkbGVzcygpO1xuICB9LFxuICBzdHlsZUVuYWJsZWQ6IGZ1bmN0aW9uIHN0eWxlRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5zdHlsZUVuYWJsZWQ7XG4gIH0sXG4gIGFkZFRvUG9vbDogZnVuY3Rpb24gYWRkVG9Qb29sKGVsZXMpIHtcbiAgICB0aGlzLl9wcml2YXRlLmVsZW1lbnRzLm1lcmdlKGVsZXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH0sXG4gIHJlbW92ZUZyb21Qb29sOiBmdW5jdGlvbiByZW1vdmVGcm9tUG9vbChlbGVzKSB7XG4gICAgdGhpcy5fcHJpdmF0ZS5lbGVtZW50cy51bm1lcmdlKGVsZXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGNvbnRhaW5lcjogZnVuY3Rpb24gY29udGFpbmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmNvbnRhaW5lciB8fCBudWxsO1xuICB9LFxuICBtb3VudDogZnVuY3Rpb24gbW91bnQoY29udGFpbmVyKSB7XG4gICAgaWYgKGNvbnRhaW5lciA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICB2YXIgX3AgPSBjeS5fcHJpdmF0ZTtcbiAgICB2YXIgb3B0aW9ucyA9IF9wLm9wdGlvbnM7XG5cbiAgICBpZiAoIWh0bWxFbGVtZW50KGNvbnRhaW5lcikgJiYgaHRtbEVsZW1lbnQoY29udGFpbmVyWzBdKSkge1xuICAgICAgY29udGFpbmVyID0gY29udGFpbmVyWzBdO1xuICAgIH1cblxuICAgIGN5LnN0b3BBbmltYXRpb25Mb29wKCk7XG4gICAgY3kuZGVzdHJveVJlbmRlcmVyKCk7XG4gICAgX3AuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIF9wLnN0eWxlRW5hYmxlZCA9IHRydWU7XG4gICAgY3kuaW52YWxpZGF0ZVNpemUoKTtcbiAgICBjeS5pbml0UmVuZGVyZXIoZXh0ZW5kKHt9LCBvcHRpb25zLCBvcHRpb25zLnJlbmRlcmVyLCB7XG4gICAgICAvLyBhbGxvdyBjdXN0b20gcmVuZGVyZXIgbmFtZSB0byBiZSByZS11c2VkLCBvdGhlcndpc2UgdXNlIGNhbnZhc1xuICAgICAgbmFtZTogb3B0aW9ucy5yZW5kZXJlci5uYW1lID09PSAnbnVsbCcgPyAnY2FudmFzJyA6IG9wdGlvbnMucmVuZGVyZXIubmFtZVxuICAgIH0pKTtcbiAgICBjeS5zdGFydEFuaW1hdGlvbkxvb3AoKTtcbiAgICBjeS5zdHlsZShvcHRpb25zLnN0eWxlKTtcbiAgICBjeS5lbWl0KCdtb3VudCcpO1xuICAgIHJldHVybiBjeTtcbiAgfSxcbiAgdW5tb3VudDogZnVuY3Rpb24gdW5tb3VudCgpIHtcbiAgICB2YXIgY3kgPSB0aGlzO1xuICAgIGN5LnN0b3BBbmltYXRpb25Mb29wKCk7XG4gICAgY3kuZGVzdHJveVJlbmRlcmVyKCk7XG4gICAgY3kuaW5pdFJlbmRlcmVyKHtcbiAgICAgIG5hbWU6ICdudWxsJ1xuICAgIH0pO1xuICAgIGN5LmVtaXQoJ3VubW91bnQnKTtcbiAgICByZXR1cm4gY3k7XG4gIH0sXG4gIG9wdGlvbnM6IGZ1bmN0aW9uIG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIGNvcHkodGhpcy5fcHJpdmF0ZS5vcHRpb25zKTtcbiAgfSxcbiAganNvbjogZnVuY3Rpb24ganNvbihvYmopIHtcbiAgICB2YXIgY3kgPSB0aGlzO1xuICAgIHZhciBfcCA9IGN5Ll9wcml2YXRlO1xuICAgIHZhciBlbGVzID0gY3kubXV0YWJsZUVsZW1lbnRzKCk7XG5cbiAgICB2YXIgZ2V0RnJlc2hSZWYgPSBmdW5jdGlvbiBnZXRGcmVzaFJlZihlbGUpIHtcbiAgICAgIHJldHVybiBjeS5nZXRFbGVtZW50QnlJZChlbGUuaWQoKSk7XG4gICAgfTtcblxuICAgIGlmIChwbGFpbk9iamVjdChvYmopKSB7XG4gICAgICAvLyBzZXRcbiAgICAgIGN5LnN0YXJ0QmF0Y2goKTtcblxuICAgICAgaWYgKG9iai5lbGVtZW50cykge1xuICAgICAgICB2YXIgaWRJbkpzb24gPSB7fTtcblxuICAgICAgICB2YXIgdXBkYXRlRWxlcyA9IGZ1bmN0aW9uIHVwZGF0ZUVsZXMoanNvbnMsIGdyKSB7XG4gICAgICAgICAgdmFyIHRvQWRkID0gW107XG4gICAgICAgICAgdmFyIHRvTW9kID0gW107XG5cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIganNvbiA9IGpzb25zW2ldO1xuXG4gICAgICAgICAgICBpZiAoIWpzb24uZGF0YS5pZCkge1xuICAgICAgICAgICAgICB3YXJuKCdjeS5qc29uKCkgY2Fubm90IGhhbmRsZSBlbGVtZW50cyB3aXRob3V0IGFuIElEIGF0dHJpYnV0ZScpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGlkID0gJycgKyBqc29uLmRhdGEuaWQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG5cbiAgICAgICAgICAgIHZhciBlbGUgPSBjeS5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgICAgICBpZEluSnNvbltpZF0gPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAoZWxlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAvLyBleGlzdGluZyBlbGVtZW50IHNob3VsZCBiZSB1cGRhdGVkXG4gICAgICAgICAgICAgIHRvTW9kLnB1c2goe1xuICAgICAgICAgICAgICAgIGVsZTogZWxlLFxuICAgICAgICAgICAgICAgIGpzb246IGpzb25cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugc2hvdWxkIGJlIGFkZGVkXG4gICAgICAgICAgICAgIGlmIChncikge1xuICAgICAgICAgICAgICAgIGpzb24uZ3JvdXAgPSBncjtcbiAgICAgICAgICAgICAgICB0b0FkZC5wdXNoKGpzb24pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvQWRkLnB1c2goanNvbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjeS5hZGQodG9BZGQpO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHRvTW9kLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIF90b01vZCRfaSA9IHRvTW9kW19pXSxcbiAgICAgICAgICAgICAgICBfZWxlID0gX3RvTW9kJF9pLmVsZSxcbiAgICAgICAgICAgICAgICBfanNvbiA9IF90b01vZCRfaS5qc29uO1xuXG4gICAgICAgICAgICBfZWxlLmpzb24oX2pzb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYXJyYXkob2JqLmVsZW1lbnRzKSkge1xuICAgICAgICAgIC8vIGVsZW1lbnRzOiBbXVxuICAgICAgICAgIHVwZGF0ZUVsZXMob2JqLmVsZW1lbnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBlbGVtZW50czogeyBub2RlczogW10sIGVkZ2VzOiBbXSB9XG4gICAgICAgICAgdmFyIGdycyA9IFsnbm9kZXMnLCAnZWRnZXMnXTtcblxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZ3IgPSBncnNbaV07XG4gICAgICAgICAgICB2YXIgZWxlbWVudHMgPSBvYmouZWxlbWVudHNbZ3JdO1xuXG4gICAgICAgICAgICBpZiAoYXJyYXkoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZUVsZXMoZWxlbWVudHMsIGdyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGFyZW50c1RvUmVtb3ZlID0gY3kuY29sbGVjdGlvbigpO1xuICAgICAgICBlbGVzLmZpbHRlcihmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgcmV0dXJuICFpZEluSnNvbltlbGUuaWQoKV07XG4gICAgICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgIGlmIChlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgICAgICAgcGFyZW50c1RvUmVtb3ZlLm1lcmdlKGVsZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZS5yZW1vdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pOyAvLyBzbyB0aGF0IGNoaWxkcmVuIGFyZSBub3QgcmVtb3ZlZCB3L3BhcmVudFxuXG4gICAgICAgIHBhcmVudHNUb1JlbW92ZS5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLmNoaWxkcmVuKCkubW92ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IC8vIGludGVybWVkaWF0ZSBwYXJlbnRzIG1heSBiZSBtb3ZlZCBieSBwcmlvciBsaW5lLCBzbyBtYWtlIHN1cmUgd2UgcmVtb3ZlIGJ5IGZyZXNoIHJlZnNcblxuICAgICAgICBwYXJlbnRzVG9SZW1vdmUuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgcmV0dXJuIGdldEZyZXNoUmVmKGVsZSkucmVtb3ZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAob2JqLnN0eWxlKSB7XG4gICAgICAgIGN5LnN0eWxlKG9iai5zdHlsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvYmouem9vbSAhPSBudWxsICYmIG9iai56b29tICE9PSBfcC56b29tKSB7XG4gICAgICAgIGN5Lnpvb20ob2JqLnpvb20pO1xuICAgICAgfVxuXG4gICAgICBpZiAob2JqLnBhbikge1xuICAgICAgICBpZiAob2JqLnBhbi54ICE9PSBfcC5wYW4ueCB8fCBvYmoucGFuLnkgIT09IF9wLnBhbi55KSB7XG4gICAgICAgICAgY3kucGFuKG9iai5wYW4pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvYmouZGF0YSkge1xuICAgICAgICBjeS5kYXRhKG9iai5kYXRhKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpZWxkcyA9IFsnbWluWm9vbScsICdtYXhab29tJywgJ3pvb21pbmdFbmFibGVkJywgJ3VzZXJab29taW5nRW5hYmxlZCcsICdwYW5uaW5nRW5hYmxlZCcsICd1c2VyUGFubmluZ0VuYWJsZWQnLCAnYm94U2VsZWN0aW9uRW5hYmxlZCcsICdhdXRvbG9jaycsICdhdXRvdW5ncmFiaWZ5JywgJ2F1dG91bnNlbGVjdGlmeScsICdtdWx0aUNsaWNrRGVib3VuY2VUaW1lJ107XG5cbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGZpZWxkcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgIHZhciBmID0gZmllbGRzW19pMl07XG5cbiAgICAgICAgaWYgKG9ialtmXSAhPSBudWxsKSB7XG4gICAgICAgICAgY3lbZl0ob2JqW2ZdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjeS5lbmRCYXRjaCgpO1xuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGdldFxuICAgICAgdmFyIGZsYXQgPSAhIW9iajtcbiAgICAgIHZhciBqc29uID0ge307XG5cbiAgICAgIGlmIChmbGF0KSB7XG4gICAgICAgIGpzb24uZWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzKCkubWFwKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLmpzb24oKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqc29uLmVsZW1lbnRzID0ge307XG4gICAgICAgIGVsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgdmFyIGdyb3VwID0gZWxlLmdyb3VwKCk7XG5cbiAgICAgICAgICBpZiAoIWpzb24uZWxlbWVudHNbZ3JvdXBdKSB7XG4gICAgICAgICAgICBqc29uLmVsZW1lbnRzW2dyb3VwXSA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGpzb24uZWxlbWVudHNbZ3JvdXBdLnB1c2goZWxlLmpzb24oKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fcHJpdmF0ZS5zdHlsZUVuYWJsZWQpIHtcbiAgICAgICAganNvbi5zdHlsZSA9IGN5LnN0eWxlKCkuanNvbigpO1xuICAgICAgfVxuXG4gICAgICBqc29uLmRhdGEgPSBjb3B5KGN5LmRhdGEoKSk7XG4gICAgICB2YXIgb3B0aW9ucyA9IF9wLm9wdGlvbnM7XG4gICAgICBqc29uLnpvb21pbmdFbmFibGVkID0gX3Auem9vbWluZ0VuYWJsZWQ7XG4gICAgICBqc29uLnVzZXJab29taW5nRW5hYmxlZCA9IF9wLnVzZXJab29taW5nRW5hYmxlZDtcbiAgICAgIGpzb24uem9vbSA9IF9wLnpvb207XG4gICAgICBqc29uLm1pblpvb20gPSBfcC5taW5ab29tO1xuICAgICAganNvbi5tYXhab29tID0gX3AubWF4Wm9vbTtcbiAgICAgIGpzb24ucGFubmluZ0VuYWJsZWQgPSBfcC5wYW5uaW5nRW5hYmxlZDtcbiAgICAgIGpzb24udXNlclBhbm5pbmdFbmFibGVkID0gX3AudXNlclBhbm5pbmdFbmFibGVkO1xuICAgICAganNvbi5wYW4gPSBjb3B5KF9wLnBhbik7XG4gICAgICBqc29uLmJveFNlbGVjdGlvbkVuYWJsZWQgPSBfcC5ib3hTZWxlY3Rpb25FbmFibGVkO1xuICAgICAganNvbi5yZW5kZXJlciA9IGNvcHkob3B0aW9ucy5yZW5kZXJlcik7XG4gICAgICBqc29uLmhpZGVFZGdlc09uVmlld3BvcnQgPSBvcHRpb25zLmhpZGVFZGdlc09uVmlld3BvcnQ7XG4gICAgICBqc29uLnRleHR1cmVPblZpZXdwb3J0ID0gb3B0aW9ucy50ZXh0dXJlT25WaWV3cG9ydDtcbiAgICAgIGpzb24ud2hlZWxTZW5zaXRpdml0eSA9IG9wdGlvbnMud2hlZWxTZW5zaXRpdml0eTtcbiAgICAgIGpzb24ubW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1cjtcbiAgICAgIGpzb24ubXVsdGlDbGlja0RlYm91bmNlVGltZSA9IG9wdGlvbnMubXVsdGlDbGlja0RlYm91bmNlVGltZTtcbiAgICAgIHJldHVybiBqc29uO1xuICAgIH1cbiAgfVxufSk7XG5jb3JlZm4kOS4kaWQgPSBjb3JlZm4kOS5nZXRFbGVtZW50QnlJZDtcbltjb3JlZm4sIGNvcmVmbiQxLCBlbGVzZm4kdiwgY29yZWZuJDIsIGNvcmVmbiQzLCBjb3JlZm4kNCwgY29yZWZuJDUsIGNvcmVmbiQ2LCBjb3JlZm4kNywgY29yZWZuJDgsIGZuJDZdLmZvckVhY2goZnVuY3Rpb24gKHByb3BzKSB7XG4gIGV4dGVuZChjb3JlZm4kOSwgcHJvcHMpO1xufSk7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5cbnZhciBkZWZhdWx0cyQ5ID0ge1xuICBmaXQ6IHRydWUsXG4gIC8vIHdoZXRoZXIgdG8gZml0IHRoZSB2aWV3cG9ydCB0byB0aGUgZ3JhcGhcbiAgZGlyZWN0ZWQ6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRoZSB0cmVlIGlzIGRpcmVjdGVkIGRvd253YXJkcyAob3IgZWRnZXMgY2FuIHBvaW50IGluIGFueSBkaXJlY3Rpb24gaWYgZmFsc2UpXG4gIHBhZGRpbmc6IDMwLFxuICAvLyBwYWRkaW5nIG9uIGZpdFxuICBjaXJjbGU6IGZhbHNlLFxuICAvLyBwdXQgZGVwdGhzIGluIGNvbmNlbnRyaWMgY2lyY2xlcyBpZiB0cnVlLCBwdXQgZGVwdGhzIHRvcCBkb3duIGlmIGZhbHNlXG4gIGdyaWQ6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIGNyZWF0ZSBhbiBldmVuIGdyaWQgaW50byB3aGljaCB0aGUgREFHIGlzIHBsYWNlZCAoY2lyY2xlOmZhbHNlIG9ubHkpXG4gIHNwYWNpbmdGYWN0b3I6IDEuNzUsXG4gIC8vIHBvc2l0aXZlIHNwYWNpbmcgZmFjdG9yLCBsYXJnZXIgPT4gbW9yZSBzcGFjZSBiZXR3ZWVuIG5vZGVzIChOLkIuIG4vYSBpZiBjYXVzZXMgb3ZlcmxhcClcbiAgYm91bmRpbmdCb3g6IHVuZGVmaW5lZCxcbiAgLy8gY29uc3RyYWluIGxheW91dCBib3VuZHM7IHsgeDEsIHkxLCB4MiwgeTIgfSBvciB7IHgxLCB5MSwgdywgaCB9XG4gIGF2b2lkT3ZlcmxhcDogdHJ1ZSxcbiAgLy8gcHJldmVudHMgbm9kZSBvdmVybGFwLCBtYXkgb3ZlcmZsb3cgYm91bmRpbmdCb3ggaWYgbm90IGVub3VnaCBzcGFjZVxuICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHM6IGZhbHNlLFxuICAvLyBFeGNsdWRlcyB0aGUgbGFiZWwgd2hlbiBjYWxjdWxhdGluZyBub2RlIGJvdW5kaW5nIGJveGVzIGZvciB0aGUgbGF5b3V0IGFsZ29yaXRobVxuICByb290czogdW5kZWZpbmVkLFxuICAvLyB0aGUgcm9vdHMgb2YgdGhlIHRyZWVzXG4gIG1heGltYWw6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIHNoaWZ0IG5vZGVzIGRvd24gdGhlaXIgbmF0dXJhbCBCRlMgZGVwdGhzIGluIG9yZGVyIHRvIGF2b2lkIHVwd2FyZHMgZWRnZXMgKERBR1Mgb25seSlcbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gIC8vIGVhc2luZyBvZiBhbmltYXRpb24gaWYgZW5hYmxlZCxcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIC8vIGEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG5vZGUgc2hvdWxkIGJlIGFuaW1hdGVkLiAgQWxsIG5vZGVzIGFuaW1hdGVkIGJ5IGRlZmF1bHQgb24gYW5pbWF0ZSBlbmFibGVkLiAgTm9uLWFuaW1hdGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGxheW91dCBzdGFydHNcbiAgcmVhZHk6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogdW5kZWZpbmVkLFxuICAvLyBjYWxsYmFjayBvbiBsYXlvdXRzdG9wXG4gIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKG5vZGUsIHBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uO1xuICB9IC8vIHRyYW5zZm9ybSBhIGdpdmVuIG5vZGUgcG9zaXRpb24uIFVzZWZ1bCBmb3IgY2hhbmdpbmcgZmxvdyBkaXJlY3Rpb24gaW4gZGlzY3JldGUgbGF5b3V0c1xuXG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG52YXIgZ2V0SW5mbyA9IGZ1bmN0aW9uIGdldEluZm8oZWxlKSB7XG4gIHJldHVybiBlbGUuc2NyYXRjaCgnYnJlYWR0aGZpcnN0Jyk7XG59O1xuXG52YXIgc2V0SW5mbyA9IGZ1bmN0aW9uIHNldEluZm8oZWxlLCBvYmopIHtcbiAgcmV0dXJuIGVsZS5zY3JhdGNoKCdicmVhZHRoZmlyc3QnLCBvYmopO1xufTtcblxuZnVuY3Rpb24gQnJlYWR0aEZpcnN0TGF5b3V0KG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cyQ5LCBvcHRpb25zKTtcbn1cblxuQnJlYWR0aEZpcnN0TGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBwYXJhbXMgPSB0aGlzLm9wdGlvbnM7XG4gIHZhciBvcHRpb25zID0gcGFyYW1zO1xuICB2YXIgY3kgPSBwYXJhbXMuY3k7XG4gIHZhciBlbGVzID0gb3B0aW9ucy5lbGVzO1xuICB2YXIgbm9kZXMgPSBlbGVzLm5vZGVzKCkuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgcmV0dXJuICFuLmlzUGFyZW50KCk7XG4gIH0pO1xuICB2YXIgZ3JhcGggPSBlbGVzO1xuICB2YXIgZGlyZWN0ZWQgPSBvcHRpb25zLmRpcmVjdGVkO1xuICB2YXIgbWF4aW1hbCA9IG9wdGlvbnMubWF4aW1hbCB8fCBvcHRpb25zLm1heGltYWxBZGp1c3RtZW50cyA+IDA7IC8vIG1heGltYWxBZGp1c3RtZW50cyBmb3IgY29tcGF0LiB3LyBvbGQgY29kZVxuXG4gIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICB4MTogMCxcbiAgICB5MTogMCxcbiAgICB3OiBjeS53aWR0aCgpLFxuICAgIGg6IGN5LmhlaWdodCgpXG4gIH0pO1xuICB2YXIgcm9vdHM7XG5cbiAgaWYgKGVsZW1lbnRPckNvbGxlY3Rpb24ob3B0aW9ucy5yb290cykpIHtcbiAgICByb290cyA9IG9wdGlvbnMucm9vdHM7XG4gIH0gZWxzZSBpZiAoYXJyYXkob3B0aW9ucy5yb290cykpIHtcbiAgICB2YXIgcm9vdHNBcnJheSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLnJvb3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWQgPSBvcHRpb25zLnJvb3RzW2ldO1xuICAgICAgdmFyIGVsZSA9IGN5LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgIHJvb3RzQXJyYXkucHVzaChlbGUpO1xuICAgIH1cblxuICAgIHJvb3RzID0gY3kuY29sbGVjdGlvbihyb290c0FycmF5KTtcbiAgfSBlbHNlIGlmIChzdHJpbmcob3B0aW9ucy5yb290cykpIHtcbiAgICByb290cyA9IGN5LiQob3B0aW9ucy5yb290cyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICByb290cyA9IG5vZGVzLnJvb3RzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjb21wb25lbnRzID0gZWxlcy5jb21wb25lbnRzKCk7XG4gICAgICByb290cyA9IGN5LmNvbGxlY3Rpb24oKTtcblxuICAgICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoX2kpIHtcbiAgICAgICAgdmFyIGNvbXAgPSBjb21wb25lbnRzW19pXTtcbiAgICAgICAgdmFyIG1heERlZ3JlZSA9IGNvbXAubWF4RGVncmVlKGZhbHNlKTtcbiAgICAgICAgdmFyIGNvbXBSb290cyA9IGNvbXAuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLmRlZ3JlZShmYWxzZSkgPT09IG1heERlZ3JlZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJvb3RzID0gcm9vdHMuYWRkKGNvbXBSb290cyk7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgY29tcG9uZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgX2xvb3AoX2kpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBkZXB0aHMgPSBbXTtcbiAgdmFyIGZvdW5kQnlCZnMgPSB7fTtcblxuICB2YXIgYWRkVG9EZXB0aCA9IGZ1bmN0aW9uIGFkZFRvRGVwdGgoZWxlLCBkKSB7XG4gICAgaWYgKGRlcHRoc1tkXSA9PSBudWxsKSB7XG4gICAgICBkZXB0aHNbZF0gPSBbXTtcbiAgICB9XG5cbiAgICB2YXIgaSA9IGRlcHRoc1tkXS5sZW5ndGg7XG4gICAgZGVwdGhzW2RdLnB1c2goZWxlKTtcbiAgICBzZXRJbmZvKGVsZSwge1xuICAgICAgaW5kZXg6IGksXG4gICAgICBkZXB0aDogZFxuICAgIH0pO1xuICB9O1xuXG4gIHZhciBjaGFuZ2VEZXB0aCA9IGZ1bmN0aW9uIGNoYW5nZURlcHRoKGVsZSwgbmV3RGVwdGgpIHtcbiAgICB2YXIgX2dldEluZm8gPSBnZXRJbmZvKGVsZSksXG4gICAgICAgIGRlcHRoID0gX2dldEluZm8uZGVwdGgsXG4gICAgICAgIGluZGV4ID0gX2dldEluZm8uaW5kZXg7XG5cbiAgICBkZXB0aHNbZGVwdGhdW2luZGV4XSA9IG51bGw7XG4gICAgYWRkVG9EZXB0aChlbGUsIG5ld0RlcHRoKTtcbiAgfTsgLy8gZmluZCB0aGUgZGVwdGhzIG9mIHRoZSBub2Rlc1xuXG5cbiAgZ3JhcGguYmZzKHtcbiAgICByb290czogcm9vdHMsXG4gICAgZGlyZWN0ZWQ6IG9wdGlvbnMuZGlyZWN0ZWQsXG4gICAgdmlzaXQ6IGZ1bmN0aW9uIHZpc2l0KG5vZGUsIGVkZ2UsIHBOb2RlLCBpLCBkZXB0aCkge1xuICAgICAgdmFyIGVsZSA9IG5vZGVbMF07XG4gICAgICB2YXIgaWQgPSBlbGUuaWQoKTtcbiAgICAgIGFkZFRvRGVwdGgoZWxlLCBkZXB0aCk7XG4gICAgICBmb3VuZEJ5QmZzW2lkXSA9IHRydWU7XG4gICAgfVxuICB9KTsgLy8gY2hlY2sgZm9yIG5vZGVzIG5vdCBmb3VuZCBieSBiZnNcblxuICB2YXIgb3JwaGFuTm9kZXMgPSBbXTtcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2Rlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9lbGUgPSBub2Rlc1tfaTJdO1xuXG4gICAgaWYgKGZvdW5kQnlCZnNbX2VsZS5pZCgpXSkge1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ycGhhbk5vZGVzLnB1c2goX2VsZSk7XG4gICAgfVxuICB9IC8vIGFzc2lnbiB0aGUgbm9kZXMgYSBkZXB0aCBhbmQgaW5kZXhcblxuXG4gIHZhciBhc3NpZ25EZXB0aHNBdCA9IGZ1bmN0aW9uIGFzc2lnbkRlcHRoc0F0KGkpIHtcbiAgICB2YXIgZWxlcyA9IGRlcHRoc1tpXTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlcy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIF9lbGUyID0gZWxlc1tqXTtcblxuICAgICAgaWYgKF9lbGUyID09IG51bGwpIHtcbiAgICAgICAgZWxlcy5zcGxpY2UoaiwgMSk7XG4gICAgICAgIGotLTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHNldEluZm8oX2VsZTIsIHtcbiAgICAgICAgZGVwdGg6IGksXG4gICAgICAgIGluZGV4OiBqXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGFzc2lnbkRlcHRocyA9IGZ1bmN0aW9uIGFzc2lnbkRlcHRocygpIHtcbiAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBkZXB0aHMubGVuZ3RoOyBfaTMrKykge1xuICAgICAgYXNzaWduRGVwdGhzQXQoX2kzKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGFkanVzdE1heGltYWxseSA9IGZ1bmN0aW9uIGFkanVzdE1heGltYWxseShlbGUsIHNoaWZ0ZWQpIHtcbiAgICB2YXIgZUluZm8gPSBnZXRJbmZvKGVsZSk7XG4gICAgdmFyIGluY29tZXJzID0gZWxlLmluY29tZXJzKCkuZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgcmV0dXJuIGVsLmlzTm9kZSgpICYmIGVsZXMuaGFzKGVsKTtcbiAgICB9KTtcbiAgICB2YXIgbWF4RGVwdGggPSAtMTtcbiAgICB2YXIgaWQgPSBlbGUuaWQoKTtcblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaW5jb21lcnMubGVuZ3RoOyBrKyspIHtcbiAgICAgIHZhciBpbmNtciA9IGluY29tZXJzW2tdO1xuICAgICAgdmFyIGlJbmZvID0gZ2V0SW5mbyhpbmNtcik7XG4gICAgICBtYXhEZXB0aCA9IE1hdGgubWF4KG1heERlcHRoLCBpSW5mby5kZXB0aCk7XG4gICAgfVxuXG4gICAgaWYgKGVJbmZvLmRlcHRoIDw9IG1heERlcHRoKSB7XG4gICAgICBpZiAoc2hpZnRlZFtpZF0pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNoYW5nZURlcHRoKGVsZSwgbWF4RGVwdGggKyAxKTtcbiAgICAgIHNoaWZ0ZWRbaWRdID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTsgLy8gZm9yIHRoZSBkaXJlY3RlZCBjYXNlLCB0cnkgdG8gbWFrZSB0aGUgZWRnZXMgYWxsIGdvIGRvd24gKGkuZS4gZGVwdGggaSA9PiBkZXB0aCBpICsgMSlcblxuXG4gIGlmIChkaXJlY3RlZCAmJiBtYXhpbWFsKSB7XG4gICAgdmFyIFEgPSBbXTtcbiAgICB2YXIgc2hpZnRlZCA9IHt9O1xuXG4gICAgdmFyIGVucXVldWUgPSBmdW5jdGlvbiBlbnF1ZXVlKG4pIHtcbiAgICAgIHJldHVybiBRLnB1c2gobik7XG4gICAgfTtcblxuICAgIHZhciBkZXF1ZXVlID0gZnVuY3Rpb24gZGVxdWV1ZSgpIHtcbiAgICAgIHJldHVybiBRLnNoaWZ0KCk7XG4gICAgfTtcblxuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiBRLnB1c2gobik7XG4gICAgfSk7XG5cbiAgICB3aGlsZSAoUS5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgX2VsZTMgPSBkZXF1ZXVlKCk7XG5cbiAgICAgIHZhciBkaWRTaGlmdCA9IGFkanVzdE1heGltYWxseShfZWxlMywgc2hpZnRlZCk7XG5cbiAgICAgIGlmIChkaWRTaGlmdCkge1xuICAgICAgICBfZWxlMy5vdXRnb2VycygpLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICByZXR1cm4gZWwuaXNOb2RlKCkgJiYgZWxlcy5oYXMoZWwpO1xuICAgICAgICB9KS5mb3JFYWNoKGVucXVldWUpO1xuICAgICAgfSBlbHNlIGlmIChkaWRTaGlmdCA9PT0gbnVsbCkge1xuICAgICAgICB3YXJuKCdEZXRlY3RlZCBkb3VibGUgbWF4aW1hbCBzaGlmdCBmb3Igbm9kZSBgJyArIF9lbGUzLmlkKCkgKyAnYC4gIEJhaWxpbmcgbWF4aW1hbCBhZGp1c3RtZW50IGR1ZSB0byBjeWNsZS4gIFVzZSBgb3B0aW9ucy5tYXhpbWFsOiB0cnVlYCBvbmx5IG9uIERBR3MuJyk7XG4gICAgICAgIGJyZWFrOyAvLyBleGl0IG9uIGZhaWx1cmVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3NpZ25EZXB0aHMoKTsgLy8gY2xlYXIgaG9sZXNcbiAgLy8gZmluZCBtaW4gZGlzdGFuY2Ugd2UgbmVlZCB0byBsZWF2ZSBiZXR3ZWVuIG5vZGVzXG5cbiAgdmFyIG1pbkRpc3RhbmNlID0gMDtcblxuICBpZiAob3B0aW9ucy5hdm9pZE92ZXJsYXApIHtcbiAgICBmb3IgKHZhciBfaTQgPSAwOyBfaTQgPCBub2Rlcy5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICB2YXIgbiA9IG5vZGVzW19pNF07XG4gICAgICB2YXIgbmJiID0gbi5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuICAgICAgdmFyIHcgPSBuYmIudztcbiAgICAgIHZhciBoID0gbmJiLmg7XG4gICAgICBtaW5EaXN0YW5jZSA9IE1hdGgubWF4KG1pbkRpc3RhbmNlLCB3LCBoKTtcbiAgICB9XG4gIH0gLy8gZ2V0IHRoZSB3ZWlnaHRlZCBwZXJjZW50IGZvciBhbiBlbGVtZW50IGJhc2VkIG9uIGl0cyBjb25uZWN0aXZpdHkgdG8gb3RoZXIgbGV2ZWxzXG5cblxuICB2YXIgY2FjaGVkV2VpZ2h0ZWRQZXJjZW50ID0ge307XG5cbiAgdmFyIGdldFdlaWdodGVkUGVyY2VudCA9IGZ1bmN0aW9uIGdldFdlaWdodGVkUGVyY2VudChlbGUpIHtcbiAgICBpZiAoY2FjaGVkV2VpZ2h0ZWRQZXJjZW50W2VsZS5pZCgpXSkge1xuICAgICAgcmV0dXJuIGNhY2hlZFdlaWdodGVkUGVyY2VudFtlbGUuaWQoKV07XG4gICAgfVxuXG4gICAgdmFyIGVsZURlcHRoID0gZ2V0SW5mbyhlbGUpLmRlcHRoO1xuICAgIHZhciBuZWlnaGJvcnMgPSBlbGUubmVpZ2hib3Job29kKCk7XG4gICAgdmFyIHBlcmNlbnQgPSAwO1xuICAgIHZhciBzYW1wbGVzID0gMDtcblxuICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IG5laWdoYm9ycy5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBuZWlnaGJvcnNbX2k1XTtcblxuICAgICAgaWYgKG5laWdoYm9yLmlzRWRnZSgpIHx8IG5laWdoYm9yLmlzUGFyZW50KCkgfHwgIW5vZGVzLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBiZiA9IGdldEluZm8obmVpZ2hib3IpO1xuXG4gICAgICBpZiAoYmYgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGluZGV4ID0gYmYuaW5kZXg7XG4gICAgICB2YXIgZGVwdGggPSBiZi5kZXB0aDsgLy8gdW5hc3NpZ25lZCBuZWlnaGJvdXJzIHNob3VsZG4ndCBhZmZlY3QgdGhlIG9yZGVyaW5nXG5cbiAgICAgIGlmIChpbmRleCA9PSBudWxsIHx8IGRlcHRoID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBuRGVwdGggPSBkZXB0aHNbZGVwdGhdLmxlbmd0aDtcblxuICAgICAgaWYgKGRlcHRoIDwgZWxlRGVwdGgpIHtcbiAgICAgICAgLy8gb25seSBnZXQgaW5mbHVlbmNlZCBieSBlbGVtZW50cyBhYm92ZVxuICAgICAgICBwZXJjZW50ICs9IGluZGV4IC8gbkRlcHRoO1xuICAgICAgICBzYW1wbGVzKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2FtcGxlcyA9IE1hdGgubWF4KDEsIHNhbXBsZXMpO1xuICAgIHBlcmNlbnQgPSBwZXJjZW50IC8gc2FtcGxlcztcblxuICAgIGlmIChzYW1wbGVzID09PSAwKSB7XG4gICAgICAvLyBwdXQgbG9uZSBub2RlcyBhdCB0aGUgc3RhcnRcbiAgICAgIHBlcmNlbnQgPSAwO1xuICAgIH1cblxuICAgIGNhY2hlZFdlaWdodGVkUGVyY2VudFtlbGUuaWQoKV0gPSBwZXJjZW50O1xuICAgIHJldHVybiBwZXJjZW50O1xuICB9OyAvLyByZWFycmFuZ2UgdGhlIGluZGljZXMgaW4gZWFjaCBkZXB0aCBsZXZlbCBiYXNlZCBvbiBjb25uZWN0aXZpdHlcblxuXG4gIHZhciBzb3J0Rm4gPSBmdW5jdGlvbiBzb3J0Rm4oYSwgYikge1xuICAgIHZhciBhcGN0ID0gZ2V0V2VpZ2h0ZWRQZXJjZW50KGEpO1xuICAgIHZhciBicGN0ID0gZ2V0V2VpZ2h0ZWRQZXJjZW50KGIpO1xuICAgIHZhciBkaWZmID0gYXBjdCAtIGJwY3Q7XG5cbiAgICBpZiAoZGlmZiA9PT0gMCkge1xuICAgICAgcmV0dXJuIGFzY2VuZGluZyhhLmlkKCksIGIuaWQoKSk7IC8vIG1ha2Ugc3VyZSBzb3J0IGRvZXNuJ3QgaGF2ZSBkb24ndC1jYXJlIGNvbXBhcmlzb25zXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkaWZmO1xuICAgIH1cbiAgfTsgLy8gc29ydCBlYWNoIGxldmVsIHRvIG1ha2UgY29ubmVjdGVkIG5vZGVzIGNsb3NlclxuXG5cbiAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgZGVwdGhzLmxlbmd0aDsgX2k2KyspIHtcbiAgICBkZXB0aHNbX2k2XS5zb3J0KHNvcnRGbik7XG5cbiAgICBhc3NpZ25EZXB0aHNBdChfaTYpO1xuICB9IC8vIGFzc2lnbiBvcnBoYW4gbm9kZXMgdG8gYSBuZXcgdG9wLWxldmVsIGRlcHRoXG5cblxuICB2YXIgb3JwaGFuRGVwdGggPSBbXTtcblxuICBmb3IgKHZhciBfaTcgPSAwOyBfaTcgPCBvcnBoYW5Ob2Rlcy5sZW5ndGg7IF9pNysrKSB7XG4gICAgb3JwaGFuRGVwdGgucHVzaChvcnBoYW5Ob2Rlc1tfaTddKTtcbiAgfVxuXG4gIGRlcHRocy51bnNoaWZ0KG9ycGhhbkRlcHRoKTtcbiAgYXNzaWduRGVwdGhzKCk7XG4gIHZhciBiaWdnZXN0RGVwdGhTaXplID0gMDtcblxuICBmb3IgKHZhciBfaTggPSAwOyBfaTggPCBkZXB0aHMubGVuZ3RoOyBfaTgrKykge1xuICAgIGJpZ2dlc3REZXB0aFNpemUgPSBNYXRoLm1heChkZXB0aHNbX2k4XS5sZW5ndGgsIGJpZ2dlc3REZXB0aFNpemUpO1xuICB9XG5cbiAgdmFyIGNlbnRlciA9IHtcbiAgICB4OiBiYi54MSArIGJiLncgLyAyLFxuICAgIHk6IGJiLngxICsgYmIuaCAvIDJcbiAgfTtcbiAgdmFyIG1heERlcHRoU2l6ZSA9IGRlcHRocy5yZWR1Y2UoZnVuY3Rpb24gKG1heCwgZWxlcykge1xuICAgIHJldHVybiBNYXRoLm1heChtYXgsIGVsZXMubGVuZ3RoKTtcbiAgfSwgMCk7XG5cbiAgdmFyIGdldFBvc2l0aW9uID0gZnVuY3Rpb24gZ2V0UG9zaXRpb24oZWxlKSB7XG4gICAgdmFyIF9nZXRJbmZvMiA9IGdldEluZm8oZWxlKSxcbiAgICAgICAgZGVwdGggPSBfZ2V0SW5mbzIuZGVwdGgsXG4gICAgICAgIGluZGV4ID0gX2dldEluZm8yLmluZGV4O1xuXG4gICAgdmFyIGRlcHRoU2l6ZSA9IGRlcHRoc1tkZXB0aF0ubGVuZ3RoO1xuICAgIHZhciBkaXN0YW5jZVggPSBNYXRoLm1heChiYi53IC8gKChvcHRpb25zLmdyaWQgPyBtYXhEZXB0aFNpemUgOiBkZXB0aFNpemUpICsgMSksIG1pbkRpc3RhbmNlKTtcbiAgICB2YXIgZGlzdGFuY2VZID0gTWF0aC5tYXgoYmIuaCAvIChkZXB0aHMubGVuZ3RoICsgMSksIG1pbkRpc3RhbmNlKTtcbiAgICB2YXIgcmFkaXVzU3RlcFNpemUgPSBNYXRoLm1pbihiYi53IC8gMiAvIGRlcHRocy5sZW5ndGgsIGJiLmggLyAyIC8gZGVwdGhzLmxlbmd0aCk7XG4gICAgcmFkaXVzU3RlcFNpemUgPSBNYXRoLm1heChyYWRpdXNTdGVwU2l6ZSwgbWluRGlzdGFuY2UpO1xuXG4gICAgaWYgKCFvcHRpb25zLmNpcmNsZSkge1xuICAgICAgdmFyIGVwb3MgPSB7XG4gICAgICAgIHg6IGNlbnRlci54ICsgKGluZGV4ICsgMSAtIChkZXB0aFNpemUgKyAxKSAvIDIpICogZGlzdGFuY2VYLFxuICAgICAgICB5OiAoZGVwdGggKyAxKSAqIGRpc3RhbmNlWVxuICAgICAgfTtcbiAgICAgIHJldHVybiBlcG9zO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmFkaXVzID0gcmFkaXVzU3RlcFNpemUgKiBkZXB0aCArIHJhZGl1c1N0ZXBTaXplIC0gKGRlcHRocy5sZW5ndGggPiAwICYmIGRlcHRoc1swXS5sZW5ndGggPD0gMyA/IHJhZGl1c1N0ZXBTaXplIC8gMiA6IDApO1xuICAgICAgdmFyIHRoZXRhID0gMiAqIE1hdGguUEkgLyBkZXB0aHNbZGVwdGhdLmxlbmd0aCAqIGluZGV4O1xuXG4gICAgICBpZiAoZGVwdGggPT09IDAgJiYgZGVwdGhzWzBdLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByYWRpdXMgPSAxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBjZW50ZXIueCArIHJhZGl1cyAqIE1hdGguY29zKHRoZXRhKSxcbiAgICAgICAgeTogY2VudGVyLnkgKyByYWRpdXMgKiBNYXRoLnNpbih0aGV0YSlcbiAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIGVsZXMubm9kZXMoKS5sYXlvdXRQb3NpdGlvbnModGhpcywgb3B0aW9ucywgZ2V0UG9zaXRpb24pO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBkZWZhdWx0cyRhID0ge1xuICBmaXQ6IHRydWUsXG4gIC8vIHdoZXRoZXIgdG8gZml0IHRoZSB2aWV3cG9ydCB0byB0aGUgZ3JhcGhcbiAgcGFkZGluZzogMzAsXG4gIC8vIHRoZSBwYWRkaW5nIG9uIGZpdFxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLFxuICAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cbiAgYXZvaWRPdmVybGFwOiB0cnVlLFxuICAvLyBwcmV2ZW50cyBub2RlIG92ZXJsYXAsIG1heSBvdmVyZmxvdyBib3VuZGluZ0JveCBhbmQgcmFkaXVzIGlmIG5vdCBlbm91Z2ggc3BhY2VcbiAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiBmYWxzZSxcbiAgLy8gRXhjbHVkZXMgdGhlIGxhYmVsIHdoZW4gY2FsY3VsYXRpbmcgbm9kZSBib3VuZGluZyBib3hlcyBmb3IgdGhlIGxheW91dCBhbGdvcml0aG1cbiAgc3BhY2luZ0ZhY3RvcjogdW5kZWZpbmVkLFxuICAvLyBBcHBsaWVzIGEgbXVsdGlwbGljYXRpdmUgZmFjdG9yICg+MCkgdG8gZXhwYW5kIG9yIGNvbXByZXNzIHRoZSBvdmVyYWxsIGFyZWEgdGhhdCB0aGUgbm9kZXMgdGFrZSB1cFxuICByYWRpdXM6IHVuZGVmaW5lZCxcbiAgLy8gdGhlIHJhZGl1cyBvZiB0aGUgY2lyY2xlXG4gIHN0YXJ0QW5nbGU6IDMgLyAyICogTWF0aC5QSSxcbiAgLy8gd2hlcmUgbm9kZXMgc3RhcnQgaW4gcmFkaWFuc1xuICBzd2VlcDogdW5kZWZpbmVkLFxuICAvLyBob3cgbWFueSByYWRpYW5zIHNob3VsZCBiZSBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgbGFzdCBub2RlIChkZWZhdWx0cyB0byBmdWxsIGNpcmNsZSlcbiAgY2xvY2t3aXNlOiB0cnVlLFxuICAvLyB3aGV0aGVyIHRoZSBsYXlvdXQgc2hvdWxkIGdvIGNsb2Nrd2lzZSAodHJ1ZSkgb3IgY291bnRlcmNsb2Nrd2lzZS9hbnRpY2xvY2t3aXNlIChmYWxzZSlcbiAgc29ydDogdW5kZWZpbmVkLFxuICAvLyBhIHNvcnRpbmcgZnVuY3Rpb24gdG8gb3JkZXIgdGhlIG5vZGVzOyBlLmcuIGZ1bmN0aW9uKGEsIGIpeyByZXR1cm4gYS5kYXRhKCd3ZWlnaHQnKSAtIGIuZGF0YSgnd2VpZ2h0JykgfVxuICBhbmltYXRlOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZC4gIEFsbCBub2RlcyBhbmltYXRlZCBieSBkZWZhdWx0IG9uIGFuaW1hdGUgZW5hYmxlZC4gIE5vbi1hbmltYXRlZCBub2RlcyBhcmUgcG9zaXRpb25lZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBsYXlvdXQgc3RhcnRzXG4gIHJlYWR5OiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHMgXG5cbn07XG5cbmZ1bmN0aW9uIENpcmNsZUxheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkYSwgb3B0aW9ucyk7XG59XG5cbkNpcmNsZUxheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcGFyYW1zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgb3B0aW9ucyA9IHBhcmFtcztcbiAgdmFyIGN5ID0gcGFyYW1zLmN5O1xuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIGNsb2Nrd2lzZSA9IG9wdGlvbnMuY291bnRlcmNsb2Nrd2lzZSAhPT0gdW5kZWZpbmVkID8gIW9wdGlvbnMuY291bnRlcmNsb2Nrd2lzZSA6IG9wdGlvbnMuY2xvY2t3aXNlO1xuICB2YXIgbm9kZXMgPSBlbGVzLm5vZGVzKCkubm90KCc6cGFyZW50Jyk7XG5cbiAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgIG5vZGVzID0gbm9kZXMuc29ydChvcHRpb25zLnNvcnQpO1xuICB9XG5cbiAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KG9wdGlvbnMuYm91bmRpbmdCb3ggPyBvcHRpb25zLmJvdW5kaW5nQm94IDoge1xuICAgIHgxOiAwLFxuICAgIHkxOiAwLFxuICAgIHc6IGN5LndpZHRoKCksXG4gICAgaDogY3kuaGVpZ2h0KClcbiAgfSk7XG4gIHZhciBjZW50ZXIgPSB7XG4gICAgeDogYmIueDEgKyBiYi53IC8gMixcbiAgICB5OiBiYi55MSArIGJiLmggLyAyXG4gIH07XG4gIHZhciBzd2VlcCA9IG9wdGlvbnMuc3dlZXAgPT09IHVuZGVmaW5lZCA/IDIgKiBNYXRoLlBJIC0gMiAqIE1hdGguUEkgLyBub2Rlcy5sZW5ndGggOiBvcHRpb25zLnN3ZWVwO1xuICB2YXIgZFRoZXRhID0gc3dlZXAgLyBNYXRoLm1heCgxLCBub2Rlcy5sZW5ndGggLSAxKTtcbiAgdmFyIHI7XG4gIHZhciBtaW5EaXN0YW5jZSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBuID0gbm9kZXNbaV07XG4gICAgdmFyIG5iYiA9IG4ubGF5b3V0RGltZW5zaW9ucyhvcHRpb25zKTtcbiAgICB2YXIgdyA9IG5iYi53O1xuICAgIHZhciBoID0gbmJiLmg7XG4gICAgbWluRGlzdGFuY2UgPSBNYXRoLm1heChtaW5EaXN0YW5jZSwgdywgaCk7XG4gIH1cblxuICBpZiAobnVtYmVyKG9wdGlvbnMucmFkaXVzKSkge1xuICAgIHIgPSBvcHRpb25zLnJhZGl1cztcbiAgfSBlbHNlIGlmIChub2Rlcy5sZW5ndGggPD0gMSkge1xuICAgIHIgPSAwO1xuICB9IGVsc2Uge1xuICAgIHIgPSBNYXRoLm1pbihiYi5oLCBiYi53KSAvIDIgLSBtaW5EaXN0YW5jZTtcbiAgfSAvLyBjYWxjdWxhdGUgdGhlIHJhZGl1c1xuXG5cbiAgaWYgKG5vZGVzLmxlbmd0aCA+IDEgJiYgb3B0aW9ucy5hdm9pZE92ZXJsYXApIHtcbiAgICAvLyBidXQgb25seSBpZiBtb3JlIHRoYW4gb25lIG5vZGUgKGNhbid0IG92ZXJsYXApXG4gICAgbWluRGlzdGFuY2UgKj0gMS43NTsgLy8ganVzdCB0byBoYXZlIHNvbWUgbmljZSBzcGFjaW5nXG5cbiAgICB2YXIgZGNvcyA9IE1hdGguY29zKGRUaGV0YSkgLSBNYXRoLmNvcygwKTtcbiAgICB2YXIgZHNpbiA9IE1hdGguc2luKGRUaGV0YSkgLSBNYXRoLnNpbigwKTtcbiAgICB2YXIgck1pbiA9IE1hdGguc3FydChtaW5EaXN0YW5jZSAqIG1pbkRpc3RhbmNlIC8gKGRjb3MgKiBkY29zICsgZHNpbiAqIGRzaW4pKTsgLy8gcy50LiBubyBub2RlcyBvdmVybGFwcGluZ1xuXG4gICAgciA9IE1hdGgubWF4KHJNaW4sIHIpO1xuICB9XG5cbiAgdmFyIGdldFBvcyA9IGZ1bmN0aW9uIGdldFBvcyhlbGUsIGkpIHtcbiAgICB2YXIgdGhldGEgPSBvcHRpb25zLnN0YXJ0QW5nbGUgKyBpICogZFRoZXRhICogKGNsb2Nrd2lzZSA/IDEgOiAtMSk7XG4gICAgdmFyIHJ4ID0gciAqIE1hdGguY29zKHRoZXRhKTtcbiAgICB2YXIgcnkgPSByICogTWF0aC5zaW4odGhldGEpO1xuICAgIHZhciBwb3MgPSB7XG4gICAgICB4OiBjZW50ZXIueCArIHJ4LFxuICAgICAgeTogY2VudGVyLnkgKyByeVxuICAgIH07XG4gICAgcmV0dXJuIHBvcztcbiAgfTtcblxuICBlbGVzLm5vZGVzKCkubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGdldFBvcyk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxudmFyIGRlZmF1bHRzJGIgPSB7XG4gIGZpdDogdHJ1ZSxcbiAgLy8gd2hldGhlciB0byBmaXQgdGhlIHZpZXdwb3J0IHRvIHRoZSBncmFwaFxuICBwYWRkaW5nOiAzMCxcbiAgLy8gdGhlIHBhZGRpbmcgb24gZml0XG4gIHN0YXJ0QW5nbGU6IDMgLyAyICogTWF0aC5QSSxcbiAgLy8gd2hlcmUgbm9kZXMgc3RhcnQgaW4gcmFkaWFuc1xuICBzd2VlcDogdW5kZWZpbmVkLFxuICAvLyBob3cgbWFueSByYWRpYW5zIHNob3VsZCBiZSBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgbGFzdCBub2RlIChkZWZhdWx0cyB0byBmdWxsIGNpcmNsZSlcbiAgY2xvY2t3aXNlOiB0cnVlLFxuICAvLyB3aGV0aGVyIHRoZSBsYXlvdXQgc2hvdWxkIGdvIGNsb2Nrd2lzZSAodHJ1ZSkgb3IgY291bnRlcmNsb2Nrd2lzZS9hbnRpY2xvY2t3aXNlIChmYWxzZSlcbiAgZXF1aWRpc3RhbnQ6IGZhbHNlLFxuICAvLyB3aGV0aGVyIGxldmVscyBoYXZlIGFuIGVxdWFsIHJhZGlhbCBkaXN0YW5jZSBiZXR3ZW4gdGhlbSwgbWF5IGNhdXNlIGJvdW5kaW5nIGJveCBvdmVyZmxvd1xuICBtaW5Ob2RlU3BhY2luZzogMTAsXG4gIC8vIG1pbiBzcGFjaW5nIGJldHdlZW4gb3V0c2lkZSBvZiBub2RlcyAodXNlZCBmb3IgcmFkaXVzIGFkanVzdG1lbnQpXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBhdm9pZE92ZXJsYXA6IHRydWUsXG4gIC8vIHByZXZlbnRzIG5vZGUgb3ZlcmxhcCwgbWF5IG92ZXJmbG93IGJvdW5kaW5nQm94IGlmIG5vdCBlbm91Z2ggc3BhY2VcbiAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiBmYWxzZSxcbiAgLy8gRXhjbHVkZXMgdGhlIGxhYmVsIHdoZW4gY2FsY3VsYXRpbmcgbm9kZSBib3VuZGluZyBib3hlcyBmb3IgdGhlIGxheW91dCBhbGdvcml0aG1cbiAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gIC8vIGhlaWdodCBvZiBsYXlvdXQgYXJlYSAob3ZlcnJpZGVzIGNvbnRhaW5lciBoZWlnaHQpXG4gIHdpZHRoOiB1bmRlZmluZWQsXG4gIC8vIHdpZHRoIG9mIGxheW91dCBhcmVhIChvdmVycmlkZXMgY29udGFpbmVyIHdpZHRoKVxuICBzcGFjaW5nRmFjdG9yOiB1bmRlZmluZWQsXG4gIC8vIEFwcGxpZXMgYSBtdWx0aXBsaWNhdGl2ZSBmYWN0b3IgKD4wKSB0byBleHBhbmQgb3IgY29tcHJlc3MgdGhlIG92ZXJhbGwgYXJlYSB0aGF0IHRoZSBub2RlcyB0YWtlIHVwXG4gIGNvbmNlbnRyaWM6IGZ1bmN0aW9uIGNvbmNlbnRyaWMobm9kZSkge1xuICAgIC8vIHJldHVybnMgbnVtZXJpYyB2YWx1ZSBmb3IgZWFjaCBub2RlLCBwbGFjaW5nIGhpZ2hlciBub2RlcyBpbiBsZXZlbHMgdG93YXJkcyB0aGUgY2VudHJlXG4gICAgcmV0dXJuIG5vZGUuZGVncmVlKCk7XG4gIH0sXG4gIGxldmVsV2lkdGg6IGZ1bmN0aW9uIGxldmVsV2lkdGgobm9kZXMpIHtcbiAgICAvLyB0aGUgdmFyaWF0aW9uIG9mIGNvbmNlbnRyaWMgdmFsdWVzIGluIGVhY2ggbGV2ZWxcbiAgICByZXR1cm4gbm9kZXMubWF4RGVncmVlKCkgLyA0O1xuICB9LFxuICBhbmltYXRlOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZC4gIEFsbCBub2RlcyBhbmltYXRlZCBieSBkZWZhdWx0IG9uIGFuaW1hdGUgZW5hYmxlZC4gIE5vbi1hbmltYXRlZCBub2RlcyBhcmUgcG9zaXRpb25lZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBsYXlvdXQgc3RhcnRzXG4gIHJlYWR5OiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHNcblxufTtcblxuZnVuY3Rpb24gQ29uY2VudHJpY0xheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkYiwgb3B0aW9ucyk7XG59XG5cbkNvbmNlbnRyaWNMYXlvdXQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHBhcmFtcyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIG9wdGlvbnMgPSBwYXJhbXM7XG4gIHZhciBjbG9ja3dpc2UgPSBvcHRpb25zLmNvdW50ZXJjbG9ja3dpc2UgIT09IHVuZGVmaW5lZCA/ICFvcHRpb25zLmNvdW50ZXJjbG9ja3dpc2UgOiBvcHRpb25zLmNsb2Nrd2lzZTtcbiAgdmFyIGN5ID0gcGFyYW1zLmN5O1xuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIG5vZGVzID0gZWxlcy5ub2RlcygpLm5vdCgnOnBhcmVudCcpO1xuICB2YXIgYmIgPSBtYWtlQm91bmRpbmdCb3gob3B0aW9ucy5ib3VuZGluZ0JveCA/IG9wdGlvbnMuYm91bmRpbmdCb3ggOiB7XG4gICAgeDE6IDAsXG4gICAgeTE6IDAsXG4gICAgdzogY3kud2lkdGgoKSxcbiAgICBoOiBjeS5oZWlnaHQoKVxuICB9KTtcbiAgdmFyIGNlbnRlciA9IHtcbiAgICB4OiBiYi54MSArIGJiLncgLyAyLFxuICAgIHk6IGJiLnkxICsgYmIuaCAvIDJcbiAgfTtcbiAgdmFyIG5vZGVWYWx1ZXMgPSBbXTsgLy8geyBub2RlLCB2YWx1ZSB9XG5cbiAgdmFyIG1heE5vZGVTaXplID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgdmFsdWUgPSB2b2lkIDA7IC8vIGNhbGN1bGF0ZSB0aGUgbm9kZSB2YWx1ZVxuXG4gICAgdmFsdWUgPSBvcHRpb25zLmNvbmNlbnRyaWMobm9kZSk7XG4gICAgbm9kZVZhbHVlcy5wdXNoKHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIG5vZGU6IG5vZGVcbiAgICB9KTsgLy8gZm9yIHN0eWxlIG1hcHBpbmdcblxuICAgIG5vZGUuX3ByaXZhdGUuc2NyYXRjaC5jb25jZW50cmljID0gdmFsdWU7XG4gIH0gLy8gaW4gY2FzZSB3ZSB1c2VkIHRoZSBgY29uY2VudHJpY2AgaW4gc3R5bGVcblxuXG4gIG5vZGVzLnVwZGF0ZVN0eWxlKCk7IC8vIGNhbGN1bGF0ZSBtYXggc2l6ZSBub3cgYmFzZWQgb24gcG90ZW50aWFsbHkgdXBkYXRlZCBtYXBwZXJzXG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5vZGVzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBfbm9kZSA9IG5vZGVzW19pXTtcblxuICAgIHZhciBuYmIgPSBfbm9kZS5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuXG4gICAgbWF4Tm9kZVNpemUgPSBNYXRoLm1heChtYXhOb2RlU2l6ZSwgbmJiLncsIG5iYi5oKTtcbiAgfSAvLyBzb3J0IG5vZGUgdmFsdWVzIGluIGRlc2NyZWFzaW5nIG9yZGVyXG5cblxuICBub2RlVmFsdWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi52YWx1ZSAtIGEudmFsdWU7XG4gIH0pO1xuICB2YXIgbGV2ZWxXaWR0aCA9IG9wdGlvbnMubGV2ZWxXaWR0aChub2Rlcyk7IC8vIHB1dCB0aGUgdmFsdWVzIGludG8gbGV2ZWxzXG5cbiAgdmFyIGxldmVscyA9IFtbXV07XG4gIHZhciBjdXJyZW50TGV2ZWwgPSBsZXZlbHNbMF07XG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbm9kZVZhbHVlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIHZhbCA9IG5vZGVWYWx1ZXNbX2kyXTtcblxuICAgIGlmIChjdXJyZW50TGV2ZWwubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhjdXJyZW50TGV2ZWxbMF0udmFsdWUgLSB2YWwudmFsdWUpO1xuXG4gICAgICBpZiAoZGlmZiA+PSBsZXZlbFdpZHRoKSB7XG4gICAgICAgIGN1cnJlbnRMZXZlbCA9IFtdO1xuICAgICAgICBsZXZlbHMucHVzaChjdXJyZW50TGV2ZWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN1cnJlbnRMZXZlbC5wdXNoKHZhbCk7XG4gIH0gLy8gY3JlYXRlIHBvc2l0aW9ucyBmcm9tIGxldmVsc1xuXG5cbiAgdmFyIG1pbkRpc3QgPSBtYXhOb2RlU2l6ZSArIG9wdGlvbnMubWluTm9kZVNwYWNpbmc7IC8vIG1pbiBkaXN0IGJldHdlZW4gbm9kZXNcblxuICBpZiAoIW9wdGlvbnMuYXZvaWRPdmVybGFwKSB7XG4gICAgLy8gdGhlbiBzdHJpY3RseSBjb25zdHJhaW4gdG8gYmJcbiAgICB2YXIgZmlyc3RMdmxIYXNNdWx0aSA9IGxldmVscy5sZW5ndGggPiAwICYmIGxldmVsc1swXS5sZW5ndGggPiAxO1xuICAgIHZhciBtYXhSID0gTWF0aC5taW4oYmIudywgYmIuaCkgLyAyIC0gbWluRGlzdDtcbiAgICB2YXIgclN0ZXAgPSBtYXhSIC8gKGxldmVscy5sZW5ndGggKyBmaXJzdEx2bEhhc011bHRpID8gMSA6IDApO1xuICAgIG1pbkRpc3QgPSBNYXRoLm1pbihtaW5EaXN0LCByU3RlcCk7XG4gIH0gLy8gZmluZCB0aGUgbWV0cmljcyBmb3IgZWFjaCBsZXZlbFxuXG5cbiAgdmFyIHIgPSAwO1xuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGxldmVscy5sZW5ndGg7IF9pMysrKSB7XG4gICAgdmFyIGxldmVsID0gbGV2ZWxzW19pM107XG4gICAgdmFyIHN3ZWVwID0gb3B0aW9ucy5zd2VlcCA9PT0gdW5kZWZpbmVkID8gMiAqIE1hdGguUEkgLSAyICogTWF0aC5QSSAvIGxldmVsLmxlbmd0aCA6IG9wdGlvbnMuc3dlZXA7XG4gICAgdmFyIGRUaGV0YSA9IGxldmVsLmRUaGV0YSA9IHN3ZWVwIC8gTWF0aC5tYXgoMSwgbGV2ZWwubGVuZ3RoIC0gMSk7IC8vIGNhbGN1bGF0ZSB0aGUgcmFkaXVzXG5cbiAgICBpZiAobGV2ZWwubGVuZ3RoID4gMSAmJiBvcHRpb25zLmF2b2lkT3ZlcmxhcCkge1xuICAgICAgLy8gYnV0IG9ubHkgaWYgbW9yZSB0aGFuIG9uZSBub2RlIChjYW4ndCBvdmVybGFwKVxuICAgICAgdmFyIGRjb3MgPSBNYXRoLmNvcyhkVGhldGEpIC0gTWF0aC5jb3MoMCk7XG4gICAgICB2YXIgZHNpbiA9IE1hdGguc2luKGRUaGV0YSkgLSBNYXRoLnNpbigwKTtcbiAgICAgIHZhciByTWluID0gTWF0aC5zcXJ0KG1pbkRpc3QgKiBtaW5EaXN0IC8gKGRjb3MgKiBkY29zICsgZHNpbiAqIGRzaW4pKTsgLy8gcy50LiBubyBub2RlcyBvdmVybGFwcGluZ1xuXG4gICAgICByID0gTWF0aC5tYXgock1pbiwgcik7XG4gICAgfVxuXG4gICAgbGV2ZWwuciA9IHI7XG4gICAgciArPSBtaW5EaXN0O1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuZXF1aWRpc3RhbnQpIHtcbiAgICB2YXIgckRlbHRhTWF4ID0gMDtcbiAgICB2YXIgX3IgPSAwO1xuXG4gICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbGV2ZWxzLmxlbmd0aDsgX2k0KyspIHtcbiAgICAgIHZhciBfbGV2ZWwgPSBsZXZlbHNbX2k0XTtcbiAgICAgIHZhciByRGVsdGEgPSBfbGV2ZWwuciAtIF9yO1xuICAgICAgckRlbHRhTWF4ID0gTWF0aC5tYXgockRlbHRhTWF4LCByRGVsdGEpO1xuICAgIH1cblxuICAgIF9yID0gMDtcblxuICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IGxldmVscy5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICB2YXIgX2xldmVsMiA9IGxldmVsc1tfaTVdO1xuXG4gICAgICBpZiAoX2k1ID09PSAwKSB7XG4gICAgICAgIF9yID0gX2xldmVsMi5yO1xuICAgICAgfVxuXG4gICAgICBfbGV2ZWwyLnIgPSBfcjtcbiAgICAgIF9yICs9IHJEZWx0YU1heDtcbiAgICB9XG4gIH0gLy8gY2FsY3VsYXRlIHRoZSBub2RlIHBvc2l0aW9uc1xuXG5cbiAgdmFyIHBvcyA9IHt9OyAvLyBpZCA9PiBwb3NpdGlvblxuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IGxldmVscy5sZW5ndGg7IF9pNisrKSB7XG4gICAgdmFyIF9sZXZlbDMgPSBsZXZlbHNbX2k2XTtcbiAgICB2YXIgX2RUaGV0YSA9IF9sZXZlbDMuZFRoZXRhO1xuICAgIHZhciBfcjIgPSBfbGV2ZWwzLnI7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IF9sZXZlbDMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBfdmFsID0gX2xldmVsM1tqXTtcbiAgICAgIHZhciB0aGV0YSA9IG9wdGlvbnMuc3RhcnRBbmdsZSArIChjbG9ja3dpc2UgPyAxIDogLTEpICogX2RUaGV0YSAqIGo7XG4gICAgICB2YXIgcCA9IHtcbiAgICAgICAgeDogY2VudGVyLnggKyBfcjIgKiBNYXRoLmNvcyh0aGV0YSksXG4gICAgICAgIHk6IGNlbnRlci55ICsgX3IyICogTWF0aC5zaW4odGhldGEpXG4gICAgICB9O1xuICAgICAgcG9zW192YWwubm9kZS5pZCgpXSA9IHA7XG4gICAgfVxuICB9IC8vIHBvc2l0aW9uIHRoZSBub2Rlc1xuXG5cbiAgZWxlcy5ub2RlcygpLmxheW91dFBvc2l0aW9ucyh0aGlzLCBvcHRpb25zLCBmdW5jdGlvbiAoZWxlKSB7XG4gICAgdmFyIGlkID0gZWxlLmlkKCk7XG4gICAgcmV0dXJuIHBvc1tpZF07XG4gIH0pO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbi8qXG5UaGUgQ29TRSBsYXlvdXQgd2FzIHdyaXR0ZW4gYnkgR2VyYXJkbyBIdWNrLlxuaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2dlcmFyZG9odWNrL1xuXG5CYXNlZCBvbiB0aGUgZm9sbG93aW5nIGFydGljbGU6XG5odHRwOi8vZGwuYWNtLm9yZy9jaXRhdGlvbi5jZm0/aWQ9MTQ5ODA0N1xuXG5Nb2RpZmljYXRpb25zIHRyYWNrZWQgb24gR2l0aHViLlxuKi9cbnZhciBERUJVRztcbi8qKlxuICogQGJyaWVmIDogIGRlZmF1bHQgbGF5b3V0IG9wdGlvbnNcbiAqL1xuXG52YXIgZGVmYXVsdHMkYyA9IHtcbiAgLy8gQ2FsbGVkIG9uIGBsYXlvdXRyZWFkeWBcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge30sXG4gIC8vIENhbGxlZCBvbiBgbGF5b3V0c3RvcGBcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9LFxuICAvLyBXaGV0aGVyIHRvIGFuaW1hdGUgd2hpbGUgcnVubmluZyB0aGUgbGF5b3V0XG4gIC8vIHRydWUgOiBBbmltYXRlIGNvbnRpbnVvdXNseSBhcyB0aGUgbGF5b3V0IGlzIHJ1bm5pbmdcbiAgLy8gZmFsc2UgOiBKdXN0IHNob3cgdGhlIGVuZCByZXN1bHRcbiAgLy8gJ2VuZCcgOiBBbmltYXRlIHdpdGggdGhlIGVuZCByZXN1bHQsIGZyb20gdGhlIGluaXRpYWwgcG9zaXRpb25zIHRvIHRoZSBlbmQgcG9zaXRpb25zXG4gIGFuaW1hdGU6IHRydWUsXG4gIC8vIEVhc2luZyBvZiB0aGUgYW5pbWF0aW9uIGZvciBhbmltYXRlOidlbmQnXG4gIGFuaW1hdGlvbkVhc2luZzogdW5kZWZpbmVkLFxuICAvLyBUaGUgZHVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbiBmb3IgYW5pbWF0ZTonZW5kJ1xuICBhbmltYXRpb25EdXJhdGlvbjogdW5kZWZpbmVkLFxuICAvLyBBIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZFxuICAvLyBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWRcbiAgLy8gTm9uLWFuaW1hdGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGxheW91dCBzdGFydHNcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIC8vIFRoZSBsYXlvdXQgYW5pbWF0ZXMgb25seSBhZnRlciB0aGlzIG1hbnkgbWlsbGlzZWNvbmRzIGZvciBhbmltYXRlOnRydWVcbiAgLy8gKHByZXZlbnRzIGZsYXNoaW5nIG9uIGZhc3QgcnVucylcbiAgYW5pbWF0aW9uVGhyZXNob2xkOiAyNTAsXG4gIC8vIE51bWJlciBvZiBpdGVyYXRpb25zIGJldHdlZW4gY29uc2VjdXRpdmUgc2NyZWVuIHBvc2l0aW9ucyB1cGRhdGVcbiAgcmVmcmVzaDogMjAsXG4gIC8vIFdoZXRoZXIgdG8gZml0IHRoZSBuZXR3b3JrIHZpZXcgYWZ0ZXIgd2hlbiBkb25lXG4gIGZpdDogdHJ1ZSxcbiAgLy8gUGFkZGluZyBvbiBmaXRcbiAgcGFkZGluZzogMzAsXG4gIC8vIENvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLFxuICAvLyBFeGNsdWRlcyB0aGUgbGFiZWwgd2hlbiBjYWxjdWxhdGluZyBub2RlIGJvdW5kaW5nIGJveGVzIGZvciB0aGUgbGF5b3V0IGFsZ29yaXRobVxuICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHM6IGZhbHNlLFxuICAvLyBSYW5kb21pemUgdGhlIGluaXRpYWwgcG9zaXRpb25zIG9mIHRoZSBub2RlcyAodHJ1ZSkgb3IgdXNlIGV4aXN0aW5nIHBvc2l0aW9ucyAoZmFsc2UpXG4gIHJhbmRvbWl6ZTogZmFsc2UsXG4gIC8vIEV4dHJhIHNwYWNpbmcgYmV0d2VlbiBjb21wb25lbnRzIGluIG5vbi1jb21wb3VuZCBncmFwaHNcbiAgY29tcG9uZW50U3BhY2luZzogNDAsXG4gIC8vIE5vZGUgcmVwdWxzaW9uIChub24gb3ZlcmxhcHBpbmcpIG11bHRpcGxpZXJcbiAgbm9kZVJlcHVsc2lvbjogZnVuY3Rpb24gbm9kZVJlcHVsc2lvbihub2RlKSB7XG4gICAgcmV0dXJuIDIwNDg7XG4gIH0sXG4gIC8vIE5vZGUgcmVwdWxzaW9uIChvdmVybGFwcGluZykgbXVsdGlwbGllclxuICBub2RlT3ZlcmxhcDogNCxcbiAgLy8gSWRlYWwgZWRnZSAobm9uIG5lc3RlZCkgbGVuZ3RoXG4gIGlkZWFsRWRnZUxlbmd0aDogZnVuY3Rpb24gaWRlYWxFZGdlTGVuZ3RoKGVkZ2UpIHtcbiAgICByZXR1cm4gMzI7XG4gIH0sXG4gIC8vIERpdmlzb3IgdG8gY29tcHV0ZSBlZGdlIGZvcmNlc1xuICBlZGdlRWxhc3RpY2l0eTogZnVuY3Rpb24gZWRnZUVsYXN0aWNpdHkoZWRnZSkge1xuICAgIHJldHVybiAzMjtcbiAgfSxcbiAgLy8gTmVzdGluZyBmYWN0b3IgKG11bHRpcGxpZXIpIHRvIGNvbXB1dGUgaWRlYWwgZWRnZSBsZW5ndGggZm9yIG5lc3RlZCBlZGdlc1xuICBuZXN0aW5nRmFjdG9yOiAxLjIsXG4gIC8vIEdyYXZpdHkgZm9yY2UgKGNvbnN0YW50KVxuICBncmF2aXR5OiAxLFxuICAvLyBNYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHBlcmZvcm1cbiAgbnVtSXRlcjogMTAwMCxcbiAgLy8gSW5pdGlhbCB0ZW1wZXJhdHVyZSAobWF4aW11bSBub2RlIGRpc3BsYWNlbWVudClcbiAgaW5pdGlhbFRlbXA6IDEwMDAsXG4gIC8vIENvb2xpbmcgZmFjdG9yIChob3cgdGhlIHRlbXBlcmF0dXJlIGlzIHJlZHVjZWQgYmV0d2VlbiBjb25zZWN1dGl2ZSBpdGVyYXRpb25zXG4gIGNvb2xpbmdGYWN0b3I6IDAuOTksXG4gIC8vIExvd2VyIHRlbXBlcmF0dXJlIHRocmVzaG9sZCAoYmVsb3cgdGhpcyBwb2ludCB0aGUgbGF5b3V0IHdpbGwgZW5kKVxuICBtaW5UZW1wOiAxLjBcbn07XG4vKipcbiAqIEBicmllZiAgICAgICA6IGNvbnN0cnVjdG9yXG4gKiBAYXJnIG9wdGlvbnMgOiBvYmplY3QgY29udGFpbmluZyBsYXlvdXQgb3B0aW9uc1xuICovXG5cbmZ1bmN0aW9uIENvc2VMYXlvdXQob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBleHRlbmQoe30sIGRlZmF1bHRzJGMsIG9wdGlvbnMpO1xuICB0aGlzLm9wdGlvbnMubGF5b3V0ID0gdGhpcztcbn1cbi8qKlxuICogQGJyaWVmIDogcnVucyB0aGUgbGF5b3V0XG4gKi9cblxuXG5Db3NlTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgY3kgPSBvcHRpb25zLmN5O1xuICB2YXIgbGF5b3V0ID0gdGhpcztcbiAgbGF5b3V0LnN0b3BwZWQgPSBmYWxzZTtcblxuICBpZiAob3B0aW9ucy5hbmltYXRlID09PSB0cnVlIHx8IG9wdGlvbnMuYW5pbWF0ZSA9PT0gZmFsc2UpIHtcbiAgICBsYXlvdXQuZW1pdCh7XG4gICAgICB0eXBlOiAnbGF5b3V0c3RhcnQnLFxuICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICB9KTtcbiAgfSAvLyBTZXQgREVCVUcgLSBHbG9iYWwgdmFyaWFibGVcblxuXG4gIGlmICh0cnVlID09PSBvcHRpb25zLmRlYnVnKSB7XG4gICAgREVCVUcgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIERFQlVHID0gZmFsc2U7XG4gIH0gLy8gSW5pdGlhbGl6ZSBsYXlvdXQgaW5mb1xuXG5cbiAgdmFyIGxheW91dEluZm8gPSBjcmVhdGVMYXlvdXRJbmZvKGN5LCBsYXlvdXQsIG9wdGlvbnMpOyAvLyBTaG93IExheW91dEluZm8gY29udGVudHMgaWYgZGVidWdnaW5nXG5cbiAgaWYgKERFQlVHKSB7XG4gICAgcHJpbnRMYXlvdXRJbmZvKGxheW91dEluZm8pO1xuICB9IC8vIElmIHJlcXVpcmVkLCByYW5kb21pemUgbm9kZSBwb3NpdGlvbnNcblxuXG4gIGlmIChvcHRpb25zLnJhbmRvbWl6ZSkge1xuICAgIHJhbmRvbWl6ZVBvc2l0aW9ucyhsYXlvdXRJbmZvKTtcbiAgfVxuXG4gIHZhciBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZU5vdygpO1xuXG4gIHZhciByZWZyZXNoID0gZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICByZWZyZXNoUG9zaXRpb25zKGxheW91dEluZm8sIGN5LCBvcHRpb25zKTsgLy8gRml0IHRoZSBncmFwaCBpZiBuZWNlc3NhcnlcblxuICAgIGlmICh0cnVlID09PSBvcHRpb25zLmZpdCkge1xuICAgICAgY3kuZml0KG9wdGlvbnMucGFkZGluZyk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBtYWluTG9vcCA9IGZ1bmN0aW9uIG1haW5Mb29wKGkpIHtcbiAgICBpZiAobGF5b3V0LnN0b3BwZWQgfHwgaSA+PSBvcHRpb25zLm51bUl0ZXIpIHtcbiAgICAgIC8vIGxvZ0RlYnVnKFwiTGF5b3V0IG1hbnVhbGx5IHN0b3BwZWQuIFN0b3BwaW5nIGNvbXB1dGF0aW9uIGluIHN0ZXAgXCIgKyBpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIERvIG9uZSBzdGVwIGluIHRoZSBwaGlzaWNhbCBzaW11bGF0aW9uXG5cblxuICAgIHN0ZXAkMShsYXlvdXRJbmZvLCBvcHRpb25zKTsgLy8gVXBkYXRlIHRlbXBlcmF0dXJlXG5cbiAgICBsYXlvdXRJbmZvLnRlbXBlcmF0dXJlID0gbGF5b3V0SW5mby50ZW1wZXJhdHVyZSAqIG9wdGlvbnMuY29vbGluZ0ZhY3RvcjsgLy8gbG9nRGVidWcoXCJOZXcgdGVtcGVyYXR1cmU6IFwiICsgbGF5b3V0SW5mby50ZW1wZXJhdHVyZSk7XG5cbiAgICBpZiAobGF5b3V0SW5mby50ZW1wZXJhdHVyZSA8IG9wdGlvbnMubWluVGVtcCkge1xuICAgICAgLy8gbG9nRGVidWcoXCJUZW1wZXJhdHVyZSBkcm9wIGJlbG93IG1pbmltdW0gdGhyZXNob2xkLiBTdG9wcGluZyBjb21wdXRhdGlvbiBpbiBzdGVwIFwiICsgaSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgdmFyIGRvbmUgPSBmdW5jdGlvbiBkb25lKCkge1xuICAgIGlmIChvcHRpb25zLmFuaW1hdGUgPT09IHRydWUgfHwgb3B0aW9ucy5hbmltYXRlID09PSBmYWxzZSkge1xuICAgICAgcmVmcmVzaCgpOyAvLyBMYXlvdXQgaGFzIGZpbmlzaGVkXG5cbiAgICAgIGxheW91dC5vbmUoJ2xheW91dHN0b3AnLCBvcHRpb25zLnN0b3ApO1xuICAgICAgbGF5b3V0LmVtaXQoe1xuICAgICAgICB0eXBlOiAnbGF5b3V0c3RvcCcsXG4gICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGVzID0gb3B0aW9ucy5lbGVzLm5vZGVzKCk7XG4gICAgICB2YXIgZ2V0U2NhbGVkUG9zID0gZ2V0U2NhbGVJbkJvdW5kc0ZuKGxheW91dEluZm8sIG9wdGlvbnMsIG5vZGVzKTtcbiAgICAgIG5vZGVzLmxheW91dFBvc2l0aW9ucyhsYXlvdXQsIG9wdGlvbnMsIGdldFNjYWxlZFBvcyk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpID0gMDtcbiAgdmFyIGxvb3BSZXQgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zLmFuaW1hdGUgPT09IHRydWUpIHtcbiAgICB2YXIgZnJhbWUgPSBmdW5jdGlvbiBmcmFtZSgpIHtcbiAgICAgIHZhciBmID0gMDtcblxuICAgICAgd2hpbGUgKGxvb3BSZXQgJiYgZiA8IG9wdGlvbnMucmVmcmVzaCkge1xuICAgICAgICBsb29wUmV0ID0gbWFpbkxvb3AoaSk7XG4gICAgICAgIGkrKztcbiAgICAgICAgZisrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWxvb3BSZXQpIHtcbiAgICAgICAgLy8gaXQncyBkb25lXG4gICAgICAgIHNlcGFyYXRlQ29tcG9uZW50cyhsYXlvdXRJbmZvLCBvcHRpb25zKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5vdyA9IHBlcmZvcm1hbmNlTm93KCk7XG5cbiAgICAgICAgaWYgKG5vdyAtIHN0YXJ0VGltZSA+PSBvcHRpb25zLmFuaW1hdGlvblRocmVzaG9sZCkge1xuICAgICAgICAgIHJlZnJlc2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZyYW1lKCk7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKGxvb3BSZXQpIHtcbiAgICAgIGxvb3BSZXQgPSBtYWluTG9vcChpKTtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICBzZXBhcmF0ZUNvbXBvbmVudHMobGF5b3V0SW5mbywgb3B0aW9ucyk7XG4gICAgZG9uZSgpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59O1xuLyoqXG4gKiBAYnJpZWYgOiBjYWxsZWQgb24gY29udGludW91cyBsYXlvdXRzIHRvIHN0b3AgdGhlbSBiZWZvcmUgdGhleSBmaW5pc2hcbiAqL1xuXG5cbkNvc2VMYXlvdXQucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc3RvcHBlZCA9IHRydWU7XG5cbiAgaWYgKHRoaXMudGhyZWFkKSB7XG4gICAgdGhpcy50aHJlYWQuc3RvcCgpO1xuICB9XG5cbiAgdGhpcy5lbWl0KCdsYXlvdXRzdG9wJyk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuQ29zZUxheW91dC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMudGhyZWFkKSB7XG4gICAgdGhpcy50aHJlYWQuc3RvcCgpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59O1xuLyoqXG4gKiBAYnJpZWYgICAgIDogQ3JlYXRlcyBhbiBvYmplY3Qgd2hpY2ggaXMgY29udGFpbnMgYWxsIHRoZSBkYXRhXG4gKiAgICAgICAgICAgICAgdXNlZCBpbiB0aGUgbGF5b3V0IHByb2Nlc3NcbiAqIEBhcmcgY3kgICAgOiBjeXRvc2NhcGUuanMgb2JqZWN0XG4gKiBAcmV0dXJuICAgIDogbGF5b3V0SW5mbyBvYmplY3QgaW5pdGlhbGl6ZWRcbiAqL1xuXG5cbnZhciBjcmVhdGVMYXlvdXRJbmZvID0gZnVuY3Rpb24gY3JlYXRlTGF5b3V0SW5mbyhjeSwgbGF5b3V0LCBvcHRpb25zKSB7XG4gIC8vIFNob3J0Y3V0XG4gIHZhciBlZGdlcyA9IG9wdGlvbnMuZWxlcy5lZGdlcygpO1xuICB2YXIgbm9kZXMgPSBvcHRpb25zLmVsZXMubm9kZXMoKTtcbiAgdmFyIGxheW91dEluZm8gPSB7XG4gICAgaXNDb21wb3VuZDogY3kuaGFzQ29tcG91bmROb2RlcygpLFxuICAgIGxheW91dE5vZGVzOiBbXSxcbiAgICBpZFRvSW5kZXg6IHt9LFxuICAgIG5vZGVTaXplOiBub2Rlcy5zaXplKCksXG4gICAgZ3JhcGhTZXQ6IFtdLFxuICAgIGluZGV4VG9HcmFwaDogW10sXG4gICAgbGF5b3V0RWRnZXM6IFtdLFxuICAgIGVkZ2VTaXplOiBlZGdlcy5zaXplKCksXG4gICAgdGVtcGVyYXR1cmU6IG9wdGlvbnMuaW5pdGlhbFRlbXAsXG4gICAgY2xpZW50V2lkdGg6IGN5LndpZHRoKCksXG4gICAgY2xpZW50SGVpZ2h0OiBjeS53aWR0aCgpLFxuICAgIGJvdW5kaW5nQm94OiBtYWtlQm91bmRpbmdCb3gob3B0aW9ucy5ib3VuZGluZ0JveCA/IG9wdGlvbnMuYm91bmRpbmdCb3ggOiB7XG4gICAgICB4MTogMCxcbiAgICAgIHkxOiAwLFxuICAgICAgdzogY3kud2lkdGgoKSxcbiAgICAgIGg6IGN5LmhlaWdodCgpXG4gICAgfSlcbiAgfTtcbiAgdmFyIGNvbXBvbmVudHMgPSBvcHRpb25zLmVsZXMuY29tcG9uZW50cygpO1xuICB2YXIgaWQyY21wdElkID0ge307XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbaV07XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbXBvbmVudC5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIG5vZGUgPSBjb21wb25lbnRbal07XG4gICAgICBpZDJjbXB0SWRbbm9kZS5pZCgpXSA9IGk7XG4gICAgfVxuICB9IC8vIEl0ZXJhdGUgb3ZlciBhbGwgbm9kZXMsIGNyZWF0aW5nIGxheW91dCBub2Rlc1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IG5vZGVzW2ldO1xuICAgIHZhciBuYmIgPSBuLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgdmFyIHRlbXBOb2RlID0ge307XG4gICAgdGVtcE5vZGUuaXNMb2NrZWQgPSBuLmxvY2tlZCgpO1xuICAgIHRlbXBOb2RlLmlkID0gbi5kYXRhKCdpZCcpO1xuICAgIHRlbXBOb2RlLnBhcmVudElkID0gbi5kYXRhKCdwYXJlbnQnKTtcbiAgICB0ZW1wTm9kZS5jbXB0SWQgPSBpZDJjbXB0SWRbbi5pZCgpXTtcbiAgICB0ZW1wTm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgIHRlbXBOb2RlLnBvc2l0aW9uWCA9IG4ucG9zaXRpb24oJ3gnKTtcbiAgICB0ZW1wTm9kZS5wb3NpdGlvblkgPSBuLnBvc2l0aW9uKCd5Jyk7XG4gICAgdGVtcE5vZGUub2Zmc2V0WCA9IDA7XG4gICAgdGVtcE5vZGUub2Zmc2V0WSA9IDA7XG4gICAgdGVtcE5vZGUuaGVpZ2h0ID0gbmJiLnc7XG4gICAgdGVtcE5vZGUud2lkdGggPSBuYmIuaDtcbiAgICB0ZW1wTm9kZS5tYXhYID0gdGVtcE5vZGUucG9zaXRpb25YICsgdGVtcE5vZGUud2lkdGggLyAyO1xuICAgIHRlbXBOb2RlLm1pblggPSB0ZW1wTm9kZS5wb3NpdGlvblggLSB0ZW1wTm9kZS53aWR0aCAvIDI7XG4gICAgdGVtcE5vZGUubWF4WSA9IHRlbXBOb2RlLnBvc2l0aW9uWSArIHRlbXBOb2RlLmhlaWdodCAvIDI7XG4gICAgdGVtcE5vZGUubWluWSA9IHRlbXBOb2RlLnBvc2l0aW9uWSAtIHRlbXBOb2RlLmhlaWdodCAvIDI7XG4gICAgdGVtcE5vZGUucGFkTGVmdCA9IHBhcnNlRmxvYXQobi5zdHlsZSgncGFkZGluZycpKTtcbiAgICB0ZW1wTm9kZS5wYWRSaWdodCA9IHBhcnNlRmxvYXQobi5zdHlsZSgncGFkZGluZycpKTtcbiAgICB0ZW1wTm9kZS5wYWRUb3AgPSBwYXJzZUZsb2F0KG4uc3R5bGUoJ3BhZGRpbmcnKSk7XG4gICAgdGVtcE5vZGUucGFkQm90dG9tID0gcGFyc2VGbG9hdChuLnN0eWxlKCdwYWRkaW5nJykpOyAvLyBmb3JjZXNcblxuICAgIHRlbXBOb2RlLm5vZGVSZXB1bHNpb24gPSBmbihvcHRpb25zLm5vZGVSZXB1bHNpb24pID8gb3B0aW9ucy5ub2RlUmVwdWxzaW9uKG4pIDogb3B0aW9ucy5ub2RlUmVwdWxzaW9uOyAvLyBBZGQgbmV3IG5vZGVcblxuICAgIGxheW91dEluZm8ubGF5b3V0Tm9kZXMucHVzaCh0ZW1wTm9kZSk7IC8vIEFkZCBlbnRyeSB0byBpZC1pbmRleCBtYXBcblxuICAgIGxheW91dEluZm8uaWRUb0luZGV4W3RlbXBOb2RlLmlkXSA9IGk7XG4gIH0gLy8gSW5saW5lIGltcGxlbWVudGF0aW9uIG9mIGEgcXVldWUsIHVzZWQgZm9yIHRyYXZlcnNpbmcgdGhlIGdyYXBoIGluIEJGUyBvcmRlclxuXG5cbiAgdmFyIHF1ZXVlID0gW107XG4gIHZhciBzdGFydCA9IDA7IC8vIFBvaW50cyB0byB0aGUgc3RhcnQgdGhlIHF1ZXVlXG5cbiAgdmFyIGVuZCA9IC0xOyAvLyBQb2ludHMgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWVcblxuICB2YXIgdGVtcEdyYXBoID0gW107IC8vIFNlY29uZCBwYXNzIHRvIGFkZCBjaGlsZCBpbmZvcm1hdGlvbiBhbmRcbiAgLy8gaW5pdGlhbGl6ZSBxdWV1ZSBmb3IgaGllcmFyY2hpY2FsIHRyYXZlcnNhbFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ub2RlU2l6ZTsgaSsrKSB7XG4gICAgdmFyIG4gPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2ldO1xuICAgIHZhciBwX2lkID0gbi5wYXJlbnRJZDsgLy8gQ2hlY2sgaWYgbm9kZSBuIGhhcyBhIHBhcmVudCBub2RlXG5cbiAgICBpZiAobnVsbCAhPSBwX2lkKSB7XG4gICAgICAvLyBBZGQgbm9kZSBJZCB0byBwYXJlbnQncyBsaXN0IG9mIGNoaWxkcmVuXG4gICAgICBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3BfaWRdXS5jaGlsZHJlbi5wdXNoKG4uaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBhIG5vZGUgZG9lc24ndCBoYXZlIGEgcGFyZW50LCB0aGVuIGl0J3MgaW4gdGhlIHJvb3QgZ3JhcGhcbiAgICAgIHF1ZXVlWysrZW5kXSA9IG4uaWQ7XG4gICAgICB0ZW1wR3JhcGgucHVzaChuLmlkKTtcbiAgICB9XG4gIH0gLy8gQWRkIHJvb3QgZ3JhcGggdG8gZ3JhcGhTZXRcblxuXG4gIGxheW91dEluZm8uZ3JhcGhTZXQucHVzaCh0ZW1wR3JhcGgpOyAvLyBUcmF2ZXJzZSB0aGUgZ3JhcGgsIGxldmVsIGJ5IGxldmVsLFxuXG4gIHdoaWxlIChzdGFydCA8PSBlbmQpIHtcbiAgICAvLyBHZXQgdGhlIG5vZGUgdG8gdmlzaXQgYW5kIHJlbW92ZSBpdCBmcm9tIHF1ZXVlXG4gICAgdmFyIG5vZGVfaWQgPSBxdWV1ZVtzdGFydCsrXTtcbiAgICB2YXIgbm9kZV9peCA9IGxheW91dEluZm8uaWRUb0luZGV4W25vZGVfaWRdO1xuICAgIHZhciBub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tub2RlX2l4XTtcbiAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEFkZCBjaGlsZHJlbiBub2RlcyBhcyBhIG5ldyBncmFwaCB0byBncmFwaCBzZXRcbiAgICAgIGxheW91dEluZm8uZ3JhcGhTZXQucHVzaChjaGlsZHJlbik7IC8vIEFkZCBjaGlsZHJlbiB0byBxdWUgcXVldWUgdG8gYmUgdmlzaXRlZFxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHF1ZXVlWysrZW5kXSA9IGNoaWxkcmVuW2ldO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBDcmVhdGUgaW5kZXhUb0dyYXBoIG1hcFxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLmdyYXBoU2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGdyYXBoID0gbGF5b3V0SW5mby5ncmFwaFNldFtpXTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZ3JhcGgubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBpbmRleCA9IGxheW91dEluZm8uaWRUb0luZGV4W2dyYXBoW2pdXTtcbiAgICAgIGxheW91dEluZm8uaW5kZXhUb0dyYXBoW2luZGV4XSA9IGk7XG4gICAgfVxuICB9IC8vIEl0ZXJhdGUgb3ZlciBhbGwgZWRnZXMsIGNyZWF0aW5nIExheW91dCBFZGdlc1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLmVkZ2VTaXplOyBpKyspIHtcbiAgICB2YXIgZSA9IGVkZ2VzW2ldO1xuICAgIHZhciB0ZW1wRWRnZSA9IHt9O1xuICAgIHRlbXBFZGdlLmlkID0gZS5kYXRhKCdpZCcpO1xuICAgIHRlbXBFZGdlLnNvdXJjZUlkID0gZS5kYXRhKCdzb3VyY2UnKTtcbiAgICB0ZW1wRWRnZS50YXJnZXRJZCA9IGUuZGF0YSgndGFyZ2V0Jyk7IC8vIENvbXB1dGUgaWRlYWwgbGVuZ3RoXG5cbiAgICB2YXIgaWRlYWxMZW5ndGggPSBmbihvcHRpb25zLmlkZWFsRWRnZUxlbmd0aCkgPyBvcHRpb25zLmlkZWFsRWRnZUxlbmd0aChlKSA6IG9wdGlvbnMuaWRlYWxFZGdlTGVuZ3RoO1xuICAgIHZhciBlbGFzdGljaXR5ID0gZm4ob3B0aW9ucy5lZGdlRWxhc3RpY2l0eSkgPyBvcHRpb25zLmVkZ2VFbGFzdGljaXR5KGUpIDogb3B0aW9ucy5lZGdlRWxhc3RpY2l0eTsgLy8gQ2hlY2sgaWYgaXQncyBhbiBpbnRlciBncmFwaCBlZGdlXG5cbiAgICB2YXIgc291cmNlSXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFt0ZW1wRWRnZS5zb3VyY2VJZF07XG4gICAgdmFyIHRhcmdldEl4ID0gbGF5b3V0SW5mby5pZFRvSW5kZXhbdGVtcEVkZ2UudGFyZ2V0SWRdO1xuICAgIHZhciBzb3VyY2VHcmFwaCA9IGxheW91dEluZm8uaW5kZXhUb0dyYXBoW3NvdXJjZUl4XTtcbiAgICB2YXIgdGFyZ2V0R3JhcGggPSBsYXlvdXRJbmZvLmluZGV4VG9HcmFwaFt0YXJnZXRJeF07XG5cbiAgICBpZiAoc291cmNlR3JhcGggIT0gdGFyZ2V0R3JhcGgpIHtcbiAgICAgIC8vIEZpbmQgbG93ZXN0IGNvbW1vbiBncmFwaCBhbmNlc3RvclxuICAgICAgdmFyIGxjYSA9IGZpbmRMQ0EodGVtcEVkZ2Uuc291cmNlSWQsIHRlbXBFZGdlLnRhcmdldElkLCBsYXlvdXRJbmZvKTsgLy8gQ29tcHV0ZSBzdW0gb2Ygbm9kZSBkZXB0aHMsIHJlbGF0aXZlIHRvIGxjYSBncmFwaFxuXG4gICAgICB2YXIgbGNhR3JhcGggPSBsYXlvdXRJbmZvLmdyYXBoU2V0W2xjYV07XG4gICAgICB2YXIgZGVwdGggPSAwOyAvLyBTb3VyY2UgZGVwdGhcblxuICAgICAgdmFyIHRlbXBOb2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tzb3VyY2VJeF07XG5cbiAgICAgIHdoaWxlICgtMSA9PT0gbGNhR3JhcGguaW5kZXhPZih0ZW1wTm9kZS5pZCkpIHtcbiAgICAgICAgdGVtcE5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3RlbXBOb2RlLnBhcmVudElkXV07XG4gICAgICAgIGRlcHRoKys7XG4gICAgICB9IC8vIFRhcmdldCBkZXB0aFxuXG5cbiAgICAgIHRlbXBOb2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1t0YXJnZXRJeF07XG5cbiAgICAgIHdoaWxlICgtMSA9PT0gbGNhR3JhcGguaW5kZXhPZih0ZW1wTm9kZS5pZCkpIHtcbiAgICAgICAgdGVtcE5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3RlbXBOb2RlLnBhcmVudElkXV07XG4gICAgICAgIGRlcHRoKys7XG4gICAgICB9IC8vIGxvZ0RlYnVnKCdMQ0Egb2Ygbm9kZXMgJyArIHRlbXBFZGdlLnNvdXJjZUlkICsgJyBhbmQgJyArIHRlbXBFZGdlLnRhcmdldElkICtcbiAgICAgIC8vICBcIi4gSW5kZXg6IFwiICsgbGNhICsgXCIgQ29udGVudHM6IFwiICsgbGNhR3JhcGgudG9TdHJpbmcoKSArXG4gICAgICAvLyAgXCIuIERlcHRoOiBcIiArIGRlcHRoKTtcbiAgICAgIC8vIFVwZGF0ZSBpZGVhbExlbmd0aFxuXG5cbiAgICAgIGlkZWFsTGVuZ3RoICo9IGRlcHRoICogb3B0aW9ucy5uZXN0aW5nRmFjdG9yO1xuICAgIH1cblxuICAgIHRlbXBFZGdlLmlkZWFsTGVuZ3RoID0gaWRlYWxMZW5ndGg7XG4gICAgdGVtcEVkZ2UuZWxhc3RpY2l0eSA9IGVsYXN0aWNpdHk7XG4gICAgbGF5b3V0SW5mby5sYXlvdXRFZGdlcy5wdXNoKHRlbXBFZGdlKTtcbiAgfSAvLyBGaW5hbGx5LCByZXR1cm4gbGF5b3V0SW5mbyBvYmplY3RcblxuXG4gIHJldHVybiBsYXlvdXRJbmZvO1xufTtcbi8qKlxuICogQGJyaWVmIDogVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgaW5kZXggb2YgdGhlIGxvd2VzdCBjb21tb25cbiAqICAgICAgICAgIGdyYXBoIGFuY2VzdG9yIGJldHdlZW4gMiBub2RlcyBpbiB0aGUgc3VidHJlZVxuICogICAgICAgICAgKGZyb20gdGhlIGdyYXBoIGhpZXJhcmNoeSBpbmR1Y2VkIHRyZWUpIHdob3NlXG4gKiAgICAgICAgICByb290IGlzIGdyYXBoSXhcbiAqXG4gKiBAYXJnIG5vZGUxOiBub2RlMSdzIElEXG4gKiBAYXJnIG5vZGUyOiBub2RlMidzIElEXG4gKiBAYXJnIGxheW91dEluZm86IGxheW91dEluZm8gb2JqZWN0XG4gKlxuICovXG5cblxudmFyIGZpbmRMQ0EgPSBmdW5jdGlvbiBmaW5kTENBKG5vZGUxLCBub2RlMiwgbGF5b3V0SW5mbykge1xuICAvLyBGaW5kIHRoZWlyIGNvbW1vbiBhbmNlc3Rlciwgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCBncmFwaFxuICB2YXIgcmVzID0gZmluZExDQV9hdXgobm9kZTEsIG5vZGUyLCAwLCBsYXlvdXRJbmZvKTtcblxuICBpZiAoMiA+IHJlcy5jb3VudCkge1xuICAgIC8vIElmIGF1eCBmdW5jdGlvbiBjb3VsZG4ndCBmaW5kIHRoZSBjb21tb24gYW5jZXN0ZXIsXG4gICAgLy8gdGhlbiBpdCBpcyB0aGUgcm9vdCBncmFwaFxuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXMuZ3JhcGg7XG4gIH1cbn07XG4vKipcbiAqIEBicmllZiAgICAgICAgICA6IEF1eGlsaWFyeSBmdW5jdGlvbiB1c2VkIGZvciBMQ0EgY29tcHV0YXRpb25cbiAqXG4gKiBAYXJnIG5vZGUxICAgICAgOiBub2RlMSdzIElEXG4gKiBAYXJnIG5vZGUyICAgICAgOiBub2RlMidzIElEXG4gKiBAYXJnIGdyYXBoSXggICAgOiBzdWJncmFwaCBpbmRleFxuICogQGFyZyBsYXlvdXRJbmZvIDogbGF5b3V0SW5mbyBvYmplY3RcbiAqXG4gKiBAcmV0dXJuICAgICAgICAgOiBvYmplY3Qgb2YgdGhlIGZvcm0ge2NvdW50OiBYLCBncmFwaDogWX0sIHdoZXJlOlxuICogICAgICAgICAgICAgICAgICAgWCBpcyB0aGUgbnVtYmVyIG9mIGFuY2VzdGVycyAobWF4OiAyKSBmb3VuZCBpblxuICogICAgICAgICAgICAgICAgICAgZ3JhcGhJeCAoYW5kIGl0J3Mgc3ViZ3JhcGhzKSxcbiAqICAgICAgICAgICAgICAgICAgIFkgaXMgdGhlIGdyYXBoIGluZGV4IG9mIHRoZSBsb3dlc3QgZ3JhcGggY29udGFpbmluZ1xuICogICAgICAgICAgICAgICAgICAgYWxsIFggbm9kZXNcbiAqL1xuXG5cbnZhciBmaW5kTENBX2F1eCA9IGZ1bmN0aW9uIGZpbmRMQ0FfYXV4KG5vZGUxLCBub2RlMiwgZ3JhcGhJeCwgbGF5b3V0SW5mbykge1xuICB2YXIgZ3JhcGggPSBsYXlvdXRJbmZvLmdyYXBoU2V0W2dyYXBoSXhdOyAvLyBJZiBib3RoIG5vZGVzIGJlbG9uZ3MgdG8gZ3JhcGhJeFxuXG4gIGlmICgtMSA8IGdyYXBoLmluZGV4T2Yobm9kZTEpICYmIC0xIDwgZ3JhcGguaW5kZXhPZihub2RlMikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY291bnQ6IDIsXG4gICAgICBncmFwaDogZ3JhcGhJeFxuICAgIH07XG4gIH0gLy8gTWFrZSByZWN1cnNpdmUgY2FsbHMgZm9yIGFsbCBzdWJncmFwaHNcblxuXG4gIHZhciBjID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBoLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGVJZCA9IGdyYXBoW2ldO1xuICAgIHZhciBub2RlSXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlSWRdO1xuICAgIHZhciBjaGlsZHJlbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbm9kZUl4XS5jaGlsZHJlbjsgLy8gSWYgdGhlIG5vZGUgaGFzIG5vIGNoaWxkLCBza2lwIGl0XG5cbiAgICBpZiAoMCA9PT0gY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRHcmFwaEl4ID0gbGF5b3V0SW5mby5pbmRleFRvR3JhcGhbbGF5b3V0SW5mby5pZFRvSW5kZXhbY2hpbGRyZW5bMF1dXTtcbiAgICB2YXIgcmVzdWx0ID0gZmluZExDQV9hdXgobm9kZTEsIG5vZGUyLCBjaGlsZEdyYXBoSXgsIGxheW91dEluZm8pO1xuXG4gICAgaWYgKDAgPT09IHJlc3VsdC5jb3VudCkge1xuICAgICAgLy8gTmVpdGhlciBub2RlMSBub3Igbm9kZTIgYXJlIHByZXNlbnQgaW4gdGhpcyBzdWJncmFwaFxuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIGlmICgxID09PSByZXN1bHQuY291bnQpIHtcbiAgICAgIC8vIE9uZSBvZiAobm9kZTEsIG5vZGUyKSBpcyBwcmVzZW50IGluIHRoaXMgc3ViZ3JhcGhcbiAgICAgIGMrKztcblxuICAgICAgaWYgKDIgPT09IGMpIHtcbiAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBmb3VuZCBib3RoIG5vZGVzLCBubyBuZWVkIHRvIGtlZXAgc2VhcmNoaW5nXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIG5vZGVzIGFyZSBwcmVzZW50IGluIHRoaXMgc3ViZ3JhcGhcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb3VudDogYyxcbiAgICBncmFwaDogZ3JhcGhJeFxuICB9O1xufTtcbi8qKlxuICogQGJyaWVmOiBwcmludHNMYXlvdXRJbmZvIGludG8ganMgY29uc29sZVxuICogICAgICAgICBPbmx5IHVzZWQgZm9yIGRlYmJ1Z2luZ1xuICovXG5cblxuaWYgKGZhbHNlKSB7XG4gIHZhciBwcmludExheW91dEluZm87XG59XG4vKipcbiAqIEBicmllZiA6IFJhbmRvbWl6ZXMgdGhlIHBvc2l0aW9uIG9mIGFsbCBub2Rlc1xuICovXG5cblxudmFyIHJhbmRvbWl6ZVBvc2l0aW9ucyA9IGZ1bmN0aW9uIHJhbmRvbWl6ZVBvc2l0aW9ucyhsYXlvdXRJbmZvLCBjeSkge1xuICB2YXIgd2lkdGggPSBsYXlvdXRJbmZvLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gbGF5b3V0SW5mby5jbGllbnRIZWlnaHQ7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07IC8vIE5vIG5lZWQgdG8gcmFuZG9taXplIGNvbXBvdW5kIG5vZGVzIG9yIGxvY2tlZCBub2Rlc1xuXG4gICAgaWYgKDAgPT09IG4uY2hpbGRyZW4ubGVuZ3RoICYmICFuLmlzTG9ja2VkKSB7XG4gICAgICBuLnBvc2l0aW9uWCA9IE1hdGgucmFuZG9tKCkgKiB3aWR0aDtcbiAgICAgIG4ucG9zaXRpb25ZID0gTWF0aC5yYW5kb20oKSAqIGhlaWdodDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBnZXRTY2FsZUluQm91bmRzRm4gPSBmdW5jdGlvbiBnZXRTY2FsZUluQm91bmRzRm4obGF5b3V0SW5mbywgb3B0aW9ucywgbm9kZXMpIHtcbiAgdmFyIGJiID0gbGF5b3V0SW5mby5ib3VuZGluZ0JveDtcbiAgdmFyIGNvc2VCQiA9IHtcbiAgICB4MTogSW5maW5pdHksXG4gICAgeDI6IC1JbmZpbml0eSxcbiAgICB5MTogSW5maW5pdHksXG4gICAgeTI6IC1JbmZpbml0eVxuICB9O1xuXG4gIGlmIChvcHRpb25zLmJvdW5kaW5nQm94KSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIGxub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlLmRhdGEoJ2lkJyldXTtcbiAgICAgIGNvc2VCQi54MSA9IE1hdGgubWluKGNvc2VCQi54MSwgbG5vZGUucG9zaXRpb25YKTtcbiAgICAgIGNvc2VCQi54MiA9IE1hdGgubWF4KGNvc2VCQi54MiwgbG5vZGUucG9zaXRpb25YKTtcbiAgICAgIGNvc2VCQi55MSA9IE1hdGgubWluKGNvc2VCQi55MSwgbG5vZGUucG9zaXRpb25ZKTtcbiAgICAgIGNvc2VCQi55MiA9IE1hdGgubWF4KGNvc2VCQi55MiwgbG5vZGUucG9zaXRpb25ZKTtcbiAgICB9KTtcbiAgICBjb3NlQkIudyA9IGNvc2VCQi54MiAtIGNvc2VCQi54MTtcbiAgICBjb3NlQkIuaCA9IGNvc2VCQi55MiAtIGNvc2VCQi55MTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoZWxlLCBpKSB7XG4gICAgdmFyIGxub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtlbGUuZGF0YSgnaWQnKV1dO1xuXG4gICAgaWYgKG9wdGlvbnMuYm91bmRpbmdCb3gpIHtcbiAgICAgIC8vIHRoZW4gYWRkIGV4dHJhIGJvdW5kaW5nIGJveCBjb25zdHJhaW50XG4gICAgICB2YXIgcGN0WCA9IChsbm9kZS5wb3NpdGlvblggLSBjb3NlQkIueDEpIC8gY29zZUJCLnc7XG4gICAgICB2YXIgcGN0WSA9IChsbm9kZS5wb3NpdGlvblkgLSBjb3NlQkIueTEpIC8gY29zZUJCLmg7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYi54MSArIHBjdFggKiBiYi53LFxuICAgICAgICB5OiBiYi55MSArIHBjdFkgKiBiYi5oXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBsbm9kZS5wb3NpdGlvblgsXG4gICAgICAgIHk6IGxub2RlLnBvc2l0aW9uWVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuLyoqXG4gKiBAYnJpZWYgICAgICAgICAgOiBVcGRhdGVzIHRoZSBwb3NpdGlvbnMgb2Ygbm9kZXMgaW4gdGhlIG5ldHdvcmtcbiAqIEBhcmcgbGF5b3V0SW5mbyA6IExheW91dEluZm8gb2JqZWN0XG4gKiBAYXJnIGN5ICAgICAgICAgOiBDeXRvc2NhcGUgb2JqZWN0XG4gKiBAYXJnIG9wdGlvbnMgICAgOiBMYXlvdXQgb3B0aW9uc1xuICovXG5cblxudmFyIHJlZnJlc2hQb3NpdGlvbnMgPSBmdW5jdGlvbiByZWZyZXNoUG9zaXRpb25zKGxheW91dEluZm8sIGN5LCBvcHRpb25zKSB7XG4gIC8vIHZhciBzID0gJ1JlZnJlc2hpbmcgcG9zaXRpb25zJztcbiAgLy8gbG9nRGVidWcocyk7XG4gIHZhciBsYXlvdXQgPSBvcHRpb25zLmxheW91dDtcbiAgdmFyIG5vZGVzID0gb3B0aW9ucy5lbGVzLm5vZGVzKCk7XG4gIHZhciBnZXRTY2FsZWRQb3MgPSBnZXRTY2FsZUluQm91bmRzRm4obGF5b3V0SW5mbywgb3B0aW9ucywgbm9kZXMpO1xuICBub2Rlcy5wb3NpdGlvbnMoZ2V0U2NhbGVkUG9zKTsgLy8gVHJpZ2dlciBsYXlvdXRSZWFkeSBvbmx5IG9uIGZpcnN0IGNhbGxcblxuICBpZiAodHJ1ZSAhPT0gbGF5b3V0SW5mby5yZWFkeSkge1xuICAgIC8vIHMgPSAnVHJpZ2dlcmluZyBsYXlvdXRyZWFkeSc7XG4gICAgLy8gbG9nRGVidWcocyk7XG4gICAgbGF5b3V0SW5mby5yZWFkeSA9IHRydWU7XG4gICAgbGF5b3V0Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICBsYXlvdXQuZW1pdCh7XG4gICAgICB0eXBlOiAnbGF5b3V0cmVhZHknLFxuICAgICAgbGF5b3V0OiB0aGlzXG4gICAgfSk7XG4gIH1cbn07XG4vKipcbiAqIEBicmllZiA6IExvZ3MgYSBkZWJ1ZyBtZXNzYWdlIGluIEpTIGNvbnNvbGUsIGlmIERFQlVHIGlzIE9OXG4gKi9cbi8vIHZhciBsb2dEZWJ1ZyA9IGZ1bmN0aW9uKHRleHQpIHtcbi8vICAgaWYgKERFQlVHKSB7XG4vLyAgICAgY29uc29sZS5kZWJ1Zyh0ZXh0KTtcbi8vICAgfVxuLy8gfTtcblxuLyoqXG4gKiBAYnJpZWYgICAgICAgICAgOiBQZXJmb3JtcyBvbmUgaXRlcmF0aW9uIG9mIHRoZSBwaHlzaWNhbCBzaW11bGF0aW9uXG4gKiBAYXJnIGxheW91dEluZm8gOiBMYXlvdXRJbmZvIG9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkXG4gKiBAYXJnIGN5ICAgICAgICAgOiBDeXRvc2NhcGUgb2JqZWN0XG4gKiBAYXJnIG9wdGlvbnMgICAgOiBMYXlvdXQgb3B0aW9uc1xuICovXG5cblxudmFyIHN0ZXAkMSA9IGZ1bmN0aW9uIHN0ZXAobGF5b3V0SW5mbywgb3B0aW9ucywgX3N0ZXApIHtcbiAgLy8gdmFyIHMgPSBcIlxcblxcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcIjtcbiAgLy8gcyArPSBcIlxcblNURVA6IFwiICsgc3RlcDtcbiAgLy8gcyArPSBcIlxcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcXG5cIjtcbiAgLy8gbG9nRGVidWcocyk7XG4gIC8vIENhbGN1bGF0ZSBub2RlIHJlcHVsc2lvbnNcbiAgY2FsY3VsYXRlTm9kZUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKTsgLy8gQ2FsY3VsYXRlIGVkZ2UgZm9yY2VzXG5cbiAgY2FsY3VsYXRlRWRnZUZvcmNlcyhsYXlvdXRJbmZvKTsgLy8gQ2FsY3VsYXRlIGdyYXZpdHkgZm9yY2VzXG5cbiAgY2FsY3VsYXRlR3Jhdml0eUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKTsgLy8gUHJvcGFnYXRlIGZvcmNlcyBmcm9tIHBhcmVudCB0byBjaGlsZFxuXG4gIHByb3BhZ2F0ZUZvcmNlcyhsYXlvdXRJbmZvKTsgLy8gVXBkYXRlIHBvc2l0aW9ucyBiYXNlZCBvbiBjYWxjdWxhdGVkIGZvcmNlc1xuXG4gIHVwZGF0ZVBvc2l0aW9ucyhsYXlvdXRJbmZvKTtcbn07XG4vKipcbiAqIEBicmllZiA6IENvbXB1dGVzIHRoZSBub2RlIHJlcHVsc2lvbiBmb3JjZXNcbiAqL1xuXG5cbnZhciBjYWxjdWxhdGVOb2RlRm9yY2VzID0gZnVuY3Rpb24gY2FsY3VsYXRlTm9kZUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIC8vIEdvIHRocm91Z2ggZWFjaCBvZiB0aGUgZ3JhcGhzIGluIGdyYXBoU2V0XG4gIC8vIE5vZGVzIG9ubHkgcmVwZWwgZWFjaCBvdGhlciBpZiB0aGV5IGJlbG9uZyB0byB0aGUgc2FtZSBncmFwaFxuICAvLyB2YXIgcyA9ICdjYWxjdWxhdGVOb2RlRm9yY2VzJztcbiAgLy8gbG9nRGVidWcocyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ncmFwaFNldC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBncmFwaCA9IGxheW91dEluZm8uZ3JhcGhTZXRbaV07XG4gICAgdmFyIG51bU5vZGVzID0gZ3JhcGgubGVuZ3RoOyAvLyBzID0gXCJTZXQ6IFwiICsgZ3JhcGgudG9TdHJpbmcoKTtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAvLyBOb3cgZ2V0IGFsbCB0aGUgcGFpcnMgb2Ygbm9kZXNcbiAgICAvLyBPbmx5IGdldCBlYWNoIHBhaXIgb25jZSwgKEEsIEIpID0gKEIsIEEpXG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bU5vZGVzOyBqKyspIHtcbiAgICAgIHZhciBub2RlMSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbZ3JhcGhbal1dXTtcblxuICAgICAgZm9yICh2YXIgayA9IGogKyAxOyBrIDwgbnVtTm9kZXM7IGsrKykge1xuICAgICAgICB2YXIgbm9kZTIgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W2dyYXBoW2tdXV07XG4gICAgICAgIG5vZGVSZXB1bHNpb24obm9kZTEsIG5vZGUyLCBsYXlvdXRJbmZvLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciByYW5kb21EaXN0YW5jZSA9IGZ1bmN0aW9uIHJhbmRvbURpc3RhbmNlKG1heCkge1xuICByZXR1cm4gLW1heCArIDIgKiBtYXggKiBNYXRoLnJhbmRvbSgpO1xufTtcbi8qKlxuICogQGJyaWVmIDogQ29tcHV0ZSB0aGUgbm9kZSByZXB1bHNpb24gZm9yY2VzIGJldHdlZW4gYSBwYWlyIG9mIG5vZGVzXG4gKi9cblxuXG52YXIgbm9kZVJlcHVsc2lvbiA9IGZ1bmN0aW9uIG5vZGVSZXB1bHNpb24obm9kZTEsIG5vZGUyLCBsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIC8vIHZhciBzID0gXCJOb2RlIHJlcHVsc2lvbi4gTm9kZTE6IFwiICsgbm9kZTEuaWQgKyBcIiBOb2RlMjogXCIgKyBub2RlMi5pZDtcbiAgdmFyIGNtcHRJZDEgPSBub2RlMS5jbXB0SWQ7XG4gIHZhciBjbXB0SWQyID0gbm9kZTIuY21wdElkO1xuXG4gIGlmIChjbXB0SWQxICE9PSBjbXB0SWQyICYmICFsYXlvdXRJbmZvLmlzQ29tcG91bmQpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gR2V0IGRpcmVjdGlvbiBvZiBsaW5lIGNvbm5lY3RpbmcgYm90aCBub2RlIGNlbnRlcnNcblxuXG4gIHZhciBkaXJlY3Rpb25YID0gbm9kZTIucG9zaXRpb25YIC0gbm9kZTEucG9zaXRpb25YO1xuICB2YXIgZGlyZWN0aW9uWSA9IG5vZGUyLnBvc2l0aW9uWSAtIG5vZGUxLnBvc2l0aW9uWTtcbiAgdmFyIG1heFJhbmREaXN0ID0gMTsgLy8gcyArPSBcIlxcbmRpcmVjdGlvblg6IFwiICsgZGlyZWN0aW9uWCArIFwiLCBkaXJlY3Rpb25ZOiBcIiArIGRpcmVjdGlvblk7XG4gIC8vIElmIGJvdGggY2VudGVycyBhcmUgdGhlIHNhbWUsIGFwcGx5IGEgcmFuZG9tIGZvcmNlXG5cbiAgaWYgKDAgPT09IGRpcmVjdGlvblggJiYgMCA9PT0gZGlyZWN0aW9uWSkge1xuICAgIGRpcmVjdGlvblggPSByYW5kb21EaXN0YW5jZShtYXhSYW5kRGlzdCk7XG4gICAgZGlyZWN0aW9uWSA9IHJhbmRvbURpc3RhbmNlKG1heFJhbmREaXN0KTtcbiAgfVxuXG4gIHZhciBvdmVybGFwID0gbm9kZXNPdmVybGFwKG5vZGUxLCBub2RlMiwgZGlyZWN0aW9uWCwgZGlyZWN0aW9uWSk7XG5cbiAgaWYgKG92ZXJsYXAgPiAwKSB7XG4gICAgLy8gcyArPSBcIlxcbk5vZGVzIERPIG92ZXJsYXAuXCI7XG4gICAgLy8gcyArPSBcIlxcbk92ZXJsYXA6IFwiICsgb3ZlcmxhcDtcbiAgICAvLyBJZiBub2RlcyBvdmVybGFwLCByZXB1bHNpb24gZm9yY2UgaXMgcHJvcG9ydGlvbmFsXG4gICAgLy8gdG8gdGhlIG92ZXJsYXBcbiAgICB2YXIgZm9yY2UgPSBvcHRpb25zLm5vZGVPdmVybGFwICogb3ZlcmxhcDsgLy8gQ29tcHV0ZSB0aGUgbW9kdWxlIGFuZCBjb21wb25lbnRzIG9mIHRoZSBmb3JjZSB2ZWN0b3JcblxuICAgIHZhciBkaXN0YW5jZSA9IE1hdGguc3FydChkaXJlY3Rpb25YICogZGlyZWN0aW9uWCArIGRpcmVjdGlvblkgKiBkaXJlY3Rpb25ZKTsgLy8gcyArPSBcIlxcbkRpc3RhbmNlOiBcIiArIGRpc3RhbmNlO1xuXG4gICAgdmFyIGZvcmNlWCA9IGZvcmNlICogZGlyZWN0aW9uWCAvIGRpc3RhbmNlO1xuICAgIHZhciBmb3JjZVkgPSBmb3JjZSAqIGRpcmVjdGlvblkgLyBkaXN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBzICs9IFwiXFxuTm9kZXMgZG8gTk9UIG92ZXJsYXAuXCI7XG4gICAgLy8gSWYgdGhlcmUncyBubyBvdmVybGFwLCBmb3JjZSBpcyBpbnZlcnNlbHkgcHJvcG9ydGlvbmFsXG4gICAgLy8gdG8gc3F1YXJlZCBkaXN0YW5jZVxuICAgIC8vIEdldCBjbGlwcGluZyBwb2ludHMgZm9yIGJvdGggbm9kZXNcbiAgICB2YXIgcG9pbnQxID0gZmluZENsaXBwaW5nUG9pbnQobm9kZTEsIGRpcmVjdGlvblgsIGRpcmVjdGlvblkpO1xuICAgIHZhciBwb2ludDIgPSBmaW5kQ2xpcHBpbmdQb2ludChub2RlMiwgLTEgKiBkaXJlY3Rpb25YLCAtMSAqIGRpcmVjdGlvblkpOyAvLyBVc2UgY2xpcHBpbmcgcG9pbnRzIHRvIGNvbXB1dGUgZGlzdGFuY2VcblxuICAgIHZhciBkaXN0YW5jZVggPSBwb2ludDIueCAtIHBvaW50MS54O1xuICAgIHZhciBkaXN0YW5jZVkgPSBwb2ludDIueSAtIHBvaW50MS55O1xuICAgIHZhciBkaXN0YW5jZVNxciA9IGRpc3RhbmNlWCAqIGRpc3RhbmNlWCArIGRpc3RhbmNlWSAqIGRpc3RhbmNlWTtcbiAgICB2YXIgZGlzdGFuY2UgPSBNYXRoLnNxcnQoZGlzdGFuY2VTcXIpOyAvLyBzICs9IFwiXFxuRGlzdGFuY2U6IFwiICsgZGlzdGFuY2U7XG4gICAgLy8gQ29tcHV0ZSB0aGUgbW9kdWxlIGFuZCBjb21wb25lbnRzIG9mIHRoZSBmb3JjZSB2ZWN0b3JcblxuICAgIHZhciBmb3JjZSA9IChub2RlMS5ub2RlUmVwdWxzaW9uICsgbm9kZTIubm9kZVJlcHVsc2lvbikgLyBkaXN0YW5jZVNxcjtcbiAgICB2YXIgZm9yY2VYID0gZm9yY2UgKiBkaXN0YW5jZVggLyBkaXN0YW5jZTtcbiAgICB2YXIgZm9yY2VZID0gZm9yY2UgKiBkaXN0YW5jZVkgLyBkaXN0YW5jZTtcbiAgfSAvLyBBcHBseSBmb3JjZVxuXG5cbiAgaWYgKCFub2RlMS5pc0xvY2tlZCkge1xuICAgIG5vZGUxLm9mZnNldFggLT0gZm9yY2VYO1xuICAgIG5vZGUxLm9mZnNldFkgLT0gZm9yY2VZO1xuICB9XG5cbiAgaWYgKCFub2RlMi5pc0xvY2tlZCkge1xuICAgIG5vZGUyLm9mZnNldFggKz0gZm9yY2VYO1xuICAgIG5vZGUyLm9mZnNldFkgKz0gZm9yY2VZO1xuICB9IC8vIHMgKz0gXCJcXG5Gb3JjZVg6IFwiICsgZm9yY2VYICsgXCIgRm9yY2VZOiBcIiArIGZvcmNlWTtcbiAgLy8gbG9nRGVidWcocyk7XG5cblxuICByZXR1cm47XG59O1xuLyoqXG4gKiBAYnJpZWYgIDogRGV0ZXJtaW5lcyB3aGV0aGVyIHR3byBub2RlcyBvdmVybGFwIG9yIG5vdFxuICogQHJldHVybiA6IEFtb3VudCBvZiBvdmVybGFwcGluZyAoMCA9PiBubyBvdmVybGFwKVxuICovXG5cblxudmFyIG5vZGVzT3ZlcmxhcCA9IGZ1bmN0aW9uIG5vZGVzT3ZlcmxhcChub2RlMSwgbm9kZTIsIGRYLCBkWSkge1xuICBpZiAoZFggPiAwKSB7XG4gICAgdmFyIG92ZXJsYXBYID0gbm9kZTEubWF4WCAtIG5vZGUyLm1pblg7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG92ZXJsYXBYID0gbm9kZTIubWF4WCAtIG5vZGUxLm1pblg7XG4gIH1cblxuICBpZiAoZFkgPiAwKSB7XG4gICAgdmFyIG92ZXJsYXBZID0gbm9kZTEubWF4WSAtIG5vZGUyLm1pblk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG92ZXJsYXBZID0gbm9kZTIubWF4WSAtIG5vZGUxLm1pblk7XG4gIH1cblxuICBpZiAob3ZlcmxhcFggPj0gMCAmJiBvdmVybGFwWSA+PSAwKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydChvdmVybGFwWCAqIG92ZXJsYXBYICsgb3ZlcmxhcFkgKiBvdmVybGFwWSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG4vKipcbiAqIEBicmllZiA6IEZpbmRzIHRoZSBwb2ludCBpbiB3aGljaCBhbiBlZGdlIChkaXJlY3Rpb24gZFgsIGRZKSBpbnRlcnNlY3RzXG4gKiAgICAgICAgICB0aGUgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IG9mIGl0J3Mgc291cmNlL3RhcmdldCBub2RlXG4gKi9cblxuXG52YXIgZmluZENsaXBwaW5nUG9pbnQgPSBmdW5jdGlvbiBmaW5kQ2xpcHBpbmdQb2ludChub2RlLCBkWCwgZFkpIHtcbiAgLy8gU2hvcmN1dHNcbiAgdmFyIFggPSBub2RlLnBvc2l0aW9uWDtcbiAgdmFyIFkgPSBub2RlLnBvc2l0aW9uWTtcbiAgdmFyIEggPSBub2RlLmhlaWdodCB8fCAxO1xuICB2YXIgVyA9IG5vZGUud2lkdGggfHwgMTtcbiAgdmFyIGRpclNsb3BlID0gZFkgLyBkWDtcbiAgdmFyIG5vZGVTbG9wZSA9IEggLyBXOyAvLyB2YXIgcyA9ICdDb21wdXRpbmcgY2xpcHBpbmcgcG9pbnQgb2Ygbm9kZSAnICsgbm9kZS5pZCArXG4gIC8vICAgXCIgLiBIZWlnaHQ6ICBcIiArIEggKyBcIiwgV2lkdGg6IFwiICsgVyArXG4gIC8vICAgXCJcXG5EaXJlY3Rpb24gXCIgKyBkWCArIFwiLCBcIiArIGRZO1xuICAvL1xuICAvLyBDb21wdXRlIGludGVyc2VjdGlvblxuXG4gIHZhciByZXMgPSB7fTsgLy8gQ2FzZTogVmVydGljYWwgZGlyZWN0aW9uICh1cClcblxuICBpZiAoMCA9PT0gZFggJiYgMCA8IGRZKSB7XG4gICAgcmVzLnggPSBYOyAvLyBzICs9IFwiXFxuVXAgZGlyZWN0aW9uXCI7XG5cbiAgICByZXMueSA9IFkgKyBIIC8gMjtcbiAgICByZXR1cm4gcmVzO1xuICB9IC8vIENhc2U6IFZlcnRpY2FsIGRpcmVjdGlvbiAoZG93bilcblxuXG4gIGlmICgwID09PSBkWCAmJiAwID4gZFkpIHtcbiAgICByZXMueCA9IFg7XG4gICAgcmVzLnkgPSBZICsgSCAvIDI7IC8vIHMgKz0gXCJcXG5Eb3duIGRpcmVjdGlvblwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSByaWdodCBib3JkZXJcblxuXG4gIGlmICgwIDwgZFggJiYgLTEgKiBub2RlU2xvcGUgPD0gZGlyU2xvcGUgJiYgZGlyU2xvcGUgPD0gbm9kZVNsb3BlKSB7XG4gICAgcmVzLnggPSBYICsgVyAvIDI7XG4gICAgcmVzLnkgPSBZICsgVyAqIGRZIC8gMiAvIGRYOyAvLyBzICs9IFwiXFxuUmlnaHRib3JkZXJcIjtcblxuICAgIHJldHVybiByZXM7XG4gIH0gLy8gQ2FzZTogSW50ZXJzZWN0cyB0aGUgbGVmdCBib3JkZXJcblxuXG4gIGlmICgwID4gZFggJiYgLTEgKiBub2RlU2xvcGUgPD0gZGlyU2xvcGUgJiYgZGlyU2xvcGUgPD0gbm9kZVNsb3BlKSB7XG4gICAgcmVzLnggPSBYIC0gVyAvIDI7XG4gICAgcmVzLnkgPSBZIC0gVyAqIGRZIC8gMiAvIGRYOyAvLyBzICs9IFwiXFxuTGVmdGJvcmRlclwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSB0b3AgYm9yZGVyXG5cblxuICBpZiAoMCA8IGRZICYmIChkaXJTbG9wZSA8PSAtMSAqIG5vZGVTbG9wZSB8fCBkaXJTbG9wZSA+PSBub2RlU2xvcGUpKSB7XG4gICAgcmVzLnggPSBYICsgSCAqIGRYIC8gMiAvIGRZO1xuICAgIHJlcy55ID0gWSArIEggLyAyOyAvLyBzICs9IFwiXFxuVG9wIGJvcmRlclwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSBib3R0b20gYm9yZGVyXG5cblxuICBpZiAoMCA+IGRZICYmIChkaXJTbG9wZSA8PSAtMSAqIG5vZGVTbG9wZSB8fCBkaXJTbG9wZSA+PSBub2RlU2xvcGUpKSB7XG4gICAgcmVzLnggPSBYIC0gSCAqIGRYIC8gMiAvIGRZO1xuICAgIHJlcy55ID0gWSAtIEggLyAyOyAvLyBzICs9IFwiXFxuQm90dG9tIGJvcmRlclwiO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSAvLyBzICs9IFwiXFxuQ2xpcHBpbmcgcG9pbnQgZm91bmQgYXQgXCIgKyByZXMueCArIFwiLCBcIiArIHJlcy55O1xuICAvLyBsb2dEZWJ1ZyhzKTtcblxuXG4gIHJldHVybiByZXM7XG59O1xuLyoqXG4gKiBAYnJpZWYgOiBDYWxjdWxhdGVzIGFsbCBlZGdlIGZvcmNlc1xuICovXG5cblxudmFyIGNhbGN1bGF0ZUVkZ2VGb3JjZXMgPSBmdW5jdGlvbiBjYWxjdWxhdGVFZGdlRm9yY2VzKGxheW91dEluZm8sIG9wdGlvbnMpIHtcbiAgLy8gSXRlcmF0ZSBvdmVyIGFsbCBlZGdlc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxheW91dEluZm8uZWRnZVNpemU7IGkrKykge1xuICAgIC8vIEdldCBlZGdlLCBzb3VyY2UgJiB0YXJnZXQgbm9kZXNcbiAgICB2YXIgZWRnZSA9IGxheW91dEluZm8ubGF5b3V0RWRnZXNbaV07XG4gICAgdmFyIHNvdXJjZUl4ID0gbGF5b3V0SW5mby5pZFRvSW5kZXhbZWRnZS5zb3VyY2VJZF07XG4gICAgdmFyIHNvdXJjZSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbc291cmNlSXhdO1xuICAgIHZhciB0YXJnZXRJeCA9IGxheW91dEluZm8uaWRUb0luZGV4W2VkZ2UudGFyZ2V0SWRdO1xuICAgIHZhciB0YXJnZXQgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW3RhcmdldEl4XTsgLy8gR2V0IGRpcmVjdGlvbiBvZiBsaW5lIGNvbm5lY3RpbmcgYm90aCBub2RlIGNlbnRlcnNcblxuICAgIHZhciBkaXJlY3Rpb25YID0gdGFyZ2V0LnBvc2l0aW9uWCAtIHNvdXJjZS5wb3NpdGlvblg7XG4gICAgdmFyIGRpcmVjdGlvblkgPSB0YXJnZXQucG9zaXRpb25ZIC0gc291cmNlLnBvc2l0aW9uWTsgLy8gSWYgYm90aCBjZW50ZXJzIGFyZSB0aGUgc2FtZSwgZG8gbm90aGluZy5cbiAgICAvLyBBIHJhbmRvbSBmb3JjZSBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQgYXMgbm9kZSByZXB1bHNpb25cblxuICAgIGlmICgwID09PSBkaXJlY3Rpb25YICYmIDAgPT09IGRpcmVjdGlvblkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gR2V0IGNsaXBwaW5nIHBvaW50cyBmb3IgYm90aCBub2Rlc1xuXG5cbiAgICB2YXIgcG9pbnQxID0gZmluZENsaXBwaW5nUG9pbnQoc291cmNlLCBkaXJlY3Rpb25YLCBkaXJlY3Rpb25ZKTtcbiAgICB2YXIgcG9pbnQyID0gZmluZENsaXBwaW5nUG9pbnQodGFyZ2V0LCAtMSAqIGRpcmVjdGlvblgsIC0xICogZGlyZWN0aW9uWSk7XG4gICAgdmFyIGx4ID0gcG9pbnQyLnggLSBwb2ludDEueDtcbiAgICB2YXIgbHkgPSBwb2ludDIueSAtIHBvaW50MS55O1xuICAgIHZhciBsID0gTWF0aC5zcXJ0KGx4ICogbHggKyBseSAqIGx5KTtcbiAgICB2YXIgZm9yY2UgPSBNYXRoLnBvdyhlZGdlLmlkZWFsTGVuZ3RoIC0gbCwgMikgLyBlZGdlLmVsYXN0aWNpdHk7XG5cbiAgICBpZiAoMCAhPT0gbCkge1xuICAgICAgdmFyIGZvcmNlWCA9IGZvcmNlICogbHggLyBsO1xuICAgICAgdmFyIGZvcmNlWSA9IGZvcmNlICogbHkgLyBsO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZm9yY2VYID0gMDtcbiAgICAgIHZhciBmb3JjZVkgPSAwO1xuICAgIH0gLy8gQWRkIHRoaXMgZm9yY2UgdG8gdGFyZ2V0IGFuZCBzb3VyY2Ugbm9kZXNcblxuXG4gICAgaWYgKCFzb3VyY2UuaXNMb2NrZWQpIHtcbiAgICAgIHNvdXJjZS5vZmZzZXRYICs9IGZvcmNlWDtcbiAgICAgIHNvdXJjZS5vZmZzZXRZICs9IGZvcmNlWTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldC5pc0xvY2tlZCkge1xuICAgICAgdGFyZ2V0Lm9mZnNldFggLT0gZm9yY2VYO1xuICAgICAgdGFyZ2V0Lm9mZnNldFkgLT0gZm9yY2VZO1xuICAgIH0gLy8gdmFyIHMgPSAnRWRnZSBmb3JjZSBiZXR3ZWVuIG5vZGVzICcgKyBzb3VyY2UuaWQgKyAnIGFuZCAnICsgdGFyZ2V0LmlkO1xuICAgIC8vIHMgKz0gXCJcXG5EaXN0YW5jZTogXCIgKyBsICsgXCIgRm9yY2U6IChcIiArIGZvcmNlWCArIFwiLCBcIiArIGZvcmNlWSArIFwiKVwiO1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuXG4gIH1cbn07XG4vKipcbiAqIEBicmllZiA6IENvbXB1dGVzIGdyYXZpdHkgZm9yY2VzIGZvciBhbGwgbm9kZXNcbiAqL1xuXG5cbnZhciBjYWxjdWxhdGVHcmF2aXR5Rm9yY2VzID0gZnVuY3Rpb24gY2FsY3VsYXRlR3Jhdml0eUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLmdyYXZpdHkgPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZGlzdFRocmVzaG9sZCA9IDE7IC8vIHZhciBzID0gJ2NhbGN1bGF0ZUdyYXZpdHlGb3JjZXMnO1xuICAvLyBsb2dEZWJ1ZyhzKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxheW91dEluZm8uZ3JhcGhTZXQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZ3JhcGggPSBsYXlvdXRJbmZvLmdyYXBoU2V0W2ldO1xuICAgIHZhciBudW1Ob2RlcyA9IGdyYXBoLmxlbmd0aDsgLy8gcyA9IFwiU2V0OiBcIiArIGdyYXBoLnRvU3RyaW5nKCk7XG4gICAgLy8gbG9nRGVidWcocyk7XG4gICAgLy8gQ29tcHV0ZSBncmFwaCBjZW50ZXJcblxuICAgIGlmICgwID09PSBpKSB7XG4gICAgICB2YXIgY2VudGVyWCA9IGxheW91dEluZm8uY2xpZW50SGVpZ2h0IC8gMjtcbiAgICAgIHZhciBjZW50ZXJZID0gbGF5b3V0SW5mby5jbGllbnRXaWR0aCAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEdldCBQYXJlbnQgbm9kZSBmb3IgdGhpcyBncmFwaCwgYW5kIHVzZSBpdHMgcG9zaXRpb24gYXMgY2VudGVyXG4gICAgICB2YXIgdGVtcCA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbZ3JhcGhbMF1dXTtcbiAgICAgIHZhciBwYXJlbnQgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3RlbXAucGFyZW50SWRdXTtcbiAgICAgIHZhciBjZW50ZXJYID0gcGFyZW50LnBvc2l0aW9uWDtcbiAgICAgIHZhciBjZW50ZXJZID0gcGFyZW50LnBvc2l0aW9uWTtcbiAgICB9IC8vIHMgPSBcIkNlbnRlciBmb3VuZCBhdDogXCIgKyBjZW50ZXJYICsgXCIsIFwiICsgY2VudGVyWTtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAvLyBBcHBseSBmb3JjZSB0byBhbGwgbm9kZXMgaW4gZ3JhcGhcblxuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1Ob2RlczsgaisrKSB7XG4gICAgICB2YXIgbm9kZSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbZ3JhcGhbal1dXTsgLy8gcyA9IFwiTm9kZTogXCIgKyBub2RlLmlkO1xuXG4gICAgICBpZiAobm9kZS5pc0xvY2tlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGR4ID0gY2VudGVyWCAtIG5vZGUucG9zaXRpb25YO1xuICAgICAgdmFyIGR5ID0gY2VudGVyWSAtIG5vZGUucG9zaXRpb25ZO1xuICAgICAgdmFyIGQgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuXG4gICAgICBpZiAoZCA+IGRpc3RUaHJlc2hvbGQpIHtcbiAgICAgICAgdmFyIGZ4ID0gb3B0aW9ucy5ncmF2aXR5ICogZHggLyBkO1xuICAgICAgICB2YXIgZnkgPSBvcHRpb25zLmdyYXZpdHkgKiBkeSAvIGQ7XG4gICAgICAgIG5vZGUub2Zmc2V0WCArPSBmeDtcbiAgICAgICAgbm9kZS5vZmZzZXRZICs9IGZ5OyAvLyBzICs9IFwiOiBBcHBsaWVkIGZvcmNlOiBcIiArIGZ4ICsgXCIsIFwiICsgZnk7XG4gICAgICB9IC8vIHMgKz0gXCI6IHNreXBwZWQgc2luY2UgaXQncyB0b28gY2xvc2UgdG8gY2VudGVyXCI7XG4gICAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuXG4gICAgfVxuICB9XG59O1xuLyoqXG4gKiBAYnJpZWYgICAgICAgICAgOiBUaGlzIGZ1bmN0aW9uIHByb3BhZ2F0ZXMgdGhlIGV4aXN0aW5nIG9mZnNldHMgZnJvbVxuICogICAgICAgICAgICAgICAgICAgcGFyZW50IG5vZGVzIHRvIGl0cyBkZXNjZW5kZW50cy5cbiAqIEBhcmcgbGF5b3V0SW5mbyA6IGxheW91dEluZm8gT2JqZWN0XG4gKiBAYXJnIGN5ICAgICAgICAgOiBjeXRvc2NhcGUgT2JqZWN0XG4gKiBAYXJnIG9wdGlvbnMgICAgOiBMYXlvdXQgb3B0aW9uc1xuICovXG5cblxudmFyIHByb3BhZ2F0ZUZvcmNlcyA9IGZ1bmN0aW9uIHByb3BhZ2F0ZUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gIC8vIElubGluZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHF1ZXVlLCB1c2VkIGZvciB0cmF2ZXJzaW5nIHRoZSBncmFwaCBpbiBCRlMgb3JkZXJcbiAgdmFyIHF1ZXVlID0gW107XG4gIHZhciBzdGFydCA9IDA7IC8vIFBvaW50cyB0byB0aGUgc3RhcnQgdGhlIHF1ZXVlXG5cbiAgdmFyIGVuZCA9IC0xOyAvLyBQb2ludHMgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWVcbiAgLy8gbG9nRGVidWcoJ3Byb3BhZ2F0ZUZvcmNlcycpO1xuICAvLyBTdGFydCBieSB2aXNpdGluZyB0aGUgbm9kZXMgaW4gdGhlIHJvb3QgZ3JhcGhcblxuICBxdWV1ZS5wdXNoLmFwcGx5KHF1ZXVlLCBsYXlvdXRJbmZvLmdyYXBoU2V0WzBdKTtcbiAgZW5kICs9IGxheW91dEluZm8uZ3JhcGhTZXRbMF0ubGVuZ3RoOyAvLyBUcmF2ZXJzZSB0aGUgZ3JhcGgsIGxldmVsIGJ5IGxldmVsLFxuXG4gIHdoaWxlIChzdGFydCA8PSBlbmQpIHtcbiAgICAvLyBHZXQgdGhlIG5vZGUgdG8gdmlzaXQgYW5kIHJlbW92ZSBpdCBmcm9tIHF1ZXVlXG4gICAgdmFyIG5vZGVJZCA9IHF1ZXVlW3N0YXJ0KytdO1xuICAgIHZhciBub2RlSW5kZXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlSWRdO1xuICAgIHZhciBub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tub2RlSW5kZXhdO1xuICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47IC8vIFdlIG9ubHkgbmVlZCB0byBwcm9jZXNzIHRoZSBub2RlIGlmIGl0J3MgY29tcG91bmRcblxuICAgIGlmICgwIDwgY2hpbGRyZW4ubGVuZ3RoICYmICFub2RlLmlzTG9ja2VkKSB7XG4gICAgICB2YXIgb2ZmWCA9IG5vZGUub2Zmc2V0WDtcbiAgICAgIHZhciBvZmZZID0gbm9kZS5vZmZzZXRZOyAvLyB2YXIgcyA9IFwiUHJvcGFnYXRpbmcgb2Zmc2V0IGZyb20gcGFyZW50IG5vZGUgOiBcIiArIG5vZGUuaWQgK1xuICAgICAgLy8gICBcIi4gT2Zmc2V0WDogXCIgKyBvZmZYICsgXCIuIE9mZnNldFk6IFwiICsgb2ZmWTtcbiAgICAgIC8vIHMgKz0gXCJcXG4gQ2hpbGRyZW46IFwiICsgY2hpbGRyZW4udG9TdHJpbmcoKTtcbiAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZE5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W2NoaWxkcmVuW2ldXV07IC8vIFByb3BhZ2F0ZSBvZmZzZXRcblxuICAgICAgICBjaGlsZE5vZGUub2Zmc2V0WCArPSBvZmZYO1xuICAgICAgICBjaGlsZE5vZGUub2Zmc2V0WSArPSBvZmZZOyAvLyBBZGQgY2hpbGRyZW4gdG8gcXVldWUgdG8gYmUgdmlzaXRlZFxuXG4gICAgICAgIHF1ZXVlWysrZW5kXSA9IGNoaWxkcmVuW2ldO1xuICAgICAgfSAvLyBSZXNldCBwYXJlbnQgb2Zmc2V0c1xuXG5cbiAgICAgIG5vZGUub2Zmc2V0WCA9IDA7XG4gICAgICBub2RlLm9mZnNldFkgPSAwO1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogQGJyaWVmIDogVXBkYXRlcyB0aGUgbGF5b3V0IG1vZGVsIHBvc2l0aW9ucywgYmFzZWQgb25cbiAqICAgICAgICAgIHRoZSBhY2N1bXVsYXRlZCBmb3JjZXNcbiAqL1xuXG5cbnZhciB1cGRhdGVQb3NpdGlvbnMgPSBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbnMobGF5b3V0SW5mbywgb3B0aW9ucykge1xuICAvLyB2YXIgcyA9ICdVcGRhdGluZyBwb3NpdGlvbnMnO1xuICAvLyBsb2dEZWJ1ZyhzKTtcbiAgLy8gUmVzZXQgYm91bmRhcmllcyBmb3IgY29tcG91bmQgbm9kZXNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07XG5cbiAgICBpZiAoMCA8IG4uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAvLyBsb2dEZWJ1ZyhcIlJlc2V0dGluZyBib3VuZGFyaWVzIG9mIGNvbXBvdW5kIG5vZGU6IFwiICsgbi5pZCk7XG4gICAgICBuLm1heFggPSB1bmRlZmluZWQ7XG4gICAgICBuLm1pblggPSB1bmRlZmluZWQ7XG4gICAgICBuLm1heFkgPSB1bmRlZmluZWQ7XG4gICAgICBuLm1pblkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07XG5cbiAgICBpZiAoMCA8IG4uY2hpbGRyZW4ubGVuZ3RoIHx8IG4uaXNMb2NrZWQpIHtcbiAgICAgIC8vIE5vIG5lZWQgdG8gc2V0IGNvbXBvdW5kIG9yIGxvY2tlZCBub2RlIHBvc2l0aW9uXG4gICAgICAvLyBsb2dEZWJ1ZyhcIlNraXBwaW5nIHBvc2l0aW9uIHVwZGF0ZSBvZiBub2RlOiBcIiArIG4uaWQpO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBzID0gXCJOb2RlOiBcIiArIG4uaWQgKyBcIiBQcmV2aW91cyBwb3NpdGlvbjogKFwiICtcbiAgICAvLyBuLnBvc2l0aW9uWCArIFwiLCBcIiArIG4ucG9zaXRpb25ZICsgXCIpLlwiO1xuICAgIC8vIExpbWl0IGRpc3BsYWNlbWVudCBpbiBvcmRlciB0byBpbXByb3ZlIHN0YWJpbGl0eVxuXG5cbiAgICB2YXIgdGVtcEZvcmNlID0gbGltaXRGb3JjZShuLm9mZnNldFgsIG4ub2Zmc2V0WSwgbGF5b3V0SW5mby50ZW1wZXJhdHVyZSk7XG4gICAgbi5wb3NpdGlvblggKz0gdGVtcEZvcmNlLng7XG4gICAgbi5wb3NpdGlvblkgKz0gdGVtcEZvcmNlLnk7XG4gICAgbi5vZmZzZXRYID0gMDtcbiAgICBuLm9mZnNldFkgPSAwO1xuICAgIG4ubWluWCA9IG4ucG9zaXRpb25YIC0gbi53aWR0aDtcbiAgICBuLm1heFggPSBuLnBvc2l0aW9uWCArIG4ud2lkdGg7XG4gICAgbi5taW5ZID0gbi5wb3NpdGlvblkgLSBuLmhlaWdodDtcbiAgICBuLm1heFkgPSBuLnBvc2l0aW9uWSArIG4uaGVpZ2h0OyAvLyBzICs9IFwiIE5ldyBQb3NpdGlvbjogKFwiICsgbi5wb3NpdGlvblggKyBcIiwgXCIgKyBuLnBvc2l0aW9uWSArIFwiKS5cIjtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAvLyBVcGRhdGUgYW5jZXN0cnkgYm91ZGFyaWVzXG5cbiAgICB1cGRhdGVBbmNlc3RyeUJvdW5kYXJpZXMobiwgbGF5b3V0SW5mbyk7XG4gIH0gLy8gVXBkYXRlIHNpemUsIHBvc2l0aW9uIG9mIGNvbXB1bmQgbm9kZXNcblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ub2RlU2l6ZTsgaSsrKSB7XG4gICAgdmFyIG4gPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2ldO1xuXG4gICAgaWYgKDAgPCBuLmNoaWxkcmVuLmxlbmd0aCAmJiAhbi5pc0xvY2tlZCkge1xuICAgICAgbi5wb3NpdGlvblggPSAobi5tYXhYICsgbi5taW5YKSAvIDI7XG4gICAgICBuLnBvc2l0aW9uWSA9IChuLm1heFkgKyBuLm1pblkpIC8gMjtcbiAgICAgIG4ud2lkdGggPSBuLm1heFggLSBuLm1pblg7XG4gICAgICBuLmhlaWdodCA9IG4ubWF4WSAtIG4ubWluWTsgLy8gcyA9IFwiVXBkYXRpbmcgcG9zaXRpb24sIHNpemUgb2YgY29tcG91bmQgbm9kZSBcIiArIG4uaWQ7XG4gICAgICAvLyBzICs9IFwiXFxuUG9zaXRpb25YOiBcIiArIG4ucG9zaXRpb25YICsgXCIsIFBvc2l0aW9uWTogXCIgKyBuLnBvc2l0aW9uWTtcbiAgICAgIC8vIHMgKz0gXCJcXG5XaWR0aDogXCIgKyBuLndpZHRoICsgXCIsIEhlaWdodDogXCIgKyBuLmhlaWdodDtcbiAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIH1cbiAgfVxufTtcbi8qKlxuICogQGJyaWVmIDogTGltaXRzIGEgZm9yY2UgKGZvcmNlWCwgZm9yY2VZKSB0byBiZSBub3RcbiAqICAgICAgICAgIGdyZWF0ZXIgKGluIG1vZHVsbykgdGhhbiBtYXguXG4gOCAgICAgICAgICBQcmVzZXJ2ZXMgZm9yY2UgZGlyZWN0aW9uLlxuICAqL1xuXG5cbnZhciBsaW1pdEZvcmNlID0gZnVuY3Rpb24gbGltaXRGb3JjZShmb3JjZVgsIGZvcmNlWSwgbWF4KSB7XG4gIC8vIHZhciBzID0gXCJMaW1pdGluZyBmb3JjZTogKFwiICsgZm9yY2VYICsgXCIsIFwiICsgZm9yY2VZICsgXCIpLiBNYXg6IFwiICsgbWF4O1xuICB2YXIgZm9yY2UgPSBNYXRoLnNxcnQoZm9yY2VYICogZm9yY2VYICsgZm9yY2VZICogZm9yY2VZKTtcblxuICBpZiAoZm9yY2UgPiBtYXgpIHtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgeDogbWF4ICogZm9yY2VYIC8gZm9yY2UsXG4gICAgICB5OiBtYXggKiBmb3JjZVkgLyBmb3JjZVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdmFyIHJlcyA9IHtcbiAgICAgIHg6IGZvcmNlWCxcbiAgICAgIHk6IGZvcmNlWVxuICAgIH07XG4gIH0gLy8gcyArPSBcIi5cXG5SZXN1bHQ6IChcIiArIHJlcy54ICsgXCIsIFwiICsgcmVzLnkgKyBcIilcIjtcbiAgLy8gbG9nRGVidWcocyk7XG5cblxuICByZXR1cm4gcmVzO1xufTtcbi8qKlxuICogQGJyaWVmIDogRnVuY3Rpb24gdXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiBjb21wb3VuZCBub2RlXG4gKiAgICAgICAgICBzaXplcywgc2luY2UgdGhleSBzaG91bGQgYm91bmQgYWxsIHRoZWlyIHN1Ym5vZGVzLlxuICovXG5cblxudmFyIHVwZGF0ZUFuY2VzdHJ5Qm91bmRhcmllcyA9IGZ1bmN0aW9uIHVwZGF0ZUFuY2VzdHJ5Qm91bmRhcmllcyhub2RlLCBsYXlvdXRJbmZvKSB7XG4gIC8vIHZhciBzID0gXCJQcm9wYWdhdGluZyBuZXcgcG9zaXRpb24vc2l6ZSBvZiBub2RlIFwiICsgbm9kZS5pZDtcbiAgdmFyIHBhcmVudElkID0gbm9kZS5wYXJlbnRJZDtcblxuICBpZiAobnVsbCA9PSBwYXJlbnRJZCkge1xuICAgIC8vIElmIHRoZXJlJ3Mgbm8gcGFyZW50LCB3ZSBhcmUgZG9uZVxuICAgIC8vIHMgKz0gXCIuIE5vIHBhcmVudCBub2RlLlwiO1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIHJldHVybjtcbiAgfSAvLyBHZXQgUGFyZW50IE5vZGVcblxuXG4gIHZhciBwID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtwYXJlbnRJZF1dO1xuICB2YXIgZmxhZyA9IGZhbHNlOyAvLyBNYXhYXG5cbiAgaWYgKG51bGwgPT0gcC5tYXhYIHx8IG5vZGUubWF4WCArIHAucGFkUmlnaHQgPiBwLm1heFgpIHtcbiAgICBwLm1heFggPSBub2RlLm1heFggKyBwLnBhZFJpZ2h0O1xuICAgIGZsYWcgPSB0cnVlOyAvLyBzICs9IFwiXFxuTmV3IG1heFggZm9yIHBhcmVudCBub2RlIFwiICsgcC5pZCArIFwiOiBcIiArIHAubWF4WDtcbiAgfSAvLyBNaW5YXG5cblxuICBpZiAobnVsbCA9PSBwLm1pblggfHwgbm9kZS5taW5YIC0gcC5wYWRMZWZ0IDwgcC5taW5YKSB7XG4gICAgcC5taW5YID0gbm9kZS5taW5YIC0gcC5wYWRMZWZ0O1xuICAgIGZsYWcgPSB0cnVlOyAvLyBzICs9IFwiXFxuTmV3IG1pblggZm9yIHBhcmVudCBub2RlIFwiICsgcC5pZCArIFwiOiBcIiArIHAubWluWDtcbiAgfSAvLyBNYXhZXG5cblxuICBpZiAobnVsbCA9PSBwLm1heFkgfHwgbm9kZS5tYXhZICsgcC5wYWRCb3R0b20gPiBwLm1heFkpIHtcbiAgICBwLm1heFkgPSBub2RlLm1heFkgKyBwLnBhZEJvdHRvbTtcbiAgICBmbGFnID0gdHJ1ZTsgLy8gcyArPSBcIlxcbk5ldyBtYXhZIGZvciBwYXJlbnQgbm9kZSBcIiArIHAuaWQgKyBcIjogXCIgKyBwLm1heFk7XG4gIH0gLy8gTWluWVxuXG5cbiAgaWYgKG51bGwgPT0gcC5taW5ZIHx8IG5vZGUubWluWSAtIHAucGFkVG9wIDwgcC5taW5ZKSB7XG4gICAgcC5taW5ZID0gbm9kZS5taW5ZIC0gcC5wYWRUb3A7XG4gICAgZmxhZyA9IHRydWU7IC8vIHMgKz0gXCJcXG5OZXcgbWluWSBmb3IgcGFyZW50IG5vZGUgXCIgKyBwLmlkICsgXCI6IFwiICsgcC5taW5ZO1xuICB9IC8vIElmIHVwZGF0ZWQgYm91bmRhcmllcywgcHJvcGFnYXRlIGNoYW5nZXMgdXB3YXJkXG5cblxuICBpZiAoZmxhZykge1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIHJldHVybiB1cGRhdGVBbmNlc3RyeUJvdW5kYXJpZXMocCwgbGF5b3V0SW5mbyk7XG4gIH0gLy8gcyArPSBcIi4gTm8gY2hhbmdlcyBpbiBib3VuZGFyaWVzL3Bvc2l0aW9uIG9mIHBhcmVudCBub2RlIFwiICsgcC5pZDtcbiAgLy8gbG9nRGVidWcocyk7XG5cblxuICByZXR1cm47XG59O1xuXG52YXIgc2VwYXJhdGVDb21wb25lbnRzID0gZnVuY3Rpb24gc2VwYXJhdGVDb21wb25lbnRzKGxheW91dEluZm8sIG9wdGlvbnMpIHtcbiAgdmFyIG5vZGVzID0gbGF5b3V0SW5mby5sYXlvdXROb2RlcztcbiAgdmFyIGNvbXBvbmVudHMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgY2lkID0gbm9kZS5jbXB0SWQ7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbY2lkXSA9IGNvbXBvbmVudHNbY2lkXSB8fCBbXTtcbiAgICBjb21wb25lbnQucHVzaChub2RlKTtcbiAgfVxuXG4gIHZhciB0b3RhbEEgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjID0gY29tcG9uZW50c1tpXTtcblxuICAgIGlmICghYykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgYy54MSA9IEluZmluaXR5O1xuICAgIGMueDIgPSAtSW5maW5pdHk7XG4gICAgYy55MSA9IEluZmluaXR5O1xuICAgIGMueTIgPSAtSW5maW5pdHk7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBuID0gY1tqXTtcbiAgICAgIGMueDEgPSBNYXRoLm1pbihjLngxLCBuLnBvc2l0aW9uWCAtIG4ud2lkdGggLyAyKTtcbiAgICAgIGMueDIgPSBNYXRoLm1heChjLngyLCBuLnBvc2l0aW9uWCArIG4ud2lkdGggLyAyKTtcbiAgICAgIGMueTEgPSBNYXRoLm1pbihjLnkxLCBuLnBvc2l0aW9uWSAtIG4uaGVpZ2h0IC8gMik7XG4gICAgICBjLnkyID0gTWF0aC5tYXgoYy55Miwgbi5wb3NpdGlvblkgKyBuLmhlaWdodCAvIDIpO1xuICAgIH1cblxuICAgIGMudyA9IGMueDIgLSBjLngxO1xuICAgIGMuaCA9IGMueTIgLSBjLnkxO1xuICAgIHRvdGFsQSArPSBjLncgKiBjLmg7XG4gIH1cblxuICBjb21wb25lbnRzLnNvcnQoZnVuY3Rpb24gKGMxLCBjMikge1xuICAgIHJldHVybiBjMi53ICogYzIuaCAtIGMxLncgKiBjMS5oO1xuICB9KTtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG4gIHZhciB1c2VkVyA9IDA7XG4gIHZhciByb3dIID0gMDtcbiAgdmFyIG1heFJvd1cgPSBNYXRoLnNxcnQodG90YWxBKSAqIGxheW91dEluZm8uY2xpZW50V2lkdGggLyBsYXlvdXRJbmZvLmNsaWVudEhlaWdodDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYyA9IGNvbXBvbmVudHNbaV07XG5cbiAgICBpZiAoIWMpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgYy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIG4gPSBjW2pdO1xuXG4gICAgICBpZiAoIW4uaXNMb2NrZWQpIHtcbiAgICAgICAgbi5wb3NpdGlvblggKz0geCAtIGMueDE7XG4gICAgICAgIG4ucG9zaXRpb25ZICs9IHkgLSBjLnkxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHggKz0gYy53ICsgb3B0aW9ucy5jb21wb25lbnRTcGFjaW5nO1xuICAgIHVzZWRXICs9IGMudyArIG9wdGlvbnMuY29tcG9uZW50U3BhY2luZztcbiAgICByb3dIID0gTWF0aC5tYXgocm93SCwgYy5oKTtcblxuICAgIGlmICh1c2VkVyA+IG1heFJvd1cpIHtcbiAgICAgIHkgKz0gcm93SCArIG9wdGlvbnMuY29tcG9uZW50U3BhY2luZztcbiAgICAgIHggPSAwO1xuICAgICAgdXNlZFcgPSAwO1xuICAgICAgcm93SCA9IDA7XG4gICAgfVxuICB9XG59O1xuXG52YXIgZGVmYXVsdHMkZCA9IHtcbiAgZml0OiB0cnVlLFxuICAvLyB3aGV0aGVyIHRvIGZpdCB0aGUgdmlld3BvcnQgdG8gdGhlIGdyYXBoXG4gIHBhZGRpbmc6IDMwLFxuICAvLyBwYWRkaW5nIHVzZWQgb24gZml0XG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBhdm9pZE92ZXJsYXA6IHRydWUsXG4gIC8vIHByZXZlbnRzIG5vZGUgb3ZlcmxhcCwgbWF5IG92ZXJmbG93IGJvdW5kaW5nQm94IGlmIG5vdCBlbm91Z2ggc3BhY2VcbiAgYXZvaWRPdmVybGFwUGFkZGluZzogMTAsXG4gIC8vIGV4dHJhIHNwYWNpbmcgYXJvdW5kIG5vZGVzIHdoZW4gYXZvaWRPdmVybGFwOiB0cnVlXG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsXG4gIC8vIEV4Y2x1ZGVzIHRoZSBsYWJlbCB3aGVuIGNhbGN1bGF0aW5nIG5vZGUgYm91bmRpbmcgYm94ZXMgZm9yIHRoZSBsYXlvdXQgYWxnb3JpdGhtXG4gIHNwYWNpbmdGYWN0b3I6IHVuZGVmaW5lZCxcbiAgLy8gQXBwbGllcyBhIG11bHRpcGxpY2F0aXZlIGZhY3RvciAoPjApIHRvIGV4cGFuZCBvciBjb21wcmVzcyB0aGUgb3ZlcmFsbCBhcmVhIHRoYXQgdGhlIG5vZGVzIHRha2UgdXBcbiAgY29uZGVuc2U6IGZhbHNlLFxuICAvLyB1c2VzIGFsbCBhdmFpbGFibGUgc3BhY2Ugb24gZmFsc2UsIHVzZXMgbWluaW1hbCBzcGFjZSBvbiB0cnVlXG4gIHJvd3M6IHVuZGVmaW5lZCxcbiAgLy8gZm9yY2UgbnVtIG9mIHJvd3MgaW4gdGhlIGdyaWRcbiAgY29sczogdW5kZWZpbmVkLFxuICAvLyBmb3JjZSBudW0gb2YgY29sdW1ucyBpbiB0aGUgZ3JpZFxuICBwb3NpdGlvbjogZnVuY3Rpb24gcG9zaXRpb24obm9kZSkge30sXG4gIC8vIHJldHVybnMgeyByb3csIGNvbCB9IGZvciBlbGVtZW50XG4gIHNvcnQ6IHVuZGVmaW5lZCxcbiAgLy8gYSBzb3J0aW5nIGZ1bmN0aW9uIHRvIG9yZGVyIHRoZSBub2RlczsgZS5nLiBmdW5jdGlvbihhLCBiKXsgcmV0dXJuIGEuZGF0YSgnd2VpZ2h0JykgLSBiLmRhdGEoJ3dlaWdodCcpIH1cbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gIC8vIGVhc2luZyBvZiBhbmltYXRpb24gaWYgZW5hYmxlZFxuICBhbmltYXRlRmlsdGVyOiBmdW5jdGlvbiBhbmltYXRlRmlsdGVyKG5vZGUsIGkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgLy8gYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgYW5pbWF0ZWQuICBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWQuICBOb24tYW5pbWF0ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgbGF5b3V0IHN0YXJ0c1xuICByZWFkeTogdW5kZWZpbmVkLFxuICAvLyBjYWxsYmFjayBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHN0b3BcbiAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0obm9kZSwgcG9zaXRpb24pIHtcbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH0gLy8gdHJhbnNmb3JtIGEgZ2l2ZW4gbm9kZSBwb3NpdGlvbi4gVXNlZnVsIGZvciBjaGFuZ2luZyBmbG93IGRpcmVjdGlvbiBpbiBkaXNjcmV0ZSBsYXlvdXRzIFxuXG59O1xuXG5mdW5jdGlvbiBHcmlkTGF5b3V0KG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cyRkLCBvcHRpb25zKTtcbn1cblxuR3JpZExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcGFyYW1zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgb3B0aW9ucyA9IHBhcmFtcztcbiAgdmFyIGN5ID0gcGFyYW1zLmN5O1xuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIG5vZGVzID0gZWxlcy5ub2RlcygpLm5vdCgnOnBhcmVudCcpO1xuXG4gIGlmIChvcHRpb25zLnNvcnQpIHtcbiAgICBub2RlcyA9IG5vZGVzLnNvcnQob3B0aW9ucy5zb3J0KTtcbiAgfVxuXG4gIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICB4MTogMCxcbiAgICB5MTogMCxcbiAgICB3OiBjeS53aWR0aCgpLFxuICAgIGg6IGN5LmhlaWdodCgpXG4gIH0pO1xuXG4gIGlmIChiYi5oID09PSAwIHx8IGJiLncgPT09IDApIHtcbiAgICBlbGVzLm5vZGVzKCkubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJiLngxLFxuICAgICAgICB5OiBiYi55MVxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICAvLyB3aWR0aC9oZWlnaHQgKiBzcGxpdHNeMiA9IGNlbGxzIHdoZXJlIHNwbGl0cyBpcyBudW1iZXIgb2YgdGltZXMgdG8gc3BsaXQgd2lkdGhcbiAgICB2YXIgY2VsbHMgPSBub2Rlcy5zaXplKCk7XG4gICAgdmFyIHNwbGl0cyA9IE1hdGguc3FydChjZWxscyAqIGJiLmggLyBiYi53KTtcbiAgICB2YXIgcm93cyA9IE1hdGgucm91bmQoc3BsaXRzKTtcbiAgICB2YXIgY29scyA9IE1hdGgucm91bmQoYmIudyAvIGJiLmggKiBzcGxpdHMpO1xuXG4gICAgdmFyIHNtYWxsID0gZnVuY3Rpb24gc21hbGwodmFsKSB7XG4gICAgICBpZiAodmFsID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHJvd3MsIGNvbHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG1pbiA9IE1hdGgubWluKHJvd3MsIGNvbHMpO1xuXG4gICAgICAgIGlmIChtaW4gPT0gcm93cykge1xuICAgICAgICAgIHJvd3MgPSB2YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29scyA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgbGFyZ2UgPSBmdW5jdGlvbiBsYXJnZSh2YWwpIHtcbiAgICAgIGlmICh2YWwgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgocm93cywgY29scyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbWF4ID0gTWF0aC5tYXgocm93cywgY29scyk7XG5cbiAgICAgICAgaWYgKG1heCA9PSByb3dzKSB7XG4gICAgICAgICAgcm93cyA9IHZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2xzID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBvUm93cyA9IG9wdGlvbnMucm93cztcbiAgICB2YXIgb0NvbHMgPSBvcHRpb25zLmNvbHMgIT0gbnVsbCA/IG9wdGlvbnMuY29scyA6IG9wdGlvbnMuY29sdW1uczsgLy8gaWYgcm93cyBvciBjb2x1bW5zIHdlcmUgc2V0IGluIG9wdGlvbnMsIHVzZSB0aG9zZSB2YWx1ZXNcblxuICAgIGlmIChvUm93cyAhPSBudWxsICYmIG9Db2xzICE9IG51bGwpIHtcbiAgICAgIHJvd3MgPSBvUm93cztcbiAgICAgIGNvbHMgPSBvQ29scztcbiAgICB9IGVsc2UgaWYgKG9Sb3dzICE9IG51bGwgJiYgb0NvbHMgPT0gbnVsbCkge1xuICAgICAgcm93cyA9IG9Sb3dzO1xuICAgICAgY29scyA9IE1hdGguY2VpbChjZWxscyAvIHJvd3MpO1xuICAgIH0gZWxzZSBpZiAob1Jvd3MgPT0gbnVsbCAmJiBvQ29scyAhPSBudWxsKSB7XG4gICAgICBjb2xzID0gb0NvbHM7XG4gICAgICByb3dzID0gTWF0aC5jZWlsKGNlbGxzIC8gY29scyk7XG4gICAgfSAvLyBvdGhlcndpc2UgdXNlIHRoZSBhdXRvbWF0aWMgdmFsdWVzIGFuZCBhZGp1c3QgYWNjb3JkaW5nbHlcbiAgICAvLyBpZiByb3VuZGluZyB3YXMgdXAsIHNlZSBpZiB3ZSBjYW4gcmVkdWNlIHJvd3Mgb3IgY29sdW1uc1xuICAgIGVsc2UgaWYgKGNvbHMgKiByb3dzID4gY2VsbHMpIHtcbiAgICAgICAgdmFyIHNtID0gc21hbGwoKTtcbiAgICAgICAgdmFyIGxnID0gbGFyZ2UoKTsgLy8gcmVkdWNpbmcgdGhlIHNtYWxsIHNpZGUgdGFrZXMgYXdheSB0aGUgbW9zdCBjZWxscywgc28gdHJ5IGl0IGZpcnN0XG5cbiAgICAgICAgaWYgKChzbSAtIDEpICogbGcgPj0gY2VsbHMpIHtcbiAgICAgICAgICBzbWFsbChzbSAtIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKChsZyAtIDEpICogc20gPj0gY2VsbHMpIHtcbiAgICAgICAgICBsYXJnZShsZyAtIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpZiByb3VuZGluZyB3YXMgdG9vIGxvdywgYWRkIHJvd3Mgb3IgY29sdW1uc1xuICAgICAgICB3aGlsZSAoY29scyAqIHJvd3MgPCBjZWxscykge1xuICAgICAgICAgIHZhciBfc20gPSBzbWFsbCgpO1xuXG4gICAgICAgICAgdmFyIF9sZyA9IGxhcmdlKCk7IC8vIHRyeSB0byBhZGQgdG8gbGFyZ2VyIHNpZGUgZmlyc3QgKGFkZHMgbGVzcyBpbiBtdWx0aXBsaWNhdGlvbilcblxuXG4gICAgICAgICAgaWYgKChfbGcgKyAxKSAqIF9zbSA+PSBjZWxscykge1xuICAgICAgICAgICAgbGFyZ2UoX2xnICsgMSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNtYWxsKF9zbSArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgdmFyIGNlbGxXaWR0aCA9IGJiLncgLyBjb2xzO1xuICAgIHZhciBjZWxsSGVpZ2h0ID0gYmIuaCAvIHJvd3M7XG5cbiAgICBpZiAob3B0aW9ucy5jb25kZW5zZSkge1xuICAgICAgY2VsbFdpZHRoID0gMDtcbiAgICAgIGNlbGxIZWlnaHQgPSAwO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmF2b2lkT3ZlcmxhcCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICB2YXIgcG9zID0gbm9kZS5fcHJpdmF0ZS5wb3NpdGlvbjtcblxuICAgICAgICBpZiAocG9zLnggPT0gbnVsbCB8fCBwb3MueSA9PSBudWxsKSB7XG4gICAgICAgICAgLy8gZm9yIGJiXG4gICAgICAgICAgcG9zLnggPSAwO1xuICAgICAgICAgIHBvcy55ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYmIgPSBub2RlLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgICAgIHZhciBwID0gb3B0aW9ucy5hdm9pZE92ZXJsYXBQYWRkaW5nO1xuICAgICAgICB2YXIgdyA9IG5iYi53ICsgcDtcbiAgICAgICAgdmFyIGggPSBuYmIuaCArIHA7XG4gICAgICAgIGNlbGxXaWR0aCA9IE1hdGgubWF4KGNlbGxXaWR0aCwgdyk7XG4gICAgICAgIGNlbGxIZWlnaHQgPSBNYXRoLm1heChjZWxsSGVpZ2h0LCBoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY2VsbFVzZWQgPSB7fTsgLy8gZS5nLiAnYy0wLTInID0+IHRydWVcblxuICAgIHZhciB1c2VkID0gZnVuY3Rpb24gdXNlZChyb3csIGNvbCkge1xuICAgICAgcmV0dXJuIGNlbGxVc2VkWydjLScgKyByb3cgKyAnLScgKyBjb2xdID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH07XG5cbiAgICB2YXIgdXNlID0gZnVuY3Rpb24gdXNlKHJvdywgY29sKSB7XG4gICAgICBjZWxsVXNlZFsnYy0nICsgcm93ICsgJy0nICsgY29sXSA9IHRydWU7XG4gICAgfTsgLy8gdG8ga2VlcCB0cmFjayBvZiBjdXJyZW50IGNlbGwgcG9zaXRpb25cblxuXG4gICAgdmFyIHJvdyA9IDA7XG4gICAgdmFyIGNvbCA9IDA7XG5cbiAgICB2YXIgbW92ZVRvTmV4dENlbGwgPSBmdW5jdGlvbiBtb3ZlVG9OZXh0Q2VsbCgpIHtcbiAgICAgIGNvbCsrO1xuXG4gICAgICBpZiAoY29sID49IGNvbHMpIHtcbiAgICAgICAgY29sID0gMDtcbiAgICAgICAgcm93Kys7XG4gICAgICB9XG4gICAgfTsgLy8gZ2V0IGEgY2FjaGUgb2YgYWxsIHRoZSBtYW51YWwgcG9zaXRpb25zXG5cblxuICAgIHZhciBpZDJtYW5Qb3MgPSB7fTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBub2Rlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfbm9kZSA9IG5vZGVzW19pXTtcbiAgICAgIHZhciByY1BvcyA9IG9wdGlvbnMucG9zaXRpb24oX25vZGUpO1xuXG4gICAgICBpZiAocmNQb3MgJiYgKHJjUG9zLnJvdyAhPT0gdW5kZWZpbmVkIHx8IHJjUG9zLmNvbCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAvLyBtdXN0IGhhdmUgYXQgbGVhc3Qgcm93IG9yIGNvbCBkZWYnZFxuICAgICAgICB2YXIgX3BvcyA9IHtcbiAgICAgICAgICByb3c6IHJjUG9zLnJvdyxcbiAgICAgICAgICBjb2w6IHJjUG9zLmNvbFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChfcG9zLmNvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gZmluZCB1bnVzZWQgY29sXG4gICAgICAgICAgX3Bvcy5jb2wgPSAwO1xuXG4gICAgICAgICAgd2hpbGUgKHVzZWQoX3Bvcy5yb3csIF9wb3MuY29sKSkge1xuICAgICAgICAgICAgX3Bvcy5jb2wrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoX3Bvcy5yb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIGZpbmQgdW51c2VkIHJvd1xuICAgICAgICAgIF9wb3Mucm93ID0gMDtcblxuICAgICAgICAgIHdoaWxlICh1c2VkKF9wb3Mucm93LCBfcG9zLmNvbCkpIHtcbiAgICAgICAgICAgIF9wb3Mucm93Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWQybWFuUG9zW19ub2RlLmlkKCldID0gX3BvcztcbiAgICAgICAgdXNlKF9wb3Mucm93LCBfcG9zLmNvbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGdldFBvcyA9IGZ1bmN0aW9uIGdldFBvcyhlbGVtZW50LCBpKSB7XG4gICAgICB2YXIgeCwgeTtcblxuICAgICAgaWYgKGVsZW1lbnQubG9ja2VkKCkgfHwgZWxlbWVudC5pc1BhcmVudCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gc2VlIGlmIHdlIGhhdmUgYSBtYW51YWwgcG9zaXRpb24gc2V0XG5cblxuICAgICAgdmFyIHJjUG9zID0gaWQybWFuUG9zW2VsZW1lbnQuaWQoKV07XG5cbiAgICAgIGlmIChyY1Bvcykge1xuICAgICAgICB4ID0gcmNQb3MuY29sICogY2VsbFdpZHRoICsgY2VsbFdpZHRoIC8gMiArIGJiLngxO1xuICAgICAgICB5ID0gcmNQb3Mucm93ICogY2VsbEhlaWdodCArIGNlbGxIZWlnaHQgLyAyICsgYmIueTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBvdGhlcndpc2Ugc2V0IGF1dG9tYXRpY2FsbHlcbiAgICAgICAgd2hpbGUgKHVzZWQocm93LCBjb2wpKSB7XG4gICAgICAgICAgbW92ZVRvTmV4dENlbGwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHggPSBjb2wgKiBjZWxsV2lkdGggKyBjZWxsV2lkdGggLyAyICsgYmIueDE7XG4gICAgICAgIHkgPSByb3cgKiBjZWxsSGVpZ2h0ICsgY2VsbEhlaWdodCAvIDIgKyBiYi55MTtcbiAgICAgICAgdXNlKHJvdywgY29sKTtcbiAgICAgICAgbW92ZVRvTmV4dENlbGwoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbm9kZXMubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGdldFBvcyk7XG4gIH1cblxuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBkZWZhdWx0cyRlID0ge1xuICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7fSxcbiAgLy8gb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9IC8vIG9uIGxheW91dHN0b3BcblxufTsgLy8gY29uc3RydWN0b3Jcbi8vIG9wdGlvbnMgOiBvYmplY3QgY29udGFpbmluZyBsYXlvdXQgb3B0aW9uc1xuXG5mdW5jdGlvbiBOdWxsTGF5b3V0KG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cyRlLCBvcHRpb25zKTtcbn0gLy8gcnVucyB0aGUgbGF5b3V0XG5cblxuTnVsbExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7IC8vIGVsZW1lbnRzIHRvIGNvbnNpZGVyIGluIHRoZSBsYXlvdXRcblxuICB2YXIgbGF5b3V0ID0gdGhpczsgLy8gY3kgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgZm9yIHVzIGluIHRoZSBjb25zdHJ1Y3RvclxuICAvLyAoZGlzYWJsZSBlc2xpbnQgZm9yIG5leHQgbGluZSBhcyB0aGlzIHNlcnZlcyBhcyBleGFtcGxlIGxheW91dCBjb2RlIHRvIGV4dGVybmFsIGRldmVsb3BlcnMpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuXG4gIHZhciBjeSA9IG9wdGlvbnMuY3k7XG4gIGxheW91dC5lbWl0KCdsYXlvdXRzdGFydCcpOyAvLyBwdXRzIGFsbCBub2RlcyBhdCAoMCwgMClcbiAgLy8gbi5iLiBtb3N0IGxheW91dHMgd291bGQgdXNlIGxheW91dFBvc2l0aW9ucygpLCBpbnN0ZWFkIG9mIHBvc2l0aW9ucygpIGFuZCBtYW51YWwgZXZlbnRzXG5cbiAgZWxlcy5ub2RlcygpLnBvc2l0aW9ucyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfSk7IC8vIHRyaWdnZXIgbGF5b3V0cmVhZHkgd2hlbiBlYWNoIG5vZGUgaGFzIGhhZCBpdHMgcG9zaXRpb24gc2V0IGF0IGxlYXN0IG9uY2VcblxuICBsYXlvdXQub25lKCdsYXlvdXRyZWFkeScsIG9wdGlvbnMucmVhZHkpO1xuICBsYXlvdXQuZW1pdCgnbGF5b3V0cmVhZHknKTsgLy8gdHJpZ2dlciBsYXlvdXRzdG9wIHdoZW4gdGhlIGxheW91dCBzdG9wcyAoZS5nLiBmaW5pc2hlcylcblxuICBsYXlvdXQub25lKCdsYXlvdXRzdG9wJywgb3B0aW9ucy5zdG9wKTtcbiAgbGF5b3V0LmVtaXQoJ2xheW91dHN0b3AnKTtcbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59OyAvLyBjYWxsZWQgb24gY29udGludW91cyBsYXlvdXRzIHRvIHN0b3AgdGhlbSBiZWZvcmUgdGhleSBmaW5pc2hcblxuXG5OdWxsTGF5b3V0LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBkZWZhdWx0cyRmID0ge1xuICBwb3NpdGlvbnM6IHVuZGVmaW5lZCxcbiAgLy8gbWFwIG9mIChub2RlIGlkKSA9PiAocG9zaXRpb24gb2JqKTsgb3IgZnVuY3Rpb24obm9kZSl7IHJldHVybiBzb21Qb3M7IH1cbiAgem9vbTogdW5kZWZpbmVkLFxuICAvLyB0aGUgem9vbSBsZXZlbCB0byBzZXQgKHByb2Igd2FudCBmaXQgPSBmYWxzZSBpZiBzZXQpXG4gIHBhbjogdW5kZWZpbmVkLFxuICAvLyB0aGUgcGFuIGxldmVsIHRvIHNldCAocHJvYiB3YW50IGZpdCA9IGZhbHNlIGlmIHNldClcbiAgZml0OiB0cnVlLFxuICAvLyB3aGV0aGVyIHRvIGZpdCB0byB2aWV3cG9ydFxuICBwYWRkaW5nOiAzMCxcbiAgLy8gcGFkZGluZyBvbiBmaXRcbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gIC8vIGVhc2luZyBvZiBhbmltYXRpb24gaWYgZW5hYmxlZFxuICBhbmltYXRlRmlsdGVyOiBmdW5jdGlvbiBhbmltYXRlRmlsdGVyKG5vZGUsIGkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgLy8gYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgYW5pbWF0ZWQuICBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWQuICBOb24tYW5pbWF0ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgbGF5b3V0IHN0YXJ0c1xuICByZWFkeTogdW5kZWZpbmVkLFxuICAvLyBjYWxsYmFjayBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHN0b3BcbiAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0obm9kZSwgcG9zaXRpb24pIHtcbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH0gLy8gdHJhbnNmb3JtIGEgZ2l2ZW4gbm9kZSBwb3NpdGlvbi4gVXNlZnVsIGZvciBjaGFuZ2luZyBmbG93IGRpcmVjdGlvbiBpbiBkaXNjcmV0ZSBsYXlvdXRzXG5cbn07XG5cbmZ1bmN0aW9uIFByZXNldExheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkZiwgb3B0aW9ucyk7XG59XG5cblByZXNldExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7XG4gIHZhciBub2RlcyA9IGVsZXMubm9kZXMoKTtcbiAgdmFyIHBvc0lzRm4gPSBmbihvcHRpb25zLnBvc2l0aW9ucyk7XG5cbiAgZnVuY3Rpb24gZ2V0UG9zaXRpb24obm9kZSkge1xuICAgIGlmIChvcHRpb25zLnBvc2l0aW9ucyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29weVBvc2l0aW9uKG5vZGUucG9zaXRpb24oKSk7XG4gICAgfVxuXG4gICAgaWYgKHBvc0lzRm4pIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnBvc2l0aW9ucyhub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgcG9zID0gb3B0aW9ucy5wb3NpdGlvbnNbbm9kZS5fcHJpdmF0ZS5kYXRhLmlkXTtcblxuICAgIGlmIChwb3MgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvcztcbiAgfVxuXG4gIG5vZGVzLmxheW91dFBvc2l0aW9ucyh0aGlzLCBvcHRpb25zLCBmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBwb3NpdGlvbiA9IGdldFBvc2l0aW9uKG5vZGUpO1xuXG4gICAgaWYgKG5vZGUubG9ja2VkKCkgfHwgcG9zaXRpb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxudmFyIGRlZmF1bHRzJGcgPSB7XG4gIGZpdDogdHJ1ZSxcbiAgLy8gd2hldGhlciB0byBmaXQgdG8gdmlld3BvcnRcbiAgcGFkZGluZzogMzAsXG4gIC8vIGZpdCBwYWRkaW5nXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICBhbmltYXRlOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBub2RlIHNob3VsZCBiZSBhbmltYXRlZC4gIEFsbCBub2RlcyBhbmltYXRlZCBieSBkZWZhdWx0IG9uIGFuaW1hdGUgZW5hYmxlZC4gIE5vbi1hbmltYXRlZCBub2RlcyBhcmUgcG9zaXRpb25lZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBsYXlvdXQgc3RhcnRzXG4gIHJlYWR5OiB1bmRlZmluZWQsXG4gIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gIHN0b3A6IHVuZGVmaW5lZCxcbiAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHMgXG5cbn07XG5cbmZ1bmN0aW9uIFJhbmRvbUxheW91dChvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkZywgb3B0aW9ucyk7XG59XG5cblJhbmRvbUxheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgdmFyIGN5ID0gb3B0aW9ucy5jeTtcbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7XG4gIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICB4MTogMCxcbiAgICB5MTogMCxcbiAgICB3OiBjeS53aWR0aCgpLFxuICAgIGg6IGN5LmhlaWdodCgpXG4gIH0pO1xuXG4gIHZhciBnZXRQb3MgPSBmdW5jdGlvbiBnZXRQb3Mobm9kZSwgaSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBiYi54MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLncpLFxuICAgICAgeTogYmIueTEgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiBiYi5oKVxuICAgIH07XG4gIH07XG5cbiAgZWxlcy5ub2RlcygpLmxheW91dFBvc2l0aW9ucyh0aGlzLCBvcHRpb25zLCBnZXRQb3MpO1xuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciBsYXlvdXQgPSBbe1xuICBuYW1lOiAnYnJlYWR0aGZpcnN0JyxcbiAgaW1wbDogQnJlYWR0aEZpcnN0TGF5b3V0XG59LCB7XG4gIG5hbWU6ICdjaXJjbGUnLFxuICBpbXBsOiBDaXJjbGVMYXlvdXRcbn0sIHtcbiAgbmFtZTogJ2NvbmNlbnRyaWMnLFxuICBpbXBsOiBDb25jZW50cmljTGF5b3V0XG59LCB7XG4gIG5hbWU6ICdjb3NlJyxcbiAgaW1wbDogQ29zZUxheW91dFxufSwge1xuICBuYW1lOiAnZ3JpZCcsXG4gIGltcGw6IEdyaWRMYXlvdXRcbn0sIHtcbiAgbmFtZTogJ251bGwnLFxuICBpbXBsOiBOdWxsTGF5b3V0XG59LCB7XG4gIG5hbWU6ICdwcmVzZXQnLFxuICBpbXBsOiBQcmVzZXRMYXlvdXRcbn0sIHtcbiAgbmFtZTogJ3JhbmRvbScsXG4gIGltcGw6IFJhbmRvbUxheW91dFxufV07XG5cbmZ1bmN0aW9uIE51bGxSZW5kZXJlcihvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIHRoaXMubm90aWZpY2F0aW9ucyA9IDA7IC8vIGZvciB0ZXN0aW5nXG59XG5cbnZhciBub29wJDEgPSBmdW5jdGlvbiBub29wKCkge307XG5cbnZhciB0aHJvd0ltZ0VyciA9IGZ1bmN0aW9uIHRocm93SW1nRXJyKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ0EgaGVhZGxlc3MgaW5zdGFuY2UgY2FuIG5vdCByZW5kZXIgaW1hZ2VzJyk7XG59O1xuXG5OdWxsUmVuZGVyZXIucHJvdG90eXBlID0ge1xuICByZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGU6IG5vb3AkMSxcbiAgbm90aWZ5OiBmdW5jdGlvbiBub3RpZnkoKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zKys7XG4gIH0sXG4gIGluaXQ6IG5vb3AkMSxcbiAgaXNIZWFkbGVzczogZnVuY3Rpb24gaXNIZWFkbGVzcygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgcG5nOiB0aHJvd0ltZ0VycixcbiAganBnOiB0aHJvd0ltZ0VyclxufTtcblxudmFyIEJScCA9IHt9O1xuQlJwLmFycm93U2hhcGVXaWR0aCA9IDAuMztcblxuQlJwLnJlZ2lzdGVyQXJyb3dTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhcnJvd1NoYXBlcyA9IHRoaXMuYXJyb3dTaGFwZXMgPSB7fTtcbiAgdmFyIHJlbmRlcmVyID0gdGhpczsgLy8gQ29udHJhY3QgZm9yIGFycm93IHNoYXBlczpcbiAgLy8gMCwgMCBpcyBhcnJvdyB0aXBcbiAgLy8gKDAsIDEpIGlzIGRpcmVjdGlvbiB0b3dhcmRzIG5vZGVcbiAgLy8gKDEsIDApIGlzIHJpZ2h0XG4gIC8vXG4gIC8vIGZ1bmN0aW9uYWwgYXBpOlxuICAvLyBjb2xsaWRlOiBjaGVjayB4LCB5IGluIHNoYXBlXG4gIC8vIHJvdWdoQ29sbGlkZTogY2FsbGVkIGJlZm9yZSBjb2xsaWRlLCBubyBmYWxzZSBuZWdhdGl2ZXNcbiAgLy8gZHJhdzogZHJhd1xuICAvLyBzcGFjaW5nOiBkaXN0KGFycm93VGlwLCBub2RlQm91bmRhcnkpXG4gIC8vIGdhcDogZGlzdChlZGdlVGlwLCBub2RlQm91bmRhcnkpLCBlZGdlVGlwIG1heSAhPSBhcnJvd1RpcFxuXG4gIHZhciBiYkNvbGxpZGUgPSBmdW5jdGlvbiBiYkNvbGxpZGUoeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgsIHBhZGRpbmcpIHtcbiAgICB2YXIgeDEgPSB0cmFuc2xhdGlvbi54IC0gc2l6ZSAvIDIgLSBwYWRkaW5nO1xuICAgIHZhciB4MiA9IHRyYW5zbGF0aW9uLnggKyBzaXplIC8gMiArIHBhZGRpbmc7XG4gICAgdmFyIHkxID0gdHJhbnNsYXRpb24ueSAtIHNpemUgLyAyIC0gcGFkZGluZztcbiAgICB2YXIgeTIgPSB0cmFuc2xhdGlvbi55ICsgc2l6ZSAvIDIgKyBwYWRkaW5nO1xuICAgIHZhciBpbnNpZGUgPSB4MSA8PSB4ICYmIHggPD0geDIgJiYgeTEgPD0geSAmJiB5IDw9IHkyO1xuICAgIHJldHVybiBpbnNpZGU7XG4gIH07XG5cbiAgdmFyIHRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pIHtcbiAgICB2YXIgeFJvdGF0ZWQgPSB4ICogTWF0aC5jb3MoYW5nbGUpIC0geSAqIE1hdGguc2luKGFuZ2xlKTtcbiAgICB2YXIgeVJvdGF0ZWQgPSB4ICogTWF0aC5zaW4oYW5nbGUpICsgeSAqIE1hdGguY29zKGFuZ2xlKTtcbiAgICB2YXIgeFNjYWxlZCA9IHhSb3RhdGVkICogc2l6ZTtcbiAgICB2YXIgeVNjYWxlZCA9IHlSb3RhdGVkICogc2l6ZTtcbiAgICB2YXIgeFRyYW5zbGF0ZWQgPSB4U2NhbGVkICsgdHJhbnNsYXRpb24ueDtcbiAgICB2YXIgeVRyYW5zbGF0ZWQgPSB5U2NhbGVkICsgdHJhbnNsYXRpb24ueTtcbiAgICByZXR1cm4ge1xuICAgICAgeDogeFRyYW5zbGF0ZWQsXG4gICAgICB5OiB5VHJhbnNsYXRlZFxuICAgIH07XG4gIH07XG5cbiAgdmFyIHRyYW5zZm9ybVBvaW50cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybVBvaW50cyhwdHMsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbikge1xuICAgIHZhciByZXRQdHMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHRzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgeCA9IHB0c1tpXTtcbiAgICAgIHZhciB5ID0gcHRzW2kgKyAxXTtcbiAgICAgIHJldFB0cy5wdXNoKHRyYW5zZm9ybSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0UHRzO1xuICB9O1xuXG4gIHZhciBwb2ludHNUb0FyciA9IGZ1bmN0aW9uIHBvaW50c1RvQXJyKHB0cykge1xuICAgIHZhciByZXQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcCA9IHB0c1tpXTtcbiAgICAgIHJldC5wdXNoKHAueCwgcC55KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIHZhciBzdGFuZGFyZEdhcCA9IGZ1bmN0aW9uIHN0YW5kYXJkR2FwKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSAqIGVkZ2UucHN0eWxlKCdhcnJvdy1zY2FsZScpLnBmVmFsdWUgKiAyO1xuICB9O1xuXG4gIHZhciBkZWZpbmVBcnJvd1NoYXBlID0gZnVuY3Rpb24gZGVmaW5lQXJyb3dTaGFwZShuYW1lLCBkZWZuKSB7XG4gICAgaWYgKHN0cmluZyhkZWZuKSkge1xuICAgICAgZGVmbiA9IGFycm93U2hhcGVzW2RlZm5dO1xuICAgIH1cblxuICAgIGFycm93U2hhcGVzW25hbWVdID0gZXh0ZW5kKHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBwb2ludHM6IFstMC4xNSwgLTAuMywgMC4xNSwgLTAuMywgMC4xNSwgMC4zLCAtMC4xNSwgMC4zXSxcbiAgICAgIGNvbGxpZGU6IGZ1bmN0aW9uIGNvbGxpZGUoeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBwYWRkaW5nKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHMsIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICAgIHZhciBpbnNpZGUgPSBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgcG9pbnRzKTtcbiAgICAgICAgcmV0dXJuIGluc2lkZTtcbiAgICAgIH0sXG4gICAgICByb3VnaENvbGxpZGU6IGJiQ29sbGlkZSxcbiAgICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHMsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbik7XG4gICAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKCdwb2x5Z29uJykoY29udGV4dCwgcG9pbnRzKTtcbiAgICAgIH0sXG4gICAgICBzcGFjaW5nOiBmdW5jdGlvbiBzcGFjaW5nKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9LFxuICAgICAgZ2FwOiBzdGFuZGFyZEdhcFxuICAgIH0sIGRlZm4pO1xuICB9O1xuXG4gIGRlZmluZUFycm93U2hhcGUoJ25vbmUnLCB7XG4gICAgY29sbGlkZTogZmFsc2lmeSxcbiAgICByb3VnaENvbGxpZGU6IGZhbHNpZnksXG4gICAgZHJhdzogbm9vcCxcbiAgICBzcGFjaW5nOiB6ZXJvaWZ5LFxuICAgIGdhcDogemVyb2lmeVxuICB9KTtcbiAgZGVmaW5lQXJyb3dTaGFwZSgndHJpYW5nbGUnLCB7XG4gICAgcG9pbnRzOiBbLTAuMTUsIC0wLjMsIDAsIDAsIDAuMTUsIC0wLjNdXG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCdhcnJvdycsICd0cmlhbmdsZScpO1xuICBkZWZpbmVBcnJvd1NoYXBlKCd0cmlhbmdsZS1iYWNrY3VydmUnLCB7XG4gICAgcG9pbnRzOiBhcnJvd1NoYXBlc1sndHJpYW5nbGUnXS5wb2ludHMsXG4gICAgY29udHJvbFBvaW50OiBbMCwgLTAuMTVdLFxuICAgIHJvdWdoQ29sbGlkZTogYmJDb2xsaWRlLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgIHZhciBwdHNUcmFucyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHZhciBjdHJsUHQgPSB0aGlzLmNvbnRyb2xQb2ludDtcbiAgICAgIHZhciBjdHJsUHRUcmFucyA9IHRyYW5zZm9ybShjdHJsUHRbMF0sIGN0cmxQdFsxXSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgcHRzVHJhbnMsIGN0cmxQdFRyYW5zKTtcbiAgICB9LFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiBzdGFuZGFyZEdhcChlZGdlKSAqIDAuODtcbiAgICB9XG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCd0cmlhbmdsZS10ZWUnLCB7XG4gICAgcG9pbnRzOiBbMCwgMCwgMC4xNSwgLTAuMywgLTAuMTUsIC0wLjMsIDAsIDBdLFxuICAgIHBvaW50c1RlZTogWy0wLjE1LCAtMC40LCAtMC4xNSwgLTAuNSwgMC4xNSwgLTAuNSwgMC4xNSwgLTAuNF0sXG4gICAgY29sbGlkZTogZnVuY3Rpb24gY29sbGlkZSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCwgcGFkZGluZykge1xuICAgICAgdmFyIHRyaVB0cyA9IHBvaW50c1RvQXJyKHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSArIDIgKiBwYWRkaW5nLCBhbmdsZSwgdHJhbnNsYXRpb24pKTtcbiAgICAgIHZhciB0ZWVQdHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHNUZWUsIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICB2YXIgaW5zaWRlID0gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRyaVB0cykgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRlZVB0cyk7XG4gICAgICByZXR1cm4gaW5zaWRlO1xuICAgIH0sXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCkge1xuICAgICAgdmFyIHRyaVB0cyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHZhciB0ZWVQdHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHNUZWUsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbik7XG4gICAgICByZW5kZXJlci5hcnJvd1NoYXBlSW1wbCh0aGlzLm5hbWUpKGNvbnRleHQsIHRyaVB0cywgdGVlUHRzKTtcbiAgICB9XG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCdjaXJjbGUtdHJpYW5nbGUnLCB7XG4gICAgcmFkaXVzOiAwLjE1LFxuICAgIHBvaW50c1RyOiBbMCwgLTAuMTUsIDAuMTUsIC0wLjQ1LCAtMC4xNSwgLTAuNDUsIDAsIC0wLjE1XSxcbiAgICBjb2xsaWRlOiBmdW5jdGlvbiBjb2xsaWRlKHgsIHksIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbiwgZWRnZVdpZHRoLCBwYWRkaW5nKSB7XG4gICAgICB2YXIgdCA9IHRyYW5zbGF0aW9uO1xuICAgICAgdmFyIGNpcmNsZUluc2lkZSA9IE1hdGgucG93KHQueCAtIHgsIDIpICsgTWF0aC5wb3codC55IC0geSwgMikgPD0gTWF0aC5wb3coKHNpemUgKyAyICogcGFkZGluZykgKiB0aGlzLnJhZGl1cywgMik7XG4gICAgICB2YXIgdHJpUHRzID0gcG9pbnRzVG9BcnIodHJhbnNmb3JtUG9pbnRzKHRoaXMucG9pbnRzLCBzaXplICsgMiAqIHBhZGRpbmcsIGFuZ2xlLCB0cmFuc2xhdGlvbikpO1xuICAgICAgcmV0dXJuIHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCB0cmlQdHMpIHx8IGNpcmNsZUluc2lkZTtcbiAgICB9LFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgIHZhciB0cmlQdHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHNUciwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgdHJpUHRzLCB0cmFuc2xhdGlvbi54LCB0cmFuc2xhdGlvbi55LCB0aGlzLnJhZGl1cyAqIHNpemUpO1xuICAgIH0sXG4gICAgc3BhY2luZzogZnVuY3Rpb24gc3BhY2luZyhlZGdlKSB7XG4gICAgICByZXR1cm4gcmVuZGVyZXIuZ2V0QXJyb3dXaWR0aChlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlLCBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZSkgKiB0aGlzLnJhZGl1cztcbiAgICB9XG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCd0cmlhbmdsZS1jcm9zcycsIHtcbiAgICBwb2ludHM6IFswLCAwLCAwLjE1LCAtMC4zLCAtMC4xNSwgLTAuMywgMCwgMF0sXG4gICAgYmFzZUNyb3NzTGluZVB0czogWy0wLjE1LCAtMC40LCAvLyBmaXJzdCBoYWxmIG9mIHRoZSByZWN0YW5nbGVcbiAgICAtMC4xNSwgLTAuNCwgMC4xNSwgLTAuNCwgLy8gc2Vjb25kIGhhbGYgb2YgdGhlIHJlY3RhbmdsZVxuICAgIDAuMTUsIC0wLjRdLFxuICAgIGNyb3NzTGluZVB0czogZnVuY3Rpb24gY3Jvc3NMaW5lUHRzKHNpemUsIGVkZ2VXaWR0aCkge1xuICAgICAgLy8gc2hpZnQgcG9pbnRzIHNvIHRoYXQgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGNyb3NzIHBvaW50cyBtYXRjaGVzIGVkZ2Ugd2lkdGhcbiAgICAgIHZhciBwID0gdGhpcy5iYXNlQ3Jvc3NMaW5lUHRzLnNsaWNlKCk7XG4gICAgICB2YXIgc2hpZnRGYWN0b3IgPSBlZGdlV2lkdGggLyBzaXplO1xuICAgICAgdmFyIHkwID0gMztcbiAgICAgIHZhciB5MSA9IDU7XG4gICAgICBwW3kwXSA9IHBbeTBdIC0gc2hpZnRGYWN0b3I7XG4gICAgICBwW3kxXSA9IHBbeTFdIC0gc2hpZnRGYWN0b3I7XG4gICAgICByZXR1cm4gcDtcbiAgICB9LFxuICAgIGNvbGxpZGU6IGZ1bmN0aW9uIGNvbGxpZGUoeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgsIHBhZGRpbmcpIHtcbiAgICAgIHZhciB0cmlQdHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHMsIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICB2YXIgdGVlUHRzID0gcG9pbnRzVG9BcnIodHJhbnNmb3JtUG9pbnRzKHRoaXMuY3Jvc3NMaW5lUHRzKHNpemUsIGVkZ2VXaWR0aCksIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICB2YXIgaW5zaWRlID0gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRyaVB0cykgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRlZVB0cyk7XG4gICAgICByZXR1cm4gaW5zaWRlO1xuICAgIH0sXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCkge1xuICAgICAgdmFyIHRyaVB0cyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHZhciBjcm9zc0xpbmVQdHMgPSB0cmFuc2Zvcm1Qb2ludHModGhpcy5jcm9zc0xpbmVQdHMoc2l6ZSwgZWRnZVdpZHRoKSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgdHJpUHRzLCBjcm9zc0xpbmVQdHMpO1xuICAgIH1cbiAgfSk7XG4gIGRlZmluZUFycm93U2hhcGUoJ3ZlZScsIHtcbiAgICBwb2ludHM6IFstMC4xNSwgLTAuMywgMCwgMCwgMC4xNSwgLTAuMywgMCwgLTAuMTVdLFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiBzdGFuZGFyZEdhcChlZGdlKSAqIDAuNTI1O1xuICAgIH1cbiAgfSk7XG4gIGRlZmluZUFycm93U2hhcGUoJ2NpcmNsZScsIHtcbiAgICByYWRpdXM6IDAuMTUsXG4gICAgY29sbGlkZTogZnVuY3Rpb24gY29sbGlkZSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCwgcGFkZGluZykge1xuICAgICAgdmFyIHQgPSB0cmFuc2xhdGlvbjtcbiAgICAgIHZhciBpbnNpZGUgPSBNYXRoLnBvdyh0LnggLSB4LCAyKSArIE1hdGgucG93KHQueSAtIHksIDIpIDw9IE1hdGgucG93KChzaXplICsgMiAqIHBhZGRpbmcpICogdGhpcy5yYWRpdXMsIDIpO1xuICAgICAgcmV0dXJuIGluc2lkZTtcbiAgICB9LFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgdHJhbnNsYXRpb24ueCwgdHJhbnNsYXRpb24ueSwgdGhpcy5yYWRpdXMgKiBzaXplKTtcbiAgICB9LFxuICAgIHNwYWNpbmc6IGZ1bmN0aW9uIHNwYWNpbmcoZWRnZSkge1xuICAgICAgcmV0dXJuIHJlbmRlcmVyLmdldEFycm93V2lkdGgoZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSwgZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWUpICogdGhpcy5yYWRpdXM7XG4gICAgfVxuICB9KTtcbiAgZGVmaW5lQXJyb3dTaGFwZSgndGVlJywge1xuICAgIHBvaW50czogWy0wLjE1LCAwLCAtMC4xNSwgLTAuMSwgMC4xNSwgLTAuMSwgMC4xNSwgMF0sXG4gICAgc3BhY2luZzogZnVuY3Rpb24gc3BhY2luZyhlZGdlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9LFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSk7XG4gIGRlZmluZUFycm93U2hhcGUoJ3NxdWFyZScsIHtcbiAgICBwb2ludHM6IFstMC4xNSwgMC4wMCwgMC4xNSwgMC4wMCwgMC4xNSwgLTAuMywgLTAuMTUsIC0wLjNdXG4gIH0pO1xuICBkZWZpbmVBcnJvd1NoYXBlKCdkaWFtb25kJywge1xuICAgIHBvaW50czogWy0wLjE1LCAtMC4xNSwgMCwgLTAuMywgMC4xNSwgLTAuMTUsIDAsIDBdLFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlICogZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWU7XG4gICAgfVxuICB9KTtcbiAgZGVmaW5lQXJyb3dTaGFwZSgnY2hldnJvbicsIHtcbiAgICBwb2ludHM6IFswLCAwLCAtMC4xNSwgLTAuMTUsIC0wLjEsIC0wLjIsIDAsIC0wLjEsIDAuMSwgLTAuMiwgMC4xNSwgLTAuMTVdLFxuICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgIHJldHVybiAwLjk1ICogZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSAqIGVkZ2UucHN0eWxlKCdhcnJvdy1zY2FsZScpLnZhbHVlO1xuICAgIH1cbiAgfSk7XG59O1xuXG52YXIgQlJwJDEgPSB7fTsgLy8gUHJvamVjdCBtb3VzZVxuXG5CUnAkMS5wcm9qZWN0SW50b1ZpZXdwb3J0ID0gZnVuY3Rpb24gKGNsaWVudFgsIGNsaWVudFkpIHtcbiAgdmFyIGN5ID0gdGhpcy5jeTtcbiAgdmFyIG9mZnNldHMgPSB0aGlzLmZpbmRDb250YWluZXJDbGllbnRDb29yZHMoKTtcbiAgdmFyIG9mZnNldExlZnQgPSBvZmZzZXRzWzBdO1xuICB2YXIgb2Zmc2V0VG9wID0gb2Zmc2V0c1sxXTtcbiAgdmFyIHNjYWxlID0gb2Zmc2V0c1s0XTtcbiAgdmFyIHBhbiA9IGN5LnBhbigpO1xuICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgdmFyIHggPSAoKGNsaWVudFggLSBvZmZzZXRMZWZ0KSAvIHNjYWxlIC0gcGFuLngpIC8gem9vbTtcbiAgdmFyIHkgPSAoKGNsaWVudFkgLSBvZmZzZXRUb3ApIC8gc2NhbGUgLSBwYW4ueSkgLyB6b29tO1xuICByZXR1cm4gW3gsIHldO1xufTtcblxuQlJwJDEuZmluZENvbnRhaW5lckNsaWVudENvb3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY29udGFpbmVyQkIpIHtcbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJCQjtcbiAgfVxuXG4gIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcjtcbiAgdmFyIHJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzdHlsZSA9IHdpbmRvdyQxLmdldENvbXB1dGVkU3R5bGUoY29udGFpbmVyKTtcblxuICB2YXIgc3R5bGVWYWx1ZSA9IGZ1bmN0aW9uIHN0eWxlVmFsdWUobmFtZSkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSkpO1xuICB9O1xuXG4gIHZhciBwYWRkaW5nID0ge1xuICAgIGxlZnQ6IHN0eWxlVmFsdWUoJ3BhZGRpbmctbGVmdCcpLFxuICAgIHJpZ2h0OiBzdHlsZVZhbHVlKCdwYWRkaW5nLXJpZ2h0JyksXG4gICAgdG9wOiBzdHlsZVZhbHVlKCdwYWRkaW5nLXRvcCcpLFxuICAgIGJvdHRvbTogc3R5bGVWYWx1ZSgncGFkZGluZy1ib3R0b20nKVxuICB9O1xuICB2YXIgYm9yZGVyID0ge1xuICAgIGxlZnQ6IHN0eWxlVmFsdWUoJ2JvcmRlci1sZWZ0LXdpZHRoJyksXG4gICAgcmlnaHQ6IHN0eWxlVmFsdWUoJ2JvcmRlci1yaWdodC13aWR0aCcpLFxuICAgIHRvcDogc3R5bGVWYWx1ZSgnYm9yZGVyLXRvcC13aWR0aCcpLFxuICAgIGJvdHRvbTogc3R5bGVWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpXG4gIH07XG4gIHZhciBjbGllbnRXaWR0aCA9IGNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgdmFyIGNsaWVudEhlaWdodCA9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XG4gIHZhciBwYWRkaW5nSG9yID0gcGFkZGluZy5sZWZ0ICsgcGFkZGluZy5yaWdodDtcbiAgdmFyIHBhZGRpbmdWZXIgPSBwYWRkaW5nLnRvcCArIHBhZGRpbmcuYm90dG9tO1xuICB2YXIgYm9yZGVySG9yID0gYm9yZGVyLmxlZnQgKyBib3JkZXIucmlnaHQ7XG4gIHZhciBzY2FsZSA9IHJlY3Qud2lkdGggLyAoY2xpZW50V2lkdGggKyBib3JkZXJIb3IpO1xuICB2YXIgdW5zY2FsZWRXID0gY2xpZW50V2lkdGggLSBwYWRkaW5nSG9yO1xuICB2YXIgdW5zY2FsZWRIID0gY2xpZW50SGVpZ2h0IC0gcGFkZGluZ1ZlcjtcbiAgdmFyIGxlZnQgPSByZWN0LmxlZnQgKyBwYWRkaW5nLmxlZnQgKyBib3JkZXIubGVmdDtcbiAgdmFyIHRvcCA9IHJlY3QudG9wICsgcGFkZGluZy50b3AgKyBib3JkZXIudG9wO1xuICByZXR1cm4gdGhpcy5jb250YWluZXJCQiA9IFtsZWZ0LCB0b3AsIHVuc2NhbGVkVywgdW5zY2FsZWRILCBzY2FsZV07XG59O1xuXG5CUnAkMS5pbnZhbGlkYXRlQ29udGFpbmVyQ2xpZW50Q29vcmRzQ2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY29udGFpbmVyQkIgPSBudWxsO1xufTtcblxuQlJwJDEuZmluZE5lYXJlc3RFbGVtZW50ID0gZnVuY3Rpb24gKHgsIHksIGludGVyYWN0aXZlRWxlbWVudHNPbmx5LCBpc1RvdWNoKSB7XG4gIHJldHVybiB0aGlzLmZpbmROZWFyZXN0RWxlbWVudHMoeCwgeSwgaW50ZXJhY3RpdmVFbGVtZW50c09ubHksIGlzVG91Y2gpWzBdO1xufTtcblxuQlJwJDEuZmluZE5lYXJlc3RFbGVtZW50cyA9IGZ1bmN0aW9uICh4LCB5LCBpbnRlcmFjdGl2ZUVsZW1lbnRzT25seSwgaXNUb3VjaCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIGVsZXMgPSByLmdldENhY2hlZFpTb3J0ZWRFbGVzKCk7XG4gIHZhciBuZWFyID0gW107IC8vIDEgbm9kZSBtYXgsIDEgZWRnZSBtYXhcblxuICB2YXIgem9vbSA9IHIuY3kuem9vbSgpO1xuICB2YXIgaGFzQ29tcG91bmRzID0gci5jeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBlZGdlVGhyZXNob2xkID0gKGlzVG91Y2ggPyAyNCA6IDgpIC8gem9vbTtcbiAgdmFyIG5vZGVUaHJlc2hvbGQgPSAoaXNUb3VjaCA/IDggOiAyKSAvIHpvb207XG4gIHZhciBsYWJlbFRocmVzaG9sZCA9IChpc1RvdWNoID8gOCA6IDIpIC8gem9vbTtcbiAgdmFyIG1pblNxRGlzdCA9IEluZmluaXR5O1xuICB2YXIgbmVhckVkZ2U7XG4gIHZhciBuZWFyTm9kZTtcblxuICBpZiAoaW50ZXJhY3RpdmVFbGVtZW50c09ubHkpIHtcbiAgICBlbGVzID0gZWxlcy5pbnRlcmFjdGl2ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZEVsZShlbGUsIHNxRGlzdCkge1xuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIGlmIChuZWFyTm9kZSkge1xuICAgICAgICByZXR1cm47IC8vIGNhbid0IHJlcGxhY2Ugbm9kZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmVhck5vZGUgPSBlbGU7XG4gICAgICAgIG5lYXIucHVzaChlbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbGUuaXNFZGdlKCkgJiYgKHNxRGlzdCA9PSBudWxsIHx8IHNxRGlzdCA8IG1pblNxRGlzdCkpIHtcbiAgICAgIGlmIChuZWFyRWRnZSkge1xuICAgICAgICAvLyB0aGVuIHJlcGxhY2UgZXhpc3RpbmcgZWRnZVxuICAgICAgICAvLyBjYW4gcmVwbGFjZSBvbmx5IGlmIHNhbWUgei1pbmRleFxuICAgICAgICBpZiAobmVhckVkZ2UucHN0eWxlKCd6LWNvbXBvdW5kLWRlcHRoJykudmFsdWUgPT09IGVsZS5wc3R5bGUoJ3otY29tcG91bmQtZGVwdGgnKS52YWx1ZSAmJiBuZWFyRWRnZS5wc3R5bGUoJ3otY29tcG91bmQtZGVwdGgnKS52YWx1ZSA9PT0gZWxlLnBzdHlsZSgnei1jb21wb3VuZC1kZXB0aCcpLnZhbHVlKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWFyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobmVhcltpXS5pc0VkZ2UoKSkge1xuICAgICAgICAgICAgICBuZWFyW2ldID0gZWxlO1xuICAgICAgICAgICAgICBuZWFyRWRnZSA9IGVsZTtcbiAgICAgICAgICAgICAgbWluU3FEaXN0ID0gc3FEaXN0ICE9IG51bGwgPyBzcURpc3QgOiBtaW5TcURpc3Q7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmVhci5wdXNoKGVsZSk7XG4gICAgICAgIG5lYXJFZGdlID0gZWxlO1xuICAgICAgICBtaW5TcURpc3QgPSBzcURpc3QgIT0gbnVsbCA/IHNxRGlzdCA6IG1pblNxRGlzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjaGVja05vZGUobm9kZSkge1xuICAgIHZhciB3aWR0aCA9IG5vZGUub3V0ZXJXaWR0aCgpICsgMiAqIG5vZGVUaHJlc2hvbGQ7XG4gICAgdmFyIGhlaWdodCA9IG5vZGUub3V0ZXJIZWlnaHQoKSArIDIgKiBub2RlVGhyZXNob2xkO1xuICAgIHZhciBodyA9IHdpZHRoIC8gMjtcbiAgICB2YXIgaGggPSBoZWlnaHQgLyAyO1xuICAgIHZhciBwb3MgPSBub2RlLnBvc2l0aW9uKCk7XG5cbiAgICBpZiAocG9zLnggLSBodyA8PSB4ICYmIHggPD0gcG9zLnggKyBodyAvLyBiYiBjaGVjayB4XG4gICAgJiYgcG9zLnkgLSBoaCA8PSB5ICYmIHkgPD0gcG9zLnkgKyBoaCAvLyBiYiBjaGVjayB5XG4gICAgKSB7XG4gICAgICAgIHZhciBzaGFwZSA9IHIubm9kZVNoYXBlc1tzZWxmLmdldE5vZGVTaGFwZShub2RlKV07XG5cbiAgICAgICAgaWYgKHNoYXBlLmNoZWNrUG9pbnQoeCwgeSwgMCwgd2lkdGgsIGhlaWdodCwgcG9zLngsIHBvcy55KSkge1xuICAgICAgICAgIGFkZEVsZShub2RlLCAwKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2hlY2tFZGdlKGVkZ2UpIHtcbiAgICB2YXIgX3AgPSBlZGdlLl9wcml2YXRlO1xuICAgIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICAgIHZhciBzdHlsZVdpZHRoID0gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgc2NhbGUgPSBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZTtcbiAgICB2YXIgd2lkdGggPSBzdHlsZVdpZHRoIC8gMiArIGVkZ2VUaHJlc2hvbGQ7IC8vIG1vcmUgbGlrZSBhIGRpc3RhbmNlIHJhZGl1cyBmcm9tIGNlbnRyZVxuXG4gICAgdmFyIHdpZHRoU3EgPSB3aWR0aCAqIHdpZHRoO1xuICAgIHZhciB3aWR0aDIgPSB3aWR0aCAqIDI7XG4gICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgIHZhciBzcURpc3Q7XG5cbiAgICBpZiAocnMuZWRnZVR5cGUgPT09ICdzZWdtZW50cycgfHwgcnMuZWRnZVR5cGUgPT09ICdzdHJhaWdodCcgfHwgcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjaycpIHtcbiAgICAgIHZhciBwdHMgPSBycy5hbGxwdHM7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpICsgMyA8IHB0cy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICBpZiAoaW5MaW5lVmljaW5pdHkoeCwgeSwgcHRzW2ldLCBwdHNbaSArIDFdLCBwdHNbaSArIDJdLCBwdHNbaSArIDNdLCB3aWR0aDIpICYmIHdpZHRoU3EgPiAoc3FEaXN0ID0gc3FkaXN0VG9GaW5pdGVMaW5lKHgsIHksIHB0c1tpXSwgcHRzW2kgKyAxXSwgcHRzW2kgKyAyXSwgcHRzW2kgKyAzXSkpKSB7XG4gICAgICAgICAgYWRkRWxlKGVkZ2UsIHNxRGlzdCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJzLmVkZ2VUeXBlID09PSAnYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ3NlbGYnIHx8IHJzLmVkZ2VUeXBlID09PSAnY29tcG91bmQnKSB7XG4gICAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSArIDUgPCBycy5hbGxwdHMubGVuZ3RoOyBpICs9IDQpIHtcbiAgICAgICAgaWYgKGluQmV6aWVyVmljaW5pdHkoeCwgeSwgcHRzW2ldLCBwdHNbaSArIDFdLCBwdHNbaSArIDJdLCBwdHNbaSArIDNdLCBwdHNbaSArIDRdLCBwdHNbaSArIDVdLCB3aWR0aDIpICYmIHdpZHRoU3EgPiAoc3FEaXN0ID0gc3FkaXN0VG9RdWFkcmF0aWNCZXppZXIoeCwgeSwgcHRzW2ldLCBwdHNbaSArIDFdLCBwdHNbaSArIDJdLCBwdHNbaSArIDNdLCBwdHNbaSArIDRdLCBwdHNbaSArIDVdKSkpIHtcbiAgICAgICAgICBhZGRFbGUoZWRnZSwgc3FEaXN0KTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gaWYgd2UncmUgY2xvc2UgdG8gdGhlIGVkZ2UgYnV0IGRpZG4ndCBoaXQgaXQsIG1heWJlIHdlIGhpdCBpdHMgYXJyb3dzXG5cblxuICAgIHZhciBzcmMgPSBzcmMgfHwgX3Auc291cmNlO1xuICAgIHZhciB0Z3QgPSB0Z3QgfHwgX3AudGFyZ2V0O1xuICAgIHZhciBhclNpemUgPSBzZWxmLmdldEFycm93V2lkdGgoc3R5bGVXaWR0aCwgc2NhbGUpO1xuICAgIHZhciBhcnJvd3MgPSBbe1xuICAgICAgbmFtZTogJ3NvdXJjZScsXG4gICAgICB4OiBycy5hcnJvd1N0YXJ0WCxcbiAgICAgIHk6IHJzLmFycm93U3RhcnRZLFxuICAgICAgYW5nbGU6IHJzLnNyY0Fycm93QW5nbGVcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGFyZ2V0JyxcbiAgICAgIHg6IHJzLmFycm93RW5kWCxcbiAgICAgIHk6IHJzLmFycm93RW5kWSxcbiAgICAgIGFuZ2xlOiBycy50Z3RBcnJvd0FuZ2xlXG4gICAgfSwge1xuICAgICAgbmFtZTogJ21pZC1zb3VyY2UnLFxuICAgICAgeDogcnMubWlkWCxcbiAgICAgIHk6IHJzLm1pZFksXG4gICAgICBhbmdsZTogcnMubWlkc3JjQXJyb3dBbmdsZVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdtaWQtdGFyZ2V0JyxcbiAgICAgIHg6IHJzLm1pZFgsXG4gICAgICB5OiBycy5taWRZLFxuICAgICAgYW5nbGU6IHJzLm1pZHRndEFycm93QW5nbGVcbiAgICB9XTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYXIgPSBhcnJvd3NbaV07XG4gICAgICB2YXIgc2hhcGUgPSByLmFycm93U2hhcGVzW2VkZ2UucHN0eWxlKGFyLm5hbWUgKyAnLWFycm93LXNoYXBlJykudmFsdWVdO1xuICAgICAgdmFyIGVkZ2VXaWR0aCA9IGVkZ2UucHN0eWxlKCd3aWR0aCcpLnBmVmFsdWU7XG5cbiAgICAgIGlmIChzaGFwZS5yb3VnaENvbGxpZGUoeCwgeSwgYXJTaXplLCBhci5hbmdsZSwge1xuICAgICAgICB4OiBhci54LFxuICAgICAgICB5OiBhci55XG4gICAgICB9LCBlZGdlV2lkdGgsIGVkZ2VUaHJlc2hvbGQpICYmIHNoYXBlLmNvbGxpZGUoeCwgeSwgYXJTaXplLCBhci5hbmdsZSwge1xuICAgICAgICB4OiBhci54LFxuICAgICAgICB5OiBhci55XG4gICAgICB9LCBlZGdlV2lkdGgsIGVkZ2VUaHJlc2hvbGQpKSB7XG4gICAgICAgIGFkZEVsZShlZGdlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSAvLyBmb3IgY29tcG91bmQgZ3JhcGhzLCBoaXR0aW5nIGVkZ2UgbWF5IGFjdHVhbGx5IHdhbnQgYSBjb25uZWN0ZWQgbm9kZSBpbnN0ZWFkIChiL2MgZWRnZSBtYXkgaGF2ZSBncmVhdGVyIHotaW5kZXggcHJlY2VkZW5jZSlcblxuXG4gICAgaWYgKGhhc0NvbXBvdW5kcyAmJiBuZWFyLmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrTm9kZShzcmMpO1xuICAgICAgY2hlY2tOb2RlKHRndCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcHJlcHJvcChvYmosIG5hbWUsIHByZSkge1xuICAgIHJldHVybiBnZXRQcmVmaXhlZFByb3BlcnR5KG9iaiwgbmFtZSwgcHJlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNoZWNrTGFiZWwoZWxlLCBwcmVmaXgpIHtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgdmFyIHRoID0gbGFiZWxUaHJlc2hvbGQ7XG4gICAgdmFyIHByZWZpeERhc2g7XG5cbiAgICBpZiAocHJlZml4KSB7XG4gICAgICBwcmVmaXhEYXNoID0gcHJlZml4ICsgJy0nO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaXhEYXNoID0gJyc7XG4gICAgfVxuXG4gICAgZWxlLmJvdW5kaW5nQm94KCk7XG4gICAgdmFyIGJiID0gX3AubGFiZWxCb3VuZHNbcHJlZml4IHx8ICdtYWluJ107XG4gICAgdmFyIHRleHQgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAnbGFiZWwnKS52YWx1ZTtcbiAgICB2YXIgZXZlbnRzRW5hYmxlZCA9IGVsZS5wc3R5bGUoJ3RleHQtZXZlbnRzJykuc3RyVmFsdWUgPT09ICd5ZXMnO1xuXG4gICAgaWYgKCFldmVudHNFbmFibGVkIHx8ICF0ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGx4ID0gcHJlcHJvcChfcC5yc2NyYXRjaCwgJ2xhYmVsWCcsIHByZWZpeCk7XG4gICAgdmFyIGx5ID0gcHJlcHJvcChfcC5yc2NyYXRjaCwgJ2xhYmVsWScsIHByZWZpeCk7XG4gICAgdmFyIHRoZXRhID0gcHJlcHJvcChfcC5yc2NyYXRjaCwgJ2xhYmVsQW5nbGUnLCBwcmVmaXgpO1xuICAgIHZhciBveCA9IGVsZS5wc3R5bGUocHJlZml4RGFzaCArICd0ZXh0LW1hcmdpbi14JykucGZWYWx1ZTtcbiAgICB2YXIgb3kgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teScpLnBmVmFsdWU7XG4gICAgdmFyIGx4MSA9IGJiLngxIC0gdGggLSBveDsgLy8gKC1veCwgLW95KSBhcyBiYiBhbHJlYWR5IGluY2x1ZGVzIG1hcmdpblxuXG4gICAgdmFyIGx4MiA9IGJiLngyICsgdGggLSBveDsgLy8gYW5kIHJvdGF0aW9uIGlzIGFib3V0IChseCwgbHkpXG5cbiAgICB2YXIgbHkxID0gYmIueTEgLSB0aCAtIG95O1xuICAgIHZhciBseTIgPSBiYi55MiArIHRoIC0gb3k7XG5cbiAgICBpZiAodGhldGEpIHtcbiAgICAgIHZhciBjb3MgPSBNYXRoLmNvcyh0aGV0YSk7XG4gICAgICB2YXIgc2luID0gTWF0aC5zaW4odGhldGEpO1xuXG4gICAgICB2YXIgcm90YXRlID0gZnVuY3Rpb24gcm90YXRlKHgsIHkpIHtcbiAgICAgICAgeCA9IHggLSBseDtcbiAgICAgICAgeSA9IHkgLSBseTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB4ICogY29zIC0geSAqIHNpbiArIGx4LFxuICAgICAgICAgIHk6IHggKiBzaW4gKyB5ICogY29zICsgbHlcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBweDF5MSA9IHJvdGF0ZShseDEsIGx5MSk7XG4gICAgICB2YXIgcHgxeTIgPSByb3RhdGUobHgxLCBseTIpO1xuICAgICAgdmFyIHB4MnkxID0gcm90YXRlKGx4MiwgbHkxKTtcbiAgICAgIHZhciBweDJ5MiA9IHJvdGF0ZShseDIsIGx5Mik7XG4gICAgICB2YXIgcG9pbnRzID0gWy8vIHdpdGggdGhlIG1hcmdpbiBhZGRlZCBhZnRlciB0aGUgcm90YXRpb24gaXMgYXBwbGllZFxuICAgICAgcHgxeTEueCArIG94LCBweDF5MS55ICsgb3ksIHB4MnkxLnggKyBveCwgcHgyeTEueSArIG95LCBweDJ5Mi54ICsgb3gsIHB4MnkyLnkgKyBveSwgcHgxeTIueCArIG94LCBweDF5Mi55ICsgb3ldO1xuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHBvaW50cykpIHtcbiAgICAgICAgYWRkRWxlKGVsZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkbyBhIGNoZWFwZXIgYmIgY2hlY2tcbiAgICAgIGlmIChpbkJvdW5kaW5nQm94KGJiLCB4LCB5KSkge1xuICAgICAgICBhZGRFbGUoZWxlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IGVsZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAvLyByZXZlcnNlIG9yZGVyIGZvciBwcmVjZWRlbmNlXG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICBjaGVja05vZGUoZWxlKSB8fCBjaGVja0xhYmVsKGVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoZW4gZWRnZVxuICAgICAgY2hlY2tFZGdlKGVsZSkgfHwgY2hlY2tMYWJlbChlbGUpIHx8IGNoZWNrTGFiZWwoZWxlLCAnc291cmNlJykgfHwgY2hlY2tMYWJlbChlbGUsICd0YXJnZXQnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmVhcjtcbn07IC8vICdHaXZlIG1lIGV2ZXJ5dGhpbmcgZnJvbSB0aGlzIGJveCdcblxuXG5CUnAkMS5nZXRBbGxJbkJveCA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5Mikge1xuICB2YXIgZWxlcyA9IHRoaXMuZ2V0Q2FjaGVkWlNvcnRlZEVsZXMoKS5pbnRlcmFjdGl2ZTtcbiAgdmFyIGJveCA9IFtdO1xuICB2YXIgeDFjID0gTWF0aC5taW4oeDEsIHgyKTtcbiAgdmFyIHgyYyA9IE1hdGgubWF4KHgxLCB4Mik7XG4gIHZhciB5MWMgPSBNYXRoLm1pbih5MSwgeTIpO1xuICB2YXIgeTJjID0gTWF0aC5tYXgoeTEsIHkyKTtcbiAgeDEgPSB4MWM7XG4gIHgyID0geDJjO1xuICB5MSA9IHkxYztcbiAgeTIgPSB5MmM7XG4gIHZhciBib3hCYiA9IG1ha2VCb3VuZGluZ0JveCh7XG4gICAgeDE6IHgxLFxuICAgIHkxOiB5MSxcbiAgICB4MjogeDIsXG4gICAgeTI6IHkyXG4gIH0pO1xuXG4gIGZvciAodmFyIGUgPSAwOyBlIDwgZWxlcy5sZW5ndGg7IGUrKykge1xuICAgIHZhciBlbGUgPSBlbGVzW2VdO1xuXG4gICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgdmFyIG5vZGUgPSBlbGU7XG4gICAgICB2YXIgbm9kZUJiID0gbm9kZS5ib3VuZGluZ0JveCh7XG4gICAgICAgIGluY2x1ZGVOb2RlczogdHJ1ZSxcbiAgICAgICAgaW5jbHVkZUVkZ2VzOiBmYWxzZSxcbiAgICAgICAgaW5jbHVkZUxhYmVsczogZmFsc2VcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYm91bmRpbmdCb3hlc0ludGVyc2VjdChib3hCYiwgbm9kZUJiKSAmJiAhYm91bmRpbmdCb3hJbkJvdW5kaW5nQm94KG5vZGVCYiwgYm94QmIpKSB7XG4gICAgICAgIGJveC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZWRnZSA9IGVsZTtcbiAgICAgIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gICAgICB2YXIgcnMgPSBfcC5yc2NyYXRjaDtcblxuICAgICAgaWYgKHJzLnN0YXJ0WCAhPSBudWxsICYmIHJzLnN0YXJ0WSAhPSBudWxsICYmICFpbkJvdW5kaW5nQm94KGJveEJiLCBycy5zdGFydFgsIHJzLnN0YXJ0WSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChycy5lbmRYICE9IG51bGwgJiYgcnMuZW5kWSAhPSBudWxsICYmICFpbkJvdW5kaW5nQm94KGJveEJiLCBycy5lbmRYLCBycy5lbmRZKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJzLmVkZ2VUeXBlID09PSAnYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ3NlbGYnIHx8IHJzLmVkZ2VUeXBlID09PSAnY29tcG91bmQnIHx8IHJzLmVkZ2VUeXBlID09PSAnc2VnbWVudHMnIHx8IHJzLmVkZ2VUeXBlID09PSAnaGF5c3RhY2snKSB7XG4gICAgICAgIHZhciBwdHMgPSBfcC5yc3R5bGUuYmV6aWVyUHRzIHx8IF9wLnJzdHlsZS5saW5lUHRzIHx8IF9wLnJzdHlsZS5oYXlzdGFja1B0cztcbiAgICAgICAgdmFyIGFsbEluc2lkZSA9IHRydWU7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoIXBvaW50SW5Cb3VuZGluZ0JveChib3hCYiwgcHRzW2ldKSkge1xuICAgICAgICAgICAgYWxsSW5zaWRlID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsSW5zaWRlKSB7XG4gICAgICAgICAgYm94LnB1c2goZWRnZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjaycgfHwgcnMuZWRnZVR5cGUgPT09ICdzdHJhaWdodCcpIHtcbiAgICAgICAgYm94LnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJveDtcbn07XG5cbnZhciBCUnAkMiA9IHt9O1xuXG5CUnAkMi5jYWxjdWxhdGVBcnJvd0FuZ2xlcyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBpc0hheXN0YWNrID0gcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjayc7XG4gIHZhciBpc0JlemllciA9IHJzLmVkZ2VUeXBlID09PSAnYmV6aWVyJztcbiAgdmFyIGlzTXVsdGliZXppZXIgPSBycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJztcbiAgdmFyIGlzU2VnbWVudHMgPSBycy5lZGdlVHlwZSA9PT0gJ3NlZ21lbnRzJztcbiAgdmFyIGlzQ29tcG91bmQgPSBycy5lZGdlVHlwZSA9PT0gJ2NvbXBvdW5kJztcbiAgdmFyIGlzU2VsZiA9IHJzLmVkZ2VUeXBlID09PSAnc2VsZic7IC8vIERpc3BsYWNlbWVudCBnaXZlcyBkaXJlY3Rpb24gZm9yIGFycm93aGVhZCBvcmllbnRhdGlvblxuXG4gIHZhciBkaXNwWCwgZGlzcFk7XG4gIHZhciBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgbWlkWCwgbWlkWTtcblxuICBpZiAoaXNIYXlzdGFjaykge1xuICAgIHN0YXJ0WCA9IHJzLmhheXN0YWNrUHRzWzBdO1xuICAgIHN0YXJ0WSA9IHJzLmhheXN0YWNrUHRzWzFdO1xuICAgIGVuZFggPSBycy5oYXlzdGFja1B0c1syXTtcbiAgICBlbmRZID0gcnMuaGF5c3RhY2tQdHNbM107XG4gIH0gZWxzZSB7XG4gICAgc3RhcnRYID0gcnMuYXJyb3dTdGFydFg7XG4gICAgc3RhcnRZID0gcnMuYXJyb3dTdGFydFk7XG4gICAgZW5kWCA9IHJzLmFycm93RW5kWDtcbiAgICBlbmRZID0gcnMuYXJyb3dFbmRZO1xuICB9XG5cbiAgbWlkWCA9IHJzLm1pZFg7XG4gIG1pZFkgPSBycy5taWRZOyAvLyBzb3VyY2VcbiAgLy9cblxuICBpZiAoaXNTZWdtZW50cykge1xuICAgIGRpc3BYID0gc3RhcnRYIC0gcnMuc2VncHRzWzBdO1xuICAgIGRpc3BZID0gc3RhcnRZIC0gcnMuc2VncHRzWzFdO1xuICB9IGVsc2UgaWYgKGlzTXVsdGliZXppZXIgfHwgaXNDb21wb3VuZCB8fCBpc1NlbGYgfHwgaXNCZXppZXIpIHtcbiAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuICAgIHZhciBiWCA9IHFiZXppZXJBdChwdHNbMF0sIHB0c1syXSwgcHRzWzRdLCAwLjEpO1xuICAgIHZhciBiWSA9IHFiZXppZXJBdChwdHNbMV0sIHB0c1szXSwgcHRzWzVdLCAwLjEpO1xuICAgIGRpc3BYID0gc3RhcnRYIC0gYlg7XG4gICAgZGlzcFkgPSBzdGFydFkgLSBiWTtcbiAgfSBlbHNlIHtcbiAgICBkaXNwWCA9IHN0YXJ0WCAtIG1pZFg7XG4gICAgZGlzcFkgPSBzdGFydFkgLSBtaWRZO1xuICB9XG5cbiAgcnMuc3JjQXJyb3dBbmdsZSA9IGdldEFuZ2xlRnJvbURpc3AoZGlzcFgsIGRpc3BZKTsgLy8gbWlkIHRhcmdldFxuICAvL1xuXG4gIHZhciBtaWRYID0gcnMubWlkWDtcbiAgdmFyIG1pZFkgPSBycy5taWRZO1xuXG4gIGlmIChpc0hheXN0YWNrKSB7XG4gICAgbWlkWCA9IChzdGFydFggKyBlbmRYKSAvIDI7XG4gICAgbWlkWSA9IChzdGFydFkgKyBlbmRZKSAvIDI7XG4gIH1cblxuICBkaXNwWCA9IGVuZFggLSBzdGFydFg7XG4gIGRpc3BZID0gZW5kWSAtIHN0YXJ0WTtcblxuICBpZiAoaXNTZWdtZW50cykge1xuICAgIHZhciBwdHMgPSBycy5hbGxwdHM7XG5cbiAgICBpZiAocHRzLmxlbmd0aCAvIDIgJSAyID09PSAwKSB7XG4gICAgICB2YXIgaTIgPSBwdHMubGVuZ3RoIC8gMjtcbiAgICAgIHZhciBpMSA9IGkyIC0gMjtcbiAgICAgIGRpc3BYID0gcHRzW2kyXSAtIHB0c1tpMV07XG4gICAgICBkaXNwWSA9IHB0c1tpMiArIDFdIC0gcHRzW2kxICsgMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpMiA9IHB0cy5sZW5ndGggLyAyIC0gMTtcbiAgICAgIHZhciBpMSA9IGkyIC0gMjtcbiAgICAgIHZhciBpMyA9IGkyICsgMjtcbiAgICAgIGRpc3BYID0gcHRzW2kyXSAtIHB0c1tpMV07XG4gICAgICBkaXNwWSA9IHB0c1tpMiArIDFdIC0gcHRzW2kxICsgMV07XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzTXVsdGliZXppZXIgfHwgaXNDb21wb3VuZCB8fCBpc1NlbGYpIHtcbiAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuICAgIHZhciBjcHRzID0gcnMuY3RybHB0cztcbiAgICB2YXIgYnAweCwgYnAweTtcbiAgICB2YXIgYnAxeCwgYnAxeTtcblxuICAgIGlmIChjcHRzLmxlbmd0aCAvIDIgJSAyID09PSAwKSB7XG4gICAgICB2YXIgcDAgPSBwdHMubGVuZ3RoIC8gMiAtIDE7IC8vIHN0YXJ0cHRcblxuICAgICAgdmFyIGljID0gcDAgKyAyO1xuICAgICAgdmFyIHAxID0gaWMgKyAyO1xuICAgICAgYnAweCA9IHFiZXppZXJBdChwdHNbcDBdLCBwdHNbaWNdLCBwdHNbcDFdLCAwLjApO1xuICAgICAgYnAweSA9IHFiZXppZXJBdChwdHNbcDAgKyAxXSwgcHRzW2ljICsgMV0sIHB0c1twMSArIDFdLCAwLjApO1xuICAgICAgYnAxeCA9IHFiZXppZXJBdChwdHNbcDBdLCBwdHNbaWNdLCBwdHNbcDFdLCAwLjAwMDEpO1xuICAgICAgYnAxeSA9IHFiZXppZXJBdChwdHNbcDAgKyAxXSwgcHRzW2ljICsgMV0sIHB0c1twMSArIDFdLCAwLjAwMDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgaWMgPSBwdHMubGVuZ3RoIC8gMiAtIDE7IC8vIGN0cnB0XG5cbiAgICAgIHZhciBwMCA9IGljIC0gMjsgLy8gc3RhcnRwdFxuXG4gICAgICB2YXIgcDEgPSBpYyArIDI7IC8vIGVuZHB0XG5cbiAgICAgIGJwMHggPSBxYmV6aWVyQXQocHRzW3AwXSwgcHRzW2ljXSwgcHRzW3AxXSwgMC40OTk5KTtcbiAgICAgIGJwMHkgPSBxYmV6aWVyQXQocHRzW3AwICsgMV0sIHB0c1tpYyArIDFdLCBwdHNbcDEgKyAxXSwgMC40OTk5KTtcbiAgICAgIGJwMXggPSBxYmV6aWVyQXQocHRzW3AwXSwgcHRzW2ljXSwgcHRzW3AxXSwgMC41KTtcbiAgICAgIGJwMXkgPSBxYmV6aWVyQXQocHRzW3AwICsgMV0sIHB0c1tpYyArIDFdLCBwdHNbcDEgKyAxXSwgMC41KTtcbiAgICB9XG5cbiAgICBkaXNwWCA9IGJwMXggLSBicDB4O1xuICAgIGRpc3BZID0gYnAxeSAtIGJwMHk7XG4gIH1cblxuICBycy5taWR0Z3RBcnJvd0FuZ2xlID0gZ2V0QW5nbGVGcm9tRGlzcChkaXNwWCwgZGlzcFkpO1xuICBycy5taWREaXNwWCA9IGRpc3BYO1xuICBycy5taWREaXNwWSA9IGRpc3BZOyAvLyBtaWQgc291cmNlXG4gIC8vXG5cbiAgZGlzcFggKj0gLTE7XG4gIGRpc3BZICo9IC0xO1xuXG4gIGlmIChpc1NlZ21lbnRzKSB7XG4gICAgdmFyIHB0cyA9IHJzLmFsbHB0cztcblxuICAgIGlmIChwdHMubGVuZ3RoIC8gMiAlIDIgPT09IDApIDsgZWxzZSB7XG4gICAgICB2YXIgaTIgPSBwdHMubGVuZ3RoIC8gMiAtIDE7XG4gICAgICB2YXIgaTMgPSBpMiArIDI7XG4gICAgICBkaXNwWCA9IC0ocHRzW2kzXSAtIHB0c1tpMl0pO1xuICAgICAgZGlzcFkgPSAtKHB0c1tpMyArIDFdIC0gcHRzW2kyICsgMV0pO1xuICAgIH1cbiAgfVxuXG4gIHJzLm1pZHNyY0Fycm93QW5nbGUgPSBnZXRBbmdsZUZyb21EaXNwKGRpc3BYLCBkaXNwWSk7IC8vIHRhcmdldFxuICAvL1xuXG4gIGlmIChpc1NlZ21lbnRzKSB7XG4gICAgZGlzcFggPSBlbmRYIC0gcnMuc2VncHRzW3JzLnNlZ3B0cy5sZW5ndGggLSAyXTtcbiAgICBkaXNwWSA9IGVuZFkgLSBycy5zZWdwdHNbcnMuc2VncHRzLmxlbmd0aCAtIDFdO1xuICB9IGVsc2UgaWYgKGlzTXVsdGliZXppZXIgfHwgaXNDb21wb3VuZCB8fCBpc1NlbGYgfHwgaXNCZXppZXIpIHtcbiAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuICAgIHZhciBsID0gcHRzLmxlbmd0aDtcbiAgICB2YXIgYlggPSBxYmV6aWVyQXQocHRzW2wgLSA2XSwgcHRzW2wgLSA0XSwgcHRzW2wgLSAyXSwgMC45KTtcbiAgICB2YXIgYlkgPSBxYmV6aWVyQXQocHRzW2wgLSA1XSwgcHRzW2wgLSAzXSwgcHRzW2wgLSAxXSwgMC45KTtcbiAgICBkaXNwWCA9IGVuZFggLSBiWDtcbiAgICBkaXNwWSA9IGVuZFkgLSBiWTtcbiAgfSBlbHNlIHtcbiAgICBkaXNwWCA9IGVuZFggLSBtaWRYO1xuICAgIGRpc3BZID0gZW5kWSAtIG1pZFk7XG4gIH1cblxuICBycy50Z3RBcnJvd0FuZ2xlID0gZ2V0QW5nbGVGcm9tRGlzcChkaXNwWCwgZGlzcFkpO1xufTtcblxuQlJwJDIuZ2V0QXJyb3dXaWR0aCA9IEJScCQyLmdldEFycm93SGVpZ2h0ID0gZnVuY3Rpb24gKGVkZ2VXaWR0aCwgc2NhbGUpIHtcbiAgdmFyIGNhY2hlID0gdGhpcy5hcnJvd1dpZHRoQ2FjaGUgPSB0aGlzLmFycm93V2lkdGhDYWNoZSB8fCB7fTtcbiAgdmFyIGNhY2hlZFZhbCA9IGNhY2hlW2VkZ2VXaWR0aCArICcsICcgKyBzY2FsZV07XG5cbiAgaWYgKGNhY2hlZFZhbCkge1xuICAgIHJldHVybiBjYWNoZWRWYWw7XG4gIH1cblxuICBjYWNoZWRWYWwgPSBNYXRoLm1heChNYXRoLnBvdyhlZGdlV2lkdGggKiAxMy4zNywgMC45KSwgMjkpICogc2NhbGU7XG4gIGNhY2hlW2VkZ2VXaWR0aCArICcsICcgKyBzY2FsZV0gPSBjYWNoZWRWYWw7XG4gIHJldHVybiBjYWNoZWRWYWw7XG59O1xuXG52YXIgQlJwJDMgPSB7fTtcblxuQlJwJDMuZmluZEhheXN0YWNrUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2VzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gICAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG5cbiAgICBpZiAoIXJzLmhheXN0YWNrKSB7XG4gICAgICB2YXIgYW5nbGUgPSBNYXRoLnJhbmRvbSgpICogMiAqIE1hdGguUEk7XG4gICAgICBycy5zb3VyY2UgPSB7XG4gICAgICAgIHg6IE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgeTogTWF0aC5zaW4oYW5nbGUpXG4gICAgICB9O1xuICAgICAgYW5nbGUgPSBNYXRoLnJhbmRvbSgpICogMiAqIE1hdGguUEk7XG4gICAgICBycy50YXJnZXQgPSB7XG4gICAgICAgIHg6IE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgeTogTWF0aC5zaW4oYW5nbGUpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBzcmMgPSBfcC5zb3VyY2U7XG4gICAgdmFyIHRndCA9IF9wLnRhcmdldDtcbiAgICB2YXIgc3JjUG9zID0gc3JjLnBvc2l0aW9uKCk7XG4gICAgdmFyIHRndFBvcyA9IHRndC5wb3NpdGlvbigpO1xuICAgIHZhciBzcmNXID0gc3JjLndpZHRoKCk7XG4gICAgdmFyIHRndFcgPSB0Z3Qud2lkdGgoKTtcbiAgICB2YXIgc3JjSCA9IHNyYy5oZWlnaHQoKTtcbiAgICB2YXIgdGd0SCA9IHRndC5oZWlnaHQoKTtcbiAgICB2YXIgcmFkaXVzID0gZWRnZS5wc3R5bGUoJ2hheXN0YWNrLXJhZGl1cycpLnZhbHVlO1xuICAgIHZhciBoYWxmUmFkaXVzID0gcmFkaXVzIC8gMjsgLy8gYi9jIGhhdmUgdG8gaGFsZiB3aWR0aC9oZWlnaHRcblxuICAgIHJzLmhheXN0YWNrUHRzID0gcnMuYWxscHRzID0gW3JzLnNvdXJjZS54ICogc3JjVyAqIGhhbGZSYWRpdXMgKyBzcmNQb3MueCwgcnMuc291cmNlLnkgKiBzcmNIICogaGFsZlJhZGl1cyArIHNyY1Bvcy55LCBycy50YXJnZXQueCAqIHRndFcgKiBoYWxmUmFkaXVzICsgdGd0UG9zLngsIHJzLnRhcmdldC55ICogdGd0SCAqIGhhbGZSYWRpdXMgKyB0Z3RQb3MueV07XG4gICAgcnMubWlkWCA9IChycy5hbGxwdHNbMF0gKyBycy5hbGxwdHNbMl0pIC8gMjtcbiAgICBycy5taWRZID0gKHJzLmFsbHB0c1sxXSArIHJzLmFsbHB0c1szXSkgLyAyOyAvLyBhbHdheXMgb3ZlcnJpZGUgYXMgaGF5c3RhY2sgaW4gY2FzZSBzZXQgdG8gZGlmZmVyZW50IHR5cGUgcHJldmlvdXNseVxuXG4gICAgcnMuZWRnZVR5cGUgPSAnaGF5c3RhY2snO1xuICAgIHJzLmhheXN0YWNrID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3JlRWRnZVByb2plY3Rpb25zKGVkZ2UpO1xuICAgIHRoaXMuY2FsY3VsYXRlQXJyb3dBbmdsZXMoZWRnZSk7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUVkZ2VMYWJlbFByb2plY3Rpb25zKGVkZ2UpO1xuICAgIHRoaXMuY2FsY3VsYXRlTGFiZWxBbmdsZXMoZWRnZSk7XG4gIH1cbn07XG5cbkJScCQzLmZpbmRTZWdtZW50c1BvaW50cyA9IGZ1bmN0aW9uIChlZGdlLCBwYWlySW5mbykge1xuICAvLyBTZWdtZW50cyAobXVsdGlwbGUgc3RyYWlnaHQgbGluZXMpXG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBwb3NQdHMgPSBwYWlySW5mby5wb3NQdHMsXG4gICAgICBpbnRlcnNlY3Rpb25QdHMgPSBwYWlySW5mby5pbnRlcnNlY3Rpb25QdHMsXG4gICAgICB2ZWN0b3JOb3JtSW52ZXJzZSA9IHBhaXJJbmZvLnZlY3Rvck5vcm1JbnZlcnNlO1xuICB2YXIgZWRnZURpc3RhbmNlcyA9IGVkZ2UucHN0eWxlKCdlZGdlLWRpc3RhbmNlcycpLnZhbHVlO1xuICB2YXIgc2VnbWVudFdzID0gZWRnZS5wc3R5bGUoJ3NlZ21lbnQtd2VpZ2h0cycpO1xuICB2YXIgc2VnbWVudERzID0gZWRnZS5wc3R5bGUoJ3NlZ21lbnQtZGlzdGFuY2VzJyk7XG4gIHZhciBzZWdtZW50c04gPSBNYXRoLm1pbihzZWdtZW50V3MucGZWYWx1ZS5sZW5ndGgsIHNlZ21lbnREcy5wZlZhbHVlLmxlbmd0aCk7XG4gIHJzLmVkZ2VUeXBlID0gJ3NlZ21lbnRzJztcbiAgcnMuc2VncHRzID0gW107XG5cbiAgZm9yICh2YXIgcyA9IDA7IHMgPCBzZWdtZW50c047IHMrKykge1xuICAgIHZhciB3ID0gc2VnbWVudFdzLnBmVmFsdWVbc107XG4gICAgdmFyIGQgPSBzZWdtZW50RHMucGZWYWx1ZVtzXTtcbiAgICB2YXIgdzEgPSAxIC0gdztcbiAgICB2YXIgdzIgPSB3O1xuICAgIHZhciBtaWRwdFB0cyA9IGVkZ2VEaXN0YW5jZXMgPT09ICdub2RlLXBvc2l0aW9uJyA/IHBvc1B0cyA6IGludGVyc2VjdGlvblB0cztcbiAgICB2YXIgYWRqdXN0ZWRNaWRwdCA9IHtcbiAgICAgIHg6IG1pZHB0UHRzLngxICogdzEgKyBtaWRwdFB0cy54MiAqIHcyLFxuICAgICAgeTogbWlkcHRQdHMueTEgKiB3MSArIG1pZHB0UHRzLnkyICogdzJcbiAgICB9O1xuICAgIHJzLnNlZ3B0cy5wdXNoKGFkanVzdGVkTWlkcHQueCArIHZlY3Rvck5vcm1JbnZlcnNlLnggKiBkLCBhZGp1c3RlZE1pZHB0LnkgKyB2ZWN0b3JOb3JtSW52ZXJzZS55ICogZCk7XG4gIH1cbn07XG5cbkJScCQzLmZpbmRMb29wUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UsIHBhaXJJbmZvLCBpLCBlZGdlSXNVbmJ1bmRsZWQpIHtcbiAgLy8gU2VsZi1lZGdlXG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBkaXJDb3VudHMgPSBwYWlySW5mby5kaXJDb3VudHMsXG4gICAgICBzcmNQb3MgPSBwYWlySW5mby5zcmNQb3M7XG4gIHZhciBjdHJscHREaXN0cyA9IGVkZ2UucHN0eWxlKCdjb250cm9sLXBvaW50LWRpc3RhbmNlcycpO1xuICB2YXIgY3RybHB0RGlzdCA9IGN0cmxwdERpc3RzID8gY3RybHB0RGlzdHMucGZWYWx1ZVswXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGxvb3BEaXIgPSBlZGdlLnBzdHlsZSgnbG9vcC1kaXJlY3Rpb24nKS5wZlZhbHVlO1xuICB2YXIgbG9vcFN3cCA9IGVkZ2UucHN0eWxlKCdsb29wLXN3ZWVwJykucGZWYWx1ZTtcbiAgdmFyIHN0ZXBTaXplID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtc3RlcC1zaXplJykucGZWYWx1ZTtcbiAgcnMuZWRnZVR5cGUgPSAnc2VsZic7XG4gIHZhciBqID0gaTtcbiAgdmFyIGxvb3BEaXN0ID0gc3RlcFNpemU7XG5cbiAgaWYgKGVkZ2VJc1VuYnVuZGxlZCkge1xuICAgIGogPSAwO1xuICAgIGxvb3BEaXN0ID0gY3RybHB0RGlzdDtcbiAgfVxuXG4gIHZhciBsb29wQW5nbGUgPSBsb29wRGlyIC0gTWF0aC5QSSAvIDI7XG4gIHZhciBvdXRBbmdsZSA9IGxvb3BBbmdsZSAtIGxvb3BTd3AgLyAyO1xuICB2YXIgaW5BbmdsZSA9IGxvb3BBbmdsZSArIGxvb3BTd3AgLyAyOyAvLyBpbmNyZWFzZSBieSBzdGVwIHNpemUgZm9yIG92ZXJsYXBwaW5nIGxvb3BzLCBrZXllZCBvbiBkaXJlY3Rpb24gYW5kIHN3ZWVwIHZhbHVlc1xuXG4gIHZhciBkYyA9IFN0cmluZyhsb29wRGlyICsgJ18nICsgbG9vcFN3cCk7XG4gIGogPSBkaXJDb3VudHNbZGNdID09PSB1bmRlZmluZWQgPyBkaXJDb3VudHNbZGNdID0gMCA6ICsrZGlyQ291bnRzW2RjXTtcbiAgcnMuY3RybHB0cyA9IFtzcmNQb3MueCArIE1hdGguY29zKG91dEFuZ2xlKSAqIDEuNCAqIGxvb3BEaXN0ICogKGogLyAzICsgMSksIHNyY1Bvcy55ICsgTWF0aC5zaW4ob3V0QW5nbGUpICogMS40ICogbG9vcERpc3QgKiAoaiAvIDMgKyAxKSwgc3JjUG9zLnggKyBNYXRoLmNvcyhpbkFuZ2xlKSAqIDEuNCAqIGxvb3BEaXN0ICogKGogLyAzICsgMSksIHNyY1Bvcy55ICsgTWF0aC5zaW4oaW5BbmdsZSkgKiAxLjQgKiBsb29wRGlzdCAqIChqIC8gMyArIDEpXTtcbn07XG5cbkJScCQzLmZpbmRDb21wb3VuZExvb3BQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8sIGksIGVkZ2VJc1VuYnVuZGxlZCkge1xuICAvLyBDb21wb3VuZCBlZGdlXG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHJzLmVkZ2VUeXBlID0gJ2NvbXBvdW5kJztcbiAgdmFyIHNyY1BvcyA9IHBhaXJJbmZvLnNyY1BvcyxcbiAgICAgIHRndFBvcyA9IHBhaXJJbmZvLnRndFBvcyxcbiAgICAgIHNyY1cgPSBwYWlySW5mby5zcmNXLFxuICAgICAgc3JjSCA9IHBhaXJJbmZvLnNyY0gsXG4gICAgICB0Z3RXID0gcGFpckluZm8udGd0VyxcbiAgICAgIHRndEggPSBwYWlySW5mby50Z3RIO1xuICB2YXIgc3RlcFNpemUgPSBlZGdlLnBzdHlsZSgnY29udHJvbC1wb2ludC1zdGVwLXNpemUnKS5wZlZhbHVlO1xuICB2YXIgY3RybHB0RGlzdHMgPSBlZGdlLnBzdHlsZSgnY29udHJvbC1wb2ludC1kaXN0YW5jZXMnKTtcbiAgdmFyIGN0cmxwdERpc3QgPSBjdHJscHREaXN0cyA/IGN0cmxwdERpc3RzLnBmVmFsdWVbMF0gOiB1bmRlZmluZWQ7XG4gIHZhciBqID0gaTtcbiAgdmFyIGxvb3BEaXN0ID0gc3RlcFNpemU7XG5cbiAgaWYgKGVkZ2VJc1VuYnVuZGxlZCkge1xuICAgIGogPSAwO1xuICAgIGxvb3BEaXN0ID0gY3RybHB0RGlzdDtcbiAgfVxuXG4gIHZhciBsb29wVyA9IDUwO1xuICB2YXIgbG9vcGFQb3MgPSB7XG4gICAgeDogc3JjUG9zLnggLSBzcmNXIC8gMixcbiAgICB5OiBzcmNQb3MueSAtIHNyY0ggLyAyXG4gIH07XG4gIHZhciBsb29wYlBvcyA9IHtcbiAgICB4OiB0Z3RQb3MueCAtIHRndFcgLyAyLFxuICAgIHk6IHRndFBvcy55IC0gdGd0SCAvIDJcbiAgfTtcbiAgdmFyIGxvb3BQb3MgPSB7XG4gICAgeDogTWF0aC5taW4obG9vcGFQb3MueCwgbG9vcGJQb3MueCksXG4gICAgeTogTWF0aC5taW4obG9vcGFQb3MueSwgbG9vcGJQb3MueSlcbiAgfTsgLy8gYXZvaWRzIGNhc2VzIHdpdGggaW1wb3NzaWJsZSBiZXppZXJzXG5cbiAgdmFyIG1pbkNvbXBvdW5kU3RyZXRjaCA9IDAuNTtcbiAgdmFyIGNvbXBvdW5kU3RyZXRjaEEgPSBNYXRoLm1heChtaW5Db21wb3VuZFN0cmV0Y2gsIE1hdGgubG9nKHNyY1cgKiAwLjAxKSk7XG4gIHZhciBjb21wb3VuZFN0cmV0Y2hCID0gTWF0aC5tYXgobWluQ29tcG91bmRTdHJldGNoLCBNYXRoLmxvZyh0Z3RXICogMC4wMSkpO1xuICBycy5jdHJscHRzID0gW2xvb3BQb3MueCwgbG9vcFBvcy55IC0gKDEgKyBNYXRoLnBvdyhsb29wVywgMS4xMikgLyAxMDApICogbG9vcERpc3QgKiAoaiAvIDMgKyAxKSAqIGNvbXBvdW5kU3RyZXRjaEEsIGxvb3BQb3MueCAtICgxICsgTWF0aC5wb3cobG9vcFcsIDEuMTIpIC8gMTAwKSAqIGxvb3BEaXN0ICogKGogLyAzICsgMSkgKiBjb21wb3VuZFN0cmV0Y2hCLCBsb29wUG9zLnldO1xufTtcblxuQlJwJDMuZmluZFN0cmFpZ2h0RWRnZVBvaW50cyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIC8vIFN0cmFpZ2h0IGVkZ2Ugd2l0aGluIGJ1bmRsZVxuICBlZGdlLl9wcml2YXRlLnJzY3JhdGNoLmVkZ2VUeXBlID0gJ3N0cmFpZ2h0Jztcbn07XG5cbkJScCQzLmZpbmRCZXppZXJQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8sIGksIGVkZ2VJc1VuYnVuZGxlZCwgZWRnZUlzU3dhcHBlZCkge1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICB2YXIgdmVjdG9yTm9ybUludmVyc2UgPSBwYWlySW5mby52ZWN0b3JOb3JtSW52ZXJzZSxcbiAgICAgIHBvc1B0cyA9IHBhaXJJbmZvLnBvc1B0cyxcbiAgICAgIGludGVyc2VjdGlvblB0cyA9IHBhaXJJbmZvLmludGVyc2VjdGlvblB0cztcbiAgdmFyIGVkZ2VEaXN0YW5jZXMgPSBlZGdlLnBzdHlsZSgnZWRnZS1kaXN0YW5jZXMnKS52YWx1ZTtcbiAgdmFyIHN0ZXBTaXplID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtc3RlcC1zaXplJykucGZWYWx1ZTtcbiAgdmFyIGN0cmxwdERpc3RzID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtZGlzdGFuY2VzJyk7XG4gIHZhciBjdHJscHRXcyA9IGVkZ2UucHN0eWxlKCdjb250cm9sLXBvaW50LXdlaWdodHMnKTtcbiAgdmFyIGJlemllck4gPSBjdHJscHREaXN0cyAmJiBjdHJscHRXcyA/IE1hdGgubWluKGN0cmxwdERpc3RzLnZhbHVlLmxlbmd0aCwgY3RybHB0V3MudmFsdWUubGVuZ3RoKSA6IDE7XG4gIHZhciBjdHJscHREaXN0ID0gY3RybHB0RGlzdHMgPyBjdHJscHREaXN0cy5wZlZhbHVlWzBdIDogdW5kZWZpbmVkO1xuICB2YXIgY3RybHB0V2VpZ2h0ID0gY3RybHB0V3MudmFsdWVbMF07IC8vIChNdWx0aSliZXppZXJcblxuICB2YXIgbXVsdGkgPSBlZGdlSXNVbmJ1bmRsZWQ7XG4gIHJzLmVkZ2VUeXBlID0gbXVsdGkgPyAnbXVsdGliZXppZXInIDogJ2Jlemllcic7XG4gIHJzLmN0cmxwdHMgPSBbXTtcblxuICBmb3IgKHZhciBiID0gMDsgYiA8IGJlemllck47IGIrKykge1xuICAgIHZhciBub3JtY3RybHB0RGlzdCA9ICgwLjUgLSBwYWlySW5mby5lbGVzLmxlbmd0aCAvIDIgKyBpKSAqIHN0ZXBTaXplICogKGVkZ2VJc1N3YXBwZWQgPyAtMSA6IDEpO1xuICAgIHZhciBtYW5jdHJscHREaXN0ID0gdm9pZCAwO1xuICAgIHZhciBzaWduID0gc2lnbnVtKG5vcm1jdHJscHREaXN0KTtcblxuICAgIGlmIChtdWx0aSkge1xuICAgICAgY3RybHB0RGlzdCA9IGN0cmxwdERpc3RzID8gY3RybHB0RGlzdHMucGZWYWx1ZVtiXSA6IHN0ZXBTaXplOyAvLyBmYWxsIGJhY2sgb24gc3RlcCBzaXplXG5cbiAgICAgIGN0cmxwdFdlaWdodCA9IGN0cmxwdFdzLnZhbHVlW2JdO1xuICAgIH1cblxuICAgIGlmIChlZGdlSXNVbmJ1bmRsZWQpIHtcbiAgICAgIC8vIG11bHRpIG9yIHNpbmdsZSB1bmJ1bmRsZWRcbiAgICAgIG1hbmN0cmxwdERpc3QgPSBjdHJscHREaXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBtYW5jdHJscHREaXN0ID0gY3RybHB0RGlzdCAhPT0gdW5kZWZpbmVkID8gc2lnbiAqIGN0cmxwdERpc3QgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIGRpc3RhbmNlRnJvbU1pZHBvaW50ID0gbWFuY3RybHB0RGlzdCAhPT0gdW5kZWZpbmVkID8gbWFuY3RybHB0RGlzdCA6IG5vcm1jdHJscHREaXN0O1xuICAgIHZhciB3MSA9IDEgLSBjdHJscHRXZWlnaHQ7XG4gICAgdmFyIHcyID0gY3RybHB0V2VpZ2h0O1xuICAgIHZhciBtaWRwdFB0cyA9IGVkZ2VEaXN0YW5jZXMgPT09ICdub2RlLXBvc2l0aW9uJyA/IHBvc1B0cyA6IGludGVyc2VjdGlvblB0cztcbiAgICB2YXIgYWRqdXN0ZWRNaWRwdCA9IHtcbiAgICAgIHg6IG1pZHB0UHRzLngxICogdzEgKyBtaWRwdFB0cy54MiAqIHcyLFxuICAgICAgeTogbWlkcHRQdHMueTEgKiB3MSArIG1pZHB0UHRzLnkyICogdzJcbiAgICB9O1xuICAgIHJzLmN0cmxwdHMucHVzaChhZGp1c3RlZE1pZHB0LnggKyB2ZWN0b3JOb3JtSW52ZXJzZS54ICogZGlzdGFuY2VGcm9tTWlkcG9pbnQsIGFkanVzdGVkTWlkcHQueSArIHZlY3Rvck5vcm1JbnZlcnNlLnkgKiBkaXN0YW5jZUZyb21NaWRwb2ludCk7XG4gIH1cbn07XG5cbkJScCQzLmZpbmRUYXhpUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UsIHBhaXJJbmZvKSB7XG4gIC8vIFRheGljYWIgZ2VvbWV0cnkgd2l0aCB0d28gdHVybnMgbWF4aW11bVxuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICBycy5lZGdlVHlwZSA9ICdzZWdtZW50cyc7XG4gIHZhciBWRVJUSUNBTCA9ICd2ZXJ0aWNhbCc7XG4gIHZhciBIT1JJWk9OVEFMID0gJ2hvcml6b250YWwnO1xuICB2YXIgTEVGVFdBUkQgPSAnbGVmdHdhcmQnO1xuICB2YXIgUklHSFRXQVJEID0gJ3JpZ2h0d2FyZCc7XG4gIHZhciBET1dOV0FSRCA9ICdkb3dud2FyZCc7XG4gIHZhciBVUFdBUkQgPSAndXB3YXJkJztcbiAgdmFyIEFVVE8gPSAnYXV0byc7XG4gIHZhciBwb3NQdHMgPSBwYWlySW5mby5wb3NQdHMsXG4gICAgICBzcmNXID0gcGFpckluZm8uc3JjVyxcbiAgICAgIHNyY0ggPSBwYWlySW5mby5zcmNILFxuICAgICAgdGd0VyA9IHBhaXJJbmZvLnRndFcsXG4gICAgICB0Z3RIID0gcGFpckluZm8udGd0SDtcbiAgdmFyIGVkZ2VEaXN0YW5jZXMgPSBlZGdlLnBzdHlsZSgnZWRnZS1kaXN0YW5jZXMnKS52YWx1ZTtcbiAgdmFyIGRJbmNsdWRlc05vZGVCb2R5ID0gZWRnZURpc3RhbmNlcyAhPT0gJ25vZGUtcG9zaXRpb24nO1xuICB2YXIgdGF4aURpciA9IGVkZ2UucHN0eWxlKCd0YXhpLWRpcmVjdGlvbicpLnZhbHVlO1xuICB2YXIgcmF3VGF4aURpciA9IHRheGlEaXI7IC8vIHVucHJvY2Vzc2VkIHZhbHVlXG5cbiAgdmFyIHRheGlUdXJuID0gZWRnZS5wc3R5bGUoJ3RheGktdHVybicpO1xuICB2YXIgdHVybklzUGVyY2VudCA9IHRheGlUdXJuLnVuaXRzID09PSAnJSc7XG4gIHZhciB0YXhpVHVyblBmVmFsID0gdGF4aVR1cm4ucGZWYWx1ZTtcbiAgdmFyIHR1cm5Jc05lZ2F0aXZlID0gdGF4aVR1cm5QZlZhbCA8IDA7IC8vIGkuZS4gZnJvbSB0YXJnZXQgc2lkZVxuXG4gIHZhciBtaW5EID0gZWRnZS5wc3R5bGUoJ3RheGktdHVybi1taW4tZGlzdGFuY2UnKS5wZlZhbHVlO1xuICB2YXIgZHcgPSBkSW5jbHVkZXNOb2RlQm9keSA/IChzcmNXICsgdGd0VykgLyAyIDogMDtcbiAgdmFyIGRoID0gZEluY2x1ZGVzTm9kZUJvZHkgPyAoc3JjSCArIHRndEgpIC8gMiA6IDA7XG4gIHZhciBwZHggPSBwb3NQdHMueDIgLSBwb3NQdHMueDE7XG4gIHZhciBwZHkgPSBwb3NQdHMueTIgLSBwb3NQdHMueTE7IC8vIHRha2UgYXdheSB0aGUgZWZmZWN0aXZlIHcvaCBmcm9tIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGRlbHRhIHZhbHVlXG5cbiAgdmFyIHN1YkRXSCA9IGZ1bmN0aW9uIHN1YkRXSChkeHksIGR3aCkge1xuICAgIGlmIChkeHkgPiAwKSB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoZHh5IC0gZHdoLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIE1hdGgubWluKGR4eSArIGR3aCwgMCk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBkeCA9IHN1YkRXSChwZHgsIGR3KTtcbiAgdmFyIGR5ID0gc3ViRFdIKHBkeSwgZGgpO1xuICB2YXIgaXNFeHBsaWNpdERpciA9IGZhbHNlO1xuXG4gIGlmIChyYXdUYXhpRGlyID09PSBBVVRPKSB7XG4gICAgdGF4aURpciA9IE1hdGguYWJzKGR4KSA+IE1hdGguYWJzKGR5KSA/IEhPUklaT05UQUwgOiBWRVJUSUNBTDtcbiAgfSBlbHNlIGlmIChyYXdUYXhpRGlyID09PSBVUFdBUkQgfHwgcmF3VGF4aURpciA9PT0gRE9XTldBUkQpIHtcbiAgICB0YXhpRGlyID0gVkVSVElDQUw7XG4gICAgaXNFeHBsaWNpdERpciA9IHRydWU7XG4gIH0gZWxzZSBpZiAocmF3VGF4aURpciA9PT0gTEVGVFdBUkQgfHwgcmF3VGF4aURpciA9PT0gUklHSFRXQVJEKSB7XG4gICAgdGF4aURpciA9IEhPUklaT05UQUw7XG4gICAgaXNFeHBsaWNpdERpciA9IHRydWU7XG4gIH1cblxuICB2YXIgaXNWZXJ0ID0gdGF4aURpciA9PT0gVkVSVElDQUw7XG4gIHZhciBsID0gaXNWZXJ0ID8gZHkgOiBkeDtcbiAgdmFyIHBsID0gaXNWZXJ0ID8gcGR5IDogcGR4O1xuICB2YXIgc2duTCA9IHNpZ251bShwbCk7XG4gIHZhciBmb3JjZWREaXIgPSBmYWxzZTtcblxuICBpZiAoIShpc0V4cGxpY2l0RGlyICYmICh0dXJuSXNQZXJjZW50IHx8IHR1cm5Jc05lZ2F0aXZlKSkgLy8gZm9yY2luZyBpbiB0aGlzIGNhc2Ugd291bGQgY2F1c2Ugd2VpcmQgZ3Jvd2luZyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uXG4gICYmIChyYXdUYXhpRGlyID09PSBET1dOV0FSRCAmJiBwbCA8IDAgfHwgcmF3VGF4aURpciA9PT0gVVBXQVJEICYmIHBsID4gMCB8fCByYXdUYXhpRGlyID09PSBMRUZUV0FSRCAmJiBwbCA+IDAgfHwgcmF3VGF4aURpciA9PT0gUklHSFRXQVJEICYmIHBsIDwgMCkpIHtcbiAgICBzZ25MICo9IC0xO1xuICAgIGwgPSBzZ25MICogTWF0aC5hYnMobCk7XG4gICAgZm9yY2VkRGlyID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBkO1xuXG4gIGlmICh0dXJuSXNQZXJjZW50KSB7XG4gICAgdmFyIHAgPSB0YXhpVHVyblBmVmFsIDwgMCA/IDEgKyB0YXhpVHVyblBmVmFsIDogdGF4aVR1cm5QZlZhbDtcbiAgICBkID0gcCAqIGw7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGsgPSB0YXhpVHVyblBmVmFsIDwgMCA/IGwgOiAwO1xuICAgIGQgPSBrICsgdGF4aVR1cm5QZlZhbCAqIHNnbkw7XG4gIH1cblxuICB2YXIgZ2V0SXNUb29DbG9zZSA9IGZ1bmN0aW9uIGdldElzVG9vQ2xvc2UoZCkge1xuICAgIHJldHVybiBNYXRoLmFicyhkKSA8IG1pbkQgfHwgTWF0aC5hYnMoZCkgPj0gTWF0aC5hYnMobCk7XG4gIH07XG5cbiAgdmFyIGlzVG9vQ2xvc2VTcmMgPSBnZXRJc1Rvb0Nsb3NlKGQpO1xuICB2YXIgaXNUb29DbG9zZVRndCA9IGdldElzVG9vQ2xvc2UoTWF0aC5hYnMobCkgLSBNYXRoLmFicyhkKSk7XG4gIHZhciBpc1Rvb0Nsb3NlID0gaXNUb29DbG9zZVNyYyB8fCBpc1Rvb0Nsb3NlVGd0O1xuXG4gIGlmIChpc1Rvb0Nsb3NlICYmICFmb3JjZWREaXIpIHtcbiAgICAvLyBub24taWRlYWwgcm91dGluZ1xuICAgIGlmIChpc1ZlcnQpIHtcbiAgICAgIC8vIHZlcnRpY2FsIGZhbGxiYWNrc1xuICAgICAgdmFyIGxTaGFwZUluc2lkZVNyYyA9IE1hdGguYWJzKHBsKSA8PSBzcmNIIC8gMjtcbiAgICAgIHZhciBsU2hhcGVJbnNpZGVUZ3QgPSBNYXRoLmFicyhwZHgpIDw9IHRndFcgLyAyO1xuXG4gICAgICBpZiAobFNoYXBlSW5zaWRlU3JjKSB7XG4gICAgICAgIC8vIGhvcml6b250YWwgWi1zaGFwZSAoZGlyZWN0aW9uIG5vdCByZXNwZWN0ZWQpXG4gICAgICAgIHZhciB4ID0gKHBvc1B0cy54MSArIHBvc1B0cy54MikgLyAyO1xuICAgICAgICB2YXIgeTEgPSBwb3NQdHMueTEsXG4gICAgICAgICAgICB5MiA9IHBvc1B0cy55MjtcbiAgICAgICAgcnMuc2VncHRzID0gW3gsIHkxLCB4LCB5Ml07XG4gICAgICB9IGVsc2UgaWYgKGxTaGFwZUluc2lkZVRndCkge1xuICAgICAgICAvLyB2ZXJ0aWNhbCBaLXNoYXBlIChkaXN0YW5jZSBub3QgcmVzcGVjdGVkKVxuICAgICAgICB2YXIgeSA9IChwb3NQdHMueTEgKyBwb3NQdHMueTIpIC8gMjtcbiAgICAgICAgdmFyIHgxID0gcG9zUHRzLngxLFxuICAgICAgICAgICAgeDIgPSBwb3NQdHMueDI7XG4gICAgICAgIHJzLnNlZ3B0cyA9IFt4MSwgeSwgeDIsIHldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTC1zaGFwZSBmYWxsYmFjayAodHVybiBkaXN0YW5jZSBub3QgcmVzcGVjdGVkLCBidXQgd29ya3Mgd2VsbCB3aXRoIHRyZWUgc2libGluZ3MpXG4gICAgICAgIHJzLnNlZ3B0cyA9IFtwb3NQdHMueDEsIHBvc1B0cy55Ml07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhvcml6b250YWwgZmFsbGJhY2tzXG4gICAgICB2YXIgX2xTaGFwZUluc2lkZVNyYyA9IE1hdGguYWJzKHBsKSA8PSBzcmNXIC8gMjtcblxuICAgICAgdmFyIF9sU2hhcGVJbnNpZGVUZ3QgPSBNYXRoLmFicyhwZHkpIDw9IHRndEggLyAyO1xuXG4gICAgICBpZiAoX2xTaGFwZUluc2lkZVNyYykge1xuICAgICAgICAvLyB2ZXJ0aWNhbCBaLXNoYXBlIChkaXJlY3Rpb24gbm90IHJlc3BlY3RlZClcbiAgICAgICAgdmFyIF95ID0gKHBvc1B0cy55MSArIHBvc1B0cy55MikgLyAyO1xuXG4gICAgICAgIHZhciBfeCA9IHBvc1B0cy54MSxcbiAgICAgICAgICAgIF94MiA9IHBvc1B0cy54MjtcbiAgICAgICAgcnMuc2VncHRzID0gW194LCBfeSwgX3gyLCBfeV07XG4gICAgICB9IGVsc2UgaWYgKF9sU2hhcGVJbnNpZGVUZ3QpIHtcbiAgICAgICAgLy8gaG9yaXpvbnRhbCBaLXNoYXBlICh0dXJuIGRpc3RhbmNlIG5vdCByZXNwZWN0ZWQpXG4gICAgICAgIHZhciBfeDMgPSAocG9zUHRzLngxICsgcG9zUHRzLngyKSAvIDI7XG5cbiAgICAgICAgdmFyIF95MiA9IHBvc1B0cy55MSxcbiAgICAgICAgICAgIF95MyA9IHBvc1B0cy55MjtcbiAgICAgICAgcnMuc2VncHRzID0gW194MywgX3kyLCBfeDMsIF95M107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBMLXNoYXBlICh0dXJuIGRpc3RhbmNlIG5vdCByZXNwZWN0ZWQsIGJ1dCB3b3JrcyB3ZWxsIGZvciB0cmVlIHNpYmxpbmdzKVxuICAgICAgICBycy5zZWdwdHMgPSBbcG9zUHRzLngyLCBwb3NQdHMueTFdO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBpZGVhbCByb3V0aW5nXG4gICAgaWYgKGlzVmVydCkge1xuICAgICAgdmFyIF95NCA9IHBvc1B0cy55MSArIGQgKyAoZEluY2x1ZGVzTm9kZUJvZHkgPyBzcmNIIC8gMiAqIHNnbkwgOiAwKTtcblxuICAgICAgdmFyIF94NCA9IHBvc1B0cy54MSxcbiAgICAgICAgICBfeDUgPSBwb3NQdHMueDI7XG4gICAgICBycy5zZWdwdHMgPSBbX3g0LCBfeTQsIF94NSwgX3k0XTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaG9yaXpvbnRhbFxuICAgICAgdmFyIF94NiA9IHBvc1B0cy54MSArIGQgKyAoZEluY2x1ZGVzTm9kZUJvZHkgPyBzcmNXIC8gMiAqIHNnbkwgOiAwKTtcblxuICAgICAgdmFyIF95NSA9IHBvc1B0cy55MSxcbiAgICAgICAgICBfeTYgPSBwb3NQdHMueTI7XG4gICAgICBycy5zZWdwdHMgPSBbX3g2LCBfeTUsIF94NiwgX3k2XTtcbiAgICB9XG4gIH1cbn07XG5cbkJScCQzLnRyeVRvQ29ycmVjdEludmFsaWRQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8pIHtcbiAgdmFyIHJzID0gZWRnZS5fcHJpdmF0ZS5yc2NyYXRjaDsgLy8gY2FuIG9ubHkgY29ycmVjdCBiZXppZXJzIGZvciBub3cuLi5cblxuICBpZiAocnMuZWRnZVR5cGUgPT09ICdiZXppZXInKSB7XG4gICAgdmFyIHNyY1BvcyA9IHBhaXJJbmZvLnNyY1BvcyxcbiAgICAgICAgdGd0UG9zID0gcGFpckluZm8udGd0UG9zLFxuICAgICAgICBzcmNXID0gcGFpckluZm8uc3JjVyxcbiAgICAgICAgc3JjSCA9IHBhaXJJbmZvLnNyY0gsXG4gICAgICAgIHRndFcgPSBwYWlySW5mby50Z3RXLFxuICAgICAgICB0Z3RIID0gcGFpckluZm8udGd0SCxcbiAgICAgICAgc3JjU2hhcGUgPSBwYWlySW5mby5zcmNTaGFwZSxcbiAgICAgICAgdGd0U2hhcGUgPSBwYWlySW5mby50Z3RTaGFwZTtcbiAgICB2YXIgYmFkU3RhcnQgPSAhbnVtYmVyKHJzLnN0YXJ0WCkgfHwgIW51bWJlcihycy5zdGFydFkpO1xuICAgIHZhciBiYWRBU3RhcnQgPSAhbnVtYmVyKHJzLmFycm93U3RhcnRYKSB8fCAhbnVtYmVyKHJzLmFycm93U3RhcnRZKTtcbiAgICB2YXIgYmFkRW5kID0gIW51bWJlcihycy5lbmRYKSB8fCAhbnVtYmVyKHJzLmVuZFkpO1xuICAgIHZhciBiYWRBRW5kID0gIW51bWJlcihycy5hcnJvd0VuZFgpIHx8ICFudW1iZXIocnMuYXJyb3dFbmRZKTtcbiAgICB2YXIgbWluQ3BBRGlzdEZhY3RvciA9IDM7XG4gICAgdmFyIGFycm93VyA9IHRoaXMuZ2V0QXJyb3dXaWR0aChlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlLCBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZSkgKiB0aGlzLmFycm93U2hhcGVXaWR0aDtcbiAgICB2YXIgbWluQ3BBRGlzdCA9IG1pbkNwQURpc3RGYWN0b3IgKiBhcnJvd1c7XG4gICAgdmFyIHN0YXJ0QUNwRGlzdCA9IGRpc3Qoe1xuICAgICAgeDogcnMuY3RybHB0c1swXSxcbiAgICAgIHk6IHJzLmN0cmxwdHNbMV1cbiAgICB9LCB7XG4gICAgICB4OiBycy5zdGFydFgsXG4gICAgICB5OiBycy5zdGFydFlcbiAgICB9KTtcbiAgICB2YXIgY2xvc2VTdGFydEFDcCA9IHN0YXJ0QUNwRGlzdCA8IG1pbkNwQURpc3Q7XG4gICAgdmFyIGVuZEFDcERpc3QgPSBkaXN0KHtcbiAgICAgIHg6IHJzLmN0cmxwdHNbMF0sXG4gICAgICB5OiBycy5jdHJscHRzWzFdXG4gICAgfSwge1xuICAgICAgeDogcnMuZW5kWCxcbiAgICAgIHk6IHJzLmVuZFlcbiAgICB9KTtcbiAgICB2YXIgY2xvc2VFbmRBQ3AgPSBlbmRBQ3BEaXN0IDwgbWluQ3BBRGlzdDtcbiAgICB2YXIgb3ZlcmxhcHBpbmcgPSBmYWxzZTtcblxuICAgIGlmIChiYWRTdGFydCB8fCBiYWRBU3RhcnQgfHwgY2xvc2VTdGFydEFDcCkge1xuICAgICAgb3ZlcmxhcHBpbmcgPSB0cnVlOyAvLyBwcm9qZWN0IGNvbnRyb2wgcG9pbnQgYWxvbmcgbGluZSBmcm9tIHNyYyBjZW50cmUgdG8gb3V0c2lkZSB0aGUgc3JjIHNoYXBlXG4gICAgICAvLyAob3RoZXJ3aXNlIGludGVyc2VjdGlvbiB3aWxsIHlpZWxkIG5vdGhpbmcpXG5cbiAgICAgIHZhciBjcEQgPSB7XG4gICAgICAgIC8vIGRlbHRhXG4gICAgICAgIHg6IHJzLmN0cmxwdHNbMF0gLSBzcmNQb3MueCxcbiAgICAgICAgeTogcnMuY3RybHB0c1sxXSAtIHNyY1Bvcy55XG4gICAgICB9O1xuICAgICAgdmFyIGNwTCA9IE1hdGguc3FydChjcEQueCAqIGNwRC54ICsgY3BELnkgKiBjcEQueSk7IC8vIGxlbmd0aCBvZiBsaW5lXG5cbiAgICAgIHZhciBjcE0gPSB7XG4gICAgICAgIC8vIG5vcm1hbGlzZWQgZGVsdGFcbiAgICAgICAgeDogY3BELnggLyBjcEwsXG4gICAgICAgIHk6IGNwRC55IC8gY3BMXG4gICAgICB9O1xuICAgICAgdmFyIHJhZGl1cyA9IE1hdGgubWF4KHNyY1csIHNyY0gpO1xuICAgICAgdmFyIGNwUHJvaiA9IHtcbiAgICAgICAgLy8gKjIgcmFkaXVzIGd1YXJhbnRlZXMgb3V0c2lkZSBzaGFwZVxuICAgICAgICB4OiBycy5jdHJscHRzWzBdICsgY3BNLnggKiAyICogcmFkaXVzLFxuICAgICAgICB5OiBycy5jdHJscHRzWzFdICsgY3BNLnkgKiAyICogcmFkaXVzXG4gICAgICB9O1xuICAgICAgdmFyIHNyY0N0cmxQdEludG4gPSBzcmNTaGFwZS5pbnRlcnNlY3RMaW5lKHNyY1Bvcy54LCBzcmNQb3MueSwgc3JjVywgc3JjSCwgY3BQcm9qLngsIGNwUHJvai55LCAwKTtcblxuICAgICAgaWYgKGNsb3NlU3RhcnRBQ3ApIHtcbiAgICAgICAgcnMuY3RybHB0c1swXSA9IHJzLmN0cmxwdHNbMF0gKyBjcE0ueCAqIChtaW5DcEFEaXN0IC0gc3RhcnRBQ3BEaXN0KTtcbiAgICAgICAgcnMuY3RybHB0c1sxXSA9IHJzLmN0cmxwdHNbMV0gKyBjcE0ueSAqIChtaW5DcEFEaXN0IC0gc3RhcnRBQ3BEaXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzLmN0cmxwdHNbMF0gPSBzcmNDdHJsUHRJbnRuWzBdICsgY3BNLnggKiBtaW5DcEFEaXN0O1xuICAgICAgICBycy5jdHJscHRzWzFdID0gc3JjQ3RybFB0SW50blsxXSArIGNwTS55ICogbWluQ3BBRGlzdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYmFkRW5kIHx8IGJhZEFFbmQgfHwgY2xvc2VFbmRBQ3ApIHtcbiAgICAgIG92ZXJsYXBwaW5nID0gdHJ1ZTsgLy8gcHJvamVjdCBjb250cm9sIHBvaW50IGFsb25nIGxpbmUgZnJvbSB0Z3QgY2VudHJlIHRvIG91dHNpZGUgdGhlIHRndCBzaGFwZVxuICAgICAgLy8gKG90aGVyd2lzZSBpbnRlcnNlY3Rpb24gd2lsbCB5aWVsZCBub3RoaW5nKVxuXG4gICAgICB2YXIgX2NwRCA9IHtcbiAgICAgICAgLy8gZGVsdGFcbiAgICAgICAgeDogcnMuY3RybHB0c1swXSAtIHRndFBvcy54LFxuICAgICAgICB5OiBycy5jdHJscHRzWzFdIC0gdGd0UG9zLnlcbiAgICAgIH07XG5cbiAgICAgIHZhciBfY3BMID0gTWF0aC5zcXJ0KF9jcEQueCAqIF9jcEQueCArIF9jcEQueSAqIF9jcEQueSk7IC8vIGxlbmd0aCBvZiBsaW5lXG5cblxuICAgICAgdmFyIF9jcE0gPSB7XG4gICAgICAgIC8vIG5vcm1hbGlzZWQgZGVsdGFcbiAgICAgICAgeDogX2NwRC54IC8gX2NwTCxcbiAgICAgICAgeTogX2NwRC55IC8gX2NwTFxuICAgICAgfTtcblxuICAgICAgdmFyIF9yYWRpdXMgPSBNYXRoLm1heChzcmNXLCBzcmNIKTtcblxuICAgICAgdmFyIF9jcFByb2ogPSB7XG4gICAgICAgIC8vICoyIHJhZGl1cyBndWFyYW50ZWVzIG91dHNpZGUgc2hhcGVcbiAgICAgICAgeDogcnMuY3RybHB0c1swXSArIF9jcE0ueCAqIDIgKiBfcmFkaXVzLFxuICAgICAgICB5OiBycy5jdHJscHRzWzFdICsgX2NwTS55ICogMiAqIF9yYWRpdXNcbiAgICAgIH07XG4gICAgICB2YXIgdGd0Q3RybFB0SW50biA9IHRndFNoYXBlLmludGVyc2VjdExpbmUodGd0UG9zLngsIHRndFBvcy55LCB0Z3RXLCB0Z3RILCBfY3BQcm9qLngsIF9jcFByb2oueSwgMCk7XG5cbiAgICAgIGlmIChjbG9zZUVuZEFDcCkge1xuICAgICAgICBycy5jdHJscHRzWzBdID0gcnMuY3RybHB0c1swXSArIF9jcE0ueCAqIChtaW5DcEFEaXN0IC0gZW5kQUNwRGlzdCk7XG4gICAgICAgIHJzLmN0cmxwdHNbMV0gPSBycy5jdHJscHRzWzFdICsgX2NwTS55ICogKG1pbkNwQURpc3QgLSBlbmRBQ3BEaXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzLmN0cmxwdHNbMF0gPSB0Z3RDdHJsUHRJbnRuWzBdICsgX2NwTS54ICogbWluQ3BBRGlzdDtcbiAgICAgICAgcnMuY3RybHB0c1sxXSA9IHRndEN0cmxQdEludG5bMV0gKyBfY3BNLnkgKiBtaW5DcEFEaXN0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvdmVybGFwcGluZykge1xuICAgICAgLy8gcmVjYWxjIGVuZHB0c1xuICAgICAgdGhpcy5maW5kRW5kcG9pbnRzKGVkZ2UpO1xuICAgIH1cbiAgfVxufTtcblxuQlJwJDMuc3RvcmVBbGxwdHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuXG4gIGlmIChycy5lZGdlVHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCBycy5lZGdlVHlwZSA9PT0gJ2JlemllcicgfHwgcnMuZWRnZVR5cGUgPT09ICdzZWxmJyB8fCBycy5lZGdlVHlwZSA9PT0gJ2NvbXBvdW5kJykge1xuICAgIHJzLmFsbHB0cyA9IFtdO1xuICAgIHJzLmFsbHB0cy5wdXNoKHJzLnN0YXJ0WCwgcnMuc3RhcnRZKTtcblxuICAgIGZvciAodmFyIGIgPSAwOyBiICsgMSA8IHJzLmN0cmxwdHMubGVuZ3RoOyBiICs9IDIpIHtcbiAgICAgIC8vIGN0cmwgcHQgaXRzZWxmXG4gICAgICBycy5hbGxwdHMucHVzaChycy5jdHJscHRzW2JdLCBycy5jdHJscHRzW2IgKyAxXSk7IC8vIHRoZSBtaWRwdCBiZXR3ZWVuIGN0cmxwdHMgYXMgaW50ZXJtZWRpYXRlIGRlc3RpbmF0aW9uIHB0c1xuXG4gICAgICBpZiAoYiArIDMgPCBycy5jdHJscHRzLmxlbmd0aCkge1xuICAgICAgICBycy5hbGxwdHMucHVzaCgocnMuY3RybHB0c1tiXSArIHJzLmN0cmxwdHNbYiArIDJdKSAvIDIsIChycy5jdHJscHRzW2IgKyAxXSArIHJzLmN0cmxwdHNbYiArIDNdKSAvIDIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJzLmFsbHB0cy5wdXNoKHJzLmVuZFgsIHJzLmVuZFkpO1xuICAgIHZhciBtLCBtdDtcblxuICAgIGlmIChycy5jdHJscHRzLmxlbmd0aCAvIDIgJSAyID09PSAwKSB7XG4gICAgICBtID0gcnMuYWxscHRzLmxlbmd0aCAvIDIgLSAxO1xuICAgICAgcnMubWlkWCA9IHJzLmFsbHB0c1ttXTtcbiAgICAgIHJzLm1pZFkgPSBycy5hbGxwdHNbbSArIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gcnMuYWxscHRzLmxlbmd0aCAvIDIgLSAzO1xuICAgICAgbXQgPSAwLjU7XG4gICAgICBycy5taWRYID0gcWJlemllckF0KHJzLmFsbHB0c1ttXSwgcnMuYWxscHRzW20gKyAyXSwgcnMuYWxscHRzW20gKyA0XSwgbXQpO1xuICAgICAgcnMubWlkWSA9IHFiZXppZXJBdChycy5hbGxwdHNbbSArIDFdLCBycy5hbGxwdHNbbSArIDNdLCBycy5hbGxwdHNbbSArIDVdLCBtdCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHJzLmVkZ2VUeXBlID09PSAnc3RyYWlnaHQnKSB7XG4gICAgLy8gbmVlZCB0byBjYWxjIHRoZXNlIGFmdGVyIGVuZHB0c1xuICAgIHJzLmFsbHB0cyA9IFtycy5zdGFydFgsIHJzLnN0YXJ0WSwgcnMuZW5kWCwgcnMuZW5kWV07IC8vIGRlZmF1bHQgbWlkcHQgZm9yIGxhYmVscyBldGNcblxuICAgIHJzLm1pZFggPSAocnMuc3RhcnRYICsgcnMuZW5kWCArIHJzLmFycm93U3RhcnRYICsgcnMuYXJyb3dFbmRYKSAvIDQ7XG4gICAgcnMubWlkWSA9IChycy5zdGFydFkgKyBycy5lbmRZICsgcnMuYXJyb3dTdGFydFkgKyBycy5hcnJvd0VuZFkpIC8gNDtcbiAgfSBlbHNlIGlmIChycy5lZGdlVHlwZSA9PT0gJ3NlZ21lbnRzJykge1xuICAgIHJzLmFsbHB0cyA9IFtdO1xuICAgIHJzLmFsbHB0cy5wdXNoKHJzLnN0YXJ0WCwgcnMuc3RhcnRZKTtcbiAgICBycy5hbGxwdHMucHVzaC5hcHBseShycy5hbGxwdHMsIHJzLnNlZ3B0cyk7XG4gICAgcnMuYWxscHRzLnB1c2gocnMuZW5kWCwgcnMuZW5kWSk7XG5cbiAgICBpZiAocnMuc2VncHRzLmxlbmd0aCAlIDQgPT09IDApIHtcbiAgICAgIHZhciBpMiA9IHJzLnNlZ3B0cy5sZW5ndGggLyAyO1xuICAgICAgdmFyIGkxID0gaTIgLSAyO1xuICAgICAgcnMubWlkWCA9IChycy5zZWdwdHNbaTFdICsgcnMuc2VncHRzW2kyXSkgLyAyO1xuICAgICAgcnMubWlkWSA9IChycy5zZWdwdHNbaTEgKyAxXSArIHJzLnNlZ3B0c1tpMiArIDFdKSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfaSA9IHJzLnNlZ3B0cy5sZW5ndGggLyAyIC0gMTtcblxuICAgICAgcnMubWlkWCA9IHJzLnNlZ3B0c1tfaV07XG4gICAgICBycy5taWRZID0gcnMuc2VncHRzW19pICsgMV07XG4gICAgfVxuICB9XG59O1xuXG5CUnAkMy5jaGVja0ZvckludmFsaWRFZGdlV2FybmluZyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBycyA9IGVkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG5cbiAgaWYgKHJzLm5vZGVzT3ZlcmxhcCB8fCBudW1iZXIocnMuc3RhcnRYKSAmJiBudW1iZXIocnMuc3RhcnRZKSAmJiBudW1iZXIocnMuZW5kWCkgJiYgbnVtYmVyKHJzLmVuZFkpKSB7XG4gICAgcnMubG9nZ2VkRXJyID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFycy5sb2dnZWRFcnIpIHtcbiAgICAgIHJzLmxvZ2dlZEVyciA9IHRydWU7XG4gICAgICB3YXJuKCdFZGdlIGAnICsgZWRnZS5pZCgpICsgJ2AgaGFzIGludmFsaWQgZW5kcG9pbnRzIGFuZCBzbyBpdCBpcyBpbXBvc3NpYmxlIHRvIGRyYXcuICBBZGp1c3QgeW91ciBlZGdlIHN0eWxlIChlLmcuIGNvbnRyb2wgcG9pbnRzKSBhY2NvcmRpbmdseSBvciB1c2UgYW4gYWx0ZXJuYXRpdmUgZWRnZSB0eXBlLiAgVGhpcyBpcyBleHBlY3RlZCBiZWhhdmlvdXIgd2hlbiB0aGUgc291cmNlIG5vZGUgYW5kIHRoZSB0YXJnZXQgbm9kZSBvdmVybGFwLicpO1xuICAgIH1cbiAgfVxufTtcblxuQlJwJDMuZmluZEVkZ2VDb250cm9sUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2VzKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKCFlZGdlcyB8fCBlZGdlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjeSA9IHIuY3k7XG4gIHZhciBoYXNDb21wb3VuZHMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBoYXNoVGFibGUgPSB7XG4gICAgbWFwOiBuZXcgTWFwJDEoKSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldChwYWlySWQpIHtcbiAgICAgIHZhciBtYXAyID0gdGhpcy5tYXAuZ2V0KHBhaXJJZFswXSk7XG5cbiAgICAgIGlmIChtYXAyICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG1hcDIuZ2V0KHBhaXJJZFsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0KHBhaXJJZCwgdmFsKSB7XG4gICAgICB2YXIgbWFwMiA9IHRoaXMubWFwLmdldChwYWlySWRbMF0pO1xuXG4gICAgICBpZiAobWFwMiA9PSBudWxsKSB7XG4gICAgICAgIG1hcDIgPSBuZXcgTWFwJDEoKTtcbiAgICAgICAgdGhpcy5tYXAuc2V0KHBhaXJJZFswXSwgbWFwMik7XG4gICAgICB9XG5cbiAgICAgIG1hcDIuc2V0KHBhaXJJZFsxXSwgdmFsKTtcbiAgICB9XG4gIH07XG4gIHZhciBwYWlySWRzID0gW107XG4gIHZhciBoYXlzdGFja0VkZ2VzID0gW107IC8vIGNyZWF0ZSBhIHRhYmxlIG9mIGVkZ2UgKHNyYywgdGd0KSA9PiBsaXN0IG9mIGVkZ2VzIGJldHdlZW4gdGhlbVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gICAgdmFyIGN1cnZlU3R5bGUgPSBlZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTsgLy8gaWdub3JlIGVkZ2VzIHdobyBhcmUgbm90IHRvIGJlIGRpc3BsYXllZFxuICAgIC8vIHRoZXkgc2hvdWxkbid0IHRha2UgdXAgc3BhY2VcblxuICAgIGlmIChlZGdlLnJlbW92ZWQoKSB8fCAhZWRnZS50YWtlc1VwU3BhY2UoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnZlU3R5bGUgPT09ICdoYXlzdGFjaycpIHtcbiAgICAgIGhheXN0YWNrRWRnZXMucHVzaChlZGdlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBlZGdlSXNVbmJ1bmRsZWQgPSBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJyB8fCBjdXJ2ZVN0eWxlID09PSAnc3RyYWlnaHQnIHx8IGN1cnZlU3R5bGUgPT09ICdzdHJhaWdodC10cmlhbmdsZScgfHwgY3VydmVTdHlsZSA9PT0gJ3RheGknO1xuICAgIHZhciBlZGdlSXNCZXppZXIgPSBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ2Jlemllcic7XG4gICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgIHZhciBzcmNJbmRleCA9IHNyYy5wb29sSW5kZXgoKTtcbiAgICB2YXIgdGd0SW5kZXggPSB0Z3QucG9vbEluZGV4KCk7XG4gICAgdmFyIHBhaXJJZCA9IFtzcmNJbmRleCwgdGd0SW5kZXhdLnNvcnQoKTtcbiAgICB2YXIgdGFibGVFbnRyeSA9IGhhc2hUYWJsZS5nZXQocGFpcklkKTtcblxuICAgIGlmICh0YWJsZUVudHJ5ID09IG51bGwpIHtcbiAgICAgIHRhYmxlRW50cnkgPSB7XG4gICAgICAgIGVsZXM6IFtdXG4gICAgICB9O1xuICAgICAgaGFzaFRhYmxlLnNldChwYWlySWQsIHRhYmxlRW50cnkpO1xuICAgICAgcGFpcklkcy5wdXNoKHBhaXJJZCk7XG4gICAgfVxuXG4gICAgdGFibGVFbnRyeS5lbGVzLnB1c2goZWRnZSk7XG5cbiAgICBpZiAoZWRnZUlzVW5idW5kbGVkKSB7XG4gICAgICB0YWJsZUVudHJ5Lmhhc1VuYnVuZGxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGVkZ2VJc0Jlemllcikge1xuICAgICAgdGFibGVFbnRyeS5oYXNCZXppZXIgPSB0cnVlO1xuICAgIH1cbiAgfSAvLyBmb3IgZWFjaCBwYWlyIChzcmMsIHRndCksIGNyZWF0ZSB0aGUgY3RybCBwdHNcbiAgLy8gTmVzdGVkIGZvciBsb29wIGlzIE9LOyB0b3RhbCBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3IgYm90aCBsb29wcyA9IGVkZ2VDb3VudFxuXG5cbiAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AocCkge1xuICAgIHZhciBwYWlySWQgPSBwYWlySWRzW3BdO1xuICAgIHZhciBwYWlySW5mbyA9IGhhc2hUYWJsZS5nZXQocGFpcklkKTtcbiAgICB2YXIgc3dhcHBlZHBhaXJJbmZvID0gdm9pZCAwO1xuXG4gICAgaWYgKCFwYWlySW5mby5oYXNVbmJ1bmRsZWQpIHtcbiAgICAgIHZhciBwbGxFZGdlcyA9IHBhaXJJbmZvLmVsZXNbMF0ucGFyYWxsZWxFZGdlcygpLmZpbHRlcihmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gZS5pc0J1bmRsZWRCZXppZXIoKTtcbiAgICAgIH0pO1xuICAgICAgY2xlYXJBcnJheShwYWlySW5mby5lbGVzKTtcbiAgICAgIHBsbEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIHBhaXJJbmZvLmVsZXMucHVzaChlZGdlKTtcbiAgICAgIH0pOyAvLyBmb3IgZWFjaCBwYWlyIGlkLCB0aGUgZWRnZXMgc2hvdWxkIGJlIHNvcnRlZCBieSBpbmRleFxuXG4gICAgICBwYWlySW5mby5lbGVzLnNvcnQoZnVuY3Rpb24gKGVkZ2UxLCBlZGdlMikge1xuICAgICAgICByZXR1cm4gZWRnZTEucG9vbEluZGV4KCkgLSBlZGdlMi5wb29sSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmaXJzdEVkZ2UgPSBwYWlySW5mby5lbGVzWzBdO1xuICAgIHZhciBzcmMgPSBmaXJzdEVkZ2Uuc291cmNlKCk7XG4gICAgdmFyIHRndCA9IGZpcnN0RWRnZS50YXJnZXQoKTsgLy8gbWFrZSBzdXJlIHNyYy90Z3QgZGlzdGluY3Rpb24gaXMgY29uc2lzdGVudCB3LnIudC4gcGFpcklkXG5cbiAgICBpZiAoc3JjLnBvb2xJbmRleCgpID4gdGd0LnBvb2xJbmRleCgpKSB7XG4gICAgICB2YXIgdGVtcCA9IHNyYztcbiAgICAgIHNyYyA9IHRndDtcbiAgICAgIHRndCA9IHRlbXA7XG4gICAgfVxuXG4gICAgdmFyIHNyY1BvcyA9IHBhaXJJbmZvLnNyY1BvcyA9IHNyYy5wb3NpdGlvbigpO1xuICAgIHZhciB0Z3RQb3MgPSBwYWlySW5mby50Z3RQb3MgPSB0Z3QucG9zaXRpb24oKTtcbiAgICB2YXIgc3JjVyA9IHBhaXJJbmZvLnNyY1cgPSBzcmMub3V0ZXJXaWR0aCgpO1xuICAgIHZhciBzcmNIID0gcGFpckluZm8uc3JjSCA9IHNyYy5vdXRlckhlaWdodCgpO1xuICAgIHZhciB0Z3RXID0gcGFpckluZm8udGd0VyA9IHRndC5vdXRlcldpZHRoKCk7XG4gICAgdmFyIHRndEggPSBwYWlySW5mby50Z3RIID0gdGd0Lm91dGVySGVpZ2h0KCk7XG5cbiAgICB2YXIgc3JjU2hhcGUgPSBwYWlySW5mby5zcmNTaGFwZSA9IHIubm9kZVNoYXBlc1tfdGhpcy5nZXROb2RlU2hhcGUoc3JjKV07XG5cbiAgICB2YXIgdGd0U2hhcGUgPSBwYWlySW5mby50Z3RTaGFwZSA9IHIubm9kZVNoYXBlc1tfdGhpcy5nZXROb2RlU2hhcGUodGd0KV07XG5cbiAgICBwYWlySW5mby5kaXJDb3VudHMgPSB7XG4gICAgICAnbm9ydGgnOiAwLFxuICAgICAgJ3dlc3QnOiAwLFxuICAgICAgJ3NvdXRoJzogMCxcbiAgICAgICdlYXN0JzogMCxcbiAgICAgICdub3J0aHdlc3QnOiAwLFxuICAgICAgJ3NvdXRod2VzdCc6IDAsXG4gICAgICAnbm9ydGhlYXN0JzogMCxcbiAgICAgICdzb3V0aGVhc3QnOiAwXG4gICAgfTtcblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHBhaXJJbmZvLmVsZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIF9lZGdlID0gcGFpckluZm8uZWxlc1tfaTJdO1xuICAgICAgdmFyIHJzID0gX2VkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG5cbiAgICAgIHZhciBfY3VydmVTdHlsZSA9IF9lZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTtcblxuICAgICAgdmFyIF9lZGdlSXNVbmJ1bmRsZWQgPSBfY3VydmVTdHlsZSA9PT0gJ3VuYnVuZGxlZC1iZXppZXInIHx8IF9jdXJ2ZVN0eWxlID09PSAnc2VnbWVudHMnIHx8IF9jdXJ2ZVN0eWxlID09PSAndGF4aSc7IC8vIHdoZXRoZXIgdGhlIG5vcm1hbGlzZWQgcGFpciBvcmRlciBpcyB0aGUgcmV2ZXJzZSBvZiB0aGUgZWRnZSdzIHNyYy10Z3Qgb3JkZXJcblxuXG4gICAgICB2YXIgZWRnZUlzU3dhcHBlZCA9ICFzcmMuc2FtZShfZWRnZS5zb3VyY2UoKSk7XG5cbiAgICAgIGlmICghcGFpckluZm8uY2FsY3VsYXRlZEludGVyc2VjdGlvbiAmJiBzcmMgIT09IHRndCAmJiAocGFpckluZm8uaGFzQmV6aWVyIHx8IHBhaXJJbmZvLmhhc1VuYnVuZGxlZCkpIHtcbiAgICAgICAgcGFpckluZm8uY2FsY3VsYXRlZEludGVyc2VjdGlvbiA9IHRydWU7IC8vIHB0IG91dHNpZGUgc3JjIHNoYXBlIHRvIGNhbGMgZGlzdGFuY2UvZGlzcGxhY2VtZW50IGZyb20gc3JjIHRvIHRndFxuXG4gICAgICAgIHZhciBzcmNPdXRzaWRlID0gc3JjU2hhcGUuaW50ZXJzZWN0TGluZShzcmNQb3MueCwgc3JjUG9zLnksIHNyY1csIHNyY0gsIHRndFBvcy54LCB0Z3RQb3MueSwgMCk7XG4gICAgICAgIHZhciBzcmNJbnRuID0gcGFpckluZm8uc3JjSW50biA9IHNyY091dHNpZGU7IC8vIHB0IG91dHNpZGUgdGd0IHNoYXBlIHRvIGNhbGMgZGlzdGFuY2UvZGlzcGxhY2VtZW50IGZyb20gc3JjIHRvIHRndFxuXG4gICAgICAgIHZhciB0Z3RPdXRzaWRlID0gdGd0U2hhcGUuaW50ZXJzZWN0TGluZSh0Z3RQb3MueCwgdGd0UG9zLnksIHRndFcsIHRndEgsIHNyY1Bvcy54LCBzcmNQb3MueSwgMCk7XG4gICAgICAgIHZhciB0Z3RJbnRuID0gcGFpckluZm8udGd0SW50biA9IHRndE91dHNpZGU7XG4gICAgICAgIHZhciBpbnRlcnNlY3Rpb25QdHMgPSBwYWlySW5mby5pbnRlcnNlY3Rpb25QdHMgPSB7XG4gICAgICAgICAgeDE6IHNyY091dHNpZGVbMF0sXG4gICAgICAgICAgeDI6IHRndE91dHNpZGVbMF0sXG4gICAgICAgICAgeTE6IHNyY091dHNpZGVbMV0sXG4gICAgICAgICAgeTI6IHRndE91dHNpZGVbMV1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBvc1B0cyA9IHBhaXJJbmZvLnBvc1B0cyA9IHtcbiAgICAgICAgICB4MTogc3JjUG9zLngsXG4gICAgICAgICAgeDI6IHRndFBvcy54LFxuICAgICAgICAgIHkxOiBzcmNQb3MueSxcbiAgICAgICAgICB5MjogdGd0UG9zLnlcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGR5ID0gdGd0T3V0c2lkZVsxXSAtIHNyY091dHNpZGVbMV07XG4gICAgICAgIHZhciBkeCA9IHRndE91dHNpZGVbMF0gLSBzcmNPdXRzaWRlWzBdO1xuICAgICAgICB2YXIgbCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gICAgICAgIHZhciB2ZWN0b3IgPSBwYWlySW5mby52ZWN0b3IgPSB7XG4gICAgICAgICAgeDogZHgsXG4gICAgICAgICAgeTogZHlcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHZlY3Rvck5vcm0gPSBwYWlySW5mby52ZWN0b3JOb3JtID0ge1xuICAgICAgICAgIHg6IHZlY3Rvci54IC8gbCxcbiAgICAgICAgICB5OiB2ZWN0b3IueSAvIGxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHZlY3Rvck5vcm1JbnZlcnNlID0ge1xuICAgICAgICAgIHg6IC12ZWN0b3JOb3JtLnksXG4gICAgICAgICAgeTogdmVjdG9yTm9ybS54XG4gICAgICAgIH07IC8vIGlmIG5vZGUgc2hhcGVzIG92ZXJsYXAsIHRoZW4gbm8gY3RybCBwdHMgdG8gZHJhd1xuXG4gICAgICAgIHBhaXJJbmZvLm5vZGVzT3ZlcmxhcCA9ICFudW1iZXIobCkgfHwgdGd0U2hhcGUuY2hlY2tQb2ludChzcmNPdXRzaWRlWzBdLCBzcmNPdXRzaWRlWzFdLCAwLCB0Z3RXLCB0Z3RILCB0Z3RQb3MueCwgdGd0UG9zLnkpIHx8IHNyY1NoYXBlLmNoZWNrUG9pbnQodGd0T3V0c2lkZVswXSwgdGd0T3V0c2lkZVsxXSwgMCwgc3JjVywgc3JjSCwgc3JjUG9zLngsIHNyY1Bvcy55KTtcbiAgICAgICAgcGFpckluZm8udmVjdG9yTm9ybUludmVyc2UgPSB2ZWN0b3JOb3JtSW52ZXJzZTtcbiAgICAgICAgc3dhcHBlZHBhaXJJbmZvID0ge1xuICAgICAgICAgIG5vZGVzT3ZlcmxhcDogcGFpckluZm8ubm9kZXNPdmVybGFwLFxuICAgICAgICAgIGRpckNvdW50czogcGFpckluZm8uZGlyQ291bnRzLFxuICAgICAgICAgIGNhbGN1bGF0ZWRJbnRlcnNlY3Rpb246IHRydWUsXG4gICAgICAgICAgaGFzQmV6aWVyOiBwYWlySW5mby5oYXNCZXppZXIsXG4gICAgICAgICAgaGFzVW5idW5kbGVkOiBwYWlySW5mby5oYXNVbmJ1bmRsZWQsXG4gICAgICAgICAgZWxlczogcGFpckluZm8uZWxlcyxcbiAgICAgICAgICBzcmNQb3M6IHRndFBvcyxcbiAgICAgICAgICB0Z3RQb3M6IHNyY1BvcyxcbiAgICAgICAgICBzcmNXOiB0Z3RXLFxuICAgICAgICAgIHNyY0g6IHRndEgsXG4gICAgICAgICAgdGd0Vzogc3JjVyxcbiAgICAgICAgICB0Z3RIOiBzcmNILFxuICAgICAgICAgIHNyY0ludG46IHRndEludG4sXG4gICAgICAgICAgdGd0SW50bjogc3JjSW50bixcbiAgICAgICAgICBzcmNTaGFwZTogdGd0U2hhcGUsXG4gICAgICAgICAgdGd0U2hhcGU6IHNyY1NoYXBlLFxuICAgICAgICAgIHBvc1B0czoge1xuICAgICAgICAgICAgeDE6IHBvc1B0cy54MixcbiAgICAgICAgICAgIHkxOiBwb3NQdHMueTIsXG4gICAgICAgICAgICB4MjogcG9zUHRzLngxLFxuICAgICAgICAgICAgeTI6IHBvc1B0cy55MVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW50ZXJzZWN0aW9uUHRzOiB7XG4gICAgICAgICAgICB4MTogaW50ZXJzZWN0aW9uUHRzLngyLFxuICAgICAgICAgICAgeTE6IGludGVyc2VjdGlvblB0cy55MixcbiAgICAgICAgICAgIHgyOiBpbnRlcnNlY3Rpb25QdHMueDEsXG4gICAgICAgICAgICB5MjogaW50ZXJzZWN0aW9uUHRzLnkxXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2ZWN0b3I6IHtcbiAgICAgICAgICAgIHg6IC12ZWN0b3IueCxcbiAgICAgICAgICAgIHk6IC12ZWN0b3IueVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmVjdG9yTm9ybToge1xuICAgICAgICAgICAgeDogLXZlY3Rvck5vcm0ueCxcbiAgICAgICAgICAgIHk6IC12ZWN0b3JOb3JtLnlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZlY3Rvck5vcm1JbnZlcnNlOiB7XG4gICAgICAgICAgICB4OiAtdmVjdG9yTm9ybUludmVyc2UueCxcbiAgICAgICAgICAgIHk6IC12ZWN0b3JOb3JtSW52ZXJzZS55XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgcGFzc2VkUGFpckluZm8gPSBlZGdlSXNTd2FwcGVkID8gc3dhcHBlZHBhaXJJbmZvIDogcGFpckluZm87XG4gICAgICBycy5ub2Rlc092ZXJsYXAgPSBwYXNzZWRQYWlySW5mby5ub2Rlc092ZXJsYXA7XG4gICAgICBycy5zcmNJbnRuID0gcGFzc2VkUGFpckluZm8uc3JjSW50bjtcbiAgICAgIHJzLnRndEludG4gPSBwYXNzZWRQYWlySW5mby50Z3RJbnRuO1xuXG4gICAgICBpZiAoaGFzQ29tcG91bmRzICYmIChzcmMuaXNQYXJlbnQoKSB8fCBzcmMuaXNDaGlsZCgpIHx8IHRndC5pc1BhcmVudCgpIHx8IHRndC5pc0NoaWxkKCkpICYmIChzcmMucGFyZW50cygpLmFueVNhbWUodGd0KSB8fCB0Z3QucGFyZW50cygpLmFueVNhbWUoc3JjKSB8fCBzcmMuc2FtZSh0Z3QpICYmIHNyYy5pc1BhcmVudCgpKSkge1xuICAgICAgICBfdGhpcy5maW5kQ29tcG91bmRMb29wUG9pbnRzKF9lZGdlLCBwYXNzZWRQYWlySW5mbywgX2kyLCBfZWRnZUlzVW5idW5kbGVkKTtcbiAgICAgIH0gZWxzZSBpZiAoc3JjID09PSB0Z3QpIHtcbiAgICAgICAgX3RoaXMuZmluZExvb3BQb2ludHMoX2VkZ2UsIHBhc3NlZFBhaXJJbmZvLCBfaTIsIF9lZGdlSXNVbmJ1bmRsZWQpO1xuICAgICAgfSBlbHNlIGlmIChfY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJykge1xuICAgICAgICBfdGhpcy5maW5kU2VnbWVudHNQb2ludHMoX2VkZ2UsIHBhc3NlZFBhaXJJbmZvKTtcbiAgICAgIH0gZWxzZSBpZiAoX2N1cnZlU3R5bGUgPT09ICd0YXhpJykge1xuICAgICAgICBfdGhpcy5maW5kVGF4aVBvaW50cyhfZWRnZSwgcGFzc2VkUGFpckluZm8pO1xuICAgICAgfSBlbHNlIGlmIChfY3VydmVTdHlsZSA9PT0gJ3N0cmFpZ2h0JyB8fCAhX2VkZ2VJc1VuYnVuZGxlZCAmJiBwYWlySW5mby5lbGVzLmxlbmd0aCAlIDIgPT09IDEgJiYgX2kyID09PSBNYXRoLmZsb29yKHBhaXJJbmZvLmVsZXMubGVuZ3RoIC8gMikpIHtcbiAgICAgICAgX3RoaXMuZmluZFN0cmFpZ2h0RWRnZVBvaW50cyhfZWRnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5maW5kQmV6aWVyUG9pbnRzKF9lZGdlLCBwYXNzZWRQYWlySW5mbywgX2kyLCBfZWRnZUlzVW5idW5kbGVkLCBlZGdlSXNTd2FwcGVkKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuZmluZEVuZHBvaW50cyhfZWRnZSk7XG5cbiAgICAgIF90aGlzLnRyeVRvQ29ycmVjdEludmFsaWRQb2ludHMoX2VkZ2UsIHBhc3NlZFBhaXJJbmZvKTtcblxuICAgICAgX3RoaXMuY2hlY2tGb3JJbnZhbGlkRWRnZVdhcm5pbmcoX2VkZ2UpO1xuXG4gICAgICBfdGhpcy5zdG9yZUFsbHB0cyhfZWRnZSk7XG5cbiAgICAgIF90aGlzLnN0b3JlRWRnZVByb2plY3Rpb25zKF9lZGdlKTtcblxuICAgICAgX3RoaXMuY2FsY3VsYXRlQXJyb3dBbmdsZXMoX2VkZ2UpO1xuXG4gICAgICBfdGhpcy5yZWNhbGN1bGF0ZUVkZ2VMYWJlbFByb2plY3Rpb25zKF9lZGdlKTtcblxuICAgICAgX3RoaXMuY2FsY3VsYXRlTGFiZWxBbmdsZXMoX2VkZ2UpO1xuICAgIH0gLy8gZm9yIHBhaXIgZWRnZXNcblxuICB9O1xuXG4gIGZvciAodmFyIHAgPSAwOyBwIDwgcGFpcklkcy5sZW5ndGg7IHArKykge1xuICAgIF9sb29wKHApO1xuICB9IC8vIGZvciBwYWlyIGlkc1xuICAvLyBoYXlzdGFja3MgYXZvaWQgdGhlIGV4cGVuc2Ugb2YgcGFpckluZm8gc3R1ZmYgKGludGVyc2VjdGlvbnMgZXRjLilcblxuXG4gIHRoaXMuZmluZEhheXN0YWNrUG9pbnRzKGhheXN0YWNrRWRnZXMpO1xufTtcblxuZnVuY3Rpb24gZ2V0UHRzKHB0cykge1xuICB2YXIgcmV0UHRzID0gW107XG5cbiAgaWYgKHB0cyA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwdHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgeCA9IHB0c1tpXTtcbiAgICB2YXIgeSA9IHB0c1tpICsgMV07XG4gICAgcmV0UHRzLnB1c2goe1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXRQdHM7XG59XG5cbkJScCQzLmdldFNlZ21lbnRQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICB2YXIgcnMgPSBlZGdlWzBdLl9wcml2YXRlLnJzY3JhdGNoO1xuICB2YXIgdHlwZSA9IHJzLmVkZ2VUeXBlO1xuXG4gIGlmICh0eXBlID09PSAnc2VnbWVudHMnKSB7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG4gICAgcmV0dXJuIGdldFB0cyhycy5zZWdwdHMpO1xuICB9XG59O1xuXG5CUnAkMy5nZXRDb250cm9sUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdmFyIHR5cGUgPSBycy5lZGdlVHlwZTtcblxuICBpZiAodHlwZSA9PT0gJ2JlemllcicgfHwgdHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCB0eXBlID09PSAnc2VsZicgfHwgdHlwZSA9PT0gJ2NvbXBvdW5kJykge1xuICAgIHRoaXMucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVkZ2UpO1xuICAgIHJldHVybiBnZXRQdHMocnMuY3RybHB0cyk7XG4gIH1cbn07XG5cbkJScCQzLmdldEVkZ2VNaWRwb2ludCA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBycyA9IGVkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHRoaXMucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVkZ2UpO1xuICByZXR1cm4ge1xuICAgIHg6IHJzLm1pZFgsXG4gICAgeTogcnMubWlkWVxuICB9O1xufTtcblxudmFyIEJScCQ0ID0ge307XG5cbkJScCQ0Lm1hbnVhbEVuZHB0VG9QeCA9IGZ1bmN0aW9uIChub2RlLCBwcm9wKSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIG5wb3MgPSBub2RlLnBvc2l0aW9uKCk7XG4gIHZhciB3ID0gbm9kZS5vdXRlcldpZHRoKCk7XG4gIHZhciBoID0gbm9kZS5vdXRlckhlaWdodCgpO1xuXG4gIGlmIChwcm9wLnZhbHVlLmxlbmd0aCA9PT0gMikge1xuICAgIHZhciBwID0gW3Byb3AucGZWYWx1ZVswXSwgcHJvcC5wZlZhbHVlWzFdXTtcblxuICAgIGlmIChwcm9wLnVuaXRzWzBdID09PSAnJScpIHtcbiAgICAgIHBbMF0gPSBwWzBdICogdztcbiAgICB9XG5cbiAgICBpZiAocHJvcC51bml0c1sxXSA9PT0gJyUnKSB7XG4gICAgICBwWzFdID0gcFsxXSAqIGg7XG4gICAgfVxuXG4gICAgcFswXSArPSBucG9zLng7XG4gICAgcFsxXSArPSBucG9zLnk7XG4gICAgcmV0dXJuIHA7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGFuZ2xlID0gcHJvcC5wZlZhbHVlWzBdO1xuICAgIGFuZ2xlID0gLU1hdGguUEkgLyAyICsgYW5nbGU7IC8vIHN0YXJ0IGF0IDEyIG8nY2xvY2tcblxuICAgIHZhciBsID0gMiAqIE1hdGgubWF4KHcsIGgpO1xuICAgIHZhciBfcCA9IFtucG9zLnggKyBNYXRoLmNvcyhhbmdsZSkgKiBsLCBucG9zLnkgKyBNYXRoLnNpbihhbmdsZSkgKiBsXTtcbiAgICByZXR1cm4gci5ub2RlU2hhcGVzW3RoaXMuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5pbnRlcnNlY3RMaW5lKG5wb3MueCwgbnBvcy55LCB3LCBoLCBfcFswXSwgX3BbMV0sIDApO1xuICB9XG59O1xuXG5CUnAkNC5maW5kRW5kcG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgaW50ZXJzZWN0O1xuICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UoKVswXTtcbiAgdmFyIHRhcmdldCA9IGVkZ2UudGFyZ2V0KClbMF07XG4gIHZhciBzcmNQb3MgPSBzb3VyY2UucG9zaXRpb24oKTtcbiAgdmFyIHRndFBvcyA9IHRhcmdldC5wb3NpdGlvbigpO1xuICB2YXIgdGd0QXJTaGFwZSA9IGVkZ2UucHN0eWxlKCd0YXJnZXQtYXJyb3ctc2hhcGUnKS52YWx1ZTtcbiAgdmFyIHNyY0FyU2hhcGUgPSBlZGdlLnBzdHlsZSgnc291cmNlLWFycm93LXNoYXBlJykudmFsdWU7XG4gIHZhciB0Z3REaXN0ID0gZWRnZS5wc3R5bGUoJ3RhcmdldC1kaXN0YW5jZS1mcm9tLW5vZGUnKS5wZlZhbHVlO1xuICB2YXIgc3JjRGlzdCA9IGVkZ2UucHN0eWxlKCdzb3VyY2UtZGlzdGFuY2UtZnJvbS1ub2RlJykucGZWYWx1ZTtcbiAgdmFyIGN1cnZlU3R5bGUgPSBlZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTtcbiAgdmFyIHJzID0gZWRnZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdmFyIGV0ID0gcnMuZWRnZVR5cGU7XG4gIHZhciB0YXhpID0gY3VydmVTdHlsZSA9PT0gJ3RheGknO1xuICB2YXIgc2VsZiA9IGV0ID09PSAnc2VsZicgfHwgZXQgPT09ICdjb21wb3VuZCc7XG4gIHZhciBiZXppZXIgPSBldCA9PT0gJ2JlemllcicgfHwgZXQgPT09ICdtdWx0aWJlemllcicgfHwgc2VsZjtcbiAgdmFyIG11bHRpID0gZXQgIT09ICdiZXppZXInO1xuICB2YXIgbGluZXMgPSBldCA9PT0gJ3N0cmFpZ2h0JyB8fCBldCA9PT0gJ3NlZ21lbnRzJztcbiAgdmFyIHNlZ21lbnRzID0gZXQgPT09ICdzZWdtZW50cyc7XG4gIHZhciBoYXNFbmRwdHMgPSBiZXppZXIgfHwgbXVsdGkgfHwgbGluZXM7XG4gIHZhciBvdmVycmlkZUVuZHB0cyA9IHNlbGYgfHwgdGF4aTtcbiAgdmFyIHNyY01hbkVuZHB0ID0gZWRnZS5wc3R5bGUoJ3NvdXJjZS1lbmRwb2ludCcpO1xuICB2YXIgc3JjTWFuRW5kcHRWYWwgPSBvdmVycmlkZUVuZHB0cyA/ICdvdXRzaWRlLXRvLW5vZGUnIDogc3JjTWFuRW5kcHQudmFsdWU7XG4gIHZhciB0Z3RNYW5FbmRwdCA9IGVkZ2UucHN0eWxlKCd0YXJnZXQtZW5kcG9pbnQnKTtcbiAgdmFyIHRndE1hbkVuZHB0VmFsID0gb3ZlcnJpZGVFbmRwdHMgPyAnb3V0c2lkZS10by1ub2RlJyA6IHRndE1hbkVuZHB0LnZhbHVlO1xuICBycy5zcmNNYW5FbmRwdCA9IHNyY01hbkVuZHB0O1xuICBycy50Z3RNYW5FbmRwdCA9IHRndE1hbkVuZHB0O1xuICB2YXIgcDE7IC8vIGxhc3Qga25vd24gcG9pbnQgb2YgZWRnZSBvbiB0YXJnZXQgc2lkZVxuXG4gIHZhciBwMjsgLy8gbGFzdCBrbm93biBwb2ludCBvZiBlZGdlIG9uIHNvdXJjZSBzaWRlXG5cbiAgdmFyIHAxX2k7IC8vIHBvaW50IHRvIGludGVyc2VjdCB3aXRoIHRhcmdldCBzaGFwZVxuXG4gIHZhciBwMl9pOyAvLyBwb2ludCB0byBpbnRlcnNlY3Qgd2l0aCBzb3VyY2Ugc2hhcGVcblxuICBpZiAoYmV6aWVyKSB7XG4gICAgdmFyIGNwU3RhcnQgPSBbcnMuY3RybHB0c1swXSwgcnMuY3RybHB0c1sxXV07XG4gICAgdmFyIGNwRW5kID0gbXVsdGkgPyBbcnMuY3RybHB0c1tycy5jdHJscHRzLmxlbmd0aCAtIDJdLCBycy5jdHJscHRzW3JzLmN0cmxwdHMubGVuZ3RoIC0gMV1dIDogY3BTdGFydDtcbiAgICBwMSA9IGNwRW5kO1xuICAgIHAyID0gY3BTdGFydDtcbiAgfSBlbHNlIGlmIChsaW5lcykge1xuICAgIHZhciBzcmNBcnJvd0Zyb21QdCA9ICFzZWdtZW50cyA/IFt0Z3RQb3MueCwgdGd0UG9zLnldIDogcnMuc2VncHRzLnNsaWNlKDAsIDIpO1xuICAgIHZhciB0Z3RBcnJvd0Zyb21QdCA9ICFzZWdtZW50cyA/IFtzcmNQb3MueCwgc3JjUG9zLnldIDogcnMuc2VncHRzLnNsaWNlKHJzLnNlZ3B0cy5sZW5ndGggLSAyKTtcbiAgICBwMSA9IHRndEFycm93RnJvbVB0O1xuICAgIHAyID0gc3JjQXJyb3dGcm9tUHQ7XG4gIH1cblxuICBpZiAodGd0TWFuRW5kcHRWYWwgPT09ICdpbnNpZGUtdG8tbm9kZScpIHtcbiAgICBpbnRlcnNlY3QgPSBbdGd0UG9zLngsIHRndFBvcy55XTtcbiAgfSBlbHNlIGlmICh0Z3RNYW5FbmRwdC51bml0cykge1xuICAgIGludGVyc2VjdCA9IHRoaXMubWFudWFsRW5kcHRUb1B4KHRhcmdldCwgdGd0TWFuRW5kcHQpO1xuICB9IGVsc2UgaWYgKHRndE1hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1saW5lJykge1xuICAgIGludGVyc2VjdCA9IHJzLnRndEludG47IC8vIHVzZSBjYWNoZWQgdmFsdWUgZnJvbSBjdHJscHQgY2FsY1xuICB9IGVsc2Uge1xuICAgIGlmICh0Z3RNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbm9kZScgfHwgdGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLW5vZGUtb3ItbGFiZWwnKSB7XG4gICAgICBwMV9pID0gcDE7XG4gICAgfSBlbHNlIGlmICh0Z3RNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZScgfHwgdGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUtb3ItbGFiZWwnKSB7XG4gICAgICBwMV9pID0gW3NyY1Bvcy54LCBzcmNQb3MueV07XG4gICAgfVxuXG4gICAgaW50ZXJzZWN0ID0gci5ub2RlU2hhcGVzW3RoaXMuZ2V0Tm9kZVNoYXBlKHRhcmdldCldLmludGVyc2VjdExpbmUodGd0UG9zLngsIHRndFBvcy55LCB0YXJnZXQub3V0ZXJXaWR0aCgpLCB0YXJnZXQub3V0ZXJIZWlnaHQoKSwgcDFfaVswXSwgcDFfaVsxXSwgMCk7XG5cbiAgICBpZiAodGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLW5vZGUtb3ItbGFiZWwnIHx8IHRndE1hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1saW5lLW9yLWxhYmVsJykge1xuICAgICAgdmFyIHRycyA9IHRhcmdldC5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICAgIHZhciBsdyA9IHRycy5sYWJlbFdpZHRoO1xuICAgICAgdmFyIGxoID0gdHJzLmxhYmVsSGVpZ2h0O1xuICAgICAgdmFyIGx4ID0gdHJzLmxhYmVsWDtcbiAgICAgIHZhciBseSA9IHRycy5sYWJlbFk7XG4gICAgICB2YXIgbHcyID0gbHcgLyAyO1xuICAgICAgdmFyIGxoMiA9IGxoIC8gMjtcbiAgICAgIHZhciB2YSA9IHRhcmdldC5wc3R5bGUoJ3RleHQtdmFsaWduJykudmFsdWU7XG5cbiAgICAgIGlmICh2YSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgbHkgLT0gbGgyO1xuICAgICAgfSBlbHNlIGlmICh2YSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgbHkgKz0gbGgyO1xuICAgICAgfVxuXG4gICAgICB2YXIgaGEgPSB0YXJnZXQucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnZhbHVlO1xuXG4gICAgICBpZiAoaGEgPT09ICdsZWZ0Jykge1xuICAgICAgICBseCAtPSBsdzI7XG4gICAgICB9IGVsc2UgaWYgKGhhID09PSAncmlnaHQnKSB7XG4gICAgICAgIGx4ICs9IGx3MjtcbiAgICAgIH1cblxuICAgICAgdmFyIGxhYmVsSW50ZXJzZWN0ID0gcG9seWdvbkludGVyc2VjdExpbmUocDFfaVswXSwgcDFfaVsxXSwgW2x4IC0gbHcyLCBseSAtIGxoMiwgbHggKyBsdzIsIGx5IC0gbGgyLCBseCArIGx3MiwgbHkgKyBsaDIsIGx4IC0gbHcyLCBseSArIGxoMl0sIHRndFBvcy54LCB0Z3RQb3MueSk7XG5cbiAgICAgIGlmIChsYWJlbEludGVyc2VjdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciByZWZQdCA9IHNyY1BvcztcbiAgICAgICAgdmFyIGludFNxZGlzdCA9IHNxZGlzdChyZWZQdCwgYXJyYXkycG9pbnQoaW50ZXJzZWN0KSk7XG4gICAgICAgIHZhciBsYWJJbnRTcWRpc3QgPSBzcWRpc3QocmVmUHQsIGFycmF5MnBvaW50KGxhYmVsSW50ZXJzZWN0KSk7XG4gICAgICAgIHZhciBtaW5TcURpc3QgPSBpbnRTcWRpc3Q7XG5cbiAgICAgICAgaWYgKGxhYkludFNxZGlzdCA8IGludFNxZGlzdCkge1xuICAgICAgICAgIGludGVyc2VjdCA9IGxhYmVsSW50ZXJzZWN0O1xuICAgICAgICAgIG1pblNxRGlzdCA9IGxhYkludFNxZGlzdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYWJlbEludGVyc2VjdC5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgdmFyIGxhYkludDJTcURpc3QgPSBzcWRpc3QocmVmUHQsIHtcbiAgICAgICAgICAgIHg6IGxhYmVsSW50ZXJzZWN0WzJdLFxuICAgICAgICAgICAgeTogbGFiZWxJbnRlcnNlY3RbM11cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChsYWJJbnQyU3FEaXN0IDwgbWluU3FEaXN0KSB7XG4gICAgICAgICAgICBpbnRlcnNlY3QgPSBbbGFiZWxJbnRlcnNlY3RbMl0sIGxhYmVsSW50ZXJzZWN0WzNdXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgYXJyb3dFbmQgPSBzaG9ydGVuSW50ZXJzZWN0aW9uKGludGVyc2VjdCwgcDEsIHIuYXJyb3dTaGFwZXNbdGd0QXJTaGFwZV0uc3BhY2luZyhlZGdlKSArIHRndERpc3QpO1xuICB2YXIgZWRnZUVuZCA9IHNob3J0ZW5JbnRlcnNlY3Rpb24oaW50ZXJzZWN0LCBwMSwgci5hcnJvd1NoYXBlc1t0Z3RBclNoYXBlXS5nYXAoZWRnZSkgKyB0Z3REaXN0KTtcbiAgcnMuZW5kWCA9IGVkZ2VFbmRbMF07XG4gIHJzLmVuZFkgPSBlZGdlRW5kWzFdO1xuICBycy5hcnJvd0VuZFggPSBhcnJvd0VuZFswXTtcbiAgcnMuYXJyb3dFbmRZID0gYXJyb3dFbmRbMV07XG5cbiAgaWYgKHNyY01hbkVuZHB0VmFsID09PSAnaW5zaWRlLXRvLW5vZGUnKSB7XG4gICAgaW50ZXJzZWN0ID0gW3NyY1Bvcy54LCBzcmNQb3MueV07XG4gIH0gZWxzZSBpZiAoc3JjTWFuRW5kcHQudW5pdHMpIHtcbiAgICBpbnRlcnNlY3QgPSB0aGlzLm1hbnVhbEVuZHB0VG9QeChzb3VyY2UsIHNyY01hbkVuZHB0KTtcbiAgfSBlbHNlIGlmIChzcmNNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZScpIHtcbiAgICBpbnRlcnNlY3QgPSBycy5zcmNJbnRuOyAvLyB1c2UgY2FjaGVkIHZhbHVlIGZyb20gY3RybHB0IGNhbGNcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3JjTWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLW5vZGUnIHx8IHNyY01hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1ub2RlLW9yLWxhYmVsJykge1xuICAgICAgcDJfaSA9IHAyO1xuICAgIH0gZWxzZSBpZiAoc3JjTWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUnIHx8IHNyY01hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1saW5lLW9yLWxhYmVsJykge1xuICAgICAgcDJfaSA9IFt0Z3RQb3MueCwgdGd0UG9zLnldO1xuICAgIH1cblxuICAgIGludGVyc2VjdCA9IHIubm9kZVNoYXBlc1t0aGlzLmdldE5vZGVTaGFwZShzb3VyY2UpXS5pbnRlcnNlY3RMaW5lKHNyY1Bvcy54LCBzcmNQb3MueSwgc291cmNlLm91dGVyV2lkdGgoKSwgc291cmNlLm91dGVySGVpZ2h0KCksIHAyX2lbMF0sIHAyX2lbMV0sIDApO1xuXG4gICAgaWYgKHNyY01hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1ub2RlLW9yLWxhYmVsJyB8fCBzcmNNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZS1vci1sYWJlbCcpIHtcbiAgICAgIHZhciBzcnMgPSBzb3VyY2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgICB2YXIgX2x3ID0gc3JzLmxhYmVsV2lkdGg7XG4gICAgICB2YXIgX2xoID0gc3JzLmxhYmVsSGVpZ2h0O1xuICAgICAgdmFyIF9seCA9IHNycy5sYWJlbFg7XG4gICAgICB2YXIgX2x5ID0gc3JzLmxhYmVsWTtcblxuICAgICAgdmFyIF9sdzIgPSBfbHcgLyAyO1xuXG4gICAgICB2YXIgX2xoMiA9IF9saCAvIDI7XG5cbiAgICAgIHZhciBfdmEgPSBzb3VyY2UucHN0eWxlKCd0ZXh0LXZhbGlnbicpLnZhbHVlO1xuXG4gICAgICBpZiAoX3ZhID09PSAndG9wJykge1xuICAgICAgICBfbHkgLT0gX2xoMjtcbiAgICAgIH0gZWxzZSBpZiAoX3ZhID09PSAnYm90dG9tJykge1xuICAgICAgICBfbHkgKz0gX2xoMjtcbiAgICAgIH1cblxuICAgICAgdmFyIF9oYSA9IHNvdXJjZS5wc3R5bGUoJ3RleHQtaGFsaWduJykudmFsdWU7XG5cbiAgICAgIGlmIChfaGEgPT09ICdsZWZ0Jykge1xuICAgICAgICBfbHggLT0gX2x3MjtcbiAgICAgIH0gZWxzZSBpZiAoX2hhID09PSAncmlnaHQnKSB7XG4gICAgICAgIF9seCArPSBfbHcyO1xuICAgICAgfVxuXG4gICAgICB2YXIgX2xhYmVsSW50ZXJzZWN0ID0gcG9seWdvbkludGVyc2VjdExpbmUocDJfaVswXSwgcDJfaVsxXSwgW19seCAtIF9sdzIsIF9seSAtIF9saDIsIF9seCArIF9sdzIsIF9seSAtIF9saDIsIF9seCArIF9sdzIsIF9seSArIF9saDIsIF9seCAtIF9sdzIsIF9seSArIF9saDJdLCBzcmNQb3MueCwgc3JjUG9zLnkpO1xuXG4gICAgICBpZiAoX2xhYmVsSW50ZXJzZWN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIF9yZWZQdCA9IHRndFBvcztcblxuICAgICAgICB2YXIgX2ludFNxZGlzdCA9IHNxZGlzdChfcmVmUHQsIGFycmF5MnBvaW50KGludGVyc2VjdCkpO1xuXG4gICAgICAgIHZhciBfbGFiSW50U3FkaXN0ID0gc3FkaXN0KF9yZWZQdCwgYXJyYXkycG9pbnQoX2xhYmVsSW50ZXJzZWN0KSk7XG5cbiAgICAgICAgdmFyIF9taW5TcURpc3QgPSBfaW50U3FkaXN0O1xuXG4gICAgICAgIGlmIChfbGFiSW50U3FkaXN0IDwgX2ludFNxZGlzdCkge1xuICAgICAgICAgIGludGVyc2VjdCA9IFtfbGFiZWxJbnRlcnNlY3RbMF0sIF9sYWJlbEludGVyc2VjdFsxXV07XG4gICAgICAgICAgX21pblNxRGlzdCA9IF9sYWJJbnRTcWRpc3Q7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX2xhYmVsSW50ZXJzZWN0Lmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICB2YXIgX2xhYkludDJTcURpc3QgPSBzcWRpc3QoX3JlZlB0LCB7XG4gICAgICAgICAgICB4OiBfbGFiZWxJbnRlcnNlY3RbMl0sXG4gICAgICAgICAgICB5OiBfbGFiZWxJbnRlcnNlY3RbM11cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChfbGFiSW50MlNxRGlzdCA8IF9taW5TcURpc3QpIHtcbiAgICAgICAgICAgIGludGVyc2VjdCA9IFtfbGFiZWxJbnRlcnNlY3RbMl0sIF9sYWJlbEludGVyc2VjdFszXV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGFycm93U3RhcnQgPSBzaG9ydGVuSW50ZXJzZWN0aW9uKGludGVyc2VjdCwgcDIsIHIuYXJyb3dTaGFwZXNbc3JjQXJTaGFwZV0uc3BhY2luZyhlZGdlKSArIHNyY0Rpc3QpO1xuICB2YXIgZWRnZVN0YXJ0ID0gc2hvcnRlbkludGVyc2VjdGlvbihpbnRlcnNlY3QsIHAyLCByLmFycm93U2hhcGVzW3NyY0FyU2hhcGVdLmdhcChlZGdlKSArIHNyY0Rpc3QpO1xuICBycy5zdGFydFggPSBlZGdlU3RhcnRbMF07XG4gIHJzLnN0YXJ0WSA9IGVkZ2VTdGFydFsxXTtcbiAgcnMuYXJyb3dTdGFydFggPSBhcnJvd1N0YXJ0WzBdO1xuICBycy5hcnJvd1N0YXJ0WSA9IGFycm93U3RhcnRbMV07XG5cbiAgaWYgKGhhc0VuZHB0cykge1xuICAgIGlmICghbnVtYmVyKHJzLnN0YXJ0WCkgfHwgIW51bWJlcihycy5zdGFydFkpIHx8ICFudW1iZXIocnMuZW5kWCkgfHwgIW51bWJlcihycy5lbmRZKSkge1xuICAgICAgcnMuYmFkTGluZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJzLmJhZExpbmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG5cbkJScCQ0LmdldFNvdXJjZUVuZHBvaW50ID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG5cbiAgc3dpdGNoIChycy5lZGdlVHlwZSkge1xuICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHJzLmhheXN0YWNrUHRzWzBdLFxuICAgICAgICB5OiBycy5oYXlzdGFja1B0c1sxXVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBycy5hcnJvd1N0YXJ0WCxcbiAgICAgICAgeTogcnMuYXJyb3dTdGFydFlcbiAgICAgIH07XG4gIH1cbn07XG5cbkJScCQ0LmdldFRhcmdldEVuZHBvaW50ID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG5cbiAgc3dpdGNoIChycy5lZGdlVHlwZSkge1xuICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHJzLmhheXN0YWNrUHRzWzJdLFxuICAgICAgICB5OiBycy5oYXlzdGFja1B0c1szXVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBycy5hcnJvd0VuZFgsXG4gICAgICAgIHk6IHJzLmFycm93RW5kWVxuICAgICAgfTtcbiAgfVxufTtcblxudmFyIEJScCQ1ID0ge307XG5cbmZ1bmN0aW9uIHB1c2hCZXppZXJQdHMociwgZWRnZSwgcHRzKSB7XG4gIHZhciBxYmV6aWVyQXQkMSA9IGZ1bmN0aW9uIHFiZXppZXJBdCQxKHAxLCBwMiwgcDMsIHQpIHtcbiAgICByZXR1cm4gcWJlemllckF0KHAxLCBwMiwgcDMsIHQpO1xuICB9O1xuXG4gIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gIHZhciBicHRzID0gX3AucnN0eWxlLmJlemllclB0cztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHIuYmV6aWVyUHJvalBjdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IHIuYmV6aWVyUHJvalBjdHNbaV07XG4gICAgYnB0cy5wdXNoKHtcbiAgICAgIHg6IHFiZXppZXJBdCQxKHB0c1swXSwgcHRzWzJdLCBwdHNbNF0sIHApLFxuICAgICAgeTogcWJlemllckF0JDEocHRzWzFdLCBwdHNbM10sIHB0c1s1XSwgcClcbiAgICB9KTtcbiAgfVxufVxuXG5CUnAkNS5zdG9yZUVkZ2VQcm9qZWN0aW9ucyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgZXQgPSBycy5lZGdlVHlwZTsgLy8gY2xlYXIgdGhlIGNhY2hlZCBwb2ludHMgc3RhdGVcblxuICBfcC5yc3R5bGUuYmV6aWVyUHRzID0gbnVsbDtcbiAgX3AucnN0eWxlLmxpbmVQdHMgPSBudWxsO1xuICBfcC5yc3R5bGUuaGF5c3RhY2tQdHMgPSBudWxsO1xuXG4gIGlmIChldCA9PT0gJ211bHRpYmV6aWVyJyB8fCBldCA9PT0gJ2JlemllcicgfHwgZXQgPT09ICdzZWxmJyB8fCBldCA9PT0gJ2NvbXBvdW5kJykge1xuICAgIF9wLnJzdHlsZS5iZXppZXJQdHMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpICsgNSA8IHJzLmFsbHB0cy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgcHVzaEJlemllclB0cyh0aGlzLCBlZGdlLCBycy5hbGxwdHMuc2xpY2UoaSwgaSArIDYpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXQgPT09ICdzZWdtZW50cycpIHtcbiAgICB2YXIgbHB0cyA9IF9wLnJzdHlsZS5saW5lUHRzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSArIDEgPCBycy5hbGxwdHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIGxwdHMucHVzaCh7XG4gICAgICAgIHg6IHJzLmFsbHB0c1tpXSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyAxXVxuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV0ID09PSAnaGF5c3RhY2snKSB7XG4gICAgdmFyIGhwdHMgPSBycy5oYXlzdGFja1B0cztcbiAgICBfcC5yc3R5bGUuaGF5c3RhY2tQdHMgPSBbe1xuICAgICAgeDogaHB0c1swXSxcbiAgICAgIHk6IGhwdHNbMV1cbiAgICB9LCB7XG4gICAgICB4OiBocHRzWzJdLFxuICAgICAgeTogaHB0c1szXVxuICAgIH1dO1xuICB9XG5cbiAgX3AucnN0eWxlLmFycm93V2lkdGggPSB0aGlzLmdldEFycm93V2lkdGgoZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSwgZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWUpICogdGhpcy5hcnJvd1NoYXBlV2lkdGg7XG59O1xuXG5CUnAkNS5yZWNhbGN1bGF0ZUVkZ2VQcm9qZWN0aW9ucyA9IGZ1bmN0aW9uIChlZGdlcykge1xuICB0aGlzLmZpbmRFZGdlQ29udHJvbFBvaW50cyhlZGdlcyk7XG59O1xuXG4vKiBnbG9iYWwgZG9jdW1lbnQgKi9cblxudmFyIEJScCQ2ID0ge307XG5cbkJScCQ2LnJlY2FsY3VsYXRlTm9kZUxhYmVsUHJvamVjdGlvbiA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIHZhciBjb250ZW50ID0gbm9kZS5wc3R5bGUoJ2xhYmVsJykuc3RyVmFsdWU7XG5cbiAgaWYgKGVtcHR5U3RyaW5nKGNvbnRlbnQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRleHRYLCB0ZXh0WTtcbiAgdmFyIF9wID0gbm9kZS5fcHJpdmF0ZTtcbiAgdmFyIG5vZGVXaWR0aCA9IG5vZGUud2lkdGgoKTtcbiAgdmFyIG5vZGVIZWlnaHQgPSBub2RlLmhlaWdodCgpO1xuICB2YXIgcGFkZGluZyA9IG5vZGUucGFkZGluZygpO1xuICB2YXIgbm9kZVBvcyA9IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIHRleHRIYWxpZ24gPSBub2RlLnBzdHlsZSgndGV4dC1oYWxpZ24nKS5zdHJWYWx1ZTtcbiAgdmFyIHRleHRWYWxpZ24gPSBub2RlLnBzdHlsZSgndGV4dC12YWxpZ24nKS5zdHJWYWx1ZTtcbiAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG4gIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG5cbiAgc3dpdGNoICh0ZXh0SGFsaWduKSB7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICB0ZXh0WCA9IG5vZGVQb3MueCAtIG5vZGVXaWR0aCAvIDIgLSBwYWRkaW5nO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdyaWdodCc6XG4gICAgICB0ZXh0WCA9IG5vZGVQb3MueCArIG5vZGVXaWR0aCAvIDIgKyBwYWRkaW5nO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgLy8gZS5nLiBjZW50ZXJcbiAgICAgIHRleHRYID0gbm9kZVBvcy54O1xuICB9XG5cbiAgc3dpdGNoICh0ZXh0VmFsaWduKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIHRleHRZID0gbm9kZVBvcy55IC0gbm9kZUhlaWdodCAvIDIgLSBwYWRkaW5nO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgdGV4dFkgPSBub2RlUG9zLnkgKyBub2RlSGVpZ2h0IC8gMiArIHBhZGRpbmc7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBlLmcuIG1pZGRsZVxuICAgICAgdGV4dFkgPSBub2RlUG9zLnk7XG4gIH1cblxuICBycy5sYWJlbFggPSB0ZXh0WDtcbiAgcnMubGFiZWxZID0gdGV4dFk7XG4gIHJzdHlsZS5sYWJlbFggPSB0ZXh0WDtcbiAgcnN0eWxlLmxhYmVsWSA9IHRleHRZO1xuICB0aGlzLmNhbGN1bGF0ZUxhYmVsQW5nbGVzKG5vZGUpO1xuICB0aGlzLmFwcGx5TGFiZWxEaW1lbnNpb25zKG5vZGUpO1xufTtcblxudmFyIGxpbmVBbmdsZUZyb21EZWx0YSA9IGZ1bmN0aW9uIGxpbmVBbmdsZUZyb21EZWx0YShkeCwgZHkpIHtcbiAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuKGR5IC8gZHgpO1xuXG4gIGlmIChkeCA9PT0gMCAmJiBhbmdsZSA8IDApIHtcbiAgICBhbmdsZSA9IGFuZ2xlICogLTE7XG4gIH1cblxuICByZXR1cm4gYW5nbGU7XG59O1xuXG52YXIgbGluZUFuZ2xlID0gZnVuY3Rpb24gbGluZUFuZ2xlKHAwLCBwMSkge1xuICB2YXIgZHggPSBwMS54IC0gcDAueDtcbiAgdmFyIGR5ID0gcDEueSAtIHAwLnk7XG4gIHJldHVybiBsaW5lQW5nbGVGcm9tRGVsdGEoZHgsIGR5KTtcbn07XG5cbnZhciBiZXppZXJBbmdsZSA9IGZ1bmN0aW9uIGJlemllckFuZ2xlKHAwLCBwMSwgcDIsIHQpIHtcbiAgdmFyIHQwID0gYm91bmQoMCwgdCAtIDAuMDAxLCAxKTtcbiAgdmFyIHQxID0gYm91bmQoMCwgdCArIDAuMDAxLCAxKTtcbiAgdmFyIGxwMCA9IHFiZXppZXJQdEF0KHAwLCBwMSwgcDIsIHQwKTtcbiAgdmFyIGxwMSA9IHFiZXppZXJQdEF0KHAwLCBwMSwgcDIsIHQxKTtcbiAgcmV0dXJuIGxpbmVBbmdsZShscDAsIGxwMSk7XG59O1xuXG5CUnAkNi5yZWNhbGN1bGF0ZUVkZ2VMYWJlbFByb2plY3Rpb25zID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIHA7XG4gIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjb250ZW50ID0ge1xuICAgIG1pZDogZWRnZS5wc3R5bGUoJ2xhYmVsJykuc3RyVmFsdWUsXG4gICAgc291cmNlOiBlZGdlLnBzdHlsZSgnc291cmNlLWxhYmVsJykuc3RyVmFsdWUsXG4gICAgdGFyZ2V0OiBlZGdlLnBzdHlsZSgndGFyZ2V0LWxhYmVsJykuc3RyVmFsdWVcbiAgfTtcblxuICBpZiAoY29udGVudC5taWQgfHwgY29udGVudC5zb3VyY2UgfHwgY29udGVudC50YXJnZXQpIDsgZWxzZSB7XG4gICAgICByZXR1cm47IC8vIG5vIGxhYmVscyA9PiBubyBjYWxjc1xuICAgIH0gLy8gYWRkIGNlbnRlciBwb2ludCB0byBzdHlsZSBzbyBib3VuZGluZyBib3ggY2FsY3VsYXRpb25zIGNhbiB1c2UgaXRcbiAgLy9cblxuXG4gIHAgPSB7XG4gICAgeDogcnMubWlkWCxcbiAgICB5OiBycy5taWRZXG4gIH07XG5cbiAgdmFyIHNldFJzID0gZnVuY3Rpb24gc2V0UnMocHJvcE5hbWUsIHByZWZpeCwgdmFsdWUpIHtcbiAgICBzZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4LCB2YWx1ZSk7XG4gICAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc3R5bGUsIHByb3BOYW1lLCBwcmVmaXgsIHZhbHVlKTtcbiAgfTtcblxuICBzZXRScygnbGFiZWxYJywgbnVsbCwgcC54KTtcbiAgc2V0UnMoJ2xhYmVsWScsIG51bGwsIHAueSk7XG4gIHZhciBtaWRBbmdsZSA9IGxpbmVBbmdsZUZyb21EZWx0YShycy5taWREaXNwWCwgcnMubWlkRGlzcFkpO1xuICBzZXRScygnbGFiZWxBdXRvQW5nbGUnLCBudWxsLCBtaWRBbmdsZSk7XG5cbiAgdmFyIGNyZWF0ZUNvbnRyb2xQb2ludEluZm8gPSBmdW5jdGlvbiBjcmVhdGVDb250cm9sUG9pbnRJbmZvKCkge1xuICAgIGlmIChjcmVhdGVDb250cm9sUG9pbnRJbmZvLmNhY2hlKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29udHJvbFBvaW50SW5mby5jYWNoZTtcbiAgICB9IC8vIHVzZSBjYWNoZSBzbyBvbmx5IDF4IHBlciBlZGdlXG5cblxuICAgIHZhciBjdHJscHRzID0gW107IC8vIHN0b3JlIGVhY2ggY3RybHB0IGluZm8gaW5pdFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgKyA1IDwgcnMuYWxscHRzLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgICB2YXIgcDAgPSB7XG4gICAgICAgIHg6IHJzLmFsbHB0c1tpXSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyAxXVxuICAgICAgfTtcbiAgICAgIHZhciBwMSA9IHtcbiAgICAgICAgeDogcnMuYWxscHRzW2kgKyAyXSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyAzXVxuICAgICAgfTsgLy8gY3RybHB0XG5cbiAgICAgIHZhciBwMiA9IHtcbiAgICAgICAgeDogcnMuYWxscHRzW2kgKyA0XSxcbiAgICAgICAgeTogcnMuYWxscHRzW2kgKyA1XVxuICAgICAgfTtcbiAgICAgIGN0cmxwdHMucHVzaCh7XG4gICAgICAgIHAwOiBwMCxcbiAgICAgICAgcDE6IHAxLFxuICAgICAgICBwMjogcDIsXG4gICAgICAgIHN0YXJ0RGlzdDogMCxcbiAgICAgICAgbGVuZ3RoOiAwLFxuICAgICAgICBzZWdtZW50czogW11cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBicHRzID0gX3AucnN0eWxlLmJlemllclB0cztcbiAgICB2YXIgblByb2pzID0gci5iZXppZXJQcm9qUGN0cy5sZW5ndGg7XG5cbiAgICBmdW5jdGlvbiBhZGRTZWdtZW50KGNwLCBwMCwgcDEsIHQwLCB0MSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGRpc3QocDAsIHAxKTtcbiAgICAgIHZhciBwcmV2U2VnbWVudCA9IGNwLnNlZ21lbnRzW2NwLnNlZ21lbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgdmFyIHNlZ21lbnQgPSB7XG4gICAgICAgIHAwOiBwMCxcbiAgICAgICAgcDE6IHAxLFxuICAgICAgICB0MDogdDAsXG4gICAgICAgIHQxOiB0MSxcbiAgICAgICAgc3RhcnREaXN0OiBwcmV2U2VnbWVudCA/IHByZXZTZWdtZW50LnN0YXJ0RGlzdCArIHByZXZTZWdtZW50Lmxlbmd0aCA6IDAsXG4gICAgICAgIGxlbmd0aDogbGVuZ3RoXG4gICAgICB9O1xuICAgICAgY3Auc2VnbWVudHMucHVzaChzZWdtZW50KTtcbiAgICAgIGNwLmxlbmd0aCArPSBsZW5ndGg7XG4gICAgfSAvLyB1cGRhdGUgZWFjaCBjdHJscHQgd2l0aCBzZWdtZW50IGluZm9cblxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGN0cmxwdHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgY3AgPSBjdHJscHRzW19pXTtcbiAgICAgIHZhciBwcmV2Q3AgPSBjdHJscHRzW19pIC0gMV07XG5cbiAgICAgIGlmIChwcmV2Q3ApIHtcbiAgICAgICAgY3Auc3RhcnREaXN0ID0gcHJldkNwLnN0YXJ0RGlzdCArIHByZXZDcC5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIGFkZFNlZ21lbnQoY3AsIGNwLnAwLCBicHRzW19pICogblByb2pzXSwgMCwgci5iZXppZXJQcm9qUGN0c1swXSk7IC8vIGZpcnN0XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgblByb2pzIC0gMTsgaisrKSB7XG4gICAgICAgIGFkZFNlZ21lbnQoY3AsIGJwdHNbX2kgKiBuUHJvanMgKyBqXSwgYnB0c1tfaSAqIG5Qcm9qcyArIGogKyAxXSwgci5iZXppZXJQcm9qUGN0c1tqXSwgci5iZXppZXJQcm9qUGN0c1tqICsgMV0pO1xuICAgICAgfVxuXG4gICAgICBhZGRTZWdtZW50KGNwLCBicHRzW19pICogblByb2pzICsgblByb2pzIC0gMV0sIGNwLnAyLCByLmJlemllclByb2pQY3RzW25Qcm9qcyAtIDFdLCAxKTsgLy8gbGFzdFxuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVDb250cm9sUG9pbnRJbmZvLmNhY2hlID0gY3RybHB0cztcbiAgfTtcblxuICB2YXIgY2FsY3VsYXRlRW5kUHJvamVjdGlvbiA9IGZ1bmN0aW9uIGNhbGN1bGF0ZUVuZFByb2plY3Rpb24ocHJlZml4KSB7XG4gICAgdmFyIGFuZ2xlO1xuICAgIHZhciBpc1NyYyA9IHByZWZpeCA9PT0gJ3NvdXJjZSc7XG5cbiAgICBpZiAoIWNvbnRlbnRbcHJlZml4XSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBvZmZzZXQgPSBlZGdlLnBzdHlsZShwcmVmaXggKyAnLXRleHQtb2Zmc2V0JykucGZWYWx1ZTtcblxuICAgIHN3aXRjaCAocnMuZWRnZVR5cGUpIHtcbiAgICAgIGNhc2UgJ3NlbGYnOlxuICAgICAgY2FzZSAnY29tcG91bmQnOlxuICAgICAgY2FzZSAnYmV6aWVyJzpcbiAgICAgIGNhc2UgJ211bHRpYmV6aWVyJzpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBjcHMgPSBjcmVhdGVDb250cm9sUG9pbnRJbmZvKCk7XG4gICAgICAgICAgdmFyIHNlbGVjdGVkO1xuICAgICAgICAgIHZhciBzdGFydERpc3QgPSAwO1xuICAgICAgICAgIHZhciB0b3RhbERpc3QgPSAwOyAvLyBmaW5kIHRoZSBzZWdtZW50IHdlJ3JlIG9uXG5cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIF9jcCA9IGNwc1tpc1NyYyA/IGkgOiBjcHMubGVuZ3RoIC0gMSAtIGldO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IF9jcC5zZWdtZW50cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICB2YXIgX3NlZyA9IF9jcC5zZWdtZW50c1tpc1NyYyA/IGogOiBfY3Auc2VnbWVudHMubGVuZ3RoIC0gMSAtIGpdO1xuICAgICAgICAgICAgICB2YXIgbGFzdFNlZyA9IGkgPT09IGNwcy5sZW5ndGggLSAxICYmIGogPT09IF9jcC5zZWdtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICBzdGFydERpc3QgPSB0b3RhbERpc3Q7XG4gICAgICAgICAgICAgIHRvdGFsRGlzdCArPSBfc2VnLmxlbmd0aDtcblxuICAgICAgICAgICAgICBpZiAodG90YWxEaXN0ID49IG9mZnNldCB8fCBsYXN0U2VnKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB7XG4gICAgICAgICAgICAgICAgICBjcDogX2NwLFxuICAgICAgICAgICAgICAgICAgc2VnbWVudDogX3NlZ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBjcCA9IHNlbGVjdGVkLmNwO1xuICAgICAgICAgIHZhciBzZWcgPSBzZWxlY3RlZC5zZWdtZW50O1xuICAgICAgICAgIHZhciB0U2VnbWVudCA9IChvZmZzZXQgLSBzdGFydERpc3QpIC8gc2VnLmxlbmd0aDtcbiAgICAgICAgICB2YXIgc2VnRHQgPSBzZWcudDEgLSBzZWcudDA7XG4gICAgICAgICAgdmFyIHQgPSBpc1NyYyA/IHNlZy50MCArIHNlZ0R0ICogdFNlZ21lbnQgOiBzZWcudDEgLSBzZWdEdCAqIHRTZWdtZW50O1xuICAgICAgICAgIHQgPSBib3VuZCgwLCB0LCAxKTtcbiAgICAgICAgICBwID0gcWJlemllclB0QXQoY3AucDAsIGNwLnAxLCBjcC5wMiwgdCk7XG4gICAgICAgICAgYW5nbGUgPSBiZXppZXJBbmdsZShjcC5wMCwgY3AucDEsIGNwLnAyLCB0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlICdzdHJhaWdodCc6XG4gICAgICBjYXNlICdzZWdtZW50cyc6XG4gICAgICBjYXNlICdoYXlzdGFjayc6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgZCA9IDAsXG4gICAgICAgICAgICAgIGRpLFxuICAgICAgICAgICAgICBkMDtcbiAgICAgICAgICB2YXIgcDAsIHAxO1xuICAgICAgICAgIHZhciBsID0gcnMuYWxscHRzLmxlbmd0aDtcblxuICAgICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiArIDMgPCBsOyBfaTIgKz0gMikge1xuICAgICAgICAgICAgaWYgKGlzU3JjKSB7XG4gICAgICAgICAgICAgIHAwID0ge1xuICAgICAgICAgICAgICAgIHg6IHJzLmFsbHB0c1tfaTJdLFxuICAgICAgICAgICAgICAgIHk6IHJzLmFsbHB0c1tfaTIgKyAxXVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBwMSA9IHtcbiAgICAgICAgICAgICAgICB4OiBycy5hbGxwdHNbX2kyICsgMl0sXG4gICAgICAgICAgICAgICAgeTogcnMuYWxscHRzW19pMiArIDNdXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwMCA9IHtcbiAgICAgICAgICAgICAgICB4OiBycy5hbGxwdHNbbCAtIDIgLSBfaTJdLFxuICAgICAgICAgICAgICAgIHk6IHJzLmFsbHB0c1tsIC0gMSAtIF9pMl1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcDEgPSB7XG4gICAgICAgICAgICAgICAgeDogcnMuYWxscHRzW2wgLSA0IC0gX2kyXSxcbiAgICAgICAgICAgICAgICB5OiBycy5hbGxwdHNbbCAtIDMgLSBfaTJdXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRpID0gZGlzdChwMCwgcDEpO1xuICAgICAgICAgICAgZDAgPSBkO1xuICAgICAgICAgICAgZCArPSBkaTtcblxuICAgICAgICAgICAgaWYgKGQgPj0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBwRCA9IG9mZnNldCAtIGQwO1xuXG4gICAgICAgICAgdmFyIF90ID0gcEQgLyBkaTtcblxuICAgICAgICAgIF90ID0gYm91bmQoMCwgX3QsIDEpO1xuICAgICAgICAgIHAgPSBsaW5lQXQocDAsIHAxLCBfdCk7XG4gICAgICAgICAgYW5nbGUgPSBsaW5lQW5nbGUocDAsIHAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFJzKCdsYWJlbFgnLCBwcmVmaXgsIHAueCk7XG4gICAgc2V0UnMoJ2xhYmVsWScsIHByZWZpeCwgcC55KTtcbiAgICBzZXRScygnbGFiZWxBdXRvQW5nbGUnLCBwcmVmaXgsIGFuZ2xlKTtcbiAgfTtcblxuICBjYWxjdWxhdGVFbmRQcm9qZWN0aW9uKCdzb3VyY2UnKTtcbiAgY2FsY3VsYXRlRW5kUHJvamVjdGlvbigndGFyZ2V0Jyk7XG4gIHRoaXMuYXBwbHlMYWJlbERpbWVuc2lvbnMoZWRnZSk7XG59O1xuXG5CUnAkNi5hcHBseUxhYmVsRGltZW5zaW9ucyA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgdGhpcy5hcHBseVByZWZpeGVkTGFiZWxEaW1lbnNpb25zKGVsZSk7XG5cbiAgaWYgKGVsZS5pc0VkZ2UoKSkge1xuICAgIHRoaXMuYXBwbHlQcmVmaXhlZExhYmVsRGltZW5zaW9ucyhlbGUsICdzb3VyY2UnKTtcbiAgICB0aGlzLmFwcGx5UHJlZml4ZWRMYWJlbERpbWVuc2lvbnMoZWxlLCAndGFyZ2V0Jyk7XG4gIH1cbn07XG5cbkJScCQ2LmFwcGx5UHJlZml4ZWRMYWJlbERpbWVuc2lvbnMgPSBmdW5jdGlvbiAoZWxlLCBwcmVmaXgpIHtcbiAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICB2YXIgdGV4dCA9IHRoaXMuZ2V0TGFiZWxUZXh0KGVsZSwgcHJlZml4KTtcbiAgdmFyIGxhYmVsRGltcyA9IHRoaXMuY2FsY3VsYXRlTGFiZWxEaW1lbnNpb25zKGVsZSwgdGV4dCk7XG4gIHZhciBsaW5lSGVpZ2h0ID0gZWxlLnBzdHlsZSgnbGluZS1oZWlnaHQnKS5wZlZhbHVlO1xuICB2YXIgdGV4dFdyYXAgPSBlbGUucHN0eWxlKCd0ZXh0LXdyYXAnKS5zdHJWYWx1ZTtcbiAgdmFyIGxpbmVzID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc2NyYXRjaCwgJ2xhYmVsV3JhcENhY2hlZExpbmVzJywgcHJlZml4KSB8fCBbXTtcbiAgdmFyIG51bUxpbmVzID0gdGV4dFdyYXAgIT09ICd3cmFwJyA/IDEgOiBNYXRoLm1heChsaW5lcy5sZW5ndGgsIDEpO1xuICB2YXIgbm9ybVBlckxpbmVIZWlnaHQgPSBsYWJlbERpbXMuaGVpZ2h0IC8gbnVtTGluZXM7XG4gIHZhciBsYWJlbExpbmVIZWlnaHQgPSBub3JtUGVyTGluZUhlaWdodCAqIGxpbmVIZWlnaHQ7XG4gIHZhciB3aWR0aCA9IGxhYmVsRGltcy53aWR0aDtcbiAgdmFyIGhlaWdodCA9IGxhYmVsRGltcy5oZWlnaHQgKyAobnVtTGluZXMgLSAxKSAqIChsaW5lSGVpZ2h0IC0gMSkgKiBub3JtUGVyTGluZUhlaWdodDtcbiAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc3R5bGUsICdsYWJlbFdpZHRoJywgcHJlZml4LCB3aWR0aCk7XG4gIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnNjcmF0Y2gsICdsYWJlbFdpZHRoJywgcHJlZml4LCB3aWR0aCk7XG4gIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnN0eWxlLCAnbGFiZWxIZWlnaHQnLCBwcmVmaXgsIGhlaWdodCk7XG4gIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnNjcmF0Y2gsICdsYWJlbEhlaWdodCcsIHByZWZpeCwgaGVpZ2h0KTtcbiAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc2NyYXRjaCwgJ2xhYmVsTGluZUhlaWdodCcsIHByZWZpeCwgbGFiZWxMaW5lSGVpZ2h0KTtcbn07XG5cbkJScCQ2LmdldExhYmVsVGV4dCA9IGZ1bmN0aW9uIChlbGUsIHByZWZpeCkge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBwZmQgPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgdmFyIHRleHQgPSBlbGUucHN0eWxlKHBmZCArICdsYWJlbCcpLnN0clZhbHVlO1xuICB2YXIgdGV4dFRyYW5zZm9ybSA9IGVsZS5wc3R5bGUoJ3RleHQtdHJhbnNmb3JtJykudmFsdWU7XG5cbiAgdmFyIHJzY3JhdGNoID0gZnVuY3Rpb24gcnNjcmF0Y2gocHJvcE5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBzZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4LCB2YWx1ZSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBnZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4KTtcbiAgICB9XG4gIH07IC8vIGZvciBlbXB0eSB0ZXh0LCBza2lwIGFsbCBwcm9jZXNzaW5nXG5cblxuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAodGV4dFRyYW5zZm9ybSA9PSAnbm9uZScpIDsgZWxzZSBpZiAodGV4dFRyYW5zZm9ybSA9PSAndXBwZXJjYXNlJykge1xuICAgIHRleHQgPSB0ZXh0LnRvVXBwZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAodGV4dFRyYW5zZm9ybSA9PSAnbG93ZXJjYXNlJykge1xuICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICB2YXIgd3JhcFN0eWxlID0gZWxlLnBzdHlsZSgndGV4dC13cmFwJykudmFsdWU7XG5cbiAgaWYgKHdyYXBTdHlsZSA9PT0gJ3dyYXAnKSB7XG4gICAgdmFyIGxhYmVsS2V5ID0gcnNjcmF0Y2goJ2xhYmVsS2V5Jyk7IC8vIHNhdmUgcmVjYWxjIGlmIHRoZSBsYWJlbCBpcyB0aGUgc2FtZSBhcyBiZWZvcmVcblxuICAgIGlmIChsYWJlbEtleSAhPSBudWxsICYmIHJzY3JhdGNoKCdsYWJlbFdyYXBLZXknKSA9PT0gbGFiZWxLZXkpIHtcbiAgICAgIHJldHVybiByc2NyYXRjaCgnbGFiZWxXcmFwQ2FjaGVkVGV4dCcpO1xuICAgIH1cblxuICAgIHZhciB6d3NwID0gXCJcXHUyMDBCXCI7XG4gICAgdmFyIGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgdmFyIG1heFcgPSBlbGUucHN0eWxlKCd0ZXh0LW1heC13aWR0aCcpLnBmVmFsdWU7XG4gICAgdmFyIG92ZXJmbG93ID0gZWxlLnBzdHlsZSgndGV4dC1vdmVyZmxvdy13cmFwJykudmFsdWU7XG4gICAgdmFyIG92ZXJmbG93QW55ID0gb3ZlcmZsb3cgPT09ICdhbnl3aGVyZSc7XG4gICAgdmFyIHdyYXBwZWRMaW5lcyA9IFtdO1xuICAgIHZhciB3b3Jkc1JlZ2V4ID0gL1tcXHNcXHUyMDBiXSsvO1xuICAgIHZhciB3b3JkU2VwYXJhdG9yID0gb3ZlcmZsb3dBbnkgPyAnJyA6ICcgJztcblxuICAgIGZvciAodmFyIGwgPSAwOyBsIDwgbGluZXMubGVuZ3RoOyBsKyspIHtcbiAgICAgIHZhciBsaW5lID0gbGluZXNbbF07XG4gICAgICB2YXIgbGluZURpbXMgPSB0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIGxpbmUpO1xuICAgICAgdmFyIGxpbmVXID0gbGluZURpbXMud2lkdGg7XG5cbiAgICAgIGlmIChvdmVyZmxvd0FueSkge1xuICAgICAgICB2YXIgcHJvY2Vzc2VkTGluZSA9IGxpbmUuc3BsaXQoJycpLmpvaW4oendzcCk7XG4gICAgICAgIGxpbmUgPSBwcm9jZXNzZWRMaW5lO1xuICAgICAgfVxuXG4gICAgICBpZiAobGluZVcgPiBtYXhXKSB7XG4gICAgICAgIC8vIGxpbmUgaXMgdG9vIGxvbmdcbiAgICAgICAgdmFyIHdvcmRzID0gbGluZS5zcGxpdCh3b3Jkc1JlZ2V4KTtcbiAgICAgICAgdmFyIHN1YmxpbmUgPSAnJztcblxuICAgICAgICBmb3IgKHZhciB3ID0gMDsgdyA8IHdvcmRzLmxlbmd0aDsgdysrKSB7XG4gICAgICAgICAgdmFyIHdvcmQgPSB3b3Jkc1t3XTtcbiAgICAgICAgICB2YXIgdGVzdExpbmUgPSBzdWJsaW5lLmxlbmd0aCA9PT0gMCA/IHdvcmQgOiBzdWJsaW5lICsgd29yZFNlcGFyYXRvciArIHdvcmQ7XG4gICAgICAgICAgdmFyIHRlc3REaW1zID0gdGhpcy5jYWxjdWxhdGVMYWJlbERpbWVuc2lvbnMoZWxlLCB0ZXN0TGluZSk7XG4gICAgICAgICAgdmFyIHRlc3RXID0gdGVzdERpbXMud2lkdGg7XG5cbiAgICAgICAgICBpZiAodGVzdFcgPD0gbWF4Vykge1xuICAgICAgICAgICAgLy8gd29yZCBmaXRzIG9uIGN1cnJlbnQgbGluZVxuICAgICAgICAgICAgc3VibGluZSArPSB3b3JkICsgd29yZFNlcGFyYXRvcjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd29yZCBzdGFydHMgbmV3IGxpbmVcbiAgICAgICAgICAgIGlmIChzdWJsaW5lKSB7XG4gICAgICAgICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKHN1YmxpbmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWJsaW5lID0gd29yZCArIHdvcmRTZXBhcmF0b3I7XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIGlmIHRoZXJlJ3MgcmVtYWluaW5nIHRleHQsIHB1dCBpdCBpbiBhIHdyYXBwZWQgbGluZVxuXG5cbiAgICAgICAgaWYgKCFzdWJsaW5lLm1hdGNoKC9eW1xcc1xcdTIwMGJdKyQvKSkge1xuICAgICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKHN1YmxpbmUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBsaW5lIGlzIGFscmVhZHkgc2hvcnQgZW5vdWdoXG4gICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgfVxuICAgIH0gLy8gZm9yXG5cblxuICAgIHJzY3JhdGNoKCdsYWJlbFdyYXBDYWNoZWRMaW5lcycsIHdyYXBwZWRMaW5lcyk7XG4gICAgdGV4dCA9IHJzY3JhdGNoKCdsYWJlbFdyYXBDYWNoZWRUZXh0Jywgd3JhcHBlZExpbmVzLmpvaW4oJ1xcbicpKTtcbiAgICByc2NyYXRjaCgnbGFiZWxXcmFwS2V5JywgbGFiZWxLZXkpO1xuICB9IGVsc2UgaWYgKHdyYXBTdHlsZSA9PT0gJ2VsbGlwc2lzJykge1xuICAgIHZhciBfbWF4VyA9IGVsZS5wc3R5bGUoJ3RleHQtbWF4LXdpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgZWxsaXBzaXplZCA9ICcnO1xuICAgIHZhciBlbGxpcHNpcyA9IFwiXFx1MjAyNlwiO1xuICAgIHZhciBpbmNMYXN0Q2ggPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIHRleHQpLndpZHRoIDwgX21heFcpIHtcbiAgICAgIC8vIHRoZSBsYWJlbCBhbHJlYWR5IGZpdHNcbiAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdpZHRoV2l0aE5leHRDaCA9IHRoaXMuY2FsY3VsYXRlTGFiZWxEaW1lbnNpb25zKGVsZSwgZWxsaXBzaXplZCArIHRleHRbaV0gKyBlbGxpcHNpcykud2lkdGg7XG5cbiAgICAgIGlmICh3aWR0aFdpdGhOZXh0Q2ggPiBfbWF4Vykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZWxsaXBzaXplZCArPSB0ZXh0W2ldO1xuXG4gICAgICBpZiAoaSA9PT0gdGV4dC5sZW5ndGggLSAxKSB7XG4gICAgICAgIGluY0xhc3RDaCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpbmNMYXN0Q2gpIHtcbiAgICAgIGVsbGlwc2l6ZWQgKz0gZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsbGlwc2l6ZWQ7XG4gIH0gLy8gaWYgZWxsaXBzaXplXG5cblxuICByZXR1cm4gdGV4dDtcbn07XG5cbkJScCQ2LmdldExhYmVsSnVzdGlmaWNhdGlvbiA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgdmFyIGp1c3RpZmljYXRpb24gPSBlbGUucHN0eWxlKCd0ZXh0LWp1c3RpZmljYXRpb24nKS5zdHJWYWx1ZTtcbiAgdmFyIHRleHRIYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnN0clZhbHVlO1xuXG4gIGlmIChqdXN0aWZpY2F0aW9uID09PSAnYXV0bycpIHtcbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICBzd2l0Y2ggKHRleHRIYWxpZ24pIHtcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgcmV0dXJuICdyaWdodCc7XG5cbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIHJldHVybiAnbGVmdCc7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ2NlbnRlcic7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnY2VudGVyJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGp1c3RpZmljYXRpb247XG4gIH1cbn07XG5cbkJScCQ2LmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyA9IGZ1bmN0aW9uIChlbGUsIHRleHQpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgY2FjaGVLZXkgPSBoYXNoU3RyaW5nKHRleHQsIGVsZS5fcHJpdmF0ZS5sYWJlbERpbXNLZXkpO1xuICB2YXIgY2FjaGUgPSByLmxhYmVsRGltQ2FjaGUgfHwgKHIubGFiZWxEaW1DYWNoZSA9IFtdKTtcbiAgdmFyIGV4aXN0aW5nVmFsID0gY2FjaGVbY2FjaGVLZXldO1xuXG4gIGlmIChleGlzdGluZ1ZhbCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nVmFsO1xuICB9XG5cbiAgdmFyIHBhZGRpbmcgPSAwOyAvLyBhZGQgcGFkZGluZyBhcm91bmQgdGV4dCBkaW1zLCBhcyB0aGUgbWVhc3VyZW1lbnQgaXNuJ3QgdGhhdCBhY2N1cmF0ZVxuXG4gIHZhciBmU3R5bGUgPSBlbGUucHN0eWxlKCdmb250LXN0eWxlJykuc3RyVmFsdWU7XG4gIHZhciBzaXplID0gZWxlLnBzdHlsZSgnZm9udC1zaXplJykucGZWYWx1ZTtcbiAgdmFyIGZhbWlseSA9IGVsZS5wc3R5bGUoJ2ZvbnQtZmFtaWx5Jykuc3RyVmFsdWU7XG4gIHZhciB3ZWlnaHQgPSBlbGUucHN0eWxlKCdmb250LXdlaWdodCcpLnN0clZhbHVlO1xuICB2YXIgY2FudmFzID0gdGhpcy5sYWJlbENhbGNDYW52YXM7XG4gIHZhciBjMmQgPSB0aGlzLmxhYmVsQ2FsY0NhbnZhc0NvbnRleHQ7XG5cbiAgaWYgKCFjYW52YXMpIHtcbiAgICBjYW52YXMgPSB0aGlzLmxhYmVsQ2FsY0NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGMyZCA9IHRoaXMubGFiZWxDYWxjQ2FudmFzQ29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIHZhciBkcyA9IGNhbnZhcy5zdHlsZTtcbiAgICBkcy5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgZHMubGVmdCA9ICctOTk5OXB4JztcbiAgICBkcy50b3AgPSAnLTk5OTlweCc7XG4gICAgZHMuekluZGV4ID0gJy0xJztcbiAgICBkcy52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgZHMucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgfVxuXG4gIGMyZC5mb250ID0gXCJcIi5jb25jYXQoZlN0eWxlLCBcIiBcIikuY29uY2F0KHdlaWdodCwgXCIgXCIpLmNvbmNhdChzaXplLCBcInB4IFwiKS5jb25jYXQoZmFtaWx5KTtcbiAgdmFyIHdpZHRoID0gMDtcbiAgdmFyIGhlaWdodCA9IDA7XG4gIHZhciBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGluZSA9IGxpbmVzW2ldO1xuICAgIHZhciBtZXRyaWNzID0gYzJkLm1lYXN1cmVUZXh0KGxpbmUpO1xuICAgIHZhciB3ID0gTWF0aC5jZWlsKG1ldHJpY3Mud2lkdGgpO1xuICAgIHZhciBoID0gc2l6ZTtcbiAgICB3aWR0aCA9IE1hdGgubWF4KHcsIHdpZHRoKTtcbiAgICBoZWlnaHQgKz0gaDtcbiAgfVxuXG4gIHdpZHRoICs9IHBhZGRpbmc7XG4gIGhlaWdodCArPSBwYWRkaW5nO1xuICByZXR1cm4gY2FjaGVbY2FjaGVLZXldID0ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufTtcblxuQlJwJDYuY2FsY3VsYXRlTGFiZWxBbmdsZSA9IGZ1bmN0aW9uIChlbGUsIHByZWZpeCkge1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgaXNFZGdlID0gZWxlLmlzRWRnZSgpO1xuICB2YXIgcHJlZml4RGFzaCA9IHByZWZpeCA/IHByZWZpeCArICctJyA6ICcnO1xuICB2YXIgcm90ID0gZWxlLnBzdHlsZShwcmVmaXhEYXNoICsgJ3RleHQtcm90YXRpb24nKTtcbiAgdmFyIHJvdFN0ciA9IHJvdC5zdHJWYWx1ZTtcblxuICBpZiAocm90U3RyID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChpc0VkZ2UgJiYgcm90U3RyID09PSAnYXV0b3JvdGF0ZScpIHtcbiAgICByZXR1cm4gcnMubGFiZWxBdXRvQW5nbGU7XG4gIH0gZWxzZSBpZiAocm90U3RyID09PSAnYXV0b3JvdGF0ZScpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcm90LnBmVmFsdWU7XG4gIH1cbn07XG5cbkJScCQ2LmNhbGN1bGF0ZUxhYmVsQW5nbGVzID0gZnVuY3Rpb24gKGVsZSkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBpc0VkZ2UgPSBlbGUuaXNFZGdlKCk7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG4gIHJzLmxhYmVsQW5nbGUgPSByLmNhbGN1bGF0ZUxhYmVsQW5nbGUoZWxlKTtcblxuICBpZiAoaXNFZGdlKSB7XG4gICAgcnMuc291cmNlTGFiZWxBbmdsZSA9IHIuY2FsY3VsYXRlTGFiZWxBbmdsZShlbGUsICdzb3VyY2UnKTtcbiAgICBycy50YXJnZXRMYWJlbEFuZ2xlID0gci5jYWxjdWxhdGVMYWJlbEFuZ2xlKGVsZSwgJ3RhcmdldCcpO1xuICB9XG59O1xuXG52YXIgQlJwJDcgPSB7fTtcbnZhciBUT09fU01BTExfQ1VUX1JFQ1QgPSAyODtcbnZhciB3YXJuZWRDdXRSZWN0ID0gZmFsc2U7XG5cbkJScCQ3LmdldE5vZGVTaGFwZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIHNoYXBlID0gbm9kZS5wc3R5bGUoJ3NoYXBlJykudmFsdWU7XG5cbiAgaWYgKHNoYXBlID09PSAnY3V0cmVjdGFuZ2xlJyAmJiAobm9kZS53aWR0aCgpIDwgVE9PX1NNQUxMX0NVVF9SRUNUIHx8IG5vZGUuaGVpZ2h0KCkgPCBUT09fU01BTExfQ1VUX1JFQ1QpKSB7XG4gICAgaWYgKCF3YXJuZWRDdXRSZWN0KSB7XG4gICAgICB3YXJuKCdUaGUgYGN1dHJlY3RhbmdsZWAgbm9kZSBzaGFwZSBjYW4gbm90IGJlIHVzZWQgYXQgc21hbGwgc2l6ZXMgc28gYHJlY3RhbmdsZWAgaXMgdXNlZCBpbnN0ZWFkJyk7XG4gICAgICB3YXJuZWRDdXRSZWN0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ3JlY3RhbmdsZSc7XG4gIH1cblxuICBpZiAobm9kZS5pc1BhcmVudCgpKSB7XG4gICAgaWYgKHNoYXBlID09PSAncmVjdGFuZ2xlJyB8fCBzaGFwZSA9PT0gJ3JvdW5kcmVjdGFuZ2xlJyB8fCBzaGFwZSA9PT0gJ3JvdW5kLXJlY3RhbmdsZScgfHwgc2hhcGUgPT09ICdjdXRyZWN0YW5nbGUnIHx8IHNoYXBlID09PSAnY3V0LXJlY3RhbmdsZScgfHwgc2hhcGUgPT09ICdiYXJyZWwnKSB7XG4gICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAncmVjdGFuZ2xlJztcbiAgICB9XG4gIH1cblxuICBpZiAoc2hhcGUgPT09ICdwb2x5Z29uJykge1xuICAgIHZhciBwb2ludHMgPSBub2RlLnBzdHlsZSgnc2hhcGUtcG9seWdvbi1wb2ludHMnKS52YWx1ZTtcbiAgICByZXR1cm4gci5ub2RlU2hhcGVzLm1ha2VQb2x5Z29uKHBvaW50cykubmFtZTtcbiAgfVxuXG4gIHJldHVybiBzaGFwZTtcbn07XG5cbnZhciBCUnAkOCA9IHt9O1xuXG5CUnAkOC5yZWdpc3RlckNhbGN1bGF0aW9uTGlzdGVuZXJzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY3kgPSB0aGlzLmN5O1xuICB2YXIgZWxlc1RvVXBkYXRlID0gY3kuY29sbGVjdGlvbigpO1xuICB2YXIgciA9IHRoaXM7XG5cbiAgdmFyIGVucXVldWUgPSBmdW5jdGlvbiBlbnF1ZXVlKGVsZXMpIHtcbiAgICB2YXIgZGlydHlTdHlsZUNhY2hlcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgICBlbGVzVG9VcGRhdGUubWVyZ2UoZWxlcyk7XG5cbiAgICBpZiAoZGlydHlTdHlsZUNhY2hlcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICAgIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gICAgICAgIHJzdHlsZS5jbGVhbiA9IGZhbHNlO1xuICAgICAgICByc3R5bGUuY2xlYW5Db25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgci5iaW5kZXIoY3kpLm9uKCdib3VuZHMuKiBkaXJ0eS4qJywgZnVuY3Rpb24gb25EaXJ0eUJvdW5kcyhlKSB7XG4gICAgdmFyIGVsZSA9IGUudGFyZ2V0O1xuICAgIGVucXVldWUoZWxlKTtcbiAgfSkub24oJ3N0eWxlLiogYmFja2dyb3VuZC4qJywgZnVuY3Rpb24gb25EaXJ0eVN0eWxlKGUpIHtcbiAgICB2YXIgZWxlID0gZS50YXJnZXQ7XG4gICAgZW5xdWV1ZShlbGUsIGZhbHNlKTtcbiAgfSk7XG5cbiAgdmFyIHVwZGF0ZUVsZUNhbGNzID0gZnVuY3Rpb24gdXBkYXRlRWxlQ2FsY3Mod2lsbERyYXcpIHtcbiAgICBpZiAod2lsbERyYXcpIHtcbiAgICAgIHZhciBmbnMgPSByLm9uVXBkYXRlRWxlQ2FsY3NGbnM7IC8vIGJlY2F1c2Ugd2UgbmVlZCB0byBoYXZlIHVwLXRvLWRhdGUgc3R5bGUgKGUuZy4gc3R5bGVzaGVldCBtYXBwZXJzKVxuICAgICAgLy8gYmVmb3JlIGNhbGN1bGF0aW5nIHJlbmRlcmVkIHN0eWxlIChhbmQgcHN0eWxlIG1pZ2h0IG5vdCBiZSBjYWxsZWQgeWV0KVxuXG4gICAgICBlbGVzVG9VcGRhdGUuY2xlYW5TdHlsZSgpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXNUb1VwZGF0ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1RvVXBkYXRlW2ldO1xuICAgICAgICB2YXIgcnN0eWxlID0gZWxlLl9wcml2YXRlLnJzdHlsZTtcblxuICAgICAgICBpZiAoZWxlLmlzTm9kZSgpICYmICFyc3R5bGUuY2xlYW5Db25uZWN0ZWQpIHtcbiAgICAgICAgICBlbnF1ZXVlKGVsZS5jb25uZWN0ZWRFZGdlcygpKTtcbiAgICAgICAgICByc3R5bGUuY2xlYW5Db25uZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmbnMpIHtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGZucy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICB2YXIgZm4gPSBmbnNbX2ldO1xuICAgICAgICAgIGZuKHdpbGxEcmF3LCBlbGVzVG9VcGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHIucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVsZXNUb1VwZGF0ZSk7XG4gICAgICBlbGVzVG9VcGRhdGUgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIHIuZmx1c2hSZW5kZXJlZFN0eWxlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdXBkYXRlRWxlQ2FsY3ModHJ1ZSk7XG4gIH07XG5cbiAgci5iZWZvcmVSZW5kZXIodXBkYXRlRWxlQ2FsY3MsIHIuYmVmb3JlUmVuZGVyUHJpb3JpdGllcy5lbGVDYWxjcyk7XG59O1xuXG5CUnAkOC5vblVwZGF0ZUVsZUNhbGNzID0gZnVuY3Rpb24gKGZuKSB7XG4gIHZhciBmbnMgPSB0aGlzLm9uVXBkYXRlRWxlQ2FsY3NGbnMgPSB0aGlzLm9uVXBkYXRlRWxlQ2FsY3NGbnMgfHwgW107XG4gIGZucy5wdXNoKGZuKTtcbn07XG5cbkJScCQ4LnJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZSA9IGZ1bmN0aW9uIChlbGVzLCB1c2VDYWNoZSkge1xuICB2YXIgaXNDbGVhbkNvbm5lY3RlZCA9IGZ1bmN0aW9uIGlzQ2xlYW5Db25uZWN0ZWQoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5fcHJpdmF0ZS5yc3R5bGUuY2xlYW5Db25uZWN0ZWQ7XG4gIH07XG5cbiAgdmFyIGVkZ2VzID0gW107XG4gIHZhciBub2RlcyA9IFtdOyAvLyB0aGUgcmVuZGVyZXIgY2FuJ3QgYmUgdXNlZCBmb3IgY2FsY3Mgd2hlbiBkZXN0cm95ZWQsIGUuZy4gZWxlLmJvdW5kaW5nQm94KClcblxuICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gdXNlIGNhY2hlIGJ5IGRlZmF1bHQgZm9yIHBlcmZcblxuXG4gIGlmICh1c2VDYWNoZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdXNlQ2FjaGUgPSB0cnVlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7IC8vIGFuIGVkZ2UgbWF5IGJlIGltcGxpY2l0bHkgZGlydHkgYi9jIG9mIG9uZSBvZiBpdHMgY29ubmVjdGVkIG5vZGVzXG4gICAgLy8gKGFuZCBhIHJlcXVlc3QgZm9yIHJlY2FsYyBtYXkgY29tZSBpbiBiZXR3ZWVuIGZyYW1lcylcblxuICAgIGlmIChlbGUuaXNFZGdlKCkgJiYgKCFpc0NsZWFuQ29ubmVjdGVkKGVsZS5zb3VyY2UoKSkgfHwgIWlzQ2xlYW5Db25uZWN0ZWQoZWxlLnRhcmdldCgpKSkpIHtcbiAgICAgIHJzdHlsZS5jbGVhbiA9IGZhbHNlO1xuICAgIH0gLy8gb25seSB1cGRhdGUgaWYgZGlydHkgYW5kIGluIGdyYXBoXG5cblxuICAgIGlmICh1c2VDYWNoZSAmJiByc3R5bGUuY2xlYW4gfHwgZWxlLnJlbW92ZWQoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBvbmx5IHVwZGF0ZSBpZiBub3QgZGlzcGxheTogbm9uZVxuXG5cbiAgICBpZiAoZWxlLnBzdHlsZSgnZGlzcGxheScpLnZhbHVlID09PSAnbm9uZScpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChfcC5ncm91cCA9PT0gJ25vZGVzJykge1xuICAgICAgbm9kZXMucHVzaChlbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlZGdlc1xuICAgICAgZWRnZXMucHVzaChlbGUpO1xuICAgIH1cblxuICAgIHJzdHlsZS5jbGVhbiA9IHRydWU7XG4gIH0gLy8gdXBkYXRlIG5vZGUgZGF0YSBmcm9tIHByb2plY3Rpb25zXG5cblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2Rlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9lbGUgPSBub2Rlc1tfaTJdO1xuICAgIHZhciBfcDIgPSBfZWxlLl9wcml2YXRlO1xuICAgIHZhciBfcnN0eWxlID0gX3AyLnJzdHlsZTtcblxuICAgIHZhciBwb3MgPSBfZWxlLnBvc2l0aW9uKCk7XG5cbiAgICB0aGlzLnJlY2FsY3VsYXRlTm9kZUxhYmVsUHJvamVjdGlvbihfZWxlKTtcbiAgICBfcnN0eWxlLm5vZGVYID0gcG9zLng7XG4gICAgX3JzdHlsZS5ub2RlWSA9IHBvcy55O1xuICAgIF9yc3R5bGUubm9kZVcgPSBfZWxlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuICAgIF9yc3R5bGUubm9kZUggPSBfZWxlLnBzdHlsZSgnaGVpZ2h0JykucGZWYWx1ZTtcbiAgfVxuXG4gIHRoaXMucmVjYWxjdWxhdGVFZGdlUHJvamVjdGlvbnMoZWRnZXMpOyAvLyB1cGRhdGUgZWRnZSBkYXRhIGZyb20gcHJvamVjdGlvbnNcblxuICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBlZGdlcy5sZW5ndGg7IF9pMysrKSB7XG4gICAgdmFyIF9lbGUyID0gZWRnZXNbX2kzXTtcbiAgICB2YXIgX3AzID0gX2VsZTIuX3ByaXZhdGU7XG4gICAgdmFyIF9yc3R5bGUyID0gX3AzLnJzdHlsZTtcbiAgICB2YXIgcnMgPSBfcDMucnNjcmF0Y2g7IC8vIHVwZGF0ZSByc3R5bGUgcG9zaXRpb25zXG5cbiAgICBfcnN0eWxlMi5zcmNYID0gcnMuYXJyb3dTdGFydFg7XG4gICAgX3JzdHlsZTIuc3JjWSA9IHJzLmFycm93U3RhcnRZO1xuICAgIF9yc3R5bGUyLnRndFggPSBycy5hcnJvd0VuZFg7XG4gICAgX3JzdHlsZTIudGd0WSA9IHJzLmFycm93RW5kWTtcbiAgICBfcnN0eWxlMi5taWRYID0gcnMubWlkWDtcbiAgICBfcnN0eWxlMi5taWRZID0gcnMubWlkWTtcbiAgICBfcnN0eWxlMi5sYWJlbEFuZ2xlID0gcnMubGFiZWxBbmdsZTtcbiAgICBfcnN0eWxlMi5zb3VyY2VMYWJlbEFuZ2xlID0gcnMuc291cmNlTGFiZWxBbmdsZTtcbiAgICBfcnN0eWxlMi50YXJnZXRMYWJlbEFuZ2xlID0gcnMudGFyZ2V0TGFiZWxBbmdsZTtcbiAgfVxufTtcblxudmFyIEJScCQ5ID0ge307XG5cbkJScCQ5LnVwZGF0ZUNhY2hlZEdyYWJiZWRFbGVzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWxlcyA9IHRoaXMuY2FjaGVkWlNvcnRlZEVsZXM7XG5cbiAgaWYgKCFlbGVzKSB7XG4gICAgLy8ganVzdCBsZXQgdGhpcyBiZSByZWNhbGN1bGF0ZWQgb24gdGhlIG5leHQgeiBzb3J0IHRpY2tcbiAgICByZXR1cm47XG4gIH1cblxuICBlbGVzLmRyYWcgPSBbXTtcbiAgZWxlcy5ub25kcmFnID0gW107XG4gIHZhciBncmFiVGFyZ2V0cyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgIHZhciBycyA9IGVsZS5fcHJpdmF0ZS5yc2NyYXRjaDtcblxuICAgIGlmIChlbGUuZ3JhYmJlZCgpICYmICFlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgZ3JhYlRhcmdldHMucHVzaChlbGUpO1xuICAgIH0gZWxzZSBpZiAocnMuaW5EcmFnTGF5ZXIpIHtcbiAgICAgIGVsZXMuZHJhZy5wdXNoKGVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZXMubm9uZHJhZy5wdXNoKGVsZSk7XG4gICAgfVxuICB9IC8vIHB1dCB0aGUgZ3JhYiB0YXJnZXQgbm9kZXMgbGFzdCBzbyBpdCdzIG9uIHRvcCBvZiBpdHMgbmVpZ2hib3VyaG9vZFxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBncmFiVGFyZ2V0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbGUgPSBncmFiVGFyZ2V0c1tpXTtcbiAgICBlbGVzLmRyYWcucHVzaChlbGUpO1xuICB9XG59O1xuXG5CUnAkOS5pbnZhbGlkYXRlQ2FjaGVkWlNvcnRlZEVsZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2FjaGVkWlNvcnRlZEVsZXMgPSBudWxsO1xufTtcblxuQlJwJDkuZ2V0Q2FjaGVkWlNvcnRlZEVsZXMgPSBmdW5jdGlvbiAoZm9yY2VSZWNhbGMpIHtcbiAgaWYgKGZvcmNlUmVjYWxjIHx8ICF0aGlzLmNhY2hlZFpTb3J0ZWRFbGVzKSB7XG4gICAgdmFyIGVsZXMgPSB0aGlzLmN5Lm11dGFibGVFbGVtZW50cygpLnRvQXJyYXkoKTtcbiAgICBlbGVzLnNvcnQoekluZGV4U29ydCk7XG4gICAgZWxlcy5pbnRlcmFjdGl2ZSA9IGVsZXMuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaW50ZXJhY3RpdmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLmNhY2hlZFpTb3J0ZWRFbGVzID0gZWxlcztcbiAgICB0aGlzLnVwZGF0ZUNhY2hlZEdyYWJiZWRFbGVzKCk7XG4gIH0gZWxzZSB7XG4gICAgZWxlcyA9IHRoaXMuY2FjaGVkWlNvcnRlZEVsZXM7XG4gIH1cblxuICByZXR1cm4gZWxlcztcbn07XG5cbnZhciBCUnAkYSA9IHt9O1xuW0JScCQxLCBCUnAkMiwgQlJwJDMsIEJScCQ0LCBCUnAkNSwgQlJwJDYsIEJScCQ3LCBCUnAkOCwgQlJwJDldLmZvckVhY2goZnVuY3Rpb24gKHByb3BzKSB7XG4gIGV4dGVuZChCUnAkYSwgcHJvcHMpO1xufSk7XG5cbnZhciBCUnAkYiA9IHt9O1xuXG5CUnAkYi5nZXRDYWNoZWRJbWFnZSA9IGZ1bmN0aW9uICh1cmwsIGNyb3NzT3JpZ2luLCBvbkxvYWQpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgaW1hZ2VDYWNoZSA9IHIuaW1hZ2VDYWNoZSA9IHIuaW1hZ2VDYWNoZSB8fCB7fTtcbiAgdmFyIGNhY2hlID0gaW1hZ2VDYWNoZVt1cmxdO1xuXG4gIGlmIChjYWNoZSkge1xuICAgIGlmICghY2FjaGUuaW1hZ2UuY29tcGxldGUpIHtcbiAgICAgIGNhY2hlLmltYWdlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkxvYWQpO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZS5pbWFnZTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZSA9IGltYWdlQ2FjaGVbdXJsXSA9IGltYWdlQ2FjaGVbdXJsXSB8fCB7fTtcbiAgICB2YXIgaW1hZ2UgPSBjYWNoZS5pbWFnZSA9IG5ldyBJbWFnZSgpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgb25Mb2FkKTtcbiAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGltYWdlLmVycm9yID0gdHJ1ZTtcbiAgICB9KTsgLy8gIzE1ODIgc2FmYXJpIGRvZXNuJ3QgbG9hZCBkYXRhIHVyaXMgd2l0aCBjcm9zc09yaWdpbiBwcm9wZXJseVxuICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM5NzhcblxuICAgIHZhciBkYXRhVXJpUHJlZml4ID0gJ2RhdGE6JztcbiAgICB2YXIgaXNEYXRhVXJpID0gdXJsLnN1YnN0cmluZygwLCBkYXRhVXJpUHJlZml4Lmxlbmd0aCkudG9Mb3dlckNhc2UoKSA9PT0gZGF0YVVyaVByZWZpeDtcblxuICAgIGlmICghaXNEYXRhVXJpKSB7XG4gICAgICBpbWFnZS5jcm9zc09yaWdpbiA9IGNyb3NzT3JpZ2luOyAvLyBwcmV2ZW50IHRhaW50ZWQgY2FudmFzXG4gICAgfVxuXG4gICAgaW1hZ2Uuc3JjID0gdXJsO1xuICAgIHJldHVybiBpbWFnZTtcbiAgfVxufTtcblxudmFyIEJScCRjID0ge307XG4vKiBnbG9iYWwgZG9jdW1lbnQsIHdpbmRvdywgUmVzaXplT2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXIgKi9cblxuQlJwJGMucmVnaXN0ZXJCaW5kaW5nID0gZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIGhhbmRsZXIsIHVzZUNhcHR1cmUpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMsIFsxXSk7IC8vIGNvcHlcblxuICB2YXIgYiA9IHRoaXMuYmluZGVyKHRhcmdldCk7XG4gIHJldHVybiBiLm9uLmFwcGx5KGIsIGFyZ3MpO1xufTtcblxuQlJwJGMuYmluZGVyID0gZnVuY3Rpb24gKHRndCkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciB0Z3RJc0RvbSA9IHRndCA9PT0gd2luZG93IHx8IHRndCA9PT0gZG9jdW1lbnQgfHwgdGd0ID09PSBkb2N1bWVudC5ib2R5IHx8IGRvbUVsZW1lbnQodGd0KTtcblxuICBpZiAoci5zdXBwb3J0c1Bhc3NpdmVFdmVudHMgPT0gbnVsbCkge1xuICAgIC8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvRXZlbnRMaXN0ZW5lck9wdGlvbnMvYmxvYi9naC1wYWdlcy9leHBsYWluZXIubWQjZmVhdHVyZS1kZXRlY3Rpb25cbiAgICB2YXIgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIG9wdHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdwYXNzaXZlJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0JywgbnVsbCwgb3B0cyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7Ly8gbm90IHN1cHBvcnRlZFxuICAgIH1cblxuICAgIHIuc3VwcG9ydHNQYXNzaXZlRXZlbnRzID0gc3VwcG9ydHNQYXNzaXZlO1xuICB9XG5cbiAgdmFyIG9uID0gZnVuY3Rpb24gb24oZXZlbnQsIGhhbmRsZXIsIHVzZUNhcHR1cmUpIHtcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG5cbiAgICBpZiAodGd0SXNEb20gJiYgci5zdXBwb3J0c1Bhc3NpdmVFdmVudHMpIHtcbiAgICAgIC8vIHJlcGxhY2UgdXNlQ2FwdHVyZSB3LyBvcHRzIG9ialxuICAgICAgYXJnc1syXSA9IHtcbiAgICAgICAgY2FwdHVyZTogdXNlQ2FwdHVyZSAhPSBudWxsID8gdXNlQ2FwdHVyZSA6IGZhbHNlLFxuICAgICAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICAgICAgb25jZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuXG4gICAgci5iaW5kaW5ncy5wdXNoKHtcbiAgICAgIHRhcmdldDogdGd0LFxuICAgICAgYXJnczogYXJnc1xuICAgIH0pO1xuICAgICh0Z3QuYWRkRXZlbnRMaXN0ZW5lciB8fCB0Z3Qub24pLmFwcGx5KHRndCwgYXJncyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBvbjogb24sXG4gICAgYWRkRXZlbnRMaXN0ZW5lcjogb24sXG4gICAgYWRkTGlzdGVuZXI6IG9uLFxuICAgIGJpbmQ6IG9uXG4gIH07XG59O1xuXG5CUnAkYy5ub2RlSXNEcmFnZ2FibGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLmlzTm9kZSgpICYmICFub2RlLmxvY2tlZCgpICYmIG5vZGUuZ3JhYmJhYmxlKCk7XG59O1xuXG5CUnAkYy5ub2RlSXNHcmFiYmFibGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICByZXR1cm4gdGhpcy5ub2RlSXNEcmFnZ2FibGUobm9kZSkgJiYgbm9kZS5pbnRlcmFjdGl2ZSgpO1xufTtcblxuQlJwJGMubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHIgPSB0aGlzO1xuXG4gIHZhciBpc1NlbGVjdGVkID0gZnVuY3Rpb24gaXNTZWxlY3RlZChlbGUpIHtcbiAgICByZXR1cm4gZWxlLnNlbGVjdGVkKCk7XG4gIH07XG5cbiAgdmFyIHRyaWdnZXJFdmVudHMgPSBmdW5jdGlvbiB0cmlnZ2VyRXZlbnRzKHRhcmdldCwgbmFtZXMsIGUsIHBvc2l0aW9uKSB7XG4gICAgaWYgKHRhcmdldCA9PSBudWxsKSB7XG4gICAgICB0YXJnZXQgPSByLmN5O1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuYW1lID0gbmFtZXNbaV07XG4gICAgICB0YXJnZXQuZW1pdCh7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6IG5hbWUsXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpc011bHRTZWxLZXlEb3duID0gZnVuY3Rpb24gaXNNdWx0U2VsS2V5RG93bihlKSB7XG4gICAgcmV0dXJuIGUuc2hpZnRLZXkgfHwgZS5tZXRhS2V5IHx8IGUuY3RybEtleTsgLy8gbWF5YmUgZS5hbHRLZXlcbiAgfTtcblxuICB2YXIgYWxsb3dQYW5uaW5nUGFzc3Rocm91Z2ggPSBmdW5jdGlvbiBhbGxvd1Bhbm5pbmdQYXNzdGhyb3VnaChkb3duLCBkb3ducykge1xuICAgIHZhciBhbGxvd1Bhc3N0aHJvdWdoID0gdHJ1ZTtcblxuICAgIGlmIChyLmN5Lmhhc0NvbXBvdW5kTm9kZXMoKSAmJiBkb3duICYmIGRvd24ucGFubmFibGUoKSkge1xuICAgICAgLy8gYSBncmFiYmFibGUgY29tcG91bmQgbm9kZSBiZWxvdyB0aGUgZWxlID0+IG5vIHBhc3N0aHJvdWdoIHBhbm5pbmdcbiAgICAgIGZvciAodmFyIGkgPSAwOyBkb3ducyAmJiBpIDwgZG93bnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGRvd24gPSBkb3duc1tpXTsgLy9pZiBhbnkgcGFyZW50IG5vZGUgaW4gZXZlbnQgaGllcmFyY2h5IGlzbid0IHBhbm5hYmxlLCByZWplY3QgcGFzc3Rocm91Z2hcblxuICAgICAgICBpZiAoZG93bi5pc05vZGUoKSAmJiBkb3duLmlzUGFyZW50KCkgJiYgIWRvd24ucGFubmFibGUoKSkge1xuICAgICAgICAgIGFsbG93UGFzc3Rocm91Z2ggPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhbGxvd1Bhc3N0aHJvdWdoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsb3dQYXNzdGhyb3VnaDtcbiAgfTtcblxuICB2YXIgc2V0R3JhYmJlZCA9IGZ1bmN0aW9uIHNldEdyYWJiZWQoZWxlKSB7XG4gICAgZWxlWzBdLl9wcml2YXRlLmdyYWJiZWQgPSB0cnVlO1xuICB9O1xuXG4gIHZhciBzZXRGcmVlZCA9IGZ1bmN0aW9uIHNldEZyZWVkKGVsZSkge1xuICAgIGVsZVswXS5fcHJpdmF0ZS5ncmFiYmVkID0gZmFsc2U7XG4gIH07XG5cbiAgdmFyIHNldEluRHJhZ0xheWVyID0gZnVuY3Rpb24gc2V0SW5EcmFnTGF5ZXIoZWxlKSB7XG4gICAgZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoLmluRHJhZ0xheWVyID0gdHJ1ZTtcbiAgfTtcblxuICB2YXIgc2V0T3V0RHJhZ0xheWVyID0gZnVuY3Rpb24gc2V0T3V0RHJhZ0xheWVyKGVsZSkge1xuICAgIGVsZVswXS5fcHJpdmF0ZS5yc2NyYXRjaC5pbkRyYWdMYXllciA9IGZhbHNlO1xuICB9O1xuXG4gIHZhciBzZXRHcmFiVGFyZ2V0ID0gZnVuY3Rpb24gc2V0R3JhYlRhcmdldChlbGUpIHtcbiAgICBlbGVbMF0uX3ByaXZhdGUucnNjcmF0Y2guaXNHcmFiVGFyZ2V0ID0gdHJ1ZTtcbiAgfTtcblxuICB2YXIgcmVtb3ZlR3JhYlRhcmdldCA9IGZ1bmN0aW9uIHJlbW92ZUdyYWJUYXJnZXQoZWxlKSB7XG4gICAgZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoLmlzR3JhYlRhcmdldCA9IGZhbHNlO1xuICB9O1xuXG4gIHZhciBhZGRUb0RyYWdMaXN0ID0gZnVuY3Rpb24gYWRkVG9EcmFnTGlzdChlbGUsIG9wdHMpIHtcbiAgICB2YXIgbGlzdCA9IG9wdHMuYWRkVG9MaXN0O1xuICAgIHZhciBsaXN0SGFzRWxlID0gbGlzdC5oYXMoZWxlKTtcblxuICAgIGlmICghbGlzdEhhc0VsZSkge1xuICAgICAgbGlzdC5tZXJnZShlbGUpO1xuICAgICAgc2V0R3JhYmJlZChlbGUpO1xuICAgIH1cbiAgfTsgLy8gaGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGljaCBjaGlsZCBub2RlcyBhbmQgaW5uZXIgZWRnZXNcbiAgLy8gb2YgYSBjb21wb3VuZCBub2RlIHRvIGJlIGRyYWdnZWQgYXMgd2VsbCBhcyB0aGUgZ3JhYmJlZCBhbmQgc2VsZWN0ZWQgbm9kZXNcblxuXG4gIHZhciBhZGREZXNjZW5kYW50c1RvRHJhZyA9IGZ1bmN0aW9uIGFkZERlc2NlbmRhbnRzVG9EcmFnKG5vZGUsIG9wdHMpIHtcbiAgICBpZiAoIW5vZGUuY3koKS5oYXNDb21wb3VuZE5vZGVzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5pbkRyYWdMYXllciA9PSBudWxsICYmIG9wdHMuYWRkVG9MaXN0ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIG5vdGhpbmcgdG8gZG9cblxuXG4gICAgdmFyIGlubmVyTm9kZXMgPSBub2RlLmRlc2NlbmRhbnRzKCk7XG5cbiAgICBpZiAob3B0cy5pbkRyYWdMYXllcikge1xuICAgICAgaW5uZXJOb2Rlcy5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICAgIGlubmVyTm9kZXMuY29ubmVjdGVkRWRnZXMoKS5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5hZGRUb0xpc3QpIHtcbiAgICAgIG9wdHMuYWRkVG9MaXN0LnVubWVyZ2UoaW5uZXJOb2Rlcyk7XG4gICAgfVxuICB9OyAvLyBhZGRzIHRoZSBnaXZlbiBub2RlcyBhbmQgaXRzIG5laWdoYm91cmhvb2QgdG8gdGhlIGRyYWcgbGF5ZXJcblxuXG4gIHZhciBhZGROb2Rlc1RvRHJhZyA9IGZ1bmN0aW9uIGFkZE5vZGVzVG9EcmFnKG5vZGVzLCBvcHRzKSB7XG4gICAgb3B0cyA9IG9wdHMgfHwge307XG4gICAgdmFyIGhhc0NvbXBvdW5kTm9kZXMgPSBub2Rlcy5jeSgpLmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgIGlmIChvcHRzLmluRHJhZ0xheWVyKSB7XG4gICAgICBub2Rlcy5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICAgIG5vZGVzLm5laWdoYm9yaG9vZCgpLnN0ZEZpbHRlcihmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiAhaGFzQ29tcG91bmROb2RlcyB8fCBlbGUuaXNFZGdlKCk7XG4gICAgICB9KS5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5hZGRUb0xpc3QpIHtcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICBhZGRUb0RyYWdMaXN0KGVsZSwgb3B0cyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGREZXNjZW5kYW50c1RvRHJhZyhub2Rlcywgb3B0cyk7IC8vIGFsd2F5cyBhZGQgdG8gZHJhZ1xuICAgIC8vIGFsc28gYWRkIG5vZGVzIGFuZCBlZGdlcyByZWxhdGVkIHRvIHRoZSB0b3Btb3N0IGFuY2VzdG9yXG5cbiAgICB1cGRhdGVBbmNlc3RvcnNJbkRyYWdMYXllcihub2Rlcywge1xuICAgICAgaW5EcmFnTGF5ZXI6IG9wdHMuaW5EcmFnTGF5ZXJcbiAgICB9KTtcbiAgICByLnVwZGF0ZUNhY2hlZEdyYWJiZWRFbGVzKCk7XG4gIH07XG5cbiAgdmFyIGFkZE5vZGVUb0RyYWcgPSBhZGROb2Rlc1RvRHJhZztcblxuICB2YXIgZnJlZURyYWdnZWRFbGVtZW50cyA9IGZ1bmN0aW9uIGZyZWVEcmFnZ2VkRWxlbWVudHMoZ3JhYmJlZEVsZXMpIHtcbiAgICBpZiAoIWdyYWJiZWRFbGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBqdXN0IGdvIG92ZXIgYWxsIGVsZW1lbnRzIHJhdGhlciB0aGFuIGRvaW5nIGEgYnVuY2ggb2YgKHBvc3NpYmx5IGV4cGVuc2l2ZSkgdHJhdmVyc2Fsc1xuXG5cbiAgICByLmdldENhY2hlZFpTb3J0ZWRFbGVzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICBzZXRGcmVlZChlbGUpO1xuICAgICAgc2V0T3V0RHJhZ0xheWVyKGVsZSk7XG4gICAgICByZW1vdmVHcmFiVGFyZ2V0KGVsZSk7XG4gICAgfSk7XG4gICAgci51cGRhdGVDYWNoZWRHcmFiYmVkRWxlcygpO1xuICB9OyAvLyBoZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoaWNoIGFuY2VzdG9yIG5vZGVzIGFuZCBlZGdlcyBzaG91bGQgZ29cbiAgLy8gdG8gdGhlIGRyYWcgbGF5ZXIgKG9yIHNob3VsZCBiZSByZW1vdmVkIGZyb20gZHJhZyBsYXllcikuXG5cblxuICB2YXIgdXBkYXRlQW5jZXN0b3JzSW5EcmFnTGF5ZXIgPSBmdW5jdGlvbiB1cGRhdGVBbmNlc3RvcnNJbkRyYWdMYXllcihub2RlLCBvcHRzKSB7XG4gICAgaWYgKG9wdHMuaW5EcmFnTGF5ZXIgPT0gbnVsbCAmJiBvcHRzLmFkZFRvTGlzdCA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBub3RoaW5nIHRvIGRvXG5cblxuICAgIGlmICghbm9kZS5jeSgpLmhhc0NvbXBvdW5kTm9kZXMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gZmluZCB0b3AtbGV2ZWwgcGFyZW50XG5cblxuICAgIHZhciBwYXJlbnQgPSBub2RlLmFuY2VzdG9ycygpLm9ycGhhbnMoKTsgLy8gbm8gcGFyZW50IG5vZGU6IG5vIG5vZGVzIHRvIGFkZCB0byB0aGUgZHJhZyBsYXllclxuXG4gICAgaWYgKHBhcmVudC5zYW1lKG5vZGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5vZGVzID0gcGFyZW50LmRlc2NlbmRhbnRzKCkuc3Bhd25TZWxmKCkubWVyZ2UocGFyZW50KS51bm1lcmdlKG5vZGUpLnVubWVyZ2Uobm9kZS5kZXNjZW5kYW50cygpKTtcbiAgICB2YXIgZWRnZXMgPSBub2Rlcy5jb25uZWN0ZWRFZGdlcygpO1xuXG4gICAgaWYgKG9wdHMuaW5EcmFnTGF5ZXIpIHtcbiAgICAgIGVkZ2VzLmZvckVhY2goc2V0SW5EcmFnTGF5ZXIpO1xuICAgICAgbm9kZXMuZm9yRWFjaChzZXRJbkRyYWdMYXllcik7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMuYWRkVG9MaXN0KSB7XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgYWRkVG9EcmFnTGlzdChlbGUsIG9wdHMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBibHVyQWN0aXZlRG9tRWxlbWVudCA9IGZ1bmN0aW9uIGJsdXJBY3RpdmVEb21FbGVtZW50KCkge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9IG51bGwgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyICE9IG51bGwpIHtcbiAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgaGF2ZU11dGF0aW9uc0FwaSA9IHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJztcbiAgdmFyIGhhdmVSZXNpemVPYnNlcnZlckFwaSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCc7IC8vIHdhdGNoIGZvciB3aGVuIHRoZSBjeSBjb250YWluZXIgaXMgcmVtb3ZlZCBmcm9tIHRoZSBkb21cblxuICBpZiAoaGF2ZU11dGF0aW9uc0FwaSkge1xuICAgIHIucmVtb3ZlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0bnMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXV0bnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG11dG4gPSBtdXRuc1tpXTtcbiAgICAgICAgdmFyIHJOb2RlcyA9IG11dG4ucmVtb3ZlZE5vZGVzO1xuXG4gICAgICAgIGlmIChyTm9kZXMpIHtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJOb2Rlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgdmFyIHJOb2RlID0gck5vZGVzW2pdO1xuXG4gICAgICAgICAgICBpZiAock5vZGUgPT09IHIuY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgIHIuZGVzdHJveSgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChyLmNvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICByLnJlbW92ZU9ic2VydmVyLm9ic2VydmUoci5jb250YWluZXIucGFyZW50Tm9kZSwge1xuICAgICAgICBjaGlsZExpc3Q6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ0RPTU5vZGVSZW1vdmVkJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHIuZGVzdHJveSgpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIG9uUmVzaXplID0gdXRpbChmdW5jdGlvbiAoKSB7XG4gICAgci5jeS5yZXNpemUoKTtcbiAgfSwgMTAwKTtcblxuICBpZiAoaGF2ZU11dGF0aW9uc0FwaSkge1xuICAgIHIuc3R5bGVPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9uUmVzaXplKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgci5zdHlsZU9ic2VydmVyLm9ic2VydmUoci5jb250YWluZXIsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICB9KTtcbiAgfSAvLyBhdXRvIHJlc2l6ZVxuXG5cbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAncmVzaXplJywgb25SZXNpemUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgaWYgKGhhdmVSZXNpemVPYnNlcnZlckFwaSkge1xuICAgIHIucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXNpemUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgICByLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoci5jb250YWluZXIpO1xuICB9XG5cbiAgdmFyIGZvckVhY2hVcCA9IGZ1bmN0aW9uIGZvckVhY2hVcChkb21FbGUsIGZuKSB7XG4gICAgd2hpbGUgKGRvbUVsZSAhPSBudWxsKSB7XG4gICAgICBmbihkb21FbGUpO1xuICAgICAgZG9tRWxlID0gZG9tRWxlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpbnZhbGlkYXRlQ29vcmRzID0gZnVuY3Rpb24gaW52YWxpZGF0ZUNvb3JkcygpIHtcbiAgICByLmludmFsaWRhdGVDb250YWluZXJDbGllbnRDb29yZHNDYWNoZSgpO1xuICB9O1xuXG4gIGZvckVhY2hVcChyLmNvbnRhaW5lciwgZnVuY3Rpb24gKGRvbUVsZSkge1xuICAgIHIucmVnaXN0ZXJCaW5kaW5nKGRvbUVsZSwgJ3RyYW5zaXRpb25lbmQnLCBpbnZhbGlkYXRlQ29vcmRzKTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhkb21FbGUsICdhbmltYXRpb25lbmQnLCBpbnZhbGlkYXRlQ29vcmRzKTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhkb21FbGUsICdzY3JvbGwnLCBpbnZhbGlkYXRlQ29vcmRzKTtcbiAgfSk7IC8vIHN0b3AgcmlnaHQgY2xpY2sgbWVudSBmcm9tIGFwcGVhcmluZyBvbiBjeVxuXG4gIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnY29udGV4dG1lbnUnLCBmdW5jdGlvbiAoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfSk7XG5cbiAgdmFyIGluQm94U2VsZWN0aW9uID0gZnVuY3Rpb24gaW5Cb3hTZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHIuc2VsZWN0aW9uWzRdICE9PSAwO1xuICB9O1xuXG4gIHZhciBldmVudEluQ29udGFpbmVyID0gZnVuY3Rpb24gZXZlbnRJbkNvbnRhaW5lcihlKSB7XG4gICAgLy8gc2F2ZSBjeWNsZXMgaWYgbW91c2UgZXZlbnRzIGFyZW4ndCB0byBiZSBjYXB0dXJlZFxuICAgIHZhciBjb250YWluZXJQYWdlQ29vcmRzID0gci5maW5kQ29udGFpbmVyQ2xpZW50Q29vcmRzKCk7XG4gICAgdmFyIHggPSBjb250YWluZXJQYWdlQ29vcmRzWzBdO1xuICAgIHZhciB5ID0gY29udGFpbmVyUGFnZUNvb3Jkc1sxXTtcbiAgICB2YXIgd2lkdGggPSBjb250YWluZXJQYWdlQ29vcmRzWzJdO1xuICAgIHZhciBoZWlnaHQgPSBjb250YWluZXJQYWdlQ29vcmRzWzNdO1xuICAgIHZhciBwb3NpdGlvbnMgPSBlLnRvdWNoZXMgPyBlLnRvdWNoZXMgOiBbZV07XG4gICAgdmFyIGF0TGVhc3RPbmVQb3NJbnNpZGUgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcCA9IHBvc2l0aW9uc1tpXTtcblxuICAgICAgaWYgKHggPD0gcC5jbGllbnRYICYmIHAuY2xpZW50WCA8PSB4ICsgd2lkdGggJiYgeSA8PSBwLmNsaWVudFkgJiYgcC5jbGllbnRZIDw9IHkgKyBoZWlnaHQpIHtcbiAgICAgICAgYXRMZWFzdE9uZVBvc0luc2lkZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghYXRMZWFzdE9uZVBvc0luc2lkZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBjb250YWluZXIgPSByLmNvbnRhaW5lcjtcbiAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgdmFyIHRQYXJlbnQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICB2YXIgY29udGFpbmVySXNUYXJnZXQgPSBmYWxzZTtcblxuICAgIHdoaWxlICh0UGFyZW50KSB7XG4gICAgICBpZiAodFBhcmVudCA9PT0gY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lcklzVGFyZ2V0ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHRQYXJlbnQgPSB0UGFyZW50LnBhcmVudE5vZGU7XG4gICAgfVxuXG4gICAgaWYgKCFjb250YWluZXJJc1RhcmdldCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gaWYgdGFyZ2V0IGlzIG91dGlzZGUgY3kgY29udGFpbmVyLCB0aGVuIHRoaXMgZXZlbnQgaXMgbm90IGZvciB1c1xuXG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTsgLy8gUHJpbWFyeSBrZXlcblxuXG4gIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnbW91c2Vkb3duJywgZnVuY3Rpb24gbW91c2Vkb3duSGFuZGxlcihlKSB7XG4gICAgaWYgKCFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGJsdXJBY3RpdmVEb21FbGVtZW50KCk7XG4gICAgci5ob3ZlckRhdGEuY2FwdHVyZSA9IHRydWU7XG4gICAgci5ob3ZlckRhdGEud2hpY2ggPSBlLndoaWNoO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIGdwb3MgPSBbZS5jbGllbnRYLCBlLmNsaWVudFldO1xuICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZ3Bvc1swXSwgZ3Bvc1sxXSk7XG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHZhciBuZWFycyA9IHIuZmluZE5lYXJlc3RFbGVtZW50cyhwb3NbMF0sIHBvc1sxXSwgdHJ1ZSwgZmFsc2UpO1xuICAgIHZhciBuZWFyID0gbmVhcnNbMF07XG4gICAgdmFyIGRyYWdnZWRFbGVtZW50cyA9IHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHM7XG4gICAgci5ob3ZlckRhdGEubWRvd25Qb3MgPSBwb3M7XG4gICAgci5ob3ZlckRhdGEubWRvd25HUG9zID0gZ3BvcztcblxuICAgIHZhciBjaGVja0ZvclRhcGhvbGQgPSBmdW5jdGlvbiBjaGVja0ZvclRhcGhvbGQoKSB7XG4gICAgICByLmhvdmVyRGF0YS50YXBob2xkQ2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICBjbGVhclRpbWVvdXQoci5ob3ZlckRhdGEudGFwaG9sZFRpbWVvdXQpO1xuICAgICAgci5ob3ZlckRhdGEudGFwaG9sZFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHIuaG92ZXJEYXRhLnRhcGhvbGRDYW5jZWxsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGVsZSA9IHIuaG92ZXJEYXRhLmRvd247XG5cbiAgICAgICAgICBpZiAoZWxlKSB7XG4gICAgICAgICAgICBlbGUuZW1pdCh7XG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICAgIHR5cGU6ICd0YXBob2xkJyxcbiAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjeS5lbWl0KHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgdHlwZTogJ3RhcGhvbGQnLFxuICAgICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCByLnRhcGhvbGREdXJhdGlvbik7XG4gICAgfTsgLy8gUmlnaHQgY2xpY2sgYnV0dG9uXG5cblxuICAgIGlmIChlLndoaWNoID09IDMpIHtcbiAgICAgIHIuaG92ZXJEYXRhLmN4dFN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgdmFyIGN4dEV2dCA9IHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgdHlwZTogJ2N4dHRhcHN0YXJ0JyxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgIG5lYXIuYWN0aXZhdGUoKTtcbiAgICAgICAgbmVhci5lbWl0KGN4dEV2dCk7XG4gICAgICAgIHIuaG92ZXJEYXRhLmRvd24gPSBuZWFyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3kuZW1pdChjeHRFdnQpO1xuICAgICAgfVxuXG4gICAgICByLmhvdmVyRGF0YS5kb3duVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgci5ob3ZlckRhdGEuY3h0RHJhZ2dlZCA9IGZhbHNlOyAvLyBQcmltYXJ5IGJ1dHRvblxuICAgIH0gZWxzZSBpZiAoZS53aGljaCA9PSAxKSB7XG4gICAgICBpZiAobmVhcikge1xuICAgICAgICBuZWFyLmFjdGl2YXRlKCk7XG4gICAgICB9IC8vIEVsZW1lbnQgZHJhZ2dpbmdcblxuXG4gICAgICB7XG4gICAgICAgIC8vIElmIHNvbWV0aGluZyBpcyB1bmRlciB0aGUgY3Vyc29yIGFuZCBpdCBpcyBkcmFnZ2FibGUsIHByZXBhcmUgdG8gZ3JhYiBpdFxuICAgICAgICBpZiAobmVhciAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKHIubm9kZUlzR3JhYmJhYmxlKG5lYXIpKSB7XG4gICAgICAgICAgICB2YXIgbWFrZUV2ZW50ID0gZnVuY3Rpb24gbWFrZUV2ZW50KHR5cGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhciB0cmlnZ2VyR3JhYiA9IGZ1bmN0aW9uIHRyaWdnZXJHcmFiKGVsZSkge1xuICAgICAgICAgICAgICBlbGUuZW1pdChtYWtlRXZlbnQoJ2dyYWInKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXRHcmFiVGFyZ2V0KG5lYXIpO1xuXG4gICAgICAgICAgICBpZiAoIW5lYXIuc2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgICBkcmFnZ2VkRWxlbWVudHMgPSByLmRyYWdEYXRhLnBvc3NpYmxlRHJhZ0VsZW1lbnRzID0gY3kuY29sbGVjdGlvbigpO1xuICAgICAgICAgICAgICBhZGROb2RlVG9EcmFnKG5lYXIsIHtcbiAgICAgICAgICAgICAgICBhZGRUb0xpc3Q6IGRyYWdnZWRFbGVtZW50c1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbmVhci5lbWl0KG1ha2VFdmVudCgnZ3JhYm9uJykpLmVtaXQobWFrZUV2ZW50KCdncmFiJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzID0gci5kcmFnRGF0YS5wb3NzaWJsZURyYWdFbGVtZW50cyA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkTm9kZXMgPSBjeS4kKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5zZWxlY3RlZCgpICYmIHIubm9kZUlzR3JhYmJhYmxlKGVsZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBhZGROb2Rlc1RvRHJhZyhzZWxlY3RlZE5vZGVzLCB7XG4gICAgICAgICAgICAgICAgYWRkVG9MaXN0OiBkcmFnZ2VkRWxlbWVudHNcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIG5lYXIuZW1pdChtYWtlRXZlbnQoJ2dyYWJvbicpKTtcbiAgICAgICAgICAgICAgc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKHRyaWdnZXJHcmFiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByLmhvdmVyRGF0YS5kb3duID0gbmVhcjtcbiAgICAgICAgci5ob3ZlckRhdGEuZG93bnMgPSBuZWFycztcbiAgICAgICAgci5ob3ZlckRhdGEuZG93blRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIHRyaWdnZXJFdmVudHMobmVhciwgWydtb3VzZWRvd24nLCAndGFwc3RhcnQnLCAndm1vdXNlZG93biddLCBlLCB7XG4gICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgeTogcG9zWzFdXG4gICAgICB9KTtcblxuICAgICAgaWYgKG5lYXIgPT0gbnVsbCkge1xuICAgICAgICBzZWxlY3RbNF0gPSAxO1xuICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB7XG4gICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICB9O1xuICAgICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgICByLnJlZHJhdygpO1xuICAgICAgfSBlbHNlIGlmIChuZWFyLnBhbm5hYmxlKCkpIHtcbiAgICAgICAgc2VsZWN0WzRdID0gMTsgLy8gZm9yIGZ1dHVyZSBwYW5cbiAgICAgIH1cblxuICAgICAgY2hlY2tGb3JUYXBob2xkKCk7XG4gICAgfSAvLyBJbml0aWFsaXplIHNlbGVjdGlvbiBib3ggY29vcmRpbmF0ZXNcblxuXG4gICAgc2VsZWN0WzBdID0gc2VsZWN0WzJdID0gcG9zWzBdO1xuICAgIHNlbGVjdFsxXSA9IHNlbGVjdFszXSA9IHBvc1sxXTtcbiAgfSwgZmFsc2UpO1xuICByLnJlZ2lzdGVyQmluZGluZyh3aW5kb3csICdtb3VzZW1vdmUnLCBmdW5jdGlvbiBtb3VzZW1vdmVIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGNhcHR1cmUgPSByLmhvdmVyRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKCFjYXB0dXJlICYmICFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG4gICAgdmFyIGN5ID0gci5jeTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgZ3BvcyA9IFtlLmNsaWVudFgsIGUuY2xpZW50WV07XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChncG9zWzBdLCBncG9zWzFdKTtcbiAgICB2YXIgbWRvd25Qb3MgPSByLmhvdmVyRGF0YS5tZG93blBvcztcbiAgICB2YXIgbWRvd25HUG9zID0gci5ob3ZlckRhdGEubWRvd25HUG9zO1xuICAgIHZhciBzZWxlY3QgPSByLnNlbGVjdGlvbjtcbiAgICB2YXIgbmVhciA9IG51bGw7XG5cbiAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyAmJiAhci5ob3ZlckRhdGEuZHJhZ2dpbmcgJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZykge1xuICAgICAgbmVhciA9IHIuZmluZE5lYXJlc3RFbGVtZW50KHBvc1swXSwgcG9zWzFdLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIGxhc3QgPSByLmhvdmVyRGF0YS5sYXN0O1xuICAgIHZhciBkb3duID0gci5ob3ZlckRhdGEuZG93bjtcbiAgICB2YXIgZGlzcCA9IFtwb3NbMF0gLSBzZWxlY3RbMl0sIHBvc1sxXSAtIHNlbGVjdFszXV07XG4gICAgdmFyIGRyYWdnZWRFbGVtZW50cyA9IHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHM7XG4gICAgdmFyIGlzT3ZlclRocmVzaG9sZERyYWc7XG5cbiAgICBpZiAobWRvd25HUG9zKSB7XG4gICAgICB2YXIgZHggPSBncG9zWzBdIC0gbWRvd25HUG9zWzBdO1xuICAgICAgdmFyIGR4MiA9IGR4ICogZHg7XG4gICAgICB2YXIgZHkgPSBncG9zWzFdIC0gbWRvd25HUG9zWzFdO1xuICAgICAgdmFyIGR5MiA9IGR5ICogZHk7XG4gICAgICB2YXIgZGlzdDIgPSBkeDIgKyBkeTI7XG4gICAgICByLmhvdmVyRGF0YS5pc092ZXJUaHJlc2hvbGREcmFnID0gaXNPdmVyVGhyZXNob2xkRHJhZyA9IGRpc3QyID49IHIuZGVza3RvcFRhcFRocmVzaG9sZDI7XG4gICAgfVxuXG4gICAgdmFyIG11bHRTZWxLZXlEb3duID0gaXNNdWx0U2VsS2V5RG93bihlKTtcblxuICAgIGlmIChpc092ZXJUaHJlc2hvbGREcmFnKSB7XG4gICAgICByLmhvdmVyRGF0YS50YXBob2xkQ2FuY2VsbGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgdXBkYXRlRHJhZ0RlbHRhID0gZnVuY3Rpb24gdXBkYXRlRHJhZ0RlbHRhKCkge1xuICAgICAgdmFyIGRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YSB8fCBbXTtcblxuICAgICAgaWYgKGRyYWdEZWx0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZHJhZ0RlbHRhLnB1c2goZGlzcFswXSk7XG4gICAgICAgIGRyYWdEZWx0YS5wdXNoKGRpc3BbMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHJhZ0RlbHRhWzBdICs9IGRpc3BbMF07XG4gICAgICAgIGRyYWdEZWx0YVsxXSArPSBkaXNwWzFdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgdHJpZ2dlckV2ZW50cyhuZWFyLCBbJ21vdXNlbW92ZScsICd2bW91c2Vtb3ZlJywgJ3RhcGRyYWcnXSwgZSwge1xuICAgICAgeDogcG9zWzBdLFxuICAgICAgeTogcG9zWzFdXG4gICAgfSk7XG5cbiAgICB2YXIgZ29JbnRvQm94TW9kZSA9IGZ1bmN0aW9uIGdvSW50b0JveE1vZGUoKSB7XG4gICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghci5ob3ZlckRhdGEuc2VsZWN0aW5nKSB7XG4gICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgdHlwZTogJ2JveHN0YXJ0JyxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgc2VsZWN0WzRdID0gMTtcbiAgICAgIHIuaG92ZXJEYXRhLnNlbGVjdGluZyA9IHRydWU7XG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgci5yZWRyYXcoKTtcbiAgICB9OyAvLyB0cmlnZ2VyIGNvbnRleHQgZHJhZyBpZiBybW91c2UgZG93blxuXG5cbiAgICBpZiAoci5ob3ZlckRhdGEud2hpY2ggPT09IDMpIHtcbiAgICAgIC8vIGJ1dCBvbmx5IGlmIG92ZXIgdGhyZXNob2xkXG4gICAgICBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICB2YXIgY3h0RXZ0ID0ge1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgdHlwZTogJ2N4dGRyYWcnLFxuICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGRvd24pIHtcbiAgICAgICAgICBkb3duLmVtaXQoY3h0RXZ0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjeS5lbWl0KGN4dEV2dCk7XG4gICAgICAgIH1cblxuICAgICAgICByLmhvdmVyRGF0YS5jeHREcmFnZ2VkID0gdHJ1ZTtcblxuICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmN4dE92ZXIgfHwgbmVhciAhPT0gci5ob3ZlckRhdGEuY3h0T3Zlcikge1xuICAgICAgICAgIGlmIChyLmhvdmVyRGF0YS5jeHRPdmVyKSB7XG4gICAgICAgICAgICByLmhvdmVyRGF0YS5jeHRPdmVyLmVtaXQoe1xuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICB0eXBlOiAnY3h0ZHJhZ291dCcsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLmhvdmVyRGF0YS5jeHRPdmVyID0gbmVhcjtcblxuICAgICAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgICAgICBuZWFyLmVtaXQoe1xuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICB0eXBlOiAnY3h0ZHJhZ292ZXInLFxuICAgICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIENoZWNrIGlmIHdlIGFyZSBkcmFnIHBhbm5pbmcgdGhlIGVudGlyZSBncmFwaFxuXG4gICAgfSBlbHNlIGlmIChyLmhvdmVyRGF0YS5kcmFnZ2luZykge1xuICAgICAgcHJldmVudERlZmF1bHQgPSB0cnVlO1xuXG4gICAgICBpZiAoY3kucGFubmluZ0VuYWJsZWQoKSAmJiBjeS51c2VyUGFubmluZ0VuYWJsZWQoKSkge1xuICAgICAgICB2YXIgZGVsdGFQO1xuXG4gICAgICAgIGlmIChyLmhvdmVyRGF0YS5qdXN0U3RhcnRlZFBhbikge1xuICAgICAgICAgIHZhciBtZFBvcyA9IHIuaG92ZXJEYXRhLm1kb3duUG9zO1xuICAgICAgICAgIGRlbHRhUCA9IHtcbiAgICAgICAgICAgIHg6IChwb3NbMF0gLSBtZFBvc1swXSkgKiB6b29tLFxuICAgICAgICAgICAgeTogKHBvc1sxXSAtIG1kUG9zWzFdKSAqIHpvb21cbiAgICAgICAgICB9O1xuICAgICAgICAgIHIuaG92ZXJEYXRhLmp1c3RTdGFydGVkUGFuID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsdGFQID0ge1xuICAgICAgICAgICAgeDogZGlzcFswXSAqIHpvb20sXG4gICAgICAgICAgICB5OiBkaXNwWzFdICogem9vbVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjeS5wYW5CeShkZWx0YVApO1xuICAgICAgICBjeS5lbWl0KCdkcmFncGFuJyk7XG4gICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnZWQgPSB0cnVlO1xuICAgICAgfSAvLyBOZWVkcyByZXByb2plY3QgZHVlIHRvIHBhbiBjaGFuZ2luZyB2aWV3cG9ydFxuXG5cbiAgICAgIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7IC8vIENoZWNrcyBwcmltYXJ5IGJ1dHRvbiBkb3duICYgb3V0IG9mIHRpbWUgJiBtb3VzZSBub3QgbW92ZWQgbXVjaFxuICAgIH0gZWxzZSBpZiAoc2VsZWN0WzRdID09IDEgJiYgKGRvd24gPT0gbnVsbCB8fCBkb3duLnBhbm5hYmxlKCkpKSB7XG4gICAgICBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nICYmIGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKSAmJiAobXVsdFNlbEtleURvd24gfHwgIWN5LnBhbm5pbmdFbmFibGVkKCkgfHwgIWN5LnVzZXJQYW5uaW5nRW5hYmxlZCgpKSkge1xuICAgICAgICAgIGdvSW50b0JveE1vZGUoKTtcbiAgICAgICAgfSBlbHNlIGlmICghci5ob3ZlckRhdGEuc2VsZWN0aW5nICYmIGN5LnBhbm5pbmdFbmFibGVkKCkgJiYgY3kudXNlclBhbm5pbmdFbmFibGVkKCkpIHtcbiAgICAgICAgICB2YXIgYWxsb3dQYXNzdGhyb3VnaCA9IGFsbG93UGFubmluZ1Bhc3N0aHJvdWdoKGRvd24sIHIuaG92ZXJEYXRhLmRvd25zKTtcblxuICAgICAgICAgIGlmIChhbGxvd1Bhc3N0aHJvdWdoKSB7XG4gICAgICAgICAgICByLmhvdmVyRGF0YS5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgICAgICByLmhvdmVyRGF0YS5qdXN0U3RhcnRlZFBhbiA9IHRydWU7XG4gICAgICAgICAgICBzZWxlY3RbNF0gPSAwO1xuICAgICAgICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gYXJyYXkycG9pbnQobWRvd25Qb3MpO1xuICAgICAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvd24gJiYgZG93bi5wYW5uYWJsZSgpICYmIGRvd24uYWN0aXZlKCkpIHtcbiAgICAgICAgICBkb3duLnVuYWN0aXZhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZG93biAmJiBkb3duLnBhbm5hYmxlKCkgJiYgZG93bi5hY3RpdmUoKSkge1xuICAgICAgICBkb3duLnVuYWN0aXZhdGUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCghZG93biB8fCAhZG93bi5ncmFiYmVkKCkpICYmIG5lYXIgIT0gbGFzdCkge1xuICAgICAgICBpZiAobGFzdCkge1xuICAgICAgICAgIHRyaWdnZXJFdmVudHMobGFzdCwgWydtb3VzZW91dCcsICd0YXBkcmFnb3V0J10sIGUsIHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5lYXIpIHtcbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzKG5lYXIsIFsnbW91c2VvdmVyJywgJ3RhcGRyYWdvdmVyJ10sIGUsIHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgci5ob3ZlckRhdGEubGFzdCA9IG5lYXI7XG4gICAgICB9XG5cbiAgICAgIGlmIChkb3duKSB7XG4gICAgICAgIGlmIChpc092ZXJUaHJlc2hvbGREcmFnKSB7XG4gICAgICAgICAgLy8gdGhlbiB3ZSBjYW4gdGFrZSBhY3Rpb25cbiAgICAgICAgICBpZiAoY3kuYm94U2VsZWN0aW9uRW5hYmxlZCgpICYmIG11bHRTZWxLZXlEb3duKSB7XG4gICAgICAgICAgICAvLyB0aGVuIHNlbGVjdGlvbiBvdmVycmlkZXNcbiAgICAgICAgICAgIGlmIChkb3duICYmIGRvd24uZ3JhYmJlZCgpKSB7XG4gICAgICAgICAgICAgIGZyZWVEcmFnZ2VkRWxlbWVudHMoZHJhZ2dlZEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgZG93bi5lbWl0KCdmcmVlb24nKTtcbiAgICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzLmVtaXQoJ2ZyZWUnKTtcblxuICAgICAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICAgICAgZG93bi5lbWl0KCdkcmFnZnJlZW9uJyk7XG4gICAgICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzLmVtaXQoJ2RyYWdmcmVlJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ29JbnRvQm94TW9kZSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZG93biAmJiBkb3duLmdyYWJiZWQoKSAmJiByLm5vZGVJc0RyYWdnYWJsZShkb3duKSkge1xuICAgICAgICAgICAgLy8gZHJhZyBub2RlXG4gICAgICAgICAgICB2YXIganVzdFN0YXJ0ZWREcmFnID0gIXIuZHJhZ0RhdGEuZGlkRHJhZztcblxuICAgICAgICAgICAgaWYgKGp1c3RTdGFydGVkRHJhZykge1xuICAgICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgci5kcmFnRGF0YS5kaWREcmFnID0gdHJ1ZTsgLy8gaW5kaWNhdGUgdGhhdCB3ZSBhY3R1YWxseSBkaWQgZHJhZyB0aGUgbm9kZVxuXG4gICAgICAgICAgICB2YXIgdG9UcmlnZ2VyID0gY3kuY29sbGVjdGlvbigpOyAvLyBub3csIGFkZCB0aGUgZWxlbWVudHMgdG8gdGhlIGRyYWcgbGF5ZXIgaWYgbm90IGRvbmUgYWxyZWFkeVxuXG4gICAgICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcykge1xuICAgICAgICAgICAgICBhZGROb2Rlc1RvRHJhZyhkcmFnZ2VkRWxlbWVudHMsIHtcbiAgICAgICAgICAgICAgICBpbkRyYWdMYXllcjogdHJ1ZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHRvdGFsU2hpZnQgPSB7XG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChudW1iZXIoZGlzcFswXSkgJiYgbnVtYmVyKGRpc3BbMV0pKSB7XG4gICAgICAgICAgICAgIHRvdGFsU2hpZnQueCArPSBkaXNwWzBdO1xuICAgICAgICAgICAgICB0b3RhbFNoaWZ0LnkgKz0gZGlzcFsxXTtcblxuICAgICAgICAgICAgICBpZiAoanVzdFN0YXJ0ZWREcmFnKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YTtcblxuICAgICAgICAgICAgICAgIGlmIChkcmFnRGVsdGEgJiYgbnVtYmVyKGRyYWdEZWx0YVswXSkgJiYgbnVtYmVyKGRyYWdEZWx0YVsxXSkpIHtcbiAgICAgICAgICAgICAgICAgIHRvdGFsU2hpZnQueCArPSBkcmFnRGVsdGFbMF07XG4gICAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0LnkgKz0gZHJhZ0RlbHRhWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRyYWdnZWRFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YXIgZEVsZSA9IGRyYWdnZWRFbGVtZW50c1tpXTtcblxuICAgICAgICAgICAgICBpZiAoci5ub2RlSXNEcmFnZ2FibGUoZEVsZSkgJiYgZEVsZS5ncmFiYmVkKCkpIHtcbiAgICAgICAgICAgICAgICB0b1RyaWdnZXIucHVzaChkRWxlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByLmhvdmVyRGF0YS5kcmFnZ2luZ0VsZXMgPSB0cnVlO1xuICAgICAgICAgICAgdG9UcmlnZ2VyLnNpbGVudFNoaWZ0KHRvdGFsU2hpZnQpLmVtaXQoJ3Bvc2l0aW9uIGRyYWcnKTtcbiAgICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHNhdmUgZHJhZyBkZWx0YSBmb3Igd2hlbiB3ZSBhY3R1YWxseSBzdGFydCBkcmFnZ2luZyBzbyB0aGUgcmVsYXRpdmUgZ3JhYiBwb3MgaXMgY29uc3RhbnRcbiAgICAgICAgICB1cGRhdGVEcmFnRGVsdGEoKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwcmV2ZW50IHRoZSBkcmFnZ2luZyBmcm9tIHRyaWdnZXJpbmcgdGV4dCBzZWxlY3Rpb24gb24gdGhlIHBhZ2VcblxuXG4gICAgICBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgfVxuXG4gICAgc2VsZWN0WzJdID0gcG9zWzBdO1xuICAgIHNlbGVjdFszXSA9IHBvc1sxXTtcblxuICAgIGlmIChwcmV2ZW50RGVmYXVsdCkge1xuICAgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKSBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sIGZhbHNlKTtcbiAgdmFyIGNsaWNrVGltZW91dCwgZGlkRG91YmxlQ2xpY2ssIHByZXZDbGlja1RpbWVTdGFtcDtcbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAnbW91c2V1cCcsIGZ1bmN0aW9uIG1vdXNldXBIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGNhcHR1cmUgPSByLmhvdmVyRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKCFjYXB0dXJlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgci5ob3ZlckRhdGEuY2FwdHVyZSA9IGZhbHNlO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHZhciBuZWFyID0gci5maW5kTmVhcmVzdEVsZW1lbnQocG9zWzBdLCBwb3NbMV0sIHRydWUsIGZhbHNlKTtcbiAgICB2YXIgZHJhZ2dlZEVsZW1lbnRzID0gci5kcmFnRGF0YS5wb3NzaWJsZURyYWdFbGVtZW50cztcbiAgICB2YXIgZG93biA9IHIuaG92ZXJEYXRhLmRvd247XG4gICAgdmFyIG11bHRTZWxLZXlEb3duID0gaXNNdWx0U2VsS2V5RG93bihlKTtcblxuICAgIGlmIChyLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24pIHtcbiAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICByLnJlZHJhdygpO1xuICAgIH1cblxuICAgIHIuaG92ZXJEYXRhLnRhcGhvbGRDYW5jZWxsZWQgPSB0cnVlO1xuICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDsgLy8gbm90IGFjdGl2ZSBiZyBub3dcblxuICAgIGlmIChkb3duKSB7XG4gICAgICBkb3duLnVuYWN0aXZhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAoci5ob3ZlckRhdGEud2hpY2ggPT09IDMpIHtcbiAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6ICdjeHR0YXBlbmQnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKGRvd24pIHtcbiAgICAgICAgZG93bi5lbWl0KGN4dEV2dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjeS5lbWl0KGN4dEV2dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghci5ob3ZlckRhdGEuY3h0RHJhZ2dlZCkge1xuICAgICAgICB2YXIgY3h0VGFwID0ge1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgdHlwZTogJ2N4dHRhcCcsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZG93bikge1xuICAgICAgICAgIGRvd24uZW1pdChjeHRUYXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN5LmVtaXQoY3h0VGFwKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByLmhvdmVyRGF0YS5jeHREcmFnZ2VkID0gZmFsc2U7XG4gICAgICByLmhvdmVyRGF0YS53aGljaCA9IG51bGw7XG4gICAgfSBlbHNlIGlmIChyLmhvdmVyRGF0YS53aGljaCA9PT0gMSkge1xuICAgICAgdHJpZ2dlckV2ZW50cyhuZWFyLCBbJ21vdXNldXAnLCAndGFwZW5kJywgJ3Ztb3VzZXVwJ10sIGUsIHtcbiAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICB5OiBwb3NbMV1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXIuZHJhZ0RhdGEuZGlkRHJhZyAmJiAvLyBkaWRuJ3QgbW92ZSBhIG5vZGUgYXJvdW5kXG4gICAgICAhci5ob3ZlckRhdGEuZHJhZ2dlZCAmJiAvLyBkaWRuJ3QgcGFuXG4gICAgICAhci5ob3ZlckRhdGEuc2VsZWN0aW5nICYmIC8vIG5vdCBib3ggc2VsZWN0aW9uXG4gICAgICAhci5ob3ZlckRhdGEuaXNPdmVyVGhyZXNob2xkRHJhZyAvLyBkaWRuJ3QgbW92ZSB0b28gbXVjaFxuICAgICAgKSB7XG4gICAgICAgICAgdHJpZ2dlckV2ZW50cyhkb3duLCBbXCJjbGlja1wiLCBcInRhcFwiLCBcInZjbGlja1wiXSwgZSwge1xuICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGlkRG91YmxlQ2xpY2sgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChlLnRpbWVTdGFtcCAtIHByZXZDbGlja1RpbWVTdGFtcCA8PSBjeS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lKCkpIHtcbiAgICAgICAgICAgIGNsaWNrVGltZW91dCAmJiBjbGVhclRpbWVvdXQoY2xpY2tUaW1lb3V0KTtcbiAgICAgICAgICAgIGRpZERvdWJsZUNsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgIHByZXZDbGlja1RpbWVTdGFtcCA9IG51bGw7XG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnRzKGRvd24sIFtcImRibGNsaWNrXCIsIFwiZGJsdGFwXCIsIFwidmRibGNsaWNrXCJdLCBlLCB7XG4gICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xpY2tUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGlmIChkaWREb3VibGVDbGljaykgcmV0dXJuO1xuICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnRzKGRvd24sIFtcIm9uZWNsaWNrXCIsIFwib25ldGFwXCIsIFwidm9uZWNsaWNrXCJdLCBlLCB7XG4gICAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIGN5Lm11bHRpQ2xpY2tEZWJvdW5jZVRpbWUoKSk7XG4gICAgICAgICAgICBwcmV2Q2xpY2tUaW1lU3RhbXAgPSBlLnRpbWVTdGFtcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gRGVzZWxlY3QgYWxsIGVsZW1lbnRzIGlmIG5vdGhpbmcgaXMgY3VycmVudGx5IHVuZGVyIHRoZSBtb3VzZSBjdXJzb3IgYW5kIHdlIGFyZW4ndCBkcmFnZ2luZyBzb21ldGhpbmdcblxuXG4gICAgICBpZiAoZG93biA9PSBudWxsICYmIC8vIG5vdCBtb3VzZWRvd24gb24gbm9kZVxuICAgICAgIXIuZHJhZ0RhdGEuZGlkRHJhZyAvLyBkaWRuJ3QgbW92ZSB0aGUgbm9kZSBhcm91bmRcbiAgICAgICYmICFyLmhvdmVyRGF0YS5zZWxlY3RpbmcgLy8gbm90IGJveCBzZWxlY3Rpb25cbiAgICAgICYmICFyLmhvdmVyRGF0YS5kcmFnZ2VkIC8vIGRpZG4ndCBwYW5cbiAgICAgICYmICFpc011bHRTZWxLZXlEb3duKGUpKSB7XG4gICAgICAgIGN5LiQoaXNTZWxlY3RlZCkudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcblxuICAgICAgICBpZiAoZHJhZ2dlZEVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHMgPSBkcmFnZ2VkRWxlbWVudHMgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICB9IC8vIFNpbmdsZSBzZWxlY3Rpb25cblxuXG4gICAgICBpZiAobmVhciA9PSBkb3duICYmICFyLmRyYWdEYXRhLmRpZERyYWcgJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZykge1xuICAgICAgICBpZiAobmVhciAhPSBudWxsICYmIG5lYXIuX3ByaXZhdGUuc2VsZWN0YWJsZSkge1xuICAgICAgICAgIGlmIChyLmhvdmVyRGF0YS5kcmFnZ2luZykgOyBlbHNlIGlmIChjeS5zZWxlY3Rpb25UeXBlKCkgPT09ICdhZGRpdGl2ZScgfHwgbXVsdFNlbEtleURvd24pIHtcbiAgICAgICAgICAgIGlmIChuZWFyLnNlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgICAgbmVhci51bnNlbGVjdChbJ3RhcHVuc2VsZWN0J10pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmVhci5zZWxlY3QoWyd0YXBzZWxlY3QnXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghbXVsdFNlbEtleURvd24pIHtcbiAgICAgICAgICAgICAgY3kuJChpc1NlbGVjdGVkKS51bm1lcmdlKG5lYXIpLnVuc2VsZWN0KFsndGFwdW5zZWxlY3QnXSk7XG4gICAgICAgICAgICAgIG5lYXIuc2VsZWN0KFsndGFwc2VsZWN0J10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyLmhvdmVyRGF0YS5zZWxlY3RpbmcpIHtcbiAgICAgICAgdmFyIGJveCA9IGN5LmNvbGxlY3Rpb24oci5nZXRBbGxJbkJveChzZWxlY3RbMF0sIHNlbGVjdFsxXSwgc2VsZWN0WzJdLCBzZWxlY3RbM10pKTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcblxuICAgICAgICBpZiAoYm94Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgIHR5cGU6ICdib3hlbmQnLFxuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGVsZVdvdWxkQmVTZWxlY3RlZCA9IGZ1bmN0aW9uIGVsZVdvdWxkQmVTZWxlY3RlZChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLnNlbGVjdGFibGUoKSAmJiAhZWxlLnNlbGVjdGVkKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGN5LnNlbGVjdGlvblR5cGUoKSA9PT0gJ2FkZGl0aXZlJykge1xuICAgICAgICAgIGJveC5lbWl0KCdib3gnKS5zdGRGaWx0ZXIoZWxlV291bGRCZVNlbGVjdGVkKS5zZWxlY3QoKS5lbWl0KCdib3hzZWxlY3QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIW11bHRTZWxLZXlEb3duKSB7XG4gICAgICAgICAgICBjeS4kKGlzU2VsZWN0ZWQpLnVubWVyZ2UoYm94KS51bnNlbGVjdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJveC5lbWl0KCdib3gnKS5zdGRGaWx0ZXIoZWxlV291bGRCZVNlbGVjdGVkKS5zZWxlY3QoKS5lbWl0KCdib3hzZWxlY3QnKTtcbiAgICAgICAgfSAvLyBhbHdheXMgbmVlZCByZWRyYXcgaW4gY2FzZSBlbGVzIHVuc2VsZWN0YWJsZVxuXG5cbiAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgIH0gLy8gQ2FuY2VsIGRyYWcgcGFuXG5cblxuICAgICAgaWYgKHIuaG92ZXJEYXRhLmRyYWdnaW5nKSB7XG4gICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICByLnJlZHJhdygpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNlbGVjdFs0XSkge1xuICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgIHZhciBkb3duV2FzR3JhYmJlZCA9IGRvd24gJiYgZG93bi5ncmFiYmVkKCk7XG4gICAgICAgIGZyZWVEcmFnZ2VkRWxlbWVudHMoZHJhZ2dlZEVsZW1lbnRzKTtcblxuICAgICAgICBpZiAoZG93bldhc0dyYWJiZWQpIHtcbiAgICAgICAgICBkb3duLmVtaXQoJ2ZyZWVvbicpO1xuICAgICAgICAgIGRyYWdnZWRFbGVtZW50cy5lbWl0KCdmcmVlJyk7XG5cbiAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICBkb3duLmVtaXQoJ2RyYWdmcmVlb24nKTtcbiAgICAgICAgICAgIGRyYWdnZWRFbGVtZW50cy5lbWl0KCdkcmFnZnJlZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gZWxzZSBub3QgcmlnaHQgbW91c2VcblxuXG4gICAgc2VsZWN0WzRdID0gMDtcbiAgICByLmhvdmVyRGF0YS5kb3duID0gbnVsbDtcbiAgICByLmhvdmVyRGF0YS5jeHRTdGFydGVkID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuc2VsZWN0aW5nID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuaXNPdmVyVGhyZXNob2xkRHJhZyA9IGZhbHNlO1xuICAgIHIuZHJhZ0RhdGEuZGlkRHJhZyA9IGZhbHNlO1xuICAgIHIuaG92ZXJEYXRhLmRyYWdnZWQgPSBmYWxzZTtcbiAgICByLmhvdmVyRGF0YS5kcmFnRGVsdGEgPSBbXTtcbiAgICByLmhvdmVyRGF0YS5tZG93blBvcyA9IG51bGw7XG4gICAgci5ob3ZlckRhdGEubWRvd25HUG9zID0gbnVsbDtcbiAgfSwgZmFsc2UpO1xuXG4gIHZhciB3aGVlbEhhbmRsZXIgPSBmdW5jdGlvbiB3aGVlbEhhbmRsZXIoZSkge1xuICAgIGlmIChyLnNjcm9sbGluZ1BhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIHdoaWxlIHNjcm9sbGluZywgaWdub3JlIHdoZWVsLXRvLXpvb21cblxuXG4gICAgdmFyIGN5ID0gci5jeTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgdmFyIHJwb3MgPSBbcG9zWzBdICogem9vbSArIHBhbi54LCBwb3NbMV0gKiB6b29tICsgcGFuLnldO1xuXG4gICAgaWYgKHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyB8fCByLmhvdmVyRGF0YS5kcmFnZ2luZyB8fCByLmhvdmVyRGF0YS5jeHRTdGFydGVkIHx8IGluQm94U2VsZWN0aW9uKCkpIHtcbiAgICAgIC8vIGlmIHBhbiBkcmFnZ2luZyBvciBjeHQgZHJhZ2dpbmcsIHdoZWVsIG1vdmVtZW50cyBtYWtlIG5vIHpvb21cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY3kucGFubmluZ0VuYWJsZWQoKSAmJiBjeS51c2VyUGFubmluZ0VuYWJsZWQoKSAmJiBjeS56b29taW5nRW5hYmxlZCgpICYmIGN5LnVzZXJab29taW5nRW5hYmxlZCgpKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByLmRhdGEud2hlZWxab29taW5nID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChyLmRhdGEud2hlZWxUaW1lb3V0KTtcbiAgICAgIHIuZGF0YS53aGVlbFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgci5kYXRhLndoZWVsWm9vbWluZyA9IGZhbHNlO1xuICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgIH0sIDE1MCk7XG4gICAgICB2YXIgZGlmZjtcblxuICAgICAgaWYgKGUuZGVsdGFZICE9IG51bGwpIHtcbiAgICAgICAgZGlmZiA9IGUuZGVsdGFZIC8gLTI1MDtcbiAgICAgIH0gZWxzZSBpZiAoZS53aGVlbERlbHRhWSAhPSBudWxsKSB7XG4gICAgICAgIGRpZmYgPSBlLndoZWVsRGVsdGFZIC8gMTAwMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpZmYgPSBlLndoZWVsRGVsdGEgLyAxMDAwO1xuICAgICAgfVxuXG4gICAgICBkaWZmID0gZGlmZiAqIHIud2hlZWxTZW5zaXRpdml0eTtcbiAgICAgIHZhciBuZWVkc1doZWVsRml4ID0gZS5kZWx0YU1vZGUgPT09IDE7XG5cbiAgICAgIGlmIChuZWVkc1doZWVsRml4KSB7XG4gICAgICAgIC8vIGZpeGVzIHNsb3cgd2hlZWwgZXZlbnRzIG9uIGZmL2xpbnV4IGFuZCBmZi93aW5kb3dzXG4gICAgICAgIGRpZmYgKj0gMzM7XG4gICAgICB9XG5cbiAgICAgIHZhciBuZXdab29tID0gY3kuem9vbSgpICogTWF0aC5wb3coMTAsIGRpZmYpO1xuXG4gICAgICBpZiAoZS50eXBlID09PSAnZ2VzdHVyZWNoYW5nZScpIHtcbiAgICAgICAgbmV3Wm9vbSA9IHIuZ2VzdHVyZVN0YXJ0Wm9vbSAqIGUuc2NhbGU7XG4gICAgICB9XG5cbiAgICAgIGN5Lnpvb20oe1xuICAgICAgICBsZXZlbDogbmV3Wm9vbSxcbiAgICAgICAgcmVuZGVyZWRQb3NpdGlvbjoge1xuICAgICAgICAgIHg6IHJwb3NbMF0sXG4gICAgICAgICAgeTogcnBvc1sxXVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGN5LmVtaXQoZS50eXBlID09PSAnZ2VzdHVyZWNoYW5nZScgPyAncGluY2h6b29tJyA6ICdzY3JvbGx6b29tJyk7XG4gICAgfVxuICB9OyAvLyBGdW5jdGlvbnMgdG8gaGVscCB3aXRoIHdoZXRoZXIgbW91c2Ugd2hlZWwgc2hvdWxkIHRyaWdnZXIgem9vbWluZ1xuICAvLyAtLVxuXG5cbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICd3aGVlbCcsIHdoZWVsSGFuZGxlciwgdHJ1ZSk7IC8vIGRpc2FibGUgbm9uc3RhbmRhcmQgd2hlZWwgZXZlbnRzXG4gIC8vIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnbW91c2V3aGVlbCcsIHdoZWVsSGFuZGxlciwgdHJ1ZSk7XG4gIC8vIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnRE9NTW91c2VTY3JvbGwnLCB3aGVlbEhhbmRsZXIsIHRydWUpO1xuICAvLyByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ01vek1vdXNlUGl4ZWxTY3JvbGwnLCB3aGVlbEhhbmRsZXIsIHRydWUpOyAvLyBvbGRlciBmaXJlZm94XG5cbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAnc2Nyb2xsJywgZnVuY3Rpb24gc2Nyb2xsSGFuZGxlcihlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHIuc2Nyb2xsaW5nUGFnZSA9IHRydWU7XG4gICAgY2xlYXJUaW1lb3V0KHIuc2Nyb2xsaW5nUGFnZVRpbWVvdXQpO1xuICAgIHIuc2Nyb2xsaW5nUGFnZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHIuc2Nyb2xsaW5nUGFnZSA9IGZhbHNlO1xuICAgIH0sIDI1MCk7XG4gIH0sIHRydWUpOyAvLyBkZXNrdG9wIHNhZmFyaSBwaW5jaCB0byB6b29tIHN0YXJ0XG5cbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdnZXN0dXJlc3RhcnQnLCBmdW5jdGlvbiBnZXN0dXJlU3RhcnRIYW5kbGVyKGUpIHtcbiAgICByLmdlc3R1cmVTdGFydFpvb20gPSByLmN5Lnpvb20oKTtcblxuICAgIGlmICghci5oYXNUb3VjaFN0YXJ0ZWQpIHtcbiAgICAgIC8vIGRvbid0IGFmZmVjdCB0b3VjaCBkZXZpY2VzIGxpa2UgaXBob25lXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9LCB0cnVlKTtcbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdnZXN0dXJlY2hhbmdlJywgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoIXIuaGFzVG91Y2hTdGFydGVkKSB7XG4gICAgICAvLyBkb24ndCBhZmZlY3QgdG91Y2ggZGV2aWNlcyBsaWtlIGlwaG9uZVxuICAgICAgd2hlZWxIYW5kbGVyKGUpO1xuICAgIH1cbiAgfSwgdHJ1ZSk7IC8vIEZ1bmN0aW9ucyB0byBoZWxwIHdpdGggaGFuZGxpbmcgbW91c2VvdXQvbW91c2VvdmVyIG9uIHRoZSBDeXRvc2NhcGUgY29udGFpbmVyXG4gIC8vIEhhbmRsZSBtb3VzZW91dCBvbiBDeXRvc2NhcGUgY29udGFpbmVyXG5cbiAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdtb3VzZW91dCcsIGZ1bmN0aW9uIG1vdXNlT3V0SGFuZGxlcihlKSB7XG4gICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgci5jeS5lbWl0KHtcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICB0eXBlOiAnbW91c2VvdXQnLFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICB5OiBwb3NbMV1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgZmFsc2UpO1xuICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ21vdXNlb3ZlcicsIGZ1bmN0aW9uIG1vdXNlT3ZlckhhbmRsZXIoZSkge1xuICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgIHIuY3kuZW1pdCh7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgdHlwZTogJ21vdXNlb3ZlcicsXG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgIHk6IHBvc1sxXVxuICAgICAgfVxuICAgIH0pO1xuICB9LCBmYWxzZSk7XG4gIHZhciBmMXgxLCBmMXkxLCBmMngxLCBmMnkxOyAvLyBzdGFydGluZyBwb2ludHMgZm9yIHBpbmNoLXRvLXpvb21cblxuICB2YXIgZGlzdGFuY2UxLCBkaXN0YW5jZTFTcTsgLy8gaW5pdGlhbCBkaXN0YW5jZSBiZXR3ZWVuIGZpbmdlciAxIGFuZCBmaW5nZXIgMiBmb3IgcGluY2gtdG8tem9vbVxuXG4gIHZhciBjZW50ZXIxLCBtb2RlbENlbnRlcjE7IC8vIGNlbnRlciBwb2ludCBvbiBzdGFydCBwaW5jaCB0byB6b29tXG5cbiAgdmFyIG9mZnNldExlZnQsIG9mZnNldFRvcDtcbiAgdmFyIGNvbnRhaW5lcldpZHRoLCBjb250YWluZXJIZWlnaHQ7XG4gIHZhciB0d29GaW5nZXJzU3RhcnRJbnNpZGU7XG5cbiAgdmFyIGRpc3RhbmNlID0gZnVuY3Rpb24gZGlzdGFuY2UoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KCh4MiAtIHgxKSAqICh4MiAtIHgxKSArICh5MiAtIHkxKSAqICh5MiAtIHkxKSk7XG4gIH07XG5cbiAgdmFyIGRpc3RhbmNlU3EgPSBmdW5jdGlvbiBkaXN0YW5jZVNxKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgcmV0dXJuICh4MiAtIHgxKSAqICh4MiAtIHgxKSArICh5MiAtIHkxKSAqICh5MiAtIHkxKTtcbiAgfTtcblxuICB2YXIgdG91Y2hzdGFydEhhbmRsZXI7XG4gIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAndG91Y2hzdGFydCcsIHRvdWNoc3RhcnRIYW5kbGVyID0gZnVuY3Rpb24gdG91Y2hzdGFydEhhbmRsZXIoZSkge1xuICAgIHIuaGFzVG91Y2hTdGFydGVkID0gdHJ1ZTtcblxuICAgIGlmICghZXZlbnRJbkNvbnRhaW5lcihlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJsdXJBY3RpdmVEb21FbGVtZW50KCk7XG4gICAgci50b3VjaERhdGEuY2FwdHVyZSA9IHRydWU7XG4gICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIG5vdyA9IHIudG91Y2hEYXRhLm5vdztcbiAgICB2YXIgZWFybGllciA9IHIudG91Y2hEYXRhLmVhcmxpZXI7XG5cbiAgICBpZiAoZS50b3VjaGVzWzBdKSB7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1swXS5jbGllbnRYLCBlLnRvdWNoZXNbMF0uY2xpZW50WSk7XG4gICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICBub3dbMV0gPSBwb3NbMV07XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMV0uY2xpZW50WCwgZS50b3VjaGVzWzFdLmNsaWVudFkpO1xuICAgICAgbm93WzJdID0gcG9zWzBdO1xuICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgIH1cblxuICAgIGlmIChlLnRvdWNoZXNbMl0pIHtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgIG5vd1s0XSA9IHBvc1swXTtcbiAgICAgIG5vd1s1XSA9IHBvc1sxXTtcbiAgICB9IC8vIHJlY29yZCBzdGFydGluZyBwb2ludHMgZm9yIHBpbmNoLXRvLXpvb21cblxuXG4gICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgci50b3VjaERhdGEuc2luZ2xlVG91Y2hNb3ZlZCA9IHRydWU7XG4gICAgICBmcmVlRHJhZ2dlZEVsZW1lbnRzKHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcyk7XG4gICAgICB2YXIgb2Zmc2V0cyA9IHIuZmluZENvbnRhaW5lckNsaWVudENvb3JkcygpO1xuICAgICAgb2Zmc2V0TGVmdCA9IG9mZnNldHNbMF07XG4gICAgICBvZmZzZXRUb3AgPSBvZmZzZXRzWzFdO1xuICAgICAgY29udGFpbmVyV2lkdGggPSBvZmZzZXRzWzJdO1xuICAgICAgY29udGFpbmVySGVpZ2h0ID0gb2Zmc2V0c1szXTtcbiAgICAgIGYxeDEgPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIG9mZnNldExlZnQ7XG4gICAgICBmMXkxID0gZS50b3VjaGVzWzBdLmNsaWVudFkgLSBvZmZzZXRUb3A7XG4gICAgICBmMngxID0gZS50b3VjaGVzWzFdLmNsaWVudFggLSBvZmZzZXRMZWZ0O1xuICAgICAgZjJ5MSA9IGUudG91Y2hlc1sxXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgdHdvRmluZ2Vyc1N0YXJ0SW5zaWRlID0gMCA8PSBmMXgxICYmIGYxeDEgPD0gY29udGFpbmVyV2lkdGggJiYgMCA8PSBmMngxICYmIGYyeDEgPD0gY29udGFpbmVyV2lkdGggJiYgMCA8PSBmMXkxICYmIGYxeTEgPD0gY29udGFpbmVySGVpZ2h0ICYmIDAgPD0gZjJ5MSAmJiBmMnkxIDw9IGNvbnRhaW5lckhlaWdodDtcbiAgICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgICAgZGlzdGFuY2UxID0gZGlzdGFuY2UoZjF4MSwgZjF5MSwgZjJ4MSwgZjJ5MSk7XG4gICAgICBkaXN0YW5jZTFTcSA9IGRpc3RhbmNlU3EoZjF4MSwgZjF5MSwgZjJ4MSwgZjJ5MSk7XG4gICAgICBjZW50ZXIxID0gWyhmMXgxICsgZjJ4MSkgLyAyLCAoZjF5MSArIGYyeTEpIC8gMl07XG4gICAgICBtb2RlbENlbnRlcjEgPSBbKGNlbnRlcjFbMF0gLSBwYW4ueCkgLyB6b29tLCAoY2VudGVyMVsxXSAtIHBhbi55KSAvIHpvb21dOyAvLyBjb25zaWRlciBjb250ZXh0IHRhcFxuXG4gICAgICB2YXIgY3h0RGlzdFRocmVzaG9sZCA9IDIwMDtcbiAgICAgIHZhciBjeHREaXN0VGhyZXNob2xkU3EgPSBjeHREaXN0VGhyZXNob2xkICogY3h0RGlzdFRocmVzaG9sZDtcblxuICAgICAgaWYgKGRpc3RhbmNlMVNxIDwgY3h0RGlzdFRocmVzaG9sZFNxICYmICFlLnRvdWNoZXNbMl0pIHtcbiAgICAgICAgdmFyIG5lYXIxID0gci5maW5kTmVhcmVzdEVsZW1lbnQobm93WzBdLCBub3dbMV0sIHRydWUsIHRydWUpO1xuICAgICAgICB2YXIgbmVhcjIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMl0sIG5vd1szXSwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKG5lYXIxICYmIG5lYXIxLmlzTm9kZSgpKSB7XG4gICAgICAgICAgbmVhcjEuYWN0aXZhdGUoKS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICB0eXBlOiAnY3h0dGFwc3RhcnQnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG5lYXIxO1xuICAgICAgICB9IGVsc2UgaWYgKG5lYXIyICYmIG5lYXIyLmlzTm9kZSgpKSB7XG4gICAgICAgICAgbmVhcjIuYWN0aXZhdGUoKS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICB0eXBlOiAnY3h0dGFwc3RhcnQnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG5lYXIyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgIHR5cGU6ICdjeHR0YXBzdGFydCcsXG4gICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0KSB7XG4gICAgICAgICAgci50b3VjaERhdGEuc3RhcnQuX3ByaXZhdGUuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgci50b3VjaERhdGEuY3h0ID0gdHJ1ZTtcbiAgICAgICAgci50b3VjaERhdGEuY3h0RHJhZ2dlZCA9IGZhbHNlO1xuICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZS50b3VjaGVzWzJdKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICAgIC8vIHNhZmFyaSBvbiBpb3MgcGFucyB0aGUgcGFnZSBvdGhlcndpc2UgKG5vcm1hbGx5IHlvdSBzaG91bGQgYmUgYWJsZSB0byBwcmV2ZW50ZGVmYXVsdCBvbiB0b3VjaG1vdmUuLi4pXG4gICAgICBpZiAoY3kuYm94U2VsZWN0aW9uRW5hYmxlZCgpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUudG91Y2hlc1sxXSkgOyBlbHNlIGlmIChlLnRvdWNoZXNbMF0pIHtcbiAgICAgIHZhciBuZWFycyA9IHIuZmluZE5lYXJlc3RFbGVtZW50cyhub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICB2YXIgbmVhciA9IG5lYXJzWzBdO1xuXG4gICAgICBpZiAobmVhciAhPSBudWxsKSB7XG4gICAgICAgIG5lYXIuYWN0aXZhdGUoKTtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBuZWFyO1xuICAgICAgICByLnRvdWNoRGF0YS5zdGFydHMgPSBuZWFycztcblxuICAgICAgICBpZiAoci5ub2RlSXNHcmFiYmFibGUobmVhcikpIHtcbiAgICAgICAgICB2YXIgZHJhZ2dlZEVsZXMgPSByLmRyYWdEYXRhLnRvdWNoRHJhZ0VsZXMgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICAgICAgdmFyIHNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuXG4gICAgICAgICAgaWYgKG5lYXIuc2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgLy8gcmVzZXQgZHJhZyBlbGVtZW50cywgc2luY2UgbmVhciB3aWxsIGJlIGFkZGVkIGFnYWluXG4gICAgICAgICAgICBzZWxlY3RlZE5vZGVzID0gY3kuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlbGUuc2VsZWN0ZWQoKSAmJiByLm5vZGVJc0dyYWJiYWJsZShlbGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhZGROb2Rlc1RvRHJhZyhzZWxlY3RlZE5vZGVzLCB7XG4gICAgICAgICAgICAgIGFkZFRvTGlzdDogZHJhZ2dlZEVsZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZGROb2RlVG9EcmFnKG5lYXIsIHtcbiAgICAgICAgICAgICAgYWRkVG9MaXN0OiBkcmFnZ2VkRWxlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2V0R3JhYlRhcmdldChuZWFyKTtcblxuICAgICAgICAgIHZhciBtYWtlRXZlbnQgPSBmdW5jdGlvbiBtYWtlRXZlbnQodHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIG5lYXIuZW1pdChtYWtlRXZlbnQoJ2dyYWJvbicpKTtcblxuICAgICAgICAgIGlmIChzZWxlY3RlZE5vZGVzKSB7XG4gICAgICAgICAgICBzZWxlY3RlZE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgICAgbi5lbWl0KG1ha2VFdmVudCgnZ3JhYicpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZWFyLmVtaXQobWFrZUV2ZW50KCdncmFiJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0cmlnZ2VyRXZlbnRzKG5lYXIsIFsndG91Y2hzdGFydCcsICd0YXBzdGFydCcsICd2bW91c2Vkb3duJ10sIGUsIHtcbiAgICAgICAgeDogbm93WzBdLFxuICAgICAgICB5OiBub3dbMV1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAobmVhciA9PSBudWxsKSB7XG4gICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHtcbiAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgIH07XG4gICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3KCk7XG4gICAgICB9IC8vIFRhcCwgdGFwaG9sZFxuICAgICAgLy8gLS0tLS1cblxuXG4gICAgICByLnRvdWNoRGF0YS5zaW5nbGVUb3VjaE1vdmVkID0gZmFsc2U7XG4gICAgICByLnRvdWNoRGF0YS5zaW5nbGVUb3VjaFN0YXJ0VGltZSA9ICtuZXcgRGF0ZSgpO1xuICAgICAgY2xlYXJUaW1lb3V0KHIudG91Y2hEYXRhLnRhcGhvbGRUaW1lb3V0KTtcbiAgICAgIHIudG91Y2hEYXRhLnRhcGhvbGRUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChyLnRvdWNoRGF0YS5zaW5nbGVUb3VjaE1vdmVkID09PSBmYWxzZSAmJiAhci5waW5jaGluZyAvLyBpZiBwaW5jaGluZywgdGhlbiB0YXBob2xkIHVuc2VsZWN0IHNob3VsZG4ndCB0YWtlIGVmZmVjdFxuICAgICAgICAmJiAhci50b3VjaERhdGEuc2VsZWN0aW5nIC8vIGJveCBzZWxlY3Rpb24gc2hvdWxkbid0IGFsbG93IHRhcGhvbGQgdGhyb3VnaFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudHMoci50b3VjaERhdGEuc3RhcnQsIFsndGFwaG9sZCddLCBlLCB7XG4gICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICB9LCByLnRhcGhvbGREdXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPj0gMSkge1xuICAgICAgdmFyIHNQb3MgPSByLnRvdWNoRGF0YS5zdGFydFBvc2l0aW9uID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm93Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHNQb3NbaV0gPSBlYXJsaWVyW2ldID0gbm93W2ldO1xuICAgICAgfVxuXG4gICAgICB2YXIgdG91Y2gwID0gZS50b3VjaGVzWzBdO1xuICAgICAgci50b3VjaERhdGEuc3RhcnRHUG9zaXRpb24gPSBbdG91Y2gwLmNsaWVudFgsIHRvdWNoMC5jbGllbnRZXTtcbiAgICB9XG4gIH0sIGZhbHNlKTtcbiAgdmFyIHRvdWNobW92ZUhhbmRsZXI7XG4gIHIucmVnaXN0ZXJCaW5kaW5nKHdpbmRvdywgJ3RvdWNobW92ZScsIHRvdWNobW92ZUhhbmRsZXIgPSBmdW5jdGlvbiB0b3VjaG1vdmVIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGNhcHR1cmUgPSByLnRvdWNoRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKCFjYXB0dXJlICYmICFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgdmFyIG5vdyA9IHIudG91Y2hEYXRhLm5vdztcbiAgICB2YXIgZWFybGllciA9IHIudG91Y2hEYXRhLmVhcmxpZXI7XG4gICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG5cbiAgICBpZiAoZS50b3VjaGVzWzBdKSB7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1swXS5jbGllbnRYLCBlLnRvdWNoZXNbMF0uY2xpZW50WSk7XG4gICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICBub3dbMV0gPSBwb3NbMV07XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMV0uY2xpZW50WCwgZS50b3VjaGVzWzFdLmNsaWVudFkpO1xuICAgICAgbm93WzJdID0gcG9zWzBdO1xuICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgIH1cblxuICAgIGlmIChlLnRvdWNoZXNbMl0pIHtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgIG5vd1s0XSA9IHBvc1swXTtcbiAgICAgIG5vd1s1XSA9IHBvc1sxXTtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnRHUG9zID0gci50b3VjaERhdGEuc3RhcnRHUG9zaXRpb247XG4gICAgdmFyIGlzT3ZlclRocmVzaG9sZERyYWc7XG5cbiAgICBpZiAoY2FwdHVyZSAmJiBlLnRvdWNoZXNbMF0gJiYgc3RhcnRHUG9zKSB7XG4gICAgICB2YXIgZGlzcCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgICBkaXNwW2pdID0gbm93W2pdIC0gZWFybGllcltqXTtcbiAgICAgIH1cblxuICAgICAgdmFyIGR4ID0gZS50b3VjaGVzWzBdLmNsaWVudFggLSBzdGFydEdQb3NbMF07XG4gICAgICB2YXIgZHgyID0gZHggKiBkeDtcbiAgICAgIHZhciBkeSA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gc3RhcnRHUG9zWzFdO1xuICAgICAgdmFyIGR5MiA9IGR5ICogZHk7XG4gICAgICB2YXIgZGlzdDIgPSBkeDIgKyBkeTI7XG4gICAgICBpc092ZXJUaHJlc2hvbGREcmFnID0gZGlzdDIgPj0gci50b3VjaFRhcFRocmVzaG9sZDI7XG4gICAgfSAvLyBjb250ZXh0IHN3aXBlIGNhbmNlbGxpbmdcblxuXG4gICAgaWYgKGNhcHR1cmUgJiYgci50b3VjaERhdGEuY3h0KSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB2YXIgZjF4MiA9IGUudG91Y2hlc1swXS5jbGllbnRYIC0gb2Zmc2V0TGVmdCxcbiAgICAgICAgICBmMXkyID0gZS50b3VjaGVzWzBdLmNsaWVudFkgLSBvZmZzZXRUb3A7XG4gICAgICB2YXIgZjJ4MiA9IGUudG91Y2hlc1sxXS5jbGllbnRYIC0gb2Zmc2V0TGVmdCxcbiAgICAgICAgICBmMnkyID0gZS50b3VjaGVzWzFdLmNsaWVudFkgLSBvZmZzZXRUb3A7IC8vIHZhciBkaXN0YW5jZTIgPSBkaXN0YW5jZSggZjF4MiwgZjF5MiwgZjJ4MiwgZjJ5MiApO1xuXG4gICAgICB2YXIgZGlzdGFuY2UyU3EgPSBkaXN0YW5jZVNxKGYxeDIsIGYxeTIsIGYyeDIsIGYyeTIpO1xuICAgICAgdmFyIGZhY3RvclNxID0gZGlzdGFuY2UyU3EgLyBkaXN0YW5jZTFTcTtcbiAgICAgIHZhciBkaXN0VGhyZXNob2xkID0gMTUwO1xuICAgICAgdmFyIGRpc3RUaHJlc2hvbGRTcSA9IGRpc3RUaHJlc2hvbGQgKiBkaXN0VGhyZXNob2xkO1xuICAgICAgdmFyIGZhY3RvclRocmVzaG9sZCA9IDEuNTtcbiAgICAgIHZhciBmYWN0b3JUaHJlc2hvbGRTcSA9IGZhY3RvclRocmVzaG9sZCAqIGZhY3RvclRocmVzaG9sZDsgLy8gY2FuY2VsIGN0eCBnZXN0dXJlcyBpZiB0aGUgZGlzdGFuY2UgYi90IHRoZSBmaW5nZXJzIGluY3JlYXNlc1xuXG4gICAgICBpZiAoZmFjdG9yU3EgPj0gZmFjdG9yVGhyZXNob2xkU3EgfHwgZGlzdGFuY2UyU3EgPj0gZGlzdFRocmVzaG9sZFNxKSB7XG4gICAgICAgIHIudG91Y2hEYXRhLmN4dCA9IGZhbHNlO1xuICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICB0eXBlOiAnY3h0dGFwZW5kJyxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChyLnRvdWNoRGF0YS5zdGFydCkge1xuICAgICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0LnVuYWN0aXZhdGUoKS5lbWl0KGN4dEV2dCk7XG4gICAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN5LmVtaXQoY3h0RXZ0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gY29udGV4dCBzd2lwZVxuXG5cbiAgICBpZiAoY2FwdHVyZSAmJiByLnRvdWNoRGF0YS5jeHQpIHtcbiAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6ICdjeHRkcmFnJyxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgeTogbm93WzFdXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuXG4gICAgICBpZiAoci50b3VjaERhdGEuc3RhcnQpIHtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQuZW1pdChjeHRFdnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3kuZW1pdChjeHRFdnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoci50b3VjaERhdGEuc3RhcnQpIHtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQuX3ByaXZhdGUuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByLnRvdWNoRGF0YS5jeHREcmFnZ2VkID0gdHJ1ZTtcbiAgICAgIHZhciBuZWFyID0gci5maW5kTmVhcmVzdEVsZW1lbnQobm93WzBdLCBub3dbMV0sIHRydWUsIHRydWUpO1xuXG4gICAgICBpZiAoIXIudG91Y2hEYXRhLmN4dE92ZXIgfHwgbmVhciAhPT0gci50b3VjaERhdGEuY3h0T3Zlcikge1xuICAgICAgICBpZiAoci50b3VjaERhdGEuY3h0T3Zlcikge1xuICAgICAgICAgIHIudG91Y2hEYXRhLmN4dE92ZXIuZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgdHlwZTogJ2N4dGRyYWdvdXQnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHIudG91Y2hEYXRhLmN4dE92ZXIgPSBuZWFyO1xuXG4gICAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgICAgbmVhci5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICB0eXBlOiAnY3h0ZHJhZ292ZXInLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBib3ggc2VsZWN0aW9uXG5cbiAgICB9IGVsc2UgaWYgKGNhcHR1cmUgJiYgZS50b3VjaGVzWzJdICYmIGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5sYXN0VGhyZWVUb3VjaCA9ICtuZXcgRGF0ZSgpO1xuXG4gICAgICBpZiAoIXIudG91Y2hEYXRhLnNlbGVjdGluZykge1xuICAgICAgICBjeS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgIHR5cGU6ICdib3hzdGFydCcsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHIudG91Y2hEYXRhLnNlbGVjdGluZyA9IHRydWU7XG4gICAgICByLnRvdWNoRGF0YS5kaWRTZWxlY3QgPSB0cnVlO1xuICAgICAgc2VsZWN0WzRdID0gMTtcblxuICAgICAgaWYgKCFzZWxlY3QgfHwgc2VsZWN0Lmxlbmd0aCA9PT0gMCB8fCBzZWxlY3RbMF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZWxlY3RbMF0gPSAobm93WzBdICsgbm93WzJdICsgbm93WzRdKSAvIDM7XG4gICAgICAgIHNlbGVjdFsxXSA9IChub3dbMV0gKyBub3dbM10gKyBub3dbNV0pIC8gMztcbiAgICAgICAgc2VsZWN0WzJdID0gKG5vd1swXSArIG5vd1syXSArIG5vd1s0XSkgLyAzICsgMTtcbiAgICAgICAgc2VsZWN0WzNdID0gKG5vd1sxXSArIG5vd1szXSArIG5vd1s1XSkgLyAzICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdFsyXSA9IChub3dbMF0gKyBub3dbMl0gKyBub3dbNF0pIC8gMztcbiAgICAgICAgc2VsZWN0WzNdID0gKG5vd1sxXSArIG5vd1szXSArIG5vd1s1XSkgLyAzO1xuICAgICAgfVxuXG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgci5yZWRyYXcoKTsgLy8gcGluY2ggdG8gem9vbVxuICAgIH0gZWxzZSBpZiAoY2FwdHVyZSAmJiBlLnRvdWNoZXNbMV0gJiYgIXIudG91Y2hEYXRhLmRpZFNlbGVjdCAvLyBkb24ndCBhbGxvdyBib3ggc2VsZWN0aW9uIHRvIGRlZ3JhZGUgdG8gcGluY2gtdG8tem9vbVxuICAgICYmIGN5Lnpvb21pbmdFbmFibGVkKCkgJiYgY3kucGFubmluZ0VuYWJsZWQoKSAmJiBjeS51c2VyWm9vbWluZ0VuYWJsZWQoKSAmJiBjeS51c2VyUGFubmluZ0VuYWJsZWQoKSkge1xuICAgICAgLy8gdHdvIGZpbmdlcnMgPT4gcGluY2ggdG8gem9vbVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgIHZhciBkcmFnZ2VkRWxlcyA9IHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcztcblxuICAgICAgaWYgKGRyYWdnZWRFbGVzKSB7XG4gICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZHJhZ2dlZEVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZGVfcCA9IGRyYWdnZWRFbGVzW2ldLl9wcml2YXRlO1xuICAgICAgICAgIGRlX3AuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgICAgIGRlX3AucnNjcmF0Y2guaW5EcmFnTGF5ZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgX3N0YXJ0ID0gci50b3VjaERhdGEuc3RhcnQ7IC8vICh4MiwgeTIpIGZvciBmaW5nZXJzIDEgYW5kIDJcblxuICAgICAgdmFyIGYxeDIgPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIG9mZnNldExlZnQsXG4gICAgICAgICAgZjF5MiA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgdmFyIGYyeDIgPSBlLnRvdWNoZXNbMV0uY2xpZW50WCAtIG9mZnNldExlZnQsXG4gICAgICAgICAgZjJ5MiA9IGUudG91Y2hlc1sxXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgdmFyIGRpc3RhbmNlMiA9IGRpc3RhbmNlKGYxeDIsIGYxeTIsIGYyeDIsIGYyeTIpOyAvLyB2YXIgZGlzdGFuY2UyU3EgPSBkaXN0YW5jZVNxKCBmMXgyLCBmMXkyLCBmMngyLCBmMnkyICk7XG4gICAgICAvLyB2YXIgZmFjdG9yID0gTWF0aC5zcXJ0KCBkaXN0YW5jZTJTcSApIC8gTWF0aC5zcXJ0KCBkaXN0YW5jZTFTcSApO1xuXG4gICAgICB2YXIgZmFjdG9yID0gZGlzdGFuY2UyIC8gZGlzdGFuY2UxO1xuXG4gICAgICBpZiAodHdvRmluZ2Vyc1N0YXJ0SW5zaWRlKSB7XG4gICAgICAgIC8vIGRlbHRhIGZpbmdlcjFcbiAgICAgICAgdmFyIGRmMXggPSBmMXgyIC0gZjF4MTtcbiAgICAgICAgdmFyIGRmMXkgPSBmMXkyIC0gZjF5MTsgLy8gZGVsdGEgZmluZ2VyIDJcblxuICAgICAgICB2YXIgZGYyeCA9IGYyeDIgLSBmMngxO1xuICAgICAgICB2YXIgZGYyeSA9IGYyeTIgLSBmMnkxOyAvLyB0cmFuc2xhdGlvbiBpcyB0aGUgbm9ybWFsaXNlZCB2ZWN0b3Igb2YgdGhlIHR3byBmaW5nZXJzIG1vdmVtZW50XG4gICAgICAgIC8vIGkuZS4gc28gcGluY2hpbmcgY2FuY2VscyBvdXQgYW5kIG1vdmluZyB0b2dldGhlciBwYW5zXG5cbiAgICAgICAgdmFyIHR4ID0gKGRmMXggKyBkZjJ4KSAvIDI7XG4gICAgICAgIHZhciB0eSA9IChkZjF5ICsgZGYyeSkgLyAyOyAvLyBub3cgY2FsY3VsYXRlIHRoZSB6b29tXG5cbiAgICAgICAgdmFyIHpvb20xID0gY3kuem9vbSgpO1xuICAgICAgICB2YXIgem9vbTIgPSB6b29tMSAqIGZhY3RvcjtcbiAgICAgICAgdmFyIHBhbjEgPSBjeS5wYW4oKTsgLy8gdGhlIG1vZGVsIGNlbnRlciBwb2ludCBjb252ZXJ0ZWQgdG8gdGhlIGN1cnJlbnQgcmVuZGVyZWQgcG9zXG5cbiAgICAgICAgdmFyIGN0cnggPSBtb2RlbENlbnRlcjFbMF0gKiB6b29tMSArIHBhbjEueDtcbiAgICAgICAgdmFyIGN0cnkgPSBtb2RlbENlbnRlcjFbMV0gKiB6b29tMSArIHBhbjEueTtcbiAgICAgICAgdmFyIHBhbjIgPSB7XG4gICAgICAgICAgeDogLXpvb20yIC8gem9vbTEgKiAoY3RyeCAtIHBhbjEueCAtIHR4KSArIGN0cngsXG4gICAgICAgICAgeTogLXpvb20yIC8gem9vbTEgKiAoY3RyeSAtIHBhbjEueSAtIHR5KSArIGN0cnlcbiAgICAgICAgfTsgLy8gcmVtb3ZlIGRyYWdnZWQgZWxlc1xuXG4gICAgICAgIGlmIChfc3RhcnQgJiYgX3N0YXJ0LmFjdGl2ZSgpKSB7XG4gICAgICAgICAgdmFyIGRyYWdnZWRFbGVzID0gci5kcmFnRGF0YS50b3VjaERyYWdFbGVzO1xuICAgICAgICAgIGZyZWVEcmFnZ2VkRWxlbWVudHMoZHJhZ2dlZEVsZXMpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuXG4gICAgICAgICAgX3N0YXJ0LnVuYWN0aXZhdGUoKS5lbWl0KCdmcmVlb24nKTtcblxuICAgICAgICAgIGRyYWdnZWRFbGVzLmVtaXQoJ2ZyZWUnKTtcblxuICAgICAgICAgIGlmIChyLmRyYWdEYXRhLmRpZERyYWcpIHtcbiAgICAgICAgICAgIF9zdGFydC5lbWl0KCdkcmFnZnJlZW9uJyk7XG5cbiAgICAgICAgICAgIGRyYWdnZWRFbGVzLmVtaXQoJ2RyYWdmcmVlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY3kudmlld3BvcnQoe1xuICAgICAgICAgIHpvb206IHpvb20yLFxuICAgICAgICAgIHBhbjogcGFuMixcbiAgICAgICAgICBjYW5jZWxPbkZhaWxlZFpvb206IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGN5LmVtaXQoJ3BpbmNoem9vbScpO1xuICAgICAgICBkaXN0YW5jZTEgPSBkaXN0YW5jZTI7XG4gICAgICAgIGYxeDEgPSBmMXgyO1xuICAgICAgICBmMXkxID0gZjF5MjtcbiAgICAgICAgZjJ4MSA9IGYyeDI7XG4gICAgICAgIGYyeTEgPSBmMnkyO1xuICAgICAgICByLnBpbmNoaW5nID0gdHJ1ZTtcbiAgICAgIH0gLy8gUmUtcHJvamVjdFxuXG5cbiAgICAgIGlmIChlLnRvdWNoZXNbMF0pIHtcbiAgICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMF0uY2xpZW50WCwgZS50b3VjaGVzWzBdLmNsaWVudFkpO1xuICAgICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICAgIG5vd1sxXSA9IHBvc1sxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1sxXS5jbGllbnRYLCBlLnRvdWNoZXNbMV0uY2xpZW50WSk7XG4gICAgICAgIG5vd1syXSA9IHBvc1swXTtcbiAgICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgICAgfVxuXG4gICAgICBpZiAoZS50b3VjaGVzWzJdKSB7XG4gICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgICAgbm93WzRdID0gcG9zWzBdO1xuICAgICAgICBub3dbNV0gPSBwb3NbMV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlLnRvdWNoZXNbMF0gJiYgIXIudG91Y2hEYXRhLmRpZFNlbGVjdCAvLyBkb24ndCBhbGxvdyBib3ggc2VsZWN0aW9uIHRvIGRlZ3JhZGUgdG8gc2luZ2xlIGZpbmdlciBldmVudHMgbGlrZSBwYW5uaW5nXG4gICAgKSB7XG4gICAgICAgIHZhciBzdGFydCA9IHIudG91Y2hEYXRhLnN0YXJ0O1xuICAgICAgICB2YXIgbGFzdCA9IHIudG91Y2hEYXRhLmxhc3Q7XG4gICAgICAgIHZhciBuZWFyO1xuXG4gICAgICAgIGlmICghci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzICYmICFyLnN3aXBlUGFubmluZykge1xuICAgICAgICAgIG5lYXIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2FwdHVyZSAmJiBzdGFydCAhPSBudWxsKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IC8vIGRyYWdnaW5nIG5vZGVzXG5cblxuICAgICAgICBpZiAoY2FwdHVyZSAmJiBzdGFydCAhPSBudWxsICYmIHIubm9kZUlzRHJhZ2dhYmxlKHN0YXJ0KSkge1xuICAgICAgICAgIGlmIChpc092ZXJUaHJlc2hvbGREcmFnKSB7XG4gICAgICAgICAgICAvLyB0aGVuIGRyYWdnaW5nIGNhbiBoYXBwZW5cbiAgICAgICAgICAgIHZhciBkcmFnZ2VkRWxlcyA9IHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcztcbiAgICAgICAgICAgIHZhciBqdXN0U3RhcnRlZERyYWcgPSAhci5kcmFnRGF0YS5kaWREcmFnO1xuXG4gICAgICAgICAgICBpZiAoanVzdFN0YXJ0ZWREcmFnKSB7XG4gICAgICAgICAgICAgIGFkZE5vZGVzVG9EcmFnKGRyYWdnZWRFbGVzLCB7XG4gICAgICAgICAgICAgICAgaW5EcmFnTGF5ZXI6IHRydWVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIuZHJhZ0RhdGEuZGlkRHJhZyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgdG90YWxTaGlmdCA9IHtcbiAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKG51bWJlcihkaXNwWzBdKSAmJiBudW1iZXIoZGlzcFsxXSkpIHtcbiAgICAgICAgICAgICAgdG90YWxTaGlmdC54ICs9IGRpc3BbMF07XG4gICAgICAgICAgICAgIHRvdGFsU2hpZnQueSArPSBkaXNwWzFdO1xuXG4gICAgICAgICAgICAgIGlmIChqdXN0U3RhcnRlZERyYWcpIHtcbiAgICAgICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB2YXIgZHJhZ0RlbHRhID0gci50b3VjaERhdGEuZHJhZ0RlbHRhO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRyYWdEZWx0YSAmJiBudW1iZXIoZHJhZ0RlbHRhWzBdKSAmJiBudW1iZXIoZHJhZ0RlbHRhWzFdKSkge1xuICAgICAgICAgICAgICAgICAgdG90YWxTaGlmdC54ICs9IGRyYWdEZWx0YVswXTtcbiAgICAgICAgICAgICAgICAgIHRvdGFsU2hpZnQueSArPSBkcmFnRGVsdGFbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyA9IHRydWU7XG4gICAgICAgICAgICBkcmFnZ2VkRWxlcy5zaWxlbnRTaGlmdCh0b3RhbFNoaWZ0KS5lbWl0KCdwb3NpdGlvbiBkcmFnJyk7XG4gICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0UG9zaXRpb25bMF0gPT0gZWFybGllclswXSAmJiByLnRvdWNoRGF0YS5zdGFydFBvc2l0aW9uWzFdID09IGVhcmxpZXJbMV0pIHtcbiAgICAgICAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG90aGVyaXNlIGtlZXAgdHJhY2sgb2YgZHJhZyBkZWx0YSBmb3IgbGF0ZXJcbiAgICAgICAgICAgIHZhciBkcmFnRGVsdGEgPSByLnRvdWNoRGF0YS5kcmFnRGVsdGEgPSByLnRvdWNoRGF0YS5kcmFnRGVsdGEgfHwgW107XG5cbiAgICAgICAgICAgIGlmIChkcmFnRGVsdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIGRyYWdEZWx0YS5wdXNoKGRpc3BbMF0pO1xuICAgICAgICAgICAgICBkcmFnRGVsdGEucHVzaChkaXNwWzFdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRyYWdEZWx0YVswXSArPSBkaXNwWzBdO1xuICAgICAgICAgICAgICBkcmFnRGVsdGFbMV0gKz0gZGlzcFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gdG91Y2htb3ZlXG5cblxuICAgICAgICB7XG4gICAgICAgICAgdHJpZ2dlckV2ZW50cyhzdGFydCB8fCBuZWFyLCBbJ3RvdWNobW92ZScsICd0YXBkcmFnJywgJ3Ztb3VzZW1vdmUnXSwgZSwge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoKCFzdGFydCB8fCAhc3RhcnQuZ3JhYmJlZCgpKSAmJiBuZWFyICE9IGxhc3QpIHtcbiAgICAgICAgICAgIGlmIChsYXN0KSB7XG4gICAgICAgICAgICAgIGxhc3QuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGFwZHJhZ291dCcsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgICAgICAgIG5lYXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGFwZHJhZ292ZXInLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHIudG91Y2hEYXRhLmxhc3QgPSBuZWFyO1xuICAgICAgICB9IC8vIGNoZWNrIHRvIGNhbmNlbCB0YXBob2xkXG5cbiAgICAgICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vdy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKG5vd1tpXSAmJiByLnRvdWNoRGF0YS5zdGFydFBvc2l0aW9uW2ldICYmIGlzT3ZlclRocmVzaG9sZERyYWcpIHtcbiAgICAgICAgICAgICAgci50b3VjaERhdGEuc2luZ2xlVG91Y2hNb3ZlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIHBhbm5pbmdcblxuXG4gICAgICAgIGlmIChjYXB0dXJlICYmIChzdGFydCA9PSBudWxsIHx8IHN0YXJ0LnBhbm5hYmxlKCkpICYmIGN5LnBhbm5pbmdFbmFibGVkKCkgJiYgY3kudXNlclBhbm5pbmdFbmFibGVkKCkpIHtcbiAgICAgICAgICB2YXIgYWxsb3dQYXNzdGhyb3VnaCA9IGFsbG93UGFubmluZ1Bhc3N0aHJvdWdoKHN0YXJ0LCByLnRvdWNoRGF0YS5zdGFydHMpO1xuXG4gICAgICAgICAgaWYgKGFsbG93UGFzc3Rocm91Z2gpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgaWYgKCFyLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24pIHtcbiAgICAgICAgICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gYXJyYXkycG9pbnQoci50b3VjaERhdGEuc3RhcnRQb3NpdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyLnN3aXBlUGFubmluZykge1xuICAgICAgICAgICAgICBjeS5wYW5CeSh7XG4gICAgICAgICAgICAgICAgeDogZGlzcFswXSAqIHpvb20sXG4gICAgICAgICAgICAgICAgeTogZGlzcFsxXSAqIHpvb21cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGN5LmVtaXQoJ2RyYWdwYW4nKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICAgICAgICByLnN3aXBlUGFubmluZyA9IHRydWU7XG4gICAgICAgICAgICAgIGN5LnBhbkJ5KHtcbiAgICAgICAgICAgICAgICB4OiBkeCAqIHpvb20sXG4gICAgICAgICAgICAgICAgeTogZHkgKiB6b29tXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjeS5lbWl0KCdkcmFncGFuJyk7XG5cbiAgICAgICAgICAgICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgc3RhcnQudW5hY3RpdmF0ZSgpO1xuICAgICAgICAgICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyBSZS1wcm9qZWN0XG5cblxuICAgICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZKTtcbiAgICAgICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICAgICAgbm93WzFdID0gcG9zWzFdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgZWFybGllcltqXSA9IG5vd1tqXTtcbiAgICB9IC8vIHRoZSBhY3RpdmUgYmcgaW5kaWNhdG9yIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gbWFraW5nIGEgc3dpcGUgdGhhdCBpcyBuZWl0aGVyIGZvciBkcmFnZ2luZyBub2RlcyBvciBwYW5uaW5nXG5cblxuICAgIGlmIChjYXB0dXJlICYmIGUudG91Y2hlcy5sZW5ndGggPiAwICYmICFyLmhvdmVyRGF0YS5kcmFnZ2luZ0VsZXMgJiYgIXIuc3dpcGVQYW5uaW5nICYmIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiAhPSBudWxsKSB7XG4gICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgci5yZWRyYXcoKTtcbiAgICB9XG4gIH0sIGZhbHNlKTtcbiAgdmFyIHRvdWNoY2FuY2VsSGFuZGxlcjtcbiAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAndG91Y2hjYW5jZWwnLCB0b3VjaGNhbmNlbEhhbmRsZXIgPSBmdW5jdGlvbiB0b3VjaGNhbmNlbEhhbmRsZXIoZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB2YXIgc3RhcnQgPSByLnRvdWNoRGF0YS5zdGFydDtcbiAgICByLnRvdWNoRGF0YS5jYXB0dXJlID0gZmFsc2U7XG5cbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHN0YXJ0LnVuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgdG91Y2hlbmRIYW5kbGVyLCBkaWREb3VibGVUb3VjaCwgdG91Y2hUaW1lb3V0LCBwcmV2VG91Y2hUaW1lU3RhbXA7XG4gIHIucmVnaXN0ZXJCaW5kaW5nKHdpbmRvdywgJ3RvdWNoZW5kJywgdG91Y2hlbmRIYW5kbGVyID0gZnVuY3Rpb24gdG91Y2hlbmRIYW5kbGVyKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdmFyIHN0YXJ0ID0gci50b3VjaERhdGEuc3RhcnQ7XG4gICAgdmFyIGNhcHR1cmUgPSByLnRvdWNoRGF0YS5jYXB0dXJlO1xuXG4gICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHIudG91Y2hEYXRhLmNhcHR1cmUgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgIHIuc3dpcGVQYW5uaW5nID0gZmFsc2U7XG4gICAgci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzID0gZmFsc2U7XG4gICAgdmFyIGN5ID0gci5jeTtcbiAgICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgICB2YXIgbm93ID0gci50b3VjaERhdGEubm93O1xuICAgIHZhciBlYXJsaWVyID0gci50b3VjaERhdGEuZWFybGllcjtcblxuICAgIGlmIChlLnRvdWNoZXNbMF0pIHtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZKTtcbiAgICAgIG5vd1swXSA9IHBvc1swXTtcbiAgICAgIG5vd1sxXSA9IHBvc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoZS50b3VjaGVzWzFdKSB7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1sxXS5jbGllbnRYLCBlLnRvdWNoZXNbMV0uY2xpZW50WSk7XG4gICAgICBub3dbMl0gPSBwb3NbMF07XG4gICAgICBub3dbM10gPSBwb3NbMV07XG4gICAgfVxuXG4gICAgaWYgKGUudG91Y2hlc1syXSkge1xuICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMl0uY2xpZW50WCwgZS50b3VjaGVzWzJdLmNsaWVudFkpO1xuICAgICAgbm93WzRdID0gcG9zWzBdO1xuICAgICAgbm93WzVdID0gcG9zWzFdO1xuICAgIH1cblxuICAgIGlmIChzdGFydCkge1xuICAgICAgc3RhcnQudW5hY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIHZhciBjdHhUYXBlbmQ7XG5cbiAgICBpZiAoci50b3VjaERhdGEuY3h0KSB7XG4gICAgICBjdHhUYXBlbmQgPSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6ICdjeHR0YXBlbmQnLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgIHN0YXJ0LmVtaXQoY3R4VGFwZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN5LmVtaXQoY3R4VGFwZW5kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyLnRvdWNoRGF0YS5jeHREcmFnZ2VkKSB7XG4gICAgICAgIHZhciBjdHhUYXAgPSB7XG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICB0eXBlOiAnY3h0dGFwJyxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzdGFydCkge1xuICAgICAgICAgIHN0YXJ0LmVtaXQoY3R4VGFwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjeS5lbWl0KGN0eFRhcCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0KSB7XG4gICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0Ll9wcml2YXRlLmdyYWJiZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgci50b3VjaERhdGEuY3h0ID0gZmFsc2U7XG4gICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG51bGw7XG4gICAgICByLnJlZHJhdygpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gbm8gbW9yZSBib3ggc2VsZWN0aW9uIGlmIHdlIGRvbid0IGhhdmUgdGhyZWUgZmluZ2Vyc1xuXG5cbiAgICBpZiAoIWUudG91Y2hlc1syXSAmJiBjeS5ib3hTZWxlY3Rpb25FbmFibGVkKCkgJiYgci50b3VjaERhdGEuc2VsZWN0aW5nKSB7XG4gICAgICByLnRvdWNoRGF0YS5zZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgIHZhciBib3ggPSBjeS5jb2xsZWN0aW9uKHIuZ2V0QWxsSW5Cb3goc2VsZWN0WzBdLCBzZWxlY3RbMV0sIHNlbGVjdFsyXSwgc2VsZWN0WzNdKSk7XG4gICAgICBzZWxlY3RbMF0gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbMV0gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbMl0gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbM10gPSB1bmRlZmluZWQ7XG4gICAgICBzZWxlY3RbNF0gPSAwO1xuICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgIGN5LmVtaXQoe1xuICAgICAgICB0eXBlOiAnYm94ZW5kJyxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgeTogbm93WzFdXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB2YXIgZWxlV291bGRCZVNlbGVjdGVkID0gZnVuY3Rpb24gZWxlV291bGRCZVNlbGVjdGVkKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLnNlbGVjdGFibGUoKSAmJiAhZWxlLnNlbGVjdGVkKCk7XG4gICAgICB9O1xuXG4gICAgICBib3guZW1pdCgnYm94Jykuc3RkRmlsdGVyKGVsZVdvdWxkQmVTZWxlY3RlZCkuc2VsZWN0KCkuZW1pdCgnYm94c2VsZWN0Jyk7XG5cbiAgICAgIGlmIChib3gubm9uZW1wdHkoKSkge1xuICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgci5yZWRyYXcoKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgIT0gbnVsbCkge1xuICAgICAgc3RhcnQudW5hY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIGlmIChlLnRvdWNoZXNbMl0pIHtcbiAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChlLnRvdWNoZXNbMV0pIDsgZWxzZSBpZiAoZS50b3VjaGVzWzBdKSA7IGVsc2UgaWYgKCFlLnRvdWNoZXNbMF0pIHtcbiAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICB2YXIgZHJhZ2dlZEVsZXMgPSByLmRyYWdEYXRhLnRvdWNoRHJhZ0VsZXM7XG5cbiAgICAgIGlmIChzdGFydCAhPSBudWxsKSB7XG4gICAgICAgIHZhciBzdGFydFdhc0dyYWJiZWQgPSBzdGFydC5fcHJpdmF0ZS5ncmFiYmVkO1xuICAgICAgICBmcmVlRHJhZ2dlZEVsZW1lbnRzKGRyYWdnZWRFbGVzKTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdkcmFnJywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuXG4gICAgICAgIGlmIChzdGFydFdhc0dyYWJiZWQpIHtcbiAgICAgICAgICBzdGFydC5lbWl0KCdmcmVlb24nKTtcbiAgICAgICAgICBkcmFnZ2VkRWxlcy5lbWl0KCdmcmVlJyk7XG5cbiAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICBzdGFydC5lbWl0KCdkcmFnZnJlZW9uJyk7XG4gICAgICAgICAgICBkcmFnZ2VkRWxlcy5lbWl0KCdkcmFnZnJlZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRyaWdnZXJFdmVudHMoc3RhcnQsIFsndG91Y2hlbmQnLCAndGFwZW5kJywgJ3Ztb3VzZXVwJywgJ3RhcGRyYWdvdXQnXSwgZSwge1xuICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXJ0LnVuYWN0aXZhdGUoKTtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5lYXIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHRyaWdnZXJFdmVudHMobmVhciwgWyd0b3VjaGVuZCcsICd0YXBlbmQnLCAndm1vdXNldXAnLCAndGFwZHJhZ291dCddLCBlLCB7XG4gICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGR4ID0gci50b3VjaERhdGEuc3RhcnRQb3NpdGlvblswXSAtIG5vd1swXTtcbiAgICAgIHZhciBkeDIgPSBkeCAqIGR4O1xuICAgICAgdmFyIGR5ID0gci50b3VjaERhdGEuc3RhcnRQb3NpdGlvblsxXSAtIG5vd1sxXTtcbiAgICAgIHZhciBkeTIgPSBkeSAqIGR5O1xuICAgICAgdmFyIGRpc3QyID0gZHgyICsgZHkyO1xuICAgICAgdmFyIHJkaXN0MiA9IGRpc3QyICogem9vbSAqIHpvb207IC8vIFRhcCBldmVudCwgcm91Z2hseSBzYW1lIGFzIG1vdXNlIGNsaWNrIGV2ZW50IGZvciB0b3VjaFxuXG4gICAgICBpZiAoIXIudG91Y2hEYXRhLnNpbmdsZVRvdWNoTW92ZWQpIHtcbiAgICAgICAgaWYgKCFzdGFydCkge1xuICAgICAgICAgIGN5LiQoJzpzZWxlY3RlZCcpLnVuc2VsZWN0KFsndGFwdW5zZWxlY3QnXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0cmlnZ2VyRXZlbnRzKHN0YXJ0LCBbJ3RhcCcsICd2Y2xpY2snXSwgZSwge1xuICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgfSk7XG4gICAgICAgIGRpZERvdWJsZVRvdWNoID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGUudGltZVN0YW1wIC0gcHJldlRvdWNoVGltZVN0YW1wIDw9IGN5Lm11bHRpQ2xpY2tEZWJvdW5jZVRpbWUoKSkge1xuICAgICAgICAgIHRvdWNoVGltZW91dCAmJiBjbGVhclRpbWVvdXQodG91Y2hUaW1lb3V0KTtcbiAgICAgICAgICBkaWREb3VibGVUb3VjaCA9IHRydWU7XG4gICAgICAgICAgcHJldlRvdWNoVGltZVN0YW1wID0gbnVsbDtcbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzKHN0YXJ0LCBbJ2RibHRhcCcsICd2ZGJsY2xpY2snXSwgZSwge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG91Y2hUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZGlkRG91YmxlVG91Y2gpIHJldHVybjtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudHMoc3RhcnQsIFsnb25ldGFwJywgJ3ZvbmVjbGljayddLCBlLCB7XG4gICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCBjeS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lKCkpO1xuICAgICAgICAgIHByZXZUb3VjaFRpbWVTdGFtcCA9IGUudGltZVN0YW1wO1xuICAgICAgICB9XG4gICAgICB9IC8vIFByZXBhcmUgdG8gc2VsZWN0IHRoZSBjdXJyZW50bHkgdG91Y2hlZCBub2RlLCBvbmx5IGlmIGl0IGhhc24ndCBiZWVuIGRyYWdnZWQgcGFzdCBhIGNlcnRhaW4gZGlzdGFuY2VcblxuXG4gICAgICBpZiAoc3RhcnQgIT0gbnVsbCAmJiAhci5kcmFnRGF0YS5kaWREcmFnIC8vIGRpZG4ndCBkcmFnIG5vZGVzIGFyb3VuZFxuICAgICAgJiYgc3RhcnQuX3ByaXZhdGUuc2VsZWN0YWJsZSAmJiByZGlzdDIgPCByLnRvdWNoVGFwVGhyZXNob2xkMiAmJiAhci5waW5jaGluZyAvLyBwaW5jaCB0byB6b29tIHNob3VsZCBub3QgYWZmZWN0IHNlbGVjdGlvblxuICAgICAgKSB7XG4gICAgICAgICAgaWYgKGN5LnNlbGVjdGlvblR5cGUoKSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIGN5LiQoaXNTZWxlY3RlZCkudW5tZXJnZShzdGFydCkudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcbiAgICAgICAgICAgIHN0YXJ0LnNlbGVjdChbJ3RhcHNlbGVjdCddKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHN0YXJ0LnNlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgICAgc3RhcnQudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0YXJ0LnNlbGVjdChbJ3RhcHNlbGVjdCddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICByLnRvdWNoRGF0YS5zaW5nbGVUb3VjaE1vdmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgZWFybGllcltqXSA9IG5vd1tqXTtcbiAgICB9XG5cbiAgICByLmRyYWdEYXRhLmRpZERyYWcgPSBmYWxzZTsgLy8gcmVzZXQgZm9yIG5leHQgdG91Y2hzdGFydFxuXG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHIudG91Y2hEYXRhLmRyYWdEZWx0YSA9IFtdO1xuICAgICAgci50b3VjaERhdGEuc3RhcnRQb3NpdGlvbiA9IG51bGw7XG4gICAgICByLnRvdWNoRGF0YS5zdGFydEdQb3NpdGlvbiA9IG51bGw7XG4gICAgICByLnRvdWNoRGF0YS5kaWRTZWxlY3QgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIC8vIHRoZSBvbGQgc3RhcnQgZ2xvYmFsIHBvcyduIG1heSBub3QgYmUgdGhlIHNhbWUgZmluZ2VyIHRoYXQgcmVtYWluc1xuICAgICAgICByLnRvdWNoRGF0YS5zdGFydEdQb3NpdGlvbiA9IFtlLnRvdWNoZXNbMF0uY2xpZW50WCwgZS50b3VjaGVzWzBdLmNsaWVudFldO1xuICAgICAgfVxuXG4gICAgICByLnBpbmNoaW5nID0gZmFsc2U7XG4gICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgIHIucmVkcmF3KCk7XG4gICAgfSAvL3IucmVkcmF3KCk7XG5cbiAgfSwgZmFsc2UpOyAvLyBmYWxsYmFjayBjb21wYXRpYmlsaXR5IGxheWVyIGZvciBtcyBwb2ludGVyIGV2ZW50c1xuXG4gIGlmICh0eXBlb2YgVG91Y2hFdmVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgcG9pbnRlcnMgPSBbXTtcblxuICAgIHZhciBtYWtlVG91Y2ggPSBmdW5jdGlvbiBtYWtlVG91Y2goZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xpZW50WDogZS5jbGllbnRYLFxuICAgICAgICBjbGllbnRZOiBlLmNsaWVudFksXG4gICAgICAgIGZvcmNlOiAxLFxuICAgICAgICBpZGVudGlmaWVyOiBlLnBvaW50ZXJJZCxcbiAgICAgICAgcGFnZVg6IGUucGFnZVgsXG4gICAgICAgIHBhZ2VZOiBlLnBhZ2VZLFxuICAgICAgICByYWRpdXNYOiBlLndpZHRoIC8gMixcbiAgICAgICAgcmFkaXVzWTogZS5oZWlnaHQgLyAyLFxuICAgICAgICBzY3JlZW5YOiBlLnNjcmVlblgsXG4gICAgICAgIHNjcmVlblk6IGUuc2NyZWVuWSxcbiAgICAgICAgdGFyZ2V0OiBlLnRhcmdldFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdmFyIG1ha2VQb2ludGVyID0gZnVuY3Rpb24gbWFrZVBvaW50ZXIoZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIHRvdWNoOiBtYWtlVG91Y2goZSlcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHZhciBhZGRQb2ludGVyID0gZnVuY3Rpb24gYWRkUG9pbnRlcihlKSB7XG4gICAgICBwb2ludGVycy5wdXNoKG1ha2VQb2ludGVyKGUpKTtcbiAgICB9O1xuXG4gICAgdmFyIHJlbW92ZVBvaW50ZXIgPSBmdW5jdGlvbiByZW1vdmVQb2ludGVyKGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHAgPSBwb2ludGVyc1tpXTtcblxuICAgICAgICBpZiAocC5ldmVudC5wb2ludGVySWQgPT09IGUucG9pbnRlcklkKSB7XG4gICAgICAgICAgcG9pbnRlcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgdXBkYXRlUG9pbnRlciA9IGZ1bmN0aW9uIHVwZGF0ZVBvaW50ZXIoZSkge1xuICAgICAgdmFyIHAgPSBwb2ludGVycy5maWx0ZXIoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAuZXZlbnQucG9pbnRlcklkID09PSBlLnBvaW50ZXJJZDtcbiAgICAgIH0pWzBdO1xuICAgICAgcC5ldmVudCA9IGU7XG4gICAgICBwLnRvdWNoID0gbWFrZVRvdWNoKGUpO1xuICAgIH07XG5cbiAgICB2YXIgYWRkVG91Y2hlc1RvRXZlbnQgPSBmdW5jdGlvbiBhZGRUb3VjaGVzVG9FdmVudChlKSB7XG4gICAgICBlLnRvdWNoZXMgPSBwb2ludGVycy5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAudG91Y2g7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdmFyIHBvaW50ZXJJc01vdXNlID0gZnVuY3Rpb24gcG9pbnRlcklzTW91c2UoZSkge1xuICAgICAgcmV0dXJuIGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScgfHwgZS5wb2ludGVyVHlwZSA9PT0gNDtcbiAgICB9O1xuXG4gICAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdwb2ludGVyZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAocG9pbnRlcklzTW91c2UoZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBtb3VzZSBhbHJlYWR5IGhhbmRsZWRcblxuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBhZGRQb2ludGVyKGUpO1xuICAgICAgYWRkVG91Y2hlc1RvRXZlbnQoZSk7XG4gICAgICB0b3VjaHN0YXJ0SGFuZGxlcihlKTtcbiAgICB9KTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ3BvaW50ZXJ1cCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAocG9pbnRlcklzTW91c2UoZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBtb3VzZSBhbHJlYWR5IGhhbmRsZWRcblxuXG4gICAgICByZW1vdmVQb2ludGVyKGUpO1xuICAgICAgYWRkVG91Y2hlc1RvRXZlbnQoZSk7XG4gICAgICB0b3VjaGVuZEhhbmRsZXIoZSk7XG4gICAgfSk7XG4gICAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdwb2ludGVyY2FuY2VsJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChwb2ludGVySXNNb3VzZShlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIG1vdXNlIGFscmVhZHkgaGFuZGxlZFxuXG5cbiAgICAgIHJlbW92ZVBvaW50ZXIoZSk7XG4gICAgICBhZGRUb3VjaGVzVG9FdmVudChlKTtcbiAgICAgIHRvdWNoY2FuY2VsSGFuZGxlcihlKTtcbiAgICB9KTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ3BvaW50ZXJtb3ZlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChwb2ludGVySXNNb3VzZShlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIG1vdXNlIGFscmVhZHkgaGFuZGxlZFxuXG5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHVwZGF0ZVBvaW50ZXIoZSk7XG4gICAgICBhZGRUb3VjaGVzVG9FdmVudChlKTtcbiAgICAgIHRvdWNobW92ZUhhbmRsZXIoZSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbnZhciBCUnAkZCA9IHt9O1xuXG5CUnAkZC5nZW5lcmF0ZVBvbHlnb24gPSBmdW5jdGlvbiAobmFtZSwgcG9pbnRzKSB7XG4gIHJldHVybiB0aGlzLm5vZGVTaGFwZXNbbmFtZV0gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogbmFtZSxcbiAgICBwb2ludHM6IHBvaW50cyxcbiAgICBkcmF3OiBmdW5jdGlvbiBkcmF3KGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIubm9kZVNoYXBlSW1wbCgncG9seWdvbicsIGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHRoaXMucG9pbnRzKTtcbiAgICB9LFxuICAgIGludGVyc2VjdExpbmU6IGZ1bmN0aW9uIGludGVyc2VjdExpbmUobm9kZVgsIG5vZGVZLCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCBwYWRkaW5nKSB7XG4gICAgICByZXR1cm4gcG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgdGhpcy5wb2ludHMsIG5vZGVYLCBub2RlWSwgd2lkdGggLyAyLCBoZWlnaHQgLyAyLCBwYWRkaW5nKTtcbiAgICB9LFxuICAgIGNoZWNrUG9pbnQ6IGZ1bmN0aW9uIGNoZWNrUG9pbnQoeCwgeSwgcGFkZGluZywgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgcmV0dXJuIHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZyk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVFbGxpcHNlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzWydlbGxpcHNlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ2VsbGlwc2UnLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgcmV0dXJuIGludGVyc2VjdExpbmVFbGxpcHNlKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGggLyAyICsgcGFkZGluZywgaGVpZ2h0IC8gMiArIHBhZGRpbmcpO1xuICAgIH0sXG4gICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICByZXR1cm4gY2hlY2tJbkVsbGlwc2UoeCwgeSwgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSwgcGFkZGluZyk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVSb3VuZFBvbHlnb24gPSBmdW5jdGlvbiAobmFtZSwgcG9pbnRzKSB7XG4gIC8vIFByZS1jb21wdXRlIGNvbnRyb2wgcG9pbnRzXG4gIC8vIFNpbmNlIHRoZXNlIHBvaW50cyBkZXBlbmQgb24gdGhlIHJhZGl1cyBsZW5ndGggKHdoaWNoIGluIHR1cm5zIGRlcGVuZCBvbiB0aGUgd2lkdGgvaGVpZ2h0IG9mIHRoZSBub2RlKSB3ZSB3aWxsIG9ubHkgcHJlLWNvbXB1dGVcbiAgLy8gdGhlIHVuaXQgdmVjdG9ycy5cbiAgLy8gRm9yIHNpbXBsaWNpdHkgdGhlIGxheW91dCB3aWxsIGJlOlxuICAvLyBbIHAwLCBVbml0VmVjdG9yUDBQMSwgcDEsIFVuaVZlY3RvclAxUDIsIC4uLiwgcG4sIFVuaXRWZWN0b3JQblAwIF1cbiAgdmFyIGFsbFBvaW50cyA9IG5ldyBBcnJheShwb2ludHMubGVuZ3RoICogMik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZUluZGV4ID0gaSAqIDI7XG4gICAgdmFyIGRlc3RJbmRleCA9IHZvaWQgMDtcblxuICAgIGlmIChpIDwgcG9pbnRzLmxlbmd0aCAvIDIgLSAxKSB7XG4gICAgICBkZXN0SW5kZXggPSAoaSArIDEpICogMjtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVzdEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICBhbGxQb2ludHNbaSAqIDRdID0gcG9pbnRzW3NvdXJjZUluZGV4XTtcbiAgICBhbGxQb2ludHNbaSAqIDQgKyAxXSA9IHBvaW50c1tzb3VyY2VJbmRleCArIDFdO1xuICAgIHZhciB4RGVzdCA9IHBvaW50c1tkZXN0SW5kZXhdIC0gcG9pbnRzW3NvdXJjZUluZGV4XTtcbiAgICB2YXIgeURlc3QgPSBwb2ludHNbZGVzdEluZGV4ICsgMV0gLSBwb2ludHNbc291cmNlSW5kZXggKyAxXTtcbiAgICB2YXIgbm9ybSA9IE1hdGguc3FydCh4RGVzdCAqIHhEZXN0ICsgeURlc3QgKiB5RGVzdCk7XG4gICAgYWxsUG9pbnRzW2kgKiA0ICsgMl0gPSB4RGVzdCAvIG5vcm07XG4gICAgYWxsUG9pbnRzW2kgKiA0ICsgM10gPSB5RGVzdCAvIG5vcm07XG4gIH1cblxuICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzW25hbWVdID0ge1xuICAgIHJlbmRlcmVyOiB0aGlzLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgcG9pbnRzOiBhbGxQb2ludHMsXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwoJ3JvdW5kLXBvbHlnb24nLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0LCB0aGlzLnBvaW50cyk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgcmV0dXJuIHJvdW5kUG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgdGhpcy5wb2ludHMsIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBjaGVja1BvaW50OiBmdW5jdGlvbiBjaGVja1BvaW50KHgsIHksIHBhZGRpbmcsIHdpZHRoLCBoZWlnaHQsIGNlbnRlclgsIGNlbnRlclkpIHtcbiAgICAgIHJldHVybiBwb2ludEluc2lkZVJvdW5kUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVSb3VuZFJlY3RhbmdsZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubm9kZVNoYXBlc1sncm91bmQtcmVjdGFuZ2xlJ10gPSB0aGlzLm5vZGVTaGFwZXNbJ3JvdW5kcmVjdGFuZ2xlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ3JvdW5kLXJlY3RhbmdsZScsXG4gICAgcG9pbnRzOiBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNCwgMCksXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwodGhpcy5uYW1lLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9LFxuICAgIGludGVyc2VjdExpbmU6IGZ1bmN0aW9uIGludGVyc2VjdExpbmUobm9kZVgsIG5vZGVZLCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCBwYWRkaW5nKSB7XG4gICAgICByZXR1cm4gcm91bmRSZWN0YW5nbGVJbnRlcnNlY3RMaW5lKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgcGFkZGluZyk7XG4gICAgfSxcbiAgICBjaGVja1BvaW50OiBmdW5jdGlvbiBjaGVja1BvaW50KHgsIHksIHBhZGRpbmcsIHdpZHRoLCBoZWlnaHQsIGNlbnRlclgsIGNlbnRlclkpIHtcbiAgICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIHZhciBkaWFtID0gY29ybmVyUmFkaXVzICogMjsgLy8gQ2hlY2sgaEJveFxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gZGlhbSwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIENoZWNrIHZCb3hcblxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCAtIGRpYW0sIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIENoZWNrIHRvcCBsZWZ0IHF1YXJ0ZXIgY2lyY2xlXG5cblxuICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggLSB3aWR0aCAvIDIgKyBjb3JuZXJSYWRpdXMsIGNlbnRlclkgLSBoZWlnaHQgLyAyICsgY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgdG9wIHJpZ2h0IHF1YXJ0ZXIgY2lyY2xlXG5cblxuICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggKyB3aWR0aCAvIDIgLSBjb3JuZXJSYWRpdXMsIGNlbnRlclkgLSBoZWlnaHQgLyAyICsgY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgYm90dG9tIHJpZ2h0IHF1YXJ0ZXIgY2lyY2xlXG5cblxuICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggKyB3aWR0aCAvIDIgLSBjb3JuZXJSYWRpdXMsIGNlbnRlclkgKyBoZWlnaHQgLyAyIC0gY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgYm90dG9tIGxlZnQgcXVhcnRlciBjaXJjbGVcblxuXG4gICAgICBpZiAoY2hlY2tJbkVsbGlwc2UoeCwgeSwgZGlhbSwgZGlhbSwgY2VudGVyWCAtIHdpZHRoIC8gMiArIGNvcm5lclJhZGl1cywgY2VudGVyWSArIGhlaWdodCAvIDIgLSBjb3JuZXJSYWRpdXMsIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVDdXRSZWN0YW5nbGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLm5vZGVTaGFwZXNbJ2N1dC1yZWN0YW5nbGUnXSA9IHRoaXMubm9kZVNoYXBlc1snY3V0cmVjdGFuZ2xlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ2N1dC1yZWN0YW5nbGUnLFxuICAgIGNvcm5lckxlbmd0aDogZ2V0Q3V0UmVjdGFuZ2xlQ29ybmVyTGVuZ3RoKCksXG4gICAgcG9pbnRzOiBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNCwgMCksXG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwodGhpcy5uYW1lLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9LFxuICAgIGdlbmVyYXRlQ3V0VHJpYW5nbGVQdHM6IGZ1bmN0aW9uIGdlbmVyYXRlQ3V0VHJpYW5nbGVQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgdmFyIGNsID0gdGhpcy5jb3JuZXJMZW5ndGg7XG4gICAgICB2YXIgaGggPSBoZWlnaHQgLyAyO1xuICAgICAgdmFyIGh3ID0gd2lkdGggLyAyO1xuICAgICAgdmFyIHhCZWdpbiA9IGNlbnRlclggLSBodztcbiAgICAgIHZhciB4RW5kID0gY2VudGVyWCArIGh3O1xuICAgICAgdmFyIHlCZWdpbiA9IGNlbnRlclkgLSBoaDtcbiAgICAgIHZhciB5RW5kID0gY2VudGVyWSArIGhoOyAvLyBwb2ludHMgYXJlIGluIGNsb2Nrd2lzZSBvcmRlciwgaW5uZXIgKGltYWdpbmFyeSkgdHJpYW5nbGUgcHQgb24gWzQsIDVdXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvcExlZnQ6IFt4QmVnaW4sIHlCZWdpbiArIGNsLCB4QmVnaW4gKyBjbCwgeUJlZ2luLCB4QmVnaW4gKyBjbCwgeUJlZ2luICsgY2xdLFxuICAgICAgICB0b3BSaWdodDogW3hFbmQgLSBjbCwgeUJlZ2luLCB4RW5kLCB5QmVnaW4gKyBjbCwgeEVuZCAtIGNsLCB5QmVnaW4gKyBjbF0sXG4gICAgICAgIGJvdHRvbVJpZ2h0OiBbeEVuZCwgeUVuZCAtIGNsLCB4RW5kIC0gY2wsIHlFbmQsIHhFbmQgLSBjbCwgeUVuZCAtIGNsXSxcbiAgICAgICAgYm90dG9tTGVmdDogW3hCZWdpbiArIGNsLCB5RW5kLCB4QmVnaW4sIHlFbmQgLSBjbCwgeEJlZ2luICsgY2wsIHlFbmQgLSBjbF1cbiAgICAgIH07XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgdmFyIGNQdHMgPSB0aGlzLmdlbmVyYXRlQ3V0VHJpYW5nbGVQdHMod2lkdGggKyAyICogcGFkZGluZywgaGVpZ2h0ICsgMiAqIHBhZGRpbmcsIG5vZGVYLCBub2RlWSk7XG4gICAgICB2YXIgcHRzID0gW10uY29uY2F0LmFwcGx5KFtdLCBbY1B0cy50b3BMZWZ0LnNwbGljZSgwLCA0KSwgY1B0cy50b3BSaWdodC5zcGxpY2UoMCwgNCksIGNQdHMuYm90dG9tUmlnaHQuc3BsaWNlKDAsIDQpLCBjUHRzLmJvdHRvbUxlZnQuc3BsaWNlKDAsIDQpXSk7XG4gICAgICByZXR1cm4gcG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgcHRzLCBub2RlWCwgbm9kZVkpO1xuICAgIH0sXG4gICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICAvLyBDaGVjayBoQm94XG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gMiAqIHRoaXMuY29ybmVyTGVuZ3RoLCBbMCwgLTFdLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gQ2hlY2sgdkJveFxuXG5cbiAgICAgIGlmIChwb2ludEluc2lkZVBvbHlnb24oeCwgeSwgdGhpcy5wb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoIC0gMiAqIHRoaXMuY29ybmVyTGVuZ3RoLCBoZWlnaHQsIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgY3V0VHJpYW5nbGVQdHMgPSB0aGlzLmdlbmVyYXRlQ3V0VHJpYW5nbGVQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSk7XG4gICAgICByZXR1cm4gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIGN1dFRyaWFuZ2xlUHRzLnRvcExlZnQpIHx8IHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBjdXRUcmlhbmdsZVB0cy50b3BSaWdodCkgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIGN1dFRyaWFuZ2xlUHRzLmJvdHRvbVJpZ2h0KSB8fCBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgY3V0VHJpYW5nbGVQdHMuYm90dG9tTGVmdCk7XG4gICAgfVxuICB9O1xufTtcblxuQlJwJGQuZ2VuZXJhdGVCYXJyZWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLm5vZGVTaGFwZXNbJ2JhcnJlbCddID0ge1xuICAgIHJlbmRlcmVyOiB0aGlzLFxuICAgIG5hbWU6ICdiYXJyZWwnLFxuICAgIHBvaW50czogZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDQsIDApLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgLy8gdXNlIHR3byBmaXhlZCB0IHZhbHVlcyBmb3IgdGhlIGJlemllciBjdXJ2ZSBhcHByb3hpbWF0aW9uXG4gICAgICB2YXIgdDAgPSAwLjE1O1xuICAgICAgdmFyIHQxID0gMC41O1xuICAgICAgdmFyIHQyID0gMC44NTtcbiAgICAgIHZhciBiUHRzID0gdGhpcy5nZW5lcmF0ZUJhcnJlbEJlemllclB0cyh3aWR0aCArIDIgKiBwYWRkaW5nLCBoZWlnaHQgKyAyICogcGFkZGluZywgbm9kZVgsIG5vZGVZKTtcblxuICAgICAgdmFyIGFwcHJveGltYXRlQmFycmVsQ3VydmVQdHMgPSBmdW5jdGlvbiBhcHByb3hpbWF0ZUJhcnJlbEN1cnZlUHRzKHB0cykge1xuICAgICAgICAvLyBhcHByb3hpbWF0ZSBjdXJ2ZSBwdHMgYmFzZWQgb24gdGhlIHR3byB0IHZhbHVlc1xuICAgICAgICB2YXIgbTAgPSBxYmV6aWVyUHRBdCh7XG4gICAgICAgICAgeDogcHRzWzBdLFxuICAgICAgICAgIHk6IHB0c1sxXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgeDogcHRzWzJdLFxuICAgICAgICAgIHk6IHB0c1szXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgeDogcHRzWzRdLFxuICAgICAgICAgIHk6IHB0c1s1XVxuICAgICAgICB9LCB0MCk7XG4gICAgICAgIHZhciBtMSA9IHFiZXppZXJQdEF0KHtcbiAgICAgICAgICB4OiBwdHNbMF0sXG4gICAgICAgICAgeTogcHRzWzFdXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB4OiBwdHNbMl0sXG4gICAgICAgICAgeTogcHRzWzNdXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB4OiBwdHNbNF0sXG4gICAgICAgICAgeTogcHRzWzVdXG4gICAgICAgIH0sIHQxKTtcbiAgICAgICAgdmFyIG0yID0gcWJlemllclB0QXQoe1xuICAgICAgICAgIHg6IHB0c1swXSxcbiAgICAgICAgICB5OiBwdHNbMV1cbiAgICAgICAgfSwge1xuICAgICAgICAgIHg6IHB0c1syXSxcbiAgICAgICAgICB5OiBwdHNbM11cbiAgICAgICAgfSwge1xuICAgICAgICAgIHg6IHB0c1s0XSxcbiAgICAgICAgICB5OiBwdHNbNV1cbiAgICAgICAgfSwgdDIpO1xuICAgICAgICByZXR1cm4gW3B0c1swXSwgcHRzWzFdLCBtMC54LCBtMC55LCBtMS54LCBtMS55LCBtMi54LCBtMi55LCBwdHNbNF0sIHB0c1s1XV07XG4gICAgICB9O1xuXG4gICAgICB2YXIgcHRzID0gW10uY29uY2F0KGFwcHJveGltYXRlQmFycmVsQ3VydmVQdHMoYlB0cy50b3BMZWZ0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLnRvcFJpZ2h0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLmJvdHRvbVJpZ2h0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLmJvdHRvbUxlZnQpKTtcbiAgICAgIHJldHVybiBwb2x5Z29uSW50ZXJzZWN0TGluZSh4LCB5LCBwdHMsIG5vZGVYLCBub2RlWSk7XG4gICAgfSxcbiAgICBnZW5lcmF0ZUJhcnJlbEJlemllclB0czogZnVuY3Rpb24gZ2VuZXJhdGVCYXJyZWxCZXppZXJQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgdmFyIGhoID0gaGVpZ2h0IC8gMjtcbiAgICAgIHZhciBodyA9IHdpZHRoIC8gMjtcbiAgICAgIHZhciB4QmVnaW4gPSBjZW50ZXJYIC0gaHc7XG4gICAgICB2YXIgeEVuZCA9IGNlbnRlclggKyBodztcbiAgICAgIHZhciB5QmVnaW4gPSBjZW50ZXJZIC0gaGg7XG4gICAgICB2YXIgeUVuZCA9IGNlbnRlclkgKyBoaDtcbiAgICAgIHZhciBjdXJ2ZUNvbnN0YW50cyA9IGdldEJhcnJlbEN1cnZlQ29uc3RhbnRzKHdpZHRoLCBoZWlnaHQpO1xuICAgICAgdmFyIGhPZmZzZXQgPSBjdXJ2ZUNvbnN0YW50cy5oZWlnaHRPZmZzZXQ7XG4gICAgICB2YXIgd09mZnNldCA9IGN1cnZlQ29uc3RhbnRzLndpZHRoT2Zmc2V0O1xuICAgICAgdmFyIGN0cmxQdFhPZmZzZXQgPSBjdXJ2ZUNvbnN0YW50cy5jdHJsUHRPZmZzZXRQY3QgKiB3aWR0aDsgLy8gcG9pbnRzIGFyZSBpbiBjbG9ja3dpc2Ugb3JkZXIsIGlubmVyIChpbWFnaW5hcnkpIGNvbnRyb2wgcHQgb24gWzQsIDVdXG5cbiAgICAgIHZhciBwdHMgPSB7XG4gICAgICAgIHRvcExlZnQ6IFt4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQsIHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlCZWdpbiwgeEJlZ2luICsgd09mZnNldCwgeUJlZ2luXSxcbiAgICAgICAgdG9wUmlnaHQ6IFt4RW5kIC0gd09mZnNldCwgeUJlZ2luLCB4RW5kIC0gY3RybFB0WE9mZnNldCwgeUJlZ2luLCB4RW5kLCB5QmVnaW4gKyBoT2Zmc2V0XSxcbiAgICAgICAgYm90dG9tUmlnaHQ6IFt4RW5kLCB5RW5kIC0gaE9mZnNldCwgeEVuZCAtIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhFbmQgLSB3T2Zmc2V0LCB5RW5kXSxcbiAgICAgICAgYm90dG9tTGVmdDogW3hCZWdpbiArIHdPZmZzZXQsIHlFbmQsIHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhCZWdpbiwgeUVuZCAtIGhPZmZzZXRdXG4gICAgICB9O1xuICAgICAgcHRzLnRvcExlZnQuaXNUb3AgPSB0cnVlO1xuICAgICAgcHRzLnRvcFJpZ2h0LmlzVG9wID0gdHJ1ZTtcbiAgICAgIHB0cy5ib3R0b21MZWZ0LmlzQm90dG9tID0gdHJ1ZTtcbiAgICAgIHB0cy5ib3R0b21SaWdodC5pc0JvdHRvbSA9IHRydWU7XG4gICAgICByZXR1cm4gcHRzO1xuICAgIH0sXG4gICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICB2YXIgY3VydmVDb25zdGFudHMgPSBnZXRCYXJyZWxDdXJ2ZUNvbnN0YW50cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIHZhciBoT2Zmc2V0ID0gY3VydmVDb25zdGFudHMuaGVpZ2h0T2Zmc2V0O1xuICAgICAgdmFyIHdPZmZzZXQgPSBjdXJ2ZUNvbnN0YW50cy53aWR0aE9mZnNldDsgLy8gQ2hlY2sgaEJveFxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gMiAqIGhPZmZzZXQsIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBDaGVjayB2Qm94XG5cblxuICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGggLSAyICogd09mZnNldCwgaGVpZ2h0LCBbMCwgLTFdLCBwYWRkaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGJhcnJlbEN1cnZlUHRzID0gdGhpcy5nZW5lcmF0ZUJhcnJlbEJlemllclB0cyh3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKTtcblxuICAgICAgdmFyIGdldEN1cnZlVCA9IGZ1bmN0aW9uIGdldEN1cnZlVCh4LCB5LCBjdXJ2ZVB0cykge1xuICAgICAgICB2YXIgeDAgPSBjdXJ2ZVB0c1s0XTtcbiAgICAgICAgdmFyIHgxID0gY3VydmVQdHNbMl07XG4gICAgICAgIHZhciB4MiA9IGN1cnZlUHRzWzBdO1xuICAgICAgICB2YXIgeTAgPSBjdXJ2ZVB0c1s1XTsgLy8gdmFyIHkxID0gY3VydmVQdHNbIDMgXTtcblxuICAgICAgICB2YXIgeTIgPSBjdXJ2ZVB0c1sxXTtcbiAgICAgICAgdmFyIHhNaW4gPSBNYXRoLm1pbih4MCwgeDIpO1xuICAgICAgICB2YXIgeE1heCA9IE1hdGgubWF4KHgwLCB4Mik7XG4gICAgICAgIHZhciB5TWluID0gTWF0aC5taW4oeTAsIHkyKTtcbiAgICAgICAgdmFyIHlNYXggPSBNYXRoLm1heCh5MCwgeTIpO1xuXG4gICAgICAgIGlmICh4TWluIDw9IHggJiYgeCA8PSB4TWF4ICYmIHlNaW4gPD0geSAmJiB5IDw9IHlNYXgpIHtcbiAgICAgICAgICB2YXIgY29lZmYgPSBiZXppZXJQdHNUb1F1YWRDb2VmZih4MCwgeDEsIHgyKTtcbiAgICAgICAgICB2YXIgcm9vdHMgPSBzb2x2ZVF1YWRyYXRpYyhjb2VmZlswXSwgY29lZmZbMV0sIGNvZWZmWzJdLCB4KTtcbiAgICAgICAgICB2YXIgdmFsaWRSb290cyA9IHJvb3RzLmZpbHRlcihmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgcmV0dXJuIDAgPD0gciAmJiByIDw9IDE7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAodmFsaWRSb290cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsaWRSb290c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIHZhciBjdXJ2ZVJlZ2lvbnMgPSBPYmplY3Qua2V5cyhiYXJyZWxDdXJ2ZVB0cyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3VydmVSZWdpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjb3JuZXIgPSBjdXJ2ZVJlZ2lvbnNbaV07XG4gICAgICAgIHZhciBjb3JuZXJQdHMgPSBiYXJyZWxDdXJ2ZVB0c1tjb3JuZXJdO1xuICAgICAgICB2YXIgdCA9IGdldEN1cnZlVCh4LCB5LCBjb3JuZXJQdHMpO1xuXG4gICAgICAgIGlmICh0ID09IG51bGwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB5MCA9IGNvcm5lclB0c1s1XTtcbiAgICAgICAgdmFyIHkxID0gY29ybmVyUHRzWzNdO1xuICAgICAgICB2YXIgeTIgPSBjb3JuZXJQdHNbMV07XG4gICAgICAgIHZhciBiZXpZID0gcWJlemllckF0KHkwLCB5MSwgeTIsIHQpO1xuXG4gICAgICAgIGlmIChjb3JuZXJQdHMuaXNUb3AgJiYgYmV6WSA8PSB5KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29ybmVyUHRzLmlzQm90dG9tICYmIHkgPD0gYmV6WSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59O1xuXG5CUnAkZC5nZW5lcmF0ZUJvdHRvbVJvdW5kcmVjdGFuZ2xlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzWydib3R0b20tcm91bmQtcmVjdGFuZ2xlJ10gPSB0aGlzLm5vZGVTaGFwZXNbJ2JvdHRvbXJvdW5kcmVjdGFuZ2xlJ10gPSB7XG4gICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgbmFtZTogJ2JvdHRvbS1yb3VuZC1yZWN0YW5nbGUnLFxuICAgIHBvaW50czogZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDQsIDApLFxuICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfSxcbiAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgdmFyIHRvcFN0YXJ0WCA9IG5vZGVYIC0gKHdpZHRoIC8gMiArIHBhZGRpbmcpO1xuICAgICAgdmFyIHRvcFN0YXJ0WSA9IG5vZGVZIC0gKGhlaWdodCAvIDIgKyBwYWRkaW5nKTtcbiAgICAgIHZhciB0b3BFbmRZID0gdG9wU3RhcnRZO1xuICAgICAgdmFyIHRvcEVuZFggPSBub2RlWCArICh3aWR0aCAvIDIgKyBwYWRkaW5nKTtcbiAgICAgIHZhciB0b3BJbnRlcnNlY3Rpb25zID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgbm9kZVgsIG5vZGVZLCB0b3BTdGFydFgsIHRvcFN0YXJ0WSwgdG9wRW5kWCwgdG9wRW5kWSwgZmFsc2UpO1xuXG4gICAgICBpZiAodG9wSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB0b3BJbnRlcnNlY3Rpb25zO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcm91bmRSZWN0YW5nbGVJbnRlcnNlY3RMaW5lKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgcGFkZGluZyk7XG4gICAgfSxcbiAgICBjaGVja1BvaW50OiBmdW5jdGlvbiBjaGVja1BvaW50KHgsIHksIHBhZGRpbmcsIHdpZHRoLCBoZWlnaHQsIGNlbnRlclgsIGNlbnRlclkpIHtcbiAgICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIHZhciBkaWFtID0gMiAqIGNvcm5lclJhZGl1czsgLy8gQ2hlY2sgaEJveFxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gZGlhbSwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIENoZWNrIHZCb3hcblxuXG4gICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCAtIGRpYW0sIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IC8vIGNoZWNrIG5vbi1yb3VuZGVkIHRvcCBzaWRlXG5cblxuICAgICAgdmFyIG91dGVyV2lkdGggPSB3aWR0aCAvIDIgKyAyICogcGFkZGluZztcbiAgICAgIHZhciBvdXRlckhlaWdodCA9IGhlaWdodCAvIDIgKyAyICogcGFkZGluZztcbiAgICAgIHZhciBwb2ludHMgPSBbY2VudGVyWCAtIG91dGVyV2lkdGgsIGNlbnRlclkgLSBvdXRlckhlaWdodCwgY2VudGVyWCAtIG91dGVyV2lkdGgsIGNlbnRlclksIGNlbnRlclggKyBvdXRlcldpZHRoLCBjZW50ZXJZLCBjZW50ZXJYICsgb3V0ZXJXaWR0aCwgY2VudGVyWSAtIG91dGVySGVpZ2h0XTtcblxuICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBwb2ludHMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBDaGVjayBib3R0b20gcmlnaHQgcXVhcnRlciBjaXJjbGVcblxuXG4gICAgICBpZiAoY2hlY2tJbkVsbGlwc2UoeCwgeSwgZGlhbSwgZGlhbSwgY2VudGVyWCArIHdpZHRoIC8gMiAtIGNvcm5lclJhZGl1cywgY2VudGVyWSArIGhlaWdodCAvIDIgLSBjb3JuZXJSYWRpdXMsIHBhZGRpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBDaGVjayBib3R0b20gbGVmdCBxdWFydGVyIGNpcmNsZVxuXG5cbiAgICAgIGlmIChjaGVja0luRWxsaXBzZSh4LCB5LCBkaWFtLCBkaWFtLCBjZW50ZXJYIC0gd2lkdGggLyAyICsgY29ybmVyUmFkaXVzLCBjZW50ZXJZICsgaGVpZ2h0IC8gMiAtIGNvcm5lclJhZGl1cywgcGFkZGluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59O1xuXG5CUnAkZC5yZWdpc3Rlck5vZGVTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub2RlU2hhcGVzID0gdGhpcy5ub2RlU2hhcGVzID0ge307XG4gIHZhciByZW5kZXJlciA9IHRoaXM7XG4gIHRoaXMuZ2VuZXJhdGVFbGxpcHNlKCk7XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCd0cmlhbmdsZScsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSgzLCAwKSk7XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLXRyaWFuZ2xlJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDMsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ3JlY3RhbmdsZScsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg0LCAwKSk7XG4gIG5vZGVTaGFwZXNbJ3NxdWFyZSddID0gbm9kZVNoYXBlc1sncmVjdGFuZ2xlJ107XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFJlY3RhbmdsZSgpO1xuICB0aGlzLmdlbmVyYXRlQ3V0UmVjdGFuZ2xlKCk7XG4gIHRoaXMuZ2VuZXJhdGVCYXJyZWwoKTtcbiAgdGhpcy5nZW5lcmF0ZUJvdHRvbVJvdW5kcmVjdGFuZ2xlKCk7XG4gIHtcbiAgICB2YXIgZGlhbW9uZFBvaW50cyA9IFswLCAxLCAxLCAwLCAwLCAtMSwgLTEsIDBdO1xuICAgIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdkaWFtb25kJywgZGlhbW9uZFBvaW50cyk7XG4gICAgdGhpcy5nZW5lcmF0ZVJvdW5kUG9seWdvbigncm91bmQtZGlhbW9uZCcsIGRpYW1vbmRQb2ludHMpO1xuICB9XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdwZW50YWdvbicsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg1LCAwKSk7XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLXBlbnRhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDUsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ2hleGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNiwgMCkpO1xuICB0aGlzLmdlbmVyYXRlUm91bmRQb2x5Z29uKCdyb3VuZC1oZXhhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDYsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ2hlcHRhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDcsIDApKTtcbiAgdGhpcy5nZW5lcmF0ZVJvdW5kUG9seWdvbigncm91bmQtaGVwdGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNywgMCkpO1xuICB0aGlzLmdlbmVyYXRlUG9seWdvbignb2N0YWdvbicsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg4LCAwKSk7XG4gIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLW9jdGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoOCwgMCkpO1xuICB2YXIgc3RhcjVQb2ludHMgPSBuZXcgQXJyYXkoMjApO1xuICB7XG4gICAgdmFyIG91dGVyUG9pbnRzID0gZ2VuZXJhdGVVbml0TmdvblBvaW50cyg1LCAwKTtcbiAgICB2YXIgaW5uZXJQb2ludHMgPSBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzKDUsIE1hdGguUEkgLyA1KTsgLy8gT3V0ZXIgcmFkaXVzIGlzIDE7IGlubmVyIHJhZGl1cyBvZiBzdGFyIGlzIHNtYWxsZXJcblxuICAgIHZhciBpbm5lclJhZGl1cyA9IDAuNSAqICgzIC0gTWF0aC5zcXJ0KDUpKTtcbiAgICBpbm5lclJhZGl1cyAqPSAxLjU3O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbm5lclBvaW50cy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIGlubmVyUG9pbnRzW2kgKiAyXSAqPSBpbm5lclJhZGl1cztcbiAgICAgIGlubmVyUG9pbnRzW2kgKiAyICsgMV0gKj0gaW5uZXJSYWRpdXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMCAvIDQ7IGkrKykge1xuICAgICAgc3RhcjVQb2ludHNbaSAqIDRdID0gb3V0ZXJQb2ludHNbaSAqIDJdO1xuICAgICAgc3RhcjVQb2ludHNbaSAqIDQgKyAxXSA9IG91dGVyUG9pbnRzW2kgKiAyICsgMV07XG4gICAgICBzdGFyNVBvaW50c1tpICogNCArIDJdID0gaW5uZXJQb2ludHNbaSAqIDJdO1xuICAgICAgc3RhcjVQb2ludHNbaSAqIDQgKyAzXSA9IGlubmVyUG9pbnRzW2kgKiAyICsgMV07XG4gICAgfVxuICB9XG4gIHN0YXI1UG9pbnRzID0gZml0UG9seWdvblRvU3F1YXJlKHN0YXI1UG9pbnRzKTtcbiAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ3N0YXInLCBzdGFyNVBvaW50cyk7XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCd2ZWUnLCBbLTEsIC0xLCAwLCAtMC4zMzMsIDEsIC0xLCAwLCAxXSk7XG4gIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdyaG9tYm9pZCcsIFstMSwgLTEsIDAuMzMzLCAtMSwgMSwgMSwgLTAuMzMzLCAxXSk7XG4gIHRoaXMubm9kZVNoYXBlc1snY29uY2F2ZWhleGFnb24nXSA9IHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdjb25jYXZlLWhleGFnb24nLCBbLTEsIC0wLjk1LCAtMC43NSwgMCwgLTEsIDAuOTUsIDEsIDAuOTUsIDAuNzUsIDAsIDEsIC0wLjk1XSk7XG4gIHtcbiAgICB2YXIgdGFnUG9pbnRzID0gWy0xLCAtMSwgMC4yNSwgLTEsIDEsIDAsIDAuMjUsIDEsIC0xLCAxXTtcbiAgICB0aGlzLmdlbmVyYXRlUG9seWdvbigndGFnJywgdGFnUG9pbnRzKTtcbiAgICB0aGlzLmdlbmVyYXRlUm91bmRQb2x5Z29uKCdyb3VuZC10YWcnLCB0YWdQb2ludHMpO1xuICB9XG5cbiAgbm9kZVNoYXBlcy5tYWtlUG9seWdvbiA9IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAvLyB1c2UgY2FjaGluZyBvbiB1c2VyLXNwZWNpZmllZCBwb2x5Z29ucyBzbyB0aGV5IGFyZSBhcyBmYXN0IGFzIG5hdGl2ZSBzaGFwZXNcbiAgICB2YXIga2V5ID0gcG9pbnRzLmpvaW4oJyQnKTtcbiAgICB2YXIgbmFtZSA9ICdwb2x5Z29uLScgKyBrZXk7XG4gICAgdmFyIHNoYXBlO1xuXG4gICAgaWYgKHNoYXBlID0gdGhpc1tuYW1lXSkge1xuICAgICAgLy8gZ290IGNhY2hlZCBzaGFwZVxuICAgICAgcmV0dXJuIHNoYXBlO1xuICAgIH0gLy8gY3JlYXRlIGFuZCBjYWNoZSBuZXcgc2hhcGVcblxuXG4gICAgcmV0dXJuIHJlbmRlcmVyLmdlbmVyYXRlUG9seWdvbihuYW1lLCBwb2ludHMpO1xuICB9O1xufTtcblxudmFyIEJScCRlID0ge307XG5cbkJScCRlLnRpbWVUb1JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVkcmF3VG90YWxUaW1lIC8gdGhpcy5yZWRyYXdDb3VudDtcbn07XG5cbkJScCRlLnJlZHJhdyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHN0YXRpY0VtcHR5T2JqZWN0KCk7XG4gIHZhciByID0gdGhpcztcblxuICBpZiAoci5hdmVyYWdlUmVkcmF3VGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgci5hdmVyYWdlUmVkcmF3VGltZSA9IDA7XG4gIH1cblxuICBpZiAoci5sYXN0UmVkcmF3VGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgci5sYXN0UmVkcmF3VGltZSA9IDA7XG4gIH1cblxuICBpZiAoci5sYXN0RHJhd1RpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHIubGFzdERyYXdUaW1lID0gMDtcbiAgfVxuXG4gIHIucmVxdWVzdGVkRnJhbWUgPSB0cnVlO1xuICByLnJlbmRlck9wdGlvbnMgPSBvcHRpb25zO1xufTtcblxuQlJwJGUuYmVmb3JlUmVuZGVyID0gZnVuY3Rpb24gKGZuLCBwcmlvcml0eSkge1xuICAvLyB0aGUgcmVuZGVyZXIgY2FuJ3QgYWRkIHRpY2sgY2FsbGJhY2tzIHdoZW4gZGVzdHJveWVkXG4gIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwcmlvcml0eSA9PSBudWxsKSB7XG4gICAgZXJyb3IoJ1ByaW9yaXR5IGlzIG5vdCBvcHRpb25hbCBmb3IgYmVmb3JlUmVuZGVyJyk7XG4gIH1cblxuICB2YXIgY2JzID0gdGhpcy5iZWZvcmVSZW5kZXJDYWxsYmFja3M7XG4gIGNicy5wdXNoKHtcbiAgICBmbjogZm4sXG4gICAgcHJpb3JpdHk6IHByaW9yaXR5XG4gIH0pOyAvLyBoaWdoZXIgcHJpb3JpdHkgY2FsbGJhY2tzIGV4ZWN1dGVkIGZpcnN0XG5cbiAgY2JzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5wcmlvcml0eSAtIGEucHJpb3JpdHk7XG4gIH0pO1xufTtcblxudmFyIGJlZm9yZVJlbmRlckNhbGxiYWNrcyA9IGZ1bmN0aW9uIGJlZm9yZVJlbmRlckNhbGxiYWNrcyhyLCB3aWxsRHJhdywgc3RhcnRUaW1lKSB7XG4gIHZhciBjYnMgPSByLmJlZm9yZVJlbmRlckNhbGxiYWNrcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNicy5sZW5ndGg7IGkrKykge1xuICAgIGNic1tpXS5mbih3aWxsRHJhdywgc3RhcnRUaW1lKTtcbiAgfVxufTtcblxuQlJwJGUuc3RhcnRSZW5kZXJMb29wID0gZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjeSA9IHIuY3k7XG5cbiAgaWYgKHIucmVuZGVyTG9vcFN0YXJ0ZWQpIHtcbiAgICByZXR1cm47XG4gIH0gZWxzZSB7XG4gICAgci5yZW5kZXJMb29wU3RhcnRlZCA9IHRydWU7XG4gIH1cblxuICB2YXIgcmVuZGVyRm4gPSBmdW5jdGlvbiByZW5kZXJGbihyZXF1ZXN0VGltZSkge1xuICAgIGlmIChyLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjeS5iYXRjaGluZygpKSA7IGVsc2UgaWYgKHIucmVxdWVzdGVkRnJhbWUgJiYgIXIuc2tpcEZyYW1lKSB7XG4gICAgICBiZWZvcmVSZW5kZXJDYWxsYmFja3MociwgdHJ1ZSwgcmVxdWVzdFRpbWUpO1xuICAgICAgdmFyIHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7XG4gICAgICByLnJlbmRlcihyLnJlbmRlck9wdGlvbnMpO1xuICAgICAgdmFyIGVuZFRpbWUgPSByLmxhc3REcmF3VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7XG5cbiAgICAgIGlmIChyLmF2ZXJhZ2VSZWRyYXdUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgci5hdmVyYWdlUmVkcmF3VGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChyLnJlZHJhd0NvdW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgci5yZWRyYXdDb3VudCA9IDA7XG4gICAgICB9XG5cbiAgICAgIHIucmVkcmF3Q291bnQrKztcblxuICAgICAgaWYgKHIucmVkcmF3VG90YWxUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgci5yZWRyYXdUb3RhbFRpbWUgPSAwO1xuICAgICAgfVxuXG4gICAgICB2YXIgZHVyYXRpb24gPSBlbmRUaW1lIC0gc3RhcnRUaW1lO1xuICAgICAgci5yZWRyYXdUb3RhbFRpbWUgKz0gZHVyYXRpb247XG4gICAgICByLmxhc3RSZWRyYXdUaW1lID0gZHVyYXRpb247IC8vIHVzZSBhIHdlaWdodGVkIGF2ZXJhZ2Ugd2l0aCBhIGJpYXMgZnJvbSB0aGUgcHJldmlvdXMgYXZlcmFnZSBzbyB3ZSBkb24ndCBzcGlrZSBzbyBlYXNpbHlcblxuICAgICAgci5hdmVyYWdlUmVkcmF3VGltZSA9IHIuYXZlcmFnZVJlZHJhd1RpbWUgLyAyICsgZHVyYXRpb24gLyAyO1xuICAgICAgci5yZXF1ZXN0ZWRGcmFtZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBiZWZvcmVSZW5kZXJDYWxsYmFja3MociwgZmFsc2UsIHJlcXVlc3RUaW1lKTtcbiAgICB9XG5cbiAgICByLnNraXBGcmFtZSA9IGZhbHNlO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXJGbik7XG4gIH07XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlckZuKTtcbn07XG5cbnZhciBCYXNlUmVuZGVyZXIgPSBmdW5jdGlvbiBCYXNlUmVuZGVyZXIob3B0aW9ucykge1xuICB0aGlzLmluaXQob3B0aW9ucyk7XG59O1xuXG52YXIgQlIgPSBCYXNlUmVuZGVyZXI7XG52YXIgQlJwJGYgPSBCUi5wcm90b3R5cGU7XG5CUnAkZi5jbGllbnRGdW5jdGlvbnMgPSBbJ3JlZHJhd0hpbnQnLCAncmVuZGVyJywgJ3JlbmRlclRvJywgJ21hdGNoQ2FudmFzU2l6ZScsICdub2RlU2hhcGVJbXBsJywgJ2Fycm93U2hhcGVJbXBsJ107XG5cbkJScCRmLmluaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgciA9IHRoaXM7XG4gIHIub3B0aW9ucyA9IG9wdGlvbnM7XG4gIHIuY3kgPSBvcHRpb25zLmN5O1xuICB2YXIgY3RyID0gci5jb250YWluZXIgPSBvcHRpb25zLmN5LmNvbnRhaW5lcigpOyAvLyBwcmVwZW5kIGEgc3R5bGVzaGVldCBpbiB0aGUgaGVhZCBzdWNoIHRoYXRcblxuICBpZiAod2luZG93JDEpIHtcbiAgICB2YXIgZG9jdW1lbnQgPSB3aW5kb3ckMS5kb2N1bWVudDtcbiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQ7XG4gICAgdmFyIHN0eWxlc2hlZXRJZCA9ICdfX19fX19fX19fY3l0b3NjYXBlX3N0eWxlc2hlZXQnO1xuICAgIHZhciBjbGFzc05hbWUgPSAnX19fX19fX19fX2N5dG9zY2FwZV9jb250YWluZXInO1xuICAgIHZhciBzdHlsZXNoZWV0QWxyZWFkeUV4aXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN0eWxlc2hlZXRJZCkgIT0gbnVsbDtcblxuICAgIGlmIChjdHIuY2xhc3NOYW1lLmluZGV4T2YoY2xhc3NOYW1lKSA8IDApIHtcbiAgICAgIGN0ci5jbGFzc05hbWUgPSAoY3RyLmNsYXNzTmFtZSB8fCAnJykgKyAnICcgKyBjbGFzc05hbWU7XG4gICAgfVxuXG4gICAgaWYgKCFzdHlsZXNoZWV0QWxyZWFkeUV4aXN0cykge1xuICAgICAgdmFyIHN0eWxlc2hlZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgc3R5bGVzaGVldC5pZCA9IHN0eWxlc2hlZXRJZDtcbiAgICAgIHN0eWxlc2hlZXQuaW5uZXJIVE1MID0gJy4nICsgY2xhc3NOYW1lICsgJyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfSc7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZXNoZWV0LCBoZWFkLmNoaWxkcmVuWzBdKTsgLy8gZmlyc3Qgc28gbG93ZXN0IHByaW9yaXR5XG4gICAgfVxuXG4gICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3ckMS5nZXRDb21wdXRlZFN0eWxlKGN0cik7XG4gICAgdmFyIHBvc2l0aW9uID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbicpO1xuXG4gICAgaWYgKHBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgd2FybignQSBDeXRvc2NhcGUgY29udGFpbmVyIGhhcyBzdHlsZSBwb3NpdGlvbjpzdGF0aWMgYW5kIHNvIGNhbiBub3QgdXNlIFVJIGV4dGVuc2lvbnMgcHJvcGVybHknKTtcbiAgICB9XG4gIH1cblxuICByLnNlbGVjdGlvbiA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDBdOyAvLyBDb29yZGluYXRlcyBmb3Igc2VsZWN0aW9uIGJveCwgcGx1cyBlbmFibGVkIGZsYWdcblxuICByLmJlemllclByb2pQY3RzID0gWzAuMDUsIDAuMjI1LCAwLjQsIDAuNSwgMC42LCAwLjc3NSwgMC45NV07IC8vLS1Qb2ludGVyLXJlbGF0ZWQgZGF0YVxuXG4gIHIuaG92ZXJEYXRhID0ge1xuICAgIGRvd246IG51bGwsXG4gICAgbGFzdDogbnVsbCxcbiAgICBkb3duVGltZTogbnVsbCxcbiAgICB0cmlnZ2VyTW9kZTogbnVsbCxcbiAgICBkcmFnZ2luZzogZmFsc2UsXG4gICAgaW5pdGlhbFBhbjogW251bGwsIG51bGxdLFxuICAgIGNhcHR1cmU6IGZhbHNlXG4gIH07XG4gIHIuZHJhZ0RhdGEgPSB7XG4gICAgcG9zc2libGVEcmFnRWxlbWVudHM6IFtdXG4gIH07XG4gIHIudG91Y2hEYXRhID0ge1xuICAgIHN0YXJ0OiBudWxsLFxuICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgIC8vIFRoZXNlIDMgZmllbGRzIHJlbGF0ZWQgdG8gdGFwLCB0YXBob2xkIGV2ZW50c1xuICAgIHN0YXJ0UG9zaXRpb246IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXSxcbiAgICBzaW5nbGVUb3VjaFN0YXJ0VGltZTogbnVsbCxcbiAgICBzaW5nbGVUb3VjaE1vdmVkOiB0cnVlLFxuICAgIG5vdzogW251bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGxdLFxuICAgIGVhcmxpZXI6IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXVxuICB9O1xuICByLnJlZHJhd3MgPSAwO1xuICByLnNob3dGcHMgPSBvcHRpb25zLnNob3dGcHM7XG4gIHIuZGVidWcgPSBvcHRpb25zLmRlYnVnO1xuICByLmhpZGVFZGdlc09uVmlld3BvcnQgPSBvcHRpb25zLmhpZGVFZGdlc09uVmlld3BvcnQ7XG4gIHIudGV4dHVyZU9uVmlld3BvcnQgPSBvcHRpb25zLnRleHR1cmVPblZpZXdwb3J0O1xuICByLndoZWVsU2Vuc2l0aXZpdHkgPSBvcHRpb25zLndoZWVsU2Vuc2l0aXZpdHk7XG4gIHIubW90aW9uQmx1ckVuYWJsZWQgPSBvcHRpb25zLm1vdGlvbkJsdXI7IC8vIG9uIGJ5IGRlZmF1bHRcblxuICByLmZvcmNlZFBpeGVsUmF0aW8gPSBudW1iZXIob3B0aW9ucy5waXhlbFJhdGlvKSA/IG9wdGlvbnMucGl4ZWxSYXRpbyA6IG51bGw7XG4gIHIubW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1cjsgLy8gZm9yIGluaXRpYWwga2ljayBvZmZcblxuICByLm1vdGlvbkJsdXJPcGFjaXR5ID0gb3B0aW9ucy5tb3Rpb25CbHVyT3BhY2l0eTtcbiAgci5tb3Rpb25CbHVyVHJhbnNwYXJlbmN5ID0gMSAtIHIubW90aW9uQmx1ck9wYWNpdHk7XG4gIHIubW90aW9uQmx1clB4UmF0aW8gPSAxO1xuICByLm1iUHhSQmx1cnJ5ID0gMTsgLy8wLjg7XG5cbiAgci5taW5NYkxvd1F1YWxGcmFtZXMgPSA0O1xuICByLmZ1bGxRdWFsaXR5TWIgPSBmYWxzZTtcbiAgci5jbGVhcmVkRm9yTW90aW9uQmx1ciA9IFtdO1xuICByLmRlc2t0b3BUYXBUaHJlc2hvbGQgPSBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQ7XG4gIHIuZGVza3RvcFRhcFRocmVzaG9sZDIgPSBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQgKiBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQ7XG4gIHIudG91Y2hUYXBUaHJlc2hvbGQgPSBvcHRpb25zLnRvdWNoVGFwVGhyZXNob2xkO1xuICByLnRvdWNoVGFwVGhyZXNob2xkMiA9IG9wdGlvbnMudG91Y2hUYXBUaHJlc2hvbGQgKiBvcHRpb25zLnRvdWNoVGFwVGhyZXNob2xkO1xuICByLnRhcGhvbGREdXJhdGlvbiA9IDUwMDtcbiAgci5iaW5kaW5ncyA9IFtdO1xuICByLmJlZm9yZVJlbmRlckNhbGxiYWNrcyA9IFtdO1xuICByLmJlZm9yZVJlbmRlclByaW9yaXRpZXMgPSB7XG4gICAgLy8gaGlnaGVyIHByaW9yaXR5IGV4ZWNzIGJlZm9yZSBsb3dlciBvbmVcbiAgICBhbmltYXRpb25zOiA0MDAsXG4gICAgZWxlQ2FsY3M6IDMwMCxcbiAgICBlbGVUeHJEZXE6IDIwMCxcbiAgICBseXJUeHJEZXE6IDE1MCxcbiAgICBseXJUeHJTa2lwOiAxMDBcbiAgfTtcbiAgci5yZWdpc3Rlck5vZGVTaGFwZXMoKTtcbiAgci5yZWdpc3RlckFycm93U2hhcGVzKCk7XG4gIHIucmVnaXN0ZXJDYWxjdWxhdGlvbkxpc3RlbmVycygpO1xufTtcblxuQlJwJGYubm90aWZ5ID0gZnVuY3Rpb24gKGV2ZW50TmFtZSwgZWxlcykge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBjeSA9IHIuY3k7IC8vIHRoZSByZW5kZXJlciBjYW4ndCBiZSBub3RpZmllZCBhZnRlciBpdCdzIGRlc3Ryb3llZFxuXG4gIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICdpbml0Jykge1xuICAgIHIubG9hZCgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICdkZXN0cm95Jykge1xuICAgIHIuZGVzdHJveSgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICdhZGQnIHx8IGV2ZW50TmFtZSA9PT0gJ3JlbW92ZScgfHwgZXZlbnROYW1lID09PSAnbW92ZScgJiYgY3kuaGFzQ29tcG91bmROb2RlcygpIHx8IGV2ZW50TmFtZSA9PT0gJ2xvYWQnIHx8IGV2ZW50TmFtZSA9PT0gJ3pvcmRlcicgfHwgZXZlbnROYW1lID09PSAnbW91bnQnKSB7XG4gICAgci5pbnZhbGlkYXRlQ2FjaGVkWlNvcnRlZEVsZXMoKTtcbiAgfVxuXG4gIGlmIChldmVudE5hbWUgPT09ICd2aWV3cG9ydCcpIHtcbiAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICB9XG5cbiAgaWYgKGV2ZW50TmFtZSA9PT0gJ2xvYWQnIHx8IGV2ZW50TmFtZSA9PT0gJ3Jlc2l6ZScgfHwgZXZlbnROYW1lID09PSAnbW91bnQnKSB7XG4gICAgci5pbnZhbGlkYXRlQ29udGFpbmVyQ2xpZW50Q29vcmRzQ2FjaGUoKTtcbiAgICByLm1hdGNoQ2FudmFzU2l6ZShyLmNvbnRhaW5lcik7XG4gIH1cblxuICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgci5yZWRyYXdIaW50KCdkcmFnJywgdHJ1ZSk7XG4gIHRoaXMuc3RhcnRSZW5kZXJMb29wKCk7XG4gIHRoaXMucmVkcmF3KCk7XG59O1xuXG5CUnAkZi5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IHRoaXM7XG4gIHIuZGVzdHJveWVkID0gdHJ1ZTtcbiAgci5jeS5zdG9wQW5pbWF0aW9uTG9vcCgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgci5iaW5kaW5ncy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBiaW5kaW5nID0gci5iaW5kaW5nc1tpXTtcbiAgICB2YXIgYiA9IGJpbmRpbmc7XG4gICAgdmFyIHRndCA9IGIudGFyZ2V0O1xuICAgICh0Z3Qub2ZmIHx8IHRndC5yZW1vdmVFdmVudExpc3RlbmVyKS5hcHBseSh0Z3QsIGIuYXJncyk7XG4gIH1cblxuICByLmJpbmRpbmdzID0gW107XG4gIHIuYmVmb3JlUmVuZGVyQ2FsbGJhY2tzID0gW107XG4gIHIub25VcGRhdGVFbGVDYWxjc0ZucyA9IFtdO1xuXG4gIGlmIChyLnJlbW92ZU9ic2VydmVyKSB7XG4gICAgci5yZW1vdmVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBpZiAoci5zdHlsZU9ic2VydmVyKSB7XG4gICAgci5zdHlsZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIGlmIChyLnJlc2l6ZU9ic2VydmVyKSB7XG4gICAgci5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBpZiAoci5sYWJlbENhbGNEaXYpIHtcbiAgICB0cnkge1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyLmxhYmVsQ2FsY0Rpdik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICB9IGNhdGNoIChlKSB7Ly8gaWUxMCBpc3N1ZSAjMTAxNFxuICAgIH1cbiAgfVxufTtcblxuQlJwJGYuaXNIZWFkbGVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuW0JScCwgQlJwJGEsIEJScCRiLCBCUnAkYywgQlJwJGQsIEJScCRlXS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoQlJwJGYsIHByb3BzKTtcbn0pO1xuXG52YXIgZnVsbEZwc1RpbWUgPSAxMDAwIC8gNjA7IC8vIGFzc3VtZSA2MCBmcmFtZXMgcGVyIHNlY29uZFxuXG52YXIgZGVmcyA9IHtcbiAgc2V0dXBEZXF1ZXVlaW5nOiBmdW5jdGlvbiBzZXR1cERlcXVldWVpbmcob3B0cykge1xuICAgIHJldHVybiBmdW5jdGlvbiBzZXR1cERlcXVldWVpbmdJbXBsKCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIHIgPSB0aGlzLnJlbmRlcmVyO1xuXG4gICAgICBpZiAoc2VsZi5kZXF1ZXVlaW5nU2V0dXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi5kZXF1ZXVlaW5nU2V0dXAgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcXVldWVSZWRyYXcgPSB1dGlsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICByLnJlZHJhdygpO1xuICAgICAgfSwgb3B0cy5kZXFSZWRyYXdUaHJlc2hvbGQpO1xuXG4gICAgICB2YXIgZGVxdWV1ZSA9IGZ1bmN0aW9uIGRlcXVldWUod2lsbERyYXcsIGZyYW1lU3RhcnRUaW1lKSB7XG4gICAgICAgIHZhciBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZU5vdygpO1xuICAgICAgICB2YXIgYXZnUmVuZGVyVGltZSA9IHIuYXZlcmFnZVJlZHJhd1RpbWU7XG4gICAgICAgIHZhciByZW5kZXJUaW1lID0gci5sYXN0UmVkcmF3VGltZTtcbiAgICAgICAgdmFyIGRlcWQgPSBbXTtcbiAgICAgICAgdmFyIGV4dGVudCA9IHIuY3kuZXh0ZW50KCk7XG4gICAgICAgIHZhciBwaXhlbFJhdGlvID0gci5nZXRQaXhlbFJhdGlvKCk7IC8vIGlmIHdlIGFyZW4ndCBpbiBhIHRpY2sgdGhhdCBjYXVzZXMgYSBkcmF3LCB0aGVuIHRoZSByZW5kZXJlZCBzdHlsZVxuICAgICAgICAvLyBxdWV1ZSB3b24ndCBhdXRvbWF0aWNhbGx5IGJlIGZsdXNoZWQgYmVmb3JlIGRlcXVldWVpbmcgc3RhcnRzXG5cbiAgICAgICAgaWYgKCF3aWxsRHJhdykge1xuICAgICAgICAgIHIuZmx1c2hSZW5kZXJlZFN0eWxlUXVldWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAgICAgICB2YXIgbm93ID0gcGVyZm9ybWFuY2VOb3coKTtcbiAgICAgICAgICB2YXIgZHVyYXRpb24gPSBub3cgLSBzdGFydFRpbWU7XG4gICAgICAgICAgdmFyIGZyYW1lRHVyYXRpb24gPSBub3cgLSBmcmFtZVN0YXJ0VGltZTtcblxuICAgICAgICAgIGlmIChyZW5kZXJUaW1lIDwgZnVsbEZwc1RpbWUpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlJ3JlIHJlbmRlcmluZyBmYXN0ZXIgdGhhbiB0aGUgaWRlYWwgZnBzLCB0aGVuIGRvIGRlcXVldWVpbmdcbiAgICAgICAgICAgIC8vIGR1cmluZyBhbGwgb2YgdGhlIHJlbWFpbmluZyBmcmFtZSB0aW1lXG4gICAgICAgICAgICB2YXIgdGltZUF2YWlsYWJsZSA9IGZ1bGxGcHNUaW1lIC0gKHdpbGxEcmF3ID8gYXZnUmVuZGVyVGltZSA6IDApO1xuXG4gICAgICAgICAgICBpZiAoZnJhbWVEdXJhdGlvbiA+PSBvcHRzLmRlcUZhc3RDb3N0ICogdGltZUF2YWlsYWJsZSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdpbGxEcmF3KSB7XG4gICAgICAgICAgICAgIGlmIChkdXJhdGlvbiA+PSBvcHRzLmRlcUNvc3QgKiByZW5kZXJUaW1lIHx8IGR1cmF0aW9uID49IG9wdHMuZGVxQXZnQ29zdCAqIGF2Z1JlbmRlclRpbWUpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmcmFtZUR1cmF0aW9uID49IG9wdHMuZGVxTm9EcmF3Q29zdCAqIGZ1bGxGcHNUaW1lKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB0aGlzRGVxZCA9IG9wdHMuZGVxKHNlbGYsIHBpeGVsUmF0aW8sIGV4dGVudCk7XG5cbiAgICAgICAgICBpZiAodGhpc0RlcWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzRGVxZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBkZXFkLnB1c2godGhpc0RlcWRbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gY2FsbGJhY2tzIG9uIGRlcXVldWVcblxuXG4gICAgICAgIGlmIChkZXFkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBvcHRzLm9uRGVxZChzZWxmLCBkZXFkKTtcblxuICAgICAgICAgIGlmICghd2lsbERyYXcgJiYgb3B0cy5zaG91bGRSZWRyYXcoc2VsZiwgZGVxZCwgcGl4ZWxSYXRpbywgZXh0ZW50KSkge1xuICAgICAgICAgICAgcXVldWVSZWRyYXcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBwcmlvcml0eSA9IG9wdHMucHJpb3JpdHkgfHwgbm9vcDtcbiAgICAgIHIuYmVmb3JlUmVuZGVyKGRlcXVldWUsIHByaW9yaXR5KHNlbGYpKTtcbiAgICB9O1xuICB9XG59O1xuXG4vLyBVc2VzIGtleXMgc28gZWxlbWVudHMgbWF5IHNoYXJlIHRoZSBzYW1lIGNhY2hlLlxuXG52YXIgRWxlbWVudFRleHR1cmVDYWNoZUxvb2t1cCA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXAoZ2V0S2V5KSB7XG4gICAgdmFyIGRvZXNFbGVJbnZhbGlkYXRlS2V5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzaWZ5O1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXApO1xuXG4gICAgdGhpcy5pZHNCeUtleSA9IG5ldyBNYXAkMSgpO1xuICAgIHRoaXMua2V5Rm9ySWQgPSBuZXcgTWFwJDEoKTtcbiAgICB0aGlzLmNhY2hlc0J5THZsID0gbmV3IE1hcCQxKCk7XG4gICAgdGhpcy5sdmxzID0gW107XG4gICAgdGhpcy5nZXRLZXkgPSBnZXRLZXk7XG4gICAgdGhpcy5kb2VzRWxlSW52YWxpZGF0ZUtleSA9IGRvZXNFbGVJbnZhbGlkYXRlS2V5O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXAsIFt7XG4gICAga2V5OiBcImdldElkc0ZvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJZHNGb3Ioa2V5KSB7XG4gICAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgICAgZXJyb3IoXCJDYW4gbm90IGdldCBpZCBsaXN0IGZvciBudWxsIGtleVwiKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGlkc0J5S2V5ID0gdGhpcy5pZHNCeUtleTtcbiAgICAgIHZhciBpZHMgPSB0aGlzLmlkc0J5S2V5LmdldChrZXkpO1xuXG4gICAgICBpZiAoIWlkcykge1xuICAgICAgICBpZHMgPSBuZXcgU2V0JDEoKTtcbiAgICAgICAgaWRzQnlLZXkuc2V0KGtleSwgaWRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlkcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkSWRGb3JLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkSWRGb3JLZXkoa2V5LCBpZCkge1xuICAgICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuZ2V0SWRzRm9yKGtleSkuYWRkKGlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVsZXRlSWRGb3JLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVsZXRlSWRGb3JLZXkoa2V5LCBpZCkge1xuICAgICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuZ2V0SWRzRm9yKGtleSlbXCJkZWxldGVcIl0oaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXROdW1iZXJPZklkc0ZvcktleVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXROdW1iZXJPZklkc0ZvcktleShrZXkpIHtcbiAgICAgIGlmIChrZXkgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldElkc0ZvcihrZXkpLnNpemU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZUtleU1hcHBpbmdGb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlS2V5TWFwcGluZ0ZvcihlbGUpIHtcbiAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuICAgICAgdmFyIHByZXZLZXkgPSB0aGlzLmtleUZvcklkLmdldChpZCk7XG4gICAgICB2YXIgY3VycktleSA9IHRoaXMuZ2V0S2V5KGVsZSk7XG4gICAgICB0aGlzLmRlbGV0ZUlkRm9yS2V5KHByZXZLZXksIGlkKTtcbiAgICAgIHRoaXMuYWRkSWRGb3JLZXkoY3VycktleSwgaWQpO1xuICAgICAgdGhpcy5rZXlGb3JJZC5zZXQoaWQsIGN1cnJLZXkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZWxldGVLZXlNYXBwaW5nRm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlbGV0ZUtleU1hcHBpbmdGb3IoZWxlKSB7XG4gICAgICB2YXIgaWQgPSBlbGUuaWQoKTtcbiAgICAgIHZhciBwcmV2S2V5ID0gdGhpcy5rZXlGb3JJZC5nZXQoaWQpO1xuICAgICAgdGhpcy5kZWxldGVJZEZvcktleShwcmV2S2V5LCBpZCk7XG4gICAgICB0aGlzLmtleUZvcklkW1wiZGVsZXRlXCJdKGlkKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwia2V5SGFzQ2hhbmdlZEZvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBrZXlIYXNDaGFuZ2VkRm9yKGVsZSkge1xuICAgICAgdmFyIGlkID0gZWxlLmlkKCk7XG4gICAgICB2YXIgcHJldktleSA9IHRoaXMua2V5Rm9ySWQuZ2V0KGlkKTtcbiAgICAgIHZhciBuZXdLZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgcmV0dXJuIHByZXZLZXkgIT09IG5ld0tleTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNJbnZhbGlkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzSW52YWxpZChlbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmtleUhhc0NoYW5nZWRGb3IoZWxlKSB8fCB0aGlzLmRvZXNFbGVJbnZhbGlkYXRlS2V5KGVsZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENhY2hlc0F0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhY2hlc0F0KGx2bCkge1xuICAgICAgdmFyIGNhY2hlc0J5THZsID0gdGhpcy5jYWNoZXNCeUx2bCxcbiAgICAgICAgICBsdmxzID0gdGhpcy5sdmxzO1xuICAgICAgdmFyIGNhY2hlcyA9IGNhY2hlc0J5THZsLmdldChsdmwpO1xuXG4gICAgICBpZiAoIWNhY2hlcykge1xuICAgICAgICBjYWNoZXMgPSBuZXcgTWFwJDEoKTtcbiAgICAgICAgY2FjaGVzQnlMdmwuc2V0KGx2bCwgY2FjaGVzKTtcbiAgICAgICAgbHZscy5wdXNoKGx2bCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjYWNoZXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENhY2hlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhY2hlKGtleSwgbHZsKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDYWNoZXNBdChsdmwpLmdldChrZXkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KGVsZSwgbHZsKSB7XG4gICAgICB2YXIga2V5ID0gdGhpcy5nZXRLZXkoZWxlKTtcbiAgICAgIHZhciBjYWNoZSA9IHRoaXMuZ2V0Q2FjaGUoa2V5LCBsdmwpOyAvLyBnZXR0aW5nIGZvciBhbiBlbGVtZW50IG1heSBuZWVkIHRvIGFkZCB0byB0aGUgaWQgbGlzdCBiL2MgZWxlcyBjYW4gc2hhcmUga2V5c1xuXG4gICAgICBpZiAoY2FjaGUgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUtleU1hcHBpbmdGb3IoZWxlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhY2hlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGb3JDYWNoZWRLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Rm9yQ2FjaGVkS2V5KGVsZSwgbHZsKSB7XG4gICAgICB2YXIga2V5ID0gdGhpcy5rZXlGb3JJZC5nZXQoZWxlLmlkKCkpOyAvLyBuLmIuIHVzZSBjYWNoZWQga2V5LCBub3QgbmV3bHkgY29tcHV0ZWQga2V5XG5cbiAgICAgIHZhciBjYWNoZSA9IHRoaXMuZ2V0Q2FjaGUoa2V5LCBsdmwpO1xuICAgICAgcmV0dXJuIGNhY2hlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNDYWNoZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNDYWNoZShrZXksIGx2bCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FjaGVzQXQobHZsKS5oYXMoa2V5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhcyhlbGUsIGx2bCkge1xuICAgICAgdmFyIGtleSA9IHRoaXMuZ2V0S2V5KGVsZSk7XG4gICAgICByZXR1cm4gdGhpcy5oYXNDYWNoZShrZXksIGx2bCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENhY2hlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENhY2hlKGtleSwgbHZsLCBjYWNoZSkge1xuICAgICAgY2FjaGUua2V5ID0ga2V5O1xuICAgICAgdGhpcy5nZXRDYWNoZXNBdChsdmwpLnNldChrZXksIGNhY2hlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChlbGUsIGx2bCwgY2FjaGUpIHtcbiAgICAgIHZhciBrZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgdGhpcy5zZXRDYWNoZShrZXksIGx2bCwgY2FjaGUpO1xuICAgICAgdGhpcy51cGRhdGVLZXlNYXBwaW5nRm9yKGVsZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlbGV0ZUNhY2hlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlbGV0ZUNhY2hlKGtleSwgbHZsKSB7XG4gICAgICB0aGlzLmdldENhY2hlc0F0KGx2bClbXCJkZWxldGVcIl0oa2V5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVsZXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9kZWxldGUoZWxlLCBsdmwpIHtcbiAgICAgIHZhciBrZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgdGhpcy5kZWxldGVDYWNoZShrZXksIGx2bCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludmFsaWRhdGVLZXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW52YWxpZGF0ZUtleShrZXkpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHRoaXMubHZscy5mb3JFYWNoKGZ1bmN0aW9uIChsdmwpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmRlbGV0ZUNhY2hlKGtleSwgbHZsKTtcbiAgICAgIH0pO1xuICAgIH0gLy8gcmV0dXJucyB0cnVlIGlmIG5vIG90aGVyIGVsZXMgcmVmZXJlbmNlIHRoZSBpbnZhbGlkYXRlZCBjYWNoZSAobi5iLiBvdGhlciBlbGVzIG1heSBuZWVkIHRoZSBjYWNoZSB3aXRoIHRoZSBzYW1lIGtleSlcblxuICB9LCB7XG4gICAga2V5OiBcImludmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW52YWxpZGF0ZShlbGUpIHtcbiAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuICAgICAgdmFyIGtleSA9IHRoaXMua2V5Rm9ySWQuZ2V0KGlkKTsgLy8gbi5iLiB1c2Ugc3RvcmVkIGtleSByYXRoZXIgdGhhbiBjdXJyZW50IChwb3RlbnRpYWwga2V5KVxuXG4gICAgICB0aGlzLmRlbGV0ZUtleU1hcHBpbmdGb3IoZWxlKTtcbiAgICAgIHZhciBlbnRpcmVLZXlJbnZhbGlkYXRlZCA9IHRoaXMuZG9lc0VsZUludmFsaWRhdGVLZXkoZWxlKTtcblxuICAgICAgaWYgKGVudGlyZUtleUludmFsaWRhdGVkKSB7XG4gICAgICAgIC8vIGNsZWFyIG1hcHBpbmcgZm9yIGN1cnJlbnQga2V5XG4gICAgICAgIHRoaXMuaW52YWxpZGF0ZUtleShrZXkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW50aXJlS2V5SW52YWxpZGF0ZWQgfHwgdGhpcy5nZXROdW1iZXJPZklkc0ZvcktleShrZXkpID09PSAwO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBFbGVtZW50VGV4dHVyZUNhY2hlTG9va3VwO1xufSgpO1xuXG52YXIgbWluVHhySCA9IDI1OyAvLyB0aGUgc2l6ZSBvZiB0aGUgdGV4dHVyZSBjYWNoZSBmb3Igc21hbGwgaGVpZ2h0IGVsZXMgKHNwZWNpYWwgY2FzZSlcblxudmFyIHR4clN0ZXBIID0gNTA7IC8vIHRoZSBtaW4gc2l6ZSBvZiB0aGUgcmVndWxhciBjYWNoZSwgYW5kIHRoZSBzaXplIGl0IGluY3JlYXNlcyB3aXRoIGVhY2ggc3RlcCB1cFxuXG52YXIgbWluTHZsID0gLTQ7IC8vIHdoZW4gc2NhbGluZyBzbWFsbGVyIHRoYW4gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHJlLXJlbmRlclxuXG52YXIgbWF4THZsID0gMzsgLy8gd2hlbiBsYXJnZXIgdGhhbiB0aGlzIHNjYWxlIGp1c3QgcmVuZGVyIGRpcmVjdGx5IChjYWNoaW5nIGlzIG5vdCBoZWxwZnVsKVxuXG52YXIgbWF4Wm9vbSA9IDcuOTk7IC8vIGJleW9uZCB0aGlzIHpvb20gbGV2ZWwsIGxheWVyZWQgdGV4dHVyZXMgYXJlIG5vdCB1c2VkXG5cbnZhciBlbGVUeHJTcGFjaW5nID0gODsgLy8gc3BhY2luZyBiZXR3ZWVuIGVsZW1lbnRzIG9uIHRleHR1cmVzIHRvIGF2b2lkIGJsaXR0aW5nIG92ZXJsYXBzXG5cbnZhciBkZWZUeHJXaWR0aCA9IDEwMjQ7IC8vIGRlZmF1bHQvbWluaW11bSB0ZXh0dXJlIHdpZHRoXG5cbnZhciBtYXhUeHJXID0gMTAyNDsgLy8gdGhlIG1heGltdW0gd2lkdGggb2YgYSB0ZXh0dXJlXG5cbnZhciBtYXhUeHJIID0gMTAyNDsgLy8gdGhlIG1heGltdW0gaGVpZ2h0IG9mIGEgdGV4dHVyZVxuXG52YXIgbWluVXRpbGl0eSA9IDAuMjsgLy8gaWYgdXNhZ2Ugb2YgdGV4dHVyZSBpcyBsZXNzIHRoYW4gdGhpcywgaXQgaXMgcmV0aXJlZFxuXG52YXIgbWF4RnVsbG5lc3MgPSAwLjg7IC8vIGZ1bGxuZXNzIG9mIHRleHR1cmUgYWZ0ZXIgd2hpY2ggcXVldWUgcmVtb3ZhbCBpcyBjaGVja2VkXG5cbnZhciBtYXhGdWxsbmVzc0NoZWNrcyA9IDEwOyAvLyBkZXF1ZXVlZCBhZnRlciB0aGlzIG1hbnkgY2hlY2tzXG5cbnZhciBkZXFDb3N0ID0gMC4xNTsgLy8gJSBvZiBhZGQnbCByZW5kZXJpbmcgY29zdCBhbGxvd2VkIGZvciBkZXF1ZXVpbmcgZWxlIGNhY2hlcyBlYWNoIGZyYW1lXG5cbnZhciBkZXFBdmdDb3N0ID0gMC4xOyAvLyAlIG9mIGFkZCdsIHJlbmRlcmluZyBjb3N0IGNvbXBhcmVkIHRvIGF2ZXJhZ2Ugb3ZlcmFsbCByZWRyYXcgdGltZVxuXG52YXIgZGVxTm9EcmF3Q29zdCA9IDAuOTsgLy8gJSBvZiBhdmcgZnJhbWUgdGltZSB0aGF0IGNhbiBiZSB1c2VkIGZvciBkZXF1ZXVlaW5nIHdoZW4gbm90IGRyYXdpbmdcblxudmFyIGRlcUZhc3RDb3N0ID0gMC45OyAvLyAlIG9mIGZyYW1lIHRpbWUgdG8gYmUgdXNlZCB3aGVuID42MGZwc1xuXG52YXIgZGVxUmVkcmF3VGhyZXNob2xkID0gMTAwOyAvLyB0aW1lIHRvIGJhdGNoIHJlZHJhd3MgdG9nZXRoZXIgZnJvbSBkZXF1ZXVlaW5nIHRvIGFsbG93IG1vcmUgZGVxdWV1ZWluZyBjYWxjcyB0byBoYXBwZW4gaW4gdGhlIG1lYW53aGlsZVxuXG52YXIgbWF4RGVxU2l6ZSA9IDE7IC8vIG51bWJlciBvZiBlbGVzIHRvIGRlcXVldWUgYW5kIHJlbmRlciBhdCBoaWdoZXIgdGV4dHVyZSBpbiBlYWNoIGJhdGNoXG5cbnZhciBnZXRUeHJSZWFzb25zID0ge1xuICBkZXF1ZXVlOiAnZGVxdWV1ZScsXG4gIGRvd25zY2FsZTogJ2Rvd25zY2FsZScsXG4gIGhpZ2hRdWFsaXR5OiAnaGlnaFF1YWxpdHknXG59O1xudmFyIGluaXREZWZhdWx0cyA9IGRlZmF1bHRzKHtcbiAgZ2V0S2V5OiBudWxsLFxuICBkb2VzRWxlSW52YWxpZGF0ZUtleTogZmFsc2lmeSxcbiAgZHJhd0VsZW1lbnQ6IG51bGwsXG4gIGdldEJvdW5kaW5nQm94OiBudWxsLFxuICBnZXRSb3RhdGlvblBvaW50OiBudWxsLFxuICBnZXRSb3RhdGlvbk9mZnNldDogbnVsbCxcbiAgaXNWaXNpYmxlOiB0cnVlaWZ5LFxuICBhbGxvd0VkZ2VUeHJDYWNoaW5nOiB0cnVlLFxuICBhbGxvd1BhcmVudFR4ckNhY2hpbmc6IHRydWVcbn0pO1xuXG52YXIgRWxlbWVudFRleHR1cmVDYWNoZSA9IGZ1bmN0aW9uIEVsZW1lbnRUZXh0dXJlQ2FjaGUocmVuZGVyZXIsIGluaXRPcHRpb25zKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgc2VsZi5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICBzZWxmLm9uRGVxdWV1ZXMgPSBbXTtcbiAgdmFyIG9wdHMgPSBpbml0RGVmYXVsdHMoaW5pdE9wdGlvbnMpO1xuICBleHRlbmQoc2VsZiwgb3B0cyk7XG4gIHNlbGYubG9va3VwID0gbmV3IEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXAob3B0cy5nZXRLZXksIG9wdHMuZG9lc0VsZUludmFsaWRhdGVLZXkpO1xuICBzZWxmLnNldHVwRGVxdWV1ZWluZygpO1xufTtcblxudmFyIEVUQ3AgPSBFbGVtZW50VGV4dHVyZUNhY2hlLnByb3RvdHlwZTtcbkVUQ3AucmVhc29ucyA9IGdldFR4clJlYXNvbnM7IC8vIHRoZSBsaXN0IG9mIHRleHR1cmVzIGluIHdoaWNoIG5ldyBzdWJ0ZXh0dXJlcyBmb3IgZWxlbWVudHMgY2FuIGJlIHBsYWNlZFxuXG5FVENwLmdldFRleHR1cmVRdWV1ZSA9IGZ1bmN0aW9uICh0eHJIKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgc2VsZi5lbGVJbWdDYWNoZXMgPSBzZWxmLmVsZUltZ0NhY2hlcyB8fCB7fTtcbiAgcmV0dXJuIHNlbGYuZWxlSW1nQ2FjaGVzW3R4ckhdID0gc2VsZi5lbGVJbWdDYWNoZXNbdHhySF0gfHwgW107XG59OyAvLyB0aGUgbGlzdCBvZiB1c3VzZWQgdGV4dHVyZXMgd2hpY2ggY2FuIGJlIHJlY3ljbGVkIChpbiB1c2UgaW4gdGV4dHVyZSBxdWV1ZSlcblxuXG5FVENwLmdldFJldGlyZWRUZXh0dXJlUXVldWUgPSBmdW5jdGlvbiAodHhySCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBydHh0clFzID0gc2VsZi5lbGVJbWdDYWNoZXMucmV0aXJlZCA9IHNlbGYuZWxlSW1nQ2FjaGVzLnJldGlyZWQgfHwge307XG4gIHZhciBydHh0clEgPSBydHh0clFzW3R4ckhdID0gcnR4dHJRc1t0eHJIXSB8fCBbXTtcbiAgcmV0dXJuIHJ0eHRyUTtcbn07IC8vIHF1ZXVlIG9mIGVsZW1lbnQgZHJhdyByZXF1ZXN0cyBhdCBkaWZmZXJlbnQgc2NhbGUgbGV2ZWxzXG5cblxuRVRDcC5nZXRFbGVtZW50UXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHEgPSBzZWxmLmVsZUNhY2hlUXVldWUgPSBzZWxmLmVsZUNhY2hlUXVldWUgfHwgbmV3IEhlYXAoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5yZXFzIC0gYS5yZXFzO1xuICB9KTtcbiAgcmV0dXJuIHE7XG59OyAvLyBxdWV1ZSBvZiBlbGVtZW50IGRyYXcgcmVxdWVzdHMgYXQgZGlmZmVyZW50IHNjYWxlIGxldmVscyAoZWxlbWVudCBpZCBsb29rdXApXG5cblxuRVRDcC5nZXRFbGVtZW50S2V5VG9RdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgazJxID0gc2VsZi5lbGVLZXlUb0NhY2hlUXVldWUgPSBzZWxmLmVsZUtleVRvQ2FjaGVRdWV1ZSB8fCB7fTtcbiAgcmV0dXJuIGsycTtcbn07XG5cbkVUQ3AuZ2V0RWxlbWVudCA9IGZ1bmN0aW9uIChlbGUsIGJiLCBweFJhdGlvLCBsdmwsIHJlYXNvbikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByID0gdGhpcy5yZW5kZXJlcjtcbiAgdmFyIHpvb20gPSByLmN5Lnpvb20oKTtcbiAgdmFyIGxvb2t1cCA9IHRoaXMubG9va3VwO1xuXG4gIGlmICghYmIgfHwgYmIudyA9PT0gMCB8fCBiYi5oID09PSAwIHx8IGlzTmFOKGJiLncpIHx8IGlzTmFOKGJiLmgpIHx8ICFlbGUudmlzaWJsZSgpIHx8IGVsZS5yZW1vdmVkKCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICghc2VsZi5hbGxvd0VkZ2VUeHJDYWNoaW5nICYmIGVsZS5pc0VkZ2UoKSB8fCAhc2VsZi5hbGxvd1BhcmVudFR4ckNhY2hpbmcgJiYgZWxlLmlzUGFyZW50KCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChsdmwgPT0gbnVsbCkge1xuICAgIGx2bCA9IE1hdGguY2VpbChsb2cyKHpvb20gKiBweFJhdGlvKSk7XG4gIH1cblxuICBpZiAobHZsIDwgbWluTHZsKSB7XG4gICAgbHZsID0gbWluTHZsO1xuICB9IGVsc2UgaWYgKHpvb20gPj0gbWF4Wm9vbSB8fCBsdmwgPiBtYXhMdmwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IE1hdGgucG93KDIsIGx2bCk7XG4gIHZhciBlbGVTY2FsZWRIID0gYmIuaCAqIHNjYWxlO1xuICB2YXIgZWxlU2NhbGVkVyA9IGJiLncgKiBzY2FsZTtcbiAgdmFyIHNjYWxlZExhYmVsU2hvd24gPSByLmVsZVRleHRCaWdnZXJUaGFuTWluKGVsZSwgc2NhbGUpO1xuXG4gIGlmICghdGhpcy5pc1Zpc2libGUoZWxlLCBzY2FsZWRMYWJlbFNob3duKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGVsZUNhY2hlID0gbG9va3VwLmdldChlbGUsIGx2bCk7IC8vIGlmIHRoaXMgZ2V0IHdhcyBvbiBhbiB1bnVzZWQvaW52YWxpZGF0ZWQgY2FjaGUsIHRoZW4gcmVzdG9yZSB0aGUgdGV4dHVyZSB1c2FnZSBtZXRyaWNcblxuICBpZiAoZWxlQ2FjaGUgJiYgZWxlQ2FjaGUuaW52YWxpZGF0ZWQpIHtcbiAgICBlbGVDYWNoZS5pbnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgIGVsZUNhY2hlLnRleHR1cmUuaW52YWxpZGF0ZWRXaWR0aCAtPSBlbGVDYWNoZS53aWR0aDtcbiAgfVxuXG4gIGlmIChlbGVDYWNoZSkge1xuICAgIHJldHVybiBlbGVDYWNoZTtcbiAgfVxuXG4gIHZhciB0eHJIOyAvLyB3aGljaCB0ZXh0dXJlIGhlaWdodCB0aGlzIGVsZSBiZWxvbmdzIHRvXG5cbiAgaWYgKGVsZVNjYWxlZEggPD0gbWluVHhySCkge1xuICAgIHR4ckggPSBtaW5UeHJIO1xuICB9IGVsc2UgaWYgKGVsZVNjYWxlZEggPD0gdHhyU3RlcEgpIHtcbiAgICB0eHJIID0gdHhyU3RlcEg7XG4gIH0gZWxzZSB7XG4gICAgdHhySCA9IE1hdGguY2VpbChlbGVTY2FsZWRIIC8gdHhyU3RlcEgpICogdHhyU3RlcEg7XG4gIH1cblxuICBpZiAoZWxlU2NhbGVkSCA+IG1heFR4ckggfHwgZWxlU2NhbGVkVyA+IG1heFR4clcpIHtcbiAgICByZXR1cm4gbnVsbDsgLy8gY2FjaGluZyBsYXJnZSBlbGVtZW50cyBpcyBub3QgZWZmaWNpZW50XG4gIH1cblxuICB2YXIgdHhyUSA9IHNlbGYuZ2V0VGV4dHVyZVF1ZXVlKHR4ckgpOyAvLyBmaXJzdCB0cnkgdGhlIHNlY29uZCBsYXN0IG9uZSBpbiBjYXNlIGl0IGhhcyBzcGFjZSBhdCB0aGUgZW5kXG5cbiAgdmFyIHR4ciA9IHR4clFbdHhyUS5sZW5ndGggLSAyXTtcblxuICB2YXIgYWRkTmV3VHhyID0gZnVuY3Rpb24gYWRkTmV3VHhyKCkge1xuICAgIHJldHVybiBzZWxmLnJlY3ljbGVUZXh0dXJlKHR4ckgsIGVsZVNjYWxlZFcpIHx8IHNlbGYuYWRkVGV4dHVyZSh0eHJILCBlbGVTY2FsZWRXKTtcbiAgfTsgLy8gdHJ5IHRoZSBsYXN0IG9uZSBpZiB0aGVyZSBpcyBubyBzZWNvbmQgbGFzdCBvbmVcblxuXG4gIGlmICghdHhyKSB7XG4gICAgdHhyID0gdHhyUVt0eHJRLmxlbmd0aCAtIDFdO1xuICB9IC8vIGlmIHRoZSBsYXN0IG9uZSBkb2Vzbid0IGV4aXN0LCB3ZSBuZWVkIGEgZmlyc3Qgb25lXG5cblxuICBpZiAoIXR4cikge1xuICAgIHR4ciA9IGFkZE5ld1R4cigpO1xuICB9IC8vIGlmIHRoZXJlJ3Mgbm8gcm9vbSBpbiB0aGUgY3VycmVudCB0ZXh0dXJlLCB3ZSBuZWVkIGEgbmV3IG9uZVxuXG5cbiAgaWYgKHR4ci53aWR0aCAtIHR4ci51c2VkV2lkdGggPCBlbGVTY2FsZWRXKSB7XG4gICAgdHhyID0gYWRkTmV3VHhyKCk7XG4gIH1cblxuICB2YXIgc2NhbGFibGVGcm9tID0gZnVuY3Rpb24gc2NhbGFibGVGcm9tKG90aGVyQ2FjaGUpIHtcbiAgICByZXR1cm4gb3RoZXJDYWNoZSAmJiBvdGhlckNhY2hlLnNjYWxlZExhYmVsU2hvd24gPT09IHNjYWxlZExhYmVsU2hvd247XG4gIH07XG5cbiAgdmFyIGRlcWluZyA9IHJlYXNvbiAmJiByZWFzb24gPT09IGdldFR4clJlYXNvbnMuZGVxdWV1ZTtcbiAgdmFyIGhpZ2hRdWFsaXR5UmVxID0gcmVhc29uICYmIHJlYXNvbiA9PT0gZ2V0VHhyUmVhc29ucy5oaWdoUXVhbGl0eTtcbiAgdmFyIGRvd25zY2FsZVJlcSA9IHJlYXNvbiAmJiByZWFzb24gPT09IGdldFR4clJlYXNvbnMuZG93bnNjYWxlO1xuICB2YXIgaGlnaGVyQ2FjaGU7IC8vIHRoZSBuZWFyZXN0IGNhY2hlIHdpdGggYSBoaWdoZXIgbGV2ZWxcblxuICBmb3IgKHZhciBsID0gbHZsICsgMTsgbCA8PSBtYXhMdmw7IGwrKykge1xuICAgIHZhciBjID0gbG9va3VwLmdldChlbGUsIGwpO1xuXG4gICAgaWYgKGMpIHtcbiAgICAgIGhpZ2hlckNhY2hlID0gYztcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciBvbmVVcENhY2hlID0gaGlnaGVyQ2FjaGUgJiYgaGlnaGVyQ2FjaGUubGV2ZWwgPT09IGx2bCArIDEgPyBoaWdoZXJDYWNoZSA6IG51bGw7XG5cbiAgdmFyIGRvd25zY2FsZSA9IGZ1bmN0aW9uIGRvd25zY2FsZSgpIHtcbiAgICB0eHIuY29udGV4dC5kcmF3SW1hZ2Uob25lVXBDYWNoZS50ZXh0dXJlLmNhbnZhcywgb25lVXBDYWNoZS54LCAwLCBvbmVVcENhY2hlLndpZHRoLCBvbmVVcENhY2hlLmhlaWdodCwgdHhyLnVzZWRXaWR0aCwgMCwgZWxlU2NhbGVkVywgZWxlU2NhbGVkSCk7XG4gIH07IC8vIHJlc2V0IGVsZSBhcmVhIGluIHRleHR1cmVcblxuXG4gIHR4ci5jb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcbiAgdHhyLmNvbnRleHQuY2xlYXJSZWN0KHR4ci51c2VkV2lkdGgsIDAsIGVsZVNjYWxlZFcsIHR4ckgpO1xuXG4gIGlmIChzY2FsYWJsZUZyb20ob25lVXBDYWNoZSkpIHtcbiAgICAvLyB0aGVuIHdlIGNhbiByZWxhdGl2ZWx5IGNoZWFwbHkgcmVzY2FsZSB0aGUgZXhpc3RpbmcgaW1hZ2Ugdy9vIHJlcmVuZGVyaW5nXG4gICAgZG93bnNjYWxlKCk7XG4gIH0gZWxzZSBpZiAoc2NhbGFibGVGcm9tKGhpZ2hlckNhY2hlKSkge1xuICAgIC8vIHRoZW4gdXNlIHRoZSBoaWdoZXIgY2FjaGUgZm9yIG5vdyBhbmQgcXVldWUgdGhlIG5leHQgbGV2ZWwgZG93blxuICAgIC8vIHRvIGNoZWFwbHkgc2NhbGUgdG93YXJkcyB0aGUgc21hbGxlciBsZXZlbFxuICAgIGlmIChoaWdoUXVhbGl0eVJlcSkge1xuICAgICAgZm9yICh2YXIgX2wgPSBoaWdoZXJDYWNoZS5sZXZlbDsgX2wgPiBsdmw7IF9sLS0pIHtcbiAgICAgICAgb25lVXBDYWNoZSA9IHNlbGYuZ2V0RWxlbWVudChlbGUsIGJiLCBweFJhdGlvLCBfbCwgZ2V0VHhyUmVhc29ucy5kb3duc2NhbGUpO1xuICAgICAgfVxuXG4gICAgICBkb3duc2NhbGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5xdWV1ZUVsZW1lbnQoZWxlLCBoaWdoZXJDYWNoZS5sZXZlbCAtIDEpO1xuICAgICAgcmV0dXJuIGhpZ2hlckNhY2hlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgbG93ZXJDYWNoZTsgLy8gdGhlIG5lYXJlc3QgY2FjaGUgd2l0aCBhIGxvd2VyIGxldmVsXG5cbiAgICBpZiAoIWRlcWluZyAmJiAhaGlnaFF1YWxpdHlSZXEgJiYgIWRvd25zY2FsZVJlcSkge1xuICAgICAgZm9yICh2YXIgX2wyID0gbHZsIC0gMTsgX2wyID49IG1pbkx2bDsgX2wyLS0pIHtcbiAgICAgICAgdmFyIF9jID0gbG9va3VwLmdldChlbGUsIF9sMik7XG5cbiAgICAgICAgaWYgKF9jKSB7XG4gICAgICAgICAgbG93ZXJDYWNoZSA9IF9jO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNjYWxhYmxlRnJvbShsb3dlckNhY2hlKSkge1xuICAgICAgLy8gdGhlbiB1c2UgdGhlIGxvd2VyIHF1YWxpdHkgY2FjaGUgZm9yIG5vdyBhbmQgcXVldWUgdGhlIGJldHRlciBvbmUgZm9yIGxhdGVyXG4gICAgICBzZWxmLnF1ZXVlRWxlbWVudChlbGUsIGx2bCk7XG4gICAgICByZXR1cm4gbG93ZXJDYWNoZTtcbiAgICB9XG5cbiAgICB0eHIuY29udGV4dC50cmFuc2xhdGUodHhyLnVzZWRXaWR0aCwgMCk7XG4gICAgdHhyLmNvbnRleHQuc2NhbGUoc2NhbGUsIHNjYWxlKTtcbiAgICB0aGlzLmRyYXdFbGVtZW50KHR4ci5jb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCBmYWxzZSk7XG4gICAgdHhyLmNvbnRleHQuc2NhbGUoMSAvIHNjYWxlLCAxIC8gc2NhbGUpO1xuICAgIHR4ci5jb250ZXh0LnRyYW5zbGF0ZSgtdHhyLnVzZWRXaWR0aCwgMCk7XG4gIH1cblxuICBlbGVDYWNoZSA9IHtcbiAgICB4OiB0eHIudXNlZFdpZHRoLFxuICAgIHRleHR1cmU6IHR4cixcbiAgICBsZXZlbDogbHZsLFxuICAgIHNjYWxlOiBzY2FsZSxcbiAgICB3aWR0aDogZWxlU2NhbGVkVyxcbiAgICBoZWlnaHQ6IGVsZVNjYWxlZEgsXG4gICAgc2NhbGVkTGFiZWxTaG93bjogc2NhbGVkTGFiZWxTaG93blxuICB9O1xuICB0eHIudXNlZFdpZHRoICs9IE1hdGguY2VpbChlbGVTY2FsZWRXICsgZWxlVHhyU3BhY2luZyk7XG4gIHR4ci5lbGVDYWNoZXMucHVzaChlbGVDYWNoZSk7XG4gIGxvb2t1cC5zZXQoZWxlLCBsdmwsIGVsZUNhY2hlKTtcbiAgc2VsZi5jaGVja1RleHR1cmVGdWxsbmVzcyh0eHIpO1xuICByZXR1cm4gZWxlQ2FjaGU7XG59O1xuXG5FVENwLmludmFsaWRhdGVFbGVtZW50cyA9IGZ1bmN0aW9uIChlbGVzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuaW52YWxpZGF0ZUVsZW1lbnQoZWxlc1tpXSk7XG4gIH1cbn07XG5cbkVUQ3AuaW52YWxpZGF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGxvb2t1cCA9IHNlbGYubG9va3VwO1xuICB2YXIgY2FjaGVzID0gW107XG4gIHZhciBpbnZhbGlkID0gbG9va3VwLmlzSW52YWxpZChlbGUpO1xuXG4gIGlmICghaW52YWxpZCkge1xuICAgIHJldHVybjsgLy8gb3ZlcnJpZGUgdGhlIGludmFsaWRhdGlvbiByZXF1ZXN0IGlmIHRoZSBlbGVtZW50IGtleSBoYXMgbm90IGNoYW5nZWRcbiAgfVxuXG4gIGZvciAodmFyIGx2bCA9IG1pbkx2bDsgbHZsIDw9IG1heEx2bDsgbHZsKyspIHtcbiAgICB2YXIgY2FjaGUgPSBsb29rdXAuZ2V0Rm9yQ2FjaGVkS2V5KGVsZSwgbHZsKTtcblxuICAgIGlmIChjYWNoZSkge1xuICAgICAgY2FjaGVzLnB1c2goY2FjaGUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBub090aGVyRWxlc1VzZUNhY2hlID0gbG9va3VwLmludmFsaWRhdGUoZWxlKTtcblxuICBpZiAobm9PdGhlckVsZXNVc2VDYWNoZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgX2NhY2hlID0gY2FjaGVzW2ldO1xuICAgICAgdmFyIHR4ciA9IF9jYWNoZS50ZXh0dXJlOyAvLyByZW1vdmUgc3BhY2UgZnJvbSB0aGUgdGV4dHVyZSBpdCBiZWxvbmdzIHRvXG5cbiAgICAgIHR4ci5pbnZhbGlkYXRlZFdpZHRoICs9IF9jYWNoZS53aWR0aDsgLy8gbWFyayB0aGUgY2FjaGUgYXMgaW52YWxpZGF0ZWRcblxuICAgICAgX2NhY2hlLmludmFsaWRhdGVkID0gdHJ1ZTsgLy8gcmV0aXJlIHRoZSB0ZXh0dXJlIGlmIGl0cyB1dGlsaXR5IGlzIGxvd1xuXG4gICAgICBzZWxmLmNoZWNrVGV4dHVyZVV0aWxpdHkodHhyKTtcbiAgICB9XG4gIH0gLy8gcmVtb3ZlIGZyb20gcXVldWUgc2luY2UgdGhlIG9sZCByZXEgd2FzIGZvciB0aGUgb2xkIHN0YXRlXG5cblxuICBzZWxmLnJlbW92ZUZyb21RdWV1ZShlbGUpO1xufTtcblxuRVRDcC5jaGVja1RleHR1cmVVdGlsaXR5ID0gZnVuY3Rpb24gKHR4cikge1xuICAvLyBpbnZhbGlkYXRlIGFsbCBlbnRyaWVzIGluIHRoZSBjYWNoZSBpZiB0aGUgY2FjaGUgc2l6ZSBpcyBzbWFsbFxuICBpZiAodHhyLmludmFsaWRhdGVkV2lkdGggPj0gbWluVXRpbGl0eSAqIHR4ci53aWR0aCkge1xuICAgIHRoaXMucmV0aXJlVGV4dHVyZSh0eHIpO1xuICB9XG59O1xuXG5FVENwLmNoZWNrVGV4dHVyZUZ1bGxuZXNzID0gZnVuY3Rpb24gKHR4cikge1xuICAvLyBpZiB0ZXh0dXJlIGhhcyBiZWVuIG1vc3RseSBmaWxsZWQgYW5kIHBhc3NlZCBvdmVyIHNldmVyYWwgdGltZXMsIHJlbW92ZVxuICAvLyBpdCBmcm9tIHRoZSBxdWV1ZSBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhc3RlIHRpbWUgbG9va2luZyBhdCBpdCB0byBwdXQgbmV3IHRoaW5nc1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhyLmhlaWdodCk7XG5cbiAgaWYgKHR4ci51c2VkV2lkdGggLyB0eHIud2lkdGggPiBtYXhGdWxsbmVzcyAmJiB0eHIuZnVsbG5lc3NDaGVja3MgPj0gbWF4RnVsbG5lc3NDaGVja3MpIHtcbiAgICByZW1vdmVGcm9tQXJyYXkodHhyUSwgdHhyKTtcbiAgfSBlbHNlIHtcbiAgICB0eHIuZnVsbG5lc3NDaGVja3MrKztcbiAgfVxufTtcblxuRVRDcC5yZXRpcmVUZXh0dXJlID0gZnVuY3Rpb24gKHR4cikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJIID0gdHhyLmhlaWdodDtcbiAgdmFyIHR4clEgPSBzZWxmLmdldFRleHR1cmVRdWV1ZSh0eHJIKTtcbiAgdmFyIGxvb2t1cCA9IHRoaXMubG9va3VwOyAvLyByZXRpcmUgdGhlIHRleHR1cmUgZnJvbSB0aGUgYWN0aXZlIC8gc2VhcmNoYWJsZSBxdWV1ZTpcblxuICByZW1vdmVGcm9tQXJyYXkodHhyUSwgdHhyKTtcbiAgdHhyLnJldGlyZWQgPSB0cnVlOyAvLyByZW1vdmUgdGhlIHJlZnMgZnJvbSB0aGUgZWxlcyB0byB0aGUgY2FjaGVzOlxuXG4gIHZhciBlbGVDYWNoZXMgPSB0eHIuZWxlQ2FjaGVzO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlQ2FjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZUNhY2hlID0gZWxlQ2FjaGVzW2ldO1xuICAgIGxvb2t1cC5kZWxldGVDYWNoZShlbGVDYWNoZS5rZXksIGVsZUNhY2hlLmxldmVsKTtcbiAgfVxuXG4gIGNsZWFyQXJyYXkoZWxlQ2FjaGVzKTsgLy8gYWRkIHRoZSB0ZXh0dXJlIHRvIGEgcmV0aXJlZCBxdWV1ZSBzbyBpdCBjYW4gYmUgcmVjeWNsZWQgaW4gZnV0dXJlOlxuXG4gIHZhciBydHh0clEgPSBzZWxmLmdldFJldGlyZWRUZXh0dXJlUXVldWUodHhySCk7XG4gIHJ0eHRyUS5wdXNoKHR4cik7XG59O1xuXG5FVENwLmFkZFRleHR1cmUgPSBmdW5jdGlvbiAodHhySCwgbWluVykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhySCk7XG4gIHZhciB0eHIgPSB7fTtcbiAgdHhyUS5wdXNoKHR4cik7XG4gIHR4ci5lbGVDYWNoZXMgPSBbXTtcbiAgdHhyLmhlaWdodCA9IHR4ckg7XG4gIHR4ci53aWR0aCA9IE1hdGgubWF4KGRlZlR4cldpZHRoLCBtaW5XKTtcbiAgdHhyLnVzZWRXaWR0aCA9IDA7XG4gIHR4ci5pbnZhbGlkYXRlZFdpZHRoID0gMDtcbiAgdHhyLmZ1bGxuZXNzQ2hlY2tzID0gMDtcbiAgdHhyLmNhbnZhcyA9IHNlbGYucmVuZGVyZXIubWFrZU9mZnNjcmVlbkNhbnZhcyh0eHIud2lkdGgsIHR4ci5oZWlnaHQpO1xuICB0eHIuY29udGV4dCA9IHR4ci5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgcmV0dXJuIHR4cjtcbn07XG5cbkVUQ3AucmVjeWNsZVRleHR1cmUgPSBmdW5jdGlvbiAodHhySCwgbWluVykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhySCk7XG4gIHZhciBydHh0clEgPSBzZWxmLmdldFJldGlyZWRUZXh0dXJlUXVldWUodHhySCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBydHh0clEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdHhyID0gcnR4dHJRW2ldO1xuXG4gICAgaWYgKHR4ci53aWR0aCA+PSBtaW5XKSB7XG4gICAgICB0eHIucmV0aXJlZCA9IGZhbHNlO1xuICAgICAgdHhyLnVzZWRXaWR0aCA9IDA7XG4gICAgICB0eHIuaW52YWxpZGF0ZWRXaWR0aCA9IDA7XG4gICAgICB0eHIuZnVsbG5lc3NDaGVja3MgPSAwO1xuICAgICAgY2xlYXJBcnJheSh0eHIuZWxlQ2FjaGVzKTtcbiAgICAgIHR4ci5jb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcbiAgICAgIHR4ci5jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0eHIud2lkdGgsIHR4ci5oZWlnaHQpO1xuICAgICAgcmVtb3ZlRnJvbUFycmF5KHJ0eHRyUSwgdHhyKTtcbiAgICAgIHR4clEucHVzaCh0eHIpO1xuICAgICAgcmV0dXJuIHR4cjtcbiAgICB9XG4gIH1cbn07XG5cbkVUQ3AucXVldWVFbGVtZW50ID0gZnVuY3Rpb24gKGVsZSwgbHZsKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHEgPSBzZWxmLmdldEVsZW1lbnRRdWV1ZSgpO1xuICB2YXIgazJxID0gc2VsZi5nZXRFbGVtZW50S2V5VG9RdWV1ZSgpO1xuICB2YXIga2V5ID0gdGhpcy5nZXRLZXkoZWxlKTtcbiAgdmFyIGV4aXN0aW5nUmVxID0gazJxW2tleV07XG5cbiAgaWYgKGV4aXN0aW5nUmVxKSB7XG4gICAgLy8gdXNlIHRoZSBtYXggbHZsIGIvYyBpbiBiZXR3ZWVuIGx2bHMgYXJlIGNoZWFwIHRvIG1ha2VcbiAgICBleGlzdGluZ1JlcS5sZXZlbCA9IE1hdGgubWF4KGV4aXN0aW5nUmVxLmxldmVsLCBsdmwpO1xuICAgIGV4aXN0aW5nUmVxLmVsZXMubWVyZ2UoZWxlKTtcbiAgICBleGlzdGluZ1JlcS5yZXFzKys7XG4gICAgcS51cGRhdGVJdGVtKGV4aXN0aW5nUmVxKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcmVxID0ge1xuICAgICAgZWxlczogZWxlLnNwYXduKCkubWVyZ2UoZWxlKSxcbiAgICAgIGxldmVsOiBsdmwsXG4gICAgICByZXFzOiAxLFxuICAgICAga2V5OiBrZXlcbiAgICB9O1xuICAgIHEucHVzaChyZXEpO1xuICAgIGsycVtrZXldID0gcmVxO1xuICB9XG59O1xuXG5FVENwLmRlcXVldWUgPSBmdW5jdGlvbiAocHhSYXRpb1xuLyosIGV4dGVudCovXG4pIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgcSA9IHNlbGYuZ2V0RWxlbWVudFF1ZXVlKCk7XG4gIHZhciBrMnEgPSBzZWxmLmdldEVsZW1lbnRLZXlUb1F1ZXVlKCk7XG4gIHZhciBkZXF1ZXVlZCA9IFtdO1xuICB2YXIgbG9va3VwID0gc2VsZi5sb29rdXA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXhEZXFTaXplOyBpKyspIHtcbiAgICBpZiAocS5zaXplKCkgPiAwKSB7XG4gICAgICB2YXIgcmVxID0gcS5wb3AoKTtcbiAgICAgIHZhciBrZXkgPSByZXEua2V5O1xuICAgICAgdmFyIGVsZSA9IHJlcS5lbGVzWzBdOyAvLyBhbGwgZWxlcyBoYXZlIHRoZSBzYW1lIGtleVxuXG4gICAgICB2YXIgY2FjaGVFeGlzdHMgPSBsb29rdXAuaGFzQ2FjaGUoZWxlLCByZXEubGV2ZWwpOyAvLyBjbGVhciBvdXQgdGhlIGtleSB0byByZXEgbG9va3VwXG5cbiAgICAgIGsycVtrZXldID0gbnVsbDsgLy8gZGVxdWV1ZWluZyBpc24ndCBuZWNlc3Nhcnkgd2l0aCBhbiBleGlzdGluZyBjYWNoZVxuXG4gICAgICBpZiAoY2FjaGVFeGlzdHMpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGRlcXVldWVkLnB1c2gocmVxKTtcbiAgICAgIHZhciBiYiA9IHNlbGYuZ2V0Qm91bmRpbmdCb3goZWxlKTtcbiAgICAgIHNlbGYuZ2V0RWxlbWVudChlbGUsIGJiLCBweFJhdGlvLCByZXEubGV2ZWwsIGdldFR4clJlYXNvbnMuZGVxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXF1ZXVlZDtcbn07XG5cbkVUQ3AucmVtb3ZlRnJvbVF1ZXVlID0gZnVuY3Rpb24gKGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBxID0gc2VsZi5nZXRFbGVtZW50UXVldWUoKTtcbiAgdmFyIGsycSA9IHNlbGYuZ2V0RWxlbWVudEtleVRvUXVldWUoKTtcbiAgdmFyIGtleSA9IHRoaXMuZ2V0S2V5KGVsZSk7XG4gIHZhciByZXEgPSBrMnFba2V5XTtcblxuICBpZiAocmVxICE9IG51bGwpIHtcbiAgICBpZiAocmVxLmVsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyByZW1vdmUgaWYgbGFzdCBlbGUgaW4gdGhlIHJlcVxuICAgICAgLy8gYnJpbmcgdG8gZnJvbnQgb2YgcXVldWVcbiAgICAgIHJlcS5yZXFzID0gTUFYX0lOVDtcbiAgICAgIHEudXBkYXRlSXRlbShyZXEpO1xuICAgICAgcS5wb3AoKTsgLy8gcmVtb3ZlIGZyb20gcXVldWVcblxuICAgICAgazJxW2tleV0gPSBudWxsOyAvLyByZW1vdmUgZnJvbSBsb29rdXAgbWFwXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG90aGVyd2lzZSBqdXN0IHJlbW92ZSBlbGUgZnJvbSByZXFcbiAgICAgIHJlcS5lbGVzLnVubWVyZ2UoZWxlKTtcbiAgICB9XG4gIH1cbn07XG5cbkVUQ3Aub25EZXF1ZXVlID0gZnVuY3Rpb24gKGZuKSB7XG4gIHRoaXMub25EZXF1ZXVlcy5wdXNoKGZuKTtcbn07XG5cbkVUQ3Aub2ZmRGVxdWV1ZSA9IGZ1bmN0aW9uIChmbikge1xuICByZW1vdmVGcm9tQXJyYXkodGhpcy5vbkRlcXVldWVzLCBmbik7XG59O1xuXG5FVENwLnNldHVwRGVxdWV1ZWluZyA9IGRlZnMuc2V0dXBEZXF1ZXVlaW5nKHtcbiAgZGVxUmVkcmF3VGhyZXNob2xkOiBkZXFSZWRyYXdUaHJlc2hvbGQsXG4gIGRlcUNvc3Q6IGRlcUNvc3QsXG4gIGRlcUF2Z0Nvc3Q6IGRlcUF2Z0Nvc3QsXG4gIGRlcU5vRHJhd0Nvc3Q6IGRlcU5vRHJhd0Nvc3QsXG4gIGRlcUZhc3RDb3N0OiBkZXFGYXN0Q29zdCxcbiAgZGVxOiBmdW5jdGlvbiBkZXEoc2VsZiwgcHhSYXRpbywgZXh0ZW50KSB7XG4gICAgcmV0dXJuIHNlbGYuZGVxdWV1ZShweFJhdGlvLCBleHRlbnQpO1xuICB9LFxuICBvbkRlcWQ6IGZ1bmN0aW9uIG9uRGVxZChzZWxmLCBkZXFkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLm9uRGVxdWV1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBmbiA9IHNlbGYub25EZXF1ZXVlc1tpXTtcbiAgICAgIGZuKGRlcWQpO1xuICAgIH1cbiAgfSxcbiAgc2hvdWxkUmVkcmF3OiBmdW5jdGlvbiBzaG91bGRSZWRyYXcoc2VsZiwgZGVxZCwgcHhSYXRpbywgZXh0ZW50KSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXFkLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlcyA9IGRlcWRbaV0uZWxlcztcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlbGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBiYiA9IGVsZXNbal0uYm91bmRpbmdCb3goKTtcblxuICAgICAgICBpZiAoYm91bmRpbmdCb3hlc0ludGVyc2VjdChiYiwgZXh0ZW50KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBwcmlvcml0eTogZnVuY3Rpb24gcHJpb3JpdHkoc2VsZikge1xuICAgIHJldHVybiBzZWxmLnJlbmRlcmVyLmJlZm9yZVJlbmRlclByaW9yaXRpZXMuZWxlVHhyRGVxO1xuICB9XG59KTtcblxudmFyIGRlZk51bUxheWVycyA9IDE7IC8vIGRlZmF1bHQgbnVtYmVyIG9mIGxheWVycyB0byB1c2VcblxudmFyIG1pbkx2bCQxID0gLTQ7IC8vIHdoZW4gc2NhbGluZyBzbWFsbGVyIHRoYW4gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHJlLXJlbmRlclxuXG52YXIgbWF4THZsJDEgPSAyOyAvLyB3aGVuIGxhcmdlciB0aGFuIHRoaXMgc2NhbGUganVzdCByZW5kZXIgZGlyZWN0bHkgKGNhY2hpbmcgaXMgbm90IGhlbHBmdWwpXG5cbnZhciBtYXhab29tJDEgPSAzLjk5OyAvLyBiZXlvbmQgdGhpcyB6b29tIGxldmVsLCBsYXllcmVkIHRleHR1cmVzIGFyZSBub3QgdXNlZFxuXG52YXIgZGVxUmVkcmF3VGhyZXNob2xkJDEgPSA1MDsgLy8gdGltZSB0byBiYXRjaCByZWRyYXdzIHRvZ2V0aGVyIGZyb20gZGVxdWV1ZWluZyB0byBhbGxvdyBtb3JlIGRlcXVldWVpbmcgY2FsY3MgdG8gaGFwcGVuIGluIHRoZSBtZWFud2hpbGVcblxudmFyIHJlZmluZUVsZURlYm91bmNlVGltZSA9IDUwOyAvLyB0aW1lIHRvIGRlYm91bmNlIHNoYXJwZXIgZWxlIHRleHR1cmUgdXBkYXRlc1xuXG52YXIgZGVxQ29zdCQxID0gMC4xNTsgLy8gJSBvZiBhZGQnbCByZW5kZXJpbmcgY29zdCBhbGxvd2VkIGZvciBkZXF1ZXVpbmcgZWxlIGNhY2hlcyBlYWNoIGZyYW1lXG5cbnZhciBkZXFBdmdDb3N0JDEgPSAwLjE7IC8vICUgb2YgYWRkJ2wgcmVuZGVyaW5nIGNvc3QgY29tcGFyZWQgdG8gYXZlcmFnZSBvdmVyYWxsIHJlZHJhdyB0aW1lXG5cbnZhciBkZXFOb0RyYXdDb3N0JDEgPSAwLjk7IC8vICUgb2YgYXZnIGZyYW1lIHRpbWUgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZGVxdWV1ZWluZyB3aGVuIG5vdCBkcmF3aW5nXG5cbnZhciBkZXFGYXN0Q29zdCQxID0gMC45OyAvLyAlIG9mIGZyYW1lIHRpbWUgdG8gYmUgdXNlZCB3aGVuID42MGZwc1xuXG52YXIgbWF4RGVxU2l6ZSQxID0gMTsgLy8gbnVtYmVyIG9mIGVsZXMgdG8gZGVxdWV1ZSBhbmQgcmVuZGVyIGF0IGhpZ2hlciB0ZXh0dXJlIGluIGVhY2ggYmF0Y2hcblxudmFyIGludmFsaWRUaHJlc2hvbGQgPSAyNTA7IC8vIHRpbWUgdGhyZXNob2xkIGZvciBkaXNhYmxpbmcgYi9jIG9mIGludmFsaWRhdGlvbnNcblxudmFyIG1heExheWVyQXJlYSA9IDQwMDAgKiA0MDAwOyAvLyBsYXllcnMgY2FuJ3QgYmUgYmlnZ2VyIHRoYW4gdGhpc1xuXG52YXIgdXNlSGlnaFF1YWxpdHlFbGVUeHJSZXFzID0gdHJ1ZTsgLy8gd2hldGhlciB0byB1c2UgaGlnaCBxdWFsaXR5IGVsZSB0eHIgcmVxdWVzdHMgKGdlbmVyYWxseSBmYXN0ZXIgYW5kIGNoZWFwZXIgaW4gdGhlIGxvbmd0ZXJtKVxuLy8gdmFyIGxvZyA9IGZ1bmN0aW9uKCl7IGNvbnNvbGUubG9nLmFwcGx5KCBjb25zb2xlLCBhcmd1bWVudHMgKTsgfTtcblxudmFyIExheWVyZWRUZXh0dXJlQ2FjaGUgPSBmdW5jdGlvbiBMYXllcmVkVGV4dHVyZUNhY2hlKHJlbmRlcmVyKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHIgPSBzZWxmLnJlbmRlcmVyID0gcmVuZGVyZXI7XG4gIHZhciBjeSA9IHIuY3k7XG4gIHNlbGYubGF5ZXJzQnlMZXZlbCA9IHt9OyAvLyBlLmcuIDIgPT4gWyBsYXllcjEsIGxheWVyMiwgLi4uLCBsYXllck4gXVxuXG4gIHNlbGYuZmlyc3RHZXQgPSB0cnVlO1xuICBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lID0gcGVyZm9ybWFuY2VOb3coKSAtIDIgKiBpbnZhbGlkVGhyZXNob2xkO1xuICBzZWxmLnNraXBwaW5nID0gZmFsc2U7XG4gIHNlbGYuZWxlVHhyRGVxcyA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgc2VsZi5zY2hlZHVsZUVsZW1lbnRSZWZpbmVtZW50ID0gdXRpbChmdW5jdGlvbiAoKSB7XG4gICAgc2VsZi5yZWZpbmVFbGVtZW50VGV4dHVyZXMoc2VsZi5lbGVUeHJEZXFzKTtcbiAgICBzZWxmLmVsZVR4ckRlcXMudW5tZXJnZShzZWxmLmVsZVR4ckRlcXMpO1xuICB9LCByZWZpbmVFbGVEZWJvdW5jZVRpbWUpO1xuICByLmJlZm9yZVJlbmRlcihmdW5jdGlvbiAod2lsbERyYXcsIG5vdykge1xuICAgIGlmIChub3cgLSBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lIDw9IGludmFsaWRUaHJlc2hvbGQpIHtcbiAgICAgIHNlbGYuc2tpcHBpbmcgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNraXBwaW5nID0gZmFsc2U7XG4gICAgfVxuICB9LCByLmJlZm9yZVJlbmRlclByaW9yaXRpZXMubHlyVHhyU2tpcCk7XG5cbiAgdmFyIHFTb3J0ID0gZnVuY3Rpb24gcVNvcnQoYSwgYikge1xuICAgIHJldHVybiBiLnJlcXMgLSBhLnJlcXM7XG4gIH07XG5cbiAgc2VsZi5sYXllcnNRdWV1ZSA9IG5ldyBIZWFwKHFTb3J0KTtcbiAgc2VsZi5zZXR1cERlcXVldWVpbmcoKTtcbn07XG5cbnZhciBMVENwID0gTGF5ZXJlZFRleHR1cmVDYWNoZS5wcm90b3R5cGU7XG52YXIgbGF5ZXJJZFBvb2wgPSAwO1xudmFyIE1BWF9JTlQkMSA9IE1hdGgucG93KDIsIDUzKSAtIDE7XG5cbkxUQ3AubWFrZUxheWVyID0gZnVuY3Rpb24gKGJiLCBsdmwpIHtcbiAgdmFyIHNjYWxlID0gTWF0aC5wb3coMiwgbHZsKTtcbiAgdmFyIHcgPSBNYXRoLmNlaWwoYmIudyAqIHNjYWxlKTtcbiAgdmFyIGggPSBNYXRoLmNlaWwoYmIuaCAqIHNjYWxlKTtcbiAgdmFyIGNhbnZhcyA9IHRoaXMucmVuZGVyZXIubWFrZU9mZnNjcmVlbkNhbnZhcyh3LCBoKTtcbiAgdmFyIGxheWVyID0ge1xuICAgIGlkOiBsYXllcklkUG9vbCA9ICsrbGF5ZXJJZFBvb2wgJSBNQVhfSU5UJDEsXG4gICAgYmI6IGJiLFxuICAgIGxldmVsOiBsdmwsXG4gICAgd2lkdGg6IHcsXG4gICAgaGVpZ2h0OiBoLFxuICAgIGNhbnZhczogY2FudmFzLFxuICAgIGNvbnRleHQ6IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLFxuICAgIGVsZXM6IFtdLFxuICAgIGVsZXNRdWV1ZTogW10sXG4gICAgcmVxczogMFxuICB9OyAvLyBsb2coJ21ha2UgbGF5ZXIgJXMgd2l0aCB3ICVzIGFuZCBoICVzIGFuZCBsdmwgJXMnLCBsYXllci5pZCwgbGF5ZXIud2lkdGgsIGxheWVyLmhlaWdodCwgbGF5ZXIubGV2ZWwpO1xuXG4gIHZhciBjeHQgPSBsYXllci5jb250ZXh0O1xuICB2YXIgZHggPSAtbGF5ZXIuYmIueDE7XG4gIHZhciBkeSA9IC1sYXllci5iYi55MTsgLy8gZG8gdGhlIHRyYW5zZm9ybSBvbiBjcmVhdGlvbiB0byBzYXZlIGN5Y2xlcyAoaXQncyB0aGUgc2FtZSBmb3IgYWxsIGVsZXMpXG5cbiAgY3h0LnNjYWxlKHNjYWxlLCBzY2FsZSk7XG4gIGN4dC50cmFuc2xhdGUoZHgsIGR5KTtcbiAgcmV0dXJuIGxheWVyO1xufTtcblxuTFRDcC5nZXRMYXllcnMgPSBmdW5jdGlvbiAoZWxlcywgcHhSYXRpbywgbHZsKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHIgPSBzZWxmLnJlbmRlcmVyO1xuICB2YXIgY3kgPSByLmN5O1xuICB2YXIgem9vbSA9IGN5Lnpvb20oKTtcbiAgdmFyIGZpcnN0R2V0ID0gc2VsZi5maXJzdEdldDtcbiAgc2VsZi5maXJzdEdldCA9IGZhbHNlOyAvLyBsb2coJy0tXFxuZ2V0IGxheWVycyB3aXRoICVzIGVsZXMnLCBlbGVzLmxlbmd0aCk7XG4gIC8vbG9nIGVsZXMubWFwKGZ1bmN0aW9uKGVsZSl7IHJldHVybiBlbGUuaWQoKSB9KSApO1xuXG4gIGlmIChsdmwgPT0gbnVsbCkge1xuICAgIGx2bCA9IE1hdGguY2VpbChsb2cyKHpvb20gKiBweFJhdGlvKSk7XG5cbiAgICBpZiAobHZsIDwgbWluTHZsJDEpIHtcbiAgICAgIGx2bCA9IG1pbkx2bCQxO1xuICAgIH0gZWxzZSBpZiAoem9vbSA+PSBtYXhab29tJDEgfHwgbHZsID4gbWF4THZsJDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNlbGYudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcobHZsLCBlbGVzKTtcbiAgdmFyIGxheWVyc0J5THZsID0gc2VsZi5sYXllcnNCeUxldmVsO1xuICB2YXIgc2NhbGUgPSBNYXRoLnBvdygyLCBsdmwpO1xuICB2YXIgbGF5ZXJzID0gbGF5ZXJzQnlMdmxbbHZsXSA9IGxheWVyc0J5THZsW2x2bF0gfHwgW107XG4gIHZhciBiYjtcbiAgdmFyIGx2bENvbXBsZXRlID0gc2VsZi5sZXZlbElzQ29tcGxldGUobHZsLCBlbGVzKTtcbiAgdmFyIHRtcExheWVycztcblxuICB2YXIgY2hlY2tUZW1wTGV2ZWxzID0gZnVuY3Rpb24gY2hlY2tUZW1wTGV2ZWxzKCkge1xuICAgIHZhciBjYW5Vc2VBc1RtcEx2bCA9IGZ1bmN0aW9uIGNhblVzZUFzVG1wTHZsKGwpIHtcbiAgICAgIHNlbGYudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcobCwgZWxlcyk7XG5cbiAgICAgIGlmIChzZWxmLmxldmVsSXNDb21wbGV0ZShsLCBlbGVzKSkge1xuICAgICAgICB0bXBMYXllcnMgPSBsYXllcnNCeUx2bFtsXTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBjaGVja0x2bHMgPSBmdW5jdGlvbiBjaGVja0x2bHMoZGlyKSB7XG4gICAgICBpZiAodG1wTGF5ZXJzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgbCA9IGx2bCArIGRpcjsgbWluTHZsJDEgPD0gbCAmJiBsIDw9IG1heEx2bCQxOyBsICs9IGRpcikge1xuICAgICAgICBpZiAoY2FuVXNlQXNUbXBMdmwobCkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBjaGVja0x2bHMoKzEpO1xuICAgIGNoZWNrTHZscygtMSk7IC8vIHJlbW92ZSB0aGUgaW52YWxpZCBsYXllcnM7IHRoZXkgd2lsbCBiZSByZXBsYWNlZCBhcyBuZWVkZWQgbGF0ZXIgaW4gdGhpcyBmdW5jdGlvblxuXG4gICAgZm9yICh2YXIgaSA9IGxheWVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGxheWVyID0gbGF5ZXJzW2ldO1xuXG4gICAgICBpZiAobGF5ZXIuaW52YWxpZCkge1xuICAgICAgICByZW1vdmVGcm9tQXJyYXkobGF5ZXJzLCBsYXllcik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGlmICghbHZsQ29tcGxldGUpIHtcbiAgICAvLyBpZiB0aGUgY3VycmVudCBsZXZlbCBpcyBpbmNvbXBsZXRlLCB0aGVuIHVzZSB0aGUgY2xvc2VzdCwgYmVzdCBxdWFsaXR5IGxheWVyc2V0IHRlbXBvcmFyaWx5XG4gICAgLy8gYW5kIGxhdGVyIHF1ZXVlIHRoZSBjdXJyZW50IGxheWVyc2V0IHNvIHdlIGNhbiBnZXQgdGhlIHByb3BlciBxdWFsaXR5IGxldmVsIHNvb25cbiAgICBjaGVja1RlbXBMZXZlbHMoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBsb2coJ2xldmVsIGNvbXBsZXRlLCB1c2luZyBleGlzdGluZyBsYXllcnNcXG4tLScpO1xuICAgIHJldHVybiBsYXllcnM7XG4gIH1cblxuICB2YXIgZ2V0QmIgPSBmdW5jdGlvbiBnZXRCYigpIHtcbiAgICBpZiAoIWJiKSB7XG4gICAgICBiYiA9IG1ha2VCb3VuZGluZ0JveCgpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdXBkYXRlQm91bmRpbmdCb3goYmIsIGVsZXNbaV0uYm91bmRpbmdCb3goKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJiO1xuICB9O1xuXG4gIHZhciBtYWtlTGF5ZXIgPSBmdW5jdGlvbiBtYWtlTGF5ZXIob3B0cykge1xuICAgIG9wdHMgPSBvcHRzIHx8IHt9O1xuICAgIHZhciBhZnRlciA9IG9wdHMuYWZ0ZXI7XG4gICAgZ2V0QmIoKTtcbiAgICB2YXIgYXJlYSA9IGJiLncgKiBzY2FsZSAqIChiYi5oICogc2NhbGUpO1xuXG4gICAgaWYgKGFyZWEgPiBtYXhMYXllckFyZWEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBsYXllciA9IHNlbGYubWFrZUxheWVyKGJiLCBsdmwpO1xuXG4gICAgaWYgKGFmdGVyICE9IG51bGwpIHtcbiAgICAgIHZhciBpbmRleCA9IGxheWVycy5pbmRleE9mKGFmdGVyKSArIDE7XG4gICAgICBsYXllcnMuc3BsaWNlKGluZGV4LCAwLCBsYXllcik7XG4gICAgfSBlbHNlIGlmIChvcHRzLmluc2VydCA9PT0gdW5kZWZpbmVkIHx8IG9wdHMuaW5zZXJ0KSB7XG4gICAgICAvLyBubyBhZnRlciBzcGVjaWZpZWQgPT4gZmlyc3QgbGF5ZXIgbWFkZSBzbyBwdXQgYXQgc3RhcnRcbiAgICAgIGxheWVycy51bnNoaWZ0KGxheWVyKTtcbiAgICB9IC8vIGlmKCB0bXBMYXllcnMgKXtcbiAgICAvL3NlbGYucXVldWVMYXllciggbGF5ZXIgKTtcbiAgICAvLyB9XG5cblxuICAgIHJldHVybiBsYXllcjtcbiAgfTtcblxuICBpZiAoc2VsZi5za2lwcGluZyAmJiAhZmlyc3RHZXQpIHtcbiAgICAvLyBsb2coJ3NraXAgbGF5ZXJzJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gbG9nKCdkbyBsYXllcnMnKTtcblxuXG4gIHZhciBsYXllciA9IG51bGw7XG4gIHZhciBtYXhFbGVzUGVyTGF5ZXIgPSBlbGVzLmxlbmd0aCAvIGRlZk51bUxheWVycztcbiAgdmFyIGFsbG93TGF6eVF1ZXVlaW5nID0gICFmaXJzdEdldDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICB2YXIgcnMgPSBlbGUuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgdmFyIGNhY2hlcyA9IHJzLmltZ0xheWVyQ2FjaGVzID0gcnMuaW1nTGF5ZXJDYWNoZXMgfHwge307IC8vIGxvZygnbG9vayBhdCBlbGUnLCBlbGUuaWQoKSk7XG5cbiAgICB2YXIgZXhpc3RpbmdMYXllciA9IGNhY2hlc1tsdmxdO1xuXG4gICAgaWYgKGV4aXN0aW5nTGF5ZXIpIHtcbiAgICAgIC8vIHJldXNlIGxheWVyIGZvciBsYXRlciBlbGVzXG4gICAgICAvLyBsb2coJ3JldXNlIGxheWVyIGZvcicsIGVsZS5pZCgpKTtcbiAgICAgIGxheWVyID0gZXhpc3RpbmdMYXllcjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghbGF5ZXIgfHwgbGF5ZXIuZWxlcy5sZW5ndGggPj0gbWF4RWxlc1BlckxheWVyIHx8ICFib3VuZGluZ0JveEluQm91bmRpbmdCb3gobGF5ZXIuYmIsIGVsZS5ib3VuZGluZ0JveCgpKSkge1xuICAgICAgLy8gbG9nKCdtYWtlIG5ldyBsYXllciBmb3IgZWxlICVzJywgZWxlLmlkKCkpO1xuICAgICAgbGF5ZXIgPSBtYWtlTGF5ZXIoe1xuICAgICAgICBpbnNlcnQ6IHRydWUsXG4gICAgICAgIGFmdGVyOiBsYXllclxuICAgICAgfSk7IC8vIGlmIG5vdyBsYXllciBjYW4gYmUgYnVpbHQgdGhlbiB3ZSBjYW4ndCB1c2UgbGF5ZXJzIGF0IHRoaXMgbGV2ZWxcblxuICAgICAgaWYgKCFsYXllcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gLy8gbG9nKCduZXcgbGF5ZXIgd2l0aCBpZCAlcycsIGxheWVyLmlkKTtcblxuICAgIH1cblxuICAgIGlmICh0bXBMYXllcnMgfHwgYWxsb3dMYXp5UXVldWVpbmcpIHtcbiAgICAgIC8vIGxvZygncXVldWUgZWxlICVzIGluIGxheWVyICVzJywgZWxlLmlkKCksIGxheWVyLmlkKTtcbiAgICAgIHNlbGYucXVldWVMYXllcihsYXllciwgZWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbG9nKCdkcmF3IGVsZSAlcyBpbiBsYXllciAlcycsIGVsZS5pZCgpLCBsYXllci5pZCk7XG4gICAgICBzZWxmLmRyYXdFbGVJbkxheWVyKGxheWVyLCBlbGUsIGx2bCwgcHhSYXRpbyk7XG4gICAgfVxuXG4gICAgbGF5ZXIuZWxlcy5wdXNoKGVsZSk7XG4gICAgY2FjaGVzW2x2bF0gPSBsYXllcjtcbiAgfSAvLyBsb2coJy0tJyk7XG5cblxuICBpZiAodG1wTGF5ZXJzKSB7XG4gICAgLy8gdGhlbiB3ZSBvbmx5IHF1ZXVlZCB0aGUgY3VycmVudCBsYXllcnNldCBhbmQgY2FuJ3QgZHJhdyBpdCB5ZXRcbiAgICByZXR1cm4gdG1wTGF5ZXJzO1xuICB9XG5cbiAgaWYgKGFsbG93TGF6eVF1ZXVlaW5nKSB7XG4gICAgLy8gbG9nKCdsYXp5IHF1ZXVlIGxldmVsJywgbHZsKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBsYXllcnM7XG59OyAvLyBhIGxheWVyIG1heSB3YW50IHRvIHVzZSBhbiBlbGUgY2FjaGUgb2YgYSBoaWdoZXIgbGV2ZWwgdG8gYXZvaWQgYmx1cnJpbmVzc1xuLy8gc28gdGhlIGxheWVyIGxldmVsIG1pZ2h0IG5vdCBlcXVhbCB0aGUgZWxlIGxldmVsXG5cblxuTFRDcC5nZXRFbGVMZXZlbEZvckxheWVyTGV2ZWwgPSBmdW5jdGlvbiAobHZsLCBweFJhdGlvKSB7XG4gIHJldHVybiBsdmw7XG59O1xuXG5MVENwLmRyYXdFbGVJbkxheWVyID0gZnVuY3Rpb24gKGxheWVyLCBlbGUsIGx2bCwgcHhSYXRpbykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciByID0gdGhpcy5yZW5kZXJlcjtcbiAgdmFyIGNvbnRleHQgPSBsYXllci5jb250ZXh0O1xuICB2YXIgYmIgPSBlbGUuYm91bmRpbmdCb3goKTtcblxuICBpZiAoYmIudyA9PT0gMCB8fCBiYi5oID09PSAwIHx8ICFlbGUudmlzaWJsZSgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbHZsID0gc2VsZi5nZXRFbGVMZXZlbEZvckxheWVyTGV2ZWwobHZsLCBweFJhdGlvKTtcblxuICB7XG4gICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgZmFsc2UpO1xuICB9XG5cbiAge1xuICAgIHIuZHJhd0NhY2hlZEVsZW1lbnQoY29udGV4dCwgZWxlLCBudWxsLCBudWxsLCBsdmwsIHVzZUhpZ2hRdWFsaXR5RWxlVHhyUmVxcyk7XG4gIH1cblxuICB7XG4gICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgdHJ1ZSk7XG4gIH1cbn07XG5cbkxUQ3AubGV2ZWxJc0NvbXBsZXRlID0gZnVuY3Rpb24gKGx2bCwgZWxlcykge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBsYXllcnMgPSBzZWxmLmxheWVyc0J5TGV2ZWxbbHZsXTtcblxuICBpZiAoIWxheWVycyB8fCBsYXllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIG51bUVsZXNJbkxheWVycyA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXllcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGF5ZXIgPSBsYXllcnNbaV07IC8vIGlmIHRoZXJlIGFyZSBhbnkgZWxlcyBuZWVkZWQgdG8gYmUgZHJhd24geWV0LCB0aGUgbGV2ZWwgaXMgbm90IGNvbXBsZXRlXG5cbiAgICBpZiAobGF5ZXIucmVxcyA+IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGlmIHRoZSBsYXllciBpcyBpbnZhbGlkLCB0aGUgbGV2ZWwgaXMgbm90IGNvbXBsZXRlXG5cblxuICAgIGlmIChsYXllci5pbnZhbGlkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbnVtRWxlc0luTGF5ZXJzICs9IGxheWVyLmVsZXMubGVuZ3RoO1xuICB9IC8vIHdlIHNob3VsZCBoYXZlIGV4YWN0bHkgdGhlIG51bWJlciBvZiBlbGVzIHBhc3NlZCBpbiB0byBiZSBjb21wbGV0ZVxuXG5cbiAgaWYgKG51bUVsZXNJbkxheWVycyAhPT0gZWxlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkxUQ3AudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcgPSBmdW5jdGlvbiAobHZsLCBlbGVzKSB7XG4gIHZhciBsYXllcnMgPSB0aGlzLmxheWVyc0J5TGV2ZWxbbHZsXTtcblxuICBpZiAoIWxheWVycykge1xuICAgIHJldHVybjtcbiAgfSAvLyBpZiBpbiBhIGxheWVyIHRoZSBlbGVzIGFyZSBub3QgaW4gdGhlIHNhbWUgb3JkZXIsIHRoZW4gdGhlIGxheWVyIGlzIGludmFsaWRcbiAgLy8gKGkuZS4gdGhlcmUgaXMgYW4gZWxlIGluIGJldHdlZW4gdGhlIGVsZXMgaW4gdGhlIGxheWVyKVxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXllcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGF5ZXIgPSBsYXllcnNbaV07XG4gICAgdmFyIG9mZnNldCA9IC0xOyAvLyBmaW5kIHRoZSBvZmZzZXRcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlcy5sZW5ndGg7IGorKykge1xuICAgICAgaWYgKGxheWVyLmVsZXNbMF0gPT09IGVsZXNbal0pIHtcbiAgICAgICAgb2Zmc2V0ID0gajtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldCA8IDApIHtcbiAgICAgIC8vIHRoZW4gdGhlIGxheWVyIGhhcyBub25leGlzdGFudCBlbGVtZW50cyBhbmQgaXMgaW52YWxpZFxuICAgICAgdGhpcy5pbnZhbGlkYXRlTGF5ZXIobGF5ZXIpO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyB0aGUgZWxlcyBpbiB0aGUgbGF5ZXIgbXVzdCBiZSBpbiB0aGUgc2FtZSBjb250aW51b3VzIG9yZGVyLCBlbHNlIHRoZSBsYXllciBpcyBpbnZhbGlkXG5cblxuICAgIHZhciBvID0gb2Zmc2V0O1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsYXllci5lbGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAobGF5ZXIuZWxlc1tqXSAhPT0gZWxlc1tvICsgal0pIHtcbiAgICAgICAgLy8gbG9nKCdpbnZhbGlkYXRlIGJhc2VkIG9uIG9yZGVyaW5nJywgbGF5ZXIuaWQpO1xuICAgICAgICB0aGlzLmludmFsaWRhdGVMYXllcihsYXllcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuTFRDcC51cGRhdGVFbGVtZW50c0luTGF5ZXJzID0gZnVuY3Rpb24gKGVsZXMsIHVwZGF0ZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBpc0VsZXMgPSBlbGVtZW50KGVsZXNbMF0pOyAvLyBjb2xsZWN0IHVkcGF0ZWQgZWxlbWVudHMgKGNhc2NhZGVkIGZyb20gdGhlIGxheWVycykgYW5kIHVwZGF0ZSBlYWNoXG4gIC8vIGxheWVyIGl0c2VsZiBhbG9uZyB0aGUgd2F5XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJlcSA9IGlzRWxlcyA/IG51bGwgOiBlbGVzW2ldO1xuICAgIHZhciBlbGUgPSBpc0VsZXMgPyBlbGVzW2ldIDogZWxlc1tpXS5lbGU7XG4gICAgdmFyIHJzID0gZWxlLl9wcml2YXRlLnJzY3JhdGNoO1xuICAgIHZhciBjYWNoZXMgPSBycy5pbWdMYXllckNhY2hlcyA9IHJzLmltZ0xheWVyQ2FjaGVzIHx8IHt9O1xuXG4gICAgZm9yICh2YXIgbCA9IG1pbkx2bCQxOyBsIDw9IG1heEx2bCQxOyBsKyspIHtcbiAgICAgIHZhciBsYXllciA9IGNhY2hlc1tsXTtcblxuICAgICAgaWYgKCFsYXllcikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gaWYgdXBkYXRlIGlzIGEgcmVxdWVzdCBmcm9tIHRoZSBlbGUgY2FjaGUsIHRoZW4gaXQgYWZmZWN0cyBvbmx5XG4gICAgICAvLyB0aGUgbWF0Y2hpbmcgbGV2ZWxcblxuXG4gICAgICBpZiAocmVxICYmIHNlbGYuZ2V0RWxlTGV2ZWxGb3JMYXllckxldmVsKGxheWVyLmxldmVsKSAhPT0gcmVxLmxldmVsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUobGF5ZXIsIGVsZSwgcmVxKTtcbiAgICB9XG4gIH1cbn07XG5cbkxUQ3AuaGF2ZUxheWVycyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgaGF2ZUxheWVycyA9IGZhbHNlO1xuXG4gIGZvciAodmFyIGwgPSBtaW5MdmwkMTsgbCA8PSBtYXhMdmwkMTsgbCsrKSB7XG4gICAgdmFyIGxheWVycyA9IHNlbGYubGF5ZXJzQnlMZXZlbFtsXTtcblxuICAgIGlmIChsYXllcnMgJiYgbGF5ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGhhdmVMYXllcnMgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhdmVMYXllcnM7XG59O1xuXG5MVENwLmludmFsaWRhdGVFbGVtZW50cyA9IGZ1bmN0aW9uIChlbGVzKSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICBpZiAoZWxlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lID0gcGVyZm9ybWFuY2VOb3coKTsgLy8gbG9nKCd1cGRhdGUgaW52YWxpZGF0ZSBsYXllciB0aW1lIGZyb20gZWxlcycpO1xuXG4gIGlmIChlbGVzLmxlbmd0aCA9PT0gMCB8fCAhc2VsZi5oYXZlTGF5ZXJzKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzZWxmLnVwZGF0ZUVsZW1lbnRzSW5MYXllcnMoZWxlcywgZnVuY3Rpb24gaW52YWxBc3NvY0xheWVycyhsYXllciwgZWxlLCByZXEpIHtcbiAgICBzZWxmLmludmFsaWRhdGVMYXllcihsYXllcik7XG4gIH0pO1xufTtcblxuTFRDcC5pbnZhbGlkYXRlTGF5ZXIgPSBmdW5jdGlvbiAobGF5ZXIpIHtcbiAgLy8gbG9nKCd1cGRhdGUgaW52YWxpZGF0ZSBsYXllciB0aW1lJyk7XG4gIHRoaXMubGFzdEludmFsaWRhdGlvblRpbWUgPSBwZXJmb3JtYW5jZU5vdygpO1xuXG4gIGlmIChsYXllci5pbnZhbGlkKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIHNhdmUgY3ljbGVzXG5cblxuICB2YXIgbHZsID0gbGF5ZXIubGV2ZWw7XG4gIHZhciBlbGVzID0gbGF5ZXIuZWxlcztcbiAgdmFyIGxheWVycyA9IHRoaXMubGF5ZXJzQnlMZXZlbFtsdmxdOyAvLyBsb2coJ2ludmFsaWRhdGUgbGF5ZXInLCBsYXllci5pZCApO1xuXG4gIHJlbW92ZUZyb21BcnJheShsYXllcnMsIGxheWVyKTsgLy8gbGF5ZXIuZWxlcyA9IFtdO1xuXG4gIGxheWVyLmVsZXNRdWV1ZSA9IFtdO1xuICBsYXllci5pbnZhbGlkID0gdHJ1ZTtcblxuICBpZiAobGF5ZXIucmVwbGFjZW1lbnQpIHtcbiAgICBsYXllci5yZXBsYWNlbWVudC5pbnZhbGlkID0gdHJ1ZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjYWNoZXMgPSBlbGVzW2ldLl9wcml2YXRlLnJzY3JhdGNoLmltZ0xheWVyQ2FjaGVzO1xuXG4gICAgaWYgKGNhY2hlcykge1xuICAgICAgY2FjaGVzW2x2bF0gPSBudWxsO1xuICAgIH1cbiAgfVxufTtcblxuTFRDcC5yZWZpbmVFbGVtZW50VGV4dHVyZXMgPSBmdW5jdGlvbiAoZWxlcykge1xuICB2YXIgc2VsZiA9IHRoaXM7IC8vIGxvZygncmVmaW5lJywgZWxlcy5sZW5ndGgpO1xuXG4gIHNlbGYudXBkYXRlRWxlbWVudHNJbkxheWVycyhlbGVzLCBmdW5jdGlvbiByZWZpbmVFYWNoRWxlKGxheWVyLCBlbGUsIHJlcSkge1xuICAgIHZhciByTHlyID0gbGF5ZXIucmVwbGFjZW1lbnQ7XG5cbiAgICBpZiAoIXJMeXIpIHtcbiAgICAgIHJMeXIgPSBsYXllci5yZXBsYWNlbWVudCA9IHNlbGYubWFrZUxheWVyKGxheWVyLmJiLCBsYXllci5sZXZlbCk7XG4gICAgICByTHlyLnJlcGxhY2VzID0gbGF5ZXI7XG4gICAgICByTHlyLmVsZXMgPSBsYXllci5lbGVzOyAvLyBsb2coJ21ha2UgcmVwbGFjZW1lbnQgbGF5ZXIgJXMgZm9yICVzIHdpdGggbGV2ZWwgJXMnLCByTHlyLmlkLCBsYXllci5pZCwgckx5ci5sZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKCFyTHlyLnJlcXMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgckx5ci5lbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHNlbGYucXVldWVMYXllcihyTHlyLCByTHlyLmVsZXNbaV0pO1xuICAgICAgfSAvLyBsb2coJ3F1ZXVlIHJlcGxhY2VtZW50IGxheWVyIHJlZmluZW1lbnQnLCByTHlyLmlkKTtcblxuICAgIH1cbiAgfSk7XG59O1xuXG5MVENwLmVucXVldWVFbGVtZW50UmVmaW5lbWVudCA9IGZ1bmN0aW9uIChlbGUpIHtcblxuICB0aGlzLmVsZVR4ckRlcXMubWVyZ2UoZWxlKTtcbiAgdGhpcy5zY2hlZHVsZUVsZW1lbnRSZWZpbmVtZW50KCk7XG59O1xuXG5MVENwLnF1ZXVlTGF5ZXIgPSBmdW5jdGlvbiAobGF5ZXIsIGVsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBxID0gc2VsZi5sYXllcnNRdWV1ZTtcbiAgdmFyIGVsZXNRID0gbGF5ZXIuZWxlc1F1ZXVlO1xuICB2YXIgaGFzSWQgPSBlbGVzUS5oYXNJZCA9IGVsZXNRLmhhc0lkIHx8IHt9OyAvLyBpZiBhIGxheWVyIGlzIGdvaW5nIHRvIGJlIHJlcGxhY2VkLCBxdWV1aW5nIGlzIGEgd2FzdGUgb2YgdGltZVxuXG4gIGlmIChsYXllci5yZXBsYWNlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChlbGUpIHtcbiAgICBpZiAoaGFzSWRbZWxlLmlkKCldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlc1EucHVzaChlbGUpO1xuICAgIGhhc0lkW2VsZS5pZCgpXSA9IHRydWU7XG4gIH1cblxuICBpZiAobGF5ZXIucmVxcykge1xuICAgIGxheWVyLnJlcXMrKztcbiAgICBxLnVwZGF0ZUl0ZW0obGF5ZXIpO1xuICB9IGVsc2Uge1xuICAgIGxheWVyLnJlcXMgPSAxO1xuICAgIHEucHVzaChsYXllcik7XG4gIH1cbn07XG5cbkxUQ3AuZGVxdWV1ZSA9IGZ1bmN0aW9uIChweFJhdGlvKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHEgPSBzZWxmLmxheWVyc1F1ZXVlO1xuICB2YXIgZGVxZCA9IFtdO1xuICB2YXIgZWxlRGVxcyA9IDA7XG5cbiAgd2hpbGUgKGVsZURlcXMgPCBtYXhEZXFTaXplJDEpIHtcbiAgICBpZiAocS5zaXplKCkgPT09IDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBsYXllciA9IHEucGVlaygpOyAvLyBpZiBhIGxheWVyIGhhcyBiZWVuIG9yIHdpbGwgYmUgcmVwbGFjZWQsIHRoZW4gZG9uJ3Qgd2FzdGUgdGltZSB3aXRoIGl0XG5cbiAgICBpZiAobGF5ZXIucmVwbGFjZW1lbnQpIHtcbiAgICAgIC8vIGxvZygnbGF5ZXIgJXMgaW4gcXVldWUgc2tpcHBlZCBiL2MgaXQgYWxyZWFkeSBoYXMgYSByZXBsYWNlbWVudCcsIGxheWVyLmlkKTtcbiAgICAgIHEucG9wKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIGlmIHRoaXMgaXMgYSByZXBsYWNlbWVudCBsYXllciB0aGF0IGhhcyBiZWVuIHN1cGVyY2VkZWQsIHRoZW4gZm9yZ2V0IGl0XG5cblxuICAgIGlmIChsYXllci5yZXBsYWNlcyAmJiBsYXllciAhPT0gbGF5ZXIucmVwbGFjZXMucmVwbGFjZW1lbnQpIHtcbiAgICAgIC8vIGxvZygnbGF5ZXIgaXMgbm8gbG9uZ2VyIHRoZSBtb3N0IHVwdG9kYXRlIHJlcGxhY2VtZW50OyBkZXF1ZXVlZCcsIGxheWVyLmlkKVxuICAgICAgcS5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChsYXllci5pbnZhbGlkKSB7XG4gICAgICAvLyBsb2coJ3JlcGxhY2VtZW50IGxheWVyICVzIGlzIGludmFsaWQ7IGRlcXVldWVkJywgbGF5ZXIuaWQpO1xuICAgICAgcS5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBlbGUgPSBsYXllci5lbGVzUXVldWUuc2hpZnQoKTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIC8vIGxvZygnZGVxdWV1ZSBsYXllciAlcycsIGxheWVyLmlkKTtcbiAgICAgIHNlbGYuZHJhd0VsZUluTGF5ZXIobGF5ZXIsIGVsZSwgbGF5ZXIubGV2ZWwsIHB4UmF0aW8pO1xuICAgICAgZWxlRGVxcysrO1xuICAgIH1cblxuICAgIGlmIChkZXFkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gd2UgbmVlZCBvbmx5IG9uZSBlbnRyeSBpbiBkZXFkIHRvIHF1ZXVlIHJlZHJhd2luZyBldGNcbiAgICAgIGRlcWQucHVzaCh0cnVlKTtcbiAgICB9IC8vIGlmIHRoZSBsYXllciBoYXMgYWxsIGl0cyBlbGVzIGRvbmUsIHRoZW4gcmVtb3ZlIGZyb20gdGhlIHF1ZXVlXG5cblxuICAgIGlmIChsYXllci5lbGVzUXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICBxLnBvcCgpO1xuICAgICAgbGF5ZXIucmVxcyA9IDA7IC8vIGxvZygnZGVxdWV1ZSBvZiBsYXllciAlcyBjb21wbGV0ZScsIGxheWVyLmlkKTtcbiAgICAgIC8vIHdoZW4gYSByZXBsYWNlbWVudCBsYXllciBpcyBkZXF1ZXVlZCwgaXQgcmVwbGFjZXMgdGhlIG9sZCBsYXllciBpbiB0aGUgbGV2ZWxcblxuICAgICAgaWYgKGxheWVyLnJlcGxhY2VzKSB7XG4gICAgICAgIHNlbGYuYXBwbHlMYXllclJlcGxhY2VtZW50KGxheWVyKTtcbiAgICAgIH1cblxuICAgICAgc2VsZi5yZXF1ZXN0UmVkcmF3KCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcWQ7XG59O1xuXG5MVENwLmFwcGx5TGF5ZXJSZXBsYWNlbWVudCA9IGZ1bmN0aW9uIChsYXllcikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBsYXllcnNJbkxldmVsID0gc2VsZi5sYXllcnNCeUxldmVsW2xheWVyLmxldmVsXTtcbiAgdmFyIHJlcGxhY2VkID0gbGF5ZXIucmVwbGFjZXM7XG4gIHZhciBpbmRleCA9IGxheWVyc0luTGV2ZWwuaW5kZXhPZihyZXBsYWNlZCk7IC8vIGlmIHRoZSByZXBsYWNlZCBsYXllciBpcyBub3QgaW4gdGhlIGFjdGl2ZSBsaXN0IGZvciB0aGUgbGV2ZWwsIHRoZW4gcmVwbGFjaW5nXG4gIC8vIHJlZnMgd291bGQgYmUgYSBtaXN0YWtlIChpLmUuIG92ZXJ3cml0aW5nIHRoZSB0cnVlIGFjdGl2ZSBsYXllcilcblxuICBpZiAoaW5kZXggPCAwIHx8IHJlcGxhY2VkLmludmFsaWQpIHtcbiAgICAvLyBsb2coJ3JlcGxhY2VtZW50IGxheWVyIHdvdWxkIGhhdmUgbm8gZWZmZWN0JywgbGF5ZXIuaWQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxheWVyc0luTGV2ZWxbaW5kZXhdID0gbGF5ZXI7IC8vIHJlcGxhY2UgbGV2ZWwgcmVmXG4gIC8vIHJlcGxhY2UgcmVmcyBpbiBlbGVzXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXllci5lbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIF9wID0gbGF5ZXIuZWxlc1tpXS5fcHJpdmF0ZTtcbiAgICB2YXIgY2FjaGUgPSBfcC5pbWdMYXllckNhY2hlcyA9IF9wLmltZ0xheWVyQ2FjaGVzIHx8IHt9O1xuXG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICBjYWNoZVtsYXllci5sZXZlbF0gPSBsYXllcjtcbiAgICB9XG4gIH0gLy8gbG9nKCdhcHBseSByZXBsYWNlbWVudCBsYXllciAlcyBvdmVyICVzJywgbGF5ZXIuaWQsIHJlcGxhY2VkLmlkKTtcblxuXG4gIHNlbGYucmVxdWVzdFJlZHJhdygpO1xufTtcblxuTFRDcC5yZXF1ZXN0UmVkcmF3ID0gdXRpbChmdW5jdGlvbiAoKSB7XG4gIHZhciByID0gdGhpcy5yZW5kZXJlcjtcbiAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICByLnJlZHJhdygpO1xufSwgMTAwKTtcbkxUQ3Auc2V0dXBEZXF1ZXVlaW5nID0gZGVmcy5zZXR1cERlcXVldWVpbmcoe1xuICBkZXFSZWRyYXdUaHJlc2hvbGQ6IGRlcVJlZHJhd1RocmVzaG9sZCQxLFxuICBkZXFDb3N0OiBkZXFDb3N0JDEsXG4gIGRlcUF2Z0Nvc3Q6IGRlcUF2Z0Nvc3QkMSxcbiAgZGVxTm9EcmF3Q29zdDogZGVxTm9EcmF3Q29zdCQxLFxuICBkZXFGYXN0Q29zdDogZGVxRmFzdENvc3QkMSxcbiAgZGVxOiBmdW5jdGlvbiBkZXEoc2VsZiwgcHhSYXRpbykge1xuICAgIHJldHVybiBzZWxmLmRlcXVldWUocHhSYXRpbyk7XG4gIH0sXG4gIG9uRGVxZDogbm9vcCxcbiAgc2hvdWxkUmVkcmF3OiB0cnVlaWZ5LFxuICBwcmlvcml0eTogZnVuY3Rpb24gcHJpb3JpdHkoc2VsZikge1xuICAgIHJldHVybiBzZWxmLnJlbmRlcmVyLmJlZm9yZVJlbmRlclByaW9yaXRpZXMubHlyVHhyRGVxO1xuICB9XG59KTtcblxudmFyIENScCA9IHt9O1xudmFyIGltcGw7XG5cbmZ1bmN0aW9uIHBvbHlnb24oY29udGV4dCwgcG9pbnRzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHB0ID0gcG9pbnRzW2ldO1xuICAgIGNvbnRleHQubGluZVRvKHB0LngsIHB0LnkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRyaWFuZ2xlQmFja2N1cnZlKGNvbnRleHQsIHBvaW50cywgY29udHJvbFBvaW50KSB7XG4gIHZhciBmaXJzdFB0O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHB0ID0gcG9pbnRzW2ldO1xuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGZpcnN0UHQgPSBwdDtcbiAgICB9XG5cbiAgICBjb250ZXh0LmxpbmVUbyhwdC54LCBwdC55KTtcbiAgfVxuXG4gIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyhjb250cm9sUG9pbnQueCwgY29udHJvbFBvaW50LnksIGZpcnN0UHQueCwgZmlyc3RQdC55KTtcbn1cblxuZnVuY3Rpb24gdHJpYW5nbGVUZWUoY29udGV4dCwgdHJpYW5nbGVQb2ludHMsIHRlZVBvaW50cykge1xuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgdmFyIHRyaVB0cyA9IHRyaWFuZ2xlUG9pbnRzO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdHJpUHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHB0ID0gdHJpUHRzW2ldO1xuICAgIGNvbnRleHQubGluZVRvKHB0LngsIHB0LnkpO1xuICB9XG5cbiAgdmFyIHRlZVB0cyA9IHRlZVBvaW50cztcbiAgdmFyIGZpcnN0VGVlUHQgPSB0ZWVQb2ludHNbMF07XG4gIGNvbnRleHQubW92ZVRvKGZpcnN0VGVlUHQueCwgZmlyc3RUZWVQdC55KTtcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IHRlZVB0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwdCA9IHRlZVB0c1tpXTtcbiAgICBjb250ZXh0LmxpbmVUbyhwdC54LCBwdC55KTtcbiAgfVxuXG4gIGlmIChjb250ZXh0LmNsb3NlUGF0aCkge1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2lyY2xlVHJpYW5nbGUoY29udGV4dCwgdHJpYW5nbGVQb2ludHMsIHJ4LCByeSwgcikge1xuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgY29udGV4dC5hcmMocngsIHJ5LCByLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpO1xuICB2YXIgdHJpUHRzID0gdHJpYW5nbGVQb2ludHM7XG4gIHZhciBmaXJzdFRyUHQgPSB0cmlQdHNbMF07XG4gIGNvbnRleHQubW92ZVRvKGZpcnN0VHJQdC54LCBmaXJzdFRyUHQueSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmlQdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHQgPSB0cmlQdHNbaV07XG4gICAgY29udGV4dC5saW5lVG8ocHQueCwgcHQueSk7XG4gIH1cblxuICBpZiAoY29udGV4dC5jbG9zZVBhdGgpIHtcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNpcmNsZShjb250ZXh0LCByeCwgcnksIHIpIHtcbiAgY29udGV4dC5hcmMocngsIHJ5LCByLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpO1xufVxuXG5DUnAuYXJyb3dTaGFwZUltcGwgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gKGltcGwgfHwgKGltcGwgPSB7XG4gICAgJ3BvbHlnb24nOiBwb2x5Z29uLFxuICAgICd0cmlhbmdsZS1iYWNrY3VydmUnOiB0cmlhbmdsZUJhY2tjdXJ2ZSxcbiAgICAndHJpYW5nbGUtdGVlJzogdHJpYW5nbGVUZWUsXG4gICAgJ2NpcmNsZS10cmlhbmdsZSc6IGNpcmNsZVRyaWFuZ2xlLFxuICAgICd0cmlhbmdsZS1jcm9zcyc6IHRyaWFuZ2xlVGVlLFxuICAgICdjaXJjbGUnOiBjaXJjbGVcbiAgfSkpW25hbWVdO1xufTtcblxudmFyIENScCQxID0ge307XG5cbkNScCQxLmRyYXdFbGVtZW50ID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgc2hpZnRUb09yaWdpbldpdGhCYiwgc2hvd0xhYmVsLCBzaG93T3ZlcmxheSwgc2hvd09wYWNpdHkpIHtcbiAgdmFyIHIgPSB0aGlzO1xuXG4gIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICByLmRyYXdOb2RlKGNvbnRleHQsIGVsZSwgc2hpZnRUb09yaWdpbldpdGhCYiwgc2hvd0xhYmVsLCBzaG93T3ZlcmxheSwgc2hvd09wYWNpdHkpO1xuICB9IGVsc2Uge1xuICAgIHIuZHJhd0VkZ2UoY29udGV4dCwgZWxlLCBzaGlmdFRvT3JpZ2luV2l0aEJiLCBzaG93TGFiZWwsIHNob3dPdmVybGF5LCBzaG93T3BhY2l0eSk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdFbGVtZW50T3ZlcmxheSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUpIHtcbiAgdmFyIHIgPSB0aGlzO1xuXG4gIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICByLmRyYXdOb2RlT3ZlcmxheShjb250ZXh0LCBlbGUpO1xuICB9IGVsc2Uge1xuICAgIHIuZHJhd0VkZ2VPdmVybGF5KGNvbnRleHQsIGVsZSk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdFbGVtZW50VW5kZXJsYXkgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlKSB7XG4gIHZhciByID0gdGhpcztcblxuICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgci5kcmF3Tm9kZVVuZGVybGF5KGNvbnRleHQsIGVsZSk7XG4gIH0gZWxzZSB7XG4gICAgci5kcmF3RWRnZVVuZGVybGF5KGNvbnRleHQsIGVsZSk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdDYWNoZWRFbGVtZW50UG9ydGlvbiA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGVsZVR4ckNhY2hlLCBweFJhdGlvLCBsdmwsIHJlYXNvbiwgZ2V0Um90YXRpb24sIGdldE9wYWNpdHkpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgYmIgPSBlbGVUeHJDYWNoZS5nZXRCb3VuZGluZ0JveChlbGUpO1xuXG4gIGlmIChiYi53ID09PSAwIHx8IGJiLmggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH0gLy8gaWdub3JlIHplcm8gc2l6ZSBjYXNlXG5cblxuICB2YXIgZWxlQ2FjaGUgPSBlbGVUeHJDYWNoZS5nZXRFbGVtZW50KGVsZSwgYmIsIHB4UmF0aW8sIGx2bCwgcmVhc29uKTtcblxuICBpZiAoZWxlQ2FjaGUgIT0gbnVsbCkge1xuICAgIHZhciBvcGFjaXR5ID0gZ2V0T3BhY2l0eShyLCBlbGUpO1xuXG4gICAgaWYgKG9wYWNpdHkgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdGhldGEgPSBnZXRSb3RhdGlvbihyLCBlbGUpO1xuICAgIHZhciB4MSA9IGJiLngxLFxuICAgICAgICB5MSA9IGJiLnkxLFxuICAgICAgICB3ID0gYmIudyxcbiAgICAgICAgaCA9IGJiLmg7XG4gICAgdmFyIHgsIHksIHN4LCBzeSwgc21vb3RoO1xuXG4gICAgaWYgKHRoZXRhICE9PSAwKSB7XG4gICAgICB2YXIgcm90UHQgPSBlbGVUeHJDYWNoZS5nZXRSb3RhdGlvblBvaW50KGVsZSk7XG4gICAgICBzeCA9IHJvdFB0Lng7XG4gICAgICBzeSA9IHJvdFB0Lnk7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShzeCwgc3kpO1xuICAgICAgY29udGV4dC5yb3RhdGUodGhldGEpO1xuICAgICAgc21vb3RoID0gci5nZXRJbWdTbW9vdGhpbmcoY29udGV4dCk7XG5cbiAgICAgIGlmICghc21vb3RoKSB7XG4gICAgICAgIHIuc2V0SW1nU21vb3RoaW5nKGNvbnRleHQsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgb2ZmID0gZWxlVHhyQ2FjaGUuZ2V0Um90YXRpb25PZmZzZXQoZWxlKTtcbiAgICAgIHggPSBvZmYueDtcbiAgICAgIHkgPSBvZmYueTtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgxO1xuICAgICAgeSA9IHkxO1xuICAgIH1cblxuICAgIHZhciBvbGRHbG9iYWxBbHBoYTtcblxuICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICBvbGRHbG9iYWxBbHBoYSA9IGNvbnRleHQuZ2xvYmFsQWxwaGE7XG4gICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb2xkR2xvYmFsQWxwaGEgKiBvcGFjaXR5O1xuICAgIH1cblxuICAgIGNvbnRleHQuZHJhd0ltYWdlKGVsZUNhY2hlLnRleHR1cmUuY2FudmFzLCBlbGVDYWNoZS54LCAwLCBlbGVDYWNoZS53aWR0aCwgZWxlQ2FjaGUuaGVpZ2h0LCB4LCB5LCB3LCBoKTtcblxuICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb2xkR2xvYmFsQWxwaGE7XG4gICAgfVxuXG4gICAgaWYgKHRoZXRhICE9PSAwKSB7XG4gICAgICBjb250ZXh0LnJvdGF0ZSgtdGhldGEpO1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoLXN4LCAtc3kpO1xuXG4gICAgICBpZiAoIXNtb290aCkge1xuICAgICAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGVsZVR4ckNhY2hlLmRyYXdFbGVtZW50KGNvbnRleHQsIGVsZSk7IC8vIGRpcmVjdCBkcmF3IGZhbGxiYWNrXG4gIH1cbn07XG5cbnZhciBnZXRaZXJvUm90YXRpb24gPSBmdW5jdGlvbiBnZXRaZXJvUm90YXRpb24oKSB7XG4gIHJldHVybiAwO1xufTtcblxudmFyIGdldExhYmVsUm90YXRpb24gPSBmdW5jdGlvbiBnZXRMYWJlbFJvdGF0aW9uKHIsIGVsZSkge1xuICByZXR1cm4gci5nZXRUZXh0QW5nbGUoZWxlLCBudWxsKTtcbn07XG5cbnZhciBnZXRTb3VyY2VMYWJlbFJvdGF0aW9uID0gZnVuY3Rpb24gZ2V0U291cmNlTGFiZWxSb3RhdGlvbihyLCBlbGUpIHtcbiAgcmV0dXJuIHIuZ2V0VGV4dEFuZ2xlKGVsZSwgJ3NvdXJjZScpO1xufTtcblxudmFyIGdldFRhcmdldExhYmVsUm90YXRpb24gPSBmdW5jdGlvbiBnZXRUYXJnZXRMYWJlbFJvdGF0aW9uKHIsIGVsZSkge1xuICByZXR1cm4gci5nZXRUZXh0QW5nbGUoZWxlLCAndGFyZ2V0Jyk7XG59O1xuXG52YXIgZ2V0T3BhY2l0eSA9IGZ1bmN0aW9uIGdldE9wYWNpdHkociwgZWxlKSB7XG4gIHJldHVybiBlbGUuZWZmZWN0aXZlT3BhY2l0eSgpO1xufTtcblxudmFyIGdldFRleHRPcGFjaXR5ID0gZnVuY3Rpb24gZ2V0VGV4dE9wYWNpdHkoZSwgZWxlKSB7XG4gIHJldHVybiBlbGUucHN0eWxlKCd0ZXh0LW9wYWNpdHknKS5wZlZhbHVlICogZWxlLmVmZmVjdGl2ZU9wYWNpdHkoKTtcbn07XG5cbkNScCQxLmRyYXdDYWNoZWRFbGVtZW50ID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgcHhSYXRpbywgZXh0ZW50LCBsdmwsIHJlcXVlc3RIaWdoUXVhbGl0eSkge1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBfciRkYXRhID0gci5kYXRhLFxuICAgICAgZWxlVHhyQ2FjaGUgPSBfciRkYXRhLmVsZVR4ckNhY2hlLFxuICAgICAgbGJsVHhyQ2FjaGUgPSBfciRkYXRhLmxibFR4ckNhY2hlLFxuICAgICAgc2xiVHhyQ2FjaGUgPSBfciRkYXRhLnNsYlR4ckNhY2hlLFxuICAgICAgdGxiVHhyQ2FjaGUgPSBfciRkYXRhLnRsYlR4ckNhY2hlO1xuICB2YXIgYmIgPSBlbGUuYm91bmRpbmdCb3goKTtcbiAgdmFyIHJlYXNvbiA9IHJlcXVlc3RIaWdoUXVhbGl0eSA9PT0gdHJ1ZSA/IGVsZVR4ckNhY2hlLnJlYXNvbnMuaGlnaFF1YWxpdHkgOiBudWxsO1xuXG4gIGlmIChiYi53ID09PSAwIHx8IGJiLmggPT09IDAgfHwgIWVsZS52aXNpYmxlKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIWV4dGVudCB8fCBib3VuZGluZ0JveGVzSW50ZXJzZWN0KGJiLCBleHRlbnQpKSB7XG4gICAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcblxuICAgIHZhciBiYWRMaW5lID0gZWxlLmVsZW1lbnQoKS5fcHJpdmF0ZS5yc2NyYXRjaC5iYWRMaW5lO1xuXG4gICAgci5kcmF3RWxlbWVudFVuZGVybGF5KGNvbnRleHQsIGVsZSk7XG4gICAgci5kcmF3Q2FjaGVkRWxlbWVudFBvcnRpb24oY29udGV4dCwgZWxlLCBlbGVUeHJDYWNoZSwgcHhSYXRpbywgbHZsLCByZWFzb24sIGdldFplcm9Sb3RhdGlvbiwgZ2V0T3BhY2l0eSk7XG5cbiAgICBpZiAoIWlzRWRnZSB8fCAhYmFkTGluZSkge1xuICAgICAgci5kcmF3Q2FjaGVkRWxlbWVudFBvcnRpb24oY29udGV4dCwgZWxlLCBsYmxUeHJDYWNoZSwgcHhSYXRpbywgbHZsLCByZWFzb24sIGdldExhYmVsUm90YXRpb24sIGdldFRleHRPcGFjaXR5KTtcbiAgICB9XG5cbiAgICBpZiAoaXNFZGdlICYmICFiYWRMaW5lKSB7XG4gICAgICByLmRyYXdDYWNoZWRFbGVtZW50UG9ydGlvbihjb250ZXh0LCBlbGUsIHNsYlR4ckNhY2hlLCBweFJhdGlvLCBsdmwsIHJlYXNvbiwgZ2V0U291cmNlTGFiZWxSb3RhdGlvbiwgZ2V0VGV4dE9wYWNpdHkpO1xuICAgICAgci5kcmF3Q2FjaGVkRWxlbWVudFBvcnRpb24oY29udGV4dCwgZWxlLCB0bGJUeHJDYWNoZSwgcHhSYXRpbywgbHZsLCByZWFzb24sIGdldFRhcmdldExhYmVsUm90YXRpb24sIGdldFRleHRPcGFjaXR5KTtcbiAgICB9XG5cbiAgICByLmRyYXdFbGVtZW50T3ZlcmxheShjb250ZXh0LCBlbGUpO1xuICB9XG59O1xuXG5DUnAkMS5kcmF3RWxlbWVudHMgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlcykge1xuICB2YXIgciA9IHRoaXM7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgci5kcmF3RWxlbWVudChjb250ZXh0LCBlbGUpO1xuICB9XG59O1xuXG5DUnAkMS5kcmF3Q2FjaGVkRWxlbWVudHMgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlcywgcHhSYXRpbywgZXh0ZW50KSB7XG4gIHZhciByID0gdGhpcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICByLmRyYXdDYWNoZWRFbGVtZW50KGNvbnRleHQsIGVsZSwgcHhSYXRpbywgZXh0ZW50KTtcbiAgfVxufTtcblxuQ1JwJDEuZHJhd0NhY2hlZE5vZGVzID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZXMsIHB4UmF0aW8sIGV4dGVudCkge1xuICB2YXIgciA9IHRoaXM7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICBpZiAoIWVsZS5pc05vZGUoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgci5kcmF3Q2FjaGVkRWxlbWVudChjb250ZXh0LCBlbGUsIHB4UmF0aW8sIGV4dGVudCk7XG4gIH1cbn07XG5cbkNScCQxLmRyYXdMYXllcmVkRWxlbWVudHMgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlcywgcHhSYXRpbywgZXh0ZW50KSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIGxheWVycyA9IHIuZGF0YS5seXJUeHJDYWNoZS5nZXRMYXllcnMoZWxlcywgcHhSYXRpbyk7XG5cbiAgaWYgKGxheWVycykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbGF5ZXIgPSBsYXllcnNbaV07XG4gICAgICB2YXIgYmIgPSBsYXllci5iYjtcblxuICAgICAgaWYgKGJiLncgPT09IDAgfHwgYmIuaCA9PT0gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kcmF3SW1hZ2UobGF5ZXIuY2FudmFzLCBiYi54MSwgYmIueTEsIGJiLncsIGJiLmgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBmYWxsIGJhY2sgb24gcGxhaW4gY2FjaGluZyBpZiBubyBsYXllcnNcbiAgICByLmRyYXdDYWNoZWRFbGVtZW50cyhjb250ZXh0LCBlbGVzLCBweFJhdGlvLCBleHRlbnQpO1xuICB9XG59O1xuXG4vKiBnbG9iYWwgUGF0aDJEICovXG52YXIgQ1JwJDIgPSB7fTtcblxuQ1JwJDIuZHJhd0VkZ2UgPSBmdW5jdGlvbiAoY29udGV4dCwgZWRnZSwgc2hpZnRUb09yaWdpbldpdGhCYikge1xuICB2YXIgZHJhd0xhYmVsID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiB0cnVlO1xuICB2YXIgc2hvdWxkRHJhd092ZXJsYXkgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IHRydWU7XG4gIHZhciBzaG91bGREcmF3T3BhY2l0eSA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogdHJ1ZTtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuXG4gIGlmIChzaG91bGREcmF3T3BhY2l0eSAmJiAhZWRnZS52aXNpYmxlKCkpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gaWYgYmV6aWVyIGN0cmwgcHRzIGNhbiBub3QgYmUgY2FsY3VsYXRlZCwgdGhlbiBkaWVcblxuXG4gIGlmIChycy5iYWRMaW5lIHx8IHJzLmFsbHB0cyA9PSBudWxsIHx8IGlzTmFOKHJzLmFsbHB0c1swXSkpIHtcbiAgICAvLyBpc05hTiBpbiBjYXNlIGVkZ2UgaXMgaW1wb3NzaWJsZSBhbmQgYnJvd3NlciBidWdzIChlLmcuIHNhZmFyaSlcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgYmI7XG5cbiAgaWYgKHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICBiYiA9IHNoaWZ0VG9PcmlnaW5XaXRoQmI7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWJiLngxLCAtYmIueTEpO1xuICB9XG5cbiAgdmFyIG9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IGVkZ2UucHN0eWxlKCdvcGFjaXR5JykudmFsdWUgOiAxO1xuICB2YXIgbGluZU9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IGVkZ2UucHN0eWxlKCdsaW5lLW9wYWNpdHknKS52YWx1ZSA6IDE7XG4gIHZhciBjdXJ2ZVN0eWxlID0gZWRnZS5wc3R5bGUoJ2N1cnZlLXN0eWxlJykudmFsdWU7XG4gIHZhciBsaW5lU3R5bGUgPSBlZGdlLnBzdHlsZSgnbGluZS1zdHlsZScpLnZhbHVlO1xuICB2YXIgZWRnZVdpZHRoID0gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgdmFyIGxpbmVDYXAgPSBlZGdlLnBzdHlsZSgnbGluZS1jYXAnKS52YWx1ZTtcbiAgdmFyIGVmZmVjdGl2ZUxpbmVPcGFjaXR5ID0gb3BhY2l0eSAqIGxpbmVPcGFjaXR5OyAvLyBzZXBhcmF0ZSBhcnJvdyBvcGFjaXR5IHdvdWxkIHJlcXVpcmUgYXJyb3ctb3BhY2l0eSBwcm9wZXJ0eVxuXG4gIHZhciBlZmZlY3RpdmVBcnJvd09wYWNpdHkgPSBvcGFjaXR5ICogbGluZU9wYWNpdHk7XG5cbiAgdmFyIGRyYXdMaW5lID0gZnVuY3Rpb24gZHJhd0xpbmUoKSB7XG4gICAgdmFyIHN0cm9rZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGVmZmVjdGl2ZUxpbmVPcGFjaXR5O1xuXG4gICAgaWYgKGN1cnZlU3R5bGUgPT09ICdzdHJhaWdodC10cmlhbmdsZScpIHtcbiAgICAgIHIuZWxlU3Ryb2tlU3R5bGUoY29udGV4dCwgZWRnZSwgc3Ryb2tlT3BhY2l0eSk7XG4gICAgICByLmRyYXdFZGdlVHJpYW5nbGVQYXRoKGVkZ2UsIGNvbnRleHQsIHJzLmFsbHB0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQubGluZVdpZHRoID0gZWRnZVdpZHRoO1xuICAgICAgY29udGV4dC5saW5lQ2FwID0gbGluZUNhcDtcbiAgICAgIHIuZWxlU3Ryb2tlU3R5bGUoY29udGV4dCwgZWRnZSwgc3Ryb2tlT3BhY2l0eSk7XG4gICAgICByLmRyYXdFZGdlUGF0aChlZGdlLCBjb250ZXh0LCBycy5hbGxwdHMsIGxpbmVTdHlsZSk7XG4gICAgICBjb250ZXh0LmxpbmVDYXAgPSAnYnV0dCc7IC8vIHJlc2V0IGZvciBvdGhlciBkcmF3aW5nIGZ1bmN0aW9uc1xuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd092ZXJsYXkgPSBmdW5jdGlvbiBkcmF3T3ZlcmxheSgpIHtcbiAgICBpZiAoIXNob3VsZERyYXdPdmVybGF5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgci5kcmF3RWRnZU92ZXJsYXkoY29udGV4dCwgZWRnZSk7XG4gIH07XG5cbiAgdmFyIGRyYXdVbmRlcmxheSA9IGZ1bmN0aW9uIGRyYXdVbmRlcmxheSgpIHtcbiAgICBpZiAoIXNob3VsZERyYXdPdmVybGF5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgci5kcmF3RWRnZVVuZGVybGF5KGNvbnRleHQsIGVkZ2UpO1xuICB9O1xuXG4gIHZhciBkcmF3QXJyb3dzID0gZnVuY3Rpb24gZHJhd0Fycm93cygpIHtcbiAgICB2YXIgYXJyb3dPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBlZmZlY3RpdmVBcnJvd09wYWNpdHk7XG4gICAgci5kcmF3QXJyb3doZWFkcyhjb250ZXh0LCBlZGdlLCBhcnJvd09wYWNpdHkpO1xuICB9O1xuXG4gIHZhciBkcmF3VGV4dCA9IGZ1bmN0aW9uIGRyYXdUZXh0KCkge1xuICAgIHIuZHJhd0VsZW1lbnRUZXh0KGNvbnRleHQsIGVkZ2UsIG51bGwsIGRyYXdMYWJlbCk7XG4gIH07XG5cbiAgY29udGV4dC5saW5lSm9pbiA9ICdyb3VuZCc7XG4gIHZhciBnaG9zdCA9IGVkZ2UucHN0eWxlKCdnaG9zdCcpLnZhbHVlID09PSAneWVzJztcblxuICBpZiAoZ2hvc3QpIHtcbiAgICB2YXIgZ3ggPSBlZGdlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXgnKS5wZlZhbHVlO1xuICAgIHZhciBneSA9IGVkZ2UucHN0eWxlKCdnaG9zdC1vZmZzZXQteScpLnBmVmFsdWU7XG4gICAgdmFyIGdob3N0T3BhY2l0eSA9IGVkZ2UucHN0eWxlKCdnaG9zdC1vcGFjaXR5JykudmFsdWU7XG4gICAgdmFyIGVmZmVjdGl2ZUdob3N0T3BhY2l0eSA9IGVmZmVjdGl2ZUxpbmVPcGFjaXR5ICogZ2hvc3RPcGFjaXR5O1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGd4LCBneSk7XG4gICAgZHJhd0xpbmUoZWZmZWN0aXZlR2hvc3RPcGFjaXR5KTtcbiAgICBkcmF3QXJyb3dzKGVmZmVjdGl2ZUdob3N0T3BhY2l0eSk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWd4LCAtZ3kpO1xuICB9XG5cbiAgZHJhd1VuZGVybGF5KCk7XG4gIGRyYXdMaW5lKCk7XG4gIGRyYXdBcnJvd3MoKTtcbiAgZHJhd092ZXJsYXkoKTtcbiAgZHJhd1RleHQoKTtcblxuICBpZiAoc2hpZnRUb09yaWdpbldpdGhCYikge1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGJiLngxLCBiYi55MSk7XG4gIH1cbn07XG5cbnZhciBkcmF3RWRnZU92ZXJsYXlVbmRlcmxheSA9IGZ1bmN0aW9uIGRyYXdFZGdlT3ZlcmxheVVuZGVybGF5KG92ZXJsYXlPclVuZGVybGF5KSB7XG4gIGlmICghWydvdmVybGF5JywgJ3VuZGVybGF5J10uaW5jbHVkZXMob3ZlcmxheU9yVW5kZXJsYXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0YXRlJyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGNvbnRleHQsIGVkZ2UpIHtcbiAgICBpZiAoIWVkZ2UudmlzaWJsZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG9wYWNpdHkgPSBlZGdlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItb3BhY2l0eVwiKSkudmFsdWU7XG5cbiAgICBpZiAob3BhY2l0eSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciByID0gdGhpcztcbiAgICB2YXIgdXNlUGF0aHMgPSByLnVzZVBhdGhzKCk7XG4gICAgdmFyIHJzID0gZWRnZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICB2YXIgcGFkZGluZyA9IGVkZ2UucHN0eWxlKFwiXCIuY29uY2F0KG92ZXJsYXlPclVuZGVybGF5LCBcIi1wYWRkaW5nXCIpKS5wZlZhbHVlO1xuICAgIHZhciB3aWR0aCA9IDIgKiBwYWRkaW5nO1xuICAgIHZhciBjb2xvciA9IGVkZ2UucHN0eWxlKFwiXCIuY29uY2F0KG92ZXJsYXlPclVuZGVybGF5LCBcIi1jb2xvclwiKSkudmFsdWU7XG4gICAgY29udGV4dC5saW5lV2lkdGggPSB3aWR0aDtcblxuICAgIGlmIChycy5lZGdlVHlwZSA9PT0gJ3NlbGYnICYmICF1c2VQYXRocykge1xuICAgICAgY29udGV4dC5saW5lQ2FwID0gJ2J1dHQnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmxpbmVDYXAgPSAncm91bmQnO1xuICAgIH1cblxuICAgIHIuY29sb3JTdHJva2VTdHlsZShjb250ZXh0LCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgICByLmRyYXdFZGdlUGF0aChlZGdlLCBjb250ZXh0LCBycy5hbGxwdHMsICdzb2xpZCcpO1xuICB9O1xufTtcblxuQ1JwJDIuZHJhd0VkZ2VPdmVybGF5ID0gZHJhd0VkZ2VPdmVybGF5VW5kZXJsYXkoJ292ZXJsYXknKTtcbkNScCQyLmRyYXdFZGdlVW5kZXJsYXkgPSBkcmF3RWRnZU92ZXJsYXlVbmRlcmxheSgndW5kZXJsYXknKTtcblxuQ1JwJDIuZHJhd0VkZ2VQYXRoID0gZnVuY3Rpb24gKGVkZ2UsIGNvbnRleHQsIHB0cywgdHlwZSkge1xuICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICB2YXIgY2FudmFzQ3h0ID0gY29udGV4dDtcbiAgdmFyIHBhdGg7XG4gIHZhciBwYXRoQ2FjaGVIaXQgPSBmYWxzZTtcbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuICB2YXIgbGluZURhc2hQYXR0ZXJuID0gZWRnZS5wc3R5bGUoJ2xpbmUtZGFzaC1wYXR0ZXJuJykucGZWYWx1ZTtcbiAgdmFyIGxpbmVEYXNoT2Zmc2V0ID0gZWRnZS5wc3R5bGUoJ2xpbmUtZGFzaC1vZmZzZXQnKS5wZlZhbHVlO1xuXG4gIGlmICh1c2VQYXRocykge1xuICAgIHZhciBwYXRoQ2FjaGVLZXkgPSBwdHMuam9pbignJCcpO1xuICAgIHZhciBrZXlNYXRjaGVzID0gcnMucGF0aENhY2hlS2V5ICYmIHJzLnBhdGhDYWNoZUtleSA9PT0gcGF0aENhY2hlS2V5O1xuXG4gICAgaWYgKGtleU1hdGNoZXMpIHtcbiAgICAgIHBhdGggPSBjb250ZXh0ID0gcnMucGF0aENhY2hlO1xuICAgICAgcGF0aENhY2hlSGl0ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IGNvbnRleHQgPSBuZXcgUGF0aDJEKCk7XG4gICAgICBycy5wYXRoQ2FjaGVLZXkgPSBwYXRoQ2FjaGVLZXk7XG4gICAgICBycy5wYXRoQ2FjaGUgPSBwYXRoO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjYW52YXNDeHQuc2V0TGluZURhc2gpIHtcbiAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2RvdHRlZCc6XG4gICAgICAgIGNhbnZhc0N4dC5zZXRMaW5lRGFzaChbMSwgMV0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZGFzaGVkJzpcbiAgICAgICAgY2FudmFzQ3h0LnNldExpbmVEYXNoKGxpbmVEYXNoUGF0dGVybik7XG4gICAgICAgIGNhbnZhc0N4dC5saW5lRGFzaE9mZnNldCA9IGxpbmVEYXNoT2Zmc2V0O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc29saWQnOlxuICAgICAgICBjYW52YXNDeHQuc2V0TGluZURhc2goW10pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhdGhDYWNoZUhpdCAmJiAhcnMuYmFkTGluZSkge1xuICAgIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICB9XG5cbiAgICBjb250ZXh0Lm1vdmVUbyhwdHNbMF0sIHB0c1sxXSk7XG5cbiAgICBzd2l0Y2ggKHJzLmVkZ2VUeXBlKSB7XG4gICAgICBjYXNlICdiZXppZXInOlxuICAgICAgY2FzZSAnc2VsZic6XG4gICAgICBjYXNlICdjb21wb3VuZCc6XG4gICAgICBjYXNlICdtdWx0aWJlemllcic6XG4gICAgICAgIGZvciAodmFyIGkgPSAyOyBpICsgMyA8IHB0cy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgICAgIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyhwdHNbaV0sIHB0c1tpICsgMV0sIHB0c1tpICsgMl0sIHB0c1tpICsgM10pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N0cmFpZ2h0JzpcbiAgICAgIGNhc2UgJ3NlZ21lbnRzJzpcbiAgICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSArIDEgPCBwdHMubGVuZ3RoOyBfaSArPSAyKSB7XG4gICAgICAgICAgY29udGV4dC5saW5lVG8ocHRzW19pXSwgcHRzW19pICsgMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29udGV4dCA9IGNhbnZhc0N4dDtcblxuICBpZiAodXNlUGF0aHMpIHtcbiAgICBjb250ZXh0LnN0cm9rZShwYXRoKTtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xuICB9IC8vIHJlc2V0IGFueSBsaW5lIGRhc2hlc1xuXG5cbiAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgfVxufTtcblxuQ1JwJDIuZHJhd0VkZ2VUcmlhbmdsZVBhdGggPSBmdW5jdGlvbiAoZWRnZSwgY29udGV4dCwgcHRzKSB7XG4gIC8vIHVzZSBsaW5lIHN0cm9rZSBzdHlsZSBmb3IgdHJpYW5nbGUgZmlsbCBzdHlsZVxuICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbnRleHQuc3Ryb2tlU3R5bGU7XG4gIHZhciBlZGdlV2lkdGggPSBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpICsgMSA8IHB0cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciB2ZWN0b3IgPSBbcHRzW2kgKyAyXSAtIHB0c1tpXSwgcHRzW2kgKyAzXSAtIHB0c1tpICsgMV1dO1xuICAgIHZhciBsZW5ndGggPSBNYXRoLnNxcnQodmVjdG9yWzBdICogdmVjdG9yWzBdICsgdmVjdG9yWzFdICogdmVjdG9yWzFdKTtcbiAgICB2YXIgbm9ybWFsID0gW3ZlY3RvclsxXSAvIGxlbmd0aCwgLXZlY3RvclswXSAvIGxlbmd0aF07XG4gICAgdmFyIHRyaWFuZ2xlSGVhZCA9IFtub3JtYWxbMF0gKiBlZGdlV2lkdGggLyAyLCBub3JtYWxbMV0gKiBlZGdlV2lkdGggLyAyXTtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQubW92ZVRvKHB0c1tpXSAtIHRyaWFuZ2xlSGVhZFswXSwgcHRzW2kgKyAxXSAtIHRyaWFuZ2xlSGVhZFsxXSk7XG4gICAgY29udGV4dC5saW5lVG8ocHRzW2ldICsgdHJpYW5nbGVIZWFkWzBdLCBwdHNbaSArIDFdICsgdHJpYW5nbGVIZWFkWzFdKTtcbiAgICBjb250ZXh0LmxpbmVUbyhwdHNbaSArIDJdLCBwdHNbaSArIDNdKTtcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIGNvbnRleHQuZmlsbCgpO1xuICB9XG59O1xuXG5DUnAkMi5kcmF3QXJyb3doZWFkcyA9IGZ1bmN0aW9uIChjb250ZXh0LCBlZGdlLCBvcGFjaXR5KSB7XG4gIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gIHZhciBpc0hheXN0YWNrID0gcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjayc7XG5cbiAgaWYgKCFpc0hheXN0YWNrKSB7XG4gICAgdGhpcy5kcmF3QXJyb3doZWFkKGNvbnRleHQsIGVkZ2UsICdzb3VyY2UnLCBycy5hcnJvd1N0YXJ0WCwgcnMuYXJyb3dTdGFydFksIHJzLnNyY0Fycm93QW5nbGUsIG9wYWNpdHkpO1xuICB9XG5cbiAgdGhpcy5kcmF3QXJyb3doZWFkKGNvbnRleHQsIGVkZ2UsICdtaWQtdGFyZ2V0JywgcnMubWlkWCwgcnMubWlkWSwgcnMubWlkdGd0QXJyb3dBbmdsZSwgb3BhY2l0eSk7XG4gIHRoaXMuZHJhd0Fycm93aGVhZChjb250ZXh0LCBlZGdlLCAnbWlkLXNvdXJjZScsIHJzLm1pZFgsIHJzLm1pZFksIHJzLm1pZHNyY0Fycm93QW5nbGUsIG9wYWNpdHkpO1xuXG4gIGlmICghaXNIYXlzdGFjaykge1xuICAgIHRoaXMuZHJhd0Fycm93aGVhZChjb250ZXh0LCBlZGdlLCAndGFyZ2V0JywgcnMuYXJyb3dFbmRYLCBycy5hcnJvd0VuZFksIHJzLnRndEFycm93QW5nbGUsIG9wYWNpdHkpO1xuICB9XG59O1xuXG5DUnAkMi5kcmF3QXJyb3doZWFkID0gZnVuY3Rpb24gKGNvbnRleHQsIGVkZ2UsIHByZWZpeCwgeCwgeSwgYW5nbGUsIG9wYWNpdHkpIHtcbiAgaWYgKGlzTmFOKHgpIHx8IHggPT0gbnVsbCB8fCBpc05hTih5KSB8fCB5ID09IG51bGwgfHwgaXNOYU4oYW5nbGUpIHx8IGFuZ2xlID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBhcnJvd1NoYXBlID0gZWRnZS5wc3R5bGUocHJlZml4ICsgJy1hcnJvdy1zaGFwZScpLnZhbHVlO1xuXG4gIGlmIChhcnJvd1NoYXBlID09PSAnbm9uZScpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgYXJyb3dDbGVhckZpbGwgPSBlZGdlLnBzdHlsZShwcmVmaXggKyAnLWFycm93LWZpbGwnKS52YWx1ZSA9PT0gJ2hvbGxvdycgPyAnYm90aCcgOiAnZmlsbGVkJztcbiAgdmFyIGFycm93RmlsbCA9IGVkZ2UucHN0eWxlKHByZWZpeCArICctYXJyb3ctZmlsbCcpLnZhbHVlO1xuICB2YXIgZWRnZVdpZHRoID0gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgdmFyIGVkZ2VPcGFjaXR5ID0gZWRnZS5wc3R5bGUoJ29wYWNpdHknKS52YWx1ZTtcblxuICBpZiAob3BhY2l0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgb3BhY2l0eSA9IGVkZ2VPcGFjaXR5O1xuICB9XG5cbiAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuXG4gIGlmIChvcGFjaXR5ICE9PSAxIHx8IGFycm93RmlsbCA9PT0gJ2hvbGxvdycpIHtcbiAgICAvLyB0aGVuIGV4dHJhIGNsZWFyIGlzIG5lZWRlZFxuICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgc2VsZi5jb2xvckZpbGxTdHlsZShjb250ZXh0LCAyNTUsIDI1NSwgMjU1LCAxKTtcbiAgICBzZWxmLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgMjU1LCAyNTUsIDI1NSwgMSk7XG4gICAgc2VsZi5kcmF3QXJyb3dTaGFwZShlZGdlLCBjb250ZXh0LCBhcnJvd0NsZWFyRmlsbCwgZWRnZVdpZHRoLCBhcnJvd1NoYXBlLCB4LCB5LCBhbmdsZSk7XG4gICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBnY287XG4gIH0gLy8gb3RoZXJ3aXNlLCB0aGUgb3BhcXVlIGFycm93IGNsZWFycyBpdCBmb3IgZnJlZSA6KVxuXG5cbiAgdmFyIGNvbG9yID0gZWRnZS5wc3R5bGUocHJlZml4ICsgJy1hcnJvdy1jb2xvcicpLnZhbHVlO1xuICBzZWxmLmNvbG9yRmlsbFN0eWxlKGNvbnRleHQsIGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIG9wYWNpdHkpO1xuICBzZWxmLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgb3BhY2l0eSk7XG4gIHNlbGYuZHJhd0Fycm93U2hhcGUoZWRnZSwgY29udGV4dCwgYXJyb3dGaWxsLCBlZGdlV2lkdGgsIGFycm93U2hhcGUsIHgsIHksIGFuZ2xlKTtcbn07XG5cbkNScCQyLmRyYXdBcnJvd1NoYXBlID0gZnVuY3Rpb24gKGVkZ2UsIGNvbnRleHQsIGZpbGwsIGVkZ2VXaWR0aCwgc2hhcGUsIHgsIHksIGFuZ2xlKSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpICYmIHNoYXBlICE9PSAndHJpYW5nbGUtY3Jvc3MnO1xuICB2YXIgcGF0aENhY2hlSGl0ID0gZmFsc2U7XG4gIHZhciBwYXRoO1xuICB2YXIgY2FudmFzQ29udGV4dCA9IGNvbnRleHQ7XG4gIHZhciB0cmFuc2xhdGlvbiA9IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbiAgdmFyIHNjYWxlID0gZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWU7XG4gIHZhciBzaXplID0gdGhpcy5nZXRBcnJvd1dpZHRoKGVkZ2VXaWR0aCwgc2NhbGUpO1xuICB2YXIgc2hhcGVJbXBsID0gci5hcnJvd1NoYXBlc1tzaGFwZV07XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgdmFyIGNhY2hlID0gci5hcnJvd1BhdGhDYWNoZSA9IHIuYXJyb3dQYXRoQ2FjaGUgfHwgW107XG4gICAgdmFyIGtleSA9IGhhc2hTdHJpbmcoc2hhcGUpO1xuICAgIHZhciBjYWNoZWRQYXRoID0gY2FjaGVba2V5XTtcblxuICAgIGlmIChjYWNoZWRQYXRoICE9IG51bGwpIHtcbiAgICAgIHBhdGggPSBjb250ZXh0ID0gY2FjaGVkUGF0aDtcbiAgICAgIHBhdGhDYWNoZUhpdCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGggPSBjb250ZXh0ID0gbmV3IFBhdGgyRCgpO1xuICAgICAgY2FjaGVba2V5XSA9IHBhdGg7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYXRoQ2FjaGVIaXQpIHtcbiAgICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgfVxuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAvLyBzdG9yZSBpbiB0aGUgcGF0aCBjYWNoZSB3aXRoIHZhbHVlcyBlYXNpbHkgbWFuaXB1bGF0ZWQgbGF0ZXJcbiAgICAgIHNoYXBlSW1wbC5kcmF3KGNvbnRleHQsIDEsIDAsIHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNoYXBlSW1wbC5kcmF3KGNvbnRleHQsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbiwgZWRnZVdpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5jbG9zZVBhdGgpIHtcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgfVxuICB9XG5cbiAgY29udGV4dCA9IGNhbnZhc0NvbnRleHQ7XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgLy8gc2V0IHRyYW5zZm9ybSB0byBhcnJvdyBwb3NpdGlvbi9vcmllbnRhdGlvblxuICAgIGNvbnRleHQudHJhbnNsYXRlKHgsIHkpO1xuICAgIGNvbnRleHQucm90YXRlKGFuZ2xlKTtcbiAgICBjb250ZXh0LnNjYWxlKHNpemUsIHNpemUpO1xuICB9XG5cbiAgaWYgKGZpbGwgPT09ICdmaWxsZWQnIHx8IGZpbGwgPT09ICdib3RoJykge1xuICAgIGlmICh1c2VQYXRocykge1xuICAgICAgY29udGV4dC5maWxsKHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmZpbGwoKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZmlsbCA9PT0gJ2hvbGxvdycgfHwgZmlsbCA9PT0gJ2JvdGgnKSB7XG4gICAgY29udGV4dC5saW5lV2lkdGggPSAoc2hhcGVJbXBsLm1hdGNoRWRnZVdpZHRoID8gZWRnZVdpZHRoIDogMSkgLyAodXNlUGF0aHMgPyBzaXplIDogMSk7XG4gICAgY29udGV4dC5saW5lSm9pbiA9ICdtaXRlcic7XG5cbiAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgIGNvbnRleHQuc3Ryb2tlKHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1c2VQYXRocykge1xuICAgIC8vIHJlc2V0IHRyYW5zZm9ybSBieSBhcHBseWluZyBpbnZlcnNlXG4gICAgY29udGV4dC5zY2FsZSgxIC8gc2l6ZSwgMSAvIHNpemUpO1xuICAgIGNvbnRleHQucm90YXRlKC1hbmdsZSk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXgsIC15KTtcbiAgfVxufTtcblxudmFyIENScCQzID0ge307XG5cbkNScCQzLnNhZmVEcmF3SW1hZ2UgPSBmdW5jdGlvbiAoY29udGV4dCwgaW1nLCBpeCwgaXksIGl3LCBpaCwgeCwgeSwgdywgaCkge1xuICAvLyBkZXRlY3QgcHJvYmxlbWF0aWMgY2FzZXMgZm9yIG9sZCBicm93c2VycyB3aXRoIGJhZCBpbWFnZXMgKGNoZWFwZXIgdGhhbiB0cnktY2F0Y2gpXG4gIGlmIChpdyA8PSAwIHx8IGloIDw9IDAgfHwgdyA8PSAwIHx8IGggPD0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnRleHQuZHJhd0ltYWdlKGltZywgaXgsIGl5LCBpdywgaWgsIHgsIHksIHcsIGgpO1xufTtcblxuQ1JwJDMuZHJhd0luc2NyaWJlZEltYWdlID0gZnVuY3Rpb24gKGNvbnRleHQsIGltZywgbm9kZSwgaW5kZXgsIG5vZGVPcGFjaXR5KSB7XG4gIHZhciByID0gdGhpcztcbiAgdmFyIHBvcyA9IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIG5vZGVYID0gcG9zLng7XG4gIHZhciBub2RlWSA9IHBvcy55O1xuICB2YXIgc3R5bGVPYmogPSBub2RlLmN5KCkuc3R5bGUoKTtcbiAgdmFyIGdldEluZGV4ZWRTdHlsZSA9IHN0eWxlT2JqLmdldEluZGV4ZWRTdHlsZS5iaW5kKHN0eWxlT2JqKTtcbiAgdmFyIGZpdCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1maXQnLCAndmFsdWUnLCBpbmRleCk7XG4gIHZhciByZXBlYXQgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtcmVwZWF0JywgJ3ZhbHVlJywgaW5kZXgpO1xuICB2YXIgbm9kZVcgPSBub2RlLndpZHRoKCk7XG4gIHZhciBub2RlSCA9IG5vZGUuaGVpZ2h0KCk7XG4gIHZhciBwYWRkaW5nWDIgPSBub2RlLnBhZGRpbmcoKSAqIDI7XG4gIHZhciBub2RlVFcgPSBub2RlVyArIChnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtd2lkdGgtcmVsYXRpdmUtdG8nLCAndmFsdWUnLCBpbmRleCkgPT09ICdpbm5lcicgPyAwIDogcGFkZGluZ1gyKTtcbiAgdmFyIG5vZGVUSCA9IG5vZGVIICsgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQtcmVsYXRpdmUtdG8nLCAndmFsdWUnLCBpbmRleCkgPT09ICdpbm5lcicgPyAwIDogcGFkZGluZ1gyKTtcbiAgdmFyIHJzID0gbm9kZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgdmFyIGNsaXAgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtY2xpcCcsICd2YWx1ZScsIGluZGV4KTtcbiAgdmFyIHNob3VsZENsaXAgPSBjbGlwID09PSAnbm9kZSc7XG4gIHZhciBpbWdPcGFjaXR5ID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWltYWdlLW9wYWNpdHknLCAndmFsdWUnLCBpbmRleCkgKiBub2RlT3BhY2l0eTtcbiAgdmFyIHNtb290aCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1pbWFnZS1zbW9vdGhpbmcnLCAndmFsdWUnLCBpbmRleCk7XG4gIHZhciBpbWdXID0gaW1nLndpZHRoIHx8IGltZy5jYWNoZWRXO1xuICB2YXIgaW1nSCA9IGltZy5oZWlnaHQgfHwgaW1nLmNhY2hlZEg7IC8vIHdvcmthcm91bmQgZm9yIGJyb2tlbiBicm93c2VycyBsaWtlIGllXG5cbiAgaWYgKG51bGwgPT0gaW1nVyB8fCBudWxsID09IGltZ0gpIHtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgIGltZ1cgPSBpbWcuY2FjaGVkVyA9IGltZy53aWR0aCB8fCBpbWcub2Zmc2V0V2lkdGg7XG4gICAgaW1nSCA9IGltZy5jYWNoZWRIID0gaW1nLmhlaWdodCB8fCBpbWcub2Zmc2V0SGVpZ2h0O1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaW1nKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICB9XG5cbiAgdmFyIHcgPSBpbWdXO1xuICB2YXIgaCA9IGltZ0g7XG5cbiAgaWYgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC13aWR0aCcsICd2YWx1ZScsIGluZGV4KSAhPT0gJ2F1dG8nKSB7XG4gICAgaWYgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC13aWR0aCcsICd1bml0cycsIGluZGV4KSA9PT0gJyUnKSB7XG4gICAgICB3ID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLXdpZHRoJywgJ3BmVmFsdWUnLCBpbmRleCkgKiBub2RlVFc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHcgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtd2lkdGgnLCAncGZWYWx1ZScsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBpZiAoZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWhlaWdodCcsICd2YWx1ZScsIGluZGV4KSAhPT0gJ2F1dG8nKSB7XG4gICAgaWYgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQnLCAndW5pdHMnLCBpbmRleCkgPT09ICclJykge1xuICAgICAgaCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQnLCAncGZWYWx1ZScsIGluZGV4KSAqIG5vZGVUSDtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1oZWlnaHQnLCAncGZWYWx1ZScsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBpZiAodyA9PT0gMCB8fCBoID09PSAwKSB7XG4gICAgcmV0dXJuOyAvLyBubyBwb2ludCBpbiBkcmF3aW5nIGVtcHR5IGltYWdlIChhbmQgY2hyb21lIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UpXG4gIH1cblxuICBpZiAoZml0ID09PSAnY29udGFpbicpIHtcbiAgICB2YXIgc2NhbGUgPSBNYXRoLm1pbihub2RlVFcgLyB3LCBub2RlVEggLyBoKTtcbiAgICB3ICo9IHNjYWxlO1xuICAgIGggKj0gc2NhbGU7XG4gIH0gZWxzZSBpZiAoZml0ID09PSAnY292ZXInKSB7XG4gICAgdmFyIHNjYWxlID0gTWF0aC5tYXgobm9kZVRXIC8gdywgbm9kZVRIIC8gaCk7XG4gICAgdyAqPSBzY2FsZTtcbiAgICBoICo9IHNjYWxlO1xuICB9XG5cbiAgdmFyIHggPSBub2RlWCAtIG5vZGVUVyAvIDI7IC8vIGxlZnRcblxuICB2YXIgcG9zWFVuaXRzID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXgnLCAndW5pdHMnLCBpbmRleCk7XG4gIHZhciBwb3NYUGZWYWwgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtcG9zaXRpb24teCcsICdwZlZhbHVlJywgaW5kZXgpO1xuXG4gIGlmIChwb3NYVW5pdHMgPT09ICclJykge1xuICAgIHggKz0gKG5vZGVUVyAtIHcpICogcG9zWFBmVmFsO1xuICB9IGVsc2Uge1xuICAgIHggKz0gcG9zWFBmVmFsO1xuICB9XG5cbiAgdmFyIG9mZlhVbml0cyA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1vZmZzZXQteCcsICd1bml0cycsIGluZGV4KTtcbiAgdmFyIG9mZlhQZlZhbCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1vZmZzZXQteCcsICdwZlZhbHVlJywgaW5kZXgpO1xuXG4gIGlmIChvZmZYVW5pdHMgPT09ICclJykge1xuICAgIHggKz0gKG5vZGVUVyAtIHcpICogb2ZmWFBmVmFsO1xuICB9IGVsc2Uge1xuICAgIHggKz0gb2ZmWFBmVmFsO1xuICB9XG5cbiAgdmFyIHkgPSBub2RlWSAtIG5vZGVUSCAvIDI7IC8vIHRvcFxuXG4gIHZhciBwb3NZVW5pdHMgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtcG9zaXRpb24teScsICd1bml0cycsIGluZGV4KTtcbiAgdmFyIHBvc1lQZlZhbCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1wb3NpdGlvbi15JywgJ3BmVmFsdWUnLCBpbmRleCk7XG5cbiAgaWYgKHBvc1lVbml0cyA9PT0gJyUnKSB7XG4gICAgeSArPSAobm9kZVRIIC0gaCkgKiBwb3NZUGZWYWw7XG4gIH0gZWxzZSB7XG4gICAgeSArPSBwb3NZUGZWYWw7XG4gIH1cblxuICB2YXIgb2ZmWVVuaXRzID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLW9mZnNldC15JywgJ3VuaXRzJywgaW5kZXgpO1xuICB2YXIgb2ZmWVBmVmFsID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLW9mZnNldC15JywgJ3BmVmFsdWUnLCBpbmRleCk7XG5cbiAgaWYgKG9mZllVbml0cyA9PT0gJyUnKSB7XG4gICAgeSArPSAobm9kZVRIIC0gaCkgKiBvZmZZUGZWYWw7XG4gIH0gZWxzZSB7XG4gICAgeSArPSBvZmZZUGZWYWw7XG4gIH1cblxuICBpZiAocnMucGF0aENhY2hlKSB7XG4gICAgeCAtPSBub2RlWDtcbiAgICB5IC09IG5vZGVZO1xuICAgIG5vZGVYID0gMDtcbiAgICBub2RlWSA9IDA7XG4gIH1cblxuICB2YXIgZ0FscGhhID0gY29udGV4dC5nbG9iYWxBbHBoYTtcbiAgY29udGV4dC5nbG9iYWxBbHBoYSA9IGltZ09wYWNpdHk7XG4gIHZhciBzbW9vdGhpbmdFbmFibGVkID0gci5nZXRJbWdTbW9vdGhpbmcoY29udGV4dCk7XG4gIHZhciBpc1Ntb290aGluZ1N3aXRjaGVkID0gZmFsc2U7XG5cbiAgaWYgKHNtb290aCA9PT0gJ25vJyAmJiBzbW9vdGhpbmdFbmFibGVkKSB7XG4gICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgZmFsc2UpO1xuICAgIGlzU21vb3RoaW5nU3dpdGNoZWQgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHNtb290aCA9PT0gJ3llcycgJiYgIXNtb290aGluZ0VuYWJsZWQpIHtcbiAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCB0cnVlKTtcbiAgICBpc1Ntb290aGluZ1N3aXRjaGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChyZXBlYXQgPT09ICduby1yZXBlYXQnKSB7XG4gICAgaWYgKHNob3VsZENsaXApIHtcbiAgICAgIGNvbnRleHQuc2F2ZSgpO1xuXG4gICAgICBpZiAocnMucGF0aENhY2hlKSB7XG4gICAgICAgIGNvbnRleHQuY2xpcChycy5wYXRoQ2FjaGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgci5ub2RlU2hhcGVzW3IuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5kcmF3KGNvbnRleHQsIG5vZGVYLCBub2RlWSwgbm9kZVRXLCBub2RlVEgpO1xuICAgICAgICBjb250ZXh0LmNsaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByLnNhZmVEcmF3SW1hZ2UoY29udGV4dCwgaW1nLCAwLCAwLCBpbWdXLCBpbWdILCB4LCB5LCB3LCBoKTtcblxuICAgIGlmIChzaG91bGRDbGlwKSB7XG4gICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhdHRlcm4gPSBjb250ZXh0LmNyZWF0ZVBhdHRlcm4oaW1nLCByZXBlYXQpO1xuICAgIGNvbnRleHQuZmlsbFN0eWxlID0gcGF0dGVybjtcbiAgICByLm5vZGVTaGFwZXNbci5nZXROb2RlU2hhcGUobm9kZSldLmRyYXcoY29udGV4dCwgbm9kZVgsIG5vZGVZLCBub2RlVFcsIG5vZGVUSCk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoeCwgeSk7XG4gICAgY29udGV4dC5maWxsKCk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXgsIC15KTtcbiAgfVxuXG4gIGNvbnRleHQuZ2xvYmFsQWxwaGEgPSBnQWxwaGE7XG5cbiAgaWYgKGlzU21vb3RoaW5nU3dpdGNoZWQpIHtcbiAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCBzbW9vdGhpbmdFbmFibGVkKTtcbiAgfVxufTtcblxudmFyIENScCQ0ID0ge307XG5cbkNScCQ0LmVsZVRleHRCaWdnZXJUaGFuTWluID0gZnVuY3Rpb24gKGVsZSwgc2NhbGUpIHtcbiAgaWYgKCFzY2FsZSkge1xuICAgIHZhciB6b29tID0gZWxlLmN5KCkuem9vbSgpO1xuICAgIHZhciBweFJhdGlvID0gdGhpcy5nZXRQaXhlbFJhdGlvKCk7XG4gICAgdmFyIGx2bCA9IE1hdGguY2VpbChsb2cyKHpvb20gKiBweFJhdGlvKSk7IC8vIHRoZSBlZmZlY3RpdmUgdGV4dHVyZSBsZXZlbFxuXG4gICAgc2NhbGUgPSBNYXRoLnBvdygyLCBsdmwpO1xuICB9XG5cbiAgdmFyIGNvbXB1dGVkU2l6ZSA9IGVsZS5wc3R5bGUoJ2ZvbnQtc2l6ZScpLnBmVmFsdWUgKiBzY2FsZTtcbiAgdmFyIG1pblNpemUgPSBlbGUucHN0eWxlKCdtaW4tem9vbWVkLWZvbnQtc2l6ZScpLnBmVmFsdWU7XG5cbiAgaWYgKGNvbXB1dGVkU2l6ZSA8IG1pblNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkNScCQ0LmRyYXdFbGVtZW50VGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIHNoaWZ0VG9PcmlnaW5XaXRoQmIsIGZvcmNlLCBwcmVmaXgpIHtcbiAgdmFyIHVzZUVsZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IHRydWU7XG4gIHZhciByID0gdGhpcztcblxuICBpZiAoZm9yY2UgPT0gbnVsbCkge1xuICAgIGlmICh1c2VFbGVPcGFjaXR5ICYmICFyLmVsZVRleHRCaWdnZXJUaGFuTWluKGVsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZm9yY2UgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgIHZhciBsYWJlbCA9IGVsZS5wc3R5bGUoJ2xhYmVsJyk7XG5cbiAgICBpZiAoIWxhYmVsIHx8ICFsYWJlbC52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBqdXN0aWZpY2F0aW9uID0gci5nZXRMYWJlbEp1c3RpZmljYXRpb24oZWxlKTtcbiAgICBjb250ZXh0LnRleHRBbGlnbiA9IGp1c3RpZmljYXRpb247XG4gICAgY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbiAgfSBlbHNlIHtcbiAgICB2YXIgYmFkTGluZSA9IGVsZS5lbGVtZW50KCkuX3ByaXZhdGUucnNjcmF0Y2guYmFkTGluZTtcblxuICAgIHZhciBfbGFiZWwgPSBlbGUucHN0eWxlKCdsYWJlbCcpO1xuXG4gICAgdmFyIHNyY0xhYmVsID0gZWxlLnBzdHlsZSgnc291cmNlLWxhYmVsJyk7XG4gICAgdmFyIHRndExhYmVsID0gZWxlLnBzdHlsZSgndGFyZ2V0LWxhYmVsJyk7XG5cbiAgICBpZiAoYmFkTGluZSB8fCAoIV9sYWJlbCB8fCAhX2xhYmVsLnZhbHVlKSAmJiAoIXNyY0xhYmVsIHx8ICFzcmNMYWJlbC52YWx1ZSkgJiYgKCF0Z3RMYWJlbCB8fCAhdGd0TGFiZWwudmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29udGV4dC50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICBjb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xuICB9XG5cbiAgdmFyIGFwcGx5Um90YXRpb24gPSAhc2hpZnRUb09yaWdpbldpdGhCYjtcbiAgdmFyIGJiO1xuXG4gIGlmIChzaGlmdFRvT3JpZ2luV2l0aEJiKSB7XG4gICAgYmIgPSBzaGlmdFRvT3JpZ2luV2l0aEJiO1xuICAgIGNvbnRleHQudHJhbnNsYXRlKC1iYi54MSwgLWJiLnkxKTtcbiAgfVxuXG4gIGlmIChwcmVmaXggPT0gbnVsbCkge1xuICAgIHIuZHJhd1RleHQoY29udGV4dCwgZWxlLCBudWxsLCBhcHBseVJvdGF0aW9uLCB1c2VFbGVPcGFjaXR5KTtcblxuICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgIHIuZHJhd1RleHQoY29udGV4dCwgZWxlLCAnc291cmNlJywgYXBwbHlSb3RhdGlvbiwgdXNlRWxlT3BhY2l0eSk7XG4gICAgICByLmRyYXdUZXh0KGNvbnRleHQsIGVsZSwgJ3RhcmdldCcsIGFwcGx5Um90YXRpb24sIHVzZUVsZU9wYWNpdHkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByLmRyYXdUZXh0KGNvbnRleHQsIGVsZSwgcHJlZml4LCBhcHBseVJvdGF0aW9uLCB1c2VFbGVPcGFjaXR5KTtcbiAgfVxuXG4gIGlmIChzaGlmdFRvT3JpZ2luV2l0aEJiKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUoYmIueDEsIGJiLnkxKTtcbiAgfVxufTtcblxuQ1JwJDQuZ2V0Rm9udENhY2hlID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgdmFyIGNhY2hlO1xuICB0aGlzLmZvbnRDYWNoZXMgPSB0aGlzLmZvbnRDYWNoZXMgfHwgW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZvbnRDYWNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjYWNoZSA9IHRoaXMuZm9udENhY2hlc1tpXTtcblxuICAgIGlmIChjYWNoZS5jb250ZXh0ID09PSBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gY2FjaGU7XG4gICAgfVxuICB9XG5cbiAgY2FjaGUgPSB7XG4gICAgY29udGV4dDogY29udGV4dFxuICB9O1xuICB0aGlzLmZvbnRDYWNoZXMucHVzaChjYWNoZSk7XG4gIHJldHVybiBjYWNoZTtcbn07IC8vIHNldCB1cCBjYW52YXMgY29udGV4dCB3aXRoIGZvbnRcbi8vIHJldHVybnMgdHJhbnNmb3JtZWQgdGV4dCBzdHJpbmdcblxuXG5DUnAkNC5zZXR1cFRleHRTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUpIHtcbiAgdmFyIHVzZUVsZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHRydWU7XG4gIC8vIEZvbnQgc3R5bGVcbiAgdmFyIGxhYmVsU3R5bGUgPSBlbGUucHN0eWxlKCdmb250LXN0eWxlJykuc3RyVmFsdWU7XG4gIHZhciBsYWJlbFNpemUgPSBlbGUucHN0eWxlKCdmb250LXNpemUnKS5wZlZhbHVlICsgJ3B4JztcbiAgdmFyIGxhYmVsRmFtaWx5ID0gZWxlLnBzdHlsZSgnZm9udC1mYW1pbHknKS5zdHJWYWx1ZTtcbiAgdmFyIGxhYmVsV2VpZ2h0ID0gZWxlLnBzdHlsZSgnZm9udC13ZWlnaHQnKS5zdHJWYWx1ZTtcbiAgdmFyIG9wYWNpdHkgPSB1c2VFbGVPcGFjaXR5ID8gZWxlLmVmZmVjdGl2ZU9wYWNpdHkoKSAqIGVsZS5wc3R5bGUoJ3RleHQtb3BhY2l0eScpLnZhbHVlIDogMTtcbiAgdmFyIG91dGxpbmVPcGFjaXR5ID0gZWxlLnBzdHlsZSgndGV4dC1vdXRsaW5lLW9wYWNpdHknKS52YWx1ZSAqIG9wYWNpdHk7XG4gIHZhciBjb2xvciA9IGVsZS5wc3R5bGUoJ2NvbG9yJykudmFsdWU7XG4gIHZhciBvdXRsaW5lQ29sb3IgPSBlbGUucHN0eWxlKCd0ZXh0LW91dGxpbmUtY29sb3InKS52YWx1ZTtcbiAgY29udGV4dC5mb250ID0gbGFiZWxTdHlsZSArICcgJyArIGxhYmVsV2VpZ2h0ICsgJyAnICsgbGFiZWxTaXplICsgJyAnICsgbGFiZWxGYW1pbHk7XG4gIGNvbnRleHQubGluZUpvaW4gPSAncm91bmQnOyAvLyBzbyB0ZXh0IG91dGxpbmVzIGFyZW4ndCBqYWdnZWRcblxuICB0aGlzLmNvbG9yRmlsbFN0eWxlKGNvbnRleHQsIGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIG9wYWNpdHkpO1xuICB0aGlzLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgb3V0bGluZUNvbG9yWzBdLCBvdXRsaW5lQ29sb3JbMV0sIG91dGxpbmVDb2xvclsyXSwgb3V0bGluZU9wYWNpdHkpO1xufTsgLy8gVE9ETyBlbnN1cmUgcmUtdXNlZFxuXG5cbmZ1bmN0aW9uIHJvdW5kUmVjdChjdHgsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgdmFyIHJhZGl1cyA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogNTtcbiAgY3R4LmJlZ2luUGF0aCgpO1xuICBjdHgubW92ZVRvKHggKyByYWRpdXMsIHkpO1xuICBjdHgubGluZVRvKHggKyB3aWR0aCAtIHJhZGl1cywgeSk7XG4gIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHggKyB3aWR0aCwgeSwgeCArIHdpZHRoLCB5ICsgcmFkaXVzKTtcbiAgY3R4LmxpbmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQgLSByYWRpdXMpO1xuICBjdHgucXVhZHJhdGljQ3VydmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHggKyB3aWR0aCAtIHJhZGl1cywgeSArIGhlaWdodCk7XG4gIGN0eC5saW5lVG8oeCArIHJhZGl1cywgeSArIGhlaWdodCk7XG4gIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHkgKyBoZWlnaHQsIHgsIHkgKyBoZWlnaHQgLSByYWRpdXMpO1xuICBjdHgubGluZVRvKHgsIHkgKyByYWRpdXMpO1xuICBjdHgucXVhZHJhdGljQ3VydmVUbyh4LCB5LCB4ICsgcmFkaXVzLCB5KTtcbiAgY3R4LmNsb3NlUGF0aCgpO1xuICBjdHguZmlsbCgpO1xufVxuXG5DUnAkNC5nZXRUZXh0QW5nbGUgPSBmdW5jdGlvbiAoZWxlLCBwcmVmaXgpIHtcbiAgdmFyIHRoZXRhO1xuICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gIHZhciByc2NyYXRjaCA9IF9wLnJzY3JhdGNoO1xuICB2YXIgcGRhc2ggPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgdmFyIHJvdGF0aW9uID0gZWxlLnBzdHlsZShwZGFzaCArICd0ZXh0LXJvdGF0aW9uJyk7XG4gIHZhciB0ZXh0QW5nbGUgPSBnZXRQcmVmaXhlZFByb3BlcnR5KHJzY3JhdGNoLCAnbGFiZWxBbmdsZScsIHByZWZpeCk7XG5cbiAgaWYgKHJvdGF0aW9uLnN0clZhbHVlID09PSAnYXV0b3JvdGF0ZScpIHtcbiAgICB0aGV0YSA9IGVsZS5pc0VkZ2UoKSA/IHRleHRBbmdsZSA6IDA7XG4gIH0gZWxzZSBpZiAocm90YXRpb24uc3RyVmFsdWUgPT09ICdub25lJykge1xuICAgIHRoZXRhID0gMDtcbiAgfSBlbHNlIHtcbiAgICB0aGV0YSA9IHJvdGF0aW9uLnBmVmFsdWU7XG4gIH1cblxuICByZXR1cm4gdGhldGE7XG59O1xuXG5DUnAkNC5kcmF3VGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIHByZWZpeCkge1xuICB2YXIgYXBwbHlSb3RhdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogdHJ1ZTtcbiAgdmFyIHVzZUVsZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IHRydWU7XG4gIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgdmFyIHJzY3JhdGNoID0gX3AucnNjcmF0Y2g7XG4gIHZhciBwYXJlbnRPcGFjaXR5ID0gdXNlRWxlT3BhY2l0eSA/IGVsZS5lZmZlY3RpdmVPcGFjaXR5KCkgOiAxO1xuXG4gIGlmICh1c2VFbGVPcGFjaXR5ICYmIChwYXJlbnRPcGFjaXR5ID09PSAwIHx8IGVsZS5wc3R5bGUoJ3RleHQtb3BhY2l0eScpLnZhbHVlID09PSAwKSkge1xuICAgIHJldHVybjtcbiAgfSAvLyB1c2UgJ21haW4nIGFzIGFuIGFsaWFzIGZvciB0aGUgbWFpbiBsYWJlbCAoaS5lLiBudWxsIHByZWZpeClcblxuXG4gIGlmIChwcmVmaXggPT09ICdtYWluJykge1xuICAgIHByZWZpeCA9IG51bGw7XG4gIH1cblxuICB2YXIgdGV4dFggPSBnZXRQcmVmaXhlZFByb3BlcnR5KHJzY3JhdGNoLCAnbGFiZWxYJywgcHJlZml4KTtcbiAgdmFyIHRleHRZID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsWScsIHByZWZpeCk7XG4gIHZhciBvcmdUZXh0WCwgb3JnVGV4dFk7IC8vIHVzZWQgZm9yIHJvdGF0aW9uXG5cbiAgdmFyIHRleHQgPSB0aGlzLmdldExhYmVsVGV4dChlbGUsIHByZWZpeCk7XG5cbiAgaWYgKHRleHQgIT0gbnVsbCAmJiB0ZXh0ICE9PSAnJyAmJiAhaXNOYU4odGV4dFgpICYmICFpc05hTih0ZXh0WSkpIHtcbiAgICB0aGlzLnNldHVwVGV4dFN0eWxlKGNvbnRleHQsIGVsZSwgdXNlRWxlT3BhY2l0eSk7XG4gICAgdmFyIHBkYXNoID0gcHJlZml4ID8gcHJlZml4ICsgJy0nIDogJyc7XG4gICAgdmFyIHRleHRXID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsV2lkdGgnLCBwcmVmaXgpO1xuICAgIHZhciB0ZXh0SCA9IGdldFByZWZpeGVkUHJvcGVydHkocnNjcmF0Y2gsICdsYWJlbEhlaWdodCcsIHByZWZpeCk7XG4gICAgdmFyIG1hcmdpblggPSBlbGUucHN0eWxlKHBkYXNoICsgJ3RleHQtbWFyZ2luLXgnKS5wZlZhbHVlO1xuICAgIHZhciBtYXJnaW5ZID0gZWxlLnBzdHlsZShwZGFzaCArICd0ZXh0LW1hcmdpbi15JykucGZWYWx1ZTtcbiAgICB2YXIgaXNFZGdlID0gZWxlLmlzRWRnZSgpO1xuICAgIHZhciBoYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnZhbHVlO1xuICAgIHZhciB2YWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LXZhbGlnbicpLnZhbHVlO1xuXG4gICAgaWYgKGlzRWRnZSkge1xuICAgICAgaGFsaWduID0gJ2NlbnRlcic7XG4gICAgICB2YWxpZ24gPSAnY2VudGVyJztcbiAgICB9XG5cbiAgICB0ZXh0WCArPSBtYXJnaW5YO1xuICAgIHRleHRZICs9IG1hcmdpblk7XG4gICAgdmFyIHRoZXRhO1xuXG4gICAgaWYgKCFhcHBseVJvdGF0aW9uKSB7XG4gICAgICB0aGV0YSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoZXRhID0gdGhpcy5nZXRUZXh0QW5nbGUoZWxlLCBwcmVmaXgpO1xuICAgIH1cblxuICAgIGlmICh0aGV0YSAhPT0gMCkge1xuICAgICAgb3JnVGV4dFggPSB0ZXh0WDtcbiAgICAgIG9yZ1RleHRZID0gdGV4dFk7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShvcmdUZXh0WCwgb3JnVGV4dFkpO1xuICAgICAgY29udGV4dC5yb3RhdGUodGhldGEpO1xuICAgICAgdGV4dFggPSAwO1xuICAgICAgdGV4dFkgPSAwO1xuICAgIH1cblxuICAgIHN3aXRjaCAodmFsaWduKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgdGV4dFkgKz0gdGV4dEggLyAyO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgdGV4dFkgKz0gdGV4dEg7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBiYWNrZ3JvdW5kT3BhY2l0eSA9IGVsZS5wc3R5bGUoJ3RleHQtYmFja2dyb3VuZC1vcGFjaXR5JykudmFsdWU7XG4gICAgdmFyIGJvcmRlck9wYWNpdHkgPSBlbGUucHN0eWxlKCd0ZXh0LWJvcmRlci1vcGFjaXR5JykudmFsdWU7XG4gICAgdmFyIHRleHRCb3JkZXJXaWR0aCA9IGVsZS5wc3R5bGUoJ3RleHQtYm9yZGVyLXdpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgYmFja2dyb3VuZFBhZGRpbmcgPSBlbGUucHN0eWxlKCd0ZXh0LWJhY2tncm91bmQtcGFkZGluZycpLnBmVmFsdWU7XG5cbiAgICBpZiAoYmFja2dyb3VuZE9wYWNpdHkgPiAwIHx8IHRleHRCb3JkZXJXaWR0aCA+IDAgJiYgYm9yZGVyT3BhY2l0eSA+IDApIHtcbiAgICAgIHZhciBiZ1ggPSB0ZXh0WCAtIGJhY2tncm91bmRQYWRkaW5nO1xuXG4gICAgICBzd2l0Y2ggKGhhbGlnbikge1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICBiZ1ggLT0gdGV4dFc7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICBiZ1ggLT0gdGV4dFcgLyAyO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgYmdZID0gdGV4dFkgLSB0ZXh0SCAtIGJhY2tncm91bmRQYWRkaW5nO1xuICAgICAgdmFyIGJnVyA9IHRleHRXICsgMiAqIGJhY2tncm91bmRQYWRkaW5nO1xuICAgICAgdmFyIGJnSCA9IHRleHRIICsgMiAqIGJhY2tncm91bmRQYWRkaW5nO1xuXG4gICAgICBpZiAoYmFja2dyb3VuZE9wYWNpdHkgPiAwKSB7XG4gICAgICAgIHZhciB0ZXh0RmlsbCA9IGNvbnRleHQuZmlsbFN0eWxlO1xuICAgICAgICB2YXIgdGV4dEJhY2tncm91bmRDb2xvciA9IGVsZS5wc3R5bGUoJ3RleHQtYmFja2dyb3VuZC1jb2xvcicpLnZhbHVlO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2JhKCcgKyB0ZXh0QmFja2dyb3VuZENvbG9yWzBdICsgJywnICsgdGV4dEJhY2tncm91bmRDb2xvclsxXSArICcsJyArIHRleHRCYWNrZ3JvdW5kQ29sb3JbMl0gKyAnLCcgKyBiYWNrZ3JvdW5kT3BhY2l0eSAqIHBhcmVudE9wYWNpdHkgKyAnKSc7XG4gICAgICAgIHZhciBzdHlsZVNoYXBlID0gZWxlLnBzdHlsZSgndGV4dC1iYWNrZ3JvdW5kLXNoYXBlJykuc3RyVmFsdWU7XG5cbiAgICAgICAgaWYgKHN0eWxlU2hhcGUuaW5kZXhPZigncm91bmQnKSA9PT0gMCkge1xuICAgICAgICAgIHJvdW5kUmVjdChjb250ZXh0LCBiZ1gsIGJnWSwgYmdXLCBiZ0gsIDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmdYLCBiZ1ksIGJnVywgYmdIKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gdGV4dEZpbGw7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXh0Qm9yZGVyV2lkdGggPiAwICYmIGJvcmRlck9wYWNpdHkgPiAwKSB7XG4gICAgICAgIHZhciB0ZXh0U3Ryb2tlID0gY29udGV4dC5zdHJva2VTdHlsZTtcbiAgICAgICAgdmFyIHRleHRMaW5lV2lkdGggPSBjb250ZXh0LmxpbmVXaWR0aDtcbiAgICAgICAgdmFyIHRleHRCb3JkZXJDb2xvciA9IGVsZS5wc3R5bGUoJ3RleHQtYm9yZGVyLWNvbG9yJykudmFsdWU7XG4gICAgICAgIHZhciB0ZXh0Qm9yZGVyU3R5bGUgPSBlbGUucHN0eWxlKCd0ZXh0LWJvcmRlci1zdHlsZScpLnZhbHVlO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gJ3JnYmEoJyArIHRleHRCb3JkZXJDb2xvclswXSArICcsJyArIHRleHRCb3JkZXJDb2xvclsxXSArICcsJyArIHRleHRCb3JkZXJDb2xvclsyXSArICcsJyArIGJvcmRlck9wYWNpdHkgKiBwYXJlbnRPcGFjaXR5ICsgJyknO1xuICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRleHRCb3JkZXJXaWR0aDtcblxuICAgICAgICBpZiAoY29udGV4dC5zZXRMaW5lRGFzaCkge1xuICAgICAgICAgIC8vIGZvciB2ZXJ5IG91dG9mZGF0ZSBicm93c2Vyc1xuICAgICAgICAgIHN3aXRjaCAodGV4dEJvcmRlclN0eWxlKSB7XG4gICAgICAgICAgICBjYXNlICdkb3R0ZWQnOlxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFsxLCAxXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkYXNoZWQnOlxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFs0LCAyXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkb3VibGUnOlxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRleHRCb3JkZXJXaWR0aCAvIDQ7IC8vIDUwJSByZXNlcnZlZCBmb3Igd2hpdGUgYmV0d2VlbiB0aGUgdHdvIGJvcmRlcnNcblxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3NvbGlkJzpcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlUmVjdChiZ1gsIGJnWSwgYmdXLCBiZ0gpO1xuXG4gICAgICAgIGlmICh0ZXh0Qm9yZGVyU3R5bGUgPT09ICdkb3VibGUnKSB7XG4gICAgICAgICAgdmFyIHdoaXRlV2lkdGggPSB0ZXh0Qm9yZGVyV2lkdGggLyAyO1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlUmVjdChiZ1ggKyB3aGl0ZVdpZHRoLCBiZ1kgKyB3aGl0ZVdpZHRoLCBiZ1cgLSB3aGl0ZVdpZHRoICogMiwgYmdIIC0gd2hpdGVXaWR0aCAqIDIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gdGV4dExpbmVXaWR0aDtcbiAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHRleHRTdHJva2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxpbmVXaWR0aCA9IDIgKiBlbGUucHN0eWxlKCd0ZXh0LW91dGxpbmUtd2lkdGgnKS5wZlZhbHVlOyAvLyAqMiBiL2MgdGhlIHN0cm9rZSBpcyBkcmF3biBjZW50cmVkIG9uIHRoZSBtaWRkbGVcblxuICAgIGlmIChsaW5lV2lkdGggPiAwKSB7XG4gICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGxpbmVXaWR0aDtcbiAgICB9XG5cbiAgICBpZiAoZWxlLnBzdHlsZSgndGV4dC13cmFwJykudmFsdWUgPT09ICd3cmFwJykge1xuICAgICAgdmFyIGxpbmVzID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsV3JhcENhY2hlZExpbmVzJywgcHJlZml4KTtcbiAgICAgIHZhciBsaW5lSGVpZ2h0ID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsTGluZUhlaWdodCcsIHByZWZpeCk7XG4gICAgICB2YXIgaGFsZlRleHRXID0gdGV4dFcgLyAyO1xuICAgICAgdmFyIGp1c3RpZmljYXRpb24gPSB0aGlzLmdldExhYmVsSnVzdGlmaWNhdGlvbihlbGUpO1xuXG4gICAgICBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2F1dG8nKSA7IGVsc2UgaWYgKGhhbGlnbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIC8vIGF1dG8ganVzdGlmaWNhdGlvbiA6IHJpZ2h0XG4gICAgICAgIGlmIChqdXN0aWZpY2F0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgICB0ZXh0WCArPSAtdGV4dFc7XG4gICAgICAgIH0gZWxzZSBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICB0ZXh0WCArPSAtaGFsZlRleHRXO1xuICAgICAgICB9IC8vIGVsc2Ugc2FtZSBhcyBhdXRvXG5cbiAgICAgIH0gZWxzZSBpZiAoaGFsaWduID09PSAnY2VudGVyJykge1xuICAgICAgICAvLyBhdXRvIGp1c3RmaWNhdGlvbiA6IGNlbnRlclxuICAgICAgICBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgdGV4dFggKz0gLWhhbGZUZXh0VztcbiAgICAgICAgfSBlbHNlIGlmIChqdXN0aWZpY2F0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgdGV4dFggKz0gaGFsZlRleHRXO1xuICAgICAgICB9IC8vIGVsc2Ugc2FtZSBhcyBhdXRvXG5cbiAgICAgIH0gZWxzZSBpZiAoaGFsaWduID09PSAncmlnaHQnKSB7XG4gICAgICAgIC8vIGF1dG8ganVzdGlmaWNhdGlvbiA6IGxlZnRcbiAgICAgICAgaWYgKGp1c3RpZmljYXRpb24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgdGV4dFggKz0gaGFsZlRleHRXO1xuICAgICAgICB9IGVsc2UgaWYgKGp1c3RpZmljYXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgICB0ZXh0WCArPSB0ZXh0VztcbiAgICAgICAgfSAvLyBlbHNlIHNhbWUgYXMgYXV0b1xuXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAodmFsaWduKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgdGV4dFkgLT0gKGxpbmVzLmxlbmd0aCAtIDEpICogbGluZUhlaWdodDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIHRleHRZIC09IChsaW5lcy5sZW5ndGggLSAxKSAqIGxpbmVIZWlnaHQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgbGluZXMubGVuZ3RoOyBsKyspIHtcbiAgICAgICAgaWYgKGxpbmVXaWR0aCA+IDApIHtcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQobGluZXNbbF0sIHRleHRYLCB0ZXh0WSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGxpbmVzW2xdLCB0ZXh0WCwgdGV4dFkpO1xuICAgICAgICB0ZXh0WSArPSBsaW5lSGVpZ2h0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobGluZVdpZHRoID4gMCkge1xuICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQodGV4dCwgdGV4dFgsIHRleHRZKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCB0ZXh0WCwgdGV4dFkpO1xuICAgIH1cblxuICAgIGlmICh0aGV0YSAhPT0gMCkge1xuICAgICAgY29udGV4dC5yb3RhdGUoLXRoZXRhKTtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1vcmdUZXh0WCwgLW9yZ1RleHRZKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qIGdsb2JhbCBQYXRoMkQgKi9cbnZhciBDUnAkNSA9IHt9O1xuXG5DUnAkNS5kcmF3Tm9kZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBub2RlLCBzaGlmdFRvT3JpZ2luV2l0aEJiKSB7XG4gIHZhciBkcmF3TGFiZWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHRydWU7XG4gIHZhciBzaG91bGREcmF3T3ZlcmxheSA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogdHJ1ZTtcbiAgdmFyIHNob3VsZERyYXdPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB0cnVlO1xuICB2YXIgciA9IHRoaXM7XG4gIHZhciBub2RlV2lkdGgsIG5vZGVIZWlnaHQ7XG4gIHZhciBfcCA9IG5vZGUuX3ByaXZhdGU7XG4gIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuXG4gIGlmICghbnVtYmVyKHBvcy54KSB8fCAhbnVtYmVyKHBvcy55KSkge1xuICAgIHJldHVybjsgLy8gY2FuJ3QgZHJhdyBub2RlIHdpdGggdW5kZWZpbmVkIHBvc2l0aW9uXG4gIH1cblxuICBpZiAoc2hvdWxkRHJhd09wYWNpdHkgJiYgIW5vZGUudmlzaWJsZSgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGVsZU9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IG5vZGUuZWZmZWN0aXZlT3BhY2l0eSgpIDogMTtcbiAgdmFyIHVzZVBhdGhzID0gci51c2VQYXRocygpO1xuICB2YXIgcGF0aDtcbiAgdmFyIHBhdGhDYWNoZUhpdCA9IGZhbHNlO1xuICB2YXIgcGFkZGluZyA9IG5vZGUucGFkZGluZygpO1xuICBub2RlV2lkdGggPSBub2RlLndpZHRoKCkgKyAyICogcGFkZGluZztcbiAgbm9kZUhlaWdodCA9IG5vZGUuaGVpZ2h0KCkgKyAyICogcGFkZGluZzsgLy9cbiAgLy8gc2V0dXAgc2hpZnRcblxuICB2YXIgYmI7XG5cbiAgaWYgKHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICBiYiA9IHNoaWZ0VG9PcmlnaW5XaXRoQmI7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWJiLngxLCAtYmIueTEpO1xuICB9IC8vXG4gIC8vIGxvYWQgYmcgaW1hZ2VcblxuXG4gIHZhciBiZ0ltZ1Byb3AgPSBub2RlLnBzdHlsZSgnYmFja2dyb3VuZC1pbWFnZScpO1xuICB2YXIgdXJscyA9IGJnSW1nUHJvcC52YWx1ZTtcbiAgdmFyIHVybERlZmluZWQgPSBuZXcgQXJyYXkodXJscy5sZW5ndGgpO1xuICB2YXIgaW1hZ2UgPSBuZXcgQXJyYXkodXJscy5sZW5ndGgpO1xuICB2YXIgbnVtSW1hZ2VzID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHVybHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdXJsID0gdXJsc1tpXTtcbiAgICB2YXIgZGVmZCA9IHVybERlZmluZWRbaV0gPSB1cmwgIT0gbnVsbCAmJiB1cmwgIT09ICdub25lJztcblxuICAgIGlmIChkZWZkKSB7XG4gICAgICB2YXIgYmdJbWdDcm9zc09yaWdpbiA9IG5vZGUuY3koKS5zdHlsZSgpLmdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1pbWFnZS1jcm9zc29yaWdpbicsICd2YWx1ZScsIGkpO1xuICAgICAgbnVtSW1hZ2VzKys7IC8vIGdldCBpbWFnZSwgYW5kIGlmIG5vdCBsb2FkZWQgdGhlbiBhc2sgdG8gcmVkcmF3IHdoZW4gbGF0ZXIgbG9hZGVkXG5cbiAgICAgIGltYWdlW2ldID0gci5nZXRDYWNoZWRJbWFnZSh1cmwsIGJnSW1nQ3Jvc3NPcmlnaW4sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3AuYmFja2dyb3VuZFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgIG5vZGUuZW1pdEFuZE5vdGlmeSgnYmFja2dyb3VuZCcpO1xuICAgICAgfSk7XG4gICAgfVxuICB9IC8vXG4gIC8vIHNldHVwIHN0eWxlc1xuXG5cbiAgdmFyIGRhcmtuZXNzID0gbm9kZS5wc3R5bGUoJ2JhY2tncm91bmQtYmxhY2tlbicpLnZhbHVlO1xuICB2YXIgYm9yZGVyV2lkdGggPSBub2RlLnBzdHlsZSgnYm9yZGVyLXdpZHRoJykucGZWYWx1ZTtcbiAgdmFyIGJnT3BhY2l0eSA9IG5vZGUucHN0eWxlKCdiYWNrZ3JvdW5kLW9wYWNpdHknKS52YWx1ZSAqIGVsZU9wYWNpdHk7XG4gIHZhciBib3JkZXJDb2xvciA9IG5vZGUucHN0eWxlKCdib3JkZXItY29sb3InKS52YWx1ZTtcbiAgdmFyIGJvcmRlclN0eWxlID0gbm9kZS5wc3R5bGUoJ2JvcmRlci1zdHlsZScpLnZhbHVlO1xuICB2YXIgYm9yZGVyT3BhY2l0eSA9IG5vZGUucHN0eWxlKCdib3JkZXItb3BhY2l0eScpLnZhbHVlICogZWxlT3BhY2l0eTtcbiAgY29udGV4dC5saW5lSm9pbiA9ICdtaXRlcic7IC8vIHNvIGJvcmRlcnMgYXJlIHNxdWFyZSB3aXRoIHRoZSBub2RlIHNoYXBlXG5cbiAgdmFyIHNldHVwU2hhcGVDb2xvciA9IGZ1bmN0aW9uIHNldHVwU2hhcGVDb2xvcigpIHtcbiAgICB2YXIgYmdPcHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGJnT3BhY2l0eTtcbiAgICByLmVsZUZpbGxTdHlsZShjb250ZXh0LCBub2RlLCBiZ09weSk7XG4gIH07XG5cbiAgdmFyIHNldHVwQm9yZGVyQ29sb3IgPSBmdW5jdGlvbiBzZXR1cEJvcmRlckNvbG9yKCkge1xuICAgIHZhciBiZHJPcHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGJvcmRlck9wYWNpdHk7XG4gICAgci5jb2xvclN0cm9rZVN0eWxlKGNvbnRleHQsIGJvcmRlckNvbG9yWzBdLCBib3JkZXJDb2xvclsxXSwgYm9yZGVyQ29sb3JbMl0sIGJkck9weSk7XG4gIH07IC8vXG4gIC8vIHNldHVwIHNoYXBlXG5cblxuICB2YXIgc3R5bGVTaGFwZSA9IG5vZGUucHN0eWxlKCdzaGFwZScpLnN0clZhbHVlO1xuICB2YXIgc2hhcGVQdHMgPSBub2RlLnBzdHlsZSgnc2hhcGUtcG9seWdvbi1wb2ludHMnKS5wZlZhbHVlO1xuXG4gIGlmICh1c2VQYXRocykge1xuICAgIGNvbnRleHQudHJhbnNsYXRlKHBvcy54LCBwb3MueSk7XG4gICAgdmFyIHBhdGhDYWNoZSA9IHIubm9kZVBhdGhDYWNoZSA9IHIubm9kZVBhdGhDYWNoZSB8fCBbXTtcbiAgICB2YXIga2V5ID0gaGFzaFN0cmluZ3Moc3R5bGVTaGFwZSA9PT0gJ3BvbHlnb24nID8gc3R5bGVTaGFwZSArICcsJyArIHNoYXBlUHRzLmpvaW4oJywnKSA6IHN0eWxlU2hhcGUsICcnICsgbm9kZUhlaWdodCwgJycgKyBub2RlV2lkdGgpO1xuICAgIHZhciBjYWNoZWRQYXRoID0gcGF0aENhY2hlW2tleV07XG5cbiAgICBpZiAoY2FjaGVkUGF0aCAhPSBudWxsKSB7XG4gICAgICBwYXRoID0gY2FjaGVkUGF0aDtcbiAgICAgIHBhdGhDYWNoZUhpdCA9IHRydWU7XG4gICAgICBycy5wYXRoQ2FjaGUgPSBwYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gbmV3IFBhdGgyRCgpO1xuICAgICAgcGF0aENhY2hlW2tleV0gPSBycy5wYXRoQ2FjaGUgPSBwYXRoO1xuICAgIH1cbiAgfVxuXG4gIHZhciBkcmF3U2hhcGUgPSBmdW5jdGlvbiBkcmF3U2hhcGUoKSB7XG4gICAgaWYgKCFwYXRoQ2FjaGVIaXQpIHtcbiAgICAgIHZhciBucG9zID0gcG9zO1xuXG4gICAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgICAgbnBvcyA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDBcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgci5ub2RlU2hhcGVzW3IuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5kcmF3KHBhdGggfHwgY29udGV4dCwgbnBvcy54LCBucG9zLnksIG5vZGVXaWR0aCwgbm9kZUhlaWdodCk7XG4gICAgfVxuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICBjb250ZXh0LmZpbGwocGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd0ltYWdlcyA9IGZ1bmN0aW9uIGRyYXdJbWFnZXMoKSB7XG4gICAgdmFyIG5vZGVPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBlbGVPcGFjaXR5O1xuICAgIHZhciBpbnNpZGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gICAgdmFyIHByZXZCZ2luZyA9IF9wLmJhY2tncm91bmRpbmc7XG4gICAgdmFyIHRvdGFsQ29tcGxldGVkID0gMDtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBpbWFnZS5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBiZ0NvbnRhaW5tZW50ID0gbm9kZS5jeSgpLnN0eWxlKCkuZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWltYWdlLWNvbnRhaW5tZW50JywgJ3ZhbHVlJywgX2kpO1xuXG4gICAgICBpZiAoaW5zaWRlICYmIGJnQ29udGFpbm1lbnQgPT09ICdvdmVyJyB8fCAhaW5zaWRlICYmIGJnQ29udGFpbm1lbnQgPT09ICdpbnNpZGUnKSB7XG4gICAgICAgIHRvdGFsQ29tcGxldGVkKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodXJsRGVmaW5lZFtfaV0gJiYgaW1hZ2VbX2ldLmNvbXBsZXRlICYmICFpbWFnZVtfaV0uZXJyb3IpIHtcbiAgICAgICAgdG90YWxDb21wbGV0ZWQrKztcbiAgICAgICAgci5kcmF3SW5zY3JpYmVkSW1hZ2UoY29udGV4dCwgaW1hZ2VbX2ldLCBub2RlLCBfaSwgbm9kZU9wYWNpdHkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9wLmJhY2tncm91bmRpbmcgPSAhKHRvdGFsQ29tcGxldGVkID09PSBudW1JbWFnZXMpO1xuXG4gICAgaWYgKHByZXZCZ2luZyAhPT0gX3AuYmFja2dyb3VuZGluZykge1xuICAgICAgLy8gdXBkYXRlIHN0eWxlIGIvYyA6YmFja2dyb3VuZGluZyBzdGF0ZSBjaGFuZ2VkXG4gICAgICBub2RlLnVwZGF0ZVN0eWxlKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGRyYXdQaWUgPSBmdW5jdGlvbiBkcmF3UGllKCkge1xuICAgIHZhciByZWRyYXdTaGFwZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZmFsc2U7XG4gICAgdmFyIHBpZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGVsZU9wYWNpdHk7XG5cbiAgICBpZiAoci5oYXNQaWUobm9kZSkpIHtcbiAgICAgIHIuZHJhd1BpZShjb250ZXh0LCBub2RlLCBwaWVPcGFjaXR5KTsgLy8gcmVkcmF3L3Jlc3RvcmUgcGF0aCBpZiBzdGVwcyBhZnRlciBwaWUgbmVlZCBpdFxuXG4gICAgICBpZiAocmVkcmF3U2hhcGUpIHtcbiAgICAgICAgaWYgKCF1c2VQYXRocykge1xuICAgICAgICAgIHIubm9kZVNoYXBlc1tyLmdldE5vZGVTaGFwZShub2RlKV0uZHJhdyhjb250ZXh0LCBwb3MueCwgcG9zLnksIG5vZGVXaWR0aCwgbm9kZUhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGRhcmtlbiA9IGZ1bmN0aW9uIGRhcmtlbigpIHtcbiAgICB2YXIgZGFya2VuT3BhY2l0eSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZWxlT3BhY2l0eTtcbiAgICB2YXIgb3BhY2l0eSA9IChkYXJrbmVzcyA+IDAgPyBkYXJrbmVzcyA6IC1kYXJrbmVzcykgKiBkYXJrZW5PcGFjaXR5O1xuICAgIHZhciBjID0gZGFya25lc3MgPiAwID8gMCA6IDI1NTtcblxuICAgIGlmIChkYXJrbmVzcyAhPT0gMCkge1xuICAgICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBjLCBjLCBjLCBvcGFjaXR5KTtcblxuICAgICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAgIGNvbnRleHQuZmlsbChwYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd0JvcmRlciA9IGZ1bmN0aW9uIGRyYXdCb3JkZXIoKSB7XG4gICAgaWYgKGJvcmRlcldpZHRoID4gMCkge1xuICAgICAgY29udGV4dC5saW5lV2lkdGggPSBib3JkZXJXaWR0aDtcbiAgICAgIGNvbnRleHQubGluZUNhcCA9ICdidXR0JztcblxuICAgICAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgLy8gZm9yIHZlcnkgb3V0b2ZkYXRlIGJyb3dzZXJzXG4gICAgICAgIHN3aXRjaCAoYm9yZGVyU3R5bGUpIHtcbiAgICAgICAgICBjYXNlICdkb3R0ZWQnOlxuICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbMSwgMV0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdkYXNoZWQnOlxuICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbNCwgMl0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdzb2xpZCc6XG4gICAgICAgICAgY2FzZSAnZG91YmxlJzpcbiAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKHBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvcmRlclN0eWxlID09PSAnZG91YmxlJykge1xuICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGJvcmRlcldpZHRoIC8gMztcbiAgICAgICAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdXQnO1xuXG4gICAgICAgIGlmICh1c2VQYXRocykge1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKHBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGdjbztcbiAgICAgIH0gLy8gcmVzZXQgaW4gY2FzZSB3ZSBjaGFuZ2VkIHRoZSBib3JkZXIgc3R5bGVcblxuXG4gICAgICBpZiAoY29udGV4dC5zZXRMaW5lRGFzaCkge1xuICAgICAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBkcmF3T3ZlcmxheSA9IGZ1bmN0aW9uIGRyYXdPdmVybGF5KCkge1xuICAgIGlmIChzaG91bGREcmF3T3ZlcmxheSkge1xuICAgICAgci5kcmF3Tm9kZU92ZXJsYXkoY29udGV4dCwgbm9kZSwgcG9zLCBub2RlV2lkdGgsIG5vZGVIZWlnaHQpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd1VuZGVybGF5ID0gZnVuY3Rpb24gZHJhd1VuZGVybGF5KCkge1xuICAgIGlmIChzaG91bGREcmF3T3ZlcmxheSkge1xuICAgICAgci5kcmF3Tm9kZVVuZGVybGF5KGNvbnRleHQsIG5vZGUsIHBvcywgbm9kZVdpZHRoLCBub2RlSGVpZ2h0KTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGRyYXdUZXh0ID0gZnVuY3Rpb24gZHJhd1RleHQoKSB7XG4gICAgci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgbm9kZSwgbnVsbCwgZHJhd0xhYmVsKTtcbiAgfTtcblxuICB2YXIgZ2hvc3QgPSBub2RlLnBzdHlsZSgnZ2hvc3QnKS52YWx1ZSA9PT0gJ3llcyc7XG5cbiAgaWYgKGdob3N0KSB7XG4gICAgdmFyIGd4ID0gbm9kZS5wc3R5bGUoJ2dob3N0LW9mZnNldC14JykucGZWYWx1ZTtcbiAgICB2YXIgZ3kgPSBub2RlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXknKS5wZlZhbHVlO1xuICAgIHZhciBnaG9zdE9wYWNpdHkgPSBub2RlLnBzdHlsZSgnZ2hvc3Qtb3BhY2l0eScpLnZhbHVlO1xuICAgIHZhciBlZmZHaG9zdE9wYWNpdHkgPSBnaG9zdE9wYWNpdHkgKiBlbGVPcGFjaXR5O1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGd4LCBneSk7XG4gICAgc2V0dXBTaGFwZUNvbG9yKGdob3N0T3BhY2l0eSAqIGJnT3BhY2l0eSk7XG4gICAgZHJhd1NoYXBlKCk7XG4gICAgZHJhd0ltYWdlcyhlZmZHaG9zdE9wYWNpdHksIHRydWUpO1xuICAgIHNldHVwQm9yZGVyQ29sb3IoZ2hvc3RPcGFjaXR5ICogYm9yZGVyT3BhY2l0eSk7XG4gICAgZHJhd0JvcmRlcigpO1xuICAgIGRyYXdQaWUoZGFya25lc3MgIT09IDAgfHwgYm9yZGVyV2lkdGggIT09IDApO1xuICAgIGRyYXdJbWFnZXMoZWZmR2hvc3RPcGFjaXR5LCBmYWxzZSk7XG4gICAgZGFya2VuKGVmZkdob3N0T3BhY2l0eSk7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLWd4LCAtZ3kpO1xuICB9XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXBvcy54LCAtcG9zLnkpO1xuICB9XG5cbiAgZHJhd1VuZGVybGF5KCk7XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUocG9zLngsIHBvcy55KTtcbiAgfVxuXG4gIHNldHVwU2hhcGVDb2xvcigpO1xuICBkcmF3U2hhcGUoKTtcbiAgZHJhd0ltYWdlcyhlbGVPcGFjaXR5LCB0cnVlKTtcbiAgc2V0dXBCb3JkZXJDb2xvcigpO1xuICBkcmF3Qm9yZGVyKCk7XG4gIGRyYXdQaWUoZGFya25lc3MgIT09IDAgfHwgYm9yZGVyV2lkdGggIT09IDApO1xuICBkcmF3SW1hZ2VzKGVsZU9wYWNpdHksIGZhbHNlKTtcbiAgZGFya2VuKCk7XG5cbiAgaWYgKHVzZVBhdGhzKSB7XG4gICAgY29udGV4dC50cmFuc2xhdGUoLXBvcy54LCAtcG9zLnkpO1xuICB9XG5cbiAgZHJhd1RleHQoKTtcbiAgZHJhd092ZXJsYXkoKTsgLy9cbiAgLy8gY2xlYW4gdXAgc2hpZnRcblxuICBpZiAoc2hpZnRUb09yaWdpbldpdGhCYikge1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGJiLngxLCBiYi55MSk7XG4gIH1cbn07XG5cbnZhciBkcmF3Tm9kZU92ZXJsYXlVbmRlcmxheSA9IGZ1bmN0aW9uIGRyYXdOb2RlT3ZlcmxheVVuZGVybGF5KG92ZXJsYXlPclVuZGVybGF5KSB7XG4gIGlmICghWydvdmVybGF5JywgJ3VuZGVybGF5J10uaW5jbHVkZXMob3ZlcmxheU9yVW5kZXJsYXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0YXRlJyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGNvbnRleHQsIG5vZGUsIHBvcywgbm9kZVdpZHRoLCBub2RlSGVpZ2h0KSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuXG4gICAgaWYgKCFub2RlLnZpc2libGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwYWRkaW5nID0gbm9kZS5wc3R5bGUoXCJcIi5jb25jYXQob3ZlcmxheU9yVW5kZXJsYXksIFwiLXBhZGRpbmdcIikpLnBmVmFsdWU7XG4gICAgdmFyIG9wYWNpdHkgPSBub2RlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItb3BhY2l0eVwiKSkudmFsdWU7XG4gICAgdmFyIGNvbG9yID0gbm9kZS5wc3R5bGUoXCJcIi5jb25jYXQob3ZlcmxheU9yVW5kZXJsYXksIFwiLWNvbG9yXCIpKS52YWx1ZTtcbiAgICB2YXIgc2hhcGUgPSBub2RlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItc2hhcGVcIikpLnZhbHVlO1xuXG4gICAgaWYgKG9wYWNpdHkgPiAwKSB7XG4gICAgICBwb3MgPSBwb3MgfHwgbm9kZS5wb3NpdGlvbigpO1xuXG4gICAgICBpZiAobm9kZVdpZHRoID09IG51bGwgfHwgbm9kZUhlaWdodCA9PSBudWxsKSB7XG4gICAgICAgIHZhciBfcGFkZGluZyA9IG5vZGUucGFkZGluZygpO1xuXG4gICAgICAgIG5vZGVXaWR0aCA9IG5vZGUud2lkdGgoKSArIDIgKiBfcGFkZGluZztcbiAgICAgICAgbm9kZUhlaWdodCA9IG5vZGUuaGVpZ2h0KCkgKyAyICogX3BhZGRpbmc7XG4gICAgICB9XG5cbiAgICAgIHIuY29sb3JGaWxsU3R5bGUoY29udGV4dCwgY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgb3BhY2l0eSk7XG4gICAgICByLm5vZGVTaGFwZXNbc2hhcGVdLmRyYXcoY29udGV4dCwgcG9zLngsIHBvcy55LCBub2RlV2lkdGggKyBwYWRkaW5nICogMiwgbm9kZUhlaWdodCArIHBhZGRpbmcgKiAyKTtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH1cbiAgfTtcbn07XG5cbkNScCQ1LmRyYXdOb2RlT3ZlcmxheSA9IGRyYXdOb2RlT3ZlcmxheVVuZGVybGF5KCdvdmVybGF5Jyk7XG5DUnAkNS5kcmF3Tm9kZVVuZGVybGF5ID0gZHJhd05vZGVPdmVybGF5VW5kZXJsYXkoJ3VuZGVybGF5Jyk7IC8vIGRvZXMgdGhlIG5vZGUgaGF2ZSBhdCBsZWFzdCBvbmUgcGllIHBpZWNlP1xuXG5DUnAkNS5oYXNQaWUgPSBmdW5jdGlvbiAobm9kZSkge1xuICBub2RlID0gbm9kZVswXTsgLy8gZW5zdXJlIGVsZSByZWZcblxuICByZXR1cm4gbm9kZS5fcHJpdmF0ZS5oYXNQaWU7XG59O1xuXG5DUnAkNS5kcmF3UGllID0gZnVuY3Rpb24gKGNvbnRleHQsIG5vZGUsIG5vZGVPcGFjaXR5LCBwb3MpIHtcbiAgbm9kZSA9IG5vZGVbMF07IC8vIGVuc3VyZSBlbGUgcmVmXG5cbiAgcG9zID0gcG9zIHx8IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIGN5U3R5bGUgPSBub2RlLmN5KCkuc3R5bGUoKTtcbiAgdmFyIHBpZVNpemUgPSBub2RlLnBzdHlsZSgncGllLXNpemUnKTtcbiAgdmFyIHggPSBwb3MueDtcbiAgdmFyIHkgPSBwb3MueTtcbiAgdmFyIG5vZGVXID0gbm9kZS53aWR0aCgpO1xuICB2YXIgbm9kZUggPSBub2RlLmhlaWdodCgpO1xuICB2YXIgcmFkaXVzID0gTWF0aC5taW4obm9kZVcsIG5vZGVIKSAvIDI7IC8vIG11c3QgZml0IGluIG5vZGVcblxuICB2YXIgbGFzdFBlcmNlbnQgPSAwOyAvLyB3aGF0ICUgdG8gY29udGludWUgZHJhd2luZyBwaWUgc2xpY2VzIGZyb20gb24gWzAsIDFdXG5cbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuXG4gIGlmICh1c2VQYXRocykge1xuICAgIHggPSAwO1xuICAgIHkgPSAwO1xuICB9XG5cbiAgaWYgKHBpZVNpemUudW5pdHMgPT09ICclJykge1xuICAgIHJhZGl1cyA9IHJhZGl1cyAqIHBpZVNpemUucGZWYWx1ZTtcbiAgfSBlbHNlIGlmIChwaWVTaXplLnBmVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJhZGl1cyA9IHBpZVNpemUucGZWYWx1ZSAvIDI7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMTsgaSA8PSBjeVN0eWxlLnBpZUJhY2tncm91bmROOyBpKyspIHtcbiAgICAvLyAxLi5OXG4gICAgdmFyIHNpemUgPSBub2RlLnBzdHlsZSgncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLXNpemUnKS52YWx1ZTtcbiAgICB2YXIgY29sb3IgPSBub2RlLnBzdHlsZSgncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLWNvbG9yJykudmFsdWU7XG4gICAgdmFyIG9wYWNpdHkgPSBub2RlLnBzdHlsZSgncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLW9wYWNpdHknKS52YWx1ZSAqIG5vZGVPcGFjaXR5O1xuICAgIHZhciBwZXJjZW50ID0gc2l6ZSAvIDEwMDsgLy8gbWFwIGludGVnZXIgcmFuZ2UgWzAsIDEwMF0gdG8gWzAsIDFdXG4gICAgLy8gcGVyY2VudCBjYW4ndCBwdXNoIGJleW9uZCAxXG5cbiAgICBpZiAocGVyY2VudCArIGxhc3RQZXJjZW50ID4gMSkge1xuICAgICAgcGVyY2VudCA9IDEgLSBsYXN0UGVyY2VudDtcbiAgICB9XG5cbiAgICB2YXIgYW5nbGVTdGFydCA9IDEuNSAqIE1hdGguUEkgKyAyICogTWF0aC5QSSAqIGxhc3RQZXJjZW50OyAvLyBzdGFydCBhdCAxMiBvJ2Nsb2NrIGFuZCBnbyBjbG9ja3dpc2VcblxuICAgIHZhciBhbmdsZURlbHRhID0gMiAqIE1hdGguUEkgKiBwZXJjZW50O1xuICAgIHZhciBhbmdsZUVuZCA9IGFuZ2xlU3RhcnQgKyBhbmdsZURlbHRhOyAvLyBpZ25vcmUgaWZcbiAgICAvLyAtIHplcm8gc2l6ZVxuICAgIC8vIC0gd2UncmUgYWxyZWFkeSBiZXlvbmQgdGhlIGZ1bGwgY2lyY2xlXG4gICAgLy8gLSBhZGRpbmcgdGhlIGN1cnJlbnQgc2xpY2Ugd291bGQgZ28gYmV5b25kIHRoZSBmdWxsIGNpcmNsZVxuXG4gICAgaWYgKHNpemUgPT09IDAgfHwgbGFzdFBlcmNlbnQgPj0gMSB8fCBsYXN0UGVyY2VudCArIHBlcmNlbnQgPiAxKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQubW92ZVRvKHgsIHkpO1xuICAgIGNvbnRleHQuYXJjKHgsIHksIHJhZGl1cywgYW5nbGVTdGFydCwgYW5nbGVFbmQpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgICBjb250ZXh0LmZpbGwoKTtcbiAgICBsYXN0UGVyY2VudCArPSBwZXJjZW50O1xuICB9XG59O1xuXG52YXIgQ1JwJDYgPSB7fTtcbnZhciBtb3Rpb25CbHVyRGVsYXkgPSAxMDA7IC8vIHZhciBpc0ZpcmVmb3ggPSB0eXBlb2YgSW5zdGFsbFRyaWdnZXIgIT09ICd1bmRlZmluZWQnO1xuXG5DUnAkNi5nZXRQaXhlbFJhdGlvID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY29udGV4dCA9IHRoaXMuZGF0YS5jb250ZXh0c1swXTtcblxuICBpZiAodGhpcy5mb3JjZWRQaXhlbFJhdGlvICE9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JjZWRQaXhlbFJhdGlvO1xuICB9XG5cbiAgdmFyIGJhY2tpbmdTdG9yZSA9IGNvbnRleHQuYmFja2luZ1N0b3JlUGl4ZWxSYXRpbyB8fCBjb250ZXh0LndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHwgY29udGV4dC5tb3pCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IGNvbnRleHQubXNCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IGNvbnRleHQub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHwgY29udGV4dC5iYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiAod2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMSkgLyBiYWNraW5nU3RvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbn07XG5cbkNScCQ2LnBhaW50Q2FjaGUgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICB2YXIgY2FjaGVzID0gdGhpcy5wYWludENhY2hlcyA9IHRoaXMucGFpbnRDYWNoZXMgfHwgW107XG4gIHZhciBuZWVkVG9DcmVhdGVDYWNoZSA9IHRydWU7XG4gIHZhciBjYWNoZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNhY2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGNhY2hlID0gY2FjaGVzW2ldO1xuXG4gICAgaWYgKGNhY2hlLmNvbnRleHQgPT09IGNvbnRleHQpIHtcbiAgICAgIG5lZWRUb0NyZWF0ZUNhY2hlID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAobmVlZFRvQ3JlYXRlQ2FjaGUpIHtcbiAgICBjYWNoZSA9IHtcbiAgICAgIGNvbnRleHQ6IGNvbnRleHRcbiAgICB9O1xuICAgIGNhY2hlcy5wdXNoKGNhY2hlKTtcbiAgfVxuXG4gIHJldHVybiBjYWNoZTtcbn07XG5cbkNScCQ2LmNyZWF0ZUdyYWRpZW50U3R5bGVGb3IgPSBmdW5jdGlvbiAoY29udGV4dCwgc2hhcGVTdHlsZU5hbWUsIGVsZSwgZmlsbCwgb3BhY2l0eSkge1xuICB2YXIgZ3JhZGllbnRTdHlsZTtcbiAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuICB2YXIgY29sb3JzID0gZWxlLnBzdHlsZShzaGFwZVN0eWxlTmFtZSArICctZ3JhZGllbnQtc3RvcC1jb2xvcnMnKS52YWx1ZSxcbiAgICAgIHBvc2l0aW9ucyA9IGVsZS5wc3R5bGUoc2hhcGVTdHlsZU5hbWUgKyAnLWdyYWRpZW50LXN0b3AtcG9zaXRpb25zJykucGZWYWx1ZTtcblxuICBpZiAoZmlsbCA9PT0gJ3JhZGlhbC1ncmFkaWVudCcpIHtcbiAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICB2YXIgc3RhcnQgPSBlbGUuc291cmNlRW5kcG9pbnQoKSxcbiAgICAgICAgICBlbmQgPSBlbGUudGFyZ2V0RW5kcG9pbnQoKSxcbiAgICAgICAgICBtaWQgPSBlbGUubWlkcG9pbnQoKTtcbiAgICAgIHZhciBkMSA9IGRpc3Qoc3RhcnQsIG1pZCk7XG4gICAgICB2YXIgZDIgPSBkaXN0KGVuZCwgbWlkKTtcbiAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZVJhZGlhbEdyYWRpZW50KG1pZC54LCBtaWQueSwgMCwgbWlkLngsIG1pZC55LCBNYXRoLm1heChkMSwgZDIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBvcyA9IHVzZVBhdGhzID8ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwXG4gICAgICB9IDogZWxlLnBvc2l0aW9uKCksXG4gICAgICAgICAgd2lkdGggPSBlbGUucGFkZGVkV2lkdGgoKSxcbiAgICAgICAgICBoZWlnaHQgPSBlbGUucGFkZGVkSGVpZ2h0KCk7XG4gICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChwb3MueCwgcG9zLnksIDAsIHBvcy54LCBwb3MueSwgTWF0aC5tYXgod2lkdGgsIGhlaWdodCkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICB2YXIgX3N0YXJ0ID0gZWxlLnNvdXJjZUVuZHBvaW50KCksXG4gICAgICAgICAgX2VuZCA9IGVsZS50YXJnZXRFbmRwb2ludCgpO1xuXG4gICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfc3RhcnQueCwgX3N0YXJ0LnksIF9lbmQueCwgX2VuZC55KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9wb3MgPSB1c2VQYXRocyA/IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSA6IGVsZS5wb3NpdGlvbigpLFxuICAgICAgICAgIF93aWR0aCA9IGVsZS5wYWRkZWRXaWR0aCgpLFxuICAgICAgICAgIF9oZWlnaHQgPSBlbGUucGFkZGVkSGVpZ2h0KCksXG4gICAgICAgICAgaGFsZldpZHRoID0gX3dpZHRoIC8gMixcbiAgICAgICAgICBoYWxmSGVpZ2h0ID0gX2hlaWdodCAvIDI7XG5cbiAgICAgIHZhciBkaXJlY3Rpb24gPSBlbGUucHN0eWxlKCdiYWNrZ3JvdW5kLWdyYWRpZW50LWRpcmVjdGlvbicpLnZhbHVlO1xuXG4gICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICBjYXNlICd0by1ib3R0b20nOlxuICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCwgX3Bvcy55IC0gaGFsZkhlaWdodCwgX3Bvcy54LCBfcG9zLnkgKyBoYWxmSGVpZ2h0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0by10b3AnOlxuICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCwgX3Bvcy55ICsgaGFsZkhlaWdodCwgX3Bvcy54LCBfcG9zLnkgLSBoYWxmSGVpZ2h0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0by1sZWZ0JzpcbiAgICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSwgX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLXJpZ2h0JzpcbiAgICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfcG9zLnggLSBoYWxmV2lkdGgsIF9wb3MueSwgX3Bvcy54ICsgaGFsZldpZHRoLCBfcG9zLnkpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLWJvdHRvbS1yaWdodCc6XG4gICAgICAgIGNhc2UgJ3RvLXJpZ2h0LWJvdHRvbSc6XG4gICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkgLSBoYWxmSGVpZ2h0LCBfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSArIGhhbGZIZWlnaHQpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLXRvcC1yaWdodCc6XG4gICAgICAgIGNhc2UgJ3RvLXJpZ2h0LXRvcCc6XG4gICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkgKyBoYWxmSGVpZ2h0LCBfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSAtIGhhbGZIZWlnaHQpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvLWJvdHRvbS1sZWZ0JzpcbiAgICAgICAgY2FzZSAndG8tbGVmdC1ib3R0b20nOlxuICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCArIGhhbGZXaWR0aCwgX3Bvcy55IC0gaGFsZkhlaWdodCwgX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkgKyBoYWxmSGVpZ2h0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0by10b3AtbGVmdCc6XG4gICAgICAgIGNhc2UgJ3RvLWxlZnQtdG9wJzpcbiAgICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSArIGhhbGZIZWlnaHQsIF9wb3MueCAtIGhhbGZXaWR0aCwgX3Bvcy55IC0gaGFsZkhlaWdodCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFncmFkaWVudFN0eWxlKSByZXR1cm4gbnVsbDsgLy8gaW52YWxpZCBncmFkaWVudCBzdHlsZVxuXG4gIHZhciBoYXNQb3NpdGlvbnMgPSBwb3NpdGlvbnMubGVuZ3RoID09PSBjb2xvcnMubGVuZ3RoO1xuICB2YXIgbGVuZ3RoID0gY29sb3JzLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgZ3JhZGllbnRTdHlsZS5hZGRDb2xvclN0b3AoaGFzUG9zaXRpb25zID8gcG9zaXRpb25zW2ldIDogaSAvIChsZW5ndGggLSAxKSwgJ3JnYmEoJyArIGNvbG9yc1tpXVswXSArICcsJyArIGNvbG9yc1tpXVsxXSArICcsJyArIGNvbG9yc1tpXVsyXSArICcsJyArIG9wYWNpdHkgKyAnKScpO1xuICB9XG5cbiAgcmV0dXJuIGdyYWRpZW50U3R5bGU7XG59O1xuXG5DUnAkNi5ncmFkaWVudEZpbGxTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGZpbGwsIG9wYWNpdHkpIHtcbiAgdmFyIGdyYWRpZW50U3R5bGUgPSB0aGlzLmNyZWF0ZUdyYWRpZW50U3R5bGVGb3IoY29udGV4dCwgJ2JhY2tncm91bmQnLCBlbGUsIGZpbGwsIG9wYWNpdHkpO1xuICBpZiAoIWdyYWRpZW50U3R5bGUpIHJldHVybiBudWxsOyAvLyBlcnJvclxuXG4gIGNvbnRleHQuZmlsbFN0eWxlID0gZ3JhZGllbnRTdHlsZTtcbn07XG5cbkNScCQ2LmNvbG9yRmlsbFN0eWxlID0gZnVuY3Rpb24gKGNvbnRleHQsIHIsIGcsIGIsIGEpIHtcbiAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgYSArICcpJzsgLy8gdHVybiBvZmYgZm9yIG5vdywgc2VlbXMgY29udGV4dCBkb2VzIGl0cyBvd24gY2FjaGluZ1xuICAvLyB2YXIgY2FjaGUgPSB0aGlzLnBhaW50Q2FjaGUoY29udGV4dCk7XG4gIC8vIHZhciBmaWxsU3R5bGUgPSAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgYSArICcpJztcbiAgLy8gaWYoIGNhY2hlLmZpbGxTdHlsZSAhPT0gZmlsbFN0eWxlICl7XG4gIC8vICAgY29udGV4dC5maWxsU3R5bGUgPSBjYWNoZS5maWxsU3R5bGUgPSBmaWxsU3R5bGU7XG4gIC8vIH1cbn07XG5cbkNScCQ2LmVsZUZpbGxTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIG9wYWNpdHkpIHtcbiAgdmFyIGJhY2tncm91bmRGaWxsID0gZWxlLnBzdHlsZSgnYmFja2dyb3VuZC1maWxsJykudmFsdWU7XG5cbiAgaWYgKGJhY2tncm91bmRGaWxsID09PSAnbGluZWFyLWdyYWRpZW50JyB8fCBiYWNrZ3JvdW5kRmlsbCA9PT0gJ3JhZGlhbC1ncmFkaWVudCcpIHtcbiAgICB0aGlzLmdyYWRpZW50RmlsbFN0eWxlKGNvbnRleHQsIGVsZSwgYmFja2dyb3VuZEZpbGwsIG9wYWNpdHkpO1xuICB9IGVsc2Uge1xuICAgIHZhciBiYWNrZ3JvdW5kQ29sb3IgPSBlbGUucHN0eWxlKCdiYWNrZ3JvdW5kLWNvbG9yJykudmFsdWU7XG4gICAgdGhpcy5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBiYWNrZ3JvdW5kQ29sb3JbMF0sIGJhY2tncm91bmRDb2xvclsxXSwgYmFja2dyb3VuZENvbG9yWzJdLCBvcGFjaXR5KTtcbiAgfVxufTtcblxuQ1JwJDYuZ3JhZGllbnRTdHJva2VTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGZpbGwsIG9wYWNpdHkpIHtcbiAgdmFyIGdyYWRpZW50U3R5bGUgPSB0aGlzLmNyZWF0ZUdyYWRpZW50U3R5bGVGb3IoY29udGV4dCwgJ2xpbmUnLCBlbGUsIGZpbGwsIG9wYWNpdHkpO1xuICBpZiAoIWdyYWRpZW50U3R5bGUpIHJldHVybiBudWxsOyAvLyBlcnJvclxuXG4gIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBncmFkaWVudFN0eWxlO1xufTtcblxuQ1JwJDYuY29sb3JTdHJva2VTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCByLCBnLCBiLCBhKSB7XG4gIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgYSArICcpJzsgLy8gdHVybiBvZmYgZm9yIG5vdywgc2VlbXMgY29udGV4dCBkb2VzIGl0cyBvd24gY2FjaGluZ1xuICAvLyB2YXIgY2FjaGUgPSB0aGlzLnBhaW50Q2FjaGUoY29udGV4dCk7XG4gIC8vIHZhciBzdHJva2VTdHlsZSA9ICdyZ2JhKCcgKyByICsgJywnICsgZyArICcsJyArIGIgKyAnLCcgKyBhICsgJyknO1xuICAvLyBpZiggY2FjaGUuc3Ryb2tlU3R5bGUgIT09IHN0cm9rZVN0eWxlICl7XG4gIC8vICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGNhY2hlLnN0cm9rZVN0eWxlID0gc3Ryb2tlU3R5bGU7XG4gIC8vIH1cbn07XG5cbkNScCQ2LmVsZVN0cm9rZVN0eWxlID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgb3BhY2l0eSkge1xuICB2YXIgbGluZUZpbGwgPSBlbGUucHN0eWxlKCdsaW5lLWZpbGwnKS52YWx1ZTtcblxuICBpZiAobGluZUZpbGwgPT09ICdsaW5lYXItZ3JhZGllbnQnIHx8IGxpbmVGaWxsID09PSAncmFkaWFsLWdyYWRpZW50Jykge1xuICAgIHRoaXMuZ3JhZGllbnRTdHJva2VTdHlsZShjb250ZXh0LCBlbGUsIGxpbmVGaWxsLCBvcGFjaXR5KTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbGluZUNvbG9yID0gZWxlLnBzdHlsZSgnbGluZS1jb2xvcicpLnZhbHVlO1xuICAgIHRoaXMuY29sb3JTdHJva2VTdHlsZShjb250ZXh0LCBsaW5lQ29sb3JbMF0sIGxpbmVDb2xvclsxXSwgbGluZUNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgfVxufTsgLy8gUmVzaXplIGNhbnZhc1xuXG5cbkNScCQ2Lm1hdGNoQ2FudmFzU2l6ZSA9IGZ1bmN0aW9uIChjb250YWluZXIpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgZGF0YSA9IHIuZGF0YTtcbiAgdmFyIGJiID0gci5maW5kQ29udGFpbmVyQ2xpZW50Q29vcmRzKCk7XG4gIHZhciB3aWR0aCA9IGJiWzJdO1xuICB2YXIgaGVpZ2h0ID0gYmJbM107XG4gIHZhciBwaXhlbFJhdGlvID0gci5nZXRQaXhlbFJhdGlvKCk7XG4gIHZhciBtYlB4UmF0aW8gPSByLm1vdGlvbkJsdXJQeFJhdGlvO1xuXG4gIGlmIChjb250YWluZXIgPT09IHIuZGF0YS5idWZmZXJDYW52YXNlc1tyLk1PVElPTkJMVVJfQlVGRkVSX05PREVdIHx8IGNvbnRhaW5lciA9PT0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW3IuTU9USU9OQkxVUl9CVUZGRVJfRFJBR10pIHtcbiAgICBwaXhlbFJhdGlvID0gbWJQeFJhdGlvO1xuICB9XG5cbiAgdmFyIGNhbnZhc1dpZHRoID0gd2lkdGggKiBwaXhlbFJhdGlvO1xuICB2YXIgY2FudmFzSGVpZ2h0ID0gaGVpZ2h0ICogcGl4ZWxSYXRpbztcbiAgdmFyIGNhbnZhcztcblxuICBpZiAoY2FudmFzV2lkdGggPT09IHIuY2FudmFzV2lkdGggJiYgY2FudmFzSGVpZ2h0ID09PSByLmNhbnZhc0hlaWdodCkge1xuICAgIHJldHVybjsgLy8gc2F2ZSBjeWNsZXMgaWYgc2FtZVxuICB9XG5cbiAgci5mb250Q2FjaGVzID0gbnVsbDsgLy8gcmVzaXppbmcgcmVzZXRzIHRoZSBzdHlsZVxuXG4gIHZhciBjYW52YXNDb250YWluZXIgPSBkYXRhLmNhbnZhc0NvbnRhaW5lcjtcbiAgY2FudmFzQ29udGFpbmVyLnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICBjYW52YXNDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHIuQ0FOVkFTX0xBWUVSUzsgaSsrKSB7XG4gICAgY2FudmFzID0gZGF0YS5jYW52YXNlc1tpXTtcbiAgICBjYW52YXMud2lkdGggPSBjYW52YXNXaWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gY2FudmFzSGVpZ2h0O1xuICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcbiAgICBjYW52YXMuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgci5CVUZGRVJfQ09VTlQ7IGkrKykge1xuICAgIGNhbnZhcyA9IGRhdGEuYnVmZmVyQ2FudmFzZXNbaV07XG4gICAgY2FudmFzLndpZHRoID0gY2FudmFzV2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodDtcbiAgICBjYW52YXMuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgY2FudmFzLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7XG4gIH1cblxuICByLnRleHR1cmVNdWx0ID0gMTtcblxuICBpZiAocGl4ZWxSYXRpbyA8PSAxKSB7XG4gICAgY2FudmFzID0gZGF0YS5idWZmZXJDYW52YXNlc1tyLlRFWFRVUkVfQlVGRkVSXTtcbiAgICByLnRleHR1cmVNdWx0ID0gMjtcbiAgICBjYW52YXMud2lkdGggPSBjYW52YXNXaWR0aCAqIHIudGV4dHVyZU11bHQ7XG4gICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodCAqIHIudGV4dHVyZU11bHQ7XG4gIH1cblxuICByLmNhbnZhc1dpZHRoID0gY2FudmFzV2lkdGg7XG4gIHIuY2FudmFzSGVpZ2h0ID0gY2FudmFzSGVpZ2h0O1xufTtcblxuQ1JwJDYucmVuZGVyVG8gPSBmdW5jdGlvbiAoY3h0LCB6b29tLCBwYW4sIHB4UmF0aW8pIHtcbiAgdGhpcy5yZW5kZXIoe1xuICAgIGZvcmNlZENvbnRleHQ6IGN4dCxcbiAgICBmb3JjZWRab29tOiB6b29tLFxuICAgIGZvcmNlZFBhbjogcGFuLFxuICAgIGRyYXdBbGxMYXllcnM6IHRydWUsXG4gICAgZm9yY2VkUHhSYXRpbzogcHhSYXRpb1xuICB9KTtcbn07XG5cbkNScCQ2LnJlbmRlciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHN0YXRpY0VtcHR5T2JqZWN0KCk7XG4gIHZhciBmb3JjZWRDb250ZXh0ID0gb3B0aW9ucy5mb3JjZWRDb250ZXh0O1xuICB2YXIgZHJhd0FsbExheWVycyA9IG9wdGlvbnMuZHJhd0FsbExheWVycztcbiAgdmFyIGRyYXdPbmx5Tm9kZUxheWVyID0gb3B0aW9ucy5kcmF3T25seU5vZGVMYXllcjtcbiAgdmFyIGZvcmNlZFpvb20gPSBvcHRpb25zLmZvcmNlZFpvb207XG4gIHZhciBmb3JjZWRQYW4gPSBvcHRpb25zLmZvcmNlZFBhbjtcbiAgdmFyIHIgPSB0aGlzO1xuICB2YXIgcGl4ZWxSYXRpbyA9IG9wdGlvbnMuZm9yY2VkUHhSYXRpbyA9PT0gdW5kZWZpbmVkID8gdGhpcy5nZXRQaXhlbFJhdGlvKCkgOiBvcHRpb25zLmZvcmNlZFB4UmF0aW87XG4gIHZhciBjeSA9IHIuY3k7XG4gIHZhciBkYXRhID0gci5kYXRhO1xuICB2YXIgbmVlZERyYXcgPSBkYXRhLmNhbnZhc05lZWRzUmVkcmF3O1xuICB2YXIgdGV4dHVyZURyYXcgPSByLnRleHR1cmVPblZpZXdwb3J0ICYmICFmb3JjZWRDb250ZXh0ICYmIChyLnBpbmNoaW5nIHx8IHIuaG92ZXJEYXRhLmRyYWdnaW5nIHx8IHIuc3dpcGVQYW5uaW5nIHx8IHIuZGF0YS53aGVlbFpvb21pbmcpO1xuICB2YXIgbW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1ciAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5tb3Rpb25CbHVyIDogci5tb3Rpb25CbHVyO1xuICB2YXIgbWJQeFJhdGlvID0gci5tb3Rpb25CbHVyUHhSYXRpbztcbiAgdmFyIGhhc0NvbXBvdW5kTm9kZXMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gIHZhciBpbk5vZGVEcmFnR2VzdHVyZSA9IHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcztcbiAgdmFyIGluQm94U2VsZWN0aW9uID0gci5ob3ZlckRhdGEuc2VsZWN0aW5nIHx8IHIudG91Y2hEYXRhLnNlbGVjdGluZyA/IHRydWUgOiBmYWxzZTtcbiAgbW90aW9uQmx1ciA9IG1vdGlvbkJsdXIgJiYgIWZvcmNlZENvbnRleHQgJiYgci5tb3Rpb25CbHVyRW5hYmxlZCAmJiAhaW5Cb3hTZWxlY3Rpb247XG4gIHZhciBtb3Rpb25CbHVyRmFkZUVmZmVjdCA9IG1vdGlvbkJsdXI7XG5cbiAgaWYgKCFmb3JjZWRDb250ZXh0KSB7XG4gICAgaWYgKHIucHJldlB4UmF0aW8gIT09IHBpeGVsUmF0aW8pIHtcbiAgICAgIHIuaW52YWxpZGF0ZUNvbnRhaW5lckNsaWVudENvb3Jkc0NhY2hlKCk7XG4gICAgICByLm1hdGNoQ2FudmFzU2l6ZShyLmNvbnRhaW5lcik7XG4gICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgIH1cblxuICAgIHIucHJldlB4UmF0aW8gPSBwaXhlbFJhdGlvO1xuICB9XG5cbiAgaWYgKCFmb3JjZWRDb250ZXh0ICYmIHIubW90aW9uQmx1clRpbWVvdXQpIHtcbiAgICBjbGVhclRpbWVvdXQoci5tb3Rpb25CbHVyVGltZW91dCk7XG4gIH1cblxuICBpZiAobW90aW9uQmx1cikge1xuICAgIGlmIChyLm1iRnJhbWVzID09IG51bGwpIHtcbiAgICAgIHIubWJGcmFtZXMgPSAwO1xuICAgIH1cblxuICAgIHIubWJGcmFtZXMrKztcblxuICAgIGlmIChyLm1iRnJhbWVzIDwgMykge1xuICAgICAgLy8gbmVlZCBzZXZlcmFsIGZyYW1lcyBiZWZvcmUgZXZlbiBoaWdoIHF1YWxpdHkgbW90aW9uYmx1clxuICAgICAgbW90aW9uQmx1ckZhZGVFZmZlY3QgPSBmYWxzZTtcbiAgICB9IC8vIGdvIHRvIGxvd2VyIHF1YWxpdHkgYmx1cnJ5IGZyYW1lcyB3aGVuIHNldmVyYWwgbS9iIGZyYW1lcyBoYXZlIGJlZW4gcmVuZGVyZWQgKGF2b2lkcyBmbGFzaGluZylcblxuXG4gICAgaWYgKHIubWJGcmFtZXMgPiByLm1pbk1iTG93UXVhbEZyYW1lcykge1xuICAgICAgLy9yLmZ1bGxRdWFsaXR5TWIgPSBmYWxzZTtcbiAgICAgIHIubW90aW9uQmx1clB4UmF0aW8gPSByLm1iUHhSQmx1cnJ5O1xuICAgIH1cbiAgfVxuXG4gIGlmIChyLmNsZWFyaW5nTW90aW9uQmx1cikge1xuICAgIHIubW90aW9uQmx1clB4UmF0aW8gPSAxO1xuICB9IC8vIGIvYyBkcmF3VG9Db250ZXh0KCkgbWF5IGJlIGFzeW5jIHcuci50LiByZWRyYXcoKSwga2VlcCB0cmFjayBvZiBsYXN0IHRleHR1cmUgZnJhbWVcbiAgLy8gYmVjYXVzZSBhIHJvZ3VlIGFzeW5jIHRleHR1cmUgZnJhbWUgd291bGQgY2xlYXIgbmVlZERyYXdcblxuXG4gIGlmIChyLnRleHR1cmVEcmF3TGFzdEZyYW1lICYmICF0ZXh0dXJlRHJhdykge1xuICAgIG5lZWREcmF3W3IuTk9ERV0gPSB0cnVlO1xuICAgIG5lZWREcmF3W3IuU0VMRUNUX0JPWF0gPSB0cnVlO1xuICB9XG5cbiAgdmFyIHN0eWxlID0gY3kuc3R5bGUoKTtcbiAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gIHZhciBlZmZlY3RpdmVab29tID0gZm9yY2VkWm9vbSAhPT0gdW5kZWZpbmVkID8gZm9yY2VkWm9vbSA6IHpvb207XG4gIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgdmFyIGVmZmVjdGl2ZVBhbiA9IHtcbiAgICB4OiBwYW4ueCxcbiAgICB5OiBwYW4ueVxuICB9O1xuICB2YXIgdnAgPSB7XG4gICAgem9vbTogem9vbSxcbiAgICBwYW46IHtcbiAgICAgIHg6IHBhbi54LFxuICAgICAgeTogcGFuLnlcbiAgICB9XG4gIH07XG4gIHZhciBwcmV2VnAgPSByLnByZXZWaWV3cG9ydDtcbiAgdmFyIHZpZXdwb3J0SXNEaWZmID0gcHJldlZwID09PSB1bmRlZmluZWQgfHwgdnAuem9vbSAhPT0gcHJldlZwLnpvb20gfHwgdnAucGFuLnggIT09IHByZXZWcC5wYW4ueCB8fCB2cC5wYW4ueSAhPT0gcHJldlZwLnBhbi55OyAvLyB3ZSB3YW50IHRoZSBsb3cgcXVhbGl0eSBtb3Rpb25ibHVyIG9ubHkgd2hlbiB0aGUgdmlld3BvcnQgaXMgYmVpbmcgbWFuaXB1bGF0ZWQgZXRjICh3aGVyZSBpdCdzIG5vdCBub3RpY2VkKVxuXG4gIGlmICghdmlld3BvcnRJc0RpZmYgJiYgIShpbk5vZGVEcmFnR2VzdHVyZSAmJiAhaGFzQ29tcG91bmROb2RlcykpIHtcbiAgICByLm1vdGlvbkJsdXJQeFJhdGlvID0gMTtcbiAgfVxuXG4gIGlmIChmb3JjZWRQYW4pIHtcbiAgICBlZmZlY3RpdmVQYW4gPSBmb3JjZWRQYW47XG4gIH0gLy8gYXBwbHkgcGl4ZWwgcmF0aW9cblxuXG4gIGVmZmVjdGl2ZVpvb20gKj0gcGl4ZWxSYXRpbztcbiAgZWZmZWN0aXZlUGFuLnggKj0gcGl4ZWxSYXRpbztcbiAgZWZmZWN0aXZlUGFuLnkgKj0gcGl4ZWxSYXRpbztcbiAgdmFyIGVsZXMgPSByLmdldENhY2hlZFpTb3J0ZWRFbGVzKCk7XG5cbiAgZnVuY3Rpb24gbWJjbGVhcihjb250ZXh0LCB4LCB5LCB3LCBoKSB7XG4gICAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCAyNTUsIDI1NSwgMjU1LCByLm1vdGlvbkJsdXJUcmFuc3BhcmVuY3kpO1xuICAgIGNvbnRleHQuZmlsbFJlY3QoeCwgeSwgdywgaCk7XG4gICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBnY287XG4gIH1cblxuICBmdW5jdGlvbiBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQsIGNsZWFyKSB7XG4gICAgdmFyIGVQYW4sIGVab29tLCB3LCBoO1xuXG4gICAgaWYgKCFyLmNsZWFyaW5nTW90aW9uQmx1ciAmJiAoY29udGV4dCA9PT0gZGF0YS5idWZmZXJDb250ZXh0c1tyLk1PVElPTkJMVVJfQlVGRkVSX05PREVdIHx8IGNvbnRleHQgPT09IGRhdGEuYnVmZmVyQ29udGV4dHNbci5NT1RJT05CTFVSX0JVRkZFUl9EUkFHXSkpIHtcbiAgICAgIGVQYW4gPSB7XG4gICAgICAgIHg6IHBhbi54ICogbWJQeFJhdGlvLFxuICAgICAgICB5OiBwYW4ueSAqIG1iUHhSYXRpb1xuICAgICAgfTtcbiAgICAgIGVab29tID0gem9vbSAqIG1iUHhSYXRpbztcbiAgICAgIHcgPSByLmNhbnZhc1dpZHRoICogbWJQeFJhdGlvO1xuICAgICAgaCA9IHIuY2FudmFzSGVpZ2h0ICogbWJQeFJhdGlvO1xuICAgIH0gZWxzZSB7XG4gICAgICBlUGFuID0gZWZmZWN0aXZlUGFuO1xuICAgICAgZVpvb20gPSBlZmZlY3RpdmVab29tO1xuICAgICAgdyA9IHIuY2FudmFzV2lkdGg7XG4gICAgICBoID0gci5jYW52YXNIZWlnaHQ7XG4gICAgfVxuXG4gICAgY29udGV4dC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG5cbiAgICBpZiAoY2xlYXIgPT09ICdtb3Rpb25CbHVyJykge1xuICAgICAgbWJjbGVhcihjb250ZXh0LCAwLCAwLCB3LCBoKTtcbiAgICB9IGVsc2UgaWYgKCFmb3JjZWRDb250ZXh0ICYmIChjbGVhciA9PT0gdW5kZWZpbmVkIHx8IGNsZWFyKSkge1xuICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdywgaCk7XG4gICAgfVxuXG4gICAgaWYgKCFkcmF3QWxsTGF5ZXJzKSB7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShlUGFuLngsIGVQYW4ueSk7XG4gICAgICBjb250ZXh0LnNjYWxlKGVab29tLCBlWm9vbSk7XG4gICAgfVxuXG4gICAgaWYgKGZvcmNlZFBhbikge1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoZm9yY2VkUGFuLngsIGZvcmNlZFBhbi55KTtcbiAgICB9XG5cbiAgICBpZiAoZm9yY2VkWm9vbSkge1xuICAgICAgY29udGV4dC5zY2FsZShmb3JjZWRab29tLCBmb3JjZWRab29tKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRleHR1cmVEcmF3KSB7XG4gICAgci50ZXh0dXJlRHJhd0xhc3RGcmFtZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHRleHR1cmVEcmF3KSB7XG4gICAgci50ZXh0dXJlRHJhd0xhc3RGcmFtZSA9IHRydWU7XG5cbiAgICBpZiAoIXIudGV4dHVyZUNhY2hlKSB7XG4gICAgICByLnRleHR1cmVDYWNoZSA9IHt9O1xuICAgICAgci50ZXh0dXJlQ2FjaGUuYmIgPSBjeS5tdXRhYmxlRWxlbWVudHMoKS5ib3VuZGluZ0JveCgpO1xuICAgICAgci50ZXh0dXJlQ2FjaGUudGV4dHVyZSA9IHIuZGF0YS5idWZmZXJDYW52YXNlc1tyLlRFWFRVUkVfQlVGRkVSXTtcbiAgICAgIHZhciBjeHQgPSByLmRhdGEuYnVmZmVyQ29udGV4dHNbci5URVhUVVJFX0JVRkZFUl07XG4gICAgICBjeHQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuICAgICAgY3h0LmNsZWFyUmVjdCgwLCAwLCByLmNhbnZhc1dpZHRoICogci50ZXh0dXJlTXVsdCwgci5jYW52YXNIZWlnaHQgKiByLnRleHR1cmVNdWx0KTtcbiAgICAgIHIucmVuZGVyKHtcbiAgICAgICAgZm9yY2VkQ29udGV4dDogY3h0LFxuICAgICAgICBkcmF3T25seU5vZGVMYXllcjogdHJ1ZSxcbiAgICAgICAgZm9yY2VkUHhSYXRpbzogcGl4ZWxSYXRpbyAqIHIudGV4dHVyZU11bHRcbiAgICAgIH0pO1xuICAgICAgdmFyIHZwID0gci50ZXh0dXJlQ2FjaGUudmlld3BvcnQgPSB7XG4gICAgICAgIHpvb206IGN5Lnpvb20oKSxcbiAgICAgICAgcGFuOiBjeS5wYW4oKSxcbiAgICAgICAgd2lkdGg6IHIuY2FudmFzV2lkdGgsXG4gICAgICAgIGhlaWdodDogci5jYW52YXNIZWlnaHRcbiAgICAgIH07XG4gICAgICB2cC5tcGFuID0ge1xuICAgICAgICB4OiAoMCAtIHZwLnBhbi54KSAvIHZwLnpvb20sXG4gICAgICAgIHk6ICgwIC0gdnAucGFuLnkpIC8gdnAuem9vbVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBuZWVkRHJhd1tyLkRSQUddID0gZmFsc2U7XG4gICAgbmVlZERyYXdbci5OT0RFXSA9IGZhbHNlO1xuICAgIHZhciBjb250ZXh0ID0gZGF0YS5jb250ZXh0c1tyLk5PREVdO1xuICAgIHZhciB0ZXh0dXJlID0gci50ZXh0dXJlQ2FjaGUudGV4dHVyZTtcbiAgICB2YXIgdnAgPSByLnRleHR1cmVDYWNoZS52aWV3cG9ydDtcbiAgICBjb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcblxuICAgIGlmIChtb3Rpb25CbHVyKSB7XG4gICAgICBtYmNsZWFyKGNvbnRleHQsIDAsIDAsIHZwLndpZHRoLCB2cC5oZWlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB2cC53aWR0aCwgdnAuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICB2YXIgb3V0c2lkZUJnQ29sb3IgPSBzdHlsZS5jb3JlKCdvdXRzaWRlLXRleHR1cmUtYmctY29sb3InKS52YWx1ZTtcbiAgICB2YXIgb3V0c2lkZUJnT3BhY2l0eSA9IHN0eWxlLmNvcmUoJ291dHNpZGUtdGV4dHVyZS1iZy1vcGFjaXR5JykudmFsdWU7XG4gICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBvdXRzaWRlQmdDb2xvclswXSwgb3V0c2lkZUJnQ29sb3JbMV0sIG91dHNpZGVCZ0NvbG9yWzJdLCBvdXRzaWRlQmdPcGFjaXR5KTtcbiAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHZwLndpZHRoLCB2cC5oZWlnaHQpO1xuICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgIHNldENvbnRleHRUcmFuc2Zvcm0oY29udGV4dCwgZmFsc2UpO1xuICAgIGNvbnRleHQuY2xlYXJSZWN0KHZwLm1wYW4ueCwgdnAubXBhbi55LCB2cC53aWR0aCAvIHZwLnpvb20gLyBwaXhlbFJhdGlvLCB2cC5oZWlnaHQgLyB2cC56b29tIC8gcGl4ZWxSYXRpbyk7XG4gICAgY29udGV4dC5kcmF3SW1hZ2UodGV4dHVyZSwgdnAubXBhbi54LCB2cC5tcGFuLnksIHZwLndpZHRoIC8gdnAuem9vbSAvIHBpeGVsUmF0aW8sIHZwLmhlaWdodCAvIHZwLnpvb20gLyBwaXhlbFJhdGlvKTtcbiAgfSBlbHNlIGlmIChyLnRleHR1cmVPblZpZXdwb3J0ICYmICFmb3JjZWRDb250ZXh0KSB7XG4gICAgLy8gY2xlYXIgdGhlIGNhY2hlIHNpbmNlIHdlIGRvbid0IG5lZWQgaXRcbiAgICByLnRleHR1cmVDYWNoZSA9IG51bGw7XG4gIH1cblxuICB2YXIgZXh0ZW50ID0gY3kuZXh0ZW50KCk7XG4gIHZhciB2cE1hbmlwID0gci5waW5jaGluZyB8fCByLmhvdmVyRGF0YS5kcmFnZ2luZyB8fCByLnN3aXBlUGFubmluZyB8fCByLmRhdGEud2hlZWxab29taW5nIHx8IHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyB8fCByLmN5LmFuaW1hdGVkKCk7XG4gIHZhciBoaWRlRWRnZXMgPSByLmhpZGVFZGdlc09uVmlld3BvcnQgJiYgdnBNYW5pcDtcbiAgdmFyIG5lZWRNYkNsZWFyID0gW107XG4gIG5lZWRNYkNsZWFyW3IuTk9ERV0gPSAhbmVlZERyYXdbci5OT0RFXSAmJiBtb3Rpb25CbHVyICYmICFyLmNsZWFyZWRGb3JNb3Rpb25CbHVyW3IuTk9ERV0gfHwgci5jbGVhcmluZ01vdGlvbkJsdXI7XG5cbiAgaWYgKG5lZWRNYkNsZWFyW3IuTk9ERV0pIHtcbiAgICByLmNsZWFyZWRGb3JNb3Rpb25CbHVyW3IuTk9ERV0gPSB0cnVlO1xuICB9XG5cbiAgbmVlZE1iQ2xlYXJbci5EUkFHXSA9ICFuZWVkRHJhd1tyLkRSQUddICYmIG1vdGlvbkJsdXIgJiYgIXIuY2xlYXJlZEZvck1vdGlvbkJsdXJbci5EUkFHXSB8fCByLmNsZWFyaW5nTW90aW9uQmx1cjtcblxuICBpZiAobmVlZE1iQ2xlYXJbci5EUkFHXSkge1xuICAgIHIuY2xlYXJlZEZvck1vdGlvbkJsdXJbci5EUkFHXSA9IHRydWU7XG4gIH1cblxuICBpZiAobmVlZERyYXdbci5OT0RFXSB8fCBkcmF3QWxsTGF5ZXJzIHx8IGRyYXdPbmx5Tm9kZUxheWVyIHx8IG5lZWRNYkNsZWFyW3IuTk9ERV0pIHtcbiAgICB2YXIgdXNlQnVmZmVyID0gbW90aW9uQmx1ciAmJiAhbmVlZE1iQ2xlYXJbci5OT0RFXSAmJiBtYlB4UmF0aW8gIT09IDE7XG4gICAgdmFyIGNvbnRleHQgPSBmb3JjZWRDb250ZXh0IHx8ICh1c2VCdWZmZXIgPyByLmRhdGEuYnVmZmVyQ29udGV4dHNbci5NT1RJT05CTFVSX0JVRkZFUl9OT0RFXSA6IGRhdGEuY29udGV4dHNbci5OT0RFXSk7XG4gICAgdmFyIGNsZWFyID0gbW90aW9uQmx1ciAmJiAhdXNlQnVmZmVyID8gJ21vdGlvbkJsdXInIDogdW5kZWZpbmVkO1xuICAgIHNldENvbnRleHRUcmFuc2Zvcm0oY29udGV4dCwgY2xlYXIpO1xuXG4gICAgaWYgKGhpZGVFZGdlcykge1xuICAgICAgci5kcmF3Q2FjaGVkTm9kZXMoY29udGV4dCwgZWxlcy5ub25kcmFnLCBwaXhlbFJhdGlvLCBleHRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByLmRyYXdMYXllcmVkRWxlbWVudHMoY29udGV4dCwgZWxlcy5ub25kcmFnLCBwaXhlbFJhdGlvLCBleHRlbnQpO1xuICAgIH1cblxuICAgIGlmIChyLmRlYnVnKSB7XG4gICAgICByLmRyYXdEZWJ1Z1BvaW50cyhjb250ZXh0LCBlbGVzLm5vbmRyYWcpO1xuICAgIH1cblxuICAgIGlmICghZHJhd0FsbExheWVycyAmJiAhbW90aW9uQmx1cikge1xuICAgICAgbmVlZERyYXdbci5OT0RFXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZHJhd09ubHlOb2RlTGF5ZXIgJiYgKG5lZWREcmF3W3IuRFJBR10gfHwgZHJhd0FsbExheWVycyB8fCBuZWVkTWJDbGVhcltyLkRSQUddKSkge1xuICAgIHZhciB1c2VCdWZmZXIgPSBtb3Rpb25CbHVyICYmICFuZWVkTWJDbGVhcltyLkRSQUddICYmIG1iUHhSYXRpbyAhPT0gMTtcbiAgICB2YXIgY29udGV4dCA9IGZvcmNlZENvbnRleHQgfHwgKHVzZUJ1ZmZlciA/IHIuZGF0YS5idWZmZXJDb250ZXh0c1tyLk1PVElPTkJMVVJfQlVGRkVSX0RSQUddIDogZGF0YS5jb250ZXh0c1tyLkRSQUddKTtcbiAgICBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQsIG1vdGlvbkJsdXIgJiYgIXVzZUJ1ZmZlciA/ICdtb3Rpb25CbHVyJyA6IHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoaGlkZUVkZ2VzKSB7XG4gICAgICByLmRyYXdDYWNoZWROb2Rlcyhjb250ZXh0LCBlbGVzLmRyYWcsIHBpeGVsUmF0aW8sIGV4dGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIuZHJhd0NhY2hlZEVsZW1lbnRzKGNvbnRleHQsIGVsZXMuZHJhZywgcGl4ZWxSYXRpbywgZXh0ZW50KTtcbiAgICB9XG5cbiAgICBpZiAoci5kZWJ1Zykge1xuICAgICAgci5kcmF3RGVidWdQb2ludHMoY29udGV4dCwgZWxlcy5kcmFnKTtcbiAgICB9XG5cbiAgICBpZiAoIWRyYXdBbGxMYXllcnMgJiYgIW1vdGlvbkJsdXIpIHtcbiAgICAgIG5lZWREcmF3W3IuRFJBR10gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoci5zaG93RnBzIHx8ICFkcmF3T25seU5vZGVMYXllciAmJiBuZWVkRHJhd1tyLlNFTEVDVF9CT1hdICYmICFkcmF3QWxsTGF5ZXJzKSB7XG4gICAgdmFyIGNvbnRleHQgPSBmb3JjZWRDb250ZXh0IHx8IGRhdGEuY29udGV4dHNbci5TRUxFQ1RfQk9YXTtcbiAgICBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQpO1xuXG4gICAgaWYgKHIuc2VsZWN0aW9uWzRdID09IDEgJiYgKHIuaG92ZXJEYXRhLnNlbGVjdGluZyB8fCByLnRvdWNoRGF0YS5zZWxlY3RpbmcpKSB7XG4gICAgICB2YXIgem9vbSA9IHIuY3kuem9vbSgpO1xuICAgICAgdmFyIGJvcmRlcldpZHRoID0gc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1ib3JkZXItd2lkdGgnKS52YWx1ZSAvIHpvb207XG4gICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGJvcmRlcldpZHRoO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1jb2xvcicpLnZhbHVlWzBdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1jb2xvcicpLnZhbHVlWzFdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1jb2xvcicpLnZhbHVlWzJdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1vcGFjaXR5JykudmFsdWUgKyAnKSc7XG4gICAgICBjb250ZXh0LmZpbGxSZWN0KHIuc2VsZWN0aW9uWzBdLCByLnNlbGVjdGlvblsxXSwgci5zZWxlY3Rpb25bMl0gLSByLnNlbGVjdGlvblswXSwgci5zZWxlY3Rpb25bM10gLSByLnNlbGVjdGlvblsxXSk7XG5cbiAgICAgIGlmIChib3JkZXJXaWR0aCA+IDApIHtcbiAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9ICdyZ2JhKCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LWJvcmRlci1jb2xvcicpLnZhbHVlWzBdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1ib3JkZXItY29sb3InKS52YWx1ZVsxXSArICcsJyArIHN0eWxlLmNvcmUoJ3NlbGVjdGlvbi1ib3gtYm9yZGVyLWNvbG9yJykudmFsdWVbMl0gKyAnLCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LW9wYWNpdHknKS52YWx1ZSArICcpJztcbiAgICAgICAgY29udGV4dC5zdHJva2VSZWN0KHIuc2VsZWN0aW9uWzBdLCByLnNlbGVjdGlvblsxXSwgci5zZWxlY3Rpb25bMl0gLSByLnNlbGVjdGlvblswXSwgci5zZWxlY3Rpb25bM10gLSByLnNlbGVjdGlvblsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZykge1xuICAgICAgdmFyIHpvb20gPSByLmN5Lnpvb20oKTtcbiAgICAgIHZhciBwb3MgPSBkYXRhLmJnQWN0aXZlUG9zaXN0aW9uO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgnICsgc3R5bGUuY29yZSgnYWN0aXZlLWJnLWNvbG9yJykudmFsdWVbMF0gKyAnLCcgKyBzdHlsZS5jb3JlKCdhY3RpdmUtYmctY29sb3InKS52YWx1ZVsxXSArICcsJyArIHN0eWxlLmNvcmUoJ2FjdGl2ZS1iZy1jb2xvcicpLnZhbHVlWzJdICsgJywnICsgc3R5bGUuY29yZSgnYWN0aXZlLWJnLW9wYWNpdHknKS52YWx1ZSArICcpJztcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICBjb250ZXh0LmFyYyhwb3MueCwgcG9zLnksIHN0eWxlLmNvcmUoJ2FjdGl2ZS1iZy1zaXplJykucGZWYWx1ZSAvIHpvb20sIDAsIDIgKiBNYXRoLlBJKTtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH1cblxuICAgIHZhciB0aW1lVG9SZW5kZXIgPSByLmxhc3RSZWRyYXdUaW1lO1xuXG4gICAgaWYgKHIuc2hvd0ZwcyAmJiB0aW1lVG9SZW5kZXIpIHtcbiAgICAgIHRpbWVUb1JlbmRlciA9IE1hdGgucm91bmQodGltZVRvUmVuZGVyKTtcbiAgICAgIHZhciBmcHMgPSBNYXRoLnJvdW5kKDEwMDAgLyB0aW1lVG9SZW5kZXIpO1xuICAgICAgY29udGV4dC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG4gICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2JhKDI1NSwgMCwgMCwgMC43NSknO1xuICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9ICdyZ2JhKDI1NSwgMCwgMCwgMC43NSknO1xuICAgICAgY29udGV4dC5saW5lV2lkdGggPSAxO1xuICAgICAgY29udGV4dC5maWxsVGV4dCgnMSBmcmFtZSA9ICcgKyB0aW1lVG9SZW5kZXIgKyAnIG1zID0gJyArIGZwcyArICcgZnBzJywgMCwgMjApO1xuICAgICAgdmFyIG1heEZwcyA9IDYwO1xuICAgICAgY29udGV4dC5zdHJva2VSZWN0KDAsIDMwLCAyNTAsIDIwKTtcbiAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMzAsIDI1MCAqIE1hdGgubWluKGZwcyAvIG1heEZwcywgMSksIDIwKTtcbiAgICB9XG5cbiAgICBpZiAoIWRyYXdBbGxMYXllcnMpIHtcbiAgICAgIG5lZWREcmF3W3IuU0VMRUNUX0JPWF0gPSBmYWxzZTtcbiAgICB9XG4gIH0gLy8gbW90aW9uYmx1cjogYmxpdCByZW5kZXJlZCBibHVycnkgZnJhbWVzXG5cblxuICBpZiAobW90aW9uQmx1ciAmJiBtYlB4UmF0aW8gIT09IDEpIHtcbiAgICB2YXIgY3h0Tm9kZSA9IGRhdGEuY29udGV4dHNbci5OT0RFXTtcbiAgICB2YXIgdHh0Tm9kZSA9IHIuZGF0YS5idWZmZXJDYW52YXNlc1tyLk1PVElPTkJMVVJfQlVGRkVSX05PREVdO1xuICAgIHZhciBjeHREcmFnID0gZGF0YS5jb250ZXh0c1tyLkRSQUddO1xuICAgIHZhciB0eHREcmFnID0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW3IuTU9USU9OQkxVUl9CVUZGRVJfRFJBR107XG5cbiAgICB2YXIgZHJhd01vdGlvbkJsdXIgPSBmdW5jdGlvbiBkcmF3TW90aW9uQmx1cihjeHQsIHR4dCwgbmVlZENsZWFyKSB7XG4gICAgICBjeHQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuXG4gICAgICBpZiAobmVlZENsZWFyIHx8ICFtb3Rpb25CbHVyRmFkZUVmZmVjdCkge1xuICAgICAgICBjeHQuY2xlYXJSZWN0KDAsIDAsIHIuY2FudmFzV2lkdGgsIHIuY2FudmFzSGVpZ2h0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1iY2xlYXIoY3h0LCAwLCAwLCByLmNhbnZhc1dpZHRoLCByLmNhbnZhc0hlaWdodCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBweHIgPSBtYlB4UmF0aW87XG4gICAgICBjeHQuZHJhd0ltYWdlKHR4dCwgLy8gaW1nXG4gICAgICAwLCAwLCAvLyBzeCwgc3lcbiAgICAgIHIuY2FudmFzV2lkdGggKiBweHIsIHIuY2FudmFzSGVpZ2h0ICogcHhyLCAvLyBzdywgc2hcbiAgICAgIDAsIDAsIC8vIHgsIHlcbiAgICAgIHIuY2FudmFzV2lkdGgsIHIuY2FudmFzSGVpZ2h0IC8vIHcsIGhcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGlmIChuZWVkRHJhd1tyLk5PREVdIHx8IG5lZWRNYkNsZWFyW3IuTk9ERV0pIHtcbiAgICAgIGRyYXdNb3Rpb25CbHVyKGN4dE5vZGUsIHR4dE5vZGUsIG5lZWRNYkNsZWFyW3IuTk9ERV0pO1xuICAgICAgbmVlZERyYXdbci5OT0RFXSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChuZWVkRHJhd1tyLkRSQUddIHx8IG5lZWRNYkNsZWFyW3IuRFJBR10pIHtcbiAgICAgIGRyYXdNb3Rpb25CbHVyKGN4dERyYWcsIHR4dERyYWcsIG5lZWRNYkNsZWFyW3IuRFJBR10pO1xuICAgICAgbmVlZERyYXdbci5EUkFHXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHIucHJldlZpZXdwb3J0ID0gdnA7XG5cbiAgaWYgKHIuY2xlYXJpbmdNb3Rpb25CbHVyKSB7XG4gICAgci5jbGVhcmluZ01vdGlvbkJsdXIgPSBmYWxzZTtcbiAgICByLm1vdGlvbkJsdXJDbGVhcmVkID0gdHJ1ZTtcbiAgICByLm1vdGlvbkJsdXIgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG1vdGlvbkJsdXIpIHtcbiAgICByLm1vdGlvbkJsdXJUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICByLm1vdGlvbkJsdXJUaW1lb3V0ID0gbnVsbDtcbiAgICAgIHIuY2xlYXJlZEZvck1vdGlvbkJsdXJbci5OT0RFXSA9IGZhbHNlO1xuICAgICAgci5jbGVhcmVkRm9yTW90aW9uQmx1cltyLkRSQUddID0gZmFsc2U7XG4gICAgICByLm1vdGlvbkJsdXIgPSBmYWxzZTtcbiAgICAgIHIuY2xlYXJpbmdNb3Rpb25CbHVyID0gIXRleHR1cmVEcmF3O1xuICAgICAgci5tYkZyYW1lcyA9IDA7XG4gICAgICBuZWVkRHJhd1tyLk5PREVdID0gdHJ1ZTtcbiAgICAgIG5lZWREcmF3W3IuRFJBR10gPSB0cnVlO1xuICAgICAgci5yZWRyYXcoKTtcbiAgICB9LCBtb3Rpb25CbHVyRGVsYXkpO1xuICB9XG5cbiAgaWYgKCFmb3JjZWRDb250ZXh0KSB7XG4gICAgY3kuZW1pdCgncmVuZGVyJyk7XG4gIH1cbn07XG5cbnZhciBDUnAkNyA9IHt9OyAvLyBATyBQb2x5Z29uIGRyYXdpbmdcblxuQ1JwJDcuZHJhd1BvbHlnb25QYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHBvaW50cykge1xuICB2YXIgaGFsZlcgPSB3aWR0aCAvIDI7XG4gIHZhciBoYWxmSCA9IGhlaWdodCAvIDI7XG5cbiAgaWYgKGNvbnRleHQuYmVnaW5QYXRoKSB7XG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgfVxuXG4gIGNvbnRleHQubW92ZVRvKHggKyBoYWxmVyAqIHBvaW50c1swXSwgeSArIGhhbGZIICogcG9pbnRzWzFdKTtcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IHBvaW50cy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZlcgKiBwb2ludHNbaSAqIDJdLCB5ICsgaGFsZkggKiBwb2ludHNbaSAqIDIgKyAxXSk7XG4gIH1cblxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxuQ1JwJDcuZHJhd1JvdW5kUG9seWdvblBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKSB7XG4gIHZhciBoYWxmVyA9IHdpZHRoIC8gMjtcbiAgdmFyIGhhbGZIID0gaGVpZ2h0IC8gMjtcbiAgdmFyIGNvcm5lclJhZGl1cyA9IGdldFJvdW5kUG9seWdvblJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcblxuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHBvaW50cy5sZW5ndGggLyA0OyBfaSsrKSB7XG4gICAgdmFyIHNvdXJjZVV2ID0gdm9pZCAwLFxuICAgICAgICBkZXN0VXYgPSB2b2lkIDA7XG5cbiAgICBpZiAoX2kgPT09IDApIHtcbiAgICAgIHNvdXJjZVV2ID0gcG9pbnRzLmxlbmd0aCAtIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNvdXJjZVV2ID0gX2kgKiA0IC0gMjtcbiAgICB9XG5cbiAgICBkZXN0VXYgPSBfaSAqIDQgKyAyO1xuICAgIHZhciBweCA9IHggKyBoYWxmVyAqIHBvaW50c1tfaSAqIDRdO1xuICAgIHZhciBweSA9IHkgKyBoYWxmSCAqIHBvaW50c1tfaSAqIDQgKyAxXTtcbiAgICB2YXIgY29zVGhldGEgPSAtcG9pbnRzW3NvdXJjZVV2XSAqIHBvaW50c1tkZXN0VXZdIC0gcG9pbnRzW3NvdXJjZVV2ICsgMV0gKiBwb2ludHNbZGVzdFV2ICsgMV07XG4gICAgdmFyIG9mZnNldCA9IGNvcm5lclJhZGl1cyAvIE1hdGgudGFuKE1hdGguYWNvcyhjb3NUaGV0YSkgLyAyKTtcbiAgICB2YXIgY3AweCA9IHB4IC0gb2Zmc2V0ICogcG9pbnRzW3NvdXJjZVV2XTtcbiAgICB2YXIgY3AweSA9IHB5IC0gb2Zmc2V0ICogcG9pbnRzW3NvdXJjZVV2ICsgMV07XG4gICAgdmFyIGNwMXggPSBweCArIG9mZnNldCAqIHBvaW50c1tkZXN0VXZdO1xuICAgIHZhciBjcDF5ID0gcHkgKyBvZmZzZXQgKiBwb2ludHNbZGVzdFV2ICsgMV07XG5cbiAgICBpZiAoX2kgPT09IDApIHtcbiAgICAgIGNvbnRleHQubW92ZVRvKGNwMHgsIGNwMHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmxpbmVUbyhjcDB4LCBjcDB5KTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmFyY1RvKHB4LCBweSwgY3AxeCwgY3AxeSwgY29ybmVyUmFkaXVzKTtcbiAgfVxuXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XG59OyAvLyBSb3VuZCByZWN0YW5nbGUgZHJhd2luZ1xuXG5cbkNScCQ3LmRyYXdSb3VuZFJlY3RhbmdsZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCkge1xuICB2YXIgaGFsZldpZHRoID0gd2lkdGggLyAyO1xuICB2YXIgaGFsZkhlaWdodCA9IGhlaWdodCAvIDI7XG4gIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcblxuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9IC8vIFN0YXJ0IGF0IHRvcCBtaWRkbGVcblxuXG4gIGNvbnRleHQubW92ZVRvKHgsIHkgLSBoYWxmSGVpZ2h0KTsgLy8gQXJjIGZyb20gbWlkZGxlIHRvcCB0byByaWdodCBzaWRlXG5cbiAgY29udGV4dC5hcmNUbyh4ICsgaGFsZldpZHRoLCB5IC0gaGFsZkhlaWdodCwgeCArIGhhbGZXaWR0aCwgeSwgY29ybmVyUmFkaXVzKTsgLy8gQXJjIGZyb20gcmlnaHQgc2lkZSB0byBib3R0b21cblxuICBjb250ZXh0LmFyY1RvKHggKyBoYWxmV2lkdGgsIHkgKyBoYWxmSGVpZ2h0LCB4LCB5ICsgaGFsZkhlaWdodCwgY29ybmVyUmFkaXVzKTsgLy8gQXJjIGZyb20gYm90dG9tIHRvIGxlZnQgc2lkZVxuXG4gIGNvbnRleHQuYXJjVG8oeCAtIGhhbGZXaWR0aCwgeSArIGhhbGZIZWlnaHQsIHggLSBoYWxmV2lkdGgsIHksIGNvcm5lclJhZGl1cyk7IC8vIEFyYyBmcm9tIGxlZnQgc2lkZSB0byB0b3BCb3JkZXJcblxuICBjb250ZXh0LmFyY1RvKHggLSBoYWxmV2lkdGgsIHkgLSBoYWxmSGVpZ2h0LCB4LCB5IC0gaGFsZkhlaWdodCwgY29ybmVyUmFkaXVzKTsgLy8gSm9pbiBsaW5lXG5cbiAgY29udGV4dC5saW5lVG8oeCwgeSAtIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxuQ1JwJDcuZHJhd0JvdHRvbVJvdW5kUmVjdGFuZ2xlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBoYWxmV2lkdGggPSB3aWR0aCAvIDI7XG4gIHZhciBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjtcbiAgdmFyIGNvcm5lclJhZGl1cyA9IGdldFJvdW5kUmVjdGFuZ2xlUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuXG4gIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIH0gLy8gU3RhcnQgYXQgdG9wIG1pZGRsZVxuXG5cbiAgY29udGV4dC5tb3ZlVG8oeCwgeSAtIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZldpZHRoLCB5IC0gaGFsZkhlaWdodCk7XG4gIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGgsIHkpO1xuICBjb250ZXh0LmFyY1RvKHggKyBoYWxmV2lkdGgsIHkgKyBoYWxmSGVpZ2h0LCB4LCB5ICsgaGFsZkhlaWdodCwgY29ybmVyUmFkaXVzKTtcbiAgY29udGV4dC5hcmNUbyh4IC0gaGFsZldpZHRoLCB5ICsgaGFsZkhlaWdodCwgeCAtIGhhbGZXaWR0aCwgeSwgY29ybmVyUmFkaXVzKTtcbiAgY29udGV4dC5saW5lVG8oeCAtIGhhbGZXaWR0aCwgeSAtIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4LCB5IC0gaGFsZkhlaWdodCk7XG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XG59O1xuXG5DUnAkNy5kcmF3Q3V0UmVjdGFuZ2xlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBoYWxmV2lkdGggPSB3aWR0aCAvIDI7XG4gIHZhciBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjtcbiAgdmFyIGNvcm5lckxlbmd0aCA9IGdldEN1dFJlY3RhbmdsZUNvcm5lckxlbmd0aCgpO1xuXG4gIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIH1cblxuICBjb250ZXh0Lm1vdmVUbyh4IC0gaGFsZldpZHRoICsgY29ybmVyTGVuZ3RoLCB5IC0gaGFsZkhlaWdodCk7XG4gIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGggLSBjb3JuZXJMZW5ndGgsIHkgLSBoYWxmSGVpZ2h0KTtcbiAgY29udGV4dC5saW5lVG8oeCArIGhhbGZXaWR0aCwgeSAtIGhhbGZIZWlnaHQgKyBjb3JuZXJMZW5ndGgpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZldpZHRoLCB5ICsgaGFsZkhlaWdodCAtIGNvcm5lckxlbmd0aCk7XG4gIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGggLSBjb3JuZXJMZW5ndGgsIHkgKyBoYWxmSGVpZ2h0KTtcbiAgY29udGV4dC5saW5lVG8oeCAtIGhhbGZXaWR0aCArIGNvcm5lckxlbmd0aCwgeSArIGhhbGZIZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4IC0gaGFsZldpZHRoLCB5ICsgaGFsZkhlaWdodCAtIGNvcm5lckxlbmd0aCk7XG4gIGNvbnRleHQubGluZVRvKHggLSBoYWxmV2lkdGgsIHkgLSBoYWxmSGVpZ2h0ICsgY29ybmVyTGVuZ3RoKTtcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcbn07XG5cbkNScCQ3LmRyYXdCYXJyZWxQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoIC8gMjtcbiAgdmFyIGhhbGZIZWlnaHQgPSBoZWlnaHQgLyAyO1xuICB2YXIgeEJlZ2luID0geCAtIGhhbGZXaWR0aDtcbiAgdmFyIHhFbmQgPSB4ICsgaGFsZldpZHRoO1xuICB2YXIgeUJlZ2luID0geSAtIGhhbGZIZWlnaHQ7XG4gIHZhciB5RW5kID0geSArIGhhbGZIZWlnaHQ7XG4gIHZhciBiYXJyZWxDdXJ2ZUNvbnN0YW50cyA9IGdldEJhcnJlbEN1cnZlQ29uc3RhbnRzKHdpZHRoLCBoZWlnaHQpO1xuICB2YXIgd09mZnNldCA9IGJhcnJlbEN1cnZlQ29uc3RhbnRzLndpZHRoT2Zmc2V0O1xuICB2YXIgaE9mZnNldCA9IGJhcnJlbEN1cnZlQ29uc3RhbnRzLmhlaWdodE9mZnNldDtcbiAgdmFyIGN0cmxQdFhPZmZzZXQgPSBiYXJyZWxDdXJ2ZUNvbnN0YW50cy5jdHJsUHRPZmZzZXRQY3QgKiB3T2Zmc2V0O1xuXG4gIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIH1cblxuICBjb250ZXh0Lm1vdmVUbyh4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQpO1xuICBjb250ZXh0LmxpbmVUbyh4QmVnaW4sIHlFbmQgLSBoT2Zmc2V0KTtcbiAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhCZWdpbiArIHdPZmZzZXQsIHlFbmQpO1xuICBjb250ZXh0LmxpbmVUbyh4RW5kIC0gd09mZnNldCwgeUVuZCk7XG4gIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyh4RW5kIC0gY3RybFB0WE9mZnNldCwgeUVuZCwgeEVuZCwgeUVuZCAtIGhPZmZzZXQpO1xuICBjb250ZXh0LmxpbmVUbyh4RW5kLCB5QmVnaW4gKyBoT2Zmc2V0KTtcbiAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHhFbmQgLSBjdHJsUHRYT2Zmc2V0LCB5QmVnaW4sIHhFbmQgLSB3T2Zmc2V0LCB5QmVnaW4pO1xuICBjb250ZXh0LmxpbmVUbyh4QmVnaW4gKyB3T2Zmc2V0LCB5QmVnaW4pO1xuICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oeEJlZ2luICsgY3RybFB0WE9mZnNldCwgeUJlZ2luLCB4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQpO1xuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxudmFyIHNpbjAgPSBNYXRoLnNpbigwKTtcbnZhciBjb3MwID0gTWF0aC5jb3MoMCk7XG52YXIgc2luID0ge307XG52YXIgY29zID0ge307XG52YXIgZWxsaXBzZVN0ZXBTaXplID0gTWF0aC5QSSAvIDQwO1xuXG5mb3IgKHZhciBpID0gMCAqIE1hdGguUEk7IGkgPCAyICogTWF0aC5QSTsgaSArPSBlbGxpcHNlU3RlcFNpemUpIHtcbiAgc2luW2ldID0gTWF0aC5zaW4oaSk7XG4gIGNvc1tpXSA9IE1hdGguY29zKGkpO1xufVxuXG5DUnAkNy5kcmF3RWxsaXBzZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICB9XG5cbiAgaWYgKGNvbnRleHQuZWxsaXBzZSkge1xuICAgIGNvbnRleHQuZWxsaXBzZShjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCAvIDIsIGhlaWdodCAvIDIsIDAsIDAsIDIgKiBNYXRoLlBJKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgeFBvcywgeVBvcztcbiAgICB2YXIgcncgPSB3aWR0aCAvIDI7XG4gICAgdmFyIHJoID0gaGVpZ2h0IC8gMjtcblxuICAgIGZvciAodmFyIGkgPSAwICogTWF0aC5QSTsgaSA8IDIgKiBNYXRoLlBJOyBpICs9IGVsbGlwc2VTdGVwU2l6ZSkge1xuICAgICAgeFBvcyA9IGNlbnRlclggLSBydyAqIHNpbltpXSAqIHNpbjAgKyBydyAqIGNvc1tpXSAqIGNvczA7XG4gICAgICB5UG9zID0gY2VudGVyWSArIHJoICogY29zW2ldICogc2luMCArIHJoICogc2luW2ldICogY29zMDtcblxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZXh0LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xufTtcblxuLyogZ2xvYmFsIGF0b2IsIEFycmF5QnVmZmVyLCBVaW50OEFycmF5LCBCbG9iICovXG52YXIgQ1JwJDggPSB7fTtcblxuQ1JwJDguY3JlYXRlQnVmZmVyID0gZnVuY3Rpb24gKHcsIGgpIHtcbiAgdmFyIGJ1ZmZlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgYnVmZmVyLndpZHRoID0gdztcbiAgYnVmZmVyLmhlaWdodCA9IGg7XG4gIHJldHVybiBbYnVmZmVyLCBidWZmZXIuZ2V0Q29udGV4dCgnMmQnKV07XG59O1xuXG5DUnAkOC5idWZmZXJDYW52YXNJbWFnZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBjeSA9IHRoaXMuY3k7XG4gIHZhciBlbGVzID0gY3kubXV0YWJsZUVsZW1lbnRzKCk7XG4gIHZhciBiYiA9IGVsZXMuYm91bmRpbmdCb3goKTtcbiAgdmFyIGN0clJlY3QgPSB0aGlzLmZpbmRDb250YWluZXJDbGllbnRDb29yZHMoKTtcbiAgdmFyIHdpZHRoID0gb3B0aW9ucy5mdWxsID8gTWF0aC5jZWlsKGJiLncpIDogY3RyUmVjdFsyXTtcbiAgdmFyIGhlaWdodCA9IG9wdGlvbnMuZnVsbCA/IE1hdGguY2VpbChiYi5oKSA6IGN0clJlY3RbM107XG4gIHZhciBzcGVjZE1heERpbXMgPSBudW1iZXIob3B0aW9ucy5tYXhXaWR0aCkgfHwgbnVtYmVyKG9wdGlvbnMubWF4SGVpZ2h0KTtcbiAgdmFyIHB4UmF0aW8gPSB0aGlzLmdldFBpeGVsUmF0aW8oKTtcbiAgdmFyIHNjYWxlID0gMTtcblxuICBpZiAob3B0aW9ucy5zY2FsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgd2lkdGggKj0gb3B0aW9ucy5zY2FsZTtcbiAgICBoZWlnaHQgKj0gb3B0aW9ucy5zY2FsZTtcbiAgICBzY2FsZSA9IG9wdGlvbnMuc2NhbGU7XG4gIH0gZWxzZSBpZiAoc3BlY2RNYXhEaW1zKSB7XG4gICAgdmFyIG1heFNjYWxlVyA9IEluZmluaXR5O1xuICAgIHZhciBtYXhTY2FsZUggPSBJbmZpbml0eTtcblxuICAgIGlmIChudW1iZXIob3B0aW9ucy5tYXhXaWR0aCkpIHtcbiAgICAgIG1heFNjYWxlVyA9IHNjYWxlICogb3B0aW9ucy5tYXhXaWR0aCAvIHdpZHRoO1xuICAgIH1cblxuICAgIGlmIChudW1iZXIob3B0aW9ucy5tYXhIZWlnaHQpKSB7XG4gICAgICBtYXhTY2FsZUggPSBzY2FsZSAqIG9wdGlvbnMubWF4SGVpZ2h0IC8gaGVpZ2h0O1xuICAgIH1cblxuICAgIHNjYWxlID0gTWF0aC5taW4obWF4U2NhbGVXLCBtYXhTY2FsZUgpO1xuICAgIHdpZHRoICo9IHNjYWxlO1xuICAgIGhlaWdodCAqPSBzY2FsZTtcbiAgfVxuXG4gIGlmICghc3BlY2RNYXhEaW1zKSB7XG4gICAgd2lkdGggKj0gcHhSYXRpbztcbiAgICBoZWlnaHQgKj0gcHhSYXRpbztcbiAgICBzY2FsZSAqPSBweFJhdGlvO1xuICB9XG5cbiAgdmFyIGJ1ZmZDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gIGJ1ZmZDYW52YXMud2lkdGggPSB3aWR0aDtcbiAgYnVmZkNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIGJ1ZmZDYW52YXMuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gIGJ1ZmZDYW52YXMuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgdmFyIGJ1ZmZDeHQgPSBidWZmQ2FudmFzLmdldENvbnRleHQoJzJkJyk7IC8vIFJhc3Rlcml6ZSB0aGUgbGF5ZXJzLCBidXQgb25seSBpZiBjb250YWluZXIgaGFzIG5vbnplcm8gc2l6ZVxuXG4gIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkge1xuICAgIGJ1ZmZDeHQuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIGJ1ZmZDeHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcbiAgICB2YXIgenNvcnRlZEVsZXMgPSB0aGlzLmdldENhY2hlZFpTb3J0ZWRFbGVzKCk7XG5cbiAgICBpZiAob3B0aW9ucy5mdWxsKSB7XG4gICAgICAvLyBkcmF3IHRoZSBmdWxsIGJvdW5kcyBvZiB0aGUgZ3JhcGhcbiAgICAgIGJ1ZmZDeHQudHJhbnNsYXRlKC1iYi54MSAqIHNjYWxlLCAtYmIueTEgKiBzY2FsZSk7XG4gICAgICBidWZmQ3h0LnNjYWxlKHNjYWxlLCBzY2FsZSk7XG4gICAgICB0aGlzLmRyYXdFbGVtZW50cyhidWZmQ3h0LCB6c29ydGVkRWxlcyk7XG4gICAgICBidWZmQ3h0LnNjYWxlKDEgLyBzY2FsZSwgMSAvIHNjYWxlKTtcbiAgICAgIGJ1ZmZDeHQudHJhbnNsYXRlKGJiLngxICogc2NhbGUsIGJiLnkxICogc2NhbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkcmF3IHRoZSBjdXJyZW50IHZpZXdcbiAgICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICAgIHZhciB0cmFuc2xhdGlvbiA9IHtcbiAgICAgICAgeDogcGFuLnggKiBzY2FsZSxcbiAgICAgICAgeTogcGFuLnkgKiBzY2FsZVxuICAgICAgfTtcbiAgICAgIHNjYWxlICo9IGN5Lnpvb20oKTtcbiAgICAgIGJ1ZmZDeHQudHJhbnNsYXRlKHRyYW5zbGF0aW9uLngsIHRyYW5zbGF0aW9uLnkpO1xuICAgICAgYnVmZkN4dC5zY2FsZShzY2FsZSwgc2NhbGUpO1xuICAgICAgdGhpcy5kcmF3RWxlbWVudHMoYnVmZkN4dCwgenNvcnRlZEVsZXMpO1xuICAgICAgYnVmZkN4dC5zY2FsZSgxIC8gc2NhbGUsIDEgLyBzY2FsZSk7XG4gICAgICBidWZmQ3h0LnRyYW5zbGF0ZSgtdHJhbnNsYXRpb24ueCwgLXRyYW5zbGF0aW9uLnkpO1xuICAgIH0gLy8gbmVlZCB0byBmaWxsIGJnIGF0IGVuZCBsaWtlIHRoaXMgaW4gb3JkZXIgdG8gZmlsbCBjbGVhcmVkIHRyYW5zcGFyZW50IHBpeGVscyBpbiBqcGdzXG5cblxuICAgIGlmIChvcHRpb25zLmJnKSB7XG4gICAgICBidWZmQ3h0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdmVyJztcbiAgICAgIGJ1ZmZDeHQuZmlsbFN0eWxlID0gb3B0aW9ucy5iZztcbiAgICAgIGJ1ZmZDeHQucmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGJ1ZmZDeHQuZmlsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBidWZmQ2FudmFzO1xufTtcblxuZnVuY3Rpb24gYjY0VG9CbG9iKGI2NCwgbWltZVR5cGUpIHtcbiAgdmFyIGJ5dGVzID0gYXRvYihiNjQpO1xuICB2YXIgYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpO1xuICB2YXIgYnVmZlVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykge1xuICAgIGJ1ZmZVaW50OFtpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gbmV3IEJsb2IoW2J1ZmZdLCB7XG4gICAgdHlwZTogbWltZVR5cGVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGI2NFVyaVRvQjY0KGI2NHVyaSkge1xuICB2YXIgaSA9IGI2NHVyaS5pbmRleE9mKCcsJyk7XG4gIHJldHVybiBiNjR1cmkuc3Vic3RyKGkgKyAxKTtcbn1cblxuZnVuY3Rpb24gb3V0cHV0KG9wdGlvbnMsIGNhbnZhcywgbWltZVR5cGUpIHtcbiAgdmFyIGdldEI2NFVyaSA9IGZ1bmN0aW9uIGdldEI2NFVyaSgpIHtcbiAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTChtaW1lVHlwZSwgb3B0aW9ucy5xdWFsaXR5KTtcbiAgfTtcblxuICBzd2l0Y2ggKG9wdGlvbnMub3V0cHV0KSB7XG4gICAgY2FzZSAnYmxvYi1wcm9taXNlJzpcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYW52YXMudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7XG4gICAgICAgICAgICBpZiAoYmxvYiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoYmxvYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdgY2FudmFzLnRvQmxvYigpYCBzZW50IGEgbnVsbCB2YWx1ZSBpbiBpdHMgY2FsbGJhY2snKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgbWltZVR5cGUsIG9wdGlvbnMucXVhbGl0eSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ2Jsb2InOlxuICAgICAgcmV0dXJuIGI2NFRvQmxvYihiNjRVcmlUb0I2NChnZXRCNjRVcmkoKSksIG1pbWVUeXBlKTtcblxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICByZXR1cm4gYjY0VXJpVG9CNjQoZ2V0QjY0VXJpKCkpO1xuXG4gICAgY2FzZSAnYmFzZTY0dXJpJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGdldEI2NFVyaSgpO1xuICB9XG59XG5cbkNScCQ4LnBuZyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHJldHVybiBvdXRwdXQob3B0aW9ucywgdGhpcy5idWZmZXJDYW52YXNJbWFnZShvcHRpb25zKSwgJ2ltYWdlL3BuZycpO1xufTtcblxuQ1JwJDguanBnID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG91dHB1dChvcHRpb25zLCB0aGlzLmJ1ZmZlckNhbnZhc0ltYWdlKG9wdGlvbnMpLCAnaW1hZ2UvanBlZycpO1xufTtcblxudmFyIENScCQ5ID0ge307XG5cbkNScCQ5Lm5vZGVTaGFwZUltcGwgPSBmdW5jdGlvbiAobmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKSB7XG4gIHN3aXRjaCAobmFtZSkge1xuICAgIGNhc2UgJ2VsbGlwc2UnOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd0VsbGlwc2VQYXRoKGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgY2FzZSAncG9seWdvbic6XG4gICAgICByZXR1cm4gdGhpcy5kcmF3UG9seWdvblBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKTtcblxuICAgIGNhc2UgJ3JvdW5kLXBvbHlnb24nOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd1JvdW5kUG9seWdvblBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKTtcblxuICAgIGNhc2UgJ3JvdW5kcmVjdGFuZ2xlJzpcbiAgICBjYXNlICdyb3VuZC1yZWN0YW5nbGUnOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd1JvdW5kUmVjdGFuZ2xlUGF0aChjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgIGNhc2UgJ2N1dHJlY3RhbmdsZSc6XG4gICAgY2FzZSAnY3V0LXJlY3RhbmdsZSc6XG4gICAgICByZXR1cm4gdGhpcy5kcmF3Q3V0UmVjdGFuZ2xlUGF0aChjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgIGNhc2UgJ2JvdHRvbXJvdW5kcmVjdGFuZ2xlJzpcbiAgICBjYXNlICdib3R0b20tcm91bmQtcmVjdGFuZ2xlJzpcbiAgICAgIHJldHVybiB0aGlzLmRyYXdCb3R0b21Sb3VuZFJlY3RhbmdsZVBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICBjYXNlICdiYXJyZWwnOlxuICAgICAgcmV0dXJuIHRoaXMuZHJhd0JhcnJlbFBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gIH1cbn07XG5cbnZhciBDUiA9IENhbnZhc1JlbmRlcmVyO1xudmFyIENScCRhID0gQ2FudmFzUmVuZGVyZXIucHJvdG90eXBlO1xuQ1JwJGEuQ0FOVkFTX0xBWUVSUyA9IDM7IC8vXG5cbkNScCRhLlNFTEVDVF9CT1ggPSAwO1xuQ1JwJGEuRFJBRyA9IDE7XG5DUnAkYS5OT0RFID0gMjtcbkNScCRhLkJVRkZFUl9DT1VOVCA9IDM7IC8vXG5cbkNScCRhLlRFWFRVUkVfQlVGRkVSID0gMDtcbkNScCRhLk1PVElPTkJMVVJfQlVGRkVSX05PREUgPSAxO1xuQ1JwJGEuTU9USU9OQkxVUl9CVUZGRVJfRFJBRyA9IDI7XG5cbmZ1bmN0aW9uIENhbnZhc1JlbmRlcmVyKG9wdGlvbnMpIHtcbiAgdmFyIHIgPSB0aGlzO1xuICByLmRhdGEgPSB7XG4gICAgY2FudmFzZXM6IG5ldyBBcnJheShDUnAkYS5DQU5WQVNfTEFZRVJTKSxcbiAgICBjb250ZXh0czogbmV3IEFycmF5KENScCRhLkNBTlZBU19MQVlFUlMpLFxuICAgIGNhbnZhc05lZWRzUmVkcmF3OiBuZXcgQXJyYXkoQ1JwJGEuQ0FOVkFTX0xBWUVSUyksXG4gICAgYnVmZmVyQ2FudmFzZXM6IG5ldyBBcnJheShDUnAkYS5CVUZGRVJfQ09VTlQpLFxuICAgIGJ1ZmZlckNvbnRleHRzOiBuZXcgQXJyYXkoQ1JwJGEuQ0FOVkFTX0xBWUVSUylcbiAgfTtcbiAgdmFyIHRhcEhsT2ZmQXR0ciA9ICctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InO1xuICB2YXIgdGFwSGxPZmZTdHlsZSA9ICdyZ2JhKDAsMCwwLDApJztcbiAgci5kYXRhLmNhbnZhc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgdmFyIGNvbnRhaW5lclN0eWxlID0gci5kYXRhLmNhbnZhc0NvbnRhaW5lci5zdHlsZTtcbiAgci5kYXRhLmNhbnZhc0NvbnRhaW5lci5zdHlsZVt0YXBIbE9mZkF0dHJdID0gdGFwSGxPZmZTdHlsZTtcbiAgY29udGFpbmVyU3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICBjb250YWluZXJTdHlsZS56SW5kZXggPSAnMCc7XG4gIGNvbnRhaW5lclN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gIHZhciBjb250YWluZXIgPSBvcHRpb25zLmN5LmNvbnRhaW5lcigpO1xuICBjb250YWluZXIuYXBwZW5kQ2hpbGQoci5kYXRhLmNhbnZhc0NvbnRhaW5lcik7XG4gIGNvbnRhaW5lci5zdHlsZVt0YXBIbE9mZkF0dHJdID0gdGFwSGxPZmZTdHlsZTtcbiAgdmFyIHN0eWxlTWFwID0ge1xuICAgICctd2Via2l0LXVzZXItc2VsZWN0JzogJ25vbmUnLFxuICAgICctbW96LXVzZXItc2VsZWN0JzogJy1tb3otbm9uZScsXG4gICAgJ3VzZXItc2VsZWN0JzogJ25vbmUnLFxuICAgICctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InOiAncmdiYSgwLDAsMCwwKScsXG4gICAgJ291dGxpbmUtc3R5bGUnOiAnbm9uZSdcbiAgfTtcblxuICBpZiAobXMoKSkge1xuICAgIHN0eWxlTWFwWyctbXMtdG91Y2gtYWN0aW9uJ10gPSAnbm9uZSc7XG4gICAgc3R5bGVNYXBbJ3RvdWNoLWFjdGlvbiddID0gJ25vbmUnO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBDUnAkYS5DQU5WQVNfTEFZRVJTOyBpKyspIHtcbiAgICB2YXIgY2FudmFzID0gci5kYXRhLmNhbnZhc2VzW2ldID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgIHIuZGF0YS5jb250ZXh0c1tpXSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIE9iamVjdC5rZXlzKHN0eWxlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICBjYW52YXMuc3R5bGVba10gPSBzdHlsZU1hcFtrXTtcbiAgICB9KTtcbiAgICBjYW52YXMuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgaSk7XG4gICAgY2FudmFzLnN0eWxlLnpJbmRleCA9IFN0cmluZyhDUnAkYS5DQU5WQVNfTEFZRVJTIC0gaSk7XG4gICAgci5kYXRhLmNhbnZhc0NvbnRhaW5lci5hcHBlbmRDaGlsZChjYW52YXMpO1xuICAgIHIuZGF0YS5jYW52YXNOZWVkc1JlZHJhd1tpXSA9IGZhbHNlO1xuICB9XG5cbiAgci5kYXRhLnRvcENhbnZhcyA9IHIuZGF0YS5jYW52YXNlc1swXTtcbiAgci5kYXRhLmNhbnZhc2VzW0NScCRhLk5PREVdLnNldEF0dHJpYnV0ZSgnZGF0YS1pZCcsICdsYXllcicgKyBDUnAkYS5OT0RFICsgJy1ub2RlJyk7XG4gIHIuZGF0YS5jYW52YXNlc1tDUnAkYS5TRUxFQ1RfQk9YXS5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgQ1JwJGEuU0VMRUNUX0JPWCArICctc2VsZWN0Ym94Jyk7XG4gIHIuZGF0YS5jYW52YXNlc1tDUnAkYS5EUkFHXS5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgQ1JwJGEuRFJBRyArICctZHJhZycpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgQ1JwJGEuQlVGRkVSX0NPVU5UOyBpKyspIHtcbiAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgci5kYXRhLmJ1ZmZlckNvbnRleHRzW2ldID0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLmdldENvbnRleHQoJzJkJyk7XG4gICAgci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0uc2V0QXR0cmlidXRlKCdkYXRhLWlkJywgJ2J1ZmZlcicgKyBpKTtcbiAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0uc3R5bGUuekluZGV4ID0gU3RyaW5nKC1pIC0gMSk7XG4gICAgci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsgLy9yLmRhdGEuY2FudmFzQ29udGFpbmVyLmFwcGVuZENoaWxkKHIuZGF0YS5idWZmZXJDYW52YXNlc1tpXSk7XG4gIH1cblxuICByLnBhdGhzRW5hYmxlZCA9IHRydWU7XG4gIHZhciBlbXB0eUJiID0gbWFrZUJvdW5kaW5nQm94KCk7XG5cbiAgdmFyIGdldEJveENlbnRlciA9IGZ1bmN0aW9uIGdldEJveENlbnRlcihiYikge1xuICAgIHJldHVybiB7XG4gICAgICB4OiAoYmIueDEgKyBiYi54MikgLyAyLFxuICAgICAgeTogKGJiLnkxICsgYmIueTIpIC8gMlxuICAgIH07XG4gIH07XG5cbiAgdmFyIGdldENlbnRlck9mZnNldCA9IGZ1bmN0aW9uIGdldENlbnRlck9mZnNldChiYikge1xuICAgIHJldHVybiB7XG4gICAgICB4OiAtYmIudyAvIDIsXG4gICAgICB5OiAtYmIuaCAvIDJcbiAgICB9O1xuICB9O1xuXG4gIHZhciBiYWNrZ3JvdW5kVGltZXN0YW1wSGFzQ2hhbmdlZCA9IGZ1bmN0aW9uIGJhY2tncm91bmRUaW1lc3RhbXBIYXNDaGFuZ2VkKGVsZSkge1xuICAgIHZhciBfcCA9IGVsZVswXS5fcHJpdmF0ZTtcbiAgICB2YXIgc2FtZSA9IF9wLm9sZEJhY2tncm91bmRUaW1lc3RhbXAgPT09IF9wLmJhY2tncm91bmRUaW1lc3RhbXA7XG4gICAgcmV0dXJuICFzYW1lO1xuICB9O1xuXG4gIHZhciBnZXRTdHlsZUtleSA9IGZ1bmN0aW9uIGdldFN0eWxlS2V5KGVsZSkge1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUubm9kZUtleTtcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxLZXkgPSBmdW5jdGlvbiBnZXRMYWJlbEtleShlbGUpIHtcbiAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLmxhYmVsU3R5bGVLZXk7XG4gIH07XG5cbiAgdmFyIGdldFNvdXJjZUxhYmVsS2V5ID0gZnVuY3Rpb24gZ2V0U291cmNlTGFiZWxLZXkoZWxlKSB7XG4gICAgcmV0dXJuIGVsZVswXS5fcHJpdmF0ZS5zb3VyY2VMYWJlbFN0eWxlS2V5O1xuICB9O1xuXG4gIHZhciBnZXRUYXJnZXRMYWJlbEtleSA9IGZ1bmN0aW9uIGdldFRhcmdldExhYmVsS2V5KGVsZSkge1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUudGFyZ2V0TGFiZWxTdHlsZUtleTtcbiAgfTtcblxuICB2YXIgZHJhd0VsZW1lbnQgPSBmdW5jdGlvbiBkcmF3RWxlbWVudChjb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCB1c2VFbGVPcGFjaXR5KSB7XG4gICAgcmV0dXJuIHIuZHJhd0VsZW1lbnQoY29udGV4dCwgZWxlLCBiYiwgZmFsc2UsIGZhbHNlLCB1c2VFbGVPcGFjaXR5KTtcbiAgfTtcblxuICB2YXIgZHJhd0xhYmVsID0gZnVuY3Rpb24gZHJhd0xhYmVsKGNvbnRleHQsIGVsZSwgYmIsIHNjYWxlZExhYmVsU2hvd24sIHVzZUVsZU9wYWNpdHkpIHtcbiAgICByZXR1cm4gci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgJ21haW4nLCB1c2VFbGVPcGFjaXR5KTtcbiAgfTtcblxuICB2YXIgZHJhd1NvdXJjZUxhYmVsID0gZnVuY3Rpb24gZHJhd1NvdXJjZUxhYmVsKGNvbnRleHQsIGVsZSwgYmIsIHNjYWxlZExhYmVsU2hvd24sIHVzZUVsZU9wYWNpdHkpIHtcbiAgICByZXR1cm4gci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgJ3NvdXJjZScsIHVzZUVsZU9wYWNpdHkpO1xuICB9O1xuXG4gIHZhciBkcmF3VGFyZ2V0TGFiZWwgPSBmdW5jdGlvbiBkcmF3VGFyZ2V0TGFiZWwoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgdXNlRWxlT3BhY2l0eSkge1xuICAgIHJldHVybiByLmRyYXdFbGVtZW50VGV4dChjb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCAndGFyZ2V0JywgdXNlRWxlT3BhY2l0eSk7XG4gIH07XG5cbiAgdmFyIGdldEVsZW1lbnRCb3ggPSBmdW5jdGlvbiBnZXRFbGVtZW50Qm94KGVsZSkge1xuICAgIGVsZS5ib3VuZGluZ0JveCgpO1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUuYm9keUJvdW5kcztcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxCb3ggPSBmdW5jdGlvbiBnZXRMYWJlbEJveChlbGUpIHtcbiAgICBlbGUuYm91bmRpbmdCb3goKTtcbiAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLmxhYmVsQm91bmRzLm1haW4gfHwgZW1wdHlCYjtcbiAgfTtcblxuICB2YXIgZ2V0U291cmNlTGFiZWxCb3ggPSBmdW5jdGlvbiBnZXRTb3VyY2VMYWJlbEJveChlbGUpIHtcbiAgICBlbGUuYm91bmRpbmdCb3goKTtcbiAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLmxhYmVsQm91bmRzLnNvdXJjZSB8fCBlbXB0eUJiO1xuICB9O1xuXG4gIHZhciBnZXRUYXJnZXRMYWJlbEJveCA9IGZ1bmN0aW9uIGdldFRhcmdldExhYmVsQm94KGVsZSkge1xuICAgIGVsZS5ib3VuZGluZ0JveCgpO1xuICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUubGFiZWxCb3VuZHMudGFyZ2V0IHx8IGVtcHR5QmI7XG4gIH07XG5cbiAgdmFyIGlzTGFiZWxWaXNpYmxlQXRTY2FsZSA9IGZ1bmN0aW9uIGlzTGFiZWxWaXNpYmxlQXRTY2FsZShlbGUsIHNjYWxlZExhYmVsU2hvd24pIHtcbiAgICByZXR1cm4gc2NhbGVkTGFiZWxTaG93bjtcbiAgfTtcblxuICB2YXIgZ2V0RWxlbWVudFJvdGF0aW9uUG9pbnQgPSBmdW5jdGlvbiBnZXRFbGVtZW50Um90YXRpb25Qb2ludChlbGUpIHtcbiAgICByZXR1cm4gZ2V0Qm94Q2VudGVyKGdldEVsZW1lbnRCb3goZWxlKSk7XG4gIH07XG5cbiAgdmFyIGFkZFRleHRNYXJnaW4gPSBmdW5jdGlvbiBhZGRUZXh0TWFyZ2luKHByZWZpeCwgcHQsIGVsZSkge1xuICAgIHZhciBwcmUgPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgICByZXR1cm4ge1xuICAgICAgeDogcHQueCArIGVsZS5wc3R5bGUocHJlICsgJ3RleHQtbWFyZ2luLXgnKS5wZlZhbHVlLFxuICAgICAgeTogcHQueSArIGVsZS5wc3R5bGUocHJlICsgJ3RleHQtbWFyZ2luLXknKS5wZlZhbHVlXG4gICAgfTtcbiAgfTtcblxuICB2YXIgZ2V0UnNQdCA9IGZ1bmN0aW9uIGdldFJzUHQoZWxlLCB4LCB5KSB7XG4gICAgdmFyIHJzID0gZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoO1xuICAgIHJldHVybiB7XG4gICAgICB4OiByc1t4XSxcbiAgICAgIHk6IHJzW3ldXG4gICAgfTtcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxSb3RhdGlvblBvaW50ID0gZnVuY3Rpb24gZ2V0TGFiZWxSb3RhdGlvblBvaW50KGVsZSkge1xuICAgIHJldHVybiBhZGRUZXh0TWFyZ2luKCcnLCBnZXRSc1B0KGVsZSwgJ2xhYmVsWCcsICdsYWJlbFknKSwgZWxlKTtcbiAgfTtcblxuICB2YXIgZ2V0U291cmNlTGFiZWxSb3RhdGlvblBvaW50ID0gZnVuY3Rpb24gZ2V0U291cmNlTGFiZWxSb3RhdGlvblBvaW50KGVsZSkge1xuICAgIHJldHVybiBhZGRUZXh0TWFyZ2luKCdzb3VyY2UnLCBnZXRSc1B0KGVsZSwgJ3NvdXJjZUxhYmVsWCcsICdzb3VyY2VMYWJlbFknKSwgZWxlKTtcbiAgfTtcblxuICB2YXIgZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvblBvaW50ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvblBvaW50KGVsZSkge1xuICAgIHJldHVybiBhZGRUZXh0TWFyZ2luKCd0YXJnZXQnLCBnZXRSc1B0KGVsZSwgJ3RhcmdldExhYmVsWCcsICd0YXJnZXRMYWJlbFknKSwgZWxlKTtcbiAgfTtcblxuICB2YXIgZ2V0RWxlbWVudFJvdGF0aW9uT2Zmc2V0ID0gZnVuY3Rpb24gZ2V0RWxlbWVudFJvdGF0aW9uT2Zmc2V0KGVsZSkge1xuICAgIHJldHVybiBnZXRDZW50ZXJPZmZzZXQoZ2V0RWxlbWVudEJveChlbGUpKTtcbiAgfTtcblxuICB2YXIgZ2V0U291cmNlTGFiZWxSb3RhdGlvbk9mZnNldCA9IGZ1bmN0aW9uIGdldFNvdXJjZUxhYmVsUm90YXRpb25PZmZzZXQoZWxlKSB7XG4gICAgcmV0dXJuIGdldENlbnRlck9mZnNldChnZXRTb3VyY2VMYWJlbEJveChlbGUpKTtcbiAgfTtcblxuICB2YXIgZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvbk9mZnNldCA9IGZ1bmN0aW9uIGdldFRhcmdldExhYmVsUm90YXRpb25PZmZzZXQoZWxlKSB7XG4gICAgcmV0dXJuIGdldENlbnRlck9mZnNldChnZXRUYXJnZXRMYWJlbEJveChlbGUpKTtcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxSb3RhdGlvbk9mZnNldCA9IGZ1bmN0aW9uIGdldExhYmVsUm90YXRpb25PZmZzZXQoZWxlKSB7XG4gICAgdmFyIGJiID0gZ2V0TGFiZWxCb3goZWxlKTtcbiAgICB2YXIgcCA9IGdldENlbnRlck9mZnNldChnZXRMYWJlbEJveChlbGUpKTtcblxuICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgIHN3aXRjaCAoZWxlLnBzdHlsZSgndGV4dC1oYWxpZ24nKS52YWx1ZSkge1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICBwLnggPSAtYmIudztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgcC54ID0gMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChlbGUucHN0eWxlKCd0ZXh0LXZhbGlnbicpLnZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgcC55ID0gLWJiLmg7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICBwLnkgPSAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwO1xuICB9O1xuXG4gIHZhciBlbGVUeHJDYWNoZSA9IHIuZGF0YS5lbGVUeHJDYWNoZSA9IG5ldyBFbGVtZW50VGV4dHVyZUNhY2hlKHIsIHtcbiAgICBnZXRLZXk6IGdldFN0eWxlS2V5LFxuICAgIGRvZXNFbGVJbnZhbGlkYXRlS2V5OiBiYWNrZ3JvdW5kVGltZXN0YW1wSGFzQ2hhbmdlZCxcbiAgICBkcmF3RWxlbWVudDogZHJhd0VsZW1lbnQsXG4gICAgZ2V0Qm91bmRpbmdCb3g6IGdldEVsZW1lbnRCb3gsXG4gICAgZ2V0Um90YXRpb25Qb2ludDogZ2V0RWxlbWVudFJvdGF0aW9uUG9pbnQsXG4gICAgZ2V0Um90YXRpb25PZmZzZXQ6IGdldEVsZW1lbnRSb3RhdGlvbk9mZnNldCxcbiAgICBhbGxvd0VkZ2VUeHJDYWNoaW5nOiBmYWxzZSxcbiAgICBhbGxvd1BhcmVudFR4ckNhY2hpbmc6IGZhbHNlXG4gIH0pO1xuICB2YXIgbGJsVHhyQ2FjaGUgPSByLmRhdGEubGJsVHhyQ2FjaGUgPSBuZXcgRWxlbWVudFRleHR1cmVDYWNoZShyLCB7XG4gICAgZ2V0S2V5OiBnZXRMYWJlbEtleSxcbiAgICBkcmF3RWxlbWVudDogZHJhd0xhYmVsLFxuICAgIGdldEJvdW5kaW5nQm94OiBnZXRMYWJlbEJveCxcbiAgICBnZXRSb3RhdGlvblBvaW50OiBnZXRMYWJlbFJvdGF0aW9uUG9pbnQsXG4gICAgZ2V0Um90YXRpb25PZmZzZXQ6IGdldExhYmVsUm90YXRpb25PZmZzZXQsXG4gICAgaXNWaXNpYmxlOiBpc0xhYmVsVmlzaWJsZUF0U2NhbGVcbiAgfSk7XG4gIHZhciBzbGJUeHJDYWNoZSA9IHIuZGF0YS5zbGJUeHJDYWNoZSA9IG5ldyBFbGVtZW50VGV4dHVyZUNhY2hlKHIsIHtcbiAgICBnZXRLZXk6IGdldFNvdXJjZUxhYmVsS2V5LFxuICAgIGRyYXdFbGVtZW50OiBkcmF3U291cmNlTGFiZWwsXG4gICAgZ2V0Qm91bmRpbmdCb3g6IGdldFNvdXJjZUxhYmVsQm94LFxuICAgIGdldFJvdGF0aW9uUG9pbnQ6IGdldFNvdXJjZUxhYmVsUm90YXRpb25Qb2ludCxcbiAgICBnZXRSb3RhdGlvbk9mZnNldDogZ2V0U291cmNlTGFiZWxSb3RhdGlvbk9mZnNldCxcbiAgICBpc1Zpc2libGU6IGlzTGFiZWxWaXNpYmxlQXRTY2FsZVxuICB9KTtcbiAgdmFyIHRsYlR4ckNhY2hlID0gci5kYXRhLnRsYlR4ckNhY2hlID0gbmV3IEVsZW1lbnRUZXh0dXJlQ2FjaGUociwge1xuICAgIGdldEtleTogZ2V0VGFyZ2V0TGFiZWxLZXksXG4gICAgZHJhd0VsZW1lbnQ6IGRyYXdUYXJnZXRMYWJlbCxcbiAgICBnZXRCb3VuZGluZ0JveDogZ2V0VGFyZ2V0TGFiZWxCb3gsXG4gICAgZ2V0Um90YXRpb25Qb2ludDogZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvblBvaW50LFxuICAgIGdldFJvdGF0aW9uT2Zmc2V0OiBnZXRUYXJnZXRMYWJlbFJvdGF0aW9uT2Zmc2V0LFxuICAgIGlzVmlzaWJsZTogaXNMYWJlbFZpc2libGVBdFNjYWxlXG4gIH0pO1xuICB2YXIgbHlyVHhyQ2FjaGUgPSByLmRhdGEubHlyVHhyQ2FjaGUgPSBuZXcgTGF5ZXJlZFRleHR1cmVDYWNoZShyKTtcbiAgci5vblVwZGF0ZUVsZUNhbGNzKGZ1bmN0aW9uIGludmFsaWRhdGVUZXh0dXJlQ2FjaGVzKHdpbGxEcmF3LCBlbGVzKSB7XG4gICAgLy8gZWFjaCBjYWNoZSBzaG91bGQgY2hlY2sgZm9yIHN1Yi1rZXkgZGlmZiB0byBzZWUgdGhhdCB0aGUgdXBkYXRlIGFmZmVjdHMgdGhhdCBjYWNoZSBwYXJ0aWN1bGFybHlcbiAgICBlbGVUeHJDYWNoZS5pbnZhbGlkYXRlRWxlbWVudHMoZWxlcyk7XG4gICAgbGJsVHhyQ2FjaGUuaW52YWxpZGF0ZUVsZW1lbnRzKGVsZXMpO1xuICAgIHNsYlR4ckNhY2hlLmludmFsaWRhdGVFbGVtZW50cyhlbGVzKTtcbiAgICB0bGJUeHJDYWNoZS5pbnZhbGlkYXRlRWxlbWVudHMoZWxlcyk7IC8vIGFueSBjaGFuZ2UgaW52YWxpZGF0ZXMgdGhlIGxheWVyc1xuXG4gICAgbHlyVHhyQ2FjaGUuaW52YWxpZGF0ZUVsZW1lbnRzKGVsZXMpOyAvLyB1cGRhdGUgdGhlIG9sZCBiZyB0aW1lc3RhbXAgc28gZGlmZnMgY2FuIGJlIGRvbmUgaW4gdGhlIGVsZSB0eHIgY2FjaGVzXG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfcCA9IGVsZXNbX2ldLl9wcml2YXRlO1xuICAgICAgX3Aub2xkQmFja2dyb3VuZFRpbWVzdGFtcCA9IF9wLmJhY2tncm91bmRUaW1lc3RhbXA7XG4gICAgfVxuICB9KTtcblxuICB2YXIgcmVmaW5lSW5MYXllcnMgPSBmdW5jdGlvbiByZWZpbmVJbkxheWVycyhyZXFzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXFzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBseXJUeHJDYWNoZS5lbnF1ZXVlRWxlbWVudFJlZmluZW1lbnQocmVxc1tpXS5lbGUpO1xuICAgIH1cbiAgfTtcblxuICBlbGVUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xuICBsYmxUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xuICBzbGJUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xuICB0bGJUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xufVxuXG5DUnAkYS5yZWRyYXdIaW50ID0gZnVuY3Rpb24gKGdyb3VwLCBib29sKSB7XG4gIHZhciByID0gdGhpcztcblxuICBzd2l0Y2ggKGdyb3VwKSB7XG4gICAgY2FzZSAnZWxlcyc6XG4gICAgICByLmRhdGEuY2FudmFzTmVlZHNSZWRyYXdbQ1JwJGEuTk9ERV0gPSBib29sO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdkcmFnJzpcbiAgICAgIHIuZGF0YS5jYW52YXNOZWVkc1JlZHJhd1tDUnAkYS5EUkFHXSA9IGJvb2w7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICByLmRhdGEuY2FudmFzTmVlZHNSZWRyYXdbQ1JwJGEuU0VMRUNUX0JPWF0gPSBib29sO1xuICAgICAgYnJlYWs7XG4gIH1cbn07IC8vIHdoZXRoZXIgdG8gdXNlIFBhdGgyRCBjYWNoaW5nIGZvciBkcmF3aW5nXG5cblxudmFyIHBhdGhzSW1wbGQgPSB0eXBlb2YgUGF0aDJEICE9PSAndW5kZWZpbmVkJztcblxuQ1JwJGEucGF0aDJkRW5hYmxlZCA9IGZ1bmN0aW9uIChvbikge1xuICBpZiAob24gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhzRW5hYmxlZDtcbiAgfVxuXG4gIHRoaXMucGF0aHNFbmFibGVkID0gb24gPyB0cnVlIDogZmFsc2U7XG59O1xuXG5DUnAkYS51c2VQYXRocyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHBhdGhzSW1wbGQgJiYgdGhpcy5wYXRoc0VuYWJsZWQ7XG59O1xuXG5DUnAkYS5zZXRJbWdTbW9vdGhpbmcgPSBmdW5jdGlvbiAoY29udGV4dCwgYm9vbCkge1xuICBpZiAoY29udGV4dC5pbWFnZVNtb290aGluZ0VuYWJsZWQgIT0gbnVsbCkge1xuICAgIGNvbnRleHQuaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gYm9vbDtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0LndlYmtpdEltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGJvb2w7XG4gICAgY29udGV4dC5tb3pJbWFnZVNtb290aGluZ0VuYWJsZWQgPSBib29sO1xuICAgIGNvbnRleHQubXNJbWFnZVNtb290aGluZ0VuYWJsZWQgPSBib29sO1xuICB9XG59O1xuXG5DUnAkYS5nZXRJbWdTbW9vdGhpbmcgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICBpZiAoY29udGV4dC5pbWFnZVNtb290aGluZ0VuYWJsZWQgIT0gbnVsbCkge1xuICAgIHJldHVybiBjb250ZXh0LmltYWdlU21vb3RoaW5nRW5hYmxlZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29udGV4dC53ZWJraXRJbWFnZVNtb290aGluZ0VuYWJsZWQgfHwgY29udGV4dC5tb3pJbWFnZVNtb290aGluZ0VuYWJsZWQgfHwgY29udGV4dC5tc0ltYWdlU21vb3RoaW5nRW5hYmxlZDtcbiAgfVxufTtcblxuQ1JwJGEubWFrZU9mZnNjcmVlbkNhbnZhcyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBjYW52YXM7XG5cbiAgaWYgKCh0eXBlb2YgT2Zmc2NyZWVuQ2FudmFzID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoT2Zmc2NyZWVuQ2FudmFzKSkgIT09ICggXCJ1bmRlZmluZWRcIiApKSB7XG4gICAgY2FudmFzID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTtcbiAgfSBlbHNlIHtcbiAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIHJldHVybiBjYW52YXM7XG59O1xuXG5bQ1JwLCBDUnAkMSwgQ1JwJDIsIENScCQzLCBDUnAkNCwgQ1JwJDUsIENScCQ2LCBDUnAkNywgQ1JwJDgsIENScCQ5XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICBleHRlbmQoQ1JwJGEsIHByb3BzKTtcbn0pO1xuXG52YXIgcmVuZGVyZXIgPSBbe1xuICBuYW1lOiAnbnVsbCcsXG4gIGltcGw6IE51bGxSZW5kZXJlclxufSwge1xuICBuYW1lOiAnYmFzZScsXG4gIGltcGw6IEJSXG59LCB7XG4gIG5hbWU6ICdjYW52YXMnLFxuICBpbXBsOiBDUlxufV07XG5cbnZhciBpbmNFeHRzID0gW3tcbiAgdHlwZTogJ2xheW91dCcsXG4gIGV4dGVuc2lvbnM6IGxheW91dFxufSwge1xuICB0eXBlOiAncmVuZGVyZXInLFxuICBleHRlbnNpb25zOiByZW5kZXJlclxufV07XG5cbnZhciBleHRlbnNpb25zID0ge307IC8vIHJlZ2lzdGVyZWQgbW9kdWxlcyBmb3IgZXh0ZW5zaW9ucywgaW5kZXhlZCBieSBuYW1lXG5cbnZhciBtb2R1bGVzID0ge307XG5cbmZ1bmN0aW9uIHNldEV4dGVuc2lvbih0eXBlLCBuYW1lLCByZWdpc3RyYW50KSB7XG4gIHZhciBleHQgPSByZWdpc3RyYW50O1xuXG4gIHZhciBvdmVycmlkZUVyciA9IGZ1bmN0aW9uIG92ZXJyaWRlRXJyKGZpZWxkKSB7XG4gICAgd2FybignQ2FuIG5vdCByZWdpc3RlciBgJyArIG5hbWUgKyAnYCBmb3IgYCcgKyB0eXBlICsgJ2Agc2luY2UgYCcgKyBmaWVsZCArICdgIGFscmVhZHkgZXhpc3RzIGluIHRoZSBwcm90b3R5cGUgYW5kIGNhbiBub3QgYmUgb3ZlcnJpZGRlbicpO1xuICB9O1xuXG4gIGlmICh0eXBlID09PSAnY29yZScpIHtcbiAgICBpZiAoQ29yZS5wcm90b3R5cGVbbmFtZV0pIHtcbiAgICAgIHJldHVybiBvdmVycmlkZUVycihuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ29yZS5wcm90b3R5cGVbbmFtZV0gPSByZWdpc3RyYW50O1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnY29sbGVjdGlvbicpIHtcbiAgICBpZiAoQ29sbGVjdGlvbi5wcm90b3R5cGVbbmFtZV0pIHtcbiAgICAgIHJldHVybiBvdmVycmlkZUVycihuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ29sbGVjdGlvbi5wcm90b3R5cGVbbmFtZV0gPSByZWdpc3RyYW50O1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbGF5b3V0Jykge1xuICAgIC8vIGZpbGwgaW4gbWlzc2luZyBsYXlvdXQgZnVuY3Rpb25zIGluIHRoZSBwcm90b3R5cGVcbiAgICB2YXIgTGF5b3V0ID0gZnVuY3Rpb24gTGF5b3V0KG9wdGlvbnMpIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICByZWdpc3RyYW50LmNhbGwodGhpcywgb3B0aW9ucyk7IC8vIG1ha2Ugc3VyZSBsYXlvdXQgaGFzIF9wcml2YXRlIGZvciB1c2Ugdy8gc3RkIGFwaXMgbGlrZSAub24oKVxuXG4gICAgICBpZiAoIXBsYWluT2JqZWN0KHRoaXMuX3ByaXZhdGUpKSB7XG4gICAgICAgIHRoaXMuX3ByaXZhdGUgPSB7fTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHJpdmF0ZS5jeSA9IG9wdGlvbnMuY3k7XG4gICAgICB0aGlzLl9wcml2YXRlLmxpc3RlbmVycyA9IFtdO1xuICAgICAgdGhpcy5jcmVhdGVFbWl0dGVyKCk7XG4gICAgfTtcblxuICAgIHZhciBsYXlvdXRQcm90byA9IExheW91dC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHJlZ2lzdHJhbnQucHJvdG90eXBlKTtcbiAgICB2YXIgb3B0TGF5b3V0Rm5zID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdExheW91dEZucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGZuTmFtZSA9IG9wdExheW91dEZuc1tpXTtcblxuICAgICAgbGF5b3V0UHJvdG9bZm5OYW1lXSA9IGxheW91dFByb3RvW2ZuTmFtZV0gfHwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH07XG4gICAgfSAvLyBlaXRoZXIgLnN0YXJ0KCkgb3IgLnJ1bigpIGlzIGRlZmluZWQsIHNvIGF1dG9nZW4gdGhlIG90aGVyXG5cblxuICAgIGlmIChsYXlvdXRQcm90by5zdGFydCAmJiAhbGF5b3V0UHJvdG8ucnVuKSB7XG4gICAgICBsYXlvdXRQcm90by5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoIWxheW91dFByb3RvLnN0YXJ0ICYmIGxheW91dFByb3RvLnJ1bikge1xuICAgICAgbGF5b3V0UHJvdG8uc3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucnVuKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgcmVnU3RvcCA9IHJlZ2lzdHJhbnQucHJvdG90eXBlLnN0b3A7XG5cbiAgICBsYXlvdXRQcm90by5zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG9wdHMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChvcHRzICYmIG9wdHMuYW5pbWF0ZSkge1xuICAgICAgICB2YXIgYW5pcyA9IHRoaXMuYW5pbWF0aW9ucztcblxuICAgICAgICBpZiAoYW5pcykge1xuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhbmlzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYW5pc1tfaV0uc3RvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVnU3RvcCkge1xuICAgICAgICByZWdTdG9wLmNhbGwodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVtaXQoJ2xheW91dHN0b3AnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIGlmICghbGF5b3V0UHJvdG8uZGVzdHJveSkge1xuICAgICAgbGF5b3V0UHJvdG8uZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGxheW91dFByb3RvLmN5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuY3k7XG4gICAgfTtcblxuICAgIHZhciBnZXRDeSA9IGZ1bmN0aW9uIGdldEN5KGxheW91dCkge1xuICAgICAgcmV0dXJuIGxheW91dC5fcHJpdmF0ZS5jeTtcbiAgICB9O1xuXG4gICAgdmFyIGVtaXR0ZXJPcHRzID0ge1xuICAgICAgYWRkRXZlbnRGaWVsZHM6IGZ1bmN0aW9uIGFkZEV2ZW50RmllbGRzKGxheW91dCwgZXZ0KSB7XG4gICAgICAgIGV2dC5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIGV2dC5jeSA9IGdldEN5KGxheW91dCk7XG4gICAgICAgIGV2dC50YXJnZXQgPSBsYXlvdXQ7XG4gICAgICB9LFxuICAgICAgYnViYmxlOiBmdW5jdGlvbiBidWJibGUoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIHBhcmVudDogZnVuY3Rpb24gcGFyZW50KGxheW91dCkge1xuICAgICAgICByZXR1cm4gZ2V0Q3kobGF5b3V0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV4dGVuZChsYXlvdXRQcm90bywge1xuICAgICAgY3JlYXRlRW1pdHRlcjogZnVuY3Rpb24gY3JlYXRlRW1pdHRlcigpIHtcbiAgICAgICAgdGhpcy5fcHJpdmF0ZS5lbWl0dGVyID0gbmV3IEVtaXR0ZXIoZW1pdHRlck9wdHMsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBlbWl0dGVyOiBmdW5jdGlvbiBlbWl0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbWl0dGVyO1xuICAgICAgfSxcbiAgICAgIG9uOiBmdW5jdGlvbiBvbihldnQsIGNiKSB7XG4gICAgICAgIHRoaXMuZW1pdHRlcigpLm9uKGV2dCwgY2IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBvbmU6IGZ1bmN0aW9uIG9uZShldnQsIGNiKSB7XG4gICAgICAgIHRoaXMuZW1pdHRlcigpLm9uZShldnQsIGNiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgb25jZTogZnVuY3Rpb24gb25jZShldnQsIGNiKSB7XG4gICAgICAgIHRoaXMuZW1pdHRlcigpLm9uZShldnQsIGNiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgcmVtb3ZlTGlzdGVuZXI6IGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKGV2dCwgY2IpIHtcbiAgICAgICAgdGhpcy5lbWl0dGVyKCkucmVtb3ZlTGlzdGVuZXIoZXZ0LCBjYik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUFsbExpc3RlbmVyczogZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKCkge1xuICAgICAgICB0aGlzLmVtaXR0ZXIoKS5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgZW1pdDogZnVuY3Rpb24gZW1pdChldnQsIHBhcmFtcykge1xuICAgICAgICB0aGlzLmVtaXR0ZXIoKS5lbWl0KGV2dCwgcGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGVmaW5lJDMuZXZlbnRBbGlhc2VzT24obGF5b3V0UHJvdG8pO1xuICAgIGV4dCA9IExheW91dDsgLy8gcmVwbGFjZSB3aXRoIG91ciB3cmFwcGVkIGxheW91dFxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZW5kZXJlcicgJiYgbmFtZSAhPT0gJ251bGwnICYmIG5hbWUgIT09ICdiYXNlJykge1xuICAgIC8vIHVzZXIgcmVnaXN0ZXJlZCByZW5kZXJlcnMgaW5oZXJpdCBmcm9tIGJhc2VcbiAgICB2YXIgQmFzZVJlbmRlcmVyID0gZ2V0RXh0ZW5zaW9uKCdyZW5kZXJlcicsICdiYXNlJyk7XG4gICAgdmFyIGJQcm90byA9IEJhc2VSZW5kZXJlci5wcm90b3R5cGU7XG4gICAgdmFyIFJlZ2lzdHJhbnRSZW5kZXJlciA9IHJlZ2lzdHJhbnQ7XG4gICAgdmFyIHJQcm90byA9IHJlZ2lzdHJhbnQucHJvdG90eXBlO1xuXG4gICAgdmFyIFJlbmRlcmVyID0gZnVuY3Rpb24gUmVuZGVyZXIoKSB7XG4gICAgICBCYXNlUmVuZGVyZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIFJlZ2lzdHJhbnRSZW5kZXJlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG5cbiAgICB2YXIgcHJvdG8gPSBSZW5kZXJlci5wcm90b3R5cGU7XG5cbiAgICBmb3IgKHZhciBwTmFtZSBpbiBiUHJvdG8pIHtcbiAgICAgIHZhciBwVmFsID0gYlByb3RvW3BOYW1lXTtcbiAgICAgIHZhciBleGlzdHNJblIgPSByUHJvdG9bcE5hbWVdICE9IG51bGw7XG5cbiAgICAgIGlmIChleGlzdHNJblIpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlRXJyKHBOYW1lKTtcbiAgICAgIH1cblxuICAgICAgcHJvdG9bcE5hbWVdID0gcFZhbDsgLy8gdGFrZSBpbXBsIGZyb20gYmFzZVxuICAgIH1cblxuICAgIGZvciAodmFyIF9wTmFtZSBpbiByUHJvdG8pIHtcbiAgICAgIHByb3RvW19wTmFtZV0gPSByUHJvdG9bX3BOYW1lXTsgLy8gdGFrZSBpbXBsIGZyb20gcmVnaXN0cmFudFxuICAgIH1cblxuICAgIGJQcm90by5jbGllbnRGdW5jdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcHJvdG9bbmFtZV0gPSBwcm90b1tuYW1lXSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVycm9yKCdSZW5kZXJlciBkb2VzIG5vdCBpbXBsZW1lbnQgYHJlbmRlcmVyLicgKyBuYW1lICsgJygpYCBvbiBpdHMgcHJvdG90eXBlJyk7XG4gICAgICB9O1xuICAgIH0pO1xuICAgIGV4dCA9IFJlbmRlcmVyO1xuICB9XG5cbiAgcmV0dXJuIHNldE1hcCh7XG4gICAgbWFwOiBleHRlbnNpb25zLFxuICAgIGtleXM6IFt0eXBlLCBuYW1lXSxcbiAgICB2YWx1ZTogZXh0XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRlbnNpb24odHlwZSwgbmFtZSkge1xuICByZXR1cm4gZ2V0TWFwKHtcbiAgICBtYXA6IGV4dGVuc2lvbnMsXG4gICAga2V5czogW3R5cGUsIG5hbWVdXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXRNb2R1bGUodHlwZSwgbmFtZSwgbW9kdWxlVHlwZSwgbW9kdWxlTmFtZSwgcmVnaXN0cmFudCkge1xuICByZXR1cm4gc2V0TWFwKHtcbiAgICBtYXA6IG1vZHVsZXMsXG4gICAga2V5czogW3R5cGUsIG5hbWUsIG1vZHVsZVR5cGUsIG1vZHVsZU5hbWVdLFxuICAgIHZhbHVlOiByZWdpc3RyYW50XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRNb2R1bGUodHlwZSwgbmFtZSwgbW9kdWxlVHlwZSwgbW9kdWxlTmFtZSkge1xuICByZXR1cm4gZ2V0TWFwKHtcbiAgICBtYXA6IG1vZHVsZXMsXG4gICAga2V5czogW3R5cGUsIG5hbWUsIG1vZHVsZVR5cGUsIG1vZHVsZU5hbWVdXG4gIH0pO1xufVxuXG52YXIgZXh0ZW5zaW9uID0gZnVuY3Rpb24gZXh0ZW5zaW9uKCkge1xuICAvLyBlLmcuIGV4dGVuc2lvbigncmVuZGVyZXInLCAnc3ZnJylcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICByZXR1cm4gZ2V0RXh0ZW5zaW9uLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gIH0gLy8gZS5nLiBleHRlbnNpb24oJ3JlbmRlcmVyJywgJ3N2ZycsIHsgLi4uIH0pXG4gIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICAgIHJldHVybiBzZXRFeHRlbnNpb24uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9IC8vIGUuZy4gZXh0ZW5zaW9uKCdyZW5kZXJlcicsICdzdmcnLCAnbm9kZVNoYXBlJywgJ2VsbGlwc2UnKVxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgcmV0dXJuIGdldE1vZHVsZS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgfSAvLyBlLmcuIGV4dGVuc2lvbigncmVuZGVyZXInLCAnc3ZnJywgJ25vZGVTaGFwZScsICdlbGxpcHNlJywgeyAuLi4gfSlcbiAgICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpIHtcbiAgICAgICAgICByZXR1cm4gc2V0TW9kdWxlLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3IoJ0ludmFsaWQgZXh0ZW5zaW9uIGFjY2VzcyBzeW50YXgnKTtcbiAgICAgICAgfVxufTsgLy8gYWxsb3dzIGEgY29yZSBpbnN0YW5jZSB0byBhY2Nlc3MgZXh0ZW5zaW9ucyBpbnRlcm5hbGx5XG5cblxuQ29yZS5wcm90b3R5cGUuZXh0ZW5zaW9uID0gZXh0ZW5zaW9uOyAvLyBpbmNsdWRlZCBleHRlbnNpb25zXG5cbmluY0V4dHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JvdXApIHtcbiAgZ3JvdXAuZXh0ZW5zaW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChleHQpIHtcbiAgICBzZXRFeHRlbnNpb24oZ3JvdXAudHlwZSwgZXh0Lm5hbWUsIGV4dC5pbXBsKTtcbiAgfSk7XG59KTtcblxuLy8gKHVzZWZ1bCBmb3IgaW5pdClcblxudmFyIFN0eWxlc2hlZXQgPSBmdW5jdGlvbiBTdHlsZXNoZWV0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3R5bGVzaGVldCkpIHtcbiAgICByZXR1cm4gbmV3IFN0eWxlc2hlZXQoKTtcbiAgfVxuXG4gIHRoaXMubGVuZ3RoID0gMDtcbn07XG5cbnZhciBzaGVldGZuID0gU3R5bGVzaGVldC5wcm90b3R5cGU7XG5cbnNoZWV0Zm4uaW5zdGFuY2VTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnc3R5bGVzaGVldCc7XG59OyAvLyBqdXN0IHN0b3JlIHRoZSBzZWxlY3RvciB0byBiZSBwYXJzZWQgbGF0ZXJcblxuXG5zaGVldGZuLnNlbGVjdG9yID0gZnVuY3Rpb24gKHNlbGVjdG9yKSB7XG4gIHZhciBpID0gdGhpcy5sZW5ndGgrKztcbiAgdGhpc1tpXSA9IHtcbiAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgcHJvcGVydGllczogW11cbiAgfTtcbiAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG59OyAvLyBqdXN0IHN0b3JlIHRoZSBwcm9wZXJ0eSB0byBiZSBwYXJzZWQgbGF0ZXJcblxuXG5zaGVldGZuLmNzcyA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICB2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTtcblxuICBpZiAoc3RyaW5nKG5hbWUpKSB7XG4gICAgdGhpc1tpXS5wcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KG5hbWUpKSB7XG4gICAgdmFyIG1hcCA9IG5hbWU7XG4gICAgdmFyIHByb3BOYW1lcyA9IE9iamVjdC5rZXlzKG1hcCk7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BOYW1lcy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGtleSA9IHByb3BOYW1lc1tqXTtcbiAgICAgIHZhciBtYXBWYWwgPSBtYXBba2V5XTtcblxuICAgICAgaWYgKG1hcFZhbCA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcCA9IFN0eWxlLnByb3BlcnRpZXNba2V5XSB8fCBTdHlsZS5wcm9wZXJ0aWVzW2Rhc2gyY2FtZWwoa2V5KV07XG5cbiAgICAgIGlmIChwcm9wID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBfbmFtZSA9IHByb3AubmFtZTtcbiAgICAgIHZhciBfdmFsdWUgPSBtYXBWYWw7XG4gICAgICB0aGlzW2ldLnByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIG5hbWU6IF9uYW1lLFxuICAgICAgICB2YWx1ZTogX3ZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnNoZWV0Zm4uc3R5bGUgPSBzaGVldGZuLmNzczsgLy8gZ2VuZXJhdGUgYSByZWFsIHN0eWxlIG9iamVjdCBmcm9tIHRoZSBkdW1teSBzdHlsZXNoZWV0XG5cbnNoZWV0Zm4uZ2VuZXJhdGVTdHlsZSA9IGZ1bmN0aW9uIChjeSkge1xuICB2YXIgc3R5bGUgPSBuZXcgU3R5bGUoY3kpO1xuICByZXR1cm4gdGhpcy5hcHBlbmRUb1N0eWxlKHN0eWxlKTtcbn07IC8vIGFwcGVuZCBhIGR1bW15IHN0eWxlc2hlZXQgb2JqZWN0IG9uIGEgcmVhbCBzdHlsZSBvYmplY3RcblxuXG5zaGVldGZuLmFwcGVuZFRvU3R5bGUgPSBmdW5jdGlvbiAoc3R5bGUpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNvbnRleHQgPSB0aGlzW2ldO1xuICAgIHZhciBzZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3I7XG4gICAgdmFyIHByb3BzID0gY29udGV4dC5wcm9wZXJ0aWVzO1xuICAgIHN0eWxlLnNlbGVjdG9yKHNlbGVjdG9yKTsgLy8gYXBwbHkgc2VsZWN0b3JcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJvcHMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBwcm9wID0gcHJvcHNbal07XG4gICAgICBzdHlsZS5jc3MocHJvcC5uYW1lLCBwcm9wLnZhbHVlKTsgLy8gYXBwbHkgcHJvcGVydHlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59O1xuXG52YXIgdmVyc2lvbiA9IFwiMy4yMC4wXCI7XG5cbnZhciBjeXRvc2NhcGUgPSBmdW5jdGlvbiBjeXRvc2NhcGUob3B0aW9ucykge1xuICAvLyBpZiBubyBvcHRpb25zIHNwZWNpZmllZCwgdXNlIGRlZmF1bHRcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfSAvLyBjcmVhdGUgaW5zdGFuY2VcblxuXG4gIGlmIChwbGFpbk9iamVjdChvcHRpb25zKSkge1xuICAgIHJldHVybiBuZXcgQ29yZShvcHRpb25zKTtcbiAgfSAvLyBhbGxvdyBmb3IgcmVnaXN0cmF0aW9uIG9mIGV4dGVuc2lvbnNcbiAgZWxzZSBpZiAoc3RyaW5nKG9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5zaW9uLmFwcGx5KGV4dGVuc2lvbiwgYXJndW1lbnRzKTtcbiAgICB9XG59OyAvLyBlLmcuIGN5dG9zY2FwZS51c2UoIHJlcXVpcmUoJ2N5dG9zY2FwZS1mb28nKSwgYmFyIClcblxuXG5jeXRvc2NhcGUudXNlID0gZnVuY3Rpb24gKGV4dCkge1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7IC8vIGFyZ3MgdG8gcGFzcyB0byBleHRcblxuICBhcmdzLnVuc2hpZnQoY3l0b3NjYXBlKTsgLy8gY3l0b3NjYXBlIGlzIGZpcnN0IGFyZyB0byBleHRcblxuICBleHQuYXBwbHkobnVsbCwgYXJncyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuY3l0b3NjYXBlLndhcm5pbmdzID0gZnVuY3Rpb24gKGJvb2wpIHtcbiAgcmV0dXJuIHdhcm5pbmdzKGJvb2wpO1xufTsgLy8gcmVwbGFjZWQgYnkgYnVpbGQgc3lzdGVtXG5cblxuY3l0b3NjYXBlLnZlcnNpb24gPSB2ZXJzaW9uOyAvLyBleHBvc2UgcHVibGljIGFwaXMgKG1vc3RseSBmb3IgZXh0ZW5zaW9ucylcblxuY3l0b3NjYXBlLnN0eWxlc2hlZXQgPSBjeXRvc2NhcGUuU3R5bGVzaGVldCA9IFN0eWxlc2hlZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gY3l0b3NjYXBlO1xuIiwiLy8gTWF0ZXJpYWwgRGVzaWduIEljb25zIHY1LjkuNTVcclxuZXhwb3J0IHZhciBtZGlBYlRlc3RpbmcgPSBcIk00IDJBMiAyIDAgMCAwIDIgNFYxMkg0VjhINlYxMkg4VjRBMiAyIDAgMCAwIDYgMkg0TTQgNEg2VjZINE0yMiAxNS41VjE0QTIgMiAwIDAgMCAyMCAxMkgxNlYyMkgyMEEyIDIgMCAwIDAgMjIgMjBWMTguNUExLjU0IDEuNTQgMCAwIDAgMjAuNSAxN0ExLjU0IDEuNTQgMCAwIDAgMjIgMTUuNU0yMCAyMEgxOFYxOEgyMFYyME0yMCAxNkgxOFYxNEgyME01Ljc5IDIxLjYxTDQuMjEgMjAuMzlMMTguMjEgMi4zOUwxOS43OSAzLjYxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFiYWN1cyA9IFwiTTUgNUg3VjExSDVWNU0xMCA1SDhWMTFIMTBWNU01IDE5SDdWMTNINVYxOU0xMCAxM0g4VjE5SDEwVjE3SDE1VjE1SDEwVjEzTTIgMjFINFYzSDJWMjFNMjAgM1Y3SDEzVjVIMTFWMTFIMTNWOUgyMFYxNUgxOFYxM0gxNlYxOUgxOFYxN0gyMFYyMUgyMlYzSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFiamFkQXJhYmljID0gXCJNMTIgNEMxMC4wOCA0IDguNSA1LjU4IDguNSA3LjVDOC41IDguNDMgOC44OCA5LjI4IDkuNSA5LjkxQzcuOTcgMTAuOTEgNyAxMi42MiA3IDE0LjVDNyAxNy41MyA5LjQ3IDIwIDEyLjUgMjBDMTQuMjYgMjAgMTYgMTkuNTQgMTcuNSAxOC42NkwxNi41IDE2LjkzQzE1LjI4IDE3LjYzIDEzLjkgMTggMTIuNSAxOEMxMC41NiAxOCA5IDE2LjQ1IDkgMTQuNUM5IDEyLjkxIDEwLjA2IDExLjUzIDExLjU5IDExLjEyTDE2LjggOS43MkwxNi4yOCA3Ljc5TDExLjgzIDlDMTEuMDggOC45IDEwLjUgOC4yOCAxMC41IDcuNUMxMC41IDYuNjYgMTEuMTYgNiAxMiA2QzEyLjI2IDYgMTIuNSA2LjA3IDEyLjc1IDYuMkwxMy43NSA0LjQ3QzEzLjIyIDQuMTYgMTIuNjEgNCAxMiA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFiamFkSGVicmV3ID0gXCJNMy45IDRMOSAxMC4wM0M3LjU4IDEwLjE3IDYuMzYgMTEuMTggNiAxMi41OUw0IDIwSDYuMDdMNy45MiAxMy4xMUM4LjA5IDEyLjQ2IDguNjkgMTIgOS4zNiAxMkgxMC42OUwxNy40NyAyMEgyMC4xTDE1IDEzLjk3QzE2LjQyIDEzLjgzIDE3LjY0IDEyLjgyIDE4IDExLjQxTDIwIDRIMTcuOTNMMTYuMDggMTAuODlDMTUuOTEgMTEuNTQgMTUuMzEgMTIgMTQuNjQgMTJIMTMuMzFMNi41MyA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFidWdpZGFEZXZhbmFnYXJpID0gXCJNOCAzVjVIMTFDMTIuMzIgNSAxMy40MSA1LjgzIDEzLjgyIDdINlY5SDE0VjEwSDEyQzkuMjUgMTAgNyAxMi4yNSA3IDE1QzcgMTcuNzUgOS4yNSAyMCAxMiAyMEMxMi43NyAyMCAxMy40NSAxOS43MyAxNCAxOS4zVjIxSDE2VjE3SDE0QzEzLjU1IDE3LjYyIDEyLjgzIDE4IDEyIDE4QzEwLjMzIDE4IDkgMTYuNjcgOSAxNUM5IDEzLjMzIDEwLjMzIDEyIDEyIDEySDE2VjlIMThWN0gxNS45QzE1LjQzIDQuNzIgMTMuNDEgMyAxMSAzSDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWJ1Z2lkYVRoYWkgPSBcIk05IDIwQzkgMTcuNDQgMTAuODcgMTIuNDIgMTMuODYgNy4yNUMxNC4yOSA2LjUgMTUuMDggNiAxNiA2QzE3LjEyIDYgMTggNi44OCAxOCA4VjIwSDIwVjhDMjAgNS44IDE4LjIgNCAxNiA0QzE0LjM0IDQgMTIuOSA0LjkyIDEyLjEzIDYuMjVDMTAuNTYgOC45NiA5LjYxIDExLjE1IDkgMTMuMDNWNi41QzkgNS4xMyA3Ljg3IDQgNi41IDRDNS4xMyA0IDQgNS4xMyA0IDYuNUM0IDcuODcgNS4xMyA5IDYuNSA5QzYuNjcgOSA2Ljg0IDkgNyA4Ljk1VjIwTTYuNSA2QzYuNzkgNiA3IDYuMjEgNyA2LjVDNyA2Ljc5IDYuNzkgNyA2LjUgN0M2LjIxIDcgNiA2Ljc5IDYgNi41QzYgNi4yMSA2LjIxIDYgNi41IDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnQgPSBcIk00LjkzLDQuOTNDMy4xMiw2Ljc0IDIsOS4yNCAyLDEyQzIsMTQuNzYgMy4xMiwxNy4yNiA0LjkzLDE5LjA3TDYuMzQsMTcuNjZDNC44OSwxNi4yMiA0LDE0LjIyIDQsMTJDNCw5Ljc5IDQuODksNy43OCA2LjM0LDYuMzRMNC45Myw0LjkzTTE5LjA3LDQuOTNMMTcuNjYsNi4zNEMxOS4xMSw3Ljc4IDIwLDkuNzkgMjAsMTJDMjAsMTQuMjIgMTkuMTEsMTYuMjIgMTcuNjYsMTcuNjZMMTkuMDcsMTkuMDdDMjAuODgsMTcuMjYgMjIsMTQuNzYgMjIsMTJDMjIsOS4yNCAyMC44OCw2Ljc0IDE5LjA3LDQuOTNNNy43Niw3Ljc2QzYuNjcsOC44NSA2LDEwLjM1IDYsMTJDNiwxMy42NSA2LjY3LDE1LjE1IDcuNzYsMTYuMjRMOS4xNywxNC44M0M4LjQ1LDE0LjExIDgsMTMuMTEgOCwxMkM4LDEwLjg5IDguNDUsOS44OSA5LjE3LDkuMTdMNy43Niw3Ljc2TTE2LjI0LDcuNzZMMTQuODMsOS4xN0MxNS41NSw5Ljg5IDE2LDEwLjg5IDE2LDEyQzE2LDEzLjExIDE1LjU1LDE0LjExIDE0LjgzLDE0LjgzTDE2LjI0LDE2LjI0QzE3LjMzLDE1LjE1IDE4LDEzLjY1IDE4LDEyQzE4LDEwLjM1IDE3LjMzLDguODUgMTYuMjQsNy43Nk0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnRDaGVjayA9IFwiTTIwLjU5IDE0Ljg0TDIxLjc1IDE2LjI1TDE3IDIxTDE0LjI1IDE4TDE1LjQxIDE2Ljg0TDE3IDE4LjQzTDIwLjU5IDE0Ljg0TTE5LjA3IDQuOTNMMTcuNjYgNi4zNEMxOS4xMSA3Ljc4IDIwIDkuNzkgMjAgMTJWMTIuMzRDMjAuNjggMTIuNTkgMjEuMzMgMTIuOTYgMjEuODggMTMuNDNDMjEuOTUgMTIuOTYgMjIgMTIuNSAyMiAxMkMyMiA5LjI0IDIwLjg4IDYuNzQgMTkuMDcgNC45M00xNS45NiAxMi4zNkMxNi42IDEyLjEzIDE3LjI4IDEyIDE4IDEyQzE4IDEwLjM1IDE3LjMzIDguODUgMTYuMjQgNy43NkwxNC44MyA5LjE3QzE1LjU1IDkuODkgMTYgMTAuODkgMTYgMTJDMTYgMTIuMTIgMTUuOTcgMTIuMjQgMTUuOTYgMTIuMzZNMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyUzEwLjkgMTQgMTIgMTQgMTQgMTMuMSAxNCAxMiAxMy4xIDEwIDEyIDEwTTYuMzQgNi4zNEw0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyUzMuMTIgMTcuMjYgNC45MyAxOS4wN0w2LjM0IDE3LjY2QzQuODkgMTYuMjIgNCAxNC4yMiA0IDEyQzQgOS43OSA0Ljg5IDcuNzggNi4zNCA2LjM0TTcuNzYgNy43NkM2LjY3IDguODUgNiAxMC4zNSA2IDEyUzYuNjcgMTUuMTUgNy43NiAxNi4yNEw5LjE3IDE0LjgzQzguNDUgMTQuMTEgOCAxMy4xMSA4IDEyUzguNDUgOS44OSA5LjE3IDkuMTdMNy43NiA3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY2Vzc1BvaW50TWludXMgPSBcIk0xNiAxMkMxNiAxMC44OSAxNS41NSA5Ljg5IDE0LjgzIDkuMTdMMTYuMjQgNy43NkMxNy4zMyA4Ljg1IDE4IDEwLjM1IDE4IDEyQzE3LjI4IDEyIDE2LjYgMTIuMTMgMTUuOTYgMTIuMzZDMTUuOTcgMTIuMjQgMTYgMTIuMTIgMTYgMTJNMjAgMTIuMzRDMjAuNjggMTIuNTkgMjEuMzMgMTIuOTYgMjEuODggMTMuNDNDMjEuOTUgMTIuOTYgMjIgMTIuNSAyMiAxMkMyMiA5LjI0IDIwLjg4IDYuNzQgMTkuMDcgNC45M0wxNy42NiA2LjM0QzE5LjExIDcuNzggMjAgOS43OSAyMCAxMkMyMCAxMi4xMiAyMCAxMi4yMyAyMCAxMi4zNE0xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJTMTAuOSAxNCAxMiAxNCAxNCAxMy4xIDE0IDEyIDEzLjEgMTAgMTIgMTBNNy43NiA3Ljc2QzYuNjcgOC44NSA2IDEwLjM1IDYgMTJTNi42NyAxNS4xNSA3Ljc2IDE2LjI0TDkuMTcgMTQuODNDOC40NSAxNC4xMSA4IDEzLjExIDggMTJTOC40NSA5Ljg5IDkuMTcgOS4xN0w3Ljc2IDcuNzZNNi4zNCA2LjM0TDQuOTMgNC45M0MzLjEyIDYuNzQgMiA5LjI0IDIgMTJTMy4xMiAxNy4yNiA0LjkzIDE5LjA3TDYuMzQgMTcuNjZDNC44OSAxNi4yMiA0IDE0LjIyIDQgMTJDNCA5Ljc5IDQuODkgNy43OCA2LjM0IDYuMzRNMTQgMTlIMjJWMTdIMTRWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnROZXR3b3JrID0gXCJNNC45MywzLjkzQzMuMTIsNS43NCAyLDguMjQgMiwxMUMyLDEzLjc2IDMuMTIsMTYuMjYgNC45MywxOC4wN0w2LjM0LDE2LjY2QzQuODksMTUuMjIgNCwxMy4yMiA0LDExQzQsOC43OSA0Ljg5LDYuNzggNi4zNCw1LjM0TDQuOTMsMy45M00xOS4wNywzLjkzTDE3LjY2LDUuMzRDMTkuMTEsNi43OCAyMCw4Ljc5IDIwLDExQzIwLDEzLjIyIDE5LjExLDE1LjIyIDE3LjY2LDE2LjY2TDE5LjA3LDE4LjA3QzIwLjg4LDE2LjI2IDIyLDEzLjc2IDIyLDExQzIyLDguMjQgMjAuODgsNS43NCAxOS4wNywzLjkzTTcuNzYsNi43NkM2LjY3LDcuODUgNiw5LjM1IDYsMTFDNiwxMi42NSA2LjY3LDE0LjE1IDcuNzYsMTUuMjRMOS4xNywxMy44M0M4LjQ1LDEzLjExIDgsMTIuMTEgOCwxMUM4LDkuODkgOC40NSw4Ljg5IDkuMTcsOC4xN0w3Ljc2LDYuNzZNMTYuMjQsNi43NkwxNC44Myw4LjE3QzE1LjU1LDguODkgMTYsOS44OSAxNiwxMUMxNiwxMi4xMSAxNS41NSwxMy4xMSAxNC44MywxMy44M0wxNi4yNCwxNS4yNEMxNy4zMywxNC4xNSAxOCwxMi42NSAxOCwxMUMxOCw5LjM1IDE3LjMzLDcuODUgMTYuMjQsNi43Nk0xMiw5QTIsMiAwIDAsMCAxMCwxMUEyLDIgMCAwLDAgMTIsMTNBMiwyIDAgMCwwIDE0LDExQTIsMiAwIDAsMCAxMiw5TTExLDE1VjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1QTEsMSAwIDAsMCAxNCwxOUgxM1YxNUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2Nlc3NQb2ludE5ldHdvcmtPZmYgPSBcIk0xNC44MywxMy44M0MxNS41NSwxMy4xMSAxNiwxMi4xMSAxNiwxMUMxNiw5Ljg5IDE1LjU1LDguODkgMTQuODMsOC4xN0wxNi4yNCw2Ljc2QzE3LjMzLDcuODUgMTgsOS4zNSAxOCwxMUMxOCwxMi42NSAxNy4zMywxNC4xNSAxNi4yNCwxNS4yNEwxNC44MywxMy44M00xNCwxMUEyLDIgMCAwLDAgMTIsOUMxMS40LDkgMTAuODcsOS4yNyAxMC41LDkuNjhMMTMuMzIsMTIuNUMxMy43MywxMi4xMyAxNCwxMS42IDE0LDExTTE3LjY2LDE2LjY2TDE5LjA3LDE4LjA3QzIwLjg4LDE2LjI2IDIyLDEzLjc2IDIyLDExQzIyLDguMjQgMjAuODgsNS43NCAxOS4wNywzLjkzTDE3LjY2LDUuMzRDMTkuMTEsNi43OCAyMCw4Ljc5IDIwLDExQzIwLDEzLjIyIDE5LjExLDE1LjIyIDE3LjY2LDE2LjY2TTIyLDIxLjE4VjIwSDIwLjgyTDIyLDIxLjE4TTIwLjI3LDIyTDIxLDIyLjczTDE5LjczLDI0TDE3LjczLDIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE1LjI3TDguMzQsMTIuNjFDOC41NCwxMy4wNyA4LjgyLDEzLjUgOS4xNywxMy44M0w3Ljc2LDE1LjI0QzYuNjcsMTQuMTUgNiwxMi42NSA2LDExQzYsMTAuNzcgNiwxMC41NCA2LjA0LDEwLjMxTDQuMzcsOC42NEM0LjE0LDkuMzkgNCwxMC4xOCA0LDExQzQsMTMuMjIgNC44OSwxNS4yMiA2LjM0LDE2LjY2TDQuOTMsMTguMDdDMy4xMiwxNi4yNiAyLDEzLjc2IDIsMTFDMiw5LjYxIDIuMjksOC4yOCAyLjgxLDcuMDhMMSw1LjI3TDIuMjgsNEwzLjcsNS40Mkw1LjE1LDYuODdMNi42Myw4LjM1VjguMzVMOC4xNyw5LjlMMTAuMjgsMTJMMTEsMTIuNzFMMTguMjcsMjBIMTguMjhMMjAuMjgsMjJIMjAuMjdNMTUuNzMsMjBMMTMsMTcuMjdWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDE1LjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY2Vzc1BvaW50T2ZmID0gXCJNMjAuODQgMjIuNzNMMTIuMSAxNEMxMi4wNiAxNCAxMi4wMyAxNCAxMiAxNEMxMC45IDE0IDEwIDEzLjExIDEwIDEyQzEwIDExLjk3IDEwIDExLjk0IDEwIDExLjlMOC40IDEwLjI5QzguMTUgMTAuODEgOCAxMS4zOCA4IDEyQzggMTMuMTEgOC40NSAxNC4xMSA5LjE3IDE0LjgzTDcuNzYgMTYuMjRDNi42NyAxNS4xNSA2IDEzLjY1IDYgMTJDNiAxMC44MyA2LjM0IDkuNzQgNi45MyA4LjgyTDUuNSA3LjM3QzQuNTUgOC42NyA0IDEwLjI3IDQgMTJDNCAxNC4yMiA0Ljg5IDE2LjIyIDYuMzQgMTcuNjZMNC45MyAxOS4wN0MzLjEyIDE3LjI2IDIgMTQuNzYgMiAxMkMyIDkuNzIgMi43NyA3LjYzIDQuMDYgNS45NUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTE1LjkzIDEyLjczTDE3LjUzIDE0LjMzQzE3LjgzIDEzLjYxIDE4IDEyLjgzIDE4IDEyQzE4IDEwLjM1IDE3LjMzIDguODUgMTYuMjQgNy43NkwxNC44MyA5LjE3QzE1LjU1IDkuODkgMTYgMTAuODkgMTYgMTJDMTYgMTIuMjUgMTUuOTcgMTIuNSAxNS45MyAxMi43M00xOS4wMyAxNS44M0wyMC41IDE3LjI4QzIxLjQ0IDE1Ljc1IDIyIDEzLjk0IDIyIDEyQzIyIDkuMjQgMjAuODggNi43NCAxOS4wNyA0LjkzTDE3LjY2IDYuMzRDMTkuMTEgNy43OCAyMCA5Ljc5IDIwIDEyQzIwIDEzLjM5IDE5LjY1IDE0LjcgMTkuMDMgMTUuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjZXNzUG9pbnRQbHVzID0gXCJNMTYgMTJDMTYgMTAuODkgMTUuNTUgOS44OSAxNC44MyA5LjE3TDE2LjI0IDcuNzZDMTcuMzMgOC44NSAxOCAxMC4zNSAxOCAxMkMxNy4yOCAxMiAxNi42IDEyLjEzIDE1Ljk2IDEyLjM2QzE1Ljk3IDEyLjI0IDE2IDEyLjEyIDE2IDEyTTIwIDEyLjM0QzIwLjY4IDEyLjU5IDIxLjMzIDEyLjk2IDIxLjg4IDEzLjQzQzIxLjk1IDEyLjk2IDIyIDEyLjUgMjIgMTJDMjIgOS4yNCAyMC44OCA2Ljc0IDE5LjA3IDQuOTNMMTcuNjYgNi4zNEMxOS4xMSA3Ljc4IDIwIDkuNzkgMjAgMTJDMjAgMTIuMTIgMjAgMTIuMjMgMjAgMTIuMzRNMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyUzEwLjkgMTQgMTIgMTQgMTQgMTMuMSAxNCAxMiAxMy4xIDEwIDEyIDEwTTYuMzQgNi4zNEw0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyUzMuMTIgMTcuMjYgNC45MyAxOS4wN0w2LjM0IDE3LjY2QzQuODkgMTYuMjIgNCAxNC4yMiA0IDEyQzQgOS43OSA0Ljg5IDcuNzggNi4zNCA2LjM0TTcuNzYgNy43NkM2LjY3IDguODUgNiAxMC4zNSA2IDEyUzYuNjcgMTUuMTUgNy43NiAxNi4yNEw5LjE3IDE0LjgzQzguNDUgMTQuMTEgOCAxMy4xMSA4IDEyUzguNDUgOS44OSA5LjE3IDkuMTdMNy43NiA3Ljc2TTE5IDE0SDE3VjE3SDE0VjE5SDE3VjIySDE5VjE5SDIyVjE3SDE5VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY2Vzc1BvaW50UmVtb3ZlID0gXCJNMTYgMTJDMTYgMTAuODkgMTUuNTUgOS44OSAxNC44MyA5LjE3TDE2LjI0IDcuNzZDMTcuMzMgOC44NSAxOCAxMC4zNSAxOCAxMkMxNy4yOCAxMiAxNi42IDEyLjEzIDE1Ljk2IDEyLjM2QzE1Ljk3IDEyLjI0IDE2IDEyLjEyIDE2IDEyTTYuMzQgNi4zNEw0LjkzIDQuOTNDMy4xMiA2Ljc0IDIgOS4yNCAyIDEyUzMuMTIgMTcuMjYgNC45MyAxOS4wN0w2LjM0IDE3LjY2QzQuODkgMTYuMjIgNCAxNC4yMiA0IDEyQzQgOS43OSA0Ljg5IDcuNzggNi4zNCA2LjM0TTE5LjA3IDQuOTNMMTcuNjYgNi4zNEMxOS4xMSA3Ljc4IDIwIDkuNzkgMjAgMTJDMjAgMTIuMTIgMjAgMTIuMjMgMjAgMTIuMzRDMjAuNjggMTIuNTkgMjEuMzMgMTIuOTYgMjEuODggMTMuNDNDMjEuOTUgMTIuOTYgMjIgMTIuNSAyMiAxMkMyMiA5LjI0IDIwLjg4IDYuNzQgMTkuMDcgNC45M00xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJTMTAuOSAxNCAxMiAxNCAxNCAxMy4xIDE0IDEyIDEzLjEgMTAgMTIgMTBNNy43NiA3Ljc2QzYuNjcgOC44NSA2IDEwLjM1IDYgMTJTNi42NyAxNS4xNSA3Ljc2IDE2LjI0TDkuMTcgMTQuODNDOC40NSAxNC4xMSA4IDEzLjExIDggMTJTOC40NSA5Ljg5IDkuMTcgOS4xN0w3Ljc2IDcuNzZNMjAuMTIgMTQuNDZMMTggMTYuNTlMMTUuODggMTQuNDdMMTQuNDcgMTUuODhMMTYuNTkgMThMMTQuNDcgMjAuMTJMMTUuODggMjEuNTNMMTggMTkuNDFMMjAuMTIgMjEuNTNMMjEuNTMgMjAuMTJMMTkuNDEgMThMMjEuNTMgMTUuODhMMjAuMTIgMTQuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudCA9IFwiTTEyLDRBNCw0IDAgMCwxIDE2LDhBNCw0IDAgMCwxIDEyLDEyQTQsNCAwIDAsMSA4LDhBNCw0IDAgMCwxIDEyLDRNMTIsMTRDMTYuNDIsMTQgMjAsMTUuNzkgMjAsMThWMjBINFYxOEM0LDE1Ljc5IDcuNTgsMTQgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEFsZXJ0ID0gXCJNMTAgNEE0IDQgMCAwIDEgMTQgOEE0IDQgMCAwIDEgMTAgMTJBNCA0IDAgMCAxIDYgOEE0IDQgMCAwIDEgMTAgNE0xMCAxNEMxNC40MiAxNCAxOCAxNS43OSAxOCAxOFYyMEgyVjE4QzIgMTUuNzkgNS41OCAxNCAxMCAxNE0yMCAxMlY3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBbGVydE91dGxpbmUgPSBcIk0yMCAxMlY3SDIyVjEzSDIwTTIwIDE3SDIyVjE1SDIwTTEwIDEzQzEyLjY3IDEzIDE4IDE0LjM0IDE4IDE3VjIwSDJWMTdDMiAxNC4zNCA3LjMzIDEzIDEwIDEzTTEwIDRBNCA0IDAgMCAxIDE0IDhBNCA0IDAgMCAxIDEwIDEyQTQgNCAwIDAgMSA2IDhBNCA0IDAgMCAxIDEwIDRNMTAgMTQuOUM3LjAzIDE0LjkgMy45IDE2LjM2IDMuOSAxN1YxOC4xSDE2LjFWMTdDMTYuMSAxNi4zNiAxMi45NyAxNC45IDEwIDE0LjlNMTAgNS45QTIuMSAyLjEgMCAwIDAgNy45IDhBMi4xIDIuMSAwIDAgMCAxMCAxMC4xQTIuMSAyLjEgMCAwIDAgMTIuMSA4QTIuMSAyLjEgMCAwIDAgMTAgNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBcnJvd0xlZnQgPSBcIk0xOCwyMUwxNSwxOEwxOCwxNVYxN0gyMlYxOUgxOFYyMU0xMCw0QTQsNCAwIDAsMSAxNCw4QTQsNCAwIDAsMSAxMCwxMkE0LDQgMCAwLDEgNiw4QTQsNCAwIDAsMSAxMCw0TTEwLDE0QzExLjE1LDE0IDEyLjI1LDE0LjEyIDEzLjI0LDE0LjM0QzEyLjQ2LDE1LjM1IDEyLDE2LjYyIDEyLDE4QzEyLDE4LjcgMTIuMTIsMTkuMzcgMTIuMzQsMjBIMlYxOEMyLDE1Ljc5IDUuNTgsMTQgMTAsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEFycm93TGVmdE91dGxpbmUgPSBcIk0xOCwyMUwxNSwxOEwxOCwxNVYxN0gyMlYxOUgxOFYyMU0xMywxOEMxMywxOC43MSAxMy4xNSwxOS4zOSAxMy40MiwyMEgyVjE3QzIsMTQuNzkgNS41OCwxMyAxMCwxM0MxMSwxMyAxMS45NiwxMy4wOSAxMi44NSwxMy4yNkMxMy42OCwxMy40MiAxNC40NCwxMy42NCAxNS4xMSwxMy45MkMxMy44MywxNC44MyAxMywxNi4zMiAxMywxOE00LDE3VjE4SDExQzExLDE2Ljk2IDExLjIzLDE1Ljk3IDExLjY0LDE1LjA4TDEwLDE1QzYuNjksMTUgNCwxNS45IDQsMTdNMTAsNEE0LDQgMCAwLDEgMTQsOEE0LDQgMCAwLDEgMTAsMTJBNCw0IDAgMCwxIDYsOEE0LDQgMCAwLDEgMTAsNE0xMCw2QTIsMiAwIDAsMCA4LDhBMiwyIDAgMCwwIDEwLDEwQTIsMiAwIDAsMCAxMiw4QTIsMiAwIDAsMCAxMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBcnJvd1JpZ2h0ID0gXCJNMTksMjFWMTlIMTVWMTdIMTlWMTVMMjIsMThMMTksMjFNMTAsNEE0LDQgMCAwLDEgMTQsOEE0LDQgMCAwLDEgMTAsMTJBNCw0IDAgMCwxIDYsOEE0LDQgMCAwLDEgMTAsNE0xMCwxNEMxMS4xNSwxNCAxMi4yNSwxNC4xMiAxMy4yNCwxNC4zNEMxMi40NiwxNS4zNSAxMiwxNi42MiAxMiwxOEMxMiwxOC43IDEyLjEyLDE5LjM3IDEyLjM0LDIwSDJWMThDMiwxNS43OSA1LjU4LDE0IDEwLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRBcnJvd1JpZ2h0T3V0bGluZSA9IFwiTTE5LDIxVjE5SDE1VjE3SDE5VjE1TDIyLDE4TDE5LDIxTTEzLDE4QzEzLDE4LjcxIDEzLjE1LDE5LjM5IDEzLjQyLDIwSDJWMTdDMiwxNC43OSA1LjU4LDEzIDEwLDEzQzExLDEzIDExLjk2LDEzLjA5IDEyLjg1LDEzLjI2QzEzLjY4LDEzLjQyIDE0LjQ0LDEzLjY0IDE1LjExLDEzLjkyQzEzLjgzLDE0LjgzIDEzLDE2LjMyIDEzLDE4TTQsMTdWMThIMTFDMTEsMTYuOTYgMTEuMjMsMTUuOTcgMTEuNjQsMTUuMDhMMTAsMTVDNi42OSwxNSA0LDE1LjkgNCwxN00xMCw0QTQsNCAwIDAsMSAxNCw4QTQsNCAwIDAsMSAxMCwxMkE0LDQgMCAwLDEgNiw4QTQsNCAwIDAsMSAxMCw0TTEwLDZBMiwyIDAgMCwwIDgsOEEyLDIgMCAwLDAgMTAsMTBBMiwyIDAgMCwwIDEyLDhBMiwyIDAgMCwwIDEwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEJveCA9IFwiTTYsMTdDNiwxNSAxMCwxMy45IDEyLDEzLjlDMTQsMTMuOSAxOCwxNSAxOCwxN1YxOEg2TTE1LDlBMywzIDAgMCwxIDEyLDEyQTMsMyAwIDAsMSA5LDlBMywzIDAgMCwxIDEyLDZBMywzIDAgMCwxIDE1LDlNMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVDMy44OSwzIDMsMy45IDMsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Qm94TXVsdGlwbGUgPSBcIk00LDZIMlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZNMjAsMkEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIOEEyLDIgMCAwLDEgNiwxNlY0QTIsMiAwIDAsMSA4LDJIMjBNMTcsN0EzLDMgMCAwLDAgMTQsNEEzLDMgMCAwLDAgMTEsN0EzLDMgMCAwLDAgMTQsMTBBMywzIDAgMCwwIDE3LDdNOCwxNVYxNkgyMFYxNUMyMCwxMyAxNiwxMS45IDE0LDExLjlDMTIsMTEuOSA4LDEzIDgsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEJveE11bHRpcGxlT3V0bGluZSA9IFwiTTQgNkgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMThWMjBINFY2TTE4LjUgMTQuMjVDMTguNSAxMi43NSAxNS41IDEyIDE0IDEyUzkuNSAxMi43NSA5LjUgMTQuMjVWMTVIMTguNU0xNCAxMC4yNUMxNS4yNCAxMC4yNSAxNi4yNSA5LjI0IDE2LjI1IDhTMTUuMjQgNS43NSAxNCA1Ljc1IDExLjc1IDYuNzYgMTEuNzUgOCAxMi43NiAxMC4yNSAxNCAxMC4yNU0yMCAySDhDNi45IDIgNiAyLjkgNiA0VjE2QzYgMTcuMTEgNi45IDE4IDggMThIMjBDMjEuMTEgMTggMjIgMTcuMTEgMjIgMTZWNEMyMiAyLjg5IDIxLjEgMiAyMCAyTTIwIDE2SDhWNEgyMFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Qm94T3V0bGluZSA9IFwiTTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzTTE2LjUsMTYuMjVDMTYuNSwxNC43NSAxMy41LDE0IDEyLDE0QzEwLjUsMTQgNy41LDE0Ljc1IDcuNSwxNi4yNVYxN0gxNi41TTEyLDEyLjI1QTIuMjUsMi4yNSAwIDAsMCAxNC4yNSwxMEEyLjI1LDIuMjUgMCAwLDAgMTIsNy43NUEyLjI1LDIuMjUgMCAwLDAgOS43NSwxMEEyLjI1LDIuMjUgMCAwLDAgMTIsMTIuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENhbmNlbCA9IFwiTTEwIDRBNCA0IDAgMCAwIDYgOEE0IDQgMCAwIDAgMTAgMTJBNCA0IDAgMCAwIDE0IDhBNCA0IDAgMCAwIDEwIDRNMTcuNSAxM0MxNSAxMyAxMyAxNSAxMyAxNy41QzEzIDIwIDE1IDIyIDE3LjUgMjJDMjAgMjIgMjIgMjAgMjIgMTcuNUMyMiAxNSAyMCAxMyAxNy41IDEzTTEwIDE0QzUuNTggMTQgMiAxNS43OSAyIDE4VjIwSDExLjVBNi41IDYuNSAwIDAgMSAxMSAxNy41QTYuNSA2LjUgMCAwIDEgMTEuOTUgMTQuMTRDMTEuMzIgMTQuMDYgMTAuNjggMTQgMTAgMTRNMTcuNSAxNC41QzE5LjE2IDE0LjUgMjAuNSAxNS44NCAyMC41IDE3LjVDMjAuNSAxOC4wNiAyMC4zNSAxOC41OCAyMC4wOCAxOUwxNiAxNC45MkMxNi40MiAxNC42NSAxNi45NCAxNC41IDE3LjUgMTQuNU0xNC45MiAxNkwxOSAyMC4wOEMxOC41OCAyMC4zNSAxOC4wNiAyMC41IDE3LjUgMjAuNUMxNS44NCAyMC41IDE0LjUgMTkuMTYgMTQuNSAxNy41QzE0LjUgMTYuOTQgMTQuNjUgMTYuNDIgMTQuOTIgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENhbmNlbE91dGxpbmUgPSBcIk0xMCA0QTQgNCAwIDAgMCA2IDhBNCA0IDAgMCAwIDEwIDEyQTQgNCAwIDAgMCAxNCA4QTQgNCAwIDAgMCAxMCA0TTEwIDZBMiAyIDAgMCAxIDEyIDhBMiAyIDAgMCAxIDEwIDEwQTIgMiAwIDAgMSA4IDhBMiAyIDAgMCAxIDEwIDZNMTAgMTNDNy4zMyAxMyAyIDE0LjMzIDIgMTdWMjBIMTEuNUE2LjUgNi41IDAgMCAxIDExLjAzIDE4LjFIMy45VjE3QzMuOSAxNi4zNiA3LjAzIDE0LjkgMTAgMTQuOUMxMC41IDE0LjkgMTEgMTQuOTUgMTEuNSAxNS4wM0E2LjUgNi41IDAgMCAxIDEyLjU1IDEzLjI5QzExLjYxIDEzLjEgMTAuNzEgMTMgMTAgMTNNMTcuNSAxM0MxNSAxMyAxMyAxNSAxMyAxNy41QzEzIDIwIDE1IDIyIDE3LjUgMjJDMjAgMjIgMjIgMjAgMjIgMTcuNUMyMiAxNSAyMCAxMyAxNy41IDEzTTE3LjUgMTQuNUMxOS4xNiAxNC41IDIwLjUgMTUuODQgMjAuNSAxNy41QzIwLjUgMTguMDYgMjAuMzUgMTguNTggMjAuMDggMTlMMTYgMTQuOTJDMTYuNDIgMTQuNjUgMTYuOTQgMTQuNSAxNy41IDE0LjVNMTQuOTIgMTZMMTkgMjAuMDhDMTguNTggMjAuMzUgMTguMDYgMjAuNSAxNy41IDIwLjVDMTUuODQgMjAuNSAxNC41IDE5LjE2IDE0LjUgMTcuNUMxNC41IDE2Ljk0IDE0LjY1IDE2LjQyIDE0LjkyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDYXNoID0gXCJNMTEgOEMxMSAxMC4yMSA5LjIxIDEyIDcgMTJDNC43OSAxMiAzIDEwLjIxIDMgOEMzIDUuNzkgNC43OSA0IDcgNEM5LjIxIDQgMTEgNS43OSAxMSA4TTExIDE0LjcyVjIwSDBWMThDMCAxNS43OSAzLjEzIDE0IDcgMTRDOC41IDE0IDkuODcgMTQuMjcgMTEgMTQuNzJNMjQgMjBIMTNWM0gyNFYyME0xNiAxMS41QzE2IDEwLjEyIDE3LjEyIDkgMTguNSA5QzE5Ljg4IDkgMjEgMTAuMTIgMjEgMTEuNUMyMSAxMi44OCAxOS44OCAxNCAxOC41IDE0QzE3LjEyIDE0IDE2IDEyLjg4IDE2IDExLjVNMjIgN0MyMC45IDcgMjAgNi4xMSAyMCA1SDE3QzE3IDYuMTEgMTYuMTEgNyAxNSA3VjE2QzE2LjExIDE2IDE3IDE2LjkgMTcgMThIMjBDMjAgMTYuOSAyMC45IDE2IDIyIDE2VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENhc2hPdXRsaW5lID0gXCJNMTYgMTEuNUMxNiAxMC4xMiAxNy4xMiA5IDE4LjUgOVMyMSAxMC4xMiAyMSAxMS41IDE5Ljg4IDE0IDE4LjUgMTQgMTYgMTIuODggMTYgMTEuNU0xMyAzVjIwSDI0VjNIMTNNMjIgMTZDMjAuOSAxNiAyMCAxNi45IDIwIDE4SDE3QzE3IDE2LjkgMTYuMTEgMTYgMTUgMTZWN0MxNi4xMSA3IDE3IDYuMTEgMTcgNUgyMEMyMCA2LjExIDIwLjkgNyAyMiA3VjE2TTcgNkM4LjEgNiA5IDYuOSA5IDhTOC4xIDEwIDcgMTAgNSA5LjEgNSA4IDUuOSA2IDcgNk03IDRDNC43OSA0IDMgNS43OSAzIDhTNC43OSAxMiA3IDEyIDExIDEwLjIxIDExIDggOS4yMSA0IDcgNE03IDE0QzMuMTMgMTQgMCAxNS43OSAwIDE4VjIwSDExVjE4SDJDMiAxNy40MiAzLjc1IDE2IDcgMTZDOC44MyAxNiAxMC4xNyAxNi40NSAxMSAxNi45NVYxNC43MkM5Ljg3IDE0LjI3IDguNSAxNCA3IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaGVjayA9IFwiTTIxLjEsMTIuNUwyMi41LDEzLjkxTDE1Ljk3LDIwLjVMMTIuNSwxN0wxMy45LDE1LjU5TDE1Ljk3LDE3LjY3TDIxLjEsMTIuNU0xMCwxN0wxMywyMEgzVjE4QzMsMTUuNzkgNi41OCwxNCAxMSwxNEwxMi44OSwxNC4xMUwxMCwxN00xMSw0QTQsNCAwIDAsMSAxNSw4QTQsNCAwIDAsMSAxMSwxMkE0LDQgMCAwLDEgNyw4QTQsNCAwIDAsMSAxMSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaGVja091dGxpbmUgPSBcIk0yMS4xLDEyLjVMMjIuNSwxMy45MUwxNS45NywyMC41TDEyLjUsMTdMMTMuOSwxNS41OUwxNS45NywxNy42N0wyMS4xLDEyLjVNMTEsNEE0LDQgMCAwLDEgMTUsOEE0LDQgMCAwLDEgMTEsMTJBNCw0IDAgMCwxIDcsOEE0LDQgMCAwLDEgMTEsNE0xMSw2QTIsMiAwIDAsMCA5LDhBMiwyIDAgMCwwIDExLDEwQTIsMiAwIDAsMCAxMyw4QTIsMiAwIDAsMCAxMSw2TTExLDEzQzExLjY4LDEzIDEyLjUsMTMuMDkgMTMuNDEsMTMuMjZMMTEuNzQsMTQuOTNMMTEsMTQuOUM4LjAzLDE0LjkgNC45LDE2LjM2IDQuOSwxN1YxOC4xSDExLjFMMTMsMjBIM1YxN0MzLDE0LjM0IDguMzMsMTMgMTEsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENoaWxkID0gXCJNMTIsMkEzLDMgMCAwLDEgMTUsNUEzLDMgMCAwLDEgMTIsOEEzLDMgMCAwLDEgOSw1QTMsMyAwIDAsMSAxMiwyTTEyLDlDMTMuNjMsOSAxNS4xMiw5LjM1IDE2LjUsMTAuMDVDMTcuODQsMTAuNzYgMTguNSwxMS42MSAxOC41LDEyLjYxVjE4LjM4QzE4LjUsMTkuNSAxNy42NCwyMC40NCAxNS44OSwyMS4xOVYxOUMxNS44OSwxOC4wNSAxNS4wMywxNy4zOCAxMy4zMSwxNi45N0MxMi43NSwxNi44NCAxMi4zMSwxNi43OCAxMiwxNi43OEMxMS4xMywxNi43OCAxMC4zLDE2Ljk1IDkuNTQsMTcuM0M4Ljc3LDE3LjY0IDguMzEsMTguMDggOC4xNiwxOC42MUM5LjUsMTkuMTQgMTAuNzgsMTkuNDEgMTIsMTkuNDFMMTMsMTkuMzFWMjEuOTRMMTIsMjJDMTAuNjMsMjIgOS4zMywyMS43MiA4LjExLDIxLjE5QzYuMzYsMjAuNDQgNS41LDE5LjUgNS41LDE4LjM4VjEyLjYxQzUuNSwxMS42MSA2LjE2LDEwLjc2IDcuNSwxMC4wNUM4Ljg4LDkuMzUgMTAuMzgsOSAxMiw5TTEyLDExQTIsMiAwIDAsMCAxMCwxM0EyLDIgMCAwLDAgMTIsMTVBMiwyIDAgMCwwIDE0LDEzQTIsMiAwIDAsMCAxMiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Q2hpbGRDaXJjbGUgPSBcIk0xMiwxMkExLjUsMS41IDAgMCwxIDEzLjUsMTMuNUExLjUsMS41IDAgMCwxIDEyLDE1QTEuNSwxLjUgMCAwLDEgMTAuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTIsMTJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsMTZDMTIuNzIsMTYgMTMuNCwxNi4xNSAxNC4wNCwxNi41QzE0LjY4LDE2LjggMTUsMTcuMiAxNSwxNy42N1YxOS40MUMxNi4zNCwxOC44MSAxNywxOC4wOCAxNywxNy4yVjEyLjhDMTcsMTIgMTYuNSwxMS4zNSAxNS40NSwxMC44QzE0LjQsMTAuMjYgMTMuMjUsMTAgMTIsMTBDMTAuNzUsMTAgOS42LDEwLjI2IDguNTUsMTAuOEM3LjUsMTEuMzUgNywxMiA3LDEyLjhWMTcuMkM3LDE4IDcuNTMsMTguNjkgOC42MywxOS4yMkM5LjcyLDE5Ljc1IDEwLjg0LDIwIDEyLDIwTDEzLDE5LjkyVjE3LjkxTDEyLDE4QzExLDE4IDEwLDE3LjggOS4wNSwxNy4zOUM5LjE3LDE3IDkuNTMsMTYuNjkgMTAuMTMsMTYuNDFDMTAuNzIsMTYuMTMgMTEuMzQsMTYgMTIsMTZNMTIsNEEyLjUsMi41IDAgMCwwIDkuNSw2LjVBMi41LDIuNSAwIDAsMCAxMiw5QTIuNSwyLjUgMCAwLDAgMTQuNSw2LjVBMi41LDIuNSAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaGlsZE91dGxpbmUgPSBcIk0xMiAxN0MxMC45IDE3IDEwIDE2LjEgMTAgMTVDMTAgMTMuOSAxMC45IDEzIDEyIDEzQzEzLjEgMTMgMTQgMTMuOSAxNCAxNUMxNCAxNi4xIDEzLjEgMTcgMTIgMTdNMTIgMTBDMTQuMzQgMTAgMTkgMTEuMTYgMTkgMTMuNVYxOC42M0MxOSAxOS41IDE4LjMxIDIwLjI0IDE3LjM0IDIwLjc5VjEzLjM4QzE3LjM0IDEyLjgyIDE0LjYgMTEuNTQgMTIgMTEuNTRDOS40IDExLjU0IDYuNjYgMTIuODIgNi42NiAxMy4zOFYxOC43NUM2LjY2IDE5IDcuMzEgMTkuNDYgOC4yOCAxOS44NUM5IDE5IDEwLjkzIDE4LjU2IDEyIDE4LjU2QzEzLjMzIDE4LjU2IDE2IDE5LjIyIDE2IDIwLjU2VjIxLjM5QzE0LjYzIDIxLjg4IDEzLjA3IDIyLjEzIDEyIDIyLjEzQzEwLjkzIDIyLjEzIDkuMzggMjEuODggOCAyMS4zOUg4QzYuMzcgMjAuODEgNSAxOS44OSA1IDE4LjYzVjEzLjVDNSAxMS4xNiA5LjY2IDEwIDEyIDEwTTEyIDMuNzVDMTEuMDMgMy43NSAxMC4yNSA0LjUzIDEwLjI1IDUuNUMxMC4yNSA2LjQ3IDExLjAzIDcuMjUgMTIgNy4yNUMxMi45NyA3LjI1IDEzLjc1IDYuNDcgMTMuNzUgNS41QzEzLjc1IDQuNTMgMTIuOTcgMy43NSAxMiAzLjc1TTEyIDlDMTAuMDcgOSA4LjUgNy40MyA4LjUgNS41QzguNSAzLjU3IDEwLjA3IDIgMTIgMkMxMy45MyAyIDE1LjUgMy41NyAxNS41IDUuNUMxNS41IDcuNDMgMTMuOTMgOSAxMiA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDaXJjbGUgPSBcIk0xMiwxOS4yQzkuNSwxOS4yIDcuMjksMTcuOTIgNiwxNkM2LjAzLDE0IDEwLDEyLjkgMTIsMTIuOUMxNCwxMi45IDE3Ljk3LDE0IDE4LDE2QzE2LjcxLDE3LjkyIDE0LjUsMTkuMiAxMiwxOS4yTTEyLDVBMywzIDAgMCwxIDE1LDhBMywzIDAgMCwxIDEyLDExQTMsMyAwIDAsMSA5LDhBMywzIDAgMCwxIDEyLDVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk03LjA3LDE4LjI4QzcuNSwxNy4zOCAxMC4xMiwxNi41IDEyLDE2LjVDMTMuODgsMTYuNSAxNi41LDE3LjM4IDE2LjkzLDE4LjI4QzE1LjU3LDE5LjM2IDEzLjg2LDIwIDEyLDIwQzEwLjE0LDIwIDguNDMsMTkuMzYgNy4wNywxOC4yOE0xOC4zNiwxNi44M0MxNi45MywxNS4wOSAxMy40NiwxNC41IDEyLDE0LjVDMTAuNTQsMTQuNSA3LjA3LDE1LjA5IDUuNjQsMTYuODNDNC42MiwxNS41IDQsMTMuODIgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDEzLjgyIDE5LjM4LDE1LjUgMTguMzYsMTYuODNNMTIsNkMxMC4wNiw2IDguNSw3LjU2IDguNSw5LjVDOC41LDExLjQ0IDEwLjA2LDEzIDEyLDEzQzEzLjk0LDEzIDE1LjUsMTEuNDQgMTUuNSw5LjVDMTUuNSw3LjU2IDEzLjk0LDYgMTIsNk0xMiwxMUExLjUsMS41IDAgMCwxIDEwLjUsOS41QTEuNSwxLjUgMCAwLDEgMTIsOEExLjUsMS41IDAgMCwxIDEzLjUsOS41QTEuNSwxLjUgMCAwLDEgMTIsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENsb2NrID0gXCJNMTAuNjMsMTQuMUMxMi4yMywxMC41OCAxNi4zOCw5LjAzIDE5LjksMTAuNjNDMjMuNDIsMTIuMjMgMjQuOTcsMTYuMzggMjMuMzcsMTkuOUMyMi4yNCwyMi40IDE5Ljc1LDI0IDE3LDI0QzE0LjMsMjQgMTEuODMsMjIuNDQgMTAuNjcsMjBIMVYxOEMxLjA2LDE2Ljg2IDEuODQsMTUuOTMgMy4zNCwxNS4xOEM0Ljg0LDE0LjQzIDYuNzIsMTQuMDQgOSwxNEM5LjU3LDE0IDEwLjExLDE0LjA1IDEwLjYzLDE0LjFWMTQuMU05LDRDMTAuMTIsNC4wMyAxMS4wNiw0LjQyIDExLjgxLDUuMTdDMTIuNTYsNS45MiAxMi45Myw2Ljg2IDEyLjkzLDhDMTIuOTMsOS4xNCAxMi41NiwxMC4wOCAxMS44MSwxMC44M0MxMS4wNiwxMS41OCAxMC4xMiwxMS45NSA5LDExLjk1QzcuODgsMTEuOTUgNi45NCwxMS41OCA2LjE5LDEwLjgzQzUuNDQsMTAuMDggNS4wNyw5LjE0IDUuMDcsOEM1LjA3LDYuODYgNS40NCw1LjkyIDYuMTksNS4xN0M2Ljk0LDQuNDIgNy44OCw0LjAzIDksNE0xNywyMkE1LDUgMCAwLDAgMjIsMTdBNSw1IDAgMCwwIDE3LDEyQTUsNSAwIDAsMCAxMiwxN0E1LDUgMCAwLDAgMTcsMjJNMTYsMTRIMTcuNVYxNi44MkwxOS45NCwxOC4yM0wxOS4xOSwxOS41M0wxNiwxNy42OVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Q2xvY2tPdXRsaW5lID0gXCJNMTYsMTRIMTcuNVYxNi44MkwxOS45NCwxOC4yM0wxOS4xOSwxOS41M0wxNiwxNy42OVYxNE0xNywxMkE1LDUgMCAwLDAgMTIsMTdBNSw1IDAgMCwwIDE3LDIyQTUsNSAwIDAsMCAyMiwxN0E1LDUgMCAwLDAgMTcsMTJNMTcsMTBBNyw3IDAgMCwxIDI0LDE3QTcsNyAwIDAsMSAxNywyNEMxNC4yMSwyNCAxMS44LDIyLjM2IDEwLjY3LDIwSDFWMTdDMSwxNC4zNCA2LjMzLDEzIDksMTNDOS42LDEzIDEwLjM0LDEzLjA3IDExLjEyLDEzLjJDMTIuMzYsMTEuMjggMTQuNTMsMTAgMTcsMTBNMTAsMTdDMTAsMTYuMyAxMC4xLDE1LjYyIDEwLjI5LDE1QzkuODcsMTQuOTMgOS40MywxNC45IDksMTQuOUM2LjAzLDE0LjkgMi45LDE2LjM2IDIuOSwxN1YxOC4xSDEwLjA5QzEwLjAzLDE3Ljc0IDEwLDE3LjM3IDEwLDE3TTksNEE0LDQgMCAwLDEgMTMsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSw4QTQsNCAwIDAsMSA5LDRNOSw1LjlBMi4xLDIuMSAwIDAsMCA2LjksOEEyLjEsMi4xIDAgMCwwIDksMTAuMUEyLjEsMi4xIDAgMCwwIDExLjEsOEEyLjEsMi4xIDAgMCwwIDksNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDb2cgPSBcIk0xMCA0QTQgNCAwIDAgMCA2IDhBNCA0IDAgMCAwIDEwIDEyQTQgNCAwIDAgMCAxNCA4QTQgNCAwIDAgMCAxMCA0TTE3IDEyQzE2Ljg3IDEyIDE2Ljc2IDEyLjA5IDE2Ljc0IDEyLjIxTDE2LjU1IDEzLjUzQzE2LjI1IDEzLjY2IDE1Ljk2IDEzLjgyIDE1LjcgMTRMMTQuNDYgMTMuNUMxNC4zNSAxMy41IDE0LjIyIDEzLjUgMTQuMTUgMTMuNjNMMTMuMTUgMTUuMzZDMTMuMDkgMTUuNDcgMTMuMTEgMTUuNiAxMy4yMSAxNS42OEwxNC4yNyAxNi41QzE0LjI1IDE2LjY3IDE0LjI0IDE2LjgzIDE0LjI0IDE3QzE0LjI0IDE3LjE3IDE0LjI1IDE3LjMzIDE0LjI3IDE3LjVMMTMuMjEgMTguMzJDMTMuMTIgMTguNCAxMy4wOSAxOC41MyAxMy4xNSAxOC42NEwxNC4xNSAyMC4zN0MxNC4yMSAyMC41IDE0LjM0IDIwLjUgMTQuNDYgMjAuNUwxNS43IDIwQzE1Ljk2IDIwLjE4IDE2LjI0IDIwLjM1IDE2LjU1IDIwLjQ3TDE2Ljc0IDIxLjc5QzE2Ljc2IDIxLjkxIDE2Ljg2IDIyIDE3IDIySDE5QzE5LjExIDIyIDE5LjIyIDIxLjkxIDE5LjI0IDIxLjc5TDE5LjQzIDIwLjQ3QzE5LjczIDIwLjM0IDIwIDIwLjE4IDIwLjI3IDIwTDIxLjUgMjAuNUMyMS42MyAyMC41IDIxLjc2IDIwLjUgMjEuODMgMjAuMzdMMjIuODMgMTguNjRDMjIuODkgMTguNTMgMjIuODYgMTguNCAyMi43NyAxOC4zMkwyMS43IDE3LjVDMjEuNzIgMTcuMzMgMjEuNzQgMTcuMTcgMjEuNzQgMTdDMjEuNzQgMTYuODMgMjEuNzMgMTYuNjcgMjEuNyAxNi41TDIyLjc2IDE1LjY4QzIyLjg1IDE1LjYgMjIuODggMTUuNDcgMjIuODIgMTUuMzZMMjEuODIgMTMuNjNDMjEuNzYgMTMuNSAyMS42MyAxMy41IDIxLjUgMTMuNUwyMC4yNyAxNEMyMCAxMy44MiAxOS43MyAxMy42NSAxOS40MiAxMy41M0wxOS4yMyAxMi4yMUMxOS4yMiAxMi4wOSAxOS4xMSAxMiAxOSAxMkgxN00xMCAxNEM1LjU4IDE0IDIgMTUuNzkgMiAxOFYyMEgxMS42OEE3IDcgMCAwIDEgMTEgMTdBNyA3IDAgMCAxIDExLjY0IDE0LjA5QzExLjExIDE0LjAzIDEwLjU2IDE0IDEwIDE0TTE4IDE1LjVDMTguODMgMTUuNSAxOS41IDE2LjE3IDE5LjUgMTdDMTkuNSAxNy44MyAxOC44MyAxOC41IDE4IDE4LjVDMTcuMTYgMTguNSAxNi41IDE3LjgzIDE2LjUgMTdDMTYuNSAxNi4xNyAxNy4xNyAxNS41IDE4IDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudENvZ091dGxpbmUgPSBcIk0xMCA0QTQgNCAwIDAgMCA2IDhBNCA0IDAgMCAwIDEwIDEyQTQgNCAwIDAgMCAxNCA4QTQgNCAwIDAgMCAxMCA0TTEwIDZBMiAyIDAgMCAxIDEyIDhBMiAyIDAgMCAxIDEwIDEwQTIgMiAwIDAgMSA4IDhBMiAyIDAgMCAxIDEwIDZNMTcgMTJDMTYuODQgMTIgMTYuNzYgMTIuMDggMTYuNzYgMTIuMjRMMTYuNSAxMy41QzE2LjI4IDEzLjY4IDE1Ljk2IDEzLjg0IDE1LjcyIDE0TDE0LjQ0IDEzLjVDMTQuMzYgMTMuNSAxNC4yIDEzLjUgMTQuMTIgMTMuNkwxMy4xNiAxNS4zNkMxMy4wOCAxNS40NCAxMy4wOCAxNS42IDEzLjI0IDE1LjY4TDE0LjI4IDE2LjVWMTcuNUwxMy4yNCAxOC4zMkMxMy4xNiAxOC40IDEzLjA4IDE4LjU2IDEzLjE2IDE4LjY0TDE0LjEyIDIwLjRDMTQuMiAyMC41IDE0LjM2IDIwLjUgMTQuNDQgMjAuNUwxNS43MiAyMEMxNS45NiAyMC4xNiAxNi4yOCAyMC4zMiAxNi41IDIwLjVMMTYuNzYgMjEuNzZDMTYuNzYgMjEuOTIgMTYuODQgMjIgMTcgMjJIMTlDMTkuMDggMjIgMTkuMjQgMjEuOTIgMTkuMjQgMjEuNzZMMTkuNCAyMC41QzE5LjcyIDIwLjMyIDIwLjA0IDIwLjE2IDIwLjI4IDIwTDIxLjUgMjAuNUMyMS42NCAyMC41IDIxLjggMjAuNSAyMS44IDIwLjRMMjIuODQgMTguNjRDMjIuOTIgMTguNTYgMjIuODQgMTguNCAyMi43NiAxOC4zMkwyMS43MiAxNy41VjE2LjVMMjIuNzYgMTUuNjhDMjIuODQgMTUuNiAyMi45MiAxNS40NCAyMi44NCAxNS4zNkwyMS44IDEzLjZDMjEuOCAxMy41IDIxLjY0IDEzLjUgMjEuNSAxMy41TDIwLjI4IDE0QzIwLjA0IDEzLjg0IDE5LjcyIDEzLjY4IDE5LjQgMTMuNUwxOS4yNCAxMi4yNEMxOS4yNCAxMi4wOCAxOS4wOCAxMiAxOSAxMkgxN00xMCAxM0M3LjMzIDEzIDIgMTQuMzMgMiAxN1YyMEgxMS42N0MxMS4zOSAxOS40MSAxMS4xOSAxOC43NyAxMS4wOSAxOC4xSDMuOVYxN0MzLjkgMTYuMzYgNy4wMyAxNC45IDEwIDE0LjlDMTAuNDMgMTQuOSAxMC44NyAxNC45NCAxMS4zIDE1QzExLjUgMTQuMzYgMTEuNzcgMTMuNzYgMTIuMTIgMTMuMjFDMTEuMzQgMTMuMDggMTAuNiAxMyAxMCAxM00xOC4wNCAxNS41QzE4Ljg0IDE1LjUgMTkuNSAxNi4xNiAxOS41IDE3LjA0QzE5LjUgMTcuODQgMTguODQgMTguNSAxOC4wNCAxOC41QzE3LjE2IDE4LjUgMTYuNSAxNy44NCAxNi41IDE3LjA0QzE2LjUgMTYuMTYgMTcuMTYgMTUuNSAxOC4wNCAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDb252ZXJ0ID0gXCJNMTIgMEwxMS4zNCAuMDNMMTUuMTUgMy44NEwxNi41IDIuNUMxOS43NSA0LjA3IDIyLjA5IDcuMjQgMjIuNDUgMTFIMjMuOTVDMjMuNDQgNC44NCAxOC4yOSAwIDEyIDBNMTIgNEMxMC4wNyA0IDguNSA1LjU3IDguNSA3LjVDOC41IDkuNDMgMTAuMDcgMTEgMTIgMTFDMTMuOTMgMTEgMTUuNSA5LjQzIDE1LjUgNy41QzE1LjUgNS41NyAxMy45MyA0IDEyIDRNLjA1IDEzQy41NiAxOS4xNiA1LjcxIDI0IDEyIDI0TDEyLjY2IDIzLjk3TDguODUgMjAuMTZMNy41IDIxLjVDNC4yNSAxOS45NCAxLjkxIDE2Ljc2IDEuNTUgMTNILjA1TTEyIDEzQzguMTMgMTMgNSAxNC41NyA1IDE2LjVWMThIMTlWMTYuNUMxOSAxNC41NyAxNS44NyAxMyAxMiAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50Q29udmVydE91dGxpbmUgPSBcIk0xMiAwTDExLjM0IC4wM0wxNS4xNSAzLjg0TDE2LjUgMi41QzE5Ljc1IDQuMDcgMjIuMDkgNy4yNCAyMi40NSAxMUgyMy45NUMyMy40NCA0Ljg0IDE4LjI5IDAgMTIgME0xMiA0QzEwLjA3IDQgOC41IDUuNTcgOC41IDcuNUM4LjUgOS40MyAxMC4wNyAxMSAxMiAxMUMxMy45MyAxMSAxNS41IDkuNDMgMTUuNSA3LjVDMTUuNSA1LjU3IDEzLjkzIDQgMTIgNE0xMiA2QzEyLjgzIDYgMTMuNSA2LjY3IDEzLjUgNy41QzEzLjUgOC4zMyAxMi44MyA5IDEyIDlDMTEuMTcgOSAxMC41IDguMzMgMTAuNSA3LjVDMTAuNSA2LjY3IDExLjE3IDYgMTIgNk0uMDUgMTNDLjU2IDE5LjE2IDUuNzEgMjQgMTIgMjRMMTIuNjYgMjMuOTdMOC44NSAyMC4xNkw3LjUgMjEuNUM0LjI1IDE5Ljk0IDEuOTEgMTYuNzYgMS41NSAxM0guMDVNMTIgMTNDOC4xMyAxMyA1IDE0LjU3IDUgMTYuNVYxOEgxOVYxNi41QzE5IDE0LjU3IDE1Ljg3IDEzIDEyIDEzTTEyIDE1QzE0LjExIDE1IDE1LjYxIDE1LjUzIDE2LjM5IDE2SDcuNjFDOC4zOSAxNS41MyA5Ljg5IDE1IDEyIDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRDb3dib3lIYXQgPSBcIk0yMCAyMkg0VjIwQzQgMTcuOCA3LjYgMTYgMTIgMTZTMjAgMTcuOCAyMCAyME04IDlIMTZWMTBDMTYgMTIuMiAxNC4yIDE0IDEyIDE0UzggMTIuMiA4IDEwTTE5IDRDMTguNCA0IDE4IDQuNCAxOCA1VjZIMTYuNUwxNS4xIDNDMTUgMi44IDE0LjkgMi42IDE0LjcgMi41QzE0LjIgMiAxMy40IDEuOSAxMi43IDIuMkwxMiAyLjRMMTEuMyAyLjFDMTAuNiAxLjggOS44IDEuOSA5LjMgMi40QzkuMSAyLjYgOSAyLjggOC45IDNMNy41IDZINlY1QzYgNC40IDUuNiA0IDUgNFM0IDQuNCA0IDVWNkM0IDcuMSA0LjkgOCA2IDhIMThDMTkuMSA4IDIwIDcuMSAyMCA2VjVDMjAgNC41IDE5LjYgNCAxOSA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnREZXRhaWxzID0gXCJNMTEgOUMxMSAxMC42NiA5LjY2IDEyIDggMTJDNi4zNCAxMiA1IDEwLjY2IDUgOUM1IDcuMzQgNi4zNCA2IDggNkM5LjY2IDYgMTEgNy4zNCAxMSA5TTE0IDIwSDJWMThDMiAxNS43OSA0LjY5IDE0IDggMTRDMTEuMzEgMTQgMTQgMTUuNzkgMTQgMThNMjIgMTJWMTRIMTNWMTJNMjIgOFYxMEgxM1Y4TTIyIDRWNkgxM1Y0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnREZXRhaWxzT3V0bGluZSA9IFwiTTExIDlDMTEgMTAuNjYgOS42NiAxMiA4IDEyQzYuMzQgMTIgNSAxMC42NiA1IDlDNSA3LjM0IDYuMzQgNiA4IDZDOS42NiA2IDExIDcuMzQgMTEgOU0xNCAyMEgyVjE4QzIgMTUuNzkgNC42OSAxNCA4IDE0QzExLjMxIDE0IDE0IDE1Ljc5IDE0IDE4TTcgOUM3IDkuNTUgNy40NSAxMCA4IDEwQzguNTUgMTAgOSA5LjU1IDkgOUM5IDguNDUgOC41NSA4IDggOEM3LjQ1IDggNyA4LjQ1IDcgOU00IDE4SDEyQzEyIDE2LjkgMTAuMjEgMTYgOCAxNkM1Ljc5IDE2IDQgMTYuOSA0IDE4TTIyIDEyVjE0SDEzVjEyTTIyIDhWMTBIMTNWOE0yMiA0VjZIMTNWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50RWRpdCA9IFwiTTIxLjcsMTMuMzVMMjAuNywxNC4zNUwxOC42NSwxMi4zTDE5LjY1LDExLjNDMTkuODYsMTEuMDkgMjAuMjEsMTEuMDkgMjAuNDIsMTEuM0wyMS43LDEyLjU4QzIxLjkxLDEyLjc5IDIxLjkxLDEzLjE0IDIxLjcsMTMuMzVNMTIsMTguOTRMMTguMDYsMTIuODhMMjAuMTEsMTQuOTNMMTQuMDYsMjFIMTJWMTguOTRNMTIsMTRDNy41OCwxNCA0LDE1Ljc5IDQsMThWMjBIMTBWMTguMTFMMTQsMTQuMTFDMTMuMzQsMTQuMDMgMTIuNjcsMTQgMTIsMTRNMTIsNEE0LDQgMCAwLDAgOCw4QTQsNCAwIDAsMCAxMiwxMkE0LDQgMCAwLDAgMTYsOEE0LDQgMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50RWRpdE91dGxpbmUgPSBcIk0yIDE3VjIwSDEwVjE4LjExSDMuOVYxN0MzLjkgMTYuMzYgNy4wMyAxNC45IDEwIDE0LjlDMTAuOTYgMTQuOTEgMTEuOTEgMTUuMDQgMTIuODMgMTUuMjhMMTQuMzUgMTMuNzZDMTIuOTUgMTMuMjkgMTEuNSAxMy4wMyAxMCAxM0M3LjMzIDEzIDIgMTQuMzMgMiAxN00xMCA0QzcuNzkgNCA2IDUuNzkgNiA4UzcuNzkgMTIgMTAgMTIgMTQgMTAuMjEgMTQgOCAxMi4yMSA0IDEwIDRNMTAgMTBDOC45IDEwIDggOS4xMSA4IDhTOC45IDYgMTAgNiAxMiA2LjkgMTIgOCAxMS4xMSAxMCAxMCAxME0yMS43IDEzLjM1TDIwLjcgMTQuMzVMMTguNjUgMTIuMzVMMTkuNjUgMTEuMzVDMTkuODYgMTEuMTQgMjAuMjEgMTEuMTQgMjAuNDIgMTEuMzVMMjEuNyAxMi42M0MyMS45MSAxMi44NCAyMS45MSAxMy4xOSAyMS43IDEzLjRNMTIgMTguOTRMMTguMDYgMTIuODhMMjAuMTEgMTQuODhMMTQuMTEgMjAuOTVIMTJWMTguOTRcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50R3JvdXAgPSBcIk0xMiw1LjVBMy41LDMuNSAwIDAsMSAxNS41LDlBMy41LDMuNSAwIDAsMSAxMiwxMi41QTMuNSwzLjUgMCAwLDEgOC41LDlBMy41LDMuNSAwIDAsMSAxMiw1LjVNNSw4QzUuNTYsOCA2LjA4LDguMTUgNi41Myw4LjQyQzYuMzgsOS44NSA2LjgsMTEuMjcgNy42NiwxMi4zOEM3LjE2LDEzLjM0IDYuMTYsMTQgNSwxNEEzLDMgMCAwLDEgMiwxMUEzLDMgMCAwLDEgNSw4TTE5LDhBMywzIDAgMCwxIDIyLDExQTMsMyAwIDAsMSAxOSwxNEMxNy44NCwxNCAxNi44NCwxMy4zNCAxNi4zNCwxMi4zOEMxNy4yLDExLjI3IDE3LjYyLDkuODUgMTcuNDcsOC40MkMxNy45Miw4LjE1IDE4LjQ0LDggMTksOE01LjUsMTguMjVDNS41LDE2LjE4IDguNDEsMTQuNSAxMiwxNC41QzE1LjU5LDE0LjUgMTguNSwxNi4xOCAxOC41LDE4LjI1VjIwSDUuNVYxOC4yNU0wLDIwVjE4LjVDMCwxNy4xMSAxLjg5LDE1Ljk0IDQuNDUsMTUuNkMzLjg2LDE2LjI4IDMuNSwxNy4yMiAzLjUsMTguMjVWMjBIME0yNCwyMEgyMC41VjE4LjI1QzIwLjUsMTcuMjIgMjAuMTQsMTYuMjggMTkuNTUsMTUuNkMyMi4xMSwxNS45NCAyNCwxNy4xMSAyNCwxOC41VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRHcm91cE91dGxpbmUgPSBcIk0xMiw1QTMuNSwzLjUgMCAwLDAgOC41LDguNUEzLjUsMy41IDAgMCwwIDEyLDEyQTMuNSwzLjUgMCAwLDAgMTUuNSw4LjVBMy41LDMuNSAwIDAsMCAxMiw1TTEyLDdBMS41LDEuNSAwIDAsMSAxMy41LDguNUExLjUsMS41IDAgMCwxIDEyLDEwQTEuNSwxLjUgMCAwLDEgMTAuNSw4LjVBMS41LDEuNSAwIDAsMSAxMiw3TTUuNSw4QTIuNSwyLjUgMCAwLDAgMywxMC41QzMsMTEuNDQgMy41MywxMi4yNSA0LjI5LDEyLjY4QzQuNjUsMTIuODggNS4wNiwxMyA1LjUsMTNDNS45NCwxMyA2LjM1LDEyLjg4IDYuNzEsMTIuNjhDNy4wOCwxMi40NyA3LjM5LDEyLjE3IDcuNjIsMTEuODFDNi44OSwxMC44NiA2LjUsOS43IDYuNSw4LjVDNi41LDguNDEgNi41LDguMzEgNi41LDguMjJDNi4yLDguMDggNS44Niw4IDUuNSw4TTE4LjUsOEMxOC4xNCw4IDE3LjgsOC4wOCAxNy41LDguMjJDMTcuNSw4LjMxIDE3LjUsOC40MSAxNy41LDguNUMxNy41LDkuNyAxNy4xMSwxMC44NiAxNi4zOCwxMS44MUMxNi41LDEyIDE2LjYzLDEyLjE1IDE2Ljc4LDEyLjNDMTYuOTQsMTIuNDUgMTcuMSwxMi41OCAxNy4yOSwxMi42OEMxNy42NSwxMi44OCAxOC4wNiwxMyAxOC41LDEzQzE4Ljk0LDEzIDE5LjM1LDEyLjg4IDE5LjcxLDEyLjY4QzIwLjQ3LDEyLjI1IDIxLDExLjQ0IDIxLDEwLjVBMi41LDIuNSAwIDAsMCAxOC41LDhNMTIsMTRDOS42NiwxNCA1LDE1LjE3IDUsMTcuNVYxOUgxOVYxNy41QzE5LDE1LjE3IDE0LjM0LDE0IDEyLDE0TTQuNzEsMTQuNTVDMi43OCwxNC43OCAwLDE1Ljc2IDAsMTcuNVYxOUgzVjE3LjA3QzMsMTYuMDYgMy42OSwxNS4yMiA0LjcxLDE0LjU1TTE5LjI5LDE0LjU1QzIwLjMxLDE1LjIyIDIxLDE2LjA2IDIxLDE3LjA3VjE5SDI0VjE3LjVDMjQsMTUuNzYgMjEuMjIsMTQuNzggMTkuMjksMTQuNTVNMTIsMTZDMTMuNTMsMTYgMTUuMjQsMTYuNSAxNi4yMywxN0g3Ljc3QzguNzYsMTYuNSAxMC40NywxNiAxMiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50SGFyZEhhdCA9IFwiTTEyLDE1QzcuNTgsMTUgNCwxNi43OSA0LDE5VjIxSDIwVjE5QzIwLDE2Ljc5IDE2LjQyLDE1IDEyLDE1TTgsOUE0LDQgMCAwLDAgMTIsMTNBNCw0IDAgMCwwIDE2LDlNMTEuNSwyQzExLjIsMiAxMSwyLjIxIDExLDIuNVY1LjVIMTBWM0MxMCwzIDcuNzUsMy44NiA3Ljc1LDYuNzVDNy43NSw2Ljc1IDcsNi44OSA3LDhIMTdDMTYuOTUsNi44OSAxNi4yNSw2Ljc1IDE2LjI1LDYuNzVDMTYuMjUsMy44NiAxNCwzIDE0LDNWNS41SDEzVjIuNUMxMywyLjIxIDEyLjgxLDIgMTIuNSwySDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEhlYXJ0ID0gXCJNMTUsMTRDMTIuMywxNCA3LDE1LjMgNywxOFYyMEgyM1YxOEMyMywxNS4zIDE3LjcsMTQgMTUsMTRNMTUsMTJBNCw0IDAgMCwwIDE5LDhBNCw0IDAgMCwwIDE1LDRBNCw0IDAgMCwwIDExLDhBNCw0IDAgMCwwIDE1LDEyTTUsMTVMNC40LDE0LjVDMi40LDEyLjYgMSwxMS40IDEsOS45QzEsOC43IDIsNy43IDMuMiw3LjdDMy45LDcuNyA0LjYsOCA1LDguNUM1LjQsOCA2LjEsNy43IDYuOCw3LjdDOCw3LjcgOSw4LjYgOSw5LjlDOSwxMS40IDcuNiwxMi42IDUuNiwxNC41TDUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudEhlYXJ0T3V0bGluZSA9IFwiTTUsMTVMNC40LDE0LjVDMi40LDEyLjYgMSwxMS40IDEsOS45QzEsOC43IDIsNy43IDMuMiw3LjdDMy45LDcuNyA0LjYsOCA1LDguNUM1LjQsOCA2LjEsNy43IDYuOCw3LjdDOCw3LjcgOSw4LjYgOSw5LjlDOSwxMS40IDcuNiwxMi42IDUuNiwxNC41TDUsMTVNMTUsNEE0LDQgMCAwLDAgMTEsOEE0LDQgMCAwLDAgMTUsMTJBNCw0IDAgMCwwIDE5LDhBNCw0IDAgMCwwIDE1LDRNMTUsMTAuMUEyLjEsMi4xIDAgMCwxIDEyLjksOEEyLjEsMi4xIDAgMCwxIDE1LDUuOUMxNi4xNiw1LjkgMTcuMSw2Ljg0IDE3LjEsOEMxNy4xLDkuMTYgMTYuMTYsMTAuMSAxNSwxMC4xTTE1LDEzQzEyLjMzLDEzIDcsMTQuMzMgNywxN1YyMEgyM1YxN0MyMywxNC4zMyAxNy42NywxMyAxNSwxM00yMS4xLDE4LjFIOC45VjE3QzguOSwxNi4zNiAxMiwxNC45IDE1LDE0LjlDMTcuOTcsMTQuOSAyMS4xLDE2LjM2IDIxLjEsMTdWMTguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50S2V5ID0gXCJNMTEsMTBWMTJIMTBWMTRIOFYxMkg1LjgzQzUuNDIsMTMuMTcgNC4zMSwxNCAzLDE0QTMsMyAwIDAsMSAwLDExQTMsMyAwIDAsMSAzLDhDNC4zMSw4IDUuNDIsOC44MyA1LjgzLDEwSDExTTMsMTBBMSwxIDAgMCwwIDIsMTFBMSwxIDAgMCwwIDMsMTJBMSwxIDAgMCwwIDQsMTFBMSwxIDAgMCwwIDMsMTBNMTYsMTRDMTguNjcsMTQgMjQsMTUuMzQgMjQsMThWMjBIOFYxOEM4LDE1LjM0IDEzLjMzLDE0IDE2LDE0TTE2LDEyQTQsNCAwIDAsMSAxMiw4QTQsNCAwIDAsMSAxNiw0QTQsNCAwIDAsMSAyMCw4QTQsNCAwIDAsMSAxNiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50S2V5T3V0bGluZSA9IFwiTTUuODMsMTBDNS40Miw4LjgzIDQuMzEsOCAzLDhBMywzIDAgMCwwIDAsMTFBMywzIDAgMCwwIDMsMTRDNC4zMSwxNCA1LjQyLDEzLjE3IDUuODMsMTJIOFYxNEgxMFYxMkgxMVYxMEg1LjgzTTMsMTJBMSwxIDAgMCwxIDIsMTFBMSwxIDAgMCwxIDMsMTBBMSwxIDAgMCwxIDQsMTFBMSwxIDAgMCwxIDMsMTJNMTYsNEE0LDQgMCAwLDAgMTIsOEE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDIwLDhBNCw0IDAgMCwwIDE2LDRNMTYsMTAuMUEyLjEsMi4xIDAgMCwxIDEzLjksOEEyLjEsMi4xIDAgMCwxIDE2LDUuOUMxNy4xNiw1LjkgMTguMSw2Ljg0IDE4LjEsOEMxOC4xLDkuMTYgMTcuMTYsMTAuMSAxNiwxMC4xTTE2LDEzQzEzLjMzLDEzIDgsMTQuMzMgOCwxN1YyMEgyNFYxN0MyNCwxNC4zMyAxOC42NywxMyAxNiwxM00yMi4xLDE4LjFIOS45VjE3QzkuOSwxNi4zNiAxMywxNC45IDE2LDE0LjlDMTguOTcsMTQuOSAyMi4xLDE2LjM2IDIyLjEsMTdWMTguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TG9jayA9IFwiTTIyIDE3VjE2LjVDMjIgMTUuMTIgMjAuODggMTQgMTkuNSAxNFMxNyAxNS4xMiAxNyAxNi41VjE3QzE2LjQ1IDE3IDE2IDE3LjQ1IDE2IDE4VjIyQzE2IDIyLjU1IDE2LjQ1IDIzIDE3IDIzSDIyQzIyLjU1IDIzIDIzIDIyLjU1IDIzIDIyVjE4QzIzIDE3LjQ1IDIyLjU1IDE3IDIyIDE3TTIxIDE3SDE4VjE2LjVDMTggMTUuNjcgMTguNjcgMTUgMTkuNSAxNVMyMSAxNS42NyAyMSAxNi41VjE3TTggOEM4IDUuNzkgOS43OSA0IDEyIDRTMTYgNS43OSAxNiA4IDE0LjIxIDEyIDEyIDEyIDggMTAuMjEgOCA4TTE0IDIwSDRWMThDNCAxNS43OSA3LjU4IDE0IDEyIDE0QzEzLjI3IDE0IDE0LjQ2IDE0LjE1IDE1LjUzIDE0LjQxQzE1LjMyIDE0LjgyIDE1LjE1IDE1LjI1IDE1LjA3IDE1LjcxQzE0LjQyIDE2LjI2IDE0IDE3LjA4IDE0IDE4VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRMb2NrT3V0bGluZSA9IFwiTTIyIDE3VjE2LjVDMjIgMTUuMTIgMjAuODggMTQgMTkuNSAxNFMxNyAxNS4xMiAxNyAxNi41VjE3QzE2LjQ1IDE3IDE2IDE3LjQ1IDE2IDE4VjIyQzE2IDIyLjU1IDE2LjQ1IDIzIDE3IDIzSDIyQzIyLjU1IDIzIDIzIDIyLjU1IDIzIDIyVjE4QzIzIDE3LjQ1IDIyLjU1IDE3IDIyIDE3TTIxIDE3SDE4VjE2LjVDMTggMTUuNjcgMTguNjcgMTUgMTkuNSAxNVMyMSAxNS42NyAyMSAxNi41VjE3TTE0IDIwSDRWMTdDNCAxNC4zMyA5LjMzIDEzIDEyIDEzQzEzLjA4IDEzIDE0LjYgMTMuMjIgMTYgMTMuNjZDMTUuNjEgMTQuMTUgMTUuMzMgMTQuNzQgMTUuMTYgMTUuMzhDMTQuMTkgMTUuMSAxMy4wOSAxNC45IDEyIDE0LjlDOS4wMyAxNC45IDUuOSAxNi4zNiA1LjkgMTdWMTguMUgxNFYyME0xMiAxMkMxNC4yMSAxMiAxNiAxMC4yMSAxNiA4UzE0LjIxIDQgMTIgNCA4IDUuNzkgOCA4IDkuNzkgMTIgMTIgMTJNMTIgNkMxMy4xMSA2IDE0IDYuOSAxNCA4UzEzLjExIDEwIDEyIDEwIDEwIDkuMTEgMTAgOCAxMC45IDYgMTIgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TWludXMgPSBcIk0xNSwxNEMxMi4zMywxNCA3LDE1LjMzIDcsMThWMjBIMjNWMThDMjMsMTUuMzMgMTcuNjcsMTQgMTUsMTRNMSwxMFYxMkg5VjEwTTE1LDEyQTQsNCAwIDAsMCAxOSw4QTQsNCAwIDAsMCAxNSw0QTQsNCAwIDAsMCAxMSw4QTQsNCAwIDAsMCAxNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TWludXNPdXRsaW5lID0gXCJNMTUsNEE0LDQgMCAwLDAgMTEsOEE0LDQgMCAwLDAgMTUsMTJBNCw0IDAgMCwwIDE5LDhBNCw0IDAgMCwwIDE1LDRNMTUsNS45QzE2LjE2LDUuOSAxNy4xLDYuODQgMTcuMSw4QzE3LjEsOS4xNiAxNi4xNiwxMC4xIDE1LDEwLjFBMi4xLDIuMSAwIDAsMSAxMi45LDhBMi4xLDIuMSAwIDAsMSAxNSw1LjlNMSwxMFYxMkg5VjEwSDFNMTUsMTNDMTIuMzMsMTMgNywxNC4zMyA3LDE3VjIwSDIzVjE3QzIzLDE0LjMzIDE3LjY3LDEzIDE1LDEzTTE1LDE0LjlDMTcuOTcsMTQuOSAyMS4xLDE2LjM2IDIxLjEsMTdWMTguMUg4LjlWMTdDOC45LDE2LjM2IDEyLDE0LjkgMTUsMTQuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGUgPSBcIk0xNiAxN1YxOUgyVjE3UzIgMTMgOSAxMyAxNiAxNyAxNiAxN00xMi41IDcuNUEzLjUgMy41IDAgMSAwIDkgMTFBMy41IDMuNSAwIDAgMCAxMi41IDcuNU0xNS45NCAxM0E1LjMyIDUuMzIgMCAwIDEgMTggMTdWMTlIMjJWMTdTMjIgMTMuMzcgMTUuOTQgMTNNMTUgNEEzLjM5IDMuMzkgMCAwIDAgMTMuMDcgNC41OUE1IDUgMCAwIDEgMTMuMDcgMTAuNDFBMy4zOSAzLjM5IDAgMCAwIDE1IDExQTMuNSAzLjUgMCAwIDAgMTUgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVDaGVjayA9IFwiTTE5IDE3VjE5SDdWMTdTNyAxMyAxMyAxMyAxOSAxNyAxOSAxN00xNiA4QTMgMyAwIDEgMCAxMyAxMUEzIDMgMCAwIDAgMTYgOE0xOS4yIDEzLjA2QTUuNiA1LjYgMCAwIDEgMjEgMTdWMTlIMjRWMTdTMjQgMTMuNTUgMTkuMiAxMy4wNk0xOCA1QTIuOTEgMi45MSAwIDAgMCAxNy4xMSA1LjE0QTUgNSAwIDAgMSAxNy4xMSAxMC44NkEyLjkxIDIuOTEgMCAwIDAgMTggMTFBMyAzIDAgMCAwIDE4IDVNNy4zNCA4LjkyTDguNSAxMC4zM0wzLjc1IDE1LjA4TDEgMTIuMDhMMi4xNiAxMC45MkwzLjc1IDEyLjVMNy4zNCA4LjkyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudE11bHRpcGxlQ2hlY2tPdXRsaW5lID0gXCJNMTMgMTFBMyAzIDAgMSAwIDEwIDhBMyAzIDAgMCAwIDEzIDExTTEzIDdBMSAxIDAgMSAxIDEyIDhBMSAxIDAgMCAxIDEzIDdNMTcuMTEgMTAuODZBNSA1IDAgMCAwIDE3LjExIDUuMTRBMi45MSAyLjkxIDAgMCAxIDE4IDVBMyAzIDAgMCAxIDE4IDExQTIuOTEgMi45MSAwIDAgMSAxNy4xMSAxMC44Nk0xMyAxM0M3IDEzIDcgMTcgNyAxN1YxOUgxOVYxN1MxOSAxMyAxMyAxM005IDE3QzkgMTYuNzEgOS4zMiAxNSAxMyAxNUMxNi41IDE1IDE2Ljk0IDE2LjU2IDE3IDE3TTI0IDE3VjE5SDIxVjE3QTUuNiA1LjYgMCAwIDAgMTkuMiAxMy4wNkMyNCAxMy41NSAyNCAxNyAyNCAxN003LjM0IDguOTJMOC41IDEwLjMzTDMuNzUgMTUuMDhMMSAxMi4wOEwyLjE2IDEwLjkyTDMuNzUgMTIuNUw3LjM0IDguOTJcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVNaW51cyA9IFwiTTE5IDE3VjE5SDdWMTdTNyAxMyAxMyAxMyAxOSAxNyAxOSAxN00xNiA4QTMgMyAwIDEgMCAxMyAxMUEzIDMgMCAwIDAgMTYgOE0xOS4yIDEzLjA2QTUuNiA1LjYgMCAwIDEgMjEgMTdWMTlIMjRWMTdTMjQgMTMuNTUgMTkuMiAxMy4wNk0xOCA1QTIuOTEgMi45MSAwIDAgMCAxNy4xMSA1LjE0QTUgNSAwIDAgMSAxNy4xMSAxMC44NkEyLjkxIDIuOTEgMCAwIDAgMTggMTFBMyAzIDAgMCAwIDE4IDVNOCAxMEgwVjEySDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudE11bHRpcGxlTWludXNPdXRsaW5lID0gXCJNMTMgMTFBMyAzIDAgMSAwIDEwIDhBMyAzIDAgMCAwIDEzIDExTTEzIDdBMSAxIDAgMSAxIDEyIDhBMSAxIDAgMCAxIDEzIDdNMTcuMTEgMTAuODZBNSA1IDAgMCAwIDE3LjExIDUuMTRBMi45MSAyLjkxIDAgMCAxIDE4IDVBMyAzIDAgMCAxIDE4IDExQTIuOTEgMi45MSAwIDAgMSAxNy4xMSAxMC44Nk0xMyAxM0M3IDEzIDcgMTcgNyAxN1YxOUgxOVYxN1MxOSAxMyAxMyAxM005IDE3QzkgMTYuNzEgOS4zMiAxNSAxMyAxNUMxNi41IDE1IDE2Ljk0IDE2LjU2IDE3IDE3TTI0IDE3VjE5SDIxVjE3QTUuNiA1LjYgMCAwIDAgMTkuMiAxMy4wNkMyNCAxMy41NSAyNCAxNyAyNCAxN004IDEySDBWMTBIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVPdXRsaW5lID0gXCJNMTMuMDcgMTAuNDFBNSA1IDAgMCAwIDEzLjA3IDQuNTlBMy4zOSAzLjM5IDAgMCAxIDE1IDRBMy41IDMuNSAwIDAgMSAxNSAxMUEzLjM5IDMuMzkgMCAwIDEgMTMuMDcgMTAuNDFNNS41IDcuNUEzLjUgMy41IDAgMSAxIDkgMTFBMy41IDMuNSAwIDAgMSA1LjUgNy41TTcuNSA3LjVBMS41IDEuNSAwIDEgMCA5IDZBMS41IDEuNSAwIDAgMCA3LjUgNy41TTE2IDE3VjE5SDJWMTdTMiAxMyA5IDEzIDE2IDE3IDE2IDE3TTE0IDE3QzEzLjg2IDE2LjIyIDEyLjY3IDE1IDkgMTVTNC4wNyAxNi4zMSA0IDE3TTE1Ljk1IDEzQTUuMzIgNS4zMiAwIDAgMSAxOCAxN1YxOUgyMlYxN1MyMiAxMy4zNyAxNS45NCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVQbHVzID0gXCJNMTkgMTdWMTlIN1YxN1M3IDEzIDEzIDEzIDE5IDE3IDE5IDE3TTE2IDhBMyAzIDAgMSAwIDEzIDExQTMgMyAwIDAgMCAxNiA4TTE5LjIgMTMuMDZBNS42IDUuNiAwIDAgMSAyMSAxN1YxOUgyNFYxN1MyNCAxMy41NSAxOS4yIDEzLjA2TTE4IDVBMi45MSAyLjkxIDAgMCAwIDE3LjExIDUuMTRBNSA1IDAgMCAxIDE3LjExIDEwLjg2QTIuOTEgMi45MSAwIDAgMCAxOCAxMUEzIDMgMCAwIDAgMTggNU04IDEwSDVWN0gzVjEwSDBWMTJIM1YxNUg1VjEySDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudE11bHRpcGxlUGx1c091dGxpbmUgPSBcIk0xMyAxMUEzIDMgMCAxIDAgMTAgOEEzIDMgMCAwIDAgMTMgMTFNMTMgN0ExIDEgMCAxIDEgMTIgOEExIDEgMCAwIDEgMTMgN00xNy4xMSAxMC44NkE1IDUgMCAwIDAgMTcuMTEgNS4xNEEyLjkxIDIuOTEgMCAwIDEgMTggNUEzIDMgMCAwIDEgMTggMTFBMi45MSAyLjkxIDAgMCAxIDE3LjExIDEwLjg2TTEzIDEzQzcgMTMgNyAxNyA3IDE3VjE5SDE5VjE3UzE5IDEzIDEzIDEzTTkgMTdDOSAxNi43MSA5LjMyIDE1IDEzIDE1QzE2LjUgMTUgMTYuOTQgMTYuNTYgMTcgMTdNMjQgMTdWMTlIMjFWMTdBNS42IDUuNiAwIDAgMCAxOS4yIDEzLjA2QzI0IDEzLjU1IDI0IDE3IDI0IDE3TTggMTJINVYxNUgzVjEySDBWMTBIM1Y3SDVWMTBIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVsdGlwbGVSZW1vdmUgPSBcIk0yNCAxN1YxOUgyMVYxN0MyMSAxNS40NSAyMC4zIDE0LjA2IDE5LjE4IDEzLjA2QzI0IDEzLjU1IDI0IDE3IDI0IDE3TTE4IDVDMTkuNjYgNSAyMSA2LjM0IDIxIDhDMjEgOS42NiAxOS42NiAxMSAxOCAxMUMxNy42OSAxMSAxNy4zOCAxMC45NSAxNy4xIDEwLjg2QzE3LjY3IDEwLjA1IDE4IDkuMDcgMTggOEMxOCA2Ljk0IDE3LjY3IDUuOTUgMTcuMSA1LjE0QzE3LjM4IDUuMDUgMTcuNjkgNSAxOCA1TTEzIDVDMTQuNjYgNSAxNiA2LjM0IDE2IDhDMTYgOS42NiAxNC42NiAxMSAxMyAxMUMxMS4zNCAxMSAxMCA5LjY2IDEwIDhDMTAgNi4zNCAxMS4zNCA1IDEzIDVNMTkgMTdWMTlIN1YxN0M3IDE0Ljc5IDkuNjkgMTMgMTMgMTNDMTYuMzEgMTMgMTkgMTQuNzkgMTkgMTdNLjQ2NCAxMy4xMkwyLjU5IDExTC40NjQgOC44OEwxLjg4IDcuNDZMNCA5LjU5TDYuMTIgNy40Nkw3LjU0IDguODhMNS40MSAxMUw3LjU0IDEzLjEyTDYuMTIgMTQuNTRMNCAxMi40MUwxLjg4IDE0LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRNdWx0aXBsZVJlbW92ZU91dGxpbmUgPSBcIk0yNCAxN1YxOUgyMVYxN0MyMSAxNS40NSAyMC4zIDE0LjA2IDE5LjE4IDEzLjA2QzI0IDEzLjU1IDI0IDE3IDI0IDE3TTE4IDVDMTkuNjYgNSAyMSA2LjM0IDIxIDhDMjEgOS42NiAxOS42NiAxMSAxOCAxMUMxNy42OSAxMSAxNy4zOCAxMC45NSAxNy4xIDEwLjg2QzE3LjY3IDEwLjA1IDE4IDkuMDcgMTggOEMxOCA2Ljk0IDE3LjY3IDUuOTUgMTcuMSA1LjE0QzE3LjM4IDUuMDUgMTcuNjkgNSAxOCA1TTEzIDVDMTQuNjYgNSAxNiA2LjM0IDE2IDhDMTYgOS42NiAxNC42NiAxMSAxMyAxMUMxMS4zNCAxMSAxMCA5LjY2IDEwIDhDMTAgNi4zNCAxMS4zNCA1IDEzIDVNMTkgMTdWMTlIN1YxN0M3IDE0Ljc5IDkuNjkgMTMgMTMgMTNDMTYuMzEgMTMgMTkgMTQuNzkgMTkgMTdNMTMgN0MxMi40NSA3IDEyIDcuNDUgMTIgOEMxMiA4LjU1IDEyLjQ1IDkgMTMgOUMxMy41NSA5IDE0IDguNTUgMTQgOEMxNCA3LjQ1IDEzLjU1IDcgMTMgN00xMyAxNUMxMC43OSAxNSA5IDE1LjkgOSAxN0gxN0MxNyAxNS45IDE1LjIxIDE1IDEzIDE1TS40NjQgMTMuMTJMMi41OSAxMUwuNDY0IDguODhMMS44OCA3LjQ2TDQgOS41OUw2LjEyIDcuNDZMNy41NCA4Ljg4TDUuNDEgMTFMNy41NCAxMy4xMkw2LjEyIDE0LjU0TDQgMTIuNDFMMS44OCAxNC41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TXVzaWMgPSBcIk0xMSwxNEMxMiwxNCAxMy4wNSwxNC4xNiAxNC4yLDE0LjQ0QzEzLjM5LDE1LjMxIDEzLDE2LjMzIDEzLDE3LjVDMTMsMTguMzkgMTMuMjUsMTkuMjMgMTMuNzgsMjBIM1YxOEMzLDE2LjgxIDMuOTEsMTUuODUgNS43NCwxNS4xMkM3LjU3LDE0LjM4IDkuMzMsMTQgMTEsMTRNMTEsMTJDOS45MiwxMiA5LDExLjYxIDguMTgsMTAuODNDNy4zOCwxMC4wNSA3LDkuMTEgNyw4QzcsNi45MiA3LjM4LDYgOC4xOCw1LjE4QzksNC4zOCA5LjkyLDQgMTEsNEMxMi4xMSw0IDEzLjA1LDQuMzggMTMuODMsNS4xOEMxNC42MSw2IDE1LDYuOTIgMTUsOEMxNSw5LjExIDE0LjYxLDEwLjA1IDEzLjgzLDEwLjgzQzEzLjA1LDExLjYxIDEyLjExLDEyIDExLDEyTTE4LjUsMTBIMjBMMjIsMTBWMTJIMjBWMTcuNUEyLjUsMi41IDAgMCwxIDE3LjUsMjBBMi41LDIuNSAwIDAsMSAxNSwxNy41QTIuNSwyLjUgMCAwLDEgMTcuNSwxNUMxNy44NiwxNSAxOC4xOSwxNS4wNyAxOC41LDE1LjIxVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRNdXNpY091dGxpbmUgPSBcIk0xMSw0QTQsNCAwIDAsMSAxNSw4QTQsNCAwIDAsMSAxMSwxMkE0LDQgMCAwLDEgNyw4QTQsNCAwIDAsMSAxMSw0TTExLDZBMiwyIDAgMCwwIDksOEEyLDIgMCAwLDAgMTEsMTBBMiwyIDAgMCwwIDEzLDhBMiwyIDAgMCwwIDExLDZNMTEsMTNDMTIuMSwxMyAxMy42NiwxMy4yMyAxNS4xMSwxMy42OUMxNC41LDE0LjA3IDE0LDE0LjYgMTMuNjEsMTUuMjNDMTIuNzksMTUuMDMgMTEuODksMTQuOSAxMSwxNC45QzguMDMsMTQuOSA0LjksMTYuMzYgNC45LDE3VjE4LjFIMTMuMDRDMTMuMTMsMTguOCAxMy4zOCwxOS40NCAxMy43NiwyMEgzVjE3QzMsMTQuMzQgOC4zMywxMyAxMSwxM00xOC41LDEwSDIwTDIyLDEwVjEySDIwVjE3LjVBMi41LDIuNSAwIDAsMSAxNy41LDIwQTIuNSwyLjUgMCAwLDEgMTUsMTcuNUEyLjUsMi41IDAgMCwxIDE3LjUsMTVDMTcuODYsMTUgMTguMTksMTUuMDcgMTguNSwxNS4yMVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TmV0d29yayA9IFwiTTEzLDE3VjE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMlYyMkgxNUExLDEgMCAwLDEgMTQsMjNIMTBBMSwxIDAgMCwxIDksMjJIMlYyMEg5QTEsMSAwIDAsMSAxMCwxOUgxMVYxN0g1VjE1LjVDNSwxMy41NyA4LjEzLDEyIDEyLDEyQzE1Ljg3LDEyIDE5LDEzLjU3IDE5LDE1LjVWMTdIMTNNMTIsM0EzLjUsMy41IDAgMCwxIDE1LjUsNi41QTMuNSwzLjUgMCAwLDEgMTIsMTBBMy41LDMuNSAwIDAsMSA4LjUsNi41QTMuNSwzLjUgMCAwLDEgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50TmV0d29ya091dGxpbmUgPSBcIk0xMiwxMEEzLjUsMy41IDAgMCwwIDE1LjUsNi41QTMuNSwzLjUgMCAwLDAgMTIsM0EzLjUsMy41IDAgMCwwIDguNSw2LjVBMy41LDMuNSAwIDAsMCAxMiwxME0xMiw1QTEuNSwxLjUgMCAwLDEgMTMuNSw2LjVBMS41LDEuNSAwIDAsMSAxMiw4QTEuNSwxLjUgMCAwLDEgMTAuNSw2LjVBMS41LDEuNSAwIDAsMSAxMiw1TTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxOVYxNS41QzE5LDEzLjU3IDE1Ljg3LDEyIDEyLDEyQzguMTMsMTIgNSwxMy41NyA1LDE1LjVWMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNy42MSwxNUM4LjM5LDE0LjUzIDkuODksMTQgMTIsMTRDMTQuMTEsMTQgMTUuNjEsMTQuNTMgMTYuMzksMTVINy42MVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50T2ZmID0gXCJNMTIsNEE0LDQgMCAwLDEgMTYsOEMxNiw5Ljk1IDE0LjYsMTEuNTggMTIuNzUsMTEuOTNMOC4wNyw3LjI1QzguNDIsNS40IDEwLjA1LDQgMTIsNE0xMi4yOCwxNEwxOC4yOCwyMEwyMCwyMS43MkwxOC43MywyM0wxNS43MywyMEg0VjE4QzQsMTYuMTYgNi41LDE0LjYxIDkuODcsMTQuMTRMMi43OCw3LjA1TDQuMDUsNS43OEwxMi4yOCwxNE0yMCwxOFYxOS4xOEwxNS4xNCwxNC4zMkMxOCwxNC45MyAyMCwxNi4zNSAyMCwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50T2ZmT3V0bGluZSA9IFwiTTIuNzUsN0w0LjAzLDUuNzVMMTMuMjYsMTVMMjAsMjEuNzJMMTguNzMsMjNMMTUuNzMsMjBINFYxN0M0LDE1LjE0IDYuNjEsMTMuOTIgOS4wOSwxMy4zNkwyLjc1LDdNMjAsMTdWMTkuMThMMTguMSwxNy4yOFYxN0MxOC4xLDE2Ljc0IDE3LjYsMTYuMzUgMTYuOCwxNkwxNCwxMy4xOEMxNi43MSwxMy42MyAyMCwxNC45MSAyMCwxN001LjksMTdWMTguMUgxMy44M0wxMC43MiwxNUM4LjE5LDE1LjMgNS45LDE2LjQ1IDUuOSwxN00xMiw0QTQsNCAwIDAsMSAxNiw4QzE2LDkuOTUgMTQuNiwxMS41OCAxMi43NSwxMS45M0w4LjA3LDcuMjVDOC40Miw1LjQgMTAuMDUsNCAxMiw0TTEyLDZBMiwyIDAgMCwwIDEwLDhBMiwyIDAgMCwwIDEyLDEwQTIsMiAwIDAsMCAxNCw4QTIsMiAwIDAsMCAxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRPdXRsaW5lID0gXCJNMTIsNEE0LDQgMCAwLDEgMTYsOEE0LDQgMCAwLDEgMTIsMTJBNCw0IDAgMCwxIDgsOEE0LDQgMCAwLDEgMTIsNE0xMiw2QTIsMiAwIDAsMCAxMCw4QTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTQsOEEyLDIgMCAwLDAgMTIsNk0xMiwxM0MxNC42NywxMyAyMCwxNC4zMyAyMCwxN1YyMEg0VjE3QzQsMTQuMzMgOS4zMywxMyAxMiwxM00xMiwxNC45QzkuMDMsMTQuOSA1LjksMTYuMzYgNS45LDE3VjE4LjFIMTguMVYxN0MxOC4xLDE2LjM2IDE0Ljk3LDE0LjkgMTIsMTQuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UGx1cyA9IFwiTTE1LDE0QzEyLjMzLDE0IDcsMTUuMzMgNywxOFYyMEgyM1YxOEMyMywxNS4zMyAxNy42NywxNCAxNSwxNE02LDEwVjdINFYxMEgxVjEySDRWMTVINlYxMkg5VjEwTTE1LDEyQTQsNCAwIDAsMCAxOSw4QTQsNCAwIDAsMCAxNSw0QTQsNCAwIDAsMCAxMSw4QTQsNCAwIDAsMCAxNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UGx1c091dGxpbmUgPSBcIk0xNSw0QTQsNCAwIDAsMCAxMSw4QTQsNCAwIDAsMCAxNSwxMkE0LDQgMCAwLDAgMTksOEE0LDQgMCAwLDAgMTUsNE0xNSw1LjlDMTYuMTYsNS45IDE3LjEsNi44NCAxNy4xLDhDMTcuMSw5LjE2IDE2LjE2LDEwLjEgMTUsMTAuMUEyLjEsMi4xIDAgMCwxIDEyLjksOEEyLjEsMi4xIDAgMCwxIDE1LDUuOU00LDdWMTBIMVYxMkg0VjE1SDZWMTJIOVYxMEg2VjdINE0xNSwxM0MxMi4zMywxMyA3LDE0LjMzIDcsMTdWMjBIMjNWMTdDMjMsMTQuMzMgMTcuNjcsMTMgMTUsMTNNMTUsMTQuOUMxNy45NywxNC45IDIxLjEsMTYuMzYgMjEuMSwxN1YxOC4xSDguOVYxN0M4LjksMTYuMzYgMTIsMTQuOSAxNSwxNC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRRdWVzdGlvbiA9IFwiTTEzLDhBNCw0IDAgMCwxIDksMTJBNCw0IDAgMCwxIDUsOEE0LDQgMCAwLDEgOSw0QTQsNCAwIDAsMSAxMyw4TTE3LDE4VjIwSDFWMThDMSwxNS43OSA0LjU4LDE0IDksMTRDMTMuNDIsMTQgMTcsMTUuNzkgMTcsMThNMjAuNSwxNC41VjE2SDE5VjE0LjVIMjAuNU0xOC41LDkuNUgxN1Y5QTMsMyAwIDAsMSAyMCw2QTMsMyAwIDAsMSAyMyw5QzIzLDkuOTcgMjIuNSwxMC44OCAyMS43MSwxMS40MUwyMS40MSwxMS42QzIwLjg0LDEyIDIwLjUsMTIuNjEgMjAuNSwxMy4zVjEzLjVIMTlWMTMuM0MxOSwxMi4xMSAxOS42LDExIDIwLjU5LDEwLjM1TDIwLjg4LDEwLjE2QzIxLjI3LDkuOSAyMS41LDkuNDcgMjEuNSw5QTEuNSwxLjUgMCAwLDAgMjAsNy41QTEuNSwxLjUgMCAwLDAgMTguNSw5VjkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UXVlc3Rpb25PdXRsaW5lID0gXCJNMjAuNSwxNC41VjE2SDE5VjE0LjVIMjAuNU0xOC41LDkuNUgxN1Y5QTMsMyAwIDAsMSAyMCw2QTMsMyAwIDAsMSAyMyw5QzIzLDkuOTcgMjIuNSwxMC44OCAyMS43MSwxMS40MUwyMS40MSwxMS42QzIwLjg0LDEyIDIwLjUsMTIuNjEgMjAuNSwxMy4zVjEzLjVIMTlWMTMuM0MxOSwxMi4xMSAxOS42LDExIDIwLjU5LDEwLjM1TDIwLjg4LDEwLjE2QzIxLjI3LDkuOSAyMS41LDkuNDcgMjEuNSw5QTEuNSwxLjUgMCAwLDAgMjAsNy41QTEuNSwxLjUgMCAwLDAgMTguNSw5VjkuNU05LDEzQzExLjY3LDEzIDE3LDE0LjM0IDE3LDE3VjIwSDFWMTdDMSwxNC4zNCA2LjMzLDEzIDksMTNNOSw0QTQsNCAwIDAsMSAxMyw4QTQsNCAwIDAsMSA5LDEyQTQsNCAwIDAsMSA1LDhBNCw0IDAgMCwxIDksNE05LDE0LjlDNi4wMywxNC45IDIuOSwxNi4zNiAyLjksMTdWMTguMUgxNS4xVjE3QzE1LjEsMTYuMzYgMTEuOTcsMTQuOSA5LDE0LjlNOSw1LjlBMi4xLDIuMSAwIDAsMCA2LjksOEEyLjEsMi4xIDAgMCwwIDksMTAuMUEyLjEsMi4xIDAgMCwwIDExLjEsOEEyLjEsMi4xIDAgMCwwIDksNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRSZWFjdGl2YXRlID0gXCJNMjEuNSA5SDE2LjVMMTguMzYgNy4xNEMxNi45IDUuMjMgMTQuNTkgNCAxMiA0QzcuNTggNCA0IDcuNTggNCAxMkM0IDEzLjgzIDQuNjEgMTUuNSA1LjY0IDE2Ljg1QzYuODYgMTUuNDUgOS4xNSAxNC41IDEyIDE0LjVDMTQuODUgMTQuNSAxNy4xNSAxNS40NSAxOC4zNiAxNi44NUMxOS4zOSAxNS41IDIwIDEzLjgzIDIwIDEySDIyQzIyIDE3LjUgMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMkMxNS4xNCAyIDE3Ljk1IDMuNDUgMTkuNzggNS43MkwyMS41IDRWOU0xMiA3QzEzLjY2IDcgMTUgOC4zNCAxNSAxMEMxNSAxMS42NiAxMy42NiAxMyAxMiAxM0MxMC4zNCAxMyA5IDExLjY2IDkgMTBDOSA4LjM0IDEwLjM0IDcgMTIgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UmVhY3RpdmF0ZU91dGxpbmUgPSBcIk0yMS41IDlIMTYuNUwxOC4zNiA3LjE0QzE2LjkgNS4yMyAxNC41OSA0IDEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTMuODMgNC42MSAxNS41IDUuNjQgMTYuODVDNi44NiAxNS40NSA5LjE1IDE0LjUgMTIgMTQuNUMxNC44NSAxNC41IDE3LjE1IDE1LjQ1IDE4LjM2IDE2Ljg1QzE5LjM5IDE1LjUgMjAgMTMuODMgMjAgMTJIMjJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyQzE1LjE0IDIgMTcuOTUgMy40NSAxOS43OCA1LjcyTDIxLjUgNFY5TTEyIDIwQzEzLjkgMjAgMTUuNjQgMTkuMzQgMTcgMTguMjRDMTYuMzYgMTcuMjMgMTQuNDUgMTYuNSAxMiAxNi41QzkuNTUgMTYuNSA3LjY0IDE3LjIzIDcgMTguMjRDOC4zNiAxOS4zNCAxMC4xIDIwIDEyIDIwTTEyIDZDMTMuOTMgNiAxNS41IDcuNTcgMTUuNSA5LjVDMTUuNSAxMS40MyAxMy45MyAxMyAxMiAxM0MxMC4wNyAxMyA4LjUgMTEuNDMgOC41IDkuNUM4LjUgNy41NyAxMC4wNyA2IDEyIDZNMTIgOEMxMS4xNyA4IDEwLjUgOC42NyAxMC41IDkuNUMxMC41IDEwLjMzIDExLjE3IDExIDEyIDExQzEyLjgzIDExIDEzLjUgMTAuMzMgMTMuNSA5LjVDMTMuNSA4LjY3IDEyLjgzIDggMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50UmVtb3ZlID0gXCJNMTUsMTRDMTcuNjcsMTQgMjMsMTUuMzMgMjMsMThWMjBIN1YxOEM3LDE1LjMzIDEyLjMzLDE0IDE1LDE0TTE1LDEyQTQsNCAwIDAsMSAxMSw4QTQsNCAwIDAsMSAxNSw0QTQsNCAwIDAsMSAxOSw4QTQsNCAwIDAsMSAxNSwxMk01LDkuNTlMNy4xMiw3LjQ2TDguNTQsOC44OEw2LjQxLDExTDguNTQsMTMuMTJMNy4xMiwxNC41NEw1LDEyLjQxTDIuODgsMTQuNTRMMS40NiwxMy4xMkwzLjU5LDExTDEuNDYsOC44OEwyLjg4LDcuNDZMNSw5LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRSZW1vdmVPdXRsaW5lID0gXCJNMS40Niw4Ljg4TDIuODgsNy40Nkw1LDkuNTlMNy4xMiw3LjQ2TDguNTQsOC44OEw2LjQxLDExTDguNTQsMTMuMTJMNy4xMiwxNC41NEw1LDEyLjQxTDIuODgsMTQuNTRMMS40NiwxMy4xMkwzLjU5LDExTDEuNDYsOC44OE0xNSw0QTQsNCAwIDAsMSAxOSw4QTQsNCAwIDAsMSAxNSwxMkE0LDQgMCAwLDEgMTEsOEE0LDQgMCAwLDEgMTUsNE0xNSw1LjlBMi4xLDIuMSAwIDAsMCAxMi45LDhBMi4xLDIuMSAwIDAsMCAxNSwxMC4xQzE2LjE2LDEwLjEgMTcuMSw5LjE2IDE3LjEsOEMxNy4xLDYuODQgMTYuMTYsNS45IDE1LDUuOU0xNSwxM0MxNy42NywxMyAyMywxNC4zMyAyMywxN1YyMEg3VjE3QzcsMTQuMzMgMTIuMzMsMTMgMTUsMTNNMTUsMTQuOUMxMiwxNC45IDguOSwxNi4zNiA4LjksMTdWMTguMUgyMS4xVjE3QzIxLjEsMTYuMzYgMTcuOTcsMTQuOSAxNSwxNC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTZWFyY2ggPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0xMCw0QTQsNCAwIDAsMSAxNCw4QzE0LDguOTEgMTMuNjksOS43NSAxMy4xOCwxMC40M0MxMi4zMiwxMC43NSAxMS41NSwxMS4yNiAxMC45MSwxMS45TDEwLDEyQTQsNCAwIDAsMSA2LDhBNCw0IDAgMCwxIDEwLDRNMiwyMFYxOEMyLDE1Ljg4IDUuMzEsMTQuMTQgOS41LDE0QzkuMTgsMTQuNzggOSwxNS42MiA5LDE2LjVDOSwxNy43OSA5LjM4LDE5IDEwLDIwSDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFNlYXJjaE91dGxpbmUgPSBcIk0xMCwxM0M5LjY1LDEzLjU5IDkuMzYsMTQuMjQgOS4xOSwxNC45M0M2LjUsMTUuMTYgMy45LDE2LjQyIDMuOSwxN1YxOC4xSDkuMkM5LjM3LDE4Ljc4IDkuNjUsMTkuNDIgMTAsMjBIMlYxN0MyLDE0LjM0IDcuMzMsMTMgMTAsMTNNMTAsNEE0LDQgMCAwLDEgMTQsOEMxNCw4LjkxIDEzLjY5LDkuNzUgMTMuMTgsMTAuNDNDMTIuMzIsMTAuNzUgMTEuNTUsMTEuMjYgMTAuOTEsMTEuOUwxMCwxMkE0LDQgMCAwLDEgNiw4QTQsNCAwIDAsMSAxMCw0TTEwLDUuOUEyLjEsMi4xIDAgMCwwIDcuOSw4QTIuMSwyLjEgMCAwLDAgMTAsMTAuMUEyLjEsMi4xIDAgMCwwIDEyLjEsOEEyLjEsMi4xIDAgMCwwIDEwLDUuOU0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U2V0dGluZ3MgPSBcIk0xMiw0QTQsNCAwIDAsMSAxNiw4QTQsNCAwIDAsMSAxMiwxMkE0LDQgMCAwLDEgOCw4QTQsNCAwIDAsMSAxMiw0TTEyLDE0QzE2LjQyLDE0IDIwLDE1Ljc5IDIwLDE4VjIwSDRWMThDNCwxNS43OSA3LjU4LDE0IDEyLDE0TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTZXR0aW5nc091dGxpbmUgPSBcIk0xMiA0QzE0LjIxIDQgMTYgNS43OSAxNiA4UzE0LjIxIDEyIDEyIDEyIDggMTAuMjEgOCA4IDkuNzkgNCAxMiA0TTEyIDZDMTAuOSA2IDEwIDYuOSAxMCA4UzEwLjkgMTAgMTIgMTAgMTQgOS4xMSAxNCA4IDEzLjExIDYgMTIgNk0xMiAxM0MxNC42NyAxMyAyMCAxNC4zMyAyMCAxN1YyMEg0VjE3QzQgMTQuMzMgOS4zMyAxMyAxMiAxM00xMiAxNC45QzkuMDMgMTQuOSA1LjkgMTYuMzYgNS45IDE3VjE4LjFIMTguMVYxN0MxOC4xIDE2LjM2IDE0Ljk3IDE0LjkgMTIgMTQuOU0xMyAyMkgxMVYyNEgxM1YyMk0xNyAyMkgxNVYyNEgxN1YyMk05IDIySDdWMjRIOVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3RhciA9IFwiTTE1LDE0QzEyLjMzLDE0IDcsMTUuMzMgNywxOFYyMEgyM1YxOEMyMywxNS4zMyAxNy42NywxNCAxNSwxNE0xNSwxMkE0LDQgMCAwLDAgMTksOEE0LDQgMCAwLDAgMTUsNEE0LDQgMCAwLDAgMTEsOEE0LDQgMCAwLDAgMTUsMTJNNSwxMy4yOEw3LjQ1LDE0Ljc3TDYuOCwxMS45Nkw5LDEwLjA4TDYuMTEsOS44M0w1LDcuMTlMMy44Nyw5LjgzTDEsMTAuMDhMMy4xOCwxMS45NkwyLjUsMTQuNzdMNSwxMy4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3Rhck91dGxpbmUgPSBcIk0xNSw0QTQsNCAwIDAsMSAxOSw4QTQsNCAwIDAsMSAxNSwxMkE0LDQgMCAwLDEgMTEsOEE0LDQgMCAwLDEgMTUsNE0xNSw1LjlBMi4xLDIuMSAwIDAsMCAxMi45LDhBMi4xLDIuMSAwIDAsMCAxNSwxMC4xQzE2LjE2LDEwLjEgMTcuMSw5LjE2IDE3LjEsOEMxNy4xLDYuODQgMTYuMTYsNS45IDE1LDUuOU0xNSwxM0MxNy42NywxMyAyMywxNC4zMyAyMywxN1YyMEg3VjE3QzcsMTQuMzMgMTIuMzMsMTMgMTUsMTNNMTUsMTQuOUMxMiwxNC45IDguOSwxNi4zNiA4LjksMTdWMTguMUgyMS4xVjE3QzIxLjEsMTYuMzYgMTcuOTcsMTQuOSAxNSwxNC45TTUsMTMuMjhMMi41LDE0Ljc3TDMuMTgsMTEuOTZMMSwxMC4wOEwzLjg3LDkuODNMNSw3LjE5TDYuMTEsOS44M0w5LDEwLjA4TDYuOCwxMS45Nkw3LjQ1LDE0Ljc3TDUsMTMuMjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFN1cGVydmlzb3IgPSBcIk0xNi41LDEyQTIuNSwyLjUgMCAwLDAgMTksOS41QTIuNSwyLjUgMCAwLDAgMTYuNSw3QTIuNSwyLjUgMCAwLDAgMTQsOS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxMk05LDExQTMsMyAwIDAsMCAxMiw4QTMsMyAwIDAsMCA5LDVBMywzIDAgMCwwIDYsOEEzLDMgMCAwLDAgOSwxMU0xNi41LDE0QzE0LjY3LDE0IDExLDE0LjkyIDExLDE2Ljc1VjE5SDIyVjE2Ljc1QzIyLDE0LjkyIDE4LjMzLDE0IDE2LjUsMTRNOSwxM0M2LjY3LDEzIDIsMTQuMTcgMiwxNi41VjE5SDlWMTYuNzVDOSwxNS45IDkuMzMsMTQuNDEgMTEuMzcsMTMuMjhDMTAuNSwxMy4xIDkuNjYsMTMgOSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3VwZXJ2aXNvckNpcmNsZSA9IFwiTTEyLDJDNi40NywyIDIsNi41IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNS42LDguMzRDMTYuNjcsOC4zNCAxNy41Myw5LjIgMTcuNTMsMTAuMjdDMTcuNTMsMTEuMzQgMTYuNjcsMTIuMiAxNS42LDEyLjJBMS45MywxLjkzIDAgMCwxIDEzLjY3LDEwLjI3QzEzLjY2LDkuMiAxNC41Myw4LjM0IDE1LjYsOC4zNE05LjYsNi43NkMxMC45LDYuNzYgMTEuOTYsNy44MiAxMS45Niw5LjEyQzExLjk2LDEwLjQyIDEwLjksMTEuNSA5LjYsMTEuNUM4LjMsMTEuNSA3LjI0LDEwLjQyIDcuMjQsOS4xMkM3LjI0LDcuODEgOC4yOSw2Ljc2IDkuNiw2Ljc2TTkuNiwxNS44OVYxOS42NEM3LjIsMTguODkgNS4zLDE3LjA0IDQuNDYsMTQuNjhDNS41LDEzLjU2IDguMTMsMTMgOS42LDEzQzEwLjEzLDEzIDEwLjgsMTMuMDcgMTEuNSwxMy4yMUM5Ljg2LDE0LjA4IDkuNiwxNS4yMyA5LjYsMTUuODlNMTIsMjBDMTEuNzIsMjAgMTEuNDYsMjAgMTEuMiwxOS45NlYxNS44OUMxMS4yLDE0LjQ3IDE0LjE0LDEzLjc2IDE1LjYsMTMuNzZDMTYuNjcsMTMuNzYgMTguNSwxNC4xNSAxOS40NCwxNC45MUMxOC4yNywxNy44OCAxNS4zOCwyMCAxMiwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBY2NvdW50U3VwZXJ2aXNvckNpcmNsZU91dGxpbmUgPSBcIk0xMi41IDEwQzEyLjUgOC4zNCAxMS4xNiA3IDkuNSA3QzcuODYgNyA2LjUgOC4zNCA2LjUgMTBDNi41IDExLjY0IDcuODYgMTMgOS41IDEzQzExLjE2IDEzIDEyLjUgMTEuNjQgMTIuNSAxME05LjUgMTFDOC45NiAxMSA4LjUgMTAuNTQgOC41IDEwQzguNSA5LjQ0IDguOTYgOSA5LjUgOUMxMC4wNiA5IDEwLjUgOS40NCAxMC41IDEwQzEwLjUgMTAuNTQgMTAuMDYgMTEgOS41IDExTTE2IDEzQzE3LjEyIDEzIDE4IDEyLjEgMTggMTFDMTggOS44OCAxNy4xMiA5IDE2IDlDMTQuOSA5IDE0IDkuODggMTQgMTFDMTQgMTIuMSAxNC45IDEzIDE2IDEzTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJNNS44NSAxNy4xMUM2LjUzIDE2LjU3IDguMTIgMTYgOS41IDE2QzkuNTggMTYgOS42NiAxNiA5Ljc0IDE2QzEwIDE1LjM3IDEwLjQxIDE0LjcyIDExLjA0IDE0LjE1QzEwLjUgMTQuMDUgOS45NSAxNCA5LjUgMTRDOC4yMSAxNCA2LjEyIDE0LjQ0IDQuNzggMTUuNDJDNC4yOCAxNC4zOCA0IDEzLjIyIDQgMTJDNCA3LjU4IDcuNTkgNCAxMiA0QzE2LjQxIDQgMjAgNy41OCAyMCAxMkMyMCAxMy4xOSAxOS43MyAxNC4zMyAxOS4yNSAxNS4zNkMxOC4yNSAxNC43NyAxNi44OSAxNC41IDE2IDE0LjVDMTQuNSAxNC41IDExLjUgMTUuMyAxMS41IDE3LjE5VjE5Ljk3QzkuMjQgMTkuODQgNy4yMiAxOC43NiA1Ljg1IDE3LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTdXBlcnZpc29yT3V0bGluZSA9IFwiTTE2LjUgMTUuNUMxOC4yMiAxNS41IDIwLjI1IDE2LjMgMjAuNSAxNi43OFYxNy41SDEyLjVWMTYuNzhDMTIuNzUgMTYuMyAxNC43OCAxNS41IDE2LjUgMTUuNU0xNi41IDE0QzE0LjY3IDE0IDExIDE0LjkyIDExIDE2Ljc1VjE5SDIyVjE2Ljc1QzIyIDE0LjkyIDE4LjMzIDE0IDE2LjUgMTRNOSAxM0M2LjY3IDEzIDIgMTQuMTcgMiAxNi41VjE5SDlWMTcuNUgzLjVWMTYuNUMzLjUgMTUuODcgNi4yOSAxNC4zNCA5LjgyIDE0LjVBNS4xMiA1LjEyIDAgMCAxIDExLjM3IDEzLjI1QTEyLjI4IDEyLjI4IDAgMCAwIDkgMTNNOSA2LjVBMS41IDEuNSAwIDEgMSA3LjUgOEExLjUgMS41IDAgMCAxIDkgNi41TTkgNUEzIDMgMCAxIDAgMTIgOEEzIDMgMCAwIDAgOSA1TTE2LjUgOC41QTEgMSAwIDEgMSAxNS41IDkuNUExIDEgMCAwIDEgMTYuNSA4LjVNMTYuNSA3QTIuNSAyLjUgMCAxIDAgMTkgOS41QTIuNSAyLjUgMCAwIDAgMTYuNSA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTd2l0Y2ggPSBcIk0xNiA5QzIyIDkgMjIgMTMgMjIgMTNWMTVIMTZWMTNDMTYgMTMgMTYgMTEuMzEgMTQuODUgOS44QzE0LjY4IDkuNTcgMTQuNDcgOS4zNSAxNC4yNSA5LjE0QzE0Ljc3IDkuMDYgMTUuMzQgOSAxNiA5TTIgMTNDMiAxMyAyIDkgOCA5UzE0IDEzIDE0IDEzVjE1SDJWMTNNOSAxN1YxOUgxNVYxN0wxOCAyMEwxNSAyM1YyMUg5VjIzTDYgMjBMOSAxN004IDFDNi4zNCAxIDUgMi4zNCA1IDRTNi4zNCA3IDggNyAxMSA1LjY2IDExIDQgOS42NiAxIDggMU0xNiAxQzE0LjM0IDEgMTMgMi4zNCAxMyA0UzE0LjM0IDcgMTYgNyAxOSA1LjY2IDE5IDQgMTcuNjYgMSAxNiAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRTd2l0Y2hPdXRsaW5lID0gXCJNMTYgOUMyMiA5IDIyIDEzIDIyIDEzVjE1SDE2VjEzQzE2IDEzIDE2IDExLjMxIDE0Ljg1IDkuOEMxNC42OCA5LjU3IDE0LjQ3IDkuMzUgMTQuMjUgOS4xNEMxNC43NyA5LjA2IDE1LjM0IDkgMTYgOU04IDExQzExLjUgMTEgMTEuOTQgMTIuNTYgMTIgMTNINEM0LjA2IDEyLjU2IDQuNSAxMSA4IDExTTggOUMyIDkgMiAxMyAyIDEzVjE1SDE0VjEzQzE0IDEzIDE0IDkgOCA5TTkgMTdWMTlIMTVWMTdMMTggMjBMMTUgMjNWMjFIOVYyM0w2IDIwTDkgMTdNOCAzQzguNTUgMyA5IDMuNDUgOSA0UzguNTUgNSA4IDUgNyA0LjU1IDcgNCA3LjQ1IDMgOCAzTTggMUM2LjM0IDEgNSAyLjM0IDUgNFM2LjM0IDcgOCA3IDExIDUuNjYgMTEgNCA5LjY2IDEgOCAxTTE2IDFDMTQuMzQgMSAxMyAyLjM0IDEzIDRTMTQuMzQgNyAxNiA3IDE5IDUuNjYgMTkgNCAxNy42NiAxIDE2IDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZSA9IFwiTTEyIDNDMTQuMjEgMyAxNiA0Ljc5IDE2IDdTMTQuMjEgMTEgMTIgMTEgOCA5LjIxIDggNyA5Ljc5IDMgMTIgM00xNiAxMy41NEMxNiAxNC42IDE1LjcyIDE3LjA3IDEzLjgxIDE5LjgzTDEzIDE1TDEzLjk0IDEzLjEyQzEzLjMyIDEzLjA1IDEyLjY3IDEzIDEyIDEzUzEwLjY4IDEzLjA1IDEwLjA2IDEzLjEyTDExIDE1TDEwLjE5IDE5LjgzQzguMjggMTcuMDcgOCAxNC42IDggMTMuNTRDNS42MSAxNC4yNCA0IDE1LjUgNCAxN1YyMUgyMFYxN0MyMCAxNS41IDE4LjQgMTQuMjQgMTYgMTMuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZU91dGxpbmUgPSBcIk0xNi4zNiAxMi43NkMxOC4zMSAxMy40MiAyMCAxNC41IDIwIDE2VjIxSDRWMTZDNCAxNC41IDUuNjkgMTMuNDIgNy42NSAxMi43Nkw4LjI3IDE0TDguNSAxNC41QzcgMTQuOTYgNS45IDE1LjYyIDUuOSAxNlYxOS4xSDEwLjEyTDExIDE0LjAzTDEwLjA2IDEyLjE1QzEwLjY4IDEyLjA4IDExLjMzIDEyLjAzIDEyIDEyLjAzQzEyLjY3IDEyLjAzIDEzLjMyIDEyLjA4IDEzLjk0IDEyLjE1TDEzIDE0LjAzTDEzLjg4IDE5LjFIMTguMVYxNkMxOC4xIDE1LjYyIDE3IDE0Ljk2IDE1LjUgMTQuNUwxNS43MyAxNEwxNi4zNiAxMi43Nk0xMiA1QzEwLjkgNSAxMCA1LjkgMTAgN0MxMCA4LjEgMTAuOSA5IDEyIDlDMTMuMSA5IDE0IDguMSAxNCA3QzE0IDUuOSAxMy4xIDUgMTIgNU0xMiAxMUM5Ljc5IDExIDggOS4yMSA4IDdDOCA0Ljc5IDkuNzkgMyAxMiAzQzE0LjIxIDMgMTYgNC43OSAxNiA3QzE2IDkuMjEgMTQuMjEgMTEgMTIgMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZVZvaWNlID0gXCJNMTYuNzUgNC4zNkMxOC43NyA2LjU2IDE4Ljc3IDkuNjEgMTYuNzUgMTEuNjNMMTUuMDcgOS45NEMxNS45MSA4Ljc2IDE1LjkxIDcuMjMgMTUuMDcgNi4wNUwxNi43NSA0LjM2TTIwLjA2IDFDMjQgNS4wNSAyMy45NiAxMS4xMSAyMC4wNiAxNUwxOC40MyAxMy4zN0MyMS4yIDEwLjE5IDIxLjIgNS42NSAxOC40MyAyLjYzTDIwLjA2IDFNOSA0QzExLjIgNCAxMyA1Ljc5IDEzIDhTMTEuMiAxMiA5IDEyIDUgMTAuMjEgNSA4IDYuNzkgNCA5IDRNMTMgMTQuNTRDMTMgMTUuNiAxMi43MSAxOC4wNyAxMC44IDIwLjgzTDEwIDE2TDEwLjkzIDE0LjEyQzEwLjMxIDE0LjA1IDkuNjYgMTQgOSAxNFM3LjY3IDE0LjA1IDcuMDUgMTQuMTJMOCAxNkw3LjE4IDIwLjgzQzUuMjcgMTguMDcgNSAxNS42IDUgMTQuNTRDMi42IDE1LjI0IC45OTQgMTYuNSAuOTk0IDE4VjIySDE3VjE4QzE3IDE2LjUgMTUuMzkgMTUuMjQgMTMgMTQuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZVZvaWNlT2ZmID0gXCJNMTIuNyA5LjVMNy41IDQuM0M3Ljk2IDQuMTEgOC40NiA0IDkgNEMxMS4yIDQgMTMgNS43OSAxMyA4QzEzIDguNTMgMTIuODkgOS4wNCAxMi43IDkuNU0xNi43NSAxMS42M0MxOC43NyA5LjYxIDE4Ljc3IDYuNTYgMTYuNzUgNC4zNkwxNS4wNyA2LjA1QzE1LjkxIDcuMjMgMTUuOTEgOC43NiAxNS4wNyA5Ljk0TDE2Ljc1IDExLjYzTTIwLjA2IDE1QzIzLjk2IDExLjExIDI0IDUuMDUgMjAuMDYgMUwxOC40MyAyLjYzQzIxLjIgNS42NSAyMS4yIDEwLjE5IDE4LjQzIDEzLjM3TDIwLjA2IDE1TTIuMzkgMS43M0wxLjExIDNMNS4xMyA3QzUuMDUgNy4zNCA1IDcuNjYgNSA4QzUgMTAuMjEgNi43OSAxMiA5IDEyQzkuMzMgMTIgOS42NiAxMS45NCA5Ljk3IDExLjg2TDEzIDE0Ljg3QzEyLjkzIDE2LjA2IDEyLjU0IDE4LjMyIDEwLjggMjAuODNMMTAgMTZMMTAuOTMgMTQuMTJDMTAuMzEgMTQuMDUgOS42NiAxNCA5IDE0QzguMzIgMTQgNy42NyAxNC4wNSA3LjA1IDE0LjEyTDggMTZMNy4xOCAyMC44M0M1LjI3IDE4LjA3IDUgMTUuNiA1IDE0LjU0QzIuNiAxNS4yNCAuOTk0IDE2LjUgLjk5NCAxOFYyMkgxN1YxOC44OEwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFRpZVZvaWNlT2ZmT3V0bGluZSA9IFwiTTkuMjIgNkw3LjUgNC4zQzcuOTYgNC4xMSA4LjQ3IDQgOSA0QzExLjIxIDQgMTMgNS43OSAxMyA4QzEzIDguNTMgMTIuODkgOS4wNCAxMi43IDkuNUwxMSA3Ljc4QzEwLjg3IDYuODYgMTAuMTQgNi4xMyA5LjIyIDZNMjAuMDYgMTVDMjMuOTYgMTEuMTEgMjQgNS4wNSAyMC4wNiAxTDE4LjQzIDIuNjNDMjEuMiA1LjY1IDIxLjIgMTAuMTkgMTguNDMgMTMuMzdMMjAuMDYgMTVNMTYuNzUgMTEuNjNDMTguNzcgOS42MSAxOC43NyA2LjU2IDE2Ljc1IDQuMzZMMTUuMDcgNi4wNUMxNS45MSA3LjIzIDE1LjkxIDguNzYgMTUuMDcgOS45NEwxNi43NSAxMS42M00yLjM5IDEuNzNMMS4xMSAzTDUuMTQgNy4wM0M1LjA2IDcuMzQgNSA3LjY2IDUgOEM1IDEwLjIxIDYuNzkgMTIgOSAxMkM5LjM0IDEyIDkuNjYgMTEuOTQgOS45NyAxMS44NkwxMi44NiAxNC43NUwxMi43MyAxNUwxMi41IDE1LjVDMTMuMyAxNS43NCAxMy45NyAxNi4wNSAxNC40NCAxNi4zM0wxNS4xIDE3VjIwLjFIMTAuODhMMTAgMTUuMDNMMTAuOTQgMTMuMTVDMTAuMzIgMTMuMDggOS42NyAxMy4wMyA5IDEzLjAzUzcuNjggMTMuMDggNy4wNiAxMy4xNUw4IDE1LjAzTDcuMTIgMjAuMUgyLjlWMTdDMi45IDE2LjYyIDQgMTUuOTYgNS41IDE1LjVMNS4yNyAxNUw0LjY1IDEzLjc2QzIuNjkgMTQuNDIgMSAxNS41IDEgMTdWMjJIMTdWMTguODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFjY291bnRUaWVWb2ljZU91dGxpbmUgPSBcIk0xNi43NSA0LjM2QzE4Ljc3IDYuNTYgMTguNzcgOS42MSAxNi43NSAxMS42M0wxNS4wNyA5Ljk0QzE1LjkxIDguNzYgMTUuOTEgNy4yMyAxNS4wNyA2LjA1TDE2Ljc1IDQuMzZNMjAuMDYgMUMyNCA1LjA1IDIzLjk2IDExLjExIDIwLjA2IDE1TDE4LjQzIDEzLjM3QzIxLjIgMTAuMTkgMjEuMiA1LjY1IDE4LjQzIDIuNjNMMjAuMDYgMU0xMy4zNiAxMy43NkMxNS4zMSAxNC40MiAxNyAxNS41IDE3IDE3VjIySDFWMTdDMSAxNS41IDIuNjkgMTQuNDIgNC42NSAxMy43Nkw1LjI3IDE1TDUuNSAxNS41QzQgMTUuOTYgMi45IDE2LjYyIDIuOSAxN1YyMC4xSDcuMTJMOCAxNS4wM0w3LjA2IDEzLjE1QzcuNjggMTMuMDggOC4zMyAxMy4wMyA5IDEzLjAzUzEwLjMyIDEzLjA4IDEwLjk0IDEzLjE1TDEwIDE1LjAzTDEwLjg4IDIwLjFIMTUuMVYxN0MxNS4xIDE2LjYyIDE0IDE1Ljk2IDEyLjUgMTUuNUwxMi43MyAxNUwxMy4zNiAxMy43Nk05IDZDNy45IDYgNyA2LjkgNyA4UzcuOSAxMCA5IDEwIDExIDkuMSAxMSA4IDEwLjEgNiA5IDZNOSAxMkM2Ljc5IDEyIDUgMTAuMjEgNSA4UzYuNzkgNCA5IDQgMTMgNS43OSAxMyA4IDExLjIxIDEyIDkgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWNjb3VudFZvaWNlID0gXCJNOSw1QTQsNCAwIDAsMSAxMyw5QTQsNCAwIDAsMSA5LDEzQTQsNCAwIDAsMSA1LDlBNCw0IDAgMCwxIDksNU05LDE1QzExLjY3LDE1IDE3LDE2LjM0IDE3LDE5VjIxSDFWMTlDMSwxNi4zNCA2LjMzLDE1IDksMTVNMTYuNzYsNS4zNkMxOC43OCw3LjU2IDE4Ljc4LDEwLjYxIDE2Ljc2LDEyLjYzTDE1LjA4LDEwLjk0QzE1LjkyLDkuNzYgMTUuOTIsOC4yMyAxNS4wOCw3LjA1TDE2Ljc2LDUuMzZNMjAuMDcsMkMyNCw2LjA1IDIzLjk3LDEyLjExIDIwLjA3LDE2TDE4LjQ0LDE0LjM3QzIxLjIxLDExLjE5IDIxLjIxLDYuNjUgMTguNDQsMy42M0wyMC4wNywyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFkanVzdCA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTUsMTJBMywzIDAgMCwxIDEyLDE1QTMsMyAwIDAsMSA5LDEyQTMsMyAwIDAsMSAxMiw5QTMsMyAwIDAsMSAxNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBZG9iZSA9IFwiTTE0LjU4LDNIMjJWMTkuNjdMMTQuNTgsM005LjQyLDNIMlYxOS42N0w5LjQyLDNNMTIsOS4xN0wxNi42NywxOS42N0gxMy41TDEyLjE3LDE2LjMzSDguNzVMMTIsOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBZG9iZUFjcm9iYXQgPSBcIk0yMS44IDE0LjVDMjEuMyAxMy43IDIwLjEgMTMuNCAxOC4xIDEzLjRDMTcuNCAxMy40IDE2LjcgMTMuNCAxNiAxMy41QzE1LjUgMTMuMiAxNSAxMi45IDE0LjYgMTIuNkMxMy42IDExLjggMTIuNyAxMC4zIDEyIDguNUMxMiA4LjUgMTIgOC40IDEyLjEgOC4zQzEyLjYgNi4yIDEzLjEgMy42IDEyLjEgMi41QzExLjggMi4yIDExLjUgMi4xIDExLjEgMi4xSDEwLjdDMTAuMSAyLjEgOS42IDIuNyA5LjQgMy4zQzguOCA1LjQgOS4yIDYuNiA5LjggOC41QzkuNCAxMCA4LjkgMTEuNiA4IDEzLjNDNy41IDE0LjQgNi45IDE1LjQgNi41IDE2LjJDNS45IDE2LjUgNS40IDE2LjggNS4xIDE3QzMuMiAxOC4yIDIuMiAxOS42IDIuMSAyMC40QzIgMjAuNyAyIDIxIDIuMSAyMS4yVjIxLjNMMi45IDIxLjhDMy4xIDIxLjkgMy40IDIyIDMuNiAyMkM0LjkgMjIgNi40IDIwLjUgOC40IDE3QzguNSAxNyA4LjYgMTYuOSA4LjcgMTYuOUMxMC40IDE2LjQgMTIuNCAxNiAxNS4yIDE1LjdDMTYuOCAxNi41IDE4LjggMTYuOSAyMCAxNi45QzIwLjcgMTYuOSAyMS4yIDE2LjcgMjEuNSAxNi40QzIxLjggMTYuMSAyMS45IDE1LjcgMjIgMTUuM0MyMiAxNSAyMiAxNC43IDIxLjggMTQuNU0zLjQgMjAuOUMzLjUgMjAuMyA0LjIgMTkuMiA1LjQgMTguMkM1LjYgMTguMSA1LjggMTcuOSA2LjIgMTcuN0M1IDE5LjYgNC4xIDIwLjYgMy40IDIwLjlNMTAuOCAzLjJDMTAuOSAzLjEgMTAuOSAzIDExIDNMMTEuMiAzLjFDMTEuNSAzLjUgMTEuNSA0IDExLjMgNC45VjUuMkMxMS4yIDUuNiAxMS4yIDYgMTEgNi41QzEwLjYgNSAxMC42IDMuOSAxMC44IDMuMk04LjggMTUuOEw4LjYgMTUuOUM4LjcgMTUuNCA5LjEgMTQuOCA5LjQgMTQuMkMxMC4xIDEyLjggMTAuNyAxMS41IDExIDEwLjNDMTEuNyAxMS44IDEyLjUgMTIuOSAxMy41IDEzLjhDMTMuNyAxNCAxMy45IDE0LjIgMTQuMiAxNC4zQzEyLjggMTQuNSAxMC45IDE1IDguOCAxNS44TTIwLjkgMTUuN0gyMC41QzE5LjggMTUuNyAxOC42IDE1LjQgMTcuNCAxNC45QzE3LjUgMTQuNyAxNy43IDE0LjcgMTcuOCAxNC43QzIwLjEgMTQuNyAyMC43IDE1LjEgMjAuOSAxNS4zQzIxIDE1LjQgMjEgMTUuNCAyMSAxNS41QzIxIDE1LjYgMjEgMTUuNiAyMC45IDE1LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlyQ29uZGl0aW9uZXIgPSBcIk02LjU5LDAuNjZDOC45MywtMS4xNSAxMS40NywxLjA2IDEyLjA0LDQuNUMxMi40Nyw0LjUgMTIuODksNC42MiAxMy4yNyw0Ljg0QzEzLjc5LDQuMjQgMTQuMjUsMy40MiAxNC4wNywyLjVDMTMuNjUsMC4zNSAxNi4wNiwtMS4zOSAxOC4zNSwxLjU4QzIwLjE2LDMuOTIgMTcuOTUsNi40NiAxNC41LDcuMDNDMTQuNSw3LjQ2IDE0LjM5LDcuODkgMTQuMTYsOC4yN0MxNC43Niw4Ljc4IDE1LjU4LDkuMjQgMTYuNSw5LjA2QzE4LjYzLDguNjQgMjAuMzgsMTEuMDQgMTcuNDEsMTMuMzRDMTUuMDcsMTUuMTUgMTIuNTMsMTIuOTQgMTEuOTYsOS41QzExLjUzLDkuNSAxMS4xMSw5LjM3IDEwLjc0LDkuMTVDMTAuMjIsOS43NSA5Ljc1LDEwLjU4IDkuOTMsMTEuNUMxMC4zNSwxMy42NCA3Ljk0LDE1LjM5IDUuNjUsMTIuNDJDMy44MywxMC4wNyA2LjA1LDcuNTMgOS41LDYuOTdDOS41LDYuNTQgOS42Myw2LjEyIDkuODUsNS43NEM5LjI1LDUuMjMgOC40Myw0Ljc2IDcuNSw0Ljk0QzUuMzcsNS4zNiAzLjYyLDIuOTYgNi41OSwwLjY2TTUsMTZIN0EyLDIgMCAwLDEgOSwxOFYyNEg3VjIySDVWMjRIM1YxOEEyLDIgMCAwLDEgNSwxNk01LDE4VjIwSDdWMThINU0xMi45MywxNkgxNUwxMi4wNywyNEgxMEwxMi45MywxNk0xOCwxNkgyMVYxOEgxOFYyMkgyMVYyNEgxOEEyLDIgMCAwLDEgMTYsMjJWMThBMiwyIDAgMCwxIDE4LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpckZpbHRlciA9IFwiTTE5LDE4LjMxVjIwQTIsMiAwIDAsMSAxNywyMkg3QTIsMiAwIDAsMSA1LDIwVjE2LjNDNC41NCwxNi4xMiAzLjk1LDE2IDMsMTZBMSwxIDAgMCwxIDIsMTVBMSwxIDAgMCwxIDMsMTRDMy44MiwxNCA0LjQ3LDE0LjA4IDUsMTQuMjFWMTIuM0M0LjU0LDEyLjEyIDMuOTUsMTIgMywxMkExLDEgMCAwLDEgMiwxMUExLDEgMCAwLDEgMywxMEMzLjgyLDEwIDQuNDcsMTAuMDggNSwxMC4yMVY4LjNDNC41NCw4LjEyIDMuOTUsOCAzLDhBMSwxIDAgMCwxIDIsN0ExLDEgMCAwLDEgMyw2QzMuODIsNiA0LjQ3LDYuMDggNSw2LjIxVjRBMiwyIDAgMCwxIDcsMkgxN0EyLDIgMCAwLDEgMTksNFY2LjE2QzIwLjc4LDYuNDcgMjEuNTQsNy4xMyAyMS43MSw3LjI5QzIyLjEsNy42OCAyMi4xLDguMzIgMjEuNzEsOC43MUMyMS4zMiw5LjEgMjAuOCw5LjA5IDIwLjI5LDguNzFWOC43MUMyMC4yOSw4LjcxIDE5LjI1LDggMTcsOEMxNS43NCw4IDE0LjkxLDguNDEgMTMuOTUsOC45QzEyLjkxLDkuNDEgMTEuNzQsMTAgMTAsMTBDOS42NCwxMCA5LjMxLDEwIDksOS45NlY3Ljk1QzkuMyw4IDkuNjMsOCAxMCw4QzExLjI2LDggMTIuMDksNy41OSAxMy4wNSw3LjExQzE0LjA5LDYuNTkgMTUuMjcsNiAxNyw2VjRIN1YyMEgxN1YxOEMxOC41LDE4IDE4Ljk3LDE4LjI5IDE5LDE4LjMxTTE3LDEwQzE1LjI3LDEwIDE0LjA5LDEwLjU5IDEzLjA1LDExLjExQzEyLjA5LDExLjU5IDExLjI2LDEyIDEwLDEyQzkuNjMsMTIgOS4zLDEyIDksMTEuOTVWMTMuOTZDOS4zMSwxNCA5LjY0LDE0IDEwLDE0QzExLjc0LDE0IDEyLjkxLDEzLjQxIDEzLjk1LDEyLjlDMTQuOTEsMTIuNDIgMTUuNzQsMTIgMTcsMTJDMTkuMjUsMTIgMjAuMjksMTIuNzEgMjAuMjksMTIuNzFWMTIuNzFDMjAuOCwxMy4xIDIxLjMyLDEzLjEgMjEuNzEsMTIuNzFDMjIuMSwxMi4zMiAyMi4xLDExLjY5IDIxLjcxLDExLjI5QzIxLjUsMTEuMDggMjAuMjUsMTAgMTcsMTBNMTcsMTRDMTUuMjcsMTQgMTQuMDksMTQuNTkgMTMuMDUsMTUuMTFDMTIuMDksMTUuNTkgMTEuMjYsMTYgMTAsMTZDOS42MywxNiA5LjMsMTYgOSwxNS45NVYxNy45NkM5LjMxLDE4IDkuNjQsMTggMTAsMThDMTEuNzQsMTggMTIuOTEsMTcuNDEgMTMuOTUsMTYuOUMxNC45MSwxNi40MiAxNS43NCwxNiAxNywxNkMxOS4yNSwxNiAyMC4yOSwxNi43MSAyMC4yOSwxNi43MVYxNi43MUMyMC44LDE3LjEgMjEuMzIsMTcuMSAyMS43MSwxNi43MUMyMi4xLDE2LjMyIDIyLjEsMTUuNjkgMjEuNzEsMTUuMjlDMjEuNSwxNS4wOCAyMC4yNSwxNCAxNywxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJIb3JuID0gXCJNMTksMi44VjZMMTksOS4yQzE5LDkuNSAxOC43LDkuOCAxOC40LDkuN0MxOC40LDkuNyAxNC41LDcuMSAxMCw3LjFWOS41SDEwLjJDMTAuNyw5LjUgMTEuMiw5LjcgMTEuNCwxMC4xTDEyLjcsMTEuOUMxMi45LDEyLjEgMTMsMTIuNCAxMywxMi42VjIwLjZDMTMsMjEuMyAxMi4zLDIyIDExLjUsMjJINi41QzUuNywyMiA1LDIxLjQgNSwyMC42VjEyLjZDNSwxMi4zIDUuMSwxMi4xIDUuMywxMS45TDYuNiwxMC4xQzYuOSw5LjcgNy4zLDkuNSA3LjgsOS41SDhWOEM3LjYsOC41IDcsOC44IDYuNCw4LjhDNS4xLDguOCA0LDcuNSA0LDZDNCw0LjUgNS4xLDMuMiA2LjQsMy4yQzcsMy4zIDcuNiwzLjYgOCw0VjIuNkgxMFY1QzE0LjUsNSAxOC40LDIuNCAxOC40LDIuNEMxOC43LDIuMyAxOSwyLjUgMTksMi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpckh1bWlkaWZpZXIgPSBcIk0xMSA5QzguNzkgOSA3IDEwLjc5IDcgMTNTOC43OSAxNyAxMSAxNyAxNSAxNS4yMSAxNSAxMyAxMy4yMSA5IDExIDlNMTEgMTVDOS45IDE1IDkgMTQuMTEgOSAxM1M5LjkgMTEgMTEgMTEgMTMgMTEuOSAxMyAxMyAxMi4xMSAxNSAxMSAxNU03IDRIMTRDMTYuMjEgNCAxOCA1Ljc5IDE4IDhWOUgxNlY4QzE2IDYuOSAxNS4xMSA2IDE0IDZIN0M1LjkgNiA1IDYuOSA1IDhWMjBIMTZWMThIMThWMjJIM1Y4QzMgNS43OSA0Ljc5IDQgNyA0TTE5IDEwLjVDMTkgMTAuNSAyMSAxMi42NyAyMSAxNEMyMSAxNS4xIDIwLjEgMTYgMTkgMTZTMTcgMTUuMSAxNyAxNEMxNyAxMi42NyAxOSAxMC41IDE5IDEwLjVcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJIdW1pZGlmaWVyT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMMy44IDUuN0MzLjMgNi4zIDMgNy4xIDMgOFYyMkgxOFYxOS45TDIwLjggMjIuN0wyMi4xIDIxLjVNOS42IDExLjVMMTIuNCAxNC4zQzEyLjEgMTQuNyAxMS42IDE1IDExIDE1QzkuOSAxNSA5IDE0LjEgOSAxM0M5IDEyLjQgOS4zIDExLjkgOS42IDExLjVNMTYgMTcuOVYyMEg1VjhDNSA3LjcgNS4xIDcuNCA1LjIgNy4xTDguMiAxMC4xQzcuNSAxMC44IDcgMTEuOSA3IDEzQzcgMTUuMiA4LjggMTcgMTEgMTdDMTIuMSAxNyAxMy4yIDE2LjUgMTMuOSAxNS44TDE2IDE3LjlNMTcgMTMuOEMxNy4xIDEyLjUgMTkgMTAuNSAxOSAxMC41UzIxIDEyLjcgMjEgMTRDMjEgMTUgMjAuMiAxNS45IDE5LjIgMTZMMTcgMTMuOE05LjIgNkw3LjIgNEgxNEMxNi4yIDQgMTggNS44IDE4IDhWOUgxNlY4QzE2IDYuOSAxNS4xIDYgMTQgNkg5LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlyUHVyaWZpZXIgPSBcIk0xMSw5QTQsNCAwIDAsMSAxNSwxM0E0LDQgMCAwLDEgMTEsMTdBNCw0IDAgMCwxIDcsMTNBNCw0IDAgMCwxIDExLDlNMTEsMTFBMiwyIDAgMCwwIDksMTNBMiwyIDAgMCwwIDExLDE1QTIsMiAwIDAsMCAxMywxM0EyLDIgMCAwLDAgMTEsMTFNNyw0SDE0QTQsNCAwIDAsMSAxOCw4VjlIMTZWOEEyLDIgMCAwLDAgMTQsNkg3QTIsMiAwIDAsMCA1LDhWMjBIMTZWMThIMThWMjJIM1Y4QTQsNCAwIDAsMSA3LDRNMTYsMTFDMTguNSwxMSAxOC41LDkgMjEsOVYxMUMxOC41LDExIDE4LjUsMTMgMTYsMTNWMTFNMTYsMTVDMTguNSwxNSAxOC41LDEzIDIxLDEzVjE1QzE4LjUsMTUgMTguNSwxNyAxNiwxN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJiYWcgPSBcIk0xNCw4QTUsNSAwIDAsMSA5LDEzQTUsNSAwIDAsMSA0LDhBNSw1IDAgMCwxIDksM0E1LDUgMCAwLDEgMTQsOE0xMC40NiwxNS41NUwxMywxOC4wM0wxMSwxOC4wNUw3LjUsMjEuNThMNiwyMC4wOUwxMC40NiwxNS41NU0xNywyQzE4LjA4LDIgMTksMi44OCAxOSw0QzE5LDUuMDggMTguMTIsNiAxNyw2QzE1LjkyLDYgMTUsNS4xMiAxNSw0QzE1LDIuOTIgMTUuODksMiAxNywyTTE0LjQxLDE1SDExLjU5TDE3LjI5LDIwLjcxTDE4LjcxLDE5LjI5TDE0LjQxLDE1TTE1LjEyLDE0LjI5TDE5LjQxLDE4LjU5TDE5LjYzLDE4LjhDMTkuODYsMTguNDIgMjAsMTggMjAsMTcuNVY5LjVBMi41LDIuNSAwIDAsMCAxNy41LDdBMi41LDIuNSAwIDAsMCAxNSw5LjVWMTQuMTdMMTUuMTIsMTQuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlyYmFsbG9vbiA9IFwiTTExLDIzQTIsMiAwIDAsMSA5LDIxVjE5SDE1VjIxQTIsMiAwIDAsMSAxMywyM0gxMU0xMiwxQzEyLjcxLDEgMTMuMzksMS4wOSAxNC4wNSwxLjI2QzE1LjIyLDIuODMgMTYsNS43MSAxNiw5QzE2LDExLjI4IDE1LjYyLDEzLjM3IDE1LDE2QTIsMiAwIDAsMSAxMywxOEgxMUEyLDIgMCAwLDEgOSwxNkM4LjM4LDEzLjM3IDgsMTEuMjggOCw5QzgsNS43MSA4Ljc4LDIuODMgOS45NSwxLjI2QzEwLjYxLDEuMDkgMTEuMjksMSAxMiwxTTIwLDhDMjAsMTEuMTggMTguMTUsMTUuOTIgMTUuNDYsMTcuMjFDMTYuNDEsMTUuMzkgMTcsMTEuODMgMTcsOUMxNyw2LjE3IDE2LjQxLDMuNjEgMTUuNDYsMS43OUMxOC4xNSwzLjA4IDIwLDQuODIgMjAsOE00LDhDNCw0LjgyIDUuODUsMy4wOCA4LjU0LDEuNzlDNy41OSwzLjYxIDcsNi4xNyA3LDlDNywxMS44MyA3LjU5LDE1LjM5IDguNTQsMTcuMjFDNS44NSwxNS45MiA0LDExLjE4IDQsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBaXJiYWxsb29uT3V0bGluZSA9IFwiTTExIDIzQzkuOSAyMyA5IDIyLjEgOSAyMVYxOUgxNVYyMUMxNSAyMi4xIDE0LjEgMjMgMTMgMjNIMTFNMTIgM0MxMi4yOCAzIDEyLjU1IDMgMTIuODEgMy4wNUMxMy40MiA0LjIyIDE0IDYuMjYgMTQgOUMxNCAxMS4xIDEzIDE2IDEzIDE2SDExQzExIDE2IDEwIDExLjEgMTAgOUMxMCA2LjI2IDEwLjU4IDQuMjIgMTEuMTkgMy4wNUMxMS40NSAzIDExLjcyIDMgMTIgM00xMiAxQzExLjI5IDEgMTAuNjEgMS4wOSA5Ljk1IDEuMjZDOC43OCAyLjgzIDggNS43MSA4IDlDOCAxMS4yOCA4LjM4IDEzLjM3IDkgMTZDOSAxNy4xIDkuOSAxOCAxMSAxOEgxM0MxNC4xIDE4IDE1IDE3LjEgMTUgMTZDMTUuNjIgMTMuMzcgMTYgMTEuMjggMTYgOUMxNiA1LjcxIDE1LjIyIDIuODMgMTQuMDUgMS4yNkMxMy4zOSAxLjA5IDEyLjcxIDEgMTIgMU00IDhDNCAxMS4xOCA1Ljg1IDE1LjkyIDguNTQgMTcuMjFDOCAxNi4yMSA3LjYxIDE0LjY3IDcuMzQgMTNDNi41NSAxMS41MyA2IDkuNjIgNiA4QzYgNi42NiA2LjQ0IDUuNjcgNy40NyA0LjhDNy43MyAzLjY3IDguMDkgMi42NSA4LjU0IDEuNzlDNS44NSAzLjA4IDQgNC44MiA0IDhNMTUuNDYgMS43OUMxNS45MSAyLjY1IDE2LjI3IDMuNjcgMTYuNTMgNC44QzE3LjU2IDUuNjcgMTggNi42NiAxOCA4QzE4IDkuNjIgMTcuNDUgMTEuNTMgMTYuNjYgMTNDMTYuMzkgMTQuNjcgMTYgMTYuMjEgMTUuNDYgMTcuMjFDMTguMTUgMTUuOTIgMjAgMTEuMTggMjAgOFMxOC4xNSAzLjA4IDE1LjQ2IDEuNzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlycGxhbmUgPSBcIk0yMSwxNlYxNEwxMyw5VjMuNUExLjUsMS41IDAgMCwwIDExLjUsMkExLjUsMS41IDAgMCwwIDEwLDMuNVY5TDIsMTRWMTZMMTAsMTMuNVYxOUw4LDIwLjVWMjJMMTEuNSwyMUwxNSwyMlYyMC41TDEzLDE5VjEzLjVMMjEsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlycGxhbmVMYW5kaW5nID0gXCJNMi41LDE5SDIxLjVWMjFIMi41VjE5TTkuNjgsMTMuMjdMMTQuMDMsMTQuNDNMMTkuMzQsMTUuODVDMjAuMTQsMTYuMDYgMjAuOTYsMTUuNTkgMjEuMTgsMTQuNzlDMjEuMzksMTQgMjAuOTIsMTMuMTcgMjAuMTIsMTIuOTVMMTQuODEsMTEuNTNMMTIuMDUsMi41TDEwLjEyLDJWMTAuMjhMNS4xNSw4Ljk1TDQuMjIsNi42M0wyLjc3LDYuMjRWMTEuNDFMNC4zNywxMS44NEw5LjY4LDEzLjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpcnBsYW5lT2ZmID0gXCJNMy4xNSw1LjI3TDguMTMsMTAuMjZMMi4xNSwxNFYxNkwxMC4xNSwxMy41VjE5TDguMTUsMjAuNVYyMkwxMS42NSwyMUwxNS4xNSwyMlYyMC41TDEzLjE1LDE5VjE1LjI3TDE4Ljg3LDIxTDIwLjE1LDE5LjczTDQuNDIsNE0xMy4xNSw5VjMuNUExLjUsMS41IDAgMCwwIDExLjY1LDJBMS41LDEuNSAwIDAsMCAxMC4xNSwzLjVWNy4xOEwxNy45NywxNUwyMS4xNSwxNlYxNEwxMy4xNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFpcnBsYW5lVGFrZW9mZiA9IFwiTTIuNSwxOUgyMS41VjIxSDIuNVYxOU0yMi4wNyw5LjY0QzIxLjg2LDguODQgMjEuMDMsOC4zNiAyMC4yMyw4LjU4TDE0LjkyLDEwTDgsMy41N0w2LjA5LDQuMDhMMTAuMjMsMTEuMjVMNS4yNiwxMi41OEwzLjI5LDExLjA0TDEuODQsMTEuNDNMMy42NiwxNC41OUw0LjQzLDE1LjkyTDYuMDMsMTUuNUwxMS4zNCwxNC4wN0wxNS42OSwxMi45MUwyMSwxMS41QzIxLjgxLDExLjI2IDIyLjI4LDEwLjQ0IDIyLjA3LDkuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWlycG9ydCA9IFwiTTE0Ljk3LDUuOTJDMTQuODMsNS40MSAxNC4zLDUuMSAxMy43OSw1LjI0TDEwLjM5LDYuMTVMNS45NSwyLjAzTDQuNzIsMi4zNkw3LjM4LDYuOTVMNC4xOSw3LjhMMi45Myw2LjgyTDIsNy4wN0wzLjY2LDkuOTVMMTQuMjgsNy4xMUMxNC44LDYuOTYgMTUuMSw2LjQzIDE0Ljk3LDUuOTJNMjEsMTBMMjAsMTJIMTVMMTQsMTBMMTUsOUgxN1Y3SDE4VjlIMjBMMjEsMTBNMjIsMjBWMjJIMlYyMEgxNVYxM0gyMFYyMEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybSA9IFwiTTEyLDIwQTcsNyAwIDAsMSA1LDEzQTcsNyAwIDAsMSAxMiw2QTcsNyAwIDAsMSAxOSwxM0E3LDcgMCAwLDEgMTIsMjBNMTIsNEE5LDkgMCAwLDAgMywxM0E5LDkgMCAwLDAgMTIsMjJBOSw5IDAgMCwwIDIxLDEzQTksOSAwIDAsMCAxMiw0TTEyLjUsOEgxMVYxNEwxNS43NSwxNi44NUwxNi41LDE1LjYyTDEyLjUsMTMuMjVWOE03Ljg4LDMuMzlMNi42LDEuODZMMiw1LjcxTDMuMjksNy4yNEw3Ljg4LDMuMzlNMjIsNS43MkwxNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxhcm1CZWxsID0gXCJNMTUsMTguNjZWMjJINVYxOC42NkM4LjA5LDIwLjQ1IDExLjkxLDIwLjQ1IDE1LDE4LjY2TTIyLDRBMiwyIDAgMCwwIDIwLDJDMTkuNjksMiAxOS4zOSwyLjA3IDE5LjEyLDIuMjFDMTguODIsMi4zNiAxOC41NiwyLjU4IDE4LjM2LDIuODVDMTcuNzIsMy43NSAxNy45NCw1IDE4Ljg1LDUuNjRDMTkuMTgsNS44NyAxOS41OSw2IDIwLDZDMjAuMDgsNiAyMC4xNiw2IDIwLjI0LDZDMjEuOTcsMTAuNDMgMjAuNjYsMTUuNDYgMTcsMTguNUMxNi42OCwxOC43NSAxNi4zNSwxOSAxNiwxOS4yMlYyMUgxN1YxOS43NEMyMC4xNCwxNy41IDIyLDEzLjg2IDIyLDEwQzIyLDguNSAyMS43Miw3IDIxLjE3LDUuNjJDMjEuNjksNS4yNCAyMiw0LjY0IDIyLDRNMTgsMTBBOCw4IDAgMCwxIDEwLDE4QTgsOCAwIDAsMSAyLDEwQTgsOCAwIDAsMSAxMCwyQTgsOCAwIDAsMSAxOCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybUNoZWNrID0gXCJNMTAuNTQsMTQuNTNMOC40MSwxMi40TDcuMzUsMTMuNDZMMTAuNTMsMTYuNjRMMTYuNTMsMTAuNjRMMTUuNDcsOS41OEwxMC41NCwxNC41M00xMiwyMEE3LDcgMCAwLDEgNSwxM0E3LDcgMCAwLDEgMTIsNkE3LDcgMCAwLDEgMTksMTNBNyw3IDAgMCwxIDEyLDIwTTEyLDRBOSw5IDAgMCwwIDMsMTNBOSw5IDAgMCwwIDEyLDIyQTksOSAwIDAsMCAyMSwxM0E5LDkgMCAwLDAgMTIsNE03Ljg4LDMuMzlMNi42LDEuODZMMiw1LjcxTDMuMjksNy4yNEw3Ljg4LDMuMzlNMjIsNS43MkwxNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxhcm1MaWdodCA9IFwiTTYsNi45TDMuODcsNC43OEw1LjI4LDMuMzdMNy40LDUuNUw2LDYuOU0xMywxVjRIMTFWMUgxM00yMC4xMyw0Ljc4TDE4LDYuOUwxNi42LDUuNUwxOC43MiwzLjM3TDIwLjEzLDQuNzhNNC41LDEwLjVWMTIuNUgxLjVWMTAuNUg0LjVNMTkuNSwxMC41SDIyLjVWMTIuNUgxOS41VjEwLjVNNiwyMEgxOEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgNiwyME0xMiw1QTYsNiAwIDAsMSAxOCwxMVYxOUg2VjExQTYsNiAwIDAsMSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtTGlnaHRPZmYgPSBcIk0xOCAxNC44TDkgNS44QzkuOSA1LjMgMTAuOSA1IDEyIDVDMTUuMyA1IDE4IDcuNyAxOCAxMVYxNC44TTIwLjEgNC44TDE4LjcgMy40TDE2LjYgNS41TDE4IDYuOUwyMC4xIDQuOE0xOS41IDEwLjVWMTIuNUgyMi41VjEwLjVIMTkuNU00LjUgMTAuNUgxLjVWMTIuNUg0LjVWMTAuNU0xLjEgM0w2LjYgOC41QzYuMiA5LjIgNiAxMC4xIDYgMTFWMTlIMTcuMUwxOC4xIDIwSDZDNC45IDIwIDQgMjAuOSA0IDIySDIwLjFMMjAuOCAyMi43TDIyLjEgMjEuNEwyLjQgMS43TDEuMSAzTTEzIDFIMTFWNEgxM1YxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtTGlnaHRPZmZPdXRsaW5lID0gXCJNMTAuNSA3LjNMOSA1LjhDOS45IDUuMyAxMC45IDUgMTIgNUMxNS4zIDUgMTggNy43IDE4IDExVjE0LjhMMTYgMTIuOFYxMUMxNiA4LjggMTQuMiA3IDEyIDdDMTEuNSA3IDExIDcuMSAxMC41IDcuM00yMC4xIDQuOEwxOC43IDMuNEwxNi42IDUuNUwxOCA2LjlMMjAuMSA0LjhNMTkuNSAxMC41VjEyLjVIMjIuNVYxMC41SDE5LjVNNC41IDEwLjVIMS41VjEyLjVINC41VjEwLjVNMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TDIwLjEgMjJINEM0IDIwLjkgNC45IDIwIDYgMjBIMTguMUwxNy4xIDE5SDZWMTFDNiAxMC4xIDYuMiA5LjIgNi42IDguNUwxLjEgM0wyLjQgMS43TTggMTdIMTUuMUw4LjEgMTBDOC4xIDEwLjMgOCAxMC43IDggMTFWMTdNMTMgMUgxMVY0SDEzVjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxhcm1MaWdodE91dGxpbmUgPSBcIk02LDYuOUwzLjg3LDQuNzhMNS4yOCwzLjM3TDcuNCw1LjVMNiw2LjlNMTMsMVY0SDExVjFIMTNNMjAuMTMsNC43OEwxOCw2LjlMMTYuNiw1LjVMMTguNzIsMy4zN0wyMC4xMyw0Ljc4TTQuNSwxMC41VjEyLjVIMS41VjEwLjVINC41TTE5LjUsMTAuNUgyMi41VjEyLjVIMTkuNVYxMC41TTYsMjBIMThBMiwyIDAgMCwxIDIwLDIySDRBMiwyIDAgMCwxIDYsMjBNMTIsNUE2LDYgMCAwLDEgMTgsMTFWMTlINlYxMUE2LDYgMCAwLDEgMTIsNU0xMiw3QTQsNCAwIDAsMCA4LDExVjE3SDE2VjExQTQsNCAwIDAsMCAxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtTXVsdGlwbGUgPSBcIk05LjI5LDMuMjVMNS4xNiw2LjcyTDQsNS4zNEw4LjE0LDEuODdMOS4yOSwzLjI1TTIyLDUuMzVMMjAuODQsNi43M0wxNi43LDMuMjVMMTcuODYsMS44N0wyMiw1LjM1TTEzLDRBOCw4IDAgMCwxIDIxLDEyQTgsOCAwIDAsMSAxMywyMEE4LDggMCAwLDEgNSwxMkE4LDggMCAwLDEgMTMsNE0xMyw2QTYsNiAwIDAsMCA3LDEyQTYsNiAwIDAsMCAxMywxOEE2LDYgMCAwLDAgMTksMTJBNiw2IDAgMCwwIDEzLDZNMTIsNy41SDEzLjVWMTIuMDNMMTYuNzIsMTMuNUwxNi4xLDE0Ljg2TDEyLDEzVjcuNU0xLDE0QzEsMTEuNSAyLjEzLDkuMyAzLjkxLDcuODNDMy4zMyw5LjEgMywxMC41IDMsMTJMMy4wNiwxMy4xM0wzLDE0QzMsMTYuMjggNC4yNywxOC4yNiA2LjE0LDE5LjI4QzcuNDQsMjAuNSA5LjA3LDIxLjM5IDEwLjg5LDIxLjc4QzEwLjI4LDIxLjkyIDkuNjUsMjIgOSwyMkE4LDggMCAwLDEgMSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybU5vdGUgPSBcIk0xNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJMMTcuNCwxLjg2TTYuNiwxLjg2TDIsNS43MUwzLjI5LDcuMjRMNy44OCwzLjM5TDYuNiwxLjg2TTEyLDRBOSw5IDAgMCwwIDMsMTNBOSw5IDAgMCwwIDEyLDIyQzEyLjMzLDIyIDEyLjY3LDIyIDEzLDIxLjk0VjE5Ljk0QzEyLjY3LDIwIDEyLjMzLDIwIDEyLDIwQTcsNyAwIDAsMSA1LDEzQTcsNyAwIDAsMSAxMiw2QzE1LjEsNiAxNy44Myw4LjAzIDE4LjcxLDExSDIwLjc4QzE5Ljg1LDYuOSAxNi4yLDQgMTIsNE0yMywxNUgyMFYyMC41QTIuNSwyLjUgMCAwLDEgMTcuNSwyM0EyLjUsMi41IDAgMCwxIDE1LDIwLjVBMi41LDIuNSAwIDAsMSAxNy41LDE4QzE4LjA0LDE4IDE4LjU3LDE4LjE4IDE5LDE4LjVWMTNIMjNWMTVNMTEuNSw4VjEzLjI1TDcuNSwxNS42Mkw4LjI1LDE2Ljg1TDEzLDE0VjhIMTEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybU5vdGVPZmYgPSBcIk0xOSwxM1YxNS44TDIwLDE2LjhWMTVIMjNWMTNIMTlNMi4zOCwxLjczTDEuMTEsM0wzLDQuODhMMiw1LjcxTDMuMjksNy4yNEw0LjQxLDYuM0w1LjIxLDcuMUMxLjk1LDEwLjg1IDIuMzUsMTYuNTQgNi4xMSwxOS44QzcuNzQsMjEuMjIgOS44MywyMiAxMiwyMkMxMi4zMywyMiAxMi42NywyMiAxMywyMS45NFYxOS45NEMxMi42NywyMCAxMi4zMywyMCAxMiwyMEE3LDcgMCAwLDEgNSwxM0M1LDExLjM2IDUuNTcsOS43NyA2LjYzLDguNUwxMS40MSwxMy4zTDcuNSwxNS42Mkw4LjI1LDE2Ljg1TDEyLjQ0LDE0LjMzTDE2LjM4LDE4LjI3QzE1LjE0LDE4Ljg4IDE0LjY0LDIwLjM4IDE1LjI1LDIxLjYyQzE1Ljg2LDIyLjg2IDE3LjM2LDIzLjM2IDE4LjYsMjIuNzVDMTkuMDksMjIuNSAxOS41LDIyLjExIDE5LjczLDIxLjYyTDIwLjg0LDIyLjczTDIyLjExLDIxLjQ2TDIuMzgsMS43M00xMiw2QzE1LjEsNiAxNy44Myw4LjAzIDE4LjcxLDExSDIwLjc4QzE5Ljg1LDYuOSAxNi4yLDQgMTIsNEMxMC42NSw0IDkuMzEsNC4zIDguMSw0LjlMOS42Miw2LjQyQzEwLjM4LDYuMTQgMTEuMTksNiAxMiw2TTExLjUsOC4zTDEzLDkuOFY4SDExLjVWOC4zTTcuODgsMy4zOUw2LjYsMS44Nkw1Ljc2LDIuNTZMNy4xOCw0TDcuODgsMy4zOU0xNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TDIyLDUuNzJMMTcuNCwxLjg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtT2ZmID0gXCJNOCwzLjI4TDYuNiwxLjg2TDUuNzQsMi41N0w3LjE2LDRNMTYuNDcsMTguMzlDMTUuMjYsMTkuMzkgMTMuNywyMCAxMiwyMEE3LDcgMCAwLDEgNSwxM0M1LDExLjMgNS42MSw5Ljc0IDYuNjEsOC41M00yLjkyLDIuMjlMMS42NSwzLjU3TDMsNC45TDEuODcsNS44M0wzLjI5LDcuMjVMNC40LDYuMzFMNS4yLDcuMTFDMy44Myw4LjY5IDMsMTAuNzUgMywxM0E5LDkgMCAwLDAgMTIsMjJDMTQuMjUsMjIgMTYuMzEsMjEuMTcgMTcuODksMTkuOEwyMC4wOSwyMkwyMS4zNiwyMC43M0wzLjg5LDMuMjdMMi45MiwyLjI5TTIyLDUuNzJMMTcuNCwxLjg2TDE2LjExLDMuMzlMMjAuNzEsNy4yNUwyMiw1LjcyTTEyLDZBNyw3IDAgMCwxIDE5LDEzQzE5LDEzLjg0IDE4Ljg0LDE0LjY1IDE4LjU3LDE1LjRMMjAuMDksMTYuOTJDMjAuNjcsMTUuNzMgMjEsMTQuNDEgMjEsMTNBOSw5IDAgMCwwIDEyLDRDMTAuNTksNCA5LjI3LDQuMzMgOC4wOCw0LjkxTDkuNiw2LjQzQzEwLjM1LDYuMTYgMTEuMTYsNiAxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsYXJtUGFuZWwgPSBcIk0yMCAzSDRDMi45IDMgMiAzLjkgMiA1VjE5QzIgMjAuMSAyLjkgMjEgNCAyMUgyMEMyMS4xIDIxIDIyIDIwLjEgMjIgMTlWNUMyMiAzLjkgMjEuMSAzIDIwIDNNOCAxOUg1VjE3SDhWMTlNOCAxNkg1VjE0SDhWMTZNOCAxM0g1VjExSDhWMTNNMTMuNSAxOUgxMC41VjE3SDEzLjVWMTlNMTMuNSAxNkgxMC41VjE0SDEzLjVWMTZNMTMuNSAxM0gxMC41VjExSDEzLjVWMTNNMTkgMTlIMTZWMTdIMTlWMTlNMTkgMTZIMTZWMTRIMTlWMTZNMTkgMTNIMTZWMTFIMTlWMTNNMTkgOUg1VjVIMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybVBhbmVsT3V0bGluZSA9IFwiTTkgMTJINlYxMEg5VjEyTTEzLjUgMTBIMTAuNVYxMkgxMy41VjEwTTE4IDEwSDE1VjEySDE4VjEwTTE4IDZINlY5SDE4VjZNMjAgNUg0TDQgMTlMMjAgMTlMMjAgNUwyMCA1TTIwIDNDMjEuMSAzIDIyIDMuOSAyMiA1VjE5QzIyIDIwLjEgMjEuMSAyMSAyMCAyMUg0QzIuOSAyMSAyIDIwLjEgMiAxOVY1QzIgMy45IDIuOSAzIDQgM0gyME05IDEzSDZWMTVIOVYxM00xMy41IDEzSDEwLjVWMTVIMTMuNVYxM00xOCAxM0gxNVYxNUgxOFYxM005IDE2SDZWMThIOVYxNk0xMy41IDE2SDEwLjVWMThIMTMuNVYxNk0xOCAxNkgxNVYxOEgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybVBsdXMgPSBcIk0xMyw5SDExVjEySDhWMTRIMTFWMTdIMTNWMTRIMTZWMTJIMTNNMTIsMjBBNyw3IDAgMCwxIDUsMTNBNyw3IDAgMCwxIDEyLDZBNyw3IDAgMCwxIDE5LDEzQTcsNyAwIDAsMSAxMiwyME0xMiw0QTksOSAwIDAsMCAzLDEzQTksOSAwIDAsMCAxMiwyMkE5LDkgMCAwLDAgMjEsMTNBOSw5IDAgMCwwIDEyLDRNMjIsNS43MkwxNy40LDEuODZMMTYuMTEsMy4zOUwyMC43MSw3LjI1TTcuODgsMy4zOUw2LjYsMS44NkwyLDUuNzFMMy4yOSw3LjI0TDcuODgsMy4zOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGFybVNub296ZSA9IFwiTTcuODgsMy4zOUw2LjYsMS44NkwyLDUuNzFMMy4yOSw3LjI0TDcuODgsMy4zOU0yMiw1LjcyTDE3LjQsMS44NkwxNi4xMSwzLjM5TDIwLjcxLDcuMjVMMjIsNS43Mk0xMiw0QTksOSAwIDAsMCAzLDEzQTksOSAwIDAsMCAxMiwyMkE5LDkgMCAwLDAgMjEsMTNBOSw5IDAgMCwwIDEyLDRNMTIsMjBBNyw3IDAgMCwxIDUsMTNBNyw3IDAgMCwxIDEyLDZBNyw3IDAgMCwxIDE5LDEzQTcsNyAwIDAsMSAxMiwyME05LDExSDEyLjYzTDksMTUuMlYxN0gxNVYxNUgxMS4zN0wxNSwxMC44VjlIOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGJ1bSA9IFwiTTEyLDExQTEsMSAwIDAsMCAxMSwxMkExLDEgMCAwLDAgMTIsMTNBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxMiwxMU0xMiwxNi41QzkuNSwxNi41IDcuNSwxNC41IDcuNSwxMkM3LjUsOS41IDkuNSw3LjUgMTIsNy41QzE0LjUsNy41IDE2LjUsOS41IDE2LjUsMTJDMTYuNSwxNC41IDE0LjUsMTYuNSAxMiwxNi41TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0ID0gXCJNMTMgMTRIMTFWOUgxM00xMyAxOEgxMVYxNkgxM00xIDIxSDIzTDEyIDJMMSAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydEJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTMsMTNWN0gxMVYxM0gxM00xMywxN1YxNUgxMVYxN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydEJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMSwxNUgxM1YxN0gxMVYxNU0xMSw3SDEzVjEzSDExVjdcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydENpcmNsZSA9IFwiTTEzLDEzSDExVjdIMTNNMTMsMTdIMTFWMTVIMTNNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRDaXJjbGVDaGVjayA9IFwiTTE4Ljc1IDIyLjE2TDE2IDE5LjE2TDE3LjE2IDE4TDE4Ljc1IDE5LjU5TDIyLjM0IDE2TDIzLjUgMTcuNDFMMTguNzUgMjIuMTZNMTMgMTNWN0gxMVYxM0gxM00xMyAxN1YxNUgxMVYxN0gxM00xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJMMjEuOTEgMTMuMzFDMjEuMzEgMTMuMTEgMjAuNjcgMTMgMjAgMTNDMTYuNjkgMTMgMTQgMTUuNjkgMTQgMTlDMTQgMTkuOTUgMTQuMjIgMjAuODUgMTQuNjIgMjEuNjVDMTMuNzggMjEuODggMTIuOTEgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRDaXJjbGVDaGVja091dGxpbmUgPSBcIk0xOC43NSAyMi4xNkwxNiAxOS4xNkwxNy4xNiAxOEwxOC43NSAxOS41OUwyMi4zNCAxNkwyMy41IDE3LjQxTDE4Ljc1IDIyLjE2TTExIDE1SDEzVjE3SDExVjE1TTExIDdIMTNWMTNIMTFWN00xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJMMjEuOTIgMTMuMzFDMjEuMzEgMTMuMTEgMjAuNjcgMTMgMTkuOTQgMTNMMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxMi43MSAyMCAxMy4zOSAxOS45MSAxNC4wNSAxOS43NEMxNC4xMyAyMC40MiAxNC4zMyAyMS4wNiAxNC42MiAyMS42NUMxMy43OCAyMS44OCAxMi45IDIyIDEyIDIyQzYuNDcgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi40NyAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRDaXJjbGVPdXRsaW5lID0gXCJNMTEsMTVIMTNWMTdIMTFWMTVNMTEsN0gxM1YxM0gxMVY3TTEyLDJDNi40NywyIDIsNi41IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0RGVjYWdyYW0gPSBcIk0yMywxMkwyMC41Niw5LjIyTDIwLjksNS41NEwxNy4yOSw0LjcyTDE1LjQsMS41NEwxMiwzTDguNiwxLjU0TDYuNzEsNC43MkwzLjEsNS41M0wzLjQ0LDkuMjFMMSwxMkwzLjQ0LDE0Ljc4TDMuMSwxOC40N0w2LjcxLDE5LjI5TDguNiwyMi40N0wxMiwyMUwxNS40LDIyLjQ2TDE3LjI5LDE5LjI4TDIwLjksMTguNDZMMjAuNTYsMTQuNzhMMjMsMTJNMTMsMTdIMTFWMTVIMTNWMTdNMTMsMTNIMTFWN0gxM1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydERlY2FncmFtT3V0bGluZSA9IFwiTTIzLDEyTDIwLjU2LDE0Ljc4TDIwLjksMTguNDZMMTcuMjksMTkuMjhMMTUuNCwyMi40NkwxMiwyMUw4LjYsMjIuNDdMNi43MSwxOS4yOUwzLjEsMTguNDdMMy40NCwxNC43OEwxLDEyTDMuNDQsOS4yMUwzLjEsNS41M0w2LjcxLDQuNzJMOC42LDEuNTRMMTIsM0wxNS40LDEuNTRMMTcuMjksNC43MkwyMC45LDUuNTRMMjAuNTYsOS4yMkwyMywxMk0yMC4zMywxMkwxOC41LDkuODlMMTguNzQsNy4xTDE2LDYuNUwxNC41OCw0LjA3TDEyLDUuMThMOS40Miw0LjA3TDgsNi41TDUuMjYsNy4wOUw1LjUsOS44OEwzLjY3LDEyTDUuNSwxNC4xTDUuMjYsMTYuOUw4LDE3LjVMOS40MiwxOS45M0wxMiwxOC44MUwxNC41OCwxOS45MkwxNiwxNy41TDE4Ljc0LDE2Ljg5TDE4LjUsMTQuMUwyMC4zMywxMk0xMSwxNUgxM1YxN0gxMVYxNU0xMSw3SDEzVjEzSDExVjdcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydE1pbnVzID0gXCJNMTQgMTlDMTQgMTYuMjEgMTUuOTEgMTMuODcgMTguNSAxMy4yTDEyIDJMMSAyMUgxNC4zNUMxNC4xMyAyMC4zNyAxNCAxOS43IDE0IDE5TTEzIDE4SDExVjE2SDEzVjE4TTEzIDE0SDExVjEwSDEzVjE0TTI0IDE4VjIwSDE2VjE4SDI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0TWludXNPdXRsaW5lID0gXCJNMTEgMTUuNUgxM1YxNy41SDExVjE1LjVNMTQgMTlDMTQgMTguODYgMTQgMTguNzMgMTQgMTguNkg1LjRMMTIgNy4zTDE2LjExIDE0LjQ0QzE2LjYyIDE0IDE3LjIgMTMuNjUgMTcuODQgMTMuNDFMMTIgMy4zTDIgMjAuNkgxNC4yMkMxNC4wOCAyMC4wOSAxNCAxOS41NiAxNCAxOU0xMyAxMC41SDExVjE0LjVIMTNWMTAuNU0xNiAxOFYyMEgyNFYxOEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydE9jdGFnb24gPSBcIk0xMyAxM0gxMVY3SDEzTTExIDE1SDEzVjE3SDExTTE1LjczIDNIOC4yN0wzIDguMjdWMTUuNzNMOC4yNyAyMUgxNS43M0wyMSAxNS43M1Y4LjI3TDE1LjczIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRPY3RhZ29uT3V0bGluZSA9IFwiTTguMjcsM0wzLDguMjdWMTUuNzNMOC4yNywyMUgxNS43M0MxNy41LDE5LjI0IDIxLDE1LjczIDIxLDE1LjczVjguMjdMMTUuNzMsM005LjEsNUgxNC45TDE5LDkuMVYxNC45TDE0LjksMTlIOS4xTDUsMTQuOVY5LjFNMTEsMTVIMTNWMTdIMTFWMTVNMTEsN0gxM1YxM0gxMVY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRPY3RhZ3JhbSA9IFwiTTIuMiwxNi4wNkwzLjg4LDEyTDIuMiw3Ljk0TDYuMjYsNi4yNkw3Ljk0LDIuMkwxMiwzLjg4TDE2LjA2LDIuMkwxNy43NCw2LjI2TDIxLjgsNy45NEwyMC4xMiwxMkwyMS44LDE2LjA2TDE3Ljc0LDE3Ljc0TDE2LjA2LDIxLjhMMTIsMjAuMTJMNy45NCwyMS44TDYuMjYsMTcuNzRMMi4yLDE2LjA2TTEzLDE3VjE1SDExVjE3SDEzTTEzLDEzVjdIMTFWMTNIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRPY3RhZ3JhbU91dGxpbmUgPSBcIk0yLjIsMTYuMDZMMy44OCwxMkwyLjIsNy45NEw2LjI2LDYuMjZMNy45NCwyLjJMMTIsMy44OEwxNi4wNiwyLjJMMTcuNzQsNi4yNkwyMS44LDcuOTRMMjAuMTIsMTJMMjEuOCwxNi4wNkwxNy43NCwxNy43NEwxNi4wNiwyMS44TDEyLDIwLjEyTDcuOTQsMjEuOEw2LjI2LDE3Ljc0TDIuMiwxNi4wNk00LjgxLDlMNi4wNSwxMkw0LjgxLDE1TDcuNzksMTYuMjFMOSwxOS4xOUwxMiwxNy45NUwxNSwxOS4xOUwxNi4yMSwxNi4yMUwxOS4xOSwxNUwxNy45NSwxMkwxOS4xOSw5TDE2LjIxLDcuNzlMMTUsNC44MUwxMiw2LjA1TDksNC44MUw3Ljc5LDcuNzlMNC44MSw5TTExLDE1SDEzVjE3SDExVjE1TTExLDdIMTNWMTNIMTFWN1wiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0T3V0bGluZSA9IFwiTTEyLDJMMSwyMUgyM00xMiw2TDE5LjUzLDE5SDQuNDdNMTEsMTBWMTRIMTNWMTBNMTEsMTZWMThIMTNWMTZcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydFBsdXMgPSBcIk0xNCAxOUMxNCAxNi4yMSAxNS45MSAxMy44NyAxOC41IDEzLjJMMTIgMkwxIDIxSDE0LjM1QzE0LjEzIDIwLjM3IDE0IDE5LjcgMTQgMTlNMTMgMThIMTFWMTZIMTNWMThNMTMgMTRIMTFWMTBIMTNWMTRNMjEgMTVWMThIMjRWMjBIMjFWMjNIMTlWMjBIMTZWMThIMTlWMTVIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRQbHVzT3V0bGluZSA9IFwiTTExIDE1LjVIMTNWMTcuNUgxMVYxNS41TTE0IDE5QzE0IDE4Ljg2IDE0IDE4LjczIDE0IDE4LjZINS40TDEyIDcuM0wxNi4xMSAxNC40NEMxNi42MiAxNCAxNy4yIDEzLjY1IDE3Ljg0IDEzLjQxTDEyIDMuM0wyIDIwLjZIMTQuMjJDMTQuMDggMjAuMDkgMTQgMTkuNTYgMTQgMTlNMTMgMTAuNUgxMVYxNC41SDEzVjEwLjVNMTkgMTVWMThIMTZWMjBIMTlWMjNIMjFWMjBIMjRWMThIMjFWMTVIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRSZW1vdmUgPSBcIk0xNCAxOUMxNCAxNi4yMSAxNS45MSAxMy44NyAxOC41IDEzLjJMMTIgMkwxIDIxSDE0LjM1QzE0LjEzIDIwLjM3IDE0IDE5LjcgMTQgMTlNMTMgMThIMTFWMTZIMTNWMThNMTMgMTRIMTFWMTBIMTNWMTRNMjMuNTQgMTYuODhMMjEuNDEgMTlMMjMuNTQgMjEuMTJMMjIuMTIgMjIuNTRMMjAgMjAuNDFMMTcuODggMjIuNTRMMTYuNDcgMjEuMTJMMTguNTkgMTlMMTYuNDcgMTYuODhMMTcuODggMTUuNDdMMjAgMTcuNTlMMjIuMTIgMTUuNDZMMjMuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxlcnRSZW1vdmVPdXRsaW5lID0gXCJNMTEgMTUuNUgxM1YxNy41SDExVjE1LjVNMTQgMTlDMTQgMTguODYgMTQgMTguNzMgMTQgMTguNkg1LjRMMTIgNy4zTDE2LjExIDE0LjQ0QzE2LjYyIDE0IDE3LjIgMTMuNjUgMTcuODQgMTMuNDFMMTIgMy4zTDIgMjAuNkgxNC4yMkMxNC4wOCAyMC4wOSAxNCAxOS41NiAxNCAxOU0xMyAxMC41SDExVjE0LjVIMTNWMTAuNU0yMi4xMiAxNS40NkwyMCAxNy41OUwxNy44OCAxNS40NkwxNi40NyAxNi44OEwxOC41OSAxOUwxNi40NyAyMS4xMkwxNy44OCAyMi41NEwyMCAyMC40MUwyMi4xMiAyMi41NEwyMy41NCAyMS4xMkwyMS40MSAxOUwyMy41NCAxNi44OEwyMi4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGVydFJob21idXMgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTEgN0gxM1YxM0gxMVY3TTExIDE1SDEzVjE3SDExVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsZXJ0UmhvbWJ1c091dGxpbmUgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNEwyMCAxMkwxMiAyMEw0IDEyTTExIDdWMTNIMTNWN00xMSAxNVYxN0gxM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGllbiA9IFwiTTEyLDNDMTYuOTcsMyAyMSw2LjU4IDIxLDExQzIxLDE1LjQyIDE1LDIxIDEyLDIxQzksMjEgMywxNS40MiAzLDExQzMsNi41OCA3LjAzLDMgMTIsM00xMC4zMSwxMC45M0M5LjI5LDkuMjkgNy40Nyw4LjU4IDYuMjUsOS4zNEM1LjAzLDEwLjEgNC44NywxMi4wNSA1Ljg5LDEzLjY5QzYuOTIsMTUuMzMgOC43NCwxNi4wNCA5Ljk2LDE1LjI4QzExLjE4LDE0LjUgMTEuMzMsMTIuNTcgMTAuMzEsMTAuOTNNMTMuNjksMTAuOTNDMTIuNjcsMTIuNTcgMTIuODIsMTQuNSAxNC4wNCwxNS4yOEMxNS4yNiwxNi4wNCAxNy4wOCwxNS4zMyAxOC4xMSwxMy42OUMxOS4xMywxMi4wNSAxOC45NywxMC4xIDE3Ljc1LDkuMzRDMTYuNTMsOC41OCAxNC43MSw5LjI5IDEzLjY5LDEwLjkzTTEyLDE3Ljc1QzEwLDE3Ljc1IDkuNSwxNyA5LjUsMTdDOS41LDE3LjAzIDEwLDE5IDEyLDE5QzE0LDE5IDE0LjUsMTcgMTQuNSwxN0MxNC41LDE3IDE0LDE3Ljc1IDEyLDE3Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWVuT3V0bGluZSA9IFwiTTEwLjMxIDEwLjkzQzExLjMzIDEyLjU3IDExLjE4IDE0LjUgOS45NiAxNS4yOEM4Ljc0IDE2LjA0IDYuOTIgMTUuMzMgNS44OSAxMy42OUM0Ljg3IDEyLjA1IDUuMDMgMTAuMSA2LjI1IDkuMzRDNy40NyA4LjU4IDkuMjkgOS4yOSAxMC4zMSAxMC45M00xMiAxNy43NUMxNCAxNy43NSAxNC41IDE3IDE0LjUgMTdDMTQuNSAxNyAxNCAxOSAxMiAxOUMxMCAxOSA5LjUgMTcuMDMgOS41IDE3QzkuNSAxNyAxMCAxNy43NSAxMiAxNy43NU0xNy43NSA5LjM0QzE4Ljk3IDEwLjEgMTkuMTMgMTIuMDUgMTguMTEgMTMuNjlDMTcuMDggMTUuMzMgMTUuMjYgMTYuMDQgMTQuMDQgMTUuMjhDMTIuODIgMTQuNSAxMi42NyAxMi41NyAxMy42OSAxMC45M0MxNC43MSA5LjI5IDE2LjUzIDguNTggMTcuNzUgOS4zNE0xMiAyMEMxNC41IDIwIDIwIDE0Ljg2IDIwIDExQzIwIDcuMTQgMTYuNDEgNCAxMiA0QzcuNTkgNCA0IDcuMTQgNCAxMUM0IDE0Ljg2IDkuNSAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjA0IDIyIDExQzIyIDE1LjA4IDE2LjMyIDIyIDEyIDIyQzcuNjggMjIgMiAxNS4wOCAyIDExQzIgNi4wNCA2LjUgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWduSG9yaXpvbnRhbENlbnRlciA9IFwiTTIwIDE5SDEzVjIySDExVjE5SDRWMTNIMTFWMTFIN1Y1SDExVjJIMTNWNUgxN1YxMUgxM1YxM0gyMFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGlnbkhvcml6b250YWxMZWZ0ID0gXCJNMjIgMTNWMTlINlYxM0gyMk02IDVWMTFIMTZWNUg2TTIgMlYyMkg0VjJIMlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWduSG9yaXpvbnRhbFJpZ2h0ID0gXCJNMTggMTNWMTlIMlYxM0gxOE04IDVWMTFIMThWNUg4TTIwIDJWMjJIMjJWMkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGlnblZlcnRpY2FsQm90dG9tID0gXCJNMTEgMThINVYySDExVjE4TTE5IDhIMTNWMThIMTlWOE0yMiAyMEgyVjIySDIyVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsaWduVmVydGljYWxDZW50ZXIgPSBcIk01IDIwVjEzSDJWMTFINVY0SDExVjExSDEzVjdIMTlWMTFIMjJWMTNIMTlWMTdIMTNWMTNIMTFWMjBINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGlnblZlcnRpY2FsVG9wID0gXCJNMTEgMjJINVY2SDExVjIyTTE5IDZIMTNWMTZIMTlWNk0yMiAySDJWNEgyMlYyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsbEluY2x1c2l2ZSA9IFwiTTE4LjYsNi42MkMxNy4xNiw2LjYyIDE1LjgsNy4xOCAxNC44Myw4LjE1TDcuOCwxNC4zOUM3LjE2LDE1LjAzIDYuMzEsMTUuMzggNS40LDE1LjM4QzMuNTMsMTUuMzggMiwxMy44NyAyLDEyQzIsMTAuMTMgMy41Myw4LjYyIDUuNCw4LjYyQzYuMzEsOC42MiA3LjE2LDguOTcgNy44NCw5LjY1TDguOTcsMTAuNjVMMTAuNSw5LjMxTDkuMjIsOC4yQzguMiw3LjE4IDYuODQsNi42MiA1LjQsNi42MkMyLjQyLDYuNjIgMCw5LjA0IDAsMTJDMCwxNC45NiAyLjQyLDE3LjM4IDUuNCwxNy4zOEM2Ljg0LDE3LjM4IDguMiwxNi44MiA5LjE3LDE1Ljg1TDE2LjIsOS42MUMxNi44NCw4Ljk3IDE3LjY5LDguNjIgMTguNiw4LjYyQzIwLjQ3LDguNjIgMjIsMTAuMTMgMjIsMTJDMjIsMTMuODcgMjAuNDcsMTUuMzggMTguNiwxNS4zOEMxNy43LDE1LjM4IDE2Ljg0LDE1LjAzIDE2LjE2LDE0LjM1TDE1LDEzLjM0TDEzLjUsMTQuNjhMMTQuNzgsMTUuOEMxNS44LDE2LjgxIDE3LjE1LDE3LjM3IDE4LjYsMTcuMzdDMjEuNTgsMTcuMzcgMjQsMTQuOTYgMjQsMTJDMjQsOSAyMS41OCw2LjYyIDE4LjYsNi42MlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbGxlcmd5ID0gXCJNMTkuNzUgNS4zM0ExLjI1IDEuMjUgMCAwIDAgMTguNSA2LjU4VjExLjE3SDE3LjY3VjQuMDhBMS4yNSAxLjI1IDAgMCAwIDE1LjE3IDQuMDhWMTEuMTdIMTQuMzNWMy4yNUExLjI1IDEuMjUgMCAxIDAgMTEuODMgMy4yNVYxMS4xN0gxMVY1LjMzQTEuMjUgMS4yNSAwIDAgMCA4LjUgNS4zM1YxNS4yNkw0LjkxIDEzLjI2QTEgMSAwIDAgMCA0LjQxIDEzLjEyQTEgMSAwIDAgMCAzLjc1IDEzLjM3TDIuNjcgMTQuMzdMOS4yMSAyMUEzLjI5IDMuMjkgMCAwIDAgMTEuNTggMjJIMTcuNjdBMy4zMyAzLjMzIDAgMCAwIDIxIDE4LjY3VjYuNThBMS4yNSAxLjI1IDAgMCAwIDE5Ljc1IDUuMzNNMTEgMTVBMSAxIDAgMSAxIDEyIDE0QTEgMSAwIDAgMSAxMSAxNU0xMyAxOEExIDEgMCAxIDEgMTQgMTdBMSAxIDAgMCAxIDEzIDE4TTE4IDE2QTEgMSAwIDEgMSAxOSAxNUExIDEgMCAwIDEgMTggMTZNMTcgMTlBMSAxIDAgMSAxIDE4IDE4QTEgMSAwIDAgMSAxNyAxOU0xNSAxNUExIDEgMCAxIDEgMTYgMTRBMSAxIDAgMCAxIDE1IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhID0gXCJNMTguMDgsMTcuOEMxNy42MiwxNy45MyAxNy4yMSwxOCAxNi44NSwxOEMxNS42NSwxOCAxNC44NCwxNy4xMiAxNC40MywxNS4zNUgxNC4zOEMxMy4zOSwxNy4yNiAxMiwxOC4yMSAxMC4yNSwxOC4yMUM4Ljk0LDE4LjIxIDcuODksMTcuNzIgNy4xLDE2LjczQzYuMzEsMTUuNzQgNS45MiwxNC41IDUuOTIsMTNDNS45MiwxMS4yNSA2LjM3LDkuODUgNy4yNiw4Ljc2QzguMTUsNy42NyA5LjM2LDcuMTIgMTAuODksNy4xMkMxMS43MSw3LjEyIDEyLjQ1LDcuMzUgMTMuMDksNy44QzEzLjczLDguMjYgMTQuMjIsOC45IDE0LjU2LDkuNzNIMTQuNkwxNS4zMSw3LjMzSDE3Ljg3TDE1LjczLDEyLjY1QzE1Ljk3LDEzLjg5IDE2LjIyLDE0Ljc0IDE2LjUsMTUuMTlDMTYuNzQsMTUuNjQgMTcuMDgsMTUuODcgMTcuNSwxNS44N0MxNy43NCwxNS44NyAxNy45MywxNS44MyAxOC4xLDE1Ljc2TDE4LjA4LDE3LjhNMTMuODIsMTIuNTZDMTMuNjEsMTEuNDMgMTMuMjcsMTAuNTUgMTIuODEsOS45NUMxMi4zNiw5LjM0IDExLjgxLDkuMDQgMTEuMTgsOS4wNEMxMC4zNiw5LjA0IDkuNyw5LjQxIDkuMjEsMTAuMTRDOC43MiwxMC44OCA4LjUsMTEuNzkgOC41LDEyLjg2QzguNSwxMy44NCA4LjY5LDE0LjY1IDkuMTIsMTUuMzFDOS41NCwxNS45NyAxMC4xMSwxNi4yOSAxMC44MiwxNi4yOUMxMS40MiwxNi4yOSAxMS45NywxNiAxMi40NiwxNS40NUMxMi45NiwxNC44OCAxMy4zNywxNC4wNSAxMy43LDEyLjk2TDEzLjgyLDEyLjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQSA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxN0gxMVYxM0gxM1YxN0gxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUFCb3ggPSBcIk0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNMTEsN0EyLDIgMCAwLDAgOSw5VjE3SDExVjEzSDEzVjE3SDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxMUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQUJveE91dGxpbmUgPSBcIk0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNSw1VjE5SDE5VjVINU0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE3SDEzVjEzSDExVjE3SDlWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjExSDEzVjlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFBQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTEsN0EyLDIgMCAwLDAgOSw5VjE3SDExVjEzSDEzVjE3SDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxMUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQUNpcmNsZU91dGxpbmUgPSBcIk0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE3SDEzVjEzSDExVjE3SDlWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjExSDEzVjlIMTFNMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyME0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUIgPSBcIk0xNSwxMC41VjlBMiwyIDAgMCwwIDEzLDdIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUMxNSwxMi43IDE0LjMsMTIgMTMuNSwxMkMxNC4zLDEyIDE1LDExLjMgMTUsMTAuNU0xMywxNUgxMVYxM0gxM1YxNU0xMywxMUgxMVY5SDEzVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQkJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTUsMTAuNVY5QTIsMiAwIDAsMCAxMyw3SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjEzLjVDMTUsMTIuNyAxNC4zLDEyIDEzLjUsMTJDMTQuMywxMiAxNSwxMS4zIDE1LDEwLjVNMTMsMTVIMTFWMTNIMTNWMTVNMTMsMTFIMTFWOUgxM1YxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUJCb3hPdXRsaW5lID0gXCJNMTUsMTAuNUMxNSwxMS4zIDE0LjMsMTIgMTMuNSwxMkMxNC4zLDEyIDE1LDEyLjcgMTUsMTMuNVYxNUEyLDIgMCAwLDEgMTMsMTdIOVY3SDEzQTIsMiAwIDAsMSAxNSw5VjEwLjVNMTMsMTVWMTNIMTFWMTVIMTNNMTMsMTFWOUgxMVYxMUgxM00zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUJDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xNSwxMC41VjlBMiwyIDAgMCwwIDEzLDdIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUMxNSwxMi43IDE0LjMsMTIgMTMuNSwxMkMxNC4zLDEyIDE1LDExLjMgMTUsMTAuNU0xMywxNUgxMVYxM0gxM1YxNU0xMywxMUgxMVY5SDEzVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhQkNpcmNsZU91dGxpbmUgPSBcIk0xNSwxMC41QzE1LDExLjMgMTQuMywxMiAxMy41LDEyQzE0LjMsMTIgMTUsMTIuNyAxNSwxMy41VjE1QTIsMiAwIDAsMSAxMywxN0g5VjdIMTNBMiwyIDAgMCwxIDE1LDlWMTAuNU0xMywxNVYxM0gxMVYxNUgxM00xMywxMVY5SDExVjExSDEzTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUMgPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxNEgxM1YxNUgxMVY5SDEzVjEwSDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFDQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM00xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxNEgxM1YxNUgxMVY5SDEzVjEwSDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFDQm94T3V0bGluZSA9IFwiTTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU01LDVWMTlIMTlWNUg1TTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTBIMTNWOUgxMVYxNUgxM1YxNEgxNVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUNDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxNEgxM1YxNUgxMVY5SDEzVjEwSDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFDQ2lyY2xlT3V0bGluZSA9IFwiTTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTBIMTNWOUgxMVYxNUgxM1YxNEgxNVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFEID0gXCJNOSw3VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhREJveCA9IFwiTTksN1YxN0gxM0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0g5TTExLDlIMTNWMTVIMTFWOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhREJveE91dGxpbmUgPSBcIk05LDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3SDlWN00xMSw5VjE1SDEzVjlIMTFNMyw1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1TTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFEQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNOSw3VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhRENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3SDlWN00xMSw5VjE1SDEzVjlIMTFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhRSA9IFwiTTksN1YxN0gxNVYxNUgxMVYxM0gxNVYxMUgxMVY5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUVCb3ggPSBcIk05LDdWMTdIMTVWMTVIMTFWMTNIMTVWMTFIMTFWOUgxNVY3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUVCb3hPdXRsaW5lID0gXCJNOSw3SDE1VjlIMTFWMTFIMTVWMTNIMTFWMTVIMTVWMTdIOVY3TTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU01LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhRUNpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTksN1YxN0gxNVYxNUgxMVYxM0gxNVYxMUgxMVY5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUVDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDE1VjlIMTFWMTFIMTVWMTNIMTFWMTVIMTVWMTdIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUYgPSBcIk05LDdWMTdIMTFWMTNIMTRWMTFIMTFWOUgxNVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFGQm94ID0gXCJNOSw3VjE3SDExVjEzSDE0VjExSDExVjlIMTVWN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFGQm94T3V0bGluZSA9IFwiTTksN0gxNVY5SDExVjExSDE0VjEzSDExVjE3SDlWN00zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUZDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk05LDdWMTdIMTFWMTNIMTRWMTFIMTFWOUgxNVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFGQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNVY5SDExVjExSDE0VjEzSDExVjE3SDlWN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFHID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTFIMTNWMTVIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhR0JveCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjExSDEzVjE1SDExVjlIMTVWN0gxMU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhR0JveE91dGxpbmUgPSBcIk0xMSw3SDE1VjlIMTFWMTVIMTNWMTFIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMyw1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1TTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFHQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTFIMTNWMTVIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhR0NpcmNsZU91dGxpbmUgPSBcIk0xMSw3SDE1VjlIMTFWMTVIMTNWMTFIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSCA9IFwiTTksN1YxN0gxMVYxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUhCb3ggPSBcIk05LDdWMTdIMTFWMTNIMTNWMTdIMTVWN0gxM1YxMUgxMVY3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUhCb3hPdXRsaW5lID0gXCJNOSw3SDExVjExSDEzVjdIMTVWMTdIMTNWMTNIMTFWMTdIOVY3TTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU01LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSENpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTksN1YxN0gxMVYxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUhDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDExVjExSDEzVjdIMTVWMTdIMTNWMTNIMTFWMTdIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUkgPSBcIk0xNCw3VjlIMTNWMTVIMTRWMTdIMTBWMTVIMTFWOUgxMFY3SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSUJveCA9IFwiTTE0LDdIMTBWOUgxMVYxNUgxMFYxN0gxNFYxNUgxM1Y5SDE0VjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUlCb3hPdXRsaW5lID0gXCJNMTQsN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNE01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFJQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTQsN0gxMFY5SDExVjE1SDEwVjE3SDE0VjE1SDEzVjlIMTRWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUlDaXJjbGVPdXRsaW5lID0gXCJNMTQsN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNE0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFKID0gXCJNMTMsN1YxNUgxMVYxNEg5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUpCb3ggPSBcIk0xMyw3VjE1SDExVjE0SDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY3SDEzTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFKQm94T3V0bGluZSA9IFwiTTEzLDdIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjE0SDExVjE1SDEzVjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSkNpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEzLDdWMTVIMTFWMTRIOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjdIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFKQ2lyY2xlT3V0bGluZSA9IFwiTTEzLDdIMTVWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjE0SDExVjE1SDEzVjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhSyA9IFwiTTksN1YxN0gxMVYxMy42N0wxMywxN0gxNUwxMiwxMkwxNSw3SDEzTDExLDEwLjMzVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUtCb3ggPSBcIk05LDdWMTdIMTFWMTMuNjdMMTMsMTdIMTVMMTIsMTJMMTUsN0gxM0wxMSwxMC4zM1Y3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUtCb3hPdXRsaW5lID0gXCJNOSw3SDExVjEwLjMzTDEzLDdIMTVMMTIsMTJMMTUsMTdIMTNMMTEsMTMuNjdWMTdIOVY3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUtDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk05LDdWMTdIMTFWMTMuNjdMMTMsMTdIMTVMMTIsMTJMMTUsN0gxM0wxMSwxMC4zM1Y3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFLQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxMVYxMC4zM0wxMyw3SDE1TDEyLDEyTDE1LDE3SDEzTDExLDEzLjY3VjE3SDlWN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFMID0gXCJNOSw3VjE3SDE1VjE1SDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYUxCb3ggPSBcIk05LDdWMTdIMTVWMTVIMTFWN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFMQm94T3V0bGluZSA9IFwiTTksN0gxMVYxNUgxNVYxN0g5VjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTENpcmNsZSA9IFwiTTksN1YxN0gxNVYxNUgxMVY3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFMQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxMVYxNUgxNVYxN0g5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTSA9IFwiTTksN0EyLDIgMCAwLDAgNyw5VjE3SDlWOUgxMVYxNkgxM1Y5SDE1VjE3SDE3VjlBMiwyIDAgMCwwIDE1LDdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU1Cb3ggPSBcIk05LDdBMiwyIDAgMCwwIDcsOVYxN0g5VjlIMTFWMTZIMTNWOUgxNVYxN0gxN1Y5QTIsMiAwIDAsMCAxNSw3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU1Cb3hPdXRsaW5lID0gXCJNOSw3SDE1QTIsMiAwIDAsMSAxNyw5VjE3SDE1VjlIMTNWMTZIMTFWOUg5VjE3SDdWOUEyLDIgMCAwLDEgOSw3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU1DaXJjbGUgPSBcIk05LDdBMiwyIDAgMCwwIDcsOVYxN0g5VjlIMTFWMTZIMTNWOUgxNVYxN0gxN1Y5QTIsMiAwIDAsMCAxNSw3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFNQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNUEyLDIgMCAwLDEgMTcsOVYxN0gxNVY5SDEzVjE2SDExVjlIOVYxN0g3VjlBMiwyIDAgMCwxIDksN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFOID0gXCJNOSw3VjE3SDExVjEyTDEzLDE3SDE1VjdIMTNWMTJMMTEsN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTkJveCA9IFwiTTksN1YxN0gxMVYxMkwxMywxN0gxNVY3SDEzVjEyTDExLDdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTkJveE91dGxpbmUgPSBcIk05LDdIMTFMMTMsMTJWN0gxNVYxN0gxM0wxMSwxMlYxN0g5VjdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhTkNpcmNsZSA9IFwiTTksN1YxN0gxMVYxMkwxMywxN0gxNVY3SDEzVjEyTDExLDdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU5DaXJjbGVPdXRsaW5lID0gXCJNOSw3SDExTDEzLDEyVjdIMTVWMTdIMTNMMTEsMTJWMTdIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU8gPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYU9Cb3ggPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhT0JveE91dGxpbmUgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVNMTEsN0gxM0EyLDIgMCAwLDEgMTUsOVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjE1SDEzVjlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFPQ2lyY2xlID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0gxMU0xMSw5SDEzVjE1SDExVjlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFPQ2lyY2xlT3V0bGluZSA9IFwiTTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTEsOVYxNUgxM1Y5SDExTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVAgPSBcIk05LDdWMTdIMTFWMTNIMTNBMiwyIDAgMCwwIDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOU0xMSw5SDEzVjExSDExVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFQQm94ID0gXCJNOSw3VjE3SDExVjEzSDEzQTIsMiAwIDAsMCAxNSwxMVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxMUgxMVY5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFQQm94T3V0bGluZSA9IFwiTTksN0gxM0EyLDIgMCAwLDEgMTUsOVYxMUEyLDIgMCAwLDEgMTMsMTNIMTFWMTdIOVY3TTExLDlWMTFIMTNWOUgxMU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFQQ2lyY2xlID0gXCJNOSw3VjE3SDExVjEzSDEzQTIsMiAwIDAsMCAxNSwxMVY5QTIsMiAwIDAsMCAxMyw3SDlNMTEsOUgxM1YxMUgxMVY5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTNBMiwyIDAgMCwxIDE1LDlWMTFBMiwyIDAgMCwxIDEzLDEzSDExVjE3SDlWN00xMSw5VjExSDEzVjlIMTFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUSA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdWMTlIMTNWMTdBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUUJveCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdWMTlIMTNWMTdBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5TTUsNEgxOUEyLDIgMCAwLDEgMjEsNlYyMEEyLDIgMCAwLDEgMTksMjJINUEyLDIgMCAwLDEgMywyMFY2QTIsMiAwIDAsMSA1LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFRQm94T3V0bGluZSA9IFwiTTUsNEgxOUEyLDIgMCAwLDEgMjEsNlYyMEEyLDIgMCAwLDEgMTksMjJINUEyLDIgMCAwLDEgMywyMFY2QTIsMiAwIDAsMSA1LDRNNSw2VjIwSDE5VjZINU0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE1QTIsMiAwIDAsMSAxMywxN1YxOUgxMVYxN0EyLDIgMCAwLDEgOSwxNVY5QTIsMiAwIDAsMSAxMSw3TTExLDlWMTVIMTNWOUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVFDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3VjE5SDEzVjE3QTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVFDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0TTExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTVBMiwyIDAgMCwxIDEzLDE3VjE5SDExVjE3QTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTEsOVYxNUgxM1Y5SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhUiA9IFwiTTksN1YxN0gxMVYxM0gxMS44TDEzLDE3SDE1TDEzLjc2LDEyLjg1QzE0LjUsMTIuNTUgMTUsMTEuODQgMTUsMTFWOUEyLDIgMCAwLDAgMTMsN0g5TTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVJCb3ggPSBcIk05LDdWMTdIMTFWMTNIMTEuOEwxMywxN0gxNUwxMy43NiwxMi44NUMxNC41LDEyLjU1IDE1LDExLjg0IDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOU0xMSw5SDEzVjExSDExVjlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVJCb3hPdXRsaW5lID0gXCJNOSw3SDEzQTIsMiAwIDAsMSAxNSw5VjExQzE1LDExLjg0IDE0LjUsMTIuNTUgMTMuNzYsMTIuODVMMTUsMTdIMTNMMTEuOCwxM0gxMVYxN0g5VjdNMTEsOVYxMUgxM1Y5SDExTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVJDaXJjbGUgPSBcIk05LDdWMTdIMTFWMTNIMTEuOEwxMywxN0gxNUwxMy43NiwxMi44NUMxNC41LDEyLjU1IDE1LDExLjg0IDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOU0xMSw5SDEzVjExSDExVjlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFSQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxM0EyLDIgMCAwLDEgMTUsOVYxMUMxNSwxMS44NCAxNC41LDEyLjU1IDEzLjc2LDEyLjg1TDE1LDE3SDEzTDExLjgsMTNIMTFWMTdIOVY3TTExLDlWMTFIMTNWOUgxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTYuNDEgNy41OCwyMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFTID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjExQTIsMiAwIDAsMCAxMSwxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxM0EyLDIgMCAwLDAgMTMsMTFIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhU0JveCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxMUEyLDIgMCAwLDAgMTEsMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0gxMU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhU0JveE91dGxpbmUgPSBcIk0xMSw3SDE1VjlIMTFWMTFIMTNBMiwyIDAgMCwxIDE1LDEzVjE1QTIsMiAwIDAsMSAxMywxN0g5VjE1SDEzVjEzSDExQTIsMiAwIDAsMSA5LDExVjlBMiwyIDAgMCwxIDExLDdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhU0NpcmNsZSA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxMUEyLDIgMCAwLDAgMTEsMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0gxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVNDaXJjbGVPdXRsaW5lID0gXCJNMTEsN0gxNVY5SDExVjExSDEzQTIsMiAwIDAsMSAxNSwxM1YxNUEyLDIgMCAwLDEgMTMsMTdIOVYxNUgxM1YxM0gxMUEyLDIgMCAwLDEgOSwxMVY5QTIsMiAwIDAsMSAxMSw3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVQgPSBcIk05LDdWOUgxMVYxN0gxM1Y5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVRCb3ggPSBcIk05LDdWOUgxMVYxN0gxM1Y5SDE1VjdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVEJveE91dGxpbmUgPSBcIk05LDdIMTVWOUgxM1YxN0gxMVY5SDlWN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFUQ2lyY2xlID0gXCJNOSw3VjlIMTFWMTdIMTNWOUgxNVY3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFUQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNVY5SDEzVjE3SDExVjlIOVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVUgPSBcIk05LDdWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY3SDEzVjE1SDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVVCb3ggPSBcIk05LDdWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY3SDEzVjE1SDExVjdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVUJveE91dGxpbmUgPSBcIk05LDdIMTFWMTVIMTNWN0gxNVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFVQ2lyY2xlID0gXCJNOSw3VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWN0gxM1YxNUgxMVY3SDlNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFVQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxMVYxNUgxM1Y3SDE1VjE1QTIsMiAwIDAsMSAxMywxN0gxMUEyLDIgMCAwLDEgOSwxNVY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVYgPSBcIk05LDdMMTEsMTdIMTNMMTUsN0gxM0wxMiwxMkwxMSw3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFWQm94ID0gXCJNOSw3TDExLDE3SDEzTDE1LDdIMTNMMTIsMTJMMTEsN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFWQm94T3V0bGluZSA9IFwiTTksN0gxMUwxMiwxMkwxMyw3SDE1TDEzLDE3SDExTDksN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFWQ2lyY2xlID0gXCJNOSw3TDExLDE3SDEzTDE1LDdIMTNMMTIsMTJMMTEsN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVkNpcmNsZU91dGxpbmUgPSBcIk05LDdIMTFMMTIsMTJMMTMsN0gxNUwxMywxN0gxMUw5LDdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhVyA9IFwiTTksMTdBMiwyIDAgMCwxIDcsMTVWN0g5VjE1SDExVjhIMTNWMTVIMTVWN0gxN1YxNUEyLDIgMCAwLDEgMTUsMTdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVdCb3ggPSBcIk05LDE3SDE1QTIsMiAwIDAsMCAxNywxNVY3SDE1VjE1SDEzVjhIMTFWMTVIOVY3SDdWMTVBMiwyIDAgMCwwIDksMTdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVdCb3hPdXRsaW5lID0gXCJNOSwxN0EyLDIgMCAwLDEgNywxNVY3SDlWMTVIMTFWOEgxM1YxNUgxNVY3SDE3VjE1QTIsMiAwIDAsMSAxNSwxN0g5TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVdDaXJjbGUgPSBcIk05LDE3SDE1QTIsMiAwIDAsMCAxNywxNVY3SDE1VjE1SDEzVjhIMTFWMTVIOVY3SDdWMTVBMiwyIDAgMCwwIDksMTdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFXQ2lyY2xlT3V0bGluZSA9IFwiTTksMTdBMiwyIDAgMCwxIDcsMTVWN0g5VjE1SDExVjhIMTNWMTVIMTVWN0gxN1YxNUEyLDIgMCAwLDEgMTUsMTdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFYID0gXCJNOSw3TDExLDEyTDksMTdIMTFMMTIsMTQuNUwxMywxN0gxNUwxMywxMkwxNSw3SDEzTDEyLDkuNUwxMSw3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFYQm94ID0gXCJNOSw3TDExLDEyTDksMTdIMTFMMTIsMTQuNUwxMywxN0gxNUwxMywxMkwxNSw3SDEzTDEyLDkuNUwxMSw3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVhCb3hPdXRsaW5lID0gXCJNOSw3SDExTDEyLDkuNUwxMyw3SDE1TDEzLDEyTDE1LDE3SDEzTDEyLDE0LjVMMTEsMTdIOUwxMSwxMkw5LDdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWENpcmNsZSA9IFwiTTksN0wxMSwxMkw5LDE3SDExTDEyLDE0LjVMMTMsMTdIMTVMMTMsMTJMMTUsN0gxM0wxMiw5LjVMMTEsN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTFMMTIsOS41TDEzLDdIMTVMMTMsMTJMMTUsMTdIMTNMMTIsMTQuNUwxMSwxN0g5TDExLDEyTDksN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFZID0gXCJNOSw3TDExLDEzVjE3SDEzVjEzTDE1LDdIMTNMMTIsMTBMMTEsN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWUJveCA9IFwiTTksN0wxMSwxM1YxN0gxM1YxM0wxNSw3SDEzTDEyLDEwTDExLDdIOU01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWUJveE91dGxpbmUgPSBcIk05LDdIMTFMMTIsMTBMMTMsN0gxNUwxMywxM1YxN0gxMVYxM0w5LDdNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWUNpcmNsZSA9IFwiTTksN0wxMSwxM1YxN0gxM1YxM0wxNSw3SDEzTDEyLDEwTDExLDdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVlDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDExTDEyLDEwTDEzLDdIMTVMMTMsMTNWMTdIMTFWMTNMOSw3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVogPSBcIk05LDdWOUgxM0w5LDE1VjE3SDE1VjE1SDExTDE1LDlWN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhWkJveCA9IFwiTTksN1Y5SDEzTDksMTVWMTdIMTVWMTVIMTFMMTUsOVY3SDlNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVpCb3hPdXRsaW5lID0gXCJNOSw3SDE1VjlMMTEsMTVIMTVWMTdIOVYxNUwxMyw5SDlWN001LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFaQ2lyY2xlID0gXCJNOSw3VjlIMTNMOSwxNVYxN0gxNVYxNUgxMUwxNSw5VjdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYVpDaXJjbGVPdXRsaW5lID0gXCJNOSw3SDE1VjlMMTEsMTVIMTVWMTdIOVYxNUwxMyw5SDlWN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRBdXJlYmVzaCA9IFwiTTMgNFYxMUgxNC4yM0wyMiA0SDE5TDEzLjQ2IDlINVY0SDNNMyAxM1YyMEg1VjE1SDEzLjQ2TDE5IDIwSDIyTDE0LjIzIDEzSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRDeXJpbGxpYyA9IFwiTTE2IDZDMTQuMzYgNiAxMyA3LjM2IDEzIDlWMTVDMTMgMTYuNjUgMTQuMzYgMTggMTYgMThIMTdDMTguNjUgMTggMjAgMTYuNjUgMjAgMTVWMTJDMjAgMTAuMzYgMTguNjUgOSAxNyA5SDE1QzE1IDguNDQgMTUuNDQgOCAxNiA4SDE4QzE5LjA5IDggMjAgNy4wOSAyMCA2TTUgOVYxMUg4QzguNTcgMTEgOSAxMS40MyA5IDEySDdDNS4zNiAxMiA0IDEzLjM2IDQgMTVDNCAxNi42NSA1LjM2IDE4IDcgMThIMTFWMTJDMTEgMTAuMzYgOS42NSA5IDggOU0xNSAxMUgxN0MxNy41NyAxMSAxOCAxMS40MyAxOCAxMlYxNUMxOCAxNS41NyAxNy41NyAxNiAxNyAxNkgxNkMxNS40MyAxNiAxNSAxNS41NyAxNSAxNU03IDE0SDlWMTZIN0M2LjQzIDE2IDYgMTUuNTcgNiAxNUM2IDE0LjQzIDYuNDMgMTQgNyAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYWJldEdyZWVrID0gXCJNMTYgNkMxNC4zNiA2IDEzIDcuMzYgMTMgOVYyMUgxNVY5QzE1IDguNDMgMTUuNDMgOCAxNiA4SDE3QzE3LjU3IDggMTggOC40MyAxOCA5VjEwQzE4IDEwLjU3IDE3LjU3IDExIDE3IDExSDE2VjEzSDE3QzE3LjU3IDEzIDE4IDEzLjQzIDE4IDE0VjE1QzE4IDE1LjU3IDE3LjU3IDE2IDE3IDE2SDE2VjE4SDE3QzE4LjY1IDE4IDIwIDE2LjY1IDIwIDE1VjE0QzIwIDEzLjE4IDE5LjU5IDEyLjQ2IDE5IDEyQzE5LjU5IDExLjU0IDIwIDEwLjgyIDIwIDEwVjlDMjAgNy4zNiAxOC42NSA2IDE3IDZNNyA5QzUuMzYgOSA0IDEwLjM2IDQgMTJWMTVDNCAxNi42NSA1LjM2IDE4IDcgMThINy43QzguMiAxOCA4LjY1IDE3LjgxIDkgMTcuNVYxOEgxMVY5SDlWOS41QzguNjUgOS4xOSA4LjIgOSA3LjcgOU03IDExSDhDOC41NyAxMSA5IDExLjQzIDkgMTJWMTVDOSAxNS41NyA4LjU3IDE2IDggMTZIN0M2LjQzIDE2IDYgMTUuNTcgNiAxNVYxMkM2IDExLjQzIDYuNDMgMTEgNyAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBbHBoYWJldExhdGluID0gXCJNMTMgNlYxOEgxNVYxNy4zMUMxNS4zNyAxNy43MyAxNS45IDE4IDE2LjUgMThIMTdDMTguNjUgMTggMjAgMTYuNjUgMjAgMTVWMTJDMjAgMTAuMzYgMTguNjUgOSAxNyA5SDE2LjVDMTUuOSA5IDE1LjM3IDkuMjcgMTUgOS43VjZNNSA5VjExSDhDOC41NyAxMSA5IDExLjQzIDkgMTJIN0M1LjM2IDEyIDQgMTMuMzYgNCAxNUM0IDE2LjY1IDUuMzYgMTggNyAxOEgxMVYxMkMxMSAxMC4zNiA5LjY1IDkgOCA5TTE2IDExSDE3QzE3LjU3IDExIDE4IDExLjQzIDE4IDEyVjE1QzE4IDE1LjU3IDE3LjU3IDE2IDE3IDE2SDE2QzE1LjQzIDE2IDE1IDE1LjU3IDE1IDE1VjEyQzE1IDExLjQzIDE1LjQzIDExIDE2IDExTTcgMTRIOVYxNkg3QzYuNDMgMTYgNiAxNS41NyA2IDE1QzYgMTQuNDMgNi40MyAxNCA3IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0UGlxYWQgPSBcIk0xMy4wNCA0TDYuNTQgMTcuODVDNi4yMSAxOC41NSA1LjUgMTkgNC43MyAxOUg0VjIwSDE2QzE3LjIgMjAgMTguMjcgMjAuNTQgMTkgMjEuMzlIMjBDMTkuMDUgMTkuMzIgMTcgMTggMTQuNyAxOEgxMkMxMS4yOSAxOCAxMC42MiAxNy42MyAxMC4yNCAxNy4wM0M5Ljg1IDE2LjQzIDkuOCAxNS42OCAxMC4xIDE1LjAzTDEwLjU4IDE0SDE5VjEzSDE3LjVDMTUuMjkgMTMgMTMuNSAxMS4yMSAxMy41IDlDMTMuNSA2Ljc5IDE1LjI5IDUgMTcuNSA1SDIwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRUZW5nd2FyID0gXCJNMTAgN0wxMi41IDNIMTVMMTEgN0gxME0xMi41IDlDMTEuOTYgOSAxMS40NiA5LjEzIDExIDkuMzVWOUg4VjExSDlWMjFIMTFWMTIuNUMxMSAxMS42NyAxMS42NyAxMSAxMi41IDExQzEzLjMzIDExIDE0IDExLjY3IDE0IDEyLjVWMTQuNUMxNCAxNS4zMyAxMy4zMyAxNiAxMi41IDE2SDEyVjE4SDEyLjVDMTQuNDMgMTggMTYgMTYuNDMgMTYgMTQuNVYxMi41QzE2IDEwLjU3IDE0LjQzIDkgMTIuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0aWNhbCA9IFwiTTYsMTFBMiwyIDAgMCwxIDgsMTNWMTdINEEyLDIgMCAwLDEgMiwxNVYxM0EyLDIgMCAwLDEgNCwxMUg2TTQsMTNWMTVINlYxM0g0TTIwLDEzVjE1SDIyVjE3SDIwQTIsMiAwIDAsMSAxOCwxNVYxM0EyLDIgMCAwLDEgMjAsMTFIMjJWMTNIMjBNMTIsN1YxMUgxNEEyLDIgMCAwLDEgMTYsMTNWMTVBMiwyIDAgMCwxIDE0LDE3SDEyQTIsMiAwIDAsMSAxMCwxNVY3SDEyTTEyLDE1SDE0VjEzSDEyVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0aWNhbE9mZiA9IFwiTTIyLjExIDIxLjQ2TDE2IDE1LjMxTDE0IDEzLjMxTDEzLjY1IDEzTDEwIDkuMzRMMi4zOSAxLjczTDEuMTEgM0wxMCAxMS44OVYxNUEyIDIgMCAwIDAgMTIgMTdIMTRBMS45MiAxLjkyIDAgMCAwIDE0Ljg5IDE2Ljc4TDIwLjg0IDIyLjczTTEyIDE1VjEzLjg5TDEzLjExIDE1TTE2IDEyLjc4TDE0LjIyIDExQTIgMiAwIDAgMSAxNiAxMi43OE0yMC4yIDE3TDE4IDE0LjhWMTNBMiAyIDAgMCAxIDIwIDExSDIyVjEzSDIwVjE1SDIyVjE3TTYgMTFINEEyIDIgMCAwIDAgMiAxM1YxNUEyIDIgMCAwIDAgNCAxN0g4VjEzQTIgMiAwIDAgMCA2IDExTTYgMTVINFYxM0g2TTEyIDguOEwxMC4yIDdIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQWxwaGFiZXRpY2FsVmFyaWFudCA9IFwiTTMgN0EyIDIgMCAwIDAgMSA5VjE3SDNWMTNINVYxN0g3VjlBMiAyIDAgMCAwIDUgN0gzTTMgOUg1VjExSDNNMTUgMTAuNVY5QTIgMiAwIDAgMCAxMyA3SDlWMTdIMTNBMiAyIDAgMCAwIDE1IDE1VjEzLjVBMS41NCAxLjU0IDAgMCAwIDEzLjUgMTJBMS41NCAxLjU0IDAgMCAwIDE1IDEwLjVNMTMgMTVIMTFWMTNIMTNWMTVNMTMgMTFIMTFWOUgxM00xOSA3QTIgMiAwIDAgMCAxNyA5VjE1QTIgMiAwIDAgMCAxOSAxN0gyMUEyIDIgMCAwIDAgMjMgMTVWMTRIMjFWMTVIMTlWOUgyMVYxMEgyM1Y5QTIgMiAwIDAgMCAyMSA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFscGhhYmV0aWNhbFZhcmlhbnRPZmYgPSBcIk0xMi4yIDlMMTAuMiA3SDEzQTIgMiAwIDAgMSAxNSA5VjEwLjVBMS40NyAxLjQ3IDAgMCAxIDE0LjY0IDExLjQ0TDEzIDkuOFY5TTIzIDEwVjlBMiAyIDAgMCAwIDIxIDdIMTlBMiAyIDAgMCAwIDE3IDlWMTMuOEwyMC4yIDE3SDIxQTIgMiAwIDAgMCAyMyAxNVYxNEgyMVYxNUgxOVY5SDIxVjEwTTE1IDE0LjM1TDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE0LjQ2IDE2LjM1QTIgMiAwIDAgMSAxMyAxN0g5VjEwLjg5TDcgOC44OVYxN0g1VjEzSDNWMTdIMVY5QTIgMiAwIDAgMSAzIDdINS4xMkwxLjEyIDNMMi4zOSAxLjczTDkgOC4zNEwxMSAxMC4zNEwxMS42NiAxMUwxNSAxNC4zNE01IDlIM1YxMUg1TTEzIDE0Ljg5TDExLjExIDEzSDExVjE1SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFsdGltZXRlciA9IFwiTTcsM1Y1SDE3VjNIN005LDdWOUgxNVY3SDlNMiw3Ljk2VjE2LjA0TDYuMDMsMTJMMiw3Ljk2TTIyLjAzLDcuOTZMMTgsMTJMMjIuMDMsMTYuMDRWNy45Nk03LDExVjEzSDE3VjExSDdNOSwxNVYxN0gxNVYxNUg5TTcsMTlWMjFIMTdWMTlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbWF6b24gPSBcIk0xNS45MywxNy4wOUMxNS43NSwxNy4yNSAxNS41LDE3LjI2IDE1LjMsMTcuMTVDMTQuNDEsMTYuNDEgMTQuMjUsMTYuMDcgMTMuNzYsMTUuMzZDMTIuMjksMTYuODYgMTEuMjUsMTcuMzEgOS4zNCwxNy4zMUM3LjA5LDE3LjMxIDUuMzMsMTUuOTIgNS4zMywxMy4xNEM1LjMzLDEwLjk2IDYuNSw5LjUgOC4xOSw4Ljc2QzkuNjUsOC4xMiAxMS42OCw4IDEzLjIzLDcuODNWNy41QzEzLjIzLDYuODQgMTMuMjgsNi4wOSAxMi45LDUuNTRDMTIuNTgsNS4wNSAxMS45NSw0Ljg0IDExLjQsNC44NEMxMC4zOCw0Ljg0IDkuNDcsNS4zNyA5LjI1LDYuNDVDOS4yLDYuNjkgOSw2LjkzIDguNzgsNi45NEw2LjE4LDYuNjZDNS45Niw2LjYxIDUuNzIsNi40NCA1Ljc4LDYuMUM2LjM4LDIuOTUgOS4yMywyIDExLjc4LDJDMTMuMDgsMiAxNC43OCwyLjM1IDE1LjgxLDMuMzNDMTcuMTEsNC41NSAxNyw2LjE4IDE3LDcuOTVWMTIuMTJDMTcsMTMuMzcgMTcuNSwxMy45MyAxOCwxNC42QzE4LjE3LDE0Ljg1IDE4LjIxLDE1LjE0IDE4LDE1LjMxTDE1Ljk0LDE3LjA5SDE1LjkzTTEzLjIzLDEwLjU2VjEwQzExLjI5LDEwIDkuMjQsMTAuMzkgOS4yNCwxMi42N0M5LjI0LDEzLjgzIDkuODUsMTQuNjIgMTAuODcsMTQuNjJDMTEuNjMsMTQuNjIgMTIuMywxNC4xNSAxMi43MywxMy40QzEzLjI1LDEyLjQ3IDEzLjIzLDExLjYgMTMuMjMsMTAuNTZNMjAuMTYsMTkuNTRDMTgsMjEuMTQgMTQuODIsMjIgMTIuMSwyMkM4LjI5LDIyIDQuODUsMjAuNTkgMi4yNSwxOC4yNEMyLjA1LDE4LjA2IDIuMjMsMTcuODEgMi41LDE3Ljk1QzUuMjgsMTkuNTggOC43NSwyMC41NiAxMi4zMywyMC41NkMxNC43NCwyMC41NiAxNy40LDIwLjA2IDE5Ljg0LDE5LjAzQzIwLjIxLDE4Ljg3IDIwLjUsMTkuMjcgMjAuMTYsMTkuNTRNMjEuMDcsMTguNUMyMC43OSwxOC4xNCAxOS4yMiwxOC4zMyAxOC41LDE4LjQyQzE4LjMxLDE4LjQ0IDE4LjI4LDE4LjI2IDE4LjQ3LDE4LjEyQzE5LjcxLDE3LjI0IDIxLjc2LDE3LjUgMjIsMTcuNzlDMjIuMjQsMTguMDkgMjEuOTMsMjAuMTQgMjAuNzYsMjEuMTFDMjAuNTgsMjEuMjcgMjAuNDEsMjEuMTggMjAuNSwyMUMyMC43NiwyMC4zMyAyMS4zNSwxOC44NiAyMS4wNywxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFtYXpvbkFsZXhhID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTAuNDMsMjEuODdWMTkuOTFDMTAuNDMsMTkuMjIgMTAsMTguNTcgOS4zNSwxOC4zQzYuOTEsMTcuMjYgNS4xNywxNC44MyA1LjE3LDEyQzUuMTcsOC4yNiA4LjIyLDUuMTcgMTIsNS4xN0MxNS43OCw1LjE3IDE4LjgzLDguMjYgMTguODMsMTJDMTguODMsMTYuNDMgMTUuMzksMjAuNjEgMTAuNDMsMjEuODdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW1idWxhbmNlID0gXCJNMTgsMTguNUExLjUsMS41IDAgMCwwIDE5LjUsMTdBMS41LDEuNSAwIDAsMCAxOCwxNS41QTEuNSwxLjUgMCAwLDAgMTYuNSwxN0ExLjUsMS41IDAgMCwwIDE4LDE4LjVNMTkuNSw5LjVIMTdWMTJIMjEuNDZMMTkuNSw5LjVNNiwxOC41QTEuNSwxLjUgMCAwLDAgNy41LDE3QTEuNSwxLjUgMCAwLDAgNiwxNS41QTEuNSwxLjUgMCAwLDAgNC41LDE3QTEuNSwxLjUgMCAwLDAgNiwxOC41TTIwLDhMMjMsMTJWMTdIMjFBMywzIDAgMCwxIDE4LDIwQTMsMyAwIDAsMSAxNSwxN0g5QTMsMyAwIDAsMSA2LDIwQTMsMyAwIDAsMSAzLDE3SDFWNkMxLDQuODkgMS44OSw0IDMsNEgxN1Y4SDIwTTgsNlY5SDVWMTFIOFYxNEgxMFYxMUgxM1Y5SDEwVjZIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBbW11bml0aW9uID0gXCJNMTQsMjJIMTBWMjFIMTRWMjJNMTMsMTBWN0gxMVYxMEwxMCwxMS41VjIwSDE0VjExLjVMMTMsMTBNMTIsMkMxMiwyIDExLDMgMTEsNVY2SDEzVjVDMTMsNSAxMywzIDEyLDJNOCwyMkg0VjIxSDhWMjJNNywxMFY3SDVWMTBMNCwxMS41VjIwSDhWMTEuNUw3LDEwTTYsMkM2LDIgNSwzIDUsNVY2SDdWNUM3LDUgNywzIDYsMk0yMCwyMkgxNlYyMUgyMFYyMk0xOSwxMFY3SDE3VjEwTDE2LDExLjVWMjBIMjBWMTEuNUwxOSwxME0xOCwyQzE4LDIgMTcsMyAxNyw1VjZIMTlWNUMxOSw1IDE5LDMgMTgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBbXBlcnNhbmQgPSBcIk00LjQsMTYuNUM0LjQsMTUuNiA0LjcsMTQuNyA1LjIsMTMuOUM1LjcsMTMuMSA2LjcsMTIuMiA4LjIsMTEuMkM3LjMsMTAuMSA2LjgsOS4zIDYuNSw4LjdDNi4xLDggNiw3LjQgNiw2LjdDNiw1LjIgNi40LDQuMSA3LjMsMy4yQzguMiwyLjMgOS40LDIgMTAuOSwyQzEyLjIsMiAxMy4zLDIuNCAxNC4yLDMuMkMxNS4xLDQgMTUuNSw1IDE1LjUsNi4xQzE1LjUsNi45IDE1LjMsNy42IDE0LjksOC4zQzE0LjUsOSAxMy44LDkuNyAxMi44LDEwLjRMMTEuNCwxMS41TDE1LjcsMTYuN0MxNi4zLDE1LjUgMTYuNiwxNC4zIDE2LjYsMTIuOEgxOC44QzE4LjgsMTUuMSAxOC4zLDE3IDE3LjIsMTguNUwyMCwyMS44SDE3TDE1LjcsMjAuM0MxNSwyMC45IDE0LjMsMjEuMyAxMy40LDIxLjZDMTIuNSwyMS45IDExLjYsMjIuMSAxMC43LDIyLjFDOC44LDIyLjEgNy4zLDIxLjYgNi4xLDIwLjZDNSwxOS41IDQuNCwxOC4yIDQuNCwxNi41TTEwLjcsMjBDMTIsMjAgMTMuMiwxOS41IDE0LjMsMTguNUw5LjYsMTIuOEw5LjIsMTMuMUM3LjcsMTQuMiA3LDE1LjMgNywxNi41QzcsMTcuNiA3LjMsMTguNCA4LDE5QzguNywxOS42IDkuNSwyMCAxMC43LDIwTTguNSw2LjdDOC41LDcuNiA5LDguNiAxMC4xLDkuOUwxMS43LDguOEMxMi4zLDguNCAxMi43LDggMTIuOSw3LjZDMTMuMSw3LjIgMTMuMiw2LjcgMTMuMiw2LjJDMTMuMiw1LjYgMTMsNS4xIDEyLjUsNC43QzEyLjEsNC4zIDExLjUsNC4xIDEwLjgsNC4xQzEwLjEsNC4xIDkuNSw0LjMgOS4xLDQuOEM4LjcsNS4zIDguNSw1LjkgOC41LDYuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbXBsaWZpZXIgPSBcIk0xMCwySDE0QTEsMSAwIDAsMSAxNSwzSDIxVjIxSDE5QTEsMSAwIDAsMSAxOCwyMkExLDEgMCAwLDEgMTcsMjFIN0ExLDEgMCAwLDEgNiwyMkExLDEgMCAwLDEgNSwyMUgzVjNIOUExLDEgMCAwLDEgMTAsMk01LDVWOUgxOVY1SDVNNyw2QTEsMSAwIDAsMSA4LDdBMSwxIDAgMCwxIDcsOEExLDEgMCAwLDEgNiw3QTEsMSAwIDAsMSA3LDZNMTIsNkgxNFY3SDEyVjZNMTUsNkgxNlY4SDE1VjZNMTcsNkgxOFY4SDE3VjZNMTIsMTFBNCw0IDAgMCwwIDgsMTVBNCw0IDAgMCwwIDEyLDE5QTQsNCAwIDAsMCAxNiwxNUE0LDQgMCAwLDAgMTIsMTFNMTAsNkExLDEgMCAwLDEgMTEsN0ExLDEgMCAwLDEgMTAsOEExLDEgMCAwLDEgOSw3QTEsMSAwIDAsMSAxMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFtcGxpZmllck9mZiA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDMgNC45VjIxSDVDNSAyMS42IDUuNCAyMiA2IDIyUzcgMjEuNiA3IDIxSDE3QzE3IDIxLjYgMTcuNCAyMiAxOCAyMlMxOSAyMS42IDE5IDIxSDE5LjFMMjAuOCAyMi43TDIyLjEgMjEuNU01IDlWNi45TDcuMSA5SDVNMTIgMTlDOS44IDE5IDggMTcuMiA4IDE1QzggMTMuNiA4LjcgMTIuNCA5LjggMTEuN0wxNS4zIDE3LjJDMTQuNiAxOC4zIDEzLjQgMTkgMTIgMTlNMTQgNlY3SDEyVjZIMTRNMTAgNkMxMC42IDYgMTEgNi40IDExIDdDMTEgNy4yIDEwLjkgNy40IDEwLjggNy42TDkuNCA2LjJDOS42IDYuMSA5LjggNiAxMCA2TTguMiA1TDYuMiAzSDlDOSAyLjQgOS40IDIgMTAgMkgxNEMxNC42IDIgMTUgMi40IDE1IDNIMjFWMTcuOEwxMi4yIDlIMTlWNUg4LjJNMTYgNlY4SDE1VjZIMTZNMTggNlY4SDE3VjZIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5jaG9yID0gXCJNMTIgMkEzIDMgMCAwIDAgOSA1QTMgMyAwIDAgMCAxMSA3LjgzVjlIOFYxMUgxMVYxOS45MkMxMC4yNiAxOS43OSA5LjUgMTkuNTggOC43OSAxOS4yN0M4LjA1IDE4Ljk1IDcuNCAxOC41NiA2LjgyIDE4LjA5QzYuMjQgMTcuNjIgNS43OCAxNy4xMSA1LjQ0IDE2LjU1TDcgMTVMMyAxMlYxNUMzIDE1Ljk3IDMuMjcgMTYuODggMy44MiAxNy43MkM0LjM3IDE4LjU2IDUuMDkgMTkuMzEgNiAxOS45NUM2Ljg3IDIwLjU5IDcuODQgMjEuMDkgOC44OCAyMS40NUM5LjkzIDIxLjgxIDEwLjk3IDIyIDEyIDIyQzEzLjAzIDIyIDE0LjA3IDIxLjggMTUuMTIgMjEuNDRDMTYuMTYgMjEuMDggMTcuMTMgMjAuNTggMTggMTkuOTVDMTguOTIgMTkuMzEgMTkuNjMgMTguNTcgMjAuMTggMTcuNzJDMjAuNzMgMTYuODggMjEgMTUuOTcgMjEgMTVWMTJMMTcgMTVMMTguNTYgMTYuNTVDMTguMjIgMTcuMTEgMTcuNzYgMTcuNjIgMTcuMTggMTguMDlDMTYuNiAxOC41NiAxNS45NSAxOC45NSAxNS4yMSAxOS4yN0MxNC41IDE5LjU4IDEzLjc0IDE5Ljc5IDEzIDE5LjkyVjExSDE2VjlIMTNWNy44MkEzIDMgMCAwIDAgMTUgNUEzIDMgMCAwIDAgMTIgMk0xMiA0QTEgMSAwIDAgMSAxMyA1QTEgMSAwIDAgMSAxMiA2QTEgMSAwIDAgMSAxMSA1QTEgMSAwIDAgMSAxMiA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuZHJvaWQgPSBcIk0xNi42MSAxNS4xNUMxNi4xNSAxNS4xNSAxNS43NyAxNC43OCAxNS43NyAxNC4zMlMxNi4xNSAxMy41IDE2LjYxIDEzLjVIMTYuNjFDMTcuMDcgMTMuNSAxNy40NSAxMy44NiAxNy40NSAxNC4zMkMxNy40NSAxNC43OCAxNy4wNyAxNS4xNSAxNi42MSAxNS4xNU03LjQxIDE1LjE1QzYuOTUgMTUuMTUgNi41NyAxNC43OCA2LjU3IDE0LjMyQzYuNTcgMTMuODYgNi45NSAxMy41IDcuNDEgMTMuNUg3LjQxQzcuODcgMTMuNSA4LjI0IDEzLjg2IDguMjQgMTQuMzJDOC4yNCAxNC43OCA3Ljg3IDE1LjE1IDcuNDEgMTUuMTVNMTYuOTEgMTAuMTRMMTguNTggNy4yNkMxOC42NyA3LjA5IDE4LjYxIDYuODggMTguNDUgNi43OUMxOC4yOCA2LjY5IDE4LjA3IDYuNzUgMTggNi45MkwxNi4yOSA5LjgzQzE0Ljk1IDkuMjIgMTMuNSA4LjkgMTIgOC45MUMxMC40NyA4LjkxIDkgOS4yNCA3LjczIDkuODJMNi4wNCA2LjkxQzUuOTUgNi43NCA1Ljc0IDYuNjggNS41NyA2Ljc4QzUuNCA2Ljg3IDUuMzUgNy4wOCA1LjQ0IDcuMjVMNy4xIDEwLjEzQzQuMjUgMTEuNjkgMi4yOSAxNC41OCAyIDE4SDIyQzIxLjcyIDE0LjU5IDE5Ljc3IDExLjcgMTYuOTEgMTAuMTRIMTYuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5kcm9pZEF1dG8gPSBcIk0yMi43OCwxNy45MUMyMi45NCwxOC4xNiAyMywxOC40MiAyMywxOC43QzIzLDE5LjA4IDIyLjg3LDE5LjM5IDIyLjU3LDE5LjY0QzIyLjI3LDE5Ljg5IDIxLjk0LDIwIDIxLjU2LDIwSDE5LjA4TDEyLjQyLDhIMTEuNThMNC45MiwyMEgyLjM5QzEuOTIsMjAgMS41MywxOS44IDEuMjIsMTkuMzhDMC45MSwxOC45NiAwLjg5LDE4LjUgMS4xNywxOEwxMC43OCwxLjY5QzExLjA5LDEuMjIgMTEuNSwxIDEyLDFDMTIuNTMsMSAxMi45MiwxLjIyIDEzLjE3LDEuNjlMMjIuNzgsMTcuOTFNNC43OCwyMi4zMUwxMiw5LjM4TDE5LjIyLDIyLjMxTDE4LjUsMjNMMTIsMjAuMzRMNS40NCwyM0w0Ljc4LDIyLjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuZHJvaWREZWJ1Z0JyaWRnZSA9IFwiTTE1LDlBMSwxIDAgMCwxIDE0LDhBMSwxIDAgMCwxIDE1LDdBMSwxIDAgMCwxIDE2LDhBMSwxIDAgMCwxIDE1LDlNOSw5QTEsMSAwIDAsMSA4LDhBMSwxIDAgMCwxIDksN0ExLDEgMCAwLDEgMTAsOEExLDEgMCAwLDEgOSw5TTE2LjEyLDQuMzdMMTguMjIsMi4yN0wxNy40LDEuNDRMMTUuMDksMy43NUMxNC4xNiwzLjI4IDEzLjExLDMgMTIsM0MxMC44OCwzIDkuODQsMy4yOCA4LjkxLDMuNzVMNi42LDEuNDRMNS43OCwyLjI3TDcuODgsNC4zN0M2LjE0LDUuNjQgNSw3LjY4IDUsMTBWMTFIMTlWMTBDMTksNy42OCAxNy44Niw1LjY0IDE2LjEyLDQuMzdNNSwxNkM1LDE5Ljg2IDguMTMsMjMgMTIsMjNBNyw3IDAgMCwwIDE5LDE2VjEySDVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5kcm9pZE1lc3NhZ2VzID0gXCJNMjAsMjBIN0EyLDIgMCAwLDEgNSwxOFY4Ljk0TDIuMjMsNS42NEMyLjA5LDUuNDcgMiw1LjI0IDIsNUExLDEgMCAwLDEgMyw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyME04LjUsN0EwLjUsMC41IDAgMCwwIDgsNy41VjguNUEwLjUsMC41IDAgMCwwIDguNSw5SDE4LjVBMC41LDAuNSAwIDAsMCAxOSw4LjVWNy41QTAuNSwwLjUgMCAwLDAgMTguNSw3SDguNU04LjUsMTFBMC41LDAuNSAwIDAsMCA4LDExLjVWMTIuNUEwLjUsMC41IDAgMCwwIDguNSwxM0gxOC41QTAuNSwwLjUgMCAwLDAgMTksMTIuNVYxMS41QTAuNSwwLjUgMCAwLDAgMTguNSwxMUg4LjVNOC41LDE1QTAuNSwwLjUgMCAwLDAgOCwxNS41VjE2LjVBMC41LDAuNSAwIDAsMCA4LjUsMTdIMTMuNUEwLjUsMC41IDAgMCwwIDE0LDE2LjVWMTUuNUEwLjUsMC41IDAgMCwwIDEzLjUsMTVIOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuZHJvaWRTdHVkaW8gPSBcIk0xMSwySDEzVjRIMTMuNUExLjUsMS41IDAgMCwxIDE1LDUuNVY5TDE0LjU2LDkuNDRMMTYuMiwxMi4yOEMxNy4zMSwxMS4xOSAxOCw5LjY4IDE4LDhIMjBDMjAsMTAuNDIgMTguOTMsMTIuNTkgMTcuMjMsMTQuMDZMMjAuMzcsMTkuNUwyMC41LDIxLjcyTDE4LjYzLDIwLjVMMTUuNTYsMTUuMTdDMTQuNSwxNS43IDEzLjI4LDE2IDEyLDE2QzEwLjcyLDE2IDkuNSwxNS43IDguNDQsMTUuMTdMNS4zNywyMC41TDMuNSwyMS43MkwzLjYzLDE5LjVMOS40NCw5LjQ0TDksOVY1LjVBMS41LDEuNSAwIDAsMSAxMC41LDRIMTFWMk05LjQ0LDEzLjQzQzEwLjIyLDEzLjggMTEuMDksMTQgMTIsMTRDMTIuOTEsMTQgMTMuNzgsMTMuOCAxNC41NiwxMy40M0wxMy4xLDEwLjlIMTMuMDlDMTIuNDcsMTEuNSAxMS41MywxMS41IDEwLjkxLDEwLjlIMTAuOUw5LjQ0LDEzLjQzTTEyLDZBMSwxIDAgMCwwIDExLDdBMSwxIDAgMCwwIDEyLDhBMSwxIDAgMCwwIDEzLDdBMSwxIDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5nbGVBY3V0ZSA9IFwiTTIwLDE5SDQuMDlMMTQuMTgsNC40M0wxNS44Miw1LjU3TDExLjI4LDEyLjEzQzEyLjg5LDEyLjk2IDE0LDE0LjYyIDE0LDE2LjU0QzE0LDE2LjcgMTQsMTYuODUgMTMuOTcsMTdIMjBWMTlNNy45MSwxN0gxMS45NkMxMiwxNi44NSAxMiwxNi43IDEyLDE2LjU0QzEyLDE1LjI4IDExLjI0LDE0LjIyIDEwLjE0LDEzLjc4TDcuOTEsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5nbGVPYnR1c2UgPSBcIk0yMSwxOUg5LjMxTDQuMDcsNS4zNkw1LjkzLDQuNjRMOC45NiwxMi41QzkuNSwxMi4yOSAxMC4wOSwxMi4xNyAxMC43MSwxMi4xN1YxMi4xN0MxMy4zOCwxMi4xNyAxNS41NiwxNC4zNCAxNS41OCwxN0gyMVYxOU0xMC42OSwxN0gxMy41OEMxMy41NiwxNS40MiAxMi4zLDE0LjE3IDEwLjcxLDE0LjE3QzEwLjM0LDE0LjE3IDEwLDE0LjI0IDkuNjcsMTQuMzZMMTAuNjksMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5nbGVSaWdodCA9IFwiTTUsNEg3VjExSDEzVjE3SDIwVjE5SDVWNE03LDE3SDExVjEzSDdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5ndWxhciA9IFwiTTEyLDIuNUwyMC44NCw1LjY1TDE5LjUsMTcuMzVMMTIsMjEuNUw0LjUsMTcuMzVMMy4xNiw1LjY1TDEyLDIuNU0xMiw0LjZMNi40NywxN0g4LjUzTDkuNjQsMTQuMjJIMTQuMzRMMTUuNDUsMTdIMTcuNUwxMiw0LjZNMTMuNjIsMTIuNUgxMC4zOUwxMiw4LjYzTDEzLjYyLDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5ndWxhcmpzID0gXCJNMTIsMi41TDIwLjg0LDUuNjVMMTkuNSwxNy4zNUwxMiwyMS41TDQuNSwxNy4zNUwzLjE2LDUuNjVMMTIsMi41TTEyLDQuNUw1LDdMNi4wOCwxNi4yMkwxMiwxOS41TDE3LjkyLDE2LjIyTDE5LDdMMTIsNC41TTEyLDUuNzJMMTYuNTgsMTZIMTQuODdMMTMuOTQsMTMuNzJIMTAuMDRMOS4xMiwxNkg3LjQxTDEyLDUuNzJNMTMuMzQsMTIuM0wxMiw5LjA3TDEwLjY2LDEyLjNIMTMuMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5pbWF0aW9uID0gXCJNNCwyQzIuODksMiAyLDIuODkgMiw0VjE0SDRWNEgxNFYySDRNOCw2QzYuODksNiA2LDYuODkgNiw4VjE4SDhWOEgxOFY2SDhNMTIsMTBDMTAuODksMTAgMTAsMTAuODkgMTAsMTJWMjBDMTAsMjEuMTEgMTAuODksMjIgMTIsMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWMTJDMjIsMTAuODkgMjEuMTEsMTAgMjAsMTBIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5pbWF0aW9uT3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjE0SDRWNEgxNFYySDRNOCw2QTIsMiAwIDAsMCA2LDhWMThIOFY4SDE4VjZIOE0yMCwxMlYyMEgxMlYxMkgyME0yMCwxMEgxMkEyLDIgMCAwLDAgMTAsMTJWMjBBMiwyIDAgMCwwIDEyLDIySDIwQTIsMiAwIDAsMCAyMiwyMFYxMkEyLDIgMCAwLDAgMjAsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW5pbWF0aW9uUGxheSA9IFwiTTQsMkgxNFY0SDRWMTRIMlY0QzIsMi44OSAyLjg5LDIgNCwyTTgsNkgxOFY4SDhWMThINlY4QzYsNi44OSA2Ljg5LDYgOCw2TTEyLDEwSDIwQzIxLjExLDEwIDIyLDEwLjg5IDIyLDEyVjIwQzIyLDIxLjExIDIxLjExLDIyIDIwLDIySDEyQzEwLjg5LDIyIDEwLDIxLjExIDEwLDIwVjEyQzEwLDEwLjg5IDEwLjg5LDEwIDEyLDEwTTE0LDEyVjIwTDIwLDE2TDE0LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFuaW1hdGlvblBsYXlPdXRsaW5lID0gXCJNNCwyQTIsMiAwIDAsMCAyLDRWMTRINFY0SDE0VjJINE04LDZBMiwyIDAgMCwwIDYsOFYxOEg4VjhIMThWNkg4TTIwLDEyVjIwSDEyVjEySDIwTTIwLDEwSDEyQTIsMiAwIDAsMCAxMCwxMlYyMEEyLDIgMCAwLDAgMTIsMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjEyQTIsMiAwIDAsMCAyMCwxME0xNCwxM1YxOUwxOCwxNkwxNCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbnNpYmxlID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMk0xNi4xIDE3QzE1LjkxIDE3IDE1Ljc2IDE2LjkgMTUuNTUgMTYuNzNMMTAuMzkgMTIuNTZMOC42NiAxNi45SDcuMTdMMTEuNTQgNi4zOUMxMS42NSA2LjExIDExLjg5IDUuOTcgMTIuMTcgNS45N0MxMi40NSA1Ljk3IDEyLjY3IDYuMTEgMTIuNzkgNi4zOUwxNi43NyAxNS45N0MxNi44MSAxNi4wOCAxNi44NCAxNi4xOSAxNi44NCAxNi4yNkMxNi44MyAxNi42OCAxNi41IDE3IDE2LjEgMTdNMTIuMTcgOC4xMUwxNC43NiAxNC41TDEwLjg1IDExLjQyTDEyLjE3IDguMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQW50ZW5uYSA9IFwiTTEyIDcuNUMxMi42OSA3LjUgMTMuMjcgNy43MyAxMy43NiA4LjJTMTQuNSA5LjI3IDE0LjUgMTBDMTQuNSAxMS4wNSAxNCAxMS44MSAxMyAxMi4yOFYyMUgxMVYxMi4yOEMxMCAxMS44MSA5LjUgMTEuMDUgOS41IDEwQzkuNSA5LjI3IDkuNzYgOC42NyAxMC4yNCA4LjJTMTEuMzEgNy41IDEyIDcuNU0xNi42OSA1LjNDMTcuOTQgNi41NSAxOC42MSA4LjExIDE4LjcgMTBDMTguNyAxMS44IDE4LjAzIDEzLjM4IDE2LjY5IDE0LjcyTDE1LjUgMTMuNUMxNi41IDEyLjU5IDE3IDExLjQyIDE3IDEwQzE3IDguNjcgMTYuNSA3LjUgMTUuNSA2LjVMMTYuNjkgNS4zTTYuMDkgNC4wOEM0LjUgNS42NyAzLjcgNy42NCAzLjcgMTBTNC41IDE0LjMgNi4wOSAxNS44OUw0LjkyIDE3LjExQzMgMTUuMDggMiAxMi43IDIgMTBDMiA3LjMgMyA0Ljk0IDQuOTIgMi45MUw2LjA5IDQuMDhNMTkuMDggMi45MUMyMSA0Ljk0IDIyIDcuMyAyMiAxMEMyMiAxMi44IDIxIDE1LjE3IDE5LjA4IDE3LjExTDE3LjkxIDE1Ljg5QzE5LjUgMTQuMyAyMC4zIDEyLjMzIDIwLjMgMTBTMTkuNSA1LjY3IDE3LjkxIDQuMDhMMTkuMDggMi45MU03LjMxIDUuM0w4LjUgNi41QzcuNSA3LjQyIDcgOC41OCA3IDEwQzcgMTEuMzMgNy41IDEyLjUgOC41IDEzLjVMNy4zMSAxNC43MkM1Ljk3IDEzLjM4IDUuMyAxMS44IDUuMyAxMEM1LjMgOC4yIDUuOTcgNi42NCA3LjMxIDUuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBbnZpbCA9IFwiTTksNVYxMEMxMy4wMywxMi40NyA4LjQ0LDE0Ljk3IDYsMTZWMTlIMjFWMTZDMTQuNTksMTMuMjcgMTcuNDcsOSAyMiw4VjVIOU0yLDZDMi44MSw4LjEzIDQuNDIsOS41IDcsMTBWNkgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwYWNoZUthZmthID0gXCJNMTUuNTQgMTIuOTdDMTQuODYgMTIuOTcgMTQuMjQgMTMuMjIgMTMuNzYgMTMuNjRMMTIuNDcgMTIuODlDMTIuNTYgMTIuNiAxMi42IDEyLjI5IDEyLjYgMTEuOTdDMTIuNiAxMS42NSAxMi41NiAxMS4zNCAxMi41IDExLjA1TDEzLjczIDEwLjMyQzE0LjIxIDEwLjc2IDE0Ljg1IDExIDE1LjU0IDExQzE3LjAzIDExIDE4LjI0IDkuODEgMTguMjQgOC4zMlMxNy4wMyA1LjYzIDE1LjU0IDUuNjMgMTIuODQgNi44NCAxMi44NCA4LjMzQzEyLjg0IDguNSAxMi44NiA4LjcgMTIuODkgOC44OEwxMS42NCA5LjZDMTEuMjEgOS4xNSAxMC42NCA4LjgyIDEwIDguNjVWNy4yNkMxMS4wOSA2LjkxIDExLjg4IDUuODkgMTEuODggNC42OUMxMS44OCAzLjIgMTAuNjcgMiA5LjE4IDJDNy42OSAyIDYuNSAzLjIgNi41IDQuNjlDNi41IDUuODkgNy4yNiA2LjkgOC4zNCA3LjI2VjguNjZDNi44NiA5LjA0IDUuNzYgMTAuMzcgNS43NiAxMS45N0M1Ljc2IDEzLjU3IDYuODYgMTQuOTEgOC4zNCAxNS4yOFYxNi43M0M3LjI2IDE3LjA5IDYuNSAxOC4xIDYuNSAxOS4zQzYuNSAyMC43OSA3LjY5IDIyIDkuMTggMjJDMTAuNjcgMjIgMTEuODggMjAuNzkgMTEuODggMTkuM0MxMS44OCAxOC4xIDExLjA5IDE3LjA4IDEwIDE2LjczVjE1LjI5QzEwLjY0IDE1LjEzIDExLjIgMTQuOCAxMS42NCAxNC4zNUwxMi45IDE1LjA4QzEyLjg2IDE1LjI3IDEyLjg0IDE1LjQ2IDEyLjg0IDE1LjY2QzEyLjg0IDE3LjE1IDE0LjA1IDE4LjM2IDE1LjU0IDE4LjM2UzE4LjI0IDE3LjE1IDE4LjI0IDE1LjY2IDE3LjAzIDEyLjk3IDE1LjU0IDEyLjk3TTE1LjU0IDdDMTYuMjggNyAxNi44NyA3LjU5IDE2Ljg3IDguMzJTMTYuMjggOS42NiAxNS41NCA5LjY2IDE0LjIxIDkuMDYgMTQuMjEgOC4zMiAxNC44IDcgMTUuNTQgN003Ljg1IDQuNjlDNy44NSAzLjk1IDguNDQgMy4zNSA5LjE4IDMuMzVDOS45MiAzLjM1IDEwLjUgMy45NSAxMC41IDQuNjlTOS45MiA2LjAzIDkuMTggNi4wM0M4LjQ0IDYuMDMgNy44NSA1LjQzIDcuODUgNC42OU0xMC41IDE5LjNDMTAuNSAyMC4wNCA5LjkyIDIwLjY0IDkuMTggMjAuNjRDOC40NCAyMC42NCA3Ljg1IDIwLjA0IDcuODUgMTkuM0M3Ljg1IDE4LjU2IDguNDQgMTcuOTYgOS4xOCAxNy45NkM5LjkyIDE3Ljk2IDEwLjUgMTguNTYgMTAuNSAxOS4zTTkuMTggMTMuODlDOC4xMiAxMy44OSA3LjI2IDEzLjAzIDcuMjYgMTEuOTdDNy4yNiAxMC45MSA4LjEyIDEwLjA1IDkuMTggMTAuMDVTMTEuMSAxMC45MSAxMS4xIDExLjk3QzExLjEgMTMuMDMgMTAuMjQgMTMuODkgOS4xOCAxMy44OU0xNS41NCAxN0MxNC44IDE3IDE0LjIxIDE2LjQgMTQuMjEgMTUuNjZTMTQuOCAxNC4zMyAxNS41NCAxNC4zMyAxNi44NyAxNC45MyAxNi44NyAxNS42NiAxNi4yOCAxNyAxNS41NCAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcGkgPSBcIk03IDdINUEyIDIgMCAwIDAgMyA5VjE3SDVWMTNIN1YxN0g5VjlBMiAyIDAgMCAwIDcgN003IDExSDVWOUg3TTE0IDdIMTBWMTdIMTJWMTNIMTRBMiAyIDAgMCAwIDE2IDExVjlBMiAyIDAgMCAwIDE0IDdNMTQgMTFIMTJWOUgxNE0yMCA5VjE1SDIxVjE3SDE3VjE1SDE4VjlIMTdWN0gyMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwaU9mZiA9IFwiTTcgMTFINVY5SDdNMTQgN0gxMS4zOEwxMy4yOSA5SDE0VjkuNzVMMTUuODcgMTEuNzFDMTUuOTUgMTEuNSAxNiAxMS4yNSAxNiAxMVY5QzE2IDcuOSAxNS4xMSA3IDE0IDdNNC40NSAyLjYyTDMgNEw1Ljg2IDdINUMzLjkgNyAzIDcuOSAzIDlWMTdINVYxM0g3VjE3SDlWMTAuM0wxMCAxMS4zNFYxN0gxMlYxMy40NUwxOS41NSAyMS4zOEwyMSAyME0yMC45IDE3SDIxVjE1SDIwVjlIMjFWN0gxN1Y5SDE4VjEzLjk1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlID0gXCJNMTguNzEsMTkuNUMxNy44OCwyMC43NCAxNywyMS45NSAxNS42NiwyMS45N0MxNC4zMiwyMiAxMy44OSwyMS4xOCAxMi4zNywyMS4xOEMxMC44NCwyMS4xOCAxMC4zNywyMS45NSA5LjEsMjJDNy43OSwyMi4wNSA2LjgsMjAuNjggNS45NiwxOS40N0M0LjI1LDE3IDIuOTQsMTIuNDUgNC43LDkuMzlDNS41Nyw3Ljg3IDcuMTMsNi45MSA4LjgyLDYuODhDMTAuMSw2Ljg2IDExLjMyLDcuNzUgMTIuMTEsNy43NUMxMi44OSw3Ljc1IDE0LjM3LDYuNjggMTUuOTIsNi44NEMxNi41Nyw2Ljg3IDE4LjM5LDcuMSAxOS41Niw4LjgyQzE5LjQ3LDguODggMTcuMzksMTAuMSAxNy40MSwxMi42M0MxNy40NCwxNS42NSAyMC4wNiwxNi42NiAyMC4wOSwxNi42N0MyMC4wNiwxNi43NCAxOS42NywxOC4xMSAxOC43MSwxOS41TTEzLDMuNUMxMy43MywyLjY3IDE0Ljk0LDIuMDQgMTUuOTQsMkMxNi4wNywzLjE3IDE1LjYsNC4zNSAxNC45LDUuMTlDMTQuMjEsNi4wNCAxMy4wNyw2LjcgMTEuOTUsNi42MUMxMS44LDUuNDYgMTIuMzYsNC4yNiAxMywzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGVBaXJwbGF5ID0gXCJNNiwyMkgxOEwxMiwxNk0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxN0EyLDIgMCAwLDAgMywxOUg3VjE3SDNWNUgyMVYxN0gxN1YxOUgyMUEyLDIgMCAwLDAgMjMsMTdWNUEyLDIgMCAwLDAgMjEsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUZpbmRlciA9IFwiTTggMTFDNy40NSAxMSA3IDEwLjU1IDcgMTBWOEM3IDcuNDUgNy40NSA3IDggN0M4LjU1IDcgOSA3LjQ1IDkgOFYxMEM5IDEwLjU1IDguNTUgMTEgOCAxMU0xNyAxMFY4QzE3IDcuNDUgMTYuNTUgNyAxNiA3QzE1LjQ1IDcgMTUgNy40NSAxNSA4VjEwQzE1IDEwLjU1IDE1LjQ1IDExIDE2IDExQzE2LjU1IDExIDE3IDEwLjU1IDE3IDEwTTIyIDVWMjBDMjIgMjEuMSAyMS4xIDIyIDIwIDIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjVDMiAzLjkgMi45IDMgNCAzSDIwQzIxLjEgMyAyMiAzLjkgMjIgNU00IDIwTDEzLjA2IDIwQzEyLjk2IDE5LjM1IDEyLjg5IDE4LjY0IDEyLjgzIDE3Ljk0QzEyLjU2IDE3Ljk2IDEyLjMgMTggMTIgMThDOC4yNCAxOCA2LjMxIDE1LjczIDYuMjMgMTUuNjNDNS44OCAxNS4yMSA1Ljk0IDE0LjU4IDYuMzYgMTQuMjJDNi43OCAxMy44NyA3LjQxIDEzLjkzIDcuNzcgMTQuMzVDNy44MyAxNC40MyA5LjIzIDE2IDEyIDE2QzEyLjI3IDE2IDEyLjUgMTUuOTcgMTIuNzQgMTUuOTVDMTIuNzEgMTQuNzUgMTIuNzMgMTMuNzQgMTIuNzQgMTMuMjZIMTAuOTNDMTAuMjggMTMuMjYgOS43NSAxMi43IDkuNzUgMTJDOS43NyAxMS43NSAxMC4wNyA3LjgyIDExIDVINEw0IDIwTTIwIDIwTDIwIDVIMTIuNkMxMS43NCA3LjE5IDExLjM3IDEwLjczIDExLjI3IDExLjc2SDEzLjA4QzEzLjcyIDExLjc2IDE0LjI1IDEyLjMyIDE0LjI1IDEzQzE0LjI1IDEzLjA0IDE0LjIxIDE0LjE1IDE0LjI0IDE1LjZDMTUuNTQgMTUuMTEgMTYuMjIgMTQuMzUgMTYuMjMgMTQuMzRDMTYuNTggMTMuOTIgMTcuMjEgMTMuODUgMTcuNjMgMTQuMkMxOC4wNiAxNC41NSAxOC4xMiAxNS4xOCAxNy43NyAxNS42MUMxNy43MSAxNS42OCAxNi41NSAxNy4wNSAxNC4zMiAxNy42OEMxNC4zOCAxOC41IDE0LjQ2IDE5LjI5IDE0LjU4IDIwSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlSWNsb3VkID0gXCJNMjIsMTUuMDRDMjIsMTcuMjMgMjAuMjQsMTkgMTguMDcsMTlINS45M0MzLjc2LDE5IDIsMTcuMjMgMiwxNS4wNEMyLDEzLjA3IDMuNDMsMTEuNDQgNS4zMSwxMS4xNEM1LjI4LDExIDUuMjcsMTAuODYgNS4yNywxMC43MUM1LjI3LDkuMzMgNi4zOCw4LjIgNy43Niw4LjJDOC4zNyw4LjIgOC45NCw4LjQzIDkuMzcsOC44QzEwLjE0LDcuMDUgMTEuMTMsNS40NCAxMy45MSw1LjQ0QzE3LjI4LDUuNDQgMTguODcsOC4wNiAxOC44NywxMC44M0MxOC44NywxMC45NCAxOC44NywxMS4wNiAxOC44NiwxMS4xN0MyMC42NSwxMS41NCAyMiwxMy4xMyAyMiwxNS4wNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUlvcyA9IFwiTTIuMDkgMTYuOEgzLjc1VjkuNzZIMi4wOU0yLjkyIDguODRDMy40NCA4Ljg0IDMuODQgOC40NCAzLjg0IDcuOTRDMy44NCA3LjQ0IDMuNDQgNy4wNCAyLjkyIDcuMDRDMi40IDcuMDQgMiA3LjQ0IDIgNy45NEMyIDguNDQgMi40IDguODQgMi45MiA4Ljg0TTkuMjUgNy4wNkM2LjQ2IDcuMDYgNC43IDguOTYgNC43IDEyQzQuNyAxNS4wNiA2LjQ2IDE2Ljk2IDkuMjUgMTYuOTZDMTIuMDQgMTYuOTYgMTMuOCAxNS4wNiAxMy44IDEyQzEzLjggOC45NiAxMi4wNCA3LjA2IDkuMjUgNy4wNk05LjI1IDguNUMxMC45NiA4LjUgMTIuMDUgOS44NyAxMi4wNSAxMkMxMi4wNSAxNC4xNSAxMC45NiAxNS41IDkuMjUgMTUuNUM3LjU0IDE1LjUgNi40NiAxNC4xNSA2LjQ2IDEyQzYuNDYgOS44NyA3LjU0IDguNSA5LjI1IDguNU0xNC41IDE0LjExQzE0LjU3IDE1Ljg3IDE2IDE2Ljk2IDE4LjIyIDE2Ljk2QzIwLjU0IDE2Ljk2IDIyIDE1LjgyIDIyIDE0QzIyIDEyLjU3IDIxLjE4IDExLjc3IDE5LjIzIDExLjMyTDE4LjEzIDExLjA3QzE2Ljk1IDEwLjc5IDE2LjQ3IDEwLjQyIDE2LjQ3IDkuNzhDMTYuNDcgOSAxNy4yIDguNDUgMTguMjggOC40NUMxOS4zOCA4LjQ1IDIwLjEzIDkgMjAuMjEgOS44OUgyMS44NEMyMS44IDguMiAyMC40MSA3LjA2IDE4LjI5IDcuMDZDMTYuMjEgNy4wNiAxNC43MyA4LjIxIDE0LjczIDkuOTFDMTQuNzMgMTEuMjggMTUuNTYgMTIuMTMgMTcuMzMgMTIuNTNMMTguNTcgMTIuODJDMTkuNzggMTMuMTEgMjAuMjcgMTMuNSAyMC4yNyAxNC4yQzIwLjI3IDE1IDE5LjQ3IDE1LjU3IDE4LjMxIDE1LjU3QzE3LjE1IDE1LjU3IDE2LjI2IDE1IDE2LjE2IDE0LjExSDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGVLZXlib2FyZENhcHMgPSBcIk0xNSwxNFY4SDE3LjE3TDEyLDIuODNMNi44Myw4SDlWMTRIMTVNMTIsMEwyMiwxMEgxN1YxNkg3VjEwSDJMMTIsME03LDE4SDE3VjI0SDdWMThNMTUsMjBIOVYyMkgxNVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUtleWJvYXJkQ29tbWFuZCA9IFwiTTYsMkE0LDQgMCAwLDEgMTAsNlY4SDE0VjZBNCw0IDAgMCwxIDE4LDJBNCw0IDAgMCwxIDIyLDZBNCw0IDAgMCwxIDE4LDEwSDE2VjE0SDE4QTQsNCAwIDAsMSAyMiwxOEE0LDQgMCAwLDEgMTgsMjJBNCw0IDAgMCwxIDE0LDE4VjE2SDEwVjE4QTQsNCAwIDAsMSA2LDIyQTQsNCAwIDAsMSAyLDE4QTQsNCAwIDAsMSA2LDE0SDhWMTBINkE0LDQgMCAwLDEgMiw2QTQsNCAwIDAsMSA2LDJNMTYsMThBMiwyIDAgMCwwIDE4LDIwQTIsMiAwIDAsMCAyMCwxOEEyLDIgMCAwLDAgMTgsMTZIMTZWMThNMTQsMTBIMTBWMTRIMTRWMTBNNiwxNkEyLDIgMCAwLDAgNCwxOEEyLDIgMCAwLDAgNiwyMEEyLDIgMCAwLDAgOCwxOFYxNkg2TTgsNkEyLDIgMCAwLDAgNiw0QTIsMiAwIDAsMCA0LDZBMiwyIDAgMCwwIDYsOEg4VjZNMTgsOEEyLDIgMCAwLDAgMjAsNkEyLDIgMCAwLDAgMTgsNEEyLDIgMCAwLDAgMTYsNlY4SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlS2V5Ym9hcmRDb250cm9sID0gXCJNMTkuNzgsMTEuNzhMMTguMzYsMTMuMTlMMTIsNi44M0w1LjY0LDEzLjE5TDQuMjIsMTEuNzhMMTIsNEwxOS43OCwxMS43OFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUtleWJvYXJkT3B0aW9uID0gXCJNMyw0SDkuMTFMMTYuMTUsMThIMjFWMjBIMTQuODhMNy44NCw2SDNWNE0xNCw0SDIxVjZIMTRWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsZUtleWJvYXJkU2hpZnQgPSBcIk0xNSwxOFYxMkgxNy4xN0wxMiw2LjgzTDYuODMsMTJIOVYxOEgxNU0xMiw0TDIyLDE0SDE3VjIwSDdWMTRIMkwxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcGxlU2FmYXJpID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjA5IDQuOCwxNiA2LjExLDE3LjQxTDkuODgsOS44OEwxNy40MSw2LjExQzE2LDQuOCAxNC4wOSw0IDEyLDRNMTIsMjBBOCw4IDAgMCwwIDIwLDEyQzIwLDkuOTEgMTkuMiw4IDE3Ljg5LDYuNTlMMTQuMTIsMTQuMTJMNi41OSwxNy44OUM4LDE5LjIgOS45MSwyMCAxMiwyME0xMiwxMkwxMS4yMywxMS4yM0w5LjcsMTQuM0wxMi43NywxMi43N0wxMiwxMk0xMiwxNy41SDEzVjE5SDEyVjE3LjVNMTUuODgsMTUuODlMMTYuNTksMTUuMThMMTcuNjUsMTYuMjRMMTYuOTQsMTYuOTVMMTUuODgsMTUuODlNMTcuNSwxMlYxMUgxOVYxMkgxNy41TTEyLDYuNUgxMVY1SDEyVjYuNU04LjEyLDguMTFMNy40MSw4LjgyTDYuMzUsNy43Nkw3LjA2LDcuMDVMOC4xMiw4LjExTTYuNSwxMlYxM0g1VjEySDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsaWNhdGlvbiA9IFwiTTE5LDRDMjAuMTEsNCAyMSw0LjkgMjEsNlYxOEEyLDIgMCAwLDEgMTksMjBINUMzLjg5LDIwIDMsMTkuMSAzLDE4VjZBMiwyIDAgMCwxIDUsNEgxOU0xOSwxOFY4SDVWMThIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGljYXRpb25Db2cgPSBcIk0yMS43IDE4LjZWMTcuNkwyMi44IDE2LjhDMjIuOSAxNi43IDIzIDE2LjYgMjIuOSAxNi41TDIxLjkgMTQuOEMyMS45IDE0LjcgMjEuNyAxNC43IDIxLjYgMTQuN0wyMC40IDE1LjJDMjAuMSAxNSAxOS44IDE0LjggMTkuNSAxNC43TDE5LjMgMTMuNEMxOS4zIDEzLjMgMTkuMiAxMy4yIDE5LjEgMTMuMkgxNy4xQzE2LjkgMTMuMiAxNi44IDEzLjMgMTYuOCAxMy40TDE2LjYgMTQuN0MxNi4zIDE0LjkgMTYuMSAxNSAxNS44IDE1LjJMMTQuNiAxNC43QzE0LjUgMTQuNyAxNC40IDE0LjcgMTQuMyAxNC44TDEzLjMgMTYuNUMxMy4zIDE2LjYgMTMuMyAxNi43IDEzLjQgMTYuOEwxNC41IDE3LjZWMTguNkwxMy40IDE5LjRDMTMuMyAxOS41IDEzLjIgMTkuNiAxMy4zIDE5LjdMMTQuMyAyMS40QzE0LjQgMjEuNSAxNC41IDIxLjUgMTQuNiAyMS41TDE1LjggMjFDMTYgMjEuMiAxNi4zIDIxLjQgMTYuNiAyMS41TDE2LjggMjIuOEMxNi45IDIyLjkgMTcgMjMgMTcuMSAyM0gxOS4xQzE5LjIgMjMgMTkuMyAyMi45IDE5LjMgMjIuOEwxOS41IDIxLjVDMTkuOCAyMS4zIDIwIDIxLjIgMjAuMyAyMUwyMS41IDIxLjRDMjEuNiAyMS40IDIxLjcgMjEuNCAyMS44IDIxLjNMMjIuOCAxOS42QzIyLjkgMTkuNSAyMi45IDE5LjQgMjIuOCAxOS40TDIxLjcgMTguNk0xOCAxOS41QzE3LjIgMTkuNSAxNi41IDE4LjggMTYuNSAxOFMxNy4yIDE2LjUgMTggMTYuNSAxOS41IDE3LjIgMTkuNSAxOCAxOC44IDE5LjUgMTggMTkuNU0xMS4yOSAyMEg1QzMuODkgMjAgMyAxOS4xIDMgMThWNkMzIDQuODkgMy45IDQgNSA0SDE5QzIwLjExIDQgMjEgNC45IDIxIDZWMTEuNjhDMjAuMzggMTEuMzkgMTkuNzEgMTEuMTggMTkgMTEuMDhWOEg1VjE4SDExQzExIDE4LjcgMTEuMTEgMTkuMzcgMTEuMjkgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGljYXRpb25FeHBvcnQgPSBcIk04LDEySDE3Ljc2TDE1LjI2LDkuNUwxNi42Nyw4LjA4TDIxLjU5LDEzTDE2LjY3LDE3LjkyTDE1LjI2LDE2LjVMMTcuNzYsMTRIOFYxMk0xOSwzQzIwLjExLDMgMjEsMy45IDIxLDVWOS42N0wxOSw3LjY3VjdINVYxOUgxOVYxOC4zM0wyMSwxNi4zM1YxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBsaWNhdGlvbkltcG9ydCA9IFwiTTEsMTJIMTAuNzZMOC4yNiw5LjVMOS42Nyw4LjA4TDE0LjU5LDEzTDkuNjcsMTcuOTJMOC4yNiwxNi41TDEwLjc2LDE0SDFWMTJNMTksM0MyMC4xMSwzIDIxLDMuOSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWMTZINVYxOUgxOVY3SDVWMTBIM1Y1QTIsMiAwIDAsMSA1LDNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXBwbGljYXRpb25TZXR0aW5ncyA9IFwiTTcgMjJIOVYyNEg3VjIyTTExIDIySDEzVjI0SDExVjIyTTE1IDIySDE3VjI0SDE1VjIyTTUgNEgxOUEyIDIgMCAwIDEgMjEgNlYxOEEyIDIgMCAwIDEgMTkgMjBINUEyIDIgMCAwIDEgMyAxOFY2QTIgMiAwIDAgMSA1IDRNNSA4VjE4SDE5VjhINVwiO1xyXG5leHBvcnQgdmFyIG1kaUFwcHJveGltYXRlbHlFcXVhbCA9IFwiTTE4LjkgOS4yQzE4LjEgMTAuMSAxNi42IDExIDE1IDExQzEzLjUgMTEgMTIuNiAxMC41IDExLjggMTAuMUMxMSA5LjggMTAuMiA5LjMgOC45IDkuM0M3LjcgOS4zIDYuNiAxMCA2IDEwLjZMNSA5LjFDNS45IDguMiA3LjMgNy4yIDguOSA3LjJDMTAuNCA3LjIgMTEuMyA3LjggMTIuMSA4LjFDMTIuOSA4LjQgMTMuNyA5IDE1IDlDMTYuMiA5IDE3LjMgOC4yIDE3LjkgNy42TDE4LjkgOS4yTTE5IDE0LjFDMTguMSAxNSAxNi43IDE2IDE1LjEgMTZDMTMuNiAxNiAxMi43IDE1LjUgMTEuOSAxNS4xQzExLjEgMTQuOCAxMC4zIDE0LjIgOSAxNC4yQzcuOCAxNC4yIDYuNyAxNSA2LjEgMTUuNkw1LjEgMTRDNiAxMy4xIDcuNCAxMi4xIDkgMTIuMUMxMC41IDEyLjEgMTEuNCAxMi42IDEyLjIgMTNDMTMgMTMuMyAxMy44IDEzLjggMTUuMSAxMy44QzE2LjMgMTMuOCAxNy40IDEzIDE4IDEyLjRMMTkgMTQuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHByb3hpbWF0ZWx5RXF1YWxCb3ggPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNOS4zIDguMkMxMC42IDguMiAxMS40IDguNyAxMi4xIDlDMTIuNyA5LjMgMTMuNCA5LjcgMTQuNSA5LjdDMTUuNSA5LjcgMTYuNSA5IDE3IDguNUwxNy44IDkuOEMxNy4xIDEwLjYgMTUuOCAxMS40IDE0LjQgMTEuNEMxMy4xIDExLjQgMTIuMyAxMC45IDExLjcgMTAuNkMxMS4xIDEwLjMgMTAuMyA5LjkgOS4yIDkuOUM4LjIgOS45IDcuMiAxMC42IDYuNyAxMS4xTDYgOS44QzYuNyA5IDggOC4yIDkuMyA4LjJNMTQuNiAxNS44QzEzLjMgMTUuOCAxMi41IDE1LjMgMTEuOCAxNUMxMS4yIDE0LjcgMTAuNCAxNC4zIDkuMyAxNC4zQzguMyAxNC4zIDcuMyAxNSA2LjggMTUuNUw2IDE0LjFDNi43IDEzLjMgOCAxMi41IDkuMyAxMi41QzEwLjYgMTIuNSAxMS40IDEzIDEyLjEgMTMuM0MxMi43IDEzLjYgMTMuNCAxNCAxNC42IDE0QzE1LjYgMTQgMTYuNiAxMy4zIDE3LjEgMTIuOEwxNy45IDE0LjFDMTcuMyAxNSAxNiAxNS44IDE0LjYgMTUuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBzID0gXCJNMTYsMjBIMjBWMTZIMTZNMTYsMTRIMjBWMTBIMTZNMTAsOEgxNFY0SDEwTTE2LDhIMjBWNEgxNk0xMCwxNEgxNFYxMEgxME00LDE0SDhWMTBINE00LDIwSDhWMTZINE0xMCwyMEgxNFYxNkgxME00LDhIOFY0SDRWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcHBzQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM003LDdWOUg5VjdIN00xMSw3VjlIMTNWN0gxMU0xNSw3VjlIMTdWN0gxNU03LDExVjEzSDlWMTFIN00xMSwxMVYxM0gxM1YxMUgxMU0xNSwxMVYxM0gxN1YxMUgxNU03LDE1VjE3SDlWMTVIN00xMSwxNVYxN0gxM1YxNUgxMU0xNSwxNVYxN0gxN1YxNUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcmNoID0gXCJNMTIsMkMxMS4xMSw0LjE4IDEwLjU3LDUuNjEgOS41OCw3LjczQzEwLjE5LDguMzcgMTAuOTMsOS4xMiAxMi4xNCw5Ljk3QzEwLjg0LDkuNDMgOS45NSw4LjkgOS4yOSw4LjM0QzgsMTEgNi4wMywxNC43NSAyLDIyQzUuMTcsMjAuMTcgNy42MywxOS4wNCA5LjkyLDE4LjYxQzkuODIsMTguMTkgOS43NiwxNy43MyA5Ljc3LDE3LjI1VjE3LjE1QzkuODIsMTUuMTIgMTAuODgsMTMuNTYgMTIuMTMsMTMuNjdDMTMuMzgsMTMuNzcgMTQuMzUsMTUuNSAxNC4zLDE3LjU0QzE0LjI5LDE3LjkyIDE0LjI1LDE4LjI5IDE0LjE4LDE4LjYzQzE2LjQ0LDE5LjA3IDE4Ljg3LDIwLjE5IDIyLDIyQzIxLjM4LDIwLjg2IDIwLjgzLDE5Ljg0IDIwLjMxLDE4Ljg3QzE5LjUsMTguMjMgMTguNjEsMTcuMzkgMTYuODUsMTYuNUMxOC4wNiwxNi44IDE4LjkzLDE3LjE2IDE5LjYxLDE3LjU3QzE0LjI2LDcuNjIgMTMuODMsNi4zIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZSA9IFwiTTMsM0gyMVY3SDNWM000LDhIMjBWMjFINFY4TTkuNSwxMUEwLjUsMC41IDAgMCwwIDksMTEuNVYxM0gxNVYxMS41QTAuNSwwLjUgMCAwLDAgMTQuNSwxMUg5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZUFsZXJ0ID0gXCJNMiA0SDE4VjdIMlY0TTMgOEgxN1YyMEgzVjhNNy41IDExQzcuMjIgMTEgNyAxMS4yMiA3IDExLjVWMTNIMTNWMTEuNUMxMyAxMS4yMiAxMi43OCAxMSAxMi41IDExSDcuNU0yMCAxM1Y3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFyY2hpdmVBbGVydE91dGxpbmUgPSBcIk0yIDRIMThWN0gyVjRNNy41IDExSDEyLjVDMTIuNzggMTEgMTMgMTEuMjIgMTMgMTEuNVYxM0g3VjExLjVDNyAxMS4yMiA3LjIyIDExIDcuNSAxMU0yMCAxM1Y3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwTTMgOEg1VjE4SDE1VjhIMTdWMjBIM1Y4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFyY2hpdmVBcnJvd0Rvd24gPSBcIk0zIDNIMjFWN0gzVjNNNCAyMVY4SDIwVjIxSDRNMTQgMTRWMTFIMTBWMTRIN0wxMiAxOUwxNyAxNEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcmNoaXZlQXJyb3dEb3duT3V0bGluZSA9IFwiTTIwIDIxSDRWMTBINlYxOUgxOFYxMEgyMFYyMU0zIDNIMjFWOUgzVjNNNSA1VjdIMTlWNU0xMC41IDExVjE0SDhMMTIgMThMMTYgMTRIMTMuNVYxMVwiO1xyXG5leHBvcnQgdmFyIG1kaUFyY2hpdmVBcnJvd1VwID0gXCJNNCAyMUgyMFY4SDRNMTQgMTVWMThIMTBWMTVIN0wxMiAxMEwxNyAxNU0zIDNIMjFWN0gzXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZUFycm93VXBPdXRsaW5lID0gXCJNMjAgMjFINFYxMEg2VjE5SDE4VjEwSDIwVjIxTTMgM0gyMVY5SDNWM001IDVWN0gxOVY1TTEwLjUgMTdWMTRIOEwxMiAxMEwxNiAxNEgxMy41VjE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJjaGl2ZU91dGxpbmUgPSBcIk0yMCAyMUg0VjEwSDZWMTlIMThWMTBIMjBWMjFNMyAzSDIxVjlIM1YzTTkuNSAxMUgxNC41QzE0Ljc4IDExIDE1IDExLjIyIDE1IDExLjVWMTNIOVYxMS41QzkgMTEuMjIgOS4yMiAxMSA5LjUgMTFNNSA1VjdIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFybUZsZXggPSBcIk0zIDE4LjM0QzMgMTguMzQgNCA3LjA5IDcgM0wxMiA0TDExIDcuMDlIOVYxNC4yNUgxMEMxMiAxMS4xOCAxNi4xNCAxMC4wNiAxOC42NCAxMS4xOEMyMS45NCAxMi43MSAyMS42NCAxNy4zMiAxOC42NCAxOS4zNkMxNi4yNCAyMSA5IDIyLjQzIDMgMTguMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJtRmxleE91dGxpbmUgPSBcIk03IDcuNzZWMTYuMjVIMTEuMDhMMTEuNjggMTUuMzRDMTIuODQgMTMuNTUgMTQuOTMgMTIuNzUgMTYuNDcgMTIuNzVDMTcgMTIuNzUgMTcuNDUgMTIuODQgMTcuNzkgMTNDMTguNyAxMy40MSAxOC45NSAxNC4xOCAxOSAxNC43NEMxOS4wOCAxNS44NyAxOC41IDE3LjAzIDE3LjUgMTcuNzFDMTYuNiAxOC4zMyAxNC40NCAxOSAxMS44NyAxOUMxMC4xMiAxOSA3LjYxIDE4LjY5IDUuMTIgMTcuM0M1LjQxIDE0Ljg1IDYgMTAuODggNyA3Ljc2TTcgM0M0IDcuMDkgMyAxOC4zNCAzIDE4LjM0QzUuOSAyMC4zMSA5LjA4IDIxIDExLjg3IDIxQzE0Ljg2IDIxIDE3LjM5IDIwLjIxIDE4LjY0IDE5LjM2QzIxLjY0IDE3LjMyIDIxLjk0IDEyLjcxIDE4LjY0IDExLjE4QzE4IDEwLjg5IDE3LjI2IDEwLjc1IDE2LjQ3IDEwLjc1QzE0LjE3IDEwLjc1IDExLjUgMTEuOTYgMTAgMTQuMjVIOVY3LjA5SDExTDEyIDRMNyAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycmFuZ2VCcmluZ0ZvcndhcmQgPSBcIk0yLDJIMTZWMTZIMlYyTTIyLDhWMjJIOFYxOEgxMFYyMEgyMFYxMEgxOFY4SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycmFuZ2VCcmluZ1RvRnJvbnQgPSBcIk0yLDJIMTFWNkg5VjRINFY5SDZWMTFIMlYyTTIyLDEzVjIySDEzVjE4SDE1VjIwSDIwVjE1SDE4VjEzSDIyTTgsOEgxNlYxNkg4VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyYW5nZVNlbmRCYWNrd2FyZCA9IFwiTTIsMkgxNlYxNkgyVjJNMjIsOFYyMkg4VjE4SDE4VjhIMjJNNCw0VjE0SDE0VjRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJhbmdlU2VuZFRvQmFjayA9IFwiTTIsMkgxMVYxMUgyVjJNOSw0SDRWOUg5VjRNMjIsMTNWMjJIMTNWMTNIMjJNMTUsMjBIMjBWMTVIMTVWMjBNMTYsOFYxMUgxM1Y4SDE2TTExLDE2SDhWMTNIMTFWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dBbGwgPSBcIk0xMywxMUgxOEwxNi41LDkuNUwxNy45Miw4LjA4TDIxLjg0LDEyTDE3LjkyLDE1LjkyTDE2LjUsMTQuNUwxOCwxM0gxM1YxOEwxNC41LDE2LjVMMTUuOTIsMTcuOTJMMTIsMjEuODRMOC4wOCwxNy45Mkw5LjUsMTYuNUwxMSwxOFYxM0g2TDcuNSwxNC41TDYuMDgsMTUuOTJMMi4xNiwxMkw2LjA4LDguMDhMNy41LDkuNUw2LDExSDExVjZMOS41LDcuNUw4LjA4LDYuMDhMMTIsMi4xNkwxNS45Miw2LjA4TDE0LjUsNy41TDEzLDZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dCb3R0b21MZWZ0ID0gXCJNMTksNi40MUwxNy41OSw1TDcsMTUuNTlWOUg1VjE5SDE1VjE3SDguNDFMMTksNi40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0JvdHRvbUxlZnRCb2xkT3V0bGluZSA9IFwiTTE4LjM2LDE5Ljc4SDQuMjJWNS42NEw4LjQ3LDkuODhMMTQuMTIsNC4yMkwxOS43OCw5Ljg4TDE0LjEyLDE1LjU0TDE4LjM2LDE5Ljc4TTYuMzQsMTcuNjZIMTMuNDFMMTEuMjksMTUuNTRMMTYuOTUsOS44OEwxNC4xMiw3LjA1TDguNDYsMTIuNzFMNi4zNCwxMC41OVYxNy42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0JvdHRvbUxlZnRUaGljayA9IFwiTTE1LjUsNS42OUwxOC4zMSw4LjVMMTEuOTQsMTQuODlIMTYuODlWMTguMzFINS42OVY3LjExSDkuMTJWMTIuMDZMMTUuNSw1LjY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Qm90dG9tTGVmdFRoaW5DaXJjbGVPdXRsaW5lID0gXCJNMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJDMjAuMDMgNy41OSAxNi40MSAzLjk3IDEyIDMuOTdDNy41OSAzLjk3IDMuOTcgNy41OSAzLjk3IDEyQzMuOTcgMTYuNDEgNy41OSAyMC4wMyAxMiAyMC4wM00xMiAyMkM2LjQ2IDIyIDIgMTcuNTQgMiAxMkMyIDYuNDYgNi40NiAyIDEyIDJDMTcuNTQgMiAyMiA2LjQ2IDIyIDEyQzIyIDE3LjU0IDE3LjU0IDIyIDEyIDIyTTEwLjEyIDEyLjQ3TDggMTAuMzZWMTZIMTMuNjRMMTEuNTMgMTMuODhMMTYuNSA4LjlMMTUuMSA3LjVcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0JvdHRvbVJpZ2h0ID0gXCJNNSw2LjQxTDYuNDEsNUwxNywxNS41OVY5SDE5VjE5SDlWMTdIMTUuNTlMNSw2LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Qm90dG9tUmlnaHRCb2xkT3V0bGluZSA9IFwiTTkuODgsMTUuNTRMNC4yMiw5Ljg4TDkuODgsNC4yMkwxNS41NCw5Ljg4TDE5Ljc4LDUuNjRWMTkuNzhINS42NEw5Ljg4LDE1LjU0TTE3LjY2LDEwLjU5TDE1LjU0LDEyLjcxTDkuODgsNy4wNUw3LjA1LDkuODhMMTIuNzEsMTUuNTRMMTAuNTksMTcuNjZIMTcuNjZWMTAuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dCb3R0b21SaWdodFRoaWNrID0gXCJNMTQuODksMTIuMDZWNy4xMUgxOC4zMVYxOC4zMUg3LjExVjE0Ljg5SDEyLjA2TDUuNjksOC41TDguNSw1LjY5TDE0Ljg5LDEyLjA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Qm90dG9tUmlnaHRUaGluQ2lyY2xlT3V0bGluZSA9IFwiTTEyIDIwLjAzQzcuNTkgMjAuMDMgMy45NyAxNi40MSAzLjk3IDEyQzMuOTcgNy41OSA3LjU5IDMuOTcgMTIgMy45N0MxNi40MSAzLjk3IDIwLjAzIDcuNTkgMjAuMDMgMTJDMjAuMDMgMTYuNDEgMTYuNDEgMjAuMDMgMTIgMjAuMDNNMTIgMjJDMTcuNTQgMjIgMjIgMTcuNTQgMjIgMTJDMjIgNi40NiAxNy41NCAyIDEyIDJDNi40NiAyIDIgNi40NiAyIDEyQzIgMTcuNTQgNi40NiAyMiAxMiAyMk0xMy44OCAxMi40N0wxNiAxMC4zNlYxNkgxMC4zNkwxMi40NyAxMy44OEw3LjUgOC45TDguOSA3LjVcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlID0gXCJNMTkuNSwzLjA5TDE1LDcuNTlWNEgxM1YxMUgyMFY5SDE2LjQxTDIwLjkxLDQuNUwxOS41LDMuMDlNNCwxM1YxNUg3LjU5TDMuMDksMTkuNUw0LjUsMjAuOTFMOSwxNi40MVYyMEgxMVYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VBbGwgPSBcIk0xOS41LDMuMDlMMjAuOTEsNC41TDE2LjQxLDlIMjBWMTFIMTNWNEgxNVY3LjU5TDE5LjUsMy4wOU0yMC45MSwxOS41TDE5LjUsMjAuOTFMMTUsMTYuNDFWMjBIMTNWMTNIMjBWMTVIMTYuNDFMMjAuOTEsMTkuNU00LjUsMy4wOUw5LDcuNTlWNEgxMVYxMUg0VjlINy41OUwzLjA5LDQuNUw0LjUsMy4wOU0zLjA5LDE5LjVMNy41OSwxNUg0VjEzSDExVjIwSDlWMTYuNDFMNC41LDIwLjkxTDMuMDksMTkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlRG93biA9IFwiTTE5LjkyLDEyLjA4TDEyLDIwTDQuMDgsMTIuMDhMNS41LDEwLjY3TDExLDE2LjE3VjJIMTNWMTYuMTdMMTguNSwxMC42NkwxOS45MiwxMi4wOE0xMiwyMEgyVjIySDIyVjIwSDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VIb3Jpem9udGFsID0gXCJNMTMsMjBWNEgxNS4wM1YyMEgxM00xMCwyMFY0SDEyLjAzVjIwSDEwTTUsOEw5LjAzLDEyTDUsMTZWMTNIMlYxMUg1VjhNMjAsMTZMMTYsMTJMMjAsOFYxMUgyM1YxM0gyMFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlTGVmdCA9IFwiTTExLjkyLDE5LjkyTDQsMTJMMTEuOTIsNC4wOEwxMy4zMyw1LjVMNy44MywxMUgyMlYxM0g3LjgzTDEzLjM0LDE4LjVMMTEuOTIsMTkuOTJNNCwxMlYySDJWMjJINFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0NvbGxhcHNlUmlnaHQgPSBcIk0xMi4wOCw0LjA4TDIwLDEyTDEyLjA4LDE5LjkyTDEwLjY3LDE4LjVMMTYuMTcsMTNIMlYxMUgxNi4xN0wxMC42Nyw1LjVMMTIuMDgsNC4wOE0yMCwxMlYyMkgyMlYySDIwVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VVcCA9IFwiTTQuMDgsMTEuOTJMMTIsNEwxOS45MiwxMS45MkwxOC41LDEzLjMzTDEzLDcuODNWMjJIMTFWNy44M0w1LjUsMTMuMzNMNC4wOCwxMS45Mk0xMiw0SDIyVjJIMlY0SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93Q29sbGFwc2VWZXJ0aWNhbCA9IFwiTTQsMTJIMjBWMTRINFYxMk00LDlIMjBWMTFINFY5TTE2LDRMMTIsOEw4LDRIMTFWMUgxM1Y0SDE2TTgsMTlMMTIsMTVMMTYsMTlIMTNWMjJIMTFWMTlIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0RlY2lzaW9uID0gXCJNMTEsNUg4TDEyLDFMMTYsNUgxM1Y5LjQzQzEyLjI1LDkuODkgMTEuNTgsMTAuNDYgMTEsMTEuMTJWNU0yMiwxMUwxOCw3VjEwQzE0LjM5LDkuODUgMTEuMzEsMTIuNTcgMTEsMTYuMTdDOS40NCwxNi43MiA4LjYyLDE4LjQ0IDkuMTcsMjBDOS43MiwyMS41NiAxMS40NCwyMi4zOCAxMywyMS44M0MxNC41NiwyMS4yNyAxNS4zOCwxOS41NiAxNC44MywxOEMxNC41MywxNy4xNCAxMy44NSwxNi40NyAxMywxNi4xN0MxMy40NywxMi4xNyAxNy40NywxMS45NyAxNy45NSwxMS45N1YxNC45N0wyMiwxMU0xMC42MywxMS41OUM5LjMsMTAuNTcgNy42NywxMCA2LDEwVjdMMiwxMUw2LDE1VjEyQzcuMzQsMTIuMDMgOC42MywxMi41IDkuNjQsMTMuNEM5Ljg5LDEyLjc2IDEwLjIyLDEyLjE1IDEwLjYzLDExLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RGVjaXNpb25BdXRvID0gXCJNMTIsNUg5TDEzLDFMMTcsNUgxNFY5LjQzQzEzLjI1LDkuODkgMTIuNTgsMTAuNDYgMTIsMTEuMTJWNU0xMC40LDE1SDguNUw3LjgsMTNINC42TDMuOSwxNUgyTDUuMiw2SDcuMkwxMC40LDE1TTcuMzUsMTEuNjVMNi4yLDhMNS4wNSwxMS42NUg3LjM1TTIzLDExTDE5LDdWMTBDMTUuMzksOS44NSAxMi4zMSwxMi41NyAxMiwxNi4xN0MxMC40NCwxNi43MiA5LjYyLDE4LjQ0IDEwLjE3LDIwQzEwLjcyLDIxLjU2IDEyLjQ0LDIyLjM4IDE0LDIxLjgzQzE1LjU2LDIxLjI3IDE2LjM4LDE5LjU2IDE1LjgzLDE4QzE1LjUzLDE3LjE0IDE0Ljg1LDE2LjQ3IDE0LDE2LjE3QzE0LjQ3LDEyLjE3IDE4LjQ3LDExLjk3IDE4Ljk1LDExLjk3VjE0Ljk3TDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RGVjaXNpb25BdXRvT3V0bGluZSA9IFwiTTE5LDE1VjEyQzE4LjUsMTIgMTQuNSwxMi4xNiAxNC4wNSwxNi4yQzE1LjYxLDE2Ljc1IDE2LjQzLDE4LjQ3IDE1Ljg4LDIwLjAzQzE1LjMzLDIxLjU5IDEzLjYxLDIyLjQxIDEyLjA1LDIxLjg2QzEwLjUsMjEuMyA5LjY3LDE5LjU5IDEwLjIyLDE4LjAzQzEwLjUsMTcuMTcgMTEuMiwxNi41IDEyLjA1LDE2LjJDMTIuMzQsMTIuNjEgMTUuNCw5Ljg4IDE5LDEwVjdMMjMsMTFMMTksMTVNMTQsMTlBMSwxIDAgMCwwIDEzLDE4QTEsMSAwIDAsMCAxMiwxOUExLDEgMCAwLDAgMTMsMjBBMSwxIDAgMCwwIDE0LDE5TTEyLDExLjEyQzEyLjU4LDEwLjQ2IDEzLjI1LDkuODkgMTQsOS40M1Y1SDE3TDEzLDFMOSw1SDEyVjExLjEyTTcuMiw2SDUuMkwyLDE1SDMuOUw0LjYsMTNINy44TDguNSwxNUgxMC40TDcuMiw2TTUuMDUsMTEuNjVMNi4yLDhMNy4zNSwxMS42NUg1LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RGVjaXNpb25PdXRsaW5lID0gXCJNOS42NCwxMy40QzguNjMsMTIuNSA3LjM0LDEyLjAzIDYsMTJWMTVMMiwxMUw2LDdWMTBDNy42NywxMCA5LjMsMTAuNTcgMTAuNjMsMTEuNTlDMTAuMjIsMTIuMTUgOS44OSwxMi43NiA5LjY0LDEzLjRNMTgsMTVWMTJDMTcuNSwxMiAxMy41LDEyLjE2IDEzLjA1LDE2LjJDMTQuNjEsMTYuNzUgMTUuNDMsMTguNDcgMTQuODgsMjAuMDNDMTQuMzMsMjEuNTkgMTIuNjEsMjIuNDEgMTEuMDUsMjEuODZDOS41LDIxLjMgOC42NywxOS41OSA5LjIyLDE4LjAzQzkuNSwxNy4xNyAxMC4yLDE2LjUgMTEuMDUsMTYuMkMxMS4zNCwxMi42MSAxNC40LDkuODggMTgsMTBWN0wyMiwxMUwxOCwxNU0xMywxOUExLDEgMCAwLDAgMTIsMThBMSwxIDAgMCwwIDExLDE5QTEsMSAwIDAsMCAxMiwyMEExLDEgMCAwLDAgMTMsMTlNMTEsMTEuMTJDMTEuNTgsMTAuNDYgMTIuMjUsOS44OSAxMyw5LjQzVjVIMTZMMTIsMUw4LDVIMTFWMTEuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duID0gXCJNMTEsNEgxM1YxNkwxOC41LDEwLjVMMTkuOTIsMTEuOTJMMTIsMTkuODRMNC4wOCwxMS45Mkw1LjUsMTAuNUwxMSwxNlY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGQgPSBcIk05LDRIMTVWMTJIMTkuODRMMTIsMTkuODRMNC4xNiwxMkg5VjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duQm9sZEJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTIsMTdMMTcsMTJIMTRWOEgxMFYxMkg3TDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGRCb3hPdXRsaW5lID0gXCJNMTIsMTdMNywxMkgxMFY4SDE0VjEySDE3TDEyLDE3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25Cb2xkQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsMTdMMTcsMTJIMTRWOEgxMFYxMkg3TDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGRDaXJjbGVPdXRsaW5lID0gXCJNMTIsMTdMNywxMkgxMFY4SDE0VjEySDE3TDEyLDE3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25Cb2xkSGV4YWdvbk91dGxpbmUgPSBcIk0xMiwxN0w3LDEySDEwVjhIMTRWMTJIMTdMMTIsMTdNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUw1LDguMDlWMTUuOTFMMTIsMTkuODVMMTksMTUuOTFWOC4wOUwxMiw0LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJvbGRPdXRsaW5lID0gXCJNMjIsMTFMMTIsMjFMMiwxMUg4VjNIMTZWMTFIMjJNMTIsMThMMTcsMTNIMTRWNUgxMFYxM0g3TDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkJveCA9IFwiTTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU0xMSw2VjE0LjVMNy41LDExTDYuMDgsMTIuNDJMMTIsMTguMzRMMTcuOTIsMTIuNDJMMTYuNSwxMUwxMywxNC41VjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duQ2lyY2xlID0gXCJNMTEsNlYxNEw3LjUsMTAuNUw2LjA4LDExLjkyTDEyLDE3Ljg0TDE3LjkyLDExLjkyTDE2LjUsMTAuNUwxMywxNFY2SDExTTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25DaXJjbGVPdXRsaW5lID0gXCJNMTEsNkgxM1YxNEwxNi41LDEwLjVMMTcuOTIsMTEuOTJMMTIsMTcuODRMNi4wOCwxMS45Mkw3LjUsMTAuNUwxMSwxNFY2TTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMk0xMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93bkRyb3BDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk03LDEwTDEyLDE1TDE3LDEwSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dEb3duRHJvcENpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRNNywxMEwxMiwxNUwxNywxMEg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RG93blRoaWNrID0gXCJNMTAsNEgxNFYxM0wxNy41LDkuNUwxOS45MiwxMS45MkwxMiwxOS44NEw0LjA4LDExLjkyTDYuNSw5LjVMMTAsMTNWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0Rvd25UaGluQ2lyY2xlT3V0bGluZSA9IFwiTTEyIDIwLjAzQzE2LjQxIDIwLjAzIDIwLjAzIDE2LjQxIDIwLjAzIDEyQzIwLjAzIDcuNTkgMTYuNDEgMy45NyAxMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNNMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyQzE3LjU0IDIgMjIgNi40NiAyMiAxMkMyMiAxNy41NCAxNy41NCAyMiAxMiAyMk0xMSAxMy41NEg4TDEyIDE3LjVMMTYgMTMuNTRIMTNWNi41SDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dFeHBhbmQgPSBcIk0xMCwyMVYxOUg2LjQxTDEwLjkxLDE0LjVMOS41LDEzLjA5TDUsMTcuNTlWMTRIM1YyMUgxME0xNC41LDEwLjkxTDE5LDYuNDFWMTBIMjFWM0gxNFY1SDE3LjU5TDEzLjA5LDkuNUwxNC41LDEwLjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RXhwYW5kQWxsID0gXCJNOS41LDEzLjA5TDEwLjkxLDE0LjVMNi40MSwxOUgxMFYyMUgzVjE0SDVWMTcuNTlMOS41LDEzLjA5TTEwLjkxLDkuNUw5LjUsMTAuOTFMNSw2LjQxVjEwSDNWM0gxMFY1SDYuNDFMMTAuOTEsOS41TTE0LjUsMTMuMDlMMTksMTcuNTlWMTRIMjFWMjFIMTRWMTlIMTcuNTlMMTMuMDksMTQuNUwxNC41LDEzLjA5TTEzLjA5LDkuNUwxNy41OSw1SDE0VjNIMjFWMTBIMTlWNi40MUwxNC41LDEwLjkxTDEzLjA5LDkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZERvd24gPSBcIk0yMiw0VjJIMlY0SDExVjE4LjE3TDUuNSwxMi42N0w0LjA4LDE0LjA4TDEyLDIyTDE5LjkyLDE0LjA4TDE4LjUsMTIuNjdMMTMsMTguMTdWNEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZEhvcml6b250YWwgPSBcIk05LDExSDE1VjhMMTksMTJMMTUsMTZWMTNIOVYxNkw1LDEyTDksOFYxMU0yLDIwVjRINFYyMEgyTTIwLDIwVjRIMjJWMjBIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dFeHBhbmRMZWZ0ID0gXCJNMjAsMjJIMjJWMkgyMFYxMUg1LjgzTDExLjMzLDUuNUw5LjkyLDQuMDhMMiwxMkw5LjkyLDE5LjkyTDExLjMzLDE4LjVMNS44MywxM0gyMFYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZFJpZ2h0ID0gXCJNNCwySDJWMjJINFYxM0gxOC4xN0wxMi42NywxOC41TDE0LjA4LDE5LjkyTDIyLDEyTDE0LjA4LDQuMDhMMTIuNjcsNS41TDE4LjE3LDExSDRWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0V4cGFuZFVwID0gXCJNMiwyMFYyMkgyMlYyMEgxM1Y1LjgzTDE4LjUsMTEuMzNMMTkuOTIsOS45MkwxMiwyTDQuMDgsOS45Mkw1LjUsMTEuMzNMMTEsNS44M1YyMEgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93RXhwYW5kVmVydGljYWwgPSBcIk0xMyw5VjE1SDE2TDEyLDE5TDgsMTVIMTFWOUg4TDEyLDVMMTYsOUgxM000LDJIMjBWNEg0VjJNNCwyMEgyMFYyMkg0VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93SG9yaXpvbnRhbExvY2sgPSBcIk0xNC44IDdWNS41QzE0LjggNC4xIDEzLjQgMyAxMiAzUzkuMiA0LjEgOS4yIDUuNVY3QzguNiA3IDggNy42IDggOC4yVjExLjdDOCAxMi40IDguNiAxMyA5LjIgMTNIMTQuN0MxNS40IDEzIDE2IDEyLjQgMTYgMTEuOFY4LjNDMTYgNy42IDE1LjQgNyAxNC44IDdNMTMuNSA3SDEwLjVWNS41QzEwLjUgNC43IDExLjIgNC4yIDEyIDQuMlMxMy41IDQuNyAxMy41IDUuNVY3TTYgMTdWMjBMMiAxNkw2IDEyVjE1SDE4VjEyTDIyIDE2TDE4IDIwVjE3SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0ID0gXCJNMjAsMTFWMTNIOEwxMy41LDE4LjVMMTIuMDgsMTkuOTJMNC4xNiwxMkwxMi4wOCw0LjA4TDEzLjUsNS41TDgsMTFIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Qm9sZCA9IFwiTTIwLDlWMTVIMTJWMTkuODRMNC4xNiwxMkwxMiw0LjE2VjlIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Qm9sZEJveCA9IFwiTTIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1TTcsMTJMMTIsMTdWMTRIMTZWMTBIMTJWN0w3LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdEJvbGRCb3hPdXRsaW5lID0gXCJNNywxMkwxMiw3VjEwSDE2VjE0SDEyVjE3TDcsMTJNMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVNMTksNUg1VjE5SDE5VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Qm9sZENpcmNsZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk03LDEyTDEyLDE3VjE0SDE2VjEwSDEyVjdMNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRCb2xkQ2lyY2xlT3V0bGluZSA9IFwiTTcsMTJMMTIsN1YxMEgxNlYxNEgxMlYxN0w3LDEyTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdEJvbGRIZXhhZ29uT3V0bGluZSA9IFwiTTcsMTJMMTIsN1YxMEgxNlYxNEgxMlYxN0w3LDEyTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNSw4LjA5VjE1LjkxTDEyLDE5Ljg1TDE5LDE1LjkxVjguMDlMMTIsNC4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRCb2xkT3V0bGluZSA9IFwiTTEzLDIyTDMsMTJMMTMsMlY4SDIxVjE2SDEzVjIyTTYsMTJMMTEsMTdWMTRIMTlWMTBIMTFWN0w2LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdEJveCA9IFwiTTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUMzLDMuODkgMy45LDMgNSwzSDE5TTE4LDExSDkuNUwxMyw3LjVMMTEuNTgsNi4wOEw1LjY2LDEyTDExLjU4LDE3LjkyTDEzLDE2LjVMOS41LDEzSDE4VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdENpcmNsZSA9IFwiTTIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyTTE4LDExSDEwTDEzLjUsNy41TDEyLjA4LDYuMDhMNi4xNiwxMkwxMi4wOCwxNy45MkwxMy41LDE2LjVMMTAsMTNIMThWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0Q2lyY2xlT3V0bGluZSA9IFwiTTE4LDExVjEzSDEwTDEzLjUsMTYuNUwxMi4wOCwxNy45Mkw2LjE2LDEyTDEyLjA4LDYuMDhMMTMuNSw3LjVMMTAsMTFIMThNMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJNNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdERyb3BDaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTQsN0w5LDEyTDE0LDE3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dMZWZ0RHJvcENpcmNsZU91dGxpbmUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMCAxMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJNMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMk0xNCw3TDksMTJMMTQsMTdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRSaWdodCA9IFwiTTYuNDUsMTcuNDVMMSwxMkw2LjQ1LDYuNTVMNy44Niw3Ljk2TDQuODMsMTFIMTkuMTdMMTYuMTQsNy45NkwxNy41NSw2LjU1TDIzLDEyTDE3LjU1LDE3LjQ1TDE2LjE0LDE2LjA0TDE5LjE3LDEzSDQuODNMNy44NiwxNi4wNEw2LjQ1LDE3LjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdFJpZ2h0Qm9sZCA9IFwiTTgsMTRWMThMMiwxMkw4LDZWMTBIMTZWNkwyMiwxMkwxNiwxOFYxNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdFJpZ2h0Qm9sZE91dGxpbmUgPSBcIk0xNCwxNlYyMkwyNCwxMkwxNCwyVjhIMTBWMkwwLDEyTDEwLDIyVjE2SDE0TTgsMTRWMTdMMywxMkw4LDdWMTBIMTZWN0wyMSwxMkwxNiwxN1YxNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93TGVmdFRoaWNrID0gXCJNMjAsMTBWMTRIMTFMMTQuNSwxNy41TDEyLjA4LDE5LjkyTDQuMTYsMTJMMTIuMDgsNC4wOEwxNC41LDYuNUwxMSwxMEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd0xlZnRUaGluQ2lyY2xlT3V0bGluZSA9IFwiTTMuOTcgMTJDMy45NyAxNi40MSA3LjU5IDIwLjAzIDEyIDIwLjAzQzE2LjQxIDIwLjAzIDIwLjAzIDE2LjQxIDIwLjAzIDEyQzIwLjAzIDcuNTkgMTYuNDEgMy45NyAxMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMk0yIDEyQzIgNi40NiA2LjQ2IDIgMTIgMkMxNy41NCAyIDIyIDYuNDYgMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJNMTAuNDYgMTFWOEw2LjUgMTJMMTAuNDYgMTZWMTNIMTcuNVYxMVwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHQgPSBcIk00LDExVjEzSDE2TDEwLjUsMTguNUwxMS45MiwxOS45MkwxOS44NCwxMkwxMS45Miw0LjA4TDEwLjUsNS41TDE2LDExSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dSaWdodEJvbGQgPSBcIk00LDE1VjlIMTJWNC4xNkwxOS44NCwxMkwxMiwxOS44NFYxNUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkQm94ID0gXCJNMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlNMTcsMTJMMTIsN1YxMEg4VjE0SDEyVjE3TDE3LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkQm94T3V0bGluZSA9IFwiTTE3LDEyTDEyLDE3VjE0SDhWMTBIMTJWN0wxNywxMk0zLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOU01LDE5SDE5VjVINVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0Qm9sZENpcmNsZSA9IFwiTTIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyTTE3LDEyTDEyLDdWMTBIOFYxNEgxMlYxN0wxNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0Qm9sZENpcmNsZU91dGxpbmUgPSBcIk0xNywxMkwxMiwxN1YxNEg4VjEwSDEyVjdMMTcsMTJNMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJNNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkSGV4YWdvbk91dGxpbmUgPSBcIk0xNywxMkwxMiwxN1YxNEg4VjEwSDEyVjdMMTcsMTJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUw1LDguMDlWMTUuOTFMMTIsMTkuODVMMTksMTUuOTFWOC4wOUwxMiw0LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb2xkT3V0bGluZSA9IFwiTTExLDE2SDNWOEgxMVYyTDIxLDEyTDExLDIyVjE2TTEzLDdWMTBINVYxNEgxM1YxN0wxOCwxMkwxMyw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRCb3ggPSBcIk01LDIxQTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUMyMSwyMC4xMSAyMC4xLDIxIDE5LDIxSDVNNiwxM0gxNC41TDExLDE2LjVMMTIuNDIsMTcuOTJMMTguMzQsMTJMMTIuNDIsNi4wOEwxMSw3LjVMMTQuNSwxMUg2VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRDaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNNiwxM0gxNEwxMC41LDE2LjVMMTEuOTIsMTcuOTJMMTcuODQsMTJMMTEuOTIsNi4wOEwxMC41LDcuNUwxNCwxMUg2VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRDaXJjbGVPdXRsaW5lID0gXCJNNiwxM1YxMUgxNEwxMC41LDcuNUwxMS45Miw2LjA4TDE3Ljg0LDEyTDExLjkyLDE3LjkyTDEwLjUsMTYuNUwxNCwxM0g2TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHREcm9wQ2lyY2xlID0gXCJNMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJNMTAsMTdMMTUsMTJMMTAsN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0RHJvcENpcmNsZU91dGxpbmUgPSBcIk0yLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJBMTAsMTAgMCAwLDAgMiwxMk00LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBBOCw4IDAgMCwxIDQsMTJNMTAsMTdMMTUsMTJMMTAsN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1JpZ2h0VGhpY2sgPSBcIk00LDEwVjE0SDEzTDkuNSwxNy41TDExLjkyLDE5LjkyTDE5Ljg0LDEyTDExLjkyLDQuMDhMOS41LDYuNUwxMywxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93UmlnaHRUaGluQ2lyY2xlT3V0bGluZSA9IFwiTTIwLjAzIDEyQzIwLjAzIDcuNTkgMTYuNDEgMy45NyAxMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJNMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyQzE3LjU0IDIgMjIgNi40NiAyMiAxMk0xMy41NCAxM1YxNkwxNy41IDEyTDEzLjU0IDhWMTFINi41VjEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dTcGxpdEhvcml6b250YWwgPSBcIk04LDE4SDExVjE1SDJWMTNIMjJWMTVIMTNWMThIMTZMMTIsMjJMOCwxOE0xMiwyTDgsNkgxMVY5SDJWMTFIMjJWOUgxM1Y2SDE2TDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dTcGxpdFZlcnRpY2FsID0gXCJNMTgsMTZWMTNIMTVWMjJIMTNWMkgxNVYxMUgxOFY4TDIyLDEyTDE4LDE2TTIsMTJMNiwxNlYxM0g5VjIySDExVjJIOVYxMUg2VjhMMiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnQgPSBcIk0xOSwxNy41OUwxNy41OSwxOUw3LDguNDFWMTVINVY1SDE1VjdIOC40MUwxOSwxNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnRCb2xkT3V0bGluZSA9IFwiTTE0LjEyLDguNDZMMTkuNzgsMTQuMTJMMTQuMTIsMTkuNzhMOC40NiwxNC4xMkw0LjIyLDE4LjM2VjQuMjJIMTguMzZMMTQuMTIsOC40Nk02LjM0LDEzLjQxTDguNDYsMTEuMjlMMTQuMTIsMTYuOTVMMTYuOTUsMTQuMTJMMTEuMjksOC40N0wxMy40MSw2LjM0SDYuMzRWMTMuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BMZWZ0Qm90dG9tUmlnaHQgPSBcIk0xMywyMUgyMVYxM0gxOVYxNy41OUw2LjQxLDVIMTFWM0gzVjExSDVWNi40MUwxNy41OSwxOUgxM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnRCb3R0b21SaWdodEJvbGQgPSBcIk01LjgzLDguNjZMMywxMS41VjNIMTEuNUw4LjY2LDUuODNMMTguMTcsMTUuMzRMMjEsMTIuNVYyMUgxMi41TDE1LjM0LDE4LjE3TDUuODMsOC42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcExlZnRUaGljayA9IFwiTTkuMTIsMTEuOTRWMTYuODlINS42OVY1LjY5SDE2Ljg5VjkuMTJIMTEuOTRMMTguMzEsMTUuNUwxNS41LDE4LjMxTDkuMTIsMTEuOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BMZWZ0VGhpbkNpcmNsZU91dGxpbmUgPSBcIk0xMiAzLjk3QzE2LjQxIDMuOTcgMjAuMDMgNy41OSAyMC4wMyAxMkMyMC4wMyAxNi40MSAxNi40MSAyMC4wMyAxMiAyMC4wM0M3LjU5IDIwLjAzIDMuOTcgMTYuNDEgMy45NyAxMkMzLjk3IDcuNTkgNy41OSAzLjk3IDEyIDMuOTdNMTIgMkM2LjQ2IDIgMiA2LjQ2IDIgMTJDMiAxNy41NCA2LjQ2IDIyIDEyIDIyQzE3LjU0IDIyIDIyIDE3LjU0IDIyIDEyQzIyIDYuNDYgMTcuNTQgMiAxMiAyTTEwLjEyIDExLjUzTDggMTMuNjRWOEgxMy42NEwxMS41MyAxMC4xMkwxNi41IDE1LjFMMTUuMSAxNi41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BSaWdodCA9IFwiTTUsMTcuNTlMMTUuNTksN0g5VjVIMTlWMTVIMTdWOC40MUw2LjQxLDE5TDUsMTcuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dUb3BSaWdodEJvbGRPdXRsaW5lID0gXCJNNS42NCw0LjIySDE5Ljc4VjE4LjM2TDE1LjU0LDE0LjEyTDkuODgsMTkuNzhMNC4yMiwxNC4xMkw5Ljg4LDguNDZMNS42NCw0LjIyTTE3LjY2LDYuMzRIMTAuNTlMMTIuNzEsOC40Nkw3LjA1LDE0LjEyTDkuODgsMTYuOTVMMTUuNTQsMTEuMjlMMTcuNjYsMTMuNDFWNi4zNEgxNy42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcFJpZ2h0Qm90dG9tTGVmdCA9IFwiTTExLDIxSDNWMTNINVYxNy41OUwxNy41OSw1SDEzVjNIMjFWMTFIMTlWNi40MUw2LjQxLDE5SDExVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VG9wUmlnaHRCb3R0b21MZWZ0Qm9sZCA9IFwiTTE4LjE3LDguNjZMMjEsMTEuNVYzSDEyLjVMMTUuMzQsNS44M0w1LjgzLDE1LjM0TDMsMTIuNVYyMUgxMS41TDguNjYsMTguMTdMMTguMTcsOC42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcFJpZ2h0VGhpY2sgPSBcIk04LjUsMTguMzFMNS42OSwxNS41TDEyLjA2LDkuMTJINy4xMVY1LjY5SDE4LjMxVjE2Ljg5SDE0Ljg5VjExLjk0TDguNSwxOC4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1RvcFJpZ2h0VGhpbkNpcmNsZU91dGxpbmUgPSBcIk0xMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJDMjAuMDMgNy41OSAxNi40MSAzLjk3IDEyIDMuOTdNMTIgMkMxNy41NCAyIDIyIDYuNDYgMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyTTEzLjg4IDExLjUzTDE2IDEzLjY0VjhIMTAuMzZMMTIuNDcgMTAuMTJMNy41IDE1LjFMOC45IDE2LjVcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwID0gXCJNMTMsMjBIMTFWOEw1LjUsMTMuNUw0LjA4LDEyLjA4TDEyLDQuMTZMMTkuOTIsMTIuMDhMMTguNSwxMy41TDEzLDhWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcEJvbGQgPSBcIk0xNSwyMEg5VjEySDQuMTZMMTIsNC4xNkwxOS44NCwxMkgxNVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwQm9sZEJveCA9IFwiTTE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMU0xMiw3TDcsMTJIMTBWMTZIMTRWMTJIMTdMMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwQm9sZEJveE91dGxpbmUgPSBcIk0xMiw3TDE3LDEySDE0VjE2SDEwVjEySDdMMTIsN00xOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFNMTksMTlWNUg1VjE5SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBCb2xkQ2lyY2xlID0gXCJNMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyTTEyLDdMNywxMkgxMFYxNkgxNFYxMkgxN0wxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBCb2xkQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDdMMTcsMTJIMTRWMTZIMTBWMTJIN0wxMiw3TTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMk0xMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBCb2xkSGV4YWdvbk91dGxpbmUgPSBcIk0xMiw3TDE3LDEySDE0VjE2SDEwVjEySDdMMTIsN00yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcEJvbGRPdXRsaW5lID0gXCJNMTYsMTNWMjFIOFYxM0gyTDEyLDNMMjIsMTNIMTZNNywxMUgxMFYxOUgxNFYxMUgxN0wxMiw2TDcsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcEJveCA9IFwiTTIxLDE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUMyMC4xMSwzIDIxLDMuOSAyMSw1VjE5TTEzLDE4VjkuNUwxNi41LDEzTDE3LjkyLDExLjU4TDEyLDUuNjZMNi4wOCwxMS41OEw3LjUsMTNMMTEsOS41VjE4SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBDaXJjbGUgPSBcIk0xMywxOFYxMEwxNi41LDEzLjVMMTcuOTIsMTIuMDhMMTIsNi4xNkw2LjA4LDEyLjA4TDcuNSwxMy41TDExLDEwVjE4SDEzTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBDaXJjbGVPdXRsaW5lID0gXCJNMTMsMThIMTFWMTBMNy41LDEzLjVMNi4wOCwxMi4wOEwxMiw2LjE2TDE3LjkyLDEyLjA4TDE2LjUsMTMuNUwxMywxMFYxOE0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcERvd24gPSBcIk0xNy40NSwxNy41NUwxMiwyM0w2LjU1LDE3LjU1TDcuOTYsMTYuMTRMMTEsMTkuMTdWNC44M0w3Ljk2LDcuODZMNi41NSw2LjQ1TDEyLDFMMTcuNDUsNi40NUwxNi4wNCw3Ljg2TDEzLDQuODNWMTkuMTdMMTYuMDQsMTYuMTRMMTcuNDUsMTcuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcERvd25Cb2xkID0gXCJNMTAsOEg2TDEyLDJMMTgsOEgxNFYxNkgxOEwxMiwyMkw2LDE2SDEwVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcERvd25Cb2xkT3V0bGluZSA9IFwiTTE2LDEwSDIyTDEyLDBMMiwxMEg4VjE0SDJMMTIsMjRMMjIsMTRIMTZWMTBNMTQsMTZIMTdMMTIsMjFMNywxNkgxMFY4SDdMMTIsM0wxNyw4SDE0VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFycm93VXBEcm9wQ2lyY2xlID0gXCJNMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyTTE3LDE0TDEyLDlMNywxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwRHJvcENpcmNsZU91dGxpbmUgPSBcIk0xMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNywxNEwxMiw5TDcsMTRIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXJyb3dVcFRoaWNrID0gXCJNMTQsMjBIMTBWMTFMNi41LDE0LjVMNC4wOCwxMi4wOEwxMiw0LjE2TDE5LjkyLDEyLjA4TDE3LjUsMTQuNUwxNCwxMVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1VwVGhpbkNpcmNsZU91dGxpbmUgPSBcIk0xMiAzLjk3QzcuNTkgMy45NyAzLjk3IDcuNTkgMy45NyAxMkMzLjk3IDE2LjQxIDcuNTkgMjAuMDMgMTIgMjAuMDNDMTYuNDEgMjAuMDMgMjAuMDMgMTYuNDEgMjAuMDMgMTJDMjAuMDMgNy41OSAxNi40MSAzLjk3IDEyIDMuOTdNMTIgMkMxNy41NCAyIDIyIDYuNDYgMjIgMTJDMjIgMTcuNTQgMTcuNTQgMjIgMTIgMjJDNi40NiAyMiAyIDE3LjU0IDIgMTJDMiA2LjQ2IDYuNDYgMiAxMiAyTTEzIDEwLjQ2SDE2TDEyIDYuNUw4IDEwLjQ2SDExVjE3LjVIMTNcIjtcclxuZXhwb3J0IHZhciBtZGlBcnJvd1ZlcnRpY2FsTG9jayA9IFwiTTE4LjggMTFWOS41QzE4LjggOC4xIDE3LjQgNyAxNiA3UzEzLjIgOC4xIDEzLjIgOS41VjExQzEyLjYgMTEgMTIgMTEuNiAxMiAxMi4yVjE1LjdDMTIgMTYuNCAxMi42IDE3IDEzLjIgMTdIMTguN0MxOS40IDE3IDIwIDE2LjQgMjAgMTUuOFYxMi4zQzIwIDExLjYgMTkuNCAxMSAxOC44IDExTTE3LjUgMTFIMTQuNVY5LjVDMTQuNSA4LjcgMTUuMiA4LjIgMTYgOC4yQzE2LjggOC4yIDE3LjUgOC43IDE3LjUgOS41VjExTTkgNkgxMkw4IDJMNCA2SDdWMThINEw4IDIyTDEyIDE4SDlWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBcnRzdGF0aW9uID0gXCJNMS43NywxNi44OEwzLjUsMTkuODZDMy44NCwyMC41NCA0LjU0LDIxIDUuMzMsMjFIMTYuNzlMMTQuNDMsMTYuODhIMS43N00yMi4yMywxNi45QzIyLjIzLDE2LjUgMjIuMTEsMTYuMTEgMjEuOSwxNS43OEwxNS4xNyw0LjFDMTQuODIsMy40NCAxNC4xNSwzIDEzLjM1LDNIOS44TDIwLjE4LDIxTDIxLjgyLDE4LjE0QzIyLjEzLDE3LjYgMjIuMjMsMTcuMzYgMjIuMjMsMTYuOU0xMi43MywxMy45NEw4LjEsNS45MkwzLjQ1LDEzLjk0SDEyLjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUFzcGVjdFJhdGlvID0gXCJNMTksMTJIMTdWMTVIMTRWMTdIMTlWMTJNNyw5SDEwVjdINVYxMkg3VjlNMjEsM0gzQTIsMiAwIDAsMCAxLDVWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVBMiwyIDAgMCwwIDIxLDNNMjEsMTlIM1Y1SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUFzc2lzdGFudCA9IFwiTTE5LDJINUEyLDIgMCAwLDAgMyw0VjE4QTIsMiAwIDAsMCA1LDIwSDlMMTIsMjNMMTUsMjBIMTlBMiwyIDAgMCwwIDIxLDE4VjRBMiwyIDAgMCwwIDE5LDJNMTMuODgsMTIuODhMMTIsMTdMMTAuMTIsMTIuODhMNiwxMUwxMC4xMiw5LjEyTDEyLDVMMTMuODgsOS4xMkwxOCwxMVwiO1xyXG5leHBvcnQgdmFyIG1kaUFzdGVyaXNrID0gXCJNMTAsMkgxNEwxMy4yMSw5LjkxTDE5LjY2LDUuMjdMMjEuNjYsOC43M0wxNC40MiwxMkwyMS42NiwxNS4yN0wxOS42NiwxOC43M0wxMy4yMSwxNC4wOUwxNCwyMkgxMEwxMC43OSwxNC4wOUw0LjM0LDE4LjczTDIuMzQsMTUuMjdMOS41OCwxMkwyLjM0LDguNzNMNC4zNCw1LjI3TDEwLjc5LDkuOTFMMTAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBdCA9IFwiTTEyLDE1QzEyLjgxLDE1IDEzLjUsMTQuNyAxNC4xMSwxNC4xMUMxNC43LDEzLjUgMTUsMTIuODEgMTUsMTJDMTUsMTEuMTkgMTQuNywxMC41IDE0LjExLDkuODlDMTMuNSw5LjMgMTIuODEsOSAxMiw5QzExLjE5LDkgMTAuNSw5LjMgOS44OSw5Ljg5QzkuMywxMC41IDksMTEuMTkgOSwxMkM5LDEyLjgxIDkuMywxMy41IDkuODksMTQuMTFDMTAuNSwxNC43IDExLjE5LDE1IDEyLDE1TTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMlYxMy40NUMyMiwxNC40NSAyMS42NSwxNS4zIDIxLDE2QzIwLjMsMTYuNjcgMTkuNSwxNyAxOC41LDE3QzE3LjMsMTcgMTYuMzEsMTYuNSAxNS41NiwxNS41QzE0LjU2LDE2LjUgMTMuMzgsMTcgMTIsMTdDMTAuNjMsMTcgOS40NSwxNi41IDguNDYsMTUuNTRDNy41LDE0LjU1IDcsMTMuMzggNywxMkM3LDEwLjYzIDcuNSw5LjQ1IDguNDYsOC40NkM5LjQ1LDcuNSAxMC42Myw3IDEyLDdDMTMuMzgsNyAxNC41NSw3LjUgMTUuNTQsOC40NkMxNi41LDkuNDUgMTcsMTAuNjMgMTcsMTJWMTMuNDVDMTcsMTMuODYgMTcuMTYsMTQuMjIgMTcuNDYsMTQuNTNDMTcuNzYsMTQuODQgMTguMTEsMTUgMTguNSwxNUMxOC45MiwxNSAxOS4yNywxNC44NCAxOS41NywxNC41M0MxOS44NywxNC4yMiAyMCwxMy44NiAyMCwxMy40NVYxMkMyMCw5LjgxIDE5LjIzLDcuOTMgMTcuNjUsNi4zNUMxNi4wNyw0Ljc3IDE0LjE5LDQgMTIsNEM5LjgxLDQgNy45Myw0Ljc3IDYuMzUsNi4zNUM0Ljc3LDcuOTMgNCw5LjgxIDQsMTJDNCwxNC4xOSA0Ljc3LDE2LjA3IDYuMzUsMTcuNjVDNy45MywxOS4yMyA5LjgxLDIwIDEyLDIwSDE3VjIySDEyQzkuMjUsMjIgNi45LDIxIDQuOTUsMTkuMDVDMywxNy4xIDIsMTQuNzUgMiwxMkMyLDkuMjUgMyw2LjkgNC45NSw0Ljk1QzYuOSwzIDkuMjUsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUF0bGFzc2lhbiA9IFwiTTcuOTMsMTEuMjRDNy43NCwxMSA3LjM4LDEwLjk0IDcuMTMsMTEuMTNDNy4wNiwxMS4xOSA3LDExLjI2IDYuOTYsMTEuMzRMMi4wNiwyMS4xNUMxLjkxLDIxLjQ0IDIuMDMsMjEuNzkgMi4zMiwyMS45NEMyLjQsMjIgMi41LDIyIDIuNTksMjJIOS40MUM5LjYzLDIyIDkuODQsMjEuODggOS45NCwyMS42OEMxMS40MSwxOC42MyAxMC41LDE0IDcuOTMsMTEuMjRNMTEuNTMsMi4zMUM5LjA1LDYuMTQgOC43NiwxMSAxMC43NywxNS4wOUwxNC4wNiwyMS42OEMxNC4xNywyMS44OCAxNC4zNywyMiAxNC41OSwyMkgyMS40MUEwLjU5LDAuNTkgMCAwLDAgMjIsMjEuNDFDMjIsMjEuMzIgMjIsMjEuMjMgMjEuOTQsMjEuMTVDMjEuOTQsMjEuMTUgMTIuNzYsMi43NyAxMi41LDIuMzFDMTIuMzksMi4wNCAxMi4wNiwxLjkyIDExLjc4LDIuMDZDMTEuNjcsMi4xMSAxMS41OCwyLjIgMTEuNTMsMi4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBdG0gPSBcIk04LDlWMTAuNUgxMC4yNVYxNUgxMS43NVYxMC41SDE0VjlIOE02LDlIM0ExLDEgMCAwLDAgMiwxMFYxNUgzLjVWMTMuNUg1LjVWMTVIN1YxMEExLDEgMCAwLDAgNiw5TTUuNSwxMkgzLjVWMTAuNUg1LjVWMTJNMjEsOUgxNi41QTEsMSAwIDAsMCAxNS41LDEwVjE1SDE3VjEwLjVIMThWMTRIMTkuNVYxMC41SDIwLjVWMTVIMjJWMTBBMSwxIDAgMCwwIDIxLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXRvbSA9IFwiTTEyLDExQTEsMSAwIDAsMSAxMywxMkExLDEgMCAwLDEgMTIsMTNBMSwxIDAgMCwxIDExLDEyQTEsMSAwIDAsMSAxMiwxMU00LjIyLDQuMjJDNS42NSwyLjc5IDguNzUsMy40MyAxMiw1LjU2QzE1LjI1LDMuNDMgMTguMzUsMi43OSAxOS43OCw0LjIyQzIxLjIxLDUuNjUgMjAuNTcsOC43NSAxOC40NCwxMkMyMC41NywxNS4yNSAyMS4yMSwxOC4zNSAxOS43OCwxOS43OEMxOC4zNSwyMS4yMSAxNS4yNSwyMC41NyAxMiwxOC40NEM4Ljc1LDIwLjU3IDUuNjUsMjEuMjEgNC4yMiwxOS43OEMyLjc5LDE4LjM1IDMuNDMsMTUuMjUgNS41NiwxMkMzLjQzLDguNzUgMi43OSw1LjY1IDQuMjIsNC4yMk0xNS41NCw4LjQ2QzE2LjE1LDkuMDggMTYuNzEsOS43MSAxNy4yMywxMC4zNEMxOC42MSw4LjIxIDE5LjExLDYuMzggMTguMzYsNS42NEMxNy42Miw0Ljg5IDE1Ljc5LDUuMzkgMTMuNjYsNi43N0MxNC4yOSw3LjI5IDE0LjkyLDcuODUgMTUuNTQsOC40Nk04LjQ2LDE1LjU0QzcuODUsMTQuOTIgNy4yOSwxNC4yOSA2Ljc3LDEzLjY2QzUuMzksMTUuNzkgNC44OSwxNy42MiA1LjY0LDE4LjM2QzYuMzgsMTkuMTEgOC4yMSwxOC42MSAxMC4zNCwxNy4yM0M5LjcxLDE2LjcxIDkuMDgsMTYuMTUgOC40NiwxNS41NE01LjY0LDUuNjRDNC44OSw2LjM4IDUuMzksOC4yMSA2Ljc3LDEwLjM0QzcuMjksOS43MSA3Ljg1LDkuMDggOC40Niw4LjQ2QzkuMDgsNy44NSA5LjcxLDcuMjkgMTAuMzQsNi43N0M4LjIxLDUuMzkgNi4zOCw0Ljg5IDUuNjQsNS42NE05Ljg4LDE0LjEyQzEwLjU4LDE0LjgyIDExLjMsMTUuNDYgMTIsMTYuMDNDMTIuNywxNS40NiAxMy40MiwxNC44MiAxNC4xMiwxNC4xMkMxNC44MiwxMy40MiAxNS40NiwxMi43IDE2LjAzLDEyQzE1LjQ2LDExLjMgMTQuODIsMTAuNTggMTQuMTIsOS44OEMxMy40Miw5LjE4IDEyLjcsOC41NCAxMiw3Ljk3QzExLjMsOC41NCAxMC41OCw5LjE4IDkuODgsOS44OEM5LjE4LDEwLjU4IDguNTQsMTEuMyA3Ljk3LDEyQzguNTQsMTIuNyA5LjE4LDEzLjQyIDkuODgsMTQuMTJNMTguMzYsMTguMzZDMTkuMTEsMTcuNjIgMTguNjEsMTUuNzkgMTcuMjMsMTMuNjZDMTYuNzEsMTQuMjkgMTYuMTUsMTQuOTIgMTUuNTQsMTUuNTRDMTQuOTIsMTYuMTUgMTQuMjksMTYuNzEgMTMuNjYsMTcuMjNDMTUuNzksMTguNjEgMTcuNjIsMTkuMTEgMTguMzYsMTguMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXRvbVZhcmlhbnQgPSBcIk0xOC4zNiwyLjY0QzIwLDIuNjQgMjEuMzYsNCAyMS4zNiw1LjY0QzIxLjM2LDcuMjkgMjAsOC42NCAxOC4zNiw4LjY0QzE2LjcxLDguNjQgMTUuMzYsNy4yOSAxNS4zNiw1LjY0QzE1LjM2LDUuMzQgMTUuNDEsNS4wNiAxNS41LDQuOEMxNC40Myw0LjI5IDEzLjI1LDQgMTIsNEE4LDggMCAwLDAgNCwxMkw0LjA0LDEyLjg0TDIuMDUsMTMuMDVMMiwxMkExMCwxMCAwIDAsMSAxMiwyQzEzLjY5LDIgMTUuMjgsMi40MiAxNi42NywzLjE2QzE3LjE2LDIuODMgMTcuNzQsMi42NCAxOC4zNiwyLjY0TTE4LjM2LDQuNjRBMSwxIDAgMCwwIDE3LjM2LDUuNjRBMSwxIDAgMCwwIDE4LjM2LDYuNjRDMTguOTIsNi42NCAxOS4zNiw2LjE5IDE5LjM2LDUuNjRDMTkuMzYsNS4wOCAxOC45Miw0LjY0IDE4LjM2LDQuNjRNNS42NCwxNS4zNkM3LjI5LDE1LjM2IDguNjQsMTYuNzEgOC42NCwxOC4zNkM4LjY0LDE4LjY2IDguNTksMTguOTQgOC41LDE5LjJDOS41NywxOS43MSAxMC43NSwyMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJMMTkuOTYsMTEuMTZMMjEuOTUsMTAuOTVMMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJDMTAuMzEsMjIgOC43MiwyMS41OCA3LjMzLDIwLjg0QzYuODQsMjEuMTcgNi4yNiwyMS4zNiA1LjY0LDIxLjM2QzQsMjEuMzYgMi42NCwyMCAyLjY0LDE4LjM2QzIuNjQsMTYuNzEgNCwxNS4zNiA1LjY0LDE1LjM2TTUuNjQsMTcuMzZDNS4wOCwxNy4zNiA0LjY0LDE3LjgxIDQuNjQsMTguMzZDNC42NCwxOC45MiA1LjA4LDE5LjM2IDUuNjQsMTkuMzZBMSwxIDAgMCwwIDYuNjQsMTguMzZBMSwxIDAgMCwwIDUuNjQsMTcuMzZNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF0dGFjaG1lbnQgPSBcIk03LjUsMThBNS41LDUuNSAwIDAsMSAyLDEyLjVBNS41LDUuNSAwIDAsMSA3LjUsN0gxOEE0LDQgMCAwLDEgMjIsMTFBNCw0IDAgMCwxIDE4LDE1SDkuNUEyLjUsMi41IDAgMCwxIDcsMTIuNUEyLjUsMi41IDAgMCwxIDkuNSwxMEgxN1YxMS41SDkuNUExLDEgMCAwLDAgOC41LDEyLjVBMSwxIDAgMCwwIDkuNSwxMy41SDE4QTIuNSwyLjUgMCAwLDAgMjAuNSwxMUEyLjUsMi41IDAgMCwwIDE4LDguNUg3LjVBNCw0IDAgMCwwIDMuNSwxMi41QTQsNCAwIDAsMCA3LjUsMTYuNUgxN1YxOEg3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXVkaW9WaWRlbyA9IFwiTTIwLDdINEEyLDIgMCAwLDAgMiw5VjE1QTIsMiAwIDAsMCA0LDE3SDVWMThDNSwxOC42IDUuNCwxOSA2LDE5SDhDOC42LDE5IDksMTguNiA5LDE4VjE3SDE1VjE4QzE1LDE4LjYgMTUuNCwxOSAxNiwxOUgxOEMxOC42LDE5IDE5LDE4LjYgMTksMThWMTdIMjBBMiwyIDAgMCwwIDIyLDE1VjlBMiwyIDAgMCwwIDIwLDdNMTQsMTJINFYxMEgxNFYxMk0xOCwxM0EyLDIgMCAwLDEgMTYsMTFBMiwyIDAgMCwxIDE4LDlBMiwyIDAgMCwxIDIwLDExQTIsMiAwIDAsMSAxOCwxM002LDE1SDRWMTRINlYxNU0xMCwxNUg4VjE0SDEwVjE1TTE0LDE1SDEyVjE0SDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF1ZGlvVmlkZW9PZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w1LjEgN0g0QzIuOSA3IDIgNy45IDIgOVYxNUMyIDE2LjEgMi45IDE3IDQgMTdINVYxOEM1IDE4LjYgNS40IDE5IDYgMTlIOEM4LjYgMTkgOSAxOC42IDkgMThWMTdIMTVWMThDMTUgMTguNiAxNS40IDE5IDE2IDE5SDE3LjFMMjAuOCAyMi43TDIyLjEgMjEuNU02IDE1SDRWMTRINlYxNU00IDEyVjEwSDguMUwxMC4xIDEySDRNMTAgMTVIOFYxNEgxMFYxNU0xMiAxNVYxNEgxMi4xTDEzLjEgMTVIMTJNMTQgMTBWMTAuOEwyMC4yIDE3QzIxLjIgMTYuOSAyMiAxNi4xIDIyIDE1VjlDMjIgNy45IDIxLjEgNyAyMCA3SDEwLjJMMTMuMiAxMEgxNE0xOCA5QzE5LjEgOSAyMCA5LjkgMjAgMTFTMTkuMSAxMyAxOCAxMyAxNiAxMi4xIDE2IDExIDE2LjkgOSAxOCA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF1Z21lbnRlZFJlYWxpdHkgPSBcIk01LDNDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM0g1TTcsOUgxMEMxMC42LDkgMTEsOS41IDExLDEwVjE1SDkuNVYxMy41SDcuNVYxNUg2VjEwQzYsOS41IDYuNCw5IDcsOU0xMyw5SDE2LjVDMTcuMzUsOSAxOCw5LjY1IDE4LDEwLjVWMTEuNUMxOCwxMi4xIDE3LjYsMTIuNjUgMTcuMSwxMi45TDE4LDE1SDE2LjVMMTUuNjUsMTNIMTQuNVYxNUgxM1Y5TTcuNSwxMC41VjEySDkuNVYxMC41SDcuNU0xNC41LDEwLjVWMTEuNUgxNi41VjEwLjVIMTQuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUF1dG9Eb3dubG9hZCA9IFwiTTIyIDE3VjE5SDExVjE3SDIyTTE5IDQuNVY5LjVIMjJMMTYuNSAxNUwxMSA5LjVIMTRWNC41SDE5TTEwLjcgMTVIOC44TDguMSAxM0g0LjlMNC4yIDE1SDIuM0w1LjUgNkg3LjVMMTAuNyAxNU03LjY1IDExLjY1TDYuNSA4TDUuMzUgMTEuNjVINy42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlBdXRvRml4ID0gXCJNNy41LDUuNkw1LDdMNi40LDQuNUw1LDJMNy41LDMuNEwxMCwyTDguNiw0LjVMMTAsN0w3LjUsNS42TTE5LjUsMTUuNEwyMiwxNEwyMC42LDE2LjVMMjIsMTlMMTkuNSwxNy42TDE3LDE5TDE4LjQsMTYuNUwxNywxNEwxOS41LDE1LjRNMjIsMkwyMC42LDQuNUwyMiw3TDE5LjUsNS42TDE3LDdMMTguNCw0LjVMMTcsMkwxOS41LDMuNEwyMiwyTTEzLjM0LDEyLjc4TDE1Ljc4LDEwLjM0TDEzLjY2LDguMjJMMTEuMjIsMTAuNjZMMTMuMzQsMTIuNzhNMTQuMzcsNy4yOUwxNi43MSw5LjYzQzE3LjEsMTAgMTcuMSwxMC42NSAxNi43MSwxMS4wNEw1LjA0LDIyLjcxQzQuNjUsMjMuMSA0LDIzLjEgMy42MywyMi43MUwxLjI5LDIwLjM3QzAuOSwyMCAwLjksMTkuMzUgMS4yOSwxOC45NkwxMi45Niw3LjI5QzEzLjM1LDYuOSAxNCw2LjkgMTQuMzcsNy4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlBdXRvVXBsb2FkID0gXCJNNS4zNSwxMi42NUw2LjUsOUw3LjY1LDEyLjY1TTUuNSw3TDIuMywxNkg0LjJMNC45LDE0SDguMUw4LjgsMTZIMTAuN0w3LjUsN00xMSwyMEgyMlYxOEgxMU0xNCwxNkgxOVYxMUgyMkwxNi41LDUuNUwxMSwxMUgxNFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlBdXRvcmVuZXcgPSBcIk0xMiw2VjlMMTYsNUwxMiwxVjRBOCw4IDAgMCwwIDQsMTJDNCwxMy41NyA0LjQ2LDE1LjAzIDUuMjQsMTYuMjZMNi43LDE0LjhDNi4yNSwxMy45NyA2LDEzIDYsMTJBNiw2IDAgMCwxIDEyLDZNMTguNzYsNy43NEwxNy4zLDkuMkMxNy43NCwxMC4wNCAxOCwxMSAxOCwxMkE2LDYgMCAwLDEgMTIsMThWMTVMOCwxOUwxMiwyM1YyMEE4LDggMCAwLDAgMjAsMTJDMjAsMTAuNDMgMTkuNTQsOC45NyAxOC43Niw3Ljc0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF2VGltZXIgPSBcIk0xMSwxN0ExLDEgMCAwLDAgMTIsMThBMSwxIDAgMCwwIDEzLDE3QTEsMSAwIDAsMCAxMiwxNkExLDEgMCAwLDAgMTEsMTdNMTEsM1Y3SDEzVjUuMDhDMTYuMzksNS41NyAxOSw4LjQ3IDE5LDEyQTcsNyAwIDAsMSAxMiwxOUE3LDcgMCAwLDEgNSwxMkM1LDEwLjMyIDUuNTksOC43OCA2LjU4LDcuNThMMTIsMTNMMTMuNDEsMTEuNTlMNi42MSw0Ljc5VjQuODFDNC40Miw2LjQ1IDMsOS4wNSAzLDEyQTksOSAwIDAsMCAxMiwyMUE5LDkgMCAwLDAgMjEsMTJBOSw5IDAgMCwwIDEyLDNNMTgsMTJBMSwxIDAgMCwwIDE3LDExQTEsMSAwIDAsMCAxNiwxMkExLDEgMCAwLDAgMTcsMTNBMSwxIDAgMCwwIDE4LDEyTTYsMTJBMSwxIDAgMCwwIDcsMTNBMSwxIDAgMCwwIDgsMTJBMSwxIDAgMCwwIDcsMTFBMSwxIDAgMCwwIDYsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXdzID0gXCJNNy42NCwxMC4zOEM3LjY0LDEwLjYzIDcuNjYsMTAuODMgNy43MSwxMUM3Ljc2LDExLjEyIDcuODMsMTEuMjggNy45MiwxMS40NkM3Ljk2LDExLjUgNy45NywxMS41NiA3Ljk3LDExLjYxQzcuOTcsMTEuNjggNy45MywxMS43NCA3Ljg0LDExLjgxTDcuNDIsMTIuMDlDNy4zNiwxMi4xMyA3LjMsMTIuMTUgNy4yNSwxMi4xNUM3LjE4LDEyLjE1IDcuMTIsMTIuMTEgNy4wNSwxMi4wNUM2Ljk2LDExLjk1IDYuODgsMTEuODUgNi44MSwxMS43NEM2Ljc1LDExLjYzIDYuNjgsMTEuNSA2LjYxLDExLjM1QzYuMDksMTEuOTYgNS40NCwxMi4yNyA0LjY1LDEyLjI3QzQuMDksMTIuMjcgMy42NSwxMi4xMSAzLjMyLDExLjc5QzMsMTEuNDcgMi44MywxMS4wNCAyLjgzLDEwLjVDMi44Myw5Ljk1IDMuMDMsOS41IDMuNDMsOS4xNEMzLjg0LDguOCA0LjM4LDguNjIgNS4wNiw4LjYyQzUuMjksOC42MiA1LjUsOC42NCA1Ljc3LDguNjhDNiw4LjcxIDYuMjcsOC43NiA2LjUzLDguODJWOC4zNEM2LjUzLDcuODMgNi40Myw3LjUgNi4yMiw3LjI3QzYsNy4wNiA1LjY1LDYuOTcgNS4xNCw2Ljk3QzQuOSw2Ljk3IDQuNjYsNyA0LjQyLDcuMDVDNC4xNyw3LjExIDMuOTMsNy4xOCAzLjcsNy4yOEMzLjU5LDcuMzIgMy41LDcuMzUgMy40Nyw3LjM2QzMuNDIsNy4zOCAzLjM5LDcuMzggMy4zNiw3LjM4QzMuMjcsNy4zOCAzLjIyLDcuMzIgMy4yMiw3LjE4VjYuODVDMy4yMiw2Ljc1IDMuMjMsNi42NyAzLjI3LDYuNjJDMy4zLDYuNTcgMy4zNiw2LjUzIDMuNDUsNi41QzMuNjksNi4zNiAzLjk2LDYuMjYgNC4yOSw2LjE4QzQuNjIsNi4wOSA0Ljk2LDYuMDUgNS4zMyw2LjA1QzYuMTIsNi4wNSA2LjcsNi4yMyA3LjA3LDYuNTlDNy40NCw2Ljk1IDcuNjIsNy41IDcuNjIsOC4yM1YxMC4zOEg3LjY0TTQuOTQsMTEuNEM1LjE2LDExLjQgNS4zOCwxMS4zNiA1LjYyLDExLjI4QzUuODYsMTEuMiA2LjA3LDExLjA1IDYuMjUsMTAuODVDNi4zNiwxMC43MiA2LjQ0LDEwLjU4IDYuNSwxMC40MkM2LjUsMTAuMjYgNi41NSwxMC4wNyA2LjU1LDkuODRWOS41N0M2LjM1LDkuNSA2LjE1LDkuNSA1LjkzLDkuNDVDNS43Miw5LjQzIDUuNSw5LjQxIDUuMzEsOS40MUM0Ljg2LDkuNDEgNC41NCw5LjUgNC4zMiw5LjY4QzQuMSw5Ljg2IDQsMTAuMTEgNCwxMC40NEM0LDEwLjc2IDQuMDcsMTEgNC4yNCwxMS4xNUM0LjQsMTEuMzIgNC42MywxMS40IDQuOTQsMTEuNE0xMC4yOCwxMi4xMUMxMC4xNiwxMi4xMSAxMC4wOCwxMi4wOSAxMCwxMi4wNUM5Ljk3LDEyIDkuOTIsMTEuOTEgOS44OCwxMS43OUw4LjMyLDYuNjVDOC4yOCw2LjUgOC4yNiw2LjQzIDguMjYsNi4zOEM4LjI2LDYuMjcgOC4zMSw2LjIxIDguNDIsNi4yMUg5LjA3QzkuMiw2LjIxIDkuMjksNi4yMyA5LjMzLDYuMjhDOS4zOSw2LjMyIDkuNDMsNi40MSA5LjQ3LDYuNTRMMTAuNTgsMTAuOTRMMTEuNjIsNi41NEMxMS42NSw2LjQxIDExLjY5LDYuMzIgMTEuNzUsNi4yOEMxMS44LDYuMjQgMTEuODksNi4yMSAxMiw2LjIxSDEyLjU1QzEyLjY3LDYuMjEgMTIuNzYsNi4yMyAxMi44MSw2LjI4QzEyLjg2LDYuMzIgMTIuOTEsNi40MSAxMi45NCw2LjU0TDE0LDExTDE1LjE0LDYuNTRDMTUuMTgsNi40MSAxNS4yMyw2LjMyIDE1LjI3LDYuMjhDMTUuMzMsNi4yNCAxNS40MSw2LjIxIDE1LjUzLDYuMjFIMTYuMTVDMTYuMjYsNi4yMSAxNi4zMiw2LjI3IDE2LjMyLDYuMzhDMTYuMzIsNi40MSAxNi4zMSw2LjQ1IDE2LjMsNi41QzE2LjMsNi41IDE2LjI4LDYuNTggMTYuMjYsNi42NUwxNC42NSwxMS43OUMxNC42MSwxMS45MyAxNC41NywxMiAxNC41LDEyLjA1QzE0LjQ2LDEyLjA5IDE0LjM3LDEyLjEyIDE0LjI2LDEyLjEySDEzLjY5QzEzLjU2LDEyLjEyIDEzLjUsMTIuMSAxMy40MiwxMi4wNUMxMy4zNywxMiAxMy4zMiwxMS45MiAxMy4zLDExLjc5TDEyLjI3LDcuNUwxMS4yNCwxMS43OEMxMS4yMSwxMS45MSAxMS4xNywxMiAxMS4xMiwxMi4wNUMxMS4wNiwxMi4wOSAxMC45NywxMi4xMSAxMC44NSwxMi4xMUgxMC4yOE0xOC44MywxMi4yOUMxOC41LDEyLjI5IDE4LjEzLDEyLjI1IDE3LjgsMTIuMTdDMTcuNDcsMTIuMDkgMTcuMjEsMTIgMTcuMDQsMTEuOTFDMTYuOTMsMTEuODUgMTYuODYsMTEuNzggMTYuODMsMTEuNzJDMTYuOCwxMS42NiAxNi43OSwxMS42IDE2Ljc5LDExLjU0VjExLjJDMTYuNzksMTEuMDYgMTYuODQsMTEgMTYuOTQsMTFDMTcsMTEgMTcsMTEgMTcuMDYsMTFDMTcuMSwxMSAxNy4xNiwxMS4wNSAxNy4yMywxMS4wOEMxNy40NSwxMS4xOCAxNy43LDExLjI2IDE3Ljk2LDExLjMxQzE4LjIzLDExLjM2IDE4LjUsMTEuMzkgMTguNzUsMTEuMzlDMTkuMTcsMTEuMzkgMTkuNSwxMS4zMiAxOS43MiwxMS4xN0MxOS45NSwxMSAyMC4wNywxMC44MSAyMC4wNywxMC41NEMyMC4wNywxMC4zNSAyMCwxMC4yIDE5Ljg5LDEwLjA3QzE5Ljc3LDkuOTUgMTkuNTQsOS44MyAxOS4yMiw5LjczTDE4LjI1LDkuNDNDMTcuNzcsOS4yNyAxNy40MSw5LjA1IDE3LjE5LDguNzVDMTYuOTcsOC40NiAxNi44Niw4LjEzIDE2Ljg2LDcuNzhDMTYuODYsNy41IDE2LjkyLDcuMjYgMTcuMDQsNy4wNUMxNy4xNiw2LjgzIDE3LjMyLDYuNjUgMTcuNSw2LjVDMTcuNzIsNi4zNSAxNy45NCw2LjI0IDE4LjIxLDYuMTZDMTguNDcsNi4wOCAxOC43NSw2LjA0IDE5LjA1LDYuMDRDMTkuMTksNi4wNCAxOS4zNCw2LjA1IDE5LjUsNi4wN0MxOS42NCw2LjA5IDE5Ljc4LDYuMTIgMTkuOTIsNi4xNEMyMC4wNiw2LjE4IDIwLjE4LDYuMjEgMjAuMyw2LjI1QzIwLjQyLDYuMjkgMjAuNSw2LjMzIDIwLjU4LDYuMzdDMjAuNjcsNi40MiAyMC43NCw2LjQ3IDIwLjc4LDYuNTNDMjAuODIsNi41OSAyMC44NCw2LjY2IDIwLjg0LDYuNzVWNy4wN0MyMC44NCw3LjIxIDIwLjc5LDcuMjggMjAuNjksNy4yOEMyMC42NCw3LjI4IDIwLjU1LDcuMjUgMjAuNDMsNy4yQzIwLjA2LDcuMDMgMTkuNjMsNi45NCAxOS4xNiw2Ljk0QzE4Ljc4LDYuOTQgMTguNSw3IDE4LjI3LDcuMTNDMTguMDcsNy4yNSAxNy45Niw3LjQ1IDE3Ljk2LDcuNzJDMTcuOTYsNy45MSAxOC4wMyw4LjA3IDE4LjE2LDguMTlDMTguMjksOC4zMiAxOC41NCw4LjQ0IDE4Ljg5LDguNTZMMTkuODQsOC44NkMyMC4zMiw5IDIwLjY2LDkuMjIgMjAuODcsOS41QzIxLjA3LDkuNzcgMjEuMTcsMTAuMDggMjEuMTcsMTAuNDNDMjEuMTcsMTAuNzEgMjEuMTEsMTAuOTcgMjEsMTEuMkMyMC44OCwxMS40MiAyMC43MiwxMS42MiAyMC41LDExLjc4QzIwLjMxLDExLjk1IDIwLjA2LDEyLjA3IDE5Ljc4LDEyLjE2QzE5LjUsMTIuMjUgMTkuMTYsMTIuMjkgMTguODMsMTIuMjlNMjAuMDgsMTUuNTNDMTcuODksMTcuMTQgMTQuNzEsMTggMTIsMThDOC4xNSwxOCA0LjcsMTYuNTggMi4wOSwxNC4yM0MxLjg4LDE0LjA0IDIuMDcsMTMuNzkgMi4zMiwxMy45NEM1LjE0LDE1LjU3IDguNjEsMTYuNTYgMTIuMjEsMTYuNTZDMTQuNjQsMTYuNTYgMTcuMzEsMTYuMDYgMTkuNzYsMTVDMjAuMTMsMTQuODUgMjAuNDQsMTUuMjYgMjAuMDgsMTUuNTNNMjEsMTQuNUMyMC43MSwxNC4xMyAxOS4xNCwxNC4zMiAxOC40MywxNC40QzE4LjIyLDE0LjQzIDE4LjE5LDE0LjI0IDE4LjM4LDE0LjFDMTkuNjMsMTMuMjMgMjEuNjksMTMuNSAyMS45MiwxMy43N0MyMi4xNiwxNC4wNyAyMS44NiwxNi4xMyAyMC42OSwxNy4xMUMyMC41LDE3LjI2IDIwLjMzLDE3LjE4IDIwLjQxLDE3QzIwLjY4LDE2LjMyIDIxLjI3LDE0Ljg0IDIxLDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhlID0gXCJNMTIsMkwyMiw4QzIyLDEyIDIwLDE0IDE2LDE1TDEzLDEwTDksNkwxMiwyTTQuMTEsMTkuODRMMi4xMiwxOC4zM0w5LjE5LDlMMTEsMTAuODFMNC4xMSwxOS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzID0gXCJNMi42MSwyMUwxLjYxLDE5LjI3TDExLDEzLjg1VjNIMTNWMTMuODVMMjIuMzksMTkuMjdMMjEuMzksMjFMMTIsMTUuNThMMi42MSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzQXJyb3cgPSBcIk0xMiwyTDE2LDZIMTNWMTMuODVMMTkuNTMsMTcuNjFMMjEsMTUuMDNMMjIuNSwyMC41TDE3LDIxLjk2TDE4LjUzLDE5LjM1TDEyLDE1LjU4TDUuNDcsMTkuMzVMNywyMS45NkwxLjUsMjAuNUwzLDE1LjAzTDQuNDcsMTcuNjFMMTEsMTMuODVWNkg4TDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc0Fycm93SW5mbyA9IFwiTTEyIDJMMTYgNkgxM1YxMy44NUwxOS41MyAxNy42MUwyMSAxNS4wM0wyMi41IDIwLjVMMTcgMjEuOTZMMTguNTMgMTkuMzVMMTIgMTUuNThMNS40NyAxOS4zNUw3IDIxLjk2TDEuNSAyMC41TDMgMTUuMDNMNC40NyAxNy42MUwxMSAxMy44NVY2SDhMMTIgMk0yMSA1SDE5VjNIMjFWNU0yMiAxMFYxMkgxOFYxMEgxOVY4SDE4VjZIMjFWMTBIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc0Fycm93TG9jayA9IFwiTTIxLjgsNUMyMi40LDUgMjMsNS42IDIzLDYuM1Y5LjhDMjMsMTAuNCAyMi40LDExIDIxLjcsMTFIMTYuMkMxNS42LDExIDE1LDEwLjQgMTUsOS43VjYuMkMxNSw1LjYgMTUuNiw1IDE2LjIsNVYzLjVDMTYuMiwyLjEgMTcuNiwxIDE5LDFDMjAuNCwxIDIxLjgsMi4xIDIxLjgsMy41VjVNMjAuNSw1VjMuNUMyMC41LDIuNyAxOS44LDIuMiAxOSwyLjJDMTguMiwyLjIgMTcuNSwyLjcgMTcuNSwzLjVWNUgyMC41TTEuNzQsMTkuMjVMMy4yMSwxMy43OUw0LjY4LDE2LjM0TDksMTMuODVWNkg2TDEwLDJMMTQsNkgxMVYxMy44NUwxOC4wMywxNy44NkwxOS41LDE1LjI4TDIxLDIwLjc0TDE1LjUsMjIuMjFMMTcuMDMsMTkuNkwxMCwxNS41OEw1LjY4LDE4LjA3TDcuMjEsMjAuNzFMMS43NCwxOS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzTG9jayA9IFwiTTIxLjgsNUMyMi40LDUgMjMsNS42IDIzLDYuM1Y5LjhDMjMsMTAuNCAyMi40LDExIDIxLjcsMTFIMTYuMkMxNS42LDExIDE1LDEwLjQgMTUsOS43VjYuMkMxNSw1LjYgMTUuNiw1IDE2LjIsNVYzLjVDMTYuMiwyLjEgMTcuNiwxIDE5LDFDMjAuNCwxIDIxLjgsMi4xIDIxLjgsMy41VjVNMjAuNSw1VjMuNUMyMC41LDIuNyAxOS44LDIuMiAxOSwyLjJDMTguMiwyLjIgMTcuNSwyLjcgMTcuNSwzLjVWNUgyMC41TTExLDEzLjgyTDIwLjM5LDE5LjI1TDE5LjM5LDIxTDEwLDE1LjU2TDMuMTcsMTkuNUwyLjE3LDE3Ljc3TDksMTMuODJWM0gxMVYxMy44MlpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWEFycm93ID0gXCJNMS41LDIwLjVMMywxNS4wM0w0LjQ2LDE3LjZMMTEsMTMuODJWM0gxM1YxMy44MkwyMi4zOSwxOS4yNUwyMS4zOSwyMUwxMiwxNS41Nkw1LjQ2LDE5LjMzTDcsMjEuOTZMMS41LDIwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1hBcnJvd0xvY2sgPSBcIk0yMS44LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjNWOS44QzIzLDEwLjQgMjIuNCwxMSAyMS43LDExSDE2LjJDMTUuNiwxMSAxNSwxMC40IDE1LDkuN1Y2LjJDMTUsNS42IDE1LjYsNSAxNi4yLDVWMy41QzE2LjIsMi4xIDE3LjYsMSAxOSwxQzIwLjQsMSAyMS44LDIuMSAyMS44LDMuNVY1TTIwLjUsNVYzLjVDMjAuNSwyLjcgMTkuOCwyLjIgMTksMi4yQzE4LjMxLDIuMiAxNy42OSwyLjU4IDE3LjU0LDMuMkMxNy41LDMuMjkgMTcuNSwzLjM5IDE3LjUsMy41VjVIMjAuNU0xLjc0LDE5LjI1TDMuMjEsMTMuNzlMNC42NywxNi4zMkw5LDEzLjgyVjNIMTFWMTMuODJMMjAuMzksMTkuMjVMMTkuMzksMjFMMTAsMTUuNTZMNS42NywxOC4wNkw3LjIxLDIwLjcxTDEuNzQsMTkuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1hSb3RhdGVDbG9ja3dpc2UgPSBcIk0xMiwxMEgxNC45MUMxNC41Nyw2LjU1IDEzLjQsNCAxMiw0QzEwLjQyLDQgOS4xMiw3LjI3IDksMTEuNDJMNywxMi41N1YxMkM3LDYuNSA5LjI0LDIgMTIsMkMxNC40MiwyIDE2LjQ0LDUuNDQgMTYuOSwxMEgyMEwxNiwxNEwxMiwxME0xMiwyMkMxMC4xMiwyMiA4LjQ3LDE5LjkyIDcuNjIsMTYuODRMOS4zNywxNS44M0M5Ljg3LDE4LjMxIDEwLjg2LDIwIDEyLDIwQzEzLjI3LDIwIDE0LjM2LDE3Ljg5IDE0Ljc5LDE0LjkyTDE2LDE2LjEyTDE2LjcsMTUuNDJDMTYsMTkuMjYgMTQuMTYsMjIgMTIsMjJNMi4xMSwxOC44N0wxLjExLDE3LjEzTDEuMDYsMTcuMDZMMTEuMTIsMTEuMjVMMTIuNzIsMTIuODRMMi4xNSwxOC45NEwyLjExLDE4Ljg3TTIxLjg5LDUuMTNMMjIuODksNi44N0wxOS4yLDlIMTcuNzdMMTcuNSw3LjY2TDIxLjg5LDUuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1hSb3RhdGVDb3VudGVyY2xvY2t3aXNlID0gXCJNMTIsMTRMMTYsMTBMMjAsMTRIMTYuOUMxNi40NCwxOC41NiAxNC40MiwyMiAxMiwyMkMxMC4xMiwyMiA4LjQ3LDE5LjkyIDcuNjIsMTYuODRMOS4zNywxNS44M0M5Ljg3LDE4LjMxIDEwLjg2LDIwIDEyLDIwQzEzLjQsMjAgMTQuNTcsMTcuNDUgMTQuOTEsMTRIMTJNMS4xMSwxNy4xM0wxMy44OSw5Ljc1TDEzLjk2LDEwLjU0TDEwLjUsMTRIMTAuNTRMMi4xMSwxOC44N0wxLjExLDE3LjEzTTIxLjg5LDUuMTNMMjIuODksNi44N0wxNy44OCw5Ljc2QzE3Ljc5LDkuMDMgMTcuNjcsOC4zMyAxNy41LDcuNjZMMjEuODksNS4xM00xMiwyQzE0LjMsMiAxNi4yMyw1LjEgMTYuODIsOS4zMkwxNiw4LjVMMTQuODcsOS42M0MxNC41LDYuMzcgMTMuMzUsNCAxMiw0QzEwLjQyLDQgOS4xMiw3LjI3IDksMTEuNDJMNywxMi41N1YxMkM3LDYuNSA5LjI0LDIgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWFlBcnJvd0xvY2sgPSBcIk0yMS44LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjNWOS44QzIzLDEwLjQgMjIuNCwxMSAyMS43LDExSDE2LjJDMTUuNiwxMSAxNSwxMC40IDE1LDkuN1Y2LjJDMTUsNS42IDE1LjYsNSAxNi4yLDVWMy41QzE2LjIsMi4xIDE3LjYsMSAxOSwxQzIwLjQsMSAyMS44LDIuMSAyMS44LDMuNVY1TTIwLjUsNVYzLjVDMjAuNSwyLjcgMTkuOCwyLjIgMTksMi4yQzE4LjIsMi4yIDE3LjUsMi43IDE3LjUsMy41VjVIMjAuNU0xLjc0LDE5LjI1TDMuMjEsMTMuNzlMNC42OCwxNi4zNEw5LDEzLjg1VjNIMTFWMTMuODVMMTcuNTMsMTcuNjFMMTksMTUuMDNMMjAuNSwyMC41TDE1LDIxLjk2TDE2LjUzLDE5LjM1TDEwLDE1LjU4TDUuNjgsMTguMDdMNy4yMSwyMC43MUwxLjc0LDE5LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNZQXJyb3cgPSBcIk0yMi41LDIwLjVMMTcsMjEuOTZMMTguNTMsMTkuMzVMMTIsMTUuNThMMi42MSwyMUwxLjYxLDE5LjI3TDExLDEzLjg1VjNIMTNWMTMuODVMMTkuNTMsMTcuNjFMMjEsMTUuMDNMMjIuNSwyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNZQXJyb3dMb2NrID0gXCJNMTEsMTMuODJMMTgsMTcuODhMMTkuNSwxNS4yOEwyMSwyMC43NEwxNS41LDIyLjIxTDE3LDE5LjYxTDEwLDE1LjU2TDMuMTcsMTkuNUwyLjE3LDE3Ljc3TDksMTMuODJWM0gxMVYxMy44Mk0yMS44LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjNWOS44QzIzLDEwLjQgMjIuNCwxMSAyMS43LDExSDE2LjJDMTUuNiwxMSAxNSwxMC40IDE1LDkuN1Y2LjJDMTUsNS42IDE1LjYsNSAxNi4yLDVWMy41QzE2LjIsMi4xIDE3LjYsMSAxOSwxQzIwLjQsMSAyMS44LDIuMSAyMS44LDMuNVY1TTIwLjUsNVYzLjVDMjAuNSwyLjcgMTkuOCwyLjIgMTksMi4yQzE4LjIsMi4yIDE3LjUsMi43IDE3LjUsMy41VjVIMjAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWVJvdGF0ZUNsb2Nrd2lzZSA9IFwiTTEyLDEwTDE2LDE0TDIwLDEwSDE2LjlDMTYuNDQsNS40NCAxNC40MiwyIDEyLDJDMTAuMTIsMiA4LjQ3LDQuMDggNy42Miw3LjE2TDkuMzcsOC4xN0M5Ljg3LDUuNjkgMTAuODYsNCAxMiw0QzEzLjQsNCAxNC41Nyw2LjU1IDE0LjkxLDEwSDEyTTEuMTEsNi44N0wxMy44OSwxNC4yNUwxMy45NiwxMy40NkwxMC41LDEwSDEwLjU0TDIuMTEsNS4xM0wxLjExLDYuODdNMjEuODksMTguODdMMjIuODksMTcuMTNMMTcuODgsMTQuMjRDMTcuNzksMTQuOTcgMTcuNjcsMTUuNjcgMTcuNSwxNi4zNEwyMS44OSwxOC44N00xMiwyMkMxNC4zLDIyIDE2LjIzLDE4LjkgMTYuODIsMTQuNjhMMTYsMTUuNUwxNC44NywxNC4zN0MxNC41LDE3LjYzIDEzLjM1LDIwIDEyLDIwQzEwLjQyLDIwIDkuMTIsMTYuNzMgOSwxMi41OEw3LDExLjQzVjEyQzcsMTcuNSA5LjI0LDIyIDEyLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNZUm90YXRlQ291bnRlcmNsb2Nrd2lzZSA9IFwiTTEyLDE0SDE0LjkxQzE0LjU3LDE3LjQ1IDEzLjQsMjAgMTIsMjBDMTAuNDIsMjAgOS4xMiwxNi43MyA5LDEyLjU4TDcsMTEuNDNWMTJDNywxNy41IDkuMjQsMjIgMTIsMjJDMTQuNDIsMjIgMTYuNDQsMTguNTYgMTYuOSwxNEgyMEwxNiwxMEwxMiwxNE0xMiwyQzEwLjEyLDIgOC40Nyw0LjA4IDcuNjIsNy4xNkw5LjM3LDguMTdDOS44Nyw1LjY5IDEwLjg2LDQgMTIsNEMxMy4yNyw0IDE0LjM2LDYuMTEgMTQuNzksOS4wOEwxNiw3Ljg4TDE2LjcsOC41OEMxNiw0Ljc0IDE0LjE2LDIgMTIsMk0yLjExLDUuMTNMMS4xMSw2Ljg3TDEuMDYsNi45NEwxMS4xMiwxMi43NUwxMi43MiwxMS4xNkwyLjE1LDUuMDZMMi4xMSw1LjEzTTIxLjg5LDE4Ljg3TDIyLjg5LDE3LjEzTDE5LjIsMTVIMTcuNzdMMTcuNSwxNi4zNEwyMS44OSwxOC44N1pcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWkFycm93ID0gXCJNMTIsMkwxNiw2SDEzVjEzLjgyTDIyLjM5LDE5LjI1TDIxLjM5LDIxTDEyLDE1LjU2TDIuNjEsMjFMMS42MSwxOS4yNUwxMSwxMy44MlY2SDhMMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlBeGlzWkFycm93TG9jayA9IFwiTTIxLjgsNUMyMi40LDUgMjMsNS42IDIzLDYuM1Y5LjhDMjMsMTAuNCAyMi40LDExIDIxLjcsMTFIMTYuMkMxNS42LDExIDE1LDEwLjQgMTUsOS43VjYuMkMxNSw1LjYgMTUuNiw1IDE2LjIsNVYzLjVDMTYuMiwyLjEgMTcuNiwxIDE5LDFDMjAuNCwxIDIxLjgsMi4xIDIxLjgsMy41VjVNMjAuNSw1VjMuNUMyMC41LDIuNyAxOS44LDIuMiAxOSwyLjJDMTguMiwyLjIgMTcuNSwyLjcgMTcuNSwzLjVWNUgyMC41TTEwLDJMMTQsNkgxMVYxMy44MkwyMC4zOSwxOS4yNUwxOS4zOSwyMUwxMCwxNS41NkwzLjE3LDE5LjVMMi4xNywxNy43N0w5LDEzLjgyVjZINkwxMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUF4aXNaUm90YXRlQ2xvY2t3aXNlID0gXCJNMTQsMTJMMTAsMTZMMTQsMjBWMTYuOUMxOC41NiwxNi40NCAyMiwxNC40MiAyMiwxMkMyMiw5LjU4IDE4LjU2LDcuNTYgMTQsNy4xVjkuMDlDMTcuNDUsOS40MyAyMCwxMC42IDIwLDEyQzIwLDEzLjQgMTcuNDUsMTQuNTcgMTQsMTQuOTFWMTJNNCwxMkM0LDEwLjYgNi41NSw5LjQzIDEwLDkuMDlWNy4xQzUuNDQsNy41NiAyLDkuNTggMiwxMkMyLDE0LjE2IDQuNzQsMTYgOC41OCwxNi43TDcuODgsMTZMOS4wOCwxNC43OUM2LjExLDE0LjM2IDQsMTMuMjcgNCwxMk0xMywySDExVjEzTDEzLDExVjJNMTMsMjJWMjFMMTEsMTlWMjJIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQXhpc1pSb3RhdGVDb3VudGVyY2xvY2t3aXNlID0gXCJNMTAsMTJMMTQsMTZMMTAsMjBWMTYuOUM1LjQ0LDE2LjQ0IDIsMTQuNDIgMiwxMkMyLDkuNTggNS40NCw3LjU2IDEwLDcuMVY5LjA5QzYuNTUsOS40MyA0LDEwLjYgNCwxMkM0LDEzLjQgNi41NSwxNC41NyAxMCwxNC45MVYxMk0yMCwxMkMyMCwxMC42IDE3LjQ1LDkuNDMgMTQsOS4wOVY3LjFDMTguNTYsNy41NiAyMiw5LjU4IDIyLDEyQzIyLDE0LjE2IDE5LjI2LDE2IDE1LjQyLDE2LjdMMTYuMTIsMTZMMTQuOTIsMTQuNzlDMTcuODksMTQuMzYgMjAsMTMuMjcgMjAsMTJNMTEsMkgxM1YxM0wxMSwxMVYyTTExLDIyVjIxTDEzLDE5VjIySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhYmVsID0gXCJNMTUuMTQgMkMxMy44IDIuMTIgMTIuMDQgMi41OSA5Ljg3IDMuNDNDOS4yOCAzLjg3IDguNiA0LjMgNy44NCA0LjcyVjQuODVDNy45IDQuODUgNy45NiA0LjgxIDguMDQgNC43N0M4LjEzIDQuNzYgOC4xOSA0Ljc5IDguMTkgNC44OEw4LjMyIDQuOEw4LjM5IDQuNzlMOC40IDQuODZDOC40MSA0LjkyIDcuOTMgNS4yOSA3IDUuOTZMNy4wNiA2LjA5SDdMNi44NCA2LjA0QzYuODQgNi4wOSA2Ljc4IDYuMTEgNi42NCA2LjEyTDYuNjUgNi4xOUw2LjgxIDYuMzdDNi43NSA2LjM3IDYuNjggNi4zNiA2LjYgNi4zMkM2LjI5IDYuMzUgNiA2LjU4IDUuNjkgN0w1Ljc3IDcuMTJDNi4wMyA2Ljg4IDYuMTggNi43NiA2LjIyIDYuNzZMNi4yNCA2Ljk1QzYuMiA2Ljk1IDYuMTIgNyA2LjA0IDcuMDNMNi4yIDcuMjdDNi41IDYuOTMgNi44NiA2LjY0IDcuMjQgNi40MUM3LjQzIDYuNDYgNy41MyA2LjUgNy41MyA2LjU4TDcuNjcgNi41N0M4LjY5IDUuODEgOS43MSA1LjI3IDEwLjcxIDQuOTNMMTAuNzIgNS4wNkMxMC41MyA1LjM0IDEwLjQgNS41IDEwLjMzIDUuNUMxMC4zNCA1LjU5IDEwLjM4IDUuNjcgMTAuNDMgNS43NEMxMC40NSA1LjkyIDEwIDcuMDYgOS4wNyA5LjE5QzYuOTUgMTQuMTMgNS4xOSAxNy43OCAzLjc3IDIwLjE2QzMuNzcgMjAuMiAzLjggMjAuMjcgMy44NSAyMC4zNUM0LjIgMjAuMjYgNC40MiAyMC4xOCA0LjUgMjAuMUw0LjYgMjAuMDlMNC42MSAyMC4yMkw0Ljc0IDIwLjIxTDQuODggMjAuMTNDNC44OCAyMC4xOCA0LjkzIDIwLjE5IDUgMjAuMThMNS4wMyAyMC4zMUM1LjAzIDIwLjQ1IDQuOTYgMjAuNjUgNC44IDIwLjkyQzQuNjUgMjEuMDggNC41IDIxLjQyIDQuMzQgMjEuOTRWMjJINC40N0M1LjA0IDIxLjM1IDUuNSAyMC43MiA1Ljc4IDIwLjExQzcuNDQgMTkuNjIgOC43MSAxOS4xNSA5LjU5IDE4LjY3QzEwLjQ3IDE4LjYgMTEuMTUgMTguMzcgMTEuNjEgMThMMTEuNiAxNy45MUwxMS4yNyAxOEgxMS4xOUwxMS4xOCAxNy45NUMxMS44MyAxNy44NSAxMi4yOCAxNy43IDEyLjUgMTcuNUMxMy43OSAxNi41NCAxNC43NCAxNS44NSAxNS4zOSAxNS40NEMxNy4zOSAxMy45NyAxOC4zMyAxMi41NSAxOC4yMiAxMS4yMUMxOC4yMSAxMS4wNyAxNy43NiAxMC41IDE2LjkgOS41NkMxNi44OCA5LjM4IDE3LjE5IDkuMTIgMTcuOCA4Ljc3TDE5LjUzIDcuMjRDMTkuOTIgNi43NCAyMC4xNSA1Ljk0IDIwLjIzIDQuODNMMjAuMiA0LjU3QzIwLjE0IDMuNzkgMTkuNTggMy4xNiAxOC41IDIuNjhDMTcuODggMi4yNSAxNi43NiAyLjAzIDE1LjE0IDJNMTcuMjQgMi44N0MxOC41MyAyLjkyIDE5LjE5IDMuMTQgMTkuMjMgMy41NUwxOS4xOCAzLjY4TDE3LjI0IDIuODdNMTYgMy45NkMxNi44OSAzLjk1IDE3LjM1IDQuMTggMTcuNCA0LjY4TDE3LjUgNC42N1Y0LjM0TDE3LjY0IDQuMzNDMTggNC41IDE4LjE2IDQuNzQgMTguMTggNUMxOC4yIDUuMiAxOC4xIDUuNDIgMTcuODkgNS42OUMxNy44IDUuNyAxNy43NSA1LjY0IDE3Ljc0IDUuNUgxNy42TDE3LjU2IDUuOTFDMTcgNi43OCAxNi41NiA3LjIzIDE2LjMgNy4yNkMxNi4wNiA3LjU4IDE1LjkxIDcuNzUgMTUuODUgNy43NUMxNS42NyA3Ljk3IDE1LjE3IDguMzUgMTQuMzUgOC44N0MxNC4wOCA4LjkgMTMuMDcgOS4yOCAxMS4zNCAxMC4wNEMxMS4yNSAxMCAxMS4xNiAxMCAxMS4wNiAxMEwxMS4wNSA5Ljg4QzExLjAzIDkuNjIgMTEuMTQgOS4zMSAxMS4zOSA4LjkyQzExLjUgOC4yMSAxMS42NyA3LjggMTEuODMgNy43TDEzLjI4IDQuNDRDMTMuMjcgNC4yNCAxMy41NyA0LjA5IDE0LjIxIDRMMTQuNDIgMy45NkwxNC40NCA0LjE1QzE1LjA2IDQuMDUgMTUuNDUgNCAxNS42IDRDMTUuNzQgMy45NyAxNS44OCAzLjk2IDE2IDMuOTZNMTkgNC4yOUgxOS4wNEMxOS4xNiA0LjMgMTkuMjggNC41IDE5LjQxIDQuOTFMMTkuNDIgNS4wM0MxOS4zNSA1LjA0IDE5LjIyIDQuODMgMTkuMDMgNC40MUwxOSA0LjI5TTEwLjgyIDYuMzZIMTAuODhMMTAuOSA2LjU1QzEwLjg0IDYuNTYgMTAuNzUgNi42NSAxMC42NSA2LjgzTDEwLjY0IDYuN0MxMC43NiA2LjU1IDEwLjgyIDYuNDMgMTAuODIgNi4zNk02LjY3IDYuNDZMNi42OCA2LjVDNi42MyA2LjUgNi41NiA2LjU2IDYuNSA2LjZMNi40MSA2LjYxTDYuMzkgNi41TDYuNjcgNi40Nk0xMC4yNCA3LjcyTDEwLjI2IDhIMTAuMTlMMTAuMTYgNy43M0wxMC4yNCA3LjcyTTEwLjA3IDguMTlDMTAuMDUgOC40MSAxMCA4LjUgOS44OSA4LjUzTDkuODIgOC41NEM5LjkgOC4zOSA5Ljk0IDguMjkgOS45MyA4LjIxTDEwLjA3IDguMTlNOS43OCA4Ljg3TDkuNzkgOC45M0w5LjY3IDkuMTRMOS41NCA5LjE1TDkuNTMgOS4wOUM5LjY2IDkuMDggOS43MiA5IDkuNzEgOC44OEw5Ljc4IDguODdNOS41IDkuNUw5LjQ1IDkuODFIOS4zOEw5LjM2IDkuNUg5LjVNMTYuNTcgOS43MkwxNi44NSA5Ljg5QzE2Ljg2IDEwIDE2LjgyIDEwLjAzIDE2LjczIDEwLjA0QzE2LjYxIDkuOTYgMTYuNSA5LjkzIDE2LjQ0IDkuOTNMMTYuNDMgOS43M0wxNi41NyA5LjcyTTExIDEwLjQ2TDExLjAzIDEwLjU4TDEwLjc2IDEwLjYxTDEwLjc1IDEwLjVMMTEgMTAuNDZNMTUuNSAxMC45MUMxNS42OCAxMSAxNS43OCAxMS4wOSAxNS43OSAxMS4xNkwxNS44IDExLjIyQzE1LjYxIDExLjI0IDE1LjQ1IDExLjE0IDE1LjI5IDEwLjkzTDE1LjUgMTAuOTFNMTcuNjYgMTEuMTJDMTcuODEgMTEuMTggMTcuODggMTEuMjUgMTcuODkgMTEuMzFMMTcuOTMgMTEuODJDMTcuODcgMTEuOTYgMTcuODEgMTIuMDMgMTcuNzQgMTIuMDNMMTcuNjYgMTEuMTJNMTQuMTYgMTEuMThDMTQuODYgMTEuMTcgMTUuNCAxMS4zMyAxNS43NiAxMS42OEwxNS43OSAxMS45NEMxNS41IDEyLjg1IDE1LjEzIDEzLjM4IDE0Ljc1IDEzLjU0TDEzIDE0LjkzQzExLjcgMTUuNzkgMTEgMTYuMjEgMTAuOSAxNi4yMkM4LjgzIDE3LjM2IDcuNTQgMTcuOTUgNy4wNCAxOEg2Ljk2QzcuMDMgMTcuNzYgNy45NSAxNS44NyA5LjczIDEyLjMzQzEwLjUgMTIuMjYgMTEuNzYgMTEuODkgMTMuNDQgMTEuMjNMMTMuODUgMTEuMTlDMTMuOTYgMTEuMTkgMTQuMDYgMTEuMTggMTQuMTYgMTEuMThNMTEuNjIgMTEuNTlMMTEuNjMgMTEuNjVMMTEuMzUgMTEuNjdMMTEuMzQgMTEuNjFMMTEuNjIgMTEuNTlNNy4yNiAxNS44MUM3LjE3IDE2LjI2IDcuMDggMTYuNSA3IDE2LjVMNi45NyAxNi40M0M2Ljk1IDE2LjIgNy4wNSAxNiA3LjI2IDE1LjgxTTEzLjE4IDE2LjA5TDEzLjE5IDE2LjIxQzEzLjIgMTYuMjcgMTMgMTYuNDMgMTIuNiAxNi43MkMxMS40NCAxNy4yOSAxMC43NiAxNy42OCAxMC41NiAxNy44OEM5LjMgMTguMzIgOC42OCAxOC41OSA4LjY5IDE4LjY5QzcuNTcgMTkuMTQgNi44NCAxOS40NiA2LjUgMTkuNjZDNi40MSAxOS42NyA2LjI5IDE5LjYzIDYuMTMgMTkuNTZDNi4xMiAxOS4zNCA2LjIxIDE5LjE1IDYuNDQgMTlDNi42MyAxOSA2LjgyIDE5IDcgMTkuMDlDNy4yMSAxOSA3LjU3IDE4Ljg3IDguMDggMTguNzRMOC4wNyAxOC42MUw3LjY2IDE4LjY1QzcuNzEgMTguNTggOC4xMSAxOC40IDguODYgMTguMDlMOS4wNyAxOC4wN0w5LjA4IDE4LjEzQzguNzMgMTguMTYgOC41MyAxOC4yNyA4LjUgMTguNDZDOC41IDE4LjUzIDguNTMgMTguNTggOC42MiAxOC41N0M4Ljg3IDE4LjM5IDkgMTguMyA5IDE4LjI3QzkuNSAxOC4xOCAxMC45IDE3LjQ0IDEzLjE4IDE2LjA5TTYuODYgMTYuNjlMNi44NyAxNi43NUM2Ljg4IDE2Ljg0IDYuODMgMTYuODkgNi43NCAxNi45VjE2Ljg0QzYuNzMgMTYuNzYgNi43NyAxNi43MSA2Ljg2IDE2LjY5TTEwIDE3LjVDMTAuMDcgMTcuNDcgMTAuMTIgMTcuNSAxMC4xMiAxNy41OEM5Ljk2IDE3LjYgOS42NSAxNy43MyA5LjE5IDE4SDkuMTJMOS4xMSAxNy44N0M5LjQ0IDE3Ljg0IDkuNzMgMTcuNzEgOS45NyAxNy41SDEwTTYuOTUgMTguNUw2Ljk2IDE4LjU4QzYuOSAxOC41OCA2Ljg0IDE4LjYxIDYuNzUgMTguNjZMNi42MiAxOC42N0M2LjYxIDE4LjYxIDYuNjUgMTguNTUgNi43NCAxOC41M0w2Ljk1IDE4LjVNNS4zNSAxOS4zTDUuNSAxOS4zNkM1LjQ0IDE5Ljc2IDUuMzMgMTkuOTYgNS4xMyAyMEM0Ljk3IDE5LjkxIDQuODMgMTkuODggNC43IDE5Ljg5TDQuNjggMTkuN0M0LjY3IDE5LjYyIDQuNzIgMTkuNTcgNC44MiAxOS41NUM0LjkgMTkuNTQgNC45NSAxOS42IDQuOTYgMTkuNzNDNS4yIDE5LjQ0IDUuMzMgMTkuMyA1LjM1IDE5LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieSA9IFwiTTE4LjUsNEEyLjUsMi41IDAgMCwxIDIxLDYuNUEyLjUsMi41IDAgMCwxIDE4LjUsOUEyLjUsMi41IDAgMCwxIDE2LDYuNUEyLjUsMi41IDAgMCwxIDE4LjUsNE00LjUsMjBBMS41LDEuNSAwIDAsMSAzLDE4LjVBMS41LDEuNSAwIDAsMSA0LjUsMTdIMTEuNUExLjUsMS41IDAgMCwxIDEzLDE4LjVBMS41LDEuNSAwIDAsMSAxMS41LDIwSDQuNU0xNi4wOSwxOUwxNC42OSwxNUgxMUw2Ljc1LDEwLjc1QzYuNzUsMTAuNzUgOSw4LjI1IDEyLjUsOC4yNUMxNS41LDguMjUgMTUuODUsOS4yNSAxNi4wNiw5Ljg3TDE4LjkyLDE4QzE5LjIsMTguNzggMTguNzgsMTkuNjQgMTgsMTkuOTJDMTcuMjIsMjAuMTkgMTYuMzYsMTkuNzggMTYuMDksMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUJvdHRsZSA9IFwiTTExLjI4IDIuOEwxMC43OCAzLjNBNS41IDUuNSAwIDAgMCA2LjQxIDIuODdMNi4zMyAyLjhBMi41IDIuNSAwIDAgMCAyLjggNi4zM0wyLjg3IDYuNDFBNS41IDUuNSAwIDAgMCAzLjMgMTAuNzhMMi44IDExLjI4QTEuNSAxLjUgMCAwIDAgMi44IDEzLjRMNC4yMSAxNC44MkExLjUgMS41IDAgMCAwIDYuMzMgMTQuODJMNi42OCAxNC40NkwxMy43NiAyMS41M0ExLjUgMS41IDAgMCAwIDE1Ljg4IDIxLjUzTDIxLjUzIDE1Ljg4QTEuNSAxLjUgMCAwIDAgMjEuNTMgMTMuNzZMMTQuNDYgNi42OEwxNC44MiA2LjMzQTEuNSAxLjUgMCAwIDAgMTQuODIgNC4yMUwxMy40IDIuOEExLjUgMS41IDAgMCAwIDExLjI4IDIuOE0xMy43NiA1LjI3TDUuMjcgMTMuNzZMMy44NiAxMi4zNEwxMi4zNCAzLjg2TTE0LjgyIDExLjYzTDExLjYzIDE0LjgyTDEwLjU3IDEzLjc2TDEzLjc2IDEwLjU3TTE2Ljk0IDEzLjc2TDEzLjc2IDE2Ljk0TDEyLjY5IDE1Ljg4TDE1Ljg4IDEyLjY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhYnlCb3R0bGVPdXRsaW5lID0gXCJNMTEuMjggMi44TDEwLjc4IDMuM0M5LjQ0IDIuNTUgNy44NCAyLjQgNi40MSAyLjg3TDYuMzMgMi44QzUuMzYgMS44MiAzLjc3IDEuODIgMi44IDIuOFMxLjgyIDUuMzYgMi44IDYuMzNMMi44NyA2LjQxQzIuNCA3Ljg0IDIuNTUgOS40NCAzLjMgMTAuNzhMMi44IDExLjI4QzIuMjEgMTEuODcgMi4yMSAxMi44MSAyLjggMTMuNEw0LjIxIDE0LjgyQzQuOCAxNS40IDUuNzQgMTUuNCA2LjMzIDE0LjgyTDYuNjggMTQuNDZMMTMuNzYgMjEuNTNDMTQuMzQgMjIuMTIgMTUuMjkgMjIuMTIgMTUuODggMjEuNTNMMjEuNTMgMTUuODhDMjIuMTIgMTUuMjkgMjIuMTIgMTQuMzQgMjEuNTMgMTMuNzVMMTQuNDYgNi42OEwxNC44MiA2LjMzQzE1LjQgNS43NCAxNS40IDQuOCAxNC44MiA0LjIxTDEzLjQgMi43OUMxMi44MiAyLjIxIDExLjg3IDIuMjEgMTEuMjggMi44TTQuMjUgNy4wNUM0LjMzIDYuNzEgNC40NyA2LjM4IDQuNjYgNi4wN0wzLjg2IDUuMjdDMy43NSA1LjE2IDMuNjcgNS4wNCAzLjYzIDQuOUMzLjUgNC41NiAzLjU3IDQuMTQgMy44NiAzLjg2UzQuNTYgMy41IDQuOSAzLjYzQzUuMDQgMy42NyA1LjE2IDMuNzUgNS4yNyAzLjg2TDYuMDcgNC42NkM2LjM4IDQuNDcgNi43MSA0LjMzIDcuMDUgNC4yNUM3LjkxIDQgOC44MyA0LjA2IDkuNjUgNC40Mkw0LjQyIDkuNjVDNC4wNiA4LjgzIDQgNy45MSA0LjI1IDcuMDVNMjAuNDcgMTQuODJMMTQuODIgMjAuNDdMNy43NSAxMy40TDEzLjQgNy43NUwyMC40NyAxNC44Mk0xMy43NiA1LjI3TDUuMjcgMTMuNzZMMy44NiAxMi4zNEwxMi4zNCAzLjg2TDEzLjc2IDUuMjdNMTQuODIgMTEuNjNMMTEuNjMgMTQuODJMMTAuNTcgMTMuNzZMMTMuNzYgMTAuNTdMMTQuODIgMTEuNjNNMTYuOTQgMTMuNzZMMTMuNzYgMTYuOTRMMTIuNjkgMTUuODhMMTUuODggMTIuNjlMMTYuOTQgMTMuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUJ1Z2d5ID0gXCJNMTcgMjBBMiAyIDAgMCAxIDE1IDIyQTIgMiAwIDAgMSAxMyAyMEEyIDIgMCAwIDEgMTUgMThBMiAyIDAgMCAxIDE3IDIwTTcgMjBBMiAyIDAgMCAxIDUgMjJBMiAyIDAgMCAxIDMgMjBBMiAyIDAgMCAxIDUgMThBMiAyIDAgMCAxIDcgMjBNMTcuNjEgM0MxNi45NSAzIDE2LjQ0IDMuMiAxNiAzLjVDMTUuMzIgMy45MSAxNC44OCA0LjU5IDE0LjQ3IDUuMDdMNS43MSAxNS4zNUM1LjE2IDE2IDUuNjIgMTcgNi40NyAxN0gxNEMxNS4xMSAxNyAxNiAxNi4xIDE2IDE1VjYuMzhDMTYuNTggNS43IDE2LjkzIDUgMTcuNjEgNUMxOC4zOCA1IDE5IDUuNjYgMTkgNi41VjdIMjFWNi41QzIxIDQuNTYgMTkuNSAzIDE3LjYxIDNNOC44NiAzLjA5QzcuMDQgMy4xNiA1LjIzIDMuNzYgMy42OCA0LjlMOC40NCA5LjY2TDEyLjMyIDUuMUMxMi41OSA0Ljc4IDEyLjkxIDQuMzggMTMuMyA0QzEyLjE0IDMuNDUgMTAuOSAzLjE1IDkuNjUgMy4wOUM5LjM5IDMuMDggOS4xMiAzLjA4IDguODYgMy4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWJ5Q2FycmlhZ2UgPSBcIk0xMywyVjEwSDIxQTgsOCAwIDAsMCAxMywyTTE5LjMyLDE1Ljg5QzIwLjM3LDE0LjU0IDIxLDEyLjg0IDIxLDExSDYuNDRMNS41LDlIMlYxMUg0LjIyQzQuMjIsMTEgNi4xMSwxNS4wNyA2LjM0LDE1LjQyQzUuMjQsMTYgNC41LDE3LjE3IDQuNSwxOC41QTMuNSwzLjUgMCAwLDAgOCwyMkM5Ljc2LDIyIDExLjIyLDIwLjcgMTEuNDYsMTlIMTMuNTRDMTMuNzgsMjAuNyAxNS4yNCwyMiAxNywyMkEzLjUsMy41IDAgMCwwIDIwLjUsMTguNUMyMC41LDE3LjQ2IDIwLjA0LDE2LjUzIDE5LjMyLDE1Ljg5TTgsMjBBMS41LDEuNSAwIDAsMSA2LjUsMTguNUExLjUsMS41IDAgMCwxIDgsMTdBMS41LDEuNSAwIDAsMSA5LjUsMTguNUExLjUsMS41IDAgMCwxIDgsMjBNMTcsMjBBMS41LDEuNSAwIDAsMSAxNS41LDE4LjVBMS41LDEuNSAwIDAsMSAxNywxN0ExLjUsMS41IDAgMCwxIDE4LjUsMTguNUExLjUsMS41IDAgMCwxIDE3LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhYnlDYXJyaWFnZU9mZiA9IFwiTTIyIDEwQzIyIDUuNiAxOC40IDIgMTQgMlYxMEgyMk0xNC4yIDExSDIyQzIyIDEyLjggMjEuNCAxNC41IDIwLjMgMTUuOUMyMSAxNi41IDIxLjQgMTcuNCAyMS41IDE4LjNMMTQuMiAxMU0yMC44IDIyLjdMMjIuMSAyMS40TDIuNCAxLjdMMS4xIDNMOS4xIDExSDcuNEw2LjUgOUgzVjExSDUuMkM1LjIgMTEgNy4xIDE1LjEgNy4zIDE1LjRDNi4zIDE1LjkgNS42IDE2LjkgNS41IDE4QzUuMiAxOS45IDYuNiAyMS43IDguNSAyMkMxMC40IDIyLjMgMTIuMiAyMC45IDEyLjUgMTlIMTQuNkMxNC43IDE5LjQgMTQuOCAxOS44IDE1IDIwLjJDMTUuOSAyMS45IDE4LjEgMjIuNSAxOS43IDIxLjZMMjAuOCAyMi43TTEwLjUgMTguNUMxMC41IDE5LjMgOS44IDIwIDkgMjBTNy41IDE5LjMgNy41IDE4LjUgOC4yIDE3IDkgMTcgMTAuNSAxNy43IDEwLjUgMTguNU0xOC4xIDIwQzE3LjIgMjAgMTYuNSAxOS4zIDE2LjUgMTguNVYxOC40TDE4LjEgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUZhY2UgPSBcIk0xLDEyQzEsMTAuMTkgMi4yLDguNjYgMy44Niw4LjE3QzUuMjksNS4xMSA4LjQsMyAxMiwzQzE1LjYsMyAxOC43MSw1LjExIDIwLjE1LDguMTdDMjEuOCw4LjY2IDIzLDEwLjE5IDIzLDEyQzIzLDEzLjgxIDIxLjgsMTUuMzQgMjAuMTUsMTUuODNDMTguNzEsMTguODkgMTUuNiwyMSAxMiwyMUM4LjQsMjEgNS4yOSwxOC44OSAzLjg2LDE1LjgzQzIuMiwxNS4zNCAxLDEzLjgxIDEsMTJNMTQuNSw5LjI1QTEuMjUsMS4yNSAwIDAsMCAxMy4yNSwxMC41QTEuMjUsMS4yNSAwIDAsMCAxNC41LDExLjc1QTEuMjUsMS4yNSAwIDAsMCAxNS43NSwxMC41QTEuMjUsMS4yNSAwIDAsMCAxNC41LDkuMjVNOS41LDkuMjVBMS4yNSwxLjI1IDAgMCwwIDguMjUsMTAuNUExLjI1LDEuMjUgMCAwLDAgOS41LDExLjc1QTEuMjUsMS4yNSAwIDAsMCAxMC43NSwxMC41QTEuMjUsMS4yNSAwIDAsMCA5LjUsOS4yNU03LjUsMTRDOC4yNiwxNS43NyAxMCwxNyAxMiwxN0MxNCwxNyAxNS43NCwxNS43NyAxNi41LDE0SDcuNU0zLDEyQzMsMTIuODIgMy41LDEzLjUzIDQuMjEsMTMuODRDNC4wNywxMy4yNSA0LDEyLjYzIDQsMTJDNCwxMS4zNyA0LjA3LDEwLjc1IDQuMjEsMTAuMTZDMy41LDEwLjQ3IDMsMTEuMTggMywxMk0yMSwxMkMyMSwxMS4xOCAyMC41LDEwLjQ3IDE5Ljc5LDEwLjE2QzE5LjkzLDEwLjc1IDIwLDExLjM3IDIwLDEyQzIwLDEyLjYzIDE5LjkzLDEzLjI1IDE5Ljc5LDEzLjg0QzIwLjUsMTMuNTMgMjEsMTIuODIgMjEsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFieUZhY2VPdXRsaW5lID0gXCJNMTQuNSw5LjI1QTEuMjUsMS4yNSAwIDAsMSAxNS43NSwxMC41QTEuMjUsMS4yNSAwIDAsMSAxNC41LDExLjc1QTEuMjUsMS4yNSAwIDAsMSAxMy4yNSwxMC41QTEuMjUsMS4yNSAwIDAsMSAxNC41LDkuMjVNOS41LDkuMjVBMS4yNSwxLjI1IDAgMCwxIDEwLjc1LDEwLjVBMS4yNSwxLjI1IDAgMCwxIDkuNSwxMS43NUExLjI1LDEuMjUgMCAwLDEgOC4yNSwxMC41QTEuMjUsMS4yNSAwIDAsMSA5LjUsOS4yNU03LjUsMTRIMTYuNUMxNS43NCwxNS43NyAxNCwxNyAxMiwxN0MxMCwxNyA4LjI2LDE1Ljc3IDcuNSwxNE0xLDEyQzEsMTAuMTkgMi4yLDguNjYgMy44Niw4LjE3QzUuMjksNS4xMSA4LjQsMyAxMiwzQzE1LjYsMyAxOC43MSw1LjExIDIwLjE1LDguMTdDMjEuOCw4LjY2IDIzLDEwLjE5IDIzLDEyQzIzLDEzLjgxIDIxLjgsMTUuMzQgMjAuMTUsMTUuODNDMTguNzEsMTguODkgMTUuNiwyMSAxMiwyMUM4LjQsMjEgNS4yOSwxOC44OSAzLjg2LDE1LjgzQzIuMiwxNS4zNCAxLDEzLjgxIDEsMTJNMTIsNUM4LjgyLDUgNi4xNCw3LjEyIDUuMjgsMTBINUEyLDIgMCAwLDAgMywxMkEyLDIgMCAwLDAgNSwxNEg1LjI4QzYuMTQsMTYuODggOC44MiwxOSAxMiwxOUMxNS4xOCwxOSAxNy44NiwxNi44OCAxOC43MiwxNEgxOUEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwSDE4LjcyQzE3Ljg2LDcuMTIgMTUuMTgsNSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhY2tidXJnZXIgPSBcIk01LDEzTDksMTdMNy42LDE4LjQyTDEuMTgsMTJMNy42LDUuNThMOSw3TDUsMTFIMjFWMTNINU0yMSw2VjhIMTFWNkgyMU0yMSwxNlYxOEgxMVYxNkgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWNrc3BhY2UgPSBcIk0yMiwzSDdDNi4zMSwzIDUuNzcsMy4zNSA1LjQxLDMuODhMMCwxMkw1LjQxLDIwLjExQzUuNzcsMjAuNjQgNi4zMSwyMSA3LDIxSDIyQTIsMiAwIDAsMCAyNCwxOVY1QTIsMiAwIDAsMCAyMiwzTTE5LDE1LjU5TDE3LjU5LDE3TDE0LDEzLjQxTDEwLjQxLDE3TDksMTUuNTlMMTIuNTksMTJMOSw4LjQxTDEwLjQxLDdMMTQsMTAuNTlMMTcuNTksN0wxOSw4LjQxTDE1LjQxLDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFja3NwYWNlT3V0bGluZSA9IFwiTTE5LDE1LjU5TDE3LjU5LDE3TDE0LDEzLjQxTDEwLjQxLDE3TDksMTUuNTlMMTIuNTksMTJMOSw4LjQxTDEwLjQxLDdMMTQsMTAuNTlMMTcuNTksN0wxOSw4LjQxTDE1LjQxLDEyTDE5LDE1LjU5TTIyLDNBMiwyIDAgMCwxIDI0LDVWMTlBMiwyIDAgMCwxIDIyLDIxSDdDNi4zMSwyMSA1Ljc3LDIwLjY0IDUuNDEsMjAuMTFMMCwxMkw1LjQxLDMuODhDNS43NywzLjM1IDYuMzEsMyA3LDNIMjJNMjIsNUg3TDIuMjgsMTJMNywxOUgyMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhY2tzcGFjZVJldmVyc2UgPSBcIk0yLDIxSDE3QzE3LjcsMjEgMTguMiwyMC42IDE4LjYsMjAuMUwyNCwxMkwxOC42LDMuOUMxOC4yLDMuNCAxNy43LDMgMTcsM0gyQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFNNSw4LjRMNi40LDdMMTAsMTAuNkwxMy42LDdMMTUsOC40TDExLjQsMTJMMTUsMTUuNkwxMy42LDE3TDEwLDEzLjRMNi40LDE3TDUsMTUuNkw4LjYsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlCYWNrc3BhY2VSZXZlcnNlT3V0bGluZSA9IFwiTTUsMTUuNTlMNi40MSwxN0wxMCwxMy40MUwxMy41OSwxN0wxNSwxNS41OUwxMS40MSwxMkwxNSw4LjQxTDEzLjU5LDdMMTAsMTAuNTlMNi40MSw3TDUsOC40MUw4LjU5LDEyTDUsMTUuNTlNMiwzQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFIMTdDMTcuNjksMjEgMTguMjMsMjAuNjQgMTguNTksMjAuMTFMMjQsMTJMMTguNTksMy44OEMxOC4yMywzLjM1IDE3LjY5LDMgMTcsM0gyTTIsNUgxN0wyMS43MiwxMkwxNywxOUgyVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFja3VwUmVzdG9yZSA9IFwiTTEyLDNBOSw5IDAgMCwwIDMsMTJIMEw0LDE2TDgsMTJINUE3LDcgMCAwLDEgMTIsNUE3LDcgMCAwLDEgMTksMTJBNyw3IDAgMCwxIDEyLDE5QzEwLjUsMTkgOS4wOSwxOC41IDcuOTQsMTcuN0w2LjUsMTkuMTRDOC4wNCwyMC4zIDkuOTQsMjEgMTIsMjFBOSw5IDAgMCwwIDIxLDEyQTksOSAwIDAsMCAxMiwzTTE0LDEyQTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWN0ZXJpYSA9IFwiTTIxLDE2QzIxLDE1LjUgMjAuOTUsMTUuMDggMjAuODgsMTQuNjhMMjIuNDUsMTMuOUwyMS41NSwxMi4xTDIwLjE4LDEyLjc5QzE5LjYzLDExLjk2IDE4LjkxLDExLjUgMTguMjksMTEuMjhMMTguOTUsOS4zMkwxNy4wNSw4LjY4TDE2LjI5LDEwLjk2QzE0Ljk2LDEwLjgzIDE0LjE3LDEwLjMyIDEzLjcsOS43N0wxNS40NSw4LjlMMTQuNTUsNy4xTDEzLDcuODlDMTIuOTcsNy41OSAxMi44Niw2LjcyIDEyLjI4LDUuODdMMTMuODMsMy41NUwxMi4xNywyLjQ0TDEwLjc2LDQuNTZDMTAuMjgsNC4zMyA5LjcsNC4xNSA5LDQuMDZWMkg3VjQuMUM2LjI5LDQuMjUgNS43Myw0LjU0IDUuMzIsNC45MUwyLjcsMi4yOUwxLjI5LDMuNzFMNC4yNCw2LjY1QzQsNy4zOSA0LDggNCw4SDJWMTBINC4wNEM0LjEsMTAuNjMgNC4yMSwxMS4zNiA0LjQsMTIuMTVMMS42OCwxMy4wNUwyLjMxLDE0Ljk1TDUsMTQuMDVDNS4yNCwxNC41NiA1LjUsMTUuMDggNS44MiwxNS41OEwzLjQ0LDE3LjE3TDQuNTUsMTguODNMNy4wNywxNy4xNUM3LjYzLDE3LjcxIDguMjksMTguMjEgOS4wNiwxOC42NEw4LjEsMjAuNTVMOS44OSwyMS40NUwxMC44OSwxOS40NUwxMC43MywxOS4zNkMxMS42OCwxOS42OCAxMi43NiwxOS45IDE0LDE5Ljk3VjIySDE2VjE5LjkzQzE2Ljc2LDE5Ljg0IDE3LjgxLDE5LjY0IDE4Ljc3LDE5LjE5TDIwLjI5LDIwLjcxTDIxLjcsMTkuMjlMMjAuMzcsMTcuOTVDMjAuNzUsMTcuNDQgMjEsMTYuOCAyMSwxNk04LjUsMTFBMS41LDEuNSAwIDAsMSA3LDkuNUExLjUsMS41IDAgMCwxIDguNSw4QTEuNSwxLjUgMCAwLDEgMTAsOS41QTEuNSwxLjUgMCAwLDEgOC41LDExTTExLDE0QTEsMSAwIDAsMSAxMCwxM0ExLDEgMCAwLDEgMTEsMTJBMSwxIDAgMCwxIDEyLDEzQTEsMSAwIDAsMSAxMSwxNE0xNS41LDE3QTEuNSwxLjUgMCAwLDEgMTQsMTUuNUExLjUsMS41IDAgMCwxIDE1LjUsMTRBMS41LDEuNSAwIDAsMSAxNywxNS41QTEuNSwxLjUgMCAwLDEgMTUuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYWN0ZXJpYU91dGxpbmUgPSBcIk05LDJIN1Y0LjFDNi4yOSw0LjI1IDUuNzMsNC41NCA1LjMyLDQuOTFMMi43LDIuMjlMMS4yOSwzLjcxTDQuMjQsNi42NUM0LDcuMzkgNCw4IDQsOEgyVjEwSDQuMDRDNC4xLDEwLjYzIDQuMjEsMTEuMzYgNC40LDEyLjE1TDEuNjgsMTMuMDVMMi4zMSwxNC45NUw1LDE0LjA1QzUuMjQsMTQuNTYgNS41LDE1LjA4IDUuODIsMTUuNThMMy40NCwxNy4xN0w0LjU1LDE4LjgzTDcuMDcsMTcuMTVDNy42MywxNy43MSA4LjI5LDE4LjIxIDkuMDYsMTguNjRMOC4xLDIwLjU1TDkuODksMjEuNDVMMTAuODksMTkuNDVMMTAuNzMsMTkuMzZDMTEuNjgsMTkuNjggMTIuNzYsMTkuOSAxNCwxOS45N1YyMkgxNlYxOS45M0MxNi43NiwxOS44NCAxNy44MSwxOS42NCAxOC43NywxOS4xOUwyMC4yOSwyMC43MUwyMS43LDE5LjI5TDIwLjM3LDE3Ljk1QzIwLjc1LDE3LjQ0IDIxLDE2LjggMjEsMTZDMjEsMTUuNSAyMC45NSwxNS4wOCAyMC44OCwxNC42OEwyMi40NSwxMy45TDIxLjU1LDEyLjFMMjAuMTgsMTIuNzlDMTkuNjMsMTEuOTYgMTguOTEsMTEuNSAxOC4yOSwxMS4yOEwxOC45NSw5LjMyTDE3LjA1LDguNjhMMTYuMjksMTAuOTZDMTQuOTYsMTAuODMgMTQuMTcsMTAuMzIgMTMuNyw5Ljc3TDE1LjQ1LDguOUwxNC41NSw3LjFMMTMsNy44OUMxMi45Nyw3LjU5IDEyLjg2LDYuNzIgMTIuMjgsNS44N0wxMy44MywzLjU1TDEyLjE3LDIuNDRMMTAuNzYsNC41NkMxMC4yOCw0LjMzIDkuNyw0LjE1IDksNC4wNk0xNSwxOEMxMi4wNiwxOCA5LjgxLDE3LjE4IDguMzEsMTUuNTZDNS42OCwxMi43MiA2LDguMiA2LDguMTdWOC4xMUw2LDguMDNDNiw3LjEgNi4zOSw2IDgsNkMxMC42Myw2IDEwLjk3LDcuNDMgMTEsOEMxMSwxMCAxMi42LDEzIDE3LDEzQzE3LjMzLDEzIDE5LDEzLjE1IDE5LDE2QzE5LDE3Ljg5IDE1LjAzLDE4IDE1LDE4TTguNSw4QTEuNSwxLjUgMCAwLDAgNyw5LjVBMS41LDEuNSAwIDAsMCA4LjUsMTFBMS41LDEuNSAwIDAsMCAxMCw5LjVBMS41LDEuNSAwIDAsMCA4LjUsOE0xMSwxMkExLDEgMCAwLDAgMTAsMTNBMSwxIDAgMCwwIDExLDE0QTEsMSAwIDAsMCAxMiwxM0ExLDEgMCAwLDAgMTEsMTJNMTUuNSwxNEExLjUsMS41IDAgMCwwIDE0LDE1LjVBMS41LDEuNSAwIDAsMCAxNS41LDE3QTEuNSwxLjUgMCAwLDAgMTcsMTUuNUExLjUsMS41IDAgMCwwIDE1LjUsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkZ2VBY2NvdW50ID0gXCJNMTcsM0gxNFY2SDEwVjNIN0EyLDIgMCAwLDAgNSw1VjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVY1QTIsMiAwIDAsMCAxNywzTTEyLDhBMiwyIDAgMCwxIDE0LDEwQTIsMiAwIDAsMSAxMiwxMkEyLDIgMCAwLDEgMTAsMTBBMiwyIDAgMCwxIDEyLDhNMTYsMTZIOFYxNUM4LDEzLjY3IDEwLjY3LDEzIDEyLDEzQzEzLjMzLDEzIDE2LDEzLjY3IDE2LDE1VjE2TTEzLDVIMTFWMUgxM1Y1TTE2LDE5SDhWMThIMTZWMTlNMTIsMjFIOFYyMEgxMlYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWRnZUFjY291bnRBbGVydCA9IFwiTTE1LDNIMTJWNkg4VjNINUEyLDIgMCAwLDAgMyw1VjIxQTIsMiAwIDAsMCA1LDIzSDE1QTIsMiAwIDAsMCAxNywyMVY1QTIsMiAwIDAsMCAxNSwzTTEwLDhBMiwyIDAgMCwxIDEyLDEwQTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgOCwxMEEyLDIgMCAwLDEgMTAsOE0xNCwxNkg2VjE1QzYsMTMuNjcgOC42NywxMyAxMCwxM0MxMS4zMywxMyAxNCwxMy42NyAxNCwxNVYxNk0xMSw1SDlWMUgxMVY1TTE0LDE5SDZWMThIMTRWMTlNMTAsMjFINlYyMEgxMFYyMU0xOSwxM1Y3SDIxVjEzSDE5TTE5LDE3VjE1SDIxVjE3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZGdlQWNjb3VudEFsZXJ0T3V0bGluZSA9IFwiTTE1LDNIMTJWNUgxNVYyMUg1VjVIOFYzSDVBMiwyIDAgMCwwIDMsNVYyMUEyLDIgMCAwLDAgNSwyM0gxNUEyLDIgMCAwLDAgMTcsMjFWNUEyLDIgMCAwLDAgMTUsM00xMCw3QTIsMiAwIDAsMSAxMiw5QTIsMiAwIDAsMSAxMCwxMUEyLDIgMCAwLDEgOCw5QTIsMiAwIDAsMSAxMCw3TTE0LDE1SDZWMTRDNiwxMi42NyA4LjY3LDEyIDEwLDEyQzExLjMzLDEyIDE0LDEyLjY3IDE0LDE0VjE1TTE0LDE4SDZWMTdIMTRWMThNMTAsMjBINlYxOUgxMFYyME0xMSw1SDlWMUgxMVY1TTE5LDEzVjdIMjFWMTNIMTlNMTksMTdWMTVIMjFWMTdIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkZ2VBY2NvdW50SG9yaXpvbnRhbCA9IFwiTTIyLDRIMTRWN0gxMFY0SDJBMiwyIDAgMCwwIDAsNlYyMEEyLDIgMCAwLDAgMiwyMkgyMkEyLDIgMCAwLDAgMjQsMjBWNkEyLDIgMCAwLDAgMjIsNE04LDlBMiwyIDAgMCwxIDEwLDExQTIsMiAwIDAsMSA4LDEzQTIsMiAwIDAsMSA2LDExQTIsMiAwIDAsMSA4LDlNMTIsMTdINFYxNkM0LDE0LjY3IDYuNjcsMTQgOCwxNEM5LjMzLDE0IDEyLDE0LjY3IDEyLDE2VjE3TTIwLDE4SDE0VjE2SDIwVjE4TTIwLDE0SDE0VjEySDIwVjE0TTIwLDEwSDE0VjhIMjBWMTBNMTMsNkgxMVYySDEzVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkZ2VBY2NvdW50SG9yaXpvbnRhbE91dGxpbmUgPSBcIk04LDlBMiwyIDAgMCwxIDEwLDExQTIsMiAwIDAsMSA4LDEzQTIsMiAwIDAsMSA2LDExQTIsMiAwIDAsMSA4LDlNMTIsMTdINFYxNkM0LDE0LjY3IDYuNjcsMTQgOCwxNEM5LjMzLDE0IDEyLDE0LjY3IDEyLDE2VjE3TTIwLDhIMTRWMTBIMjBWOE0yMCwxMkgxNFYxNEgyMFYxMk0yMCwxNkgxNFYxOEgyMFYxNk0yMiw0SDE0VjZIMjJWMjBIMlY2SDEwVjRIMkEyLDIgMCAwLDAgMCw2VjIwQTIsMiAwIDAsMCAyLDIySDIyQTIsMiAwIDAsMCAyNCwyMFY2QTIsMiAwIDAsMCAyMiw0TTEzLDZIMTFWMkgxM1Y2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZGdlQWNjb3VudE91dGxpbmUgPSBcIk0xNywzSDE0VjVIMTdWMjFIN1Y1SDEwVjNIN0EyLDIgMCAwLDAgNSw1VjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVY1QTIsMiAwIDAsMCAxNywzTTEyLDdBMiwyIDAgMCwxIDE0LDlBMiwyIDAgMCwxIDEyLDExQTIsMiAwIDAsMSAxMCw5QTIsMiAwIDAsMSAxMiw3TTE2LDE1SDhWMTRDOCwxMi42NyAxMC42NywxMiAxMiwxMkMxMy4zMywxMiAxNiwxMi42NyAxNiwxNFYxNU0xNiwxOEg4VjE3SDE2VjE4TTEyLDIwSDhWMTlIMTJWMjBNMTMsNUgxMVYxSDEzVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFkbWludG9uID0gXCJNMTIuMywyQzExLjMzLDIuMDMgMTAuNTgsMi44NCAxMC42MSwzLjhDMTAuNjIsNC4wNCAxMC42Nyw0LjI3IDEwLjc3LDQuNUwxMS4wNiw1LjE0VjUuMTRDMTEuMSw1LjI3IDExLjAzLDUuNDEgMTAuODksNS40NUMxMC44LDUuNSAxMC43LDUuNDUgMTAuNjMsNS4zN0wxMC4yMSw0LjgyQzkuODgsNC40IDkuMzgsNC4xNCA4Ljg1LDQuMTNDNy44OCw0LjExIDcuMDgsNC44OCA3LjA2LDUuODRDNy4wNSw2LjI2IDcuMTksNi42NiA3LjQ1LDdMNy44Nyw3LjVINy44OEM3Ljk2LDcuNjMgNy45Myw3Ljc5IDcuODIsNy44N0M3LjczLDcuOTQgNy42MSw3Ljk0IDcuNTMsNy44N0w3LDcuNDVDNi42Niw3LjE5IDYuMjUsNy4wNSA1Ljg0LDcuMDZDNC44OCw3LjA4IDQuMTEsNy44OCA0LjEzLDguODVDNC4xNCw5LjM4IDQuNCw5Ljg4IDQuODIsMTAuMjFMNS4zOSwxMC42NUM1LjUsMTAuNzUgNS41LDEwLjkxIDUuMzgsMTFDNS4zMSwxMS4wNyA1LjIxLDExLjA5IDUuMTIsMTEuMDVINS4xMUw0LjUsMTAuNzdDNC4yNywxMC42OCA0LjA0LDEwLjYyIDMuOCwxMC42MUMyLjg0LDEwLjU4IDIuMDMsMTEuMzQgMiwxMi4zMUMyLDEzLjAzIDIuNCwxMy42OSAzLjA2LDEzLjk3TDE0LjQ1LDE5LjA0TDE5LjA0LDE0LjQ1TDEzLjk3LDMuMDZDMTMuNjksMi4zOSAxMywxLjk3IDEyLjMsMk0xMy4xMyw2LjFDMTMuNTUsNi4wOSAxMy45Myw2LjMzIDE0LjA5LDYuNzFMMTcuMTQsMTMuNTVMMTMuMTksOS42MUwxMi4yNiw3LjVDMTEuOTYsNi44NyAxMi40Miw2LjEyIDEzLjEzLDYuMU05Ljg1LDguODVDMTAuMTIsOC44NSAxMC4zNyw4Ljk1IDEwLjU2LDkuMTVMMTUuMzcsMTMuOTZDMTUuNzcsMTQuMzQgMTUuNzgsMTQuOTcgMTUuNCwxNS4zN0MxNSwxNS43NyAxNC4zOCwxNS43OCAxMy45NiwxNS4zN0w5LjE1LDEwLjU2QzguNzUsMTAuMTggOC43NCw5LjU0IDkuMTMsOS4xNUM5LjMyLDguOTUgOS41OCw4Ljg1IDkuODUsOC44NU03LjEzLDEyLjE3QzcuMjYsMTIuMTcgNy40LDEyLjIxIDcuNSwxMi4yNkw5LjYzLDEzLjJMMTMuNTcsMTcuMTRMNi43MSwxNC4wOUM1LjY5LDEzLjY1IDYuMDMsMTIuMTQgNy4xMywxMi4xN00yMC4yOCwxNi4wNEwxNi4wNCwyMC4yOEwxNi44OSwyMS4xM0MxNy42NSwyMS44OCAxOC43NSwyMi4xNyAxOS43OCwyMS45QzIwLjgxLDIxLjYyIDIxLjYyLDIwLjgxIDIxLjksMTkuNzhDMjIuMTcsMTguNzUgMjEuODgsMTcuNjUgMjEuMTMsMTYuODlMMjAuMjgsMTYuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFnQ2FycnlPbiA9IFwiTTE0LjYgMjEuNEMxNSAyMS44IDE1LjQgMjIgMTYgMjJTMTcgMjEuOCAxNy40IDIxLjQgMTggMjAuNiAxOCAyMCAxNy44IDE5IDE3LjQgMTguNiAxNi41IDE4IDE2IDE4IDE1IDE4LjIgMTQuNiAxOC42IDE0IDE5LjQgMTQgMjAgMTQuMiAyMSAxNC42IDIxLjRNNiAxOUM2IDE5LjUgNi4yIDIwIDYuNiAyMC40QzcgMjAuOCA3LjUgMjEgOCAyMVY3QzcuNSA3IDcgNy4yIDYuNiA3LjZDNi4yIDggNiA4LjUgNiA5VjE5TTE2IDJIMTJDMTIgMi41IDEyLjIgMyAxMi42IDMuNEMxMyAzLjggMTMuNSA0IDE0IDRWN0g5VjIxSDEzLjJDMTMgMjAuNSAxMyAyMC4yIDEzIDIwQzEzIDE5LjIgMTMuMyAxOC41IDEzLjkgMTcuOUMxNC41IDE3LjMgMTUuMiAxNyAxNiAxN1YyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZ0NhcnJ5T25DaGVjayA9IFwiTTE1LjI4LDE2LjY5TDE4LjE0LDEzLjg4TDE4Ljg0LDE0LjU4TDE1LjI4LDE4LjE0TDEzLjE3LDE2TDEzLjg4LDE1LjI4TDE1LjI4LDE2LjY5TTgsMjFBMiwyIDAgMCwxIDYsMTlWOUEyLDIgMCAwLDEgOCw3VjIxTTksN0gxNFY0QTIsMiAwIDAsMSAxMiwySDE2VjEwQTYsNiAwIDAsMSAyMiwxNkE2LDYgMCAwLDEgMTYsMjJDMTQuNzcsMjIgMTMuNjMsMjEuNjMgMTIuNjgsMjFIOVY3TTE2LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMjBBNCw0IDAgMCwwIDIwLDE2QTQsNCAwIDAsMCAxNiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdDYXJyeU9uT2ZmID0gXCJNMi4xIDQuOUw2IDguOVYxOUM2IDE5LjUgNi4yIDIwIDYuNiAyMC40QzcgMjAuOCA3LjUgMjEgOCAyMVYxMC44TDkgMTEuOFYyMUgxMy4yQzEzLjEgMjAuNiAxMyAyMC4yIDEzIDIwQzEzIDE4LjggMTMuNSAxOCAxNC42IDE3LjRMMTUuNCAxOC4yQzE0LjUgMTguNSAxNC4xIDE5LjIgMTQuMSAyMC4xQzE0LjEgMjAuNiAxNC4zIDIxLjEgMTQuNyAyMS41QzE1IDIxLjggMTUuNSAyMiAxNiAyMkMxNi45IDIyIDE3LjYgMjEuNiAxNy45IDIwLjdMMTkuMSAyMS45TDIwLjUgMjAuNUwzLjUgMy41TDIuMSA0LjlNMTIgMkMxMiAyLjUgMTIuMiAzIDEyLjYgMy40UzEzLjUgNCAxNCA0VjdIOS44TDE2IDEzLjJWMkgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdDaGVja2VkID0gXCJNMjIgMTlIMlYyMUgyMlYxOU00IDE1QzQgMTUuNSA0LjIgMTYgNC42IDE2LjRDNSAxNi44IDUuNSAxNyA2IDE3VjZDNS41IDYgNSA2LjIgNC42IDYuNkM0LjIgNyA0IDcuNSA0IDhWMTVNMTMuNSA2SDEwLjVDMTAuNSA1LjYgMTAuNiA1LjIgMTAuOSA0LjlDMTEuMiA0LjYgMTEuNSA0LjUgMTIgNC41QzEyLjQgNC41IDEyLjggNC42IDEzLjEgNC45QzEzLjMgNS4yIDEzLjUgNS42IDEzLjUgNk03IDZWMTdIMTdWNkgxNUMxNSA1LjIgMTQuNyA0LjUgMTQuMSAzLjlTMTIuOCAzIDEyIDNDMTEuMiAzIDEwLjUgMy4zIDkuOSAzLjlDOS4zIDQuNSA5IDUuMiA5IDZIN00xOCAxN0MxOC41IDE3IDE5IDE2LjggMTkuNCAxNi40QzE5LjggMTYgMjAgMTUuNSAyMCAxNVY4QzIwIDcuNSAxOS44IDcgMTkuNCA2LjZDMTkgNi4yIDE4LjUgNiAxOCA2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhZ1BlcnNvbmFsID0gXCJNMTYsNVY0QTIsMiAwIDAsMCAxNCwySDEwQTIsMiAwIDAsMCA4LDRWNUE0LDQgMCAwLDAgNCw5VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY5QTQsNCAwIDAsMCAxNiw1TTEwLDRIMTRWNUgxMFY0TTEyLDlMMTQsMTFMMTIsMTNMMTAsMTFMMTIsOU0xOCwxNkg5VjE4SDhWMTZINlYxNUgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdQZXJzb25hbE9mZiA9IFwiTTIwLDE5LjM1TDIuMzgsMS43M0wxLjExLDNMNC43Nyw2LjY2QzQuMjcsNy4zNCA0LDguMTYgNCw5VjIwQTIsMiAwIDAsMCA2LDIySDE4QzE4LjU2LDIyIDE5LjA4LDIxLjc2IDE5LjQ2LDIxLjM1TDIwLjg0LDIyLjczTDIyLjExLDIxLjQ2TDIwLDE5LjM1TTksMTZWMThIOFYxNkg2VjE1SDEzLjExTDE0LjExLDE2SDlNMjAsOUE0LDQgMCAwLDAgMTYsNVY0QTIsMiAwIDAsMCAxNCwySDEwQTIsMiAwIDAsMCA4LDRWNC44TDIwLDE2LjhWOU0xNCw1SDEwVjRIMTRWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdQZXJzb25hbE9mZk91dGxpbmUgPSBcIk0yMCwxOS4zNUwyLjM4LDEuNzNMMS4xMSwzTDQuNzcsNi42NkM0LjI3LDcuMzQgNCw4LjE2IDQsOVYyMEEyLDIgMCAwLDAgNiwyMkgxOEMxOC41NiwyMiAxOS4wOCwyMS43NiAxOS40NiwyMS4zNUwyMC44NCwyMi43M0wyMi4xMSwyMS40NkwyMCwxOS4zNU02LDlDNiw4LjY5IDYuMDgsOC4zOCA2LjIyLDguMTFMMTMuMTEsMTVINlY5TTE4LDIwSDZWMTZIOFYxOEg5VjE2SDE0LjExTDE4LDE5Ljg5VjIwTTE2LDdBMiwyIDAgMCwxIDE4LDlWMTQuOEwyMCwxNi44VjlBNCw0IDAgMCwwIDE2LDVWNEEyLDIgMCAwLDAgMTQsMkgxMEEyLDIgMCAwLDAgOCw0VjQuOEwxMC4yLDdIMTZNMTAsNEgxNFY1SDEwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFnUGVyc29uYWxPdXRsaW5lID0gXCJNMTYsNVY0QTIsMiAwIDAsMCAxNCwySDEwQTIsMiAwIDAsMCA4LDRWNUE0LDQgMCAwLDAgNCw5VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY5QTQsNCAwIDAsMCAxNiw1TTEwLDRIMTRWNUgxMFY0TTEyLDlMMTQsMTFMMTIsMTNMMTAsMTFMMTIsOU0xOCwyMEg2VjE2SDhWMThIOVYxNkgxOFYyME0xOCwxNUg2VjlBMiwyIDAgMCwxIDgsN0gxNkEyLDIgMCAwLDEgMTgsOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdTdWl0Y2FzZSA9IFwiTTE3LjAzIDZDMTguMTEgNiAxOSA2Ljg4IDE5IDhWMTlDMTkgMjAuMTMgMTguMTEgMjEgMTcuMDMgMjFDMTcuMDMgMjEuNTggMTYuNTYgMjIgMTYgMjJDMTUuNSAyMiAxNSAyMS41OCAxNSAyMUg5QzkgMjEuNTggOC41IDIyIDggMjJDNy40NCAyMiA2Ljk3IDIxLjU4IDYuOTcgMjFDNS44OSAyMSA1IDIwLjEzIDUgMTlWOEM1IDYuODggNS44OSA2IDYuOTcgNkg5VjNDOSAyLjQyIDkuNDYgMiAxMCAySDE0QzE0LjU0IDIgMTUgMi40MiAxNSAzVjZIMTcuMDNNMTMuNSA2VjMuNUgxMC41VjZIMTMuNU04IDlWMThIOS41VjlIOE0xNC41IDlWMThIMTZWOUgxNC41TTExLjI1IDlWMThIMTIuNzVWOUgxMS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdTdWl0Y2FzZU9mZiA9IFwiTTIgNC43N0wzLjI4IDMuNUwyMSAyMS4yMkwxOS43MyAyMi41TDE4IDIwLjc2QzE3LjcxIDIwLjkzIDE3LjM4IDIxIDE3LjAzIDIxQzE3LjAzIDIxLjU4IDE2LjU2IDIyIDE2IDIyQzE1LjUgMjIgMTUgMjEuNTggMTUgMjFIOUM5IDIxLjU4IDguNSAyMiA4IDIyQzcuNDQgMjIgNi45NyAyMS41OCA2Ljk3IDIxQzUuODkgMjEgNSAyMC4xMyA1IDE5VjcuNzdMMiA0Ljc3TTE3LjAzIDZDMTguMTEgNiAxOSA2Ljg4IDE5IDhWMTYuNjhMMTYgMTMuNjhWOUgxNC41VjEyLjE4TDEyLjc1IDEwLjQzVjlIMTEuMzJMOC4zMSA2SDlWM0M5IDIuNDIgOS40NiAyIDEwIDJIMTRDMTQuNTQgMiAxNSAyLjQyIDE1IDNWNkgxNy4wM004IDE4SDkuNVYxMi4yN0w4IDEwLjc3VjE4TTExLjI1IDE4SDEyLjc1VjE1LjVMMTEuMjUgMTRWMThNMTQuNSAxOEgxNS4yM0wxNC41IDE3LjI3VjE4TTEzLjUgNlYzLjVIMTAuNVY2SDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFnU3VpdGNhc2VPZmZPdXRsaW5lID0gXCJNMiA0Ljc3TDMuMjggMy41TDIxIDIxLjIyTDE5LjczIDIyLjVMMTggMjAuNzZDMTcuNzEgMjAuOTMgMTcuMzggMjEgMTcuMDMgMjFDMTcuMDMgMjEuNTggMTYuNTYgMjIgMTYgMjJDMTUuNSAyMiAxNSAyMS41OCAxNSAyMUg5QzkgMjEuNTggOC41IDIyIDggMjJDNy40NCAyMiA2Ljk3IDIxLjU4IDYuOTcgMjFDNS44OSAyMSA1IDIwLjEzIDUgMTlMNSA3Ljc4TDIgNC43N005LjUgMThIOFYxMC43OEw2Ljk3IDkuNzRWMTlIMTYuMjNMMTUuMjUgMThIMTQuNVYxNy4yNkwxMi43NSAxNS41VjE4SDExLjI1VjE0TDkuNSAxMi4yOFYxOE0xMi43NSA5VjEwLjQzTDExLjMyIDlIMTIuNzVNMTQuNSA5SDE2VjEzLjY3TDE0LjUgMTIuMTdWOU0xNy4wMyA2QzE4LjExIDYgMTkgNi44OCAxOSA4VjE2LjY4TDE3LjAzIDE0LjdWOEgxMC4zM0w4LjMxIDZIOVYzQzkgMi40MiA5LjQ2IDIgMTAgMkgxNEMxNC41NCAyIDE1IDIuNDIgMTUgM1Y2SDE3LjAzTTEwLjUgMy41VjZIMTMuNVYzLjVIMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWdTdWl0Y2FzZU91dGxpbmUgPSBcIk05LjUgMThWOUg4VjE4TTEyLjc1IDE4VjlIMTEuMjVWMThNMTYgMThWOUgxNC41VjE4TTE3LjAzIDZDMTguMTEgNiAxOSA2Ljg4IDE5IDhWMTlDMTkgMjAuMTMgMTguMTEgMjEgMTcuMDMgMjFDMTcuMDMgMjEuNTggMTYuNTYgMjIgMTYgMjJDMTUuNSAyMiAxNSAyMS41OCAxNSAyMUg5QzkgMjEuNTggOC41IDIyIDggMjJDNy40NCAyMiA2Ljk3IDIxLjU4IDYuOTcgMjFDNS44OSAyMSA1IDIwLjEzIDUgMTlWOEM1IDYuODggNS44OSA2IDYuOTcgNkg5VjNDOSAyLjQyIDkuNDYgMiAxMCAySDE0QzE0LjU0IDIgMTUgMi40MiAxNSAzVjZNMTAuNSAzLjVWNkgxMy41VjMuNU0xNy4wMyAxOVY4SDYuOTdWMTlcIjtcclxuZXhwb3J0IHZhciBtZGlCYWd1ZXR0ZSA9IFwiTTUgMjJDMy42OCAyMiAzLjE1IDE5LjY0IDMuMDQgMTguN0E1LjU2IDUuNTYgMCAwIDEgMy4zNiAxNkEyLjUgMi41IDAgMCAxIDUuMjMgMTQuMzhDNi40IDE0LjE4IDcuMjMgMTQuODggOC4yOSAxNS4xMkExLjIxIDEuMjEgMCAwIDAgOS44NSAxMy43NUM5LjQxIDEyLjAzIDYuMjggMTIgNSAxMkM1IDEwLjE0IDcuMDQgOS45IDguNSAxMC4wNEExMC44IDEwLjggMCAwIDEgMTEuMDQgMTAuNkMxMS41NCAxMC43NyAxMi4xMiAxMS4yIDEyLjY3IDExLjE2QzEzLjUgMTEuMDkgMTMuNjcgMTAuMjMgMTMuMzEgOS42QzEyLjQ0IDguMTIgOS45NyA4IDguNSA4QzguNSA2IDEwLjIzIDUuNjIgMTEuODkgNS45MkExMS41OCAxMS41OCAwIDAgMSAxNC4zOCA2LjcxQzE0Ljg5IDYuOTMgMTUuNSA3LjM1IDE2LjA2IDcuMTZDMTcuNSA2LjcyIDE2IDUuMTggMTUuMzYgNC44MUE2LjYgNi42IDAgMCAwIDEzLjk0IDQuMjNDMTMuNCA0LjA3IDEyLjc0IDQuMTMgMTMuMjMgMy41QTUuMTMgNS4xMyAwIDAgMSAxNS45NiAyLjI2QzE3Ljg1IDEuODIgMjAuNDYgMS43NCAyMC45MiA0LjEyQTUuMyA1LjMgMCAwIDEgMjAuMDcgNy43QTM4Ljk2IDM4Ljk2IDAgMCAxIDEzLjIyIDE2LjMzQTM2LjYgMzYuNiAwIDAgMSA4LjYyIDIwLjMyQzcuNjIgMjEuMDQgNi4zIDIyIDUgMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFsbG9vbiA9IFwiTTEzLjE2LDEyLjc0TDE0LDE0SDEyLjVDMTIuMzUsMTYuNzEgMTIsMTkuNDEgMTEuNSwyMi4wOEwxMC41LDIxLjkyQzExLDE5LjMgMTEuMzQsMTYuNjYgMTEuNSwxNEgxMEwxMC44NCwxMi43NEM4LjY0LDExLjc5IDcsOC4zNiA3LDZBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZDMTcsOC4zNiAxNS4zNiwxMS43OSAxMy4xNiwxMi43NFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWxsb3QgPSBcIk0xMyw5LjVIMThWNy41SDEzVjkuNU0xMywxNi41SDE4VjE0LjVIMTNWMTYuNU0xOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFNNiwxMUgxMVY2SDZWMTFNNyw3SDEwVjEwSDdWN002LDE4SDExVjEzSDZWMThNNywxNEgxMFYxN0g3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbGxvdE91dGxpbmUgPSBcIk0xMyw3LjVIMThWOS41SDEzVjcuNU0xMywxNC41SDE4VjE2LjVIMTNWMTQuNU0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xOSwxOVY1SDVWMTlIMTlNMTEsNlYxMUg2VjZIMTFNMTAsMTBWN0g3VjEwSDEwTTExLDEzVjE4SDZWMTNIMTFNMTAsMTdWMTRIN1YxN0gxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYWxsb3RSZWNvdW50ID0gXCJNMTksMTJWMTMuNUE0LDQgMCAwLDEgMjMsMTcuNUMyMywxOC4zMiAyMi43NSwxOS4wOCAyMi4zMywxOS43MUwyMS4yNCwxOC42MkMyMS40MSwxOC4yOCAyMS41LDE3LjkgMjEuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMTVWMTYuNUwxNi43NSwxNC4yNUwxOSwxMk0xOSwyM1YyMS41QTQsNCAwIDAsMSAxNSwxNy41QzE1LDE2LjY4IDE1LjI1LDE1LjkyIDE1LjY3LDE1LjI5TDE2Ljc2LDE2LjM4QzE2LjU5LDE2LjcyIDE2LjUsMTcuMSAxNi41LDE3LjVBMi41LDIuNSAwIDAsMCAxOSwyMFYxOC41TDIxLjI1LDIwLjc1TDE5LDIzTTEwLDE3SDdWMTRIMTBWMTdNMTAsN1YxMEg3VjdIMTBNNSwyMUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTEuMTdDMjAuNSwxMS4wNiAyMCwxMSAxOS41LDExQTYuNSw2LjUgMCAwLDAgMTMsMTcuNUMxMywxOC43OSAxMy4zOCwyMCAxNCwyMUg1TTEzLDkuNUgxOFY3LjVIMTNWOS41TTExLDEzSDZWMThIMTFWMTNNMTEsNkg2VjExSDExVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFsbG90UmVjb3VudE91dGxpbmUgPSBcIk02LDE4VjEzSDExVjE4SDZNNywxNFYxN0gxMFYxNEg3TTEzLDcuNUgxOFY5LjVIMTNWNy41TTUsMjFBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjExLjE3QzIwLjUsMTEuMDYgMjAsMTEgMTkuNSwxMUgxOVY1SDVWMTlIMTMuMTdDMTMuMzQsMTkuNzIgMTMuNjMsMjAuMzkgMTQsMjFINU0xMSw2VjExSDZWNkgxMU0xMCwxMFY3SDdWMTBIMTBNMTksMTJWMTMuNUE0LDQgMCAwLDEgMjMsMTcuNUMyMywxOC4zMiAyMi43NSwxOS4wOCAyMi4zMywxOS43MUwyMS4yNCwxOC42MkMyMS40MSwxOC4yOCAyMS41LDE3LjkgMjEuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMTVWMTYuNUwxNi43NSwxNC4yNUwxOSwxMk0xOSwyM1YyMS41QTQsNCAwIDAsMSAxNSwxNy41QzE1LDE2LjY4IDE1LjI1LDE1LjkyIDE1LjY3LDE1LjI5TDE2Ljc2LDE2LjM4QzE2LjU5LDE2LjcyIDE2LjUsMTcuMSAxNi41LDE3LjVBMi41LDIuNSAwIDAsMCAxOSwyMFYxOC41TDIxLjI1LDIwLjc1TDE5LDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmRhZ2UgPSBcIk0xNy43MywxMkwyMS43MSw4LjA0QzIyLjEsNy42NSAyMi4xLDcgMjEuNzEsNi42M0wxNy4zNywyLjI5QzE3LDEuOSAxNi4zNSwxLjkgMTUuOTYsMi4yOUwxMiw2LjI3TDgsMi4yOUM3LjgsMi4xIDcuNTUsMiA3LjI5LDJDNy4wNCwyIDYuNzgsMi4xIDYuNTksMi4yOUwyLjI1LDYuNjNDMS44Niw3IDEuODYsNy42NSAyLjI1LDguMDRMNi4yMywxMkwyLjI1LDE2QzEuODYsMTYuMzkgMS44NiwxNyAyLjI1LDE3LjQxTDYuNTksMjEuNzVDNywyMi4xNCA3LjYxLDIyLjE0IDgsMjEuNzVMMTIsMTcuNzdMMTUuOTYsMjEuNzVDMTYuMTYsMjEuOTUgMTYuNDEsMjIuMDQgMTYuNjcsMjIuMDRDMTYuOTMsMjIuMDQgMTcuMTgsMjEuOTQgMTcuMzgsMjEuNzVMMjEuNzIsMTcuNDFDMjIuMTEsMTcgMjIuMTEsMTYuMzkgMjEuNzIsMTZMMTcuNzMsMTJNMTIsOUExLDEgMCAwLDEgMTMsMTBBMSwxIDAgMCwxIDEyLDExQTEsMSAwIDAsMSAxMSwxMEExLDEgMCAwLDEgMTIsOU03LjI5LDEwLjk2TDMuNjYsNy4zNEw3LjI5LDMuNzFMMTAuOTEsNy4zM0w3LjI5LDEwLjk2TTEwLDEzQTEsMSAwIDAsMSA5LDEyQTEsMSAwIDAsMSAxMCwxMUExLDEgMCAwLDEgMTEsMTJBMSwxIDAgMCwxIDEwLDEzTTEyLDE1QTEsMSAwIDAsMSAxMSwxNEExLDEgMCAwLDEgMTIsMTNBMSwxIDAgMCwxIDEzLDE0QTEsMSAwIDAsMSAxMiwxNU0xNCwxMUExLDEgMCAwLDEgMTUsMTJBMSwxIDAgMCwxIDE0LDEzQTEsMSAwIDAsMSAxMywxMkExLDEgMCAwLDEgMTQsMTFNMTYuNjYsMjAuMzRMMTMuMDMsMTYuNzJMMTYuNjYsMTMuMDlMMjAuMjgsMTYuNzFMMTYuNjYsMjAuMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFuZGNhbXAgPSBcIk0yMiw2TDE1LjUsMThIMkw4LjUsNkgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYW5rID0gXCJNMTEuNSwxTDIsNlY4SDIxVjZNMTYsMTBWMTdIMTlWMTBNMiwyMkgyMVYxOUgyTTEwLDEwVjE3SDEzVjEwTTQsMTBWMTdIN1YxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtDaGVjayA9IFwiTTEwLjUgMTdWMTBIMTMuNVYxNi42MUMxMy40NCAxNi43MyAxMy40IDE2Ljg3IDEzLjM1IDE3SDEwLjVNMTkgMTNDMTkuMTcgMTMgMTkuMzMgMTMgMTkuNSAxMy4wM1YxMEgxNi41VjEzLjU1QzE3LjI2IDEzLjIgMTguMTEgMTMgMTkgMTNNNy41IDE3VjEwSDQuNVYxN0g3LjVNMjEuNSA2TDEyIDFMMi41IDZWOEgyMS41VjZNMi41IDE5VjIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMDkgMTMgMTlIMi41TTIxLjM0IDE2TDE3Ljc1IDE5LjU5TDE2LjE2IDE4TDE1IDE5LjE2TDE3Ljc1IDIyLjE2TDIyLjUgMTcuNDFMMjEuMzQgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua01pbnVzID0gXCJNMTQsMTdIMjJWMTlIMTRWMTdNMTEuNSwxTDIxLDZWOEgyVjZMMTEuNSwxTTE2LDEwSDE5VjEyLjA4TDE4LDEyQzE3LjMsMTIgMTYuNjMsMTIuMTIgMTYsMTIuMzRWMTBNMiwyMlYxOUgxMi4wOEMxMi4yNywyMC4xNCAxMi43OSwyMS4xNyAxMy41MywyMkgyTTEwLDEwSDEzVjE0LjY4QzEyLjU0LDE1LjM3IDEyLjIyLDE2LjE1IDEyLjA4LDE3SDEwVjEwTTQsMTBIN1YxN0g0VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtPZmYgPSBcIk0xMS4yIDhMNi44OSAzLjY5TDEyIDFMMjEuNSA2VjhIMTEuMk0xOS41IDE2LjNWMTBIMTYuNVYxMy4zTDE5LjUgMTYuM00yMS41IDIwLjg1VjIwLjg0TDE5LjY2IDE5SDE5LjY1TDE3LjY1IDE3SDE3LjY2TDE2LjUgMTUuODRWMTUuODVMMTMuNSAxMi44NVYxMi44NEwxMC42NiAxMEgxMC42Nkw4LjY2IDhIOC42NkwyLjM5IDEuNzNMMS4xMSAzTDMuNTYgNS40NUwyLjUgNlY4SDYuMTFMMTAuNSAxMi4zOVYxN0gxMy41VjE1LjM5TDE3LjExIDE5SDIuNVYyMkgyMC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyMS41IDIwLjg1TTQuNSAxMFYxN0g3LjVWMTBINC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtPZmZPdXRsaW5lID0gXCJNMTcgMTMuOFYxMEgxOVYxNS44TDE3IDEzLjhNMTIgMy4yNkwxNy4yMSA2SDkuMkwxMS4yIDhIMjEuNVY2TDEyIDFMNi44OSAzLjY5TDguMzcgNS4xN0wxMiAzLjI2TTUgMTBWMTdIN1YxMEg1TTIxLjUgMjAuODVWMjAuODRMMTkuNjYgMTlIMTkuNjVMMTcuNjUgMTdIMTcuNjZMMTcgMTYuMzRWMTYuMzVMMTMgMTIuMzVWMTIuMzRMMTEgMTAuMzRWMTAuMzVMOC42NiA4SDguNjZMMi4zOSAxLjczTDEuMTEgM0wzLjU2IDUuNDVMMi41IDZWOEg2LjExTDExIDEyLjg5VjE3SDEzVjE0Ljg5TDE3LjExIDE5SDIuNVYyMUgxOS4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyMS41IDIwLjg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhbmtPdXRsaW5lID0gXCJNNi41LDEwSDQuNVYxN0g2LjVWMTBNMTIuNSwxMEgxMC41VjE3SDEyLjVWMTBNMjEsMTlIMlYyMUgyMVYxOU0xOC41LDEwSDE2LjVWMTdIMTguNVYxME0xMS41LDMuMjZMMTYuNzEsNkg2LjI5TDExLjUsMy4yNk0xMS41LDFMMiw2VjhIMjFWNkwxMS41LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua1BsdXMgPSBcIk0xNywxNEgxOVYxN0gyMlYxOUgxOVYyMkgxN1YxOUgxNFYxN0gxN1YxNE0xMS41LDFMMjEsNlY4SDJWNkwxMS41LDFNMTYsMTBIMTlWMTIuMDhMMTgsMTJDMTcuMywxMiAxNi42MywxMi4xMiAxNiwxMi4zNFYxME0yLDIyVjE5SDEyLjA4QzEyLjI3LDIwLjE0IDEyLjc5LDIxLjE3IDEzLjUzLDIySDJNMTAsMTBIMTNWMTQuNjhDMTIuNTQsMTUuMzcgMTIuMjIsMTYuMTUgMTIuMDgsMTdIMTBWMTBNNCwxMEg3VjE3SDRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua1JlbW92ZSA9IFwiTTE0LjQ2LDE1Ljg4TDE1Ljg4LDE0LjQ2TDE4LDE2LjU5TDIwLjEyLDE0LjQ2TDIxLjU0LDE1Ljg4TDE5LjQxLDE4TDIxLjU0LDIwLjEyTDIwLjEyLDIxLjU0TDE4LDE5LjQxTDE1Ljg4LDIxLjU0TDE0LjQ2LDIwLjEyTDE2LjU5LDE4TDE0LjQ2LDE1Ljg4TTExLjUsMUwyMSw2VjhIMlY2TDExLjUsMU0xNiwxMEgxOVYxMi4wOEwxOCwxMkMxNy4zLDEyIDE2LjYzLDEyLjEyIDE2LDEyLjM0VjEwTTIsMjJWMTlIMTIuMDhDMTIuMjcsMjAuMTQgMTIuNzksMjEuMTcgMTMuNTMsMjJIMk0xMCwxMEgxM1YxNC42OEMxMi41NCwxNS4zNyAxMi4yMiwxNi4xNSAxMi4wOCwxN0gxMFYxME00LDEwSDdWMTdINFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYW5rVHJhbnNmZXIgPSBcIk0xNSwxNFYxMUgxOFY5TDIyLDEyLjVMMTgsMTZWMTRIMTVNMTQsNy43VjlIMlY3LjdMOCw0TDE0LDcuN003LDEwSDlWMTVIN1YxME0zLDEwSDVWMTVIM1YxME0xMywxMFYxMi41TDExLDE0LjNWMTBIMTNNOS4xLDE2TDguNSwxNi41TDEwLjIsMThIMlYxNkg5LjFNMTcsMTVWMThIMTRWMjBMMTAsMTYuNUwxNCwxM1YxNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYW5rVHJhbnNmZXJJbiA9IFwiTTIsMTVWMTJINVYxMEw5LDEzLjVMNSwxN1YxNUgyTTIyLDguN1YxMEgxMFY4LjdMMTYsNUwyMiw4LjdNMTAsMTdIMjJWMTlIMTBWMTdNMTUsMTFIMTdWMTZIMTVWMTFNMTEsMTFIMTNWMTZIMTFWMTFNMTksMTFIMjFWMTZIMTlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFua1RyYW5zZmVyT3V0ID0gXCJNMTUsMTVWMTJIMThWMTBMMjIsMTMuNUwxOCwxN1YxNUgxNU0xNCw4LjdWMTBIMlY4LjdMOCw1TDE0LDguN00yLDE3SDE0VjE5SDJWMTdNNywxMUg5VjE2SDdWMTFNMywxMUg1VjE2SDNWMTFNMTEsMTFIMTNWMTZIMTFWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFyY29kZSA9IFwiTTIsNkg0VjE4SDJWNk01LDZINlYxOEg1VjZNNyw2SDEwVjE4SDdWNk0xMSw2SDEyVjE4SDExVjZNMTQsNkgxNlYxOEgxNFY2TTE3LDZIMjBWMThIMTdWNk0yMSw2SDIyVjE4SDIxVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFyY29kZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE2IDE3Ljg5VjE4SDE0VjE1Ljg5TDEyIDEzLjg5VjE4SDExVjEyLjg5TDEwIDExLjg5VjE4SDdWOC44OUw2IDcuODlWMThINVY2Ljg5TDEuMTEgM0wyLjM5IDEuNzNMNyA2LjM0TDEwIDkuMzRMMTEgMTAuMzRMMTIgMTEuMzRMMTQgMTMuMzVWMTMuMzRMMTYgMTUuMzRWMTUuMzVMMTcgMTYuMzVWMTYuMzRMMTguNjYgMThIMTguNjVMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTYgNkgxNFYxMC44TDE2IDEyLjhWNk0xMiA2SDExVjcuOEwxMiA4LjhWNk0yMCA2SDE3VjEzLjhMMjAgMTYuOFY2TTIyIDE4VjZIMjFWMTcuOEwyMS4yIDE4SDIyTTEwIDZIOS4yTDEwIDYuOFY2TTIgMThINFY2SDJWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFyY29kZVNjYW4gPSBcIk00LDZINlYxOEg0VjZNNyw2SDhWMThIN1Y2TTksNkgxMlYxOEg5VjZNMTMsNkgxNFYxOEgxM1Y2TTE2LDZIMThWMThIMTZWNk0xOSw2SDIwVjE4SDE5VjZNMiw0VjhIMFY0QTIsMiAwIDAsMSAyLDJINlY0SDJNMjIsMkEyLDIgMCAwLDEgMjQsNFY4SDIyVjRIMThWMkgyMk0yLDE2VjIwSDZWMjJIMkEyLDIgMCAwLDEgMCwyMFYxNkgyTTIyLDIwVjE2SDI0VjIwQTIsMiAwIDAsMSAyMiwyMkgxOFYyMEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXJsZXkgPSBcIk03LjMzLDE4LjMzQzYuNSwxNy4xNyA2LjUsMTUuODMgNi41LDE0LjVDOC4xNywxNS41IDkuODMsMTYuNSAxMC42NywxNy42N0wxMSwxOC4yM1YxNS45NUM5LjUsMTUuMDUgOC4wOCwxNC4xMyA3LjMzLDEzLjA4QzYuNSwxMS45MiA2LjUsMTAuNTggNi41LDkuMjVDOC4xNywxMC4yNSA5LjgzLDExLjI1IDEwLjY3LDEyLjQyTDExLDEzVjEwLjdDOS41LDkuOCA4LjA4LDguODggNy4zMyw3LjgzQzYuNSw2LjY3IDYuNSw1LjMzIDYuNSw0QzguMTcsNSA5LjgzLDYgMTAuNjcsNy4xN0MxMC43Nyw3LjMxIDEwLjg2LDcuNDYgMTAuOTQsNy42MkMxMC43Nyw3IDEwLjY2LDYuNDIgMTAuNjUsNS44MkMxMC42NCw0LjMxIDExLjMsMi43NiAxMS45NiwxLjIxQzEyLjY1LDIuNjkgMTMuMzQsNC4xOCAxMy4zNSw1LjY5QzEzLjM2LDYuMzIgMTMuMjUsNi45NiAxMy4wNyw3LjU5QzEzLjE1LDcuNDUgMTMuMjMsNy4zMSAxMy4zMyw3LjE3QzE0LjE3LDYgMTUuODMsNSAxNy41LDRDMTcuNSw1LjMzIDE3LjUsNi42NyAxNi42Nyw3LjgzQzE1LjkyLDguODggMTQuNSw5LjggMTMsMTAuN1YxM0wxMy4zMywxMi40MkMxNC4xNywxMS4yNSAxNS44MywxMC4yNSAxNy41LDkuMjVDMTcuNSwxMC41OCAxNy41LDExLjkyIDE2LjY3LDEzLjA4QzE1LjkyLDE0LjEzIDE0LjUsMTUuMDUgMTMsMTUuOTVWMTguMjNMMTMuMzMsMTcuNjdDMTQuMTcsMTYuNSAxNS44MywxNS41IDE3LjUsMTQuNUMxNy41LDE1LjgzIDE3LjUsMTcuMTcgMTYuNjcsMTguMzNDMTUuOTIsMTkuMzggMTQuNSwyMC4zIDEzLDIxLjJWMjNIMTFWMjEuMkM5LjUsMjAuMyA4LjA4LDE5LjM4IDcuMzMsMTguMzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFybGV5T2ZmID0gXCJNMTEuOTYsMS4yMUMxMS4zLDIuNzYgMTAuNjQsNC4zMSAxMC42NSw1LjgyQzEwLjY2LDYuNDIgMTAuNzcsNyAxMC45NCw3LjYyQzEwLjg2LDcuNDYgMTAuNzcsNy4zMSAxMC42Nyw3LjE3QzkuODMsNiA4LjE3LDUgNi41LDRDNi41LDQuOCA2LjUsNS41OSA2LjY4LDYuMzZMMTMsMTIuNjhWMTAuN0MxNC41LDkuOCAxNS45Miw4Ljg4IDE2LjY3LDcuODNDMTcuNSw2LjY3IDE3LjUsNS4zMyAxNy41LDRDMTUuODMsNSAxNC4xNyw2IDEzLjMzLDcuMTdDMTMuMjMsNy4zMSAxMy4xNSw3LjQ1IDEzLjA3LDcuNTlDMTMuMjUsNi45NiAxMy4zNiw2LjMyIDEzLjM1LDUuNjlDMTMuMzQsNC4xOCAxMi42NSwyLjY5IDExLjk2LDEuMjFNMy4yOCw1LjVMMiw2Ljc3TDYuNjQsMTEuNDFDNi43NSwxMiA2Ljk1LDEyLjU1IDcuMzMsMTMuMDhDOC4wOCwxNC4xMyA5LjUsMTUuMDUgMTEsMTUuOTVWMTguMjNMMTAuNjcsMTcuNjdDOS44MywxNi41IDguMTcsMTUuNSA2LjUsMTQuNUM2LjUsMTUuODMgNi41LDE3LjE3IDcuMzMsMTguMzNDOC4wOCwxOS4zOCA5LjUsMjAuMyAxMSwyMS4yVjIzSDEzVjIxLjJDMTMuNzQsMjAuNzYgMTQuNDUsMjAuMzEgMTUuMDcsMTkuODRMMTguNzMsMjMuNUwyMCwyMi4yMkMxNCwxNi4yMyA5LjEsMTEuMzIgMy4yOCw1LjVNMTcuNSw5LjI1QzE1LjgzLDEwLjI1IDE0LjE3LDExLjI1IDEzLjMzLDEyLjQyTDEzLjEyLDEyLjc5TDE1LDE0LjY2QzE1LjY3LDE0LjE2IDE2LjI3LDEzLjY0IDE2LjY3LDEzLjA4QzE3LjUsMTEuOTIgMTcuNSwxMC41OCAxNy41LDkuMjVNMTcuNSwxNC41QzE2LjkzLDE0Ljg0IDE2LjM4LDE1LjE4IDE1Ljg1LDE1LjUzTDE3LjI5LDE2Ljk3QzE3LjUsMTYuMTcgMTcuNSwxNS4zMyAxNy41LDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFybiA9IFwiTTEyLDNMMyw4LjJWMjFIOUwxMS45LDE4TDE1LDIxSDIxVjguMkwxMiwzTTcuOSwyMFYxNEwxMC45LDE3TDcuOSwyME04LjksMTNIMTQuOUwxMS45LDE2TDguOSwxM00xNS45LDIwTDEyLjksMTdMMTUuOSwxNFYyME0xNSwxMUg4LjhWOUgxNVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXJyZWwgPSBcIk0xOCwxOUgxOVYyMUg1VjE5SDZWMTNINVYxMUg2VjVINVYzSDE5VjVIMThWMTFIMTlWMTNIMThWMTlNOSwxM0EzLDMgMCAwLDAgMTIsMTZBMywzIDAgMCwwIDE1LDEzQzE1LDExIDEyLDcuNjMgMTIsNy42M0MxMiw3LjYzIDksMTEgOSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNlYmFsbCA9IFwiTTEyLDJDOS41LDIgNy4yNSwyLjkgNS41LDQuNEM2LDQuODEgNi40MSw1LjI3IDYuOCw1Ljc2TDcuODksNS4xM0w4Ljg5LDYuODdMNy44OSw3LjQ0QzguNDUsOC41MyA4LjgyLDkuNzMgOC45NSwxMUgxMFYxMkwxMCwxM0g4Ljk1QzguODIsMTQuMjcgOC40NSwxNS40NyA3Ljg5LDE2LjU2TDguODksMTcuMTNMNy44OSwxOC44N0w2LjgsMTguMjRDNi40MSwxOC43MyA2LDE5LjE5IDUuNSwxOS42QzcuMjUsMjEuMSA5LjUsMjIgMTIsMjJDMTQuNSwyMiAxNi43NSwyMS4xIDE4LjUsMTkuNkMxOCwxOS4xOSAxNy41OSwxOC43MyAxNy4xOSwxOC4yNEwxNi4xMSwxOC44N0wxNS4xMSwxNy4xM0wxNi4xMSwxNi41NUMxNS41NSwxNS40NyAxNS4xOCwxNC4yNyAxNS4wNSwxM0gxNFYxMUgxNS4wNUMxNS4xOCw5LjczIDE1LjU1LDguNTMgMTYuMTEsNy40NUwxNS4xMSw2Ljg3TDE2LjExLDUuMTNMMTcuMTksNS43NkMxNy41OSw1LjI3IDE4LDQuODEgMTguNSw0LjRDMTYuNzUsMi45IDE0LjUsMiAxMiwyTTQuMTIsNS44NUMyLjc5LDcuNTUgMiw5LjY4IDIsMTJDMiwxNC4zMiAyLjc5LDE2LjQ1IDQuMTIsMTguMTVDNC40NiwxNy44NyA0Ljc2LDE3LjU1IDUuMDUsMTcuMjJMNC40MywxNi44N0w1LjQzLDE1LjEzTDYuMTYsMTUuNTZDNi41NSwxNC43NyA2LjgyLDEzLjkxIDYuOTMsMTNINlYxMkw2LDExSDYuOTNDNi44MiwxMC4wOSA2LjU1LDkuMjMgNi4xNiw4LjQ0TDUuNDMsOC44N0w0LjQzLDcuMTNMNS4wNSw2Ljc4QzQuNzYsNi40NSA0LjQ2LDYuMTMgNC4xMiw1Ljg1TTE5Ljg4LDUuODVDMTkuNTQsNi4xMyAxOS4yNCw2LjQ1IDE4Ljk1LDYuNzhMMTkuNTcsNy4xM0wxOC41Nyw4Ljg3TDE3Ljg0LDguNDRDMTcuNDUsOS4yMyAxNy4xOCwxMC4wOSAxNy4wNywxMUgxOFYxM0gxNy4wN0MxNy4xOCwxMy45MSAxNy40NSwxNC43NyAxNy44NCwxNS41NkwxOC41NywxNS4xM0wxOS41NywxNi44N0wxOC45NSwxNy4yMkMxOS4yNCwxNy41NSAxOS41NCwxNy44NyAxOS44OCwxOC4xNUMyMS4yMSwxNi40NSAyMiwxNC4zMiAyMiwxMkMyMiw5LjY4IDIxLjIxLDcuNTUgMTkuODgsNS44NVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNlYmFsbEJhdCA9IFwiTTIwLDJDMTkuNzIsMiAxOS41LDIuMTEgMTkuMjksMi4yOUw5Ljc5LDExLjc5QzkuNzUsMTEuODMgOS43MiwxMS44NyA3LjIzLDE1LjM1TDQsMTguNTlMMy43MSwxOC4yOUMzLjUsMTguMSAzLjI2LDE4IDMsMThDMi40NCwxOCAyLDE4LjQ0IDIsMTlDMiwxOS4yNiAyLjEsMTkuNSAyLjI5LDE5LjcxTDQuMjksMjEuNzFDNC42OCwyMi4xMSA1LjMxLDIyLjEyIDUuNzEsMjEuNzRDNi4xMSwyMS4zNSA2LjEyLDIwLjcyIDUuNzEsMjAuMjlMNS40MSwyMEw4LjY0LDE2Ljc3TDEyLjIxLDE0LjIxTDIxLjcxLDQuNzFDMjIuMSw0LjMyIDIyLjEsMy42OCAyMS43MSwzLjI5TDIwLjcxLDIuMjlDMjAuNSwyLjEgMjAuMjYsMiAyMCwyTTE4LjUsMTNBMi41LDIuNSAwIDAsMCAxNiwxNS41QTIuNSwyLjUgMCAwLDAgMTguNSwxOEEyLjUsMi41IDAgMCwwIDIxLDE1LjVBMi41LDIuNSAwIDAsMCAxOC41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2ViYWxsRGlhbW9uZCA9IFwiTTUuNzkgMTIuNzlMMiA5QzIgOSA2IDMgMTIgM1MyMiA5IDIyIDlMMTguMjEgMTIuNzlMMTIgNi41OUw1Ljc5IDEyLjc5TTEzLjUgMThIMTAuNVYyMEwxMiAyMUwxMy41IDIwVjE4TTE2Ljc5IDE0LjIxTDE0LjIgMTYuOEMxMy42IDE2LjMxIDEyLjg0IDE2IDEyIDE2UzEwLjQgMTYuMzEgOS44IDE2LjhMNy4yMSAxNC4yMUwxMiA5LjQxTDE2Ljc5IDE0LjIxTTEzIDE0QzEzIDEzLjQ1IDEyLjU1IDEzIDEyIDEzUzExIDEzLjQ1IDExIDE0IDExLjQ1IDE1IDEyIDE1IDEzIDE0LjU1IDEzIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2ViYWxsRGlhbW9uZE91dGxpbmUgPSBcIk0xMiAyQzUgMiAxIDkgMSA5TDkuMyAxNy4zQzkuNzQgMTYuNzcgMTAuMzIgMTYuMzcgMTEgMTYuMTdMNy44MyAxM0wxMiA4LjgzTDE2LjE3IDEzTDEzIDE2LjE3QzEzLjY4IDE2LjM3IDE0LjI3IDE2Ljc3IDE0LjcgMTcuM0wyMyA5QzIzIDkgMTkgMiAxMiAyTTE3LjU5IDExLjU5TDEyIDZMNi40MSAxMS41OUwzLjU5IDguNzZDNC45NSA3IDcuODkgNCAxMiA0QzE2LjA4IDQgMTkuMDMgNyAyMC40IDguNzdMMTcuNTkgMTEuNTlNMTMgMTNDMTMgMTMuNTUgMTIuNTUgMTQgMTIgMTRTMTEgMTMuNTUgMTEgMTMgMTEuNDUgMTIgMTIgMTIgMTMgMTIuNDUgMTMgMTNNMTMuNSAyMEwxMiAyMUwxMC41IDIwVjE4SDEzLjVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFzaCA9IFwiTTUgOUg3LjMxTDcuNjMgNkg5LjYzTDkuMzEgOUgxMS4zMUwxMS42MyA2SDEzLjYzTDEzLjMxIDlIMTVWMTFIMTMuMUwxMi45IDEzSDE1VjE1SDEyLjY5TDEyLjM3IDE4SDEwLjM3TDEwLjY5IDE1SDguNjlMOC4zNyAxOEg2LjM3TDYuNjkgMTVINVYxM0g2LjlMNy4xIDExSDVWOU05LjEgMTFMOC45IDEzSDEwLjlMMTEuMSAxMU0xOSA2SDE3VjE0SDE5TTE5IDE2SDE3VjE4SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2tldCA9IFwiTTUuNSwyMUM0LjcyLDIxIDQuMDQsMjAuNTUgMy43MSwxOS45VjE5LjlMMS4xLDEwLjQ0TDEsMTBBMSwxIDAgMCwxIDIsOUg2LjU4TDExLjE4LDIuNDNDMTEuMzYsMi4xNyAxMS42NiwyIDEyLDJDMTIuMzQsMiAxMi42NSwyLjE3IDEyLjgzLDIuNDRMMTcuNDIsOUgyMkExLDEgMCAwLDEgMjMsMTBMMjIuOTYsMTAuMjlMMjAuMjksMTkuOUMxOS45NiwyMC41NSAxOS4yOCwyMSAxOC41LDIxSDUuNU0xMiw0Ljc0TDksOUgxNUwxMiw0Ljc0TTEyLDEzQTIsMiAwIDAsMCAxMCwxNUEyLDIgMCAwLDAgMTIsMTdBMiwyIDAgMCwwIDE0LDE1QTIsMiAwIDAsMCAxMiwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRGaWxsID0gXCJNMywySDZWNUgzVjJNNiw3SDlWMTBINlY3TTgsMkgxMVY1SDhWMk0xNywxMUwxMiw2SDE1VjJIMTlWNkgyMkwxNywxMU03LjUsMjJDNi43MiwyMiA2LjA0LDIxLjU1IDUuNzEsMjAuOVYyMC45TDMuMSwxMy40NEwzLDEzQTEsMSAwIDAsMSA0LDEySDIwQTEsMSAwIDAsMSAyMSwxM0wyMC45NiwxMy4yOUwxOC4yOSwyMC45QzE3Ljk2LDIxLjU1IDE3LjI4LDIyIDE2LjUsMjJINy41TTcuNjEsMjBIMTYuMzlMMTguNTcsMTRINS40Mkw3LjYxLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2tldE1pbnVzID0gXCJNMjMgMThWMjBIMTVWMThIMjNNMjMgMTBMMjIuOTYgMTAuMjlMMjIgMTMuOEMyMS4xMSAxMy4yOSAyMC4wOSAxMyAxOSAxM0MxNS42OSAxMyAxMyAxNS42OSAxMyAxOUMxMyAxOS43IDEzLjEzIDIwLjM3IDEzLjM1IDIxSDUuNUM0LjcyIDIxIDQuMDQgMjAuNTUgMy43MSAxOS45TDEuMSAxMC40NEwxIDEwQzEgOS40NSAxLjQ1IDkgMiA5SDYuNThMMTEuMTggMi40M0MxMS4zNiAyLjE3IDExLjY2IDIgMTIgMlMxMi42NSAyLjE3IDEyLjgzIDIuNDRMMTcuNDIgOUgyMkMyMi41NSA5IDIzIDkuNDUgMjMgMTBNMTQgMTVDMTQgMTMuOSAxMy4xMSAxMyAxMiAxM1MxMCAxMy45IDEwIDE1IDEwLjkgMTcgMTIgMTcgMTQgMTYuMTEgMTQgMTVNMTUgOUwxMiA0Ljc0TDkgOUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRNaW51c091dGxpbmUgPSBcIk0yMyAxOFYyMEgxNVYxOEgyM00xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNNMTMuMzUgMjFINS41QzQuNTggMjEgMy44MSAyMC4zOCAzLjU4IDE5LjU0TDEuMDQgMTAuMjdDMSAxMC4xOCAxIDEwLjA5IDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi43OUwxMS4xNyAyLjQ1QzExLjM2IDIuMTYgMTEuNjggMiAxMiAyUzEyLjY0IDIuMTYgMTIuODMgMi40NEwxNy4yMSA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxMEwyMi45NyAxMC4yN0wyMiAxMy44MUMyMS40MyAxMy41IDIwLjc5IDEzLjI0IDIwLjEyIDEzLjExTDIwLjcgMTFIMy4zMUw1LjUgMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMU05LjIgOUgxNC44TDEyIDQuOEw5LjIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRPZmYgPSBcIk0yMyAxMEwyMi45NiAxMC4yOUwyMC45IDE3LjdMMTIuMiA5SDE1TDEyIDQuNzRMMTAuMzIgNy4xMkw4Ljg5IDUuNjlMMTEuMTggMi40M0MxMS4zNiAyLjE3IDExLjY2IDIgMTIgMlMxMi42NSAyLjE3IDEyLjgzIDIuNDRMMTcuNDIgOUgyMkMyMi41NSA5IDIzIDkuNDUgMjMgMTBNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuMDMgMjAuOTJDMTguODYgMjAuOTcgMTguNjggMjEgMTguNSAyMUg1LjVDNC43MiAyMSA0LjA0IDIwLjU1IDMuNzEgMTkuOUwxLjEgMTAuNDRMMSAxMEMxIDkuNDUgMS40NSA5IDIgOUg2LjU4TDYuOCA4LjY5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNMTMuODUgMTUuNzRMMTEuMjYgMTMuMTVDMTAuNSAxMy40NCAxMCAxNC4xNiAxMCAxNUMxMCAxNi4xMSAxMC45IDE3IDEyIDE3QzEyLjg0IDE3IDEzLjU2IDE2LjUgMTMuODUgMTUuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0T2ZmT3V0bGluZSA9IFwiTTIuMzkgMS43M0wxLjExIDNMNi45MiA4LjgxTDYuNzkgOUgyQzEuNDUgOSAxIDkuNDUgMSAxMEMxIDEwLjA5IDEgMTAuMTggMS4wNCAxMC4yN0wzLjU4IDE5LjU0QzMuODEgMjAuMzggNC41OCAyMSA1LjUgMjFIMTguNUMxOC42OCAyMSAxOC44NiAyMC45NiAxOS4wMyAyMC45MkwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNNS41IDE5TDMuMzEgMTFIOS4xMUwxMS4yNiAxMy4xNUMxMC41IDEzLjQ0IDEwIDE0LjE2IDEwIDE1QzEwIDE2LjEgMTAuOSAxNyAxMiAxN0MxMi44NCAxNyAxMy41NiAxNi41IDEzLjg1IDE1Ljc0TDE3LjExIDE5SDUuNU0yMyAxMEwyMi45NyAxMC4yN0wyMC45MyAxNy43M0wxOS4zIDE2LjFMMjAuNyAxMUgxNC4yTDEyLjIgOUgxNC44TDEyIDQuOEwxMC40IDcuMkw4Ljk2IDUuNzZMMTEuMTcgMi40NUMxMS4zNiAyLjE2IDExLjY4IDIgMTIgMlMxMi42NCAyLjE2IDEyLjgzIDIuNDRMMTcuMjEgOUgyMkMyMi41NSA5IDIzIDkuNDUgMjMgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0T3V0bGluZSA9IFwiTTIyIDlIMTcuMjFMMTIuODMgMi40NEMxMi42NCAyLjE2IDEyLjMyIDIgMTIgMlMxMS4zNiAyLjE2IDExLjE3IDIuNDVMNi43OSA5SDJDMS40NSA5IDEgOS40NSAxIDEwQzEgMTAuMDkgMSAxMC4xOCAxLjA0IDEwLjI3TDMuNTggMTkuNTRDMy44MSAyMC4zOCA0LjU4IDIxIDUuNSAyMUgxOC41QzE5LjQyIDIxIDIwLjE5IDIwLjM4IDIwLjQzIDE5LjU0TDIyLjk3IDEwLjI3TDIzIDEwQzIzIDkuNDUgMjIuNTUgOSAyMiA5TTEyIDQuOEwxNC44IDlIOS4yTDEyIDQuOE0xOC41IDE5TDUuNSAxOUwzLjMxIDExSDIwLjdMMTguNSAxOU0xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0UGx1cyA9IFwiTTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1SDIwTTIzIDEwTDIyLjk2IDEwLjI5TDIyIDEzLjhDMjEuMTEgMTMuMjkgMjAuMDkgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMUg1LjVDNC43MiAyMSA0LjA0IDIwLjU1IDMuNzEgMTkuOUwxLjEgMTAuNDRMMSAxMEMxIDkuNDUgMS40NSA5IDIgOUg2LjU4TDExLjE4IDIuNDNDMTEuMzYgMi4xNyAxMS42NiAyIDEyIDJTMTIuNjUgMi4xNyAxMi44MyAyLjQ0TDE3LjQyIDlIMjJDMjIuNTUgOSAyMyA5LjQ1IDIzIDEwTTE0IDE1QzE0IDEzLjkgMTMuMTEgMTMgMTIgMTNTMTAgMTMuOSAxMCAxNSAxMC45IDE3IDEyIDE3IDE0IDE2LjExIDE0IDE1TTE1IDlMMTIgNC43NEw5IDlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0UGx1c091dGxpbmUgPSBcIk0yMCAxNVYxOEgyM1YyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNUgyME0xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNNMTMuMzUgMjFINS41QzQuNTggMjEgMy44MSAyMC4zOCAzLjU4IDE5LjU0TDEuMDQgMTAuMjdDMSAxMC4xOCAxIDEwLjA5IDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi43OUwxMS4xNyAyLjQ1QzExLjM2IDIuMTYgMTEuNjggMiAxMiAyUzEyLjY0IDIuMTYgMTIuODMgMi40NEwxNy4yMSA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxMEwyMi45NyAxMC4yN0wyMiAxMy44MUMyMS40MyAxMy41IDIwLjc5IDEzLjI0IDIwLjEyIDEzLjExTDIwLjcgMTFIMy4zMUw1LjUgMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMU05LjIgOUgxNC44TDEyIDQuOEw5LjIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRSZW1vdmUgPSBcIk0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NyAyMS4xMkwxNy41OSAxOUwxNS40NyAxNi44OEwxNi44OCAxNS40N0wxOSAxNy41OUwyMS4xMiAxNS40NkwyMi41NCAxNi44OE0yMyAxMEwyMi45NiAxMC4yOUwyMiAxMy44QzIxLjExIDEzLjI5IDIwLjA5IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5QzEzIDE5LjcgMTMuMTMgMjAuMzcgMTMuMzUgMjFINS41QzQuNzIgMjEgNC4wNCAyMC41NSAzLjcxIDE5LjlMMS4xIDEwLjQ0TDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi41OEwxMS4xOCAyLjQzQzExLjM2IDIuMTcgMTEuNjYgMiAxMiAyUzEyLjY1IDIuMTcgMTIuODMgMi40NEwxNy40MiA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxME0xNCAxNUMxNCAxMy45IDEzLjExIDEzIDEyIDEzUzEwIDEzLjkgMTAgMTUgMTAuOSAxNyAxMiAxNyAxNCAxNi4xMSAxNCAxNU0xNSA5TDEyIDQuNzRMOSA5SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhc2tldFJlbW92ZU91dGxpbmUgPSBcIk0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NyAyMS4xMkwxNy41OSAxOUwxNS40NyAxNi44OEwxNi44OCAxNS40N0wxOSAxNy41OUwyMS4xMiAxNS40NkwyMi41NCAxNi44OE0xMiAxM0MxMC45IDEzIDEwIDEzLjkgMTAgMTVTMTAuOSAxNyAxMiAxNyAxNCAxNi4xIDE0IDE1IDEzLjEgMTMgMTIgMTNNMTMuMzUgMjFINS41QzQuNTggMjEgMy44MSAyMC4zOCAzLjU4IDE5LjU0TDEuMDQgMTAuMjdDMSAxMC4xOCAxIDEwLjA5IDEgMTBDMSA5LjQ1IDEuNDUgOSAyIDlINi43OUwxMS4xNyAyLjQ1QzExLjM2IDIuMTYgMTEuNjggMiAxMiAyUzEyLjY0IDIuMTYgMTIuODMgMi40NEwxNy4yMSA5SDIyQzIyLjU1IDkgMjMgOS40NSAyMyAxMEwyMi45NyAxMC4yN0wyMiAxMy44MUMyMS40MyAxMy41IDIwLjc5IDEzLjI0IDIwLjEyIDEzLjExTDIwLjcgMTFIMy4zMUw1LjUgMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMU05LjIgOUgxNC44TDEyIDQuOEw5LjIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRVbmZpbGwgPSBcIk0zLDEwSDZWN0gzVjEwTTUsNUg4VjJINVY1TTgsMTBIMTFWN0g4VjEwTTE3LDFMMTIsNkgxNVYxMEgxOVY2SDIyTDE3LDFNNy41LDIyQzYuNzIsMjIgNi4wNCwyMS41NSA1LjcxLDIwLjlWMjAuOUwzLjEsMTMuNDRMMywxM0ExLDEgMCAwLDEgNCwxMkgyMEExLDEgMCAwLDEgMjEsMTNMMjAuOTYsMTMuMjlMMTguMjksMjAuOUMxNy45NiwyMS41NSAxNy4yOCwyMiAxNi41LDIySDcuNU03LjYxLDIwSDE2LjM5TDE4LjU3LDE0SDUuNDJMNy42MSwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXNrZXRiYWxsID0gXCJNMi4zNCwxNC42M0MyLjk0LDE0LjQxIDMuNTYsMTQuMyA0LjIyLDE0LjNDNS41NiwxNC4zIDYuNzMsMTQuNzIgNy43MywxNS41Nkw0LjU5LDE4LjdDMy41MywxNy41IDIuNzgsMTYuMTMgMi4zNCwxNC42M00xNS41Niw5LjhDMTcuNTMsMTEuMjcgMTkuNjYsMTEuNjMgMjEuOTQsMTAuODhDMjEuOTcsMTEuMDkgMjIsMTEuNDcgMjIsMTJDMjIsMTMuMDMgMjEuNzUsMTQuMTggMjEuMjgsMTUuNDVDMjAuODEsMTYuNzEgMjAuMjMsMTcuNzMgMTkuNTUsMTguNUwxMy4yMiwxMi4xOUwxNS41Niw5LjhNOC43NywxNi42NEM5LjgzLDE4LjE3IDEwLjA1LDE5Ljg0IDkuNDIsMjEuNjZDOCwyMS4yNSA2LjczLDIwLjYxIDUuNjcsMTkuNzNMOC43NywxNi42NE0xMi4xOSwxMy4yMkwxOC41LDE5LjU1QzE2LjMzLDIxLjQ1IDEzLjc4LDIyLjI1IDEwLjg4LDIxLjk0QzExLjA5LDIxLjI4IDExLjIsMjAuNTYgMTEuMiwxOS43OEMxMS4yLDE5LjE2IDExLjA2LDE4LjQzIDEwLjc4LDE3LjZDMTAuNSwxNi43NyAxMC4xNywxNi4wOSA5LjgsMTUuNTZMMTIuMTksMTMuMjJNOC44MSwxNC41QzcuODgsMTMuNjcgNi44LDEzLjE1IDUuNTgsMTIuOTFDNC4zNiwxMi42OCAzLjE5LDEyLjc1IDIuMDYsMTMuMTNDMi4wMywxMi45MSAyLDEyLjUzIDIsMTJDMiwxMC45NyAyLjI1LDkuODIgMi43Miw4LjU1QzMuMTksNy4yOSAzLjc3LDYuMjcgNC40NSw1LjVMMTEuMTEsMTIuMTlMOC44MSwxNC41TTE1LjU2LDcuNzNDMTQuMjIsNi4wOCAxMy45MSw0LjI4IDE0LjYzLDIuMzRDMTUuMjUsMi41IDE1Ljk2LDIuOCAxNi43NiwzLjI2QzE3LjU1LDMuNzEgMTguMiw0LjE2IDE4LjcsNC41OUwxNS41Niw3LjczTTIxLjY2LDkuMzhDMjEuMDYsOS41OSAyMC40NCw5LjcgMTkuNzgsOS43QzE4LjY5LDkuNyAxNy42NCw5LjM4IDE2LjY0LDguNzJMMTkuNzMsNS42N0MyMC42MSw2Ljc3IDIxLjI1LDggMjEuNjYsOS4zOE0xMi4xOSwxMS4xMUw1LjUsNC40NUM3LjY3LDIuNTUgMTAuMjIsMS43NSAxMy4xMywyLjA2QzEyLjkxLDIuNzIgMTIuOCwzLjQ0IDEyLjgsNC4yMkMxMi44LDQuOTQgMTIuOTYsNS43NSAxMy4yOSw2LjY2QzEzLjYyLDcuNTYgMTQsOC4yOCAxNC41LDguODFMMTIuMTksMTEuMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0YmFsbEhvb3AgPSBcIk0yMSwySDNBMiwyIDAgMCwwIDEsNFYxNkEyLDIgMCAwLDAgMywxOEg1VjE0SDE5VjE4SDIxQTIsMiAwIDAsMCAyMywxNlY0QTIsMiAwIDAsMCAyMSwyTTE3LDEySDE1VjlIOVYxMkg3VjlBMiwyIDAgMCwxIDksN0gxNUEyLDIgMCAwLDEgMTcsOVYxMk03LDE2VjE5LjVMOCwyM0wxMCwyMUwxMiwyM0wxNCwyMUwxNiwyM0wxNywxOS41VjE2SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmFza2V0YmFsbEhvb3BPdXRsaW5lID0gXCJNMjEsMkgzQTIsMiAwIDAsMCAxLDRWMTZBMiwyIDAgMCwwIDMsMThINi41N0w4LDIzTDEwLDIxTDEyLDIzTDE0LDIxTDE2LDIzTDE3LjQzLDE4SDIxQTIsMiAwIDAsMCAyMywxNlY0QTIsMiAwIDAsMCAyMSwyTTIxLDE2SDE4VjE0SDE3VjlBMiwyIDAgMCwwIDE1LDdIOUEyLDIgMCAwLDAgNyw5VjE0SDZWMTZIM1Y0SDIxVjE2TTksMTRWOUgxNVYxNEg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdCA9IFwiTTAuNzUsOEMwLjc1LDggNSw3IDgsOUM4LDkgOC41LDEyLjc1IDEwLjUsMTIuNzVWMTFDMTAuNSwxMSAxMSwxMiAxMiwxMkMxMywxMiAxMy41LDExIDEzLjUsMTFWMTIuNzVDMTUuNSwxMi43NSAxNiw5IDE2LDlDMTksNyAyMy4yNSw4IDIzLjI1LDhDMjEuMjUsOSAyMSwxMi41IDIxLDEyLjVDMTcsMTIuNSAxNywxNS43NSAxNywxNS43NUMxMiwxNC43NSAxMiwxOC41IDEyLDE4LjVDMTIsMTguNSAxMiwxNC43NSA3LDE1Ljc1QzcsMTUuNzUgNywxMi41IDMsMTIuNUMzLDEyLjUgMi43NSw5IDAuNzUsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5ID0gXCJNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5MTAgPSBcIk0xNiwxOEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5MTBCbHVldG9vdGggPSBcIk01LDJWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0SDExVjJINU00LDZIMTJWMThINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnkyMCA9IFwiTTE2LDE3SDhWNkgxNk0xNi42Nyw0SDE1VjJIOVY0SDcuMzNBMS4zMywxLjMzIDAgMCwwIDYsNS4zM1YyMC42N0M2LDIxLjQgNi42LDIyIDcuMzMsMjJIMTYuNjdBMS4zMywxLjMzIDAgMCwwIDE4LDIwLjY3VjUuMzNDMTgsNC42IDE3LjQsNCAxNi42Nyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnkyMEJsdWV0b290aCA9IFwiTTUsMlY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42N0MyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwwIDEyLjY3LDRIMTFWMkg1TTQsNkgxMlYxN0g0VjZNMTksOFYxMS43OUwxNi43MSw5LjVMMTYsMTAuMjFMMTguNzksMTNMMTYsMTUuNzlMMTYuNzEsMTYuNUwxOSwxNC4yMVYxOEgxOS41TDIyLjM1LDE1LjE0TDIwLjIxLDEzTDIyLjM1LDEwLjg1TDE5LjUsOEgxOU0yMCw5LjkxTDIwLjk0LDEwLjg1TDIwLDExLjc5VjkuOTFNMjAsMTQuMjFMMjAuOTQsMTUuMTRMMjAsMTYuMDhWMTQuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTMwID0gXCJNMTYsMTVIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTMwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjE1SDRWNk0xOSw4VjExLjc5TDE2LjcxLDkuNUwxNiwxMC4yMUwxOC43OSwxM0wxNiwxNS43OUwxNi43MSwxNi41TDE5LDE0LjIxVjE4SDE5LjVMMjIuMzUsMTUuMTRMMjAuMjEsMTNMMjIuMzUsMTAuODVMMTkuNSw4SDE5TTIwLDkuOTFMMjAuOTQsMTAuODVMMjAsMTEuNzlWOS45MU0yMCwxNC4yMUwyMC45NCwxNS4xNEwyMCwxNi4wOFYxNC4yMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NDAgPSBcIk0xNiwxNEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NDBCbHVldG9vdGggPSBcIk01LDJWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0SDExVjJINU00LDZIMTJWMTRINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk1MCA9IFwiTTE2LDEzSDhWNkgxNk0xNi42Nyw0SDE1VjJIOVY0SDcuMzNBMS4zMywxLjMzIDAgMCwwIDYsNS4zM1YyMC42N0M2LDIxLjQgNi42LDIyIDcuMzMsMjJIMTYuNjdBMS4zMywxLjMzIDAgMCwwIDE4LDIwLjY3VjUuMzNDMTgsNC42IDE3LjQsNCAxNi42Nyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk1MEJsdWV0b290aCA9IFwiTTUsMlY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42N0MyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwwIDEyLjY3LDRIMTFWMkg1TTQsNkgxMlYxM0g0VjZNMTksOFYxMS43OUwxNi43MSw5LjVMMTYsMTAuMjFMMTguNzksMTNMMTYsMTUuNzlMMTYuNzEsMTYuNUwxOSwxNC4yMVYxOEgxOS41TDIyLjM1LDE1LjE0TDIwLjIxLDEzTDIyLjM1LDEwLjg1TDE5LjUsOEgxOU0yMCw5LjkxTDIwLjk0LDEwLjg1TDIwLDExLjc5VjkuOTFNMjAsMTQuMjFMMjAuOTQsMTUuMTRMMjAsMTYuMDhWMTQuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTYwID0gXCJNMTYsMTJIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTYwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjEySDRWNk0xOSw4VjExLjc5TDE2LjcxLDkuNUwxNiwxMC4yMUwxOC43OSwxM0wxNiwxNS43OUwxNi43MSwxNi41TDE5LDE0LjIxVjE4SDE5LjVMMjIuMzUsMTUuMTRMMjAuMjEsMTNMMjIuMzUsMTAuODVMMTkuNSw4SDE5TTIwLDkuOTFMMjAuOTQsMTAuODVMMjAsMTEuNzlWOS45MU0yMCwxNC4yMUwyMC45NCwxNS4xNEwyMCwxNi4wOFYxNC4yMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NzAgPSBcIk0xNiwxMEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5NzBCbHVldG9vdGggPSBcIk01LDJWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0SDExVjJINU00LDZIMTJWMTBINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk4MCA9IFwiTTE2LDlIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTgwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjlINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnk5MCA9IFwiTTE2LDhIOFY2SDE2TTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY3QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42N0ExLjMzLDEuMzMgMCAwLDAgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeTkwQmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNNCw2SDEyVjhINFY2TTE5LDhWMTEuNzlMMTYuNzEsOS41TDE2LDEwLjIxTDE4Ljc5LDEzTDE2LDE1Ljc5TDE2LjcxLDE2LjVMMTksMTQuMjFWMThIMTkuNUwyMi4zNSwxNS4xNEwyMC4yMSwxM0wyMi4zNSwxMC44NUwxOS41LDhIMTlNMjAsOS45MUwyMC45NCwxMC44NUwyMCwxMS43OVY5LjkxTTIwLDE0LjIxTDIwLjk0LDE1LjE0TDIwLDE2LjA4VjE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlBbGVydCA9IFwiTTEzIDE0SDExVjhIMTNNMTMgMThIMTFWMTZIMTNNMTYuNyA0SDE1VjJIOVY0SDcuM0M2LjYgNCA2IDQuNiA2IDUuM1YyMC42QzYgMjEuNCA2LjYgMjIgNy4zIDIySDE2LjZDMTcuMyAyMiAxNy45IDIxLjQgMTcuOSAyMC43VjUuM0MxOCA0LjYgMTcuNCA0IDE2LjcgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5QWxlcnRCbHVldG9vdGggPSBcIk01IDJWNEgzLjNDMi42IDQgMiA0LjYgMiA1LjNWMjAuNkMyIDIxLjQgMi42IDIyIDMuMyAyMkgxMi42QzEzLjMgMjIgMTMuOSAyMS40IDEzLjkgMjAuN1Y1LjNDMTQgNC42IDEzLjQgNCAxMi43IDRIMTFWMkg1TTE5IDhWMTEuOEwxNi43IDkuNUwxNiAxMC4yTDE4LjggMTNMMTYgMTUuOEwxNi43IDE2LjVMMTkgMTQuMlYxOEgxOS41TDIyLjQgMTUuMUwyMC4yIDEzTDIyLjMgMTAuOUwxOS41IDhIMTlNNyA4SDlWMTRIN00yMCA5LjlMMjAuOSAxMC44TDIwIDExLjhWOS45TTIwIDE0LjJMMjAuOSAxNS4xTDIwIDE2LjFWMTQuMk03IDE2SDlWMThIN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5QWxlcnRWYXJpYW50ID0gXCJNMTQuNjcgNEgxM1YySDdWNEg1LjMzQzQuNiA0IDQgNC42IDQgNS4zM1YyMC42N0M0IDIxLjQgNC42IDIyIDUuMzMgMjJIMTQuNjdDMTUuNCAyMiAxNiAyMS40IDE2IDIwLjY3VjUuMzNDMTYgNC42IDE1LjQgNCAxNC42NyA0TTIxIDEzSDE5VjdIMjFWMTNNMjEgMTdIMTlWMTVIMjFWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUFsZXJ0VmFyaWFudE91dGxpbmUgPSBcIk0xNCAyMEg2VjZIMTRNMTQuNjcgNEgxM1YySDdWNEg1LjMzQzQuNiA0IDQgNC42IDQgNS4zM1YyMC42N0M0IDIxLjQgNC42IDIyIDUuMzMgMjJIMTQuNjdDMTUuNCAyMiAxNiAyMS40IDE2IDIwLjY3VjUuMzNDMTYgNC42IDE1LjQgNCAxNC42NyA0TTIxIDdIMTlWMTNIMjFWOE0yMSAxNUgxOVYxN0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Qmx1ZXRvb3RoID0gXCJNNSwyVjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNEgxMVYySDVNMTksOFYxMS43OUwxNi43MSw5LjVMMTYsMTAuMjFMMTguNzksMTNMMTYsMTUuNzlMMTYuNzEsMTYuNUwxOSwxNC4yMVYxOEgxOS41TDIyLjM1LDE1LjE0TDIwLjIxLDEzTDIyLjM1LDEwLjg1TDE5LjUsOEgxOU0yMCw5LjkxTDIwLjk0LDEwLjg1TDIwLDExLjc5VjkuOTFNMjAsMTQuMjFMMjAuOTQsMTUuMTRMMjAsMTYuMDhWMTQuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUJsdWV0b290aFZhcmlhbnQgPSBcIk05LDJWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNEgxNVYySDlNMTEuODMsOEgxMi4zM0wxNS4xOCwxMC44NUwxMy4wNCwxM0wxNS4xNywxNS4xNEwxMi4zMywxOEgxMS44M1YxNC4yMUw5LjU0LDE2LjVMOC44MywxNS43OUwxMS42MiwxM0w4LjgzLDEwLjIxTDkuNTQsOS41TDExLjgzLDExLjc5VjhNMTIuODMsOS45MVYxMS43OUwxMy43NywxMC44NUwxMi44Myw5LjkxTTEyLjgzLDE0LjIxVjE2LjA4TDEzLjc3LDE1LjE0TDEyLjgzLDE0LjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZyA9IFwiTTE2LjY3LDRIMTVWMkg5VjRINy4zM0ExLjMzLDEuMzMgMCAwLDAgNiw1LjMzVjIwLjY2QzYsMjEuNCA2LjYsMjIgNy4zMywyMkgxNi42NkMxNy40LDIyIDE4LDIxLjQgMTgsMjAuNjdWNS4zM0MxOCw0LjYgMTcuNCw0IDE2LjY3LDRNMTEsMjBWMTQuNUg5TDEzLDdWMTIuNUgxNVwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzEwID0gXCJNMjMuMDUsMTFIMjAuMDVWNEwxNS4wNSwxNEgxOC4wNVYyMk0xMiwxOEg0TDQuMDUsNkgxMi4wNU0xMi43Miw0SDExLjA1VjJINS4wNVY0SDMuMzhBMS4zMywxLjMzIDAgMCwwIDIuMDUsNS4zM1YyMC42N0MyLjA1LDIxLjQgMi42NSwyMiAzLjM4LDIySDEyLjcyQzEzLjQ1LDIyIDE0LjA1LDIxLjQgMTQuMDUsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNzIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmcxMDAgPSBcIk0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmcyMCA9IFwiTTIzLjA1LDExSDIwLjA1VjRMMTUuMDUsMTRIMTguMDVWMjJNMTIuMDUsMTdINC4wNVY2SDEyLjA1TTEyLjcyLDRIMTEuMDVWMkg1LjA1VjRIMy4zOEExLjMzLDEuMzMgMCAwLDAgMi4wNSw1LjMzVjIwLjY3QzIuMDUsMjEuNCAyLjY1LDIyIDMuMzgsMjJIMTIuNzJDMTMuNDUsMjIgMTQuMDUsMjEuNCAxNC4wNSwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi43Miw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzMwID0gXCJNMTIsMTVINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNE0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzQwID0gXCJNMTMgNEgxMVYySDVWNEgzQzIuNCA0IDIgNC40IDIgNVYyMUMyIDIxLjYgMi40IDIyIDMgMjJIMTNDMTMuNiAyMiAxNCAyMS42IDE0IDIxVjVDMTQgNC40IDEzLjYgNCAxMyA0TTEyIDE0LjVINFY2SDEyVjE0LjVNMjMgMTFIMjBWNEwxNSAxNEgxOFYyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzUwID0gXCJNMjMsMTFIMjBWNEwxNSwxNEgxOFYyMk0xMiwxM0g0VjZIMTJNMTIuNjcsNEgxMVYySDVWNEgzLjMzQTEuMzMsMS4zMyAwIDAsMCAyLDUuMzNWMjAuNjdDMiwyMS40IDIuNiwyMiAzLjMzLDIySDEyLjY3QzEzLjQsMjIgMTQsMjEuNCAxNCwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi42Nyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzYwID0gXCJNMTIsMTFINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNE0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzcwID0gXCJNMTIsMTBINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNE0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTDIzLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZzgwID0gXCJNMjMsMTFIMjBWNEwxNSwxNEgxOFYyMk0xMiw5SDRWNkgxMk0xMi42Nyw0SDExVjJINVY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42N0MyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwwIDEyLjY3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nOTAgPSBcIk0yMywxMUgyMFY0TDE1LDE0SDE4VjIyTTEyLDhINFY2SDEyTTEyLjY3LDRIMTFWMkg1VjRIMy4zM0ExLjMzLDEuMzMgMCAwLDAgMiw1LjMzVjIwLjY3QzIsMjEuNCAyLjYsMjIgMy4zMywyMkgxMi42N0MxMy40LDIyIDE0LDIxLjQgMTQsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDAgMTIuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdIaWdoID0gXCJNMTIgMjBINFY2SDEyTTEyLjY3IDRIMTFWMkg1VjRIMy4zM0MyLjYgNCAyIDQuNiAyIDUuMzNWMjAuNjdDMiAyMS40IDIuNiAyMiAzLjMzIDIySDEyLjY3QzEzLjQxIDIyIDE0IDIxLjQxIDE0IDIwLjY3VjUuMzNDMTQgNC42IDEzLjQgNCAxMi42NyA0TTExIDE2SDVWMTlIMTFWMTZNMTEgN0g1VjEwSDExVjdNMTEgMTEuNUg1VjE0LjVIMTFWMTEuNU0yMyAxMEgyMFYzTDE1IDEzSDE4VjIxXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nTG93ID0gXCJNMTIgMjBINFY2SDEyTTEyLjY3IDRIMTFWMkg1VjRIMy4zM0MyLjYgNCAyIDQuNiAyIDUuMzNWMjAuNjdDMiAyMS40IDIuNiAyMiAzLjMzIDIySDEyLjY3QzEzLjQxIDIyIDE0IDIxLjQxIDE0IDIwLjY3VjUuMzNDMTQgNC42IDEzLjQgNCAxMi42NyA0TTExIDE2SDVWMTlIMTFWMTZNMjMgMTBIMjBWM0wxNSAxM0gxOFYyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ01lZGl1bSA9IFwiTTEyIDIwSDRWNkgxMk0xMi42NyA0SDExVjJINVY0SDMuMzNDMi42IDQgMiA0LjYgMiA1LjMzVjIwLjY3QzIgMjEuNCAyLjYgMjIgMy4zMyAyMkgxMi42N0MxMy40MSAyMiAxNCAyMS40MSAxNCAyMC42N1Y1LjMzQzE0IDQuNiAxMy40IDQgMTIuNjcgNE0xMSAxNkg1VjE5SDExVjE2TTExIDExLjVINVYxNC41SDExVjExLjVNMjMgMTBIMjBWM0wxNSAxM0gxOFYyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ091dGxpbmUgPSBcIk0yMy4wNSwxMUgyMC4wNVY0TDE1LjA1LDE0SDE4LjA1VjIyTTEyLDIwSDRMNC4wNSw2SDEyLjA1TTEyLjcyLDRIMTEuMDVWMkg1LjA1VjRIMy4zOEExLjMzLDEuMzMgMCAwLDAgMi4wNSw1LjMzVjIwLjY3QzIuMDUsMjEuNCAyLjY1LDIyIDMuMzgsMjJIMTIuNzJDMTMuNDUsMjIgMTQuMDUsMjEuNCAxNC4wNSwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMCAxMi43Miw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ1dpcmVsZXNzID0gXCJNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43NlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczEwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxOC41SDRWNkgxMlYxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ1dpcmVsZXNzMjAgPSBcIk0yMC4wNyw0LjkzTDE4LjY2LDYuMzRDMjEuNzksOS40NiAyMS43OSwxNC41MyAxOC42NiwxNy42NkwyMC4wNywxOS4wN0MyMy45NywxNS4xNyAyMy45Nyw4Ljg0IDIwLjA3LDQuOTNNMTcuMjQsNy43NkwxNS44Myw5LjE3QzE3LjM5LDEwLjczIDE3LjM5LDEzLjI2IDE1LjgzLDE0LjgzTDE3LjI0LDE2LjI0QzE5LjU4LDEzLjkgMTkuNTgsMTAuMSAxNy4yNCw3Ljc2TTEzLDRIMTFWMkg1VjRIM0ExLDEgMCAwLDAgMiw1VjIxQTEsMSAwIDAsMCAzLDIySDEzQTEsMSAwIDAsMCAxNCwyMVY1QTEsMSAwIDAsMCAxMyw0TTEyLDE3SDRWNkgxMlYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczMwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxNkg0VjZIMTJWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nV2lyZWxlc3M0MCA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsMTQuNUg0VjZIMTJWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczUwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxM0g0VjZIMTJWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nV2lyZWxlc3M2MCA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsMTEuNkg0VjZIMTJWMTEuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczcwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiwxMEg0VjZIMTJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUNoYXJnaW5nV2lyZWxlc3M4MCA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsOUg0VjZIMTJWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzczkwID0gXCJNMjAuMDcsNC45M0wxOC42Niw2LjM0QzIxLjc5LDkuNDYgMjEuNzksMTQuNTMgMTguNjYsMTcuNjZMMjAuMDcsMTkuMDdDMjMuOTcsMTUuMTcgMjMuOTcsOC44NCAyMC4wNyw0LjkzTTE3LjI0LDcuNzZMMTUuODMsOS4xN0MxNy4zOSwxMC43MyAxNy4zOSwxMy4yNiAxNS44MywxNC44M0wxNy4yNCwxNi4yNEMxOS41OCwxMy45IDE5LjU4LDEwLjEgMTcuMjQsNy43Nk0xMyw0SDExVjJINVY0SDNBMSwxIDAgMCwwIDIsNVYyMUExLDEgMCAwLDAgMywyMkgxM0ExLDEgMCAwLDAgMTQsMjFWNUExLDEgMCAwLDAgMTMsNE0xMiw3LjVINFY2SDEyVjcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5Q2hhcmdpbmdXaXJlbGVzc0FsZXJ0ID0gXCJNMTMgNEgxMVYySDVWNEgzQzIuNCA0IDIgNC40IDIgNVYyMUMyIDIxLjYgMi40IDIyIDMgMjJIMTNDMTMuNiAyMiAxNCAyMS42IDE0IDIxVjVDMTQgNC40IDEzLjYgNCAxMyA0TTkgMThIN1YxNkg5VjE4TTkgMTRIN1Y4SDlWMTRNMjAuMSA0LjlMMTguNyA2LjNDMjEuOCA5LjQgMjEuOCAxNC41IDE4LjcgMTcuNkwyMC4xIDE5QzI0IDE1LjIgMjQgOC44IDIwLjEgNC45TTE3LjIgNy44TDE1LjggOS4yQzE3LjQgMTAuOCAxNy40IDEzLjMgMTUuOCAxNC45TDE3LjIgMTYuM0MxOS42IDEzLjkgMTkuNiAxMC4xIDE3LjIgNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlDaGFyZ2luZ1dpcmVsZXNzT3V0bGluZSA9IFwiTTIwLjA3LDQuOTNMMTguNjYsNi4zNEMyMS43OSw5LjQ2IDIxLjc5LDE0LjUzIDE4LjY2LDE3LjY2TDIwLjA3LDE5LjA3QzIzLjk3LDE1LjE3IDIzLjk3LDguODQgMjAuMDcsNC45M00xNy4yNCw3Ljc2TDE1LjgzLDkuMTdDMTcuMzksMTAuNzMgMTcuMzksMTMuMjYgMTUuODMsMTQuODNMMTcuMjQsMTYuMjRDMTkuNTgsMTMuOSAxOS41OCwxMC4xIDE3LjI0LDcuNzZNMTMsNEgxMVYySDVWNEgzQTEsMSAwIDAsMCAyLDVWMjFBMSwxIDAgMCwwIDMsMjJIMTNBMSwxIDAgMCwwIDE0LDIxVjVBMSwxIDAgMCwwIDEzLDRNMTIsMjBINFY2SDEyVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlIZWFydCA9IFwiTTEyLjY3IDRIMTFWMkg1VjRIMy4zM0ExLjM0IDEuMzQgMCAwIDAgMiA1LjMzVjIwLjY3QTEuMzQgMS4zNCAwIDAgMCAzLjMzIDIySDEyLjY3QTEuMzQgMS4zNCAwIDAgMCAxNCAyMC42N1Y1LjMzQTEuMzQgMS4zNCAwIDAgMCAxMi42NyA0TTE5IDE2LjE3TDE4LjQyIDE1LjY0QzE2LjM2IDEzLjc3IDE1IDEyLjU0IDE1IDExQTIuMTggMi4xOCAwIDAgMSAxNy4yIDguOEEyLjQgMi40IDAgMCAxIDE5IDkuNjNBMi40IDIuNCAwIDAgMSAyMC44IDguOEEyLjE4IDIuMTggMCAwIDEgMjMgMTFDMjMgMTIuNSAyMS42NCAxMy43NCAxOS41OCAxNS42MVpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5SGVhcnRPdXRsaW5lID0gXCJNMTkgMTYuMkwxOC40IDE1LjdDMTYuNCAxMy44IDE1IDEyLjUgMTUgMTFDMTUgOS44IDE2IDguOCAxNy4yIDguOEMxNy45IDguOCAxOC41IDkuMSAxOSA5LjZDMTkuNSA5LjEgMjAuMSA4LjggMjAuOCA4LjhDMjIgOC44IDIzIDkuOCAyMyAxMUMyMyAxMi41IDIxLjYgMTMuNyAxOS42IDE1LjZMMTkgMTYuMk0xMi43IDRIMTFWMkg1VjRIMy4zQzIuNiA0IDIgNC42IDIgNS4zVjIwLjZDMiAyMS40IDIuNiAyMiAzLjMgMjJIMTIuNkMxMy4zIDIyIDEzLjkgMjEuNCAxMy45IDIwLjdWNS4zQzE0IDQuNiAxMy40IDQgMTIuNyA0TTEyIDIwSDRWNkgxMlYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5SGVhcnRWYXJpYW50ID0gXCJNMTYuNjcgNEgxNVYySDlWNEg3LjMzQTEuMzQgMS4zNCAwIDAgMCA2IDUuMzNWMjAuNjdBMS4zNCAxLjM0IDAgMCAwIDcuMzMgMjJIMTYuNjdBMS4zNCAxLjM0IDAgMCAwIDE4IDIwLjY3VjUuMzNBMS4zNCAxLjM0IDAgMCAwIDE2LjY3IDRNMTIuNTggMTUuNjRMMTIgMTYuMTdMMTEuNDIgMTUuNjRDOS4zNiAxMy43NyA4IDEyLjU0IDggMTFBMi4xOCAyLjE4IDAgMCAxIDEwLjIgOC44QTIuNCAyLjQgMCAwIDEgMTIgOS42M0EyLjQgMi40IDAgMCAxIDEzLjggOC44QTIuMTggMi4xOCAwIDAgMSAxNiAxMUMxNiAxMi41NCAxNC42NCAxMy43NyAxMi41OCAxNS42NFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5SGlnaCA9IFwiTTE2IDIwSDhWNkgxNk0xNi42NyA0SDE1VjJIOVY0SDcuMzNDNi42IDQgNiA0LjYgNiA1LjMzVjIwLjY3QzYgMjEuNCA2LjYgMjIgNy4zMyAyMkgxNi42N0MxNy40MSAyMiAxOCAyMS40MSAxOCAyMC42N1Y1LjMzQzE4IDQuNiAxNy40IDQgMTYuNjcgNE0xNSAxNkg5VjE5SDE1VjE2TTE1IDdIOVYxMEgxNVY3TTE1IDExLjVIOVYxNC41SDE1VjExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeUxvdyA9IFwiTTE2IDIwSDhWNkgxNk0xNi42NyA0SDE1VjJIOVY0SDcuMzNDNi42IDQgNiA0LjYgNiA1LjMzVjIwLjY3QzYgMjEuNCA2LjYgMjIgNy4zMyAyMkgxNi42N0MxNy40MSAyMiAxOCAyMS40MSAxOCAyMC42N1Y1LjMzQzE4IDQuNiAxNy40IDQgMTYuNjcgNE0xNSAxNkg5VjE5SDE1VjE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU1lZGl1bSA9IFwiTTE2IDIwSDhWNkgxNk0xNi42NyA0SDE1VjJIOVY0SDcuMzNDNi42IDQgNiA0LjYgNiA1LjMzVjIwLjY3QzYgMjEuNCA2LjYgMjIgNy4zMyAyMkgxNi42N0MxNy40MSAyMiAxOCAyMS40MSAxOCAyMC42N1Y1LjMzQzE4IDQuNiAxNy40IDQgMTYuNjcgNE0xNSAxNkg5VjE5SDE1VjE2TTE1IDExLjVIOVYxNC41SDE1VjExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU1pbnVzID0gXCJNMTYuNjcsNEMxNy40LDQgMTgsNC42IDE4LDUuMzNWMjAuNjdBMS4zMywxLjMzIDAgMCwxIDE2LjY3LDIySDcuMzNDNi42LDIyIDYsMjEuNCA2LDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwxIDcuMzMsNEg5VjJIMTVWNEgxNi42N004LDEyVjE0SDE2VjEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU5lZ2F0aXZlID0gXCJNMTEuNjcsNEExLjMzLDEuMzMgMCAwLDEgMTMsNS4zM1YyMC42N0MxMywyMS40IDEyLjQsMjIgMTEuNjcsMjJIMi4zM0MxLjYsMjIgMSwyMS40IDEsMjAuNjdWNS4zM0ExLjMzLDEuMzMgMCAwLDEgMi4zMyw0SDRWMkgxMFY0SDExLjY3TTE1LDEySDIzVjE0SDE1VjEyTTMsMTNIMTFWNkgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlPZmYgPSBcIk0xOCAxNC44TDcuMjEgNEg5VjJIMTVWNEgxNi42N0ExLjM0IDEuMzQgMCAwIDEgMTggNS4zM00xOCAxNy4zNUwzLjM4IDIuNzNMMi4xMSA0TDYgNy44OVYyMC42N0ExLjM0IDEuMzQgMCAwIDAgNy4zMyAyMkgxNi42N0ExLjM0IDEuMzQgMCAwIDAgMTggMjAuNjdWMTkuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU9mZk91dGxpbmUgPSBcIk0xOCAxNy4zNUwzLjM4IDIuNzNMMi4xMSA0TDYgNy44OVYyMC42N0ExLjM0IDEuMzQgMCAwIDAgNy4zMyAyMkgxNi42N0ExLjM0IDEuMzQgMCAwIDAgMTggMjAuNjdWMTkuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTYgMjBIOFY5Ljg5TDE2IDE3Ljg5TTE2IDZWMTIuOEwxOCAxNC44VjUuMzNBMS4zNCAxLjM0IDAgMCAwIDE2LjY3IDRIMTVWMkg5VjRINy4yMUw5LjIxIDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmF0dGVyeU91dGxpbmUgPSBcIk0xNiwyMEg4VjZIMTZNMTYuNjcsNEgxNVYySDlWNEg3LjMzQTEuMzMsMS4zMyAwIDAsMCA2LDUuMzNWMjAuNjdDNiwyMS40IDYuNiwyMiA3LjMzLDIySDE2LjY3QTEuMzMsMS4zMyAwIDAsMCAxOCwyMC42N1Y1LjMzQzE4LDQuNiAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5UGx1cyA9IFwiTTE2LjY3LDRDMTcuNCw0IDE4LDQuNiAxOCw1LjMzVjIwLjY3QTEuMzMsMS4zMyAwIDAsMSAxNi42NywyMkg3LjMzQzYuNiwyMiA2LDIxLjQgNiwyMC42N1Y1LjMzQTEuMzMsMS4zMyAwIDAsMSA3LjMzLDRIOVYySDE1VjRIMTYuNjdNMTYsMTRWMTJIMTNWOUgxMVYxMkg4VjE0SDExVjE3SDEzVjE0SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlQb3NpdGl2ZSA9IFwiTTExLjY3LDRBMS4zMywxLjMzIDAgMCwxIDEzLDUuMzNWMjAuNjdDMTMsMjEuNCAxMi40LDIyIDExLjY3LDIySDIuMzNDMS42LDIyIDEsMjEuNCAxLDIwLjY3VjUuMzNBMS4zMywxLjMzIDAgMCwxIDIuMzMsNEg0VjJIMTBWNEgxMS42N00yMywxNEgyMFYxN0gxOFYxNEgxNVYxMkgxOFY5SDIwVjEySDIzVjE0TTMsMTNIMTFWNkgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJhdHRlcnlVbmtub3duID0gXCJNMTUuMDcsMTIuMjVMMTQuMTcsMTMuMTdDMTMuNjMsMTMuNzEgMTMuMjUsMTQuMTggMTMuMDksMTVIMTEuMDVDMTEuMTYsMTQuMSAxMS41NiwxMy4yOCAxMi4xNywxMi42N0wxMy40MSwxMS40MUMxMy43OCwxMS4wNSAxNCwxMC41NSAxNCwxMEMxNCw4Ljg5IDEzLjEsOCAxMiw4QTIsMiAwIDAsMCAxMCwxMEg4QTQsNCAwIDAsMSAxMiw2QTQsNCAwIDAsMSAxNiwxMEMxNiwxMC44OCAxNS42NCwxMS42OCAxNS4wNywxMi4yNU0xMywxOUgxMVYxN0gxM00xNi42Nyw0SDE1VjJIOVY0SDcuMzNBMS4zMywxLjMzIDAgMCwwIDYsNS4zM1YyMC42NkM2LDIxLjQgNi42LDIyIDcuMzMsMjJIMTYuNjdDMTcuNCwyMiAxOCwyMS40IDE4LDIwLjY2VjUuMzNDMTgsNC41OSAxNy40LDQgMTYuNjcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0ZXJ5VW5rbm93bkJsdWV0b290aCA9IFwiTTUsMlY0SDMuMzNBMS4zMywxLjMzIDAgMCwwIDIsNS4zM1YyMC42NkMyLDIxLjQgMi42LDIyIDMuMzMsMjJIMTIuNjdDMTMuNCwyMiAxNCwyMS40IDE0LDIwLjY2VjUuMzNDMTQsNC41OSAxMy40LDQgMTIuNjcsNEgxMVYySDVNOCw2QTQsNCAwIDAsMSAxMiwxMEMxMiwxMC44OCAxMS42NCwxMS42OCAxMS4wNywxMi4yNUwxMC4xNywxMy4xN0M5LjYzLDEzLjcxIDkuMjUsMTQuMTggOS4wOSwxNUg3LjA1QzcuMTYsMTQuMSA3LjU2LDEzLjI4IDguMTcsMTIuNjdMOS40MSwxMS40MUM5Ljc4LDExLjA1IDEwLDEwLjU1IDEwLDEwQzEwLDguODkgOS4xLDggOCw4QTIsMiAwIDAsMCA2LDEwSDRBNCw0IDAgMCwxIDgsNk0xOSw4VjExLjc5TDE2LjcxLDkuNUwxNiwxMC4yMUwxOC43OSwxM0wxNiwxNS43OUwxNi43MSwxNi41TDE5LDE0LjIxVjE4SDE5LjVMMjIuMzUsMTUuMTRMMjAuMjEsMTNMMjIuMzUsMTAuODVMMTkuNSw4SDE5TTIwLDkuOTFMMjAuOTQsMTAuODVMMjAsMTEuNzlWOS45MU0yMCwxNC4yMUwyMC45NCwxNS4xNEwyMCwxNi4wOFYxNC4yMU03LDE3SDlWMTlIN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCYXR0bGVuZXQgPSBcIk0xOS45MiwxMC43NkMxOS45MiwxMC43NiAyMi41LDEyLjI0IDIyLjUsMTMuODlDMjIuNSwxNS41IDE5LjUsMTYuMDYgMTYuMTgsMTUuOUMxNi4xOCwxNS45IDE0Ljc3LDE3Ljg3IDEzLjQyLDE4LjdDMTQuODgsMjEuNDQgMTYsMjIuNSAxNS45NywyMi41QzE1Ljk3LDIyLjUgMTUuMjMsMjIuNjkgMTMsMTkuMDRDMTEuNjYsMTkuODkgMTAuMTcsMjAuMjMgOS41NiwxOS43QzguOTQsMTkuMTcgOS40MiwxOC4yOCA5LjY4LDE3Ljg1QzkuNDEsMTggOCwxOC44MyA2Ljc1LDE4LjgzQzUuMjYsMTguODMgNS4wNSwxNy43MiA1LjA1LDE3LjE1QzUuMDUsMTUgNy4xMiwxMiA3LjEyLDEyQzcuMTIsMTIgNi4xNiw5Ljg4IDYuMDUsOC4yMkM0LjE3LDguMDYgMiw4LjM5IDEuNTMsOC41NEMxLjQsOC41NCAxLjg0LDguMjIgMiw4LjE4QzIuMTUsOC4xMyAzLjkxLDcuNjcgNiw3LjY3QzYsNS45MyA2LjM1LDQuMzMgNy40MSw0LjMzQzguMTMsNC4zMyA4LjcxLDUuNDUgOC43MSw1LjQ1QzguNzEsNS40NSA4LjcsMS41IDEwLjc0LDEuNUMxMi44LDEuNSAxNSw2LjExIDE1LDYuMTFDMTUsNi4xMSAxNy4yMiw2LjMyIDE4Ljg1LDcuMDlDMTkuNSw1LjczIDIwLjA5LDUuMTEgMjAuODEsM0MyMSwzLjcgMjAuMiw1LjUgMTkuMzUsNy4zVjcuM0gxOS4zNUMxOS4zNSw3LjMgMjEuNjUsOC41IDIxLjY1LDkuODNDMjEuNjUsMTAuODQgMTkuOTIsMTAuNzYgMTkuOTIsMTAuNzZNMTAuNjgsMTguNThDMTEuMzYsMTguNjkgMTIuNDEsMTguMSAxMi40LDE4LjFMMTEuNTgsMTYuNTdMMTAuNCwxNy40QzEwLjM5LDE3LjQxIDkuNjQsMTguMzggMTAuNjgsMTguNThNMjAuMTUsOS43NkMyMC4xNSw5LjEgMTguOTUsOC4zNSAxOC44MSw4LjI3TDE3Ljg5LDkuNzVMMTkuMTcsMTAuMzdDMTkuNTksMTAuMzQgMjAuMTUsMTAuMzUgMjAuMTUsOS43Nk04LDUuNjNDNy43LDUuNjMgNy4wOSw2LjA3IDcuMDksNy42NEw4LjgzLDcuN0w4LjcyLDYuM0M4LjYsNiA4LjMsNS42MyA4LDUuNjNNMTAuMTgsMTUuNzhDOC45MiwxNS4xMyA4LjE2LDE0LjA2IDcuNTQsMTIuOUM3LjU0LDEyLjkgNS45NiwxNS41NSA2Ljk3LDE2LjIyQzgsMTYuODkgOS42NCwxNi4xNiAxMC4xOCwxNS43OE0xMi45NywxNy43NkMxNC4xMSwxNi44OSAxNy4xOSwxNC43MyAxNy40NSwxMS4wOEMxNC41Nyw5LjQ0IDEwLjYyLDguNzEgMTAuNjIsOC43MUMxMC42Miw4LjcxIDEwLjYxLDguMjEgMTAuNyw3Ljg2QzExLjY0LDcuOTcgMTQuNTksOC40NyAxNy4wMyw5LjQzQzE2LjM1LDguMjggMTUuODQsNy44NSAxNS4zNyw3LjVDMTYuNTMsNy43NiAxNy4zNiw5LjI2IDE3LjM2LDkuMjZMMTguMjgsNy45NkMxOC4yOCw3Ljk2IDEzLjkxLDUuNjEgMTAuMTksNy40MkMxMC4xMSwxMC4zIDExLjU5LDE0LjU2IDExLjU5LDE0LjU2TDEwLjgyLDE0Ljg5QzEwLjMsMTMuODQgOS42MywxMi4wOSA5LDguNjdDOC43LDkuMDggOC4xNyw5LjU1IDguMTYsMTEuMDlDNy43LDkuOCA4LjY2LDguNDMgOC42Nyw4LjQyTDcuMDcsOC4yNkM3LjE3LDkuOTIgOC4wNSwxNC4yIDEwLjY4LDE1LjUzQzEzLDE0LjIxIDE1LjUsMTEuNTQgMTYuMTMsMTAuNzdMMTYuODIsMTEuMjhMMTIuMzUsMTUuOTdDMTMuNTksMTYgMTQuMzIsMTUuNzIgMTQuODIsMTUuNUMxNC4xLDE2LjI1IDEyLjg2LDE2LjMyIDEyLjI3LDE2LjMyQzEyLjI4LDE2LjM0IDEyLjU3LDE3LjA3IDEyLjk3LDE3Ljc2TTE0LjAzLDYuMDVDMTQsNS45NyAxMi42NiwzLjY5IDExLjQ3LDMuODZDMTAuNjksNC4xMSAxMC4yNCw1LjQzIDEwLjIzLDYuODdDMTAuNzYsNi41NiAxMiw2IDE0LjAzLDYuMDVNMTYuNzEsMTUuMDdDMTYuNzEsMTUuMDcgMjAsMTUgMTkuOSwxMy43NkMxOS45LDEyLjU2IDE3LjkyLDExLjMzIDE3LjkyLDExLjM1QzE3LjkzLDEzLjQ3IDE2LjcxLDE1LjA3IDE2LjcxLDE1LjA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWNoID0gXCJNMTUsMTguNTRDMTcuMTMsMTguMjEgMTkuNSwxOCAyMiwxOFYyMkg1QzUsMjEuMzUgOC4yLDE5Ljg2IDEzLDE4LjlWMTIuNEMxMi4xNiwxMi42NSAxMS40NSwxMy4yMSAxMSwxMy45NUMxMC4zOSwxMi45MyA5LjI3LDEyLjI1IDgsMTIuMjVDNi43MywxMi4yNSA1LjYxLDEyLjkzIDUsMTMuOTVDNS4wMywxMC4zNyA4LjUsNy40MyAxMyw3LjA0VjdBMSwxIDAgMCwxIDE0LDZBMSwxIDAgMCwxIDE1LDdWNy4wNEMxOS41LDcuNDMgMjIuOTYsMTAuMzcgMjMsMTMuOTVDMjIuMzksMTIuOTMgMjEuMjcsMTIuMjUgMjAsMTIuMjVDMTguNzMsMTIuMjUgMTcuNjEsMTIuOTMgMTcsMTMuOTVDMTYuNTUsMTMuMjEgMTUuODQsMTIuNjUgMTUsMTIuMzlWMTguNTRNNywyQTUsNSAwIDAsMSAyLDdWMkg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlciA9IFwiTTMsM1Y1QTIsMiAwIDAsMSA1LDdWMTlBMiwyIDAgMCwwIDcsMjFIMTdBMiwyIDAgMCwwIDE5LDE5VjdBMiwyIDAgMCwxIDIxLDVWM0gzTTcsOUgxMFYxMEg3VjlNNywxMUgxMFYxMkg3VjExTTEwLDE2SDdWMTVIMTBWMTZNMTIsMTRIN1YxM0gxMlYxNE0xMiw4SDdWN0gxMlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlckFsZXJ0ID0gXCJNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjE5QzE5IDIwLjEgMTguMSAyMSAxNyAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVY3QzUgNS45IDQuMSA1IDMgNVYzTTcgOVYxMEgxMFY5SDdNNyAxMVYxMkgxMFYxMUg3TTEwIDE2VjE1SDdWMTZIMTBNMTIgMTRWMTNIN1YxNEgxMk0xMiA4VjdIN1Y4SDEyTTIxIDEzVjdIMjNWMTNIMjFNMjEgMTdWMTVIMjNWMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVha2VyQWxlcnRPdXRsaW5lID0gXCJNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjE5QzE5IDIwLjExIDE4LjExIDIxIDE3IDIxSDdDNS45IDIxIDUgMjAuMTEgNSAxOVY3QzUgNS45IDQuMTEgNSAzIDVWM003IDVWN0gxMlY4SDdWOUgxMFYxMEg3VjExSDEwVjEySDdWMTNIMTJWMTRIN1YxNUgxMFYxNkg3VjE5SDE3VjVIN00yMSAxM1Y3SDIzVjEzSDIxTTIxIDE3VjE1SDIzVjE3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlckNoZWNrID0gXCJNMTcuNzUgMjEuMTZMMTUgMTguMTZMMTYuMTYgMTdMMTcuNzUgMTguNTlMMjEuMzQgMTVMMjIuNSAxNi40MUwxNy43NSAyMS4xNk0zIDNIMjFWNUMxOS45IDUgMTkgNS45IDE5IDdWMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThDMTMgMTkuMDkgMTMuMjkgMjAuMTIgMTMuOCAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVY3QzUgNS45IDQuMSA1IDMgNVYzTTcgOVYxMEgxMFY5SDdNNyAxMVYxMkgxMFYxMUg3TTEwIDE2VjE1SDdWMTZIMTBNMTIgMTRWMTNIN1YxNEgxMk0xMiA4VjdIN1Y4SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlckNoZWNrT3V0bGluZSA9IFwiTTE3Ljc1IDIxLjE2TDE1IDE4LjE2TDE2LjE2IDE3TDE3Ljc1IDE4LjU5TDIxLjM0IDE1TDIyLjUgMTYuNDFMMTcuNzUgMjEuMTZNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE4LjMgMTIgMTcuNjMgMTIuMTIgMTcgMTIuMzRWNUg3VjdIMTJWOEg3VjlIMTBWMTBIN1YxMUgxMFYxMkg3VjEzSDEyVjE0SDdWMTVIMTBWMTZIN1YxOUgxMy4wOEMxMy4yIDE5LjcyIDEzLjQ1IDIwLjM5IDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xMSA1IDE5VjdDNSA1LjkgNC4xMSA1IDMgNVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlck1pbnVzID0gXCJNMjMgMTdWMTlIMTVWMTdIMjNNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE1LjY5IDEyIDEzIDE0LjY5IDEzIDE4QzEzIDE5LjA5IDEzLjI5IDIwLjEyIDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xIDUgMTlWN0M1IDUuOSA0LjEgNSAzIDVWM003IDlWMTBIMTBWOUg3TTcgMTFWMTJIMTBWMTFIN00xMCAxNlYxNUg3VjE2SDEwTTEyIDE0VjEzSDdWMTRIMTJNMTIgOFY3SDdWOEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWFrZXJNaW51c091dGxpbmUgPSBcIk0yMyAxN1YxOUgxNVYxN00zIDNIMjFWNUMxOS45IDUgMTkgNS45IDE5IDdWMTJDMTguMyAxMiAxNy42MyAxMi4xMiAxNyAxMi4zNFY1SDdWN0gxMlY4SDdWOUgxMFYxMEg3VjExSDEwVjEySDdWMTNIMTJWMTRIN1YxNUgxMFYxNkg3VjE5SDEzLjA4QzEzLjIgMTkuNzIgMTMuNDUgMjAuMzkgMTMuOCAyMUg3QzUuOSAyMSA1IDIwLjExIDUgMTlWN0M1IDUuOSA0LjExIDUgMyA1VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVha2VyT3V0bGluZSA9IFwiTTMsM0gyMVY1QTIsMiAwIDAsMCAxOSw3VjE5QTIsMiAwIDAsMSAxNywyMUg3QTIsMiAwIDAsMSA1LDE5VjdBMiwyIDAgMCwwIDMsNVYzTTcsNVY3SDEyVjhIN1Y5SDEwVjEwSDdWMTFIMTBWMTJIN1YxM0gxMlYxNEg3VjE1SDEwVjE2SDdWMTlIMTdWNUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclBsdXMgPSBcIk0xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE0zIDNIMjFWNUMxOS45IDUgMTkgNS45IDE5IDdWMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThDMTMgMTkuMDkgMTMuMjkgMjAuMTIgMTMuOCAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVY3QzUgNS45IDQuMSA1IDMgNVYzTTcgOVYxMEgxMFY5SDdNNyAxMVYxMkgxMFYxMUg3TTEwIDE2VjE1SDdWMTZIMTBNMTIgMTRWMTNIN1YxNEgxMk0xMiA4VjdIN1Y4SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclBsdXNPdXRsaW5lID0gXCJNMTggMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdIMThWMTRNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE4LjMgMTIgMTcuNjMgMTIuMTIgMTcgMTIuMzRWNUg3VjdIMTJWOEg3VjlIMTBWMTBIN1YxMUgxMFYxMkg3VjEzSDEyVjE0SDdWMTVIMTBWMTZIN1YxOUgxMy4wOEMxMy4yIDE5LjcyIDEzLjQ1IDIwLjM5IDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xMSA1IDE5VjdDNSA1LjkgNC4xMSA1IDMgNVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclF1ZXN0aW9uID0gXCJNMCAzSDE4VjVDMTYuOSA1IDE2IDUuOSAxNiA3VjE5QzE2IDIwLjEgMTUuMSAyMSAxNCAyMUg0QzIuOSAyMSAyIDIwLjEgMiAxOVY3QzIgNS45IDEuMSA1IDAgNVYzTTQgOVYxMEg3VjlINE00IDExVjEySDdWMTFINE03IDE2VjE1SDRWMTZIN005IDE0VjEzSDRWMTRIOU05IDhWN0g0VjhIOU0yMS41IDE1LjVWMTdIMjBWMTUuNUgyMS41TTE5LjUgMTAuNUgxOFYxMEMxOCA4LjM0IDE5LjM0IDcgMjEgN0MyMi42NiA3IDI0IDguMzQgMjQgMTBDMjQgMTAuOTcgMjMuNSAxMS44OCAyMi43MSAxMi40MUwyMi40MSAxMi42QzIxLjg0IDEzIDIxLjUgMTMuNjIgMjEuNSAxNC4zVjE0LjVIMjBWMTQuM0MyMCAxMy4xMSAyMC42IDEyIDIxLjU5IDExLjM1TDIxLjg4IDExLjE2QzIyLjI3IDEwLjkgMjIuNSAxMC40NyAyMi41IDEwQzIyLjUgOS4xOCAyMS44MyA4LjUgMjEgOC41QzIwLjE3IDguNSAxOS41IDkuMTcgMTkuNSAxMFYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlYWtlclF1ZXN0aW9uT3V0bGluZSA9IFwiTTAgM0gxOFY1QzE2LjkgNSAxNiA1LjkgMTYgN1YxOUMxNiAyMC4xMSAxNS4xMSAyMSAxNCAyMUg0QzIuOSAyMSAyIDIwLjExIDIgMTlWN0MyIDUuOSAxLjExIDUgMCA1VjNNNCA1VjdIOVY4SDRWOUg3VjEwSDRWMTFIN1YxMkg0VjEzSDlWMTRINFYxNUg3VjE2SDRWMTlIMTRWNUg0TTIxLjUgMTUuNVYxN0gyMFYxNS41SDIxLjVNMTkuNSAxMC41SDE4VjEwQzE4IDguMzQgMTkuMzQgNyAyMSA3QzIyLjY2IDcgMjQgOC4zNCAyNCAxMEMyNCAxMC45NyAyMy41IDExLjg4IDIyLjcxIDEyLjQxTDIyLjQxIDEyLjZDMjEuODQgMTMgMjEuNSAxMy42MiAyMS41IDE0LjNWMTQuNUgyMFYxNC4zQzIwIDEzLjExIDIwLjYgMTIgMjEuNTkgMTEuMzVMMjEuODggMTEuMTZDMjIuMjcgMTAuOSAyMi41IDEwLjQ3IDIyLjUgMTBDMjIuNSA5LjE4IDIxLjgzIDguNSAyMSA4LjVDMjAuMTcgOC41IDE5LjUgOS4xNyAxOS41IDEwVjEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVha2VyUmVtb3ZlID0gXCJNMTUuNDYgMTUuODhMMTYuODggMTQuNDZMMTkgMTYuNTlMMjEuMTIgMTQuNDdMMjIuNTMgMTUuODhMMjAuNDEgMThMMjIuNTQgMjAuMTJMMjEuMTIgMjEuNTRMMTkgMTkuNDFMMTYuODggMjEuNTNMMTUuNDcgMjAuMTJMMTcuNTkgMThMMTUuNDYgMTUuODhNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE1LjY5IDEyIDEzIDE0LjY5IDEzIDE4QzEzIDE5LjA5IDEzLjI5IDIwLjEyIDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xIDUgMTlWN0M1IDUuOSA0LjEgNSAzIDVWM003IDlWMTBIMTBWOUg3TTcgMTFWMTJIMTBWMTFIN00xMCAxNlYxNUg3VjE2SDEwTTEyIDE0VjEzSDdWMTRIMTJNMTIgOFY3SDdWOEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWFrZXJSZW1vdmVPdXRsaW5lID0gXCJNMTUuNDYgMTUuODhMMTYuODggMTQuNDZMMTkgMTYuNTlMMjEuMTIgMTQuNDdMMjIuNTMgMTUuODhMMjAuNDEgMThMMjIuNTQgMjAuMTJMMjEuMTIgMjEuNTRMMTkgMTkuNDFMMTYuODggMjEuNTNMMTUuNDcgMjAuMTJMMTcuNTkgMThMMTUuNDYgMTUuODhNMyAzSDIxVjVDMTkuOSA1IDE5IDUuOSAxOSA3VjEyQzE4LjMgMTIgMTcuNjMgMTIuMTIgMTcgMTIuMzRWNUg3VjdIMTJWOEg3VjlIMTBWMTBIN1YxMUgxMFYxMkg3VjEzSDEyVjE0SDdWMTVIMTBWMTZIN1YxOUgxMy4wOEMxMy4yIDE5LjcyIDEzLjQ1IDIwLjM5IDEzLjggMjFIN0M1LjkgMjEgNSAyMC4xMSA1IDE5VjdDNSA1LjkgNC4xMSA1IDMgNVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZCA9IFwiTTE5LDdIMTFWMTRIM1Y1SDFWMjBIM1YxN0gyMVYyMEgyM1YxMUE0LDQgMCAwLDAgMTksN003LDEzQTMsMyAwIDAsMCAxMCwxMEEzLDMgMCAwLDAgNyw3QTMsMyAwIDAsMCA0LDEwQTMsMyAwIDAsMCA3LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZERvdWJsZSA9IFwiTTE4IDEwVjdBMiAyIDAgMCAwIDE2IDVIOEEyIDIgMCAwIDAgNiA3VjEwQTIgMiAwIDAgMCA0IDEyVjE3SDUuMzNMNiAxOUg3TDcuNjcgMTdIMTYuMzNMMTcgMTlIMThMMTguNjcgMTdIMjBWMTJBMiAyIDAgMCAwIDE4IDEwTTExIDEwSDhWN0gxMU0xNiAxMEgxM1Y3SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZERvdWJsZU91dGxpbmUgPSBcIk04IDVDNy41IDUgNyA1LjIxIDYuNjEgNS42UzYgNi40NSA2IDdWMTBDNS40NyAxMCA1IDEwLjE5IDQuNTkgMTAuNTlTNCAxMS40NyA0IDEyVjE3SDUuMzRMNiAxOUg3TDcuNjkgMTdIMTYuMzZMMTcgMTlIMThMMTguNjYgMTdIMjBWMTJDMjAgMTEuNDcgMTkuODEgMTEgMTkuNDEgMTAuNTlTMTguNTMgMTAgMTggMTBWN0MxOCA2LjQ1IDE3LjggNiAxNy4zOSA1LjZTMTYuNSA1IDE2IDVNOCA3SDExVjEwSDhNMTMgN0gxNlYxMEgxM002IDEySDE4VjE1SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVkRW1wdHkgPSBcIk0xOSw3SDVWMTRIM1Y1SDFWMjBIM1YxN0gyMVYyMEgyM1YxMUE0LDQgMCAwLDAgMTksN1wiO1xyXG5leHBvcnQgdmFyIG1kaUJlZEtpbmcgPSBcIk02IDVDNS40NyA1IDUgNS4yMSA0LjU5IDUuNlM0IDYuNDUgNCA3VjEwQzMuNDUgMTAgMyAxMC4xOSAyLjYgMTAuNTlTMiAxMS40NyAyIDEyVjE3SDMuMzNMNCAxOUg1TDUuNjcgMTdIMTguMzNMMTkgMTlIMjBMMjAuNjcgMTdIMjJWMTJDMjIgMTEuNDcgMjEuNzkgMTEgMjEuNCAxMC41OUMyMSAxMC4xOSAyMC41NSAxMCAyMCAxMFY3QzIwIDYuNDUgMTkuODEgNiAxOS40MSA1LjZTMTguNTMgNSAxOCA1TTYgN0gxMVYxMEg2TTEzIDdIMThWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVkS2luZ091dGxpbmUgPSBcIk0yMCAxMFY3QTIgMiAwIDAgMCAxOCA1SDZBMiAyIDAgMCAwIDQgN1YxMEEyIDIgMCAwIDAgMiAxMlYxN0gzLjMzTDQgMTlINUw1LjY3IDE3SDE4LjMzTDE5IDE5SDIwTDIwLjY3IDE3SDIyVjEyQTIgMiAwIDAgMCAyMCAxME0xMyA3SDE4VjEwSDEzTTYgN0gxMVYxMEg2TTIwIDE1SDRWMTJIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVkT3V0bGluZSA9IFwiTTcgMTRDOC42NiAxNCAxMCAxMi42NiAxMCAxMUMxMCA5LjM0IDguNjYgOCA3IDhDNS4zNCA4IDQgOS4zNCA0IDExQzQgMTIuNjYgNS4zNCAxNCA3IDE0TTcgMTBDNy41NSAxMCA4IDEwLjQ1IDggMTFDOCAxMS41NSA3LjU1IDEyIDcgMTJDNi40NSAxMiA2IDExLjU1IDYgMTFDNiAxMC40NSA2LjQ1IDEwIDcgMTBNMTkgN0gxMVYxNUgzVjVIMVYyMEgzVjE3SDIxVjIwSDIzVjExQzIzIDguNzkgMjEuMjEgNyAxOSA3TTIxIDE1SDEzVjlIMTlDMjAuMSA5IDIxIDkuOSAyMSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWRRdWVlbiA9IFwiTTE5IDEwVjdBMiAyIDAgMCAwIDE3IDVIN0EyIDIgMCAwIDAgNSA3VjEwQTIgMiAwIDAgMCAzIDEyVjE3SDQuMzNMNSAxOUg2TDYuNjcgMTdIMTcuMzNMMTggMTlIMTlMMTkuNjcgMTdIMjFWMTJBMiAyIDAgMCAwIDE5IDEwTTE3IDEwSDdWN0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCZWRRdWVlbk91dGxpbmUgPSBcIk0xOSAxMFY3QTIgMiAwIDAgMCAxNyA1SDdBMiAyIDAgMCAwIDUgN1YxMEEyIDIgMCAwIDAgMyAxMlYxN0g0LjMzTDUgMTlINkw2LjY3IDE3SDE3LjMzTDE4IDE5SDE5TDE5LjY3IDE3SDIxVjEyQTIgMiAwIDAgMCAxOSAxME03IDdIMTdWMTBIN00xOSAxNUg1VjEySDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZFNpbmdsZSA9IFwiTTE3IDEwVjdDMTcgNS45IDE2LjExIDUgMTUgNUg5QzcuOSA1IDcgNS45IDcgN1YxMEM1LjkgMTAgNC44OSAxMC45IDUgMTJWMTdINi4zM0w3IDE5SDhMOC42NyAxN0gxNS4zM0wxNiAxOUgxN0wxNy42NyAxN0gxOVYxMkMxOSAxMC45IDE4LjExIDEwIDE3IDEwTTE1IDEwSDlWN0gxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWRTaW5nbGVPdXRsaW5lID0gXCJNMTcgMTBWN0MxNyA1LjkgMTYuMTEgNSAxNSA1SDlDNy45IDUgNyA1LjkgNyA3VjEwQzUuOSAxMCA1IDEwLjkgNSAxMlYxN0g2LjMzTDcgMTlIOEw4LjY3IDE3SDE1LjMzTDE2IDE5SDE3TDE3LjY3IDE3SDE5VjEyQzE5IDEwLjkgMTguMTEgMTAgMTcgMTBNOSA3SDE1VjEwSDlNMTcgMTVIN1YxMkgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCZWUgPSBcIk0xNy40IDlDMTcgNy44IDE2LjIgNyAxNSA2LjVWNUgxNFY2LjRIMTMuNkMxMi41IDYuNCAxMS42IDYuOCAxMC44IDcuNkwxMC40IDhMOSA3LjVDOC43IDcuNCA4LjQgNy4zIDggNy4zQzcuNCA3LjMgNi44IDcuNSA2LjMgNy45QzUuNyA4LjMgNS40IDguOCA1LjIgOS4zQzUgMTAgNSAxMC42IDUuMiAxMS4zQzUuNSAxMiA1LjggMTIuNSA2LjMgMTIuOEM1LjkgMTQuMyA2LjIgMTUuNiA3LjMgMTYuN0M4LjEgMTcuNSA5IDE3LjkgMTAuMSAxNy45QzEwLjYgMTcuOSAxMC45IDE3LjkgMTEuMiAxNy44QzExLjggMTguNiAxMi42IDE5LjEgMTMuNiAxOS4xQzEzLjkgMTkuMSAxNC4zIDE5LjEgMTQuNiAxOUMxNS4yIDE4LjggMTUuNiAxOC40IDE2IDE3LjlDMTYuNCAxNy4zIDE2LjYgMTYuOCAxNi42IDE2LjJDMTYuNiAxNS44IDE2LjYgMTUuNSAxNi41IDE1LjJMMTYgMTMuNkwxNi42IDEzLjJDMTcuNCAxMi40IDE3LjggMTEuMyAxNy43IDEwLjFIMTlWOUgxNy40TTcuNyAxMS4zQzcuMSAxMSA2LjkgMTAuNiA3LjEgMTBDNy4zIDkuNCA3LjcgOS4yIDguMyA5LjRMMTEuNSAxMC42QzkuOSAxMS40IDguNyAxMS42IDcuNyAxMS4zTTE0IDE2LjlDMTMuNCAxNy4xIDEzIDE2LjkgMTIuNyAxNi4zQzEyLjQgMTUuMyAxMi42IDE0LjEgMTMuNCAxMi41TDE0LjYgMTUuNkMxNC44IDE2LjMgMTQuNiAxNi43IDE0IDE2LjlNMTUuMiAxMS42TDE0LjYgMTBWOS45TDE0LjMgOS42SDE0LjJMMTIuNiA5QzEzIDguNyAxMy40IDguNSAxMy45IDguNUMxNC40IDguNSAxNC45IDguNyAxNS4zIDkuMUMxNS43IDkuNSAxNS45IDkuOSAxNS45IDEwLjRDMTUuNyAxMC43IDE1LjUgMTEuMiAxNS4yIDExLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVlRmxvd2VyID0gXCJNMTEuNiAxM1YxMi45TDExLjMgMTIuNkgxMS4yTDkuNiAxMkMxMCAxMS43IDEwLjQgMTEuNSAxMC45IDExLjVDMTEuNCAxMS41IDExLjkgMTEuNyAxMi4zIDEyLjFDMTIuNyAxMi41IDEyLjkgMTIuOSAxMi45IDEzLjRDMTIuOSAxMy45IDEyLjggMTQuMyAxMi40IDE0LjdMMTEuNiAxM005LjcgMTkuM0M5LjQgMTguMyA5LjYgMTcuMSAxMC40IDE1LjVMMTEuNiAxOC42QzExLjggMTkuMiAxMS42IDE5LjYgMTEgMTkuOUMxMC40IDIwLjIgMTAgMjAgOS43IDE5LjNNNC4xIDEzLjFDNC4zIDEyLjUgNC43IDEyLjMgNS4zIDEyLjVMOC41IDEzLjdDNi45IDE0LjUgNS43IDE0LjcgNC43IDE0LjRDNC4xIDE0LjEgMy45IDEzLjcgNC4xIDEzLjFNMTIgOC4xSDExVjkuNUgxMC42QzkuNSA5LjUgOC42IDkuOSA3LjggMTAuN0w3LjQgMTEuM0w2IDEwLjVDNS43IDEwLjQgNS40IDEwLjQgNSAxMC40QzQuNCAxMC40IDMuOCAxMC42IDMuMyAxMVMyLjQgMTEuOCAyLjIgMTIuNEMyIDEzLjEgMiAxMy43IDIuMiAxNC40QzIuNSAxNS4xIDIuOCAxNS42IDMuMyAxNS45QzIuOSAxNy40IDMuMiAxOC43IDQuMyAxOS44QzUuMSAyMC42IDYgMjEgNy4xIDIxQzcuNiAyMSA3LjkgMjEgOC4yIDIwLjlDOC44IDIxLjcgOS42IDIyLjIgMTAuNiAyMi4yQzEwLjkgMjIuMiAxMS4zIDIyLjIgMTEuNiAyMi4xQzEyLjIgMjEuOSAxMi42IDIxLjUgMTMgMjFDMTMuNCAyMC40IDEzLjYgMTkuOSAxMy42IDE5LjNDMTMuNiAxOC45IDEzLjYgMTguNiAxMy41IDE4LjNMMTIuOSAxNi45TDEzLjUgMTYuNUMxNC4zIDE1LjcgMTQuNyAxNC42IDE0LjYgMTMuNEgxNlYxMi40SDE0LjRDMTQgMTEuMiAxMy4yIDEwLjQgMTIgMTBWOC4xTTE3LjMgNi44QzE3LjEgNi42IDE3IDYuMyAxNyA2LjFDMTcgNS44IDE3LjEgNS42IDE3LjMgNS40QzE3LjUgNS4yIDE3LjcgNS4xIDE4IDUuMVMxOC41IDUuMiAxOC43IDUuNEMxOC45IDUuNSAxOSA1LjggMTkgNi4xQzE5IDYuNCAxOC45IDYuNiAxOC43IDYuOEMxOC41IDcgMTguMyA3IDE4IDdTMTcuNSA3IDE3LjMgNi44TTIwLjcgNC4xSDE5LjZMMTkuMyAzLjJDMTkuMSAyLjUgMTguNyAyLjIgMTggMi4yQzE3LjMgMi4yIDE2LjggMi41IDE2LjcgMy4yTDE2LjQgNC4xSDE1LjNDMTQuNyA0LjEgMTQuMyA0LjQgMTQgNUMxMy44IDUuNiAxNCA2LjEgMTQuNiA2LjVMMTUuNSA3TDE1LjEgOC4yQzE0LjkgOC42IDE1IDkgMTUuMiA5LjRDMTUuNSA5LjggMTUuOCAxMCAxNi4zIDEwQzE2LjcgMTAgMTcgOS45IDE3LjIgOS43TDE4IDkuMUwxOC44IDkuOEMxOSA5LjkgMTkuMyAxMCAxOS43IDEwQzIwLjIgMTAgMjAuNSA5LjggMjAuOCA5LjRDMjEgOSAyMS4xIDguNiAyMC45IDguMkwyMC41IDdMMjEuMyA2LjVDMjEuOSA2LjEgMjIuMSA1LjYgMjEuOSA1QzIxLjcgNC4zIDIxLjMgNC4xIDIwLjcgNC4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZWhpdmVPZmZPdXRsaW5lID0gXCJNMS4xIDNMNC43IDYuNUMzLjcgNy4yIDMgOC4yIDMgOS41QzMgMTAuMSAzLjIgMTAuNyAzLjUgMTEuMkMyIDExLjYgMSAxMi45IDEgMTQuNUMxIDE1LjggMS43IDE2LjggMi43IDE3LjVDMi4yIDE4IDIgMTguNyAyIDE5LjVDMiAyMS40IDMuNiAyMyA1LjUgMjNIMTguNUMxOS4zIDIzIDIwIDIyLjcgMjAuNiAyMi4zTDIxLjMgMjNMMjIuNiAyMS43TDIuNCAxLjdMMS4xIDNNOS4yIDExSDYuNUM1LjcgMTEgNSAxMC4zIDUgOS41QzUgOC44IDUuNSA4LjIgNi4yIDhMOS4yIDExTTkgMjFINS41QzQuNyAyMSA0IDIwLjMgNCAxOS41UzQuNyAxOCA1LjUgMThIOVYyMU05LjIgMTZINC41QzMuNyAxNiAzIDE1LjMgMyAxNC41UzMuNyAxMyA0LjUgMTNIMTEuMkwxMi4yIDE0SDEyQzEwLjcgMTQgOS42IDE0LjggOS4yIDE2TTE4LjUgMjFIMTVWMThIMTYuMkwxOS4xIDIwLjlDMTguOSAyMSAxOC43IDIxIDE4LjUgMjFNNy4xIDMuOUw1LjcgMi41QzYuMyAxLjYgNy4zIDEgOC41IDFIMTUuNUMxNy40IDEgMTkgMi42IDE5IDQuNUMxOSA1LjEgMTguOCA1LjcgMTguNSA2LjJDMjAgNi42IDIxIDcuOSAyMSA5LjVDMjEgMTAuMSAyMC44IDEwLjcgMjAuNSAxMS4yQzIxLjkgMTEuNyAyMyAxMyAyMyAxNC41QzIzIDE1LjggMjIuMyAxNi44IDIxLjMgMTcuNUMyMS42IDE3LjkgMjEuOCAxOC4zIDIxLjkgMTguN0wxOS4yIDE2SDE5LjVDMjAuMyAxNiAyMSAxNS4zIDIxIDE0LjVTMjAuMyAxMyAxOS41IDEzSDE2LjJMMTQuMiAxMUgxNy41QzE4LjMgMTEgMTkgMTAuMyAxOSA5LjVTMTguMyA4IDE3LjUgOEgxMS4yTDkuMiA2SDE1LjVDMTYuMyA2IDE3IDUuMyAxNyA0LjVTMTYuMyAzIDE1LjUgM0g4LjVDNy45IDMgNy4zIDMuNCA3LjEgMy45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZWhpdmVPdXRsaW5lID0gXCJNMjMgMTQuNUMyMyAxMi45NCAyMS45NyAxMS42MyAyMC41NSAxMS4xOEMyMC44MyAxMC42OCAyMSAxMC4xMSAyMSA5LjVDMjEgNy45NCAxOS45NyA2LjYzIDE4LjU1IDYuMThDMTguODMgNS42OCAxOSA1LjExIDE5IDQuNUMxOSAyLjU3IDE3LjQzIDEgMTUuNSAxSDguNUM2LjU3IDEgNSAyLjU3IDUgNC41QzUgNS4xMSA1LjE3IDUuNjggNS40NSA2LjE4QzQuMDQgNi42MyAzIDcuOTQgMyA5LjVDMyAxMC4xMSAzLjE3IDEwLjY4IDMuNDUgMTEuMThDMi4wNCAxMS42MyAxIDEyLjk0IDEgMTQuNUMxIDE1Ljc2IDEuNjcgMTYuODQgMi42NyAxNy40NkMyLjI1IDE4LjAzIDIgMTguNzQgMiAxOS41QzIgMjEuNDMgMy41NyAyMyA1LjUgMjNIMTguNUMyMC40MyAyMyAyMiAyMS40MyAyMiAxOS41QzIyIDE4Ljc0IDIxLjc1IDE4LjAzIDIxLjMzIDE3LjQ2QzIyLjMzIDE2Ljg0IDIzIDE1Ljc2IDIzIDE0LjVNOC41IDNIMTUuNUMxNi4zMyAzIDE3IDMuNjcgMTcgNC41UzE2LjMzIDYgMTUuNSA2SDguNUM3LjY3IDYgNyA1LjMzIDcgNC41UzcuNjcgMyA4LjUgM002LjUgOEgxNy41QzE4LjMzIDggMTkgOC42NyAxOSA5LjVTMTguMzMgMTEgMTcuNSAxMUg2LjVDNS42NyAxMSA1IDEwLjMzIDUgOS41UzUuNjcgOCA2LjUgOE00IDE5LjVDNCAxOC42NyA0LjY3IDE4IDUuNSAxOEg5VjIxSDUuNUM0LjY3IDIxIDQgMjAuMzMgNCAxOS41TTE4LjUgMjFIMTVWMThIMTguNUMxOS4zMyAxOCAyMCAxOC42NyAyMCAxOS41UzE5LjMzIDIxIDE4LjUgMjFNMTkuNSAxNkgxNC44MkMxNC40IDE0Ljg0IDEzLjMgMTQgMTIgMTRTOS42IDE0Ljg0IDkuMTggMTZINC41QzMuNjcgMTYgMyAxNS4zMyAzIDE0LjVTMy42NyAxMyA0LjUgMTNIMTkuNUMyMC4zMyAxMyAyMSAxMy42NyAyMSAxNC41UzIwLjMzIDE2IDE5LjUgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVla2VlcGVyID0gXCJNMTkgNUgxNkMxNiAzLjM0IDE0LjIxIDIgMTIgMkM5Ljc5IDIgOCAzLjM0IDggNUg1QzQuNDUgNSA0IDUuNDUgNCA2UzQuNDUgNyA1IDdWMTRDNSAxNS4xMSA1LjkgMTYgNyAxNkgxN0MxOC4xMSAxNiAxOSAxNS4xMSAxOSAxNFY3QzE5LjU1IDcgMjAgNi41NSAyMCA2UzE5LjU1IDUgMTkgNU0xNyAxNEg3VjdIMTdWMTRNMTUuODYgOEMxNS45NCA4LjMyIDE2IDguNjUgMTYgOUMxNiAxMS4yMSAxNC4yMSAxMyAxMiAxM1M4IDExLjIxIDggOUM4IDguNjUgOC4wNiA4LjMyIDguMTQgOEgxMC4yOEMxMC4xMSA4LjMgMTAgOC42MyAxMCA5QzEwIDEwLjEgMTAuOSAxMSAxMiAxMVMxNCAxMC4xIDE0IDlDMTQgOC42MyAxMy44OSA4LjMgMTMuNzIgOEgxNS44Nk0yMCAxOVYyMkg0VjE5QzQgMTguMjIgNC40NyAxNy41NSA1LjE4IDE3SDEyQzkuMjggMTcgNi4xOSAxOC4yOSA2IDE5VjIwSDE4VjE5QzE3LjgxIDE4LjI5IDE0LjcyIDE3IDEyIDE3SDE4LjgyQzE5LjUzIDE3LjU1IDIwIDE4LjIyIDIwIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZXIgPSBcIk00LDJIMTlMMTcsMjJINkw0LDJNNi4yLDRMNy44LDIwSDguOEw3LjQzLDYuMzRDOC41LDYgOS44OSw1Ljg5IDExLDdDMTIuNTYsOC41NiAxNS4zMyw3LjY5IDE2LjUsNy4yM0wxNi44LDRINi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlZXJPdXRsaW5lID0gXCJNNCAyTDYgMjJIMTdMMTkgMkg0TTYuMiA0SDE2LjhMMTYuNSA3LjIzQzEzLjE4IDguNSAxMS44NSA3LjY3IDExLjM4IDcuMzFDMTEuMTMgNy4xMiAxMC43NyA2LjY5IDEwLjExIDYuMzlDOS40NSA2LjA4IDguNTUgNiA3LjUgNi4zMkM3LjA5IDYuNDMgNi43NyA2LjYxIDYuNSA2Ljc5TDYuMiA0TTguODYgOC4xMUM5LjA1IDguMTEgOS4xNiA4LjE1IDkuMjcgOC4yQzkuNSA4LjMgOS43MSA4LjU1IDEwLjE3IDguOUMxMS4wMyA5LjU2IDEzLjAzIDEwLjM2IDE2LjI2IDkuNDFMMTUuMiAyMEg3LjhMNi43MSA5LjA2QzYuNzYgOSA2LjkxIDguODkgNy4xNyA4LjcxQzcuNSA4LjUgNy45MSA4LjI4IDggOC4yNUw4IDguMjVIOC4wM0M4LjQxIDguMTQgOC42NyA4LjEgOC44NiA4LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGwgPSBcIk0yMSwxOVYyMEgzVjE5TDUsMTdWMTFDNSw3LjkgNy4wMyw1LjE3IDEwLDQuMjlDMTAsNC4xOSAxMCw0LjEgMTAsNEEyLDIgMCAwLDEgMTIsMkEyLDIgMCAwLDEgMTQsNEMxNCw0LjEgMTQsNC4xOSAxNCw0LjI5QzE2Ljk3LDUuMTcgMTksNy45IDE5LDExVjE3TDIxLDE5TTE0LDIxQTIsMiAwIDAsMSAxMiwyM0EyLDIgMCAwLDEgMTAsMjFcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsQWxlcnQgPSBcIk0yMyA3VjEzSDIxVjdNMjEgMTVIMjNWMTdIMjFNMTIgMkEyIDIgMCAwIDAgMTAgNEEyIDIgMCAwIDAgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgyMVYxOUwxOSAxN1YxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUEyIDIgMCAwIDAgMTQgNEEyIDIgMCAwIDAgMTIgMk0xMCAyMUEyIDIgMCAwIDAgMTIgMjNBMiAyIDAgMCAwIDE0IDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxBbGVydE91dGxpbmUgPSBcIk0xMiAyQTIgMiAwIDAgMCAxMCA0QTIgMiAwIDAgMCAxMCA0LjI5QzcuMTIgNS4xNCA1IDcuODIgNSAxMVYxN0wzIDE5VjIwSDIxVjE5TDE5IDE3VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QTIgMiAwIDAgMCAxNCA0QTIgMiAwIDAgMCAxMiAyTTEyIDZBNSA1IDAgMCAxIDE3IDExVjE4SDdWMTFBNSA1IDAgMCAxIDEyIDZNMjEgN1YxM0gyM1Y3SDIxTTIxIDE1VjE3SDIzVjE1SDIxTTEwIDIxQTIgMiAwIDAgMCAxMiAyM0EyIDIgMCAwIDAgMTQgMjFIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENhbmNlbCA9IFwiTTE3LjUgMTNBNC41IDQuNSAwIDAgMCAxMyAxNy41QTQuNSA0LjUgMCAwIDAgMTcuNSAyMkE0LjUgNC41IDAgMCAwIDIyIDE3LjVBNC41IDQuNSAwIDAgMCAxNy41IDEzTTE3LjUgMTQuNUEzIDMgMCAwIDEgMjAuNSAxNy41QTMgMyAwIDAgMSAyMC4wOCAxOUwxNiAxNC45MkEzIDMgMCAwIDEgMTcuNSAxNC41TTE0LjkyIDE2TDE5IDIwLjA4QTMgMyAwIDAgMSAxNy41IDIwLjVBMyAzIDAgMCAxIDE0LjUgMTcuNUEzIDMgMCAwIDEgMTQuOTIgMTZNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMS41QTYuNSA2LjUgMCAwIDEgMTEgMTcuNUE2LjUgNi41IDAgMCAxIDE3LjUgMTFBNi41IDYuNSAwIDAgMSAxOSAxMS4xOFYxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUMxNCA0LjE5IDE0IDQuMSAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJNMTAgMjFDMTAgMjIuMTEgMTAuOSAyMyAxMiAyM0MxMi41IDIzIDEyLjk3IDIyLjgxIDEzLjMzIDIyLjVBNi41IDYuNSAwIDAgMSAxMi4wMyAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsQ2FuY2VsT3V0bGluZSA9IFwiTTE3LjUgMTNBNC41IDQuNSAwIDAgMCAxMyAxNy41QTQuNSA0LjUgMCAwIDAgMTcuNSAyMkE0LjUgNC41IDAgMCAwIDIyIDE3LjVBNC41IDQuNSAwIDAgMCAxNy41IDEzTTE3LjUgMTQuNUEzIDMgMCAwIDEgMjAuNSAxNy41QTMgMyAwIDAgMSAyMC4wOCAxOUwxNiAxNC45MkEzIDMgMCAwIDEgMTcuNSAxNC41TTE0LjkyIDE2TDE5IDIwLjA4QTMgMyAwIDAgMSAxNy41IDIwLjVBMyAzIDAgMCAxIDE0LjUgMTcuNUEzIDMgMCAwIDEgMTQuOTIgMTZNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMS41QTYuNSA2LjUgMCAwIDEgMTEuMDMgMThIN1YxMUE1IDUgMCAwIDEgMTIgNkE1IDUgMCAwIDEgMTcgMTFWMTFBNi41IDYuNSAwIDAgMSAxNy41IDExQTYuNSA2LjUgMCAwIDEgMTkgMTEuMThWMTFDMTkgNy44MiAxNi44OCA1LjE0IDE0IDQuMjlDMTQgNC4xOSAxNCA0LjEgMTQgNEMxNCAyLjkgMTMuMTEgMiAxMiAyTTEwIDIxQzEwIDIyLjExIDEwLjkgMjMgMTIgMjNDMTIuNSAyMyAxMi45NyAyMi44MSAxMy4zMyAyMi41QTYuNSA2LjUgMCAwIDEgMTIuMDMgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENoZWNrID0gXCJNMTcuNzUgMjEuMTZMMTUgMTguMTZMMTYuMTYgMTdMMTcuNzUgMTguNTlMMjEuMzQgMTVMMjIuNSAxNi40MUwxNy43NSAyMS4xNk0zIDIwVjE5TDUgMTdWMTFDNSA3LjkgNy4wMyA1LjE4IDEwIDQuMjlWNEMxMCAyLjkgMTAuOSAyIDEyIDJDMTMuMTEgMiAxNCAyLjkgMTQgNFY0LjI5QzE2Ljk3IDUuMTggMTkgNy45IDE5IDExVjEyLjA4TDE4IDEyQzE0LjY5IDEyIDEyIDE0LjY5IDEyIDE4QzEyIDE4LjcgMTIuMTIgMTkuMzcgMTIuMzQgMjBIM00xMiAyM0MxMC45IDIzIDEwIDIyLjExIDEwIDIxSDEyLjhDMTMuMDQgMjEuNDEgMTMuMzMgMjEuNzkgMTMuNjUgMjIuMTNDMTMuMjkgMjIuNjYgMTIuNjkgMjMgMTIgMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENoZWNrT3V0bGluZSA9IFwiTTE3Ljc1IDIxLjE2TDE1IDE4LjE2TDE2LjE2IDE3TDE3Ljc1IDE4LjU5TDIxLjM0IDE1TDIyLjUgMTYuNDFMMTcuNzUgMjEuMTZNMTAgMjFIMTIuOEMxMy4wNCAyMS40MSAxMy4zMyAyMS43OSAxMy42NSAyMi4xM0MxMy4yOSAyMi42NiAxMi42OSAyMyAxMiAyM0MxMC45IDIzIDEwIDIyLjExIDEwIDIxTTMgMjBWMTlMNSAxN1YxMUM1IDcuOSA3LjAzIDUuMTggMTAgNC4yOVY0QzEwIDIuOSAxMC45IDIgMTIgMkMxMy4xMSAyIDE0IDIuOSAxNCA0VjQuMjlDMTYuOTcgNS4xOCAxOSA3LjkgMTkgMTFWMTIuMDhMMTggMTJMMTcgMTIuMDhWMTFDMTcgOC4yNCAxNC43NiA2IDEyIDZDOS4yNCA2IDcgOC4yNCA3IDExVjE4SDEyQzEyIDE4LjcgMTIuMTIgMTkuMzcgMTIuMzQgMjBIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTcsMTZWMTVMMTYsMTRWMTEuMzlDMTYsMTAuMyAxNS43Myw5LjM0IDE1LjIxLDguNTNDMTQuNyw3LjcyIDEzLjk2LDcuMjEgMTMsN1Y2LjVBMSwxIDAgMCwwIDEyLDUuNUExLDEgMCAwLDAgMTEsNi41VjdDMTAuMDQsNy4yMSA5LjMsNy43MiA4Ljc5LDguNTNDOC4yNyw5LjM0IDgsMTAuMyA4LDExLjM5VjE0TDcsMTVWMTZIMTdNMTMuNSwxN0gxMC41QTEuNSwxLjUgMCAwLDAgMTIsMTguNUExLjUsMS41IDAgMCwwIDEzLjUsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbENpcmNsZU91dGxpbmUgPSBcIk0xNywxNkg3VjE1TDgsMTRWMTEuMzlDOCwxMC4zIDguMjcsOS4zNCA4Ljc5LDguNTNDOS4zLDcuNzIgMTAuMDQsNy4yMSAxMSw3VjYuNUExLDEgMCAwLDEgMTIsNS41QTEsMSAwIDAsMSAxMyw2LjVWN0MxMy45Niw3LjIxIDE0LjcsNy43MiAxNS4yMSw4LjUzQzE1LjczLDkuMzQgMTYsMTAuMyAxNiwxMS4zOVYxNEwxNywxNVYxNk0xMy41LDE3QTEuNSwxLjUgMCAwLDEgMTIsMTguNUExLjUsMS41IDAgMCwxIDEwLjUsMTdIMTMuNU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbE1pbnVzID0gXCJNMjIgMTlWMTdIMTRWMTlIMjJNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMi4zNUMxMi4xMiAxOS4zNiAxMiAxOC42OCAxMiAxOEMxMiAxNC42OSAxNC42OSAxMiAxOCAxMkMxOC4zNCAxMiAxOC42NyAxMi4wMyAxOSAxMi4wOVYxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUMxNCA0LjE5IDE0IDQuMSAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJNMTAgMjFDMTAgMjIuMTEgMTAuOSAyMyAxMiAyM0MxMi42NiAyMyAxMy4yOCAyMi42NyAxMy42NSAyMi4xM0MxMy4zMyAyMS43OSAxMy4wNSAyMS40MSAxMi44MSAyMUgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsTWludXNPdXRsaW5lID0gXCJNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRWNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMi4zNUMxMi4xMiAxOS4zNiAxMiAxOC42OCAxMiAxOEg3VjExQzcgOC4yNCA5LjI0IDYgMTIgNlMxNyA4LjI0IDE3IDExVjEyLjA5QzE3LjMzIDEyLjAzIDE3LjY3IDEyIDE4IDEyQzE4LjM0IDEyIDE4LjY3IDEyLjAzIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5VjRDMTQgMi45IDEzLjExIDIgMTIgMk0xNCAxN1YxOUgyMlYxN00xMCAyMUMxMCAyMi4xMSAxMC45IDIzIDEyIDIzQzEyLjY2IDIzIDEzLjI4IDIyLjY3IDEzLjY1IDIyLjEzQzEzLjMzIDIxLjc5IDEzLjA1IDIxLjQxIDEyLjgxIDIxSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxPZmYgPSBcIk0yMC44NCwyMi43M0wxOC4xMSwyMEgzVjE5TDUsMTdWMTFDNSw5Ljg2IDUuMjksOC43MyA1LjgzLDcuNzJMMS4xMSwzTDIuMzksMS43M0wyMi4xMSwyMS40NkwyMC44NCwyMi43M00xOSwxNS44VjExQzE5LDcuOSAxNi45Nyw1LjE3IDE0LDQuMjlDMTQsNC4xOSAxNCw0LjEgMTQsNEEyLDIgMCAwLDAgMTIsMkEyLDIgMCAwLDAgMTAsNEMxMCw0LjEgMTAsNC4xOSAxMCw0LjI5QzkuMzksNC40NyA4LjgsNC43NCA4LjI2LDUuMDlMMTksMTUuOE0xMiwyM0EyLDIgMCAwLDAgMTQsMjFIMTBBMiwyIDAgMCwwIDEyLDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxPZmZPdXRsaW5lID0gXCJNMjIuMTEsMjEuNDZMMi4zOSwxLjczTDEuMTEsM0w1LjgzLDcuNzJDNS4yOSw4LjczIDUsOS44NiA1LDExVjE3TDMsMTlWMjBIMTguMTFMMjAuODQsMjIuNzNMMjIuMTEsMjEuNDZNNywxOFYxMUM3LDEwLjM5IDcuMTEsOS43OSA3LjM0LDkuMjNMMTYuMTEsMThIN00xMCwyMUgxNEEyLDIgMCAwLDEgMTIsMjNBMiwyIDAgMCwxIDEwLDIxTTguMjksNS4wOUM4LjgyLDQuNzUgOS40LDQuNSAxMCw0LjI5QzEwLDQuMTkgMTAsNC4xIDEwLDRBMiwyIDAgMCwxIDEyLDJBMiwyIDAgMCwxIDE0LDRDMTQsNC4xIDE0LDQuMTkgMTQsNC4yOUMxNi45Nyw1LjE3IDE5LDcuOSAxOSwxMVYxNS44TDE3LDEzLjhWMTFBNSw1IDAgMCwwIDEyLDZDMTEuMjIsNiAxMC40NSw2LjIgOS43Niw2LjU2TDguMjksNS4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsT3V0bGluZSA9IFwiTTE2LDE3SDdWMTAuNUM3LDggOSw2IDExLjUsNkMxNCw2IDE2LDggMTYsMTAuNU0xOCwxNlYxMC41QzE4LDcuNDMgMTUuODYsNC44NiAxMyw0LjE4VjMuNUExLjUsMS41IDAgMCwwIDExLjUsMkExLjUsMS41IDAgMCwwIDEwLDMuNVY0LjE4QzcuMTMsNC44NiA1LDcuNDMgNSwxMC41VjE2TDMsMThWMTlIMjBWMThNMTEuNSwyMkEyLDIgMCAwLDAgMTMuNSwyMEg5LjVBMiwyIDAgMCwwIDExLjUsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbFBsdXMgPSBcIk0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNE0xMiAyQTIgMiAwIDAgMCAxMCA0QTIgMiAwIDAgMCAxMCA0LjI5QzcuMTIgNS4xNCA1IDcuODIgNSAxMVYxN0wzIDE5VjIwSDEyLjM1QTYgNiAwIDAgMSAxMiAxOEE2IDYgMCAwIDEgMTggMTJBNiA2IDAgMCAxIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QTIgMiAwIDAgMCAxNCA0QTIgMiAwIDAgMCAxMiAyTTEwIDIxQTIgMiAwIDAgMCAxMiAyM0EyIDIgMCAwIDAgMTMuNjUgMjIuMTNBNiA2IDAgMCAxIDEyLjgxIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxQbHVzT3V0bGluZSA9IFwiTTEyIDJDMTAuOSAyIDEwIDIuOSAxMCA0QzEwIDQuMSAxMCA0LjE5IDEwIDQuMjlDNy4xMiA1LjE0IDUgNy44MiA1IDExVjE3TDMgMTlWMjBIMTIuMzVDMTIuMTIgMTkuMzYgMTIgMTguNjggMTIgMThIN1YxMUM3IDguMjQgOS4yNCA2IDEyIDZDMTQuNzYgNiAxNyA4LjI0IDE3IDExVjEyLjA5QzE3LjMzIDEyLjAzIDE3LjY3IDEyIDE4IDEyQzE4LjM0IDEyIDE4LjY3IDEyLjAzIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QzE0IDQuMTkgMTQgNC4xIDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMk0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNE0xMCAyMUMxMCAyMi4xMSAxMC45IDIzIDEyIDIzQzEyLjY2IDIzIDEzLjI4IDIyLjY3IDEzLjY1IDIyLjEzQzEzLjMzIDIxLjc5IDEzLjA1IDIxLjQxIDEyLjgxIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxSZW1vdmUgPSBcIk0yMC4xMiAxNC40NkwxOCAxNi41OUwxNS44OCAxNC40NkwxNC40NiAxNS44OEwxNi41OSAxOEwxNC40NiAyMC4xMkwxNS44OCAyMS41NEwxOCAxOS40MUwyMC4xMiAyMS41NEwyMS41NCAyMC4xMkwxOS40MSAxOEwyMS41NCAxNS44OE0xMiAyQzEwLjkgMiAxMCAyLjkgMTAgNEMxMCA0LjEgMTAgNC4xOSAxMCA0LjI5QzcuMTIgNS4xNCA1IDcuODIgNSAxMVYxN0wzIDE5VjIwSDEyLjM1QzEyLjEyIDE5LjM2IDEyIDE4LjY4IDEyIDE4QzEyIDE0LjY5IDE0LjY5IDEyIDE4IDEyQzE4LjM0IDEyIDE4LjY3IDEyLjAzIDE5IDEyLjA5VjExQzE5IDcuODIgMTYuODggNS4xNCAxNCA0LjI5QzE0IDQuMTkgMTQgNC4xIDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMk0xMCAyMUMxMCAyMi4xMSAxMC45IDIzIDEyIDIzQzEyLjY2IDIzIDEzLjI4IDIyLjY3IDEzLjY1IDIyLjEzQzEzLjMzIDIxLjc5IDEzLjA1IDIxLjQxIDEyLjgxIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJlbGxSZW1vdmVPdXRsaW5lID0gXCJNMjAuMTIgMTQuNDZMMTggMTYuNTlMMTUuODggMTQuNDZMMTQuNDYgMTUuODhMMTYuNTkgMThMMTQuNDYgMjAuMTJMMTUuODggMjEuNTRMMTggMTkuNDFMMjAuMTIgMjEuNTRMMjEuNTQgMjAuMTJMMTkuNDEgMThMMjEuNTQgMTUuODhNMTIgMkMxMC45IDIgMTAgMi45IDEwIDRDMTAgNC4xIDEwIDQuMTkgMTAgNC4yOUM3LjEyIDUuMTQgNSA3LjgyIDUgMTFWMTdMMyAxOVYyMEgxMi4zNUMxMi4xMiAxOS4zNiAxMiAxOC42OCAxMiAxOEg3VjExQTUgNSAwIDAgMSAxMiA2QTUgNSAwIDAgMSAxNyAxMVYxMi4wOUMxNy4zMyAxMi4wNCAxNy42NiAxMiAxOCAxMkMxOC4zNCAxMiAxOC42NyAxMi4wMyAxOSAxMi4wOVYxMUMxOSA3LjgyIDE2Ljg4IDUuMTQgMTQgNC4yOUMxNCA0LjE5IDE0IDQuMSAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJNMTAgMjFDMTAgMjIuMTEgMTAuOSAyMyAxMiAyM0MxMi42NiAyMyAxMy4yOCAyMi42NyAxMy42NSAyMi4xM0MxMy4zMyAyMS43OSAxMy4wNSAyMS40MSAxMi44MSAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsUmluZyA9IFwiTTIxLDE5VjIwSDNWMTlMNSwxN1YxMUM1LDcuOSA3LjAzLDUuMTcgMTAsNC4yOUMxMCw0LjE5IDEwLDQuMSAxMCw0QTIsMiAwIDAsMSAxMiwyQTIsMiAwIDAsMSAxNCw0QzE0LDQuMSAxNCw0LjE5IDE0LDQuMjlDMTYuOTcsNS4xNyAxOSw3LjkgMTksMTFWMTdMMjEsMTlNMTQsMjFBMiwyIDAgMCwxIDEyLDIzQTIsMiAwIDAsMSAxMCwyMU0xOS43NSwzLjE5TDE4LjMzLDQuNjFDMjAuMDQsNi4zIDIxLDguNiAyMSwxMUgyM0MyMyw4LjA3IDIxLjg0LDUuMjUgMTkuNzUsMy4xOU0xLDExSDNDMyw4LjYgMy45Niw2LjMgNS42Nyw0LjYxTDQuMjUsMy4xOUMyLjE2LDUuMjUgMSw4LjA3IDEsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbFJpbmdPdXRsaW5lID0gXCJNMTAsMjFIMTRBMiwyIDAgMCwxIDEyLDIzQTIsMiAwIDAsMSAxMCwyMU0yMSwxOVYyMEgzVjE5TDUsMTdWMTFDNSw3LjkgNy4wMyw1LjE3IDEwLDQuMjlDMTAsNC4xOSAxMCw0LjEgMTAsNEEyLDIgMCAwLDEgMTIsMkEyLDIgMCAwLDEgMTQsNEMxNCw0LjEgMTQsNC4xOSAxNCw0LjI5QzE2Ljk3LDUuMTcgMTksNy45IDE5LDExVjE3TDIxLDE5TTE3LDExQTUsNSAwIDAsMCAxMiw2QTUsNSAwIDAsMCA3LDExVjE4SDE3VjExTTE5Ljc1LDMuMTlMMTguMzMsNC42MUMyMC4wNCw2LjMgMjEsOC42IDIxLDExSDIzQzIzLDguMDcgMjEuODQsNS4yNSAxOS43NSwzLjE5TTEsMTFIM0MzLDguNiAzLjk2LDYuMyA1LjY3LDQuNjFMNC4yNSwzLjE5QzIuMTYsNS4yNSAxLDguMDcgMSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCZWxsU2xlZXAgPSBcIk0xMCwyMUgxNEEyLDIgMCAwLDEgMTIsMjNBMiwyIDAgMCwxIDEwLDIxTTIxLDE5VjIwSDNWMTlMNSwxN1YxMUM1LDcuOSA3LjAzLDUuMTcgMTAsNC4yOUMxMCw0LjE5IDEwLDQuMSAxMCw0QTIsMiAwIDAsMSAxMiwyQTIsMiAwIDAsMSAxNCw0QzE0LDQuMSAxNCw0LjE5IDE0LDQuMjlDMTYuOTcsNS4xNyAxOSw3LjkgMTksMTFWMTdMMjEsMTlNMTUsOUg5VjExSDEyLjI0TDksMTMuN1YxNkgxNVYxNEgxMS43NkwxNSwxMS4zVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmVsbFNsZWVwT3V0bGluZSA9IFwiTTEwLDIxSDE0QTIsMiAwIDAsMSAxMiwyM0EyLDIgMCAwLDEgMTAsMjFNMjEsMTlWMjBIM1YxOUw1LDE3VjExQzUsNy45IDcuMDMsNS4xNyAxMCw0LjI5QzEwLDQuMTkgMTAsNC4xIDEwLDRBMiwyIDAgMCwxIDEyLDJBMiwyIDAgMCwxIDE0LDRDMTQsNC4xIDE0LDQuMTkgMTQsNC4yOUMxNi45Nyw1LjE3IDE5LDcuOSAxOSwxMVYxN0wyMSwxOU0xNywxMUE1LDUgMCAwLDAgMTIsNkE1LDUgMCAwLDAgNywxMVYxOEgxN1YxMU05LDlWMTFIMTIuMjRMOSwxMy43VjE2SDE1VjE0SDExLjc2TDE1LDExLjNWOUg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJldGEgPSBcIk05LjIzLDE3LjU5VjIzLjEySDYuODhWNi43MkM2Ljg4LDUuMjcgNy4zMSw0LjEzIDguMTYsMy4yOEM5LDIuNDMgMTAuMTcsMiAxMS42MSwyQzEzLDIgMTQuMDcsMi4zNCAxNC44NywzQzE1LjY2LDMuNjggMTYuMDUsNC42MiAxNi4wNSw1LjgxQzE2LjA1LDYuNjMgMTUuNzksNy40IDE1LjI3LDguMTFDMTQuNzUsOC44MiAxNC4wOCw5LjMxIDEzLjI1LDkuNThWOS42MkMxNC41LDkuODIgMTUuNDcsMTAuMjcgMTYuMTMsMTFDMTYuNzksMTEuNzEgMTcuMTIsMTIuNjIgMTcuMTIsMTMuNzRDMTcuMTIsMTUuMDYgMTYuNjYsMTYuMTQgMTUuNzUsMTYuOTdDMTQuODMsMTcuOCAxMy42MywxOC4yMSAxMi4xMywxOC4yMUMxMS4wNywxOC4yMSAxMC4xLDE4IDkuMjMsMTcuNTlNMTAuNzIsMTAuNzVWOC44M0MxMS41OSw4LjcyIDEyLjMsOC40IDEyLjg3LDcuODZDMTMuNDMsNy4zMSAxMy43MSw2LjcgMTMuNzEsNkMxMy43MSw0LjYyIDEzLDMuOTIgMTEuNiwzLjkyQzEwLjg0LDMuOTIgMTAuMjUsNC4xNiA5Ljg0LDQuNjVDOS40Myw1LjE0IDkuMjMsNS44MiA5LjIzLDYuNzFWMTUuNUMxMC4xNCwxNi4wMyAxMS4wMywxNi4yOSAxMS44OSwxNi4yOUMxMi43MywxNi4yOSAxMy4zOSwxNi4wNyAxMy44NiwxNS42NEMxNC4zMywxNS4yIDE0LjU2LDE0LjU4IDE0LjU2LDEzLjc5QzE0LjU2LDEyIDEzLjI4LDExIDEwLjcyLDEwLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJldGFtYXggPSBcIk00LDVBMiwyIDAgMCwwIDIsN1YxN0EyLDIgMCAwLDAgNCwxOUgyMEEyLDIgMCAwLDAgMjIsMTdWN0EyLDIgMCAwLDAgMjAsNUg0TTgsOUE0LDQgMCAwLDEgMTIsMTNBNCw0IDAgMCwxIDgsMTdBNCw0IDAgMCwxIDQsMTNBNCw0IDAgMCwxIDgsOU0xMyw5SDIwVjE3SDEzVjlNOCwxMUEyLDIgMCAwLDAgNiwxM0EyLDIgMCAwLDAgOCwxNUEyLDIgMCAwLDAgMTAsMTNBMiwyIDAgMCwwIDgsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlhdGhsb24gPSBcIk0xMi44OCwzLjY0QzEzLjY1LDMuNjQgMTQuMjgsNC4yNyAxNC4yOCw1LjA0QzE0LjI4LDUuODEgMTMuNjUsNi40NCAxMi44OCw2LjQ0QzEyLjExLDYuNDQgMTEuNSw1LjgxIDExLjUsNS4wNEMxMS41LDQuMjcgMTIuMTEsMy42NCAxMi44OCwzLjY0TTE1LDEzSDE2LjVWMTlIMTVWMTNNMTUsOC41SDE2LjVWMTBIMTVWOC41TTEwLjA0LDIuNkw4LDIuMDRMNi4wNiw4LjU4TDMuOSwxMS40Mkw3LjE3LDEyLjM3TDEwLjA0LDIuNk0xOS42NywxOC41NUMxOS4zMSwxOC45MyAxOC44OCwxOS41IDE4LjQsMTkuN0MxNy45MSwxOS45MiAxNy41NCwyMCAxNywyMEgxMy41TDEzLjQzLDE3QzEzLjQyLDE2LjgzIDEzLjM3LDE2LjY3IDEzLjI4LDE2LjVMMTAuODgsMTIuMjRMMTEuNzYsOS41QzEyLjM0LDEwLjU1IDEzLDExLjczIDEzLjA2LDExLjgzQzEzLjIxLDEyIDEzLjQ1LDEyLjEzIDEzLjY5LDEyLjEzSDE1LjlBMC44MSwwLjgxIDAgMCwwIDE2LjcxLDExLjMyQzE2LjcxLDEwLjkgMTYuMzgsMTAuNTYgMTUuOTYsMTAuNTNMMTQuMjksMTAuNEwxMi40LDdDMTIuNCw3IDEyLDYuNDIgMTEuMTQsNi40MkMxMC4yNyw2LjQyIDEwLDYuODQgOS44Myw3LjQyTDYsMjBIM1YyMkgxN0MxOC4zNywyMiAxOS41MywyMS4zNCAyMC41LDIwLjM3TDE5LjY3LDE4LjU1TTkuNzUsMTQuMzlMMTEuNjIsMTcuMzlMMTEuNzUsMjBINy43NUw5Ljc1LDE0LjM5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpY3ljbGUgPSBcIk0xOSAxMEMxOC40NCAxMCAxNy45MSAxMC4xMSAxNy40MSAxMC4yOEwxNC40NiA0LjVIMTFWNkgxMy41NEwxNC40MiA3LjcyTDEyIDEzLjEzTDEwLjIzIDguOTVDMTAuNSA4Ljg1IDEwLjc0IDguNTggMTAuNzQgOC4yNUMxMC43NCA3Ljg0IDEwLjQxIDcuNSAxMCA3LjVIOEM3LjU4IDcuNSA3LjI0IDcuODQgNy4yNCA4LjI1UzcuNTggOSA4IDlIOC42MUwxMC44NiAxNC4yNUg5LjkyQzkuNTYgMTEuODUgNy41IDEwIDUgMTBDMi4yNCAxMCAwIDEyLjI0IDAgMTVTMi4yNCAyMCA1IDIwQzcuNSAyMCA5LjU2IDE4LjE1IDkuOTIgMTUuNzVIMTIuNUwxNS4yOSA5LjQzTDE2LjA4IDEwLjk2QzE0LjgyIDExLjg3IDE0IDEzLjM0IDE0IDE1QzE0IDE3Ljc2IDE2LjI0IDIwIDE5IDIwUzI0IDE3Ljc2IDI0IDE1IDIxLjc2IDEwIDE5IDEwTTUgMTguNUMzLjA3IDE4LjUgMS41IDE2LjkzIDEuNSAxNVMzLjA3IDExLjUgNSAxMS41QzYuNjcgMTEuNSA4LjA3IDEyLjY4IDguNDEgMTQuMjVINFYxNS43NUg4LjQxQzguMDcgMTcuMzIgNi42NyAxOC41IDUgMTguNU0xOSAxOC41QzE3LjA3IDE4LjUgMTUuNSAxNi45MyAxNS41IDE1QzE1LjUgMTMuOTIgMTYgMTIuOTcgMTYuNzcgMTIuMzNMMTguNTcgMTUuODVMMTkuODkgMTUuMTNMMTguMSAxMS42M0MxOC4zOSAxMS41NiAxOC42OSAxMS41IDE5IDExLjVDMjAuOTMgMTEuNSAyMi41IDEzLjA3IDIyLjUgMTVTMjAuOTMgMTguNSAxOSAxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpY3ljbGVCYXNrZXQgPSBcIk0xMS43NCAxMy4zNkwxNC4xNCA3LjcxTDEzLjA2IDUuNUgxMC41VjRIMTRMMTQuNzMgNS41SDIxLjc1TDIwLjc1IDlIMTYuNDRMMTcuMTEgMTAuMzdDMTcuNjkgMTAuMTMgMTguMzMgMTAgMTkgMTBDMjEuNzYgMTAgMjQgMTIuMjQgMjQgMTVDMjQgMTcuNzYgMjEuNzYgMjAgMTkgMjBDMTYuMjQgMjAgMTQgMTcuNzYgMTQgMTVDMTQgMTMuNDUgMTQuNzEgMTIuMDYgMTUuODIgMTEuMTVMMTUgOS41TDEyLjI1IDE2SDkuOUM5LjQ0IDE4LjI4IDcuNDIgMjAgNSAyMEMyLjI0IDIwIDAgMTcuNzYgMCAxNUMwIDEyLjI0IDIuMjQgMTAgNSAxMEM3LjU5IDEwIDkuNzIgMTEuOTcgMTAgMTQuNUgxMC41OEw4LjMgOUg3LjVDNy4wOSA5IDYuNzUgOC42NiA2Ljc1IDguMjVDNi43NSA3Ljg0IDcuMDkgNy41IDcuNSA3LjVIMTAuMjVDMTAuNjYgNy41IDExIDcuODQgMTEgOC4yNUMxMSA4LjY2IDEwLjY2IDkgMTAuMjUgOUg5Ljk3TDExLjc0IDEzLjM2TTUgMTEuNUMzLjA3IDExLjUgMS41IDEzLjA3IDEuNSAxNUMxLjUgMTYuOTMgMy4wNyAxOC41IDUgMTguNUM2LjU5IDE4LjUgNy45MyAxNy40NSA4LjM2IDE2SDRWMTQuNUg4LjQ3QzguMjIgMTIuOCA2Ljc2IDExLjUgNSAxMS41TTE5IDExLjVDMTguNTcgMTEuNSAxOC4xNSAxMS41OCAxNy43NyAxMS43MkwxOS43IDE1LjY4TDE4LjM1IDE2LjM0TDE2LjUgMTIuNTVDMTUuODggMTMuMTggMTUuNSAxNC4wNSAxNS41IDE1QzE1LjUgMTYuOTMgMTcuMDcgMTguNSAxOSAxOC41QzIwLjkzIDE4LjUgMjIuNSAxNi45MyAyMi41IDE1QzIyLjUgMTMuMDcgMjAuOTMgMTEuNSAxOSAxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpY3ljbGVFbGVjdHJpYyA9IFwiTTE5IDdDMTguNDQgNyAxNy45MSA3LjExIDE3LjQxIDcuMjhMMTQuNDYgMS41SDExVjNIMTMuNTRMMTQuNDIgNC43MkwxMiAxMC4xM0wxMC4yMyA1Ljk1QzEwLjUgNS44NSAxMC43NCA1LjU4IDEwLjc0IDUuMjVDMTAuNzQgNC44NCAxMC40MSA0LjUgMTAgNC41SDhDNy41OCA0LjUgNy4yNCA0Ljg0IDcuMjQgNS4yNVM3LjU4IDYgOCA2SDguNjFMMTAuODYgMTEuMjVIOS45MkM5LjU2IDguODUgNy41IDcgNSA3QzIuMjQgNyAwIDkuMjQgMCAxMlMyLjI0IDE3IDUgMTdDNy41IDE3IDkuNTYgMTUuMTUgOS45MiAxMi43NUgxMi41TDE1LjI5IDYuNDNMMTYuMDggNy45NkMxNC44MiA4Ljg3IDE0IDEwLjM0IDE0IDEyQzE0IDE0Ljc2IDE2LjI0IDE3IDE5IDE3UzI0IDE0Ljc2IDI0IDEyIDIxLjc2IDcgMTkgN001IDE1LjVDMy4wNyAxNS41IDEuNSAxMy45MyAxLjUgMTJTMy4wNyA4LjUgNSA4LjVDNi42NyA4LjUgOC4wNyA5LjY4IDguNDEgMTEuMjVINFYxMi43NUg4LjQxQzguMDcgMTQuMzIgNi42NyAxNS41IDUgMTUuNU0xOSAxNS41QzE3LjA3IDE1LjUgMTUuNSAxMy45MyAxNS41IDEyQzE1LjUgMTAuOTIgMTYgOS45NyAxNi43NyA5LjMzTDE4LjU3IDEyLjg1TDE5Ljg5IDEyLjEzTDE4LjEgOC42M0MxOC4zOSA4LjU2IDE4LjY5IDguNSAxOSA4LjVDMjAuOTMgOC41IDIyLjUgMTAuMDcgMjIuNSAxMlMyMC45MyAxNS41IDE5IDE1LjVNMTEgMjBIN0wxMyAyM1YyMUgxN0wxMSAxOFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCaWN5Y2xlUGVubnlGYXJ0aGluZyA9IFwiTTE1LjUgNS4wNlYySDEyVjRIMTMuNVY1LjA0QzEyLjcxIDUuMTEgMTEuOTQgNS4yNyAxMS4yIDUuNUMxMS4wMyA1LjIgMTAuNzIgNSAxMC4zNiA1SDdDNi40NSA1IDYgNS40NSA2IDZTNi40NSA3IDcgN0g4LjA1QzUuMDkgOSAzLjEyIDEyLjM2IDMgMTYuMThDMS44NSAxNi41OSAxIDE3LjY5IDEgMTlDMSAyMC42NiAyLjM0IDIyIDQgMjJTNyAyMC42NiA3IDE5QzcgMTcuNyA2LjE3IDE2LjYxIDUgMTYuMTlDNS4wNyAxNC42NyA1LjQ2IDEzLjI1IDYuMTQgMTJDNi4wNSAxMi41IDYgMTMgNiAxMy41QzYgMTguMTkgOS44MSAyMiAxNC41IDIyQzE5LjE5IDIyIDIzIDE4LjE5IDIzIDEzLjVDMjMgOS4xNCAxOS43MiA1LjU2IDE1LjUgNS4wNk00IDIwQzMuNDUgMjAgMyAxOS41NSAzIDE5UzMuNDUgMTggNCAxOCA1IDE4LjQ1IDUgMTkgNC41NSAyMCA0IDIwTTE0LjUgMjBDMTAuOTIgMjAgOCAxNy4wOCA4IDEzLjVDOCAxMC4yNiAxMC4zOSA3LjU3IDEzLjUgNy4wOVYxNUgxNS41VjcuMDlDMTguNjEgNy41NyAyMSAxMC4yNiAyMSAxMy41QzIxIDE3LjA4IDE4LjA4IDIwIDE0LjUgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlrZSA9IFwiTTUsMjAuNUEzLjUsMy41IDAgMCwxIDEuNSwxN0EzLjUsMy41IDAgMCwxIDUsMTMuNUEzLjUsMy41IDAgMCwxIDguNSwxN0EzLjUsMy41IDAgMCwxIDUsMjAuNU01LDEyQTUsNSAwIDAsMCAwLDE3QTUsNSAwIDAsMCA1LDIyQTUsNSAwIDAsMCAxMCwxN0E1LDUgMCAwLDAgNSwxMk0xNC44LDEwSDE5VjguMkgxNS44TDEzLjg2LDQuOTNDMTMuNTcsNC40MyAxMyw0LjEgMTIuNCw0LjFDMTEuOTMsNC4xIDExLjUsNC4yOSAxMS4yLDQuNkw3LjUsOC4yOUM3LjE5LDguNiA3LDkgNyw5LjVDNywxMC4xMyA3LjMzLDEwLjY2IDcuODUsMTAuOTdMMTEuMiwxM1YxOEgxM1YxMS41TDEwLjc1LDkuODVMMTMuMDcsNy41TTE5LDIwLjVBMy41LDMuNSAwIDAsMSAxNS41LDE3QTMuNSwzLjUgMCAwLDEgMTksMTMuNUEzLjUsMy41IDAgMCwxIDIyLjUsMTdBMy41LDMuNSAwIDAsMSAxOSwyMC41TTE5LDEyQTUsNSAwIDAsMCAxNCwxN0E1LDUgMCAwLDAgMTksMjJBNSw1IDAgMCwwIDI0LDE3QTUsNSAwIDAsMCAxOSwxMk0xNiw0LjhDMTcsNC44IDE3LjgsNCAxNy44LDNDMTcuOCwyIDE3LDEuMiAxNiwxLjJDMTUsMS4yIDE0LjIsMiAxNC4yLDNDMTQuMiw0IDE1LDQuOCAxNiw0LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlrZUZhc3QgPSBcIk0xNiAxLjJDMTUgMS4yIDE0LjIgMiAxNC4yIDNTMTUgNC44IDE2IDQuOCAxNy44IDQgMTcuOCAzIDE3IDEuMiAxNiAxLjJNMTIuNCA0LjFDMTEuOTMgNC4xIDExLjUgNC4yOSAxMS4yIDQuNkw3LjUgOC4yOUM3LjE5IDguNiA3IDkgNyA5LjVDNyAxMC4xMyA3LjMzIDEwLjY2IDcuODUgMTAuOTdMMTEuMiAxM1YxOEgxM1YxMS41TDEwLjc1IDkuODVMMTMuMDcgNy41TDE0LjggMTBIMTlWOC4ySDE1LjhMMTMuODYgNC45M0MxMy41NyA0LjQzIDEzIDQuMSAxMi40IDQuMU0xMCAzSDNDMi40NSAzIDIgMi41NSAyIDJTMi40NSAxIDMgMUgxMi43OUMxMi41OCAxLjM0IDEyLjQxIDEuNzEgMTIuMzIgMi4xMUMxMS40NiAyLjEzIDEwLjY1IDIuNDUgMTAgM001IDEyQzIuMjQgMTIgMCAxNC4yNCAwIDE3UzIuMjQgMjIgNSAyMiAxMCAxOS43NiAxMCAxNyA3Ljc2IDEyIDUgMTJNNSAyMC41QzMuMDcgMjAuNSAxLjUgMTguOTMgMS41IDE3UzMuMDcgMTMuNSA1IDEzLjUgOC41IDE1LjA3IDguNSAxNyA2LjkzIDIwLjUgNSAyMC41TTE5IDEyQzE2LjI0IDEyIDE0IDE0LjI0IDE0IDE3UzE2LjI0IDIyIDE5IDIyIDI0IDE5Ljc2IDI0IDE3IDIxLjc2IDEyIDE5IDEyTTE5IDIwLjVDMTcuMDcgMjAuNSAxNS41IDE4LjkzIDE1LjUgMTdTMTcuMDcgMTMuNSAxOSAxMy41IDIyLjUgMTUuMDcgMjIuNSAxNyAyMC45MyAyMC41IDE5IDIwLjVNNS4zMiAxMUgxQy40NDggMTEgMCAxMC41NSAwIDEwUy40NDggOSAxIDlINS4wNUM1LjAzIDkuMTYgNSA5LjMzIDUgOS41QzUgMTAuMDMgNS4xMiAxMC41NCA1LjMyIDExTTYgN0gyQzEuNDUgNyAxIDYuNTUgMSA2UzEuNDUgNSAyIDVINy45N0w2LjA5IDYuODdDNi4wNSA2LjkxIDYgNi45NiA2IDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlsbGJvYXJkID0gXCJNMjAgMjJIMThWMTdIMjBNNiAyMkg0VjE3SDZNMjMgNFYxM0EyIDIgMCAwIDEgMjEgMTVIM0EyIDIgMCAwIDEgMSAxM1Y0QTIgMiAwIDAgMSAzIDJIMjFBMiAyIDAgMCAxIDIzIDRNMjEgNEgzVjEzSDIxTTIwIDZIMTVWOEgyME0xOCA5SDE1VjExSDE4TTE0IDExSDRMNi43MyA3LjM2TDguNzMgMTAuMDlMOS40NiA5LjU1TDguMiA3LjgyTDkuOTEgNS41NVpcIjtcclxuZXhwb3J0IHZhciBtZGlCaWxsaWFyZHMgPSBcIk0xMSwxM0gxM1YxNUgxMU0xMSw5SDEzVjExSDExTTExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEwLjVWOUEyLDIgMCAwLDAgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgOSwxMy41VjE1QTIsMiAwIDAsMCAxMSwxN00xMiwxQzUuOTIsMSAxLDUuOTIgMSwxMkMxLDE4LjA4IDUuOTIsMjMgMTIsMjNDMTguMDgsMjMgMjMsMTguMDggMjMsMTJDMjMsNS45MiAxOC4wOCwxIDEyLDFNMTIsMTlBNyw3IDAgMCwxIDUsMTJBNyw3IDAgMCwxIDEyLDVBNyw3IDAgMCwxIDE5LDEyQTcsNyAwIDAsMSAxMiwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCaWxsaWFyZHNSYWNrID0gXCJNMjAuMzEsMTYuNDRMMTQuNTQsNi40N0MxMy43Miw1LjA0IDExLjg5LDQuNTUgMTAuNDYsNS4zOEMxMCw1LjY0IDkuNjMsNiA5LjM2LDYuNDdMMy42LDE2LjQ0QzIuNzcsMTcuODcgMy4yNiwxOS42OSA0LjY5LDIwLjVDNS4xNCwyMC43OCA1LjY1LDIwLjkyIDYuMTgsMjAuOTJIMTcuNzNDMTkuMzgsMjAuOTEgMjAuNzIsMTkuNTcgMjAuNzEsMTcuOTJDMjAuNzEsMTcuNCAyMC41NywxNi44OSAyMC4zMSwxNi40NE01LjM3LDE3LjQzTDExLjExLDcuNDdDMTEuMzgsNyAxMiw2LjgyIDEyLjQ2LDcuMUMxMi42Miw3LjE4IDEyLjc1LDcuMzEgMTIuODQsNy40N0wxOC41OCwxNy40M0MxOC44NSwxNy45MSAxOC42OSwxOC41IDE4LjIxLDE4Ljc5QzE4LjA2LDE4Ljg4IDE3Ljg5LDE4LjkzIDE3LjcyLDE4LjkzSDYuMjFDNS42NiwxOC45MiA1LjIxLDE4LjQ3IDUuMjIsMTcuOTJDNS4yMiwxNy43NSA1LjI2LDE3LjU4IDUuMzUsMTcuNDNINS4zN00xMS45NywxMy40NUMxMC44NywxMy40NSAxMCwxMi41NiAxMCwxMS40NkMxMCwxMC4zNSAxMC44Nyw5LjQ2IDExLjk3LDkuNDZBMiwyIDAgMCwxIDEzLjk3LDExLjQ2QzEzLjk3LDEyLjU2IDEzLjA3LDEzLjQ1IDExLjk1LDEzLjQ1SDExLjk3TTkuNDYsMTcuOTNDOC4zNiwxNy45MyA3LjQ3LDE3LjA0IDcuNDcsMTUuOTRDNy40NywxNC44NCA4LjM2LDEzLjk1IDkuNDYsMTMuOTVDMTAuNTYsMTMuOTUgMTEuNDYsMTQuODQgMTEuNDYsMTUuOTRDMTEuNDYsMTcuMDQgMTAuNTYsMTcuOTMgOS40NiwxNy45M00xNC40NCwxNy45M0EyLDIgMCAwLDEgMTIuNDUsMTUuOTRBMiwyIDAgMCwxIDE0LjQ0LDEzLjk1QzE1LjU0LDEzLjk1IDE2LjQ0LDE0Ljg0IDE2LjQ0LDE1Ljk0QzE2LjQ0LDE3LjA0IDE1LjU0LDE3LjkzIDE0LjQ0LDE3LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpbm9jdWxhcnMgPSBcIk0xMSw2SDEzVjEzSDExVjZNOSwyMEExLDEgMCAwLDEgOCwyMUg1QTEsMSAwIDAsMSA0LDIwVjE1TDYsNkgxMFYxM0ExLDEgMCAwLDEgOSwxNFYyME0xMCw1SDdWM0gxMFY1TTE1LDIwVjE0QTEsMSAwIDAsMSAxNCwxM1Y2SDE4TDIwLDE1VjIwQTEsMSAwIDAsMSAxOSwyMUgxNkExLDEgMCAwLDEgMTUsMjBNMTQsNVYzSDE3VjVIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmlvID0gXCJNMTcsMTJIMjBBMiwyIDAgMCwxIDIyLDE0VjE3QTIsMiAwIDAsMSAyMCwxOUgxN0EyLDIgMCAwLDEgMTUsMTdWMTRBMiwyIDAgMCwxIDE3LDEyTTE3LDE0VjE3SDIwVjE0SDE3TTIsN0g3QTIsMiAwIDAsMSA5LDlWMTFBMiwyIDAgMCwxIDcsMTNBMiwyIDAgMCwxIDksMTVWMTdBMiwyIDAgMCwxIDcsMTlIMlYxM0wyLDdNNCw5VjEySDdWOUg0TTQsMTdIN1YxNEg0VjE3TTExLDEzSDEzVjE5SDExVjEzTTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCaW9oYXphcmQgPSBcIk0yMywxNi4wNkMyMywxNi4yOSAyMywxNi41IDIyLjk2LDE2LjdDMjIuNzgsMTQuMTQgMjAuNjQsMTIuMTEgMTgsMTIuMTFDMTcuNjMsMTIuMTEgMTcuMjcsMTIuMTYgMTYuOTIsMTIuMjNDMTYuOTYsMTIuNSAxNywxMi43MyAxNywxM0MxNywxNS4zNSAxNS4zMSwxNy4zMiAxMy4wNywxNy44MUMxMy40MiwyMC4wNSAxNS4zMSwyMS43OSAxNy42NSwyMS45NkMxNy40MywyMiAxNy4yMiwyMiAxNywyMkMxNC45MiwyMiAxMy4wNywyMC45NCAxMiwxOS4zNEMxMC45MywyMC45NCA5LjA5LDIyIDcsMjJDNi43OCwyMiA2LjU3LDIyIDYuMzUsMjEuOTZDOC42OSwyMS43OSAxMC41NywyMC4wNiAxMC45MywxNy44MUM4LjY4LDE3LjMyIDcsMTUuMzUgNywxM0M3LDEyLjczIDcuMDQsMTIuNSA3LjA3LDEyLjIzQzYuNzMsMTIuMTYgNi4zNywxMi4xMSA2LDEyLjExQzMuMzYsMTIuMTEgMS4yMiwxNC4xNCAxLjAzLDE2LjdDMSwxNi41IDEsMTYuMjkgMSwxNi4wNkMxLDEyLjg1IDMuNTksMTAuMjQgNi44MSwxMC4xNEM2LjMsOS4yNyA2LDguMjUgNiw3LjE3QzYsNC45NCA3LjIzLDMgOS4wNiwyQzcuODEsMi45IDcsNC4zNCA3LDZDNyw3LjM1IDcuNTYsOC41OSA4LjQ3LDkuNUM5LjM4LDguNTkgMTAuNjIsOC4wNCAxMiw4LjA0QzEzLjM3LDguMDQgMTQuNjIsOC41OSAxNS41LDkuNUMxNi40Myw4LjU5IDE3LDcuMzUgMTcsNkMxNyw0LjM0IDE2LjE4LDIuOSAxNC45NCwyQzE2Ljc3LDMgMTgsNC45NCAxOCw3LjE3QzE4LDguMjUgMTcuNyw5LjI3IDE3LjE5LDEwLjE0QzIwLjQyLDEwLjI0IDIzLDEyLjg1IDIzLDE2LjA2TTkuMjcsMTAuMTFDMTAuMDUsMTAuNjIgMTEsMTAuOTIgMTIsMTAuOTJDMTMsMTAuOTIgMTMuOTUsMTAuNjIgMTQuNzMsMTAuMTFDMTQsOS40NSAxMy4wNiw5LjAzIDEyLDkuMDNDMTAuOTQsOS4wMyAxMCw5LjQ1IDkuMjcsMTAuMTFNMTIsMTQuNDdDMTIuODIsMTQuNDcgMTMuNSwxMy44IDEzLjUsMTNBMS41LDEuNSAwIDAsMCAxMiwxMS41QTEuNSwxLjUgMCAwLDAgMTAuNSwxM0MxMC41LDEzLjggMTEuMTcsMTQuNDcgMTIsMTQuNDdNMTAuOTcsMTYuNzlDMTAuODcsMTQuOSA5LjcxLDEzLjI5IDguMDUsMTIuNTVDOC4wMywxMi43IDgsMTIuODQgOCwxM0M4LDE0LjgyIDkuMjcsMTYuMzQgMTAuOTcsMTYuNzlNMTUuOTYsMTIuNTVDMTQuMjksMTMuMjkgMTMuMTIsMTQuOSAxMywxNi43OUMxNC43MywxNi4zNCAxNiwxNC44MiAxNiwxM0MxNiwxMi44NCAxNS45NywxMi43IDE1Ljk2LDEyLjU1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpcmQgPSBcIk0yMyAxMS41TDE5Ljk1IDEwLjM3QzE5LjY5IDkuMjIgMTkuMDQgOC41NiAxOS4wNCA4LjU2QzE3LjQgNi45MiAxNC43NSA2LjkyIDEzLjExIDguNTZMMTEuNjMgMTAuMDRMNSAzQzQgNyA1IDExIDcuNDUgMTQuMjJMMiAxOS41QzIgMTkuNSAxMC44OSAyMS41IDE2LjA3IDE3LjQ1QzE4LjgzIDE1LjI5IDE5LjQ1IDE0LjAzIDE5Ljg0IDEyLjdMMjMgMTEuNU0xNy43MSAxMS43MkMxNy4zMiAxMi4xMSAxNi42OCAxMi4xMSAxNi4yOSAxMS43MkMxNS45IDExLjMzIDE1LjkgMTAuNyAxNi4yOSAxMC4zMUMxNi42OCA5LjkyIDE3LjMyIDkuOTIgMTcuNzEgMTAuMzFDMTguMSAxMC43IDE4LjEgMTEuMzMgMTcuNzEgMTEuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQml0YnVja2V0ID0gXCJNMi42NSAzQzIuMyAzIDIgMy4zIDIgMy42NUMyIDMuNjkgMiAzLjczIDIgMy43N0w0LjczIDIwLjI3QzQuOCAyMC42OSA1LjE2IDIxIDUuNTggMjFIMTguNjNDMTguOTQgMjEgMTkuMjIgMjAuNzggMTkuMjcgMjAuNDZMMjIgMy43N0MyMi4wNSAzLjQyIDIxLjgxIDMuMDkgMjEuNDYgMy4wNEMyMS40MyAzLjAzIDIxLjM5IDMuMDMgMjEuMzUgMy4wM0wyLjY1IDNNMTQuMSAxNC45NUg5Ljk0TDguODEgOS4wN0gxNS4xMUwxNC4xIDE0Ljk1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJpdGNvaW4gPSBcIk0xNC4yNCAxMC41NkMxMy45MyAxMS44IDEyIDExLjE3IDExLjQgMTFMMTEuOTUgOC44MkMxMi41NyA5IDE0LjU2IDkuMjYgMTQuMjQgMTAuNTZNMTEuMTMgMTIuMTJMMTAuNTMgMTQuNTNDMTEuMjcgMTQuNzIgMTMuNTYgMTUuNDUgMTMuOSAxNC4wOUMxNC4yNiAxMi42NyAxMS44NyAxMi4zIDExLjEzIDEyLjEyTTIxLjcgMTQuNDJDMjAuMzYgMTkuNzggMTQuOTQgMjMuMDQgOS41OCAyMS43QzQuMjIgMjAuMzYgLjk2MyAxNC45NCAyLjMgOS41OEMzLjY0IDQuMjIgOS4wNiAuOTY0IDE0LjQyIDIuM0MxOS43NyAzLjY0IDIzLjAzIDkuMDYgMjEuNyAxNC40Mk0xNC4yMSA4LjA1TDE0LjY2IDYuMjVMMTMuNTYgNkwxMy4xMiA3LjczQzEyLjgzIDcuNjYgMTIuNTQgNy41OSAxMi4yNCA3LjUzTDEyLjY4IDUuNzZMMTEuNTkgNS41TDExLjE0IDcuMjlDMTAuOSA3LjIzIDEwLjY2IDcuMTggMTAuNDQgNy4xMkwxMC40NCA3LjEyTDguOTMgNi43NEw4LjYzIDcuOTFDOC42MyA3LjkxIDkuNDUgOC4xIDkuNDMgOC4xMUM5Ljg4IDguMjIgOS45NiA4LjUgOS45NCA4Ljc1TDguNzEgMTMuNjhDOC42NiAxMy44MiA4LjUgMTQgOC4yMSAxMy45NUM4LjIyIDEzLjk2IDcuNDEgMTMuNzUgNy40MSAxMy43NUw2Ljg3IDE1TDguMjkgMTUuMzZDOC41NiAxNS40MyA4LjgyIDE1LjUgOS4wOCAxNS41Nkw4LjYyIDE3LjM4TDkuNzIgMTcuNjZMMTAuMTcgMTUuODVDMTAuNDcgMTUuOTMgMTAuNzYgMTYgMTEuMDQgMTYuMDhMMTAuNTkgMTcuODdMMTEuNjkgMTguMTVMMTIuMTUgMTYuMzNDMTQgMTYuNjggMTUuNDIgMTYuNTQgMTYgMTQuODVDMTYuNSAxMy41IDE2IDEyLjcgMTUgMTIuMTlDMTUuNzIgMTIgMTYuMjYgMTEuNTUgMTYuNDEgMTAuNTdDMTYuNjEgOS4yNCAxNS41OSA4LjUzIDE0LjIxIDguMDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxhY2tNZXNhID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjM5IDUuMDUsMTYuNTMgNi43MSwxOEg5VjEySDE3TDE5LjE1LDE1LjU5QzE5LjY5LDE0LjUgMjAsMTMuMjkgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxlbmRlciA9IFwiTTE5LDVIMTcuOEwxOCwySDRMNSw0SDZMNi45NCwxNi4xOUw1LDIySDE5TDE3LjA2LDE2LjE3TDE3LjIsMTRIMTlDMjAuMywxNCAyMSwxMi45NyAyMSwxMlY3QzIxLDUuNyAxOS45Nyw1IDE5LDVNMTIsMjBBMS41LDEuNSAwIDAsMSAxMC41LDE4LjVBMS41LDEuNSAwIDAsMSAxMiwxN0ExLjUsMS41IDAgMCwxIDEzLjUsMTguNUExLjUsMS41IDAgMCwxIDEyLDIwTTE1LjEzLDE1SDguODVMOC43LDEzSDEzVjEySDguNjJMOC40NywxMEgxM1Y5SDguMzlMOC4yNCw3SDEzVjZIOC4xNkw4LDRIMTUuODZMMTUuMTMsMTVNMTksMTJIMTcuMzNMMTcuNjcsN0gxOVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCbGVuZGVyU29mdHdhcmUgPSBcIk0xMi41OCwzLjEyVjMuMTNDMTIuMjcsMy4xMyAxMS45NiwzLjIyIDExLjcxLDMuMzlDMTEuMjEsMy43NCAxMS4xNSw0LjMyIDExLjYsNC42OUwxNC40Niw3TDUuNzMsNy4wM0g1LjcyQzUsNy4wMyA0LjMsNy41IDQuMTYsOC4xQzQsOC43MSA0LjUsOS4yMiA1LjI2LDkuMjJMOS42OSw5LjIxTDEuNzYsMTUuM0MxLDE1Ljg3IDAuNzcsMTYuODIgMS4yNCwxNy40MkMxLjcyLDE4LjAzIDIuNzMsMTguMDMgMy41LDE3LjQyTDcuOCwxMy44OUM3LjgsMTMuODkgNy43MywxNC4zNyA3Ljc0LDE0LjY1QzcuNzQsMTQuOTQgNy44NCwxNS41IDcuOTcsMTUuOTNDOC4yNiwxNi44NiA4Ljc1LDE3LjcxIDkuNDMsMTguNDZDMTAuMTMsMTkuMjMgMTEsMTkuODUgMTIsMjAuMjlDMTMuMDMsMjAuNzYgMTQuMTcsMjEgMTUuMzQsMjFDMTYuNSwyMSAxNy42NSwyMC43NSAxOC42OSwyMC4yOEMxOS42OSwxOS44NCAyMC41NSwxOS4yMSAyMS4yNSwxOC40NEMyMS45MywxNy42OSAyMi40MiwxNi44MyAyMi43MSwxNS45MUMyMi44NSwxNS40NCAyMi45NCwxNC45NyAyMywxNC41QzIzLDE0LjAzIDIzLDEzLjU2IDIyLjk0LDEzLjA5QzIyLjgxLDEyLjE4IDIyLjUsMTEuMzIgMjIsMTAuNTRDMjEuNTYsOS44MyAyMSw5LjIgMjAuMzEsOC42N1Y4LjY3TDEzLjQyLDMuMzhDMTMuMTksMy4yMSAxMi44OSwzLjEyIDEyLjU4LDMuMTJNMTUuMzQsOS4yMUMxNi41LDkuMjEgMTcuNTksOS41OSAxOC40NiwxMC4yOUMxOC45LDEwLjY1IDE5LjI1LDExLjA3IDE5LjUsMTEuNTRDMTkuNzcsMTIgMTkuOTQsMTIuNTUgMjAsMTMuMTFDMjAuMDQsMTMuNjcgMTkuOTYsMTQuMjMgMTkuNzcsMTQuNzdDMTkuNTcsMTUuMzEgMTkuMjUsMTUuODEgMTguODIsMTYuMjZDMTcuOTMsMTcuMTYgMTYuNjksMTcuNjggMTUuMzQsMTcuNjhDMTQsMTcuNjggMTIuNzUsMTcuMTcgMTEuODYsMTYuMjdDMTEuNDMsMTUuODMgMTEuMTEsMTUuMzIgMTAuOTEsMTQuNzhDMTAuNzIsMTQuMjUgMTAuNjQsMTMuNjkgMTAuNjksMTMuMTJDMTAuNzQsMTIuNTYgMTAuOTEsMTIuMDMgMTEuMTcsMTEuNTVDMTEuNDMsMTEuMDggMTEuNzksMTAuNjYgMTIuMjMsMTAuM0MxMy4wOSw5LjU5IDE0LjE5LDkuMjEgMTUuMzQsOS4yMU0xNS40NCwxMC42MUMxNC42NiwxMC42MSAxMy45NCwxMC44OSAxMy40MSwxMS4zNEMxMi44NywxMS44IDEyLjUsMTIuNDQgMTIuNDcsMTMuMThDMTIuNDMsMTMuOTMgMTIuNzMsMTQuNjMgMTMuMjYsMTUuMTVDMTMuOCwxNS42OCAxNC41OCwxNiAxNS40NCwxNkMxNi4zLDE2IDE3LjA3LDE1LjY4IDE3LjYyLDE1LjE1QzE4LjE1LDE0LjYzIDE4LjQ1LDEzLjkzIDE4LjQxLDEzLjE4QzE4LjM3LDEyLjQ0IDE4LDExLjggMTcuNDcsMTEuMzRDMTYuOTQsMTAuODkgMTYuMjIsMTAuNjEgMTUuNDQsMTAuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxpbmRzID0gXCJNMywySDIxQTEsMSAwIDAsMSAyMiwzVjVBMSwxIDAgMCwxIDIxLDZIMjBWMTNBMSwxIDAgMCwxIDE5LDE0SDEzVjE2LjE3QzE0LjE3LDE2LjU4IDE1LDE3LjY5IDE1LDE5QTMsMyAwIDAsMSAxMiwyMkEzLDMgMCAwLDEgOSwxOUM5LDE3LjY5IDkuODMsMTYuNTggMTEsMTYuMTdWMTRINUExLDEgMCAwLDEgNCwxM1Y2SDNBMSwxIDAgMCwxIDIsNVYzQTEsMSAwIDAsMSAzLDJNMTIsMThBMSwxIDAgMCwwIDExLDE5QTEsMSAwIDAsMCAxMiwyMEExLDEgMCAwLDAgMTMsMTlBMSwxIDAgMCwwIDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsaW5kc09wZW4gPSBcIk0zIDJIMjFDMjEuNTUgMiAyMiAyLjQ1IDIyIDNWNUMyMiA1LjU1IDIxLjU1IDYgMjEgNkgyMFY3QzIwIDcuNTUgMTkuNTUgOCAxOSA4SDEzVjEwLjE3QzE0LjE3IDEwLjU4IDE1IDExLjcgMTUgMTNDMTUgMTQuNjYgMTMuNjYgMTYgMTIgMTZDMTAuMzQgMTYgOSAxNC42NiA5IDEzQzkgMTEuNjkgOS44NCAxMC41OCAxMSAxMC4xN1Y4SDVDNC40NSA4IDQgNy41NSA0IDdWNkgzQzIuNDUgNiAyIDUuNTUgMiA1VjNDMiAyLjQ1IDIuNDUgMiAzIDJNMTIgMTJDMTEuNDUgMTIgMTEgMTIuNDUgMTEgMTNDMTEgMTMuNTUgMTEuNDUgMTQgMTIgMTRDMTIuNTUgMTQgMTMgMTMuNTUgMTMgMTNDMTMgMTIuNDUgMTIuNTUgMTIgMTIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxvY2tIZWxwZXIgPSBcIk0xMiwwQTEyLDEyIDAgMCwxIDI0LDEyQTEyLDEyIDAgMCwxIDEyLDI0QTEyLDEyIDAgMCwxIDAsMTJBMTIsMTIgMCAwLDEgMTIsME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJDMiwxNC40IDIuODUsMTYuNiA0LjI2LDE4LjMzTDE4LjMzLDQuMjZDMTYuNiwyLjg1IDE0LjQsMiAxMiwyTTEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDkuNiAyMS4xNSw3LjQgMTkuNzQsNS42N0w1LjY3LDE5Ljc0QzcuNCwyMS4xNSA5LjYsMjIgMTIsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmxvZ2dlciA9IFwiTTEyLjUgMTBIMTBDOS40NSAxMCA5IDkuNTUgOSA5QzkgOC40NSA5LjQ1IDggMTAgOEgxMi41QzEzLjA1IDggMTMuNSA4LjQ1IDEzLjUgOUMxMy41IDkuNTUgMTMuMDUgMTAgMTIuNSAxME0xNSAxNEMxNSAxMy40NSAxNC41NSAxMyAxNCAxM0gxMEM5LjQ1IDEzIDkgMTMuNDUgOSAxNEM5IDE0LjU1IDkuNDUgMTUgMTAgMTVIMTRDMTQuNTUgMTUgMTUgMTQuNTUgMTUgMTRNMjIgNFYyMEMyMiAyMS4xMSAyMS4xMSAyMiAyMCAyMkg0QzIuODkgMjIgMiAyMS4xMSAyIDIwVjRDMiAyLjg5IDIuODkgMiA0IDJIMjBDMjEuMTEgMiAyMiAyLjg5IDIyIDRNMTggMTJDMTggMTIgMTggMTEgMTcgMTFDMTYuMDUgMTEuMDMgMTYgMTAgMTYgMTBMMTYgOEMxNiA2LjM0IDE0LjY2IDUgMTMgNUg5QzcuMzQgNSA2IDYuMzQgNiA4VjE1QzYgMTYuNjYgNy4zNCAxOCA5IDE4SDE1QzE2LjY2IDE4IDE4IDE2LjY2IDE4IDE1TDE4IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsb29kQmFnID0gXCJNMjEsN0MyMCw3IDIwLDYgMjAsNlY1SDE4VjdIMTZWNkMxNiw0LjI3IDE0Ljc1LDEgMTAsMUM1LjI1LDEgNCw0LjI3IDQsNlYxOUM0LDE5LjMzIDMuOSwyMSAyLDIxVjIzQzQuOTMsMjMgNiwyMC42MSA2LDE5VjZDNiw1Ljg4IDYuMDUsMyAxMCwzQzEzLjgzLDMgMTQsNS43IDE0LDZWN0gxMlY1SDEwVjZDMTAsNiAxMCw3IDksN0M4LDcgOCw4IDgsOFYyMEM4LDIwIDgsMjIgMTMsMjJDMTMuMjQsMjIgMTQuMTMsMjIgMTcsMjJDMjIsMjIgMjIsMjAgMjIsMjBWOEMyMiw4IDIyLDcgMjEsN00xNSwxOS40QTMsMyAwIDAsMSAxMiwxNi40QzEyLDE0LjQgMTUsMTEgMTUsMTFDMTUsMTEgMTgsMTQuNCAxOCwxNi40QTMsMyAwIDAsMSAxNSwxOS40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsdWV0b290aCA9IFwiTTE0Ljg4LDE2LjI5TDEzLDE4LjE3VjE0LjQxTTEzLDUuODNMMTQuODgsNy43MUwxMyw5LjU4TTE3LjcxLDcuNzFMMTIsMkgxMVY5LjU4TDYuNDEsNUw1LDYuNDFMMTAuNTksMTJMNSwxNy41OEw2LjQxLDE5TDExLDE0LjQxVjIySDEyTDE3LjcxLDE2LjI5TDEzLjQxLDEyTDE3LjcxLDcuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ZXRvb3RoQXVkaW8gPSBcIk0xMi44OCwxNi4yOUwxMSwxOC4xN1YxNC40MU0xMSw1LjgzTDEyLjg4LDcuNzFMMTEsOS41OE0xNS43MSw3LjcxTDEwLDJIOVY5LjU4TDQuNDEsNUwzLDYuNDFMOC41OSwxMkwzLDE3LjU4TDQuNDEsMTlMOSwxNC40MVYyMkgxMEwxNS43MSwxNi4yOUwxMS40MSwxMk0xOS41Myw2LjcxTDE4LjI2LDhDMTguODksOS4xOCAxOS4yNSwxMC41NSAxOS4yNSwxMkMxOS4yNSwxMy40NSAxOC44OSwxNC44MiAxOC4yNiwxNkwxOS40NiwxNy4yMkMyMC40MywxNS42OCAyMSwxMy44NyAyMSwxMS45MUMyMSwxMCAyMC40Niw4LjIzIDE5LjUzLDYuNzFNMTQuMjQsMTJMMTYuNTYsMTQuMzNDMTYuODQsMTMuNiAxNywxMi44MiAxNywxMkMxNywxMS4xOCAxNi44NCwxMC40IDE2LjU3LDkuNjhMMTQuMjQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ZXRvb3RoQ29ubmVjdCA9IFwiTTE5LDEwTDE3LDEyTDE5LDE0TDIxLDEyTTE0Ljg4LDE2LjI5TDEzLDE4LjE3VjE0LjQxTTEzLDUuODNMMTQuODgsNy43MUwxMyw5LjU4TTE3LjcxLDcuNzFMMTIsMkgxMVY5LjU4TDYuNDEsNUw1LDYuNDFMMTAuNTksMTJMNSwxNy41OEw2LjQxLDE5TDExLDE0LjQxVjIySDEyTDE3LjcxLDE2LjI5TDEzLjQxLDEyTTcsMTJMNSwxMEwzLDEyTDUsMTRMNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCbHVldG9vdGhPZmYgPSBcIk0xMyw1LjgzTDE0Ljg4LDcuNzFMMTMuMjgsOS4zMUwxNC42OSwxMC43MkwxNy43MSw3LjdMMTIsMkgxMVY3LjAzTDEzLDkuMDNNNS40MSw0TDQsNS40MUwxMC41OSwxMkw1LDE3LjU5TDYuNDEsMTlMMTEsMTQuNDFWMjJIMTJMMTYuMjksMTcuNzFMMTguNTksMjBMMjAsMTguNTlNMTMsMTguMTdWMTQuNDFMMTQuODgsMTYuMjlcIjtcclxuZXhwb3J0IHZhciBtZGlCbHVldG9vdGhTZXR0aW5ncyA9IFwiTTE0Ljg4LDE0LjI5TDEzLDE2LjE3VjEyLjQxTDE0Ljg4LDE0LjI5TTEzLDMuODNMMTQuODgsNS43MUwxMyw3LjU5TTE3LjcxLDUuNzFMMTIsMEgxMVY3LjU5TDYuNDEsM0w1LDQuNDFMMTAuNTksMTBMNSwxNS41OUw2LjQxLDE3TDExLDEyLjQxVjIwSDEyTDE3LjcxLDE0LjI5TDEzLjQxLDEwTDE3LjcxLDUuNzFNMTUsMjRIMTdWMjJIMTVNNywyNEg5VjIySDdNMTEsMjRIMTNWMjJIMTFWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ZXRvb3RoVHJhbnNmZXIgPSBcIk0xNC43MSw3LjcxTDEwLjQxLDEyTDE0LjcxLDE2LjI5TDksMjJIOFYxNC40MUwzLjQxLDE5TDIsMTcuNTlMNy41OSwxMkwyLDYuNDFMMy40MSw1TDgsOS41OVYySDlMMTQuNzEsNy43MU0xMCw1LjgzVjkuNTlMMTEuODgsNy43MUwxMCw1LjgzTTExLjg4LDE2LjI5TDEwLDE0LjQxVjE4LjE3TDExLjg4LDE2LjI5TTIyLDhIMjBWMTFIMThWOEgxNkwxOSw0TDIyLDhNMjIsMTZMMTksMjBMMTYsMTZIMThWMTNIMjBWMTZIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQmx1ciA9IFwiTTE0LDguNUExLjUsMS41IDAgMCwwIDEyLjUsMTBBMS41LDEuNSAwIDAsMCAxNCwxMS41QTEuNSwxLjUgMCAwLDAgMTUuNSwxMEExLjUsMS41IDAgMCwwIDE0LDguNU0xNCwxMi41QTEuNSwxLjUgMCAwLDAgMTIuNSwxNEExLjUsMS41IDAgMCwwIDE0LDE1LjVBMS41LDEuNSAwIDAsMCAxNS41LDE0QTEuNSwxLjUgMCAwLDAgMTQsMTIuNU0xMCwxN0ExLDEgMCAwLDAgOSwxOEExLDEgMCAwLDAgMTAsMTlBMSwxIDAgMCwwIDExLDE4QTEsMSAwIDAsMCAxMCwxN00xMCw4LjVBMS41LDEuNSAwIDAsMCA4LjUsMTBBMS41LDEuNSAwIDAsMCAxMCwxMS41QTEuNSwxLjUgMCAwLDAgMTEuNSwxMEExLjUsMS41IDAgMCwwIDEwLDguNU0xNCwyMC41QTAuNSwwLjUgMCAwLDAgMTMuNSwyMUEwLjUsMC41IDAgMCwwIDE0LDIxLjVBMC41LDAuNSAwIDAsMCAxNC41LDIxQTAuNSwwLjUgMCAwLDAgMTQsMjAuNU0xNCwxN0ExLDEgMCAwLDAgMTMsMThBMSwxIDAgMCwwIDE0LDE5QTEsMSAwIDAsMCAxNSwxOEExLDEgMCAwLDAgMTQsMTdNMjEsMTMuNUEwLjUsMC41IDAgMCwwIDIwLjUsMTRBMC41LDAuNSAwIDAsMCAyMSwxNC41QTAuNSwwLjUgMCAwLDAgMjEuNSwxNEEwLjUsMC41IDAgMCwwIDIxLDEzLjVNMTgsNUExLDEgMCAwLDAgMTcsNkExLDEgMCAwLDAgMTgsN0ExLDEgMCAwLDAgMTksNkExLDEgMCAwLDAgMTgsNU0xOCw5QTEsMSAwIDAsMCAxNywxMEExLDEgMCAwLDAgMTgsMTFBMSwxIDAgMCwwIDE5LDEwQTEsMSAwIDAsMCAxOCw5TTE4LDE3QTEsMSAwIDAsMCAxNywxOEExLDEgMCAwLDAgMTgsMTlBMSwxIDAgMCwwIDE5LDE4QTEsMSAwIDAsMCAxOCwxN00xOCwxM0ExLDEgMCAwLDAgMTcsMTRBMSwxIDAgMCwwIDE4LDE1QTEsMSAwIDAsMCAxOSwxNEExLDEgMCAwLDAgMTgsMTNNMTAsMTIuNUExLjUsMS41IDAgMCwwIDguNSwxNEExLjUsMS41IDAgMCwwIDEwLDE1LjVBMS41LDEuNSAwIDAsMCAxMS41LDE0QTEuNSwxLjUgMCAwLDAgMTAsMTIuNU0xMCw3QTEsMSAwIDAsMCAxMSw2QTEsMSAwIDAsMCAxMCw1QTEsMSAwIDAsMCA5LDZBMSwxIDAgMCwwIDEwLDdNMTAsMy41QTAuNSwwLjUgMCAwLDAgMTAuNSwzQTAuNSwwLjUgMCAwLDAgMTAsMi41QTAuNSwwLjUgMCAwLDAgOS41LDNBMC41LDAuNSAwIDAsMCAxMCwzLjVNMTAsMjAuNUEwLjUsMC41IDAgMCwwIDkuNSwyMUEwLjUsMC41IDAgMCwwIDEwLDIxLjVBMC41LDAuNSAwIDAsMCAxMC41LDIxQTAuNSwwLjUgMCAwLDAgMTAsMjAuNU0zLDEzLjVBMC41LDAuNSAwIDAsMCAyLjUsMTRBMC41LDAuNSAwIDAsMCAzLDE0LjVBMC41LDAuNSAwIDAsMCAzLjUsMTRBMC41LDAuNSAwIDAsMCAzLDEzLjVNMTQsMy41QTAuNSwwLjUgMCAwLDAgMTQuNSwzQTAuNSwwLjUgMCAwLDAgMTQsMi41QTAuNSwwLjUgMCAwLDAgMTMuNSwzQTAuNSwwLjUgMCAwLDAgMTQsMy41TTE0LDdBMSwxIDAgMCwwIDE1LDZBMSwxIDAgMCwwIDE0LDVBMSwxIDAgMCwwIDEzLDZBMSwxIDAgMCwwIDE0LDdNMjEsMTAuNUEwLjUsMC41IDAgMCwwIDIxLjUsMTBBMC41LDAuNSAwIDAsMCAyMSw5LjVBMC41LDAuNSAwIDAsMCAyMC41LDEwQTAuNSwwLjUgMCAwLDAgMjEsMTAuNU02LDVBMSwxIDAgMCwwIDUsNkExLDEgMCAwLDAgNiw3QTEsMSAwIDAsMCA3LDZBMSwxIDAgMCwwIDYsNU0zLDkuNUEwLjUsMC41IDAgMCwwIDIuNSwxMEEwLjUsMC41IDAgMCwwIDMsMTAuNUEwLjUsMC41IDAgMCwwIDMuNSwxMEEwLjUsMC41IDAgMCwwIDMsOS41TTYsOUExLDEgMCAwLDAgNSwxMEExLDEgMCAwLDAgNiwxMUExLDEgMCAwLDAgNywxMEExLDEgMCAwLDAgNiw5TTYsMTdBMSwxIDAgMCwwIDUsMThBMSwxIDAgMCwwIDYsMTlBMSwxIDAgMCwwIDcsMThBMSwxIDAgMCwwIDYsMTdNNiwxM0ExLDEgMCAwLDAgNSwxNEExLDEgMCAwLDAgNiwxNUExLDEgMCAwLDAgNywxNEExLDEgMCAwLDAgNiwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCbHVyTGluZWFyID0gXCJNMTMsMTdBMSwxIDAgMCwwIDE0LDE2QTEsMSAwIDAsMCAxMywxNUExLDEgMCAwLDAgMTIsMTZBMSwxIDAgMCwwIDEzLDE3TTEzLDEzQTEsMSAwIDAsMCAxNCwxMkExLDEgMCAwLDAgMTMsMTFBMSwxIDAgMCwwIDEyLDEyQTEsMSAwIDAsMCAxMywxM00xMyw5QTEsMSAwIDAsMCAxNCw4QTEsMSAwIDAsMCAxMyw3QTEsMSAwIDAsMCAxMiw4QTEsMSAwIDAsMCAxMyw5TTE3LDEyLjVBMC41LDAuNSAwIDAsMCAxNy41LDEyQTAuNSwwLjUgMCAwLDAgMTcsMTEuNUEwLjUsMC41IDAgMCwwIDE2LjUsMTJBMC41LDAuNSAwIDAsMCAxNywxMi41TTE3LDguNUEwLjUsMC41IDAgMCwwIDE3LjUsOEEwLjUsMC41IDAgMCwwIDE3LDcuNUEwLjUsMC41IDAgMCwwIDE2LjUsOEEwLjUsMC41IDAgMCwwIDE3LDguNU0zLDNWNUgyMVYzTTE3LDE2LjVBMC41LDAuNSAwIDAsMCAxNy41LDE2QTAuNSwwLjUgMCAwLDAgMTcsMTUuNUEwLjUsMC41IDAgMCwwIDE2LjUsMTZBMC41LDAuNSAwIDAsMCAxNywxNi41TTksMTdBMSwxIDAgMCwwIDEwLDE2QTEsMSAwIDAsMCA5LDE1QTEsMSAwIDAsMCA4LDE2QTEsMSAwIDAsMCA5LDE3TTUsMTMuNUExLjUsMS41IDAgMCwwIDYuNSwxMkExLjUsMS41IDAgMCwwIDUsMTAuNUExLjUsMS41IDAgMCwwIDMuNSwxMkExLjUsMS41IDAgMCwwIDUsMTMuNU01LDkuNUExLjUsMS41IDAgMCwwIDYuNSw4QTEuNSwxLjUgMCAwLDAgNSw2LjVBMS41LDEuNSAwIDAsMCAzLjUsOEExLjUsMS41IDAgMCwwIDUsOS41TTMsMjFIMjFWMTlIM005LDlBMSwxIDAgMCwwIDEwLDhBMSwxIDAgMCwwIDksN0ExLDEgMCAwLDAgOCw4QTEsMSAwIDAsMCA5LDlNOSwxM0ExLDEgMCAwLDAgMTAsMTJBMSwxIDAgMCwwIDksMTFBMSwxIDAgMCwwIDgsMTJBMSwxIDAgMCwwIDksMTNNNSwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNC41QTEuNSwxLjUgMCAwLDAgMy41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsdXJPZmYgPSBcIk0zLDEzLjVBMC41LDAuNSAwIDAsMCAyLjUsMTRBMC41LDAuNSAwIDAsMCAzLDE0LjVBMC41LDAuNSAwIDAsMCAzLjUsMTRBMC41LDAuNSAwIDAsMCAzLDEzLjVNNiwxN0ExLDEgMCAwLDAgNSwxOEExLDEgMCAwLDAgNiwxOUExLDEgMCAwLDAgNywxOEExLDEgMCAwLDAgNiwxN00xMCwyMC41QTAuNSwwLjUgMCAwLDAgOS41LDIxQTAuNSwwLjUgMCAwLDAgMTAsMjEuNUEwLjUsMC41IDAgMCwwIDEwLjUsMjFBMC41LDAuNSAwIDAsMCAxMCwyMC41TTMsOS41QTAuNSwwLjUgMCAwLDAgMi41LDEwQTAuNSwwLjUgMCAwLDAgMywxMC41QTAuNSwwLjUgMCAwLDAgMy41LDEwQTAuNSwwLjUgMCAwLDAgMyw5LjVNNiwxM0ExLDEgMCAwLDAgNSwxNEExLDEgMCAwLDAgNiwxNUExLDEgMCAwLDAgNywxNEExLDEgMCAwLDAgNiwxM00yMSwxMy41QTAuNSwwLjUgMCAwLDAgMjAuNSwxNEEwLjUsMC41IDAgMCwwIDIxLDE0LjVBMC41LDAuNSAwIDAsMCAyMS41LDE0QTAuNSwwLjUgMCAwLDAgMjEsMTMuNU0xMCwxN0ExLDEgMCAwLDAgOSwxOEExLDEgMCAwLDAgMTAsMTlBMSwxIDAgMCwwIDExLDE4QTEsMSAwIDAsMCAxMCwxN00yLjUsNS4yN0w2LjI4LDkuMDVMNiw5QTEsMSAwIDAsMCA1LDEwQTEsMSAwIDAsMCA2LDExQTEsMSAwIDAsMCA3LDEwQzcsOS45IDYuOTcsOS44MSA2Ljk0LDkuNzJMOS43NSwxMi41M0M5LjA0LDEyLjY0IDguNSwxMy4yNiA4LjUsMTRBMS41LDEuNSAwIDAsMCAxMCwxNS41QzEwLjc0LDE1LjUgMTEuMzYsMTQuOTYgMTEuNDcsMTQuMjVMMTQuMjgsMTcuMDZDMTQuMTksMTcuMDMgMTQuMSwxNyAxNCwxN0ExLDEgMCAwLDAgMTMsMThBMSwxIDAgMCwwIDE0LDE5QTEsMSAwIDAsMCAxNSwxOEMxNSwxNy45IDE0Ljk3LDE3LjgxIDE0Ljk0LDE3LjcyTDE4LjcyLDIxLjVMMjAsMjAuMjNMMy43Nyw0TDIuNSw1LjI3TTE0LDIwLjVBMC41LDAuNSAwIDAsMCAxMy41LDIxQTAuNSwwLjUgMCAwLDAgMTQsMjEuNUEwLjUsMC41IDAgMCwwIDE0LjUsMjFBMC41LDAuNSAwIDAsMCAxNCwyMC41TTE4LDdBMSwxIDAgMCwwIDE5LDZBMSwxIDAgMCwwIDE4LDVBMSwxIDAgMCwwIDE3LDZBMSwxIDAgMCwwIDE4LDdNMTgsMTFBMSwxIDAgMCwwIDE5LDEwQTEsMSAwIDAsMCAxOCw5QTEsMSAwIDAsMCAxNywxMEExLDEgMCAwLDAgMTgsMTFNMTgsMTVBMSwxIDAgMCwwIDE5LDE0QTEsMSAwIDAsMCAxOCwxM0ExLDEgMCAwLDAgMTcsMTRBMSwxIDAgMCwwIDE4LDE1TTEwLDdBMSwxIDAgMCwwIDExLDZBMSwxIDAgMCwwIDEwLDVBMSwxIDAgMCwwIDksNkExLDEgMCAwLDAgMTAsN00yMSwxMC41QTAuNSwwLjUgMCAwLDAgMjEuNSwxMEEwLjUsMC41IDAgMCwwIDIxLDkuNUEwLjUsMC41IDAgMCwwIDIwLjUsMTBBMC41LDAuNSAwIDAsMCAyMSwxMC41TTEwLDMuNUEwLjUsMC41IDAgMCwwIDEwLjUsM0EwLjUsMC41IDAgMCwwIDEwLDIuNUEwLjUsMC41IDAgMCwwIDkuNSwzQTAuNSwwLjUgMCAwLDAgMTAsMy41TTE0LDMuNUEwLjUsMC41IDAgMCwwIDE0LjUsM0EwLjUsMC41IDAgMCwwIDE0LDIuNUEwLjUsMC41IDAgMCwwIDEzLjUsM0EwLjUsMC41IDAgMCwwIDE0LDMuNU0xMy44LDExLjVIMTRBMS41LDEuNSAwIDAsMCAxNS41LDEwQTEuNSwxLjUgMCAwLDAgMTQsOC41QTEuNSwxLjUgMCAwLDAgMTIuNSwxMFYxMC4yQzEyLjYxLDEwLjg3IDEzLjEzLDExLjM5IDEzLjgsMTEuNU0xNCw3QTEsMSAwIDAsMCAxNSw2QTEsMSAwIDAsMCAxNCw1QTEsMSAwIDAsMCAxMyw2QTEsMSAwIDAsMCAxNCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJsdXJSYWRpYWwgPSBcIk0xNCwxM0ExLDEgMCAwLDAgMTMsMTRBMSwxIDAgMCwwIDE0LDE1QTEsMSAwIDAsMCAxNSwxNEExLDEgMCAwLDAgMTQsMTNNMTQsMTYuNUEwLjUsMC41IDAgMCwwIDEzLjUsMTdBMC41LDAuNSAwIDAsMCAxNCwxNy41QTAuNSwwLjUgMCAwLDAgMTQuNSwxN0EwLjUsMC41IDAgMCwwIDE0LDE2LjVNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNyw5LjVBMC41LDAuNSAwIDAsMCAxNi41LDEwQTAuNSwwLjUgMCAwLDAgMTcsMTAuNUEwLjUsMC41IDAgMCwwIDE3LjUsMTBBMC41LDAuNSAwIDAsMCAxNyw5LjVNMTcsMTMuNUEwLjUsMC41IDAgMCwwIDE2LjUsMTRBMC41LDAuNSAwIDAsMCAxNywxNC41QTAuNSwwLjUgMCAwLDAgMTcuNSwxNEEwLjUsMC41IDAgMCwwIDE3LDEzLjVNMTQsNy41QTAuNSwwLjUgMCAwLDAgMTQuNSw3QTAuNSwwLjUgMCAwLDAgMTQsNi41QTAuNSwwLjUgMCAwLDAgMTMuNSw3QTAuNSwwLjUgMCAwLDAgMTQsNy41TTE0LDlBMSwxIDAgMCwwIDEzLDEwQTEsMSAwIDAsMCAxNCwxMUExLDEgMCAwLDAgMTUsMTBBMSwxIDAgMCwwIDE0LDlNMTAsNy41QTAuNSwwLjUgMCAwLDAgMTAuNSw3QTAuNSwwLjUgMCAwLDAgMTAsNi41QTAuNSwwLjUgMCAwLDAgOS41LDdBMC41LDAuNSAwIDAsMCAxMCw3LjVNNywxMy41QTAuNSwwLjUgMCAwLDAgNi41LDE0QTAuNSwwLjUgMCAwLDAgNywxNC41QTAuNSwwLjUgMCAwLDAgNy41LDE0QTAuNSwwLjUgMCAwLDAgNywxMy41TTEwLDE2LjVBMC41LDAuNSAwIDAsMCA5LjUsMTdBMC41LDAuNSAwIDAsMCAxMCwxNy41QTAuNSwwLjUgMCAwLDAgMTAuNSwxN0EwLjUsMC41IDAgMCwwIDEwLDE2LjVNNyw5LjVBMC41LDAuNSAwIDAsMCA2LjUsMTBBMC41LDAuNSAwIDAsMCA3LDEwLjVBMC41LDAuNSAwIDAsMCA3LjUsMTBBMC41LDAuNSAwIDAsMCA3LDkuNU0xMCwxM0ExLDEgMCAwLDAgOSwxNEExLDEgMCAwLDAgMTAsMTVBMSwxIDAgMCwwIDExLDE0QTEsMSAwIDAsMCAxMCwxM00xMCw5QTEsMSAwIDAsMCA5LDEwQTEsMSAwIDAsMCAxMCwxMUExLDEgMCAwLDAgMTEsMTBBMSwxIDAgMCwwIDEwLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9sbmlzaUNyb3NzID0gXCJNMjIsN0wyMS41LDYuNUMxOS45Myw4IDE4LjQ3LDkuNCAxNi45MywxMC4xOEMxNS41LDEwLjkxIDE0LjQ0LDEwLjkxIDEzLDExQzEzLjA5LDkuNTYgMTMuMDksOC41IDEzLjgyLDcuMDdDMTQuNiw1LjUzIDE2LDQuMDcgMTcuNSwyLjVMMTcsMkMxNS4zMiwzLjIzIDEzLjY0LDMuODMgMTIsMy44M0MxMC4zNiwzLjgzIDguNjgsMy4yMyA3LDJMNi41LDIuNUM4LDQuMDcgOS40LDUuNTMgMTAuMTgsNy4wN0MxMC45MSw4LjUgMTAuOTEsOS41NiAxMSwxMUM5LjU2LDEwLjkxIDguNSwxMC45MSA3LjA3LDEwLjE4QzUuNTMsOS40IDQuMDYsOCAyLjUsNi41TDIsN0MzLjIzLDguNjggMy44MywxMC4zNiAzLjgzLDEyQzMuODMsMTMuNjQgMy4yMywxNS4zMiAyLDE3TDIuNSwxNy41QzQuMDcsMTYgNS41MywxNC42IDcuMDcsMTMuODJDOC41LDEzLjA5IDkuNTYsMTMuMDkgMTEsMTNDMTAuOTEsMTQuNDQgMTAuOTEsMTUuNSAxMC4xOCwxNi45M0M5LjQsMTguNDcgOCwxOS45MyA2LjUsMjEuNUw3LDIyQzguNjgsMjAuNzcgMTAuMzYsMjAuMTcgMTIsMjAuMTdDMTMuNjQsMjAuMTcgMTUuMzIsMjAuNzcgMTcsMjJMMTcuNSwyMS41QzE2LDE5LjkzIDE0LjYsMTguNDcgMTMuODIsMTYuOTNDMTMuMDksMTUuNSAxMy4wOSwxNC40NCAxMywxM0MxNC40NCwxMy4wOSAxNS41LDEzLjA5IDE2LjkzLDEzLjgyQzE4LjQ3LDE0LjYgMTkuOTMsMTYgMjEuNSwxNy41TDIyLDE3QzIwLjc3LDE1LjMyIDIwLjE3LDEzLjY0IDIwLjE3LDEyQzIwLjE3LDEwLjM2IDIwLjc3LDguNjggMjIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb2x0ID0gXCJNMTQsMTcuN1YyMUgxMFYyMC4zTDE0LDE3LjdNMTcsM0g3VjZIMTdWM00xNSw3TDE0LDcuN1Y3SDEwVjEwLjNMOSwxMVYxMkwxNSw4LjFWN00xNSwxMUwxNCwxMS43VjkuN0wxMCwxMi40VjE0LjRMOSwxNVYxNkwxNSwxMi4xVjExTTE1LDE1TDE0LDE1LjdWMTMuN0wxMCwxNi40VjE4LjRMOSwxOVYyMEwxNSwxNi4xVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvbWIgPSBcIk0xMS4yNSw2QTMuMjUsMy4yNSAwIDAsMSAxNC41LDIuNzVBMy4yNSwzLjI1IDAgMCwxIDE3Ljc1LDZDMTcuNzUsNi40MiAxOC4wOCw2Ljc1IDE4LjUsNi43NUMxOC45Miw2Ljc1IDE5LjI1LDYuNDIgMTkuMjUsNlY1LjI1SDIwLjc1VjZBMi4yNSwyLjI1IDAgMCwxIDE4LjUsOC4yNUEyLjI1LDIuMjUgMCAwLDEgMTYuMjUsNkExLjc1LDEuNzUgMCAwLDAgMTQuNSw0LjI1QTEuNzUsMS43NSAwIDAsMCAxMi43NSw2SDE0VjcuMjlDMTYuODksOC4xNSAxOSwxMC44MyAxOSwxNEE3LDcgMCAwLDEgMTIsMjFBNyw3IDAgMCwxIDUsMTRDNSwxMC44MyA3LjExLDguMTUgMTAsNy4yOVY2SDExLjI1TTIyLDZIMjRWN0gyMlY2TTE5LDRWMkgyMFY0SDE5TTIwLjkxLDQuMzhMMjIuMzMsMi45NkwyMy4wNCwzLjY3TDIxLjYyLDUuMDlMMjAuOTEsNC4zOFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb21iT2ZmID0gXCJNMTQuNSwyLjc1QzEyLjcsMi43NSAxMS4yNSw0LjIgMTEuMjUsNkgxMFY3LjI5QzkuMzEsNy41IDguNjcsNy44MSA4LjA4LDguMkwxNy43OSwxNy45MUMxOC41OCwxNi43NiAxOSwxNS4zOSAxOSwxNEMxOSwxMC44MyAxNi44OSw4LjE1IDE0LDcuMjlWNkgxMi43NUExLjc1LDEuNzUgMCAwLDEgMTQuNSw0LjI1QTEuNzUsMS43NSAwIDAsMSAxNi4yNSw2QTIuMjUsMi4yNSAwIDAsMCAxOC41LDguMjVDMTkuNzQsOC4yNSAyMC43NCw3LjI0IDIwLjc0LDZWNS4yNUgxOS4yNVY2QzE5LjI1LDYuNDIgMTguOTEsNi43NSAxOC41LDYuNzVDMTguMDgsNi43NSAxNy43NSw2LjQyIDE3Ljc1LDZDMTcuNzUsNC4yIDE2LjI5LDIuNzUgMTQuNSwyLjc1TTMuNDEsNi4zNkwyLDcuNzdMNS41NSwxMS4zMkM1LjIsMTIuMTQgNSwxMy4wNCA1LDE0QzUsMTcuODYgOC4xMywyMSAxMiwyMUMxMi45MiwyMSAxMy44MywyMC44MSAxNC42OCwyMC40NUwxOC4yMywyNEwxOS42NCwyMi41OUwzLjQxLDYuMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9uZSA9IFwiTTgsMTRBMywzIDAgMCwxIDUsMTdBMywzIDAgMCwxIDIsMTRDMiwxMy4yMyAyLjI5LDEyLjUzIDIuNzYsMTJDMi4yOSwxMS40NyAyLDEwLjc3IDIsMTBBMywzIDAgMCwxIDUsN0EzLDMgMCAwLDEgOCwxMEM5LjMzLDEwLjA4IDEwLjY3LDEwLjE3IDEyLDEwLjE3QzEzLjMzLDEwLjE3IDE0LjY3LDEwLjA4IDE2LDEwQTMsMyAwIDAsMSAxOSw3QTMsMyAwIDAsMSAyMiwxMEMyMiwxMC43NyAyMS43MSwxMS40NyAyMS4yNCwxMkMyMS43MSwxMi41MyAyMiwxMy4yMyAyMiwxNEEzLDMgMCAwLDEgMTksMTdBMywzIDAgMCwxIDE2LDE0QzE0LjY3LDEzLjkyIDEzLjMzLDEzLjgzIDEyLDEzLjgzQzEwLjY3LDEzLjgzIDkuMzMsMTMuOTIgOCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rID0gXCJNMTgsMjJBMiwyIDAgMCwwIDIwLDIwVjRDMjAsMi44OSAxOS4xLDIgMTgsMkgxMlY5TDkuNSw3LjVMNyw5VjJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBY2NvdW50ID0gXCJNMTggMkgxMlY5TDkuNSA3LjVMNyA5VjJINkEyIDIgMCAwIDAgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY0QTIgMiAwIDAgMCAxOCAyTTE0IDEyQTIgMiAwIDEgMSAxMiAxNEEyIDIgMCAwIDEgMTQgMTJNMTggMjBIMTBWMTlDMTAgMTcuNjcgMTIuNjcgMTcgMTQgMTdTMTggMTcuNjcgMTggMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0FjY291bnRPdXRsaW5lID0gXCJNMTggMkEyIDIgMCAwIDEgMjAgNFYyMEEyIDIgMCAwIDEgMTggMjJINkEyIDIgMCAwIDEgNCAyMFY0QTIgMiAwIDAgMSA2IDJIMThNMTggNEgxM1Y5TDEwLjUgNi43TDggOVY0SDZWMjBIMThNMTMgMTFBMiAyIDAgMSAxIDExIDEzQTIgMiAwIDAgMSAxMyAxMU0xNyAxOUg5VjE4QzkgMTYuNjcgMTEuNjcgMTYgMTMgMTZTMTcgMTYuNjcgMTcgMThWMTlcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQWxlcnQgPSBcIk0xOCA0VjIwQzE4IDIxLjExIDE3LjExIDIyIDE2IDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY0QzIgMi45IDIuOSAyIDQgMkg1VjlMNy41IDcuNUwxMCA5VjJIMTZDMTcuMSAyIDE4IDIuODkgMTggNE0yMCAxN0gyMlYxNUgyMFYxN00yMCA3VjEzSDIyVjdIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0FsZXJ0T3V0bGluZSA9IFwiTTE2IDJINEMyLjkgMiAyIDIuOSAyIDRWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxNkMxNy4xMSAyMiAxOCAyMS4xMSAxOCAyMFY0QzE4IDIuOSAxNy4xMSAyIDE2IDJNMTYgMjBINFY0SDZWMTJMOC41IDkuNzVMMTEgMTJWNEgxNlYyME0yMCAxNUgyMlYxN0gyMFYxNU0yMiA3VjEzSDIwVjdIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0FscGhhYmV0ID0gXCJNNS44MSwyQzQuODMsMi4wOSA0LDMgNCw0VjIwQzQsMjEuMDUgNC45NSwyMiA2LDIySDE4QzE5LjA1LDIyIDIwLDIxLjA1IDIwLDIwVjRDMjAsMi44OSAxOS4xLDIgMTgsMkgxMlY5TDkuNSw3LjVMNyw5VjJINkM1Ljk0LDIgNS44NywyIDUuODEsMk0xMiwxM0gxM0ExLDEgMCAwLDEgMTQsMTRWMThIMTNWMTZIMTJWMThIMTFWMTRBMSwxIDAgMCwxIDEyLDEzTTEyLDE0VjE1SDEzVjE0SDEyTTE1LDE1SDE4VjE2TDE2LDE5SDE4VjIwSDE1VjE5TDE3LDE2SDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd0Rvd24gPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjAgMjBWMTZIMThWMjBIMTZMMTkgMjNMMjIgMjBIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93RG93bk91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTIwIDIwVjE2SDE4VjIwSDE2TDE5IDIzTDIyIDIwSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd0xlZnQgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMTggMThWMTZMMTUgMTlMMTggMjJWMjBIMjJWMThIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93TGVmdE91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTE4IDE4VjE2TDE1IDE5TDE4IDIyVjIwSDIyVjE4SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd1JpZ2h0ID0gXCJNMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEyIDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIzIDE5TDIwIDE2VjE4SDE2VjIwSDIwVjIyTDIzIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tBcnJvd1JpZ2h0T3V0bGluZSA9IFwiTTEzLjA5IDIwQzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTMuMDlNMjMgMTlMMjAgMTZWMThIMTZWMjBIMjBWMjJMMjMgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93VXAgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMTkgMTVMMTYgMThIMThWMjJIMjBWMThIMjJMMTkgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Fycm93VXBPdXRsaW5lID0gXCJNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMy4wOUMxOS42NyAxMy4wNCAxOS4zNCAxMyAxOSAxM0MxOC42NiAxMyAxOC4zMyAxMy4wNCAxOCAxMy4wOVY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy4wOU0xOSAxNUwxNiAxOEgxOFYyMkgyMFYxOEgyMkwxOSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQ2FuY2VsID0gXCJNMTIgMTguNUMxMiAxOS43OSAxMi4zOSAyMSAxMy4wNCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMi4xOEMxOS41IDEyLjA3IDE5IDEyIDE4LjUgMTJDMTQuOTEgMTIgMTIgMTQuOTEgMTIgMTguNU0yMyAxOC41QzIzIDIxIDIxIDIzIDE4LjUgMjNTMTQgMjEgMTQgMTguNSAxNiAxNCAxOC41IDE0IDIzIDE2IDIzIDE4LjVNMjAgMjEuMDhMMTUuOTIgMTdDMTUuNjUgMTcuNDIgMTUuNSAxNy45NCAxNS41IDE4LjVDMTUuNSAyMC4xNiAxNi44NCAyMS41IDE4LjUgMjEuNUMxOS4wNiAyMS41IDE5LjU4IDIxLjM1IDIwIDIxLjA4TTIxLjUgMTguNUMyMS41IDE2Ljg0IDIwLjE2IDE1LjUgMTguNSAxNS41QzE3Ljk0IDE1LjUgMTcuNDIgMTUuNjUgMTcgMTUuOTJMMjEuMDggMjBDMjEuMzUgMTkuNTggMjEuNSAxOS4wNiAyMS41IDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0NhbmNlbE91dGxpbmUgPSBcIk0xMi4xOCAyMEMxMi4zNiAyMC43MiAxMi42NSAyMS4zOSAxMy4wNCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEyLjE4QzE5LjUgMTIuMDcgMTkgMTIgMTguNSAxMkMxOC4zMyAxMiAxOC4xNyAxMiAxOCAxMi4wM1Y0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMi4xOE0yMyAxOC41QzIzIDIxIDIxIDIzIDE4LjUgMjNTMTQgMjEgMTQgMTguNSAxNiAxNCAxOC41IDE0IDIzIDE2IDIzIDE4LjVNMjAgMjEuMDhMMTUuOTIgMTdDMTUuNjUgMTcuNDIgMTUuNSAxNy45NCAxNS41IDE4LjVDMTUuNSAyMC4xNiAxNi44NCAyMS41IDE4LjUgMjEuNUMxOS4wNiAyMS41IDE5LjU4IDIxLjM1IDIwIDIxLjA4TTIxLjUgMTguNUMyMS41IDE2Ljg0IDIwLjE2IDE1LjUgMTguNSAxNS41QzE3Ljk0IDE1LjUgMTcuNDIgMTUuNjUgMTcgMTUuOTJMMjEuMDggMjBDMjEuMzUgMTkuNTggMjEuNSAxOS4wNiAyMS41IDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0NoZWNrID0gXCJNMTYuNzUgMjIuMTZMMTQgMTkuMTZMMTUuMTYgMThMMTYuNzUgMTkuNTlMMjAuMzQgMTZMMjEuNSAxNy40MUwxNi43NSAyMi4xNk02IDIyQzQuODkgMjIgNCAyMS4xIDQgMjBWNEM0IDIuODkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMy4zNEMxOS4zNyAxMy4xMiAxOC43IDEzIDE4IDEzQzE0LjY5IDEzIDEyIDE1LjY5IDEyIDE5QzEyIDIwLjA5IDEyLjI5IDIxLjEyIDEyLjggMjJINlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQ2hlY2tPdXRsaW5lID0gXCJNMTYuNzUgMjIuMTZMMTQgMTkuMTZMMTUuMTYgMThMMTYuNzUgMTkuNTlMMjAuMzQgMTZMMjEuNSAxNy40MUwxNi43NSAyMi4xNk0xOCAyQzE5LjEgMiAyMCAyLjkgMjAgNFYxMy4zNEMxOS4zNyAxMy4xMiAxOC43IDEzIDE4IDEzVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEyLjA4QzEyLjIgMjAuNzIgMTIuNDUgMjEuMzkgMTIuOCAyMkg2QzQuOSAyMiA0IDIxLjEgNCAyMFY0QzQgMi45IDQuOSAyIDYgMkgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rQ2xvY2sgPSBcIk0xNi41IDE3LjI1TDE5LjM2IDE4Ljk0TDE4LjYxIDIwLjE2TDE1IDE4VjEzSDE2LjVWMTcuMjVNMjMgMTdDMjMgMjAuODcgMTkuODcgMjQgMTYgMjRDMTQuMDkgMjQgMTIuMzcgMjMuMjQgMTEuMTEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTEuMjZDMjEuODEgMTIuNTMgMjMgMTQuNjIgMjMgMTdNMjEgMTdDMjEgMTQuMjQgMTguNzYgMTIgMTYgMTJTMTEgMTQuMjQgMTEgMTcgMTMuMjQgMjIgMTYgMjIgMjEgMTkuNzYgMjEgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0Nsb2NrT3V0bGluZSA9IFwiTTIwIDExLjI2VjRDMjAgMi45IDE5LjExIDIgMTggMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMTEuMTFDMTIuMzcgMjMuMjQgMTQuMDkgMjQgMTYgMjRDMTkuODcgMjQgMjMgMjAuODcgMjMgMTdDMjMgMTQuNjIgMjEuODEgMTIuNTMgMjAgMTEuMjZNMTggNFYxMC4yOUMxNy4zNyAxMC4xMSAxNi43IDEwIDE2IDEwQzE0LjkzIDEwIDEzLjkxIDEwLjI1IDEzIDEwLjY4VjRIMThNNiA0SDhWMTJMMTAuNSA5Ljc1TDEyLjEgMTEuMTlDMTAuMjMgMTIuNDUgOSAxNC41OCA5IDE3QzkgMTguMDggOS4yNSAxOS4wOSA5LjY4IDIwSDZWNE0xNiAyMkMxMy4yNCAyMiAxMSAxOS43NiAxMSAxN1MxMy4yNCAxMiAxNiAxMiAyMSAxNC4yNCAyMSAxNyAxOC43NiAyMiAxNiAyMk0xNi41IDE3LjI1TDE5LjM2IDE4Ljk0TDE4LjYxIDIwLjE2TDE1IDE4VjEzSDE2LjVWMTcuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0NvZyA9IFwiTTEyIDE5QzEyIDIwLjA4IDEyLjI1IDIxLjA5IDEyLjY4IDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEyLjA4QzE5LjY3IDEyLjAzIDE5LjM0IDEyIDE5IDEyQzE1LjEzIDEyIDEyIDE1LjEzIDEyIDE5TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tDb2dPdXRsaW5lID0gXCJNMTggNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTIuMDhDMTIuMTggMjAuNzEgMTIuMzkgMjEuMzggMTIuNjkgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMi4wOEMxOS42NyAxMi4wMyAxOS4zNCAxMiAxOSAxMkMxOC42NiAxMiAxOC4zMyAxMi4wMyAxOCAxMi4wOFY0TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tDcm9zcyA9IFwiTTUuODEsMkg3VjlMOS41LDcuNUwxMiw5VjJIMThBMiwyIDAgMCwxIDIwLDRWMjBDMjAsMjEuMDUgMTkuMDUsMjIgMTgsMjJINkM0Ljk1LDIyIDQsMjEuMDUgNCwyMFY0QzQsMyA0LjgzLDIuMDkgNS44MSwyTTEzLDEwVjEzSDEwVjE1SDEzVjIwSDE1VjE1SDE4VjEzSDE1VjEwSDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tFZGl0ID0gXCJNMTkuMzkgMTAuNzRMMTEgMTkuMTNWMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTAuM0MxOS43OCAxMC40MiAxOS41NyAxMC41NiAxOS4zOSAxMC43NE0xMyAxOS45NlYyMkgxNS4wNEwyMS4xNyAxNS44OEwxOS4xMyAxMy44M0wxMyAxOS45Nk0yMi44NSAxMy40N0wyMS41MyAxMi4xNUMyMS4zMyAxMS45NSAyMSAxMS45NSAyMC44MSAxMi4xNUwxOS44MyAxMy4xM0wyMS44NyAxNS4xN0wyMi44NSAxNC4xOUMyMy4wNSAxNCAyMy4wNSAxMy42NyAyMi44NSAxMy40N1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rRWRpdE91dGxpbmUgPSBcIk02IDIwSDExVjIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTAuM0MxOS43OCAxMC40MiAxOS41NyAxMC41NiAxOS4zOSAxMC43NEwxOCAxMi4xM1Y0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyME0yMi44NSAxMy40N0wyMS41MyAxMi4xNUMyMS4zMyAxMS45NSAyMSAxMS45NSAyMC44MSAxMi4xNUwxOS44MyAxMy4xM0wyMS44NyAxNS4xN0wyMi44NSAxNC4xOUMyMy4wNSAxNCAyMy4wNSAxMy42NyAyMi44NSAxMy40N00xMyAxOS45NlYyMkgxNS4wNEwyMS4xNyAxNS44OEwxOS4xMyAxMy44M0wxMyAxOS45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rRWR1Y2F0aW9uID0gXCJNOC44MiAxN0wxMyAxOS4yOFYyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMi41NEwxOC41IDExLjcyTDguODIgMTdNMjQgMTdMMTguNSAxNEwxMyAxN0wxOC41IDIwTDI0IDE3TTE1IDE5LjA5VjIxLjA5TDE4LjUgMjNMMjIgMjEuMDlWMTkuMDlMMTguNSAyMUwxNSAxOS4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rRWR1Y2F0aW9uT3V0bGluZSA9IFwiTTYgMjBIMTNWMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMi41NEwxOC41IDExLjcyTDE4IDEyVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwTTI0IDE3TDE4LjUgMTRMMTMgMTdMMTguNSAyMEwyNCAxN00xNSAxOS4wOVYyMS4wOUwxOC41IDIzTDIyIDIxLjA5VjE5LjA5TDE4LjUgMjFMMTUgMTkuMDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0luZm9ybWF0aW9uVmFyaWFudCA9IFwiTTE4IDJIMTJWOUw5LjUgNy41TDcgOVYySDZDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOEMxOS4xIDIyIDIwIDIxLjEgMjAgMjBWNEMyMCAyLjg5IDE5LjEgMiAxOCAyTTE3LjY4IDE4LjQxQzE3LjU3IDE4LjUgMTYuNDcgMTkuMjUgMTYuMDUgMTkuNUMxNS42MyAxOS43OSAxNCAyMC43MiAxNC4yNiAxOC45MkMxNC44OSAxNS4yOCAxNi4xMSAxMy4xMiAxNC42NSAxNC4wNkMxNC4yNyAxNC4yOSAxNC4wNSAxNC40MyAxMy45MSAxNC41QzEzLjc4IDE0LjYxIDEzLjc5IDE0LjYgMTMuNjggMTQuNDFTMTMuNTMgMTQuMjMgMTMuNjcgMTQuMTNDMTMuNjcgMTQuMTMgMTUuOSAxMi4zNCAxNi43MiAxMi4yOEMxNy41IDEyLjIxIDE3LjMxIDEzLjE3IDE3LjI0IDEzLjYxQzE2Ljc4IDE1LjQ2IDE1Ljk0IDE4LjE1IDE2LjA3IDE4LjU0QzE2LjE4IDE4LjkzIDE3IDE4LjMxIDE3LjQ0IDE4QzE3LjQ0IDE4IDE3LjUgMTcuOTMgMTcuNjEgMTguMDVDMTcuNzIgMTguMjIgMTcuODMgMTguMyAxNy42OCAxOC40MU0xNi45NyAxMS4wNkMxNi40IDExLjA2IDE1Ljk0IDEwLjYgMTUuOTQgMTAuMDNDMTUuOTQgOS40NiAxNi40IDkgMTYuOTcgOUMxNy41NCA5IDE4IDkuNDYgMTggMTAuMDNDMTggMTAuNiAxNy41NCAxMS4wNiAxNi45NyAxMS4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTG9jayA9IFwiTTE0LjIgMTQuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuN0MxMyAyMS4xNiAxMy4xIDIxLjYgMTMuMjcgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTAuMTFDMTkuNjggMTAuMDQgMTkuMzQgMTAgMTkgMTBDMTYuNCAxMCAxNC4yIDEyLjA2IDE0LjIgMTQuNU0yMyAxNy4zVjIwLjhDMjMgMjEuNCAyMi40IDIyIDIxLjcgMjJIMTYuMkMxNS42IDIyIDE1IDIxLjQgMTUgMjAuN1YxNy4yQzE1IDE2LjYgMTUuNiAxNiAxNi4yIDE2VjE0LjVDMTYuMiAxMy4xIDE3LjYgMTIgMTkgMTJTMjEuOCAxMy4xIDIxLjggMTQuNVYxNkMyMi40IDE2IDIzIDE2LjYgMjMgMTcuM00yMC41IDE0LjVDMjAuNSAxMy43IDE5LjggMTMuMiAxOSAxMy4yUzE3LjUgMTMuNyAxNy41IDE0LjVWMTZIMjAuNVYxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tMb2NrT3BlbiA9IFwiTTE0LjIgMTMuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuN0MxMyAyMS4xNiAxMy4xIDIxLjYgMTMuMjcgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWOS4xMUMxOS42OCA5LjA0IDE5LjM0IDkgMTkgOUMxNi40IDkgMTQuMiAxMS4wNiAxNC4yIDEzLjVNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va0xvY2tPcGVuT3V0bGluZSA9IFwiTTEzIDIwLjdDMTMgMjEuMTYgMTMuMSAyMS42IDEzLjI3IDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWOS4xMUMxOS42OCA5LjA0IDE5LjM0IDkgMTkgOVMxOC4zMiA5LjA0IDE4IDkuMTFWNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTNWMjAuN00yMS44IDE2SDE3LjVWMTMuNUMxNy41IDEyLjcgMTguMiAxMi4yIDE5IDEyLjJTMjAuNSAxMi43IDIwLjUgMTMuNVYxNEgyMS44VjEzLjVDMjEuOCAxMi4xIDIwLjQgMTEgMTkgMTFTMTYuMiAxMi4xIDE2LjIgMTMuNVYxNkMxNS42IDE2IDE1IDE2LjYgMTUgMTcuMlYyMC43QzE1IDIxLjQgMTUuNiAyMiAxNi4yIDIySDIxLjdDMjIuNCAyMiAyMyAyMS40IDIzIDIwLjhWMTcuM0MyMyAxNi42IDIyLjQgMTYgMjEuOCAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTG9ja091dGxpbmUgPSBcIk0xMyAyMC43QzEzIDIxLjE2IDEzLjEgMjEuNiAxMy4yNyAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEwLjExQzE5LjY4IDEwLjA0IDE5LjM0IDEwIDE5IDEwUzE4LjMyIDEwLjA0IDE4IDEwLjExVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzVjIwLjdNMjMgMTcuM1YyMC44QzIzIDIxLjQgMjIuNCAyMiAyMS43IDIySDE2LjJDMTUuNiAyMiAxNSAyMS40IDE1IDIwLjdWMTcuMkMxNSAxNi42IDE1LjYgMTYgMTYuMiAxNlYxNC41QzE2LjIgMTMuMSAxNy42IDEyIDE5IDEyUzIxLjggMTMuMSAyMS44IDE0LjVWMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNNMjAuNSAxNC41QzIwLjUgMTMuNyAxOS44IDEzLjIgMTkgMTMuMlMxNy41IDEzLjcgMTcuNSAxNC41VjE2SDIwLjVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTWFya2VyID0gXCJNMTMgMTUuNUMxMyAxNy43OCAxNC43IDIwLjQxIDE1LjkxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEwLjIyQzE5LjUgMTAuMDggMTkgMTAgMTguNSAxMEMxNS41IDEwIDEzIDEyLjUgMTMgMTUuNU0yMiAxNS41QzIyIDE4LjEgMTguNSAyMiAxOC41IDIyUzE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMlMyMiAxMy42IDIyIDE1LjVNMTkuNyAxNS42QzE5LjcgMTUgMTkuMSAxNC40IDE4LjUgMTQuNFMxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44UzE5LjggMTYuMiAxOS43IDE1LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01hcmtlck91dGxpbmUgPSBcIk0xNC41NSAyMEMxNSAyMC43NiAxNS41IDIxLjQ0IDE1LjkxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTAuMjJDMTkuNSAxMC4wOCAxOSAxMCAxOC41IDEwQzE4LjMzIDEwIDE4LjE3IDEwIDE4IDEwLjAzVjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDE0LjU1TTIyIDE1LjVDMjIgMTguMSAxOC41IDIyIDE4LjUgMjJTMTUgMTguMSAxNSAxNS41QzE1IDEzLjYgMTYuNiAxMiAxOC41IDEyUzIyIDEzLjYgMjIgMTUuNU0xOS43IDE1LjZDMTkuNyAxNSAxOS4xIDE0LjQgMTguNSAxNC40UzE3LjMgMTQuOSAxNy4zIDE1LjZDMTcuMyAxNi4yIDE3LjggMTYuOCAxOC41IDE2LjhTMTkuOCAxNi4yIDE5LjcgMTUuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTWludXMgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01pbnVzTXVsdGlwbGUgPSBcIk0xMy4wOSAyMEg1VjZIM1YyMEMzIDIxLjExIDMuOSAyMiA1IDIySDEzLjgxQzEzLjQ0IDIxLjM5IDEzLjIgMjAuNzEgMTMuMDkgMjBNMTkgMkgxNFY3TDEyIDUuNUwxMCA3VjJIOUM3LjkgMiA3IDIuOSA3IDRWMTZDNyAxNy4xMSA3LjkgMTggOSAxOEgxMy4wOUMxMy42NCAxNC43MyAxNi43NCAxMi41MyAyMCAxMy4wOEMyMC4zNCAxMy4xNCAyMC42OCAxMy4yMyAyMSAxMy4zNFY0QzIxIDIuOSAyMC4xMSAyIDE5IDJNMjMgMThWMjBIMTVWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01pbnVzTXVsdGlwbGVPdXRsaW5lID0gXCJNMTMuMDkgMjBINVY2SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxMy44MUMxMy40NCAyMS4zOSAxMy4yIDIwLjcxIDEzLjA5IDIwTTE5IDJIOUM3LjkgMiA3IDIuOSA3IDRWMTZDNyAxNy4xMSA3LjkgMTggOSAxOEgxMy4wOUMxMy4yIDE3LjI5IDEzLjQ0IDE2LjYxIDEzLjgxIDE2SDlWNEgxMVYxMEwxMy41IDcuNzVMMTYgMTBWNEgxOVYxM0MxOS42OCAxMyAyMC4zNiAxMy4xMSAyMSAxMy4zNFY0QzIxIDIuOSAyMC4xMSAyIDE5IDJNMjMgMThWMjBIMTVWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va01pbnVzT3V0bGluZSA9IFwiTTEzLjA5IDIwQzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDE4QzE5LjExIDIgMjAgMi45IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWNEgxM1YxMkwxMC41IDkuNzVMOCAxMlY0SDZWMjBIMTMuMDlNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va011bHRpcGxlID0gXCJNMTksMThIOUEyLDIgMCAwLDEgNywxNlY0QTIsMiAwIDAsMSA5LDJIMTBWN0wxMiw1LjVMMTQsN1YySDE5QTIsMiAwIDAsMSAyMSw0VjE2QTIsMiAwIDAsMSAxOSwxOE0xNywyMFYyMkg1QTIsMiAwIDAsMSAzLDIwVjZINVYyMEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rTXVsdGlwbGVPdXRsaW5lID0gXCJNMTkgMkEyIDIgMCAwIDEgMjEgNFYxNkEyIDIgMCAwIDEgMTkgMThIOUEyIDIgMCAwIDEgNyAxNlY0QTIgMiAwIDAgMSA5IDJIMTlNMTkgNEgxNlYxMEwxMy41IDcuNzVMMTEgMTBWNEg5VjE2SDE5TTMgMjBBMiAyIDAgMCAwIDUgMjJIMTdWMjBINVY2SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va011c2ljID0gXCJNMTMgMjAuNUMxMyAyMS4wMyAxMy4wOSAyMS41MyAxMy4yNiAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMUgxNi41VjE2LjExQzE0LjUgMTYuNTcgMTMgMTguMzYgMTMgMjAuNU0yMCAxM0gxOC41VjE4LjIxQzE4LjE5IDE4LjA3IDE3Ljg2IDE4IDE3LjUgMThDMTYuMTIgMTggMTUgMTkuMTIgMTUgMjAuNVMxNi4xMiAyMyAxNy41IDIzIDIwIDIxLjg4IDIwIDIwLjVWMTVIMjJWMTNIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va011c2ljT3V0bGluZSA9IFwiTTEzIDIwLjVDMTMgMjEuMDMgMTMuMDkgMjEuNTMgMTMuMjYgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMUgxOFY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy4wNEMxMy4wMyAyMC4xNyAxMyAyMC4zMyAxMyAyMC41TTIwIDEzSDE4LjVWMTguMjFDMTguMTkgMTguMDcgMTcuODYgMTggMTcuNSAxOEMxNi4xMiAxOCAxNSAxOS4xMiAxNSAyMC41UzE2LjEyIDIzIDE3LjUgMjMgMjAgMjEuODggMjAgMjAuNVYxNUgyMlYxM0gyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rT2ZmID0gXCJNMTguNjggMi4xMkwxMiA4LjhWMkgxOEMxOC4yNCAyIDE4LjQ2IDIuMDUgMTguNjggMi4xMk05LjUgNy41TDcgOVYySDZDNC44OSAyIDQgMi45IDQgNFYxNi44TDExLjg4IDguOTNMOS41IDcuNU0yMS42MSAxLjczTDEuODkgMjEuNDZMMy4xNiAyMi43M0w0LjU0IDIxLjM1QzQuOSAyMS43NSA1LjQyIDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWNS44OUwyMi44OSAzTDIxLjYxIDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va09mZk91dGxpbmUgPSBcIk02IDE0LjhMNCAxNi44VjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOC4yNCAyIDE4LjQ3IDIuMDQgMTguNjggMi4xMkwxNi44IDRIMTNWNy44TDEwLjc5IDEwTDEwLjUgOS43NUw4IDEyVjRINlYxNC44TTIyLjg5IDNMMjAgNS44OVYyMEMyMCAyMS4xMSAxOS4xMSAyMiAxOCAyMkg2QzUuNDIgMjIgNC45IDIxLjc1IDQuNTQgMjEuMzVMMy4xNiAyMi43M0wxLjg5IDIxLjQ2TDIxLjYxIDEuNzNMMjIuODkgM00xOCA3Ljg5TDYgMTkuODlWMjBIMThWNy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rT3BlbiA9IFwiTTEzLDEySDIwVjEzLjVIMTNNMTMsOS41SDIwVjExSDEzTTEzLDE0LjVIMjBWMTZIMTNNMjEsNEgzQTIsMiAwIDAsMCAxLDZWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjZBMiwyIDAgMCwwIDIxLDRNMjEsMTlIMTJWNkgyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPcGVuQmxhbmtWYXJpYW50ID0gXCJNMjEsNUMxOS44OSw0LjY1IDE4LjY3LDQuNSAxNy41LDQuNUMxNS41NSw0LjUgMTMuNDUsNC45IDEyLDZDMTAuNTUsNC45IDguNDUsNC41IDYuNSw0LjVDNC41NSw0LjUgMi40NSw0LjkgMSw2VjIwLjY1QzEsMjAuOSAxLjI1LDIxLjE1IDEuNSwyMS4xNUMxLjYsMjEuMTUgMS42NSwyMS4xIDEuNzUsMjEuMUMzLjEsMjAuNDUgNS4wNSwyMCA2LjUsMjBDOC40NSwyMCAxMC41NSwyMC40IDEyLDIxLjVDMTMuMzUsMjAuNjUgMTUuOCwyMCAxNy41LDIwQzE5LjE1LDIwIDIwLjg1LDIwLjMgMjIuMjUsMjEuMDVDMjIuMzUsMjEuMSAyMi40LDIxLjEgMjIuNSwyMS4xQzIyLjc1LDIxLjEgMjMsMjAuODUgMjMsMjAuNlY2QzIyLjQsNS41NSAyMS43NSw1LjI1IDIxLDVNMjEsMTguNUMxOS45LDE4LjE1IDE4LjcsMTggMTcuNSwxOEMxNS44LDE4IDEzLjM1LDE4LjY1IDEyLDE5LjVWOEMxMy4zNSw3LjE1IDE1LjgsNi41IDE3LjUsNi41QzE4LjcsNi41IDE5LjksNi42NSAyMSw3VjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va09wZW5PdXRsaW5lID0gXCJNMjEsNEgzQTIsMiAwIDAsMCAxLDZWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjZBMiwyIDAgMCwwIDIxLDRNMywxOVY2SDExVjE5SDNNMjEsMTlIMTNWNkgyMVYxOU0xNCw5LjVIMjBWMTFIMTRWOS41TTE0LDEySDIwVjEzLjVIMTRWMTJNMTQsMTQuNUgyMFYxNkgxNFYxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPcGVuUGFnZVZhcmlhbnQgPSBcIk0xOSAyTDE0IDYuNVYxNy41TDE5IDEzVjJNNi41IDVDNC41NSA1IDIuNDUgNS40IDEgNi41VjIxLjE2QzEgMjEuNDEgMS4yNSAyMS42NiAxLjUgMjEuNjZDMS42IDIxLjY2IDEuNjUgMjEuNTkgMS43NSAyMS41OUMzLjEgMjAuOTQgNS4wNSAyMC41IDYuNSAyMC41QzguNDUgMjAuNSAxMC41NSAyMC45IDEyIDIyQzEzLjM1IDIxLjE1IDE1LjggMjAuNSAxNy41IDIwLjVDMTkuMTUgMjAuNSAyMC44NSAyMC44MSAyMi4yNSAyMS41NkMyMi4zNSAyMS42MSAyMi40IDIxLjU5IDIyLjUgMjEuNTlDMjIuNzUgMjEuNTkgMjMgMjEuMzQgMjMgMjEuMDlWNi41QzIyLjQgNi4wNSAyMS43NSA1Ljc1IDIxIDUuNVYxOUMxOS45IDE4LjY1IDE4LjcgMTguNSAxNy41IDE4LjVDMTUuOCAxOC41IDEzLjM1IDE5LjE1IDEyIDIwVjYuNUMxMC41NSA1LjQgOC40NSA1IDYuNSA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPcGVuUGFnZVZhcmlhbnRPdXRsaW5lID0gXCJNMTkgMUwxNCA2VjE3TDE5IDEyLjVWMU0yMSA1VjE4LjVDMTkuOSAxOC4xNSAxOC43IDE4IDE3LjUgMThDMTUuOCAxOCAxMy4zNSAxOC42NSAxMiAxOS41VjZDMTAuNTUgNC45IDguNDUgNC41IDYuNSA0LjVDNC41NSA0LjUgMi40NSA0LjkgMSA2VjIwLjY1QzEgMjAuOSAxLjI1IDIxLjE1IDEuNSAyMS4xNUMxLjYgMjEuMTUgMS42NSAyMS4xIDEuNzUgMjEuMUMzLjEgMjAuNDUgNS4wNSAyMCA2LjUgMjBDOC40NSAyMCAxMC41NSAyMC40IDEyIDIxLjVDMTMuMzUgMjAuNjUgMTUuOCAyMCAxNy41IDIwQzE5LjE1IDIwIDIwLjg1IDIwLjMgMjIuMjUgMjEuMDVDMjIuMzUgMjEuMSAyMi40IDIxLjEgMjIuNSAyMS4xQzIyLjc1IDIxLjEgMjMgMjAuODUgMjMgMjAuNlY2QzIyLjQgNS41NSAyMS43NSA1LjI1IDIxIDVNMTAgMTguNDFDOC43NSAxOC4wOSA3LjUgMTggNi41IDE4QzUuNDQgMTggNC4xOCAxOC4xOSAzIDE4LjVWNy4xM0MzLjkxIDYuNzMgNS4xNCA2LjUgNi41IDYuNUM3Ljg2IDYuNSA5LjA5IDYuNzMgMTAgNy4xM1YxOC40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rT3BlblZhcmlhbnQgPSBcIk0xNy41IDE0LjMzQzE4LjI5IDE0LjMzIDE5LjEzIDE0LjQxIDIwIDE0LjU3VjE2LjA3QzE5LjM4IDE1LjkxIDE4LjU0IDE1LjgzIDE3LjUgMTUuODNDMTUuNiAxNS44MyAxNC4xMSAxNi4xNiAxMyAxNi44MlYxNS4xM0MxNC4xNyAxNC42IDE1LjY3IDE0LjMzIDE3LjUgMTQuMzNNMTMgMTIuNDZDMTQuMjkgMTEuOTMgMTUuNzkgMTEuNjcgMTcuNSAxMS42N0MxOC4yOSAxMS42NyAxOS4xMyAxMS43NCAyMCAxMS45VjEzLjRDMTkuMzggMTMuMjQgMTguNTQgMTMuMTYgMTcuNSAxMy4xNkMxNS42IDEzLjE2IDE0LjExIDEzLjUgMTMgMTQuMTVNMTcuNSAxMC41QzE1LjYgMTAuNSAxNC4xMSAxMC44MiAxMyAxMS41VjkuODRDMTQuMjMgOS4yOCAxNS43MyA5IDE3LjUgOUMxOC4yOSA5IDE5LjEzIDkuMDggMjAgOS4yM1YxMC43OEMxOS4yNiAxMC41OSAxOC40MSAxMC41IDE3LjUgMTAuNU0yMSAxOC41VjdDMTkuOTYgNi42NyAxOC43OSA2LjUgMTcuNSA2LjVDMTUuNDUgNi41IDEzLjYyIDcgMTIgOFYxOS41QzEzLjYyIDE4LjUgMTUuNDUgMTggMTcuNSAxOEMxOC42OSAxOCAxOS44NiAxOC4xNiAyMSAxOC41TTE3LjUgNC41QzE5Ljg1IDQuNSAyMS42OSA1IDIzIDZWMjAuNTZDMjMgMjAuNjggMjIuOTUgMjAuOCAyMi44NCAyMC45MUMyMi43MyAyMSAyMi42MSAyMS4wOCAyMi41IDIxLjA4QzIyLjM5IDIxLjA4IDIyLjMxIDIxLjA2IDIyLjI1IDIxLjAzQzIwLjk3IDIwLjM0IDE5LjM4IDIwIDE3LjUgMjBDMTUuNDUgMjAgMTMuNjIgMjAuNSAxMiAyMS41QzEwLjY2IDIwLjUgOC44MyAyMCA2LjUgMjBDNC44NCAyMCAzLjI1IDIwLjM2IDEuNzUgMjEuMDdDMS43MiAyMS4wOCAxLjY4IDIxLjA4IDEuNjMgMjEuMUMxLjU5IDIxLjExIDEuNTUgMjEuMTIgMS41IDIxLjEyQzEuMzkgMjEuMTIgMS4yNyAyMS4wOCAxLjE2IDIxQzEuMDUgMjAuODkgMSAyMC43OCAxIDIwLjY1VjZDMi4zNCA1IDQuMTggNC41IDYuNSA0LjVDOC44MyA0LjUgMTAuNjYgNSAxMiA2QzEzLjM0IDUgMTUuMTcgNC41IDE3LjUgNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tPdXRsaW5lID0gXCJNMTgsMkEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMThNMTgsNEgxM1YxMkwxMC41LDkuNzVMOCwxMlY0SDZWMjBIMThWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUGxheSA9IFwiTTEzIDE5QzEzIDIwLjEgMTMuMyAyMS4xMiAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkg3VjlMOS41IDcuNUwxMiA5VjJIMThDMTkuMSAyIDIwIDIuODkgMjAgNFYxMy4wOUMxOS42NyAxMy4wNCAxOS4zNCAxMyAxOSAxM0MxNS42OSAxMyAxMyAxNS42OSAxMyAxOU0xNyAxNlYyMkwyMiAxOUwxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUGxheU91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTE3IDE2VjIyTDIyIDE5TDE3IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tQbHVzID0gXCJNMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEyIDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjExIDQgMjBWNEM0IDIuOSA0Ljg5IDIgNiAySDdWOUw5LjUgNy41TDEyIDlWMkgxOEMxOS4xIDIgMjAgMi44OSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tQbHVzTXVsdGlwbGUgPSBcIk0xMy4wOSAyMEg1VjZIM1YyMEEyIDIgMCAwIDAgNSAyMkgxMy44MUE1LjUgNS41IDAgMCAxIDEzLjA5IDIwTTE5IDJIMTRWN0wxMiA1LjVMMTAgN1YySDlBMiAyIDAgMCAwIDcgNFYxNkEyIDIgMCAwIDAgOSAxOEgxMy4wOUE2IDYgMCAwIDEgMjEgMTMuMzRWNEEyIDIgMCAwIDAgMTkgMk0yMCAxNVYxOEgyM1YyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUGx1c011bHRpcGxlT3V0bGluZSA9IFwiTTEzLjA5IDIwSDVWNkgzVjIwQTIgMiAwIDAgMCA1IDIySDEzLjgxQTUuNSA1LjUgMCAwIDEgMTMuMDkgMjBNMTkgMkg5QTIgMiAwIDAgMCA3IDRWMTZBMiAyIDAgMCAwIDkgMThIMTMuMDlBNS41IDUuNSAwIDAgMSAxMy44MSAxNkg5VjRIMTFWMTBMMTMuNSA3Ljc1TDE2IDEwVjRIMTlWMTNBNiA2IDAgMCAxIDIxIDEzLjM0VjRBMiAyIDAgMCAwIDE5IDJNMjAgMTVWMThIMjNWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1BsdXNPdXRsaW5lID0gXCJNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIMThDMTkuMTEgMiAyMCAyLjkgMjAgNFYxMy4wOUMxOS42NyAxMy4wNCAxOS4zNCAxMyAxOSAxM0MxOC42NiAxMyAxOC4zMyAxMy4wNCAxOCAxMy4wOVY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy4wOU0yMCAxOFYxNUgxOFYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUmVmcmVzaCA9IFwiTTEyIDE4LjVDMTIgMTkuNzkgMTIuMzkgMjEgMTMuMDQgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTIuMThDMTkuNSAxMi4wNyAxOSAxMiAxOC41IDEyQzE0LjkxIDEyIDEyIDE0LjkxIDEyIDE4LjVNMjIgMTguNVYxNC41TDIwLjgzIDE1LjY3QzIwLjExIDE0Ljk1IDE5LjExIDE0LjUgMTggMTQuNUMxNS43OSAxNC41IDE0IDE2LjI5IDE0IDE4LjVTMTUuNzkgMjIuNSAxOCAyMi41QzE5LjY4IDIyLjUgMjEuMTIgMjEuNDcgMjEuNzEgMjBIMjBDMTkuNTQgMjAuNjEgMTguODIgMjEgMTggMjFDMTYuNjIgMjEgMTUuNSAxOS44OCAxNS41IDE4LjVTMTYuNjIgMTYgMTggMTZDMTguNjkgMTYgMTkuMzIgMTYuMjggMTkuNzcgMTYuNzNMMTggMTguNUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rUmVmcmVzaE91dGxpbmUgPSBcIk0xMi4xOCAyMEMxMi4zNiAyMC43MiAxMi42NSAyMS4zOSAxMy4wNCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEyLjE4QzE5LjUgMTIuMDcgMTkgMTIgMTguNSAxMkMxOC4zMyAxMiAxOC4xNyAxMiAxOCAxMi4wM1Y0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMi4xOE0yMiAxOC41VjE0LjVMMjAuODMgMTUuNjdDMjAuMTEgMTQuOTUgMTkuMTEgMTQuNSAxOCAxNC41QzE1Ljc5IDE0LjUgMTQgMTYuMjkgMTQgMTguNVMxNS43OSAyMi41IDE4IDIyLjVDMTkuNjggMjIuNSAyMS4xMiAyMS40NyAyMS43MSAyMEgyMEMxOS41NCAyMC42MSAxOC44MiAyMSAxOCAyMUMxNi42MiAyMSAxNS41IDE5Ljg4IDE1LjUgMTguNVMxNi42MiAxNiAxOCAxNkMxOC42OSAxNiAxOS4zMiAxNi4yOCAxOS43NyAxNi43M0wxOCAxOC41SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tSZW1vdmUgPSBcIk0xMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjIuNTQgMTYuODhMMjEuMTIgMTUuNDdMMTkgMTcuNTlMMTYuODggMTUuNDdMMTUuNDcgMTYuODhMMTcuNTkgMTlMMTUuNDcgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1JlbW92ZU11bHRpcGxlID0gXCJNMTMuMDkgMjBINVY2SDNWMjBBMiAyIDAgMCAwIDUgMjJIMTMuODFBNS41IDUuNSAwIDAgMSAxMy4wOSAyME0xOSAySDE0VjdMMTIgNS41TDEwIDdWMkg5QTIgMiAwIDAgMCA3IDRWMTZBMiAyIDAgMCAwIDkgMThIMTMuMDlBNiA2IDAgMCAxIDIxIDEzLjM0VjRBMiAyIDAgMCAwIDE5IDJNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDYgMjEuMTJMMTcuNTkgMTlMMTUuNDYgMTYuODhMMTYuODggMTUuNDZMMTkgMTcuNTlMMjEuMTIgMTUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1JlbW92ZU11bHRpcGxlT3V0bGluZSA9IFwiTTEzLjA5IDIwSDVWNkgzVjIwQTIgMiAwIDAgMCA1IDIySDEzLjgxQTUuNSA1LjUgMCAwIDEgMTMuMDkgMjBNMTkgMkg5QTIgMiAwIDAgMCA3IDRWMTZBMiAyIDAgMCAwIDkgMThIMTMuMDlBNS41IDUuNSAwIDAgMSAxMy44MSAxNkg5VjRIMTFWMTBMMTMuNSA3Ljc1TDE2IDEwVjRIMTlWMTNBNiA2IDAgMCAxIDIxIDEzLjM0VjRBMiAyIDAgMCAwIDE5IDJNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDYgMjEuMTJMMTcuNTkgMTlMMTUuNDYgMTYuODhMMTYuODggMTUuNDZMMTkgMTcuNTlMMjEuMTIgMTUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1JlbW92ZU91dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjRIMTNWMTJMMTAuNSA5Ljc1TDggMTJWNEg2VjIwSDEzLjA5TTIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ3TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tTZWFyY2ggPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE02LDIyQTIsMiAwIDAsMSA0LDIwVjRDNCwyLjg5IDQuOSwyIDYsMkg3VjlMOS41LDcuNUwxMiw5VjJIMThBMiwyIDAgMCwxIDIwLDRWMTEuODFDMTguODMsMTAuNjkgMTcuMjUsMTAgMTUuNSwxMEE2LjUsNi41IDAgMCwwIDksMTYuNUM5LDE4LjgxIDEwLjIxLDIwLjg1IDEyLjAzLDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1NlYXJjaE91dGxpbmUgPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0xMyw0VjEyTDEwLjUsOS43NUw4LDEyVjRINlYyMEgxMEMxMC41NCwyMC44MSAxMS4yMywyMS41IDEyLjAzLDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE4QTIsMiAwIDAsMSAyMCw0VjExLjgxQzE5LjQyLDExLjI2IDE4Ljc1LDEwLjgxIDE4LDEwLjVWNEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rU2V0dGluZ3MgPSBcIk0yMCAyVjE4QzIwIDE5LjExIDE5LjExIDIwIDE4IDIwSDZDNC44OSAyMCA0IDE5LjExIDQgMThWMkM0IC44OTUgNC44OSAwIDYgMEg3VjdMOS41IDUuNUwxMiA3VjBIMThDMTkuMSAwIDIwIC44OSAyMCAyTTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0TTExIDI0SDEzVjIySDExVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2tTZXR0aW5nc091dGxpbmUgPSBcIk0xOCAwSDZDNC44OSAwIDQgLjg5NSA0IDJWMThDNCAxOS4xMSA0Ljg5IDIwIDYgMjBIMThDMTkuMTEgMjAgMjAgMTkuMTEgMjAgMThWMkMyMCAuODk1IDE5LjExIDAgMTggME0xOCAxOEg2VjJIOFYxMEwxMC41IDcuNzVMMTMgMTBWMkgxOFYxOE03IDIySDlWMjRIN1YyMk0xMSAyMkgxM1YyNEgxMVYyMk0xNSAyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rU3luYyA9IFwiTTEzIDE3LjVDMTMgMTkuMjUgMTMuNjkgMjAuODMgMTQuODIgMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY0QzQgMi45IDQuODkgMiA2IDJIN1Y5TDkuNSA3LjVMMTIgOVYySDE4QzE5LjEgMiAyMCAyLjg5IDIwIDRWMTEuMDNDMTkuODQgMTEgMTkuNjcgMTEgMTkuNSAxMUMxNS45MSAxMSAxMyAxMy45MSAxMyAxNy41TTE5IDIwQzE3LjYyIDIwIDE2LjUgMTguODggMTYuNSAxNy41QzE2LjUgMTcuMSAxNi41OSAxNi43MiAxNi43NiAxNi4zOEwxNS42NyAxNS4yOUMxNS4yNSAxNS45MiAxNSAxNi42OCAxNSAxNy41QzE1IDE5LjcxIDE2Ljc5IDIxLjUgMTkgMjEuNVYyM0wyMS4yNSAyMC43NUwxOSAxOC41VjIwTTE5IDEzLjVWMTJMMTYuNzUgMTQuMjVMMTkgMTYuNVYxNUMyMC4zOCAxNSAyMS41IDE2LjEyIDIxLjUgMTcuNUMyMS41IDE3LjkgMjEuNDEgMTguMjggMjEuMjQgMTguNjJMMjIuMzMgMTkuNzFDMjIuNzUgMTkuMDggMjMgMTguMzIgMjMgMTcuNUMyMyAxNS4yOSAyMS4yMSAxMy41IDE5IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1N5bmNPdXRsaW5lID0gXCJNMTMuNSAyMEMxMy44MSAyMC43NSAxNC4yNiAyMS40MiAxNC44MiAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjRDNCAyLjkgNC44OSAyIDYgMkgxOEMxOS4xMSAyIDIwIDIuOSAyMCA0VjExLjAzQzE5Ljg0IDExIDE5LjY3IDExIDE5LjUgMTFDMTkgMTEgMTguNSAxMS4wNyAxOCAxMS4xOFY0SDEzVjEyTDEwLjUgOS43NUw4IDEyVjRINlYyMEgxMy41TTE5IDIwQzE3LjYyIDIwIDE2LjUgMTguODggMTYuNSAxNy41QzE2LjUgMTcuMSAxNi41OSAxNi43MiAxNi43NiAxNi4zOEwxNS42NyAxNS4yOUMxNS4yNSAxNS45MiAxNSAxNi42OCAxNSAxNy41QzE1IDE5LjcxIDE2Ljc5IDIxLjUgMTkgMjEuNVYyM0wyMS4yNSAyMC43NUwxOSAxOC41VjIwTTE5IDEzLjVWMTJMMTYuNzUgMTQuMjVMMTkgMTYuNVYxNUMyMC4zOCAxNSAyMS41IDE2LjEyIDIxLjUgMTcuNUMyMS41IDE3LjkgMjEuNDEgMTguMjggMjEuMjQgMTguNjJMMjIuMzMgMTkuNzFDMjIuNzUgMTkuMDggMjMgMTguMzIgMjMgMTcuNUMyMyAxNS4yOSAyMS4yMSAxMy41IDE5IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va1ZhcmlhbnQgPSBcIk02LDRIMTFWMTJMOC41LDEwLjVMNiwxMk0xOCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWNEEyLDIgMCAwLDAgMTgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rVmFyaWFudE11bHRpcGxlID0gXCJNNCw2SDJWMjBBMiwyIDAgMCwwIDQsMjJIMThWMjBINFY2TTIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTIwLDEyTDE3LjUsMTAuNUwxNSwxMlY0SDIwVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrID0gXCJNMTcsM0g3QTIsMiAwIDAsMCA1LDVWMjFMMTIsMThMMTksMjFWNUMxOSwzLjg5IDE4LjEsMyAxNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrQ2hlY2sgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjIxTDEyLDE4TDUsMjFWNUM1LDMuODkgNS45LDMgNywzSDE3TTExLDE0TDE3LjI1LDcuNzZMMTUuODQsNi4zNEwxMSwxMS4xOEw4LjQxLDguNTlMNywxMEwxMSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rbWFya0NoZWNrT3V0bGluZSA9IFwiTTkuNDcgOS42NUw4LjA2IDExLjA3TDExIDE0TDE2LjE5IDguODJMMTQuNzggNy40TDExIDExLjE4TTE3IDNIN0M1LjkgMyA1IDMuOSA1IDVMNSAyMUwxMiAxOEwxOSAyMVY1QzE5IDMuOSAxOC4xIDMgMTcgM00xNyAxOEwxMiAxNS44Mkw3IDE4VjVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtNaW51cyA9IFwiTTE3LDNIN0EyLDIgMCAwLDAgNSw1VjIxTDEyLDE4TDE5LDIxVjVBMiwyIDAgMCwwIDE3LDNNMTUsMTFIOVY5SDE1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrTWludXNPdXRsaW5lID0gXCJNOSwxMVY5SDE1VjExSDlNMTksNVYyMUwxMiwxOEw1LDIxVjVDNSwzLjg5IDUuOSwzIDcsM0gxN0MxOC4xMSwzIDE5LDMuOSAxOSw1TTE3LDVIN1YxOEwxMiwxNS44MkwxNywxOFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrTXVsdGlwbGUgPSBcIk0xNSw1QTIsMiAwIDAsMSAxNyw3VjIzTDEwLDIwTDMsMjNWN0MzLDUuODkgMy45LDUgNSw1SDE1TTksMUgxOUEyLDIgMCAwLDEgMjEsM1YxOUwxOSwxOC4xM1YzSDdBMiwyIDAgMCwxIDksMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rbWFya011bHRpcGxlT3V0bGluZSA9IFwiTTksMUgxOUEyLDIgMCAwLDEgMjEsM1YxOUwxOSwxOC4xM1YzSDdBMiwyIDAgMCwxIDksMU0xNSwyMFY3SDVWMjBMMTAsMTcuODJMMTUsMjBNMTUsNUMxNi4xMSw1IDE3LDUuOSAxNyw3VjIzTDEwLDIwTDMsMjNWN0EyLDIgMCAwLDEgNSw1SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrTXVzaWMgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjIxTDEyLDE4TDUsMjFWNUM1LDMuODkgNS45LDMgNywzSDE3TTExLDExQTIsMiAwIDAsMCA5LDEzQTIsMiAwIDAsMCAxMSwxNUEyLDIgMCAwLDAgMTMsMTNWOEgxNlY2SDEyVjExLjI3QzExLjcxLDExLjEgMTEuMzYsMTEgMTEsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtNdXNpY091dGxpbmUgPSBcIk03IDNDNS45IDMgNSAzLjkgNSA1VjIxTDEyIDE4TDE5IDIxVjVDMTkgMy44OSAxOC4xIDMgMTcgM0g3TTcgNUgxN1YxOEwxMiAxNS44Mkw3IDE4VjVNMTIgNlYxMS4zQzExLjcgMTEuMSAxMS40IDExIDExIDExQzkuOSAxMSA5IDExLjkgOSAxM0M5IDE0LjExIDkuOSAxNSAxMSAxNUMxMi4xMSAxNSAxMyAxNC4xMSAxMyAxM1Y4SDE1VjZIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtPZmYgPSBcIk0yMCwyMC43MkwxOC43MywyMkwxNi43OCwyMC4wNUwxMiwxOEw1LDIxVjguMjdMMiw1LjI3TDMuMjgsNEwyMCwyMC43Mk0xOSwxNy4xNlY1QzE5LDMuODkgMTguMSwzIDE3LDNIN0M2LjQxLDMgNS44OSwzLjI3IDUuNSwzLjY4TDE5LDE3LjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrT2ZmT3V0bGluZSA9IFwiTTMuMjgsNEwyLDUuMjdMNSw4LjI3VjIxTDEyLDE4TDE2Ljc4LDIwLjA1TDE4LjczLDIyTDIwLDIwLjcyTDMuMjgsNE03LDE4VjEwLjI3TDEzLDE2LjI1TDEyLDE1LjgyTDcsMThNNyw1LjE2TDUuNSwzLjY3QzUuODgsMy4yNiA2LjQxLDMgNywzSDE3QTIsMiAwIDAsMSAxOSw1VjE3LjE2TDE3LDE1LjE2VjVIN1Y1LjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrT3V0bGluZSA9IFwiTTE3LDE4TDEyLDE1LjgyTDcsMThWNUgxN00xNywzSDdBMiwyIDAgMCwwIDUsNVYyMUwxMiwxOEwxOSwyMVY1QzE5LDMuODkgMTguMSwzIDE3LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtQbHVzID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYyMUwxMiwxOEw1LDIxVjVDNSwzLjg5IDUuOSwzIDcsM0gxN00xMSw3VjlIOVYxMUgxMVYxM0gxM1YxMUgxNVY5SDEzVjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va21hcmtQbHVzT3V0bGluZSA9IFwiTTE3LDE4VjVIN1YxOEwxMiwxNS44MkwxNywxOE0xNywzQTIsMiAwIDAsMSAxOSw1VjIxTDEyLDE4TDUsMjFWNUM1LDMuODkgNS45LDMgNywzSDE3TTExLDdIMTNWOUgxNVYxMUgxM1YxM0gxMVYxMUg5VjlIMTFWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb29rbWFya1JlbW92ZSA9IFwiTTE3LDNBMiwyIDAgMCwxIDE5LDVWMjFMMTIsMThMNSwyMVY1QzUsMy44OSA1LjksMyA3LDNIMTdNOC4xNyw4LjU4TDEwLjU5LDExTDguMTcsMTMuNDFMOS41OSwxNC44M0wxMiwxMi40MUwxNC40MSwxNC44M0wxNS44MywxMy40MUwxMy40MSwxMUwxNS44Myw4LjU4TDE0LjQxLDcuMTdMMTIsOS41OEw5LjU5LDcuMTdMOC4xNyw4LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb2ttYXJrUmVtb3ZlT3V0bGluZSA9IFwiTTcgM0M1LjkgMyA1IDMuOSA1IDVWMjFMMTIgMThMMTkgMjFWNUMxOSAzLjg5IDE4LjEgMyAxNyAzSDdNNyA1SDE3VjE4TDEyIDE1LjgyTDcgMThWNU05Ljg4IDcuNDdMOC40NyA4Ljg4TDEwLjU5IDExTDguNDcgMTMuMTJMOS44OCAxNC41NEwxMiAxMi40MkwxNC4xMiAxNC41M0wxNS41NCAxMy4xMkwxMy40MiAxMUwxNS41MyA4Ljg4TDE0LjEyIDcuNDdMMTIgOS41OUw5Ljg4IDcuNDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9va3NoZWxmID0gXCJNOSAzVjE4SDEyVjNIOU0xMiA1TDE2IDE4TDE5IDE3TDE1IDRMMTIgNU01IDVWMThIOFY1SDVNMyAxOVYyMUgyMVYxOUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb21HYXRlID0gXCJNMjAsOUg4LjIyQzcuMTEsNy43NyA1LjIxLDcuNjggNCw4LjhDMy4zNiw5LjM2IDMsMTAuMTYgMywxMVYyMEExLDEgMCAwLDAgMiwyMVYyMkgxMFYyMUExLDEgMCAwLDAgOSwyMFYxM0gyMEEyLDIgMCAwLDAgMjIsMTFBMiwyIDAgMCwwIDIwLDlNNiwxMi41QTEuNSwxLjUgMCAwLDEgNC41LDExQTEuNSwxLjUgMCAwLDEgNiw5LjVBMS41LDEuNSAwIDAsMSA3LjUsMTFBMS41LDEuNSAwIDAsMSA2LDEyLjVNMTAuNSwxMkw5LDEwSDEwLjVMMTIsMTJIMTAuNU0xNC41LDEyTDEzLDEwSDE0LjVMMTYsMTJIMTQuNU0xOC41LDEyTDE3LDEwSDE4LjVMMjAsMTJIMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29tR2F0ZUFsZXJ0ID0gXCJNMTkuOSAzQzE5LjMgMiAxOC4xIDEuNyAxNy4yIDIuM0w2LjkgOC4yQzYuNiA4LjEgNi4zIDggNiA4QzQuMyA4IDMgOS4zIDMgMTFWMjBDMi40IDIwIDIgMjAuNCAyIDIxVjIySDEwVjIxQzEwIDIwLjQgOS42IDIwIDkgMjBWMTEuNkwxOS4xIDUuOEMyMC4xIDUuMiAyMC40IDQgMTkuOSAzTTYgMTIuNUM1LjIgMTIuNSA0LjUgMTEuOCA0LjUgMTFTNS4yIDkuNSA2IDkuNSA3LjUgMTAuMiA3LjUgMTEgNi44IDEyLjUgNiAxMi41TTEwLjQgOS42TDguMSA4LjZMOS40IDcuOEwxMS43IDguOEwxMC40IDkuNk0xMy45IDcuNkwxMS42IDYuNkwxMi45IDUuOEwxNS4yIDYuOEwxMy45IDcuNk0xNy4zIDUuNkwxNSA0LjZMMTYuMyAzLjhMMTguNiA0LjhMMTcuMyA1LjZNMjAgMThIMThWMjBIMjBWMThNMjAgMTBIMThWMTZIMjBWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVBbGVydE91dGxpbmUgPSBcIk0xOS45IDNDMTkuMyAyIDE4LjEgMS43IDE3LjIgMi4zTDYuOSA4LjJDNi42IDguMSA2LjMgOCA2IDhDNC4zIDggMyA5LjMgMyAxMVYyMEMyLjQgMjAgMiAyMC40IDIgMjFWMjJIMTBWMjFDMTAgMjAuNCA5LjYgMjAgOSAyMFYxMS42TDE5LjEgNS44QzIwLjEgNS4yIDIwLjQgNCAxOS45IDNNNy41IDIwSDQuNVYxMy42QzUuNCAxNC4xIDYuNiAxNC4xIDcuNSAxMy42VjIwTTYgMTIuNUM1LjIgMTIuNSA0LjUgMTEuOCA0LjUgMTFTNS4yIDkuNSA2IDkuNSA3LjUgMTAuMiA3LjUgMTEgNi44IDEyLjUgNiAxMi41TTEwLjQgOS42TDguMSA4LjZMOS40IDcuOEwxMS43IDguOEwxMC40IDkuNk0xMy45IDcuNkwxMS42IDYuNkwxMi45IDUuOEwxNS4yIDYuOEwxMy45IDcuNk0xNy4zIDUuNkwxNSA0LjZMMTYuMyAzLjhMMTguNiA0LjhMMTcuMyA1LjZNMjAgMTZIMThWMTBIMjBWMTZNMjAgMjBIMThWMThIMjBWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVEb3duID0gXCJNMTkuODYsM0MxOS4zMSwyLjA0IDE4LjA5LDEuNzEgMTcuMTIsMi4yN0w2LjkyLDguMTZDNi42Miw4LjA2IDYuMzEsOCA2LDhBMywzIDAgMCwwIDMsMTFWMjBBMSwxIDAgMCwwIDIsMjFWMjJIMTBWMjFBMSwxIDAgMCwwIDksMjBWMTEuNThMMTkuMTIsNS43M0MyMC4wOCw1LjE4IDIwLjQxLDMuOTYgMTkuODYsM002LDEyLjVBMS41LDEuNSAwIDAsMSA0LjUsMTFBMS41LDEuNSAwIDAsMSA2LDkuNUExLjUsMS41IDAgMCwxIDcuNSwxMUExLjUsMS41IDAgMCwxIDYsMTIuNU0xMC40LDkuNjJMOC4xLDguNjJMOS40LDcuODdMMTEuNyw4Ljg3TDEwLjQsOS42Mk0xMy44Niw3LjYyTDExLjU2LDYuNjJMMTIuODYsNS44N0wxNS4xNiw2Ljg3TDEzLjg2LDcuNjJNMTcuMzMsNS42MkwxNS4wMyw0LjYyTDE2LjMzLDMuODdMMTguNjIsNC44N0wxNy4zMyw1LjYyTTE3LDIwTDEyLDE1SDE1VjExSDE5VjE1SDIyTDE3LDIwXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVEb3duT3V0bGluZSA9IFwiTTE5Ljg2LDNDMjAuNDEsMy45NiAyMC4wOCw1LjE4IDE5LjEyLDUuNzNMOSwxMS41OFYyMEExLDEgMCAwLDEgMTAsMjFWMjJIMlYyMUExLDEgMCAwLDEgMywyMFYxMUEzLDMgMCAwLDEgNiw4QzYuMzEsOCA2LjYyLDguMDYgNi45Miw4LjE2TDE3LjEyLDIuMjdDMTguMDksMS43MSAxOS4zMSwyLjA0IDE5Ljg2LDNNNy41LDIwVjEzLjZDNi41NywxNC4xNCA1LjQzLDE0LjE0IDQuNSwxMy42VjIwSDcuNU02LDEyLjVBMS41LDEuNSAwIDAsMCA3LjUsMTFBMS41LDEuNSAwIDAsMCA2LDkuNUExLjUsMS41IDAgMCwwIDQuNSwxMUExLjUsMS41IDAgMCwwIDYsMTIuNU0xMC40LDkuNjJMMTEuNyw4Ljg3TDkuNCw3Ljg3TDguMSw4LjYyTDEwLjQsOS42Mk0xMy44Niw3LjYyTDE1LjE2LDYuODdMMTIuODYsNS44N0wxMS41Niw2LjYyTDEzLjg2LDcuNjJNMTcuMzMsNS42MkwxOC42Miw0Ljg3TDE2LjMzLDMuODdMMTUuMDMsNC42MkwxNy4zMyw1LjYyTTE2LDExLjE2SDE4VjE2LjE3TDIxLDE2LjE2TDE3LDIwTDEzLDE2LjE2TDE2LDE2LjE3VjExLjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb21HYXRlT3V0bGluZSA9IFwiTTIwLDlIOC4yMkM3LjExLDcuNzcgNS4yMSw3LjY4IDQsOC44QzMuMzYsOS4zNiAzLDEwLjE2IDMsMTFWMjBBMSwxIDAgMCwwIDIsMjFWMjJIMTBWMjFBMSwxIDAgMCwwIDksMjBWMTNIMjBBMiwyIDAgMCwwIDIyLDExQTIsMiAwIDAsMCAyMCw5TTcuNSwyMEg0LjVWMTMuNkM1LjQzLDE0LjE0IDYuNTcsMTQuMTQgNy41LDEzLjZWMjBNNiwxMi41QTEuNSwxLjUgMCAwLDEgNC41LDExQTEuNSwxLjUgMCAwLDEgNiw5LjVBMS41LDEuNSAwIDAsMSA3LjUsMTFBMS41LDEuNSAwIDAsMSA2LDEyLjVNMTAuNSwxMkw5LDEwSDEwLjVMMTIsMTJIMTAuNU0xNC41LDEyTDEzLDEwSDE0LjVMMTYsMTJIMTQuNU0xOC41LDEyTDE3LDEwSDE4LjVMMjAsMTJIMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29tR2F0ZVVwID0gXCJNMTkuODYsM0MxOS4zMSwyLjA0IDE4LjA5LDEuNzEgMTcuMTIsMi4yN0w2LjkyLDguMTZDNi42Miw4LjA2IDYuMzEsOCA2LDhBMywzIDAgMCwwIDMsMTFWMjBBMSwxIDAgMCwwIDIsMjFWMjJIMTBWMjFBMSwxIDAgMCwwIDksMjBWMTEuNThMMTkuMTIsNS43M0MyMC4wOCw1LjE4IDIwLjQxLDMuOTYgMTkuODYsM002LDEyLjVBMS41LDEuNSAwIDAsMSA0LjUsMTFBMS41LDEuNSAwIDAsMSA2LDkuNUExLjUsMS41IDAgMCwxIDcuNSwxMUExLjUsMS41IDAgMCwxIDYsMTIuNU0xMC40LDkuNjJMOC4xLDguNjJMOS40LDcuODdMMTEuNyw4Ljg3TDEwLjQsOS42Mk0xMy44Niw3LjYyTDExLjU2LDYuNjJMMTIuODYsNS44N0wxNS4xNiw2Ljg3TDEzLjg2LDcuNjJNMTcuMzMsNS42MkwxNS4wMyw0LjYyTDE2LjMzLDMuODdMMTguNjIsNC44N0wxNy4zMyw1LjYyTTE3LDExTDIyLDE2SDE5VjIwSDE1VjE2SDEyTDE3LDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbUdhdGVVcE91dGxpbmUgPSBcIk0xOS44NiwzQzIwLjQxLDMuOTYgMjAuMDgsNS4xOCAxOS4xMiw1LjczTDksMTEuNThWMjBBMSwxIDAgMCwxIDEwLDIxVjIySDJWMjFBMSwxIDAgMCwxIDMsMjBWMTFBMywzIDAgMCwxIDYsOEM2LjMxLDggNi42Miw4LjA2IDYuOTIsOC4xNkwxNy4xMiwyLjI3QzE4LjA5LDEuNzEgMTkuMzEsMi4wNCAxOS44NiwzTTcuNSwyMFYxMy42QzYuNTcsMTQuMTQgNS40MywxNC4xNCA0LjUsMTMuNlYyMEg3LjVNNiwxMi41QTEuNSwxLjUgMCAwLDAgNy41LDExQTEuNSwxLjUgMCAwLDAgNiw5LjVBMS41LDEuNSAwIDAsMCA0LjUsMTFBMS41LDEuNSAwIDAsMCA2LDEyLjVNMTAuNCw5LjYyTDExLjcsOC44N0w5LjQsNy44N0w4LjEsOC42MkwxMC40LDkuNjJNMTMuODYsNy42MkwxNS4xNiw2Ljg3TDEyLjg2LDUuODdMMTEuNTYsNi42MkwxMy44Niw3LjYyTTE3LjMzLDUuNjJMMTguNjIsNC44N0wxNi4zMywzLjg3TDE1LjAzLDQuNjJMMTcuMzMsNS42Mk0xNiwyMFYxNUgxM0wxNywxMS4xNkwyMSwxNUgxOFYyMEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb29tYm94ID0gXCJNNyw1TDUsN1Y4SDNBMSwxIDAgMCwwIDIsOVYxN0ExLDEgMCAwLDAgMywxOEgyMUExLDEgMCAwLDAgMjIsMTdWOUExLDEgMCAwLDAgMjEsOEgxOVY3TDE3LDVIN003LDdIMTdWOEg3VjdNMTEsOUgxM0EwLjUsMC41IDAgMCwxIDEzLjUsOS41QTAuNSwwLjUgMCAwLDEgMTMsMTBIMTFBMC41LDAuNSAwIDAsMSAxMC41LDkuNUEwLjUsMC41IDAgMCwxIDExLDlNNy41LDEwLjVBMywzIDAgMCwxIDEwLjUsMTMuNUEzLDMgMCAwLDEgNy41LDE2LjVBMywzIDAgMCwxIDQuNSwxMy41QTMsMyAwIDAsMSA3LjUsMTAuNU0xNi41LDEwLjVBMywzIDAgMCwxIDE5LjUsMTMuNUEzLDMgMCAwLDEgMTYuNSwxNi41QTMsMyAwIDAsMSAxMy41LDEzLjVBMywzIDAgMCwxIDE2LjUsMTAuNU03LjUsMTJBMS41LDEuNSAwIDAsMCA2LDEzLjVBMS41LDEuNSAwIDAsMCA3LjUsMTVBMS41LDEuNSAwIDAsMCA5LDEzLjVBMS41LDEuNSAwIDAsMCA3LjUsMTJNMTYuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEzLjVBMS41LDEuNSAwIDAsMCAxNi41LDE1QTEuNSwxLjUgMCAwLDAgMTgsMTMuNUExLjUsMS41IDAgMCwwIDE2LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9vbWVyYW5nID0gXCJNMTAgMkg0QzIuOSAyIDIgMi45IDIgNFMyLjkgNiA0IDZIOEwxMCAyTTE4IDJDMjAuMiAyIDIyIDMuOCAyMiA2VjEyTDE4IDE0QzE4IDkuNiAxNC40IDYgMTAgNkwxMiAySDE4TTE4IDIwVjE2TDIyIDE0VjIwQzIyIDIxLjEgMjEuMSAyMiAyMCAyMlMxOCAyMS4xIDE4IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvb3RzdHJhcCA9IFwiTTExLjc5IDExLjVIOS43MlY4LjE5SDEyLjE5QzEzLjQ1IDguMTkgMTQuMTUgOC43NSAxNC4xNSA5Ljc4QzE0LjE1IDEwLjkgMTMuMzIgMTEuNSAxMS43OSAxMS41TTEyLjE2IDEyLjYzSDkuNzJWMTYuMjdMMTIuMjggMTYuMjdDMTMuODQgMTYuMjcgMTQuNjYgMTUuNjQgMTQuNjYgMTQuNDRTMTMuODEgMTIuNjMgMTIuMTYgMTIuNjNNMjIgNS4zMVYxOC42OUMyMiAyMC41IDIwLjUgMjIgMTguNjkgMjJINS4zMUMzLjUgMjIgMiAyMC41IDIgMTguNjlWNS4zMUMyIDMuNSAzLjUgMiA1LjMxIDJIMTguNjlDMjAuNSAyIDIyIDMuNSAyMiA1LjMxTTE2IDE0LjVDMTYgMTMuMTIgMTUuMDggMTIuMTMgMTMuNjcgMTEuOTVWMTEuODlDMTQuNjcgMTEuNzEgMTUuNDYgMTAuNzEgMTUuNDYgOS42M0MxNS40NiA4LjA4IDE0LjI2IDcuMDUgMTIuNSA3LjA1SDguNDNWMTcuNDFIMTIuNDdDMTQuNjggMTcuNDEgMTYgMTYuMzIgMTYgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJBbGwgPSBcIk0xOSwxMUgxM1Y1SDE5TTE5LDE5SDEzVjEzSDE5TTExLDExSDVWNUgxMU0xMSwxOUg1VjEzSDExTTMsMjFIMjFWM0gzVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckFsbFZhcmlhbnQgPSBcIk0zLDIxVjNIMjFWMjFIM001LDVWMTlIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckJvdHRvbSA9IFwiTTUsMTVIM1YxN0g1TTMsMjFIMjFWMTlIM001LDExSDNWMTNINU0xOSw5SDIxVjdIMTlNMTksNUgyMVYzSDE5TTUsN0gzVjlINU0xOSwxN0gyMVYxNUgxOU0xOSwxM0gyMVYxMUgxOU0xNywzSDE1VjVIMTdNMTMsM0gxMVY1SDEzTTE3LDExSDE1VjEzSDE3TTEzLDdIMTFWOUgxM001LDNIM1Y1SDVNMTMsMTFIMTFWMTNIMTNNOSwzSDdWNUg5TTEzLDE1SDExVjE3SDEzTTksMTFIN1YxM0g5VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckJvdHRvbVZhcmlhbnQgPSBcIk01LDE1SDNWMTdINU0zLDIxSDIxVjE5SDNNNSwxMUgzVjEzSDVNMTksOUgyMVY3SDE5TTE5LDVIMjFWM0gxOU01LDdIM1Y5SDVNMTksMTdIMjFWMTVIMTlNMTksMTNIMjFWMTFIMTlNMTcsM0gxNVY1SDE3TTEzLDNIMTFWNUgxM001LDNIM1Y1SDVNOSwzSDdWNUg5XCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyQ29sb3IgPSBcIk0yMC43MSw0LjA0QzIxLjEsMy42NSAyMS4xLDMgMjAuNzEsMi42M0wxOC4zNywwLjI5QzE4LC0wLjEgMTcuMzUsLTAuMSAxNi45NiwwLjI5TDE1LDIuMjVMMTguNzUsNk0xNy43NSw3TDE0LDMuMjVMNCwxMy4yNVYxN0g3Ljc1TDE3Ljc1LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVySG9yaXpvbnRhbCA9IFwiTTE5LDIxSDIxVjE5SDE5TTE1LDIxSDE3VjE5SDE1TTExLDE3SDEzVjE1SDExTTE5LDlIMjFWN0gxOU0xOSw1SDIxVjNIMTlNMywxM0gyMVYxMUgzTTExLDIxSDEzVjE5SDExTTE5LDE3SDIxVjE1SDE5TTEzLDNIMTFWNUgxM00xMyw3SDExVjlIMTNNMTcsM0gxNVY1SDE3TTksM0g3VjVIOU01LDNIM1Y1SDVNNywyMUg5VjE5SDdNMywxN0g1VjE1SDNNNSw3SDNWOUg1TTMsMjFINVYxOUgzVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlckluc2lkZSA9IFwiTTE5LDE3SDIxVjE1SDE5TTE5LDIxSDIxVjE5SDE5TTEzLDNIMTFWMTFIM1YxM0gxMVYyMUgxM1YxM0gyMVYxMUgxM00xNSwyMUgxN1YxOUgxNU0xOSw1SDIxVjNIMTlNMTksOUgyMVY3SDE5TTE3LDNIMTVWNUgxN001LDNIM1Y1SDVNOSwzSDdWNUg5TTMsMTdINVYxNUgzTTUsN0gzVjlINU03LDIxSDlWMTlIN00zLDIxSDVWMTlIM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJMZWZ0ID0gXCJNMTUsNUgxN1YzSDE1TTE1LDEzSDE3VjExSDE1TTE5LDIxSDIxVjE5SDE5TTE5LDEzSDIxVjExSDE5TTE5LDVIMjFWM0gxOU0xOSwxN0gyMVYxNUgxOU0xNSwyMUgxN1YxOUgxNU0xOSw5SDIxVjdIMTlNMywyMUg1VjNIM003LDEzSDlWMTFIN003LDVIOVYzSDdNNywyMUg5VjE5SDdNMTEsMTNIMTNWMTFIMTFNMTEsOUgxM1Y3SDExTTExLDVIMTNWM0gxMU0xMSwxN0gxM1YxNUgxMU0xMSwyMUgxM1YxOUgxMVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJMZWZ0VmFyaWFudCA9IFwiTTE1LDVIMTdWM0gxNU0xOSwyMUgyMVYxOUgxOU0xOSwxM0gyMVYxMUgxOU0xOSw1SDIxVjNIMTlNMTksMTdIMjFWMTVIMTlNMTUsMjFIMTdWMTlIMTVNMTksOUgyMVY3SDE5TTMsMjFINVYzSDNNNyw1SDlWM0g3TTcsMjFIOVYxOUg3TTExLDVIMTNWM0gxMU0xMSwyMUgxM1YxOUgxMVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJOb25lID0gXCJNMTUsNUgxN1YzSDE1TTE1LDEzSDE3VjExSDE1TTE1LDIxSDE3VjE5SDE1TTExLDVIMTNWM0gxMU0xOSw1SDIxVjNIMTlNMTEsOUgxM1Y3SDExTTE5LDlIMjFWN0gxOU0xOSwyMUgyMVYxOUgxOU0xOSwxM0gyMVYxMUgxOU0xOSwxN0gyMVYxNUgxOU0xMSwxM0gxM1YxMUgxMU0zLDVINVYzSDNNMyw5SDVWN0gzTTMsMTNINVYxMUgzTTMsMTdINVYxNUgzTTMsMjFINVYxOUgzTTExLDIxSDEzVjE5SDExTTExLDE3SDEzVjE1SDExTTcsMjFIOVYxOUg3TTcsMTNIOVYxMUg3TTcsNUg5VjNIN1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlck5vbmVWYXJpYW50ID0gXCJNMTUsNUgxN1YzSDE1TTE1LDIxSDE3VjE5SDE1TTExLDVIMTNWM0gxMU0xOSw1SDIxVjNIMTlNMTksOUgyMVY3SDE5TTE5LDIxSDIxVjE5SDE5TTE5LDEzSDIxVjExSDE5TTE5LDE3SDIxVjE1SDE5TTMsNUg1VjNIM00zLDlINVY3SDNNMywxM0g1VjExSDNNMywxN0g1VjE1SDNNMywyMUg1VjE5SDNNMTEsMjFIMTNWMTlIMTFNNywyMUg5VjE5SDdNNyw1SDlWM0g3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyT3V0c2lkZSA9IFwiTTksMTFIN1YxM0g5TTEzLDE1SDExVjE3SDEzTTE5LDE5SDVWNUgxOU0zLDIxSDIxVjNIM00xNywxMUgxNVYxM0gxN00xMywxMUgxMVYxM0gxM00xMyw3SDExVjlIMTNWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJSaWdodCA9IFwiTTExLDlIMTNWN0gxMU0xMSw1SDEzVjNIMTFNMTEsMTNIMTNWMTFIMTFNMTUsNUgxN1YzSDE1TTE1LDIxSDE3VjE5SDE1TTE5LDIxSDIxVjNIMTlNMTUsMTNIMTdWMTFIMTVNMTEsMTdIMTNWMTVIMTFNMyw5SDVWN0gzTTMsMTdINVYxNUgzTTMsMTNINVYxMUgzTTExLDIxSDEzVjE5SDExTTMsMjFINVYxOUgzTTcsMTNIOVYxMUg3TTcsNUg5VjNIN00zLDVINVYzSDNNNywyMUg5VjE5SDdWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyUmlnaHRWYXJpYW50ID0gXCJNMTEsNUgxM1YzSDExTTE1LDVIMTdWM0gxNU0xNSwyMUgxN1YxOUgxNU0xOSwyMUgyMVYzSDE5TTMsOUg1VjdIM00zLDE3SDVWMTVIM00zLDEzSDVWMTFIM00xMSwyMUgxM1YxOUgxMU0zLDIxSDVWMTlIM003LDVIOVYzSDdNMyw1SDVWM0gzTTcsMjFIOVYxOUg3VjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlclN0eWxlID0gXCJNMTUsMjFIMTdWMTlIMTVNMTksMjFIMjFWMTlIMTlNNywyMUg5VjE5SDdNMTEsMjFIMTNWMTlIMTFNMTksMTdIMjFWMTVIMTlNMTksMTNIMjFWMTFIMTlNMywzVjIxSDVWNUgyMVYzTTE5LDlIMjFWN0gxOVwiO1xyXG5leHBvcnQgdmFyIG1kaUJvcmRlclRvcCA9IFwiTTE1LDEzSDE3VjExSDE1TTE5LDIxSDIxVjE5SDE5TTExLDlIMTNWN0gxMU0xNSwyMUgxN1YxOUgxNU0xOSwxN0gyMVYxNUgxOU0zLDVIMjFWM0gzTTE5LDEzSDIxVjExSDE5TTE5LDlIMjFWN0gxOU0xMSwxN0gxM1YxNUgxMU0zLDlINVY3SDNNMywxM0g1VjExSDNNMywyMUg1VjE5SDNNMywxN0g1VjE1SDNNMTEsMjFIMTNWMTlIMTFNMTEsMTNIMTNWMTFIMTFNNywxM0g5VjExSDdNNywyMUg5VjE5SDdWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm9yZGVyVG9wVmFyaWFudCA9IFwiTTE5LDIxSDIxVjE5SDE5TTE1LDIxSDE3VjE5SDE1TTE5LDE3SDIxVjE1SDE5TTMsNUgyMVYzSDNNMTksMTNIMjFWMTFIMTlNMTksOUgyMVY3SDE5TTMsOUg1VjdIM00zLDEzSDVWMTFIM00zLDIxSDVWMTlIM00zLDE3SDVWMTVIM00xMSwyMUgxM1YxOUgxMU03LDIxSDlWMTlIN1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3JkZXJWZXJ0aWNhbCA9IFwiTTE1LDEzSDE3VjExSDE1TTE1LDIxSDE3VjE5SDE1TTE1LDVIMTdWM0gxNU0xOSw5SDIxVjdIMTlNMTksNUgyMVYzSDE5TTE5LDEzSDIxVjExSDE5TTE5LDIxSDIxVjE5SDE5TTExLDIxSDEzVjNIMTFNMTksMTdIMjFWMTVIMTlNNyw1SDlWM0g3TTMsMTdINVYxNUgzTTMsMjFINVYxOUgzTTMsMTNINVYxMUgzTTcsMTNIOVYxMUg3TTcsMjFIOVYxOUg3TTMsNUg1VjNIM00zLDlINVY3SDNWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVTb2RhID0gXCJNMTUgMTFWMjBBMiAyIDAgMCAxIDEzIDIySDExQTIgMiAwIDAgMSA5IDIwVjExQTIgMiAwIDAgMSA5LjYgOS41OEMxMS4xIDcuODkgMTEgNCAxMSA0SDEwVjJIMTRWNEgxM1MxMi45IDcuODkgMTQuNCA5LjU4QTIgMiAwIDAgMSAxNSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVTb2RhQ2xhc3NpYyA9IFwiTTE1IDEzLjc3QTMgMyAwIDAgMCAxNSAxOC4yM1YyMEEyIDIgMCAwIDEgMTMgMjJIMTFBMiAyIDAgMCAxIDkgMjBWMTguMjNBMyAzIDAgMCAwIDkgMTMuNzdWOUExMi4yOCAxMi4yOCAwIDAgMCAxMC45MSA0SDEwVjJIMTRWNEgxMy4wOUExMi4yOCAxMi4yOCAwIDAgMCAxNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVNvZGFDbGFzc2ljT3V0bGluZSA9IFwiTTEwIDJWNEgxMC45MUMxMC42NSA1Ljc5IDkgNy41IDggOVYxMy43N0M5LjMyIDE0Ljk2IDkuMzIgMTcuMDQgOCAxOC4yM1YyMEM4IDIxLjExIDguOSAyMiAxMCAyMkgxNEMxNS4xMSAyMiAxNiAyMS4xMSAxNiAyMFYxOC4yM0MxNC42OCAxNy4wNCAxNC42OCAxNC45NiAxNiAxMy43N1Y5QzE1IDcuNSAxMy4zNSA1Ljc5IDEzLjA5IDRIMTRWMk0xMiA2LjVDMTIuMjQgNyAxMy41NCA4LjUgMTMuOSA4LjkxTDE0IDlWMTNDMTMuMzUgMTMuODcgMTMgMTQuOTIgMTMgMTZDMTMgMTcuMDggMTMuMzUgMTguMTMgMTQgMTlWMjBIMTBWMTlDMTAuNjUgMTguMTMgMTEgMTcuMDggMTEgMTZDMTEgMTQuOTIgMTAuNjUgMTMuODcgMTAgMTNWOUwxMC4xIDguOTFDMTAuNDYgOC41IDExLjc2IDcgMTIgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVNvZGFPdXRsaW5lID0gXCJNMTQuNCA5LjU4QzEyLjkgNy44OSAxMyA0IDEzIDRIMTRWMkgxMFY0SDExUzExLjEgNy44OSA5LjYgOS41OEEyIDIgMCAwIDAgOSAxMVYyMEEyIDIgMCAwIDAgMTEgMjJIMTNBMiAyIDAgMCAwIDE1IDIwVjExQTIgMiAwIDAgMCAxNC40IDkuNThNMTMgMjBIMTFWMTFMMTEuMSAxMC45MUE2LjI2IDYuMjYgMCAwIDAgMTIgOS41QTYuMjYgNi4yNiAwIDAgMCAxMi45IDEwLjkxTDEzIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVRvbmljID0gXCJNMTMgNEgxMUwxMCAySDE0TDEzIDRNMTkgMTNWMjJINVYxM0M1IDEwLjI0IDcuMjQgOCAxMCA4VjZIOVY1SDE1VjZIMTRWOEMxNi43NiA4IDE5IDEwLjI0IDE5IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVRvbmljT3V0bGluZSA9IFwiTTEzIDRIMTFMMTAgMkgxNEwxMyA0TTE5IDEzVjIySDVWMTNDNSAxMC4yNCA3LjI0IDggMTAgOFY2SDlWNUgxNVY2SDE0VjhDMTYuNzYgOCAxOSAxMC4yNCAxOSAxM00xNyAxM0MxNyAxMS4zNSAxNS42NSAxMCAxNCAxMEgxMEM4LjM1IDEwIDcgMTEuMzUgNyAxM1YyMEgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVUb25pY1BsdXMgPSBcIk0xMyA0SDExTDEwIDJIMTRMMTMgNE0xNCA4VjZIMTVWNUg5VjZIMTBWOEM3LjI0IDggNSAxMC4yNCA1IDEzVjIySDE5VjEzQzE5IDEwLjI0IDE2Ljc2IDggMTQgOE0xNiAxN0gxM1YyMEgxMVYxN0g4VjE1SDExVjEySDEzVjE1SDE2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVRvbmljUGx1c091dGxpbmUgPSBcIk0xMyA0SDExTDEwIDJIMTRMMTMgNE0xOSAxM1YyMkg1VjEzQzUgMTAuMjQgNy4yNCA4IDEwIDhWNkg5VjVIMTVWNkgxNFY4QzE2Ljc2IDggMTkgMTAuMjQgMTkgMTNNMTcgMTNDMTcgMTEuMzUgMTUuNjUgMTAgMTQgMTBIMTBDOC4zNSAxMCA3IDExLjM1IDcgMTNWMjBIMTdWMTNNMTUgMTZIMTNWMThIMTFWMTZIOVYxNEgxMVYxMkgxM1YxNEgxNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVUb25pY1NrdWxsID0gXCJNMTkgMTNWMjJINVYxM0M1IDEwLjI0IDcuMjQgOCAxMCA4VjZIOVY1SDE1VjZIMTRWOEMxNi43NiA4IDE5IDEwLjI0IDE5IDEzTTEzIDRMMTQgMkgxMEwxMSA0SDEzTTEyIDExQzkuNzkgMTEgOCAxMi43OSA4IDE1QzggMTYgOC4zOSAxNi45IDkgMTcuNTlWMTlIMTAuMjVWMTcuNUgxMS4zOFYxOUgxMi42M1YxNy41SDEzLjc1VjE5SDE1VjE3LjU5QzE1LjYxIDE2LjkgMTYgMTYgMTYgMTVDMTYgMTIuNzkgMTQuMjEgMTEgMTIgMTFNMTAuNSAxNUM5Ljk1IDE1IDkuNSAxNC41NSA5LjUgMTRTOS45NSAxMyAxMC41IDEzIDExLjUgMTMuNDUgMTEuNSAxNCAxMS4wNSAxNSAxMC41IDE1TTExLjI1IDE2LjI1TDEyIDE1TDEyLjc1IDE2LjI1SDExLjI1TTEzLjUgMTVDMTIuOTUgMTUgMTIuNSAxNC41NSAxMi41IDE0UzEyLjk1IDEzIDEzLjUgMTMgMTQuNSAxMy40NSAxNC41IDE0IDE0LjA1IDE1IDEzLjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm90dGxlVG9uaWNTa3VsbE91dGxpbmUgPSBcIk0xMyA0SDExTDEwIDJIMTRMMTMgNE0xNCA4VjZIMTVWNUg5VjZIMTBWOEM3LjI0IDggNSAxMC4yNCA1IDEzVjIySDE5VjEzQzE5IDEwLjI0IDE2Ljc2IDggMTQgOE0xNyAyMEg3VjEzQzcgMTEuMzUgOC4zNSAxMCAxMCAxMEgxNEMxNS42NSAxMCAxNyAxMS4zNSAxNyAxM1YyME0xMiAxMUM5Ljc5IDExIDggMTIuNzkgOCAxNUM4IDE2IDguMzkgMTYuOSA5IDE3LjU5VjE5SDEwLjI1VjE3LjVIMTEuMzhWMTlIMTIuNjNWMTcuNUgxMy43NVYxOUgxNVYxNy41OUMxNS42MSAxNi45IDE2IDE2IDE2IDE1QzE2IDEyLjc5IDE0LjIxIDExIDEyIDExTTEwLjUgMTVDOS45NSAxNSA5LjUgMTQuNTUgOS41IDE0UzkuOTUgMTMgMTAuNSAxMyAxMS41IDEzLjQ1IDExLjUgMTQgMTEuMDUgMTUgMTAuNSAxNU0xMS4yNSAxNi4yNUwxMiAxNUwxMi43NSAxNi4yNUgxMS4yNU0xMy41IDE1QzEyLjk1IDE1IDEyLjUgMTQuNTUgMTIuNSAxNFMxMi45NSAxMyAxMy41IDEzIDE0LjUgMTMuNDUgMTQuNSAxNCAxNC4wNSAxNSAxMy41IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvdHRsZVdpbmUgPSBcIk0xMCwyMkExLDEgMCAwLDEgOSwyMVYxMUM5LDkgMTAsNy4yNSAxMSw3VjIuNUEwLjUsMC41IDAgMCwxIDExLjUsMkgxMi41QTAuNSwwLjUgMCAwLDEgMTMsMi41VjdDMTQsNy4yNSAxNSw5IDE1LDExVjIxQTEsMSAwIDAsMSAxNCwyMkgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3R0bGVXaW5lT3V0bGluZSA9IFwiTTExLjUgMkMxMS4yMiAyIDExIDIuMjIgMTEgMi41VjdDMTAuOTMgNyAxMC44NSA3IDEwLjc4IDcuMDNDOS44MiA3LjI3IDkuMjEgOCA4Ljc2IDguODlDOC4zIDkuNzYgOCAxMC44NCA4IDEyQzguMDUgMTUgOCAxOC4wMyA4IDIxQzggMjEuNTUgOC40NSAyMiA5IDIyQzExIDIyIDEzIDIyIDE1IDIyQzE1LjU1IDIyIDE2IDIxLjU1IDE2IDIxQzE2LjA0IDE4IDE2IDE1IDE2IDEyQzE2IDEwLjg0IDE1Ljc0IDkuNzYgMTUuMjggOC44OEMxNC44MyA4IDE0LjIyIDcuMjcgMTMuMjYgNy4wNEMxMy4xOCA3IDEzLjA1IDcgMTMgN1YyLjVDMTMgMi4yMiAxMi43OCAyIDEyLjUgMk0xMiA4Ljg1QzEyLjMyIDguODUgMTIuNjMgOC45IDEyLjc4IDlDMTIuODUgOS4wMyAxMy4yIDkuMjYgMTMuNSA5LjgxQzEzLjc4IDEwLjM3IDE0IDExLjE3IDE0IDEyVjIwSDEwVjEyQzEwIDExLjE3IDEwLjIyIDEwLjM3IDEwLjUgOS44MUMxMC44IDkuMjYgMTEuMTUgOS4wMyAxMS4yMiA5QzExLjM2IDguOSAxMS42OCA4Ljg1IDEyIDguODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm93VGllID0gXCJNMTUsMTRMMjEsMTdWN0wxNSwxMFYxNE05LDE0TDMsMTdWN0w5LDEwVjE0TTEwLDEwSDE0VjE0SDEwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvd2wgPSBcIk0yMiAxNUMyMiAxOC45IDE4LjkgMjIgMTUgMjJIOUM1LjEgMjIgMiAxOC45IDIgMTVWMTJIMjJWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm93bE1peCA9IFwiTTE2LjIgMTFMMjAuMyA0LjVMMjIgNS41TDE4LjYgMTFIMTYuMk0xNS42IDEySDJWMTVDMiAxOC45IDUuMSAyMiA5IDIySDE1QzE4LjkgMjIgMjIgMTguOSAyMiAxNVYxMkgxNS42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvd2xNaXhPdXRsaW5lID0gXCJNMTUuNiAxMkgyVjE1QzIgMTguOSA1LjEgMjIgOSAyMkgxNUMxOC45IDIyIDIyIDE4LjkgMjIgMTVWMTJIMTUuNk0yMCAxNUMyMCAxNy44IDE3LjggMjAgMTUgMjBIOUM2LjIgMjAgNCAxNy44IDQgMTVWMTRIMjBWMTVNMTYuMiAxMUwyMC4zIDQuNEwyMiA1LjVMMTguNiAxMUgxNi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJvd2xPdXRsaW5lID0gXCJNMiAxMlYxNUMyIDE4LjkgNS4xIDIyIDkgMjJIMTVDMTguOSAyMiAyMiAxOC45IDIyIDE1VjEySDJNNCAxNEgyMFYxNUMyMCAxNy44IDE3LjggMjAgMTUgMjBIOUM2LjIgMjAgNCAxNy44IDQgMTVWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm93bGluZyA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLjUsMTFBMS41LDEuNSAwIDAsMCAxMSwxMi41QTEuNSwxLjUgMCAwLDAgMTIuNSwxNEExLjUsMS41IDAgMCwwIDE0LDEyLjVBMS41LDEuNSAwIDAsMCAxMi41LDExTTEyLDVBMiwyIDAgMCwwIDEwLDdBMiwyIDAgMCwwIDEyLDlBMiwyIDAgMCwwIDE0LDdBMiwyIDAgMCwwIDEyLDVNNS45Myw4LjVDNS4zOCw5LjQ1IDUuNzEsMTAuNjcgNi42NiwxMS4yMkM3LjYyLDExLjc4IDguODQsMTEuNDUgOS40LDEwLjVDOS45NSw5LjUzIDkuNjIsOC4zMSA4LjY2LDcuNzZDNy43MSw3LjIxIDYuNSw3LjUzIDUuOTMsOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJveCA9IFwiTTE1LjM5LDE0LjA0VjE0LjA0QzE1LjM5LDEyLjYyIDE0LjI0LDExLjQ3IDEyLjgyLDExLjQ3QzExLjQxLDExLjQ3IDEwLjI2LDEyLjYyIDEwLjI2LDE0LjA0VjE0LjA0QzEwLjI2LDE1LjQ1IDExLjQxLDE2LjYgMTIuODIsMTYuNkMxNC4yNCwxNi42IDE1LjM5LDE1LjQ1IDE1LjM5LDE0LjA0TTE3LjEsMTQuMDRDMTcuMSwxNi40IDE1LjE4LDE4LjMxIDEyLjgyLDE4LjMxQzExLjE5LDE4LjMxIDkuNzcsMTcuMzkgOS4wNSwxNi4wNEM4LjMzLDE3LjM5IDYuOTEsMTguMzEgNS4yOCwxOC4zMUMyLjk0LDE4LjMxIDEuMDQsMTYuNDMgMSwxNC4xMVYxNC4xMUgxVjdIMVY3QzEsNi41NiAxLjM5LDYuMTggMS44Niw2LjE4QzIuMzMsNi4xOCAyLjcsNi41NiAyLjcxLDdWN0gyLjcxVjEwLjYyQzMuNDMsMTAuMDggNC4zMiw5Ljc2IDUuMjgsOS43NkM2LjkxLDkuNzYgOC4zMywxMC42OCA5LjA1LDEyLjAzQzkuNzcsMTAuNjggMTEuMTksOS43NiAxMi44Miw5Ljc2QzE1LjE4LDkuNzYgMTcuMSwxMS42OCAxNy4xLDE0LjA0VjE0LjA0TTcuODQsMTQuMDRWMTQuMDRDNy44NCwxMi42MiA2LjY5LDExLjQ3IDUuMjgsMTEuNDdDMy44NiwxMS40NyAyLjcxLDEyLjYyIDIuNzEsMTQuMDRWMTQuMDRDMi43MSwxNS40NSAzLjg2LDE2LjYgNS4yOCwxNi42QzYuNjksMTYuNiA3Ljg0LDE1LjQ1IDcuODQsMTQuMDRNMjIuODQsMTYuOTZWMTYuOTZDMjIuOTUsMTcuMTIgMjMsMTcuMyAyMywxNy40N0MyMywxNy43MyAyMi44OCwxOCAyMi42NiwxOC4xNUMyMi41LDE4LjI2IDIyLjMzLDE4LjMyIDIyLjE1LDE4LjMyQzIxLjksMTguMzIgMjEuNjUsMTguMjEgMjEuNSwxOEwxOS41OSwxNS40N0wxNy43LDE4VjE4QzE3LjUzLDE4LjIxIDE3LjI4LDE4LjMyIDE3LjAzLDE4LjMyQzE2Ljg1LDE4LjMyIDE2LjY3LDE4LjI2IDE2LjUsMTguMTVDMTYuMjksMTggMTYuMTcsMTcuNzIgMTYuMTcsMTcuNDZDMTYuMTcsMTcuMjkgMTYuMjMsMTcuMTEgMTYuMzMsMTYuOTZWMTYuOTZIMTYuMzNWMTYuOTZMMTguNSwxNC4wNEwxNi4zMywxMS4xMVYxMS4xMUgxNi4zM1YxMS4xMUMxNi4yMiwxMC45NiAxNi4xNywxMC43OSAxNi4xNywxMC42MUMxNi4xNywxMC4zNSAxNi4yOSwxMC4xIDE2LjUsOS45M0MxNi44OSw5LjY1IDE3LjQxLDkuNzIgMTcuNywxMC4wOVYxMC4wOUwxOS41OSwxMi42MUwyMS41LDEwLjA5QzIxLjc2LDkuNzIgMjIuMjksOS42NSAyMi42Niw5LjkzQzIyLjg5LDEwLjEgMjMsMTAuMzYgMjMsMTAuNjNDMjMsMTAuOCAyMi45NSwxMC45NyAyMi44NCwxMS4xMVYxMS4xMUgyMi44NFYxMS4xMUwyMC42NiwxNC4wNEwyMi44NCwxNi45NlYxNi45NkgyMi44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlCb3hDdXR0ZXIgPSBcIk03LjIyLDExLjkxQzYuODksMTIuMjQgNi43MSwxMi42NSA2LjY2LDEzLjA4TDEyLjE3LDE1LjQ0TDIwLjY2LDYuOTZDMjEuNDQsNi4xNyAyMS40NCw0LjkxIDIwLjY2LDQuMTNMMTkuMjQsMi43MUMxOC40NiwxLjkzIDE3LjIsMS45MyAxNi40MSwyLjcxTDcuMjIsMTEuOTFNNSwxNlYyMS43NUwxMC44MSwxNi41M0w1LjgxLDE0LjUzTDUsMTZNMTcuMTIsNC44M0MxNy41LDQuNDQgMTguMTUsNC40NCAxOC41NCw0LjgzQzE4LjkzLDUuMjMgMTguOTMsNS44NiAxOC41NCw2LjI1QzE4LjE1LDYuNjQgMTcuNSw2LjY0IDE3LjEyLDYuMjVDMTYuNzMsNS44NiAxNi43Myw1LjIzIDE3LjEyLDQuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm94Q3V0dGVyT2ZmID0gXCJNMjAuODQgMjIuNzNMMTIuODYgMTQuNzVMMTIuMTcgMTUuNDRMNi42NiAxMy4wOEM2LjcxIDEyLjY1IDYuODkgMTIuMjQgNy4yMiAxMS45MUw4LjYyIDEwLjVMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNS40MSAxMi4yMUwxMS4xNiA3Ljk2TDE2LjQxIDIuNzFDMTcuMiAxLjkzIDE4LjQ2IDEuOTMgMTkuMjQgMi43MUwyMC42NiA0LjEzQzIxLjQ0IDQuOTEgMjEuNDQgNi4xNyAyMC42NiA2Ljk2TDE1LjQxIDEyLjIxTTE3LjEyIDYuMjVDMTcuNSA2LjY0IDE4LjE1IDYuNjQgMTguNTQgNi4yNUMxOC45MyA1Ljg2IDE4LjkzIDUuMjMgMTguNTQgNC44M0MxOC4xNSA0LjQ0IDE3LjUgNC40NCAxNy4xMiA0LjgzQzE2LjczIDUuMjMgMTYuNzMgNS44NiAxNy4xMiA2LjI1TTUgMTZWMjEuNzVMMTAuODEgMTYuNTNMNS44MSAxNC41M0w1IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJveFNoYWRvdyA9IFwiTTMsM0gxOFYxOEgzVjNNMTksMTlIMjFWMjFIMTlWMTlNMTksMTZIMjFWMThIMTlWMTZNMTksMTNIMjFWMTVIMTlWMTNNMTksMTBIMjFWMTJIMTlWMTBNMTksN0gyMVY5SDE5VjdNMTYsMTlIMThWMjFIMTZWMTlNMTMsMTlIMTVWMjFIMTNWMTlNMTAsMTlIMTJWMjFIMTBWMTlNNywxOUg5VjIxSDdWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQm94aW5nR2xvdmUgPSBcIk0xOSwxNlY2SDIyVjE2SDE5TTEyLDRDOCw0IDcsNCA3LDRDNyw0IDIsNCAyLDhWMTRDMiwxNS43NyAzLDE2Ljc2IDQuMDcsMTcuMzFDNC40LDE1LjQzIDYuMDMsMTQgOCwxNEgxMVYxNkg4QTIsMiAwIDAsMCA2LDE4QzYsMTkuMTEgNi45LDIwIDgsMjBIMTNDMTcsMjAgMTcsMTYgMTcsMTZWNkMxNyw2IDE2LDQgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmFpbGxlID0gXCJNNyw4QTEsMSAwIDAsMSA4LDdBMSwxIDAgMCwxIDksOFYxMi40N0wxMC4yMSwxMi42TDE1LjE1LDE0Ljc5QzE1LjY3LDE1LjAzIDE2LDE1LjU2IDE2LDE2LjE0VjIwLjVDMTUuOTcsMjEuMzIgMTUuMzIsMjEuOTcgMTQuNSwyMkg4QzcuNjIsMjIgNy4yNiwyMS44NSA3LDIxLjU3TDIuMSwxNy4zN0wyLjg0LDE2LjZDMy4wMywxNi4zOSAzLjMsMTYuMjggMy41OCwxNi4yOEgzLjhMNywxOFY4TTE5LjUsMkExLjUsMS41IDAgMCwwIDE4LDMuNUExLjUsMS41IDAgMCwwIDE5LjUsNUExLjUsMS41IDAgMCwwIDIxLDMuNUExLjUsMS41IDAgMCwwIDE5LjUsMk0xOS41LDdBMS41LDEuNSAwIDAsMCAxOCw4LjVBMS41LDEuNSAwIDAsMCAxOS41LDEwQTEuNSwxLjUgMCAwLDAgMjEsOC41QTEuNSwxLjUgMCAwLDAgMTkuNSw3TTE0LjUsN0ExLjUsMS41IDAgMCwwIDEzLDguNUExLjUsMS41IDAgMCwwIDE0LjUsMTBBMS41LDEuNSAwIDAsMCAxNiw4LjVBMS41LDEuNSAwIDAsMCAxNC41LDdNMTkuNSwxMkExLjUsMS41IDAgMCwwIDE4LDEzLjVBMS41LDEuNSAwIDAsMCAxOS41LDE1QTEuNSwxLjUgMCAwLDAgMjEsMTMuNUExLjUsMS41IDAgMCwwIDE5LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJhaW4gPSBcIk0yMS4zMywxMi45MUMyMS40MiwxNC40NiAyMC43MSwxNS45NSAxOS40NCwxNi44NkwyMC4yMSwxOC4zNUMyMC40NCwxOC44IDIwLjQ3LDE5LjMzIDIwLjI3LDE5LjhDMjAuMDgsMjAuMjcgMTkuNjksMjAuNjQgMTkuMjEsMjAuOEwxOC40MiwyMS4wNUMxOC4yNSwyMS4xMSAxOC4wNiwyMS4xNCAxNy44OCwyMS4xNEMxNy4zNywyMS4xNCAxNi44OSwyMC45MSAxNi41NiwyMC41TDE0LjQ0LDE4QzEzLjU1LDE3Ljg1IDEyLjcxLDE3LjQ3IDEyLDE2LjlDMTEuNSwxNy4wNSAxMSwxNy4xMyAxMC41LDE3LjEzQzkuNjIsMTcuMTMgOC43NCwxNi44NiA4LDE2LjM0QzcuNDcsMTYuNSA2LjkzLDE2LjU3IDYuMzgsMTYuNTZDNS41OSwxNi41NyA0LjgxLDE2LjQxIDQuMDgsMTYuMTFDMi42NSwxNS40NyAxLjcsMTQuMDcgMS42NSwxMi41QzEuNTcsMTEuNzggMS42OSwxMS4wNSAyLDEwLjM5QzEuNzEsOS42NCAxLjY4LDguODIgMS45Myw4LjA2QzIuMyw3LjExIDMsNi4zMiAzLjg3LDUuODJDNC40NSw0LjEzIDYuMDgsMyA3Ljg3LDMuMTJDOS40NywxLjYyIDExLjkyLDEuNDYgMTMuNywyLjc1QzE0LjEyLDIuNjQgMTQuNTYsMi41OCAxNSwyLjU4QzE2LjM2LDIuNTUgMTcuNjUsMy4xNSAxOC41LDQuMjJDMjAuNTQsNC43NSAyMiw2LjU3IDIyLjA4LDguNjlDMjIuMTMsOS44IDIxLjgzLDEwLjg5IDIxLjIyLDExLjgyQzIxLjI5LDEyLjE4IDIxLjMzLDEyLjU0IDIxLjMzLDEyLjkxTTE2LjMzLDExLjVDMTYuOSwxMS41NyAxNy4zNSwxMiAxNy4zNSwxMi41N0ExLDEgMCAwLDEgMTYuMzUsMTMuNTdIMTUuNzJDMTUuNCwxNC40NyAxNC44NCwxNS4yNiAxNC4xLDE1Ljg2QzE0LjM1LDE1Ljk1IDE0LjYxLDE2IDE0Ljg3LDE2LjA3QzIwLDE2IDE5LjQsMTIuODcgMTkuNCwxMi44MkMxOS4zNCwxMS4zOSAxOC4xNCwxMC4yNyAxNi43MSwxMC4zM0ExLDEgMCAwLDEgMTUuNzEsOS4zM0ExLDEgMCAwLDEgMTYuNzEsOC4zM0MxNy45NCw4LjM2IDE5LjEyLDguODIgMjAuMDQsOS42M0MyMC4wOSw5LjM0IDIwLjEyLDkuMDQgMjAuMTIsOC43NEMyMC4wNiw3LjUgMTkuNSw2LjQyIDE3LjI1LDYuMjFDMTYsMy4yNSAxMi44NSw0Ljg5IDEyLjg1LDUuODFWNS44MUMxMi44Miw2LjA0IDEzLjA2LDYuNTMgMTMuMSw2LjU2QTEsMSAwIDAsMSAxNC4xLDcuNTZDMTQuMSw4LjExIDEzLjY1LDguNTYgMTMuMSw4LjU2VjguNTZDMTIuNTcsOC41NCAxMi4wNyw4LjM0IDExLjY3LDhDMTEuMTksOC4zMSAxMC42NCw4LjUgMTAuMDcsOC41NlY4LjU2QzkuNSw4LjYxIDkuMDMsOC4yMSA5LDcuNjZDOC45Miw3LjEgOS4zMyw2LjYxIDkuODgsNi41NkMxMC4wNCw2LjU0IDEwLjgyLDYuNDIgMTAuODIsNS43OVY1Ljc5QzEwLjgyLDUuMTMgMTEuMDcsNC41IDExLjUsNEMxMC41OCwzLjc1IDkuNTksNC4wOCA4LjU5LDUuMjlDNi43NSw1IDYsNS4yNSA1LjQ1LDcuMkM0LjUsNy42NyA0LDggMy43OCw5QzQuODYsOC43OCA1Ljk3LDguODcgNyw5LjI1QzcuNSw5LjQ0IDcuNzgsMTAgNy41OSwxMC41NEM3LjQsMTEuMDYgNi44MiwxMS4zMiA2LjMsMTEuMTNDNS41NywxMC44MSA0Ljc1LDEwLjc5IDQsMTEuMDdDMy42OCwxMS4zNCAzLjY4LDExLjkgMy42OCwxMi4zNEMzLjY4LDEzLjA4IDQuMDUsMTMuNzcgNC42OCwxNC4xN0M1LjIxLDE0LjQ0IDUuOCwxNC41OCA2LjM5LDE0LjU3QzYuMjQsMTQuMzEgNi4xMSwxNC4wNCA2LDEzLjc2QzUuODEsMTMuMjIgNi4xLDEyLjYzIDYuNjQsMTIuNDRDNy4xOCwxMi4yNSA3Ljc3LDEyLjU0IDcuOTYsMTMuMDhDOC4zNiwxNC4yMiA5LjM4LDE1IDEwLjU4LDE1LjEzQzExLjk1LDE1LjA2IDEzLjE3LDE0LjI1IDEzLjc3LDEzQzE0LDExLjYyIDE1LjExLDExLjUgMTYuMzMsMTEuNU0xOC4zMywxOC45N0wxNy43MSwxNy42N0wxNywxNy44M0wxOCwxOS4wOEwxOC4zMywxOC45N00xMy42OCwxMC4zNkMxMy43LDkuODMgMTMuMyw5LjM4IDEyLjc3LDkuMzNDMTIuMDYsOS4yOSAxMS4zNyw5LjUzIDEwLjg0LDEwQzEwLjI3LDEwLjU4IDkuOTcsMTEuMzggMTAsMTIuMTlBMSwxIDAgMCwwIDExLDEzLjE5QzExLjU3LDEzLjE5IDEyLDEyLjc0IDEyLDEyLjE5QzEyLDExLjkyIDEyLjA3LDExLjY1IDEyLjIzLDExLjQzQzEyLjM1LDExLjMzIDEyLjUsMTEuMjggMTIuNjYsMTEuMjhDMTMuMjEsMTEuMzEgMTMuNjgsMTAuOSAxMy42OCwxMC4zNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmVhZFNsaWNlID0gXCJNMTIsMkMxNy41LDIgMjIsNS4zNiAyMiw5LjVDMjIsMTEuMTkgMjEuMjYsMTIuNzUgMjAsMTRWMjJINFYxNEMyLjc0LDEyLjc1IDIsMTEuMTkgMiw5LjVDMiw1LjM2IDYuNSwyIDEyLDJNOCwxOEgxMlYxNEg4VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyZWFkU2xpY2VPdXRsaW5lID0gXCJNMTIsMkMxNy41LDIgMjIsNS4zNiAyMiw5LjVDMjIsMTEuMTkgMjEuMjYsMTIuNzUgMjAsMTRWMjJINFYxNEMyLjc0LDEyLjc1IDIsMTEuMTkgMiw5LjVDMiw1LjM2IDYuNSwyIDEyLDJNMTgsMTMuMTRDMTkuMjQsMTIuMTcgMjAsMTAuODkgMjAsOS41QzIwLDYuNDYgMTYuNDIsNCAxMiw0QzcuNTgsNCA0LDYuNDYgNCw5LjVDNCwxMC44OSA0Ljc2LDEyLjE3IDYsMTMuMTRWMjBIMThWMTMuMTRNOCwxOFYxNEgxMlYxOEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWRnZSA9IFwiTTcsMTRWMTAuOTFDNi4yOCwxMC41OCA1LjYxLDEwLjE4IDUsOS43MVYxNEg3TTUsMThIM1YxNkgxVjE0SDNWN0g1VjguNDNDNi44LDEwIDkuMjcsMTEgMTIsMTFDMTQuNzMsMTEgMTcuMiwxMCAxOSw4LjQzVjdIMjFWMTRIMjNWMTZIMjFWMThIMTlWMTZINVYxOE0xNywxMC45MVYxNEgxOVY5LjcxQzE4LjM5LDEwLjE4IDE3LjcyLDEwLjU4IDE3LDEwLjkxTTE2LDE0VjExLjMyQzE1LjM2LDExLjU1IDE0LjY5LDExLjcyIDE0LDExLjg0VjE0SDE2TTEzLDE0VjExLjk2TDEyLDEyTDExLDExLjk2VjE0SDEzTTEwLDE0VjExLjg0QzkuMzEsMTEuNzIgOC42NCwxMS41NSA4LDExLjMyVjE0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZSA9IFwiTTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxOUEyLDIgMCAwLDEgMjAsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VBY2NvdW50ID0gXCJNMjAsNkgxNlY0QTIsMiAwIDAsMCAxNCwySDEwQzguODksMiA4LDIuODkgOCw0VjZINEMyLjg5LDYgMiw2Ljg5IDIsOFYxOUEyLDIgMCAwLDAgNCwyMUgyMEEyLDIgMCAwLDAgMjIsMTlWOEEyLDIgMCAwLDAgMjAsNk0xMCw0SDE0VjZIMTBWNE0xMiw5QTIuNSwyLjUgMCAwLDEgMTQuNSwxMS41QTIuNSwyLjUgMCAwLDEgMTIsMTRBMi41LDIuNSAwIDAsMSA5LjUsMTEuNUEyLjUsMi41IDAgMCwxIDEyLDlNMTcsMTlIN1YxNy43NUM3LDE2LjM3IDkuMjQsMTUuMjUgMTIsMTUuMjVDMTQuNzYsMTUuMjUgMTcsMTYuMzcgMTcsMTcuNzVWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlQWNjb3VudE91dGxpbmUgPSBcIk0yMCw2QzIwLjU4LDYgMjEuMDUsNi4yIDIxLjQyLDYuNTlDMjEuOCw3IDIyLDcuNDUgMjIsOFYxOUMyMiwxOS41NSAyMS44LDIwIDIxLjQyLDIwLjQxQzIxLjA1LDIwLjggMjAuNTgsMjEgMjAsMjFINEMzLjQyLDIxIDIuOTUsMjAuOCAyLjU4LDIwLjQxQzIuMiwyMCAyLDE5LjU1IDIsMTlWOEMyLDcuNDUgMi4yLDcgMi41OCw2LjU5QzIuOTUsNi4yIDMuNDIsNiA0LDZIOFY0QzgsMy40MiA4LjIsMi45NSA4LjU4LDIuNThDOC45NSwyLjIgOS40MiwyIDEwLDJIMTRDMTQuNTgsMiAxNS4wNSwyLjIgMTUuNDIsMi41OEMxNS44LDIuOTUgMTYsMy40MiAxNiw0VjZIMjBNNCw4VjE5SDIwVjhINE0xNCw2VjRIMTBWNkgxNE0xMiw5QTIuMjUsMi4yNSAwIDAsMSAxNC4yNSwxMS4yNUMxNC4yNSwxMi41IDEzLjI0LDEzLjUgMTIsMTMuNUEyLjI1LDIuMjUgMCAwLDEgOS43NSwxMS4yNUM5Ljc1LDEwIDEwLjc2LDkgMTIsOU0xNi41LDE4SDcuNVYxNi44OEM3LjUsMTUuNjMgOS41LDE0LjYzIDEyLDE0LjYzQzE0LjUsMTQuNjMgMTYuNSwxNS42MyAxNi41LDE2Ljg4VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZUNoZWNrID0gXCJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5VjhBMiwyIDAgMCwxIDQsNkg4VjRBMiwyIDAgMCwxIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTAuNSwxNy41TDE3LjA5LDEwLjkxTDE1LjY4LDkuNUwxMC41LDE0LjY3TDguNDEsMTIuNTlMNywxNEwxMC41LDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlQ2hlY2tPdXRsaW5lID0gXCJNMjAgNkMyMC41OCA2IDIxLjA1IDYuMiAyMS40MiA2LjU5QzIxLjggNyAyMiA3LjQ1IDIyIDhWMTlDMjIgMTkuNTUgMjEuOCAyMCAyMS40MiAyMC40MUMyMS4wNSAyMC44IDIwLjU4IDIxIDIwIDIxSDRDMy40MiAyMSAyLjk1IDIwLjggMi41OCAyMC40MUMyLjIgMjAgMiAxOS41NSAyIDE5VjhDMiA3LjQ1IDIuMiA3IDIuNTggNi41OUMyLjk1IDYuMiAzLjQyIDYgNCA2SDhWNEM4IDMuNDIgOC4yIDIuOTUgOC41OCAyLjU4QzguOTUgMi4yIDkuNDIgMiAxMCAySDE0QzE0LjU4IDIgMTUuMDUgMi4yIDE1LjQyIDIuNThDMTUuOCAyLjk1IDE2IDMuNDIgMTYgNFY2SDIwTTQgOFYxOUgyMFY4SDRNMTQgNlY0SDEwVjZIMTRNMTAuNDYgMTcuNUwxNy4wNSAxMC45MUwxNS42NCA5LjVMMTAuNDYgMTQuNjdMOC4zNyAxMi41OUw2Ljk2IDE0TDEwLjQ2IDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlQ2xvY2sgPSBcIk0yMSAxMS4xMVY3QTIgMiAwIDAgMCAxOSA1SDE1VjNBMiAyIDAgMCAwIDEzIDFIOUEyIDIgMCAwIDAgNyAzVjVIM0EyIDIgMCAwIDAgMSA3VjE4QTIgMiAwIDAgMCAzIDIwSDEwLjI2QTcgNyAwIDEgMCAyMSAxMS4xMU05IDNIMTNWNUg5TTE5IDIwQTUgNSAwIDAgMSAxMyAyMEE1IDUgMCAxIDEgMTkgMjBNMTUgMTNIMTYuNVYxNS44MkwxOC45NCAxNy4yM0wxOC4xOSAxOC41M0wxNSAxNi42OVYxM1wiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZUNsb2NrT3V0bGluZSA9IFwiTTIxIDExLjExVjdBMiAyIDAgMCAwIDIwLjQyIDUuNTlBMS44NyAxLjg3IDAgMCAwIDE5IDVIMTVWM0ExLjkgMS45IDAgMCAwIDE0LjQyIDEuNThBMS45IDEuOSAwIDAgMCAxMyAxSDlBMS45IDEuOSAwIDAgMCA3LjU4IDEuNThBMS45IDEuOSAwIDAgMCA3IDNWNUgzQTEuODcgMS44NyAwIDAgMCAxLjU4IDUuNTlBMiAyIDAgMCAwIDEgN1YxOEEyIDIgMCAwIDAgMS41OCAxOS40MUExLjg3IDEuODcgMCAwIDAgMyAyMEgxMC4yNkE3IDcgMCAxIDAgMjEgMTEuMTFNOSAzSDEzVjVIOU0zIDE4VjdIMTlWOS42OEE2Ljg0IDYuODQgMCAwIDAgMTYgOUE3IDcgMCAwIDAgOSAxNkE2LjkxIDYuOTEgMCAwIDAgOS4yOSAxOE0xOSAyMEE1IDUgMCAwIDEgMTMgMjBBNC45NCA0Ljk0IDAgMCAxIDExIDE2QTUgNSAwIDAgMSAxNiAxMUE0Ljk0IDQuOTQgMCAwIDEgMTkgMTJBNSA1IDAgMCAxIDE5IDIwTTE1IDEzSDE2LjVWMTUuODJMMTguOTQgMTcuMjNMMTguMTkgMTguNTNMMTUgMTYuNjlWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VEb3dubG9hZCA9IFwiTTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxOUEyLDIgMCAwLDEgMjAsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNE0xMiwxOUwxNywxNEgxNFYxMEgxMFYxNEg3TDEyLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZURvd25sb2FkT3V0bGluZSA9IFwiTTEyLDE4TDcsMTNIMTBWOUgxNFYxM0gxN0wxMiwxOE0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTlBMiwyIDAgMCwxIDIwLDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRNNCw4VjE5SDIwVjhINFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VFZGl0ID0gXCJNMTQsMkEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4TDEwLjg1LDE5QzEwLjg1LDIwLjEgMTAuODUsMTkuNSAxMC44NSwyMUg0QzIuODksMjEgMiwyMC4xIDIsMTlWOEMyLDYuODkgMi44OSw2IDQsNkg4VjRDOCwyLjg5IDguODksMiAxMCwySDE0TTE0LDZWNEgxMFY2SDE0TTIxLjA0LDEyLjEzQzIwLjksMTIuMTMgMjAuNzYsMTIuMTkgMjAuNjUsMTIuM0wxOS42NSwxMy4zTDIxLjcsMTUuMzVMMjIuNywxNC4zNUMyMi45MiwxNC4xNCAyMi45MiwxMy43OSAyMi43LDEzLjU4TDIxLjQyLDEyLjNDMjEuMzEsMTIuMTkgMjEuMTgsMTIuMTMgMjEuMDQsMTIuMTNNMTkuMDcsMTMuODhMMTMsMTkuOTRWMjJIMTUuMDZMMjEuMTIsMTUuOTNMMTkuMDcsMTMuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlRWRpdE91dGxpbmUgPSBcIk0yMS4wNCwxMi4xM0MyMS4xOCwxMi4xMyAyMS4zMSwxMi4xOSAyMS40MiwxMi4zTDIyLjcsMTMuNThDMjIuOTIsMTMuNzkgMjIuOTIsMTQuMTQgMjIuNywxNC4zNUwyMS43LDE1LjM1TDE5LjY1LDEzLjNMMjAuNjUsMTIuM0MyMC43NiwxMi4xOSAyMC45LDEyLjEzIDIxLjA0LDEyLjEzTTE5LjA3LDEzLjg4TDIxLjEyLDE1LjkzTDE1LjA2LDIySDEzVjE5Ljk0TDE5LjA3LDEzLjg4TTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOEwyMCwxMFY4SDRWMTlIMTFWMjFINEEyLDIgMCAwLDEgMiwxOVY4QTIsMiAwIDAsMSA0LDZIOFY0QTIsMiAwIDAsMSAxMCwyTTE0LDZWNEgxMFY2SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZU1pbnVzID0gXCJNMjIsMTdWMTlIMTRWMTdIMjJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIwLjk0LDEyLjU4IDE5LjU0LDEyIDE4LDEyQTYsNiAwIDAsMCAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlTWludXNPdXRsaW5lID0gXCJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIxLjQyLDEzIDIwLjc1LDEyLjYgMjAsMTIuMzRWOEg0VjE5SDEyLjA4QzEyLjIsMTkuNzIgMTIuNDUsMjAuMzkgMTIuOCwyMUg0QTIsMiAwIDAsMSAyLDE5VjhBMiwyIDAgMCwxIDQsNkg4VjRBMiwyIDAgMCwxIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTQsMTdIMjJWMTlIMTRWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlT2ZmID0gXCJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuMTEgMjFINEMyLjg5IDIxIDIgMjAuMSAyIDE5VjhDMiA2Ljg5IDIuODkgNiA0IDZINC4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTIyIDE4LjhMOCA0LjhWNEM4IDIuODkgOC44OSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY2SDIwQzIxLjExIDYgMjIgNi45IDIyIDhWMTguOE0xNCA0SDEwVjZIMTRWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VPZmZPdXRsaW5lID0gXCJNMjAgOFYxNi44TDIyIDE4LjhWOEMyMiA3LjQ1IDIxLjggNyAyMS40MiA2LjU5QzIxLjA1IDYuMiAyMC41OCA2IDIwIDZIMTZWNEMxNiAzLjQyIDE1LjggMi45NSAxNS40MiAyLjU4QzE1LjA1IDIuMiAxNC41OCAyIDE0IDJIMTBDOS40MiAyIDguOTUgMi4yIDguNTggMi41OEM4LjIgMi45NSA4IDMuNDIgOCA0VjQuOEwxMS4yIDhIMjBNMTAgNEgxNFY2SDEwVjRNMi4zOSAxLjczTDEuMTEgM0w0LjExIDZINEMzLjQyIDYgMi45NSA2LjIgMi41OCA2LjU5QzIuMiA3IDIgNy40NSAyIDhWMTlDMiAxOS41NSAyLjIgMjAgMi41OCAyMC40MUMyLjk1IDIwLjggMy40MiAyMSA0IDIxSDE5LjExTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M000IDE5VjhINi4xMUwxNy4xMSAxOUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZU91dGxpbmUgPSBcIk0yMCw2QzIwLjU4LDYgMjEuMDUsNi4yIDIxLjQyLDYuNTlDMjEuOCw3IDIyLDcuNDUgMjIsOFYxOUMyMiwxOS41NSAyMS44LDIwIDIxLjQyLDIwLjQxQzIxLjA1LDIwLjggMjAuNTgsMjEgMjAsMjFINEMzLjQyLDIxIDIuOTUsMjAuOCAyLjU4LDIwLjQxQzIuMiwyMCAyLDE5LjU1IDIsMTlWOEMyLDcuNDUgMi4yLDcgMi41OCw2LjU5QzIuOTUsNi4yIDMuNDIsNiA0LDZIOFY0QzgsMy40MiA4LjIsMi45NSA4LjU4LDIuNThDOC45NSwyLjIgOS40MiwyIDEwLDJIMTRDMTQuNTgsMiAxNS4wNSwyLjIgMTUuNDIsMi41OEMxNS44LDIuOTUgMTYsMy40MiAxNiw0VjZIMjBNNCw4VjE5SDIwVjhINE0xNCw2VjRIMTBWNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VQbHVzID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIwLjk0LDEyLjU4IDE5LjU0LDEyIDE4LDEyQTYsNiAwIDAsMCAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlUGx1c091dGxpbmUgPSBcIk0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTMuNTNDMjEuNDIsMTMgMjAuNzUsMTIuNiAyMCwxMi4zNFY4SDRWMTlIMTIuMDhDMTIuMiwxOS43MiAxMi40NSwyMC4zOSAxMi44LDIxSDRBMiwyIDAgMCwxIDIsMTlWOEEyLDIgMCAwLDEgNCw2SDhWNEEyLDIgMCAwLDEgMTAsMk0xNCw2VjRIMTBWNkgxNE0xNCwxN0gxN1YxNEgxOVYxN0gyMlYxOUgxOVYyMkgxN1YxOUgxNFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VSZW1vdmUgPSBcIk0xNC40NiwxNS44OEwxNS44OCwxNC40NkwxOCwxNi41OUwyMC4xMiwxNC40NkwyMS41NCwxNS44OEwxOS40MSwxOEwyMS41NCwyMC4xMkwyMC4xMiwyMS41NEwxOCwxOS40MUwxNS44OCwyMS41NEwxNC40NiwyMC4xMkwxNi41OSwxOEwxNC40NiwxNS44OE0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTMuNTNDMjAuOTQsMTIuNTggMTkuNTQsMTIgMTgsMTJBNiw2IDAgMCwwIDEyLDE4QzEyLDE5LjA5IDEyLjI5LDIwLjEyIDEyLjgsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VSZW1vdmVPdXRsaW5lID0gXCJNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjUzQzIxLjQyLDEzIDIwLjc1LDEyLjYgMjAsMTIuMzRWOEg0VjE5SDEyLjA4QzEyLjIsMTkuNzIgMTIuNDUsMjAuMzkgMTIuOCwyMUg0QTIsMiAwIDAsMSAyLDE5VjhBMiwyIDAgMCwxIDQsNkg4VjRBMiwyIDAgMCwxIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlU2VhcmNoID0gXCJNMTYuNSwxMkMxOSwxMiAyMSwxNCAyMSwxNi41QzIxLDE3LjM4IDIwLjc1LDE4LjIxIDIwLjMxLDE4LjlMMjMuMzksMjJMMjIsMjMuMzlMMTguODgsMjAuMzJDMTguMTksMjAuNzUgMTcuMzcsMjEgMTYuNSwyMUMxNCwyMSAxMiwxOSAxMiwxNi41QzEyLDE0IDE0LDEyIDE2LjUsMTJNMTYuNSwxNEEyLjUsMi41IDAgMCwwIDE0LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE5QTIuNSwyLjUgMCAwLDAgMTksMTYuNUEyLjUsMi41IDAgMCwwIDE2LjUsMTRNMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY2SDIwQTIsMiAwIDAsMSAyMiw4VjEzLjAzQzIwLjg1LDExLjIxIDE4LjgyLDEwIDE2LjUsMTBBNi41LDYuNSAwIDAsMCAxMCwxNi41QzEwLDE4LjI1IDEwLjY5LDE5LjgzIDExLjgxLDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlU2VhcmNoT3V0bGluZSA9IFwiTTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxMy4wM0MyMS41LDEyLjIzIDIwLjgsMTEuNTQgMjAsMTFWOEg0VjE5SDEwLjVDMTAuODEsMTkuNzUgMTEuMjYsMjAuNDIgMTEuODEsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNE0yMC4zMSwxOC45TDIzLjM5LDIyTDIyLDIzLjM5TDE4Ljg4LDIwLjMyQzE4LjE5LDIwLjc1IDE3LjM3LDIxIDE2LjUsMjFDMTQsMjEgMTIsMTkgMTIsMTYuNUMxMiwxNCAxNCwxMiAxNi41LDEyQzE5LDEyIDIxLDE0IDIxLDE2LjVDMjEsMTcuMzggMjAuNzUsMTguMjEgMjAuMzEsMTguOU0xNi41LDE5QTIuNSwyLjUgMCAwLDAgMTksMTYuNUEyLjUsMi41IDAgMCwwIDE2LjUsMTRBMi41LDIuNSAwIDAsMCAxNCwxNi41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VVcGxvYWQgPSBcIk0xMCwySDE0QTIsMiAwIDAsMSAxNiw0VjZIMjBBMiwyIDAgMCwxIDIyLDhWMTlBMiwyIDAgMCwxIDIwLDIxSDRDMi44OSwyMSAyLDIwLjEgMiwxOVY4QzIsNi44OSAyLjg5LDYgNCw2SDhWNEM4LDIuODkgOC44OSwyIDEwLDJNMTQsNlY0SDEwVjZIMTRNMTIsOUw3LDE0SDEwVjE4SDE0VjE0SDE3TDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlVXBsb2FkT3V0bGluZSA9IFwiTTEyLDlMMTcsMTRIMTRWMThIMTBWMTRIN0wxMiw5TTEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWNkgyMEEyLDIgMCAwLDEgMjIsOFYxOUEyLDIgMCAwLDEgMjAsMjFINEMyLjg5LDIxIDIsMjAuMSAyLDE5VjhDMiw2Ljg5IDIuODksNiA0LDZIOFY0QzgsMi44OSA4Ljg5LDIgMTAsMk0xNCw2VjRIMTBWNkgxNE00LDhWMTlIMjBWOEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZVZhcmlhbnQgPSBcIk0xMCAxNlYxNUgzTDMgMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWMTVIMTRWMTZIMTBNMjAgN0gxNlY1TDE0IDNIMTBMOCA1VjdINEMyLjkgNyAyIDcuOSAyIDlWMTJDMiAxMy4xMSAyLjg5IDE0IDQgMTRIMTBWMTJIMTRWMTRIMjBDMjEuMSAxNCAyMiAxMy4xIDIyIDEyVjlDMjIgNy45IDIxLjEgNyAyMCA3TTE0IDdIMTBWNUgxNFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWVmY2FzZVZhcmlhbnRPZmYgPSBcIk0xMCA2LjhMOC4xIDQuOUwxMCAzSDE0TDE2IDVWN0gyMEMyMS4xIDcgMjIgNy45IDIyIDlWMTJDMjIgMTMuMSAyMS4xIDE0IDIwIDE0SDE3LjJMMTAuMiA3SDE0VjVIMTBWNi44TTIuMzkgMS43M0wxLjExIDNMNS4xMSA3SDRDMi45IDcgMiA3LjkgMiA5VjEyQzIgMTMuMTEgMi44OSAxNCA0IDE0SDEwVjEySDEwLjExTDE0IDE1Ljg5VjE2SDEwVjE1SDNWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMTkuMDMgMjEgMTkuMDcgMjEgMTkuMSAyMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNMjEgMTcuOFYxNUgxOC4yTDIxIDE3LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZWZjYXNlVmFyaWFudE9mZk91dGxpbmUgPSBcIk0xMCA2LjhMOC4xIDQuOUwxMCAzSDE0TDE2IDVWN0gyMEMyMS4xIDcgMjIgNy45IDIyIDlWMTRDMjIgMTQuNzMgMjEuNTkgMTUuMzcgMjEgMTUuNzJWMTcuOEwxNy4yIDE0SDIwVjlIMTIuMkwxMC4yIDdIMTRWNUgxMFY2LjhNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuMSAyMUMxOS4wNyAyMSAxOS4wMyAyMSAxOSAyMUg1QzMuODkgMjEgMyAyMC4xMSAzIDE5VjE1LjczQzIuNCAxNS4zOCAyIDE0Ljc1IDIgMTRWOUMyIDcuOSAyLjkgNyA0IDdINS4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTExIDE1SDEzVjE0Ljg5TDExLjExIDEzSDExVjE1TTkgMTRWMTFIOS4xMUw3LjExIDlINFYxNEg5TTE3LjExIDE5TDE1IDE2Ljg5VjE3SDlWMTZINVYxOUgxNy4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmllZmNhc2VWYXJpYW50T3V0bGluZSA9IFwiTTIwIDdIMTZWNUwxNCAzSDEwTDggNVY3SDRDMi45IDcgMiA3LjkgMiA5VjE0QzIgMTQuNzUgMi40IDE1LjM4IDMgMTUuNzNWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWMTUuNzJDMjEuNTkgMTUuMzcgMjIgMTQuNzMgMjIgMTRWOUMyMiA3LjkgMjEuMSA3IDIwIDdNMTAgNUgxNFY3SDEwVjVNNCA5SDIwVjE0SDE1VjExSDlWMTRINFY5TTEzIDE1SDExVjEzSDEzVjE1TTE5IDE5SDVWMTZIOVYxN0gxNVYxNkgxOVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmlnaHRuZXNzMSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3MyID0gXCJNMTAsMkM4LjE4LDIgNi40NywyLjUgNSwzLjM1QzgsNS4wOCAxMCw4LjMgMTAsMTJDMTAsMTUuNyA4LDE4LjkyIDUsMjAuNjVDNi40NywyMS41IDguMTgsMjIgMTAsMjJBMTAsMTAgMCAwLDAgMjAsMTJBMTAsMTAgMCAwLDAgMTAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCcmlnaHRuZXNzMyA9IFwiTTksMkM3Ljk1LDIgNi45NSwyLjE2IDYsMi40NkMxMC4wNiwzLjczIDEzLDcuNSAxMywxMkMxMywxNi41IDEwLjA2LDIwLjI3IDYsMjEuNTRDNi45NSwyMS44NCA3Ljk1LDIyIDksMjJBMTAsMTAgMCAwLDAgMTksMTJBMTAsMTAgMCAwLDAgOSwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3M0ID0gXCJNMTIsMThDMTEuMTEsMTggMTAuMjYsMTcuOCA5LjUsMTcuNDVDMTEuNTYsMTYuNSAxMywxNC40MiAxMywxMkMxMyw5LjU4IDExLjU2LDcuNSA5LjUsNi41NUMxMC4yNiw2LjIgMTEuMTEsNiAxMiw2QTYsNiAwIDAsMSAxOCwxMkE2LDYgMCAwLDEgMTIsMThNMjAsOC42OVY0SDE1LjMxTDEyLDAuNjlMOC42OSw0SDRWOC42OUwwLjY5LDEyTDQsMTUuMzFWMjBIOC42OUwxMiwyMy4zMUwxNS4zMSwyMEgyMFYxNS4zMUwyMy4zMSwxMkwyMCw4LjY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3M1ID0gXCJNMTIsMThBNiw2IDAgMCwxIDYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyQTYsNiAwIDAsMSAxMiwxOE0yMCwxNS4zMUwyMy4zMSwxMkwyMCw4LjY5VjRIMTUuMzFMMTIsMC42OUw4LjY5LDRINFY4LjY5TDAuNjksMTJMNCwxNS4zMVYyMEg4LjY5TDEyLDIzLjMxTDE1LjMxLDIwSDIwVjE1LjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3M2ID0gXCJNMTIsMThWNkE2LDYgMCAwLDEgMTgsMTJBNiw2IDAgMCwxIDEyLDE4TTIwLDE1LjMxTDIzLjMxLDEyTDIwLDguNjlWNEgxNS4zMUwxMiwwLjY5TDguNjksNEg0VjguNjlMMC42OSwxMkw0LDE1LjMxVjIwSDguNjlMMTIsMjMuMzFMMTUuMzEsMjBIMjBWMTUuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZ2h0bmVzczcgPSBcIk0xMiw4QTQsNCAwIDAsMCA4LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDEyLDhNMTIsMThBNiw2IDAgMCwxIDYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyQTYsNiAwIDAsMSAxMiwxOE0yMCw4LjY5VjRIMTUuMzFMMTIsMC42OUw4LjY5LDRINFY4LjY5TDAuNjksMTJMNCwxNS4zMVYyMEg4LjY5TDEyLDIzLjMxTDE1LjMxLDIwSDIwVjE1LjMxTDIzLjMxLDEyTDIwLDguNjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnJpZ2h0bmVzc0F1dG8gPSBcIk0xNC4zLDE2TDEzLjYsMTRIMTAuNEw5LjcsMTZINy44TDExLDdIMTNMMTYuMiwxNkgxNC4zTTIwLDguNjlWNEgxNS4zMUwxMiwwLjY5TDguNjksNEg0VjguNjlMMC42OSwxMkw0LDE1LjMxVjIwSDguNjlMMTIsMjMuMzFMMTUuMzEsMjBIMjBWMTUuMzFMMjMuMzEsMTJMMjAsOC42OU0xMC44NSwxMi42NUgxMy4xNUwxMiw5TDEwLjg1LDEyLjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyaWdodG5lc3NQZXJjZW50ID0gXCJNMjAuMDQsOC43MVY0SDE1LjM0TDEyLDAuNjlMOC43MSw0SDRWOC43MUwwLjY5LDEyTDQsMTUuMzRWMjAuMDRIOC43MUwxMiwyMy4zNUwxNS4zNCwyMC4wNEgyMC4wNFYxNS4zNEwyMy4zNSwxMkwyMC4wNCw4LjcxTTguODMsNy4wNUM5LjgxLDcuMDUgMTAuNiw3Ljg0IDEwLjYsOC44M0ExLjc3LDEuNzcgMCAwLDEgOC44MywxMC42QzcuODQsMTAuNiA3LjA1LDkuODEgNy4wNSw4LjgzQzcuMDUsNy44NCA3Ljg0LDcuMDUgOC44Myw3LjA1TTE1LjIyLDE3QzE0LjI0LDE3IDEzLjQ1LDE2LjIgMTMuNDUsMTUuMjJBMS43NywxLjc3IDAgMCwxIDE1LjIyLDEzLjQ1QzE2LjIsMTMuNDUgMTcsMTQuMjQgMTcsMTUuMjJBMS43OCwxLjc4IDAgMCwxIDE1LjIyLDE3TTguNSwxNy4wM0w3LDE1LjUzTDE1LjUzLDdMMTcuMDMsOC41TDguNSwxNy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlCcm9hZGNhc3QgPSBcIk0xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJTMTAuOSAxNCAxMiAxNCAxNCAxMy4xIDE0IDEyIDEzLjEgMTAgMTIgMTBNMTggMTJDMTggOC43IDE1LjMgNiAxMiA2UzYgOC43IDYgMTJDNiAxNC4yIDcuMiAxNi4xIDkgMTcuMkwxMCAxNS41QzguOCAxNC44IDggMTMuNSA4IDEyLjFDOCA5LjkgOS44IDguMSAxMiA4LjFTMTYgOS45IDE2IDEyLjFDMTYgMTMuNiAxNS4yIDE0LjkgMTQgMTUuNUwxNSAxNy4yQzE2LjggMTYuMiAxOCAxNC4yIDE4IDEyTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE1LjcgNCAxOC45IDcgMjAuNkw4IDE4LjlDNS42IDE3LjUgNCAxNC45IDQgMTJDNCA3LjYgNy42IDQgMTIgNFMyMCA3LjYgMjAgMTJDMjAgMTUgMTguNCAxNy41IDE2IDE4LjlMMTcgMjAuNkMyMCAxOC45IDIyIDE1LjcgMjIgMTJDMjIgNi41IDE3LjUgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJyb2FkY2FzdE9mZiA9IFwiTTE3LjYgMTQuMkMxNy45IDEzLjUgMTggMTIuOCAxOCAxMkMxOCA4LjcgMTUuMyA2IDEyIDZDMTEuMiA2IDEwLjQgNi4yIDkuOCA2LjRMMTEuNCA4SDEyQzE0LjIgOCAxNiA5LjggMTYgMTJDMTYgMTIuMiAxNiAxMi40IDE1LjkgMTIuNkwxNy42IDE0LjJNMTIgNEMxNi40IDQgMjAgNy42IDIwIDEyQzIwIDEzLjQgMTkuNiAxNC42IDE5IDE1LjdMMjAuNSAxNy4yQzIxLjQgMTUuNyAyMiAxMy45IDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMkMxMC4xIDIgOC4zIDIuNSA2LjggMy41TDguMyA1QzkuNCA0LjMgMTAuNiA0IDEyIDRNMy4zIDIuNUwyIDMuOEw0LjEgNS45QzIuOCA3LjYgMiA5LjcgMiAxMkMyIDE1LjcgNCAxOC45IDcgMjAuNkw4IDE4LjlDNS42IDE3LjUgNCAxNC45IDQgMTJDNCAxMC4yIDQuNiA4LjYgNS41IDcuM0w3IDguOEM2LjQgOS43IDYgMTAuOCA2IDEyQzYgMTQuMiA3LjIgMTYuMSA5IDE3LjJMMTAgMTUuNUM4LjggMTQuOCA4IDEzLjUgOCAxMi4xQzggMTEuNSA4LjIgMTAuOSA4LjQgMTAuM0wxMCAxMS45VjEyLjFDMTAgMTMuMiAxMC45IDE0LjEgMTIgMTQuMUgxMi4yTDE5LjcgMjEuNkwyMSAyMC4zTDQuMyAzLjVMMy4zIDIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCcm9vbSA9IFwiTTE5LjM2LDIuNzJMMjAuNzgsNC4xNEwxNS4wNiw5Ljg1QzE2LjEzLDExLjM5IDE2LjI4LDEzLjI0IDE1LjM4LDE0LjQ0TDkuMDYsOC4xMkMxMC4yNiw3LjIyIDEyLjExLDcuMzcgMTMuNjUsOC40NEwxOS4zNiwyLjcyTTUuOTMsMTcuNTdDMy45MiwxNS41NiAyLjY5LDEzLjE2IDIuMzUsMTAuOTJMNy4yMyw4LjgzTDE0LjY3LDE2LjI3TDEyLjU4LDIxLjE1QzEwLjM0LDIwLjgxIDcuOTQsMTkuNTggNS45MywxNy41N1pcIjtcclxuZXhwb3J0IHZhciBtZGlCcnVzaCA9IFwiTTIwLjcxLDQuNjNMMTkuMzcsMy4yOUMxOSwyLjkgMTguMzUsMi45IDE3Ljk2LDMuMjlMOSwxMi4yNUwxMS43NSwxNUwyMC43MSw2LjA0QzIxLjEsNS42NSAyMS4xLDUgMjAuNzEsNC42M003LDE0QTMsMyAwIDAsMCA0LDE3QzQsMTguMzEgMi44NCwxOSAyLDE5QzIuOTIsMjAuMjIgNC41LDIxIDYsMjFBNCw0IDAgMCwwIDEwLDE3QTMsMyAwIDAsMCA3LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1Y2tldCA9IFwiTTMgNEgyMVY3SDIwTDE3LjUgMjFINi41TDQgN0gzVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVja2V0T3V0bGluZSA9IFwiTTMgNEgyMVY3SDIwTDE3LjUgMjFINi41TDQgN0gzVjRNMTcuOTcgN0g2LjAzTDguMTUgMTlIMTUuODVMMTcuOTcgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlCdWRkaGlzbSA9IFwiTTExLDJWM0M5LjI3LDMuMiA3LjY5LDMuOSA2LjQsNC45NEw1LjY0LDQuMThMNC4yMiw1LjZMNSw2LjM1QzMuOSw3LjY4IDMuMjEsOS4zIDMsMTFIMlYxM0gzQzMuMjEsMTQuNjggMy45LDE2LjI2IDUsMTcuNTZMNC4yMiwxOC4zMkw1LjY0LDE5Ljc0TDYuMzksMTlDNy43MSwyMC4wNyA5LjMsMjAuNzcgMTEsMjFWMjJIMTNWMjFDMTQuNjksMjAuNzcgMTYuMjksMjAuMDcgMTcuNiwxOUwxOC4zNiwxOS43NEwxOS43OCwxOC4zMkwxOSwxNy41N0MyMC4xLDE2LjI3IDIwLjc5LDE0LjY4IDIxLDEzSDIyVjExSDIxQzIwLjc5LDkuMyAyMC4xLDcuNjkgMTksNi4zNkwxOS43OCw1LjZMMTguMzYsNC4xOEwxNy42MSw0Ljk0QzE2LjI5LDMuODcgMTQuNjksMy4yIDEzLDNWMkgxMU0xMSw1VjhMMTAsOC41TDcuODEsNi4zNUM4LjcyLDUuNjcgOS44MSw1LjE3IDExLDVNMTMsNUMxNC4xNiw1LjE4IDE1LjI2LDUuNjQgMTYuMiw2LjM1TDE0LDguNUwxMyw4VjVNNi40LDcuNzZMOC41LDEwTDgsMTFINUM1LjE2LDkuODQgNS43LDguNyA2LjM5LDcuNzVMNi40LDcuNzZNMTcuNiw3Ljc2QzE4LjMzLDguNzEgMTguODEsOS44MiAxOSwxMUgxNkwxNS41LDEwTDE3LjYxLDcuNzZIMTcuNk0xMiwxMEMxMy4xMiwxMCAxNCwxMC44OCAxNCwxMkMxNCwxMy4xMiAxMy4xMiwxNCAxMiwxNEMxMC44OCwxNCAxMCwxMy4xMiAxMCwxMkMxMCwxMC44OCAxMC44OCwxMCAxMiwxME01LDEzSDhMOC41NywxNEw2LjM5LDE2LjE1QzUuNjcsMTUuMjQgNS4xOSwxNC4xNiA1LDEzVjEzTTE2LDEzSDE5QzE4LjgxLDE0LjE1IDE4LjMzLDE1LjI0IDE3LjYxLDE2LjE2TDE1LjUsMTRMMTYsMTNNMTAsMTUuNUwxMSwxNlYxOUM5LjgzLDE4LjggOC43MywxOC4zMSA3LjgsMTcuNTdMMTAsMTUuNU0xNCwxNS41TDE2LjE5LDE3LjU3QzE1LjI4LDE4LjI1IDE0LjE5LDE4LjgzIDEzLDE5VjE2TDE0LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVmZmVyID0gXCJNMTIuNiwyLjg2QzE1LjI3LDQuMSAxOCw1LjM5IDIwLjY2LDYuNjNDMjAuODEsNi43IDIxLDYuNzUgMjEsNi45NUMyMSw3LjE1IDIwLjgxLDcuMTkgMjAuNjYsNy4yNkMxOCw4LjUgMTUuMyw5Ljc3IDEyLjYyLDExQzEyLjIxLDExLjIxIDExLjc5LDExLjIxIDExLjM4LDExQzguNjksOS43NiA2LDguNSAzLjMyLDcuMjVDMy4xOCw3LjE5IDMsNy4xNCAzLDYuOTRDMyw2Ljc2IDMuMTgsNi43MSAzLjMxLDYuNjVDNiw1LjM5IDguNzQsNC4xIDExLjQ0LDIuODVDMTEuNzMsMi43MiAxMi4zLDIuNzMgMTIuNiwyLjg2TTEyLDIxLjE1QzExLjgsMjEuMTUgMTEuNjYsMjEuMDcgMTEuMzgsMjAuOTdDOC42OSwxOS43MyA2LDE4LjQ3IDMuMzMsMTcuMjJDMy4xOSwxNy4xNSAzLDE3LjExIDMsMTYuOUMzLDE2LjcgMy4xOSwxNi42NiAzLjM0LDE2LjU5QzMuNzgsMTYuMzggNC4yMywxNi4xNyA0LjY3LDE1Ljk2QzUuMTIsMTUuNzYgNS41NiwxNS43NiA2LDE1Ljk3QzcuNzksMTYuOCA5LjU3LDE3LjYzIDExLjM1LDE4LjQ2QzExLjc5LDE4LjY3IDEyLjIzLDE4LjY2IDEyLjY3LDE4LjQ2QzE0LjQ1LDE3LjYyIDE2LjIzLDE2Ljc5IDE4LDE1Ljk2QzE4LjQ0LDE1Ljc2IDE4Ljg3LDE1Ljc1IDE5LjI5LDE1Ljk1QzE5Ljc3LDE2LjE2IDIwLjI0LDE2LjM5IDIwLjcxLDE2LjYxQzIwLjc4LDE2LjY0IDIwLjg1LDE2LjY4IDIwLjkxLDE2LjczQzIxLjA0LDE2LjgzIDIxLjA0LDE3IDIwLjkxLDE3LjA4QzIwLjgzLDE3LjE0IDIwLjc0LDE3LjE5IDIwLjY1LDE3LjIzQzE4LDE4LjUgMTUuMzMsMTkuNzIgMTIuNjYsMjAuOTVDMTIuNDYsMjEuMDUgMTIuMTksMjEuMTUgMTIsMjEuMTVNMTIsMTYuMTdDMTEuOSwxNi4xNyAxMS41NSwxNi4wNyAxMS4zNiwxNkM4LjY4LDE0Ljc0IDYsMTMuNSAzLjM0LDEyLjI0QzMuMiwxMi4xOCAzLDEyLjEzIDMsMTEuOTNDMywxMS43MiAzLjIsMTEuNjggMy4zNSwxMS42MUMzLjgsMTEuMzkgNC4yNSwxMS4xOCA0LjcsMTAuOTdDNS4xMywxMC43OCA1LjU2LDEwLjc4IDYsMTFDNy43OCwxMS44MiA5LjU4LDEyLjY2IDExLjM4LDEzLjVDMTEuNzksMTMuNjkgMTIuMjEsMTMuNjkgMTIuNjMsMTMuNUMxNC40MywxMi42NSAxNi4yMywxMS44MSAxOC4wNCwxMC45N0MxOC40NSwxMC43OCAxOC44NywxMC43OCAxOS4yOSwxMC45N0MxOS43NiwxMS4xOSAyMC4yNCwxMS40MSAyMC43MSwxMS42M0MyMC43NywxMS42NiAyMC44NCwxMS42OSAyMC45LDExLjc0QzIxLjA0LDExLjg1IDIxLjA0LDEyIDIwLjg5LDEyLjEyQzIwLjg0LDEyLjE2IDIwLjc3LDEyLjE5IDIwLjcxLDEyLjIyQzE4LDEzLjUgMTUuMzEsMTQuNzUgMTIuNjEsMTZDMTIuNDIsMTYuMDkgMTIuMDgsMTYuMTcgMTIsMTYuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVmZmV0ID0gXCJNOSAxNEM5LjU1IDE0IDEwIDE0LjQ1IDEwIDE1QzEwIDE1LjU1IDkuNTUgMTYgOSAxNkM4LjQ1IDE2IDggMTUuNTUgOCAxNUM4IDE0LjQ1IDguNDUgMTQgOSAxNE0xNSAxNEMxNS41NSAxNCAxNiAxNC40NSAxNiAxNUMxNiAxNS41NSAxNS41NSAxNiAxNSAxNkMxNC40NSAxNiAxNCAxNS41NSAxNCAxNUMxNCAxNC40NSAxNC40NSAxNCAxNSAxNE0zIDIyTDQgMTlIM0MyLjQ1IDE5IDIgMTguNTUgMiAxOFYxMkMyIDExLjQ1IDIuNDUgMTEgMyAxMUgyMUMyMS41NSAxMSAyMiAxMS40NSAyMiAxMlYxOEMyMiAxOC41NSAyMS41NSAxOSAyMSAxOUgyMEwyMSAyMkgxOUwxOCAxOUg2TDUgMjJIM00xMyAxM1YxN0gyMFYxM0gxM000IDEzVjE3SDExVjEzSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVnID0gXCJNMTQsMTJIMTBWMTBIMTRNMTQsMTZIMTBWMTRIMTRNMjAsOEgxNy4xOUMxNi43NCw3LjIyIDE2LjEyLDYuNTUgMTUuMzcsNi4wNEwxNyw0LjQxTDE1LjU5LDNMMTMuNDIsNS4xN0MxMi45Niw1LjA2IDEyLjUsNSAxMiw1QzExLjUsNSAxMS4wNCw1LjA2IDEwLjU5LDUuMTdMOC40MSwzTDcsNC40MUw4LjYyLDYuMDRDNy44OCw2LjU1IDcuMjYsNy4yMiA2LjgxLDhINFYxMEg2LjA5QzYuMDQsMTAuMzMgNiwxMC42NiA2LDExVjEySDRWMTRINlYxNUM2LDE1LjM0IDYuMDQsMTUuNjcgNi4wOSwxNkg0VjE4SDYuODFDNy44NSwxOS43OSA5Ljc4LDIxIDEyLDIxQzE0LjIyLDIxIDE2LjE1LDE5Ljc5IDE3LjE5LDE4SDIwVjE2SDE3LjkxQzE3Ljk2LDE1LjY3IDE4LDE1LjM0IDE4LDE1VjE0SDIwVjEySDE4VjExQzE4LDEwLjY2IDE3Ljk2LDEwLjMzIDE3LjkxLDEwSDIwVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVnQ2hlY2sgPSBcIk0xOCw3SDE1LjE5QzE0Ljc0LDYuMiAxNC4xMiw1LjUgMTMuMzcsNUwxNSwzLjQxTDEzLjU5LDJMMTEuNDIsNC4xN0MxMC45Niw0LjA2IDEwLjUsNCAxMCw0QzkuNSw0IDkuMDUsNC4wNiA4LjU5LDQuMTdMNi40MSwyTDUsMy40MUw2LjYyLDVDNS44Nyw1LjUgNS4yNiw2LjIxIDQuODEsN0gyVjlINC4wOUM0LjAzLDkuMzMgNCw5LjY2IDQsMTBWMTFIMlYxM0g0VjE0QzQsMTQuMzQgNC4wMywxNC42NyA0LjA5LDE1SDJWMTdINC44MUM2LjI2LDE5LjUgOS4yOCwyMC42MSAxMiwxOS42NUMxMiwxOS40MyAxMiwxOS4yMiAxMiwxOUMxMiwxNi40NiAxMy42MSwxNC4yIDE2LDEzLjM1VjEzSDE4VjExSDE2VjEwQzE2LDkuNjYgMTUuOTcsOS4zMyAxNS45MSw5SDE4VjdNMTIsMTVIOFYxM0gxMlYxNU0xMiwxMUg4VjlIMTJWMTFNMTcuNzUsMjIuMTZMMTUsMTkuMTZMMTYuMTYsMThMMTcuNzUsMTkuNTlMMjEuMzQsMTZMMjIuNSwxNy40MUwxNy43NSwyMi4xNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWdDaGVja091dGxpbmUgPSBcIk0xOCw3SDE1LjE5QzE0Ljc0LDYuMiAxNC4xMiw1LjUgMTMuMzcsNUwxNSwzLjQxTDEzLjU5LDJMMTEuNDIsNC4xN0MxMC45Niw0LjA2IDEwLjUsNCAxMCw0QzkuNSw0IDkuMDUsNC4wNiA4LjU5LDQuMTdMNi40MSwyTDUsMy40MUw2LjYyLDVDNS44Nyw1LjUgNS4yNiw2LjIxIDQuODEsN0gyVjlINC4wOUM0LjAzLDkuMzMgNCw5LjY2IDQsMTBWMTFIMlYxM0g0VjE0QzQsMTQuMzQgNC4wMywxNC42NyA0LjA5LDE1SDJWMTdINC44MUM2LjI2LDE5LjUgOS4yOCwyMC42MSAxMiwxOS42NUMxMiwxOS40MyAxMiwxOS4yMiAxMiwxOUMxMiwxOC40MyAxMi4wOSwxNy44NiAxMi4yNSwxNy4zMUMxMS41OSwxNy43NiAxMC44LDE4IDEwLDE4QTQsNCAwIDAsMSA2LDE0VjEwQTQsNCAwIDAsMSAxMCw2QTQsNCAwIDAsMSAxNCwxMFYxNEMxNCwxNC4xOSAxNCwxNC4zOSAxMy45NSwxNC41OEMxNC41NCwxNC4wNCAxNS4yNCwxMy42MiAxNiwxMy4zNVYxM0gxOFYxMUgxNlYxMEMxNiw5LjY2IDE1Ljk3LDkuMzMgMTUuOTEsOUgxOFY3TTIxLjM0LDE2TDE3Ljc1LDE5LjU5TDE2LjE2LDE4TDE1LDE5LjE2TDE3Ljc1LDIyLjE2TDIyLjUsMTcuNDFMMjEuMzQsMTZNMTIsOVYxMUg4VjlIMTJNMTIsMTNWMTVIOFYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWdPdXRsaW5lID0gXCJNMjAsOEgxNy4xOUMxNi43NCw3LjIgMTYuMTIsNi41IDE1LjM3LDZMMTcsNC40MUwxNS41OSwzTDEzLjQyLDUuMTdDMTIuOTYsNS4wNiAxMi41LDUgMTIsNUMxMS41LDUgMTEuMDUsNS4wNiAxMC41OSw1LjE3TDguNDEsM0w3LDQuNDFMOC42Miw2QzcuODcsNi41IDcuMjYsNy4yMSA2LjgxLDhINFYxMEg2LjA5QzYuMDMsMTAuMzMgNiwxMC42NiA2LDExVjEySDRWMTRINlYxNUM2LDE1LjM0IDYuMDMsMTUuNjcgNi4wOSwxNkg0VjE4SDYuODFDOC40NywyMC44NyAxMi4xNCwyMS44NCAxNSwyMC4xOEMxNS45MSwxOS42NiAxNi42NywxOC45IDE3LjE5LDE4SDIwVjE2SDE3LjkxQzE3Ljk3LDE1LjY3IDE4LDE1LjM0IDE4LDE1VjE0SDIwVjEySDE4VjExQzE4LDEwLjY2IDE3Ljk3LDEwLjMzIDE3LjkxLDEwSDIwVjhNMTYsMTVBNCw0IDAgMCwxIDEyLDE5QTQsNCAwIDAsMSA4LDE1VjExQTQsNCAwIDAsMSAxMiw3QTQsNCAwIDAsMSAxNiwxMVYxNU0xNCwxMFYxMkgxMFYxMEgxNE0xMCwxNEgxNFYxNkgxMFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWdsZSA9IFwiTTIxLDZDMjEsMTEgMTIsMTEgMTIsMTFDMTIsMTEgNiwxMSA1LDExQzQsMTEgMywxMCAzLDEwSDJWMTRIM0MzLDE0IDQsMTMgNSwxM0M1LjIsMTMgNS43LDEzIDYuMywxM0M1LjUsMTMuNSA1LDE0LjIgNSwxNUM1LDE2LjggNy4zLDE4IDEwLjUsMThDMTMuNywxOCAxNiwxNi44IDE2LDE1QzE2LDE0LjQgMTUuNywxMy44IDE1LjIsMTMuM0MxNy44LDEzLjggMjEsMTUgMjEsMThIMjJWNkgyMU0xMC41LDE2LjdDOC4yLDE2LjcgNi40LDE1LjkgNi40LDE1QzYuNCwxNC4xIDguMiwxMy4zIDEwLjUsMTMuM0MxMi44LDEzLjMgMTQuNiwxNC4xIDE0LjYsMTVDMTQuNiwxNS45IDEyLjgsMTYuNyAxMC41LDE2LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVsbGRvemVyID0gXCJNNCw0QTEsMSAwIDAsMCAzLDVWMTBDMi41NCwxMCAyLjE0LDEwLjMxIDIuMDMsMTAuNzZWMTMuOTdIMi4yOUMyLjY1LDEzLjM3IDMuMywxMyA0LDEzSDEzQzEzLjcsMTMgMTQuMzUsMTMuMzcgMTQuNzEsMTMuOTdIMTYuMDNMMTYsMTFWMTFBMSwxIDAgMCwwIDE1LDEwSDEzVjhBMSwxIDAgMCwwIDEyLDdBMSwxIDAgMCwwIDExLDhWMTBIOVY1QTEsMSAwIDAsMCA4LDRINE01LDZIN1YxMEw3LDExSDVWNk0xNywxMVYxOUgyMlYxOEwxOSwxN0wxOCwxMUgxN000LDE1QTIsMiAwIDAsMCAyLDE3QTIsMiAwIDAsMCA0LDE5SDEzQTIsMiAwIDAsMCAxNSwxN0EyLDIgMCAwLDAgMTMsMTVINFpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsZXQgPSBcIk0xNCwyMkgxMFYyMUgxNFYyMk0xMywxMFY3SDExVjEwTDEwLDExLjVWMjBIMTRWMTEuNUwxMywxME0xMiwyQzEyLDIgMTEsMyAxMSw1VjZIMTNWNUMxMyw1IDEzLDMgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsZXRpbkJvYXJkID0gXCJNMTIuMDQsMi41TDkuNTMsNUgxNC41M0wxMi4wNCwyLjVNNCw3VjIwSDIwVjdINE0xMiwwTDE3LDVWNUgyMEEyLDIgMCAwLDEgMjIsN1YyMEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgMiwyMFY3QTIsMiAwIDAsMSA0LDVIN1Y1TDEyLDBNNywxOFYxNEgxMlYxOEg3TTE0LDE3VjEwSDE4VjE3SDE0TTYsMTJWOUgxMVYxMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1bGxob3JuID0gXCJNMTIsOEg0QTIsMiAwIDAsMCAyLDEwVjE0QTIsMiAwIDAsMCA0LDE2SDVWMjBBMSwxIDAgMCwwIDYsMjFIOEExLDEgMCAwLDAgOSwyMFYxNkgxMkwxNywyMFY0TDEyLDhNMjEuNSwxMkMyMS41LDEzLjcxIDIwLjU0LDE1LjI2IDE5LDE2VjhDMjAuNTMsOC43NSAyMS41LDEwLjMgMjEuNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsaG9ybk91dGxpbmUgPSBcIk0xMiw4SDRBMiwyIDAgMCwwIDIsMTBWMTRBMiwyIDAgMCwwIDQsMTZINVYyMEExLDEgMCAwLDAgNiwyMUg4QTEsMSAwIDAsMCA5LDIwVjE2SDEyTDE3LDIwVjRMMTIsOE0xNSwxNS42TDEzLDE0SDRWMTBIMTNMMTUsOC40VjE1LjZNMjEuNSwxMkMyMS41LDEzLjcxIDIwLjU0LDE1LjI2IDE5LDE2VjhDMjAuNTMsOC43NSAyMS41LDEwLjMgMjEuNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsc2V5ZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE0xMiw2QTYsNiAwIDAsMCA2LDEyQTYsNiAwIDAsMCAxMiwxOEE2LDYgMCAwLDAgMTgsMTJBNiw2IDAgMCwwIDEyLDZNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxsc2V5ZUFycm93ID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDEwLjg0IDIxLjc5LDkuNjkgMjEuMzksOC42MUwxOS43OSwxMC4yMUMxOS45MywxMC44IDIwLDExLjQgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QzEyLjYsNCAxMy4yLDQuMDcgMTMuNzksNC4yMUwxNS40LDIuNkMxNC4zMSwyLjIxIDEzLjE2LDIgMTIsMk0xOSwyTDE1LDZWNy41TDEyLjQ1LDEwLjA1QzEyLjMsMTAgMTIuMTUsMTAgMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJDMTQsMTEuODUgMTQsMTEuNyAxMy45NSwxMS41NUwxNi41LDlIMThMMjIsNUgxOVYyTTEyLDZBNiw2IDAgMCwwIDYsMTJBNiw2IDAgMCwwIDEyLDE4QTYsNiAwIDAsMCAxOCwxMkgxNkE0LDQgMCAwLDEgMTIsMTZBNCw0IDAgMCwxIDgsMTJBNCw0IDAgMCwxIDEyLDhWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdWxtYSA9IFwiTTExLjM4IDJMNi4zOCA3TDUuMTMgMTUuNzVMMTEuMzggMjJMMTguODggMTdMMTMuODggMTJMMTcuNjMgOC4yNUwxMS4zOCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1bmtCZWQgPSBcIk0xIDJWMjNIM1YyMUgyMVYyM0gyM1Y3QzIzIDQuNzkgMjEuMjEgMyAxOSAzSDEwVjhIM1YyTTYuNSAyQTIuNSAyLjUgMCAwIDAgNCA0LjVBMi41IDIuNSAwIDAgMCA2LjUgN0EyLjUgMi41IDAgMCAwIDkgNC41QTIuNSAyLjUgMCAwIDAgNi41IDJNMyAxMUgyMVYxMy41NkMyMC40MSAxMy4yMSAxOS43MyAxMyAxOSAxM0gxMFYxOEgzTTYuNSAxMkEyLjUgMi41IDAgMCAwIDQgMTQuNUEyLjUgMi41IDAgMCAwIDYuNSAxN0EyLjUgMi41IDAgMCAwIDkgMTQuNUEyLjUgMi41IDAgMCAwIDYuNSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdW5rQmVkT3V0bGluZSA9IFwiTTEgMkgzVjlIMTBWM0gxOUMyMS4yIDMgMjMgNC44IDIzIDdWMjNIMjFWMjFIM1YyM0gxVjJNMTIgNVY5SDIxVjdDMjEgNS45IDIwLjEgNSAxOSA1SDEyTTMgMTFWMTlIMTBWMTNIMTlDMTkuNyAxMyAyMC40IDEzLjIgMjEgMTMuNlYxMUgzTTYuNSAxM0M3LjkgMTMgOSAxNC4xIDkgMTUuNVM3LjkgMTggNi41IDE4IDQgMTYuOSA0IDE1LjUgNS4xIDEzIDYuNSAxM002LjUgMTQuNkM2IDE0LjYgNS42IDE1IDUuNiAxNS41UzYgMTYuNCA2LjUgMTYuNCA3LjQgMTYgNy40IDE1LjUgNyAxNC42IDYuNSAxNC42TTEyIDE1VjE5SDIxVjE3QzIxIDE1LjkgMjAuMSAxNSAxOSAxNUgxMk02LjUgM0M3LjkgMyA5IDQuMSA5IDUuNVM3LjkgOCA2LjUgOCA0IDYuOSA0IDUuNSA1LjEgMyA2LjUgM002LjUgNC42QzYgNC42IDUuNiA1IDUuNiA1LjVTNiA2LjQgNi41IDYuNCA3LjQgNiA3LjQgNS41IDcgNC42IDYuNSA0LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzID0gXCJNMTgsMTFINlY2SDE4TTE2LjUsMTdBMS41LDEuNSAwIDAsMSAxNSwxNS41QTEuNSwxLjUgMCAwLDEgMTYuNSwxNEExLjUsMS41IDAgMCwxIDE4LDE1LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3TTcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxNEExLjUsMS41IDAgMCwxIDksMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN000LDE2QzQsMTYuODggNC4zOSwxNy42NyA1LDE4LjIyVjIwQTEsMSAwIDAsMCA2LDIxSDdBMSwxIDAgMCwwIDgsMjBWMTlIMTZWMjBBMSwxIDAgMCwwIDE3LDIxSDE4QTEsMSAwIDAsMCAxOSwyMFYxOC4yMkMxOS42MSwxNy42NyAyMCwxNi44OCAyMCwxNlY2QzIwLDIuNSAxNi40MiwyIDEyLDJDNy41OCwyIDQsMi41IDQsNlYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNBbGVydCA9IFwiTTE2LDFBNyw3IDAgMCwxIDIzLDhDMjMsMTEuNTMgMjAuMzksMTQuNDUgMTcsMTQuOTNWMThDMTcsMTguODQgMTYuNjUsMTkuNTggMTUuOTYsMjAuMlYyMkMxNS45NiwyMi4yNyAxNS44NywyMi41IDE1LjY4LDIyLjcxQzE1LjUsMjIuOTEgMTUuMjYsMjMgMTUsMjNIMTRDMTMuNzEsMjMgMTMuNDcsMjIuOTEgMTMuMjcsMjIuNzFDMTMuMDYsMjIuNSAxMi45NiwyMi4yNyAxMi45NiwyMlYyMUg1LjA0VjIyQzUuMDQsMjIuMjcgNC45NCwyMi41IDQuNzMsMjIuNzFDNC41MywyMi45MSA0LjI5LDIzIDQsMjNIM0MyLjc0LDIzIDIuNSwyMi45MSAyLjMyLDIyLjcxQzIuMTMsMjIuNSAyLjA0LDIyLjI3IDIuMDQsMjJWMjAuMkMxLjM1LDE5LjU4IDEsMTguODQgMSwxOFY4QzEsNi40MiAxLjcsNS4zNSAzLjA3LDQuOEM0LjQ0LDQuMjYgNi40Miw0IDksNEwxMC4yMyw0LjAzQzExLjUsMi4yIDEzLjYxLDEgMTYsMU0xNiwzQTUsNSAwIDAsMCAxMSw4QTUsNSAwIDAsMCAxNiwxM0E1LDUgMCAwLDAgMjEsOEE1LDUgMCAwLDAgMTYsM00xNSwxMEgxN1YxMkgxNVYxME0xNSw0SDE3VjlIMTVWNE0zLDEzSDExLjA5QzkuOCwxMS43MiA5LDkuOTYgOSw4SDNWMTNNNC41LDE2QzMuNjksMTYgMywxNi42NyAzLDE3LjVBMS41LDEuNSAwIDAsMCA0LjUsMTlDNS4zNSwxOSA2LDE4LjMzIDYsMTcuNUExLjUsMS41IDAgMCwwIDQuNSwxNk0xMy41LDE2QzEyLjY1LDE2IDEyLDE2LjY3IDEyLDE3LjVBMS41LDEuNSAwIDAsMCAxMy41LDE5QzE0LjMxLDE5IDE1LDE4LjMzIDE1LDE3LjVBMS41LDEuNSAwIDAsMCAxMy41LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c0FydGljdWxhdGVkRW5kID0gXCJNMjEuNSw2TDIwLDcuNUwyMS41LDlMMjAsMTAuNUwyMS41LDEyTDIwLDEzLjVMMjEuNSwxNUgxMi41QTMsMyAwIDAsMSA5LjUsMThBMywzIDAgMCwxIDYuNSwxNUgyLjVWOEMyLjUsNi44OSAzLjM5LDYgNC41LDZIMjEuNU0xOC41LDcuNUgxNVYxMEgxOC41VjcuNU0xMy41LDcuNUg5LjVWMTBIMTMuNVY3LjVNOCw3LjVINFYxMEg4VjcuNU05LjUsMTMuNUExLjUsMS41IDAgMCwwIDgsMTVBMS41LDEuNSAwIDAsMCA5LjUsMTYuNUExLjUsMS41IDAgMCwwIDExLDE1QTEuNSwxLjUgMCAwLDAgOS41LDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzQXJ0aWN1bGF0ZWRGcm9udCA9IFwiTTEsNkwyLjUsNy41TDEsOUwyLjUsMTAuNUwxLDEyTDIuNSwxMy41TDEsMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjhDMjMsNi44OSAyMi4xMSw2IDIxLDZIMU00LDcuNUg2LjVWMTBINFY3LjVNOCw3LjVIMTJWMTBIOFY3LjVNMTMuNSw3LjVIMTcuNVYxMEgxMy41VjcuNU0xOSw3LjVIMjEuNVYxM0wxOSwxMVY3LjVNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c0Nsb2NrID0gXCJNMTYuNSw0VjguMjVMMTkuMzYsOS45NEwxOC42MSwxMS4xNkwxNSw5VjRIMTYuNU0xNiwxM0MxNy4zNiwxMyAxOC41NCwxMi41IDE5LjUsMTEuNTNDMjAuNSwxMC41NiAyMSw5LjM5IDIxLDhDMjEsNi42NCAyMC41LDUuNDYgMTkuNSw0LjVDMTguNTQsMy41IDE3LjM2LDMgMTYsM0MxNC42MSwzIDEzLjQ0LDMuNSAxMi40Nyw0LjVDMTEuNSw1LjQ2IDExLDYuNjQgMTEsOEMxMSw5LjM5IDExLjUsMTAuNTYgMTIuNDcsMTEuNTNDMTMuNDQsMTIuNSAxNC42MSwxMyAxNiwxM00xMy41LDE5QzEzLjk0LDE5IDE0LjMsMTguODQgMTQuNTgsMTguNTRDMTQuODYsMTguMjQgMTUsMTcuODkgMTUsMTcuNUMxNSwxNy4wOCAxNC44NiwxNi43MyAxNC41OCwxNi40M0MxNC4zLDE2LjEzIDEzLjk0LDE2IDEzLjUsMTZDMTMuMDYsMTYgMTIuNywxNi4xMyAxMi40MiwxNi40M0MxMi4xNCwxNi43MyAxMiwxNy4wOCAxMiwxNy41QzEyLDE3Ljg5IDEyLjE0LDE4LjI0IDEyLjQyLDE4LjU0QzEyLjcsMTguODQgMTMuMDYsMTkgMTMuNSwxOU0zLDEzSDExLjExQzkuNywxMS42NCA5LDEwIDksOEgzVjEzTTQuNSwxOUM0Ljk0LDE5IDUuMywxOC44NCA1LjU4LDE4LjU0QzUuODYsMTguMjQgNiwxNy44OSA2LDE3LjVDNiwxNy4wOCA1Ljg2LDE2LjczIDUuNTgsMTYuNDNDNS4zLDE2LjEzIDQuOTQsMTYgNC41LDE2QzQuMDYsMTYgMy43LDE2LjEzIDMuNDIsMTYuNDNDMy4xNCwxNi43MyAzLDE3LjA4IDMsMTcuNUMzLDE3Ljg5IDMuMTQsMTguMjQgMy40MiwxOC41NEMzLjcsMTguODQgNC4wNiwxOSA0LjUsMTlNMTYsMUMxNy45MiwxIDE5LjU4LDEuNjcgMjAuOTUsMy4wNUMyMi4zMyw0LjQyIDIzLDYuMDggMjMsOEMyMyw5Ljc3IDIyLjQ0LDExLjI5IDIxLjI4LDEyLjU5QzIwLjEzLDEzLjg4IDE4LjcsMTQuNjYgMTcsMTQuOTFWMThDMTcsMTguODQgMTYuNjcsMTkuNTggMTYsMjAuMlYyMkMxNiwyMi4yNyAxNS44OSwyMi41IDE1LjcsMjIuNzFDMTUuNSwyMi45MSAxNS4yOCwyMyAxNSwyM0gxNEMxMy43MywyMyAxMy41LDIyLjkxIDEzLjI5LDIyLjcxQzEzLjA5LDIyLjUgMTMsMjIuMjcgMTMsMjJWMjFINVYyMkM1LDIyLjI3IDQuOTEsMjIuNSA0LjcxLDIyLjcxQzQuNSwyMi45MSA0LjI3LDIzIDQsMjNIM0MyLjcyLDIzIDIuNSwyMi45MSAyLjMsMjIuNzFDMi4xMSwyMi41IDIsMjIuMjcgMiwyMlYyMC4yQzEuMzMsMTkuNTggMSwxOC44NCAxLDE4VjhDMSw2LjQyIDEuNjcsNS4zNSAzLjA1LDQuOEM0LjQyLDQuMjYgNi40MSw0IDksNEM5LjEzLDQgOS4zMyw0IDkuNjEsNEM5Ljg5LDQgMTAuMDksNC4wMyAxMC4yMiw0LjAzQzExLjYzLDIgMTMuNTUsMSAxNiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c0RvdWJsZURlY2tlciA9IFwiTTMsNEMxLjg5LDQgMSw0Ljg5IDEsNlYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTRDMjMsMTIuODkgMjIuMTEsMTIgMjEsMTJIMTlWOS41SDIzVjZDMjMsNC44OSAyMi4xMSw0IDIxLDRIM00yLjUsNS41SDYuNVY4SDIuNVY1LjVNOCw1LjVIMTJWOEg4VjUuNU0xMy41LDUuNUgxNy41VjhIMTMuNVY1LjVNMTksNS41SDIxLjVWOEgxOVY1LjVNMTMuNSw5LjVIMTcuNVYxMkgxMy41VjkuNU0yLjUsOS41SDYuNVYxMkgyLjVWOS41TTgsOS41SDEyVjEySDhWOS41TTYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTguNUExLjUsMS41IDAgMCwxIDQuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNU0xOCwxNS41QTEuNSwxLjUgMCAwLDEgMTkuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE4LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNNYXJrZXIgPSBcIk0xMiAyQzcuNTggMiA0IDIuNSA0IDZWMTZBMyAzIDAgMCAwIDUgMTguMjJWMjBBMSAxIDAgMCAwIDYgMjFIN0ExIDEgMCAwIDAgOCAyMFYxOUgxNEE4IDggMCAwIDEgMTMgMTUuNUE1LjU1IDUuNTUgMCAwIDEgMTUuMzggMTFINlY2SDE4VjEwQTQuMDcgNC4wNyAwIDAgMSAxOC41IDEwQTUuMzQgNS4zNCAwIDAgMSAyMCAxMC4yMlY2QzIwIDIuNSAxNi40MiAyIDEyIDJNNy41IDE0QTEuNSAxLjUgMCAxIDEgNiAxNS41QTEuNSAxLjUgMCAwIDEgNy41IDE0TTE4LjUgMTJBMy41NCAzLjU0IDAgMCAwIDE1IDE1LjVDMTUgMTguMSAxOC41IDIyIDE4LjUgMjJTMjIgMTguMSAyMiAxNS41QTMuNTQgMy41NCAwIDAgMCAxOC41IDEyTTE4LjUgMTYuOEExLjIgMS4yIDAgMSAxIDE4LjUgMTQuNEExLjI5IDEuMjkgMCAwIDEgMTkuNyAxNS42QTEuMTUgMS4xNSAwIDAgMSAxOC41IDE2LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzTXVsdGlwbGUgPSBcIk0xMCA1QzUuNTggNSAyIDUuNSAyIDlWMTlDMiAxOS44NSAyLjM3IDIwLjY2IDMgMjEuMjJWMjNDMyAyMy41NSAzLjQ1IDI0IDQgMjRINUM1LjU1IDI0IDYgMjMuNTUgNiAyM1YyMkgxNFYyM0MxNCAyMy41NSAxNC40NSAyNCAxNSAyNEgxNkMxNi41NSAyNCAxNyAyMy41NSAxNyAyM1YyMS4yMkMxNy42MyAyMC42NiAxOCAxOS44NSAxOCAxOVY5QzE4IDUuNSAxNC40MiA1IDEwIDVNNS41IDIwQzQuNjcgMjAgNCAxOS4zMyA0IDE4LjVTNC42NyAxNyA1LjUgMTcgNyAxNy42NyA3IDE4LjUgNi4zMyAyMCA1LjUgMjBNMTQuNSAyMEMxMy42NyAyMCAxMyAxOS4zMyAxMyAxOC41UzEzLjY3IDE3IDE0LjUgMTcgMTYgMTcuNjcgMTYgMTguNSAxNS4zMyAyMCAxNC41IDIwTTE2IDE0SDRWOUgxNlYxNE0yMiA1VjE1QzIyIDE1Ljg1IDIxLjYzIDE2LjY2IDIxIDE3LjIyVjE5QzIxIDE5LjU1IDIwLjU1IDIwIDIwIDIwSDE5Ljg4QzE5Ljk1IDE5LjY4IDIwIDE5LjM1IDIwIDE5VjlDMjAgMyAxMyAzIDEwIDNDOS4wOSAzIDcuOCAzIDYuNDYgMy4xN0M3LjU1IDEuMzIgMTAuNSAxIDE0IDFDMTguNDIgMSAyMiAxLjUgMjIgNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNTY2hvb2wgPSBcIk0zLDZDMS44OSw2IDEsNi44OSAxLDhWMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjEyQzIzLDEwLjg5IDIyLjExLDEwIDIxLDEwSDE5VjhDMTksNi44OSAxOC4xMSw2IDE3LDZIM00xMy41LDcuNUgxNy41VjEwSDEzLjVWNy41TTIuNSw3LjVINi41VjEwSDIuNVY3LjVNOCw3LjVIMTJWMTBIOFY3LjVNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c1NpZGUgPSBcIk0zLDZDMS44OSw2IDEsNi44OSAxLDhWMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjhDMjMsNi44OSAyMi4xMSw2IDIxLDZIM00yLjUsNy41SDYuNVYxMEgyLjVWNy41TTgsNy41SDEyVjEwSDhWNy41TTEzLjUsNy41SDE3LjVWMTBIMTMuNVY3LjVNMTksNy41SDIxLjVWMTNMMTksMTFWNy41TTYsMTMuNUExLjUsMS41IDAgMCwxIDcuNSwxNUExLjUsMS41IDAgMCwxIDYsMTYuNUExLjUsMS41IDAgMCwxIDQuNSwxNUExLjUsMS41IDAgMCwxIDYsMTMuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNUExLjUsMS41IDAgMCwxIDE4LDE2LjVBMS41LDEuNSAwIDAsMSAxNi41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXNTdG9wID0gXCJNMjIgN1YxNkMyMiAxNi43MSAyMS42MiAxNy4zNiAyMSAxNy43MlYxOS4yNUMyMSAxOS42NiAyMC42NiAyMCAyMC4yNSAyMEgxOS43NUMxOS4zNCAyMCAxOSAxOS42NiAxOSAxOS4yNVYxOEgxMlYxOS4yNUMxMiAxOS42NiAxMS42NiAyMCAxMS4yNSAyMEgxMC43NUMxMC4zNCAyMCAxMCAxOS42NiAxMCAxOS4yNVYxNy43MkM5LjM5IDE3LjM2IDkgMTYuNzEgOSAxNlY3QzkgNCAxMiA0IDE1LjUgNFMyMiA0IDIyIDdNMTMgMTVDMTMgMTQuNDUgMTIuNTUgMTQgMTIgMTRTMTEgMTQuNDUgMTEgMTUgMTEuNDUgMTYgMTIgMTYgMTMgMTUuNTUgMTMgMTVNMjAgMTVDMjAgMTQuNDUgMTkuNTUgMTQgMTkgMTRTMTggMTQuNDUgMTggMTUgMTguNDUgMTYgMTkgMTYgMjAgMTUuNTUgMjAgMTVNMjAgN0gxMVYxMUgyMFY3TTcgOS41QzYuOTcgOC4xMiA1LjgzIDcgNC40NSA3LjA1QzMuMDcgNy4wOCAxLjk3IDguMjIgMiA5LjZDMi4wMyAxMC43NyAyLjg2IDExLjc3IDQgMTJWMjBINVYxMkM2LjE4IDExLjc2IDcgMTAuNzEgNyA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnVzU3RvcENvdmVyZWQgPSBcIk0yMCAzSDdWMkg2QTEuNzggMS43OCAwIDAgMCA0LjU5IDNIMlY1SDMuNzNDMiAxMC41OCAyIDIyIDIgMjJIN1Y1SDIwTTIyIDguNUEyLjUgMi41IDAgMSAwIDE5IDExVjIySDIwVjExQTIuNSAyLjUgMCAwIDAgMjIgOC41TTE1IDExLjVWMTZIMTRWMjJIMTIuNVYxN0gxMS41VjIySDEwVjE2SDlWMTEuNUExLjUgMS41IDAgMCAxIDEwLjUgMTBIMTMuNUExLjUgMS41IDAgMCAxIDE1IDExLjVNMTIgNi41QTEuNSAxLjUgMCAxIDAgMTMuNSA4QTEuNSAxLjUgMCAwIDAgMTIgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUJ1c1N0b3BVbmNvdmVyZWQgPSBcIk02IDIyVjE5SDRWMjJIMlYxNEExIDEgMCAwIDEgMyAxM0ExIDEgMCAwIDEgNCAxNFYxN0g3QTEgMSAwIDAgMSA4IDE4VjIyTTIwIDExVjIySDE5VjExQTIuNSAyLjUgMCAxIDEgMjAgMTFNMTUgMTEuNTVWMTZIMTRWMjJIMTIuNVYxN0gxMS41VjIySDEwVjE2SDlWMTEuNUExLjUgMS41IDAgMCAxIDEwLjUgMTBIMTMuNUExLjUgMS41IDAgMCAxIDE1IDExLjVNMTIgNi41NUExLjUgMS41IDAgMSAwIDEzLjUgOEExLjUgMS41IDAgMCAwIDEyIDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlCdXR0ZXJmbHkgPSBcIk0xMyAyMUgxMVY2TDkuMDMgMy45N0wxMCAzTDEyIDVMMTQgM0wxNSA0TDEzIDZWMjFNNyA2QzQuMjQgNiAyIDguMjQgMiAxMUMyIDEyLjY0IDIuNzkgMTQuMDkgNCAxNUg0VjE3QzQgMTkuMjEgNS43OSAyMSA4IDIxQzguNzIgMjEgOS4zOSAyMC44MSA5Ljk3IDIwLjVMMTAgMjAuNDZWN0M5LjE2IDYuMzcgOC4xMyA2IDcgNk02LjUgMTIuNUw1IDExTDYuNSA5LjVMOCAxMUw2LjUgMTIuNU0yMiAxMUMyMiA4LjI0IDE5Ljc2IDYgMTcgNkMxNS44OCA2IDE0Ljg1IDYuMzcgMTQgN0wxNCA3VjIwLjQ2QzE0LjU5IDIwLjgxIDE1LjI3IDIxIDE2IDIxQzE4LjIxIDIxIDIwIDE5LjIxIDIwIDE3VjE1SDIwQzIxLjIxIDE0LjA5IDIyIDEyLjY0IDIyIDExTTE3LjUgMTIuNUwxNiAxMUwxNy41IDkuNUwxOSAxMUwxNy41IDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQnV0dGVyZmx5T3V0bGluZSA9IFwiTTEzIDIxSDExVjZMOS4wMyAzLjk3TDEwIDNMMTIgNUwxNCAzTDE1IDRMMTMgNlYyMU0xNCA5SDE0VjdDMTQuODQgNi4zNyAxNS44OCA2IDE3IDZDMTkuNzYgNiAyMiA4LjI0IDIyIDExQzIyIDEyLjY0IDIxLjIxIDE0LjA5IDIwIDE1SDIwVjE3QzIwIDE5LjIxIDE4LjIxIDIxIDE2IDIxQzE1LjI3IDIxIDE0LjU5IDIwLjgxIDE0IDIwLjQ2VjE4LjQ2QzE0LjU5IDE4LjgxIDE1LjI3IDE5IDE2IDE5QzE3LjEgMTkgMTggMTguMSAxOCAxN1YxMy44M0MxOS4xNyAxMy40MiAyMCAxMi4zMSAyMCAxMUMyMCA5LjM1IDE4LjY3IDggMTcgOEgxN0MxNS44OCA4IDE0Ljg0IDguMzcgMTQgOU0xMCA5SDEwQzkuMTYgOC4zNyA4LjEzIDggNyA4SDdDNS4zMyA4IDQgOS4zNSA0IDExQzQgMTIuMzEgNC44NCAxMy40MiA2IDEzLjgzVjE3QzYgMTguMSA2LjkgMTkgOCAxOUM4LjczIDE5IDkuNDEgMTguODEgMTAgMTguNDZWMjAuNDZDOS40MSAyMC44MSA4LjczIDIxIDggMjFDNS43OSAyMSA0IDE5LjIxIDQgMTdWMTVINEMyLjc5IDE0LjA5IDIgMTIuNjQgMiAxMUMyIDguMjQgNC4yNCA2IDcgNkM4LjEzIDYgOS4xNiA2LjM3IDEwIDdWOU05IDExTDcuNSA5LjVMNiAxMUw3LjUgMTIuNUw5IDExTTE4IDExTDE2LjUgOS41TDE1IDExTDE2LjUgMTIuNUwxOCAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWJsZURhdGEgPSBcIk03LjA1IDMuNUM1LjY4IDQuODggNS42OCA3LjEgNy4wNSA4LjQ3TDE1LjU0IDE2Ljk1QzE2LjEyIDE3LjU0IDE2LjEyIDE4LjUgMTUuNTQgMTkuMDdDMTQuOTUgMTkuNjYgMTQgMTkuNjYgMTMuNDEgMTkuMDdMOS4xNyAxNC44M0wxMC4yMyAxMy43N0w2LjcgMTAuMjNMNi4zNCAxMC41OUw0LjkzIDkuMTdDNC41NCA4Ljc4IDMuOTEgOC43OCAzLjUgOS4xN0wyLjEgMTAuNTlDMS43MSAxMSAxLjcxIDExLjYxIDIuMSAxMkwzLjUgMTMuNDFMMy4xNiAxMy43N0w2LjcgMTcuM0w3Ljc2IDE2LjI0TDEyIDIwLjVDMTMuMzcgMjEuODUgMTUuNTggMjEuODUgMTYuOTUgMjAuNUMxOC4zMiAxOS4xMiAxOC4zMiAxNi45IDE2Ljk1IDE1LjU0TDguNDYgNy4wNUM3Ljg4IDYuNDYgNy44OCA1LjUgOC40NiA0LjkzQzkuMDUgNC4zNCAxMCA0LjM0IDEwLjU5IDQuOTNMMTQuODMgOS4xN0wxMy43NyAxMC4yM0wxNy4zIDEzLjc3TDE3LjY2IDEzLjQxTDE5LjA3IDE0LjgzQzE5LjQ2IDE1LjIyIDIwLjEgMTUuMjIgMjAuNSAxNC44M0wyMS45IDEzLjQxQzIyLjI5IDEzIDIyLjI5IDEyLjM5IDIxLjkgMTJMMjAuNSAxMC41OUwyMC44NCAxMC4yM0wxNy4zIDYuN0wxNi4yNCA3Ljc2TDEyIDMuNUMxMC42MyAyLjE1IDguNDIgMi4xNSA3LjA1IDMuNU0yLjgxIDExLjI5TDQuMjIgOS44OEw1LjY0IDExLjI5TDQuMjIgMTIuNzFNMTguMzYgMTIuNzFMMTkuNzggMTEuMjlMMjEuMTkgMTIuNzFMMTkuNzggMTQuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FjaGVkID0gXCJNMTksOEwxNSwxMkgxOEE2LDYgMCAwLDEgMTIsMThDMTEsMTggMTAuMDMsMTcuNzUgOS4yLDE3LjNMNy43NCwxOC43NkM4Ljk3LDE5LjU0IDEwLjQzLDIwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkgyM002LDEyQTYsNiAwIDAsMSAxMiw2QzEzLDYgMTMuOTcsNi4yNSAxNC44LDYuN0wxNi4yNiw1LjI0QzE1LjAzLDQuNDYgMTMuNTcsNCAxMiw0QTgsOCAwIDAsMCA0LDEySDFMNSwxNkw5LDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FjdHVzID0gXCJNMTQsMTZWMjFIMTBWMThIOUEzLDMgMCAwLDEgNiwxNVYxMkExLDEgMCAwLDEgNywxMUExLDEgMCAwLDEgOCwxMlYxNUM4LDE1LjU2IDguNDUsMTYgOSwxNkgxMFY2QTIsMiAwIDAsMSAxMiw0QTIsMiAwIDAsMSAxNCw2VjE0SDE1QTEsMSAwIDAsMCAxNiwxM1YxMUExLDEgMCAwLDEgMTcsMTBBMSwxIDAgMCwxIDE4LDExVjEzQTMsMyAwIDAsMSAxNSwxNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWtlID0gXCJNMTEuNSwwLjVDMTIsMC43NSAxMywyLjQgMTMsMy41QzEzLDQuNiAxMi4zMyw1IDExLjUsNUMxMC42Nyw1IDEwLDQuODUgMTAsMy43NUMxMCwyLjY1IDExLDIgMTEuNSwwLjVNMTguNSw5QzIxLDkgMjMsMTEgMjMsMTMuNUMyMywxNS4wNiAyMi4yMSwxNi40MyAyMSwxNy4yNFYyM0gxMkwzLDIzVjE3LjI0QzEuNzksMTYuNDMgMSwxNS4wNiAxLDEzLjVDMSwxMSAzLDkgNS41LDlIMTBWNkgxM1Y5SDE4LjVNMTIsMTZBMi41LDIuNSAwIDAsMCAxNC41LDEzLjVIMTZBMi41LDIuNSAwIDAsMCAxOC41LDE2QTIuNSwyLjUgMCAwLDAgMjEsMTMuNUEyLjUsMi41IDAgMCwwIDE4LjUsMTFINS41QTIuNSwyLjUgMCAwLDAgMywxMy41QTIuNSwyLjUgMCAwLDAgNS41LDE2QTIuNSwyLjUgMCAwLDAgOCwxMy41SDkuNUEyLjUsMi41IDAgMCwwIDEyLDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNha2VMYXllcmVkID0gXCJNMjEsMjFWMTdDMjEsMTUuODkgMjAuMSwxNSAxOSwxNUgxOFYxMkMxOCwxMC44OSAxNy4xLDEwIDE2LDEwSDEzVjhIMTFWMTBIOEM2Ljg5LDEwIDYsMTAuODkgNiwxMlYxNUg1QzMuODksMTUgMywxNS44OSAzLDE3VjIxSDFWMjNIMjNWMjFNMTIsN0EyLDIgMCAwLDAgMTQsNUMxNCw0LjYyIDEzLjksNC4yNyAxMy43MSwzLjk3TDEyLDFMMTAuMjgsMy45N0MxMC4xLDQuMjcgMTAsNC42MiAxMCw1QTIsMiAwIDAsMCAxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNha2VWYXJpYW50ID0gXCJNMTIsNkMxMy4xMSw2IDE0LDUuMSAxNCw0QzE0LDMuNjIgMTMuOSwzLjI3IDEzLjcxLDIuOTdMMTIsMEwxMC4yOSwyLjk3QzEwLjEsMy4yNyAxMCwzLjYyIDEwLDRBMiwyIDAgMCwwIDEyLDZNMTYuNiwxNkwxNS41MywxNC45MkwxNC40NSwxNkMxMy4xNSwxNy4yOSAxMC44NywxNy4zIDkuNTYsMTZMOC41LDE0LjkyTDcuNCwxNkM2Ljc1LDE2LjY0IDUuODgsMTcgNC45NiwxN0M0LjIzLDE3IDMuNTYsMTYuNzcgMywxNi4zOVYyMUExLDEgMCAwLDAgNCwyMkgyMEExLDEgMCAwLDAgMjEsMjFWMTYuMzlDMjAuNDQsMTYuNzcgMTkuNzcsMTcgMTkuMDQsMTdDMTguMTIsMTcgMTcuMjUsMTYuNjQgMTYuNiwxNk0xOCw5SDEzVjdIMTFWOUg2QTMsMyAwIDAsMCAzLDEyVjEzLjU0QzMsMTQuNjIgMy44OCwxNS41IDQuOTYsMTUuNUM1LjUsMTUuNSA2LDE1LjMgNi4zNCwxNC45M0w4LjUsMTIuOEwxMC42MSwxNC45M0MxMS4zNSwxNS42NyAxMi42NCwxNS42NyAxMy4zOCwxNC45M0wxNS41LDEyLjhMMTcuNjUsMTQuOTNDMTgsMTUuMyAxOC41LDE1LjUgMTkuMDMsMTUuNUMyMC4xMSwxNS41IDIxLDE0LjYyIDIxLDEzLjU0VjEyQTMsMyAwIDAsMCAxOCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGN1bGF0b3IgPSBcIk03LDJIMTdBMiwyIDAgMCwxIDE5LDRWMjBBMiwyIDAgMCwxIDE3LDIySDdBMiwyIDAgMCwxIDUsMjBWNEEyLDIgMCAwLDEgNywyTTcsNFY4SDE3VjRIN003LDEwVjEySDlWMTBIN00xMSwxMFYxMkgxM1YxMEgxMU0xNSwxMFYxMkgxN1YxMEgxNU03LDE0VjE2SDlWMTRIN00xMSwxNFYxNkgxM1YxNEgxMU0xNSwxNFYxNkgxN1YxNEgxNU03LDE4VjIwSDlWMThIN00xMSwxOFYyMEgxM1YxOEgxMU0xNSwxOFYyMEgxN1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxjdWxhdG9yVmFyaWFudCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMyA3LjFMMTQuMSA2TDE1LjUgNy40TDE2LjkgNkwxOCA3LjFMMTYuNiA4LjVMMTggOS45TDE2LjkgMTFMMTUuNSA5LjZMMTQuMSAxMUwxMyA5LjlMMTQuNCA4LjVMMTMgNy4xTTYuMiA3LjdIMTEuMlY5LjJINi4yVjcuN00xMS41IDE2SDkuNVYxOEg4VjE2SDZWMTQuNUg4VjEyLjVIOS41VjE0LjVIMTEuNVYxNk0xOCAxNy4ySDEzVjE1LjdIMThWMTcuMk0xOCAxNC44SDEzVjEzLjNIMThWMTQuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxjdWxhdG9yVmFyaWFudE91dGxpbmUgPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTkgMTlINVY1SDE5VjE5TTYuMiA3LjdIMTEuMlY5LjJINi4yVjcuN00xMyAxNS44SDE4VjE3LjNIMTNWMTUuOE0xMyAxMy4ySDE4VjE0LjdIMTNWMTMuMk04IDE4SDkuNVYxNkgxMS41VjE0LjVIOS41VjEyLjVIOFYxNC41SDZWMTZIOFYxOE0xNC4xIDEwLjlMMTUuNSA5LjVMMTYuOSAxMC45TDE4IDkuOUwxNi42IDguNUwxOCA3LjFMMTYuOSA2TDE1LjUgNy40TDE0LjEgNkwxMyA3LjFMMTQuNCA4LjVMMTMgOS45TDE0LjEgMTAuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhciA9IFwiTTE5LDE5SDVWOEgxOU0xNiwxVjNIOFYxSDZWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNIMThWMU0xNywxMkgxMlYxN0gxN1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFjY291bnQgPSBcIk0xMiwxMEMxNCwxMCAxNSwxMi40MiAxMy41OSwxMy44NEMxMi4xNywxNS4yNiA5Ljc1LDE0LjI1IDkuNzUsMTIuMjVDOS43NSwxMSAxMC43NSwxMCAxMiwxME0xNi41LDE5SDcuNVYxNy44OEM3LjUsMTYuNjMgOS41LDE1LjYzIDEyLDE1LjYzQzE0LjUsMTUuNjMgMTYuNSwxNi42MyAxNi41LDE3Ljg4TTE5LDIwSDVWOUgxOU0xNiwyVjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRIMThWMkgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFjY291bnRPdXRsaW5lID0gXCJNMTksNEgxOFYySDE2VjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRNMTksMjBINVYxMEgxOVYyME0xOSw4SDVWNkgxOU0xMiwxMUMxNCwxMSAxNSwxMy40MiAxMy41OSwxNC44NEMxMi4xNywxNi4yNiA5Ljc1LDE1LjI1IDkuNzUsMTMuMjVDOS43NSwxMiAxMC43NSwxMSAxMiwxMU0xNi41LDE4Ljg4VjE5SDcuNVYxOC44OEM3LjUsMTcuNjMgOS41LDE2LjYzIDEyLDE2LjYzQzE0LjUsMTYuNjMgMTYuNSwxNy42MyAxNi41LDE4Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyQWxlcnQgPSBcIk02IDFWM0g1QzMuODkgMyAzIDMuODkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDE4VjFIMTZWM0g4VjFINk01IDhIMTlWMTlINVY3TTExIDlWMTRIMTNWOUgxMU0xMSAxNlYxOEgxM1YxNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFycm93TGVmdCA9IFwiTTE5IDNIMThWMUgxNlYzSDhWMUg2VjNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuODkgMjAuMSAzIDE5IDNNMTkgMTlINVY4SDE5VjE5TTEyIDEwVjEySDE2VjE1SDEyVjE3TDggMTMuNUwxMiAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckFycm93UmlnaHQgPSBcIk0xOSAzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xIDMuODkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjg5IDIwLjEgMyAxOSAzTTE5IDE5SDVWOEgxOVYxOU0xMiAxN1YxNUg4VjEySDEyVjEwTDE2IDEzLjVMMTIgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJCbGFuayA9IFwiTTE5LDE5SDVWOEgxOU0xNiwxVjNIOFYxSDZWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNIMThWMVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyQmxhbmtNdWx0aXBsZSA9IFwiTTIxIDE3VjhIN1YxN0gyMU0yMSAzQzIyLjEgMyAyMyAzLjkgMjMgNVYxN0MyMyAxOC4xIDIyLjEgMTkgMjEgMTlIN0M1Ljg5IDE5IDUgMTguMSA1IDE3VjVDNSAzLjkgNS45IDMgNyAzSDhWMUgxMFYzSDE4VjFIMjBWM0gyMU0zIDIxSDE3VjIzSDNDMS44OSAyMyAxIDIyLjEgMSAyMVY5SDNWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJCbGFua091dGxpbmUgPSBcIk0xOSw0SDE4VjJIMTZWNEg4VjJINlY0SDVDMy44OSw0IDMsNC45IDMsNlYyMEEyLDIgMCAwLDAgNSwyMkgxOUEyLDIgMCAwLDAgMjEsMjBWNkEyLDIgMCAwLDAgMTksNE0xOSwyMEg1VjEwSDE5VjIwTTE5LDhINVY2SDE5VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJDaGVjayA9IFwiTTE5LDE5SDVWOEgxOU0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xNi41MywxMS4wNkwxNS40NywxMEwxMC41OSwxNC44OEw4LjQ3LDEyLjc2TDcuNDEsMTMuODJMMTAuNTksMTdMMTYuNTMsMTEuMDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJDaGVja091dGxpbmUgPSBcIk0xOSw0SDE4VjJIMTZWNEg4VjJINlY0SDVBMiwyIDAgMCwwIDMsNlYyMEEyLDIgMCAwLDAgNSwyMkgxOUEyLDIgMCAwLDAgMjEsMjBWNkEyLDIgMCAwLDAgMTksNE0xOSwyMEg1VjEwSDE5VjIwTTUsOFY2SDE5VjhINU0xMC41NiwxOC40NkwxNi41LDEyLjUzTDE1LjQzLDExLjQ3TDEwLjU2LDE2LjM0TDguNDUsMTQuMjNMNy4zOSwxNS4yOUwxMC41NiwxOC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckNsb2NrID0gXCJNMTUsMTNIMTYuNVYxNS44MkwxOC45NCwxNy4yM0wxOC4xOSwxOC41M0wxNSwxNi42OVYxM00xOSw4SDVWMTlIOS42N0M5LjI0LDE4LjA5IDksMTcuMDcgOSwxNkE3LDcgMCAwLDEgMTYsOUMxNy4wNyw5IDE4LjA5LDkuMjQgMTksOS42N1Y4TTUsMjFDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDZWMUg4VjNIMTZWMUgxOFYzSDE5QTIsMiAwIDAsMSAyMSw1VjExLjFDMjIuMjQsMTIuMzYgMjMsMTQuMDkgMjMsMTZBNyw3IDAgMCwxIDE2LDIzQzE0LjA5LDIzIDEyLjM2LDIyLjI0IDExLjEsMjFINU0xNiwxMS4xNUE0Ljg1LDQuODUgMCAwLDAgMTEuMTUsMTZDMTEuMTUsMTguNjggMTMuMzIsMjAuODUgMTYsMjAuODVBNC44NSw0Ljg1IDAgMCwwIDIwLjg1LDE2QzIwLjg1LDEzLjMyIDE4LjY4LDExLjE1IDE2LDExLjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyQ2xvY2tPdXRsaW5lID0gXCJNNiAxVjNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDExLjFDMTIuMzYgMjIuMjQgMTQuMDkgMjMgMTYgMjNDMTkuODcgMjMgMjMgMTkuODcgMjMgMTZDMjMgMTQuMDkgMjIuMjQgMTIuMzYgMjEgMTEuMVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMThWMUgxNlYzSDhWMU01IDVIMTlWN0g1TTUgOUgxOVY5LjY3QzE4LjA5IDkuMjQgMTcuMDcgOSAxNiA5QzEyLjEzIDkgOSAxMi4xMyA5IDE2QzkgMTcuMDcgOS4yNCAxOC4wOSA5LjY3IDE5SDVNMTYgMTEuMTVDMTguNjggMTEuMTUgMjAuODUgMTMuMzIgMjAuODUgMTZDMjAuODUgMTguNjggMTguNjggMjAuODUgMTYgMjAuODVDMTMuMzIgMjAuODUgMTEuMTUgMTguNjggMTEuMTUgMTZDMTEuMTUgMTMuMzIgMTMuMzIgMTEuMTUgMTYgMTEuMTVNMTUgMTNWMTYuNjlMMTguMTkgMTguNTNMMTguOTQgMTcuMjNMMTYuNSAxNS44MlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckN1cnNvciA9IFwiTTIxLjcgMjAuMjZMMjAuMjkgMjEuNjdMMTcuMDYgMTguNUwxNiAyMC45N0wxNCAxNEwyMSAxNkwxOC40NyAxNy4wM0wyMS43IDIwLjI2TTE5IDhINVYxOUgxMy40MUwxMy45NyAyMUg1QzMuODkgMjEgMyAyMC4xIDMgMTlMMyA1QzMgMy45IDMuODkgMyA1IDNINlYxSDhWM0gxNlYxSDE4VjNIMTlDMjAuMSAzIDIxIDMuOSAyMSA1VjEzLjk1TDE5IDEzLjM1VjhNMTIgMTBWMTVIN1YxMEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckVkaXQgPSBcIk0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxMFYxOUg1VjhIMTlWOUgyMVY1QTIsMiAwIDAsMCAxOSwzTTIxLjcsMTMuMzVMMjAuNywxNC4zNUwxOC42NSwxMi4zNUwxOS42NSwxMS4zNUMxOS44NSwxMS4xNCAyMC4xOSwxMS4xMyAyMC40MiwxMS4zNUwyMS43LDEyLjYzQzIxLjg5LDEyLjgzIDIxLjg5LDEzLjE1IDIxLjcsMTMuMzVNMTIsMTguOTRMMTguMDcsMTIuODhMMjAuMTIsMTQuODhMMTQuMDYsMjFIMTJWMTguOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJFbmQgPSBcIk0yMiAxNFYyMkgyMFYxOEwxNiAyMlYxOUgxMVYxN0gxNlYxNEwyMCAxOFYxNEgyMk01IDE5TDkgMTlWMjFMNSAyMUMzLjkgMjEgMyAyMC4xIDMgMTlWNUMzIDMuODkgMy45IDMgNSAzSDZWLjk5OEg4VjNIMTZWLjk5OEgxOFYzSDE5QzIwLjExIDMgMjEgMy44OSAyMSA1TDIxIDEySDE5VjhINVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhckV4cG9ydCA9IFwiTTEyLDIyTDE2LDE4SDEzVjEySDExVjE4SDhNMTksNEgxOFYySDE2VjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIOFYyMEg1VjlIMTlWMjBIMTZWMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJIZWFydCA9IFwiTTE5LDIwVjlINVYyMEgxOU0xNiwySDE4VjRIMTlBMiwyIDAgMCwxIDIxLDZWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWNkEyLDIgMCAwLDEgNSw0SDZWMkg4VjRIMTZWMk0xMiwxOC4xN0wxMS40MiwxNy42NEM5LjM2LDE1Ljc3IDgsMTQuNTQgOCwxMy4wM0M4LDExLjggOC45NywxMC44MyAxMC4yLDEwLjgzQzEwLjksMTAuODMgMTEuNTYsMTEuMTUgMTIsMTEuNjZDMTIuNDQsMTEuMTUgMTMuMSwxMC44MyAxMy44LDEwLjgzQzE1LjAzLDEwLjgzIDE2LDExLjggMTYsMTMuMDNDMTYsMTQuNTQgMTQuNjQsMTUuNzcgMTIuNTgsMTcuNjRMMTIsMTguMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJJbXBvcnQgPSBcIk0xMiwxMkw4LDE2SDExVjIySDEzVjE2SDE2TTE5LDRIMThWMkgxNlY0SDhWMkg2VjRINUEyLDIgMCAwLDAgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDlWMjBINVY5SDE5VjIwSDE1VjIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyTG9jayA9IFwiTTEzIDIxQzEzIDIxLjM1IDEzLjA3IDIxLjY5IDEzLjE4IDIySDVDMy45IDIyIDMgMjEuMTEgMyAyMFY2QzMgNC44OSAzLjg5IDQgNSA0SDZWMkg4VjRIMTZWMkgxOFY0SDE5QzIwLjEgNCAyMSA0Ljg5IDIxIDZWMTEuNzhDMjAuNDIgMTEuMzggMTkuNzQgMTEuMTMgMTkgMTEuMDVWOUg1VjIwSDEzVjIxTTIyIDE3VjIxQzIyIDIxLjU1IDIxLjU1IDIyIDIxIDIySDE2QzE1LjQ1IDIyIDE1IDIxLjU1IDE1IDIxVjE3QzE1IDE2LjQ1IDE1LjQ1IDE2IDE2IDE2VjE1LjVDMTYgMTQuMTIgMTcuMTIgMTMgMTguNSAxM1MyMSAxNC4xMiAyMSAxNS41VjE2QzIxLjU1IDE2IDIyIDE2LjQ1IDIyIDE3TTIwIDE1LjVDMjAgMTQuNjcgMTkuMzMgMTQgMTguNSAxNFMxNyAxNC42NyAxNyAxNS41VjE2SDIwVjE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJMb2NrT3V0bGluZSA9IFwiTTEzIDIwSDVWMTBIMTlWMTEuMDVDMTkuNzQgMTEuMTMgMjAuNDIgMTEuMzggMjEgMTEuNzhWNkMyMSA0Ljg5IDIwLjExIDQgMTkgNEgxOFYySDE2VjRIOFYySDZWNEg1QzMuODkgNCAzIDQuOSAzIDZWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxMy4xOEMxMy4wNyAyMS42OSAxMyAyMS4zNSAxMyAyMVYyME01IDZIMTlWOEg1VjZNMjEgMTZWMTUuNUMyMSAxNC4xMiAxOS44OCAxMyAxOC41IDEzUzE2IDE0LjEyIDE2IDE1LjVWMTZDMTUuNDUgMTYgMTUgMTYuNDUgMTUgMTdWMjFDMTUgMjEuNTUgMTUuNDUgMjIgMTYgMjJIMjFDMjEuNTUgMjIgMjIgMjEuNTUgMjIgMjFWMTdDMjIgMTYuNDUgMjEuNTUgMTYgMjEgMTZNMjAgMTZIMTdWMTUuNUMxNyAxNC42NyAxNy42NyAxNCAxOC41IDE0UzIwIDE0LjY3IDIwIDE1LjVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJNaW51cyA9IFwiTTE5IDE5VjhINVYxOUgxOU0xNiAxSDE4VjNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNVYxOUMyMSAyMC4xMSAyMC4xMSAyMSAxOSAyMUg1QzMuODkgMjEgMyAyMC4xIDMgMTlWNUMzIDMuODkgMy44OSAzIDUgM0g2VjFIOFYzSDE2VjFNMTYgMTIuNVYxNC41SDhWMTIuNUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhck1vbnRoID0gXCJNOSwxMFYxMkg3VjEwSDlNMTMsMTBWMTJIMTFWMTBIMTNNMTcsMTBWMTJIMTVWMTBIMTdNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0g2VjFIOFYzSDE2VjFIMThWM0gxOU0xOSwxOVY4SDVWMTlIMTlNOSwxNFYxNkg3VjE0SDlNMTMsMTRWMTZIMTFWMTRIMTNNMTcsMTRWMTZIMTVWMTRIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJNb250aE91dGxpbmUgPSBcIk03LDEySDlWMTRIN1YxMk0yMSw2VjIwQTIsMiAwIDAsMSAxOSwyMkg1QzMuODksMjIgMywyMS4xIDMsMjBWNkEyLDIgMCAwLDEgNSw0SDZWMkg4VjRIMTZWMkgxOFY0SDE5QTIsMiAwIDAsMSAyMSw2TTUsOEgxOVY2SDVWOE0xOSwyMFYxMEg1VjIwSDE5TTE1LDE0VjEySDE3VjE0SDE1TTExLDE0VjEySDEzVjE0SDExTTcsMTZIOVYxOEg3VjE2TTE1LDE4VjE2SDE3VjE4SDE1TTExLDE4VjE2SDEzVjE4SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyTXVsdGlwbGUgPSBcIk0yMSwxN1Y4SDdWMTdIMjFNMjEsM0EyLDIgMCAwLDEgMjMsNVYxN0EyLDIgMCAwLDEgMjEsMTlIN0M1Ljg5LDE5IDUsMTguMSA1LDE3VjVBMiwyIDAgMCwxIDcsM0g4VjFIMTBWM0gxOFYxSDIwVjNIMjFNMywyMUgxN1YyM0gzQzEuODksMjMgMSwyMi4xIDEsMjFWOUgzVjIxTTE5LDE1SDE1VjExSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyTXVsdGlwbGVDaGVjayA9IFwiTTIxLDE3VjhIN1YxN0gyMU0yMSwzQTIsMiAwIDAsMSAyMyw1VjE3QTIsMiAwIDAsMSAyMSwxOUg3QzUuODksMTkgNSwxOC4xIDUsMTdWNUEyLDIgMCAwLDEgNywzSDhWMUgxMFYzSDE4VjFIMjBWM0gyMU0xNy41MywxMS4wNkwxMy4wOSwxNS41TDEwLjQxLDEyLjgyTDExLjQ3LDExLjc2TDEzLjA5LDEzLjM4TDE2LjQ3LDEwTDE3LjUzLDExLjA2TTMsMjFIMTdWMjNIM0MxLjg5LDIzIDEsMjIuMSAxLDIxVjlIM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhck11bHRpc2VsZWN0ID0gXCJNMTksMTlWOEg1VjE5SDE5TTE2LDFIMThWM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNINlYxSDhWM0gxNlYxTTcsMTBIOVYxMkg3VjEwTTE1LDEwSDE3VjEySDE1VjEwTTExLDE0SDEzVjE2SDExVjE0TTE1LDE0SDE3VjE2SDE1VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyT3V0bGluZSA9IFwiTTE5LDRIMThWMkgxNlY0SDhWMkg2VjRINUMzLjg5LDQgMyw0LjkgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0TTE5LDIwSDVWMTBIMTlWMjBNMTksOEg1VjZIMTlWOE0xMiwxM0gxN1YxOEgxMlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclBsdXMgPSBcIk0xOSAxOVY4SDVWMTlIMTlNMTYgMUgxOFYzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTlDMjEgMjAuMTEgMjAuMTEgMjEgMTkgMjFINUMzLjg5IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjg5IDMuODkgMyA1IDNINlYxSDhWM0gxNlYxTTExIDkuNUgxM1YxMi41SDE2VjE0LjVIMTNWMTcuNUgxMVYxNC41SDhWMTIuNUgxMVY5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJRdWVzdGlvbiA9IFwiTTYsMVYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM0gxOFYxSDE2VjNIOFYxSDZNNSw4SDE5VjE5SDVWOE0xMi4xOSw5QzExLjMyLDkgMTAuNjIsOS4yIDEwLjA4LDkuNTlDOS41NiwxMCA5LjMsMTAuNTcgOS4zMSwxMS4zNkw5LjMyLDExLjM5SDExLjI1QzExLjI2LDExLjA5IDExLjM1LDEwLjg2IDExLjUzLDEwLjdDMTEuNzEsMTAuNTUgMTEuOTMsMTAuNDcgMTIuMTksMTAuNDdDMTIuNSwxMC40NyAxMi43NiwxMC41NyAxMi45NCwxMC43NUMxMy4xMiwxMC45NCAxMy4yLDExLjIgMTMuMiwxMS41QzEzLjIsMTEuODIgMTMuMTMsMTIuMDkgMTIuOTcsMTIuMzJDMTIuODMsMTIuNTUgMTIuNjIsMTIuNzUgMTIuMzYsMTIuOTFDMTEuODUsMTMuMjUgMTEuNSwxMy41NSAxMS4zMSwxMy44MkMxMS4xMSwxNC4wOCAxMSwxNC41IDExLDE1SDEzQzEzLDE0LjY5IDEzLjA0LDE0LjQ0IDEzLjEzLDE0LjI2QzEzLjIyLDE0LjA4IDEzLjM5LDEzLjkgMTMuNjQsMTMuNzRDMTQuMDksMTMuNSAxNC40NiwxMy4yMSAxNC43NSwxMi44MUMxNS4wNCwxMi40MSAxNS4xOSwxMiAxNS4xOSwxMS41QzE1LjE5LDEwLjc0IDE0LjkyLDEwLjEzIDE0LjM4LDkuNjhDMTMuODUsOS4yMyAxMy4xMiw5IDEyLjE5LDlNMTEsMTZWMThIMTNWMTZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJSYW5nZSA9IFwiTTksMTBIN1YxMkg5VjEwTTEzLDEwSDExVjEySDEzVjEwTTE3LDEwSDE1VjEySDE3VjEwTTE5LDNIMThWMUgxNlYzSDhWMUg2VjNINUMzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWOEgxOVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclJhbmdlT3V0bGluZSA9IFwiTTcsMTJIOVYxNEg3VjEyTTIxLDZWMjBBMiwyIDAgMCwxIDE5LDIySDVDMy44OSwyMiAzLDIxLjEgMywyMFY2QTIsMiAwIDAsMSA1LDRINlYySDhWNEgxNlYySDE4VjRIMTlBMiwyIDAgMCwxIDIxLDZNNSw4SDE5VjZINVY4TTE5LDIwVjEwSDVWMjBIMTlNMTUsMTRIMTdWMTJIMTVWMTRNMTEsMTRIMTNWMTJIMTFWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJSZWZyZXNoID0gXCJNMTkgM0gxOFYxSDE2VjNIOFYxSDZWM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTRDMTMuNCAyMC41IDEyLjkgMTkuOCAxMi41IDE5SDVWOEgxOVYxMC42QzE5LjcgMTAuNyAyMC40IDEwLjkgMjEgMTEuM1Y1QzIxIDMuOSAyMC4xIDMgMTkgM00xOCAxMi41QzE5LjEgMTIuNSAyMC4xIDEyLjkgMjAuOCAxMy43TDIyIDEyLjVWMTYuNUgxOEwxOS44IDE0LjdDMTkuMyAxNC4zIDE4LjcgMTQgMTggMTRDMTYuNiAxNCAxNS41IDE1LjEgMTUuNSAxNi41UzE2LjYgMTkgMTggMTlDMTguOCAxOSAxOS41IDE4LjYgMjAgMThIMjEuN0MyMS4xIDE5LjUgMTkuNyAyMC41IDE4IDIwLjVDMTUuOCAyMC41IDE0IDE4LjcgMTQgMTYuNVMxNS44IDEyLjUgMTggMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclJlZnJlc2hPdXRsaW5lID0gXCJNMTkgM0gxOFYxSDE2VjNIOFYxSDZWM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTRDMTMuNCAyMC41IDEyLjkgMTkuOCAxMi41IDE5SDVWOUgxOVYxMC42QzE5LjcgMTAuNyAyMC40IDEwLjkgMjEgMTEuM1Y1QzIxIDMuOSAyMC4xIDMgMTkgM00xOSA3SDVWNUgxOU0xOCAxMi41QzE5LjEgMTIuNSAyMC4xIDEyLjkgMjAuOCAxMy43TDIyIDEyLjVWMTYuNUgxOEwxOS44IDE0LjdDMTkuMyAxNC4zIDE4LjcgMTQgMTggMTRDMTYuNiAxNCAxNS41IDE1LjEgMTUuNSAxNi41UzE2LjYgMTkgMTggMTlDMTguOCAxOSAxOS41IDE4LjYgMjAgMThIMjEuN0MyMS4xIDE5LjUgMTkuNyAyMC41IDE4IDIwLjVDMTUuOCAyMC41IDE0IDE4LjcgMTQgMTYuNVMxNS44IDEyLjUgMTggMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclJlbW92ZSA9IFwiTTE5LDE5SDVWOEgxOU0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM005LjMxLDE3TDExLjc1LDE0LjU2TDE0LjE5LDE3TDE1LjI1LDE1Ljk0TDEyLjgxLDEzLjVMMTUuMjUsMTEuMDZMMTQuMTksMTBMMTEuNzUsMTIuNDRMOS4zMSwxMEw4LjI1LDExLjA2TDEwLjY5LDEzLjVMOC4yNSwxNS45NEw5LjMxLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyUmVtb3ZlT3V0bGluZSA9IFwiTTE5LDRIMThWMkgxNlY0SDhWMkg2VjRINUEyLDIgMCAwLDAgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0TTE5LDIwSDVWMTBIMTlWMjBNNSw4VjZIMTlWOEg1TTguMjMsMTcuNDFMOS4yOSwxOC40N0wxMS43MywxNi4wM0wxNC4xNywxOC40N0wxNS4yMywxNy40MUwxMi43OSwxNC45N0wxNS4yMywxMi41M0wxNC4xNywxMS40N0wxMS43MywxMy45MUw5LjI5LDExLjQ3TDguMjMsMTIuNTNMMTAuNjcsMTQuOTdMOC4yMywxNy40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclNlYXJjaCA9IFwiTTE1LjUsMTJDMTgsMTIgMjAsMTQgMjAsMTYuNUMyMCwxNy4zOCAxOS43NSwxOC4yMSAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTE5LDhINVYxOUg5LjVDOS44MSwxOS43NSAxMC4yNiwyMC40MiAxMC44MSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0g2VjFIOFYzSDE2VjFIMThWM0gxOUEyLDIgMCAwLDEgMjEsNVYxMy4wM0MyMC41LDEyLjIyIDE5LjgsMTEuNTQgMTksMTFWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclN0YXIgPSBcIk0xOSwyMEg1VjlIMTlNMTYsMlY0SDhWMkg2VjRINUEyLDIgMCAwLDAgMyw2VjIwQTIsMiAwIDAsMCA1LDIySDE5QTIsMiAwIDAsMCAyMSwyMFY2QTIsMiAwIDAsMCAxOSw0SDE4VjJNMTAuODgsMTNINy4yN0wxMC4xOSwxNS4xMUw5LjA4LDE4LjU2TDEyLDE2LjQzTDE0LjkyLDE4LjU2TDEzLjgsMTUuMTJMMTYuNzIsMTNIMTMuMTJMMTIsOS41NkwxMC44OCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclN0YXJ0ID0gXCJNMiAxNEg0VjE3SDlWMTRMMTMgMThMOSAyMlYxOUg0VjIySDJWMTRNMTkgMTlWOEg1VjEySDNMMyA1QzMgMy44OSAzLjg5IDMgNSAzSDZWLjk5OEg4VjNIMTZWLjk5OEgxOFYzSDE5QzIwLjEgMyAyMSAzLjg5IDIxIDVWMTlDMjEgMjAuMSAyMC4xIDIxIDE5IDIxTDEyLjgzIDIxTDE0LjgzIDE5TDE5IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGVuZGFyU3luYyA9IFwiTTE4LDExVjEyLjVDMjEuMTksMTIuNSAyMy4wOSwxNi4wNSAyMS4zMywxOC43MUwyMC4yNCwxNy42MkMyMS4wNiwxNS45NiAxOS44NSwxNCAxOCwxNFYxNS41TDE1Ljc1LDEzLjI1TDE4LDExTTE4LDIyVjIwLjVDMTQuODEsMjAuNSAxMi45MSwxNi45NSAxNC42NywxNC4yOUwxNS43NiwxNS4zOEMxNC45NCwxNy4wNCAxNi4xNSwxOSAxOCwxOVYxNy41TDIwLjI1LDE5Ljc1TDE4LDIyTTE5LDNIMThWMUgxNlYzSDhWMUg2VjNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE0QzEzLjM2LDIwLjQ1IDEyLjg2LDE5Ljc3IDEyLjUsMTlINVY4SDE5VjEwLjU5QzE5LjcxLDEwLjcgMjAuMzksMTAuOTQgMjEsMTEuMzFWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclN5bmNPdXRsaW5lID0gXCJNMTgsMTFWMTIuNUMyMS4xOSwxMi41IDIzLjA5LDE2LjA1IDIxLjMzLDE4LjcxTDIwLjI0LDE3LjYyQzIxLjA2LDE1Ljk2IDE5Ljg1LDE0IDE4LDE0VjE1LjVMMTUuNzUsMTMuMjVMMTgsMTFNMTgsMjJWMjAuNUMxNC44MSwyMC41IDEyLjkxLDE2Ljk1IDE0LjY3LDE0LjI5TDE1Ljc2LDE1LjM4QzE0Ljk0LDE3LjA0IDE2LjE1LDE5IDE4LDE5VjE3LjVMMjAuMjUsMTkuNzVMMTgsMjJNMTksM0gxOFYxSDE2VjNIOFYxSDZWM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTRDMTMuMzYsMjAuNDUgMTIuODYsMTkuNzcgMTIuNSwxOUg1VjlIMTlWMTAuNTlDMTkuNzEsMTAuNyAyMC4zOSwxMC45NCAyMSwxMS4zMVY1QTIsMiAwIDAsMCAxOSwzTTE5LDdINVY1SDE5XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJUZXh0ID0gXCJNMTQsMTRIN1YxNkgxNE0xOSwxOUg1VjhIMTlNMTksM0gxOFYxSDE2VjNIOFYxSDZWM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTcsMTBIN1YxMkgxN1YxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclRleHRPdXRsaW5lID0gXCJNMTksNEgxOFYySDE2VjRIOFYySDZWNEg1QTIsMiAwIDAsMCAzLDZWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjZBMiwyIDAgMCwwIDE5LDRNMTksMjBINVYxMEgxOVYyME01LDhWNkgxOVY4SDVNNywxMkgxN1YxNEg3VjEyTTcsMTZIMTRWMThIN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhclRvZGF5ID0gXCJNNywxMEgxMlYxNUg3TTE5LDE5SDVWOEgxOU0xOSwzSDE4VjFIMTZWM0g4VjFINlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhcldlZWsgPSBcIk02IDFIOFYzSDE2VjFIMThWM0gxOUMyMC4xMSAzIDIxIDMuOSAyMSA1VjE5QzIxIDIwLjExIDIwLjExIDIxIDE5IDIxSDVDMy44OSAyMSAzIDIwLjEgMyAxOVY1QzMgMy44OSAzLjg5IDMgNSAzSDZWMU01IDhWMTlIMTlWOEg1TTcgMTBIMTdWMTJIN1YxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhcldlZWtCZWdpbiA9IFwiTTE5LDE5SDVWOEgxOU0xNiwxVjNIOFYxSDZWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNIMThWMU05LDEwSDdWMTdIOVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxlbmRhcldlZWtlbmQgPSBcIk0xOSwyMFY5SDVWMjBIMTlNMTYsMkgxOFY0SDE5QTIsMiAwIDAsMSAyMSw2VjIwQTIsMiAwIDAsMSAxOSwyMkg1QTIsMiAwIDAsMSAzLDIwVjZBMiwyIDAgMCwxIDUsNEg2VjJIOFY0SDE2VjJNNywxOFYxMUg5VjE4SDdNMTUsMTFIMTdWMThIMTVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsZW5kYXJXZWVrZW5kT3V0bGluZSA9IFwiTTE5LDRBMiwyIDAgMCwxIDIxLDZWMjBBMiwyIDAgMCwxIDE5LDIySDVDMy44OSwyMiAzLDIxLjEgMywyMFY2QTIsMiAwIDAsMSA1LDRINlYySDhWNEgxNlYySDE4VjRIMTlNMTksMjBWMTBINVYyMEgxOU0xOSw4VjZINVY4SDE5TTcsMTJIOVYxOEg3VjEyTTE1LDEySDE3VjE4SDE1VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGxNYWRlID0gXCJNOSw1VjdIMTUuNTlMNCwxOC41OUw1LjQxLDIwTDE3LDguNDFWMTVIMTlWNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGxNZXJnZSA9IFwiTTE3LDIwLjQxTDE4LjQxLDE5TDE1LDE1LjU5TDEzLjU5LDE3TTcuNSw4SDExVjEzLjU5TDUuNTksMTlMNywyMC40MUwxMywxNC40MVY4SDE2LjVMMTIsMy41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FsbE1pc3NlZCA9IFwiTTE5LjU5LDdMMTIsMTQuNTlMNi40MSw5SDExVjdIM1YxNUg1VjEwLjQxTDEyLDE3LjQxTDIxLDguNDFcIjtcclxuZXhwb3J0IHZhciBtZGlDYWxsUmVjZWl2ZWQgPSBcIk0yMCw1LjQxTDE4LjU5LDRMNywxNS41OVY5SDVWMTlIMTVWMTdIOC40MVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbGxTcGxpdCA9IFwiTTE0LDRMMTYuMjksNi4yOUwxMy40MSw5LjE3TDE0LjgzLDEwLjU5TDE3LjcxLDcuNzFMMjAsMTBWNE0xMCw0SDRWMTBMNi4yOSw3LjcxTDExLDEyLjQxVjIwSDEzVjExLjU5TDcuNzEsNi4yOVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWNvcmRlciA9IFwiTTcgMkM0LjI0IDIgMiA0LjI0IDIgN1YyMEMyIDIxLjEgMi45IDIyIDQgMjJIMTBDMTEuMSAyMiAxMiAyMS4xIDEyIDIwVjdDMTIgNC4yNCA5Ljc2IDIgNyAyTTUgMjBDNC40NSAyMCA0IDE5LjU1IDQgMTlTNC40NSAxOCA1IDE4IDYgMTguNDUgNiAxOSA1LjU1IDIwIDUgMjBNNyAxMEM1LjM0IDEwIDQgOC42NiA0IDdTNS4zNCA0IDcgNCAxMCA1LjM0IDEwIDcgOC42NiAxMCA3IDEwTTIyIDlWMTRDMjIgMTUuMSAyMS4xIDE2IDIwIDE2SDEzVjE0SDIwVjlIMTNWN0gyMEMyMS4xIDcgMjIgNy45IDIyIDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtY29yZGVyT2ZmID0gXCJNMjIuMSAyMS41TDkuNCA4LjhMMi40IDEuOEwxLjEgM0wyLjcgNC42QzIuMiA1LjMgMiA2LjEgMiA3VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxMEMxMS4xIDIyIDEyIDIxLjEgMTIgMjBWMTMuOUwxMyAxNC45VjE2SDE0LjFMMjAuOCAyMi43TDIyLjEgMjEuNU01IDIwQzQuNSAyMCA0IDE5LjUgNCAxOVM0LjUgMTggNSAxOCA2IDE4LjUgNiAxOSA1LjUgMjAgNSAyME03IDEwQzUuMyAxMCA0IDguNyA0IDdDNCA2LjcgNC4xIDYuNCA0LjIgNi4xTDggOS45QzcuNiA5LjkgNy4zIDEwIDcgMTBNNy4yIDRMNS41IDIuM0M2IDIuMSA2LjUgMiA3IDJDOS44IDIgMTIgNC4yIDEyIDdWOC44TDEwIDYuOEM5LjkgNS4zIDguNyA0LjEgNy4yIDRNMjAgOUgxM1Y3SDIwQzIxLjEgNyAyMiA3LjkgMjIgOVYxNEMyMiAxNS4xIDIxLjEgMTYgMjAgMTZIMTkuMkwxNy4yIDE0SDIwVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhID0gXCJNNCw0SDdMOSwySDE1TDE3LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0TTEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMkE1LDUgMCAwLDAgMTIsN00xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhQWNjb3VudCA9IFwiTTQsNUg3TDksM0gxNUwxNyw1SDIwQTIsMiAwIDAsMSAyMiw3VjE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5VjdBMiwyIDAgMCwxIDQsNU0xNiwxN1YxNkMxNiwxNC42NyAxMy4zMywxNCAxMiwxNEMxMC42NywxNCA4LDE0LjY3IDgsMTZWMTdIMTZNMTIsOUEyLDIgMCAwLDAgMTAsMTFBMiwyIDAgMCwwIDEyLDEzQTIsMiAwIDAsMCAxNCwxMUEyLDIgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFCdXJzdCA9IFwiTTEsNUgzVjE5SDFWNU01LDVIN1YxOUg1VjVNMjIsNUgxMEExLDEgMCAwLDAgOSw2VjE4QTEsMSAwIDAsMCAxMCwxOUgyMkExLDEgMCAwLDAgMjMsMThWNkExLDEgMCAwLDAgMjIsNU0xMSwxN0wxMy41LDEzLjg1TDE1LjI5LDE2TDE3Ljc5LDEyLjc4TDIxLDE3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYUNvbnRyb2wgPSBcIk05LDEyQzksMTEuMTkgOS4zLDEwLjUgOS44OSw5Ljg5QzEwLjUsOS4zIDExLjE5LDkgMTIsOUMxMi44MSw5IDEzLjUsOS4zIDE0LjExLDkuODlDMTQuNywxMC41IDE1LDExLjE5IDE1LDEyQzE1LDEyLjgxIDE0LjcsMTMuNSAxNC4xMSwxNC4xMUMxMy41LDE0LjcgMTIuODEsMTUgMTIsMTVDMTEuMTksMTUgMTAuNSwxNC43IDkuODksMTQuMTFDOS4zLDEzLjUgOSwxMi44MSA5LDEyTTUuNTMsOC40NEw3LjMxLDEwLjIyTDUuNTMsMTJMNy4zMSwxMy43OEw1LjUzLDE1LjU2TDIsMTJMNS41Myw4LjQ0TTguNDQsMTguNDdMMTAuMjIsMTYuNjlMMTIsMTguNDdMMTMuNzgsMTYuNjlMMTUuNTYsMTguNDdMMTIsMjJMOC40NCwxOC40N00xOC40NywxNS41NkwxNi42OSwxMy43OEwxOC40NywxMkwxNi42OSwxMC4yMkwxOC40Nyw4LjQ0TDIyLDEyTDE4LjQ3LDE1LjU2TTE1LjU2LDUuNTNMMTMuNzgsNy4zMUwxMiw1LjUzTDEwLjIyLDcuMzFMOC40NCw1LjUzTDEyLDJMMTUuNTYsNS41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFFbmhhbmNlID0gXCJNOSwzTDcuMTcsNUg0QTIsMiAwIDAsMCAyLDdWMTlBMiwyIDAgMCwwIDQsMjFIMjBBMiwyIDAgMCwwIDIyLDE5VjdBMiwyIDAgMCwwIDIwLDVIMTYuODNMMTUsM00xMiwxOEE1LDUgMCAwLDEgNywxM0E1LDUgMCAwLDEgMTIsOEE1LDUgMCAwLDEgMTcsMTNBNSw1IDAgMCwxIDEyLDE4TTEyLDE3TDEzLjI1LDE0LjI1TDE2LDEzTDEzLjI1LDExLjc1TDEyLDlMMTAuNzUsMTEuNzVMOCwxM0wxMC43NSwxNC4yNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYUVuaGFuY2VPdXRsaW5lID0gXCJNMTIsMTBMMTEuMDYsMTIuMDZMOSwxM0wxMS4wNiwxMy45NEwxMiwxNkwxMi45NCwxMy45NEwxNSwxM0wxMi45NCwxMi4wNkwxMiwxME0yMCw1SDE2LjgzTDE1LDNIOUw3LjE3LDVINEEyLDIgMCAwLDAgMiw3VjE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVY3QTIsMiAwIDAsMCAyMCw1TTIwLDE5SDRWN0g4LjA1TDguNjQsNi4zNUw5Ljg4LDVIMTQuMTJMMTUuMzYsNi4zNUwxNS45NSw3SDIwVjE5TTEyLDhBNSw1IDAgMCwwIDcsMTNBNSw1IDAgMCwwIDEyLDE4QTUsNSAwIDAsMCAxNywxM0E1LDUgMCAwLDAgMTIsOE0xMiwxNkEzLDMgMCAwLDEgOSwxM0EzLDMgMCAwLDEgMTIsMTBBMywzIDAgMCwxIDE1LDEzQTMsMyAwIDAsMSAxMiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFGbGlwID0gXCJNMjAgNUgxN0wxNSAzSDlMNyA1SDRDMi45IDUgMiA1LjkgMiA3VjE5QzIgMjAuMTEgMi45IDIxIDQgMjFIMjBDMjEuMTEgMjEgMjIgMjAuMTEgMjIgMTlWN0MyMiA1LjkgMjEuMTEgNSAyMCA1TTUgMTJINy4xQzcuNjUgOS4yOSAxMC4yOSA3LjU1IDEzIDguMUMxMy43NiA4LjI1IDE0LjQzIDguNTkgMTUgOUwxMy41NiAxMC40NUMxMy4xMSAxMC4xNyAxMi41OCAxMCAxMiAxMEMxMC43NCAxMCA5LjYgMTAuOCA5LjE4IDEySDExTDggMTVMNSAxMk0xNi45MSAxNEMxNi4zNiAxNi43MSAxMy43MiAxOC40NSAxMSAxNy45QzEwLjI1IDE3Ljc0IDkuNTggMTcuNDEgOSAxN0wxMC40NCAxNS41NUMxMC45IDE1LjgzIDExLjQzIDE2IDEyIDE2QzEzLjI3IDE2IDE0LjQxIDE1LjIgMTQuODMgMTRIMTNMMTYgMTFMMTkgMTRIMTYuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhRmxpcE91dGxpbmUgPSBcIk0yMCA1SDE2LjgzTDE1IDNIOUw3LjE3IDVINEMyLjkgNSAyIDUuOSAyIDdWMTlDMiAyMC4xMSAyLjkgMjEgNCAyMUgyMEMyMS4xMSAyMSAyMiAyMC4xMSAyMiAxOVY3QzIyIDUuOSAyMS4xMSA1IDIwIDVNMjAgMTlINFY3SDguMDVMOS44OCA1SDE0LjEyTDE2IDdIMjBWMTlNNSAxMkg3LjFDNy42NSA5LjI5IDEwLjI5IDcuNTUgMTMgOC4xQzEzLjc2IDguMjUgMTQuNDMgOC41OSAxNSA5TDEzLjU2IDEwLjQ1QzEzLjExIDEwLjE3IDEyLjU4IDEwIDEyIDEwQzEwLjc0IDEwIDkuNiAxMC44IDkuMTggMTJIMTFMOCAxNUw1IDEyTTE2LjkxIDE0QzE2LjM2IDE2LjcxIDEzLjcyIDE4LjQ1IDExIDE3LjlDMTAuMjUgMTcuNzQgOS41OCAxNy40MSA5IDE3TDEwLjQ0IDE1LjU1QzEwLjkgMTUuODMgMTEuNDMgMTYgMTIgMTZDMTMuMjcgMTYgMTQuNDEgMTUuMiAxNC44MyAxNEgxM0wxNiAxMUwxOSAxNEgxNi45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFGcm9udCA9IFwiTTcsMkgxN1YxMi41QzE3LDEwLjgzIDEzLjY3LDEwIDEyLDEwQzEwLjMzLDEwIDcsMTAuODMgNywxMi41TTE3LDBIN0EyLDIgMCAwLDAgNSwyVjE2QTIsMiAwIDAsMCA3LDE4SDE3QTIsMiAwIDAsMCAxOSwxNlYyQTIsMiAwIDAsMCAxNywwTTEyLDhBMiwyIDAgMCwwIDE0LDZBMiwyIDAgMCwwIDEyLDRBMiwyIDAgMCwwIDEwLDZBMiwyIDAgMCwwIDEyLDhNMTQsMjBWMjJIMTlWMjBNMTAsMjBINVYyMkgxMFYyNEwxMywyMUwxMCwxOFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFGcm9udFZhcmlhbnQgPSBcIk02LDBIMThBMiwyIDAgMCwxIDIwLDJWMjJBMiwyIDAgMCwxIDE4LDI0SDZBMiwyIDAgMCwxIDQsMjJWMkEyLDIgMCAwLDEgNiwwTTEyLDZBMywzIDAgMCwxIDE1LDlBMywzIDAgMCwxIDEyLDEyQTMsMyAwIDAsMSA5LDlBMywzIDAgMCwxIDEyLDZNMTEsMVYzSDEzVjFIMTFNNiw0VjE2LjVDNiwxNS4xMiA4LjY5LDE0IDEyLDE0QzE1LjMxLDE0IDE4LDE1LjEyIDE4LDE2LjVWNEg2TTEzLDE4SDlWMjBIMTNWMjJMMTYsMTlMMTMsMTZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhR29wcm8gPSBcIk0yMCw1SDE1QTIsMiAwIDAsMCAxMyw3VjEyQTIsMiAwIDAsMCAxNSwxNEgyMEEyLDIgMCAwLDAgMjIsMTJWN0EyLDIgMCAwLDAgMjAsNU0xNy41LDEyLjVBMywzIDAgMCwxIDE0LjUsOS41QTMsMyAwIDAsMSAxNy41LDYuNUEzLDMgMCAwLDEgMjAuNSw5LjVBMywzIDAgMCwxIDE3LjUsMTIuNU0xNy41LDExQTEuNSwxLjUgMCAwLDEgMTYsOS41QTEuNSwxLjUgMCAwLDEgMTcuNSw4QTEuNSwxLjUgMCAwLDEgMTksOS41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMU0xMiwxNVY1SDRBMiwyIDAgMCwwIDIsN1YxN0EyLDIgMCAwLDAgNCwxOUgyMEEyLDIgMCAwLDAgMjIsMTdWMTVIMTJNMTAsMTJINFY3SDEwVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYUltYWdlID0gXCJNNCw1SDdMOSwzSDE1TDE3LDVIMjBBMiwyIDAgMCwxIDIyLDdWMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlWN0EyLDIgMCAwLDEgNCw1TTEzLjA5LDkuNDVMMTEuMDUsMTIuMThMMTIuNiwxNC4yNUwxMS43MywxNC45MUw5LjI3LDExLjY0TDYsMTZIMThMMTMuMDksOS40NVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFJcmlzID0gXCJNMTMuNzMsMTVMOS44MywyMS43NkMxMC41MywyMS45MSAxMS4yNSwyMiAxMiwyMkMxNC40LDIyIDE2LjYsMjEuMTUgMTguMzIsMTkuNzVMMTQuNjYsMTMuNE0yLjQ2LDE1QzMuMzgsMTcuOTIgNS42MSwyMC4yNiA4LjQ1LDIxLjM0TDEyLjEyLDE1TTguNTQsMTJMNC42NCw1LjI1QzMsNyAyLDkuMzkgMiwxMkMyLDEyLjY4IDIuMDcsMTMuMzUgMi4yLDE0SDkuNjlNMjEuOCwxMEgxNC4zMUwxNC42LDEwLjVMMTkuMzYsMTguNzVDMjEsMTYuOTcgMjIsMTQuNiAyMiwxMkMyMiwxMS4zMSAyMS45MywxMC42NCAyMS44LDEwTTIxLjU0LDlDMjAuNjIsNi4wNyAxOC4zOSwzLjc0IDE1LjU1LDIuNjZMMTEuODgsOU05LjQsMTAuNUwxNC4xNywyLjI0QzEzLjQ3LDIuMDkgMTIuNzUsMiAxMiwyQzkuNiwyIDcuNCwyLjg0IDUuNjgsNC4yNUw5LjM0LDEwLjZMOS40LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhTWV0ZXJpbmdDZW50ZXIgPSBcIk00LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0TTQsNlYxOEgyMFY2SDRNMTIsMTAuNUExLjUsMS41IDAgMCwxIDEzLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMy41QTEuNSwxLjUgMCAwLDEgMTAuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEwLjVNMTIsNy41QzE0LjE0LDcuNSAxNS45Myw5IDE2LjM5LDExSDE0LjgzQzE0LjQyLDkuODMgMTMuMzEsOSAxMiw5QzEwLjY5LDkgOS41OCw5LjgzIDkuMTcsMTFINy42MUM4LjA3LDkgOS44Niw3LjUgMTIsNy41TTEyLDE2LjVDOS44NiwxNi41IDguMDcsMTUgNy42MSwxM0g5LjE3QzkuNTgsMTQuMTcgMTAuNjksMTUgMTIsMTVDMTMuMzEsMTUgMTQuNDIsMTQuMTcgMTQuODMsMTNIMTYuMzlDMTUuOTMsMTUgMTQuMTQsMTYuNSAxMiwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYU1ldGVyaW5nTWF0cml4ID0gXCJNNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNE00LDZWMThIMjBWNkg0TTUuNSw3LjVIMTFWOS4xN0MxMC4xNSw5LjQ3IDkuNDcsMTAuMTUgOS4xNywxMUg1LjVWNy41TTE4LjUsNy41VjExSDE0LjgzQzE0LjUzLDEwLjE1IDEzLjg1LDkuNDcgMTMsOS4xN1Y3LjVIMTguNU0xOC41LDE2LjVIMTNWMTQuODNDMTMuODUsMTQuNTMgMTQuNTMsMTMuODUgMTQuODMsMTNIMTguNVYxNi41TTUuNSwxNi41VjEzSDkuMTdDOS40NywxMy44NSAxMC4xNSwxNC41MyAxMSwxNC44M1YxNi41SDUuNU0xMiwxMC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgMTIsMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFNZXRlcmluZ1BhcnRpYWwgPSBcIk00LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0TTQsNlYxOEgyMFY2SDRNMTIsNy41QzE0LjE0LDcuNSAxNS45Myw5IDE2LjM5LDExSDE0LjgzQzE0LjQyLDkuODMgMTMuMzEsOSAxMiw5QzEwLjY5LDkgOS41OCw5LjgzIDkuMTcsMTFINy42MUM4LjA3LDkgOS44Niw3LjUgMTIsNy41TTEyLDE2LjVDOS44NiwxNi41IDguMDcsMTUgNy42MSwxM0g5LjE3QzkuNTgsMTQuMTcgMTAuNjksMTUgMTIsMTVDMTMuMzEsMTUgMTQuNDIsMTQuMTcgMTQuODMsMTNIMTYuMzlDMTUuOTMsMTUgMTQuMTQsMTYuNSAxMiwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYU1ldGVyaW5nU3BvdCA9IFwiTTQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEEyLDIgMCAwLDEgMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRNNCw2VjE4SDIwVjZINE0xMiwxMC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgMTIsMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFPZmYgPSBcIk0xLjIsNC40N0wyLjUsMy4yTDIwLDIwLjcyTDE4LjczLDIyTDE2LjczLDIwSDRBMiwyIDAgMCwxIDIsMThWNkMyLDUuNzggMi4wNCw1LjU3IDIuMSw1LjM3TDEuMiw0LjQ3TTcsNEw5LDJIMTVMMTcsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEMyMiwxOC42IDIxLjc0LDE5LjEzIDIxLjMyLDE5LjVMMTYuMzMsMTQuNUMxNi43NiwxMy43NyAxNywxMi45MSAxNywxMkE1LDUgMCAwLDAgMTIsN0MxMS4wOSw3IDEwLjIzLDcuMjQgOS41LDcuNjdMNS44Miw0SDdNNywxMkE1LDUgMCAwLDAgMTIsMTdDMTIuNSwxNyAxMy4wMywxNi45MiAxMy41LDE2Ljc3TDExLjcyLDE1QzEwLjI5LDE0Ljg1IDkuMTUsMTMuNzEgOSwxMi4yOEw3LjIzLDEwLjVDNy4wOCwxMC45NyA3LDExLjUgNywxMk0xMiw5QTMsMyAwIDAsMSAxNSwxMkMxNSwxMi4zNSAxNC45NCwxMi42OSAxNC44MywxM0wxMSw5LjE3QzExLjMxLDkuMDYgMTEuNjUsOSAxMiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYU91dGxpbmUgPSBcIk0yMCw0SDE2LjgzTDE1LDJIOUw3LjE3LDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QTIsMiAwIDAsMCAyMCw0TTIwLDE4SDRWNkg4LjA1TDkuODgsNEgxNC4xMkwxNS45NSw2SDIwVjE4TTEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMkE1LDUgMCAwLDAgMTIsN00xMiwxNUEzLDMgMCAwLDEgOSwxMkEzLDMgMCAwLDEgMTIsOUEzLDMgMCAwLDEgMTUsMTJBMywzIDAgMCwxIDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVBhcnR5TW9kZSA9IFwiTTEyLDE3QzEwLjM3LDE3IDguOTQsMTYuMjEgOCwxNUgxMkEzLDMgMCAwLDAgMTUsMTJDMTUsMTEuNjUgMTQuOTMsMTEuMzEgMTQuODIsMTFIMTYuOUMxNi45NiwxMS4zMiAxNywxMS42NiAxNywxMkE1LDUgMCAwLDEgMTIsMTdNMTIsN0MxMy42Myw3IDE1LjA2LDcuNzkgMTYsOUgxMkEzLDMgMCAwLDAgOSwxMkM5LDEyLjM1IDkuMDcsMTIuNjggOS4xOCwxM0g3LjFDNy4wMywxMi42OCA3LDEyLjM0IDcsMTJBNSw1IDAgMCwxIDEyLDdNMjAsNEgxNi44M0wxNSwySDlMNy4xNyw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVBsdXMgPSBcIk0zIDRWMUg1VjRIOFY2SDVWOUgzVjZIMFY0TTYgMTBWN0g5VjRIMTZMMTcuOCA2SDIxQzIyLjEgNiAyMyA2LjkgMjMgOFYyMEMyMyAyMS4xIDIyLjEgMjIgMjEgMjJINUMzLjkgMjIgMyAyMS4xIDMgMjBWMTBNMTMgMTlDMTcuNDUgMTkgMTkuNjkgMTMuNjIgMTYuNTQgMTAuNDZDMTMuMzkgNy4zMSA4IDkuNTUgOCAxNEM4IDE2Ljc2IDEwLjI0IDE5IDEzIDE5TTkuOCAxNEM5LjggMTYuODUgMTMuMjUgMTguMjggMTUuMjYgMTYuMjZDMTcuMjggMTQuMjUgMTUuODUgMTAuOCAxMyAxMC44QzExLjI0IDEwLjggOS44IDEyLjI0IDkuOCAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFQbHVzT3V0bGluZSA9IFwiTTIxIDZIMTcuOEwxNiA0SDEwVjZIMTUuMUwxNyA4SDIxVjIwSDVWMTFIM1YyMEMzIDIxLjEgMy45IDIyIDUgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjhDMjMgNi45IDIyLjEgNiAyMSA2TTggMTRDOCAxOC40NSAxMy4zOSAyMC42OSAxNi41NCAxNy41NEMxOS42OSAxNC4zOSAxNy40NSA5IDEzIDlDMTAuMjQgOSA4IDExLjI0IDggMTRNMTMgMTFDMTQuNjQgMTEuMDUgMTUuOTUgMTIuMzYgMTYgMTRDMTUuOTUgMTUuNjQgMTQuNjQgMTYuOTUgMTMgMTdDMTEuMzYgMTYuOTUgMTAuMDUgMTUuNjQgMTAgMTRDMTAuMDUgMTIuMzYgMTEuMzYgMTEuMDUgMTMgMTFNNSA2SDhWNEg1VjFIM1Y0SDBWNkgzVjlINVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVJlYXIgPSBcIk0xMiw2QzEwLjg5LDYgMTAsNS4xIDEwLDRBMiwyIDAgMCwxIDEyLDJDMTMuMDksMiAxNCwyLjkgMTQsNEEyLDIgMCAwLDEgMTIsNk0xNywwSDdBMiwyIDAgMCwwIDUsMlYxNkEyLDIgMCAwLDAgNywxOEgxN0EyLDIgMCAwLDAgMTksMTZWMkEyLDIgMCAwLDAgMTcsME0xNCwyMFYyMkgxOVYyME0xMCwyMEg1VjIySDEwVjI0TDEzLDIxTDEwLDE4VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVJlYXJWYXJpYW50ID0gXCJNNiwwSDE4QTIsMiAwIDAsMSAyMCwyVjIyQTIsMiAwIDAsMSAxOCwyNEg2QTIsMiAwIDAsMSA0LDIyVjJBMiwyIDAgMCwxIDYsME0xMiwyQTIsMiAwIDAsMCAxMCw0QTIsMiAwIDAsMCAxMiw2QTIsMiAwIDAsMCAxNCw0QTIsMiAwIDAsMCAxMiwyTTEzLDE4SDlWMjBIMTNWMjJMMTYsMTlMMTMsMTZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhUmV0YWtlID0gXCJNMjAsNUgxN0wxNSwzSDlMNyw1SDRBMiwyIDAgMCwwIDIsN1YxOUEyLDIgMCAwLDAgNCwyMUgyMEEyLDIgMCAwLDAgMjIsMTlWN0EyLDIgMCAwLDAgMjAsNU0xMiwxOEMxMC45MiwxOCA5Ljg2LDE3LjY1IDksMTdMMTAuNDQsMTUuNTZDMTAuOTEsMTUuODUgMTEuNDUsMTYgMTIsMTZBMywzIDAgMCwwIDE1LDEzQTMsMyAwIDAsMCAxMiwxMEMxMC43NCwxMCA5LjYsMTAuOCA5LjE4LDEySDExTDgsMTVMNSwxMkg3LjFDNy42NSw5LjI5IDEwLjI5LDcuNTUgMTMsOC4xQzE1LjcsOC42NSAxNy40NSwxMS4yOSAxNi45LDE0QzE2LjQyLDE2LjMzIDE0LjM4LDE4IDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVJldGFrZU91dGxpbmUgPSBcIk0yMCw1SDE2LjgzTDE1LDNIOUw3LjE3LDVINEEyLDIgMCAwLDAgMiw3VjE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVY3QTIsMiAwIDAsMCAyMCw1TTIwLDE5SDRWN0g4LjA1TDkuODgsNUgxNC4xMkwxNiw3SDIwVjE5TTEyLDE4QzEwLjkyLDE4IDkuODYsMTcuNjUgOSwxN0wxMC40NCwxNS41NkMxMC45MSwxNS44NSAxMS40NSwxNiAxMiwxNkEzLDMgMCAwLDAgMTUsMTNBMywzIDAgMCwwIDEyLDEwQzEwLjc0LDEwIDkuNiwxMC44IDkuMTgsMTJIMTFMOCwxNUw1LDEySDcuMUM3LjY1LDkuMjkgMTAuMjksNy41NSAxMyw4LjFDMTUuNyw4LjY1IDE3LjQ1LDExLjI5IDE2LjksMTRDMTYuNDIsMTYuMzMgMTQuMzgsMTggMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhU3dpdGNoID0gXCJNMTUsMTUuNVYxM0g5VjE1LjVMNS41LDEyTDksOC41VjExSDE1VjguNUwxOC41LDEyTTIwLDRIMTYuODNMMTUsMkg5TDcuMTcsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFTd2l0Y2hPdXRsaW5lID0gXCJNMjAgNEgxNi44TDE1IDJIOUw3LjIgNEg0QzIuOSA0IDIgNC45IDIgNlYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjZDMjIgNC45IDIxLjEgNCAyMCA0TTkuOSA0SDE0LjFMMTUuOSA2SDIwVjE4SDRWNkg4LjFNMTUgMTFIOVY4LjVMNS41IDEyTDkgMTUuNVYxM0gxNVYxNS41TDE4LjUgMTJMMTUgOC41VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbWVyYVRpbWVyID0gXCJNNC45NCw2LjM1QzQuNTUsNS45NiA0LjU1LDUuMzIgNC45NCw0LjkzQzUuMzMsNC41NCA1Ljk2LDQuNTQgNi4zNSw0LjkzTDEzLjA3LDEwLjMxTDEzLjQyLDEwLjU5QzE0LjIsMTEuMzcgMTQuMiwxMi42NCAxMy40MiwxMy40MkMxMi42NCwxNC4yIDExLjM3LDE0LjIgMTAuNTksMTMuNDJMMTAuMzEsMTMuMDdMNC45NCw2LjM1TTEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCw5Ljc5IDE5LjEsNy43OSAxNy42Niw2LjM0TDE5LjA3LDQuOTNDMjAuODgsNi43NCAyMiw5LjI0IDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJINEE4LDggMCAwLDAgMTIsMjBNMTIsMUEyLDIgMCAwLDEgMTQsM0EyLDIgMCAwLDEgMTIsNUEyLDIgMCAwLDEgMTAsM0EyLDIgMCAwLDEgMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYW1lcmFXaXJlbGVzcyA9IFwiTTEyLDEwLjhBMy4yLDMuMiAwIDAsMSAxNS4yLDE0QTMuMiwzLjIgMCAwLDEgMTIsMTcuMkEzLjIsMy4yIDAgMCwxIDguOCwxNEEzLjIsMy4yIDAgMCwxIDEyLDEwLjhNMTYsMy4zM1YyQTYsNiAwIDAsMSAyMiw4SDIwLjY3QzIwLjY3LDUuNDIgMTguNTgsMy4zMyAxNiwzLjMzTTE2LDZWNC42N0MxNy44NCw0LjY3IDE5LjMzLDYuMTYgMTkuMzMsOEgxOEMxOCw2Ljg5IDE3LjExLDYgMTYsNk0xNyw5SDIyVjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjhBMiwyIDAgMCwxIDQsNkg3LjE3TDksNEgxNVY3QzE2LjExLDcgMTcsNy44OSAxNyw5TTEyLDE5QTUsNSAwIDAsMCAxNywxNEE1LDUgMCAwLDAgMTIsOUE1LDUgMCAwLDAgNywxNEE1LDUgMCAwLDAgMTIsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtZXJhV2lyZWxlc3NPdXRsaW5lID0gXCJNMjAsOVYyMEg0VjhIOC4wNUw5Ljg4LDZIMTVWNEg5TDcuMTcsNkg0QTIsMiAwIDAsMCAyLDhWMjBBMiwyIDAgMCwwIDQsMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjlIMjBNMjAuNjcsOEgyMkMyMiw0LjY4IDE5LjMxLDIgMTYsMlYzLjMzQzE4LjU4LDMuMzMgMjAuNjYsNS40MSAyMC42Nyw4TTE4LDhIMTkuMzNDMTkuMzIsNi4xNSAxNy44NCw0LjY3IDE2LDQuNjdWNkMxNy4xMSw2IDE4LDYuODkgMTgsOE03LDE0QTUsNSAwIDAsMCAxMiwxOUE1LDUgMCAwLDAgMTcsMTRBNSw1IDAgMCwwIDEyLDlBNSw1IDAgMCwwIDcsMTRNMTUsMTRBMywzIDAgMCwxIDEyLDE3QTMsMyAwIDAsMSA5LDE0QTMsMyAwIDAsMSAxMiwxMUEzLDMgMCAwLDEgMTUsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FtcGZpcmUgPSBcIk0xNS45LDE4LjVMMjEuOSwyMC4xTDIxLjUsMjJMMTIuMSwxOS41TDIuNywyMkwyLjIsMjAuMUw4LjIsMTguNUwyLjEsMTYuOUwyLjYsMTVMMTIsMTcuNUwyMS40LDE1TDIxLjksMTYuOUwxNS45LDE4LjVNMTYuMDcsNy45MkMxNS45MSw3LjcgMTUuNzEsNy41IDE1LjUsNy4zM0MxNS4wNSw2LjkgMTQuNSw2LjU5IDE0LjA2LDYuMTNDMTMsNS4wOCAxMi43OSwzLjM0IDEzLjQ0LDJDMTIuNzksMi4xNyAxMi4xOCwyLjU0IDExLjY3LDIuOTVDOS44NCw0LjQ2IDkuMTEsNy4xIDEwLDkuMzhDMTAsOS40NSAxMC4wNCw5LjUzIDEwLjA0LDkuNjJDMTAuMDQsOS43OCA5LjkzLDkuOTIgOS43OSwxMEM5LjYzLDEwLjA1IDkuNDYsMTAgOS4zMyw5LjlDOS4yOCw5Ljg2IDkuMjUsOS44MiA5LjIyLDkuNzdDOC40Miw4Ljc0IDguMjksNy4yNiA4Ljg0LDYuMDdDNy42NSw3LjA2IDcsOC43MiA3LjExLDEwLjI5QzcuMTMsMTAuNjUgNy4xOCwxMSA3LjMsMTEuMzZDNy40MSwxMS44IDcuNTksMTIuMjMgNy44MiwxMi42MUM4LjU3LDEzLjg2IDkuOSwxNC43NiAxMS4zMiwxNC45NEMxMi44NCwxNS4xNCAxNC40NiwxNC44NSAxNS42MywxMy43OUMxNi45MywxMi41OSAxNy40LDEwLjY3IDE2LjcxLDlMMTYuNjEsOC44M0MxNi40Nyw4LjUgMTYuMjgsOC4yIDE2LjA0LDcuOTNMMTYuMDcsNy45Mk0xMy44MywxMi40N0MxMy42MywxMi42NSAxMy4zMSwxMi44MyAxMy4wNSwxMi45MUMxMi4yNiwxMy4xOSAxMS40NiwxMi43OSAxMSwxMi4zMUMxMS44NCwxMi4xMSAxMi4zNCwxMS40NyAxMi41LDEwLjgzQzEyLjYxLDEwLjI1IDEyLjM5LDkuNzggMTIuMjksOS4yMkMxMi4yMSw4LjY5IDEyLjIyLDguMjMgMTIuNDIsNy43M0MxMi41NSw4IDEyLjY5LDguMjggMTIuODYsOC41QzEzLjQxLDkuMjIgMTQuMjcsOS41NCAxNC40NSwxMC41QzE0LjQ3LDEwLjYzIDE0LjUsMTAuNzIgMTQuNSwxMC44M0MxNC41LDExLjQzIDE0LjI2LDEyLjA3IDEzLjgyLDEyLjQ3XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FuY2VsID0gXCJNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjIgMiAxNy41IDIgMTIgNi41IDIgMTIgMk0xMiA0QzEwLjEgNCA4LjQgNC42IDcuMSA1LjdMMTguMyAxNi45QzE5LjMgMTUuNSAyMCAxMy44IDIwIDEyQzIwIDcuNiAxNi40IDQgMTIgNE0xNi45IDE4LjNMNS43IDcuMUM0LjYgOC40IDQgMTAuMSA0IDEyQzQgMTYuNCA3LjYgMjAgMTIgMjBDMTMuOSAyMCAxNS42IDE5LjQgMTYuOSAxOC4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbmRsZSA9IFwiTTEyLjUsMkMxMC44NCwyIDkuNSw1LjM0IDkuNSw3QTMsMyAwIDAsMCAxMi41LDEwQTMsMyAwIDAsMCAxNS41LDdDMTUuNSw1LjM0IDE0LjE2LDIgMTIuNSwyTTEyLjUsNi41QTEsMSAwIDAsMSAxMy41LDcuNUExLDEgMCAwLDEgMTIuNSw4LjVBMSwxIDAgMCwxIDExLjUsNy41QTEsMSAwIDAsMSAxMi41LDYuNU0xMCwxMUExLDEgMCAwLDAgOSwxMlYyMEg3QTEsMSAwIDAsMSA2LDE5VjE4QTEsMSAwIDAsMCA1LDE3QTEsMSAwIDAsMCA0LDE4VjE5QTMsMyAwIDAsMCA3LDIySDE5QTEsMSAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMTksMjBIMTZWMTJBMSwxIDAgMCwwIDE1LDExSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbmR5Y2FuZSA9IFwiTTEwLDEwQTIsMiAwIDAsMSA4LDEyQTIsMiAwIDAsMSA2LDEwVjhDNiw3LjM3IDYuMSw2Ljc3IDYuMjcsNi4yTDEwLDkuOTNWMTBNMTIsMkMxMi43NCwyIDEzLjQ0LDIuMTMgMTQuMDksMi4zOEwxMS45Nyw2QzExLjE0LDYgMTAuNDQsNi41IDEwLjE1LDcuMjVMNy4yNCw0LjM0QzguMzQsMi45MiAxMC4wNiwyIDEyLDJNMTcuNzYsNi4zMUwxNCwxMC4wN1Y4QzE0LDcuNjIgMTMuOSw3LjI3IDEzLjcyLDYuOTdMMTUuODMsMy4zOEMxNi43NCw0LjEzIDE3LjQyLDUuMTUgMTcuNzYsNi4zMU0xOCwxMy4wOUwxNCwxNy4wOVYxMi45TDE4LDguOVYxMy4wOU0xOCwyMEEyLDIgMCAwLDEgMTYsMjJBMiwyIDAgMCwxIDE0LDIwVjE5LjkxTDE4LDE1LjkxVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbm5hYmlzID0gXCJNMTEuNSwyMlYxNy4zNUMxMSwxOC4xMyAxMCwxOS4wOSA4LjAzLDE5LjgxQzguMDMsMTkuODEgOC41MywxOC4xIDkuOTQsMTYuOTVDOC42NCwxNy4yMyA2LjY4LDE3LjE5IDQsMTZDNCwxNiA2LjQ3LDE0LjU5IDkuMjgsMTQuOTdDNy42OSwxNCA1LjcsMTIuMDggNC4xNyw4LjExQzQuMTcsOC4xMSA4LjY3LDkuMzQgMTAuOTEsMTMuMTRDOC44OCw4LjI0IDEyLDIgMTIsMkMxNC40Myw3LjQ3IDEzLjkxLDExLjEgMTMuMTIsMTMuMUMxNS4zNyw5LjMzIDE5LjgzLDguMTEgMTkuODMsOC4xMUMxOC4zLDEyLjA4IDE2LjMxLDE0IDE0LjcyLDE0Ljk3QzE3LjUzLDE0LjU5IDIwLDE2IDIwLDE2QzE3LjMyLDE3LjE5IDE1LjM2LDE3LjIzIDE0LjA2LDE2Ljk1QzE1LjQ3LDE4LjEgMTUuOTcsMTkuODEgMTUuOTcsMTkuODFDMTQsMTkuMDkgMTMsMTguMTMgMTIuNSwxNy4zNVYyMkgxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhbm5hYmlzT2ZmID0gXCJNMTYuNjIgMTMuNDJMMTQuNSAxMS4zMkMxNi44NCA4Ljk0IDE5LjgzIDguMTEgMTkuODMgOC4xMUMxOC44NyAxMC42IDE3LjczIDEyLjI3IDE2LjYyIDEzLjQyTTEyIDJDMTIgMiAxMC44NiA0LjMgMTAuNDEgNy4yMUwxMy43MiAxMC41QzEzLjkyIDguNDUgMTMuNjEgNS42MyAxMiAyTTIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMOC42MiAxMC41QzYuNSA4Ljc1IDQuMTcgOC4xMSA0LjE3IDguMTFDNS43IDEyLjA4IDcuNjkgMTQgOS4yOCAxNC45N0M2LjQ3IDE0LjU5IDQgMTYgNCAxNkM2LjY4IDE3LjE5IDguNjQgMTcuMjMgOS45NCAxNi45NUM4LjUzIDE4LjEgOC4wMyAxOS44MSA4LjAzIDE5LjgxQzEwIDE5LjA5IDExIDE4LjEzIDExLjUgMTcuMzVWMjJIMTIuNVYxNy4zNUMxMyAxOC4xMyAxNCAxOS4wOSAxNS45NyAxOS44MUMxNS45NyAxOS44MSAxNS40NyAxOC4xIDE0LjA2IDE2Ljk1QzE0LjM5IDE3IDE0Ljc3IDE3LjA3IDE1LjIgMTcuMDlMMjAuODQgMjIuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2Fwc0xvY2sgPSBcIk05Ljk2LDEzLjcxTDEyLDguMjlMMTQuMDMsMTMuNzJNMTEuMTQsNkw2LjQzLDE4SDguMzZMOS4zMiwxNS40M0gxNC42OEwxNS42NCwxOEgxNy41N0wxMi44Niw2SDExLjE0TTIwLDJINEMyLjg5LDIgMiwyLjg5IDIsNFYyMEMyLDIxLjExIDIuOSwyMiA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjRDMjIsMi44OSAyMS4xLDIgMjAsMk0yMCwyMEg0VjRIMjBWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyID0gXCJNNSwxMUw2LjUsNi41SDE3LjVMMTksMTFNMTcuNSwxNkExLjUsMS41IDAgMCwxIDE2LDE0LjVBMS41LDEuNSAwIDAsMSAxNy41LDEzQTEuNSwxLjUgMCAwLDEgMTksMTQuNUExLjUsMS41IDAgMCwxIDE3LjUsMTZNNi41LDE2QTEuNSwxLjUgMCAwLDEgNSwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDEzQTEuNSwxLjUgMCAwLDEgOCwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDE2TTE4LjkyLDZDMTguNzIsNS40MiAxOC4xNiw1IDE3LjUsNUg2LjVDNS44NCw1IDUuMjgsNS40MiA1LjA4LDZMMywxMlYyMEExLDEgMCAwLDAgNCwyMUg1QTEsMSAwIDAsMCA2LDIwVjE5SDE4VjIwQTEsMSAwIDAsMCAxOSwyMUgyMEExLDEgMCAwLDAgMjEsMjBWMTJMMTguOTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXIyUGx1cyA9IFwiTTggMTZDOCAxMy42IDkuMSAxMS41IDEwLjcgMTBIM0w0LjUgNS41SDE1LjVMMTYuMyA4QzE2LjkgOCAxNy41IDguMSAxOCA4LjNMMTYuOSA1QzE2LjcgNC40IDE2LjEgNCAxNS41IDRINC41QzMuOCA0IDMuMyA0LjQgMy4xIDVMMSAxMVYxOUMxIDE5LjUgMS41IDIwIDIgMjBIM0MzLjUgMjAgNCAxOS41IDQgMTlWMThIOC4zQzguMSAxNy40IDggMTYuNyA4IDE2TTQuNSAxNUMzLjcgMTUgMyAxNC4zIDMgMTMuNVMzLjcgMTIgNC41IDEyIDYgMTIuNyA2IDEzLjUgNS4zIDE1IDQuNSAxNU0xNiAyMFYxOEgxM1YxN0gxNEMxNS4xIDE3IDE2IDE2LjEgMTYgMTVWMTRDMTYgMTIuOSAxNS4xIDEyIDE0IDEySDExVjE0SDE0VjE1SDEzQzExLjkgMTUgMTEgMTUuOSAxMSAxN1YyME0yMyAxN0gyMVYxOUgxOVYxN0gxN1YxNUgxOVYxM0gyMVYxNUgyM1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXIzUGx1cyA9IFwiTTE2LjkgNUMxNi43IDQuNCAxNi4xIDQgMTUuNSA0SDQuNUMzLjggNCAzLjMgNC40IDMuMSA1TDEgMTFWMTlDMSAxOS41IDEuNSAyMCAyIDIwSDNDMy41IDIwIDQgMTkuNSA0IDE5VjE4SDguM0M4LjEgMTcuNCA4IDE2LjcgOCAxNkM4IDEzLjYgOS4xIDExLjUgMTAuNyAxMEgzTDQuNSA1LjVIMTUuNUwxNi4zIDhDMTYuOSA4IDE3LjUgOC4xIDE4IDguM0wxNi45IDVNNC41IDEyQzUuMyAxMiA2IDEyLjcgNiAxMy41UzUuMyAxNSA0LjUgMTUgMyAxNC4zIDMgMTMuNSAzLjcgMTIgNC41IDEyTTIzIDE3SDIxVjE5SDE5VjE3SDE3VjE1SDE5VjEzSDIxVjE1SDIzVjE3TTE0LjUgMTZDMTUuMyAxNiAxNiAxNC44IDE2IDE0QzE2IDEyLjkgMTUuMSAxMiAxNCAxMkgxMVYxNEgxNFYxNUgxMlYxN0gxNFYxOEgxMVYyMEgxNEMxNS4xIDIwIDE2IDE5LjEgMTYgMThDMTYgMTcuMiAxNS4zIDE2IDE0LjUgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyQXJyb3dMZWZ0ID0gXCJNMTIgMThDMTIgMTQuNjkgMTQuNjkgMTIgMTggMTJDMTkuMDkgMTIgMjAuMTIgMTIuMyAyMSAxMi44MVYxMkwxOC45MiA2QzE4LjcyIDUuNDIgMTguMTYgNSAxNy41IDVINi41QzUuODQgNSA1LjI4IDUuNDIgNS4wOCA2TDMgMTJWMjBDMyAyMC41NSAzLjQ1IDIxIDQgMjFINUM1LjU1IDIxIDYgMjAuNTUgNiAyMFYxOUgxMi4wOUMxMi4wNCAxOC42NyAxMiAxOC4zNCAxMiAxOE02LjUgNi41SDE3LjVMMTkgMTFINUw2LjUgNi41TTYuNSAxNkM1LjY3IDE2IDUgMTUuMzMgNSAxNC41UzUuNjcgMTMgNi41IDEzIDggMTMuNjcgOCAxNC41IDcuMzMgMTYgNi41IDE2TTE4IDE1VjE3SDIyVjE5SDE4VjIxTDE1IDE4TDE4IDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyQXJyb3dSaWdodCA9IFwiTTEyIDE4QzEyIDE0LjY5IDE0LjY5IDEyIDE4IDEyQzE5LjA5IDEyIDIwLjEyIDEyLjMgMjEgMTIuODFWMTJMMTguOTIgNkMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1SDYuNUM1Ljg0IDUgNS4yOCA1LjQyIDUuMDggNkwzIDEyVjIwQzMgMjAuNTUgMy40NSAyMSA0IDIxSDVDNS41NSAyMSA2IDIwLjU1IDYgMjBWMTlIMTIuMDlDMTIuMDQgMTguNjcgMTIgMTguMzQgMTIgMThNNi41IDYuNUgxNy41TDE5IDExSDVMNi41IDYuNU02LjUgMTZDNS42NyAxNiA1IDE1LjMzIDUgMTQuNVM1LjY3IDEzIDYuNSAxMyA4IDEzLjY3IDggMTQuNSA3LjMzIDE2IDYuNSAxNk0xOSAyMVYxOUgxNVYxN0gxOVYxNUwyMiAxOEwxOSAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckJhY2sgPSBcIk02LDExTDcsN0gxN0wxOCwxMU0xOC45Miw2QzE4LjcxLDUuNCAxOC4xNCw1IDE3LjUsNUg2LjVDNS44Niw1IDUuMjksNS40IDUuMDgsNkwzLDEyVjIwQTEsMSAwIDAsMCA0LDIxSDVBMSwxIDAgMCwwIDYsMjBWMThIMThWMjBBMSwxIDAgMCwwIDE5LDIxSDIwQTEsMSAwIDAsMCAyMSwyMFYxMkwxOC45Miw2TTcsMTZINVYxNEg3VjE2TTE5LDE2SDE3VjE0SDE5VjE2TTE0LDE2SDEwVjE0SDE0VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckJhdHRlcnkgPSBcIk00LDNWNkgxVjIwSDIzVjZIMjBWM0gxNFY2SDEwVjNINE0zLDhIMjFWMThIM1Y4TTE1LDEwVjEySDEzVjE0SDE1VjE2SDE3VjE0SDE5VjEySDE3VjEwSDE1TTUsMTJWMTRIMTFWMTJINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZUFicyA9IFwiTTI0LDEyQzI0LDE1LjMxIDIyLjY2LDE4LjMxIDIwLjUsMjAuNUwxOS40MiwxOS40MkMyMS4zMiwxNy41IDIyLjUsMTQuOSAyMi41LDEyQzIyLjUsOS4xMSAyMS4zMiw2LjUgMTkuNDIsNC41OEwyMC41LDMuNUMyMi42Niw1LjY5IDI0LDguNjkgMjQsMTJNMjAsOS42VjhIMTYuOEMxNS45Miw4IDE1LjIsOC43MiAxNS4yLDkuNlYxMS4yQTEuNiwxLjYgMCAwLDAgMTYuOCwxMi44SDE4LjRWMTQuNEgxNS4yVjE2SDE4LjRDMTkuMjgsMTYgMjAsMTUuMjggMjAsMTQuNFYxMi44QTEuNiwxLjYgMCAwLDAgMTguNCwxMS4ySDE2LjhWOS42SDIwTTguNDIsNkM5LjQ3LDUuMzcgMTAuNjksNSAxMiw1QzEzLjMxLDUgMTQuNTMsNS4zNyAxNS41OCw2SDE4LjY5QzE3LjA1LDQuMTYgMTQuNjYsMyAxMiwzQzkuMzQsMyA2Ljk1LDQuMTYgNS4zMSw2SDguNDJNMTMuMiwxMkMxMy44NCwxMiAxNC40LDEyLjU2IDE0LjQsMTMuMlYxNC40QTEuNiwxLjYgMCAwLDEgMTIuOCwxNkg5LjZWOEgxMi44QTEuNiwxLjYgMCAwLDEgMTQuNCw5LjZWMTAuOEMxNC40LDExLjQ0IDEzLjg0LDEyIDEzLjIsMTJNMTIuOCwxMi44SDExLjJWMTQuNEgxMi44VjEyLjhNMTIuOCw5LjZIMTEuMlYxMS4ySDEyLjhWOS42TTQuNTgsNC41OEwzLjUsMy41QzEuMzQsNS42OSAwLDguNjkgMCwxMkMwLDE1LjMxIDEuMzQsMTguMzEgMy41LDIwLjVMNC41OCwxOS40MkMyLjY4LDE3LjUgMS41LDE0LjkgMS41LDEyQzEuNSw5LjExIDIuNjgsNi41IDQuNTgsNC41OE03LjIsMTZWMTIuOEg1LjZWMTZINFY5LjZBMS42LDEuNiAwIDAsMSA1LjYsOEg3LjJDOC4wOCw4IDguOCw4LjcyIDguOCw5LjZWMTZINy4yTTcuMiwxMS4yVjkuNkg1LjZWMTEuMkg3LjJNMTUuNTgsMThDMTQuNTMsMTguNjMgMTMuMzEsMTkgMTIsMTlDMTAuNjksMTkgOS40NywxOC42MyA4LjQyLDE4SDUuMzFDNi45NSwxOS44NCA5LjM0LDIxIDEyLDIxQzE0LjY2LDIxIDE3LjA1LDE5Ljg0IDE4LjY5LDE4SDE1LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckJyYWtlQWxlcnQgPSBcIk0xMSwxNUgxM1YxN0gxMVYxNU0xMSw3SDEzVjEzSDExVjdNMTIsM0E5LDkgMCAwLDAgMywxMkE5LDkgMCAwLDAgMTIsMjFBOSw5IDAgMCwwIDIxLDEyQTksOSAwIDAsMCAxMiwzTTEyLDE5QzguMTQsMTkgNSwxNS44NiA1LDEyQzUsOC4xNCA4LjE0LDUgMTIsNUMxNS44Niw1IDE5LDguMTQgMTksMTJDMTksMTUuODYgMTUuODYsMTkgMTIsMTlNMjAuNSwyMC41QzIyLjY2LDE4LjMxIDI0LDE1LjMxIDI0LDEyQzI0LDguNjkgMjIuNjYsNS42OSAyMC41LDMuNUwxOS40Miw0LjU4QzIxLjMyLDYuNSAyMi41LDkuMTEgMjIuNSwxMkMyMi41LDE0LjkgMjEuMzIsMTcuNSAxOS40MiwxOS40MkwyMC41LDIwLjVNNC41OCwxOS40MkMyLjY4LDE3LjUgMS41LDE0LjkgMS41LDEyQzEuNSw5LjExIDIuNjgsNi41IDQuNTgsNC41OEwzLjUsMy41QzEuMzQsNS42OSAwLDguNjkgMCwxMkMwLDE1LjMxIDEuMzQsMTguMzEgMy41LDIwLjVMNC41OCwxOS40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZUhvbGQgPSBcIk0xMiwzQzcsMyAzLDcgMywxMkMzLDE3IDcsMjEgMTIsMjFDMTcsMjEgMjEsMTcgMjEsMTJDMjEsNyAxNywzIDEyLDNNMTIsMTlDOC4xLDE5IDUsMTUuOSA1LDEyQzUsOC4xIDguMSw1IDEyLDVDMTUuOSw1IDE5LDguMSAxOSwxMkMxOSwxNS45IDE1LjksMTkgMTIsMTlNMjAuNSwyMC41QzIyLjcsMTguMyAyNCwxNS4zIDI0LDEyQzI0LDguNyAyMi43LDUuNyAyMC41LDMuNUwxOS40LDQuNkMyMS4zLDYuNSAyMi41LDkuMSAyMi41LDEyQzIyLjUsMTQuOSAyMS4zLDE3LjUgMTkuNCwxOS40TDIwLjUsMjAuNU00LjYsMTkuNEMyLjcsMTcuNSAxLjUsMTQuOSAxLjUsMTJDMS41LDkuMSAyLjcsNi41IDQuNiw0LjZMMy41LDMuNUMxLjMsNS43IDAsOC43IDAsMTJDMCwxNS4zIDEuMywxOC4zIDMuNSwyMC41TDQuNiwxOS40TTksN1YxN0gxMVYxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZVBhcmtpbmcgPSBcIk0xMiwzQzcsMyAzLDcgMywxMkMzLDE3IDcsMjEgMTIsMjFDMTcsMjEgMjEsMTcgMjEsMTJDMjEsNyAxNywzIDEyLDNNMTIsMTlDOC4xLDE5IDUsMTUuOSA1LDEyQzUsOC4xIDguMSw1IDEyLDVDMTUuOSw1IDE5LDguMSAxOSwxMkMxOSwxNS45IDE1LjksMTkgMTIsMTlNMjAuNSwyMC41QzIyLjcsMTguMyAyNCwxNS4zIDI0LDEyQzI0LDguNyAyMi43LDUuNyAyMC41LDMuNUwxOS40LDQuNkMyMS4zLDYuNSAyMi41LDkuMSAyMi41LDEyQzIyLjUsMTQuOSAyMS4zLDE3LjUgMTkuNCwxOS40TDIwLjUsMjAuNU00LjYsMTkuNEMyLjcsMTcuNSAxLjUsMTQuOSAxLjUsMTJDMS41LDkuMSAyLjcsNi41IDQuNiw0LjZMMy41LDMuNUMxLjMsNS43IDAsOC43IDAsMTJDMCwxNS4zIDEuMywxOC4zIDMuNSwyMC41TDQuNiwxOS40TTkuNSw3VjE3SDExLjVWMTNIMTMuNUEyLDIgMCAwLDAgMTUuNSwxMVY5QTIsMiAwIDAsMCAxMy41LDdIOS41TTExLjUsOUgxMy41VjExSDExLjVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJCcmFrZVJldGFyZGVyID0gXCJNMTIgM0M3IDMgMyA3IDMgMTJTNyAyMSAxMiAyMSAyMSAxNyAyMSAxMiAxNyAzIDEyIDNNMTIgMTlDOC4xIDE5IDUgMTUuOSA1IDEyUzguMSA1IDEyIDUgMTkgOC4xIDE5IDEyIDE1LjkgMTkgMTIgMTlNMjAuNSAyMC41QzIyLjcgMTguMyAyNCAxNS4zIDI0IDEyUzIyLjcgNS43IDIwLjUgMy41TDE5LjQgNC42QzIxLjMgNi41IDIyLjUgOS4xIDIyLjUgMTJTMjEuMyAxNy41IDE5LjQgMTkuNEwyMC41IDIwLjVNNC42IDE5LjRDMi43IDE3LjUgMS41IDE0LjkgMS41IDEyUzIuNyA2LjUgNC42IDQuNkwzLjUgMy41QzEuMyA1LjcgMCA4LjcgMCAxMlMxLjMgMTguMyAzLjUgMjAuNUw0LjYgMTkuNE0xNS4zIDEwLjVDMTUuOTYgMTAuNSAxNi41IDExLjE3IDE2LjUgMTJDMTYuNSAxMi44MSAxNS45NSAxMy41IDE1LjMgMTMuNUMxNC45MyAxMy41IDE0LjY2IDEzLjI5IDE0LjUgMTMuMTFMMTQuNDcgMTMuMDhMMTQuNDQgMTMuMDVMMTMuMzggMTJMMTQuNDcgMTAuOTJMMTQuNSAxMC44OUwxNC41MyAxMC44NkMxNC43NCAxMC42MyAxNSAxMC41IDE1LjMgMTAuNU04LjcgMTAuNUM5LjA3IDEwLjUgOS4zNCAxMC43MSA5LjUgMTAuODhMOS41IDEwLjkyTDkuNTYgMTAuOTVMMTAuNjIgMTJMOS41MyAxMy4wOEw5LjUgMTMuMTFMOS40NyAxMy4xNUM5LjI2IDEzLjM3IDkgMTMuNSA4LjcgMTMuNUM4LjA1IDEzLjUgNy41IDEyLjgxIDcuNSAxMlM4LjA1IDEwLjUgOC43IDEwLjVNMTUuMyA5QzE0LjU4IDkgMTMuOSA5LjMxIDEzLjQyIDkuODVMMTIgMTEuMjVMMTAuNjEgOS44OEMxMC4xIDkuMzEgOS40MiA5IDguNyA5QzcuMjEgOSA2IDEwLjM1IDYgMTJTNy4yMSAxNSA4LjcgMTVDOS40MiAxNSAxMC4xIDE0LjY5IDEwLjU5IDE0LjE1TDEyIDEyLjc1TDEzLjM5IDE0LjEyQzEzLjkgMTQuNjggMTQuNTggMTUgMTUuMyAxNUMxNi43OSAxNSAxOCAxMy42NSAxOCAxMkMxOCAxMC4zMyAxNi43OSA5IDE1LjMgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJDaGlsZFNlYXQgPSBcIk0xNyA0LjVDMTcgNS45IDE1LjkgNyAxNC41IDdTMTIgNS45IDEyIDQuNSAxMy4xIDIgMTQuNSAyIDE3IDMuMSAxNyA0LjVNMTUgOEgxNC4yQzEyLjEgOCAxMC4xIDYuOCA5LjEgNC45QzkgNC44IDguOSA0LjcgOC45IDQuNkw3LjEgNS40QzcuNiA2LjggOS4yIDguNiAxMS41IDkuNUw5LjcgMTQuNUw1LjggMTMuNEwzIDE4LjlMNSAxOS40TDYuOCAxNS44TDExLjMgMTdDMTIuMyAxNy4yIDEzLjMgMTYuNyAxMy43IDE1LjhMMTYgOS40QzE2LjIgOC43IDE1LjcgOCAxNSA4TTE4LjkgN0wxNS41IDE2LjRDMTQuOSAxOCAxMy40IDE5IDExLjggMTlDMTEuNSAxOSAxMS4xIDE5IDEwLjggMTguOUw3LjkgMTguMUw3IDE5LjlMOSAyMC40TDEwLjQgMjAuOEMxMC45IDIwLjkgMTEuNCAyMSAxMS45IDIxQzE0LjQgMjEgMTYuNiAxOS41IDE3LjUgMTcuMUwyMSA3SDE4LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyQ2x1dGNoID0gXCJNMTAgMTguODRMMTQgMjAuN1YyM0w4IDIwVjE0SDVWMTBIOFY0TDE0IDFWMy4zTDEwIDUuMTZWMTguODRNMTkgMTBIMTVWNS40MUwxMiA2LjhWMTcuMkwxNSAxOC42VjE0SDE5VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckNvZyA9IFwiTTYuNSA1QzUuODQgNSA1LjI4IDUuNDIgNS4wOCA2TDMgMTJWMjBBMSAxIDAgMCAwIDQgMjFINUExIDEgMCAwIDAgNiAyMFYxOUgxMS4zQTcgNyAwIDAgMSAxMSAxN0E3IDcgMCAwIDEgMTQuNDEgMTFINUw2LjUgNi41SDE3LjVMMTguNjggMTAuMDNBNyA3IDAgMCAxIDIwLjQ3IDEwLjQ2TDE4LjkyIDZDMTguNzIgNS40MiAxOC4xNiA1IDE3LjUgNUg2LjVNMTcgMTJDMTYuODcgMTIgMTYuNzYgMTIuMDkgMTYuNzQgMTIuMjFMMTYuNTUgMTMuNTNDMTYuMjUgMTMuNjYgMTUuOTYgMTMuODIgMTUuNyAxNEwxNC40NiAxMy41QzE0LjM1IDEzLjUgMTQuMjIgMTMuNSAxNC4xNSAxMy42M0wxMy4xNSAxNS4zNkMxMy4wOSAxNS40NyAxMy4xMSAxNS42IDEzLjIxIDE1LjY4TDE0LjI3IDE2LjVDMTQuMjUgMTYuNjcgMTQuMjQgMTYuODMgMTQuMjQgMTdDMTQuMjQgMTcuMTcgMTQuMjUgMTcuMzMgMTQuMjcgMTcuNUwxMy4yMSAxOC4zMkMxMy4xMiAxOC40IDEzLjA5IDE4LjUzIDEzLjE1IDE4LjY0TDE0LjE1IDIwLjM3QzE0LjIxIDIwLjUgMTQuMzQgMjAuNSAxNC40NiAyMC41TDE1LjcgMjBDMTUuOTYgMjAuMTggMTYuMjQgMjAuMzUgMTYuNTUgMjAuNDdMMTYuNzQgMjEuNzlDMTYuNzYgMjEuOTEgMTYuODYgMjIgMTcgMjJIMTlDMTkuMTEgMjIgMTkuMjIgMjEuOTEgMTkuMjQgMjEuNzlMMTkuNDMgMjAuNDdDMTkuNzMgMjAuMzQgMjAgMjAuMTggMjAuMjcgMjBMMjEuNSAyMC41QzIxLjYzIDIwLjUgMjEuNzYgMjAuNSAyMS44MyAyMC4zN0wyMi44MyAxOC42NEMyMi44OSAxOC41MyAyMi44NiAxOC40IDIyLjc3IDE4LjMyTDIxLjcgMTcuNUMyMS43MiAxNy4zMyAyMS43NCAxNy4xNyAyMS43NCAxN0MyMS43NCAxNi44MyAyMS43MyAxNi42NyAyMS43IDE2LjVMMjIuNzYgMTUuNjhDMjIuODUgMTUuNiAyMi44OCAxNS40NyAyMi44MiAxNS4zNkwyMS44MiAxMy42M0MyMS43NiAxMy41IDIxLjYzIDEzLjUgMjEuNSAxMy41TDIwLjI3IDE0QzIwIDEzLjgyIDE5LjczIDEzLjY1IDE5LjQyIDEzLjUzTDE5LjIzIDEyLjIxQzE5LjIyIDEyLjA5IDE5LjExIDEyIDE5IDEySDE3TTYuNSAxM0ExLjUgMS41IDAgMCAxIDggMTQuNUExLjUgMS41IDAgMCAxIDYuNSAxNkExLjUgMS41IDAgMCAxIDUgMTQuNUExLjUgMS41IDAgMCAxIDYuNSAxM00xOCAxNS41QzE4LjgzIDE1LjUgMTkuNSAxNi4xNyAxOS41IDE3QzE5LjUgMTcuODMgMTguODMgMTguNSAxOCAxOC41QzE3LjE2IDE4LjUgMTYuNSAxNy44MyAxNi41IDE3QzE2LjUgMTYuMTcgMTcuMTcgMTUuNSAxOCAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckNvbm5lY3RlZCA9IFwiTTUsMTRIMTlMMTcuNSw5LjVINi41TDUsMTRNMTcuNSwxOUExLjUsMS41IDAgMCwwIDE5LDE3LjVBMS41LDEuNSAwIDAsMCAxNy41LDE2QTEuNSwxLjUgMCAwLDAgMTYsMTcuNUExLjUsMS41IDAgMCwwIDE3LjUsMTlNNi41LDE5QTEuNSwxLjUgMCAwLDAgOCwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE5TTE4LjkyLDlMMjEsMTVWMjNBMSwxIDAgMCwxIDIwLDI0SDE5QTEsMSAwIDAsMSAxOCwyM1YyMkg2VjIzQTEsMSAwIDAsMSA1LDI0SDRBMSwxIDAgMCwxIDMsMjNWMTVMNS4wOCw5QzUuMjgsOC40MiA1Ljg1LDggNi41LDhIMTcuNUMxOC4xNSw4IDE4LjcyLDguNDIgMTguOTIsOU0xMiwwQzE0LjEyLDAgMTYuMTUsMC44NiAxNy42NSwyLjM1TDE2LjIzLDMuNzdDMTUuMTEsMi42NSAxMy41OCwyIDEyLDJDMTAuNDIsMiA4Ljg5LDIuNjUgNy43NywzLjc3TDYuMzYsMi4zNUM3Ljg1LDAuODYgOS44OCwwIDEyLDBNMTIsNEMxMy4wNiw0IDE0LjA3LDQuNDQgMTQuODIsNS4xOEwxMy40LDYuNkMxMy4wMyw2LjIzIDEyLjUzLDYgMTIsNkMxMS41LDYgMTAuOTcsNi4yMyAxMC42LDYuNkw5LjE4LDUuMThDOS45Myw0LjQ0IDEwLjk0LDQgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJDb252ZXJ0aWJsZSA9IFwiTTE2LDZMMTUsNi43NUwxNy41LDEwSDEzLjVWOC41SDEyVjEwSDNDMS44OSwxMCAxLDEwLjg5IDEsMTJWMTVIM0EzLDMgMCAwLDAgNiwxOEEzLDMgMCAwLDAgOSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjEyQzIzLDEwLjg5IDIyLjExLDEwIDIxLDEwSDE5TDE2LDZNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckNvb2xhbnRMZXZlbCA9IFwiTTE5IDdWNUgyMVYzSDEzVjVIMTVWN0gxVjIxSDIzVjdIMTlNMjEgMTQuNDJDMjAuNzEgMTQuMTMgMjAuNSAxNCAyMCAxNEMxOS4zMyAxNCAxOS4yMSAxNC4yMSAxOC43MSAxNC43MVMxNy4zMyAxNiAxNiAxNiAxMy43OSAxNS4yMSAxMy4yOSAxNC43MSAxMi42NyAxNCAxMiAxNEMxMS43OCAxNCAxMS42MyAxNC4wMyAxMS41IDE0LjA4QzExLjIyIDE0LjE4IDExLjA1IDE0LjM3IDEwLjcxIDE0LjcxQzEwLjIxIDE1LjIxIDkuMzMgMTYgOCAxNlM1Ljc5IDE1LjIxIDUuMjkgMTQuNzEgNC42NyAxNCA0IDE0QzMuNSAxNCAzLjI5IDE0LjEzIDMgMTQuNDJWOUgyMVYxNC40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJDcnVpc2VDb250cm9sID0gXCJNMjIsMTVDMjIsMTcuNiAyMC44LDE5LjkgMTguOSwyMS4zTDE4LjQsMjAuOEwxNi4zLDE4LjdMMTcuNywxNy4zTDE4LjksMTguNUMxOS40LDE3LjggMTkuOCwxNi45IDE5LjksMTZIMThWMTRIMTkuOUMxOS43LDEzLjEgMTkuNCwxMi4zIDE4LjksMTEuNUwxNy43LDEyLjdMMTYuMywxMS4zTDE3LjUsMTAuMUMxNi44LDkuNiAxNS45LDkuMiAxNSw5LjFWMTFIMTNWOS4xQzEyLjEsOS4zIDExLjMsOS42IDEwLjUsMTAuMUwxMy41LDEzLjFDMTMuNywxMy4xIDEzLjgsMTMgMTQsMTNBMiwyIDAgMCwxIDE2LDE1QTIsMiAwIDAsMSAxNCwxN0EyLDIgMCAwLDEgMTIsMTVDMTIsMTQuOCAxMiwxNC43IDEyLjEsMTQuNUw5LjEsMTEuNUM4LjYsMTIuMiA4LjIsMTMuMSA4LjEsMTRIMTBWMTZIOC4xQzguMywxNi45IDguNiwxNy43IDkuMSwxOC41TDEwLjMsMTcuM0wxMS43LDE4LjdMOS4xLDIxLjNDNy4yLDE5LjkgNiwxNy42IDYsMTVBOCw4IDAgMCwxIDE0LDdBOCw4IDAgMCwxIDIyLDE1TTYuNyw1LjNMMy40LDJMMiwzLjRMNS4zLDYuN0w0LDhIOFY0TDYuNyw1LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyRGVmcm9zdEZyb250ID0gXCJNMTUsMjNDMTQuNywyMyAxNC41LDIyLjkgMTQuMywyMi43QzEzLjksMjIuMyAxNCwyMS43IDE0LjQsMjEuM1YyMS4zQzE0LjksMjAuOSAxNi4xLDE5LjUgMTYuMSwxOC40QzE2LjEsMTcuOCAxNS43LDE3LjIgMTUuMywxNi41QzE0LjgsMTUuNyAxNC4xLDE0LjcgMTQuMSwxMy41QzE0LjEsMTEuMiAxNS40LDEwLjMgMTUuNiwxMC4yQzE2LjEsOS45IDE2LjcsMTAuMSAxNywxMC41QzE3LjMsMTEgMTcuMSwxMS42IDE2LjcsMTEuOVYxMS45QzE2LjcsMTEuOSAxNi4yLDEyLjMgMTYuMiwxMy41QzE2LjIsMTQuMSAxNi42LDE0LjcgMTcsMTUuNEMxNy41LDE2LjIgMTguMiwxNy4yIDE4LjIsMTguNEMxOC4yLDIwLjYgMTYuMSwyMi42IDE1LjksMjIuOEMxNS41LDIyLjkgMTUuMiwyMyAxNSwyM00xMS43LDIyLjdDMTEuOSwyMi41IDE0LDIwLjUgMTQsMTguM0MxNCwxNy4xIDEzLjQsMTYuMSAxMi44LDE1LjNDMTIuNCwxNC42IDEyLDE0IDEyLDEzLjRDMTIsMTIuMiAxMi41LDExLjggMTIuNSwxMS44VjExLjhDMTMsMTEuNSAxMy4xLDEwLjkgMTIuOCwxMC40QzEyLjUsOS45IDExLjksOS44IDExLjQsMTAuMUMxMS4yLDEwLjIgOS45LDExLjEgOS45LDEzLjRDOS45LDE0LjYgMTAuNSwxNS42IDExLjEsMTYuNEMxMS41LDE3LjEgMTEuOSwxNy43IDExLjksMTguM0MxMS45LDE5LjQgMTAuNywyMC44IDEwLjIsMjEuMlYyMS4yQzkuOCwyMS42IDkuOCwyMi4yIDEwLjEsMjIuNkMxMC4zLDIyLjggMTAuNiwyMi45IDEwLjgsMjIuOUMxMS4yLDIzIDExLjUsMjIuOSAxMS43LDIyLjdNNy43LDIyLjdDNy45LDIyLjUgMTAsMjAuNSAxMCwxOC4zQzEwLDE3LjEgOS40LDE2LjEgOC44LDE1LjNDOC40LDE0LjcgOCwxNC4xIDgsMTMuNEM4LDEyLjIgOC41LDExLjggOC41LDExLjhWMTEuOEM5LDExLjUgOS4xLDEwLjkgOC44LDEwLjRDOC42LDEwIDcuOSw5LjkgNy41LDEwLjFDNy4zLDEwLjIgNiwxMS4xIDYsMTMuNEM2LDE0LjYgNi42LDE1LjYgNy4yLDE2LjRDNy42LDE3LjEgOCwxNy43IDgsMTguM0M4LDE5LjQgNi44LDIwLjggNi4zLDIxLjJWMjEuMkM1LjksMjEuNiA1LjksMjIuMiA2LjIsMjIuNkM2LjUsMjIuOSA2LjcsMjMgNywyM0M3LjIsMjMgNy41LDIyLjkgNy43LDIyLjdNMTIsM0M5LjQsMyAxLDMuMyAxLDdDMSw5LjQgMi4yLDE1LjQgMi44LDE4SDRMNC44LDE4SDVWMTZINC40QzMuOCwxMy4xIDMsOC44IDMsN0MzLDYgNy40LDUgMTIsNUMxNi42LDUgMjEsNiAyMSw3QzIxLDguOCAyMC4yLDEzLjEgMTkuNiwxNkgxOVYxOEgxOS4yTDIwLDE4SDIxLjJDMjEuOCwxNS40IDIzLDkuNCAyMyw3QzIzLDMuMyAxNC42LDMgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJEZWZyb3N0UmVhciA9IFwiTTEwLDE4LjNDMTAsMjAuNSA3LjksMjIuNSA3LjcsMjIuN0M3LjUsMjIuOSA3LjIsMjMgNywyM0M2LjcsMjMgNi41LDIyLjkgNi4yLDIyLjZDNS45LDIyLjIgNS45LDIxLjYgNi4zLDIxLjJDNi44LDIwLjggOCwxOS40IDgsMTguM0M4LDE3LjcgNy42LDE3LjEgNy4yLDE2LjRDNi42LDE1LjYgNiwxNC42IDYsMTMuNEM2LDExLjEgNy4zLDEwLjIgNy41LDEwLjFDNy45LDkuOSA4LjYsMTAgOC44LDEwLjRDOS4xLDEwLjkgOSwxMS41IDguNSwxMS44QzguNSwxMS44IDgsMTIuMiA4LDEzLjRDOCwxNC4xIDguNCwxNC43IDguOCwxNS4zQzkuNCwxNi4xIDEwLDE3LjEgMTAsMTguM00xMiwxMy40QzEyLDEyLjIgMTIuNSwxMS44IDEyLjUsMTEuOEMxMywxMS41IDEzLjEsMTAuOSAxMi44LDEwLjRDMTIuNSw5LjkgMTEuOSw5LjggMTEuNCwxMC4xQzExLjIsMTAuMiA5LjksMTEuMSA5LjksMTMuNEM5LjksMTQuNiAxMC41LDE1LjYgMTEuMSwxNi40QzExLjUsMTcuMSAxMS45LDE3LjcgMTEuOSwxOC4zQzExLjksMTkuNCAxMC43LDIwLjggMTAuMiwyMS4yQzkuOCwyMS42IDkuOCwyMi4yIDEwLjEsMjIuNkMxMC4zLDIyLjggMTAuNiwyMi45IDEwLjgsMjIuOUMxMS4yLDIzIDExLjUsMjIuOSAxMS43LDIyLjdDMTEuOSwyMi41IDE0LDIwLjUgMTQsMTguM0MxNCwxNy4xIDEzLjQsMTYuMSAxMi44LDE1LjNDMTIuNCwxNC42IDEyLDE0IDEyLDEzLjRNMjAsM0g0QTIsMiAwIDAsMCAyLDVWMTZBMiwyIDAgMCwwIDQsMThINVYxNkg0VjVIMjBWMTZIMTlWMThIMjBBMiwyIDAgMCwwIDIyLDE2VjVBMiwyIDAgMCwwIDIwLDNNMTYuMiwxMy41QzE2LjIsMTIuMyAxNi43LDExLjkgMTYuNywxMS45QzE3LjEsMTEuNiAxNy4zLDExIDE3LDEwLjVDMTYuNywxMC4xIDE2LjEsOS45IDE1LjYsMTAuMkMxNS40LDEwLjMgMTQuMSwxMS4yIDE0LjEsMTMuNUMxNC4xLDE0LjcgMTQuOCwxNS43IDE1LjMsMTYuNUMxNS43LDE3LjIgMTYuMSwxNy44IDE2LjEsMTguNEMxNi4xLDE5LjUgMTQuOSwyMC45IDE0LjQsMjEuM0MxNCwyMS43IDEzLjksMjIuMyAxNC4zLDIyLjdDMTQuNSwyMi45IDE0LjcsMjMgMTUsMjNDMTUuMiwyMyAxNS41LDIyLjkgMTUuOSwyMi44QzE2LjEsMjIuNiAxOC4yLDIwLjYgMTguMiwxOC40QzE4LjIsMTcuMiAxNy41LDE2LjIgMTcsMTUuNEMxNi42LDE0LjcgMTYuMiwxNC4xIDE2LjIsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJEb29yID0gXCJNMTksMTRIMTZWMTZIMTlWMTRNMjIsMjFIM1YxMUwxMSwzSDIxQTEsMSAwIDAsMSAyMiw0VjIxTTExLjgzLDVMNS44MywxMUgyMFY1SDExLjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckRvb3JMb2NrID0gXCJNMjEgM0gxMUwzIDExVjEySDQuNUM3LjUgMTIgMTAgMTQuOTEgMTAgMTguNVYyMUgyMlY0QTEgMSAwIDAgMCAyMSAzTTE5IDE2SDE2VjE0SDE5TTIwIDExSDUuODNMMTEuODMgNUgyME03IDE3VjE2LjVBMi41IDIuNSAwIDAgMCAyIDE2LjVWMTdBMSAxIDAgMCAwIDEgMThWMjJBMSAxIDAgMCAwIDIgMjNIN0ExIDEgMCAwIDAgOCAyMlYxOEExIDEgMCAwIDAgNyAxN002LjIgMTdIMi44VjE2LjVBMS43IDEuNyAwIDAgMSA2LjIgMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFbGVjdHJpYyA9IFwiTTE4LjkyIDJDMTguNzIgMS40MiAxOC4xNiAxIDE3LjUgMUg2LjVDNS44NCAxIDUuMjkgMS40MiA1LjA4IDJMMyA4VjE2QzMgMTYuNTUgMy40NSAxNyA0IDE3SDVDNS41NSAxNyA2IDE2LjU1IDYgMTZWMTVIMThWMTZDMTggMTYuNTUgMTguNDUgMTcgMTkgMTdIMjBDMjAuNTUgMTcgMjEgMTYuNTUgMjEgMTZWOEwxOC45MiAyTTYuNSAxMkM1LjY3IDEyIDUgMTEuMzMgNSAxMC41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyTTE3LjUgMTJDMTYuNjcgMTIgMTYgMTEuMzMgMTYgMTAuNVMxNi42NyA5IDE3LjUgOSAxOSA5LjY3IDE5IDEwLjUgMTguMzMgMTIgMTcuNSAxMk01IDdMNi41IDIuNUgxNy41TDE5IDdINU03IDIwSDExVjE4TDE3IDIxSDEzVjIzTDcgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyRWxlY3RyaWNPdXRsaW5lID0gXCJNMTguOTIgMkMxOC43MiAxLjQyIDE4LjE2IDEgMTcuNSAxSDYuNUM1Ljg0IDEgNS4yOSAxLjQyIDUuMDggMkwzIDhWMTZDMyAxNi41NSAzLjQ1IDE3IDQgMTdINUM1LjU1IDE3IDYgMTYuNTUgNiAxNlYxNUgxOFYxNkMxOCAxNi41NSAxOC40NSAxNyAxOSAxN0gyMEMyMC41NSAxNyAyMSAxNi41NSAyMSAxNlY4TDE4LjkyIDJNNi44NSAzSDE3LjE0TDE4LjIyIDYuMTFINS43N0w2Ljg1IDNNMTkgMTNINVY4SDE5VjEzTTcuNSA5QzguMzMgOSA5IDkuNjcgOSAxMC41UzguMzMgMTIgNy41IDEyIDYgMTEuMzMgNiAxMC41IDYuNjcgOSA3LjUgOU0xNi41IDlDMTcuMzMgOSAxOCA5LjY3IDE4IDEwLjVTMTcuMzMgMTIgMTYuNSAxMkMxNS42NyAxMiAxNSAxMS4zMyAxNSAxMC41UzE1LjY3IDkgMTYuNSA5TTcgMjBIMTFWMThMMTcgMjFIMTNWMjNMNyAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFbWVyZ2VuY3kgPSBcIk0xMSAwVjNIMTNWMEgxMU03Ljg4IDEuNDZMNi40NiAyLjg3TDguNTkgNUwxMCAzLjU4TDcuODggMS40Nk0xNi4xMiAxLjQ2TDE0IDMuNThMMTUuNDEgNUwxNy41NCAyLjg4TDE2LjEyIDEuNDZNMTIgNUEyIDIgMCAwIDAgMTAgN1Y4SDYuNUM1Ljg0IDggNS4yOCA4LjQyIDUuMDggOUwzIDE1VjIzQTEgMSAwIDAgMCA0IDI0SDVBMSAxIDAgMCAwIDYgMjNWMjJIMThWMjNBMSAxIDAgMCAwIDE5IDI0SDIwQTEgMSAwIDAgMCAyMSAyM1YxNUwxOC45MiA5QzE4LjcyIDguNDIgMTguMTYgOCAxNy41IDhIMTRWN0EyIDIgMCAwIDAgMTIgNU02LjUgOS41SDE3LjVMMTkgMTRINUw2LjUgOS41TTYuNSAxNkExLjUgMS41IDAgMCAxIDggMTcuNUExLjUgMS41IDAgMCAxIDYuNSAxOUExLjUgMS41IDAgMCAxIDUgMTcuNUExLjUgMS41IDAgMCAxIDYuNSAxNk0xNy41IDE2QTEuNSAxLjUgMCAwIDEgMTkgMTcuNUExLjUgMS41IDAgMCAxIDE3LjUgMTlBMS41IDEuNSAwIDAgMSAxNiAxNy41QTEuNSAxLjUgMCAwIDEgMTcuNSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFc3AgPSBcIk01LjMxLDZDNi45NSw0LjE2IDkuMzQsMyAxMiwzQzE0LjY2LDMgMTcuMDUsNC4xNiAxOC42OSw2SDE1LjU4QzE0LjUzLDUuMzcgMTMuMzEsNSAxMiw1QzEwLjY5LDUgOS40Nyw1LjM3IDguNDIsNkg1LjMxTTE0LjQsOS42VjhIMTEuMkExLjYsMS42IDAgMCwwIDkuNiw5LjZWMTEuMkM5LjYsMTIuMDggMTAuMzIsMTIuOCAxMS4yLDEyLjhIMTIuOFYxNC40SDkuNlYxNkgxMi44QTEuNiwxLjYgMCAwLDAgMTQuNCwxNC40VjEyLjhDMTQuNCwxMS45MiAxMy42OCwxMS4yIDEyLjgsMTEuMkgxMS4yVjkuNkgxNC40TTE4LjQsOEgxNS4yVjE2SDE2LjhWMTIuOEgxOC40QTEuNiwxLjYgMCAwLDAgMjAsMTEuMlY5LjZDMjAsOC43MiAxOS4yOCw4IDE4LjQsOE0xOC40LDExLjJIMTYuOFY5LjZIMTguNFYxMS4yTTguOCw5LjZWOEg0VjE2SDguOFYxNC40SDUuNlYxMi44SDguOFYxMS4ySDUuNlY5LjZIOC44TTE1LjU4LDE4QzE0LjUzLDE4LjYzIDEzLjMxLDE5IDEyLDE5QzEwLjY5LDE5IDkuNDcsMTguNjMgOC40MiwxOEg1LjMxQzYuOTUsMTkuODQgOS4zNCwyMSAxMiwyMUMxNC42NiwyMSAxNy4wNSwxOS44NCAxOC42OSwxOEgxNS41OE0yMC41LDMuNUwxOS40Miw0LjU4QzIxLjMyLDYuNSAyMi41LDkuMTEgMjIuNSwxMkMyMi41LDE0LjkgMjEuMzIsMTcuNSAxOS40MiwxOS40MkwyMC41LDIwLjVDMjIuNjYsMTguMzEgMjQsMTUuMzEgMjQsMTJDMjQsOC42OSAyMi42Niw1LjY5IDIwLjUsMy41TTQuNTgsNC41OEwzLjUsMy41QzEuMzQsNS42OSAwLDguNjkgMCwxMkMwLDE1LjMxIDEuMzQsMTguMzEgMy41LDIwLjVMNC41OCwxOS40MkMyLjY4LDE3LjUgMS41LDE0LjkgMS41LDEyQzEuNSw5LjExIDIuNjgsNi41IDQuNTgsNC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJFc3RhdGUgPSBcIk0zLDZIMTZMMTksMTBIMjFDMjIuMTEsMTAgMjMsMTAuODkgMjMsMTJWMTVIMjFBMywzIDAgMCwxIDE4LDE4QTMsMyAwIDAsMSAxNSwxNUg5QTMsMyAwIDAsMSA2LDE4QTMsMyAwIDAsMSAzLDE1SDFWOEMxLDYuODkgMS44OSw2IDMsNk0yLjUsNy41VjEwSDEwLjVWNy41SDIuNU0xMiw3LjVWMTBIMTcuMTRMMTUuMjUsNy41SDEyTTYsMTMuNUExLjUsMS41IDAgMCwwIDQuNSwxNUExLjUsMS41IDAgMCwwIDYsMTYuNUExLjUsMS41IDAgMCwwIDcuNSwxNUExLjUsMS41IDAgMCwwIDYsMTMuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDAgMTYuNSwxNUExLjUsMS41IDAgMCwwIDE4LDE2LjVBMS41LDEuNSAwIDAsMCAxOS41LDE1QTEuNSwxLjUgMCAwLDAgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJIYXRjaGJhY2sgPSBcIk0xNiw2SDZMMSwxMlYxNUgzQTMsMyAwIDAsMCA2LDE4QTMsMyAwIDAsMCA5LDE1SDE1QTMsMyAwIDAsMCAxOCwxOEEzLDMgMCAwLDAgMjEsMTVIMjNWMTJDMjMsMTAuODkgMjIuMTEsMTAgMjEsMTBIMTlMMTYsNk02LjUsNy41SDEwLjVWMTBINC41TDYuNSw3LjVNMTIsNy41SDE1LjVMMTcuNDYsMTBIMTJWNy41TTYsMTMuNUExLjUsMS41IDAgMCwxIDcuNSwxNUExLjUsMS41IDAgMCwxIDYsMTYuNUExLjUsMS41IDAgMCwxIDQuNSwxNUExLjUsMS41IDAgMCwxIDYsMTMuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNUExLjUsMS41IDAgMCwxIDE4LDE2LjVBMS41LDEuNSAwIDAsMSAxNi41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJJbmZvID0gXCJNMTkgMTVIMTdWMTNIMTlNMjAgMjBWMjJIMTZWMjBIMTdWMThIMTZWMTZIMTlWMjBNMTguOTIgNUExLjUgMS41IDAgMCAwIDE3LjUgNEg2LjVBMS41IDEuNSAwIDAgMCA1LjA4IDVMMyAxMVYxOUExIDEgMCAwIDAgNCAyMEg1QTEgMSAwIDAgMCA2IDE5VjE4SDExQTcgNyAwIDAgMSAxOCAxMUE2Ljg0IDYuODQgMCAwIDEgMjEgMTEuNjhWMTFNNi41IDE1QTEuNSAxLjUgMCAxIDEgOCAxMy41QTEuNSAxLjUgMCAwIDEgNi41IDE1TTUgMTBMNi41IDUuNUgxNy41TDE5IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcktleSA9IFwiTTkuNSwwQTMsMyAwIDAsMCA2LjUsM0EzLDMgMCAwLDAgOS41LDZDMTAuODEsNiAxMS45Miw1LjE3IDEyLjMzLDRIMTQuNVY2SDE2LjVWNEgxNy41VjJIMTIuMzNDMTEuOTIsMC44MyAxMC44MSwwIDkuNSwwTTkuNSwyQTEsMSAwIDAsMSAxMC41LDNBMSwxIDAgMCwxIDkuNSw0QTEsMSAwIDAsMSA4LjUsM0ExLDEgMCAwLDEgOS41LDJNNi41LDhDNS44NCw4IDUuMjgsOC40MiA1LjA4LDlMMywxNVYyM0ExLDEgMCAwLDAgNCwyNEg1QTEsMSAwIDAsMCA2LDIzVjIySDE4VjIzQTEsMSAwIDAsMCAxOSwyNEgyMEExLDEgMCAwLDAgMjEsMjNWMTVMMTguOTIsOUMxOC43Miw4LjQyIDE4LjE2LDggMTcuNSw4SDYuNU02LjUsOS41SDE3LjVMMTksMTRINUw2LjUsOS41TTYuNSwxNkExLjUsMS41IDAgMCwxIDgsMTcuNUExLjUsMS41IDAgMCwxIDYuNSwxOUExLjUsMS41IDAgMCwxIDUsMTcuNUExLjUsMS41IDAgMCwxIDYuNSwxNk0xNy41LDE2QTEuNSwxLjUgMCAwLDEgMTksMTcuNUExLjUsMS41IDAgMCwxIDE3LjUsMTlBMS41LDEuNSAwIDAsMSAxNiwxNy41QTEuNSwxLjUgMCAwLDEgMTcuNSwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJMaWZ0ZWRQaWNrdXAgPSBcIk0xOCAxNEwxOC43OSAxNC4xTDE4Ljc3IDE0LjMzTDE5LjI0IDE0LjVMMTkuMzkgMTQuMzRDMTkuODkgMTQuNiAyMC4zMiAxNSAyMC42IDE1LjVMMjAuNDMgMTUuNjdMMjAuNjMgMTYuMTJMMjAuODYgMTYuMUMyMC45NSAxNi4zOSAyMSAxNi42OSAyMSAxN0wyMC45IDE3Ljc4TDIwLjY2IDE3Ljc3TDIwLjQ3IDE4LjI0TDIwLjY2IDE4LjM5QzIwLjM5IDE4LjkgMjAgMTkuMzIgMTkuNSAxOS42TDE5LjMzIDE5LjQyTDE4Ljg3IDE5LjYyTDE4Ljg5IDE5Ljg2QzE4LjYxIDE5Ljk1IDE4LjMxIDIwIDE4IDIwTDE3LjIxIDE5LjlMMTcuMjIgMTkuNjVMMTYuNzYgMTkuNDdMMTYuNiAxOS42NkMxNi4xIDE5LjM5IDE1LjY3IDE5IDE1LjM5IDE4LjVMMTUuNTcgMTguMzJMMTUuMzcgMTcuODZMMTUuMTMgMTcuODhDMTUuMDUgMTcuNiAxNSAxNy4zMSAxNSAxN0wxNS4xMSAxNi4yTDE1LjM0IDE2LjIxTDE1LjUzIDE1Ljc1TDE1LjM1IDE1LjZDMTUuNjIgMTUuMDkgMTYgMTQuNjggMTYuNSAxNC4zOUwxNi42NyAxNC41NkwxNy4xMyAxNC4zNkwxNy4xMSAxNC4xNEMxNy4zOSAxNC4wNSAxNy42OSAxNCAxOCAxNE0xOCAxNS41QzE3LjE3IDE1LjUgMTYuNSAxNi4xNyAxNi41IDE3QzE2LjUgMTcuODMgMTcuMTcgMTguNSAxOCAxOC41QzE4LjgzIDE4LjUgMTkuNSAxNy44MyAxOS41IDE3QzE5LjUgMTYuMTcgMTguODMgMTUuNSAxOCAxNS41TTYgMTRMNi43OSAxNC4xTDYuNzcgMTQuMzNMNy4yNCAxNC41TDcuMzkgMTQuMzRDNy44OSAxNC42IDguMzIgMTUgOC42IDE1LjVMOC40MyAxNS42N0w4LjYzIDE2LjEyTDguODYgMTYuMUM4Ljk1IDE2LjM5IDkgMTYuNjkgOSAxN0w4LjkgMTcuNzhMOC42NSAxNy43N0w4LjQ3IDE4LjI0TDguNjYgMTguMzlDOC4zOSAxOC45IDggMTkuMzIgNy41IDE5LjZMNy4zMyAxOS40Mkw2Ljg3IDE5LjYyTDYuODkgMTkuODZDNi42MSAxOS45NSA2LjMxIDIwIDYgMjBMNS4yMSAxOS45TDUuMjIgMTkuNjVMNC43NiAxOS40N0w0LjYgMTkuNjZDNC4xIDE5LjM5IDMuNjcgMTkgMy4zOSAxOC41TDMuNTcgMTguMzJMMy4zNyAxNy44NkwzLjEzIDE3Ljg4QzMuMDUgMTcuNiAzIDE3LjMxIDMgMTdMMy4xMSAxNi4yTDMuMzQgMTYuMjFMMy41MyAxNS43NUwzLjM1IDE1LjZDMy42MiAxNS4wOSA0IDE0LjY4IDQuNSAxNC4zOUw0LjY3IDE0LjU2TDUuMTMgMTQuMzZMNS4xMSAxNC4xNEM1LjM5IDE0LjA1IDUuNjkgMTQgNiAxNE02IDE1LjVDNS4xNyAxNS41IDQuNSAxNi4xNyA0LjUgMTdDNC41IDE3LjgzIDUuMTcgMTguNSA2IDE4LjVDNi44MyAxOC41IDcuNSAxNy44MyA3LjUgMTdDNy41IDE2LjE3IDYuODMgMTUuNSA2IDE1LjVNMTYgNkwxOSAxMEgyMUMyMi4xMSAxMCAyMyAxMC44OSAyMyAxMlYxNUgyMUMyMSAxMy4zNCAxOS42NiAxMiAxOCAxMkMxNi4zNCAxMiAxNSAxMy4zNCAxNSAxNUg5QzkgMTMuMzQgNy42NiAxMiA2IDEyQzQuMzQgMTIgMyAxMy4zNCAzIDE1SDFWMTBIMTAuNVY2TDE2IDZNMTIgNy41VjEwSDE3LjQ2TDE1LjUgNy41SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhckxpZ2h0RGltbWVkID0gXCJNMTMsNC44QzksNC44IDksMTkuMiAxMywxOS4yQzE3LDE5LjIgMjIsMTYuNSAyMiwxMkMyMiw3LjUgMTcsNC44IDEzLDQuOE0xMy4xLDE3LjJDMTIuNywxNi44IDEyLDE1IDEyLDEyQzEyLDkgMTIuNyw3LjIgMTMuMSw2LjhDMTYsNi45IDIwLDguNyAyMCwxMkMyMCwxNS4zIDE1LjksMTcuMSAxMy4xLDE3LjJNOCwxMC41QzgsMTEgNy45LDExLjUgNy45LDEyQzcuOSwxMi4yIDcuOSwxMi40IDcuOSwxMi42TDIuNCwxNEwxLjksMTIuMUw4LDEwLjVNMiw3TDkuNCw1LjFDOS4yLDUuNCA5LDUuOCA4LjksNi4zQzguOCw2LjYgOC43LDcgOC42LDcuNEwyLjUsOC45TDIsN004LjIsMTUuNUM4LjMsMTYuMiA4LjUsMTYuOSA4LjcsMTcuNEwyLjQsMTlMMS45LDE3LjFMOC4yLDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyTGlnaHRGb2cgPSBcIk0xMyw0LjhDOSw0LjggOSwxOS4yIDEzLDE5LjJDMTcsMTkuMiAyMiwxNi41IDIyLDEyQzIyLDcuNSAxNyw0LjggMTMsNC44TTEzLjEsMTcuMkMxMi43LDE2LjggMTIsMTUgMTIsMTJDMTIsOSAxMi43LDcuMiAxMy4xLDYuOEMxNiw2LjkgMjAsOC43IDIwLDEyQzIwLDE1LjMgMTYsMTcuMSAxMy4xLDE3LjJNNiw4VjExSDhDOCwxMS4zIDgsMTEuNyA4LDEyQzgsMTIuMyA4LDEyLjcgOCwxM0g2VjE2SDguNEM4LjYsMTYuNyA4LjgsMTcuNCA5LDE4SDZWMjFINFYxOEgyVjE2SDRWMTNIMlYxMUg0VjhIMlY2SDRWM0g2VjZIOUM5LDYuMSA4LjksNi4yIDguOSw2LjRDOC43LDYuOSA4LjUsNy40IDguNCw4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyTGlnaHRIaWdoID0gXCJNMTMsNC44QzksNC44IDksMTkuMiAxMywxOS4yQzE3LDE5LjIgMjIsMTYuNSAyMiwxMkMyMiw3LjUgMTcsNC44IDEzLDQuOE0xMy4xLDE3LjJDMTIuNywxNi44IDEyLDE1IDEyLDEyQzEyLDkgMTIuNyw3LjIgMTMuMSw2LjhDMTYsNi45IDIwLDguNyAyMCwxMkMyMCwxNS4zIDE2LDE3LjEgMTMuMSwxNy4yTTIsNUg5LjVDOS4zLDUuNCA5LDUuOCA4LjksNi40QzguOCw2LjYgOC44LDYuOCA4LjcsN0gyVjVNOCwxMUgyVjlIOC4yQzguMSw5LjYgOC4xLDEwLjMgOCwxMU04LjcsMTdDOC45LDE3LjggOS4yLDE4LjQgOS42LDE5SDIuMVYxN0g4LjdNOC4yLDE1SDJWMTNIOEM4LjEsMTMuNyA4LjEsMTQuNCA4LjIsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyTGltb3VzaW5lID0gXCJNMSw2TDIuNSw3LjVMMSw5TDIuNSwxMC41TDEsMTJMMi41LDEzLjVMMSwxNUgxNUEzLDMgMCAwLDAgMTgsMThBMywzIDAgMCwwIDIxLDE1SDIzVjEyQzIzLDEwLjg5IDIyLjExLDEwIDIxLDEwSDE5TDE2LDZIMU00LjYyLDcuNUgxMC41VjEwSDQuMTJMMy4xMiw5TDQuNjIsNy41TTEyLDcuNUgxNS41TDE3LjQ2LDEwSDEyVjcuNU0xOCwxMy41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNUExLjUsMS41IDAgMCwxIDE4LDE2LjVBMS41LDEuNSAwIDAsMSAxNi41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJNdWx0aXBsZSA9IFwiTTgsMTFMOS41LDYuNUgxOC41TDIwLDExTTE4LjUsMTZBMS41LDEuNSAwIDAsMSAxNywxNC41QTEuNSwxLjUgMCAwLDEgMTguNSwxM0ExLjUsMS41IDAgMCwxIDIwLDE0LjVBMS41LDEuNSAwIDAsMSAxOC41LDE2TTkuNSwxNkExLjUsMS41IDAgMCwxIDgsMTQuNUExLjUsMS41IDAgMCwxIDkuNSwxM0ExLjUsMS41IDAgMCwxIDExLDE0LjVBMS41LDEuNSAwIDAsMSA5LjUsMTZNMTkuOTIsNkMxOS43MSw1LjQgMTkuMTQsNSAxOC41LDVIOS41QzguODYsNSA4LjI5LDUuNCA4LjA4LDZMNiwxMlYyMEExLDEgMCAwLDAgNywyMUg4QTEsMSAwIDAsMCA5LDIwVjE5SDE5VjIwQTEsMSAwIDAsMCAyMCwyMUgyMUExLDEgMCAwLDAgMjIsMjBWMTJMMTkuOTIsNk0xNC45MiwzQzE0LjcxLDIuNCAxNC4xNCwyIDEzLjUsMkg0LjVDMy44NiwyIDMuMjksMi40IDMuMDgsM0wxLDlWMTdBMSwxIDAgMCwwIDIsMThIM0ExLDEgMCAwLDAgNCwxN1YxMi45MUMzLjIyLDEyLjYzIDIuODIsMTEuNzcgMy4xLDExQzMuMzIsMTAuNCAzLjg3LDEwIDQuNSwxMEg0LjU3TDUuMjcsOEgzTDQuNSwzLjVIMTUuMDlMMTQuOTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJPZmYgPSBcIk0yMC41LDE5Ljg1TDYuNDEsNS43NkwyLjQxLDEuNzZMMS4xMSwzTDQuNTcsNi40NkwzLDExVjE5QTEsMSAwIDAsMCA0LDIwSDVBMSwxIDAgMCwwIDYsMTlWMThIMTYuMTFMMjAuODQsMjIuNzNMMjIuMTEsMjEuNDZMMjAuNSwxOS44NU02LjUsMTVBMS41LDEuNSAwIDAsMSA1LDEzLjVBMS41LDEuNSAwIDAsMSA2LjUsMTJBMS41LDEuNSAwIDAsMSA4LDEzLjVBMS41LDEuNSAwIDAsMSA2LjUsMTVNNSwxMEw1Ljc4LDcuNjdMOC4xMSwxMEg1TTE3LjUsNS41TDE5LDEwSDEzLjJMMTYuMTIsMTIuOTJDMTYuNSwxMi4xNyAxNy4zNywxMS44NiAxOC4xMiwxMi4yMUMxOC44NywxMi41NyAxOS4xOCwxMy40NyAxOC44MywxNC4yMUMxOC42OCwxNC41IDE4LjQzLDE0Ljc3IDE4LjEyLDE0LjkyTDIxLDE3LjhWMTFMMTguOTIsNUMxOC43MSw0LjQgMTguMTQsNCAxNy41LDRINy4yTDguNyw1LjVIMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJPdXRsaW5lID0gXCJNMTguOSA2QzE4LjcgNS40IDE4LjEgNSAxNy41IDVINi41QzUuOCA1IDUuMyA1LjQgNS4xIDZMMyAxMlYyMEMzIDIwLjUgMy41IDIxIDQgMjFINUM1LjYgMjEgNiAyMC41IDYgMjBWMTlIMThWMjBDMTggMjAuNSAxOC41IDIxIDE5IDIxSDIwQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxMkwxOC45IDZNNi44IDdIMTcuMUwxOC4yIDEwSDUuOEw2LjggN00xOSAxN0g1VjEySDE5VjE3TTcuNSAxM0M4LjMgMTMgOSAxMy43IDkgMTQuNVM4LjMgMTYgNy41IDE2IDYgMTUuMyA2IDE0LjUgNi43IDEzIDcuNSAxM00xNi41IDEzQzE3LjMgMTMgMTggMTMuNyAxOCAxNC41UzE3LjMgMTYgMTYuNSAxNkMxNS43IDE2IDE1IDE1LjMgMTUgMTQuNVMxNS43IDEzIDE2LjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyUGFya2luZ0xpZ2h0cyA9IFwiTTcuMyw5LjJDOC4xLDkuNiA5LDEwLjUgOSwxMkM5LDEzLjUgOC4xLDE0LjQgNy4zLDE0LjhDNi45LDEzLjQgNi45LDEwLjYgNy4zLDkuMk02LjUsN0M0LjUsNyA0LjUsMTcgNi41LDE3QzguNSwxNyAxMSwxNS4xIDExLDEyQzExLDguOSA4LjUsNyA2LjUsN00xNi43LDkuMkMxNywxMC42IDE3LDEzLjQgMTYuNywxNC44QzE1LjksMTQuNCAxNSwxMy41IDE1LDEyQzE1LDEwLjUgMTUuOSw5LjYgMTYuNyw5LjJNMTcuNSw3QzE1LjUsNyAxMyw4LjkgMTMsMTJDMTMsMTUuMSAxNS41LDE3IDE3LjUsMTdDMTkuNSwxNyAxOS41LDcgMTcuNSw3TTQuOSw2LjJMMi41LDQuNkwxLjQsNi4zTDQsOEM0LjIsNy4zIDQuNSw2LjYgNC45LDYuMk0yMCw4TDIyLjYsNi4zTDIxLjUsNC42TDE5LjEsNi4yQzE5LjQsNi42IDE5LjgsNy4yIDIwLDhNNCwxNkwxLjQsMTcuN0wyLjUsMTkuNEw0LjksMTcuOEM0LjYsMTcuNCA0LjIsMTYuOCA0LDE2TTIwLjUsMTFDMjAuNSwxMS4zIDIwLjUsMTEuNyAyMC41LDEyQzIwLjUsMTIuMyAyMC41LDEyLjYgMjAuNSwxM0gyNFYxMUgyMC41TTE5LjEsMTcuOEwyMS41LDE5LjRMMjIuNiwxNy43TDIwLDE2QzE5LjgsMTYuNyAxOS41LDE3LjQgMTkuMSwxNy44TTMuNSwxMkMzLjUsMTEuNyAzLjUsMTEuNCAzLjUsMTFIMFYxM0gzLjVDMy41LDEyLjcgMy41LDEyLjMgMy41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhclBpY2t1cCA9IFwiTTE2LDZIMTAuNVYxMEgxVjE1SDNBMywzIDAgMCwwIDYsMThBMywzIDAgMCwwIDksMTVIMTVBMywzIDAgMCwwIDE4LDE4QTMsMyAwIDAsMCAyMSwxNUgyM1YxMkMyMywxMC44OSAyMi4xMSwxMCAyMSwxMEgxOUwxNiw2TTEyLDcuNUgxNS41TDE3LjQ2LDEwSDEyVjcuNU02LDEzLjVBMS41LDEuNSAwIDAsMSA3LjUsMTVBMS41LDEuNSAwIDAsMSA2LDE2LjVBMS41LDEuNSAwIDAsMSA0LjUsMTVBMS41LDEuNSAwIDAsMSA2LDEzLjVNMTgsMTMuNUExLjUsMS41IDAgMCwxIDE5LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxNi41QTEuNSwxLjUgMCAwLDEgMTYuNSwxNUExLjUsMS41IDAgMCwxIDE4LDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2VhdCA9IFwiTTcgMThDNyAxOCA0IDEwIDQgNlM2IDIgNiAySDdDNyAyIDggMiA4IDNTNyA0IDcgNiAxMCAxMCAxMCAxMyA3IDE4IDcgMThNMTIgMTdDMTEgMTcgOCAxOS41IDggMTkuNUM3LjcgMTkuNyA3LjggMjAgOCAyMC4zQzggMjAuMyA5IDIyLjEgMTEgMjIuMUgxN0MxOC4xIDIyLjEgMTkgMjEuMiAxOSAyMC4xVjE5LjFDMTkgMTggMTguMSAxNy4xIDE3IDE3LjFIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2VhdENvb2xlciA9IFwiTTIwLjggMTAuMkwxOS40IDEwLjZMMTguMiA5LjlWOC4yTDE5LjQgNy41TDIwLjggNy45TDIxLjEgNi44TDIwIDYuNUwyMC4zIDUuNEwxOS4yIDUuMUwxOC44IDYuNUwxNy42IDcuMkwxNi4xIDYuM1Y1TDE3LjEgNEwxNi4zIDMuMkwxNS41IDRMMTQuNyAzLjJMMTMuOSA0TDE0LjkgNVY2LjNMMTMuNCA3LjJMMTIuMiA2LjVMMTEuOSA1LjFMMTAuOCA1LjRMMTEuMSA2LjVMMTAgNi43TDEwLjMgNy44TDExLjcgNy40TDEyLjkgOC4xVjkuOEwxMS43IDEwLjVMMTAuMyAxMC4xTDEwIDExLjRMMTEuMSAxMS43TDEwLjggMTIuN0wxMS45IDEzTDEyLjMgMTEuNkwxMy41IDEwLjlMMTUgMTEuOFYxMy4xTDE0IDE0LjFMMTQuOCAxNC45TDE1LjYgMTQuMUwxNi40IDE0LjlMMTcuMiAxNC4xTDE2LjIgMTMuMVYxMS44TDE3LjcgMTAuOUwxOC45IDExLjZMMTkuMyAxM0wyMC40IDEyLjdMMjAgMTEuNkwyMS4xIDExLjNMMjAuOCAxMC4yTTE0IDguMkwxNS41IDcuM0wxNyA4LjJWOS45TDE1LjUgMTAuOEwxNCA5LjlWOC4yTTUgMThDNSAxOCAyIDEwIDIgNlM0IDIgNCAySDVDNSAyIDYgMiA2IDNTNSA0IDUgNiA4IDEwIDggMTMgNSAxOCA1IDE4TTE1IDE3QzE2LjEgMTcgMTcgMTcuOSAxNyAxOVYyMEMxNyAyMS4xIDE2LjEgMjIgMTUgMjJIOUM3IDIyIDYgMjAuMiA2IDIwLjJDNS44IDIwIDUuNyAxOS42IDYgMTkuNEM2IDE5LjQgOSAxNi45IDEwIDE2LjlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2VhdEhlYXRlciA9IFwiTTUgMThDNSAxOCAyIDEwIDIgNlM0IDIgNCAySDVDNSAyIDYgMiA2IDNTNSA0IDUgNiA4IDEwIDggMTMgNSAxOCA1IDE4TTE1IDE3QzE2LjEgMTcgMTcgMTcuOSAxNyAxOVYyMEMxNyAyMS4xIDE2LjEgMjIgMTUgMjJIOUM3IDIyIDYgMjAuMiA2IDIwLjJDNS44IDIwIDUuNyAxOS42IDYgMTkuNEM2IDE5LjQgOSAxNi45IDEwIDE2LjlIMTVNMTMuNyAzLjRMMTIuMyA2LjhMMTMuNyAxMC4yTDExLjcgMTVMMTAgMTMuNkwxMS40IDEwLjJMMTAgNi44TDEyIDJMMTMuNyAzLjRNMTcuOSAzLjRMMTYuNSA2LjhMMTcuOSAxMC4yTDE1LjkgMTVMMTQuMiAxMy42TDE1LjYgMTAuMkwxNC4yIDYuOEwxNi4yIDJMMTcuOSAzLjRNMjIgMy40TDIwLjYgNi44TDIyIDEwLjJMMjAgMTVMMTguMyAxMy42TDE5LjcgMTAuMkwxOC4zIDYuOEwyMC4zIDJMMjIgMy40XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyU2V0dGluZ3MgPSBcIk0xNSAyMkgxN1YyNEgxNU0xMSAyMkgxM1YyNEgxMU03IDIySDlWMjRIN001IDExTDYuNSA2LjVIMTcuNUwxOSAxMU0xNy41IDE2QTEuNSAxLjUgMCAwIDEgMTYgMTQuNUExLjUgMS41IDAgMCAxIDE3LjUgMTNBMS41IDEuNSAwIDAgMSAxOSAxNC41QTEuNSAxLjUgMCAwIDEgMTcuNSAxNk02LjUgMTZBMS41IDEuNSAwIDAgMSA1IDE0LjVBMS41IDEuNSAwIDAgMSA2LjUgMTNBMS41IDEuNSAwIDAgMSA4IDE0LjVBMS41IDEuNSAwIDAgMSA2LjUgMTZNMTguOTIgNkMxOC43MiA1LjQyIDE4LjE2IDUgMTcuNSA1SDYuNUM1Ljg0IDUgNS4yOCA1LjQyIDUuMDggNkwzIDEyVjIwQTEgMSAwIDAgMCA0IDIxSDVBMSAxIDAgMCAwIDYgMjBWMTlIMThWMjBBMSAxIDAgMCAwIDE5IDIxSDIwQTEgMSAwIDAgMCAyMSAyMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJTaGlmdFBhdHRlcm4gPSBcIk04IDVINFYySDhWNU00IDIySDhWMTlINFYyMk0xNCAySDEwVjVIMTRWMk0xMCAyMkgxNFYxOUgxMFYyMk0xNiAyVjVIMjBWMkgxNk0xNyAxMUgxM1Y3SDExVjExSDdWN0g1VjE3SDdWMTNIMTFWMTdIMTNWMTNIMTlWN0gxN1YxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJTaWRlID0gXCJNMTYsNkwxOSwxMEgyMUMyMi4xMSwxMCAyMywxMC44OSAyMywxMlYxNUgyMUEzLDMgMCAwLDEgMTgsMThBMywzIDAgMCwxIDE1LDE1SDlBMywzIDAgMCwxIDYsMThBMywzIDAgMCwxIDMsMTVIMVYxMkMxLDEwLjg5IDEuODksMTAgMywxMEw2LDZIMTZNMTAuNSw3LjVINi43NUw0Ljg2LDEwSDEwLjVWNy41TTEyLDcuNVYxMEgxNy4xNEwxNS4yNSw3LjVIMTJNNiwxMy41QTEuNSwxLjUgMCAwLDAgNC41LDE1QTEuNSwxLjUgMCAwLDAgNiwxNi41QTEuNSwxLjUgMCAwLDAgNy41LDE1QTEuNSwxLjUgMCAwLDAgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMCAxNi41LDE1QTEuNSwxLjUgMCAwLDAgMTgsMTYuNUExLjUsMS41IDAgMCwwIDE5LjUsMTVBMS41LDEuNSAwIDAsMCAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhclNwb3J0cyA9IFwiTTEyLDguNUg3TDQsMTFIM0MxLjg5LDExIDEsMTEuODkgMSwxM1YxNkgzLjE3QzMuNiwxNy4yIDQuNzMsMTggNiwxOEM3LjI3LDE4IDguNCwxNy4yIDguODIsMTZIMTUuMTdDMTUuNiwxNy4yIDE2LjczLDE4IDE4LDE4QzE5LjI3LDE4IDIwLjQsMTcuMiAyMC44MiwxNkgyM1YxNUMyMywxMy44OSAyMS45NywxMy41MyAyMSwxM0wxMiw4LjVNNS4yNSwxMkw3LjUsMTBIMTEuNUwxNS41LDEySDUuMjVNNiwxMy41QTEuNSwxLjUgMCAwLDEgNy41LDE1QTEuNSwxLjUgMCAwLDEgNiwxNi41QTEuNSwxLjUgMCAwLDEgNC41LDE1QTEuNSwxLjUgMCAwLDEgNiwxMy41TTE4LDEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDE1QTEuNSwxLjUgMCAwLDEgMTgsMTYuNUExLjUsMS41IDAgMCwxIDE2LjUsMTVBMS41LDEuNSAwIDAsMSAxOCwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhclRpcmVBbGVydCA9IFwiTTExLDEzSDEzVjE1SDExVjEzTTExLDVIMTNWMTFIMTFWNU0xNyw0Ljc2QzE4Ljg2LDYuMTkgMjAsOC42MSAyMCwxMUMyMCwxNCAxOC4zMywxNi42NCAxNS44NiwxOEg4LjE0QzUuNjcsMTYuNjQgNCwxNCA0LDExQzQsOC42MSA1LjA5LDYuMTcgNyw0Ljc2VjJINVYzLjg2QzMuMTUsNS42OCAyLDguMiAyLDExQzIsMTMuOCAzLjE1LDE2LjMyIDUsMTguMTRWMjJIN1YyMEg5VjIySDExVjIwSDEzVjIySDE1VjIwSDE3VjIySDE5VjE4LjE0QzIwLjg1LDE2LjMyIDIyLDEzLjggMjIsMTFDMjIsOC4yIDIwLjg1LDUuNjggMTksMy44NlYySDE3VjQuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyVHJhY3Rpb25Db250cm9sID0gXCJNOS41LDExSDEwLjVDMTAuOCwxMSAxMSwxMC44IDExLDEwLjVWOUgxOVYxMC41QzE5LDEwLjggMTkuMiwxMSAxOS41LDExSDIwLjVDMjAuOCwxMSAyMSwxMC44IDIxLDEwLjVWOUwyMSw4LjVWNkwxOS42LDEuN0MxOS41LDEuMyAxOS4xLDEgMTguNywxSDExLjRDMTEsMSAxMC42LDEuMyAxMC41LDEuN0w5LDZWOC41TDksOVYxMC41QzksMTAuOCA5LjIsMTEgOS41LDExTTExLjMsMkgxOC42TDE5LjUsNUgxMC40TDExLjMsMk0xMiwyM0gxMEMxMCwyMi4yIDguMSwyMS41IDYuNiwyMC45QzQuNSwyMC4xIDIsMTkuMiAyLDE3QzIsMTQuNyA0LjMsMTQuMSA2LjIsMTMuNUM3LjksMTMuMSA5LDEyLjcgOSwxMkgxMUMxMSwxNC4zIDguNywxNC45IDYuOCwxNS41QzUuMSwxNS45IDQsMTYuMyA0LDE3QzQsMTcuOCA1LjksMTguNSA3LjQsMTkuMUM5LjUsMTkuOSAxMiwyMC44IDEyLDIzTTIyLDIzSDIwQzIwLDIyLjIgMTguMSwyMS41IDE2LjYsMjAuOUMxNC41LDIwLjEgMTIsMTkuMiAxMiwxN0MxMiwxNC43IDE0LjMsMTQuMSAxNi4yLDEzLjVDMTcuOCwxMyAxOSwxMi43IDE5LDEySDIxQzIxLDE0LjMgMTguNywxNC45IDE2LjgsMTUuNUMxNS4yLDE1LjkgMTQsMTYuMyAxNCwxN0MxNCwxNy44IDE1LjksMTguNSAxNy40LDE5LjFDMTkuNSwxOS45IDIyLDIwLjggMjIsMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyVHVyYm9jaGFyZ2VyID0gXCJNMjIgMTNWMTVIMTguMzJDMTguNzUgMTQuMDkgMTkgMTMuMDggMTkgMTJDMTkgOC4xNCAxNS44NiA1IDEyIDVIMlYzSDEyQzE2Ljk3IDMgMjEgNy4wMyAyMSAxMkMyMSAxMi4zNCAyMC45NyAxMi42NyAyMC45NCAxM0gyMk0xMiAxOUM4LjE0IDE5IDUgMTUuODYgNSAxMkM1IDEwLjkzIDUuMjUgOS45MSA1LjY5IDlIMlYxMUgzLjA2QzMuMDMgMTEuMzMgMyAxMS42NiAzIDEyQzMgMTYuOTcgNy4wMyAyMSAxMiAyMUgyMlYxOUgxMk0xNi44NiAxMi4yQzE1LjkzIDEyLjk0IDE0LjcyIDEyLjQ3IDE0IDEyLjA1VjEyQzE2Ljc5IDEwLjMxIDE1LjM5IDcuODkgMTUuMzkgNy44OVMxNC4zMyA2LjA0IDE0LjYxIDcuODlDMTQuNzggOS4wNyAxMy43NiA5Ljg4IDEzLjA0IDEwLjNMMTMgMTAuMjhDMTIuOTMgNyAxMC4xMyA3IDEwLjEzIDdTOCA3IDkuNzQgNy42OUMxMC44NSA4LjEzIDExLjA0IDkuNDIgMTEuMDUgMTAuMjVMMTEgMTAuMjhDOC4xNCA4LjcgNi43NCAxMS4xMiA2Ljc0IDExLjEyUzUuNjcgMTIuOTcgNy4xNCAxMS44QzguMDcgMTEuMDcgOS4yOCAxMS41NCAxMCAxMS45NVYxMkM3LjIxIDEzLjcgOC42MSAxNi4xMiA4LjYxIDE2LjEyUzkuNjcgMTcuOTcgOS40IDE2LjExQzkuMjIgMTQuOTQgMTAuMjUgMTQuMTMgMTAuOTcgMTMuN0wxMSAxMy43M0MxMS4wNyAxNyAxMy44NyAxNyAxMy44NyAxN1MxNiAxNyAxNC4yNiAxNi4zMUMxMy4xNSAxNS44NyAxMi45NiAxNC41OCAxMi45NSAxMy43NUwxMyAxMy43M0MxNS44NiAxNS4zMSAxNy4yNiAxMi44OCAxNy4yNiAxMi44OFMxOC4zMyAxMS4wNCAxNi44NiAxMi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcldhc2ggPSBcIk01LDEzTDYuNSw4LjVIMTcuNUwxOSwxM00xNy41LDE4QTEuNSwxLjUgMCAwLDEgMTYsMTYuNUExLjUsMS41IDAgMCwxIDE3LjUsMTVBMS41LDEuNSAwIDAsMSAxOSwxNi41QTEuNSwxLjUgMCAwLDEgMTcuNSwxOE02LjUsMThBMS41LDEuNSAwIDAsMSA1LDE2LjVBMS41LDEuNSAwIDAsMSA2LjUsMTVBMS41LDEuNSAwIDAsMSA4LDE2LjVBMS41LDEuNSAwIDAsMSA2LjUsMThNMTguOTIsOEMxOC43Miw3LjQyIDE4LjE2LDcgMTcuNSw3SDYuNUM1Ljg0LDcgNS4yOCw3LjQyIDUuMDgsOEwzLDE0VjIyQTEsMSAwIDAsMCA0LDIzSDVBMSwxIDAgMCwwIDYsMjJWMjFIMThWMjJBMSwxIDAgMCwwIDE5LDIzSDIwQTEsMSAwIDAsMCAyMSwyMlYxNE03LDVBMS41LDEuNSAwIDAsMCA4LjUsMy41QzguNSwyLjUgNywwLjggNywwLjhDNywwLjggNS41LDIuNSA1LjUsMy41QTEuNSwxLjUgMCAwLDAgNyw1TTEyLDVBMS41LDEuNSAwIDAsMCAxMy41LDMuNUMxMy41LDIuNSAxMiwwLjggMTIsMC44QzEyLDAuOCAxMC41LDIuNSAxMC41LDMuNUExLjUsMS41IDAgMCwwIDEyLDVNMTcsNUExLjUsMS41IDAgMCwwIDE4LjUsMy41QzE4LjUsMi41IDE3LDAuOCAxNywwLjhDMTcsMC44IDE1LjUsMi41IDE1LjUsMy41QTEuNSwxLjUgMCAwLDAgMTcsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJXaW5kc2hpZWxkID0gXCJNMjIuNjMgMTUuNUwyMC4yMSA1Ljg1QTEgMSAwIDAgMCAxOS4xNCA1LjFDMTcuOCA1LjI0IDE0LjE0IDUuNSAxMiA1LjVTNi4yIDUuMjQgNC44NiA1LjFBMSAxIDAgMCAwIDMuNzkgNS44NUwxLjM3IDE1LjVBMS41IDEuNSAwIDAgMCAyLjU1IDE3LjM2QTYxLjUgNjEuNSAwIDAgMCAxMiAxOEE2MS41IDYxLjUgMCAwIDAgMjEuNDUgMTcuMzZBMS41IDEuNSAwIDAgMCAyMi42MyAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcldpbmRzaGllbGRPdXRsaW5lID0gXCJNMjIuNjMgMTUuNUwyMC4yMSA1Ljg1QTEgMSAwIDAgMCAxOS4xNCA1LjFDMTcuOCA1LjI0IDE0LjE0IDUuNSAxMiA1LjVTNi4yIDUuMjQgNC44NiA1LjFBMSAxIDAgMCAwIDMuNzkgNS44NUwxLjM3IDE1LjVBMS41IDEuNSAwIDAgMCAyLjU1IDE3LjM2QTYxLjUgNjEuNSAwIDAgMCAxMiAxOEE2MS41IDYxLjUgMCAwIDAgMjEuNDUgMTcuMzZBMS41IDEuNSAwIDAgMCAyMi42MyAxNS41TTEyIDE2QTYzLjMzIDYzLjMzIDAgMCAxIDMuNDQgMTUuNUw1LjUgNy4xOEM3IDcuMzIgMTAuMTYgNy41IDEyIDcuNVMxNyA3LjMyIDE4LjUgNy4xOEwyMC41NiAxNS41QTYzLjMzIDYzLjMzIDAgMCAxIDEyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmFiaW5lciA9IFwiTTggMTcuNUM4IDE4LjMzIDcuMzMgMTkgNi41IDE5UzUgMTguMzMgNSAxNy41IDUuNjcgMTYgNi41IDE2IDggMTYuNjcgOCAxNy41TTE4IDUuNTlDMTcuNzkgMy41NCAxNi4xOCAyIDE0LjI0IDJIOC44OEM2Ljk1IDIgNS4zNiAzLjUgNS4xNSA1LjUzTDUgNi41OUM0LjkyIDcuMzQgNS41IDggNi4yNCA4QzYuODcgOCA3LjM5IDcuNTMgNy40NyA2LjkxTDcuNjEgNS44MkM3LjY4IDUuMDcgOC4yMyA0LjUgOC44OCA0LjVIMTQuMjRDMTQuODkgNC41IDE1LjQ0IDUuMDcgMTUuNSA1LjgyTDE2LjUgMTYuODhDMTYuNTkgMTcuNzQgMTYgMTguNSAxNS4yNSAxOC41TDEwLjA0IDE3LjgyQzkuOTUgMTguNzcgOS41IDE5LjYgOC44IDIwLjE4TDE0LjkzIDIxTDE1LjA5IDIxSDE1LjI1QzE2LjI3IDIxIDE3LjI2IDIwLjU2IDE3Ljk2IDE5Ljc4QzE4LjcxIDE4Ljk0IDE5LjA5IDE3LjggMTkgMTYuNjVMMTggNS41OU0xMS42NiA3Ljk0QzExLjA4IDcuNTcgMTAuMzEgNy43NSA5Ljk0IDguMzRMNi4zOSAxNEM2LjQzIDE0IDYuNDYgMTQgNi41IDE0QzcuMzggMTQgOC4xOCAxNC4zNCA4LjggMTQuODhMMTIuMDYgOS42NkMxMi40MyA5LjA4IDEyLjI1IDguMzEgMTEuNjYgNy45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJhdmFuID0gXCJNNSw3QTIsMiAwIDAsMCAzLDlWMTVBMiwyIDAgMCwwIDUsMTdIN0EzLDMgMCAwLDAgMTAsMjBBMywzIDAgMCwwIDEzLDE3SDIxVjE1SDE5VjlBMiwyIDAgMCwwIDE3LDdINU01LDlIMTBWMTJINVY5TTEzLDlIMTdWMTJIMTNWOU0xMCwxNkExLDEgMCAwLDEgMTEsMTdBMSwxIDAgMCwxIDEwLDE4QTEsMSAwIDAsMSA5LDE3QTEsMSAwIDAsMSAxMCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkID0gXCJNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50RGV0YWlscyA9IFwiTTIsM0gyMkMyMy4wNSwzIDI0LDMuOTUgMjQsNVYxOUMyNCwyMC4wNSAyMy4wNSwyMSAyMiwyMUgyQzAuOTUsMjEgMCwyMC4wNSAwLDE5VjVDMCwzLjk1IDAuOTUsMyAyLDNNMTQsNlY3SDIyVjZIMTRNMTQsOFY5SDIxLjVMMjIsOVY4SDE0TTE0LDEwVjExSDIxVjEwSDE0TTgsMTMuOTFDNiwxMy45MSAyLDE1IDIsMTdWMThIMTRWMTdDMTQsMTUgMTAsMTMuOTEgOCwxMy45MU04LDZBMywzIDAgMCwwIDUsOUEzLDMgMCAwLDAgOCwxMkEzLDMgMCAwLDAgMTEsOUEzLDMgMCAwLDAgOCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50RGV0YWlsc091dGxpbmUgPSBcIk0yMiwzSDJDMC45MSwzLjA0IDAuMDQsMy45MSAwLDVWMTlDMC4wNCwyMC4wOSAwLjkxLDIwLjk2IDIsMjFIMjJDMjMuMDksMjAuOTYgMjMuOTYsMjAuMDkgMjQsMTlWNUMyMy45NiwzLjkxIDIzLjA5LDMuMDQgMjIsM00yMiwxOUgyVjVIMjJWMTlNMTQsMTdWMTUuNzVDMTQsMTQuMDkgMTAuNjYsMTMuMjUgOSwxMy4yNUM3LjM0LDEzLjI1IDQsMTQuMDkgNCwxNS43NVYxN0gxNE05LDdBMi41LDIuNSAwIDAsMCA2LjUsOS41QTIuNSwyLjUgMCAwLDAgOSwxMkEyLjUsMi41IDAgMCwwIDExLjUsOS41QTIuNSwyLjUgMCAwLDAgOSw3TTE0LDdWOEgyMFY3SDE0TTE0LDlWMTBIMjBWOUgxNE0xNCwxMVYxMkgxOFYxMUgxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50RGV0YWlsc1N0YXIgPSBcIk0yMCAyMi4wOUwyMi40NSAyMy41OEwyMS44IDIwLjc3TDI0IDE4Ljg5TDIxLjExIDE4LjY0TDIwIDE2TDE4Ljg3IDE4LjY0TDE2IDE4Ljg5TDE4LjE4IDIwLjc3TDE3LjUgMjMuNThMMjAgMjIuMDlNMTQuMDggMjFIMkMuOTUgMjEgMCAyMC4wNSAwIDE5VjVDMCAzLjk1IC45NSAzIDIgM0gyMkMyMy4wNSAzIDI0IDMuOTUgMjQgNVYxNS41M0MyMi45NCAxNC41OCAyMS41NCAxNCAyMCAxNEMxNi42OSAxNCAxNCAxNi42OSAxNCAyMEMxNCAyMC4zNCAxNC4wMyAyMC42OCAxNC4wOCAyMU04IDEzLjkxQzYgMTMuOTEgMiAxNSAyIDE3VjE4SDE0VjE3QzE0IDE1IDEwIDEzLjkxIDggMTMuOTFNOCA2QzYuMzUgNiA1IDcuMzUgNSA5QzUgMTAuNjUgNi4zNSAxMiA4IDEyQzkuNjUgMTIgMTEgMTAuNjUgMTEgOUMxMSA3LjM1IDkuNjUgNiA4IDZNMjEgMTBIMTRWMTFIMjFWMTBNMjIgOEgxNFY5SDIyVjhNMjIgNkgxNFY3SDIyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZEFjY291bnREZXRhaWxzU3Rhck91dGxpbmUgPSBcIk0yMCAyMi4wOUwyMi40NSAyMy41OEwyMS44IDIwLjc3TDI0IDE4Ljg5TDIxLjExIDE4LjY0TDIwIDE2TDE4Ljg3IDE4LjY0TDE2IDE4Ljg5TDE4LjE4IDIwLjc3TDE3LjUgMjMuNThMMjAgMjIuMDlNMTQuMDggMjFIMkMuOTEgMjAuOTYgLjA0IDIwLjA5IDAgMTlWNUMuMDQgMy45MSAuOTEgMy4wNCAyIDNIMjJDMjMuMDkgMy4wNCAyMy45NiAzLjkxIDI0IDVWMTUuNTNDMjMuNDIgMTUgMjIuNzUgMTQuNjEgMjIgMTQuMzRWNUgyVjE5SDE0LjA4QzE0LjAzIDE5LjMzIDE0IDE5LjY2IDE0IDIwQzE0IDIwLjM0IDE0LjAzIDIwLjY4IDE0LjA4IDIxTTE0IDE3SDRWMTUuNzVDNCAxNC4wOSA3LjM0IDEzLjI1IDkgMTMuMjVDMTAuNjYgMTMuMjUgMTQgMTQuMDkgMTQgMTUuNzVWMTdNMTQgMTFIMThWMTJIMTRWMTFNOSA3QzcuNjMgNyA2LjUgOC4xMyA2LjUgOS41QzYuNSAxMC44NyA3LjYzIDEyIDkgMTJDMTAuMzcgMTIgMTEuNSAxMC44NyAxMS41IDkuNUMxMS41IDguMTMgMTAuMzcgNyA5IDdNMTQgOUgyMFYxMEgxNFY5TTE0IDdIMjBWOEgxNFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50TWFpbCA9IFwiTTIxLDhWN0wxOCw5TDE1LDdWOEwxOCwxME0yMiwzSDJBMiwyIDAgMCwwIDAsNVYxOUEyLDIgMCAwLDAgMiwyMUgyMkEyLDIgMCAwLDAgMjQsMTlWNUEyLDIgMCAwLDAgMjIsM004LDZBMywzIDAgMCwxIDExLDlBMywzIDAgMCwxIDgsMTJBMywzIDAgMCwxIDUsOUEzLDMgMCAwLDEgOCw2TTE0LDE4SDJWMTdDMiwxNSA2LDEzLjkgOCwxMy45QzEwLDEzLjkgMTQsMTUgMTQsMTdNMjIsMTJIMTRWNkgyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50TWFpbE91dGxpbmUgPSBcIk0yMiwzSDJBMiwyIDAgMCwwIDAsNVYxOUEyLDIgMCAwLDAgMiwyMUgyMkEyLDIgMCAwLDAgMjQsMTlWNUEyLDIgMCAwLDAgMjIsM00yMiwxOUgyVjVIMjJWMTlNMjEsNkgxNFYxMUgyMVY2TTIwLDhMMTcuNSw5Ljc1TDE1LDhWN0wxNy41LDguNzVMMjAsN1Y4TTksMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksNkEzLDMgMCAwLDAgNiw5QTMsMyAwIDAsMCA5LDEyTTksOEExLDEgMCAwLDEgMTAsOUExLDEgMCAwLDEgOSwxMEExLDEgMCAwLDEgOCw5QTEsMSAwIDAsMSA5LDhNMTUsMTYuNTlDMTUsMTQuMDkgMTEuMDMsMTMgOSwxM0M2Ljk3LDEzIDMsMTQuMDkgMywxNi41OVYxOEgxNVYxNi41OU01LjUsMTZDNi4yMiwxNS41IDcuNywxNSA5LDE1QzEwLjMsMTUgMTEuNzcsMTUuNSAxMi41LDE2SDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQWNjb3VudFBob25lID0gXCJNMjIsM0gyQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFIMjJBMiwyIDAgMCwwIDI0LDE5VjVBMiwyIDAgMCwwIDIyLDNNOCw2QTMsMyAwIDAsMSAxMSw5QTMsMyAwIDAsMSA4LDEyQTMsMyAwIDAsMSA1LDlBMywzIDAgMCwxIDgsNk0xNCwxOEgyVjE3QzIsMTUgNiwxMy45IDgsMTMuOUMxMCwxMy45IDE0LDE1IDE0LDE3VjE4TTE3Ljg1LDE0SDE5LjVMMjEsMTZMMTksMThDMTcuNywxNyAxNi43MywxNS42MSAxNi4yOCwxNEMxNi4xLDEzLjM2IDE2LDEyLjY5IDE2LDEyQzE2LDExLjMxIDE2LjEsMTAuNjQgMTYuMjgsMTBDMTYuNzMsOC4zOCAxNy43LDcgMTksNkwyMSw4TDE5LjUsMTBIMTcuODVDMTcuNjMsMTAuNjMgMTcuNSwxMS4zIDE3LjUsMTJDMTcuNSwxMi43IDE3LjYzLDEzLjM3IDE3Ljg1LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRBY2NvdW50UGhvbmVPdXRsaW5lID0gXCJNMjIsM0gyQTIsMiAwIDAsMCAwLDVWMTlBMiwyIDAgMCwwIDIsMjFIMjJBMiwyIDAgMCwwIDI0LDE5VjVBMiwyIDAgMCwwIDIyLDNNMjIsMTlIMlY1SDIyVjE5TTE5LDE4TDIxLDE2TDE5LjUsMTRIMTcuODVDMTcuNjMsMTMuMzcgMTcuNSwxMi43IDE3LjUsMTJDMTcuNSwxMS4zIDE3LjYzLDEwLjYzIDE3Ljg1LDEwSDE5LjVMMjEsOEwxOSw2QzE3LjcsNyAxNi43Myw4LjM4IDE2LjI4LDEwQzE2LjEsMTAuNjQgMTYsMTEuMzEgMTYsMTJDMTYsMTIuNjkgMTYuMSwxMy4zNiAxNi4yOCwxNEMxNi43MywxNS42MSAxNy43LDE3IDE5LDE4TTksMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksNkEzLDMgMCAwLDAgNiw5QTMsMyAwIDAsMCA5LDEyTTksOEExLDEgMCAwLDEgMTAsOUExLDEgMCAwLDEgOSwxMEExLDEgMCAwLDEgOCw5QTEsMSAwIDAsMSA5LDhNMTUsMTYuNTlDMTUsMTQuMDkgMTEuMDMsMTMgOSwxM0M2Ljk3LDEzIDMsMTQuMDkgMywxNi41OVYxOEgxNVYxNi41OU01LjUsMTZDNi4yMiwxNS41IDcuNywxNSA5LDE1QzEwLjMsMTUgMTEuNzcsMTUuNSAxMi41LDE2SDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWQgPSBcIk0yMCw0QTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyME0xMSwxM0g5VjE1SDExVjEzTTE5LDEzSDEzVjE1SDE5VjEzTTcsOUg1VjExSDdWOU0xOSw5SDlWMTFIMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWRPZmYgPSBcIk0zLjM1LDMuNThMMjAuNjUsMjAuODdMMTkuMjMsMjIuMjlMMTYuOTQsMjBINEEyLDIgMCAwLDEgMiwxOFY2QzIsNS43MiAyLjA2LDUuNDYgMi4xNiw1LjIyTDEuMjMsNC4yOUwyLjY1LDIuODdMMy4zNSwzLjU4TTYuNiw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QzIyLDE4LjQgMjEuODgsMTguNzcgMjEuNjgsMTkuMDhMMTcuNiwxNUgyMFYxM0gxNS42TDEzLjYsMTFIMjBWOUgxMS42TDYuNiw0TTkuOTQsMTNIOVYxNUgxMVYxNC4wNkw5Ljk0LDEzTTUuOTQsOUg1VjExSDdWMTAuMDZMNS45NCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRCdWxsZXRlZE9mZk91dGxpbmUgPSBcIk0yMC41OSwyMC44N0wxOS4xNywyMi4yOUwxNi44OCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZDMiw1Ljc0IDIuMDUsNS41IDIuMTQsNS4yNkwxLjE3LDQuMjlMMi41OSwyLjg3TDMuNzMsNEwyMC41OSwyMC44N1YyMC44N002LjU0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThDMjIsMTguNDEgMjEuODcsMTguOCAyMS42NiwxOS4xMkwyMCwxNy40NlY2SDguNTRMNi41NCw0TTQsMThIMTQuODhMMTEuODgsMTVIMTBWMTMuMTJMNy44OCwxMUg2VjkuMTJMNCw3LjEyVjE4TTE4LDE1SDE3LjU0TDE1LjU0LDEzSDE4VjE1TTE4LDExSDEzLjU0TDExLjU0LDlIMThWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZEJ1bGxldGVkT3V0bGluZSA9IFwiTTEyLDE1SDEwVjEzSDEyVjE1TTE4LDE1SDE0VjEzSDE4VjE1TTgsMTFINlY5SDhWMTFNMTgsMTFIMTBWOUgxOFYxMU0yMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEEyLDIgMCAwLDEgMjAsMjBNNCw2VjE4SDIwVjZINFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWRTZXR0aW5ncyA9IFwiTTksMjJWMjRIN1YyMkg5TTEzLDIyVjI0SDExVjIySDEzTTE3LDIyVjI0SDE1VjIySDE3TTIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyME0xMSwxM0g5VjE1SDExVjEzTTE5LDEzSDEzVjE1SDE5VjEzTTcsOUg1VjExSDdWOU0xOSw5SDlWMTFIMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkQnVsbGV0ZWRTZXR0aW5nc091dGxpbmUgPSBcIk05LDIyVjI0SDdWMjJIOU0xMywyMlYyNEgxMVYyMkgxM00xNywyMlYyNEgxNVYyMkgxN00xMiwxNUgxMFYxM0gxMlYxNU0xOCwxNUgxNFYxM0gxOFYxNU04LDExSDZWOUg4VjExTTE4LDExSDEwVjlIMThWMTFNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwTTQsNlYxOEgyMFY2SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZE1pbnVzID0gXCJNMjMgMThWMjBIMTVWMThIMjNNMTkgMTNDMjAuMDkgMTMgMjEuMTIgMTMuMyAyMiAxMy44MVY2QzIyIDQuODkgMjEuMTEgNCAyMCA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjA0IDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRNaW51c091dGxpbmUgPSBcIk0yMyAxOFYyMEgxNVYxOEgyM00xMy4wOSAxOEg0VjZIMjBWMTMuMDlDMjAuNzIgMTMuMjEgMjEuMzkgMTMuNDYgMjIgMTMuODFWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMy4wOUMxMy4wNCAxOS42NyAxMyAxOS4zNCAxMyAxOUMxMyAxOC42NiAxMy4wNCAxOC4zMyAxMy4wOSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkT2ZmID0gXCJNMjEuODggMTguNjhMNy4yIDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMThDMjIgMTguMjQgMjEuOTYgMTguNDcgMjEuODggMTguNjhNMjAuNTYgMTkuOTFMMjAuNTcgMTkuOTFMMi4zOSAxLjczTDEuMTEgM0wyLjY1IDQuNTRDMi4yNSA0LjkgMiA1LjQyIDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDE4LjExTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIwLjU2IDE5LjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRPZmZPdXRsaW5lID0gXCJNOS4yIDZMNy4yIDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMThDMjIgMTguMjQgMjEuOTYgMTguNDcgMjEuODggMTguNjhMMjAgMTYuOFY2SDkuMk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOC4xMSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDUuNDIgMi4yNSA0LjkgMi42NSA0LjU0TDEuMTEgM0wyLjM5IDEuNzNMNi42NiA2TDE4LjY1IDE4SDE4LjY2TDIwLjU3IDE5LjkxTDIwLjU2IDE5LjkxTDIyLjExIDIxLjQ2TTE2LjExIDE4TDQuMTEgNkg0VjE4SDE2LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRPdXRsaW5lID0gXCJNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwTTQsNlYxOEgyMFY2SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFBsdXMgPSBcIk0xMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDIwQzIxLjExIDQgMjIgNC44OSAyMiA2VjEzLjgxQzIxLjEyIDEzLjMgMjAuMDkgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBNMTggMTVWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBWMTVIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFBsdXNPdXRsaW5lID0gXCJNMjEgMTVWMThIMjRWMjBIMjFWMjNIMTlWMjBIMTZWMThIMTlWMTVIMjFNMTQgMThIM1Y2SDE5VjEzSDIxVjZDMjEgNC44OSAyMC4xMSA0IDE5IDRIM0MxLjkgNCAxIDQuODkgMSA2VjE4QzEgMTkuMTEgMS45IDIwIDMgMjBIMTRWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFJlbW92ZSA9IFwiTTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5TTE5IDEzQzIwLjA5IDEzIDIxLjEyIDEzLjMgMjIgMTMuODFWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMy4wOUMxMy4wNCAxOS42NyAxMyAxOS4zNCAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkUmVtb3ZlT3V0bGluZSA9IFwiTTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5TTEzLjA5IDE4SDRWNkgyMFYxMy4wOUMyMC43MiAxMy4yMSAyMS4zOSAxMy40NiAyMiAxMy44MVY2QzIyIDQuODkgMjEuMTEgNCAyMCA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjA0IDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE4LjY2IDEzLjA0IDE4LjMzIDEzLjA5IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRTZWFyY2ggPSBcIk0xMS41IDlDMTAuMTIgOSA5IDEwLjEyIDkgMTEuNVMxMC4xMiAxNCAxMS41IDE0IDE0IDEyLjg4IDE0IDExLjUgMTIuODggOSAxMS41IDlNMjAgNEg0QzIuOSA0IDIgNC45IDIgNlYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjZDMjIgNC45IDIxLjEgNCAyMCA0TTE2Ljc5IDE4LjIxTDEzLjg4IDE1LjNDMTMuMTkgMTUuNzQgMTIuMzcgMTYgMTEuNSAxNkM5IDE2IDcgMTQgNyAxMS41UzkgNyAxMS41IDcgMTYgOSAxNiAxMS41QzE2IDEyLjM4IDE1Ljc0IDEzLjE5IDE1LjMgMTMuODlMMTguMjEgMTYuNzlMMTYuNzkgMTguMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFNlYXJjaE91dGxpbmUgPSBcIk0xMS41IDE2QzEyLjM3IDE2IDEzLjE5IDE1Ljc0IDEzLjg4IDE1LjNMMTYuMzIgMTcuNzRMMTcuNzQgMTYuMzJMMTUuMyAxMy44OUMxNS43NCAxMy4xOSAxNiAxMi4zOCAxNiAxMS41QzE2IDkgMTQgNyAxMS41IDdTNyA5IDcgMTEuNSA5IDE2IDExLjUgMTZNMTEuNSA5QzEyLjg4IDkgMTQgMTAuMTIgMTQgMTEuNVMxMi44OCAxNCAxMS41IDE0IDkgMTIuODggOSAxMS41IDEwLjEyIDkgMTEuNSA5TTIwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFY2QzIyIDQuOSAyMS4xIDQgMjAgNE0yMCAxOEg0VjZIMjBWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFRleHQgPSBcIk0yMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEEyLDIgMCAwLDEgMjAsMjBNNSwxM1YxNUgxNlYxM0g1TTUsOVYxMUgxOVY5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZFRleHRPdXRsaW5lID0gXCJNMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMThBMiwyIDAgMCwxIDIwLDIwTTQsNlYxOEgyMFY2SDRNNiw5SDE4VjExSDZWOU02LDEzSDE2VjE1SDZWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHMgPSBcIk0yMS40Nyw0LjM1TDIwLjEzLDMuNzlWMTIuODJMMjIuNTYsNi45NkMyMi45Nyw1Ljk0IDIyLjUsNC43NyAyMS40Nyw0LjM1TTEuOTcsOC4wNUw2LjkzLDIwQzcuMjQsMjAuNzcgNy45NywyMS4yNCA4Ljc0LDIxLjI2QzksMjEuMjYgOS4yNywyMS4yMSA5LjUzLDIxLjFMMTYuOSwxOC4wNUMxNy42NSwxNy43NCAxOC4xMSwxNyAxOC4xMywxNi4yNkMxOC4xNCwxNiAxOC4wOSwxNS43MSAxOCwxNS40NUwxMywzLjVDMTIuNzEsMi43MyAxMS45NywyLjI2IDExLjE5LDIuMjVDMTAuOTMsMi4yNSAxMC42NywyLjMxIDEwLjQyLDIuNEwzLjA2LDUuNDVDMi4wNCw1Ljg3IDEuNTUsNy4wNCAxLjk3LDguMDVNMTguMTIsNC4yNUEyLDIgMCAwLDAgMTYuMTIsMi4yNUgxNC42N0wxOC4xMiwxMC41OVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRzQ2x1YiA9IFwiTTEyLDJDMTQuMywyIDE2LjMsNCAxNi4zLDYuMkMxNi4yMSw4Ljc3IDE0LjM0LDkuODMgMTQuMDQsMTBDMTUuMDQsOS41IDE2LjUsOS41IDE2LjUsOS41QzE5LDkuNSAyMSwxMS4zIDIxLDEzLjhDMjEsMTYuMyAxOSwxOCAxNi41LDE4QzE2LjUsMTggMTUsMTggMTMsMTdDMTMsMTcgMTIuNywxOSAxNSwyMkg5QzExLjMsMTkgMTEsMTcgMTEsMTdDOSwxOCA3LjUsMTggNy41LDE4QzUsMTggMywxNi4zIDMsMTMuOEMzLDExLjMgNSw5LjUgNy41LDkuNUM3LjUsOS41IDguOTYsOS41IDkuOTYsMTBDOS42Niw5LjgzIDcuNzksOC43NyA3LjcsNi4yQzcuNyw0IDkuNywyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNEaWFtb25kID0gXCJNMTksMTJMMTIsMjJMNSwxMkwxMiwyXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNEaWFtb25kT3V0bGluZSA9IFwiTTEyIDJMNSAxMkwxMiAyMkwxOSAxMk03LjQ0IDEyTDEyIDUuNUwxNi41NiAxMkwxMiAxOC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNIZWFydCA9IFwiTTEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOS4yNCwzIDEwLjkxLDMuODEgMTIsNS4wOEMxMy4wOSwzLjgxIDE0Ljc2LDMgMTYuNSwzQzE5LjU4LDMgMjIsNS40MSAyMiw4LjVDMjIsMTIuMjcgMTguNiwxNS4zNiAxMy40NSwyMC4wM0wxMiwyMS4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJkc091dGxpbmUgPSBcIk0xMS4xOSwyLjI1QzEwLjkzLDIuMjUgMTAuNjcsMi4zMSAxMC40MiwyLjRMMy4wNiw1LjQ1QzIuMDQsNS44NyAxLjU1LDcuMDQgMS45Nyw4LjA1TDYuOTMsMjBDNy4yNCwyMC43NyA3Ljk3LDIxLjIzIDguNzQsMjEuMjVDOSwyMS4yNSA5LjI3LDIxLjIyIDkuNTMsMjEuMUwxNi45LDE4LjA1QzE3LjY1LDE3Ljc0IDE4LjExLDE3IDE4LjEzLDE2LjI1QzE4LjE0LDE2IDE4LjA5LDE1LjcxIDE4LDE1LjQ1TDEzLDMuNUMxMi43MSwyLjczIDExLjk3LDIuMjYgMTEuMTksMi4yNU0xNC42NywyLjI1TDE4LjEyLDEwLjZWNC4yNUEyLDIgMCAwLDAgMTYuMTIsMi4yNU0yMC4xMywzLjc5VjEyLjgyTDIyLjU2LDYuOTZDMjIuOTcsNS45NCAyMi41LDQuNzggMjEuNDcsNC4zNk0xMS4xOSw0LjIyTDE2LjE3LDE2LjI0TDguNzgsMTkuM0wzLjgsNy4yOVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRzUGxheWluZ091dGxpbmUgPSBcIk0xMS4xOSwyLjI1QzExLjk3LDIuMjYgMTIuNzEsMi43MyAxMywzLjVMMTgsMTUuNDVDMTguMDksMTUuNzEgMTguMTQsMTYgMTguMTMsMTYuMjVDMTguMTEsMTcgMTcuNjUsMTcuNzQgMTYuOSwxOC4wNUw5LjUzLDIxLjFDOS4yNywyMS4yMiA5LDIxLjI1IDguNzQsMjEuMjVDNy45NywyMS4yMyA3LjI0LDIwLjc3IDYuOTMsMjBMMS45Nyw4LjA1QzEuNTUsNy4wNCAyLjA0LDUuODcgMy4wNiw1LjQ1TDEwLjQyLDIuNEMxMC42NywyLjMxIDEwLjkzLDIuMjUgMTEuMTksMi4yNU0xNC42NywyLjI1SDE2LjEyQTIsMiAwIDAsMSAxOC4xMiw0LjI1VjEwLjZMMTQuNjcsMi4yNU0yMC4xMywzLjc5TDIxLjQ3LDQuMzZDMjIuNSw0Ljc4IDIyLjk3LDUuOTQgMjIuNTYsNi45NkwyMC4xMywxMi44MlYzLjc5TTExLjE5LDQuMjJMMy44LDcuMjlMOC43NywxOS4zTDE2LjE3LDE2LjI0TDExLjE5LDQuMjJNOC42NSw4LjU0TDExLjg4LDEwLjk1TDExLjQ0LDE0Ljk2TDguMjEsMTIuNTRMOC42NSw4LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcmRzU3BhZGUgPSBcIk0xMiwyQzksNyA0LDkgNCwxNEM0LDE2IDYsMTggOCwxOEM5LDE4IDEwLDE4IDExLDE3QzExLDE3IDExLjMyLDE5IDksMjJIMTVDMTMsMTkgMTMsMTcgMTMsMTdDMTQsMTggMTUsMTggMTYsMThDMTgsMTggMjAsMTYgMjAsMTRDMjAsOSAxNSw3IDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FyZHNWYXJpYW50ID0gXCJNNSwySDE5QTEsMSAwIDAsMSAyMCwzVjEzQTEsMSAwIDAsMSAxOSwxNEg1QTEsMSAwIDAsMSA0LDEzVjNBMSwxIDAgMCwxIDUsMk02LDRWMTJIMThWNEg2TTIwLDE3QTEsMSAwIDAsMSAxOSwxOEg1QTEsMSAwIDAsMSA0LDE3VjE2SDIwVjE3TTIwLDIxQTEsMSAwIDAsMSAxOSwyMkg1QTEsMSAwIDAsMSA0LDIxVjIwSDIwVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnJvdCA9IFwiTTE2LDEwTDE1LjgsMTFIMTMuNUEwLjUsMC41IDAgMCwwIDEzLDExLjVBMC41LDAuNSAwIDAsMCAxMy41LDEySDE1LjZMMTQuNiwxN0gxMi41QTAuNSwwLjUgMCAwLDAgMTIsMTcuNUEwLjUsMC41IDAgMCwwIDEyLjUsMThIMTQuNEwxNCwyMEEyLDIgMCAwLDEgMTIsMjJBMiwyIDAgMCwxIDEwLDIwTDksMTVIMTAuNUEwLjUsMC41IDAgMCwwIDExLDE0LjVBMC41LDAuNSAwIDAsMCAxMC41LDE0SDguOEw4LDEwQzgsOC44IDguOTMsNy43NyAxMC4yOSw3LjI5TDguOSw1LjI4QzguNTksNC44MiA4LjcsNC4yIDkuMTYsMy44OUM5LjYxLDMuNTcgMTAuMjMsMy42OSAxMC41NSw0LjE0TDExLDQuOFYzQTEsMSAwIDAsMSAxMiwyQTEsMSAwIDAsMSAxMywzVjUuMjhMMTQuNSwzLjU0QzE0LjgzLDMuMTIgMTUuNDcsMy4wNyAxNS44OSwzLjQzQzE2LjMxLDMuNzggMTYuMzYsNC40MSAxNiw0Ljg0TDEzLjg3LDcuMzVDMTUuMTQsNy44NSAxNiw4Ljg1IDE2LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnQgPSBcIk0xNywxOEMxNS44OSwxOCAxNSwxOC44OSAxNSwyMEEyLDIgMCAwLDAgMTcsMjJBMiwyIDAgMCwwIDE5LDIwQzE5LDE4Ljg5IDE4LjEsMTggMTcsMThNMSwyVjRIM0w2LjYsMTEuNTlMNS4yNCwxNC4wNEM1LjA5LDE0LjMyIDUsMTQuNjUgNSwxNUEyLDIgMCAwLDAgNywxN0gxOVYxNUg3LjQyQTAuMjUsMC4yNSAwIDAsMSA3LjE3LDE0Ljc1QzcuMTcsMTQuNyA3LjE4LDE0LjY2IDcuMiwxNC42M0w4LjEsMTNIMTUuNTVDMTYuMywxMyAxNi45NiwxMi41OCAxNy4zLDExLjk3TDIwLjg4LDUuNUMyMC45NSw1LjM0IDIxLDUuMTcgMjEsNUExLDEgMCAwLDAgMjAsNEg1LjIxTDQuMjcsMk03LDE4QzUuODksMTggNSwxOC44OSA1LDIwQTIsMiAwIDAsMCA3LDIyQTIsMiAwIDAsMCA5LDIwQzksMTguODkgOC4xLDE4IDcsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydEFycm93RG93biA9IFwiTTEwLDBWNEg4TDEyLDhMMTYsNEgxNFYwTTEsMlY0SDNMNi42LDExLjU5TDUuMjUsMTQuMDRDNS4wOSwxNC4zMiA1LDE0LjY1IDUsMTVBMiwyIDAgMCwwIDcsMTdIMTlWMTVINy40MkM3LjI5LDE1IDcuMTcsMTQuODkgNy4xNywxNC43NUw3LjIsMTQuNjNMOC4xLDEzSDE1LjU1QzE2LjMsMTMgMTYuOTYsMTIuNTkgMTcuMywxMS45N0wyMS4xNiw0Ljk2TDE5LjQyLDRIMTkuNDFMMTguMzEsNkwxNS41NSwxMUg4LjUzTDguNCwxMC43M0w2LjE2LDZMNS4yMSw0TDQuMjcsMk03LDE4QTIsMiAwIDAsMCA1LDIwQTIsMiAwIDAsMCA3LDIyQTIsMiAwIDAsMCA5LDIwQTIsMiAwIDAsMCA3LDE4TTE3LDE4QTIsMiAwIDAsMCAxNSwyMEEyLDIgMCAwLDAgMTcsMjJBMiwyIDAgMCwwIDE5LDIwQTIsMiAwIDAsMCAxNywxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0QXJyb3dSaWdodCA9IFwiTTksMjBBMiwyIDAgMCwxIDcsMjJBMiwyIDAgMCwxIDUsMjBBMiwyIDAgMCwxIDcsMThBMiwyIDAgMCwxIDksMjBNMTcsMThBMiwyIDAgMCwwIDE1LDIwQTIsMiAwIDAsMCAxNywyMkEyLDIgMCAwLDAgMTksMjBBMiwyIDAgMCwwIDE3LDE4TTcuMiwxNC42M0M3LjE5LDE0LjY3IDcuMTksMTQuNzEgNy4yLDE0Ljc1QTAuMjUsMC4yNSAwIDAsMCA3LjQ1LDE1SDE5VjE3SDdBMiwyIDAgMCwxIDUsMTVDNSwxNC42NSA1LjA3LDE0LjMxIDUuMjQsMTRMNi42LDExLjU5TDMsNEgxVjJINC4yN0w1LjIxLDRIMjBBMSwxIDAgMCwxIDIxLDVDMjEsNS4xNyAyMC45NSw1LjM0IDIwLjg4LDUuNUwxNy4zLDEyQzE2Ljk0LDEyLjYyIDE2LjI3LDEzIDE1LjU1LDEzSDguMUw3LjIsMTQuNjNNOSw5LjVIMTNWMTEuNUwxNiw4LjVMMTMsNS41VjcuNUg5VjkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0QXJyb3dVcCA9IFwiTTEyLDBMOCw0SDEwVjhIMTRWNEgxNk0xLDJWNEgzTDYuNiwxMS41OUw1LjI1LDE0LjA0QzUuMDksMTQuMzIgNSwxNC42NSA1LDE1QTIsMiAwIDAsMCA3LDE3SDE5VjE1SDcuNDJDNy4yOSwxNSA3LjE3LDE0Ljg5IDcuMTcsMTQuNzVMNy4yLDE0LjYzTDguMSwxM0gxNS41NUMxNi4zLDEzIDE2Ljk2LDEyLjU5IDE3LjMsMTEuOTdMMjEuMTYsNC45NkwxOS40Miw0SDE5LjQxTDE4LjMxLDZMMTUuNTUsMTFIOC41M0w4LjQsMTAuNzNMNi4xNiw2TDUuMjEsNEw0LjI3LDJNNywxOEEyLDIgMCAwLDAgNSwyMEEyLDIgMCAwLDAgNywyMkEyLDIgMCAwLDAgOSwyMEEyLDIgMCAwLDAgNywxOE0xNywxOEEyLDIgMCAwLDAgMTUsMjBBMiwyIDAgMCwwIDE3LDIyQTIsMiAwIDAsMCAxOSwyMEEyLDIgMCAwLDAgMTcsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydENoZWNrID0gXCJNOSAyMEM5IDIxLjExIDguMTEgMjIgNyAyMlM1IDIxLjExIDUgMjAgNS45IDE4IDcgMTggOSAxOC45IDkgMjBNMTcgMThDMTUuOSAxOCAxNSAxOC45IDE1IDIwUzE1LjkgMjIgMTcgMjIgMTkgMjEuMTEgMTkgMjAgMTguMTEgMTggMTcgMThNNy4xNyAxNC43NUw3LjIgMTQuNjNMOC4xIDEzSDE1LjU1QzE2LjMgMTMgMTYuOTYgMTIuNTkgMTcuMyAxMS45N0wyMS4xNiA0Ljk2TDE5LjQyIDRIMTkuNDFMMTguMzEgNkwxNS41NSAxMUg4LjUzTDguNCAxMC43M0w2LjE2IDZMNS4yMSA0TDQuMjcgMkgxVjRIM0w2LjYgMTEuNTlMNS4yNSAxNC4wNEM1LjA5IDE0LjMyIDUgMTQuNjUgNSAxNUM1IDE2LjExIDUuOSAxNyA3IDE3SDE5VjE1SDcuNDJDNy4yOSAxNSA3LjE3IDE0Ljg5IDcuMTcgMTQuNzVNMTggMi43NkwxNi41OSAxLjM0TDExLjc1IDYuMThMOS4xNiAzLjU5TDcuNzUgNUwxMS43NSA5TDE4IDIuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydE1pbnVzID0gXCJNMTYsNlY0SDhWNk03LDE4QTIsMiAwIDAsMCA1LDIwQTIsMiAwIDAsMCA3LDIyQTIsMiAwIDAsMCA5LDIwQTIsMiAwIDAsMCA3LDE4TTE3LDE4QTIsMiAwIDAsMCAxNSwyMEEyLDIgMCAwLDAgMTcsMjJBMiwyIDAgMCwwIDE5LDIwQTIsMiAwIDAsMCAxNywxOE03LjE3LDE0Ljc1TDcuMiwxNC42M0w4LjEsMTNIMTUuNTVDMTYuMywxMyAxNi45NiwxMi41OSAxNy4zLDExLjk3TDIxLjE2LDQuOTZMMTkuNDIsNEgxOS40MUwxOC4zMSw2TDE1LjU1LDExSDguNTNMOC40LDEwLjczTDYuMTYsNkw1LjIxLDRMNC4yNywySDFWNEgzTDYuNiwxMS41OUw1LjI1LDE0LjA0QzUuMDksMTQuMzIgNSwxNC42NSA1LDE1QTIsMiAwIDAsMCA3LDE3SDE5VjE1SDcuNDJDNy4yOSwxNSA3LjE3LDE0Ljg5IDcuMTcsMTQuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FydE9mZiA9IFwiTTIyLjczLDIyLjczTDEuMjcsMS4yN0wwLDIuNTRMNC4zOSw2LjkzTDYuNiwxMS41OUw1LjI1LDE0LjA0QzUuMDksMTQuMzIgNSwxNC42NSA1LDE1QTIsMiAwIDAsMCA3LDE3SDE0LjQ2TDE1Ljg0LDE4LjM4QzE1LjM0LDE4Ljc0IDE1LDE5LjMzIDE1LDIwQTIsMiAwIDAsMCAxNywyMkMxNy42NywyMiAxOC4yNiwyMS42NyAxOC42MiwyMS4xNkwyMS40NiwyNEwyMi43MywyMi43M003LjQyLDE1QTAuMjUsMC4yNSAwIDAsMSA3LjE3LDE0Ljc1TDcuMiwxNC42M0w4LjEsMTNIMTAuNDZMMTIuNDYsMTVINy40Mk0xNS41NSwxM0MxNi4zLDEzIDE2Ljk2LDEyLjU5IDE3LjMsMTEuOTdMMjAuODgsNS41QzIwLjk2LDUuMzQgMjEsNS4xNyAyMSw1QTEsMSAwIDAsMCAyMCw0SDYuNTRMMTUuNTUsMTNNNywxOEEyLDIgMCAwLDAgNSwyMEEyLDIgMCAwLDAgNywyMkEyLDIgMCAwLDAgOSwyMEEyLDIgMCAwLDAgNywxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0T3V0bGluZSA9IFwiTTE3LDE4QTIsMiAwIDAsMSAxOSwyMEEyLDIgMCAwLDEgMTcsMjJDMTUuODksMjIgMTUsMjEuMSAxNSwyMEMxNSwxOC44OSAxNS44OSwxOCAxNywxOE0xLDJINC4yN0w1LjIxLDRIMjBBMSwxIDAgMCwxIDIxLDVDMjEsNS4xNyAyMC45NSw1LjM0IDIwLjg4LDUuNUwxNy4zLDExLjk3QzE2Ljk2LDEyLjU4IDE2LjMsMTMgMTUuNTUsMTNIOC4xTDcuMiwxNC42M0w3LjE3LDE0Ljc1QTAuMjUsMC4yNSAwIDAsMCA3LjQyLDE1SDE5VjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNUM1LDE0LjY1IDUuMDksMTQuMzIgNS4yNCwxNC4wNEw2LjYsMTEuNTlMMyw0SDFWMk03LDE4QTIsMiAwIDAsMSA5LDIwQTIsMiAwIDAsMSA3LDIyQzUuODksMjIgNSwyMS4xIDUsMjBDNSwxOC44OSA1Ljg5LDE4IDcsMThNMTYsMTFMMTguNzgsNkg2LjE0TDguNSwxMUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXJ0UGx1cyA9IFwiTTExLDlIMTNWNkgxNlY0SDEzVjFIMTFWNEg4VjZIMTFNNywxOEEyLDIgMCAwLDAgNSwyMEEyLDIgMCAwLDAgNywyMkEyLDIgMCAwLDAgOSwyMEEyLDIgMCAwLDAgNywxOE0xNywxOEEyLDIgMCAwLDAgMTUsMjBBMiwyIDAgMCwwIDE3LDIyQTIsMiAwIDAsMCAxOSwyMEEyLDIgMCAwLDAgMTcsMThNNy4xNywxNC43NUw3LjIsMTQuNjNMOC4xLDEzSDE1LjU1QzE2LjMsMTMgMTYuOTYsMTIuNTkgMTcuMywxMS45N0wyMS4xNiw0Ljk2TDE5LjQyLDRIMTkuNDFMMTguMzEsNkwxNS41NSwxMUg4LjUzTDguNCwxMC43M0w2LjE2LDZMNS4yMSw0TDQuMjcsMkgxVjRIM0w2LjYsMTEuNTlMNS4yNSwxNC4wNEM1LjA5LDE0LjMyIDUsMTQuNjUgNSwxNUEyLDIgMCAwLDAgNywxN0gxOVYxNUg3LjQyQzcuMjksMTUgNy4xNywxNC44OSA3LjE3LDE0Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnRSZW1vdmUgPSBcIk0xNC4xMiw4LjUzTDEyLDYuNDFMOS44OCw4LjU0TDguNDYsNy4xMkwxMC41OSw1TDguNDcsMi44OEw5Ljg4LDEuNDdMMTIsMy41OUwxNC4xMiwxLjQ2TDE1LjU0LDIuODhMMTMuNDEsNUwxNS41Myw3LjEyTDE0LjEyLDguNTNNNywxOEEyLDIgMCAwLDEgOSwyMEEyLDIgMCAwLDEgNywyMkEyLDIgMCAwLDEgNSwyMEEyLDIgMCAwLDEgNywxOE0xNywxOEEyLDIgMCAwLDEgMTksMjBBMiwyIDAgMCwxIDE3LDIyQTIsMiAwIDAsMSAxNSwyMEEyLDIgMCAwLDEgMTcsMThNNy4xNywxNC43NUEwLjI1LDAuMjUgMCAwLDAgNy40MiwxNUgxOVYxN0g3QTIsMiAwIDAsMSA1LDE1QzUsMTQuNjUgNS4wOSwxNC4zMiA1LjI1LDE0LjA0TDYuNiwxMS41OUwzLDRIMVYySDQuMjdMNS4yMSw0TDYuMTYsNkw4LjQsMTAuNzNMOC41MywxMUgxNS41NUwxOC4zMSw2TDE5LjQxLDRIMTkuNDJMMjEuMTYsNC45NkwxNy4zLDExLjk3QzE2Ljk2LDEyLjU5IDE2LjMsMTMgMTUuNTUsMTNIOC4xTDcuMiwxNC42M0w3LjE3LDE0Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhcnRWYXJpYW50ID0gXCJNMTkgMjBDMTkgMjEuMTEgMTguMTEgMjIgMTcgMjJDMTUuODkgMjIgMTUgMjEuMSAxNSAyMEMxNSAxOC44OSAxNS44OSAxOCAxNyAxOEMxOC4xMSAxOCAxOSAxOC45IDE5IDIwTTcgMThDNS44OSAxOCA1IDE4Ljg5IDUgMjBDNSAyMS4xIDUuODkgMjIgNyAyMkM4LjExIDIyIDkgMjEuMTEgOSAyMFM4LjExIDE4IDcgMThNNy4yIDE0LjYzTDcuMTcgMTQuNzVDNy4xNyAxNC44OSA3LjI4IDE1IDcuNDIgMTVIMTlWMTdIN0M1Ljg5IDE3IDUgMTYuMSA1IDE1QzUgMTQuNjUgNS4wOSAxNC4zMiA1LjI0IDE0LjA0TDYuNiAxMS41OUwzIDRIMVYySDQuMjdMNS4yMSA0SDIwQzIwLjU1IDQgMjEgNC40NSAyMSA1QzIxIDUuMTcgMjAuOTUgNS4zNCAyMC44OCA1LjVMMTcuMyAxMS45N0MxNi45NiAxMi41OCAxNi4zIDEzIDE1LjU1IDEzSDguMUw3LjIgMTQuNjNNOC41IDExSDEwVjlINy41Nkw4LjUgMTFNMTEgOVYxMUgxNFY5SDExTTE0IDhWNkgxMVY4SDE0TTE3LjExIDlIMTVWMTFIMTZMMTcuMTEgOU0xOC43OCA2SDE1VjhIMTcuNjdMMTguNzggNk02LjE0IDZMNy4wOCA4SDEwVjZINi4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNlU2Vuc2l0aXZlQWx0ID0gXCJNMjAsMTRDMjAsMTIuNSAxOS41LDEyIDE4LDEySDE2VjExQzE2LDEwIDE2LDEwIDE0LDEwVjE1LjRMMTQsMTlIMTZMMTgsMTlDMTkuNSwxOSAyMCwxOC40NyAyMCwxN1YxNE0xMiwxMkMxMiwxMC41IDExLjQ3LDEwIDEwLDEwSDZDNC41LDEwIDQsMTAuNSA0LDEyVjE5SDZWMTZIMTBWMTlIMTJWMTJNMTAsN0gxNFY1SDEwVjdNMjIsOVYyMEMyMiwyMS4xMSAyMS4xMSwyMiAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjlDMiw3Ljg5IDIuODksNyA0LDdIOFY1TDEwLDNIMTRMMTYsNVY3SDIwQTIsMiAwIDAsMSAyMiw5SDIyTTE2LDE3SDE4VjE0SDE2VjE3TTYsMTJIMTBWMTRINlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoID0gXCJNMyw2SDIxVjE4SDNWNk0xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNNyw4QTIsMiAwIDAsMSA1LDEwVjE0QTIsMiAwIDAsMSA3LDE2SDE3QTIsMiAwIDAsMSAxOSwxNFYxMEEyLDIgMCAwLDEgMTcsOEg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2gxMDAgPSBcIk0yLDVIMjJWMjBIMlY1TTIwLDE4VjdINFYxOEgyME0xNyw4QTIsMiAwIDAsMCAxOSwxMFYxNUEyLDIgMCAwLDAgMTcsMTdIN0EyLDIgMCAwLDAgNSwxNVYxMEEyLDIgMCAwLDAgNyw4SDE3TTE3LDEzVjEyQzE3LDEwLjkgMTYuMzMsMTAgMTUuNSwxMEMxNC42NywxMCAxNCwxMC45IDE0LDEyVjEzQzE0LDE0LjEgMTQuNjcsMTUgMTUuNSwxNUMxNi4zMywxNSAxNywxNC4xIDE3LDEzTTE1LjUsMTFBMC41LDAuNSAwIDAsMSAxNiwxMS41VjEzLjVBMC41LDAuNSAwIDAsMSAxNS41LDE0QTAuNSwwLjUgMCAwLDEgMTUsMTMuNVYxMS41QTAuNSwwLjUgMCAwLDEgMTUuNSwxMU0xMywxM1YxMkMxMywxMC45IDEyLjMzLDEwIDExLjUsMTBDMTAuNjcsMTAgMTAsMTAuOSAxMCwxMlYxM0MxMCwxNC4xIDEwLjY3LDE1IDExLjUsMTVDMTIuMzMsMTUgMTMsMTQuMSAxMywxM00xMS41LDExQTAuNSwwLjUgMCAwLDEgMTIsMTEuNVYxMy41QTAuNSwwLjUgMCAwLDEgMTEuNSwxNEEwLjUsMC41IDAgMCwxIDExLDEzLjVWMTEuNUEwLjUsMC41IDAgMCwxIDExLjUsMTFNOCwxNUg5VjEwSDhMNywxMC41VjExLjVMOCwxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoQ2hlY2sgPSBcIk0zIDZWMThIMTMuMzJDMTMuMSAxNy4zMyAxMyAxNi42NiAxMyAxNkg3QzcgMTQuOSA2LjExIDE0IDUgMTRWMTBDNi4xMSAxMCA3IDkuMTEgNyA4SDE3QzE3IDkuMTEgMTcuOSAxMCAxOSAxMFYxMC4wNkMxOS42NyAxMC4wNiAyMC4zNCAxMC4xOCAyMSAxMC40VjZIM00xMiA5QzEwLjMgOS4wMyA5IDEwLjMgOSAxMkM5IDEzLjcgMTAuMyAxNC45NCAxMiAxNUMxMi4zOCAxNSAxMi43NyAxNC45MiAxMy4xNCAxNC43N0MxMy40MSAxMy42NyAxMy44NiAxMi42MyAxNC45NyAxMS42MUMxNC44NSAxMC4yOCAxMy41OSA4Ljk3IDEyIDlNMjEuNjMgMTIuMjdMMTcuNzYgMTYuMTdMMTYuNDEgMTQuOEwxNSAxNi4yMkwxNy43NSAxOUwyMy4wMyAxMy42OEwyMS42MyAxMi4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoTG9jayA9IFwiTTIxLjggMTVDMjIuNCAxNSAyMyAxNS42IDIzIDE2LjNWMTkuOEMyMyAyMC40IDIyLjQgMjEgMjEuNyAyMUgxNi4yQzE1LjYgMjEgMTUgMjAuNCAxNSAxOS43VjE2LjJDMTUgMTUuNiAxNS42IDE1IDE2LjIgMTVWMTMuNUMxNi4yIDEyLjEgMTcuNiAxMSAxOSAxMUMyMC40IDExIDIxLjggMTIuMSAyMS44IDEzLjVWMTVNMjAuNSAxNVYxMy41QzIwLjUgMTIuNyAxOS44IDEyLjIgMTkgMTIuMkMxOC4yIDEyLjIgMTcuNSAxMi43IDE3LjUgMTMuNVYxNUgyMC41TTIgNkgyMFY5LjFMMTkgOUMxOC4xOCA5IDE3LjQxIDkuMiAxNi43MyA5LjU0QzE2LjI4IDkuMTggMTYgOC42MiAxNiA4SDZDNiA5LjExIDUuMTEgMTAgNCAxMFYxNEM1LjExIDE0IDYgMTQuOSA2IDE2SDEzLjA0TDEzIDE2LjVWMThIMlY2TTExIDlDMTIuNjYgOSAxNCAxMC4zNCAxNCAxMkMxNCAxMy42NiAxMi42NiAxNSAxMSAxNUM5LjM0IDE1IDggMTMuNjYgOCAxMkM4IDEwLjM0IDkuMzQgOSAxMSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hMb2NrT3BlbiA9IFwiTTIxLjggMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTMuNUMxNi4yIDEyLjEgMTcuNiAxMSAxOSAxMUMyMC40IDExIDIxLjggMTIuMSAyMS44IDEzLjVWMTRIMjAuNVYxMy41QzIwLjUgMTIuNyAxOS44IDEyLjIgMTkgMTIuMkMxOC4yIDEyLjIgMTcuNSAxMi43IDE3LjUgMTMuNVYxNkgyMS44TTIgNkgyMFY5LjFMMTkgOUMxOC4xOCA5IDE3LjQxIDkuMiAxNi43MyA5LjU0QzE2LjI4IDkuMTggMTYgOC42MiAxNiA4SDZDNiA5LjExIDUuMTEgMTAgNCAxMFYxNEM1LjExIDE0IDYgMTQuOSA2IDE2SDEzLjA0TDEzIDE2LjVWMThIMlY2TTExIDlDMTIuNjYgOSAxNCAxMC4zNCAxNCAxMkMxNCAxMy42NiAxMi42NiAxNSAxMSAxNUM5LjM0IDE1IDggMTMuNjYgOCAxMkM4IDEwLjM0IDkuMzQgOSAxMSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hNYXJrZXIgPSBcIk0xOC41LDE2LjhDMTcuOCwxNi44IDE3LjMsMTYuMiAxNy4zLDE1LjZDMTcuMywxNC45IDE3LjksMTQuNCAxOC41LDE0LjRDMTkuMSwxNC40IDE5LjcsMTUgMTkuNywxNS42QzE5LjgsMTYuMiAxOS4yLDE2LjggMTguNSwxNi44TTE4LjUsMTJDMTYuNiwxMiAxNSwxMy42IDE1LDE1LjVDMTUsMTguMSAxOC41LDIyIDE4LjUsMjJDMTguNSwyMiAyMiwxOC4xIDIyLDE1LjVDMjIsMTMuNiAyMC40LDEyIDE4LjUsMTJNMTQuOSwxMS4zQzE0LjYsMTAgMTMuNCw5IDEyLDlDMTAuMyw5IDksMTAuMyA5LDEyQzksMTMuNyAxMC4zLDE1IDEyLDE1QzEyLjQsMTUgMTIuNywxNC45IDEzLDE0LjhDMTMuMiwxMy40IDEzLjksMTIuMiAxNC45LDExLjNNMTMsMTZIN0EyLDIgMCAwLDAgNSwxNFYxMEEyLDIgMCAwLDAgNyw4SDE3QTIsMiAwIDAsMCAxOSwxMEMxOSwxMCAyMCwxMCAyMSwxMC42VjZIM1YxOEgxMy41QzEzLjMsMTcuMyAxMy4xLDE2LjcgMTMsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaE1pbnVzID0gXCJNMTUgMTVWMTdIMjNWMTVNMTQuOTcgMTEuNjFDMTQuODUgMTAuMjggMTMuNTkgOC45NyAxMiA5QzEwLjMgOS4wMyA5IDEwLjMgOSAxMkM5IDEzLjcgMTAuMyAxNC45NCAxMiAxNUMxMi4zOCAxNSAxMi43NyAxNC45MiAxMy4xNCAxNC43N0MxMy40MSAxMy42NyAxMy44NiAxMi42MyAxNC45NyAxMS42MU0xMyAxNkg3QzcgMTQuOSA2LjExIDE0IDUgMTRWMTBDNi4xMSAxMCA3IDkuMTEgNyA4SDE3QzE3IDkuMTEgMTcuOSAxMCAxOSAxMFYxMC4wNkMxOS42NyAxMC4wNiAyMC4zNCAxMC4xOCAyMSAxMC40VjZIM1YxOEgxMy4zMkMxMy4xIDE3LjMzIDEzIDE2LjY2IDEzIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hNdWx0aXBsZSA9IFwiTTUsNkgyM1YxOEg1VjZNMTQsOUEzLDMgMCAwLDEgMTcsMTJBMywzIDAgMCwxIDE0LDE1QTMsMyAwIDAsMSAxMSwxMkEzLDMgMCAwLDEgMTQsOU05LDhBMiwyIDAgMCwxIDcsMTBWMTRBMiwyIDAgMCwxIDksMTZIMTlBMiwyIDAgMCwxIDIxLDE0VjEwQTIsMiAwIDAsMSAxOSw4SDlNMSwxMEgzVjIwSDE5VjIySDFWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFBsdXMgPSBcIk0xNSAxNVYxN0gxOFYyMEgyMFYxN0gyM1YxNUgyMFYxMkgxOFYxNU0xNC45NyAxMS42MUMxNC44NSAxMC4yOCAxMy41OSA4Ljk3IDEyIDlDMTAuMyA5LjAzIDkgMTAuMyA5IDEyQzkgMTMuNyAxMC4zIDE0Ljk0IDEyIDE1QzEyLjM4IDE1IDEyLjc3IDE0LjkyIDEzLjE0IDE0Ljc3QzEzLjQxIDEzLjY3IDEzLjg2IDEyLjYzIDE0Ljk3IDExLjYxTTEzIDE2SDdDNyAxNC45IDYuMTEgMTQgNSAxNFYxMEM2LjExIDEwIDcgOS4xMSA3IDhIMTdDMTcgOS4xMSAxNy45IDEwIDE5IDEwVjEwLjA2QzE5LjY3IDEwLjA2IDIwLjM0IDEwLjE4IDIxIDEwLjRWNkgzVjE4SDEzLjMyQzEzLjEgMTcuMzMgMTMgMTYuNjYgMTMgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFJlZnVuZCA9IFwiTTEyLjMgOC45M0w5Ljg4IDYuNUgxNS41VjEwSDE3VjVIOS44OEwxMi4zIDIuNTdMMTEuMjQgMS41TDcgNS43NUwxMS4yNCAxMEwxMi4zIDguOTNNMTIgMTRBMyAzIDAgMSAwIDE1IDE3QTMgMyAwIDAgMCAxMiAxNE0zIDExVjIzSDIxVjExTTE5IDE5QTIgMiAwIDAgMCAxNyAyMUg3QTIgMiAwIDAgMCA1IDE5VjE1QTIgMiAwIDAgMCA3IDEzSDE3QTIgMiAwIDAgMCAxOSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXNoUmVnaXN0ZXIgPSBcIk0yLDE3SDIyVjIxSDJWMTdNNi4yNSw3SDlWNkg2VjNIMTRWNkgxMVY3SDE3LjhDMTguOCw3IDE5LjgsOCAyMCw5TDIwLjUsMTZIMy41TDQuMDUsOUM0LjA1LDggNS4wNSw3IDYuMjUsN00xMyw5VjExSDE4VjlIMTNNNiw5VjEwSDhWOUg2TTksOVYxMEgxMVY5SDlNNiwxMVYxMkg4VjExSDZNOSwxMVYxMkgxMVYxMUg5TTYsMTNWMTRIOFYxM0g2TTksMTNWMTRIMTFWMTNIOU03LDRWNUgxM1Y0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFJlbW92ZSA9IFwiTTE1LjQ2IDE4LjEyTDE2Ljg4IDE5LjU0TDE5IDE3LjQxTDIxLjEyIDE5LjU0TDIyLjU0IDE4LjEyTDIwLjQxIDE2TDIyLjU0IDEzLjg4TDIxLjEyIDEyLjQ2TDE5IDE0LjU5TDE2Ljg4IDEyLjQ2TDE1LjQ2IDEzLjg4TDE3LjU5IDE2TTE0Ljk3IDExLjYyQzE0Ljg2IDEwLjI4IDEzLjU4IDguOTcgMTIgOUMxMC4zIDkuMDQgOSAxMC4zIDkgMTJDOSAxMy43IDEwLjMgMTQuOTQgMTIgMTVDMTIuMzkgMTUgMTIuNzcgMTQuOTIgMTMuMTQgMTQuNzdDMTMuNDEgMTMuNjcgMTMuODYgMTIuNjMgMTQuOTcgMTEuNjJNMTMgMTZIN0M3IDE0LjkgNi4xIDE0IDUgMTRWMTBDNi4xIDEwIDcgOS4xIDcgOEgxN0MxNyA5LjEgMTcuOSAxMCAxOSAxMFYxMC4wNUMxOS42NyAxMC4wNiAyMC4zNCAxMC4xOCAyMSAxMC40VjZIM1YxOEgxMy4zMkMxMy4xIDE3LjMzIDEzIDE2LjY2IDEzIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc2hVc2QgPSBcIk0yMCA0SDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgyMEMyMS4xMSAyMCAyMiAxOS4xMSAyMiAxOFY2QzIyIDQuODkgMjEuMSA0IDIwIDRNMTUgMTBIMTFWMTFIMTRDMTQuNTUgMTEgMTUgMTEuNDUgMTUgMTJWMTVDMTUgMTUuNTUgMTQuNTUgMTYgMTQgMTZIMTNWMTdIMTFWMTZIOVYxNEgxM1YxM0gxMEM5LjQ1IDEzIDkgMTIuNTUgOSAxMlY5QzkgOC40NSA5LjQ1IDggMTAgOEgxMVY3SDEzVjhIMTVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzaFVzZE91dGxpbmUgPSBcIk0yMCwxOEg0VjZIMjBNMjAsNEg0QzIuODksNCAyLDQuODkgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QzIyLDQuODkgMjEuMSw0IDIwLDRNMTEsMTdIMTNWMTZIMTRBMSwxIDAgMCwwIDE1LDE1VjEyQTEsMSAwIDAsMCAxNCwxMUgxMVYxMEgxNVY4SDEzVjdIMTFWOEgxMEExLDEgMCAwLDAgOSw5VjEyQTEsMSAwIDAsMCAxMCwxM0gxM1YxNEg5VjE2SDExVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc3NldHRlID0gXCJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlINkw3LDE3SDE3TDE4LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QTIsMiAwIDAsMCAyMCw1SDRNNi41LDEwQTEuNSwxLjUgMCAwLDEgOCwxMS41QTEuNSwxLjUgMCAwLDEgNi41LDEzQTEuNSwxLjUgMCAwLDEgNSwxMS41QTEuNSwxLjUgMCAwLDEgNi41LDEwTTksMTBIMTVWMTNIOVYxME0xNy41LDEwQTEuNSwxLjUgMCAwLDEgMTksMTEuNUExLjUsMS41IDAgMCwxIDE3LjUsMTNBMS41LDEuNSAwIDAsMSAxNiwxMS41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXN0ID0gXCJNMSwxMFYxMkE5LDkgMCAwLDEgMTAsMjFIMTJDMTIsMTQuOTIgNy4wNywxMCAxLDEwTTEsMTRWMTZBNSw1IDAgMCwxIDYsMjFIOEE3LDcgMCAwLDAgMSwxNE0xLDE4VjIxSDRBMywzIDAgMCwwIDEsMThNMjEsM0gzQzEuODksMyAxLDMuODkgMSw1VjhIM1Y1SDIxVjE5SDE0VjIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QzIzLDMuODkgMjIuMSwzIDIxLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzdEF1ZGlvID0gXCJNMiAxMVYxM0M3IDEzIDExIDE3IDExIDIySDEzQzEzIDE1LjkgOC4xIDExIDIgMTFNMjAgMkgxMEM4LjkgMiA4IDIuOSA4IDRWMTAuNUM5IDExIDkuOSAxMS43IDEwLjcgMTIuNEMxMS42IDExIDEzLjIgMTAgMTUgMTBDMTcuOCAxMCAyMCAxMi4yIDIwIDE1UzE3LjggMjAgMTUgMjBIMTQuOEMxNC45IDIwLjcgMTUgMjEuMyAxNSAyMkgyMEMyMS4xIDIyIDIyIDIxLjEgMjIgMjBWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTUgOEMxMy45IDggMTMgNy4xIDEzIDZDMTMgNC45IDEzLjkgNCAxNSA0QzE2LjEgNCAxNyA0LjkgMTcgNlMxNi4xIDggMTUgOE0xNSAxOEMxNC44IDE4IDE0LjUgMTggMTQuMyAxNy45QzEzLjggMTYuNCAxMy4xIDE1LjEgMTIuMiAxMy45QzEyLjYgMTIuOCAxMy43IDExLjkgMTUgMTEuOUMxNi43IDExLjkgMTggMTMuMiAxOCAxNC45UzE2LjcgMTggMTUgMThNMiAxNVYxN0M0LjggMTcgNyAxOS4yIDcgMjJIOUM5IDE4LjEgNS45IDE1IDIgMTVNMiAxOVYyMkg1QzUgMjAuMyAzLjcgMTkgMiAxOVwiO1xyXG5leHBvcnQgdmFyIG1kaUNhc3RDb25uZWN0ZWQgPSBcIk0yMSwzSDNDMS44OSwzIDEsMy44OSAxLDVWOEgzVjVIMjFWMTlIMTRWMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVDMjMsMy44OSAyMi4xLDMgMjEsM00xLDEwVjEyQTksOSAwIDAsMSAxMCwyMUgxMkMxMiwxNC45MiA3LjA3LDEwIDEsMTBNMTksN0g1VjguNjNDOC45Niw5LjkxIDEyLjA5LDEzLjA0IDEzLjM3LDE3SDE5TTEsMTRWMTZBNSw1IDAgMCwxIDYsMjFIOEE3LDcgMCAwLDAgMSwxNE0xLDE4VjIxSDRBMywzIDAgMCwwIDEsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzdEVkdWNhdGlvbiA9IFwiTTIxLDNIM0EyLDIgMCAwLDAgMSw1VjhIM1Y1SDIxVjE5SDE0VjIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QTIsMiAwIDAsMCAyMSwzTTEsMThWMjFINEEzLDMgMCAwLDAgMSwxOE0xLDE0VjE2QTUsNSAwIDAsMSA2LDIxSDhBNyw3IDAgMCwwIDEsMTRNMSwxMFYxMkE5LDkgMCAwLDEgMTAsMjFIMTJDMTIsMTQuOTIgNy4wNywxMCAxLDEwTTExLDExLjA5VjEzLjA5TDE0LjUsMTVMMTgsMTMuMDlWMTEuMDlMMTQuNSwxM0wxMSwxMS4wOU0xNC41LDZMOSw5TDE0LjUsMTJMMjAsOUwxNC41LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2FzdE9mZiA9IFwiTTEuNiwxLjI3TDAuMjUsMi43NUwxLjQxLDMuOEMxLjE2LDQuMTMgMSw0LjU1IDEsNVY4SDNWNS4yM0wxOC4yLDE5SDE0VjIxSDIwLjQxTDIyLjMxLDIyLjcyTDIzLjY1LDIxLjI0TTYuNSwzTDguNyw1SDIxVjE2LjE0TDIzLDE3Ljk1VjVDMjMsMy44OSAyMi4xLDMgMjEsM00xLDEwVjEyQTksOSAwIDAsMSAxMCwyMUgxMkMxMiwxNC45MiA3LjA4LDEwIDEsMTBNMSwxNFYxNkE1LDUgMCAwLDEgNiwyMUg4QTcsNyAwIDAsMCAxLDE0TTEsMThWMjFINEEzLDMgMCAwLDAgMSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXN0bGUgPSBcIk0yLDEzSDRWMTVINlYxM0g4VjE1SDEwVjEzSDEyVjE1SDE0VjEwTDE3LDdWMUgxOUwyMywzTDE5LDVWN0wyMiwxMFYyMkgxMVYxOUEyLDIgMCAwLDAgOSwxN0EyLDIgMCAwLDAgNywxOVYyMkgyVjEzTTE4LDEwQzE3LjQ1LDEwIDE3LDEwLjU0IDE3LDExLjJWMTNIMTlWMTEuMkMxOSwxMC41NCAxOC41NSwxMCAxOCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDYXQgPSBcIk0xMiw4TDEwLjY3LDguMDlDOS44MSw3LjA3IDcuNCw0LjUgNSw0LjVDNSw0LjUgMy4wMyw3LjQ2IDQuOTYsMTEuNDFDNC40MSwxMi4yNCA0LjA3LDEyLjY3IDQsMTMuNjZMMi4wNywxMy45NUwyLjI4LDE0LjkzTDQuMDQsMTQuNjdMNC4xOCwxNS4zOEwyLjYxLDE2LjMyTDMuMDgsMTcuMjFMNC41MywxNi4zMkM1LjY4LDE4Ljc2IDguNTksMjAgMTIsMjBDMTUuNDEsMjAgMTguMzIsMTguNzYgMTkuNDcsMTYuMzJMMjAuOTIsMTcuMjFMMjEuMzksMTYuMzJMMTkuODIsMTUuMzhMMTkuOTYsMTQuNjdMMjEuNzIsMTQuOTNMMjEuOTMsMTMuOTVMMjAsMTMuNjZDMTkuOTMsMTIuNjcgMTkuNTksMTIuMjQgMTkuMDQsMTEuNDFDMjAuOTcsNy40NiAxOSw0LjUgMTksNC41QzE2LjYsNC41IDE0LjE5LDcuMDcgMTMuMzMsOC4wOUwxMiw4TTksMTFBMSwxIDAgMCwxIDEwLDEyQTEsMSAwIDAsMSA5LDEzQTEsMSAwIDAsMSA4LDEyQTEsMSAwIDAsMSA5LDExTTE1LDExQTEsMSAwIDAsMSAxNiwxMkExLDEgMCAwLDEgMTUsMTNBMSwxIDAgMCwxIDE0LDEyQTEsMSAwIDAsMSAxNSwxMU0xMSwxNEgxM0wxMi4zLDE1LjM5QzEyLjUsMTYuMDMgMTMuMDYsMTYuNSAxMy43NSwxNi41QTEuNSwxLjUgMCAwLDAgMTUuMjUsMTVIMTUuNzVBMiwyIDAgMCwxIDEzLjc1LDE3QzEzLDE3IDEyLjM1LDE2LjU5IDEyLDE2VjE2SDEyQzExLjY1LDE2LjU5IDExLDE3IDEwLjI1LDE3QTIsMiAwIDAsMSA4LjI1LDE1SDguNzVBMS41LDEuNSAwIDAsMCAxMC4yNSwxNi41QzEwLjk0LDE2LjUgMTEuNSwxNi4wMyAxMS43LDE1LjM5TDExLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNjdHYgPSBcIk0xOC4xNSw0Ljk0QzE3Ljc3LDQuOTEgMTcuMzcsNSAxNyw1LjJMOC4zNSwxMC4yQzcuMzksMTAuNzYgNy4wNywxMiA3LjYyLDEyLjk0TDkuMTIsMTUuNTNDOS42NywxNi41IDEwLjg5LDE2LjgyIDExLjg1LDE2LjI3TDEzLjY1LDE1LjIzQzEzLjkyLDE1LjY5IDE0LjMyLDE2LjA2IDE0LjgxLDE2LjI3VjE4LjA0QzE0LjgxLDE5LjEzIDE1LjcsMjAgMTYuODEsMjBIMjJWMTguMDRIMTYuODFWMTYuMjdDMTcuNzIsMTUuODcgMTguMzEsMTQuOTcgMTguMzEsMTRDMTguMzEsMTMuNTQgMTguMTksMTMuMTEgMTcuOTcsMTIuNzNMMjAuNSwxMS4yN0MyMS40NywxMC43MSAyMS44LDkuNSAyMS4yNCw4LjUzTDE5Ljc0LDUuOTRDMTkuNCw1LjM0IDE4Ljc5LDUgMTguMTUsNC45NE02LjIyLDEzLjE3TDIsMTMuODdMMi43NSwxNS4xN0w0Ljc1LDE4LjYzTDUuNSwxOS45M0w4LjIyLDE2LjYzTDYuMjIsMTMuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VpbGluZ0xpZ2h0ID0gXCJNOCw5SDExVjRIMTNWOUgxNkwyMCwxN0g0TDgsOU0xNCwxOEEyLDIgMCAwLDEgMTIsMjBBMiwyIDAgMCwxIDEwLDE4SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZSA9IFwiTTE3LDE5SDdWNUgxN00xNywxSDdDNS44OSwxIDUsMS44OSA1LDNWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjNDMTksMS44OSAxOC4xLDEgMTcsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVBbmRyb2lkID0gXCJNMTcuMjUsMThINi43NVY0SDE3LjI1TTE0LDIxSDEwVjIwSDE0TTE2LDFIOEEzLDMgMCAwLDAgNSw0VjIwQTMsMyAwIDAsMCA4LDIzSDE2QTMsMyAwIDAsMCAxOSwyMFY0QTMsMyAwIDAsMCAxNiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUFycm93RG93biA9IFwiTTE3LDFIN0EyLDIgMCAwLDAgNSwzVjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVYzQTIsMiAwIDAsMCAxNywxTTE3LDE5SDdWNUgxN1YxOU0xNiwxM0gxM1Y4SDExVjEzSDhMMTIsMTdMMTYsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lQmFzaWMgPSBcIk0xNSwyQTEsMSAwIDAsMCAxNCwzVjZIMTBDOC44OSw2IDgsNi44OSA4LDhWMjBDOCwyMS4xMSA4Ljg5LDIyIDEwLDIySDE1QzE2LjExLDIyIDE3LDIxLjExIDE3LDIwVjhDMTcsNy4yNiAxNi42LDYuNjIgMTYsNi4yOFYzQTEsMSAwIDAsMCAxNSwyTTEwLDhIMTVWMTNIMTBWOE0xMCwxNUgxMVYxNkgxMFYxNU0xMiwxNUgxM1YxNkgxMlYxNU0xNCwxNUgxNVYxNkgxNFYxNU0xMCwxN0gxMVYxOEgxMFYxN00xMiwxN0gxM1YxOEgxMlYxN00xNCwxN0gxNVYxOEgxNFYxN00xMCwxOUgxMVYyMEgxMFYxOU0xMiwxOUgxM1YyMEgxMlYxOU0xNCwxOUgxNVYyMEgxNFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVDaGFyZ2luZyA9IFwiTTExIDE4LjVWMTNIOUwxMyA1LjVWMTFIMTVNMTcgMTlIN1Y1SDE3TTE3IDFIN0M1Ljg5IDEgNSAxLjg5IDUgM1YyMUEyIDIgMCAwIDAgNyAyM0gxN0EyIDIgMCAwIDAgMTkgMjFWM0MxOSAxLjg5IDE4LjEgMSAxNyAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUNvZyA9IFwiTTkuODIsMTIuNUM5Ljg0LDEyLjMzIDkuODYsMTIuMTcgOS44NiwxMkM5Ljg2LDExLjgzIDkuODQsMTEuNjcgOS44MiwxMS41TDEwLjksMTAuNjlDMTEsMTAuNjIgMTEsMTAuNSAxMC45NiwxMC4zN0w5LjkzLDguNjRDOS44Nyw4LjUzIDkuNzMsOC41IDkuNjIsOC41M0w4LjM0LDkuMDNDOC4wNyw4LjgzIDcuNzgsOC42NyA3LjQ3LDguNTRMNy4yNyw3LjIxQzcuMjcsNy4wOSA3LjE2LDcgNy4wMyw3SDVDNC44NSw3IDQuNzQsNy4wOSA0LjcyLDcuMjFMNC41LDguNTNDNC4yMSw4LjY1IDMuOTIsOC44MyAzLjY1LDlMMi4zNyw4LjVDMi4yNSw4LjQ3IDIuMTIsOC41IDIuMDYsOC42M0wxLjAzLDEwLjM2QzAuOTcsMTAuNSAxLDEwLjYxIDEuMSwxMC42OUwyLjE4LDExLjVDMi4xNiwxMS42NyAyLjE1LDExLjg0IDIuMTUsMTJDMi4xNSwxMi4xNyAyLjE3LDEyLjMzIDIuMTksMTIuNUwxLjEsMTMuMzJDMSwxMy4zOSAxLDEzLjUzIDEuMDQsMTMuNjRMMi4wNywxNS4zN0MyLjEzLDE1LjUgMi4yNywxNS41IDIuMzgsMTUuNUwzLjY2LDE1QzMuOTMsMTUuMTggNC4yMiwxNS4zNCA0LjUzLDE1LjQ3TDQuNzMsMTYuNzlDNC43NCwxNi45MSA0Ljg1LDE3IDUsMTdINy4wNEM3LjE3LDE3IDcuMjgsMTYuOTEgNy4yOSwxNi43OUw3LjUsMTUuNDdDNy44LDE1LjM1IDguMDksMTUuMTcgOC4zNiwxNUw5LjY0LDE1LjVDOS43NiwxNS41MyA5Ljg5LDE1LjUgOS45NSwxNS4zN0wxMSwxMy42NEMxMS4wNCwxMy41MyAxMSwxMy40IDEwLjkyLDEzLjMyTDkuODIsMTIuNU02LDEzLjc1QzUsMTMuNzUgNC4yLDEyLjk3IDQuMiwxMkM0LjIsMTEuMDMgNSwxMC4yNSA2LDEwLjI1QzcsMTAuMjUgNy44LDExLjAzIDcuOCwxMkM3LjgsMTIuOTcgNywxMy43NSA2LDEzLjc1TTE3LDFIN0EyLDIgMCAwLDAgNSwzVjZIN1Y0SDE3VjIwSDdWMThINVYyMUEyLDIgMCAwLDAgNywyM0gxN0EyLDIgMCAwLDAgMTksMjFWM0EyLDIgMCAwLDAgMTcsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVEb2NrID0gXCJNMTYsMTVIOFY1SDE2TTE2LDFIOEM2Ljg5LDEgNiwxLjg5IDYsM1YxN0EyLDIgMCAwLDAgOCwxOUgxNkEyLDIgMCAwLDAgMTgsMTdWM0MxOCwxLjg5IDE3LjEsMSAxNiwxTTgsMjNIMTZWMjFIOFYyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVFcmFzZSA9IFwiTTExLDguMkwxMCw3LjJMNiwxMS4yTDIsNy4yTDEsOC4yTDUsMTIuMkwxLDE2LjJMMiwxNy4yTDYsMTMuMkwxMCwxNy4yTDExLDE2LjJMNywxMi4yTDExLDguMk0xNywxSDdBMiwyIDAgMCwwIDUsM1Y2SDdWNEgxN1YyMEg3VjE4SDVWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjNBMiwyIDAgMCwwIDE3LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lSW5mb3JtYXRpb24gPSBcIk0xMyA3SDExVjlIMTNWN00xMyAxMUgxMVYxN0gxM1YxMU0xNyAxSDdDNS45IDEgNSAxLjkgNSAzVjIxQzUgMjIuMSA1LjkgMjMgNyAyM0gxN0MxOC4xIDIzIDE5IDIyLjEgMTkgMjFWM0MxOSAxLjkgMTguMSAxIDE3IDFNMTcgMTlIN1Y1SDE3VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUlwaG9uZSA9IFwiTTE2LDE4SDdWNEgxNk0xMS41LDIyQTEuNSwxLjUgMCAwLDEgMTAsMjAuNUExLjUsMS41IDAgMCwxIDExLjUsMTlBMS41LDEuNSAwIDAsMSAxMywyMC41QTEuNSwxLjUgMCAwLDEgMTEuNSwyMk0xNS41LDFINy41QTIuNSwyLjUgMCAwLDAgNSwzLjVWMjAuNUEyLjUsMi41IDAgMCwwIDcuNSwyM0gxNS41QTIuNSwyLjUgMCAwLDAgMTgsMjAuNVYzLjVBMi41LDIuNSAwIDAsMCAxNS41LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lS2V5ID0gXCJNNywxQTIsMiAwIDAsMCA1LDNWN0g3VjRIMTdWMjBIN1YxN0g1VjIxQTIsMiAwIDAsMCA3LDIzSDE3QTIsMiAwIDAsMCAxOSwyMVYzQTIsMiAwIDAsMCAxNywxSDdNNiw5QTMsMyAwIDAsMCAzLDEyQTMsMyAwIDAsMCA2LDE1QzcuMzEsMTUgOC40MiwxNC4xNyA4LjgzLDEzSDExVjE1SDEzVjEzSDE0VjExSDguODNDOC40Miw5LjgzIDcuMzEsOSA2LDlNNiwxMUExLDEgMCAwLDEgNywxMkExLDEgMCAwLDEgNiwxM0ExLDEgMCAwLDEgNSwxMkExLDEgMCAwLDEgNiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVMaW5rID0gXCJNMjIsMTdIMThWMTBIMjJNMjMsOEgxN0ExLDEgMCAwLDAgMTYsOVYxOUExLDEgMCAwLDAgMTcsMjBIMjNBMSwxIDAgMCwwIDI0LDE5VjlBMSwxIDAgMCwwIDIzLDhNNCw2SDIyVjRINEEyLDIgMCAwLDAgMiw2VjE3SDBWMjBIMTRWMTdINFY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUxpbmtPZmYgPSBcIk0yMyw4SDE3QTEsMSAwIDAsMCAxNiw5VjEzLjE4TDE4LDE1LjE4VjEwSDIyVjE3SDE5LjgyTDIyLjgyLDIwSDIzQTEsMSAwIDAsMCAyNCwxOVY5QTEsMSAwIDAsMCAyMyw4TTQsNi4yN0wxNC43MywxN0g0VjYuMjdNMS45MiwxLjY1TDAuNjUsMi45MkwyLjQ3LDQuNzRDMi4xOCw1LjA4IDIsNS41IDIsNlYxN0gwVjIwSDE3LjczTDIwLjA4LDIyLjM1TDIxLjM1LDIxLjA4TDMuODksMy42MkwxLjkyLDEuNjVNMjIsNlY0SDYuODJMOC44Miw2SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZUxvY2sgPSBcIk0xNywxSDdBMiwyIDAgMCwwIDUsM1Y2SDdWNEgxN1YyMEg3VjE4SDVWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjNBMiwyIDAgMCwwIDE3LDFNOC44LDExVjkuNUM4LjgsOC4xIDcuNCw3IDYsN0M0LjYsNyAzLjIsOC4xIDMuMiw5LjVWMTFDMi42LDExIDIsMTEuNiAyLDEyLjJWMTUuN0MyLDE2LjQgMi42LDE3IDMuMiwxN0g4LjdDOS40LDE3IDEwLDE2LjQgMTAsMTUuOFYxMi4zQzEwLDExLjYgOS40LDExIDguOCwxMU03LjUsMTFINC41VjkuNUM0LjUsOC43IDUuMiw4LjIgNiw4LjJDNi44LDguMiA3LjUsOC43IDcuNSw5LjVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lTWVzc2FnZSA9IFwiTTExLDE3VjdINFYxN0gxMU0xMSwzQTIsMiAwIDAsMSAxMyw1VjE5QTIsMiAwIDAsMSAxMSwyMUg0QzIuODksMjEgMiwyMC4xIDIsMTlWNUEyLDIgMCAwLDEgNCwzSDExTTE2LjUsM0gyMS41QTEuNSwxLjUgMCAwLDEgMjMsNC41VjcuNUExLjUsMS41IDAgMCwxIDIxLjUsOUgxOEwxNSwxMlY5TDE1LDQuNUExLjUsMS41IDAgMCwxIDE2LjUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVNZXNzYWdlT2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0wyLjIyIDQuMTFDMi4wOCA0LjM4IDIgNC42OCAyIDVWMTlDMiAyMC4xIDIuODkgMjEgNCAyMUgxMUMxMi4xIDIxIDEzIDIwLjEgMTMgMTlWMTQuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTExIDE3SDRWN0g1LjExTDExIDEyLjg5VjE3TTIzIDQuNVY3LjVDMjMgOC4zMyAyMi4zMyA5IDIxLjUgOUgxOEwxNS4xIDExLjlMMTUgMTEuOFY0LjVDMTUgMy42NyAxNS42NyAzIDE2LjUgM0gyMS41QzIyLjMzIDMgMjMgMy42NyAyMyA0LjVNMTAuMiA3TDYuMiAzSDExQzEyLjEgMyAxMyAzLjkgMTMgNVY5LjhMMTEgNy44VjdIMTAuMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZU5mYyA9IFwiTTIsMTZWMThBNSw1IDAgMCwxIDcsMjNIOUE3LDcgMCAwLDAgMiwxNk0yLDIwVjIzSDVBMywzIDAgMCwwIDIsMjBNMiwxMlYxNEE5LDkgMCAwLDEgMTEsMjNIMTNDMTMsMTYuOTIgOC4wOCwxMiAyLDEyTTE3LDFIN0EyLDIgMCAwLDAgNSwzVjEwLjM3QzUuNjksMTAuNTMgNi4zNiwxMC43NCA3LDExVjVIMTdWMThIMTMuOTdDMTQuNSwxOS4yNSAxNC44MSwyMC41OSAxNC45MiwyMkgxN0EyLDIgMCAwLDAgMTksMjBWM0EyLDIgMCAwLDAgMTcsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVOZmNPZmYgPSBcIk0yMC44NCAyMi43M0wxOC44NSAyMC43NEMxOC41NiAyMS41IDE3Ljg0IDIyIDE3IDIySDE0LjkyQzE0LjgxIDIwLjU5IDE0LjUgMTkuMjUgMTMuOTcgMThIMTYuMTFMNyA4Ljg5VjExQzYuMzYgMTAuNzQgNS42OSAxMC41MyA1IDEwLjM3VjYuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNyA1VjEzLjhMMTkgMTUuOFYzQzE5IDEuOSAxOC4xMSAxIDE3IDFIN0M2LjI0IDEgNS41OSAxLjQzIDUuMjUgMi4wNUw4LjIgNUgxN00yIDIwVjIzSDVDNSAyMS4zNCAzLjY2IDIwIDIgMjBNMiAxNlYxOEM0Ljc2IDE4IDcgMjAuMjQgNyAyM0g5QzkgMTkuMTMgNS44NyAxNiAyIDE2TTIgMTJWMTRDNi45NyAxNCAxMSAxOC4wMyAxMSAyM0gxM0MxMyAxNi45MiA4LjA4IDEyIDIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lT2ZmID0gXCJNMi4zOCwxLjczTDEuMTEsM0w1LDYuODlWMjFBMiwyIDAgMCwwIDcsMjNIMTdBMiwyIDAgMCwwIDE5LDIxVjIwLjg5TDIwLjg0LDIyLjczTDIyLjExLDIxLjQ2TTE3LDE5SDdWOC44OUwxNywxOC44OVYxOU0xNyw1VjEzLjhMMTksMTUuOFYzQTIsMiAwIDAsMCAxNywxSDdDNi4yOCwxIDUuNiwxLjM3IDUuMjQsMkw4LjI0LDVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lUGxheSA9IFwiTTE3IDE5SDdWNUgxN00xNyAxSDdDNS44OSAxIDUgMS44OSA1IDNWMjFDNSAyMi4xIDUuOSAyMyA3IDIzSDE3QzE4LjEgMjMgMTkgMjIuMSAxOSAyMVYzQzE5IDEuODkgMTguMSAxIDE3IDFNMTAgOVYxNUwxNCAxMkwxMCA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbGxwaG9uZVNjcmVlbnNob3QgPSBcIk03LDFBMiwyIDAgMCwwIDUsM1YyMUEyLDIgMCAwLDAgNywyM0gxN0EyLDIgMCAwLDAgMTksMjFWM0EyLDIgMCAwLDAgMTcsMUg3TTcsNEgxN1YyMEg3VjRNOSw2VjEwSDEwLjVWNy41SDEzVjZIOU0xMy41LDE0VjE2LjVIMTFWMThIMTVWMTRIMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVTZXR0aW5ncyA9IFwiTTE2LDE2SDhWNEgxNk0xNiwwSDhBMiwyIDAgMCwwIDYsMlYxOEEyLDIgMCAwLDAgOCwyMEgxNkEyLDIgMCAwLDAgMTgsMThWMkEyLDIgMCAwLDAgMTYsME0xNSwyNEgxN1YyMkgxNU0xMSwyNEgxM1YyMkgxMU03LDI0SDlWMjJIN1YyNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVTb3VuZCA9IFwiTTE5LjEsOC43QzIwLjksMTAuNSAyMC45LDEzLjMgMTkuMSwxNS4yTDIwLjEsMTYuMkMyMi42LDEzLjkgMjIuNiwxMC4xIDIwLjEsNy43TDE5LjEsOC43TTE4LDkuOEwxNywxMC44QzE3LjUsMTEuNSAxNy41LDEyLjQgMTcsMTMuMUwxOCwxNC4xQzE5LjIsMTIuOSAxOS4yLDExLjEgMTgsOS44TTE0LDFINEEyLDIgMCAwLDAgMiwzVjIxQTIsMiAwIDAsMCA0LDIzSDE0QTIsMiAwIDAsMCAxNiwyMVYzQTIsMiAwIDAsMCAxNCwxTTE0LDIwSDRWNEgxNFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDZWxscGhvbmVUZXh0ID0gXCJNMTcsMTlWNUg3VjE5SDE3TTE3LDFBMiwyIDAgMCwxIDE5LDNWMjFBMiwyIDAgMCwxIDE3LDIzSDdDNS44OSwyMyA1LDIyLjEgNSwyMVYzQzUsMS44OSA1Ljg5LDEgNywxSDE3TTksN0gxNVY5SDlWN005LDExSDEzVjEzSDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2VsbHBob25lV2lyZWxlc3MgPSBcIk0yMC4wNyw0LjkzQzIxLjg4LDYuNzQgMjMsOS4yNCAyMywxMkMyMywxNC43NiAyMS44OCwxNy4yNiAyMC4wNywxOS4wN0wxOC42NiwxNy42NkMyMC4xMSwxNi4yMiAyMSwxNC4yMiAyMSwxMkMyMSw5Ljc5IDIwLjExLDcuNzggMTguNjYsNi4zNEwyMC4wNyw0LjkzTTE3LjI0LDcuNzZDMTguMzMsOC44NSAxOSwxMC4zNSAxOSwxMkMxOSwxMy42NSAxOC4zMywxNS4xNSAxNy4yNCwxNi4yNEwxNS44MywxNC44M0MxNi41NSwxNC4xMSAxNywxMy4xMSAxNywxMkMxNywxMC44OSAxNi41NSw5Ljg5IDE1LjgzLDkuMTdMMTcuMjQsNy43Nk0xMywxMEEyLDIgMCAwLDEgMTUsMTJBMiwyIDAgMCwxIDEzLDE0QTIsMiAwIDAsMSAxMSwxMkEyLDIgMCAwLDEgMTMsMTBNMTEuNSwxQTIuNSwyLjUgMCAwLDEgMTQsMy41VjhIMTJWNEgzVjE5SDEyVjE2SDE0VjIwLjVBMi41LDIuNSAwIDAsMSAxMS41LDIzSDMuNUEyLjUsMi41IDAgMCwxIDEsMjAuNVYzLjVBMi41LDIuNSAwIDAsMSAzLjUsMUgxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbHRpY0Nyb3NzID0gXCJNMTcuOCw4QzE3LjI2LDUuODkgMTUuNjEsNC4yNCAxMy41LDMuN1YySDEwLjVWMy43QzguMzksNC4yNCA2Ljc0LDUuODkgNi4yLDhINFYxMUg2LjJDNi43NCwxMy4xMSA4LjM5LDE0Ljc2IDEwLjUsMTUuM1YyMkgxMy41VjE1LjNDMTUuNjEsMTQuNzYgMTcuMjYsMTMuMTEgMTcuOCwxMUgxOS45N1Y4SDE3LjhNMTIuMDQsOS41M0wxNC41LDExSDE1Ljc2QzE1LjM1LDEyLjAzIDE0LjUzLDEyLjg0IDEzLjUsMTMuMjZWMTJMMTIuMDYsOS41NkwxMiw5LjVMMTEuOTQsOS41NkwxMC41LDEyVjEzLjI2QzkuNDcsMTIuODQgOC42NiwxMi4wMyA4LjI0LDExSDkuNUwxMS45Niw5LjUzTDEyLDkuNUgxMS45Nkw5LjUsOEg4LjI0QzguNjUsNi45NyA5LjQ3LDYuMTYgMTAuNSw1Ljc0VjdMMTEuOTQsOS40NEwxMiw5LjVMMTIuMDYsOS40NEwxMy41LDdWNS43NEMxNC41Myw2LjE2IDE1LjM1LDYuOTcgMTUuNzYsOEgxNC41TDEyLjA0LDkuNUgxMkwxMi4wNCw5LjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlbnRvcyA9IFwiTTE5LjA3IDE0LjkzTDIyIDEyTDE5LjA3IDkuMDdWNC45M0gxNC45M0wxMiAyTDkuMDcgNC45M0g0LjkzVjkuMDdMMiAxMkw0LjkzIDE0LjkzVjE5LjA3SDkuMDdMMTIgMjJMMTQuOTMgMTkuMDdIMTkuMDdWMTQuOTNNMjEuNDEgMTJMMTkuMDcgMTQuMzRWMTIuNDZIMTMuNjlMMTMuMjMgMTJMMTMuNjkgMTEuNTRIMTkuMDdWOS42NkwyMS40MSAxMk0xOC42NiAxNC43NkwxNy4zMiAxNi4wOUwxNC4xMSAxMi44N0gxOC42NlYxNC43Nk0xMi40NiAxMy4xTDEyIDEyLjY1TDExLjU0IDEzLjFWMTIuNDZIMTAuOUwxMS4zNiAxMkwxMC45IDExLjU0SDExLjU0VjEwLjlMMTIgMTEuMzZMMTIuNDYgMTAuOVYxMS41NEgxMy4xTDEyLjY1IDEyTDEzLjEgMTIuNDZIMTIuNDZWMTMuMU0xNC4xMSAxMS4xM0wxNy4zMiA3LjkxTDE4LjY2IDkuMjRWMTEuMTNIMTQuMTFNMTguNjYgNS4zNVY4LjY1TDE3LjMyIDcuMzJMMTMuNSAxMS4xM0gxMi44N1YxMC41TDE2LjY4IDYuNjhMMTUuMzUgNS4zNUgxOC42Nk0xMi44NyA5Ljg5VjUuMzVIMTQuNzZMMTYuMDkgNi42OEwxMi44NyA5Ljg5TTEyIDIuNTlMMTQuMzQgNC45M0gxMi40NlYxMC4zMUwxMiAxMC43N0wxMS41NCAxMC4zMVY0LjkzSDkuNjZMMTIgMi41OU0xMS4xMyA5Ljg5TDcuOTEgNi42OEw5LjI0IDUuMzVIMTEuMTNWOS44OU01LjM1IDUuMzVIOC42NUw3LjMyIDYuNjhMMTEuMTMgMTAuNVYxMS4xM0gxMC41TDYuNjggNy4zMkw1LjM1IDguNjVWNS4zNU01LjM1IDkuMjRMNi42OCA3LjkxTDkuODkgMTEuMTNINS4zNVY5LjI0TTIuNTkgMTJMNC45MyA5LjY2VjExLjU0SDEwLjMxTDEwLjc3IDEyTDEwLjMxIDEyLjQ2SDQuOTNWMTQuMzRMMi41OSAxMk05Ljg5IDEyLjg3TDYuNjggMTYuMDlMNS4zNSAxNC43NlYxMi44N0g5Ljg5TTUuMzUgMTguNjZWMTUuMzVMNi42OCAxNi42OEwxMC41IDEyLjg3SDExLjEzVjEzLjVMNy4zMiAxNy4zMkw4LjY1IDE4LjY1SDUuMzVNMTEuMTMgMTQuMTFWMTguNjZIOS4yNEw3LjkxIDE3LjMyTDExLjEzIDE0LjExTTEyIDIxLjQxTDkuNjYgMTkuMDdIMTEuNTRWMTMuNjlMMTIgMTMuMjNMMTIuNDYgMTMuNjlWMTkuMDdIMTQuMzRMMTIgMjEuNDFNMTIuODcgMTQuMTFMMTYuMDkgMTcuMzJMMTQuNzYgMTguNjZIMTIuODdWMTQuMTFNMTUuMzUgMTguNjZMMTYuNjggMTcuMzJMMTIuODcgMTMuNVYxMi44N0gxMy41TDE3LjMyIDE2LjY4TDE4LjY1IDE1LjM1VjE4LjY2SDE1LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNlcnRpZmljYXRlID0gXCJNNCwzQzIuODksMyAyLDMuODkgMiw1VjE1QTIsMiAwIDAsMCA0LDE3SDEyVjIyTDE1LDE5TDE4LDIyVjE3SDIwQTIsMiAwIDAsMCAyMiwxNVY4TDIyLDZWNUEyLDIgMCAwLDAgMjAsM0gxNlYzSDRNMTIsNUwxNSw3TDE4LDVWOC41TDIxLDEwTDE4LDExLjVWMTVMMTUsMTNMMTIsMTVWMTEuNUw5LDEwTDEyLDguNVY1TTQsNUg5VjdINFY1TTQsOUg3VjExSDRWOU00LDEzSDlWMTVINFYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDZXJ0aWZpY2F0ZU91dGxpbmUgPSBcIk0xMyAyMUwxNSAyMEwxNyAyMVYxNEgxM00xNyA5VjdMMTUgOEwxMyA3VjlMMTEgMTBMMTMgMTFWMTNMMTUgMTJMMTcgMTNWMTFMMTkgMTBNMjAgM0g0QTIgMiAwIDAgMCAyIDVWMTVBMiAyIDAgMCAwIDQgMTdIMTFWMTVINFY1SDIwVjE1SDE5VjE3SDIwQTIgMiAwIDAgMCAyMiAxNVY1QTIgMiAwIDAgMCAyMCAzTTExIDhINVY2SDExTTkgMTFINVY5SDlNMTEgMTRINVYxMkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFpclJvbGxpbmcgPSBcIk0yMiAxMFYxM0gxOVYxMEgyMk0yIDEzSDVWMTBIMlYxM00xNyA1QzE3IDMuOSAxNi4xIDMgMTUgM0g5QzcuOSAzIDcgMy45IDcgNVYxM0gxN1Y1TTcgMTVINlYxN0gxMVYxOEw3IDIySDkuOEwxMiAxOS44TDE0LjIgMjJIMTdMMTMgMThWMTdIMThWMTVIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFpclNjaG9vbCA9IFwiTTIyLDVWN0gxN0wxMy41MywxMkgxNlYxNEgxNC40NkwxOC4xNywyMkgxNS45N0wxNS4wNCwyMEg2LjM4TDUuMzUsMjJIMy4xTDcuMjMsMTRIN0M2LjU1LDE0IDYuMTcsMTMuNyA2LjA0LDEzLjNMMi44NywzLjg0TDMuODIsMy41QzQuMzQsMy4zNCA0LjkxLDMuNjMgNS4wOCw0LjE1TDcuNzIsMTJIMTIuMUwxNS41Nyw3SDEyVjVIMjJNOS41LDE0TDcuNDIsMThIMTQuMTFMMTIuMjYsMTRIOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJpdHkgPSBcIk0xMi43NSwzLjk0QzEzLjc1LDMuMjIgMTQuOTEsMi44NiAxNi4yMiwyLjg2QzE2Ljk0LDIuODYgMTcuNzMsMy4wNSAxOC41OSwzLjQ1QzE5LjQ1LDMuODQgMjAuMTMsNC4zIDIwLjYzLDQuODNDMjEuNjYsNi4xMSAyMi4wOSw3LjYgMjEuOTQsOS4zQzIxLjc4LDExIDIxLjIyLDEyLjMzIDIwLjI1LDEzLjI3TDEyLjY2LDIwLjg2QzEyLjQ3LDIxLjA1IDEyLjIzLDIxLjE0IDExLjk1LDIxLjE0QzExLjY3LDIxLjE0IDExLjQ0LDIxLjA1IDExLjI1LDIwLjg2QzExLjA2LDIwLjY3IDEwLjk3LDIwLjQ0IDEwLjk3LDIwLjE2QzEwLjk3LDE5Ljg4IDExLjA2LDE5LjY0IDExLjI1LDE5LjQ1TDE1Ljg0LDE0Ljg2QzE2LjA5LDE0LjY0IDE2LjA5LDE0LjQxIDE1Ljg0LDE0LjE2QzE1LjU5LDEzLjkxIDE1LjM2LDEzLjkxIDE1LjE0LDE0LjE2TDEwLjU1LDE4Ljc1QzEwLjM2LDE4Ljk0IDEwLjEzLDE5LjAzIDkuODQsMTkuMDNDOS41NiwxOS4wMyA5LjMzLDE4Ljk0IDkuMTQsMTguNzVDOC45NSwxOC41NiA4Ljg2LDE4LjMzIDguODYsMTguMDVDOC44NiwxNy43NyA4Ljk1LDE3LjUzIDkuMTQsMTcuMzRMMTMuNzMsMTIuNzVDMTQsMTIuNSAxNCwxMi4yNSAxMy43MywxMkMxMy41LDExLjc1IDEzLjI4LDExLjc1IDEzLjAzLDEyTDguNDQsMTYuNjRDOC4yNSwxNi44MyA4LDE2LjkyIDcuNzMsMTYuOTJDNy40NSwxNi45MiA3LjIxLDE2LjgzIDcsMTYuNjRDNi44LDE2LjQ1IDYuNywxNi4yMiA2LjcsMTUuOTRDNi43LDE1LjY2IDYuODEsMTUuNDEgNy4wMywxNS4xOUwxMS42MywxMC41OUMxMS44OCwxMC4zNCAxMS44OCwxMC4xMSAxMS42Myw5Ljg5QzExLjM4LDkuNjcgMTEuMTQsOS42NyAxMC45Miw5Ljg5TDYuMjgsMTQuNUM2LjA2LDE0LjcgNS44MywxNC44MSA1LjU4LDE0LjgxQzUuMywxNC44MSA1LjA2LDE0LjcxIDQuODgsMTQuNUM0LjY5LDE0LjMgNC41OSwxNC4wNiA0LjU5LDEzLjc4QzQuNTksMTMuNSA0LjY5LDEzLjI3IDQuODgsMTMuMDhDNy45NCwxMCA5LjgzLDguMTQgMTAuNTUsNy40NUwxNC4xMSwxMC45N0MxNC41LDExLjM0IDE0Ljk1LDExLjUzIDE1LjUsMTEuNTNDMTYuMiwxMS41MyAxNi43NSwxMS4yNSAxNy4xNiwxMC42OUMxNy40NCwxMC4yOCAxNy41NCw5LjgzIDE3LjQ2LDkuMzNDMTcuMzgsOC44MyAxNy4xNyw4LjQxIDE2LjgzLDguMDZMMTIuNzUsMy45NE0xNC44MSwxMC4yN0wxMC41NSw2TDMuNDcsMTMuMDhDMi42MywxMi4yMyAyLjE1LDEwLjkzIDIuMDQsOS4xNkMxLjkzLDcuNCAyLjQxLDUuODcgMy40Nyw0LjU5QzQuNjYsMy40MSA2LjA4LDIuODEgNy43MywyLjgxQzkuMzksMi44MSAxMC44LDMuNDEgMTEuOTUsNC41OUwxNi4yMiw4Ljg2QzE2LjQxLDkuMDUgMTYuNSw5LjI4IDE2LjUsOS41NkMxNi41LDkuODQgMTYuNDEsMTAuMDggMTYuMjIsMTAuMjdDMTYuMDMsMTAuNDUgMTUuOCwxMC41NSAxNS41LDEwLjU1QzE1LjIzLDEwLjU1IDE1LDEwLjQ1IDE0LjgxLDEwLjI3VjEwLjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0QXJjID0gXCJNMTYuMTgsMTkuNkwxNC4xNywxNi4xMkMxNS4xNSwxNS40IDE1LjgzLDE0LjI4IDE1Ljk3LDEzSDIwQzE5LjgzLDE1Ljc2IDE4LjM1LDE4LjE2IDE2LjE4LDE5LjZNMTMsNy4wM1YzQzE3LjMsMy4yNiAyMC43NCw2LjcgMjEsMTFIMTYuOTdDMTYuNzQsOC45MSAxNS4wOSw3LjI2IDEzLDcuMDNNNywxMi41QzcsMTMuMTQgNy4xMywxMy43NSA3LjM4LDE0LjNMMy45LDE2LjMxQzMuMzIsMTUuMTYgMywxMy44NyAzLDEyLjVDMyw3Ljk3IDYuNTQsNC4yNyAxMSw0VjguMDNDOC43NSw4LjI4IDcsMTAuMTggNywxMi41TTExLjUsMjFDOC41MywyMSA1LjkyLDE5LjUgNC40LDE3LjE4TDcuODgsMTUuMTdDOC43LDE2LjI4IDEwLDE3IDExLjUsMTdDMTIuMTQsMTcgMTIuNzUsMTYuODcgMTMuMywxNi42MkwxNS4zMSwyMC4xQzE0LjE2LDIwLjY4IDEyLjg3LDIxIDExLjUsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRBcmVhc3BsaW5lID0gXCJNMTcuNDUsMTUuMThMMjIsNy4zMVYxOUwyMiwyMUgyVjNINFYxNS41NEw5LjUsNkwxNiw5Ljc4TDIwLjI0LDIuNDVMMjEuOTcsMy40NUwxNi43NCwxMi41TDEwLjIzLDguNzVMNC4zMSwxOUg2LjU3TDEwLjk2LDExLjQ0TDE3LjQ1LDE1LjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0QXJlYXNwbGluZVZhcmlhbnQgPSBcIk0yMiwyMUgyVjNINFYxNS41NEw5LjUsNkwxNiw5Ljc4TDIwLjI0LDIuNDVMMjEuOTcsMy40NUwyMiwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEJhciA9IFwiTTIyLDIxSDJWM0g0VjE5SDZWMTBIMTBWMTlIMTJWNkgxNlYxOUgxOFYxNEgyMlYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEJhclN0YWNrZWQgPSBcIk0yMiwyMUgyVjNINFYxOUg2VjE3SDEwVjE5SDEyVjE2SDE2VjE5SDE4VjE3SDIyVjIxTTE4LDE0SDIyVjE2SDE4VjE0TTEyLDZIMTZWOUgxMlY2TTE2LDE1SDEyVjEwSDE2VjE1TTYsMTBIMTBWMTJINlYxME0xMCwxNkg2VjEzSDEwVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0QmVsbEN1cnZlID0gXCJNOS45NiwxMS4zMUMxMC44Miw4LjEgMTEuNSw2IDEzLDZDMTQuNSw2IDE1LjE4LDguMSAxNi4wNCwxMS4zMUMxNywxNC45MiAxOC4xLDE5IDIyLDE5VjE3QzE5LjgsMTcgMTksMTQuNTQgMTcuOTcsMTAuOEMxNy4wOCw3LjQ2IDE2LjE1LDQgMTMsNEM5Ljg1LDQgOC45Miw3LjQ2IDguMDMsMTAuOEM3LjAzLDE0LjU0IDYuMiwxNyA0LDE3VjJIMlYyMkgyMlYyMEg0VjE5QzcuOSwxOSA5LDE0LjkyIDkuOTYsMTEuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRCZWxsQ3VydmVDdW11bGF0aXZlID0gXCJNNCAxOVYyMEgyMlYyMkgyVjJINFYxN0M3IDE3IDEwIDE1IDEyLjEgMTEuNEMxNS4xIDYuNCAxOC40IDQgMjIgNFY2QzE5LjIgNiAxNi41IDguMSAxMy45IDEyLjVDMTEuMyAxNi42IDcuNyAxOSA0IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0Qm94ID0gXCJNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTkgMTdIN1YxMEg5VjE3TTEzIDE3SDExVjdIMTNWMTdNMTcgMTdIMTVWMTNIMTdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRCb3hPdXRsaW5lID0gXCJNOSAxN0g3VjEwSDlWMTdNMTMgMTdIMTFWN0gxM1YxN00xNyAxN0gxNVYxM0gxN1YxN00xOS41IDE5LjFINC41VjVIMTkuNVYxOS4xTTE5LjUgM0g0LjVDMy40IDMgMi41IDMuOSAyLjUgNVYxOUMyLjUgMjAuMSAzLjQgMjEgNC41IDIxSDE5LjVDMjAuNiAyMSAyMS41IDIwLjEgMjEuNSAxOVY1QzIxLjUgMy45IDIwLjYgMyAxOS41IDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRCb3hQbHVzT3V0bGluZSA9IFwiTTIyIDVWN0gxOVYxMEgxN1Y3SDE0VjVIMTdWMkgxOVY1SDIyTTE5IDE5SDVWNUgxMVYzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWMTNIMTlWMTlNMTUgMTNWMTdIMTdWMTNIMTVNMTEgMTdIMTNWOUgxMVYxN005IDE3VjExSDdWMTdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEJ1YmJsZSA9IFwiTTcuMiwxMS4yQzguOTcsMTEuMiAxMC40LDEyLjYzIDEwLjQsMTQuNEMxMC40LDE2LjE3IDguOTcsMTcuNiA3LjIsMTcuNkM1LjQzLDE3LjYgNCwxNi4xNyA0LDE0LjRDNCwxMi42MyA1LjQzLDExLjIgNy4yLDExLjJNMTQuOCwxNkEyLDIgMCAwLDEgMTYuOCwxOEEyLDIgMCAwLDEgMTQuOCwyMEEyLDIgMCAwLDEgMTIuOCwxOEEyLDIgMCAwLDEgMTQuOCwxNk0xNS4yLDRBNC44LDQuOCAwIDAsMSAyMCw4LjhDMjAsMTEuNDUgMTcuODUsMTMuNiAxNS4yLDEzLjZBNC44LDQuOCAwIDAsMSAxMC40LDguOEMxMC40LDYuMTUgMTIuNTUsNCAxNS4yLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnREb251dCA9IFwiTTEzLDIuMDVWNS4wOEMxNi4zOSw1LjU3IDE5LDguNDcgMTksMTJDMTksMTIuOSAxOC44MiwxMy43NSAxOC41LDE0LjU0TDIxLjEyLDE2LjA3QzIxLjY4LDE0LjgzIDIyLDEzLjQ1IDIyLDEyQzIyLDYuODIgMTguMDUsMi41NSAxMywyLjA1TTEyLDE5QTcsNyAwIDAsMSA1LDEyQzUsOC40NyA3LjYxLDUuNTcgMTEsNS4wOFYyLjA1QzUuOTQsMi41NSAyLDYuODEgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkMxNS4zLDIyIDE4LjIzLDIwLjM5IDIwLjA1LDE3LjkxTDE3LjQ1LDE2LjM4QzE2LjE3LDE4IDE0LjIxLDE5IDEyLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0RG9udXRWYXJpYW50ID0gXCJNMTMsMi4wNUMxOC4wNSwyLjU1IDIyLDYuODIgMjIsMTJDMjIsMTMuNDUgMjEuNjgsMTQuODMgMjEuMTIsMTYuMDdMMTguNSwxNC41NEMxOC44MiwxMy43NSAxOSwxMi45IDE5LDEyQzE5LDguNDcgMTYuMzksNS41NyAxMyw1LjA4VjIuMDVNMTIsMTlDMTQuMjEsMTkgMTYuMTcsMTggMTcuNDUsMTYuMzhMMjAuMDUsMTcuOTFDMTguMjMsMjAuMzkgMTUuMywyMiAxMiwyMkM2LjQ3LDIyIDIsMTcuNSAyLDEyQzIsNi44MSA1Ljk0LDIuNTUgMTEsMi4wNVY1LjA4QzcuNjEsNS41NyA1LDguNDcgNSwxMkE3LDcgMCAwLDAgMTIsMTlNMTIsNkE2LDYgMCAwLDEgMTgsMTJDMTgsMTQuOTcgMTUuODQsMTcuNDQgMTMsMTcuOTJWMTQuODNDMTQuMTcsMTQuNDIgMTUsMTMuMzEgMTUsMTJBMywzIDAgMCwwIDEyLDlMMTEuNDUsOS4wNUw5LjkxLDYuMzhDMTAuNTYsNi4xMyAxMS4yNiw2IDEyLDZNNiwxMkM2LDEwLjE0IDYuODUsOC41IDguMTgsNy4zOEw5LjcyLDEwLjA1QzkuMjcsMTAuNTcgOSwxMS4yNiA5LDEyQzksMTMuMzEgOS44MywxNC40MiAxMSwxNC44M1YxNy45MkM4LjE2LDE3LjQ0IDYsMTQuOTcgNiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydEdhbnR0ID0gXCJNMiw1SDEwVjJIMTJWMjJIMTBWMThINlYxNUgxMFYxM0g0VjEwSDEwVjhIMlY1TTE0LDVIMTdWOEgxNFY1TTE0LDEwSDE5VjEzSDE0VjEwTTE0LDE1SDIyVjE4SDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0SGlzdG9ncmFtID0gXCJNMywzSDVWMTNIOVY3SDEzVjExSDE3VjE1SDIxVjIxSDNWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydExpbmUgPSBcIk0xNiwxMS43OEwyMC4yNCw0LjQ1TDIxLjk3LDUuNDVMMTYuNzQsMTQuNUwxMC4yMywxMC43NUw1LjQ2LDE5SDIyVjIxSDJWM0g0VjE3LjU0TDkuNSw4TDE2LDExLjc4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0TGluZVN0YWNrZWQgPSBcIk0xNy40NSwxNS4xOEwyMiw2LjgxVjE5TDIyLDIxSDJWM0g0VjE1LjU0TDQsMTlINC4zMUw2LDE5SDYuNTdMMTAuOTYsMTEuNDRMMTcuNDUsMTUuMThNMjIsM0wyMS45NywzLjQ1TDE3LDExTDEwLDZMNiwxMlYzSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0TGluZVZhcmlhbnQgPSBcIk0zLjUsMTguNUw5LjUsMTIuNUwxMy41LDE2LjVMMjIsNi45MkwyMC41OSw1LjVMMTMuNSwxMy41TDkuNSw5LjVMMiwxN0wzLjUsMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydE11bHRpbGluZSA9IFwiTTIyLDYuOTJMMjAuNTksNS41TDE3Ljc0LDguNzJDMTUuNjgsNi40IDEyLjgzLDUgOS42MSw1QzYuNzIsNSA0LjA3LDYuMTYgMiw4TDMuNDIsOS40MkM1LjEyLDcuOTMgNy4yNyw3IDkuNjEsN0MxMi4zNSw3IDE0LjcsOC4yNiAxNi4zOCwxMC4yNEwxMy41LDEzLjVMOS41LDkuNUwyLDE3TDMuNSwxOC41TDkuNSwxMi41TDEzLjUsMTYuNUwxNy41NSwxMS45M0MxOC4zLDEzLjI4IDE4LjgsMTQuODMgMTksMTYuNUgyMUMyMC43OCwxNC4xOCAyMC4wNSwxMi4wOSAxOC45NiwxMC4zNEwyMiw2LjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0TXVsdGlwbGUgPSBcIk0yMiAxNlYxOEg2VjJIOFYxMy41N0wxMy43MSA0LjU3TDE2Ljg3IDYuNjhMMTkuMjkgNC4yNkwyMC43MSA1LjY4TDE3LjEzIDkuMjlMMTQuMjkgNy40TDguODIgMTZNNCAyMFY0SDJWMjJIMjJWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRQaWUgPSBcIk0xMSwyVjIyQzUuOSwyMS41IDIsMTcuMiAyLDEyQzIsNi44IDUuOSwyLjUgMTEsMk0xMywyVjExSDIyQzIxLjUsNi4yIDE3LjgsMi41IDEzLDJNMTMsMTNWMjJDMTcuNywyMS41IDIxLjUsMTcuOCAyMiwxM0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFBwZiA9IFwiTTUgNlY4QzguMiA4IDExLjM2IDkuMTggMTMuNTcgMTEuMTVDMTUuNjQgMTMgMTYuODMgMTUuNSAxNyAxOEgxOC45N0ExNCAxMi41IDAgMCAwIDUgNk0yMiAyMUgyVjNINFYxOUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFNhbmtleSA9IFwiTTIyIDVINFYySDJWMjJIMjJWMjBINFY5QzguMDkgOSAxMC4xMyAxMSAxMi4yOSAxMy4yMVMxNy4wOSAxOCAyMiAxOFYxNkMxNy45MSAxNiAxNS44NyAxNCAxMy43MSAxMS43OVM4LjkxIDcgNCA3SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0U2Fua2V5VmFyaWFudCA9IFwiTTIwIDRWNkg0VjRIMlYxMkg0VjEwQzguMTYgMTAgOS45MiAxMi4xMSAxMS43NyAxNC4zNFMxNS42NSAxOSAyMCAxOVYyMUgyMlYxNUgyMFYxN0MxNi41OSAxNyAxNS4wNyAxNS4xNyAxMy4zMSAxMy4wNkMxMS4zNCAxMC42OSA5LjEgOCA0IDhIMjBWMTBIMjJWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFNjYXR0ZXJQbG90ID0gXCJNMiwySDRWMjBIMjJWMjJIMlYyTTksMTBBMywzIDAgMCwxIDEyLDEzQTMsMyAwIDAsMSA5LDE2QTMsMyAwIDAsMSA2LDEzQTMsMyAwIDAsMSA5LDEwTTEzLDJBMywzIDAgMCwxIDE2LDVBMywzIDAgMCwxIDEzLDhBMywzIDAgMCwxIDEwLDVBMywzIDAgMCwxIDEzLDJNMTgsMTJBMywzIDAgMCwxIDIxLDE1QTMsMyAwIDAsMSAxOCwxOEEzLDMgMCAwLDEgMTUsMTVBMywzIDAgMCwxIDE4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0U2NhdHRlclBsb3RIZXhiaW4gPSBcIk0yLDJINFYyMEgyMlYyMkgyVjJNMTQsMTQuNUwxMiwxOEg3Ljk0TDUuOTIsMTQuNUw3Ljk0LDExSDEyTDE0LDE0LjVNMTQuMDgsNi41TDEyLjA2LDEwSDhMNiw2LjVMOCwzSDEyLjA2TDE0LjA4LDYuNU0yMS4yNSwxMC41TDE5LjIzLDE0SDE1LjE5TDEzLjE3LDEwLjVMMTUuMTksN0gxOS4yM0wyMS4yNSwxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0VGltZWxpbmUgPSBcIk0yLDJINFYyMEgyMlYyMkgyVjJNNywxMEgxN1YxM0g3VjEwTTExLDE1SDIxVjE4SDExVjE1TTYsNEgyMlY4SDIwVjZIOFY4SDZWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGFydFRpbWVsaW5lVmFyaWFudCA9IFwiTTMsMTRMMy41LDE0LjA3TDguMDcsOS41QzcuODksOC44NSA4LjA2LDguMTEgOC41OSw3LjU5QzkuMzcsNi44IDEwLjYzLDYuOCAxMS40MSw3LjU5QzExLjk0LDguMTEgMTIuMTEsOC44NSAxMS45Myw5LjVMMTQuNSwxMi4wN0wxNSwxMkMxNS4xOCwxMiAxNS4zNSwxMiAxNS41LDEyLjA3TDE5LjA3LDguNUMxOSw4LjM1IDE5LDguMTggMTksOEEyLDIgMCAwLDEgMjEsNkEyLDIgMCAwLDEgMjMsOEEyLDIgMCAwLDEgMjEsMTBDMjAuODIsMTAgMjAuNjUsMTAgMjAuNSw5LjkzTDE2LjkzLDEzLjVDMTcsMTMuNjUgMTcsMTMuODIgMTcsMTRBMiwyIDAgMCwxIDE1LDE2QTIsMiAwIDAsMSAxMywxNEwxMy4wNywxMy41TDEwLjUsMTAuOTNDMTAuMTgsMTEgOS44MiwxMSA5LjUsMTAuOTNMNC45MywxNS41TDUsMTZBMiwyIDAgMCwxIDMsMThBMiwyIDAgMCwxIDEsMTZBMiwyIDAgMCwxIDMsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhcnRUaW1lbGluZVZhcmlhbnRTaGltbWVyID0gXCJNMjEgOEMxOS41IDggMTguNyA5LjQgMTkuMSAxMC41TDE1LjUgMTQuMUMxNS4yIDE0IDE0LjggMTQgMTQuNSAxNC4xTDExLjkgMTEuNUMxMi4zIDEwLjQgMTEuNSA5IDEwIDlDOC42IDkgNy43IDEwLjQgOC4xIDExLjVMMy41IDE2QzIuNCAxNS43IDEgMTYuNSAxIDE4QzEgMTkuMSAxLjkgMjAgMyAyMEM0LjQgMjAgNS4zIDE4LjYgNC45IDE3LjVMOS40IDEyLjlDOS43IDEzIDEwLjEgMTMgMTAuNCAxMi45TDEzIDE1LjVDMTIuNyAxNi41IDEzLjUgMTggMTUgMThDMTYuNSAxOCAxNy4zIDE2LjYgMTYuOSAxNS41TDIwLjUgMTEuOUMyMS42IDEyLjIgMjMgMTEuNCAyMyAxMEMyMyA4LjkgMjIuMSA4IDIxIDhNMTUgOUwxNS45IDYuOUwxOCA2TDE1LjkgNS4xTDE1IDNMMTQuMSA1LjFMMTIgNkwxNC4xIDYuOUwxNSA5TTMuNSAxMUw0IDlMNiA4LjVMNCA4TDMuNSA2TDMgOEwxIDguNUwzIDlMMy41IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXJ0VHJlZSA9IFwiTTE0LDZIMjJWMjJIMTRWNk0yLDRIMjJWMkgyVjRNMiw4SDEyVjZIMlY4TTksMjJIMTJWMTBIOVYyMk0yLDIySDdWMTBIMlYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0ID0gXCJNMTIsM0MxNy41LDMgMjIsNi41OCAyMiwxMUMyMiwxNS40MiAxNy41LDE5IDEyLDE5QzEwLjc2LDE5IDkuNTcsMTguODIgOC40NywxOC41QzUuNTUsMjEgMiwyMSAyLDIxQzQuMzMsMTguNjcgNC43LDE3LjEgNC43NSwxNi41QzMuMDUsMTUuMDcgMiwxMy4xMyAyLDExQzIsNi41OCA2LjUsMyAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRBbGVydCA9IFwiTTEyLDNDMTcuNSwzIDIyLDYuNTggMjIsMTFDMjIsMTUuNDIgMTcuNSwxOSAxMiwxOUMxMC43NiwxOSA5LjU3LDE4LjgyIDguNDcsMTguNUM1LjU1LDIxIDIsMjEgMiwyMUM0LjMzLDE4LjY3IDQuNywxNy4xIDQuNzUsMTYuNUMzLjA1LDE1LjA3IDIsMTMuMTMgMiwxMUMyLDYuNTggNi41LDMgMTIsM00xMSwxNFYxNkgxM1YxNEgxMU0xMSwxMkgxM1Y2SDExVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRBbGVydE91dGxpbmUgPSBcIk0xMiAzQzYuNSAzIDIgNi41OCAyIDExQzIuMDUgMTMuMTUgMy4wNiAxNS4xNyA0Ljc1IDE2LjVDNC43NSAxNy4xIDQuMzMgMTguNjcgMiAyMUM0LjM3IDIwLjg5IDYuNjQgMjAgOC40NyAxOC41QzkuNjEgMTguODMgMTAuODEgMTkgMTIgMTlDMTcuNSAxOSAyMiAxNS40MiAyMiAxMVMxNy41IDMgMTIgM00xMiAxN0M3LjU4IDE3IDQgMTQuMzEgNCAxMVM3LjU4IDUgMTIgNSAyMCA3LjY5IDIwIDExIDE2LjQyIDE3IDEyIDE3TTExIDEzVjE1SDEzVjEzSDExTTExIDExSDEzVjdIMTFWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdE1pbnVzID0gXCJNMjMgMTdWMTlIMTVWMTdIMjNNMTIgM0MxNy41IDMgMjIgNi41OCAyMiAxMUMyMiAxMS41OCAyMS45MiAxMi4xNCAyMS43OCAxMi42OEMyMC45NSAxMi4yNSAyMCAxMiAxOSAxMkMxNS42OSAxMiAxMyAxNC42OSAxMyAxOEwxMy4wOCAxOC45NUwxMiAxOUMxMC43NiAxOSA5LjU3IDE4LjgyIDguNDcgMTguNUM1LjU1IDIxIDIgMjEgMiAyMUM0LjMzIDE4LjY3IDQuNyAxNy4xIDQuNzUgMTYuNUMzLjA1IDE1LjA3IDIgMTMuMTQgMiAxMUMyIDYuNTggNi41IDMgMTIgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0TWludXNPdXRsaW5lID0gXCJNMTIgM0MxNy41IDMgMjIgNi41OCAyMiAxMUMyMiAxMS41OCAyMS45MiAxMi4xNCAyMS43OCAxMi42OEMyMS4xOSAxMi4zOCAyMC41NSAxMi4xNiAxOS44OCAxMi4wNkMxOS45NiAxMS43MiAyMCAxMS4zNiAyMCAxMUMyMCA3LjY5IDE2LjQyIDUgMTIgNVM0IDcuNjkgNCAxMSA3LjU4IDE3IDEyIDE3TDEzLjA5IDE2Ljk1TDEzIDE4TDEzLjA4IDE4Ljk1TDEyIDE5QzEwLjgxIDE5IDkuNjIgMTguODMgOC40NyAxOC41QzYuNjQgMjAgNC4zNyAyMC44OSAyIDIxQzQuMzMgMTguNjcgNC43NSAxNy4xIDQuNzUgMTYuNUMzLjA2IDE1LjE3IDIuMDUgMTMuMTUgMiAxMUMyIDYuNTggNi41IDMgMTIgM00yMyAxN1YxOUgxNVYxN0gyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0T3V0bGluZSA9IFwiTTEyLDNDNi41LDMgMiw2LjU4IDIsMTFDMi4wNSwxMy4xNSAzLjA2LDE1LjE3IDQuNzUsMTYuNUM0Ljc1LDE3LjEgNC4zMywxOC42NyAyLDIxQzQuMzcsMjAuODkgNi42NCwyMCA4LjQ3LDE4LjVDOS42MSwxOC44MyAxMC44MSwxOSAxMiwxOUMxNy41LDE5IDIyLDE1LjQyIDIyLDExQzIyLDYuNTggMTcuNSwzIDEyLDNNMTIsMTdDNy41OCwxNyA0LDE0LjMxIDQsMTFDNCw3LjY5IDcuNTgsNSAxMiw1QzE2LjQyLDUgMjAsNy42OSAyMCwxMUMyMCwxNC4zMSAxNi40MiwxNyAxMiwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0UGx1cyA9IFwiTTE4IDE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3SDE4VjE0TTEyIDNDMTcuNSAzIDIyIDYuNTggMjIgMTFDMjIgMTEuNTggMjEuOTIgMTIuMTQgMjEuNzggMTIuNjhDMjAuOTUgMTIuMjUgMjAgMTIgMTkgMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThMMTMuMDggMTguOTVMMTIgMTlDMTAuNzYgMTkgOS41NyAxOC44MiA4LjQ3IDE4LjVDNS41NSAyMSAyIDIxIDIgMjFDNC4zMyAxOC42NyA0LjcgMTcuMSA0Ljc1IDE2LjVDMy4wNSAxNS4wNyAyIDEzLjE0IDIgMTFDMiA2LjU4IDYuNSAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFBsdXNPdXRsaW5lID0gXCJNMTIgM0MxNy41IDMgMjIgNi41OCAyMiAxMUMyMiAxMS41OCAyMS45MiAxMi4xNCAyMS43OCAxMi42OEMyMS4xOSAxMi4zOCAyMC41NSAxMi4xNiAxOS44OCAxMi4wNkMxOS45NiAxMS43MiAyMCAxMS4zNiAyMCAxMUMyMCA3LjY5IDE2LjQyIDUgMTIgNUM3LjU4IDUgNCA3LjY5IDQgMTFDNCAxNC4zMSA3LjU4IDE3IDEyIDE3TDEzLjA5IDE2Ljk1TDEzIDE4TDEzLjA4IDE4Ljk1TDEyIDE5QzEwLjgxIDE5IDkuNjIgMTguODMgOC40NyAxOC41QzYuNjQgMjAgNC4zNyAyMC44OSAyIDIxQzQuMzMgMTguNjcgNC43NSAxNy4xIDQuNzUgMTYuNUMzLjA2IDE1LjE3IDIuMDUgMTMuMTUgMiAxMUMyIDYuNTggNi41IDMgMTIgM00xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0UHJvY2Vzc2luZyA9IFwiTTEyLDNDMTcuNSwzIDIyLDYuNTggMjIsMTFDMjIsMTUuNDIgMTcuNSwxOSAxMiwxOUMxMC43NiwxOSA5LjU3LDE4LjgyIDguNDcsMTguNUM1LjU1LDIxIDIsMjEgMiwyMUM0LjMzLDE4LjY3IDQuNywxNy4xIDQuNzUsMTYuNUMzLjA1LDE1LjA3IDIsMTMuMTMgMiwxMUMyLDYuNTggNi41LDMgMTIsM00xNywxMlYxMEgxNVYxMkgxN00xMywxMlYxMEgxMVYxMkgxM005LDEyVjEwSDdWMTJIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGF0UHJvY2Vzc2luZ091dGxpbmUgPSBcIk0xMiAzQzYuNSAzIDIgNi41OCAyIDExQzIuMDUgMTMuMTUgMy4wNiAxNS4xNyA0Ljc1IDE2LjVDNC43NSAxNy4xIDQuMzMgMTguNjcgMiAyMUM0LjM3IDIwLjg5IDYuNjQgMjAgOC40NyAxOC41QzkuNjEgMTguODMgMTAuODEgMTkgMTIgMTlDMTcuNSAxOSAyMiAxNS40MiAyMiAxMVMxNy41IDMgMTIgM00xMiAxN0M3LjU4IDE3IDQgMTQuMzEgNCAxMVM3LjU4IDUgMTIgNSAyMCA3LjY5IDIwIDExIDE2LjQyIDE3IDEyIDE3TTE3IDEyVjEwSDE1VjEySDE3TTEzIDEyVjEwSDExVjEySDEzTTkgMTJWMTBIN1YxMkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRRdWVzdGlvbiA9IFwiTTEyIDNDNi41IDMgMiA2LjYgMiAxMUMyIDEzLjEgMyAxNS4xIDQuOCAxNi41QzQuOCAxNy4xIDQuNCAxOC43IDIgMjFDMiAyMSA1LjUgMjEgOC41IDE4LjVDOS42IDE4LjggMTAuOCAxOSAxMiAxOUMxNy41IDE5IDIyIDE1LjQgMjIgMTFTMTcuNSAzIDEyIDNNMTMgMTVIMTFWMTNIMTNWMTVNMTQuOCAxMEMxNC41IDEwLjQgMTQuMSAxMC42IDEzLjcgMTAuOEMxMy40IDExIDEzLjMgMTEuMSAxMy4yIDExLjNDMTMgMTEuNSAxMyAxMS43IDEzIDEySDExQzExIDExLjUgMTEuMSAxMS4yIDExLjMgMTAuOUMxMS41IDEwLjcgMTEuOSAxMC40IDEyLjQgMTAuMUMxMi43IDEwIDEyLjkgOS44IDEzIDkuNkMxMy4xIDkuNCAxMy4yIDkuMSAxMy4yIDguOUMxMy4yIDguNiAxMy4xIDguNCAxMi45IDguMkMxMi43IDggMTIuNCA3LjkgMTIuMSA3LjlDMTEuOCA3LjkgMTEuNiA4IDExLjQgOC4xQzExLjIgOC4yIDExLjEgOC40IDExLjEgOC43SDkuMUM5LjIgOCA5LjUgNy40IDEwIDdDMTAuNSA2LjYgMTEuMiA2LjUgMTIuMSA2LjVDMTMgNi41IDEzLjggNi43IDE0LjMgNy4xQzE0LjggNy41IDE1LjEgOC4xIDE1LjEgOC44QzE1LjIgOS4yIDE1LjEgOS42IDE0LjggMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFF1ZXN0aW9uT3V0bGluZSA9IFwiTTEyIDNDNi41IDMgMiA2LjYgMiAxMUMyIDEzLjIgMy4xIDE1LjIgNC44IDE2LjVDNC44IDE3LjEgNC40IDE4LjcgMiAyMUM0LjQgMjAuOSA2LjYgMjAgOC41IDE4LjVDOS42IDE4LjggMTAuOCAxOSAxMiAxOUMxNy41IDE5IDIyIDE1LjQgMjIgMTFTMTcuNSAzIDEyIDNNMTIgMTdDNy42IDE3IDQgMTQuMyA0IDExUzcuNiA1IDEyIDUgMjAgNy43IDIwIDExIDE2LjQgMTcgMTIgMTdNMTIuMiA2LjVDMTEuMyA2LjUgMTAuNiA2LjcgMTAuMSA3QzkuNSA3LjQgOS4yIDggOS4zIDguN0gxMS4zQzExLjMgOC40IDExLjQgOC4yIDExLjYgOC4xQzExLjggOCAxMiA3LjkgMTIuMyA3LjlDMTIuNiA3LjkgMTIuOSA4IDEzLjEgOC4yQzEzLjMgOC40IDEzLjQgOC42IDEzLjQgOC45QzEzLjQgOS4yIDEzLjMgOS40IDEzLjIgOS42QzEzIDkuOCAxMi44IDEwIDEyLjYgMTAuMUMxMi4xIDEwLjQgMTEuNyAxMC43IDExLjUgMTAuOUMxMS4xIDExLjIgMTEgMTEuNSAxMSAxMkgxM0MxMyAxMS43IDEzLjEgMTEuNSAxMy4xIDExLjNDMTMuMiAxMS4xIDEzLjQgMTEgMTMuNiAxMC44QzE0LjEgMTAuNiAxNC40IDEwLjMgMTQuNyA5LjlDMTUgOS41IDE1LjEgOS4xIDE1LjEgOC43QzE1LjEgOCAxNC44IDcuNCAxNC4zIDdDMTMuOSA2LjcgMTMuMSA2LjUgMTIuMiA2LjVNMTEgMTNWMTVIMTNWMTNIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFJlbW92ZSA9IFwiTTE1LjQ2IDE1Ljg4TDE2Ljg4IDE0LjQ2TDE5IDE2LjU5TDIxLjEyIDE0LjQ3TDIyLjU0IDE1Ljg4TDIwLjQxIDE4TDIyLjU0IDIwLjEyTDIxLjEyIDIxLjU0TDE5IDE5LjQxTDE2Ljg4IDIxLjU0TDE1LjQ2IDIwLjEyTDE3LjU5IDE4TDE1LjQ3IDE1Ljg4TTEyIDNDMTcuNSAzIDIyIDYuNTggMjIgMTFDMjIgMTEuNTggMjEuOTIgMTIuMTQgMjEuNzggMTIuNjhDMjAuOTUgMTIuMjUgMjAgMTIgMTkgMTJDMTUuNjkgMTIgMTMgMTQuNjkgMTMgMThMMTMuMDggMTguOTVMMTIgMTlDMTAuNzYgMTkgOS41NyAxOC44MiA4LjQ3IDE4LjVDNS41NSAyMSAyIDIxIDIgMjFDNC4zMyAxOC42NyA0LjcgMTcuMSA0Ljc1IDE2LjVDMy4wNSAxNS4wNyAyIDEzLjE0IDIgMTFDMiA2LjU4IDYuNSAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFJlbW92ZU91dGxpbmUgPSBcIk0xNS40NiAxNS44OEwxNi44OCAxNC40NkwxOSAxNi41OUwyMS4xMiAxNC40N0wyMi41NCAxNS44OEwyMC40MSAxOEwyMi41NCAyMC4xMkwyMS4xMiAyMS41NEwxOSAxOS40MUwxNi44OCAyMS41NEwxNS40NiAyMC4xMkwxNy41OSAxOEwxNS40NyAxNS44OE0xMiAzQzE3LjUgMyAyMiA2LjU4IDIyIDExQzIyIDExLjU4IDIxLjkyIDEyLjE0IDIxLjc4IDEyLjY4QzIxLjE5IDEyLjM4IDIwLjU1IDEyLjE2IDE5Ljg4IDEyLjA2QzE5Ljk2IDExLjcyIDIwIDExLjM2IDIwIDExQzIwIDcuNjkgMTYuNDIgNSAxMiA1QzcuNTggNSA0IDcuNjkgNCAxMUM0IDE0LjMxIDcuNTggMTcgMTIgMTdMMTMuMDkgMTYuOTVMMTMgMThMMTMuMDggMTguOTVMMTIgMTlDMTAuODEgMTkgOS42MiAxOC44MyA4LjQ3IDE4LjVDNi42NCAyMCA0LjM3IDIwLjg5IDIgMjFDNC4zMyAxOC42NyA0Ljc1IDE3LjEgNC43NSAxNi41QzMuMDYgMTUuMTcgMi4wNSAxMy4xNSAyIDExQzIgNi41OCA2LjUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoYXRTbGVlcCA9IFwiTTEyIDNDNi41IDMgMiA2LjU4IDIgMTFDMiAxMy4xMyAzLjA1IDE1LjA3IDQuNzUgMTYuNUM0LjcgMTcuMSA0LjMzIDE4LjY3IDIgMjFDMiAyMSA1LjU1IDIxIDguNDcgMTguNUM5LjU3IDE4LjgyIDEwLjc2IDE5IDEyIDE5QzE3LjUgMTkgMjIgMTUuNDIgMjIgMTFTMTcuNSAzIDEyIDNNMTUgOS4zTDExLjc2IDEzSDE1VjE1SDlWMTIuN0wxMi4yNCA5SDlWN0gxNVY5LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hhdFNsZWVwT3V0bGluZSA9IFwiTTEyIDNDNi41IDMgMiA2LjU4IDIgMTFDMi4wNSAxMy4xNSAzLjA2IDE1LjE3IDQuNzUgMTYuNUM0Ljc1IDE3LjEgNC4zMyAxOC42NyAyIDIxQzQuMzcgMjAuODkgNi42NCAyMCA4LjQ3IDE4LjVDOS42MSAxOC44MyAxMC44MSAxOSAxMiAxOUMxNy41IDE5IDIyIDE1LjQyIDIyIDExUzE3LjUgMyAxMiAzTTEyIDE3QzcuNTggMTcgNCAxNC4zMSA0IDExUzcuNTggNSAxMiA1IDIwIDcuNjkgMjAgMTEgMTYuNDIgMTcgMTIgMTdNMTUgN0g5VjlIMTIuMjRMOSAxMi43VjE1SDE1VjEzSDExLjc2TDE1IDkuM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrID0gXCJNMjEsN0w5LDE5TDMuNSwxMy41TDQuOTEsMTIuMDlMOSwxNi4xN0wxOS41OSw1LjU5TDIxLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tBbGwgPSBcIk0wLjQxLDEzLjQxTDYsMTlMNy40MSwxNy41OEwxLjgzLDEyTTIyLjI0LDUuNThMMTEuNjYsMTYuMTdMNy41LDEyTDYuMDcsMTMuNDFMMTEuNjYsMTlMMjMuNjYsN00xOCw3TDE2LjU5LDUuNThMMTAuMjQsMTEuOTNMMTEuNjYsMTMuMzRMMTgsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja0JvbGQgPSBcIk05LDIwLjQyTDIuNzksMTQuMjFMNS42MiwxMS4zOEw5LDE0Ljc3TDE4Ljg4LDQuODhMMjEuNzEsNy43MUw5LDIwLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjAsMkg4QTIsMiAwIDAsMCA2LDRWMTZBMiwyIDAgMCwwIDgsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJNMjAsMTZIOFY0SDIwVjE2TTE2LDIwVjIySDRBMiwyIDAgMCwxIDIsMjBWN0g0VjIwSDE2TTE4LjUzLDguMDZMMTcuNDcsN0wxMi41OSwxMS44OEwxMC40Nyw5Ljc2TDkuNDEsMTAuODJMMTIuNTksMTRMMTguNTMsOC4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja0JveE91dGxpbmUgPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xOSw1VjE5SDVWNUgxOU0xMCwxN0w2LDEzTDcuNDEsMTEuNThMMTAsMTQuMTdMMTYuNTksNy41OEwxOCw5XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tDaXJjbGUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTAgMTdMNSAxMkw2LjQxIDEwLjU5TDEwIDE0LjE3TDE3LjU5IDYuNThMMTkgOEwxMCAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja0NpcmNsZU91dGxpbmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTIgMjBDNy41OSAyMCA0IDE2LjQxIDQgMTJTNy41OSA0IDEyIDQgMjAgNy41OSAyMCAxMiAxNi40MSAyMCAxMiAyME0xNi41OSA3LjU4TDEwIDE0LjE3TDcuNDEgMTEuNTlMNiAxM0wxMCAxN0wxOCA5TDE2LjU5IDcuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tEZWNhZ3JhbSA9IFwiTTIzLDEyTDIwLjU2LDkuMjJMMjAuOSw1LjU0TDE3LjI5LDQuNzJMMTUuNCwxLjU0TDEyLDNMOC42LDEuNTRMNi43MSw0LjcyTDMuMSw1LjUzTDMuNDQsOS4yMUwxLDEyTDMuNDQsMTQuNzhMMy4xLDE4LjQ3TDYuNzEsMTkuMjlMOC42LDIyLjQ3TDEyLDIxTDE1LjQsMjIuNDZMMTcuMjksMTkuMjhMMjAuOSwxOC40NkwyMC41NiwxNC43OEwyMywxMk0xMCwxN0w2LDEzTDcuNDEsMTEuNTlMMTAsMTQuMTdMMTYuNTksNy41OEwxOCw5TDEwLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrRGVjYWdyYW1PdXRsaW5lID0gXCJNMjMgMTJMMjAuNiA5LjJMMjAuOSA1LjVMMTcuMyA0LjdMMTUuNCAxLjVMMTIgM0w4LjYgMS41TDYuNyA0LjdMMy4xIDUuNUwzLjQgOS4yTDEgMTJMMy40IDE0LjhMMy4xIDE4LjVMNi43IDE5LjNMOC42IDIyLjVMMTIgMjFMMTUuNCAyMi41TDE3LjMgMTkuM0wyMC45IDE4LjVMMjAuNiAxNC44TDIzIDEyTTE4LjcgMTYuOUwxNiAxNy41TDE0LjYgMTkuOUwxMiAxOC44TDkuNCAxOS45TDggMTcuNUw1LjMgMTYuOUw1LjUgMTQuMUwzLjcgMTJMNS41IDkuOUw1LjMgNy4xTDggNi41TDkuNCA0LjFMMTIgNS4yTDE0LjYgNC4xTDE2IDYuNUwxOC43IDcuMUwxOC41IDkuOUwyMC4zIDEyTDE4LjUgMTQuMUwxOC43IDE2LjlNMTYuNiA3LjZMMTggOUwxMCAxN0w2IDEzTDcuNCAxMS42TDEwIDE0LjJMMTYuNiA3LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tOZXR3b3JrID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU04LjI1LDEwLjA4TDkuNDEsOC45MkwxMSwxMC41TDE0LjU5LDYuOTJMMTUuNzUsOC4zM0wxMSwxMy4wOEw4LjI1LDEwLjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrTmV0d29ya091dGxpbmUgPSBcIk0xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTdIMTdBMiwyIDAgMCwwIDE5LDE1VjVBMiwyIDAgMCwwIDE3LDNIN0EyLDIgMCAwLDAgNSw1VjE1QTIsMiAwIDAsMCA3LDE3SDExVjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1TTcsMTVWNUgxN1YxNUg3TTgsMTAuMzdMOS4yNCw5LjEzTDEwLjkzLDEwLjgzTDE0Ljc2LDdMMTYsOC41TDEwLjkzLDEzLjU3TDgsMTAuMzdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tPdXRsaW5lID0gXCJNMTkuNzgsMi4yTDI0LDYuNDJMOC40NCwyMkwwLDEzLjU1TDQuMjIsOS4zM0w4LjQ0LDEzLjU1TDE5Ljc4LDIuMk0xOS43OCw1TDguNDQsMTYuMzZMNC4yMiwxMi4xOUwyLjgxLDEzLjU1TDguNDQsMTkuMTdMMjEuMTksNi40MkwxOS43OCw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrVW5kZXJsaW5lID0gXCJNMjEsNUw5LDE3TDMuNSwxMS41TDQuOTEsMTAuMDlMOSwxNC4xN0wxOS41OSwzLjU5TDIxLDVNMywyMVYxOUgyMVYyMUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrVW5kZXJsaW5lQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTcsMThIN1YxNkgxN1YxOE0xMC4zLDE0TDcsMTAuN0w4LjQsOS4zTDEwLjMsMTEuMkwxNS42LDUuOUwxNyw3LjNMMTAuMywxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja1VuZGVybGluZUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTcsMTVIMTdWMTdIN1YxNU0xMC4zLDExLjJMOC40LDkuM0w3LDEwLjdMMTAuMywxNEwxNyw3LjNMMTUuNiw1LjlMMTAuMywxMS4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm9vayA9IFwiTTUsMTRIMTlWMTVINVYxNE0yMSwxN1Y4SDNWMTdIMjFNMSw1SDIzVjE5SDFWNU01LDEwSDEyVjEySDVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hCbGFuayA9IFwiTTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94QmxhbmtDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveEJsYW5rQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hCbGFua09mZiA9IFwiTTIwLjg0IDIyLjczTDE5LjEgMjFDMTkuMDYgMjEgMTkuMDMgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyA0Ljk3IDMgNC45NCAzIDQuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIxIDVDMjEgMy44OSAyMC4xIDMgMTkgM0g2LjJMMjEgMTcuOFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94QmxhbmtPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzIDQuOVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5LjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNSAxOVY2Ljg5TDE3LjExIDE5SDVNOC4yIDVMNi4yIDNIMTlDMjAuMSAzIDIxIDMuODkgMjEgNVYxNy44TDE5IDE1LjhWNUg4LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hCbGFua091dGxpbmUgPSBcIk0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xOSw1VjE5SDVWNUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveEludGVybWVkaWF0ZSA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU0xNywxN0g3VjdIMTdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNYXJrZWQgPSBcIk0xMCwxN0w1LDEyTDYuNDEsMTAuNThMMTAsMTQuMTdMMTcuNTksNi41OEwxOSw4TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TWFya2VkQ2lyY2xlID0gXCJNMTAsMTdMNSwxMkw2LjQxLDEwLjU4TDEwLDE0LjE3TDE3LjU5LDYuNThMMTksOE0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveE1hcmtlZENpcmNsZU91dGxpbmUgPSBcIk0yMCwxMkE4LDggMCAwLDEgMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRDMTIuNzYsNCAxMy41LDQuMTEgMTQuMiw0LjMxTDE1Ljc3LDIuNzRDMTQuNjEsMi4yNiAxMy4zNCwyIDEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMk03LjkxLDEwLjA4TDYuNSwxMS41TDExLDE2TDIxLDZMMTkuNTksNC41OEwxMSwxMy4xN0w3LjkxLDEwLjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TWFya2VkT3V0bGluZSA9IFwiTTE5LDE5SDVWNUgxNVYzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjExSDE5TTcuOTEsMTAuMDhMNi41LDExLjVMMTEsMTZMMjEsNkwxOS41OSw0LjU4TDExLDEzLjE3TDcuOTEsMTAuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZUJsYW5rID0gXCJNMjIsMTZBMiwyIDAgMCwxIDIwLDE4SDhDNi44OSwxOCA2LDE3LjEgNiwxNlY0QzYsMi44OSA2Ljg5LDIgOCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2TTE2LDIwVjIySDRBMiwyIDAgMCwxIDIsMjBWN0g0VjIwSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TXVsdGlwbGVCbGFua0NpcmNsZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEE4LDggMCAwLDAgMTQsMk00LjkzLDUuODJDMy4wOCw3LjM0IDIsOS42MSAyLDEyQTgsOCAwIDAsMCAxMCwyMEMxMC42NCwyMCAxMS4yNywxOS45MiAxMS44OCwxOS43N0MxMC4xMiwxOS4zOCA4LjUsMTguNSA3LjE3LDE3LjI5QzUuMjIsMTYuMjUgNCwxNC4yMSA0LDEyQzQsMTEuNyA0LjAzLDExLjQxIDQuMDcsMTEuMTFDNC4wMywxMC43NCA0LDEwLjM3IDQsMTBDNCw4LjU2IDQuMzIsNy4xMyA0LjkzLDUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZUJsYW5rQ2lyY2xlT3V0bGluZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEE4LDggMCAwLDAgMTQsMk0xNCw0QzE3LjMyLDQgMjAsNi42OSAyMCwxMEMyMCwxMy4zMiAxNy4zMiwxNiAxNCwxNkE2LDYgMCAwLDEgOCwxMEE2LDYgMCAwLDEgMTQsNE00LjkzLDUuODJDMy4wOCw3LjM0IDIsOS42MSAyLDEyQTgsOCAwIDAsMCAxMCwyMEMxMC42NCwyMCAxMS4yNywxOS45MiAxMS44OCwxOS43N0MxMC4xMiwxOS4zOCA4LjUsMTguNSA3LjE3LDE3LjI5QzUuMjIsMTYuMjUgNCwxNC4yMSA0LDEyQzQsMTEuNyA0LjAzLDExLjQxIDQuMDcsMTEuMTFDNC4wMywxMC43NCA0LDEwLjM3IDQsMTBDNCw4LjU2IDQuMzIsNy4xMyA0LjkzLDUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZUJsYW5rT3V0bGluZSA9IFwiTTIwLDE2VjRIOFYxNkgyME0yMiwxNkEyLDIgMCAwLDEgMjAsMThIOEM2Ljg5LDE4IDYsMTcuMSA2LDE2VjRDNiwyLjg5IDYuODksMiA4LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZNMTYsMjBWMjJINEEyLDIgMCAwLDEgMiwyMFY3SDRWMjBIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZU1hcmtlZCA9IFwiTTIyLDE2QTIsMiAwIDAsMSAyMCwxOEg4QzYuODksMTggNiwxNy4xIDYsMTZWNEM2LDIuODkgNi44OSwyIDgsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNk0xNiwyMFYyMkg0QTIsMiAwIDAsMSAyLDIwVjdINFYyMEgxNk0xMywxNEwyMCw3TDE4LjU5LDUuNTlMMTMsMTEuMTdMOS45MSw4LjA5TDguNSw5LjVMMTMsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tib3hNdWx0aXBsZU1hcmtlZENpcmNsZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEE4LDggMCAwLDAgMTQsMk00LjkzLDUuODJDMy4wOCw3LjM0IDIsOS42MSAyLDEyQTgsOCAwIDAsMCAxMCwyMEMxMC42NCwyMCAxMS4yNywxOS45MiAxMS44OCwxOS43N0MxMC4xMiwxOS4zOCA4LjUsMTguNSA3LjE3LDE3LjI5QzUuMjIsMTYuMjUgNCwxNC4yMSA0LDEyQzQsMTEuNyA0LjAzLDExLjQxIDQuMDcsMTEuMTFDNC4wMywxMC43NCA0LDEwLjM3IDQsMTBDNCw4LjU2IDQuMzIsNy4xMyA0LjkzLDUuODJNMTguMDksNi4wOEwxOS41LDcuNUwxMywxNEw5LjIxLDEwLjIxTDEwLjYzLDguNzlMMTMsMTEuMTdcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2JveE11bHRpcGxlTWFya2VkQ2lyY2xlT3V0bGluZSA9IFwiTTE0LDJBOCw4IDAgMCwwIDYsMTBBOCw4IDAgMCwwIDE0LDE4QTgsOCAwIDAsMCAyMiwxMEgyMEMyMCwxMy4zMiAxNy4zMiwxNiAxNCwxNkE2LDYgMCAwLDEgOCwxMEE2LDYgMCAwLDEgMTQsNEMxNC40Myw0IDE0Ljg2LDQuMDUgMTUuMjcsNC4xNEwxNi44OCwyLjU0QzE1Ljk2LDIuMTggMTUsMiAxNCwyTTIwLjU5LDMuNThMMTQsMTAuMTdMMTEuNjIsNy43OUwxMC4yMSw5LjIxTDE0LDEzTDIyLDVNNC45Myw1LjgyQzMuMDgsNy4zNCAyLDkuNjEgMiwxMkE4LDggMCAwLDAgMTAsMjBDMTAuNjQsMjAgMTEuMjcsMTkuOTIgMTEuODgsMTkuNzdDMTAuMTIsMTkuMzggOC41LDE4LjUgNy4xNywxNy4yOUM1LjIyLDE2LjI1IDQsMTQuMjEgNCwxMkM0LDExLjcgNC4wMywxMS40MSA0LjA3LDExLjExQzQuMDMsMTAuNzQgNCwxMC4zNyA0LDEwQzQsOC41NiA0LjMyLDcuMTMgNC45Myw1LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrYm94TXVsdGlwbGVNYXJrZWRPdXRsaW5lID0gXCJNMjAsMTZWMTBIMjJWMTZBMiwyIDAgMCwxIDIwLDE4SDhDNi44OSwxOCA2LDE3LjEgNiwxNlY0QzYsMi44OSA2Ljg5LDIgOCwySDE2VjRIOFYxNkgyME0xMC45MSw3LjA4TDE0LDEwLjE3TDIwLjU5LDMuNThMMjIsNUwxNCwxM0w5LjUsOC41TDEwLjkxLDcuMDhNMTYsMjBWMjJINEEyLDIgMCAwLDEgMiwyMFY3SDRWMjBIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlY2tlcmJvYXJkID0gXCJNMiAyVjIySDIyVjJIMk0yMCAxMkgxNlYxNkgyMFYyMEgxNlYxNkgxMlYyMEg4VjE2SDRWMTJIOFY4SDRWNEg4VjhIMTJWNEgxNlY4SDIwVjEyTTE2IDhWMTJIMTJWOEgxNk0xMiAxMlYxNkg4VjEySDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrZXJib2FyZE1pbnVzID0gXCJNMTQgMTdWMTlIMjJWMTdNOCAxNkgxMlYxMkg4VjE2TTEyIDEySDE2VjhIMTJWMTJNMiAyVjIySDEzLjVDMTMgMjEuNCAxMi42IDIwLjcgMTIuMyAyMEg4VjE2SDRWMTJIOFY4SDRWNEg4VjhIMTJWNEgxNlY4SDIwVjEyLjRDMjAuNyAxMi43IDIxLjQgMTMuMSAyMiAxMy42VjJIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVja2VyYm9hcmRQbHVzID0gXCJNMTkgMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRIMTlWMTdNOCAxNkgxMlYxMkg4VjE2TTEyIDEySDE2VjhIMTJWMTJNMiAyVjIySDEzLjU0QzEzIDIxLjQyIDEyLjYzIDIwLjc0IDEyLjM2IDIwSDhWMTZINFYxMkg4VjhINFY0SDhWOEgxMlY0SDE2VjhIMjBWMTIuMzZDMjAuNzQgMTIuNjMgMjEuNDIgMTMgMjIgMTMuNTRWMkgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWNrZXJib2FyZFJlbW92ZSA9IFwiTTggMTZIMTJWMTJIOFYxNk0xMiAxMkgxNlY4SDEyVjEyTTIgMlYyMkgxMy41QzEzIDIxLjQgMTIuNiAyMC43IDEyLjMgMjBIOFYxNkg0VjEySDhWOEg0VjRIOFY4SDEyVjRIMTZWOEgyMFYxMi40QzIwLjcgMTIuNyAyMS40IDEzLjEgMjIgMTMuNlYySDJNMjAuMSAxNC41TDE4IDE2LjZMMTUuOSAxNC41TDE0LjUgMTUuOUwxNi42IDE4TDE0LjUgMjAuMUwxNS45IDIxLjVMMTggMTkuNEwyMC4xIDIxLjVMMjEuNSAyMC4xTDE5LjQgMThMMjEuNSAxNS45TDIwLjEgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVlc2UgPSBcIk0xMSAxNy41QzExIDE2LjY3IDExLjY3IDE2IDEyLjUgMTZDMTIuNzkgMTYgMTMuMDYgMTYuMDkgMTMuMjkgMTYuMjNMMjAuNzUgMTEuOTNDMjAuMzUgMTEuMjIgMTkuOSAxMC41NSAxOS40MSA5LjlDMTkuMjkgOS45NiAxOS4xNSAxMCAxOSAxMEMxOC40NSAxMCAxOCA5LjU1IDE4IDlDMTggOC44IDE4LjA4IDguNjIgMTguMTggOC40NkMxNi40NSA2LjY0IDE0LjM0IDUuMiAxMiA0LjI1QzExLjg1IDUuMjQgMTEgNiAxMCA2QzguOSA2IDggNS4xMSA4IDRDOCAzLjcyIDguMDYgMy40NSA4LjE2IDMuMjFDNy4zIDMuMDggNi40MSAzIDUuNSAzQzUuMzMgMyA1LjE3IDMgNSAzLjAzVjkuMDVDNi4xNCA5LjI4IDcgMTAuMjkgNyAxMS41UzYuMTQgMTMuNzIgNSAxMy45NVYyMUwxMSAxNy41NEMxMSAxNy41MyAxMSAxNy41IDExIDE3LjVNMTQgOUMxNS4xMSA5IDE2IDkuOSAxNiAxMVMxNS4xMSAxMyAxNCAxMyAxMiAxMi4xMSAxMiAxMSAxMi45IDkgMTQgOU05IDE2QzguNDUgMTYgOCAxNS41NSA4IDE1UzguNDUgMTQgOSAxNCAxMCAxNC40NSAxMCAxNSA5LjU1IDE2IDkgMTZNOSAxMEM4LjQ1IDEwIDggOS41NSA4IDlTOC40NSA4IDkgOCAxMCA4LjQ1IDEwIDkgOS41NSAxMCA5IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZWVzZU9mZiA9IFwiTTMuNSAxLjdMMi4yIDNMNi4xIDYuOVY5QzcuMiA5LjIgOC4xIDEwLjIgOC4xIDExLjVTNy4yIDEzLjcgNi4xIDE0VjIxTDEyLjEgMTcuNUMxMi4xIDE2LjcgMTIuOCAxNiAxMy42IDE2QzEzLjkgMTYgMTQuMiAxNi4xIDE0LjQgMTYuMkwxNS4xIDE1LjhMMjAuMyAyMUwyMS42IDE5LjdMMy41IDEuN00xMC4xIDE2QzkuNiAxNiA5LjEgMTUuNSA5LjEgMTVTOS42IDE0IDEwLjEgMTQgMTEuMSAxNC41IDExLjEgMTUgMTAuNiAxNiAxMC4xIDE2TTEzLjggOS41TDkuOSA1LjZDMTAuMiA1LjkgMTAuNiA2IDExLjEgNkMxMi4xIDYgMTIuOSA1LjIgMTMuMSA0LjJDMTUuNCA1LjIgMTcuNiA2LjYgMTkuMyA4LjRDMTkuMiA4LjYgMTkuMSA4LjcgMTkuMSA4LjlDMTkuMSA5LjQgMTkuNiA5LjkgMjAuMSA5LjlDMjAuMyA5LjkgMjAuNCA5LjkgMjAuNSA5LjhDMjEgMTAuNCAyMS40IDExLjEgMjEuOCAxMS44TDE4LjMgMTMuOEwxNi42IDEyLjFDMTYuOSAxMS44IDE3LjEgMTEuMyAxNy4xIDEwLjhDMTcuMSA5LjcgMTYuMiA4LjggMTUuMSA4LjhDMTQuNiA5IDE0LjEgOS4yIDEzLjggOS41TTkuNSA1LjJMNy4zIDNDOCAzIDguNiAzLjEgOS4yIDMuMkM5LjEgMy41IDkuMSAzLjcgOS4xIDRDOS4xIDQuNCA5LjIgNC45IDkuNSA1LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlZkhhdCA9IFwiTTEyLjUsMS41QzEwLjczLDEuNSA5LjE3LDIuNjcgOC42Nyw0LjM3QzguMTQsNC4xMyA3LjU4LDQgNyw0QTQsNCAwIDAsMCAzLDhDMyw5LjgyIDQuMjQsMTEuNDEgNiwxMS44N1YxOUgxOVYxMS44N0MyMC43NiwxMS40MSAyMiw5LjgyIDIyLDhBNCw0IDAgMCwwIDE4LDRDMTcuNDIsNCAxNi44Niw0LjEzIDE2LjMzLDQuMzdDMTUuODMsMi42NyAxNC4yNywxLjUgMTIuNSwxLjVNMTIsMTAuNUgxM1YxNy41SDEyVjEwLjVNOSwxMi41SDEwVjE3LjVIOVYxMi41TTE1LDEyLjVIMTZWMTcuNUgxNVYxMi41TTYsMjBWMjFBMSwxIDAgMCwwIDcsMjJIMThBMSwxIDAgMCwwIDE5LDIxVjIwSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlbWljYWxXZWFwb24gPSBcIk0xMSw3LjgzQzkuODMsNy40MiA5LDYuMyA5LDVBMywzIDAgMCwxIDEyLDJBMywzIDAgMCwxIDE1LDVDMTUsNi4zMSAxNC4xNiw3LjQyIDEzLDcuODNWMTAuNjRDMTIuNjgsMTAuNTUgMTIuMzUsMTAuNSAxMiwxMC41QzExLjY1LDEwLjUgMTEuMzIsMTAuNTUgMTEsMTAuNjRWNy44M00xOC4zLDIxLjFDMTcuMTYsMjAuNDUgMTYuNjIsMTkuMTggMTYuODQsMTcuOTZMMTQuNCwxNi41NUMxNC44OCwxNi4wOSAxNS4yNCwxNS41IDE1LjQsMTQuODJMMTcuODQsMTYuMjNDMTguNzgsMTUuNDIgMjAuMTYsMTUuMjYgMjEuMjksMTUuOTFDMjIuNzMsMTYuNzQgMjMuMjIsMTguNTcgMjIuMzksMjBDMjEuNTYsMjEuNDQgMTkuNzMsMjEuOTMgMTguMywyMS4xTTIuNywxNS45QzMuODMsMTUuMjUgNS4yMSwxNS40MiA2LjE1LDE2LjIyTDguNiwxNC44MUM4Ljc2LDE1LjUgOS4xMSwxNi4wOCA5LjYsMTYuNTRMNy4xNSwxNy45NUM3LjM4LDE5LjE3IDYuODMsMjAuNDUgNS43LDIxLjFDNC4yNiwyMS45MyAyLjQzLDIxLjQ0IDEuNiwyMEMwLjc3LDE4LjU3IDEuMjYsMTYuNzMgMi43LDE1LjlNMTQsMTRBMiwyIDAgMCwxIDEyLDE2QzEwLjg5LDE2IDEwLDE1LjEgMTAsMTRBMiwyIDAgMCwxIDEyLDEyQzEzLjExLDEyIDE0LDEyLjkgMTQsMTRNMTcsMTRMMTYuOTcsMTQuNTdMMTUuNSwxMy43MUMxNS40LDEyLjY0IDE0LjgzLDExLjcxIDE0LDExLjEyVjkuNDFDMTUuNzcsMTAuMTkgMTcsMTEuOTUgMTcsMTRNMTQuOTcsMTguMDNDMTQuMTQsMTguNjQgMTMuMTEsMTkgMTIsMTlDMTAuODksMTkgOS44NiwxOC42NCA5LjAzLDE4TDEwLjUsMTcuMTdDMTAuOTYsMTcuMzggMTEuNDcsMTcuNSAxMiwxNy41QzEyLjUzLDE3LjUgMTMuMDMsMTcuMzggMTMuNSwxNy4xN0wxNC45NywxOC4wM003LjAzLDE0LjU2TDcsMTRDNywxMS45NSA4LjIzLDEwLjE5IDEwLDkuNDJWMTEuMTNDOS4xNywxMS43MSA4LjYsMTIuNjQgOC41LDEzLjdMNy4wMywxNC41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVzc0Jpc2hvcCA9IFwiTTE5LDIySDVWMjBIMTlWMjJNMTcuMTYsOC4yNkMxOC4yMiw5LjYzIDE4Ljg2LDExLjI4IDE5LDEzQzE5LDE1Ljc2IDE1Ljg3LDE4IDEyLDE4QzguMTMsMTggNSwxNS43NiA1LDEzQzUsMTAuNjIgNy4zMyw2LjM5IDEwLjQ2LDUuMjdDMTAuMTYsNC45MSAxMCw0LjQ2IDEwLDRBMiwyIDAgMCwxIDEyLDJBMiwyIDAgMCwxIDE0LDRDMTQsNC40NiAxMy44NCw0LjkxIDEzLjU0LDUuMjdDMTQuNCw1LjYgMTUuMTgsNi4xIDE1Ljg0LDYuNzRMMTEuMjksMTEuMjlMMTIuNzEsMTIuNzFMMTcuMTYsOC4yNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVzc0tpbmcgPSBcIk0xOSwyMkg1VjIwSDE5VjIyTTE3LDEwQzE1LjU4LDEwIDE0LjI2LDEwLjc3IDEzLjU1LDEySDEzVjdIMTZWNUgxM1YySDExVjVIOFY3SDExVjEySDEwLjQ1QzkuMzUsMTAuMDkgNi45LDkuNDMgNSwxMC41NEMzLjA3LDExLjY0IDIuNDIsMTQuMDkgMy41LDE2QzQuMjQsMTcuMjQgNS41NywxOCA3LDE4SDE3QTQsNCAwIDAsMCAyMSwxNEE0LDQgMCAwLDAgMTcsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hlc3NLbmlnaHQgPSBcIk0xOSwyMkg1VjIwSDE5VjIyTTEzLDJWMkMxMS43NSwyIDEwLjU4LDIuNjIgOS44OSwzLjY2TDcsOEw5LDEwTDExLjA2LDguNjNDMTEuNSw4LjMyIDEyLjE0LDguNDQgMTIuNDUsOC45QzEyLjQ3LDguOTMgMTIuNSw4Ljk2IDEyLjUsOVY5QzEyLjgsOS41OSAxMi42OSwxMC4zIDEyLjIyLDEwLjc3TDcuNDIsMTUuNTdDNi44NywxNi4xMyA2Ljg3LDE3LjAzIDcuNDMsMTcuNThDNy42OSwxNy44NCA4LjA1LDE4IDguNDIsMThIMTdWNkE0LDQgMCAwLDAgMTMsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGVzc1Bhd24gPSBcIk0xOSAyMkg1VjIwSDE5VjIyTTE2IDE4SDhMMTAuMTggMTBIOFY4SDEwLjcyTDEwLjc5IDcuNzRDMTAuMSA3LjQ0IDkuNTUgNi44OSA5LjI1IDYuMkM4LjU4IDQuNjggOS4yNyAyLjkxIDEwLjc5IDIuMjVDMTIuMzEgMS41OCAxNC4wOCAyLjI3IDE0Ljc0IDMuNzlDMTUuNDEgNS4zMSAxNC43MiA3LjA3IDEzLjIgNy43NEwxMy4yNyA4SDE2VjEwSDEzLjgyTDE2IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXNzUXVlZW4gPSBcIk0xOCwzQTIsMiAwIDAsMSAyMCw1QzIwLDUuODEgMTkuNSw2LjUgMTguODMsNi44MkwxNywxMy4xNVYxOEg3VjEzLjE1TDUuMTcsNi44MkM0LjUsNi41IDQsNS44MSA0LDVBMiwyIDAgMCwxIDYsM0EyLDIgMCAwLDEgOCw1QzgsNS41IDcuODIsNS45NSA3LjUsNi4zTDEwLjMsOS4zNUwxMC44Myw1LjYyQzEwLjMzLDUuMjYgMTAsNC42NyAxMCw0QTIsMiAwIDAsMSAxMiwyQTIsMiAwIDAsMSAxNCw0QzE0LDQuNjcgMTMuNjcsNS4yNiAxMy4xNyw1LjYyTDEzLjcsOS4zNUwxNi40Nyw2LjI5QzE2LjE4LDUuOTQgMTYsNS41IDE2LDVBMiwyIDAgMCwxIDE4LDNNNSwyMEgxOVYyMkg1VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXNzUm9vayA9IFwiTTUsMjBIMTlWMjJINVYyME0xNywyVjVIMTVWMkgxM1Y1SDExVjJIOVY1SDdWMkg1VjhIN1YxOEgxN1Y4SDE5VjJIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvdWJsZURvd24gPSBcIk0xNi41OSw1LjU5TDE4LDdMMTIsMTNMNiw3TDcuNDEsNS41OUwxMiwxMC4xN0wxNi41OSw1LjU5TTE2LjU5LDExLjU5TDE4LDEzTDEyLDE5TDYsMTNMNy40MSwxMS41OUwxMiwxNi4xN0wxNi41OSwxMS41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uRG91YmxlTGVmdCA9IFwiTTE4LjQxLDcuNDFMMTcsNkwxMSwxMkwxNywxOEwxOC40MSwxNi41OUwxMy44MywxMkwxOC40MSw3LjQxTTEyLjQxLDcuNDFMMTEsNkw1LDEyTDExLDE4TDEyLjQxLDE2LjU5TDcuODMsMTJMMTIuNDEsNy40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uRG91YmxlUmlnaHQgPSBcIk01LjU5LDcuNDFMNyw2TDEzLDEyTDcsMThMNS41OSwxNi41OUwxMC4xNywxMkw1LjU5LDcuNDFNMTEuNTksNy40MUwxMyw2TDE5LDEyTDEzLDE4TDExLjU5LDE2LjU5TDE2LjE3LDEyTDExLjU5LDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvdWJsZVVwID0gXCJNNy40MSwxOC40MUw2LDE3TDEyLDExTDE4LDE3TDE2LjU5LDE4LjQxTDEyLDEzLjgzTDcuNDEsMTguNDFNNy40MSwxMi40MUw2LDExTDEyLDVMMTgsMTFMMTYuNTksMTIuNDFMMTIsNy44M0w3LjQxLDEyLjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25Eb3duID0gXCJNNy40MSw4LjU4TDEyLDEzLjE3TDE2LjU5LDguNThMMTgsMTBMMTIsMTZMNiwxMEw3LjQxLDguNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvd25Cb3ggPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUMzLDIwLjExIDMuOSwyMSA1LDIxSDE5QzIwLjExLDIxIDIxLDIwLjExIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTIsMTUuNzFMNiw5LjcxTDcuNDEsOC4yOUwxMiwxMi44OEwxNi41OSw4LjI5TDE4LDkuNzFMMTIsMTUuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvd25Cb3hPdXRsaW5lID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU03LjQxLDguMjlMMTIsMTIuODhMMTYuNTksOC4yOUwxOCw5LjcxTDEyLDE1LjcxTDYsOS43MUw3LjQxLDguMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkRvd25DaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNNiwxMEwxMiwxNkwxOCwxMEwxNi42LDguNkwxMiwxMy4yTDcuNCw4LjZMNiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uRG93bkNpcmNsZU91dGxpbmUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMk02LDEwTDEyLDE2TDE4LDEwTDE2LjYsOC42TDEyLDEzLjJMNy40LDguNkw2LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25MZWZ0ID0gXCJNMTUuNDEsMTYuNThMMTAuODMsMTJMMTUuNDEsNy40MUwxNCw2TDgsMTJMMTQsMThMMTUuNDEsMTYuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkxlZnRCb3ggPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUMzLDIwLjExIDMuOSwyMSA1LDIxSDE5QzIwLjExLDIxIDIxLDIwLjExIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTUuNzEsMTYuNTlMMTQuMjksMThMOC4yOSwxMkwxNC4yOSw2TDE1LjcxLDcuNDFMMTEuMTIsMTJMMTUuNzEsMTYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkxlZnRCb3hPdXRsaW5lID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU0xNS43MSw3LjQxTDExLjEyLDEyTDE1LjcxLDE2LjU5TDE0LjI5LDE4TDguMjksMTJMMTQuMjksNkwxNS43MSw3LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25MZWZ0Q2lyY2xlID0gXCJNMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyTTE1LjQsMTYuNkwxMC44LDEyTDE1LjQsNy40TDE0LDZMOCwxMkwxNCwxOEwxNS40LDE2LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvbkxlZnRDaXJjbGVPdXRsaW5lID0gXCJNMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyTTIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJNMTUuNCwxNi42TDEwLjgsMTJMMTUuNCw3LjRMMTQsNkw4LDEyTDE0LDE4TDE1LjQsMTYuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uUmlnaHQgPSBcIk04LjU5LDE2LjU4TDEzLjE3LDEyTDguNTksNy40MUwxMCw2TDE2LDEyTDEwLDE4TDguNTksMTYuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblJpZ2h0Qm94ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTkuNzEsMThMOC4yOSwxNi41OUwxMi44OCwxMkw4LjI5LDcuNDFMOS43MSw2TDE1LjcxLDEyTDkuNzEsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblJpZ2h0Qm94T3V0bGluZSA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QzMsMjAuMTEgMy45LDIxIDUsMjFIMTlDMjAuMTEsMjEgMjEsMjAuMTEgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xOSwxOUg1VjVIMTlWMTlNOC4yOSwxNi41OUwxMi44OCwxMkw4LjI5LDcuNDFMOS43MSw2TDE1LjcxLDEyTDkuNzEsMThMOC4yOSwxNi41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGV2cm9uUmlnaHRDaXJjbGUgPSBcIk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTAsMThMMTYsMTJMMTAsNkw4LjYsNy40TDEzLjIsMTJMOC42LDE2LjZMMTAsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblJpZ2h0Q2lyY2xlT3V0bGluZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyTTguNiwxNi42TDEzLjIsMTJMOC42LDcuNEwxMCw2TDE2LDEyTDEwLDE4TDguNiwxNi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25UcmlwbGVEb3duID0gXCJNNy40MSwxNC41OEwxMiwxOS4xN0wxNi41OSwxNC41OEwxOCwxNkwxMiwyMkw2LDE2TDcuNDEsMTQuNThNNy40MSw4LjU4TDEyLDEzLjE3TDE2LjU5LDguNThMMTgsMTBMMTIsMTZMNiwxMEw3LjQxLDguNThNNy40MSwyLjU4TDEyLDcuMTdMMTYuNTksMi41OEwxOCw0TDEyLDEwTDYsNEw3LjQxLDIuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblRyaXBsZUxlZnQgPSBcIk05LjQyLDcuNDFMNC44MywxMkw5LjQyLDE2LjU5TDgsMThMMiwxMkw4LDZMOS40Miw3LjQxTTE1LjQyLDcuNDFMMTAuODMsMTJMMTUuNDIsMTYuNTlMMTQsMThMOCwxMkwxNCw2TDE1LjQyLDcuNDFNMjEuNDIsNy40MUwxNi44MywxMkwyMS40MiwxNi41OUwyMCwxOEwxNCwxMkwyMCw2TDIxLjQyLDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblRyaXBsZVJpZ2h0ID0gXCJNMTQuNTgsMTYuNTlMMTkuMTcsMTJMMTQuNTgsNy40MUwxNiw2TDIyLDEyTDE2LDE4TDE0LjU4LDE2LjU5TTguNTgsMTYuNTlMMTMuMTcsMTJMOC41OCw3LjQxTDEwLDZMMTYsMTJMMTAsMThMOC41OCwxNi41OU0yLjU4LDE2LjU5TDcuMTcsMTJMMi41OCw3LjQxTDQsNkwxMCwxMkw0LDE4TDIuNTgsMTYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblRyaXBsZVVwID0gXCJNMTYuNTksOS40MkwxMiw0LjgzTDcuNDEsOS40Mkw2LDhMMTIsMkwxOCw4TDE2LjU5LDkuNDJNMTYuNTksMTUuNDJMMTIsMTAuODNMNy40MSwxNS40Mkw2LDE0TDEyLDhMMTgsMTRMMTYuNTksMTUuNDJNMTYuNTksMjEuNDJMMTIsMTYuODNMNy40MSwyMS40Mkw2LDIwTDEyLDE0TDE4LDIwTDE2LjU5LDIxLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25VcCA9IFwiTTcuNDEsMTUuNDFMMTIsMTAuODNMMTYuNTksMTUuNDFMMTgsMTRMMTIsOEw2LDE0TDcuNDEsMTUuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblVwQm94ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE2LjU5LDE1LjcxTDEyLDExLjEyTDcuNDEsMTUuNzFMNiwxNC4yOUwxMiw4LjI5TDE4LDE0LjI5TDE2LjU5LDE1LjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25VcEJveE91dGxpbmUgPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUMzLDIwLjExIDMuOSwyMSA1LDIxSDE5QzIwLjExLDIxIDIxLDIwLjExIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTksMTlINVY1SDE5VjE5TTE2LjU5LDE1LjcxTDEyLDExLjEyTDcuNDEsMTUuNzFMNiwxNC4yOUwxMiw4LjI5TDE4LDE0LjI5TDE2LjU5LDE1LjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNoZXZyb25VcENpcmNsZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk03LjQsMTUuNEwxMiwxMC44TDE2LjYsMTUuNEwxOCwxNEwxMiw4TDYsMTRMNy40LDE1LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hldnJvblVwQ2lyY2xlT3V0bGluZSA9IFwiTTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyTTcuNCwxNS40TDEyLDEwLjhMMTYuNiwxNS40TDE4LDE0TDEyLDhMNiwxNEw3LjQsMTUuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGlsaUhvdCA9IFwiTTE3Ljc1LDlMMTguOTUsOC4yNEMxOS41OCw4LjU4IDIwLDkuMjQgMjAsMTBWMjEuNzVDMjAsMjEuNzUgMTIsMjAgMTIsMTFWMTBDMTIsOS4yNyAxMi4zOSw4LjYzIDEyLjk3LDguMjhMMTQuNDMsOUwxNiw4TDE3Ljc1LDlNMTQsMkMxNS41MywyIDE2LjgsMy4xNSAxNyw0LjY0QzE4LDQuOTMgMTguODEsNS42NyAxOS4yMiw2LjYzTDE3Ljc1LDcuNUwxNiw2LjVMMTQuNDMsNy41TDEyLjc2LDYuNjdDMTMuMTUsNS43MiAxMy45NSw1IDE0Ljk0LDQuNjZDMTQuOCw0LjI4IDE0LjQzLDQgMTQsNFYyTTEwLDEwQzEwLDE4IDEzLjYzLDE5Ljg0IDE2LDIxLjc1QzE2LDIxLjc1IDgsMjAgOCwxMVYxMEM4LDkuMjcgOC4zOSw4LjYzIDguOTcsOC4yOEwxMC4zLDguOTRDMTAuMTEsOS4yNSAxMCw5LjYxIDEwLDEwTTEwLjQzLDcuNUw4Ljc2LDYuNjdDOS4xNSw1LjcyIDkuOTUsNSAxMC45NCw0LjY2QzEwLjgsNC4yOCAxMC40Myw0IDEwLDRWMkMxMC43NywyIDExLjQ3LDIuMjkgMTIsMi43NlY0QzEyLjQzLDQgMTIuOCw0LjI4IDEyLjk0LDQuNjZDMTEuOTUsNSAxMS4xNSw1LjcyIDEwLjQzLDcuNU02LDEwQzYsMTggOS42MywxOS44NCAxMiwyMS43NUMxMiwyMS43NSA0LDIwIDQsMTFWMTBDNCw5LjI3IDQuMzksOC42MyA0Ljk3LDguMjhMNi4zLDguOTRDNi4xMSw5LjI1IDYsOS42MSA2LDEwTTYuNDMsNy41TDQuNzYsNi42N0M1LjE1LDUuNzIgNS45NSw1IDYuOTQsNC42NkM2LjgsNC4yOCA2LjQzLDQgNiw0VjJDNi43NywyIDcuNDcsMi4yOSA4LDIuNzZWNEM4LjQzLDQgOC44LDQuMjggOC45NCw0LjY2QzcuOTUsNSA3LjE1LDUuNzIgNi40Myw3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hpbGlNZWRpdW0gPSBcIk0xNS43NSw5TDE2Ljk1LDguMjRDMTcuNTgsOC41OCAxOCw5LjI0IDE4LDEwVjIxLjc1QzE4LDIxLjc1IDEwLDIwIDEwLDExVjEwQzEwLDkuMjcgMTAuMzksOC42MyAxMC45Nyw4LjI4TDEyLjQzLDlMMTQsOEwxNS43NSw5TTEyLDJDMTMuNTMsMiAxNC44LDMuMTUgMTUsNC42NEMxNiw0LjkzIDE2LjgxLDUuNjcgMTcuMjIsNi42M0wxNS43NSw3LjVMMTQsNi41TDEyLjQzLDcuNUwxMC43Niw2LjY3QzExLjE1LDUuNzIgMTEuOTUsNSAxMi45NCw0LjY2QzEyLjgsNC4yOCAxMi40Myw0IDEyLDRWMk04LDEwQzgsMTggMTEuNjMsMTkuODQgMTQsMjEuNzVDMTQsMjEuNzUgNiwyMCA2LDExVjEwQzYsOS4yNyA2LjM5LDguNjMgNi45Nyw4LjI4TDguMyw4Ljk0QzguMTEsOS4yNSA4LDkuNjEgOCwxME04LjQzLDcuNUw2Ljc2LDYuNjdDNy4xNSw1LjcyIDcuOTUsNSA4Ljk0LDQuNjZDOC44LDQuMjggOC40Myw0IDgsNFYyQzguNzcsMiA5LjQ3LDIuMjkgMTAsMi43NlY0QzEwLjQzLDQgMTAuOCw0LjI4IDEwLjk0LDQuNjZDOS45NSw1IDkuMTUsNS43MiA4LjQzLDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaGlsaU1pbGQgPSBcIk0xMy43NSw5TDE0Ljk1LDguMjRDMTUuNTgsOC41OCAxNiw5LjI0IDE2LDEwVjIxLjc1QzE2LDIxLjc1IDgsMjAgOCwxMVYxMEM4LDkuMjcgOC4zOSw4LjYzIDguOTcsOC4yOEwxMC40Myw5TDEyLDhMMTMuNzUsOU0xMCwyQzExLjUzLDIgMTIuOCwzLjE1IDEzLDQuNjRDMTQsNC45MyAxNC44MSw1LjY3IDE1LjIyLDYuNjNMMTMuNzUsNy41TDEyLDYuNUwxMC40Myw3LjVMOC43Niw2LjY3QzkuMTUsNS43MiA5Ljk1LDUgMTAuOTQsNC42NkMxMC44LDQuMjggMTAuNDMsNCAxMCw0VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hpbGlPZmYgPSBcIk0yMC44IDIyLjdMMTYgMTcuOVYyMS44QzE2IDIxLjggOCAyMCA4IDExVjEwIDkuOUwxLjEgM0wyLjQgMS43TDIyLjEgMjEuNEwyMC44IDIyLjdNMTMuOCA5TDEyIDhMMTEuNSA4LjNMMTYgMTIuOFYxMEMxNiA5LjIgMTUuNiA4LjYgMTUgOC4yTDEzLjggOU0xMiA2LjVMMTMuOCA3LjVMMTUuMyA2LjZDMTQuOSA1LjYgMTQuMSA0LjkgMTMuMSA0LjZDMTIuOCAzLjIgMTEuNSAyIDEwIDJWNEMxMC40IDQgMTAuOCA0LjMgMTAuOSA0LjdDMTAuMiA0LjkgOS42IDUuNCA5LjIgNkwxMC42IDcuNEwxMiA2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hpcCA9IFwiTTYsNEgxOFY1SDIxVjdIMThWOUgyMVYxMUgxOFYxM0gyMVYxNUgxOFYxN0gyMVYxOUgxOFYyMEg2VjE5SDNWMTdINlYxNUgzVjEzSDZWMTFIM1Y5SDZWN0gzVjVINlY0TTExLDE1VjE4SDEyVjE1SDExTTEzLDE1VjE4SDE0VjE1SDEzTTE1LDE1VjE4SDE2VjE1SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNocmlzdGlhbml0eSA9IFwiTTEwLjUsMkgxMy41VjhIMTlWMTFIMTMuNVYyMkgxMC41VjExSDVWOEgxMC41VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2hyaXN0aWFuaXR5T3V0bGluZSA9IFwiTTE1LjUsNlYxSDguNVY2SDNWMTNIOC41VjIzSDE1LjVWMTNIMjFWNkgxNS41TTE5LDExSDEzLjVWMjFIMTAuNVYxMUg1VjhIMTAuNVYzSDEzLjVWOEgxOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaHVyY2ggPSBcIk0xMSwySDEzVjRIMTVWNkgxM1Y5LjRMMjIsMTNWMTVMMjAsMTQuMlYyMkgxNFYxN0EyLDIgMCAwLDAgMTIsMTVBMiwyIDAgMCwwIDEwLDE3VjIySDRWMTQuMkwyLDE1VjEzTDExLDkuNFY2SDlWNEgxMVYyTTYsMjBIOFYxNUw3LDE0TDYsMTVWMjBNMTYsMjBIMThWMTVMMTcsMTRMMTYsMTVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lnYXIgPSBcIk0xNiAxMC4ySDE0LjVBMiAyIDAgMCAxIDEyLjY1IDguMkExLjc4IDEuNzggMCAwIDEgMTQuNSA2LjQ1VjVBMy4zNSAzLjM1IDAgMSAwIDE0LjUgMTEuN0gxNkExLjkzIDEuOTMgMCAwIDEgMTggMTMuN1YxNUgxOS41VjEzLjM2QTMuMzEgMy4zMSAwIDAgMCAxNiAxMC4yTTE4LjgyIDcuNzNBMy4zNCAzLjM0IDAgMCAwIDE2LjUgMlYzLjVBMS44NSAxLjg1IDAgMSAxIDE2LjUgNy4yVjguN0E0IDQgMCAwIDEgMjAuNSAxMi43N1YxNUgyMlYxMi43NkE1LjU1IDUuNTUgMCAwIDAgMTguODUgNy43M00xOCAxNlYyMkgxOS41VjE2TTIwLjUgMTZWMjJIMjJWMTZNMTIgMTZWMTcuMjdBMiAyIDAgMCAxIDEyIDIwLjczVjIySDE3VjE2TTIuODggMTYuODhBMyAzIDAgMCAwIDUgMjJIMTBWMjAuNzNBMiAyIDAgMCAxIDEwIDE3LjI3VjE2SDVBMyAzIDAgMCAwIDIuODggMTYuODhNMTIgMTlBMSAxIDAgMSAxIDExIDE4QTEgMSAwIDAgMSAxMiAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaWdhck9mZiA9IFwiTTIwLjg0IDIyLjczTDE4LjExIDIwSDE4VjE5Ljg5TDE3IDE4Ljg5VjIwSDEyVjE4LjczQzEyLjMgMTguNTYgMTIuNTUgMTguMzEgMTIuNzMgMThDMTMuMjggMTcuMDUgMTIuOTYgMTUuODMgMTIgMTUuMjdWMTRIMTIuMTFMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNC41IDkuN0gxNkMxNy4wNyA5LjY2IDE3Ljk2IDEwLjUgMTggMTEuNTZDMTggMTEuNjEgMTggMTEuNjUgMTggMTEuN1YxM0gxOS41VjExLjM2QzE5LjQyIDkuNTMgMTcuODggOC4xMiAxNi4wNSA4LjJMMTYgOC4ySDE0LjVDMTMuNDUgOC4xMiAxMi42NSA3LjI1IDEyLjY1IDYuMkMxMi42NyA1LjIyIDEzLjUgNC40MyAxNC40NiA0LjQ1TDE0LjUgNC40NVYzQzEyLjY1IDMgMTEuMTUgNC41IDExLjE1IDYuMzVTMTIuNjUgOS43IDE0LjUgOS43TTIwLjUgMTAuN0wyMC41IDEwLjc3VjEzSDIyVjEwLjc2QzIyIDguNjIgMjAuNzggNi42NiAxOC44NSA1LjczSDE4LjgyQzE5LjU4IDUgMTkuOSA0IDE5LjggM0gxOC4zMkMxOC4zNCAzLjExIDE4LjM1IDMuMjMgMTguMzUgMy4zNUMxOC4zNSA0LjM3IDE3LjUgNS4yIDE2LjUgNS4ySDE2LjVWNi43QzE4LjcxIDYuNyAyMC41IDguNSAyMC41IDEwLjdNOS4yNyAxNkM5LjQ1IDE1LjcgOS43IDE1LjQ1IDEwIDE1LjI3VjE0SDVDNC4yMSAxNCAzLjQ0IDE0LjMyIDIuODggMTQuODhDMS43MSAxNi4wNSAxLjcxIDE3Ljk1IDIuODggMTkuMTJDMy40NSAxOS42OCA0LjIxIDIwIDUgMjBIMTBWMTguNzNDOS4wNSAxOC4xOCA4LjcyIDE2Ljk1IDkuMjcgMTZNMTggMTQuOEwxOS41IDE2LjNWMTRIMThWMTQuOE0yMC41IDE3LjNMMjIgMTguOFYxNEgyMC41VjE3LjNNMTEgMTZDMTAuNDUgMTYgMTAgMTYuNDUgMTAgMTdTMTAuNDUgMTggMTEgMTggMTIgMTcuNTUgMTIgMTcgMTEuNTUgMTYgMTEgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlQm94ID0gXCJNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy45IDIwLjExIDMgMTkgM00xMiAxNkM5Ljc5IDE2IDggMTQuMjEgOCAxMlM5Ljc5IDggMTIgOCAxNiA5Ljc5IDE2IDEyIDE0LjIxIDE2IDEyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZUJveE91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDhDOS43OSA4IDggOS43OSA4IDEyUzkuNzkgMTYgMTIgMTYgMTYgMTQuMjEgMTYgMTIgMTQuMjEgOCAxMiA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZURvdWJsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE0xMiw2QTYsNiAwIDAsMCA2LDEyQTYsNiAwIDAsMCAxMiwxOEE2LDYgMCAwLDAgMTgsMTJBNiw2IDAgMCwwIDEyLDZNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZUVkaXRPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEySDIwQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNFYyTTE4Ljc4LDNDMTguNjEsMyAxOC40MywzLjA3IDE4LjMsMy4yTDE3LjA4LDQuNDFMMTkuNTgsNi45MUwyMC44LDUuN0MyMS4wNiw1LjQ0IDIxLjA2LDUgMjAuOCw0Ljc1TDE5LjI1LDMuMkMxOS4xMiwzLjA3IDE4Ljk1LDMgMTguNzgsM00xNi4zNyw1LjEyTDksMTIuNVYxNUgxMS41TDE4Ljg3LDcuNjJMMTYuMzcsNS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVFeHBhbmQgPSBcIk0xNiw0TDIwLDhWNE0yMCwxNkwxNiwyMEgyME04LDIwTDQsMTZWMjBNNCw4TDgsNEg0TTE2Ljk1LDcuMDVDMTQuMjIsNC4zMiA5Ljc4LDQuMzIgNy4wNSw3LjA1QzQuMzIsOS43OCA0LjMyLDE0LjIyIDcuMDUsMTYuOTVDOS43OCwxOS42OCAxNC4yMiwxOS42OCAxNi45NSwxNi45NUMxOS42OCwxNC4yMiAxOS42OCw5Ljc5IDE2Ljk1LDcuMDVNMTUuODUsMTUuODVDMTMuNzIsMTggMTAuMjgsMTggOC4xNSwxNS44NUM2LDEzLjcyIDYsMTAuMjggOC4xNSw4LjE1QzEwLjI4LDYgMTMuNzIsNiAxNS44NSw4LjE1QzE4LDEwLjI4IDE4LDEzLjcyIDE1Ljg1LDE1Ljg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZUhhbGYgPSBcIk0xMiAyQTEwIDEwIDAgMCAwIDIgMTJBMTAgMTAgMCAwIDAgMTIgMjJWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVIYWxmRnVsbCA9IFwiTTEyIDJBMTAgMTAgMCAwIDAgMiAxMkExMCAxMCAwIDAgMCAxMiAyMkExMCAxMCAwIDAgMCAyMiAxMkExMCAxMCAwIDAgMCAxMiAyTTEyIDRBOCA4IDAgMCAxIDIwIDEyQTggOCAwIDAgMSAxMiAyMFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZU1lZGl1bSA9IFwiTTEyLDhBNCw0IDAgMCwwIDgsMTJBNCw0IDAgMCwwIDEyLDE2QTQsNCAwIDAsMCAxNiwxMkE0LDQgMCAwLDAgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVNdWx0aXBsZSA9IFwiTTE1IDRBOCA4IDAgMSAxIDcgMTJBOCA4IDAgMCAxIDE1IDRNMyAxMkE2IDYgMCAwIDAgNyAxNy42NVYxOS43NEE4IDggMCAwIDEgNyA0LjI2VjYuMzVBNiA2IDAgMCAwIDMgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlTXVsdGlwbGVPdXRsaW5lID0gXCJNMTUsNEE4LDggMCAwLDEgMjMsMTJBOCw4IDAgMCwxIDE1LDIwQTgsOCAwIDAsMSA3LDEyQTgsOCAwIDAsMSAxNSw0TTE1LDE4QTYsNiAwIDAsMCAyMSwxMkE2LDYgMCAwLDAgMTUsNkE2LDYgMCAwLDAgOSwxMkE2LDYgMCAwLDAgMTUsMThNMywxMkMzLDE0LjYxIDQuNjcsMTYuODMgNywxNy42NVYxOS43NEMzLjU1LDE4Ljg1IDEsMTUuNzMgMSwxMkMxLDguMjcgMy41NSw1LjE1IDcsNC4yNlY2LjM1QzQuNjcsNy4xNyAzLDkuMzkgMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w0LjA2IDUuOTVDMi43OCA3LjYzIDIgOS43MiAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTQuMjggMjIgMTYuMzcgMjEuMjMgMTguMDUgMTkuOTRMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMjBDNy41OCAyMCA0IDE2LjQyIDQgMTJDNCAxMC4yNyA0LjU2IDguNjggNS41IDcuMzhMMTYuNjIgMTguNUMxNS4zMiAxOS40NSAxMy43MyAyMCAxMiAyME04LjE3IDQuOTdMNi43MiAzLjVDOC4yNSAyLjU2IDEwLjA2IDIgMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyQzIyIDEzLjk0IDIxLjQ0IDE1Ljc1IDIwLjUgMTcuMjhMMTkuMDMgMTUuODNDMTkuNjUgMTQuNjkgMjAgMTMuMzkgMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRDMTAuNjEgNCA5LjMxIDQuMzUgOC4xNyA0Ljk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlMSA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEyIDVDMTMuOTMgNSAxNS42OCA1Ljc4IDE2Ljk1IDcuMDVMMTIgMTJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbGljZTIgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkgxMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlMyA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEyIDVDMTUuODcgNSAxOSA4LjEzIDE5IDEyQzE5IDEzLjkzIDE4LjIyIDE1LjY4IDE2Ljk1IDE2Ljk1TDEyIDEyVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2lyY2xlU2xpY2U0ID0gXCJNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyQzIyIDE3LjUgMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMiA0QzcuNTggNCA0IDcuNTggNCAxMkM0IDE2LjQyIDcuNTggMjAgMTIgMjBDMTYuNDIgMjAgMjAgMTYuNDIgMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRNMTIgNUMxNS44NyA1IDE5IDguMTMgMTkgMTJDMTkgMTUuODcgMTUuODcgMTkgMTIgMTlWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbGljZTUgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkMxOSAxNS44NyAxNS44NyAxOSAxMiAxOUMxMC4wNyAxOSA4LjMyIDE4LjIyIDcuMDUgMTYuOTVMMTIgMTJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbGljZTYgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkMxOSAxNS44NyAxNS44NyAxOSAxMiAxOUM4LjEzIDE5IDUgMTUuODcgNSAxMkgxMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlNyA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEyIDVDMTUuODcgNSAxOSA4LjEzIDE5IDEyQzE5IDE1Ljg3IDE1Ljg3IDE5IDEyIDE5QzguMTMgMTkgNSAxNS44NyA1IDEyQzUgMTAuMDcgNS43OCA4LjMyIDcuMDUgNy4wNUwxMiAxMlY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpcmNsZVNsaWNlOCA9IFwiTTEyIDVDMTUuODcgNSAxOSA4LjEzIDE5IDEyQzE5IDE1Ljg3IDE1Ljg3IDE5IDEyIDE5QzguMTMgMTkgNSAxNS44NyA1IDEyQzUgOC4xMyA4LjEzIDUgMTIgNU0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJDMjIgMTcuNSAxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjbGVTbWFsbCA9IFwiTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkMxMCwxMy4xMSAxMC45LDE0IDEyLDE0QzEzLjExLDE0IDE0LDEzLjExIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDaXJjdWxhclNhdyA9IFwiTTEzLDExQTEsMSAwIDAsMSAxNCwxMkExLDEgMCAwLDEgMTMsMTNBMSwxIDAgMCwxIDEyLDEyQTEsMSAwIDAsMSAxMywxMU03Ljg2LDYuMjVDOS4xNCw0Ljg3IDEwLjk3LDQgMTMsNEMxNi41LDQgMTkuNDQsNi42MSAxOS45MywxMEgyMlYxMkgxNkEzLDMgMCAwLDAgMTMsOUEzLDMgMCAwLDAgMTAsMTJIMlYxMEgyLjA1QzIuMjUsNy43MyAzLjE0LDUuNjYgNC41LDRMNy44Niw2LjI1TTYuNzMsNy44OUw1LjA2LDYuNzdDNC41Myw3Ljc1IDQuMTgsOC44NCA0LjA2LDEwSDYuMDdDNi4xOCw5LjI1IDYuNCw4LjU0IDYuNzMsNy44OU03LjQsMTUuNEw2LDE0SDExLjc5QzEyLjAzLDE0LjQyIDEyLjUsMTQuNyAxMywxNC43QzEzLjUsMTQuNyAxMy45NywxNC40MiAxNC4yMSwxNEgyMFYxNS40QzE4LjM5LDE0LjQyIDE4LjQ2LDE1Ljc1IDE4LjQ2LDE1Ljc1VjE3LjcxTDE2LjUsMTkuNjdDMTYsMTcuOTIgMTUuMSwxOC45IDE1LjEsMTguOUwxMy43LDIwLjNIMTAuOUMxMS44OCwxOC42OSAxMC41NSwxOC43NiAxMC41NSwxOC43Nkg4LjU5TDYuNjMsMTYuOEM4LjM4LDE2LjMxIDcuNCwxNS40IDcuNCwxNS40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpdHkgPSBcIk0xOSwxNUgxN1YxM0gxOU0xOSwxOUgxN1YxN0gxOU0xMyw3SDExVjVIMTNNMTMsMTFIMTFWOUgxM00xMywxNUgxMVYxM0gxM00xMywxOUgxMVYxN0gxM003LDExSDVWOUg3TTcsMTVINVYxM0g3TTcsMTlINVYxN0g3TTE1LDExVjVMMTIsMkw5LDVWN0gzVjIxSDIxVjExSDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpdHlWYXJpYW50ID0gXCJNMTksOVY3QTIsMiAwIDAsMCAxNyw1SDE2VjJIMTRWNUgxM0EyLDIgMCAwLDAgMTEsN1Y5QTIsMiAwIDAsMCA5LDExVjEySDVBMiwyIDAgMCwwIDMsMTRWMjJINlYyMEg4VjIySDEyVjIwSDE0VjIySDE2VjIwSDE4VjIySDIxVjExQTIsMiAwIDAsMCAxOSw5TTgsMThINlYxNkg4VjE4TTE0LDE4SDEyVjE2SDE0VjE4TTE0LDE0SDEyVjEySDE0VjE0TTEzLDlWN0gxN1Y5SDEzTTE4LDE4SDE2VjE2SDE4VjE4TTE4LDE0SDE2VjEySDE4VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNpdHlWYXJpYW50T3V0bGluZSA9IFwiTTE1LDIzSDEzVjIxSDE1VjIzTTE5LDIxSDE3VjIzSDE5VjIxTTE1LDE3SDEzVjE5SDE1VjE3TTcsMjFINVYyM0g3VjIxTTcsMTdINVYxOUg3VjE3TTE5LDE3SDE3VjE5SDE5VjE3TTE1LDEzSDEzVjE1SDE1VjEzTTE5LDEzSDE3VjE1SDE5VjEzTTIxLDlBMiwyIDAgMCwxIDIzLDExVjIzSDIxVjExSDExVjIzSDlWMTVIM1YyM0gxVjE1QTIsMiAwIDAsMSAzLDEzSDlWMTFBMiwyIDAgMCwxIDExLDlWN0EyLDIgMCAwLDEgMTMsNUgxNVYxSDE3VjVIMTlBMiwyIDAgMCwxIDIxLDdWOU0xOSw5VjdIMTNWOUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmQgPSBcIk0xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQWNjb3VudCA9IFwiTTE4LDE5SDZWMTcuNkM2LDE1LjYgMTAsMTQuNSAxMiwxNC41QzE0LDE0LjUgMTgsMTUuNiAxOCwxNy42TTEyLDdBMywzIDAgMCwxIDE1LDEwQTMsMyAwIDAsMSAxMiwxM0EzLDMgMCAwLDEgOSwxMEEzLDMgMCAwLDEgMTIsN00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFjY291bnRPdXRsaW5lID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM003LDdWNUg1VjE5SDE5VjVIMTdWN0g3TTEyLDlBMiwyIDAgMCwxIDE0LDExQTIsMiAwIDAsMSAxMiwxM0EyLDIgMCAwLDEgMTAsMTFBMiwyIDAgMCwxIDEyLDlNOCwxN1YxNkM4LDE0LjkgOS43OSwxNCAxMiwxNEMxNC4yMSwxNCAxNiwxNC45IDE2LDE2VjE3SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQWxlcnQgPSBcIk0xMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1TTEzLDE0SDExVjhIMTNNMTMsMThIMTFWMTZIMTNNMTksM0gxNC44MkMxNC40LDEuODQgMTMuMywxIDEyLDFDMTAuNywxIDkuNiwxLjg0IDkuMTgsM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQWxlcnRPdXRsaW5lID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM003LDdWNUg1VjE5SDE5VjVIMTdWN0g3TTExLDlIMTNWMTMuNUgxMVY5TTExLDE1SDEzVjE3SDExVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93RG93biA9IFwiTTEyLDE4TDcsMTNIMTBWOUgxNFYxM0gxN00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93RG93bk91dGxpbmUgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0g5LjE4QzkuNiwxLjg0IDEwLjcsMSAxMiwxQzEzLjMsMSAxNC40LDEuODQgMTQuODIsM0gxOU0xMiwzQTEsMSAwIDAsMCAxMSw0QTEsMSAwIDAsMCAxMiw1QTEsMSAwIDAsMCAxMyw0QTEsMSAwIDAsMCAxMiwzTTcsN1Y1SDVWMTlIMTlWNUgxN1Y3SDdNMTIsMThMNywxM0gxMFY5SDE0VjEzSDE3TDEyLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93TGVmdCA9IFwiTTE2LDE1SDEyVjE4TDcsMTNMMTIsOFYxMUgxNk0xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93TGVmdE91dGxpbmUgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0g5LjE4QzkuNiwxLjg0IDEwLjcsMSAxMiwxQzEzLjMsMSAxNC40LDEuODQgMTQuODIsM0gxOU0xMiwzQTEsMSAwIDAsMCAxMSw0QTEsMSAwIDAsMCAxMiw1QTEsMSAwIDAsMCAxMyw0QTEsMSAwIDAsMCAxMiwzTTcsN1Y1SDVWMTlIMTlWNUgxN1Y3SDdNNywxM0wxMiwxOFYxNUgxNlYxMUgxMlY4TDcsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkQXJyb3dSaWdodCA9IFwiTTE3LDEzTDEyLDE4VjE1SDhWMTFIMTJWOE0xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEFycm93UmlnaHRPdXRsaW5lID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM003LDdWNUg1VjE5SDE5VjVIMTdWN0g3TTE2LjkxLDEzTDExLjkxLDE4VjE1SDcuOTFWMTFIMTEuOTFWOEwxNi45MSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRBcnJvd1VwID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIOS4xOEM5LjYsMS44NCAxMC43LDEgMTIsMUMxMy4zLDEgMTQuNCwxLjg0IDE0LjgyLDNIMTlNMTIsOEw3LDEzSDEwVjE3SDE0VjEzSDE3TDEyLDhNMTIsM0ExLDEgMCAwLDAgMTEsNEExLDEgMCAwLDAgMTIsNUExLDEgMCAwLDAgMTMsNEExLDEgMCAwLDAgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRBcnJvd1VwT3V0bGluZSA9IFwiTTEyLDhMMTcsMTNIMTRWMTdIMTBWMTNIN0wxMiw4TTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDkuMThDOS42LDEuODQgMTAuNywxIDEyLDFDMTMuMywxIDE0LjQsMS44NCAxNC44MiwzSDE5TTEyLDNBMSwxIDAgMCwwIDExLDRBMSwxIDAgMCwwIDEyLDVBMSwxIDAgMCwwIDEzLDRBMSwxIDAgMCwwIDEyLDNNNyw3VjVINVYxOUgxOVY1SDE3VjdIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRDaGVjayA9IFwiTTEwLDE3TDYsMTNMNy40MSwxMS41OUwxMCwxNC4xN0wxNi41OSw3LjU4TDE4LDlNMTIsM0ExLDEgMCAwLDEgMTMsNEExLDEgMCAwLDEgMTIsNUExLDEgMCAwLDEgMTEsNEExLDEgMCAwLDEgMTIsM00xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRDaGVja011bHRpcGxlID0gXCJNNCA3SDJWMjFDMiAyMi4xIDIuOSAyMyA0IDIzSDE4VjIxSDRNMjAgM0gxNi44QzE2LjQgMS44IDE1LjMgMSAxNCAxQzEyLjcgMSAxMS42IDEuOCAxMS4yIDNIOEM2LjkgMyA2IDMuOSA2IDVWMTdDNiAxOC4xIDYuOSAxOSA4IDE5SDIwQzIxLjEgMTkgMjIgMTguMSAyMiAxN1Y1QzIyIDMuOSAyMS4xIDMgMjAgM00xNCAzQzE0LjYgMyAxNSAzLjUgMTUgNEMxNSA0LjUgMTQuNSA1IDE0IDVDMTMuNSA1IDEzIDQuNSAxMyA0QzEzIDMuNSAxMy40IDMgMTQgM00xMi4zIDE1LjFMOSAxMS44TDEwLjQgMTAuNEwxMi4zIDEyLjNMMTcuNiA3TDE5IDguNFwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZENoZWNrTXVsdGlwbGVPdXRsaW5lID0gXCJNNCA3VjIxSDE4VjIzSDRDMi45IDIzIDIgMjIuMSAyIDIxVjdINE0xMi44IDE1LjM1TDkuNSAxMi4wNUwxMC45IDEwLjY1TDEyLjggMTIuNTVMMTcuMSA4LjI1TDE4LjUgOS42NUwxMi44IDE1LjM1TTIwIDNDMjEuMSAzIDIyIDMuOSAyMiA1VjE3QzIyIDE4LjEgMjEuMSAxOSAyMCAxOUg4QzYuOSAxOSA2IDE4LjEgNiAxN1Y1QzYgMy45IDYuOSAzIDggM0gxMS4xOEMxMS42IDEuODQgMTIuNyAxIDE0IDFDMTUuMyAxIDE2LjQgMS44NCAxNi44MiAzSDIwTTE0IDNDMTMuNDUgMyAxMyAzLjQ1IDEzIDRDMTMgNC41NSAxMy40NSA1IDE0IDVDMTQuNTUgNSAxNSA0LjU1IDE1IDRDMTUgMy40NSAxNC41NSAzIDE0IDNNMTAgN1Y1SDhWMTdIMjBWNUgxOFY3SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZENoZWNrT3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNNyw3SDE3VjVIMTlWMTlINVY1SDdWN003LjUsMTMuNUw5LDEyTDExLDE0TDE1LjUsOS41TDE3LDExTDExLDE3TDcuNSwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZENsb2NrID0gXCJNMTYuNSAxNi4yNUwxOS4zNiAxNy45NEwxOC42MSAxOS4xNkwxNSAxN1YxMkgxNi41VjE2LjI1TTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzE0LjA5IDIzIDEyLjM3IDIyLjI0IDExLjExIDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0g5LjE4QzkuNiAxLjg0IDEwLjcgMSAxMiAxUzE0LjQgMS44NCAxNC44MiAzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTEuMTFDMjIuMjQgMTIuMzcgMjMgMTQuMDkgMjMgMTZNMTEgNEMxMSA0LjU1IDExLjQ1IDUgMTIgNVMxMyA0LjU1IDEzIDQgMTIuNTUgMyAxMiAzIDExIDMuNDUgMTEgNE0yMSAxNkMyMSAxMy4yNCAxOC43NiAxMSAxNiAxMVMxMSAxMy4yNCAxMSAxNiAxMy4yNCAyMSAxNiAyMSAyMSAxOC43NiAyMSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRDbG9ja091dGxpbmUgPSBcIk0yMSAxMS4xMVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDExLjExQzEyLjM3IDIyLjI0IDE0LjA5IDIzIDE2IDIzQzE5Ljg3IDIzIDIzIDE5Ljg3IDIzIDE2QzIzIDE0LjA5IDIyLjI0IDEyLjM3IDIxIDExLjExTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNNSAxOVY1SDdWN0gxN1Y1SDE5VjkuNjhDMTguMDkgOS4yNSAxNy4wOCA5IDE2IDlDMTIuMTMgOSA5IDEyLjEzIDkgMTZDOSAxNy4wOCA5LjI1IDE4LjA5IDkuNjggMTlINU0xNiAyMUMxMy4yNCAyMSAxMSAxOC43NiAxMSAxNlMxMy4yNCAxMSAxNiAxMSAyMSAxMy4yNCAyMSAxNiAxOC43NiAyMSAxNiAyMU0xNi41IDE2LjI1TDE5LjM2IDE3Ljk0TDE4LjYxIDE5LjE2TDE1IDE3VjEySDE2LjVWMTYuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkRWRpdCA9IFwiTTIxLjA0IDEyLjEzQzIxLjE4IDEyLjEzIDIxLjMxIDEyLjE5IDIxLjQyIDEyLjNMMjIuNyAxMy41OEMyMi45MiAxMy43OSAyMi45MiAxNC4xNCAyMi43IDE0LjM1TDIxLjcgMTUuMzVMMTkuNjUgMTMuM0wyMC42NSAxMi4zQzIwLjc2IDEyLjE5IDIwLjkgMTIuMTMgMjEuMDQgMTIuMTNNMTkuMDcgMTMuODhMMjEuMTIgMTUuOTNMMTUuMDYgMjJIMTNWMTkuOTRMMTkuMDcgMTMuODhNMTkgM0MyMC4xIDMgMjEgMy45IDIxIDVWOUwxMSAxOVYyMUg1QzMuOSAyMSAzIDIwLjEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0g5LjE4QzkuNiAxLjg0IDEwLjcgMSAxMiAxQzEzLjMgMSAxNC40IDEuODQgMTQuODIgM0gxOU0xMiAzQzExLjQ1IDMgMTEgMy40NSAxMSA0QzExIDQuNTUgMTEuNDUgNSAxMiA1QzEyLjU1IDUgMTMgNC41NSAxMyA0QzEzIDMuNDUgMTIuNTUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEVkaXRPdXRsaW5lID0gXCJNMjEuMDQgMTIuMTNDMjEuMTggMTIuMTMgMjEuMzEgMTIuMTkgMjEuNDIgMTIuM0wyMi43IDEzLjU4QzIyLjkyIDEzLjc5IDIyLjkyIDE0LjE0IDIyLjcgMTQuMzVMMjEuNyAxNS4zNUwxOS42NSAxMy4zTDIwLjY1IDEyLjNDMjAuNzYgMTIuMTkgMjAuOSAxMi4xMyAyMS4wNCAxMi4xM00xOS4wNyAxMy44OEwyMS4xMiAxNS45M0wxNS4wNiAyMkgxM1YxOS45NEwxOS4wNyAxMy44OE0xMSAxOUw5IDIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS42IDEuODQgMTAuNyAxIDEyIDFDMTMuMyAxIDE0LjQgMS44NCAxNC44MiAzSDE5QzIwLjEgMyAyMSAzLjkgMjEgNVY5TDE5IDExVjVIMTdWN0g3VjVINVYxOUgxMU0xMiAzQzExLjQ1IDMgMTEgMy40NSAxMSA0QzExIDQuNTUgMTEuNDUgNSAxMiA1QzEyLjU1IDUgMTMgNC41NSAxMyA0QzEzIDMuNDUgMTIuNTUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEZpbGUgPSBcIk0xOSAzQzIwLjEgMyAyMSAzLjkgMjEgNVY5LjE3TDE5LjgzIDhIMTVDMTIuNzkgOCAxMSA5Ljc5IDExIDEyVjIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS42IDEuODQgMTAuNyAxIDEyIDFDMTMuMyAxIDE0LjQgMS44NCAxNC44MiAzSDE5TTEyIDNDMTEuNDUgMyAxMSAzLjQ1IDExIDRDMTEgNC41NSAxMS40NSA1IDEyIDVDMTIuNTUgNSAxMyA0LjU1IDEzIDRDMTMgMy40NSAxMi41NSAzIDEyIDNNMTUgMjNDMTMuOSAyMyAxMyAyMi4xMSAxMyAyMVYxMkMxMyAxMC45IDEzLjkgMTAgMTUgMTBIMTlMMjMgMTRWMjFDMjMgMjIuMTEgMjIuMTEgMjMgMjEgMjNIMTVNMjEgMTQuODNMMTguMTcgMTJIMThWMTVIMjFWMTQuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkRmlsZU91dGxpbmUgPSBcIk0xNSAyM0MxMy45IDIzIDEzIDIyLjExIDEzIDIxVjEyQzEzIDEwLjkgMTMuOSAxMCAxNSAxMEgxOUwyMyAxNFYyMUMyMyAyMi4xMSAyMi4xMSAyMyAyMSAyM0gxNU0xNSAyMUgyMVYxNC44M0wxOC4xNyAxMkgxNVYyMU0xOSAzQzIwLjEgMyAyMSAzLjkgMjEgNVY5LjE3TDE5LjgzIDhIMTlWNUgxN1Y3SDdWNUg1VjE5SDExVjIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS42IDEuODQgMTAuNyAxIDEyIDFDMTMuMyAxIDE0LjQgMS44NCAxNC44MiAzSDE5TTEyIDNDMTEuNDUgMyAxMSAzLjQ1IDExIDRDMTEgNC41NSAxMS40NSA1IDEyIDVDMTIuNTUgNSAxMyA0LjU1IDEzIDRDMTMgMy40NSAxMi41NSAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkRmxvdyA9IFwiTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNMTUsMTlMMTEsMTVIMTRWOEgxNlYxNUgxOUwxNSwxOU0xMCwxNkg4VjlINUw5LDVMMTMsOUgxMFYxNlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZEZsb3dPdXRsaW5lID0gXCJNMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNNyA3SDE3VjVIMTlWMTlINVY1SDdWN00xMCAxNkg4VjExSDZMOSA4TDEyIDExSDEwVjE2TTE0IDEwSDE2VjE1SDE4TDE1IDE4TDEyIDE1SDE0VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZExpc3QgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM003IDhIOVYxMkg4VjlIN1Y4TTEwIDE3VjE4SDdWMTcuMDhMOSAxNUg3VjE0SDkuMjVDOS42NiAxNCAxMCAxNC4zNCAxMCAxNC43NUMxMCAxNC45NSA5LjkyIDE1LjE0IDkuNzkgMTUuMjdMOC4xMiAxN0gxME0xMSA0QzExIDMuNDUgMTEuNDUgMyAxMiAzUzEzIDMuNDUgMTMgNCAxMi41NSA1IDEyIDUgMTEgNC41NSAxMSA0TTE3IDE3SDEyVjE1SDE3VjE3TTE3IDExSDEyVjlIMTdWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkTGlzdE91dGxpbmUgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTcgN0gxN1Y1SDE5VjE5SDVWNUg3VjdNMTIgMTdWMTVIMTdWMTdIMTJNMTIgMTFWOUgxN1YxMUgxMk04IDEyVjlIN1Y4SDlWMTJIOE05LjI1IDE0QzkuNjYgMTQgMTAgMTQuMzQgMTAgMTQuNzVDMTAgMTQuOTUgOS45MiAxNS4xNCA5Ljc5IDE1LjI3TDguMTIgMTdIMTBWMThIN1YxNy4wOEw5IDE1SDdWMTRIOS4yNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE1pbnVzID0gXCJNMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMTYgMTRIOFYxMkgxNlYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRNaW51c091dGxpbmUgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xMSAzLjkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNNMTIgM0MxMi41NSAzIDEzIDMuNDUgMTMgNFMxMi41NSA1IDEyIDUgMTEgNC41NSAxMSA0IDExLjQ1IDMgMTIgM00xOSAxOUg1VjVIN1Y3SDE3VjVIMTlWMTlNOCAxMkgxNlYxNEg4VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE11bHRpcGxlID0gXCJNNCA3SDJWMjFDMiAyMi4xIDIuOSAyMyA0IDIzSDE4VjIxSDRNMjAgM0gxNi44QzE2LjQgMS44IDE1LjMgMSAxNCAxQzEyLjcgMSAxMS42IDEuOCAxMS4yIDNIOEM2LjkgMyA2IDMuOSA2IDVWMTdDNiAxOC4xIDYuOSAxOSA4IDE5SDIwQzIxLjEgMTkgMjIgMTguMSAyMiAxN1Y1QzIyIDMuOSAyMS4xIDMgMjAgM00xNCAzQzE0LjYgMyAxNSAzLjUgMTUgNEMxNSA0LjUgMTQuNSA1IDE0IDVDMTMuNSA1IDEzIDQuNSAxMyA0QzEzIDMuNSAxMy40IDMgMTQgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRNdWx0aXBsZU91dGxpbmUgPSBcIk00IDdWMjFIMThWMjNINEMyLjkgMjMgMiAyMi4xIDIgMjFWN0g0TTIwIDNDMjEuMSAzIDIyIDMuOSAyMiA1VjE3QzIyIDE4LjEgMjEuMSAxOSAyMCAxOUg4QzYuOSAxOSA2IDE4LjEgNiAxN1Y1QzYgMy45IDYuOSAzIDggM0gxMS4xOEMxMS42IDEuODQgMTIuNyAxIDE0IDFDMTUuMyAxIDE2LjQgMS44NCAxNi44MiAzSDIwTTE0IDNDMTMuNDUgMyAxMyAzLjQ1IDEzIDRDMTMgNC41NSAxMy40NSA1IDE0IDVDMTQuNTUgNSAxNSA0LjU1IDE1IDRDMTUgMy40NSAxNC41NSAzIDE0IDNNMTAgN1Y1SDhWMTdIMjBWNUgxOFY3SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE9mZiA9IFwiTTIxIDVDMjEgMy45IDIwLjExIDMgMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDYuMkwyMSAxNy44VjVNMTIgNUMxMS40NSA1IDExIDQuNTUgMTEgNFMxMS40NSAzIDEyIDMgMTMgMy40NSAxMyA0IDEyLjU1IDUgMTIgNU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS4xIDIxQzE5LjA3IDIxIDE5LjAzIDIxIDE5IDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgNC45NyAzIDQuOTMgMyA0LjlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRPZmZPdXRsaW5lID0gXCJNMi4zOSAxLjczTDEuMTEgM0wzIDQuOUMzIDQuOTMgMyA0Ljk3IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzE5LjAzIDIxIDE5LjA3IDIxIDE5LjEgMjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTUgMTlWNi44OUwxNy4xMSAxOUg1TTE3IDdWNUgxOVYxNS44TDIxIDE3LjhWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINi4yTDEwLjIgN0gxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZE91dGxpbmUgPSBcIk0xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTcsN0gxN1Y1SDE5VjE5SDVWNUg3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkUGxheSA9IFwiTTE5LDNIMTQuODJDMTQuMjUsMS40NCAxMi41MywwLjY0IDExLDEuMkMxMC4xNCwxLjUgOS41LDIuMTYgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTEwLDE3VjlMMTUsMTNMMTAsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkUGxheU11bHRpcGxlID0gXCJNNCAyMUgxOFYyM0g0QzIuOSAyMyAyIDIyLjEgMiAyMVY3SDRNMjIgNVYxN0MyMiAxOC4xIDIxLjEgMTkgMjAgMTlIOEM2LjkgMTkgNiAxOC4xIDYgMTdWNUM2IDMuOSA2LjkgMyA4IDNIMTEuMkMxMS42IDEuOCAxMi43IDEgMTQgMUMxNS4zIDEgMTYuNCAxLjggMTYuOCAzSDIwQzIxLjEgMyAyMiAzLjkgMjIgNU0xMyA0QzEzIDQuNSAxMy41IDUgMTQgNUMxNC41IDUgMTUgNC41IDE1IDRDMTUgMy41IDE0LjYgMyAxNCAzQzEzLjQgMyAxMyAzLjUgMTMgNE0xNyAxMkwxMiA4VjE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkUGxheU11bHRpcGxlT3V0bGluZSA9IFwiTTQgN1YyMUgxOFYyM0g0QzIuOSAyMyAyIDIyLjEgMiAyMVY3SDRNMjAgM0MyMS4xIDMgMjIgMy45IDIyIDVWMTdDMjIgMTguMSAyMS4xIDE5IDIwIDE5SDhDNi45IDE5IDYgMTguMSA2IDE3VjVDNiAzLjkgNi45IDMgOCAzSDExLjJDMTEuNiAxLjggMTIuNyAxIDE0IDFDMTUuMyAxIDE2LjQgMS44IDE2LjggM0gyME0xNCAzQzEzLjQgMyAxMyAzLjUgMTMgNEMxMyA0LjUgMTMuNCA1IDE0IDVDMTQuNiA1IDE1IDQuNiAxNSA0QzE1IDMuNCAxNC42IDMgMTQgM00xMCA3VjVIOFYxN0gyMFY1SDE4VjdNMTIgMTVWOUwxNyAxMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFBsYXlPdXRsaW5lID0gXCJNMTksM0gxNC44MkMxNC4yNSwxLjQ0IDEyLjUzLDAuNjQgMTEsMS4yQzEwLjE0LDEuNSA5LjUsMi4xNiA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNNyw3SDE3VjVIMTlWMTlINVY1SDdWN00xMCwxN1Y5TDE1LDEzTDEwLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFBsdXMgPSBcIk0xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTEzLDEySDE2VjE0SDEzVjE3SDExVjE0SDhWMTJIMTFWOUgxM1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRQbHVzT3V0bGluZSA9IFwiTTE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy45IDIwLjExIDMgMTkgM00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTcgN0gxN1Y1SDE5VjE5SDVWNUg3VjdNMTMgMTJIMTZWMTRIMTNWMTdIMTFWMTRIOFYxMkgxMVY5SDEzVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFB1bHNlID0gXCJNMTksM0gxNC44MkMxNC40LDEuODQgMTMuMywxIDEyLDFDMTAuNywxIDkuNiwxLjg0IDkuMTgsM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTIsM0ExLDEgMCAwLDEgMTMsNEExLDEgMCAwLDEgMTIsNUExLDEgMCAwLDEgMTEsNEExLDEgMCAwLDEgMTIsM001LDEzLjQ2SDcuMTdMMTAuNSw3LjA4TDExLjQ0LDE0LjA1TDEzLjkzLDEwLjg2TDE2LjUzLDEzLjQ2SDE5VjE1SDE1Ljg5TDE0LjA3LDEzLjIxTDEwLjM4LDE3LjkyTDkuNjIsMTIuMTVMOC4xMSwxNUg1VjEzLjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFB1bHNlT3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuNCwxLjg0IDEzLjMsMSAxMiwxQzEwLjcsMSA5LjYsMS44NCA5LjE4LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDNBMSwxIDAgMCwxIDEzLDRBMSwxIDAgMCwxIDEyLDVBMSwxIDAgMCwxIDExLDRBMSwxIDAgMCwxIDEyLDNNNSwxNUg4LjExTDkuNjIsMTIuMTVMMTAuMzgsMTcuOTJMMTQuMDcsMTMuMjFMMTUuODksMTVIMTlWMTlINVYxNU0xOSwxMy40NkgxNi41M0wxMy45MywxMC44NkwxMS40NCwxNC4wNUwxMC41LDcuMDhMNy4xNywxMy40Nkg1VjVIN1Y2SDE3VjVIMTlWNkwxOSwxMy40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRSZW1vdmUgPSBcIk0xOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xMSAzLjkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNNMTIgM0MxMi41NSAzIDEzIDMuNDUgMTMgNFMxMi41NSA1IDEyIDUgMTEgNC41NSAxMSA0IDExLjQ1IDMgMTIgM00xNS41NCAxNS4xMkwxNC4xMiAxNi41NEwxMiAxNC40MUw5Ljg4IDE2LjU0TDguNDcgMTUuMTJMMTAuNTkgMTNMOC40NyAxMC44OEw5Ljg4IDkuNDdMMTIgMTEuNTlMMTQuMTIgOS40N0wxNS41NCAxMC44OEwxMy40MSAxM0wxNS41NCAxNS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRSZW1vdmVPdXRsaW5lID0gXCJNMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMTkgMTlINVY1SDdWN0gxN1Y1SDE5VjE5TTE1LjU0IDEwLjg4TDEzLjQxIDEzTDE1LjU0IDE1LjEyTDE0LjEyIDE2LjU0TDEyIDE0LjQxTDkuODggMTYuNTRMOC40NyAxNS4xMkwxMC41OSAxM0w4LjQ3IDEwLjg4TDkuODggOS40N0wxMiAxMS41OUwxNC4xMiA5LjQ3TDE1LjU0IDEwLjg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFNlYXJjaCA9IFwiTTExLjkgMTAuOUMxNC40MSA4LjQgMTguNDUgOC4zNyAyMSAxMC44MlY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDEzLjA2QzEyLjY1IDIwLjc0IDEyLjI2IDIwLjQ1IDExLjkgMjAuMUM5LjM3IDE3LjU2IDkuMzcgMTMuNDQgMTEuOSAxMC45TTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMjAuMzEgMTcuOUMyMC43NSAxNy4yMSAyMSAxNi4zOCAyMSAxNS41QzIxIDEzIDE5IDExIDE2LjUgMTFTMTIgMTMgMTIgMTUuNSAxNCAyMCAxNi41IDIwQzE3LjM3IDIwIDE4LjE5IDE5Ljc1IDE4Ljg4IDE5LjMyTDIyIDIyLjM5TDIzLjM5IDIxTDIwLjMxIDE3LjlNMTYuNSAxOEMxNS4xMiAxOCAxNCAxNi44OCAxNCAxNS41UzE1LjEyIDEzIDE2LjUgMTMgMTkgMTQuMTIgMTkgMTUuNSAxNy44OCAxOCAxNi41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFNlYXJjaE91dGxpbmUgPSBcIk0xMS4wMyAxOUg1VjVIN1Y3SDE3VjVIMTlWOS41QzE5LjcyIDkuOCAyMC40IDEwLjI0IDIxIDEwLjgyVjVDMjEgMy45IDIwLjExIDMgMTkgM0gxNC44MkMxNC40IDEuODQgMTMuMyAxIDEyIDFTOS42IDEuODQgOS4xOCAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTMuMDZDMTIuNjUgMjAuNzQgMTIuMjYgMjAuNDUgMTEuOSAyMC4xQzExLjU3IDE5Ljc2IDExLjI3IDE5LjM5IDExLjAzIDE5TTEyIDNDMTIuNTUgMyAxMyAzLjQ1IDEzIDRTMTIuNTUgNSAxMiA1IDExIDQuNTUgMTEgNCAxMS40NSAzIDEyIDNNMjAuMzEgMTcuOUMyMC43NSAxNy4yMSAyMSAxNi4zOCAyMSAxNS41QzIxIDEzIDE5IDExIDE2LjUgMTFTMTIgMTMgMTIgMTUuNSAxNCAyMCAxNi41IDIwQzE3LjM3IDIwIDE4LjE5IDE5Ljc1IDE4Ljg4IDE5LjMyTDIyIDIyLjM5TDIzLjM5IDIxTDIwLjMxIDE3LjlNMTYuNSAxOEMxNS4xMiAxOCAxNCAxNi44OCAxNCAxNS41UzE1LjEyIDEzIDE2LjUgMTMgMTkgMTQuMTIgMTkgMTUuNSAxNy44OCAxOCAxNi41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHQgPSBcIk0xNyw5SDdWN0gxN00xNywxM0g3VjExSDE3TTE0LDE3SDdWMTVIMTRNMTIsM0ExLDEgMCAwLDEgMTMsNEExLDEgMCAwLDEgMTIsNUExLDEgMCAwLDEgMTEsNEExLDEgMCAwLDEgMTIsM00xOSwzSDE0LjgyQzE0LjQsMS44NCAxMy4zLDEgMTIsMUMxMC43LDEgOS42LDEuODQgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0TXVsdGlwbGUgPSBcIk0yMCAzSDE2LjhDMTYuNCAxLjggMTUuMyAxIDE0IDFDMTIuNyAxIDExLjYgMS44IDExLjIgM0g4QzYuOSAzIDYgMy45IDYgNVYxN0M2IDE4LjEgNi45IDE5IDggMTlIMjBDMjEuMSAxOSAyMiAxOC4xIDIyIDE3VjVDMjIgMy45IDIxLjEgMyAyMCAzTTE0IDNDMTQuNiAzIDE1IDMuNSAxNSA0QzE1IDQuNSAxNC41IDUgMTQgNUMxMy41IDUgMTMgNC41IDEzIDRDMTMgMy41IDEzLjQgMyAxNCAzTTE2IDE0SDlWMTJIMTZNMTkgMTBIOVY4SDE5TTQgMjFIMThWMjNINEMyLjkgMjMgMiAyMi4xIDIgMjFWN0g0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkVGV4dE11bHRpcGxlT3V0bGluZSA9IFwiTTQgN1YyMUgxOFYyM0g0QzIuOSAyMyAyIDIyLjEgMiAyMVY3SDRNMjAgM0MyMS4xIDMgMjIgMy45IDIyIDVWMTdDMjIgMTguMSAyMS4xIDE5IDIwIDE5SDhDNi45IDE5IDYgMTguMSA2IDE3VjVDNiAzLjkgNi45IDMgOCAzSDExLjE4QzExLjYgMS44NCAxMi43IDEgMTQgMUMxNS4zIDEgMTYuNCAxLjg0IDE2LjgyIDNIMjBNMTQgM0MxMy40NSAzIDEzIDMuNDUgMTMgNEMxMyA0LjU1IDEzLjQ1IDUgMTQgNUMxNC41NSA1IDE1IDQuNTUgMTUgNEMxNSAzLjQ1IDE0LjU1IDMgMTQgM00xMCA3VjVIOFYxN0gyMFY1SDE4VjdNMTUgMTVIMTBWMTNIMTVNMTggMTFIMTBWOUgxOFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0T2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0wzIDQuOUMzIDQuOTMgMyA0Ljk3IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzE5LjAzIDIxIDE5LjA3IDIxIDE5LjEgMjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTcgMTFIOS4xMUwxMS4xMSAxM0g3VjExTTE0IDE3SDdWMTVIMTMuMTFMMTQgMTUuODlWMTdNMTcgN1Y5SDEyLjJMMTQuMiAxMUgxN1YxM0gxNi4yTDIxIDE3LjhWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDE0LjgyQzE0LjQgMS44NCAxMy4zIDEgMTIgMVM5LjYgMS44NCA5LjE4IDNINi4yTDEwLjIgN0gxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHRPZmZPdXRsaW5lID0gXCJNMTcgN1Y1SDE5VjE1LjhMMjEgMTcuOFY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuMjUgMS40NCAxMi41MyAuNjQgMTEgMS4yQzEwLjE0IDEuNSA5LjUgMi4xNiA5LjE4IDNINi4yTDEwLjIgN0gxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTE0LjIgMTFMMTIuMiA5SDE3VjExSDE0LjJNMi4zOSAxLjczTDEuMTEgM0wzIDQuOUMzIDQuOTMgMyA0Ljk3IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzE5LjAzIDIxIDE5LjA3IDIxIDE5LjEgMjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTUgMTlWNi44OUw3LjExIDlIN1YxMUg5LjExTDExLjExIDEzSDdWMTVIMTMuMTFMMTcuMTEgMTlINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0T3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuMjUsMS40NCAxMi41MywwLjY0IDExLDEuMkMxMC4xNCwxLjUgOS41LDIuMTYgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTcsN0gxN1Y1SDE5VjE5SDVWNUg3VjdNMTcsMTFIN1Y5SDE3VjExTTE1LDE1SDdWMTNIMTVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xpcGJvYXJkVGV4dFBsYXkgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjEzLjM0QzIwLjM2LDEzLjExIDE5LjY4LDEzIDE5LDEzQzE1LjY4LDEzIDEzLDE1LjY5IDEzLDE5QzEzLDE5LjY4IDEzLjExLDIwLjM2IDEzLjM0LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDkuMThDOS41LDIuMTYgMTAuMTQsMS41IDExLDEuMkMxMi41MywwLjY0IDE0LjI1LDEuNDQgMTQuODIsM0gxOU0xMiwzQTEsMSAwIDAsMCAxMSw0QTEsMSAwIDAsMCAxMiw1QTEsMSAwIDAsMCAxMyw0QTEsMSAwIDAsMCAxMiwzTTExLDE3VjE1SDdWMTdIMTFNMTMsMTNWMTFIN1YxM0gxM00xNyw5VjdIN1Y5SDE3TTE3LDE2TDIyLDE5TDE3LDIyVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHRQbGF5T3V0bGluZSA9IFwiTTE5LDNIMTQuODJDMTQuMjUsMS40NCAxMi41MywwLjY0IDExLDEuMkMxMC4xNCwxLjUgOS41LDIuMTYgOS4xOCwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxNVYxOUg1VjVIN1Y3SDE3VjVIMTlWMTRIMjFWNUEyLDIgMCAwLDAgMTksM00xMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1TTE3LDE2VjIyTDIyLDE5TDE3LDE2TTE3LDExSDdWOUgxN1YxMU0xNSwxNUg3VjEzSDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBib2FyZFRleHRTZWFyY2ggPSBcIk0xMC4xOCAxN0g3VjE1SDEwQzEwLjA4IDE0LjMyIDEwLjIzIDEzLjY0IDEwLjUgMTNIN1YxMUgxMS44MkMxMS44NSAxMC45NyAxMS44NyAxMC45NCAxMS45IDEwLjlDMTMuMTcgOS42NCAxNC44NCA5IDE2LjUgOUg3VjdIMTdWOUgxNi41QzE4LjEyIDkgMTkuNzQgOS42MSAyMSAxMC44MlY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIMTQuODJDMTQuNCAxLjg0IDEzLjMgMSAxMiAxUzkuNiAxLjg0IDkuMTggM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDEzLjA2QzEyLjY1IDIwLjc0IDEyLjI2IDIwLjQ1IDExLjkgMjAuMUMxMSAxOS4yMSAxMC40NSAxOC4xMyAxMC4xOCAxN00xMiAzQzEyLjU1IDMgMTMgMy40NSAxMyA0UzEyLjU1IDUgMTIgNSAxMSA0LjU1IDExIDQgMTEuNDUgMyAxMiAzTTIwLjMxIDE3LjlDMjAuNzUgMTcuMjEgMjEgMTYuMzggMjEgMTUuNUMyMSAxMyAxOSAxMSAxNi41IDExUzEyIDEzIDEyIDE1LjUgMTQgMjAgMTYuNSAyMEMxNy4zNyAyMCAxOC4xOSAxOS43NSAxOC44OCAxOS4zMkwyMiAyMi4zOUwyMy4zOSAyMUwyMC4zMSAxNy45TTE2LjUgMThDMTUuMTIgMTggMTQgMTYuODggMTQgMTUuNVMxNS4xMiAxMyAxNi41IDEzIDE5IDE0LjEyIDE5IDE1LjUgMTcuODggMTggMTYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbGlwYm9hcmRUZXh0U2VhcmNoT3V0bGluZSA9IFwiTTE3IDlIMTYuNSAxN003IDE1SDEwQzEwLjA4IDE0LjMyIDEwLjIzIDEzLjY0IDEwLjUgMTNIN1YxNU0xMS45IDEwLjlDMTMuMTcgOS42NCAxNC44NCA5IDE2LjUgOUg3VjExSDExLjgyQzExLjg1IDEwLjk3IDExLjg3IDEwLjk0IDExLjkgMTAuOU0xMS45IDIwLjFDMTIuMjYgMjAuNDUgMTIuNjUgMjAuNzQgMTMuMDYgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDkuMThDOS41IDIuMTYgMTAuMTQgMS41IDExIDEuMkMxMi41MyAuNjQgMTQuMjUgMS40NCAxNC44MiAzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTAuODJDMjAuNCAxMC4yNCAxOS43MiA5LjggMTkgOS41VjVIMTdWN0g3VjVINVYxOUgxMS4wM0MxMS4yNyAxOS4zOSAxMS41NyAxOS43NiAxMS45IDIwLjFNMTEgNEMxMSA0LjU1IDExLjQ1IDUgMTIgNVMxMyA0LjU1IDEzIDQgMTIuNTUgMyAxMiAzIDExIDMuNDUgMTEgNE0yMy4zOSAyMUwyMiAyMi4zOUwxOC44OCAxOS4zMkMxOC4xOSAxOS43NSAxNy4zNyAyMCAxNi41IDIwQzE0IDIwIDEyIDE4IDEyIDE1LjVTMTQgMTEgMTYuNSAxMSAyMSAxMyAyMSAxNS41QzIxIDE2LjM4IDIwLjc1IDE3LjIxIDIwLjMxIDE3LjlMMjMuMzkgMjFNMTkgMTUuNUMxOSAxNC4xMiAxNy44OCAxMyAxNi41IDEzUzE0IDE0LjEyIDE0IDE1LjUgMTUuMTIgMTggMTYuNSAxOCAxOSAxNi44OCAxOSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsaXBweSA9IFwiTTE1LDE1LjVBMi41LDIuNSAwIDAsMSAxMi41LDE4QTIuNSwyLjUgMCAwLDEgMTAsMTUuNVYxMy43NUEwLjc1LDAuNzUgMCAwLDEgMTAuNzUsMTNBMC43NSwwLjc1IDAgMCwxIDExLjUsMTMuNzVWMTUuNUExLDEgMCAwLDAgMTIuNSwxNi41QTEsMSAwIDAsMCAxMy41LDE1LjVWMTEuODlDMTIuNjMsMTEuNjEgMTIsMTAuODcgMTIsMTBDMTIsOC45IDEzLDggMTQuMjUsOEMxNS41LDggMTYuNSw4LjkgMTYuNSwxMEMxNi41LDEwLjg3IDE1Ljg3LDExLjYxIDE1LDExLjg5VjE1LjVNOC4yNSw4QzkuNSw4IDEwLjUsOC45IDEwLjUsMTBDMTAuNSwxMC44NyA5Ljg3LDExLjYxIDksMTEuODlWMTcuMjVBMy4yNSwzLjI1IDAgMCwwIDEyLjI1LDIwLjVBMy4yNSwzLjI1IDAgMCwwIDE1LjUsMTcuMjVWMTMuNzVBMC43NSwwLjc1IDAgMCwxIDE2LjI1LDEzQTAuNzUsMC43NSAwIDAsMSAxNywxMy43NVYxNy4yNUE0Ljc1LDQuNzUgMCAwLDEgMTIuMjUsMjJBNC43NSw0Ljc1IDAgMCwxIDcuNSwxNy4yNVYxMS44OUM2LjYzLDExLjYxIDYsMTAuODcgNiwxMEM2LDguOSA3LDggOC4yNSw4TTEwLjA2LDYuMTNMOS42Myw3LjU5QzkuMjIsNy4zNyA4Ljc1LDcuMjUgOC4yNSw3LjI1QzcuMzQsNy4yNSA2LjUzLDcuNjUgNi4wMyw4LjI3TDQuODMsNy4zN0M1LjQ2LDYuNTcgNi40MSw2IDcuNSw1LjgxVjUuNzVBMy43NSwzLjc1IDAgMCwxIDExLjI1LDJBMy43NSwzLjc1IDAgMCwxIDE1LDUuNzVWNS44MUMxNi4wOSw2IDE3LjA0LDYuNTcgMTcuNjcsNy4zN0wxNi40Nyw4LjI3QzE1Ljk3LDcuNjUgMTUuMTYsNy4yNSAxNC4yNSw3LjI1QzEzLjc1LDcuMjUgMTMuMjgsNy4zNyAxMi44Nyw3LjU5TDEyLjQ0LDYuMTNDMTIuNzcsNiAxMy4xMyw1Ljg3IDEzLjUsNS44MVY1Ljc1QzEzLjUsNC41IDEyLjUsMy41IDExLjI1LDMuNUMxMCwzLjUgOSw0LjUgOSw1Ljc1VjUuODFDOS4zNyw1Ljg3IDkuNzMsNiAxMC4wNiw2LjEzTTE0LjI1LDkuMjVDMTMuNyw5LjI1IDEzLjI1LDkuNTkgMTMuMjUsMTBDMTMuMjUsMTAuNDEgMTMuNywxMC43NSAxNC4yNSwxMC43NUMxNC44LDEwLjc1IDE1LjI1LDEwLjQxIDE1LjI1LDEwQzE1LjI1LDkuNTkgMTQuOCw5LjI1IDE0LjI1LDkuMjVNOC4yNSw5LjI1QzcuNyw5LjI1IDcuMjUsOS41OSA3LjI1LDEwQzcuMjUsMTAuNDEgNy43LDEwLjc1IDguMjUsMTAuNzVDOC44LDEwLjc1IDkuMjUsMTAuNDEgOS4yNSwxMEM5LjI1LDkuNTkgOC44LDkuMjUgOC4yNSw5LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTYuMiwxNi4yTDExLDEzVjdIMTIuNVYxMi4yTDE3LDE0LjlMMTYuMiwxNi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrQWxlcnQgPSBcIk0yMCAxMkgyMlYxOEgyMFYxMk0yMCAyMEgyMlYyMkgyMFYyME0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyQzE0LjMgMjIgMTYuMyAyMS4yIDE4IDIwVjEwSDIxLjhDMjAuOSA1LjQgMTYuOCAyIDEyIDJNMTYuMiAxNi4yTDExIDEzVjdIMTIuNVYxMi4yTDE3IDE0LjlMMTYuMiAxNi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrQWxlcnRPdXRsaW5lID0gXCJNMTEgN1YxM0wxNi4yIDE2LjFMMTcgMTQuOUwxMi41IDEyLjJWN0gxMU0yMCAxMlYxOEgyMlYxMkgyME0yMCAyMFYyMkgyMlYyMEgyME0xOCAyMEMxNi4zIDIxLjMgMTQuMyAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJTNi41IDIgMTIgMkMxNi44IDIgMjAuOSA1LjQgMjEuOCAxMEgxOS43QzE4LjggNi42IDE1LjcgNCAxMiA0QzcuNiA0IDQgNy42IDQgMTJTNy42IDIwIDEyIDIwQzE0LjQgMjAgMTYuNSAxOC45IDE4IDE3LjNWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tDaGVjayA9IFwiTTIzLjUgMTdMMTguNSAyMkwxNSAxOC41TDE2LjUgMTdMMTguNSAxOUwyMiAxNS41TDIzLjUgMTdNMTMgMTlDMTMgMTcuNSAxMy41IDE2LjIgMTQuNCAxNS4xTDExIDEzVjdIMTIuNVYxMi4yTDE1LjYgMTQuMUMxNi42IDEzLjQgMTcuNyAxMyAxOSAxM0MyMCAxMyAyMSAxMy4zIDIxLjggMTMuN0MyMS45IDEzLjEgMjIgMTIuNiAyMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJTMiA2LjUgMiAxMiA2LjUgMjIgMTIgMjJDMTIuNiAyMiAxMy4yIDIxLjkgMTMuNyAyMS44QzEzLjMgMjEgMTMgMjAgMTMgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tDaGVja091dGxpbmUgPSBcIk0yMy41IDE3TDE4LjUgMjJMMTUgMTguNUwxNi41IDE3TDE4LjUgMTlMMjIgMTUuNUwyMy41IDE3TTEzLjEgMTkuOUMxMi43IDIwIDEyLjQgMjAgMTIgMjBDNy42IDIwIDQgMTYuNCA0IDEyUzcuNiA0IDEyIDQgMjAgNy42IDIwIDEyQzIwIDEyLjQgMjAgMTIuNyAxOS45IDEzLjFDMjAuNiAxMy4yIDIxLjIgMTMuNCAyMS44IDEzLjdDMjEuOSAxMy4xIDIyIDEyLjYgMjIgMTJDMjIgNi41IDE3LjUgMiAxMiAyUzIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxMi42IDIyIDEzLjIgMjEuOSAxMy43IDIxLjhDMTMuNCAyMS4zIDEzLjIgMjAuNiAxMy4xIDE5LjlNMTUuNiAxNC4xTDEyLjUgMTIuM1Y3SDExVjEzTDE0LjUgMTUuMUMxNC44IDE0LjcgMTUuMiAxNC40IDE1LjYgMTQuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja0RpZ2l0YWwgPSBcIk0yLDZBMiwyIDAgMCwwIDAsOFYxNkEyLDIgMCAwLDAgMiwxOEgyMkEyLDIgMCAwLDAgMjQsMTZWOEEyLDIgMCAwLDAgMjIsNk0yLDhIMjJWMTZIMk0zLDlWMTAuNUg2LjI1TDMsMTVINC43NUw4LDEwLjVWOU05LjI1LDlWMTAuNUgxMC43NVY5TTEyLDlWMTAuNUgxMy41VjE1SDE1VjlNMTcsOUExLDEgMCAwLDAgMTYsMTBWMTRBMSwxIDAgMCwwIDE3LDE1SDIwQTEsMSAwIDAsMCAyMSwxNFYxMEExLDEgMCAwLDAgMjAsOU0xNy41LDEwLjVIMTkuNVYxMy41SDE3LjVNOS4yNSwxMy41VjE1SDEwLjc1VjEzLjVcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja0VuZCA9IFwiTTEyLDFDOC4xNCwxIDUsNC4xNCA1LDhBNyw3IDAgMCwwIDEyLDE1QzE1Ljg2LDE1IDE5LDExLjg3IDE5LDhDMTksNC4xNCAxNS44NiwxIDEyLDFNMTIsMy4xNUMxNC42NywzLjE1IDE2Ljg1LDUuMzIgMTYuODUsOEMxNi44NSwxMC42OCAxNC42NywxMi44NSAxMiwxMi44NUE0Ljg1LDQuODUgMCAwLDEgNy4xNSw4QTQuODUsNC44NSAwIDAsMSAxMiwzLjE1TTExLDVWOC42OUwxNC4xOSwxMC41M0wxNC45NCw5LjIzTDEyLjUsNy44MlY1TTE1LDE2VjE5SDNWMjFIMTVWMjRMMTksMjBNMTksMjBWMjRIMjFWMTZIMTlcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja0Zhc3QgPSBcIk0xNSw0QTgsOCAwIDAsMSAyMywxMkE4LDggMCAwLDEgMTUsMjBBOCw4IDAgMCwxIDcsMTJBOCw4IDAgMCwxIDE1LDRNMTUsNkE2LDYgMCAwLDAgOSwxMkE2LDYgMCAwLDAgMTUsMThBNiw2IDAgMCwwIDIxLDEyQTYsNiAwIDAsMCAxNSw2TTE0LDhIMTUuNVYxMS43OEwxNy44MywxNC4xMUwxNi43NywxNS4xN0wxNCwxMi40VjhNMiwxOEExLDEgMCAwLDEgMSwxN0ExLDEgMCAwLDEgMiwxNkg1LjgzQzYuMTQsMTYuNzEgNi41NCwxNy4zOCA3LDE4SDJNMywxM0ExLDEgMCAwLDEgMiwxMkExLDEgMCAwLDEgMywxMUg1LjA1TDUsMTJMNS4wNSwxM0gzTTQsOEExLDEgMCAwLDEgMyw3QTEsMSAwIDAsMSA0LDZIN0M2LjU0LDYuNjIgNi4xNCw3LjI5IDUuODMsOEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrSW4gPSBcIk0yLjIxLDAuNzlMMC43OSwyLjIxTDQuOCw2LjIxTDMsOEg4VjNMNi4yMSw0LjhNMTIsOEM4LjE0LDggNSwxMS4xMyA1LDE1QTcsNyAwIDAsMCAxMiwyMkMxNS44NiwyMiAxOSwxOC44NyAxOSwxNUE3LDcgMCAwLDAgMTIsOE0xMiwxMC4xNUMxNC42NywxMC4xNSAxNi44NSwxMi4zMiAxNi44NSwxNUE0Ljg1LDQuODUgMCAwLDEgMTIsMTkuODVDOS4zMiwxOS44NSA3LjE1LDE3LjY4IDcuMTUsMTVBNC44NSw0Ljg1IDAgMCwxIDEyLDEwLjE1TTExLDEyVjE1LjY5TDE0LjE5LDE3LjUzTDE0Ljk0LDE2LjIzTDEyLjUsMTQuODJWMTJcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja091dCA9IFwiTTE4LDFMMTkuOCwyLjc5TDE1Ljc5LDYuNzlMMTcuMjEsOC4yMUwyMS4yMSw0LjIxTDIzLDZWMU0xMiw4QzguMTQsOCA1LDExLjEzIDUsMTVBNyw3IDAgMCwwIDEyLDIyQzE1Ljg2LDIyIDE5LDE4Ljg3IDE5LDE1QTcsNyAwIDAsMCAxMiw4TTEyLDEwLjE1QzE0LjY3LDEwLjE1IDE2Ljg1LDEyLjMyIDE2Ljg1LDE1QTQuODUsNC44NSAwIDAsMSAxMiwxOS44NUM5LjMyLDE5Ljg1IDcuMTUsMTcuNjggNy4xNSwxNUE0Ljg1LDQuODUgMCAwLDEgMTIsMTAuMTVNMTEsMTJWMTUuNjlMMTQuMTksMTcuNTNMMTQuOTQsMTYuMjNMMTIuNSwxNC44MlYxMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrT3V0bGluZSA9IFwiTTEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkM2LjQ3LDIyIDIsMTcuNSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIuNSw3VjEyLjI1TDE3LDE0LjkyTDE2LjI1LDE2LjE1TDExLDEzVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1N0YXJ0ID0gXCJNMTIsMUM4LjE0LDEgNSw0LjE0IDUsOEE3LDcgMCAwLDAgMTIsMTVDMTUuODYsMTUgMTksMTEuODcgMTksOEMxOSw0LjE0IDE1Ljg2LDEgMTIsMU0xMiwzLjE1QzE0LjY3LDMuMTUgMTYuODUsNS4zMiAxNi44NSw4QzE2Ljg1LDEwLjY4IDE0LjY3LDEyLjg1IDEyLDEyLjg1QTQuODUsNC44NSAwIDAsMSA3LjE1LDhBNC44NSw0Ljg1IDAgMCwxIDEyLDMuMTVNMTEsNVY4LjY5TDE0LjE5LDEwLjUzTDE0Ljk0LDkuMjNMMTIuNSw3LjgyVjVNNCwxNlYyNEg2VjIxSDE4VjI0TDIyLDIwTDE4LDE2VjE5SDZWMTZcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVFaWdodCA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk03LjcgMTUuNUw3IDE0LjJMMTEgMTEuOVY3SDEyLjVWMTIuOEw3LjcgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVFaWdodE91dGxpbmUgPSBcIk0xMiAyMEMxNi40IDIwIDIwIDE2LjQgMjAgMTJTMTYuNCA0IDEyIDQgNCA3LjYgNCAxMiA3LjYgMjAgMTIgMjBNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIuNSAxMi44TDcuNyAxNS42TDcgMTQuMkwxMSAxMS45VjdIMTIuNVYxMi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZUVsZXZlbiA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk0xMi41IDEzSDExTDguNSA4LjZMOS44IDcuOEwxMSAxMFY3SDEyLjVWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lRWxldmVuT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQgMjAgMjAgMTYuNCAyMCAxMlMxNi40IDQgMTIgNCA0IDcuNiA0IDEyIDcuNiAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDdWMTNIMTFMOC41IDguNkw5LjggNy44TDExIDEwVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVGaXZlID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTE0IDE3TDExIDExLjhWN0gxMi41VjExLjRMMTUuMyAxNi4zTDE0IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZUZpdmVPdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTE1LjMgMTYuMkwxNCAxN0wxMSAxMS44VjdIMTIuNVYxMS40TDE1LjMgMTYuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVGb3VyID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTE2LjMgMTUuMkwxMSAxMi4zVjdIMTIuNVYxMS40TDE3IDEzLjlMMTYuMyAxNS4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZUZvdXJPdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTE3IDEzLjlMMTYuMyAxNS4yTDExIDEyLjNWN0gxMi41VjExLjRMMTcgMTMuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVOaW5lID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTEyLjUgMTNIN1YxMS41SDExVjdIMTIuNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVOaW5lT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQgMjAgMjAgMTYuNCAyMCAxMlMxNi40IDQgMTIgNCA0IDcuNiA0IDEyIDcuNiAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDdWMTNIN1YxMS41SDExVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVPbmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIuMyAxM0gxMVY3SDEyLjVWOS43TDE0IDcuMUwxNS4zIDcuOUwxMi4zIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZU9uZU91dGxpbmUgPSBcIk0xMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMlMxNi40MiA0IDEyIDQgNCA3LjU4IDQgMTIgNy41OCAyMCAxMiAyME0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMkM2LjQ3IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTUuMyA3LjhMMTIuMyAxM0gxMVY3SDEyLjVWOS42NUwxNCA3LjA1TDE1LjMgNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZVNldmVuID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTEyLjUgMTIuMkw5LjggMTdMOC41IDE2LjJMMTEgMTEuOFY3SDEyLjVWMTIuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVTZXZlbk91dGxpbmUgPSBcIk0xMiAyMEMxNi40IDIwIDIwIDE2LjQgMjAgMTJTMTYuNCA0IDEyIDQgNCA3LjYgNCAxMiA3LjYgMjAgMTIgMjBNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTIuNSA3VjEyLjJMOS44IDE3TDguNSAxNi4yTDExIDExLjhWN0gxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb2NrVGltZVNpeCA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk0xMi41IDE3SDExVjdIMTIuNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVTaXhPdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyLjUgN1YxN0gxMVY3SDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lVGVuID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTEyLjUgMTNIMTFMNyAxMC43TDcuOCA5LjRMMTEuMSAxMS4zVjdIMTIuNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUZW5PdXRsaW5lID0gXCJNMTIgMjBDMTYuNCAyMCAyMCAxNi40IDIwIDEyUzE2LjQgNCAxMiA0IDQgNy42IDQgMTIgNy42IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyTTEyLjUgMTNIMTFMNyAxMC43TDcuOCA5LjRMMTEuMSAxMS4zVjdIMTIuNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUaHJlZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMlMxNy41IDIgMTIgMk0xNyAxM0gxMVY3SDEyLjVWMTEuNUgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUaHJlZU91dGxpbmUgPSBcIk0xMiAyMEMxNi40IDIwIDIwIDE2LjQgMjAgMTJTMTYuNCA0IDEyIDQgNCA3LjYgNCAxMiA3LjYgMjAgMTIgMjBNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyUzE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNMTcgMTEuNVYxM0gxMVY3SDEyLjVWMTEuNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUd2VsdmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIuNSAxM0gxMVY3SDEyLjVWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lVHdlbHZlT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyUzE2LjQyIDQgMTIgNCA0IDcuNTggNCAxMiA3LjU4IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNDcgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDEzLjAzSDExVjdIMTIuNVYxMy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9ja1RpbWVUd28gPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIuNSAxM0gxMVY3SDEyLjVWMTEuM0wxNi4yIDkuMkwxNyAxMC41TDEyLjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvY2tUaW1lVHdvT3V0bGluZSA9IFwiTTEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyUzE2LjQyIDQgMTIgNCA0IDcuNTggNCAxMiA3LjU4IDIwIDEyIDIwTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyQzYuNDcgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMi41IDEzVjEzSDExVjdIMTIuNVYxMS4yNkwxNi4yIDkuMTNMMTYuOTUgMTAuNDNMMTIuNSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZSA9IFwiTTE5LDYuNDFMMTcuNTksNUwxMiwxMC41OUw2LjQxLDVMNSw2LjQxTDEwLjU5LDEyTDUsMTcuNTlMNi40MSwxOUwxMiwxMy40MUwxNy41OSwxOUwxOSwxNy41OUwxMy40MSwxMkwxOSw2LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlQm94ID0gXCJNMTksM0gxNi4zSDcuN0g1QTIsMiAwIDAsMCAzLDVWNy43VjE2LjRWMTlBMiwyIDAgMCwwIDUsMjFINy43SDE2LjRIMTlBMiwyIDAgMCwwIDIxLDE5VjE2LjNWNy43VjVBMiwyIDAgMCwwIDE5LDNNMTUuNiwxN0wxMiwxMy40TDguNCwxN0w3LDE1LjZMMTAuNiwxMkw3LDguNEw4LjQsN0wxMiwxMC42TDE1LjYsN0wxNyw4LjRMMTMuNCwxMkwxNywxNS42TDE1LjYsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VCb3hNdWx0aXBsZSA9IFwiTTQgMjBIMThWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjZINFYyME0yMC4yMiAySDcuNzhDNi44IDIgNiAyLjggNiAzLjc4VjE2LjIyQzYgMTcuMiA2LjggMTggNy43OCAxOEgyMC4yMkMyMS4yIDE4IDIyIDE3LjIgMjIgMTYuMjJWMy43OEMyMiAyLjggMjEuMiAyIDIwLjIyIDJNMTkgMTMuNkwxNy42IDE1TDE0IDExLjRMMTAuNCAxNUw5IDEzLjZMMTIuNiAxMEw5IDYuNEwxMC40IDVMMTQgOC42TDE3LjYgNUwxOSA2LjRMMTUuNCAxMEwxOSAxMy42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjExIDYuOSAxOCA4IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0yMCAxNkg4VjRIMjBWMTZNNCA2VjIwSDE4VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY2SDRNOS43NyAxMi44NEwxMi42IDEwTDkuNzcgNy4xNUwxMS4xNyA1Ljc1TDE0IDguNkwxNi44NCA1Ljc3TDE4LjI0IDcuMTdMMTUuNCAxMEwxOC4yMyAxMi44NEwxNi44MyAxNC4yNEwxNCAxMS40TDExLjE3IDE0LjI0TDkuNzcgMTIuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VCb3hPdXRsaW5lID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTksMTlINVY1SDE5VjE5TTE3LDguNEwxMy40LDEyTDE3LDE1LjZMMTUuNiwxN0wxMiwxMy40TDguNCwxN0w3LDE1LjZMMTAuNiwxMkw3LDguNEw4LjQsN0wxMiwxMC42TDE1LjYsN0wxNyw4LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VDaXJjbGUgPSBcIk0xMiwyQzE3LjUzLDIgMjIsNi40NyAyMiwxMkMyMiwxNy41MyAxNy41MywyMiAxMiwyMkM2LjQ3LDIyIDIsMTcuNTMgMiwxMkMyLDYuNDcgNi40NywyIDEyLDJNMTUuNTksN0wxMiwxMC41OUw4LjQxLDdMNyw4LjQxTDEwLjU5LDEyTDcsMTUuNTlMOC40MSwxN0wxMiwxMy40MUwxNS41OSwxN0wxNywxNS41OUwxMy40MSwxMkwxNyw4LjQxTDE1LjU5LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VDaXJjbGVNdWx0aXBsZSA9IFwiTTIgMTJDMiA5LjIxIDMuNjQgNi44IDYgNS42OFYzLjVDMi41IDQuNzYgMCA4LjA5IDAgMTJTMi41IDE5LjI0IDYgMjAuNVYxOC4zMkMzLjY0IDE3LjIgMiAxNC43OSAyIDEyTTE1IDNDMTAuMDQgMyA2IDcuMDQgNiAxMlMxMC4wNCAyMSAxNSAyMSAyNCAxNi45NiAyNCAxMiAxOS45NiAzIDE1IDNNMjAgMTUuNTlMMTguNTkgMTdMMTUgMTMuNDFMMTEuNDEgMTdMMTAgMTUuNTlMMTMuNTkgMTJMMTAgOC40MUwxMS40MSA3TDE1IDEwLjU5TDE4LjU5IDdMMjAgOC40MUwxNi40MSAxMkwyMCAxNS41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZUNpcmNsZU11bHRpcGxlT3V0bGluZSA9IFwiTTE4LjU0IDkuODhMMTcuMTIgOC40N0wxNSAxMC41OUwxMi44OCA4LjQ3TDExLjQ3IDkuODhMMTMuNTkgMTJMMTEuNDcgMTQuMTJMMTIuODggMTUuNTRMMTUgMTMuNDFMMTcuMTIgMTUuNTRMMTguNTQgMTQuMTJMMTYuNDEgMTJNMiAxMkMyIDkuMjEgMy42NCA2LjggNiA1LjY4VjMuNUMyLjUgNC43NiAwIDguMDkgMCAxMlMyLjUgMTkuMjQgNiAyMC41VjE4LjMyQzMuNjQgMTcuMiAyIDE0Ljc5IDIgMTJNMTUgM0MxMC4wNCAzIDYgNy4wNCA2IDEyUzEwLjA0IDIxIDE1IDIxIDI0IDE2Ljk2IDI0IDEyIDE5Ljk2IDMgMTUgM00xNSAxOUMxMS4xNCAxOSA4IDE1Ljg2IDggMTJTMTEuMTQgNSAxNSA1IDIyIDguMTQgMjIgMTIgMTguODYgMTkgMTUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VDaXJjbGVPdXRsaW5lID0gXCJNMTIsMjBDNy41OSwyMCA0LDE2LjQxIDQsMTJDNCw3LjU5IDcuNTksNCAxMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyME0xMiwyQzYuNDcsMiAyLDYuNDcgMiwxMkMyLDE3LjUzIDYuNDcsMjIgMTIsMjJDMTcuNTMsMjIgMjIsMTcuNTMgMjIsMTJDMjIsNi40NyAxNy41MywyIDEyLDJNMTQuNTksOEwxMiwxMC41OUw5LjQxLDhMOCw5LjQxTDEwLjU5LDEyTDgsMTQuNTlMOS40MSwxNkwxMiwxMy40MUwxNC41OSwxNkwxNiwxNC41OUwxMy40MSwxMkwxNiw5LjQxTDE0LjU5LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VOZXR3b3JrID0gXCJNMTQuNTksNkwxMiw4LjU5TDkuNDEsNkw4LDcuNDFMMTAuNTksMTBMOCwxMi41OUw5LjQxLDE0TDEyLDExLjQxTDE0LjU5LDE0TDE2LDEyLjU5TDEzLjQxLDEwTDE2LDcuNDFMMTQuNTksNk0xNywzQTIsMiAwIDAsMSAxOSw1VjE1QTIsMiAwIDAsMSAxNywxN0gxM1YxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0M1Ljg5LDE3IDUsMTYuMSA1LDE1VjVBMiwyIDAgMCwxIDcsM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZU5ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xNS41NCwxMi4xMkwxMy40MSwxMEwxNS41Myw3Ljg3TDE0LjEyLDYuNDZMMTIsOC41OUw5Ljg4LDYuNDZMOC40Nyw3Ljg3TDEwLjU5LDEwTDguNDcsMTIuMTNMOS44OCwxMy41NEwxMiwxMS40MUwxNC4xMiwxMy41NEwxNS41NCwxMi4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZU9jdGFnb24gPSBcIk04LjI3LDNMMyw4LjI3VjE1LjczTDguMjcsMjFIMTUuNzNMMjEsMTUuNzNWOC4yN0wxNS43MywzTTguNDEsN0wxMiwxMC41OUwxNS41OSw3TDE3LDguNDFMMTMuNDEsMTJMMTcsMTUuNTlMMTUuNTksMTdMMTIsMTMuNDFMOC40MSwxN0w3LDE1LjU5TDEwLjU5LDEyTDcsOC40MVwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlT2N0YWdvbk91dGxpbmUgPSBcIk04LjI3LDNMMyw4LjI3VjE1LjczTDguMjcsMjFIMTUuNzNDMTcuNSwxOS4yNCAyMSwxNS43MyAyMSwxNS43M1Y4LjI3TDE1LjczLDNNOS4xLDVIMTQuOUwxOSw5LjFWMTQuOUwxNC45LDE5SDkuMUw1LDE0LjlWOS4xTTkuMTIsNy43MUw3LjcxLDkuMTJMMTAuNTksMTJMNy43MSwxNC44OEw5LjEyLDE2LjI5TDEyLDEzLjQxTDE0Ljg4LDE2LjI5TDE2LjI5LDE0Ljg4TDEzLjQxLDEyTDE2LjI5LDkuMTJMMTQuODgsNy43MUwxMiwxMC41OVwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3NlT3V0bGluZSA9IFwiTTMsMTYuNzRMNy43NiwxMkwzLDcuMjZMNy4yNiwzTDEyLDcuNzZMMTYuNzQsM0wyMSw3LjI2TDE2LjI0LDEyTDIxLDE2Ljc0TDE2Ljc0LDIxTDEyLDE2LjI0TDcuMjYsMjFMMywxNi43NE0xMiwxMy40MUwxNi43NCwxOC4xNkwxOC4xNiwxNi43NEwxMy40MSwxMkwxOC4xNiw3LjI2TDE2Ljc0LDUuODRMMTIsMTAuNTlMNy4yNiw1Ljg0TDUuODQsNy4yNkwxMC41OSwxMkw1Ljg0LDE2Ljc0TDcuMjYsMTguMTZMMTIsMTMuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvc2VUaGljayA9IFwiTTIwIDYuOTFMMTcuMDkgNEwxMiA5LjA5TDYuOTEgNEw0IDYuOTFMOS4wOSAxMkw0IDE3LjA5TDYuOTEgMjBMMTIgMTQuOTFMMTcuMDkgMjBMMjAgMTcuMDlMMTQuOTEgMTJMMjAgNi45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZWRDYXB0aW9uID0gXCJNMTgsMTFIMTYuNVYxMC41SDE0LjVWMTMuNUgxNi41VjEzSDE4VjE0QTEsMSAwIDAsMSAxNywxNUgxNEExLDEgMCAwLDEgMTMsMTRWMTBBMSwxIDAgMCwxIDE0LDlIMTdBMSwxIDAgMCwxIDE4LDEwTTExLDExSDkuNVYxMC41SDcuNVYxMy41SDkuNVYxM0gxMVYxNEExLDEgMCAwLDEgMTAsMTVIN0ExLDEgMCAwLDEgNiwxNFYxMEExLDEgMCAwLDEgNyw5SDEwQTEsMSAwIDAsMSAxMSwxME0xOSw0SDVDMy44OSw0IDMsNC44OSAzLDZWMThBMiwyIDAgMCwwIDUsMjBIMTlBMiwyIDAgMCwwIDIxLDE4VjZDMjEsNC44OSAyMC4xLDQgMTksNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG9zZWRDYXB0aW9uT3V0bGluZSA9IFwiTTUsNEM0LjQ1LDQgNCw0LjE4IDMuNTksNC41N0MzLjIsNC45NiAzLDUuNDQgMyw2VjE4QzMsMTguNTYgMy4yLDE5LjA0IDMuNTksMTkuNDNDNCwxOS44MiA0LjQ1LDIwIDUsMjBIMTlDMTkuNSwyMCAyMCwxOS44MSAyMC4zOSwxOS40MUMyMC44LDE5IDIxLDE4LjUzIDIxLDE4VjZDMjEsNS40NyAyMC44LDUgMjAuMzksNC41OUMyMCw0LjE5IDE5LjUsNCAxOSw0SDVNNC41LDUuNUgxOS41VjE4LjVINC41VjUuNU03LDlDNi43LDkgNi40Nyw5LjA5IDYuMjgsOS4yOEM2LjA5LDkuNDcgNiw5LjcgNiwxMFYxNEM2LDE0LjMgNi4wOSwxNC41MyA2LjI4LDE0LjcyQzYuNDcsMTQuOTEgNi43LDE1IDcsMTVIMTBDMTAuMjcsMTUgMTAuNSwxNC45MSAxMC43MSwxNC43MkMxMC45MSwxNC41MyAxMSwxNC4zIDExLDE0VjEzSDkuNVYxMy41SDcuNVYxMC41SDkuNVYxMUgxMVYxMEMxMSw5LjcgMTAuOTEsOS40NyAxMC43MSw5LjI4QzEwLjUsOS4wOSAxMC4yNyw5IDEwLDlIN00xNCw5QzEzLjczLDkgMTMuNSw5LjA5IDEzLjI5LDkuMjhDMTMuMDksOS40NyAxMyw5LjcgMTMsMTBWMTRDMTMsMTQuMyAxMy4wOSwxNC41MyAxMy4yOSwxNC43MkMxMy41LDE0LjkxIDEzLjczLDE1IDE0LDE1SDE3QzE3LjMsMTUgMTcuNTMsMTQuOTEgMTcuNzIsMTQuNzJDMTcuOTEsMTQuNTMgMTgsMTQuMyAxOCwxNFYxM0gxNi41VjEzLjVIMTQuNVYxMC41SDE2LjVWMTFIMThWMTBDMTgsOS43IDE3LjkxLDkuNDcgMTcuNzIsOS4yOEMxNy41Myw5LjA5IDE3LjMsOSAxNyw5SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkID0gXCJNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQWxlcnQgPSBcIk0xOSAyMEg2QzIuNyAyMCAwIDE3LjMgMCAxNEMwIDEwLjkgMi4zIDguNCA1LjMgOEM2LjYgNS42IDkuMSA0IDEyIDRDMTUuNiA0IDE4LjcgNi42IDE5LjQgMTBDMjIgMTAuMiAyNCAxMi4zIDI0IDE1QzI0IDE3LjcgMjEuNyAyMCAxOSAyME0xMSAxNVYxN0gxM1YxNUgxMU0xMSAxM0gxM1Y3SDExVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQnJhY2VzID0gXCJNNiwyMEE2LDYgMCAwLDEgMCwxNEMwLDEwLjkxIDIuMzQsOC4zNiA1LjM1LDguMDRDNi42LDUuNjQgOS4xMSw0IDEyLDRDMTUuNjMsNCAxOC42Niw2LjU4IDE5LjM1LDEwQzIxLjk1LDEwLjE5IDI0LDEyLjM2IDI0LDE1QTUsNSAwIDAsMSAxOSwyMEg2TTE4LjUsMTJIMThBMSwxIDAgMCwxIDE3LDExVjEwQTIsMiAwIDAsMCAxNSw4SDEzLjVWMTBIMTVWMTFBMiwyIDAgMCwwIDE3LDEzQTIsMiAwIDAsMCAxNSwxNVYxNkgxMy41VjE4SDE1QTIsMiAwIDAsMCAxNywxNlYxNUExLDEgMCAwLDEgMTgsMTRIMTguNVYxMk01LjUsMTJWMTRINkExLDEgMCAwLDEgNywxNVYxNkEyLDIgMCAwLDAgOSwxOEgxMC41VjE2SDlWMTVBMiwyIDAgMCwwIDcsMTNBMiwyIDAgMCwwIDksMTFWMTBIMTAuNVY4SDlBMiwyIDAgMCwwIDcsMTBWMTFBMSwxIDAgMCwxIDYsMTJINS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQ2hlY2sgPSBcIk0xMCwxN0w2LjUsMTMuNUw3LjkxLDEyLjA4TDEwLDE0LjE3TDE1LjE4LDlMMTYuNTksMTAuNDFNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkQ2hlY2tPdXRsaW5lID0gXCJNMTkgMThINkMzLjc5IDE4IDIgMTYuMjEgMiAxNFMzLjc5IDEwIDYgMTBINi43MUM3LjM3IDcuNjkgOS41IDYgMTIgNkMxNS4wNCA2IDE3LjUgOC40NiAxNy41IDExLjVWMTJIMTlDMjAuNjYgMTIgMjIgMTMuMzQgMjIgMTVTMjAuNjYgMTggMTkgMThNMTkuMzUgMTAuMDNDMTguNjcgNi41OSAxNS42NCA0IDEyIDRDOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wM0MyLjM0IDguMzYgMCAxMC45IDAgMTRDMCAxNy4zMSAyLjY5IDIwIDYgMjBIMTlDMjEuNzYgMjAgMjQgMTcuNzYgMjQgMTVDMjQgMTIuMzYgMjEuOTUgMTAuMjIgMTkuMzUgMTAuMDNNMTAgMTdMNi41IDEzLjVMNy45MSAxMi4wOEwxMCAxNC4xN0wxNC41OSA5LjU5TDE2IDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRDaXJjbGUgPSBcIk0xNi41LDE2SDhBMywzIDAgMCwxIDUsMTNBMywzIDAgMCwxIDgsMTBDOC4wNSwxMCA4LjA5LDEwIDguMTQsMTBDOC41OCw4LjI4IDEwLjEzLDcgMTIsN0E0LDQgMCAwLDEgMTYsMTFIMTYuNUEyLjUsMi41IDAgMCwxIDE5LDEzLjVBMi41LDIuNSAwIDAsMSAxNi41LDE2TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkRG93bmxvYWQgPSBcIk0xNywxM0wxMiwxOEw3LDEzSDEwVjlIMTRWMTNNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkRG93bmxvYWRPdXRsaW5lID0gXCJNOCwxM0gxMC41NVYxMEgxMy40NVYxM0gxNkwxMiwxN0w4LDEzTTE5LjM1LDEwLjA0QzIxLjk1LDEwLjIyIDI0LDEyLjM2IDI0LDE1QTUsNSAwIDAsMSAxOSwyMEg2QTYsNiAwIDAsMSAwLDE0QzAsMTAuOTEgMi4zNCw4LjM2IDUuMzUsOC4wNEM2LjYsNS42NCA5LjExLDQgMTIsNEMxNS42NCw0IDE4LjY3LDYuNTkgMTkuMzUsMTAuMDRNMTksMThBMywzIDAgMCwwIDIyLDE1QzIyLDEzLjQ1IDIwLjc4LDEyLjE0IDE5LjIyLDEyLjA0TDE3LjY5LDExLjkzTDE3LjM5LDEwLjQzQzE2Ljg4LDcuODYgMTQuNjIsNiAxMiw2QzkuOTQsNiA4LjA4LDcuMTQgNy4xMyw4Ljk3TDYuNjMsOS45Mkw1LjU2LDEwLjAzQzMuNTMsMTAuMjQgMiwxMS45NSAyLDE0QTQsNCAwIDAsMCA2LDE4SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkTG9jayA9IFwiTTIyIDE3QzIyLjUgMTcgMjMgMTcuNSAyMyAxOFYyMkMyMyAyMi41IDIyLjUgMjMgMjIgMjNIMTdDMTYuNSAyMyAxNiAyMi41IDE2IDIyVjE4QzE2IDE3LjUgMTYuNSAxNyAxNyAxN1YxNS41QzE3IDE0LjEgMTguMSAxMyAxOS41IDEzQzIwLjkgMTMgMjIgMTQuMSAyMiAxNS41VjE3TTIxIDE3VjE1LjVDMjEgMTQuNyAyMC4zIDE0IDE5LjUgMTRDMTguNyAxNCAxOCAxNC43IDE4IDE1LjVWMTdIMjFNMTkuMzYgOS4wM0MyMS45NSA5LjIyIDI0IDExLjM2IDI0IDE0TDIzLjk0IDE0Ljc3QzIzLjU5IDEyLjYzIDIxLjc0IDExIDE5LjUgMTFDMTcgMTEgMTUgMTMgMTUgMTUuNUwxNSAxNS43NkMxNC4zOSAxNi4zMSAxNCAxNy4xMSAxNCAxOFYxOUg2QzIuNjkgMTkgMCAxNi4zMSAwIDEzQzAgOS45IDIuMzQgNy4zNiA1LjM1IDcuMDRDNi42IDQuNjQgOS4xMSAzIDEyIDNDMTUuNjQgMyAxOC42NyA1LjU5IDE5LjM2IDkuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRMb2NrT3V0bGluZSA9IFwiTTIyIDE3QzIyLjUgMTcgMjMgMTcuNSAyMyAxOFYyMkMyMyAyMi41IDIyLjUgMjMgMjIgMjNIMTdDMTYuNSAyMyAxNiAyMi41IDE2IDIyVjE4QzE2IDE3LjUgMTYuNSAxNyAxNyAxN1YxNS41QzE3IDE0LjEgMTguMSAxMyAxOS41IDEzQzIwLjkgMTMgMjIgMTQuMSAyMiAxNS41VjE3TTIxIDE3VjE1LjVDMjEgMTQuNyAyMC4zIDE0IDE5LjUgMTRDMTguNyAxNCAxOCAxNC43IDE4IDE1LjVWMTdIMjFNMTcuNSAxMVYxMC41QzE3LjUgNy40NiAxNS4wNCA1IDEyIDVDOS41IDUgNy4zNyA2LjY5IDYuNzEgOUg2QzMuNzkgOSAyIDEwLjc5IDIgMTNDMiAxNS4yMSAzLjc5IDE3IDYgMTdIMTQuMTdDMTQuMDYgMTcuMzEgMTQgMTcuNjUgMTQgMThWMTlINkMyLjY5IDE5IDAgMTYuMzEgMCAxM0MwIDkuOSAyLjM0IDcuMzYgNS4zNSA3LjA0QzYuNiA0LjY0IDkuMTEgMyAxMiAzQzE1LjY0IDMgMTguNjcgNS42IDE5LjM2IDkuMDRDMjEuOTUgOS4yMiAyNCAxMS4zNiAyNCAxNEwyMy45NCAxNC43N0MyMy41OSAxMi42MyAyMS43NCAxMSAxOS41IDExSDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRPZmZPdXRsaW5lID0gXCJNNy43MywxMEwxNS43MywxOEg2QTQsNCAwIDAsMSAyLDE0QTQsNCAwIDAsMSA2LDEwTTMsNS4yN0w1Ljc1LDhDMi41Niw4LjE1IDAsMTAuNzcgMCwxNEE2LDYgMCAwLDAgNiwyMEgxNy43M0wxOS43MywyMkwyMSwyMC43M0w0LjI3LDRNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDMTAuNSw0IDkuMTUsNC40MyA4LDUuMTdMOS40NSw2LjYzQzEwLjIxLDYuMjMgMTEuMDgsNiAxMiw2QTUuNSw1LjUgMCAwLDEgMTcuNSwxMS41VjEySDE5QTMsMyAwIDAsMSAyMiwxNUMyMiwxNi4xMyAyMS4zNiwxNy4xMSAyMC40NCwxNy42MkwyMS44OSwxOS4wN0MyMy4xNiwxOC4xNiAyNCwxNi42OCAyNCwxNUMyNCwxMi4zNiAyMS45NSwxMC4yMiAxOS4zNSwxMC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZE91dGxpbmUgPSBcIk0xOSwxOEg2QTQsNCAwIDAsMSAyLDE0QTQsNCAwIDAsMSA2LDEwSDYuNzFDNy4zNyw3LjY5IDkuNSw2IDEyLDZBNS41LDUuNSAwIDAsMSAxNy41LDExLjVWMTJIMTlBMywzIDAgMCwxIDIyLDE1QTMsMyAwIDAsMSAxOSwxOE0xOS4zNSwxMC4wM0MxOC42Nyw2LjU5IDE1LjY0LDQgMTIsNEM5LjExLDQgNi42LDUuNjQgNS4zNSw4LjAzQzIuMzQsOC4zNiAwLDEwLjkgMCwxNEE2LDYgMCAwLDAgNiwyMEgxOUE1LDUgMCAwLDAgMjQsMTVDMjQsMTIuMzYgMjEuOTUsMTAuMjIgMTkuMzUsMTAuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRQcmludCA9IFwiTTEyLDJDOS4xMSwyIDYuNiwzLjY0IDUuMzUsNi4wNEMyLjM0LDYuMzYgMCw4LjkxIDAsMTJBNiw2IDAgMCwwIDYsMThWMjJIMThWMThIMTlBNSw1IDAgMCwwIDI0LDEzQzI0LDEwLjM2IDIxLjk1LDguMjIgMTkuMzUsOC4wNEMxOC42Nyw0LjU5IDE1LjY0LDIgMTIsMk04LDEzSDE2VjIwSDhWMTNNOSwxNFYxNUgxNVYxNEg5TTksMTZWMTdIMTVWMTZIOU05LDE4VjE5SDE1VjE4SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRQcmludE91dGxpbmUgPSBcIk0xOSwxNkEzLDMgMCAwLDAgMjIsMTNBMywzIDAgMCwwIDE5LDEwSDE3LjVWOS41QTUuNSw1LjUgMCAwLDAgMTIsNEM5LjUsNCA3LjM3LDUuNjkgNi43MSw4SDZBNCw0IDAgMCwwIDIsMTJBNCw0IDAgMCwwIDYsMTZWMTFIMThWMTZIMTlNMTkuMzYsOC4wNEMyMS45NSw4LjIyIDI0LDEwLjM2IDI0LDEzQTUsNSAwIDAsMSAxOSwxOEgxOFYyMkg2VjE4QTYsNiAwIDAsMSAwLDEyQzAsOC45MSAyLjM0LDYuMzYgNS4zNSw2LjA0QzYuNiwzLjY0IDkuMTEsMiAxMiwyQzE1LjY0LDIgMTguNjcsNC42IDE5LjM2LDguMDRNOCwxM1YyMEgxNlYxM0g4TTksMThIMTVWMTlIOVYxOE0xNSwxN0g5VjE2SDE1VjE3TTksMTRIMTVWMTVIOVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFF1ZXN0aW9uID0gXCJNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzTTEzLDE3SDExVjE1SDEzVjE3TTE0LjgsMTEuODJDMTQuNSwxMi4yMSAxNC4xMywxMi41IDEzLjY3LDEyLjc1QzEzLjQxLDEyLjkxIDEzLjI0LDEzLjA3IDEzLjE1LDEzLjI2QzEzLjA2LDEzLjQ1IDEzLDEzLjY5IDEzLDE0SDExQzExLDEzLjQ1IDExLjExLDEzLjA4IDExLjMsMTIuODJDMTEuNSwxMi41NiAxMS44NSwxMi4yNSAxMi4zNywxMS45MUMxMi42MywxMS43NSAxMi44NCwxMS41NiAxMywxMS4zMkMxMy4xNSwxMS4wOSAxMy4yMywxMC44MSAxMy4yMywxMC41QzEzLjIzLDEwLjE4IDEzLjE0LDkuOTQgMTIuOTYsOS43NkMxMi43OCw5LjU2IDEyLjUsOS40NyAxMi4yLDkuNDdDMTEuOTMsOS40NyAxMS43MSw5LjU1IDExLjUsOS43QzExLjM1LDkuODUgMTEuMjUsMTAuMDggMTEuMjUsMTAuMzlIOS4yOEM5LjIzLDkuNjQgOS41LDkgMTAuMDYsOC41OUMxMC42LDguMiAxMS4zMSw4IDEyLjIsOEMxMy4xNCw4IDEzLjg5LDguMjMgMTQuNDMsOC42OEMxNC45Nyw5LjEzIDE1LjI0LDkuNzUgMTUuMjQsMTAuNUMxNS4yNCwxMSAxNS4wOSwxMS40MSAxNC44LDExLjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkUmVmcmVzaCA9IFwiTTEyIDRDMTUuNjQgNCAxOC42NyA2LjU5IDE5LjM1IDEwLjA0QzIxLjk1IDEwLjIyIDI0IDEyLjM2IDI0IDE1QzI0IDE3Ljc2IDIxLjc2IDIwIDE5IDIwSDZDMi42OSAyMCAwIDE3LjMxIDAgMTRDMCAxMC45MSAyLjM0IDguMzYgNS4zNSA4LjA0QzYuNiA1LjY0IDkuMTEgNCAxMiA0TTE3IDEzVjlMMTYgMTBDMTUuMDkgOC43OSAxMy42NCA4IDEyIDhDOS4yNCA4IDcgMTAuMjQgNyAxM0M3IDE1Ljc2IDkuMjQgMTggMTIgMThDMTQuMDUgMTggMTUuODEgMTYuNzcgMTYuNTggMTVIMTQuMjRDMTMuNjkgMTUuNjEgMTIuODkgMTYgMTIgMTZDMTAuMzQgMTYgOSAxNC42NiA5IDEzQzkgMTEuMzQgMTAuMzQgMTAgMTIgMTBDMTMuMDkgMTAgMTQuMDQgMTAuNTggMTQuNTYgMTEuNDRMMTMgMTNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ2xvdWRTZWFyY2ggPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0xOS4zNSw4LjAzQzIxLjk1LDguMjIgMjQsMTAuMzYgMjQsMTNDMjQsMTQuNjQgMjMuMjEsMTYuMSAyMiwxN1YxNi41QTYuNSw2LjUgMCAwLDAgMTUuNSwxMEE2LjUsNi41IDAgMCwwIDksMTYuNUM5LDE3IDkuMDYsMTcuNSA5LjE3LDE4SDZBNiw2IDAgMCwxIDAsMTJDMCw4LjkgMi4zNCw2LjM2IDUuMzUsNi4wM0M2LjYsMy42NCA5LjExLDIgMTIsMkMxNS42NCwyIDE4LjY3LDQuNTkgMTkuMzUsOC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFNlYXJjaE91dGxpbmUgPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMjEgMTkuMzEsMTguOUwyMi4zOSwyMkwyMSwyMy4zOUwxNy44OCwyMC4zMkMxNy4xOSwyMC43NSAxNi4zNywyMSAxNS41LDIxQzEzLDIxIDExLDE5IDExLDE2LjVDMTEsMTQgMTMsMTIgMTUuNSwxMk0xNS41LDE0QTIuNSwyLjUgMCAwLDAgMTMsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTlBMi41LDIuNSAwIDAsMCAxOCwxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxNE0yMiwxM0EzLDMgMCAwLDAgMTksMTBIMTcuNVY5LjVBNS41LDUuNSAwIDAsMCAxMiw0QzkuNSw0IDcuMzcsNS42OSA2LjcxLDhINkE0LDQgMCAwLDAgMiwxMkE0LDQgMCAwLDAgNiwxNkg5VjE2LjVDOSwxNyA5LjA2LDE3LjUgOS4xNywxOEg2QTYsNiAwIDAsMSAwLDEyQzAsOC45IDIuMzQsNi4zNiA1LjM1LDYuMDRDNi42LDMuNjQgOS4xMSwyIDEyLDJDMTUuNjQsMiAxOC42Nyw0LjU5IDE5LjM2LDguMDRDMjEuOTUsOC4yMiAyNCwxMC4zNiAyNCwxM0MyNCwxNC42NSAyMy4yMSwxNi4xIDIyLDE3VjE2LjVDMjIsMTUuNzcgMjEuODgsMTUuMDYgMjEuNjUsMTQuNEMyMS44NywxNCAyMiwxMy41IDIyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkU3luYyA9IFwiTTE5IDEyVjEzLjVDMjEuMjEgMTMuNSAyMyAxNS4yOSAyMyAxNy41QzIzIDE4LjMyIDIyLjc1IDE5LjA4IDIyLjMzIDE5LjcxTDIxLjI0IDE4LjYyQzIxLjQxIDE4LjI4IDIxLjUgMTcuOSAyMS41IDE3LjVDMjEuNSAxNi4xMiAyMC4zOCAxNSAxOSAxNVYxNi41TDE2Ljc1IDE0LjI1TDE2LjcyIDE0LjIyQzE2Ljc4IDE0LjE3IDE2Ljg1IDE0LjEzIDE5IDEyTTE5IDIzVjIxLjVDMTYuNzkgMjEuNSAxNSAxOS43MSAxNSAxNy41QzE1IDE2LjY4IDE1LjI1IDE1LjkyIDE1LjY3IDE1LjI5TDE2Ljc2IDE2LjM4QzE2LjU5IDE2LjcyIDE2LjUgMTcuMSAxNi41IDE3LjVDMTYuNSAxOC44OCAxNy42MiAyMCAxOSAyMFYxOC41TDIxLjI1IDIwLjc1TDIxLjI4IDIwLjc4QzIxLjIyIDIwLjgzIDIxLjE1IDIwLjg3IDE5IDIzTTEzIDE3LjVDMTMgMTMuOTEgMTUuOTEgMTEgMTkuNSAxMUMyMC43OCAxMSAyMS45NyAxMS4zOCAyMyAxMkMyMi4xMyAxMC45IDIwLjg0IDEwLjE0IDE5LjM1IDEwLjAzQzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDNDMi4zNCA4LjM2IDAgMTAuOSAwIDE0QzAgMTcuMzEgMi42OSAyMCA2IDIwSDEzLjVDMTMuMTggMTkuMjMgMTMgMTguMzkgMTMgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFN5bmNPdXRsaW5lID0gXCJNMTkgMTJWMTMuNUMyMS4yMSAxMy41IDIzIDE1LjI5IDIzIDE3LjVDMjMgMTguMzIgMjIuNzUgMTkuMDggMjIuMzMgMTkuNzFMMjEuMjQgMTguNjJDMjEuNDEgMTguMjggMjEuNSAxNy45IDIxLjUgMTcuNUMyMS41IDE2LjEyIDIwLjM4IDE1IDE5IDE1VjE2LjVMMTYuNzUgMTQuMjVMMTYuNzIgMTQuMjJDMTYuNzggMTQuMTcgMTYuODUgMTQuMTMgMTkgMTJNMTkgMjNWMjEuNUMxNi43OSAyMS41IDE1IDE5LjcxIDE1IDE3LjVDMTUgMTYuNjggMTUuMjUgMTUuOTIgMTUuNjcgMTUuMjlMMTYuNzYgMTYuMzhDMTYuNTkgMTYuNzIgMTYuNSAxNy4xIDE2LjUgMTcuNUMxNi41IDE4Ljg4IDE3LjYyIDIwIDE5IDIwVjE4LjVMMjEuMjUgMjAuNzVMMjEuMjggMjAuNzhDMjEuMjIgMjAuODMgMjEuMTUgMjAuODcgMTkgMjNNMTMuMDMgMThINkMzLjc5IDE4IDIgMTYuMjEgMiAxNFMzLjc5IDEwIDYgMTBINi43MUM3LjM3IDcuNjkgOS41IDYgMTIgNkMxNSA2IDE3LjQgOC4zNyAxNy41IDExLjMyQzE4LjEyIDExLjExIDE4LjggMTEgMTkuNSAxMUMyMC43OCAxMSAyMS45NyAxMS4zOCAyMyAxMkMyMi4xMyAxMC45IDIwLjg0IDEwLjE0IDE5LjM1IDEwLjAzQzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0QzkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDNDMi4zNCA4LjM2IDAgMTAuOSAwIDE0QzAgMTcuMzEgMi42OSAyMCA2IDIwSDEzLjVDMTMuMjQgMTkuMzggMTMuMDggMTguNyAxMy4wMyAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFRhZ3MgPSBcIk02LDIwQTYsNiAwIDAsMSAwLDE0QzAsMTAuOTEgMi4zNCw4LjM2IDUuMzUsOC4wNEM2LjYsNS42NCA5LjExLDQgMTIsNEMxNS42Myw0IDE4LjY2LDYuNTggMTkuMzUsMTBDMjEuOTUsMTAuMTkgMjQsMTIuMzYgMjQsMTVBNSw1IDAgMCwxIDE5LDIwSDZNOS4wOSw4LjRMNC41LDEzTDkuMDksMTcuNkwxMC41LDE2LjE4TDcuMzIsMTNMMTAuNSw5LjgyTDkuMDksOC40TTE0LjkxLDguNEwxMy41LDkuODJMMTYuNjgsMTNMMTMuNSwxNi4xOEwxNC45MSwxNy42TDE5LjUsMTNMMTQuOTEsOC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNsb3VkVXBsb2FkID0gXCJNMTQsMTNWMTdIMTBWMTNIN0wxMiw4TDE3LDEzTTE5LjM1LDEwLjAzQzE4LjY3LDYuNTkgMTUuNjQsNCAxMiw0QzkuMTEsNCA2LjYsNS42NCA1LjM1LDguMDNDMi4zNCw4LjM2IDAsMTAuOSAwLDE0QTYsNiAwIDAsMCA2LDIwSDE5QTUsNSAwIDAsMCAyNCwxNUMyNCwxMi4zNiAyMS45NSwxMC4yMiAxOS4zNSwxMC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG91ZFVwbG9hZE91dGxpbmUgPSBcIk0xOS4zNSwxMC4wNEMxOC42Nyw2LjU5IDE1LjY0LDQgMTIsNEM5LjExLDQgNi42LDUuNjQgNS4zNSw4LjA0QzIuMzQsOC4zNiAwLDEwLjkxIDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjA0TTE5LDE4SDZBNCw0IDAgMCwxIDIsMTRDMiwxMS45NSAzLjUzLDEwLjI0IDUuNTYsMTAuMDNMNi42Myw5LjkyTDcuMTMsOC45N0M4LjA4LDcuMTQgOS45NCw2IDEyLDZDMTQuNjIsNiAxNi44OCw3Ljg2IDE3LjM5LDEwLjQzTDE3LjY5LDExLjkzTDE5LjIyLDEyLjA0QzIwLjc4LDEyLjE0IDIyLDEzLjQ1IDIyLDE1QTMsMyAwIDAsMSAxOSwxOE04LDEzSDEwLjU1VjE2SDEzLjQ1VjEzSDE2TDEyLDlMOCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDbG92ZXIgPSBcIk0xMiwxMS4xOEMxNS4zLDguMTggMTcsNi42NCAxNyw0LjY5QzE3LDMuMTkgMTUuNzUsMiAxNC4yNSwyQzEzLjM5LDIgMTIuNTcsMi4zNiAxMiwzQzExLjQzLDIuMzYgMTAuNjEsMiA5LjY5LDJDOC4xOSwyIDcsMy4yNSA3LDQuNzVDNyw2LjY0IDguNyw4LjE4IDEyLDExLjE4TTExLjE4LDEyQzguMTgsOC43IDYuNjQsNyA0LjY5LDdDMy4xOSw3IDIsOC4yNSAyLDkuNzVDMiwxMC42MSAyLjM2LDExLjQzIDMsMTJDMi4zNiwxMi41NyAyLDEzLjM5IDIsMTQuMzFDMiwxNS44MSAzLjI1LDE3IDQuNzUsMTdDNi42NCwxNyA4LjE4LDE1LjMgMTEuMTgsMTJNMTIuODMsMTJDMTUuODIsMTUuMyAxNy4zNiwxNyAxOS4zMSwxN0MyMC44MSwxNyAyMiwxNS43NSAyMiwxNC4yNUMyMiwxMy4zOSAyMS42NCwxMi41NyAyMSwxMkMyMS42NCwxMS40MyAyMiwxMC42MSAyMiw5LjY5QzIyLDguMTkgMjAuNzUsNyAxOS4yNSw3QzE3LjM2LDcgMTUuODIsOC43IDEyLjgzLDEyTTEyLDEyLjgyQzguNywxNS44MiA3LDE3LjM2IDcsMTkuMzFDNywyMC44MSA4LjI1LDIyIDkuNzUsMjJDMTAuNjEsMjIgMTEuNDMsMjEuNjQgMTIsMjFDMTIuNTcsMjEuNjQgMTMuMzksMjIgMTQuMzEsMjJDMTUuODEsMjIgMTcsMjAuNzUgMTcsMTkuMjVDMTcsMTcuMzYgMTUuMywxNS44MiAxMiwxMi44MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2FjaExhbXAgPSBcIk0xNiA1TDE1IDJIMTNMMTIgNUw2IDhIOEw4LjYgMTFINFY3SDJWMTdINFYxM0g5TDEwIDE4TDEyIDIwTDEzIDIySDE1TDE2IDIwTDE4IDE4TDIwIDhIMjJNMTYuMTYgMTdIMTEuODRMMTAgOEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2F0UmFjayA9IFwiTTE4LjMzIDcuNzhBMSAxIDAgMCAwIDE2LjY2IDguODlBMiAyIDAgMSAxIDEzIDEwVjcuODJBMyAzIDAgMSAwIDExIDcuODJWMTBBMiAyIDAgMSAxIDcuMzQgOC44OUExIDEgMCAxIDAgNS42NyA3Ljc4QTQgNCAwIDAgMCAxMSAxMy40NlYyMEEyIDIgMCAwIDAgOSAyMkgxNUEyIDIgMCAwIDAgMTMgMjBWMTMuNDZBNCA0IDAgMCAwIDE4LjMzIDcuNzhNMTIgNEExIDEgMCAxIDEgMTEgNUExIDEgMCAwIDEgMTIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlQXJyYXkgPSBcIk0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNNiw2VjE4SDEwVjE2SDhWOEgxMFY2SDZNMTYsMTZIMTRWMThIMThWNkgxNFY4SDE2VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZGVCcmFjZXMgPSBcIk04LDNBMiwyIDAgMCwwIDYsNVY5QTIsMiAwIDAsMSA0LDExSDNWMTNINEEyLDIgMCAwLDEgNiwxNVYxOUEyLDIgMCAwLDAgOCwyMUgxMFYxOUg4VjE0QTIsMiAwIDAsMCA2LDEyQTIsMiAwIDAsMCA4LDEwVjVIMTBWM00xNiwzQTIsMiAwIDAsMSAxOCw1VjlBMiwyIDAgMCwwIDIwLDExSDIxVjEzSDIwQTIsMiAwIDAsMCAxOCwxNVYxOUEyLDIgMCAwLDEgMTYsMjFIMTRWMTlIMTZWMTRBMiwyIDAgMCwxIDE4LDEyQTIsMiAwIDAsMSAxNiwxMFY1SDE0VjNIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZUJyYWNlc0JveCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMSA4SDlWMTBDOSAxMS4xIDguMSAxMiA3IDEyQzguMSAxMiA5IDEyLjkgOSAxNFYxNkgxMVYxOEg5QzcuOSAxOCA3IDE3LjEgNyAxNlYxNUM3IDEzLjkgNi4xIDEzIDUgMTNWMTFDNi4xIDExIDcgMTAuMSA3IDlWOEM3IDYuOSA3LjkgNiA5IDZIMTFWOE0xOSAxM0MxNy45IDEzIDE3IDEzLjkgMTcgMTVWMTZDMTcgMTcuMSAxNi4xIDE4IDE1IDE4SDEzVjE2SDE1VjE0QzE1IDEyLjkgMTUuOSAxMiAxNyAxMkMxNS45IDEyIDE1IDExLjEgMTUgMTBWOEgxM1Y2SDE1QzE2LjEgNiAxNyA2LjkgMTcgOFY5QzE3IDEwLjEgMTcuOSAxMSAxOSAxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlQnJhY2tldHMgPSBcIk0xNSw0VjZIMThWMThIMTVWMjBIMjBWNE00LDRWMjBIOVYxOEg2VjZIOVY0SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZUVxdWFsID0gXCJNNiwxM0gxMVYxNUg2TTEzLDEzSDE4VjE1SDEzTTEzLDlIMThWMTFIMTNNNiw5SDExVjExSDZNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlR3JlYXRlclRoYW4gPSBcIk0xMC40MSw3LjQxTDE1LDEyTDEwLjQxLDE2LjZMOSwxNS4xOEwxMi4xOCwxMkw5LDguODJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlR3JlYXRlclRoYW5PckVxdWFsID0gXCJNMTMsMTNIMThWMTVIMTNNMTMsOUgxOFYxMUgxM002LjkxLDcuNDFMMTEuNSwxMkw2LjkxLDE2LjZMNS41LDE1LjE4TDguNjgsMTJMNS41LDguODJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlSnNvbiA9IFwiTTUsM0g3VjVINVYxMEEyLDIgMCAwLDEgMywxMkEyLDIgMCAwLDEgNSwxNFYxOUg3VjIxSDVDMy45MywyMC43MyAzLDIwLjEgMywxOVYxNUEyLDIgMCAwLDAgMSwxM0gwVjExSDFBMiwyIDAgMCwwIDMsOVY1QTIsMiAwIDAsMSA1LDNNMTksM0EyLDIgMCAwLDEgMjEsNVY5QTIsMiAwIDAsMCAyMywxMUgyNFYxM0gyM0EyLDIgMCAwLDAgMjEsMTVWMTlBMiwyIDAgMCwxIDE5LDIxSDE3VjE5SDE5VjE0QTIsMiAwIDAsMSAyMSwxMkEyLDIgMCAwLDEgMTksMTBWNUgxN1YzSDE5TTEyLDE1QTEsMSAwIDAsMSAxMywxNkExLDEgMCAwLDEgMTIsMTdBMSwxIDAgMCwxIDExLDE2QTEsMSAwIDAsMSAxMiwxNU04LDE1QTEsMSAwIDAsMSA5LDE2QTEsMSAwIDAsMSA4LDE3QTEsMSAwIDAsMSA3LDE2QTEsMSAwIDAsMSA4LDE1TTE2LDE1QTEsMSAwIDAsMSAxNywxNkExLDEgMCAwLDEgMTYsMTdBMSwxIDAgMCwxIDE1LDE2QTEsMSAwIDAsMSAxNiwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlTGVzc1RoYW4gPSBcIk0xMy41OSw3LjQxTDksMTJMMTMuNTksMTYuNkwxNSwxNS4xOEwxMS44MiwxMkwxNSw4LjgyTTE5LDNDMjAuMTEsMyAyMSwzLjkgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZUxlc3NUaGFuT3JFcXVhbCA9IFwiTTEzLDEzSDE4VjE1SDEzTTEzLDlIMThWMTFIMTNNMTAuMDksNy40MUwxMS41LDguODJMOC4zMiwxMkwxMS41LDE1LjE4TDEwLjA5LDE2LjZMNS41LDEyTTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZU5vdEVxdWFsID0gXCJNNiwxNUg4VjE3SDZNMTEsMTNIMThWMTVIMTFNMTEsOUgxOFYxMUgxMU02LDdIOFYxM0g2TTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZU5vdEVxdWFsVmFyaWFudCA9IFwiTTExLDYuNVY5LjMzTDguMzMsMTJMMTEsMTQuNjdWMTcuNUw1LjUsMTJNMTMsNi40M0wxOC41NywxMkwxMywxNy41N1YxNC43NEwxNS43NCwxMkwxMyw5LjI2TTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZVBhcmVudGhlc2VzID0gXCJNMTcuNjIsM0MxOS4xMyw1LjI3IDIwLDguNTUgMjAsMTJDMjAsMTUuNDQgMTkuMTMsMTguNzIgMTcuNjIsMjFMMTYsMTkuOTZDMTcuMjYsMTguMDcgMTgsMTUuMTMgMTgsMTJDMTgsOC44NyAxNy4yNiw1LjkyIDE2LDQuMDNMMTcuNjIsM002LjM4LDNMOCw0LjA0QzYuNzQsNS45MiA2LDguODcgNiwxMkM2LDE1LjEzIDYuNzQsMTguMDggOCwxOS45Nkw2LjM4LDIxQzQuODcsMTguNzMgNCwxNS40NSA0LDEyQzQsOC41NSA0Ljg3LDUuMjcgNi4zOCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZGVQYXJlbnRoZXNlc0JveCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMCAxNy4zTDguNCAxOEM2LjkgMTYuNSA2IDE0LjMgNiAxMlM2LjkgNy41IDguNCA2TDEwIDYuN0M4LjcgNy45IDggOS45IDggMTJTOC43IDE2LjEgMTAgMTcuM00xNS42IDE4TDE0IDE3LjNDMTUuMyAxNiAxNiAxNC4xIDE2IDEyUzE1LjMgNy45IDE0IDYuN0wxNS42IDZDMTcuMSA3LjUgMTggOS43IDE4IDEyQzE4IDE0LjMgMTcuMSAxNi41IDE1LjYgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZVN0cmluZyA9IFwiTTMsNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNU0xMi41LDExSDExLjVBMS41LDEuNSAwIDAsMSAxMCw5LjVBMS41LDEuNSAwIDAsMSAxMS41LDhIMTIuNUExLjUsMS41IDAgMCwxIDE0LDkuNUgxNkEzLjUsMy41IDAgMCwwIDEyLjUsNkgxMS41QTMuNSwzLjUgMCAwLDAgOCw5LjVBMy41LDMuNSAwIDAsMCAxMS41LDEzSDEyLjVBMS41LDEuNSAwIDAsMSAxNCwxNC41QTEuNSwxLjUgMCAwLDEgMTIuNSwxNkgxMS41QTEuNSwxLjUgMCAwLDEgMTAsMTQuNUg4QTMuNSwzLjUgMCAwLDAgMTEuNSwxOEgxMi41QTMuNSwzLjUgMCAwLDAgMTYsMTQuNUEzLjUsMy41IDAgMCwwIDEyLjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29kZVRhZ3MgPSBcIk0xNC42LDE2LjZMMTkuMiwxMkwxNC42LDcuNEwxNiw2TDIyLDEyTDE2LDE4TDE0LjYsMTYuNk05LjQsMTYuNkw0LjgsMTJMOS40LDcuNEw4LDZMMiwxMkw4LDE4TDkuNCwxNi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZGVUYWdzQ2hlY2sgPSBcIk02LjU5LDMuNDFMMiw4TDYuNTksMTIuNkw4LDExLjE4TDQuODIsOEw4LDQuODJMNi41OSwzLjQxTTEyLjQxLDMuNDFMMTEsNC44MkwxNC4xOCw4TDExLDExLjE4TDEyLjQxLDEyLjZMMTcsOEwxMi40MSwzLjQxTTIxLjU5LDExLjU5TDEzLjUsMTkuNjhMOS44MywxNkw4LjQyLDE3LjQxTDEzLjUsMjIuNUwyMywxM0wyMS41OSwxMS41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2RlcGVuID0gXCJNOC4yMSAxMkw2Ljg4IDEyLjg5VjExLjExTDguMjEgMTJNMTEuNDcgOS44MlY3LjM0TDcuMzEgMTAuMTJMOS4xNiAxMS4zNkwxMS40NyA5LjgyTTE2LjcgMTAuMTJMMTIuNTMgNy4zNFY5LjgyTDE0Ljg0IDExLjM2TDE2LjcgMTAuMTJNNy4zMSAxMy44OEwxMS40NyAxNi42NlYxNC4xOEw5LjE2IDEyLjY0TDcuMzEgMTMuODhNMTIuNTMgMTQuMThWMTYuNjZMMTYuNyAxMy44OEwxNC44NCAxMi42NEwxMi41MyAxNC4xOE0xMiAxMC43NEwxMC4xMiAxMkwxMiAxMy4yNkwxMy44OCAxMkwxMiAxMC43NE0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMk0xOC4xOCAxMC4xMkMxOC4xOCAxMC4wOSAxOC4xOCAxMC4wNyAxOC4xOCAxMC4wNUwxOC4xNyAxMEwxOC4xNyAxMEwxOC4xNiA5Ljk1QzE4LjE1IDkuOTQgMTguMTUgOS45MyAxOC4xNCA5LjkxTDE4LjEzIDkuODlMMTguMTEgOS44NUwxOC4xIDkuODNMMTguMDggOS44TDE4LjA2IDkuNzdMMTguMDMgOS43NEwxOCA5LjcyTDE4IDkuN0wxNy45NiA5LjY4TDE3Ljk1IDkuNjdMMTIuMyA1LjkxQzEyLjEyIDUuNzkgMTEuODkgNS43OSAxMS43MSA1LjkxTDYuMDUgOS42N0w2LjA1IDkuNjhMNiA5LjdDNiA5LjcxIDYgOS43MiA2IDkuNzJMNS45NyA5Ljc0TDUuOTQgOS43N0w1LjkzIDkuOEw1LjkgOS44M0w1Ljg5IDkuODVMNS44NyA5Ljg5TDUuODYgOS45MUw1Ljg0IDkuOTVMNS44NCAxMEw1LjgzIDEwTDUuODIgMTAuMDVDNS44MiAxMC4wNyA1LjgyIDEwLjA5IDUuODIgMTAuMTJWMTMuODhDNS44MiAxMy45MSA1LjgyIDEzLjkzIDUuODIgMTMuOTVMNS44MyAxNEw1Ljg0IDE0TDUuODQgMTQuMDVDNS44NSAxNC4wNiA1Ljg1IDE0LjA3IDUuODYgMTQuMDlMNS44NyAxNC4xMUw1Ljg5IDE0LjE1TDUuOSAxNC4xN0w1LjkyIDE0LjJMNS45NCAxNC4yM0M1Ljk1IDE0LjI0IDUuOTYgMTQuMjUgNS45NyAxNC4yNkw2IDE0LjI4TDYgMTQuM0w2LjA0IDE0LjMyTDYuMDUgMTQuMzNMMTEuNzEgMTguMUMxMS43OSAxOC4xNiAxMS45IDE4LjE4IDEyIDE4LjE4QzEyLjEgMTguMTggMTIuMjEgMTguMTUgMTIuMyAxOC4xTDE3Ljk1IDE0LjMzTDE3Ljk2IDE0LjMyTDE4IDE0LjNMMTggMTQuMjhMMTguMDMgMTQuMjZMMTguMDYgMTQuMjNMMTguMDggMTQuMkwxOC4xIDE0LjE3TDE4LjExIDE0LjE1TDE4LjEzIDE0LjExTDE4LjE0IDE0LjA5TDE4LjE2IDE0LjA1TDE4LjE2IDE0TDE4LjE3IDE0TDE4LjE4IDEzLjk1QzE4LjE4IDEzLjkzIDE4LjE4IDEzLjkxIDE4LjE4IDEzLjg4VjEwLjEyTTE3LjEyIDEyLjg5VjExLjExTDE1Ljc5IDEyTDE3LjEyIDEyLjg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZmZlZSA9IFwiTTIsMjFIMjBWMTlIMk0yMCw4SDE4VjVIMjBNMjAsM0g0VjEzQTQsNCAwIDAsMCA4LDE3SDE0QTQsNCAwIDAsMCAxOCwxM1YxMEgyMEEyLDIgMCAwLDAgMjIsOFY1QzIyLDMuODkgMjEuMSwzIDIwLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29mZmVlTWFrZXIgPSBcIk0yMSAxVjRIN1YyMUgyMVYyM0gyVjNDMiAxLjg5IDIuODkgMSA0IDFIMjFNMjIgMTNWMTVDMjIgMTYuMTEgMjEuMTEgMTcgMjAgMTdIMThDMTggMjAgMTUgMjAgMTQgMjBTMTAgMjAgMTAgMTdWMTFIMjBDMjEuMTEgMTEgMjIgMTEuOSAyMiAxM00yMCAxM0gxOFYxNUgyMFYxM00xNyA5TDE5IDVIOUwxMSA5SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZmZlZU9mZiA9IFwiTTMuMjcgMkwyMiAyMC43MkwyMC43MiAyMkwxOS43MyAyMUgyVjE5SDE3LjczTDE1LjQ0IDE2LjcxQzE1IDE2Ljg5IDE0LjUgMTcgMTQgMTdIOEM1Ljc5IDE3IDQgMTUuMjEgNCAxM1Y1LjI3TDIgMy4yN0wzLjI3IDJNMjIgNVY4QzIyIDkuMSAyMS4xIDEwIDIwIDEwSDE4VjEzQzE4IDEzLjM2IDE3Ljk0IDEzLjcgMTcuODUgMTQuMDRMNi44MSAzSDIwQzIxLjEgMyAyMiAzLjg5IDIyIDVNMjAgNUgxOFY4SDIwVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29mZmVlT2ZmT3V0bGluZSA9IFwiTTIgMy4yN0w0IDUuMjdWMTNDNCAxNS4yMSA1Ljc5IDE3IDggMTdIMTRDMTQuNSAxNyAxNSAxNi44OSAxNS40NCAxNi43MUwxNy43MyAxOUgyVjIxSDE5LjczTDIwLjcyIDIyTDIyIDIwLjcyTDMuMjcgMkwyIDMuMjdNOCAxNUM2LjkgMTUgNiAxNC4xIDYgMTNWNy4yN0wxMy43MyAxNUg4TTIwIDNINi44MUw4LjgxIDVIMTZWMTIuMTlMMTcuODUgMTQuMDRDMTcuOTQgMTMuNyAxOCAxMy4zNiAxOCAxM1YxMEgyMEMyMS4xIDEwIDIyIDkuMSAyMiA4VjVDMjIgMy45IDIxLjEgMyAyMCAzTTIwIDhIMThWNUgyMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZmZlZU91dGxpbmUgPSBcIk0yLDIxVjE5SDIwVjIxSDJNMjAsOFY1SDE4VjhIMjBNMjAsM0EyLDIgMCAwLDEgMjIsNVY4QTIsMiAwIDAsMSAyMCwxMEgxOFYxM0E0LDQgMCAwLDEgMTQsMTdIOEE0LDQgMCAwLDEgNCwxM1YzSDIwTTE2LDVINlYxM0EyLDIgMCAwLDAgOCwxNUgxNEEyLDIgMCAwLDAgMTYsMTNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2ZmZWVUb0dvID0gXCJNMywxOVYxN0gxN0wxNS4yNiwxNS4yNEwxNi42NywxMy44M0wyMC44NCwxOEwxNi42NywyMi4xN0wxNS4yNiwyMC43NkwxNywxOUgzTTE3LDhWNUgxNVY4SDE3TTE3LDNDMTguMTEsMyAxOSwzLjkgMTksNVY4QzE5LDkuMTEgMTguMTEsMTAgMTcsMTBIMTVWMTFBNCw0IDAgMCwxIDExLDE1SDdBNCw0IDAgMCwxIDMsMTFWM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2ZmZWVUb0dvT3V0bGluZSA9IFwiTTMgM1YxMUE0IDQgMCAwIDAgNyAxNUgxMUE0IDQgMCAwIDAgMTUgMTFWMTBIMTdDMTguMTEgMTAgMTkgOS4xMSAxOSA4VjVDMTkgMy45IDE4LjExIDMgMTcgM0gzTTUgNUgxM1YxMUEyIDIgMCAwIDEgMTEgMTNIN0EyIDIgMCAwIDEgNSAxMVY1TTE1IDVIMTdWOEgxNVY1TTE2LjY3IDEzLjgzTDE1LjI2IDE1LjI0TDE3IDE3SDNWMTlIMTdMMTUuMjYgMjAuNzZMMTYuNjcgMjIuMTdMMjAuODQgMThMMTYuNjcgMTMuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29mZmluID0gXCJNOCwyMkw1LDhMOCwySDE2TDE5LDhMMTYsMjJIOE0xMSw2VjhIOVYxMEgxMVYxNUgxM1YxMEgxNVY4SDEzVjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29nID0gXCJNMTIsMTUuNUEzLjUsMy41IDAgMCwxIDguNSwxMkEzLjUsMy41IDAgMCwxIDEyLDguNUEzLjUsMy41IDAgMCwxIDE1LjUsMTJBMy41LDMuNSAwIDAsMSAxMiwxNS41TTE5LjQzLDEyLjk3QzE5LjQ3LDEyLjY1IDE5LjUsMTIuMzMgMTkuNSwxMkMxOS41LDExLjY3IDE5LjQ3LDExLjM0IDE5LjQzLDExTDIxLjU0LDkuMzdDMjEuNzMsOS4yMiAyMS43OCw4Ljk1IDIxLjY2LDguNzNMMTkuNjYsNS4yN0MxOS41NCw1LjA1IDE5LjI3LDQuOTYgMTkuMDUsNS4wNUwxNi41Niw2LjA1QzE2LjA0LDUuNjYgMTUuNSw1LjMyIDE0Ljg3LDUuMDdMMTQuNSwyLjQyQzE0LjQ2LDIuMTggMTQuMjUsMiAxNCwySDEwQzkuNzUsMiA5LjU0LDIuMTggOS41LDIuNDJMOS4xMyw1LjA3QzguNSw1LjMyIDcuOTYsNS42NiA3LjQ0LDYuMDVMNC45NSw1LjA1QzQuNzMsNC45NiA0LjQ2LDUuMDUgNC4zNCw1LjI3TDIuMzQsOC43M0MyLjIxLDguOTUgMi4yNyw5LjIyIDIuNDYsOS4zN0w0LjU3LDExQzQuNTMsMTEuMzQgNC41LDExLjY3IDQuNSwxMkM0LjUsMTIuMzMgNC41MywxMi42NSA0LjU3LDEyLjk3TDIuNDYsMTQuNjNDMi4yNywxNC43OCAyLjIxLDE1LjA1IDIuMzQsMTUuMjdMNC4zNCwxOC43M0M0LjQ2LDE4Ljk1IDQuNzMsMTkuMDMgNC45NSwxOC45NUw3LjQ0LDE3Ljk0QzcuOTYsMTguMzQgOC41LDE4LjY4IDkuMTMsMTguOTNMOS41LDIxLjU4QzkuNTQsMjEuODIgOS43NSwyMiAxMCwyMkgxNEMxNC4yNSwyMiAxNC40NiwyMS44MiAxNC41LDIxLjU4TDE0Ljg3LDE4LjkzQzE1LjUsMTguNjcgMTYuMDQsMTguMzQgMTYuNTYsMTcuOTRMMTkuMDUsMTguOTVDMTkuMjcsMTkuMDMgMTkuNTQsMTguOTUgMTkuNjYsMTguNzNMMjEuNjYsMTUuMjdDMjEuNzgsMTUuMDUgMjEuNzMsMTQuNzggMjEuNTQsMTQuNjNMMTkuNDMsMTIuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29nQm94ID0gXCJNMTcuMjUsMTJDMTcuMjUsMTIuMjMgMTcuMjMsMTIuNDYgMTcuMiwxMi42OEwxOC42OCwxMy44NEMxOC44MSwxMy45NSAxOC44NSwxNC4xMyAxOC43NiwxNC4yOUwxNy4zNiwxNi43MUMxNy4yNywxNi44NiAxNy4wOSwxNi45MiAxNi45MywxNi44NkwxNS4xOSwxNi4xNkMxNC44MywxNi40NCAxNC40MywxNi42NyAxNCwxNi44NUwxMy43NSwxOC43QzEzLjcyLDE4Ljg3IDEzLjU3LDE5IDEzLjQsMTlIMTAuNkMxMC40MywxOSAxMC4yOCwxOC44NyAxMC4yNSwxOC43TDEwLDE2Ljg1QzkuNTYsMTYuNjcgOS4xNywxNi40NCA4LjgxLDE2LjE2TDcuMDcsMTYuODZDNi45MSwxNi45MiA2LjczLDE2Ljg2IDYuNjQsMTYuNzFMNS4yNCwxNC4yOUM1LjE1LDE0LjEzIDUuMTksMTMuOTUgNS4zMiwxMy44NEw2LjgsMTIuNjhDNi43NywxMi40NiA2Ljc1LDEyLjIzIDYuNzUsMTJDNi43NSwxMS43NyA2Ljc3LDExLjU0IDYuOCwxMS4zMkw1LjMyLDEwLjE2QzUuMTksMTAuMDUgNS4xNSw5Ljg2IDUuMjQsOS43MUw2LjY0LDcuMjlDNi43Myw3LjEzIDYuOTEsNy4wNyA3LjA3LDcuMTNMOC44MSw3Ljg0QzkuMTcsNy41NiA5LjU2LDcuMzIgMTAsNy4xNUwxMC4yNSw1LjI5QzEwLjI4LDUuMTMgMTAuNDMsNSAxMC42LDVIMTMuNEMxMy41Nyw1IDEzLjcyLDUuMTMgMTMuNzUsNS4yOUwxNCw3LjE1QzE0LjQzLDcuMzIgMTQuODMsNy41NiAxNS4xOSw3Ljg0TDE2LjkzLDcuMTNDMTcuMDksNy4wNyAxNy4yNyw3LjEzIDE3LjM2LDcuMjlMMTguNzYsOS43MUMxOC44NSw5Ljg2IDE4LjgxLDEwLjA1IDE4LjY4LDEwLjE2TDE3LjIsMTEuMzJDMTcuMjMsMTEuNTQgMTcuMjUsMTEuNzcgMTcuMjUsMTJNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNNMTIsMTBDMTAuODksMTAgMTAsMTAuODkgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkMxNCwxMC44OSAxMy4xLDEwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ0Nsb2Nrd2lzZSA9IFwiTTEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTQgMjEgMTUuOTIgMjAuMzQgMTcuNSAxOS4xNEwxNi4wNiAxNy43QzE0Ljg3IDE4LjU0IDEzLjQ1IDE5IDEyIDE5QzguMTMgMTkgNSAxNS44NyA1IDEyUzguMTMgNSAxMiA1IDE5IDguMTMgMTkgMTJIMTZMMjAgMTZMMjQgMTJIMjFDMjEgNy4wMyAxNi45NyAzIDEyIDNNNy43MSAxMy4xNkM3LjYyIDEzLjIzIDcuNTkgMTMuMzUgNy42NCAxMy40NUw4LjU0IDE1QzguNiAxNS4xMiA4LjcyIDE1LjEyIDguODIgMTUuMTJMOS45NSAxNC42N0MxMC4xOSAxNC44MyAxMC40NCAxNC45NyAxMC43IDE1LjA5TDEwLjg4IDE2LjI4QzEwLjkgMTYuMzkgMTEgMTYuNDcgMTEuMSAxNi40N0gxMi45QzEzIDE2LjUgMTMuMTEgMTYuNDEgMTMuMTMgMTYuM0wxMy4zMSAxNS4xMkMxMy41OCAxNSAxMy44NCAxNC44NSAxNC4wNyAxNC42N0wxNS4xOSAxNS4xMkMxNS4zIDE1LjE2IDE1LjQyIDE1LjExIDE1LjQ3IDE1TDE2LjM3IDEzLjVDMTYuNDIgMTMuMzggMTYuMzkgMTMuMjYgMTYuMzEgMTMuMTlMMTUuMzEgMTIuNDVDMTUuMzQgMTIuMTUgMTUuMzQgMTEuODUgMTUuMzEgMTEuNTVMMTYuMzEgMTAuNzlDMTYuNCAxMC43MiAxNi40MiAxMC42MSAxNi4zNyAxMC41TDE1LjQ3IDguOTVDMTUuNDEgOC44NSAxNS4zIDguODEgMTUuMTkgOC44NUwxNC4wNyA5LjNDMTMuODMgOS4xMyAxMy41NyA5IDEzLjMgOC44OEwxMy4xMyA3LjY5QzEzLjExIDcuNTggMTMgNy41IDEyLjkgNy41SDExLjE0QzExLjA0IDcuNSAxMC45NSA3LjU3IDEwLjkzIDcuNjdMMTAuNzYgOC44NUMxMC41IDguOTcgMTAuMjMgOS4xMiAxMCA5LjNMOC44NSA4Ljg4QzguNzQgOC44NCA4LjYxIDguODkgOC41NiA5TDcuNjUgMTAuNUM3LjYgMTAuNjIgNy42MyAxMC43NCA3LjcxIDEwLjgxTDguNzEgMTEuNTVDOC42OSAxMS43IDguNjkgMTEuODUgOC43MSAxMkM4LjcgMTIuMTUgOC43IDEyLjMgOC43MSAxMi40NUw3LjcxIDEzLjE5TTEyIDEzLjVIMTJDMTEuMTYgMTMuNSAxMC41IDEyLjgyIDEwLjUgMTJDMTAuNSAxMS4xNyAxMS4xNyAxMC41IDEyIDEwLjVTMTMuNSAxMS4xNyAxMy41IDEyIDEyLjgzIDEzLjUgMTIgMTMuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ0NvdW50ZXJjbG9ja3dpc2UgPSBcIk0xMiAzQzcuMDMgMyAzIDcuMDMgMyAxMkgwTDQgMTZMOCAxMkg1QzUgOC4xMyA4LjEzIDUgMTIgNVMxOSA4LjEzIDE5IDEyIDE1Ljg3IDE5IDEyIDE5QzEwLjU1IDE5IDkuMTMgMTguNTQgNy45NCAxNy43TDYuNSAxOS4xNEM4LjA4IDIwLjM0IDEwIDIxIDEyIDIxQzE2Ljk3IDIxIDIxIDE2Ljk3IDIxIDEyUzE2Ljk3IDMgMTIgM00xNi4yOSAxMy4xOUwxNS4yOSAxMi40NUMxNS4zIDEyLjMgMTUuMyAxMi4xNSAxNS4yOSAxMkMxNS4zMSAxMS44NSAxNS4zMSAxMS43IDE1LjI5IDExLjU1TDE2LjI5IDEwLjgxQzE2LjM3IDEwLjc0IDE2LjQgMTAuNjIgMTYuMzUgMTAuNUwxNS40NCA5QzE1LjM5IDguODkgMTUuMjYgOC44NCAxNS4xNSA4Ljg4TDE0IDkuM0MxMy43NyA5LjEyIDEzLjUgOC45NyAxMy4yNCA4Ljg1TDEzLjA3IDcuNjdDMTMuMDUgNy41NyAxMi45NiA3LjUgMTIuODYgNy41SDExLjFDMTEgNy41IDEwLjg5IDcuNTggMTAuODcgNy42OUwxMC43IDguODhDMTAuNDMgOSAxMC4xNyA5LjEzIDkuOTMgOS4zTDguODEgOC44NUM4LjcxIDguODEgOC41OSA4Ljg1IDguNTMgOC45NUw3LjYzIDEwLjVDNy41OCAxMC42MSA3LjYgMTAuNzIgNy42OSAxMC43OUw4LjY5IDExLjU1QzguNjYgMTEuODUgOC42NiAxMi4xNSA4LjY5IDEyLjQ1TDcuNjkgMTMuMTlDNy42MSAxMy4yNiA3LjU4IDEzLjM4IDcuNjMgMTMuNUw4LjUzIDE1QzguNTggMTUuMTEgOC43IDE1LjE2IDguODEgMTUuMTJMOS45MyAxNC42N0MxMC4xNiAxNC44NSAxMC40MiAxNSAxMC42OSAxNS4xMkwxMC44NyAxNi4zQzEwLjg5IDE2LjQxIDExIDE2LjUgMTEuMSAxNi40N0gxMi45QzEzIDE2LjQ3IDEzLjExIDE2LjM5IDEzLjEyIDE2LjI4TDEzLjMgMTUuMDlDMTMuNTYgMTQuOTcgMTMuODEgMTQuODMgMTQuMDUgMTQuNjdMMTUuMTggMTUuMTJDMTUuMjggMTUuMTIgMTUuNCAxNS4xMiAxNS40NiAxNUwxNi4zNiAxMy40NUMxNi40MSAxMy4zNSAxNi4zOCAxMy4yMyAxNi4yOSAxMy4xNk0xMiAxMy41QzExLjE3IDEzLjUgMTAuNSAxMi44MyAxMC41IDEyUzExLjE3IDEwLjUgMTIgMTAuNSAxMy41IDExLjE3IDEzLjUgMTJDMTMuNSAxMi44MiAxMi44NCAxMy41IDEyIDEzLjVIMTJcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dPZmYgPSBcIk0yMi4xMiAyMS40NkwyLjQgMS43M0wxLjEyIDNMNCA1Ljg3TDIuMzQgOC43M0MyLjIxIDguOTUgMi4yNyA5LjIyIDIuNDYgOS4zN0w0LjU3IDExQzQuNTMgMTEuMzQgNC41IDExLjY3IDQuNSAxMlM0LjUzIDEyLjY1IDQuNTcgMTIuOTdMMi40NiAxNC42M0MyLjI3IDE0Ljc4IDIuMjEgMTUuMDUgMi4zNCAxNS4yN0w0LjM0IDE4LjczQzQuNDYgMTguOTUgNC43MyAxOS4wMyA0Ljk1IDE4Ljk1TDcuNDQgMTcuOTRDNy45NiAxOC4zNCA4LjUgMTguNjggOS4xMyAxOC45M0w5LjUgMjEuNThDOS41NCAyMS44MiA5Ljc1IDIyIDEwIDIySDE0QzE0LjI1IDIyIDE0LjQ2IDIxLjgyIDE0LjUgMjEuNThMMTQuODcgMTguOTNDMTUuMzggMTguNzIgMTUuODMgMTguNDUgMTYuMjYgMTguMTRMMjAuODUgMjIuNzNMMjIuMTIgMjEuNDZNMTIgMTUuNUMxMC4wNyAxNS41IDguNSAxMy45MyA4LjUgMTJDOC41IDExLjUgOC42MiAxMS4wOCA4Ljc5IDEwLjY3TDEzLjMzIDE1LjIxQzEyLjkyIDE1LjM5IDEyLjUgMTUuNSAxMiAxNS41TTExLjc0IDguNTNMOC41NiA1LjM1QzguNzUgNS4yNSA4LjkzIDUuMTUgOS4xMyA1LjA3TDkuNSAyLjQyQzkuNTQgMi4xOCA5Ljc1IDIgMTAgMkgxNEMxNC4yNSAyIDE0LjQ2IDIuMTggMTQuNSAyLjQyTDE0Ljg3IDUuMDdDMTUuNSA1LjMyIDE2LjA0IDUuNjYgMTYuNTYgNi4wNUwxOS4wNSA1LjA1QzE5LjI3IDQuOTYgMTkuNTQgNS4wNSAxOS42NiA1LjI3TDIxLjY2IDguNzNDMjEuNzggOC45NSAyMS43MyA5LjIyIDIxLjU0IDkuMzdMMTkuNDMgMTFDMTkuNDcgMTEuMzQgMTkuNSAxMS42NyAxOS41IDEyUzE5LjQ3IDEyLjY1IDE5LjQzIDEyLjk3TDIxLjU0IDE0LjYzQzIxLjczIDE0Ljc4IDIxLjc4IDE1LjA1IDIxLjY2IDE1LjI3TDIwLjUgMTcuMjlMMTUuNDcgMTIuMjZDMTUuNSAxMi4xOCAxNS41IDEyLjA5IDE1LjUgMTJDMTUuNSAxMC4wNyAxMy45MyA4LjUgMTIgOC41QzExLjkxIDguNSAxMS44MyA4LjUgMTEuNzQgOC41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w0IDUuODhMMi4zNCA4LjczQzIuMjEgOC45NSAyLjI3IDkuMjIgMi40NiA5LjM3TDQuNTcgMTFMNC41IDEyTDQuNTcgMTIuOTdMMi40NiAxNC42M0MyLjI3IDE0Ljc4IDIuMjEgMTUuMDUgMi4zNCAxNS4yN0w0LjM0IDE4LjczQzQuNDYgMTguOTUgNC43MyAxOS4wMyA0Ljk1IDE4Ljk1TDcuNDQgMTcuOTRDNy45NiAxOC4zNCA4LjUgMTguNjggOS4xMyAxOC45M0w5LjUgMjEuNThDOS41NCAyMS44MiA5Ljc1IDIyIDEwIDIySDE0QzE0LjI1IDIyIDE0LjQ2IDIxLjgyIDE0LjUgMjEuNThMMTQuODcgMTguOTNDMTUuMzggMTguNzMgMTUuODMgMTguNDUgMTYuMjYgMTguMTVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTAgMTEuOUwxMi4xIDE0QzEyLjA2IDE0IDEyLjAzIDE0IDEyIDE0QzEwLjkgMTQgMTAgMTMuMTEgMTAgMTJDMTAgMTEuOTcgMTAgMTEuOTQgMTAgMTEuOU0xMy4xMyAxNy4zOUwxMi43NiAyMEgxMS4yNEwxMC44NyAxNy4zOEM5LjY4IDE3LjE0IDguNjMgMTYuNSA3Ljg2IDE1LjYyTDUuNDMgMTYuNjZMNC42OCAxNS4zNkw2LjggMTMuOEM2LjQgMTIuNjQgNi40IDExLjM3IDYuOCAxMC4yTDQuNjkgOC42NUw1LjQ0IDcuMzVMNS41IDcuMzdMOC40IDEwLjI5QzguMTUgMTAuOCA4IDExLjM4IDggMTJDOCAxNC4yMSA5Ljc5IDE2IDEyIDE2QzEyLjYyIDE2IDEzLjIgMTUuODYgMTMuNzEgMTUuNkwxNC44MyAxNi43MkMxNC4zMSAxNy4wMyAxMy43NCAxNy4yNiAxMy4xMyAxNy4zOU0xMC4wNiA2Ljg2TDguNTUgNS4zNUM4Ljc0IDUuMjYgOC45MyA1LjE1IDkuMTMgNS4wN0w5LjUgMi40MkM5LjU0IDIuMTggOS43NSAyIDEwIDJIMTRDMTQuMjUgMiAxNC40NiAyLjE4IDE0LjUgMi40MkwxNC44NyA1LjA3QzE1LjUgNS4zMiAxNi4wNCA1LjY2IDE2LjU2IDYuMDVMMTkuMDUgNS4wNUMxOS4yNyA0Ljk2IDE5LjU0IDUuMDUgMTkuNjYgNS4yN0wyMS42NiA4LjczQzIxLjc5IDguOTUgMjEuNzMgOS4yMiAyMS41NCA5LjM3TDE5LjQzIDExTDE5LjUgMTJMMTkuNDMgMTNMMjEuNTQgMTQuNjNDMjEuNzMgMTQuNzggMjEuNzkgMTUuMDUgMjEuNjYgMTUuMjdMMjAuNSAxNy4yOUwxOS4wNCAxNS44NEwxOS4zMiAxNS4zNkwxNy4yIDEzLjgxQzE3LjYgMTIuNjQgMTcuNiAxMS4zNyAxNy4yIDEwLjJMMTkuMzEgOC42NUwxOC41NiA3LjM1TDE2LjE1IDguMzlDMTUuMzggNy41IDE0LjMyIDYuODYgMTMuMTIgNi42MkwxMi43NSA0SDExLjI1TDEwLjg4IDYuNjFDMTAuNiA2LjY3IDEwLjMyIDYuNzUgMTAuMDYgNi44Nk0xMiA4QzE0LjIxIDggMTYgOS43OSAxNiAxMkMxNiAxMi4yNSAxNS45NyAxMi41IDE1LjkzIDEyLjczTDExLjI3IDguMDdDMTEuNSA4LjAzIDExLjc1IDggMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dPdXRsaW5lID0gXCJNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME0xMCwyMkM5Ljc1LDIyIDkuNTQsMjEuODIgOS41LDIxLjU4TDkuMTMsMTguOTNDOC41LDE4LjY4IDcuOTYsMTguMzQgNy40NCwxNy45NEw0Ljk1LDE4Ljk1QzQuNzMsMTkuMDMgNC40NiwxOC45NSA0LjM0LDE4LjczTDIuMzQsMTUuMjdDMi4yMSwxNS4wNSAyLjI3LDE0Ljc4IDIuNDYsMTQuNjNMNC41NywxMi45N0w0LjUsMTJMNC41NywxMUwyLjQ2LDkuMzdDMi4yNyw5LjIyIDIuMjEsOC45NSAyLjM0LDguNzNMNC4zNCw1LjI3QzQuNDYsNS4wNSA0LjczLDQuOTYgNC45NSw1LjA1TDcuNDQsNi4wNUM3Ljk2LDUuNjYgOC41LDUuMzIgOS4xMyw1LjA3TDkuNSwyLjQyQzkuNTQsMi4xOCA5Ljc1LDIgMTAsMkgxNEMxNC4yNSwyIDE0LjQ2LDIuMTggMTQuNSwyLjQyTDE0Ljg3LDUuMDdDMTUuNSw1LjMyIDE2LjA0LDUuNjYgMTYuNTYsNi4wNUwxOS4wNSw1LjA1QzE5LjI3LDQuOTYgMTkuNTQsNS4wNSAxOS42Niw1LjI3TDIxLjY2LDguNzNDMjEuNzksOC45NSAyMS43Myw5LjIyIDIxLjU0LDkuMzdMMTkuNDMsMTFMMTkuNSwxMkwxOS40MywxM0wyMS41NCwxNC42M0MyMS43MywxNC43OCAyMS43OSwxNS4wNSAyMS42NiwxNS4yN0wxOS42NiwxOC43M0MxOS41NCwxOC45NSAxOS4yNywxOS4wNCAxOS4wNSwxOC45NUwxNi41NiwxNy45NUMxNi4wNCwxOC4zNCAxNS41LDE4LjY4IDE0Ljg3LDE4LjkzTDE0LjUsMjEuNThDMTQuNDYsMjEuODIgMTQuMjUsMjIgMTQsMjJIMTBNMTEuMjUsNEwxMC44OCw2LjYxQzkuNjgsNi44NiA4LjYyLDcuNSA3Ljg1LDguMzlMNS40NCw3LjM1TDQuNjksOC42NUw2LjgsMTAuMkM2LjQsMTEuMzcgNi40LDEyLjY0IDYuOCwxMy44TDQuNjgsMTUuMzZMNS40MywxNi42Nkw3Ljg2LDE1LjYyQzguNjMsMTYuNSA5LjY4LDE3LjE0IDEwLjg3LDE3LjM4TDExLjI0LDIwSDEyLjc2TDEzLjEzLDE3LjM5QzE0LjMyLDE3LjE0IDE1LjM3LDE2LjUgMTYuMTQsMTUuNjJMMTguNTcsMTYuNjZMMTkuMzIsMTUuMzZMMTcuMiwxMy44MUMxNy42LDEyLjY0IDE3LjYsMTEuMzcgMTcuMiwxMC4yTDE5LjMxLDguNjVMMTguNTYsNy4zNUwxNi4xNSw4LjM5QzE1LjM4LDcuNSAxNC4zMiw2Ljg2IDEzLjEyLDYuNjJMMTIuNzUsNEgxMS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dSZWZyZXNoID0gXCJNMTggMTQuNUMxOS4xIDE0LjUgMjAuMSAxNC45IDIwLjggMTUuN0wyMiAxNC41VjE4LjVIMThMMTkuOCAxNi43QzE5LjMgMTYuMyAxOC43IDE2IDE4IDE2QzE2LjYgMTYgMTUuNSAxNy4xIDE1LjUgMTguNVMxNi42IDIxIDE4IDIxQzE4LjggMjEgMTkuNSAyMC42IDIwIDIwSDIxLjdDMjEuMSAyMS41IDE5LjcgMjIuNSAxOCAyMi41QzE1LjggMjIuNSAxNCAyMC43IDE0IDE4LjVTMTUuOCAxNC41IDE4IDE0LjVNMTEuNSAxOC41QzExLjUgMTcuNCAxMS44IDE2LjQgMTIuMiAxNS41SDEyQzEwLjEgMTUuNSA4LjUgMTMuOSA4LjUgMTJTMTAuMSA4LjUgMTIgOC41IDE1LjUgMTAuMSAxNS41IDEyQzE1LjUgMTIuMiAxNS41IDEyLjQgMTUuNCAxMi41QzE2LjIgMTIuMiAxNyAxMiAxOCAxMkMxOC41IDEyIDE5IDEyLjEgMTkuNSAxMi4yVjEyQzE5LjUgMTEuNyAxOS41IDExLjMgMTkuNCAxMUwyMS41IDkuNEMyMS43IDkuMiAyMS43IDkgMjEuNiA4LjhMMTkuNiA1LjNDMTkuNSA1IDE5LjMgNSAxOSA1TDE2LjUgNkMxNiA1LjYgMTUuNCA1LjMgMTQuOCA1TDE0LjQgMi4zQzE0LjUgMi4yIDE0LjIgMiAxNCAySDEwQzkuOCAyIDkuNSAyLjIgOS41IDIuNEw5LjEgNS4xQzguNSA1LjMgOCA1LjcgNy40IDZMNSA1QzQuNyA1IDQuNSA1IDQuMyA1LjNMMi4zIDguOEMyLjIgOSAyLjMgOS4yIDIuNSA5LjRMNC42IDExQzQuNiAxMS4zIDQuNSAxMS43IDQuNSAxMlM0LjUgMTIuNyA0LjYgMTNMMi41IDE0LjdDMi4zIDE0LjkgMi4zIDE1LjEgMi40IDE1LjNMNC40IDE4LjhDNC41IDE5IDQuNyAxOSA1IDE5TDcuNSAxOEM4IDE4LjQgOC42IDE4LjcgOS4yIDE5TDkuNiAyMS43QzkuNiAyMS45IDkuOCAyMi4xIDEwLjEgMjIuMUgxMi42QzExLjkgMjEgMTEuNSAxOS44IDExLjUgMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dSZWZyZXNoT3V0bGluZSA9IFwiTTE4IDE0LjVDMTkuMSAxNC41IDIwLjEgMTQuOSAyMC44IDE1LjdMMjIgMTQuNVYxOC41SDE4TDE5LjggMTYuN0MxOS4zIDE2LjMgMTguNyAxNiAxOCAxNkMxNi42IDE2IDE1LjUgMTcuMSAxNS41IDE4LjVTMTYuNiAyMSAxOCAyMUMxOC44IDIxIDE5LjUgMjAuNiAyMCAyMEgyMS43QzIxLjEgMjEuNSAxOS43IDIyLjUgMTggMjIuNUMxNS44IDIyLjUgMTQgMjAuNyAxNCAxOC41UzE1LjggMTQuNSAxOCAxNC41TTExLjcgMjBIMTEuM0wxMC45IDE3LjRDOS43IDE3LjIgOC43IDE2LjUgNy45IDE1LjZMNS41IDE2LjZMNC43IDE1LjNMNi44IDEzLjdDNi40IDEyLjUgNi40IDExLjMgNi44IDEwLjFMNC43IDguN0w1LjUgNy40TDcuOSA4LjRDOC43IDcuNSA5LjcgNi45IDEwLjkgNi42TDExLjIgNEgxMi43TDEzLjEgNi42QzE0LjMgNi44IDE1LjQgNy41IDE2LjEgOC40TDE4LjUgNy40TDE5LjMgOC43TDE3LjIgMTAuMkMxNy40IDEwLjggMTcuNSAxMS40IDE3LjUgMTJIMThDMTguNSAxMiAxOSAxMi4xIDE5LjUgMTIuMlYxMkwxOS40IDExTDIxLjUgOS40QzIxLjcgOS4yIDIxLjcgOSAyMS42IDguOEwxOS42IDUuM0MxOS41IDUgMTkuMyA1IDE5IDVMMTYuNSA2QzE2IDUuNiAxNS40IDUuMyAxNC44IDVMMTQuNCAyLjNDMTQuNSAyLjIgMTQuMiAyIDE0IDJIMTBDOS44IDIgOS41IDIuMiA5LjUgMi40TDkuMSA1LjFDOC41IDUuMyA4IDUuNyA3LjQgNkw1IDVDNC43IDUgNC41IDUgNC4zIDUuM0wyLjMgOC44QzIuMiA5IDIuMyA5LjIgMi41IDkuNEw0LjYgMTFMNC41IDEyTDQuNiAxM0wyLjUgMTQuN0MyLjMgMTQuOSAyLjMgMTUuMSAyLjQgMTUuM0w0LjQgMTguOEM0LjUgMTkgNC43IDE5IDUgMTlMNy41IDE4QzggMTguNCA4LjYgMTguNyA5LjIgMTlMOS42IDIxLjdDOS42IDIxLjkgOS44IDIyLjEgMTAuMSAyMi4xSDEyLjZDMTIuMSAyMS40IDExLjkgMjAuNyAxMS43IDIwTTE2IDEyLjNWMTJDMTYgOS44IDE0LjIgOCAxMiA4UzggOS44IDggMTJDOCAxNC4yIDkuOCAxNiAxMiAxNkMxMi43IDE0LjMgMTQuMiAxMi45IDE2IDEyLjNNMTAgMTJDMTAgMTAuOSAxMC45IDEwIDEyIDEwUzE0IDEwLjkgMTQgMTIgMTMuMSAxNCAxMiAxNCAxMCAxMy4xIDEwIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ1N5bmMgPSBcIk0xMS41IDE4LjVDMTEuNSAxNy40IDExLjggMTYuNCAxMi4yIDE1LjVIMTJDMTAuMSAxNS41IDguNSAxMy45IDguNSAxMlMxMC4xIDguNSAxMiA4LjUgMTUuNSAxMC4xIDE1LjUgMTJDMTUuNSAxMi4yIDE1LjUgMTIuNCAxNS40IDEyLjVDMTYuMiAxMi4yIDE3IDEyIDE4IDEyQzE4LjUgMTIgMTkgMTIuMSAxOS41IDEyLjJWMTJDMTkuNSAxMS43IDE5LjUgMTEuMyAxOS40IDExTDIxLjUgOS40QzIxLjcgOS4yIDIxLjcgOSAyMS42IDguOEwxOS42IDUuM0MxOS41IDUgMTkuMyA1IDE5IDVMMTYuNSA2QzE2IDUuNiAxNS40IDUuMyAxNC44IDVMMTQuNCAyLjNDMTQuNSAyLjIgMTQuMiAyIDE0IDJIMTBDOS44IDIgOS41IDIuMiA5LjUgMi40TDkuMSA1LjFDOC41IDUuMyA4IDUuNyA3LjQgNkw1IDVDNC43IDUgNC41IDUgNC4zIDUuM0wyLjMgOC44QzIuMiA5IDIuMyA5LjIgMi41IDkuNEw0LjYgMTFDNC42IDExLjMgNC41IDExLjcgNC41IDEyUzQuNSAxMi43IDQuNiAxM0wyLjUgMTQuN0MyLjMgMTQuOSAyLjMgMTUuMSAyLjQgMTUuM0w0LjQgMTguOEM0LjUgMTkgNC43IDE5IDUgMTlMNy41IDE4QzggMTguNCA4LjYgMTguNyA5LjIgMTlMOS42IDIxLjdDOS42IDIxLjkgOS44IDIyLjEgMTAuMSAyMi4xSDEyLjZDMTEuOSAyMSAxMS41IDE5LjggMTEuNSAxOC41TTE4IDE0LjVWMTNMMTUuOCAxNS4yTDE4IDE3LjRWMTZDMTkuNCAxNiAyMC41IDE3LjEgMjAuNSAxOC41QzIwLjUgMTguOSAyMC40IDE5LjMgMjAuMiAxOS42TDIxLjMgMjAuN0MyMi41IDE4LjkgMjIgMTYuNCAyMC4yIDE1LjJDMTkuNiAxNC43IDE4LjggMTQuNSAxOCAxNC41TTE4IDIxQzE2LjYgMjEgMTUuNSAxOS45IDE1LjUgMTguNUMxNS41IDE4LjEgMTUuNiAxNy43IDE1LjggMTcuNEwxNC43IDE2LjNDMTMuNSAxOC4xIDE0IDIwLjYgMTUuOCAyMS44QzE2LjUgMjIuMiAxNy4yIDIyLjUgMTggMjIuNVYyNEwyMC4yIDIxLjhMMTggMTkuNVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dTeW5jT3V0bGluZSA9IFwiTTExLjcgMjBIMTEuM0wxMC45IDE3LjRDOS43IDE3LjIgOC43IDE2LjUgNy45IDE1LjZMNS41IDE2LjZMNC43IDE1LjNMNi44IDEzLjdDNi40IDEyLjUgNi40IDExLjMgNi44IDEwLjFMNC43IDguN0w1LjUgNy40TDcuOSA4LjRDOC43IDcuNSA5LjcgNi45IDEwLjkgNi42TDExLjIgNEgxMi43TDEzLjEgNi42QzE0LjMgNi44IDE1LjQgNy41IDE2LjEgOC40TDE4LjUgNy40TDE5LjMgOC43TDE3LjIgMTAuMkMxNy40IDEwLjggMTcuNSAxMS40IDE3LjUgMTJIMThDMTguNSAxMiAxOSAxMi4xIDE5LjUgMTIuMlYxMkwxOS40IDExTDIxLjUgOS40QzIxLjcgOS4yIDIxLjcgOSAyMS42IDguOEwxOS42IDUuM0MxOS41IDUgMTkuMyA1IDE5IDVMMTYuNSA2QzE2IDUuNiAxNS40IDUuMyAxNC44IDVMMTQuNCAyLjNDMTQuNSAyLjIgMTQuMiAyIDE0IDJIMTBDOS44IDIgOS41IDIuMiA5LjUgMi40TDkuMSA1LjFDOC41IDUuMyA4IDUuNyA3LjQgNkw1IDVDNC43IDUgNC41IDUgNC4zIDUuM0wyLjMgOC44QzIuMiA5IDIuMyA5LjIgMi41IDkuNEw0LjYgMTFMNC41IDEyTDQuNiAxM0wyLjUgMTQuN0MyLjMgMTQuOSAyLjMgMTUuMSAyLjQgMTUuM0w0LjQgMTguOEM0LjUgMTkgNC43IDE5IDUgMTlMNy41IDE4QzggMTguNCA4LjYgMTguNyA5LjIgMTlMOS42IDIxLjdDOS42IDIxLjkgOS44IDIyLjEgMTAuMSAyMi4xSDEyLjZDMTIuMSAyMS40IDExLjkgMjAuNyAxMS43IDIwTTE2IDEyLjNWMTJDMTYgOS44IDE0LjIgOCAxMiA4UzggOS44IDggMTJDOCAxNC4yIDkuOCAxNiAxMiAxNkMxMi43IDE0LjMgMTQuMiAxMi45IDE2IDEyLjNNMTAgMTJDMTAgMTAuOSAxMC45IDEwIDEyIDEwUzE0IDEwLjkgMTQgMTIgMTMuMSAxNCAxMiAxNCAxMCAxMy4xIDEwIDEyTTE4IDE0LjVWMTNMMTUuOCAxNS4yTDE4IDE3LjRWMTZDMTkuNCAxNiAyMC41IDE3LjEgMjAuNSAxOC41QzIwLjUgMTguOSAyMC40IDE5LjMgMjAuMiAxOS42TDIxLjMgMjAuN0MyMi41IDE4LjkgMjIgMTYuNCAyMC4yIDE1LjJDMTkuNiAxNC43IDE4LjggMTQuNSAxOCAxNC41TTE4IDIxQzE2LjYgMjEgMTUuNSAxOS45IDE1LjUgMTguNUMxNS41IDE4LjEgMTUuNiAxNy43IDE1LjggMTcuNEwxNC43IDE2LjNDMTMuNSAxOC4xIDE0IDIwLjYgMTUuOCAyMS44QzE2LjUgMjIuMiAxNy4yIDIyLjUgMTggMjIuNVYyNEwyMC4yIDIxLjhMMTggMTkuNVYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dUcmFuc2ZlciA9IFwiTTE0IDE4VjE2TDEwIDE5LjVMMTQgMjNWMjFIMTdWMThIMTRNMjIgMTUuNUwxOCAxMlYxNEgxNVYxN0gxOFYxOUwyMiAxNS41TTIxLjY2IDguNzNMMTkuNjYgNS4yN0MxOS41NCA1LjA1IDE5LjI4IDQuOTYgMTkuMDUgNS4wNUwxNi41NiA2LjA1QzE2LjA1IDUuNjQgMTUuNSA1LjMxIDE0Ljg3IDUuMDVMMTQuNSAyLjQyQzE0LjQ2IDIuMTggMTQuMjUgMiAxNCAySDEwQzkuNzUgMiA5LjU0IDIuMTggOS41IDIuNDJMOS4xMyA1LjA3QzguNSA1LjMzIDcuOTYgNS42NiA3LjQ0IDYuMDdMNSA1LjA1QzQuNzcgNC45NiA0LjUgNS4wNSA0LjM5IDUuMjdMMi4zOSA4LjczQzIuMjYgOC45NCAyLjMxIDkuMjIgMi41IDkuMzdMNC41NyAxMUM0LjUzIDExLjMzIDQuNSAxMS42NyA0LjUgMTJDNC41IDEyLjMzIDQuNTMgMTIuNjcgNC41NyAxM0wyLjQ2IDE0LjYzQzIuMjYgMTQuNzggMi4yMSAxNS4wNiAyLjM0IDE1LjI3TDQuMzQgMTguNzNDNC40NSAxOSA0Ljc0IDE5LjExIDUgMTlMNSAxOUw3LjUgMThDNy43NCAxOC4xOSA4IDE4LjM3IDguMjYgMTguNTNMMTEuNzcgMTUuNTNDOS44NCAxNS40IDguMzggMTMuNzMgOC41IDExLjhDOC42NSA5Ljg3IDEwLjMyIDguNDEgMTIuMjUgOC41NUMxMy42OSA4LjY0IDE0LjkyIDkuNjIgMTUuMzUgMTFIMTkuNDNMMjEuNTQgOS4zN0MyMS43MyA5LjIyIDIxLjc4IDguOTQgMjEuNjYgOC43M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb2dUcmFuc2Zlck91dGxpbmUgPSBcIk0xNSAxN1YxNEgxOFYxMkwyMiAxNS41TDE4IDE5VjE3SDE1TTE3IDE4VjIxSDE0VjIzTDEwIDE5LjVMMTQgMTZWMThIMTdNMTIgOEM5Ljc5IDggOCA5LjggOCAxMkM4IDEzLjkxIDkuMzUgMTUuNTQgMTEuMjEgMTUuOTJMMTYgMTEuODZDMTUuOTMgOS43MSAxNC4xNiA4IDEyIDhNMTIgMTRDMTAuOSAxNCAxMCAxMy4xMSAxMCAxMlMxMC45IDEwIDEyIDEwIDE0IDEwLjkgMTQgMTIgMTMuMTEgMTQgMTIgMTRNMjEuNjYgOC43M0wxOS42NiA1LjI3QzE5LjU0IDUuMDUgMTkuMjggNC45NiAxOS4wNSA1LjA1TDE2LjU2IDYuMDVDMTYuMDUgNS42NCAxNS41IDUuMzEgMTQuODcgNS4wNUwxNC41IDIuNDJDMTQuNDYgMi4xOCAxNC4yNSAyIDE0IDJIMTBDOS43NSAyIDkuNTQgMi4xOCA5LjUgMi40Mkw5LjEzIDUuMDdDOC41IDUuMzMgNy45NiA1LjY2IDcuNDQgNi4wN0w1IDUuMDVDNC43NyA0Ljk2IDQuNSA1LjA1IDQuMzkgNS4yN0wyLjM5IDguNzNDMi4yNiA4Ljk0IDIuMzEgOS4yMiAyLjUgOS4zN0w0LjU3IDExTDQuNSAxMkw0LjU3IDEzTDIuNDYgMTQuNjNDMi4yNiAxNC43OCAyLjIxIDE1LjA2IDIuMzQgMTUuMjdMNC4zNCAxOC43M0M0LjQ1IDE5IDQuNzQgMTkuMTEgNSAxOUw1IDE5TDcuNSAxOEM3Ljc0IDE4LjE5IDggMTguMzcgOC4yNiAxOC41M0w5LjkxIDE3LjEzQzkuMTQgMTYuOCA4LjQ2IDE2LjMxIDcuOTEgMTUuNjhMNS41IDE2LjY4TDQuNzMgMTUuMzhMNi44IDEzLjhDNi40IDEyLjYzIDYuNCAxMS4zNyA2LjggMTAuMkw0LjY5IDguNjVMNS40NCA3LjM1TDcuODUgOC4zNUM4LjYzIDcuNDUgOS42OCA2LjgyIDEwLjg1IDYuNTdMMTEuMjUgNEgxMi43NUwxMy4xMiA2LjYyQzE0LjI5IDYuODYgMTUuMzQgNy41IDE2LjEyIDguMzlMMTguNTMgNy4zOUwxOS4yOCA4LjY5TDE3LjIgMTAuMkMxNy4yOSAxMC40NiAxNy4zNiAxMC43MyAxNy40IDExSDE5LjRMMjEuNSA5LjM3QzIxLjcyIDkuMjMgMjEuNzggOC45NSAyMS42NiA4LjczTTEyIDhDOS43OSA4IDggOS44IDggMTJDOCAxMy45MSA5LjM1IDE1LjU0IDExLjIxIDE1LjkyTDE2IDExLjg2QzE1LjkzIDkuNzEgMTQuMTYgOCAxMiA4TTEyIDE0QzEwLjkgMTQgMTAgMTMuMTEgMTAgMTJTMTAuOSAxMCAxMiAxMCAxNCAxMC45IDE0IDEyIDEzLjExIDE0IDEyIDE0TTEyIDhDOS43OSA4IDggOS44IDggMTJDOCAxMy45MSA5LjM1IDE1LjU0IDExLjIxIDE1LjkyTDE2IDExLjg2QzE1LjkzIDkuNzEgMTQuMTYgOCAxMiA4TTEyIDE0QzEwLjkgMTQgMTAgMTMuMTEgMTAgMTJTMTAuOSAxMCAxMiAxMCAxNCAxMC45IDE0IDEyIDEzLjExIDE0IDEyIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvZ3MgPSBcIk0xNS45LDE4LjQ1QzE3LjI1LDE4LjQ1IDE4LjM1LDE3LjM1IDE4LjM1LDE2QzE4LjM1LDE0LjY1IDE3LjI1LDEzLjU1IDE1LjksMTMuNTVDMTQuNTQsMTMuNTUgMTMuNDUsMTQuNjUgMTMuNDUsMTZDMTMuNDUsMTcuMzUgMTQuNTQsMTguNDUgMTUuOSwxOC40NU0yMS4xLDE2LjY4TDIyLjU4LDE3Ljg0QzIyLjcxLDE3Ljk1IDIyLjc1LDE4LjEzIDIyLjY2LDE4LjI5TDIxLjI2LDIwLjcxQzIxLjE3LDIwLjg2IDIxLDIwLjkyIDIwLjgzLDIwLjg2TDE5LjA5LDIwLjE2QzE4LjczLDIwLjQ0IDE4LjMzLDIwLjY3IDE3LjkxLDIwLjg1TDE3LjY0LDIyLjdDMTcuNjIsMjIuODcgMTcuNDcsMjMgMTcuMywyM0gxNC41QzE0LjMyLDIzIDE0LjE4LDIyLjg3IDE0LjE1LDIyLjdMMTMuODksMjAuODVDMTMuNDYsMjAuNjcgMTMuMDcsMjAuNDQgMTIuNzEsMjAuMTZMMTAuOTYsMjAuODZDMTAuODEsMjAuOTIgMTAuNjIsMjAuODYgMTAuNTQsMjAuNzFMOS4xNCwxOC4yOUM5LjA1LDE4LjEzIDkuMDksMTcuOTUgOS4yMiwxNy44NEwxMC43LDE2LjY4TDEwLjY1LDE2TDEwLjcsMTUuMzFMOS4yMiwxNC4xNkM5LjA5LDE0LjA1IDkuMDUsMTMuODYgOS4xNCwxMy43MUwxMC41NCwxMS4yOUMxMC42MiwxMS4xMyAxMC44MSwxMS4wNyAxMC45NiwxMS4xM0wxMi43MSwxMS44NEMxMy4wNywxMS41NiAxMy40NiwxMS4zMiAxMy44OSwxMS4xNUwxNC4xNSw5LjI5QzE0LjE4LDkuMTMgMTQuMzIsOSAxNC41LDlIMTcuM0MxNy40Nyw5IDE3LjYyLDkuMTMgMTcuNjQsOS4yOUwxNy45MSwxMS4xNUMxOC4zMywxMS4zMiAxOC43MywxMS41NiAxOS4wOSwxMS44NEwyMC44MywxMS4xM0MyMSwxMS4wNyAyMS4xNywxMS4xMyAyMS4yNiwxMS4yOUwyMi42NiwxMy43MUMyMi43NSwxMy44NiAyMi43MSwxNC4wNSAyMi41OCwxNC4xNkwyMS4xLDE1LjMxTDIxLjE1LDE2TDIxLjEsMTYuNjhNNi42OSw4LjA3QzcuNTYsOC4wNyA4LjI2LDcuMzcgOC4yNiw2LjVDOC4yNiw1LjYzIDcuNTYsNC45MiA2LjY5LDQuOTJBMS41OCwxLjU4IDAgMCwwIDUuMTEsNi41QzUuMTEsNy4zNyA1LjgyLDguMDcgNi42OSw4LjA3TTEwLjAzLDYuOTRMMTEsNy42OEMxMS4wNyw3Ljc1IDExLjA5LDcuODcgMTEuMDMsNy45N0wxMC4xMyw5LjUzQzEwLjA4LDkuNjMgOS45Niw5LjY3IDkuODYsOS42M0w4Ljc0LDkuMThMOCw5LjYyTDcuODEsMTAuODFDNy43OSwxMC45MiA3LjcsMTEgNy41OSwxMUg1Ljc5QzUuNjcsMTEgNS41OCwxMC45MiA1LjU2LDEwLjgxTDUuNCw5LjYyTDQuNjQsOS4xOEwzLjUsOS42M0MzLjQxLDkuNjcgMy4zLDkuNjMgMy4yNCw5LjUzTDIuMzQsNy45N0MyLjI4LDcuODcgMi4zMSw3Ljc1IDIuMzksNy42OEwzLjM0LDYuOTRMMy4zMSw2LjVMMy4zNCw2LjA2TDIuMzksNS4zMkMyLjMxLDUuMjUgMi4yOCw1LjEzIDIuMzQsNS4wM0wzLjI0LDMuNDdDMy4zLDMuMzcgMy40MSwzLjMzIDMuNSwzLjM3TDQuNjMsMy44Mkw1LjQsMy4zOEw1LjU2LDIuMTlDNS41OCwyLjA4IDUuNjcsMiA1Ljc5LDJINy41OUM3LjcsMiA3Ljc5LDIuMDggNy44MSwyLjE5TDgsMy4zOEw4Ljc0LDMuODJMOS44NiwzLjM3QzkuOTYsMy4zMyAxMC4wOCwzLjM3IDEwLjEzLDMuNDdMMTEuMDMsNS4wM0MxMS4wOSw1LjEzIDExLjA3LDUuMjUgMTEsNS4zMkwxMC4wMyw2LjA2TDEwLjA2LDYuNUwxMC4wMyw2Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbGxhZ2UgPSBcIk01LDNDMy44OSwzIDMsMy44OSAzLDVWMTlDMywyMC4xMSAzLjg5LDIxIDUsMjFIMTFWM00xMywzVjExSDIxVjVDMjEsMy44OSAyMC4xMSwzIDE5LDNNMTMsMTNWMjFIMTlDMjAuMTEsMjEgMjEsMjAuMTEgMjEsMTlWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlDb2xsYXBzZUFsbCA9IFwiTTE0LDRINFYxNEgyVjRBMiwyIDAgMCwxIDQsMkgxNFY0TTE4LDZIOEEyLDIgMCAwLDAgNiw4VjE4SDhWOEgxOFY2TTIyLDEyVjIwQTIsMiAwIDAsMSAyMCwyMkgxMkEyLDIgMCAwLDEgMTAsMjBWMTJBMiwyIDAgMCwxIDEyLDEwSDIwQTIsMiAwIDAsMSAyMiwxMk0yMCwxNUgxMlYxN0gyMFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb2xsYXBzZUFsbE91dGxpbmUgPSBcIk00LDJBMiwyIDAgMCwwIDIsNFYxNEg0VjRIMTRWMkg0TTgsNkEyLDIgMCAwLDAgNiw4VjE4SDhWOEgxOFY2SDhNMjAsMTJWMjBIMTJWMTJIMjBNMjAsMTBIMTJBMiwyIDAgMCwwIDEwLDEyVjIwQTIsMiAwIDAsMCAxMiwyMkgyMEEyLDIgMCAwLDAgMjIsMjBWMTJBMiwyIDAgMCwwIDIwLDEwTTE5LDE3SDEzVjE1SDE5VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbG9ySGVscGVyID0gXCJNMCwyNEgyNFYyMEgwVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1hID0gXCJNNywzSDE2Ljk1VjEyLjk2TDEyLjk2LDIwLjk0SDhMMTEuOTcsMTIuOTZIN1YzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1hQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM00xNSwxM1Y3SDlWMTNIMTJMMTAsMTdIMTNMMTUsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWFCb3hPdXRsaW5lID0gXCJNMTAsMTdMMTIsMTNIOVY3SDE1VjEzTDEzLDE3SDEwTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tYUNpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTE1LDEzTDEzLDE3SDEwTDEyLDEzSDlWN0gxNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tYUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTAsMTdIMTNMMTUsMTNWN0g5VjEzSDEyTDEwLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnQgPSBcIk05LDIyQTEsMSAwIDAsMSA4LDIxVjE4SDRBMiwyIDAgMCwxIDIsMTZWNEMyLDIuODkgMi45LDIgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuOSA5Ljc1LDIyIDkuNSwyMlYyMkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRBY2NvdW50ID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xNiwxNFYxM0MxNiwxMS42NyAxMy4zMywxMSAxMiwxMUMxMC42NywxMSA4LDExLjY3IDgsMTNWMTRIMTZNMTIsNkEyLDIgMCAwLDAgMTAsOEEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDE0LDhBMiwyIDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEFjY291bnRPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTYsMTRIOFYxM0M4LDExLjY3IDEwLjY3LDExIDEyLDExQzEzLjMzLDExIDE2LDExLjY3IDE2LDEzVjE0TTEyLDZBMiwyIDAgMCwxIDE0LDhBMiwyIDAgMCwxIDEyLDEwQTIsMiAwIDAsMSAxMCw4QTIsMiAwIDAsMSAxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRBbGVydCA9IFwiTTkgMjJDOC40IDIyIDggMjEuNiA4IDIxVjE4SDRDMi45IDE4IDIgMTcuMSAyIDE2VjRDMiAyLjkgMi45IDIgNCAySDIwQzIxLjEgMiAyMiAyLjkgMjIgNFYxNkMyMiAxNy4xIDIxLjEgMTggMjAgMThIMTMuOUwxMC4yIDIxLjdDMTAgMjEuOSA5LjggMjIgOS41IDIySDlNMTMgMTFWNUgxMVYxMU0xMyAxNVYxM0gxMVYxNUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50QWxlcnRPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTMsMTBIMTFWNkgxM1YxME0xMywxNEgxMVYxMkgxM1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50QXJyb3dMZWZ0ID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjEgMi45IDE4IDQgMThIOFYyMUM4IDIxLjYgOC40IDIyIDkgMjJIOS41QzkuNyAyMiAxMCAyMS45IDEwLjIgMjEuN0wxMy45IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0xNiAxMUgxMS41TDEzLjMgMTIuOEwxMiAxNEw4IDEwTDEyIDZMMTMuMiA3LjJMMTEuNSA5SDE2VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRBcnJvd0xlZnRPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjEgMi45IDE4IDQgMThIOFYyMUM4IDIxLjYgOC40IDIyIDkgMjJIOS41QzkuNyAyMiAxMCAyMS45IDEwLjIgMjEuN0wxMy45IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkgxMy4xTDEwIDE5LjFWMTZINFY0SDIwVjE2TTE2IDExVjlIMTEuNUwxMy4zIDcuMkwxMiA2TDggMTBMMTIgMTRMMTMuMiAxMi44TDExLjUgMTFIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEFycm93UmlnaHQgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjE2QzIgMTcuMSAyLjkgMTggNCAxOEg4VjIxQzggMjEuNiA4LjQgMjIgOSAyMkg5LjVDOS43IDIyIDEwIDIxLjkgMTAuMiAyMS43TDEzLjkgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEyIDE0TDEwLjggMTIuOEwxMi42IDExSDhWOUgxMi41TDEwLjcgNy4yTDEyIDZMMTYgMTBMMTIgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEFycm93UmlnaHRPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjEgMi45IDE4IDQgMThIOFYyMUM4IDIxLjYgOC40IDIyIDkgMjJIOS41QzkuNyAyMiAxMCAyMS45IDEwLjIgMjEuN0wxMy45IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkgxMy4xTDEwIDE5LjFWMTZINFY0SDIwVjE2TTggOVYxMUgxMi41TDEwLjcgMTIuOEwxMiAxNEwxNiAxMEwxMiA2TDEwLjggNy4yTDEyLjUgOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRCb29rbWFyayA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xIDIuOSAxOCA0IDE4SDhWMjFDOCAyMS42IDguNCAyMiA5IDIySDkuNUM5LjcgMjIgMTAgMjEuOSAxMC4yIDIxLjdMMTMuOSAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTkgMTNMMTYuNSAxMS41TDE0IDEzVjVIMTlWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudEJvb2ttYXJrT3V0bGluZSA9IFwiTTkgMjJDOC40IDIyIDggMjEuNiA4IDIxVjE4SDRDMi45IDE4IDIgMTcuMSAyIDE2VjRDMiAyLjkgMi45IDIgNCAySDIwQzIxLjEgMiAyMiAyLjkgMjIgNFYxNkMyMiAxNy4xIDIxLjEgMTggMjAgMThIMTMuOUwxMC4yIDIxLjdDMTAgMjEuOSA5LjggMjIgOS41IDIySDlNMTAgMTZWMTkuMUwxMy4xIDE2SDIwVjRINFYxNkgxME0xOCAxNFY2SDEzVjE0TDE1LjUgMTIuNUwxOCAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50Q2hlY2sgPSBcIk05LDIyQTEsMSAwIDAsMSA4LDIxVjE4SDRBMiwyIDAgMCwxIDIsMTZWNEMyLDIuODkgMi45LDIgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuOSA5Ljc1LDIyIDkuNSwyMlYyMkg5TTEwLDE1TDE4LDdMMTYuNTksNS41OEwxMCwxMi4xN0w3LjQxLDkuNTlMNiwxMUwxMCwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50Q2hlY2tPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTYuNSw4TDExLDEzLjVMNy41LDEwTDguOTEsOC41OUwxMSwxMC42N0wxNS4wOSw2LjU5TDE2LjUsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50RWRpdCA9IFwiTTIwIDJINEMyLjg5IDIgMiAyLjg5IDIgNFYxNkMyIDE3LjExIDIuOSAxOCA0IDE4SDhWMjFDOCAyMS41NSA4LjQ1IDIyIDkgMjJIOS41QzkuNzUgMjIgMTAgMjEuOSAxMC4yIDIxLjcxTDEzLjkgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi44OSAyMS4xIDIgMjAgMk05LjA4IDE1SDdWMTIuOTFMMTMuMTcgNi43MkwxNS4yNCA4LjhMOS4wOCAxNU0xNi44NCA3LjJMMTUuODMgOC4yMUwxMy43NiA2LjE4TDE0Ljc3IDUuMTZDMTQuOTcgNC45NSAxNS4zMSA0Ljk0IDE1LjU1IDUuMTZMMTYuODQgNi40MUMxNy4wNSA2LjYyIDE3LjA2IDYuOTYgMTYuODQgNy4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRFZGl0T3V0bGluZSA9IFwiTTkgMjJDOC40NSAyMiA4IDIxLjU1IDggMjFWMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAyLjg5IDIuOSAyIDQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDEzLjlMMTAuMiAyMS43MUMxMCAyMS45IDkuNzUgMjIgOS41IDIySDlNMTAgMTZWMTkuMDhMMTMuMDggMTZIMjBWNEg0VjE2SDEwTTE1Ljg0IDguMkwxNC44MyA5LjIxTDEyLjc2IDcuMThMMTMuNzcgNi4xNkMxMy45NyA1Ljk1IDE0LjMxIDUuOTQgMTQuNTUgNi4xNkwxNS44NCA3LjQxQzE2LjA1IDcuNjIgMTYuMDYgNy45NiAxNS44NCA4LjJNOCAxMS45MUwxMi4xNyA3LjcyTDE0LjI0IDkuOEwxMC4wOCAxNEg4VjExLjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRFeWUgPSBcIk0yMCwxMlYxNkMyMCwxNy4xMSAxOS4xMSwxOCAxOCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuODkgOS43NiwyMiA5LjUsMjJIOUExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjZDMiw0Ljg5IDIuOSw0IDQsNEg5LjVDOC45NSw0LjY3IDguNSw1LjQyIDguMTQsNi4yNUw3Ljg1LDdMOC4xNCw3Ljc1QzkuNDMsMTAuOTQgMTIuNSwxMyAxNiwxM0MxNy40NCwxMyAxOC44LDEyLjYzIDIwLDEyTTE2LDZDMTYuNTYsNiAxNyw2LjQ0IDE3LDdDMTcsNy41NiAxNi41Niw4IDE2LDhDMTUuNDQsOCAxNSw3LjU2IDE1LDdDMTUsNi40NCAxNS40NCw2IDE2LDZNMTYsM0MxOC43MywzIDIxLjA2LDQuNjYgMjIsN0MyMS4wNiw5LjM0IDE4LjczLDExIDE2LDExQzEzLjI3LDExIDEwLjk0LDkuMzQgMTAsN0MxMC45NCw0LjY2IDEzLjI3LDMgMTYsM00xNiw0LjVBMi41LDIuNSAwIDAsMCAxMy41LDdBMi41LDIuNSAwIDAsMCAxNiw5LjVBMi41LDIuNSAwIDAsMCAxOC41LDdBMi41LDIuNSAwIDAsMCAxNiw0LjVcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50RXllT3V0bGluZSA9IFwiTTE2LDZDMTYuNTYsNiAxNyw2LjQ0IDE3LDdDMTcsNy41NiAxNi41Niw4IDE2LDhDMTUuNDQsOCAxNSw3LjU2IDE1LDdDMTUsNi40NCAxNS40NCw2IDE2LDZNMTYsM0MxOC43MywzIDIxLjA2LDQuNjYgMjIsN0MyMS4wNiw5LjM0IDE4LjczLDExIDE2LDExQzEzLjI3LDExIDEwLjk0LDkuMzQgMTAsN0MxMC45NCw0LjY2IDEzLjI3LDMgMTYsM00xNiw0LjVBMi41LDIuNSAwIDAsMCAxMy41LDdBMi41LDIuNSAwIDAsMCAxNiw5LjVBMi41LDIuNSAwIDAsMCAxOC41LDdBMi41LDIuNSAwIDAsMCAxNiw0LjVNMTgsMTIuNzVWMTZIMTMuMDhMMTAsMTkuMDhWMTZINFY2SDguMjdDOC41OSw1LjI3IDksNC42IDkuNSw0SDRBMiwyIDAgMCwwIDIsNlYxNkMyLDE3LjExIDIuOSwxOCA0LDE4SDhWMjFBMSwxIDAgMCwwIDksMjJIOS41QzkuNzUsMjIgMTAsMjEuOSAxMC4yLDIxLjcxTDEzLjksMThIMThDMTkuMTEsMTggMjAsMTcuMTEgMjAsMTZWMTJDMTkuMzcsMTIuMzMgMTguNywxMi41OCAxOCwxMi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50Rmxhc2ggPSBcIk0yMi41IDE2SDIwLjNMMjIgMTJIMTdWMThIMTlWMjNMMjIuNSAxNk0xNSAxOEgxMy45TDEwLjIgMjEuN0MxMCAyMS45IDkuOCAyMiA5LjUgMjJIOUM4LjQgMjIgOCAyMS42IDggMjFWMThINEMyLjkgMTggMiAxNy4xIDIgMTZWNEMyIDIuOSAyLjkgMiA0IDJIMjBDMjEuMSAyIDIyIDIuOSAyMiA0VjEwSDE1VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRGbGFzaE91dGxpbmUgPSBcIk0yMi41IDE2SDIwLjNMMjIgMTJIMTdWMThIMTlWMjNMMjIuNSAxNk0xNSAxOEgxMy45TDEwLjIgMjEuN0MxMCAyMS45IDkuOCAyMiA5LjUgMjJIOUM4LjQgMjIgOCAyMS42IDggMjFWMThINEMyLjkgMTggMiAxNy4xIDIgMTZWNEMyIDIuOSAyLjkgMiA0IDJIMjBDMjEuMSAyIDIyIDIuOSAyMiA0VjEwSDIwVjRINFYxNkgxMFYxOS4xTDEzLjEgMTZIMTVWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudE1pbnVzID0gXCJNMjAgMkg0QzIuOSAyIDIgMi44OSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4VjIxQzggMjEuNTUgOC40NSAyMiA5IDIySDkuNUM5Ljc1IDIyIDEwIDIxLjkgMTAuMiAyMS43MUwxMy45IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0xNiAxMUg4VjlIMTZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudE1pbnVzT3V0bGluZSA9IFwiTTE2IDExSDhWOUgxNlYxMU0yMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDEzLjlMMTAuMiAyMS43MUMxMCAyMS45IDkuNzUgMjIgOS41IDIySDlDOC40NSAyMiA4IDIxLjU1IDggMjFWMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAyLjg5IDIuOSAyIDQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0TTIwIDRINFYxNkgxMFYxOS4wOEwxMy4wOCAxNkgyMFY0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudE11bHRpcGxlID0gXCJNMTIsMjNBMSwxIDAgMCwxIDExLDIyVjE5SDdBMiwyIDAgMCwxIDUsMTdWN0EyLDIgMCAwLDEgNyw1SDIxQTIsMiAwIDAsMSAyMyw3VjE3QTIsMiAwIDAsMSAyMSwxOUgxNi45TDEzLjIsMjIuNzFDMTMsMjIuODkgMTIuNzYsMjMgMTIuNSwyM0gxMk0zLDE1SDFWM0EyLDIgMCAwLDEgMywxSDE5VjNIM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50TXVsdGlwbGVPdXRsaW5lID0gXCJNMTIsMjNBMSwxIDAgMCwxIDExLDIyVjE5SDdBMiwyIDAgMCwxIDUsMTdWN0M1LDUuODkgNS45LDUgNyw1SDIxQTIsMiAwIDAsMSAyMyw3VjE3QTIsMiAwIDAsMSAyMSwxOUgxNi45TDEzLjIsMjIuNzFDMTMsMjIuOSAxMi43NSwyMyAxMi41LDIzVjIzSDEyTTEzLDE3VjIwLjA4TDE2LjA4LDE3SDIxVjdIN1YxN0gxM00zLDE1SDFWM0EyLDIgMCAwLDEgMywxSDE5VjNIM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50T2ZmID0gXCJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTYuMTEgMThIMTMuOUwxMC4yIDIxLjcxQzEwIDIxLjkgOS43NSAyMiA5LjUgMjJIOUM4LjQ1IDIyIDggMjEuNTUgOCAyMVYxOEg0QzIuOSAxOCAyIDE3LjExIDIgMTZWNCAzLjlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0yMiAxNlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJINS4yTDIwLjk1IDE3Ljc1QzIxLjU3IDE3LjQxIDIyIDE2Ljc2IDIyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRPZmZPdXRsaW5lID0gXCJNNy4yIDRMNS4yIDJIMjBDMjEuMTEgMiAyMiAyLjkgMjIgNFYxNkMyMiAxNi43NiAyMS41NyAxNy40MSAyMC45NSAxNy43NUwxOS4yIDE2SDIwVjRINy4yTTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE2LjExIDE4SDEzLjlMMTAuMiAyMS43MUMxMCAyMS45IDkuNzUgMjIgOS41IDIySDlDOC40NSAyMiA4IDIxLjU1IDggMjFWMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAzLjk3IDIgMy45MyAyIDMuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE0LjExIDE2TDQgNS44OVYxNkgxMFYxOS4wOEwxMy4wOCAxNkgxNC4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50T3V0bGluZSA9IFwiTTksMjJBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlNMTAsMTZWMTkuMDhMMTMuMDgsMTZIMjBWNEg0VjE2SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRQbHVzID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJIOU0xMSw2VjlIOFYxMUgxMVYxNEgxM1YxMUgxNlY5SDEzVjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFBsdXNPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNMTEsNkgxM1Y5SDE2VjExSDEzVjE0SDExVjExSDhWOUgxMVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRQcm9jZXNzaW5nID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xNywxMVY5SDE1VjExSDE3TTEzLDExVjlIMTFWMTFIMTNNOSwxMVY5SDdWMTFIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50UHJvY2Vzc2luZ091dGxpbmUgPSBcIk05LDIyQTEsMSAwIDAsMSA4LDIxVjE4SDRBMiwyIDAgMCwxIDIsMTZWNEMyLDIuODkgMi45LDIgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuOSA5Ljc1LDIyIDkuNSwyMlYyMkg5TTEwLDE2VjE5LjA4TDEzLjA4LDE2SDIwVjRINFYxNkgxME0xNywxMUgxNVY5SDE3VjExTTEzLDExSDExVjlIMTNWMTFNOSwxMUg3VjlIOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50UXVlc3Rpb24gPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJNMTIuMTksNS41QzExLjMsNS41IDEwLjU5LDUuNjggMTAuMDUsNi4wNEM5LjUsNi40IDkuMjIsNyA5LjI3LDcuNjlIMTEuMjRDMTEuMjQsNy40MSAxMS4zNCw3LjIgMTEuNSw3LjA2QzExLjcsNi45MiAxMS45Miw2Ljg1IDEyLjE5LDYuODVDMTIuNSw2Ljg1IDEyLjc3LDYuOTMgMTIuOTUsNy4xMUMxMy4xMyw3LjI4IDEzLjIyLDcuNSAxMy4yMiw3LjhDMTMuMjIsOC4wOCAxMy4xNCw4LjMzIDEzLDguNTRDMTIuODMsOC43NiAxMi42Miw4Ljk0IDEyLjM2LDkuMDhDMTEuODQsOS40IDExLjUsOS42OCAxMS4yOSw5LjkyQzExLjEsMTAuMTYgMTEsMTAuNSAxMSwxMUgxM0MxMywxMC43MiAxMy4wNSwxMC41IDEzLjE0LDEwLjMyQzEzLjIzLDEwLjE1IDEzLjQsMTAgMTMuNjYsOS44NUMxNC4xMiw5LjY0IDE0LjUsOS4zNiAxNC43OSw5QzE1LjA4LDguNjMgMTUuMjMsOC4yNCAxNS4yMyw3LjhDMTUuMjMsNy4xIDE0Ljk2LDYuNTQgMTQuNDIsNi4xMkMxMy44OCw1LjcxIDEzLjEzLDUuNSAxMi4xOSw1LjVNMTEsMTJWMTRIMTNWMTJIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFF1ZXN0aW9uT3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjE2QTIsMiAwIDAsMCA0LDE4SDhWMjFBMSwxIDAgMCwwIDksMjJIOS41VjIyQzkuNzUsMjIgMTAsMjEuOSAxMC4yLDIxLjcxTDEzLjksMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRDMjIsMi44OSAyMS4xLDIgMjAsMkg0TTQsNEgyMFYxNkgxMy4wOEwxMCwxOS4wOFYxNkg0VjRNMTIuMTksNS41QzExLjMsNS41IDEwLjU5LDUuNjggMTAuMDUsNi4wNEM5LjUsNi40IDkuMjIsNyA5LjI3LDcuNjlDMC4yMSw3LjY5IDYuNTcsNy42OSAxMS4yNCw3LjY5QzExLjI0LDcuNDEgMTEuMzQsNy4yIDExLjUsNy4wNkMxMS43LDYuOTIgMTEuOTIsNi44NSAxMi4xOSw2Ljg1QzEyLjUsNi44NSAxMi43Nyw2LjkzIDEyLjk1LDcuMTFDMTMuMTMsNy4yOCAxMy4yMiw3LjUgMTMuMjIsNy44QzEzLjIyLDguMDggMTMuMTQsOC4zMyAxMyw4LjU0QzEyLjgzLDguNzYgMTIuNjIsOC45NCAxMi4zNiw5LjA4QzExLjg0LDkuNCAxMS41LDkuNjggMTEuMjksOS45MkMxMS4xLDEwLjE2IDExLDEwLjUgMTEsMTFIMTNDMTMsMTAuNzIgMTMuMDUsMTAuNSAxMy4xNCwxMC4zMkMxMy4yMywxMC4xNSAxMy40LDEwIDEzLjY2LDkuODVDMTQuMTIsOS42NCAxNC41LDkuMzYgMTQuNzksOUMxNS4wOCw4LjYzIDE1LjIzLDguMjQgMTUuMjMsNy44QzE1LjIzLDcuMSAxNC45Niw2LjU0IDE0LjQyLDYuMTJDMTMuODgsNS43MSAxMy4xMyw1LjUgMTIuMTksNS41TTExLDEyVjE0SDEzVjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRRdW90ZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xIDIuOSAxOCA0IDE4SDhWMjFDOCAyMS42IDguNCAyMiA5IDIySDkuNUM5LjcgMjIgMTAgMjEuOSAxMC4yIDIxLjdMMTMuOSAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTEgMTNIN1Y4LjhMOC4zIDZIMTAuM0w4LjkgOUgxMVYxM00xNyAxM0gxM1Y4LjhMMTQuMyA2SDE2LjNMMTQuOSA5SDE3VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRRdW90ZU91dGxpbmUgPSBcIk05IDIyQzguNCAyMiA4IDIxLjYgOCAyMVYxOEg0QzIuOSAxOCAyIDE3LjEgMiAxNlY0QzIgMi45IDIuOSAyIDQgMkgyMEMyMS4xIDIgMjIgMi45IDIyIDRWMTZDMjIgMTcuMSAyMS4xIDE4IDIwIDE4SDEzLjlMMTAuMiAyMS43QzEwIDIxLjkgOS44IDIyIDkuNSAyMkg5TTEwIDE2VjE5LjFMMTMuMSAxNkgyMFY0SDRWMTZIMTBNMTYuMyA2TDE0LjkgOUgxN1YxM0gxM1Y4LjhMMTQuMyA2SDE2LjNNMTAuMyA2TDguOSA5SDExVjEzSDdWOC44TDguMyA2SDEwLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFJlbW92ZSA9IFwiTTksMjJBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlNOS40MSw2TDgsNy40MUwxMC41OSwxMEw4LDEyLjU5TDkuNDEsMTRMMTIsMTEuNDFMMTQuNTksMTRMMTYsMTIuNTlMMTMuNDEsMTBMMTYsNy40MUwxNC41OSw2TDEyLDguNTlMOS40MSw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRSZW1vdmVPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNOS40MSw2TDEyLDguNTlMMTQuNTksNkwxNiw3LjQxTDEzLjQxLDEwTDE2LDEyLjU5TDE0LjU5LDE0TDEyLDExLjQxTDkuNDEsMTRMOCwxMi41OUwxMC41OSwxMEw4LDcuNDFMOS40MSw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRTZWFyY2ggPSBcIk0xNS41LDJDMTgsMiAyMCw0IDIwLDYuNUMyMCw3LjM4IDE5Ljc1LDguMiAxOS4zMSw4Ljg5TDIyLjQxLDEyTDIxLDEzLjM5TDE3Ljg5LDEwLjMxQzE3LjIsMTAuNzUgMTYuMzgsMTEgMTUuNSwxMUMxMywxMSAxMSw5IDExLDYuNUMxMSw0IDEzLDIgMTUuNSwyTTE1LjUsNEEyLjUsMi41IDAgMCwwIDEzLDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsOUEyLjUsMi41IDAgMCwwIDE4LDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsNE00LDRIOS41QzkuMTksNC43OSA5LDUuNjQgOSw2LjVBNi41LDYuNSAwIDAsMCAxNS41LDEzQzE2LjE4LDEzIDE2LjgzLDEyLjg5IDE3LjQ2LDEyLjY5TDIwLDE1LjIzVjE2QTIsMiAwIDAsMSAxOCwxOEgxMy45TDEwLjIsMjEuNzFDMTAsMjEuODkgOS43NiwyMiA5LjUsMjJIOUExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjZBMiwyIDAgMCwxIDQsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50U2VhcmNoT3V0bGluZSA9IFwiTTQsNEg5LjVDOS4yNSw0LjY0IDkuMDksNS4zMSA5LjA0LDZINFYxNkgxMFYxOS4wOEwxMy4wOCwxNkgxOFYxMy4yM0wyMCwxNS4yM1YxNkEyLDIgMCAwLDEgMTgsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJIOUExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjZDMiw0Ljg5IDIuOSw0IDQsNE0xNS41LDJDMTgsMiAyMCw0IDIwLDYuNUMyMCw3LjM4IDE5Ljc1LDguMiAxOS4zMSw4Ljg5TDIyLjQxLDEyTDIxLDEzLjM5TDE3Ljg5LDEwLjMxQzE3LjIsMTAuNzUgMTYuMzgsMTEgMTUuNSwxMUMxMywxMSAxMSw5IDExLDYuNUMxMSw0IDEzLDIgMTUuNSwyTTE1LjUsNEEyLjUsMi41IDAgMCwwIDEzLDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsOUEyLjUsMi41IDAgMCwwIDE4LDYuNUEyLjUsMi41IDAgMCwwIDE1LjUsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21tZW50VGV4dCA9IFwiTTksMjJBMSwxIDAgMCwxIDgsMjFWMThINEEyLDIgMCAwLDEgMiwxNlY0QzIsMi44OSAyLjksMiA0LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDEzLjlMMTAuMiwyMS43MUMxMCwyMS45IDkuNzUsMjIgOS41LDIyVjIySDlNNSw1VjdIMTlWNUg1TTUsOVYxMUgxM1Y5SDVNNSwxM1YxNUgxNVYxM0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRUZXh0TXVsdGlwbGUgPSBcIk0zLDE1SDFWM0EyLDIgMCAwLDEgMywxSDE5VjNIM1YxNU0xMiwyM0ExLDEgMCAwLDEgMTEsMjJWMTlIN0EyLDIgMCAwLDEgNSwxN1Y3QTIsMiAwIDAsMSA3LDVIMjFBMiwyIDAgMCwxIDIzLDdWMTdBMiwyIDAgMCwxIDIxLDE5SDE2LjlMMTMuMiwyMi43MUMxMywyMi44OSAxMi43NiwyMyAxMi41LDIzSDEyTTksOVYxMUgxOVY5SDlNOSwxM1YxNUgxN1YxM0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbW1lbnRUZXh0TXVsdGlwbGVPdXRsaW5lID0gXCJNMTIsMjNBMSwxIDAgMCwxIDExLDIyVjE5SDdBMiwyIDAgMCwxIDUsMTdWN0EyLDIgMCAwLDEgNyw1SDIxQTIsMiAwIDAsMSAyMyw3VjE3QTIsMiAwIDAsMSAyMSwxOUgxNi45TDEzLjIsMjIuNzFDMTMsMjIuODkgMTIuNzYsMjMgMTIuNSwyM0gxMk0xMywxN1YyMC4wOEwxNi4wOCwxN0gyMVY3SDdWMTdIMTNNMywxNUgxVjNBMiwyIDAgMCwxIDMsMUgxOVYzSDNWMTVNOSw5SDE5VjExSDlWOU05LDEzSDE3VjE1SDlWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tbWVudFRleHRPdXRsaW5lID0gXCJNOSwyMkExLDEgMCAwLDEgOCwyMVYxOEg0QTIsMiAwIDAsMSAyLDE2VjRDMiwyLjg5IDIuOSwyIDQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTMuOUwxMC4yLDIxLjcxQzEwLDIxLjkgOS43NSwyMiA5LjUsMjJWMjJIOU0xMCwxNlYxOS4wOEwxMy4wOCwxNkgyMFY0SDRWMTZIMTBNNiw3SDE4VjlINlY3TTYsMTFIMTVWMTNINlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXJlID0gXCJNMTksM0gxNFY1SDE5VjE4TDE0LDEyVjIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNNMTAsMThINUwxMCwxMk0xMCwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTBWMjNIMTJWMUgxMFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbXBhcmVIb3Jpem9udGFsID0gXCJNOSAxNEgyVjE2SDlWMTlMMTMgMTVMOSAxMVYxNE0xNSAxM1YxMEgyMlY4SDE1VjVMMTEgOUwxNSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXJlVmVydGljYWwgPSBcIk0xNCAxNVYyMkgxNlYxNUgxOUwxNSAxMUwxMSAxNUgxNE0xMyA5SDEwVjJIOFY5SDVMOSAxM0wxMyA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbXBhc3MgPSBcIk0xNC4xOSwxNC4xOUw2LDE4TDkuODEsOS44MUwxOCw2TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDEwLjlBMS4xLDEuMSAwIDAsMCAxMC45LDEyQTEuMSwxLjEgMCAwLDAgMTIsMTMuMUExLjEsMS4xIDAgMCwwIDEzLjEsMTJBMS4xLDEuMSAwIDAsMCAxMiwxMC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbXBhc3NPZmYgPSBcIk0xLDMuNUwyLjI4LDIuMjVMMjEuNzUsMjEuNzJMMjAuNSwyM0wxNy43LDIwLjIyQzE2LjA4LDIxLjM0IDE0LjEyLDIyIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJDMiw5Ljg4IDIuNjYsNy45MiAzLjc4LDYuM0wxLDMuNU02LDE4TDEyLjQ3LDE1TDksMTEuNTNMNiwxOE0xOCw2TDExLjU2LDlMNi4zMywzLjc2QzcuOTQsMi42NSA5LjksMiAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQzIyLDE0LjEgMjEuMzUsMTYuMDYgMjAuMjQsMTcuNjdMMTUsMTIuNDRMMTgsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXNzT2ZmT3V0bGluZSA9IFwiTTEsMy41TDIuMjgsMi4yNUwyMS43NSwyMS43MkwyMC41LDIzTDE3LjcsMjAuMjJDMTYuMDgsMjEuMzQgMTQuMTIsMjIgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkMyLDkuODggMi42Niw3LjkyIDMuNzgsNi4zTDEsMy41TTcsMTdMOS4zOSwxMS45MUw1LjIzLDcuNzRDNC40NSw5IDQsMTAuNDQgNCwxMkE4LDggMCAwLDAgMTIsMjBDMTMuNTYsMjAgMTUsMTkuNTUgMTYuMjYsMTguNzdMMTIuMDksMTQuNjFMNywxN00xNyw3TDE0LjYyLDEyLjA1TDExLjk1LDkuMzhMMTcsN00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQzIyLDE0LjEgMjEuMzUsMTYuMDYgMjAuMjQsMTcuNjdMMTguOCwxNi4yMkMxOS41NiwxNSAyMCwxMy41NSAyMCwxMkE4LDggMCAwLDAgMTIsNEMxMC40NSw0IDksNC40NCA3Ljc4LDUuMkw2LjMzLDMuNzZDNy45NCwyLjY1IDkuOSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29tcGFzc091dGxpbmUgPSBcIk03LDE3TDEwLjIsMTAuMkwxNyw3TDEzLjgsMTMuOEw3LDE3TTEyLDExLjFBMC45LDAuOSAwIDAsMCAxMS4xLDEyQTAuOSwwLjkgMCAwLDAgMTIsMTIuOUEwLjksMC45IDAgMCwwIDEyLjksMTJBMC45LDAuOSAwIDAsMCAxMiwxMS4xTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb21wYXNzUm9zZSA9IFwiTTE1IDlMMTIgMEw5IDlMMCAxMkw5IDE1TDEyIDI0TDE1IDE1TDI0IDEyTDE1IDlNNCAxMkwxMCAxMEwxMSAxMkg0TTEyIDIwTDEwIDE0TDEyIDEzVjIwTTEyIDRMMTQgMTBMMTIgMTFWNE0xNCAxNEwxMyAxMkgyMEwxNCAxNE04LjcgMTcuM0w1IDE5TDYuNyAxNS4zTDguMyAxNS44TDguNyAxNy4zTTE3LjMgMTUuM0wxOSAxOUwxNS4zIDE3LjNMMTUuOCAxNS43TDE3LjMgMTUuM002LjcgOC43TDUgNUw4LjcgNi43TDguMiA4LjJMNi43IDguN00xNS4zIDYuN0wxOSA1TDE3LjMgOC43TDE1LjcgOC4yTDE1LjMgNi43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbmNvdXJzZUNpID0gXCJNMTAuOTQgMTIuMDlBMS4wNiAxLjA2IDAgMSAwIDExLjkxIDEwLjk1QTEuMDYgMS4wNiAwIDAgMCAxMC45NCAxMi4wOU0xMy41NCAxMy4yMUEyLjYyIDIuNjIgMCAwIDEgMTIuNTggMTMuODhMMTIuNTcgMTMuODlBMTEuMTcgMTEuMTcgMCAwIDAgMTMuODcgMTYuOTJBNC44MyA0LjgzIDAgMCAxIDEyLjkyIDE3LjNBNC45IDQuOSAwIDAgMSAxMi4yNCAxNy40NEwxMi4xNiAxNy40NUwxMi4wNiAxNy40NkwxMS44NyAxNy40N0MxMS43NSAxNy40NyAxMS42NCAxNy41IDExLjUgMTcuNDdBNSA1IDAgMCAxIDEwLjc5IDE3LjRBNS4xMyA1LjEzIDAgMCAxIDEwLjA5IDE3LjIzQTQuNzggNC43OCAwIDAgMSA5LjQ2IDE3QTUgNSAwIDAgMSA4LjkzIDE2LjY4QTQuNDUgNC40NSAwIDAgMSA4LjUgMTYuMzhDOC4zOCAxNi4yOSA4LjI4IDE2LjE5IDguMiAxNi4xMkw3Ljk1IDE1Ljg3QzcuOTUgMTUuODcgOCAxNS45NyA4LjE2IDE2LjE1QzguMjQgMTYuMjMgOC4zMiAxNi4zNCA4LjQ0IDE2LjQ1QTQuOTMgNC45MyAwIDAgMCA4LjgyIDE2LjgyQTUuMjEgNS4yMSAwIDAgMCA5LjMzIDE3LjJBNS4wOCA1LjA4IDAgMCAwIDkuOTYgMTcuNTZBNS40MyA1LjQzIDAgMCAwIDEwLjY4IDE3Ljg1QTUuNSA1LjUgMCAwIDAgMTEuNDYgMTguMDNDMTEuNiAxOC4wNiAxMS43NCAxOC4wNyAxMS44OCAxOC4wOEwxMi4wNyAxOC4xSDEyLjI3QTUuNSA1LjUgMCAwIDAgMTMuMDcgMTguMDVBNS42MSA1LjYxIDAgMCAwIDE0LjM5IDE3LjdRMTQuNjMgMTguMDMgMTQuOSAxOC4zNEwxNC44NyAxOC4zNkwxNC42NiAxOC41SDE0LjYyQzE0LjU5IDE4LjUzIDE0LjY3IDE4LjUgMTQuNjYgMTguNUgxNC42NEwxNC41OCAxOC41NEwxNC40NCAxOC42MUwxNC4zNyAxOC42NEwxNC4zMyAxOC42NkwxNC4zMiAxOC42N0gxNC4zMUMxNC4zIDE4LjY4IDE0LjM2IDE4LjY2IDE0LjMzIDE4LjY3SDE0LjMyTDE0LjE3IDE4Ljc0UTE0LjA5IDE4Ljc3IDE0IDE4LjgxVjE4LjgyTDEzLjkzIDE4Ljg0TDEzLjg0IDE4Ljg3QTYuNSA2LjUgMCAwIDEgMTIuMjUgMTkuMjZBNi40IDYuNCAwIDAgMSAxMS4zMSAxOS4zSDExLjE5TDExLjA3IDE5LjI5TDEwLjgxIDE5LjI3QzEwLjY1IDE5LjI0IDEwLjUgMTkuMjMgMTAuMzMgMTkuMkE2LjU5IDYuNTkgMCAwIDEgOC41IDE4LjU3QzguMzUgMTguNSA4LjIxIDE4LjQzIDguMDggMTguMzVDNy45NSAxOC4yNyA3LjgzIDE4LjE5IDcuNzEgMTguMTFBNi42NCA2LjY0IDAgMCAxIDcuMDcgMTcuNkE2LjM1IDYuMzUgMCAwIDEgNi41NyAxNy4xMUM2LjQzIDE2Ljk2IDYuMzIgMTYuODIgNi4yMiAxNi43QzYuMTMgMTYuNTggNi4wNiAxNi41IDYgMTYuNDJMNS45NCAxNi4zMkw2IDE2LjQzQzYuMDQgMTYuNSA2LjEgMTYuNiA2LjE4IDE2LjczQzYuMjYgMTYuODYgNi4zNiAxNyA2LjUgMTcuMThBNi41IDYuNSAwIDAgMCA2Ljk0IDE3LjczQTYuODYgNi44NiAwIDAgMCA3LjU1IDE4LjMxQzcuNjcgMTguNDEgNy43OCAxOC41IDcuOTEgMTguNkM4LjA0IDE4LjcgOC4xNyAxOC43OSA4LjMxIDE4Ljg4QTcuMTIgNy4xMiAwIDAgMCA5LjIxIDE5LjM3QTcuMiA3LjIgMCAwIDAgMTAuMiAxOS43NEMxMC4zNyAxOS44IDEwLjU1IDE5LjgzIDEwLjczIDE5Ljg3TDExIDE5LjkyTDExLjExIDE5Ljk0TDExLjI1IDE5Ljk2QTcuMjcgNy4yNyAwIDAgMCAxMi4yOSAyMC4wM0E3LjM4IDcuMzggMCAwIDAgMTQuMTQgMTkuNzdMMTQuMjMgMTkuNzRMMTQuMjggMTkuNzNMMTQuMzQgMTkuNzFDMTQuNCAxOS42OSAxNC40NiAxOS42OCAxNC41IDE5LjY2TDE0LjY4IDE5LjZMMTQuODUgMTkuNTRMMTUgMTkuNUwxNS4wNiAxOS40NUgxNS4wOEwxNS4xMyAxOS40M0wxNS4xNCAxOS40MkwxNS4xNyAxOS40MUwxNS4zOSAxOS4zTDE1LjY3IDE5LjE2QzE1Ljg2IDE5LjM0IDE2LjA2IDE5LjUgMTYuMjYgMTkuNjlDMTYuMjYgMTkuNjkgMTcuMjMgMjAuNjkgMTcuNzYgMjAuMjhDMTguMjYgMTkuODkgMTcuNjggMTguNjggMTcuNjggMTguNjhBMTEuMiAxMS4yIDAgMCAwIDEzLjU0IDEzLjIxTTEwLjE2IDExLjU3TDEwLjE1IDExLjU2QTExLjE4IDExLjE4IDAgMCAwIDYuOTEgMTEuMTFBNC43MiA0LjcyIDAgMCAxIDcuMzQgOS4zOUw3LjM4IDkuMzFMNy40MiA5LjIzTDcuNSA5LjA2QzcuNTcgOC45NiA3LjYyIDguODUgNy42OSA4Ljc1QTQuOTcgNC45NyAwIDAgMSA4LjE0IDguMTdBNS4wNSA1LjA1IDAgMCAxIDguNjYgNy42N0E0Ljc3IDQuNzcgMCAwIDEgOS4yIDcuMjdBNS4wNiA1LjA2IDAgMCAxIDkuNzQgN0E0Ljg4IDQuODggMCAwIDEgMTAuMjIgNi43OEMxMC4zNyA2LjcyIDEwLjUgNi42OSAxMC42MSA2LjY2QzEwLjgyIDYuNiAxMC45NSA2LjU4IDEwLjk1IDYuNThTMTAuODIgNi41OSAxMC42IDYuNjFDMTAuNSA2LjYzIDEwLjM1IDYuNjQgMTAuMTkgNi42OEE0Ljk0IDQuOTQgMCAwIDAgOS42NyA2LjgyQTUuMzQgNS4zNCAwIDAgMCA5LjA4IDcuMDVBNS4wOCA1LjA4IDAgMCAwIDguNDUgNy4zOUE1LjQ3IDUuNDcgMCAwIDAgNy44MiA3Ljg0QTUuNTUgNS41NSAwIDAgMCA3LjI1IDguNDFDNy4xNiA4LjUgNy4wOCA4LjYzIDcgOC43NEw2Ljg4IDguODlMNi44MiA4Ljk3TDYuNzYgOS4wNkE1LjUgNS41IDAgMCAwIDYuMzggOS43N0E1LjYxIDUuNjEgMCAwIDAgNS45NyAxMS4xNEw1Ljk2IDExLjE2QzUuNyAxMS4xOCA1LjQzIDExLjIxIDUuMTYgMTEuMjZWMTEuMTJMNS4xNyAxMC44N1YxMC44MkM1LjE3IDEwLjc4IDUuMTYgMTAuODggNS4xNiAxMC44N1YxMC44NEw1LjE3IDEwLjc3TDUuMTggMTAuNjJMNS4xOSAxMC41NFYxMC41SDUuMlYxMC40N0M1LjIgMTAuNDYgNS4xOSAxMC41IDUuMTkgMTAuNUw1LjIyIDEwLjMyTDUuMjQgMTAuMTRMNS4yNSAxMC4xMlYxMC4xMUw1LjI0IDEwLjEzTDUuMjUgMTAuMTJWMTAuMTFMNS4yNiAxMC4wN0w1LjI3IDkuOTdBNi41IDYuNSAwIDAgMSA2LjI2IDcuNTlMNi4zMiA3LjVMNi4zOSA3LjRMNi41NSA3LjE5QzYuNjUgNy4wNyA2Ljc0IDYuOTQgNi44NiA2LjgyQTYuNjEgNi42MSAwIDAgMSA4LjM3IDUuNTlDOC41IDUuNSA4LjY0IDUuNDMgOC43NyA1LjM3QzguOSA1LjI5IDkuMDQgNS4yNCA5LjE3IDUuMThBNi43NiA2Ljc2IDAgMCAxIDkuOTQgNC45QTYuNSA2LjUgMCAwIDEgMTAuNjIgNC43NEMxMC44MiA0LjY5IDExIDQuNjggMTEuMTUgNC42NkMxMS4zIDQuNjQgMTEuNDIgNC42NCAxMS41IDQuNjNMMTEuNjIgNC42MkgxMS41QzExLjQyIDQuNjIgMTEuMyA0LjYxIDExLjE1IDQuNjFDMTEgNC42MSAxMC44MiA0LjYxIDEwLjYxIDQuNjNBNi40MSA2LjQxIDAgMCAwIDkuOSA0LjczQTcuMDMgNy4wMyAwIDAgMCA5LjA4IDQuOTNDOC45NCA1IDguNzkgNS4wMyA4LjY1IDUuMDlDOC41IDUuMTQgOC4zNSA1LjIxIDguMiA1LjI4QTcuMjYgNy4yNiAwIDAgMCA3LjMxIDUuNzhBNy4zMyA3LjMzIDAgMCAwIDYuNDcgNi40MkM2LjMzIDYuNTQgNi4yIDYuNjggNi4wNyA2LjhMNS45IDdMNS44MiA3LjA5TDUuNzIgNy4xOUE3LjI1IDcuMjUgMCAwIDAgNS4xMiA4LjA0QTcuMzggNy4zOCAwIDAgMCA0LjM2IDkuNzVMNC4zMyA5Ljg0TDQuMzIgOS44OUw0LjMgOS45NUw0LjI1IDEwLjEzTDQuMjEgMTAuMjlMNC4xOCAxMC41TDQuMTUgMTAuNjNDNC4xNCAxMC42NSA0LjE0IDEwLjY3IDQuMTQgMTAuN0w0LjEzIDEwLjcyVjEwLjc4TDQuMTIgMTAuODFMNC4wOSAxMS4wNkw0LjA1IDExLjVDMy43OSAxMS41NyAzLjUzIDExLjY1IDMuMjggMTEuNzRDMy4yOCAxMS43NCAxLjkzIDEyLjA1IDIgMTIuNzJDMi4wOCAxMy4zNSAzLjQxIDEzLjUgMy40MSAxMy41QTExLjIxIDExLjIxIDAgMCAwIDEwLjI0IDEyLjc0QTIuNjIgMi42MiAwIDAgMSAxMC4xNiAxMS41N00xOS43IDEwLjg0QTcuMTkgNy4xOSAwIDAgMCAxOS41MyA5Ljc5QzE5LjUgOS42MiAxOS40MyA5LjQ1IDE5LjM4IDkuMjdMMTkuMyA5LjAzTDE5LjI2IDguOTFMMTkuMjEgOC43N0E3LjIzIDcuMjMgMCAwIDAgMTguNzUgNy44M0E3LjM1IDcuMzUgMCAwIDAgMTcuNjIgNi4zNUwxNy41NSA2LjI4TDE3LjUgNi4yNUwxNy40NyA2LjJMMTcuMzMgNi4wOEwxNy4yMSA1Ljk3TDE3LjA2IDUuODVMMTYuOTQgNS43NUwxNi44OSA1LjdMMTYuODggNS42OUgxNi44N0wxNi44MyA1LjY2TDE2LjggNS42NEwxNi41OSA1LjVMMTYuMzIgNS4zMVExNi40MiA0Ljg4IDE2LjUgNC40NVMxNi44OCAzLjExIDE2LjI1IDIuODVDMTUuNjcgMi42MSAxNC45MSAzLjcyIDE0LjkxIDMuNzJBMTEuMjEgMTEuMjEgMCAwIDAgMTIuMjUgMTAuMDVBMi42MyAyLjYzIDAgMCAxIDEzLjMyIDEwLjU1QTExLjIgMTEuMiAwIDAgMCAxNS4yNSA4QTQuNzMgNC43MyAwIDAgMSAxNi4wOCA4LjY2QTQuODEgNC44MSAwIDAgMSAxNi41MyA5LjE5TDE2LjU4IDkuMjVMMTYuNjMgOS4zM0wxNi43NCA5LjVDMTYuOCA5LjU5IDE2Ljg2IDkuNjkgMTYuOTIgOS44QTQuODkgNC44OSAwIDAgMSAxNy40IDExLjE2QTQuNzggNC43OCAwIDAgMSAxNy41IDExLjgzQTQuODggNC44OCAwIDAgMSAxNy41IDEyLjQ0QTQuNzYgNC43NiAwIDAgMSAxNy40NCAxMi45NkMxNy40MiAxMy4xMSAxNy4zOSAxMy4yNSAxNy4zNiAxMy4zNkMxNy4zMSAxMy41NyAxNy4yNyAxMy43IDE3LjI3IDEzLjdMMTcuNDEgMTMuMzdDMTcuNDUgMTMuMjYgMTcuNSAxMy4xNCAxNy41NCAxM0E1LjA2IDUuMDYgMCAwIDAgMTcuNjcgMTIuNDZBNS4zNCA1LjM0IDAgMCAwIDE3Ljc1IDExLjgzQTUuMDQgNS4wNCAwIDAgMCAxNy43NiAxMS4xMUE1LjM4IDUuMzggMCAwIDAgMTcuNDMgOS41N0MxNy4zOCA5LjQ0IDE3LjMyIDkuMzEgMTcuMjcgOS4xOUwxNy4xOCA5TDE3LjE0IDguOTNMMTcuMDkgOC44M0E1LjUzIDUuNTMgMCAwIDAgMTUuNjcgNy4xNkMxNS43OSA2LjkgMTUuODkgNi42NSAxNiA2LjM4TDE2LjAzIDYuNDFMMTYuMjUgNi41M0wxNi4yOCA2LjU0VjYuNTVIMTYuMjlDMTYuMzIgNi41NyAxNi4yNCA2LjUgMTYuMjUgNi41M0gxNi4yNkwxNi4yNyA2LjU0TDE2LjMzIDYuNThMMTYuNDUgNi42NkwxNi41IDYuNzFMMTYuNTYgNi43M0wxNi41NyA2Ljc0SDE2LjU4TDE2LjU2IDYuNzNIMTYuNTdMMTYuNzEgNi44NEwxNi44NSA2Ljk0TDE2Ljg3IDYuOTZMMTYuODYgNi45NUwxNi44NyA2Ljk2TDE2LjkxIDdMMTcgNy4wNUE2LjQ2IDYuNDYgMCAwIDEgMTguNiA5LjA1TDE4LjY1IDkuMTVMMTguNzEgOS4yN0wxOC44MiA5LjVDMTguODcgOS42NSAxOC45NCA5Ljc5IDE5IDkuOTVBNi42OSA2LjY5IDAgMCAxIDE5LjI0IDEwLjlBNi43OCA2Ljc4IDAgMCAxIDE5LjM1IDExLjg2QzE5LjM2IDEyIDE5LjM2IDEyLjE3IDE5LjM1IDEyLjMyQzE5LjM1IDEyLjUgMTkuMzQgMTIuNjIgMTkuMzMgMTIuNzdBNi43OSA2Ljc5IDAgMCAxIDE5LjIgMTMuNThBNi40IDYuNCAwIDAgMSAxOSAxNC4yNUMxOC45NiAxNC40NSAxOC44OSAxNC42MiAxOC44NCAxNC43NkMxOC43OCAxNC45IDE4LjczIDE1IDE4LjcgMTUuMDdMMTguNjQgMTUuMTlMMTguNzEgMTUuMDhDMTguNzUgMTUgMTguODEgMTQuOTEgMTguODggMTQuNzhDMTguOTUgMTQuNjQgMTkuMDQgMTQuNSAxOS4xMiAxNC4yOUE2LjUgNi41IDAgMCAwIDE5LjM3IDEzLjYyQTYuOTMgNi45MyAwIDAgMCAxOS41OSAxMi44MUMxOS42MSAxMi42NiAxOS42NCAxMi41IDE5LjY2IDEyLjM1QzE5LjY4IDEyLjE5IDE5LjcgMTIuMDMgMTkuNyAxMS44N0E3LjEgNy4xIDAgMCAwIDE5LjY5IDEwLjg0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29ubmVjdGlvbiA9IFwiTTIxLjQgNy41QzIyLjIgOC4zIDIyLjIgOS42IDIxLjQgMTAuM0wxOC42IDEzLjFMMTAuOCA1LjNMMTMuNiAyLjVDMTQuNCAxLjcgMTUuNyAxLjcgMTYuNCAyLjVMMTguMiA0LjNMMjEuMiAxLjNMMjIuNiAyLjdMMTkuNiA1LjdMMjEuNCA3LjVNMTUuNiAxMy4zTDE0LjIgMTEuOUwxMS40IDE0LjdMOS4zIDEyLjZMMTIuMSA5LjhMMTAuNyA4LjRMNy45IDExLjJMNi40IDkuOEwzLjYgMTIuNkMyLjggMTMuNCAyLjggMTQuNyAzLjYgMTUuNEw1LjQgMTcuMkwxLjQgMjEuMkwyLjggMjIuNkw2LjggMTguNkw4LjYgMjAuNEM5LjQgMjEuMiAxMC43IDIxLjIgMTEuNCAyMC40TDE0LjIgMTcuNkwxMi44IDE2LjJMMTUuNiAxMy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnNvbGUgPSBcIk0yMCwxOVY3SDRWMTlIMjBNMjAsM0EyLDIgMCAwLDEgMjIsNVYxOUEyLDIgMCAwLDEgMjAsMjFINEEyLDIgMCAwLDEgMiwxOVY1QzIsMy44OSAyLjksMyA0LDNIMjBNMTMsMTdWMTVIMThWMTdIMTNNOS41OCwxM0w1LjU3LDlIOC40TDExLjcsMTIuM0MxMi4wOSwxMi42OSAxMi4wOSwxMy4zMyAxMS43LDEzLjcyTDguNDIsMTdINS41OUw5LjU4LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnNvbGVMaW5lID0gXCJNMTMsMTlWMTZIMjFWMTlIMTNNOC41LDEzTDIuNDcsN0g2LjcxTDExLjY3LDExLjk1QzEyLjI1LDEyLjU0IDEyLjI1LDEzLjUgMTEuNjcsMTQuMDdMNi43NCwxOUgyLjVMOC41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnNvbGVOZXR3b3JrID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdBMiwyIDAgMCwxIDUsMTVWNUEyLDIgMCAwLDEgNywzSDE3TTcsN0wxMSwxMUw3LDE1SDkuODVMMTMuMTMsMTEuNzJDMTMuNSwxMS4zMyAxMy41LDEwLjcgMTMuMTMsMTAuM0w5LjgzLDdIN00xNywxM0gxNFYxNUgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb25zb2xlTmV0d29ya091dGxpbmUgPSBcIk0xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTdIMTdBMiwyIDAgMCwwIDE5LDE1VjVBMiwyIDAgMCwwIDE3LDNIN0EyLDIgMCAwLDAgNSw1VjE1QTIsMiAwIDAsMCA3LDE3SDExVjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1TTcsMTVWNUgxN1YxNUg3TTgsNi44OUwxMS41NiwxMC40NUw4LDE0SDEwLjUzTDEzLjQ1LDExLjA4QzEzLjc4LDEwLjc0IDEzLjc4LDEwLjE4IDEzLjQ1LDkuODJMMTAuNSw2Ljg5SDhNMTYsMTIuMjJIMTMuMzNWMTRIMTZWMTIuMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29uc29saWRhdGUgPSBcIk0xOCA5SDIwVjRIMjJWOUEyIDIgMCAwIDEgMjAgMTFIMThWMTNMMTUgMTBMMTggN00xNCAxMEEyIDIgMCAxIDAgMTIgMTJBMiAyIDAgMCAwIDE0IDEwTTIgMTFWMTZINFYxMUg2VjEzTDkgMTBMNiA3VjlINEEyIDIgMCAwIDAgMiAxMU0xNSAxNkwxMiAxM0w5IDE2SDExVjE4QTIgMiAwIDAgMCAxMyAyMEgxOFYxOEgxM1YxNlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRhY3RsZXNzUGF5bWVudCA9IFwiTTE2Ljc5LDIzQzE2LjM3LDIyLjgzIDE2LjA3LDIyLjQ1IDE2LDIyQzE1Ljk1LDIxLjc0IDE2LDIxLjU2IDE2LjQsMjAuODRDMTcuOSwxOC4xNCAxOC42NywxNS4wOSAxOC42MywxMkMxOC42Nyw5IDE3Ljk0LDYuMDcgMTYuNSwzLjQ0QzE2LjI5LDMgMTYuMSwyLjU4IDE1Ljk0LDIuMTNDMTYsMS43NSAxNi4xOSwxLjQgMTYuNSwxLjE5QzE2Ljk1LDAuOTUgMTcuNSwxIDE3LjkxLDEuMjhDMTguMTksMS42NCAxOC40MywyIDE4LjYzLDIuNDJDMTkuNzEsNC41IDIwLjQ0LDYuNyAyMC44LDlDMjEuMDMsMTAuODEgMjEuMDYsMTIuNjUgMjAuODksMTQuNDdDMjAuNTgsMTYuODEgMTkuODksMTkuMDcgMTguODMsMjEuMThDMTguMTksMjIuNDYgMTcuODMsMjMgMTcuNDUsMjNDMTcuMzcsMjMgMTcuMjgsMjMgMTcuMiwyM0MxNy4wNiwyMyAxNi45MywyMyAxNi43OSwyM1YyM00xMi40MywyMC43OUMxMS44NiwyMC42MyAxMS41LDIwLjA1IDExLjYyLDE5LjQ3QzExLjYyLDE5LjM1IDExLjkzLDE4LjggMTIuMjEsMTguMjRDMTMuMzksMTUuOTcgMTMuOSwxMy40MSAxMy42NywxMC44NkMxMy41Myw5LjAzIDEzLDcuMjUgMTIuMTMsNS42NEMxMS41LDQuMzggMTEuNDYsNC4xOCAxMS44MywzLjY0QzEyLjI3LDMuMTUgMTMsMy4wOCAxMy41NCwzLjVDMTQuMjYsNC41NiAxNC44Myw1LjcyIDE1LjI1LDYuOTRDMTYuNTMsMTAuNzMgMTYuMzMsMTQuODYgMTQuNjksMTguNUMxMy44NSwyMC4zOSAxMy4yNiwyMSAxMi40MywyMC43NFYyMC43OU03LjkzLDE4LjU2QzcuNTcsMTguNCA3LjMsMTguMDggNy4yLDE3LjdDNy4yLDE3LjUgNy4yLDE3LjI0IDcuNjUsMTYuNDRDOS4xNCwxMy43NCA5LjE0LDEwLjQ2IDcuNjUsNy43NkM3LDYuNSA3LDYuMjQgNy41Myw1Ljc2QzcuNzIsNS41NCA4LDUuNDMgOC4zLDUuNDdDOC45NCw1LjQ3IDkuMyw1Ljc4IDkuODQsNi45MUMxMC42OSw4LjQ3IDExLjEzLDEwLjIyIDExLjEyLDEyQzExLjE2LDEzLjgxIDEwLjcyLDE1LjYxIDkuODUsMTcuMkM5LjMxLDE4LjI1IDkuMDQsMTguNSA4LjUsMTguNTlDOC4zMSwxOC42MSA4LjExLDE4LjU5IDcuOTMsMTguNVYxOC41Nk0zLjcyLDE2LjQzQzMuMzksMTYuMjcgMy4xMywxNiAzLDE1LjY1QzIuOSwxNS4zIDMsMTUgMy40LDE0LjM2QzMuOSwxMy42OCA0LjE0LDEyLjg0IDQuMDksMTJDNC4xNiwxMS4xNSAzLjkzLDEwLjMxIDMuNDQsOS42MUMzLjI3LDkuMzYgMy4xMyw5LjA5IDMsOC44MkMyLjg5LDguMTkgMy4zMSw3LjU5IDQsNy40N0M0LjU0LDcuMzcgNC45Miw3LjYgNS40Miw4LjM2QzYuODcsMTAuNTcgNi44NywxMy40MiA1LjQyLDE1LjYzQzQuOTEsMTYuNCA0LjMzLDE2LjYzIDMuNzMsMTYuNDNIMy43MlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWN0bGVzc1BheW1lbnRDaXJjbGUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNOC40MyAxNC40NEw3LjA3IDEzLjgzQzcuMzUgMTMuMjcgNy41IDEyLjY3IDcuNSAxMi4wNUM3LjUgMTEuMzkgNy4zNSAxMC43NiA3LjA3IDEwLjE3TDguNDMgOS41NkM4LjgxIDEwLjM3IDkgMTEuMiA5IDEyLjA1QzkgMTIuOCA4LjgxIDEzLjYgOC40MyAxNC40NE0xMS41MyAxNS45NEwxMC4yMiAxNS4yOUMxMC43NSAxNC4xNiAxMSAxMyAxMSAxMS44NkMxMSAxMC43MyAxMC43NSA5LjY5IDEwLjIyIDguNzFMMTEuNTMgNy45NkMxMi4xOSA5LjEyIDEyLjUgMTAuNDIgMTIuNSAxMS44NkMxMi41IDEzLjMzIDEyLjE5IDE0LjY5IDExLjUzIDE1Ljk0TTE0LjY4IDE3LjM1TDEzLjMxIDE2LjY1QzE0LjEgMTUuMTEgMTQuNSAxMy41NyAxNC41IDEyUzE0LjEgOC44NyAxMy4zMSA3LjMxTDE0LjY4IDYuNjVDMTUuNTUgOC40MyAxNiAxMC4yMiAxNiAxMkMxNiAxMy44MiAxNS41NSAxNS42IDE0LjY4IDE3LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRhY3RsZXNzUGF5bWVudENpcmNsZU91dGxpbmUgPSBcIk0xMiA0QzE2LjQxIDQgMjAgNy41OSAyMCAxMlMxNi40MSAyMCAxMiAyMCA0IDE2LjQxIDQgMTIgNy41OSA0IDEyIDRNMTIgMkM2LjUgMiAyIDYuNSAyIDEyUzYuNSAyMiAxMiAyMiAyMiAxNy41IDIyIDEyIDE3LjUgMiAxMiAyTTguNDMgMTQuNDRMNy4wNyAxMy44M0M3LjM1IDEzLjI3IDcuNSAxMi42NyA3LjUgMTIuMDVDNy41IDExLjM5IDcuMzUgMTAuNzYgNy4wNyAxMC4xN0w4LjQzIDkuNTZDOC44MSAxMC4zNyA5IDExLjIgOSAxMi4wNUM5IDEyLjggOC44MSAxMy42IDguNDMgMTQuNDRNMTEuNTMgMTUuOTRMMTAuMjIgMTUuMjlDMTAuNzUgMTQuMTYgMTEgMTMgMTEgMTEuODZDMTEgMTAuNzMgMTAuNzUgOS42OSAxMC4yMiA4LjcxTDExLjUzIDcuOTZDMTIuMTkgOS4xMiAxMi41IDEwLjQyIDEyLjUgMTEuODZDMTIuNSAxMy4zMyAxMi4xOSAxNC42OSAxMS41MyAxNS45NE0xNC42OCAxNy4zNUwxMy4zMSAxNi42NUMxNC4xIDE1LjExIDE0LjUgMTMuNTcgMTQuNSAxMlMxNC4xIDguODcgMTMuMzEgNy4zMUwxNC42OCA2LjY1QzE1LjU1IDguNDMgMTYgMTAuMjIgMTYgMTJDMTYgMTMuODIgMTUuNTUgMTUuNiAxNC42OCAxNy4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWN0cyA9IFwiTTIwLDBINFYySDIwVjBNNCwyNEgyMFYyMkg0VjI0TTIwLDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QTIsMiAwIDAsMCAyMCw0TTEyLDYuNzVBMi4yNSwyLjI1IDAgMCwxIDE0LjI1LDlBMi4yNSwyLjI1IDAgMCwxIDEyLDExLjI1QTIuMjUsMi4yNSAwIDAsMSA5Ljc1LDlBMi4yNSwyLjI1IDAgMCwxIDEyLDYuNzVNMTcsMTdIN1YxNS41QzcsMTMuODMgMTAuMzMsMTMgMTIsMTNDMTMuNjcsMTMgMTcsMTMuODMgMTcsMTUuNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWN0c091dGxpbmUgPSBcIk0yMCA0SDRDMi45IDQgMiA0LjkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNkMyMiA0LjkgMjEuMSA0IDIwIDRNMjAgMThINFY2SDIwVjE4TTQgMEgyMFYySDRNNCAyMkgyMFYyNEg0TTEyIDEyQzEzLjM4IDEyIDE0LjUgMTAuODggMTQuNSA5LjVTMTMuMzggNyAxMiA3IDkuNSA4LjEyIDkuNSA5LjUgMTAuNjIgMTIgMTIgMTJNMTIgOC41QzEyLjU1IDguNSAxMyA4Ljk1IDEzIDkuNVMxMi41NSAxMC41IDEyIDEwLjUgMTEgMTAuMDUgMTEgOS41IDExLjQ1IDguNSAxMiA4LjVNMTcgMTZDMTcgMTMuOSAxMy42OSAxMyAxMiAxM1M3IDEzLjkgNyAxNlYxN0gxN1YxNk04LjgxIDE1LjVDOS40MiAxNSAxMC44NCAxNC41IDEyIDE0LjVDMTMuMTcgMTQuNSAxNC41OSAxNSAxNS4yIDE1LjVIOC44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWluID0gXCJNMiwzSDhWNUg0VjE5SDhWMjFIMlYzTTcsMTdWMTVIOVYxN0g3TTExLDE3VjE1SDEzVjE3SDExTTE1LDE3VjE1SDE3VjE3SDE1TTIyLDNWMjFIMTZWMTlIMjBWNUgxNlYzSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRhaW5FbmQgPSBcIk03LDE3VjE1SDlWMTdIN00xMSwxN1YxNUgxM1YxN0gxMU0xNSwxN1YxNUgxN1YxN0gxNU0yMiwzVjIxSDE2VjE5SDIwVjVIMTZWM0gyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250YWluU3RhcnQgPSBcIk0yLDNIOFY1SDRWMTlIOFYyMUgyVjNNNywxN1YxNUg5VjE3SDdNMTEsMTdWMTVIMTNWMTdIMTFNMTUsMTdWMTVIMTdWMTdIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudENvcHkgPSBcIk0xOSwyMUg4VjdIMTlNMTksNUg4QTIsMiAwIDAsMCA2LDdWMjFBMiwyIDAgMCwwIDgsMjNIMTlBMiwyIDAgMCwwIDIxLDIxVjdBMiwyIDAgMCwwIDE5LDVNMTYsMUg0QTIsMiAwIDAsMCAyLDNWMTdINFYzSDE2VjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudEN1dCA9IFwiTTE5LDNMMTMsOUwxNSwxMUwyMiw0VjNNMTIsMTIuNUEwLjUsMC41IDAgMCwxIDExLjUsMTJBMC41LDAuNSAwIDAsMSAxMiwxMS41QTAuNSwwLjUgMCAwLDEgMTIuNSwxMkEwLjUsMC41IDAgMCwxIDEyLDEyLjVNNiwyMEEyLDIgMCAwLDEgNCwxOEM0LDE2Ljg5IDQuOSwxNiA2LDE2QTIsMiAwIDAsMSA4LDE4QzgsMTkuMTEgNy4xLDIwIDYsMjBNNiw4QTIsMiAwIDAsMSA0LDZDNCw0Ljg5IDQuOSw0IDYsNEEyLDIgMCAwLDEgOCw2QzgsNy4xMSA3LjEsOCA2LDhNOS42NCw3LjY0QzkuODcsNy4xNCAxMCw2LjU5IDEwLDZBNCw0IDAgMCwwIDYsMkE0LDQgMCAwLDAgMiw2QTQsNCAwIDAsMCA2LDEwQzYuNTksMTAgNy4xNCw5Ljg3IDcuNjQsOS42NEwxMCwxMkw3LjY0LDE0LjM2QzcuMTQsMTQuMTMgNi41OSwxNCA2LDE0QTQsNCAwIDAsMCAyLDE4QTQsNCAwIDAsMCA2LDIyQTQsNCAwIDAsMCAxMCwxOEMxMCwxNy40MSA5Ljg3LDE2Ljg2IDkuNjQsMTYuMzZMMTIsMTRMMTksMjFIMjJWMjBMOS42NCw3LjY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnREdXBsaWNhdGUgPSBcIk0xMSwxN0g0QTIsMiAwIDAsMSAyLDE1VjNBMiwyIDAgMCwxIDQsMUgxNlYzSDRWMTVIMTFWMTNMMTUsMTZMMTEsMTlWMTdNMTksMjFWN0g4VjEzSDZWN0EyLDIgMCAwLDEgOCw1SDE5QTIsMiAwIDAsMSAyMSw3VjIxQTIsMiAwIDAsMSAxOSwyM0g4QTIsMiAwIDAsMSA2LDIxVjE5SDhWMjFIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFBhc3RlID0gXCJNMTksMjBINVY0SDdWN0gxN1Y0SDE5TTEyLDJBMSwxIDAgMCwxIDEzLDNBMSwxIDAgMCwxIDEyLDRBMSwxIDAgMCwxIDExLDNBMSwxIDAgMCwxIDEyLDJNMTksMkgxNC44MkMxNC40LDAuODQgMTMuMywwIDEyLDBDMTAuNywwIDkuNiwwLjg0IDkuMTgsMkg1QTIsMiAwIDAsMCAzLDRWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjRBMiwyIDAgMCwwIDE5LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmUgPSBcIk0xNSw5SDVWNUgxNU0xMiwxOUEzLDMgMCAwLDEgOSwxNkEzLDMgMCAwLDEgMTIsMTNBMywzIDAgMCwxIDE1LDE2QTMsMyAwIDAsMSAxMiwxOU0xNywzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWN0wxNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlQWxlcnQgPSBcIk0xMyA5SDNWNUgxM00xMCAxOUM4LjMgMTkgNyAxNy43IDcgMTZTOC4zIDEzIDEwIDEzIDEzIDE0LjMgMTMgMTYgMTEuNyAxOSAxMCAxOU0xNSAzSDNDMS45IDMgMSAzLjkgMSA1VjE5QzEgMjAuMSAxLjkgMjEgMyAyMUgxN0MxOC4xIDIxIDE5IDIwLjEgMTkgMTlWN0wxNSAzTTIzIDE0SDIxVjdIMjNWMTRNMjMgMThIMjFWMTZIMjNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVBbGVydE91dGxpbmUgPSBcIk0xNSAzSDNDMS45IDMgMSAzLjkgMSA1VjE5QzEgMjAuMSAxLjkgMjEgMyAyMUgxN0MxOC4xIDIxIDE5IDIwLjEgMTkgMTlWN0wxNSAzTTE3IDE5SDNWNUgxNC4yTDE3IDcuOFYxOU0xMCAxMkM4LjMgMTIgNyAxMy4zIDcgMTVTOC4zIDE4IDEwIDE4IDEzIDE2LjcgMTMgMTUgMTEuNyAxMiAxMCAxMk00IDZIMTNWMTBINFY2TTIzIDE0SDIxVjdIMjNWMTRNMjMgMThIMjFWMTZIMjNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVBbGwgPSBcIk0xNyw3VjNIN1Y3SDE3TTE0LDE3QTMsMyAwIDAsMCAxNywxNEEzLDMgMCAwLDAgMTQsMTFBMywzIDAgMCwwIDExLDE0QTMsMyAwIDAsMCAxNCwxN00xOSwxTDIzLDVWMTdBMiwyIDAgMCwxIDIxLDE5SDdDNS44OSwxOSA1LDE4LjEgNSwxN1YzQTIsMiAwIDAsMSA3LDFIMTlNMSw3SDNWMjFIMTdWMjNIM0EyLDIgMCAwLDEgMSwyMVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlQWxsT3V0bGluZSA9IFwiTTEgN0gzVjIxSDE3VjIzSDNDMS45IDIzIDEgMjIuMTEgMSAyMVY3TTE5IDFIN0M1Ljg5IDEgNSAxLjkgNSAzVjE3QzUgMTguMSA1Ljg5IDE5IDcgMTlIMjFDMjIuMSAxOSAyMyAxOC4xIDIzIDE3VjVMMTkgMU0yMSAxN0g3VjNIMTguMTdMMjEgNS44M1YxN00xNCAxMEMxMi4zNCAxMCAxMSAxMS4zNCAxMSAxM1MxMi4zNCAxNiAxNCAxNiAxNyAxNC42NiAxNyAxMyAxNS42NiAxMCAxNCAxME04IDRIMTdWOEg4VjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVDb2cgPSBcIk0yMSAxMS43VjdMMTcgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTEuN0MxMS40IDIwLjMgMTEuMiAxOS42IDExLjEgMTguOEM5LjkgMTguNCA5IDE3LjMgOSAxNkM5IDE0LjMgMTAuMyAxMyAxMiAxM0MxMi4zIDEzIDEyLjYgMTMuMSAxMi45IDEzLjJDMTQuMiAxMS44IDE2IDExIDE4IDExQzE5LjEgMTEgMjAuMSAxMS4yIDIxIDExLjdNMTUgOUg1VjVIMTVWOU0yMS43IDE4LjZWMTcuNkwyMi44IDE2LjhDMjIuOSAxNi43IDIzIDE2LjYgMjIuOSAxNi41TDIxLjkgMTQuOEMyMS45IDE0LjcgMjEuNyAxNC43IDIxLjYgMTQuN0wyMC40IDE1LjJDMjAuMSAxNSAxOS44IDE0LjggMTkuNSAxNC43TDE5LjMgMTMuNEMxOS4zIDEzLjMgMTkuMiAxMy4yIDE5LjEgMTMuMkgxNy4xQzE2LjkgMTMuMiAxNi44IDEzLjMgMTYuOCAxMy40TDE2LjYgMTQuN0MxNi4zIDE0LjkgMTYuMSAxNSAxNS44IDE1LjJMMTQuNiAxNC43QzE0LjUgMTQuNyAxNC40IDE0LjcgMTQuMyAxNC44TDEzLjMgMTYuNUMxMy4zIDE2LjYgMTMuMyAxNi43IDEzLjQgMTYuOEwxNC41IDE3LjZWMTguNkwxMy40IDE5LjRDMTMuMyAxOS41IDEzLjIgMTkuNiAxMy4zIDE5LjdMMTQuMyAyMS40QzE0LjQgMjEuNSAxNC41IDIxLjUgMTQuNiAyMS41TDE1LjggMjFDMTYgMjEuMiAxNi4zIDIxLjQgMTYuNiAyMS41TDE2LjggMjIuOEMxNi45IDIyLjkgMTcgMjMgMTcuMSAyM0gxOS4xQzE5LjIgMjMgMTkuMyAyMi45IDE5LjMgMjIuOEwxOS41IDIxLjVDMTkuOCAyMS4zIDIwIDIxLjIgMjAuMyAyMUwyMS41IDIxLjRDMjEuNiAyMS40IDIxLjcgMjEuNCAyMS44IDIxLjNMMjIuOCAxOS42QzIyLjkgMTkuNSAyMi45IDE5LjQgMjIuOCAxOS40TDIxLjcgMTguNk0xOCAxOS41QzE3LjIgMTkuNSAxNi41IDE4LjggMTYuNSAxOFMxNy4yIDE2LjUgMTggMTYuNSAxOS41IDE3LjIgMTkuNSAxOCAxOC44IDE5LjUgMTggMTkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250ZW50U2F2ZUNvZ091dGxpbmUgPSBcIk0xMS4xIDE5QzExLjIgMTkuNyAxMS40IDIwLjQgMTEuNyAyMUg1QzMuOSAyMSAzIDIwLjEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0gxN0wyMSA3VjExLjdDMjAuNCAxMS40IDE5LjcgMTEuMiAxOSAxMS4xVjcuOEwxNi4yIDVINVYxOUgxMS4xTTEyIDEyQzEwLjMgMTIgOSAxMy4zIDkgMTVDOSAxNi4zIDkuOCAxNy40IDExIDE3LjhDMTEuMSAxNS42IDEyLjEgMTMuNyAxMy43IDEyLjVDMTMuMiAxMi4yIDEyLjYgMTIgMTIgMTJNMTUgMTBWNkg2VjEwSDE1TTIyLjggMTkuNkwyMS44IDIxLjNDMjEuNyAyMS40IDIxLjYgMjEuNCAyMS41IDIxLjRMMjAuMyAyMUMyMCAyMS4yIDE5LjggMjEuMyAxOS41IDIxLjVMMTkuMyAyMi44QzE5LjMgMjIuOSAxOS4yIDIzIDE5LjEgMjNIMTcuMUMxNyAyMyAxNi45IDIyLjkgMTYuOCAyMi44TDE2LjYgMjEuNUMxNi4zIDIxLjQgMTYgMjEuMiAxNS44IDIxTDE0LjYgMjEuNUMxNC41IDIxLjUgMTQuNCAyMS41IDE0LjMgMjEuNEwxMy4zIDE5LjdDMTMuMiAxOS42IDEzLjMgMTkuNSAxMy40IDE5LjRMMTQuNSAxOC42VjE3LjZMMTMuNCAxNi44QzEzLjMgMTYuNyAxMy4zIDE2LjYgMTMuMyAxNi41TDE0LjMgMTQuOEMxNC40IDE0LjcgMTQuNSAxNC43IDE0LjYgMTQuN0wxNS44IDE1LjJDMTYuMSAxNSAxNi4zIDE0LjkgMTYuNiAxNC43TDE2LjggMTMuNEMxNi44IDEzLjMgMTYuOSAxMy4yIDE3LjEgMTMuMkgxOS4xQzE5LjIgMTMuMiAxOS4zIDEzLjMgMTkuMyAxMy40TDE5LjUgMTQuN0MxOS44IDE0LjggMjAuMSAxNSAyMC40IDE1LjJMMjEuNiAxNC43QzIxLjcgMTQuNyAyMS45IDE0LjcgMjEuOSAxNC44TDIyLjkgMTYuNUMyMyAxNi42IDIyLjkgMTYuNyAyMi44IDE2LjhMMjEuNyAxNy42VjE4LjZMMjIuOCAxOS40QzIyLjkgMTkuNCAyMi45IDE5LjUgMjIuOCAxOS42TTE5LjUgMThDMTkuNSAxNy4yIDE4LjggMTYuNSAxOCAxNi41UzE2LjUgMTcuMiAxNi41IDE4IDE3LjIgMTkuNSAxOCAxOS41QzE4LjggMTkuNSAxOS41IDE4LjggMTkuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250ZW50U2F2ZUVkaXQgPSBcIk0xMCwxOUwxMC4xNCwxOC44NkM4LjksMTguNSA4LDE3LjM2IDgsMTZBMywzIDAgMCwxIDExLDEzQzEyLjM2LDEzIDEzLjUsMTMuOSAxMy44NiwxNS4xNEwyMCw5VjdMMTYsM0g0QzIuODksMyAyLDMuOSAyLDVWMTlBMiwyIDAgMCwwIDQsMjFIMTBWMTlNNCw1SDE0VjlINFY1TTIwLjA0LDEyLjEzQzE5LjksMTIuMTMgMTkuNzYsMTIuMTkgMTkuNjUsMTIuM0wxOC42NSwxMy4zTDIwLjcsMTUuMzVMMjEuNywxNC4zNUMyMS45MiwxNC4xNCAyMS45MiwxMy43OSAyMS43LDEzLjU4TDIwLjQyLDEyLjNDMjAuMzEsMTIuMTkgMjAuMTgsMTIuMTMgMjAuMDQsMTIuMTNNMTguMDcsMTMuODhMMTIsMTkuOTRWMjJIMTQuMDZMMjAuMTIsMTUuOTNMMTguMDcsMTMuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVFZGl0T3V0bGluZSA9IFwiTTQgMTlIMTBWMjFINEMyLjg5IDIxIDIgMjAuMSAyIDE5VjVDMiAzLjkgMi44OSAzIDQgM0gxNkwyMCA3VjkuMTJMMTggMTEuMTJWNy44M0wxNS4xNyA1SDRWMTlNMTQgMTBWNkg1VjEwSDE0TTIwLjQyIDEyLjNDMjAuMzEgMTIuMTkgMjAuMTggMTIuMTMgMjAuMDQgMTIuMTNDMTkuOSAxMi4xMyAxOS43NiAxMi4xOSAxOS42NSAxMi4zTDE4LjY1IDEzLjNMMjAuNyAxNS4zNUwyMS43IDE0LjM1QzIxLjkyIDE0LjE0IDIxLjkyIDEzLjc5IDIxLjcgMTMuNThMMjAuNDIgMTIuM00xMiAxOS45NFYyMkgxNC4wNkwyMC4xMiAxNS45M0wxOC4wNyAxMy44OEwxMiAxOS45NE0xNCAxNUMxNCAxMy4zNCAxMi42NiAxMiAxMSAxMlM4IDEzLjM0IDggMTUgOS4zNCAxOCAxMSAxOEMxMS4wNCAxOCAxMS4wOCAxOCAxMS4xMyAxOEwxNCAxNS4xM0MxNCAxNS4wOSAxNCAxNS4wNSAxNCAxNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlTW92ZSA9IFwiTTE3LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDExLjgxQzExLjQyLDIwLjM0IDExLjE3LDE5LjYgMTEuMDcsMTguODRDOS41LDE4LjMxIDguNjYsMTYuNiA5LjIsMTUuMDNDOS42MSwxMy44MyAxMC43MywxMyAxMiwxM0MxMi40NCwxMyAxMi44OCwxMy4xIDEzLjI4LDEzLjI5QzE1LjU3LDExLjUgMTguODMsMTEuNTkgMjEsMTMuNTRWN0wxNywzTTE1LDlINVY1SDE1VjlNMTMsMTdIMTdWMTRMMjIsMTguNUwxNywyM1YyMEgxM1YxN1wiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlTW92ZU91dGxpbmUgPSBcIk0xMyAxN0gxN1YxNEwyMiAxOC41TDE3IDIzVjIwSDEzVjE3TTE0IDEyLjhDMTMuNSAxMi4zMSAxMi43OCAxMiAxMiAxMkMxMC4zNCAxMiA5IDEzLjM0IDkgMTVDOSAxNi4zMSA5Ljg0IDE3LjQxIDExIDE3LjgyQzExLjA3IDE1LjY3IDEyLjI3IDEzLjggMTQgMTIuOE0xMS4wOSAxOUg1VjVIMTYuMTdMMTkgNy44M1YxMi4zNUMxOS43NSAxMi42MSAyMC40MiAxMyAyMSAxMy41NFY3TDE3IDNINUMzLjg5IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjg5IDIxIDUgMjFIMTEuODFDMTEuNDYgMjAuMzkgMTEuMjEgMTkuNzIgMTEuMDkgMTlNNiAxMEgxNVY2SDZWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVPZmYgPSBcIk04LjIgNUw2LjIgM0gxN0wyMSA3VjE3LjhMMTIuMiA5SDE1VjVIOC4yTTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE5LjEgMjFDMTkuMDcgMjEgMTkuMDMgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyA0Ljk3IDMgNC45MyAzIDQuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTcuMTEgOUw1IDYuODlWOUg3LjExTTE0Ljg5IDE2Ljc4TDExLjIyIDEzLjExQzkuOTUgMTMuNDYgOSAxNC42MSA5IDE2QzkgMTcuNjYgMTAuMzQgMTkgMTIgMTlDMTMuMzkgMTkgMTQuNTQgMTguMDUgMTQuODkgMTYuNzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVPZmZPdXRsaW5lID0gXCJNOC4yIDVMNi4yIDNIMTdMMjEgN1YxNy44TDE5IDE1LjhWNy44M0wxNi4xNyA1SDguMk0xNSAxMFY2SDkuMkwxMy4yIDEwSDE1TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE5LjEgMjFDMTkuMDcgMjEgMTkuMDMgMjEgMTkgMjFINUMzLjg5IDIxIDMgMjAuMSAzIDE5VjVDMyA0Ljk3IDMgNC45MyAzIDQuOUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE3LjExIDE5TDE0LjU5IDE2LjVDMTQuMDggMTcuMzkgMTMuMTIgMTggMTIgMThDMTAuMzQgMTggOSAxNi42NiA5IDE1QzkgMTMuODggOS42MSAxMi45MiAxMC41IDEyLjQxTDguMTEgMTBINlY3Ljg5TDUgNi44OVYxOUgxNy4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb250ZW50U2F2ZU91dGxpbmUgPSBcIk0xNyAzSDVDMy44OSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY3TDE3IDNNMTkgMTlINVY1SDE2LjE3TDE5IDcuODNWMTlNMTIgMTJDMTAuMzQgMTIgOSAxMy4zNCA5IDE1UzEwLjM0IDE4IDEyIDE4IDE1IDE2LjY2IDE1IDE1IDEzLjY2IDEyIDEyIDEyTTYgNkgxNVYxMEg2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udGVudFNhdmVTZXR0aW5ncyA9IFwiTTE1LDhWNEg1VjhIMTVNMTIsMThBMywzIDAgMCwwIDE1LDE1QTMsMyAwIDAsMCAxMiwxMkEzLDMgMCAwLDAgOSwxNUEzLDMgMCAwLDAgMTIsMThNMTcsMkwyMSw2VjE4QTIsMiAwIDAsMSAxOSwyMEg1QzMuODksMjAgMywxOS4xIDMsMThWNEEyLDIgMCAwLDEgNSwySDE3TTExLDIySDEzVjI0SDExVjIyTTcsMjJIOVYyNEg3VjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRlbnRTYXZlU2V0dGluZ3NPdXRsaW5lID0gXCJNNyAyMkg5VjI0SDdWMjJNMTEgMjJIMTNWMjRIMTFWMjJNMTUgMjJIMTdWMjRIMTVWMjJNMTcgMkg1QzMuODkgMiAzIDIuOSAzIDRWMThDMyAxOS4xIDMuODkgMjAgNSAyMEgxOUMyMC4xIDIwIDIxIDE5LjEgMjEgMThWNkwxNyAyTTE5IDE4SDVWNEgxNi4xN0wxOSA2LjgzVjE4TTEyIDExQzEwLjM0IDExIDkgMTIuMzQgOSAxNFMxMC4zNCAxNyAxMiAxNyAxNSAxNS42NiAxNSAxNCAxMy42NiAxMSAxMiAxMU02IDVIMTVWOUg2VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udHJhc3QgPSBcIk00LjM4LDIwLjlDMy43OCwyMC43MSAzLjMsMjAuMjMgMy4xLDE5LjYzTDE5LjYzLDMuMUMyMC4yMywzLjMgMjAuNzEsMy43OCAyMC45LDQuMzhMNC4zOCwyMC45TTIwLDE2VjE4SDEzVjE2SDIwTTMsNkg2VjNIOFY2SDExVjhIOFYxMUg2VjhIM1Y2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRyYXN0Qm94ID0gXCJNMTcsMTUuNUgxMlYxN0gxN00xOSwxOUg1TDE5LDVNNS41LDcuNUg3LjVWNS41SDlWNy41SDExVjlIOVYxMUg3LjVWOUg1LjVNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udHJhc3RDaXJjbGUgPSBcIk0xMiwyMEM5Ljc5LDIwIDcuNzksMTkuMSA2LjM0LDE3LjY2TDE3LjY2LDYuMzRDMTkuMSw3Ljc5IDIwLDkuNzkgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTYsOEg4VjZIOS41VjhIMTEuNVY5LjVIOS41VjExLjVIOFY5LjVINk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwxNkgxN1YxNC41SDEyVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvbnRyb2xsZXJDbGFzc2ljID0gXCJNNiw3SDE4QTUsNSAwIDAsMSAyMywxMkE1LDUgMCAwLDEgMTgsMTdDMTYuMzYsMTcgMTQuOTEsMTYuMjEgMTQsMTVIMTBDOS4wOSwxNi4yMSA3LjY0LDE3IDYsMTdBNSw1IDAgMCwxIDEsMTJBNSw1IDAgMCwxIDYsN00xOS43NSw5LjVBMS4yNSwxLjI1IDAgMCwwIDE4LjUsMTAuNzVBMS4yNSwxLjI1IDAgMCwwIDE5Ljc1LDEyQTEuMjUsMS4yNSAwIDAsMCAyMSwxMC43NUExLjI1LDEuMjUgMCAwLDAgMTkuNzUsOS41TTE3LjI1LDEyQTEuMjUsMS4yNSAwIDAsMCAxNiwxMy4yNUExLjI1LDEuMjUgMCAwLDAgMTcuMjUsMTQuNUExLjI1LDEuMjUgMCAwLDAgMTguNSwxMy4yNUExLjI1LDEuMjUgMCAwLDAgMTcuMjUsMTJNNSw5VjExSDNWMTNINVYxNUg3VjEzSDlWMTFIN1Y5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29udHJvbGxlckNsYXNzaWNPdXRsaW5lID0gXCJNMTcuNSw3QTUuNSw1LjUgMCAwLDEgMjMsMTIuNUE1LjUsNS41IDAgMCwxIDE3LjUsMThDMTUuNzksMTggMTQuMjcsMTcuMjIgMTMuMjYsMTZIMTAuNzRDOS43MywxNy4yMiA4LjIxLDE4IDYuNSwxOEE1LjUsNS41IDAgMCwxIDEsMTIuNUE1LjUsNS41IDAgMCwxIDYuNSw3SDE3LjVNNi41LDlBMy41LDMuNSAwIDAsMCAzLDEyLjVBMy41LDMuNSAwIDAsMCA2LjUsMTZDNy45LDE2IDkuMSwxNS4xOCA5LjY2LDE0SDE0LjM0QzE0LjksMTUuMTggMTYuMSwxNiAxNy41LDE2QTMuNSwzLjUgMCAwLDAgMjEsMTIuNUEzLjUsMy41IDAgMCwwIDE3LjUsOUg2LjVNNS43NSwxMC4yNUg3LjI1VjExLjc1SDguNzVWMTMuMjVINy4yNVYxNC43NUg1Ljc1VjEzLjI1SDQuMjVWMTEuNzVINS43NVYxMC4yNU0xNi43NSwxMi41QTEsMSAwIDAsMSAxNy43NSwxMy41QTEsMSAwIDAsMSAxNi43NSwxNC41QTEsMSAwIDAsMSAxNS43NSwxMy41QTEsMSAwIDAsMSAxNi43NSwxMi41TTE4Ljc1LDEwLjVBMSwxIDAgMCwxIDE5Ljc1LDExLjVBMSwxIDAgMCwxIDE4Ljc1LDEyLjVBMSwxIDAgMCwxIDE3Ljc1LDExLjVBMSwxIDAgMCwxIDE4Ljc1LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llID0gXCJNMTIsM0E5LDkgMCAwLDAgMywxMkE5LDkgMCAwLDAgMTIsMjFBOSw5IDAgMCwwIDIxLDEyQzIxLDExLjUgMjAuOTYsMTEgMjAuODcsMTAuNUMyMC42LDEwIDIwLDEwIDIwLDEwSDE4VjlDMTgsOCAxNyw4IDE3LDhIMTVWN0MxNSw2IDE0LDYgMTQsNkgxM1Y0QzEzLDMgMTIsMyAxMiwzTTkuNSw2QTEuNSwxLjUgMCAwLDEgMTEsNy41QTEuNSwxLjUgMCAwLDEgOS41LDlBMS41LDEuNSAwIDAsMSA4LDcuNUExLjUsMS41IDAgMCwxIDkuNSw2TTYuNSwxMEExLjUsMS41IDAgMCwxIDgsMTEuNUExLjUsMS41IDAgMCwxIDYuNSwxM0ExLjUsMS41IDAgMCwxIDUsMTEuNUExLjUsMS41IDAgMCwxIDYuNSwxME0xMS41LDExQTEuNSwxLjUgMCAwLDEgMTMsMTIuNUExLjUsMS41IDAgMCwxIDExLjUsMTRBMS41LDEuNSAwIDAsMSAxMCwxMi41QTEuNSwxLjUgMCAwLDEgMTEuNSwxMU0xNi41LDEzQTEuNSwxLjUgMCAwLDEgMTgsMTQuNUExLjUsMS41IDAgMCwxIDE2LjUsMTZIMTYuNUExLjUsMS41IDAgMCwxIDE1LDE0LjVIMTVBMS41LDEuNSAwIDAsMSAxNi41LDEzTTExLDE2QTEuNSwxLjUgMCAwLDEgMTIuNSwxNy41QTEuNSwxLjUgMCAwLDEgMTEsMTlBMS41LDEuNSAwIDAsMSA5LjUsMTcuNUExLjUsMS41IDAgMCwxIDExLDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZUFsZXJ0ID0gXCJNMTggMTBIMTZWOUMxNiA4IDE1IDggMTUgOEgxM1Y3QzEzIDYgMTIgNiAxMiA2SDExVjRDMTEgMyAxMCAzIDEwIDNDNSAzIDEgNyAxIDEyUzUgMjEgMTAgMjEgMTkgMTcgMTkgMTJDMTkgMTEuNSAxOSAxMSAxOC45IDEwLjVDMTguNiAxMCAxOCAxMCAxOCAxME00LjUgMTNDMy43IDEzIDMgMTIuMyAzIDExLjVTMy43IDEwIDQuNSAxMCA2IDEwLjcgNiAxMS41IDUuMyAxMyA0LjUgMTNNNiA3LjVDNiA2LjcgNi43IDYgNy41IDZTOSA2LjcgOSA3LjUgOC4zIDkgNy41IDkgNiA4LjMgNiA3LjVNOSAxOUM4LjIgMTkgNy41IDE4LjMgNy41IDE3LjVTOC4yIDE2IDkgMTYgMTAuNSAxNi43IDEwLjUgMTcuNSA5LjggMTkgOSAxOU05LjUgMTRDOC43IDE0IDggMTMuMyA4IDEyLjVTOC43IDExIDkuNSAxMSAxMSAxMS43IDExIDEyLjUgMTAuMyAxNCA5LjUgMTRNMTQuNSAxNkMxMy43IDE2IDEzIDE1LjMgMTMgMTQuNVMxMy43IDEzIDE0LjUgMTNDMTUuMyAxMyAxNiAxMy43IDE2IDE0LjVTMTUuMyAxNiAxNC41IDE2TTIxIDE1SDIzVjE3SDIxVjE1TTIzIDdWMTNIMjFWN0gyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVBbGVydE91dGxpbmUgPSBcIk0xNiAxNC41QzE2IDE1LjMgMTUuMyAxNiAxNC41IDE2UzEzIDE1LjMgMTMgMTQuNSAxMy43IDEzIDE0LjUgMTNDMTUuMyAxMyAxNiAxMy43IDE2IDE0LjVNMTguOSAxMC41QzE5IDExIDE5IDExLjUgMTkgMTJDMTkgMTcgMTUgMjEgMTAgMjFTMSAxNyAxIDEyIDUgMyAxMCAzQzEwIDMgMTEgMyAxMSA0VjZIMTJDMTIgNiAxMyA2IDEzIDdWOEgxNUMxNSA4IDE2IDggMTYgOVYxMEgxOEMxOCAxMCAxOC42IDEwIDE4LjkgMTAuNU0xNyAxMkgxNS41QzE0LjcgMTIgMTQgMTEuMyAxNCAxMC41VjEwSDEyLjVDMTEuNyAxMCAxMSA5LjMgMTEgOC41VjhIMTAuNUM5LjcgOCA5IDcuMyA5IDYuNVY1LjFDNS45IDUuNSAzLjUgOCAzLjEgMTEuMUMzLjIgMTAuNSAzLjggMTAgNC41IDEwQzUuMyAxMCA2IDEwLjcgNiAxMS41UzUuMyAxMyA0LjUgMTNDMy43IDEzIDMuMSAxMi40IDMgMTEuNkMzIDEyLjEgMyAxMi42IDMuMSAxMy4xQzMuNSAxNS44IDUuNiAxOCA4LjIgMTguN0M3LjggMTguNCA3LjUgMTggNy41IDE3LjVDNy41IDE2LjcgOC4yIDE2IDkgMTZTMTAuNSAxNi43IDEwLjUgMTcuNUMxMC41IDE4LjIgMTAgMTguOCA5LjMgMTlDMTMuNSAxOS40IDE3IDE2LjEgMTcgMTJNOS41IDExQzguNyAxMSA4IDExLjcgOCAxMi41UzguNyAxNCA5LjUgMTQgMTEgMTMuMyAxMSAxMi41IDEwLjMgMTEgOS41IDExTTkgNy41QzkgNi43IDguMyA2IDcuNSA2UzYgNi43IDYgNy41IDYuNyA5IDcuNSA5IDkgOC4zIDkgNy41TTIxIDE3SDIzVjE1SDIxVjE3TTIxIDdWMTNIMjNWN0gyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVDaGVjayA9IFwiTTE1IDE0LjUzQzE1IDE0LjUgMTUgMTQuNSAxNSAxNC41QzE1IDEzLjY3IDE1LjY3IDEzIDE2LjUgMTNDMTYuOCAxMyAxNy4wOCAxMy4wOSAxNy4zMiAxMy4yNEMxNy44NSAxMy4wOSAxOC40MiAxMyAxOSAxM0MxOS42NiAxMyAyMC4zIDEzLjEyIDIwLjg5IDEzLjMyQzIwLjk2IDEyLjg5IDIxIDEyLjQ1IDIxIDEyQzIxIDExLjUgMjAuOTYgMTEgMjAuODcgMTAuNUMyMC42IDEwIDIwIDEwIDIwIDEwSDE4VjlDMTggOCAxNyA4IDE3IDhIMTVWN0MxNSA2IDE0IDYgMTQgNkgxM1Y0QzEzIDMgMTIgMyAxMiAzQzcuMDMgMyAzIDcuMDMgMyAxMlM3LjAzIDIxIDEyIDIxQzEyLjQ1IDIxIDEyLjg5IDIwLjk2IDEzLjMyIDIwLjg5QzEzLjEyIDIwLjMgMTMgMTkuNjYgMTMgMTlDMTMgMTcuMjIgMTMuNzggMTUuNjMgMTUgMTQuNTNNNi41IDEzQzUuNjcgMTMgNSAxMi4zMyA1IDExLjVTNS42NyAxMCA2LjUgMTAgOCAxMC42NyA4IDExLjUgNy4zMyAxMyA2LjUgMTNNOCA3LjVDOCA2LjY3IDguNjcgNiA5LjUgNlMxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5IDggOC4zMyA4IDcuNU0xMSAxOUMxMC4xNyAxOSA5LjUgMTguMzMgOS41IDE3LjVTMTAuMTcgMTYgMTEgMTYgMTIuNSAxNi42NyAxMi41IDE3LjUgMTEuODMgMTkgMTEgMTlNMTEuNSAxNEMxMC42NyAxNCAxMCAxMy4zMyAxMCAxMi41UzEwLjY3IDExIDExLjUgMTEgMTMgMTEuNjcgMTMgMTIuNSAxMi4zMyAxNCAxMS41IDE0TTIyLjUgMTcuMjVMMTcuNzUgMjJMMTUgMTlMMTYuMTYgMTcuODRMMTcuNzUgMTkuNDNMMjEuMzQgMTUuODRMMjIuNSAxNy4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVDaGVja091dGxpbmUgPSBcIk0xNSAxMEgxNC41QzEzLjY3IDEwIDEzIDkuMzMgMTMgOC41VjhIMTIuNUMxMS42NyA4IDExIDcuMzMgMTEgNi41VjUuMDdDNy45MSA1LjUgNS40NyA4IDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNlMxMi41IDE2LjY3IDEyLjUgMTcuNUMxMi41IDE4LjIyIDEyIDE4LjgyIDExLjMyIDE4Ljk2QzExLjkgMTkgMTIuNDYgMTkgMTMgMTguOTJDMTMgMTguOTUgMTMgMTguOTcgMTMgMTlDMTMgMTkuNjYgMTMuMTIgMjAuMyAxMy4zMiAyMC44OUMxMi44OSAyMC45NiAxMi40NSAyMSAxMiAyMUM3LjAzIDIxIDMgMTYuOTcgMyAxMlM3LjAzIDMgMTIgM0MxMiAzIDEzIDMgMTMgNFY2SDE0QzE0IDYgMTUgNiAxNSA3VjhIMTdDMTcgOCAxOCA4IDE4IDlWMTBIMjBDMjAgMTAgMjAuNiAxMCAyMC44NyAxMC41QzIwLjk2IDExIDIxIDExLjUgMjEgMTJDMjEgMTIuNDUgMjAuOTYgMTIuODkgMjAuODkgMTMuMzJDMjAuMyAxMy4xMiAxOS42NiAxMyAxOSAxM0MxOC45NyAxMyAxOC45NSAxMyAxOC45MiAxM0MxOC45NyAxMi42OCAxOSAxMi4zNCAxOSAxMkgxNy41QzE2LjY3IDEyIDE2IDExLjMzIDE2IDEwLjVWMTBIMTVNMTUgMTQuNUMxNSAxNC41IDE1IDE0LjUgMTUgMTQuNTNDMTUuNjYgMTMuOTUgMTYuNDUgMTMuNSAxNy4zMiAxMy4yNEMxNy4wOCAxMy4wOSAxNi44IDEzIDE2LjUgMTNDMTUuNjcgMTMgMTUgMTMuNjcgMTUgMTQuNU0xMS41IDE0QzEyLjMzIDE0IDEzIDEzLjMzIDEzIDEyLjVTMTIuMzMgMTEgMTEuNSAxMSAxMCAxMS42NyAxMCAxMi41IDEwLjY3IDE0IDExLjUgMTRNMTEgNy41QzExIDYuNjcgMTAuMzMgNiA5LjUgNlM4IDYuNjcgOCA3LjUgOC42NyA5IDkuNSA5IDExIDguMzMgMTEgNy41TTIxLjM0IDE1Ljg0TDE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llQ2xvY2sgPSBcIk0xOS45NyAxMC4yNEMxOS45NSAxMCAxOS45MSA5Ljc0IDE5Ljg3IDkuNUMxOS42IDkgMTkgOSAxOSA5SDE3VjhDMTcgNyAxNiA3IDE2IDdIMTRWNkMxNCA1IDEzIDUgMTMgNUgxMlYzQzEyIDIgMTEgMiAxMSAyQzYuMDMgMiAyIDYuMDMgMiAxMUMyIDE1LjcxIDUuNjIgMTkuNTcgMTAuMjMgMTkuOTZDMTEuNSAyMS44IDEzLjYxIDIzIDE2IDIzQzE5Ljg3IDIzIDIzIDE5Ljg3IDIzIDE2QzIzIDEzLjYxIDIxLjggMTEuNSAxOS45NyAxMC4yNE0xMS42NCAxMC41M0MxMC44NyAxMS4xNSAxMC4yMyAxMS45MiA5Ljc4IDEyLjgxQzkuMzIgMTIuNTUgOSAxMi4wNiA5IDExLjVDOSAxMC42NyA5LjY3IDEwIDEwLjUgMTBDMTAuOTYgMTAgMTEuMzYgMTAuMjEgMTEuNjQgMTAuNTNNNS41IDEyQzQuNjcgMTIgNCAxMS4zMyA0IDEwLjVTNC42NyA5IDUuNSA5IDcgOS42NyA3IDEwLjUgNi4zMyAxMiA1LjUgMTJNNyA2LjVDNyA1LjY3IDcuNjcgNSA4LjUgNVMxMCA1LjY3IDEwIDYuNSA5LjMzIDggOC41IDggNyA3LjMzIDcgNi41TTguNSAxNi41QzguNSAxNi4wNCA4LjcxIDE1LjY0IDkuMDMgMTUuMzZDOSAxNS41NyA5IDE1Ljc5IDkgMTZDOSAxNi42MiA5LjA5IDE3LjIyIDkuMjQgMTcuNzlDOC44IDE3LjUgOC41IDE3LjA1IDguNSAxNi41TTE2IDIxQzEzLjI0IDIxIDExIDE4Ljc2IDExIDE2UzEzLjI0IDExIDE2IDExIDIxIDEzLjI0IDIxIDE2IDE4Ljc2IDIxIDE2IDIxTTE2LjUgMTYuMjVMMTkuMzYgMTcuOTRMMTguNjEgMTkuMTZMMTUgMTdWMTJIMTYuNVYxNi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVDbG9ja091dGxpbmUgPSBcIk04LjUgOEM3LjY3IDggNyA3LjMzIDcgNi41UzcuNjcgNSA4LjUgNSAxMCA1LjY3IDEwIDYuNSA5LjMzIDggOC41IDhNMTYuNSAxMkgxNVYxN0wxOC42MSAxOS4xNkwxOS4zNiAxNy45NEwxNi41IDE2LjI1VjEyTTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzEzLjYxIDIzIDExLjUgMjEuOCAxMC4yMyAxOS45NkM1LjYyIDE5LjU3IDIgMTUuNzEgMiAxMUMyIDYuMDMgNi4wMyAyIDExIDJDMTEgMiAxMiAyIDEyIDNWNUgxM0MxMyA1IDE0IDUgMTQgNlY3SDE2QzE2IDcgMTcgNyAxNyA4VjlIMTlDMTkgOSAxOS42IDkgMTkuODcgOS41QzE5LjkxIDkuNzQgMTkuOTUgMTAgMTkuOTcgMTAuMjRDMjEuOCAxMS41IDIzIDEzLjYxIDIzIDE2TTkuMTYgMTcuNzRDOC43NiAxNy40NyA4LjUgMTcgOC41IDE2LjVDOC41IDE2LjA0IDguNzEgMTUuNjQgOS4wMyAxNS4zNkM5LjEyIDE0LjQ1IDkuMzggMTMuNTkgOS43OCAxMi44MUM5LjMyIDEyLjU1IDkgMTIuMDYgOSAxMS41QzkgMTAuNjcgOS42NyAxMCAxMC41IDEwQzEwLjk2IDEwIDExLjM2IDEwLjIxIDExLjY0IDEwLjUzQzEyLjU5IDkuNzcgMTMuNzQgOS4yNiAxNSA5LjA4VjlIMTMuNUMxMi42NyA5IDEyIDguMzMgMTIgNy41VjdIMTEuNUMxMC42NyA3IDEwIDYuMzMgMTAgNS41VjQuMDdDNi45MSA0LjUgNC40NyA3IDQuMDcgMTAuMDhDNC4yNSA5LjQ2IDQuODIgOSA1LjUgOUM2LjMzIDkgNyA5LjY3IDcgMTAuNVM2LjMzIDEyIDUuNSAxMkM0LjcxIDEyIDQuMDcgMTEuMzkgNCAxMC42MkM0IDExLjExIDQgMTEuNjEgNC4wOSAxMi4xMkM0LjUgMTQuODEgNi41NCAxNy4wNCA5LjE2IDE3Ljc0TTIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExUzExIDEzLjI0IDExIDE2IDEzLjI0IDIxIDE2IDIxIDIxIDE4Ljc2IDIxIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZUNvZyA9IFwiTTIxIDEyLjI5QzIxIDEyLjE5IDIxIDEyLjEgMjEgMTJDMjEgMTEuNSAyMC45NiAxMSAyMC44NyAxMC41QzIwLjYgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTIuMSAyMSAxMi4xOSAyMSAxMi4yOSAyMUMxMi4xMSAyMC4zNiAxMiAxOS42OSAxMiAxOUMxMiAxOC44NiAxMiAxOC43MyAxMiAxOC41OUMxMS43NSAxOC44NCAxMS40IDE5IDExIDE5QzEwLjE3IDE5IDkuNSAxOC4zMyA5LjUgMTcuNVMxMC4xNyAxNiAxMSAxNkMxMS41OSAxNiAxMi4xIDE2LjM1IDEyLjM0IDE2Ljg0QzEzLjI1IDE0LjAzIDE1Ljg5IDEyIDE5IDEyQzE5LjY5IDEyIDIwLjM2IDEyLjExIDIxIDEyLjI5TTYuNSAxM0M1LjY3IDEzIDUgMTIuMzMgNSAxMS41UzUuNjcgMTAgNi41IDEwIDggMTAuNjcgOCAxMS41IDcuMzMgMTMgNi41IDEzTTkuNSA5QzguNjcgOSA4IDguMzMgOCA3LjVTOC42NyA2IDkuNSA2IDExIDYuNjcgMTEgNy41IDEwLjMzIDkgOS41IDlNMTEuNSAxNEMxMC42NyAxNCAxMCAxMy4zMyAxMCAxMi41UzEwLjY3IDExIDExLjUgMTEgMTMgMTEuNjcgMTMgMTIuNSAxMi4zMyAxNCAxMS41IDE0TTIyLjcgMTkuNlYxOC42TDIzLjggMTcuOEMyMy45IDE3LjcgMjQgMTcuNiAyMy45IDE3LjVMMjIuOSAxNS44QzIyLjkgMTUuNyAyMi43IDE1LjcgMjIuNiAxNS43TDIxLjQgMTYuMkMyMS4xIDE2IDIwLjggMTUuOCAyMC41IDE1LjdMMjAuMyAxNC40QzIwLjMgMTQuMyAyMC4yIDE0LjIgMjAuMSAxNC4ySDE4LjFDMTcuOSAxNC4yIDE3LjggMTQuMyAxNy44IDE0LjRMMTcuNiAxNS43QzE3LjMgMTUuOSAxNy4xIDE2IDE2LjggMTYuMkwxNS42IDE1LjdDMTUuNSAxNS43IDE1LjQgMTUuNyAxNS4zIDE1LjhMMTQuMyAxNy41QzE0LjMgMTcuNiAxNC4zIDE3LjcgMTQuNCAxNy44TDE1LjUgMTguNlYxOS42TDE0LjQgMjAuNEMxNC4zIDIwLjUgMTQuMiAyMC42IDE0LjMgMjAuN0wxNS4zIDIyLjRDMTUuNCAyMi41IDE1LjUgMjIuNSAxNS42IDIyLjVMMTYuOCAyMkMxNyAyMi4yIDE3LjMgMjIuNCAxNy42IDIyLjVMMTcuOCAyMy44QzE3LjkgMjMuOSAxOCAyNCAxOC4xIDI0SDIwLjFDMjAuMiAyNCAyMC4zIDIzLjkgMjAuMyAyMy44TDIwLjUgMjIuNUMyMC44IDIyLjMgMjEgMjIuMiAyMS4zIDIyTDIyLjUgMjIuNEMyMi42IDIyLjQgMjIuNyAyMi40IDIyLjggMjIuM0wyMy44IDIwLjZDMjMuOSAyMC41IDIzLjkgMjAuNCAyMy44IDIwLjRMMjIuNyAxOS42TTE5IDIwLjVDMTguMiAyMC41IDE3LjUgMTkuOCAxNy41IDE5UzE4LjIgMTcuNSAxOSAxNy41IDIwLjUgMTguMiAyMC41IDE5IDE5LjggMjAuNSAxOSAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZUNvZ091dGxpbmUgPSBcIk0xNC41IDEwQzEzLjY3IDEwIDEzIDkuMzMgMTMgOC41VjhIMTIuNUMxMS42NyA4IDExIDcuMzMgMTEgNi41VjUuMDdDNy45MSA1LjUgNS40NyA4IDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNkMxMS41OSAxNiAxMi4xIDE2LjM1IDEyLjM0IDE2Ljg0QzEyLjE2IDE3LjM5IDEyLjA2IDE3Ljk3IDEyIDE4LjU3QzExLjgzIDE4Ljc2IDExLjYgMTguOSAxMS4zMiAxOC45NkMxMS41NSAxOSAxMS43OCAxOSAxMiAxOVYxOUMxMiAxOS42OSAxMi4xMSAyMC4zNiAxMi4yOSAyMUMxMi4xOSAyMSAxMi4xIDIxIDEyIDIxQzcuMDMgMjEgMyAxNi45NyAzIDEyUzcuMDMgMyAxMiAzQzEyIDMgMTMgMyAxMyA0VjZIMTRDMTQgNiAxNSA2IDE1IDdWOEgxN0MxNyA4IDE4IDggMTggOVYxMEgyMEMyMCAxMCAyMC42IDEwIDIwLjg3IDEwLjVDMjAuOTYgMTEgMjEgMTEuNSAyMSAxMkMyMSAxMi4xIDIxIDEyLjE5IDIxIDEyLjI5QzIwLjM2IDEyLjExIDE5LjY5IDEyIDE5IDEySDE3LjVDMTYuNjcgMTIgMTYgMTEuMzMgMTYgMTAuNVYxMEgxNC41TTExLjUgMTFDMTAuNjcgMTEgMTAgMTEuNjcgMTAgMTIuNVMxMC42NyAxNCAxMS41IDE0IDEzIDEzLjMzIDEzIDEyLjUgMTIuMzMgMTEgMTEuNSAxMU0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMjMuOCAyMC40QzIzLjkgMjAuNCAyMy45IDIwLjUgMjMuOCAyMC42TDIyLjggMjIuM0MyMi43IDIyLjQgMjIuNiAyMi40IDIyLjUgMjIuNEwyMS4zIDIyQzIxIDIyLjIgMjAuOCAyMi4zIDIwLjUgMjIuNUwyMC4zIDIzLjhDMjAuMyAyMy45IDIwLjIgMjQgMjAuMSAyNEgxOC4xQzE4IDI0IDE3LjkgMjMuOSAxNy44IDIzLjhMMTcuNiAyMi41QzE3LjMgMjIuNCAxNyAyMi4yIDE2LjggMjJMMTUuNiAyMi41QzE1LjUgMjIuNSAxNS40IDIyLjUgMTUuMyAyMi40TDE0LjMgMjAuN0MxNC4yIDIwLjYgMTQuMyAyMC41IDE0LjQgMjAuNEwxNS41IDE5LjZWMTguNkwxNC40IDE3LjhDMTQuMyAxNy43IDE0LjMgMTcuNiAxNC4zIDE3LjVMMTUuMyAxNS44QzE1LjQgMTUuNyAxNS41IDE1LjcgMTUuNiAxNS43TDE2LjggMTYuMkMxNy4xIDE2IDE3LjMgMTUuOSAxNy42IDE1LjdMMTcuOCAxNC40QzE3LjggMTQuMyAxNy45IDE0LjIgMTguMSAxNC4ySDIwLjFDMjAuMiAxNC4yIDIwLjMgMTQuMyAyMC4zIDE0LjRMMjAuNSAxNS43QzIwLjggMTUuOCAyMS4xIDE2IDIxLjQgMTYuMkwyMi42IDE1LjdDMjIuNyAxNS43IDIyLjkgMTUuNyAyMi45IDE1LjhMMjMuOSAxNy41QzI0IDE3LjYgMjMuOSAxNy43IDIzLjggMTcuOEwyMi43IDE4LjZWMTkuNkwyMy44IDIwLjRNMjAuNSAxOUMyMC41IDE4LjIgMTkuOCAxNy41IDE5IDE3LjVTMTcuNSAxOC4yIDE3LjUgMTkgMTguMiAyMC41IDE5IDIwLjUgMjAuNSAxOS44IDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llRWRpdCA9IFwiTTE1LjEgMTUuMDNDMTUuMDQgMTQuODYgMTUgMTQuNjkgMTUgMTQuNUMxNSAxMy42NyAxNS42NyAxMyAxNi41IDEzQzE2LjY5IDEzIDE2Ljg2IDEzLjA0IDE3LjAzIDEzLjFMMTkuMzkgMTAuNzRDMTkuNjkgMTAuNDQgMjAuMDUgMTAuMjQgMjAuNDQgMTAuMTJDMjAuMjEgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyQzMgMTYuNjMgNi41IDIwLjQ0IDExIDIwLjk0VjE5LjEzTDExLjE0IDE5QzExLjEgMTkgMTEuMDUgMTkgMTEgMTlDMTAuMTcgMTkgOS41IDE4LjMzIDkuNSAxNy41UzEwLjE3IDE2IDExIDE2IDEyLjUgMTYuNjcgMTIuNSAxNy41QzEyLjUgMTcuNTUgMTIuNSAxNy42IDEyLjUgMTcuNjRMMTUuMSAxNS4wM002LjUgMTNDNS42NyAxMyA1IDEyLjMzIDUgMTEuNVM1LjY3IDEwIDYuNSAxMCA4IDEwLjY3IDggMTEuNSA3LjMzIDEzIDYuNSAxM005LjUgOUM4LjY3IDkgOCA4LjMzIDggNy41UzguNjcgNiA5LjUgNiAxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5TTExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNVMxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjUgMTIuMzMgMTQgMTEuNSAxNE0yMi44NSAxNC4xOUwyMS44NyAxNS4xN0wxOS44MyAxMy4xM0wyMC44MSAxMi4xNUMyMSAxMS45NSAyMS4zMyAxMS45NSAyMS41MyAxMi4xNUwyMi44NSAxMy40N0MyMy4wNSAxMy42NyAyMy4wNSAxNCAyMi44NSAxNC4xOU0xOS4xMyAxMy44M0wyMS4xNyAxNS44N0wxNS4wNCAyMkgxM1YxOS45NkwxOS4xMyAxMy44M1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVFZGl0T3V0bGluZSA9IFwiTTkuNSA2QzEwLjMzIDYgMTEgNi42NyAxMSA3LjVTMTAuMzMgOSA5LjUgOSA4IDguMzMgOCA3LjUgOC42NyA2IDkuNSA2TTExLjUgMTFDMTAuNjcgMTEgMTAgMTEuNjcgMTAgMTIuNVMxMC42NyAxNCAxMS41IDE0IDEzIDEzLjMzIDEzIDEyLjUgMTIuMzMgMTEgMTEuNSAxMU0xMSAxNkMxMC4xNyAxNiA5LjUgMTYuNjcgOS41IDE3LjVDOS41IDE4IDkuNzYgMTguNDcgMTAuMTYgMTguNzRDNy41NCAxOC4wNCA1LjUgMTUuODEgNS4wOSAxMy4xMkM1IDEyLjYxIDUgMTIuMTEgNSAxMS42MkM1LjA3IDEyLjM5IDUuNzEgMTMgNi41IDEzQzcuMzMgMTMgOCAxMi4zMyA4IDExLjVTNy4zMyAxMCA2LjUgMTBDNS44MiAxMCA1LjI1IDEwLjQ2IDUuMDcgMTEuMDhDNS40NyA4IDcuOTEgNS41IDExIDUuMDdWNi41QzExIDcuMzMgMTEuNjcgOCAxMi41IDhIMTNWOC41QzEzIDkuMzMgMTMuNjcgMTAgMTQuNSAxMEgxNlYxMC41QzE2IDExLjMzIDE2LjY3IDEyIDE3LjUgMTJIMTguMTNMMTkuMzkgMTAuNzRDMTkuNjkgMTAuNDQgMjAuMDUgMTAuMjQgMjAuNDQgMTAuMTJDMjAuMjEgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyQzMgMTYuNjMgNi41IDIwLjQ0IDExIDIwLjk0VjE5LjEzTDEyLjQ3IDE3LjY2QzEyLjUgMTcuNiAxMi41IDE3LjU1IDEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2TTE1IDE0LjVDMTUgMTQuNjkgMTUuMDQgMTQuODYgMTUuMSAxNS4wM0wxNy4wMyAxMy4xQzE2Ljg2IDEzLjA0IDE2LjY5IDEzIDE2LjUgMTNDMTUuNjcgMTMgMTUgMTMuNjcgMTUgMTQuNU0yMi44NSAxMy40N0wyMS41MyAxMi4xNUMyMS4zMyAxMS45NSAyMSAxMS45NSAyMC44MSAxMi4xNUwxOS44MyAxMy4xM0wyMS44NyAxNS4xN0wyMi44NSAxNC4xOUMyMy4wNSAxNCAyMy4wNSAxMy42NyAyMi44NSAxMy40N00xMyAxOS45NlYyMkgxNS4wNEwyMS4xNyAxNS44OEwxOS4xMyAxMy44M0wxMyAxOS45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVMb2NrID0gXCJNMTguNSAxMUMxOS40MiAxMSAyMC4yNyAxMS4yOSAyMSAxMS43N0MyMSAxMS4zNSAyMC45NSAxMC45MiAyMC44NyAxMC41QzIwLjYgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTIuMzQgMjEgMTIuNjcgMjEgMTMgMjAuOTRWMTdDMTMgMTYuMDggMTMuNDIgMTUuMjYgMTQuMDcgMTQuNzFDMTQuNDUgMTIuNiAxNi4yOSAxMSAxOC41IDExTTYuNSAxM0M1LjY3IDEzIDUgMTIuMzMgNSAxMS41UzUuNjcgMTAgNi41IDEwIDggMTAuNjcgOCAxMS41IDcuMzMgMTMgNi41IDEzTTggNy41QzggNi42NyA4LjY3IDYgOS41IDZTMTEgNi42NyAxMSA3LjUgMTAuMzMgOSA5LjUgOSA4IDguMzMgOCA3LjVNMTEgMTlDMTAuMTcgMTkgOS41IDE4LjMzIDkuNSAxNy41UzEwLjE3IDE2IDExIDE2IDEyLjUgMTYuNjcgMTIuNSAxNy41IDExLjgzIDE5IDExIDE5TTExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNVMxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjUgMTIuMzMgMTQgMTEuNSAxNE0yMSAxNlYxNS41QzIxIDE0LjEyIDE5Ljg4IDEzIDE4LjUgMTNTMTYgMTQuMTIgMTYgMTUuNVYxNkMxNS40NSAxNiAxNSAxNi40NSAxNSAxN1YyMUMxNSAyMS41NSAxNS40NSAyMiAxNiAyMkgyMUMyMS41NSAyMiAyMiAyMS41NSAyMiAyMVYxN0MyMiAxNi40NSAyMS41NSAxNiAyMSAxNk0yMCAxNkgxN1YxNS41QzE3IDE0LjY3IDE3LjY3IDE0IDE4LjUgMTRTMjAgMTQuNjcgMjAgMTUuNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVMb2NrT3V0bGluZSA9IFwiTTEwIDEyLjVDMTAgMTEuNjcgMTAuNjcgMTEgMTEuNSAxMVMxMyAxMS42NyAxMyAxMi41IDEyLjMzIDE0IDExLjUgMTQgMTAgMTMuMzMgMTAgMTIuNU0xNiAxMFYxMC41QzE2IDEwLjkgMTYuMTYgMTEuMjYgMTYuNDEgMTEuNTNDMTcuMDQgMTEuMiAxNy43NSAxMSAxOC41IDExQzE5LjQyIDExIDIwLjI3IDExLjI5IDIxIDExLjc3QzIxIDExLjM1IDIwLjk1IDEwLjkyIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi4zNCAyMSAxMi42NyAyMSAxMyAyMC45NFYxOC45MkMxMi40NiAxOSAxMS45IDE5IDExLjMyIDE4Ljk2QzEyIDE4LjgyIDEyLjUgMTguMjIgMTIuNSAxNy41QzEyLjUgMTYuNjcgMTEuODMgMTYgMTEgMTZTOS41IDE2LjY3IDkuNSAxNy41QzkuNSAxOCA5Ljc2IDE4LjQ3IDEwLjE2IDE4Ljc0QzcuNTQgMTguMDQgNS41IDE1LjgxIDUuMDkgMTMuMTJDNSAxMi42MSA1IDEyLjExIDUgMTEuNjJDNS4wNyAxMi4zOSA1LjcxIDEzIDYuNSAxM0M3LjMzIDEzIDggMTIuMzMgOCAxMS41UzcuMzMgMTAgNi41IDEwQzUuODIgMTAgNS4yNSAxMC40NiA1LjA3IDExLjA4QzUuNDcgOCA3LjkxIDUuNSAxMSA1LjA3VjYuNUMxMSA3LjMzIDExLjY3IDggMTIuNSA4SDEzVjguNUMxMyA5LjMzIDEzLjY3IDEwIDE0LjUgMTBIMTZNMTEgNy41QzExIDYuNjcgMTAuMzMgNiA5LjUgNlM4IDYuNjcgOCA3LjUgOC42NyA5IDkuNSA5IDExIDguMzMgMTEgNy41TTIyIDE3VjIxQzIyIDIxLjU1IDIxLjU1IDIyIDIxIDIySDE2QzE1LjQ1IDIyIDE1IDIxLjU1IDE1IDIxVjE3QzE1IDE2LjQ1IDE1LjQ1IDE2IDE2IDE2VjE1LjVDMTYgMTQuMTIgMTcuMTIgMTMgMTguNSAxM1MyMSAxNC4xMiAyMSAxNS41VjE2QzIxLjU1IDE2IDIyIDE2LjQ1IDIyIDE3TTIwIDE1LjVDMjAgMTQuNjcgMTkuMzMgMTQgMTguNSAxNFMxNyAxNC42NyAxNyAxNS41VjE2SDIwVjE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llTWludXMgPSBcIk0xNSAxNC41M0MxNSAxNC41IDE1IDE0LjUgMTUgMTQuNUMxNSAxMy42NyAxNS42NyAxMyAxNi41IDEzQzE2LjggMTMgMTcuMDggMTMuMDkgMTcuMzIgMTMuMjRDMTcuODUgMTMuMDkgMTguNDIgMTMgMTkgMTNDMTkuNjYgMTMgMjAuMyAxMy4xMiAyMC44OSAxMy4zMkMyMC45NiAxMi44OSAyMSAxMi40NSAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi40NSAyMSAxMi44OSAyMC45NiAxMy4zMiAyMC44OUMxMy4xMiAyMC4zIDEzIDE5LjY2IDEzIDE5QzEzIDE3LjIyIDEzLjc4IDE1LjYzIDE1IDE0LjUzTTYuNSAxM0M1LjY3IDEzIDUgMTIuMzMgNSAxMS41UzUuNjcgMTAgNi41IDEwIDggMTAuNjcgOCAxMS41IDcuMzMgMTMgNi41IDEzTTggNy41QzggNi42NyA4LjY3IDYgOS41IDZTMTEgNi42NyAxMSA3LjUgMTAuMzMgOSA5LjUgOSA4IDguMzMgOCA3LjVNMTEgMTlDMTAuMTcgMTkgOS41IDE4LjMzIDkuNSAxNy41UzEwLjE3IDE2IDExIDE2IDEyLjUgMTYuNjcgMTIuNSAxNy41IDExLjgzIDE5IDExIDE5TTExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNVMxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjUgMTIuMzMgMTQgMTEuNSAxNE0yMyAxOFYyMEgxNVYxOEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVNaW51c091dGxpbmUgPSBcIk0xNSAxMEgxNC41QzEzLjY3IDEwIDEzIDkuMzMgMTMgOC41VjhIMTIuNUMxMS42NyA4IDExIDcuMzMgMTEgNi41VjUuMDdDNy45MSA1LjUgNS40NyA4IDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNlMxMi41IDE2LjY3IDEyLjUgMTcuNUMxMi41IDE4LjIyIDEyIDE4LjgyIDExLjMyIDE4Ljk2QzExLjkgMTkgMTIuNDYgMTkgMTMgMTguOTJDMTMgMTguOTUgMTMgMTguOTcgMTMgMTlDMTMgMTkuNjYgMTMuMTIgMjAuMyAxMy4zMiAyMC44OUMxMi44OSAyMC45NiAxMi40NSAyMSAxMiAyMUM3LjAzIDIxIDMgMTYuOTcgMyAxMlM3LjAzIDMgMTIgM0MxMiAzIDEzIDMgMTMgNFY2SDE0QzE0IDYgMTUgNiAxNSA3VjhIMTdDMTcgOCAxOCA4IDE4IDlWMTBIMjBDMjAgMTAgMjAuNiAxMCAyMC44NyAxMC41QzIwLjk2IDExIDIxIDExLjUgMjEgMTJDMjEgMTIuNDUgMjAuOTYgMTIuODkgMjAuODkgMTMuMzJDMjAuMyAxMy4xMiAxOS42NiAxMyAxOSAxM0MxOC45NyAxMyAxOC45NSAxMyAxOC45MiAxM0MxOC45NyAxMi42OCAxOSAxMi4zNCAxOSAxMkgxNy41QzE2LjY3IDEyIDE2IDExLjMzIDE2IDEwLjVWMTBIMTVNMTUgMTQuNUMxNSAxNC41IDE1IDE0LjUgMTUgMTQuNTNDMTUuNjYgMTMuOTUgMTYuNDUgMTMuNSAxNy4zMiAxMy4yNEMxNy4wOCAxMy4wOSAxNi44IDEzIDE2LjUgMTNDMTUuNjcgMTMgMTUgMTMuNjcgMTUgMTQuNU0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMTEuNSAxNEMxMi4zMyAxNCAxMyAxMy4zMyAxMyAxMi41UzEyLjMzIDExIDExLjUgMTEgMTAgMTEuNjcgMTAgMTIuNSAxMC42NyAxNCAxMS41IDE0TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZU9mZiA9IFwiTTkuMjUgNi4wNUw3LjQ1IDQuMjVDOC43OSAzLjQ2IDEwLjM0IDMgMTIgM0MxMiAzIDEzIDMgMTMgNFY2SDE0QzE0IDYgMTUgNiAxNSA3VjhIMTdDMTcgOCAxOCA4IDE4IDlWMTBIMjBDMjAgMTAgMjAuNiAxMCAyMC44NyAxMC41QzIwLjk2IDExIDIxIDExLjUgMjEgMTJDMjEgMTMuNjYgMjAuNTQgMTUuMjIgMTkuNzUgMTYuNTVMMTcuOTUgMTQuNzVDMTcuOTcgMTQuNjcgMTggMTQuNTkgMTggMTQuNUMxOCAxMy42NyAxNy4zMyAxMyAxNi41IDEzQzE2LjQxIDEzIDE2LjMzIDEzLjAzIDE2LjI1IDEzLjA1TDEwLjk1IDcuNzVDMTAuOTcgNy42NyAxMSA3LjU5IDExIDcuNUMxMSA2LjY3IDEwLjMzIDYgOS41IDZDOS40MSA2IDkuMzMgNi4wMyA5LjI1IDYuMDVNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTcuMzQgMTkuMjNDMTUuODUgMjAuMzQgMTQgMjEgMTIgMjFDNy4wMyAyMSAzIDE2Ljk3IDMgMTJDMyAxMCAzLjY2IDguMTUgNC43NyA2LjY2TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNOCAxMS41QzggMTAuNjcgNy4zMyAxMCA2LjUgMTBTNSAxMC42NyA1IDExLjUgNS42NyAxMyA2LjUgMTMgOCAxMi4zMyA4IDExLjVNMTAgMTIuNUMxMCAxMy4zMyAxMC42NyAxNCAxMS41IDE0QzExLjY4IDE0IDExLjg1IDEzLjk2IDEyIDEzLjlMMTAuMSAxMkMxMC4wNCAxMi4xNSAxMCAxMi4zMiAxMCAxMi41TTEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2UzkuNSAxNi42NyA5LjUgMTcuNSAxMC4xNyAxOSAxMSAxOSAxMi41IDE4LjMzIDEyLjUgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVPZmZPdXRsaW5lID0gXCJNOC45MyA1LjczTDcuNDUgNC4yNUM4Ljc5IDMuNDYgMTAuMzQgMyAxMiAzQzEyIDMgMTMgMyAxMyA0VjZIMTRDMTQgNiAxNSA2IDE1IDdWOEgxN0MxNyA4IDE4IDggMTggOVYxMEgyMEMyMCAxMCAyMC42IDEwIDIwLjg3IDEwLjVDMjAuOTYgMTEgMjEgMTEuNSAyMSAxMkMyMSAxMy42NiAyMC41NCAxNS4yMiAxOS43NSAxNi41NUwxOC4yOCAxNS4wOEMxOC43NCAxNC4xNSAxOSAxMy4xMSAxOSAxMkgxNy41QzE2LjY3IDEyIDE2IDExLjMzIDE2IDEwLjVWMTBIMTQuNUMxMy42NyAxMCAxMyA5LjMzIDEzIDguNVY4SDEyLjVDMTEuNjcgOCAxMSA3LjMzIDExIDYuNVY1LjA3QzEwLjI2IDUuMTggOS41NyA1LjQxIDguOTMgNS43M005LjI1IDYuMDVMMTAuOTUgNy43NUMxMC45NyA3LjY3IDExIDcuNTkgMTEgNy41QzExIDYuNjcgMTAuMzMgNiA5LjUgNkM5LjQxIDYgOS4zMyA2LjAzIDkuMjUgNi4wNU0xNi4yNSAxMy4wNUwxNy45NSAxNC43NUMxNy45NyAxNC42NyAxOCAxNC41OSAxOCAxNC41QzE4IDEzLjY3IDE3LjMzIDEzIDE2LjUgMTNDMTYuNDEgMTMgMTYuMzMgMTMuMDMgMTYuMjUgMTMuMDVNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTcuMzQgMTkuMjNDMTUuODUgMjAuMzQgMTQgMjEgMTIgMjFDNy4wMyAyMSAzIDE2Ljk3IDMgMTJDMyAxMCAzLjY2IDguMTUgNC43NyA2LjY2TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNMTUuOSAxNy43OUwxMiAxMy45QzExLjg1IDEzLjk2IDExLjY4IDE0IDExLjUgMTRDMTAuNjcgMTQgMTAgMTMuMzMgMTAgMTIuNUMxMCAxMi4zMiAxMC4wNCAxMi4xNSAxMC4xIDEyTDYuMjEgOC4xQzUuNjIgOSA1LjIxIDEwIDUuMDcgMTEuMDhDNS4yNSAxMC40NiA1LjgyIDEwIDYuNSAxMEM3LjMzIDEwIDggMTAuNjcgOCAxMS41UzcuMzMgMTMgNi41IDEzQzUuNzEgMTMgNS4wNyAxMi4zOSA1IDExLjYyQzUgMTIuMTEgNSAxMi42MSA1LjA5IDEzLjEyQzUuNSAxNS44MSA3LjU0IDE4LjA0IDEwLjE2IDE4Ljc0QzkuNzYgMTguNDcgOS41IDE4IDkuNSAxNy41QzkuNSAxNi42NyAxMC4xNyAxNiAxMSAxNlMxMi41IDE2LjY3IDEyLjUgMTcuNUMxMi41IDE4LjIyIDEyIDE4LjgyIDExLjMyIDE4Ljk2QzEzLjAzIDE5LjEyIDE0LjYxIDE4LjY2IDE1LjkgMTcuNzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llT3V0bGluZSA9IFwiTTIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJDMyAxNi45NyA3LjAzIDIxIDEyIDIxQzE2Ljk3IDIxIDIxIDE2Ljk3IDIxIDEyQzIxIDExLjUgMjAuOTYgMTEgMjAuODcgMTAuNU0xMS4zMiAxOC45NkMxMiAxOC44MiAxMi41IDE4LjIyIDEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2UzkuNSAxNi42NyA5LjUgMTcuNUM5LjUgMTggOS43NiAxOC40NyAxMC4xNiAxOC43NEM3LjU0IDE4LjA0IDUuNSAxNS44MSA1LjA5IDEzLjEyQzUgMTIuNjEgNSAxMi4xMSA1IDExLjYyQzUuMDcgMTIuMzkgNS43MSAxMyA2LjUgMTNDNy4zMyAxMyA4IDEyLjMzIDggMTEuNVM3LjMzIDEwIDYuNSAxMEM1LjgyIDEwIDUuMjUgMTAuNDYgNS4wNyAxMS4wOEM1LjQ3IDggNy45MSA1LjUgMTEgNS4wN1Y2LjVDMTEgNy4zMyAxMS42NyA4IDEyLjUgOEgxM1Y4LjVDMTMgOS4zMyAxMy42NyAxMCAxNC41IDEwSDE2VjEwLjVDMTYgMTEuMzMgMTYuNjcgMTIgMTcuNSAxMkgxOUMxOSAxNi4wOCAxNS41IDE5LjM2IDExLjMyIDE4Ljk2TTkuNSA5QzguNjcgOSA4IDguMzMgOCA3LjVTOC42NyA2IDkuNSA2IDExIDYuNjcgMTEgNy41IDEwLjMzIDkgOS41IDlNMTMgMTIuNUMxMyAxMy4zMyAxMi4zMyAxNCAxMS41IDE0UzEwIDEzLjMzIDEwIDEyLjUgMTAuNjcgMTEgMTEuNSAxMSAxMyAxMS42NyAxMyAxMi41TTE4IDE0LjVDMTggMTUuMzMgMTcuMzMgMTYgMTYuNSAxNlMxNSAxNS4zMyAxNSAxNC41IDE1LjY3IDEzIDE2LjUgMTMgMTggMTMuNjcgMTggMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVQbHVzID0gXCJNMTUgMTQuNTNDMTUgMTQuNSAxNSAxNC41IDE1IDE0LjVDMTUgMTMuNjcgMTUuNjcgMTMgMTYuNSAxM0MxNi44IDEzIDE3LjA4IDEzLjA5IDE3LjMyIDEzLjI0QzE3Ljg1IDEzLjA5IDE4LjQyIDEzIDE5IDEzQzE5LjY2IDEzIDIwLjMgMTMuMTIgMjAuODkgMTMuMzJDMjAuOTYgMTIuODkgMjEgMTIuNDUgMjEgMTJDMjEgMTEuNSAyMC45NiAxMSAyMC44NyAxMC41QzIwLjYgMTAgMjAgMTAgMjAgMTBIMThWOUMxOCA4IDE3IDggMTcgOEgxNVY3QzE1IDYgMTQgNiAxNCA2SDEzVjRDMTMgMyAxMiAzIDEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTIuNDUgMjEgMTIuODkgMjAuOTYgMTMuMzIgMjAuODlDMTMuMTIgMjAuMyAxMyAxOS42NiAxMyAxOUMxMyAxNy4yMiAxMy43OCAxNS42MyAxNSAxNC41M002LjUgMTNDNS42NyAxMyA1IDEyLjMzIDUgMTEuNVM1LjY3IDEwIDYuNSAxMCA4IDEwLjY3IDggMTEuNSA3LjMzIDEzIDYuNSAxM004IDcuNUM4IDYuNjcgOC42NyA2IDkuNSA2UzExIDYuNjcgMTEgNy41IDEwLjMzIDkgOS41IDkgOCA4LjMzIDggNy41TTExIDE5QzEwLjE3IDE5IDkuNSAxOC4zMyA5LjUgMTcuNVMxMC4xNyAxNiAxMSAxNiAxMi41IDE2LjY3IDEyLjUgMTcuNSAxMS44MyAxOSAxMSAxOU0xMS41IDE0QzEwLjY3IDE0IDEwIDEzLjMzIDEwIDEyLjVTMTAuNjcgMTEgMTEuNSAxMSAxMyAxMS42NyAxMyAxMi41IDEyLjMzIDE0IDExLjUgMTRNMjMgMThWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVIMjBWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llUGx1c091dGxpbmUgPSBcIk0xNi41IDEzQzE2LjggMTMgMTcuMDggMTMuMDkgMTcuMzIgMTMuMjRDMTYuNDUgMTMuNSAxNS42NiAxMy45NSAxNSAxNC41M0MxNSAxNC41IDE1IDE0LjUgMTUgMTQuNUMxNSAxMy42NyAxNS42NyAxMyAxNi41IDEzTTE2IDEwVjEwLjVDMTYgMTEuMzMgMTYuNjcgMTIgMTcuNSAxMkgxOUMxOSAxMi4zNCAxOC45NyAxMi42OCAxOC45MiAxM0MxOC45NSAxMyAxOC45NyAxMyAxOSAxM0MxOS42NiAxMyAyMC4zIDEzLjEyIDIwLjg5IDEzLjMyQzIwLjk2IDEyLjg5IDIxIDEyLjQ1IDIxIDEyQzIxIDExLjUgMjAuOTYgMTEgMjAuODcgMTAuNUMyMC42IDEwIDIwIDEwIDIwIDEwSDE4VjlDMTggOCAxNyA4IDE3IDhIMTVWN0MxNSA2IDE0IDYgMTQgNkgxM1Y0QzEzIDMgMTIgMyAxMiAzQzcuMDMgMyAzIDcuMDMgMyAxMlM3LjAzIDIxIDEyIDIxQzEyLjQ1IDIxIDEyLjg5IDIwLjk2IDEzLjMyIDIwLjg5QzEzLjEyIDIwLjMgMTMgMTkuNjYgMTMgMTlDMTMgMTguOTcgMTMgMTguOTUgMTMgMTguOTJDMTIuNDYgMTkgMTEuOSAxOSAxMS4zMiAxOC45NkMxMiAxOC44MiAxMi41IDE4LjIyIDEyLjUgMTcuNUMxMi41IDE2LjY3IDExLjgzIDE2IDExIDE2UzkuNSAxNi42NyA5LjUgMTcuNUM5LjUgMTggOS43NiAxOC40NyAxMC4xNiAxOC43NEM3LjU0IDE4LjA0IDUuNSAxNS44MSA1LjA5IDEzLjEyQzUgMTIuNjEgNSAxMi4xMSA1IDExLjYyQzUuMDcgMTIuMzkgNS43MSAxMyA2LjUgMTNDNy4zMyAxMyA4IDEyLjMzIDggMTEuNVM3LjMzIDEwIDYuNSAxMEM1LjgyIDEwIDUuMjUgMTAuNDYgNS4wNyAxMS4wOEM1LjQ3IDggNy45MSA1LjUgMTEgNS4wN1Y2LjVDMTEgNy4zMyAxMS42NyA4IDEyLjUgOEgxM1Y4LjVDMTMgOS4zMyAxMy42NyAxMCAxNC41IDEwSDE2TTExLjUgMTRDMTIuMzMgMTQgMTMgMTMuMzMgMTMgMTIuNVMxMi4zMyAxMSAxMS41IDExIDEwIDExLjY3IDEwIDEyLjUgMTAuNjcgMTQgMTEuNSAxNE0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMjAgMThWMTVIMThWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29va2llUmVmcmVzaCA9IFwiTTExIDE2QzExLjUzIDE2IDEyIDE2LjI4IDEyLjI2IDE2LjY5QzEzLjA0IDE0IDE1LjU0IDEyIDE4LjUgMTJDMTkuMzggMTIgMjAuMjEgMTIuMTggMjEgMTIuNUMyMSAxMi4zMyAyMSAxMi4xNyAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi4xNyAyMSAxMi4zMyAyMSAxMi41IDIxQzEyLjE5IDIwLjI0IDEyIDE5LjQ0IDEyIDE4LjYxQzExLjc0IDE4Ljg1IDExLjM5IDE5IDExIDE5QzEwLjE3IDE5IDkuNSAxOC4zMyA5LjUgMTcuNVMxMC4xNyAxNiAxMSAxNk0xMyAxMi41QzEzIDEzLjMzIDEyLjMzIDE0IDExLjUgMTRTMTAgMTMuMzMgMTAgMTIuNSAxMC42NyAxMSAxMS41IDExIDEzIDExLjY3IDEzIDEyLjVNNi41IDEzQzUuNjcgMTMgNSAxMi4zMyA1IDExLjVTNS42NyAxMCA2LjUgMTAgOCAxMC42NyA4IDExLjUgNy4zMyAxMyA2LjUgMTNNOCA3LjVDOCA2LjY3IDguNjcgNiA5LjUgNlMxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5IDggOC4zMyA4IDcuNU0xOCAxOC41TDE5Ljc3IDE2LjczQzE5LjMyIDE2LjI4IDE4LjY5IDE2IDE4IDE2QzE2LjYyIDE2IDE1LjUgMTcuMTIgMTUuNSAxOC41UzE2LjYyIDIxIDE4IDIxQzE4LjgyIDIxIDE5LjU0IDIwLjYxIDIwIDIwSDIxLjcxQzIxLjEyIDIxLjQ3IDE5LjY4IDIyLjUgMTggMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVTMTUuNzkgMTQuNSAxOCAxNC41QzE5LjExIDE0LjUgMjAuMTEgMTQuOTUgMjAuODMgMTUuNjdMMjIgMTQuNVYxOC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZVJlZnJlc2hPdXRsaW5lID0gXCJNMTMgMTIuNUMxMyAxMy4zMyAxMi4zMyAxNCAxMS41IDE0UzEwIDEzLjMzIDEwIDEyLjUgMTAuNjcgMTEgMTEuNSAxMSAxMyAxMS42NyAxMyAxMi41TTExIDcuNUMxMSA2LjY3IDEwLjMzIDYgOS41IDZTOCA2LjY3IDggNy41IDguNjcgOSA5LjUgOSAxMSA4LjMzIDExIDcuNU0xNSAxMEgxNlYxMC41QzE2IDExLjMzIDE2LjY3IDEyIDE3LjUgMTJIMTlMMTkgMTIuMDNDMTkuNjkgMTIuMDkgMjAuMzYgMTIuMjQgMjEgMTIuNUMyMSAxMi4zMyAyMSAxMi4xNyAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi4xNyAyMSAxMi4zMyAyMSAxMi41IDIxQzEyLjI0IDIwLjM2IDEyLjA5IDE5LjY5IDEyLjAzIDE5QzExLjggMTkgMTEuNTYgMTkgMTEuMzIgMTguOTZDMTEuNTkgMTguOSAxMS44MSAxOC43NiAxMiAxOC41OEMxMiAxOC41NSAxMiAxOC41MyAxMiAxOC41QzEyIDE3Ljg3IDEyLjEgMTcuMjcgMTIuMjYgMTYuNjlDMTIgMTYuMjggMTEuNTMgMTYgMTEgMTZDMTAuMTcgMTYgOS41IDE2LjY3IDkuNSAxNy41QzkuNSAxOCA5Ljc2IDE4LjQ3IDEwLjE2IDE4Ljc0QzcuNTQgMTguMDQgNS41IDE1LjgxIDUuMDkgMTMuMTJDNSAxMi42MSA1IDEyLjExIDUgMTEuNjJDNS4wNyAxMi4zOSA1LjcxIDEzIDYuNSAxM0M3LjMzIDEzIDggMTIuMzMgOCAxMS41UzcuMzMgMTAgNi41IDEwQzUuODIgMTAgNS4yNSAxMC40NiA1LjA3IDExLjA4QzUuNDcgOCA3LjkxIDUuNSAxMSA1LjA3VjYuNUMxMSA3LjMzIDExLjY3IDggMTIuNSA4SDEzVjguNUMxMyA5LjMzIDEzLjY3IDEwIDE0LjUgMTBIMTVNMjIgMTguNVYxNC41TDIwLjgzIDE1LjY3QzIwLjExIDE0Ljk1IDE5LjExIDE0LjUgMTggMTQuNUMxNS43OSAxNC41IDE0IDE2LjI5IDE0IDE4LjVTMTUuNzkgMjIuNSAxOCAyMi41QzE5LjY4IDIyLjUgMjEuMTIgMjEuNDcgMjEuNzEgMjBIMjBDMTkuNTQgMjAuNjEgMTguODIgMjEgMTggMjFDMTYuNjIgMjEgMTUuNSAxOS44OCAxNS41IDE4LjVTMTYuNjIgMTYgMTggMTZDMTguNjkgMTYgMTkuMzIgMTYuMjggMTkuNzcgMTYuNzNMMTggMTguNUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVSZW1vdmUgPSBcIk0xNi41IDEzQzE2LjggMTMgMTcuMDggMTMuMDkgMTcuMzIgMTMuMjRDMTcuODUgMTMuMDkgMTguNDIgMTMgMTkgMTNDMTkuNjYgMTMgMjAuMyAxMy4xMiAyMC44OSAxMy4zMkMyMC45NiAxMi44OSAyMSAxMi40NSAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi40NSAyMSAxMi44OSAyMC45NiAxMy4zMiAyMC44OUMxMy4xMiAyMC4zIDEzIDE5LjY2IDEzIDE5QzEzIDE3LjIyIDEzLjc4IDE1LjYzIDE1IDE0LjUzQzE1IDE0LjUgMTUgMTQuNSAxNSAxNC41QzE1IDEzLjY3IDE1LjY3IDEzIDE2LjUgMTNNNi41IDEzQzUuNjcgMTMgNSAxMi4zMyA1IDExLjVTNS42NyAxMCA2LjUgMTAgOCAxMC42NyA4IDExLjUgNy4zMyAxMyA2LjUgMTNNOCA3LjVDOCA2LjY3IDguNjcgNiA5LjUgNlMxMSA2LjY3IDExIDcuNSAxMC4zMyA5IDkuNSA5IDggOC4zMyA4IDcuNU0xMSAxOUMxMC4xNyAxOSA5LjUgMTguMzMgOS41IDE3LjVTMTAuMTcgMTYgMTEgMTYgMTIuNSAxNi42NyAxMi41IDE3LjUgMTEuODMgMTkgMTEgMTlNMTEuNSAxNEMxMC42NyAxNCAxMCAxMy4zMyAxMCAxMi41UzEwLjY3IDExIDExLjUgMTEgMTMgMTEuNjcgMTMgMTIuNSAxMi4zMyAxNCAxMS41IDE0TTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZVJlbW92ZU91dGxpbmUgPSBcIk0xNy4zMiAxMy4yNEMxNi40NSAxMy41IDE1LjY2IDEzLjk1IDE1IDE0LjUzQzE1IDE0LjUgMTUgMTQuNSAxNSAxNC41QzE1IDEzLjY3IDE1LjY3IDEzIDE2LjUgMTNDMTYuOCAxMyAxNy4wOCAxMy4wOSAxNy4zMiAxMy4yNE0xNiAxMFYxMC41QzE2IDExLjMzIDE2LjY3IDEyIDE3LjUgMTJIMTlDMTkgMTIuMzQgMTguOTcgMTIuNjggMTguOTIgMTNDMTguOTUgMTMgMTguOTcgMTMgMTkgMTNDMTkuNjYgMTMgMjAuMyAxMy4xMiAyMC44OSAxMy4zMkMyMC45NiAxMi44OSAyMSAxMi40NSAyMSAxMkMyMSAxMS41IDIwLjk2IDExIDIwLjg3IDEwLjVDMjAuNiAxMCAyMCAxMCAyMCAxMEgxOFY5QzE4IDggMTcgOCAxNyA4SDE1VjdDMTUgNiAxNCA2IDE0IDZIMTNWNEMxMyAzIDEyIDMgMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxMi40NSAyMSAxMi44OSAyMC45NiAxMy4zMiAyMC44OUMxMy4xMiAyMC4zIDEzIDE5LjY2IDEzIDE5QzEzIDE4Ljk3IDEzIDE4Ljk1IDEzIDE4LjkyQzEyLjQ2IDE5IDExLjkgMTkgMTEuMzIgMTguOTZDMTIgMTguODIgMTIuNSAxOC4yMiAxMi41IDE3LjVDMTIuNSAxNi42NyAxMS44MyAxNiAxMSAxNlM5LjUgMTYuNjcgOS41IDE3LjVDOS41IDE4IDkuNzYgMTguNDcgMTAuMTYgMTguNzRDNy41NCAxOC4wNCA1LjUgMTUuODEgNS4wOSAxMy4xMkM1IDEyLjYxIDUgMTIuMTEgNSAxMS42MkM1LjA3IDEyLjM5IDUuNzEgMTMgNi41IDEzQzcuMzMgMTMgOCAxMi4zMyA4IDExLjVTNy4zMyAxMCA2LjUgMTBDNS44MiAxMCA1LjI1IDEwLjQ2IDUuMDcgMTEuMDhDNS40NyA4IDcuOTEgNS41IDExIDUuMDdWNi41QzExIDcuMzMgMTEuNjcgOCAxMi41IDhIMTNWOC41QzEzIDkuMzMgMTMuNjcgMTAgMTQuNSAxMEgxNk0xMSA3LjVDMTEgNi42NyAxMC4zMyA2IDkuNSA2UzggNi42NyA4IDcuNSA4LjY3IDkgOS41IDkgMTEgOC4zMyAxMSA3LjVNMTEuNSAxNEMxMi4zMyAxNCAxMyAxMy4zMyAxMyAxMi41UzEyLjMzIDExIDExLjUgMTEgMTAgMTEuNjcgMTAgMTIuNSAxMC42NyAxNCAxMS41IDE0TTIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ3TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvb2tpZVNldHRpbmdzID0gXCJNMjAuODcgOS41QzIwLjYgOSAyMCA5IDIwIDlIMThWOEMxOCA3IDE3IDcgMTcgN0gxNVY2QzE1IDUgMTQgNSAxNCA1SDEzVjNDMTMgMiAxMiAyIDEyIDJDNy4wMyAyIDMgNi4wMyAzIDExUzcuMDMgMjAgMTIgMjAgMjEgMTUuOTcgMjEgMTFDMjEgMTAuNSAyMC45NiAxMCAyMC44NyA5LjVNNi41IDEyQzUuNjcgMTIgNSAxMS4zMyA1IDEwLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJNOCA2LjVDOCA1LjY3IDguNjcgNSA5LjUgNVMxMSA1LjY3IDExIDYuNSAxMC4zMyA4IDkuNSA4IDggNy4zMyA4IDYuNU0xMSAxOEMxMC4xNyAxOCA5LjUgMTcuMzMgOS41IDE2LjVTMTAuMTcgMTUgMTEgMTUgMTIuNSAxNS42NyAxMi41IDE2LjUgMTEuODMgMTggMTEgMThNMTEuNSAxM0MxMC42NyAxMyAxMCAxMi4zMyAxMCAxMS41UzEwLjY3IDEwIDExLjUgMTAgMTMgMTAuNjcgMTMgMTEuNSAxMi4zMyAxMyAxMS41IDEzTTE2LjUgMTVDMTUuNjcgMTUgMTUgMTQuMzMgMTUgMTMuNVMxNS42NyAxMiAxNi41IDEyIDE4IDEyLjY3IDE4IDEzLjUgMTcuMzMgMTUgMTYuNSAxNU03IDIySDlWMjRIN1YyMk0xMSAyMkgxM1YyNEgxMVYyMk0xNSAyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb29raWVTZXR0aW5nc091dGxpbmUgPSBcIk0xMyAxMS41QzEzIDEyLjMzIDEyLjMzIDEzIDExLjUgMTNTMTAgMTIuMzMgMTAgMTEuNSAxMC42NyAxMCAxMS41IDEwIDEzIDEwLjY3IDEzIDExLjVNMTEgNi41QzExIDUuNjcgMTAuMzMgNSA5LjUgNVM4IDUuNjcgOCA2LjUgOC42NyA4IDkuNSA4IDExIDcuMzMgMTEgNi41TTIxIDExQzIxIDE1Ljk3IDE2Ljk3IDIwIDEyIDIwUzMgMTUuOTcgMyAxMSA3LjAzIDIgMTIgMkMxMiAyIDEzIDIgMTMgM1Y1SDE0QzE0IDUgMTUgNSAxNSA2VjdIMTdDMTcgNyAxOCA3IDE4IDhWOUgyMEMyMCA5IDIwLjYgOSAyMC44NyA5LjVDMjAuOTYgMTAgMjEgMTAuNSAyMSAxMU0xOSAxMUgxNy41QzE2LjY3IDExIDE2IDEwLjMzIDE2IDkuNVY5SDE0LjVDMTMuNjcgOSAxMyA4LjMzIDEzIDcuNVY3SDEyLjVDMTEuNjcgNyAxMSA2LjMzIDExIDUuNVY0LjA3QzcuOTEgNC41IDUuNDcgNyA1LjA3IDEwLjA4QzUuMjUgOS40NiA1LjgyIDkgNi41IDlDNy4zMyA5IDggOS42NyA4IDEwLjVTNy4zMyAxMiA2LjUgMTJDNS43MSAxMiA1LjA3IDExLjM5IDUgMTAuNjJDNSAxMS4xMSA1IDExLjYxIDUuMDkgMTIuMTJDNS41IDE0LjgxIDcuNTQgMTcuMDQgMTAuMTYgMTcuNzRDOS43NiAxNy40NyA5LjUgMTcgOS41IDE2LjVDOS41IDE1LjY3IDEwLjE3IDE1IDExIDE1UzEyLjUgMTUuNjcgMTIuNSAxNi41QzEyLjUgMTcuMjIgMTIgMTcuODIgMTEuMzIgMTcuOTZDMTUuNSAxOC4zNiAxOSAxNS4wOCAxOSAxMU0xNi41IDEyQzE1LjY3IDEyIDE1IDEyLjY3IDE1IDEzLjVTMTUuNjcgMTUgMTYuNSAxNSAxOCAxNC4zMyAxOCAxMy41IDE3LjMzIDEyIDE2LjUgMTJNNyAyNEg5VjIySDdWMjRNMTUgMjRIMTdWMjJIMTVWMjRNMTEgMjRIMTNWMjJIMTFWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29vbGFudFRlbXBlcmF0dXJlID0gXCJNMTEuNSwxQTEuNSwxLjUgMCAwLDAgMTAsMi41VjE0LjVDOS4zNywxNC45NyA5LDE1LjcxIDksMTYuNUEyLjUsMi41IDAgMCwwIDExLjUsMTlBMi41LDIuNSAwIDAsMCAxNCwxNi41QzE0LDE1LjcxIDEzLjYzLDE1IDEzLDE0LjVWMTNIMTdWMTFIMTNWOUgxN1Y3SDEzVjVIMTdWM0gxM1YyLjVBMS41LDEuNSAwIDAsMCAxMS41LDFNMCwxNVYxN0MwLjY3LDE3IDAuNzksMTcuMjEgMS4yOSwxNy43MUMxLjc5LDE4LjIxIDIuNjcsMTkgNCwxOUM1LjMzLDE5IDYuMjEsMTguMjEgNi43MSwxNy43MUM2LjgyLDE3LjU5IDYuOTEsMTcuNSA3LDE3LjQxVjE1LjE2QzYuMjEsMTUuNDIgNS42NSwxNS45MyA1LjI5LDE2LjI5QzQuNzksMTYuNzkgNC42NywxNyA0LDE3QzMuMzMsMTcgMy4yMSwxNi43OSAyLjcxLDE2LjI5QzIuMjEsMTUuNzkgMS4zMywxNSAwLDE1TTE2LDE1VjE3QzE2LjY3LDE3IDE2Ljc5LDE3LjIxIDE3LjI5LDE3LjcxQzE3Ljc5LDE4LjIxIDE4LjY3LDE5IDIwLDE5QzIxLjMzLDE5IDIyLjIxLDE4LjIxIDIyLjcxLDE3LjcxQzIzLjIxLDE3LjIxIDIzLjMzLDE3IDI0LDE3VjE1QzIyLjY3LDE1IDIxLjc5LDE1Ljc5IDIxLjI5LDE2LjI5QzIwLjc5LDE2Ljc5IDIwLjY3LDE3IDIwLDE3QzE5LjMzLDE3IDE5LjIxLDE2Ljc5IDE4LjcxLDE2LjI5QzE4LjIxLDE1Ljc5IDE3LjMzLDE1IDE2LDE1TTgsMjBDNi42NywyMCA1Ljc5LDIwLjc5IDUuMjksMjEuMjlDNC43OSwyMS43OSA0LjY3LDIyIDQsMjJDMy4zMywyMiAzLjIxLDIxLjc5IDIuNzEsMjEuMjlDMi4zNSwyMC45MyAxLjc5LDIwLjQyIDEsMjAuMTZWMjIuNDFDMS4wOSwyMi41IDEuMTgsMjIuNTkgMS4yOSwyMi43MUMxLjc5LDIzLjIxIDIuNjcsMjQgNCwyNEM1LjMzLDI0IDYuMjEsMjMuMjEgNi43MSwyMi43MUM3LjIxLDIyLjIxIDcuMzMsMjIgOCwyMkM4LjY3LDIyIDguNzksMjIuMjEgOS4yOSwyMi43MUM5LjczLDIzLjE0IDEwLjQ0LDIzLjggMTEuNSwyMy45NkMxMS42NiwyNCAxMS44MywyNCAxMiwyNEMxMy4zMywyNCAxNC4yMSwyMy4yMSAxNC43MSwyMi43MUMxNS4yMSwyMi4yMSAxNS4zMywyMiAxNiwyMkMxNi42NywyMiAxNi43OSwyMi4yMSAxNy4yOSwyMi43MUMxNy43OSwyMy4yMSAxOC42NywyNCAyMCwyNEMyMS4zMywyNCAyMi4yMSwyMy4yMSAyMi43MSwyMi43MUMyMi44MiwyMi41OSAyMi45MSwyMi41IDIzLDIyLjQxVjIwLjE2QzIyLjIxLDIwLjQyIDIxLjY1LDIwLjkzIDIxLjI5LDIxLjI5QzIwLjc5LDIxLjc5IDIwLjY3LDIyIDIwLDIyQzE5LjMzLDIyIDE5LjIxLDIxLjc5IDE4LjcxLDIxLjI5QzE4LjIxLDIwLjc5IDE3LjMzLDIwIDE2LDIwQzE0LjY3LDIwIDEzLjc5LDIwLjc5IDEzLjI5LDIxLjI5QzEyLjc5LDIxLjc5IDEyLjY3LDIyIDEyLDIyQzExLjc4LDIyIDExLjYzLDIxLjk3IDExLjUsMjEuOTJDMTEuMjIsMjEuODIgMTEuMDUsMjEuNjMgMTAuNzEsMjEuMjlDMTAuMjEsMjAuNzkgOS4zMywyMCA4LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvcHlyaWdodCA9IFwiTTEwLjA4LDEwLjg2QzEwLjEzLDEwLjUzIDEwLjI0LDEwLjI0IDEwLjM4LDEwQzEwLjUsOS43NCAxMC43Miw5LjUzIDEwLjk3LDkuMzdDMTEuMjEsOS4yMiAxMS41LDkuMTUgMTEuODgsOS4xNEMxMi4xMSw5LjE1IDEyLjMyLDkuMTkgMTIuNSw5LjI3QzEyLjcxLDkuMzYgMTIuODksOS41IDEzLjAzLDkuNjNDMTMuMTcsOS43OCAxMy4yOCw5Ljk2IDEzLjM3LDEwLjE2QzEzLjQ2LDEwLjM2IDEzLjUsMTAuNTggMTMuNSwxMC44SDE1LjNDMTUuMjgsMTAuMzMgMTUuMTksOS45IDE1LDkuNUMxNC44NSw5LjEyIDE0LjYyLDguNzggMTQuMzIsOC41QzE0LDguMjIgMTMuNjYsOCAxMy4yNCw3Ljg0QzEyLjgyLDcuNjggMTIuMzYsNy42MSAxMS44NSw3LjYxQzExLjIsNy42MSAxMC42Myw3LjcyIDEwLjE1LDcuOTVDOS42Nyw4LjE4IDkuMjcsOC41IDguOTUsOC44N0M4LjYzLDkuMjYgOC4zOSw5LjcxIDguMjQsMTAuMjNDOC4wOSwxMC43NSA4LDExLjI5IDgsMTEuODdWMTIuMTRDOCwxMi43MiA4LjA4LDEzLjI2IDguMjMsMTMuNzhDOC4zOCwxNC4zIDguNjIsMTQuNzUgOC45NCwxNS4xM0M5LjI2LDE1LjUgOS42NiwxNS44MiAxMC4xNCwxNi4wNEMxMC42MiwxNi4yNiAxMS4xOSwxNi4zOCAxMS44NCwxNi4zOEMxMi4zMSwxNi4zOCAxMi43NSwxNi4zIDEzLjE2LDE2LjE1QzEzLjU3LDE2IDEzLjkzLDE1Ljc5IDE0LjI0LDE1LjVDMTQuNTUsMTUuMjUgMTQuOCwxNC45NCAxNSwxNC41OEMxNS4xNiwxNC4yMiAxNS4yNywxMy44NCAxNS4yOCwxMy40M0gxMy41QzEzLjUsMTMuNjQgMTMuNDMsMTMuODMgMTMuMzQsMTRDMTMuMjUsMTQuMTkgMTMuMTMsMTQuMzQgMTMsMTQuNDdDMTIuODMsMTQuNiAxMi42NiwxNC43IDEyLjQ2LDE0Ljc3QzEyLjI3LDE0Ljg0IDEyLjA3LDE0Ljg2IDExLjg2LDE0Ljg3QzExLjUsMTQuODYgMTEuMiwxNC43OSAxMC45NywxNC42NEMxMC43MiwxNC41IDEwLjUsMTQuMjcgMTAuMzgsMTRDMTAuMjQsMTMuNzcgMTAuMTMsMTMuNDcgMTAuMDgsMTMuMTRDMTAuMDMsMTIuODEgMTAsMTIuNDcgMTAsMTIuMTRWMTEuODdDMTAsMTEuNSAxMC4wMywxMS4xOSAxMC4wOCwxMC44Nk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvcmRvdmEgPSBcIk0yMC4xOCwyMS41NUgxNi45NEwxNy4xNywxOC44MkgxNS41OEwxNS4zNSwyMS41NUg4LjY1TDguNDIsMTguODJINi44M0w3LjA2LDIxLjU1SDMuODJMMiw5LjczTDYuNTUsMi40NUgxNy40NUwyMiw5LjczTDIwLjE4LDIxLjU1TTE2LjU1LDYuMDlIMTMuNjJMMTMuODIsNy40NUgxMC4xOEwxMC4zOCw2LjA5SDcuNDVMNS42NCw5LjczTDYuNTUsMTdIMTcuNDVMMTguMzYsOS43M0wxNi41NSw2LjA5TTE0Ljk1LDE0LjU5QzE0LjcsMTQuNTkgMTQuNSwxMy44MyAxNC41LDEyLjlDMTQuNSwxMS45NiAxNC43LDExLjIgMTQuOTUsMTEuMkMxNS4yMSwxMS4yIDE1LjQxLDExLjk2IDE1LjQxLDEyLjlDMTUuNDEsMTMuODMgMTUuMjEsMTQuNTkgMTQuOTUsMTQuNTlNOS4yMiwxNC43M0M4Ljk2LDE0LjczIDguNzYsMTMuOTcgOC43NiwxMy4wNEM4Ljc2LDEyLjEgOC45NiwxMS4zNSA5LjIyLDExLjM1QzkuNDcsMTEuMzUgOS42NywxMi4xIDkuNjcsMTMuMDRDOS42NywxMy45NyA5LjQ3LDE0LjczIDkuMjIsMTQuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29ybiA9IFwiTTExLDEySDguODJDOS42MiwxMi41IDEwLjM1LDEzLjA3IDExLDEzLjY4VjEyTTcsMTFDNy4yNyw1Ljg4IDkuMzcsMiAxMiwyQzE0LjY2LDIgMTYuNzcsNS45NCAxNywxMS4xMkMxOC41LDEwLjQzIDIwLjE3LDEwIDIyLDEwQzE2LjI1LDEyLjU3IDE4LjI1LDIyIDEyLDIyQzYsMjIgNy45MywxMi41NyAyLDEwQzMuODIsMTAgNS41LDEwLjQgNywxMU0xMSwxMVY5SDguMjRMOC4wMywxMUgxMU0xMSw4VjZIOS4wNUM4LjgsNi42IDguNiw3LjI3IDguNDMsOEgxMU0xMSw1VjMuM0MxMC40NSwzLjYzIDkuOTUsNC4yMiA5LjUsNUgxMU0xMiwzVjVIMTNWNkgxMlY4SDE0VjlIMTJWMTFIMTVWMTJIMTJWMTRIMTRWMTVIMTIuMjNDMTMuNDIsMTYuNDUgMTQuMTUsMTggMTQuMzIsMTkuMjNDMTUuMzEsMTcuNTYgMTUuOTYsMTQuODQgMTYsMTEuNzZDMTUuOTQsNyAxNC4xMywzIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29ybk9mZiA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDcuMiA5LjFDNy4xIDkuNyA3IDEwLjMgNyAxMUM1LjUgMTAuNCAzLjggMTAgMiAxMEM3LjkgMTIuNiA2IDIyIDEyIDIyQzE0LjUgMjIgMTUuNyAyMC41IDE2LjYgMTguNUwyMC45IDIyLjhMMjIuMSAyMS41TTguMSAxMEw5LjEgMTFIOEw4LjEgMTBNOC44IDEySDEwLjFMMTEgMTIuOVYxMy43QzEwLjMgMTMuMSA5LjYgMTIuNSA4LjggMTJNMTQuMyAxOS4yQzE0LjEgMTggMTMuNCAxNi40IDEyLjIgMTVIMTMuMUwxNS4yIDE3LjFDMTUgMTcuOSAxNC43IDE4LjYgMTQuMyAxOS4yTTExIDZWNy44TDEyLjIgOUgxNFY4SDEyVjZIMTNWNUgxMlYzQzE0LjEgMyAxNS45IDcgMTYgMTEuOFYxMi44TDE4IDE0LjhDMTguOCAxMi44IDE5LjkgMTAuOSAyMiAxMEMyMC4yIDEwIDE4LjUgMTAuNCAxNyAxMS4xQzE2LjggNS45IDE0LjcgMiAxMiAyQzEwLjUgMiA5LjIgMy4yIDguMyA1LjFMOS4yIDZIMTFNMTEgMy4zVjVIOS41QzEwIDQuMiAxMC41IDMuNiAxMSAzLjNNMTUgMTEuOEwxNC4yIDExSDE1VjExLjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ29zaW5lV2F2ZSA9IFwiTTIyIDJWNEMyMC4yNiA0IDE5IDguNTggMTcuOTYgMTIuMjdDMTYuNTcgMTcuMjcgMTUuMjYgMjIgMTIgMjJDOC43NCAyMiA3LjQzIDE3LjI3IDYuMDQgMTIuMjdDNSA4LjU4IDMuNzQgNCAyIDRWMkM1LjI2IDIgNi41NyA2LjczIDcuOTYgMTEuNzNDOSAxNS40MiAxMC4yNiAyMCAxMiAyMEMxMy43NCAyMCAxNSAxNS40MiAxNi4wNCAxMS43M0MxNy40MyA2LjczIDE4Ljc0IDIgMjIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDb3VudGVyID0gXCJNNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNE00LDZWMThIMTFWNkg0TTIwLDE4VjZIMTguNzZDMTksNi41NCAxOC45NSw3LjA3IDE4Ljk1LDcuMTNDMTguODgsNy44IDE4LjQxLDguNSAxOC4yNCw4Ljc1TDE1LjkxLDExLjNMMTkuMjMsMTEuMjhMMTkuMjQsMTIuNUwxNC4wNCwxMi40N0wxNCwxMS40N0MxNCwxMS40NyAxNy4wNSw4LjI0IDE3LjIsNy45NUMxNy4zNCw3LjY3IDE3LjkxLDYgMTYuNSw2QzE1LjI3LDYuMDUgMTUuNDEsNy4zIDE1LjQxLDcuM0wxMy44Nyw3LjMxQzEzLjg3LDcuMzEgMTMuODgsNi42NSAxNC4yNSw2SDEzVjE4SDE1LjU4TDE1LjU3LDE3LjE0TDE2LjU0LDE3LjEzQzE2LjU0LDE3LjEzIDE3LjQ1LDE2Ljk3IDE3LjQ2LDE2LjA4QzE3LjUsMTUuMDggMTYuNjUsMTUuMDggMTYuNSwxNS4wOEMxNi4zNywxNS4wOCAxNS40MywxNS4xMyAxNS40MywxNS45NUgxMy45MUMxMy45MSwxNS45NSAxMy45NSwxMy44OSAxNi41LDEzLjg5QzE5LjEsMTMuODkgMTguOTYsMTUuOTEgMTguOTYsMTUuOTFDMTguOTYsMTUuOTEgMTksMTcuMTYgMTcuODUsMTcuNjNMMTguMzcsMThIMjBNOC45MiwxNkg3LjQyVjEwLjJMNS42MiwxMC43NlY5LjUzTDguNzYsOC40MUg4LjkyVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNvdyA9IFwiTTEwLjUsMThBMC41LDAuNSAwIDAsMSAxMSwxOC41QTAuNSwwLjUgMCAwLDEgMTAuNSwxOUEwLjUsMC41IDAgMCwxIDEwLDE4LjVBMC41LDAuNSAwIDAsMSAxMC41LDE4TTEzLjUsMThBMC41LDAuNSAwIDAsMSAxNCwxOC41QTAuNSwwLjUgMCAwLDEgMTMuNSwxOUEwLjUsMC41IDAgMCwxIDEzLDE4LjVBMC41LDAuNSAwIDAsMSAxMy41LDE4TTEwLDExQTEsMSAwIDAsMSAxMSwxMkExLDEgMCAwLDEgMTAsMTNBMSwxIDAgMCwxIDksMTJBMSwxIDAgMCwxIDEwLDExTTE0LDExQTEsMSAwIDAsMSAxNSwxMkExLDEgMCAwLDEgMTQsMTNBMSwxIDAgMCwxIDEzLDEyQTEsMSAwIDAsMSAxNCwxMU0xOCwxOEMxOCwyMC4yMSAxNS4zMSwyMiAxMiwyMkM4LjY5LDIyIDYsMjAuMjEgNiwxOEM2LDE3LjEgNi40NSwxNi4yNyA3LjIsMTUuNkM2LjQ1LDE0LjYgNiwxMy4zNSA2LDEyTDYuMTIsMTAuNzhDNS41OCwxMC45MyA0LjkzLDEwLjkzIDQuNCwxMC43OEMzLjM4LDEwLjUgMS44NCw5LjM1IDIuMDcsOC41NUMyLjMsNy43NSA0LjIxLDcuNiA1LjIzLDcuOUM1LjgyLDguMDcgNi40NSw4LjUgNi44Miw4Ljk2TDcuMzksOC4xNUM2Ljc5LDcuMDUgNyw0IDEwLDNMOS45MSwzLjE0VjMuMTRDOS42MywzLjU4IDguOTEsNC45NyA5LjY3LDYuNDdDMTAuMzksNi4xNyAxMS4xNyw2IDEyLDZDMTIuODMsNiAxMy42MSw2LjE3IDE0LjMzLDYuNDdDMTUuMDksNC45NyAxNC4zNywzLjU4IDE0LjA5LDMuMTRMMTQsM0MxNyw0IDE3LjIxLDcuMDUgMTYuNjEsOC4xNUwxNy4xOCw4Ljk2QzE3LjU1LDguNSAxOC4xOCw4LjA3IDE4Ljc3LDcuOUMxOS43OSw3LjYgMjEuNyw3Ljc1IDIxLjkzLDguNTVDMjIuMTYsOS4zNSAyMC42MiwxMC41IDE5LjYsMTAuNzhDMTkuMDcsMTAuOTMgMTguNDIsMTAuOTMgMTcuODgsMTAuNzhMMTgsMTJDMTgsMTMuMzUgMTcuNTUsMTQuNiAxNi44LDE1LjZDMTcuNTUsMTYuMjcgMTgsMTcuMSAxOCwxOE0xMiwxNkM5Ljc5LDE2IDgsMTYuOSA4LDE4QzgsMTkuMSA5Ljc5LDIwIDEyLDIwQzE0LjIxLDIwIDE2LDE5LjEgMTYsMThDMTYsMTYuOSAxNC4yMSwxNiAxMiwxNk0xMiwxNEMxMy4xMiwxNCAxNC4xNywxNC4yMSAxNS4wNywxNC41NkMxNS42NSwxMy44NyAxNiwxMyAxNiwxMkE0LDQgMCAwLDAgMTIsOEE0LDQgMCAwLDAgOCwxMkM4LDEzIDguMzUsMTMuODcgOC45MywxNC41NkM5LjgzLDE0LjIxIDEwLjg4LDE0IDEyLDE0TTE0LjA5LDMuMTRWMy4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcHUzMkJpdCA9IFwiTTksM1Y1SDdBMiwyIDAgMCwwIDUsN1Y5SDNWMTFINVYxM0gzVjE1SDVWMTdBMiwyIDAgMCwwIDcsMTlIOVYyMUgxMVYxOUgxM1YyMUgxNVYxOUgxN0EyLDIgMCAwLDAgMTksMTdWMTVIMjFWMTNIMTlWMTFIMjFWOUgxOVY3QTIsMiAwIDAsMCAxNyw1SDE1VjNIMTNWNUgxMVYzTTcsOUgxMC41QTEsMSAwIDAsMSAxMS41LDEwVjE0QTEsMSAwIDAsMSAxMC41LDE1SDdWMTMuNUgxMFYxMi43NUg4LjVWMTEuMjVIMTBWMTAuNUg3TTEyLjUsOUgxNkExLDEgMCAwLDEgMTcsMTBWMTEuNzVBMSwxIDAgMCwxIDE2LDEyLjc1SDE0VjEzLjVIMTdWMTVIMTIuNVYxMi4yNUExLDEgMCAwLDEgMTMuNSwxMS4yNUgxNS41VjEwLjVIMTIuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUNwdTY0Qml0ID0gXCJNOSwzVjVIN0EyLDIgMCAwLDAgNSw3VjlIM1YxMUg1VjEzSDNWMTVINVYxN0EyLDIgMCAwLDAgNywxOUg5VjIxSDExVjE5SDEzVjIxSDE1VjE5SDE3QTIsMiAwIDAsMCAxOSwxN1YxNUgyMVYxM0gxOVYxMUgyMVY5SDE5VjdBMiwyIDAgMCwwIDE3LDVIMTVWM0gxM1Y1SDExVjNNOCw5SDExLjVWMTAuNUg4LjVWMTEuMjVIMTAuNUExLDEgMCAwLDEgMTEuNSwxMi4yNVYxNEExLDEgMCAwLDEgMTAuNSwxNUg4QTEsMSAwIDAsMSA3LDE0VjEwQTEsMSAwIDAsMSA4LDlNMTIuNSw5SDE0VjExSDE1LjVWOUgxN1YxNUgxNS41VjEyLjVIMTIuNU04LjUsMTIuNzVWMTMuNUgxMFYxMi43NVwiO1xyXG5leHBvcnQgdmFyIG1kaUNyYW5lID0gXCJNMjAsNlY1QTEsMSAwIDAsMCAxOSw0SDlWM0g2VjRINVY2SDZWMTVINVYxM0gzVjE1SDJWMTdIM1YyMUg1VjE3SDEwVjIxSDEyVjE5LjkyTDEyLDE3SDEzVjE1SDEyVjEzSDEwVjE1SDlWNkgxN1YxMC42MkMxNi41MywxMC43OSAxNi4xOSwxMS4yMyAxNi4xOSwxMS43NkMxNi4xOSwxMi4yIDE2LjQzLDEyLjYgMTYuOCwxMi44MlYxNEgxNy40MkMxNy43NiwxNCAxOC4wMywxNC4yOCAxOC4wMywxNC42MkMxOC4wMywxNC45NiAxNy43NiwxNS4yNCAxNy40MiwxNS4yNEMxNy4yLDE1LjI0IDE3LDE1LjEyIDE2Ljg5LDE0LjkzQzE2LjcxLDE0LjY0IDE2LjM0LDE0LjU0IDE2LjA1LDE0LjcxQzE1Ljc1LDE0Ljg3IDE1LjY1LDE1LjI1IDE1LjgyLDE1LjU1QzE2LjE1LDE2LjExIDE2Ljc2LDE2LjQ3IDE3LjQyLDE2LjQ3QzE4LjQzLDE2LjQ3IDE5LjI2LDE1LjY0IDE5LjI2LDE0LjYyQzE5LjI2LDEzLjg0IDE4Ljc2LDEzLjE0IDE4LjAzLDEyLjg4VjEyLjgyQzE4LjQxLDEyLjYgMTguNjUsMTIuMiAxOC42NSwxMS43NkMxOC42NSwxMS4zIDE4LjM4LDEwLjkxIDE4LDEwLjdWNkgyME04LDEzLjY2TDcsMTQuNjZWMTMuMjRMOCwxMi4yNFYxMy42Nk04LDEwLjcxTDcsMTEuNzFWMTAuMjlMOCw5LjI5VjEwLjcxTTcsOC43MVY3LjI5TDgsNi4yOVY3LjcxTDcsOC43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVhdGlvbiA9IFwiTTE5LDFMMTcuNzQsMy43NUwxNSw1TDE3Ljc0LDYuMjZMMTksOUwyMC4yNSw2LjI2TDIzLDVMMjAuMjUsMy43NU05LDRMNi41LDkuNUwxLDEyTDYuNSwxNC41TDksMjBMMTEuNSwxNC41TDE3LDEyTDExLjUsOS41TTE5LDE1TDE3Ljc0LDE3Ljc0TDE1LDE5TDE3Ljc0LDIwLjI1TDE5LDIzTDIwLjI1LDIwLjI1TDIzLDE5TDIwLjI1LDE3Ljc0XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlYXRpdmVDb21tb25zID0gXCJNMTEuODksMTAuMzRMMTAuNTUsMTEuMDRDMTAuNDEsMTAuNzQgMTAuMjQsMTAuNTMgMTAuMDMsMTAuNDFDOS44MiwxMC4yOSA5LjYyLDEwLjIzIDkuNDUsMTAuMjNDOC41NSwxMC4yMyA4LjExLDEwLjgyIDguMTEsMTJDOC4xMSwxMi41NCA4LjIyLDEyLjk3IDguNDUsMTMuMjlDOC42NywxMy42MSA5LDEzLjc3IDkuNDUsMTMuNzdDMTAuMDMsMTMuNzcgMTAuNDQsMTMuNSAxMC42OCwxMi45MUwxMS45MSwxMy41NEMxMS42NSwxNC4wMyAxMS4yOSwxNC40MSAxMC44MiwxNC42OUMxMC4zNiwxNC45NyA5Ljg1LDE1LjExIDkuMjksMTUuMTFDOC4zOSwxNS4xMSA3LjY3LDE0Ljg0IDcuMTIsMTQuMjlDNi41OCwxMy43NCA2LjMsMTMgNi4zLDEyQzYuMywxMS4wNSA2LjU4LDEwLjMgNy4xMyw5Ljc0QzcuNjksOS4xOCA4LjM5LDguOSA5LjIzLDguOUMxMC40Nyw4Ljg5IDExLjM2LDkuMzggMTEuODksMTAuMzRNMTcuNjYsMTAuMzRMMTYuMzQsMTEuMDRDMTYuMiwxMC43NCAxNiwxMC41MyAxNS44MSwxMC40MUMxNS42LDEwLjI5IDE1LjQsMTAuMjMgMTUuMjEsMTAuMjNDMTQuMzIsMTAuMjMgMTMuODcsMTAuODIgMTMuODcsMTJDMTMuODcsMTIuNTQgMTQsMTIuOTcgMTQuMjEsMTMuMjlDMTQuNDQsMTMuNjEgMTQuNzcsMTMuNzcgMTUuMjEsMTMuNzdDMTUuOCwxMy43NyAxNi4yMSwxMy41IDE2LjQ1LDEyLjkxTDE3LjcsMTMuNTRDMTcuNDIsMTQuMDMgMTcuMDUsMTQuNDEgMTYuNTksMTQuNjlDMTYuMTIsMTQuOTcgMTUuNjIsMTUuMTEgMTUuMDcsMTUuMTFDMTQuMTcsMTUuMTEgMTMuNDQsMTQuODQgMTIuOSwxNC4yOUMxMi4zNiwxMy43NCAxMi4wOSwxMyAxMi4wOSwxMkMxMi4wOSwxMS4wNSAxMi4zNywxMC4zIDEyLjkyLDkuNzRDMTMuNDcsOS4xOCAxNC4xNyw4LjkgMTUsOC45QzE2LjI2LDguODkgMTcuMTQsOS4zOCAxNy42NiwxMC4zNE0xMiwzLjVBOC41LDguNSAwIDAsMSAyMC41LDEyQTguNSw4LjUgMCAwLDEgMTIsMjAuNUE4LjUsOC41IDAgMCwxIDMuNSwxMkE4LjUsOC41IDAgMCwxIDEyLDMuNU0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkID0gXCJNMjAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjZBMiAyIDAgMCAwIDIwIDRNMjAgMTFINFY4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRDaGVjayA9IFwiTTIwIDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMTMuMDlDMTMuMDMgMTkuNjcgMTMgMTkuMzQgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNDMjAuMDYgMTMgMjEuMDkgMTMuMjggMjIgMTMuODFWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNE0yMCAxMUg0VjhIMjBNMTcuNzUgMjJMMTUgMTlMMTYuMTYgMTcuODRMMTcuNzUgMTkuNDNMMjEuMzQgMTUuODRMMjIuNSAxNy4yNUwxNy43NSAyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRDaGVja091dGxpbmUgPSBcIk0xMyAxOUMxMyAxOC42NiAxMy4wNCAxOC4zMyAxMy4wOSAxOEgzVjEySDE5VjEzQzE5LjcgMTMgMjAuMzcgMTMuMTMgMjEgMTMuMzVWNkMyMSA0Ljg5IDIwLjExIDQgMTkgNEgzQzEuODkgNCAxIDQuODkgMSA2VjE4QzEgMTkuMSAxLjg5IDIwIDMgMjBIMTMuMDlDMTMuMDQgMTkuNjcgMTMgMTkuMzQgMTMgMTlNMyA2SDE5VjhIM1Y2TTE3Ljc1IDIyTDE1IDE5TDE2LjE2IDE3Ljg0TDE3Ljc1IDE5LjQzTDIxLjM0IDE1Ljg0TDIyLjUgMTcuMjVMMTcuNzUgMjJcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkQ2xvY2sgPSBcIk0xNiwxNEgxNy41VjE2LjgyTDE5Ljk0LDE4LjIzTDE5LjE5LDE5LjUzTDE2LDE3LjY5VjE0TTI0LDE3QTcsNyAwIDAsMSAxNywyNEMxNC4yMSwyNCAxMS44LDIyLjM2IDEwLjY3LDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjEyLjFDMjMuMjQsMTMuMzYgMjQsMTUuMDkgMjQsMTdNMTcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywyMkE1LDUgMCAwLDAgMjIsMTdBNSw1IDAgMCwwIDE3LDEyTTIwLDEwVjdINFYxMEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkQ2xvY2tPdXRsaW5lID0gXCJNMTYsMTRIMTcuNVYxNi44MkwxOS45NCwxOC4yM0wxOS4xOSwxOS41M0wxNiwxNy42OVYxNE0yNCwxN0E3LDcgMCAwLDEgMTcsMjRDMTQuMjEsMjQgMTEuOCwyMi4zNiAxMC42NywyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxMi4xQzIzLjI0LDEzLjM2IDI0LDE1LjA5IDI0LDE3TTEwLDE3QzEwLDE1LjA0IDEwLjgxLDEzLjI3IDEyLjEsMTJINFYxOEgxMC4wN0MxMCwxNy42NyAxMCwxNy4zNCAxMCwxN00xNywxMkE1LDUgMCAwLDAgMTIsMTdBNSw1IDAgMCwwIDE3LDIyQTUsNSAwIDAsMCAyMiwxN0E1LDUgMCAwLDAgMTcsMTJNMjAsOFY2SDRWOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkTWFya2VyID0gXCJNMTguNSAxMkMxNi42IDEyIDE1IDEzLjYgMTUgMTUuNUMxNSAxOC4xIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xIDIyIDE1LjVDMjIgMTMuNiAyMC40IDEyIDE4LjUgMTJNMTguNSAxNi44QzE3LjggMTYuOCAxNy4zIDE2LjIgMTcuMyAxNS42QzE3LjMgMTQuOSAxNy45IDE0LjQgMTguNSAxNC40UzE5LjcgMTUgMTkuNyAxNS42QzE5LjggMTYuMiAxOS4yIDE2LjggMTguNSAxNi44TTE0LjU1IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTEuM0MyMS40MiAxMC44MSAyMC43NCAxMC40NCAyMCAxMC4yMlY4SDRWMTFIMTUuMzlDMTMuOTYgMTIgMTMgMTMuNjYgMTMgMTUuNUMxMyAxNyAxMy43MiAxOC42MSAxNC41NSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkTWFya2VyT3V0bGluZSA9IFwiTTEzLjUsMThINFYxMkgxNC4zQzE1LjMsMTAuOCAxNi44LDEwIDE4LjUsMTBDMTkuOCwxMCAyMSwxMC41IDIyLDExLjNWNkEyLDIgMCAwLDAgMjAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMTQuNkMxNC4yLDE5LjQgMTMuOCwxOC43IDEzLjUsMThNNCw2SDIwVjhINFY2TTE4LjUsMTJDMTYuNiwxMiAxNSwxMy42IDE1LDE1LjVDMTUsMTguMSAxOC41LDIyIDE4LjUsMjJDMTguNSwyMiAyMiwxOC4xIDIyLDE1LjVDMjIsMTMuNiAyMC40LDEyIDE4LjUsMTJNMTguNSwxNi44QzE3LjgsMTYuOCAxNy4zLDE2LjIgMTcuMywxNS42QzE3LjMsMTQuOSAxNy45LDE0LjQgMTguNSwxNC40QzE5LjEsMTQuNCAxOS43LDE1IDE5LjcsMTUuNkMxOS44LDE2LjIgMTkuMiwxNi44IDE4LjUsMTYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkTWludXMgPSBcIk0yMCA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjAzIDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzQzIwLjA2IDEzIDIxLjA5IDEzLjI4IDIyIDEzLjgxVjZDMjIgNC44OSAyMS4xMSA0IDIwIDRNMjAgMTFINFY4SDIwTTIzIDE4VjIwSDE1VjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRNaW51c091dGxpbmUgPSBcIk0yNCAxOFYyMEgxNlYxOE0xOSA4VjZIM1Y4SDE5TTE5IDEySDNWMThIMTRWMjBIM0MxLjg5IDIwIDEgMTkuMSAxIDE4VjZDMSA0Ljg5IDEuODkgNCAzIDRIMTlDMjAuMTEgNCAyMSA0Ljg5IDIxIDZWMTNIMTlWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZE11bHRpcGxlID0gXCJNMjEgOVY2SDdWOUgyMU0yMSAzQTIgMiAwIDAgMSAyMyA1VjE1QTIgMiAwIDAgMSAyMSAxN0g3QTIgMiAwIDAgMSA1IDE1VjVBMiAyIDAgMCAxIDcgM0gyMU0zIDE5SDE4VjIxSDNBMiAyIDAgMCAxIDEgMTlWOEgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRNdWx0aXBsZU91dGxpbmUgPSBcIk0yMSw4VjZIN1Y4SDIxTTIxLDE2VjExSDdWMTZIMjFNMjEsNEEyLDIgMCAwLDEgMjMsNlYxNkEyLDIgMCAwLDEgMjEsMThIN0M1Ljg5LDE4IDUsMTcuMSA1LDE2VjZDNSw0Ljg5IDUuODksNCA3LDRIMjFNMywyMEgxOFYyMkgzQTIsMiAwIDAsMSAxLDIwVjlIM1YyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkT2ZmID0gXCJNMTEuMiA4TDcuMiA0SDIwQTIgMiAwIDAgMSAyMiA2VjE4QTEuOTEgMS45MSAwIDAgMSAyMS44OCAxOC42OEwxNC4yIDExSDIwVjhNMjAuODQgMjIuNzNMMTguMTEgMjBINEEyIDIgMCAwIDEgMiAxOFY2QTIgMiAwIDAgMSAyLjY1IDQuNTRMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk05LjExIDExTDYuMTEgOEg0VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRPZmZPdXRsaW5lID0gXCJNMC45Myw0LjJMMi4yMSwyLjkzTDIwLDIwLjcyTDE4LjczLDIyTDE2LjczLDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNS43OCAyLjA0LDUuNTcgMi4xMSw1LjM4TDAuOTMsNC4yTTIwLDhWNkg3LjgyTDUuODIsNEgyMEEyLDIgMCAwLDEgMjIsNlYxOEMyMiwxOC42IDIxLjc0LDE5LjEzIDIxLjMyLDE5LjVMMTkuODIsMThIMjBWMTJIMTMuODJMOS44Miw4SDIwTTQsOEg0LjczTDQsNy4yN1Y4TTQsMTJWMThIMTQuNzNMOC43MywxMkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRPdXRsaW5lID0gXCJNMjAsOEg0VjZIMjBNMjAsMThINFYxMkgyME0yMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUGx1cyA9IFwiTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDEzLjA5QTUuNDcgNS40NyAwIDAgMSAxMyAxOUE2IDYgMCAwIDEgMTkgMTNBNS44OCA1Ljg4IDAgMCAxIDIyIDEzLjgxVjZBMiAyIDAgMCAwIDIwIDRNMjAgMTFINFY4SDIwTTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRQbHVzT3V0bGluZSA9IFwiTTIxLDE4SDI0VjIwSDIxVjIzSDE5VjIwSDE2VjE4SDE5VjE1SDIxVjE4TTE5LDhWNkgzVjhIMTlNMTksMTJIM1YxOEgxNFYyMEgzQzEuODksMjAgMSwxOS4xIDEsMThWNkMxLDQuODkgMS44OSw0IDMsNEgxOUEyLDIgMCAwLDEgMjEsNlYxM0gxOVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUmVmcmVzaCA9IFwiTTIwIDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMTEuNjhDMTEuNTcgMTkuNSAxMS41IDE5IDExLjUgMTguNUMxMS41IDE0LjkxIDE0LjQxIDEyIDE4IDEyQzE5LjUgMTIgMjAuOSAxMi41MyAyMiAxMy40VjZDMjIgNC44OSAyMS4xMSA0IDIwIDRNMjAgMTFINFY4SDIwVjExTTIwLjgzIDE1LjY3TDIyIDE0LjVWMTguNUgxOEwxOS43NyAxNi43M0MxOS4zMiAxNi4yOCAxOC42OSAxNiAxOCAxNkMxNi42MiAxNiAxNS41IDE3LjEyIDE1LjUgMTguNVMxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NCAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41UzE1Ljc5IDE0LjUgMTggMTQuNUMxOS4xMSAxNC41IDIwLjExIDE0Ljk1IDIwLjgzIDE1LjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRSZWZyZXNoT3V0bGluZSA9IFwiTTIwIDRINEMyLjg5IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDExLjY4QzExLjU3IDE5LjUgMTEuNSAxOSAxMS41IDE4LjVDMTEuNSAxOC4zMyAxMS41IDE4LjE3IDExLjUzIDE4SDRWMTJIMjBWMTIuMzJDMjAuNzQgMTIuNTYgMjEuNDEgMTIuOTMgMjIgMTMuNFY2QzIyIDQuODkgMjEuMSA0IDIwIDRNMjAgOEg0VjZIMjBWOE0yMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVTMTYuNjIgMjEgMTggMjFDMTguODIgMjEgMTkuNTQgMjAuNjEgMjAgMjBIMjEuNzFDMjEuMTIgMjEuNDcgMTkuNjggMjIuNSAxOCAyMi41QzE1Ljc5IDIyLjUgMTQgMjAuNzEgMTQgMTguNVMxNS43OSAxNC41IDE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N1pcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUmVmdW5kID0gXCJNMTggMTFINkEyIDIgMCAwIDAgNCAxM1YyMUEyIDIgMCAwIDAgNiAyM0gxOEEyIDIgMCAwIDAgMjAgMjFWMTNBMiAyIDAgMCAwIDE4IDExTTE4IDE3SDZWMTRIMThNMTcgNVYxMEgxNS41VjYuNUg5Ljg4TDEyLjMgOC45M0wxMS4yNCAxMEw3IDUuNzVMMTEuMjQgMS41TDEyLjMgMi41N0w5Ljg4IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFJlZnVuZE91dGxpbmUgPSBcIk0xOCwxMUg2QTIsMiAwIDAsMCA0LDEzVjIxQTIsMiAwIDAsMCA2LDIzSDE4QTIsMiAwIDAsMCAyMCwyMVYxM0EyLDIgMCAwLDAgMTgsMTFNMTgsMjFINlYxN0gxOFYyMU0xOCwxNUg2VjEzSDE4VjE1TTE3LDVWMTBIMTUuNVY2LjVIOS44OEwxMi4zLDguOTNMMTEuMjQsMTBMNyw1Ljc1TDExLjI0LDEuNUwxMi4zLDIuNTdMOS44OCw1SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRSZW1vdmUgPSBcIk0yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgxMy4wOUE1LjQ3IDUuNDcgMCAwIDEgMTMgMTlBNiA2IDAgMCAxIDE5IDEzQTUuODggNS44OCAwIDAgMSAyMiAxMy44MVY2QTIgMiAwIDAgMCAyMCA0TTIwIDExSDRWOEgyME0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NiAyMS4xMkwxNy41OSAxOUwxNS40NiAxNi44OEwxNi44OCAxNS40NkwxOSAxNy41OUwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkUmVtb3ZlT3V0bGluZSA9IFwiTTEzIDE5QzEzIDE4LjY2IDEzLjA0IDE4LjMzIDEzLjA5IDE4SDNWMTJIMTlWMTNDMTkuNyAxMyAyMC4zNyAxMy4xMyAyMSAxMy4zNVY2QzIxIDQuODkgMjAuMTEgNCAxOSA0SDNDMS44OSA0IDEgNC44OSAxIDZWMThDMSAxOS4xIDEuODkgMjAgMyAyMEgxMy4wOUMxMy4wNCAxOS42NyAxMyAxOS4zNCAxMyAxOU0zIDZIMTlWOEgzVjZNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDZMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFNjYW4gPSBcIk0xOCA2SDZBMiAyIDAgMCAwIDQgOFYxNkEyIDIgMCAwIDAgNiAxOEgxOEEyIDIgMCAwIDAgMjAgMTZWOEEyIDIgMCAwIDAgMTggNk0xOCAxMkg2VjlIMThNMiA0SDZWMkgyQTIgMiAwIDAgMCAwIDRWOEgyVjRNMjIgMkgxOFY0SDIyVjhIMjRWNEEyIDIgMCAwIDAgMjIgMk0yIDE2SDBWMjBBMiAyIDAgMCAwIDIgMjJINlYyMEgyVjE2TTIyIDIwSDE4VjIySDIyQTIgMiAwIDAgMCAyNCAyMFYxNkgyMlYyMFwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTY2FuT3V0bGluZSA9IFwiTTIsNEg2VjJIMkEyLDIgMCAwLDAgMCw0VjhIMlY0TTIyLDJIMThWNEgyMlY4SDI0VjRBMiwyIDAgMCwwIDIyLDJNMiwxNkgwVjIwQTIsMiAwIDAsMCAyLDIySDZWMjBIMlYxNk0yMiwyMEgxOFYyMkgyMkEyLDIgMCAwLDAgMjQsMjBWMTZIMjJWMjBNNCw4VjE2QTIsMiAwIDAsMCA2LDE4SDE4QTIsMiAwIDAsMCAyMCwxNlY4QTIsMiAwIDAsMCAxOCw2SDZBMiwyIDAgMCwwIDQsOE02LDE2VjEySDE4VjE2SDZNMTgsOFYxMEg2VjhIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFNlYXJjaCA9IFwiTTExLjgyIDExQzkuNCAxMy41IDkuNCAxNy41IDExLjgyIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTIuMDZDMjEuNzQgMTEuNjUgMjEuNDUgMTEuMjYgMjEuMSAxMC45QzIwLjc2IDEwLjU3IDIwLjM5IDEwLjI3IDIwIDEwLjAzVjhINFYxMUgxMS44Mk0yMy4zOSAyMUwyMiAyMi4zOUwxOC44OCAxOS4zMkMxOC4xOSAxOS43NSAxNy4zNyAyMCAxNi41IDIwQzE0IDIwIDEyIDE4IDEyIDE1LjVTMTQgMTEgMTYuNSAxMSAyMSAxMyAyMSAxNS41QzIxIDE2LjM4IDIwLjc1IDE3LjIxIDIwLjMxIDE3LjlMMjMuMzkgMjFNMTkgMTUuNUMxOSAxNC4xMiAxNy44OCAxMyAxNi41IDEzUzE0IDE0LjEyIDE0IDE1LjUgMTUuMTIgMTggMTYuNSAxOCAxOSAxNi44OCAxOSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTZWFyY2hPdXRsaW5lID0gXCJNMTEuMDMgMTJDMTEuMjggMTEuNjEgMTEuNTcgMTEuMjQgMTEuOSAxMC45QzE0LjQ0IDguMzcgMTguNTYgOC4zNyAyMS4xIDEwLjlDMjEuNDUgMTEuMjYgMjEuNzQgMTEuNjUgMjIgMTIuMDZWNkMyMiA0Ljg5IDIxLjEgNCAyMCA0SDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMS44MkMxMS4yNCAxOS40IDEwLjggMTguNzIgMTAuNSAxOEg0VjEySDExLjAzTTQgNkgyMFY4SDRWNk0yMC4zMSAxNy45QzIwLjc1IDE3LjIxIDIxIDE2LjM4IDIxIDE1LjVDMjEgMTMgMTkgMTEgMTYuNSAxMVMxMiAxMyAxMiAxNS41IDE0IDIwIDE2LjUgMjBDMTcuMzcgMjAgMTguMTkgMTkuNzUgMTguODggMTkuMzJMMjIgMjIuMzlMMjMuMzkgMjFMMjAuMzEgMTcuOU0xNi41IDE4QzE1LjEyIDE4IDE0IDE2Ljg4IDE0IDE1LjVTMTUuMTIgMTMgMTYuNSAxMyAxOSAxNC4xMiAxOSAxNS41IDE3Ljg4IDE4IDE2LjUgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFNldHRpbmdzID0gXCJNMjAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjZBMiAyIDAgMCAwIDIwIDRNMjAgMTFINFY4SDIwTTcgMjJIOVYyNEg3VjIyTTExIDIySDEzVjI0SDExVjIyTTE1IDIySDE3VjI0SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTZXR0aW5nc091dGxpbmUgPSBcIk0yMCw4SDRWNkgyME0yMCwxOEg0VjEySDIwTTIwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyZWRpdENhcmRTeW5jID0gXCJNMTMgMTcuNUMxMyAxOC4zOSAxMy4xOCAxOS4yMyAxMy41IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTEuNUMyMS4yMyAxMS4xOCAyMC4zOSAxMSAxOS41IDExSDIwVjhINFYxMUgxOS41QzE1LjkxIDExIDEzIDEzLjkxIDEzIDE3LjVNMTkgMjBDMTcuNjIgMjAgMTYuNSAxOC44OCAxNi41IDE3LjVDMTYuNSAxNy4xIDE2LjU5IDE2LjcyIDE2Ljc2IDE2LjM4TDE1LjY3IDE1LjI5QzE1LjI1IDE1LjkyIDE1IDE2LjY4IDE1IDE3LjVDMTUgMTkuNzEgMTYuNzkgMjEuNSAxOSAyMS41VjIzTDIxLjI1IDIwLjc1TDE5IDE4LjVWMjBNMTkgMTMuNVYxMkwxNi43NSAxNC4yNUwxOSAxNi41VjE1QzIwLjM4IDE1IDIxLjUgMTYuMTIgMjEuNSAxNy41QzIxLjUgMTcuOSAyMS40MSAxOC4yOCAyMS4yNCAxOC42MkwyMi4zMyAxOS43MUMyMi43NSAxOS4wOCAyMyAxOC4zMiAyMyAxNy41QzIzIDE1LjI5IDIxLjIxIDEzLjUgMTkgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkU3luY091dGxpbmUgPSBcIk00IDE4VjEySDE2LjA1QzE3LjA1IDExLjM3IDE4LjIzIDExIDE5LjUgMTFDMjAuMzkgMTEgMjEuMjMgMTEuMTggMjIgMTEuNVY2QzIyIDQuODkgMjEuMSA0IDIwIDRINEMyLjg5IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDEzLjVDMTMuMjQgMTkuMzggMTMuMDggMTguNyAxMy4wMyAxOEg0TTQgNkgyMFY4SDRWNk0yMyAxNy41QzIzIDE4LjMyIDIyLjc1IDE5LjA4IDIyLjMzIDE5LjcxTDIxLjI0IDE4LjYyQzIxLjQxIDE4LjI4IDIxLjUgMTcuOSAyMS41IDE3LjVDMjEuNSAxNi4xMiAyMC4zOCAxNSAxOSAxNVYxNi41TDE2Ljc1IDE0LjI1TDE5IDEyVjEzLjVDMjEuMjEgMTMuNSAyMyAxNS4yOSAyMyAxNy41TTE5IDE4LjVMMjEuMjUgMjAuNzVMMTkgMjNWMjEuNUMxNi43OSAyMS41IDE1IDE5LjcxIDE1IDE3LjVDMTUgMTYuNjggMTUuMjUgMTUuOTIgMTUuNjcgMTUuMjlMMTYuNzYgMTYuMzhDMTYuNTkgMTYuNzIgMTYuNSAxNy4xIDE2LjUgMTcuNUMxNi41IDE4Ljg4IDE3LjYyIDIwIDE5IDIwVjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFdpcmVsZXNzID0gXCJNNC45MyA0LjkyTDYuMzQgNi4zM0M5LjQ2IDMuMiAxNC41MyAzLjIgMTcuNjYgNi4zM0wxOS4wNyA0LjkyQzE1LjE3IDEgOC44NCAxIDQuOTMgNC45Mk03Ljc2IDcuNzVMOS4xNyA5LjE2QzEwLjczIDcuNiAxMy4yNiA3LjYgMTQuODMgOS4xNkwxNi4yNCA3Ljc1QzEzLjkgNS40MSAxMC4xIDUuNDEgNy43NiA3Ljc1TTE4IDExSDZDNC44OSAxMSA0IDExLjkgNCAxM1YyMUM0IDIyLjExIDQuODkgMjMgNiAyM0gxOEMxOS4xMSAyMyAyMCAyMi4xMSAyMCAyMVYxM0MyMCAxMS45IDE5LjExIDExIDE4IDExTTE4IDE3SDZWMTRIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFdpcmVsZXNzT2ZmID0gXCJNMTIgMkM5Ljg1IDIgNy43IDIuNjkgNS45IDQuMDhMNy4zMiA1LjVDMTAuNDUgMy4yNCAxNC44NCAzLjUgMTcuNjYgNi4zM0wxOS4wNyA0LjkyQzE3LjEyIDIuOTYgMTQuNTYgMiAxMiAyTTMuMjggNEwyIDUuMjdMNy43MyAxMUg2QzQuODkgMTEgNCAxMS45IDQgMTNWMjFDNCAyMi4xMSA0Ljg5IDIzIDYgMjNIMThDMTguNSAyMyAxOC45MiAyMi44MiAxOS4yNyAyMi41NEwxOS43MyAyM0wyMSAyMS43Mk0xMiA2QzEwLjg3IDYgOS43NSA2LjMxIDguNzcgNi45NEwxMC4yNCA4LjQxQzExLjczIDcuNjggMTMuNTggNy45MiAxNC44MyA5LjE2TDE2LjI0IDcuNzVDMTUuMDcgNi41OCAxMy41NCA2IDEyIDZNMTIuODIgMTFMMTUuODIgMTRIMThWMTYuMThMMjAgMTguMThWMTNDMjAgMTEuOSAxOS4xMSAxMSAxOCAxMU02IDE0SDEwLjczTDEzLjczIDE3SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JlZGl0Q2FyZFdpcmVsZXNzT2ZmT3V0bGluZSA9IFwiTTEyIDJDOS44NSAyIDcuNyAyLjY5IDUuOSA0LjA4TDcuMzIgNS41QzEwLjQ1IDMuMjQgMTQuODQgMy41IDE3LjY2IDYuMzNMMTkuMDcgNC45MkMxNy4xMiAyLjk2IDE0LjU2IDIgMTIgMk0zLjI4IDRMMiA1LjI3TDcuNzMgMTFINkM0Ljg5IDExIDQgMTEuOSA0IDEzVjIxQzQgMjIuMTEgNC44OSAyMyA2IDIzSDE4QzE4LjQ3IDIzIDE4LjkyIDIyLjg0IDE5LjI3IDIyLjU0TDE5LjczIDIzTDIxIDIxLjcyTTEyIDZDMTAuODcgNiA5Ljc1IDYuMzEgOC43NyA2Ljk0TDEwLjI0IDguNDFDMTEuNzMgNy42OCAxMy41OCA3LjkyIDE0LjgzIDkuMTZMMTYuMjQgNy43NUMxNS4wNyA2LjU4IDEzLjU0IDYgMTIgNk0xMi44MiAxMUwxNC44MiAxM0gxOFYxNUgxNi44MkwyMCAxOC4xOFYxM0MyMCAxMS45IDE5LjExIDExIDE4IDExTTYgMTNIOS43M0wxMS43MyAxNUg2TTYgMTdIMTMuNzNMMTcuNzMgMjFINlpcIjtcclxuZXhwb3J0IHZhciBtZGlDcmVkaXRDYXJkV2lyZWxlc3NPdXRsaW5lID0gXCJNMTgsMTFINkEyLDIgMCAwLDAgNCwxM1YyMUEyLDIgMCAwLDAgNiwyM0gxOEEyLDIgMCAwLDAgMjAsMjFWMTNBMiwyIDAgMCwwIDE4LDExTTE4LDIxSDZWMTdIMThWMjFNMTgsMTVINlYxM0gxOFYxNU00LjkzLDQuOTJMNi4zNCw2LjMzQzkuNDYsMy4yIDE0LjUzLDMuMiAxNy42Niw2LjMzTDE5LjA3LDQuOTJDMTUuMTcsMSA4Ljg0LDEgNC45Myw0LjkyTTcuNzYsNy43NUw5LjE3LDkuMTZDMTAuNzMsNy42IDEzLjI2LDcuNiAxNC44Myw5LjE2TDE2LjI0LDcuNzVDMTMuOSw1LjQxIDEwLjEsNS40MSA3Ljc2LDcuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JpY2tldCA9IFwiTTE0LjM0LDE3Ljc3TDE1Ljc1LDE2LjM2TDIwLDIwLjU4TDE4LjU2LDIyTDE0LjM0LDE3Ljc3TTE4LjUsMkEzLjUsMy41IDAgMCwxIDIyLDUuNUEzLjUsMy41IDAgMCwxIDE4LjUsOUEzLjUsMy41IDAgMCwxIDE1LDUuNUEzLjUsMy41IDAgMCwxIDE4LjUsMk0yLjI0LDcuMTFMNS4wNyw0LjI4QzUuNDYsMy44OSA2LjA5LDMuODkgNi41LDQuMjhMMTQuOTcsMTIuNzdDMTUuMzYsMTMuMTYgMTUuMzYsMTMuNzkgMTQuOTcsMTQuMThMMTIuMTQsMTdDMTEuNzUsMTcuNCAxMS4xMiwxNy40IDEwLjcyLDE3TDIuMjQsOC41M0MxLjg1LDguMTMgMS44NSw3LjUgMi4yNCw3LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3AgPSBcIk03LDE3VjFINVY1SDFWN0g1VjE3QTIsMiAwIDAsMCA3LDE5SDE3VjIzSDE5VjE5SDIzVjE3TTE3LDE1SDE5VjdDMTksNS44OSAxOC4xLDUgMTcsNUg5VjdIMTdWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JvcEZyZWUgPSBcIk0xOSwzSDE1VjVIMTlWOUgyMVY1QzIxLDMuODkgMjAuMSwzIDE5LDNNMTksMTlIMTVWMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjE1SDE5TTUsMTVIM1YxOUEyLDIgMCAwLDAgNSwyMUg5VjE5SDVNMyw1VjlINVY1SDlWM0g1QTIsMiAwIDAsMCAzLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3JvcExhbmRzY2FwZSA9IFwiTTE5LDE3SDVWN0gxOU0xOSw1SDVBMiwyIDAgMCwwIDMsN1YxN0EyLDIgMCAwLDAgNSwxOUgxOUEyLDIgMCAwLDAgMjEsMTdWN0MyMSw1Ljg5IDIwLjEsNSAxOSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3BQb3J0cmFpdCA9IFwiTTE3LDE5SDdWNUgxN00xNywzSDdBMiwyIDAgMCwwIDUsNVYxOUEyLDIgMCAwLDAgNywyMUgxN0EyLDIgMCAwLDAgMTksMTlWNUMxOSwzLjg5IDE4LjEsMyAxNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3BSb3RhdGUgPSBcIk03LjQ3LDIxLjVDNC4yLDE5LjkzIDEuODYsMTYuNzYgMS41LDEzSDBDMC41LDE5LjE2IDUuNjYsMjQgMTEuOTUsMjRDMTIuMTgsMjQgMTIuMzksMjQgMTIuNjEsMjMuOTdMOC44LDIwLjE1TDcuNDcsMjEuNU0xMi4wNSwwQzExLjgyLDAgMTEuNjEsMCAxMS4zOSwwLjA0TDE1LjIsMy44NUwxNi41MywyLjVDMTkuOCw0LjA3IDIyLjE0LDcuMjQgMjIuNSwxMUgyNEMyMy41LDQuODQgMTguMzQsMCAxMi4wNSwwTTE2LDE0SDE4VjhDMTgsNi44OSAxNy4xLDYgMTYsNkgxMFY4SDE2VjE0TTgsMTZWNEg2VjZINFY4SDZWMTZBMiwyIDAgMCwwIDgsMThIMTZWMjBIMThWMThIMjBWMTZIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDcm9wU3F1YXJlID0gXCJNMTgsMThINlY2SDE4TTE4LDRINkEyLDIgMCAwLDAgNCw2VjE4QTIsMiAwIDAsMCA2LDIwSDE4QTIsMiAwIDAsMCAyMCwxOFY2QzIwLDQuODkgMTkuMSw0IDE4LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Jvc3NoYWlycyA9IFwiTTMuMDUsMTNIMVYxMUgzLjA1QzMuNSw2LjgzIDYuODMsMy41IDExLDMuMDVWMUgxM1YzLjA1QzE3LjE3LDMuNSAyMC41LDYuODMgMjAuOTUsMTFIMjNWMTNIMjAuOTVDMjAuNSwxNy4xNyAxNy4xNywyMC41IDEzLDIwLjk1VjIzSDExVjIwLjk1QzYuODMsMjAuNSAzLjUsMTcuMTcgMy4wNSwxM00xMiw1QTcsNyAwIDAsMCA1LDEyQTcsNyAwIDAsMCAxMiwxOUE3LDcgMCAwLDAgMTksMTJBNyw3IDAgMCwwIDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Jvc3NoYWlyc0dwcyA9IFwiTTEyLDhBNCw0IDAgMCwxIDE2LDEyQTQsNCAwIDAsMSAxMiwxNkE0LDQgMCAwLDEgOCwxMkE0LDQgMCAwLDEgMTIsOE0zLjA1LDEzSDFWMTFIMy4wNUMzLjUsNi44MyA2LjgzLDMuNSAxMSwzLjA1VjFIMTNWMy4wNUMxNy4xNywzLjUgMjAuNSw2LjgzIDIwLjk1LDExSDIzVjEzSDIwLjk1QzIwLjUsMTcuMTcgMTcuMTcsMjAuNSAxMywyMC45NVYyM0gxMVYyMC45NUM2LjgzLDIwLjUgMy41LDE3LjE3IDMuMDUsMTNNMTIsNUE3LDcgMCAwLDAgNSwxMkE3LDcgMCAwLDAgMTIsMTlBNyw3IDAgMCwwIDE5LDEyQTcsNyAwIDAsMCAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyb3NzaGFpcnNPZmYgPSBcIk0yMC45NCAxMUMyMC41IDYuODMgMTcuMTcgMy41IDEzIDMuMDZWMUgxMVYzLjA2QzkuODcgMy4xOCA4LjgxIDMuNSA3Ljg0IDQuMDNMOS4zNCA1LjUzQzEwLjE2IDUuMTkgMTEuMDYgNSAxMiA1QzE1Ljg3IDUgMTkgOC4xMyAxOSAxMkMxOSAxMi45NCAxOC44MSAxMy44NCAxOC41IDE0LjY1TDIwIDE2LjE1QzIwLjUgMTUuMTkgMjAuODIgMTQuMTMgMjAuOTUgMTNIMjNWMTFIMjAuOTRNMyA0LjI3TDUuMDQgNi4zMUMzLjk3IDcuNjIgMy4yNSA5LjIzIDMuMDYgMTFIMVYxM0gzLjA2QzMuNSAxNy4xNyA2LjgzIDIwLjUgMTEgMjAuOTRWMjNIMTNWMjAuOTRDMTQuNzcgMjAuNzQgMTYuMzggMjAuMDMgMTcuNjkgMTguOTZMMTkuNzMgMjFMMjEgMTkuNzNMNC4yNyAzTDMgNC4yN00xNi4yNyAxNy41NEMxNS4wOSAxOC40NSAxMy42MSAxOSAxMiAxOUM4LjEzIDE5IDUgMTUuODcgNSAxMkM1IDEwLjM5IDUuNTUgOC45MSA2LjQ2IDcuNzNMMTYuMjcgMTcuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Jvc3NoYWlyc1F1ZXN0aW9uID0gXCJNMy4wNSAxM0gxVjExSDMuMDVDMy41IDYuODMgNi44MyAzLjUgMTEgMy4wNVYxSDEzVjMuMDVDMTcuMTcgMy41IDIwLjUgNi44MyAyMC45NSAxMUgyM1YxM0gyMC45NUMyMC41IDE3LjE3IDE3LjE3IDIwLjUgMTMgMjAuOTVWMjNIMTFWMjAuOTVDNi44MyAyMC41IDMuNSAxNy4xNyAzLjA1IDEzTTEyIDVDOC4xMyA1IDUgOC4xMyA1IDEyUzguMTMgMTkgMTIgMTkgMTkgMTUuODcgMTkgMTIgMTUuODcgNSAxMiA1TTExLjEzIDE3LjI1SDEyLjg4VjE1LjVIMTEuMTNWMTcuMjVNMTIgNi43NUMxMC4wNyA2Ljc1IDguNSA4LjMyIDguNSAxMC4yNUgxMC4yNUMxMC4yNSA5LjI4IDExLjAzIDguNSAxMiA4LjVTMTMuNzUgOS4yOCAxMy43NSAxMC4yNUMxMy43NSAxMiAxMS4xMyAxMS43OCAxMS4xMyAxNC42M0gxMi44OEMxMi44OCAxMi42NiAxNS41IDEyLjQ0IDE1LjUgMTAuMjVDMTUuNSA4LjMyIDEzLjkzIDYuNzUgMTIgNi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcm93biA9IFwiTTUgMTZMMyA1TDguNSAxMEwxMiA0TDE1LjUgMTBMMjEgNUwxOSAxNkg1TTE5IDE5QzE5IDE5LjYgMTguNiAyMCAxOCAyMEg2QzUuNCAyMCA1IDE5LjYgNSAxOVYxOEgxOVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDcm93bk91dGxpbmUgPSBcIk0xMiA4TDE1IDEzLjJMMTggMTAuNUwxNy4zIDE0SDYuN0w2IDEwLjVMOSAxMy4yTDEyIDhNMTIgNEw4LjUgMTBMMyA1TDUgMTZIMTlMMjEgNUwxNS41IDEwTDEyIDRNMTkgMThINVYxOUM1IDE5LjYgNS40IDIwIDYgMjBIMThDMTguNiAyMCAxOSAxOS42IDE5IDE5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUNyeWVuZ2luZSA9IFwiTTIzLjAzLDEyLjRNMjMuMDMsMTIuNVYxMi41QzIzLDEzIDIwLjkxLDE1LjIzIDE3LjgyLDE2LjI0QzE0LjA1LDE3LjUgNy45NywxNy4wMyA3Ljk3LDEyLjNDNy45NywxMC4wOCA5Ljc4LDguMjcgMTIsOC4yN0MxNC4yNSw4LjI3IDE2LjA1LDEwLjA5IDE2LjA1LDEyLjMxQzE2LjA1LDEzLjM5IDE1LjU4LDE0LjQ0IDE0Ljg3LDE1LjE4QzE1LjU0LDE1LjE3IDE3Ljk0LDE1IDIwLjIxLDEzLjEyQzIwLjQ2LDEyLjg4IDIwLjYyLDEyLjY4IDIwLjY5LDEyLjU1QzIwLjcxLDEyLjUgMjAuNzQsMTIuNDYgMjAuNzMsMTIuNEMyMC43MywxMS45MiAxOC4xMiw4LjE5IDEyLjcyLDcuMTJDMTkuMjIsNy40NiAyMywxMS4zMiAyMy4wMywxMi40VjEyLjVIMjMuMDNNMTIsMTBDMTAuNzQsMTAgOS43MSwxMS4wNCA5LjcxLDEyLjNDOS43MSwxMy41NyAxMC43NCwxNC41OSAxMiwxNC41OUMxMy4yNywxNC41OSAxNC4yOSwxMy41NyAxNC4yOSwxMi4zQzE0LjI5LDExLjA0IDEzLjI3LDEwIDEyLDEwTTMuMzEsMTIuMzRDMy4zMSwxMi4zNCAzLjMxLDEyLjMxIDMuMzEsMTIuNDJWMTIuNDJDMy40MSwxMi45NCA0LjgyLDE1LjQxIDEwLjI4LDE2Ljg4QzMuOTYsMTYuMzcgMS4xMiwxMy4yOCAxLjA0LDEyLjQySDEuMDNDMS4wMywxMi4zMSAxLjAzLDEyLjM2IDEuMDMsMTIuMzVDMS4wMywxMS41IDQuOTYsNy41OCAxMC45Miw3LjE1QzYuMTQsOC4yNiAzLjMxLDExLjg3IDMuMzEsMTIuMzRWMTIuMzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3J5c3RhbEJhbGwgPSBcIk05LjM4LDguMzhMMTEuNSw5LjM0TDEzLjYyLDguMzhMMTIuNjYsMTAuNUwxMy42MiwxMi42MkwxMS41LDExLjY2TDkuMzgsMTIuNjJMMTAuMzQsMTAuNUw5LjM4LDguMzhNMTYuNSwyLjVMMTcuNTksNS40MUwyMC41LDYuNUwxNy41OSw3LjU5TDE2LjUsMTAuNUwxNS40MSw3LjU5TDEyLjUsNi41TDE1LjQxLDUuNDFMMTYuNSwyLjVNNiwxOUg3VjE4QTEsMSAwIDAsMSA4LDE3SDguMjZDNiwxNS43IDQuNSwxMy4yOCA0LjUsMTAuNUE3LjUsNy41IDAgMCwxIDEyLDNDMTMuMDUsMyAxNC4wNSwzLjIyIDE0Ljk2LDMuNjFMMTQuNTksNC41OUwxMy4xNyw1LjEyQzEyLjc5LDUuMDQgMTIuNCw1IDEyLDVBNS41LDUuNSAwIDAsMCA2LjUsMTAuNUE1LjUsNS41IDAgMCwwIDEyLDE2QzE0LjkxLDE2IDE3LjMsMTMuNzMgMTcuNSwxMC44N0wxOC40MSw4LjQxTDE5LjEyLDguMTRDMTkuMzcsOC44OCAxOS41LDkuNjggMTkuNSwxMC41QzE5LjUsMTMuMjggMTgsMTUuNyAxNS43NCwxN0gxNkExLDEgMCAwLDEgMTcsMThWMTlIMThBMiwyIDAgMCwxIDIwLDIxVjIySDRWMjFBMiwyIDAgMCwxIDYsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZSA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNi4wNCw3LjVMMTIsMTAuODVMMTcuOTYsNy41TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE3LjI4IDE5LjE3TDEyLjU3IDIxLjgyQzEyLjQxIDIxLjk0IDEyLjIxIDIyIDEyIDIyUzExLjU5IDIxLjk0IDExLjQzIDIxLjgyTDMuNTMgMTcuMzhDMy4yMSAxNy4yMSAzIDE2Ljg4IDMgMTYuNVY3LjVDMyA3LjEyIDMuMjEgNi43OSAzLjUzIDYuNjJMNC4zIDYuMTlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xMiA0LjE1TDE3Ljk2IDcuNUwxMy4zMSAxMC4xMUwyMC41MyAxNy4zM0MyMC44MiAxNy4xNiAyMSAxNi44NSAyMSAxNi41VjcuNUMyMSA3LjEyIDIwLjc5IDYuNzkgMjAuNDcgNi42MkwxMi41NyAyLjE4QzEyLjQxIDIuMDYgMTIuMjEgMiAxMiAyUzExLjU5IDIuMDYgMTEuNDMgMi4xOEw3LjU2IDQuMzZMOSA1LjgyTDEyIDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZU9mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDQuMyA2LjE5TDMuNTMgNi42MkMzLjIxIDYuNzkgMyA3LjEyIDMgNy41VjE2LjVDMyAxNi44OCAzLjIxIDE3LjIxIDMuNTMgMTcuMzhMMTEuNDMgMjEuODJDMTEuNTkgMjEuOTQgMTEuNzkgMjIgMTIgMjJTMTIuNDEgMjEuOTQgMTIuNTcgMjEuODJMMTcuMjggMTkuMTdMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNSAxNS45MVY5LjIxTDEwLjI5IDEyLjE4TDExIDEyLjg5VjE5LjI5TDUgMTUuOTFNMTMgMTkuMjlWMTQuODlMMTUuODIgMTcuN0wxMyAxOS4yOU05IDUuODJMNy41NiA0LjM2TDExLjQzIDIuMThDMTEuNTkgMi4wNiAxMS43OSAyIDEyIDJTMTIuNDEgMi4wNiAxMi41NyAyLjE4TDIwLjQ3IDYuNjJDMjAuNzkgNi43OSAyMSA3LjEyIDIxIDcuNVYxNi41QzIxIDE2Ljg1IDIwLjgyIDE3LjE2IDIwLjUzIDE3LjMzTDE5IDE1LjhWOS4yMUwxNC43OCAxMS41OEwxMy4zMSAxMC4xMUwxNy45NiA3LjVMMTIgNC4xNUw5IDUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZU91dGxpbmUgPSBcIk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDYuMDQsNy41TDEyLDEwLjg1TDE3Ljk2LDcuNUwxMiw0LjE1TTUsMTUuOTFMMTEsMTkuMjlWMTIuNThMNSw5LjIxVjE1LjkxTTE5LDE1LjkxVjkuMjFMMTMsMTIuNThWMTkuMjlMMTksMTUuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3ViZVNjYW4gPSBcIk0xNywyMlYyMEgyMFYxN0gyMlYyMC41QzIyLDIwLjg5IDIxLjg0LDIxLjI0IDIxLjU0LDIxLjU0QzIxLjI0LDIxLjg0IDIwLjg5LDIyIDIwLjUsMjJIMTdNNywyMkgzLjVDMy4xMSwyMiAyLjc2LDIxLjg0IDIuNDYsMjEuNTRDMi4xNiwyMS4yNCAyLDIwLjg5IDIsMjAuNVYxN0g0VjIwSDdWMjJNMTcsMkgyMC41QzIwLjg5LDIgMjEuMjQsMi4xNiAyMS41NCwyLjQ2QzIxLjg0LDIuNzYgMjIsMy4xMSAyMiwzLjVWN0gyMFY0SDE3VjJNNywyVjRINFY3SDJWMy41QzIsMy4xMSAyLjE2LDIuNzYgMi40NiwyLjQ2QzIuNzYsMi4xNiAzLjExLDIgMy41LDJIN00xMywxNy4yNUwxNywxNC45NVYxMC4zNkwxMywxMi42NlYxNy4yNU0xMiwxMC45MkwxNiw4LjYzTDEyLDYuMjhMOCw4LjYzTDEyLDEwLjkyTTcsMTQuOTVMMTEsMTcuMjVWMTIuNjZMNywxMC4zNlYxNC45NU0xOC4yMyw3LjU5QzE4LjczLDcuOTEgMTksOC4zNCAxOSw4LjkxVjE1LjIzQzE5LDE1LjggMTguNzMsMTYuMjMgMTguMjMsMTYuNTVMMTIuNzUsMTkuNzNDMTIuMjUsMjAuMDUgMTEuNzUsMjAuMDUgMTEuMjUsMTkuNzNMNS43NywxNi41NUM1LjI3LDE2LjIzIDUsMTUuOCA1LDE1LjIzVjguOTFDNSw4LjM0IDUuMjcsNy45MSA1Ljc3LDcuNTlMMTEuMjUsNC40MUMxMS41LDQuMjggMTEuNzUsNC4yMiAxMiw0LjIyQzEyLjI1LDQuMjIgMTIuNSw0LjI4IDEyLjc1LDQuNDFMMTguMjMsNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdWJlU2VuZCA9IFwiTTE2LDRMOSw4LjA0VjE1Ljk2TDE2LDIwTDIzLDE1Ljk2VjguMDRNMTYsNi4zMUwxOS44LDguNUwxNiwxMC42OUwxMi4yMSw4LjVNMCw3VjlIN1Y3TTExLDEwLjExTDE1LDEyLjQyVjE3LjExTDExLDE0LjgxTTIxLDEwLjExVjE0LjgxTDE3LDE3LjExVjEyLjQyTTIsMTFWMTNIN1YxMU00LDE1VjE3SDdWMTVcIjtcclxuZXhwb3J0IHZhciBtZGlDdWJlVW5mb2xkZWQgPSBcIk02LDlWNEgxM1Y5SDIzVjE2SDE4VjIxSDExVjE2SDFWOUg2TTE2LDE2SDEzVjE5SDE2VjE2TTgsOUgxMVY2SDhWOU02LDE0VjExSDNWMTRINk0xOCwxMVYxNEgyMVYxMUgxOE0xMywxMVYxNEgxNlYxMUgxM004LDExVjE0SDExVjExSDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwID0gXCJNMTguMzIsOEg1LjY3TDUuMjMsNEgxOC43N00zLDJMNSwyMC4yM0M1LjEzLDIxLjIzIDUuOTcsMjIgNywyMkgxN0MxOCwyMiAxOC44NywyMS4yMyAxOSwyMC4yM0wyMSwySDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMSwyMS43MkwxOS43MywyM0wxOC4yNywyMS41NEMxNy45MywyMS44MyAxNy41LDIyIDE3LDIySDdDNS45NywyMiA1LjEzLDIxLjIzIDUsMjAuMjNMMy41Myw2LjhMMSw0LjI3TTE4LjMyLDhMMTguNzcsNEg1LjgyTDMuODIsMkgyMUwxOS4yOSwxNy40N0w5LjgyLDhIMTguMzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwT2ZmT3V0bGluZSA9IFwiTTMuODMgMkw1LjgzIDRIMTguNzhMMTcuNSAxNS42NkwxOS4zIDE3LjVMMjEgMk0yLjI3IDNMMSA0LjI3TDMuNTMgNi44TDUgMjAuMjNDNS4xMyAyMS4yMyA1Ljk3IDIyIDcgMjJIMTdDMTcuNDcgMjIgMTcuOTEgMjEuODIgMTguMjYgMjEuNTRMMTkuNzMgMjNMMjEgMjEuNzNNNS43OCA5LjA2TDE2LjczIDIwSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwT3V0bGluZSA9IFwiTTMgMkw1IDIwLjIzQzUuMTMgMjEuMjMgNS45NyAyMiA3IDIySDE3QzE4IDIyIDE4Ljg3IDIxLjIzIDE5IDIwLjIzTDIxIDJIM001LjIyIDRIMTguNzhMMTcgMjBIN0w1LjIyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwV2F0ZXIgPSBcIk0xOC4zMiw4SDUuNjdMNS4yMyw0SDE4Ljc3TTEyLDE5QTMsMyAwIDAsMSA5LDE2QzksMTQgMTIsMTAuNiAxMiwxMC42QzEyLDEwLjYgMTUsMTQgMTUsMTZBMywzIDAgMCwxIDEyLDE5TTMsMkw1LDIwLjIzQzUuMTMsMjEuMjMgNS45NywyMiA3LDIySDE3QzE4LDIyIDE4Ljg3LDIxLjIzIDE5LDIwLjIzTDIxLDJIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXBib2FyZCA9IFwiTTE3IDJIN0M1LjkgMiA1IDIuOSA1IDRWMTlDNSAyMC4xMSA1LjkgMjEgNyAyMVYyMkg5VjIxSDE1VjIySDE3VjIxQzE4LjExIDIxIDE5IDIwLjExIDE5IDE5VjRDMTkgMi45IDE4LjExIDIgMTcgMk0xMCAxOEg4VjE1SDEwVjE4TTE2IDE4SDE0VjE1SDE2VjE4TTE3IDEySDdWOUgxN1YxMk0xNyA3SDdWNEgxN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cGJvYXJkT3V0bGluZSA9IFwiTTcgMkM1LjkgMiA1IDIuOSA1IDRWMTlDNSAyMC4xMSA1LjkgMjEgNyAyMVYyMkg5VjIxSDE1VjIySDE3VjIxQzE4LjExIDIxIDE5IDIwLjExIDE5IDE5VjRDMTkgMi45IDE4LjExIDIgMTcgMkg3TTcgNEgxN1Y3SDdWNE03IDlIMTdWMTJIN1Y5TTcgMTRIMTFWMTlIN1YxNE0xMyAxNEgxN1YxOUgxM1YxNE04IDE1VjE4SDEwVjE1SDhNMTQgMTVWMThIMTZWMTVIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VwY2FrZSA9IFwiTTEyLDEuNUEyLjUsMi41IDAgMCwxIDE0LjUsNEEyLjUsMi41IDAgMCwxIDEyLDYuNUEyLjUsMi41IDAgMCwxIDkuNSw0QTIuNSwyLjUgMCAwLDEgMTIsMS41TTE1Ljg3LDVDMTgsNSAyMCw3IDIwLDlDMjIuNyw5IDIyLjcsMTMgMjAsMTNINEMxLjMsMTMgMS4zLDkgNCw5QzQsNyA2LDUgOC4xMyw1QzguNTcsNi43MyAxMC4xNCw4IDEyLDhDMTMuODYsOCAxNS40Myw2LjczIDE1Ljg3LDVNNSwxNUg4TDksMjJIN0w1LDE1TTEwLDE1SDE0TDEzLDIySDExTDEwLDE1TTE2LDE1SDE5TDE3LDIySDE1TDE2LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cmxpbmcgPSBcIk0xMCwzVjVDMTIuNSw1IDEzLjksNS4wNSAxNC43Miw1LjQxQzE1LjI2LDUuNjUgMTUuNzMsNi4yMSAxNi4yNSw3SDVWOUgxOS42MkwxOC44OSw3LjU1QzE3Ljg2LDUuNSAxNi45Niw0LjIyIDE1LjUzLDMuNTlDMTQuMSwyLjk1IDEyLjUsMyAxMCwzTTYsMTFDMy43OCwxMSAyLDEyLjc4IDIsMTVWMThDMiwyMC4yMiAzLjc4LDIyIDYsMjJIMThDMjAuMjIsMjIgMjIsMjAuMjIgMjIsMThWMTVDMjIsMTIuNzggMjAuMjIsMTEgMTgsMTFINlpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUJkdCA9IFwiTTE4LjA5LDEwLjVWOUg5LjU5VjQuNUExLjUsMS41IDAgMCwwIDguMDksM0ExLjUsMS41IDAgMCwwIDYuNTksNC41QTEuNSwxLjUgMCAwLDAgOC4wOSw2VjlINS4wOVYxMC41SDguMDlWMTYuN0M4LjA5LDE5LjA2IDEwLDIwLjk3IDEyLjM0LDIxQzE0LjY4LDIwLjk2IDE2LjU0LDE5LjA0IDE2LjUsMTYuN0MxNi41LDE1LjExIDE1Ljc1LDEzLjYxIDE0LjUsMTIuNjJDMTQuMjgsMTIuNDQgMTQuMDUsMTIuMjggMTMuOCwxMi4xNUMxMy41OCwxMi4wNSAxMy4zNCwxMiAxMy4xLDEyQzEyLjM5LDEyIDExLjc0LDEyLjM5IDExLjM5LDEzQzExLjIsMTMuMyAxMS4xLDEzLjY1IDExLjEsMTRDMTEuMTEsMTUuMSAxMiwxNiAxMy4xMSwxNkMxMy43MywxNiAxNC4zMSwxNS42OSAxNC42OSwxNS4yQzE0LjksMTUuNjcgMTUsMTYuMTggMTUsMTYuN0MxNS4wNCwxOC4yIDEzLjg2LDE5LjQ1IDEyLjM0LDE5LjVDMTAuODEsMTkuNSA5LjU4LDE4LjIzIDkuNTksMTYuN1YxMC41SDE4LjA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5QnJsID0gXCJNMTIsMTVIMTRDMTQsMTYuMDggMTUuMzcsMTcgMTcsMTdDMTguNjMsMTcgMjAsMTYuMDggMjAsMTVDMjAsMTMuOSAxOC45NiwxMy41IDE2Ljc2LDEyLjk3QzE0LjY0LDEyLjQ0IDEyLDExLjc4IDEyLDlDMTIsNy4yMSAxMy40Nyw1LjY5IDE1LjUsNS4xOFYzSDE4LjVWNS4xOEMyMC41Myw1LjY5IDIyLDcuMjEgMjIsOUgyMEMyMCw3LjkyIDE4LjYzLDcgMTcsN0MxNS4zNyw3IDE0LDcuOTIgMTQsOUMxNCwxMC4xIDE1LjA0LDEwLjUgMTcuMjQsMTEuMDNDMTkuMzYsMTEuNTYgMjIsMTIuMjIgMjIsMTVDMjIsMTYuNzkgMjAuNTMsMTguMzEgMTguNSwxOC44MlYyMUgxNS41VjE4LjgyQzEzLjQ3LDE4LjMxIDEyLDE2Ljc5IDEyLDE1TTIsM0g1LjVBNS41LDUuNSAwIDAsMSAxMSw4LjVDMTEsMTAuNjkgOS43MSwxMi41OSA3Ljg2LDEzLjQ3TDExLjY0LDIxSDkuNEw1Ljg4LDE0SDUuNUw0LDE0VjIxSDJWM001LjUsMTJBMy41LDMuNSAwIDAsMCA5LDguNUEzLjUsMy41IDAgMCwwIDUuNSw1SDRWMTJINS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5QnRjID0gXCJNNiw0SDhWMkgxMFY0SDEyVjJIMTRWNC4wM0MxNi4yNSw0LjI4IDE4LDYuMTggMTgsOC41QzE4LDkuOCAxNy40NSwxMSAxNi41NiwxMS44QzE3LjczLDEyLjYxIDE4LjUsMTMuOTcgMTguNSwxNS41QzE4LjUsMTggMTYuNSwyMCAxNCwyMFYyMkgxMlYyMEgxMFYyMkg4VjIwSDZMNi41LDE4SDhWNkg2VjRNMTAsMTNWMThIMTRBMi41LDIuNSAwIDAsMCAxNi41LDE1LjVBMi41LDIuNSAwIDAsMCAxNCwxM0gxME0xMCw2VjExSDEzLjVBMi41LDIuNSAwIDAsMCAxNiw4LjVBMi41LDIuNSAwIDAsMCAxMy41LDZIMTMuNUwxMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5Q255ID0gXCJNMTEsMjFWMTZINlYxNEgxMVYxMy43MUwxMC4xNiwxMkg2VjEwSDkuMTlMNS43NywzSDhMMTIsMTEuMkwxNiwzSDE4LjIzTDE0LjgxLDEwSDE4VjEySDEzLjg0TDEzLDEzLjcxVjE0SDE4VjE2SDEzVjIxSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5RXRoID0gXCJNNiw1SDE4VjdINk03LDExSDE3VjEzSDdNNS41LDE3SDE4LjVWMTlINS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lFdXIgPSBcIk03LjA3LDExTDcsMTJMNy4wNywxM0gxNy4zNUwxNi41LDE1SDcuNjdDOC44LDE3LjM2IDExLjIxLDE5IDE0LDE5QzE2LjIzLDE5IDE4LjIyLDE3Ljk2IDE5LjUsMTYuMzNWMTkuMTJDMTgsMjAuMyAxNi4wNywyMSAxNCwyMUMxMC4wOCwyMSA2Ljc1LDE4LjUgNS41LDE1SDJMMywxM0g1LjA1TDUsMTJMNS4wNSwxMUgyTDMsOUg1LjVDNi43NSw1LjUgMTAuMDgsMyAxNCwzQzE2LjUsMyAxOC44LDQuMDQgMjAuNDMsNS43MUwxOS41Nyw3Ljc1QzE4LjI5LDYuMDggMTYuMjcsNSAxNCw1QzExLjIxLDUgOC44LDYuNjQgNy42Nyw5SDE5LjA0TDE4LjE5LDExSDcuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lFdXJPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDYgNy44OUM1LjgxIDguMjUgNS42NCA4LjYyIDUuNSA5SDNMMiAxMUg1LjA1TDUgMTJMNS4wNSAxM0gzTDIgMTVINS41QzYuNzUgMTguNSAxMC4wOCAyMSAxNCAyMUMxNS41IDIxIDE2Ljg5IDIwLjY1IDE4LjEyIDIwTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTcgMTJMNy4wNyAxMUg5LjEyTDExLjEyIDEzSDcuMDdMNyAxMk0xNCAxOUMxMS4yMSAxOSA4LjggMTcuMzcgNy42NyAxNUgxMy4xMkwxNi42IDE4LjVDMTUuNzkgMTguODEgMTQuOTIgMTkgMTQgMTlNMTcgMTMuODFMMTYuMjEgMTNIMTcuMzVMMTcgMTMuODFNMTguMTkgMTFIMTQuMjFMMTIuMjEgOUgxOS4wNEwxOC4xOSAxMU05LjcgNi41TDguMjcgNS4wN0M5LjgzIDMuNzggMTEuODIgMyAxNCAzQzE2LjUgMyAxOC44IDQuMDUgMjAuNDMgNS43MkwxOS41NyA3Ljc2QzE4LjI5IDYuMDkgMTYuMjcgNSAxNCA1QzEyLjM4IDUgMTAuODkgNS41OCA5LjcgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5R2JwID0gXCJNNiwyMVYxOUMxMCwxNyA5LjUsMTMgOS41LDEzSDdWMTFIOS41QzguNSw2LjUgMTAsMyAxNCwzQzE2LDMgMTcsMy41IDE3LDMuNVY1LjVDMTEsMy41IDExLDggMTEuNSwxMUgxNlYxM0gxMS41QzExLjUsMTMgMTIsMTcgOS41LDE5SDE4VjIxSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lJbHMgPSBcIk0yMiwxNkE1LDUgMCAwLDEgMTcsMjFIOFY5SDEwVjE5SDE3QTMsMyAwIDAsMCAyMCwxNlYzSDIyVjE2TTE2LDhWMTVIMTRWOEEzLDMgMCAwLDAgMTEsNUg0VjIxSDJWM0gxMUE1LDUgMCAwLDEgMTYsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUluciA9IFwiTTgsM0gxOEwxNyw1SDEzLjc0QzE0LjIyLDUuNTggMTQuNTgsNi4yNiAxNC43OSw3SDE4TDE3LDlIMTVDMTQuNzUsMTEuNTcgMTIuNzQsMTMuNjMgMTAuMiwxMy45NlYxNEg5LjVMMTUuNSwyMUgxM0w3LDE0VjEySDkuNVYxMkMxMS4yNiwxMiAxMi43MiwxMC43IDEyLjk2LDlIN0w4LDdIMTIuNjZDMTIuMSw1LjgyIDEwLjksNSA5LjUsNUg3TDgsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUpweSA9IFwiTTExLDIxVjE2SDZWMTRIMTFWMTMuNzFMMTAuMTYsMTJINlYxMEg5LjE5TDUuNzcsM0g4TDEyLDExLjJMMTYsM0gxOC4yM0wxNC44MSwxMEgxOFYxMkgxMy44NEwxMywxMy43MVYxNEgxOFYxNkgxM1YyMUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeUtydyA9IFwiTTIsM0g0TDUuMzMsOUg5LjMzTDEwLjY3LDNIMTMuMzNMMTQuNjcsOUgxOC42N0wyMCwzSDIyTDIwLjY3LDlIMjJWMTFIMjAuMjJMMTkuNzgsMTNIMjJWMTVIMTkuMzNMMTgsMjFIMTUuMzNMMTQsMTVIMTBMOC42NywyMUg2TDQuNjcsMTVIMlYxM0g0LjIyTDMuNzgsMTFIMlY5SDMuMzNMMiwzTTEzLjExLDExSDEwLjg5TDEwLjQ0LDEzSDEzLjU2TDEzLjExLDExTTcuMzMsMThMOCwxNUg2LjY3TDcuMzMsMThNOC44OSwxMUg1Ljc4TDYuMjIsMTNIOC40NEw4Ljg5LDExTTE2LjY3LDE4TDE3LjMzLDE1SDE2TDE2LjY3LDE4TTE4LjIyLDExSDE1LjExTDE1LjU2LDEzSDE3Ljc4TDE4LjIyLDExTTEyLDZMMTEuMzMsOUgxMi42N0wxMiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5S3p0ID0gXCJNNSwzSDE5VjVINVYzTTUsNkgxOVY4SDEzVjIxSDExVjhINVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5TW50ID0gXCJNMTMgNVY4LjYyTDE3IDcuMTdWOS4yOUwxMyAxMC43NFYxMi41TDE3IDExLjA3VjEzLjJMMTMgMTQuNjVWMjFIMTFWMTUuMzhMNyAxNi44NFYxNC43MUwxMSAxMy4yNFYxMS40N0w3IDEyLjkyVjEwLjhMMTEgOS4zNVY1SDVWM0gxOVY1SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5TmduID0gXCJNNCw5SDZWM0g4TDExLjQyLDlIMTZWM0gxOFY5SDIwVjExSDE4VjEzSDIwVjE1SDE4VjIxSDE2TDEyLjU3LDE1SDhWMjFINlYxNUg0VjEzSDZWMTFINFY5TTgsOUg5LjEzTDgsNy4wM1Y5TTgsMTFWMTNIMTEuNDJMMTAuMjgsMTFIOE0xNiwxN1YxNUgxNC44NUwxNiwxN00xMi41NiwxMUwxMy43MSwxM0gxNlYxMUgxMi41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVBocCA9IFwiTTUsMlY2SDNWOEg1VjEwSDNWMTJINVYyMkg3VjE2SDEzQzE1LjcsMTYgMTguMTYsMTQuNDQgMTkuMzIsMTJIMjJWMTBIMTkuOTJDMjAuMDMsOS4zNCAyMC4wMyw4LjY2IDE5LjkyLDhIMjJWNkgxOS4zMkMxOC4xNiwzLjU2IDE1LjcsMiAxMywyTTcsNEgxM0MxNC41Nyw0IDE2LjA2LDQuNzQgMTcsNkg3VjRNMTMsMTRIN1YxMkgxN0MxNi4wNiwxMy4yNiAxNC41NywxNCAxMywxNE0xOCw5QzE4LDkuMzQgMTcuOTYsOS42NyAxNy45LDEwSDdWOEgxNy45QzE3Ljk2LDguMzMgMTgsOC42NiAxOCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5UmlhbCA9IFwiTTExLDE3SDEzVjE5SDExVjE3TTE0LDE3SDE2VjE5SDE0VjE3TTksNEgxMVYxNUE0LDQgMCAwLDEgNywxOUg1QTMsMyAwIDAsMSAyLDE2VjEySDRWMTZBMSwxIDAgMCwwIDUsMTdIN0M4LjExLDE3IDksMTYuMTEgOSwxNVY0TTEyLDRIMTRWMTNIMTdWOEgxOVYxM0MxOSwxNC4xMSAxOC4xMSwxNSAxNywxNUgxNEMxMi44OSwxNSAxMiwxNC4xMSAxMiwxM1Y0TTIwLDEwSDIyVjE3QTMsMyAwIDAsMSAxOSwyMEgxN1YxOEgxOUExLDEgMCAwLDAgMjAsMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lSdWIgPSBcIk02LDEwSDdWM0gxNC41QzE3LDMgMTksNSAxOSw3LjVDMTksMTAgMTcsMTIgMTQuNSwxMkg5VjE0SDE1VjE2SDlWMjFIN1YxNkg2VjE0SDdWMTJINlYxME0xNC41LDVIOVYxMEgxNC41QTIuNSwyLjUgMCAwLDAgMTcsNy41QTIuNSwyLjUgMCAwLDAgMTQuNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5U2lnbiA9IFwiTTQuNDEgM0wzIDQuNDFMNS42OSA3LjFDNC42MyA4LjQ2IDQgMTAuMTUgNCAxMkM0IDEzLjg1IDQuNjMgMTUuNTUgNS42OSAxNi45TDMgMTkuNTlMNC40MSAyMUw3LjEgMTguMzFDOC40NiAxOS4zNyAxMC4xNSAyMCAxMiAyMEMxMy44NSAyMCAxNS41NSAxOS4zNyAxNi45IDE4LjMxTDE5LjU5IDIxTDIxIDE5LjU5TDE4LjMxIDE2LjlDMTkuMzcgMTUuNTQgMjAgMTMuODUgMjAgMTJDMjAgMTAuMTUgMTkuMzcgOC40NSAxOC4zMSA3LjFMMjEgNC40MUwxOS41OSAzTDE2LjkgNS42OUMxNS41NCA0LjYzIDEzLjg1IDQgMTIgNEMxMC4xNSA0IDguNDUgNC42MyA3LjEgNS42OUw0LjQxIDNNMTIgNkMxNS4zMSA2IDE4IDguNjkgMTggMTJDMTggMTUuMzEgMTUuMzEgMTggMTIgMThDOC42OSAxOCA2IDE1LjMxIDYgMTJDNiA4LjY5IDguNjkgNiAxMiA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5VHJ5ID0gXCJNMTksMTJBOSw5IDAgMCwxIDEwLDIxSDhWMTIuNzdMNSwxMy44N1YxMS43NEw4LDEwLjY0VjguODdMNSw5Ljk2VjcuODRMOCw2Ljc0VjNIMTBWNkwxNSw0LjJWNi4zMkwxMCw4LjE0VjkuOTJMMTUsOC4xVjEwLjIzTDEwLDEyLjA1VjE5QTcsNyAwIDAsMCAxNywxMkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVR3ZCA9IFwiTTMsMTFIMjFWMTNIMTVWMTlIMjFWMjFIMTVBMiwyIDAgMCwxIDEzLDE5VjEzSDEwLjM1TDUuNzMsMjFMNCwyMEw4LjA0LDEzSDNWMTFNNSwzSDE5VjVINVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbmN5VXNkID0gXCJNNywxNUg5QzksMTYuMDggMTAuMzcsMTcgMTIsMTdDMTMuNjMsMTcgMTUsMTYuMDggMTUsMTVDMTUsMTMuOSAxMy45NiwxMy41IDExLjc2LDEyLjk3QzkuNjQsMTIuNDQgNywxMS43OCA3LDlDNyw3LjIxIDguNDcsNS42OSAxMC41LDUuMThWM0gxMy41VjUuMThDMTUuNTMsNS42OSAxNyw3LjIxIDE3LDlIMTVDMTUsNy45MiAxMy42Myw3IDEyLDdDMTAuMzcsNyA5LDcuOTIgOSw5QzksMTAuMSAxMC4wNCwxMC41IDEyLjI0LDExLjAzQzE0LjM2LDExLjU2IDE3LDEyLjIyIDE3LDE1QzE3LDE2Ljc5IDE1LjUzLDE4LjMxIDEzLjUsMTguODJWMjFIMTAuNVYxOC44MkM4LjQ3LDE4LjMxIDcsMTYuNzkgNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVVzZENpcmNsZSA9IFwiTTEyIDJBMTAgMTAgMCAxIDAgMjIgMTJBMTAgMTAgMCAwIDAgMTIgMk0xNSAxMEgxMVYxMUgxNEExIDEgMCAwIDEgMTUgMTJWMTVBMSAxIDAgMCAxIDE0IDE2SDEzVjE3SDExVjE2SDlWMTRIMTNWMTNIMTBBMSAxIDAgMCAxIDkgMTJWOUExIDEgMCAwIDEgMTAgOEgxMVY3SDEzVjhIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3VycmVuY3lVc2RDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0TTExLDE3VjE2SDlWMTRIMTNWMTNIMTBBMSwxIDAgMCwxIDksMTJWOUExLDEgMCAwLDEgMTAsOEgxMVY3SDEzVjhIMTVWMTBIMTFWMTFIMTRBMSwxIDAgMCwxIDE1LDEyVjE1QTEsMSAwIDAsMSAxNCwxNkgxM1YxN0gxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW5jeVVzZE9mZiA9IFwiTTMsNC4yN0w0LjI4LDNMMjEsMTkuNzJMMTkuNzMsMjFMMTYuMDYsMTcuMzNDMTUuNDQsMTggMTQuNTQsMTguNTUgMTMuNSwxOC44MlYyMUgxMC41VjE4LjgyQzguNDcsMTguMzEgNywxNi43OSA3LDE1SDlDOSwxNi4wOCAxMC4zNywxNyAxMiwxN0MxMy4xMywxNyAxNC4xNCwxNi41NiAxNC42NSwxNS45MkwxMS42OCwxMi45NUM5LjU4LDEyLjQyIDcsMTEuNzUgNyw5QzcsOC43NyA3LDguNTUgNy4wNyw4LjM0TDMsNC4yN00xMC41LDUuMThWM0gxMy41VjUuMThDMTUuNTMsNS42OSAxNyw3LjIxIDE3LDlIMTVDMTUsNy45MiAxMy42Myw3IDEyLDdDMTEuNjMsNyAxMS4yOCw3LjA1IDEwLjk1LDcuMTNMOS40LDUuNThMMTAuNSw1LjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnJlbnRBYyA9IFwiTTEyLjQzIDExQzEyLjI4IDEwLjg0IDEwIDcgNyA3UzIuMzIgMTAuMTggMiAxMVYxM0gxMS41N0MxMS43MiAxMy4xNiAxNCAxNyAxNyAxN1MyMS42OCAxMy44MiAyMiAxM1YxMUgxMi40M003IDlDOC4xNyA5IDkuMTggOS44NSAxMCAxMUg0LjMxQzQuNzggMTAuMTcgNS41NCA5IDcgOU0xNyAxNUMxNS44MyAxNSAxNC44MiAxNC4xNSAxNCAxM0gxOS42OUMxOS4yMiAxMy44MyAxOC40NiAxNSAxNyAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJyZW50RGMgPSBcIk0yLDlWMTFIMjJWOUgyTTIsMTNWMTVIN1YxM0gyTTksMTNWMTVIMTVWMTNIOU0xNywxM1YxNUgyMlYxM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JEZWZhdWx0ID0gXCJNMTMuNjQsMjEuOTdDMTMuMTQsMjIuMjEgMTIuNTQsMjIgMTIuMzEsMjEuNUwxMC4xMywxNi43Nkw3LjYyLDE4Ljc4QzcuNDUsMTguOTIgNy4yNCwxOSA3LDE5QTEsMSAwIDAsMSA2LDE4VjNBMSwxIDAgMCwxIDcsMkM3LjI0LDIgNy40NywyLjA5IDcuNjQsMi4yM0w3LjY1LDIuMjJMMTkuMTQsMTEuODZDMTkuNTcsMTIuMjIgMTkuNjIsMTIuODUgMTkuMjcsMTMuMjdDMTkuMTIsMTMuNDUgMTguOTEsMTMuNTcgMTguNywxMy42MUwxNS41NCwxNC4yM0wxNy43NCwxOC45NkMxOCwxOS40NiAxNy43NiwyMC4wNSAxNy4yNiwyMC4yOEwxMy42NCwyMS45N1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JEZWZhdWx0Q2xpY2sgPSBcIk0xMC43Niw4LjY5QTAuNzYsMC43NiAwIDAsMCAxMCw5LjQ1VjIwLjlDMTAsMjEuMzIgMTAuMzQsMjEuNjYgMTAuNzYsMjEuNjZDMTAuOTUsMjEuNjYgMTEuMTEsMjEuNiAxMS4yNCwyMS41TDEzLjE1LDE5Ljk1TDE0LjgxLDIzLjU3QzE0Ljk0LDIzLjg0IDE1LjIxLDI0IDE1LjUsMjRDMTUuNjEsMjQgMTUuNzIsMjQgMTUuODMsMjMuOTJMMTguNTksMjIuNjRDMTguOTcsMjIuNDYgMTkuMTUsMjIgMTguOTUsMjEuNjNMMTcuMjgsMThMMTkuNjksMTcuNTVDMTkuODUsMTcuNSAyMCwxNy40MyAyMC4xMiwxNy4yOUMyMC4zOSwxNi45NyAyMC4zNSwxNi41IDIwLDE2LjIxTDExLjI2LDguODZMMTEuMjUsOC44N0MxMS4xMiw4Ljc2IDEwLjk1LDguNjkgMTAuNzYsOC42OU0xNSwxMFY4SDIwVjEwSDE1TTEzLjgzLDQuNzZMMTYuNjYsMS45M0wxOC4wNywzLjM0TDE1LjI0LDYuMTdMMTMuODMsNC43Nk0xMCwwSDEyVjVIMTBWME0zLjkzLDE0LjY2TDYuNzYsMTEuODNMOC4xNywxMy4yNEw1LjM0LDE2LjA3TDMuOTMsMTQuNjZNMy45MywzLjM0TDUuMzQsMS45M0w4LjE3LDQuNzZMNi43Niw2LjE3TDMuOTMsMy4zNE03LDEwSDJWOEg3VjEwXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yRGVmYXVsdENsaWNrT3V0bGluZSA9IFwiTTExLjUsMTFMMTcuODgsMTYuMzdMMTcsMTYuNTVMMTYuMzYsMTYuNjdDMTUuNzMsMTYuOCAxNS4zNywxNy41IDE1LjY1LDE4LjA3TDE1LjkyLDE4LjY1TDE3LjI4LDIxLjU5TDE1Ljg2LDIyLjI1TDE0LjUsMTkuMzJMMTQuMjQsMTguNzRDMTMuOTcsMTguMTUgMTMuMjIsMTcuOTcgMTIuNzIsMTguMzhMMTIuMjEsMTguNzhMMTEuNSwxOS4zNVYxMU0xMC43Niw4LjY5QTAuNzYsMC43NiAwIDAsMCAxMCw5LjQ1VjIwLjlDMTAsMjEuMzIgMTAuMzQsMjEuNjYgMTAuNzYsMjEuNjZDMTAuOTUsMjEuNjYgMTEuMTEsMjEuNiAxMS4yNCwyMS41TDEzLjE1LDE5Ljk1TDE0LjgxLDIzLjU3QzE0Ljk0LDIzLjg0IDE1LjIxLDI0IDE1LjUsMjRDMTUuNjEsMjQgMTUuNzIsMjQgMTUuODMsMjMuOTJMMTguNTksMjIuNjRDMTguOTcsMjIuNDYgMTkuMTUsMjIgMTguOTUsMjEuNjNMMTcuMjgsMThMMTkuNjksMTcuNTVDMTkuODUsMTcuNSAyMCwxNy40MyAyMC4xMiwxNy4yOUMyMC4zOSwxNi45NyAyMC4zNSwxNi41IDIwLDE2LjIxTDExLjI2LDguODZMMTEuMjUsOC44N0MxMS4xMiw4Ljc2IDEwLjk1LDguNjkgMTAuNzYsOC42OU0xNSwxMFY4SDIwVjEwSDE1TTEzLjgzLDQuNzZMMTYuNjYsMS45M0wxOC4wNywzLjM0TDE1LjI0LDYuMTdMMTMuODMsNC43Nk0xMCwwSDEyVjVIMTBWME0zLjkzLDE0LjY2TDYuNzYsMTEuODNMOC4xNywxMy4yNEw1LjM0LDE2LjA3TDMuOTMsMTQuNjZNMy45MywzLjM0TDUuMzQsMS45M0w4LjE3LDQuNzZMNi43Niw2LjE3TDMuOTMsMy4zNE03LDEwSDJWOEg3VjEwXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yRGVmYXVsdEdlc3R1cmUgPSBcIk0xNS41OSA4QzE1LjI2IDggMTUgOC4yNyAxNSA4LjZWMTcuNTdDMTUgMTcuOSAxNS4yNiAxOC4xNyAxNS41OSAxOC4xN0MxNS43NCAxOC4xNyAxNS44NiAxOC4xMiAxNS45NiAxOC4wNEwxNy40NSAxNi44M0wxOC43NCAxOS42NkMxOC44NCAxOS44OCAxOS4wNSAyMCAxOS4yNyAyMEMxOS4zNiAyMCAxOS40NCAyMCAxOS41MyAxOS45NEwyMS42NyAxOC45M0MyMS45NyAxOC43OSAyMi4xMSAxOC40MyAyMS45NSAxOC4xNEwyMC42NiAxNS4zTDIyLjUzIDE0Ljk0QzIyLjY1IDE0LjkxIDIyLjc3IDE0Ljg1IDIyLjg2IDE0Ljc0QzIzLjA3IDE0LjUgMjMuMDQgMTQuMTIgMjIuNzcgMTMuODlMMTYgOC4xM0MxNS44OCA4LjA1IDE1Ljc0IDggMTUuNTkgOE0xMi41IDYuNzNDMTIuNzIgNi42NiAxMy4xNyA3LjE5IDEzLjU5IDcuNzZMMTUgNi43MUMxNC44NyA2LjUgMTQuNjkgNi4yNSAxNC40NyA1Ljk2QzE0LjMxIDUuNzUgMTMuNTkgNC45MyAxMi42NiA0LjhDMTIuMDQgNC43MiAxMC44MSA1LjA2IDEwLjYgNi42MUMxMC40NyA3LjU4IDEwLjc2IDguMTkgMTEuMjEgOS4wOEMxMS40NiA5LjYgMTIuMDQgMTAuOTYgMTIuMTggMTEuNzhDMTIuMzMgMTIuNTkgMTIuMDYgMTMuMTYgMTEuNzQgMTMuMTJDMTEuNDQgMTMuMDggMTEuMiAxMi42NSAxMS4wMyAxMi40MUMxMC44OSAxMi4yMiAxMCAxMC44MiA5LjY3IDEwLjIzQzkuMjIgOS41IDguMDQgNy45NiA2LjQ0IDcuNzRDNC4zNSA3LjQ2IDMuNDQgOS4yIDMuMTggMTAuMzZMMSAxMC4wNlYxMS44OEwyLjkzIDEyLjE1QzIuNzUgMTUuNiA0LjUgMTYuODIgNS42NyAxN0M2LjkyIDE3LjE1IDguMDggMTYuMjggOC4yNCAxNS4wNkM4LjQxIDEzLjg0IDcuNTYgMTEuNSA0Ljk2IDEwLjY5QzUuMSAxMC4xNSA1LjIxIDkuNDMgNi4zNiA5LjU5QzcuMjYgOS43MSA4LjIxIDExLjI2IDguOTMgMTIuNDRDOS41OCAxMy41MyAxMC4xIDE0LjM5IDEwLjgzIDE0LjcyQzExLjQ1IDE1IDEyLjE2IDE0Ljk3IDEyLjczIDE0LjY1QzEzLjQyIDE0LjI2IDEzLjg2IDEzLjU1IDE0IDEyLjYzQzE0LjIyIDEwLjkgMTIuNyA4LjE3IDEyLjU3IDcuODRDMTIuNCA3LjQ2IDEyLjEyIDYuODIgMTIuNSA2LjczTTYuNSAxNC43OEM2LjQzIDE1LjExIDYuMSAxNS4yNSA1Ljg4IDE1LjIyQzUuMzggMTUuMTYgNC42NiAxNC41IDQuNzEgMTIuNTNDNi4xNyAxMy4xMyA2LjUzIDE0LjM1IDYuNSAxNC43OFpcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JEZWZhdWx0R2VzdHVyZU91dGxpbmUgPSBcIk0xNi41IDEwLjU0TDIwLjM3IDEzLjgzTDE4LjUgMTQuMThMMTkuMjkgMTUuOTJMMjAuMjIgMTcuOTZMMTkuNzIgMTguMTlMMTguODEgMTYuMkwxOCAxNC40M0wxNi41IDE1LjY2VjEwLjU0TTE1LjU5IDhDMTUuMjYgOCAxNSA4LjI3IDE1IDguNlYxNy41N0MxNSAxNy45IDE1LjI2IDE4LjE3IDE1LjU5IDE4LjE3QzE1Ljc0IDE4LjE3IDE1Ljg2IDE4LjEyIDE1Ljk2IDE4LjA0TDE3LjQ1IDE2LjgzTDE4Ljc0IDE5LjY2QzE4Ljg0IDE5Ljg4IDE5LjA1IDIwIDE5LjI3IDIwQzE5LjM2IDIwIDE5LjQ0IDIwIDE5LjUzIDE5Ljk0TDIxLjY3IDE4LjkzQzIxLjk3IDE4Ljc5IDIyLjExIDE4LjQzIDIxLjk1IDE4LjE0TDIwLjY2IDE1LjNMMjIuNTMgMTQuOTRDMjIuNjUgMTQuOTEgMjIuNzcgMTQuODUgMjIuODYgMTQuNzRDMjMuMDcgMTQuNSAyMy4wNCAxNC4xMiAyMi43NyAxMy44OUwxNiA4LjEzQzE1Ljg4IDguMDUgMTUuNzQgOCAxNS41OSA4TTEyLjUgNi43M0MxMi43MiA2LjY2IDEzLjE3IDcuMTkgMTMuNTkgNy43NkwxNSA2LjcxQzE0Ljg3IDYuNSAxNC42OSA2LjI1IDE0LjQ3IDUuOTZDMTQuMzEgNS43NSAxMy41OSA0LjkzIDEyLjY2IDQuOEMxMi4wNCA0LjcyIDEwLjgxIDUuMDYgMTAuNiA2LjYxQzEwLjQ3IDcuNTggMTAuNzYgOC4xOSAxMS4yMSA5LjA4QzExLjQ2IDkuNiAxMi4wNCAxMC45NiAxMi4xOCAxMS43OEMxMi4zMyAxMi41OSAxMi4wNiAxMy4xNiAxMS43NCAxMy4xMkMxMS40NCAxMy4wOCAxMS4yIDEyLjY1IDExLjAzIDEyLjQxQzEwLjg5IDEyLjIyIDEwIDEwLjgyIDkuNjcgMTAuMjNDOS4yMiA5LjUgOC4wNCA3Ljk2IDYuNDQgNy43NEM0LjM1IDcuNDYgMy40NCA5LjIgMy4xOCAxMC4zNkwxIDEwLjA2VjExLjg4TDIuOTMgMTIuMTVDMi43NSAxNS42IDQuNSAxNi44MiA1LjY3IDE3QzYuOTIgMTcuMTUgOC4wOCAxNi4yOCA4LjI0IDE1LjA2QzguNDEgMTMuODQgNy41NiAxMS41IDQuOTYgMTAuNjlDNS4xIDEwLjE1IDUuMjEgOS40MyA2LjM2IDkuNTlDNy4yNiA5LjcxIDguMjEgMTEuMjYgOC45MyAxMi40NEM5LjU4IDEzLjUzIDEwLjEgMTQuMzkgMTAuODMgMTQuNzJDMTEuNDUgMTUgMTIuMTYgMTQuOTcgMTIuNzMgMTQuNjVDMTMuNDIgMTQuMjYgMTMuODYgMTMuNTUgMTQgMTIuNjNDMTQuMjIgMTAuOSAxMi43IDguMTcgMTIuNTcgNy44NEMxMi40IDcuNDYgMTIuMTIgNi44MiAxMi41IDYuNzNNNi41IDE0Ljc4QzYuNDMgMTUuMTEgNi4xIDE1LjI1IDUuODggMTUuMjJDNS4zOCAxNS4xNiA0LjY2IDE0LjUgNC43MSAxMi41M0M2LjE3IDEzLjEzIDYuNTMgMTQuMzUgNi41IDE0Ljc4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUN1cnNvckRlZmF1bHRPdXRsaW5lID0gXCJNMTAuMDcsMTQuMjdDMTAuNTcsMTQuMDMgMTEuMTYsMTQuMjUgMTEuNCwxNC43NUwxMy43LDE5Ljc0TDE1LjUsMTguODlMMTMuMTksMTMuOTFDMTIuOTUsMTMuNDEgMTMuMTcsMTIuODEgMTMuNjcsMTIuNThMMTMuOTUsMTIuNUwxNi4yNSwxMi4wNUw4LDUuMTJWMTUuOUw5LjgyLDE0LjQzTDEwLjA3LDE0LjI3TTEzLjY0LDIxLjk3QzEzLjE0LDIyLjIxIDEyLjU0LDIyIDEyLjMxLDIxLjVMMTAuMTMsMTYuNzZMNy42MiwxOC43OEM3LjQ1LDE4LjkyIDcuMjQsMTkgNywxOUExLDEgMCAwLDEgNiwxOFYzQTEsMSAwIDAsMSA3LDJDNy4yNCwyIDcuNDcsMi4wOSA3LjY0LDIuMjNMNy42NSwyLjIyTDE5LjE0LDExLjg2QzE5LjU3LDEyLjIyIDE5LjYyLDEyLjg1IDE5LjI3LDEzLjI3QzE5LjEyLDEzLjQ1IDE4LjkxLDEzLjU3IDE4LjcsMTMuNjFMMTUuNTQsMTQuMjNMMTcuNzQsMTguOTZDMTgsMTkuNDYgMTcuNzYsMjAuMDUgMTcuMjYsMjAuMjhMMTMuNjQsMjEuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yTW92ZSA9IFwiTTEzLDZWMTFIMThWNy43NUwyMi4yNSwxMkwxOCwxNi4yNVYxM0gxM1YxOEgxNi4yNUwxMiwyMi4yNUw3Ljc1LDE4SDExVjEzSDZWMTYuMjVMMS43NSwxMkw2LDcuNzVWMTFIMTFWNkg3Ljc1TDEyLDEuNzVMMTYuMjUsNkgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlDdXJzb3JQb2ludGVyID0gXCJNMTMuNzUsMTAuMTlMMTQuMzgsMTAuMzJMMTguNTUsMTIuNEMxOS4yNSwxMi42MyAxOS43MSwxMy4zMiAxOS42NSwxNC4wNlYxNC4xOUwxOS42NSwxNC4zMkwxOC43NSwyMC40NEMxOC42OSwyMC44NyAxOC41LDIxLjI3IDE4LjE1LDIxLjU1QzE3Ljg0LDIxLjg1IDE3LjQzLDIyIDE3LDIySDEwLjEyQzkuNjMsMjIgOS4xOCwyMS44MiA4Ljg1LDIxLjQ3TDIuODYsMTUuNUwzLjc2LDE0LjVDNCwxNC4yNSA0LjM4LDE0LjExIDQuNzQsMTQuMTNINS4wM0w5LDE1VjQuNUEyLDIgMCAwLDEgMTEsMi41QTIsMiAwIDAsMSAxMyw0LjVWMTAuMTlIMTMuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpQ3Vyc29yVGV4dCA9IFwiTTEzLDE5QTEsMSAwIDAsMCAxNCwyMEgxNlYyMkgxMy41QzEyLjk1LDIyIDEyLDIxLjU1IDEyLDIxQzEyLDIxLjU1IDExLjA1LDIyIDEwLjUsMjJIOFYyMEgxMEExLDEgMCAwLDAgMTEsMTlWNUExLDEgMCAwLDAgMTAsNEg4VjJIMTAuNUMxMS4wNSwyIDEyLDIuNDUgMTIsM0MxMiwyLjQ1IDEyLjk1LDIgMTMuNSwySDE2VjRIMTRBMSwxIDAgMCwwIDEzLDVWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGFuY2VCYWxscm9vbSA9IFwiTTE0IDMuNUMxNCA0LjMzIDEzLjMzIDUgMTIuNSA1UzExIDQuMzMgMTEgMy41IDExLjY3IDIgMTIuNSAyIDE0IDIuNjcgMTQgMy41TTguNSA1QzcuNjcgNSA3IDUuNjcgNyA2LjVTNy42NyA4IDguNSA4IDEwIDcuMzMgMTAgNi41IDkuMzMgNSA4LjUgNU0xNCAxMkwxMy4yMiA5Ljc1SDE2LjE4TDE4LjM0IDguNjdDMTguNzEgOC41IDE4Ljg2IDguMDQgMTguNjcgNy42N0MxOC41IDcuMyAxOC4wNCA3LjE0IDE3LjY3IDcuMzNMMTYuODUgNy43NEwxNi4zNiA2LjlDMTYuMDcgNi4yNSAxNS4zNiA1Ljg4IDE0LjY2IDYuMDRMMTIuMTkgNi41N0MxMS41IDYuNzIgMTEgNy4zNSAxMSA4LjA3VjguNzdMOC41NyAxMC4zOUg4LjU4QzguNSAxMC40NiA4LjM5IDEwLjU1IDguMzMgMTAuNjdMNy40NCAxMi40NEw1LjY2IDEzLjMzQzUuMjkgMTMuNSA1LjE0IDEzLjk3IDUuMzMgMTQuMzRDNS40NiAxNC42IDUuNzMgMTQuNzUgNiAxNC43NUM2LjExIDE0Ljc1IDYuMjMgMTQuNzMgNi4zNCAxNC42N0w4LjU2IDEzLjU2TDkuNiAxMS41TDExIDEzQzEwIDE2IDMgMjAgMyAyMFM3IDIyIDEyIDIyIDIxIDIwIDIxIDIwIDE2IDE2IDE0IDEyTTE2Ljg1IDExLjA5TDE2LjUzIDExLjI1SDE1LjMzTDE1LjM5IDExLjQxQzE1LjkxIDEyLjQ0IDE2LjY3IDEzLjUgMTcuNSAxNC40NEwxNi45NyAxMS4wM0wxNi44NSAxMS4wOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYW5jZVBvbGUgPSBcIk0xMiAxVjJMMTEuMjMgMS4zNkw3Ljc2IDUuNUwxMSA3LjVWNS4xNkwxMC43OCA1TDEyIDMuNTZWMjNIMTRWMTMuMjRMMTUuOTMgMTEuMzFDMTguNSAxMS43MSAyMS4xMyAxMC4zNiAyMi42NiA4LjgzTDIxLjI0IDcuNDFDMjAuMSA4LjU2IDE3LjcgOS42MSAxNiA5LjI2TDE0IDcuMjRWMU0xNyA0QTIgMiAwIDAgMCAxNSA2QTIgMiAwIDAgMCAxNyA4QTIgMiAwIDAgMCAxOSA2QTIgMiAwIDAgMCAxNyA0TTExIDcuNzZMNy4xIDExLjY2QzUuMjUgMTMuNSA0LjMxIDE0Ljg1IDMuMDYgMTguMTZMNC45NCAxOC44NkM1Ljk0IDE2LjIgNi42NiAxNS4xNCA3Ljg3IDEzLjg0TDkuMjIgMTUuMTlMNC4yNyAyMC4xNEw1LjY5IDIxLjU2TDExIDE2LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFNYXRyaXggPSBcIk0yIDJWMjJIMjJWMjBIMjBWMThIMjJWMTZIMjBWMTRIMjJWMTJIMThWMTBIMTZWMTJIMTRWMTBIMTJWOEg4VjEySDEyVjE2SDEwVjE4SDEyVjIwSDEwVjE4SDhWMTZINlYxNEg0VjEySDZWNkg0VjJIMk02IDZIOFYySDZWNk04IDE2SDEwVjE0SDhWMTZNMTggMTBIMjJWOEgxOFYxME0xOCA4VjRIMTZWNkgxNFY4SDE4TTE2IDRWMkgxNFY0SDE2TTE4IDRIMjBWMkgxOFY0TTIwIDRWNkgyMlY0SDIwTTEwIDJWNkgxMlYySDEwTTE0IDE0SDE2VjE2SDE4VjIwSDE0VjE0TTQgMThINlYyMEg0VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFNYXRyaXhFZGl0ID0gXCJNMjAgMTIuMUMxOS45IDEyLjEgMTkuNyAxMi4yIDE5LjYgMTIuM0wxOC42IDEzLjNMMjAuNyAxNS40TDIxLjcgMTQuNEMyMS45IDE0LjIgMjEuOSAxMy44IDIxLjcgMTMuNkwyMC40IDEyLjNDMjAuMyAxMi4yIDIwLjIgMTIuMSAyMCAxMi4xTTE4LjEgMTMuOUwxMiAxOS45VjIySDE0LjFMMjAuMiAxNS45TDE4LjEgMTMuOU04IDZINlYySDhWNk0xMCAxNkg4VjE0SDEwVjE2TTEyIDZIMTBWMkgxMlY2TTE2IDJWNEgxNFYySDE2TTIwIDRIMThWMkgyMFY0TTEwIDIwVjE4SDhWMTZINlYxNEg0VjEySDZWNkg0VjJIMlYyMkgxMFYyME02IDIwSDRWMThINlYyME0yMiAxMEgxOFY4SDIyVjEwTTIwIDZWNEgyMlY2SDIwTTE4IDRWOEgxNFY2SDE2VjRIMThNMTAgMThWMTZIMTJWMTJIOFY4SDEyVjEwSDE0VjEySDE2VjEwSDE4VjExLjFMMTUuMSAxNEgxNFYxNS4xTDExLjEgMThIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YU1hdHJpeE1pbnVzID0gXCJNMTYgMlY0SDE0VjJIMTZNMTIgMkgxMFY2SDEyVjJNMTAgMTRIOFYxNkgxMFYxNE0xNiA0VjZIMTRWOEgxOFY0SDE2TTggMkg2VjZIOFYyTTIwIDJIMThWNEgyMFYyTTEzLjggMjJIMlYySDRWNkg2VjEySDRWMTRINlYxNkg4VjE4SDEwVjIwSDEyVjE4SDEwVjE2SDEyVjEySDhWOEgxMlYxMEgxNFYxMkgxNlYxMEgxOFYxMkgyMlYxMy44QzIxLjEgMTMuMyAyMC4xIDEzIDE5IDEzQzE3LjggMTMgMTYuNiAxMy40IDE1LjcgMTRIMTRWMTUuN0MxMy40IDE2LjYgMTMgMTcuOCAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMSAxMy44IDIyTTYgMThINFYyMEg2VjE4TTIyIDhIMThWMTBIMjJWOE0yMiA2VjRIMjBWNkgyMk0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhTWF0cml4UGx1cyA9IFwiTTE2IDJWNEgxNFYySDE2TTEyIDJIMTBWNkgxMlYyTTEwIDE0SDhWMTZIMTBWMTRNMTYgNFY2SDE0VjhIMThWNEgxNk04IDJINlY2SDhWMk0yMCAySDE4VjRIMjBWMk0xMy44IDIySDJWMkg0VjZINlYxMkg0VjE0SDZWMTZIOFYxOEgxMFYyMEgxMlYxOEgxMFYxNkgxMlYxMkg4VjhIMTJWMTBIMTRWMTJIMTZWMTBIMThWMTJIMjJWMTMuOEMyMS4xIDEzLjMgMjAuMSAxMyAxOSAxM0MxNy44IDEzIDE2LjYgMTMuNCAxNS43IDE0SDE0VjE1LjdDMTMuNCAxNi42IDEzIDE3LjggMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEgMTMuOCAyMk02IDE4SDRWMjBINlYxOE0yMiA4SDE4VjEwSDIyVjhNMjIgNlY0SDIwVjZIMjJNMTggMTVWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBWMTVIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YU1hdHJpeFJlbW92ZSA9IFwiTTE2IDJWNEgxNFYySDE2TTEyIDJIMTBWNkgxMlYyTTEwIDE0SDhWMTZIMTBWMTRNMTYgNFY2SDE0VjhIMThWNEgxNk04IDJINlY2SDhWMk0yMCAySDE4VjRIMjBWMk0xMy44IDIySDJWMkg0VjZINlYxMkg0VjE0SDZWMTZIOFYxOEgxMFYyMEgxMlYxOEgxMFYxNkgxMlYxMkg4VjhIMTJWMTBIMTRWMTJIMTZWMTBIMThWMTJIMjJWMTMuOEMyMS4xIDEzLjMgMjAuMSAxMyAxOSAxM0MxNy44IDEzIDE2LjYgMTMuNCAxNS43IDE0SDE0VjE1LjdDMTMuNCAxNi42IDEzIDE3LjggMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEgMTMuOCAyMk02IDE4SDRWMjBINlYxOE0yMiA4SDE4VjEwSDIyVjhNMjIgNlY0SDIwVjZIMjJNMjEuMSAxNS41TDE5IDE3LjZMMTYuOSAxNS41TDE1LjUgMTYuOUwxNy42IDE5TDE1LjUgMjEuMUwxNi45IDIyLjVMMTkgMjAuNEwyMS4xIDIyLjVMMjIuNSAyMS4xTDIwLjQgMTlMMjIuNSAxNi45TDIxLjEgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhTWF0cml4U2NhbiA9IFwiTTIgMkg2VjBIMkMuOSAwIDAgLjkgMCAyVjZIMlYyTTIyIDBIMThWMkgyMlY2SDI0VjJDMjQgLjkgMjMuMSAwIDIyIDBNMiAxOEgwVjIyQzAgMjMuMSAuOSAyNCAyIDI0SDZWMjJIMlYxOE0yMiAyMkgxOFYyNEgyMkMyMy4xIDI0IDI0IDIzLjEgMjQgMjJWMThIMjJWMjJNOCA2VjRIMTBWNkg4TTEwIDE0VjEySDEyVjE0SDEwTTE2IDRIMThWNkgxNlY0TTE4IDZIMjBWOEgxOFY2TTE4IDE0SDIwVjE2SDE4VjE0TTIwIDEySDE2VjE4SDIwVjIwSDRWNEg2VjZIOFYxMEg2VjEySDhWMTRIMTBWMTZIMTJWMThIMTRWMTZIMTJWMTRIMTRWMTBIMTBWNkgxMlY0SDE0VjhIMTZWMTBIMjBWMTJNOCAxOFYxNkg2VjE4SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2UgPSBcIk0xMiwzQzcuNTgsMyA0LDQuNzkgNCw3QzQsOS4yMSA3LjU4LDExIDEyLDExQzE2LjQyLDExIDIwLDkuMjEgMjAsN0MyMCw0Ljc5IDE2LjQyLDMgMTIsM000LDlWMTJDNCwxNC4yMSA3LjU4LDE2IDEyLDE2QzE2LjQyLDE2IDIwLDE0LjIxIDIwLDEyVjlDMjAsMTEuMjEgMTYuNDIsMTMgMTIsMTNDNy41OCwxMyA0LDExLjIxIDQsOU00LDE0VjE3QzQsMTkuMjEgNy41OCwyMSAxMiwyMUMxNi40MiwyMSAyMCwxOS4yMSAyMCwxN1YxNEMyMCwxNi4yMSAxNi40MiwxOCAxMiwxOEM3LjU4LDE4IDQsMTYuMjEgNCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFsZXJ0ID0gXCJNMTggN0MxOCA5LjIxIDE0LjQyIDExIDEwIDExUzIgOS4yMSAyIDcgNS41OCAzIDEwIDMgMTggNC43OSAxOCA3TTEwIDE4QzUuNTggMTggMiAxNi4yMSAyIDE0VjE3QzIgMTkuMjEgNS41OCAyMSAxMCAyMVMxOCAxOS4yMSAxOCAxN1YxNEMxOCAxNi4yMSAxNC40MiAxOCAxMCAxOE0xMCAxM0M1LjU4IDEzIDIgMTEuMjEgMiA5VjEyQzIgMTQuMjEgNS41OCAxNiAxMCAxNlMxOCAxNC4yMSAxOCAxMlY5QzE4IDExLjIxIDE0LjQyIDEzIDEwIDEzTTIwIDE3SDIyVjE1SDIwVjE3TTIwIDdWMTNIMjJWN0gyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFsZXJ0T3V0bGluZSA9IFwiTTEwIDNDNS41OCAzIDIgNC43OSAyIDdWMTdDMiAxOS4yMSA1LjU5IDIxIDEwIDIxUzE4IDE5LjIxIDE4IDE3VjdDMTggNC43OSAxNC40MiAzIDEwIDNNMTYgMTdDMTYgMTcuNSAxMy44NyAxOSAxMCAxOVM0IDE3LjUgNCAxN1YxNC43N0M1LjYxIDE1LjU1IDcuNzIgMTYgMTAgMTZTMTQuMzkgMTUuNTUgMTYgMTQuNzdWMTdNMTYgMTIuNDVDMTQuNyAxMy40IDEyLjQyIDE0IDEwIDE0UzUuMyAxMy40IDQgMTIuNDVWOS42NEM1LjQ3IDEwLjQ3IDcuNjEgMTEgMTAgMTFTMTQuNTMgMTAuNDcgMTYgOS42NFYxMi40NU0xMCA5QzYuMTMgOSA0IDcuNSA0IDdTNi4xMyA1IDEwIDUgMTYgNi41IDE2IDcgMTMuODcgOSAxMCA5TTIyIDdWMTNIMjBWN0gyMk0yMCAxNUgyMlYxN0gyMFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFycm93RG93biA9IFwiTTE5IDEzQzE2LjgzIDEzIDE0LjkzIDE0LjE2IDEzLjg4IDE1Ljg5QzEzLjI4IDE1Ljk2IDEyLjY1IDE2IDEyIDE2QzcuNTggMTYgNCAxNC4yMSA0IDEyVjlDNCAxMS4yMSA3LjU4IDEzIDEyIDEzUzIwIDExLjIxIDIwIDlWMTJDMjAgMTIuMzYgMTkuOSAxMi43MSAxOS43MiAxMy4wNUMxOS41IDEzIDE5LjI0IDEzIDE5IDEzTTEyIDExQzE2LjQyIDExIDIwIDkuMjEgMjAgN1MxNi40MiAzIDEyIDMgNCA0Ljc5IDQgNyA3LjU4IDExIDEyIDExTTEzLjEgMTcuOTZDMTIuNzQgMTggMTIuMzcgMTggMTIgMThDNy41OCAxOCA0IDE2LjIxIDQgMTRWMTdDNCAxOS4yMSA3LjU4IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlDMTMgMTguNjQgMTMuMDQgMTguMyAxMy4xIDE3Ljk2TTIwIDIwVjE2SDE4VjIwSDE2TDE5IDIzTDIyIDIwSDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dEb3duT3V0bGluZSA9IFwiTTIwIDEzLjA5VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuNDYgMjEgMTIuOSAyMSAxMy4zMyAyMC45NEMxMy4xMiAyMC4zMyAxMyAxOS42OCAxMyAxOUwxMyAxOC45NUMxMi42OCAxOSAxMi4zNSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi42NSAxNiAxMy4yNyAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOU0xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRTNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjQ1TTEyIDlDOC4xMyA5IDYgNy41IDYgN1M4LjEzIDUgMTIgNSAxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlNMjIgMjBMMTkgMjNMMTYgMjBIMThWMTZIMjBWMjBIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VBcnJvd0xlZnQgPSBcIk00IDdDNCA0Ljc5IDcuNTggMyAxMiAzUzIwIDQuNzkgMjAgNyAxNi40MiAxMSAxMiAxMSA0IDkuMjEgNCA3TTE5LjcyIDEzLjA1QzE5LjkgMTIuNzEgMjAgMTIuMzYgMjAgMTJWOUMyMCAxMS4yMSAxNi40MiAxMyAxMiAxM1M0IDExLjIxIDQgOVYxMkM0IDE0LjIxIDcuNTggMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjggMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMjQgMTMgMTkuNSAxMyAxOS43MiAxMy4wNU0xMy4xIDE3Ljk2QzEyLjc0IDE4IDEyLjM3IDE4IDEyIDE4QzcuNTggMTggNCAxNi4yMSA0IDE0VjE3QzQgMTkuMjEgNy41OCAyMSAxMiAyMUMxMi40NiAyMSAxMi45IDIxIDEzLjMzIDIwLjk0QzEzLjEyIDIwLjMzIDEzIDE5LjY4IDEzIDE5QzEzIDE4LjY0IDEzLjA0IDE4LjMgMTMuMSAxNy45Nk0xOCAxOFYxNkwxNSAxOUwxOCAyMlYyMEgyMlYxOEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUFycm93TGVmdE91dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIyIDE4VjIwSDE4VjIyTDE1IDE5TDE4IDE2VjE4SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dSaWdodCA9IFwiTTQgN0M0IDQuNzkgNy41OCAzIDEyIDNTMjAgNC43OSAyMCA3IDE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDdNMTkuNzIgMTMuMDVDMTkuOSAxMi43MSAyMCAxMi4zNiAyMCAxMlY5QzIwIDExLjIxIDE2LjQyIDEzIDEyIDEzUzQgMTEuMjEgNCA5VjEyQzQgMTQuMjEgNy41OCAxNiAxMiAxNkMxMi42NSAxNiAxMy4yOCAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4yNCAxMyAxOS41IDEzIDE5LjcyIDEzLjA1TTEzLjEgMTcuOTZDMTIuNzQgMTggMTIuMzcgMTggMTIgMThDNy41OCAxOCA0IDE2LjIxIDQgMTRWMTdDNCAxOS4yMSA3LjU4IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlDMTMgMTguNjQgMTMuMDQgMTguMyAxMy4xIDE3Ljk2TTIzIDE5TDIwIDE2VjE4SDE2VjIwSDIwVjIyTDIzIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dSaWdodE91dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIwIDIyVjIwSDE2VjE4SDIwVjE2TDIzIDE5TDIwIDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dVcCA9IFwiTTE5IDEzQzE2LjgzIDEzIDE0LjkzIDE0LjE2IDEzLjg4IDE1Ljg5QzEzLjI4IDE1Ljk2IDEyLjY1IDE2IDEyIDE2QzcuNTggMTYgNCAxNC4yMSA0IDEyVjlDNCAxMS4yMSA3LjU4IDEzIDEyIDEzUzIwIDExLjIxIDIwIDlWMTJDMjAgMTIuMzYgMTkuOSAxMi43MSAxOS43MiAxMy4wNUMxOS41IDEzIDE5LjI0IDEzIDE5IDEzTTEyIDExQzE2LjQyIDExIDIwIDkuMjEgMjAgN1MxNi40MiAzIDEyIDMgNCA0Ljc5IDQgNyA3LjU4IDExIDEyIDExTTEzLjEgMTcuOTZDMTIuNzQgMTggMTIuMzcgMTggMTIgMThDNy41OCAxOCA0IDE2LjIxIDQgMTRWMTdDNCAxOS4yMSA3LjU4IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlDMTMgMTguNjQgMTMuMDQgMTguMyAxMy4xIDE3Ljk2TTE5IDE1TDE2IDE4SDE4VjIySDIwVjE4SDIyTDE5IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQXJyb3dVcE91dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIyIDE4SDIwVjIySDE4VjE4SDE2TDE5IDE1TDIyIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ2hlY2sgPSBcIk0xMiAzQzE2LjQyIDMgMjAgNC43OSAyMCA3UzE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDcgNy41OCAzIDEyIDNNNCA5QzQgMTEuMjEgNy41OCAxMyAxMiAxM1MyMCAxMS4yMSAyMCA5VjEyLjA4TDE5IDEyQzE2LjQxIDEyIDE0LjIgMTMuNjQgMTMuMzYgMTUuOTRMMTIgMTZDNy41OCAxNiA0IDE0LjIxIDQgMTJWOU00IDE0QzQgMTYuMjEgNy41OCAxOCAxMiAxOEgxM0MxMyAxOS4wNSAxMy4yNyAyMC4wNCAxMy43NSAyMC45TDEyIDIxQzcuNTggMjEgNCAxOS4yMSA0IDE3VjE0TTE4IDIxLjA4TDE1LjI1IDE4LjA4TDE2LjQxIDE2LjkyTDE4IDE4LjVMMjEuNTkgMTQuOTJMMjIuNzUgMTYuMzNMMTggMjEuMDhcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUNoZWNrT3V0bGluZSA9IFwiTTIwIDEzLjA5VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuNDYgMjEgMTIuOSAyMSAxMy4zMyAyMC45NEMxMy4xMiAyMC4zMyAxMyAxOS42OCAxMyAxOUwxMyAxOC45NUMxMi42OCAxOSAxMi4zNSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi42NSAxNiAxMy4yNyAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOU0xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRTNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjQ1TTEyIDlDOC4xMyA5IDYgNy41IDYgN1M4LjEzIDUgMTIgNSAxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlNMjIuNSAxNy4yNUwxNy43NSAyMkwxNSAxOUwxNi4xNiAxNy44NEwxNy43NSAxOS40M0wyMS4zNCAxNS44NEwyMi41IDE3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ2xvY2sgPSBcIk0xNi41IDE2LjI1TDE5LjM2IDE3Ljk0TDE4LjYxIDE5LjE2TDE1IDE3VjEySDE2LjVWMTYuMjVNMjMgMTZDMjMgMTkuODcgMTkuODcgMjMgMTYgMjNDMTMuNjEgMjMgMTEuNSAyMS44IDEwLjI1IDIwQzYuMTggMTkuNzkgMyAxOC4wOCAzIDE2VjEzQzMgMTQuODggNS41OCAxNi40NCA5LjA2IDE2Ljg4QzkuMDMgMTYuNTkgOSAxNi4zIDkgMTZDOSAxNS42MiA5LjA0IDE1LjI1IDkuMSAxNC44OEM1LjYgMTQuNDUgMyAxMi44OCAzIDExVjhDMyAxMC4wOSA2LjIgMTEuOCAxMC4yNyAxMkMxMC44NyAxMS4xNCAxMS42NCAxMC40NCAxMi41MyA5LjkzQzEyLjA0IDkuOTcgMTEuNSAxMCAxMSAxMEM2LjU4IDEwIDMgOC4yMSAzIDZTNi41OCAyIDExIDIgMTkgMy43OSAxOSA2QzE5IDcuMiAxNy45MyA4LjI4IDE2LjI1IDlDMTcgOS4wNCAxNy43NSA5LjE5IDE4LjQ0IDkuNDVDMTguNzkgOSAxOSA4LjUgMTkgOFY5LjY4QzIxLjM2IDEwLjgxIDIzIDEzLjIxIDIzIDE2TTIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExUzExIDEzLjI0IDExIDE2IDEzLjI0IDIxIDE2IDIxIDIxIDE4Ljc2IDIxIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ2xvY2tPdXRsaW5lID0gXCJNMTYuNSAxNi4yNUwxOS4zNiAxNy45NEwxOC42MSAxOS4xNkwxNSAxN1YxMkgxNi41VjE2LjI1TTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzEzLjYxIDIzIDExLjUgMjEuOCAxMC4yNSAyMEM2LjE5IDE5Ljc5IDMgMTguMDggMyAxNlY2QzMgMy43OSA2LjU4IDIgMTEgMlMxOSAzLjc5IDE5IDZWOS42OEMyMS4zNiAxMC44MSAyMyAxMy4yMSAyMyAxNk0xNyA5LjA4VjguNjRDMTYuNzcgOC43NyAxNi41IDguOSAxNi4yNCA5QzE2LjUgOSAxNi43NSA5LjA0IDE3IDkuMDhNNSA2QzUgNi41IDcuMTMgOCAxMSA4UzE3IDYuNSAxNyA2IDE0Ljg3IDQgMTEgNCA1IDUuNSA1IDZNNSAxMS40NUM2LjA3IDEyLjIzIDcuOCAxMi43NiA5LjcyIDEyLjkzQzEwLjMzIDExLjY3IDExLjMyIDEwLjYyIDEyLjU0IDkuOTJDMTIuMDQgOS45NyAxMS41MyAxMCAxMSAxMEM4LjYxIDEwIDYuNDcgOS40NyA1IDguNjRWMTEuNDVNOS4yNiAxNy44N0M5LjEgMTcuMjcgOSAxNi42NSA5IDE2QzkgMTUuNjEgOS4wNCAxNS4yMyA5LjEgMTQuODZDNy41NiAxNC42OSA2LjE1IDE0LjMzIDUgMTMuNzdWMTZDNSAxNi40MiA2LjUgMTcuNSA5LjI2IDE3Ljg3TTIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExUzExIDEzLjI0IDExIDE2IDEzLjI0IDIxIDE2IDIxIDIxIDE4Ljc2IDIxIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ29nID0gXCJNNCA3QzQgNC43OSA3LjU4IDMgMTIgM1MyMCA0Ljc5IDIwIDcgMTYuNDIgMTEgMTIgMTEgNCA5LjIxIDQgN00xMi4wOCAxOEwxMiAxOEM3LjU4IDE4IDQgMTYuMjEgNCAxNFYxN0M0IDE5LjIxIDcuNTggMjEgMTIgMjFDMTIuMSAyMSAxMi4yIDIxIDEyLjI5IDIxQzEyLjExIDIwLjM2IDEyIDE5LjY5IDEyIDE5QzEyIDE4LjY2IDEyLjAzIDE4LjMzIDEyLjA4IDE4TTIwIDEyLjA4QzIwIDEyLjA1IDIwIDEyLjAzIDIwIDEyVjlDMjAgMTEuMjEgMTYuNDIgMTMgMTIgMTNTNCAxMS4yMSA0IDlWMTJDNCAxNC4yMSA3LjU4IDE2IDEyIDE2QzEyLjIzIDE2IDEyLjQ2IDE2IDEyLjY5IDE2QzEzLjgyIDEzLjYzIDE2LjIyIDEyIDE5IDEyQzE5LjM0IDEyIDE5LjY3IDEyLjAzIDIwIDEyLjA4TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlQ29nT3V0bGluZSA9IFwiTTEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjA4QzE4LjMzIDEyLjAzIDE4LjY2IDEyIDE5IDEyQzE5LjM0IDEyIDE5LjY3IDEyLjAzIDIwIDEyLjA4VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuMSAyMSAxMi4yIDIxIDEyLjI5IDIxQzEyLjExIDIwLjM2IDEyIDE5LjY5IDEyIDE5QzguMTMgMTkgNiAxNy41IDYgMTdWMTQuNzdDNy42MSAxNS41NSA5LjcyIDE2IDEyIDE2QzEyLjI0IDE2IDEyLjQ3IDE2IDEyLjcgMTUuOTdDMTMuMSAxNS4xNCAxMy42NSAxNC40MSAxNC4zMiAxMy44MUMxMy41OCAxMy45MyAxMi44IDE0IDEyIDE0TTEyIDVDMTUuODcgNSAxOCA2LjUgMTggN1MxNS44NyA5IDEyIDkgNiA3LjUgNiA3IDguMTMgNSAxMiA1TTIyLjcgMTkuNlYxOC42TDIzLjggMTcuOEMyMy45IDE3LjcgMjQgMTcuNiAyMy45IDE3LjVMMjIuOSAxNS44QzIyLjkgMTUuNyAyMi43IDE1LjcgMjIuNiAxNS43TDIxLjQgMTYuMkMyMS4xIDE2IDIwLjggMTUuOCAyMC41IDE1LjdMMjAuMyAxNC40QzIwLjMgMTQuMyAyMC4yIDE0LjIgMjAuMSAxNC4ySDE4LjFDMTcuOSAxNC4yIDE3LjggMTQuMyAxNy44IDE0LjRMMTcuNiAxNS43QzE3LjMgMTUuOSAxNy4xIDE2IDE2LjggMTYuMkwxNS42IDE1LjdDMTUuNSAxNS43IDE1LjQgMTUuNyAxNS4zIDE1LjhMMTQuMyAxNy41QzE0LjMgMTcuNiAxNC4zIDE3LjcgMTQuNCAxNy44TDE1LjUgMTguNlYxOS42TDE0LjQgMjAuNEMxNC4zIDIwLjUgMTQuMiAyMC42IDE0LjMgMjAuN0wxNS4zIDIyLjRDMTUuNCAyMi41IDE1LjUgMjIuNSAxNS42IDIyLjVMMTYuOCAyMkMxNyAyMi4yIDE3LjMgMjIuNCAxNy42IDIyLjVMMTcuOCAyMy44QzE3LjkgMjMuOSAxOCAyNCAxOC4xIDI0SDIwLjFDMjAuMiAyNCAyMC4zIDIzLjkgMjAuMyAyMy44TDIwLjUgMjIuNUMyMC44IDIyLjMgMjEgMjIuMiAyMS4zIDIyTDIyLjUgMjIuNEMyMi42IDIyLjQgMjIuNyAyMi40IDIyLjggMjIuM0wyMy44IDIwLjZDMjMuOSAyMC41IDIzLjkgMjAuNCAyMy44IDIwLjRMMjIuNyAxOS42TTE5IDIwLjVDMTguMiAyMC41IDE3LjUgMTkuOCAxNy41IDE5UzE4LjIgMTcuNSAxOSAxNy41IDIwLjUgMTguMiAyMC41IDE5IDE5LjggMjAuNSAxOSAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlRWRpdCA9IFwiTTQsMTRWMTdDNCwxOSA3LjA1LDIwLjcyIDExLDIxVjE4LjExTDExLjEzLDE4QzcuMTIsMTcuNzYgNCwxNi4wNiA0LDE0TTEyLDEzQzcuNTgsMTMgNCwxMS4yMSA0LDlWMTJDNCwxNC4yMSA3LjU4LDE2IDEyLDE2QzEyLjM5LDE2IDEyLjc3LDE2IDEzLjE2LDE2TDE3LDEyLjEyQzE1LjQsMTIuNzIgMTMuNzEsMTMgMTIsMTNNMTIsM0M3LjU4LDMgNCw0Ljc5IDQsN0M0LDkuMjEgNy41OCwxMSAxMiwxMUMxNi40MiwxMSAyMCw5LjIxIDIwLDdDMjAsNC43OSAxNi40MiwzIDEyLDNNMjEsMTEuMTNDMjAuODUsMTEuMTMgMjAuNzEsMTEuMTkgMjAuNjEsMTEuM0wxOS42MSwxMi4zTDIxLjY2LDE0LjNMMjIuNjYsMTMuM0MyMi44NywxMy4xIDIyLjg4LDEyLjc2IDIyLjY2LDEyLjUzTDIxLjQyLDExLjNDMjEuMzIsMTEuMTkgMjEuMTgsMTEuMTMgMjEuMDQsMTEuMTNNMTkuMDQsMTIuODhMMTMsMTguOTRWMjFIMTUuMDZMMjEuMTIsMTQuOTNMMTkuMDQsMTIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VFZGl0T3V0bGluZSA9IFwiTTEyIDE2QzEyLjggMTYgMTMuNTcgMTUuOTMgMTQuMzEgMTUuODJMMTcuMjIgMTIuOTFDMTUuODkgMTMuNTkgMTQgMTQgMTIgMTRDOS41OCAxNCA3LjMgMTMuNCA2IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExUzE2LjUzIDEwLjQ3IDE4IDkuNjRWMTIuMTNMMTkuMzkgMTAuNzRDMTkuNTcgMTAuNTYgMTkuNzggMTAuNDIgMjAgMTAuM1Y3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4wNCA3LjA2IDIwLjcyIDExIDIwLjk3VjE5LjEzTDExLjE3IDE4Ljk2QzcuODQgMTguNzYgNiAxNy40NiA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNk0xMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5IDYgNy41IDYgNyA4LjEzIDUgMTIgNU0xOS4xMyAxMy44M0wyMS4xNyAxNS44N0wxNS4wNCAyMkgxM1YxOS45NkwxOS4xMyAxMy44M00yMi44NSAxNC4xOUwyMS44NyAxNS4xN0wxOS44MyAxMy4xM0wyMC44MSAxMi4xNUMyMSAxMS45NSAyMS4zMyAxMS45NSAyMS41MyAxMi4xNUwyMi44NSAxMy40N0MyMy4wNSAxMy42NyAyMy4wNSAxNCAyMi44NSAxNC4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZUV4cG9ydCA9IFwiTTEyLDNDNy41OCwzIDQsNC43OSA0LDdDNCw5LjIxIDcuNTgsMTEgMTIsMTFDMTIuNSwxMSAxMywxMC45NyAxMy41LDEwLjkyVjkuNUgxNi4zOUwxNS4zOSw4LjVMMTguOSw1QzE3LjUsMy44IDE0Ljk0LDMgMTIsM00xOC45Miw3LjA4TDE3LjUsOC41TDIwLDExSDE1VjEzSDIwTDE3LjUsMTUuNUwxOC45MiwxNi45MkwyMy44NCwxMk00LDlWMTJDNCwxNC4yMSA3LjU4LDE2IDEyLDE2QzEzLjE3LDE2IDE0LjI2LDE1Ljg1IDE1LjI1LDE1LjYzTDE2LjM4LDE0LjVIMTMuNVYxMi45MkMxMywxMi45NyAxMi41LDEzIDEyLDEzQzcuNTgsMTMgNCwxMS4yMSA0LDlNNCwxNFYxN0M0LDE5LjIxIDcuNTgsMjEgMTIsMjFDMTQuOTQsMjEgMTcuNSwyMC4yIDE4LjksMTlMMTcsMTcuMUMxNS42MSwxNy42NiAxMy45LDE4IDEyLDE4QzcuNTgsMTggNCwxNi4yMSA0LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlRXhwb3J0T3V0bGluZSA9IFwiTTE3Ljg2IDE4TDE4LjkgMTlDMTcuNSAyMC4yIDE0Ljk0IDIxIDEyIDIxQzcuNTkgMjEgNCAxOS4yMSA0IDE3VjdDNCA0Ljc5IDcuNTggMyAxMiAzQzE0Ljk1IDMgMTcuNSAzLjggMTguOSA1TDE3Ljg2IDZMMTcuNSA2LjRDMTYuNjUgNS43NyAxNC43OCA1IDEyIDVDOC4xMyA1IDYgNi41IDYgN1M4LjEzIDkgMTIgOUMxMy4zNyA5IDE0LjUgOC44MSAxNS40MiA4LjU0TDE2LjM4IDkuNUgxMy41VjEwLjkyQzEzIDEwLjk3IDEyLjUgMTEgMTIgMTFDOS42MSAxMSA3LjQ3IDEwLjQ3IDYgOS42NFYxMi40NUM3LjMgMTMuNCA5LjU4IDE0IDEyIDE0QzEyLjUgMTQgMTMgMTMuOTcgMTMuNSAxMy45MlYxNC41SDE2LjM4TDE1LjM4IDE1LjVMMTUuNSAxNS42MUMxNC40MSAxNS44NiAxMy4yNCAxNiAxMiAxNkM5LjcyIDE2IDcuNjEgMTUuNTUgNiAxNC43N1YxN0M2IDE3LjUgOC4xMyAxOSAxMiAxOUMxNC43OCAxOSAxNi42NSAxOC4yMyAxNy41IDE3LjYxTDE3Ljg2IDE4TTE4LjkyIDcuMDhMMTcuNSA4LjVMMjAgMTFIMTVWMTNIMjBMMTcuNSAxNS41TDE4LjkyIDE2LjkyTDIzLjg0IDEyTDE4LjkyIDcuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VJbXBvcnQgPSBcIk0xMiwzQzguNTksMyA1LjY5LDQuMDcgNC41NCw1LjU3TDkuNzksMTAuODJDMTAuNSwxMC45MyAxMS4yMiwxMSAxMiwxMUMxNi40MiwxMSAyMCw5LjIxIDIwLDdDMjAsNC43OSAxNi40MiwzIDEyLDNNMy45Miw3LjA4TDIuNSw4LjVMNSwxMUgwVjEzSDVMMi41LDE1LjVMMy45MiwxNi45Mkw4Ljg0LDEyTTIwLDlDMjAsMTEuMjEgMTYuNDIsMTMgMTIsMTNDMTEuMzQsMTMgMTAuNywxMi45NSAxMC4wOSwxMi44N0w3LjYyLDE1LjM0QzguODgsMTUuNzUgMTAuMzgsMTYgMTIsMTZDMTYuNDIsMTYgMjAsMTQuMjEgMjAsMTJNMjAsMTRDMjAsMTYuMjEgMTYuNDIsMTggMTIsMThDOS43MiwxOCA3LjY3LDE3LjUgNi4yMSwxNi43NUw0LjUzLDE4LjQzQzUuNjgsMTkuOTMgOC41OSwyMSAxMiwyMUMxNi40MiwyMSAyMCwxOS4yMSAyMCwxN1wiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlSW1wb3J0T3V0bGluZSA9IFwiTTguODQgMTJMMy45MiAxNi45MkwyLjUgMTUuNUw1IDEzSDBWMTFINUwyLjUgOC41TDMuOTIgNy4wOEw4Ljg0IDEyTTEyIDNDOC41OSAzIDUuNjggNC4wNyA0LjUzIDUuNTdMNSA2TDYuMDMgNy4wN0M2IDcuMDUgNiA3IDYgN0M2IDYuNSA4LjEzIDUgMTIgNVMxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlDOS4zOCA5IDcuNTggOC4zMSA2LjY4IDcuNzJMOS44IDEwLjg0QzEwLjUgMTAuOTQgMTEuMjQgMTEgMTIgMTFDMTQuMzkgMTEgMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRDMTEuMDQgMTQgMTAuMSAxMy45IDkuMjQgMTMuNzNMNy41OSAxNS4zN0M4LjkxIDE1Ljc3IDEwLjQxIDE2IDEyIDE2QzE0LjI4IDE2IDE2LjM5IDE1LjU1IDE4IDE0Ljc3VjE3QzE4IDE3LjUgMTUuODcgMTkgMTIgMTlTNiAxNy41IDYgMTdWMTYuOTZMNSAxOEw0LjU0IDE4LjQzQzUuNjkgMTkuOTMgOC42IDIxIDEyIDIxQzE2LjQxIDIxIDIwIDE5LjIxIDIwIDE3VjdDMjAgNC43OSAxNi40MiAzIDEyIDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VMb2NrID0gXCJNMTEsM0MxNS40MiwzIDE5LDQuNzkgMTksN0MxOSw5LjIxIDE1LjQyLDExIDExLDExQzYuNTgsMTEgMyw5LjIxIDMsN0MzLDQuNzkgNi41OCwzIDExLDNNMTksMTIuMDNDMTcuMTEsMTIuMjQgMTUuNTcsMTMuNjIgMTUuMTMsMTUuNDNDMTMuOTIsMTUuNzkgMTIuNSwxNiAxMSwxNkM2LjU4LDE2IDMsMTQuMjEgMywxMlY5QzMsMTEuMjEgNi41OCwxMyAxMSwxM0MxNS40MiwxMyAxOSwxMS4yMSAxOSw5VjEyLjAzTTE0LDE3LjcxVjIwLjcxQzEzLjA3LDIwLjkgMTIuMDYsMjEgMTEsMjFDNi41OCwyMSAzLDE5LjIxIDMsMTdWMTRDMywxNi4yMSA2LjU4LDE4IDExLDE4QzEyLjA2LDE4IDEzLjA3LDE3LjkgMTQsMTcuNzFNMTkuNSwxNEEyLjUsMi41IDAgMCwxIDIyLDE2LjVWMTdBMSwxIDAgMCwxIDIzLDE4VjIyQTEsMSAwIDAsMSAyMiwyM0gxN0ExLDEgMCAwLDEgMTYsMjJWMThBMSwxIDAgMCwxIDE3LDE3VjE2LjVBMi41LDIuNSAwIDAsMSAxOS41LDE0TTE5LjUsMTVBMS41LDEuNSAwIDAsMCAxOCwxNi41VjE3SDIxVjE2LjVBMS41LDEuNSAwIDAsMCAxOS41LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlTG9ja091dGxpbmUgPSBcIk02IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExUzE2LjUzIDEwLjQ3IDE4IDkuNjRWMTEuMDVDMTguMTcgMTEuMDMgMTguMzMgMTEgMTguNSAxMUMxOS4wMyAxMSAxOS41MyAxMS4xIDIwIDExLjI2VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuMzQgMjEgMTIuNjcgMjEgMTMgMjAuOTdWMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNDEgMTYgMTIuODEgMTUuOTcgMTMuMjEgMTUuOTRDMTMuNCAxNS40NiAxMy42OCAxNS4wMyAxNC4wNyAxNC43QzE0LjEzIDE0LjM5IDE0LjIzIDE0LjA5IDE0LjM0IDEzLjhDMTMuNiAxMy45MyAxMi44MSAxNCAxMiAxNEM5LjU4IDE0IDcuMyAxMy40IDYgMTIuNDVNMTIgNUMxNS44NyA1IDE4IDYuNSAxOCA3UzE1Ljg3IDkgMTIgOSA2IDcuNSA2IDcgOC4xMyA1IDEyIDVNMjEgMTZWMTUuNUMyMSAxNC4xMiAxOS44OCAxMyAxOC41IDEzUzE2IDE0LjEyIDE2IDE1LjVWMTZDMTUuNDUgMTYgMTUgMTYuNDUgMTUgMTdWMjFDMTUgMjEuNTUgMTUuNDUgMjIgMTYgMjJIMjFDMjEuNTUgMjIgMjIgMjEuNTUgMjIgMjFWMTdDMjIgMTYuNDUgMjEuNTUgMTYgMjEgMTZNMjAgMTZIMTdWMTUuNUMxNyAxNC42NyAxNy42NyAxNCAxOC41IDE0UzIwIDE0LjY3IDIwIDE1LjVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VNYXJrZXIgPSBcIk0xOC41IDEyQzE2LjYgMTIgMTUgMTMuNiAxNSAxNS41QzE1IDE4LjEgMTguNSAyMiAxOC41IDIyUzIyIDE4LjEgMjIgMTUuNUMyMiAxMy42IDIwLjQgMTIgMTguNSAxMk0xOC41IDE2LjhDMTcuOCAxNi44IDE3LjMgMTYuMiAxNy4zIDE1LjZDMTcuMyAxNC45IDE3LjkgMTQuNCAxOC41IDE0LjRTMTkuNyAxNSAxOS43IDE1LjZDMTkuOCAxNi4yIDE5LjIgMTYuOCAxOC41IDE2LjhNNCAxMlY5QzQgMTEuMjEgNy41OCAxMyAxMiAxM0MxMi41NyAxMyAxMy4xMyAxMi45NyAxMy42NyAxMi45MUMxMy4yNSAxMy42OSAxMyAxNC41NyAxMyAxNS41QzEzIDE1LjY1IDEzIDE1LjgxIDEzLjAzIDE1Ljk2QzEyLjY5IDE2IDEyLjM1IDE2IDEyIDE2QzcuNTggMTYgNCAxNC4yMSA0IDEyTTQgN0M0IDQuNzkgNy41OCAzIDEyIDNTMjAgNC43OSAyMCA3IDE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDdNMTUgMjAuNzFDMTQuMDcgMjAuOSAxMy4wNiAyMSAxMiAyMUM3LjU4IDIxIDQgMTkuMjEgNCAxN1YxNEM0IDE2LjIxIDcuNTggMTggMTIgMThDMTIuNSAxOCAxMy4wMyAxNy45NyAxMy41IDE3LjkzQzEzLjkgMTguOTEgMTQuNDQgMTkuODcgMTUgMjAuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VNYXJrZXJPdXRsaW5lID0gXCJNMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuMzUgMTYgMTIuNjkgMTUuOTcgMTMuMDMgMTUuOTVDMTMgMTUuOCAxMyAxNS42NSAxMyAxNS41QzEzIDE0Ljk2IDEzLjA5IDE0LjQ0IDEzLjI0IDEzLjk0QzEyLjgzIDE0IDEyLjQyIDE0IDEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEwLjAzQzE4LjE3IDEwIDE4LjMzIDEwIDE4LjUgMTBDMTkgMTAgMTkuNSAxMC4wOCAyMCAxMC4yMlY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEzLjA2IDIxIDE0LjA3IDIwLjg5IDE1IDIwLjcxQzE0LjYyIDIwLjE0IDE0LjI1IDE5LjUgMTMuOTMgMTguODVDMTMuMzQgMTguOTQgMTIuNzEgMTkgMTIgMTlNMTIgNUMxNS44NyA1IDE4IDYuNSAxOCA3UzE1Ljg3IDkgMTIgOSA2IDcuNSA2IDcgOC4xMyA1IDEyIDVNMTguNSAxMkMxNi42IDEyIDE1IDEzLjYgMTUgMTUuNUMxNSAxOC4xIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xIDIyIDE1LjVDMjIgMTMuNiAyMC40IDEyIDE4LjUgMTJNMTguNSAxNi44QzE3LjggMTYuOCAxNy4zIDE2LjIgMTcuMyAxNS42QzE3LjMgMTQuOSAxNy45IDE0LjQgMTguNSAxNC40UzE5LjcgMTUgMTkuNyAxNS42QzE5LjggMTYuMiAxOS4yIDE2LjggMTguNSAxNi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlTWludXMgPSBcIk0yMyAxN1YxOUgxNVYxN00xMiAzQzE2LjQyIDMgMjAgNC43OSAyMCA3UzE2LjQyIDExIDEyIDExIDQgOS4yMSA0IDcgNy41OCAzIDEyIDNNNCA5QzQgMTEuMjEgNy41OCAxMyAxMiAxM1MyMCAxMS4yMSAyMCA5VjEyLjA4TDE5IDEyQzE2LjQxIDEyIDE0LjIgMTMuNjQgMTMuMzYgMTUuOTRMMTIgMTZDNy41OCAxNiA0IDE0LjIxIDQgMTJWOU00IDE0QzQgMTYuMjEgNy41OCAxOCAxMiAxOEgxM0MxMyAxOS4wNSAxMy4yNyAyMC4wNCAxMy43NSAyMC45TDEyIDIxQzcuNTggMjEgNCAxOS4yMSA0IDE3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlTWludXNPdXRsaW5lID0gXCJNMjAgMTMuMDlWN0MyMCA0Ljc5IDE2LjQyIDMgMTIgM1M0IDQuNzkgNCA3VjE3QzQgMTkuMjEgNy41OSAyMSAxMiAyMUMxMi40NiAyMSAxMi45IDIxIDEzLjMzIDIwLjk0QzEzLjEyIDIwLjMzIDEzIDE5LjY4IDEzIDE5TDEzIDE4Ljk1QzEyLjY4IDE5IDEyLjM1IDE5IDEyIDE5QzguMTMgMTkgNiAxNy41IDYgMTdWMTQuNzdDNy42MSAxNS41NSA5LjcyIDE2IDEyIDE2QzEyLjY1IDE2IDEzLjI3IDE1Ljk2IDEzLjg4IDE1Ljg5QzE0LjkzIDE0LjE2IDE2LjgzIDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5TTE4IDEyLjQ1QzE2LjcgMTMuNCAxNC40MiAxNCAxMiAxNFM3LjMgMTMuNCA2IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExUzE2LjUzIDEwLjQ3IDE4IDkuNjRWMTIuNDVNMTIgOUM4LjEzIDkgNiA3LjUgNiA3UzguMTMgNSAxMiA1IDE4IDYuNSAxOCA3IDE1Ljg3IDkgMTIgOU0yMyAxOFYyMEgxNVYxOEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZU9mZiA9IFwiTTE5LjA3IDE1Ljg3QzE5LjY2IDE1LjMxIDIwIDE0LjY4IDIwIDE0VjE2LjhMMTkuMDcgMTUuODdNMjAgOUMyMCAxMC41NCAxOC4yNyAxMS44NiAxNS43MyAxMi41M0wxNy44OSAxNC42OUMxOS4xOSAxNCAyMCAxMy4wNCAyMCAxMlY5TTIwIDdDMjAgNC43OSAxNi40MiAzIDEyIDNDMTAuMTMgMyA4LjQyIDMuMzMgNy4wNiAzLjg2TDE0LjA2IDEwLjg2QzE3LjUgMTAuNDEgMjAgOC44NSAyMCA3TTIuMzkgMS43M0wxLjExIDNMNC4yMSA2LjFDNC4wOCA2LjM5IDQgNi42OSA0IDdDNCA4LjYzIDUuOTYgMTAuMDQgOC43NyAxMC42NkwxMS4wOCAxMi45N0M3LjEgMTIuNzQgNCAxMS4wNiA0IDlWMTJDNCAxNC4yMSA3LjU4IDE2IDEyIDE2QzEyLjY5IDE2IDEzLjM1IDE1Ljk1IDE0IDE1Ljg3TDE1LjY2IDE3LjU1QzE0LjU3IDE3Ljg0IDEzLjMyIDE4IDEyIDE4QzcuNTggMTggNCAxNi4yMSA0IDE0VjE3QzQgMTkuMjEgNy41OCAyMSAxMiAyMUMxNC4zMSAyMSAxNi4zOCAyMC41IDE3Ljg0IDE5LjczTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M1pcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZU9mZk91dGxpbmUgPSBcIk0yLjM5IDEuNzNMMS4xMSAzTDQuMjEgNi4xQzQuMDggNi4zOSA0IDYuNjkgNCA3VjE3QzQgMTkuMjEgNy41OSAyMSAxMiAyMUMxNC4zIDIxIDE2LjM4IDIwLjUgMTcuODQgMTkuNzNMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTYgOS42NEM2Ljc2IDEwLjA3IDcuNyAxMC40MiA4Ljc2IDEwLjY1TDEyLjExIDE0QzEyLjA3IDE0IDEyLjA0IDE0IDEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NVY5LjY0TTEyIDE5QzguMTMgMTkgNiAxNy41IDYgMTdWMTQuNzdDNy42MSAxNS41NSA5LjcyIDE2IDEyIDE2QzEyLjY4IDE2IDEzLjM0IDE1Ljk1IDE0IDE1Ljg3TDE2LjM0IDE4LjIzQzE1LjMzIDE4LjY1IDEzLjg3IDE5IDEyIDE5TTguNjQgNS40NEw3LjA2IDMuODZDOC40MiAzLjMzIDEwLjEzIDMgMTIgM0MxNi40MiAzIDIwIDQuNzkgMjAgN1YxNi44TDE4IDE0LjhWMTQuNzdMMTggMTQuNzhMMTYuNDUgMTMuMjVDMTcuMDUgMTMuMDMgMTcuNTggMTIuNzYgMTggMTIuNDVWOS42NEMxNi45NyAxMC4yMiAxNS42MSAxMC42NSAxNC4wNiAxMC44NkwxMi4xOSA5QzE1Ljk0IDguOTQgMTggNy41IDE4IDdDMTggNi41IDE1Ljg3IDUgMTIgNUMxMC42NiA1IDkuNTQgNS4xOCA4LjY0IDUuNDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VPdXRsaW5lID0gXCJNMTIgM0M3LjU4IDMgNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFTMjAgMTkuMjEgMjAgMTdWN0MyMCA0Ljc5IDE2LjQyIDMgMTIgM00xOCAxN0MxOCAxNy41IDE1Ljg3IDE5IDEyIDE5UzYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNlMxNi4zOSAxNS41NSAxOCAxNC43N1YxN00xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRDOS41OCAxNCA3LjMgMTMuNCA2IDEyLjQ1VjkuNjRDNy40NyAxMC40NyA5LjYxIDExIDEyIDExQzE0LjM5IDExIDE2LjUzIDEwLjQ3IDE4IDkuNjRWMTIuNDVNMTIgOUM4LjEzIDkgNiA3LjUgNiA3UzguMTMgNSAxMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUGx1cyA9IFwiTTE4LDE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3SDE4VjE0TTEyLDNDMTYuNDIsMyAyMCw0Ljc5IDIwLDdDMjAsOS4yMSAxNi40MiwxMSAxMiwxMUM3LjU4LDExIDQsOS4yMSA0LDdDNCw0Ljc5IDcuNTgsMyAxMiwzTTQsOUM0LDExLjIxIDcuNTgsMTMgMTIsMTNDMTYuNDIsMTMgMjAsMTEuMjEgMjAsOVY5TDIwLDEyLjA4TDE5LDEyQzE2LjQxLDEyIDE0LjIsMTMuNjQgMTMuMzYsMTUuOTRMMTIsMTZDNy41OCwxNiA0LDE0LjIxIDQsMTJWOU00LDE0QzQsMTYuMjEgNy41OCwxOCAxMiwxOEgxM0MxMywxOS4wNSAxMy4yNywyMC4wNCAxMy43NSwyMC45TDEyLDIxQzcuNTgsMjEgNCwxOS4yMSA0LDE3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUGx1c091dGxpbmUgPSBcIk0yMCAxMy4wOVY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjQ2IDIxIDEyLjkgMjEgMTMuMzMgMjAuOTRDMTMuMTIgMjAuMzMgMTMgMTkuNjggMTMgMTlMMTMgMTguOTVDMTIuNjggMTkgMTIuMzUgMTkgMTIgMTlDOC4xMyAxOSA2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZDMTIuNjUgMTYgMTMuMjcgMTUuOTYgMTMuODggMTUuODlDMTQuOTMgMTQuMTYgMTYuODMgMTMgMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTIzIDE4VjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1SDIwVjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUmVmcmVzaCA9IFwiTTEyIDNDMTYuNDIgMyAyMCA0Ljc5IDIwIDdDMjAgOS4yMSAxNi40MiAxMSAxMiAxMUM3LjU4IDExIDQgOS4yMSA0IDdDNCA0Ljc5IDcuNTggMyAxMiAzTTQgOUM0IDExLjIxIDcuNTggMTMgMTIgMTNDMTMuMTEgMTMgMTQuMTggMTIuODkgMTUuMTQgMTIuNjhDMTQuMTkgMTMuNTQgMTMuNSAxNC42NyAxMy4xOCAxNS45NkwxMiAxNkM3LjU4IDE2IDQgMTQuMjEgNCAxMlY5TTIwIDlWMTFMMTkuNSAxMUwxOC45IDExLjAzQzE5LjYgMTAuNDMgMjAgOS43NCAyMCA5TTQgMTRDNCAxNi4yMSA3LjU4IDE4IDEyIDE4TDEzIDE3Ljk3QzEzLjA5IDE5LjAzIDEzLjQyIDIwIDEzLjk1IDIwLjg4TDEyIDIxQzcuNTggMjEgNCAxOS4yMSA0IDE3VjE0TTE5IDEzLjVDMjAuMTEgMTMuNSAyMS4xMSAxMy45NSAyMS44MyAxNC42N0wyMyAxMy41VjE3LjVIMTlMMjAuNzcgMTUuNzNDMjAuMzIgMTUuMjggMTkuNjkgMTUgMTkgMTVDMTcuNjIgMTUgMTYuNSAxNi4xMiAxNi41IDE3LjVDMTYuNSAxOC44OCAxNy42MiAyMCAxOSAyMEMxOS44MiAyMCAyMC41NCAxOS42MSAyMSAxOUgyMi43MUMyMi4xMiAyMC40NyAyMC42OCAyMS41IDE5IDIxLjVDMTYuNzkgMjEuNSAxNSAxOS43MSAxNSAxNy41QzE1IDE1LjI5IDE2Ljc5IDEzLjUgMTkgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVJlZnJlc2hPdXRsaW5lID0gXCJNNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjAzQzE4LjE3IDEyIDE4LjMzIDEyIDE4LjUgMTJDMTkgMTIgMTkuNSAxMi4wNyAyMCAxMi4xOFY3QzIwIDQuNzkgMTYuNDIgMyAxMiAzUzQgNC43OSA0IDdWMTdDNCAxOS4yMSA3LjU5IDIxIDEyIDIxQzEyLjE3IDIxIDEyLjMzIDIxIDEyLjUgMjFDMTIuMjQgMjAuMzcgMTIuMDkgMTkuNyAxMi4wMyAxOUwxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi4xNyAxNiAxMi4zNCAxNiAxMi41IDE2QzEyLjg1IDE1LjE4IDEzLjM0IDE0LjQ2IDEzLjk1IDEzLjg2QzEzLjMyIDEzLjk1IDEyLjY3IDE0IDEyIDE0QzkuNTggMTQgNy4zIDEzLjQgNiAxMi40NU0xMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5IDYgNy41IDYgNyA4LjEzIDUgMTIgNU0xOCAxOC41TDE5Ljc3IDE2LjczQzE5LjMyIDE2LjI4IDE4LjY5IDE2IDE4IDE2QzE2LjYyIDE2IDE1LjUgMTcuMTIgMTUuNSAxOC41UzE2LjYyIDIxIDE4IDIxQzE4LjgyIDIxIDE5LjU0IDIwLjYxIDIwIDIwSDIxLjcxQzIxLjEyIDIxLjQ3IDE5LjY4IDIyLjUgMTggMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVTMTUuNzkgMTQuNSAxOCAxNC41QzE5LjExIDE0LjUgMjAuMTEgMTQuOTUgMjAuODMgMTUuNjdMMjIgMTQuNVYxOC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUmVtb3ZlID0gXCJNMTUuNDYsMTUuODhMMTYuODgsMTQuNDZMMTksMTYuNTlMMjEuMTIsMTQuNDdMMjIuNTMsMTUuODhMMjAuNDEsMThMMjIuNTQsMjAuMTJMMjEuMTIsMjEuNTRMMTksMTkuNDFMMTYuODgsMjEuNTNMMTUuNDcsMjAuMTJMMTcuNTksMThMMTUuNDYsMTUuODhNMTIsM0MxNi40MiwzIDIwLDQuNzkgMjAsN0MyMCw5LjIxIDE2LjQyLDExIDEyLDExQzcuNTgsMTEgNCw5LjIxIDQsN0M0LDQuNzkgNy41OCwzIDEyLDNNNCw5QzQsMTEuMjEgNy41OCwxMyAxMiwxM0MxNi40MiwxMyAyMCwxMS4yMSAyMCw5VjEyLjA4TDE5LDEyQzE2LjQxLDEyIDE0LjIsMTMuNjQgMTMuMzYsMTUuOTRMMTIsMTZDNy41OCwxNiA0LDE0LjIxIDQsMTJWOU00LDE0QzQsMTYuMjEgNy41OCwxOCAxMiwxOEgxM0MxMywxOS4wNSAxMy4yNywyMC4wNCAxMy43NSwyMC45TDEyLDIxQzcuNTgsMjEgNCwxOS4yMSA0LDE3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlUmVtb3ZlT3V0bGluZSA9IFwiTTIwIDEzLjA5VjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuNDYgMjEgMTIuOSAyMSAxMy4zMyAyMC45NEMxMy4xMiAyMC4zMyAxMyAxOS42OCAxMyAxOUwxMyAxOC45NUMxMi42OCAxOSAxMi4zNSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNkMxMi42NSAxNiAxMy4yNyAxNS45NiAxMy44OCAxNS44OUMxNC45MyAxNC4xNiAxNi44MyAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOU0xOCAxMi40NUMxNi43IDEzLjQgMTQuNDIgMTQgMTIgMTRTNy4zIDEzLjQgNiAxMi40NVY5LjY0QzcuNDcgMTAuNDcgOS42MSAxMSAxMiAxMVMxNi41MyAxMC40NyAxOCA5LjY0VjEyLjQ1TTEyIDlDOC4xMyA5IDYgNy41IDYgN1M4LjEzIDUgMTIgNSAxOCA2LjUgMTggNyAxNS44NyA5IDEyIDlNMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhMMjAuNDEgMTlcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVNlYXJjaCA9IFwiTTE4LjY4LDEyLjMyQzE2LjkyLDEwLjU2IDE0LjA3LDEwLjU3IDEyLjMyLDEyLjMzQzEwLjU2LDE0LjA5IDEwLjU2LDE2Ljk0IDEyLjMyLDE4LjY5QzEzLjgxLDIwLjE3IDE2LjExLDIwLjQzIDE3Ljg5LDE5LjMyTDIxLDIyLjM5TDIyLjM5LDIxTDE5LjMsMTcuODlDMjAuNDMsMTYuMTIgMjAuMTcsMTMuOCAxOC42OCwxMi4zMk0xNy4yNywxNy4yN0MxNi4yOSwxOC4yNSAxNC43MSwxOC4yNCAxMy43MywxNy4yN0MxMi43NiwxNi4yOSAxMi43NiwxNC43MSAxMy43NCwxMy43M0MxNC43MSwxMi43NiAxNi4yOSwxMi43NiAxNy4yNywxMy43M0MxOC4yNCwxNC43MSAxOC4yNCwxNi4yOSAxNy4yNywxNy4yN00xMC45LDIwLjFDMTAuMjUsMTkuNDQgOS43NCwxOC42NSA5LjQyLDE3Ljc4QzYuMjcsMTcuMjUgNCwxNS43NiA0LDE0VjE3QzQsMTkuMjEgNy41OCwyMSAxMiwyMVYyMUMxMS42LDIwLjc0IDExLjIzLDIwLjQ0IDEwLjksMjAuMU00LDlWMTJDNCwxMy42OCA2LjA3LDE1LjEyIDksMTUuN0M5LDE1LjYzIDksMTUuNTcgOSwxNS41QzksMTQuNTcgOS4yLDEzLjY1IDkuNTgsMTIuODFDNi4zNCwxMi4zIDQsMTAuNzkgNCw5TTEyLDNDNy41OCwzIDQsNC43OSA0LDdDNCw5IDcsMTAuNjggMTAuODUsMTFIMTAuOUMxMi4xLDkuNzQgMTMuNzYsOSAxNS41LDlDMTYuNDEsOSAxNy4zMSw5LjE5IDE4LjE0LDkuNTZDMTkuMTcsOS4wOSAxOS44Nyw4LjEyIDIwLDdDMjAsNC43OSAxNi40MiwzIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGF0YWJhc2VTZWFyY2hPdXRsaW5lID0gXCJNMTEgMTguOTVDNy43NyAxOC43MiA2IDE3LjQ1IDYgMTdWMTQuNzdDNy4xMyAxNS4zMiA4LjUgMTUuNjkgMTAgMTUuODdDMTAgMTUuMjEgMTAuMDQgMTQuNTQgMTAuMjEgMTMuODlDOC41IDEzLjY3IDYuOTcgMTMuMTYgNiAxMi40NVY5LjY0QzcuNDMgMTAuNDUgOS41IDEwLjk3IDExLjgyIDExQzExLjg1IDEwLjk3IDExLjg3IDEwLjkzIDExLjkgMTAuOUMxNC4xIDguNzEgMTcuNSA4LjQxIDIwIDEwLjAzVjdDMjAgNC43OSAxNi40MiAzIDEyIDNTNCA0Ljc5IDQgN1YxN0M0IDE5LjIxIDcuNTkgMjEgMTIgMjFDMTIuMzQgMjEgMTIuNjggMjEgMTMgMjAuOTdDMTIuNjIgMjAuNzIgMTIuMjQgMjAuNDQgMTEuOSAyMC4xQzExLjU1IDE5Ljc0IDExLjI1IDE5LjM2IDExIDE4Ljk1TTEyIDVDMTUuODcgNSAxOCA2LjUgMTggN1MxNS44NyA5IDEyIDkgNiA3LjUgNiA3IDguMTMgNSAxMiA1TTIwLjMxIDE3LjlDMjAuNzUgMTcuMjEgMjEgMTYuMzggMjEgMTUuNUMyMSAxMyAxOSAxMSAxNi41IDExUzEyIDEzIDEyIDE1LjUgMTQgMjAgMTYuNSAyMEMxNy4zNyAyMCAxOC4xOSAxOS43NSAxOC44OCAxOS4zMkwyMiAyMi4zOUwyMy4zOSAyMUwyMC4zMSAxNy45TTE2LjUgMThDMTUuMTIgMTggMTQgMTYuODggMTQgMTUuNVMxNS4xMiAxMyAxNi41IDEzIDE5IDE0LjEyIDE5IDE1LjUgMTcuODggMTggMTYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVNldHRpbmdzID0gXCJNNywyMkg5VjI0SDdWMjJNMTEsMjJIMTNWMjRIMTFWMjJNMTUsMjJIMTdWMjRIMTVWMjJNMTIsM0MxNi40MiwzIDIwLDQuNzkgMjAsN0MyMCw5LjIxIDE2LjQyLDExIDEyLDExQzcuNTgsMTEgNCw5LjIxIDQsN0M0LDQuNzkgNy41OCwzIDEyLDNNNCw5QzQsMTEuMjEgNy41OCwxMyAxMiwxM0MxNi40MiwxMyAyMCwxMS4yMSAyMCw5VjEyQzIwLDE0LjIxIDE2LjQyLDE2IDEyLDE2QzcuNTgsMTYgNCwxNC4yMSA0LDEyVjlNNCwxNEM0LDE2LjIxIDcuNTgsMTggMTIsMThDMTYuNDIsMTggMjAsMTYuMjEgMjAsMTRWMTdDMjAsMTguMTkgMTguOTUsMTkuMjcgMTcuMjksMjBINi43MUM1LjA1LDE5LjI3IDQsMTguMTkgNCwxN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVNldHRpbmdzT3V0bGluZSA9IFwiTTEyIDNDNy41OCAzIDQgNC43OSA0IDdWMTdDNCAxOC4yIDUuMDYgMTkuMjcgNi43MyAyMEgxNy4yN0MxOC45NCAxOS4yNyAyMCAxOC4yIDIwIDE3VjdDMjAgNC43OSAxNi40MiAzIDEyIDNNMTggMTdDMTggMTcuNSAxNS44NyAxOSAxMiAxOVM2IDE3LjUgNiAxN1YxNC43N0M3LjYxIDE1LjU1IDkuNzIgMTYgMTIgMTZTMTYuMzkgMTUuNTUgMTggMTQuNzdWMTdNMTggMTIuNDVDMTYuNyAxMy40IDE0LjQyIDE0IDEyIDE0UzcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMi40NU0xMiA5QzguMTMgOSA2IDcuNSA2IDdTOC4xMyA1IDEyIDUgMTggNi41IDE4IDcgMTUuODcgOSAxMiA5TTcgMjJIOVYyNEg3VjIyTTE1IDIySDE3VjI0SDE1VjIyTTExIDIySDEzVjI0SDExVjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURhdGFiYXNlU3luYyA9IFwiTTE5LDEyVjEzLjVBNCw0IDAgMCwxIDIzLDE3LjVDMjMsMTguMzIgMjIuNzUsMTkuMDggMjIuMzMsMTkuNzFMMjEuMjQsMTguNjJDMjEuNDEsMTguMjggMjEuNSwxNy45IDIxLjUsMTcuNUEyLjUsMi41IDAgMCwwIDE5LDE1VjE2LjVMMTYuNzUsMTQuMjVMMTksMTJNMTksMjNWMjEuNUE0LDQgMCAwLDEgMTUsMTcuNUMxNSwxNi42OCAxNS4yNSwxNS45MiAxNS42NywxNS4yOUwxNi43NiwxNi4zOEMxNi41OSwxNi43MiAxNi41LDE3LjEgMTYuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMjBWMTguNUwyMS4yNSwyMC43NUwxOSwyM00xMiwzQzE2LjQyLDMgMjAsNC43OSAyMCw3QzIwLDkuMjEgMTYuNDIsMTEgMTIsMTFDNy41OCwxMSA0LDkuMjEgNCw3QzQsNC43OSA3LjU4LDMgMTIsM000LDlDNCwxMS4yMSA3LjU4LDEzIDEyLDEzQzEzLjExLDEzIDE0LjE3LDEyLjg5IDE1LjE0LDEyLjY4QzE0LjE5LDEzLjU0IDEzLjUsMTQuNjcgMTMuMTgsMTUuOTZMMTIsMTZDNy41OCwxNiA0LDE0LjIxIDQsMTJWOU0yMCw5VjExSDE5LjVMMTguOSwxMS4wM0MxOS42LDEwLjQzIDIwLDkuNzQgMjAsOU00LDE0QzQsMTYuMjEgNy41OCwxOCAxMiwxOEwxMywxNy45N0MxMy4wOSwxOS4wMyAxMy40MiwyMCAxMy45NSwyMC44OEwxMiwyMUM3LjU4LDIxIDQsMTkuMjEgNCwxN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEYXRhYmFzZVN5bmNPdXRsaW5lID0gXCJNMTIgMTZDMTIuNDEgMTYgMTIuODEgMTUuOTcgMTMuMjEgMTUuOTRDMTMuNCAxNS4xOCAxMy43MiAxNC40NiAxNC4xNiAxMy44M0MxMy40NyAxMy45NCAxMi43NCAxNCAxMiAxNEM5LjU4IDE0IDcuMyAxMy40IDYgMTIuNDVWOS42NEM3LjQ3IDEwLjQ3IDkuNjEgMTEgMTIgMTFTMTYuNTMgMTAuNDcgMTggOS42NFYxMS4xOUMxOC41IDExLjA3IDE5IDExIDE5LjU1IDExQzE5LjcgMTEgMTkuODUgMTEgMjAgMTEuMDNWN0MyMCA0Ljc5IDE2LjQyIDMgMTIgM1M0IDQuNzkgNCA3VjE3QzQgMTkuMjEgNy41OSAyMSAxMiAyMUMxMi42NiAyMSAxMy4zMSAyMC45NiAxMy45MiAyMC44OEMxMy41NyAyMC4yOSAxMy4zMSAxOS42NCAxMy4xNiAxOC45NEMxMi43OSAxOSAxMi40MSAxOSAxMiAxOUM4LjEzIDE5IDYgMTcuNSA2IDE3VjE0Ljc3QzcuNjEgMTUuNTUgOS43MiAxNiAxMiAxNk0xMiA1QzE1Ljg3IDUgMTggNi41IDE4IDdTMTUuODcgOSAxMiA5IDYgNy41IDYgNyA4LjEzIDUgMTIgNU0yMyAxNy41QzIzIDE4LjMyIDIyLjc1IDE5LjA4IDIyLjMzIDE5LjcxTDIxLjI0IDE4LjYyQzIxLjQxIDE4LjI4IDIxLjUgMTcuOSAyMS41IDE3LjVDMjEuNSAxNi4xMiAyMC4zOCAxNSAxOSAxNVYxNi41TDE2Ljc1IDE0LjI1TDE5IDEyVjEzLjVDMjEuMjEgMTMuNSAyMyAxNS4yOSAyMyAxNy41TTE5IDE4LjVMMjEuMjUgMjAuNzVMMTkgMjNWMjEuNUMxNi43OSAyMS41IDE1IDE5LjcxIDE1IDE3LjVDMTUgMTYuNjggMTUuMjUgMTUuOTIgMTUuNjcgMTUuMjlMMTYuNzYgMTYuMzhDMTYuNTkgMTYuNzIgMTYuNSAxNy4xIDE2LjUgMTcuNUMxNi41IDE4Ljg4IDE3LjYyIDIwIDE5IDIwVjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVhdGhTdGFyID0gXCJNMi4wNSwxM0gyMS45NUMyMS40NSwxOC4wNSAxNy4xOSwyMiAxMiwyMkM2LjgyLDIyIDIuNTUsMTguMDUgMi4wNSwxM00yMS45NSwxMUgyLjA1QzIuNTUsNS45NSA2LjgyLDIgMTIsMkMxNy4xOCwyIDIxLjQ1LDUuOTUgMjEuOTUsMTFNMTIsNi43NUEyLjUsMi41IDAgMCwwIDkuNSw0LjI1QTIuNSwyLjUgMCAwLDAgNyw2Ljc1QTIuNSwyLjUgMCAwLDAgOS41LDkuMjVBMi41LDIuNSAwIDAsMCAxMiw2Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlYXRoU3RhclZhcmlhbnQgPSBcIk0yLjA1LDEzSDIxLjk0QzIxLjg4LDEzLjY5IDIxLjc0LDE0LjM2IDIxLjU0LDE1SDE0VjE3SDE3VjE5SDE1VjIxSDEyLjVWMjJDMTIuMzMsMjIgMTIuMTcsMjIgMTIsMjJDNi44MiwyMiAyLjU1LDE4LjA1IDIuMDUsMTNNMjEuOTQsMTFIMi4wNUMyLjU1LDUuOTUgNi44MiwyIDEyLDJDMTMuNjIsMiAxNS4xNSwyLjM5IDE2LjUsMy4wOFY1SDE4LjVWN0gyMFY5SDIxLjU0QzIxLjc0LDkuNjQgMjEuODgsMTAuMzEgMjEuOTQsMTFNMTIsNi43NUEyLjUsMi41IDAgMCwwIDkuNSw0LjI1QTIuNSwyLjUgMCAwLDAgNyw2Ljc1QTIuNSwyLjUgMCAwLDAgOS41LDkuMjVBMi41LDIuNSAwIDAsMCAxMiw2Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlYXRobHlIYWxsb3dzID0gXCJNMTIsMkwxLDIxSDIzTDEyLDJNMTIuNzUsMTEuNDdDMTQuNTYsMTEuODcgMTUuNywxMy42NyAxNS4zLDE1LjVDMTUsMTYuNzUgMTQsMTcuNzUgMTIuNzUsMTguMDNWMTEuNDdNMTEuMjUsMThDOS40NCwxNy42IDguMywxNS44IDguNywxNEM5LDEyLjcyIDEwLDExLjcyIDExLjI1LDExLjQ0VjE4TTE2Ljg4LDE0LjcyQzE2LjgzLDEyLjM1IDE1LjA5LDEwLjM2IDEyLjc1LDEwVjYuMjlMMjAuNCwxOS41SDEzLjA3QzE1LjI5LDE5IDE2Ljg3LDE3LjAzIDE2Ljg4LDE0Ljc1VjE0LjcyTTExLjI1LDYuMjlWMTBDOC42LDEwLjQgNi43NywxMi44OCA3LjE4LDE1LjU0QzcuNSwxNy41IDguOTcsMTkuMTIgMTAuOTMsMTkuNTVIMy42TDExLjI1LDYuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGViaWFuID0gXCJNMTguNSwxMC41N0wxOC4zLDEwLjk0QzE4LjU2LDEwLjE2IDE4LjQxLDkuMzEgMTguNDUsOC41N0wxOC4zOCw4LjU1QzE4LjMxLDYuNyAxNi43MSw0LjczIDE1LjI5LDQuMDdDMTQuMDYsMy41IDEyLjE3LDMuNCAxMS4zLDMuODNDMTEuNDIsMy43MiAxMS45LDMuNjggMTEuNzUsMy42QzEwLjM4LDMuNzMgMTAuNjksNC4wNyA5LjY0LDQuMzRDOS4zNSw0LjYyIDEwLjUsNC4xMiA5Ljg3LDQuNUM5LjMxLDQuNjMgOS4wNSw0LjM4IDguMjIsNS4yNEM4LjI5LDUuMzYgOC43NSw0Ljg5IDguMzcsNS4zNkM3LjU4LDUuMjcgNS44OSw3LjE2IDUuNTMsNy43OEw1LjcyLDcuODJDNS40MSw4LjU5IDUsOS4wOCA0Ljk1LDkuNTRDNC44NywxMC42OCA0LjUsMTIuNzUgNS4wMywxMy4zOUw0Ljk3LDEzLjkyTDUuMiwxNC4zN0w1LjA4LDE0LjM4QzUuNjYsMTYuMjEgNS43LDE0LjQyIDYuNDcsMTYuMzJDNi4zNiwxNi4yOCA2LjI0LDE2LjI0IDYuMDgsMTZDNi4wNiwxNi4xOSA2LjMyLDE2LjY5IDYuNjIsMTcuMDhMNi41LDE3LjIyQzYuNjYsMTcuNTMgNi44MiwxNy42IDYuOTMsMTcuNzFDNi4zLDE3LjM2IDcuNSwxOC44NCA3LjYzLDE5LjAzTDcuNzMsMTguODZDNy43MSwxOS4xIDcuOSwxOS40MiA4LjI2LDE5Ljg3TDguNTYsMTkuODZDOC42OSwyMC4xIDkuMTQsMjAuNTQgOS40MSwyMC41Nkw5LjIzLDIwLjhDOS45MiwyMSA5LjU2LDIxLjA5IDEwLjQxLDIxLjM5TDEwLjI0LDIxLjA5QzEwLjY3LDIxLjQ2IDEwLjgsMjEuNzkgMTEuNDEsMjIuMDdDMTIuMjYsMjIuMzcgMTIuMzcsMjIuMjUgMTMuMjMsMjIuNUMxMi41LDIyLjUgMTEuNjQsMjIuNSAxMS4wNiwyMi4yOEM3LjEsMjEuMjEgMy41LDE2LjU2IDMuNzQsMTEuNzhDMy42OCwxMC44MSAzLjg0LDkuNiAzLjY4LDkuMzZDMy45LDguNjIgNC4xNiw3LjcyIDQuNjksNi42NUM0LjY1LDYuNTggNC43OCw2Ljg2IDUuMDUsNi40MUM1LjIxLDYuMDUgNS4zNCw1LjY2IDUuNTUsNS4zMUw1LjY1LDUuMjhDNS43Niw0LjY3IDcuMDgsMy43MyA3LjUsMy4yNlYzLjQ0QzguMzYsMi42MyA5LjksMi4wOSAxMC43NiwxLjcxQzEwLjUzLDEuOTYgMTEuMjcsMS42OCAxMS44LDEuNjVMMTEuMzEsMS45M0MxMS45NCwxLjc3IDExLjkxLDIgMTIuNTYsMS45QzEyLjMzLDEuOTMgMTIuMDYsMiAxMi4xLDIuMDZDMTIuODIsMi4xNCAxMi45NCwxLjg0IDEzLjYxLDIuMDZMMTMuNTYsMS44NkMxNC41LDIuMiAxNC42OSwyLjE0IDE1LjcsMi42OEMxNi4wNiwyLjY5IDE2LjEsMi40NiAxNi42MywyLjY4QzE2LjczLDIuODQgMTYuNjEsMi44NyAxNy4yNywzLjI3QzE3LjM0LDMuMjQgMTcuMTQsMy4wNSAxNywyLjlDMTguMywzLjYxIDE5Ljc1LDUuMTIgMjAuMTgsNi43NEMxOS43Nyw2IDIwLjE0LDcuMTMgMjAsNy4wN0MyMC4xOCw3LjU2IDIwLjMzLDguMDcgMjAuNDMsOC42QzIwLjMxLDguMTcgMjAuMDQsNy4xMiAxOS41Nyw2LjQ1QzE5LjU0LDYuODggMTguOTcsNi4xNSAxOS4yOCw3LjExQzE5LjUsNy40NSAxOS4zMyw2Ljc2IDE5LjYyLDcuMzZDMTkuNjIsNy42NSAxOS43Myw3Ljk0IDE5LjgsOC4zMUMxOS43LDguMjkgMTkuNTgsNy45IDE5LjUsOEMxOS42LDguNSAxOS43Nyw4LjcyIDE5LjgzLDguNzZDMTkuOCw4Ljg0IDE5LjcxLDguNjggMTkuNzEsOUMxOS43NSw5Ljc0IDE5LjkyLDkuNDMgMjAsOS40NkMxOS45MSw5LjgzIDE5LjU5LDEwLjI1IDE5Ljc1LDEwLjg4TDE5LjU1LDEwLjMyQzE5LjUsMTAuODUgMTkuNjYsMTAuOTUgMTkuNDIsMTEuNkMxOS42LDExIDE5LjU4LDEwLjUgMTkuNDEsMTAuNzVDMTkuNSwxMS41NyAxOC43NiwxMi4yIDE4LjgzLDEyLjczTDE4LjYyLDEyLjQ0QzE4LjA1LDEzLjI3IDE4LjYxLDEyLjg5IDE4LjIyLDEzLjVDMTguMzYsMTMuMjcgMTguMTUsMTMuNDIgMTguMzMsMTMuMTRDMTguMjEsMTMuMTUgMTcuNzgsMTMuNjcgMTcuMzksMTMuOTdDMTUuODUsMTUuMiAxNCwxNS4zNyAxMi4yNCwxNC43SDEyLjIzQzEyLjI0LDE0LjY2IDEyLjIzLDE0LjYxIDEyLjExLDE0LjUzQzEwLjYsMTMuMzggOS43MSwxMi40IDEwLDEwLjEyQzEwLjI1LDkuOTUgMTAuMzEsOSAxMC44NCw4LjY3QzExLjE2LDcuOTYgMTIuMTIsNy4zMSAxMy4xNSw3LjI5QzE0LjIsNy4yMyAxNS4wOSw3Ljg1IDE1LjU0LDguNDNDMTQuNzIsNy42OCAxMy40LDcuNDUgMTIuMjYsOEMxMS4xMSw4LjUzIDEwLjQyLDkuOCAxMC41LDExLjA3QzEwLjU2LDExIDEwLjYsMTEuMDUgMTAuNjIsMTAuODlDMTAuNTksMTMuMzYgMTMuMjgsMTUuMTcgMTUuMjIsMTQuMjZMMTUuMjUsMTQuMzFDMTYuMDMsMTQuMDkgMTUuOTMsMTMuOTIgMTYuNDQsMTMuNTZDMTYuNCwxMy42NSAxNi4xLDEzLjg2IDE2LjI4LDEzLjg2QzE2LjUzLDEzLjggMTcuMzEsMTMuMDcgMTcuNywxMi43M0MxNy44NywxMi4zNSAxNy42LDEyLjUgMTcuODUsMTIuMDRMMTguMTUsMTEuODlDMTguMzIsMTEuNDEgMTguNSwxMS4xNCAxOC41LDEwLjU3XCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVidWdTdGVwSW50byA9IFwiTTEyLDIyQTIsMiAwIDAsMSAxMCwyMEEyLDIgMCAwLDEgMTIsMThBMiwyIDAgMCwxIDE0LDIwQTIsMiAwIDAsMSAxMiwyMk0xMywyVjEzTDE3LjUsOC41TDE4LjkyLDkuOTJMMTIsMTYuODRMNS4wOCw5LjkyTDYuNSw4LjVMMTEsMTNWMkgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEZWJ1Z1N0ZXBPdXQgPSBcIk0xMiwyMkEyLDIgMCAwLDEgMTAsMjBBMiwyIDAgMCwxIDEyLDE4QTIsMiAwIDAsMSAxNCwyMEEyLDIgMCAwLDEgMTIsMjJNMTMsMTZIMTFWNkw2LjUsMTAuNUw1LjA4LDkuMDhMMTIsMi4xNkwxOC45Miw5LjA4TDE3LjUsMTAuNUwxMyw2VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlYnVnU3RlcE92ZXIgPSBcIk0xMiwxNEEyLDIgMCAwLDEgMTQsMTZBMiwyIDAgMCwxIDEyLDE4QTIsMiAwIDAsMSAxMCwxNkEyLDIgMCAwLDEgMTIsMTRNMjMuNDYsOC44NkwyMS44NywxNS43NUwxNSwxNC4xNkwxOC44LDExLjc4QzE3LjM5LDkuNSAxNC44Nyw4IDEyLDhDOC4wNSw4IDQuNzcsMTAuODYgNC4xMiwxNC42M0wyLjE1LDE0LjI4QzIuOTYsOS41OCA3LjA2LDYgMTIsNkMxNS41OCw2IDE4LjczLDcuODkgMjAuNSwxMC43MkwyMy40Niw4Ljg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlY2FncmFtID0gXCJNMjMsMTJMMjAuNTYsOS4yMkwyMC45LDUuNTRMMTcuMjksNC43MkwxNS40LDEuNTRMMTIsM0w4LjYsMS41NEw2LjcxLDQuNzJMMy4xLDUuNTNMMy40NCw5LjIxTDEsMTJMMy40NCwxNC43OEwzLjEsMTguNDdMNi43MSwxOS4yOUw4LjYsMjIuNDdMMTIsMjFMMTUuNCwyMi40NkwxNy4yOSwxOS4yOEwyMC45LDE4LjQ2TDIwLjU2LDE0Ljc4TDIzLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURlY2FncmFtT3V0bGluZSA9IFwiTTIzLDEyTDIwLjU2LDE0Ljc4TDIwLjksMTguNDZMMTcuMjksMTkuMjhMMTUuNCwyMi40NkwxMiwyMUw4LjYsMjIuNDdMNi43MSwxOS4yOUwzLjEsMTguNDdMMy40NCwxNC43OEwxLDEyTDMuNDQsOS4yMUwzLjEsNS41M0w2LjcxLDQuNzJMOC42LDEuNTRMMTIsM0wxNS40LDEuNTRMMTcuMjksNC43MkwyMC45LDUuNTRMMjAuNTYsOS4yMkwyMywxMk0yMC4zMywxMkwxOC41LDkuODlMMTguNzQsNy4xTDE2LDYuNUwxNC41OCw0LjA3TDEyLDUuMThMOS40Miw0LjA3TDgsNi41TDUuMjYsNy4wOUw1LjUsOS44OEwzLjY3LDEyTDUuNSwxNC4xTDUuMjYsMTYuOUw4LDE3LjVMOS40MiwxOS45M0wxMiwxOC44MUwxNC41OCwxOS45MkwxNiwxNy41TDE4Ljc0LDE2Ljg5TDE4LjUsMTQuMUwyMC4zMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWNpbWFsID0gXCJNMTAgN0EzIDMgMCAwIDAgNyAxMFYxM0EzIDMgMCAwIDAgMTMgMTNWMTBBMyAzIDAgMCAwIDEwIDdNMTEgMTNBMSAxIDAgMCAxIDkgMTNWMTBBMSAxIDAgMCAxIDExIDEwTTE3IDdBMyAzIDAgMCAwIDE0IDEwVjEzQTMgMyAwIDAgMCAyMCAxM1YxMEEzIDMgMCAwIDAgMTcgN00xOCAxM0ExIDEgMCAwIDEgMTYgMTNWMTBBMSAxIDAgMCAxIDE4IDEwTTYgMTVBMSAxIDAgMSAxIDUgMTRBMSAxIDAgMCAxIDYgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVjaW1hbENvbW1hID0gXCJNMTAgN0EzIDMgMCAwIDEgMTMgMTBWMTNBMyAzIDAgMCAxIDcgMTNWMTBBMyAzIDAgMCAxIDEwIDdNMTAgOUExIDEgMCAwIDAgOSAxMFYxM0ExIDEgMCAwIDAgMTEgMTNWMTBBMSAxIDAgMCAwIDEwIDlNMTcgN0EzIDMgMCAwIDEgMjAgMTBWMTNBMyAzIDAgMCAxIDE0IDEzVjEwQTMgMyAwIDAgMSAxNyA3TTE3IDlBMSAxIDAgMCAwIDE2IDEwVjEzQTEgMSAwIDAgMCAxOCAxM1YxMEExIDEgMCAwIDAgMTcgOU01IDE0QTEgMSAwIDAgMCA0IDE1TDUgMThINlYxNUExIDEgMCAwIDAgNSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWNpbWFsQ29tbWFEZWNyZWFzZSA9IFwiTTUgMTNWMTZINEwzIDEzQTEgMSAwIDAgMSA1IDEzTTE1IDE2VjE0TDEyIDE3TDE1IDIwVjE4SDIxVjE2TTEyIDExQTMgMyAwIDAgMSA2IDExVjhBMyAzIDAgMCAxIDEyIDhNMTAgOEExIDEgMCAwIDAgOCA4VjExQTEgMSAwIDAgMCAxMCAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWNpbWFsQ29tbWFJbmNyZWFzZSA9IFwiTTkgNUEzIDMgMCAwIDAgNiA4VjExQTMgMyAwIDAgMCAxMiAxMVY4QTMgMyAwIDAgMCA5IDVNMTAgMTFBMSAxIDAgMCAxIDggMTFWOEExIDEgMCAwIDEgMTAgOE0xNiAxNEEzIDMgMCAwIDAgMTkgMTFWOEEzIDMgMCAwIDAgMTMgOFYxMUEzIDMgMCAwIDAgMTYgMTRNMTUgOEExIDEgMCAwIDEgMTcgOFYxMUExIDEgMCAwIDEgMTUgMTFNMTkgMjBWMThIMTNWMTZIMTlWMTRMMjIgMTdNNSAxM1YxNkg0TDMgMTNBMSAxIDAgMCAxIDUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVjaW1hbERlY3JlYXNlID0gXCJNMTIsMTdMMTUsMjBWMThIMjFWMTZIMTVWMTRMMTIsMTdNOSw1QTMsMyAwIDAsMSAxMiw4VjExQTMsMyAwIDAsMSA5LDE0QTMsMyAwIDAsMSA2LDExVjhBMywzIDAgMCwxIDksNU05LDdBMSwxIDAgMCwwIDgsOFYxMUExLDEgMCAwLDAgOSwxMkExLDEgMCAwLDAgMTAsMTFWOEExLDEgMCAwLDAgOSw3TTQsMTJBMSwxIDAgMCwxIDUsMTNBMSwxIDAgMCwxIDQsMTRBMSwxIDAgMCwxIDMsMTNBMSwxIDAgMCwxIDQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVjaW1hbEluY3JlYXNlID0gXCJNMjIsMTdMMTksMjBWMThIMTNWMTZIMTlWMTRMMjIsMTdNOSw1QTMsMyAwIDAsMSAxMiw4VjExQTMsMyAwIDAsMSA5LDE0QTMsMyAwIDAsMSA2LDExVjhBMywzIDAgMCwxIDksNU05LDdBMSwxIDAgMCwwIDgsOFYxMUExLDEgMCAwLDAgOSwxMkExLDEgMCAwLDAgMTAsMTFWOEExLDEgMCAwLDAgOSw3TTE2LDVBMywzIDAgMCwxIDE5LDhWMTFBMywzIDAgMCwxIDE2LDE0QTMsMyAwIDAsMSAxMywxMVY4QTMsMyAwIDAsMSAxNiw1TTE2LDdBMSwxIDAgMCwwIDE1LDhWMTFBMSwxIDAgMCwwIDE2LDEyQTEsMSAwIDAsMCAxNywxMVY4QTEsMSAwIDAsMCAxNiw3TTQsMTJBMSwxIDAgMCwxIDUsMTNBMSwxIDAgMCwxIDQsMTRBMSwxIDAgMCwxIDMsMTNBMSwxIDAgMCwxIDQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlID0gXCJNMTksNEgxNS41TDE0LjUsM0g5LjVMOC41LDRINVY2SDE5TTYsMTlBMiwyIDAgMCwwIDgsMjFIMTZBMiwyIDAgMCwwIDE4LDE5VjdINlYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVBbGVydCA9IFwiTTE3IDRWNkgzVjRINi41TDcuNSAzSDEyLjVMMTMuNSA0SDE3TTQgMTlWN0gxNlYxOUMxNiAyMC4xIDE1LjEgMjEgMTQgMjFINkM0LjkgMjEgNCAyMC4xIDQgMTlNMTkgMTVIMjFWMTdIMTlWMTVNMTkgN0gyMVYxM0gxOVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUFsZXJ0T3V0bGluZSA9IFwiTTQgMTlWN0gxNlYxOUMxNiAyMC4xIDE1LjEgMjEgMTQgMjFINkM0LjkgMjEgNCAyMC4xIDQgMTlNNiA5VjE5SDE0VjlINk0xMy41IDRIMTdWNkgzVjRINi41TDcuNSAzSDEyLjVMMTMuNSA0TTE5IDE3VjE1SDIxVjE3SDE5TTE5IDEzVjdIMjFWMTNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlQ2lyY2xlID0gXCJNMTIsMkMxNy41MywyIDIyLDYuNDcgMjIsMTJDMjIsMTcuNTMgMTcuNTMsMjIgMTIsMjJDNi40NywyMiAyLDE3LjUzIDIsMTJDMiw2LjQ3IDYuNDcsMiAxMiwyTTE3LDdIMTQuNUwxMy41LDZIMTAuNUw5LjUsN0g3VjlIMTdWN005LDE4SDE1QTEsMSAwIDAsMCAxNiwxN1YxMEg4VjE3QTEsMSAwIDAsMCA5LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTYsMTBWMTdBMSwxIDAgMCwxIDE1LDE4SDlBMSwxIDAgMCwxIDgsMTdWMTBIMTZNMTMuNSw2TDE0LjUsN0gxN1Y5SDdWN0g5LjVMMTAuNSw2SDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlQ2xvY2sgPSBcIk0xNSAxM0gxNi41VjE1LjgyTDE4Ljk0IDE3LjIzTDE4LjE5IDE4LjUzTDE1IDE2LjY5VjEzTTIzIDE2QzIzIDE5Ljg3IDE5Ljg3IDIzIDE2IDIzQzE0LjA5IDIzIDEyLjM2IDIyLjI0IDExLjEgMjFIOEM2LjkgMjEgNiAyMC4xIDYgMTlWN0gxOFY5LjI5QzIwLjg5IDEwLjE1IDIzIDEyLjgzIDIzIDE2TTE2IDExQzEzLjI0IDExIDExIDEzLjI0IDExIDE2QzExIDE4Ljc2IDEzLjI0IDIxIDE2IDIxQzE4Ljc2IDIxIDIxIDE4Ljc2IDIxIDE2QzIxIDEzLjI0IDE4Ljc2IDExIDE2IDExTTE5IDRWNkg1VjRIOC41TDkuNSAzSDE0LjVMMTUuNSA0SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUNsb2NrT3V0bGluZSA9IFwiTTE1IDEzSDE2LjVWMTUuODJMMTguOTQgMTcuMjNMMTguMTkgMTguNTNMMTUgMTYuNjlWMTNNMjMgMTZDMjMgMTkuODcgMTkuODcgMjMgMTYgMjNDMTQuMDkgMjMgMTIuMzYgMjIuMjQgMTEuMSAyMUg4QzYuOSAyMSA2IDIwLjEgNiAxOVY3SDE4VjkuMjlDMjAuODkgMTAuMTUgMjMgMTIuODMgMjMgMTZNOSAxNkM5IDEyLjEzIDEyLjEzIDkgMTYgOUg4VjE5SDkuNjdDOS4yNCAxOC4wOSA5IDE3LjA3IDkgMTZNMTYgMTFDMTMuMjQgMTEgMTEgMTMuMjQgMTEgMTZDMTEgMTguNzYgMTMuMjQgMjEgMTYgMjFDMTguNzYgMjEgMjEgMTguNzYgMjEgMTZDMjEgMTMuMjQgMTguNzYgMTEgMTYgMTFNMTUuNSA0SDE5VjZINVY0SDguNUw5LjUgM0gxNC41TDE1LjUgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVFbXB0eSA9IFwiTTIwLjM3LDguOTFMMTkuMzcsMTAuNjRMNy4yNCwzLjY0TDguMjQsMS45MUwxMS4yOCwzLjY2TDEyLjY0LDMuMjlMMTYuOTcsNS43OUwxNy4zNCw3LjE2TDIwLjM3LDguOTFNNiwxOVY3SDExLjA3TDE4LDExVjE5QTIsMiAwIDAsMSAxNiwyMUg4QTIsMiAwIDAsMSA2LDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZUVtcHR5T3V0bGluZSA9IFwiTTIwLjM3LDguOTFMMTkuMzcsMTAuNjRMNy4yNCwzLjY0TDguMjQsMS45MUwxMS4yOCwzLjY2TDEyLjY0LDMuMjlMMTYuOTcsNS43OUwxNy4zNCw3LjE2TDIwLjM3LDguOTFNNiwxOVY3SDExLjA3TDE4LDExVjE5QTIsMiAwIDAsMSAxNiwyMUg4QTIsMiAwIDAsMSA2LDE5TTgsMTlIMTZWMTIuMkwxMC40Niw5SDhWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlRm9yZXZlciA9IFwiTTYsMTlBMiwyIDAgMCwwIDgsMjFIMTZBMiwyIDAgMCwwIDE4LDE5VjdINlYxOU04LjQ2LDExLjg4TDkuODcsMTAuNDdMMTIsMTIuNTlMMTQuMTIsMTAuNDdMMTUuNTMsMTEuODhMMTMuNDEsMTRMMTUuNTMsMTYuMTJMMTQuMTIsMTcuNTNMMTIsMTUuNDFMOS44OCwxNy41M0w4LjQ3LDE2LjEyTDEwLjU5LDE0TDguNDYsMTEuODhNMTUuNSw0TDE0LjUsM0g5LjVMOC41LDRINVY2SDE5VjRIMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVGb3JldmVyT3V0bGluZSA9IFwiTTE0LjEyLDEwLjQ3TDEyLDEyLjU5TDkuODcsMTAuNDdMOC40NiwxMS44OEwxMC41OSwxNEw4LjQ3LDE2LjEyTDkuODgsMTcuNTNMMTIsMTUuNDFMMTQuMTIsMTcuNTNMMTUuNTMsMTYuMTJMMTMuNDEsMTRMMTUuNTMsMTEuODhMMTQuMTIsMTAuNDdNMTUuNSw0TDE0LjUsM0g5LjVMOC41LDRINVY2SDE5VjRIMTUuNU02LDE5QTIsMiAwIDAsMCA4LDIxSDE2QTIsMiAwIDAsMCAxOCwxOVY3SDZWMTlNOCw5SDE2VjE5SDhWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVPZmYgPSBcIk0yIDUuMjdMMy4yOCA0TDUgNS43Mkw1LjI4IDZMNi4yOCA3TDE4IDE4LjcyTDIwIDIwLjcyTDE4LjczIDIyTDE3LjI3IDIwLjU0QzE2LjkzIDIwLjgzIDE2LjUgMjEgMTYgMjFIOEM2LjkgMjEgNiAyMC4xIDYgMTlWOS4yN0wyIDUuMjdNMTkgNFY2SDcuODJMNS44MiA0SDguNUw5LjUgM0gxNC41TDE1LjUgNEgxOU0xOCA3VjE2LjE4TDguODIgN0gxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVPZmZPdXRsaW5lID0gXCJNMiA1LjI3TDMuMjggNEw1IDUuNzJMNS4yOCA2TDYuMjggN0w4LjI4IDlMMTYgMTYuNzJMMTggMTguNzJMMjAgMjAuNzJMMTguNzMgMjJMMTcuMjcgMjAuNTRDMTYuOTMgMjAuODMgMTYuNSAyMSAxNiAyMUg4QzYuOSAyMSA2IDIwLjEgNiAxOVY5LjI3TDIgNS4yN004IDE5SDE1LjczTDggMTEuMjdWMTlNMTggN1YxNi4xOEwxNiAxNC4xOFY5SDEwLjgyTDguODIgN0gxOE0xNS41IDRIMTlWNkg3LjgyTDUuODIgNEg4LjVMOS41IDNIMTQuNUwxNS41IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlT3V0bGluZSA9IFwiTTYsMTlBMiwyIDAgMCwwIDgsMjFIMTZBMiwyIDAgMCwwIDE4LDE5VjdINlYxOU04LDlIMTZWMTlIOFY5TTE1LjUsNEwxNC41LDNIOS41TDguNSw0SDVWNkgxOVY0SDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlUmVzdG9yZSA9IFwiTTE0LDE0SDE2TDEyLDEwTDgsMTRIMTBWMThIMTRWMTRNNiw3SDE4VjE5QzE4LDE5LjUgMTcuOCwyMCAxNy4zOSwyMC4zOUMxNywyMC44IDE2LjUsMjEgMTYsMjFIOEM3LjUsMjEgNywyMC44IDYuNjEsMjAuMzlDNi4yLDIwIDYsMTkuNSA2LDE5VjdNMTksNFY2SDVWNEg4LjVMOS41LDNIMTQuNUwxNS41LDRIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVsZXRlU3dlZXAgPSBcIk0xNSwxNkgxOVYxOEgxNVYxNk0xNSw4SDIyVjEwSDE1VjhNMTUsMTJIMjFWMTRIMTVWMTJNMywxOEEyLDIgMCAwLDAgNSwyMEgxMUEyLDIgMCAwLDAgMTMsMThWOEgzVjE4TTE0LDVIMTFMMTAsNEg2TDUsNUgyVjdIMTRWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZWxldGVTd2VlcE91dGxpbmUgPSBcIk0xNSwxNkgxOVYxOEgxNVYxNk0xNSw4SDIyVjEwSDE1VjhNMTUsMTJIMjFWMTRIMTVWMTJNMTEsMTBWMThINVYxMEgxMU0xMyw4SDNWMThBMiwyIDAgMCwwIDUsMjBIMTFBMiwyIDAgMCwwIDEzLDE4VjhNMTQsNUgxMUwxMCw0SDZMNSw1SDJWN0gxNFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbGV0ZVZhcmlhbnQgPSBcIk0yMS4wMywzTDE4LDIwLjMxQzE3LjgzLDIxLjI3IDE3LDIyIDE2LDIySDhDNywyMiA2LjE3LDIxLjI3IDYsMjAuMzFMMi45NywzSDIxLjAzTTUuMzYsNUw4LDIwSDE2TDE4LjY0LDVINS4zNk05LDE4VjE0SDEzVjE4SDlNMTMsMTMuMThMOS44MiwxMEwxMyw2LjgyTDE2LjE4LDEwTDEzLDEzLjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURlbHRhID0gXCJNMTIsNy43N0wxOC4zOSwxOEg1LjYxTDEyLDcuNzdNMTIsNEwyLDIwSDIyXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVzayA9IFwiTTMgNkgyMUMyMS41NSA2IDIyIDYuNDUgMjIgN0MyMiA3LjU1IDIxLjU1IDggMjEgOFYxOUgxOVYxN0gxNVYxOUgxM1Y4SDVWMTlIM1Y4QzIuNDUgOCAyIDcuNTUgMiA3QzIgNi40NSAyLjQ1IDYgMyA2TTE2IDEwLjVWMTFIMThWMTAuNUMxOCAxMC4yMiAxNy43OCAxMCAxNy41IDEwSDE2LjVDMTYuMjIgMTAgMTYgMTAuMjIgMTYgMTAuNU0xNiAxNC41VjE1SDE4VjE0LjVDMTggMTQuMjIgMTcuNzggMTQgMTcuNSAxNEgxNi41QzE2LjIyIDE0IDE2IDE0LjIyIDE2IDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVza0xhbXAgPSBcIk0xMC44NSwyTDkuMTgsNC41TDEwLjMyLDUuMjVMNy4xNCwxMEM3LjEsMTAgNy4wNSwxMCA3LDEwQTIsMiAwIDAsMCA1LDEyQzUsMTIuOTQgNS42NiwxMy43NSA2LjU4LDEzLjk1TDEwLjYyLDIwSDdWMjJIMTdWMjBIMTNMOC41MywxMy4yOEM4LjgzLDEyLjkyIDksMTIuNDcgOSwxMkM5LDExLjcgOC45MywxMS40IDguOCwxMS4xM0wxMiw2LjM3QzExLjc4LDguMDUgMTIuNzUsOS44OSAxNC40NSwxMUwxOC44OSw0LjM3QzE3LjIsMy4yNCAxNS4xMiwzLjA0IDEzLjY1LDMuODdMMTAuODUsMk0xOC4zMyw3TDE2LjY3LDkuNUMxNy4zNSw5Ljk1IDE4LjI5LDkuNzcgMTguNzUsOS4wOEMxOS4yMSw4LjM5IDE5LDcuNDYgMTguMzMsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlEZXNrcGhvbmUgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTE1LDVWMTlIMTlWNUgxNU01LDVWOUgxM1Y1SDVNNSwxMVYxM0g3VjExSDVNOCwxMVYxM0gxMFYxMUg4TTExLDExVjEzSDEzVjExSDExTTUsMTRWMTZIN1YxNEg1TTgsMTRWMTZIMTBWMTRIOE0xMSwxNFYxNkgxM1YxNEgxMU0xMSwxN1YxOUgxM1YxN0gxMU04LDE3VjE5SDEwVjE3SDhNNSwxN1YxOUg3VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVza3RvcENsYXNzaWMgPSBcIk02LDJDNC44OSwyIDQsMi44OSA0LDRWMTJDNCwxMy4xMSA0Ljg5LDE0IDYsMTRIMThDMTkuMTEsMTQgMjAsMTMuMTEgMjAsMTJWNEMyMCwyLjg5IDE5LjExLDIgMTgsMkg2TTYsNEgxOFYxMkg2VjRNNCwxNUMyLjg5LDE1IDIsMTUuODkgMiwxN1YyMEMyLDIxLjExIDIuODksMjIgNCwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFYxN0MyMiwxNS44OSAyMS4xMSwxNSAyMCwxNUg0TTgsMTdIMjBWMjBIOFYxN005LDE3Ljc1VjE5LjI1SDEzVjE3Ljc1SDlNMTUsMTcuNzVWMTkuMjVIMTlWMTcuNzVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGVza3RvcE1hYyA9IFwiTTIxLDE0SDNWNEgyMU0yMSwySDNDMS44OSwyIDEsMi44OSAxLDRWMTZBMiwyIDAgMCwwIDMsMThIMTBMOCwyMVYyMkgxNlYyMUwxNCwxOEgyMUEyLDIgMCAwLDAgMjMsMTZWNEMyMywyLjg5IDIyLjEsMiAyMSwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURlc2t0b3BNYWNEYXNoYm9hcmQgPSBcIk0yMSwxNFY0SDNWMTRIMjFNMjEsMkEyLDIgMCAwLDEgMjMsNFYxNkEyLDIgMCAwLDEgMjEsMThIMTRMMTYsMjFWMjJIOFYyMUwxMCwxOEgzQzEuODksMTggMSwxNy4xIDEsMTZWNEMxLDIuODkgMS44OSwyIDMsMkgyMU00LDVIMTVWMTBINFY1TTE2LDVIMjBWN0gxNlY1TTIwLDhWMTNIMTZWOEgyME00LDExSDlWMTNINFYxMU0xMCwxMUgxNVYxM0gxMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlEZXNrdG9wVG93ZXIgPSBcIk04LDJIMTZBMiwyIDAgMCwxIDE4LDRWMjBBMiwyIDAgMCwxIDE2LDIySDhBMiwyIDAgMCwxIDYsMjBWNEEyLDIgMCAwLDEgOCwyTTgsNFY2SDE2VjRIOE0xNiw4SDhWMTBIMTZWOE0xNiwxOEgxNFYyMEgxNlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEZXNrdG9wVG93ZXJNb25pdG9yID0gXCJNMjIsMThIMTdBMSwxIDAgMCwxIDE2LDE3VjdBMSwxIDAgMCwxIDE3LDZIMjJBMSwxIDAgMCwxIDIzLDdWMTdBMSwxIDAgMCwxIDIyLDE4TTIyLDhIMTdWOUgyMlY4TTIyLDEwSDE3VjExSDIyVjEwTTksMTVWMTdIMTBWMThINVYxN0g2VjE1SDJBMSwxIDAgMCwxIDEsMTRWN0ExLDEgMCAwLDEgMiw2SDEzQTEsMSAwIDAsMSAxNCw3VjE0QTEsMSAwIDAsMSAxMywxNUg5TTEyLDhIM1YxM0gxMlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURldGFpbHMgPSBcIk02LjM4LDZIMTcuNjNMMTIsMTZMNi4zOCw2TTMsNEwxMiwyMEwyMSw0SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGV2VG8gPSBcIk03LjczIDExLjkzQzcuNzMgMTMuNjUgNy43MSAxMy43NiA3LjUgMTRDNy4zMSAxNC4xNyA3LjEyIDE0LjIzIDYuNzQgMTQuMjNMNi4yMyAxNC4yNEw2LjIgMTEuOTdMNi4xOCA5LjdINi43QzcuMDUgOS43IDcuMyA5Ljc3IDcuNDcgOS45MUM3LjcxIDEwLjEyIDcuNzMgMTAuMTYgNy43MyAxMS45M00yMiA3LjVWMTYuNUMyMiAxNy42MSAyMS4xMSAxOC41IDIwIDE4LjVINEMyLjg5IDE4LjUgMiAxNy42MSAyIDE2LjVWNy41QzIgNi4zOSAyLjg5IDUuNSA0IDUuNUgyMEMyMS4xMSA1LjUgMjIgNi4zOSAyMiA3LjVNOC45MyAxMS43M0M4LjkgOS44OSA4Ljg4IDkuNzQgOC42NCA5LjM0QzguMjQgOC42NiA3Ljc5IDguNSA2LjI4IDguNUg1VjE1LjVINi4yMUM3LjU0IDE1LjUgOC4xIDE1LjMzIDguNSAxNC43OUM4LjkxIDE0LjI2IDkgMTMuODEgOC45MyAxMS43M00xMy4xMiA4LjVIMTEuNjRDMTAuMTUgOC41IDEwLjE0IDguNSA5LjkzIDguNzhTOS43IDkuMjEgOS43IDEyVjE0Ljk2TDkuOTcgMTUuMjNDMTAuMjIgMTUuNSAxMC4yOCAxNS41IDExLjY4IDE1LjVIMTMuMTJWMTQuMzFMMTIuMDMgMTQuMjdMMTAuOTMgMTQuMjRWMTIuNkwxMS42MSAxMi41N0wxMi4yNyAxMi41M1YxMS4zNEgxMC44OFY5LjdIMTMuMTJWOC41TTE5IDguNTZDMTkgOC41IDE4LjcgOC41IDE4LjM0IDguNUwxNy42NiA4LjU2TDE3LjA3IDEwLjkxQzE2LjY5IDEyLjM5IDE2LjQ1IDEzLjE4IDE2LjQgMTMuMDRDMTYuMzIgMTIuNzcgMTUuMjYgOC42IDE1LjI2IDguNTVDMTUuMjYgOC41IDE0Ljk1IDguNSAxNC41OCA4LjVIMTMuODlMMTQuMyAxMC4wNUMxNC41IDEwLjkyIDE0Ljg5IDEyLjMzIDE1LjExIDEzLjJDMTUuNDUgMTQuNTUgMTUuNTcgMTQuODUgMTUuODYgMTUuMTRDMTYuMDYgMTUuMzYgMTYuMzEgMTUuNSAxNi40NyAxNS41QzE2LjggMTUuNSAxNy4yMyAxNS4xNiAxNy4zNyAxNC43N0MxNy41IDE0LjUgMTkgOC42OSAxOSA4LjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURldmVsb3BlckJvYXJkID0gXCJNMjIsOVY3SDIwVjVBMiwyIDAgMCwwIDE4LDNINEEyLDIgMCAwLDAgMiw1VjE5QTIsMiAwIDAsMCA0LDIxSDE4QTIsMiAwIDAsMCAyMCwxOVYxN0gyMlYxNUgyMFYxM0gyMlYxMUgyMFY5SDIyTTE4LDE5SDRWNUgxOFYxOU02LDEzSDExVjE3SDZWMTNNMTIsN0gxNlYxMEgxMlY3TTYsN0gxMVYxMkg2VjdNMTIsMTFIMTZWMTdIMTJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGV2aWFudGFydCA9IFwiTTYsNkgxMkwxNCwySDE4VjZMMTQuNSwxM0gxOFYxOEgxMkwxMCwyMkg2VjE4TDkuNSwxMUg2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGV2aWNlcyA9IFwiTTMgNkgyMVY0SDNDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEg3VjE4SDNWNk0xMyAxMkg5VjEzLjc4QzguMzkgMTQuMzMgOCAxNS4xMSA4IDE2QzggMTYuODkgOC4zOSAxNy42NyA5IDE4LjIyVjIwSDEzVjE4LjIyQzEzLjYxIDE3LjY3IDE0IDE2Ljg4IDE0IDE2UzEzLjYxIDE0LjMzIDEzIDEzLjc4VjEyTTExIDE3LjVDMTAuMTcgMTcuNSA5LjUgMTYuODMgOS41IDE2UzEwLjE3IDE0LjUgMTEgMTQuNSAxMi41IDE1LjE3IDEyLjUgMTYgMTEuODMgMTcuNSAxMSAxNy41TTIyIDhIMTZDMTUuNSA4IDE1IDguNSAxNSA5VjE5QzE1IDE5LjUgMTUuNSAyMCAxNiAyMEgyMkMyMi41IDIwIDIzIDE5LjUgMjMgMTlWOUMyMyA4LjUgMjIuNSA4IDIyIDhNMjEgMThIMTdWMTBIMjFWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhYmV0ZXMgPSBcIk0xNC43MyAyLjI5QTEgMSAwIDAgMSAxNi4xNCAzLjdMMTMgNi43OUwxMy43NiA3Ljc0TDE1LjcgMTIuNzRBMS40NiAxLjQ2IDAgMCAxIDE1LjM2IDE0LjI5TDEyLjI3IDE3LjM4QTEuNTUgMS41NSAwIDAgMSAxMC4xNSAxNy4zOEw1LjU1IDEyLjc4QTEuMzcgMS4zNyAwIDAgMSA1LjE1IDExLjc4TDQuNjUgNS4zNEg1LjcyQTEgMSAwIDAgMSA2LjQ3IDUuNjRMNi42MSA1LjgxTDcuNjYgOS4yOU03LjY2IDIyTDIgMTYuMzZMNC4xMiAxNC4yNEw5Ljc4IDE5LjlNMTkuNSA0LjVTMTcgNy4yNiAxNyA5QTIuNSAyLjUgMCAxIDAgMjIgOUMyMiA3LjI2IDE5LjUgNC41IDE5LjUgNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpYWxwYWQgPSBcIk0xMiwxOUEyLDIgMCAwLDAgMTAsMjFBMiwyIDAgMCwwIDEyLDIzQTIsMiAwIDAsMCAxNCwyMUEyLDIgMCAwLDAgMTIsMTlNNiwxQTIsMiAwIDAsMCA0LDNBMiwyIDAgMCwwIDYsNUEyLDIgMCAwLDAgOCwzQTIsMiAwIDAsMCA2LDFNNiw3QTIsMiAwIDAsMCA0LDlBMiwyIDAgMCwwIDYsMTFBMiwyIDAgMCwwIDgsOUEyLDIgMCAwLDAgNiw3TTYsMTNBMiwyIDAgMCwwIDQsMTVBMiwyIDAgMCwwIDYsMTdBMiwyIDAgMCwwIDgsMTVBMiwyIDAgMCwwIDYsMTNNMTgsNUEyLDIgMCAwLDAgMjAsM0EyLDIgMCAwLDAgMTgsMUEyLDIgMCAwLDAgMTYsM0EyLDIgMCAwLDAgMTgsNU0xMiwxM0EyLDIgMCAwLDAgMTAsMTVBMiwyIDAgMCwwIDEyLDE3QTIsMiAwIDAsMCAxNCwxNUEyLDIgMCAwLDAgMTIsMTNNMTgsMTNBMiwyIDAgMCwwIDE2LDE1QTIsMiAwIDAsMCAxOCwxN0EyLDIgMCAwLDAgMjAsMTVBMiwyIDAgMCwwIDE4LDEzTTE4LDdBMiwyIDAgMCwwIDE2LDlBMiwyIDAgMCwwIDE4LDExQTIsMiAwIDAsMCAyMCw5QTIsMiAwIDAsMCAxOCw3TTEyLDdBMiwyIDAgMCwwIDEwLDlBMiwyIDAgMCwwIDEyLDExQTIsMiAwIDAsMCAxNCw5QTIsMiAwIDAsMCAxMiw3TTEyLDFBMiwyIDAgMCwwIDEwLDNBMiwyIDAgMCwwIDEyLDVBMiwyIDAgMCwwIDE0LDNBMiwyIDAgMCwwIDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbWV0ZXIgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNywxNVYxM0g3VjE1TDQsMTJMNyw5VjExSDE3VjlMMjAsMTJMMTcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbWV0ZXJPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNiwxNVYxM0g4VjE1TDUsMTJMOCw5VjExSDE2VjlMMTksMTJMMTYsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbWV0ZXJWYXJpYW50ID0gXCJNNC4xNSwyMS40Nkw1LjQ3LDE5LjU4QzMuMzUsMTcuNzQgMiwxNS4wMyAyLDEyQTEwLDEwIDAgMCwxIDEyLDJDMTMuNzgsMiAxNS40NCwyLjQ2IDE2Ljg5LDMuMjdMMTguMjEsMS4zOUwxOS44NSwyLjU0TDE4LjUzLDQuNDJDMjAuNjUsNi4yNiAyMiw4Ljk3IDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQzEwLjIyLDIyIDguNTYsMjEuNTQgNy4xMSwyMC43M0w1Ljc5LDIyLjYxTDQuMTUsMjEuNDZNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjM1IDUsMTYuNDYgNi42MywxNy45M0wxNS43Myw0LjkyQzE0LjYyLDQuMzMgMTMuMzUsNCAxMiw0TTEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCw5LjY1IDE5LDcuNTQgMTcuMzcsNi4wN0w4LjI3LDE5LjA4QzkuMzgsMTkuNjcgMTAuNjUsMjAgMTIsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbW9uZCA9IFwiTTYsMkwyLDhMMTIsMjJMMjIsOEwxOCwySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlhbW9uZE91dGxpbmUgPSBcIk0xOCwySDZMMiw4TDEyLDIyTDIyLDhMMTgsMk00LjQzLDhMNy4wNyw0SDE2LjkzTDE5LjU3LDhMMTIsMTguNTZMNC40Myw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpYW1vbmRTdG9uZSA9IFwiTTE2LDlIMTlMMTQsMTZNMTAsOUgxNEwxMiwxN001LDlIOEwxMCwxNk0xNSw0SDE3TDE5LDdIMTZNMTEsNEgxM0wxNCw3SDEwTTcsNEg5TDgsN0g1TTYsMkwyLDhMMTIsMjJMMjIsOEwxOCwySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTEgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlMU91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjkgMjAuMTEgMyAxOSAzTTEyIDEwLjVDMTEuMTcgMTAuNSAxMC41IDExLjE3IDEwLjUgMTJTMTEuMTcgMTMuNSAxMiAxMy41IDEzLjUgMTIuODMgMTMuNSAxMiAxMi44MyAxMC41IDEyIDEwLjVcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlMiA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVNMTcsMTVBMiwyIDAgMCwwIDE1LDE3QTIsMiAwIDAsMCAxNywxOUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDE3LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2UyT3V0bGluZSA9IFwiTTE5IDVWMTlINVY1SDE5TTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xMSAzLjkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNNNy41IDZDNi42NyA2IDYgNi42NyA2IDcuNVM2LjY3IDkgNy41IDkgOSA4LjMzIDkgNy41IDguMzMgNiA3LjUgNk0xNi41IDE1QzE1LjY3IDE1IDE1IDE1LjY3IDE1IDE2LjVDMTUgMTcuMzMgMTUuNjcgMTggMTYuNSAxOEMxNy4zMyAxOCAxOCAxNy4zMyAxOCAxNi41QzE4IDE1LjY3IDE3LjMzIDE1IDE2LjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTMgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME03LDVBMiwyIDAgMCwwIDUsN0EyLDIgMCAwLDAgNyw5QTIsMiAwIDAsMCA5LDdBMiwyIDAgMCwwIDcsNU0xNywxNUEyLDIgMCAwLDAgMTUsMTdBMiwyIDAgMCwwIDE3LDE5QTIsMiAwIDAsMCAxOSwxN0EyLDIgMCAwLDAgMTcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTNPdXRsaW5lID0gXCJNMTkgNVYxOUg1VjVIMTlNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTEyIDEwLjVDMTEuMiAxMC41IDEwLjUgMTEuMiAxMC41IDEyUzExLjIgMTMuNSAxMiAxMy41IDEzLjUgMTIuOCAxMy41IDEyIDEyLjggMTAuNSAxMiAxMC41TTcuNSA2QzYuNyA2IDYgNi43IDYgNy41UzYuNyA5IDcuNSA5IDkgOC4zIDkgNy41IDguMyA2IDcuNSA2TTE2LjUgMTVDMTUuNyAxNSAxNSAxNS43IDE1IDE2LjVDMTUgMTcuMyAxNS43IDE4IDE2LjUgMThDMTcuMyAxOCAxOCAxNy4zIDE4IDE2LjVDMTggMTUuNyAxNy4zIDE1IDE2LjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTQgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzTTcsNUEyLDIgMCAwLDAgNSw3QTIsMiAwIDAsMCA3LDlBMiwyIDAgMCwwIDksN0EyLDIgMCAwLDAgNyw1TTE3LDE1QTIsMiAwIDAsMCAxNSwxN0EyLDIgMCAwLDAgMTcsMTlBMiwyIDAgMCwwIDE5LDE3QTIsMiAwIDAsMCAxNywxNU0xNyw1QTIsMiAwIDAsMCAxNSw3QTIsMiAwIDAsMCAxNyw5QTIsMiAwIDAsMCAxOSw3QTIsMiAwIDAsMCAxNyw1TTcsMTVBMiwyIDAgMCwwIDUsMTdBMiwyIDAgMCwwIDcsMTlBMiwyIDAgMCwwIDksMTdBMiwyIDAgMCwwIDcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTRPdXRsaW5lID0gXCJNMTkgNVYxOUg1VjVIMTlNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy45IDIwLjExIDMgMTkgM003LjUgNkM2LjY3IDYgNiA2LjY3IDYgNy41UzYuNjcgOSA3LjUgOSA5IDguMzMgOSA3LjUgOC4zMyA2IDcuNSA2TTE2LjUgMTVDMTUuNjcgMTUgMTUgMTUuNjcgMTUgMTYuNUMxNSAxNy4zMyAxNS42NyAxOCAxNi41IDE4QzE3LjMzIDE4IDE4IDE3LjMzIDE4IDE2LjVDMTggMTUuNjcgMTcuMzMgMTUgMTYuNSAxNU0xNi41IDZDMTUuNjcgNiAxNSA2LjY3IDE1IDcuNVMxNS42NyA5IDE2LjUgOUMxNy4zMyA5IDE4IDguMzMgMTggNy41UzE3LjMzIDYgMTYuNSA2TTcuNSAxNUM2LjY3IDE1IDYgMTUuNjcgNiAxNi41QzYgMTcuMzMgNi42NyAxOCA3LjUgMThTOSAxNy4zMyA5IDE2LjVDOSAxNS42NyA4LjMzIDE1IDcuNSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlNSA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVNMTcsMTVBMiwyIDAgMCwwIDE1LDE3QTIsMiAwIDAsMCAxNywxOUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDE3LDE1TTE3LDVBMiwyIDAgMCwwIDE1LDdBMiwyIDAgMCwwIDE3LDlBMiwyIDAgMCwwIDE5LDdBMiwyIDAgMCwwIDE3LDVNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwTTcsMTVBMiwyIDAgMCwwIDUsMTdBMiwyIDAgMCwwIDcsMTlBMiwyIDAgMCwwIDksMTdBMiwyIDAgMCwwIDcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZTVPdXRsaW5lID0gXCJNMTkgNVYxOUg1VjVIMTlNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTcuNSA2QzYuNyA2IDYgNi43IDYgNy41UzYuNyA5IDcuNSA5IDkgOC4zIDkgNy41IDguMyA2IDcuNSA2TTE2LjUgMTVDMTUuNyAxNSAxNSAxNS43IDE1IDE2LjVDMTUgMTcuMyAxNS43IDE4IDE2LjUgMThDMTcuMyAxOCAxOCAxNy4zIDE4IDE2LjVDMTggMTUuNyAxNy4zIDE1IDE2LjUgMTVNMTYuNSA2QzE1LjcgNiAxNSA2LjcgMTUgNy41UzE1LjcgOSAxNi41IDlDMTcuMyA5IDE4IDguMyAxOCA3LjVTMTcuMyA2IDE2LjUgNk0xMiAxMC41QzExLjIgMTAuNSAxMC41IDExLjIgMTAuNSAxMlMxMS4yIDEzLjUgMTIgMTMuNSAxMy41IDEyLjggMTMuNSAxMiAxMi44IDEwLjUgMTIgMTAuNU03LjUgMTVDNi43IDE1IDYgMTUuNyA2IDE2LjVDNiAxNy4zIDYuNyAxOCA3LjUgMThTOSAxNy4zIDkgMTYuNUM5IDE1LjcgOC4zIDE1IDcuNSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlNiA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVNMTcsMTVBMiwyIDAgMCwwIDE1LDE3QTIsMiAwIDAsMCAxNywxOUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDE3LDE1TTE3LDEwQTIsMiAwIDAsMCAxNSwxMkEyLDIgMCAwLDAgMTcsMTRBMiwyIDAgMCwwIDE5LDEyQTIsMiAwIDAsMCAxNywxME0xNyw1QTIsMiAwIDAsMCAxNSw3QTIsMiAwIDAsMCAxNyw5QTIsMiAwIDAsMCAxOSw3QTIsMiAwIDAsMCAxNyw1TTcsMTBBMiwyIDAgMCwwIDUsMTJBMiwyIDAgMCwwIDcsMTRBMiwyIDAgMCwwIDksMTJBMiwyIDAgMCwwIDcsMTBNNywxNUEyLDIgMCAwLDAgNSwxN0EyLDIgMCAwLDAgNywxOUEyLDIgMCAwLDAgOSwxN0EyLDIgMCAwLDAgNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlNk91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNNy41IDZDNi43IDYgNiA2LjcgNiA3LjVTNi43IDkgNy41IDkgOSA4LjMgOSA3LjUgOC4zIDYgNy41IDZNMTYuNSAxNUMxNS43IDE1IDE1IDE1LjcgMTUgMTYuNUMxNSAxNy4zIDE1LjcgMTggMTYuNSAxOEMxNy4zIDE4IDE4IDE3LjMgMTggMTYuNUMxOCAxNS43IDE3LjMgMTUgMTYuNSAxNU0xNi41IDEwLjVDMTUuNyAxMC41IDE1IDExLjIgMTUgMTJTMTUuNyAxMy41IDE2LjUgMTMuNUMxNy4zIDEzLjUgMTggMTIuOCAxOCAxMlMxNy4zIDEwLjUgMTYuNSAxMC41TTE2LjUgNkMxNS43IDYgMTUgNi43IDE1IDcuNVMxNS43IDkgMTYuNSA5QzE3LjMgOSAxOCA4LjMgMTggNy41UzE3LjMgNiAxNi41IDZNNy41IDEwLjVDNi43IDEwLjUgNiAxMS4yIDYgMTJTNi43IDEzLjUgNy41IDEzLjUgOSAxMi44IDkgMTIgOC4zIDEwLjUgNy41IDEwLjVNNy41IDE1QzYuNyAxNSA2IDE1LjcgNiAxNi41QzYgMTcuMyA2LjcgMTggNy41IDE4UzkgMTcuMyA5IDE2LjVDOSAxNS43IDguMyAxNSA3LjUgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQxMCA9IFwiTTEyIDJDMTEuNSAyIDExIDIuMTkgMTAuNTkgMi41OUwyLjU5IDEwLjU5QzEuOCAxMS4zNyAxLjggMTIuNjMgMi41OSAxMy40MUwxMC41OSAyMS40MUMxMS4zNyAyMi4yIDEyLjYzIDIyLjIgMTMuNDEgMjEuNDFMMjEuNDEgMTMuNDFDMjIuMiAxMi42MyAyMi4yIDExLjM3IDIxLjQxIDEwLjU5TDEzLjQxIDIuNTlDMTMgMi4xOSAxMi41IDIgMTIgMk0xNC4wNyA4LjIxQzE1LjUgOC4yMSAxNi42NCA5LjM2IDE2LjY0IDEwLjc4VjEzLjQyQzE2LjY0IDE0Ljg0IDE1LjUgMTYgMTQuMDcgMTZDMTIuNjQgMTYgMTEuNSAxNC44NCAxMS41IDEzLjQyVjEwLjc4QzExLjUgOS4zNiAxMi42NSA4LjIxIDE0LjA3IDguMjFNMTAuMzYgOC40MUgxMC41VjE2SDlWMTAuMjFMNy4yMiAxMC43NlY5LjUzTDEwLjM2IDguNDFNMTQuMDYgOS42NUMxMy40NyA5LjY1IDEzIDEwLjEzIDEzIDEwLjcxVjEzLjVDMTMgMTQuMDcgMTMuNDcgMTQuNTQgMTQuMDYgMTQuNTRDMTQuNjQgMTQuNTQgMTUuMTQgMTQuMDYgMTUuMTQgMTMuNVYxMC43MUMxNS4xNCAxMC4xMiAxNC42NCA5LjY1IDE0LjA2IDkuNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQxME91dGxpbmUgPSBcIk0xMC41IDE2SDlWMTAuMjFMNy4yMiAxMC43NlY5LjUzTDEwLjM2IDguNDFIMTAuNVYxNk0xNC4wNyA4LjIxQzE1LjUgOC4yMSAxNi42NCA5LjM2IDE2LjY0IDEwLjc4VjEzLjQyQzE2LjY0IDE0Ljg0IDE1LjUgMTYgMTQuMDcgMTZDMTIuNjQgMTYgMTEuNSAxNC44NCAxMS41IDEzLjQyVjEwLjc4QzExLjUgOS4zNiAxMi42NSA4LjIxIDE0LjA3IDguMjFNMTQuMDYgOS42NUMxMy40NyA5LjY1IDEzIDEwLjEzIDEzIDEwLjcxVjEzLjVDMTMgMTQuMDcgMTMuNDcgMTQuNTQgMTQuMDYgMTQuNTRDMTQuNjQgMTQuNTQgMTUuMTQgMTQuMDYgMTUuMTQgMTMuNVYxMC43MUMxNS4xNCAxMC4xMiAxNC42NCA5LjY1IDE0LjA2IDkuNjVNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTEyIDRMMjAgMTJMMTIgMjBMNCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDEyID0gXCJNMTIgMkwxLjUgOS42NEw1LjUgMjJIMTguNUwyMi41IDkuNjRMMTIgMk0xMC41IDE3SDguODlWMTAuODlMNyAxMS40N1YxMC4xOUwxMC4zMSA5SDEwLjVWMTdNMTcgMTdIMTEuNjZWMTUuOTFDMTEuNjYgMTUuOTEgMTUuMjMgMTIuNDUgMTUuMjMgMTEuNEMxNS4yMyAxMC4xMiAxNC4xOCAxMC4yNSAxNC4xOCAxMC4yNUMxMy41IDEwLjMgMTMgMTAuODcgMTMgMTEuNTVIMTEuNDRDMTEuNSAxMC4wOSAxMi43MiA4Ljk0IDE0LjI3IDlDMTYuNzQgOSAxNi43NyAxMC44NSAxNi43NyAxMS4zQzE2Ljc3IDEzLjA3IDEzLjU4IDE1Ljc3IDEzLjU4IDE1Ljc3TDE3IDE1Ljc1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2VEMTJPdXRsaW5lID0gXCJNMTIsMkwxLjUsOS42NEw1LjUsMjJIMTguNUwyMi41LDkuNjRMMTIsMk0xNywyMEg3TDMuODUsMTAuNEwxMiw0LjQ3TDIwLjE1LDEwLjRMMTcsMjBNMTcsMTUuNzVWMTdIMTEuNjZWMTUuOTFDMTEuNjYsMTUuOTEgMTUuMjMsMTIuNDUgMTUuMjMsMTEuNEMxNS4yMywxMC4xMiAxNC4xOCwxMC4yNSAxNC4xOCwxMC4yNUMxMy41LDEwLjMgMTMsMTAuODcgMTMsMTEuNTVIMTEuNDRDMTEuNSwxMC4wOSAxMi43Miw4Ljk0IDE0LjI3LDlDMTYuNzQsOSAxNi43NywxMC44NSAxNi43NywxMS4zQzE2Ljc3LDEzLjA3IDEzLjU4LDE1Ljc3IDEzLjU4LDE1Ljc3TDE3LDE1Ljc1TTEwLjUsMTdIOC44OVYxMC44OUw3LDExLjQ3VjEwLjE5TDEwLjMxLDlIMTAuNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDIwID0gXCJNMjAuNDcgNi42MkwxMi41NyAyLjE4QzEyLjQxIDIuMDYgMTIuMjEgMiAxMiAyUzExLjU5IDIuMDYgMTEuNDMgMi4xOEwzLjUzIDYuNjJDMy4yMSA2Ljc5IDMgNy4xMiAzIDcuNVYxNi41QzMgMTYuODggMy4yMSAxNy4yMSAzLjUzIDE3LjM4TDExLjQzIDIxLjgyQzExLjU5IDIxLjk0IDExLjc5IDIyIDEyIDIyUzEyLjQxIDIxLjk0IDEyLjU3IDIxLjgyTDIwLjQ3IDE3LjM4QzIwLjc5IDE3LjIxIDIxIDE2Ljg4IDIxIDE2LjVWNy41QzIxIDcuMTIgMjAuNzkgNi43OSAyMC40NyA2LjYyTTExLjQ1IDE1Ljk2TDYuMzEgMTUuOTNWMTQuOTFDNi4zMSAxNC45MSA5Ljc0IDExLjU4IDkuNzUgMTAuNTdDOS43NSA5LjMzIDguNzMgOS40NiA4LjczIDkuNDZTNy43NSA5LjUgNy42NCAxMC43MUw2LjE0IDEwLjc2QzYuMTQgMTAuNzYgNi4xOCA4LjI2IDguODMgOC4yNkMxMS4yIDguMjYgMTEuMjMgMTAuMDQgMTEuMjMgMTAuNUMxMS4yMyAxMi4xOCA4LjE1IDE0Ljc3IDguMTUgMTQuNzdMMTEuNDUgMTQuNzZWMTUuOTZNMTcuNSAxMy41QzE3LjUgMTQuOSAxNi4zNSAxNi4wNSAxNC45MyAxNi4wNUMxMy41IDE2LjA1IDEyLjM2IDE0LjkgMTIuMzYgMTMuNVYxMC44NEMxMi4zNiA5LjQyIDEzLjUgOC4yNyAxNC45MyA4LjI3UzE3LjUgOS40MiAxNy41IDEwLjg0VjEzLjVNMTYgMTAuNzdWMTMuNTNDMTYgMTQuMTIgMTUuNSAxNC42IDE0LjkyIDE0LjZDMTQuMzQgMTQuNiAxMy44NiAxNC4xMiAxMy44NiAxMy41M1YxMC43N0MxMy44NiAxMC4xOCAxNC4zNCA5LjcxIDE0LjkyIDkuNzFDMTUuNSA5LjcxIDE2IDEwLjE4IDE2IDEwLjc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2VEMjBPdXRsaW5lID0gXCJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUw1LDguMDlWMTUuOTFMMTIsMTkuODVMMTksMTUuOTFWOC4wOUwxMiw0LjE1TTE0LjkzLDguMjdBMi41NywyLjU3IDAgMCwxIDE3LjUsMTAuODRWMTMuNUMxNy41LDE0LjkgMTYuMzUsMTYuMDUgMTQuOTMsMTYuMDVDMTMuNSwxNi4wNSAxMi4zNiwxNC45IDEyLjM2LDEzLjVWMTAuODRBMi41NywyLjU3IDAgMCwxIDE0LjkzLDguMjdNMTQuOTIsOS43MUMxNC4zNCw5LjcxIDEzLjg2LDEwLjE4IDEzLjg2LDEwLjc3VjEzLjUzQzEzLjg2LDE0LjEyIDE0LjM0LDE0LjYgMTQuOTIsMTQuNkMxNS41LDE0LjYgMTYsMTQuMTIgMTYsMTMuNTNWMTAuNzdDMTYsMTAuMTggMTUuNSw5LjcxIDE0LjkyLDkuNzFNMTEuNDUsMTQuNzZWMTUuOTZMNi4zMSwxNS45M1YxNC45MUM2LjMxLDE0LjkxIDkuNzQsMTEuNTggOS43NSwxMC41N0M5Ljc1LDkuMzMgOC43Myw5LjQ2IDguNzMsOS40NkM4LjczLDkuNDYgNy43NSw5LjUgNy42NCwxMC43MUw2LjE0LDEwLjc2QzYuMTQsMTAuNzYgNi4xOCw4LjI2IDguODMsOC4yNkMxMS4yLDguMjYgMTEuMjMsMTAuMDQgMTEuMjMsMTAuNUMxMS4yMywxMi4xOCA4LjE1LDE0Ljc3IDguMTUsMTQuNzdMMTEuNDUsMTQuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQ0ID0gXCJNMTAuMjUgMTUuMTVMMTEuOTIgMTIuNDdWMTUuMTVIMTAuMjVNMjEuOTIgMjFIMi4wOEMxLjI0IDIxIC43MiAyMC4wOCAxLjE2IDE5LjM2TDExLjA4IDMuMTNDMTEuNSAyLjQ0IDEyLjUgMi40NCAxMi45MiAzLjEzTDIyLjg0IDE5LjM2QzIzLjI4IDIwLjA4IDIyLjc2IDIxIDIxLjkyIDIxTTE0LjI5IDE1LjE1SDEzLjQzVjEwLjQySDExLjkxTDguNzUgMTUuNDFMOC44MiAxNi4zNkgxMS45MlYxOEgxMy40M1YxNi4zNkgxNC4yOVYxNS4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDRPdXRsaW5lID0gXCJNMTMuNDMsMTUuMTVIMTQuMjlWMTYuMzZIMTMuNDNWMThIMTEuOTJWMTYuMzZIOC44Mkw4Ljc1LDE1LjQxTDExLjkxLDEwLjQySDEzLjQzVjE1LjE1TTEwLjI1LDE1LjE1SDExLjkyVjEyLjQ3TDEwLjI1LDE1LjE1TTIyLDIxSDJDMS42NCwyMSAxLjMxLDIwLjgxIDEuMTMsMjAuNUMwLjk1LDIwLjE4IDAuOTYsMTkuNzkgMS4xNSwxOS41TDExLjE1LDNDMTEuNSwyLjM4IDEyLjUsMi4zOCAxMi44NiwzTDIyLjg2LDE5LjVDMjMuMDQsMTkuNzkgMjMuMDUsMjAuMTggMjIuODcsMjAuNUMyMi42OSwyMC44MSAyMi4zNiwyMSAyMiwyMU0zLjc4LDE5SDIwLjIzTDEyLDUuNDNMMy43OCwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlRDYgPSBcIk0xMy4wNSAxMy41QzEzLjA1IDE0LjI3IDEyLjYxIDE0LjgzIDEyIDE0LjgzUzEwLjg1IDE0LjI3IDEwLjg1IDEzLjVMMTAuODMgMTIuNzhDMTAuODMgMTIuNzggMTEuMjEgMTIgMTEuOTUgMTIuMUMxMi41NiAxMi4xIDEzLjA1IDEyLjczIDEzLjA1IDEzLjVNMjEgNVYxOUMyMSAyMC4xMSAyMC4xMSAyMSAxOSAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNU0xNC41NSAxMy40MUMxNC41IDExLjQ1IDEzLjE5IDEwLjg3IDEyLjUzIDEwLjg3QzExLjQxIDEwLjg3IDEwLjg2IDExLjUzIDEwLjg2IDExLjUzUzEwLjg5IDkuNSAxMy4zOSA5LjUzVjguMzNDMTMuMzkgOC4zMyA5LjMzIDcuOTQgOS4zIDEyLjY2QzkuMjcgMTYuODYgMTIuNzcgMTYgMTIuNzcgMTZTMTQuNjEgMTUuNDcgMTQuNTUgMTMuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQ2T3V0bGluZSA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINU0xMy4zOSw5LjUzQzEwLjg5LDkuNSAxMC44NiwxMS41MyAxMC44NiwxMS41M0MxMC44NiwxMS41MyAxMS40MSwxMC44NyAxMi41MywxMC44N0MxMy4xOSwxMC44NyAxNC41LDExLjQ1IDE0LjU1LDEzLjQxQzE0LjYxLDE1LjQ3IDEyLjc3LDE2IDEyLjc3LDE2QzEyLjc3LDE2IDkuMjcsMTYuODYgOS4zLDEyLjY2QzkuMzMsNy45NCAxMy4zOSw4LjMzIDEzLjM5LDguMzNWOS41M00xMS45NSwxMi4xQzExLjIxLDEyIDEwLjgzLDEyLjc4IDEwLjgzLDEyLjc4TDEwLjg1LDEzLjVDMTAuODUsMTQuMjcgMTEuMzksMTQuODMgMTIsMTQuODNDMTIuNjEsMTQuODMgMTMuMDUsMTQuMjcgMTMuMDUsMTMuNUMxMy4wNSwxMi43MyAxMi41NiwxMi4xIDExLjk1LDEyLjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZUQ4ID0gXCJNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTEyIDguMjVDMTMuMzEgOC4yNSAxNC4zOCA5LjIgMTQuMzggMTAuMzhDMTQuMzggMTEuMDcgMTQgMTEuNjggMTMuNDQgMTIuMDdDMTQuMTQgMTIuNDYgMTQuNiAxMy4xMyAxNC42IDEzLjlDMTQuNiAxNS4xMiAxMy40NCAxNi4xIDEyIDE2LjFDMTAuNTYgMTYuMSA5LjQgMTUuMTIgOS40IDEzLjlDOS40IDEzLjEzIDkuODYgMTIuNDYgMTAuNTYgMTIuMDdDMTAgMTEuNjggOS42MyAxMS4wNyA5LjYzIDEwLjM4QzkuNjMgOS4yIDEwLjY5IDguMjUgMTIgOC4yNU0xMiA5LjVDMTEuNSA5LjUgMTEuMSA5Ljk1IDExLjEgMTAuNUMxMS4xIDExLjA1IDExLjUgMTEuNSAxMiAxMS41QzEyLjUgMTEuNSAxMi45IDExLjA1IDEyLjkgMTAuNUMxMi45IDkuOTUgMTIuNSA5LjUgMTIgOS41TTEyIDEyLjY1QzExLjM5IDEyLjY1IDEwLjkgMTMuMTQgMTAuOSAxMy43NUMxMC45IDE0LjM2IDExLjM5IDE0Ljg1IDEyIDE0Ljg1QzEyLjYxIDE0Ljg1IDEzLjEgMTQuMzYgMTMuMSAxMy43NUMxMy4xIDEzLjE0IDEyLjYxIDEyLjY1IDEyIDEyLjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpY2VEOE91dGxpbmUgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNEwyMCAxMkwxMiAyMEw0IDEyTTEyIDguMjVDMTMuMzEgOC4yNSAxNC4zOCA5LjIgMTQuMzggMTAuMzhDMTQuMzggMTEuMDcgMTQgMTEuNjggMTMuNDQgMTIuMDdDMTQuMTQgMTIuNDYgMTQuNiAxMy4xMyAxNC42IDEzLjlDMTQuNiAxNS4xMiAxMy40NCAxNi4xIDEyIDE2LjFDMTAuNTYgMTYuMSA5LjQgMTUuMTIgOS40IDEzLjlDOS40IDEzLjEzIDkuODYgMTIuNDYgMTAuNTYgMTIuMDdDMTAgMTEuNjggOS42MyAxMS4wNyA5LjYzIDEwLjM4QzkuNjMgOS4yIDEwLjY5IDguMjUgMTIgOC4yNU0xMiAxMi42NUMxMS4zOSAxMi42NSAxMC45IDEzLjE0IDEwLjkgMTMuNzVDMTAuOSAxNC4zNiAxMS4zOSAxNC44NSAxMiAxNC44NUMxMi42MSAxNC44NSAxMy4xIDE0LjM2IDEzLjEgMTMuNzVDMTMuMSAxMy4xNCAxMi42MSAxMi42NSAxMiAxMi42NU0xMiA5LjVDMTEuNSA5LjUgMTEuMSA5Ljk1IDExLjEgMTAuNUMxMS4xIDExLjA1IDExLjUgMTEuNSAxMiAxMS41QzEyLjUgMTEuNSAxMi45IDExLjA1IDEyLjkgMTAuNUMxMi45IDkuOTUgMTIuNSA5LjUgMTIgOS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpRGljZU11bHRpcGxlID0gXCJNMTkuNzgsM0gxMS4yMkMxMC41NSwzIDEwLDMuNTUgMTAsNC4yMlY4SDE2VjE0SDE5Ljc4QzIwLjQ1LDE0IDIxLDEzLjQ1IDIxLDEyLjc4VjQuMjJDMjEsMy41NSAyMC40NSwzIDE5Ljc4LDNNMTIuNDQsNi42N0MxMS43Niw2LjY3IDExLjIxLDYuMTIgMTEuMjEsNS40NEMxMS4yMSw0Ljc2IDExLjc2LDQuMjEgMTIuNDQsNC4yMUExLjIzLDEuMjMgMCAwLDEgMTMuNjcsNS40NEMxMy42Nyw2LjEyIDEzLjEyLDYuNjcgMTIuNDQsNi42N00xOC41NiwxMi43OEMxNy44OCwxMi43OSAxNy4zMywxMi4yNCAxNy4zMiwxMS41NkMxNy4zMSwxMC44OCAxNy44NiwxMC4zMyAxOC41NCwxMC4zMkMxOS4yMiwxMC4zMSAxOS43NywxMC44NiAxOS43OCwxMS41NkMxOS43NywxMi4yMyAxOS4yMywxMi43NyAxOC41NiwxMi43OE0xOC41Niw2LjY3QzE3Ljg4LDYuNjggMTcuMzMsNi4xMyAxNy4zMiw1LjQ1QzE3LjMxLDQuNzcgMTcuODYsNC4yMiAxOC41NCw0LjIxQzE5LjIyLDQuMiAxOS43Nyw0Ljc1IDE5Ljc4LDUuNDRDMTkuNzgsNi4xMiAxOS4yNCw2LjY2IDE4LjU2LDYuNjdNNC4yMiwxMEgxMi43OEExLjIyLDEuMjIgMCAwLDEgMTQsMTEuMjJWMTkuNzhDMTQsMjAuNDUgMTMuNDUsMjEgMTIuNzgsMjFINC4yMkMzLjU1LDIxIDMsMjAuNDUgMywxOS43OFYxMS4yMkMzLDEwLjU1IDMuNTUsMTAgNC4yMiwxME04LjUsMTQuMjhDNy44MywxNC4yOCA3LjI4LDE0LjgzIDcuMjgsMTUuNUM3LjI4LDE2LjE3IDcuODMsMTYuNzIgOC41LDE2LjcyQzkuMTcsMTYuNzIgOS43MiwxNi4xNyA5LjcyLDE1LjVBMS4yMiwxLjIyIDAgMCwwIDguNSwxNC4yOE01LjQ0LDExLjIyQzQuNzcsMTEuMjIgNC4yMiwxMS43NyA0LjIyLDEyLjQ0QTEuMjIsMS4yMiAwIDAsMCA1LjQ0LDEzLjY2QzYuMTEsMTMuNjYgNi42NiwxMy4xMSA2LjY2LDEyLjQ0VjEyLjQ0QzYuNjYsMTEuNzcgNi4xMSwxMS4yMiA1LjQ0LDExLjIyTTExLjU1LDE3LjMzQzEwLjg4LDE3LjMzIDEwLjMzLDE3Ljg4IDEwLjMzLDE4LjU1QzEwLjMzLDE5LjIyIDEwLjg4LDE5Ljc3IDExLjU1LDE5Ljc3QTEuMjIsMS4yMiAwIDAsMCAxMi43NywxOC41NUgxMi43N0MxMi43NywxNy44OCAxMi4yMywxNy4zNCAxMS41NiwxNy4zM0gxMS41NVpcIjtcclxuZXhwb3J0IHZhciBtZGlEaWNlTXVsdGlwbGVPdXRsaW5lID0gXCJNMTQgOEMxMy40NSA4IDEzIDcuNTUgMTMgN1MxMy40NSA2IDE0IDZDMTQuNTUgNiAxNSA2LjQ1IDE1IDdDMTUgNy41NSAxNC41NSA4IDE0IDhNMTIgMTJWMTlINVYxMkgxMk0xMi43OCAxMEg0LjIyQzMuNTUgMTAgMyAxMC41NSAzIDExLjIyVjE5Ljc4QzMgMjAuNDUgMy41NSAyMSA0LjIyIDIxSDEyLjc4QzEzLjQ1IDIxIDE0IDIwLjQ1IDE0IDE5Ljc4VjExLjIyQzE0IDEwLjU1IDEzLjQ1IDEwIDEyLjc4IDEwTTE5Ljc4IDNIMTEuMjJDMTAuNTUgMyAxMCAzLjU1IDEwIDQuMjJWOEgxMlY1SDE5VjEySDE2VjE0SDE5Ljc4QzIwLjQ1IDE0IDIxIDEzLjQ1IDIxIDEyLjc4VjQuMjJDMjEgMy41NSAyMC40NSAzIDE5Ljc4IDNNMTcgOEMxNi40NSA4IDE2IDcuNTUgMTYgN1MxNi40NSA2IDE3IDZDMTcuNTUgNiAxOCA2LjQ1IDE4IDdDMTggNy41NSAxNy41NSA4IDE3IDhNMTcgMTFDMTYuNDUgMTEgMTYgMTAuNTUgMTYgMTBTMTYuNDUgOSAxNyA5QzE3LjU1IDkgMTggOS40NSAxOCAxMEMxOCAxMC41NSAxNy41NSAxMSAxNyAxMU03IDE1QzYuNDUgMTUgNiAxNC41NSA2IDE0UzYuNDUgMTMgNyAxM0M3LjU1IDEzIDggMTMuNDUgOCAxNEM4IDE0LjU1IDcuNTUgMTUgNyAxNU0xMCAxOEM5LjQ1IDE4IDkgMTcuNTUgOSAxN1M5LjQ1IDE2IDEwIDE2QzEwLjU1IDE2IDExIDE2LjQ1IDExIDE3QzExIDE3LjU1IDEwLjU1IDE4IDEwIDE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlnaXRhbE9jZWFuID0gXCJNNiAxMkgyQzIgNi41IDYuNSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJWMThIOFYxNEgxMlYxOEMxNS4zMiAxOCAxOCAxNS4zMSAxOCAxMkMxOCA4LjY5IDE1LjMxIDYgMTIgNkM4LjY5IDYgNiA4LjY5IDYgMTJNOCAxOFYyMUg1VjE4SDhNMyAxNkg1VjE4SDNWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlwU3dpdGNoID0gXCJNMyw0SDdBMSwxIDAgMCwxIDgsNVYxOUExLDEgMCAwLDEgNywyMEgzQTEsMSAwIDAsMSAyLDE5VjVBMSwxIDAgMCwxIDMsNE0xMCw0SDE0QTEsMSAwIDAsMSAxNSw1VjE5QTEsMSAwIDAsMSAxNCwyMEgxMEExLDEgMCAwLDEgOSwxOVY1QTEsMSAwIDAsMSAxMCw0TTE3LDRIMjFBMSwxIDAgMCwxIDIyLDVWMTlBMSwxIDAgMCwxIDIxLDIwSDE3QTEsMSAwIDAsMSAxNiwxOVY1QTEsMSAwIDAsMSAxNyw0TTQsMThINlYxM0g0VjE4TTExLDExSDEzVjZIMTFWMTFNMTgsMThIMjBWMTNIMThWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlyZWN0aW9ucyA9IFwiTTE0LDE0LjVWMTJIMTBWMTVIOFYxMUExLDEgMCAwLDEgOSwxMEgxNFY3LjVMMTcuNSwxMU0yMS43MSwxMS4yOUwxMi43MSwyLjI5SDEyLjdDMTIuMzEsMS45IDExLjY4LDEuOSAxMS4yOSwyLjI5TDIuMjksMTEuMjlDMS45LDExLjY4IDEuOSwxMi4zMiAyLjI5LDEyLjcxTDExLjI5LDIxLjcxQzExLjY4LDIyLjA5IDEyLjMxLDIyLjEgMTIuNzEsMjEuNzFMMjEuNzEsMTIuNzFDMjIuMSwxMi4zMiAyMi4xLDExLjY4IDIxLjcxLDExLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpcmVjdGlvbnNGb3JrID0gXCJNMyw0VjEyLjVMNiw5LjVMOSwxM0MxMCwxNCAxMCwxNSAxMCwxNVYyMUgxNFYxNEMxNCwxNCAxNCwxMyAxMy40NywxMkMxMi45NCwxMSAxMiwxMCAxMiwxMEw5LDYuNThMMTEuNSw0TTE4LDRMMTMuNTQsOC40N0wxNCw5QzE0LDkgMTQuOTMsMTAgMTUuNDcsMTFDMTUuNjgsMTEuNCAxNS44LDExLjc5IDE1Ljg3LDEyLjEzTDIxLDdcIjtcclxuZXhwb3J0IHZhciBtZGlEaXNjID0gXCJNMTIsMTRDMTAuODksMTQgMTAsMTMuMSAxMCwxMkMxMCwxMC44OSAxMC44OSwxMCAxMiwxMEMxMy4xMSwxMCAxNCwxMC44OSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc2NBbGVydCA9IFwiTTEwIDE0QzguOSAxNCA4IDEzLjEgOCAxMkM4IDEwLjkgOC45IDEwIDEwIDEwQzExLjEgMTAgMTIgMTAuOSAxMiAxMlMxMS4xIDE0IDEwIDE0TTEwIDRDNS42IDQgMiA3LjYgMiAxMlM1LjYgMjAgMTAgMjAgMTggMTYuNCAxOCAxMiAxNC40IDQgMTAgNE0yMCAxM0gyMlY3SDIwTTIwIDE3SDIyVjE1SDIwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc2NQbGF5ZXIgPSBcIk0xNC41LDEwLjM3QzE1LjU0LDEwLjM3IDE2LjM4LDkuNTMgMTYuMzgsOC41QzE2LjM4LDcuNDYgMTUuNTQsNi42MyAxNC41LDYuNjNDMTMuNDYsNi42MyAxMi42Myw3LjQ2IDEyLjYzLDguNUExLjg3LDEuODcgMCAwLDAgMTQuNSwxMC4zN00xNC41LDFBNy41LDcuNSAwIDAsMSAyMiw4LjVDMjIsMTAuNjcgMjEuMDgsMTIuNjMgMTkuNiwxNEg5LjRDNy45MywxMi42MyA3LDEwLjY3IDcsOC41QzcsNC4zNSAxMC4zNiwxIDE0LjUsMU02LDIxVjIySDRWMjFIMlYxNUgyMlYyMUgyMFYyMkgxOFYyMUg2TTQsMThWMTlIMTNWMThINE0xNSwxN1YxOUgxN1YxN0gxNU0xOSwxN0ExLDEgMCAwLDAgMTgsMThBMSwxIDAgMCwwIDE5LDE5QTEsMSAwIDAsMCAyMCwxOEExLDEgMCAwLDAgMTksMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzY29yZCA9IFwiTTIyLDI0TDE2Ljc1LDE5TDE3LjM4LDIxSDQuNUEyLjUsMi41IDAgMCwxIDIsMTguNVYzLjVBMi41LDIuNSAwIDAsMSA0LjUsMUgxOS41QTIuNSwyLjUgMCAwLDEgMjIsMy41VjI0TTEyLDYuOEM5LjMyLDYuOCA3LjQ0LDcuOTUgNy40NCw3Ljk1QzguNDcsNy4wMyAxMC4yNyw2LjUgMTAuMjcsNi41TDEwLjEsNi4zM0M4LjQxLDYuMzYgNi44OCw3LjUzIDYuODgsNy41M0M1LjE2LDExLjEyIDUuMjcsMTQuMjIgNS4yNywxNC4yMkM2LjY3LDE2LjAzIDguNzUsMTUuOSA4Ljc1LDE1LjlMOS40NiwxNUM4LjIxLDE0LjczIDcuNDIsMTMuNjIgNy40MiwxMy42MkM3LjQyLDEzLjYyIDkuMywxNC45IDEyLDE0LjlDMTQuNywxNC45IDE2LjU4LDEzLjYyIDE2LjU4LDEzLjYyQzE2LjU4LDEzLjYyIDE1Ljc5LDE0LjczIDE0LjU0LDE1TDE1LjI1LDE1LjlDMTUuMjUsMTUuOSAxNy4zMywxNi4wMyAxOC43MywxNC4yMkMxOC43MywxNC4yMiAxOC44NCwxMS4xMiAxNy4xMiw3LjUzQzE3LjEyLDcuNTMgMTUuNTksNi4zNiAxMy45LDYuMzNMMTMuNzMsNi41QzEzLjczLDYuNSAxNS41Myw3LjAzIDE2LjU2LDcuOTVDMTYuNTYsNy45NSAxNC42OCw2LjggMTIsNi44TTkuOTMsMTAuNTlDMTAuNTgsMTAuNTkgMTEuMTEsMTEuMTYgMTEuMSwxMS44NkMxMS4xLDEyLjU1IDEwLjU4LDEzLjEzIDkuOTMsMTMuMTNDOS4yOSwxMy4xMyA4Ljc3LDEyLjU1IDguNzcsMTEuODZDOC43NywxMS4xNiA5LjI4LDEwLjU5IDkuOTMsMTAuNTlNMTQuMSwxMC41OUMxNC43NSwxMC41OSAxNS4yNywxMS4xNiAxNS4yNywxMS44NkMxNS4yNywxMi41NSAxNC43NSwxMy4xMyAxNC4xLDEzLjEzQzEzLjQ2LDEzLjEzIDEyLjk0LDEyLjU1IDEyLjk0LDExLjg2QzEyLjk0LDExLjE2IDEzLjQ1LDEwLjU5IDE0LjEsMTAuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzaHdhc2hlciA9IFwiTTE4LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwyTTEwLDRBMSwxIDAgMCwxIDExLDVBMSwxIDAgMCwxIDEwLDZBMSwxIDAgMCwxIDksNUExLDEgMCAwLDEgMTAsNE03LDRBMSwxIDAgMCwxIDgsNUExLDEgMCAwLDEgNyw2QTEsMSAwIDAsMSA2LDVBMSwxIDAgMCwxIDcsNE0xOCwyMEg2VjhIMThWMjBNMTQuNjcsMTUuMzNDMTQuNjksMTYuMDMgMTQuNDEsMTYuNzEgMTMuOTEsMTcuMjFDMTIuODYsMTguMjYgMTEuMTUsMTguMjcgMTAuMDksMTcuMjFDOS41OSwxNi43MSA5LjMxLDE2LjAzIDkuMzMsMTUuMzNDOS40LDE0LjYyIDkuNjMsMTMuOTQgMTAsMTMuMzNDMTAuMzcsMTIuNSAxMC44MSwxMS43MyAxMS4zMywxMUwxMiwxMEMxMy43OSwxMi41OSAxNC42NywxNC4zNiAxNC42NywxNS4zM1wiO1xyXG5leHBvcnQgdmFyIG1kaURpc2h3YXNoZXJBbGVydCA9IFwiTTE2IDJINEMyLjkgMiAyIDIuOSAyIDRWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxNkMxNy4xMSAyMiAxOCAyMS4xMSAxOCAyMFY0QzE4IDIuOSAxNy4xMSAyIDE2IDJNOCA0QzguNTUgNCA5IDQuNDUgOSA1UzguNTUgNiA4IDYgNyA1LjU1IDcgNSA3LjQ1IDQgOCA0TTUgNEM1LjU1IDQgNiA0LjQ1IDYgNVM1LjU1IDYgNSA2IDQgNS41NSA0IDUgNC40NSA0IDUgNE0xNiAyMEg0VjhIMTZWMjBNMTIuNjcgMTUuMzNDMTIuNjkgMTYuMDMgMTIuNDEgMTYuNzEgMTEuOTEgMTcuMjFDMTAuODYgMTguMjYgOS4xNSAxOC4yNyA4LjA5IDE3LjIxQzcuNTkgMTYuNzEgNy4zMSAxNi4wMyA3LjMzIDE1LjMzQzcuNCAxNC42MiA3LjYzIDEzLjk0IDggMTMuMzNDOC4zNyAxMi41IDguODEgMTEuNzMgOS4zMyAxMUwxMCAxMEMxMS43OSAxMi41OSAxMi42NyAxNC4zNiAxMi42NyAxNS4zM00yMCAxNUgyMlYxN0gyMFYxNU0yMCA3SDIyVjEzSDIwVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzaHdhc2hlck9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNCA1Ljg5VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE4LjU4IDIyIDE5LjEgMjEuNzUgMTkuNDYgMjEuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTggMjBINlY4SDYuMTFMMTAuNSAxMi4zN0MxMC4zMSAxMi42OSAxMC4xNSAxMyAxMCAxMy4zM0M5LjYzIDEzLjk0IDkuNCAxNC42MiA5LjMzIDE1LjMzQzkuMzEgMTYuMDMgOS41OSAxNi43MSAxMC4wOSAxNy4yMUMxMS4xNSAxOC4yNyAxMi44NiAxOC4yNiAxMy45MSAxNy4yMUMxNC4xNiAxNi45NyAxNC4zNSAxNi42OCAxNC41IDE2LjM2TDE4IDE5Ljg5VjIwTTExLjIgOEgxOFYxNC44TDIwIDE2LjhWNEMyMCAyLjkgMTkuMTEgMiAxOCAySDZDNS43NiAyIDUuNTQgMi4wNSA1LjMzIDIuMTNMMTEuMiA4TTEwIDRDMTAuNTUgNCAxMSA0LjQ1IDExIDVTMTAuNTUgNiAxMCA2IDkgNS41NSA5IDUgOS40NSA0IDEwIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzcXVzID0gXCJNMTIuMDgsMjJDOS42MywyMiA3LjM5LDIxLjExIDUuNjYsMTkuNjNMMS40MSwyMC4yMUwzLjA1LDE2LjE1QzIuNSwxNC44OCAyLjE2LDEzLjUgMi4xNiwxMkMyLjE2LDYuNSA2LjYsMiAxMi4wOCwyQzE3LjU2LDIgMjIsNi41IDIyLDEyQzIyLDE3LjUgMTcuNTYsMjIgMTIuMDgsMjJNMTcuNSwxMS45N1YxMS45NEMxNy41LDkuMDYgMTUuNDYsNyAxMS45NSw3SDguMTZWMTdIMTEuOUMxNS40MywxNyAxNy41LDE0Ljg2IDE3LjUsMTEuOTdNMTIsMTQuNTRIMTAuODlWOS40NkgxMkMxMy42Miw5LjQ2IDE0LjcsMTAuMzkgMTQuNywxMlYxMkMxNC43LDEzLjYzIDEzLjYyLDE0LjU0IDEyLDE0LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc3RyaWJ1dGVIb3Jpem9udGFsQ2VudGVyID0gXCJNOCAyVjVIMTBWMTlIOFYyMkg2VjE5SDRWNUg2VjJIOE0xNiAyVjdIMTRWMTdIMTZWMjJIMThWMTdIMjBWN0gxOFYySDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc3RyaWJ1dGVIb3Jpem9udGFsTGVmdCA9IFwiTTIxIDdWMTdIMTZWMjJIMTRWMkgxNlY3SDIxTTUgMkgzVjIySDVWMTlIMTBWNUg1VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGlzdHJpYnV0ZUhvcml6b250YWxSaWdodCA9IFwiTTMgMTdWN0g4VjJIMTBWMjJIOFYxN0gzTTE5IDIySDIxVjJIMTlWNUgxNFYxOUgxOVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXN0cmlidXRlVmVydGljYWxCb3R0b20gPSBcIk03IDNIMTdWOEgyMlYxMEgyVjhIN1YzTTIgMTlWMjFIMjJWMTlIMTlWMTRINVYxOUgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURpc3RyaWJ1dGVWZXJ0aWNhbENlbnRlciA9IFwiTTIgMTZINVYxNEgxOVYxNkgyMlYxOEgxOVYyMEg1VjE4SDJWMTZNMiA4SDdWMTBIMTdWOEgyMlY2SDE3VjRIN1Y2SDJWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXN0cmlidXRlVmVydGljYWxUb3AgPSBcIk0xNyAyMUg3VjE2SDJWMTRIMjJWMTZIMTdWMjFNMjIgNVYzSDJWNUg1VjEwSDE5VjVIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aW5nRmxpcHBlcnMgPSBcIk0yMC4yOCwzLjY2QzE5LjI4LDMuNDQgMTguNTQsMi4yNSAxNy41NywyLjA0QzE2LjYsMS44MyAxNS40LDIuNTkgMTQuNDIsMi4zN0MxMy4zOCwyIDEyLjIyLDIuMTMgMTEuMjgsMi43MUwxMS4yMSwxN0wxMSwxOEMxMC42NCwxOS42MiAxMS42NywyMS4yMiAxMy4yOSwyMS41OEMxNC45LDIxLjkzIDE2LjUsMjAuOTEgMTYuODYsMTkuMjlMMTcuMDcsMTguMjlMMjMsNS4yOEMyMi4zOSw0LjM1IDIxLjM5LDMuNzYgMjAuMjgsMy42Nk0xNC45MSwxOC44NkMxNC43OSwxOS40MSAxNC4yNSwxOS43NiAxMy43LDE5LjY1QzEzLjE0LDE5LjUzIDEyLjc5LDE5IDEyLjkxLDE4LjQzTDEzLjc3LDE0LjVDMTMuODYsMTMuOTcgMTQuMzcsMTMuNiAxNC45MiwxMy42OUMxNS40NiwxMy43OCAxNS44MywxNC4zIDE1Ljc0LDE0Ljg0QzE1Ljc0LDE0Ljg4IDE1LjczLDE0LjkxIDE1LjcyLDE0Ljk1TDE0LjkxLDE4Ljg2TTkuNzIsMjEuMzRDOS4zMywyMC43MyA5LjA4LDIwLjA1IDksMTkuMzRMOC4yNCwxNkM4LjEsMTUuNDcgOC40MSwxNC45MiA5LDE0Ljc2QzkuMDcsMTQuNzUgOS4xNSwxNC43NSA5LjIyLDE0Ljc2VjMuNDNDOC4zMSwzLjQzIDcuMjIsMi44NiA2LjM4LDMuMDZDNS41NCwzLjI2IDQuNjksNC40NCAzLjcyLDQuNjZDMi42MSw0Ljc2IDEuNjEsNS4zNSAxLDYuMjhMNi45MywxOS4yOEw3LjE0LDIwLjI4QzcuNSwyMS45IDkuMDksMjIuOTIgMTAuNzEsMjIuNTdIMTAuODFDMTAuMzgsMjIuMjIgMTAsMjEuODEgOS43MiwyMS4zNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXZpbmdIZWxtZXQgPSBcIk0xNiwxMkE0LDQgMCAwLDEgMTIsMTZBNCw0IDAgMCwxIDgsMTJBNCw0IDAgMCwxIDEyLDhBNCw0IDAgMCwxIDE2LDEyTTE5LjQ1LDcuODlMMTguMDcsOC41OEwxOC4zMiw5SDIwVjE1SDE4LjMzQzE3Ljg0LDE2LjAzIDE3LjExLDE2LjkyIDE2LjIxLDE3LjZDMTcuODUsMTguMTEgMTkuMSwxOC45MSAxOS42NywxOS44NkMxOC42OSwyMS4xIDE1LjYyLDIyIDEyLDIyQzguMzgsMjIgNS4zMSwyMS4xIDQuMzMsMTkuODZDNC45LDE4LjkxIDYuMTUsMTguMTEgNy43OSwxNy42QzYuODksMTYuOTIgNi4xNiwxNi4wMyA1LjY3LDE1SDRWOUg1LjY4QzYuMzcsNy41NCA3LjU0LDYuMzcgOSw1LjY4VjRIMTVWNS42OEMxNS42OCw2IDE2LjI5LDYuNDYgMTYuODIsN0wxOC41NSw2LjE0QzE5LjkzLDUuNDIgMjAsNC4xIDIwLDJIMjJDMjIsNC4wNiAyMiw2LjYyIDE5LjQ1LDcuODlNMTcsMTJBNSw1IDAgMCwwIDEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXZpbmdTY3ViYSA9IFwiTTEyLDE1QzEzLjMxLDE1IDE0LjQyLDE1LjgzIDE0LjgzLDE3SDE4QTQsNCAwIDAsMSAyMiwyMVYyMkgyMFYyMUEyLDIgMCAwLDAgMTgsMTlIMTQuODNDMTQuNDIsMjAuMTcgMTMuMzEsMjEgMTIsMjFBMywzIDAgMCwxIDksMThBMywzIDAgMCwxIDEyLDE1TTEyLDE3QTEsMSAwIDAsMCAxMSwxOEExLDEgMCAwLDAgMTIsMTlBMSwxIDAgMCwwIDEzLDE4QTEsMSAwIDAsMCAxMiwxN00xOCwzQTIsMiAwIDAsMSAyMCw1VjEwQTIsMiAwIDAsMSAxOCwxMkgxNC44NUMxNC40MywxMiAxNC4wNSwxMi4yNCAxMy45LDEyLjYzQzEzLjcsMTMuMjMgMTMuMjMsMTMuNzEgMTIuNjIsMTMuOTFDMTEuNTgsMTQuMjUgMTAuNDQsMTMuNjggMTAuMSwxMi42M0M5Ljk1LDEyLjI0IDkuNTcsMTIgOS4xNSwxMkg2QTIsMiAwIDAsMSA0LDEwVjVBMiwyIDAgMCwxIDYsM0gxOE0xOCwxMFY1SDZWMTBIMTAuNjVDMTAuOSw5LjQ2IDExLjQxLDkuMDkgMTIsOUMxMi41OSw5LjA5IDEzLjEsOS40NiAxMy4zNSwxMEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEaXZpbmdTY3ViYUZsYWcgPSBcIk0yLDZMMTksMjBIMlY2TTUsNEwyMiwxOFY0SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aW5nU2N1YmFUYW5rID0gXCJNMTksMTguNUEyLjUsMi41IDAgMCwxIDE2LjUsMjFBMi41LDIuNSAwIDAsMSAxNCwxOC41QzE0LDE3LjQ3IDE0LjYyLDE2LjU5IDE1LjUsMTYuMjFWNkgxMVY3LjM1QzEyLjIyLDcuOTMgMTMsOS4xNSAxMywxMC41VjIySDZWMTAuNUM2LDkuMTUgNi43OCw3LjkzIDgsNy4zNVY2SDZWNEg4VjMuNUExLjUsMS41IDAgMCwxIDkuNSwyQTEuNSwxLjUgMCAwLDEgMTEsMy41VjRIMTUuNUEyLDIgMCAwLDEgMTcuNSw2VjE2LjIxQzE4LjM4LDE2LjU5IDE5LDE3LjQ3IDE5LDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aW5nU2N1YmFUYW5rTXVsdGlwbGUgPSBcIk0yMiwxOC41QTIuNSwyLjUgMCAwLDEgMTkuNSwyMUEyLjUsMi41IDAgMCwxIDE3LDE4LjVDMTcsMTcuNDcgMTcuNjIsMTYuNTkgMTguNSwxNi4yMVY2SDE0VjcuMzVDMTUuMjIsNy45MyAxNiw5LjE1IDE2LDEwLjVWMjJIMlYxMC41QzIsOS4xNSAyLjc4LDcuOTMgNCw3LjM1VjZIMlY0SDRWMy41QTEuNSwxLjUgMCAwLDEgNS41LDJBMS41LDEuNSAwIDAsMSA3LDMuNVY0SDExVjMuNUExLjUsMS41IDAgMCwxIDEyLjUsMkExLjUsMS41IDAgMCwxIDE0LDMuNVY0SDE4LjVBMiwyIDAgMCwxIDIwLjUsNlYxNi4yMUMyMS4zOCwxNi41OSAyMiwxNy40NyAyMiwxOC41TTExLDcuMzVWNkg3VjcuMzVDOC4yMiw3LjkzIDksOS4xNSA5LDEwLjVDOSw5LjE1IDkuNzgsNy45MyAxMSw3LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpdmluZ1Nub3JrZWwgPSBcIk0xNiwzSDRBMiwyIDAgMCwwIDIsNVYxMEEyLDIgMCAwLDAgNCwxMkg3LjE1QzcuNTcsMTIgNy45NSwxMi4yNCA4LjEsMTIuNjNDOC40NCwxMy42OCA5LjU4LDE0LjI1IDEwLjYyLDEzLjkxQzExLjIzLDEzLjcxIDExLjcsMTMuMjMgMTEuOSwxMi42M0MxMi4wNSwxMi4yNCAxMi40MywxMiAxMi44NSwxMkgxNkEyLDIgMCAwLDAgMTgsMTBWNUEyLDIgMCAwLDAgMTYsM00xNiwxMEgxMS4zNUMxMS4xLDkuNDYgMTAuNTksOS4wOSAxMCw5QzkuNDEsOS4wOSA4LjksOS40NiA4LjY1LDEwSDRWNUgxNlYxME0yMiwyVjE1LjVBNi41LDYuNSAwIDAsMSAxNS41LDIyQzEzLjc5LDIyIDEyLjE1LDIxLjMyIDEwLjkzLDIwLjEyQzguOTUsMjAuNTggNi44OCwxOS43OSA1LjcxLDE4LjEyTDcuNjIsMTcuMjlDOC41LDE4LjIyIDkuODQsMTguNSAxMSwxOEMxMS4yLDE3LjkxIDExLjM5LDE3LjggMTEuNTYsMTcuNjdDMTIuNCwxNy4wNSAxMi44NywxNi4wNCAxMi43OCwxNUwxNC42OSwxNC4xN0MxNS4xLDE2LjA0IDE0LjQxLDE4IDEyLjksMTkuMTdDMTMuNjYsMTkuNzEgMTQuNTcsMjAgMTUuNSwyMEMxOCwyMCAyMCwxOCAyMCwxNS41VjJIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRGl2aXNpb24gPSBcIk0xOSwxM0g1VjExSDE5VjEzTTEyLDVBMiwyIDAgMCwxIDE0LDdBMiwyIDAgMCwxIDEyLDlBMiwyIDAgMCwxIDEwLDdBMiwyIDAgMCwxIDEyLDVNMTIsMTVBMiwyIDAgMCwxIDE0LDE3QTIsMiAwIDAsMSAxMiwxOUEyLDIgMCAwLDEgMTAsMTdBMiwyIDAgMCwxIDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURpdmlzaW9uQm94ID0gXCJNMTcsMTNWMTFIN1YxM0gxN00xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOU0xMiw3QTEsMSAwIDAsMCAxMSw4QTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMyw4QTEsMSAwIDAsMCAxMiw3TTEyLDE1QTEsMSAwIDAsMCAxMSwxNkExLDEgMCAwLDAgMTIsMTdBMSwxIDAgMCwwIDEzLDE2QTEsMSAwIDAsMCAxMiwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEbG5hID0gXCJNMjEuMzgsMTIuNTZIMTIuODVDMTEuOTcsMTIuNTYgMTEuMSwxMi45NiAxMC42MSwxMy42MVYxMy42QzEwLjEyLDE0LjI4IDkuMzIsMTQuNzIgOC40MSwxNC43MkM2LjkyLDE0LjcyIDUuNzEsMTMuNSA1LjcxLDEyQzUuNzEsMTAuNSA2LjkyLDkuMzEgOC40MSw5LjMxQzkuMzIsOS4zMSAxMC4xMiw5Ljc1IDEwLjYxLDEwLjQzVjEwLjQyQzExLjEsMTEuMDcgMTEuOTcsMTEuNSAxMi44NSwxMS41SDIxLjI5QzIxLjQ1LDExLjUgMjIsMTEuNCAyMiwxMC42N0MyMS4yNiw2LjQzIDE3LjEsMy4xOCAxMi4wNiwzLjE4QzguOTYsMy4xOCA2LjE5LDQuNDEgNC4zNCw2LjM1QzQuMDUsNi43OSA0LjM1LDYuOTIgNC42Myw2Ljk2SDEwLjE0QzExLDYuOTYgMTEuODksNi41NCAxMi4zOCw1Ljg5VjUuOTFDMTIuODgsNS4yMyAxMy42Nyw0Ljc4IDE0LjU4LDQuNzhDMTYuMDcsNC43OCAxNy4yOCw2IDE3LjI4LDcuNUMxNy4yOCw5IDE2LjA3LDEwLjIgMTQuNTgsMTAuMkMxMy42NywxMC4yIDEyLjg4LDkuNzUgMTIuMzgsOS4wN1Y5LjA4QzExLjg5LDguNDQgMTEsOC4wMyAxMC4xNCw4LjAzSDQuMTNMNC4xNSw4LjAzQzQuMTUsOC4wMyAzLjI2LDggMi43Miw4Ljc1QzIuMyw5LjQyIDIsMTAuODUgMiwxMkMyLDEzLjE2IDIuMTcsMTQuMjEgMi43MiwxNS4yN0MzLjE5LDE2LjAzIDQuMTUsMTYgNC4xNSwxNkg0LjExTDEwLjE0LDE2QzExLDE2IDExLjg5LDE1LjU4IDEyLjM4LDE0LjkzVjE0Ljk0QzEyLjg4LDE0LjI2IDEzLjY3LDEzLjgxIDE0LjU4LDEzLjgxQzE2LjA3LDEzLjgxIDE3LjI4LDE1LjAzIDE3LjI4LDE2LjVDMTcuMjgsMTggMTYuMDcsMTkuMjMgMTQuNTgsMTkuMjNDMTMuNjcsMTkuMjMgMTIuODgsMTguNzggMTIuMzgsMTguMVYxOC4xMkMxMS44OSwxNy40NyAxMSwxNy4wNSAxMC4xNCwxNy4wNUg0LjY0QzQuMzYsMTcuMDkgNC4wNiwxNy4yMiA0LjMyLDE3LjY0QzYuMTcsMTkuNTggOC45NSwyMC44MiAxMi4wNiwyMC44MkMxNy4xMSwyMC44MiAyMS4yOCwxNy41NyAyMiwxMy4zMUMyMiwxMi43MiAyMS41OSwxMi41OCAyMS4zOCwxMi41NlwiO1xyXG5leHBvcnQgdmFyIG1kaURuYSA9IFwiTTQsMkg2VjRDNiw1LjQ0IDYuNjgsNi42MSA3Ljg4LDcuNzhDOC43NCw4LjYxIDkuODksOS40MSAxMS4wOSwxMC4yTDkuMjYsMTEuMzlDOC4yNywxMC43MiA3LjMxLDEwIDYuNSw5LjIxQzUuMDcsNy44MiA0LDYuMSA0LDRWMk0xOCwySDIwVjRDMjAsNi4xIDE4LjkzLDcuODIgMTcuNSw5LjIxQzE2LjA5LDEwLjU5IDE0LjI5LDExLjczIDEyLjU0LDEyLjg0QzEwLjc5LDEzLjk2IDkuMDksMTUuMDUgNy44OCwxNi4yMkM2LjY4LDE3LjM5IDYsMTguNTYgNiwyMFYyMkg0VjIwQzQsMTcuOSA1LjA3LDE2LjE4IDYuNSwxNC43OUM3LjkxLDEzLjQxIDkuNzEsMTIuMjcgMTEuNDYsMTEuMTZDMTMuMjEsMTAuMDQgMTQuOTEsOC45NSAxNi4xMiw3Ljc4QzE3LjMyLDYuNjEgMTgsNS40NCAxOCw0VjJNMTQuNzQsMTIuNjFDMTUuNzMsMTMuMjggMTYuNjksMTQgMTcuNSwxNC43OUMxOC45MywxNi4xOCAyMCwxNy45IDIwLDIwVjIySDE4VjIwQzE4LDE4LjU2IDE3LjMyLDE3LjM5IDE2LjEyLDE2LjIyQzE1LjI2LDE1LjM5IDE0LjExLDE0LjU5IDEyLjkxLDEzLjhMMTQuNzQsMTIuNjFNNywzSDE3VjRMMTYuOTQsNC41SDcuMDZMNyw0VjNNNy42OCw2SDE2LjMyQzE2LjA4LDYuMzQgMTUuOCw2LjY5IDE1LjQyLDcuMDZMMTQuOTEsNy41SDkuMDdMOC41OCw3LjA2QzguMiw2LjY5IDcuOTIsNi4zNCA3LjY4LDZNOS4wOSwxNi41SDE0LjkzTDE1LjQyLDE2Ljk0QzE1LjgsMTcuMzEgMTYuMDgsMTcuNjYgMTYuMzIsMThINy42OEM3LjkyLDE3LjY2IDguMiwxNy4zMSA4LjU4LDE2Ljk0TDkuMDksMTYuNU03LjA2LDE5LjVIMTYuOTRMMTcsMjBWMjFIN1YyMEw3LjA2LDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG5zID0gXCJNNyw5QTIsMiAwIDAsMSA1LDdBMiwyIDAgMCwxIDcsNUEyLDIgMCAwLDEgOSw3QTIsMiAwIDAsMSA3LDlNMjAsM0g0QTEsMSAwIDAsMCAzLDRWMTBBMSwxIDAgMCwwIDQsMTFIMjBBMSwxIDAgMCwwIDIxLDEwVjRBMSwxIDAgMCwwIDIwLDNNNywxOUEyLDIgMCAwLDEgNSwxN0EyLDIgMCAwLDEgNywxNUEyLDIgMCAwLDEgOSwxN0EyLDIgMCAwLDEgNywxOU0yMCwxM0g0QTEsMSAwIDAsMCAzLDE0VjIwQTEsMSAwIDAsMCA0LDIxSDIwQTEsMSAwIDAsMCAyMSwyMFYxNEExLDEgMCAwLDAgMjAsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG5zT3V0bGluZSA9IFwiTTE5LDE1VjE5SDVWMTVIMTlNMjAsMTNINEExLDEgMCAwLDAgMywxNFYyMEExLDEgMCAwLDAgNCwyMUgyMEExLDEgMCAwLDAgMjEsMjBWMTRBMSwxIDAgMCwwIDIwLDEzTTcsMTguNUExLjUsMS41IDAgMCwxIDUuNSwxN0ExLjUsMS41IDAgMCwxIDcsMTUuNUExLjUsMS41IDAgMCwxIDguNSwxN0ExLjUsMS41IDAgMCwxIDcsMTguNU0xOSw1VjlINVY1SDE5TTIwLDNINEExLDEgMCAwLDAgMyw0VjEwQTEsMSAwIDAsMCA0LDExSDIwQTEsMSAwIDAsMCAyMSwxMFY0QTEsMSAwIDAsMCAyMCwzTTcsOC41QTEuNSwxLjUgMCAwLDEgNS41LDdBMS41LDEuNSAwIDAsMSA3LDUuNUExLjUsMS41IDAgMCwxIDguNSw3QTEuNSwxLjUgMCAwLDEgNyw4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9Ob3REaXN0dXJiID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTcsMTNIN1YxMUgxN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEb05vdERpc3R1cmJPZmYgPSBcIk0xNywxMVYxM0gxNS41NEwyMC4yMiwxNy42OEMyMS4zNCwxNi4wNyAyMiwxNC4xMSAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQzkuODksMiA3LjkzLDIuNjYgNi4zMiwzLjc4TDEzLjU0LDExSDE3TTIuMjcsMi4yN0wxLDMuNTRMMy43OCw2LjMyQzIuNjYsNy45MyAyLDkuODkgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkMxNC4xMSwyMiAxNi4wNywyMS4zNCAxNy42OCwyMC4yMkwyMC40NiwyM0wyMS43MywyMS43M0wyLjI3LDIuMjdNNywxM1YxMUg4LjQ2TDEwLjQ2LDEzSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9ja0JvdHRvbSA9IFwiTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY2QTIgMiAwIDAgMCAyMCA0TTIwIDEzSDRWNkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb2NrTGVmdCA9IFwiTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY2QTIgMiAwIDAgMCAyMCA0TTIwIDE4SDlWNkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb2NrUmlnaHQgPSBcIk0yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWNkEyIDIgMCAwIDAgMjAgNE0xNSAxOEg0VjZIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9ja1RvcCA9IFwiTTQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyME00IDExSDIwVjE4SDRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9ja1dpbmRvdyA9IFwiTTE4IDE4VjIwSDRBMiAyIDAgMCAxIDIgMThWOEg0VjE4TTIyIDZWMTRBMiAyIDAgMCAxIDIwIDE2SDhBMiAyIDAgMCAxIDYgMTRWNkEyIDIgMCAwIDEgOCA0SDIwQTIgMiAwIDAgMSAyMiA2TTIwIDZIOFYxNEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb2NrZXIgPSBcIk0yMS44MSAxMC4yNUMyMS43NSAxMC4yMSAyMS4yNSA5LjgyIDIwLjE3IDkuODJDMTkuODkgOS44MiAxOS42MSA5Ljg1IDE5LjMzIDkuOUMxOS4xMiA4LjUgMTcuOTUgNy43OSAxNy45IDcuNzZMMTcuNjEgNy41OUwxNy40MyA3Ljg2QzE3LjE5IDguMjIgMTcgOC42MyAxNi45MiA5LjA1QzE2LjcyIDkuODUgMTYuODQgMTAuNjEgMTcuMjUgMTEuMjZDMTYuNzYgMTEuNTQgMTUuOTYgMTEuNjEgMTUuNzkgMTEuNjFIMi42MkMyLjI4IDExLjYxIDIgMTEuODkgMiAxMi4yNEMyIDEzLjM5IDIuMTggMTQuNTQgMi41OCAxNS42MkMzLjAzIDE2LjgxIDMuNzEgMTcuNjkgNC41OCAxOC4yM0M1LjU2IDE4LjgzIDcuMTcgMTkuMTcgOSAxOS4xN0M5Ljc5IDE5LjE3IDEwLjYxIDE5LjEgMTEuNDIgMTguOTVDMTIuNTQgMTguNzUgMTMuNjIgMTguMzYgMTQuNjEgMTcuNzlDMTUuNDMgMTcuMzIgMTYuMTYgMTYuNzIgMTYuNzggMTZDMTcuODMgMTQuODMgMTguNDUgMTMuNSAxOC45IDEyLjM1SDE5LjA5QzIwLjIzIDEyLjM1IDIwLjk0IDExLjg5IDIxLjMzIDExLjVDMjEuNTkgMTEuMjYgMjEuNzggMTAuOTcgMjEuOTIgMTAuNjNMMjIgMTAuMzlMMjEuODEgMTAuMjVNMy44NSAxMS4yNEg1LjYxQzUuNjkgMTEuMjQgNS43NyAxMS4xNyA1Ljc3IDExLjA4VjkuNUM1Ljc3IDkuNDIgNS43IDkuMzQgNS42MSA5LjM0SDMuODVDMy43NiA5LjM0IDMuNjkgOS40MSAzLjY5IDkuNVYxMS4wOEMzLjcgMTEuMTcgMy43NiAxMS4yNCAzLjg1IDExLjI0TTYuMjggMTEuMjRIOC4wNEM4LjEyIDExLjI0IDguMiAxMS4xNyA4LjIgMTEuMDhWOS41QzguMiA5LjQyIDguMTMgOS4zNCA4LjA0IDkuMzRINi4yOEM2LjE5IDkuMzQgNi4xMiA5LjQxIDYuMTIgOS41VjExLjA4QzYuMTMgMTEuMTcgNi4xOSAxMS4yNCA2LjI4IDExLjI0TTguNzUgMTEuMjRIMTAuNUMxMC42IDExLjI0IDEwLjY3IDExLjE3IDEwLjY3IDExLjA4VjkuNUMxMC42NyA5LjQyIDEwLjYxIDkuMzQgMTAuNSA5LjM0SDguNzVDOC42NyA5LjM0IDguNiA5LjQxIDguNiA5LjVWMTEuMDhDOC42IDExLjE3IDguNjYgMTEuMjQgOC43NSAxMS4yNE0xMS4xOSAxMS4yNEgxMi45NkMxMy4wNCAxMS4yNCAxMy4xMSAxMS4xNyAxMy4xMSAxMS4wOFY5LjVDMTMuMTEgOS40MiAxMy4wNSA5LjM0IDEyLjk2IDkuMzRIMTEuMTlDMTEuMTEgOS4zNCAxMS4wNCA5LjQxIDExLjA0IDkuNVYxMS4wOEMxMS4wNCAxMS4xNyAxMS4xMSAxMS4yNCAxMS4xOSAxMS4yNE02LjI4IDlIOC4wNEM4LjEyIDkgOC4yIDguOTEgOC4yIDguODJWNy4yNUM4LjIgNy4xNiA4LjEzIDcuMDkgOC4wNCA3LjA5SDYuMjhDNi4xOSA3LjA5IDYuMTIgNy4xNSA2LjEyIDcuMjVWOC44MkM2LjEzIDguOTEgNi4xOSA5IDYuMjggOU04Ljc1IDlIMTAuNUMxMC42IDkgMTAuNjcgOC45MSAxMC42NyA4LjgyVjcuMjVDMTAuNjcgNy4xNiAxMC42MSA3LjA5IDEwLjUgNy4wOUg4Ljc1QzguNjcgNy4wOSA4LjYgNy4xNSA4LjYgNy4yNVY4LjgyQzguNiA4LjkxIDguNjYgOSA4Ljc1IDlNMTEuMTkgOUgxMi45NkMxMy4wNCA5IDEzLjExIDguOTEgMTMuMTEgOC44MlY3LjI1QzEzLjExIDcuMTYgMTMuMDQgNy4wOSAxMi45NiA3LjA5SDExLjE5QzExLjExIDcuMDkgMTEuMDQgNy4xNSAxMS4wNCA3LjI1VjguODJDMTEuMDQgOC45MSAxMS4xMSA5IDExLjE5IDlNMTEuMTkgNi43MkgxMi45NkMxMy4wNCA2LjcyIDEzLjExIDYuNjUgMTMuMTEgNi41NlY1QzEzLjExIDQuOSAxMy4wNCA0LjgzIDEyLjk2IDQuODNIMTEuMTlDMTEuMTEgNC44MyAxMS4wNCA0Ljg5IDExLjA0IDVWNi41NkMxMS4wNCA2LjY0IDExLjExIDYuNzIgMTEuMTkgNi43Mk0xMy42NSAxMS4yNEgxNS40MUMxNS41IDExLjI0IDE1LjU3IDExLjE3IDE1LjU3IDExLjA4VjkuNUMxNS41NyA5LjQyIDE1LjUgOS4zNCAxNS40MSA5LjM0SDEzLjY1QzEzLjU3IDkuMzQgMTMuNSA5LjQxIDEzLjUgOS41VjExLjA4QzEzLjUgMTEuMTcgMTMuNTcgMTEuMjQgMTMuNjUgMTEuMjRcIjtcclxuZXhwb3J0IHZhciBtZGlEb2N0b3IgPSBcIk0xNC44NCwxNi4yNkMxNy44NiwxNi44MyAyMCwxOC4yOSAyMCwyMFYyMkg0VjIwQzQsMTguMjkgNi4xNCwxNi44MyA5LjE2LDE2LjI2TDEyLDIxTDE0Ljg0LDE2LjI2TTgsOEgxNlYxMEE0LDQgMCAwLDEgMTIsMTRBNCw0IDAgMCwxIDgsMTBWOE04LDdMOC40MSwyLjlDOC40NiwyLjM5IDguODksMiA5LjQxLDJIMTQuNkMxNS4xMSwyIDE1LjU0LDIuMzkgMTUuNTksMi45TDE2LDdIOE0xMiwzSDExVjRIMTBWNUgxMVY2SDEyVjVIMTNWNEgxMlYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvZyA9IFwiTTE4LDRDMTYuMjksNCAxNS4yNSw0LjMzIDE0LjY1LDQuNjFDMTMuODgsNC4yMyAxMyw0IDEyLDRDMTEsNCAxMC4xMiw0LjIzIDkuMzUsNC42MUM4Ljc1LDQuMzMgNy43MSw0IDYsNEMzLDQgMSwxMiAxLDE0QzEsMTQuODMgMi4zMiwxNS41OSA0LjE0LDE1LjlDNC43OCwxOC4xNCA3LjgsMTkuODUgMTEuNSwyMFYxNS43MkMxMC45MSwxNS4zNSAxMCwxNC42OCAxMCwxNEMxMCwxMyAxMiwxMyAxMiwxM0MxMiwxMyAxNCwxMyAxNCwxNEMxNCwxNC42OCAxMy4wOSwxNS4zNSAxMi41LDE1LjcyVjIwQzE2LjIsMTkuODUgMTkuMjIsMTguMTQgMTkuODYsMTUuOUMyMS42OCwxNS41OSAyMywxNC44MyAyMywxNEMyMywxMiAyMSw0IDE4LDRNNC4xNSwxMy44N0MzLjY1LDEzLjc1IDMuMjYsMTMuNjEgMywxMy41QzMuMjUsMTAuNzMgNS4yLDYuNCA2LjA1LDZDNi41OSw2IDcsNi4wNiA3LjM3LDYuMTFDNS4yNyw4LjQyIDQuNDQsMTIuMDQgNC4xNSwxMy44N005LDEyQTEsMSAwIDAsMSA4LDExQzgsMTAuNDYgOC40NSwxMCA5LDEwQTEsMSAwIDAsMSAxMCwxMUMxMCwxMS41NiA5LjU1LDEyIDksMTJNMTUsMTJBMSwxIDAgMCwxIDE0LDExQzE0LDEwLjQ2IDE0LjQ1LDEwIDE1LDEwQTEsMSAwIDAsMSAxNiwxMUMxNiwxMS41NiAxNS41NSwxMiAxNSwxMk0xOS44NSwxMy44N0MxOS41NiwxMi4wNCAxOC43Myw4LjQyIDE2LjYzLDYuMTFDMTcsNi4wNiAxNy40MSw2IDE3Ljk1LDZDMTguOCw2LjQgMjAuNzUsMTAuNzMgMjEsMTMuNUMyMC43NSwxMy42MSAyMC4zNiwxMy43NSAxOS44NSwxMy44N1pcIjtcclxuZXhwb3J0IHZhciBtZGlEb2dTZXJ2aWNlID0gXCJNMTQsOEwxNywxMVYyMUgxNVYxNUg4TDYsMThWMjFINFYxNUw1LDE0VjExTDIsOEwzLDdMNSw5SDdWMTJBMSwxIDAgMCwwIDgsMTNIMTJBMSwxIDAgMCwwIDEzLDEyVjlMMTQsOE0xOSw1VjNMMTUsN0wxOCwxMEwxOSw5TDIwLDEwTDIyLDhMMTksNU0xMS41LDkuNUw0LjUsMi41QzQuMjMsMi4yMiAzLjc5LDIuMjIgMy41LDIuNVYyLjVDMy4yMiwyLjc3IDMuMjIsMy4yMSAzLjUsMy41TDEwLjUsMTAuNUMxMC43NywxMC43OCAxMS4yMSwxMC43OCAxMS41LDEwLjVWMTAuNUMxMS43OCwxMC4yMyAxMS43OCw5Ljc5IDExLjUsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvZ1NpZGUgPSBcIk0xOSwzTDE1LDdMMTgsMTBMMTksOUwyMCwxMEwyMiw4TDE5LDVWM00zLDdMMiw4TDUsMTFWMTRMNCwxNVYyMUg2VjE4TDgsMTVIMTVWMjFIMTdWMTFMMTQsOEwxMyw5SDVMMyw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvZ1NpZGVPZmYgPSBcIk0xOCAxMEwxNSA3TDE5IDNWNUwyMiA4TDIwIDEwTDE5IDlMMTggMTBNMTcgMTFMMTQgOEwxMyA5SDEyLjJMMTcgMTMuOFYxMU0yLjM5IDEuNzNMMS4xMSAzTDcuMTEgOUg1TDMgN0wyIDhMNSAxMVYxNEw0IDE1VjIxSDZWMThMOCAxNUgxMy4xMUwxNSAxNi44OVYyMUgxN1YxOC44OUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9sYnkgPSBcIk0yLDVWMTlIMjJWNUgyTTYsMTdINFY3SDZDOC44Niw3LjA5IDExLjEsOS4zMyAxMSwxMkMxMS4xLDE0LjY3IDguODYsMTYuOTEgNiwxN00yMCwxN0gxOEMxNS4xNCwxNi45MSAxMi45LDE0LjY3IDEzLDEyQzEyLjksOS4zMyAxNS4xNCw3LjA5IDE4LDdIMjBWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9sbHkgPSBcIk0xMS45NywxOS44OEMxMC45MywyMC4yNiA5Ljc4LDE5LjcyIDkuNCwxOC42OUM5LDE3LjY1IDkuNTUsMTYuNSAxMC41OSwxNi4xM0MxMS42MywxNS43NSAxMi43OCwxNi4yOCAxMy4xNiwxNy4zMUMxMy41NCwxOC4zNSAxMywxOS41IDExLjk3LDE5Ljg4TTkuOSwxNC4yNUM3LjgzLDE1IDYuNzYsMTcuMyA3LjUsMTkuMzhDOC4yOCwyMS40NSAxMC41OCwyMi41IDEyLjY2LDIxLjc1QzE0LjczLDIxIDE1Ljc5LDE4LjcgMTUuMDQsMTYuNjNDMTQuMjgsMTQuNTUgMTEuOTcsMTMuNSA5LjksMTQuMjVNMTUuOTQsNC41OEw5LjM3LDdMMTAuNzUsMTAuNzRMMTcuMzIsOC4zM00yMC4zMiwxMy42MkwxNS41NCwxNS4zN0MxNS43MSwxNS42NiAxNS44NSwxNS45NiAxNS45NywxNi4yOEMxNi4wOSwxNi42IDE2LjE3LDE2LjkzIDE2LjIyLDE3LjI1TDIxLDE1LjVNMTkuNTQsOC41OEwxMS4wOSwxMS42OEwxMS41OCwxM0MxMi44MywxMy4wOSAxNCwxMy42NCAxNC44OSwxNC41NUwyMC45MiwxMi4zNE0yLDJWNEg1LjA5TDguNjYsMTMuNzVDOC45NCwxMy41NyA5LjI0LDEzLjQzIDkuNTYsMTMuMzFDOS44OCwxMy4xOSAxMC4yMSwxMy4xMSAxMC41MywxMy4wNkw2LjUsMlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbWFpbiA9IFwiTTE4LDE1SDE2VjE3SDE4TTE4LDExSDE2VjEzSDE4TTIwLDE5SDEyVjE3SDE0VjE1SDEyVjEzSDE0VjExSDEyVjlIMjBNMTAsN0g4VjVIMTBNMTAsMTFIOFY5SDEwTTEwLDE1SDhWMTNIMTBNMTAsMTlIOFYxN0gxME02LDdINFY1SDZNNiwxMUg0VjlINk02LDE1SDRWMTNINk02LDE5SDRWMTdINk0xMiw3VjNIMlYyMUgyMlY3SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbWFpbk9mZiA9IFwiTTEyLDE5SDE2TDE0LDE3SDEyVjE5TTEwLDE1VjEzSDhWMTVIMTBNMTAsMTlWMTdIOFYxOUgxME02LDExVjlINFYxMUg2TTYsMTVWMTNINFYxNUg2TTYsMTlWMTdINFYxOUg2TTEuMzEsMS43OEwyMi4zMSwyMi42OUwyMSwyNEwxOCwyMUgyVjVMMC4wOSwzLjA5TDEuMzEsMS43OE0xNiwxMUgxOFYxM0gxNlYxMU04LDVWNS45MUw1LjExLDNIMTJWN0gyMlYxOS45MkwyMCwxNy45MVY5SDEyVjkuODlMOS4wOSw3SDEwVjVIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb21haW5QbHVzID0gXCJNMTIgN1YzSDJWMjFIMTMuMzVBNS44IDUuOCAwIDAgMSAxMyAxOUgxMlYxN0gxMy4zNUE1IDUgMCAwIDEgMTQgMTUuNjlWMTVIMTJWMTNIMTRWMTFIMTJWOUgyMFYxMy4wOUE1LjU4IDUuNTggMCAwIDEgMjIgMTMuODFWN002IDE5SDRWMTdINk02IDE1SDRWMTNINk02IDExSDRWOUg2TTYgN0g0VjVINk0xMCAxOUg4VjE3SDEwTTEwIDE1SDhWMTNIMTBNMTAgMTFIOFY5SDEwTTEwIDdIOFY1SDEwTTE2IDEzSDE4VjExSDE2TTE2IDExVjEzSDE4VjExTTE2IDExVjEzSDE4VjExTTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbWFpblJlbW92ZSA9IFwiTTEyIDdWM0gyVjIxSDEzLjM1QTUuOCA1LjggMCAwIDEgMTMgMTlIMTJWMTdIMTMuMzVBNSA1IDAgMCAxIDE0IDE1LjY5VjE1SDEyVjEzSDE0VjExSDEyVjlIMjBWMTMuMDlBNS41OCA1LjU4IDAgMCAxIDIyIDEzLjgxVjdNNiAxOUg0VjE3SDZNNiAxNUg0VjEzSDZNNiAxMUg0VjlINk02IDdINFY1SDZNMTAgMTlIOFYxN0gxME0xMCAxNUg4VjEzSDEwTTEwIDExSDhWOUgxME0xMCA3SDhWNUgxME0xNiAxM0gxOFYxMUgxNk0xNiAxMVYxM0gxOFYxMU0xNiAxMVYxM0gxOFYxMU0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NiAyMS4xMkwxNy41OSAxOUwxNS40NiAxNi44OEwxNi44OCAxNS40NkwxOSAxNy41OUwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlEb21lTGlnaHQgPSBcIk0yMSAxMEMyMSAxNC45NyAxNi45NyAxOSAxMiAxOUM3LjAzIDE5IDMgMTQuOTcgMyAxMFY5LjAzQzMgOC43NiAzLjExIDguNSAzLjMgOC4zQzMuNSA4LjExIDMuNzYgOCA0LjAzIDhIMjBDMjAuMjUgOCAyMC41IDguMTEgMjAuNyA4LjNDMjAuODkgOC41IDIxIDguNzUgMjEgOVYxME01IDEwQzUgMTMuODYgOC4xNCAxNyAxMiAxN0MxNS44NiAxNyAxOSAxMy44NiAxOSAxMEg1TTIwIDZWN0g0VjZDNCA1LjczIDQuMSA1LjUgNC4yOSA1LjI5QzQuNSA1LjEgNC43MyA1IDUgNUgxMFYzSDE0VjVIMTlDMTkuMjUgNSAxOS41IDUuMTEgMTkuNyA1LjNDMTkuODkgNS41IDIwIDUuNzUgMjAgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlEb21pbm9NYXNrID0gXCJNMTUuODMgOS44MUMxNC43IDkuNyAxMy42OSAxMC4zOCAxMy40NiAxMS41QzEzLjQ2IDExLjg0IDE0LjgxIDEyLjI5IDE2LjA1IDEyLjI5QzE3LjI5IDEyLjI5IDE4LjQxIDExLjUgMTguNDEgMTEuMjhDMTguNDEgMTEuMDUgMTcuNjMgOS45MyAxNS44MyA5LjgxTTguMTggOS44MUM2LjM4IDkuOTMgNS41OSAxMC45NCA1LjU5IDExLjI3QzUuNTkgMTEuNSA2LjgyIDEyLjI5IDcuOTUgMTIuMjlTMTAuNTQgMTEuODQgMTAuNTQgMTEuNUMxMC4zMSAxMC4zOCA5LjE5IDkuNyA4LjE4IDkuODFNMTYuOTUgMTZDMTUuMDQgMTYgMTMuOCAxMy43NSAxMiAxMy43NVM4Ljg1IDE2IDcuMDUgMTZDNC42OSAxNiAzIDEzLjg2IDMgMTAuMDRDMyA3LjY4IDMuNjggNyA2LjcxIDdTMTAuNTQgOC4yNCAxMiA4LjI0IDE0LjM2IDcgMTcuMjkgNyAyMSA3Ljc5IDIxIDEwLjA0QzIxIDEzLjg2IDE5LjMxIDE2IDE2Ljk1IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvbmtleSA9IFwiTTIxLjM0LDEwLjM1TDIxLjI3LDEwLjI4TDIxLjE4LDEwLjE5TDE4LDdWNkEwLjUsMC41IDAgMCwwIDE3LjUsNS41QzE3LjM2LDUuNSAxNy4yMiw1LjU2IDE3LjEzLDUuNjZMMTMuNDYsOUg3QzYuMzIsOSA1LjY5LDkuMzUgNS4zMiw5LjkyTDIuNjIsMTIuNTlDMi4yOSwxMy4wNCAyLjM5LDEzLjY2IDIuODQsMTRDMy4xOCwxNC4yNCAzLjY1LDE0LjI1IDQsMTRMNSwxMy4wN1YxOUg4VjE1SDEzVjE5SDE2VjEzLjgzQzE2LDEzLjMgMTYuMjEsMTIuNzkgMTYuNTksMTIuNDJMMTgsMTFMMjAsMTJWMTJDMjAuMTUsMTIuMDggMjAuMzIsMTIuMTMgMjAuNSwxMi4xM0MyMS4xLDEyLjExIDIxLjU5LDExLjYxIDIxLjU4LDExQzIxLjU3LDEwLjc2IDIxLjUsMTAuNTMgMjEuMzQsMTAuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9vciA9IFwiTTgsM0M2Ljg5LDMgNiwzLjg5IDYsNVYyMUgxOFY1QzE4LDMuODkgMTcuMTEsMyAxNiwzSDhNOCw1SDE2VjE5SDhWNU0xMywxMVYxM0gxNVYxMUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEb29yQ2xvc2VkID0gXCJNMTYsMTFIMThWMTNIMTZWMTFNMTIsM0gxOUMyMC4xMSwzIDIxLDMuODkgMjEsNVYxOUgyMlYyMUgyVjE5SDEwVjVDMTAsMy44OSAxMC44OSwzIDEyLDNNMTIsNVYxOUgxOVY1SDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvb3JDbG9zZWRMb2NrID0gXCJNMTYgMTFIMThWMTNIMTZWMTFNMTIgM0gxOUEyIDIgMCAwIDEgMjEgNVYxOUgyMlYyMUgyVjE5SDEwVjVBMiAyIDAgMCAxIDEyIDNNMTIgNVYxOUgxOVY1TTYuMiA1SDIuOFY0LjVBMS43IDEuNyAwIDAgMSA2LjIgNC41TTcgNVY0LjVBMi41IDIuNSAwIDAgMCAyIDQuNVY1QTEgMSAwIDAgMCAxIDZWMTBBMSAxIDAgMCAwIDIgMTFIN0ExIDEgMCAwIDAgOCAxMFY2QTEgMSAwIDAgMCA3IDVcIjtcclxuZXhwb3J0IHZhciBtZGlEb29yT3BlbiA9IFwiTTEyLDNDMTAuODksMyAxMCwzLjg5IDEwLDVIM1YxOUgyVjIxSDIyVjE5SDIxVjVDMjEsMy44OSAyMC4xMSwzIDE5LDNIMTJNMTIsNUgxOVYxOUgxMlY1TTUsMTFIN1YxM0g1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaURvb3JiZWxsID0gXCJNMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyUzEwLjkgMTQgMTIgMTQgMTQgMTMuMSAxNCAxMiAxMy4xIDEwIDEyIDEwTTE2IDJIOEM2LjkgMiA2IDIuOSA2IDRWMjBDNiAyMS4xIDYuOSAyMiA4IDIySDE2QzE3LjEgMjIgMTggMjEuMSAxOCAyMFY0QzE4IDIuOSAxNy4xIDIgMTYgMk0xNiAyMEg4VjRIMTZWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG9vcmJlbGxWaWRlbyA9IFwiTTE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3UzEwIDE2LjExIDEwIDE1IDEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNU0xOCA0VjIwQzE4IDIxLjEgMTcuMTEgMjIgMTYgMjJIOEM2LjkgMjIgNiAyMS4xMSA2IDIwVjRDNiAyLjkgNi45IDIgOCAySDE2QzE3LjExIDIgMTggMi45IDE4IDRNMTAuNSA3QzEwLjUgNy44MyAxMS4xNyA4LjUgMTIgOC41UzEzLjUgNy44MyAxMy41IDcgMTIuODMgNS41IDEyIDUuNSAxMC41IDYuMTcgMTAuNSA3TTE2IDEwSDhWMjBIMTZWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90TmV0ID0gXCJNMiwxNUExLDEgMCAwLDEgMywxNkExLDEgMCAwLDEgMiwxN0ExLDEgMCAwLDEgMSwxNkExLDEgMCAwLDEgMiwxNU0yMSwxN0gxOVY5SDE3VjdIMjNWOUgyMVYxN00xNiw3VjlIMTRWMTFIMTZWMTNIMTRWMTVIMTZWMTdIMTJWN0gxNk0xMSw3VjE3SDlMNiwxMVYxN0g0VjdINkw5LDEzVjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c0dyaWQgPSBcIk0xMiAxNkMxMy4xIDE2IDE0IDE2LjkgMTQgMThTMTMuMSAyMCAxMiAyMCAxMCAxOS4xIDEwIDE4IDEwLjkgMTYgMTIgMTZNMTIgMTBDMTMuMSAxMCAxNCAxMC45IDE0IDEyUzEzLjEgMTQgMTIgMTQgMTAgMTMuMSAxMCAxMiAxMC45IDEwIDEyIDEwTTEyIDRDMTMuMSA0IDE0IDQuOSAxNCA2UzEzLjEgOCAxMiA4IDEwIDcuMSAxMCA2IDEwLjkgNCAxMiA0TTYgMTZDNy4xIDE2IDggMTYuOSA4IDE4UzcuMSAyMCA2IDIwIDQgMTkuMSA0IDE4IDQuOSAxNiA2IDE2TTYgMTBDNy4xIDEwIDggMTAuOSA4IDEyUzcuMSAxNCA2IDE0IDQgMTMuMSA0IDEyIDQuOSAxMCA2IDEwTTYgNEM3LjEgNCA4IDQuOSA4IDZTNy4xIDggNiA4IDQgNy4xIDQgNiA0LjkgNCA2IDRNMTggMTZDMTkuMSAxNiAyMCAxNi45IDIwIDE4UzE5LjEgMjAgMTggMjAgMTYgMTkuMSAxNiAxOCAxNi45IDE2IDE4IDE2TTE4IDEwQzE5LjEgMTAgMjAgMTAuOSAyMCAxMlMxOS4xIDE0IDE4IDE0IDE2IDEzLjEgMTYgMTIgMTYuOSAxMCAxOCAxME0xOCA0QzE5LjEgNCAyMCA0LjkgMjAgNlMxOS4xIDggMTggOCAxNiA3LjEgMTYgNiAxNi45IDQgMTggNFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3RzSGV4YWdvbiA9IFwiTTE2IDEyQzE2IDEwLjkgMTYuOSAxMCAxOCAxMFMyMCAxMC45IDIwIDEyIDE5LjEgMTQgMTggMTQgMTYgMTMuMSAxNiAxMk0xMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBTMTQgMTAuOSAxNCAxMiAxMy4xIDE0IDEyIDE0IDEwIDEzLjEgMTAgMTJNNCAxMkM0IDEwLjkgNC45IDEwIDYgMTBTOCAxMC45IDggMTIgNy4xIDE0IDYgMTQgNCAxMy4xIDQgMTJNMTMgMThDMTMgMTYuOSAxMy45IDE2IDE1IDE2UzE3IDE2LjkgMTcgMTggMTYuMSAyMCAxNSAyMCAxMyAxOS4xIDEzIDE4TTcgMThDNyAxNi45IDcuOSAxNiA5IDE2UzExIDE2LjkgMTEgMTggMTAuMSAyMCA5IDIwIDcgMTkuMSA3IDE4TTEzIDZDMTMgNC45IDEzLjkgNCAxNSA0UzE3IDQuOSAxNyA2IDE2LjEgOCAxNSA4IDEzIDcuMSAxMyA2TTcgNkM3IDQuOSA3LjkgNCA5IDRTMTEgNC45IDExIDYgMTAuMSA4IDkgOCA3IDcuMSA3IDZcIjtcclxuZXhwb3J0IHZhciBtZGlEb3RzSG9yaXpvbnRhbCA9IFwiTTE2LDEyQTIsMiAwIDAsMSAxOCwxMEEyLDIgMCAwLDEgMjAsMTJBMiwyIDAgMCwxIDE4LDE0QTIsMiAwIDAsMSAxNiwxMk0xMCwxMkEyLDIgMCAwLDEgMTIsMTBBMiwyIDAgMCwxIDE0LDEyQTIsMiAwIDAsMSAxMiwxNEEyLDIgMCAwLDEgMTAsMTJNNCwxMkEyLDIgMCAwLDEgNiwxMEEyLDIgMCAwLDEgOCwxMkEyLDIgMCAwLDEgNiwxNEEyLDIgMCAwLDEgNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3RzSG9yaXpvbnRhbENpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgMTIsMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMC41TTYuNSwxMC41QTEuNSwxLjUgMCAwLDAgNSwxMkExLjUsMS41IDAgMCwwIDYuNSwxMy41QTEuNSwxLjUgMCAwLDAgOCwxMkExLjUsMS41IDAgMCwwIDYuNSwxMC41TTE3LjUsMTAuNUExLjUsMS41IDAgMCwwIDE2LDEyQTEuNSwxLjUgMCAwLDAgMTcuNSwxMy41QTEuNSwxLjUgMCAwLDAgMTksMTJBMS41LDEuNSAwIDAsMCAxNy41LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c0hvcml6b250YWxDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0TTEyLDEwLjVBMS41LDEuNSAwIDAsMSAxMy41LDEyQTEuNSwxLjUgMCAwLDEgMTIsMTMuNUExLjUsMS41IDAgMCwxIDEwLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMC41TTcuNSwxMC41QTEuNSwxLjUgMCAwLDEgOSwxMkExLjUsMS41IDAgMCwxIDcuNSwxMy41QTEuNSwxLjUgMCAwLDEgNiwxMkExLjUsMS41IDAgMCwxIDcuNSwxMC41TTE2LjUsMTAuNUExLjUsMS41IDAgMCwxIDE4LDEyQTEuNSwxLjUgMCAwLDEgMTYuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTUsMTJBMS41LDEuNSAwIDAsMSAxNi41LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1NxdWFyZSA9IFwiTTEyIDE2QzEzLjEgMTYgMTQgMTYuOSAxNCAxOFMxMy4xIDIwIDEyIDIwIDEwIDE5LjEgMTAgMTggMTAuOSAxNiAxMiAxNk0xMiA0QzEzLjEgNCAxNCA0LjkgMTQgNlMxMy4xIDggMTIgOCAxMCA3LjEgMTAgNiAxMC45IDQgMTIgNE02IDE2QzcuMSAxNiA4IDE2LjkgOCAxOFM3LjEgMjAgNiAyMCA0IDE5LjEgNCAxOCA0LjkgMTYgNiAxNk02IDEwQzcuMSAxMCA4IDEwLjkgOCAxMlM3LjEgMTQgNiAxNCA0IDEzLjEgNCAxMiA0LjkgMTAgNiAxME02IDRDNy4xIDQgOCA0LjkgOCA2UzcuMSA4IDYgOCA0IDcuMSA0IDYgNC45IDQgNiA0TTE4IDE2QzE5LjEgMTYgMjAgMTYuOSAyMCAxOFMxOS4xIDIwIDE4IDIwIDE2IDE5LjEgMTYgMTggMTYuOSAxNiAxOCAxNk0xOCAxMEMxOS4xIDEwIDIwIDEwLjkgMjAgMTJTMTkuMSAxNCAxOCAxNCAxNiAxMy4xIDE2IDEyIDE2LjkgMTAgMTggMTBNMTggNEMxOS4xIDQgMjAgNC45IDIwIDZTMTkuMSA4IDE4IDggMTYgNy4xIDE2IDYgMTYuOSA0IDE4IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1RyaWFuZ2xlID0gXCJNMTIgMTZDMTMuMSAxNiAxNCAxNi45IDE0IDE4UzEzLjEgMjAgMTIgMjAgMTAgMTkuMSAxMCAxOCAxMC45IDE2IDEyIDE2TTE1IDEwQzE2LjEgMTAgMTcgMTAuOSAxNyAxMlMxNi4xIDE0IDE1IDE0IDEzIDEzLjEgMTMgMTIgMTMuOSAxMCAxNSAxME02IDE2QzcuMSAxNiA4IDE2LjkgOCAxOFM3LjEgMjAgNiAyMCA0IDE5LjEgNCAxOCA0LjkgMTYgNiAxNk05IDEwQzEwLjEgMTAgMTEgMTAuOSAxMSAxMlMxMC4xIDE0IDkgMTQgNyAxMy4xIDcgMTIgNy45IDEwIDkgMTBNMTIgNEMxMy4xIDQgMTQgNC45IDE0IDZTMTMuMSA4IDEyIDggMTAgNy4xIDEwIDYgMTAuOSA0IDEyIDRNMTggMTZDMTkuMSAxNiAyMCAxNi45IDIwIDE4UzE5LjEgMjAgMTggMjAgMTYgMTkuMSAxNiAxOCAxNi45IDE2IDE4IDE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1ZlcnRpY2FsID0gXCJNMTIsMTZBMiwyIDAgMCwxIDE0LDE4QTIsMiAwIDAsMSAxMiwyMEEyLDIgMCAwLDEgMTAsMThBMiwyIDAgMCwxIDEyLDE2TTEyLDEwQTIsMiAwIDAsMSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRBMiwyIDAgMCwxIDEwLDEyQTIsMiAwIDAsMSAxMiwxME0xMiw0QTIsMiAwIDAsMSAxNCw2QTIsMiAwIDAsMSAxMiw4QTIsMiAwIDAsMSAxMCw2QTIsMiAwIDAsMSAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvdHNWZXJ0aWNhbENpcmNsZSA9IFwiTTIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyTTEwLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyTTEwLjUsMTcuNUExLjUsMS41IDAgMCwwIDEyLDE5QTEuNSwxLjUgMCAwLDAgMTMuNSwxNy41QTEuNSwxLjUgMCAwLDAgMTIsMTZBMS41LDEuNSAwIDAsMCAxMC41LDE3LjVNMTAuNSw2LjVBMS41LDEuNSAwIDAsMCAxMiw4QTEuNSwxLjUgMCAwLDAgMTMuNSw2LjVBMS41LDEuNSAwIDAsMCAxMiw1QTEuNSwxLjUgMCAwLDAgMTAuNSw2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG90c1ZlcnRpY2FsQ2lyY2xlT3V0bGluZSA9IFwiTTEwLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMkExLjUsMS41IDAgMCwxIDEyLDEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyTTEwLjUsMTYuNUExLjUsMS41IDAgMCwxIDEyLDE1QTEuNSwxLjUgMCAwLDEgMTMuNSwxNi41QTEuNSwxLjUgMCAwLDEgMTIsMThBMS41LDEuNSAwIDAsMSAxMC41LDE2LjVNMTAuNSw3LjVBMS41LDEuNSAwIDAsMSAxMiw2QTEuNSwxLjUgMCAwLDEgMTMuNSw3LjVBMS41LDEuNSAwIDAsMSAxMiw5QTEuNSwxLjUgMCAwLDEgMTAuNSw3LjVNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvdWJhbiA9IFwiTTIwLDZINFY0SDIwVjZNMjAsMThWMjBINFYxOEg3LjMzTDYuMjYsMTRINVY4SDE5VjE0SDE3Ljc0TDE2LjY3LDE4SDIwTTcsMTJIMTdWMTBIN1YxMk05LjQsMThIMTQuNkwxNS42NywxNEg4LjMzTDkuNCwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZCA9IFwiTTUsMjBIMTlWMThINU0xOSw5SDE1VjNIOVY5SDVMMTIsMTZMMTksOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZEJveCA9IFwiTTUgM0gxOUMyMC4xMSAzIDIxIDMuOSAyMSA1VjE5QzIxIDIwLjExIDIwLjExIDIxIDE5IDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM004IDE3SDE2VjE1SDhWMTdNMTYgMTBIMTMuNVY3SDEwLjVWMTBIOEwxMiAxNEwxNiAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZEJveE91dGxpbmUgPSBcIk04IDE3VjE1SDE2VjE3SDhNMTYgMTBMMTIgMTRMOCAxMEgxMC41VjdIMTMuNVYxMEgxNk01IDNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNVYxOUMyMSAyMC4xMSAyMC4xMSAyMSAxOSAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNNNSA1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZENpcmNsZSA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJDNi41IDIyIDIgMTcuNSAyIDEyQzIgNi41IDYuNSAyIDEyIDJNOCAxN0gxNlYxNUg4VjE3TTE2IDEwSDEzLjVWNkgxMC41VjEwSDhMMTIgMTRMMTYgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRDaXJjbGVPdXRsaW5lID0gXCJNOCAxN1YxNUgxNlYxN0g4TTE2IDEwTDEyIDE0TDggMTBIMTAuNVY2SDEzLjVWMTBIMTZNMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyQzIyIDE3LjUgMTcuNSAyMiAxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMk0xMiA0QzcuNTggNCA0IDcuNTggNCAxMkM0IDE2LjQyIDcuNTggMjAgMTIgMjBDMTYuNDIgMjAgMjAgMTYuNDIgMjAgMTJDMjAgNy41OCAxNi40MiA0IDEyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRMb2NrID0gXCJNNSAyMEgxNFYxOEg1TTE5IDlIMTVWM0g5VjlINUwxMiAxNk0yMiAxNkExLjA4IDEuMDggMCAwIDEgMjMgMTdWMjFBMS4wOCAxLjA4IDAgMCAxIDIyIDIySDE3QTEuMDggMS4wOCAwIDAgMSAxNiAyMVYxN0ExLjA4IDEuMDggMCAwIDEgMTcgMTZWMTQuNUEyLjUgMi41IDAgMCAxIDIyIDE0LjVWMTZNMjEgMTZWMTQuNUExLjUgMS41IDAgMCAwIDE4IDE0LjVWMTZIMjFcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZExvY2tPdXRsaW5lID0gXCJNMjIgMTZBMS4wOCAxLjA4IDAgMCAxIDIzIDE3VjIxQTEuMDggMS4wOCAwIDAgMSAyMiAyMkgxN0ExLjA4IDEuMDggMCAwIDEgMTYgMjFWMTdBMS4wOCAxLjA4IDAgMCAxIDE3IDE2VjE0LjVBMi41IDIuNSAwIDAgMSAyMiAxNC41VjE2TTIxIDE2VjE0LjVBMS41IDEuNSAwIDAgMCAxOCAxNC41VjE2SDIxTTEzIDVWMTFIMTQuMTdMMTIgMTMuMTdMOS44MyAxMUgxMVY1SDEzTTE1IDNIOVY5SDVMMTIgMTZMMTkgOUgxNVYzTTE0IDE4SDVWMjBIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRNdWx0aXBsZSA9IFwiTTksMVY3SDVMMTIsMTRMMTksN0gxNVYxSDlNNSwxNlYxOEgxOVYxNkg1TTUsMjBWMjJIMTlWMjBINVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZE5ldHdvcmsgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjE1QTIsMiAwIDAsMSAxNywxN0gxM1YxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0M1Ljg5LDE3IDUsMTYuMSA1LDE1VjVBMiwyIDAgMCwxIDcsM0gxN00xMiwxNC41TDE2LjUsMTBIMTNWNkgxMVYxMEg3LjVMMTIsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlEb3dubG9hZE5ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xMiwxNEwxNiwxMEgxM1Y2SDExVjEwSDhMMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRG93bmxvYWRPZmYgPSBcIk0yMC44NCAyMi43M0wxOC4xMSAyMEg1VjE4SDE2LjExTDEzLjA2IDE0Ljk1TDEyIDE2TDUgOUg3LjExTDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTkgOUgxNVYzSDlWNS44TDE1LjYgMTIuNEwxOSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvd25sb2FkT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNy4xMSA5SDVMMTIgMTZMMTMuMDYgMTQuOTVMMTYuMTEgMThINVYyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMSA1SDEzVjkuOEwxNS42IDEyLjRMMTkgOUgxNVYzSDlWNS44TDExIDcuOFY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURvd25sb2FkT3V0bGluZSA9IFwiTTEzLDVWMTFIMTQuMTdMMTIsMTMuMTdMOS44MywxMUgxMVY1SDEzTTE1LDNIOVY5SDVMMTIsMTZMMTksOUgxNVYzTTE5LDE4SDVWMjBIMTlWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJhZyA9IFwiTTcsMTlWMTdIOVYxOUg3TTExLDE5VjE3SDEzVjE5SDExTTE1LDE5VjE3SDE3VjE5SDE1TTcsMTVWMTNIOVYxNUg3TTExLDE1VjEzSDEzVjE1SDExTTE1LDE1VjEzSDE3VjE1SDE1TTcsMTFWOUg5VjExSDdNMTEsMTFWOUgxM1YxMUgxMU0xNSwxMVY5SDE3VjExSDE1TTcsN1Y1SDlWN0g3TTExLDdWNUgxM1Y3SDExTTE1LDdWNUgxN1Y3SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYWdIb3Jpem9udGFsID0gXCJNMywxNVYxM0g1VjE1SDNNMywxMVY5SDVWMTFIM003LDE1VjEzSDlWMTVIN003LDExVjlIOVYxMUg3TTExLDE1VjEzSDEzVjE1SDExTTExLDExVjlIMTNWMTFIMTFNMTUsMTVWMTNIMTdWMTVIMTVNMTUsMTFWOUgxN1YxMUgxNU0xOSwxNVYxM0gyMVYxNUgxOU0xOSwxMVY5SDIxVjExSDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYWdIb3Jpem9udGFsVmFyaWFudCA9IFwiTTIxIDExSDNWOUgyMVYxMU0yMSAxM0gzVjE1SDIxVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYWdWYXJpYW50ID0gXCJNMjIuNjcsMTJMMTguMTgsMTYuNUwxNS42NywxNEwxNy42NSwxMkwxNS42NywxMC4wNEwxOC4xOCw3LjUzTDIyLjY3LDEyTTEyLDEuMzNMMTYuNDcsNS44MkwxMy45Niw4LjMzTDEyLDYuMzVMMTAsOC4zM0w3LjUsNS44MkwxMiwxLjMzTTEyLDIyLjY3TDcuNTMsMTguMThMMTAuMDQsMTUuNjdMMTIsMTcuNjVMMTQsMTUuNjdMMTYuNSwxOC4xOEwxMiwyMi42N00xLjMzLDEyTDUuODIsNy41TDguMzMsMTBMNi4zNSwxMkw4LjMzLDEzLjk2TDUuODIsMTYuNDdMMS4zMywxMk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJhZ1ZlcnRpY2FsID0gXCJNOSwzSDExVjVIOVYzTTEzLDNIMTVWNUgxM1YzTTksN0gxMVY5SDlWN00xMyw3SDE1VjlIMTNWN005LDExSDExVjEzSDlWMTFNMTMsMTFIMTVWMTNIMTNWMTFNOSwxNUgxMVYxN0g5VjE1TTEzLDE1SDE1VjE3SDEzVjE1TTksMTlIMTFWMjFIOVYxOU0xMywxOUgxNVYyMUgxM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlEcmFnVmVydGljYWxWYXJpYW50ID0gXCJNMTEgMjFIOVYzSDExVjIxTTE1IDNIMTNWMjFIMTVWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlEcmFtYU1hc2tzID0gXCJNOC4xMSwxOS40NUM1Ljk0LDE4LjY1IDQuMjIsMTYuNzggMy43MSwxNC4zNUwyLjA1LDYuNTRDMS44MSw1LjQ2IDIuNSw0LjQgMy41OCw0LjE3TDEzLjM1LDIuMUwxMy4zOCwyLjA5QzE0LjQ1LDEuODggMTUuNSwyLjU3IDE1LjcyLDMuNjNMMTYuMDcsNS4zTDIwLjQyLDYuMjNIMjAuNDVDMjEuNSw2LjQ3IDIyLjE4LDcuNTMgMjEuOTYsOC41OUwyMC4zLDE2LjQxQzE5LjUsMjAuMTggMTUuNzgsMjIuNiAxMiwyMS43OUMxMC40MiwyMS40NiA5LjA4LDIwLjYxIDguMTEsMTkuNDVWMTkuNDVNMjAsOC4xOEwxMC4yMyw2LjFMOC41NywxMy45MlYxMy45NUM4LDE2LjYzIDkuNzMsMTkuMjcgMTIuNDIsMTkuODRDMTUuMTEsMjAuNDEgMTcuNzcsMTguNjkgMTguMzQsMTZMMjAsOC4xOE0xNiwxNi41QzE1LjM3LDE3LjU3IDE0LjExLDE4LjE2IDEyLjgzLDE3Ljg5QzExLjU2LDE3LjYyIDEwLjY1LDE2LjU3IDEwLjUsMTUuMzRMMTYsMTYuNU04LjQ3LDUuMTdMNCw2LjEzTDUuNjYsMTMuOTRMNS42NywxMy45N0M1LjgyLDE0LjY4IDYuMTIsMTUuMzIgNi41MywxNS44N0M2LjQzLDE1LjEgNi40NSwxNC4zIDYuNjIsMTMuNUw3LjA1LDExLjVDNi42LDExLjQyIDYuMjEsMTEuMTcgNiwxMC44MUM2LjA2LDEwLjIgNi41Niw5LjY2IDcuMjUsOS41QzcuMzMsOS41IDcuNCw5LjUgNy41LDkuNUw4LjI4LDUuNjlDOC4zMiw1LjUgOC4zOCw1LjMzIDguNDcsNS4xN00xNS4wMywxMi4yM0MxNS4zNSwxMS43IDE2LjAzLDExLjQyIDE2LjcyLDExLjU3QzE3LjQxLDExLjcxIDE3LjkxLDEyLjI0IDE4LDEyLjg2QzE3LjY3LDEzLjM4IDE3LDEzLjY2IDE2LjMsMTMuNUMxNS42MSwxMy4zNyAxNS4xMSwxMi44NCAxNS4wMywxMi4yM00xMC4xNSwxMS4xOUMxMC40NywxMC42NiAxMS4xNCwxMC4zOCAxMS44MywxMC41M0MxMi41LDEwLjY3IDEzLjAzLDExLjIxIDEzLjExLDExLjgyQzEyLjc4LDEyLjM0IDEyLjExLDEyLjYzIDExLjQyLDEyLjVDMTAuNzMsMTIuMzMgMTAuMjMsMTEuOCAxMC4xNSwxMS4xOU0xMS45Nyw0LjQzTDEzLjkzLDQuODVMMTMuNzcsNC4wNUwxMS45Nyw0LjQzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYXcgPSBcIk05Ljc1IDIwLjg1QzExLjUzIDIwLjE1IDExLjE0IDE4LjIyIDEwLjI0IDE3QzkuMzUgMTUuNzUgOC4xMiAxNC44OSA2Ljg4IDE0LjA2QzYgMTMuNSA1LjE5IDEyLjggNC41NCAxMkM0LjI2IDExLjY3IDMuNjkgMTEuMDYgNC4yNyAxMC45NEM0Ljg2IDEwLjgyIDUuODggMTEuNCA2LjQgMTEuNjJDNy4zMSAxMiA4LjIxIDEyLjQ0IDkuMDUgMTIuOTZMMTAuMDYgMTEuMjZDOC41IDEwLjIzIDYuNSA5LjMyIDQuNjQgOS4wNUMzLjU4IDguODkgMi40NiA5LjExIDIuMSAxMC4yNkMxLjc4IDExLjI1IDIuMjkgMTIuMjUgMi44NyAxMy4wM0M0LjI0IDE0Ljg2IDYuMzcgMTUuNzQgNy45NiAxNy4zMkM4LjMgMTcuNjUgOC43MSAxOC4wNCA4LjkxIDE4LjVDOS4xMiAxOC45NCA5LjA3IDE4Ljk3IDguNiAxOC45N0M3LjM2IDE4Ljk3IDUuODEgMTggNC44IDE3LjM2TDMuNzkgMTkuMDZDNS4zMiAyMCA3Ljg4IDIxLjQ3IDkuNzUgMjAuODVNMjAuODQgNS4yNUMyMS4wNiA1LjAzIDIxLjA2IDQuNjcgMjAuODQgNC40NkwxOS41NCAzLjE2QzE5LjMzIDIuOTUgMTguOTcgMi45NSAxOC43NiAzLjE2TDE3Ljc0IDQuMThMMTkuODIgNi4yNk0xMSAxMC45MlYxM0gxMy4wOEwxOS4yMyA2Ljg1TDE3LjE1IDQuNzdMMTEgMTAuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJhd2luZyA9IFwiTTguNSwzQTUuNSw1LjUgMCAwLDEgMTQsOC41QzE0LDkuODMgMTMuNTMsMTEuMDUgMTIuNzQsMTJIMjFWMjFIMTJWMTIuNzRDMTEuMDUsMTMuNTMgOS44MywxNCA4LjUsMTRBNS41LDUuNSAwIDAsMSAzLDguNUE1LjUsNS41IDAgMCwxIDguNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyYXdpbmdCb3ggPSBcIk0xOCwxOEgxMlYxMi4yMUMxMS4zNCwxMi44MiAxMC40NywxMy4yIDkuNSwxMy4yQzcuNDYsMTMuMiA1LjgsMTEuNTQgNS44LDkuNUEzLjcsMy43IDAgMCwxIDkuNSw1LjhDMTEuNTQsNS44IDEzLjIsNy40NiAxMy4yLDkuNUMxMy4yLDEwLjQ3IDEyLjgyLDExLjM0IDEyLjIxLDEySDE4TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaURyZXNzZXIgPSBcIk00IDNDMi45IDMgMiAzLjkgMiA1VjhIMjJWNUMyMiAzLjkgMjEuMTEgMyAyMCAzSDRNMTAgNUgxNFY2SDEwVjVNMiA5VjE0SDIyVjlIMk0xMCAxMUgxNFYxMkgxMFYxMU0yIDE1VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBWMjFINlYyMEgxOFYyMUgyMFYyMEMyMS4xMSAyMCAyMiAxOS4xMSAyMiAxOFYxNUgyTTEwIDE3SDE0VjE4SDEwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaURyZXNzZXJPdXRsaW5lID0gXCJNNCAzQzIuOSAzIDIgMy45IDIgNVYxOEMyIDE5LjExIDIuOSAyMCA0IDIwVjIxSDZWMjBIMThWMjFIMjBWMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWNUMyMiAzLjkgMjEuMTEgMyAyMCAzSDRNNCA1SDIwVjhINFY1TTEwIDZWN0gxNFY2SDEwTTQgMTBIMjBWMTNINFYxME0xMCAxMVYxMkgxNFYxMUgxME00IDE1SDIwVjE4SDRWMTVNMTAgMTZWMTdIMTRWMTZIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHJvbmUgPSBcIk0yMiwxMUgyMUwyMCw5SDEzLjc1TDE2LDEyLjVIMTRMMTAuNzUsOUg0QzMuNDUsOSAyLDguNTUgMiw4QzIsNy40NSAzLjUsNS41IDUuNSw1LjVDNy41LDUuNSA3LjY3LDYuNSA5LDdIMjFBMSwxIDAgMCwxIDIyLDhWOUwyMiwxMU0xMC43NSw2LjVMMTQsM0gxNkwxMy43NSw2LjVIMTAuNzVNMTgsMTFWOS41SDE5Ljc1TDE5LDExSDE4TTMsMTlBMSwxIDAgMCwxIDIsMThBMSwxIDAgMCwxIDMsMTdBNCw0IDAgMCwxIDcsMjFBMSwxIDAgMCwxIDYsMjJBMSwxIDAgMCwxIDUsMjFBMiwyIDAgMCwwIDMsMTlNMTEsMjFBMSwxIDAgMCwxIDEwLDIyQTEsMSAwIDAsMSA5LDIxQTYsNiAwIDAsMCAzLDE1QTEsMSAwIDAsMSAyLDE0QTEsMSAwIDAsMSAzLDEzQTgsOCAwIDAsMSAxMSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlEcm9wYm94ID0gXCJNMyA2LjJMOCA5LjM5TDEzIDYuMkw4IDNMMyA2LjJNMTMgNi4yTDE4IDkuMzlMMjMgNi4yTDE4IDNMMTMgNi4yTTMgMTIuNTVMOCAxNS43NEwxMyAxMi41NUw4IDkuMzVMMyAxMi41NU0xOCA5LjM1TDEzIDEyLjU1TDE4IDE1Ljc0TDIzIDEyLjU1TDE4IDkuMzVNOC4wMyAxNi44TDEzLjA0IDIwTDE4LjA0IDE2LjhMMTMuMDQgMTMuNjFMOC4wMyAxNi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaURydXBhbCA9IFwiTTIwLjQ3LDE0LjY1QzIwLjQ3LDE1LjI5IDIwLjI1LDE2LjM2IDE5LjgzLDE3LjFDMTkuNCwxNy44NSAxOS4wOCwxOC4wNiAxOC40NCwxOC4wNkMxNy43LDE3Ljk1IDE2LjMxLDE1LjgyIDE1LjM2LDE1LjcyQzE0LjE4LDE1LjcyIDExLjczLDE4LjE3IDkuNzEsMTguMTdDOC41NCwxOC4xNyA4LjExLDE3Ljk1IDcuNzksMTcuNzRDNy4xNSwxNy4zMSA2Ljk0LDE2LjY3IDYuOTQsMTUuODJDNi45NCwxNC4yMiA4LjQzLDEyLjg0IDEwLjI0LDEyLjg0QzEyLjU5LDEyLjg0IDE0LjE4LDE1LjE4IDE1LjM2LDE1LjA4QzE2LjMxLDE1LjA4IDE4LjIzLDEzLjE2IDE5LjE5LDEzLjE2QzIwLjE1LDEyLjk1IDIwLjQ3LDE0IDIwLjQ3LDE0LjY1TTE2LjYzLDUuMjhDMTUuNTcsNC42NCAxNC42MSw0LjMyIDEzLjU0LDMuNjhDMTIuOTEsMy4yNSAxMi4wNSwyLjMgMTEuMzEsMS40NEMxMSwyLjgzIDEwLjc4LDMuMzYgMTAuMjQsMy43OUM5LjE4LDQuNTMgOC42NCw0Ljg1IDcuNjksNS4yOEM2Ljk0LDUuNyAzLDguMDUgMywxMy4xNkMzLDE4LjI3IDcuMzcsMjIgMTIuMDUsMjJDMTYuODUsMjIgMjEsMTguNSAyMSwxMy4yN0MyMS4yMSw4LjA1IDE3LjI3LDUuNyAxNi42Myw1LjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUR1Y2sgPSBcIk04LjUsNUExLjUsMS41IDAgMCwwIDcsNi41QTEuNSwxLjUgMCAwLDAgOC41LDhBMS41LDEuNSAwIDAsMCAxMCw2LjVBMS41LDEuNSAwIDAsMCA4LjUsNU0xMCwyQTUsNSAwIDAsMSAxNSw3QzE1LDguNyAxNC4xNSwxMC4yIDEyLjg2LDExLjFDMTQuNDQsMTEuMjUgMTYuMjIsMTEuNjEgMTgsMTIuNUMyMSwxNCAyMiwxMiAyMiwxMkMyMiwxMiAyMSwyMSAxNSwyMUg5QzksMjEgNCwyMSA0LDE2QzQsMTMgNywxMiA2LDEwQzIsMTAgMiw2LjUgMiw2LjVDMyw3IDQuMjQsNyA1LDYuNjVDNS4xOSw0LjA1IDcuMzYsMiAxMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUR1bWJiZWxsID0gXCJNMjAuNTcsMTQuODZMMjIsMTMuNDNMMjAuNTcsMTJMMTcsMTUuNTdMOC40Myw3TDEyLDMuNDNMMTAuNTcsMkw5LjE0LDMuNDNMNy43MSwyTDUuNTcsNC4xNEw0LjE0LDIuNzFMMi43MSw0LjE0TDQuMTQsNS41N0wyLDcuNzFMMy40Myw5LjE0TDIsMTAuNTdMMy40MywxMkw3LDguNDNMMTUuNTcsMTdMMTIsMjAuNTdMMTMuNDMsMjJMMTQuODYsMjAuNTdMMTYuMjksMjJMMTguNDMsMTkuODZMMTkuODYsMjEuMjlMMjEuMjksMTkuODZMMTkuODYsMTguNDNMMjIsMTYuMjlMMjAuNTcsMTQuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRHVtcFRydWNrID0gXCJNMjAsOEgxOUwxNyw4SDE1VjE0SDJWMTdIM0EzLDMgMCAwLDAgNiwyMEEzLDMgMCAwLDAgOSwxN0gxNUEzLDMgMCAwLDAgMTgsMjBBMywzIDAgMCwwIDIxLDE3SDIzVjEyTDIwLDhNNiwxOC41QTEuNSwxLjUgMCAwLDEgNC41LDE3QTEuNSwxLjUgMCAwLDEgNiwxNS41QTEuNSwxLjUgMCAwLDEgNy41LDE3QTEuNSwxLjUgMCAwLDEgNiwxOC41TTE4LDE4LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTUuNUExLjUsMS41IDAgMCwxIDE5LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxOC41TTE3LDEyVjkuNUgxOS41TDIxLjQ2LDEySDE3TTE4LDdIMTRWMTNIM0wxLjU3LDhIMVY2SDEzTDE0LDVIMThWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJIZWFyaW5nID0gXCJNMTcsMjBDMTYuNzEsMjAgMTYuNDQsMTkuOTQgMTYuMjQsMTkuODVDMTUuNTMsMTkuNSAxNS4wMywxOC45NyAxNC41MywxNy40N0MxNCwxNS45MSAxMy4wNiwxNS4xOCAxMi4xNCwxNC40N0MxMS4zNSwxMy44NiAxMC41MywxMy4yMyA5LjgyLDExLjk0QzkuMjksMTEgOSw5LjkzIDksOUM5LDYuMiAxMS4yLDQgMTQsNEMxNi44LDQgMTksNi4yIDE5LDlIMjFDMjEsNS4wNyAxNy45MywyIDE0LDJDMTAuMDcsMiA3LDUuMDcgNyw5QzcsMTAuMjYgNy4zOCwxMS42NSA4LjA3LDEyLjlDOSwxNC41NSAxMC4wNSwxNS4zOCAxMC45MiwxNi4wNUMxMS43MywxNi42NyAxMi4zMSwxNy4xMiAxMi42MywxOC4xQzEzLjIzLDE5LjkyIDE0LDIwLjk0IDE1LjM2LDIxLjY1QzE1Ljg3LDIxLjg4IDE2LjQzLDIyIDE3LDIyQTQsNCAwIDAsMCAyMSwxOEgxOUEyLDIgMCAwLDEgMTcsMjBNNy42NCwyLjY0TDYuMjIsMS4yMkM0LjIzLDMuMjEgMyw1Ljk2IDMsOUMzLDEyLjA0IDQuMjMsMTQuNzkgNi4yMiwxNi43OEw3LjYzLDE1LjM3QzYsMTMuNzQgNSwxMS41IDUsOUM1LDYuNSA2LDQuMjYgNy42NCwyLjY0TTExLjUsOUEyLjUsMi41IDAgMCwwIDE0LDExLjVBMi41LDIuNSAwIDAsMCAxNi41LDlBMi41LDIuNSAwIDAsMCAxNCw2LjVBMi41LDIuNSAwIDAsMCAxMS41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFySGVhcmluZ09mZiA9IFwiTTEsNC4yN0wyLjI4LDNMMjAsMjAuNzJMMTguNzMsMjJMMTIuOTEsMTYuMThDMTIuMTksMTYuNzQgMTEuNjcsMTcuMTkgMTEuMzcsMTguMUMxMC43NywxOS45MiAxMCwyMC45NCA4LjY0LDIxLjY1QzguMTMsMjEuODggNy41NywyMiA3LDIyQTQsNCAwIDAsMSAzLDE4SDVBMiwyIDAgMCwwIDcsMjBDNy4yOSwyMCA3LjU2LDE5Ljk0IDcuNzYsMTkuODVDOC40NywxOS41IDguOTcsMTguOTcgOS40NywxNy40N0M5LjkxLDE2LjEyIDEwLjY5LDE1LjM5IDExLjUsMTQuNzZMNS4wNCw4LjMxQzUsOC41NCA1LDguNzcgNSw5SDNDMyw4LjE3IDMuMTQsNy4zOSAzLjM5LDYuNjZMMSw0LjI3TTE0LjE4LDExLjk0QzE0LjcxLDExIDE1LDkuOTMgMTUsOUMxNSw2LjIgMTIuOCw0IDEwLDRDOC44MSw0IDcuNzQsNC4zOSA2Ljg5LDUuMDZMNS40NiwzLjYzQzYuNjcsMi42MSA4LjI1LDIgMTAsMkMxMy45MywyIDE3LDUuMDcgMTcsOUMxNywxMC4yNiAxNi42MiwxMS42NSAxNS45MywxMi45TDE1LjQ3LDEzLjY1TDE0LjAzLDEyLjJMMTQuMTgsMTEuOTRNMTYuMzYsMi42NEwxNy43OCwxLjIyQzE5Ljc3LDMuMjEgMjEsNS45NiAyMSw5QzIxLDExLjgzIDE5LjkzLDE0LjQxIDE4LjE4LDE2LjM2TDE2Ljc3LDE0Ljk0QzE4LjE1LDEzLjM2IDE5LDExLjI4IDE5LDlDMTksNi41IDE4LDQuMjYgMTYuMzYsMi42NE0xMi41LDlDMTIuNSw5LjUgMTIuMzYsOS45MyAxMi4xMywxMC4zMUw4LjY5LDYuODdDOS4wNyw2LjY0IDkuNSw2LjUgMTAsNi41QTIuNSwyLjUgMCAwLDEgMTIuNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoID0gXCJNMTcuOSwxNy4zOUMxNy42NCwxNi41OSAxNi44OSwxNiAxNiwxNkgxNVYxM0ExLDEgMCAwLDAgMTQsMTJIOFYxMEgxMEExLDEgMCAwLDAgMTEsOVY3SDEzQTIsMiAwIDAsMCAxNSw1VjQuNTlDMTcuOTMsNS43NyAyMCw4LjY0IDIwLDEyQzIwLDE0LjA4IDE5LjIsMTUuOTcgMTcuOSwxNy4zOU0xMSwxOS45M0M3LjA1LDE5LjQ0IDQsMTYuMDggNCwxMkM0LDExLjM4IDQuMDgsMTAuNzggNC4yMSwxMC4yMUw5LDE1VjE2QTIsMiAwIDAsMCAxMSwxOE0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJ0aEFycm93UmlnaHQgPSBcIk0xOSAyMVYxOUgxNVYxN0gxOVYxNUwyMiAxOEwxOSAyMU0xMiAxOEMxMiAxNS44IDEzLjIgMTMuOSAxNSAxMi44QzE0LjkgMTIuMyAxNC41IDEyIDE0IDEySDhWMTBIMTBDMTAuNiAxMCAxMSA5LjYgMTEgOVY3SDEzQzE0LjEgNyAxNSA2LjEgMTUgNVY0LjZDMTcuOSA1LjggMjAgOC42IDIwIDEyVjEyLjNDMjAuNyAxMi41IDIxLjMgMTIuOSAyMS45IDEzLjRDMjIgMTMgMjIgMTIuNSAyMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJTMiA2LjUgMiAxMiA2LjUgMjIgMTIgMjJDMTIuNSAyMiAxMyAyMiAxMy40IDIxLjlDMTIuNSAyMC44IDEyIDE5LjUgMTIgMThNMTEgMTkuOUM3IDE5LjQgNCAxNi4xIDQgMTJDNCAxMS40IDQuMSAxMC44IDQuMiAxMC4yTDkgMTVWMTZDOSAxNy4xIDkuOSAxOCAxMSAxOFYxOS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoQm94ID0gXCJNNSwzQzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNINU0xNS43OCw1SDE5VjE3LjE4QzE4Ljc0LDE2LjM4IDE3LjY5LDE1Ljc5IDE2LjgsMTUuNzlIMTUuOFYxMi43OUExLDEgMCAwLDAgMTQuOCwxMS43OUg4LjhWOS43OUgxMC44QTEsMSAwIDAsMCAxMS44LDguNzlWNi43OUgxMy44QzE0LjgzLDYuNzkgMTUuNjcsNiAxNS43OCw1TTUsMTAuMjlMOS44LDE0Ljc5VjE1Ljc5QzkuOCwxNi45IDEwLjcsMTcuNzkgMTEuOCwxNy43OVYxOUg1VjEwLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoQm94TWludXMgPSBcIk0yMiAxN1YxOUgxNFYxN0gyMk01IDNIMTlDMjAuMSAzIDIxIDMuODkgMjEgNVYxMi44QzIwLjM5IDEyLjQ1IDE5LjcyIDEyLjIgMTkgMTIuMDhWNUgxNS43OEMxNS42NyA2IDE0LjgzIDYuNzkgMTMuOCA2Ljc5SDExLjhWOC43OUMxMS44IDkuMzUgMTEuMzUgOS43OSAxMC44IDkuNzlIOC44VjExLjc5SDE0LjhDMTUuMjMgMTEuNzkgMTUuNiAxMi4wNiAxNS43NCAxMi40NEMxMy42IDEzLjMxIDEyLjA3IDE1LjM5IDEyIDE3LjgzQzEwLjcgMTcuNzkgOS44IDE2LjkgOS44IDE1Ljc5VjE0Ljc5TDUgMTAuMjlWMTlIMTIuMDhDMTIuMiAxOS43MiAxMi40NSAyMC4zOSAxMi44IDIxSDVDMy45IDIxIDMgMjAuMTEgMyAxOVY1QzMgMy44OSAzLjg5IDMgNSAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVhcnRoQm94T2ZmID0gXCJNMjMsNC4yN0wyMSw2LjI3VjE5QTIsMiAwIDAsMSAxOSwyMUg2LjI3TDQuMjcsMjNMMywyMS43MkwyMS43MiwzTDIzLDQuMjdNNSwzSDE5LjE4TDE3LjE4LDVIMTUuNzhDMTUuNjcsNiAxNC44Myw2Ljc5IDEzLjgsNi43OUgxMS44VjguNzlDMTEuOCw5LjM1IDExLjM1LDkuNzkgMTAuOCw5Ljc5SDguOFYxMS43OUgxMC4zOEw4LjU1LDEzLjYyTDUsMTAuMjlWMTcuMThMMywxOS4xOFY1QzMsMy44OSAzLjg5LDMgNSwzTTExLjgsMTlWMTcuNzlDMTEuMTcsMTcuNzkgMTAuNiwxNy41IDEwLjIzLDE3LjA0TDguMjcsMTlIMTEuOE0xNS44LDEyLjc5VjE1Ljc5SDE2LjhDMTcuNjksMTUuNzkgMTguNzQsMTYuMzggMTksMTcuMThWOC4yN0wxNS4zMywxMS45NEMxNS42MSwxMi4xMiAxNS44LDEyLjQzIDE1LjgsMTIuNzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhCb3hQbHVzID0gXCJNMTcgMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNNSAzSDE5QzIwLjEgMyAyMSAzLjg5IDIxIDVWMTIuOEMyMC4zOSAxMi40NSAxOS43MiAxMi4yIDE5IDEyLjA4VjVIMTUuNzhDMTUuNjcgNiAxNC44MyA2Ljc5IDEzLjggNi43OUgxMS44VjguNzlDMTEuOCA5LjM1IDExLjM1IDkuNzkgMTAuOCA5Ljc5SDguOFYxMS43OUgxNC44QzE1LjIzIDExLjc5IDE1LjYgMTIuMDYgMTUuNzQgMTIuNDRDMTMuNiAxMy4zMSAxMi4wNyAxNS4zOSAxMiAxNy44M0MxMC43IDE3Ljc5IDkuOCAxNi45IDkuOCAxNS43OVYxNC43OUw1IDEwLjI5VjE5SDEyLjA4QzEyLjIgMTkuNzIgMTIuNDUgMjAuMzkgMTIuOCAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuODkgMy44OSAzIDUgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJ0aEJveFJlbW92ZSA9IFwiTTE0LjQ2IDE1Ljg4TDE1Ljg4IDE0LjQ2TDE4IDE2LjU5TDIwLjEyIDE0LjQ3TDIxLjU0IDE1Ljg4TDE5LjQxIDE4TDIxLjU0IDIwLjEyTDIwLjEyIDIxLjU0TDE4IDE5LjQxTDE1Ljg4IDIxLjU0TDE0LjQ2IDIwLjEyTDE2LjU5IDE4TDE0LjQ3IDE1Ljg4TTUgM0gxOUMyMC4xIDMgMjEgMy44OSAyMSA1VjEyLjhDMjAuMzkgMTIuNDUgMTkuNzIgMTIuMiAxOSAxMi4wOFY1SDE1Ljc4QzE1LjY3IDYgMTQuODMgNi43OSAxMy44IDYuNzlIMTEuOFY4Ljc5QzExLjggOS4zNSAxMS4zNSA5Ljc5IDEwLjggOS43OUg4LjhWMTEuNzlIMTQuOEMxNS4yMyAxMS43OSAxNS42IDEyLjA2IDE1Ljc0IDEyLjQ0QzEzLjYgMTMuMzEgMTIuMDcgMTUuMzkgMTIgMTcuODNDMTAuNyAxNy43OSA5LjggMTYuOSA5LjggMTUuNzlWMTQuNzlMNSAxMC4yOVYxOUgxMi4wOEMxMi4yIDE5LjcyIDEyLjQ1IDIwLjM5IDEyLjggMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyAzLjg5IDMuODkgMyA1IDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhNaW51cyA9IFwiTTE0IDE3SDIyVjE5SDE0VjE3TTIwIDEyQzIwIDguNjQgMTcuOTMgNS43NyAxNSA0LjU5VjVDMTUgNi4xIDE0LjEgNyAxMyA3SDExVjlDMTEgOS41NSAxMC41NSAxMCAxMCAxMEg4VjEySDE0QzE0LjUgMTIgMTQuOSAxMi4zNSAxNSAxMi44MUMxMy4yIDEzLjg1IDEyIDE1Ljc5IDEyIDE4QzEyIDE5LjUgMTIuNTQgMjAuODUgMTMuNDQgMjEuOUwxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyTDIxLjkgMTMuNDRDMjEuMzQgMTIuOTYgMjAuNyAxMi41OSAyMCAxMi4zNEwyMCAxMk0xMSAxOS45M1YxOEM5LjkgMTggOSAxNy4xIDkgMTZWMTVMNC4yMSAxMC4yMUM0LjA4IDEwLjc4IDQgMTEuMzggNCAxMkM0IDE2LjA4IDcuMDYgMTkuNDQgMTEgMTkuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhPZmYgPSBcIk0yMiw1LjI3TDIwLjUsNi43NUMyMS40Niw4LjI4IDIyLDEwLjA3IDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQzEwLjA4LDIyIDguMjgsMjEuNDYgNi43NSwyMC41TDUuMjcsMjJMNCwyMC43MkwyMC43Miw0TDIyLDUuMjdNMTcuOSwxNy4zOUMxOS4yLDE1Ljk3IDIwLDE0LjA4IDIwLDEyQzIwLDEwLjYzIDE5LjY2LDkuMzQgMTkuMDUsOC4yMkwxNC44MywxMi40NEMxNC45NCwxMi42IDE1LDEyLjc5IDE1LDEzVjE2SDE2QzE2Ljg5LDE2IDE3LjY0LDE2LjU5IDE3LjksMTcuMzlNMTEsMTkuOTNWMThDMTAuNSwxOCAxMC4wNywxNy44MyA5LjczLDE3LjU0TDguMjIsMTkuMDVDOS4wNywxOS41IDEwLDE5LjggMTEsMTkuOTNNMTUsNC41OVY1QTIsMiAwIDAsMSAxMyw3SDExVjlBMSwxIDAgMCwxIDEwLDEwSDhWMTJIMTAuMThMOC4wOSwxNC4wOUw0LjIxLDEwLjIxQzQuMDgsMTAuNzggNCwxMS4zOCA0LDEyQzQsMTMuNzQgNC41NiwxNS4zNiA1LjUsMTYuNjdMNC4wOCwxOC4xQzIuNzcsMTYuNDEgMiwxNC4zIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkMxNC4zLDIgMTYuNDEsMi43NyAxOC4xLDQuMDhMMTYuNjcsNS41QzE2LjE2LDUuMTQgMTUuNiw0LjgzIDE1LDQuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWFydGhQbHVzID0gXCJNMTcgMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMjAgMTJDMjAgOC42NCAxNy45MyA1Ljc3IDE1IDQuNTlWNUMxNSA2LjEgMTQuMSA3IDEzIDdIMTFWOUMxMSA5LjU1IDEwLjU1IDEwIDEwIDEwSDhWMTJIMTRDMTQuNSAxMiAxNC45IDEyLjM1IDE1IDEyLjgxQzEzLjIgMTMuODUgMTIgMTUuNzkgMTIgMThDMTIgMTkuNSAxMi41NCAyMC44NSAxMy40NCAyMS45TDEyIDIyQzYuNSAyMiAyIDE3LjUgMiAxMkMyIDYuNSA2LjUgMiAxMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJMMjEuOSAxMy40NEMyMS4zNCAxMi45NiAyMC43IDEyLjU5IDIwIDEyLjM0TDIwIDEyTTExIDE5LjkzVjE4QzkuOSAxOCA5IDE3LjEgOSAxNlYxNUw0LjIxIDEwLjIxQzQuMDggMTAuNzggNCAxMS4zOCA0IDEyQzQgMTYuMDggNy4wNiAxOS40NCAxMSAxOS45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlFYXJ0aFJlbW92ZSA9IFwiTTE0LjQ2IDE1Ljg4TDE1Ljg4IDE0LjQ2TDE4IDE2LjU5TDIwLjEyIDE0LjQ3TDIxLjU0IDE1Ljg4TDE5LjQxIDE4TDIxLjU0IDIwLjEyTDIwLjEyIDIxLjU0TDE4IDE5LjQxTDE1Ljg4IDIxLjU0TDE0LjQ2IDIwLjEyTDE2LjU5IDE4TDE0LjQ3IDE1Ljg4TTIwIDEyQzIwIDguNjQgMTcuOTMgNS43NyAxNSA0LjU5VjVDMTUgNi4xIDE0LjEgNyAxMyA3SDExVjlDMTEgOS41NSAxMC41NSAxMCAxMCAxMEg4VjEySDE0QzE0LjUgMTIgMTQuOSAxMi4zNSAxNSAxMi44MUMxMy4yIDEzLjg1IDEyIDE1Ljc5IDEyIDE4QzEyIDE5LjUgMTIuNTQgMjAuODUgMTMuNDQgMjEuOUwxMiAyMkM2LjUgMjIgMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMkMxNy41IDIgMjIgNi41IDIyIDEyTDIxLjkgMTMuNDRDMjEuMzQgMTIuOTYgMjAuNyAxMi41OSAyMCAxMi4zNEwyMCAxMk0xMSAxOS45M1YxOEM5LjkgMTggOSAxNy4xIDkgMTZWMTVMNC4yMSAxMC4yMUM0LjA4IDEwLjc4IDQgMTEuMzggNCAxMkM0IDE2LjA4IDcuMDYgMTkuNDQgMTEgMTkuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWdnID0gXCJNMTkuNSwxNC41QTcuNSw3LjUgMCAwLDEgMTIsMjJBNy41LDcuNSAwIDAsMSA0LjUsMTQuNUM0LjUsMTAuMzYgNy44NiwyIDEyLDJDMTYuMTQsMiAxOS41LDEwLjM2IDE5LjUsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFZ2dFYXN0ZXIgPSBcIk02Ljg5LDYuMzZDOC4yMywzLjkxIDEwLDIgMTIsMkMxNCwyIDE1Ljc3LDMuOTEgMTcuMTEsNi4zNkMxNi4yNiw2LjU3IDE1LjUsNy4wNyAxNSw3Ljc3QzEzLjc5LDYuMTEgMTEuNDYsNS43NSA5LjgsNi45N0M5LjUsNy4xOSA5LjIyLDcuNDYgOSw3Ljc3QzguNSw3LjA3IDcuNzQsNi41NyA2Ljg5LDYuMzZNMTUsMTguMDZMMTIsMTUuMDZMOSwxOC4wNkw2LDE1LjA2TDQuNzMsMTYuMzNDNS43NSwyMC4zNSA5LjgzLDIyLjc3IDEzLjg0LDIxLjc2QzE2LjUsMjEuMDggMTguNTksMTkgMTkuMjcsMTYuMzNMMTgsMTUuMDZMMTUsMTguMDZNOSwxNS45NEwxMiwxMi45NEwxNSwxNS45NEwxOCwxMi45NEwxOS41LDE0LjQ0QzE5LjM3LDEyLjEzIDE4LjgsOS44NiAxNy44MSw3Ljc2QzE2LjY1LDcuODYgMTUuNzUsOC44MyAxNS43NSwxMEgxNC4yNUEyLjI1LDIuMjUgMCAwLDAgMTIsNy43NUEyLjI1LDIuMjUgMCAwLDAgOS43NSwxMEg4LjI1QzguMjUsOC44MyA3LjM1LDcuODYgNi4xOSw3Ljc2QzUuMiw5Ljg2IDQuNjMsMTIuMTMgNC41LDE0LjQ0TDYsMTIuOTRMOSwxNS45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlFZ2dPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w2LjEgOEM1LjEgMTAuMyA0LjUgMTIuOCA0LjUgMTQuNUM0LjUgMTguNiA3LjkgMjIgMTIgMjJDMTQuMiAyMiAxNi4yIDIxIDE3LjYgMTkuNUwyMC44IDIyLjdMMjIuMSAyMS41TTE5LjUgMTQuNUMxOS41IDEwLjQgMTYuMSAyIDEyIDJDMTAuNSAyIDkuMSAzLjEgNy45IDQuN0wxOS4zIDE2LjFDMTkuNCAxNS42IDE5LjUgMTUuMSAxOS41IDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWdnT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNi4xIDhDNS4xIDEwLjI4IDQuNSAxMi43NiA0LjUgMTQuNUM0LjUgMTguNjQgNy44NiAyMiAxMiAyMkMxNC4yMyAyMiAxNi4yMiAyMSAxNy41OSAxOS41TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTEyIDIwQzguOTcgMjAgNi41IDE3LjUzIDYuNSAxNC41QzYuNSAxMy4wOCA2Ljk1IDExLjI1IDcuNjMgOS41TDE2LjE3IDE4LjA2QzE1LjE2IDE5LjI0IDEzLjY3IDIwIDEyIDIwTTkuMzYgNi4xNkw3LjkyIDQuNzJDOS4xIDMuMTEgMTAuNSAyIDEyIDJDMTYuMTQgMiAxOS41IDEwLjM2IDE5LjUgMTQuNUMxOS41IDE1LjA2IDE5LjQzIDE1LjYgMTkuMzIgMTYuMTJMMTcuNSAxNC4yOUMxNy4zOCAxMC40NiAxNC4yOCA0IDEyIDRDMTEuMTcgNCAxMC4yMiA0Ljg3IDkuMzYgNi4xNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFZ2dPdXRsaW5lID0gXCJNMTIgNEMxNC4zMiA0IDE3LjUgMTAuNyAxNy41IDE0LjVDMTcuNSAxNy41MyAxNS4wMyAyMCAxMiAyMFM2LjUgMTcuNTMgNi41IDE0LjVDNi41IDEwLjcgOS42OCA0IDEyIDRNMTIgMkM3Ljg2IDIgNC41IDEwLjM2IDQuNSAxNC41QzQuNSAxOC42NCA3Ljg2IDIyIDEyIDIyUzE5LjUgMTguNjQgMTkuNSAxNC41QzE5LjUgMTAuMzYgMTYuMTQgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVpZmZlbFRvd2VyID0gXCJNOC4yMSAxN0M4LjY1IDE2LjE1IDkuMDYgMTUuMTYgOS40NCAxNEg5VjEySDEwQzEwLjYxIDkuNCAxMSA2LjEzIDExIDJIMTNDMTMgNi4xMyAxMy40IDkuNCAxNCAxMkgxNVYxNEgxNC41NkMxNC45NCAxNS4xNiAxNS4zNSAxNi4xNSAxNS43OSAxN0gxN0wxNyAxOUwxOSAyMkgxNi41OEMxNS44MSAyMC4yNCAxNC4wNSAxOSAxMiAxOUM5Ljk1IDE5IDguMTkgMjAuMjQgNy40MiAyMkg1TDcgMTlMNi45NyAxN0g4LjIxTTEyLjU5IDE0SDExLjQxQzExLjA3IDE1LjEzIDEwLjY5IDE2LjEzIDEwLjI4IDE3SDEzLjcyQzEzLjMyIDE2LjEzIDEyLjkzIDE1LjEzIDEyLjU5IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVpZ2h0VHJhY2sgPSBcIk03LDJMNSw1VjE2TDYsMjBDNi4yNywyMS4wNyA2LjksMjIgOCwyMkgxNkEyLDIgMCAwLDAgMTgsMjBMMTksMTZWNUwxNywySDE1VjNIMTNWMkg3TTcsNkgxN1YxNkg3VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWplY3QgPSBcIk0xMiw1TDUuMzMsMTVIMTguNjdNNSwxN0gxOVYxOUg1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVqZWN0T3V0bGluZSA9IFwiTTUsMTdIMTlWMTlINVYxN00xMiw1TDUuMzMsMTVIMTguNjdMMTIsNU0xMiw4LjZMMTQuOTMsMTNIOS4wN0wxMiw4LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxlY3RyaWNTd2l0Y2ggPSBcIk0xLDExSDMuMTdDMy41OCw5LjgzIDQuNjksOSA2LDlDNi42NSw5IDcuMjUsOS4yMSA3Ljc0LDkuNTZMMTQuNDQsNC44N0wxNS41OCw2LjVMOC44OSwxMS4yQzguOTYsMTEuNDUgOSwxMS43MiA5LDEyQTMsMyAwIDAsMSA2LDE1QzQuNjksMTUgMy41OCwxNC4xNyAzLjE3LDEzSDFWMTFNMjMsMTFWMTNIMjAuODNDMjAuNDIsMTQuMTcgMTkuMzEsMTUgMTgsMTVBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxOCw5QzE5LjMxLDkgMjAuNDIsOS44MyAyMC44MywxMUgyM002LDExQTEsMSAwIDAsMCA1LDEyQTEsMSAwIDAsMCA2LDEzQTEsMSAwIDAsMCA3LDEyQTEsMSAwIDAsMCA2LDExTTE4LDExQTEsMSAwIDAsMCAxNywxMkExLDEgMCAwLDAgMTgsMTNBMSwxIDAgMCwwIDE5LDEyQTEsMSAwIDAsMCAxOCwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbGVjdHJpY1N3aXRjaENsb3NlZCA9IFwiTTIwLjgzIDExQTMgMyAwIDAgMCAxNS4xOCAxMUg4LjgyQTMgMyAwIDAgMCAzLjE3IDExSDFWMTNIMy4xN0EzIDMgMCAwIDAgOC44MiAxM0gxNS4xOEEzIDMgMCAwIDAgMjAuODMgMTNIMjNWMTFNNiAxM0ExIDEgMCAxIDEgNyAxMkExIDEgMCAwIDEgNiAxM00xOCAxM0ExIDEgMCAxIDEgMTkgMTJBMSAxIDAgMCAxIDE4IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVsZWN0cm9uRnJhbWV3b3JrID0gXCJNMTIgMjJDMTAuMzMgMjIgOC44NCAyMC41IDcuOSAxNy45M0M3LjgzIDE3LjczIDcuOTMgMTcuNSA4LjE0IDE3LjQ0QzguMzQgMTcuMzYgOC41NiAxNy40NyA4LjYzIDE3LjY3QzkuNDQgMTkuOSAxMC43IDIxLjIzIDEyIDIxLjIzQzEyLjk0IDIxLjIzIDEzLjg3IDIwLjU1IDE0LjYyIDE5LjMxQzE0LjczIDE5LjEzIDE0Ljk2IDE5LjA3IDE1LjE1IDE5LjE4QzE1LjMzIDE5LjI5IDE1LjM5IDE5LjUzIDE1LjI4IDE5LjcxQzE0LjM4IDIxLjE5IDEzLjIyIDIyIDEyIDIyTTE1LjkxIDE3LjcyQzE1Ljg3IDE3LjcyIDE1LjgzIDE3LjcxIDE1LjggMTcuN0MxNS41OSAxNy42MyAxNS41IDE3LjQyIDE1LjU0IDE3LjIxQzE2IDE1LjgxIDE2LjIyIDE0LjE4IDE2LjIyIDEyLjVDMTYuMjIgOC42NSAxNC45NyA1LjI0IDEzLjE5IDQuMTRDMTIuOTQgNC41IDEyLjUgNC43OCAxMiA0Ljc4QzExLjI0IDQuNzggMTAuNjEgNC4xNiAxMC42MSAzLjM5QzEwLjYxIDIuNjIgMTEuMjQgMiAxMiAyQzEyLjc3IDIgMTMuNCAyLjYxIDEzLjQxIDMuMzdDMTUuNTMgNC41IDE3IDguMjEgMTcgMTIuNUMxNyAxNC4yNSAxNi43NSAxNS45NiAxNi4yOCAxNy40NUMxNi4yMyAxNy42MSAxNi4wOCAxNy43MiAxNS45MSAxNy43Mk0xMiAyLjc3QzExLjY2IDIuNzcgMTEuMzggMy4wNSAxMS4zOCAzLjM5QzExLjM4IDMuNzMgMTEuNjcgNCAxMiA0QzEyLjM1IDQgMTIuNjQgMy43MyAxMi42NCAzLjM5QzEyLjY0IDMuMDUgMTIuMzUgMi43NyAxMiAyLjc3TTQuMDggMTguNTRDMy4zMSAxOC41NCAyLjY4IDE3LjkxIDIuNjggMTcuMTVDMi42OCAxNi42NiAyLjk0IDE2LjIyIDMuMzMgMTUuOTdDMy4xOSAxMy41NiA1LjY4IDEwLjQxIDkuNSA4LjIyQzExLjA5IDcuMzIgMTIuNzUgNi42NyAxNC4zMiA2LjM0QzE0LjUgNi4yOSAxNC43MyA2LjQyIDE0Ljc3IDYuNjNDMTQuODIgNi44NCAxNC42OSA3LjA1IDE0LjUgNy4wOUMxMyA3LjQxIDExLjQxIDguMDMgOS45IDguODlDNi40NiAxMC44NiA0LjEgMTMuNjggNC4xIDE1Ljc2QzQuODYgMTUuNzcgNS41IDE2LjM5IDUuNSAxNy4xNUM1LjUgMTcuOTIgNC44NSAxOC41NCA0LjA4IDE4LjU0TTQuMDggMTYuNTNDMy43NCAxNi41MyAzLjQ2IDE2LjgxIDMuNDYgMTcuMTVDMy40NiAxNy41IDMuNzQgMTcuNzcgNC4wOCAxNy43N1M0LjcxIDE3LjUgNC43MSAxNy4xNUM0LjcxIDE2LjgxIDQuNDIgMTYuNTMgNC4wOCAxNi41M00xOC41IDEzLjQ0QzE4LjQzIDEzLjQ0IDE4LjM0IDEzLjQxIDE4LjI3IDEzLjM1QzE4LjExIDEzLjIxIDE4LjA5IDEyLjk3IDE4LjIzIDEyLjhDMTkuNzcgMTEgMjAuMyA5LjI2IDE5LjY0IDguMTRDMTkuMTcgNy4zMyAxOC4xIDYuODggMTYuNjMgNi44NkMxNi40MSA2Ljg2IDE2LjI0IDYuNjggMTYuMjUgNi40N0MxNi4yNSA2LjI2IDE2LjQzIDYuMSAxNi42NCA2LjA5QzE4LjM5IDYuMTEgMTkuNyA2LjcgMjAuMzEgNy43NUMyMS4xNSA5LjE5IDIwLjYgMTEuMjEgMTguODIgMTMuM0MxOC43NCAxMy4zOSAxOC42MyAxMy40NCAxOC41IDEzLjQ0TTE2LjUgMTguOUMxNC41IDE4LjkgMTEuOTQgMTguMTYgOS41IDE2Ljc3QzcuOTUgMTUuODggNi41NyAxNC43OSA1LjUgMTMuNjNDNS4zNSAxMy40NyA1LjM2IDEzLjIzIDUuNSAxMy4wOEM1LjY4IDEyLjk0IDUuOTIgMTIuOTUgNi4wNyAxMy4xMUM3LjA4IDE0LjIxIDguNCAxNS4yNSA5Ljg5IDE2LjFDMTMuMiAxOCAxNi43NyAxOC42MyAxOC42NSAxNy43MkMxOC41NyAxNy41NSAxOC41IDE3LjM1IDE4LjUgMTcuMTVDMTguNSAxNi4zOCAxOS4xNSAxNS43NiAxOS45MiAxNS43NkMyMC42OSAxNS43NiAyMS4zMiAxNi4zOCAyMS4zMiAxNy4xNUMyMS4zMiAxNy45MiAyMC42OSAxOC41NCAxOS45MiAxOC41NEMxOS42NCAxOC41NCAxOS4zOSAxOC40NiAxOS4xNyAxOC4zMkMxOC40NyAxOC43MSAxNy41NiAxOC45IDE2LjUgMTguOU0xOS41IDE3LjYzQzE5LjYzIDE3LjcxIDE5Ljc3IDE3Ljc3IDE5LjkyIDE3Ljc3QzIwLjI3IDE3Ljc3IDIwLjU1IDE3LjUgMjAuNTUgMTcuMTVDMjAuNTUgMTYuODEgMjAuMjcgMTYuNTMgMTkuOTIgMTYuNTNTMTkuMyAxNi44MSAxOS4zIDE3LjE1QzE5LjMgMTcuMjkgMTkuMzUgMTcuNDIgMTkuNDMgMTcuNTNDMTkuNDcgMTcuNTUgMTkuNSAxNy41OSAxOS41IDE3LjYzTTQuNDYgMTJDNC4zMyAxMiA0LjIgMTEuOTIgNC4xMyAxMS44QzMuMjMgMTAuMjUgMy4wOCA4LjgxIDMuNyA3Ljc0QzQuNTQgNi4zIDYuNTggNS43NiA5LjMxIDYuMjVDOS41IDYuMjkgOS42NiA2LjUgOS42MiA2LjdDOS41OSA2LjkxIDkuMzkgNy4wNSA5LjE4IDdDNi44MiA2LjU5IDUgNyA0LjM3IDguMTNDMy44OSA4Ljk1IDQuMDQgMTAuMTEgNC44IDExLjQxQzQuOSAxMS42IDQuODQgMTEuODMgNC42NSAxMS45NEM0LjU5IDExLjk3IDQuNTMgMTIgNC40NiAxMk0xMi4yMSAxMy40QzExLjcxIDEzLjUgMTEuMjEgMTMuMTkgMTEuMTEgMTIuNjlDMTEgMTIuMiAxMS4zMiAxMS43MSAxMS44MSAxMS42QzEyLjMxIDExLjUgMTIuODEgMTEuODEgMTIuOTEgMTIuMzFDMTMgMTIuOCAxMi43IDEzLjI5IDEyLjIxIDEzLjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxlcGhhbnQgPSBcIk0xOS41LDE1LjVBMC41LDAuNSAwIDAsMSAxOSwxNkEwLjUsMC41IDAgMCwxIDE4LjUsMTUuNVY4LjVDMTguNSw2LjU3IDE2LjQzLDUgMTQuNSw1SDZBNCw0IDAgMCwwIDIsOVYxOUg2VjE1SDExVjE5SDE1VjE0LjVBMC41LDAuNSAwIDAsMSAxNS41LDE0QTAuNSwwLjUgMCAwLDEgMTYsMTQuNVYxNkEzLDMgMCAwLDAgMTksMTlBMywzIDAgMCwwIDIyLDE2VjE0SDE5LjVWMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbGV2YXRpb25EZWNsaW5lID0gXCJNMjEsMjFIM1YxMS4yNUw5LjQ1LDE1TDEzLjIyLDEyLjhMMjEsMTcuMjlWMjFNMyw4Ljk0VjYuNzVMOS40NSwxMC41TDEzLjIyLDguM0wyMSwxMi43OVYxNUwxMy4yMiwxMC41TDkuNDUsMTIuNjdMMyw4Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVsZXZhdGlvblJpc2UgPSBcIk0zLDIxVjE3LjI5TDEwLjc4LDEyLjhMMTQuNTUsMTVMMjEsMTEuMjVWMjFIM00yMSw4Ljk0TDE0LjU1LDEyLjY3TDEwLjc4LDEwLjVMMywxNVYxMi43OUwxMC43OCw4LjNMMTQuNTUsMTAuNUwyMSw2Ljc1VjguOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxldmF0b3IgPSBcIk03LDJMMTEsNkg4VjEwSDZWNkgzTDcsMk0xNywxMEwxMyw2SDE2VjJIMThWNkgyMUwxNywxME03LDEySDE3QTIsMiAwIDAsMSAxOSwxNFYyMEEyLDIgMCAwLDEgMTcsMjJIN0EyLDIgMCAwLDEgNSwyMFYxNEEyLDIgMCAwLDEgNywxMk03LDE0VjIwSDE3VjE0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxldmF0b3JEb3duID0gXCJNNyAxMEwxMSA2SDhWMkg2VjZIM0w3IDEwTTE3IDEwTDEzIDZIMTZWMkgxOFY2SDIxTDE3IDEwTTcgMTJIMTdDMTguMTEgMTIgMTkgMTIuOSAxOSAxNFYyMEMxOSAyMS4xMSAxOC4xMSAyMiAxNyAyMkg3QzUuOSAyMiA1IDIxLjExIDUgMjBWMTRDNSAxMi45IDUuOSAxMiA3IDEyTTcgMTRWMjBIMTdWMTRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbGV2YXRvclBhc3NlbmdlciA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM004IDVDOC44IDUgOS41IDUuNyA5LjUgNi41UzguOCA4IDggOCA2LjUgNy4zIDYuNSA2LjUgNy4yIDUgOCA1TTExIDE0SDkuNVYxOUg2LjVWMTRINVYxMUM1IDkuOSA1LjkgOSA3IDlIOUMxMC4xIDkgMTEgOS45IDExIDExVjE0TTE1LjkgMTlMMTMgMTQuMkgxOC44TDE1LjkgMTlNMTMgMTBMMTYgNUwxOSAxMEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbGV2YXRvclVwID0gXCJNNyAyTDExIDZIOFYxMEg2VjZIM0w3IDJNMTcgMkwxMyA2SDE2VjEwSDE4VjZIMjFMMTcgMk03IDEySDE3QzE4LjExIDEyIDE5IDEyLjkgMTkgMTRWMjBDMTkgMjEuMTEgMTguMTEgMjIgMTcgMjJIN0M1LjkgMjIgNSAyMS4xMSA1IDIwVjE0QzUgMTIuOSA1LjkgMTIgNyAxMk03IDE0VjIwSDE3VjE0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRWxsaXBzZSA9IFwiTTEyLDRDNi41LDQgMiw3LjU4IDIsMTJDMiwxNi40MiA2LjUsMjAgMTIsMjBDMTcuNSwyMCAyMiwxNi40MiAyMiwxMkMyMiw3LjU4IDE3LjUsNCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVsbGlwc2VPdXRsaW5lID0gXCJNMTIsNkMxNi40MSw2IDIwLDguNjkgMjAsMTJDMjAsMTUuMzEgMTYuNDEsMTggMTIsMThDNy41OSwxOCA0LDE1LjMxIDQsMTJDNCw4LjY5IDcuNTksNiAxMiw2TTEyLDRDNi41LDQgMiw3LjU4IDIsMTJDMiwxNi40MiA2LjUsMjAgMTIsMjBDMTcuNSwyMCAyMiwxNi40MiAyMiwxMkMyMiw3LjU4IDE3LjUsNCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsID0gXCJNMjAsOEwxMiwxM0w0LDhWNkwxMiwxMUwyMCw2TTIwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsQWxlcnQgPSBcIk0xOCA4TDEwIDEzTDIgOFY2TDEwIDExTDE4IDZNMTggNEgyQy45IDQgMCA0LjkgMCA2VjE4QzAgMTkuMSAuOSAyMCAyIDIwSDE4QzE5LjEgMjAgMjAgMTkuMSAyMCAxOFY2QzIwIDQuOSAxOS4xIDQgMTggNE0yNCA3SDIyVjEzSDI0VjdNMjQgMTVIMjJWMTdIMjRWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxBbGVydE91dGxpbmUgPSBcIk0yNCA3SDIyVjEzSDI0VjdNMjQgMTVIMjJWMTdIMjRWMTVNMjAgNkMyMCA0LjkgMTkuMSA0IDE4IDRIMkMuOSA0IDAgNC45IDAgNlYxOEMwIDE5LjEgLjkgMjAgMiAyMEgxOEMxOS4xIDIwIDIwIDE5LjEgMjAgMThWNk0xOCA2TDEwIDExTDIgNkgxOE0xOCAxOEgyVjhMMTAgMTNMMTggOFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbEJveCA9IFwiTTUsM0EyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVNNi40LDYuNUgxNy42QzE4LjM3LDYuNSAxOSw3LjEyIDE5LDcuOVYxNi4xQTEuNCwxLjQgMCAwLDEgMTcuNiwxNy41SDYuNEM1LjYzLDE3LjUgNSwxNi44NyA1LDE2LjFWNy45QzUsNy4xMiA1LjYyLDYuNSA2LjQsNi41TTYsOFYxMEwxMiwxNEwxOCwxMFY4TDEyLDEyTDYsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbENoZWNrID0gXCJNMjEsMTMuMzRDMjAuMzcsMTMuMTIgMTkuNywxMyAxOSwxM0E2LDYgMCAwLDAgMTMsMTlDMTMsMTkuMzQgMTMuMDMsMTkuNjcgMTMuMDgsMjBIM0EyLDIgMCAwLDEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0SDE5QTIsMiAwIDAsMSAyMSw2VjEzLjM0TTIzLjUsMTdMMTguNSwyMkwxNSwxOC41TDE2LjUsMTdMMTguNSwxOUwyMiwxNS41TDIzLjUsMTdNMyw2VjhMMTEsMTNMMTksOFY2TDExLDExTDMsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbENoZWNrT3V0bGluZSA9IFwiTTIzLjUgMTdMMTguNSAyMkwxNSAxOC41TDE2LjUgMTdMMTguNSAxOUwyMiAxNS41TDIzLjUgMTdNMTMgMThIM1Y4TDExIDEzTDE5IDhWMTNIMjFWNkMyMSA0LjkgMjAuMSA0IDE5IDRIM0MxLjkgNCAxIDQuOSAxIDZWMThDMSAxOS4xIDEuOSAyMCAzIDIwSDEzVjE4TTE5IDZMMTEgMTFMMyA2SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsRWRpdCA9IFwiTTIxLDEyLjEzQzIwLjg1LDEyLjE0IDIwLjcxLDEyLjE5IDIwLjYxLDEyLjNMMTkuNjEsMTMuM0wyMS42NiwxNS4zTDIyLjY2LDE0LjNDMjIuODgsMTQuMDkgMjIuODgsMTMuNzQgMjIuNjYsMTMuNTNMMjEuNDIsMTIuM0MyMS4zMiwxMi4xOSAyMS4xOCwxMi4xNCAyMS4wNCwxMi4xM00xOS4wNCwxMy44OEwxMywxOS45NFYyMkgxNS4wNkwyMS4xMiwxNS45M00yMCw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgxMVYxOS4xMUwxOS4yNCwxMC44OUMxOS43MSwxMC40IDIwLjM2LDEwLjEzIDIxLjA0LDEwLjEzQzIxLjM4LDEwLjEzIDIxLjcyLDEwLjE5IDIyLjA0LDEwLjMyVjZDMjIuMDQsNC44OCAyMS4xMiw0IDIwLDRNMjAsOEwxMiwxM0w0LDhWNkwxMiwxMUwyMCw2XCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxFZGl0T3V0bGluZSA9IFwiTTE5LjA3IDEzLjg4TDEzIDE5Ljk0VjIySDE1LjA2TDIxLjEyIDE1LjkzTTIyLjcgMTMuNThMMjEuNDIgMTIuM0MyMS4zMiAxMi4xOSAyMS4xOCAxMi4xMyAyMS4wNCAxMi4xM0MyMC44OSAxMi4xNCAyMC43NSAxMi4xOSAyMC42NSAxMi4zTDE5LjY1IDEzLjNMMjEuNyAxNS4zTDIyLjcgMTQuM0MyMi44OSAxNC4xIDIyLjg5IDEzLjc4IDIyLjcgMTMuNThNMTEgMThINFY4TDEyIDEzTDIwIDhWMTBIMjJWNkMyMiA0LjkgMjEuMSA0IDIwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDExVjE4TTIwIDZMMTIgMTFMNCA2SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsTG9jayA9IFwiTTIwLjUsMEEyLjUsMi41IDAgMCwxIDIzLDIuNVYzQTEsMSAwIDAsMSAyNCw0VjhBMSwxIDAgMCwxIDIzLDlIMThBMSwxIDAgMCwxIDE3LDhWNEExLDEgMCAwLDEgMTgsM1YyLjVBMi41LDIuNSAwIDAsMSAyMC41LDBNMTIsMTFMNCw2VjhMMTIsMTNMMTYuMTgsMTAuMzlDMTYuNjksMTAuNzcgMTcuMzIsMTEgMTgsMTFIMjJWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkEyLDIgMCAwLDEgNCw0SDE1VjhDMTUsOC4zNiAxNS4wNiw4LjcgMTUuMTgsOUwxMiwxMU0yMC41LDFBMS41LDEuNSAwIDAsMCAxOSwyLjVWM0gyMlYyLjVBMS41LDEuNSAwIDAsMCAyMC41LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxNYXJrQXNVbnJlYWQgPSBcIk0xOC44NCw3SDE2LjIyTDEwLjUsNEw0LDcuNDFWMTdBMiwyIDAgMCwxIDIsMTVWNy4xN0MyLDYuNSAyLjI4LDYuMDYgMi44MSw1LjgxTDEwLjUsMkwxOC4wNSw1LjgxQzE4LjUsNi4wOSAxOC43OCw2LjUgMTguODQsN003LDhIMjBBMiwyIDAgMCwxIDIyLDEwVjE5QTIsMiAwIDAsMSAyMCwyMUg3QTIsMiAwIDAsMSA1LDE5VjEwQTIsMiAwIDAsMSA3LDhNMjAsMTEuNjdWMTBMMTMuNSwxMy4zMUw3LDEwVjExLjY3TDEzLjUsMTVMMjAsMTEuNjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxNaW51cyA9IFwiTTMsNEMxLjg5LDQgMSw0Ljg5IDEsNlYxOEEyLDIgMCAwLDAgMywyMEgxNC4wOUMxNC4wMywxOS42NyAxNCwxOS4zNCAxNCwxOUE2LDYgMCAwLDEgMjAsMTNDMjAuMzQsMTMgMjAuNjcsMTMuMDMgMjEsMTMuMDlWNkMyMSw0Ljg5IDIwLjEsNCAxOSw0SDNNMyw2TDExLDExTDE5LDZWOEwxMSwxM0wzLDhWNk0xNiwxOFYyMEgyNFYxOEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE1pbnVzT3V0bGluZSA9IFwiTTE2IDE4VjIwSDI0VjE4SDE2TTE0IDE5QzE0IDE4LjY2IDE0LjA0IDE4LjMzIDE0LjA5IDE4SDNWOEwxMSAxM0wxOSA4VjEzLjA5QzE5LjMzIDEzLjA0IDE5LjY2IDEzIDIwIDEzUzIwLjY3IDEzLjA0IDIxIDEzLjA5VjZDMjEgNC45IDIwLjEgNCAxOSA0SDNDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEgxNC4wOUMxNC4wNCAxOS42NyAxNCAxOS4zNCAxNCAxOU0xOSA2TDExIDExTDMgNkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE11bHRpcGxlID0gXCJNMjIsNlY0TDE0LDlMNiw0VjZMMTQsMTFMMjIsNk0yMiwyQTIsMiAwIDAsMSAyNCw0VjE2QTIsMiAwIDAsMSAyMiwxOEg2QzQuODksMTggNCwxNy4xIDQsMTZWNEM0LDIuODkgNC44OSwyIDYsMkgyMk0yLDZWMjBIMjBWMjJIMkEyLDIgMCAwLDEgMCwyMFY2SDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxNdWx0aXBsZU91dGxpbmUgPSBcIk0yIDZWMjBIMjBWMjJIMkMuODk1IDIyIDAgMjEuMTEgMCAyMFY2SDJNMjQgNEMyNCAyLjkgMjMuMSAyIDIyIDJINkM0LjkgMiA0IDIuOSA0IDRWMTZDNCAxNy4xIDQuOSAxOCA2IDE4SDIyQzIzLjEgMTggMjQgMTcuMSAyNCAxNlY0TTIyIDRMMTQgOUw2IDRIMjJNMjIgMTZINlY2TDE0IDExTDIyIDZWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxOZXdzbGV0dGVyID0gXCJNMTIgLjY0TDguMjMgM0g1VjVMMi45NyA2LjI5QzIuMzkgNi42NCAyIDcuMjcgMiA4VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWOEMyMiA3LjI3IDIxLjYxIDYuNjQgMjEuMDMgNi4yOUwxOSA1VjNIMTUuNzdNNyA1SDE3VjkuODhMMTIgMTNMNyA5Ljg4TTggNlY3LjVIMTZWNk01IDcuMzhWOC42M0w0IDhNMTkgNy4zOEwyMCA4TDE5IDguNjNNOCA4LjVWMTBIMTZWOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMMi42IDQuNUMyLjIgNC45IDIgNS40IDIgNlYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMTguMUwyMC44IDIyLjdMMjIuMSAyMS41TTQgOFY2TDQuMyA2LjJMOS42IDExLjVMNCA4TTEzLjQgMTAuMkw3LjIgNEgyMEMyMS4xIDQgMjIgNC45IDIyIDZWMThDMjIgMTguMiAyMiAxOC41IDIxLjkgMTguN0wxNC42IDExLjRMMjAgOFY2TDEzLjQgMTAuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9mZk91dGxpbmUgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0wyLjYgNC41QzIuMyA0LjkgMiA1LjQgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgxOC4xTDIwLjggMjIuN0wyMi4xIDIxLjVNNCAxOFY4TDkuNiAxMS41TDE2LjEgMThINE05LjIgNkw3LjIgNEgyMEMyMS4xIDQgMjIgNC45IDIyIDZWMThDMjIgMTguMiAyMiAxOC41IDIxLjkgMTguN0wyMCAxNi44VjhMMTQuNiAxMS40TDEzLjQgMTAuMkwyMCA2SDkuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9wZW4gPSBcIk00LDhMMTIsMTNMMjAsOFY4TDEyLDNMNCw4VjhNMjIsOFYxOEEyLDIgMCAwLDEgMjAsMjBINEEyLDIgMCAwLDEgMiwxOFY4QzIsNy4yNyAyLjM5LDYuNjQgMi45Nyw2LjI5TDEyLDAuNjRMMjEuMDMsNi4yOUMyMS42MSw2LjY0IDIyLDcuMjcgMjIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9wZW5NdWx0aXBsZSA9IFwiTTYsOEwxNCwxM0wyMiw4VjhMMTQsM0w2LDhWOE0yNCw4VjE4QTIsMiAwIDAsMSAyMiwyMEg2QTIsMiAwIDAsMSA0LDE4VjhDNCw3LjI3IDQuMzksNi42NCA0Ljk3LDYuMjlMMTQsMC42NEwyMy4wMyw2LjI5QzIzLjYxLDYuNjQgMjQsNy4yNyAyNCw4TTIsOFYyMkgyMFYyNEgyQTIsMiAwIDAsMSAwLDIyVjhIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbE9wZW5NdWx0aXBsZU91dGxpbmUgPSBcIk0yIDhWMjJIMjBWMjRIMkMuODk1IDI0IDAgMjMuMTEgMCAyMlY4SDJNMjMuMDMgNi4yOUwxNCAuNjRMNC45NyA2LjI5QzQuMzkgNi42NCA0IDcuMjcgNCA4VjE4QzQgMTkuMSA0LjkgMjAgNiAyMEgyMkMyMy4xIDIwIDI0IDE5LjEgMjQgMThWOEMyNCA3LjI3IDIzLjYxIDYuNjQgMjMuMDMgNi4yOU0yMiAxOEg2VjEwTDE0IDE1TDIyIDEwVjE4TTE0IDEzTDYgOEwxNCAzTDIyIDhMMTQgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxPcGVuT3V0bGluZSA9IFwiTTIxLjAzIDYuMjlMMTIgLjY0TDIuOTcgNi4yOUMyLjM5IDYuNjQgMiA3LjI3IDIgOFYxOEMyIDE5LjEgMi45IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjhDMjIgNy4yNyAyMS42MSA2LjY0IDIxLjAzIDYuMjlNMjAgMThINFYxMEwxMiAxNUwyMCAxMFYxOE0xMiAxM0w0IDhMMTIgM0wyMCA4TDEyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsT3V0bGluZSA9IFwiTTIyIDZDMjIgNC45IDIxLjEgNCAyMCA0SDRDMi45IDQgMiA0LjkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNk0yMCA2TDEyIDExTDQgNkgyME0yMCAxOEg0VjhMMTIgMTNMMjAgOFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFBsdXMgPSBcIk0zLDRDMS44OSw0IDEsNC44OSAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMTQuMDlDMTQuMDMsMTkuNjcgMTQsMTkuMzQgMTQsMTlBNiw2IDAgMCwxIDIwLDEzQzIwLjM0LDEzIDIwLjY3LDEzLjAzIDIxLDEzLjA5VjZDMjEsNC44OSAyMC4xLDQgMTksNEgzTTMsNkwxMSwxMUwxOSw2VjhMMTEsMTNMMyw4VjZNMTksMTVWMThIMTZWMjBIMTlWMjNIMjFWMjBIMjRWMThIMjFWMTVIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxQbHVzT3V0bGluZSA9IFwiTTE5IDE1VjE4SDE2VjIwSDE5VjIzSDIxVjIwSDI0VjE4SDIxVjE1SDE5TTE0IDE4SDNWOEwxMSAxM0wxOSA4VjEzSDIxVjZDMjEgNC45IDIwLjEgNCAxOSA0SDNDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEgxNFYxOE0xOSA2TDExIDExTDMgNkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFJlY2VpdmUgPSBcIk0yMiAyMEgxOFYyM0wxMyAxOC41TDE4IDE0VjE3SDIyVjIwTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDExLjM1QTUuOCA1LjggMCAwIDEgMTEgMThBNiA2IDAgMCAxIDIyIDE0LjY5VjZBMiAyIDAgMCAwIDIwIDRNMjAgOEwxMiAxM0w0IDhWNkwxMiAxMUwyMCA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsUmVjZWl2ZU91dGxpbmUgPSBcIk0yMiAyMEgxOFYyM0wxMyAxOC41TDE4IDE0VjE3SDIyVjIwTTIwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDExVjE4SDRWOEwxMiAxM0wyMCA4VjE1SDIyVjZBMiAyIDAgMCAwIDIwIDRNMTIgMTFMNCA2SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsUmVtb3ZlID0gXCJNMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhMMjAuNDEgMTlNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuODkgNCA0IDRIMjBDMjEuMSA0IDIyIDQuODkgMjIgNlYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjAgOFY2TDEyIDExTDQgNlY4TDEyIDEzTDIwIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxSZW1vdmVPdXRsaW5lID0gXCJNMTMuMDkgMThINFY4TDEyIDEzTDIwIDhWMTMuMDlDMjAuNzIgMTMuMjEgMjEuMzkgMTMuNDYgMjIgMTMuODFWNkMyMiA0LjkgMjEuMSA0IDIwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDEzLjA5QzEzLjA0IDE5LjY3IDEzIDE5LjM0IDEzIDE5QzEzIDE4LjY2IDEzLjA0IDE4LjMzIDEzLjA5IDE4TTIwIDZMMTIgMTFMNCA2SDIwTTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsU2VhcmNoID0gXCJNMyw0SDE5QTIsMiAwIDAsMSAyMSw2VjEwLjgyQzIwLDkuODUgMTguNyw5LjIzIDE3LjMxLDkuMDZMMTksOFY2TDExLDExTDMsNlY4TDEwLjYyLDEyLjc2QzEwLjIxLDEzLjYyIDEwLDE0LjU1IDEwLDE1LjVDMTAsMTcuMTggMTAuNjUsMTguNzkgMTEuODEsMjBIM0EyLDIgMCAwLDEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0TTE2LjUsMTFDMTksMTEgMjEsMTMgMjEsMTUuNUMyMSwxNi4zOCAyMC43NSwxNy4yMSAyMC4zMSwxNy45TDIzLjM5LDIxTDIyLDIyLjM5TDE4Ljg4LDE5LjMyQzE4LjE5LDE5Ljc1IDE3LjM3LDIwIDE2LjUsMjBDMTQsMjAgMTIsMTggMTIsMTUuNUMxMiwxMyAxNCwxMSAxNi41LDExTTE2LjUsMTNBMi41LDIuNSAwIDAsMCAxNCwxNS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOEEyLjUsMi41IDAgMCwwIDE5LDE1LjVBMi41LDIuNSAwIDAsMCAxNi41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsU2VhcmNoT3V0bGluZSA9IFwiTTE2LjUgMTFDMTkgMTEgMjEgMTMgMjEgMTUuNUMyMSAxNi4zOCAyMC43NSAxNy4yMSAyMC4zMSAxNy45TDIzLjM5IDIxTDIyIDIyLjM5TDE4Ljg4IDE5LjMyQzE4LjE5IDE5Ljc1IDE3LjM3IDIwIDE2LjUgMjBDMTQgMjAgMTIgMTggMTIgMTUuNVMxNCAxMSAxNi41IDExTTE2LjUgMTNDMTUuMTIgMTMgMTQgMTQuMTIgMTQgMTUuNVMxNS4xMiAxOCAxNi41IDE4IDE5IDE2Ljg4IDE5IDE1LjUgMTcuODggMTMgMTYuNSAxM00xMC41IDE4SDNWOEwxMC42MiAxMi43NkMxMS42NSAxMC41NCAxMy45IDkgMTYuNSA5QzE2Ljc3IDkgMTcuMDQgOSAxNy4zMSA5LjA2TDE5IDhWOS41QzE5Ljc1IDkuODEgMjAuNDIgMTAuMjcgMjEgMTAuODJWNkMyMSA0LjkgMjAuMSA0IDE5IDRIM0MxLjkgNCAxIDQuOSAxIDZWMThDMSAxOS4xIDEuOSAyMCAzIDIwSDExLjgyQzExLjI3IDE5LjQyIDEwLjgyIDE4Ljc1IDEwLjUgMThNMTkgNkwxMSAxMUwzIDZIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1haWxTZW5kID0gXCJNMTMgMTdIMTdWMTRMMjIgMTguNUwxNyAyM1YyMEgxM1YxN00yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgxMS4zNUE1LjggNS44IDAgMCAxIDExIDE4QTYgNiAwIDAgMSAyMiAxNC42OVY2QTIgMiAwIDAgMCAyMCA0TTIwIDhMMTIgMTNMNCA4VjZMMTIgMTFMMjAgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFNlbmRPdXRsaW5lID0gXCJNMTMgMTdIMTdWMTRMMjIgMTguNUwxNyAyM1YyMEgxM1YxN00yMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgxMVYxOEg0VjhMMTIgMTNMMjAgOFYxNEgyMlY2QTIgMiAwIDAgMCAyMCA0TTEyIDExTDQgNkgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWFpbFN5bmMgPSBcIk0zIDRDMS44OSA0IDEgNC44OSAxIDZWMThDMSAxOS4xMSAxLjkgMjAgMyAyMEgxMy41QTYuNSA2LjUgMCAwIDEgMTMgMTcuNUE2LjUgNi41IDAgMCAxIDE5LjUgMTFBNi41IDYuNSAwIDAgMSAyMSAxMS4xOFY2QzIxIDQuODkgMjAuMSA0IDE5IDRIM00zIDZMMTEgMTFMMTkgNlY4TDExIDEzTDMgOFY2TTE5IDEyTDE2Ljc1IDE0LjI1TDE5IDE2LjVWMTVDMjAuMzggMTUgMjEuNSAxNi4xMiAyMS41IDE3LjVDMjEuNSAxNy45IDIxLjQxIDE4LjI4IDIxLjI0IDE4LjYyTDIyLjMzIDE5LjcxQzIyLjc1IDE5LjA4IDIzIDE4LjMyIDIzIDE3LjVDMjMgMTUuMjkgMjEuMjEgMTMuNSAxOSAxMy41VjEyTTE1LjY3IDE1LjI5QzE1LjI1IDE1LjkyIDE1IDE2LjY4IDE1IDE3LjVDMTUgMTkuNzEgMTYuNzkgMjEuNSAxOSAyMS41VjIzTDIxLjI1IDIwLjc1TDE5IDE4LjVWMjBDMTcuNjIgMjAgMTYuNSAxOC44OCAxNi41IDE3LjVDMTYuNSAxNy4xIDE2LjU5IDE2LjcyIDE2Ljc2IDE2LjM4TDE1LjY3IDE1LjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsU3luY091dGxpbmUgPSBcIk0zIDRDMS45IDQgMSA0LjkgMSA2VjE4QzEgMTkuMSAxLjkgMjAgMyAyMEgxMy41QTYuNSA2LjUgMCAwIDEgMTMgMThIM1Y4TDExIDEzTDE5IDhWMTFBNi41IDYuNSAwIDAgMSAxOS41IDExQTYuNSA2LjUgMCAwIDEgMjEgMTEuMThWNkMyMSA0LjkgMjAuMSA0IDE5IDRIM00zIDZIMTlMMTEgMTFMMyA2TTE5IDEyTDE2Ljc1IDE0LjI1TDE5IDE2LjVWMTVDMjAuMzggMTUgMjEuNSAxNi4xMiAyMS41IDE3LjVDMjEuNSAxNy45IDIxLjQxIDE4LjI4IDIxLjI0IDE4LjYyTDIyLjMzIDE5LjcxQzIyLjc1IDE5LjA4IDIzIDE4LjMyIDIzIDE3LjVDMjMgMTUuMjkgMjEuMjEgMTMuNSAxOSAxMy41VjEyTTE1LjY3IDE1LjI5QzE1LjI1IDE1LjkyIDE1IDE2LjY4IDE1IDE3LjVDMTUgMTkuNzEgMTYuNzkgMjEuNSAxOSAyMS41VjIzTDIxLjI1IDIwLjc1TDE5IDE4LjVWMjBDMTcuNjIgMjAgMTYuNSAxOC44OCAxNi41IDE3LjVDMTYuNSAxNy4xIDE2LjU5IDE2LjcyIDE2Ljc2IDE2LjM4TDE1LjY3IDE1LjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYWlsVmFyaWFudCA9IFwiTTEyLDEzTDIsNi43NlY2QzIsNC44OSAyLjg5LDQgNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjYuNzVMMTIsMTNNMjIsMThBMiwyIDAgMCwxIDIwLDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY5LjExTDQsMTAuMzZWMThIMjBWMTAuMzZMMjIsOS4xMVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbWJlciA9IFwiTTIyLDE0LjIyQzIyLDE0LjIyIDE3LjYxLDE3LjM1IDE0LjcyLDE3LjM5QzExLjg0LDE3LjQ0IDEyLjEzLDE1LjU2IDEyLjEzLDE1LjU2QzEyLjEzLDE1LjU2IDIyLjcxLDExLjk0IDE5LjgzLDQuNzlDMTguNTMsMi45NSAxNywyLjM3IDE0Ljg5LDIuNDJDMTIuNzYsMi40NiAxMC4xNywzLjc2IDguNDYsNy42QzcuNjQsOS40NCA3LjQxLDExLjE4IDcuMjQsMTIuNVYxMi41QzcuMjQsMTIuNSA1LjMyLDEyLjg4IDQuMzIsMTIuMDRDMy4zMiwxMS4yIDIuNzcsMTIuMDQgMi43NywxMi4wNEMyLjc3LDEyLjA0IDEuMDMsMTQuMiAyLjc1LDE0Ljg3QzQuNDYsMTUuNTQgNy4xMiwxNS44MiA3LjEyLDE1LjgyVjE1LjgyQzcuMzYsMTcgOC4wOCwxOSAxMC4xNywyMC42QzEzLjMsMjMgMTkuMzIsMjAuNCAxOS4zMiwyMC40TTExLjYzLDEyLjMzQzExLjc2LDcuMzYgMTUsNS4xOCAxNi4xNSw2LjI3QzE3LjI3LDcuMzYgMTYuODYsOS43IDE0LjcyLDExLjE2QzEyLjU5LDEyLjYzIDExLjYzLDEyLjMzIDExLjYzLDEyLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtYnkgPSBcIk0xMSwyTDYsN0w3LDhMMiwxM0w3LDE4TDgsMTdMMTMsMjJMMTgsMTdMMTcsMTZMMjIsMTFMMTcsNkwxNiw3TDExLDJNMTAsOC41TDE2LDEyTDEwLDE1LjVWOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uID0gXCJNMTIsMkM2LjQ3LDIgMiw2LjUgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTE1LjUsOEExLjUsMS41IDAgMCwxIDE3LDkuNUExLjUsMS41IDAgMCwxIDE1LjUsMTFBMS41LDEuNSAwIDAsMSAxNCw5LjVBMS41LDEuNSAwIDAsMSAxNS41LDhNOC41LDhBMS41LDEuNSAwIDAsMSAxMCw5LjVBMS41LDEuNSAwIDAsMSA4LjUsMTFBMS41LDEuNSAwIDAsMSA3LDkuNUExLjUsMS41IDAgMCwxIDguNSw4TTEyLDE3LjVDOS42NywxNy41IDcuNjksMTYuMDQgNi44OSwxNEgxNy4xMUMxNi4zLDE2LjA0IDE0LjMzLDE3LjUgMTIsMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkFuZ3J5ID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVWOEwxMCw5LjVDMTAsMTAuMyA5LjMsMTEgOC41LDExQzcuNywxMSA3LDEwLjMgNyw5LjVNMTQuNzcsMTcuMjNDMTQuMzIsMTYuNSAxMy4yNSwxNiAxMiwxNkMxMC43NSwxNiA5LjY4LDE2LjUgOS4yMywxNy4yM0w3LjgxLDE1LjgxQzguNzEsMTQuNzIgMTAuMjUsMTQgMTIsMTRDMTMuNzUsMTQgMTUuMjksMTQuNzIgMTYuMTksMTUuODFMMTQuNzcsMTcuMjNNMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVMMTcsOFY5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25BbmdyeU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDE0QzEzLjc1LDE0IDE1LjI5LDE0LjcyIDE2LjE5LDE1LjgxTDE0Ljc3LDE3LjIzQzE0LjMyLDE2LjUgMTMuMjUsMTYgMTIsMTZDMTAuNzUsMTYgOS42OCwxNi41IDkuMjMsMTcuMjNMNy44MSwxNS44MUM4LjcxLDE0LjcyIDEwLjI1LDE0IDEyLDE0TTEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNVY4TDEwLDkuNU0xNyw5LjVDMTcsMTAuMyAxNi4zLDExIDE1LjUsMTFDMTQuNywxMSAxNCwxMC4zIDE0LDkuNUwxNyw4VjkuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uQ29uZnVzZWQgPSBcIk0xMiAyQTEwIDEwIDAgMSAwIDIyIDEyQTEwIDEwIDAgMCAwIDEyIDJNOC41IDhBMS41IDEuNSAwIDEgMSA3IDkuNUExLjU0IDEuNTQgMCAwIDEgOC41IDhNMTcgMTZIMTNBNCA0IDAgMCAwIDkuNTMgMThMNy44IDE3QTYgNiAwIDAgMSAxMyAxNEgxN00xNS41IDExQTEuNSAxLjUgMCAxIDEgMTcgOS41QTEuNTQgMS41NCAwIDAgMSAxNS41IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uQ29uZnVzZWRPdXRsaW5lID0gXCJNMjAgMTJBOCA4IDAgMSAwIDEyIDIwQTggOCAwIDAgMCAyMCAxMk0yMiAxMkExMCAxMCAwIDEgMSAxMiAyQTEwIDEwIDAgMCAxIDIyIDEyTTE1LjUgOEExLjUgMS41IDAgMSAxIDE0IDkuNUExLjU0IDEuNTQgMCAwIDEgMTUuNSA4TTEwIDkuNUExLjUgMS41IDAgMSAxIDguNSA4QTEuNTQgMS41NCAwIDAgMSAxMCA5LjVNMTcgMTVIMTNBNCA0IDAgMCAwIDkuNTMgMTdMNy44IDE2QTYgNiAwIDAgMSAxMyAxM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkNvb2wgPSBcIk0zLjIyLDcuMjJDNC45MSw0LjExIDguMjEsMiAxMiwyQzE1Ljc5LDIgMTkuMDksNC4xMSAyMC43OCw3LjIyTDIwLDhINEwzLjIyLDcuMjJNMjEuNCw4LjZDMjEuNzgsOS42NyAyMiwxMC44MSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQzIsMTAuODEgMi4yMiw5LjY3IDIuNiw4LjZMNCwxMEg1QzUsMTEuMzggNy4xMiwxMi41IDguNSwxMi41QzkuODgsMTIuNSAxMS4yNSwxMS4zOCAxMS4yNSwxMEgxMi43NUMxMi43NSwxMS4zOCAxNC4xMiwxMi41IDE1LjUsMTIuNUMxNi44OCwxMi41IDE5LDExLjM4IDE5LDEwSDIwTDIxLjQsOC42TTE2LjE5LDE1LjQyTDE0Ljc3LDE0QzE0LjMyLDE0LjcyIDEzLjI1LDE1LjIzIDEyLDE1LjIzQzEwLjc1LDE1LjIzIDkuNjgsMTQuNzIgOS4yMywxNEw3LjgxLDE1LjQyQzguNzEsMTYuNSAxMC4yNSwxNy4yMyAxMiwxNy4yM0MxMy43NSwxNy4yMyAxNS4yOSwxNi41IDE2LjE5LDE1LjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uQ29vbE91dGxpbmUgPSBcIk0xOSwxMEMxOSwxMS4zOCAxNi44OCwxMi41IDE1LjUsMTIuNUMxNC4xMiwxMi41IDEyLjc1LDExLjM4IDEyLjc1LDEwSDExLjI1QzExLjI1LDExLjM4IDkuODgsMTIuNSA4LjUsMTIuNUM3LjEyLDEyLjUgNSwxMS4zOCA1LDEwSDQuMjVDNC4wOSwxMC42NCA0LDExLjMxIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCwxMS4zMSAxOS45MSwxMC42NCAxOS43NSwxMEgxOU0xMiw0QzkuMDQsNCA2LjQ1LDUuNjEgNS4wNyw4SDE4LjkzQzE3LjU1LDUuNjEgMTQuOTYsNCAxMiw0TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0xMiwxNy4yM0MxMC4yNSwxNy4yMyA4LjcxLDE2LjUgNy44MSwxNS40Mkw5LjIzLDE0QzkuNjgsMTQuNzIgMTAuNzUsMTUuMjMgMTIsMTUuMjNDMTMuMjUsMTUuMjMgMTQuMzIsMTQuNzIgMTQuNzcsMTRMMTYuMTksMTUuNDJDMTUuMjksMTYuNSAxMy43NSwxNy4yMyAxMiwxNy4yM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkNyeSA9IFwiTTUuMTQsMTcuNTdDNS4xNCwxNi41IDYuMzIsMTQuNSA3LjU3LDEyLjgxQzguODIsMTQuNSAxMCwxNi41IDEwLDE3LjU3QTIuNDMsMi40MyAwIDAsMSA3LjU3LDIwQzYuMjMsMjAgNS4xNCwxOC45MSA1LjE0LDE3LjU3TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQzExLjA4LDIyIDEwLjE4LDIxLjg2IDkuMzMsMjEuNjNDMTAuOSwyMC45NSAxMiwxOS4zOSAxMiwxNy41N0MxMiwxNy4xMiAxMS44OSwxNi42IDExLjY5LDE2QzExLjc5LDE2IDExLjg5LDE2IDEyLDE2QzEzLjI1LDE2IDE0LjMyLDE2LjUgMTQuNzcsMTcuMjNMMTYuMTksMTUuODFDMTUuMjksMTQuNzIgMTMuNzUsMTQgMTIsMTRDMTEuNTksMTQgMTEuMTksMTQuMDQgMTAuODEsMTQuMTJDMTAuMzgsMTMuMzYgOS44NSwxMi41MyA5LjE5LDExLjYzTDguNzEsMTFDOS40MiwxMC44NyAxMCwxMC4yMyAxMCw5LjVDMTAsOC43IDkuMyw4IDguNSw4QzcuNyw4IDcsOC43IDcsOS41QzcsOS42OSA3LjA0LDkuODcgNy4xMSwxMC4wNEw1Ljk2LDExLjYzQzQuNCwxMy43NSAzLjUsMTUuNSAzLjIzLDE2LjgxQzIuNDUsMTUuMzggMiwxMy43NCAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTcsOS41QzE3LDguNyAxNi4zLDggMTUuNSw4QzE0LjcsOCAxNCw4LjcgMTQsOS41QzE0LDEwLjMgMTQuNywxMSAxNS41LDExQzE2LjMsMTEgMTcsMTAuMyAxNyw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25DcnlPdXRsaW5lID0gXCJNNy41NywyMEM2LjIzLDIwIDUuMTQsMTguOTEgNS4xNCwxNy41N0M1LjE0LDE2LjUgNi4zMiwxNC41IDcuNTcsMTIuODFDOC44MiwxNC41IDEwLDE2LjUgMTAsMTcuNTdBMi40MywyLjQzIDAgMCwxIDcuNTcsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQzIsMTMuNzUgMi40NSwxNS4zOCAzLjI0LDE2LjgxQzMuNCwxNiAzLjgxLDE1LjA3IDQuMzEsMTQuMTdDNC4xMSwxMy41IDQsMTIuNzUgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQzExLjc2LDIwIDExLjUzLDIwIDExLjI5LDE5Ljk2QzEwLjgyLDIwLjcgMTAuMTQsMjEuMjggOS4zNCwyMS42M0MxMC4xOSwyMS44NyAxMS4wOCwyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDE0QzExLjU5LDE0IDExLjE5LDE0LjA0IDEwLjgxLDE0LjEyQzExLjE2LDE0Ljc1IDExLjQ3LDE1LjQgMTEuNjksMTZDMTEuNzksMTYgMTEuODksMTYgMTIsMTZDMTMuMjUsMTYgMTQuMzIsMTYuNSAxNC43NywxNy4yM0wxNi4xOSwxNS44MUMxNS4yOSwxNC43MiAxMy43NSwxNCAxMiwxNE0xNS41LDhDMTQuNyw4IDE0LDguNyAxNCw5LjVDMTQsMTAuMyAxNC43LDExIDE1LjUsMTFDMTYuMywxMSAxNywxMC4zIDE3LDkuNUMxNyw4LjcgMTYuMyw4IDE1LjUsOE0xMCw5LjVDMTAsOC43IDkuMyw4IDguNSw4QzcuNyw4IDcsOC43IDcsOS41QzcsMTAuMyA3LjcsMTEgOC41LDExQzkuMywxMSAxMCwxMC4zIDEwLDkuNVwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uRGVhZCA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyTTYuNzYsOC44Mkw3LjgyLDcuNzZMOC44OCw4LjgyTDkuOTQsNy43NkwxMSw4LjgyTDkuOTQsOS44OEwxMSwxMC45NEw5Ljk0LDEyTDguODgsMTAuOTRMNy44MiwxMkw2Ljc2LDEwLjk0TDcuODIsOS44OEw2Ljc2LDguODJNNi44OSwxNy41QzcuNjksMTUuNDYgOS42NywxNCAxMiwxNEMxNC4zMywxNCAxNi4zMSwxNS40NiAxNy4xMSwxNy41SDYuODlNMTcuMjQsMTAuOTRMMTYuMTgsMTJMMTUuMTIsMTAuOTRMMTQuMDYsMTJMMTMsMTAuOTRMMTQuMDYsOS44OEwxMyw4LjgyTDE0LjA2LDcuNzZMMTUuMTIsOC44MkwxNi4xOCw3Ljc2TDE3LjI0LDguODJMMTYuMTgsOS44OEwxNy4yNCwxMC45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkRlYWRPdXRsaW5lID0gXCJNMTIsMkM2LjQ3LDIgMiw2LjQ3IDIsMTJDMiwxNy41MyA2LjQ3LDIyIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNi4xOCw3Ljc2TDE1LjEyLDguODJMMTQuMDYsNy43NkwxMyw4LjgyTDE0LjA2LDkuODhMMTMsMTAuOTRMMTQuMDYsMTJMMTUuMTIsMTAuOTRMMTYuMTgsMTJMMTcuMjQsMTAuOTRMMTYuMTgsOS44OEwxNy4yNCw4LjgyTDE2LjE4LDcuNzZNNy44MiwxMkw4Ljg4LDEwLjk0TDkuOTQsMTJMMTEsMTAuOTRMOS45NCw5Ljg4TDExLDguODJMOS45NCw3Ljc2TDguODgsOC44Mkw3LjgyLDcuNzZMNi43Niw4LjgyTDcuODIsOS44OEw2Ljc2LDEwLjk0TDcuODIsMTJNMTIsMTRDOS42NywxNCA3LjY5LDE1LjQ2IDYuODksMTcuNUgxNy4xMUMxNi4zMSwxNS40NiAxNC4zMywxNCAxMiwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkRldmlsID0gXCJNMjIuNSwyLjA5QzIxLjYsMyAyMC4xMywzLjczIDE4LjMxLDQuMjVDMTYuNTksMi44NCAxNC4zOSwyIDEyLDJDOS42MSwyIDcuNDEsMi44NCA1LjY5LDQuMjVDMy44NywzLjczIDIuNCwzIDEuNSwyLjA5QzEuNTMsMy43MiAyLjM1LDUuMjEgMy43Miw2LjRDMi42Myw4IDIsOS45MiAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDkuOTIgMjEuMzcsOCAyMC4yOCw2LjRDMjEuNjUsNS4yMSAyMi40NywzLjcyIDIyLjUsMi4wOU03LjUsOC41TDEwLjUsMTBDMTAuNSwxMC44IDkuOCwxMS41IDksMTEuNUM4LjIsMTEuNSA3LjUsMTAuOCA3LjUsMTBWOC41TTEyLDE3LjIzQzEwLjI1LDE3LjIzIDguNzEsMTYuNSA3LjgxLDE1LjQyTDkuMjMsMTRDOS42OCwxNC43MiAxMC43NSwxNS4yMyAxMiwxNS4yM0MxMy4yNSwxNS4yMyAxNC4zMiwxNC43MiAxNC43NywxNEwxNi4xOSwxNS40MkMxNS4yOSwxNi41IDEzLjc1LDE3LjIzIDEyLDE3LjIzTTE2LjUsMTBDMTYuNSwxMC44IDE1LjgsMTEuNSAxNSwxMS41QzE0LjIsMTEuNSAxMy41LDEwLjggMTMuNSwxMEwxNi41LDguNVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkRldmlsT3V0bGluZSA9IFwiTTEuNSwyLjA5QzIuNCwzIDMuODcsMy43MyA1LjY5LDQuMjVDNy40MSwyLjg0IDkuNjEsMiAxMiwyQzE0LjM5LDIgMTYuNTksMi44NCAxOC4zMSw0LjI1QzIwLjEzLDMuNzMgMjEuNiwzIDIyLjUsMi4wOUMyMi40NywzLjcyIDIxLjY1LDUuMjEgMjAuMjgsNi40QzIxLjM3LDggMjIsOS45MiAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQzIsOS45MiAyLjYzLDggMy43Miw2LjRDMi4zNSw1LjIxIDEuNTMsMy43MiAxLjUsMi4wOU0yMCwxMkE4LDggMCAwLDAgMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyTTEwLjUsMTBDMTAuNSwxMC44IDkuOCwxMS41IDksMTEuNUM4LjIsMTEuNSA3LjUsMTAuOCA3LjUsMTBWOC41TDEwLjUsMTBNMTYuNSwxMEMxNi41LDEwLjggMTUuOCwxMS41IDE1LDExLjVDMTQuMiwxMS41IDEzLjUsMTAuOCAxMy41LDEwTDE2LjUsOC41VjEwTTEyLDE3LjIzQzEwLjI1LDE3LjIzIDguNzEsMTYuNSA3LjgxLDE1LjQyTDkuMjMsMTRDOS42OCwxNC43MiAxMC43NSwxNS4yMyAxMiwxNS4yM0MxMy4yNSwxNS4yMyAxNC4zMiwxNC43MiAxNC43NywxNEwxNi4xOSwxNS40MkMxNS4yOSwxNi41IDEzLjc1LDE3LjIzIDEyLDE3LjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uRXhjaXRlZCA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyTTguODgsNy44MkwxMSw5Ljk0TDkuOTQsMTFMOC44OCw5Ljk0TDcuODIsMTFMNi43Niw5Ljk0TDguODgsNy44Mk0xMiwxNy41QzkuNjcsMTcuNSA3LjY5LDE2LjA0IDYuODksMTRIMTcuMTFDMTYuMzEsMTYuMDQgMTQuMzMsMTcuNSAxMiwxNy41TTE2LjE4LDExTDE1LjEyLDkuOTRMMTQuMDYsMTFMMTMsOS45NEwxNS4xMiw3LjgyTDE3LjI0LDkuOTRMMTYuMTgsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25FeGNpdGVkT3V0bGluZSA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTMsOS45NEwxNC4wNiwxMUwxNS4xMiw5Ljk0TDE2LjE4LDExTDE3LjI0LDkuOTRMMTUuMTIsNy44MkwxMyw5Ljk0TTguODgsOS45NEw5Ljk0LDExTDExLDkuOTRMOC44OCw3LjgyTDYuNzYsOS45NEw3LjgyLDExTDguODgsOS45NE0xMiwxNy41QzE0LjMzLDE3LjUgMTYuMzEsMTYuMDQgMTcuMTEsMTRINi44OUM3LjY5LDE2LjA0IDkuNjcsMTcuNSAxMiwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uRnJvd24gPSBcIk0xMiAyQzYuNDcgMiAyIDYuNSAyIDEyUzYuNDcgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyUzE3LjUgMiAxMiAyTTE1LjUgOEMxNi4zMyA4IDE3IDguNjcgMTcgOS41UzE2LjMzIDExIDE1LjUgMTEgMTQgMTAuMzMgMTQgOS41IDE0LjY3IDggMTUuNSA4TTguNSA4QzkuMzMgOCAxMCA4LjY3IDEwIDkuNVM5LjMzIDExIDguNSAxMSA3IDEwLjMzIDcgOS41IDcuNjcgOCA4LjUgOE02Ljg5IDE3QzcuNjkgMTQuOTYgOS42NyAxMy41IDEyIDEzLjVTMTYuMzEgMTQuOTYgMTcuMTEgMTdINi44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkZyb3duT3V0bGluZSA9IFwiTTEyIDJDNi40NyAyIDIgNi41IDIgMTJTNi40NyAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJTMTcuNSAyIDEyIDJNMTIgMjBDNy41OCAyMCA0IDE2LjQyIDQgMTJTNy41OCA0IDEyIDQgMjAgNy41OCAyMCAxMiAxNi40MiAyMCAxMiAyME0xNS41IDExQzE2LjMzIDExIDE3IDEwLjMzIDE3IDkuNVMxNi4zMyA4IDE1LjUgOCAxNCA4LjY3IDE0IDkuNSAxNC42NyAxMSAxNS41IDExTTguNSAxMUM5LjMzIDExIDEwIDEwLjMzIDEwIDkuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExTTEyIDEzLjVDOS42NyAxMy41IDcuNjkgMTQuOTYgNi44OSAxN0gxNy4xMUMxNi4zMSAxNC45NiAxNC4zMyAxMy41IDEyIDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25IYXBweSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTcsOS41QzcsOC43IDcuNyw4IDguNSw4QzkuMyw4IDEwLDguNyAxMCw5LjVDMTAsMTAuMyA5LjMsMTEgOC41LDExQzcuNywxMSA3LDEwLjMgNyw5LjVNMTIsMTcuMjNDMTAuMjUsMTcuMjMgOC43MSwxNi41IDcuODEsMTUuNDJMOS4yMywxNEM5LjY4LDE0LjcyIDEwLjc1LDE1LjIzIDEyLDE1LjIzQzEzLjI1LDE1LjIzIDE0LjMyLDE0LjcyIDE0Ljc3LDE0TDE2LjE5LDE1LjQyQzE1LjI5LDE2LjUgMTMuNzUsMTcuMjMgMTIsMTcuMjNNMTUuNSwxMUMxNC43LDExIDE0LDEwLjMgMTQsOS41QzE0LDguNyAxNC43LDggMTUuNSw4QzE2LjMsOCAxNyw4LjcgMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uSGFwcHlPdXRsaW5lID0gXCJNMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTAsOS41QzEwLDEwLjMgOS4zLDExIDguNSwxMUM3LjcsMTEgNywxMC4zIDcsOS41QzcsOC43IDcuNyw4IDguNSw4QzkuMyw4IDEwLDguNyAxMCw5LjVNMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVDMTQsOC43IDE0LjcsOCAxNS41LDhDMTYuMyw4IDE3LDguNyAxNyw5LjVNMTIsMTcuMjNDMTAuMjUsMTcuMjMgOC43MSwxNi41IDcuODEsMTUuNDJMOS4yMywxNEM5LjY4LDE0LjcyIDEwLjc1LDE1LjIzIDEyLDE1LjIzQzEzLjI1LDE1LjIzIDE0LjMyLDE0LjcyIDE0Ljc3LDE0TDE2LjE5LDE1LjQyQzE1LjI5LDE2LjUgMTMuNzUsMTcuMjMgMTIsMTcuMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25LaXNzID0gXCJNMTguOSwxOC45NEwxNS45NCwxNkMxNS43NiwxNS43OSAxNS41NSwxNS41IDE1LjU1LDE1LjA1QTEuMywxLjMgMCAwLDEgMTYuODUsMTMuNzVDMTcuMTksMTMuNzUgMTcuNTMsMTMuODkgMTcuNzcsMTQuMTVMMTguOTEsMTUuMjZMMjAuMDMsMTQuMTNDMjAuMjcsMTMuODkgMjAuNjEsMTMuNzUgMjAuOTUsMTMuNzVBMS4zLDEuMyAwIDAsMSAyMi4yNSwxNS4wNUMyMi4yNSwxNS4zOSAyMi4xMSwxNS43MyAyMS44NywxNS45N0wxOC45LDE4Ljk0TTE3LjQ2LDE5LjYyQzE1LjcyLDIxLjEgMTMuNDcsMjIgMTEsMjJBMTAsMTAgMCAwLDEgMSwxMkExMCwxMCAwIDAsMSAxMSwyQTEwLDEwIDAgMCwxIDIxLDEyQzIxLDEyLjA5IDIxLDEyLjE3IDIwLjk1LDEyLjI1QzIwLjIxLDEyLjI1IDE5LjUsMTIuNTUgMTguOTcsMTMuMDdMMTguOSwxMy4xNEwxOC44NCwxMy4wOUMxOC4zMiwxMi41NSAxNy42LDEyLjI1IDE2Ljg1LDEyLjI1QTIuOCwyLjggMCAwLDAgMTQuMDUsMTUuMDVDMTQuMDUsMTUuNzggMTQuMzQsMTYuNSAxNC44NywxNy4wM0wxNy40NiwxOS42Mk0xMyw5LjVDMTMsMTAuMyAxMy43LDExIDE0LjUsMTFDMTUuMywxMSAxNiwxMC4zIDE2LDkuNUMxNiw4LjcgMTUuMyw4IDE0LjUsOEMxMy43LDggMTMsOC43IDEzLDkuNU05LDkuNUM5LDguNyA4LjMsOCA3LjUsOEM2LjcsOCA2LDguNyA2LDkuNUM2LDEwLjMgNi43LDExIDcuNSwxMUM4LjMsMTEgOSwxMC4zIDksOS41TTEyLjk0LDE1LjE4TDE0LDE0LjEyTDExLjg4LDEyTDEwLjgyLDEzLjA2TDExLjg4LDE0LjEyTDEwLjgyLDE1LjE4TDExLjg4LDE2LjI0TDEwLjgyLDE3LjNMMTEuODgsMTguMzZMMTQsMTYuMjRMMTIuOTQsMTUuMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25LaXNzT3V0bGluZSA9IFwiTTksOS41QzksMTAuMyA4LjMsMTEgNy41LDExQzYuNywxMSA2LDEwLjMgNiw5LjVDNiw4LjcgNi43LDggNy41LDhDOC4zLDggOSw4LjcgOSw5LjVNMTYsOS41QzE2LDEwLjMgMTUuMywxMSAxNC41LDExQzEzLjcsMTEgMTMsMTAuMyAxMyw5LjVDMTMsOC43IDEzLjcsOCAxNC41LDhDMTUuMyw4IDE2LDguNyAxNiw5LjVNMTQsMTQuMTJMMTEuODgsMTJMMTAuODIsMTMuMDZMMTEuODgsMTQuMTJMMTAuODIsMTUuMThMMTEuODgsMTYuMjRMMTAuODIsMTcuM0wxMS44OCwxOC4zNkwxNCwxNi4yNEwxMi45NCwxNS4xOEwxNCwxNC4xMk0xNi44NSwxM0EyLjA1LDIuMDUgMCAwLDAgMTQuOCwxNS4wNUMxNC44LDE1LjYyIDE1LjAzLDE2LjEyIDE1LjQsMTYuNUwxOC45LDIwTDIyLjQsMTYuNUMyMi43NywxNi4xMyAyMywxNS42MSAyMywxNS4wNUEyLjA1LDIuMDUgMCAwLDAgMjAuOTUsMTNDMjAuNCwxMyAxOS44NywxMy4yMyAxOS41LDEzLjZMMTguOSwxNC4yTDE4LjMsMTMuNjFDMTcuOTMsMTMuMjMgMTcuNCwxMyAxNi44NSwxM00xNSwxOC45MkMxMy44MiwxOS42IDEyLjQ2LDIwIDExLDIwQTgsOCAwIDAsMSAzLDEyQTgsOCAwIDAsMSAxMSw0QzE1LjI2LDQgMTguNzMsNy4zMyAxOSwxMS41QzE5LjU4LDExLjE5IDIwLjI2LDExIDIwLjk1LDExQzIwLjQ1LDUuOTUgMTYuMTgsMiAxMSwyQTEwLDEwIDAgMCwwIDEsMTJBMTAsMTAgMCAwLDAgMTEsMjJDMTMsMjIgMTQuODgsMjEuNCAxNi40NSwyMC4zOEwxNSwxOC45MlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkxvbCA9IFwiTTE1LjA3IDguOTNWNC45M0E0LjA2IDQuMDYgMCAwIDEgMTUuNzMgMi43MkExMCAxMCAwIDAgMCAyLjczIDE1LjcyQTQuMDYgNC4wNiAwIDAgMSA0Ljk0IDE1LjA2SDguOTRWMTkuMDZBNC4wNiA0LjA2IDAgMCAxIDguMjggMjEuMjdBMTAgMTAgMCAwIDAgMjEuMjggOC4yN0E0LjA2IDQuMDYgMCAwIDEgMTkuMDcgOC45M00xMSA2SDEyLjVWNy41SDE0VjlIMTFNNy41IDE0VjEyLjVINlYxMUg5VjE0TTE1Ljg5IDE1LjlBNS41IDUuNSAwIDAgMSA5LjggMTdMMTcgOS44QTUuNSA1LjUgMCAwIDEgMTUuODkgMTUuODlNNC44OSAyMS4wOEEyIDIgMCAwIDEgMi44OSAxOS4wOEEyIDIgMCAwIDEgNC44OSAxNy4wOEg2Ljg5VjE5LjA4QTIgMiAwIDAgMSA0LjkzIDIxLjA3TTE5LjA3IDIuOTNBMiAyIDAgMCAxIDIxLjA3IDQuOTNBMiAyIDAgMCAxIDE5LjA3IDYuOTNIMTcuMDdWNC45M0EyIDIgMCAwIDEgMTkuMDcgMi45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvbkxvbE91dGxpbmUgPSBcIk02IDExVjEyLjVINy41VjE0SDlWMTFNMTIuNSA2SDExVjlIMTRWNy41SDEyLjVNOS44IDE3QTUuNSA1LjUgMCAwIDAgMTcgOS44TTYuMzQgNi4zNEE4IDggMCAwIDEgMTUuMDggNC42MkE0LjExIDQuMTEgMCAwIDEgMTUuNzMgMi43MkExMCAxMCAwIDAgMCAyLjczIDE1LjcyQTQuMTEgNC4xMSAwIDAgMSA0LjYzIDE1LjA3QTggOCAwIDAgMSA2LjM0IDYuMzRNMTcuNjYgMTcuNjZBOCA4IDAgMCAxIDguOTIgMTkuMzhBNC4xMSA0LjExIDAgMCAxIDguMjcgMjEuMjhBMTAgMTAgMCAwIDAgMjEuMjcgOC4yOEE0LjExIDQuMTEgMCAwIDEgMTkuMzcgOC45M0E4IDggMCAwIDEgMTcuNjYgMTcuNjZNNiAxMVYxMi41SDcuNVYxNEg5VjExTTkuOCAxN0E1LjUgNS41IDAgMCAwIDE3IDkuOE0xMi41IDZIMTFWOUgxNFY3LjVIMTIuNU02IDExVjEyLjVINy41VjE0SDlWMTFNMTIuNSA2SDExVjlIMTRWNy41SDEyLjVNOS44IDE3QTUuNSA1LjUgMCAwIDAgMTcgOS44TTQuOTMgMjFBMiAyIDAgMCAxIDIuOTMgMTlBMiAyIDAgMCAxIDQuOTMgMTdINi45M1YxOUEyIDIgMCAwIDEgNC45MyAyMS4wN00xOS4wNyAyLjkzQTIgMiAwIDAgMSAyMS4wNyA0LjkzQTIgMiAwIDAgMSAxOS4wNyA2LjkzSDE3LjA3VjQuOTNBMiAyIDAgMCAxIDE5LjA3IDIuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25OZXV0cmFsID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVBMS41LDEuNSAwIDAsMSA4LjUsOEExLjUsMS41IDAgMCwxIDEwLDkuNUExLjUsMS41IDAgMCwxIDguNSwxMUExLjUsMS41IDAgMCwxIDcsOS41TTE2LDE2SDhWMTRIMTZWMTZNMTUuNSwxMUExLjUsMS41IDAgMCwxIDE0LDkuNUExLjUsMS41IDAgMCwxIDE1LjUsOEExLjUsMS41IDAgMCwxIDE3LDkuNUExLjUsMS41IDAgMCwxIDE1LjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25OZXV0cmFsT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNOC41LDExQTEuNSwxLjUgMCAwLDEgNyw5LjVBMS41LDEuNSAwIDAsMSA4LjUsOEExLjUsMS41IDAgMCwxIDEwLDkuNUExLjUsMS41IDAgMCwxIDguNSwxMU0xNyw5LjVBMS41LDEuNSAwIDAsMSAxNS41LDExQTEuNSwxLjUgMCAwLDEgMTQsOS41QTEuNSwxLjUgMCAwLDEgMTUuNSw4QTEuNSwxLjUgMCAwLDEgMTcsOS41TTE2LDE0VjE2SDhWMTRIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25PdXRsaW5lID0gXCJNMTIsMTcuNUMxNC4zMywxNy41IDE2LjMsMTYuMDQgMTcuMTEsMTRINi44OUM3LjY5LDE2LjA0IDkuNjcsMTcuNSAxMiwxNy41TTguNSwxMUExLjUsMS41IDAgMCwwIDEwLDkuNUExLjUsMS41IDAgMCwwIDguNSw4QTEuNSwxLjUgMCAwLDAgNyw5LjVBMS41LDEuNSAwIDAsMCA4LjUsMTFNMTUuNSwxMUExLjUsMS41IDAgMCwwIDE3LDkuNUExLjUsMS41IDAgMCwwIDE1LjUsOEExLjUsMS41IDAgMCwwIDE0LDkuNUExLjUsMS41IDAgMCwwIDE1LjUsMTFNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMiwyQzYuNDcsMiAyLDYuNSAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25Qb29wID0gXCJNMTEuMzYsMkMxMS4xNSwyIDEwLjg3LDIuMTIgMTAuNTcsMi4zMkMxMCwyLjcgOC44NSwzLjkgOC40LDUuMUM4LjA2LDYgOC4wNSw2LjgyIDguMTksNy40M0M3LjYzLDcuNTMgNy4yMiw3LjcxIDcuMDYsNy43OEM2LjU1LDggNS40Nyw4Ljk2IDUuMzcsMTAuNDVDNS4zNCwxMC45NyA1LjQxLDExLjUgNS41NywxMkM0LjkxLDEyLjE5IDQuNTMsMTIuNDMgNC41LDEyLjQ0QzQuMTgsMTIuNTYgMy42NSwxMi45MyAzLjUsMTMuMTNDMy4xNSwxMy41MyAyLjkyLDE0IDIuNzksMTQuNUMyLjUsMTUuNTkgMi42LDE2LjgzIDMuMTMsMTcuODNDMy40MiwxOC4zOSAzLjgyLDE5IDQuMjYsMTkuNDNDNS43LDIwLjkxIDguMTgsMjEuNDcgMTAuMTQsMjEuNzlDMTIuNTMsMjIuMTkgMTUuMDMsMjIuMDUgMTcuMjYsMjEuMTNDMjAuNjEsMTkuNzQgMjEuNSwxNy41IDIxLjY0LDE2Ljg5QzIxLjkzLDE1LjUgMjEuNTcsMTQuMTkgMjEuNDIsMTMuODdDMjEuMiwxMy40MSAyMC44NCwxMi45NCAyMC4yNSwxMi42NEMxOS44NSwxMi4zOSAxOS41LDEyLjI2IDE5LjI0LDEyLjJDMTkuNSwxMS4yNSAxOS4xMywxMC41IDE4LjYyLDkuOTRDMTcuODUsOS4xMiAxNy4wNiw5IDE3LjA2LDlWOUMxNy4zMiw4LjUgMTcuNDIsNy45IDE3LjI4LDcuMzJDMTcuMTIsNi42MSAxNi43Myw2LjE2IDE2LjIyLDUuODZDMTUuNyw1LjU1IDE1LjA2LDUuNCAxNC40LDUuMjhDMTQuMDgsNS4yMiAxMi43NSw1LjAzIDEyLjIsNC4yN0MxMS43NSwzLjY1IDExLjc0LDIuNTMgMTEuNjIsMi4yQzExLjU3LDIuMDcgMTEuNSwyIDExLjM2LDJNMTYsOS42MUMxNi4wNyw5LjYxIDE2LjEzLDkuNjIgMTYuMTksOS42MkMxNy42Miw5Ljc4IDE4LjY0LDExLjE2IDE4LjQ3LDEyLjY5QzE4LjMsMTQuMjIgMTcsMTUuMzQgMTUuNTcsMTUuMThWMTUuMThDMTQuMTQsMTUgMTMuMTIsMTMuNjUgMTMuMjksMTIuMTFDMTMuNDUsMTAuNjYgMTQuNjQsOS41NiAxNiw5LjYxTTguNjIsOS42MUM5Ljk1LDkuNjUgMTEuMDYsMTAuNzggMTEuMTYsMTIuMjFDMTEuMjgsMTMuNzUgMTAuMjEsMTUuMDggOC43OCwxNS4xOUg4Ljc3QzcuMzQsMTUuMyA2LjA4LDE0LjE0IDUuOTYsMTIuNlYxMi42QzUuODUsMTEuMDYgNi45Miw5LjczIDguMzUsOS42MlY5LjYyQzguNDQsOS42MSA4LjUzLDkuNjEgOC42Miw5LjYxTTguNjQsMTEuMzFDOC42LDExLjMxIDguNTcsMTEuMzEgOC41MywxMS4zMkM3Ljk3LDExLjM5IDcuNTcsMTEuOSA3LjY0LDEyLjQ1QzcuNywxMyA4LjIxLDEzLjM5IDguNzcsMTMuMzJDOS4zMywxMy4yNSA5LjczLDEyLjc0IDkuNjcsMTIuMTlDOS42MSwxMS42NyA5LjE1LDExLjMgOC42NCwxMS4zMU0xNS45NCwxMS4zM0MxNS40MiwxMS4zNSAxNSwxMS43NSAxNC45NiwxMi4yOEMxNC45MiwxMi44MyAxNS4zNSwxMy4zMSAxNS45MSwxMy4zNEMxNi41LDEzLjM4IDE2Ljk2LDEyLjk1IDE3LDEyLjRDMTcuMDQsMTEuODQgMTYuNjEsMTEuMzYgMTYuMDUsMTEuMzNDMTYsMTEuMzMgMTYsMTEuMzMgMTUuOTQsMTEuMzNNOC43MSwxNi4xNUM5LDE2LjE0IDkuMjYsMTYuMjMgOS41LDE2LjI4QzEwLjY4LDE2LjUgMTEuNywxNi41MyAxMi4xOSwxNi41M0MxMi42OCwxNi41MyAxMy42OSwxNi41IDE0Ljg2LDE2LjI4QzE1LjI3LDE2LjIgMTUuNzQsMTYuMDMgMTYuMTEsMTYuMjhDMTYuNTksMTYuNiAxNi4yNCwxNy43NSAxNS41LDE4LjUzQzE1LjA0LDE5IDEzLjk3LDE5LjkxIDEyLjE5LDE5LjkxQzEwLjQxLDE5LjkxIDkuMzMsMTkgOC44OCwxOC41M0M4LjE0LDE3Ljc1IDcuNzksMTYuNiA4LjI2LDE2LjI4QzguNCwxNi4xOSA4LjU1LDE2LjE1IDguNzEsMTYuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25Qb29wT3V0bGluZSA9IFwiTTIxLjQyLDEzLjg3QzIxLjIsMTMuNDEgMjAuODQsMTIuOTQgMjAuMjUsMTIuNjRDMTkuODUsMTIuMzkgMTkuNSwxMi4yNiAxOS4yNCwxMi4yQzE5LjUsMTEuMjUgMTkuMTMsMTAuNSAxOC42Miw5Ljk0QzE3Ljg1LDkuMTIgMTcuMDYsOSAxNy4wNiw5QzE3LjMyLDguNSAxNy40Miw3LjkgMTcuMjgsNy4zMkMxNy4xMiw2LjYxIDE2LjczLDYuMTYgMTYuMjIsNS44NkMxNS43LDUuNTUgMTUuMDYsNS40IDE0LjQsNS4yOEMxNC4wOCw1LjIyIDEyLjc1LDUuMDMgMTIuMiw0LjI3QzExLjc1LDMuNjUgMTEuNzQsMi41MyAxMS42MiwyLjJDMTEuNTcsMi4wNyAxMS41LDIgMTEuMzYsMkMxMS4xNSwyIDEwLjg3LDIuMTIgMTAuNTcsMi4zMkMxMCwyLjcgOC44NSwzLjkgOC40LDUuMUM4LjA2LDYgOC4wNSw2LjgyIDguMTksNy40M0M3LjYzLDcuNTMgNy4yMiw3LjcxIDcuMDYsNy43OEM2LjU1LDggNS40Nyw4Ljk2IDUuMzcsMTAuNDVDNS4zNCwxMC44OSA1LjQxLDExLjM0IDUuNSwxMS43OEM1LjUsMTEuODYgNS41LDExLjk0IDUuNSwxMi4wM0M0Ljg4LDEyLjIyIDQuNTMsMTIuNDMgNC41LDEyLjQ0QzQuMTgsMTIuNTYgMy42NSwxMi45MyAzLjUsMTMuMTNDMy4xNSwxMy41MyAyLjkyLDE0IDIuNzksMTQuNUMyLjUsMTUuNTkgMi42LDE2LjgzIDMuMTMsMTcuODNDMy40MiwxOC4zOSAzLjgyLDE5IDQuMjYsMTkuNDNDNS43LDIwLjkxIDguMTgsMjEuNDcgMTAuMTQsMjEuNzlDMTAuOTYsMjEuOTMgMTEuOCwyMiAxMi42MywyMkMxNC4yMiwyMiAxNS44LDIxLjczIDE3LjI2LDIxLjEzQzIwLjYxLDE5Ljc0IDIxLjUsMTcuNSAyMS42NCwxNi44OUMyMS45MywxNS41IDIxLjU3LDE0LjE5IDIxLjQyLDEzLjg3TTE2LjA1LDExLjMzQzE2LjYxLDExLjM2IDE3LjA0LDExLjg0IDE3LDEyLjRDMTYuOTYsMTIuOTUgMTYuNSwxMy4zOCAxNS45MSwxMy4zNEMxNS4zNSwxMy4zMSAxNC45MiwxMi44MyAxNC45NiwxMi4yOEMxNSwxMS43NSAxNS40MiwxMS4zNSAxNS45NCwxMS4zM0MxNiwxMS4zMyAxNiwxMS4zMyAxNi4wNSwxMS4zM00yMC4xOCwxNi41NUMyMC4xNywxNi41NyAxOS43LDE4LjUgMTYuNjksMTkuNzRDMTUuNDcsMjAuMjUgMTQuMSwyMC41IDEyLjYzLDIwLjVDMTEuOSwyMC41IDExLjE0LDIwLjQ0IDEwLjM4LDIwLjMxQzguNzYsMjAuMDUgNi41LDE5LjU2IDUuMzEsMTguMzZDNS4wNCwxOC4wOSA0LjcyLDE3LjYzIDQuNDYsMTcuMTNDNC4xMiwxNi41IDQuMDQsMTUuNjUgNC4yNCwxNC44OEM0LjMyLDE0LjU4IDQuNDUsMTQuMzIgNC42MywxNC4xMkw0LjY1LDE0LjA5QzQuNzQsMTQgNC45NSwxMy44OCA1LjAzLDEzLjg0VjEzLjg0TDUuMTQsMTMuOEw1LjI2LDEzLjc0QzUuMzIsMTMuNyA1LjQ2LDEzLjYzIDUuNjcsMTMuNTVDNi4xMywxNC44MSA3LjI4LDE1LjcgOC41OSwxNS43QzguNjcsMTUuNyA4Ljc0LDE1LjY5IDguODIsMTUuNjlDOS42NSwxNS42MyAxMC40MSwxNS4yMiAxMC45NCwxNC41NUMxMS40NywxMy44OSAxMS43MywxMy4wNCAxMS42NiwxMi4xN0MxMS41NCwxMC41IDEwLjIyLDkuMTYgOC42NCw5LjExSDguNjJDOC41LDkuMTEgOC40LDkuMTEgOC4zMSw5LjEyQzgsOS4xNSA3LjczLDkuMjMgNy40Niw5LjM0QzcuNTUsOS4yNCA3LjYzLDkuMTcgNy42Niw5LjE1QzcuNzksOS4xIDguMDcsOSA4LjQ1LDguOTFMMTAsOC42M0w5LjY1LDcuMDlDOS42MSw2LjkgOS41Myw2LjM1IDkuODEsNS42M0M5Ljk2LDUuMiAxMC4yNyw0Ljc2IDEwLjU4LDQuMzhDMTAuNjgsNC42NSAxMC44MSw0LjkxIDExLDUuMTVDMTEuNzcsNi4yMyAxMy4xMiw2LjU4IDE0LjA2LDYuNzRMMTQuMTMsNi43NkMxNC42LDYuODQgMTUuMTMsNi45NSAxNS40Niw3LjE1QzE1LjY3LDcuMjggMTUuNzYsNy40MSAxNS44Miw3LjY3QzE1Ljg3LDcuODcgMTUuODQsOC4xIDE1LjczLDguMzFMMTUuMjEsOS4yQzEzLjk1LDkuNSAxMi45NSwxMC42NCAxMi43OSwxMi4wNkMxMi41OSwxMy44NyAxMy43OCwxNS40NiAxNS41LDE1LjY4QzE1LjYyLDE1LjY5IDE1Ljc0LDE1LjcgMTUuODUsMTUuN0MxNi41NiwxNS43IDE3LjI1LDE1LjQ0IDE3LjgyLDE0Ljk1QzE4LjIzLDE0LjU5IDE4LjU0LDE0LjEzIDE4Ljc0LDEzLjYyTDE4LjksMTMuNjZDMTksMTMuNjggMTkuMTcsMTMuNzQgMTkuNDUsMTMuOTFMMTkuNSwxMy45NUwxOS41NywxNEMxOS43OCwxNC4wOCAxOS45NCwxNC4yNiAyMC4wNSwxNC41QzIwLjEzLDE0LjY3IDIwLjM4LDE1LjYgMjAuMTgsMTYuNTVNNy42NCwxMi40NUM3LjU3LDExLjkgNy45NywxMS4zOSA4LjUzLDExLjMyQzguNTcsMTEuMzEgOC42LDExLjMxIDguNjQsMTEuMzFDOS4xNSwxMS4zIDkuNjEsMTEuNjcgOS42NywxMi4xOUM5LjczLDEyLjc0IDkuMzMsMTMuMjUgOC43NywxMy4zMkM4LjIxLDEzLjM5IDcuNywxMyA3LjY0LDEyLjQ1TTguNzEsMTYuMTVDOSwxNi4xNCA5LjI2LDE2LjIzIDkuNSwxNi4yOEMxMC42OCwxNi41IDExLjcsMTYuNTMgMTIuMTksMTYuNTNDMTIuNjgsMTYuNTMgMTMuNjksMTYuNSAxNC44NiwxNi4yOEMxNS4yNywxNi4yIDE1Ljc0LDE2LjAzIDE2LjExLDE2LjI4QzE2LjU5LDE2LjYgMTYuMjQsMTcuNzUgMTUuNSwxOC41M0MxNS4wNCwxOSAxMy45NywxOS45MSAxMi4xOSwxOS45MUMxMC40MSwxOS45MSA5LjMzLDE5IDguODgsMTguNTNDOC4xNCwxNy43NSA3Ljc5LDE2LjYgOC4yNiwxNi4yOEM4LjQsMTYuMTkgOC41NSwxNi4xNSA4LjcxLDE2LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uU2FkID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVDNyw4LjcgNy43LDggOC41LDhDOS4zLDggMTAsOC43IDEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNU0xNC43NywxNy4yM0MxNC4zMiwxNi41IDEzLjI1LDE2IDEyLDE2QzEwLjc1LDE2IDkuNjgsMTYuNSA5LjIzLDE3LjIzTDcuODEsMTUuODFDOC43MSwxNC43MiAxMC4yNSwxNCAxMiwxNEMxMy43NSwxNCAxNS4yOSwxNC43MiAxNi4xOSwxNS44MUwxNC43NywxNy4yM00xNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVDMTQsOC43IDE0LjcsOCAxNS41LDhDMTYuMyw4IDE3LDguNyAxNyw5LjVDMTcsMTAuMyAxNi4zLDExIDE1LjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25TYWRPdXRsaW5lID0gXCJNMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMk0yMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJNMTUuNSw4QzE2LjMsOCAxNyw4LjcgMTcsOS41QzE3LDEwLjMgMTYuMywxMSAxNS41LDExQzE0LjcsMTEgMTQsMTAuMyAxNCw5LjVDMTQsOC43IDE0LjcsOCAxNS41LDhNMTAsOS41QzEwLDEwLjMgOS4zLDExIDguNSwxMUM3LjcsMTEgNywxMC4zIDcsOS41QzcsOC43IDcuNyw4IDguNSw4QzkuMyw4IDEwLDguNyAxMCw5LjVNMTIsMTRDMTMuNzUsMTQgMTUuMjksMTQuNzIgMTYuMTksMTUuODFMMTQuNzcsMTcuMjNDMTQuMzIsMTYuNSAxMy4yNSwxNiAxMiwxNkMxMC43NSwxNiA5LjY4LDE2LjUgOS4yMywxNy4yM0w3LjgxLDE1LjgxQzguNzEsMTQuNzIgMTAuMjUsMTQgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25TaWNrID0gXCJNMjEgOUMxOS45IDkgMTkgOC4xIDE5IDdTMjEgMyAyMSAzIDIzIDUuOSAyMyA3IDIyLjEgOSAyMSA5TTE3LjUgN0MxNy41IDYuMjcgMTcuOTEgNS4yOSAxOC40MiA0LjM0QzE2LjY4IDIuODggMTQuNDQgMiAxMiAyQzYuNDcgMiAyIDYuNSAyIDEyUzYuNDcgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDExLjQ1IDIxLjk0IDEwLjkxIDIxLjg2IDEwLjM4QzIxLjU4IDEwLjQ1IDIxLjMgMTAuNSAyMSAxMC41QzE5LjA3IDEwLjUgMTcuNSA4LjkzIDE3LjUgN00xNS42MiA3LjM4TDE2LjY4IDguNDRMMTUuNjIgOS41TDE2LjY4IDEwLjU2TDE1LjYyIDExLjYyTDEzLjUgOS41TDE1LjYyIDcuMzhNNy4zMiA4LjQ0TDguMzggNy4zOEwxMC41IDkuNUw4LjM4IDExLjYyTDcuMzIgMTAuNTZMOC4zOCA5LjVMNy4zMiA4LjQ0TTE1LjQ0IDE3QzE0Ljc1IDE1LjgxIDEzLjQ3IDE1IDEyIDE1UzkuMjUgMTUuODEgOC41NiAxN0g2Ljg4QzcuMTggMTYuMjQgNy42NCAxNS41NyA4LjIyIDE1TDUuMjQgMTMuM0M0Ljc5IDEzLjU2IDQuMjMgMTMuNTggMy43NSAxMy4zQzMuMDMgMTIuODkgMi43OSAxMS45NyAzLjIgMTEuMjVTNC41MyAxMC4yOSA1LjI1IDEwLjdDNS43MyAxMSA2IDExLjUgNiAxMkw5LjU3IDE0LjA2QzEwLjMgMTMuNyAxMS4xMiAxMy41IDEyIDEzLjVDMTQuMzMgMTMuNSAxNi4zMiAxNC45NSAxNy4xMiAxN0gxNS40NFpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvblNpY2tPdXRsaW5lID0gXCJNNy4zMiAxMC41Nkw4LjM4IDkuNUw3LjMyIDguNDRMOC4zOCA3LjM4TDEwLjUgOS41TDguMzggMTEuNjJMNy4zMiAxMC41Nk00LjUgOUM0LjUzIDkgNC41NSA5IDQuNTggOUM1Ljc3IDYuMDcgOC42NCA0IDEyIDRDMTQuMTkgNCAxNi4xNiA0Ljg4IDE3LjYxIDYuM0MxNy43NiA1LjcgMTguMDYgNSAxOC40MiA0LjM0QzE2LjY4IDIuODggMTQuNDQgMiAxMiAyQzcuMTEgMiAzLjA1IDUuNSAyLjE4IDEwLjE0QzIuNzQgOS40NCAzLjU5IDkgNC41IDlNMjEgMTAuNUMyMC41OCAxMC41IDIwLjE4IDEwLjQxIDE5LjgxIDEwLjI4QzE5LjkzIDEwLjgzIDIwIDExLjQxIDIwIDEyQzIwIDE2LjQyIDE2LjQyIDIwIDEyIDIwQzguNjQgMjAgNS43NyAxNy45MyA0LjU4IDE1QzQuNTUgMTUgNC41MyAxNSA0LjUgMTVDNCAxNSAzLjQ2IDE0Ljg2IDMgMTQuNkMyLjY4IDE0LjQyIDIuNDEgMTQuMTggMi4xOCAxMy45QzMuMDcgMTguNSA3LjExIDIyIDEyIDIyQzE3LjUgMjIgMjIgMTcuNSAyMiAxMkMyMiAxMS40NSAyMS45NCAxMC45MSAyMS44NiAxMC4zOEMyMS41OCAxMC40NSAyMS4zIDEwLjUgMjEgMTAuNU0yMSAzQzIxIDMgMTkgNS45IDE5IDdTMTkuOSA5IDIxIDkgMjMgOC4xIDIzIDcgMjEgMyAyMSAzTTE1LjYyIDcuMzhMMTMuNSA5LjVMMTUuNjIgMTEuNjJMMTYuNjggMTAuNTZMMTUuNjIgOS41TDE2LjY4IDguNDRMMTUuNjIgNy4zOE04LjU2IDE3QzkuMjUgMTUuODEgMTAuNTMgMTUgMTIgMTVTMTQuNzUgMTUuODEgMTUuNDQgMTdIMTcuMTJDMTYuMzIgMTQuOTUgMTQuMzMgMTMuNSAxMiAxMy41QzExLjEzIDEzLjUgMTAuMyAxMy43IDkuNTcgMTQuMDdMNiAxMkM2IDExLjUgNS43MyAxMSA1LjI1IDEwLjcxQzQuNTMgMTAuMyAzLjYyIDEwLjU0IDMuMiAxMS4yNkMyLjc5IDEyIDMuMDMgMTIuODkgMy43NSAxMy4zMUM0LjIzIDEzLjU5IDQuOCAxMy41NiA1LjI0IDEzLjMxTDguMjEgMTUuMDNDNy42NCAxNS41NiA3LjE4IDE2LjI0IDYuODggMTdIOC41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlFbW90aWNvblRvbmd1ZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTcuMjcsMTFDNy4xLDEwLjcxIDcsMTAuMzYgNywxMEM3LDguODkgNy44OSw4IDksOEEyLDIgMCAwLDEgMTEsMTBDMTEsMTAuMzYgMTAuOSwxMC43MSAxMC43MywxMUMxMC4zOSwxMC40IDkuNzQsMTAgOSwxMEM4LjI2LDEwIDcuNjEsMTAuNCA3LjI3LDExTTE2LDE1SDE1QzE1LDE3IDE0LjEsMTggMTMsMThDMTEuOSwxOCAxMSwxNyAxMSwxNUg4VjEzSDE2VjE1TTE2LjczLDExQzE2LjM5LDEwLjQgMTUuNzQsMTAgMTUsMTBDMTQuMjYsMTAgMTMuNjEsMTAuNCAxMy4yNywxMUMxMy4xLDEwLjcxIDEzLDEwLjM2IDEzLDEwQzEzLDguODkgMTMuODksOCAxNSw4QTIsMiAwIDAsMSAxNywxMEMxNywxMC4zNiAxNi45LDEwLjcxIDE2LjczLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uVG9uZ3VlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNOSwxMEM4LjI2LDEwIDcuNjEsMTAuNCA3LjI3LDExQzcuMSwxMC43MSA3LDEwLjM2IDcsMTBBMiwyIDAgMCwxIDksOEMxMC4xMSw4IDExLDguOSAxMSwxMEMxMSwxMC4zNiAxMC45LDEwLjcxIDEwLjczLDExQzEwLjM5LDEwLjQgOS43NCwxMCA5LDEwTTE3LDEwQzE3LDEwLjM2IDE2LjksMTAuNzEgMTYuNzMsMTFDMTYuMzksMTAuNCAxNS43NCwxMCAxNSwxMEMxNC4yNiwxMCAxMy42MSwxMC40IDEzLjI3LDExQzEzLjEsMTAuNzEgMTMsMTAuMzYgMTMsMTBBMiwyIDAgMCwxIDE1LDhDMTYuMTEsOCAxNyw4LjkgMTcsMTBNMTYsMTNWMTVIMTVDMTUsMTcgMTQuMSwxOCAxMywxOEMxMS45LDE4IDExLDE3IDExLDE1SDhWMTNIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW1vdGljb25XaW5rID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNyw5LjVDNyw4LjcgNy43LDggOC41LDhDOS4zLDggMTAsOC43IDEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNU0xMiwxNy4yM0MxMC4yNSwxNy4yMyA4LjcxLDE2LjUgNy44MSwxNS40Mkw5LjIzLDE0QzkuNjgsMTQuNzIgMTAuNzUsMTUuMjMgMTIsMTUuMjNDMTMuMjUsMTUuMjMgMTQuMzIsMTQuNzIgMTQuNzcsMTRMMTYuMTksMTUuNDJDMTUuMjksMTYuNSAxMy43NSwxNy4yMyAxMiwxNy4yM00xNywxMEgxM1Y5SDE3VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVtb3RpY29uV2lua091dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEwLDkuNUMxMCwxMC4zIDkuMywxMSA4LjUsMTFDNy43LDExIDcsMTAuMyA3LDkuNUM3LDguNyA3LjcsOCA4LjUsOEM5LjMsOCAxMCw4LjcgMTAsOS41TTEyLDE3LjIzQzEwLjI1LDE3LjIzIDguNzEsMTYuNSA3LjgxLDE1LjQyTDkuMjMsMTRDOS42OCwxNC43MiAxMC43NSwxNS4yMyAxMiwxNS4yM0MxMy4yNSwxNS4yMyAxNC4zMiwxNC43MiAxNC43NywxNEwxNi4xOSwxNS40MkMxNS4yOSwxNi41IDEzLjc1LDE3LjIzIDEyLDE3LjIzTTE3LDEwSDEzVjlIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW5naW5lID0gXCJNNyw0VjZIMTBWOEg3TDUsMTBWMTNIM1YxMEgxVjE4SDNWMTVINVYxOEg4TDEwLDIwSDE4VjE2SDIwVjE5SDIzVjlIMjBWMTJIMThWOEgxMlY2SDE1VjRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFbmdpbmVPZmYgPSBcIk0zLjc4LDIuNUwyMS41LDIwLjIyTDIwLjIzLDIxLjVMMTgsMTkuMjdWMjBIMTBMOCwxOEg1VjE1SDNWMThIMVYxMEgzVjEzSDVWMTBMNi44Nyw4LjE0TDIuNSwzLjc3TDMuNzgsMi41TTIwLDlWMTJIMThWOEgxMlY2SDE1VjRINy44MkwyMi44MiwxOUgyM1Y5SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUVuZ2luZU9mZk91dGxpbmUgPSBcIk0yLjUsMy43N0w2Ljg3LDguMTRMNSwxMFYxM0gzVjEwSDFWMThIM1YxNUg1VjE4SDhMMTAsMjBIMThWMTkuMjdMMjEuMjMsMjIuNUwyMi41LDIxLjIyTDMuNzgsMi41TDIuNSwzLjc3TTE2LDE4SDExTDksMTZIN1YxMUw4LDEwSDguNzNMMTYsMTcuMjdWMThNMjMsOVYxOUgyMi44MkwxNiwxMi4xOFYxMEgxMy44Mkw3LjgyLDRIMTVWNkgxMlY4SDE4VjEySDIwVjlIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRW5naW5lT3V0bGluZSA9IFwiTTgsMTBIMTZWMThIMTFMOSwxNkg3VjExTTcsNFY2SDEwVjhIN0w1LDEwVjEzSDNWMTBIMVYxOEgzVjE1SDVWMThIOEwxMCwyMEgxOFYxNkgyMFYxOUgyM1Y5SDIwVjEySDE4VjhIMTJWNkgxNVY0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXBzaWxvbiA9IFwiTTE1LjA1IDcuNzhMMTYuMTUgNi4xOEMxNi4xNSA2LjE4IDE0LjkxIDUgMTIuNzcgNUMxMC4wNCA1IDguMzUgNi44NCA4LjM1IDguNzZDOC4zNSAxMC42OCAxMC4wOCAxMS42OSAxMC4wOCAxMS42OUMxMC4wOCAxMS42OSA4IDEyLjM4IDggMTVDOCAxNy42MyAxMC4xNCAxOSAxMi40NCAxOUMxNS4zOCAxOSAxNyAxNy4wNCAxNyAxNy4wNEwxNS42IDE1LjVDMTUuNiAxNS41IDE0LjE0IDE2Ljg3IDEyLjU5IDE2Ljg3QzEwLjY2IDE2Ljg3IDEwLjIxIDE1LjY5IDEwLjIxIDE0LjkyQzEwLjIxIDEzLjg3IDEwLjU0IDEyLjY1IDEzLjgzIDEyLjY1TDEzLjgyIDEwLjc3QzEzLjgyIDEwLjc3IDEwLjQ0IDExLjExIDEwLjQ0IDguNzhDMTAuNDQgNy4yMSAxMS45IDYuOTIgMTIuNjQgNi45MkMxNC4yOCA2LjkyIDE1LjA1IDcuNzggMTUuMDUgNy43OFwiO1xyXG5leHBvcnQgdmFyIG1kaUVxdWFsID0gXCJNMTksMTBINVY4SDE5VjEwTTE5LDE2SDVWMTRIMTlWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXF1YWxCb3ggPSBcIk0xNywxNlYxNEg3VjE2SDE3TTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDE5TTE3LDEwVjhIN1YxMEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFcXVhbGl6ZXIgPSBcIk0xMCwyMEgxNFY0SDEwVjIwTTQsMjBIOFYxMkg0VjIwTTE2LDlWMjBIMjBWOUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFcXVhbGl6ZXJPdXRsaW5lID0gXCJNMTUsMjFIOVYzSDE1VjIxTTExLDE5SDEzVjVIMTFWMTlNOCwyMUgyVjExSDhWMjFNNCwxOUg2VjEzSDRWMTlNMjIsMjFIMTZWOEgyMlYyMU0xOCwxOUgyMFYxMEgxOFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlFcmFzZXIgPSBcIk0xNi4yNCwzLjU2TDIxLjE5LDguNUMyMS45Nyw5LjI5IDIxLjk3LDEwLjU1IDIxLjE5LDExLjM0TDEyLDIwLjUzQzEwLjQ0LDIyLjA5IDcuOTEsMjIuMDkgNi4zNCwyMC41M0wyLjgxLDE3QzIuMDMsMTYuMjEgMi4wMywxNC45NSAyLjgxLDE0LjE2TDEzLjQxLDMuNTZDMTQuMiwyLjc4IDE1LjQ2LDIuNzggMTYuMjQsMy41Nk00LjIyLDE1LjU4TDcuNzYsMTkuMTFDOC41NCwxOS45IDkuOCwxOS45IDEwLjU5LDE5LjExTDE0LjEyLDE1LjU4TDkuMTcsMTAuNjNMNC4yMiwxNS41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlFcmFzZXJWYXJpYW50ID0gXCJNMTUuMTQsM0MxNC42MywzIDE0LjEyLDMuMiAxMy43MywzLjU5TDIuNTksMTQuNzNDMS44MSwxNS41IDEuODEsMTYuNzcgMi41OSwxNy41Nkw1LjAzLDIwSDEyLjY5TDIxLjQxLDExLjI3QzIyLjIsMTAuNSAyMi4yLDkuMjMgMjEuNDEsOC40NEwxNi41NiwzLjU5QzE2LjE3LDMuMiAxNS42NSwzIDE1LjE0LDNNMTcsMThMMTUsMjBIMjJWMThcIjtcclxuZXhwb3J0IHZhciBtZGlFc2NhbGF0b3IgPSBcIk0yMCw4SDE4Ljk1TDYuOTUsMjBINEEyLDIgMCAwLDEgMiwxOEEyLDIgMCAwLDEgNCwxNkg1LjI5TDcsMTQuMjlWMTBBMSwxIDAgMCwxIDgsOUg5QTEsMSAwIDAsMSAxMCwxMFYxMS4yOUwxNy4yOSw0SDIwQTIsMiAwIDAsMSAyMiw2QTIsMiAwIDAsMSAyMCw4TTguNSw1QTEuNSwxLjUgMCAwLDEgMTAsNi41QTEuNSwxLjUgMCAwLDEgOC41LDhBMS41LDEuNSAwIDAsMSA3LDYuNUExLjUsMS41IDAgMCwxIDguNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUVzY2FsYXRvckJveCA9IFwiTTUgM0MzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjExIDMuODkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuODkgMjAuMTEgMyAxOSAzSDVNMTQuMzQgNkgxNy4wNUMxOC4xNiA2IDE5LjA1IDYuOSAxOS4wNSA4QzE5LjA1IDkuMTEgMTguMTYgMTAgMTcuMDUgMTBIMTZMMTAgMThINy4wNUM1Ljk1IDE4IDUuMDUgMTcuMTEgNS4wNSAxNkM1LjA1IDE0LjkgNS45NSAxNCA3LjA1IDE0SDguMzRMMTQuMzQgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlFc2NhbGF0b3JEb3duID0gXCJNMjAgOEgxOC45NUw2Ljk1IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOEMyIDE2LjkgMi45IDE2IDQgMTZINS4yOUw3IDE0LjI5VjEwQzcgOS40NSA3LjQ1IDkgOCA5SDlDOS41NSA5IDEwIDkuNDUgMTAgMTBWMTEuMjlMMTcuMjkgNEgyMEMyMS4xMSA0IDIyIDQuODkgMjIgNkMyMiA3LjExIDIxLjExIDggMjAgOE04LjUgNUM5LjMzIDUgMTAgNS42NyAxMCA2LjVDMTAgNy4zMyA5LjMzIDggOC41IDhDNy42NyA4IDcgNy4zMyA3IDYuNUM3IDUuNjcgNy42NyA1IDguNSA1TTE0LjgzIDE3LjM0TDIwLjM0IDExLjgzTDIyLjE3IDEzLjY2TDE2LjY2IDE5LjE3TDE4LjUgMjFIMTNWMTUuNUwxNC44MyAxNy4zNFpcIjtcclxuZXhwb3J0IHZhciBtZGlFc2NhbGF0b3JVcCA9IFwiTTIwIDhIMTguOTVMNi45NSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThDMiAxNi45IDIuOSAxNiA0IDE2SDUuMjlMNyAxNC4yOVYxMEM3IDkuNDUgNy40NSA5IDggOUg5QzkuNTUgOSAxMCA5LjQ1IDEwIDEwVjExLjI5TDE3LjI5IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZDMjIgNy4xMSAyMS4xMSA4IDIwIDhNOC41IDVDOS4zMyA1IDEwIDUuNjcgMTAgNi41QzEwIDcuMzMgOS4zMyA4IDguNSA4QzcuNjcgOCA3IDcuMzMgNyA2LjVDNyA1LjY3IDcuNjcgNSA4LjUgNU0yMC4xNyAxNS42NkwxNC42NiAyMS4xN0wxMi44MyAxOS4zNEwxOC4zNCAxMy44M0wxNi41IDEySDIyVjE3LjVMMjAuMTcgMTUuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXNsaW50ID0gXCJNNy45NSw5LjU1TDExLjg0LDcuM0MxMS45NCw3LjI1IDEyLjA2LDcuMjUgMTIuMTYsNy4zTDE2LjA1LDkuNTVDMTYuMTUsOS42MSAxNi4yMSw5LjcxIDE2LjIxLDkuODJWMTQuMzJDMTYuMjEsMTQuNDMgMTYuMTUsMTQuNTMgMTYuMDUsMTQuNTlMMTIuMTYsMTYuODRDMTIuMDYsMTYuODkgMTEuOTQsMTYuODkgMTEuODQsMTYuODRMNy45NSwxNC41OUM3Ljg1LDE0LjUzIDcuNzksMTQuNDMgNy43OSwxNC4zMlY5LjgyQzcuNzksOS43MSA3Ljg1LDkuNjEgNy45NSw5LjU1TTIyLjEyLDExLjZDMjIuMjksMTEuODkgMjIuMjksMTIuMjMgMjIuMTIsMTIuNTNMMTcuNDcsMjAuNTZDMTcuMywyMC44NiAxNywyMSAxNi42NSwyMUg3LjM1QzcsMjEgNi43LDIwLjg1IDYuNTMsMjAuNTZMMS44OCwxMi41M0MxLjcxLDEyLjI0IDEuNzEsMTEuODcgMS44OCwxMS41OEw2LjUzLDMuNUM2LjcsMy4yMiA3LDMgNy4zNSwzSDE2LjY1QzE3LDMgMTcuMywzLjIyIDE3LjQ3LDMuNUwyMi4xMiwxMS42TTE4LjI3LDE1LjVWOC42NUMxOC4yNyw4LjUzIDE4LjIsOC40MiAxOC4wOSw4LjM2TDEyLjE2LDQuOTVDMTIuMDYsNC44OSAxMS45Myw0Ljg5IDExLjgzLDQuOTVMNS45MSw4LjM2QzUuOCw4LjQyIDUuNzMsOC41MyA1LjczLDguNjVWMTUuNUM1LjczLDE1LjYxIDUuOCwxNS43MiA1LjkxLDE1Ljc4TDExLjg0LDE5LjE5QzExLjk0LDE5LjI1IDEyLjA3LDE5LjI1IDEyLjE3LDE5LjE5TDE4LjA5LDE1Ljc4QzE4LjIsMTUuNzIgMTguMjcsMTUuNjEgMTguMjcsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFdCA9IFwiTTIzLDguNzhMMjEuNzEsNy4yMkMyMS40NSw3LjQyIDIwLjUzLDggMTkuNzcsOEMxOS4yNiw4IDE4LjMsNy43NSAxNy40NSw3LjUzQzE2LjM5LDcuMjYgMTUuMzksNyAxNC42LDdDMTQsNyAxMy40Myw3LjE1IDEyLjkzLDcuMzVDMTIuNjIsNS40NSAxMSw0IDksNEM0LjU4LDQgMiw3LjU4IDIsMTJDMiwxNi40MiA1LjU4LDE5IDEwLDE5QzEyLjA2LDE5IDEzLjkzLDE4LjQzIDE1LjM0LDE3LjM5TDE1LDIxLjI5TDE3LDIxLjQ3TDE4LDkuNzRDMTguNjYsOS44OSAxOS4yNywxMCAxOS43NywxMEMyMS4zOCwxMCAyMi44NCw4LjkxIDIzLDguNzhNOSw2QTIsMiAwIDAsMSAxMSw4QTIsMiAwIDAsMSA5LDEwSDQuMjNDNC44LDcuNjcgNi4zOSw2IDksNk0xMCwxN0M2LjY5LDE3IDQsMTUuMzEgNCwxMkg5QzEwLjYsMTIgMTEuODMsMTEuMTcgMTIuNSw5LjkxVjkuOTFDMTIuNzYsOS43MSAxMy44NSw5IDE0LjYsOUMxNC45NCw5IDE1LjUsOS4xMSAxNi4wNSw5LjI1TDE1LjY1LDEzLjg5QzE0LjgyLDE1Ljk1IDEyLjYsMTcgMTAsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXRoZXJldW0gPSBcIk0xMiwxLjc1TDUuNzUsMTIuMjVMMTIsMTZMMTguMjUsMTIuMjVMMTIsMS43NU01Ljc1LDEzLjVMMTIsMjIuMjVMMTguMjUsMTMuNUwxMiwxNy4yNUw1Ljc1LDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXRoZXJuZXQgPSBcIk03LDE1SDlWMThIMTFWMTVIMTNWMThIMTVWMTVIMTdWMThIMTlWOUgxNVY2SDlWOUg1VjE4SDdWMTVNNC4zOCwzSDE5LjYzQzIwLjk0LDMgMjIsNC4wNiAyMiw1LjM4VjE5LjYzQTIuMzcsMi4zNyAwIDAsMSAxOS42MywyMkg0LjM4QzMuMDYsMjIgMiwyMC45NCAyLDE5LjYzVjUuMzhDMiw0LjA2IDMuMDYsMyA0LjM4LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXRoZXJuZXRDYWJsZSA9IFwiTTExLDNWN0gxM1YzSDExTTgsNFYxMUgxNlY0SDE0VjhIMTBWNEg4TTEwLDEyVjIySDE0VjEySDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV0aGVybmV0Q2FibGVPZmYgPSBcIk0xMSwzSDEzVjdIMTFWM004LDRIMTBWOEgxNFY0SDE2VjExSDEyLjgyTDgsNi4xOFY0TTIwLDIwLjcyTDE4LjczLDIyTDE0LDE3LjI3VjIySDEwVjEzLjI3TDIsNS4yN0wzLjI4LDRMMjAsMjAuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZQbHVnQ2NzMSA9IFwiTTE2IDE1SDE1LjU5QzE3LjYzIDEzLjc4IDE5IDExLjU1IDE5IDlDMTkgNS40NyAxNi4zOSAyLjU3IDEzIDIuMDhWLjk0OUgxMVYyLjA4QzcuNjEgMi41NyA1IDUuNDcgNSA5QzUgMTEuNTUgNi4zNyAxMy43OCA4LjQxIDE1SDhDNS43OSAxNSA0IDE2Ljc5IDQgMTlTNS43OSAyMyA4IDIzSDE2QzE4LjIxIDIzIDIwIDIxLjIxIDIwIDE5UzE4LjIxIDE1IDE2IDE1TTE3LjUgMTFDMTcuNSAxMS44MyAxNi44MyAxMi41IDE2IDEyLjVTMTQuNSAxMS44MyAxNC41IDExIDE1LjE3IDkuNSAxNiA5LjUgMTcuNSAxMC4xNyAxNy41IDExTTE1IDVDMTYuMTEgNSAxNyA1LjkgMTcgN1MxNi4xMSA5IDE1IDkgMTMgOC4xMSAxMyA3IDEzLjkgNSAxNSA1TTkgNUMxMC4xMSA1IDExIDUuOSAxMSA3UzEwLjExIDkgOSA5IDcgOC4xMSA3IDcgNy45IDUgOSA1TTggMTIuNUM3LjE3IDEyLjUgNi41IDExLjgzIDYuNSAxMVM3LjE3IDkuNSA4IDkuNSA5LjUgMTAuMTcgOS41IDExIDguODMgMTIuNSA4IDEyLjVNOSAyMS44MlYyMUg3VjIxLjgyQzUuODQgMjEuNCA1IDIwLjMgNSAxOUM1IDE3LjM0IDYuMzQgMTYgOCAxNlMxMSAxNy4zNCAxMSAxOUMxMSAyMC4zIDEwLjE2IDIxLjQgOSAyMS44Mk0xMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBTMTQgMTAuOSAxNCAxMiAxMy4xMSAxNCAxMiAxNCAxMCAxMy4xMSAxMCAxMk0xNyAyMS44MlYyMUgxNVYyMS44MkMxMy44NCAyMS40IDEzIDIwLjMgMTMgMTlDMTMgMTcuMzQgMTQuMzQgMTYgMTYgMTZTMTkgMTcuMzQgMTkgMTlDMTkgMjAuMyAxOC4xNiAyMS40IDE3IDIxLjgyTTE0LjUgN0MxNC41IDYuNzIgMTQuNzIgNi41IDE1IDYuNVMxNS41IDYuNzIgMTUuNSA3IDE1LjI4IDcuNSAxNSA3LjUgMTQuNSA3LjI4IDE0LjUgN004LjUgN0M4LjUgNi43MiA4LjcyIDYuNSA5IDYuNVM5LjUgNi43MiA5LjUgNyA5LjI4IDcuNSA5IDcuNSA4LjUgNy4yOCA4LjUgN005IDE5QzkgMTkuNTUgOC41NSAyMCA4IDIwUzcgMTkuNTUgNyAxOSA3LjQ1IDE4IDggMTggOSAxOC40NSA5IDE5TTE3IDE5QzE3IDE5LjU1IDE2LjU1IDIwIDE2IDIwUzE1IDE5LjU1IDE1IDE5IDE1LjQ1IDE4IDE2IDE4IDE3IDE4LjQ1IDE3IDE5TTEyLjUgMTJDMTIuNSAxMi4yOCAxMi4yOCAxMi41IDEyIDEyLjVTMTEuNSAxMi4yOCAxMS41IDEyIDExLjcyIDExLjUgMTIgMTEuNSAxMi41IDExLjcyIDEyLjUgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZQbHVnQ2NzMiA9IFwiTTE0IDQuNUMxNCA0LjIyIDE0LjIyIDQgMTQuNSA0UzE1IDQuMjIgMTUgNC41IDE0Ljc4IDUgMTQuNSA1IDE0IDQuNzggMTQgNC41TTIwIDE5QzIwIDIxLjIxIDE4LjIxIDIzIDE2IDIzSDhDNS43OSAyMyA0IDIxLjIxIDQgMTlDNCAxNi43OSA1Ljc5IDE1IDggMTVIOC4xM0M1LjY3IDEzLjY0IDQgMTEgNCA4QzQgNS42MSA1LjA2IDMuNDcgNi43MiAySDE3LjI4QzE4Ljk0IDMuNDcgMjAgNS42MSAyMCA4QzIwIDExIDE4LjMzIDEzLjY0IDE1Ljg3IDE1SDE2QzE4LjIxIDE1IDIwIDE2Ljc5IDIwIDE5TTE2LjUgMTJDMTYuNSAxMC45IDE1LjYxIDEwIDE0LjUgMTBTMTIuNSAxMC45IDEyLjUgMTJDMTIuNSAxMy4xMSAxMy40IDE0IDE0LjUgMTRTMTYuNSAxMy4xMSAxNi41IDEyTTE3IDZDMTUuOSA2IDE1IDYuOSAxNSA4QzE1IDkuMTEgMTUuOSAxMCAxNyAxMFMxOSA5LjExIDE5IDhDMTkgNi45IDE4LjExIDYgMTcgNk0xMyA0LjVDMTMgNS4zMyAxMy42NyA2IDE0LjUgNlMxNiA1LjMzIDE2IDQuNSAxNS4zMyAzIDE0LjUgMyAxMyAzLjY3IDEzIDQuNU0xMiA2QzEwLjkgNiAxMCA2LjkgMTAgOEMxMCA5LjExIDEwLjkgMTAgMTIgMTBTMTQgOS4xMSAxNCA4QzE0IDYuOSAxMy4xMSA2IDEyIDZNOCA0LjVDOCA1LjMzIDguNjcgNiA5LjUgNlMxMSA1LjMzIDExIDQuNSAxMC4zMyAzIDkuNSAzIDggMy42NyA4IDQuNU03IDEwQzguMTEgMTAgOSA5LjExIDkgOEM5IDYuOSA4LjExIDYgNyA2UzUgNi45IDUgOEM1IDkuMTEgNS45IDEwIDcgMTBNOS41IDE0QzEwLjYxIDE0IDExLjUgMTMuMTEgMTEuNSAxMkMxMS41IDEwLjkgMTAuNjEgMTAgOS41IDEwUzcuNSAxMC45IDcuNSAxMkM3LjUgMTMuMTEgOC40IDE0IDkuNSAxNE0xMSAxOUMxMSAxNy4zNCA5LjY2IDE2IDggMTZTNSAxNy4zNCA1IDE5IDYuMzQgMjIgOCAyMiAxMSAyMC42NiAxMSAxOU0xOSAxOUMxOSAxNy4zNCAxNy42NiAxNiAxNiAxNlMxMyAxNy4zNCAxMyAxOSAxNC4zNCAyMiAxNiAyMiAxOSAyMC42NiAxOSAxOU0xNyA4LjVDMTcuMjggOC41IDE3LjUgOC4yOCAxNy41IDhTMTcuMjggNy41IDE3IDcuNSAxNi41IDcuNzIgMTYuNSA4IDE2LjcyIDguNSAxNyA4LjVNMTQuNSAxMS41QzE0LjIyIDExLjUgMTQgMTEuNzIgMTQgMTJTMTQuMjIgMTIuNSAxNC41IDEyLjUgMTUgMTIuMjggMTUgMTIgMTQuNzggMTEuNSAxNC41IDExLjVNMTYgMThDMTUuNDUgMTggMTUgMTguNDUgMTUgMTlDMTUgMTkuNTUgMTUuNDUgMjAgMTYgMjBTMTcgMTkuNTUgMTcgMTlDMTcgMTguNDUgMTYuNTUgMTggMTYgMThNMTIgOC41QzEyLjI4IDguNSAxMi41IDguMjggMTIuNSA4UzEyLjI4IDcuNSAxMiA3LjUgMTEuNSA3LjcyIDExLjUgOCAxMS43MiA4LjUgMTIgOC41TTggMThDNy40NSAxOCA3IDE4LjQ1IDcgMTlDNyAxOS41NSA3LjQ1IDIwIDggMjBTOSAxOS41NSA5IDE5QzkgMTguNDUgOC41NSAxOCA4IDE4TTcgNy41QzYuNzIgNy41IDYuNSA3LjcyIDYuNSA4UzYuNzIgOC41IDcgOC41IDcuNSA4LjI4IDcuNSA4IDcuMjggNy41IDcgNy41TTkuNSA1QzkuNzggNSAxMCA0Ljc4IDEwIDQuNVM5Ljc4IDQgOS41IDQgOSA0LjIyIDkgNC41IDkuMjIgNSA5LjUgNU0xMCAxMkMxMCAxMS43MiA5Ljc4IDExLjUgOS41IDExLjVTOSAxMS43MiA5IDEyIDkuMjIgMTIuNSA5LjUgMTIuNSAxMCAxMi4yOCAxMCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdDaGFkZW1vID0gXCJNOCAxMC41QzguODMgMTAuNSA5LjUgMTEuMTcgOS41IDEyUzguODMgMTMuNSA4IDEzLjUgNi41IDEyLjgzIDYuNSAxMiA3LjE3IDEwLjUgOCAxMC41TTggOUM2LjM0IDkgNSAxMC4zNCA1IDEyUzYuMzQgMTUgOCAxNSAxMSAxMy42NiAxMSAxMiA5LjY2IDkgOCA5TTE2IDEwLjVDMTYuODMgMTAuNSAxNy41IDExLjE3IDE3LjUgMTJTMTYuODMgMTMuNSAxNiAxMy41QzE1LjE3IDEzLjUgMTQuNSAxMi44MyAxNC41IDEyUzE1LjE3IDEwLjUgMTYgMTAuNU0xNiA5QzE0LjM0IDkgMTMgMTAuMzQgMTMgMTJTMTQuMzQgMTUgMTYgMTUgMTkgMTMuNjYgMTkgMTIgMTcuNjYgOSAxNiA5TTE0LjEyIDguNDFMMTIuNzEgN0wxNC4xMiA1LjU5TDEzLjQxIDQuODhMMTIgNi4yOUwxMC41OSA0Ljg4TDkuODggNS41OUwxMS4yOSA3TDkuODggOC40MUwxMC41OSA5LjEyTDEyIDcuNzFMMTMuNDEgOS4xMkwxNC4xMiA4LjQxTTE0LjEyIDE4LjQxTDEyLjcxIDE3TDE0LjEyIDE1LjU5TDEzLjQxIDE0Ljg4TDEyIDE2LjI5TDEwLjU5IDE0Ljg4TDkuODggMTUuNTlMMTEuMjkgMTdMOS44OCAxOC40MUwxMC41OSAxOS4xMkwxMiAxNy43MUwxMy40MSAxOS4xMkwxNC4xMiAxOC40MU0xOS43NCA1LjY3TDIwLjUgNC45M0wxOS4wNyAzLjVMMTguMzMgNC4yNkMxNi42IDIuODUgMTQuNCAyIDEyIDJTNy40IDIuODUgNS42NyA0LjI2TDQuOTMgMy41TDMuNSA0LjkzTDQuMjYgNS42N0MyLjg1IDcuNCAyIDkuNiAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJTMjIgMTcuNSAyMiAxMkMyMiA5LjYgMjEuMTUgNy40IDE5Ljc0IDUuNjdNMTIgMjBDNy41OSAyMCA0IDE2LjQxIDQgMTJTNy41OSA0IDEyIDQgMjAgNy41OSAyMCAxMiAxNi40MSAyMCAxMiAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdUZXNsYSA9IFwiTTYgOUM2IDguNDUgNi40NSA4IDcgOFM4IDguNDUgOCA5IDcuNTUgMTAgNyAxMCA2IDkuNTUgNiA5TTE3IDEwQzE3LjU1IDEwIDE4IDkuNTUgMTggOVMxNy41NSA4IDE3IDggMTYgOC40NSAxNiA5IDE2LjQ1IDEwIDE3IDEwTTIyIDkuOTNWMTFDMjIgMTUuOTcgMTcuOTcgMjAgMTMgMjBIMTFDNi4wMyAyMCAyIDE2IDIgMTFWOS45M0MyIDYuNjUgNC42NSA0IDcuOTMgNEgxNi4wN0MxOS4zNSA0IDIyIDYuNjUgMjIgOS45M00xNC41IDlDMTQuNSAxMC4zOCAxNS42MiAxMS41IDE3IDExLjVTMTkuNSAxMC4zOCAxOS41IDkgMTguMzggNi41IDE3IDYuNSAxNC41IDcuNjIgMTQuNSA5TTQuNSA5QzQuNSAxMC4zOCA1LjYyIDExLjUgNyAxMS41UzkuNSAxMC4zOCA5LjUgOSA4LjM4IDYuNSA3IDYuNSA0LjUgNy42MiA0LjUgOU05IDE3QzkgMTYuNDUgOC41NSAxNiA4IDE2UzcgMTYuNDUgNyAxNyA3LjQ1IDE4IDggMTggOSAxNy41NSA5IDE3TTEzLjUgMTdDMTMuNSAxNi4xNyAxMi44MyAxNS41IDEyIDE1LjVTMTAuNSAxNi4xNyAxMC41IDE3IDExLjE3IDE4LjUgMTIgMTguNSAxMy41IDE3LjgzIDEzLjUgMTdNMTcgMTdDMTcgMTYuNDUgMTYuNTUgMTYgMTYgMTZTMTUgMTYuNDUgMTUgMTcgMTUuNDUgMTggMTYgMTggMTcgMTcuNTUgMTcgMTdNMTkuOTcgMTEuNjZDMTkuMjMgMTIuNSAxOC4xOCAxMyAxNyAxM0MxNC43OSAxMyAxMyAxMS4yMSAxMyA5QzEzIDcuOCAxMy41NCA2LjczIDE0LjM4IDZIOS42MkMxMC40NiA2LjczIDExIDcuOCAxMSA5QzExIDExLjIxIDkuMjEgMTMgNyAxM0M1LjgyIDEzIDQuNzYgMTIuNSA0LjAzIDExLjY2QzQuMTkgMTMuMzIgNC45MyAxNC44MiA2LjA0IDE1Ljk0QzcuNzEgMTQuNzMgOS43NiAxNCAxMiAxNEMxNC4yNCAxNCAxNi4yOSAxNC43MyAxNy45NiAxNS45NEMxOS4wNyAxNC44MiAxOS44MSAxMy4zMiAxOS45NyAxMS42NlpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdUeXBlMSA9IFwiTTEyLjUgMTVDMTIuNSAxNS4yOCAxMi4yOCAxNS41IDEyIDE1LjVTMTEuNSAxNS4yOCAxMS41IDE1IDExLjcyIDE0LjUgMTIgMTQuNSAxMi41IDE0LjcyIDEyLjUgMTVNMTUgMTAuNUMxNS4yOCAxMC41IDE1LjUgMTAuMjggMTUuNSAxMFMxNS4yOCA5LjUgMTUgOS41IDE0LjUgOS43MiAxNC41IDEwIDE0LjcyIDEwLjUgMTUgMTAuNU05IDEwLjVDOS4yOCAxMC41IDkuNSAxMC4yOCA5LjUgMTBTOS4yOCA5LjUgOSA5LjUgOC41IDkuNzIgOC41IDEwIDguNzIgMTAuNSA5IDEwLjVNMTMgMTguOTJWMjBIMTFWMTguOTJDNy42MSAxOC40MyA1IDE1LjUzIDUgMTJTNy42MSA1LjU3IDExIDUuMDhWNEgxM1Y1LjA4QzE2LjM5IDUuNTcgMTkgOC41IDE5IDEyUzE2LjM5IDE4LjQzIDEzIDE4LjkyTTEzIDEwQzEzIDExLjExIDEzLjkgMTIgMTUgMTJTMTcgMTEuMTEgMTcgMTAgMTYuMTEgOCAxNSA4IDEzIDguOSAxMyAxME03IDEwQzcgMTEuMTEgNy45IDEyIDkgMTJTMTEgMTEuMTEgMTEgMTAgMTAuMTEgOCA5IDggNyA4LjkgNyAxME05LjUgMTRDOS41IDEzLjE3IDguODMgMTIuNSA4IDEyLjVTNi41IDEzLjE3IDYuNSAxNCA3LjE3IDE1LjUgOCAxNS41IDkuNSAxNC44MyA5LjUgMTRNMTQgMTVDMTQgMTMuOSAxMy4xMSAxMyAxMiAxM1MxMCAxMy45IDEwIDE1IDEwLjkgMTcgMTIgMTcgMTQgMTYuMTEgMTQgMTVNMTYgMTUuNUMxNi44MyAxNS41IDE3LjUgMTQuODMgMTcuNSAxNFMxNi44MyAxMi41IDE2IDEyLjUgMTQuNSAxMy4xNyAxNC41IDE0IDE1LjE3IDE1LjUgMTYgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFdlBsdWdUeXBlMiA9IFwiTTcuNSAxMUM3LjUgMTEuMjggNy4yOCAxMS41IDcgMTEuNVM2LjUgMTEuMjggNi41IDExIDYuNzIgMTAuNSA3IDEwLjUgNy41IDEwLjcyIDcuNSAxMU05LjUgMTQuNUM5LjIyIDE0LjUgOSAxNC43MiA5IDE1UzkuMjIgMTUuNSA5LjUgMTUuNSAxMCAxNS4yOCAxMCAxNSA5Ljc4IDE0LjUgOS41IDE0LjVNOS41IDhDOS43OCA4IDEwIDcuNzggMTAgNy41UzkuNzggNyA5LjUgNyA5IDcuMjIgOSA3LjUgOS4yMiA4IDkuNSA4TTE0LjUgOEMxNC43OCA4IDE1IDcuNzggMTUgNy41UzE0Ljc4IDcgMTQuNSA3IDE0IDcuMjIgMTQgNy41IDE0LjIyIDggMTQuNSA4TTEyIDEwLjVDMTEuNzIgMTAuNSAxMS41IDEwLjcyIDExLjUgMTFTMTEuNzIgMTEuNSAxMiAxMS41IDEyLjUgMTEuMjggMTIuNSAxMSAxMi4yOCAxMC41IDEyIDEwLjVNMjAgMTFDMjAgMTUuNDIgMTYuNDIgMTkgMTIgMTlTNCAxNS40MiA0IDExQzQgOC42MSA1LjA2IDYuNDcgNi43MiA1SDE3LjI4QzE4Ljk0IDYuNDcgMjAgOC42MSAyMCAxMU0xMyA3LjVDMTMgOC4zMyAxMy42NyA5IDE0LjUgOVMxNiA4LjMzIDE2IDcuNSAxNS4zMyA2IDE0LjUgNiAxMyA2LjY3IDEzIDcuNU04IDcuNUM4IDguMzMgOC42NyA5IDkuNSA5UzExIDguMzMgMTEgNy41IDEwLjMzIDYgOS41IDYgOCA2LjY3IDggNy41TTcgMTNDOC4xMSAxMyA5IDEyLjExIDkgMTFDOSA5LjkgOC4xMSA5IDcgOVM1IDkuOSA1IDExQzUgMTIuMTEgNS45IDEzIDcgMTNNMTEuNSAxNUMxMS41IDEzLjkgMTAuNjEgMTMgOS41IDEzUzcuNSAxMy45IDcuNSAxNUM3LjUgMTYuMTEgOC40IDE3IDkuNSAxN1MxMS41IDE2LjExIDExLjUgMTVNMTIgMTNDMTMuMTEgMTMgMTQgMTIuMTEgMTQgMTFDMTQgOS45IDEzLjExIDkgMTIgOVMxMCA5LjkgMTAgMTFDMTAgMTIuMTEgMTAuOSAxMyAxMiAxM00xNi41IDE1QzE2LjUgMTMuOSAxNS42MSAxMyAxNC41IDEzUzEyLjUgMTMuOSAxMi41IDE1QzEyLjUgMTYuMTEgMTMuNCAxNyAxNC41IDE3UzE2LjUgMTYuMTEgMTYuNSAxNU0xOSAxMUMxOSA5LjkgMTguMTEgOSAxNyA5UzE1IDkuOSAxNSAxMUMxNSAxMi4xMSAxNS45IDEzIDE3IDEzUzE5IDEyLjExIDE5IDExTTE3IDEwLjVDMTYuNzIgMTAuNSAxNi41IDEwLjcyIDE2LjUgMTFTMTYuNzIgMTEuNSAxNyAxMS41IDE3LjUgMTEuMjggMTcuNSAxMSAxNy4yOCAxMC41IDE3IDEwLjVNMTQuNSAxNC41QzE0LjIyIDE0LjUgMTQgMTQuNzIgMTQgMTVTMTQuMjIgMTUuNSAxNC41IDE1LjUgMTUgMTUuMjggMTUgMTUgMTQuNzggMTQuNSAxNC41IDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZTdGF0aW9uID0gXCJNMTkuNzcsNy4yM0wxOS43OCw3LjIyTDE2LjA2LDMuNUwxNSw0LjU2TDE3LjExLDYuNjdDMTYuMTcsNy4wMyAxNS41LDcuOTMgMTUuNSw5QTIuNSwyLjUgMCAwLDAgMTgsMTEuNUMxOC4zNiwxMS41IDE4LjY5LDExLjQyIDE5LDExLjI5VjE4LjVBMSwxIDAgMCwxIDE4LDE5LjVBMSwxIDAgMCwxIDE3LDE4LjVWMTRBMiwyIDAgMCwwIDE1LDEySDE0VjVBMiwyIDAgMCwwIDEyLDNINkEyLDIgMCAwLDAgNCw1VjIxSDE0VjEzLjVIMTUuNVYxOC41QTIuNSwyLjUgMCAwLDAgMTgsMjFBMi41LDIuNSAwIDAsMCAyMC41LDE4LjVWOUMyMC41LDguMzEgMjAuMjIsNy42OCAxOS43Nyw3LjIzTTE4LDEwQTEsMSAwIDAsMSAxNyw5QTEsMSAwIDAsMSAxOCw4QTEsMSAwIDAsMSAxOSw5QTEsMSAwIDAsMSAxOCwxME04LDE4VjEzLjVINkwxMCw2VjExSDEyTDgsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXZlcm5vdGUgPSBcIk0xNS4wOSwxMS42M0MxNS4wOSwxMS42MyAxNS4yOCwxMC4zNSAxNiwxMC4zNUMxNi43NiwxMC4zNSAxNy43OCwxMi4wNiAxNy43OCwxMi4wNkMxNy43OCwxMi4wNiAxNS40NiwxMS42MyAxNS4wOSwxMS42M00xOSw0LjY5QzE4LjY0LDQuMDkgMTYuODMsMy40MSAxNS44OSwzLjQxQzE0Ljk2LDMuNDEgMTMuNSwzLjQxIDEzLjUsMy40MUMxMy41LDMuNDEgMTIuNywyIDEwLjg4LDJDOS4wNSwyIDkuMTcsMi44MSA5LjE3LDMuNVY2LjMyTDguMzQsNy4xOUg0LjVDNC41LDcuMTkgMy40NCw3LjkxIDMuNDQsOS40NEMzLjQ0LDExIDMuOTIsMTYuMzUgNy4xMywxNi44NUMxMC45MywxNy40MyAxMS41OCwxNS42NyAxMS41OCwxNS40NkMxMS41OCwxNC41NiAxMS42LDEzLjIxIDExLjYsMTMuMjFDMTEuNiwxMy4yMSAxMi43MSwxNS4zMyAxNC4zOSwxNS4zM0MxNi4wNywxNS4zMyAxNy4wNCwxNi4zIDE3LjA0LDE3LjI5QzE3LjA0LDE4LjI4IDE3LjA0LDE5LjEzIDE3LjA0LDE5LjEzQzE3LjA0LDE5LjEzIDE3LDIwLjI4IDE2LDIwLjI4QzE1LDIwLjI4IDEzLjg5LDIwLjI4IDEzLjg5LDIwLjI4QzEzLjg5LDIwLjI4IDEzLjIsMTkuNzQgMTMuMiwxOUMxMy4yLDE4LjI1IDEzLjUzLDE4LjA1IDEzLjkzLDE4LjA1QzE0LjMyLDE4LjA1IDE0LjY1LDE4LjA5IDE0LjY1LDE4LjA5VjE2LjUzQzE0LjY1LDE2LjUzIDExLjQ3LDE2LjUgMTEuNDcsMTguOTRDMTEuNDcsMjEuMzcgMTMuMTMsMjIgMTQuNDYsMjJDMTUuOCwyMiAxNi42MywyMiAxNi42MywyMkMxNi42MywyMiAyMC41NiwyMS41IDIwLjU2LDEzLjc1QzIwLjU2LDYgMTkuMzMsNS4yOCAxOSw0LjY5TTcuNSw2LjMxSDQuMjZMOC4zMiwyLjIyVjUuNUw3LjUsNi4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlFeGNhdmF0b3IgPSBcIk0xOC41IDE4LjVDMTkuMDQgMTguNSAxOS41IDE4Ljk2IDE5LjUgMTkuNVMxOS4wNCAyMC41IDE4LjUgMjAuNUg2LjVDNS45NiAyMC41IDUuNSAyMC4wNCA1LjUgMTkuNVM1Ljk2IDE4LjUgNi41IDE4LjVIMTguNU0xOC41IDE3SDYuNUM1LjEzIDE3IDQgMTguMTMgNCAxOS41UzUuMTMgMjIgNi41IDIySDE4LjVDMTkuODggMjIgMjEgMjAuODggMjEgMTkuNVMxOS44OCAxNyAxOC41IDE3TTIxIDExSDE4VjdIMTNMMTAgMTFWMTZIMjJMMjEgMTFNMTEuNTQgMTFMMTMuNSA4LjVIMTZWMTFIMTEuNTRNOS43NiAzLjQxTDQuNzYgMkwyIDExLjgzQzEuNjYgMTMuMTEgMi40MSAxNC40NCAzLjcgMTQuOEw0Ljg2IDE1LjEyTDguMTUgMTIuMjlMNC4yNyAxMS4yMUw2LjE1IDQuNDZMOC45NCA1LjI0QzkuNSA1LjUzIDEwLjcxIDYuMzQgMTEuNDcgNy4zN0wxMi41IDZIMTIuOTRDMTEuNjggNC40MSA5Ljg1IDMuNDYgOS43NiAzLjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4Y2xhbWF0aW9uID0gXCJNIDExLDRMIDEzLDRMIDEzLDE1TCAxMSwxNUwgMTEsNCBaIE0gMTMsMThMIDEzLDIwTCAxMSwyMEwgMTEsMThMIDEzLDE4IFpcIjtcclxuZXhwb3J0IHZhciBtZGlFeGNsYW1hdGlvblRoaWNrID0gXCJNMTAgM0gxNFYxNEgxMFYzTTEwIDIxVjE3SDE0VjIxSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4aXRSdW4gPSBcIk0xMy4zNCw4LjE3QzEyLjQxLDguMTcgMTEuNjUsNy40IDExLjY1LDYuNDdBMS42OSwxLjY5IDAgMCwxIDEzLjM0LDQuNzhDMTQuMjgsNC43OCAxNS4wNCw1LjU0IDE1LjA0LDYuNDdDMTUuMDQsNy40IDE0LjI4LDguMTcgMTMuMzQsOC4xN00xMC4zLDE5LjkzTDQuMzcsMTguNzVMNC43MSwxNy4wNUw4Ljg2LDE3LjlMMTAuMjEsMTEuMDRMOC42OSwxMS42NFYxNC41SDdWMTAuNTRMMTEuNCw4LjY3TDEyLjA3LDguNTlDMTIuNjcsOC41OSAxMy4xNyw4LjkzIDEzLjUsOS40NEwxNC4zNiwxMC43OUMxNS4wNCwxMiAxNi4zOSwxMi44MiAxOCwxMi44MlYxNC41QzE2LjE0LDE0LjUgMTQuNDQsMTMuNjcgMTMuMzQsMTIuNEwxMi44NCwxNC45NEwxNC42MSwxNi42M1YyM0gxMi45MlYxNy45TDExLjE0LDE2LjIxTDEwLjMsMTkuOTNNMjEsMjNIMTlWM0g2VjE2LjExTDQsMTUuNjlWMUgyMVYyM002LDIzSDRWMTkuNzhMNiwyMC4yVjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4aXRUb0FwcCA9IFwiTTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVY5SDVWNUgxOVYxOUg1VjE1SDNWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMC4wOCwxNS41OEwxMS41LDE3TDE2LjUsMTJMMTEuNSw3TDEwLjA4LDguNDFMMTIuNjcsMTFIM1YxM0gxMi42N0wxMC4wOCwxNS41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlFeHBhbmRBbGwgPSBcIk0xOCw4SDhWMThINlY4QTIsMiAwIDAsMSA4LDZIMThWOE0xNCwySDRBMiwyIDAgMCwwIDIsNFYxNEg0VjRIMTRWMk0yMiwxMlYyMEEyLDIgMCAwLDEgMjAsMjJIMTJBMiwyIDAgMCwxIDEwLDIwVjEyQTIsMiAwIDAsMSAxMiwxMEgyMEEyLDIgMCAwLDEgMjIsMTJNMjAsMTVIMTdWMTJIMTVWMTVIMTJWMTdIMTVWMjBIMTdWMTdIMjBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwYW5kQWxsT3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjE0SDRWNEgxNFYySDRNOCw2QTIsMiAwIDAsMCA2LDhWMThIOFY4SDE4VjZIOE0yMCwxMlYyMEgxMlYxMkgyME0yMCwxMEgxMkEyLDIgMCAwLDAgMTAsMTJWMjBBMiwyIDAgMCwwIDEyLDIySDIwQTIsMiAwIDAsMCAyMiwyMFYxMkEyLDIgMCAwLDAgMjAsMTBNMTksMTdIMTdWMTlIMTVWMTdIMTNWMTVIMTVWMTNIMTdWMTVIMTlWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwYW5zaW9uQ2FyZCA9IFwiTTIsN1Y4LjVIM1YxN0g0LjVWN0MzLjcsNyAyLjgsNyAyLDdNNiw3VjdMNiwxNkg3VjE3SDE0VjE2SDIyVjdINk0xNy41LDlBMi41LDIuNSAwIDAsMSAyMCwxMS41QTIuNSwyLjUgMCAwLDEgMTcuNSwxNEEyLjUsMi41IDAgMCwxIDE1LDExLjVBMi41LDIuNSAwIDAsMSAxNy41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwYW5zaW9uQ2FyZFZhcmlhbnQgPSBcIk0yIDdINC41VjE3SDNWOC41SDJNMjIgN1YxNkgxNFYxN0g3VjE2SDZWN00xMCA5SDhWMTJIMTBNMTMgOUgxMVYxMkgxM00yMCA5SDE1VjE0SDIwVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwb25lbnQgPSBcIk0xNS4zOCwzTDE3Ljc3LDguNzVDMTcuNTUsOS42OCAxNy4yNywxMC4zMiAxNywxMC43QzE2LjY3LDExLjE4IDE2LjQ0LDExLjI1IDE2LjE5LDExLjI1VjEyLjc1QzE2Ljk0LDEyLjc1IDE3Ljc0LDEyLjM1IDE4LjI0LDExLjU2QzE5Ljg3LDguOTQgMjIsMyAyMiwzSDIwLjM4TDE4LjY5LDcuMDVMMTcsM0gxNS4zOE0zLjQyLDguNTlMMiwxMEw2Ljc5LDE0Ljc5TDIsMTkuNTlMMy40MSwyMUw4LjIxLDE2LjIxTDEzLDIxTDE0LjQxLDE5LjU5TDkuNjIsMTQuNzlMMTQuNDEsMTBMMTMsOC41OUw4LjIxLDEzLjM4TDMuNDEsOC41OUgzLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4cG9uZW50Qm94ID0gXCJNNSwzQzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVNMTMuNzYsNkgxNS4zOUwxNi41LDguNkwxNy41OSw2SDE5LjI0QzE5LjI0LDYgMTcuNSwxMC41NyAxNi40NiwxMi4zMkMxNi4wOCwxMi44OSAxNS4zNSwxMy4yNyAxNC41LDEzLjI1VjExLjc1QzE0Ljk2LDExLjc2IDE1LjI1LDExLjUgMTUuNSwxMS4xM0MxNS42MSwxMSAxNS42OCwxMC44IDE1Ljc0LDEwLjY0TDEzLjc2LDZNNi40MSw5LjU5TDkuMjEsMTIuMzhMMTIsOS41OUwxMy40MSwxMUwxMC42MiwxMy43OUwxMy40MSwxNi41OUwxMiwxOEw5LjIxLDE1LjIxTDYuNDEsMThMNSwxNi41OUw3Ljc5LDEzLjc5TDUsMTFMNi40MSw5LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV4cG9ydCA9IFwiTTIzLDEyTDE5LDhWMTFIMTBWMTNIMTlWMTZNMSwxOFY2QzEsNC44OSAxLjksNCAzLDRIMTVBMiwyIDAgMCwxIDE3LDZWOUgxNVY2SDNWMThIMTVWMTVIMTdWMThBMiwyIDAgMCwxIDE1LDIwSDNBMiwyIDAgMCwxIDEsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXhwb3J0VmFyaWFudCA9IFwiTTEyLDFMOCw1SDExVjE0SDEzVjVIMTZNMTgsMjNINkM0Ljg5LDIzIDQsMjIuMSA0LDIxVjlBMiwyIDAgMCwxIDYsN0g5VjlINlYyMUgxOFY5SDE1VjdIMThBMiwyIDAgMCwxIDIwLDlWMjFBMiwyIDAgMCwxIDE4LDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZSA9IFwiTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgMTcsMTJBNSw1IDAgMCwxIDEyLDE3TTEyLDQuNUM3LDQuNSAyLjczLDcuNjEgMSwxMkMyLjczLDE2LjM5IDcsMTkuNSAxMiwxOS41QzE3LDE5LjUgMjEuMjcsMTYuMzkgMjMsMTJDMjEuMjcsNy42MSAxNyw0LjUgMTIsNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZUNoZWNrID0gXCJNMjMuNSwxN0wxOC41LDIyTDE1LDE4LjVMMTYuNSwxN0wxOC41LDE5TDIyLDE1LjVMMjMuNSwxN00xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNMTIsMTdDMTIuNSwxNyAxMi45NywxNi45MyAxMy40MiwxNi43OUMxMy4xNSwxNy41IDEzLDE4LjIyIDEzLDE5VjE5LjQ1TDEyLDE5LjVDNywxOS41IDIuNzMsMTYuMzkgMSwxMkMyLjczLDcuNjEgNyw0LjUgMTIsNC41QzE3LDQuNSAyMS4yNyw3LjYxIDIzLDEyQzIyLjc1LDEyLjY0IDIyLjQ0LDEzLjI2IDIyLjA4LDEzLjg1QzIxLjE4LDEzLjMxIDIwLjEyLDEzIDE5LDEzQzE4LjIyLDEzIDE3LjUsMTMuMTUgMTYuNzksMTMuNDJDMTYuOTMsMTIuOTcgMTcsMTIuNSAxNywxMkE1LDUgMCAwLDAgMTIsN0E1LDUgMCAwLDAgNywxMkE1LDUgMCAwLDAgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllQ2hlY2tPdXRsaW5lID0gXCJNMjMuNSwxN0wxOC41LDIyTDE1LDE4LjVMMTYuNSwxN0wxOC41LDE5TDIyLDE1LjVMMjMuNSwxN00xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNMTIsNC41QzE3LDQuNSAyMS4yNyw3LjYxIDIzLDEyQzIyLjc1LDEyLjY1IDIyLjQ0LDEzLjI2IDIyLjA4LDEzLjg1QzIxLjUsMTMuNSAyMC44NiwxMy4yNSAyMC4xOCwxMy4xMkwyMC44MiwxMkMxOS4xNyw4LjY0IDE1Ljc2LDYuNSAxMiw2LjVDOC4yNCw2LjUgNC44Myw4LjY0IDMuMTgsMTJDNC44MywxNS4zNiA4LjI0LDE3LjUgMTIsMTcuNUwxMy4yMSwxNy40M0MxMy4wNywxNy45MyAxMywxOC40NiAxMywxOVYxOS40NkwxMiwxOS41QzcsMTkuNSAyLjczLDE2LjM5IDEsMTJDMi43Myw3LjYxIDcsNC41IDEyLDQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVDaXJjbGUgPSBcIk0xMiw5LjVBMi41LDIuNSAwIDAsMCA5LjUsMTJBMi41LDIuNSAwIDAsMCAxMiwxNC41QTIuNSwyLjUgMCAwLDAgMTQuNSwxMkEyLjUsMi41IDAgMCwwIDEyLDkuNU0xMiwxM0ExLDEgMCAwLDEgMTEsMTJBMSwxIDAgMCwxIDEyLDExQTEsMSAwIDAsMSAxMywxMkExLDEgMCAwLDEgMTIsMTNNMTIsOS41QTIuNSwyLjUgMCAwLDAgOS41LDEyQTIuNSwyLjUgMCAwLDAgMTIsMTQuNUEyLjUsMi41IDAgMCwwIDE0LjUsMTJBMi41LDIuNSAwIDAsMCAxMiw5LjVNMTIsMTNBMSwxIDAgMCwxIDExLDEyQTEsMSAwIDAsMSAxMiwxMUExLDEgMCAwLDEgMTMsMTJBMSwxIDAgMCwxIDEyLDEzTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDE2QzkuMzcsMTYgNywxNC40MyA2LDEyQzcuMzgsOC42OSAxMS4xOSw3LjEyIDE0LjUsOC41QzE2LjA4LDkuMTYgMTcuMzQsMTAuNDIgMTgsMTJDMTcsMTQuNDMgMTQuNjMsMTYgMTIsMTZNMTIsOS41QTIuNSwyLjUgMCAwLDAgOS41LDEyQTIuNSwyLjUgMCAwLDAgMTIsMTQuNUEyLjUsMi41IDAgMCwwIDE0LjUsMTJBMi41LDIuNSAwIDAsMCAxMiw5LjVNMTIsMTNBMSwxIDAgMCwxIDExLDEyQTEsMSAwIDAsMSAxMiwxMUExLDEgMCAwLDEgMTMsMTJBMSwxIDAgMCwxIDEyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZUNpcmNsZU91dGxpbmUgPSBcIk0xMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJNMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyME0xMiwxMUExLDEgMCAwLDEgMTMsMTJBMSwxIDAgMCwxIDEyLDEzQTEsMSAwIDAsMSAxMSwxMkExLDEgMCAwLDEgMTIsMTFNMTIsOEMxNC42Myw4IDE3LDkuNTcgMTgsMTJDMTYuNjIsMTUuMzEgMTIuODEsMTYuODggOS41LDE1LjVDNy45MiwxNC44NCA2LjY2LDEzLjU4IDYsMTJDNyw5LjU3IDkuMzcsOCAxMiw4TTEyLDkuNUEyLjUsMi41IDAgMCwwIDkuNSwxMkEyLjUsMi41IDAgMCwwIDEyLDE0LjVBMi41LDIuNSAwIDAsMCAxNC41LDEyQTIuNSwyLjUgMCAwLDAgMTIsOS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllTWludXMgPSBcIk0xMiA0LjVBMTEuOCAxMS44IDAgMCAwIDEgMTJBMTEuOCAxMS44IDAgMCAwIDEyIDE5LjVIMTMuMUEzLjggMy44IDAgMCAxIDEzIDE4LjVBOS45IDkuOSAwIDAgMSAxMy4yIDE2LjhMMTIgMTdBNSA1IDAgMSAxIDE3IDEyQTIuOCAyLjggMCAwIDEgMTYuOSAxMi45QTUuMiA1LjIgMCAwIDEgMTkgMTIuNUE1LjYgNS42IDAgMCAxIDIyLjMgMTMuNUExMC4xIDEwLjEgMCAwIDAgMjMgMTJBMTEuOCAxMS44IDAgMCAwIDEyIDQuNU0xMiA5QTMgMyAwIDEgMCAxNSAxMkEyLjkgMi45IDAgMCAwIDEyIDlNMTUgMTcuNVYxOS41SDIzVjE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllTWludXNPdXRsaW5lID0gXCJNMTIgNC41QTExLjggMTEuOCAwIDAgMCAxIDEyQTExLjggMTEuOCAwIDAgMCAxMiAxOS41SDEzLjFBMy44IDMuOCAwIDAgMSAxMyAxOC41QTQuMSA0LjEgMCAwIDEgMTMuMSAxNy40SDEyQTkuNiA5LjYgMCAwIDEgMy4yIDEyQTkuNiA5LjYgMCAwIDEgMTIgNi41QTkuNiA5LjYgMCAwIDEgMjAuOCAxMkwyMC40IDEyLjdBNC42IDQuNiAwIDAgMSAyMi4zIDEzLjVBMTAuMSAxMC4xIDAgMCAwIDIzIDEyQTExLjggMTEuOCAwIDAgMCAxMiA0LjVNMTIgOUEzIDMgMCAxIDAgMTUgMTJBMi45IDIuOSAwIDAgMCAxMiA5TTE1IDE3LjVWMTkuNUgyM1YxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZU9mZiA9IFwiTTExLjgzLDlMMTUsMTIuMTZDMTUsMTIuMTEgMTUsMTIuMDUgMTUsMTJBMywzIDAgMCwwIDEyLDlDMTEuOTQsOSAxMS44OSw5IDExLjgzLDlNNy41Myw5LjhMOS4wOCwxMS4zNUM5LjAzLDExLjU2IDksMTEuNzcgOSwxMkEzLDMgMCAwLDAgMTIsMTVDMTIuMjIsMTUgMTIuNDQsMTQuOTcgMTIuNjUsMTQuOTJMMTQuMiwxNi40N0MxMy41MywxNi44IDEyLjc5LDE3IDEyLDE3QTUsNSAwIDAsMSA3LDEyQzcsMTEuMjEgNy4yLDEwLjQ3IDcuNTMsOS44TTIsNC4yN0w0LjI4LDYuNTVMNC43Myw3QzMuMDgsOC4zIDEuNzgsMTAgMSwxMkMyLjczLDE2LjM5IDcsMTkuNSAxMiwxOS41QzEzLjU1LDE5LjUgMTUuMDMsMTkuMiAxNi4zOCwxOC42NkwxNi44MSwxOS4wOEwxOS43MywyMkwyMSwyMC43M0wzLjI3LDNNMTIsN0E1LDUgMCAwLDEgMTcsMTJDMTcsMTIuNjQgMTYuODcsMTMuMjYgMTYuNjQsMTMuODJMMTkuNTcsMTYuNzVDMjEuMDcsMTUuNSAyMi4yNywxMy44NiAyMywxMkMyMS4yNyw3LjYxIDE3LDQuNSAxMiw0LjVDMTAuNiw0LjUgOS4yNiw0Ljc1IDgsNS4yTDEwLjE3LDcuMzVDMTAuNzQsNy4xMyAxMS4zNSw3IDEyLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllT2ZmT3V0bGluZSA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUuNjUsMTguOTJDMTQuNSwxOS4zIDEzLjI4LDE5LjUgMTIsMTkuNUM3LDE5LjUgMi43MywxNi4zOSAxLDEyQzEuNjksMTAuMjQgMi43OSw4LjY5IDQuMTksNy40NkwyLDUuMjdNMTIsOUEzLDMgMCAwLDEgMTUsMTJDMTUsMTIuMzUgMTQuOTQsMTIuNjkgMTQuODMsMTNMMTEsOS4xN0MxMS4zMSw5LjA2IDExLjY1LDkgMTIsOU0xMiw0LjVDMTcsNC41IDIxLjI3LDcuNjEgMjMsMTJDMjIuMTgsMTQuMDggMjAuNzksMTUuODggMTksMTcuMTlMMTcuNTgsMTUuNzZDMTguOTQsMTQuODIgMjAuMDYsMTMuNTQgMjAuODIsMTJDMTkuMTcsOC42NCAxNS43Niw2LjUgMTIsNi41QzEwLjkxLDYuNSA5Ljg0LDYuNjggOC44NCw3TDcuMyw1LjQ3QzguNzQsNC44NSAxMC4zMyw0LjUgMTIsNC41TTMuMTgsMTJDNC44MywxNS4zNiA4LjI0LDE3LjUgMTIsMTcuNUMxMi42OSwxNy41IDEzLjM3LDE3LjQzIDE0LDE3LjI5TDExLjcyLDE1QzEwLjI5LDE0Ljg1IDkuMTUsMTMuNzEgOSwxMi4yOEw1LjYsOC44N0M0LjYxLDkuNzIgMy43OCwxMC43OCAzLjE4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZU91dGxpbmUgPSBcIk0xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlNMTIsNC41QzE3LDQuNSAyMS4yNyw3LjYxIDIzLDEyQzIxLjI3LDE2LjM5IDE3LDE5LjUgMTIsMTkuNUM3LDE5LjUgMi43MywxNi4zOSAxLDEyQzIuNzMsNy42MSA3LDQuNSAxMiw0LjVNMy4xOCwxMkM0LjgzLDE1LjM2IDguMjQsMTcuNSAxMiwxNy41QzE1Ljc2LDE3LjUgMTkuMTcsMTUuMzYgMjAuODIsMTJDMTkuMTcsOC42NCAxNS43Niw2LjUgMTIsNi41QzguMjQsNi41IDQuODMsOC42NCAzLjE4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVBsdXMgPSBcIk0xMiw0LjVDNyw0LjUgMi43Myw3LjYxIDEsMTJDMi43MywxNi4zOSA3LDE5LjUgMTIsMTkuNUMxMi4zNiwxOS41IDEyLjcyLDE5LjUgMTMuMDgsMTkuNDVDMTMuMDMsMTkuMTMgMTMsMTguODIgMTMsMTguNUMxMywxNy45NCAxMy4wOCwxNy4zOCAxMy4yNCwxNi44NEMxMi44MywxNi45NCAxMi40MiwxNyAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgMTcsMTJDMTcsMTIuMjkgMTYuOTcsMTIuNTkgMTYuOTIsMTIuODhDMTcuNTgsMTIuNjMgMTguMjksMTIuNSAxOSwxMi41QzIwLjE3LDEyLjUgMjEuMzEsMTIuODQgMjIuMjksMTMuNUMyMi41NiwxMyAyMi44LDEyLjUgMjMsMTJDMjEuMjcsNy42MSAxNyw0LjUgMTIsNC41TTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xOCwxNC41VjE3LjVIMTVWMTkuNUgxOFYyMi41SDIwVjE5LjVIMjNWMTcuNUgyMFYxNC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVBsdXNPdXRsaW5lID0gXCJNMTIsNC41QzcsNC41IDIuNzMsNy42MSAxLDEyQzIuNzMsMTYuMzkgNywxOS41IDEyLDE5LjVDMTIuMzYsMTkuNSAxMi43MiwxOS41IDEzLjA4LDE5LjQ1QzEzLjAzLDE5LjEzIDEzLDE4LjgyIDEzLDE4LjVDMTMsMTguMTQgMTMuMDQsMTcuNzggMTMuMSwxNy40MkMxMi43NCwxNy40NiAxMi4zNywxNy41IDEyLDE3LjVDOC4yNCwxNy41IDQuODMsMTUuMzYgMy4xOCwxMkM0LjgzLDguNjQgOC4yNCw2LjUgMTIsNi41QzE1Ljc2LDYuNSAxOS4xNyw4LjY0IDIwLjgyLDEyQzIwLjcsMTIuMjQgMjAuNTYsMTIuNDUgMjAuNDMsMTIuNjhDMjEuMDksMTIuODQgMjEuNzIsMTMuMTEgMjIuMjksMTMuNUMyMi41NiwxMyAyMi44LDEyLjUgMjMsMTJDMjEuMjcsNy42MSAxNyw0LjUgMTIsNC41TTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xOCwxNC41VjE3LjVIMTVWMTkuNUgxOFYyMi41SDIwVjE5LjVIMjNWMTcuNUgyMFYxNC41SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVJlbW92ZSA9IFwiTTIyLjU0IDE2Ljg4TDIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TTEyIDlDMTAuMzQgOSA5IDEwLjM0IDkgMTJTMTAuMzQgMTUgMTIgMTUgMTUgMTMuNjYgMTUgMTIgMTMuNjYgOSAxMiA5TTEyIDE3QzkuMjQgMTcgNyAxNC43NiA3IDEyUzkuMjQgNyAxMiA3IDE3IDkuMjQgMTcgMTJDMTcgMTIuNSAxNi45IDEzIDE2Ljc3IDEzLjQzQzE3LjQ2IDEzLjE2IDE4LjIxIDEzIDE5IDEzQzIwLjEyIDEzIDIxLjE3IDEzLjMyIDIyLjA3IDEzLjg1QzIyLjQzIDEzLjI3IDIyLjc0IDEyLjY1IDIzIDEyQzIxLjI3IDcuNjEgMTcgNC41IDEyIDQuNVMyLjczIDcuNjEgMSAxMkMyLjczIDE2LjM5IDcgMTkuNSAxMiAxOS41QzEyLjM1IDE5LjUgMTIuNjkgMTkuNSAxMy4wMyAxOS40NUMxMyAxOS4zIDEzIDE5LjE1IDEzIDE5QzEzIDE4LjIxIDEzLjE2IDE3LjQ2IDEzLjQzIDE2Ljc3QzEzIDE2LjkgMTIuNSAxNyAxMiAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVSZW1vdmVPdXRsaW5lID0gXCJNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhNMTIgOUMxMC4zNCA5IDkgMTAuMzQgOSAxMlMxMC4zNCAxNSAxMiAxNSAxNSAxMy42NiAxNSAxMiAxMy42NiA5IDEyIDlNMTIgMTcuNUM4LjI0IDE3LjUgNC44MyAxNS4zNiAzLjE4IDEyQzQuODMgOC42NCA4LjI0IDYuNSAxMiA2LjVTMTkuMTcgOC42NCAyMC44MiAxMkMyMC42MyAxMi4zOSAyMC40MSAxMi43NyAyMC4xNyAxMy4xM0MyMC44NSAxMy4yNiAyMS41IDEzLjUgMjIuMDcgMTMuODVDMjIuNDMgMTMuMjcgMjIuNzQgMTIuNjUgMjMgMTJDMjEuMjcgNy42MSAxNyA0LjUgMTIgNC41UzIuNzMgNy42MSAxIDEyQzIuNzMgMTYuMzkgNyAxOS41IDEyIDE5LjVDMTIuMzUgMTkuNSAxMi42OSAxOS41IDEzLjAzIDE5LjQ1QzEzIDE5LjMgMTMgMTkuMTUgMTMgMTlDMTMgMTguNDUgMTMuMDggMTcuOTIgMTMuMjIgMTcuNDFDMTIuODIgMTcuNDYgMTIuNDEgMTcuNSAxMiAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVNldHRpbmdzID0gXCJNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTEyLDE3QTUsNSAwIDAsMSA3LDEyQTUsNSAwIDAsMSAxMiw3QTUsNSAwIDAsMSAxNywxMkE1LDUgMCAwLDEgMTIsMTdNMTIsNC41QzcuMTQsNC41IDIuNzgsNy41IDEsMTJDMy4zOSwxOC4wOCAxMC4yNSwyMS4wNiAxNi4zMywxOC42N0MxOS4zOCwxNy40NyAyMS44LDE1LjA2IDIzLDEyQzIxLjIyLDcuNSAxNi44Niw0LjUgMTIsNC41TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZVNldHRpbmdzT3V0bGluZSA9IFwiTTEyLDlBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxMiwxNUEzLDMgMCAwLDEgOSwxMkEzLDMgMCAwLDEgMTIsOU0xMiw0LjVDMTYuODYsNC41IDIxLjIyLDcuNSAyMywxMkMyMC42MSwxOC4wOCAxMy43NSwyMS4wNiA3LjY3LDE4LjY3QzQuNjIsMTcuNDcgMi4yLDE1LjA2IDEsMTJDMi43OCw3LjUgNy4xNCw0LjUgMTIsNC41TTMuMTgsMTJDNS41NiwxNi44NyAxMS40NSwxOC44OSAxNi4zMiwxNi41QzE4LjI4LDE1LjU0IDE5Ljg2LDEzLjk2IDIwLjgyLDEyQzE4LjQ0LDcuMTMgMTIuNTUsNS4xMSA3LjY4LDcuNUM1LjcyLDguNDYgNC4xNCwxMC4wNCAzLjE4LDEyTTksMjJIN1YyNEg5VjIyTTEzLDIySDExVjI0SDEzVjIyTTE3LDIySDE1VjI0SDE3VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUV5ZWRyb3BwZXIgPSBcIk0xOS4zNSwxMS43MkwxNy4yMiwxMy44NUwxNS44MSwxMi40M0w4LjEsMjAuMTRMMy41LDIyTDIsMjAuNUwzLjg2LDE1LjlMMTEuNTcsOC4xOUwxMC4xNSw2Ljc4TDEyLjI4LDQuNjVMMTkuMzUsMTEuNzJNMTYuNzYsM0MxNy45MywxLjgzIDE5LjgzLDEuODMgMjEsM0MyMi4xNyw0LjE3IDIyLjE3LDYuMDcgMjEsNy4yNEwxOS4wOCw5LjE2TDE0Ljg0LDQuOTJMMTYuNzYsM001LjU2LDE3LjAzTDQuNSwxOS41TDYuOTcsMTguNDRMMTQuNCwxMUwxMyw5LjZMNS41NiwxNy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVkcm9wcGVyTWludXMgPSBcIk0xOS4zNSAxMS43MkwxNy4yMiAxMy44NUwxNS44MSAxMi40M0w4LjEgMjAuMTRMMy41IDIyTDIgMjAuNUwzLjg2IDE1LjlMMTEuNTcgOC4xOUwxMC4xNSA2Ljc4TDEyLjI4IDQuNjVMMTkuMzUgMTEuNzJNMTYuNzYgM0MxNy45MyAxLjgzIDE5LjgzIDEuODMgMjEgM1MyMi4xNyA2LjA3IDIxIDcuMjRMMTkuMDggOS4xNkwxNC44NCA0LjkyTDE2Ljc2IDNNNS41NiAxNy4wM0w0LjUgMTkuNUw2Ljk3IDE4LjQ0TDE0LjQgMTFMMTMgOS42TDUuNTYgMTcuMDNNOSA0VjZIMVY0SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllZHJvcHBlck9mZiA9IFwiTTIxIDcuMjRMMTkuMDggOS4xNkwxNC44NCA0LjkyTDE2Ljc2IDNDMTcuOTMgMS44MyAxOS44MyAxLjgzIDIxIDNTMjIuMTcgNi4wNyAyMSA3LjI0TTEwLjk0IDguODJMMTIuMzYgMTAuMjRMMTMgOS42TDE0LjQgMTFMMTMuNzYgMTEuNjRMMTUuMTggMTMuMDZMMTUuODEgMTIuNDNMMTcuMjIgMTMuODVMMTkuMzUgMTEuNzJMMTIuMjggNC42NUwxMC4xNSA2Ljc4TDExLjU3IDguMTlMMTAuOTQgOC44Mk0xOS44NiAyMC4yOUwxOC41OCAyMS41N0wxMi42MyAxNS42MUw4LjEgMjAuMTRMMy41IDIyTDIgMjAuNUwzLjg2IDE1LjlMOC4zOSAxMS4zN0wxLjg2IDQuODVMMy4xNCAzLjU3TDE5Ljg2IDIwLjI5TTExLjIxIDE0LjJMOS44MSAxMi43OUw1LjU2IDE3LjAzTDQuNSAxOS41TDYuOTcgMTguNDRMMTEuMjEgMTQuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlFeWVkcm9wcGVyUGx1cyA9IFwiTTE5LjM1IDExLjcyTDE3LjIyIDEzLjg1TDE1LjgxIDEyLjQzTDguMSAyMC4xNEwzLjUgMjJMMiAyMC41TDMuODYgMTUuOUwxMS41NyA4LjE5TDEwLjE1IDYuNzhMMTIuMjggNC42NUwxOS4zNSAxMS43Mk0xNi43NiAzQzE3LjkzIDEuODMgMTkuODMgMS44MyAyMSAzUzIyLjE3IDYuMDcgMjEgNy4yNEwxOS4wOCA5LjE2TDE0Ljg0IDQuOTJMMTYuNzYgM001LjU2IDE3LjAzTDQuNSAxOS41TDYuOTcgMTguNDRMMTQuNCAxMUwxMyA5LjZMNS41NiAxNy4wM002IDFWNEg5VjZINlY5SDRWNkgxVjRINFYxSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllZHJvcHBlclJlbW92ZSA9IFwiTTE5LjM1IDExLjcyTDE3LjIyIDEzLjg1TDE1LjgxIDEyLjQzTDguMSAyMC4xNEwzLjUgMjJMMiAyMC41TDMuODYgMTUuOUwxMS41NyA4LjE5TDEwLjE1IDYuNzhMMTIuMjggNC42NUwxOS4zNSAxMS43Mk0xNi43NiAzQzE3LjkzIDEuODMgMTkuODMgMS44MyAyMSAzUzIyLjE3IDYuMDcgMjEgNy4yNEwxOS4wOCA5LjE2TDE0Ljg0IDQuOTJMMTYuNzYgM001LjU2IDE3LjAzTDQuNSAxOS41TDYuOTcgMTguNDRMMTQuNCAxMUwxMyA5LjZMNS41NiAxNy4wM004LjU0IDIuODhMNi40MSA1TDguNTQgNy4xMkw3LjEyIDguNTRMNSA2LjQxTDIuODggOC41NEwxLjQ2IDcuMTJMMy41OSA1TDEuNDYgMi44OEwyLjg4IDEuNDdMNSAzLjU5TDcuMTIgMS40N0w4LjU0IDIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRXllZHJvcHBlclZhcmlhbnQgPSBcIk02LjkyLDE5TDUsMTcuMDhMMTMuMDYsOUwxNSwxMC45NE0yMC43MSw1LjYzTDE4LjM3LDMuMjlDMTgsMi45IDE3LjM1LDIuOSAxNi45NiwzLjI5TDEzLjg0LDYuNDFMMTEuOTEsNC41TDEwLjUsNS45MUwxMS45Miw3LjMzTDMsMTYuMjVWMjFINy43NUwxNi42NywxMi4wOEwxOC4wOSwxMy41TDE5LjUsMTIuMDlMMTcuNTgsMTAuMTdMMjAuNyw3LjA1QzIxLjEsNi42NSAyMS4xLDYgMjAuNzEsNS42M1pcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlID0gXCJNOSwxMS43NUExLjI1LDEuMjUgMCAwLDAgNy43NSwxM0ExLjI1LDEuMjUgMCAwLDAgOSwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTAuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDksMTEuNzVNMTUsMTEuNzVBMS4yNSwxLjI1IDAgMCwwIDEzLjc1LDEzQTEuMjUsMS4yNSAwIDAsMCAxNSwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTYuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDE1LDExLjc1TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsMTEuNzEgNCwxMS40MiA0LjA1LDExLjE0QzYuNDEsMTAuMDkgOC4yOCw4LjE2IDkuMjYsNS43N0MxMS4wNyw4LjMzIDE0LjA1LDEwIDE3LjQyLDEwQzE4LjIsMTAgMTguOTUsOS45MSAxOS42Nyw5Ljc0QzE5Ljg4LDEwLjQ1IDIwLDExLjIxIDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2VBZ2VudCA9IFwiTTE4LjcyLDE0Ljc2QzE5LjA3LDEzLjkxIDE5LjI2LDEzIDE5LjI2LDEyQzE5LjI2LDExLjI4IDE5LjE1LDEwLjU5IDE4Ljk2LDkuOTVDMTguMzEsMTAuMSAxNy42MywxMC4xOCAxNi45MiwxMC4xOEMxMy44NiwxMC4xOCAxMS4xNSw4LjY3IDkuNSw2LjM0QzguNjEsOC41IDYuOTEsMTAuMjYgNC43NywxMS4yMkM0LjczLDExLjQ3IDQuNzMsMTEuNzQgNC43MywxMkE3LjI3LDcuMjcgMCAwLDAgMTIsMTkuMjdDMTMuMDUsMTkuMjcgMTQuMDYsMTkuMDQgMTQuOTcsMTguNjNDMTUuNTQsMTkuNzIgMTUuOCwyMC4yNiAxNS43OCwyMC4yNkMxNC4xNCwyMC44MSAxMi44NywyMS4wOCAxMiwyMS4wOEM5LjU4LDIxLjA4IDcuMjcsMjAuMTMgNS41NywxOC40MkM0LjUzLDE3LjM4IDMuNzYsMTYuMTEgMy4zMywxNC43M0gyVjEwLjE4SDMuMDlDMy45Myw2LjA0IDcuNiwyLjkyIDEyLDIuOTJDMTQuNCwyLjkyIDE2LjcxLDMuODcgMTguNDIsNS41OEMxOS42OSw2Ljg0IDIwLjU0LDguNDUgMjAuODksMTAuMThIMjJWMTQuNjdIMjJWMTQuNjlMMjIsMTQuNzNIMjEuOTRMMTguMzgsMThMMTMuMDgsMTcuNFYxNS43M0gxNy45MUwxOC43MiwxNC43Nk05LjI3LDExLjc3QzkuNTcsMTEuNzcgOS44NiwxMS44OSAxMC4wNywxMi4xMUMxMC4yOCwxMi4zMiAxMC40LDEyLjYxIDEwLjQsMTIuOTFDMTAuNCwxMy4yMSAxMC4yOCwxMy41IDEwLjA3LDEzLjcxQzkuODYsMTMuOTIgOS41NywxNC4wNCA5LjI3LDE0LjA0QzguNjQsMTQuMDQgOC4xMywxMy41NCA4LjEzLDEyLjkxQzguMTMsMTIuMjggOC42NCwxMS43NyA5LjI3LDExLjc3TTE0LjcyLDExLjc3QzE1LjM1LDExLjc3IDE1Ljg1LDEyLjI4IDE1Ljg1LDEyLjkxQzE1Ljg1LDEzLjU0IDE1LjM1LDE0LjA0IDE0LjcyLDE0LjA0QzE0LjA5LDE0LjA0IDEzLjU4LDEzLjU0IDEzLjU4LDEyLjkxQTEuMTQsMS4xNCAwIDAsMSAxNC43MiwxMS43N1pcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlTWFzayA9IFwiTTIwLjI1IDZDMTguNzkgNiAxNy42MSA3LjE0IDE3LjUgOC41OEwxMi41NSA3LjE2QzEyLjE5IDcuMDUgMTEuODEgNy4wNSAxMS40NSA3LjE2TDYuNSA4LjU4QzYuMzkgNy4xNCA1LjIxIDYgMy43NSA2QzIuMjMgNiAxIDcuMjMgMSA4Ljc1VjEyLjI1QzEgMTMuNzcgMi4yMyAxNSAzLjc1IDE1SDUuNjhDNi44MSAxNy4zNiA5LjIxIDE5IDEyIDE5UzE3LjE5IDE3LjM2IDE4LjMyIDE1SDIwLjI1QzIxLjc3IDE1IDIzIDEzLjc3IDIzIDEyLjI1VjguNzVDMjMgNy4yMyAyMS43NyA2IDIwLjI1IDZNNSAxMy41SDMuNzVDMy4wNiAxMy41IDIuNSAxMi45NCAyLjUgMTIuMjVWOC43NUMyLjUgOC4wNiAzLjA2IDcuNSAzLjc1IDcuNVM1IDguMDYgNSA4Ljc1VjEzLjVNMTUgMTJMMTIuNCAxMS4zQzEyLjEgMTEuMiAxMS44IDExLjIgMTEuNiAxMS4zTDkgMTJWMTFMMTEuMyAxMC4zQzExLjcgMTAuMiAxMi4yIDEwLjIgMTIuNyAxMC4zTDE1IDExVjEyTTIxLjUgMTIuMjVDMjEuNSAxMi45NCAyMC45NCAxMy41IDIwLjI1IDEzLjVIMTlWOC43NUMxOSA4LjA2IDE5LjU2IDcuNSAyMC4yNSA3LjVTMjEuNSA4LjA2IDIxLjUgOC43NVYxMi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlTWFza091dGxpbmUgPSBcIk0xNSAxMkwxMi40IDExLjNDMTIuMSAxMS4yIDExLjggMTEuMiAxMS42IDExLjNMOSAxMlYxMUwxMS4zIDEwLjNDMTEuNyAxMC4yIDEyLjIgMTAuMiAxMi43IDEwLjNMMTUgMTFWMTJNMjAuMjUgNkMxOC43OSA2IDE3LjYxIDcuMTQgMTcuNSA4LjU4TDEyLjU1IDcuMTZDMTIuMzcgNy4xMSAxMi4xOSA3LjA4IDEyIDcuMDhDMTEuODIgNy4wOCAxMS42MyA3LjExIDExLjQ1IDcuMTZMNi41IDguNThDNi4zOSA3LjE0IDUuMjEgNiAzLjc1IDZDMi4yMyA2IDEgNy4yMyAxIDguNzVWMTIuMjVDMSAxMy43NyAyLjIzIDE1IDMuNzUgMTVINS42OEM2LjgxIDE3LjM2IDkuMjEgMTkgMTIgMTlTMTcuMTkgMTcuMzYgMTguMzIgMTVIMjAuMjVDMjEuNzcgMTUgMjMgMTMuNzcgMjMgMTIuMjVWOC43NUMyMyA3LjIzIDIxLjc3IDYgMjAuMjUgNk01IDEzLjVIMy43NUMzLjA2IDEzLjUgMi41IDEyLjk0IDIuNSAxMi4yNVY4Ljc1QzIuNSA4LjA2IDMuMDYgNy41IDMuNzUgNy41UzUgOC4wNiA1IDguNzVWMTMuNU0xNyAxMkMxNyAxNC43NiAxNC43NiAxNyAxMiAxN1M3IDE0Ljc2IDcgMTJMNyAxMC41TDEyIDkuMDhIMTJMMTcgMTAuNVYxMk0yMS41IDEyLjI1QzIxLjUgMTIuOTQgMjAuOTQgMTMuNSAyMC4yNSAxMy41SDE5VjguNzVDMTkgOC4wNiAxOS41NiA3LjUgMjAuMjUgNy41UzIxLjUgOC4wNiAyMS41IDguNzVWMTIuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZU91dGxpbmUgPSBcIk0xMC4yNSwxM0ExLjI1LDEuMjUgMCAwLDEgOSwxNC4yNUExLjI1LDEuMjUgMCAwLDEgNy43NSwxM0ExLjI1LDEuMjUgMCAwLDEgOSwxMS43NUExLjI1LDEuMjUgMCAwLDEgMTAuMjUsMTNNMTUsMTEuNzVBMS4yNSwxLjI1IDAgMCwwIDEzLjc1LDEzQTEuMjUsMS4yNSAwIDAsMCAxNSwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTYuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDE1LDExLjc1TTIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk0xMC42Niw0LjEyQzEyLjA2LDYuNDQgMTQuNiw4IDE3LjUsOEMxNy45Niw4IDE4LjQxLDcuOTUgMTguODQsNy44OEMxNy40NCw1LjU2IDE0LjksNCAxMiw0QzExLjU0LDQgMTEuMDksNC4wNSAxMC42Niw0LjEyTTQuNDIsOS40N0M2LjEzLDguNSA3LjQ1LDYuOTIgOC4wOCw1LjAzQzYuMzcsNiA1LjA1LDcuNTggNC40Miw5LjQ3TTIwLDEyQzIwLDExLjIyIDE5Ljg4LDEwLjQ3IDE5LjY3LDkuNzZDMTguOTcsOS45MSAxOC4yNSwxMCAxNy41LDEwQzE0LjM3LDEwIDExLjU4LDguNTYgOS43NCw2LjMxQzguNjksOC44NyA2LjYsMTAuODggNCwxMS44NkM0LDExLjkgNCwxMS45NSA0LDEyQzQsMTYuNDEgNy41OSwyMCAxMiwyMEMxNi40MSwyMCAyMCwxNi40MSAyMCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlUHJvZmlsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDguMzlDMTMuNTcsOS40IDE1LjQyLDEwIDE3LjQyLDEwQzE4LjIsMTAgMTguOTUsOS45MSAxOS42Nyw5Ljc0QzE5Ljg4LDEwLjQ1IDIwLDExLjIxIDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwQzksMjAgNi4zOSwxOC4zNCA1LDE1Ljg5TDYuNzUsMTRWMTNBMS4yNSwxLjI1IDAgMCwxIDgsMTEuNzVBMS4yNSwxLjI1IDAgMCwxIDkuMjUsMTNWMTRIMTJNMTYsMTEuNzVBMS4yNSwxLjI1IDAgMCwwIDE0Ljc1LDEzQTEuMjUsMS4yNSAwIDAsMCAxNiwxNC4yNUExLjI1LDEuMjUgMCAwLDAgMTcuMjUsMTNBMS4yNSwxLjI1IDAgMCwwIDE2LDExLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2VQcm9maWxlV29tYW4gPSBcIk0xNy4yNSAxM0MxNy4yNSAxMy42OSAxNi42OSAxNC4yNSAxNiAxNC4yNVMxNC43NSAxMy42OSAxNC43NSAxMyAxNS4zMSAxMS43NSAxNiAxMS43NSAxNy4yNSAxMi4zMSAxNy4yNSAxM00yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJIMlYxMkMyIDYuNSA2LjUgMiAxMiAyUzIyIDYuNSAyMiAxMk03IDE4QzguNDEgMTkuMjMgMTAgMjAgMTIgMjBDMTYuNDEgMjAgMjAgMTYuNDEgMjAgMTJDMjAgMTEuMjEgMTkuODggMTAuNDUgMTkuNjcgOS43NEMxOC45NSA5LjkxIDE4LjIgMTAgMTcuNDIgMTBDMTUuNDIgMTAgMTMuNTcgOS40IDEyIDguMzlDMTIgOC4zOSAxMC41NCAxMy43NiA4LjAzIDEzQzcuMzcgMTIuOCA3IDEzLjMxIDcgMTRcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlUmVjb2duaXRpb24gPSBcIk05LDExLjc1QTEuMjUsMS4yNSAwIDAsMCA3Ljc1LDEzQTEuMjUsMS4yNSAwIDAsMCA5LDE0LjI1QTEuMjUsMS4yNSAwIDAsMCAxMC4yNSwxM0ExLjI1LDEuMjUgMCAwLDAgOSwxMS43NU0xNSwxMS43NUExLjI1LDEuMjUgMCAwLDAgMTMuNzUsMTNBMS4yNSwxLjI1IDAgMCwwIDE1LDE0LjI1QTEuMjUsMS4yNSAwIDAsMCAxNi4yNSwxM0ExLjI1LDEuMjUgMCAwLDAgMTUsMTEuNzVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJDMy45NywxMS43MSAzLjk3LDExLjQzIDQsMTEuMTRDNi4zOCwxMC4xIDguMjcsOC4xNyA5LjI2LDUuNzdDMTEuMTMsOC40MiAxNC4xNywxMCAxNy40MiwxMEMxOC4xOCwxMCAxOC45Myw5LjkxIDE5LjY3LDkuNzRDMjAuOTIsMTQgMTguNSwxOC40MyAxNC4yNiwxOS42N0MxMy41LDE5Ljg5IDEyLjc2LDIwIDEyLDIwTTAsMkEyLDIgMCAwLDEgMiwwSDZWMkgyVjZIMFYyTTI0LDIyQTIsMiAwIDAsMSAyMiwyNEgxOFYyMkgyMlYxOEgyNFYyMk0yLDI0QTIsMiAwIDAsMSAwLDIyVjE4SDJWMjJINlYyNEgyTTIyLDBBMiwyIDAgMCwxIDI0LDJWNkgyMlYySDE4VjBIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVNoaW1tZXIgPSBcIk0xOC40MSAzLjQxTDE2IDQuNUwxOC40MSA1LjU5TDE5LjUgOEwyMC42IDUuNTlMMjMgNC41TDIwLjYgMy40MUwxOS41IDFNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDEwLjUzIDIxLjY3IDkuMTMgMjEuMSA3Ljg3TDE5Ljg2IDEwLjU5QzE5Ljk0IDExLjA1IDIwIDExLjUgMjAgMTJDMjAgMTYuNDMgMTYuNDMgMjAgMTIgMjBDNy41NyAyMCA0IDE2LjQzIDQgMTJDNCAxMS45NiA0IDExLjkxIDQgMTEuODdBMTAgMTAgMCAwIDAgOS43NCA2LjMxQTEwIDEwIDAgMCAwIDE3LjUgMTBBMTAgMTAgMCAwIDAgMTguODMgOS45MUwxNy4zNSA2LjY1TDEyLjYgNC41TDE2LjEzIDIuOUMxNC44NyAyLjMzIDEzLjQ3IDIgMTIgMk05IDExLjc1QTEuMjUgMS4yNSAwIDAgMCA3Ljc1IDEzQTEuMjUgMS4yNSAwIDAgMCA5IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxMC4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgOSAxMS43NU0xNSAxMS43NUExLjI1IDEuMjUgMCAwIDAgMTMuNzUgMTNBMS4yNSAxLjI1IDAgMCAwIDE1IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxNi4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgMTUgMTEuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVNoaW1tZXJPdXRsaW5lID0gXCJNMTkuNSAxTDE4LjQxIDMuNDFMMTYgNC41TDE4LjQxIDUuNTlMMTkuNSA4TDIwLjYgNS41OUwyMyA0LjVMMjAuNiAzLjQxTDE5LjUgMU0xMiAyQzYuNSAyIDIgNi41IDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNy41IDIyIDIyIDE3LjUgMjIgMTJDMjIgMTAuNTMgMjEuNjcgOS4xMyAyMS4xIDcuODdMMTkuODYgMTAuNTdDMTkuOTUgMTEuMDQgMjAgMTEuNSAyMCAxMkMyMCAxNi40MyAxNi40MyAyMCAxMiAyMEM3LjU3IDIwIDQgMTYuNDMgNCAxMkM0IDExLjk1IDQgMTEuOTEgNCAxMS44NkExMCAxMCAwIDAgMCA5Ljc0IDYuMzFDMTEuNjEgOC42MSAxNC40NCAxMCAxNy41IDEwQzE3Ljk0IDEwIDE4LjM5IDkuOTcgMTguODMgOS45MUwxNy45NiA4QzE3LjgxIDggMTcuNjUgOCAxNy41IDhDMTQuNjggOCAxMi4xIDYuNSAxMC42NiA0LjEyQzExLjEgNC4wNSAxMS41NCA0IDEyIDRDMTIuNSA0IDEyLjk2IDQuMDUgMTMuNDIgNC4xM0wxNi4xMyAyLjkxQzE0Ljg3IDIuMzMgMTMuNDcgMiAxMiAyTTguMDkgNUE4IDggMCAwIDEgNC40MSA5LjVDNS4wNCA3LjU3IDYuMzcgNiA4LjA5IDVNOSAxMS43NUExLjI1IDEuMjUgMCAwIDAgNy43NSAxM0ExLjI1IDEuMjUgMCAwIDAgOSAxNC4yNUExLjI1IDEuMjUgMCAwIDAgMTAuMjUgMTNBMS4yNSAxLjI1IDAgMCAwIDkgMTEuNzVNMTUgMTEuNzVBMS4yNSAxLjI1IDAgMCAwIDEzLjc1IDEzQTEuMjUgMS4yNSAwIDAgMCAxNSAxNC4yNUExLjI1IDEuMjUgMCAwIDAgMTYuMjUgMTNBMS4yNSAxLjI1IDAgMCAwIDE1IDExLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2VXb21hbiA9IFwiTTEzLjc1IDEzQzEzLjc1IDEyLjMxIDE0LjMxIDExLjc1IDE1IDExLjc1UzE2LjI1IDEyLjMxIDE2LjI1IDEzIDE1LjY5IDE0LjI1IDE1IDE0LjI1IDEzLjc1IDEzLjY5IDEzLjc1IDEzTTIyIDEyVjIySDJWMTJDMiA2LjUgNi41IDIgMTIgMlMyMiA2LjUgMjIgMTJNNCAxMkM0IDE2LjQxIDcuNTkgMjAgMTIgMjBTMjAgMTYuNDEgMjAgMTJDMjAgMTEuMjEgMTkuODggMTAuNDUgMTkuNjcgOS43NEMxOC45NSA5LjkxIDE4LjIgMTAgMTcuNDIgMTBDMTQuMDUgMTAgMTEuMDcgOC4zMyA5LjI2IDUuNzdDOC4yOCA4LjE2IDYuNDEgMTAuMDkgNC4wNSAxMS4xNEM0IDExLjQyIDQgMTEuNzEgNCAxMk05IDE0LjI1QzkuNjkgMTQuMjUgMTAuMjUgMTMuNjkgMTAuMjUgMTNTOS42OSAxMS43NSA5IDExLjc1IDcuNzUgMTIuMzEgNy43NSAxMyA4LjMxIDE0LjI1IDkgMTQuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVdvbWFuT3V0bGluZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlYyMkgyMlYxMkMyMiA2LjUgMTcuNSAyIDEyIDJNMTIgNEMxNC45IDQgMTcuNDQgNS41NiAxOC44NCA3Ljg4QzE4LjQxIDcuOTUgMTcuOTYgOCAxNy41IDhDMTQuNiA4IDEyLjA2IDYuNDQgMTAuNjYgNC4xMkMxMS4wOSA0LjA1IDExLjU0IDQgMTIgNE04LjA4IDUuMDNDNy40NSA2LjkyIDYuMTMgOC41IDQuNDIgOS40N0M1LjA1IDcuNTggNi4zNyA2IDguMDggNS4wM000IDExLjg2QzYuNiAxMC44OCA4LjY5IDguODcgOS43NCA2LjMxQzExLjU4IDguNTYgMTQuMzcgMTAgMTcuNSAxMEMxOC4yNSAxMCAxOC45NyA5LjkxIDE5LjY3IDkuNzZDMTkuODggMTAuNDcgMjAgMTEuMjIgMjAgMTJDMjAgMTYuNDEgMTYuNDEgMjAgMTIgMjBTNCAxNi40MSA0IDEyVjExLjg2TTQgMjBWMThDNC41NyAxOC43NSA1LjI1IDE5LjQzIDYgMjBINE0yMCAyMEgxOEMxOC43NSAxOS40MyAxOS40MyAxOC43NSAyMCAxOFYyME0xMy43NSAxM0MxMy43NSAxMi4zMSAxNC4zMSAxMS43NSAxNSAxMS43NVMxNi4yNSAxMi4zMSAxNi4yNSAxMyAxNS42OSAxNC4yNSAxNSAxNC4yNSAxMy43NSAxMy42OSAxMy43NSAxM003Ljc1IDEzQzcuNzUgMTIuMzEgOC4zMSAxMS43NSA5IDExLjc1UzEwLjI1IDEyLjMxIDEwLjI1IDEzIDkuNjkgMTQuMjUgOSAxNC4yNSA3Ljc1IDEzLjY5IDcuNzUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVdvbWFuU2hpbW1lciA9IFwiTTE5LjUgMUwxOC40MSAzLjQxTDE2IDQuNUwxOC40MSA1LjU5TDE5LjUgOEwyMC42IDUuNTlMMjMgNC41TDIwLjYgMy40MUwxOS41IDFNMTIgMkM2LjUgMiAyIDYuNSAyIDEyVjIySDIyVjEyQzIyIDEwLjUzIDIxLjY3IDkuMTMgMjEuMSA3Ljg3TDE5Ljg2IDEwLjU5QzE5Ljk0IDExLjA1IDIwIDExLjUgMjAgMTJDMjAgMTYuNDMgMTYuNDMgMjAgMTIgMjBDNy41NyAyMCA0IDE2LjQzIDQgMTJDNCAxMS45NiA0IDExLjkxIDQgMTEuODdBMTAgMTAgMCAwIDAgOS43NCA2LjMxQTEwIDEwIDAgMCAwIDE3LjUgMTBBMTAgMTAgMCAwIDAgMTguODMgOS45MUwxNy4zNSA2LjY1TDEyLjYgNC41TDE2LjEzIDIuOUMxNC44NyAyLjMzIDEzLjQ3IDIgMTIgMk05IDExLjc1QTEuMjUgMS4yNSAwIDAgMCA3Ljc1IDEzQTEuMjUgMS4yNSAwIDAgMCA5IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxMC4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgOSAxMS43NU0xNSAxMS43NUExLjI1IDEuMjUgMCAwIDAgMTMuNzUgMTNBMS4yNSAxLjI1IDAgMCAwIDE1IDE0LjI1QTEuMjUgMS4yNSAwIDAgMCAxNi4yNSAxM0ExLjI1IDEuMjUgMCAwIDAgMTUgMTEuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZVdvbWFuU2hpbW1lck91dGxpbmUgPSBcIk0xOS41IDFMMTguNDEgMy40MUwxNiA0LjVMMTguNDEgNS41OUwxOS41IDhMMjAuNiA1LjU5TDIzIDQuNUwyMC42IDMuNDFNMTIgMkM2LjUgMiAyIDYuNSAyIDEyVjIySDIyVjEyQzIyIDEwLjUzIDIxLjY3IDkuMTMgMjEuMSA3Ljg3TDE5Ljg2IDEwLjU3QzE5Ljk1IDExLjA0IDIwIDExLjUgMjAgMTJDMjAgMTYuNDMgMTYuNDMgMjAgMTIgMjBDNy41NyAyMCA0IDE2LjQzIDQgMTJDNCAxMS45NSA0IDExLjkxIDQgMTEuODZDNi42MSAxMC44OSA4LjY5IDguODggOS43NCA2LjMxQzExLjYxIDguNjEgMTQuNDQgMTAgMTcuNSAxMEMxNy45NCAxMCAxOC4zOSA5Ljk3IDE4LjgzIDkuOTFMMTcuOTYgOEMxNy44MSA4IDE3LjY1IDggMTcuNSA4QzE0LjY4IDggMTIuMSA2LjUgMTAuNjYgNC4xMkMxMS4xIDQuMDUgMTEuNTQgNCAxMiA0QzEyLjUgNCAxMi45NiA0LjA1IDEzLjQyIDQuMTNMMTYuMTMgMi45MUMxNC44NyAyLjMzIDEzLjQ3IDIgMTIgMk04LjA5IDVDNy40NiA2LjkxIDYuMTUgOC41IDQuNDEgOS41QzUuMDQgNy41NyA2LjM3IDYgOC4wOSA1TTkgMTEuNzVDOC4zMSAxMS43NSA3Ljc1IDEyLjMxIDcuNzUgMTNDNy43NSAxMy42OSA4LjMxIDE0LjI1IDkgMTQuMjVDOS42OSAxNC4yNSAxMC4yNSAxMy42OSAxMC4yNSAxM0MxMC4yNSAxMi4zMSA5LjY5IDExLjc1IDkgMTEuNzVNMTUgMTEuNzVDMTQuMzEgMTEuNzUgMTMuNzUgMTIuMzEgMTMuNzUgMTNDMTMuNzUgMTMuNjkgMTQuMzEgMTQuMjUgMTUgMTQuMjVDMTUuNjkgMTQuMjUgMTYuMjUgMTMuNjkgMTYuMjUgMTNDMTYuMjUgMTIuMzEgMTUuNjkgMTEuNzUgMTUgMTEuNzVNNCAxNy45N0M0LjU4IDE4Ljc0IDUuMjYgMTkuNDIgNi4wMyAyMEg0TTIwIDE3Ljk3VjIwSDE3Ljk3QzE4Ljc0IDE5LjQyIDE5LjQyIDE4Ljc0IDIwIDE3Ljk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhY2Vib29rID0gXCJNMTIgMi4wNEM2LjUgMi4wNCAyIDYuNTMgMiAxMi4wNkMyIDE3LjA2IDUuNjYgMjEuMjEgMTAuNDQgMjEuOTZWMTQuOTZINy45VjEyLjA2SDEwLjQ0VjkuODVDMTAuNDQgNy4zNCAxMS45MyA1Ljk2IDE0LjIyIDUuOTZDMTUuMzEgNS45NiAxNi40NSA2LjE1IDE2LjQ1IDYuMTVWOC42MkgxNS4xOUMxMy45NSA4LjYyIDEzLjU2IDkuMzkgMTMuNTYgMTAuMThWMTIuMDZIMTYuMzRMMTUuODkgMTQuOTZIMTMuNTZWMjEuOTZBMTAgMTAgMCAwIDAgMjIgMTIuMDZDMjIgNi41MyAxNy41IDIuMDQgMTIgMi4wNFpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlYm9va0dhbWluZyA9IFwiTTkuNSAxNC41VjkuNUgyMVYyMUgxNS41VjE0LjVIOS41TTMgM0gyMUwyMSA4LjVIOC41VjE1LjVIMTQuNVYyMUgzVjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFjZWJvb2tNZXNzZW5nZXIgPSBcIk0xMiwyQzYuMzYsMiAyLDYuMTMgMiwxMS43QzIsMTQuNjEgMy4xOSwxNy4xNCA1LjE0LDE4Ljg3QzUuMywxOSA1LjQsMTkuMjIgNS40MSwxOS40NEw1LjQ2LDIxLjIyQzUuNSwyMS43OSA2LjA3LDIyLjE2IDYuNTksMjEuOTNMOC41NywyMS4wNkM4Ljc0LDIxIDguOTMsMjAuOTcgOS4xLDIxQzEwLDIxLjI3IDExLDIxLjQgMTIsMjEuNEMxNy42NCwyMS40IDIyLDE3LjI3IDIyLDExLjdDMjIsNi4xMyAxNy42NCwyIDEyLDJNMTgsOS40NkwxNS4wNywxNC4xM0MxNC42LDE0Ljg2IDEzLjYsMTUuMDUgMTIuOSwxNC41TDEwLjU2LDEyLjc3QzEwLjM1LDEyLjYxIDEwLjA1LDEyLjYxIDkuODQsMTIuNzdMNi42OCwxNS4xN0M2LjI2LDE1LjUgNS43MSwxNSA2LDE0LjU0TDguOTMsOS44N0M5LjQsOS4xNCAxMC40LDguOTUgMTEuMSw5LjQ3TDEzLjQ0LDExLjIzQzEzLjY2LDExLjM5IDEzLjk1LDExLjM5IDE0LjE2LDExLjIzTDE3LjMyLDguODNDMTcuNzQsOC41IDE4LjI5LDkgMTgsOS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWNlYm9va1dvcmtwbGFjZSA9IFwiTTE5LjY5LDE2LjEyQzE5LjQyLDE2LjQzIDE4Ljk1LDE2LjkyIDE4LjE5LDE2LjkyQzE3LjEzLDE2LjkyIDE2Ljc4LDE2LjE1IDE2LjQ2LDE1LjM0TDE0Ljg2LDExLjQxTDEzLjI2LDE1LjM0QzEzLDE2IDEyLjcsMTYuOTIgMTEuNTMsMTYuOTJDMTAuMzYsMTYuOTIgMTAuMDcsMTYgOS43OSwxNS4zNEw3LjExLDguNzJIOS4zN0wxMS41MywxNC4xN0wxMy4xNCwxMC4yQzEzLjM5LDkuNTcgMTMuNjksOC42MiAxNC44Niw4LjYyQzE2LDguNjIgMTYuMzIsOS41NyAxNi41OCwxMC4yTDE4LjMzLDE0LjVDMTkuMjIsMTMuMTQgMTkuNiwxMS41IDE5LjM4LDkuODlDMTkuMTYsOC4yOCAxOC4zNyw2LjggMTcuMTQsNS43M0MxNS45Miw0LjY2IDE0LjM0LDQuMDYgMTIuNzIsNC4wNkMxMS4wMyw0LjA1IDkuMzksNC41OCA4LDUuNTZDNi42Niw2LjU1IDUuNjQsNy45NCA1LjEyLDkuNTRDNC42LDExLjE0IDQuNiwxMi44NyA1LjEyLDE0LjQ3QzUuNjQsMTYuMDcgNi42NiwxNy40NiA4LjAzLDE4LjQ0QzkuNCwxOS40MyAxMS4wNCwxOS45NSAxMi43MiwxOS45NEMxMy40NSwxOS45NCAxNC4xNywxOS44NCAxNC44NywxOS42NFYyMS43NUMxNC4xNiwyMS45MSAxMy40NCwyMiAxMi43MiwyMkMxMC42MSwyMiA4LjU0LDIxLjM0IDYuODIsMjAuMUM1LjEsMTguODYgMy44MiwxNy4xMSAzLjE3LDE1LjFDMi41LDEzLjA5IDIuNSwxMC45MiAzLjE2LDguOUMzLjgyLDYuODkgNS4xLDUuMTQgNi44MiwzLjlDOC41MywyLjY2IDEwLjYsMiAxMi43MiwyQzE3LjU2LDIgMjEuNSw1Ljk0IDIxLjUsMTAuNzlDMjEuNSwxMi43MSAyMC44NiwxNC41OSAxOS42OSwxNi4xMlYxNi4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYWN0b3J5ID0gXCJNNCwxOFYyMEg4VjE4SDRNNCwxNFYxNkgxNFYxNEg0TTEwLDE4VjIwSDE0VjE4SDEwTTE2LDE0VjE2SDIwVjE0SDE2TTE2LDE4VjIwSDIwVjE4SDE2TTIsMjJWOEw3LDEyVjhMMTIsMTJWOEwxNywxMkwxOCwySDIxTDIyLDEyVjIySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFtaWx5VHJlZSA9IFwiTTEyIDFBMi41IDIuNSAwIDAgMCA5LjUgMy41QTIuNSAyLjUgMCAwIDAgMTEgNS43OVY3SDdBMiAyIDAgMCAwIDUgOVY5LjcxQTIuNSAyLjUgMCAwIDAgMy41IDEyQTIuNSAyLjUgMCAwIDAgNSAxNC4yOVYxNUg0QTIgMiAwIDAgMCAyIDE3VjE4LjIxQTIuNSAyLjUgMCAwIDAgLjUgMjAuNUEyLjUgMi41IDAgMCAwIDMgMjNBMi41IDIuNSAwIDAgMCA1LjUgMjAuNUEyLjUgMi41IDAgMCAwIDQgMTguMjFWMTdIOFYxOC4yMUEyLjUgMi41IDAgMCAwIDYuNSAyMC41QTIuNSAyLjUgMCAwIDAgOSAyM0EyLjUgMi41IDAgMCAwIDExLjUgMjAuNUEyLjUgMi41IDAgMCAwIDEwIDE4LjIxVjE3QTIgMiAwIDAgMCA4IDE1SDdWMTQuMjlBMi41IDIuNSAwIDAgMCA4LjUgMTJBMi41IDIuNSAwIDAgMCA3IDkuNzFWOUgxN1Y5LjcxQTIuNSAyLjUgMCAwIDAgMTUuNSAxMkEyLjUgMi41IDAgMCAwIDE3IDE0LjI5VjE1SDE2QTIgMiAwIDAgMCAxNCAxN1YxOC4yMUEyLjUgMi41IDAgMCAwIDEyLjUgMjAuNUEyLjUgMi41IDAgMCAwIDE1IDIzQTIuNSAyLjUgMCAwIDAgMTcuNSAyMC41QTIuNSAyLjUgMCAwIDAgMTYgMTguMjFWMTdIMjBWMTguMjFBMi41IDIuNSAwIDAgMCAxOC41IDIwLjVBMi41IDIuNSAwIDAgMCAyMSAyM0EyLjUgMi41IDAgMCAwIDIzLjUgMjAuNUEyLjUgMi41IDAgMCAwIDIyIDE4LjIxVjE3QTIgMiAwIDAgMCAyMCAxNUgxOVYxNC4yOUEyLjUgMi41IDAgMCAwIDIwLjUgMTJBMi41IDIuNSAwIDAgMCAxOSA5LjcxVjlBMiAyIDAgMCAwIDE3IDdIMTNWNS43OUEyLjUgMi41IDAgMCAwIDE0LjUgMy41QTIuNSAyLjUgMCAwIDAgMTIgMU0xMiAyLjVBMSAxIDAgMCAxIDEzIDMuNUExIDEgMCAwIDEgMTIgNC41QTEgMSAwIDAgMSAxMSAzLjVBMSAxIDAgMCAxIDEyIDIuNU02IDExQTEgMSAwIDAgMSA3IDEyQTEgMSAwIDAgMSA2IDEzQTEgMSAwIDAgMSA1IDEyQTEgMSAwIDAgMSA2IDExTTE4IDExQTEgMSAwIDAgMSAxOSAxMkExIDEgMCAwIDEgMTggMTNBMSAxIDAgMCAxIDE3IDEyQTEgMSAwIDAgMSAxOCAxMU0zIDE5LjVBMSAxIDAgMCAxIDQgMjAuNUExIDEgMCAwIDEgMyAyMS41QTEgMSAwIDAgMSAyIDIwLjVBMSAxIDAgMCAxIDMgMTkuNU05IDE5LjVBMSAxIDAgMCAxIDEwIDIwLjVBMSAxIDAgMCAxIDkgMjEuNUExIDEgMCAwIDEgOCAyMC41QTEgMSAwIDAgMSA5IDE5LjVNMTUgMTkuNUExIDEgMCAwIDEgMTYgMjAuNUExIDEgMCAwIDEgMTUgMjEuNUExIDEgMCAwIDEgMTQgMjAuNUExIDEgMCAwIDEgMTUgMTkuNU0yMSAxOS41QTEgMSAwIDAgMSAyMiAyMC41QTEgMSAwIDAgMSAyMSAyMS41QTEgMSAwIDAgMSAyMCAyMC41QTEgMSAwIDAgMSAyMSAxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhbiA9IFwiTTEyLDExQTEsMSAwIDAsMCAxMSwxMkExLDEgMCAwLDAgMTIsMTNBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxMiwxMU0xMi41LDJDMTcsMiAxNy4xMSw1LjU3IDE0Ljc1LDYuNzVDMTMuNzYsNy4yNCAxMy4zMiw4LjI5IDEzLjEzLDkuMjJDMTMuNjEsOS40MiAxNC4wMyw5LjczIDE0LjM1LDEwLjEzQzE4LjA1LDguMTMgMjIuMDMsOC45MiAyMi4wMywxMi41QzIyLjAzLDE3IDE4LjQ2LDE3LjEgMTcuMjgsMTQuNzNDMTYuNzgsMTMuNzQgMTUuNzIsMTMuMyAxNC43OSwxMy4xMUMxNC41OSwxMy41OSAxNC4yOCwxNCAxMy44OCwxNC4zNEMxNS44NywxOC4wMyAxNS4wOCwyMiAxMS41LDIyQzcsMjIgNi45MSwxOC40MiA5LjI3LDE3LjI0QzEwLjI1LDE2Ljc1IDEwLjY5LDE1LjcxIDEwLjg5LDE0Ljc5QzEwLjQsMTQuNTkgOS45NywxNC4yNyA5LjY1LDEzLjg3QzUuOTYsMTUuODUgMiwxNS4wNyAyLDExLjVDMiw3IDUuNTYsNi44OSA2Ljc0LDkuMjZDNy4yNCwxMC4yNSA4LjI5LDEwLjY4IDkuMjIsMTAuODdDOS40MSwxMC4zOSA5LjczLDkuOTcgMTAuMTQsOS42NUM4LjE1LDUuOTYgOC45NCwyIDEyLjUsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5BbGVydCA9IFwiTTEwIDExQzkuNDMgMTEgOSAxMS40NSA5IDEyUzkuNDMgMTMgMTAgMTNDMTAuNTQgMTMgMTEgMTIuNTUgMTEgMTJTMTAuNTQgMTEgMTAgMTFNMTAuNSAyQzE1IDIgMTUuMDkgNS41NyAxMi43MyA2Ljc1QzExLjc0IDcuMjQgMTEuMyA4LjI5IDExLjExIDkuMjJDMTEuNTkgOS40MiAxMiA5LjczIDEyLjMzIDEwLjEzQzE2LjAzIDguMTMgMjAgOC45MiAyMCAxMi41QzIwIDE3IDE2LjQzIDE3LjEgMTUuMjYgMTQuNzNDMTQuNzYgMTMuNzQgMTMuNyAxMy4zIDEyLjc3IDEzLjExQzEyLjU3IDEzLjU5IDEyLjI2IDE0IDExLjg2IDE0LjM0QzEzLjg1IDE4LjAzIDEzLjA2IDIyIDkuNSAyMkM1IDIyIDQuOSAxOC40MiA3LjI2IDE3LjI0QzguMjQgMTYuNzUgOC42OCAxNS43MSA4Ljg4IDE0Ljc5QzguMzkgMTQuNTkgNy45NiAxNC4yNyA3LjY0IDEzLjg3QzMuOTUgMTUuODUgMCAxNS4wNyAwIDExLjVDMCA3IDMuNTYgNi44OSA0LjczIDkuMjZDNS4yMyAxMC4yNSA2LjI4IDEwLjY4IDcuMjEgMTAuODdDNy40IDEwLjM5IDcuNzIgOS45NyA4LjEzIDkuNjVDNi4xNCA1Ljk2IDYuOTMgMiAxMC41IDJNMjIgMTNWN0gyNFYxM0gyMk0yMiAxN1YxNUgyNFYxN0gyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5BdXRvID0gXCJNMTIuNSAyQzguOTMgMiA4LjE0IDUuOTYgMTAuMTMgOS42NUM5LjcyIDkuOTcgOS40IDEwLjM5IDkuMjEgMTAuODdDOC4yOCAxMC42OCA3LjIzIDEwLjI1IDYuNzMgOS4yNkM1LjU2IDYuODkgMiA3IDIgMTEuNUMyIDE1LjA3IDUuOTUgMTUuODUgOS42NCAxMy44N0M5Ljk2IDE0LjI3IDEwLjM5IDE0LjU5IDEwLjg4IDE0Ljc5QzEwLjY4IDE1LjcxIDEwLjI0IDE2Ljc1IDkuMjYgMTcuMjRDNi45IDE4LjQyIDcgMjIgMTEuNSAyMkMxMi4zMSAyMiAxMyAyMS43OCAxMy41IDIxLjQxQzEzLjE5IDIwLjY3IDEzIDE5Ljg2IDEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMk0xMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMkMxMyAxMi41NSAxMi41NCAxMyAxMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMkMxMSAxMS40NSAxMS40MyAxMSAxMiAxMU0xOCAxNUMxNi44OSAxNSAxNiAxNS45IDE2IDE3VjIzSDE4VjIxSDIwVjIzSDIyVjE3QzIyIDE1LjkgMjEuMSAxNSAyMCAxNU0xOCAxN0gyMFYxOUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5DaGV2cm9uRG93biA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00xOSAxOS4xN0wyMi4xNyAxNkwyMy41OSAxNy40MUwxOSAyMkwxNC40MSAxNy40MUwxNS44MyAxNkwxOSAxOS4xN1wiO1xyXG5leHBvcnQgdmFyIG1kaUZhbkNoZXZyb25VcCA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00xOSAxNy44M0wxNS44MyAyMUwxNC40MSAxOS41OUwxOSAxNUwyMy41OSAxOS41OUwyMi4xNyAyMUwxOSAxNy44M1wiO1xyXG5leHBvcnQgdmFyIG1kaUZhbk1pbnVzID0gXCJNMTMgMTlDMTMgMTcuNTkgMTMuNSAxNi4zIDE0LjMgMTUuMjhDMTQuMTcgMTQuOTcgMTQuMDMgMTQuNjUgMTMuODYgMTQuMzRDMTQuMjYgMTQgMTQuNTcgMTMuNTkgMTQuNzcgMTMuMTFDMTUuMjYgMTMuMjEgMTUuNzggMTMuMzkgMTYuMjUgMTMuNjdDMTcuMDcgMTMuMjUgMTggMTMgMTkgMTNDMjAuMDUgMTMgMjEuMDMgMTMuMjcgMjEuODkgMTMuNzRDMjEuOTUgMTMuMzcgMjIgMTIuOTYgMjIgMTIuNUMyMiA4LjkyIDE4LjAzIDguMTMgMTQuMzMgMTAuMTNDMTQgOS43MyAxMy41OSA5LjQyIDEzLjExIDkuMjJDMTMuMyA4LjI5IDEzLjc0IDcuMjQgMTQuNzMgNi43NUMxNy4wOSA1LjU3IDE3IDIgMTIuNSAyQzguOTMgMiA4LjE0IDUuOTYgMTAuMTMgOS42NUM5LjcyIDkuOTcgOS40IDEwLjM5IDkuMjEgMTAuODdDOC4yOCAxMC42OCA3LjIzIDEwLjI1IDYuNzMgOS4yNkM1LjU2IDYuODkgMiA3IDIgMTEuNUMyIDE1LjA3IDUuOTUgMTUuODUgOS42NCAxMy44N0M5Ljk2IDE0LjI3IDEwLjM5IDE0LjU5IDEwLjg4IDE0Ljc5QzEwLjY4IDE1LjcxIDEwLjI0IDE2Ljc1IDkuMjYgMTcuMjRDNi45IDE4LjQyIDcgMjIgMTEuNSAyMkMxMi4zMSAyMiAxMyAyMS43OCAxMy41IDIxLjQxQzEzLjE5IDIwLjY3IDEzIDE5Ljg2IDEzIDE5TTEyIDEzQzExLjQzIDEzIDExIDEyLjU1IDExIDEyUzExLjQzIDExIDEyIDExQzEyLjU0IDExIDEzIDExLjQ1IDEzIDEyUzEyLjU0IDEzIDEyIDEzTTIzIDE4VjIwSDE1VjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhbk9mZiA9IFwiTTEyLjUsMkM5LjY0LDIgOC41Nyw0LjU1IDkuMjksNy40N0wxNSwxMy4xNkMxNS44NywxMy4zNyAxNi44MSwxMy44MSAxNy4yOCwxNC43M0MxOC40NiwxNy4xIDIyLjAzLDE3IDIyLjAzLDEyLjVDMjIuMDMsOC45MiAxOC4wNSw4LjEzIDE0LjM1LDEwLjEzQzE0LjAzLDkuNzMgMTMuNjEsOS40MiAxMy4xMyw5LjIyQzEzLjMyLDguMjkgMTMuNzYsNy4yNCAxNC43NSw2Ljc1QzE3LjExLDUuNTcgMTcsMiAxMi41LDJNMy4yOCw0TDIsNS4yN0w0LjQ3LDcuNzNDMy4yMiw3Ljc0IDIsOC44NyAyLDExLjVDMiwxNS4wNyA1Ljk2LDE1Ljg1IDkuNjUsMTMuODdDOS45NywxNC4yNyAxMC40LDE0LjU5IDEwLjg5LDE0Ljc5QzEwLjY5LDE1LjcxIDEwLjI1LDE2Ljc1IDkuMjcsMTcuMjRDNi45MSwxOC40MiA3LDIyIDExLjUsMjJDMTMuOCwyMiAxNC45NCwyMC4zNiAxNC45NCwxOC4yMUwxOC43MywyMkwyMCwyMC43MkwzLjI4LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFuUGx1cyA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00yMCAxNVYxOEgyM1YyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5SZW1vdmUgPSBcIk0xMyAxOUMxMyAxNy41OSAxMy41IDE2LjMgMTQuMyAxNS4yOEMxNC4xNyAxNC45NyAxNC4wMyAxNC42NSAxMy44NiAxNC4zNEMxNC4yNiAxNCAxNC41NyAxMy41OSAxNC43NyAxMy4xMUMxNS4yNiAxMy4yMSAxNS43OCAxMy4zOSAxNi4yNSAxMy42N0MxNy4wNyAxMy4yNSAxOCAxMyAxOSAxM0MyMC4wNSAxMyAyMS4wMyAxMy4yNyAyMS44OSAxMy43NEMyMS45NSAxMy4zNyAyMiAxMi45NiAyMiAxMi41QzIyIDguOTIgMTguMDMgOC4xMyAxNC4zMyAxMC4xM0MxNCA5LjczIDEzLjU5IDkuNDIgMTMuMTEgOS4yMkMxMy4zIDguMjkgMTMuNzQgNy4yNCAxNC43MyA2Ljc1QzE3LjA5IDUuNTcgMTcgMiAxMi41IDJDOC45MyAyIDguMTQgNS45NiAxMC4xMyA5LjY1QzkuNzIgOS45NyA5LjQgMTAuMzkgOS4yMSAxMC44N0M4LjI4IDEwLjY4IDcuMjMgMTAuMjUgNi43MyA5LjI2QzUuNTYgNi44OSAyIDcgMiAxMS41QzIgMTUuMDcgNS45NSAxNS44NSA5LjY0IDEzLjg3QzkuOTYgMTQuMjcgMTAuMzkgMTQuNTkgMTAuODggMTQuNzlDMTAuNjggMTUuNzEgMTAuMjQgMTYuNzUgOS4yNiAxNy4yNEM2LjkgMTguNDIgNyAyMiAxMS41IDIyQzEyLjMxIDIyIDEzIDIxLjc4IDEzLjUgMjEuNDFDMTMuMTkgMjAuNjcgMTMgMTkuODYgMTMgMTlNMTIgMTNDMTEuNDMgMTMgMTEgMTIuNTUgMTEgMTJTMTEuNDMgMTEgMTIgMTFDMTIuNTQgMTEgMTMgMTEuNDUgMTMgMTJTMTIuNTQgMTMgMTIgMTNNMjIuNTQgMTYuODhMMjAuNDEgMTlMMjIuNTQgMjEuMTJMMjEuMTIgMjIuNTRMMTkgMjAuNDFMMTYuODggMjIuNTRMMTUuNDcgMjEuMTJMMTcuNTkgMTlMMTUuNDcgMTYuODhMMTYuODggMTUuNDdMMTkgMTcuNTlMMjEuMTIgMTUuNDdMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFuU3BlZWQxID0gXCJNMTMgMTlDMTMgMTcuNTkgMTMuNSAxNi4zIDE0LjMgMTUuMjhDMTQuMTcgMTQuOTcgMTQuMDMgMTQuNjUgMTMuODYgMTQuMzRDMTQuMjYgMTQgMTQuNTcgMTMuNTkgMTQuNzcgMTMuMTFDMTUuMjYgMTMuMjEgMTUuNzggMTMuMzkgMTYuMjUgMTMuNjdDMTcuMDcgMTMuMjUgMTggMTMgMTkgMTNDMjAuMDUgMTMgMjEuMDMgMTMuMjcgMjEuODkgMTMuNzRDMjEuOTUgMTMuMzcgMjIgMTIuOTYgMjIgMTIuNUMyMiA4LjkyIDE4LjAzIDguMTMgMTQuMzMgMTAuMTNDMTQgOS43MyAxMy41OSA5LjQyIDEzLjExIDkuMjJDMTMuMyA4LjI5IDEzLjc0IDcuMjQgMTQuNzMgNi43NUMxNy4wOSA1LjU3IDE3IDIgMTIuNSAyQzguOTMgMiA4LjE0IDUuOTYgMTAuMTMgOS42NUM5LjcyIDkuOTcgOS40IDEwLjM5IDkuMjEgMTAuODdDOC4yOCAxMC42OCA3LjIzIDEwLjI1IDYuNzMgOS4yNkM1LjU2IDYuODkgMiA3IDIgMTEuNUMyIDE1LjA3IDUuOTUgMTUuODUgOS42NCAxMy44N0M5Ljk2IDE0LjI3IDEwLjM5IDE0LjU5IDEwLjg4IDE0Ljc5QzEwLjY4IDE1LjcxIDEwLjI0IDE2Ljc1IDkuMjYgMTcuMjRDNi45IDE4LjQyIDcgMjIgMTEuNSAyMkMxMi4zMSAyMiAxMyAyMS43OCAxMy41IDIxLjQxQzEzLjE5IDIwLjY3IDEzIDE5Ljg2IDEzIDE5TTEyIDEzQzExLjQzIDEzIDExIDEyLjU1IDExIDEyUzExLjQzIDExIDEyIDExQzEyLjU0IDExIDEzIDExLjQ1IDEzIDEyUzEyLjU0IDEzIDEyIDEzTTE3IDE1VjE3SDE4VjIzSDIwVjE1SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhblNwZWVkMiA9IFwiTTEzIDE5QzEzIDE3LjU5IDEzLjUgMTYuMyAxNC4zIDE1LjI4QzE0LjE3IDE0Ljk3IDE0LjAzIDE0LjY1IDEzLjg2IDE0LjM0QzE0LjI2IDE0IDE0LjU3IDEzLjU5IDE0Ljc3IDEzLjExQzE1LjI2IDEzLjIxIDE1Ljc4IDEzLjM5IDE2LjI1IDEzLjY3QzE3LjA3IDEzLjI1IDE4IDEzIDE5IDEzQzIwLjA1IDEzIDIxLjAzIDEzLjI3IDIxLjg5IDEzLjc0QzIxLjk1IDEzLjM3IDIyIDEyLjk2IDIyIDEyLjVDMjIgOC45MiAxOC4wMyA4LjEzIDE0LjMzIDEwLjEzQzE0IDkuNzMgMTMuNTkgOS40MiAxMy4xMSA5LjIyQzEzLjMgOC4yOSAxMy43NCA3LjI0IDE0LjczIDYuNzVDMTcuMDkgNS41NyAxNyAyIDEyLjUgMkM4LjkzIDIgOC4xNCA1Ljk2IDEwLjEzIDkuNjVDOS43MiA5Ljk3IDkuNCAxMC4zOSA5LjIxIDEwLjg3QzguMjggMTAuNjggNy4yMyAxMC4yNSA2LjczIDkuMjZDNS41NiA2Ljg5IDIgNyAyIDExLjVDMiAxNS4wNyA1Ljk1IDE1Ljg1IDkuNjQgMTMuODdDOS45NiAxNC4yNyAxMC4zOSAxNC41OSAxMC44OCAxNC43OUMxMC42OCAxNS43MSAxMC4yNCAxNi43NSA5LjI2IDE3LjI0QzYuOSAxOC40MiA3IDIyIDExLjUgMjJDMTIuMzEgMjIgMTMgMjEuNzggMTMuNSAyMS40MUMxMy4xOSAyMC42NyAxMyAxOS44NiAxMyAxOU0xMiAxM0MxMS40MyAxMyAxMSAxMi41NSAxMSAxMlMxMS40MyAxMSAxMiAxMUMxMi41NCAxMSAxMyAxMS40NSAxMyAxMlMxMi41NCAxMyAxMiAxM00xNiAxNVYxN0gxOVYxOEgxOEMxNi45IDE4IDE2IDE4LjkgMTYgMjBWMjNIMjFWMjFIMThWMjBIMTlDMjAuMTEgMjAgMjEgMTkuMTEgMjEgMThWMTdDMjEgMTUuOSAyMC4xMSAxNSAxOSAxNUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGYW5TcGVlZDMgPSBcIk0xMyAxOUMxMyAxNy41OSAxMy41IDE2LjMgMTQuMyAxNS4yOEMxNC4xNyAxNC45NyAxNC4wMyAxNC42NSAxMy44NiAxNC4zNEMxNC4yNiAxNCAxNC41NyAxMy41OSAxNC43NyAxMy4xMUMxNS4yNiAxMy4yMSAxNS43OCAxMy4zOSAxNi4yNSAxMy42N0MxNy4wNyAxMy4yNSAxOCAxMyAxOSAxM0MyMC4wNSAxMyAyMS4wMyAxMy4yNyAyMS44OSAxMy43NEMyMS45NSAxMy4zNyAyMiAxMi45NiAyMiAxMi41QzIyIDguOTIgMTguMDMgOC4xMyAxNC4zMyAxMC4xM0MxNCA5LjczIDEzLjU5IDkuNDIgMTMuMTEgOS4yMkMxMy4zIDguMjkgMTMuNzQgNy4yNCAxNC43MyA2Ljc1QzE3LjA5IDUuNTcgMTcgMiAxMi41IDJDOC45MyAyIDguMTQgNS45NiAxMC4xMyA5LjY1QzkuNzIgOS45NyA5LjQgMTAuMzkgOS4yMSAxMC44N0M4LjI4IDEwLjY4IDcuMjMgMTAuMjUgNi43MyA5LjI2QzUuNTYgNi44OSAyIDcgMiAxMS41QzIgMTUuMDcgNS45NSAxNS44NSA5LjY0IDEzLjg3QzkuOTYgMTQuMjcgMTAuMzkgMTQuNTkgMTAuODggMTQuNzlDMTAuNjggMTUuNzEgMTAuMjQgMTYuNzUgOS4yNiAxNy4yNEM2LjkgMTguNDIgNyAyMiAxMS41IDIyQzEyLjMxIDIyIDEzIDIxLjc4IDEzLjUgMjEuNDFDMTMuMTkgMjAuNjcgMTMgMTkuODYgMTMgMTlNMTIgMTNDMTEuNDMgMTMgMTEgMTIuNTUgMTEgMTJTMTEuNDMgMTEgMTIgMTFDMTIuNTQgMTEgMTMgMTEuNDUgMTMgMTJTMTIuNTQgMTMgMTIgMTNNMjEgMjFWMjAuNUMyMSAxOS42NyAyMC4zMyAxOSAxOS41IDE5QzIwLjMzIDE5IDIxIDE4LjMzIDIxIDE3LjVWMTdDMjEgMTUuODkgMjAuMSAxNSAxOSAxNUgxNlYxN0gxOVYxOEgxN1YyMEgxOVYyMUgxNlYyM0gxOUMyMC4xMSAyMyAyMSAyMi4xMSAyMSAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUZhc3RGb3J3YXJkID0gXCJNMTMsNlYxOEwyMS41LDEyTTQsMThMMTIuNSwxMkw0LDZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFzdEZvcndhcmQxMCA9IFwiTTEwLDEyVjIySDhWMTRINlYxMkgxME0xOCwxNFYyMEMxOCwyMS4xMSAxNy4xMSwyMiAxNiwyMkgxNEEyLDIgMCAwLDEgMTIsMjBWMTRBMiwyIDAgMCwxIDE0LDEySDE2QzE3LjExLDEyIDE4LDEyLjkgMTgsMTRNMTQsMTRWMjBIMTZWMTRIMTRNMTEuNSwzQzE0LjE1LDMgMTYuNTUsNCAxOC40LDUuNkwyMSwzVjEwSDE0TDE2LjYyLDcuMzhDMTUuMjMsNi4yMiAxMy40Niw1LjUgMTEuNSw1LjVDNy45Niw1LjUgNC45NSw3LjgxIDMuOSwxMUwxLjUzLDEwLjIyQzIuOTIsNi4wMyA2Ljg1LDMgMTEuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhc3RGb3J3YXJkMzAgPSBcIk0xMS41LDNDNi44NSwzIDIuOTIsNi4wMyAxLjUzLDEwLjIyTDMuOSwxMUM0Ljk1LDcuODEgNy45Niw1LjUgMTEuNSw1LjVDMTMuNDYsNS41IDE1LjIzLDYuMjIgMTYuNjIsNy4zOEwxNCwxMEgyMVYzTDE4LjQsNS42QzE2LjU1LDQgMTQuMTUsMyAxMS41LDNNMTksMTRWMjBDMTksMjEuMTEgMTguMTEsMjIgMTcsMjJIMTVBMiwyIDAgMCwxIDEzLDIwVjE0QTIsMiAwIDAsMSAxNSwxMkgxN0MxOC4xMSwxMiAxOSwxMi45IDE5LDE0TTE1LDE0VjIwSDE3VjE0SDE1TTExLDIwQzExLDIxLjExIDEwLjEsMjIgOSwyMkg1VjIwSDlWMThIN1YxNkg5VjE0SDVWMTJIOUEyLDIgMCAwLDEgMTEsMTRWMTUuNUExLjUsMS41IDAgMCwxIDkuNSwxN0ExLjUsMS41IDAgMCwxIDExLDE4LjVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFzdEZvcndhcmQ1ID0gXCJNMTEuNSAzQzE0LjE1IDMgMTYuNTUgNCAxOC40IDUuNkwyMSAzVjEwSDE0TDE2LjYyIDcuMzhDMTUuMjMgNi4yMiAxMy40NiA1LjUgMTEuNSA1LjVDNy45NiA1LjUgNC45NSA3LjgxIDMuOSAxMUwxLjUzIDEwLjIyQzIuOTIgNi4wMyA2Ljg1IDMgMTEuNSAzTTkgMTJIMTVWMTRIMTFWMTZIMTNDMTQuMTEgMTYgMTUgMTYuOSAxNSAxOFYyMEMxNSAyMS4xMSAxNC4xMSAyMiAxMyAyMkg5VjIwSDEzVjE4SDlWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmFzdEZvcndhcmQ2MCA9IFwiTTExLjUgM0M2LjggMyAyLjkgNiAxLjUgMTAuMkwzLjkgMTFDNC45IDcuOCA4IDUuNSAxMS41IDUuNUMxMy41IDUuNSAxNS4yIDYuMiAxNi42IDcuNEwxNCAxMEgyMVYzTDE4LjQgNS42QzE2LjUgNCAxNC4xIDMgMTEuNSAzTTE5IDE0VjIwQzE5IDIxLjEgMTguMSAyMiAxNyAyMkgxNUMxMy45IDIyIDEzIDIxLjEgMTMgMjBWMTRDMTMgMTIuOSAxMy45IDEyIDE1IDEySDE3QzE4LjEgMTIgMTkgMTIuOSAxOSAxNE0xNSAxNFYyMEgxN1YxNEgxNU03IDEyQzUuOSAxMiA1IDEyLjkgNSAxNFYyMEM1IDIxLjEgNS45IDIyIDcgMjJIOUMxMC4xIDIyIDExIDIxLjEgMTEgMjBWMThDMTEgMTYuOSAxMC4xIDE2IDkgMTZIN1YxNEgxMVYxMkg3TTcgMThIOVYyMEg3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZhc3RGb3J3YXJkT3V0bGluZSA9IFwiTTE1LDkuOUwxOCwxMkwxNSwxNC4xVjkuOU02LDkuOUw5LDEyTDYsMTQuMVY5LjlNMTMsNlYxOEwyMS41LDEyTDEzLDZNNCw2VjE4TDEyLjUsMTJMNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZheCA9IFwiTTExLDZIMTZWOEgxMVY2TTgsOVYzSDE5VjlBMywzIDAgMCwxIDIyLDEyVjE4SDE5VjIxSDhWMThIN1Y5SDhNMTAsNVY5SDE3VjVIMTBNMTAsMTVWMTlIMTdWMTVIMTBNMTksMTFBMSwxIDAgMCwwIDE4LDEyQTEsMSAwIDAsMCAxOSwxM0ExLDEgMCAwLDAgMjAsMTJBMSwxIDAgMCwwIDE5LDExTTQsOUg1QTEsMSAwIDAsMSA2LDEwVjE3QTEsMSAwIDAsMSA1LDE4SDRBMiwyIDAgMCwxIDIsMTZWMTFBMiwyIDAgMCwxIDQsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGZWF0aGVyID0gXCJNMjIsMkMyMiwyIDE0LjM2LDEuNjMgOC4zNCw5Ljg4QzMuNzIsMTYuMjEgMiwyMiAyLDIyTDMuOTQsMjFDNS4zOCwxOC41IDYuMTMsMTcuNDcgNy41NCwxNkMxMC4wNywxNi43NCAxMi43MSwxNi42NSAxNSwxNEMxMywxMy40NCAxMS40LDEzLjU3IDkuMDQsMTMuODFDMTEuNjksMTIgMTMuNSwxMS42IDE2LDEyTDE3LDEwQzE1LjIsOS42NiAxNCw5LjYzIDEyLjIyLDEwLjA0QzE0LjE5LDguNjUgMTUuNTYsNy44NyAxOCw4TDE5LjIxLDYuMDdDMTcuNjUsNS45NiAxNi43MSw2LjEzIDE0LjkyLDYuNTdDMTYuNTMsNS4xMSAxOCw0LjQ1IDIwLjE0LDQuMzJDMjAuMTQsNC4zMiAyMS4xOSwyLjQzIDIyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVhdHVyZVNlYXJjaCA9IFwiTTIwLDIwQTIsMiAwIDAsMSAxOCwyMkg0QTIsMiAwIDAsMSAyLDIwVjZBMiwyIDAgMCwxIDQsNEg5LjVDOS4yLDQuOCA5LDUuNiA5LDYuNUM5LDEwLjEgMTEuOSwxMyAxNS41LDEzQzE2LjMsMTMgMTcsMTIuOSAxNy42LDEyLjZMMjAsMTVWMjBNMTkuMyw4LjlDMTkuNyw4LjIgMjAsNy40IDIwLDYuNUMyMCw0IDE4LDIgMTUuNSwyQzEzLDIgMTEsNCAxMSw2LjVDMTEsOSAxMywxMSAxNS41LDExQzE2LjQsMTEgMTcuMiwxMC43IDE3LjksMTAuM0wyMSwxMy40TDIyLjQsMTJMMTkuMyw4LjlNMTUuNSw5QzE0LjEsOSAxMyw3LjkgMTMsNi41QzEzLDUuMSAxNC4xLDQgMTUuNSw0QzE2LjksNCAxOCw1LjEgMTgsNi41QzE4LDcuOSAxNi45LDkgMTUuNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZlYXR1cmVTZWFyY2hPdXRsaW5lID0gXCJNMTUuNSwyQzEzLDIgMTEsNCAxMSw2LjVDMTEsOSAxMywxMSAxNS41LDExQzE2LjQsMTEgMTcuMiwxMC43IDE3LjksMTAuM0wyMSwxMy40TDIyLjQsMTJMMTkuMyw4LjlDMTkuNyw4LjIgMjAsNy40IDIwLDYuNUMyMCw0IDE4LDIgMTUuNSwyTTQsNEEyLDIgMCAwLDAgMiw2VjIwQTIsMiAwIDAsMCA0LDIySDE4QTIsMiAwIDAsMCAyMCwyMFYxNUwxOCwxM1YyMEg0VjZIOS4wM0M5LjA5LDUuMyA5LjI2LDQuNjUgOS41LDRINE0xNS41LDRDMTYuOSw0IDE4LDUuMSAxOCw2LjVDMTgsNy45IDE2LjksOSAxNS41LDlDMTQuMSw5IDEzLDcuOSAxMyw2LjVDMTMsNS4xIDE0LjEsNCAxNS41LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVkb3JhID0gXCJNNC40LDIyQzMuMDcsMjIgMiwyMC45MyAyLDE5LjZWMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkg0LjRNMTQuOSw0LjRDMTIuMyw0LjQgMTAuMiw2LjUgMTAuMiw5LjFWMTEuNkg4LjNDNy42OSwxMS42IDcuMiwxMi4wOSA3LjIsMTIuN0M3LjIsMTMuMzEgNy42OSwxMy44IDguMywxMy44SDkuOEMxMCwxMy44IDEwLjIsMTQgMTAuMiwxNC4yVjE2LjNDMTAuMiwxNy42OCA5LjA4LDE4LjggNy43LDE4LjhDNy41NSwxOC44IDcuNDEsMTguNzkgNy4yNywxOC43NkM3LjE5LDE4Ljc0IDcuMSwxOC43MyA3LDE4LjczQzYuNDEsMTguNzMgNS45MSwxOS4yMyA1LjkxLDE5LjgzQzUuOTEsMjAuMzcgNi4zLDIwLjgxIDYuOCwyMC45MVYyMC45MUM3LjA5LDIwLjk3IDcuMzksMjEgNy43LDIxQzEwLjMsMjEgMTIuNCwxOC45IDEyLjQsMTYuM1YxMy44SDE0LjNDMTQuOTEsMTMuOCAxNS40LDEzLjMxIDE1LjQsMTIuN0ExLjEsMS4xIDAgMCwwIDE0LjMsMTEuNkgxMi44QTAuNCwwLjQgMCAwLDEgMTIuNCwxMS4yVjkuMUEyLjUsMi41IDAgMCwxIDE0LjksNi42QzE1LjA1LDYuNiAxNS4yLDYuNjEgMTUuMzQsNi42NEMxNS40Miw2LjY2IDE1LjUsNi42NyAxNS41OSw2LjY3QzE2LjE5LDYuNjcgMTYuNjksNi4xNyAxNi42OSw1LjU3QzE2LjY5LDUuMDMgMTYuMyw0LjU4IDE1LjgsNC41VjQuNUMxNS41LDQuNDMgMTUuMjEsNC40IDE0LjksNC40TTYuOCwxMi43QzYuOCwxMi41OCA2LjgxLDEyLjQ2IDYuODQsMTIuMzRMNi4zMSwxMS44MUM2LjEsMTEuODcgNS44OSwxMS45NSA1LjcsMTIuMDVMNi45MSwxMy4yNkM2Ljg0LDEzLjA4IDYuOCwxMi45IDYuOCwxMi43TTYuNTQsMTguNUg2LjQ3TDYuNSwxOC41SDYuNTRNNS42MSwxOS44M0M1LjYxLDE5LjYgNS42NywxOS4zOCA1Ljc3LDE5LjE5TDMsMTYuNDJDMywxNi43NiAzLjA1LDE3LjA4IDMuMTMsMTcuNEw1LjYxLDE5Ljg4VjE5LjgzTTUuODYsMjAuNjNDNS43NywyMC41IDUuNzEsMjAuMzcgNS42NywyMC4yMkwzLjI0LDE3Ljc5QzMuNjcsMTkuMDcgNC42MywyMC4xIDUuODYsMjAuNjNNMTUuOCwxMi43QzE1LjgsMTIuODIgMTUuNzksMTIuOTQgMTUuNzYsMTMuMDZMMTYuMjksMTMuNTlDMTYuNSwxMy41MyAxNi43MSwxMy40NSAxNi45LDEzLjM1TDE1LjY5LDEyLjE0QzE1Ljc2LDEyLjMyIDE1LjgsMTIuNSAxNS44LDEyLjdNMTYuMDYsNi44OEwxNi4xMyw2LjkyTDE2LjA4LDYuODhIMTYuMDZNMTcsNS41N0MxNyw1LjggMTYuOTMsNiAxNi44Myw2LjIxTDE5LjYsOUMxOS41OSw4LjY0IDE5LjU1LDguMzIgMTkuNDcsOEwxNyw1LjVWNS41N00xNi43NCw0Ljc3QzE2LjgzLDQuOSAxNi44OSw1LjAzIDE2LjkzLDUuMThMMTkuMzYsNy42MUMxOC45Myw2LjMzIDE3Ljk3LDUuMyAxNi43NCw0Ljc3TTE2LjA3LDEzLjY1TDE1LjY5LDEzLjI3QzE1LjYxLDEzLjQ2IDE1LjUsMTMuNjMgMTUuMzUsMTMuNzhWMTMuNzhDMTUuNiwxMy43NiAxNS44NCwxMy43MSAxNi4wNywxMy42NU0xOC4yMywxMi40MkwxNi42NywxMC44NkMxNi41MywxMSAxNi4zNywxMS4xMyAxNi4yLDExLjI0TDE3Ljc4LDEyLjgyQzE3Ljk0LDEyLjY5IDE4LjA5LDEyLjU2IDE4LjIzLDEyLjQyTTE3LjYyLDEyLjk0TDE2LDExLjM0QzE1LjgyLDExLjQ0IDE1LjYxLDExLjUgMTUuMzksMTEuNTVMMTcuMDksMTMuMjZDMTcuMjcsMTMuMTYgMTcuNDUsMTMuMDUgMTcuNjIsMTIuOTRNMTguNzUsMTEuOEwxNy4xNSwxMC4yQzE3LjA1LDEwLjM5IDE2Ljk0LDEwLjU2IDE2LjgxLDEwLjcxTDE4LjM3LDEyLjI3QzE4LjUsMTIuMTIgMTguNjMsMTEuOTcgMTguNzUsMTEuOE0xOS4xNiwxMS4wOUwxNy4zOSw5LjMyQzE3LjM3LDkuNTYgMTcuMzIsOS43OSAxNy4yMywxMEwxOC44NiwxMS42M0MxOC45NywxMS40NiAxOS4wNywxMS4yOCAxOS4xNiwxMS4wOU0xOS42LDkuMjZMMTYuNzIsNi4zOEMxNi42LDYuNTUgMTYuNDUsNi42OSAxNi4yOCw2Ljc5TDE5LjUsMTBDMTkuNTYsOS43NyAxOS41OSw5LjUgMTkuNiw5LjI2TTE5LjQ2LDEwLjI1TDE3LjA4LDcuODdDMTcuMjcsOC4yMiAxNy4zOSw4LjYyIDE3LjQsOS4wNEwxOS4yNSwxMC44OUMxOS4zMywxMC42OCAxOS40LDEwLjQ3IDE5LjQ2LDEwLjI1TTQuODIsMTIuNThDNC42NiwxMi43MSA0LjUsMTIuODQgNC4zNywxM0w1LjkzLDE0LjU0QzYuMDcsMTQuNCA2LjIzLDE0LjI3IDYuNCwxNC4xNkw0LjgyLDEyLjU4TTUuNSwxMi4xNEM1LjMzLDEyLjI0IDUuMTUsMTIuMzUgNSwxMi40Nkw2LjU4LDE0LjA2QzYuNzgsMTMuOTYgNywxMy44OSA3LjIxLDEzLjg1TDUuNSwxMi4xNE03LjI1LDExLjYyQzcsMTEuNjQgNi43NiwxMS42OSA2LjUzLDExLjc1TDYuOTEsMTIuMTNDNywxMS45NCA3LjExLDExLjc3IDcuMjUsMTEuNjJWMTEuNjJNMy4wOSwxNS4zOEMzLjA0LDE1LjYzIDMsMTUuODggMywxNi4xNEw1Ljg4LDE5QzYsMTguODUgNi4xNSwxOC43MSA2LjMyLDE4LjYxTDMuMDksMTUuMzhNMy43NCwxMy43N0MzLjYzLDEzLjk0IDMuNTMsMTQuMTIgMy40NCwxNC4zMUw1LjIxLDE2LjA4QzUuMjMsMTUuODQgNS4yOCwxNS42MSA1LjM3LDE1LjRMMy43NCwxMy43N00zLjM1LDE0LjVDMy4yNywxNC43MiAzLjIsMTQuOTMgMy4xNCwxNS4xNUw1LjUsMTcuNTNDNS4zMywxNy4xOCA1LjIxLDE2Ljc4IDUuMiwxNi4zNkwzLjM1LDE0LjVNNC4yMywxMy4xM0M0LjEsMTMuMjggMy45NywxMy40MyAzLjg1LDEzLjZMNS40NSwxNS4yQzUuNTUsMTUgNS42NiwxNC44NCA1Ljc5LDE0LjY5TDQuMjMsMTMuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVuY2luZyA9IFwiTTQuNSAxNy40Mkw1LjU4IDE4LjVMMy4yOCAyMC43OEMzIDIxLjA3IDIuNSAyMS4wNyAyLjIyIDIwLjc4UzEuOTMgMjAgMi4yMiAxOS43Mkw0LjUgMTcuNDJNMTguMjkgNS40MkwxOC4yOSA0TDEyIDEwLjI5TDUuNzEgNEw1LjcxIDUuNDJMMTEuMjkgMTFMNy41IDE0LjgxQzYuMzIgMTMuOTcgNC42OCAxNC4wNyAzLjYzIDE1LjEyTDcuODggMTkuMzdDOC45MyAxOC4zMiA5LjAzIDE2LjY4IDguMiAxNS41TDE4LjI5IDUuNDJNMjEuNzggMTkuNzJMMTkuNSAxNy40MkwxOC40MiAxOC41TDIwLjcyIDIwLjc4QzIxIDIxLjA3IDIxLjUgMjEuMDcgMjEuNzggMjAuNzhTMjIuMDcgMjAgMjEuNzggMTkuNzJNMTYuNSAxNC44MUwxMy40MiAxMS43MUwxMi43MSAxMi40MkwxNS44MSAxNS41QzE0Ljk3IDE2LjY4IDE1LjA3IDE4LjMyIDE2LjEyIDE5LjM3TDIwLjM3IDE1LjEyQzE5LjMyIDE0LjA3IDE3LjY4IDEzLjk3IDE2LjUgMTQuODFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVycmlzV2hlZWwgPSBcIk0xMiwxOUMxMi44NiwxOSAxMy41OSwxOS41NCAxMy44NywyMC4yOUMxNC40MiwyMC4xNyAxNC45NSwyMCAxNS40NiwxOS43N0wxMy43LDE1LjYyQzEzLjE4LDE1Ljg3IDEyLjYxLDE2IDEyLDE2QzExLjM5LDE2IDEwLjgyLDE1Ljg3IDEwLjMsMTUuNjJMOC41NCwxOS43N0M5LjA1LDIwIDkuNTgsMjAuMTcgMTAuMTMsMjAuMjlDMTAuNDEsMTkuNTQgMTEuMTQsMTkgMTIsMTlNMTguMjUsMTcuNzZDMTgsMTcuNDIgMTcuODEsMTcgMTcuODEsMTYuNUMxNy44MSwxNS40MSAxOC43MSwxNC41IDE5LjgxLDE0LjVMMjAuMTIsMTQuNTNDMjAuMzcsMTMuNzMgMjAuNSwxMi44OCAyMC41LDEyQzIwLjUsMTEuMTIgMjAuMzcsMTAuMjcgMjAuMTIsOS41SDE5LjgxQzE4LjcsOS41IDE3LjgxLDguNjEgMTcuODEsNy41QzE3LjgxLDcgMTcuOTcsNi41OSAxOC4yNSw2LjI0QzE3LjEsNSAxNS41OSw0LjA5IDEzLjg3LDMuNzFDMTMuNTksNC40NiAxMi44Niw1IDEyLDVDMTEuMTQsNSAxMC40MSw0LjQ2IDEwLjEzLDMuNzFDOC40MSw0LjA5IDYuOSw1IDUuNzUsNi4yNEM2LjAzLDYuNTkgNi4yLDcuMDMgNi4yLDcuNUM2LjIsOC42MSA1LjMsOS41IDQuMiw5LjVIMy44OEMzLjYzLDEwLjI4IDMuNSwxMS4xMiAzLjUsMTJDMy41LDEyLjg5IDMuNjQsMTMuNzQgMy44OSwxNC41NUw0LjIsMTQuNUM1LjMxLDE0LjUgNi4yLDE1LjQyIDYuMiwxNi41QzYuMiwxNyA2LjA0LDE3LjQzIDUuNzYsMTcuNzdDNi4wOCwxOC4xMiA2LjQ0LDE4LjQ0IDYuODEsMTguNzNMOC43MSwxNC4yN0M4LjI2LDEzLjYyIDgsMTIuODQgOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJDMTYsMTIuODQgMTUuNzQsMTMuNjIgMTUuMjksMTQuMjdMMTcuMTksMTguNzNDMTcuNTcsMTguNDQgMTcuOTIsMTguMTEgMTguMjUsMTcuNzZNMTIsMjNDMTEsMjMgMTAuMTYsMjIuMjYgMTAsMjEuMjlDOS4zNywyMS4xNiA4Ljc1LDIwLjk1IDguMTUsMjAuNjlMNy4xNywyM0g1TDYuNDEsMTkuNjhDNS44OCwxOS4zIDUuMzksMTguODYgNC45NiwxOC4zN0M0LjcyLDE4LjQ3IDQuNDcsMTguNSA0LjIsMTguNUEyLDIgMCAwLDEgMi4yLDE2LjVDMi4yLDE1Ljg4IDIuNSwxNS4zMiAyLjk3LDE0Ljk1QzIuNjYsMTQgMi41LDEzLjAzIDIuNSwxMkMyLjUsMTEgMi42NiwxMCAyLjk2LDkuMDhDMi41LDguNzEgMi4yLDguMTUgMi4yLDcuNUMyLjIsNi40MSAzLjA5LDUuNSA0LjIsNS41QzQuNDYsNS41IDQuNzEsNS41NiA0LjkzLDUuNjVDNi4yNSw0LjE4IDgsMy4xMyAxMCwyLjcxQzEwLjE2LDEuNzQgMTEsMSAxMiwxQzEzLDEgMTMuODQsMS43NCAxNCwyLjcxQzE2LDMuMTMgMTcuNzQsNC4xOCAxOS4wNiw1LjY0QzE5LjI5LDUuNTUgMTkuNTQsNS41IDE5LjgxLDUuNUEyLDIgMCAwLDEgMjEuODEsNy41QzIxLjgxLDguMTQgMjEuNSw4LjcxIDIxLjA0LDkuMDdDMjEuMzQsMTAgMjEuNSwxMSAyMS41LDEyQzIxLjUsMTMgMjEuMzQsMTQgMjEuMDQsMTQuOTNDMjEuNSwxNS4zIDIxLjgxLDE1Ljg3IDIxLjgxLDE2LjVDMjEuODEsMTcuNjIgMjAuOTIsMTguNSAxOS44MSwxOC41QzE5LjU0LDE4LjUgMTkuMjksMTguNDYgMTkuMDUsMTguMzZDMTguNjEsMTguODUgMTguMTIsMTkuMjkgMTcuNTksMTkuNjhMMTksMjNIMTYuODNMMTUuODUsMjAuNjlDMTUuMjUsMjAuOTUgMTQuNjMsMjEuMTYgMTQsMjEuMjlDMTMuODQsMjIuMjYgMTMsMjMgMTIsMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmVycnkgPSBcIk02LDZIMThWOS45NkwxMiw4TDYsOS45Nk0zLjk0LDE5SDRDNS42LDE5IDcsMTguMTIgOCwxN0M5LDE4LjEyIDEwLjQsMTkgMTIsMTlDMTMuNiwxOSAxNSwxOC4xMiAxNiwxN0MxNywxOC4xMiAxOC40LDE5IDIwLDE5SDIwLjA1TDIxLjk1LDEyLjMxQzIyLjAzLDEyLjA2IDIyLDExLjc4IDIxLjg5LDExLjU0QzIxLjc2LDExLjMgMjEuNTUsMTEuMTIgMjEuMjksMTEuMDRMMjAsMTAuNjJWNkMyMCw0Ljg5IDE5LjEsNCAxOCw0SDE1VjFIOVY0SDZBMiwyIDAgMCwwIDQsNlYxMC42MkwyLjcxLDExLjA0QzIuNDUsMTEuMTIgMi4yNCwxMS4zIDIuMTEsMTEuNTRDMiwxMS43OCAxLjk3LDEyLjA2IDIuMDUsMTIuMzFNMjAsMjFDMTguNjEsMjEgMTcuMjIsMjAuNTMgMTYsMTkuNjdDMTMuNTYsMjEuMzggMTAuNDQsMjEuMzggOCwxOS42N0M2Ljc4LDIwLjUzIDUuMzksMjEgNCwyMUgyVjIzSDRDNS4zNywyMyA2Ljc0LDIyLjY1IDgsMjJDMTAuNSwyMy4zIDEzLjUsMjMuMyAxNiwyMkMxNy4yNiwyMi42NSAxOC42MiwyMyAyMCwyM0gyMlYyMUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlID0gXCJNMTMsOVYzLjVMMTguNSw5TTYsMkM0Ljg5LDIgNCwyLjg5IDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUFjY291bnQgPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTE0LDIwVjE5QzE0LDE3LjY3IDExLjMzLDE3IDEwLDE3QzguNjcsMTcgNiwxNy42NyA2LDE5VjIwSDE0TTEwLDEyQTIsMiAwIDAsMCA4LDE0QTIsMiAwIDAsMCAxMCwxNkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDEwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVBY2NvdW50T3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xMyAxM0MxMyAxNC4xIDEyLjEgMTUgMTEgMTVTOSAxNC4xIDkgMTMgOS45IDExIDExIDExIDEzIDExLjkgMTMgMTNNMTUgMThWMTlIN1YxOEM3IDE2LjY3IDkuNjcgMTYgMTEgMTZTMTUgMTYuNjcgMTUgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUFsZXJ0ID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk05IDE5SDdWMTdIOU05IDE1SDdWOUg5TTEzIDlWMy41TDE4LjUgOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQWxlcnRPdXRsaW5lID0gXCJNMTAgMThIOFYxNkgxMFYxOE0xMCAxNEg4VjhIMTBWMTRNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ2FiaW5ldCA9IFwiTTE0LDhIMTBWNkgxNFY4TTIwLDRWMjBDMjAsMjEuMTEgMTkuMTEsMjIgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMTEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMThDMTkuMTEsMiAyMCwyLjkgMjAsNE0xOCwxM0g2VjIwSDE4VjEzTTE4LDRINlYxMUgxOFY0TTE0LDE1SDEwVjE3SDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDYWQgPSBcIk02IDJDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOEMxOS4xIDIyIDIwIDIxLjEgMjAgMjBWOEwxNCAyTTEzIDMuNUwxOC41IDlIMTNNOS44OCA5LjI1SDExLjEyVjEwLjE5QzExLjgxIDEwLjE4IDEyLjM4IDEwLjc1IDEyLjM4IDExLjQ0VjEzLjVMMTIuMjYgMTMuNjNMMTMuMTUgMTUuMTdDMTMuNDcgMTQuNjcgMTMuNjMgMTQuMDkgMTMuNjIgMTMuNUgxNC44OEMxNC44OCAxNC41NCAxNC41IDE1LjU1IDEzLjgzIDE2LjM1TDE1LjUgMTkuMjVWMjAuNUwxNC40MiAxOS44OEwxMi44NyAxNy4xOUMxMi4xNyAxNy42NSAxMS4zNCAxNy44OSAxMC41IDE3Ljg5QzkuNjYgMTcuODkgOC44NCAxNy42NSA4LjEzIDE3LjE5TDYuNTggMTkuODhMNS41IDIwLjVWMTkuMjVMOC43NCAxMy42M0w4LjYyIDEzLjVWMTEuNDRDOC42MiAxMC43NSA5LjE5IDEwLjE4IDkuODggMTAuMTlNMTAuNSAxMS40NEM5LjgxIDExLjQ0IDkuNDYgMTIuMjggOS45NSAxMi43N0MxMC40NCAxMy4yNiAxMS4yOCAxMi45MiAxMS4yOCAxMi4yMkMxMS4yOCAxMS43OSAxMC45MyAxMS40NCAxMC41IDExLjQ0TTkuNjYgMTQuNTRMOC43NiAxNi4xMUM5LjgxIDE2LjgyIDExLjE5IDE2LjgyIDEyLjI0IDE2LjExTDExLjM0IDE0LjU0QzEwLjg3IDE1IDEwLjEzIDE1IDkuNjYgMTQuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNhZEJveCA9IFwiTTUgM0MzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM00xMS4yNSA1LjI1SDEyLjc1VjYuMzhDMTMuNTggNi4zOCAxNC4yNSA3LjA1IDE0LjI1IDcuODhWMTAuMzdMMTQuMTEgMTAuNUwxNS4xOCAxMi4zNkMxNS41NSAxMS43NiAxNS43NSAxMS4wNyAxNS43NSAxMC4zNkgxNy4yNUMxNy4yNiAxMS42MSAxNi44MSAxMi44MiAxNiAxMy43N0wxOCAxNy4yNVYxOC43NUwxNi43IDE4TDE0Ljg0IDE0Ljc4QzEzLjEyIDE1LjkxIDEwLjg5IDE1LjkxIDkuMTYgMTQuNzhMNy4zIDE4TDYgMTguNzVWMTcuMjVMOS44OSAxMC41TDkuNzUgMTAuMzdWNy44OEM5Ljc1IDcuMDUgMTAuNDIgNi4zOCAxMS4yNSA2LjM4TTEyIDcuODhDMTEuMTYgNy44OCAxMC43NCA4LjkgMTEuMzQgOS41QzExLjk0IDEwLjA4IDEyLjk1IDkuNjUgMTIuOTQgOC44MUMxMi45NCA4LjI5IDEyLjUgNy44OCAxMiA3Ljg4TTExIDExLjZMOS45MSAxMy41QzExLjE3IDE0LjM2IDEyLjgzIDE0LjM2IDE0LjA5IDEzLjVMMTMgMTEuNkMxMi40MyAxMi4xMSAxMS41NyAxMi4xMSAxMSAxMS42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDYW5jZWwgPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTEwLjUsMTFDOCwxMSA2LDEzIDYsMTUuNUM2LDE4IDgsMjAgMTAuNSwyMEMxMywyMCAxNSwxOCAxNSwxNS41QzE1LDEzIDEzLDExIDEwLjUsMTFNMTAuNSwxMi41QTMsMyAwIDAsMSAxMy41LDE1LjVDMTMuNSwxNi4wNiAxMy4zNSwxNi41OCAxMy4wOCwxN0w5LDEyLjkyQzkuNDIsMTIuNjUgOS45NCwxMi41IDEwLjUsMTIuNU03LjUsMTUuNUM3LjUsMTQuOTQgNy42NSwxNC40MiA3LjkyLDE0TDEyLDE4LjA4QzExLjU4LDE4LjM1IDExLjA2LDE4LjUgMTAuNSwxOC41QTMsMyAwIDAsMSA3LjUsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ2FuY2VsT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTEuNSwxMEMxNCwxMCAxNiwxMiAxNiwxNC41QzE2LDE3IDE0LDE5IDExLjUsMTlDOSwxOSA3LDE3IDcsMTQuNUM3LDEyIDksMTAgMTEuNSwxME0xMS41LDExLjVDMTAuOTQsMTEuNSAxMC40MiwxMS42NSAxMCwxMS45MkwxNC4wOCwxNkMxNC4zNSwxNS41OCAxNC41LDE1LjA2IDE0LjUsMTQuNUEzLDMgMCAwLDAgMTEuNSwxMS41TTguNSwxNC41QTMsMyAwIDAsMCAxMS41LDE3LjVDMTIuMDYsMTcuNSAxMi41OCwxNy4zNSAxMywxNy4wOEw4LjkyLDEzQzguNjUsMTMuNDIgOC41LDEzLjk0IDguNSwxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDZXJ0aWZpY2F0ZSA9IFwiTTE0IDJIN0EyIDIgMCAwIDAgNSA0VjE4QTIgMiAwIDAgMCA3IDIwSDEwVjIzTDEyIDIyTDE0IDIzVjIwSDE3QTIgMiAwIDAgMCAxOSAxOFY3TTE0IDE1VjE3TDEyIDE2TDEwIDE3VjE1TDggMTRMMTAgMTNWMTFMMTIgMTJMMTQgMTFWMTNMMTYgMTRNMTMgOFYzLjVMMTcuNSA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDZXJ0aWZpY2F0ZU91dGxpbmUgPSBcIk0xNCAxM1YxMUwxMiAxMkwxMCAxMVYxM0w4IDE0TDEwIDE1VjE3TDEyIDE2TDE0IDE3VjE1TDE2IDE0TTE0IDJIN0EyIDIgMCAwIDAgNSA0VjE4QTIgMiAwIDAgMCA3IDIwSDhWMThIN1Y0SDEzVjhIMTdWMThIMTZWMjBIMTdBMiAyIDAgMCAwIDE5IDE4VjdNMTQgMTNWMTFMMTIgMTJMMTAgMTFWMTNMOCAxNEwxMCAxNVYxN0wxMiAxNkwxNCAxN1YxNUwxNiAxNE0xMCAyM0wxMiAyMkwxNCAyM1YxOEgxME0xNCAxM1YxMUwxMiAxMkwxMCAxMVYxM0w4IDE0TDEwIDE1VjE3TDEyIDE2TDE0IDE3VjE1TDE2IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDaGFydCA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNNywyMEg5VjE0SDdWMjBNMTEsMjBIMTNWMTJIMTFWMjBNMTUsMjBIMTdWMTZIMTVWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNoYXJ0T3V0bGluZSA9IFwiTTE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNOSAxM1YxOUg3VjEzSDlNMTUgMTVWMTlIMTdWMTVIMTVNMTEgMTFWMTlIMTNWMTFIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNoZWNrID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk0xMS4yLDE4LjQ2TDE1Ljk1LDEzLjcxTDE0Ljc4LDEyLjNMMTEuMiwxNS44OEw5LjYxLDE0LjNMOC40NSwxNS40NkwxMS4yLDE4LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDaGVja091dGxpbmUgPSBcIk0xNCwyTDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE0TTE4LDIwVjlIMTNWNEg2VjIwSDE4TTExLjIsMTguNDZMOC40NSwxNS40Nkw5LjYxLDE0LjNMMTEuMiwxNS44OEwxNC43OCwxMi4zTDE1Ljk1LDEzLjcxTDExLjIsMTguNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNsb2NrID0gXCJNNCAyQzIuODkgMiAyIDIuODkgMiA0VjIwQTIgMiAwIDAgMCA0IDIySDEyLjQxQTcgNyAwIDAgMCAxNiAyM0E3IDcgMCAwIDAgMjMgMTZBNyA3IDAgMCAwIDE4IDkuM1Y4TDEyIDJINE0xMSAzLjVMMTYuNSA5SDExVjMuNU0xNiAxMUE1IDUgMCAwIDEgMjEgMTZBNSA1IDAgMCAxIDE2IDIxQTUgNSAwIDAgMSAxMSAxNkE1IDUgMCAwIDEgMTYgMTFNMTUgMTJWMTdMMTguNjEgMTkuMTZMMTkuMzYgMTcuOTRMMTYuNSAxNi4yNVYxMkgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ2xvY2tPdXRsaW5lID0gXCJNNCAyQTIgMiAwIDAgMCAyIDRWMjBBMiAyIDAgMCAwIDQgMjJIMTIuNDFBNyA3IDAgMCAwIDE2IDIzQTcgNyAwIDAgMCAyMyAxNkE3IDcgMCAwIDAgMTggOS4zVjhMMTIgMkg0TTQgNEgxMVY5SDE2QTcgNyAwIDAgMCA5IDE2QTcgNyAwIDAgMCAxMC4yNiAyMEg0VjRNMTYgMTFBNSA1IDAgMCAxIDIxIDE2QTUgNSAwIDAgMSAxNiAyMUE1IDUgMCAwIDEgMTEgMTZBNSA1IDAgMCAxIDE2IDExTTE1IDEyVjE3TDE4LjYxIDE5LjE2TDE5LjM2IDE3Ljk0TDE2LjUgMTYuMjVWMTJIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNsb3VkID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk0xNS42OCwxNUMxNS4zNCwxMy4zIDEzLjgyLDEyIDEyLDEyQzEwLjU1LDEyIDkuMywxMi44MiA4LjY4LDE0QzcuMTcsMTQuMTggNiwxNS40NSA2LDE3QTMsMyAwIDAsMCA5LDIwSDE1LjVBMi41LDIuNSAwIDAsMCAxOCwxNy41QzE4LDE2LjE4IDE2Ljk3LDE1LjExIDE1LjY4LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDbG91ZE91dGxpbmUgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTcgMTYuOTJDMTcgMTguMDcgMTYuMDcgMTkgMTQuOTIgMTlIOS41QzguMTIgMTkgNyAxNy44OCA3IDE2LjVDNyAxNS4yMSA4IDE0LjE1IDkuMjMgMTRDOS43NSAxMyAxMC43OSAxMi4zMyAxMiAxMi4zM0MxMy41IDEyLjMzIDE0Ljc4IDEzLjQyIDE1LjA3IDE0LjgzQzE2LjE0IDE0LjkzIDE3IDE1LjgyIDE3IDE2LjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDb2RlID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk02LjEyLDE1LjVMOS44NiwxOS4yNEwxMS4yOCwxNy44M0w4Ljk1LDE1LjVMMTEuMjgsMTMuMTdMOS44NiwxMS43Nkw2LjEyLDE1LjVNMTcuMjgsMTUuNUwxMy41NCwxMS43NkwxMi4xMiwxMy4xN0wxNC40NSwxNS41TDEyLjEyLDE3LjgzTDEzLjU0LDE5LjI0TDE3LjI4LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUNvZGVPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTkuNTQgMTUuNjVMMTEuNjMgMTcuNzRMMTAuMzUgMTlMNyAxNS42NUwxMC4zNSAxMi4zTDExLjYzIDEzLjU2TDkuNTQgMTUuNjVNMTcgMTUuNjVMMTMuNjUgMTlMMTIuMzggMTcuNzRMMTQuNDcgMTUuNjVMMTIuMzggMTMuNTZMMTMuNjUgMTIuM0wxNyAxNS42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlQ29nID0gXCJNNiAyQzQuODkgMiA0IDIuODkgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDEyLjY4QTcgNyAwIDAgMSAxMiAxOUE3IDcgMCAwIDEgMTkgMTJBNyA3IDAgMCAxIDIwIDEyLjA4VjhMMTQgMkg2TTEzIDMuNUwxOC41IDlIMTNWMy41TTE4IDE0QzE3Ljg3IDE0IDE3Ljc2IDE0LjA5IDE3Ljc0IDE0LjIxTDE3LjU1IDE1LjUzQzE3LjI1IDE1LjY2IDE2Ljk2IDE1LjgyIDE2LjcgMTZMMTUuNDYgMTUuNUMxNS4zNSAxNS41IDE1LjIyIDE1LjUgMTUuMTUgMTUuNjNMMTQuMTUgMTcuMzZDMTQuMDkgMTcuNDcgMTQuMTEgMTcuNiAxNC4yMSAxNy42OEwxNS4yNyAxOC41QzE1LjI1IDE4LjY3IDE1LjI0IDE4LjgzIDE1LjI0IDE5QzE1LjI0IDE5LjE3IDE1LjI1IDE5LjMzIDE1LjI3IDE5LjVMMTQuMjEgMjAuMzJDMTQuMTIgMjAuNCAxNC4wOSAyMC41MyAxNC4xNSAyMC42NEwxNS4xNSAyMi4zN0MxNS4yMSAyMi41IDE1LjM0IDIyLjUgMTUuNDYgMjIuNUwxNi43IDIyQzE2Ljk2IDIyLjE4IDE3LjI0IDIyLjM1IDE3LjU1IDIyLjQ3TDE3Ljc0IDIzLjc5QzE3Ljc2IDIzLjkxIDE3Ljg2IDI0IDE4IDI0SDIwQzIwLjExIDI0IDIwLjIyIDIzLjkxIDIwLjI0IDIzLjc5TDIwLjQzIDIyLjQ3QzIwLjczIDIyLjM0IDIxIDIyLjE4IDIxLjI3IDIyTDIyLjUgMjIuNUMyMi42MyAyMi41IDIyLjc2IDIyLjUgMjIuODMgMjIuMzdMMjMuODMgMjAuNjRDMjMuODkgMjAuNTMgMjMuODYgMjAuNCAyMy43NyAyMC4zMkwyMi43IDE5LjVDMjIuNzIgMTkuMzMgMjIuNzQgMTkuMTcgMjIuNzQgMTlDMjIuNzQgMTguODMgMjIuNzMgMTguNjcgMjIuNyAxOC41TDIzLjc2IDE3LjY4QzIzLjg1IDE3LjYgMjMuODggMTcuNDcgMjMuODIgMTcuMzZMMjIuODIgMTUuNjNDMjIuNzYgMTUuNSAyMi42MyAxNS41IDIyLjUgMTUuNUwyMS4yNyAxNkMyMSAxNS44MiAyMC43MyAxNS42NSAyMC40MiAxNS41M0wyMC4yMyAxNC4yMUMyMC4yMiAxNC4wOSAyMC4xMSAxNCAyMCAxNEgxOE0xOSAxNy41QzE5LjgzIDE3LjUgMjAuNSAxOC4xNyAyMC41IDE5QzIwLjUgMTkuODMgMTkuODMgMjAuNSAxOSAyMC41QzE4LjE2IDIwLjUgMTcuNSAxOS44MyAxNy41IDE5QzE3LjUgMTguMTcgMTguMTcgMTcuNSAxOSAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDb2dPdXRsaW5lID0gXCJNNiAyQzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMTJWMjBINlY0SDEzVjlIMThWMTJIMjBWOEwxNCAyTTE4IDE0QzE3Ljg3IDE0IDE3Ljc2IDE0LjA5IDE3Ljc0IDE0LjIxTDE3LjU1IDE1LjUzQzE3LjI1IDE1LjY2IDE2Ljk2IDE1LjgyIDE2LjcgMTZMMTUuNDYgMTUuNUMxNS4zNSAxNS41IDE1LjIyIDE1LjUgMTUuMTUgMTUuNjNMMTQuMTUgMTcuMzZDMTQuMDkgMTcuNDcgMTQuMTEgMTcuNiAxNC4yMSAxNy42OEwxNS4yNyAxOC41QzE1LjI1IDE4LjY3IDE1LjI0IDE4LjgzIDE1LjI0IDE5QzE1LjI0IDE5LjE3IDE1LjI1IDE5LjMzIDE1LjI3IDE5LjVMMTQuMjEgMjAuMzJDMTQuMTIgMjAuNCAxNC4wOSAyMC41MyAxNC4xNSAyMC42NEwxNS4xNSAyMi4zN0MxNS4yMSAyMi41IDE1LjM0IDIyLjUgMTUuNDYgMjIuNUwxNi43IDIyQzE2Ljk2IDIyLjE4IDE3LjI0IDIyLjM1IDE3LjU1IDIyLjQ3TDE3Ljc0IDIzLjc5QzE3Ljc2IDIzLjkxIDE3Ljg2IDI0IDE4IDI0SDIwQzIwLjExIDI0IDIwLjIyIDIzLjkxIDIwLjI0IDIzLjc5TDIwLjQzIDIyLjQ3QzIwLjczIDIyLjM0IDIxIDIyLjE4IDIxLjI3IDIyTDIyLjUgMjIuNUMyMi42MyAyMi41IDIyLjc2IDIyLjUgMjIuODMgMjIuMzdMMjMuODMgMjAuNjRDMjMuODkgMjAuNTMgMjMuODYgMjAuNCAyMy43NyAyMC4zMkwyMi43IDE5LjVDMjIuNzIgMTkuMzMgMjIuNzQgMTkuMTcgMjIuNzQgMTlDMjIuNzQgMTguODMgMjIuNzMgMTguNjcgMjIuNyAxOC41TDIzLjc2IDE3LjY4QzIzLjg1IDE3LjYgMjMuODggMTcuNDcgMjMuODIgMTcuMzZMMjIuODIgMTUuNjNDMjIuNzYgMTUuNSAyMi42MyAxNS41IDIyLjUgMTUuNUwyMS4yNyAxNkMyMSAxNS44MiAyMC43MyAxNS42NSAyMC40MiAxNS41M0wyMC4yMyAxNC4yMUMyMC4yMiAxNC4wOSAyMC4xMSAxNCAyMCAxNE0xOSAxNy41QzE5LjgzIDE3LjUgMjAuNSAxOC4xNyAyMC41IDE5QzIwLjUgMTkuODMgMTkuODMgMjAuNSAxOSAyMC41QzE4LjE2IDIwLjUgMTcuNSAxOS44MyAxNy41IDE5QzE3LjUgMTguMTcgMTguMTcgMTcuNSAxOSAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVDb21wYXJlID0gXCJNMTAsMThINlYxNkgxMFYxOE0xMCwxNEg2VjEySDEwVjE0TTEwLDFWMkg2QzQuODksMiA0LDIuODkgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwVjIzSDEyVjFIMTBNMjAsOFYyMEMyMCwyMS4xMSAxOS4xMSwyMiAxOCwyMkgxNFYyMEgxOFYxMUgxNFY5SDE4LjVMMTQsNC41VjJMMjAsOE0xNiwxNEgxNFYxMkgxNlYxNE0xNiwxOEgxNFYxNkgxNlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRGVsaW1pdGVkID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xNSAxNkwxMyAyMEgxMEwxMiAxNkg5VjExSDE1VjE2TTEzIDlWMy41TDE4LjUgOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRGVsaW1pdGVkT3V0bGluZSA9IFwiTTE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTAgMTlMMTIgMTVIOVYxMEgxNVYxNUwxMyAxOUgxMFwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudCA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNMTUsMThWMTZINlYxOEgxNU0xOCwxNFYxMkg2VjE0SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudEVkaXQgPSBcIk02LDJDNC44OSwyIDQsMi44OSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMTBWMjAuMDlMMTIuMDksMThINlYxNkgxNC4wOUwxNi4wOSwxNEg2VjEySDE4LjA5TDIwLDEwLjA5VjhMMTQsMkg2TTEzLDMuNUwxOC41LDlIMTNWMy41TTIwLjE1LDEzQzIwLDEzIDE5Ljg2LDEzLjA1IDE5Ljc1LDEzLjE2TDE4LjczLDE0LjE4TDIwLjgyLDE2LjI2TDIxLjg0LDE1LjI1QzIyLjA1LDE1LjAzIDIyLjA1LDE0LjY3IDIxLjg0LDE0LjQ2TDIwLjU0LDEzLjE2QzIwLjQzLDEzLjA1IDIwLjI5LDEzIDIwLjE1LDEzTTE4LjE0LDE0Ljc3TDEyLDIwLjkyVjIzSDE0LjA4TDIwLjIzLDE2Ljg1TDE4LjE0LDE0Ljc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudEVkaXRPdXRsaW5lID0gXCJNOCwxMkgxNlYxNEg4VjEyTTEwLDIwSDZWNEgxM1Y5SDE4VjEyLjFMMjAsMTAuMVY4TDE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwVjIwTTgsMThIMTIuMUwxMywxNy4xVjE2SDhWMThNMjAuMiwxM0MyMC4zLDEzIDIwLjUsMTMuMSAyMC42LDEzLjJMMjEuOSwxNC41QzIyLjEsMTQuNyAyMi4xLDE1LjEgMjEuOSwxNS4zTDIwLjksMTYuM0wxOC44LDE0LjJMMTkuOCwxMy4yQzE5LjksMTMuMSAyMCwxMyAyMC4yLDEzTTIwLjIsMTYuOUwxNC4xLDIzSDEyVjIwLjlMMTguMSwxNC44TDIwLjIsMTYuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRG9jdW1lbnRNdWx0aXBsZSA9IFwiTTQgNFYyMkgyMFYyNEg0QzIuOSAyNCAyIDIzLjEgMiAyMlY0SDRNMTUgN0gyMC41TDE1IDEuNVY3TTggMEgxNkwyMiA2VjE4QzIyIDE5LjExIDIxLjExIDIwIDIwIDIwSDhDNi44OSAyMCA2IDE5LjEgNiAxOFYyQzYgLjg5IDYuODkgMCA4IDBNMTcgMTZWMTRIOFYxNkgxN00yMCAxMlYxMEg4VjEySDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudE11bHRpcGxlT3V0bGluZSA9IFwiTTE2IDBIOEM2LjkgMCA2IC45IDYgMlYxOEM2IDE5LjEgNi45IDIwIDggMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjZMMTYgME0yMCAxOEg4VjJIMTVWN0gyMFYxOE00IDRWMjJIMjBWMjRINEMyLjkgMjQgMiAyMy4xIDIgMjJWNEg0TTEwIDEwVjEySDE4VjEwSDEwTTEwIDE0VjE2SDE1VjE0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVEb2N1bWVudE91dGxpbmUgPSBcIk02LDJBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwySDZNNiw0SDEzVjlIMThWMjBINlY0TTgsMTJWMTRIMTZWMTJIOE04LDE2VjE4SDEzVjE2SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZURvd25sb2FkID0gXCJNMTQsMkg2QzQuODksMiA0LDIuODkgNCw0VjIwQzQsMjEuMTEgNC44OSwyMiA2LDIySDE4QzE5LjExLDIyIDIwLDIxLjExIDIwLDIwVjhMMTQsMk0xMiwxOUw4LDE1SDEwLjVWMTJIMTMuNVYxNUgxNkwxMiwxOU0xMyw5VjMuNUwxOC41LDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZURvd25sb2FkT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTIsMTlMOCwxNUgxMC41VjEySDEzLjVWMTVIMTZMMTIsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUVkaXQgPSBcIk02IDJDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxMFYyMC4xTDIwIDEwLjFWOEwxNCAySDZNMTMgMy41TDE4LjUgOUgxM1YzLjVNMjAuMSAxM0MyMCAxMyAxOS44IDEzLjEgMTkuNyAxMy4yTDE4LjcgMTQuMkwyMC44IDE2LjNMMjEuOCAxNS4zQzIyIDE1LjEgMjIgMTQuNyAyMS44IDE0LjVMMjAuNSAxMy4yQzIwLjQgMTMuMSAyMC4zIDEzIDIwLjEgMTNNMTguMSAxNC44TDEyIDIwLjlWMjNIMTQuMUwyMC4yIDE2LjlMMTguMSAxNC44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFZGl0T3V0bGluZSA9IFwiTTEwIDIwSDZWNEgxM1Y5SDE4VjEyLjFMMjAgMTAuMVY4TDE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDEwVjIwTTIwLjIgMTNDMjAuMyAxMyAyMC41IDEzLjEgMjAuNiAxMy4yTDIxLjkgMTQuNUMyMi4xIDE0LjcgMjIuMSAxNS4xIDIxLjkgMTUuM0wyMC45IDE2LjNMMTguOCAxNC4yTDE5LjggMTMuMkMxOS45IDEzLjEgMjAgMTMgMjAuMiAxM00yMC4yIDE2LjlMMTQuMSAyM0gxMlYyMC45TDE4LjEgMTQuOEwyMC4yIDE2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUV4Y2VsID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xNS44LDIwSDE0TDEyLDE2LjZMMTAsMjBIOC4yTDExLjEsMTUuNUw4LjIsMTFIMTBMMTIsMTQuNEwxNCwxMUgxNS44TDEyLjksMTUuNUwxNS44LDIwTTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXhjZWxCb3ggPSBcIk0xNi4yLDE3SDE0LjJMMTIsMTMuMkw5LjgsMTdINy44TDExLDEyTDcuOCw3SDkuOEwxMiwxMC44TDE0LjIsN0gxNi4yTDEzLDEyTTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFeGNlbEJveE91dGxpbmUgPSBcIk01IDNDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM0g1TTUgNUgxOVYxOUg1VjVNMTMgMTJMMTYuMiAxN0gxNC4yTDEyIDEzLjJMOS44IDE3SDcuOEwxMSAxMkw3LjggN0g5LjhMMTIgMTAuOEwxNC4yIDdIMTYuMkwxMyAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXhjZWxPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTEyLjkgMTQuNUwxNS44IDE5SDE0TDEyIDE1LjZMMTAgMTlIOC4yTDExLjEgMTQuNUw4LjIgMTBIMTBMMTIgMTMuNEwxNCAxMEgxNS44TDEyLjkgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXhwb3J0ID0gXCJNNiwyQzQuODksMiA0LDIuOSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMywzLjVMMTguNSw5SDEzTTguOTMsMTIuMjJIMTZWMTkuMjlMMTMuODgsMTcuMTdMMTEuMDUsMjBMOC4yMiwxNy4xN0wxMS4wNSwxNC4zNVwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFeHBvcnRPdXRsaW5lID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xNiAxMVYxOC4xTDEzLjkgMTZMMTEuMSAxOC44TDguMyAxNkwxMS4xIDEzLjJMOC45IDExSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVFeWUgPSBcIk0xNywxOEMxNy41NiwxOCAxOCwxOC40NCAxOCwxOUMxOCwxOS41NiAxNy41NiwyMCAxNywyMEMxNi40NCwyMCAxNiwxOS41NiAxNiwxOUMxNiwxOC40NCAxNi40NCwxOCAxNywxOE0xNywxNUMxNC4yNywxNSAxMS45NCwxNi42NiAxMSwxOUMxMS45NCwyMS4zNCAxNC4yNywyMyAxNywyM0MxOS43MywyMyAyMi4wNiwyMS4zNCAyMywxOUMyMi4wNiwxNi42NiAxOS43MywxNSAxNywxNU0xNywyMS41QTIuNSwyLjUgMCAwLDEgMTQuNSwxOUEyLjUsMi41IDAgMCwxIDE3LDE2LjVBMi41LDIuNSAwIDAsMSAxOS41LDE5QTIuNSwyLjUgMCAwLDEgMTcsMjEuNU05LjE0LDE5Ljc1TDguODUsMTlMOS4xNCwxOC4yNkMxMC40MywxNS4wNiAxMy41LDEzIDE3LDEzQzE4LjA1LDEzIDE5LjA2LDEzLjIxIDIwLDEzLjU2VjhMMTQsMkg2QzQuODksMiA0LDIuODkgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwLjVDOS45NSwyMS4zNCA5LjUsMjAuNTggOS4xNCwxOS43NU0xMywzLjVMMTguNSw5SDEzVjMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlRXllT3V0bGluZSA9IFwiTTE3LDE4QzE3LjU2LDE4IDE4LDE4LjQ0IDE4LDE5QzE4LDE5LjU2IDE3LjU2LDIwIDE3LDIwQzE2LjQ0LDIwIDE2LDE5LjU2IDE2LDE5QzE2LDE4LjQ0IDE2LjQ0LDE4IDE3LDE4TTE3LDE1QzE0LjI3LDE1IDExLjk0LDE2LjY2IDExLDE5QzExLjk0LDIxLjM0IDE0LjI3LDIzIDE3LDIzQzE5LjczLDIzIDIyLjA2LDIxLjM0IDIzLDE5QzIyLjA2LDE2LjY2IDE5LjczLDE1IDE3LDE1TTE3LDIxLjVBMi41LDIuNSAwIDAsMSAxNC41LDE5QTIuNSwyLjUgMCAwLDEgMTcsMTYuNUEyLjUsMi41IDAgMCwxIDE5LjUsMTlBMi41LDIuNSAwIDAsMSAxNywyMS41TTkuMjcsMjBINlY0SDEzVjlIMThWMTMuMDdDMTguNywxMy4xNSAxOS4zNiwxMy4zMiAyMCwxMy41NlY4TDE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDEwLjVDMTAsMjEuNDEgOS41OSwyMC43MyA5LjI3LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVGaW5kID0gXCJNOSwxM0EzLDMgMCAwLDAgMTIsMTZBMywzIDAgMCwwIDE1LDEzQTMsMyAwIDAsMCAxMiwxMEEzLDMgMCAwLDAgOSwxM00yMCwxOS41OVY4TDE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QzE4LjQ1LDIyIDE4Ljg1LDIxLjg1IDE5LjE5LDIxLjZMMTQuNzYsMTcuMTdDMTMuOTYsMTcuNjkgMTMsMTggMTIsMThBNSw1IDAgMCwxIDcsMTNBNSw1IDAgMCwxIDEyLDhBNSw1IDAgMCwxIDE3LDEzQzE3LDE0IDE2LjY5LDE0Ljk2IDE2LjE3LDE1Ljc1TDIwLDE5LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVGaW5kT3V0bGluZSA9IFwiTTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNNiw0SDEzTDE4LDlWMTcuNThMMTYuMTYsMTUuNzRDMTcuNDQsMTMuOCAxNy4yMywxMS4xNyAxNS41LDkuNDZDMTQuNTUsOC41IDEzLjI4LDggMTIsOEMxMC43Miw4IDkuNDUsOC41IDguNDcsOS40NkM2LjUsMTEuNDEgNi41LDE0LjU3IDguNDcsMTYuNUM5LjQ0LDE3LjUgMTAuNzIsMTcuOTcgMTIsMTcuOTdDMTIuOTYsMTcuOTcgMTMuOTIsMTcuNjkgMTQuNzUsMTcuMTRMMTcuNiwyMEg2VjRNMTQuMTEsMTUuMUMxMy41NSwxNS42NiAxMi44LDE2IDEyLDE2QzExLjIsMTYgMTAuNDUsMTUuNjcgOS44OSwxNS4xQzkuMzMsMTQuNTQgOSwxMy43OSA5LDEzQzksMTIuMTkgOS4zMiwxMS40NCA5Ljg5LDEwLjg4QzEwLjQ1LDEwLjMxIDExLjIsMTAgMTIsMTBDMTIuOCwxMCAxMy41NSwxMC4zMSAxNC4xMSwxMC44OEMxNC42NywxMS40NCAxNSwxMi4xOSAxNSwxM0MxNSwxMy43OSAxNC42OCwxNC41NCAxNC4xMSwxNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVIaWRkZW4gPSBcIk0xMyw5SDE0VjExSDExVjdIMTNWOU0xOC41LDlMMTYuMzgsNi44OEwxNy42Myw1LjYzTDIwLDhWMTBIMThWMTFIMTVWOUgxOC41TTEzLDMuNVYySDEyVjRIMTNWNkgxMVY0SDlWMkg4VjRINlY1SDRWNEM0LDIuODkgNC44OSwyIDYsMkgxNEwxNi4zNiw0LjM2TDE1LjExLDUuNjFMMTMsMy41TTIwLDIwQTIsMiAwIDAsMSAxOCwyMkgxNlYyMEgxOFYxOUgyMFYyME0xOCwxNUgyMFYxOEgxOFYxNU0xMiwyMlYyMEgxNVYyMkgxMk04LDIyVjIwSDExVjIySDhNNiwyMkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjE4SDZWMjBIN1YyMkg2TTQsMTRINlYxN0g0VjE0TTQsMTBINlYxM0g0VjEwTTE4LDExSDIwVjE0SDE4VjExTTQsNkg2VjlINFY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVJbWFnZSA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNNiwyMEgxNUwxOCwyMFYxMkwxNCwxNkwxMiwxNEw2LDIwTTgsOUEyLDIgMCAwLDAgNiwxMUEyLDIgMCAwLDAgOCwxM0EyLDIgMCAwLDAgMTAsMTFBMiwyIDAgMCwwIDgsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlSW1hZ2VPdXRsaW5lID0gXCJNMTQsMkwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMkgxNE0xOCwyMFY5SDEzVjRINlYyMEgxOE0xNywxM1YxOUg3TDEyLDE0TDE0LDE2TTEwLDEwLjVBMS41LDEuNSAwIDAsMSA4LjUsMTJBMS41LDEuNSAwIDAsMSA3LDEwLjVBMS41LDEuNSAwIDAsMSA4LjUsOUExLjUsMS41IDAgMCwxIDEwLDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUltcG9ydCA9IFwiTTYsMkM0Ljg5LDIgNCwyLjkgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTMsMy41TDE4LjUsOUgxM00xMC4wNSwxMS4yMkwxMi44OCwxNC4wNUwxNSwxMS45M1YxOUg3LjkzTDEwLjA1LDE2Ljg4TDcuMjIsMTQuMDVcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlSW1wb3J0T3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xNSAxMS45M1YxOUg3LjkzTDEwLjA1IDE2Ljg4TDcuMjIgMTQuMDVMMTAuMDUgMTEuMjJMMTIuODggMTQuMDVMMTUgMTEuOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUtleSA9IFwiTTExIDE2QTEgMSAwIDEgMSAxMCAxNUExIDEgMCAwIDEgMTEgMTZNMjAgOFYyMEEyIDIgMCAwIDEgMTggMjJINkEyIDIgMCAwIDEgNCAyMFY0QTIgMiAwIDAgMSA2IDJIMTRNMTcgMTVIMTIuODNBMyAzIDAgMSAwIDEyLjgzIDE3SDE0VjE5SDE2VjE3SDE3TTE4LjUgOUwxMyAzLjVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlS2V5T3V0bGluZSA9IFwiTTE0IDJINkEyIDIgMCAwIDAgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThNMTIuODMgMTVBMyAzIDAgMSAwIDEyLjgzIDE3SDE0VjE5SDE2VjE3SDE3VjE1TTEwIDE3QTEgMSAwIDEgMSAxMSAxNkExIDEgMCAwIDEgMTAgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUxpbmsgPSBcIk0xNCAySDZDNC44OSAyIDQgMi44OSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTExIDIwSDEwQzguMzkgMjAgNiAxOC45NCA2IDE2QzYgMTMuMDcgOC4zOSAxMiAxMCAxMkgxMVYxNEgxMEM5LjU0IDE0IDggMTQuMTcgOCAxNkM4IDE3LjkgOS42NyAxOCAxMCAxOEgxMVYyME0xNSAxNVYxN0g5VjE1SDE1TTE0IDIwSDEzVjE4SDE0QzE0LjQ2IDE4IDE2IDE3LjgzIDE2IDE2QzE2IDE0LjEgMTQuMzMgMTQgMTQgMTRIMTNWMTJIMTRDMTUuNjEgMTIgMTggMTMuMDcgMTggMTZDMTggMTguOTQgMTUuNjEgMjAgMTQgMjBNMTMgOVYzLjVMMTguNSA5SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVMaW5rT3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xMSAxOUgxMC43NUM5LjQ1IDE5IDcgMTguMjIgNyAxNS4yNVM5LjQ1IDExLjUgMTAuNzUgMTEuNUgxMVYxM0gxMC43NUMxMC4zOCAxMyA4LjUgMTMuMTMgOC41IDE1LjI1QzguNSAxNy40NCAxMC41IDE3LjUgMTAuNzUgMTcuNUgxMVYxOU0xNCAxNkgxMFYxNC41SDE0VjE2TTEzIDExLjVIMTMuMjVDMTQuNTUgMTEuNSAxNyAxMi4yOCAxNyAxNS4yNVMxNC41NSAxOSAxMy4yNSAxOUgxM1YxNy41SDEzLjI1QzEzLjYyIDE3LjUgMTUuNSAxNy4zNyAxNS41IDE1LjI1QzE1LjUgMTMuMDYgMTMuNSAxMyAxMy4yNSAxM0gxM1YxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVMb2NrID0gXCJNNiwyQzQuODksMiA0LDIuOSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMkg2TTEzLDMuNUwxOC41LDlIMTNWMy41TTEyLDExQTMsMyAwIDAsMSAxNSwxNFYxNUgxNlYxOUg4VjE1SDlWMTRDOSwxMi4zNiAxMC4zNCwxMSAxMiwxMU0xMiwxM0ExLDEgMCAwLDAgMTEsMTRWMTVIMTNWMTRDMTMsMTMuNDcgMTIuNTUsMTMgMTIsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZUxvY2tPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE1IDE1VjE0QzE1IDEyLjM0IDEzLjY2IDExIDEyIDExUzkgMTIuMzYgOSAxNFYxNUg4VjE5SDE2VjE1SDE1TTEzIDE1SDExVjE0QzExIDEzLjQ1IDExLjQ1IDEzIDEyIDEzUzEzIDEzLjQ3IDEzIDE0VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVNb3ZlID0gXCJNMTQsMTdIMThWMTRMMjMsMTguNUwxOCwyM1YyMEgxNFYxN00xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMTIuMzRDMTkuMzcsMTIuMTIgMTguNywxMiAxOCwxMkE2LDYgMCAwLDAgMTIsMThDMTIsMTkuNTQgMTIuNTgsMjAuOTQgMTMuNTMsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRBMiwyIDAgMCwxIDYsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlTW92ZU91dGxpbmUgPSBcIk0xNCAySDZDNC45IDIgNCAyLjkgNCA0VjIwQzQgMjAuNDEgNC4xMiAyMC44IDQuMzQgMjEuMTJDNC40MSAyMS4yMyA0LjUgMjEuMzMgNC41OSAyMS40MUM0Ljk1IDIxLjc4IDUuNDUgMjIgNiAyMkgxMy41M0MxMyAyMS40MiAxMi42MSAyMC43NSAxMi4zNSAyMEg2VjRIMTNWOUgxOFYxMkMxOC43IDEyIDE5LjM3IDEyLjEyIDIwIDEyLjM0VjhMMTQgMk0xOCAyM0wyMyAxOC41TDIwIDE1LjhMMTggMTRWMTdIMTRWMjBIMThWMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU11bHRpcGxlID0gXCJNMTUsN0gyMC41TDE1LDEuNVY3TTgsMEgxNkwyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg4QzYuODksMjAgNiwxOS4xIDYsMThWMkEyLDIgMCAwLDEgOCwwTTQsNFYyMkgyMFYyNEg0QTIsMiAwIDAsMSAyLDIyVjRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlTXVsdGlwbGVPdXRsaW5lID0gXCJNMTYgMEg4QzYuOSAwIDYgLjkgNiAyVjE4QzYgMTkuMSA2LjkgMjAgOCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNkwxNiAwTTIwIDE4SDhWMkgxNVY3SDIwVjE4TTQgNFYyMkgyMFYyNEg0QzIuOSAyNCAyIDIzLjEgMiAyMlY0SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU11c2ljID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMywxM0gxMVYxOEEyLDIgMCAwLDEgOSwyMEEyLDIgMCAwLDEgNywxOEEyLDIgMCAwLDEgOSwxNkM5LjQsMTYgOS43LDE2LjEgMTAsMTYuM1YxMUgxM1YxM00xMyw5VjMuNUwxOC41LDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU11c2ljT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTMsMTBWMTJIMTFWMTdBMiwyIDAgMCwxIDksMTlBMiwyIDAgMCwxIDcsMTdBMiwyIDAgMCwxIDksMTVDOS40LDE1IDkuNywxNS4xIDEwLDE1LjNWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZU91dGxpbmUgPSBcIk0xNCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwyTTE4LDIwSDZWNEgxM1Y5SDE4VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVQZGYgPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyTTEwLjEsMTEuNEMxMC4wOCwxMS40NCA5LjgxLDEzLjE2IDgsMTYuMDlDOCwxNi4wOSA0LjUsMTcuOTEgNS4zMywxOS4yN0M2LDIwLjM1IDcuNjUsMTkuMjMgOS4wNywxNi41OUM5LjA3LDE2LjU5IDEwLjg5LDE1Ljk1IDEzLjMxLDE1Ljc3QzEzLjMxLDE1Ljc3IDE3LjE3LDE3LjUgMTcuNywxNS42NkMxOC4yMiwxMy44IDE0LjY0LDE0LjIyIDE0LDE0LjQxQzE0LDE0LjQxIDEyLDEzLjA2IDExLjUsMTEuMkMxMS41LDExLjIgMTIuNjQsNy4yNSAxMC44OSw3LjNDOS4xNCw3LjM1IDkuOCwxMC40MyAxMC4xLDExLjRNMTAuOTEsMTIuNDRDMTAuOTQsMTIuNDUgMTEuMzgsMTMuNjUgMTIuOCwxNC45QzEyLjgsMTQuOSAxMC40NywxNS4zNiA5LjQxLDE1LjhDOS40MSwxNS44IDEwLjQxLDE0LjA3IDEwLjkxLDEyLjQ0TTE0Ljg0LDE1LjE2QzE1LjQyLDE1IDE3LjE3LDE1LjMxIDE3LjEsMTUuNjRDMTcuMDQsMTUuOTcgMTQuODQsMTUuMTYgMTQuODQsMTUuMTZNNy43NywxN0M3LjI0LDE4LjI0IDYuMzMsMTkgNi4xLDE5QzUuODcsMTkgNi44LDE3LjQgNy43NywxN00xMC45MSwxMC4wN0MxMC45MSwxMCAxMC41NSw3Ljg3IDEwLjkxLDcuOTJDMTEuNDUsOCAxMC45MSwxMCAxMC45MSwxMC4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGRmQm94ID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlNMTAuNTksMTAuMDhDMTAuNTcsMTAuMTMgMTAuMywxMS44NCA4LjUsMTQuNzdDOC41LDE0Ljc3IDUsMTYuNTggNS44MywxNy45NEM2LjUsMTkgOC4xNSwxNy45IDkuNTYsMTUuMjdDOS41NiwxNS4yNyAxMS4zOCwxNC42MyAxMy43OSwxNC40NUMxMy43OSwxNC40NSAxNy42NSwxNi4xOSAxOC4xNywxNC4zNEMxOC42OSwxMi41IDE1LjEyLDEyLjkgMTQuNSwxMy4wOUMxNC41LDEzLjA5IDEyLjQ2LDExLjc1IDEyLDkuODlDMTIsOS44OSAxMy4xMyw1Ljk1IDExLjM4LDZDOS42Myw2LjA1IDEwLjI5LDkuMTIgMTAuNTksMTAuMDhNMTEuNCwxMS4xM0MxMS40MywxMS4xMyAxMS44NywxMi4zMyAxMy4yOSwxMy41OEMxMy4yOSwxMy41OCAxMC45NiwxNC4wNCA5LjksMTQuNUM5LjksMTQuNSAxMC45LDEyLjc1IDExLjQsMTEuMTNNMTUuMzIsMTMuODRDMTUuOSwxMy42OSAxNy42NCwxNCAxNy41OCwxNC4zMkMxNy41LDE0LjY1IDE1LjMyLDEzLjg0IDE1LjMyLDEzLjg0TTguMjYsMTUuN0M3LjczLDE2LjkxIDYuODMsMTcuNjggNi42LDE3LjY3QzYuMzcsMTcuNjYgNy4zLDE2LjA3IDguMjYsMTUuN00xMS40LDguNzZDMTEuMzksOC43MSAxMS4wMyw2LjU3IDExLjQsNi42MUMxMS45NCw2LjY3IDExLjQsOC43MSAxMS40LDguNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVBkZkJveE91dGxpbmUgPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTkgNVYxOUg1VjVIMTlNMTcuOSAxMy41QzE3LjYgMTMgMTYuOSAxMi44IDE1LjcgMTIuOEMxNS4zIDEyLjggMTQuOSAxMi44IDE0LjUgMTIuOUMxNC4yIDEyLjcgMTMuOSAxMi41IDEzLjcgMTIuM0MxMy4xIDExLjggMTIuNSAxMC45IDEyLjIgOS44VjkuN0MxMi41IDguNCAxMi44IDYuOSAxMi4yIDYuMkMxMS45IDYuMSAxMS43IDYgMTEuNSA2SDExLjNDMTAuOSA2IDEwLjYgNi40IDEwLjUgNi43QzEwLjEgOCAxMC40IDguNyAxMC43IDkuOUMxMC41IDEwLjggMTAuMSAxMS43IDkuNyAxMi43QzkuMyAxMy40IDkgMTQgOC43IDE0LjVDOC4zIDE0LjcgOCAxNC44IDcuOCAxNUM2LjcgMTUuNyA2LjEgMTYuNSA2IDE3VjE3LjVMNi41IDE3LjhDNi43IDE4IDYuOCAxOCA3IDE4QzcuOCAxOCA4LjcgMTcuMSA5LjkgMTVIMTBDMTEgMTQuNyAxMi4yIDE0LjUgMTMuOSAxNC4zQzE0LjkgMTQuOCAxNi4xIDE1IDE2LjggMTVDMTcuMiAxNSAxNy41IDE0LjkgMTcuNyAxNC43QzE3LjkgMTQuNSAxOCAxNC4zIDE4IDE0LjFDMTggMTMuOCAxOCAxMy42IDE3LjkgMTMuNU02LjggMTcuM0M2LjggMTYuOSA3LjMgMTYuMyA4IDE1LjdDOC4xIDE1LjYgOC4zIDE1LjUgOC41IDE1LjRDNy44IDE2LjUgNy4yIDE3LjIgNi44IDE3LjNNMTEuMyA2LjdDMTEuMyA2LjcgMTEuMyA2LjYgMTEuNCA2LjZIMTEuNUMxMS43IDYuOCAxMS43IDcuMSAxMS42IDcuN1Y3LjlDMTEuNSA4LjEgMTEuNSA4LjQgMTEuNCA4LjdDMTEuMSA3LjggMTEuMSA3LjEgMTEuMyA2LjdNMTAuMSAxNC4zSDEwQzEwLjEgMTQgMTAuMyAxMy43IDEwLjUgMTMuM0MxMC45IDEyLjUgMTEuMyAxMS43IDExLjUgMTFDMTEuOSAxMS45IDEyLjQgMTIuNiAxMyAxMy4xQzEzLjEgMTMuMiAxMy4zIDEzLjMgMTMuNCAxMy40QzEyLjUgMTMuNSAxMS4zIDEzLjggMTAuMSAxNC4zTTE3LjMgMTQuMkgxNy4xQzE2LjcgMTQuMiAxNiAxNCAxNS4zIDEzLjdDMTUuNCAxMy42IDE1LjUgMTMuNiAxNS41IDEzLjZDMTYuOSAxMy42IDE3LjIgMTMuOCAxNy4zIDEzLjlMMTcuNCAxNEMxNy40IDE0LjIgMTcuNCAxNC4yIDE3LjMgMTQuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGRmT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTAuOTIsMTIuMzFDMTAuNjgsMTEuNTQgMTAuMTUsOS4wOCAxMS41NSw5LjA0QzEyLjk1LDkgMTIuMDMsMTIuMTYgMTIuMDMsMTIuMTZDMTIuNDIsMTMuNjUgMTQuMDUsMTQuNzIgMTQuMDUsMTQuNzJDMTQuNTUsMTQuNTcgMTcuNCwxNC4yNCAxNywxNS43MkMxNi41NywxNy4yIDEzLjUsMTUuODEgMTMuNSwxNS44MUMxMS41NSwxNS45NSAxMC4wOSwxNi40NyAxMC4wOSwxNi40N0M4Ljk2LDE4LjU4IDcuNjQsMTkuNSA3LjEsMTguNjFDNi40MywxNy41IDkuMjMsMTYuMDcgOS4yMywxNi4wN0MxMC42OCwxMy43MiAxMC45LDEyLjM1IDEwLjkyLDEyLjMxTTExLjU3LDEzLjE1QzExLjE3LDE0LjQ1IDEwLjM3LDE1Ljg0IDEwLjM3LDE1Ljg0QzExLjIyLDE1LjUgMTMuMDgsMTUuMTEgMTMuMDgsMTUuMTFDMTEuOTQsMTQuMTEgMTEuNTksMTMuMTYgMTEuNTcsMTMuMTVNMTQuNzEsMTUuMzJDMTQuNzEsMTUuMzIgMTYuNDYsMTUuOTcgMTYuNSwxNS43MUMxNi41NywxNS40NCAxNS4xNywxNS4yIDE0LjcxLDE1LjMyTTkuMDUsMTYuODFDOC4yOCwxNy4xMSA3LjU0LDE4LjM5IDcuNzIsMTguMzlDNy45LDE4LjQgOC42MywxNy43OSA5LjA1LDE2LjgxTTExLjU3LDExLjI2QzExLjU3LDExLjIxIDEyLDkuNTggMTEuNTcsOS41M0MxMS4yNyw5LjUgMTEuNTYsMTEuMjIgMTEuNTcsMTEuMjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVBlcmNlbnQgPSBcIk0xNCwyTDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE0TTcuMzcsMjBMMTUsMTIuMzVMMTMuNjUsMTFMNiwxOC42NUw3LjM3LDIwTTEzLDlIMTguNUwxMywzLjVWOU03LjUsMTFBMS41LDEuNSAwIDAsMCA2LDEyLjVBMS41LDEuNSAwIDAsMCA3LjUsMTRBMS41LDEuNSAwIDAsMCA5LDEyLjVBMS41LDEuNSAwIDAsMCA3LjUsMTFNMTMuNSwxN0ExLjUsMS41IDAgMCwwIDEyLDE4LjVBMS41LDEuNSAwIDAsMCAxMy41LDIwQTEuNSwxLjUgMCAwLDAgMTUsMTguNUExLjUsMS41IDAgMCwwIDEzLjUsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVBlcmNlbnRPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTEwIDExLjVDMTAgMTIuMzMgOS4zMyAxMyA4LjUgMTNTNyAxMi4zMyA3IDExLjUgNy42NyAxMCA4LjUgMTAgMTAgMTAuNjcgMTAgMTEuNU0xNiAxNy41QzE2IDE4LjMzIDE1LjMzIDE5IDE0LjUgMTlTMTMgMTguMzMgMTMgMTcuNSAxMy42NyAxNiAxNC41IDE2IDE2IDE2LjY3IDE2IDE3LjVNMTYgMTEuMzVMOC4zNyAxOUw3IDE3LjY1TDE0LjY1IDEwTDE2IDExLjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVQaG9uZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjg5IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTcgMTkuNDRDMTcgMTkuNzUgMTYuNzUgMjAgMTYuNDQgMjBDMTEuMjMgMjAgNyAxNS43NyA3IDEwLjU2QzcgMTAuMjUgNy4yNSAxMCA3LjU2IDEwSDkuNUM5LjgxIDEwIDEwLjA2IDEwLjI1IDEwLjA2IDEwLjU2QzEwLjA2IDExLjI1IDEwLjE3IDExLjkyIDEwLjM3IDEyLjU0QzEwLjQzIDEyLjczIDEwLjM5IDEyLjk1IDEwLjIzIDEzLjExTDkgMTQuMzNDOS44MSAxNS45IDExLjEgMTcuMTkgMTIuNjcgMThMMTMuOSAxNi43N0MxNC4wNSAxNi42MSAxNC4yNyAxNi41NyAxNC40NiAxNi42M0MxNS4wOCAxNi44MyAxNS43NSAxNi45NSAxNi40NSAxNi45NUMxNi43NSAxNi45NSAxNyAxNy4xOSAxNyAxNy41VjE5LjQ0TTEzIDlWMy41TDE4LjUgOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGhvbmVPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTkgMTMuMzNDOS44MSAxNC45IDExLjEgMTYuMTkgMTIuNjcgMTdMMTMuODkgMTUuNzdDMTQuMDUgMTUuNjEgMTQuMjcgMTUuNTcgMTQuNDYgMTUuNjNDMTUuMDggMTUuODMgMTUuNzUgMTUuOTUgMTYuNDQgMTUuOTVDMTYuNzUgMTUuOTUgMTcgMTYuMTkgMTcgMTYuNVYxOC40NUMxNyAxOC43NSAxNi43NSAxOSAxNi40NCAxOUMxMS4yMyAxOSA3IDE0Ljc3IDcgOS41NkM3IDkuMjUgNy4yNSA5IDcuNTYgOUg5LjVDOS44MSA5IDEwLjA2IDkuMjUgMTAuMDYgOS41NkMxMC4wNiAxMC4yNSAxMC4xNyAxMC45MiAxMC4zNyAxMS41NEMxMC40MyAxMS43MyAxMC4zOSAxMS45NSAxMC4yMyAxMi4xMUw5IDEzLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVQbHVzID0gXCJNMTMsOUgxOC41TDEzLDMuNVY5TTYsMkgxNEwyMCw4VjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWNEM0LDIuODkgNC44OSwyIDYsMk0xMSwxNVYxMkg5VjE1SDZWMTdIOVYyMEgxMVYxN0gxNFYxNUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUGx1c091dGxpbmUgPSBcIk0xMiwxNFYxMUgxMFYxNEg3VjE2SDEwVjE5SDEyVjE2SDE1VjE0TTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTgsMjBINlY0SDEzVjlIMThcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludCA9IFwiTTEyLjYsMTIuM0gxMC42VjE1LjVIMTIuN0MxMy4zLDE1LjUgMTMuNiwxNS4zIDEzLjksMTVDMTQuMiwxNC43IDE0LjMsMTQuNCAxNC4zLDEzLjlDMTQuMywxMy40IDE0LjIsMTMuMSAxMy45LDEyLjhDMTMuNiwxMi41IDEzLjIsMTIuMyAxMi42LDEyLjNNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xNS4yLDE2QzE0LjYsMTYuNSAxNC4xLDE2LjcgMTIuOCwxNi43SDEwLjZWMjBIOVYxMUgxMi44QzE0LjEsMTEgMTQuNywxMS4zIDE1LjIsMTEuOEMxNS44LDEyLjQgMTYsMTMgMTYsMTMuOUMxNiwxNC44IDE1LjgsMTUuNSAxNS4yLDE2TTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludEJveCA9IFwiTTkuOCwxMy40SDEyLjNDMTMuOCwxMy40IDE0LjQ2LDEzLjEyIDE1LjEsMTIuNThDMTUuNzQsMTIuMDMgMTYsMTEuMjUgMTYsMTAuMjNDMTYsOS4yNiAxNS43NSw4LjUgMTUuMSw3Ljg4QzE0LjQ1LDcuMjkgMTMuODMsNyAxMi4zLDdIOFYxN0g5LjhWMTMuNE0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVDMywzLjg5IDMuOSwzIDUsM0gxOU05LjgsMTJWOC40SDEyLjFDMTIuNzYsOC40IDEzLjI3LDguNjUgMTMuNiw5QzEzLjkzLDkuMzUgMTQuMSw5LjcyIDE0LjEsMTAuMjRDMTQuMSwxMC44IDEzLjkyLDExLjE5IDEzLjYsMTEuNUMxMy4yOCwxMS44MSAxMi45LDEyIDEyLjIyLDEySDkuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludEJveE91dGxpbmUgPSBcIk01IDNDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM0g1TTUgNUgxOVYxOUg1VjVNMTUuMSA3Ljg4QzE0LjQ1IDcuMjkgMTMuODMgNyAxMi4zIDdIOFYxN0g5LjhWMTMuNEgxMi4zQzEzLjggMTMuNCAxNC40NiAxMy4xMiAxNS4xIDEyLjU4QzE1Ljc0IDEyLjAzIDE2IDExLjI1IDE2IDEwLjIzQzE2IDkuMjYgMTUuNzUgOC41IDE1LjEgNy44OE0xMy42IDExLjVDMTMuMjggMTEuODEgMTIuOSAxMiAxMi4yMiAxMkg5LjhWOC40SDEyLjFDMTIuNzYgOC40IDEzLjI3IDguNjUgMTMuNiA5QzEzLjkzIDkuMzUgMTQuMSA5LjcyIDE0LjEgMTAuMjRDMTQuMSAxMC44IDEzLjkyIDExLjE5IDEzLjYgMTEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUG93ZXJwb2ludE91dGxpbmUgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTUuMiAxMC44QzE0LjcgMTAuMyAxNC4xIDEwIDEyLjggMTBIOVYxOUgxMC42VjE1LjdIMTIuOEMxNC4xIDE1LjcgMTQuNiAxNS41IDE1LjIgMTVDMTUuOCAxNC41IDE2IDEzLjggMTYgMTIuOUMxNiAxMiAxNS44IDExLjQgMTUuMiAxMC44TTEzLjkgMTRDMTMuNiAxNC4zIDEzLjMgMTQuNSAxMi43IDE0LjVIMTAuNlYxMS4zSDEyLjZDMTMuMiAxMS4zIDEzLjYgMTEuNSAxMy45IDExLjhDMTQuMiAxMi4xIDE0LjMgMTIuNCAxNC4zIDEyLjlTMTQuMiAxMy43IDEzLjkgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVByZXNlbnRhdGlvbkJveCA9IFwiTTE5LDE2SDVWOEgxOU0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUXVlc3Rpb24gPSBcIk02LDJDNC44OSwyIDQsMi44OSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMkg2TTEzLDMuNUwxOC41LDlIMTNWMy41TTEyLDExQTMsMyAwIDAsMSAxNSwxNEMxNSwxNS44OCAxMi43NSwxNi4wNiAxMi43NSwxNy43NUgxMS4yNUMxMS4yNSwxNS4zMSAxMy41LDE1LjUgMTMuNSwxNEExLjUsMS41IDAgMCwwIDEyLDEyLjVBMS41LDEuNSAwIDAsMCAxMC41LDE0SDlBMywzIDAgMCwxIDEyLDExTTExLjI1LDE4LjVIMTIuNzVWMjBIMTEuMjVWMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUXVlc3Rpb25PdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE1IDEzQzE1IDE0Ljg5IDEyLjc1IDE1LjA3IDEyLjc1IDE2Ljc2SDExLjI1QzExLjI1IDE0LjMyIDEzLjUgMTQuNSAxMy41IDEzQzEzLjUgMTIuMTggMTIuODMgMTEuNSAxMiAxMS41UzEwLjUgMTIuMTggMTAuNSAxM0g5QzkgMTEuMzUgMTAuMzQgMTAgMTIgMTBTMTUgMTEuMzUgMTUgMTNNMTIuNzUgMTcuNVYxOUgxMS4yNVYxNy41SDEyLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZWZyZXNoID0gXCJNMTggMTQuNUMxOS4xMSAxNC41IDIwLjExIDE0Ljk1IDIwLjgzIDE1LjY3TDIyIDE0LjVWMTguNUgxOEwxOS43NyAxNi43M0MxOS4zMiAxNi4yOCAxOC42OSAxNiAxOCAxNkMxNi42MiAxNiAxNS41IDE3LjEyIDE1LjUgMTguNUMxNS41IDE5Ljg4IDE2LjYyIDIxIDE4IDIxQzE4LjgyIDIxIDE5LjU0IDIwLjYxIDIwIDIwSDIxLjcxQzIxLjEyIDIxLjQ3IDE5LjY4IDIyLjUgMTggMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVDMTQgMTYuMjkgMTUuNzkgMTQuNSAxOCAxNC41TTEzIDlIMTguNUwxMyAzLjVWOU02IDJIMTRMMjAgOFYxMi4xN0MxOS41IDEyLjA2IDE5IDEyIDE4LjUgMTJDMTQuOTEgMTIgMTIgMTQuOTEgMTIgMTguNUMxMiAxOS43OSAxMi4zNyAyMSAxMyAyMkg2QzQuODggMjIgNCAyMS4xIDQgMjBMNCA0QzQgMi44OSA0Ljg5IDIgNiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZWZyZXNoT3V0bGluZSA9IFwiTTE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVDMTUuNSAxOS44OCAxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NCAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41QzE0IDE2LjI5IDE1Ljc5IDE0LjUgMTggMTQuNU0xNCAyTDIwIDhWMTIuMTdDMTkuNSAxMi4wNiAxOSAxMiAxOC41IDEyTDE4IDEyVjlIMTNWNEg2VjIwSDEyLjE3QzEyLjM0IDIwLjcyIDEyLjYzIDIxLjM5IDEzIDIySDZDNC45IDIyIDQgMjEuMSA0IDIwVjRDNCAyLjkgNC45IDIgNiAySDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZW1vdmUgPSBcIk02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNMTMsOUgxOC41TDEzLDMuNVY5TTEwLDE0LjU5TDcuODgsMTIuNDZMNi40NiwxMy44OEw4LjU5LDE2TDYuNDYsMTguMTJMNy44OCwxOS41NEwxMCwxNy40MUwxMi4xMiwxOS41NEwxMy41NCwxOC4xMkwxMS40MSwxNkwxMy41NCwxMy44OEwxMi4xMiwxMi40NkwxMCwxNC41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlUmVtb3ZlT3V0bGluZSA9IFwiTTE0IDJINkM0Ljg5IDIgNCAyLjkgNCA0VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE5LjExIDIyIDIwIDIxLjExIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME0xMS45NSAxNS40NkwxNC4wOCAxNy41OEwxMi42NiAxOUwxMC41NCAxNi44N0w4LjQyIDE5TDcgMTcuNThMOS4xMyAxNS40Nkw3IDEzLjM0TDguNDIgMTEuOTJMMTAuNTQgMTQuMDVMMTIuNjYgMTEuOTJMMTQuMDggMTMuMzRMMTEuOTUgMTUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVJlcGxhY2UgPSBcIk0xNCwxMkgxOS41TDE0LDYuNVYxMk04LDVIMTVMMjEsMTFWMjFBMiwyIDAgMCwxIDE5LDIzSDhDNi44OSwyMyA2LDIyLjEgNiwyMVYxOEgxMVYyMEwxNSwxN0wxMSwxNFYxNkg2VjdBMiwyIDAgMCwxIDgsNU0xMy41LDNINFYxNkg2VjE4SDRBMiwyIDAgMCwxIDIsMTZWM0EyLDIgMCAwLDEgNCwxSDExLjVMMTMuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZXBsYWNlT3V0bGluZSA9IFwiTTE0LDNMMTIsMUg0QTIsMiAwIDAsMCAyLDNWMTVBMiwyIDAgMCwwIDQsMTdIMTFWMTlMMTUsMTZMMTEsMTNWMTVINFYzSDE0TTIxLDEwVjIxQTIsMiAwIDAsMSAxOSwyM0g4QTIsMiAwIDAsMSA2LDIxVjE5SDhWMjFIMTlWMTJIMTRWN0g4VjEzSDZWN0EyLDIgMCAwLDEgOCw1SDE2TDIxLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVSZXN0b3JlID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMiwxOEM5Ljk1LDE4IDguMTksMTYuNzYgNy40MiwxNUg5LjEzQzkuNzYsMTUuOSAxMC44MSwxNi41IDEyLDE2LjVBMy41LDMuNSAwIDAsMCAxNS41LDEzQTMuNSwzLjUgMCAwLDAgMTIsOS41QzEwLjY1LDkuNSA5LjUsMTAuMjggOC45LDExLjRMMTAuNSwxM0g2LjVWOUw3LjgsMTAuM0M4LjY5LDguOTIgMTAuMjMsOCAxMiw4QTUsNSAwIDAsMSAxNywxM0E1LDUgMCAwLDEgMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVJlc3RvcmVPdXRsaW5lID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNMMTggOVYyME0xNyAxMy4yNEMxNyAxNS44NiAxNC44NyAxOCAxMi4yNCAxOEMxMC4yOSAxOCA4LjYxIDE2LjgyIDcuODggMTUuMTRIOS41QzEwLjExIDE2IDExLjExIDE2LjU3IDEyLjI0IDE2LjU3QzE0LjA4IDE2LjU3IDE1LjU3IDE1LjA3IDE1LjU3IDEzLjI0UzE0LjA4IDkuOSAxMi4yNCA5LjlDMTAuOTUgOS45IDkuODYgMTAuNjUgOS4yOSAxMS43MUwxMC44MSAxMy4yNEg3VjkuNDNMOC4yNCAxMC42N0M5LjA5IDkuMzUgMTAuNTUgOC41IDEyLjI0IDguNUMxNC44NyA4LjQ3IDE3IDEwLjYxIDE3IDEzLjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVTZWFyY2ggPSBcIk0xNCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxM0MxMi41OSwyMS43NSAxMi4yLDIxLjQ0IDExLjg2LDIxLjFDOS4yMiwxOC42NyA5LjA1LDE0LjU2IDExLjUsMTEuOTJDMTMuNjksOS41IDE3LjMzLDkuMTMgMjAsMTFWOEwxNCwyTTEzLDlWMy41TDE4LjUsOUgxM00yMC4zMSwxOC45QzIxLjY0LDE2Ljc5IDIxLDE0IDE4LjkxLDEyLjY4QzE2LjgsMTEuMzUgMTQsMTIgMTIuNjksMTQuMDhDMTEuMzUsMTYuMTkgMTIsMTguOTcgMTQuMDksMjAuM0MxNS41NSwyMS4yMyAxNy40MSwyMS4yMyAxOC44OCwyMC4zMkwyMiwyMy4zOUwyMy4zOSwyMkwyMC4zMSwxOC45TTE2LjUsMTlBMi41LDIuNSAwIDAsMSAxNCwxNi41QTIuNSwyLjUgMCAwLDEgMTYuNSwxNEEyLjUsMi41IDAgMCwxIDE5LDE2LjVBMi41LDIuNSAwIDAsMSAxNi41LDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVTZWFyY2hPdXRsaW5lID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMTNDMTIuNTksMjEuNzUgMTIuMiwyMS40NCAxMS44NiwyMS4xQzExLjUzLDIwLjc3IDExLjI1LDIwLjQgMTEsMjBINlY0SDEzVjlIMThWMTAuMThDMTguNzEsMTAuMzQgMTkuMzksMTAuNjEgMjAsMTFWOEwxNCwyTTIwLjMxLDE4LjlDMjEuNjQsMTYuNzkgMjEsMTQgMTguOTEsMTIuNjhDMTYuOCwxMS4zNSAxNCwxMiAxMi42OSwxNC4wOEMxMS4zNSwxNi4xOSAxMiwxOC45NyAxNC4wOSwyMC4zQzE1LjU1LDIxLjIzIDE3LjQxLDIxLjIzIDE4Ljg4LDIwLjMyTDIyLDIzLjM5TDIzLjM5LDIyTDIwLjMxLDE4LjlNMTYuNSwxOUEyLjUsMi41IDAgMCwxIDE0LDE2LjVBMi41LDIuNSAwIDAsMSAxNi41LDE0QTIuNSwyLjUgMCAwLDEgMTksMTYuNUEyLjUsMi41IDAgMCwxIDE2LjUsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVNlbmQgPSBcIk0xNCwySDZDNC44OSwyIDQsMi44OSA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xMi41NCwxOS4zN1YxNy4zN0g4LjU0VjE1LjM4SDEyLjU0VjEzLjM4TDE1LjU0LDE2LjM4TDEyLjU0LDE5LjM3TTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU2VuZE91dGxpbmUgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY4TDE0IDJNMTggMjBINlY0SDEzVjlIMThWMjBNMTIuNTQgMTguNVYxNi41SDguNTRWMTQuNUgxMi41NFYxMi41TDE1LjU0IDE1LjVMMTIuNTQgMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU2V0dGluZ3MgPSBcIk02IDBDNC44OSAwIDQgLjg5IDQgMlYxOEEyIDIgMCAwIDAgNiAyMEgxOEEyIDIgMCAwIDAgMjAgMThWNkwxNCAwSDZNMTMgMS41TDE4LjUgN0gxM1YxLjVNNyAyMlYyNEg5VjIySDdNMTEgMjJWMjRIMTNWMjJIMTFNMTUgMjJWMjRIMTdWMjJIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVNldHRpbmdzT3V0bGluZSA9IFwiTTYgMEEyIDIgMCAwIDAgNCAyVjE4QTIgMiAwIDAgMCA2IDIwSDE4QTIgMiAwIDAgMCAyMCAxOFY2TDE0IDBINk02IDJIMTNWN0gxOFYxOEg2VjJNNyAyMlYyNEg5VjIySDdNMTEgMjJWMjRIMTNWMjJIMTFNMTUgMjJWMjRIMTdWMjJIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVN0YXIgPSBcIk0xNCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xNC41IDE4LjlMMTIgMTcuNUw5LjUgMTlMMTAuMiAxNi4yTDggMTQuM0wxMC45IDE0LjFMMTIgMTEuNEwxMy4xIDE0TDE2IDE0LjJMMTMuOCAxNi4xTDE0LjUgMTguOU0xMyA5VjMuNUwxOC41IDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVN0YXJPdXRsaW5lID0gXCJNMTQgMkg2QzQuOSAyIDQgMi45IDQgNFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFYyME05LjUgMThMMTAuMiAxNS4yTDggMTMuM0wxMC45IDEzLjFMMTIgMTAuNEwxMy4xIDEzTDE2IDEzLjJMMTMuOCAxNS4xTDE0LjUgMTcuOUwxMiAxNi41TDkuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU3dhcCA9IFwiTTE0IDJINkEyIDIgMCAwIDAgNCA0VjIwQTIgMiAwIDAgMCA2IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY4TTE0IDE4VjE2SDEwVjE4TDcgMTVMMTAgMTJWMTRIMTRWMTJMMTcgMTVNMTMgOVYzLjVMMTguNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVTd2FwT3V0bGluZSA9IFwiTTE3IDE1TDE0IDEyVjE0SDEwVjEyTDcgMTVMMTAgMThWMTZIMTRWMThNMTQgMkg2QTIgMiAwIDAgMCA0IDRWMjBBMiAyIDAgMCAwIDYgMjJIMThBMiAyIDAgMCAwIDIwIDIwVjhMMTQgMk0xOCAyMEg2VjRIMTNWOUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU3luYyA9IFwiTTExIDE3LjVDMTEgMTMuOSAxMy45IDExIDE3LjUgMTFDMTguNCAxMSAxOS4yIDExLjIgMjAgMTEuNVY4TDE0IDJINkM0LjkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDEyLjhDMTEuNyAyMC44IDExIDE5LjIgMTEgMTcuNU0xMyAzLjVMMTguNSA5SDEzVjMuNU0xNyAxMlYxMy41QzE5LjIgMTMuNSAyMSAxNS4zIDIxIDE3LjVDMjEgMTguMyAyMC44IDE5LjEgMjAuMyAxOS43TDE5LjIgMTguNkMxOS40IDE4LjMgMTkuNSAxNy45IDE5LjUgMTcuNUMxOS41IDE2LjEgMTguNCAxNSAxNyAxNVYxNi41TDE0LjggMTQuM0wxNyAxMk0xNyAyM1YyMS41QzE0LjggMjEuNSAxMyAxOS43IDEzIDE3LjVDMTMgMTYuNyAxMy4yIDE1LjkgMTMuNyAxNS4zTDE0LjggMTYuNEMxNC42IDE2LjcgMTQuNSAxNy4xIDE0LjUgMTcuNUMxNC41IDE4LjkgMTUuNiAyMCAxNyAyMFYxOC41TDE5LjIgMjAuN0wxNyAyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlU3luY091dGxpbmUgPSBcIk0xMi44IDIySDZDNC45IDIyIDQgMjEuMSA0IDIwVjRDNCAyLjkgNC45IDIgNiAySDE0TDIwIDhWMTEuNUMxOS40IDExLjIgMTguNyAxMS4xIDE4IDExVjlIMTNWNEg2VjIwSDExLjVDMTEuOCAyMC43IDEyLjMgMjEuNCAxMi44IDIyTTE3IDEyTDE0LjggMTQuMkwxNyAxNi40VjE1QzE4LjQgMTUgMTkuNSAxNi4xIDE5LjUgMTcuNUMxOS41IDE3LjkgMTkuNCAxOC4zIDE5LjIgMTguNkwyMC4zIDE5LjdDMjAuNyAxOS4xIDIxIDE4LjMgMjEgMTcuNUMyMSAxNS4zIDE5LjIgMTMuNSAxNyAxMy41VjEyTTE5LjIgMjAuOEwxNyAxOC41VjIwQzE1LjYgMjAgMTQuNSAxOC45IDE0LjUgMTcuNUMxNC41IDE3LjEgMTQuNiAxNi43IDE0LjggMTYuNEwxMy43IDE1LjNDMTMuMyAxNS45IDEzIDE2LjcgMTMgMTcuNUMxMyAxOS43IDE0LjggMjEuNSAxNyAyMS41VjIzTDE5LjIgMjAuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlVGFibGUgPSBcIk0xNCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWOEwxNCwyTTEwLDE5SDdWMTdIMTBWMTlNMTAsMTZIN1YxNEgxMFYxNk0xMCwxM0g3VjExSDEwVjEzTTE0LDE5SDExVjE3SDE0VjE5TTE0LDE2SDExVjE0SDE0VjE2TTE0LDEzSDExVjExSDE0VjEzTTEzLDlWMy41TDE4LjUsOUgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlVGFibGVCb3ggPSBcIk0xOSAzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuODkgMjAuMSAzIDE5IDNNOSAxOEg2VjE2SDlWMThNOSAxNUg2VjEzSDlWMTVNOSAxMkg2VjEwSDlWMTJNMTMgMThIMTBWMTZIMTNWMThNMTMgMTVIMTBWMTNIMTNWMTVNMTMgMTJIMTBWMTBIMTNWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRhYmxlQm94TXVsdGlwbGUgPSBcIk0zIDVWMjFIMTlWMjNIM0MxLjkgMjMgMSAyMi4xIDEgMjFWNUgzTTIxIDFIN0M1Ljg5IDEgNSAxLjg5IDUgM1YxN0M1IDE4LjExIDUuOSAxOSA3IDE5SDIxQzIyLjExIDE5IDIzIDE4LjExIDIzIDE3VjNDMjMgMS44OSAyMi4xIDEgMjEgMU0xMSAxNkg4VjE0SDExVjE2TTExIDEzSDhWMTFIMTFWMTNNMTEgMTBIOFY4SDExVjEwTTE1IDE2SDEyVjE0SDE1VjE2TTE1IDEzSDEyVjExSDE1VjEzTTE1IDEwSDEyVjhIMTVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRhYmxlQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMyA1VjIxSDE5VjIzSDNDMS45IDIzIDEgMjIuMSAxIDIxVjVIM00yMSAxSDdDNS44OSAxIDUgMS44OSA1IDNWMTdDNSAxOC4xIDUuOSAxOSA3IDE5SDIxQzIyLjExIDE5IDIzIDE4LjExIDIzIDE3VjNDMjMgMS45IDIyLjEgMSAyMSAxTTIxIDE3SDdWM0gyMVYxN00xMSAxNEg4VjE2SDExVjE0TTE1IDE0SDEyVjE2SDE1VjE0TTExIDExSDhWMTNIMTFWMTFNMTUgMTFIMTJWMTNIMTVWMTFNMTEgOEg4VjEwSDExVjhNMTUgOEgxMlYxMEgxNVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVUYWJsZUJveE91dGxpbmUgPSBcIk0xOSAzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM00xOSAxOUg1VjVIMTlWMTlNOSAxOEg2VjE2SDlWMThNMTMgMThIMTBWMTZIMTNWMThNOSAxNUg2VjEzSDlWMTVNMTMgMTVIMTBWMTNIMTNWMTVNOSAxMkg2VjEwSDlWMTJNMTMgMTJIMTBWMTBIMTNWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRhYmxlT3V0bGluZSA9IFwiTTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTgsMjBINlY0SDEzVjlIMThWMjBNMTAsMTNIN1YxMUgxMFYxM00xNCwxM0gxMVYxMUgxNFYxM00xMCwxNkg3VjE0SDEwVjE2TTE0LDE2SDExVjE0SDE0VjE2TTEwLDE5SDdWMTdIMTBWMTlNMTQsMTlIMTFWMTdIMTRWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRyZWUgPSBcIk0zLDNIOVY3SDNWM00xNSwxMEgyMVYxNEgxNVYxME0xNSwxN0gyMVYyMUgxNVYxN00xMywxM0g3VjE4SDEzVjIwSDdMNSwyMFY5SDdWMTFIMTNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVRyZWVPdXRsaW5lID0gXCJNMTIgMTNIN1YxOEgxMlYyMEg1VjEwSDdWMTFIMTJWMTNNOCA0VjZINFY0SDhNMTAgMkgyVjhIMTBWMk0yMCAxMVYxM0gxNlYxMUgyME0yMiA5SDE0VjE1SDIyVjlNMjAgMThWMjBIMTZWMThIMjBNMjIgMTZIMTRWMjJIMjJWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVuZG8gPSBcIk0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTEyLjE2LDE0LjMxQzEwLjYsMTQuMzEgOS4xOSwxNC44OSA4LjExLDE1LjgzTDYsMTMuNzJWMTlIMTEuMjhMOS4xNSwxNi44OEM5Ljk3LDE2LjIgMTEsMTUuNzggMTIuMTYsMTUuNzhDMTQuMjMsMTUuNzggMTYsMTcuMTMgMTYuNjEsMTlMMTgsMTguNTRDMTcuMTksMTYuMDkgMTQuODgsMTQuMzEgMTIuMTYsMTQuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVuZG9PdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE3IDE3LjYxTDE1Ljg0IDE4QzE1LjMzIDE2LjQ0IDEzLjg2IDE1LjMxIDEyLjEzIDE1LjMxQzExLjE3IDE1LjMxIDEwLjMxIDE1LjY2IDkuNjMgMTYuMjNMMTEuNCAxOEg3VjEzLjZMOC43NiAxNS4zNkM5LjY2IDE0LjU3IDEwLjgzIDE0LjA5IDEyLjEzIDE0LjA5QzE0LjQgMTQuMDkgMTYuMzMgMTUuNTcgMTcgMTcuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVwbG9hZCA9IFwiTTE0LDJINkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY4TDE0LDJNMTMuNSwxNlYxOUgxMC41VjE2SDhMMTIsMTJMMTYsMTZIMTMuNU0xMyw5VjMuNUwxOC41LDlIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVVwbG9hZE91dGxpbmUgPSBcIk0xNCwyTDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwySDE0TTE4LDIwVjlIMTNWNEg2VjIwSDE4TTEyLDEyTDE2LDE2SDEzLjVWMTlIMTAuNVYxNkg4TDEyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVWaWRlbyA9IFwiTTEzLDlIMTguNUwxMywzLjVWOU02LDJIMTRMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjRDNCwyLjg5IDQuODksMiA2LDJNMTcsMTlWMTNMMTQsMTUuMlYxM0g3VjE5SDE0VjE2LjhMMTcsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVZpZGVvT3V0bGluZSA9IFwiTTE0LDJMMjAsOFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJIMTRNMTgsMjBWOUgxM1Y0SDZWMjBIMThNMTYsMThMMTMuNSwxNi4zVjE4SDhWMTNIMTMuNVYxNC43TDE2LDEzVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVXb3JkID0gXCJNMTQsMkg2QTIsMiAwIDAsMCA0LDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjhMMTQsMk0xNS4yLDIwSDEzLjhMMTIsMTMuMkwxMC4yLDIwSDguOEw2LjYsMTFIOC4xTDkuNSwxNy44TDExLjMsMTFIMTIuNkwxNC40LDE3LjhMMTUuOCwxMUgxNy4zTDE1LjIsMjBNMTMsOVYzLjVMMTguNSw5SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbGVXb3JkQm94ID0gXCJNMTUuNSwxN0gxNEwxMiw5LjVMMTAsMTdIOC41TDYuMSw3SDcuOEw5LjM0LDE0LjVMMTEuMyw3SDEyLjdMMTQuNjcsMTQuNUwxNi4yLDdIMTcuOU0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxlV29yZEJveE91dGxpbmUgPSBcIk01IDNDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM0g1TTUgNUgxOVYxOUg1VjVNMTcuOSA3TDE1LjUgMTdIMTRMMTIgOS41TDEwIDE3SDguNUw2LjEgN0g3LjhMOS4zNCAxNC41TDExLjMgN0gxMi43TDE0LjY3IDE0LjVMMTYuMiA3SDE3LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsZVdvcmRPdXRsaW5lID0gXCJNMTQgMkg2QzQuODkgMiA0IDIuOSA0IDRWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMThDMTkuMTEgMjIgMjAgMjEuMTEgMjAgMjBWOEwxNCAyTTE4IDIwSDZWNEgxM1Y5SDE4VjIwTTE3LjM1IDEwTDE1LjI1IDE5SDEzLjg1TDEyLjA1IDEyLjIxTDEwLjI1IDE5SDguODVMNi42NSAxMEg4LjE1TDkuNTUgMTYuODFMMTEuMzUgMTBIMTIuNjVMMTQuNDUgMTYuODFMMTUuODUgMTBIMTcuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsbSA9IFwiTTMuNSwzSDVWMS44QzUsMS4zNiA1LjM2LDEgNS44LDFIMTAuMkMxMC42NCwxIDExLDEuMzYgMTEsMS44VjNIMTIuNUExLjUsMS41IDAgMCwxIDE0LDQuNVY1SDIyVjIwSDE0VjIwLjVBMS41LDEuNSAwIDAsMSAxMi41LDIySDMuNUExLjUsMS41IDAgMCwxIDIsMjAuNVY0LjVBMS41LDEuNSAwIDAsMSAzLjUsM00xOCw3VjlIMjBWN0gxOE0xNCw3VjlIMTZWN0gxNE0xMCw3VjlIMTJWN0gxME0xNCwxNlYxOEgxNlYxNkgxNE0xOCwxNlYxOEgyMFYxNkgxOE0xMCwxNlYxOEgxMlYxNkgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxtc3RyaXAgPSBcIk0xOCw5SDE2VjdIMThNMTgsMTNIMTZWMTFIMThNMTgsMTdIMTZWMTVIMThNOCw5SDZWN0g4TTgsMTNINlYxMUg4TTgsMTdINlYxNUg4TTE4LDNWNUgxNlYzSDhWNUg2VjNINFYyMUg2VjE5SDhWMjFIMTZWMTlIMThWMjFIMjBWM0gxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWxtc3RyaXBCb3ggPSBcIk0xOSAzQzIwLjEgMyAyMSAzLjkgMjEgNVYxOUMyMSAyMC4xIDIwLjEgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNIMTlNNyAxOFYxNkg1VjE4SDdNNyAxM1YxMUg1VjEzSDdNNyA4VjZINVY4SDdNMTkgMThWMTZIMTdWMThIMTlNMTkgMTNWMTFIMTdWMTNIMTlNMTkgOFY2SDE3VjhIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsbXN0cmlwQm94TXVsdGlwbGUgPSBcIk00LDZIMlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZNMjAsMkg4QTIsMiAwIDAsMCA2LDRWMTZBMiwyIDAgMCwwIDgsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJNMTAsMTVIOFYxM0gxMFYxNU0xMCwxMUg4VjlIMTBWMTFNMTAsN0g4VjVIMTBWN00yMCwxNUgxOFYxM0gyMFYxNU0yMCwxMUgxOFY5SDIwVjExTTIwLDdIMThWNUgyMFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbG1zdHJpcE9mZiA9IFwiTTEsNC4yN0wyLjI4LDNMMjEsMjEuNzJMMTkuNzMsMjNMMTYsMTkuMjdWMjFIOFYxOUg2VjIxSDRWNy4yN0wxLDQuMjdNMTgsOVY3SDE2VjlIMThNMTgsMTNWMTFIMTZWMTNIMThNMTgsMTVIMTYuODJMNi44Miw1SDhWM0gxNlY1SDE4VjNIMjBWMTguMThMMTgsMTYuMThWMTVNOCwxM1YxMS4yN0w3LjczLDExSDZWMTNIOE04LDE3VjE1SDZWMTdIOE02LDNWNC4xOEw0LjgyLDNINlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXIgPSBcIk0xNCwxMlYxOS44OEMxNC4wNCwyMC4xOCAxMy45NCwyMC41IDEzLjcxLDIwLjcxQzEzLjMyLDIxLjEgMTIuNjksMjEuMSAxMi4zLDIwLjcxTDEwLjI5LDE4LjdDMTAuMDYsMTguNDcgOS45NiwxOC4xNiAxMCwxNy44N1YxMkg5Ljk3TDQuMjEsNC42MkMzLjg3LDQuMTkgMy45NSwzLjU2IDQuMzgsMy4yMkM0LjU3LDMuMDggNC43OCwzIDUsM1YzSDE5VjNDMTkuMjIsMyAxOS40MywzLjA4IDE5LjYyLDMuMjJDMjAuMDUsMy41NiAyMC4xMyw0LjE5IDE5Ljc5LDQuNjJMMTQuMDMsMTJIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyTWVudSA9IFwiTTExIDExTDE2Ljc2IDMuNjJBMSAxIDAgMCAwIDE2LjU5IDIuMjJBMSAxIDAgMCAwIDE2IDJIMkExIDEgMCAwIDAgMS4zOCAyLjIyQTEgMSAwIDAgMCAxLjIxIDMuNjJMNyAxMVYxNi44N0ExIDEgMCAwIDAgNy4yOSAxNy43TDkuMjkgMTkuN0ExIDEgMCAwIDAgMTAuNyAxOS43QTEgMSAwIDAgMCAxMSAxOC44N1YxMU0xMyAxNkwxOCAyMUwyMyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJNZW51T3V0bGluZSA9IFwiTTEyIDE4Ljg4QTEgMSAwIDAgMSAxMS43MSAxOS43MUExIDEgMCAwIDEgMTAuMyAxOS43MUw2LjMgMTUuNzFBMSAxIDAgMCAxIDYgMTQuODdWOS43NUwxLjIxIDMuNjJBMSAxIDAgMCAxIDEuMzggMi4yMkExIDEgMCAwIDEgMiAySDE2QTEgMSAwIDAgMSAxNi42MiAyLjIyQTEgMSAwIDAgMSAxNi43OSAzLjYyTDEyIDkuNzVWMTguODhNNCA0TDggOS4wNlYxNC41OEwxMCAxNi41OFY5LjA1TDE0IDRNMTMgMTZMMTggMjFMMjMgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyTWludXMgPSBcIk0xMiAxMlYxOS44OEMxMi4wNCAyMC4xOCAxMS45NCAyMC41IDExLjcxIDIwLjcxQzExLjMyIDIxLjEgMTAuNjkgMjEuMSAxMC4zIDIwLjcxTDguMjkgMTguN0M4LjA2IDE4LjQ3IDcuOTYgMTguMTYgOCAxNy44NlYxMkg3Ljk3TDIuMjEgNC42MkMxLjg3IDQuMTkgMS45NSAzLjU2IDIuMzggMy4yMkMyLjU3IDMuMDggMi43OCAzIDMgM1YzSDE3VjNDMTcuMjIgMyAxNy40MyAzLjA4IDE3LjYyIDMuMjJDMTguMDUgMy41NiAxOC4xMyA0LjE5IDE3Ljc5IDQuNjJMMTIuMDMgMTJIMTJNMTUgMTdIMjNWMTlIMTVWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyTWludXNPdXRsaW5lID0gXCJNMTUgMTdIMjNWMTlIMTVWMTdNMTMgMTkuODhDMTMuMDQgMjAuMTggMTIuOTQgMjAuNSAxMi43MiAyMC43MUMxMi4zMiAyMS4xIDExLjY5IDIxLjEgMTEuMyAyMC43MUw3LjI5IDE2LjdDNy4wNiAxNi40NyA2Ljk2IDE2LjE2IDcgMTUuODdWMTAuNzVMMi4yMSA0LjYyQzEuODcgNC4xOSAxLjk1IDMuNTYgMi4zOCAzLjIyQzIuNTcgMy4wOCAyLjc4IDMgMyAzVjNIMTdWM0MxNy4yMiAzIDE3LjQzIDMuMDggMTcuNjIgMy4yMkMxOC4wNSAzLjU2IDE4LjEzIDQuMTkgMTcuNzkgNC42MkwxMyAxMC43NVYxOS44OE01LjA0IDVMOSAxMC4wN1YxNS41OEwxMSAxNy41OFYxMC4wNUwxNC45NiA1SDUuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyT2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0w5LjUgMTEuMzdMOS45NyAxMkgxMFYxNy44N0M5Ljk2IDE4LjE2IDEwLjA2IDE4LjQ3IDEwLjI5IDE4LjdMMTIuMyAyMC43MUMxMi42OSAyMS4xIDEzLjMyIDIxLjEgMTMuNzEgMjAuNzFDMTMuOTQgMjAuNSAxNC4wNCAyMC4xOCAxNCAxOS44OFYxNS44OUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwxNCAxMy4zNUw5LjQxIDguNzZMNC4xNSAzLjVMMi4zOSAxLjczTTYuMjEgM0wxNC41NCAxMS4zNEwxOS43OSA0LjYyQzIwLjEzIDQuMTkgMjAuMDUgMy41NiAxOS42MiAzLjIyQzE5LjQzIDMuMDggMTkuMjIgMyAxOSAzSDYuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyT2ZmT3V0bGluZSA9IFwiTTIuMzkgMS43M0wxLjExIDNMOSAxMC44OVYxNS44N0M4Ljk2IDE2LjE2IDkuMDYgMTYuNDcgOS4yOSAxNi43TDEzLjMgMjAuNzFDMTMuNjkgMjEuMSAxNC4zMiAyMS4xIDE0LjcxIDIwLjcxQzE0Ljk0IDIwLjUgMTUuMDQgMjAuMTggMTUgMTkuODhWMTYuODlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMTUgMTQuMzVWMTQuMzRMMTMgMTIuMzVMMTEgMTAuMzRMNC4xNSAzLjVMMi4zOSAxLjczTTYuMjEgM0w4LjIgNUgxNi45NkwxMy4xMSA5LjkxTDE1IDExLjhWMTAuNzVMMTkuNzkgNC42MkMyMC4xMyA0LjE5IDIwLjA1IDMuNTYgMTkuNjIgMy4yMkMxOS40MyAzLjA4IDE5LjIyIDMgMTkgM0g2LjIxTTExIDEyLjg5TDEzIDE0Ljg5VjE3LjU4TDExIDE1LjU4VjEyLjg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbHRlck91dGxpbmUgPSBcIk0xNSwxOS44OEMxNS4wNCwyMC4xOCAxNC45NCwyMC41IDE0LjcxLDIwLjcxQzE0LjMyLDIxLjEgMTMuNjksMjEuMSAxMy4zLDIwLjcxTDkuMjksMTYuN0M5LjA2LDE2LjQ3IDguOTYsMTYuMTYgOSwxNS44N1YxMC43NUw0LjIxLDQuNjJDMy44Nyw0LjE5IDMuOTUsMy41NiA0LjM4LDMuMjJDNC41NywzLjA4IDQuNzgsMyA1LDNWM0gxOVYzQzE5LjIyLDMgMTkuNDMsMy4wOCAxOS42MiwzLjIyQzIwLjA1LDMuNTYgMjAuMTMsNC4xOSAxOS43OSw0LjYyTDE1LDEwLjc1VjE5Ljg4TTcuMDQsNUwxMSwxMC4wNlYxNS41OEwxMywxNy41OFYxMC4wNUwxNi45Niw1SDcuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyUGx1cyA9IFwiTTEyIDEyVjE5Ljg4QzEyLjA0IDIwLjE4IDExLjk0IDIwLjUgMTEuNzEgMjAuNzFDMTEuMzIgMjEuMSAxMC42OSAyMS4xIDEwLjMgMjAuNzFMOC4yOSAxOC43QzguMDYgMTguNDcgNy45NiAxOC4xNiA4IDE3Ljg3VjEySDcuOTdMMi4yMSA0LjYyQzEuODcgNC4xOSAxLjk1IDMuNTYgMi4zOCAzLjIyQzIuNTcgMy4wOCAyLjc4IDMgMyAzSDE3QzE3LjIyIDMgMTcuNDMgMy4wOCAxNy42MiAzLjIyQzE4LjA1IDMuNTYgMTguMTMgNC4xOSAxNy43OSA0LjYyTDEyLjAzIDEySDEyTTE1IDE3SDE4VjE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbHRlclBsdXNPdXRsaW5lID0gXCJNMTUgMTdIMThWMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdNMTMgMTkuODhDMTMuMDQgMjAuMTggMTIuOTQgMjAuNSAxMi43MiAyMC43MUMxMi4zMiAyMS4xIDExLjY5IDIxLjEgMTEuMyAyMC43MUw3LjI5IDE2LjdDNy4wNiAxNi40NyA2Ljk2IDE2LjE2IDcgMTUuODdWMTAuNzVMMi4yMSA0LjYyQzEuODcgNC4xOSAxLjk1IDMuNTYgMi4zOCAzLjIyQzIuNTcgMy4wOCAyLjc4IDMgMyAzVjNIMTdWM0MxNy4yMiAzIDE3LjQzIDMuMDggMTcuNjIgMy4yMkMxOC4wNSAzLjU2IDE4LjEzIDQuMTkgMTcuNzkgNC42MkwxMyAxMC43NVYxOS44OE01LjA0IDVMOSAxMC4wN1YxNS41OEwxMSAxNy41OFYxMC4wNUwxNC45NiA1SDUuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyUmVtb3ZlID0gXCJNMTQuNzYsMjAuODNMMTcuNiwxOEwxNC43NiwxNS4xN0wxNi4xNywxMy43NkwxOSwxNi41N0wyMS44MywxMy43NkwyMy4yNCwxNS4xN0wyMC40MywxOEwyMy4yNCwyMC44M0wyMS44MywyMi4yNEwxOSwxOS40TDE2LjE3LDIyLjI0TDE0Ljc2LDIwLjgzTTEyLDEyVjE5Ljg4QzEyLjA0LDIwLjE4IDExLjk0LDIwLjUgMTEuNzEsMjAuNzFDMTEuMzIsMjEuMSAxMC42OSwyMS4xIDEwLjMsMjAuNzFMOC4yOSwxOC43QzguMDYsMTguNDcgNy45NiwxOC4xNiA4LDE3Ljg3VjEySDcuOTdMMi4yMSw0LjYyQzEuODcsNC4xOSAxLjk1LDMuNTYgMi4zOCwzLjIyQzIuNTcsMy4wOCAyLjc4LDMgMywzVjNIMTdWM0MxNy4yMiwzIDE3LjQzLDMuMDggMTcuNjIsMy4yMkMxOC4wNSwzLjU2IDE4LjEzLDQuMTkgMTcuNzksNC42MkwxMi4wMywxMkgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJSZW1vdmVPdXRsaW5lID0gXCJNMTQuNzMsMjAuODNMMTcuNTgsMThMMTQuNzMsMTUuMTdMMTYuMTUsMTMuNzZMMTksMTYuNTdMMjEuOCwxMy43NkwyMy4yMiwxNS4xN0wyMC40MSwxOEwyMy4yMiwyMC44M0wyMS44LDIyLjI0TDE5LDE5LjRMMTYuMTUsMjIuMjRMMTQuNzMsMjAuODNNMTMsMTkuODhDMTMuMDQsMjAuMTggMTIuOTQsMjAuNSAxMi43MSwyMC43MUMxMi4zMiwyMS4xIDExLjY5LDIxLjEgMTEuMywyMC43MUw3LjI5LDE2LjdDNy4wNiwxNi40NyA2Ljk2LDE2LjE2IDcsMTUuODdWMTAuNzVMMi4yMSw0LjYyQzEuODcsNC4xOSAxLjk1LDMuNTYgMi4zOCwzLjIyQzIuNTcsMy4wOCAyLjc4LDMgMywzVjNIMTdWM0MxNy4yMiwzIDE3LjQzLDMuMDggMTcuNjIsMy4yMkMxOC4wNSwzLjU2IDE4LjEzLDQuMTkgMTcuNzksNC42MkwxMywxMC43NVYxOS44OE01LjA0LDVMOSwxMC4wNlYxNS41OEwxMSwxNy41OFYxMC4wNUwxNC45Niw1SDUuMDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlsdGVyVmFyaWFudCA9IFwiTTYsMTNIMThWMTFINk0zLDZWOEgyMVY2TTEwLDE4SDE0VjE2SDEwVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbHRlclZhcmlhbnRNaW51cyA9IFwiTTIxIDhIM1Y2SDIxVjhNMTMuODEgMTZIMTBWMThIMTMuMDlDMTMuMjEgMTcuMjggMTMuNDYgMTYuNjEgMTMuODEgMTZNMTggMTFINlYxM0gxOFYxMU0yMyAxOEgxNVYyMEgyM1YxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJWYXJpYW50UGx1cyA9IFwiTTIxIDhIM1Y2SDIxVjhNMTMuODEgMTZIMTBWMThIMTMuMDlDMTMuMjEgMTcuMjggMTMuNDYgMTYuNjEgMTMuODEgMTZNMTggMTFINlYxM0gxOFYxMU0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaWx0ZXJWYXJpYW50UmVtb3ZlID0gXCJNMjEgOEgzVjZIMjFWOE0xMy44MSAxNkgxMFYxOEgxMy4wOUMxMy4yMSAxNy4yOCAxMy40NiAxNi42MSAxMy44MSAxNk0xOCAxMUg2VjEzSDE4VjExTTIxLjEyIDE1LjQ2TDE5IDE3LjU5TDE2Ljg4IDE1LjQ2TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbmFuY2UgPSBcIk02LDE2LjVMMywxOS40NFYxMUg2TTExLDE0LjY2TDkuNDMsMTMuMzJMOCwxNC42NFY3SDExTTE2LDEzTDEzLDE2VjNIMTZNMTguODEsMTIuODFMMTcsMTFIMjJWMTZMMjAuMjEsMTQuMjFMMTMsMjEuMzZMOS41MywxOC4zNEw1Ljc1LDIySDNMOS40NywxNS42NkwxMywxOC42NFwiO1xyXG5leHBvcnQgdmFyIG1kaUZpbmRSZXBsYWNlID0gXCJNMTEsNkMxMi4zOCw2IDEzLjYzLDYuNTYgMTQuNTQsNy40NkwxMiwxMEgxOFY0TDE1Ljk1LDYuMDVDMTQuNjgsNC43OCAxMi45Myw0IDExLDRDNy40Nyw0IDQuNTcsNi42MSA0LjA4LDEwSDYuMUM2LjU2LDcuNzIgOC41OCw2IDExLDZNMTYuNjQsMTUuMTRDMTcuMywxNC4yNCAxNy43NiwxMy4xNyAxNy45MiwxMkgxNS45QzE1LjQ0LDE0LjI4IDEzLjQyLDE2IDExLDE2QzkuNjIsMTYgOC4zNywxNS40NCA3LjQ2LDE0LjU0TDEwLDEySDRWMThMNi4wNSwxNS45NUM3LjMyLDE3LjIyIDkuMDcsMTggMTEsMThDMTIuNTUsMTggMTQsMTcuNSAxNS4xNCwxNi42NEwyMCwyMS41TDIxLjUsMjBMMTYuNjQsMTUuMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmluZ2VycHJpbnQgPSBcIk0xNy44MSw0LjQ3QzE3LjczLDQuNDcgMTcuNjUsNC40NSAxNy41OCw0LjQxQzE1LjY2LDMuNDIgMTQsMyAxMiwzQzEwLjAzLDMgOC4xNSwzLjQ3IDYuNDQsNC40MUM2LjIsNC41NCA1LjksNC40NSA1Ljc2LDQuMjFDNS42MywzLjk3IDUuNzIsMy42NiA1Ljk2LDMuNTNDNy44MiwyLjUgOS44NiwyIDEyLDJDMTQuMTQsMiAxNiwyLjQ3IDE4LjA0LDMuNUMxOC4yOSwzLjY1IDE4LjM4LDMuOTUgMTguMjUsNC4xOUMxOC4xNiw0LjM3IDE4LDQuNDcgMTcuODEsNC40N00zLjUsOS43MkMzLjQsOS43MiAzLjMsOS42OSAzLjIxLDkuNjNDMyw5LjQ3IDIuOTMsOS4xNiAzLjA5LDguOTNDNC4wOCw3LjUzIDUuMzQsNi40MyA2Ljg0LDUuNjZDMTAsNC4wNCAxNCw0LjAzIDE3LjE1LDUuNjVDMTguNjUsNi40MiAxOS45MSw3LjUgMjAuOSw4LjlDMjEuMDYsOS4xMiAyMSw5LjQ0IDIwLjc4LDkuNkMyMC41NSw5Ljc2IDIwLjI0LDkuNzEgMjAuMDgsOS41QzE5LjE4LDguMjIgMTguMDQsNy4yMyAxNi42OSw2LjU0QzEzLjgyLDUuMDcgMTAuMTUsNS4wNyA3LjI5LDYuNTVDNS45Myw3LjI1IDQuNzksOC4yNSAzLjg5LDkuNUMzLjgxLDkuNjUgMy42Niw5LjcyIDMuNSw5LjcyTTkuNzUsMjEuNzlDOS42MiwyMS43OSA5LjUsMjEuNzQgOS40LDIxLjY0QzguNTMsMjAuNzcgOC4wNiwyMC4yMSA3LjM5LDE5QzYuNywxNy43NyA2LjM0LDE2LjI3IDYuMzQsMTQuNjZDNi4zNCwxMS42OSA4Ljg4LDkuMjcgMTIsOS4yN0MxNS4xMiw5LjI3IDE3LjY2LDExLjY5IDE3LjY2LDE0LjY2QTAuNSwwLjUgMCAwLDEgMTcuMTYsMTUuMTZBMC41LDAuNSAwIDAsMSAxNi42NiwxNC42NkMxNi42NiwxMi4yNCAxNC41NywxMC4yNyAxMiwxMC4yN0M5LjQzLDEwLjI3IDcuMzQsMTIuMjQgNy4zNCwxNC42NkM3LjM0LDE2LjEgNy42NiwxNy40MyA4LjI3LDE4LjVDOC45MSwxOS42NiA5LjM1LDIwLjE1IDEwLjEyLDIwLjkzQzEwLjMxLDIxLjEzIDEwLjMxLDIxLjQ0IDEwLjEyLDIxLjY0QzEwLDIxLjc0IDkuODgsMjEuNzkgOS43NSwyMS43OU0xNi45MiwxOS45NEMxNS43MywxOS45NCAxNC42OCwxOS42NCAxMy44MiwxOS4wNUMxMi4zMywxOC4wNCAxMS40NCwxNi40IDExLjQ0LDE0LjY2QTAuNSwwLjUgMCAwLDEgMTEuOTQsMTQuMTZBMC41LDAuNSAwIDAsMSAxMi40NCwxNC42NkMxMi40NCwxNi4wNyAxMy4xNiwxNy40IDE0LjM4LDE4LjIyQzE1LjA5LDE4LjcgMTUuOTIsMTguOTMgMTYuOTIsMTguOTNDMTcuMTYsMTguOTMgMTcuNTYsMTguOSAxNy45NiwxOC44M0MxOC4yMywxOC43OCAxOC41LDE4Ljk2IDE4LjU0LDE5LjI0QzE4LjU5LDE5LjUgMTguNDEsMTkuNzcgMTguMTMsMTkuODJDMTcuNTYsMTkuOTMgMTcuMDYsMTkuOTQgMTYuOTIsMTkuOTRNMTQuOTEsMjJDMTQuODcsMjIgMTQuODIsMjIgMTQuNzgsMjJDMTMuMTksMjEuNTQgMTIuMTUsMjAuOTUgMTEuMDYsMTkuODhDOS42NiwxOC41IDguODksMTYuNjQgOC44OSwxNC42NkM4Ljg5LDEzLjA0IDEwLjI3LDExLjcyIDExLjk3LDExLjcyQzEzLjY3LDExLjcyIDE1LjA1LDEzLjA0IDE1LjA1LDE0LjY2QzE1LjA1LDE1LjczIDE2LDE2LjYgMTcuMTMsMTYuNkMxOC4yOCwxNi42IDE5LjIxLDE1LjczIDE5LjIxLDE0LjY2QzE5LjIxLDEwLjg5IDE1Ljk2LDcuODMgMTEuOTYsNy44M0M5LjEyLDcuODMgNi41LDkuNDEgNS4zNSwxMS44NkM0Ljk2LDEyLjY3IDQuNzYsMTMuNjIgNC43NiwxNC42NkM0Ljc2LDE1LjQ0IDQuODMsMTYuNjcgNS40MywxOC4yN0M1LjUzLDE4LjUzIDUuNCwxOC44MiA1LjE0LDE4LjkxQzQuODgsMTkgNC41OSwxOC44NyA0LjUsMTguNjJDNCwxNy4zMSAzLjc3LDE2IDMuNzcsMTQuNjZDMy43NywxMy40NiA0LDEyLjM3IDQuNDUsMTEuNDJDNS43OCw4LjYzIDguNzMsNi44MiAxMS45Niw2LjgyQzE2LjUsNi44MiAyMC4yMSwxMC4zMyAyMC4yMSwxNC42NUMyMC4yMSwxNi4yNyAxOC44MywxNy41OSAxNy4xMywxNy41OUMxNS40MywxNy41OSAxNC4wNSwxNi4yNyAxNC4wNSwxNC42NUMxNC4wNSwxMy41OCAxMy4xMiwxMi43MSAxMS45NywxMi43MUMxMC44MiwxMi43MSA5Ljg5LDEzLjU4IDkuODksMTQuNjVDOS44OSwxNi4zNiAxMC41NSwxNy45NiAxMS43NiwxOS4xNkMxMi43MSwyMC4xIDEzLjYyLDIwLjYyIDE1LjAzLDIxQzE1LjMsMjEuMDggMTUuNDUsMjEuMzYgMTUuMzgsMjEuNjJDMTUuMzMsMjEuODUgMTUuMTIsMjIgMTQuOTEsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmluZ2VycHJpbnRPZmYgPSBcIk0xLjUsNC43N0wyLjc4LDMuNUwyMC41LDIxLjIyTDE5LjIzLDIyLjVMMTYuNjcsMTkuOTRDMTUuNTgsMTkuOSAxNC42MiwxOS42IDEzLjgyLDE5LjA1QzEyLjM0LDE4LjA1IDExLjQ2LDE2LjQzIDExLjQ0LDE0LjcxTDEwLjI3LDEzLjUzQzEwLjAzLDEzLjg1IDkuODksMTQuMjMgOS44OSwxNC42NUM5Ljg5LDE2LjM2IDEwLjU1LDE3Ljk2IDExLjc2LDE5LjE2QzEyLjcxLDIwLjEgMTMuNjIsMjAuNjIgMTUuMDMsMjFDMTUuMywyMS4wOCAxNS40NSwyMS4zNiAxNS4zOCwyMS42MkMxNS4zMywyMS44NSAxNS4xMiwyMiAxNC45MSwyMkgxNC43OEMxMy4xOSwyMS41NCAxMi4xNSwyMC45NSAxMS4wNiwxOS44OEM5LjY2LDE4LjUgOC44OSwxNi42NCA4Ljg5LDE0LjY2QzguODksMTMuOTcgOS4xNCwxMy4zMyA5LjU2LDEyLjgzTDguNSwxMS43N0M3Ljc4LDEyLjU0IDcuMzQsMTMuNTUgNy4zNCwxNC42NkM3LjM0LDE2LjEgNy42NiwxNy40MyA4LjI3LDE4LjVDOC45MSwxOS42NiA5LjM1LDIwLjE1IDEwLjEyLDIwLjkzQzEwLjMxLDIxLjEzIDEwLjMxLDIxLjQ0IDEwLjEyLDIxLjY0QzEwLDIxLjc0IDkuODgsMjEuNzkgOS43NSwyMS43OUM5LjYyLDIxLjc5IDkuNSwyMS43NCA5LjQsMjEuNjRDOC41MywyMC43NyA4LjA2LDIwLjIxIDcuMzksMTlDNi43LDE3Ljc3IDYuMzQsMTYuMjcgNi4zNCwxNC42NkM2LjM0LDEzLjI4IDYuODksMTIgNy43OSwxMS4wNkw2LjcsOS45N0M2LjE1LDEwLjUgNS42OSwxMS4xNSA1LjM1LDExLjg2QzQuOTYsMTIuNjcgNC43NiwxMy42MiA0Ljc2LDE0LjY2QzQuNzYsMTUuNDQgNC44MywxNi42NyA1LjQzLDE4LjI3QzUuNTMsMTguNTMgNS40LDE4LjgyIDUuMTQsMTguOTFDNC44OCwxOSA0LjU5LDE4Ljg3IDQuNSwxOC42MkM0LDE3LjMxIDMuNzcsMTYgMy43NywxNC42NkMzLjc3LDEzLjQ2IDQsMTIuMzcgNC40NSwxMS40MkM0Ljg0LDEwLjYxIDUuMzYsOS44OCA2LDkuMjZMNC45Nyw4LjI0QzQuNTgsOC42MyA0LjIyLDkuMDUgMy44OSw5LjVDMy44MSw5LjY1IDMuNjYsOS43MiAzLjUsOS43MkwzLjIxLDkuNjNDMyw5LjQ3IDIuOTMsOS4xNiAzLjA5LDguOTNDMy40NSw4LjQzIDMuODQsNy45NiA0LjI3LDcuNTNMMS41LDQuNzdNMTcuODEsNC40N0wxNy41OCw0LjQxQzE1LjY2LDMuNDIgMTQsMyAxMiwzQzEwLjAzLDMgOC4xNSwzLjQ3IDYuNDQsNC40MUw2LjI5LDQuNDZMNS43MSwzLjg5QzUuNzMsMy43NCA1LjgyLDMuNjEgNS45NiwzLjUzQzcuODIsMi41IDkuODYsMiAxMiwyQzE0LjE0LDIgMTYsMi40NyAxOC4wNCwzLjVDMTguMjksMy42NSAxOC4zOCwzLjk1IDE4LjI1LDQuMTlDMTguMTYsNC4zNyAxOCw0LjQ3IDE3LjgxLDQuNDdNMTcuMTUsNS42NUMxOC42NSw2LjQyIDE5LjkxLDcuNSAyMC45LDguOUMyMS4wNiw5LjEyIDIxLDkuNDQgMjAuNzgsOS42QzIwLjU1LDkuNzYgMjAuMjQsOS43MSAyMC4wOCw5LjVDMTkuMTgsOC4yMiAxOC4wNCw3LjIzIDE2LjY5LDYuNTRDMTQuMDYsNS4xOSAxMC43Niw1LjA4IDguMDMsNi4yMUw3LjI3LDUuNDVDMTAuMzQsNC4wNCAxNC4xNCw0LjEgMTcuMTUsNS42NU0xMiw5LjI3QzE1LjEyLDkuMjcgMTcuNjYsMTEuNjkgMTcuNjYsMTQuNjZBMC41LDAuNSAwIDAsMSAxNy4xNiwxNS4xNkwxNi45MywxNS4xMUwxNi43MiwxNC44OUwxNi42NiwxNC42NkMxNi42NiwxMi4yNyAxNC42MiwxMC4zMiAxMi4wOSwxMC4yN0wxMS4xNSw5LjMzTDEyLDkuMjdNMTQuMzgsMTguMjJDMTQuNzEsMTguNDUgMTUuMDcsMTguNjIgMTUuNDcsMTguNzNMMTIuNjMsMTUuOUMxMi45MiwxNi44MiAxMy41MywxNy42NSAxNC4zOCwxOC4yMk0xOS4yMSwxNC42NkMxOS4yMSwxMC44OSAxNS45Niw3LjgzIDExLjk2LDcuODNDMTEuMjYsNy44MyAxMC41OCw3LjkzIDkuOTMsOC4xMUw5LjEyLDcuM0MxMCw3IDEwLjk3LDYuODIgMTEuOTYsNi44MkMxNi41LDYuODIgMjAuMjEsMTAuMzMgMjAuMjEsMTQuNjVDMjAuMjEsMTUuNjUgMTkuNjksMTYuNTMgMTguODksMTcuMDZMMTguMTcsMTYuMzRDMTguNzksMTYgMTkuMjEsMTUuMzggMTkuMjEsMTQuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZSA9IFwiTTE3LjY2IDExLjJDMTcuNDMgMTAuOSAxNy4xNSAxMC42NCAxNi44OSAxMC4zOEMxNi4yMiA5Ljc4IDE1LjQ2IDkuMzUgMTQuODIgOC43MkMxMy4zMyA3LjI2IDEzIDQuODUgMTMuOTUgM0MxMyAzLjIzIDEyLjE3IDMuNzUgMTEuNDYgNC4zMkM4Ljg3IDYuNCA3Ljg1IDEwLjA3IDkuMDcgMTMuMjJDOS4xMSAxMy4zMiA5LjE1IDEzLjQyIDkuMTUgMTMuNTVDOS4xNSAxMy43NyA5IDEzLjk3IDguOCAxNC4wNUM4LjU3IDE0LjE1IDguMzMgMTQuMDkgOC4xNCAxMy45M0M4LjA4IDEzLjg4IDguMDQgMTMuODMgOCAxMy43NkM2Ljg3IDEyLjMzIDYuNjkgMTAuMjggNy40NSA4LjY0QzUuNzggMTAgNC44NyAxMi4zIDUgMTQuNDdDNS4wNiAxNC45NyA1LjEyIDE1LjQ3IDUuMjkgMTUuOTdDNS40MyAxNi41NyA1LjcgMTcuMTcgNiAxNy43QzcuMDggMTkuNDMgOC45NSAyMC42NyAxMC45NiAyMC45MkMxMy4xIDIxLjE5IDE1LjM5IDIwLjggMTcuMDMgMTkuMzJDMTguODYgMTcuNjYgMTkuNSAxNSAxOC41NiAxMi43MkwxOC40MyAxMi40NkMxOC4yMiAxMiAxNy42NiAxMS4yIDE3LjY2IDExLjJNMTQuNSAxNy41QzE0LjIyIDE3Ljc0IDEzLjc2IDE4IDEzLjQgMTguMUMxMi4yOCAxOC41IDExLjE2IDE3Ljk0IDEwLjUgMTcuMjhDMTEuNjkgMTcgMTIuNCAxNi4xMiAxMi42MSAxNS4yM0MxMi43OCAxNC40MyAxMi40NiAxMy43NyAxMi4zMyAxM0MxMi4yMSAxMi4yNiAxMi4yMyAxMS42MyAxMi41IDEwLjk0QzEyLjY5IDExLjMyIDEyLjg5IDExLjcgMTMuMTMgMTJDMTMuOSAxMyAxNS4xMSAxMy40NCAxNS4zNyAxNC44QzE1LjQxIDE0Ljk0IDE1LjQzIDE1LjA4IDE1LjQzIDE1LjIzQzE1LjQ2IDE2LjA1IDE1LjEgMTYuOTUgMTQuNSAxNy41SDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZUFsZXJ0ID0gXCJNMTUuNjYgMTEuMkMxNS40MyAxMC45IDE1LjE1IDEwLjY0IDE0Ljg5IDEwLjM4QzE0LjIyIDkuNzggMTMuNDYgOS4zNSAxMi44MiA4LjcyQzExLjMzIDcuMjYgMTEgNC44NSAxMS45NSAzQzExIDMuMjMgMTAuMTcgMy43NSA5LjQ2IDQuMzJDNi44NyA2LjQgNS44NSAxMC4wNyA3LjA3IDEzLjIyQzcuMTEgMTMuMzIgNy4xNSAxMy40MiA3LjE1IDEzLjU1QzcuMTUgMTMuNzcgNyAxMy45NyA2LjggMTQuMDVDNi41NyAxNC4xNSA2LjMzIDE0LjA5IDYuMTQgMTMuOTNDNi4wOCAxMy44OCA2LjA0IDEzLjgzIDYgMTMuNzZDNC44NyAxMi4zMyA0LjY5IDEwLjI4IDUuNDUgOC42NEMzLjc4IDEwIDIuODcgMTIuMyAzIDE0LjQ3QzMuMDYgMTQuOTcgMy4xMiAxNS40NyAzLjI5IDE1Ljk3QzMuNDMgMTYuNTcgMy43IDE3LjE3IDQgMTcuN0M1LjA4IDE5LjQzIDYuOTUgMjAuNjcgOC45NiAyMC45MkMxMS4xIDIxLjE5IDEzLjM5IDIwLjggMTUuMDMgMTkuMzJDMTYuODYgMTcuNjYgMTcuNSAxNSAxNi41NiAxMi43MkwxNi40MyAxMi40NkMxNi4yMiAxMiAxNS42NiAxMS4yIDE1LjY2IDExLjJNMTIuNSAxNy41QzEyLjIyIDE3Ljc0IDExLjc2IDE4IDExLjQgMTguMUMxMC4yOCAxOC41IDkuMTYgMTcuOTQgOC41IDE3LjI4QzkuNjkgMTcgMTAuNCAxNi4xMiAxMC42MSAxNS4yM0MxMC43OCAxNC40MyAxMC40NiAxMy43NyAxMC4zMyAxM0MxMC4yMSAxMi4yNiAxMC4yMyAxMS42MyAxMC41IDEwLjk0QzEwLjY5IDExLjMyIDEwLjg5IDExLjcgMTEuMTMgMTJDMTEuOSAxMyAxMy4xMSAxMy40NCAxMy4zNyAxNC44QzEzLjQxIDE0Ljk0IDEzLjQzIDE1LjA4IDEzLjQzIDE1LjIzQzEzLjQ2IDE2LjA1IDEzLjEgMTYuOTUgMTIuNSAxNy41SDEyLjVNMjEgMTNIMTlWN0gyMVYxM00yMSAxN0gxOVYxNUgyMVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlRXh0aW5ndWlzaGVyID0gXCJNMTAuNSw3SDExLjc1TDEyLDVIMTAuMjVMNiw3LjVWOUg0VjYuNUwxMCwzSDEyVjJIMTRWM0gxNkwxNywyLjVWNS41TDE2LDVIMTRMMTQuMjUsN0gxNS41QTEuNSwxLjUgMCAwLDEgMTcsOC41VjIySDlWOC41QTEuNSwxLjUgMCAwLDEgMTAuNSw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmVIeWRyYW50ID0gXCJNNSAxNVYxNEg0VjEySDVWMTFIN1YxNUg1TTE5IDEyVjExSDE3VjE1SDE5VjE0SDIwVjEySDE5TTE4IDZIMTUuODZDMTUuNSA0LjYgMTQuNCAzLjUgMTMgMy4xNFYySDExVjMuMTRDOS42IDMuNSA4LjUgNC42IDguMTQgNkg2VjhIMThWNk0xOCAyMkg2QzYgMjAuOSA2LjkgMjAgOCAyMFY5SDE2VjIwQzE3LjExIDIwIDE4IDIwLjkgMTggMjJNMTAgMTNDMTAgMTQuMTEgMTAuOSAxNSAxMiAxNVMxNCAxNC4xMSAxNCAxMyAxMy4xMSAxMSAxMiAxMSAxMCAxMS45IDEwIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmVIeWRyYW50QWxlcnQgPSBcIk0yMiA3SDIwVjEzSDIyVjdNMjIgMTVIMjBWMTdIMjJWMTVNMyAxNVYxNEgyVjEySDNWMTFINVYxNUgzTTE3IDEyVjExSDE1VjE1SDE3VjE0SDE4VjEySDE3TTE2IDZIMTMuODZDMTMuNSA0LjYgMTIuNCAzLjUgMTEgMy4xNFYySDlWMy4xNEM3LjYgMy41IDYuNSA0LjYgNi4xNCA2SDRWOEgxNlY2TTE2IDIySDRDNCAyMC45IDQuODkgMjAgNiAyMFY5SDE0VjIwQzE1LjExIDIwIDE2IDIwLjkgMTYgMjJNOCAxM0M4IDE0LjExIDguOSAxNSAxMCAxNVMxMiAxNC4xMSAxMiAxMyAxMS4xMSAxMSAxMCAxMSA4IDExLjkgOCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlSHlkcmFudE9mZiA9IFwiTTIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMOCA5Ljg5VjIwQzYuOSAyMCA2IDIwLjkgNiAyMkgxOEMxOCAyMC45IDE3LjExIDIwIDE2IDIwVjE3Ljg5TDIwLjg0IDIyLjczTTEwLjIyIDEyLjExTDEyLjg5IDE0Ljc4QzEyLjYyIDE0LjkyIDEyLjMyIDE1IDEyIDE1QzEwLjkgMTUgMTAgMTQuMTEgMTAgMTNDMTAgMTIuNjggMTAuMDggMTIuMzggMTAuMjIgMTIuMTFNMTEuMiA4TDguNDQgNS4yNEM4Ljk0IDQuMjEgOS44NyAzLjQzIDExIDMuMTRWMkgxM1YzLjE0QzE0LjQgMy41IDE1LjUgNC42IDE1Ljg2IDZIMThWOEgxMS4yTTE5IDExVjEySDIwVjE0SDE5VjE1SDE4LjJMMTcgMTMuOFYxMUgxOU01IDE1VjE0SDRWMTJINVYxMUg3VjE1SDVNMTYgMTIuOEwxMi4yIDlIMTZWMTIuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w3LjA5IDlDNS42NiAxMC4zNiA0Ljg4IDEyLjQ3IDUgMTQuNDdDNS4wNiAxNC45NyA1LjEyIDE1LjQ3IDUuMjkgMTUuOTdDNS40MyAxNi41NyA1LjcgMTcuMTcgNiAxNy43QzcuMDggMTkuNDMgOC45NSAyMC42NyAxMC45NiAyMC45MkMxMy4xIDIxLjE5IDE1LjM5IDIwLjggMTcuMDMgMTkuMzJDMTcuMSAxOS4yNiAxNy4xNSAxOS4xOCAxNy4yMiAxOS4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk04LjggMTQuMDVDOC41NyAxNC4xNSA4LjMzIDE0LjA5IDguMTQgMTMuOTNDOC4wOCAxMy44OCA4LjA0IDEzLjgzIDggMTMuNzZDNyAxMi40NyA2Ljc0IDEwLjY5IDcuMjYgOS4xNUw4LjU4IDEwLjQ3QzguNTggMTEuNCA4LjczIDEyLjMzIDkuMDcgMTMuMjJDOS4xMSAxMy4zMiA5LjE1IDEzLjQyIDkuMTUgMTMuNTVDOS4xNSAxMy43NyA5IDEzLjk3IDguOCAxNC4wNU0xNC41IDE3LjVDMTQuMjIgMTcuNzQgMTMuNzYgMTggMTMuNCAxOC4xQzEyLjI4IDE4LjUgMTEuMTYgMTcuOTQgMTAuNSAxNy4yOEMxMS42OSAxNyAxMi40IDE2LjEyIDEyLjYxIDE1LjIzQzEyLjY2IDE1IDEyLjY2IDE0Ljc2IDEyLjY0IDE0LjUzTDE1IDE2Ljg4QzE0Ljg1IDE3LjExIDE0LjY5IDE3LjMzIDE0LjUgMTcuNU0xOC45MiAxNS43Mkw5LjY1IDYuNDZDMTAuMTIgNS42NSAxMC43MiA0LjkyIDExLjQ2IDQuMzJDMTIuMTcgMy43NSAxMyAzLjIzIDEzLjk1IDNDMTMgNC44NSAxMy4zMyA3LjI2IDE0LjgyIDguNzJDMTUuNDYgOS4zNSAxNi4yMiA5Ljc4IDE2Ljg5IDEwLjM4QzE3LjE1IDEwLjY0IDE3LjQzIDEwLjkgMTcuNjYgMTEuMkMxNy42NiAxMS4yIDE4LjIyIDEyIDE4LjQzIDEyLjQ2TDE4LjU2IDEyLjcyQzE4Ljk2IDEzLjY5IDE5LjA2IDE0LjcyIDE4LjkyIDE1LjcyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmVUcnVjayA9IFwiTTE3LjA0LDJDMTYuODUsMiAxNi42NiwyLjA0IDE2LjUsMi4xNEw1LjU5LDguNUg5LjU1TDE3LjUsMy44NkMxOCwzLjU4IDE4LjEzLDIuOTcgMTcuODUsMi41QzE3LjY4LDIuMiAxNy4zOCwyIDE3LjA0LDJNMTYsOFYxMEgzQTIsMiAwIDAsMCAxLDEySDJWMTVIMVYxOUgzQTMsMyAwIDAsMCA2LDIyQTMsMyAwIDAsMCA5LDE5SDE1QTMsMyAwIDAsMCAxOCwyMkEzLDMgMCAwLDAgMjEsMTlIMjNWMTIuNUwxOS41LDhIMTZNMTgsOS41SDE5TDIxLjUsMTIuNVYxMy41SDE4VjkuNU00LDEySDdWMTVINFYxMk05LDEySDEyVjE1SDlWMTJNMTQsMTJIMTZWMTVIMTRWMTJNNiwxNy41QTEuNSwxLjUgMCAwLDEgNy41LDE5QTEuNSwxLjUgMCAwLDEgNiwyMC41QTEuNSwxLjUgMCAwLDEgNC41LDE5QTEuNSwxLjUgMCAwLDEgNiwxNy41TTE4LDE3LjVBMS41LDEuNSAwIDAsMSAxOS41LDE5QTEuNSwxLjUgMCAwLDEgMTgsMjAuNUExLjUsMS41IDAgMCwxIDE2LjUsMTlBMS41LDEuNSAwIDAsMSAxOCwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmViYXNlID0gXCJNMjAsMTguNjlMMTIuNywyMi43NEMxMi4yLDIzIDExLjcsMjMgMTEuMiwyMi43NEw0LDE4LjY5TDE3LjA1LDUuNTRMMTcuNCw1LjQ0QzE3LjcsNS40NCAxNy44Nyw1LjU3IDE3LjksNS44NEwyMCwxOC42OU05LjM1LDUuNzRMNC44LDEzLjI5TDYuNywxLjM0QzYuNzMsMS4wNyA2LjksMC45NCA3LjIsMC45NEM3LjQsMC45NCA3LjUzLDEgNy42LDEuMTlMOS43NSw1LjE0TDkuMzUsNS43NE0xMy44NSw3TDQuMywxNi41OUwxMS41NSw0LjI5QzExLjY1LDQuMDkgMTEuOCw0IDEyLDRDMTIuMiw0IDEyLjMzLDQuMDkgMTIuNCw0LjI5TDEzLjg1LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZWZveCA9IFwiTTkuMjcgNy45NEM5LjI3IDcuOTQgOS4yNyA3Ljk0IDkuMjcgNy45NE02Ljg1IDYuNzRDNi44NiA2Ljc0IDYuODYgNi43NCA2Ljg1IDYuNzRNMjEuMjggOC42QzIwLjg1IDcuNTUgMTkuOTYgNi40MiAxOS4yNyA2LjA2QzE5LjgzIDcuMTcgMjAuMTYgOC4yOCAyMC4yOSA5LjFMMjAuMjkgOS4xMkMxOS4xNiA2LjMgMTcuMjQgNS4xNiAxNS42NyAyLjY4QzE1LjU5IDIuNTYgMTUuNSAyLjQzIDE1LjQzIDIuM0MxNS4zOSAyLjIzIDE1LjM2IDIuMTYgMTUuMzIgMi4wOUMxNS4yNiAxLjk2IDE1LjIgMS44MyAxNS4xNyAxLjY5QzE1LjE3IDEuNjggMTUuMTYgMS42NyAxNS4xNSAxLjY3SDE1LjEzTDE1LjEyIDEuNjdMMTUuMTIgMS42N0wxNS4xMiAxLjY3QzEyLjkgMi45NyAxMS45NyA1LjI2IDExLjc0IDYuNzFDMTEuMDUgNi43NSAxMC4zNyA2LjkyIDkuNzUgNy4yMkM5LjYzIDcuMjcgOS41OCA3LjQxIDkuNjIgNy41M0M5LjY3IDcuNjcgOS44MyA3Ljc0IDkuOTYgNy42OEMxMC41IDcuNDIgMTEuMSA3LjI3IDExLjcgNy4yM0wxMS43NSA3LjIzQzExLjgzIDcuMjIgMTEuOTIgNy4yMiAxMiA3LjIyQzEyLjUgNy4yMSAxMi45NyA3LjI4IDEzLjQ0IDcuNDJMMTMuNSA3LjQ0QzEzLjYgNy40NiAxMy42NyA3LjUgMTMuNzUgNy41QzEzLjggNy41NCAxMy44NiA3LjU2IDEzLjkxIDcuNThMMTQuMDUgNy42NEMxNC4xMiA3LjY3IDE0LjE5IDcuNyAxNC4yNSA3LjczQzE0LjI4IDcuNzUgMTQuMzEgNy43NiAxNC4zNCA3Ljc4QzE0LjQxIDcuODIgMTQuNSA3Ljg1IDE0LjU0IDcuODlDMTQuNTggNy45MSAxNC42MiA3Ljk0IDE0LjY2IDcuOTZDMTUuMzkgOC40MSAxNiA5LjAzIDE2LjQxIDkuNzdDMTUuODggOS40IDE0LjkyIDkuMDMgMTQgOS4xOUMxNy42IDExIDE2LjYzIDE3LjE5IDExLjY0IDE2Ljk1QzExLjIgMTYuOTQgMTAuNzYgMTYuODUgMTAuMzQgMTYuN0MxMC4yNCAxNi42NyAxMC4xNCAxNi42MyAxMC4wNSAxNi41OEMxMCAxNi41NiA5LjkzIDE2LjUzIDkuODggMTYuNUM4LjY1IDE1Ljg3IDcuNjQgMTQuNjggNy41IDEzLjIzQzcuNSAxMy4yMyA4IDExLjUgMTAuODMgMTEuNUMxMS4xNCAxMS41IDEyIDEwLjY0IDEyLjAzIDEwLjRDMTIuMDMgMTAuMzEgMTAuMjkgOS42MiA5LjYxIDguOTVDOS4yNCA4LjU5IDkuMDcgOC40MiA4LjkyIDguMjlDOC44NCA4LjIyIDguNzUgOC4xNiA4LjY2IDguMUM4LjQzIDcuMyA4LjQyIDYuNDUgOC42MyA1LjY1QzcuNiA2LjEyIDYuOCA2Ljg2IDYuMjIgNy41SDYuMjJDNS44MiA3IDUuODUgNS4zNSA1Ljg3IDVDNS44NiA1IDUuNTcgNS4xNiA1LjU0IDUuMThDNS4xOSA1LjQzIDQuODYgNS43MSA0LjU2IDZDNC4yMSA2LjM3IDMuOSA2Ljc0IDMuNjIgNy4xNEMzIDguMDUgMi41IDkuMDkgMi4yOCAxMC4xOEMyLjI4IDEwLjE5IDIuMTggMTAuNTkgMi4xMSAxMS4xTDIuMDggMTEuMzNDMi4wNiAxMS41IDIuMDQgMTEuNjUgMiAxMS45MUwyIDExLjk0TDIgMTIuMjdMMiAxMi4zMkMyIDE3Ljg1IDYuNSAyMi4zMyAxMiAyMi4zM0MxNi45NyAyMi4zMyAyMS4wOCAxOC43NCAyMS44OCAxNEMyMS45IDEzLjg5IDIxLjkxIDEzLjc2IDIxLjkzIDEzLjYzQzIyLjEzIDExLjkxIDIxLjkxIDEwLjExIDIxLjI4IDguNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJlcGxhY2UgPSBcIk0yMiwyMkgyVjIwSDIyVjIyTTIyLDZIMlYzSDIyVjZNMjAsN1YxOUgxN1YxMUMxNywxMSAxNC41LDEwIDEyLDEwQzkuNSwxMCA3LDExIDcsMTFWMTlINFY3SDIwTTE0LjUsMTQuNjdIMTQuNDdMMTQuODEsMTUuMjJMMTQuODcsMTUuMzRDMTUuMjksMTYuMzUgMTUsMTcuNSAxNC4yMSwxOC4yNEMxMy41LDE4LjkgMTIuNSwxOS4wNyAxMS41OCwxOC45NUMxMC43MSwxOC44NCA5LjksMTguMjkgOS40NSwxNy41M0M5LjMsMTcuMyA5LjE5LDE3LjAzIDkuMTMsMTYuNzdMOSwxNi4xMUM4Ljk2LDE1LjE1IDkuMzQsMTQuMTQgMTAuMDYsMTMuNTRDOS43MywxNC4yNiA5LjgxLDE1LjE2IDEwLjMsMTUuNzlMMTAuMzYsMTUuODdDMTAuNDQsMTUuOTQgMTAuNTUsMTUuOTcgMTAuNjQsMTUuOTJDMTAuNzMsMTUuODkgMTAuOCwxNS44IDEwLjgsMTUuN0wxMC43NiwxNS41NkMxMC4yMywxNC4xNyAxMC42OCwxMi41NSAxMS43OSwxMS42M0MxMi4xLDExLjM4IDEyLjUsMTEuMTUgMTIuODcsMTEuMDVDMTIuNDYsMTEuODcgMTIuNjEsMTIuOTMgMTMuMjUsMTMuNTdMMTQuMTQsMTQuM0wxNC41LDE0LjY3TTEzLjExLDE3LjQ0VjE3LjQ0QzEzLjM3LDE3LjIgMTMuNTMsMTYuOCAxMy41LDE2LjQ0VjE2LjI1QzEzLjM4LDE1LjY1IDEyLjg1LDE1LjQ2IDEyLjUsMTVMMTIuMjYsMTQuNTVDMTIuMTMsMTQuODUgMTIuMTIsMTUuMTMgMTIuMTcsMTUuNDZDMTIuMjMsMTUuOCAxMi4zNywxNi4wOSAxMi4yOSwxNi40NEMxMi4yLDE2LjgzIDExLjksMTcuMjIgMTEuMzcsMTcuMzVDMTEuNjcsMTcuNjQgMTIuMTUsMTcuODcgMTIuNjQsMTcuNzFMMTMuMTEsMTcuNDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlyZXBsYWNlT2ZmID0gXCJNMjIsMjJIMlYyMEgyMlYyMk0yMiw2SDJWM0gyMlY2TTIwLDdWMTlIMTdWMTFDMTcsMTEgMTQuNSwxMCAxMiwxMEM5LjUsMTAgNywxMSA3LDExVjE5SDRWN0gyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXJld29yayA9IFwiTTUuOCwxNi41OUw0LjUsMTUuMjhMMTIuMjYsNy41TDE2LjUsMTEuNzRMOC43MiwxOS41TDcuMjksMTguMDlDNy4wNCwxOC4xNiA2LjgsMTguMjggNi42MywxOC41QzYuNTcsMTguNTcgNi41LDE4LjY1IDYuNSwxOC43NEM2LjQyLDE4Ljg4IDYuMzgsMTkgNi4zMiwxOS4xNUM2LjIxLDE5LjQyIDYuMDksMTkuNjkgNS45MywxOS45M0M1LjgxLDIwLjEgNS42OCwyMC4yNiA1LjUzLDIwLjM5QzUuNDIsMjAuNSA1LjI5LDIwLjU5IDUuMTYsMjAuNjZDNS4wOCwyMC43MSA1LDIwLjc2IDQuOSwyMC43OUM0LjMsMjEuMDQgMy42MywyMSAzLDIxVjE5QzMuMjMsMTkgMy44MywxOSAzLjksMTlDNCwxOSA0LjA4LDE5IDQuMTYsMTguOTRDNC4xOCwxOC45MiA0LjE5LDE4LjkxIDQuMjEsMTguODlDNC4yOCwxOC44MSA0LjM0LDE4LjcgNC4zOSwxOC42QzQuNDcsMTguNDIgNC41MywxOC4yNCA0LjYsMTguMDZMNC42NCwxNy45NkM0Ljc2LDE3LjY5IDQuOSwxNy40NSA1LjA4LDE3LjIzQzUuMTgsMTcuMSA1LjMsMTcgNS40MiwxNi44N0M1LjU0LDE2Ljc3IDUuNjYsMTYuNjcgNS44LDE2LjU5TTIxLDNMMTkuODgsMTEuMTlMMTIuODEsNC4xMkwyMSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpcmV3b3JrT2ZmID0gXCJNMjAuODQgMjIuNzNMMTMuMTcgMTUuMDZMOC43MiAxOS41TDcuMjkgMTguMDlDNy4wNCAxOC4xNiA2LjggMTguMjggNi42MyAxOC41QzYuNTcgMTguNTcgNi41IDE4LjY1IDYuNSAxOC43NEM2LjQyIDE4Ljg4IDYuMzggMTkgNi4zMiAxOS4xNUM2LjIxIDE5LjQyIDYuMDkgMTkuNjkgNS45MyAxOS45M0M1LjgxIDIwLjEgNS42OCAyMC4yNiA1LjUzIDIwLjM5QzUuNDIgMjAuNSA1LjI5IDIwLjU5IDUuMTYgMjAuNjZDNS4wOCAyMC43MSA1IDIwLjc2IDQuOSAyMC43OUM0LjMgMjEuMDQgMy42MyAyMSAzIDIxVjE5SDMuOUM0IDE5IDQuMDggMTkgNC4xNiAxOC45NEw0LjIxIDE4Ljg5QzQuMjggMTguODEgNC4zNCAxOC43IDQuMzkgMTguNkM0LjQ3IDE4LjQyIDQuNTMgMTguMjQgNC42IDE4LjA2TDQuNjQgMTcuOTZDNC43NiAxNy42OSA0LjkgMTcuNDUgNS4wOCAxNy4yM0M1LjE4IDE3LjEgNS4zIDE3IDUuNDIgMTYuODdDNS41NCAxNi43NyA1LjY2IDE2LjY3IDUuOCAxNi41OUw0LjUgMTUuMjhMOC45NCAxMC44M0wxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIxIDNMMTIuODEgNC4xMkwxOS44OCAxMS4xOUwyMSAzTTE2LjUgMTEuNzRMMTIuMjYgNy41TDExLjUgOC4yOEwxNS43MiAxMi41TDE2LjUgMTEuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlzaCA9IFwiTTEyLDIwTDEyLjc2LDE3QzkuNSwxNi43OSA2LjU5LDE1LjQgNS43NSwxMy41OEM1LjY2LDE0LjA2IDUuNTMsMTQuNSA1LjMzLDE0LjgzQzQuNjcsMTYgMy4zMywxNiAyLDE2QzMuMSwxNiAzLjUsMTQuNDMgMy41LDEyLjVDMy41LDEwLjU3IDMuMSw5IDIsOUMzLjMzLDkgNC42Nyw5IDUuMzMsMTAuMTdDNS41MywxMC41IDUuNjYsMTAuOTQgNS43NSwxMS40MkM2LjQsMTAgOC4zMiw4Ljg1IDEwLjY2LDguMzJMOSw1QzExLDUgMTMsNSAxNC4zMyw1LjY3QzE1LjQ2LDYuMjMgMTYuMTEsNy4yNyAxNi42OSw4LjM4QzE5LjYxLDkuMDggMjIsMTAuNjYgMjIsMTIuNUMyMiwxNC4zOCAxOS41LDE2IDE2LjUsMTYuNjZDMTUuNjcsMTcuNzYgMTQuODYsMTguNzggMTQuMTcsMTkuMzNDMTMuMzMsMjAgMTIuNjcsMjAgMTIsMjBNMTcsMTFBMSwxIDAgMCwwIDE2LDEyQTEsMSAwIDAsMCAxNywxM0ExLDEgMCAwLDAgMTgsMTJBMSwxIDAgMCwwIDE3LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpc2hPZmYgPSBcIk0yMC44IDIyLjdMMTUuNyAxNy42QzE1LjEgMTguMyAxNC42IDE4LjkgMTQuMSAxOS4zQzEzLjMgMjAgMTIuNyAyMCAxMiAyMEwxMi44IDE3QzkuNSAxNi44IDYuNiAxNS40IDUuOCAxMy42QzUuNyAxNC4xIDUuNiAxNC41IDUuNCAxNC44QzQuNyAxNiAzLjMgMTYgMiAxNkMzLjEgMTYgMy41IDE0LjQgMy41IDEyLjVTMy4xIDkgMiA5QzMuMyA5IDQuNyA5IDUuMyAxMC4yQzUuNSAxMC41IDUuNiAxMSA1LjcgMTEuNEM2IDEwLjcgNi43IDEwIDcuNiA5LjVMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TTkuOCA2LjZMOSA1QzExIDUgMTMgNSAxNC4zIDUuN0MxNS40IDYuMyAxNi4xIDcuMyAxNi43IDguNEMxOS42IDkuMSAyMiAxMC43IDIyIDEyLjVDMjIgMTMuOCAyMC44IDE1IDE5IDE1LjhMOS44IDYuNk0xNiAxMkMxNiAxMi42IDE2LjQgMTMgMTcgMTNTMTggMTIuNiAxOCAxMiAxNy42IDExIDE3IDExIDE2IDExLjQgMTYgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmlzaGJvd2wgPSBcIk0xOS4xMSw1SDIxVjNIM1Y1SDQuODlDMy4xMSw2LjggMiw5LjI3IDIsMTJDMiwxNS45NyA0LjMxLDE5LjM5IDcuNjYsMjFIMTYuMzRDMTkuNjksMTkuMzkgMjIsMTUuOTcgMjIsMTJDMjIsOS4yNyAyMC44OSw2LjggMTkuMTEsNU0xMy4yNSwxN0MxMi4wOSwxNyAxMS4wNiwxNi42NCAxMC4zMywxNi4xN0M5LjY3LDE3IDguMzMsMTcgNywxN0M4LjEsMTcgOC41LDE1Ljg4IDguNSwxNC41QzguNSwxMy4xMiA4LjEsMTIgNywxMkM4LjMzLDEyIDkuNjcsMTIgMTAuMzcsMTIuOTFDMTEuMDYsMTIuMzYgMTIuMDksMTIgMTMuMjUsMTJDMTUuMzIsMTIgMTcsMTMuMTIgMTcsMTQuNUMxNywxNS44OCAxNS4zMiwxNyAxMy4yNSwxN00xNiw3QzEzLjU2LDguNzEgMTAuNDQsOC43MSA4LDdDNy4wNiw3LjY2IDYsOC4wOSA0Ljk1LDguMjVDNS4zMSw3LjU4IDUuNzcsNi45NiA2LjMyLDYuNDFMNy43LDVIMTYuM0wxNy42OCw2LjQxQzE4LjIzLDYuOTYgMTguNjksNy41OCAxOS4wNSw4LjI1QzE4LDguMDkgMTYuOTQsNy42NiAxNiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZpc2hib3dsT3V0bGluZSA9IFwiTTE5LjExLDVIMjFWM0gzVjVINC44OUMzLjExLDYuOCAyLDkuMjcgMiwxMkMyLDE1Ljk3IDQuMzEsMTkuMzkgNy42NiwyMUgxNi4zNEMxOS42OSwxOS4zOSAyMiwxNS45NyAyMiwxMkMyMiw5LjI3IDIwLjg5LDYuOCAxOS4xMSw1TTYuMzIsNi40MUw3LjcsNUgxNi4zTDE3LjY4LDYuNDFDMTguMjMsNi45NiAxOC42OSw3LjU4IDE5LjA1LDguMjVDMTgsOC4wOSAxNi45NCw3LjY2IDE2LDdDMTMuNTYsOC43MSAxMC40NCw4LjcxIDgsN0M3LjA2LDcuNjYgNiw4LjA5IDQuOTUsOC4yNUM1LjMxLDcuNTggNS43Nyw2Ljk2IDYuMzIsNi40MU0xNS44NSwxOUg4LjE1QzUuNTgsMTcuNTkgNCwxNC45NSA0LDEyQzQsMTEuNDMgNC4wNywxMC44NiA0LjE5LDEwLjMyQzUuNSwxMC4yOSA2LjgsOS45NSA4LDkuMzNDMTAuNSwxMC42MyAxMy41LDEwLjYzIDE2LDkuMzNDMTcuMiw5Ljk1IDE4LjUsMTAuMjkgMTkuODEsMTAuMzJDMTkuOTMsMTAuODYgMjAsMTEuNDMgMjAsMTJDMjAsMTQuOTUgMTguNDIsMTcuNTkgMTUuODUsMTlNMTcsMTQuNUMxNywxNS44OCAxNS4zMiwxNyAxMy4yNSwxN0MxMi4wOSwxNyAxMS4wNiwxNi42NCAxMC4zMywxNi4xNkM5LjY3LDE3IDguMzMsMTcgNywxN0M4LjEsMTcgOC41LDE1Ljg4IDguNSwxNC41QzguNSwxMy4xMiA4LjEsMTIgNywxMkM4LjMzLDEyIDkuNjcsMTIgMTAuMzcsMTIuOTFDMTEuMDYsMTIuMzYgMTIuMDksMTIgMTMuMjUsMTJDMTUuMzIsMTIgMTcsMTMuMTIgMTcsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGaXRUb1BhZ2UgPSBcIk0yMCwySDRDMi44OSwyIDIsMi44OSAyLDRWMjBDMiwyMS4xMSAyLjg5LDIyIDQsMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWNEMyMiwyLjg5IDIxLjExLDIgMjAsMk0xMiw0TDE1LDdIMTNWOUgxMVY3SDlNNywxNUw0LDEyTDcsOVYxMUg5VjEzSDdNMTIsMjBMOSwxN0gxMVYxNUgxM1YxN0gxNU0xNywxNVYxM0gxNVYxMUgxN1Y5TDIwLDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpRml0VG9QYWdlT3V0bGluZSA9IFwiTTIwLDJINEMyLjg5LDIgMiwyLjg5IDIsNFYyMEMyLDIxLjExIDIuODksMjIgNCwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY0QzIyLDIuODkgMjEuMTEsMiAyMCwyTTIwLDIwSDRWNEgyME0xMyw4VjEwSDExVjhIOUwxMiw1TDE1LDhNMTYsMTVWMTNIMTRWMTFIMTZWOUwxOSwxMk0xMCwxM0g4VjE1TDUsMTJMOCw5VjExSDEwTTE1LDE2TDEyLDE5TDksMTZIMTFWMTRIMTNWMTZcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnID0gXCJNMTQuNCw2TDE0LDRINVYyMUg3VjE0SDEyLjZMMTMsMTZIMjBWNkgxNC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdDaGVja2VyZWQgPSBcIk0xNC40LDZIMjBWMTZIMTNMMTIuNiwxNEg3VjIxSDVWNEgxNEwxNC40LDZNMTQsMTRIMTZWMTJIMThWMTBIMTZWOEgxNFYxMEwxMyw4VjZIMTFWOEg5VjZIN1Y4SDlWMTBIN1YxMkg5VjEwSDExVjEySDEzVjEwTDE0LDEyVjE0TTExLDEwVjhIMTNWMTBIMTFNMTQsMTBIMTZWMTJIMTRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhZ01pbnVzID0gXCJNMTIuNCw1SDE4VjE1SDExTDEwLjYsMTNINVYyMEgzVjNIMTJMMTIuNCw1TTE0LDE3SDIyVjE5SDE0VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdNaW51c091dGxpbmUgPSBcIk0xMi4zNiA2TDEyLjc2IDhIMThWMTRIMTQuNjRMMTQuMjQgMTJIN1Y2SDEyLjM2TTE0IDRINVYyMUg3VjE0SDEyLjZMMTMgMTZIMjBWNkgxNC40TTIzIDE4SDE1VjIwSDIzVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdPdXRsaW5lID0gXCJNMTIuMzYsNkwxMi43Niw4SDE4VjE0SDE0LjY0TDE0LjI0LDEySDdWNkgxMi4zNk0xNCw0SDVWMjFIN1YxNEgxMi42TDEzLDE2SDIwVjZIMTQuNFwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdQbHVzID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTIuNCw1SDE4VjEyQzE1Ljc4LDEyIDEzLjg0LDEzLjIxIDEyLjgsMTVIMTFMMTAuNiwxM0g1VjIwSDNWM0gxMkwxMi40LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhZ1BsdXNPdXRsaW5lID0gXCJNMTMgMTZMMTIuNiAxNEg3VjIxSDVWNEgxNEwxNC40IDZIMjBWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWOEgxMi43NkwxMi4zNiA2SDdWMTJIMTQuMjRMMTQuNjQgMTRIMTUuNjlDMTQuOTIgMTQuNSAxNC4yNyAxNS4yIDEzLjgxIDE2SDEzTTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdSZW1vdmUgPSBcIk0xNC40NiwxNS44OEwxNS44OCwxNC40NkwxOCwxNi41OUwyMC4xMiwxNC40NkwyMS41NCwxNS44OEwxOS40MSwxOEwyMS41NCwyMC4xMkwyMC4xMiwyMS41NEwxOCwxOS40MUwxNS44OCwyMS41NEwxNC40NiwyMC4xMkwxNi41OSwxOEwxNC40NiwxNS44OE0xMi40LDVIMThWMTJDMTUuNzgsMTIgMTMuODQsMTMuMjEgMTIuOCwxNUgxMUwxMC42LDEzSDVWMjBIM1YzSDEyTDEyLjQsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnUmVtb3ZlT3V0bGluZSA9IFwiTTEzIDE2TDEyLjYgMTRIN1YyMUg1VjRIMTRMMTQuNCA2SDIwVjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjhIMTIuNzZMMTIuMzYgNkg3VjEySDE0LjI0TDE0LjY0IDE0SDE1LjY5QzE0LjkyIDE0LjUgMTQuMjcgMTUuMiAxMy44MSAxNkgxM00yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnVHJpYW5nbGUgPSBcIk03LDJIOVYyMkg3VjJNMTksOUwxMSwxNC42VjMuNEwxOSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYWdWYXJpYW50ID0gXCJNNiwzQTEsMSAwIDAsMSA3LDRWNC44OEM4LjA2LDQuNDQgOS41LDQgMTEsNEMxNCw0IDE0LDYgMTYsNkMxOSw2IDIwLDQgMjAsNFYxMkMyMCwxMiAxOSwxNCAxNiwxNEMxMywxNCAxMywxMiAxMSwxMkM4LDEyIDcsMTQgNywxNFYyMUg1VjRBMSwxIDAgMCwxIDYsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFnVmFyaWFudE91dGxpbmUgPSBcIk02LDNBMSwxIDAgMCwxIDcsNFY0Ljg4QzguMDYsNC40NCA5LjUsNCAxMSw0QzE0LDQgMTQsNiAxNiw2QzE5LDYgMjAsNCAyMCw0VjEyQzIwLDEyIDE5LDE0IDE2LDE0QzEzLDE0IDEzLDEyIDExLDEyQzgsMTIgNywxNCA3LDE0VjIxSDVWNEExLDEgMCAwLDEgNiwzTTcsNy4yNVYxMS41QzcsMTEuNSA5LDEwIDExLDEwQzEzLDEwIDE0LDEyIDE2LDEyQzE4LDEyIDE4LDExIDE4LDExVjcuNUMxOCw3LjUgMTcsOCAxNiw4QzE0LDggMTMsNiAxMSw2QzksNiA3LDcuMjUgNyw3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXJlID0gXCJNNywxMUgxVjEzSDdWMTFNOS4xNyw3Ljc2TDcuMDUsNS42NEw1LjY0LDcuMDVMNy43Niw5LjE3TDkuMTcsNy43Nk0xMywxSDExVjdIMTNWMU0xOC4zNiw3LjA1TDE2Ljk1LDUuNjRMMTQuODMsNy43NkwxNi4yNCw5LjE3TDE4LjM2LDcuMDVNMTcsMTFWMTNIMjNWMTFIMTdNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTE0LjgzLDE2LjI0TDE2Ljk1LDE4LjM2TDE4LjM2LDE2Ljk1TDE2LjI0LDE0LjgzTDE0LjgzLDE2LjI0TTUuNjQsMTYuOTVMNy4wNSwxOC4zNkw5LjE3LDE2LjI0TDcuNzYsMTQuODNMNS42NCwxNi45NU0xMSwyM0gxM1YxN0gxMVYyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaCA9IFwiTTcsMlYxM0gxMFYyMkwxNywxMEgxM0wxNywySDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hBbGVydCA9IFwiTTUsMlYxM0g4VjIyTDE1LDEwSDExTDE1LDJNMTcsMTVIMTlWMTdIMTdWMTVNMTcsN0gxOVYxM0gxN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNoQWxlcnRPdXRsaW5lID0gXCJNNSwySDE1TDExLjUsOUgxNUw4LDIyVjE0SDVWMk03LDRWMTJIMTBWMTQuNjZMMTIsMTFIOC4yNEwxMS43Niw0TTE3LDE1SDE5VjE3SDE3VjE1TTE3LDdIMTlWMTNIMTdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaEF1dG8gPSBcIk0xNi44NSw3LjY1TDE4LDRMMTkuMTUsNy42NU0xOSwySDE3TDEzLjgsMTFIMTUuN0wxNi40LDlIMTkuNkwyMC4zLDExSDIyLjJNMywyVjE0SDZWMjNMMTMsMTFIOUwxMywySDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hDaXJjbGUgPSBcIk0xMS41LDIwTDE2LjM2LDEwLjI3SDEzVjRMOCwxMy43M0gxMS41VjIwTTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC43NSAyMSwxNy4xIDE5LjA1LDE5LjA1QzE3LjEsMjEgMTQuNzUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsOS4yNSAzLDYuOSA0Ljk1LDQuOTVDNi45LDMgOS4yNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hPZmYgPSBcIk0xNywxMEgxM0wxNywySDdWNC4xOEwxNS40NiwxMi42NE0zLjI3LDNMMiw0LjI3TDcsOS4yN1YxM0gxMFYyMkwxMy41OCwxNS44NkwxNy43MywyMEwxOSwxOC43M0wzLjI3LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hPdXRsaW5lID0gXCJNNywySDE3TDEzLjUsOUgxN0wxMCwyMlYxNEg3VjJNOSw0VjEySDEyVjE0LjY2TDE0LDExSDEwLjI0TDEzLjc2LDRIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaFJlZEV5ZSA9IFwiTTE2LDVDMTUuNDQsNSAxNSw1LjQ0IDE1LDZDMTUsNi41NiAxNS40NCw3IDE2LDdDMTYuNTYsNyAxNyw2LjU2IDE3LDZDMTcsNS40NCAxNi41Niw1IDE2LDVNMTYsMkMxMy4yNywyIDEwLjk0LDMuNjYgMTAsNkMxMC45NCw4LjM0IDEzLjI3LDEwIDE2LDEwQzE4LjczLDEwIDIxLjA2LDguMzQgMjIsNkMyMS4wNiwzLjY2IDE4LjczLDIgMTYsMk0xNiwzLjVBMi41LDIuNSAwIDAsMSAxOC41LDZBMi41LDIuNSAwIDAsMSAxNiw4LjVBMi41LDIuNSAwIDAsMSAxMy41LDZBMi41LDIuNSAwIDAsMSAxNiwzLjVNMywyVjE0SDZWMjNMMTMsMTFIOUwxMC4xMiw4LjVDOS40NCw3Ljc2IDguODgsNi45MyA4LjUsNkM5LjE5LDQuMjkgMTAuNSwyLjg4IDEyLjExLDJIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzaGxpZ2h0ID0gXCJNOSwxMEw2LDVIMThMMTUsMTBIOU0xOCw0SDZWMkgxOFY0TTksMjJWMTFIMTVWMjJIOU0xMiwxM0ExLDEgMCAwLDAgMTEsMTRBMSwxIDAgMCwwIDEyLDE1QTEsMSAwIDAsMCAxMywxNEExLDEgMCAwLDAgMTIsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2hsaWdodE9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUsMTguMjdWMjJIOVYxMi4yN0wyLDUuMjdNMTgsNUwxNSwxMEgxMS44Mkw2LjgyLDVIMThNMTgsNEg2VjJIMThWNE0xNSwxMVYxMy4xOEwxMi44MiwxMUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFzayA9IFwiTTYsMjJBMywzIDAgMCwxIDMsMTlDMywxOC40IDMuMTgsMTcuODQgMy41LDE3LjM3TDksNy44MVY2QTEsMSAwIDAsMSA4LDVWNEEyLDIgMCAwLDEgMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY1QTEsMSAwIDAsMSAxNSw2VjcuODFMMjAuNSwxNy4zN0MyMC44MiwxNy44NCAyMSwxOC40IDIxLDE5QTMsMyAwIDAsMSAxOCwyMkg2TTUsMTlBMSwxIDAgMCwwIDYsMjBIMThBMSwxIDAgMCwwIDE5LDE5QzE5LDE4Ljc5IDE4LjkzLDE4LjU5IDE4LjgyLDE4LjQzTDE2LjUzLDE0LjQ3TDE0LDE3TDguOTMsMTEuOTNMNS4xOCwxOC40M0M1LjA3LDE4LjU5IDUsMTguNzkgNSwxOU0xMywxMEExLDEgMCAwLDAgMTIsMTFBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxNCwxMUExLDEgMCAwLDAgMTMsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eSA9IFwiTTYsMjJBMywzIDAgMCwxIDMsMTlDMywxOC40IDMuMTgsMTcuODQgMy41LDE3LjM3TDksNy44MVY2QTEsMSAwIDAsMSA4LDVWNEEyLDIgMCAwLDEgMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY1QTEsMSAwIDAsMSAxNSw2VjcuODFMMjAuNSwxNy4zN0MyMC44MiwxNy44NCAyMSwxOC40IDIxLDE5QTMsMyAwIDAsMSAxOCwyMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlNaW51cyA9IFwiTTIzIDE3VjE5SDE1VjE3SDIzTTYgMjJDNC4zNCAyMiAzIDIwLjY2IDMgMTlDMyAxOC40IDMuMTggMTcuODQgMy41IDE3LjM2TDkgNy44MVY2QzguNDUgNiA4IDUuNTUgOCA1VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS41NSAxNS41NSA2IDE1IDZWNy44MUwxNy41IDEyLjE4QzE0LjkyIDEyLjg0IDEzIDE1LjIgMTMgMThDMTMgMTkuNTQgMTMuNTggMjAuOTQgMTQuNTMgMjJINlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza0VtcHR5TWludXNPdXRsaW5lID0gXCJNMjMgMTdWMTlIMTVWMTdIMjNNNSAxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEgxMy4zNEMxMy42MSAyMC43NSAxNCAyMS40MiAxNC41MyAyMkg2QzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNi44NiAxMi4zNSAxNi4yNCAxMi42MyAxNS42OSAxM0wxMyA4LjM1VjRIMTFWOC4zNUw1LjE4IDE4LjQzQzUuMDcgMTguNTkgNSAxOC43OSA1IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlPZmYgPSBcIk0yMC44IDIyLjdMMTkuNiAyMS41QzE5LjEgMjEuOCAxOC42IDIyIDE4IDIySDZDNC4zIDIyIDMgMjAuNyAzIDE5QzMgMTguNCAzLjIgMTcuOCAzLjUgMTcuNEw3LjkgOS44TDEuMSAzTDIuNCAxLjdMMjIuMSAyMS40TDIwLjggMjIuN00xNSA3LjhWNkMxNS42IDYgMTYgNS42IDE2IDVWNEMxNiAyLjkgMTUuMSAyIDE0IDJIMTBDOC45IDIgOCAyLjkgOCA0VjQuOEwyMC40IDE3LjJMMTUgNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNy45IDkuOEwzLjUgMTcuNEMzLjIgMTcuOCAzIDE4LjQgMyAxOUMzIDIwLjcgNC4zIDIyIDYgMjJIMThDMTguNiAyMiAxOS4yIDIxLjggMTkuNiAyMS41TDIwLjggMjIuN0wyMi4xIDIxLjVNMTggMjBINkM1LjQgMjAgNSAxOS42IDUgMTlDNSAxOC44IDUuMSAxOC42IDUuMiAxOC40TDkuNCAxMS4yTDE4IDIwQzE4LjEgMjAgMTggMjAgMTggMjBNMTEgNy44TDggNC44VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xIDIgMTYgMi45IDE2IDRWNUMxNiA1LjYgMTUuNiA2IDE1IDZWNy44TDIwLjQgMTcuMkwxNSAxMS44TDEzIDguNFY0SDExVjcuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza0VtcHR5T3V0bGluZSA9IFwiTTUsMTlBMSwxIDAgMCwwIDYsMjBIMThBMSwxIDAgMCwwIDE5LDE5QzE5LDE4Ljc5IDE4LjkzLDE4LjU5IDE4LjgyLDE4LjQzTDEzLDguMzVWNEgxMVY4LjM1TDUuMTgsMTguNDNDNS4wNywxOC41OSA1LDE4Ljc5IDUsMTlNNiwyMkEzLDMgMCAwLDEgMywxOUMzLDE4LjQgMy4xOCwxNy44NCAzLjUsMTcuMzdMOSw3LjgxVjZBMSwxIDAgMCwxIDgsNVY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjVBMSwxIDAgMCwxIDE1LDZWNy44MUwyMC41LDE3LjM3QzIwLjgyLDE3Ljg0IDIxLDE4LjQgMjEsMTlBMywzIDAgMCwxIDE4LDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eVBsdXMgPSBcIk0xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE02IDIyQzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNC45MiAxMi44NCAxMyAxNS4yIDEzIDE4QzEzIDE5LjU0IDEzLjU4IDIwLjk0IDE0LjUzIDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eVBsdXNPdXRsaW5lID0gXCJNMTggMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdIMThWMTRNNSAxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEgxMy4zNEMxMy42MSAyMC43NSAxNCAyMS40MiAxNC41MyAyMkg2QzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNi44NiAxMi4zNSAxNi4yNCAxMi42MyAxNS42OSAxM0wxMyA4LjM1VjRIMTFWOC4zNUw1LjE4IDE4LjQzQzUuMDcgMTguNTkgNSAxOC43OSA1IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrRW1wdHlSZW1vdmUgPSBcIk0xNS40NiAxNS44OEwxNi44OCAxNC40NkwxOSAxNi41OUwyMS4xMiAxNC40N0wyMi41MyAxNS44OEwyMC40MSAxOEwyMi41NCAyMC4xMkwyMS4xMiAyMS41NEwxOSAxOS40MUwxNi44OCAyMS41M0wxNS40NyAyMC4xMkwxNy41OSAxOEwxNS40NiAxNS44OE02IDIyQzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNC45MiAxMi44NCAxMyAxNS4yIDEzIDE4QzEzIDE5LjU0IDEzLjU4IDIwLjk0IDE0LjUzIDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tFbXB0eVJlbW92ZU91dGxpbmUgPSBcIk0xNS40NiAxNS44OEwxNi44OCAxNC40NkwxOSAxNi41OUwyMS4xMiAxNC40N0wyMi41MyAxNS44OEwyMC40MSAxOEwyMi41NCAyMC4xMkwyMS4xMiAyMS41NEwxOSAxOS40MUwxNi44OCAyMS41M0wxNS40NyAyMC4xMkwxNy41OSAxOEwxNS40NiAxNS44OE01IDE5QzUgMTkuNTUgNS40NSAyMCA2IDIwSDEzLjM0QzEzLjYxIDIwLjc1IDE0IDIxLjQyIDE0LjUzIDIySDZDNC4zNCAyMiAzIDIwLjY2IDMgMTlDMyAxOC40IDMuMTggMTcuODQgMy41IDE3LjM2TDkgNy44MVY2QzguNDUgNiA4IDUuNTUgOCA1VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS41NSAxNS41NSA2IDE1IDZWNy44MUwxNy41IDEyLjE4QzE2Ljg2IDEyLjM1IDE2LjI0IDEyLjYzIDE1LjY5IDEzTDEzIDguMzVWNEgxMVY4LjM1TDUuMTggMTguNDNDNS4wNyAxOC41OSA1IDE4Ljc5IDUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tNaW51cyA9IFwiTTIzIDE3VjE5SDE1VjE3SDIzTTYgMjJDNC4zNCAyMiAzIDIwLjY2IDMgMTlDMyAxOC40IDMuMTggMTcuODQgMy41IDE3LjM2TDkgNy44MVY2QzguNDUgNiA4IDUuNTUgOCA1VjRDOCAyLjkgOC45IDIgMTAgMkgxNEMxNS4xMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS41NSAxNS41NSA2IDE1IDZWNy44MUwxNy41IDEyLjE4QzE1LjUgMTIuNyAxMy44NiAxNC4yNiAxMy4yNiAxNi4yNkw4LjkzIDExLjkzTDUuMTggMTguNDNDNS4wNyAxOC41OSA1IDE4Ljc5IDUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINk0xMyAxMEMxMi40NSAxMCAxMiAxMC40NSAxMiAxMUMxMiAxMS41NSAxMi40NSAxMiAxMyAxMkMxMy41NSAxMiAxNCAxMS41NSAxNCAxMUMxNCAxMC40NSAxMy41NSAxMCAxMyAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza01pbnVzT3V0bGluZSA9IFwiTTIzIDE3VjE5SDE1VjE3SDIzTTUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTYuODYgMTIuMzUgMTYuMjQgMTIuNjMgMTUuNjkgMTNMMTMgOC4zNVY0SDExVjguMzVMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOU0xMyAxNkwxMy41OCAxNS40MkMxMy4yMSAxNi4yIDEzIDE3LjA4IDEzIDE4SDcuNzNMMTAuMzkgMTMuMzlMMTMgMTZNMTIuNSAxMkMxMi43OCAxMiAxMyAxMi4yMiAxMyAxMi41QzEzIDEyLjc4IDEyLjc4IDEzIDEyLjUgMTNDMTIuMjIgMTMgMTIgMTIuNzggMTIgMTIuNUMxMiAxMi4yMiAxMi4yMiAxMiAxMi41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNy45IDkuOEwzLjUgMTcuNEMzLjIgMTcuOCAzIDE4LjQgMyAxOUMzIDIwLjcgNC4zIDIyIDYgMjJIMThDMTguNiAyMiAxOS4yIDIxLjggMTkuNiAyMS41TDIwLjggMjIuN0wyMi4xIDIxLjVNMTggMjBINkM1LjQgMjAgNSAxOS42IDUgMTlDNSAxOC44IDUuMSAxOC42IDUuMiAxOC40TDkgMTEuOUwxNCAxN0wxNC42IDE2LjRMMTggMjBDMTguMSAyMCAxOCAyMCAxOCAyME04IDQuOFY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMSAyIDE2IDIuOSAxNiA0VjVDMTYgNS42IDE1LjYgNiAxNSA2VjcuOEwyMC40IDE3LjJMOCA0LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNy45IDkuOEwzLjUgMTcuNEMzLjIgMTcuOCAzIDE4LjQgMyAxOUMzIDIwLjcgNC4zIDIyIDYgMjJIMThDMTguNiAyMiAxOS4yIDIxLjggMTkuNiAyMS41TDIwLjggMjIuN0wyMi4xIDIxLjVNMTggMjBINkM1LjQgMjAgNSAxOS42IDUgMTlDNSAxOC44IDUuMSAxOC42IDUuMiAxOC40TDkuNCAxMS4yTDEzLjYgMTUuNEwxMyAxNkwxMC40IDEzLjRMNy43IDE4SDE2LjFMMTggMjBDMTguMSAyMCAxOCAyMCAxOCAyME0xMSA3LjhMOCA0LjhWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNiAxNS42IDYgMTUgNlY3LjhMMjAuNCAxNy4yTDE1IDExLjhMMTMgOC40VjRIMTFWNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrT3V0bGluZSA9IFwiTTUsMTlBMSwxIDAgMCwwIDYsMjBIMThBMSwxIDAgMCwwIDE5LDE5QzE5LDE4Ljc5IDE4LjkzLDE4LjU5IDE4LjgyLDE4LjQzTDEzLDguMzVWNEgxMVY4LjM1TDUuMTgsMTguNDNDNS4wNywxOC41OSA1LDE4Ljc5IDUsMTlNNiwyMkEzLDMgMCAwLDEgMywxOUMzLDE4LjQgMy4xOCwxNy44NCAzLjUsMTcuMzdMOSw3LjgxVjZBMSwxIDAgMCwxIDgsNVY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjVBMSwxIDAgMCwxIDE1LDZWNy44MUwyMC41LDE3LjM3QzIwLjgyLDE3Ljg0IDIxLDE4LjQgMjEsMTlBMywzIDAgMCwxIDE4LDIySDZNMTMsMTZMMTQuMzQsMTQuNjZMMTYuMjcsMThINy43M0wxMC4zOSwxMy4zOUwxMywxNk0xMi41LDEyQTAuNSwwLjUgMCAwLDEgMTMsMTIuNUEwLjUsMC41IDAgMCwxIDEyLjUsMTNBMC41LDAuNSAwIDAsMSAxMiwxMi41QTAuNSwwLjUgMCAwLDEgMTIuNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGFza1BsdXMgPSBcIk0xOCAxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE02IDIyQzQuMzQgMjIgMyAyMC42NiAzIDE5QzMgMTguNCAzLjE4IDE3Ljg0IDMuNSAxNy4zNkw5IDcuODFWNkM4LjQ1IDYgOCA1LjU1IDggNVY0QzggMi45IDguOSAyIDEwIDJIMTRDMTUuMTEgMiAxNiAyLjkgMTYgNFY1QzE2IDUuNTUgMTUuNTUgNiAxNSA2VjcuODFMMTcuNSAxMi4xOEMxNS41IDEyLjcgMTMuODYgMTQuMjYgMTMuMjYgMTYuMjZMOC45MyAxMS45M0w1LjE4IDE4LjQzQzUuMDcgMTguNTkgNSAxOC43OSA1IDE5QzUgMTkuNTUgNS40NSAyMCA2IDIwSDEzLjM0QzEzLjYxIDIwLjc1IDE0IDIxLjQyIDE0LjUzIDIySDZNMTMgMTBDMTIuNDUgMTAgMTIgMTAuNDUgMTIgMTFDMTIgMTEuNTUgMTIuNDUgMTIgMTMgMTJDMTMuNTUgMTIgMTQgMTEuNTUgMTQgMTFDMTQgMTAuNDUgMTMuNTUgMTAgMTMgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tQbHVzT3V0bGluZSA9IFwiTTE4IDE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3SDE4VjE0TTUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTYuODYgMTIuMzUgMTYuMjQgMTIuNjMgMTUuNjkgMTNMMTMgOC4zNVY0SDExVjguMzVMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOU0xMyAxNkwxMy41OCAxNS40MkMxMy4yMSAxNi4yIDEzIDE3LjA4IDEzIDE4SDcuNzNMMTAuMzkgMTMuMzlMMTMgMTZNMTIuNSAxMkMxMi43OCAxMiAxMyAxMi4yMiAxMyAxMi41QzEzIDEyLjc4IDEyLjc4IDEzIDEyLjUgMTNDMTIuMjIgMTMgMTIgMTIuNzggMTIgMTIuNUMxMiAxMi4yMiAxMi4yMiAxMiAxMi41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUmVtb3ZlID0gXCJNMTUuNDYgMTUuODhMMTYuODggMTQuNDZMMTkgMTYuNTlMMjEuMTIgMTQuNDdMMjIuNTMgMTUuODhMMjAuNDEgMThMMjIuNTQgMjAuMTJMMjEuMTIgMjEuNTRMMTkgMTkuNDFMMTYuODggMjEuNTNMMTUuNDcgMjAuMTJMMTcuNTkgMThMMTUuNDYgMTUuODhNNiAyMkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTUuNSAxMi43IDEzLjg2IDE0LjI2IDEzLjI2IDE2LjI2TDguOTMgMTEuOTNMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEgxMy4zNEMxMy42MSAyMC43NSAxNCAyMS40MiAxNC41MyAyMkg2TTEzIDEwQzEyLjQ1IDEwIDEyIDEwLjQ1IDEyIDExQzEyIDExLjU1IDEyLjQ1IDEyIDEzIDEyQzEzLjU1IDEyIDE0IDExLjU1IDE0IDExQzE0IDEwLjQ1IDEzLjU1IDEwIDEzIDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUmVtb3ZlT3V0bGluZSA9IFwiTTE1LjQ2IDE1Ljg4TDE2Ljg4IDE0LjQ2TDE5IDE2LjU5TDIxLjEyIDE0LjQ3TDIyLjUzIDE1Ljg4TDIwLjQxIDE4TDIyLjU0IDIwLjEyTDIxLjEyIDIxLjU0TDE5IDE5LjQxTDE2Ljg4IDIxLjUzTDE1LjQ3IDIwLjEyTDE3LjU5IDE4TDE1LjQ2IDE1Ljg4TTUgMTlDNSAxOS41NSA1LjQ1IDIwIDYgMjBIMTMuMzRDMTMuNjEgMjAuNzUgMTQgMjEuNDIgMTQuNTMgMjJINkM0LjM0IDIyIDMgMjAuNjYgMyAxOUMzIDE4LjQgMy4xOCAxNy44NCAzLjUgMTcuMzZMOSA3LjgxVjZDOC40NSA2IDggNS41NSA4IDVWNEM4IDIuOSA4LjkgMiAxMCAySDE0QzE1LjExIDIgMTYgMi45IDE2IDRWNUMxNiA1LjU1IDE1LjU1IDYgMTUgNlY3LjgxTDE3LjUgMTIuMThDMTYuODYgMTIuMzUgMTYuMjQgMTIuNjMgMTUuNjkgMTNMMTMgOC4zNVY0SDExVjguMzVMNS4xOCAxOC40M0M1LjA3IDE4LjU5IDUgMTguNzkgNSAxOU0xMyAxNkwxMy41OCAxNS40MkMxMy4yMSAxNi4yIDEzIDE3LjA4IDEzIDE4SDcuNzNMMTAuMzkgMTMuMzlMMTMgMTZNMTIuNSAxMkMxMi43OCAxMiAxMyAxMi4yMiAxMyAxMi41QzEzIDEyLjc4IDEyLjc4IDEzIDEyLjUgMTNDMTIuMjIgMTMgMTIgMTIuNzggMTIgMTIuNUMxMiAxMi4yMiAxMi4yMiAxMiAxMi41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUm91bmRCb3R0b20gPSBcIk0xOSAxNUMxOSAxOC44NyAxNS44NyAyMiAxMiAyMkM4LjEzIDIyIDUgMTguODcgNSAxNUM1IDEyLjIxIDYuNjQgOS44IDkgOC42N1Y1QzkgNC40NSA5LjQ1IDQgMTAgNEgxMC41TDkuNSAySDE0LjVMMTMuNSA0SDE0QzE0LjU1IDQgMTUgNC40NSAxNSA1VjguNjdDMTcuMzYgOS44IDE5IDEyLjIxIDE5IDE1TTExIDZWMTAuMUM4LjcyIDEwLjU2IDcgMTIuNTggNyAxNUw3LjA4IDE1LjkxTDkgMTMuOTNMMTMuMDcgMThMMTYuOTMgMTQuMTRDMTYuNTggMTIuMTIgMTUgMTAuNSAxMyAxMC4xVjZIMTFNMTMuMDcgMTJDMTMuNjIgMTIgMTQuMDcgMTIuNDUgMTQuMDcgMTNDMTQuMDcgMTMuNTUgMTMuNjIgMTQgMTMuMDcgMTRDMTIuNSAxNCAxMi4wNyAxMy41NSAxMi4wNyAxM0MxMi4wNyAxMi40NSAxMi41IDEyIDEzLjA3IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsYXNrUm91bmRCb3R0b21FbXB0eSA9IFwiTTE5IDE1QzE5IDE4Ljg3IDE1Ljg3IDIyIDEyIDIyQzguMTMgMjIgNSAxOC44NyA1IDE1QzUgMTIuMjEgNi42NCA5LjggOSA4LjY3VjVDOSA0LjQ1IDkuNDUgNCAxMCA0SDEwLjVMOS41IDJIMTQuNUwxMy41IDRIMTRDMTQuNTUgNCAxNSA0LjQ1IDE1IDVWOC42N0MxNy4zNiA5LjggMTkgMTIuMjEgMTkgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tSb3VuZEJvdHRvbUVtcHR5T3V0bGluZSA9IFwiTTE5IDE1QzE5IDE4Ljg3IDE1Ljg3IDIyIDEyIDIyQzguMTMgMjIgNSAxOC44NyA1IDE1QzUgMTIuMjEgNi42NCA5LjggOSA4LjY3VjVDOSA0LjQ1IDkuNDUgNCAxMCA0SDEwLjVMOS41IDJIMTQuNUwxMy41IDRIMTRDMTQuNTUgNCAxNSA0LjQ1IDE1IDVWOC42N0MxNy4zNiA5LjggMTkgMTIuMjEgMTkgMTVNMTEgNlYxMC4xQzguNzIgMTAuNTYgNyAxMi41OCA3IDE1QzcgMTcuNzYgOS4yNCAyMCAxMiAyMEMxNC43NiAyMCAxNyAxNy43NiAxNyAxNUMxNyAxMi41OCAxNS4yOCAxMC41NiAxMyAxMC4xVjZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxhc2tSb3VuZEJvdHRvbU91dGxpbmUgPSBcIk0xNSAxNUMxNSAxNi42NiAxMy42NiAxOCAxMiAxOEMxMC4zNCAxOCA5IDE2LjY2IDkgMTVWMTRIMTFWMTVDMTEgMTUuNTUgMTEuNDUgMTYgMTIgMTZDMTIuNTUgMTYgMTMgMTUuNTUgMTMgMTVWMTRIMTVWMTVNMTkgMTVDMTkgMTguODcgMTUuODcgMjIgMTIgMjJDOC4xMyAyMiA1IDE4Ljg3IDUgMTVDNSAxMi4yMSA2LjY0IDkuOCA5IDguNjdWNUM5IDQuNDUgOS40NSA0IDEwIDRIMTAuNUw5LjUgMkgxNC41TDEzLjUgNEgxNEMxNC41NSA0IDE1IDQuNDUgMTUgNVY4LjY3QzE3LjM2IDkuOCAxOSAxMi4yMSAxOSAxNU0xMSA2VjEwLjFDOC43MiAxMC41NiA3IDEyLjU4IDcgMTVDNyAxNy43NiA5LjI0IDIwIDEyIDIwQzE0Ljc2IDIwIDE3IDE3Ljc2IDE3IDE1QzE3IDEyLjU4IDE1LjI4IDEwLjU2IDEzIDEwLjFWNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGbGV1ckRlTGlzID0gXCJNMTIgMlM5IDQgOSA3IDExIDEyIDExIDE2SDEwUzEwIDE0IDkgMTJDNyA4IDMgMTAgMyAxM1M1IDE2IDUgMTZDNSAxMyA4LjUgMTMgOC41IDE2SDdWMThIMTAuNUw5IDIwUzEwIDIxIDExIDIwTDEyIDIyTDEzIDIwQzE0IDIxIDE1IDIwIDE1IDIwTDEzLjUgMThIMTdWMTZIMTUuNUMxNS41IDEzIDE5IDEzIDE5IDE2QzE5IDE2IDIxIDE2IDIxIDEzUzE3IDggMTUgMTJDMTQgMTQgMTQgMTYgMTQgMTZIMTNDMTMgMTIgMTUgMTAgMTUgN1MxMiAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxpcEhvcml6b250YWwgPSBcIk0xNSAyMUgxN1YxOUgxNU0xOSA5SDIxVjdIMTlNMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUg5VjE5SDVWNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVNMTkgM1Y1SDIxQzIxIDMuOSAyMC4xIDMgMTkgM00xMSAyM0gxM1YxSDExTTE5IDE3SDIxVjE1SDE5TTE1IDVIMTdWM0gxNU0xOSAxM0gyMVYxMUgxOU0xOSAyMUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxpcFRvQmFjayA9IFwiTTE1LDE3SDE3VjE1SDE1TTE1LDVIMTdWM0gxNU01LDdIM1YxOUEyLDIgMCAwLDAgNSwyMUgxN1YxOUg1TTE5LDE3QTIsMiAwIDAsMCAyMSwxNUgxOU0xOSw5SDIxVjdIMTlNMTksMTNIMjFWMTFIMTlNOSwxN1YxNUg3QTIsMiAwIDAsMCA5LDE3TTEzLDNIMTFWNUgxM00xOSwzVjVIMjFDMjEsMy44OSAyMC4xLDMgMTksM00xMywxNUgxMVYxN0gxM005LDNDNy44OSwzIDcsMy44OSA3LDVIOU05LDExSDdWMTNIOU05LDdIN1Y5SDlWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGbGlwVG9Gcm9udCA9IFwiTTcsMjFIOVYxOUg3TTExLDIxSDEzVjE5SDExTTE5LDE1SDlWNUgxOU0xOSwzSDlDNy44OSwzIDcsMy44OSA3LDVWMTVBMiwyIDAgMCwwIDksMTdIMTRMMTgsMTdIMTlBMiwyIDAgMCwwIDIxLDE1VjVDMjEsMy44OSAyMC4xLDMgMTksM00xNSwyMUgxN1YxOUgxNU0zLDlINVY3SDNNNSwyMVYxOUgzQTIsMiAwIDAsMCA1LDIxTTMsMTdINVYxNUgzTTMsMTNINVYxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsaXBWZXJ0aWNhbCA9IFwiTTMgMTVWMTdINVYxNU0xNSAxOVYyMUgxN1YxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjlINVY1SDE5VjlIMjFWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMjEgMTlIMTlWMjFDMjAuMSAyMSAyMSAyMC4xIDIxIDE5TTEgMTFWMTNIMjNWMTFNNyAxOVYyMUg5VjE5TTE5IDE1VjE3SDIxVjE1TTExIDE5VjIxSDEzVjE5TTMgMTlDMyAyMC4xIDMuOSAyMSA1IDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb29yTGFtcCA9IFwiTTE1LDJMMTcsOUg3TDksMk0xMSwxMEgxM1YyMEgxNlYyMkg4VjIwSDExVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb29yTGFtcER1YWwgPSBcIk0xMS43MyAxMC4wNkwxMC4xNyAxMS4yNEwxMSAxMi4yVjIwSDhWMjJIMTZWMjBIMTNWMTIuM0wxMy44NSAxMS4yNkwxMi4yNyAxMC4wN0wxMS43MyAxMC4wNk05LjA4IDEwLjgyTDMgNi44MUw5LjM5IDJMMTEuNTUgOC45M0w5LjA4IDEwLjgyTTE0LjYxIDJMMjEgNi44MUwxNC45MiAxMC44MkwxMi40NCA4Ljk1TDE0LjYxIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxvb3JMYW1wVmFyaWFudCA9IFwiTTcgMkwxMCA5SDE0TDE3IDJIN00xNS45MiAyMkwxMyAxNVYyMkgxMVYxNUw4LjA4IDIySDUuOTJMMTAuOTIgMTBIMTMuMDhMMTguMDggMjJIMTUuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRmxvb3JQbGFuID0gXCJNMTAsNVYxMEg5VjVINVYxM0g5VjEySDEwVjE3SDlWMTRINVYxOUgxMlYxN0gxM1YxOUgxOVYxN0gyMVYyMUgzVjNIMjFWMTVIMTlWMTBIMTNWMTVIMTJWOUgxOVY1SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3BweSA9IFwiTTUsM0EyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1LjVMMTguNSwzSDE3VjlBMSwxIDAgMCwxIDE2LDEwSDhBMSwxIDAgMCwxIDcsOVYzSDVNMTIsNFY5SDE1VjRIMTJNNywxMkgxN0ExLDEgMCAwLDEgMTgsMTNWMTlINlYxM0ExLDEgMCAwLDEgNywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGbG9wcHlWYXJpYW50ID0gXCJNMywzVjIxSDIxVjNIM00xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTIsMTVBMSwxIDAgMCwxIDEzLDE2VjE5QTEsMSAwIDAsMSAxMiwyMEExLDEgMCAwLDEgMTEsMTlWMTZBMSwxIDAgMCwxIDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlciA9IFwiTTMsMTNBOSw5IDAgMCwwIDEyLDIyQzEyLDE3IDcuOTcsMTMgMywxM00xMiw1LjVBMi41LDIuNSAwIDAsMSAxNC41LDhBMi41LDIuNSAwIDAsMSAxMiwxMC41QTIuNSwyLjUgMCAwLDEgOS41LDhBMi41LDIuNSAwIDAsMSAxMiw1LjVNNS42LDEwLjI1QTIuNSwyLjUgMCAwLDAgOC4xLDEyLjc1QzguNjMsMTIuNzUgOS4xMiwxMi41OCA5LjUsMTIuMzFDOS41LDEyLjM3IDkuNSwxMi40MyA5LjUsMTIuNUEyLjUsMi41IDAgMCwwIDEyLDE1QTIuNSwyLjUgMCAwLDAgMTQuNSwxMi41QzE0LjUsMTIuNDMgMTQuNSwxMi4zNyAxNC41LDEyLjMxQzE0Ljg4LDEyLjU4IDE1LjM3LDEyLjc1IDE1LjksMTIuNzVDMTcuMjgsMTIuNzUgMTguNCwxMS42MyAxOC40LDEwLjI1QzE4LjQsOS4yNSAxNy44MSw4LjQgMTYuOTcsOEMxNy44MSw3LjYgMTguNCw2Ljc0IDE4LjQsNS43NUMxOC40LDQuMzcgMTcuMjgsMy4yNSAxNS45LDMuMjVDMTUuMzcsMy4yNSAxNC44OCwzLjQxIDE0LjUsMy42OUMxNC41LDMuNjMgMTQuNSwzLjU2IDE0LjUsMy41QTIuNSwyLjUgMCAwLDAgMTIsMUEyLjUsMi41IDAgMCwwIDkuNSwzLjVDOS41LDMuNTYgOS41LDMuNjMgOS41LDMuNjlDOS4xMiwzLjQxIDguNjMsMy4yNSA4LjEsMy4yNUEyLjUsMi41IDAgMCwwIDUuNiw1Ljc1QzUuNiw2Ljc0IDYuMTksNy42IDcuMDMsOEM2LjE5LDguNCA1LjYsOS4yNSA1LjYsMTAuMjVNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQzE2LDEzIDEyLDE3IDEyLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlck91dGxpbmUgPSBcIk04LjY2LDEzLjA3QzYuOTIsMTMuMDcgNS41LDExLjY2IDUuNSw5LjkzQzUuNSw5LjIyIDUuNzYsOC41NCA2LjE5LDhDNS43Nyw3LjQ2IDUuNSw2Ljc4IDUuNSw2LjA3QzUuNSw0LjM0IDYuOTMsMi45MyA4LjY2LDIuOTNMOS4wOSwyLjk2QzkuNTYsMS44MSAxMC42OSwxIDEyLDFDMTMuMzEsMSAxNC40NCwxLjgxIDE0LjkxLDIuOTZMMTUuMzQsMi45M0MxNy4wNywyLjkzIDE4LjUsNC4zNCAxOC41LDYuMDdDMTguNSw2Ljc4IDE4LjI0LDcuNDYgMTcuODEsOEMxOC4yMyw4LjU0IDE4LjUsOS4yMiAxOC41LDkuOTNDMTguNSwxMS42NiAxNy4wNywxMy4wNyAxNS4zNCwxMy4wN0wxNC45MSwxMy4wNEMxNC40NCwxNC4xOSAxMy4zMSwxNSAxMiwxNUMxMC42OSwxNSA5LjU2LDE0LjE5IDkuMDksMTMuMDRMOC42NiwxMy4wN00xMiwxM0MxMi42MiwxMyAxMy4xMiwxMi41IDEzLjE0LDExLjlMMTMuMDMsMTAuODFDMTIuNzEsMTAuOTMgMTIuMzYsMTEgMTIsMTFDMTEuNjQsMTEgMTEuMywxMC45MyAxMSwxMC44MUwxMC44NiwxMS45QzEwLjg4LDEyLjUgMTEuMzgsMTMgMTIsMTNNMTUuMzQsMTEuMDdDMTUuOTcsMTEuMDcgMTYuNSwxMC41NiAxNi41LDkuOTJDMTYuNSw5LjUgMTYuMjMsOS4wOCAxNS44Myw4Ljg5TDE0Ljk1LDguNDdDMTQuODMsOS4yMSAxNC40NCw5Ljg1IDEzLjg5LDEwLjNMMTQuNywxMC44N0MxNC44OCwxMSAxNS4xLDExLjA3IDE1LjM0LDExLjA3TTE0LjY5LDUuMTNMMTMuODcsNS42OUMxNC40Myw2LjE0IDE0LjgyLDYuNzggMTQuOTQsNy41TDE1LjgyLDcuMUMxNi4yMyw2LjkgMTYuNSw2LjUgMTYuNSw2LjA3QzE2LjUsNS40NCAxNS45Nyw0LjkzIDE1LjM0LDQuOTNDMTUuMTEsNC45MyAxNC44OSw1IDE0LjY5LDUuMTNNMTIsM0MxMS4zOCwzIDEwLjg4LDMuNSAxMC44Niw0LjFMMTEsNS4xOUMxMS4zLDUuMDcgMTEuNjQsNSAxMiw1QzEyLjM2LDUgMTIuNzEsNS4wNyAxMy4wMyw1LjE5TDEzLjE0LDQuMUMxMy4xMiwzLjUgMTIuNjIsMyAxMiwzTTguNjYsNC45M0M4LjAzLDQuOTMgNy41LDUuNDQgNy41LDYuMDdDNy41LDYuNSA3Ljc3LDYuOSA4LjE3LDcuMUw5LjA1LDcuNUM5LjE3LDYuNzggOS41Niw2LjE0IDEwLjExLDUuNjlMOS4zLDUuMTNDOS4xMiw1IDguOSw0LjkzIDguNjYsNC45M004LjE3LDguOUM3Ljc3LDkuMSA3LjUsOS41IDcuNSw5LjkyQzcuNSwxMC41NSA4LjAzLDExLjA2IDguNjYsMTEuMDZDOC44OSwxMS4wNiA5LjExLDExIDkuMzEsMTAuODZMMTAuMTIsMTAuMzFDOS41Niw5Ljg2IDkuMTcsOS4yMiA5LjA1LDguNUw4LjE3LDguOU0xMiwyMkE5LDkgMCAwLDEgMywxM0E5LDkgMCAwLDEgMTIsMjJBOSw5IDAgMCwxIDIxLDEzQTksOSAwIDAsMSAxMiwyMk0xNC40NCwxOS41NkMxNi4zNCwxOC44NSAxNy44NSwxNy4zNCAxOC41NiwxNS40NEMxNi42NiwxNi4xNCAxNS4xNSwxNy42NiAxNC40NCwxOS41Nk01LjQ0LDE1LjQ0QzYuMTUsMTcuMzQgNy42NiwxOC44NSA5LjU2LDE5LjU2QzguODYsMTcuNjYgNy4zNCwxNi4xNSA1LjQ0LDE1LjQ0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlclBvcHB5ID0gXCJNMTguNSwxMkEzLjUsMy41IDAgMCwwIDIyLDguNUE2LjUsNi41IDAgMCwwIDE1LjUsMkEzLjUsMy41IDAgMCwwIDEyLDUuNUEzLjUsMy41IDAgMCwwIDguNSwyQTYuNSw2LjUgMCAwLDAgMiw4LjVBMy41LDMuNSAwIDAsMCA1LjUsMTJBMy41LDMuNSAwIDAsMCAyLDE1LjVBNi41LDYuNSAwIDAsMCA4LjUsMjJBMy41LDMuNSAwIDAsMCAxMiwxOC41QTMuNSwzLjUgMCAwLDAgMTUuNSwyMkE2LjUsNi41IDAgMCwwIDIyLDE1LjVBMy41LDMuNSAwIDAsMCAxOC41LDEyTTEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4QTQsNCAwIDAsMSAxNiwxMkE0LDQgMCAwLDEgMTIsMTZNMTQuNSwxMkEyLjUsMi41IDAgMCwxIDEyLDE0LjVBMi41LDIuNSAwIDAsMSA5LjUsMTJBMi41LDIuNSAwIDAsMSAxMiw5LjVBMi41LDIuNSAwIDAsMSAxNC41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlclR1bGlwID0gXCJNMywxM0E5LDkgMCAwLDAgMTIsMjJBOSw5IDAgMCwwIDMsMTNNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQTksOSAwIDAsMCAxMiwyMk0xOCwzVjhBNiw2IDAgMCwxIDEyLDE0QTYsNiAwIDAsMSA2LDhWM0M2Ljc0LDMgNy40NywzLjEyIDguMTYsMy4zOUM4LjcxLDMuNjIgOS4yLDMuOTYgOS42MSw0LjM5TDEyLDJMMTQuMzksNC4zOUMxNC44LDMuOTYgMTUuMjksMy42MiAxNS44NCwzLjM5QzE2LjUzLDMuMTIgMTcuMjYsMyAxOCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZsb3dlclR1bGlwT3V0bGluZSA9IFwiTTMsMTNBOSw5IDAgMCwwIDEyLDIyQTksOSAwIDAsMCAzLDEzTTUuNDQsMTUuNDRDNy4zNSwxNi4xNSA4Ljg1LDE3LjY1IDkuNTYsMTkuNTZDNy42NSwxOC44NSA2LjE1LDE3LjM1IDUuNDQsMTUuNDRNMTIsMjJBOSw5IDAgMCwwIDIxLDEzQTksOSAwIDAsMCAxMiwyMk0xNC40MiwxOS41N0MxNS4xMSwxNy42NCAxNi42NCwxNi4xMSAxOC41NywxNS40MkMxNy44NiwxNy4zNCAxNi4zNCwxOC44NiAxNC40MiwxOS41N00xMiwxNEE2LDYgMCAwLDAgMTgsOFYzQzE3LjI2LDMgMTYuNTMsMy4xMiAxNS44NCwzLjM5QzE1LjI5LDMuNjIgMTQuOCwzLjk2IDE0LjM5LDQuMzlMMTIsMkw5LjYxLDQuMzlDOS4yLDMuOTYgOC43MSwzLjYyIDguMTYsMy4zOUM3LjQ3LDMuMTIgNi43NCwzIDYsM1Y4QTYsNiAwIDAsMCAxMiwxNE04LDUuNjFMOS41Nyw3LjI2TDEyLDQuODNMMTQuNDMsNy4yNkwxNiw1LjYxVjhBNCw0IDAgMCwxIDEyLDEyQTQsNCAwIDAsMSA4LDhWNS42MVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2N1c0F1dG8gPSBcIk0xOSAxOUgxNVYyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWMTVIMTlNMTkgM0gxNVY1SDE5VjlIMjFWNUMyMSAzLjkgMjAuMSAzIDE5IDNNNSA1SDlWM0g1QzMuOSAzIDMgMy45IDMgNVY5SDVNNSAxNUgzVjE5QzMgMjAuMSAzLjkgMjEgNSAyMUg5VjE5SDVWMTVNOCA3QzYuOSA3IDYgNy45IDYgOVYxN0g4VjEzSDEwVjE3SDEyVjlDMTIgNy45IDExLjEgNyAxMCA3SDhNOCA5SDEwVjExSDhWOU0xMyA3VjE3SDE1VjEzSDE3VjExSDE1VjlIMThWN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2N1c0ZpZWxkID0gXCJNMTkgMTlIMTVWMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjE1SDE5TTE5IDNIMTVWNUgxOVY5SDIxVjVDMjEgMy45IDIwLjEgMyAxOSAzTTUgNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVWOUg1TTUgMTVIM1YxOUMzIDIwLjEgMy45IDIxIDUgMjFIOVYxOUg1VjE1TTcgMTFIOVYxM0g3VjExTTExIDExSDEzVjEzSDExVjExTTE1IDExSDE3VjEzSDE1VjExTTcgN0g5VjlIN1Y3TTExIDdIMTNWOUgxMVY3TTE1IDdIMTdWOUgxNVY3TTcgMTVIOVYxN0g3VjE1TTExIDE1SDEzVjE3SDExVjE1TTE1IDE1SDE3VjE3SDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvY3VzRmllbGRIb3Jpem9udGFsID0gXCJNMTkgMTlIMTVWMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjE1SDE5TTE5IDNIMTVWNUgxOVY5SDIxVjVDMjEgMy45IDIwLjEgMyAxOSAzTTUgNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVWOUg1TTUgMTVIM1YxOUMzIDIwLjEgMy45IDIxIDUgMjFIOVYxOUg1VjE1TTcgMTFIOVYxM0g3VjExTTExIDExSDEzVjEzSDExVjExTTE1IDExSDE3VjEzSDE1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvY3VzRmllbGRWZXJ0aWNhbCA9IFwiTTE5IDE5SDE1VjIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVYxNUgxOU0xOSAzSDE1VjVIMTlWOUgyMVY1QzIxIDMuOSAyMC4xIDMgMTkgM001IDVIOVYzSDVDMy45IDMgMyAzLjkgMyA1VjlINU01IDE1SDNWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDlWMTlINVYxNU0xMSAxMUgxM1YxM0gxMVYxMU0xMSA3SDEzVjlIMTFWN00xMSAxNUgxM1YxN0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXIgPSBcIk0xMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNkgxMkwxMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckFjY291bnQgPSBcIk0xOSwxN0gxMVYxNkMxMSwxNC42NyAxMy42NywxNCAxNSwxNEMxNi4zMywxNCAxOSwxNC42NyAxOSwxNk0xNSw5QTIsMiAwIDAsMSAxNywxMUEyLDIgMCAwLDEgMTUsMTNBMiwyIDAgMCwxIDEzLDExQzEzLDkuODkgMTMuOSw5IDE1LDlNMjAsNkgxMkwxMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJBY2NvdW50T3V0bGluZSA9IFwiTTE1IDE0QzE2LjMzIDE0IDE5IDE0LjY3IDE5IDE2VjE3SDExVjE2QzExIDE0LjY3IDEzLjY3IDE0IDE1IDE0TTE1IDEzQzE2LjExIDEzIDE3IDEyLjExIDE3IDExUzE2LjExIDkgMTUgOUMxMy45IDkgMTMgOS44OSAxMyAxMUMxMyAxMi4xMSAxMy45IDEzIDE1IDEzTTIyIDhWMThDMjIgMTkuMTEgMjEuMTEgMjAgMjAgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEgxMEwxMiA2SDIwQzIxLjExIDYgMjIgNi45IDIyIDhNMjAgOEg0VjE4SDIwVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyQWxlcnQgPSBcIk0xNSwxMkgxN1YxN0gxNVYxMk0xNSwxOEgxN1YyMEgxNVYxOE0yMywxNkE3LDcgMCAwLDEgMTYsMjNDMTMuNjIsMjMgMTEuNSwyMS44MSAxMC4yNSwyMEgzQzEuODksMjAgMSwxOS4xIDEsMThWNkMxLDQuODkgMS44OSw0IDMsNEg5TDExLDZIMTlBMiwyIDAgMCwxIDIxLDhWMTEuMUMyMi4yNCwxMi4zNiAyMywxNC4wOSAyMywxNk0xNiwxMUE1LDUgMCAwLDAgMTEsMTZBNSw1IDAgMCwwIDE2LDIxQTUsNSAwIDAsMCAyMSwxNkE1LDUgMCAwLDAgMTYsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyQWxlcnRPdXRsaW5lID0gXCJNMTUsMTJIMTdWMTdIMTVWMTJNMTUsMThIMTdWMjBIMTVWMThNMTYsOUMxNy4wNyw5IDE4LjA5LDkuMjQgMTksOS42N1Y4SDNWMThIOS4yOUM5LjEsMTcuMzYgOSwxNi42OSA5LDE2QTcsNyAwIDAsMSAxNiw5TTIzLDE2QTcsNyAwIDAsMSAxNiwyM0MxMy42MiwyMyAxMS41LDIxLjgxIDEwLjI1LDIwSDNDMS44OSwyMCAxLDE5LjEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0SDlMMTEsNkgxOUEyLDIgMCAwLDEgMjEsOFYxMS4xQzIyLjI0LDEyLjM2IDIzLDE0LjA5IDIzLDE2TTE2LDExQTUsNSAwIDAsMCAxMSwxNkE1LDUgMCAwLDAgMTYsMjFBNSw1IDAgMCwwIDIxLDE2QTUsNSAwIDAsMCAxNiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJDbG9jayA9IFwiTTMsNEMxLjg5LDQgMSw0Ljg5IDEsNlYxOEEyLDIgMCAwLDAgMywyMEgxMC4yNkMxMS41NywyMS44OCAxMy43MSwyMyAxNiwyM0E3LDcgMCAwLDAgMjMsMTZDMjMsMTQuMTcgMjIuMjgsMTIuNDIgMjEsMTEuMTFWOEMyMSw2Ljg5IDIwLjEsNiAxOSw2SDExTDksNEgzTTE2LDExQTUsNSAwIDAsMSAyMSwxNkE1LDUgMCAwLDEgMTYsMjFBNSw1IDAgMCwxIDExLDE2QTUsNSAwIDAsMSAxNiwxMU0xNSwxMlYxN0wxOC42MSwxOS4xNkwxOS4zNiwxNy45NEwxNi41LDE2LjI1VjEySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckNsb2NrT3V0bGluZSA9IFwiTTE1LDEySDE2LjVWMTYuMjVMMTkuMzYsMTcuOTRMMTguNjEsMTkuMTZMMTUsMTdWMTJNMTksOEgzVjE4SDkuMjlDOS4xLDE3LjM3IDksMTYuNyA5LDE2QTcsNyAwIDAsMSAxNiw5QzE3LjA3LDkgMTguMDksOS4yNCAxOSw5LjY3VjhNMywyMEMxLjg5LDIwIDEsMTkuMSAxLDE4VjZBMiwyIDAgMCwxIDMsNEg5TDExLDZIMTlBMiwyIDAgMCwxIDIxLDhWMTEuMUMyMi4yNCwxMi4zNiAyMywxNC4wOSAyMywxNkE3LDcgMCAwLDEgMTYsMjNDMTMuNjIsMjMgMTEuNSwyMS44MSAxMC4yNSwyMEgzTTE2LDExQTUsNSAwIDAsMCAxMSwxNkE1LDUgMCAwLDAgMTYsMjFBNSw1IDAgMCwwIDIxLDE2QTUsNSAwIDAsMCAxNiwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJDb2cgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMi4wOEE3IDcgMCAwIDEgMTIgMTlBNyA3IDAgMCAxIDE5IDEyQTcgNyAwIDAgMSAyMiAxMi42OVY4QzIyIDYuODkgMjEuMSA2IDIwIDZIMTJMMTAgNEg0TTE4IDE0QzE3Ljg3IDE0IDE3Ljc2IDE0LjA5IDE3Ljc0IDE0LjIxTDE3LjU1IDE1LjUzQzE3LjI1IDE1LjY2IDE2Ljk2IDE1LjgyIDE2LjcgMTZMMTUuNDYgMTUuNUMxNS4zNSAxNS41IDE1LjIyIDE1LjUgMTUuMTUgMTUuNjNMMTQuMTUgMTcuMzZDMTQuMDkgMTcuNDcgMTQuMTEgMTcuNiAxNC4yMSAxNy42OEwxNS4yNyAxOC41QzE1LjI1IDE4LjY3IDE1LjI0IDE4LjgzIDE1LjI0IDE5QzE1LjI0IDE5LjE3IDE1LjI1IDE5LjMzIDE1LjI3IDE5LjVMMTQuMjEgMjAuMzJDMTQuMTIgMjAuNCAxNC4wOSAyMC41MyAxNC4xNSAyMC42NEwxNS4xNSAyMi4zN0MxNS4yMSAyMi41IDE1LjM0IDIyLjUgMTUuNDYgMjIuNUwxNi43IDIyQzE2Ljk2IDIyLjE4IDE3LjI0IDIyLjM1IDE3LjU1IDIyLjQ3TDE3Ljc0IDIzLjc5QzE3Ljc2IDIzLjkxIDE3Ljg2IDI0IDE4IDI0SDIwQzIwLjExIDI0IDIwLjIyIDIzLjkxIDIwLjI0IDIzLjc5TDIwLjQzIDIyLjQ3QzIwLjczIDIyLjM0IDIxIDIyLjE4IDIxLjI3IDIyTDIyLjUgMjIuNUMyMi42MyAyMi41IDIyLjc2IDIyLjUgMjIuODMgMjIuMzdMMjMuODMgMjAuNjRDMjMuODkgMjAuNTMgMjMuODYgMjAuNCAyMy43NyAyMC4zMkwyMi43IDE5LjVDMjIuNzIgMTkuMzMgMjIuNzQgMTkuMTcgMjIuNzQgMTlDMjIuNzQgMTguODMgMjIuNzMgMTguNjcgMjIuNyAxOC41TDIzLjc2IDE3LjY4QzIzLjg1IDE3LjYgMjMuODggMTcuNDcgMjMuODIgMTcuMzZMMjIuODIgMTUuNjNDMjIuNzYgMTUuNSAyMi42MyAxNS41IDIyLjUgMTUuNUwyMS4yNyAxNkMyMSAxNS44MiAyMC43MyAxNS42NSAyMC40MiAxNS41M0wyMC4yMyAxNC4yMUMyMC4yMiAxNC4wOSAyMC4xMSAxNCAyMCAxNEgxOE0xOSAxNy41QzE5LjgzIDE3LjUgMjAuNSAxOC4xNyAyMC41IDE5QzIwLjUgMTkuODMgMTkuODMgMjAuNSAxOSAyMC41QzE4LjE2IDIwLjUgMTcuNSAxOS44MyAxNy41IDE5QzE3LjUgMTguMTcgMTguMTcgMTcuNSAxOSAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckNvZ091dGxpbmUgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxMlYxOEg0VjhIMjBWMTJIMjJWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2SDEyTDEwIDRNMTggMTRDMTcuODcgMTQgMTcuNzYgMTQuMDkgMTcuNzQgMTQuMjFMMTcuNTUgMTUuNTNDMTcuMjUgMTUuNjYgMTYuOTYgMTUuODIgMTYuNyAxNkwxNS40NiAxNS41QzE1LjM1IDE1LjUgMTUuMjIgMTUuNSAxNS4xNSAxNS42M0wxNC4xNSAxNy4zNkMxNC4wOSAxNy40NyAxNC4xMSAxNy42IDE0LjIxIDE3LjY4TDE1LjI3IDE4LjVDMTUuMjUgMTguNjcgMTUuMjQgMTguODMgMTUuMjQgMTlDMTUuMjQgMTkuMTcgMTUuMjUgMTkuMzMgMTUuMjcgMTkuNUwxNC4yMSAyMC4zMkMxNC4xMiAyMC40IDE0LjA5IDIwLjUzIDE0LjE1IDIwLjY0TDE1LjE1IDIyLjM3QzE1LjIxIDIyLjUgMTUuMzQgMjIuNSAxNS40NiAyMi41TDE2LjcgMjJDMTYuOTYgMjIuMTggMTcuMjQgMjIuMzUgMTcuNTUgMjIuNDdMMTcuNzQgMjMuNzlDMTcuNzYgMjMuOTEgMTcuODYgMjQgMTggMjRIMjBDMjAuMTEgMjQgMjAuMjIgMjMuOTEgMjAuMjQgMjMuNzlMMjAuNDMgMjIuNDdDMjAuNzMgMjIuMzQgMjEgMjIuMTggMjEuMjcgMjJMMjIuNSAyMi41QzIyLjYzIDIyLjUgMjIuNzYgMjIuNSAyMi44MyAyMi4zN0wyMy44MyAyMC42NEMyMy44OSAyMC41MyAyMy44NiAyMC40IDIzLjc3IDIwLjMyTDIyLjcgMTkuNUMyMi43MiAxOS4zMyAyMi43NCAxOS4xNyAyMi43NCAxOUMyMi43NCAxOC44MyAyMi43MyAxOC42NyAyMi43IDE4LjVMMjMuNzYgMTcuNjhDMjMuODUgMTcuNiAyMy44OCAxNy40NyAyMy44MiAxNy4zNkwyMi44MiAxNS42M0MyMi43NiAxNS41IDIyLjYzIDE1LjUgMjIuNSAxNS41TDIxLjI3IDE2QzIxIDE1LjgyIDIwLjczIDE1LjY1IDIwLjQyIDE1LjUzTDIwLjIzIDE0LjIxQzIwLjIyIDE0LjA5IDIwLjExIDE0IDIwIDE0TTE5IDE3LjVDMTkuODMgMTcuNSAyMC41IDE4LjE3IDIwLjUgMTlDMjAuNSAxOS44MyAxOS44MyAyMC41IDE5IDIwLjVDMTguMTYgMjAuNSAxNy41IDE5LjgzIDE3LjUgMTlDMTcuNSAxOC4xNyAxOC4xNyAxNy41IDE5IDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyRG93bmxvYWQgPSBcIk0yMCw2QTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDIwTTE5LjI1LDEzSDE2VjlIMTRWMTNIMTAuNzVMMTUsMTcuMjVcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJEb3dubG9hZE91dGxpbmUgPSBcIk0yMCAxOEg0VjhIMjBNMjAgNkgxMkwxMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWOEEyIDIgMCAwIDAgMjAgNk0xNCA5SDE2VjEzSDE5TDE1IDE3TDExIDEzSDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckVkaXQgPSBcIk0zLDRDMS44OSw0IDEsNC44OSAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMTFWMTguMTFMMjEsOC4xMVY4QzIxLDYuODkgMjAuMSw2IDE5LDZIMTFMOSw0SDNNMjEuMDQsMTEuMTNDMjAuOSwxMS4xMyAyMC43NiwxMS4xOSAyMC42NSwxMS4zTDE5LjY1LDEyLjNMMjEuNywxNC4zNUwyMi43LDEzLjM1QzIyLjkyLDEzLjE0IDIyLjkyLDEyLjc5IDIyLjcsMTIuNThMMjEuNDIsMTEuM0MyMS4zMSwxMS4xOSAyMS4xOCwxMS4xMyAyMS4wNCwxMS4xM00xOS4wNywxMi44OEwxMywxOC45NFYyMUgxNS4wNkwyMS4xMiwxNC45M0wxOS4wNywxMi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJFZGl0T3V0bGluZSA9IFwiTTIxLDExLjExQzIwLjkyLDExLjExIDIwLjcyLDExLjIxIDIwLjYyLDExLjMxTDE5LjYyLDEyLjMxTDIxLjcyLDE0LjQyTDIyLjcyLDEzLjQxQzIyLjkyLDEzLjIxIDIyLjkyLDEyLjgxIDIyLjcyLDEyLjYxTDIxLjQyLDExLjMxQzIxLjMyLDExLjIxIDIxLjIyLDExLjExIDIxLDExLjExTTE5LjEyLDEyLjkxTDEzLDE4LjkyVjIxSDE1LjEyTDIxLjIyLDE0LjkyTDE5LjEyLDEyLjkxTTIxLDhWOC4xMUwxOSwxMC4xMVY4SDNWMThIMTFWMjBIM0EyLDIgMCAwLDEgMSwxOFY2QzEsNC45MSAxLjksNCAzLDRIOUwxMSw2SDE5QzIwLjEyLDYgMjEsNi45MSAyMSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckdvb2dsZURyaXZlID0gXCJNMTMuNzUsOUgxNi4xNEwxOSwxNEgxNi4wNUwxMy41LDkuNDZNMTguMywxN0gxMi43NUwxNC4xNSwxNC41SDE5LjI3TDE5LjUzLDE0Ljk2TTExLjUsMTdMMTAuNCwxNC44NkwxMy4yNCw5LjlMMTQuNzQsMTIuNTZMMTIuMjUsMTdNMjAsNkgxMkwxMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJIZWFydCA9IFwiTTIwIDZIMTJMMTAgNEg0QzIuODkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMSAyLjg5IDIwIDQgMjBIMjBDMjEuMSAyMCAyMiAxOS4xIDIyIDE4VjhDMjIgNi45IDIxLjEgNiAyMCA2TTE4LjQyIDEzLjVMMTUgMTdMMTEuNTkgMTMuNUMxMS4yMiAxMy4xMiAxMSAxMi42MiAxMSAxMi4wNUMxMSAxMC45MiAxMS45IDEwIDEzIDEwQzEzLjU0IDEwIDE0LjA1IDEwLjIzIDE0LjQyIDEwLjYxTDE1IDExLjJMMTUuNTkgMTAuNkMxNS45NSAxMC4yMyAxNi40NiAxMCAxNyAxMEMxOC4xIDEwIDE5IDEwLjkyIDE5IDEyLjA1QzE5IDEyLjYxIDE4Ljc4IDEzLjEzIDE4LjQyIDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVySGVhcnRPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwTTIwIDZIMTJMMTAgNEg0QzIuODkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2TTEzIDEwQzExLjkgMTAgMTEgMTAuOTIgMTEgMTIuMDVDMTEgMTIuNjIgMTEuMjIgMTMuMTIgMTEuNTkgMTMuNUwxNSAxN0wxOC40MiAxMy41QzE4Ljc4IDEzLjEzIDE5IDEyLjYxIDE5IDEyLjA1QzE5IDEwLjkyIDE4LjEgMTAgMTcgMTBDMTYuNDYgMTAgMTUuOTUgMTAuMjMgMTUuNTkgMTAuNkwxNSAxMS4yTDE0LjQyIDEwLjYxQzE0LjA1IDEwLjIzIDEzLjU0IDEwIDEzIDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlckhvbWUgPSBcIk0yMCA2SDEyTDEwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY4QTIgMiAwIDAgMCAyMCA2TTE3IDEzVjE3SDE1VjE0SDEzVjE3SDExVjEzSDlMMTQgOUwxOSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJIb21lT3V0bGluZSA9IFwiTTIwIDZIMTJMMTAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhBMiAyIDAgMCAwIDIwIDZNMjAgMThINFY4SDIwTTEzIDE3VjE0SDE1VjE3SDE3VjEzSDE5TDE0IDlMOSAxM0gxMVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJJbWFnZSA9IFwiTTUsMTdMOS41LDExTDEzLDE1LjVMMTUuNSwxMi41TDE5LDE3TTIwLDZIMTJMMTAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhBMiwyIDAgMCwwIDIwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVySW5mb3JtYXRpb24gPSBcIk0yMSAxMS4xVjhDMjEgNi45IDIwLjEgNiAxOSA2SDExTDkgNEgzQzEuOSA0IDEgNC45IDEgNlYxOEMxIDE5LjEgMS45IDIwIDMgMjBIMTAuM0MxMS42IDIxLjkgMTMuOCAyMyAxNiAyM0MxOS45IDIzIDIzIDE5LjkgMjMgMTZDMjMgMTQuMiAyMi4zIDEyLjQgMjEgMTEuMU0xNiAyMUMxMy4yIDIxIDExIDE4LjggMTEgMTZTMTMuMiAxMSAxNiAxMSAyMSAxMy4yIDIxIDE2IDE4LjggMjEgMTYgMjFNMTcgMjBIMTVWMTVIMTdWMjBNMTcgMTRIMTVWMTJIMTdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVySW5mb3JtYXRpb25PdXRsaW5lID0gXCJNMjEgMTEuMVY4QzIxIDYuOSAyMC4xIDYgMTkgNkgxMUw5IDRIM0MxLjkgNCAxIDQuOSAxIDZWMThDMSAxOS4xIDEuOSAyMCAzIDIwSDEwLjJDMTEuNCAyMS44IDEzLjYgMjMgMTYgMjNDMTkuOSAyMyAyMyAxOS45IDIzIDE2QzIzIDE0LjEgMjIuMiAxMi40IDIxIDExLjFNOS4zIDE4SDNWOEgxOVY5LjdDMTguMSA5LjIgMTcuMSA5IDE2IDlDMTIuMSA5IDkgMTIuMSA5IDE2QzkgMTYuNyA5LjEgMTcuNCA5LjMgMThNMTYgMjFDMTMuMiAyMSAxMSAxOC44IDExIDE2UzEzLjIgMTEgMTYgMTEgMjEgMTMuMiAyMSAxNiAxOC44IDIxIDE2IDIxTTE3IDE0SDE1VjEySDE3VjE0TTE3IDIwSDE1VjE1SDE3VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlcktleSA9IFwiTTQsNEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QTIsMiAwIDAsMCAyMCw2SDEyTDEwLDRNMTEsMTBDMTIuMzEsMTAgMTMuNDIsMTAuODQgMTMuODMsMTJIMTlWMTRIMThWMTZIMTZWMTRIMTMuODNDMTMuNDIsMTUuMTcgMTIuMzEsMTYgMTEsMTZBMywzIDAgMCwxIDgsMTNBMywzIDAgMCwxIDExLDEwTTExLDEyQTEsMSAwIDAsMCAxMCwxM0MxMCwxMy41NiAxMC40NSwxNCAxMSwxNEExLDEgMCAwLDAgMTIsMTNBMSwxIDAgMCwwIDExLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlcktleU5ldHdvcmsgPSBcIk02LDVDNC44OSw1IDQsNS44OSA0LDdWMTVBMiwyIDAgMCwwIDYsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE4QTIsMiAwIDAsMCAyMCwxNVY5QTIsMiAwIDAsMCAxOCw3SDEyTDEwLDVINk05LDlDMTAuMzEsOSAxMS40Miw5LjgzIDExLjgzLDExSDE3VjEzSDE2VjE1SDE0VjEzSDExLjgzQzExLjQyLDE0LjE3IDEwLjMxLDE1IDksMTVBMywzIDAgMCwxIDYsMTJBMywzIDAgMCwxIDksOU05LDExQTEsMSAwIDAsMCA4LDEyQzgsMTIuNTYgOC40NSwxMyA5LDEzQTEsMSAwIDAsMCAxMCwxMkExLDEgMCAwLDAgOSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJLZXlOZXR3b3JrT3V0bGluZSA9IFwiTTkgOEM3LjM0IDggNiA5LjM0IDYgMTFTNy4zNCAxNCA5IDE0QzEwLjMxIDE0IDExLjQyIDEzLjE3IDExLjgzIDEySDE0VjE0SDE2VjEySDE3VjEwSDExLjgzQzExLjQyIDguODMgMTAuMzEgOCA5IDhNOSAxMkM4LjQ1IDEyIDggMTEuNTUgOCAxMVM4LjQ1IDEwIDkgMTAgMTAgMTAuNDUgMTAgMTEgOS41NSAxMiA5IDEyTTE1IDIwQzE1IDE5LjQ1IDE0LjU1IDE5IDE0IDE5SDEzVjE3SDE5QzIwLjExIDE3IDIxIDE2LjExIDIxIDE1VjdDMjEgNS45IDIwLjExIDUgMTkgNUgxM0wxMSAzSDVDMy45IDMgMyAzLjkgMyA1VjE1QzMgMTYuMTEgMy45IDE3IDUgMTdIMTFWMTlIMTBDOS40NSAxOSA5IDE5LjQ1IDkgMjBIMlYyMkg5QzkgMjIuNTUgOS40NSAyMyAxMCAyM0gxNEMxNC41NSAyMyAxNSAyMi41NSAxNSAyMkgyMlYyMEgxNU01IDE1VjdIMTlWMTVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJLZXlPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwTTIwIDZIMTJMMTAgNEg0QzIuODkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2TTEzLjgzIDEyQzEzLjQyIDEwLjg0IDEyLjMxIDEwIDExIDEwQzkuMzQgMTAgOCAxMS4zNCA4IDEzUzkuMzQgMTYgMTEgMTZDMTIuMzEgMTYgMTMuNDIgMTUuMTcgMTMuODMgMTRIMTZWMTZIMThWMTRIMTlWMTJIMTMuODNNMTEgMTRDMTAuNDUgMTQgMTAgMTMuNTYgMTAgMTNDMTAgMTIuNDUgMTAuNDUgMTIgMTEgMTJTMTIgMTIuNDUgMTIgMTMgMTEuNTUgMTQgMTEgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTG9jayA9IFwiTTIwLDZBMiwyIDAgMCwxIDIyLDhWMThBMiwyIDAgMCwxIDIwLDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDEwTDEyLDZIMjBNMTksMTdWMTNIMThWMTJBMywzIDAgMCwwIDE1LDlBMywzIDAgMCwwIDEyLDEyVjEzSDExVjE3SDE5TTE1LDExQTEsMSAwIDAsMSAxNiwxMlYxM0gxNFYxMkExLDEgMCAwLDEgMTUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTG9ja09wZW4gPSBcIk0yMCw2QTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDIwTTE5LDE3VjEzSDE4TDE2LDEzSDE0VjExQTEsMSAwIDAsMSAxNSwxMEExLDEgMCAwLDEgMTYsMTFIMThBMywzIDAgMCwwIDE1LDhBMywzIDAgMCwwIDEyLDExVjEzSDExVjE3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck1hcmtlciA9IFwiTTEwIDRMMTIgNkgyMEMyMS4xIDYgMjIgNi44OSAyMiA4VjExLjM0QzIxLjA0IDEwLjUgMTkuODIgMTAgMTguNSAxMEMxNS41IDEwIDEzIDEyLjY1IDEzIDE1LjVDMTMgMTYuOTcgMTMuNjUgMTguNTUgMTQuNSAyMEg0QzIuODkgMjAgMiAxOS4xIDIgMThMMiA2QzIgNC44OSAyLjg5IDQgNCA0SDEwTTE4LjUgMTJDMjAuNCAxMiAyMiAxMy42IDIyIDE1LjVDMjIgMTguMSAxOC41IDIyIDE4LjUgMjJDMTguNSAyMiAxNSAxOC4xIDE1IDE1LjVDMTUgMTMuNiAxNi42IDEyIDE4LjUgMTJNMTguNSAxNi44QzE5LjIgMTYuOCAxOS44IDE2LjIgMTkuNyAxNS42QzE5LjcgMTUgMTkuMSAxNC40IDE4LjUgMTQuNEMxNy45IDE0LjQgMTcuMyAxNC45IDE3LjMgMTUuNkMxNy4zIDE2LjIgMTcuOCAxNi44IDE4LjUgMTYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNYXJrZXJPdXRsaW5lID0gXCJNMTguNSAxMkMyMC40IDEyIDIyIDEzLjYgMjIgMTUuNUMyMiAxOC4xIDE4LjUgMjIgMTguNSAyMkMxOC41IDIyIDE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMk0xOC41IDE2LjhDMTkuMiAxNi44IDE5LjggMTYuMiAxOS43IDE1LjZDMTkuNyAxNSAxOS4xIDE0LjQgMTguNSAxNC40QzE3LjkgMTQuNCAxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44TTIwIDhINFYxOEgxMy41QzEzLjc5IDE4LjY4IDE0LjEzIDE5LjM1IDE0LjUgMjBINEMyLjg5IDIwIDIgMTkuMSAyIDE4TDIgNkMyIDQuODkgMi44OSA0IDQgNEgxMEwxMiA2SDIwQzIxLjEgNiAyMiA2Ljg5IDIyIDhWMTEuMzRDMjEuNDIgMTAuODQgMjAuNzQgMTAuNDUgMjAgMTAuMjNWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNb3ZlID0gXCJNMTQsMThWMTVIMTBWMTFIMTRWOEwxOSwxM00yMCw2SDEyTDEwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWOEMyMiw2Ljg5IDIxLjEsNiAyMCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck1vdmVPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwVjE4TTEyIDZMMTAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgyMEMyMS4xMSAyMCAyMiAxOS4xMSAyMiAxOFY4QzIyIDYuOSAyMS4xMSA2IDIwIDZIMTJNMTEgMTRWMTJIMTVWOUwxOSAxM0wxNSAxN1YxNEgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNdWx0aXBsZSA9IFwiTTIyLDRIMTRMMTIsMkg2QTIsMiAwIDAsMCA0LDRWMTZBMiwyIDAgMCwwIDYsMThIMjJBMiwyIDAgMCwwIDI0LDE2VjZBMiwyIDAgMCwwIDIyLDRNMiw2SDBWMTFIMFYyMEEyLDIgMCAwLDAgMiwyMkgyMFYyMEgyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTXVsdGlwbGVJbWFnZSA9IFwiTTcsMTVMMTEuNSw5TDE1LDEzLjVMMTcuNSwxMC41TDIxLDE1TTIyLDRIMTRMMTIsMkg2QTIsMiAwIDAsMCA0LDRWMTZBMiwyIDAgMCwwIDYsMThIMjJBMiwyIDAgMCwwIDI0LDE2VjZBMiwyIDAgMCwwIDIyLDRNMiw2SDBWMTFIMFYyMEEyLDIgMCAwLDAgMiwyMkgyMFYyMEgyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTXVsdGlwbGVPdXRsaW5lID0gXCJNMjIsNEEyLDIgMCAwLDEgMjQsNlYxNkEyLDIgMCAwLDEgMjIsMThINkEyLDIgMCAwLDEgNCwxNlY0QTIsMiAwIDAsMSA2LDJIMTJMMTQsNEgyMk0yLDZWMjBIMjBWMjJIMkEyLDIgMCAwLDEgMCwyMFYxMUgwVjZIMk02LDZWMTZIMjJWNkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck11bHRpcGxlUGx1cyA9IFwiTTIgMjBWNkgwVjIwQzAgMjEuMSAuOSAyMiAyIDIySDIwVjIwSDJNMjIgNEgxNEwxMiAySDZDNS42IDIgNS4yIDIuMSA0LjkgMi4zTDQuMyAyLjlDNC4xIDMuMiA0IDMuNiA0IDRWMTZDNCAxNi40IDQuMSAxNi44IDQuMyAxNy4xQzQuNCAxNy4yIDQuNSAxNy4zIDQuNSAxNy40QzUgMTcuOCA1LjUgMTggNiAxOEgyMkMyMy4xIDE4IDI0IDE3LjEgMjQgMTZWNkMyNCA0LjkgMjMuMSA0IDIyIDRNMjIgMTJIMTlWMTVIMTdWMTJIMTRWMTBIMTdWN0gxOVYxMEgyMlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNdWx0aXBsZVBsdXNPdXRsaW5lID0gXCJNMjIgNEMyMy4xIDQgMjQgNC45IDI0IDZWMTZDMjQgMTcuMSAyMy4xIDE4IDIyIDE4SDZDNC45IDE4IDQgMTcuMSA0IDE2VjRDNCAyLjkgNC45IDIgNiAySDEyTDE0IDRIMjJNMiA2VjIwSDIwVjIySDJDLjkgMjIgMCAyMS4xIDAgMjBWNkgyTTYgNlYxNkgyMlY2SDZNMTQgMTBIMTZWOEgxOFYxMEgyMFYxMkgxOFYxNEgxNlYxMkgxNFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJNdXNpYyA9IFwiTTEwIDRMMTIgNkgyMEMyMS4xIDYgMjIgNi44OSAyMiA4VjE4QzIyIDE5LjEgMjEuMSAyMCAyMCAyMEg0QzIuODkgMjAgMiAxOS4xIDIgMThMMiA2QzIgNC44OSAyLjg5IDQgNCA0SDEwTTE5IDlIMTUuNVYxMy4wNkwxNSAxM0MxMy45IDEzIDEzIDEzLjkgMTMgMTVDMTMgMTYuMTEgMTMuOSAxNyAxNSAxN0MxNi4xMSAxNyAxNyAxNi4xMSAxNyAxNVYxMUgxOVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck11c2ljT3V0bGluZSA9IFwiTTIwIDE4VjhINFYxOEgyME0yMCA2QzIxLjEgNiAyMiA2Ljg5IDIyIDhWMThDMjIgMTkuMSAyMS4xIDIwIDIwIDIwSDRDMi44OSAyMCAyIDE5LjEgMiAxOEwyIDZDMiA0Ljg5IDIuODkgNCA0IDRIMTBMMTIgNkgyME0xOCA5VjExSDE2VjE1QzE2IDE2LjExIDE1LjExIDE3IDE0IDE3QzEyLjkgMTcgMTIgMTYuMTEgMTIgMTVDMTIgMTMuOSAxMi45IDEzIDE0IDEzQzE0LjE3IDEzIDE0LjM0IDEzIDE0LjUgMTMuMDZWOUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJOZXR3b3JrID0gXCJNMywxNVY1QTIsMiAwIDAsMSA1LDNIMTFMMTMsNUgxOUEyLDIgMCAwLDEgMjEsN1YxNUEyLDIgMCAwLDEgMTksMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDVBMiwyIDAgMCwxIDMsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyTmV0d29ya091dGxpbmUgPSBcIk0xNSAyMEMxNSAxOS40NSAxNC41NSAxOSAxNCAxOUgxM1YxN0gxOUMyMC4xMSAxNyAyMSAxNi4xMSAyMSAxNVY3QzIxIDUuOSAyMC4xMSA1IDE5IDVIMTNMMTEgM0g1QzMuOSAzIDMgMy45IDMgNVYxNUMzIDE2LjExIDMuOSAxNyA1IDE3SDExVjE5SDEwQzkuNDUgMTkgOSAxOS40NSA5IDIwSDJWMjJIOUM5IDIyLjU1IDkuNDUgMjMgMTAgMjNIMTRDMTQuNTUgMjMgMTUgMjIuNTUgMTUgMjJIMjJWMjBIMTVNNSAxNVY3SDE5VjE1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyT3BlbiA9IFwiTTE5LDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDEwTDEyLDZIMTlBMiwyIDAgMCwxIDIxLDhIMjFMNCw4VjE4TDYuMTQsMTBIMjMuMjFMMjAuOTMsMTguNUMyMC43LDE5LjM3IDE5LjkyLDIwIDE5LDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlck9wZW5PdXRsaW5lID0gXCJNNi4xLDEwTDQsMThWOEgyMUEyLDIgMCAwLDAgMTksNkgxMkwxMCw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgxOUMxOS45LDIwIDIwLjcsMTkuNCAyMC45LDE4LjVMMjMuMiwxMEg2LjFNMTksMThINkw3LjYsMTJIMjAuNkwxOSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJPdXRsaW5lID0gXCJNMjAsMThINFY4SDIwTTIwLDZIMTJMMTAsNEg0QzIuODksNCAyLDQuODkgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QzIyLDYuODkgMjEuMSw2IDIwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyUGx1cyA9IFwiTTEwLDRMMTIsNkgyMEEyLDIgMCAwLDEgMjIsOFYxOEEyLDIgMCAwLDEgMjAsMjBINEMyLjg5LDIwIDIsMTkuMSAyLDE4VjZDMiw0Ljg5IDIuODksNCA0LDRIMTBNMTUsOVYxMkgxMlYxNEgxNVYxN0gxN1YxNEgyMFYxMkgxN1Y5SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclBsdXNPdXRsaW5lID0gXCJNMTIgMTJIMTRWMTBIMTZWMTJIMThWMTRIMTZWMTZIMTRWMTRIMTJWMTJNMjIgOFYxOEMyMiAxOS4xMSAyMS4xMSAyMCAyMCAyMEg0QzIuODkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuODkgNCA0IDRIMTBMMTIgNkgyMEMyMS4xMSA2IDIyIDYuODkgMjIgOE0yMCA4SDRWMThIMjBWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJQb3VuZCA9IFwiTTE1LjI1LDEzSDE3LjI1TDE2Ljc1LDE1SDE0Ljc1TDE1LjI1LDEzTTIyLDhWMThBMiwyIDAgMCwxIDIwLDIwSDRBMiwyIDAgMCwxIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDIwQTIsMiAwIDAsMSAyMiw4TTIwLDEySDE4LjVMMTksMTBIMThMMTcuNSwxMkgxNS41TDE2LDEwSDE1TDE0LjUsMTJIMTNWMTNIMTQuMjVMMTMuNzUsMTVIMTJWMTZIMTMuNUwxMywxOEgxNEwxNC41LDE2SDE2LjVMMTYsMThIMTdMMTcuNSwxNkgxOVYxNUgxNy43NUwxOC4yNSwxM0gyMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJQb3VuZE91dGxpbmUgPSBcIk0yMCwxOEg0VjhIMjBNMjAsNkgxMkwxMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhDMjIsNi44OSAyMS4xLDYgMjAsNk0xOSwxMlYxMUgxNy41TDE4LDlIMTdMMTYuNSwxMUgxNC41TDE1LDlIMTRMMTMuNSwxMUgxMlYxMkgxMy4yNUwxMi43NSwxNEgxMVYxNUgxMi41TDEyLDE3SDEzTDEzLjUsMTVIMTUuNUwxNSwxN0gxNkwxNi41LDE1SDE4VjE0SDE2Ljc1TDE3LjI1LDEySDE5TTE1Ljc1LDE0SDEzLjc1TDE0LjI1LDEySDE2LjI1TDE1Ljc1LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclJlZnJlc2ggPSBcIk0xOCAxNC41QzE5LjExIDE0LjUgMjAuMTEgMTQuOTUgMjAuODMgMTUuNjdMMjIgMTQuNVYxOC41SDE4TDE5Ljc3IDE2LjczQzE5LjMyIDE2LjI4IDE4LjY5IDE2IDE4IDE2QzE2LjYyIDE2IDE1LjUgMTcuMTIgMTUuNSAxOC41QzE1LjUgMTkuODggMTYuNjIgMjEgMTggMjFDMTguODIgMjEgMTkuNTQgMjAuNjEgMjAgMjBIMjEuNzFDMjEuMTIgMjEuNDcgMTkuNjggMjIuNSAxOCAyMi41QzE1Ljc5IDIyLjUgMTQgMjAuNzEgMTQgMTguNUMxNCAxNi4yOSAxNS43OSAxNC41IDE4IDE0LjVNMTAgNEwxMiA2SDIwQzIxLjEgNiAyMiA2Ljg5IDIyIDhWMTNDMjEgMTIuMzggMTkuNzkgMTIgMTguNSAxMkMxNC45MSAxMiAxMiAxNC45MSAxMiAxOC41QzEyIDE5IDEyLjA2IDE5LjUgMTIuMTcgMjBINEMyLjg5IDIwIDIgMTkuMSAyIDE4TDIgNkMyIDQuODkgMi44OSA0IDQgNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJSZWZyZXNoT3V0bGluZSA9IFwiTTE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVDMTUuNSAxOS44OCAxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NCAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41QzE0IDE2LjI5IDE1Ljc5IDE0LjUgMTggMTQuNU0yMCA4SDRWMThIMTJMMTIgMTguNUMxMiAxOSAxMi4wNiAxOS41IDEyLjE3IDIwSDRDMi44OSAyMCAyIDE5LjEgMiAxOEwyIDZDMiA0Ljg5IDIuODkgNCA0IDRIMTBMMTIgNkgyMEMyMS4xIDYgMjIgNi44OSAyMiA4VjEzQzIxLjM5IDEyLjYzIDIwLjcyIDEyLjM0IDIwIDEyLjE3VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyUmVtb3ZlID0gXCJNMTAsNEwxMiw2SDIwQTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxME0xMi40NiwxMC44OEwxNC41OSwxM0wxMi40NiwxNS4xMkwxMy44OCwxNi41NEwxNiwxNC40MUwxOC4xMiwxNi41NEwxOS41NCwxNS4xMkwxNy40MSwxM0wxOS41NCwxMC44OEwxOC4xMiw5LjQ2TDE2LDExLjU5TDEzLjg4LDkuNDZMMTIuNDYsMTAuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyUmVtb3ZlT3V0bGluZSA9IFwiTTExLjQ2IDEwLjg4TDEyLjg4IDkuNDZMMTUgMTEuNTlMMTcuMTIgOS40NkwxOC41NCAxMC44OEwxNi40MSAxM0wxOC41NCAxNS4xMkwxNy4xMiAxNi41NEwxNSAxNC40MUwxMi44OCAxNi41NEwxMS40NiAxNS4xMkwxMy41OSAxM0wxMS40NiAxMC44OE0yMiA4VjE4QzIyIDE5LjExIDIxLjExIDIwIDIwIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRIMTBMMTIgNkgyMEMyMS4xMSA2IDIyIDYuOSAyMiA4TTIwIDhINFYxOEgyMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclNlYXJjaCA9IFwiTTE2LjUsMTJDMTksMTIgMjEsMTQgMjEsMTYuNUMyMSwxNy4zOCAyMC43NSwxOC4yMSAyMC4zMSwxOC45TDIzLjM5LDIyTDIyLDIzLjM5TDE4Ljg4LDIwLjMyQzE4LjE5LDIwLjc1IDE3LjM3LDIxIDE2LjUsMjFDMTQsMjEgMTIsMTkgMTIsMTYuNUMxMiwxNCAxNCwxMiAxNi41LDEyTTE2LjUsMTRBMi41LDIuNSAwIDAsMCAxNCwxNi41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOUEyLjUsMi41IDAgMCwwIDE5LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE0TTksNEwxMSw2SDE5QTIsMiAwIDAsMSAyMSw4VjExLjgxQzE5LjgzLDEwLjY5IDE4LjI1LDEwIDE2LjUsMTBBNi41LDYuNSAwIDAsMCAxMCwxNi41QzEwLDE3Ljc5IDEwLjM3LDE5IDExLDIwSDNDMS44OSwyMCAxLDE5LjEgMSwxOFY2QzEsNC44OSAxLjg5LDQgMyw0SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyU2VhcmNoT3V0bGluZSA9IFwiTTE2LjUsMTJDMTksMTIgMjEsMTQgMjEsMTYuNUMyMSwxNy4zOCAyMC43NSwxOC4yMSAyMC4zMSwxOC45TDIzLjM5LDIyTDIyLDIzLjM5TDE4Ljg4LDIwLjMyQzE4LjE5LDIwLjc1IDE3LjM3LDIxIDE2LjUsMjFDMTQsMjEgMTIsMTkgMTIsMTYuNUMxMiwxNCAxNCwxMiAxNi41LDEyTTE2LjUsMTRBMi41LDIuNSAwIDAsMCAxNCwxNi41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOUEyLjUsMi41IDAgMCwwIDE5LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE0TTE5LDhIM1YxOEgxMC4xN0MxMC4zNCwxOC43MiAxMC42MywxOS4zOSAxMSwyMEgzQzEuODksMjAgMSwxOS4xIDEsMThWNkMxLDQuODkgMS44OSw0IDMsNEg5TDExLDZIMTlBMiwyIDAgMCwxIDIxLDhWMTEuODFDMjAuNDIsMTEuMjYgMTkuNzUsMTAuODEgMTksMTAuNVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclNldHRpbmdzID0gXCJNNCA0QzIuODkgNCAyIDQuODkgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY4QzIyIDYuODkgMjEuMSA2IDIwIDZIMTJMMTAgNEg0TTcgMjJWMjRIOVYyMkg3TTExIDIyVjI0SDEzVjIySDExTTE1IDIyVjI0SDE3VjIySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclNldHRpbmdzT3V0bGluZSA9IFwiTTQgNEMyLjg5IDQgMiA0Ljg5IDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWOEMyMiA2Ljg5IDIxLjEgNiAyMCA2SDEyTDEwIDRINE00IDhIMjBWMThINFY4TTcgMjJWMjRIOVYyMkg3TTExIDIyVjI0SDEzVjIySDExTTE1IDIyVjI0SDE3VjIySDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyU3RhciA9IFwiTTIwLDZIMTJMMTAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjhBMiwyIDAgMCwwIDIwLDZNMTcuOTQsMTdMMTUsMTUuMjhMMTIuMDYsMTdMMTIuODQsMTMuNjdMMTAuMjUsMTEuNDNMMTMuNjYsMTEuMTRMMTUsOEwxNi4zNCwxMS4xNEwxOS43NSwxMS40M0wxNy4xNiwxMy42N0wxNy45NCwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTdGFyTXVsdGlwbGUgPSBcIk0yIDZIMFYyMEMwIDIxLjExIC44OTUgMjIgMiAyMkgyMFYyMEgyVjZNMjIgNEgxNEwxMiAySDZDNC44OSAyIDQgMi44OSA0IDRWMTZDNCAxNy4xIDQuODkgMTggNiAxOEgyMkMyMy4xMSAxOCAyNCAxNy4xIDI0IDE2VjZDMjQgNC44OSAyMy4xMSA0IDIyIDRNMTkuOTQgMTVMMTcgMTMuMjdMMTQuMDYgMTVMMTQuODQgMTEuNjZMMTIuMjUgOS40MkwxNS42NiA5LjEzTDE3IDZMMTguMzQgOS4xM0wyMS43NSA5LjQyTDE5LjE2IDExLjY2TDE5Ljk0IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclN0YXJNdWx0aXBsZU91dGxpbmUgPSBcIk0yIDZWMjBIMjBWMjJIMkMuODk1IDIyIDAgMjEuMTEgMCAyMFY2SDJNMTIuNzggMTAuMDVMMTUuODEgOS43OUwxNyA3TDE4LjE5IDkuNzlMMjEuMjIgMTAuMDVMMTguOTIgMTIuMDRMMTkuNjEgMTVMMTcgMTMuNDdMMTQuMzkgMTVMMTUuMDggMTIuMDRMMTIuNzggMTAuMDVNMjQgNlYxNkMyNCAxNy4xMSAyMy4xMSAxOCAyMiAxOEg2QzQuOSAxOCA0IDE3LjExIDQgMTZWNEM0IDIuODkgNC45IDIgNiAySDEyTDE0IDRIMjJDMjMuMTEgNCAyNCA0LjkgMjQgNk0yMiA2SDZWMTZIMjJWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTdGFyT3V0bGluZSA9IFwiTTEwLjc4IDEyLjA1TDEzLjgxIDExLjc5TDE1IDlMMTYuMTkgMTEuNzlMMTkuMjIgMTIuMDVMMTYuOTIgMTQuMDRMMTcuNjEgMTdMMTUgMTUuNDdMMTIuMzkgMTdMMTMuMDggMTQuMDRMMTAuNzggMTIuMDVNMjIgOFYxOEMyMiAxOS4xMSAyMS4xMSAyMCAyMCAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDEwTDEyIDZIMjBDMjEuMTEgNiAyMiA2LjkgMjIgOE0yMCA4SDRWMThIMjBWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTd2FwID0gXCJNMjAgNkgxMkwxMCA0SDRBMiAyIDAgMCAwIDIgNlYxOEEyIDIgMCAwIDAgNCAyMEgyMEEyIDIgMCAwIDAgMjIgMThWOEEyIDIgMCAwIDAgMjAgNk0xNSAxNlYxNEg5VjE2TDYgMTNMOSAxMFYxMkgxNVYxMEwxOCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTd2FwT3V0bGluZSA9IFwiTTIwIDE4SDRWOEgyME0yMCA2SDEyTDEwIDRINEEyIDIgMCAwIDAgMiA2VjE4QTIgMiAwIDAgMCA0IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFY4QTIgMiAwIDAgMCAyMCA2TTE4IDEzTDE1IDEwVjEySDlWMTBMNiAxM0w5IDE2VjE0SDE1VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclN5bmMgPSBcIk0xMCw0TDEyLDZIMjBBMiwyIDAgMCwxIDIyLDhWMTEuNUMyMS4yMywxMS4xOCAyMC4zOSwxMSAxOS41LDExQTYuNSw2LjUgMCAwLDAgMTMsMTcuNUMxMywxOC4zOSAxMy4xOCwxOS4yMyAxMy41LDIwSDRDMi44OSwyMCAyLDE5LjEgMiwxOFY2QzIsNC44OSAyLjg5LDQgNCw0SDEwTTE5LDEyVjEzLjVBNCw0IDAgMCwxIDIzLDE3LjVDMjMsMTguMzIgMjIuNzUsMTkuMDggMjIuMzMsMTkuNzFMMjEuMjQsMTguNjJDMjEuNDEsMTguMjggMjEuNSwxNy45IDIxLjUsMTcuNUEyLjUsMi41IDAgMCwwIDE5LDE1VjE2LjVMMTYuNzUsMTQuMjVMMTksMTJNMTksMjNWMjEuNUE0LDQgMCAwLDEgMTUsMTcuNUMxNSwxNi42OCAxNS4yNSwxNS45MiAxNS42NywxNS4yOUwxNi43NiwxNi4zOEMxNi41OSwxNi43MiAxNi41LDE3LjEgMTYuNSwxNy41QTIuNSwyLjUgMCAwLDAgMTksMjBWMTguNUwyMS4yNSwyMC43NUwxOSwyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJTeW5jT3V0bGluZSA9IFwiTTEwLDRMMTIsNkgyMEEyLDIgMCAwLDEgMjIsOFYxMS41QzIxLjM4LDExLjI0IDIwLjcsMTEuMDcgMjAsMTFWOEg0VjE4SDEzQzEzLjA3LDE4LjcgMTMuMjQsMTkuMzggMTMuNSwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxME0xOSwxMlYxMy41QTQsNCAwIDAsMSAyMywxNy41QzIzLDE4LjMyIDIyLjc1LDE5LjA4IDIyLjMzLDE5LjcxTDIxLjI0LDE4LjYyQzIxLjQxLDE4LjI4IDIxLjUsMTcuOSAyMS41LDE3LjVBMi41LDIuNSAwIDAsMCAxOSwxNVYxNi41TDE2Ljc1LDE0LjI1TDE2LjcyLDE0LjIyQzE2Ljc4LDE0LjE3IDE2Ljg1LDE0LjEzIDE5LDEyTTE5LDIzVjIxLjVBNCw0IDAgMCwxIDE1LDE3LjVDMTUsMTYuNjggMTUuMjUsMTUuOTIgMTUuNjcsMTUuMjlMMTYuNzYsMTYuMzhDMTYuNTksMTYuNzIgMTYuNSwxNy4xIDE2LjUsMTcuNUEyLjUsMi41IDAgMCwwIDE5LDIwVjE4LjVMMjEuMjUsMjAuNzVMMjEuMjgsMjAuNzhDMjEuMjIsMjAuODMgMjEuMTUsMjAuODcgMTksMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9sZGVyVGFibGUgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhDMjIgNi44OSAyMS4xIDYgMjAgNkgxMkwxMCA0SDRNMTIgOUgxNVYxMUgxMlY5TTE2IDlIMTlWMTFIMTZWOU0xMiAxMkgxNVYxNEgxMlYxMk0xNiAxMkgxOVYxNEgxNlYxMk0xMiAxNUgxNVYxN0gxMlYxNU0xNiAxNUgxOVYxN0gxNlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJUYWJsZU91dGxpbmUgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhDMjIgNi44OSAyMS4xIDYgMjAgNkgxMkwxMCA0SDRNNCA4SDIwVjE4SDRWOE0xMiA5VjExSDE1VjlIMTJNMTYgOVYxMUgxOVY5SDE2TTEyIDEyVjE0SDE1VjEySDEyTTE2IDEyVjE0SDE5VjEySDE2TTEyIDE1VjE3SDE1VjE1SDEyTTE2IDE1VjE3SDE5VjE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclRleHQgPSBcIk0yMCw2SDEyTDEwLDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QTIsMiAwIDAsMCAyMCw2TTE1LDE2SDZWMTRIMTVWMTZNMTgsMTJINlYxMEgxOFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJUZXh0T3V0bGluZSA9IFwiTTIwLDE4SDRWOEgyME0yMCw2SDEyTDEwLDRINEEyLDIgMCAwLDAgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY4QTIsMiAwIDAsMCAyMCw2TTE1LDE2SDZWMTRIMTVWMTZNMTgsMTJINlYxMEgxOFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJVcGxvYWQgPSBcIk0yMCw2QTIsMiAwIDAsMSAyMiw4VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgxMEwxMiw2SDIwTTEwLjc1LDEzSDE0VjE3SDE2VjEzSDE5LjI1TDE1LDguNzVcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJVcGxvYWRPdXRsaW5lID0gXCJNMjAgMThINFY4SDIwTTIwIDZIMTJMMTAgNEg0QTIgMiAwIDAgMCAyIDZWMThBMiAyIDAgMCAwIDQgMjBIMjBBMiAyIDAgMCAwIDIyIDE4VjhBMiAyIDAgMCAwIDIwIDZNMTYgMTdIMTRWMTNIMTFMMTUgOUwxOSAxM0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb2xkZXJaaXAgPSBcIk0yMCA2SDEyTDEwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFY4QzIyIDYuOSAyMS4xIDYgMjAgNk0xOCAxMkgxNlYxNEgxOFYxNkgxNlYxOEgxNFYxNkgxNlYxNEgxNFYxMkgxNlYxMEgxNFY4SDE2VjEwSDE4VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvbGRlclppcE91dGxpbmUgPSBcIk0yMCA2SDEyTDEwIDRINEMyLjkgNCAyIDQuOSAyIDZWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFY4QzIyIDYuOSAyMS4xIDYgMjAgNk0yMCAxOEgxNlYxNkgxNFYxOEg0VjhIMTRWMTBIMTZWOEgyMFYxOE0xNiAxMlYxMEgxOFYxMkgxNk0xNCAxMkgxNlYxNEgxNFYxMk0xOCAxNkgxNlYxNEgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb250QXdlc29tZSA9IFwiTTE5Ljc2IDJINC4yNEMzIDIgMiAzIDIgNC4yNFYxOS43NkMyIDIxIDMgMjIgNC4yNCAyMkgxOS43NkMyMSAyMiAyMiAyMSAyMiAxOS43NlY0LjI0QzIyIDMgMjEgMiAxOS43NiAyTTE3LjczIDE0LjY5QzE3LjczIDE0Ljg4IDE3LjU3IDE0Ljk2IDE3LjM4IDE1LjA0QzE2LjY0IDE1LjM2IDE1Ljg0IDE1LjY1IDE1IDE1LjY1QzEzLjc4IDE1LjY1IDEzLjIyIDE0LjkxIDExLjc4IDE0LjkxQzEwLjc0IDE0LjkxIDkuNjUgMTUuMjggOC43NyAxNS42OEM4LjcxIDE1LjcxIDguNjYgMTUuNzEgOC42MSAxNS43M1YxNy43NkM4LjYxIDE3Ljg0IDguNjEgMTcuOTIgOC41OCAxNy45N1YxOC4wM0M4LjQ3IDE4LjQgOC4xMyAxOC42NyA3LjczIDE4LjY3QzcuMjIgMTguNjcgNi44MiAxOC4yNiA2LjgyIDE3Ljc2VjhDNi40NyA3LjczIDYuMjQgNy4zMSA2LjI0IDYuODNDNi4yNCA2IDYuOSA1LjMzIDcuNzMgNS4zM0M4LjU2IDUuMzMgOS4yMyA2IDkuMjMgNi44M0M5LjIzIDcuMzEgOSA3LjczIDguNjQgOFY4LjgzQzguNzIgOC44IDguOCA4Ljc3IDguODggOC43MkM5LjcxIDguMzcgMTAuNyA4LjA4IDExLjYzIDguMDhDMTIuNjQgOC4wOCAxMy40NCA4LjM1IDE0LjM1IDguNjlDMTQuNTQgOC43NyAxNC43MiA4LjggMTQuOTMgOC44QzE1Ljk1IDguOCAxNy4wNyA4LjA4IDE3LjM0IDguMDhDMTcuNTUgOC4wOCAxNy43NCA4LjI0IDE3Ljc0IDguNDNWMTQuNjlIMTcuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZCA9IFwiTTE1LjUsMjFMMTQsOEgxNi4yM0wxNS4xLDMuNDZMMTYuODQsM0wxOC4wOSw4SDIyTDIwLjUsMjFIMTUuNU01LDExSDEwQTMsMyAwIDAsMSAxMywxNEgyQTMsMyAwIDAsMSA1LDExTTEzLDE4QTMsMyAwIDAsMSAxMCwyMUg1QTMsMyAwIDAsMSAyLDE4SDEzTTMsMTVIOEw5LjUsMTYuNUwxMSwxNUgxMkExLDEgMCAwLDEgMTMsMTZBMSwxIDAgMCwxIDEyLDE3SDNBMSwxIDAgMCwxIDIsMTZBMSwxIDAgMCwxIDMsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZEFwcGxlID0gXCJNMjAsMTBDMjIsMTMgMTcsMjIgMTUsMjJDMTMsMjIgMTMsMjEgMTIsMjFDMTEsMjEgMTEsMjIgOSwyMkM3LDIyIDIsMTMgNCwxMEM2LDcgOSw3IDExLDhWNUM1LjM4LDguMDcgNC4xMSwzLjc4IDQuMTEsMy43OEM0LjExLDMuNzggNi43NywwLjE5IDExLDVWM0gxM1Y4QzE1LDcgMTgsNyAyMCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb29kQXBwbGVPdXRsaW5lID0gXCJNMjAsMTBDMTguNTgsNy41NyAxNS41LDYuNjkgMTMsOFYzSDExVjhDOC41LDYuNjkgNS40Miw3LjU3IDQsMTBDMiwxMyA3LDIyIDksMjJDMTEsMjIgMTEsMjEgMTIsMjFDMTMsMjEgMTMsMjIgMTUsMjJDMTcsMjIgMjIsMTMgMjAsMTBNMTguMjUsMTMuMzhDMTcuNjMsMTUuODUgMTYuNDEsMTguMTIgMTQuNywyMEMxNC41LDIwIDE0LjI3LDE5LjkgMTQuMSwxOS43NUMxMi44NywxOC43NiAxMS4xMywxOC43NiA5LjksMTkuNzVDOS43MywxOS45IDkuNSwyMCA5LjMsMjBDNy41OSwxOC4xMyA2LjM2LDE1Ljg1IDUuNzUsMTMuMzlDNS41LDEyLjY2IDUuNDUsMTEuODcgNS42NiwxMS4xMkM2LjI0LDEwLjA5IDcuMzIsOS40MyA4LjUsOS40QzkuMDYsOS40MSA5LjYxLDkuNTQgMTAuMTEsOS43OUwxMSwxMC4yNEgxM0wxMy44OSw5Ljc5QzE0LjM5LDkuNTQgMTQuOTQsOS40MSAxNS41LDkuNEMxNi42OCw5LjQzIDE3Ljc2LDEwLjA4IDE4LjM0LDExLjExQzE4LjU1LDExLjg2IDE4LjUsMTIuNjUgMTguMjUsMTMuMzhNMTEsNUM1LjM4LDguMDcgNC4xMSwzLjc4IDQuMTEsMy43OEM0LjExLDMuNzggNi43NywwLjE5IDExLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZENyb2lzc2FudCA9IFwiTTIyLDE5TDE5LDE3TDIyLDE1VjE5TTE1LDE1TDE5LDlMMjIsMTNMMTgsMTZMMTUsMTVNNSwxN0wyLDE5VjE1TDUsMTdNOSwxNUw2LDE2TDIsMTNMNSw5TDksMTVNMTQsNkwxOCw4TDEzLDE1SDExTDYsOEwxMCw2SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2REcnVtc3RpY2sgPSBcIk0yMC4xNiAxMi43M0MyMi45MyA5Ljk2IDIyLjU3IDUuMjYgMTkuMDkgM0MxNy4wOCAxLjY3IDE0LjM5IDEuNjYgMTIuMzYgMi45N0MxMC42IDQuMSA5LjYzIDUuODYgOS40NiA3LjY4QzkuMzMgOSA4LjgzIDEwLjIzIDcuOTEgMTEuMTVMNy44OCAxMS4xOEM2LjcyIDEyLjM0IDYuNzIgMTQuMTEgNy44MSAxNS4xOUw4LjggMTYuMThDOS44OSAxNy4yNyAxMS42NiAxNy4yNyAxMi43NSAxNi4xOEMxMy43MiAxNS4yMSAxNSAxNC42OCAxNi4zOSAxNC41M0MxNy43NiAxNC4zOCAxOS4xIDEzLjc4IDIwLjE2IDEyLjczTTYuMjYgMTkuODZDNi41MyAyMC40MiA2LjQ0IDIxLjEgNS45NyAyMS41NkM1LjM5IDIyLjE1IDQuNDQgMjIuMTUgMy44NSAyMS41NkMzLjU4IDIxLjI5IDMuNDQgMjAuOTQgMy40MiAyMC41OEMzLjA2IDIwLjU2IDIuNzEgMjAuNDIgMi40NCAyMC4xNUMxLjg1IDE5LjU2IDEuODUgMTguNjEgMi40NCAxOC4wM0MyLjkgMTcuNTcgMy41OSAxNy40NyA0LjE0IDE3Ljc0TDYuNjIgMTUuMzFDNi43NiAxNS41IDYuOTIgMTUuNzIgNy4xIDE1LjlMOC4wOSAxNi44OUM4LjMgMTcuMDkgOC41IDE3LjI2IDguNzYgMTcuNDFMNi4yNiAxOS44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb29kRHJ1bXN0aWNrT2ZmID0gXCJNMjAuOCAyMi43TDEzLjYgMTUuNUMxMy4zIDE1LjcgMTMgMTUuOSAxMi43IDE2LjJDMTEuNiAxNy4zIDkuOCAxNy4zIDguNyAxNi4yTDcuNyAxNS4yQzYuNiAxNC4xIDYuNiAxMi4zIDcuOCAxMS4yQzggMTEgOC4yIDEwLjcgOC40IDEwLjRMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TTguMSAxNi45TDcuMSAxNS45QzYuOSAxNS43IDYuOCAxNS41IDYuNiAxNS4zTDQuMSAxNy43QzMuNSAxNy40IDIuOSAxNy41IDIuNCAxOEMxLjggMTguNiAxLjggMTkuNSAyLjQgMjAuMUMyLjcgMjAuNCAzIDIwLjUgMy40IDIwLjVDMy40IDIwLjkgMy42IDIxLjIgMy44IDIxLjVDNC40IDIyLjEgNS4zIDIyLjEgNS45IDIxLjVDNi40IDIxIDYuNSAyMC40IDYuMiAxOS44TDguNyAxNy40QzguNSAxNy4zIDguMyAxNy4xIDguMSAxNi45TTIwLjIgMTIuN0MyMyA5LjkgMjIuNiA1LjIgMTkuMSAzQzE3LjEgMS43IDE0LjQgMS43IDEyLjQgM0MxMSAzLjkgMTAuMSA1LjEgOS43IDYuNUwxNy41IDE0LjNDMTguNSAxNCAxOS40IDEzLjUgMjAuMiAxMi43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2REcnVtc3RpY2tPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMOC41IDEwLjRDOC4zIDEwLjcgOC4xIDEwLjkgNy45IDExLjJDNi43IDEyLjQgNi43IDE0LjEgNy44IDE1LjJMOC44IDE2LjJDOS4zIDE2LjcgMTAuMSAxNyAxMC44IDE3QzExLjUgMTcgMTIuMiAxNi43IDEyLjggMTYuMkMxMy4xIDE1LjkgMTMuNCAxNS43IDEzLjcgMTUuNUwyMC45IDIyLjdMMjIuMSAyMS41TTExLjMgMTQuOEMxMS4xIDE1IDEwLjkgMTUgMTAuOCAxNVMxMC40IDE1IDEwLjIgMTQuOEw5LjIgMTMuOEM5IDEzLjYgOSAxMy40IDkgMTMuMkM5IDEzIDkuMSAxMi43IDkuMyAxMi41QzkuNSAxMi4zIDkuNyAxMiA5LjkgMTEuOEwxMi4xIDE0QzExLjkgMTQuMyAxMS42IDE0LjUgMTEuMyAxNC44TTExLjQgOC4yTDkuNyA2LjVDMTAuMSA1LjEgMTEgMy45IDEyLjQgM0MxMy40IDIuNCAxNC42IDIgMTUuNyAyQzE2LjkgMiAxOC4xIDIuMyAxOS4xIDNDMjIuNiA1LjMgMjIuOSAxMCAyMC4yIDEyLjdDMTkuNCAxMy41IDE4LjUgMTQgMTcuNSAxNC4zTDE1LjggMTIuNkMxNS45IDEyLjYgMTYgMTIuNSAxNi4yIDEyLjVDMTcuMiAxMi40IDE4LjEgMTIgMTguOCAxMS4zQzE5LjcgMTAuNCAyMC4yIDkuMSAyMCA3LjhDMTkuOSA2LjUgMTkuMiA1LjQgMTggNC42QzE3LjMgNC4yIDE2LjUgNCAxNS43IDRDMTQuOSA0IDE0LjEgNC4yIDEzLjQgNC43QzEyLjIgNS40IDExLjUgNi42IDExLjQgNy45VjguMk04LjggMTcuNEw2LjMgMTkuOEM2LjYgMjAuNCA2LjUgMjEgNiAyMS41QzUuNCAyMi4xIDQuNSAyMi4xIDMuOSAyMS41QzMuNiAyMS4yIDMuNSAyMC45IDMuNSAyMC41QzMuMSAyMC41IDIuOCAyMC4zIDIuNSAyMC4xQzEuOSAxOS41IDEuOSAxOC42IDIuNSAxOEMzIDE3LjUgMy42IDE3LjQgNC4yIDE3LjdMNi43IDE1LjNDNi44IDE1LjUgNyAxNS43IDcuMiAxNS45TDguMiAxNi45QzguMyAxNy4xIDguNSAxNy4zIDguOCAxNy40XCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZERydW1zdGlja091dGxpbmUgPSBcIk0xNS43MSA0QzE2LjU0IDQgMTcuMzMgNC4yMiAxOCA0LjY2QzE5LjE0IDUuNCAxOS44NCA2LjUzIDIwIDcuODRDMjAuMTEgOS4xMyAxOS42NiAxMC40IDE4Ljc1IDExLjMxQzE4LjA1IDEyIDE3LjE2IDEyLjQ0IDE2LjE4IDEyLjU0QzE0LjI3IDEyLjc0IDEyLjU5IDEzLjUgMTEuMzQgMTQuNzdDMTEuMTMgMTQuOTcgMTAuOSAxNSAxMC43NyAxNUMxMC42NSAxNSAxMC40MiAxNC45NyAxMC4yMSAxNC43N0w5LjIyIDEzLjc4QzkuMDQgMTMuNiA5IDEzLjM5IDkgMTMuMjVDOSAxMyA5LjExIDEyLjc4IDkuMzIgMTIuNTdDMTAuNTMgMTEuMzUgMTEuMjcgOS43MyAxMS40NSA3Ljg3QzExLjU4IDYuNTQgMTIuMjkgNS40IDEzLjQ1IDQuNjVDMTQuMTEgNC4yMiAxNC44OSA0IDE1LjcxIDRNMTUuNzEgMkMxNC41NCAyIDEzLjM3IDIuMzIgMTIuMzYgMi45N0MxMC42IDQuMSA5LjYzIDUuODYgOS40NiA3LjY4QzkuMzMgOSA4LjgzIDEwLjIzIDcuOTEgMTEuMTVMNy44OCAxMS4xOEM2LjcyIDEyLjM0IDYuNzIgMTQuMTEgNy44MSAxNS4xOUw4LjggMTYuMThDOS4zNSAxNi43MyAxMC4wNiAxNyAxMC43NyAxN1MxMi4yIDE2LjczIDEyLjc1IDE2LjE4QzEzLjcyIDE1LjIxIDE1IDE0LjY4IDE2LjM5IDE0LjUzQzE3Ljc2IDE0LjM4IDE5LjEgMTMuNzggMjAuMTYgMTIuNzNDMjIuOTMgOS45NiAyMi41NyA1LjI2IDE5LjA5IDNDMTguMDggMi4zMyAxNi45IDIgMTUuNzEgMk02LjI2IDE5Ljg2QzYuNTMgMjAuNDIgNi40NCAyMS4xIDUuOTcgMjEuNTZDNS4zOSAyMi4xNSA0LjQ0IDIyLjE1IDMuODUgMjEuNTZDMy41OCAyMS4yOSAzLjQ0IDIwLjk0IDMuNDIgMjAuNThDMy4wNiAyMC41NiAyLjcxIDIwLjQyIDIuNDQgMjAuMTVDMS44NSAxOS41NiAxLjg1IDE4LjYxIDIuNDQgMTguMDNDMi45IDE3LjU3IDMuNTkgMTcuNDcgNC4xNCAxNy43NEw2LjYyIDE1LjMxQzYuNzYgMTUuNSA2LjkyIDE1LjcyIDcuMSAxNS45TDguMDkgMTYuODlDOC4zIDE3LjA5IDguNSAxNy4yNiA4Ljc2IDE3LjQxTDYuMjYgMTkuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZEZvcmtEcmluayA9IFwiTTMsM0ExLDEgMCAwLDAgMiw0VjhMMiw5LjVDMiwxMS4xOSAzLjAzLDEyLjYzIDQuNSwxMy4yMlYxOS41QTEuNSwxLjUgMCAwLDAgNiwyMUExLjUsMS41IDAgMCwwIDcuNSwxOS41VjEzLjIyQzguOTcsMTIuNjMgMTAsMTEuMTkgMTAsOS41VjhMMTAsNEExLDEgMCAwLDAgOSwzQTEsMSAwIDAsMCA4LDRWOEEwLjUsMC41IDAgMCwxIDcuNSw4LjVBMC41LDAuNSAwIDAsMSA3LDhWNEExLDEgMCAwLDAgNiwzQTEsMSAwIDAsMCA1LDRWOEEwLjUsMC41IDAgMCwxIDQuNSw4LjVBMC41LDAuNSAwIDAsMSA0LDhWNEExLDEgMCAwLDAgMywzTTE5Ljg4LDNDMTkuNzUsMyAxOS42MiwzLjA5IDE5LjUsMy4xNkwxNiw1LjI1VjlIMTJWMTFIMTNMMTQsMjFIMjBMMjEsMTFIMjJWOUgxOFY2LjM0TDIwLjUsNC44NEMyMSw0LjU2IDIxLjEzLDQgMjAuODQsMy41QzIwLjYzLDMuMTQgMjAuMjYsMi45NSAxOS44OCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RIYWxhbCA9IFwiTTcgNVYxNUM3IDE2LjExIDYuMTEgMTcgNSAxN0g0QzMuNDUgMTcgMyAxNi41NSAzIDE2VjEzSDFWMTZDMSAxNy42NiAyLjM0IDE5IDQgMTlINUM3LjIxIDE5IDkgMTcuMjEgOSAxNVY1TTIzIDEzLjM4TDIxLjc3IDEyLjE1QzIxLjAzIDExLjQxIDIwLjA0IDExIDE5IDExSDE3VjEzSDE5QzE5LjUgMTMgMjAgMTMuMiAyMC4zNSAxMy41NkwyMC43IDEzLjkxTDE5LjUgMTQuNkMxOS4wNCAxNC44NiAxOC41MyAxNSAxOCAxNUgxN0MxNi40NCAxNSAxNiAxNC41NiAxNiAxNFY2SDE0VjkuODFMMTMuMzggOS4xMkMxMi43IDguMzcgMTEuNiA4IDEwLjU5IDhIMTBWMTBIMTAuNTlDMTEuMjMgMTAgMTEuODQgMTAuMjUgMTIuMjkgMTAuNzFMMTQgMTIuNDFWMTRDMTQgMTUuMTIgMTMuMTIgMTYgMTIgMTZIMTBWMThIMTJDMTMuMzcgMTggMTQuNSAxNy4zIDE1LjE3IDE2LjI0QzE1LjYzIDE2LjcxIDE2LjI1IDE3IDE3IDE3SDE4QzE4Ljg4IDE3IDE5Ljc0IDE2Ljc3IDIwLjUgMTYuMzNMMjMgMTQuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZEtvc2hlciA9IFwiTTEgN1Y5SDNDMy41NyA5IDQgOS40MyA0IDEwVjE3SDZWMTBDNiA4LjM2IDQuNjQgNyAzIDdIMU03IDdWMTRDNyAxNS42NSA4LjM2IDE3IDEwIDE3SDE0QzE1LjY1IDE3IDE3IDE1LjY1IDE3IDE0VjdIMTVWMTRDMTUgMTQuNTcgMTQuNTcgMTUgMTQgMTVIMTBDOS40MyAxNSA5IDE0LjU3IDkgMTRWMTNIMTBDMTEuNjUgMTMgMTMgMTEuNjUgMTMgMTBWN0gxMVYxMEMxMSAxMC41NyAxMC41NyAxMSAxMCAxMUg5VjdIN00xOCA3VjlIMjBDMjAuNTcgOSAyMSA5LjQzIDIxIDEwVjE0QzIxIDE0LjU3IDIwLjU3IDE1IDIwIDE1SDE4VjE3SDIwQzIxLjY1IDE3IDIzIDE1LjY1IDIzIDE0VjEwQzIzIDguMzYgMjEuNjUgNyAyMCA3SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIxLDIxLjcyTDE5LjczLDIzTDE3LjczLDIxSDE1LjVMMTUuMjEsMTguNUwxMi45NywxNi4yNEMxMi44NiwxNi42OCAxMi40NywxNyAxMiwxN0gzQTEsMSAwIDAsMSAyLDE2QTEsMSAwIDAsMSAzLDE1SDhMOS41LDE2LjVMMTEsMTVIMTEuNzNMMTAuNzMsMTRIMkEzLDMgMCAwLDEgNSwxMUg3LjczTDIsNS4yN00xNCw4SDE2LjIzTDE1LjEsMy40NkwxNi44NCwzTDE4LjA5LDhIMjJMMjAuNzQsMTguOTJMMTQuNTQsMTIuNzJMMTQsOE0xMywxOEEzLDMgMCAwLDEgMTAsMjFINUEzLDMgMCAwLDEgMiwxOEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb29kU3RlYWsgPSBcIk0xMS45IDJDOCAyIDQuOSA1LjQgNSA5LjNDNS4xIDExLjkgNi42IDE0LjEgOC43IDE1LjJDMTAuMSAxNS45IDExIDE3LjMgMTEgMTguOFYxOUMxMSAyMC43IDEyLjMgMjIgMTQgMjJDMTggMjIgMTkgMTcgMTkgOUMxOSA5IDE5IDIgMTEuOSAyTTE0IDIwQzEzLjQgMjAgMTMgMTkuNiAxMyAxOVYxOC44QzEzIDE2LjYgMTEuNyAxNC41IDkuNyAxMy40QzguMSAxMi42IDcuMSAxMSA3IDkuMkM3IDcuOSA3LjUgNi41IDguNCA1LjVDOS4zIDQuNSAxMC42IDQgMTEuOCA0QzE2LjcgNCAxNyA4LjIgMTcgOUMxNyAxOC45IDE1LjMgMjAgMTQgMjBNMTUuOCA3LjZMOC4zIDEwLjNDOC4xIDEwIDggOS42IDggOS4xQzggOC40IDguMiA3LjggOC41IDcuMUwxMy43IDUuMkMxNC45IDUuOCAxNS41IDYuNyAxNS44IDcuNk0xMi45IDE1LjFMMTUuNyAxNC4xQzE1LjYgMTUuNiAxNS4zIDE2LjcgMTUuMSAxNy40TDEzLjggMTcuOUMxMy44IDE2LjkgMTMuNSAxNiAxMi45IDE1LjFNMTYgOS4yQzE2IDEwLjQgMTYgMTEuNSAxNS45IDEyLjRMMTEuOSAxMy45QzExLjQgMTMuNCAxMC44IDEyLjkgMTAuMSAxMi42QzkuNyAxMi40IDkuMyAxMi4xIDkgMTEuOEwxNiA5LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZFN0ZWFrT2ZmID0gXCJNMi4zOSAxLjczTDEuMTEgM0w1LjI3IDcuMTZDNS4wOCA3LjgzIDUgOC41MyA1IDkuMjZDNS4xIDExLjgzIDYuNTkgMTQuMDUgOC43NCAxNS4xOUMxMC4xIDE1LjkgMTEgMTcuMjUgMTEgMTguNzlWMTlDMTEgMjAuNjYgMTIuMzQgMjIgMTQgMjJDMTUuNjggMjIgMTYuODMgMjEuMTEgMTcuNiAxOS41TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M00xNCAyMEMxMy40NSAyMCAxMyAxOS41NSAxMyAxOVYxOC43OUMxMyAxNi41NiAxMS43MiAxNC41IDkuNjcgMTMuNDJDOC4wOSAxMi41OCA3LjA3IDEwLjk2IDcgOS4xOEM3IDkuMDkgNyA5IDcgOC45TDguMTYgMTAuMDVDOC4xOSAxMC4xNSA4LjIxIDEwLjI1IDguMjQgMTAuMzVMOC40IDEwLjI5TDkuNjIgMTEuNUw5LjA4IDExLjcxQzkuMzggMTIuMDQgOS43MyAxMi4zMiAxMC4xNCAxMi41M0MxMC44MSAxMi44OSAxMS40IDEzLjM0IDExLjkxIDEzLjg1TDExLjk1IDEzLjg0TDEzLjE3IDE1LjA2TDEyLjk1IDE1LjE0QzEzLjQ2IDE1Ljk2IDEzLjggMTYuODkgMTMuOTMgMTcuODVMMTUuMiAxNy4zOUMxNS4yMiAxNy4zMiAxNS4yNSAxNy4yNCAxNS4yNyAxNy4xNkwxNi4wNyAxNy45NkMxNS40NyAxOS42OCAxNC42OCAyMCAxNCAyME0xNS43OSA3LjZMMTIuMTQgOC45NEw5Ljg4IDYuNjhMMTMuNjkgNS4zQzE0Ljk0IDUuNzcgMTUuNTMgNi43MiAxNS43OSA3LjZNOC41OSA1LjM5TDcuMTcgMy45N0M4LjQxIDIuNzcgMTAuMDcgMiAxMS44OCAySDExLjg4QzE5IDIgMTkgOSAxOSA5QzE5IDExLjQ2IDE4LjkgMTMuNjMgMTguNjYgMTUuNDZMMTYuODQgMTMuNjRDMTYuOTQgMTIuMzYgMTcgMTAuODMgMTcgOUMxNyA4LjE4IDE2LjY5IDQgMTEuODggNEgxMS44OEMxMC42NyA0IDkuNSA0LjUgOC41OSA1LjM5TTE1LjY4IDEyLjVMMTMuMzYgMTAuMTVMMTYgOS4xOUMxNiAxMC40MSAxNS45NyAxMS40NiAxNS45MiAxMi40TDE1LjY4IDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vZFR1cmtleSA9IFwiTTUuNDQgNy45Nkw1Ljk2IDcuNDNDNi41NCA2Ljg1IDcuNSA2Ljg1IDguMSA3LjQ3TDguMTIgNy41QzguNjEgOCA5LjI2IDguMjQgOS45NyA4LjMxQzEwLjk0IDguNCAxMS44OCA4LjkyIDEyLjUgOS44NkMxMy4xOCAxMC45NCAxMy4xNyAxMi4zOCAxMi40NiAxMy40NUMxMS4yNiAxNS4zIDguNzUgMTUuNSA3LjI4IDE0QzYuNzIgMTMuNDUgNi40IDEyLjc0IDYuMzIgMTJDNi4yNCAxMS4yNyA1Ljk1IDEwLjU4IDUuNDQgMTAuMDdDNC44NiA5LjUgNC44NiA4LjU0IDUuNDQgNy45Nk05LjY0IDE2QzguNDcgMTYgNy4zOCAxNS41NSA2LjU3IDE0LjcyQzUuODcgMTQgNS40MyAxMy4xIDUuMzIgMTIuMTJDNS4yOSAxMS44MiA1LjIgMTEuNDMgNC45NiAxMS4wN0M0LjM2IDExLjkgNCAxMi45IDQgMTRDNCAxNS42NCA0LjggMTcuMDkgNi4wMyAxOEgxOVYxN0MxOSAxMy40IDE2LjYxIDEwLjM1IDEzLjM0IDkuMzVDMTQuMjMgMTAuNzUgMTQuMjEgMTIuNjIgMTMuMyAxNEMxMi41IDE1LjI1IDExLjEyIDE2IDkuNjQgMTZNMTQuNzggNy41NkgxNi4wNUMxNi45MiA3LjU2IDE3LjY4IDguMTcgMTcuNjggOS4yNlYxMEgxOC45M1Y5QzE4LjkzIDcuNSAxNy42IDYuMzYgMTYuMDUgNi4zNkgxNC43OEMxMy45NSA2LjM2IDEzLjI0IDUuNTQgMTMuMjQgNC43UzEzLjk1IDMuMjQgMTQuNzggMy4yNFYyQzEzLjI0IDIgMTIgMy4yNCAxMiA0Ljc4UzEzLjI0IDcuNTYgMTQuNzggNy41Nk00LjUgNy41NUM0LjU2IDcuNDUgNC42NCA3LjM1IDQuNzMgNy4yNUw1LjI1IDYuNzNDNS4zNCA2LjY0IDUuNDQgNi41NyA1LjU0IDYuNUw0LjEzIDUuMDdDNC4yNyA0LjggNC4yMiA0LjQ1IDQgNC4yMkMzLjcgMy45MyAzLjIyIDMuOTMgMi45MyA0LjIyQzIuNzkgNC4zNiAyLjcyIDQuNTMgMi43MSA0LjcxQzIuNTMgNC43MiAyLjM2IDQuNzkgMi4yMiA0LjkzQzEuOTMgNS4yMiAxLjkzIDUuNyAyLjIyIDZDMi40NSA2LjIyIDIuNzkgNi4yNyAzLjA3IDYuMTNMNC41IDcuNTVNMTguMzkgNC4zOUMxOC45IDMuODggMTkuMjIgMy4xOSAxOS4yMiAyLjQySDE3Ljk3QzE3Ljk3IDMuMjUgMTcuMjcgMy45NSAxNi40NCAzLjk1VjUuMTlDMTguMyA1LjE5IDE5Ljc2IDYuNzEgMTkuNzYgOC41N1YxMUgyMVY4LjU3QzIxIDYuNzIgMTkuOTQgNS4xMyAxOC4zOSA0LjM5TTUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlIM0MzIDIwLjExIDMuOSAyMSA1IDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RWYXJpYW50ID0gXCJNMjIsMThBNCw0IDAgMCwxIDE4LDIySDE1QTQsNCAwIDAsMSAxMSwxOFYxNkgxNy43OUwyMC41NSwxMS4yM0wyMi4xMSwxMi4xM0wxOS44NywxNkgyMlYxOE05LDIySDJDMiwxOSAyLDE2IDIuMzMsMTIuODNDMi42LDEwLjMgMy4wOCw3LjY2IDMuNiw1SDNWM0g0TDcsM0g4VjVINy40QzcuOTIsNy42NiA4LjQsMTAuMyA4LjY3LDEyLjgzQzksMTYgOSwxOSA5LDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb2RWYXJpYW50T2ZmID0gXCJNMi4yOCAzTDEgNC4yN0wzLjMxIDYuNThDMi45MSA4LjcgMi41NSAxMC44IDIuMzMgMTIuODNDMiAxNiAyIDE5IDIgMjJIOUM5IDE5IDkgMTYgOC42NyAxMi44M0M4LjYzIDEyLjUgOC41OCAxMi4xNSA4LjU0IDExLjgxTDEyLjczIDE2SDExVjE4QzExIDIwLjIxIDEyLjc5IDIyIDE1IDIySDE4QzE4LjIzIDIyIDE4LjQ1IDIyIDE4LjY3IDIxLjk0TDE5LjczIDIzTDIxIDIxLjcyTTQuODIgM0w3LjUzIDUuNzFDNy41IDUuNDcgNy40NSA1LjI0IDcuNCA1SDhWM0g3TTIwLjU1IDExLjIzTDE3LjggMTZMMjEuNTkgMTkuNzZDMjEuODYgMTkuMjEgMjIgMTguNjEgMjIgMThWMTZIMTkuODdMMjIuMTEgMTIuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9vdFByaW50ID0gXCJNMTYgMkEyIDIgMCAxIDEgMTQgNEEyIDIgMCAwIDEgMTYgMk0xMi4wNCAzQTEuNSAxLjUgMCAxIDEgMTAuNTQgNC41QTEuNSAxLjUgMCAwIDEgMTIuMDQgM005LjA5IDQuNUExIDEgMCAxIDEgOC4wOSA1LjVBMSAxIDAgMCAxIDkuMDkgNC41TTcuMDQgNkExIDEgMCAxIDEgNi4wNCA3QTEgMSAwIDAgMSA3LjA0IDZNMTQuNTMgMTJBMi41IDIuNSAwIDAgMCAxNyA5LjI0QTIuNiAyLjYgMCAwIDAgMTQuMzkgN0gxMS45MUE2IDYgMCAwIDAgNi4xMiAxMS40QTIgMiAwIDAgMCA2LjIzIDEyLjhBNi44IDYuOCAwIDAgMSA2LjkxIDE1Ljc2QTYuODkgNi44OSAwIDAgMSA2LjIyIDE4LjU1QTEuOTIgMS45MiAwIDAgMCA2LjMgMjAuMzFBMy42MiAzLjYyIDAgMCAwIDEwLjE5IDIxLjkxQTMuNSAzLjUgMCAwIDAgMTIuMzYgMTYuNjNBMi44MiAyLjgyIDAgMCAxIDExLjkxIDE1UzExLjY4IDEyIDE0LjUzIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb3RiYWxsID0gXCJNNy41LDcuNUM5LjE3LDUuODcgMTEuMjksNC42OSAxMy4zNyw0LjE4QzE1LjQ2LDMuNjcgMTcuNSwzLjgzIDE4LjYsNEMxOS43MSw0LjE1IDE5Ljg3LDQuMzEgMjAuMDMsNS40MUMyMC4xOCw2LjUgMjAuMzMsOC41NSAxOS44MiwxMC42M0MxOS4zMSwxMi43MSAxOC4xMywxNC44MyAxNi41LDE2LjVDMTQuODMsMTguMTMgMTIuNzEsMTkuMzEgMTAuNjMsMTkuODJDOC41NSwyMC4zMyA2LjUsMjAuMTggNS40MSwyMC4wM0M0LjMxLDE5Ljg3IDQuMTUsMTkuNzEgNCwxOC42QzMuODMsMTcuNSAzLjY3LDE1LjQ2IDQuMTgsMTMuMzdDNC42OSwxMS4yOSA1Ljg3LDkuMTcgNy41LDcuNU03LjMsMTUuNzlMOC4yMSwxNi43TDkuNDIsMTUuNUwxMC42MywxNi43TDExLjU0LDE1Ljc5TDEwLjM0LDE0LjU4TDEyLDEyLjkxTDEzLjIxLDE0LjEyTDE0LjEyLDEzLjIxTDEyLjkxLDEyTDE0LjU4LDEwLjM0TDE1Ljc5LDExLjU0TDE2LjcsMTAuNjNMMTUuNSw5LjQyTDE2LjcsOC4yMUwxNS43OSw3LjNMMTQuNTgsOC41TDEzLjM3LDcuM0wxMi40Niw4LjIxTDEzLjY2LDkuNDJMMTIsMTEuMDlMMTAuNzksOS44OEw5Ljg4LDEwLjc5TDExLjA5LDEyTDkuNDIsMTMuNjZMOC4yMSwxMi40Nkw3LjMsMTMuMzdMOC41LDE0LjU4TDcuMywxNS43OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb290YmFsbEF1c3RyYWxpYW4gPSBcIk03LjUsNy41QzkuMTcsNS44NyAxMS4yOSw0LjY5IDEzLjM3LDQuMThDMTgsMyAyMSw2IDE5LjgyLDEwLjYzQzE5LjMxLDEyLjcxIDE4LjEzLDE0LjgzIDE2LjUsMTYuNUMxNC44MywxOC4xMyAxMi43MSwxOS4zMSAxMC42MywxOS44MkM2LDIxIDMsMTggNC4xOCwxMy4zN0M0LjY5LDExLjI5IDUuODcsOS4xNyA3LjUsNy41TTEwLjYyLDExLjI2TDEwLjI2LDExLjYyTDEyLjM4LDEzLjc0TDEyLjc0LDEzLjM4TDEwLjYyLDExLjI2TTExLjYyLDEwLjI2TDExLjI2LDEwLjYyTDEzLjM4LDEyLjc0TDEzLjc0LDEyLjM4TDExLjYyLDEwLjI2TTkuNjIsMTIuMjZMOS4yNiwxMi42MkwxMS4zOCwxNC43NEwxMS43NCwxNC4zOEw5LjYyLDEyLjI2TTEyLjYzLDkuMjhMMTIuMjgsOS42M0wxNC40LDExLjc1TDE0Ljc1LDExLjRMMTIuNjMsOS4yOE04LjYzLDEzLjI4TDguMjgsMTMuNjNMMTAuNCwxNS43NUwxMC43NSwxNS40TDguNjMsMTMuMjhNMTMuNjMsOC4yOEwxMy4yOCw4LjYzTDE1LjQsMTAuNzVMMTUuNzUsMTAuNEwxMy42Myw4LjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvb3RiYWxsSGVsbWV0ID0gXCJNMTMuNSwxMkExLjUsMS41IDAgMCwwIDEyLDEzLjVBMS41LDEuNSAwIDAsMCAxMy41LDE1QTEuNSwxLjUgMCAwLDAgMTUsMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJNMTMuNSwzQzE4LjE5LDMgMjIsNi41OCAyMiwxMUMyMiwxMi42MiAyMiwxNCAyMS4wOSwxNkMxNywxNiAxNiwyMCAxMi41LDIwQzEwLjMyLDIwIDkuMjcsMTguMjggOS4wNSwxNkg5TDguMjQsMTZMNi45NiwyMC4zQzYuODEsMjAuNzkgNi4zMywyMS4wOCA1Ljg0LDIxSDNBMSwxIDAgMCwxIDIsMjBBMSwxIDAgMCwxIDMsMTlWMTZBMSwxIDAgMCwxIDIsMTVBMSwxIDAgMCwxIDMsMTRINi43NUw3LjIzLDEyLjM5QzYuNzIsMTIuMTQgNi4xMywxMiA1LjUsMTJINS4wN0w1LDExQzUsNi41OCA4LjgxLDMgMTMuNSwzTTUsMTZWMTlINS4yNkw2LjE1LDE2SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ya2xpZnQgPSBcIk02LDRWMTFINEMyLjg5LDExIDIsMTEuODkgMiwxM1YxN0EzLDMgMCAwLDAgNSwyMEEzLDMgMCAwLDAgOCwxN0gxMEEzLDMgMCAwLDAgMTMsMjBBMywzIDAgMCwwIDE2LDE3VjEzTDEyLDRINk0xNyw1VjE5SDIyVjE3LjVIMTguNVY1SDE3TTcuNSw1LjVIMTEuMkwxNC41LDEzSDcuNVY1LjVNNSwxNS41QTEuNSwxLjUgMCAwLDEgNi41LDE3QTEuNSwxLjUgMCAwLDEgNSwxOC41QTEuNSwxLjUgMCAwLDEgMy41LDE3QTEuNSwxLjUgMCAwLDEgNSwxNS41TTEzLDE1LjVBMS41LDEuNSAwIDAsMSAxNC41LDE3QTEuNSwxLjUgMCAwLDEgMTMsMTguNUExLjUsMS41IDAgMCwxIDExLjUsMTdBMS41LDEuNSAwIDAsMSAxMywxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1Ecm9wZG93biA9IFwiTTE3IDVIMjBMMTguNSA3TDE3IDVNMyAySDIxQzIyLjExIDIgMjMgMi45IDIzIDRWOEMyMyA5LjExIDIyLjExIDEwIDIxIDEwSDE2VjIwQzE2IDIxLjExIDE1LjExIDIyIDE0IDIySDNDMS45IDIyIDEgMjEuMTEgMSAyMFY0QzEgMi45IDEuOSAyIDMgMk0zIDRWOEgxNFY0SDNNMjEgOFY0SDE2VjhIMjFNMyAyMEgxNFYxMEgzVjIwTTUgMTJIMTJWMTRINVYxMk01IDE2SDEyVjE4SDVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybVNlbGVjdCA9IFwiTTE1IDVIMThMMTYuNSA3TDE1IDVNNSAySDE5QzIwLjExIDIgMjEgMi45IDIxIDRWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjRDMyAyLjkgMy45IDIgNSAyTTUgNFY4SDE5VjRINU01IDIwSDE5VjEwSDVWMjBNNyAxMkgxN1YxNEg3VjEyTTcgMTZIMTdWMThIN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtVGV4dGFyZWEgPSBcIk0xMyA5SDRWMjNIMlY3SDEzTTIzIDlWN0gxN1Y1QTEgMSAwIDAgMSAxOCA0SDIwVjJIMTcuNUMxNyAyIDE2IDIuNDUgMTYgM0MxNiAyLjQ1IDE1LjA1IDIgMTQuNSAySDEyVjRIMTRBMSAxIDAgMCAxIDE1IDVWMTlBMSAxIDAgMCAxIDE0IDIwSDEyVjIySDE0LjVDMTUuMDUgMjIgMTYgMjEuNTUgMTYgMjFDMTYgMjEuNTUgMTYuOTUgMjIgMTcuNSAyMkgyMFYyMEgxOEExIDEgMCAwIDEgMTcgMTlWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtVGV4dGJveCA9IFwiTTE3LDdIMjJWMTdIMTdWMTlBMSwxIDAgMCwwIDE4LDIwSDIwVjIySDE3LjVDMTYuOTUsMjIgMTYsMjEuNTUgMTYsMjFDMTYsMjEuNTUgMTUuMDUsMjIgMTQuNSwyMkgxMlYyMEgxNEExLDEgMCAwLDAgMTUsMTlWNUExLDEgMCAwLDAgMTQsNEgxMlYySDE0LjVDMTUuMDUsMiAxNiwyLjQ1IDE2LDNDMTYsMi40NSAxNi45NSwyIDE3LjUsMkgyMFY0SDE4QTEsMSAwIDAsMCAxNyw1VjdNMiw3SDEzVjlINFYxNUgxM1YxN0gyVjdNMjAsMTVWOUgxN1YxNUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtVGV4dGJveExvY2sgPSBcIk0yIDdINlY5SDRWMTVINlYxN0gyVjdNMTAgN0gyMlYxMkMyMS40MiAxMS41NiAyMC43NCAxMS4yNSAyMCAxMS4xVjlIMTBWMTVIMTQuMjVDMTMuNTYgMTUgMTMgMTUuNTYgMTMgMTYuMjVWMTdIMTBWMTlDMTAgMTkuNTUgMTAuNDUgMjAgMTEgMjBIMTNWMjJIMTAuNUM5Ljk1IDIyIDkgMjEuNTUgOSAyMUM5IDIxLjU1IDguMDUgMjIgNy41IDIySDVWMjBIN0M3LjU1IDIwIDggMTkuNTUgOCAxOVY1QzggNC40NSA3LjU1IDQgNyA0SDVWMkg3LjVDOC4wNSAyIDkgMi40NSA5IDNDOSAyLjQ1IDkuOTUgMiAxMC41IDJIMTNWNEgxMUMxMC40NSA0IDEwIDQuNDUgMTAgNVY3TTIxLjggMTdDMjIuNCAxNyAyMyAxNy42IDIzIDE4LjNWMjEuOEMyMyAyMi40IDIyLjQgMjMgMjEuNyAyM0gxNi4yQzE1LjYgMjMgMTUgMjIuNCAxNSAyMS43VjE4LjJDMTUgMTcuNiAxNS42IDE3IDE2LjIgMTdWMTUuNUMxNi4yIDE0LjEgMTcuNiAxMyAxOSAxM0MyMC40IDEzIDIxLjggMTQuMSAyMS44IDE1LjVWMTdNMjAuNSAxN1YxNS41QzIwLjUgMTQuNyAxOS44IDE0LjIgMTkgMTQuMkMxOC4yIDE0LjIgMTcuNSAxNC43IDE3LjUgMTUuNVYxN0gyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1UZXh0Ym94UGFzc3dvcmQgPSBcIk0xNyw3SDIyVjE3SDE3VjE5QTEsMSAwIDAsMCAxOCwyMEgyMFYyMkgxNy41QzE2Ljk1LDIyIDE2LDIxLjU1IDE2LDIxQzE2LDIxLjU1IDE1LjA1LDIyIDE0LjUsMjJIMTJWMjBIMTRBMSwxIDAgMCwwIDE1LDE5VjVBMSwxIDAgMCwwIDE0LDRIMTJWMkgxNC41QzE1LjA1LDIgMTYsMi40NSAxNiwzQzE2LDIuNDUgMTYuOTUsMiAxNy41LDJIMjBWNEgxOEExLDEgMCAwLDAgMTcsNVY3TTIsN0gxM1Y5SDRWMTVIMTNWMTdIMlY3TTIwLDE1VjlIMTdWMTVIMjBNOC41LDEyQTEuNSwxLjUgMCAwLDAgNywxMC41QTEuNSwxLjUgMCAwLDAgNS41LDEyQTEuNSwxLjUgMCAwLDAgNywxMy41QTEuNSwxLjUgMCAwLDAgOC41LDEyTTEzLDEwLjg5QzEyLjM5LDEwLjMzIDExLjQ0LDEwLjM4IDEwLjg4LDExQzEwLjMyLDExLjYgMTAuMzcsMTIuNTUgMTEsMTMuMTFDMTEuNTUsMTMuNjMgMTIuNDMsMTMuNjMgMTMsMTMuMTFWMTAuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25Cb3R0b20gPSBcIk0xMyw5TDE1LjUsNi41TDE2LjkyLDcuOTJMMTIsMTIuODRMNy4wOCw3LjkyTDguNSw2LjVMMTEsOVYzSDEzVjlNMywxNUgyMVYxN0gzVjE1TTMsMTlIMTNWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRBbGlnbkNlbnRlciA9IFwiTTMsM0gyMVY1SDNWM003LDdIMTdWOUg3VjdNMywxMUgyMVYxM0gzVjExTTcsMTVIMTdWMTdIN1YxNU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25KdXN0aWZ5ID0gXCJNMywzSDIxVjVIM1YzTTMsN0gyMVY5SDNWN00zLDExSDIxVjEzSDNWMTFNMywxNUgyMVYxN0gzVjE1TTMsMTlIMjFWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRBbGlnbkxlZnQgPSBcIk0zLDNIMjFWNUgzVjNNMyw3SDE1VjlIM1Y3TTMsMTFIMjFWMTNIM1YxMU0zLDE1SDE1VjE3SDNWMTVNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEFsaWduTWlkZGxlID0gXCJNMTMsNkwxNSw0TDE2LjQyLDUuNDJMMTIsOS44NEw3LjU4LDUuNDJMOSw0TDExLDZWMkgxM1Y2TTMsMTFIMjFWMTNIM1YxMU0xMywxOFYyMkgxMVYxOEw5LDIwTDcuNTgsMTguNThMMTIsMTQuMTZMMTYuNDIsMTguNThMMTUsMjBMMTMsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25SaWdodCA9IFwiTTMsM0gyMVY1SDNWM005LDdIMjFWOUg5VjdNMywxMUgyMVYxM0gzVjExTTksMTVIMjFWMTdIOVYxNU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QWxpZ25Ub3AgPSBcIk0xMywxNUwxNS41LDE3LjVMMTYuOTIsMTYuMDhMMTIsMTEuMTZMNy4wOCwxNi4wOEw4LjUsMTcuNUwxMSwxNVYyMUgxM1YxNU0zLDNIMjFWNUgzVjNNMyw3SDEzVjlIM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEFubm90YXRpb25NaW51cyA9IFwiTTEwLjUsN0g4LjVMMywyMUg1LjJMNi4zLDE4SDEyLjVMMTMuNiwyMUgxNkwxMC41LDdNNy4xLDE2TDkuNSw5LjdMMTEuOSwxNkg3LjFNMjIsN0gxNFY1SDIyVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0QW5ub3RhdGlvblBsdXMgPSBcIk04LjUsN0gxMC41TDE2LDIxSDEzLjZMMTIuNSwxOEg2LjNMNS4yLDIxSDNMOC41LDdNNy4xLDE2SDExLjlMOS41LDkuN0w3LjEsMTZNMjIsNVY3SDE5VjEwSDE3VjdIMTRWNUgxN1YySDE5VjVIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0Qm9sZCA9IFwiTTEzLjUsMTUuNUgxMFYxMi41SDEzLjVBMS41LDEuNSAwIDAsMSAxNSwxNEExLjUsMS41IDAgMCwxIDEzLjUsMTUuNU0xMCw2LjVIMTNBMS41LDEuNSAwIDAsMSAxNC41LDhBMS41LDEuNSAwIDAsMSAxMyw5LjVIMTBNMTUuNiwxMC43OUMxNi41NywxMC4xMSAxNy4yNSw5IDE3LjI1LDhDMTcuMjUsNS43NCAxNS41LDQgMTMuMjUsNEg3VjE4SDE0LjA0QzE2LjE0LDE4IDE3Ljc1LDE2LjMgMTcuNzUsMTQuMjFDMTcuNzUsMTIuNjkgMTYuODksMTEuMzkgMTUuNiwxMC43OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRDbGVhciA9IFwiTTYsNVY1LjE4TDguODIsOEgxMS4yMkwxMC41LDkuNjhMMTIuNiwxMS43OEwxNC4yMSw4SDIwVjVINk0zLjI3LDVMMiw2LjI3TDguOTcsMTMuMjRMNi41LDE5SDkuNUwxMS4wNywxNS4zNEwxNi43MywyMUwxOCwxOS43M0wzLjU1LDUuMjdMMy4yNyw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9yRmlsbCA9IFwiTTE5LDExLjVDMTksMTEuNSAxNywxMy42NyAxNywxNUEyLDIgMCAwLDAgMTksMTdBMiwyIDAgMCwwIDIxLDE1QzIxLDEzLjY3IDE5LDExLjUgMTksMTEuNU01LjIxLDEwTDEwLDUuMjFMMTQuNzksMTBNMTYuNTYsOC45NEw3LjYyLDBMNi4yMSwxLjQxTDguNTksMy43OUwzLjQ0LDguOTRDMi44NSw5LjUgMi44NSwxMC40NyAzLjQ0LDExLjA2TDguOTQsMTYuNTZDOS4yMywxNi44NSA5LjYyLDE3IDEwLDE3QzEwLjM4LDE3IDEwLjc3LDE2Ljg1IDExLjA2LDE2LjU2TDE2LjU2LDExLjA2QzE3LjE1LDEwLjQ3IDE3LjE1LDkuNSAxNi41Niw4Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9ySGlnaGxpZ2h0ID0gXCJNNCwxN0w2Ljc1LDE0LjI1TDYuNzIsMTQuMjNDNi4xNCwxMy42NCA2LjE0LDEyLjY5IDYuNzIsMTIuMTFMMTEuNDYsNy4zN0wxNS43LDExLjYxTDEwLjk2LDE2LjM1QzEwLjM5LDE2LjkzIDkuNDYsMTYuOTMgOC44NywxNi4zN0w4LjI0LDE3SDRNMTUuOTEsMi45MUMxNi41LDIuMzMgMTcuNDUsMi4zMyAxOC4wMywyLjkxTDIwLjE2LDUuMDNDMjAuNzQsNS42MiAyMC43NCw2LjU3IDIwLjE2LDcuMTZMMTYuODYsMTAuNDVMMTIuNjIsNi4yMUwxNS45MSwyLjkxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9yTWFya2VyQ2FuY2VsID0gXCJNMTYuNSA4QzE0IDggMTIgMTAgMTIgMTIuNVMxNCAxNyAxNi41IDE3IDIxIDE1IDIxIDEyLjUgMTkgOCAxNi41IDhNMTYuNSAxNS41QzE0LjggMTUuNSAxMy41IDE0LjIgMTMuNSAxMi41QzEzLjUgMTEuOSAxMy43IDExLjQgMTMuOSAxMUwxOCAxNS4xQzE3LjYgMTUuMyAxNy4xIDE1LjUgMTYuNSAxNS41TTE5LjEgMTRMMTUgOS45QzE1LjQgOS42IDE1LjkgOS41IDE2LjUgOS41QzE4LjIgOS41IDE5LjUgMTAuOCAxOS41IDEyLjVDMTkuNSAxMy4xIDE5LjMgMTMuNiAxOS4xIDE0TTEyLjEgNy43TDEwLjYgNi4yTDEzLjkgMi45QzE0LjUgMi4zIDE1LjQgMi4zIDE2IDIuOUwxOC4yIDVDMTguNiA1LjQgMTguNyA1LjggMTguNiA2LjNDMTggNi4xIDE3LjMgNiAxNi42IDZDMTQuOCA2IDEzLjMgNi43IDEyLjEgNy43TTEwLjUgMTQuOUw5IDE2LjNDOC40IDE2LjkgNy41IDE2LjkgNi45IDE2LjNMNi4yIDE3SDJMNC44IDE0LjJDNC4yIDEzLjYgNC4yIDEyLjcgNC44IDEyLjFMOS41IDcuNEwxMS4xIDlDMTAuNCAxMCAxMCAxMS4yIDEwIDEyLjVDMTAgMTMuMyAxMC4yIDE0LjEgMTAuNSAxNC45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbG9yVGV4dCA9IFwiTTkuNjIsMTJMMTIsNS42N0wxNC4zNywxMk0xMSwzTDUuNSwxN0g3Ljc1TDguODcsMTRIMTUuMTJMMTYuMjUsMTdIMTguNUwxMywzSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdENvbHVtbnMgPSBcIk0zLDNIMTFWNUgzVjNNMTMsM0gyMVY1SDEzVjNNMyw3SDExVjlIM1Y3TTEzLDdIMjFWOUgxM1Y3TTMsMTFIMTFWMTNIM1YxMU0xMywxMUgyMVYxM0gxM1YxMU0zLDE1SDExVjE3SDNWMTVNMTMsMTVIMjFWMTdIMTNWMTVNMywxOUgxMVYyMUgzVjE5TTEzLDE5SDIxVjIxSDEzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEZsb2F0Q2VudGVyID0gXCJNOSw3SDE1VjEzSDlWN00zLDNIMjFWNUgzVjNNMywxNUgyMVYxN0gzVjE1TTMsMTlIMTdWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRGbG9hdExlZnQgPSBcIk0zLDdIOVYxM0gzVjdNMywzSDIxVjVIM1YzTTIxLDdWOUgxMVY3SDIxTTIxLDExVjEzSDExVjExSDIxTTMsMTVIMTdWMTdIM1YxNU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0RmxvYXROb25lID0gXCJNMyw3SDlWMTNIM1Y3TTMsM0gyMVY1SDNWM00yMSwxMVYxM0gxMVYxMUgyMU0zLDE1SDE3VjE3SDNWMTVNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEZsb2F0UmlnaHQgPSBcIk0xNSw3SDIxVjEzSDE1VjdNMywzSDIxVjVIM1YzTTEzLDdWOUgzVjdIMTNNOSwxMVYxM0gzVjExSDlNMywxNUgxN1YxN0gzVjE1TTMsMTlIMjFWMjFIM1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRGb250ID0gXCJNMTcsOEgyMFYyMEgyMVYyMUgxN1YyMEgxOFYxN0gxNEwxMi41LDIwSDE0VjIxSDEwVjIwSDExTDE3LDhNMTgsOUwxNC41LDE2SDE4VjlNNSwzSDEwQzExLjExLDMgMTIsMy44OSAxMiw1VjE2SDlWMTFINlYxNkgzVjVDMywzLjg5IDMuODksMyA1LDNNNiw1VjlIOVY1SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0Rm9udFNpemVEZWNyZWFzZSA9IFwiTTUuMTIsMTRMNy41LDcuNjdMOS44NywxNE02LjUsNUwxLDE5SDMuMjVMNC4zNywxNkgxMC42MkwxMS43NSwxOUgxNEw4LjUsNUg2LjVNMTgsMTdMMjMsMTEuOTNMMjEuNTksMTAuNUwxOSwxMy4xVjdIMTdWMTMuMUwxNC40MSwxMC41TDEzLDExLjkzTDE4LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEZvbnRTaXplSW5jcmVhc2UgPSBcIk01LjEyLDE0TDcuNSw3LjY3TDkuODcsMTRNNi41LDVMMSwxOUgzLjI1TDQuMzcsMTZIMTAuNjJMMTEuNzUsMTlIMTRMOC41LDVINi41TTE4LDdMMTMsMTIuMDdMMTQuNDEsMTMuNUwxNywxMC45VjE3SDE5VjEwLjlMMjEuNTksMTMuNUwyMywxMi4wN0wxOCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhlYWRlcjEgPSBcIk0zLDRINVYxMEg5VjRIMTFWMThIOVYxMkg1VjE4SDNWNE0xNCwxOFYxNkgxNlY2LjMxTDEzLjUsNy43NVY1LjQ0TDE2LDRIMThWMTZIMjBWMThIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVyMiA9IFwiTTMsNEg1VjEwSDlWNEgxMVYxOEg5VjEySDVWMThIM1Y0TTIxLDE4SDE1QTIsMiAwIDAsMSAxMywxNkMxMywxNS40NyAxMy4yLDE1IDEzLjU0LDE0LjY0TDE4LjQxLDkuNDFDMTguNzgsOS4wNSAxOSw4LjU1IDE5LDhBMiwyIDAgMCwwIDE3LDZBMiwyIDAgMCwwIDE1LDhIMTNBNCw0IDAgMCwxIDE3LDRBNCw0IDAgMCwxIDIxLDhDMjEsOS4xIDIwLjU1LDEwLjEgMTkuODMsMTAuODNMMTUsMTZIMjFWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVyMyA9IFwiTTMsNEg1VjEwSDlWNEgxMVYxOEg5VjEySDVWMThIM1Y0TTE1LDRIMTlBMiwyIDAgMCwxIDIxLDZWMTZBMiwyIDAgMCwxIDE5LDE4SDE1QTIsMiAwIDAsMSAxMywxNlYxNUgxNVYxNkgxOVYxMkgxNVYxMEgxOVY2SDE1VjdIMTNWNkEyLDIgMCAwLDEgMTUsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRIZWFkZXI0ID0gXCJNMyw0SDVWMTBIOVY0SDExVjE4SDlWMTJINVYxOEgzVjRNMTgsMThWMTNIMTNWMTFMMTgsNEgyMFYxMUgyMVYxM0gyMFYxOEgxOE0xOCwxMVY3LjQyTDE1LjQ1LDExSDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhlYWRlcjUgPSBcIk0zLDRINVYxMEg5VjRIMTFWMThIOVYxMkg1VjE4SDNWNE0xNSw0SDIwVjZIMTVWMTBIMTdBNCw0IDAgMCwxIDIxLDE0QTQsNCAwIDAsMSAxNywxOEgxNUEyLDIgMCAwLDEgMTMsMTZWMTVIMTVWMTZIMTdBMiwyIDAgMCwwIDE5LDE0QTIsMiAwIDAsMCAxNywxMkgxNUEyLDIgMCAwLDEgMTMsMTBWNkEyLDIgMCAwLDEgMTUsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRIZWFkZXI2ID0gXCJNMyw0SDVWMTBIOVY0SDExVjE4SDlWMTJINVYxOEgzVjRNMTUsNEgxOUEyLDIgMCAwLDEgMjEsNlY3SDE5VjZIMTVWMTBIMTlBMiwyIDAgMCwxIDIxLDEyVjE2QTIsMiAwIDAsMSAxOSwxOEgxNUEyLDIgMCAwLDEgMTMsMTZWNkEyLDIgMCAwLDEgMTUsNE0xNSwxMlYxNkgxOVYxMkgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRIZWFkZXJEZWNyZWFzZSA9IFwiTTQsNEg2VjEwSDEwVjRIMTJWMThIMTBWMTJINlYxOEg0VjRNMjAuNDIsNy40MUwxNi44MywxMUwyMC40MiwxNC41OUwxOSwxNkwxNCwxMUwxOSw2TDIwLjQyLDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVyRXF1YWwgPSBcIk00LDRINlYxMEgxMFY0SDEyVjE4SDEwVjEySDZWMThINFY0TTE0LDEwVjhIMjFWMTBIMTRNMTQsMTJIMjFWMTRIMTRWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SGVhZGVySW5jcmVhc2UgPSBcIk00LDRINlYxMEgxMFY0SDEyVjE4SDEwVjEySDZWMThINFY0TTE0LjU5LDcuNDFMMTguMTcsMTFMMTQuNTksMTQuNTlMMTYsMTZMMjEsMTFMMTYsNkwxNC41OSw3LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhlYWRlclBvdW5kID0gXCJNMyw0SDVWMTBIOVY0SDExVjE4SDlWMTJINVYxOEgzVjRNMTMsOEgxNS4zMUwxNS42Myw1SDE3LjYzTDE3LjMxLDhIMTkuMzFMMTkuNjMsNUgyMS42M0wyMS4zMSw4SDIzVjEwSDIxLjFMMjAuOSwxMkgyM1YxNEgyMC42OUwyMC4zNywxN0gxOC4zN0wxOC42OSwxNEgxNi42OUwxNi4zNywxN0gxNC4zN0wxNC42OSwxNEgxM1YxMkgxNC45TDE1LjEsMTBIMTNWOE0xNy4xLDEwTDE2LjksMTJIMTguOUwxOS4xLDEwSDE3LjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SG9yaXpvbnRhbEFsaWduQ2VudGVyID0gXCJNMTksMTZWMTNIMjNWMTFIMTlWOEwxNSwxMkwxOSwxNk01LDhWMTFIMVYxM0g1VjE2TDksMTJMNSw4TTExLDIwSDEzVjRIMTFWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0SG9yaXpvbnRhbEFsaWduTGVmdCA9IFwiTTExLDE2VjEzSDIxVjExSDExVjhMNywxMkwxMSwxNk0zLDIwSDVWNEgzVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdEhvcml6b250YWxBbGlnblJpZ2h0ID0gXCJNMTMsOFYxMUgzVjEzSDEzVjE2TDE3LDEyTDEzLDhNMTksMjBIMjFWNEgxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRJbmRlbnREZWNyZWFzZSA9IFwiTTExLDEzSDIxVjExSDExTTExLDlIMjFWN0gxMU0zLDNWNUgyMVYzTTMsMjFIMjFWMTlIM00zLDEyTDcsMTZWOE0xMSwxN0gyMVYxNUgxMVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRJbmRlbnRJbmNyZWFzZSA9IFwiTTExLDEzSDIxVjExSDExTTExLDlIMjFWN0gxMU0zLDNWNUgyMVYzTTExLDE3SDIxVjE1SDExTTMsOFYxNkw3LDEyTTMsMjFIMjFWMTlIM1YyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRJdGFsaWMgPSBcIk0xMCw0VjdIMTIuMjFMOC43OSwxNUg2VjE4SDE0VjE1SDExLjc5TDE1LjIxLDdIMThWNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRMZXR0ZXJDYXNlID0gXCJNMjAuMDYsMThDMjAsMTcuODMgMTkuOTEsMTcuNTQgMTkuODYsMTcuMTFDMTkuMTksMTcuODEgMTguMzgsMTguMTYgMTcuNDUsMTguMTZDMTYuNjIsMTguMTYgMTUuOTMsMTcuOTIgMTUuNCwxNy40NUMxNC44NywxNyAxNC42LDE2LjM5IDE0LjYsMTUuNjZDMTQuNiwxNC43OCAxNC45MywxNC4xIDE1LjYsMTMuNjFDMTYuMjcsMTMuMTIgMTcuMjEsMTIuODggMTguNDMsMTIuODhIMTkuODNWMTIuMjRDMTkuODMsMTEuNzUgMTkuNjgsMTEuMzYgMTkuMzgsMTEuMDdDMTkuMDgsMTAuNzggMTguNjMsMTAuNjQgMTguMDUsMTAuNjRDMTcuNTMsMTAuNjQgMTcuMSwxMC43NiAxNi43NSwxMUMxNi40LDExLjI1IDE2LjIzLDExLjU0IDE2LjIzLDExLjg5SDE0Ljc3QzE0Ljc3LDExLjQ2IDE0LjkyLDExLjA1IDE1LjIyLDEwLjY1QzE1LjUsMTAuMjUgMTUuOTMsOS45NCAxNi40NCw5LjcxQzE2Ljk1LDkuNSAxNy41LDkuMzYgMTguMTMsOS4zNkMxOS4xMSw5LjM2IDE5Ljg3LDkuNiAyMC40MiwxMC4wOUMyMC45NywxMC41OCAyMS4yNiwxMS4yNSAyMS4yOCwxMi4xMVYxNkMyMS4yOCwxNi44IDIxLjM4LDE3LjQyIDIxLjU4LDE3Ljg4VjE4SDIwLjA2TTE3LjY2LDE2Ljg4QzE4LjExLDE2Ljg4IDE4LjU0LDE2Ljc3IDE4Ljk1LDE2LjU2QzE5LjM1LDE2LjM1IDE5LjY1LDE2LjA3IDE5LjgzLDE1LjczVjE0LjE2SDE4LjdDMTYuOTMsMTQuMTYgMTYuMDQsMTQuNjMgMTYuMDQsMTUuNTdDMTYuMDQsMTYgMTYuMTksMTYuMyAxNi41LDE2LjUzQzE2LjgsMTYuNzYgMTcuMTgsMTYuODggMTcuNjYsMTYuODhNNS40NiwxMy43MUg5LjUzTDcuNSw4LjI5TDUuNDYsMTMuNzFNNi42NCw2SDguMzZMMTMuMDcsMThIMTEuMTRMMTAuMTcsMTUuNDNINC44MkwzLjg2LDE4SDEuOTNMNi42NCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExldHRlckNhc2VMb3dlciA9IFwiTTIwLjA2LDE4QzIwLDE3LjgzIDE5LjkxLDE3LjU0IDE5Ljg2LDE3LjExQzE5LjE5LDE3LjgxIDE4LjM4LDE4LjE2IDE3LjQ1LDE4LjE2QzE2LjYyLDE4LjE2IDE1LjkzLDE3LjkyIDE1LjQsMTcuNDVDMTQuODcsMTcgMTQuNiwxNi4zOSAxNC42LDE1LjY2QzE0LjYsMTQuNzggMTQuOTMsMTQuMSAxNS42LDEzLjYxQzE2LjI3LDEzLjEyIDE3LjIxLDEyLjg4IDE4LjQzLDEyLjg4SDE5LjgzVjEyLjI0QzE5LjgzLDExLjc1IDE5LjY4LDExLjM2IDE5LjM4LDExLjA3QzE5LjA4LDEwLjc4IDE4LjYzLDEwLjY0IDE4LjA1LDEwLjY0QzE3LjUzLDEwLjY0IDE3LjEsMTAuNzYgMTYuNzUsMTFDMTYuNCwxMS4yNSAxNi4yMywxMS41NCAxNi4yMywxMS44OUgxNC43N0MxNC43NywxMS40NiAxNC45MiwxMS4wNSAxNS4yMiwxMC42NUMxNS41LDEwLjI1IDE1LjkzLDkuOTQgMTYuNDQsOS43MUMxNi45NSw5LjUgMTcuNSw5LjM2IDE4LjEzLDkuMzZDMTkuMTEsOS4zNiAxOS44Nyw5LjYgMjAuNDIsMTAuMDlDMjAuOTcsMTAuNTggMjEuMjYsMTEuMjUgMjEuMjgsMTIuMTFWMTZDMjEuMjgsMTYuOCAyMS4zOCwxNy40MiAyMS41OCwxNy44OFYxOEgyMC4wNk0xNy42NiwxNi44OEMxOC4xMSwxNi44OCAxOC41NCwxNi43NyAxOC45NSwxNi41NkMxOS4zNSwxNi4zNSAxOS42NSwxNi4wNyAxOS44MywxNS43M1YxNC4xNkgxOC43QzE2LjkzLDE0LjE2IDE2LjA0LDE0LjYzIDE2LjA0LDE1LjU3QzE2LjA0LDE2IDE2LjE5LDE2LjMgMTYuNSwxNi41M0MxNi44LDE2Ljc2IDE3LjE4LDE2Ljg4IDE3LjY2LDE2Ljg4TTUuNDYsMTMuNzFIOS41M0w3LjUsOC4yOUw1LjQ2LDEzLjcxTTYuNjQsNkg4LjM2TDEzLjA3LDE4SDExLjE0TDEwLjE3LDE1LjQzSDQuODJMMy44NiwxOEgxLjkzTDYuNjQsNk0yMiwyMFYyMkgxNC41VjIwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExldHRlckNhc2VVcHBlciA9IFwiTTIwLjA2LDE4QzIwLDE3LjgzIDE5LjkxLDE3LjU0IDE5Ljg2LDE3LjExQzE5LjE5LDE3LjgxIDE4LjM4LDE4LjE2IDE3LjQ1LDE4LjE2QzE2LjYyLDE4LjE2IDE1LjkzLDE3LjkyIDE1LjQsMTcuNDVDMTQuODcsMTcgMTQuNiwxNi4zOSAxNC42LDE1LjY2QzE0LjYsMTQuNzggMTQuOTMsMTQuMSAxNS42LDEzLjYxQzE2LjI3LDEzLjEyIDE3LjIxLDEyLjg4IDE4LjQzLDEyLjg4SDE5LjgzVjEyLjI0QzE5LjgzLDExLjc1IDE5LjY4LDExLjM2IDE5LjM4LDExLjA3QzE5LjA4LDEwLjc4IDE4LjYzLDEwLjY0IDE4LjA1LDEwLjY0QzE3LjUzLDEwLjY0IDE3LjEsMTAuNzYgMTYuNzUsMTFDMTYuNCwxMS4yNSAxNi4yMywxMS41NCAxNi4yMywxMS44OUgxNC43N0MxNC43NywxMS40NiAxNC45MiwxMS4wNSAxNS4yMiwxMC42NUMxNS41LDEwLjI1IDE1LjkzLDkuOTQgMTYuNDQsOS43MUMxNi45NSw5LjUgMTcuNSw5LjM2IDE4LjEzLDkuMzZDMTkuMTEsOS4zNiAxOS44Nyw5LjYgMjAuNDIsMTAuMDlDMjAuOTcsMTAuNTggMjEuMjYsMTEuMjUgMjEuMjgsMTIuMTFWMTZDMjEuMjgsMTYuOCAyMS4zOCwxNy40MiAyMS41OCwxNy44OFYxOEgyMC4wNk0xNy42NiwxNi44OEMxOC4xMSwxNi44OCAxOC41NCwxNi43NyAxOC45NSwxNi41NkMxOS4zNSwxNi4zNSAxOS42NSwxNi4wNyAxOS44MywxNS43M1YxNC4xNkgxOC43QzE2LjkzLDE0LjE2IDE2LjA0LDE0LjYzIDE2LjA0LDE1LjU3QzE2LjA0LDE2IDE2LjE5LDE2LjMgMTYuNSwxNi41M0MxNi44LDE2Ljc2IDE3LjE4LDE2Ljg4IDE3LjY2LDE2Ljg4TTUuNDYsMTMuNzFIOS41M0w3LjUsOC4yOUw1LjQ2LDEzLjcxTTYuNjQsNkg4LjM2TDEzLjA3LDE4SDExLjE0TDEwLjE3LDE1LjQzSDQuODJMMy44NiwxOEgxLjkzTDYuNjQsNk0yLDIwSDEzVjIySDJWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGV0dGVyRW5kc1dpdGggPSBcIk0xMS4xNCA0TDYuNDMgMTZIOC4zNkw5LjMyIDEzLjQzSDE0LjY3TDE1LjY0IDE2SDE3LjU3TDEyLjg2IDRNMTIgNi4yOUwxNC4wMyAxMS43MUg5Ljk2TTIwIDE0VjE4SDJWMjBIMjJWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGV0dGVyTWF0Y2hlcyA9IFwiTTExLjE0IDRMNi40MyAxNkg4LjM2TDkuMzIgMTMuNDNIMTQuNjdMMTUuNjQgMTZIMTcuNTdMMTIuODYgNE0xMiA2LjI5TDE0LjAzIDExLjcxSDkuOTZNMjAgMTRWMThINFYxNUgyVjIwSDIyVjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExldHRlclN0YXJ0c1dpdGggPSBcIk0xMS4xNCA0TDYuNDMgMTZIOC4zNkw5LjMyIDEzLjQzSDE0LjY3TDE1LjY0IDE2SDE3LjU3TDEyLjg2IDRNMTIgNi4yOUwxNC4wMyAxMS43MUg5Ljk2TTQgMThWMTVIMlYyMEgyMlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRMaW5lU3BhY2luZyA9IFwiTTEwLDEzSDIyVjExSDEwTTEwLDE5SDIyVjE3SDEwTTEwLDdIMjJWNUgxME02LDdIOC41TDUsMy41TDEuNSw3SDRWMTdIMS41TDUsMjAuNUw4LjUsMTdINlY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExpbmVTdHlsZSA9IFwiTTMsMTZIOFYxNEgzVjE2TTkuNSwxNkgxNC41VjE0SDkuNVYxNk0xNiwxNkgyMVYxNEgxNlYxNk0zLDIwSDVWMThIM1YyME03LDIwSDlWMThIN1YyME0xMSwyMEgxM1YxOEgxMVYyME0xNSwyMEgxN1YxOEgxNVYyME0xOSwyMEgyMVYxOEgxOVYyME0zLDEySDExVjEwSDNWMTJNMTMsMTJIMjFWMTBIMTNWMTJNMyw0VjhIMjFWNEgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExpbmVXZWlnaHQgPSBcIk0zLDE3SDIxVjE1SDNWMTdNMywyMEgyMVYxOUgzVjIwTTMsMTNIMjFWMTBIM1YxM00zLDRWOEgyMVY0SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdEJ1bGxldGVkID0gXCJNNyw1SDIxVjdIN1Y1TTcsMTNWMTFIMjFWMTNIN000LDQuNUExLjUsMS41IDAgMCwxIDUuNSw2QTEuNSwxLjUgMCAwLDEgNCw3LjVBMS41LDEuNSAwIDAsMSAyLjUsNkExLjUsMS41IDAgMCwxIDQsNC41TTQsMTAuNUExLjUsMS41IDAgMCwxIDUuNSwxMkExLjUsMS41IDAgMCwxIDQsMTMuNUExLjUsMS41IDAgMCwxIDIuNSwxMkExLjUsMS41IDAgMCwxIDQsMTAuNU03LDE5VjE3SDIxVjE5SDdNNCwxNi41QTEuNSwxLjUgMCAwLDEgNS41LDE4QTEuNSwxLjUgMCAwLDEgNCwxOS41QTEuNSwxLjUgMCAwLDEgMi41LDE4QTEuNSwxLjUgMCAwLDEgNCwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdExpc3RCdWxsZXRlZFNxdWFyZSA9IFwiTTMsNEg3VjhIM1Y0TTksNVY3SDIxVjVIOU0zLDEwSDdWMTRIM1YxME05LDExVjEzSDIxVjExSDlNMywxNkg3VjIwSDNWMTZNOSwxN1YxOUgyMVYxN0g5XCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdEJ1bGxldGVkVHJpYW5nbGUgPSBcIk01LDE1LjVMNy41LDIwSDIuNUw1LDE1LjVNOSwxOUgyMVYxN0g5VjE5TTUsOS41TDcuNSwxNEgyLjVMNSw5LjVNOSwxM0gyMVYxMUg5VjEzTTUsMy41TDcuNSw4SDIuNUw1LDMuNU05LDdIMjFWNUg5VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdEJ1bGxldGVkVHlwZSA9IFwiTTUsOS41TDcuNSwxNEgyLjVMNSw5LjVNMyw0SDdWOEgzVjRNNSwyMEEyLDIgMCAwLDAgNywxOEEyLDIgMCAwLDAgNSwxNkEyLDIgMCAwLDAgMywxOEEyLDIgMCAwLDAgNSwyME05LDVWN0gyMVY1SDlNOSwxOUgyMVYxN0g5VjE5TTksMTNIMjFWMTFIOVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRMaXN0Q2hlY2tib3ggPSBcIk0yMSwxOVYxN0g4VjE5SDIxTTIxLDEzVjExSDhWMTNIMjFNOCw3SDIxVjVIOFY3TTQsNVY3SDZWNUg0TTMsNUExLDEgMCAwLDEgNCw0SDZBMSwxIDAgMCwxIDcsNVY3QTEsMSAwIDAsMSA2LDhINEExLDEgMCAwLDEgMyw3VjVNNCwxMVYxM0g2VjExSDRNMywxMUExLDEgMCAwLDEgNCwxMEg2QTEsMSAwIDAsMSA3LDExVjEzQTEsMSAwIDAsMSA2LDE0SDRBMSwxIDAgMCwxIDMsMTNWMTFNNCwxN1YxOUg2VjE3SDRNMywxN0ExLDEgMCAwLDEgNCwxNkg2QTEsMSAwIDAsMSA3LDE3VjE5QTEsMSAwIDAsMSA2LDIwSDRBMSwxIDAgMCwxIDMsMTlWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdENoZWNrcyA9IFwiTTMsNUg5VjExSDNWNU01LDdWOUg3VjdINU0xMSw3SDIxVjlIMTFWN00xMSwxNUgyMVYxN0gxMVYxNU01LDIwTDEuNSwxNi41TDIuOTEsMTUuMDlMNSwxNy4xN0w5LjU5LDEyLjU5TDExLDE0TDUsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdE51bWJlcmVkID0gXCJNNywxM1YxMUgyMVYxM0g3TTcsMTlWMTdIMjFWMTlIN003LDdWNUgyMVY3SDdNMyw4VjVIMlY0SDRWOEgzTTIsMTdWMTZINVYyMEgyVjE5SDRWMTguNUgzVjE3LjVINFYxN0gyTTQuMjUsMTBBMC43NSwwLjc1IDAgMCwxIDUsMTAuNzVDNSwxMC45NSA0LjkyLDExLjE0IDQuNzksMTEuMjdMMy4xMiwxM0g1VjE0SDJWMTMuMDhMNCwxMUgyVjEwSDQuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdE51bWJlcmVkUnRsID0gXCJNMywxM1YxMUgxN1YxM0gzTTMsMTlWMTdIMTdWMTlIM00zLDdWNUgxN1Y3SDNNMjAsOFY1SDE5VjRIMjFWOEgyME0xOSwxN1YxNkgyMlYyMEgxOVYxOUgyMVYxOC41SDIwVjE3LjVIMjFWMTdIMTlNMjEuMjUsMTBDMjEuNjcsMTAgMjIsMTAuMzQgMjIsMTAuNzVDMjIsMTAuOTUgMjEuOTIsMTEuMTQgMjEuNzksMTEuMjdMMjAuMTIsMTNIMjJWMTRIMTlWMTMuMDhMMjEsMTFIMTlWMTBIMjEuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0TGlzdFRleHQgPSBcIk0yIDE0SDhWMjBIMk0xNiA4SDEwVjEwSDE2TTIgMTBIOFY0SDJNMTAgNFY2SDIyVjRNMTAgMjBIMTZWMThIMTBNMTAgMTZIMjJWMTRIMTBcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRPdmVybGluZSA9IFwiTTUsNUgxOVYzSDVWNU05LjYyLDE2TDEyLDkuNjdMMTQuMzcsMTZNMTEsN0w1LjUsMjFINy43NUw4Ljg3LDE4SDE1LjEyTDE2LjI1LDIxSDE4LjVMMTMsN0gxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRQYWdlQnJlYWsgPSBcIk0xOCwyMEg2VjE4SDRWMjBBMiwyIDAgMCwwIDYsMjJIMThBMiwyIDAgMCwwIDIwLDIwVjE4SDE4VjIwTTE0LDJINkEyLDIgMCAwLDAgNCw0VjEySDZWNEgxNFY4SDE4VjEySDIwVjhMMTQsMk0xMSwxNkg4VjE0SDExVjE2TTE2LDE2SDEzVjE0SDE2VjE2TTMsMTRINlYxNkgzVjE0TTIxLDE2SDE4VjE0SDIxVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFBhaW50ID0gXCJNMTgsNFYzQTEsMSAwIDAsMCAxNywySDVBMSwxIDAgMCwwIDQsM1Y3QTEsMSAwIDAsMCA1LDhIMTdBMSwxIDAgMCwwIDE4LDdWNkgxOVYxMEg5VjIxQTEsMSAwIDAsMCAxMCwyMkgxMkExLDEgMCAwLDAgMTMsMjFWMTJIMjFWNEgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRQYXJhZ3JhcGggPSBcIk0xMyw0QTQsNCAwIDAsMSAxNyw4QTQsNCAwIDAsMSAxMywxMkgxMVYxOEg5VjRIMTNNMTMsMTBBMiwyIDAgMCwwIDE1LDhBMiwyIDAgMCwwIDEzLDZIMTFWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0UGlsY3JvdyA9IFwiTTEwLDExQTQsNCAwIDAsMSA2LDdBNCw0IDAgMCwxIDEwLDNIMThWNUgxNlYyMUgxNFY1SDEyVjIxSDEwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFF1b3RlQ2xvc2UgPSBcIk0xNCwxN0gxN0wxOSwxM1Y3SDEzVjEzSDE2TTYsMTdIOUwxMSwxM1Y3SDVWMTNIOEw2LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFF1b3RlQ2xvc2VPdXRsaW5lID0gXCJNMTMgNlYxNEgxNC44OEwxMi44OCAxOEgxOC42MkwyMSAxMy4yNFY2TTE1IDhIMTlWMTIuNzZMMTcuMzggMTZIMTYuMTJMMTguMTIgMTJIMTVNMyA2VjE0SDQuODhMMi44OCAxOEg4LjYyTDExIDEzLjI0VjZNNSA4SDlWMTIuNzZMNy4zOCAxNkg2LjEyTDguMTIgMTJINVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRRdW90ZU9wZW4gPSBcIk0xMCw3TDgsMTFIMTFWMTdINVYxMUw3LDdIMTBNMTgsN0wxNiwxMUgxOVYxN0gxM1YxMUwxNSw3SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFF1b3RlT3Blbk91dGxpbmUgPSBcIk0xMSAxOFYxMEg5LjEyTDExLjEyIDZINS4zOEwzIDEwLjc2VjE4TTkgMTZINVYxMS4yNEw2LjYyIDhINy44OEw1Ljg4IDEySDlNMjEgMThWMTBIMTkuMTJMMjEuMTIgNkgxNS4zOEwxMyAxMC43NlYxOE0xOSAxNkgxNVYxMS4yNEwxNi42MiA4SDE3Ljg4TDE1Ljg4IDEySDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFJvdGF0ZTkwID0gXCJNNy4zNCw2LjQxTDAuODYsMTIuOUw3LjM1LDE5LjM4TDEzLjg0LDEyLjlMNy4zNCw2LjQxTTMuNjksMTIuOUw3LjM1LDkuMjRMMTEsMTIuOUw3LjM0LDE2LjU2TDMuNjksMTIuOU0xOS4zNiw2LjY0QzE3LjYxLDQuODggMTUuMyw0IDEzLDRWMC43Nkw4Ljc2LDVMMTMsOS4yNFY2QzE0Ljc5LDYgMTYuNTgsNi42OCAxNy45NSw4LjA1QzIwLjY4LDEwLjc4IDIwLjY4LDE1LjIyIDE3Ljk1LDE3Ljk1QzE2LjU4LDE5LjMyIDE0Ljc5LDIwIDEzLDIwQzEyLjAzLDIwIDExLjA2LDE5Ljc5IDEwLjE2LDE5LjM5TDguNjcsMjAuODhDMTAsMjEuNjIgMTEuNSwyMiAxMywyMkMxNS4zLDIyIDE3LjYxLDIxLjEyIDE5LjM2LDE5LjM2QzIyLjg4LDE1Ljg1IDIyLjg4LDEwLjE1IDE5LjM2LDYuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0U2VjdGlvbiA9IFwiTTE1LjY3LDQuNDJDMTQuNywzLjg0IDEzLjU4LDMuNTQgMTIuNDUsMy41NkMxMC44NywzLjU2IDkuNjYsNC4zNCA5LjY2LDUuNTZDOS42Niw2Ljk2IDExLDcuNDcgMTMsOC4xNEMxNS41LDguOTUgMTcuNCw5Ljk3IDE3LjQsMTIuMzhDMTcuMzYsMTMuNjkgMTYuNjksMTQuODkgMTUuNiwxNS42MUMxNi4yNSwxNi4yMiAxNi42MSwxNy4wOCAxNi42LDE3Ljk3QzE2LjYsMjAuNzkgMTQsMjEuOTcgMTEuNSwyMS45N0MxMC4wNCwyMi4wMyA4LjU5LDIxLjY0IDcuMzUsMjAuODdMOCwxOS4zNEM5LjA0LDIwLjA1IDEwLjI3LDIwLjQzIDExLjUzLDIwLjQ0QzEzLjI1LDIwLjQ0IDE0LjUzLDE5LjY2IDE0LjUzLDE4LjI0QzE0LjUzLDE3IDEzLjc1LDE2LjMxIDExLjI1LDE1LjQ1QzguNSwxNC41IDYuNiwxMy41IDYuNiwxMS4yMUM2LjY3LDkuODkgNy40Myw4LjY5IDguNiw4LjA3QzcuOTcsNy41IDcuNjEsNi42NyA3LjYsNS44MUM3LjYsMy40NSA5Ljc3LDIgMTIuNTMsMkMxMy44MiwyIDE1LjA5LDIuMjkgMTYuMjMsMi44OUwxNS42Nyw0LjQyTTExLjM1LDEzLjQyQzEyLjQxLDEzLjc1IDEzLjQ0LDE0LjE4IDE0LjQxLDE0LjcxQzE1LjA2LDE0LjIyIDE1LjQzLDEzLjQ1IDE1LjQxLDEyLjY0QzE1LjQxLDExLjY0IDE0Ljc3LDEwLjc2IDEzLDEwLjE0QzExLjg5LDkuNzcgMTAuNzgsOS4zMSA5LjcyLDguNzdDOC45Nyw5LjIyIDguNSwxMC4wMyA4LjUsMTAuOTFDOC41LDExLjg4IDkuMjMsMTIuNjggMTEuMzUsMTMuNDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0U2l6ZSA9IFwiTTIgNFY3SDdWMTlIMTBWN0gxNVY0SDJNMjEgOUgxMlYxMkgxNVYxOUgxOFYxMkgyMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFN0cmlrZXRocm91Z2ggPSBcIk0zLDE0SDIxVjEySDNNNSw0VjdIMTBWMTBIMTRWN0gxOVY0TTEwLDE5SDE0VjE2SDEwVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFN0cmlrZXRocm91Z2hWYXJpYW50ID0gXCJNMjMsMTJWMTRIMTguNjFDMTkuNjEsMTYuMTQgMTkuNTYsMjIgMTIuMzgsMjJDNC4wNSwyMi4wNSA0LjM3LDE1LjUgNC4zNywxNS41TDguMzQsMTUuNTVDOC4zNywxOC45MiAxMS41LDE4LjkyIDEyLjEyLDE4Ljg4QzEyLjc2LDE4LjgzIDE1LjE1LDE4Ljg0IDE1LjM0LDE2LjVDMTUuNDIsMTUuNDEgMTQuMzIsMTQuNTggMTMuMTIsMTRIMVYxMkgyM00xOS40MSw3Ljg5TDE1LjQzLDcuODZDMTUuNDMsNy44NiAxNS42LDUuMDkgMTIuMTUsNS4wOEM4LjcsNS4wNiA5LDcuMjggOSw3LjU2QzkuMDQsNy44NCA5LjM0LDkuMjIgMTIsOS44OEg1LjcxQzUuNzEsOS44OCAyLjIyLDMuMTUgMTAuNzQsMkMxOS40NSwwLjggMTkuNDMsNy45MSAxOS40MSw3Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFN1YnNjcmlwdCA9IFwiTTE2LDcuNDFMMTEuNDEsMTJMMTYsMTYuNTlMMTQuNTksMThMMTAsMTMuNDFMNS40MSwxOEw0LDE2LjU5TDguNTksMTJMNCw3LjQxTDUuNDEsNkwxMCwxMC41OUwxNC41OSw2TDE2LDcuNDFNMjEuODUsMjEuMDNIMTYuOTdWMjAuMDNMMTcuODYsMTkuMjNDMTguNjIsMTguNTggMTkuMTgsMTguMDQgMTkuNTYsMTcuNkMxOS45MywxNy4xNiAyMC4xMiwxNi43NSAyMC4xMywxNi4zNkMyMC4xNCwxNi4wOCAyMC4wNSwxNS44NSAxOS44NiwxNS42NkMxOS42OCwxNS41IDE5LjM5LDE1LjM4IDE5LDE1LjM4QzE4LjY5LDE1LjM4IDE4LjQyLDE1LjQ0IDE4LjE2LDE1LjU2TDE3LjUsMTUuOTRMMTcuMDUsMTQuNzdDMTcuMzIsMTQuNTYgMTcuNjQsMTQuMzggMTguMDMsMTQuMjRDMTguNDIsMTQuMSAxOC44NSwxNCAxOS4zMiwxNEMyMC4xLDE0LjA0IDIwLjcsMTQuMjUgMjEuMSwxNC42NkMyMS41LDE1LjA3IDIxLjcyLDE1LjU5IDIxLjcyLDE2LjIzQzIxLjcxLDE2Ljc5IDIxLjUzLDE3LjMxIDIxLjE4LDE3Ljc4QzIwLjg0LDE4LjI1IDIwLjQyLDE4LjcgMTkuOTEsMTkuMTRMMTkuMjcsMTkuNjZWMTkuNjhIMjEuODVWMjEuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0U3VwZXJzY3JpcHQgPSBcIk0xNiw3LjQxTDExLjQxLDEyTDE2LDE2LjU5TDE0LjU5LDE4TDEwLDEzLjQxTDUuNDEsMThMNCwxNi41OUw4LjU5LDEyTDQsNy40MUw1LjQxLDZMMTAsMTAuNTlMMTQuNTksNkwxNiw3LjQxTTIxLjg1LDlIMTYuOTdWOEwxNy44Niw3LjE4QzE4LjYyLDYuNTQgMTkuMTgsNiAxOS41Niw1LjU1QzE5LjkzLDUuMTEgMjAuMTIsNC43IDIwLjEzLDQuMzJDMjAuMTQsNC4wNCAyMC4wNSwzLjggMTkuODYsMy42MkMxOS42OCwzLjQzIDE5LjM5LDMuMzQgMTksMy4zM0MxOC42OSwzLjM0IDE4LjQyLDMuNCAxOC4xNiwzLjVMMTcuNSwzLjg5TDE3LjA1LDIuNzJDMTcuMzIsMi41IDE3LjY0LDIuMzMgMTguMDMsMi4xOUMxOC40MiwyLjA1IDE4Ljg1LDIgMTkuMzIsMkMyMC4xLDIgMjAuNywyLjIgMjEuMSwyLjYxQzIxLjUsMyAyMS43MiwzLjU0IDIxLjcyLDQuMThDMjEuNzEsNC43NCAyMS41Myw1LjI2IDIxLjE4LDUuNzNDMjAuODQsNi4yMSAyMC40Miw2LjY2IDE5LjkxLDcuMDlMMTkuMjcsNy42MVY3LjYzSDIxLjg1VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0VGV4dCA9IFwiTTE4LjUsNEwxOS42Niw4LjM1TDE4LjcsOC42MUMxOC4yNSw3Ljc0IDE3Ljc5LDYuODcgMTcuMjYsNi40M0MxNi43Myw2IDE2LjExLDYgMTUuNSw2SDEzVjE2LjVDMTMsMTcgMTMsMTcuNSAxMy4zMywxNy43NUMxMy42NywxOCAxNC4zMywxOCAxNSwxOFYxOUg5VjE4QzkuNjcsMTggMTAuMzMsMTggMTAuNjcsMTcuNzVDMTEsMTcuNSAxMSwxNyAxMSwxNi41VjZIOC41QzcuODksNiA3LjI3LDYgNi43NCw2LjQzQzYuMjEsNi44NyA1Ljc1LDcuNzQgNS4zLDguNjFMNC4zNCw4LjM1TDUuNSw0SDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0VGV4dFJvdGF0aW9uQW5nbGVEb3duID0gXCJNMTQuMjUgMjFIMTAuMDNMMTEuNDQgMTkuNTlMMi41OCAxMC43M0w0LjAzIDkuMzNMMTIuODQgMTguMTlMMTQuMjUgMTYuNzhNMTIuNjEgOEwxNS4yMyAxMC42NEwxNy40MyA1Ljc3TTE5LjQxIDQuOTJMMTQuOTUgMTYuMDNMMTMuNSAxNC41OEwxNC4zOSAxMi4zOEwxMC44OCA4LjgxTDguNjggOS43NUw3LjIyIDguMjVMMTguMzMgMy44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Um90YXRpb25BbmdsZVVwID0gXCJNMjAuNTggOS4zM1YxMy41NUwxOS4xNyAxMi4xNEwxMC4zMSAyMUw4LjkxIDE5LjU5TDE3LjcyIDEwLjczTDE2LjMxIDkuMzNNNy41OSAxMUwxMC4yMiA4LjM5TDUuMzQgNi4xNE00LjUgNC4yMkwxNS42MSA4LjYzTDE0LjE2IDEwLjEzTDExLjk2IDkuMTlMOC4zOSAxMi43NUw5LjMzIDE0LjkxTDcuODMgMTYuNDFMMy40MiA1LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRSb3RhdGlvbkRvd24gPSBcIk02LDE5LjczTDMsMTYuNzNINVY0LjI3SDdWMTYuNzNIOUw2LDE5LjczTTE0LDkuMzhWMTMuMTNMMTkuMDMsMTEuMjVMMTQsOS4zOE0yMSwxMkwxMCwxNi43M1YxNC42N0wxMi4xOSwxMy43M1Y4Ljc3TDEwLDcuODNWNS43N0wyMSwxMC41VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRSb3RhdGlvbkRvd25WZXJ0aWNhbCA9IFwiTTE1LjI1IDRIMTMuNzVMOSAxNUgxMS4xTDEyIDEyLjhIMTdMMTcuOSAxNUgyMEwxNS4yNSA0TTEyLjYzIDExTDE0LjUgNkwxNi4zNyAxMUgxMi42M001IDE3LjVMOCAxNC41SDZWMkg0VjE0LjVIMkw1IDE3LjVNMjIgMjBMMTkgMTdWMTlINi41VjIxSDE5VjIzTDIyIDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRSb3RhdGlvbk5vbmUgPSBcIk0yMC41LDE4TDE3LjUsMjFWMTlINVYxN0gxNy41VjE1TDIwLjUsMThNMTAuMTMsMTBIMTMuODhMMTIsNC45N0wxMC4xMywxME0xMi43NSwzTDE3LjUsMTRIMTUuNDJMMTQuNSwxMS44MUg5LjVMOC41OCwxNEg2LjVMMTEuMjUsM0gxMi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Um90YXRpb25VcCA9IFwiTTMgMTJWMTMuNUwxNCAxOC4yNVYxNi4xNUwxMS44IDE1LjI1VjEwLjI1TDE0IDkuMzVWNy4yNUwzIDEyTTEwIDE0LjYyTDUgMTIuNzVMMTAgMTAuODhWMTQuNjJNMTggNC4yNUwxNSA3LjI1SDE3VjE5Ljc1SDE5VjcuMjVIMjFMMTggNC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Um90YXRpb25WZXJ0aWNhbCA9IFwiTTE1Ljc1IDVIMTQuMjVMOS41IDE2SDExLjZMMTIuNSAxMy44SDE3LjVMMTguNCAxNkgyMC41TDE1Ljc1IDVNMTMuMTMgMTJMMTUgN0wxNi44NyAxMkgxMy4xM002IDE5Ljc1TDkgMTYuNzVIN1Y0LjI1SDVWMTYuNzVIM0w2IDE5Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRWYXJpYW50ID0gXCJNOS42LDE0TDEyLDcuN0wxNC40LDE0TTExLDVMNS41LDE5SDcuN0w4LjgsMTZIMTVMMTYuMSwxOUgxOC4zTDEzLDVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0VGV4dFZhcmlhbnRPdXRsaW5lID0gXCJNMTEgM0MxMC4xOCAzIDkuNDQgMy41IDkuMTQgNC4yN0wzLjY0IDE4LjI3QzMuMTIgMTkuNTggNC4wOSAyMSA1LjUgMjFINy43NUM4LjU5IDIxIDkuMzMgMjAuNSA5LjYyIDE5LjdMMTAuMjYgMThIMTMuNzRMMTQuMzggMTkuN0MxNC42NyAyMC41IDE1LjQyIDIxIDE2LjI1IDIxSDE4LjVDMTkuOTEgMjEgMjAuODggMTkuNTggMjAuMzYgMTguMjdMMTQuODYgNC4yN0MxNC41NiAzLjUgMTMuODIgMyAxMyAzTTExIDVIMTNMMTguNSAxOUgxNi4yNUwxNS4xMiAxNkg4Ljg3TDcuNzUgMTlINS41TTEyIDcuNjdMOS42MiAxNEgxNC4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0V3JhcHBpbmdDbGlwID0gXCJNNywyMUg1VjNIN1YyMU0xNywzVjExSDlWMTNIMTdWMjFIMTlWM0gxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0V3JhcHBpbmdPdmVyZmxvdyA9IFwiTTcsMjFINVYzSDdWMjFNMTQsM0gxMlY5SDE0VjNNMTQsMTVIMTJWMjFIMTRWMTVNMTksMTJMMTYsOVYxMUg5VjEzSDE2VjE1TDE5LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRXcmFwcGluZ1dyYXAgPSBcIk03LDIxSDVWM0g3VjIxTTE5LDNIMTdWMjFIMTlWM00xMyw4SDlWMTBIMTIuOTdDMTMuMTQsMTAgMTQsMTAuMTYgMTQsMTJDMTQsMTMuODQgMTMuMTQsMTQgMTMsMTRIMTFWMTJMOCwxNUwxMSwxOFYxNkgxM0MxNC4wNCwxNiAxNiwxNS4xNiAxNiwxMkMxNiw4Ljg0IDE0LjA0LDggMTMsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0Ym94ID0gXCJNMjEsN1YzSDE3VjRIN1YzSDNWN0g0VjE3SDNWMjFIN1YyMEgxN1YyMUgyMVYxN0gyMFY3SDIxTTE4LDRIMjBWNkgxOFY0TTQsNEg2VjZINFY0TTYsMjBINFYxOEg2VjIwTTIwLDIwSDE4VjE4SDIwVjIwTTE4LDE3SDE3VjE4SDdWMTdINlY3SDdWNkgxN1Y3SDE4VjE3TTE2LDhWMTBIMTNWMTZIMTFWMTBIOFY4SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRleHRkaXJlY3Rpb25MVG9SID0gXCJNMjEsMThMMTcsMTRWMTdINVYxOUgxN1YyMk05LDEwVjE1SDExVjRIMTNWMTVIMTVWNEgxN1YySDlBNCw0IDAgMCwwIDUsNkE0LDQgMCAwLDAgOSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3JtYXRUZXh0ZGlyZWN0aW9uUlRvTCA9IFwiTTgsMTdWMTRMNCwxOEw4LDIyVjE5SDIwVjE3TTEwLDEwVjE1SDEyVjRIMTRWMTVIMTZWNEgxOFYySDEwQTQsNCAwIDAsMCA2LDZBNCw0IDAgMCwwIDEwLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFRpdGxlID0gXCJNNSw0VjdIMTAuNVYxOUgxMy41VjdIMTlWNEg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFVuZGVybGluZSA9IFwiTTUsMjFIMTlWMTlINVYyMU0xMiwxN0E2LDYgMCAwLDAgMTgsMTFWM0gxNS41VjExQTMuNSwzLjUgMCAwLDEgMTIsMTQuNUEzLjUsMy41IDAgMCwxIDguNSwxMVYzSDZWMTFBNiw2IDAgMCwwIDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFZlcnRpY2FsQWxpZ25Cb3R0b20gPSBcIk0xNiwxM0gxM1YzSDExVjEzSDhMMTIsMTdMMTYsMTNNNCwxOVYyMUgyMFYxOUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFZlcnRpY2FsQWxpZ25DZW50ZXIgPSBcIk04LDE5SDExVjIzSDEzVjE5SDE2TDEyLDE1TDgsMTlNMTYsNUgxM1YxSDExVjVIOEwxMiw5TDE2LDVNNCwxMVYxM0gyMFYxMUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFZlcnRpY2FsQWxpZ25Ub3AgPSBcIk04LDExSDExVjIxSDEzVjExSDE2TDEyLDdMOCwxMU00LDNWNUgyMFYzSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0V3JhcElubGluZSA9IFwiTTgsN0wxMywxN0gzTDgsN00zLDNIMjFWNUgzVjNNMjEsMTVWMTdIMTRWMTVIMjFNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFdyYXBTcXVhcmUgPSBcIk0xMiw3TDE3LDE3SDdMMTIsN00zLDNIMjFWNUgzVjNNMyw3SDZWOUgzVjdNMjEsN1Y5SDE4VjdIMjFNMywxMUg2VjEzSDNWMTFNMjEsMTFWMTNIMThWMTFIMjFNMywxNUg2VjE3SDNWMTVNMjEsMTVWMTdIMThWMTVIMjFNMywxOUgyMVYyMUgzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvcm1hdFdyYXBUaWdodCA9IFwiTTEyLDdMMTcsMTdIN0wxMiw3TTMsM0gyMVY1SDNWM00zLDdIOVY5SDNWN00yMSw3VjlIMTVWN0gyMU0zLDExSDdWMTNIM1YxMU0yMSwxMVYxM0gxN1YxMUgyMU0zLDE1SDZWMTdIM1YxNU0yMSwxNVYxN0gxOFYxNUgyMU0zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ybWF0V3JhcFRvcEJvdHRvbSA9IFwiTTEyLDdMMTcsMTdIN0wxMiw3TTMsM0gyMVY1SDNWM00zLDE5SDIxVjIxSDNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9ydW0gPSBcIk0xNywxMlYzQTEsMSAwIDAsMCAxNiwySDNBMSwxIDAgMCwwIDIsM1YxN0w2LDEzSDE2QTEsMSAwIDAsMCAxNywxMk0yMSw2SDE5VjE1SDZWMTdBMSwxIDAgMCwwIDcsMThIMThMMjIsMjJWN0ExLDEgMCAwLDAgMjEsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3J1bU91dGxpbmUgPSBcIk0xNSw0VjExSDUuMTdMNCwxMi4xN1Y0SDE1TTE2LDJIM0ExLDEgMCAwLDAgMiwzVjE3TDYsMTNIMTZBMSwxIDAgMCwwIDE3LDEyVjNBMSwxIDAgMCwwIDE2LDJNMjEsNkgxOVYxNUg2VjE3QTEsMSAwIDAsMCA3LDE4SDE4TDIyLDIyVjdBMSwxIDAgMCwwIDIxLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9yd2FyZCA9IFwiTTEyLDhWNEwyMCwxMkwxMiwyMFYxNkg0VjhIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRm9yd2FyZGJ1cmdlciA9IFwiTTE5LDEzSDNWMTFIMTlMMTUsN0wxNi40LDUuNkwyMi44LDEyTDE2LjQsMTguNEwxNSwxN0wxOSwxM00zLDZIMTNWOEgzVjZNMTMsMTZWMThIM1YxNkgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGb3VudGFpbiA9IFwiTTcuNSwyQzQuNDcsMiAyLDQuNDYgMiw3LjVWNy41TDIsOEg0VjcuNUEzLjUsMy41IDAgMCwxIDcuNSw0QzksNCAxMC4yNiw0LjkzIDEwLjc2LDYuMjRDMTAuMzcsNi4wOCA5Ljk1LDYgOS41LDZDOC4xMSw2IDYuOSw2LjgyIDYuMzQsOEw4LjA4LDlDOC4yOSw4LjQyIDguODUsOCA5LjUsOEExLjUsMS41IDAgMCwxIDExLDkuNVYxMUgxM1Y5LjVBMS41LDEuNSAwIDAsMSAxNC41LDhDMTUuMTYsOCAxNS43MSw4LjQyIDE1LjkyLDlMMTcuNjYsOEMxNy4xLDYuODIgMTUuOSw2IDE0LjUsNkMxNC4wNSw2IDEzLjYzLDYuMDggMTMuMjQsNi4yNEMxMy43NCw0LjkzIDE1LDQgMTYuNSw0QTMuNSwzLjUgMCAwLDEgMjAsNy41VjhIMjJWNy41SDIyQTUuNSw1LjUgMCAwLDAgMTYuNSwyQzE0LjY0LDIgMTMsMi45MyAxMiw0LjM0QzExLDIuOTMgOS4zNiwyIDcuNSwyTTYsMTJWMTRINy40MkM3LjkyLDE1LjE1IDguODUsMTYuMDcgMTAsMTYuNTdDMTAsMTcuMzggMTAsMTguMTkgMTAsMTlIMkMyLDE5IDIuODIsMjAuMjMgMy40MSwyMS4xMUMzLjc4LDIxLjY3IDQuNCwyMiA1LjA3LDIySDE4LjkzQzE5LjYsMjIgMjAuMjIsMjEuNjcgMjAuNTksMjEuMTFMMjIsMTlIMTRDMTQsMTguMTkgMTQsMTcuMzggMTQsMTYuNTdDMTUuMTUsMTYuMDcgMTYuMDgsMTUuMTUgMTYuNTgsMTRIMThWMTJINlpcIjtcclxuZXhwb3J0IHZhciBtZGlGb3VudGFpblBlbiA9IFwiTTYuOTUsMTQuOTNMMTEuMTksOS4yN0wxOS42OCwyLjJDMjAuMDcsMS44MSAyMC43MiwxLjgxIDIxLjA5LDIuMkwyMS44LDIuOTFDMjIuMTksMy4yOCAyMi4xOSwzLjkzIDIxLjgsNC4zMkwxNC43MywxMi44MUw5LjA3LDE3LjA1TDYuOTUsMTQuOTNNOC4zNiwxNy43Nkw2LjI0LDE1LjY0TDMuNDEsMTcuMDVMMiwyMS4yOUw0LjEyLDE5LjE3QzQuMzIsMTkgNC42MywxOSA0LjgzLDE5LjE3QzUsMTkuMzcgNSwxOS42OCA0LjgzLDE5Ljg4TDIuNzEsMjJMNi45NSwyMC41OUw4LjM2LDE3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZvdW50YWluUGVuVGlwID0gXCJNMTUuNTQsMy41TDIwLjUsOC40N0wxOS4wNyw5Ljg4TDE0LjEyLDQuOTNMMTUuNTQsMy41TTMuNSwxOS43OEwxMCwxMy4zMUM5LjksMTMgOS45NywxMi42MSAxMC4yMywxMi4zNUMxMC42MiwxMS45NiAxMS4yNiwxMS45NiAxMS42NSwxMi4zNUMxMi4wNCwxMi43NSAxMi4wNCwxMy4zOCAxMS42NSwxMy43N0MxMS4zOSwxNC4wMyAxMSwxNC4xIDEwLjY5LDE0TDQuMjIsMjAuNUwxNC44MywxNi45NUwxOC4zNiwxMC41OUwxMy40Miw1LjY0TDcuMDUsOS4xN0wzLjUsMTkuNzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJlZWJzZCA9IFwiTTIuNjksMkMzLjU0LDEuOTUgNi4wOCwzLjE2IDYuMTMsMy4xOUM0Ljg0LDQgMy43NCw1LjA5IDIuOTEsNi4zOEMyLjA5LDQuODEgMS4zNCwyLjkxIDIsMi4yNUMyLjE3LDIuMDggMi40LDIgMi42OSwyTTIwLjg0LDIuMTNDMjEuMjUsMi4wOCAyMS41OCwyLjE0IDIxLjc4LDIuMzRDMjIuODUsMy40MiAxOS44OCw4LjE1IDE5LjM4LDguNjZDMTguODcsOS4xNiAxNy41Nyw4LjcgMTYuNSw3LjYzQzE1LjQzLDYuNTUgMTQuOTcsNS4yNiAxNS40Nyw0Ljc1QzE1Ljg4LDQuMzQgMTkuMDksMi4zIDIwLjg0LDIuMTNNMTIsMi41NkMxMy4yOSwyLjU2IDE0LjUzLDIuODIgMTUuNjYsMy4yOEMxNS4xNywzLjYgMTQuODEsMy44NSAxNC42OSwzLjk3QzEzLjcsNC45NiAxNC4xNCw2LjgzIDE1LjcyLDguNDFDMTYuNyw5LjM4IDE3Ljg0LDkuOTcgMTguNzgsOS45N0MxOS40Niw5Ljk3IDE5LjkyLDkuNjggMjAuMTYsOS40NEMyMC4zMyw5LjI3IDIwLjYsOC44OCAyMC45MSw4LjQxQzIxLjQyLDkuNTkgMjEuNjksMTAuODggMjEuNjksMTIuMjVDMjEuNjksMTcuNjEgMTcuMzYsMjEuOTcgMTIsMjEuOTdDNi42NCwyMS45NyAyLjMxLDE3LjYxIDIuMzEsMTIuMjVDMi4zMSw2Ljg5IDYuNjQsMi41NiAxMiwyLjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyA9IFwiTTE4LDE1SDZMMiwxOVYzQTEsMSAwIDAsMSAzLDJIMThBMSwxIDAgMCwxIDE5LDNWMTRBMSwxIDAgMCwxIDE4LDE1TTIzLDlWMjNMMTksMTlIOEExLDEgMCAwLDEgNywxOFYxN0gyMVY4SDIyQTEsMSAwIDAsMSAyMyw5TTguMTksNEM3LjMyLDQgNi42Miw0LjIgNi4wOCw0LjU5QzUuNTYsNSA1LjMsNS41NyA1LjMxLDYuMzZMNS4zMiw2LjM5SDcuMjVDNy4yNiw2LjA5IDcuMzUsNS44NiA3LjUzLDUuN0M3LjcxLDUuNTUgNy45Myw1LjQ3IDguMTksNS40N0M4LjUsNS40NyA4Ljc2LDUuNTcgOC45NCw1Ljc1QzkuMTIsNS45NCA5LjIsNi4yIDkuMiw2LjVDOS4yLDYuODIgOS4xMyw3LjA5IDguOTcsNy4zMkM4LjgzLDcuNTUgOC42Miw3Ljc1IDguMzYsNy45MUM3Ljg1LDguMjUgNy41LDguNTUgNy4zMSw4LjgyQzcuMTEsOS4wOCA3LDkuNSA3LDEwSDlDOSw5LjY5IDkuMDQsOS40NCA5LjEzLDkuMjZDOS4yMiw5LjA4IDkuMzksOC45IDkuNjQsOC43NEMxMC4wOSw4LjUgMTAuNDYsOC4yMSAxMC43NSw3LjgxQzExLjA0LDcuNDEgMTEuMTksNyAxMS4xOSw2LjVDMTEuMTksNS43NCAxMC45Miw1LjEzIDEwLjM4LDQuNjhDOS44NSw0LjIzIDkuMTIsNCA4LjE5LDRNNywxMVYxM0g5VjExSDdNMTMsMTNIMTVWMTFIMTNWMTNNMTMsNFYxMEgxNVY0SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZSA9IFwiTTcsMkgxN0EyLDIgMCAwLDEgMTksNFY5SDVWNEEyLDIgMCAwLDEgNywyTTE5LDE5QTIsMiAwIDAsMSAxNywyMVYyMkgxNVYyMUg5VjIySDdWMjFBMiwyIDAgMCwxIDUsMTlWMTBIMTlWMTlNOCw1VjdIMTBWNUg4TTgsMTJWMTVIMTBWMTJIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VBbGVydCA9IFwiTTUgMkgxNUMxNi4xMSAyIDE3IDIuOSAxNyA0VjlIM1Y0QzMgMi45IDMuOSAyIDUgMk0xNyAxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUg3VjIySDVWMjFDMy45IDIxIDMgMjAuMTEgMyAxOVYxMEgxN1YxOU02IDVWN0g4VjVINk02IDEyVjE1SDhWMTJINk0xOSAxNUgyMVYxN0gxOVYxNU0xOSA3SDIxVjEzSDE5VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlQWxlcnRPdXRsaW5lID0gXCJNNyAyMVYyMkg1VjIxQzMuOSAyMSAzIDIwLjExIDMgMTlWNEMzIDIuOSAzLjkgMiA1IDJIMTVDMTYuMTEgMiAxNyAyLjkgMTcgNFYxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUg3TTUgNFY5SDE1VjRINU01IDE5SDE1VjExSDVWMTlNNiAxMkg4VjE1SDZWMTJNNiA2SDhWOEg2VjZNMTkgMTVIMjFWMTdIMTlWMTVNMTkgN0gyMVYxM0gxOVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZUJvdHRvbSA9IFwiTTcsMkEyLDIgMCAwLDAgNSw0VjE5QTIsMiAwIDAsMCA3LDIxVjIySDlWMjFIMTVWMjJIMTdWMjFBMiwyIDAgMCwwIDE5LDE5VjRBMiwyIDAgMCwwIDE3LDJIN004LDZIMTBWOEg4VjZNNywxMUgxN1YxOUg3VjExTTgsMTJWMTVIMTBWMTJIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsID0gXCJNMTcgMkg3QzUuOSAyIDUgMi45IDUgNFYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTguMTEgMjEgMTkgMjAuMTEgMTkgMTlWNEMxOSAyLjkgMTguMTEgMiAxNyAyTTEwIDE1SDhWMTBIMTBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlSW5kdXN0cmlhbEFsZXJ0ID0gXCJNMTUgMkg1QzMuOSAyIDMgMi45IDMgNFYxOUMzIDIwLjExIDMuOSAyMSA1IDIxVjIySDdWMjFIMTNWMjJIMTVWMjFDMTYuMTEgMjEgMTcgMjAuMTEgMTcgMTlWNEMxNyAyLjkgMTYuMTEgMiAxNSAyTTggMTVINlYxMEg4VjE1TTIxIDdWMTNIMTlWN0gyMU0xOSAxNUgyMVYxN0gxOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsQWxlcnRPdXRsaW5lID0gXCJNOCAxNUg2VjEwSDhWMTVNMTcgNFYxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUg3VjIySDVWMjFDMy45IDIxIDMgMjAuMTEgMyAxOVY0QzMgMi45IDMuOSAyIDUgMkgxNUMxNi4xMSAyIDE3IDIuOSAxNyA0TTE1IDRINVYxOUgxNVY0TTE5IDE3SDIxVjE1SDE5VjE3TTE5IDdWMTNIMjFWN0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsT2ZmID0gXCJNMTkgMTUuOEw1LjcgMi41QzYuMDUgMi4xOSA2LjUgMiA3IDJIMTdDMTguMTEgMiAxOSAyLjkgMTkgNFYxNS44TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE4LjQ2IDIwLjM1QzE4LjEgMjAuNzUgMTcuNTggMjEgMTcgMjFWMjJIMTVWMjFIOVYyMkg3VjIxQzUuOSAyMSA1IDIwLjExIDUgMTlWNi44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTEwIDExLjg5TDguMTEgMTBIOFYxNUgxMFYxMS44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VJbmR1c3RyaWFsT2ZmT3V0bGluZSA9IFwiTTcuMiA0TDUuNyAyLjVDNi4wNSAyLjE5IDYuNSAyIDcgMkgxN0MxOC4xMSAyIDE5IDIuOSAxOSA0VjE1LjhMMTcgMTMuOFY0SDcuMk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOC40NiAyMC4zNUMxOC4xIDIwLjc1IDE3LjU4IDIxIDE3IDIxVjIySDE1VjIxSDlWMjJIN1YyMUM1LjkgMjEgNSAyMC4xMSA1IDE5VjYuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0xNyAxOC44OUwxMCAxMS44OVYxNUg4VjEwSDguMTFMNyA4Ljg5VjE5SDE3VjE4Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZUluZHVzdHJpYWxPdXRsaW5lID0gXCJNMTcgMkg3QzUuOSAyIDUgMi45IDUgNFYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTguMTEgMjEgMTkgMjAuMTEgMTkgMTlWNEMxOSAyLjkgMTguMTEgMiAxNyAyTTE3IDE5SDdWNEgxN1YxOU0xMCAxNUg4VjEwSDEwVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNSA2Ljg5VjlINy4xMUw4LjExIDEwSDVWMTlDNSAyMC4xMSA1LjkgMjEgNyAyMVYyMkg5VjIxSDE1VjIySDE3VjIxQzE3LjU4IDIxIDE4LjEgMjAuNzUgMTguNDYgMjAuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTAgMTVIOFYxMkgxMFYxNU0xOSAxNS44TDEzLjIgMTBIMTlWMTUuOE04LjIgNUw1LjcgMi41QzYuMDUgMi4xOSA2LjUgMiA3IDJIMTdDMTguMTEgMiAxOSAyLjkgMTkgNFY5SDEyLjJMMTAgNi44VjVIOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZU9mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDUgNi44OVYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTcuNTggMjEgMTguMSAyMC43NSAxOC40NiAyMC4zNUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xNyAxOUg3VjExSDkuMTFMMTcgMTguODlWMTlNNy4yIDRMNS43IDIuNUM2LjA1IDIuMTkgNi41IDIgNyAySDE3QzE4LjExIDIgMTkgMi45IDE5IDRWMTUuOEwxNyAxMy44VjExSDE0LjJMMTIuMiA5SDE3VjRINy4yTTggMTJIMTBWMTVIOFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VPdXRsaW5lID0gXCJNOSwyMVYyMkg3VjIxQTIsMiAwIDAsMSA1LDE5VjRBMiwyIDAgMCwxIDcsMkgxN0EyLDIgMCAwLDEgMTksNFYxOUEyLDIgMCAwLDEgMTcsMjFWMjJIMTVWMjFIOU03LDRWOUgxN1Y0SDdNNywxOUgxN1YxMUg3VjE5TTgsMTJIMTBWMTVIOFYxMk04LDZIMTBWOEg4VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlVG9wID0gXCJNOCw4VjZIMTBWOEg4TTcsMkgxN0EyLDIgMCAwLDEgMTksNFYxOUEyLDIgMCAwLDEgMTcsMjFWMjJIMTVWMjFIOVYyMkg3VjIxQTIsMiAwIDAsMSA1LDE5VjRBMiwyIDAgMCwxIDcsMk03LDRWOUgxN1Y0SDdNOCwxMlYxNUgxMFYxMkg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZVZhcmlhbnQgPSBcIk0xOSA0VjE5QzE5IDIwLjExIDE4LjExIDIxIDE3IDIxVjIySDE1VjIxSDEyLjVWMkgxN0MxOC4xMSAyIDE5IDIuOSAxOSA0TTcgMkgxMS41VjIxSDlWMjJIN1YyMUM1LjkgMjEgNSAyMC4xMSA1IDE5VjRDNSAyLjkgNS45IDIgNyAyTTEwIDEwSDdWMTRIMTBWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJpZGdlVmFyaWFudEFsZXJ0ID0gXCJNMTcgNFYxOUMxNyAyMC4xMSAxNi4xMSAyMSAxNSAyMVYyMkgxM1YyMUgxMC41VjJIMTVDMTYuMTEgMiAxNyAyLjkgMTcgNE01IDJIOS41VjIxSDdWMjJINVYyMUMzLjkgMjEgMyAyMC4xMSAzIDE5VjRDMyAyLjkgMy45IDIgNSAyTTggMTBINVYxNEg4VjEwTTE5IDdWMTNIMjFWN0gxOU0xOSAxN0gyMVYxNUgxOVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VWYXJpYW50QWxlcnRPdXRsaW5lID0gXCJNMTUgMkg1QzMuOSAyIDMgMi45IDMgNFYxOUMzIDIwLjExIDMuOSAyMSA1IDIxVjIySDdWMjFIMTNWMjJIMTVWMjFDMTYuMTEgMjEgMTcgMjAuMTEgMTcgMTlWNEMxNyAyLjkgMTYuMTEgMiAxNSAyTTkgMTlINVYxNEg4VjEwSDVWNEg5VjE5TTE1IDE5SDExVjRIMTVWMTlNMTkgMTVIMjFWMTdIMTlWMTVNMjEgN1YxM0gxOVY3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZVZhcmlhbnRPZmYgPSBcIk0yLjM5IDEuNzNMMS4xMSAzTDUgNi44OVYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTEuNVYxMy4zOUwxMi41IDE0LjM5VjIxSDE1VjIySDE3VjIxQzE3LjU4IDIxIDE4LjEgMjAuNzUgMTguNDYgMjAuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMi4zOSAxLjczTTEwIDE0SDdWMTBIOC4xMUwxMCAxMS44OVYxNE0xOSAxNS44TDEyLjUgOS4zVjJIMTdDMTguMTEgMiAxOSAyLjkgMTkgNFYxNS44TTExLjUgOC4zTDUuNyAyLjVDNi4wNSAyLjE5IDYuNSAyIDcgMkgxMS41VjguM1pcIjtcclxuZXhwb3J0IHZhciBtZGlGcmlkZ2VWYXJpYW50T2ZmT3V0bGluZSA9IFwiTTcuMiA0TDUuNyAyLjVDNi4wNSAyLjE5IDYuNSAyIDcgMkgxN0MxOC4xMSAyIDE5IDIuOSAxOSA0VjE1LjhMMTcgMTMuOFY0SDEzVjkuOEwxMSA3LjhWNEg3LjJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTguNDYgMjAuMzVDMTguMSAyMC43NSAxNy41OCAyMSAxNyAyMVYyMkgxNVYyMUg5VjIySDdWMjFDNS45IDIxIDUgMjAuMTEgNSAxOVY2Ljg5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZNNyAxMEg4LjExTDcgOC44OVYxME0xMSAxMi44OUwxMCAxMS44OVYxNEg3VjE5SDExVjEyLjg5TTE3IDE4Ljg5TDEzIDE0Ljg5VjE5SDE3VjE4Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZyaWRnZVZhcmlhbnRPdXRsaW5lID0gXCJNMTcgMkg3QzUuOSAyIDUgMi45IDUgNFYxOUM1IDIwLjExIDUuOSAyMSA3IDIxVjIySDlWMjFIMTVWMjJIMTdWMjFDMTguMTEgMjEgMTkgMjAuMTEgMTkgMTlWNEMxOSAyLjkgMTguMTEgMiAxNyAyTTcgMTlWMTRIMTBWMTBIN1Y0SDExVjE5SDdNMTcgMTlIMTNWNEgxN1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGcnVpdENoZXJyaWVzID0gXCJNMTYgMTNIMTUuNUMxNC44IDExLjcgMTQuMyAxMCAxMy44IDguM0wxNC43IDkuMkMxNy40IDExLjMgMTkuOCAxMC45IDE5LjggMTAuOVMyMC41IDcuMSAxNy44IDUuMUMxNS41IDMuMyAxMy40IDMuMyAxMi44IDMuNEMxMi43IDIuOCAxMi43IDIuMyAxMi42IDEuOUwxMS4yIDJDMTEuMiA1LjIgOC41IDExLjEgNy42IDEzQzUuNiAxMy4yIDQgMTQuOSA0IDE3QzQgMTkuMiA1LjggMjEgOCAyMUM5LjEgMjEgMTAgMjAuNiAxMC43IDE5LjlDMTAuMyAxOSAxMCAxOCAxMCAxN1MxMC4zIDE1IDEwLjcgMTQuMUMxMC4zIDEzLjcgOS43IDEzLjQgOS4yIDEzLjJDOS45IDExLjcgMTEuMSA5IDExLjkgNi40QzEyLjMgOC43IDEzLjEgMTEuNCAxNC4xIDEzLjVDMTIuOSAxNC4yIDEyIDE1LjUgMTIgMTdDMTIgMTkuMiAxMy44IDIxIDE2IDIxUzIwIDE5LjIgMjAgMTcgMTguMiAxMyAxNiAxM004IDE1LjVDNy4yIDE1LjUgNi41IDE2LjIgNi41IDE3SDUuNUM1LjUgMTUuNiA2LjYgMTQuNSA4IDE0LjVWMTUuNU0xNiAxNS41QzE1LjIgMTUuNSAxNC41IDE2LjIgMTQuNSAxN0gxMy41QzEzLjUgMTUuNiAxNC42IDE0LjUgMTYgMTQuNVYxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0Q2hlcnJpZXNPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w4LjcgMTAuNkM4LjMgMTEuNiA3LjkgMTIuNSA3LjYgMTNDNS42IDEzLjIgNCAxNC45IDQgMTdDNCAxOS4yIDUuOCAyMSA4IDIxQzkuMSAyMSAxMCAyMC42IDEwLjcgMTkuOUMxMC4zIDE5IDEwIDE4IDEwIDE3UzEwLjMgMTUgMTAuNyAxNC4xQzEwLjMgMTMuNyA5LjcgMTMuNCA5LjIgMTMuMkM5LjQgMTIuOCA5LjYgMTIuMyA5LjkgMTEuN0wxMi44IDE0LjZDMTIuMyAxNS4zIDEyIDE2LjEgMTIgMTdDMTIgMTkuMiAxMy44IDIxIDE2IDIxQzE2LjkgMjEgMTcuNyAyMC43IDE4LjMgMjAuMkwyMC44IDIyLjdMMjIuMSAyMS41TTggMTUuNUM3LjIgMTUuNSA2LjUgMTYuMiA2LjUgMTdINS41QzUuNSAxNS42IDYuNiAxNC41IDggMTQuNVYxNS41TTE0LjUgMTdIMTMuNUMxMy41IDE2LjUgMTMuNiAxNi4xIDEzLjggMTUuN0wxNC42IDE2LjVDMTQuNSAxNi43IDE0LjUgMTYuOCAxNC41IDE3TTIwIDE2LjhMMTYuMiAxM0MxOC4yIDEzLjEgMTkuOSAxNC44IDIwIDE2LjhNMTEuMyA4LjFMMTAuMSA2LjlDMTAuNyA1LjEgMTEuMiAzLjMgMTEuMiAyTDEyLjYgMS45QzEyLjcgMi4zIDEyLjcgMi44IDEyLjggMy40QzEzLjQgMy4zIDE1LjUgMy4zIDE3LjggNS4xQzIwLjUgNy4xIDE5LjggMTAuOSAxOS44IDEwLjlTMTcuNCAxMS4zIDE0LjcgOS4yTDEzLjggOC4zQzE0LjEgOS41IDE0LjUgMTAuNyAxNC45IDExLjdMMTIuNiA5LjRDMTIuMyA4LjQgMTIuMSA3LjQgMTEuOSA2LjRDMTEuNyA3IDExLjUgNy42IDExLjMgOC4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0Q2l0cnVzID0gXCJNOSAxNS45QzYuOSAxNS43IDUuMSAxNC45IDQgMTMuNkMzLjIgMTMuNiAyLjQgMTMuMSAyLjEgMTIuM0MxLjggMTEuNSAyLjEgMTAuNyAyLjggMTAuMkMyLjkgNy4yIDUuNiA0LjEgOS43IDIuN0MxMy44IDEuMyAxOCAyLjEgMjAgNC40QzIwLjggNC40IDIxLjYgNC45IDIxLjkgNS43QzIyLjIgNi41IDIxLjkgNy4zIDIxLjIgNy44QzIxLjIgOC42IDIxIDkuNCAyMC42IDEwLjJDMTkuNCA5LjUgMTggOSAxNi41IDlDMTIuNiA5IDkuMyAxMiA5IDE1LjlNMjIgMTYuNUMyMiAxOS41IDE5LjUgMjIgMTYuNSAyMlMxMSAxOS41IDExIDE2LjUgMTMuNSAxMSAxNi41IDExIDIyIDEzLjUgMjIgMTYuNU0xMy4zIDE4TDE1LjYgMTYuNUwxMy4zIDE1QzEzLjEgMTUuNSAxMyAxNiAxMyAxNi41UzEzLjEgMTcuNSAxMy4zIDE4TTE2IDE3LjRMMTMuOSAxOC44QzE0LjQgMTkuNCAxNS4yIDE5LjggMTYgMjBWMTcuNE0xNiAxMy4xQzE1LjIgMTMuMiAxNC40IDEzLjYgMTMuOSAxNC4zTDE2IDE1LjdWMTMuMU0xNyAxNS42TDE5LjEgMTQuMkMxOC42IDEzLjYgMTcuOCAxMy4yIDE3IDEzVjE1LjZNMTkuMSAxOC44TDE3IDE3LjRWMTkuOUMxNy44IDE5LjggMTguNiAxOS40IDE5LjEgMTguOE0yMCAxNi41QzIwIDE2IDE5LjkgMTUuNSAxOS43IDE1TDE3LjQgMTYuNUwxOS43IDE4QzE5LjkgMTcuNSAyMCAxNyAyMCAxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0Q2l0cnVzT2ZmID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNC40IDYuM0MzLjQgNy41IDIuOSA4LjkgMi44IDEwLjJDMi4xIDEwLjcgMS44IDExLjUgMi4xIDEyLjNDMi40IDEzLjEgMy4yIDEzLjYgNCAxMy42QzUuMSAxNC45IDYuOSAxNS43IDkgMTUuOUM5LjEgMTQuNSA5LjYgMTMuMyAxMC4zIDEyLjJMMTEuOCAxMy43QzExLjMgMTQuNSAxMSAxNS41IDExIDE2LjVDMTEgMTkuNSAxMy41IDIyIDE2LjUgMjJDMTcuNSAyMiAxOC41IDIxLjcgMTkuMyAyMS4yTDIwLjggMjIuN0wyMi4xIDIxLjVNMTMgMTYuNUMxMyAxNiAxMy4xIDE1LjYgMTMuMyAxNS4xTDE1IDE2LjhMMTMuMyAxOEMxMy4xIDE3LjUgMTMgMTcgMTMgMTYuNU0xMy45IDE4LjhMMTUuNyAxNy42TDE2IDE3LjlWMjBDMTUuMiAxOS44IDE0LjQgMTkuNCAxMy45IDE4LjhNMTcgMTkuOVYxOC45TDE3LjggMTkuN0MxNy41IDE5LjggMTcuMyAxOS45IDE3IDE5LjlNMjAgMTYuOFYxNi41QzIwIDE2IDE5LjkgMTUuNSAxOS43IDE1TDE4LjggMTUuNkwxOC4xIDE0LjlMMTkuMSAxNC4yQzE4LjYgMTMuNiAxNy44IDEzLjIgMTcgMTNWMTMuOEwxNC42IDExLjRDMTUuMiAxMS4yIDE1LjkgMTEgMTYuNSAxMUMxOS41IDExIDIyIDEzLjUgMjIgMTYuNUMyMiAxNy4yIDIxLjkgMTcuOCAyMS42IDE4LjRMMjAgMTYuOE0xMyA5LjhMNy4xIDMuOUM3LjkgMy40IDguOCAzIDkuNyAyLjdDMTMuOCAxLjMgMTggMi4xIDIwIDQuNEMyMC44IDQuNCAyMS42IDQuOSAyMS45IDUuN0MyMi4yIDYuNSAyMS45IDcuMyAyMS4yIDcuOEMyMS4yIDguNiAyMSA5LjQgMjAuNiAxMC4yQzE5LjQgOS41IDE4IDkgMTYuNSA5QzE1LjMgOSAxNC4xIDkuMyAxMyA5LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnJ1aXRHcmFwZXMgPSBcIk0xNCAxMkMxNCAxMy4xIDEzLjEgMTQgMTIgMTRTMTAgMTMuMSAxMCAxMiAxMC45IDEwIDEyIDEwIDE0IDEwLjkgMTQgMTJNNyAxMEM1LjkgMTAgNSAxMC45IDUgMTJTNS45IDE0IDcgMTQgOSAxMy4xIDkgMTIgOC4xIDEwIDcgMTBNMTcgMTBDMTUuOSAxMCAxNSAxMC45IDE1IDEyUzE1LjkgMTQgMTcgMTQgMTkgMTMuMSAxOSAxMiAxOC4xIDEwIDE3IDEwTTE0LjUgNkMxMy40IDYgMTIuNSA2LjkgMTIuNSA4UzEzLjQgMTAgMTQuNSAxMCAxNi41IDkuMSAxNi41IDggMTUuNiA2IDE0LjUgNk05LjUgNkM4LjQgNiA3LjUgNi45IDcuNSA4UzguNCAxMCA5LjUgMTAgMTEuNSA5LjEgMTEuNSA4IDEwLjYgNiA5LjUgNk0xNC41IDE0QzEzLjQgMTQgMTIuNSAxNC45IDEyLjUgMTZTMTMuNCAxOCAxNC41IDE4IDE2LjUgMTcuMSAxNi41IDE2IDE1LjYgMTQgMTQuNSAxNE05LjUgMTRDOC40IDE0IDcuNSAxNC45IDcuNSAxNlM4LjQgMTggOS41IDE4IDExLjUgMTcuMSAxMS41IDE2IDEwLjYgMTQgOS41IDE0TTEyIDE4QzEwLjkgMTggMTAgMTguOSAxMCAyMFMxMC45IDIyIDEyIDIyIDE0IDIxLjEgMTQgMjAgMTMuMSAxOCAxMiAxOE0xNC40IDIuMkwxMy42IDFDMTEuNCAyIDExLjIgNS42IDExLjIgNkgxMi43QzEyLjggNS4yIDEzLjEgMi43IDE0LjQgMi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0R3JhcGVzT3V0bGluZSA9IFwiTTE5IDEyQzE5IDEwLjYxIDE4LjA1IDkuNDcgMTYuNzggOS4xMkMxNi45MiA4Ljc4IDE3IDguNCAxNyA4QzE3IDYuMzQgMTUuNjYgNSAxNCA1QzEzLjU3IDUgMTMuMTcgNS4xIDEyLjgxIDUuMjZDMTMgNC4xOSAxMy4zOSAyLjU5IDE0LjQgMi4yTDEzLjYgMUMxMS45IDEuNzcgMTEuNCA0LjA5IDExLjI2IDUuMjlDMTAuODcgNS4xMSAxMC40NSA1IDEwIDVDOC4zNCA1IDcgNi4zNCA3IDhDNyA4LjQgNy4wOCA4Ljc3IDcuMjIgOS4xMkM1Ljk0IDkuNDYgNSAxMC42MiA1IDEyQzUgMTMuMzkgNS45NSAxNC41NCA3LjIzIDE0Ljg4QzcuMDkgMTUuMjIgNyAxNS42IDcgMTZDNyAxNy4zOSA3Ljk0IDE4LjU0IDkuMjIgMTguODhDOS4wOCAxOS4yMyA5IDE5LjYxIDkgMjBDOSAyMS42NiAxMC4zNCAyMyAxMiAyM1MxNSAyMS42NiAxNSAyMEMxNSAxOS42MSAxNC45MiAxOS4yMyAxNC43OCAxOC44OEMxNi4wNiAxOC41NCAxNyAxNy4zOSAxNyAxNkMxNyAxNS42IDE2LjkyIDE1LjIzIDE2Ljc3IDE0Ljg4QzE4LjA1IDE0LjU0IDE5IDEzLjM5IDE5IDEyTTE2LjMxIDkuODhWOS45SDE2LjNMMTYuMzEgOS44OE0xNCA2LjVDMTQuODMgNi41IDE1LjUgNy4xNyAxNS41IDhTMTQuODMgOS41IDE0IDkuNSAxMi41IDguODMgMTIuNSA4IDEzLjE3IDYuNSAxNCA2LjVNMTMuNSAxMkMxMy41IDEyLjgzIDEyLjgzIDEzLjUgMTIgMTMuNVMxMC41IDEyLjgzIDEwLjUgMTIgMTEuMTcgMTAuNSAxMiAxMC41IDEzLjUgMTEuMTcgMTMuNSAxMk0xMCA2LjVDMTAuODMgNi41IDExLjUgNy4xNyAxMS41IDhTMTAuODMgOS41IDEwIDkuNSA4LjUgOC44MyA4LjUgOCA5LjE3IDYuNSAxMCA2LjVNNi41IDEyQzYuNSAxMS4xNyA3LjE3IDEwLjUgOCAxMC41UzkuNSAxMS4xNyA5LjUgMTIgOC44MyAxMy41IDggMTMuNSA2LjUgMTIuODMgNi41IDEyTTguNSAxNkM4LjUgMTUuMTcgOS4xNyAxNC41IDEwIDE0LjVTMTEuNSAxNS4xNyAxMS41IDE2IDEwLjgzIDE3LjUgMTAgMTcuNSA4LjUgMTYuODMgOC41IDE2TTEyIDIxLjVDMTEuMTcgMjEuNSAxMC41IDIwLjgzIDEwLjUgMjBTMTEuMTcgMTguNSAxMiAxOC41IDEzLjUgMTkuMTcgMTMuNSAyMCAxMi44MyAyMS41IDEyIDIxLjVNMTQgMTcuNUMxMy4xNyAxNy41IDEyLjUgMTYuODMgMTIuNSAxNlMxMy4xNyAxNC41IDE0IDE0LjUgMTUuNSAxNS4xNyAxNS41IDE2IDE0LjgzIDE3LjUgMTQgMTcuNU0xNiAxMy41QzE1LjE3IDEzLjUgMTQuNSAxMi44MyAxNC41IDEyUzE1LjE3IDEwLjUgMTYgMTAuNSAxNy41IDExLjE3IDE3LjUgMTIgMTYuODMgMTMuNSAxNiAxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0UGluZWFwcGxlID0gXCJNMTQuNCA3LjdDMTYuNCA2LjQgMTkgNyAxOSA3QzE3LjIgNC42IDE1LjEgNC43IDEzLjYgNS4yVjVDMTQuNyAzLjQgMTYuOSAzLjUgMTYuOSAzLjVDMTUuMyAyLjEgMTMuOSAyLjUgMTMgM0MxMi41IDEuOCAxMiAxIDEyIDFDMTEuNiAxLjcgMTEuMyAyLjQgMTEgMy4xQzEwLjEgMi41IDguNiAyLjEgNyAzLjVDNyAzLjUgOS4zIDMuNSAxMC40IDUuMkM4LjkgNC43IDYuOCA0LjYgNSA3QzUgNyA3LjYgNi40IDkuNiA3LjdDNy41IDguOSA2IDExLjcgNiAxNUM2IDE5LjQgOC43IDIzIDEyIDIzUzE4IDE5LjQgMTggMTVDMTggMTEuNyAxNi41IDguOSAxNC40IDcuN00xNS44IDE2LjhDMTUuNyAxNy4yIDE1LjYgMTcuNiAxNS40IDE4TDE0IDE2TDEyLjUgMThMMTQuMSAyMC4xQzEzLjggMjAuMyAxMy42IDIwLjUgMTMuMyAyMC43TDEyIDE5TDEwLjcgMjAuN0MxMC40IDIwLjYgMTAuMSAyMC40IDkuOSAyMC4xTDExLjUgMThMMTAgMTZMOC41IDE3LjlDOC40IDE3LjUgOC4yIDE3LjEgOC4xIDE2LjdMOS41IDE1TDguMiAxMy4yQzguMyAxMi44IDguNCAxMi40IDguNiAxMkwxMCAxNEwxMS41IDEyTDkuOSA5LjlDMTAuMiA5LjcgMTAuNCA5LjUgMTAuNyA5LjNMMTIgMTFMMTMuMyA5LjNDMTMuNiA5LjQgMTMuOSA5LjYgMTQuMSA5LjlMMTIuNSAxMkwxNCAxNEwxNS41IDEyLjFDMTUuNiAxMi41IDE1LjggMTIuOSAxNS45IDEzLjNMMTQuNSAxNUwxNS44IDE2LjhNMTIgMTNMMTMuNSAxNUwxMiAxN0wxMC41IDE1TDEyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZydWl0V2F0ZXJtZWxvbiA9IFwiTTE2LjQgMTYuNEMxOS44IDEzIDE5LjggNy41IDE2LjQgNC4yTDQuMiAxNi40QzcuNSAxOS44IDEzIDE5LjggMTYuNCAxNi40TTE2IDdDMTYuNiA3IDE3IDcuNCAxNyA4QzE3IDguNiAxNi42IDkgMTYgOVMxNSA4LjYgMTUgOEMxNSA3LjQgMTUuNCA3IDE2IDdNMTYgMTFDMTYuNiAxMSAxNyAxMS40IDE3IDEyQzE3IDEyLjYgMTYuNiAxMyAxNiAxM1MxNSAxMi42IDE1IDEyQzE1IDExLjQgMTUuNCAxMSAxNiAxMU0xMiAxMUMxMi42IDExIDEzIDExLjQgMTMgMTJDMTMgMTIuNiAxMi42IDEzIDEyIDEzUzExIDEyLjYgMTEgMTJDMTEgMTEuNCAxMS40IDExIDEyIDExTTEyIDE1QzEyLjYgMTUgMTMgMTUuNCAxMyAxNkMxMyAxNi42IDEyLjYgMTcgMTIgMTdTMTEgMTYuNiAxMSAxNkMxMSAxNS40IDExLjQgMTUgMTIgMTVNOCAxN0M3LjQgMTcgNyAxNi42IDcgMTZDNyAxNS40IDcuNCAxNSA4IDE1UzkgMTUuNCA5IDE2QzkgMTYuNiA4LjYgMTcgOCAxN00xOC42IDE4LjZDMTQgMjMuMiA2LjYgMjMuMiAyIDE4LjZMMy40IDE3LjJDNy4yIDIxIDEzLjMgMjEgMTcuMSAxNy4yQzIwLjkgMTMuNCAyMC45IDcuMyAxNy4xIDMuNUwxOC42IDJDMjMuMSA2LjYgMjMuMSAxNCAxOC42IDE4LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVlbCA9IFwiTTMsMkg2QzYuMjgsMiA2LjUzLDIuMTEgNi43MSwyLjI5TDguNzksNC4zOEw5LjU5LDMuNTlDMTAsMy4yIDEwLjUsMyAxMSwzSDE3QzE3LjUsMyAxOCwzLjIgMTguNDEsMy41OUwxOS40MSw0LjU5QzE5LjgsNSAyMCw1LjUgMjAsNlYxOUEyLDIgMCAwLDEgMTgsMjFIOEEyLDIgMCAwLDEgNiwxOVYxM0w2LDEyVjhDNiw3LjUgNi4yLDcgNi41OSw2LjU5TDcuMzgsNS43OUw1LjU5LDRIM1YyTTExLDVWN0gxN1Y1SDExTTExLjQxLDExTDkuNDEsOUg4VjEwLjQxTDEwLDEyLjQxVjE1LjU5TDgsMTcuNTlWMTlIOS40MUwxMS40MSwxN0gxNC41OUwxNi41OSwxOUgxOFYxNy41OUwxNiwxNS41OVYxMi40MUwxOCwxMC40MVY5SDE2LjU5TDE0LjU5LDExSDExLjQxTTEyLDEzSDE0VjE1SDEyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZ1bGxzY3JlZW4gPSBcIk01LDVIMTBWN0g3VjEwSDVWNU0xNCw1SDE5VjEwSDE3VjdIMTRWNU0xNywxNEgxOVYxOUgxNFYxN0gxN1YxNE0xMCwxN1YxOUg1VjE0SDdWMTdIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVsbHNjcmVlbkV4aXQgPSBcIk0xNCwxNEgxOVYxNkgxNlYxOUgxNFYxNE01LDE0SDEwVjE5SDhWMTZINVYxNE04LDVIMTBWMTBINVY4SDhWNU0xOSw4VjEwSDE0VjVIMTZWOEgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlGdW5jdGlvbiA9IFwiTTE1LjYsNS4yOUMxNC41LDUuMTkgMTMuNTMsNiAxMy40Myw3LjExTDEzLjE4LDEwSDE2VjEySDEzTDEyLjU2LDE3LjA3QzEyLjM3LDE5LjI3IDEwLjQzLDIwLjkgOC4yMywyMC43QzYuOTIsMjAuNTkgNS44MiwxOS44NiA1LjE3LDE4LjgzTDYuNjcsMTcuMzNDNi45MSwxOC4wNyA3LjU3LDE4LjY0IDguNCwxOC43MUM5LjUsMTguODEgMTAuNDcsMTggMTAuNTcsMTYuODlMMTEsMTJIOFYxMEgxMS4xN0wxMS40NCw2LjkzQzExLjYzLDQuNzMgMTMuNTcsMy4xIDE1Ljc3LDMuM0MxNy4wOCwzLjQxIDE4LjE4LDQuMTQgMTguODMsNS4xN0wxNy4zMyw2LjY3QzE3LjA5LDUuOTMgMTYuNDMsNS4zNiAxNS42LDUuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVuY3Rpb25WYXJpYW50ID0gXCJNMTIuNDIsNS4yOUMxMS4zMiw1LjE5IDEwLjM1LDYgMTAuMjUsNy4xMUwxMCwxMEgxMi44MlYxMkg5LjgyTDkuMzgsMTcuMDdDOS4xOCwxOS4yNyA3LjI0LDIwLjkgNS4wNCwyMC43QzMuNzksMjAuNTkgMi42NiwxOS45IDIsMTguODNMMy41LDE3LjMzQzMuODMsMTguMzggNC45NiwxOC45NyA2LDE4LjYzQzYuNzgsMTguMzkgNy4zMywxNy43IDcuNCwxNi44OUw3LjgyLDEySDQuODJWMTBIOEw4LjI3LDYuOTNDOC40Niw0LjczIDEwLjM5LDMuMSAxMi42LDMuMjhDMTMuODYsMy4zOSAxNSw0LjA5IDE1LjY2LDUuMTdMMTQuMTYsNi42N0MxMy45MSw1LjkgMTMuMjMsNS4zNiAxMi40Miw1LjI5TTIyLDEzLjY1TDIwLjU5LDEyLjI0TDE3Ljc2LDE1LjA3TDE0LjkzLDEyLjI0TDEzLjUsMTMuNjVMMTYuMzUsMTYuNUwxMy41LDE5LjMxTDE0LjkzLDIwLjcyTDE3Ljc2LDE3Ljg5TDIwLjU5LDIwLjcyTDIyLDE5LjMxTDE5LjE3LDE2LjVMMjIsMTMuNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVyaWdhbmFIb3Jpem9udGFsID0gXCJNOC41IDJDNy4xMiAyIDYgMy4xMiA2IDQuNVM3LjEyIDcgOC41IDcgMTEgNS44OCAxMSA0LjUgOS44OCAyIDguNSAyTTE1LjUgMkMxNC4xMiAyIDEzIDMuMTIgMTMgNC41UzE0LjEyIDcgMTUuNSA3IDE4IDUuODggMTggNC41IDE2Ljg4IDIgMTUuNSAyTTExIDhWMTBINVYxMkgxNC45NUMxNC41MyAxMy4xMyAxMy41IDE0LjUgMTIuMTYgMTUuNjdDMTEuMTIgMTQuNzQgMTAuMzUgMTMuODIgOS44MiAxM0g3LjVDOC4wOCAxNC4yNSA5LjEzIDE1LjYyIDEwLjYyIDE2Ljk2TDYuNTUgMjAuMjJMNS43NiAyMC44NEw3IDIyLjQxTDcuOCAyMS43OEwxMi4xNyAxOC4yOEwxNi41NSAyMS43OEwxNy4zMyAyMi40MUwxOC41OCAyMC44NEwxNy44IDIwLjIyTDEzLjczIDE2Ljk3QzE1LjM0IDE1LjUgMTYuNyAxMy44NSAxNy4wNyAxMkgxOVYxMEgxM1Y4SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUZ1cmlnYW5hVmVydGljYWwgPSBcIk04IDVWN0gyVjlIMTEuOTVDMTEuNTMgMTAuMTMgMTAuNSAxMS41IDkuMTYgMTIuNjdDOC4xMiAxMS43NCA3LjM1IDEwLjgyIDYuODIgMTBINC41QzUuMDggMTEuMjUgNi4xMyAxMi42MiA3LjYyIDEzLjk2TDMuNTUgMTcuMjJMMi43NiAxNy44NEw0IDE5LjQxTDQuOCAxOC43OEw5LjE3IDE1LjI4TDEzLjU1IDE4Ljc4TDE0LjMzIDE5LjQxTDE1LjU4IDE3Ljg0TDE0LjggMTcuMjJMMTAuNzMgMTMuOTdDMTIuMzQgMTIuNSAxMy43IDEwLjg1IDE0LjA3IDlIMTZWN0gxMFY1SDhNMTkuNSA2QzE4LjEyIDYgMTcgNy4xMiAxNyA4LjVTMTguMTIgMTEgMTkuNSAxMSAyMiA5Ljg4IDIyIDguNSAyMC44OCA2IDE5LjUgNk0xOS40NyAxM0MxOC4wOSAxMyAxNi45NyAxNC4xMiAxNi45NyAxNS41UzE4LjA5IDE4IDE5LjQ3IDE4IDIxLjk3IDE2Ljg4IDIxLjk3IDE1LjUgMjAuODUgMTMgMTkuNDcgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVzZSA9IFwiTTgsN1YxN0gxNVY3SDhNMTEuMTYsMTZWMTIuODdIOS40MUwxMS45MSw4VjExLjE0SDEzLjU5TDExLjE2LDE2TTE2LDJWNkg3VjJBMSwxIDAgMCwxIDgsMUgxNUExLDEgMCAwLDEgMTYsMk0xNiwxOFYyMkExLDEgMCAwLDEgMTUsMjNIOEExLDEgMCAwLDEgNywyMlYxOEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlGdXNlQWxlcnQgPSBcIk02IDdWMTdIMTNWN0g2TTkuMTYgMTZWMTIuODdINy40MUw5LjkxIDhWMTEuMTRIMTEuNTlMOS4xNiAxNk0xNCAyVjZINVYyQzUgMS40NSA1LjQ1IDEgNiAxSDEzQzEzLjU1IDEgMTQgMS40NSAxNCAyTTE0IDE4VjIyQzE0IDIyLjU1IDEzLjU1IDIzIDEzIDIzSDZDNS40NSAyMyA1IDIyLjU1IDUgMjJWMThIMTRNMTkgMTNIMTdWN0gxOVYxM00xOSAxN0gxN1YxNUgxOVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlGdXNlQmxhZGUgPSBcIk0xMCwyMUg4TDYsMTlWMTZIMTBWMjFNMTgsMTZIMTRWMjFIMTZMMTgsMTlWMTZNMywzVjRBMSwxIDAgMCwwIDQsNVYxNEExLDEgMCAwLDAgNSwxNUgxOUExLDEgMCAwLDAgMjAsMTRWNUgyMEExLDEgMCAwLDAgMjEsNFYzSDNNMTEuODMsMTNWOS43M0gxMEwxMi42MSw0LjY2VjcuOTNIMTQuMzZMMTEuODMsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpRnVzZU9mZiA9IFwiTTE1IDExLjhMMTAuMiA3SDE1VjExLjhNMTYgNlYyQzE2IDEuNDUgMTUuNTUgMSAxNSAxSDhDNy40NSAxIDcgMS40NSA3IDJWMy44TDkuMiA2SDE2TTIuMzkgMS43M0wxLjExIDNMOCA5Ljg5VjE3SDE1LjExTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M003IDIyQzcgMjIuNTUgNy40NSAyMyA4IDIzSDE1QzE1LjU1IDIzIDE2IDIyLjU1IDE2IDIyVjE4SDdWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZCA9IFwiTTE2LjUsOUwxMy41LDEyTDE2LjUsMTVIMjJWOU05LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41TTcuNSw5SDJWMTVINy41TDEwLjUsMTJNMTUsNy41VjJIOVY3LjVMMTIsMTAuNUwxNSw3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZENpcmNsZSA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTEyLDFBNCw0IDAgMCwxIDE2LDVBNCw0IDAgMCwxIDEyLDlBNCw0IDAgMCwxIDgsNUE0LDQgMCAwLDEgMTIsMU0xMiwxNUE0LDQgMCAwLDEgMTYsMTlBNCw0IDAgMCwxIDEyLDIzQTQsNCAwIDAsMSA4LDE5QTQsNCAwIDAsMSAxMiwxNU0xOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBNCw0IDAgMCwxIDE1LDEyQTQsNCAwIDAsMSAxOSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRDaXJjbGVEb3duID0gXCJNNSw4QTQsNCAwIDAsMSA5LDEyQTQsNCAwIDAsMSA1LDE2QTQsNCAwIDAsMSAxLDEyQTQsNCAwIDAsMSA1LDhNMTIsMUE0LDQgMCAwLDEgMTYsNUE0LDQgMCAwLDEgMTIsOUE0LDQgMCAwLDEgOCw1QTQsNCAwIDAsMSAxMiwxTTEyLDE1QTQsNCAwIDAsMSAxNiwxOUE0LDQgMCAwLDEgMTIsMjNBNCw0IDAgMCwxIDgsMTlBNCw0IDAgMCwxIDEyLDE1TTE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkE0LDQgMCAwLDEgMTUsMTJBNCw0IDAgMCwxIDE5LDhNMTIsM0EyLDIgMCAwLDAgMTAsNUEyLDIgMCAwLDAgMTIsN0EyLDIgMCAwLDAgMTQsNUEyLDIgMCAwLDAgMTIsM001LDEwQTIsMiAwIDAsMCAzLDEyQTIsMiAwIDAsMCA1LDE0QTIsMiAwIDAsMCA3LDEyQTIsMiAwIDAsMCA1LDEwTTE5LDEwQTIsMiAwIDAsMCAxNywxMkEyLDIgMCAwLDAgMTksMTRBMiwyIDAgMCwwIDIxLDEyQTIsMiAwIDAsMCAxOSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkQ2lyY2xlTGVmdCA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTEyLDFBNCw0IDAgMCwxIDE2LDVBNCw0IDAgMCwxIDEyLDlBNCw0IDAgMCwxIDgsNUE0LDQgMCAwLDEgMTIsMU0xMiwxNUE0LDQgMCAwLDEgMTYsMTlBNCw0IDAgMCwxIDEyLDIzQTQsNCAwIDAsMSA4LDE5QTQsNCAwIDAsMSAxMiwxNU0xOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBNCw0IDAgMCwxIDE1LDEyQTQsNCAwIDAsMSAxOSw4TTE5LDEwQTIsMiAwIDAsMCAxNywxMkEyLDIgMCAwLDAgMTksMTRBMiwyIDAgMCwwIDIxLDEyQTIsMiAwIDAsMCAxOSwxME0xMiwxN0EyLDIgMCAwLDAgMTAsMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOUEyLDIgMCAwLDAgMTIsMTdNMTIsM0EyLDIgMCAwLDAgMTAsNUEyLDIgMCAwLDAgMTIsN0EyLDIgMCAwLDAgMTQsNUEyLDIgMCAwLDAgMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkQ2lyY2xlT3V0bGluZSA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTUsMTBBMiwyIDAgMCwwIDMsMTJBMiwyIDAgMCwwIDUsMTRBMiwyIDAgMCwwIDcsMTJBMiwyIDAgMCwwIDUsMTBNMTIsMUE0LDQgMCAwLDEgMTYsNUE0LDQgMCAwLDEgMTIsOUE0LDQgMCAwLDEgOCw1QTQsNCAwIDAsMSAxMiwxTTEyLDNBMiwyIDAgMCwwIDEwLDVBMiwyIDAgMCwwIDEyLDdBMiwyIDAgMCwwIDE0LDVBMiwyIDAgMCwwIDEyLDNNMTIsMTVBNCw0IDAgMCwxIDE2LDE5QTQsNCAwIDAsMSAxMiwyM0E0LDQgMCAwLDEgOCwxOUE0LDQgMCAwLDEgMTIsMTVNMTIsMTdBMiwyIDAgMCwwIDEwLDE5QTIsMiAwIDAsMCAxMiwyMUEyLDIgMCAwLDAgMTQsMTlBMiwyIDAgMCwwIDEyLDE3TTE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkE0LDQgMCAwLDEgMTUsMTJBNCw0IDAgMCwxIDE5LDhNMTksMTBBMiwyIDAgMCwwIDE3LDEyQTIsMiAwIDAsMCAxOSwxNEEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRDaXJjbGVSaWdodCA9IFwiTTUsOEE0LDQgMCAwLDEgOSwxMkE0LDQgMCAwLDEgNSwxNkE0LDQgMCAwLDEgMSwxMkE0LDQgMCAwLDEgNSw4TTEyLDFBNCw0IDAgMCwxIDE2LDVBNCw0IDAgMCwxIDEyLDlBNCw0IDAgMCwxIDgsNUE0LDQgMCAwLDEgMTIsMU0xMiwxNUE0LDQgMCAwLDEgMTYsMTlBNCw0IDAgMCwxIDEyLDIzQTQsNCAwIDAsMSA4LDE5QTQsNCAwIDAsMSAxMiwxNU0xOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBNCw0IDAgMCwxIDE1LDEyQTQsNCAwIDAsMSAxOSw4TTEyLDNBMiwyIDAgMCwwIDEwLDVBMiwyIDAgMCwwIDEyLDdBMiwyIDAgMCwwIDE0LDVBMiwyIDAgMCwwIDEyLDNNNSwxMEEyLDIgMCAwLDAgMywxMkEyLDIgMCAwLDAgNSwxNEEyLDIgMCAwLDAgNywxMkEyLDIgMCAwLDAgNSwxME0xMiwxN0EyLDIgMCAwLDAgMTAsMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOUEyLDIgMCAwLDAgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZENpcmNsZVVwID0gXCJNNSw4QTQsNCAwIDAsMSA5LDEyQTQsNCAwIDAsMSA1LDE2QTQsNCAwIDAsMSAxLDEyQTQsNCAwIDAsMSA1LDhNMTIsMUE0LDQgMCAwLDEgMTYsNUE0LDQgMCAwLDEgMTIsOUE0LDQgMCAwLDEgOCw1QTQsNCAwIDAsMSAxMiwxTTEyLDE1QTQsNCAwIDAsMSAxNiwxOUE0LDQgMCAwLDEgMTIsMjNBNCw0IDAgMCwxIDgsMTlBNCw0IDAgMCwxIDEyLDE1TTE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkE0LDQgMCAwLDEgMTUsMTJBNCw0IDAgMCwxIDE5LDhNNSwxMEEyLDIgMCAwLDAgMywxMkEyLDIgMCAwLDAgNSwxNEEyLDIgMCAwLDAgNywxMkEyLDIgMCAwLDAgNSwxME0xOSwxMEEyLDIgMCAwLDAgMTcsMTJBMiwyIDAgMCwwIDE5LDE0QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBNMTIsMTdBMiwyIDAgMCwwIDEwLDE5QTIsMiAwIDAsMCAxMiwyMUEyLDIgMCAwLDAgMTQsMTlBMiwyIDAgMCwwIDEyLDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWREb3duID0gXCJNOSwyVjcuNUwxMiwxMC41TDE1LDcuNVYySDlNMiw5VjE1SDcuNUwxMC41LDEyTDcuNSw5SDJNMTYuNSw5TDEzLjUsMTJMMTYuNSwxNUgyMlY5SDE2LjVNMTIsMTMuNUw5LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41TTExLDE4SDEzVjIwSDExVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRMZWZ0ID0gXCJNOSwyVjcuNUwxMiwxMC41TDE1LDcuNVYySDlNMiw5VjE1SDcuNUwxMC41LDEyTDcuNSw5SDJNMTYuNSw5TDEzLjUsMTJMMTYuNSwxNUgyMlY5SDE2LjVNNCwxMUg2VjEzSDRWMTFNMTIsMTMuNUw5LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSaWdodCA9IFwiTTksMlY3LjVMMTIsMTAuNUwxNSw3LjVWMkg5TTIsOVYxNUg3LjVMMTAuNSwxMkw3LjUsOUgyTTE2LjUsOUwxMy41LDEyTDE2LjUsMTVIMjJWOUgxNi41TTE4LDExSDIwVjEzSDE4VjExTTEyLDEzLjVMOSwxNi41VjIySDE1VjE2LjVMMTIsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkUm91bmQgPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZERvd24gPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4TTEwLDE2VjIwSDE0VjE2SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZExlZnQgPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4TTQsMTBWMTRIOFYxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZE91dGxpbmUgPSBcIk00LDhIOFY0QTIsMiAwIDAsMSAxMCwySDE0QTIsMiAwIDAsMSAxNiw0VjhIMjBBMiwyIDAgMCwxIDIyLDEwVjE0QTIsMiAwIDAsMSAyMCwxNkgxNlYyMEEyLDIgMCAwLDEgMTQsMjJIMTBBMiwyIDAgMCwxIDgsMjBWMTZINEEyLDIgMCAwLDEgMiwxNFYxMEEyLDIgMCAwLDEgNCw4TTQsMTBWMTRIMTBWMjBIMTRWMTRIMjBWMTBIMTRWNEgxMFYxMEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRSb3VuZFJpZ2h0ID0gXCJNNCw4SDhWNEEyLDIgMCAwLDEgMTAsMkgxNEEyLDIgMCAwLDEgMTYsNFY4SDIwQTIsMiAwIDAsMSAyMiwxMFYxNEEyLDIgMCAwLDEgMjAsMTZIMTZWMjBBMiwyIDAgMCwxIDE0LDIySDEwQTIsMiAwIDAsMSA4LDIwVjE2SDRBMiwyIDAgMCwxIDIsMTRWMTBBMiwyIDAgMCwxIDQsOE0xNiwxMFYxNEgyMFYxMEgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkUm91bmRVcCA9IFwiTTQsOEg4VjRBMiwyIDAgMCwxIDEwLDJIMTRBMiwyIDAgMCwxIDE2LDRWOEgyMEEyLDIgMCAwLDEgMjIsMTBWMTRBMiwyIDAgMCwxIDIwLDE2SDE2VjIwQTIsMiAwIDAsMSAxNCwyMkgxMEEyLDIgMCAwLDEgOCwyMFYxNkg0QTIsMiAwIDAsMSAyLDE0VjEwQTIsMiAwIDAsMSA0LDhNMTAsNFY4SDE0VjRIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZFNxdWFyZSA9IFwiTTIxLDZIM0EyLDIgMCAwLDAgMSw4VjE2QTIsMiAwIDAsMCAzLDE4SDIxQTIsMiAwIDAsMCAyMywxNlY4QTIsMiAwIDAsMCAyMSw2TTExLDEzSDhWMTZINlYxM0gzVjExSDZWOEg4VjExSDExTTE1LjUsMTVBMS41LDEuNSAwIDAsMSAxNCwxMy41QTEuNSwxLjUgMCAwLDEgMTUuNSwxMkExLjUsMS41IDAgMCwxIDE3LDEzLjVBMS41LDEuNSAwIDAsMSAxNS41LDE1TTE5LjUsMTJBMS41LDEuNSAwIDAsMSAxOCwxMC41QTEuNSwxLjUgMCAwLDEgMTkuNSw5QTEuNSwxLjUgMCAwLDEgMjEsMTAuNUExLjUsMS41IDAgMCwxIDE5LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZFNxdWFyZU91dGxpbmUgPSBcIk0yMSw2SDNBMiwyIDAgMCwwIDEsOFYxNkEyLDIgMCAwLDAgMywxOEgyMUEyLDIgMCAwLDAgMjMsMTZWOEEyLDIgMCAwLDAgMjEsNk0yMSwxNkgzVjhIMjFNNiwxNUg4VjEzSDEwVjExSDhWOUg2VjExSDRWMTNINk0xNC41LDEyQTEuNSwxLjUgMCAwLDEgMTYsMTMuNUExLjUsMS41IDAgMCwxIDE0LjUsMTVBMS41LDEuNSAwIDAsMSAxMywxMy41QTEuNSwxLjUgMCAwLDEgMTQuNSwxMk0xOC41LDlBMS41LDEuNSAwIDAsMSAyMCwxMC41QTEuNSwxLjUgMCAwLDEgMTguNSwxMkExLjUsMS41IDAgMCwxIDE3LDEwLjVBMS41LDEuNSAwIDAsMSAxOC41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FtZXBhZFVwID0gXCJNOSwyVjcuNUwxMiwxMC41TDE1LDcuNVYySDlNMTEsNEgxM1Y2SDExVjRNMiw5VjE1SDcuNUwxMC41LDEyTDcuNSw5SDJNMTYuNSw5TDEzLjUsMTJMMTYuNSwxNUgyMlY5SDE2LjVNMTIsMTMuNUw5LDE2LjVWMjJIMTVWMTYuNUwxMiwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhbWVwYWRWYXJpYW50ID0gXCJNNyw2SDE3QTYsNiAwIDAsMSAyMywxMkE2LDYgMCAwLDEgMTcsMThDMTUuMjIsMTggMTMuNjMsMTcuMjMgMTIuNTMsMTZIMTEuNDdDMTAuMzcsMTcuMjMgOC43OCwxOCA3LDE4QTYsNiAwIDAsMSAxLDEyQTYsNiAwIDAsMSA3LDZNNiw5VjExSDRWMTNINlYxNUg4VjEzSDEwVjExSDhWOUg2TTE1LjUsMTJBMS41LDEuNSAwIDAsMCAxNCwxMy41QTEuNSwxLjUgMCAwLDAgMTUuNSwxNUExLjUsMS41IDAgMCwwIDE3LDEzLjVBMS41LDEuNSAwIDAsMCAxNS41LDEyTTE4LjUsOUExLjUsMS41IDAgMCwwIDE3LDEwLjVBMS41LDEuNSAwIDAsMCAxOC41LDEyQTEuNSwxLjUgMCAwLDAgMjAsMTAuNUExLjUsMS41IDAgMCwwIDE4LjUsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1lcGFkVmFyaWFudE91dGxpbmUgPSBcIk02LDlIOFYxMUgxMFYxM0g4VjE1SDZWMTNINFYxMUg2VjlNMTguNSw5QTEuNSwxLjUgMCAwLDEgMjAsMTAuNUExLjUsMS41IDAgMCwxIDE4LjUsMTJBMS41LDEuNSAwIDAsMSAxNywxMC41QTEuNSwxLjUgMCAwLDEgMTguNSw5TTE1LjUsMTJBMS41LDEuNSAwIDAsMSAxNywxMy41QTEuNSwxLjUgMCAwLDEgMTUuNSwxNUExLjUsMS41IDAgMCwxIDE0LDEzLjVBMS41LDEuNSAwIDAsMSAxNS41LDEyTTE3LDVBNyw3IDAgMCwxIDI0LDEyQTcsNyAwIDAsMSAxNywxOUMxNS4wNCwxOSAxMy4yNywxOC4yIDEyLDE2LjlDMTAuNzMsMTguMiA4Ljk2LDE5IDcsMTlBNyw3IDAgMCwxIDAsMTJBNyw3IDAgMCwxIDcsNUgxN003LDdBNSw1IDAgMCwwIDIsMTJBNSw1IDAgMCwwIDcsMTdDOC42NCwxNyAxMC4wOSwxNi4yMSAxMSwxNUgxM0MxMy45MSwxNi4yMSAxNS4zNiwxNyAxNywxN0E1LDUgMCAwLDAgMjIsMTJBNSw1IDAgMCwwIDE3LDdIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlHYW1tYSA9IFwiTTExLjc2IDE5QzEyLjkyIDE5IDEzLjU4IDE4IDEzLjU4IDE2LjI5QzEzLjU4IDE1LjIgMTMuNSAxMy44OCAxMy4zIDEyLjY3TDE4IDVIMTUuMjhMMTIuNzEgOS44MkwxMi41NSA5LjMzQzExLjgzIDcuMTkgMTAuODIgNSA4LjY4IDVDOCA1IDcuNDUgNS4xOCA3IDUuNTRDNiA2LjM5IDYgOCA2IDguNUg2LjkxQzYuOTcgOC4wNiA3LjIxIDYuODMgOC4yNSA2LjgzQzEwIDYuODMgMTAuOCAxMCAxMS40IDEyLjQyQzEwLjUgMTQuNTggMTAgMTYuMTQgMTAgMTYuOTdDMTAgMTcuOTUgMTAuNTYgMTkgMTEuNzYgMTlcIjtcclxuZXhwb3J0IHZhciBtZGlHYW50cnlDcmFuZSA9IFwiTTIxLDZIMjJWNEgyMVYzSDE4VjRINlYzSDNWNEgyVjZIM1YyMEgyVjIySDdWMjBINlY2SDExVjdIMTEuNVYxMC42MkMxMSwxMC43OSAxMC42OSwxMS4yNSAxMC42OSwxMS43NkMxMC42OSwxMi4yIDEwLjkyLDEyLjYgMTEuMywxMi44MlYxNEgxMS45MkMxMi4yNiwxNCAxMi41NCwxNC4yNyAxMi41NSwxNC42MUMxMi41NSwxNC45NiAxMi4yOCwxNS4yNCAxMS45MywxNS4yNEMxMS43MSwxNS4yNCAxMS41LDE1LjEyIDExLjM5LDE0LjkzQzExLjIyLDE0LjY0IDEwLjg0LDE0LjU0IDEwLjU1LDE0LjcxQzEwLjI2LDE0Ljg3IDEwLjE1LDE1LjI1IDEwLjMyLDE1LjU1QzEwLjY1LDE2LjEyIDExLjI2LDE2LjQ3IDExLjkyLDE2LjQ3QzEyLjk0LDE2LjQ2IDEzLjc2LDE1LjYyIDEzLjc1LDE0LjZDMTMuNzQsMTMuODMgMTMuMjYsMTMuMTQgMTIuNTMsMTIuODhWMTIuODJDMTMuMTIsMTIuNSAxMy4zNCwxMS43OCAxMy4wMywxMS4yQzEyLjkyLDExIDEyLjc0LDEwLjgxIDEyLjUzLDEwLjdWN0gxM1Y2SDE4VjIwSDE3VjIySDIyVjIwSDIxVjZNNSwxNS4yOVYxNi43MUw0LDE3LjcxVjE2LjI5TDUsMTUuMjlNNCwyMFYxOS4yNEw1LDE4LjI0VjE5LjY2TDQuNjYsMjBINE00LDcuMjlMNSw2LjI5VjcuNzFMNCw4LjcxVjcuMjlNNCwxMC4yOUw1LDkuMjlWMTAuNzFMNCwxMS43MVYxMC4yOU00LDEzLjI5TDUsMTIuMjlWMTMuNzFMNCwxNC43MVYxMy4yNEw0LDEzLjI5TTIwLDE1LjI5VjE2LjcxTDE5LDE3LjcxVjE2LjI5TDIwLDE1LjI5TTE5LDIwVjE5LjI0TDIwLDE4LjI0VjE5LjY2TDE5LjY2LDIwSDE5TTE5LDcuMjlMMjAsNi4yOVY3LjcxTDE5LDguNzFWNy4yOU0xOSwxMC4yOUwyMCw5LjI5VjEwLjcxTDE5LDExLjcxVjEwLjI5TTE5LDEzLjI5TDIwLDEyLjI5VjEzLjcxTDE5LDE0LjcxVjEzLjI0TDE5LDEzLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhcmFnZSA9IFwiTTE5LDIwSDE3VjExSDdWMjBINVY5TDEyLDVMMTksOVYyME04LDEySDE2VjE0SDhWMTJNOCwxNUgxNlYxN0g4VjE1TTE2LDE4VjIwSDhWMThIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FyYWdlQWxlcnQgPSBcIk0xNywyMEgxNVYxMUg1VjIwSDNWOUwxMCw1TDE3LDlWMjBNNiwxMkgxNFYxNEg2VjEyTTYsMTVIMTRWMTdINlYxNU0xOSwxNVYxMEgyMVYxNUgxOU0xOSwxOVYxN0gyMVYxOUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXJhZ2VBbGVydFZhcmlhbnQgPSBcIk0yMCA5VjIwSDE4VjExSDJWMjBIMFY5TDEwIDVMMjAgOU0xNyAxMkgzVjE0SDE3VjEyTTE3IDE1SDNWMTdIMTdWMTVNMjIgMTVWMTBIMjRWMTVIMjJNMjIgMTlWMTdIMjRWMTlIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FyYWdlT3BlbiA9IFwiTTE5LDIwSDE3VjExSDdWMjBINVY5TDEyLDVMMTksOVYyME04LDEySDE2VjE0SDhWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FyYWdlT3BlblZhcmlhbnQgPSBcIk0yMiA5VjIwSDIwVjExSDRWMjBIMlY5TDEyIDVMMjIgOU0xOSAxMkg1VjE0SDE5VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhcmFnZVZhcmlhbnQgPSBcIk0yMiA5VjIwSDIwVjExSDRWMjBIMlY5TDEyIDVMMjIgOU0xOSAxMkg1VjE0SDE5VjEyTTE5IDE4SDVWMjBIMTlWMThNMTkgMTVINVYxN0gxOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXNDeWxpbmRlciA9IFwiTTE2LDlWMTRMMTYsMjBBMiwyIDAgMCwxIDE0LDIySDEwQTIsMiAwIDAsMSA4LDIwVjE0TDgsOUM4LDcuMTQgOS4yNyw1LjU3IDExLDUuMTNWNEg5VjJIMTVWNEgxM1Y1LjEzQzE0LjczLDUuNTcgMTYsNy4xNCAxNiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhc1N0YXRpb24gPSBcIk0xOCwxMEExLDEgMCAwLDEgMTcsOUExLDEgMCAwLDEgMTgsOEExLDEgMCAwLDEgMTksOUExLDEgMCAwLDEgMTgsMTBNMTIsMTBINlY1SDEyTTE5Ljc3LDcuMjNMMTkuNzgsNy4yMkwxNi4wNiwzLjVMMTUsNC41NkwxNy4xMSw2LjY3QzE2LjE3LDcgMTUuNSw3LjkzIDE1LjUsOUEyLjUsMi41IDAgMCwwIDE4LDExLjVDMTguMzYsMTEuNSAxOC42OSwxMS40MiAxOSwxMS4yOVYxOC41QTEsMSAwIDAsMSAxOCwxOS41QTEsMSAwIDAsMSAxNywxOC41VjE0QzE3LDEyLjg5IDE2LjEsMTIgMTUsMTJIMTRWNUMxNCwzLjg5IDEzLjEsMyAxMiwzSDZDNC44OSwzIDQsMy44OSA0LDVWMjFIMTRWMTMuNUgxNS41VjE4LjVBMi41LDIuNSAwIDAsMCAxOCwyMUEyLjUsMi41IDAgMCwwIDIwLjUsMTguNVY5QzIwLjUsOC4zMSAyMC4yMiw3LjY4IDE5Ljc3LDcuMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2FzU3RhdGlvbk9mZiA9IFwiTTEgNC4yN0wyLjI4IDNMMjEgMjEuNzJMMTkuNzMgMjNMMTcuNzEgMjFDMTYuNTYgMjAuODUgMTUuNjUgMTkuOTQgMTUuNSAxOC43OEwxNCAxNy4yN1YyMUg0VjcuMjdMMSA0LjI3TTE4IDEwQzE4LjU1IDEwIDE5IDkuNTUgMTkgOUMxOSA4LjQ1IDE4LjU1IDggMTggOEMxNy40NSA4IDE3IDguNDUgMTcgOUMxNyA5LjU1IDE3LjQ1IDEwIDE4IDEwTTEyIDEwVjVINi44Mkw1LjA2IDMuMjNDNS4zNCAzLjA4IDUuNjYgMyA2IDNIMTJDMTMuMSAzIDE0IDMuODkgMTQgNVYxMkgxNUMxNi4xIDEyIDE3IDEyLjg5IDE3IDE0VjE1LjE4TDExLjgyIDEwSDEyTTYgMTBINi43M0w2IDkuMjdWMTBNMTkuNzcgNy4yM0MyMC4yMiA3LjY4IDIwLjUgOC4zMSAyMC41IDlMMjAuNSAxOC42N0wxOSAxNy4xOFYxMS4yOUMxOC42OSAxMS40MiAxOC4zNiAxMS41IDE4IDExLjVDMTYuNjIgMTEuNSAxNS41IDEwLjM4IDE1LjUgOUMxNS41IDcuOTMgMTYuMTcgNy4wMyAxNy4xMSA2LjY3TDE1IDQuNTZMMTYuMDYgMy41TDE5Ljc4IDcuMjJMMTkuNzcgNy4yM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHYXNTdGF0aW9uT2ZmT3V0bGluZSA9IFwiTTEgNC4yN0wyLjI4IDNMNiA2LjcyTDIxIDIxLjcyTDE5LjczIDIzTDE3LjcyIDIxQzE2LjU2IDIwLjg1IDE1LjY1IDE5Ljk0IDE1LjUgMTguNzhMMTQgMTcuMjdWMjFINFY3LjI3TDEgNC4yN00xOS43NyA3LjIzQzIwLjIyIDcuNjggMjAuNSA4LjMxIDIwLjUgOUwyMC41IDE4LjY3TDE5IDE3LjE4VjExLjI5QzE4LjY5IDExLjQyIDE4LjM2IDExLjUgMTggMTEuNUMxNi42MiAxMS41IDE1LjUgMTAuMzggMTUuNSA5QzE1LjUgNy45MyAxNi4xNyA3LjAzIDE3LjExIDYuNjdMMTUgNC41NkwxNi4wNiAzLjVMMTkuNzggNy4yMkwxOS43NyA3LjIzTTExLjgyIDEwSDEyVjVINi44Mkw1LjA2IDMuMjRDNS4zNCAzLjA5IDUuNjYgMyA2IDNIMTJDMTMuMSAzIDE0IDMuOSAxNCA1VjEySDE1QzE2LjEgMTIgMTcgMTIuOSAxNyAxNFYxNS4xOEwxMS44MiAxME02IDEwSDYuNzNMNiA5LjI3VjEwTTYgMTJWMTlIMTJWMTUuMjdMOC43MyAxMkg2TTE4IDEwQzE4LjU1IDEwIDE5IDkuNTUgMTkgOUMxOSA4LjQ1IDE4LjU1IDggMTggOEMxNy40NSA4IDE3IDguNDUgMTcgOUMxNyA5LjU1IDE3LjQ1IDEwIDE4IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhc1N0YXRpb25PdXRsaW5lID0gXCJNMTkuNzcsNy4yM0wxOS43OCw3LjIyTDE2LjA2LDMuNUwxNSw0LjU2TDE3LjExLDYuNjdDMTYuMTcsNy4wMyAxNS41LDcuOTMgMTUuNSw5QTIuNSwyLjUgMCAwLDAgMTgsMTEuNUMxOC4zNiwxMS41IDE4LjY5LDExLjQyIDE5LDExLjI5VjE4LjVBMSwxIDAgMCwxIDE4LDE5LjVBMSwxIDAgMCwxIDE3LDE4LjVWMTRBMiwyIDAgMCwwIDE1LDEySDE0VjVBMiwyIDAgMCwwIDEyLDNINkEyLDIgMCAwLDAgNCw1VjIxSDE0VjEzLjVIMTUuNVYxOC41QTIuNSwyLjUgMCAwLDAgMTgsMjFBMi41LDIuNSAwIDAsMCAyMC41LDE4LjVWOUMyMC41LDguMzEgMjAuMjIsNy42OCAxOS43Nyw3LjIzTTEyLDEzLjVWMTlINlYxMkgxMlYxMy41TTEyLDEwSDZWNUgxMlYxME0xOCwxMEExLDEgMCAwLDEgMTcsOUExLDEgMCAwLDEgMTgsOEExLDEgMCAwLDEgMTksOUExLDEgMCAwLDEgMTgsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZSA9IFwiTTksNVYxMEg3VjZINVYxMEgzVjhIMVYyMEgzVjE4SDVWMjBIN1YxOEg5VjIwSDExVjE4SDEzVjIwSDE1VjE4SDE3VjIwSDE5VjE4SDIxVjIwSDIzVjhIMjFWMTBIMTlWNkgxN1YxMEgxNVY1SDEzVjEwSDExVjVIOU0zLDEySDVWMTZIM1YxMk03LDEySDlWMTZIN1YxMk0xMSwxMkgxM1YxNkgxMVYxMk0xNSwxMkgxN1YxNkgxNVYxMk0xOSwxMkgyMVYxNkgxOVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlQW5kID0gXCJNMiw0VjIwSDE0QTgsOCAwIDAsMCAyMiwxMkE4LDggMCAwLDAgMTQsNEgyTTQsNkgxNEE2LDYgMCAwLDEgMjAsMTJBNiw2IDAgMCwxIDE0LDE4SDRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlQXJyb3dSaWdodCA9IFwiTTE1IDVWMTBIMTNWNkgxMVYxMEg5VjhIN1YyMEg5VjE4SDExVjIwSDEyLjA5QTYgNiAwIDAgMSAxMiAxOUE2IDYgMCAwIDEgMTMgMTUuNjlWMTJIMTVWMTMuODFBNiA2IDAgMCAxIDE3IDEzLjA5VjEySDE5VjEzLjA5QTYgNiAwIDAgMSAyMSAxMy44MVYxMkgyMlYxMEgyMVY1SDE5VjEwSDE3VjVIMTVNOSAxMkgxMVYxNkg5VjEyTTE5IDE2VjE4SDE1VjIwSDE5VjIyTDIyIDE5TDE5IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdGVOYW5kID0gXCJNMiw0VjIwSDEwQzEzLjQzLDIwIDE2LjUsMTcuODQgMTcuNiwxNC42QzE4LDE0LjggMTguNSwxNSAxOSwxNUEzLDMgMCAwLDAgMjIsMTJBMywzIDAgMCwwIDE5LDlDMTguNSw5IDE4LjAzLDkuMTUgMTcuNiw5LjRDMTYuNSw2LjE2IDEzLjQzLDQgMTAsNEgyTTQsNkgxMEE2LDYgMCAwLDEgMTYsMTJBNiw2IDAgMCwxIDEwLDE4SDRWNk0xOSwxMUMxOS41LDExIDIwLDExLjUgMjAsMTJDMjAsMTIuNSAxOS41LDEzIDE5LDEzQTEsMSAwIDAsMSAxOCwxMkMxOCwxMS41IDE4LjUsMTEgMTksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZU5vciA9IFwiTTIsNEM1LDEwIDUsMTQgMiwyMEg1QzkuNCwyMCAxMywxNy43IDE2LjYsMTMuN0MxNy4xNSwxNC41IDE4LjA0LDE1IDE5LDE1QTMsMyAwIDAsMCAyMiwxMkEzLDMgMCAwLDAgMTksOUMxOC4wNCw5IDE3LjE1LDkuNSAxNi42LDEwLjNDMTMsNi4zIDkuNCw0IDUsNEgyTTUsNkM4LjgsNiAxMiw4LjEgMTUuMywxMkMxMiwxNS45IDguOCwxOCA1LDE4QzYuNSwxNCA2LjUsMTAgNSw2TTE5LDExQzE5LjUsMTEgMjAsMTEuNSAyMCwxMkMyMCwxMi41IDE5LjUsMTMgMTksMTNBMSwxIDAgMCwxIDE4LDEyQzE4LDExLjUgMTguNSwxMSAxOSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlTm90ID0gXCJNMiw0VjIwTDE2LjIsMTNDMTYuNjIsMTQuMTkgMTcuNzQsMTUgMTksMTVBMywzIDAgMCwwIDIyLDEyQTMsMyAwIDAsMCAxOSw5QzE3Ljc0LDkgMTYuNjIsOS44MSAxNi4yLDExTDIsNE00LDcuM0wxMy43LDEyTDQsMTYuN1Y3LjNNMTksMTFDMTkuNSwxMSAyMCwxMS41IDIwLDEyQzIwLDEyLjUgMTkuNSwxMyAxOSwxM0ExLDEgMCAwLDEgMTgsMTJDMTgsMTEuNSAxOC41LDExIDE5LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdGVPcGVuID0gXCJNNyAyMFY2SDVWMTBIM1Y4SDFWMjBIM1YxOEg1VjIwSDdNMyAxNlYxMkg1VjE2SDNNMjEgOFYxMEgxOVY2SDE3VjIwSDE5VjE4SDIxVjIwSDIzVjhIMjFNMjEgMTZIMTlWMTJIMjFWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZU9yID0gXCJNMiw0QzUsMTAgNSwxNCAyLDIwSDhDMTMsMjAgMTksMTYgMjIsMTJDMTksOCAxMyw0IDgsNEgyTTUsNkg4QzExLjUsNiAxNi4zLDkgMTkuMywxMkMxNi4zLDE1IDExLjUsMTggOCwxOEg1QzYuNCwxMy45IDYuNCwxMC4xIDUsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRlWG5vciA9IFwiTTIsNEM1LDEwIDUsMTQgMiwyMEg0QzcsMTQgNywxMCA0LjEsNEgyTTYsNEM5LDEwIDksMTQgNiwyMEg5QzEyLjIsMjAgMTQuOCwxNi44IDE2LjcsMTRDMTcuMjgsMTQuNjUgMTguMTIsMTUgMTksMTVBMywzIDAgMCwwIDIyLDEyQTMsMyAwIDAsMCAxOSw5QzE4LjEyLDkgMTcuMjgsOS4zNSAxNi43LDEwQzE0LjcsNy4yIDEyLjIsNCA5LDRINk05LDZDMTIsNiAxNCwxMCAxNS41LDEyQzE0LDE0IDEyLDE4IDksMThDMTAuNiwxNCAxMC42LDEwIDksNk0xOSwxMUMxOS41LDExIDIwLDExLjUgMjAsMTJDMjAsMTIuNSAxOS41LDEzIDE5LDEzQTEsMSAwIDAsMSAxOCwxMkMxOCwxMS41IDE4LjUsMTEgMTksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2F0ZVhvciA9IFwiTTIsNEM1LDEwIDUsMTQgMiwyMEg0QzcsMTQgNywxMCA0LjEsNEgyTTYsNEM5LDEwIDksMTQgNiwyMEg5QzE0LDIwIDE4LDE3IDIyLDEyQzE4LDcgMTQsNCA5LDRINk05LDZDMTIuOCw2IDE2LDguMSAxOS4zLDEyQzE1LjksMTUuOSAxMi44LDE4IDksMThDMTAuNSwxNCAxMC41LDEwIDksNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXRzYnkgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QzguMjcsNCA1LjE0LDYuNTUgNC4yNSwxMEwxNCwxOS43NUMxNy40NSwxOC44NiAyMCwxNS43MyAyMCwxMkgxNC43NVYxMy41SDE4LjJDMTcuNzEsMTUuNTQgMTYuMjQsMTcuMTkgMTQuMzEsMTcuOTRMNi4wNiw5LjY5QzcsNy4zMSA5LjMsNS42MyAxMiw1LjYzQzE0LjEzLDUuNjMgMTYsNi42NyAxNy4xOCw4LjI4TDE4LjQxLDcuMjJDMTYuOTUsNS4yNiAxNC42Myw0IDEyLDRNNCwxMkE4LDggMCAwLDAgMTIsMjBDMTIuMDQsMjAgMTIuMDksMjAgNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXVnZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQzIwLDE0LjQgMTksMTYuNSAxNy4zLDE4QzE1LjksMTYuNyAxNCwxNiAxMiwxNkMxMCwxNiA4LjIsMTYuNyA2LjcsMThDNSwxNi41IDQsMTQuNCA0LDEyQTgsOCAwIDAsMSAxMiw0TTE0LDUuODlDMTMuNjIsNS45IDEzLjI2LDYuMTUgMTMuMSw2LjU0TDExLjgxLDkuNzdMMTEuNzEsMTBDMTEsMTAuMTMgMTAuNDEsMTAuNiAxMC4xNCwxMS4yNkM5LjczLDEyLjI5IDEwLjIzLDEzLjQ1IDExLjI2LDEzLjg2QzEyLjI5LDE0LjI3IDEzLjQ1LDEzLjc3IDEzLjg2LDEyLjc0QzE0LjEyLDEyLjA4IDE0LDExLjMyIDEzLjU3LDEwLjc2TDEzLjY3LDEwLjVMMTQuOTYsNy4yOUwxNC45Nyw3LjI2QzE1LjE3LDYuNzUgMTQuOTIsNi4xNyAxNC40MSw1Ljk2QzE0LjI4LDUuOTEgMTQuMTUsNS44OSAxNCw1Ljg5TTEwLDZBMSwxIDAgMCwwIDksN0ExLDEgMCAwLDAgMTAsOEExLDEgMCAwLDAgMTEsN0ExLDEgMCAwLDAgMTAsNk03LDlBMSwxIDAgMCwwIDYsMTBBMSwxIDAgMCwwIDcsMTFBMSwxIDAgMCwwIDgsMTBBMSwxIDAgMCwwIDcsOU0xNyw5QTEsMSAwIDAsMCAxNiwxMEExLDEgMCAwLDAgMTcsMTFBMSwxIDAgMCwwIDE4LDEwQTEsMSAwIDAsMCAxNyw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdWdlRW1wdHkgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTQuNCA1LDE2LjUgNi43LDE4QzguMSwxNi43IDEwLDE2IDEyLDE2QzE0LDE2IDE1LjgsMTYuNyAxNy4zLDE4QzE5LDE2LjUgMjAsMTQuNCAyMCwxMkE4LDggMCAwLDAgMTIsNE0xNCw2QTEsMSAwIDAsMSAxNSw3QTEsMSAwIDAsMSAxNCw4QTEsMSAwIDAsMSAxMyw3QTEsMSAwIDAsMSAxNCw2TTEwLDZBMSwxIDAgMCwxIDExLDdBMSwxIDAgMCwxIDEwLDhBMSwxIDAgMCwxIDksN0ExLDEgMCAwLDEgMTAsNk02LjkxLDguOTRDNy4wNCw4Ljk0IDcuMTYsOC45NyA3LjMsOUwxMC41LDEwLjMyTDEwLjc3LDEwLjQzQzExLjMzLDEwIDEyLjA5LDkuODggMTIuNzUsMTAuMTVDMTMuNzcsMTAuNTYgMTQuMjcsMTEuNzMgMTMuODUsMTIuNzVDMTMuNDQsMTMuNzcgMTIuMjcsMTQuMjcgMTEuMjUsMTMuODVDMTAuNTksMTMuNTkgMTAuMTIsMTMgMTAsMTIuMjhMOS43NywxMi4xOEw2LjU1LDEwLjg4TDYuNTMsMTAuODdDNiwxMC42NiA1Ljc3LDEwLjA4IDUuOTcsOS41NkM2LjEzLDkuMTggNi41LDguOTMgNi45MSw4Ljk0VjguOTRNMTcsOUExLDEgMCAwLDEgMTgsMTBBMSwxIDAgMCwxIDE3LDExQTEsMSAwIDAsMSAxNiwxMEExLDEgMCAwLDEgMTcsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXVnZUZ1bGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw0QTgsOCAwIDAsMSAyMCwxMkMyMCwxNC40IDE5LDE2LjUgMTcuMywxOEMxNS45LDE2LjcgMTQsMTYgMTIsMTZDMTAsMTYgOC4yLDE2LjcgNi43LDE4QzUsMTYuNSA0LDE0LjQgNCwxMkE4LDggMCAwLDEgMTIsNE0xMCw2QTEsMSAwIDAsMCA5LDdBMSwxIDAgMCwwIDEwLDhBMSwxIDAgMCwwIDExLDdBMSwxIDAgMCwwIDEwLDZNMTQsNkExLDEgMCAwLDAgMTMsN0ExLDEgMCAwLDAgMTQsOEExLDEgMCAwLDAgMTUsN0ExLDEgMCAwLDAgMTQsNk0xNy4wOSw4Ljk0QzE2Ljk2LDguOTQgMTYuODQsOC45NyAxNi43LDlMMTMuNSwxMC4zMkwxMy4yMywxMC40M0MxMi42NywxMCAxMS45MSw5Ljg4IDExLjI1LDEwLjE1QzEwLjIzLDEwLjU2IDkuNzMsMTEuNzMgMTAuMTUsMTIuNzVDMTAuNTYsMTMuNzcgMTEuNzMsMTQuMjcgMTIuNzUsMTMuODVDMTMuNDEsMTMuNTkgMTMuODgsMTMgMTQsMTIuMjhMMTQuMjMsMTIuMThMMTcuNDUsMTAuODhMMTcuNDcsMTAuODdDMTgsMTAuNjYgMTguMjMsMTAuMDggMTguMDMsOS41NkMxNy44Nyw5LjE4IDE3LjUsOC45MyAxNy4wOSw4Ljk0TTcsOUExLDEgMCAwLDAgNiwxMEExLDEgMCAwLDAgNywxMUExLDEgMCAwLDAgOCwxMEExLDEgMCAwLDAgNyw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdhdWdlTG93ID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkM0LDE0LjQgNSwxNi41IDYuNywxOEM4LjEsMTYuNyAxMCwxNiAxMiwxNkMxNCwxNiAxNS44LDE2LjcgMTcuMywxOEMxOSwxNi41IDIwLDE0LjQgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTAsNS44OUMxMC4zOCw1LjkgMTAuNzQsNi4xNSAxMC45LDYuNTRMMTIuMTksOS43N0wxMi4yOSwxMEMxMywxMC4xMyAxMy41OSwxMC42IDEzLjg2LDExLjI2QzE0LjI3LDEyLjI5IDEzLjc3LDEzLjQ1IDEyLjc0LDEzLjg2QzExLjcxLDE0LjI3IDEwLjU1LDEzLjc3IDEwLjE0LDEyLjc0QzkuODgsMTIuMDggMTAsMTEuMzIgMTAuNDMsMTAuNzZMMTAuMzMsMTAuNUw5LjA0LDcuMjlMOS4wMyw3LjI2QzguODMsNi43NSA5LjA4LDYuMTcgOS41OSw1Ljk2QzkuNzIsNS45MSA5Ljg1LDUuODkgMTAsNS44OVY1Ljg5TTE0LDZBMSwxIDAgMCwxIDE1LDdBMSwxIDAgMCwxIDE0LDhBMSwxIDAgMCwxIDEzLDdBMSwxIDAgMCwxIDE0LDZNMTcsOUExLDEgMCAwLDEgMTgsMTBBMSwxIDAgMCwxIDE3LDExQTEsMSAwIDAsMSAxNiwxMEExLDEgMCAwLDEgMTcsOU03LDlBMSwxIDAgMCwxIDgsMTBBMSwxIDAgMCwxIDcsMTFBMSwxIDAgMCwxIDYsMTBBMSwxIDAgMCwxIDcsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlHYXZlbCA9IFwiTTIuMywyMC4yOEwxMS45LDEwLjY4TDEwLjUsOS4yNkw5Ljc4LDkuOTdDOS4zOSwxMC4zNiA4Ljc2LDEwLjM2IDguMzcsOS45N0w3LjY2LDkuMjZDNy4yNyw4Ljg3IDcuMjcsOC4yNCA3LjY2LDcuODVMMTMuMzIsMi4xOUMxMy43MSwxLjggMTQuMzQsMS44IDE0LjczLDIuMTlMMTUuNDQsMi45QzE1LjgzLDMuMjkgMTUuODMsMy45MiAxNS40NCw0LjMxTDE0LjczLDVMMTYuMTUsNi40M0MxNi41NCw2LjA0IDE3LjE3LDYuMDQgMTcuNTYsNi40M0MxNy45NSw2LjgyIDE3Ljk1LDcuNDYgMTcuNTYsNy44NUwxOC45Nyw5LjI2TDE5LjY4LDguNTVDMjAuMDcsOC4xNiAyMC43MSw4LjE2IDIxLjEsOC41NUwyMS44LDkuMjZDMjIuMTksOS42NSAyMi4xOSwxMC4yOSAyMS44LDEwLjY4TDE2LjE1LDE2LjMzQzE1Ljc2LDE2LjcyIDE1LjEyLDE2LjcyIDE0LjczLDE2LjMzTDE0LjAzLDE1LjYzQzEzLjYzLDE1LjI0IDEzLjYzLDE0LjYgMTQuMDMsMTQuMjFMMTQuNzMsMTMuNUwxMy4zMiwxMi4wOUwzLjcxLDIxLjdDMy4zMiwyMi4wOSAyLjY5LDIyLjA5IDIuMywyMS43QzEuOTEsMjEuMzEgMS45MSwyMC42NyAyLjMsMjAuMjhNMjAsMTlBMiwyIDAgMCwxIDIyLDIxVjIySDEyVjIxQTIsMiAwIDAsMSAxNCwxOUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZW5kZXJGZW1hbGUgPSBcIk0xMiw0QTYsNiAwIDAsMSAxOCwxMEMxOCwxMi45NyAxNS44NCwxNS40NCAxMywxNS45MlYxOEgxNVYyMEgxM1YyMkgxMVYyMEg5VjE4SDExVjE1LjkyQzguMTYsMTUuNDQgNiwxMi45NyA2LDEwQTYsNiAwIDAsMSAxMiw0TTEyLDZBNCw0IDAgMCwwIDgsMTBBNCw0IDAgMCwwIDEyLDE0QTQsNCAwIDAsMCAxNiwxMEE0LDQgMCAwLDAgMTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHZW5kZXJNYWxlID0gXCJNOSw5QzEwLjI5LDkgMTEuNSw5LjQxIDEyLjQ3LDEwLjExTDE3LjU4LDVIMTNWM0gyMVYxMUgxOVY2LjQxTDEzLjg5LDExLjVDMTQuNTksMTIuNSAxNSwxMy43IDE1LDE1QTYsNiAwIDAsMSA5LDIxQTYsNiAwIDAsMSAzLDE1QTYsNiAwIDAsMSA5LDlNOSwxMUE0LDQgMCAwLDAgNSwxNUE0LDQgMCAwLDAgOSwxOUE0LDQgMCAwLDAgMTMsMTVBNCw0IDAgMCwwIDksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VuZGVyTWFsZUZlbWFsZSA9IFwiTTE3LjU4LDRIMTRWMkgyMVY5SDE5VjUuNDFMMTUuMTcsOS4yNEMxNS42OSwxMC4wMyAxNiwxMSAxNiwxMkMxNiwxNC40MiAxNC4yOCwxNi40NCAxMiwxNi45VjE5SDE0VjIxSDEyVjIzSDEwVjIxSDhWMTlIMTBWMTYuOUM3LjcyLDE2LjQ0IDYsMTQuNDIgNiwxMkE1LDUgMCAwLDEgMTEsN0MxMiw3IDEyLjk2LDcuMyAxMy43NSw3LjgzTDE3LjU4LDRNMTEsOUEzLDMgMCAwLDAgOCwxMkEzLDMgMCAwLDAgMTEsMTVBMywzIDAgMCwwIDE0LDEyQTMsMyAwIDAsMCAxMSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlbmRlck1hbGVGZW1hbGVWYXJpYW50ID0gXCJNNyAzQTUgNSAwIDAgMCA5IDdBNSA1IDAgMCAwIDcgMTFBNSA1IDAgMCAwIDExIDE1LjlWMThIOVYyMEgxMVYyMkgxM1YyMEgxNVYxOEgxM1YxNS45QTUgNSAwIDAgMCAxNyAxMUE1IDUgMCAwIDAgMTUgN0E1IDUgMCAwIDAgMTcgM0gxNUEzIDMgMCAwIDEgMTIgNkEzIDMgMCAwIDEgOSAzTTEyIDhBMyAzIDAgMCAxIDE1IDExQTMgMyAwIDAgMSAxMiAxNEEzIDMgMCAwIDEgOSAxMUEzIDMgMCAwIDEgMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZW5kZXJOb25CaW5hcnkgPSBcIk0xMyAzSDExVjUuMjdMOS4wNCA0LjEzTDguMDQgNS44N0wxMCA3TDguMDQgOC4xM0w5LjA0IDkuODdMMTEgOC43M1YxMi4xQzguNzIgMTIuNTYgNyAxNC41OCA3IDE3QzcgMTkuNzYgOS4yNCAyMiAxMiAyMlMxNyAxOS43NiAxNyAxN0MxNyAxNC41OCAxNS4yOCAxMi41NiAxMyAxMi4xVjguNzNMMTQuOTYgOS44N0wxNS45NiA4LjEzTDE0IDdMMTUuOTYgNS44N0wxNC45NiA0LjEzTDEzIDUuMjdWM00xMiAyMEMxMC4zNSAyMCA5IDE4LjY1IDkgMTdTMTAuMzUgMTQgMTIgMTQgMTUgMTUuMzUgMTUgMTcgMTMuNjUgMjAgMTIgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VuZGVyVHJhbnNnZW5kZXIgPSBcIk0xOS41OCwzSDE1VjFIMjNWOUgyMVY0LjQxTDE2LjE3LDkuMjRDMTYuNjksMTAuMDMgMTcsMTEgMTcsMTJDMTcsMTQuNDIgMTUuMjgsMTYuNDQgMTMsMTYuOVYxOUgxNVYyMUgxM1YyM0gxMVYyMUg5VjE5SDExVjE2LjlDOC43MiwxNi40NCA3LDE0LjQyIDcsMTJDNywxMSA3LjMsMTAuMDQgNy44Miw5LjI2TDYuNjQsOC4wN0w1LjI0LDkuNDZMMy44Myw4LjA0TDUuMjMsNi42NUwzLDQuNDJWOEgxVjFIOFYzSDQuNDFMNi42NCw1LjI0TDguMDgsMy44MUw5LjUsNS4yM0w4LjA2LDYuNjZMOS4yMyw3Ljg0QzEwLDcuMzEgMTEsNyAxMiw3QzEzLDcgMTMuOTYsNy4zIDE0Ljc1LDcuODNMMTkuNTgsM00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VudG9vID0gXCJNMTAuMjgsMkM5LjkzLDIgOS41NywyLjAzIDkuMjMsMi4xQzUuNjEsMi43NiAzLjA2LDUuODkgMi44NSw3Ljk2QzIuNzQsOC45NyAzLjI5LDkuNzMgMy41OSwxMC4wNkM0LjQsMTAuOTcgNi4wMywxMS42NiA3LjA3LDEyLjIzQzUuNTYsMTMuNSA0Ljg3LDE0LjE0IDQuMTksMTQuODZDMy4xNywxNS45MyAyLjQ1LDE3LjEgMi40NSwxNy45NUMyLjQ1LDE4LjIyIDIuNCwxOS4wOSAyLjc2LDE5Ljc3QzIuODksMjAuMDMgMy4yNywyMC44OSA0LjQxLDIxLjUzQzUuMTQsMjEuOTQgNi4xNywyMi4wOSA3LjE5LDIxLjk1QzEwLjMzLDIxLjUgMTQuNTQsMTguODMgMTcuNTUsMTYuMzVDMTkuNDYsMTQuNzcgMjAuODYsMTMuMjMgMjEuMjYsMTIuNUMyMS41OSwxMS44NyAyMS42MywxMC43OCAyMS40NCwxMC4wOUMyMC45LDguMTQgMTYuNTMsNC4xNSAxMi45NiwyLjU1QzEyLjE0LDIuMTggMTEuMiwyIDEwLjI4LDJNMTEuMzQsNC45MUMxMS41OSw0LjkxIDExLjgxLDQuOTQgMTIsNUMxMy4xNSw1LjMgMTUuMDgsNi42OCAxNC45MSw3Ljk0QzE0LjY4LDkuNiAxMy4yMywxMC4yNyAxMS41NiwxMC4wM0MxMC41OCw5LjkgOC42Myw4LjggOC43OCw2Ljg5QzguODksNS40IDEwLjMsNC45IDExLjM0LDQuOTFNMTEuMzIsNi42NUMxMS4wNSw2LjY1IDEwLjg0LDYuNzEgMTAuNzQsNi44N0MxMC4yNyw3LjU5IDEwLjUsOC4wOSAxMC45Miw4LjQyQzExLjA3LDguMDQgMTIuNzEsOC40NSAxMi43NSw4Ljc5QzE0LjE3LDcuNzIgMTIuMzYsNi42NiAxMS4zMiw2LjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmUgPSBcIk00LjU5LDYuODlDNS4yOSw2LjE4IDYsNS41NCA2LjMsNS42N0M2LjgsNS44NyA2LjMsNi43IDYsNy4xOUM1Ljc1LDcuNjEgMy4xNCwxMS4wOCAzLjE0LDEzLjVDMy4xNCwxNC43OCAzLjYyLDE1Ljg0IDQuNSwxNi41QzUuMjMsMTcuMDQgNi4yMiwxNy4yMSA3LjEyLDE2Ljk0QzguMTksMTYuNjMgOS4wNywxNS41NCAxMC4xOCwxNC4xN0MxMS4zOSwxMi42OCAxMywxMC43MyAxNC4yNiwxMC43M0MxNS44OSwxMC43MyAxNS45MSwxMS43NCAxNiwxMi41QzEyLjI0LDEzLjE2IDEwLjY0LDE2LjE5IDEwLjY0LDE3Ljg5QzEwLjY0LDE5LjU5IDEyLjA4LDIxIDEzLjg1LDIxQzE1LjUsMjEgMTguMTQsMTkuNjUgMTguNTQsMTQuODhIMjFWMTIuMzhIMTguNTNDMTguMzgsMTAuNzMgMTcuNDQsOC4xOCAxNC41LDguMThDMTIuMjUsOC4xOCAxMC4zMiwxMC4wOSA5LjU2LDExQzksMTEuNzUgNy41LDEzLjUgNy4yNywxMy43NEM3LDE0LjA0IDYuNTksMTQuNTggNi4xNiwxNC41OEM1LjcxLDE0LjU4IDUuNDQsMTMuNzUgNS44LDEyLjY2QzYuMTUsMTEuNTcgNy4yLDkuOCA3LjY1LDkuMTRDOC40Myw4IDguOTUsNy4yMiA4Ljk1LDUuODZDOC45NSwzLjY5IDcuMzEsMyA2LjQ0LDNDNS4xMiwzIDMuOTcsNCAzLjcyLDQuMjVDMy4zNiw0LjYxIDMuMDYsNC45MSAyLjg0LDUuMThMNC41OSw2Ljg5TTEzLjg4LDE4LjU1QzEzLjU3LDE4LjU1IDEzLjE0LDE4LjI5IDEzLjE0LDE3LjgzQzEzLjE0LDE3LjIzIDEzLjg3LDE1LjYzIDE2LDE1LjA3QzE1LjcxLDE3Ljc2IDE0LjU4LDE4LjU1IDEzLjg4LDE4LjU1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVEb3VibGVUYXAgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU0xMSw1QTQsNCAwIDAsMSAxNSw5QzE1LDEwLjUgMTQuMiwxMS43NyAxMywxMi40NlYxMS4yNEMxMy42MSwxMC42OSAxNCw5Ljg5IDE0LDlBMywzIDAgMCwwIDExLDZBMywzIDAgMCwwIDgsOUM4LDkuODkgOC4zOSwxMC42OSA5LDExLjI0VjEyLjQ2QzcuOCwxMS43NyA3LDEwLjUgNyw5QTQsNCAwIDAsMSAxMSw1TTExLDNBNiw2IDAgMCwxIDE3LDlDMTcsMTAuNyAxNi4yOSwxMi4yMyAxNS4xNiwxMy4zM0wxNC4xNiwxMi44OEMxNS4yOCwxMS45NiAxNiwxMC41NiAxNiw5QTUsNSAwIDAsMCAxMSw0QTUsNSAwIDAsMCA2LDlDNiwxMS4wNSA3LjIzLDEyLjgxIDksMTMuNThWMTQuNjZDNi42NywxMy44MyA1LDExLjYxIDUsOUE2LDYgMCAwLDEgMTEsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlUGluY2ggPSBcIk0xMyw5QTEsMSAwIDAsMSAxNCw4QTEsMSAwIDAsMSAxNSw5VjEzLjQ3TDE2LjIxLDEzLjZMMjEuMTUsMTUuOEMyMS42NywxNi4wNCAyMiwxNi41NiAyMiwxNy4xNFYyMS41QzIxLjk3LDIyLjMyIDIxLjMyLDIyLjk3IDIwLjUsMjNIMTRDMTMuNjIsMjMgMTMuMjYsMjIuODUgMTMsMjIuNTdMOC4xLDE4LjM3TDguODQsMTcuNkM5LjAzLDE3LjM5IDkuMywxNy4yOCA5LjU4LDE3LjI4SDkuOEwxMywxOVY5TTE0LDVDMTUuNDIsNSAxNi43NCw1Ljc2IDE3LjQ1LDdDMTguNTYsOC45IDE3LjkxLDExLjM1IDE2LDEyLjQ2VjExLjIzQzE2LjY0LDEwLjY3IDE3LDkuODUgMTcsOUEzLDMgMCAwLDAgMTQsNkEzLDMgMCAwLDAgMTEsOUMxMSw5Ljg1IDExLjM2LDEwLjY3IDEyLDExLjIzVjEyLjQ2QzEwLjc3LDExLjc1IDEwLDEwLjQzIDEwLDlBNCw0IDAgMCwxIDE0LDVNNCw5TDcsMTJINVYxNUgzVjEySDFMNCw5TTQsN0wxLDRIM1YxSDVWNEg3TDQsN005LDE0QzkuNzMsMTQgMTAuNDEsMTQuMTkgMTEsMTQuNTRWMTUuNzZDMTAuNDcsMTUuMjkgOS43NywxNSA5LDE1QTMsMyAwIDAsMCA2LDE4QzYsMTkgNi41LDE5Ljg3IDcuMjIsMjAuNDJMOS4zMSwyMkg5QTQsNCAwIDAsMSA1LDE4QTQsNCAwIDAsMSA5LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTcHJlYWQgPSBcIk00LDFMNyw0SDVWN0gzVjRIMUw0LDFNNCwxNUwxLDEySDNWOUg1VjEySDdMNCwxNU0xMyw5QTEsMSAwIDAsMSAxNCw4QTEsMSAwIDAsMSAxNSw5VjEzLjQ3TDE2LjIxLDEzLjZMMjEuMTUsMTUuOEMyMS42NywxNi4wNCAyMiwxNi41NiAyMiwxNy4xNFYyMS41QzIxLjk3LDIyLjMyIDIxLjMyLDIyLjk3IDIwLjUsMjNIMTRDMTMuNjIsMjMgMTMuMjYsMjIuODUgMTMsMjIuNTdMOC4xLDE4LjM3TDguODQsMTcuNkM5LjAzLDE3LjM5IDkuMywxNy4yOCA5LjU4LDE3LjI4SDkuOEwxMywxOVY5TTE0LDVDMTUuNDIsNSAxNi43NCw1Ljc2IDE3LjQ1LDdDMTguNTYsOC45IDE3LjkxLDExLjM1IDE2LDEyLjQ2VjExLjIzQzE2LjY0LDEwLjY3IDE3LDkuODUgMTcsOUEzLDMgMCAwLDAgMTQsNkEzLDMgMCAwLDAgMTEsOUMxMSw5Ljg1IDExLjM2LDEwLjY3IDEyLDExLjIzVjEyLjQ2QzEwLjc3LDExLjc1IDEwLDEwLjQzIDEwLDlBNCw0IDAgMCwxIDE0LDVNOSwxNEM5LjczLDE0IDEwLjQxLDE0LjE5IDExLDE0LjU0VjE1Ljc2QzEwLjQ3LDE1LjI5IDkuNzcsMTUgOSwxNUEzLDMgMCAwLDAgNiwxOEM2LDE5IDYuNSwxOS44NyA3LjIyLDIwLjQyTDkuMzEsMjJIOUE0LDQgMCAwLDEgNSwxOEE0LDQgMCAwLDEgOSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlU3dpcGUgPSBcIk0yMC4xMSwzLjg5TDIyLDJWN0gxN0wxOS4wOCw0LjkyQzE4LjU1LDQuMjMgMTcuNjQsMy42NiAxNi4zNiwzLjE5QzE1LjA4LDIuNzIgMTMuNjMsMi41IDEyLDIuNUMxMC4zOCwyLjUgOC45MiwyLjcyIDcuNjQsMy4xOUM2LjM2LDMuNjYgNS40NSw0LjIzIDQuOTIsNC45Mkw3LDdIMlYyTDMuODksMy44OUM0LjY0LDMgNS43NCwyLjMxIDcuMiwxLjc4QzguNjUsMS4yNSAxMC4yNSwxIDEyLDFDMTMuNzUsMSAxNS4zNSwxLjI1IDE2LjgsMS43OEMxOC4yNiwyLjMxIDE5LjM2LDMgMjAuMTEsMy44OU0xOS43MywxNi4yN1YxNi40NUwxOSwyMS43QzE4LjkyLDIyLjA4IDE4Ljc2LDIyLjM5IDE4LjUsMjIuNjRDMTguMjMsMjIuODkgMTcuOTEsMjMgMTcuNTMsMjNIMTAuNzNDMTAuMzYsMjMgMTAsMjIuODYgOS43LDIyLjU1TDQuNzMsMTcuNjNMNS41MywxNi44M0M1Ljc1LDE2LjYxIDYsMTYuNSA2LjMzLDE2LjVINi41NkwxMCwxNy4yNVY2LjVDMTAsNi4xMSAxMC4xMyw1Ljc2IDEwLjQzLDUuNDZDMTAuNzMsNS4xNiAxMS4wOCw1IDExLjUsNUMxMS44OSw1IDEyLjI0LDUuMTYgMTIuNTQsNS40NkMxMi44NCw1Ljc2IDEzLDYuMTEgMTMsNi41VjEyLjVIMTMuNzhDMTMuODgsMTIuNSAxNC4wNSwxMi41NSAxNC4zLDEyLjYxTDE4Ljg0LDE0Ljg2QzE5LjQ0LDE1LjE0IDE5LjczLDE1LjYxIDE5LjczLDE2LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZURvd24gPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU0xLDlMNCwxMkw3LDlINVYzSDNWOUgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZUhvcml6b250YWwgPSBcIk02LDFMMyw0TDYsN1Y1SDlWN0wxMiw0TDksMVYzSDZWMU0xMSw4QTEsMSAwIDAsMCAxMCw5VjE5TDYuOCwxNy4yOEg2LjU4QzYuMywxNy4yOCA2LjAzLDE3LjM5IDUuODQsMTcuNkw1LjEsMTguMzdMMTAsMjIuNTdDMTAuMjYsMjIuODUgMTAuNjIsMjMgMTEsMjNIMTcuNUExLjUsMS41IDAgMCwwIDE5LDIxLjVWMTcuMTRDMTksMTYuNTYgMTguNjgsMTYuMDMgMTguMTUsMTUuNzlMMTMuMjEsMTMuNkwxMiwxMy40N1Y5QTEsMSAwIDAsMCAxMSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZUxlZnQgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU0zLDRMNiw3VjVIMTJWM0g2VjFMMyw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZVJpZ2h0ID0gXCJNMTAsOUExLDEgMCAwLDEgMTEsOEExLDEgMCAwLDEgMTIsOVYxMy40N0wxMy4yMSwxMy42TDE4LjE1LDE1Ljc5QzE4LjY4LDE2LjAzIDE5LDE2LjU2IDE5LDE3LjE0VjIxLjVDMTguOTcsMjIuMzIgMTguMzIsMjIuOTcgMTcuNSwyM0gxMUMxMC42MiwyMyAxMC4yNiwyMi44NSAxMCwyMi41N0w1LjEsMTguMzdMNS44NCwxNy42QzYuMDMsMTcuMzkgNi4zLDE3LjI4IDYuNTgsMTcuMjhINi44TDEwLDE5VjlNMTIsNEw5LDFWM0gzVjVIOVY3TDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VzdHVyZVN3aXBlVXAgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU03LDZMNCwzTDEsNkgzVjEySDVWNkg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVTd2lwZVZlcnRpY2FsID0gXCJNNCwzTDEsNkgzVjlIMUw0LDEyTDcsOUg1VjZIN0w0LDNNMTEsOEExLDEgMCAwLDAgMTAsOVYxOUw2LjgsMTcuMjhINi41OEM2LjMsMTcuMjggNi4wMywxNy4zOSA1Ljg0LDE3LjZMNS4xLDE4LjM3TDEwLDIyLjU3QzEwLjI2LDIyLjg1IDEwLjYyLDIzIDExLDIzSDE3LjVBMS41LDEuNSAwIDAsMCAxOSwyMS41VjE3LjE0QzE5LDE2LjU2IDE4LjY4LDE2LjAzIDE4LjE1LDE1Ljc5TDEzLjIxLDEzLjZMMTIsMTMuNDdWOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlVGFwID0gXCJNMTAsOUExLDEgMCAwLDEgMTEsOEExLDEgMCAwLDEgMTIsOVYxMy40N0wxMy4yMSwxMy42TDE4LjE1LDE1Ljc5QzE4LjY4LDE2LjAzIDE5LDE2LjU2IDE5LDE3LjE0VjIxLjVDMTguOTcsMjIuMzIgMTguMzIsMjIuOTcgMTcuNSwyM0gxMUMxMC42MiwyMyAxMC4yNiwyMi44NSAxMCwyMi41N0w1LjEsMTguMzdMNS44NCwxNy42QzYuMDMsMTcuMzkgNi4zLDE3LjI4IDYuNTgsMTcuMjhINi44TDEwLDE5VjlNMTEsNUE0LDQgMCAwLDEgMTUsOUMxNSwxMC41IDE0LjIsMTEuNzcgMTMsMTIuNDZWMTEuMjRDMTMuNjEsMTAuNjkgMTQsOS44OSAxNCw5QTMsMyAwIDAsMCAxMSw2QTMsMyAwIDAsMCA4LDlDOCw5Ljg5IDguMzksMTAuNjkgOSwxMS4yNFYxMi40NkM3LjgsMTEuNzcgNywxMC41IDcsOUE0LDQgMCAwLDEgMTEsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlVGFwQm94ID0gXCJNMjAgMkg0QzIuODkgMiAyIDIuODkgMiA0VjIwQzIgMjEuMTEgMi44OSAyMiA0IDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjRDMjIgMi44OSAyMS4xMSAyIDIwIDJNMTEgNEMxMy4yMSA0IDE1IDUuNzkgMTUgOEMxNSA5LjUgMTQuMiAxMC43NyAxMyAxMS40NlYxMC4yNEMxMy42MSA5LjY5IDE0IDguODkgMTQgOEMxNCA2LjM0IDEyLjY2IDUgMTEgNVM4IDYuMzQgOCA4QzggOC44OSA4LjM5IDkuNjkgOSAxMC4yNFYxMS40NkM3LjggMTAuNzcgNyA5LjUgNyA4QzcgNS43OSA4Ljc5IDQgMTEgNE0xOCAxOC41QzE3Ljk3IDE5LjMyIDE3LjMyIDE5Ljk3IDE2LjUgMjBIMTFDMTAuNjIgMjAgMTAuMjYgMTkuODUgMTAgMTkuNTdMNiAxNS4zN0w2Ljc0IDE0LjZDNi45MyAxNC4zOSA3LjIgMTQuMjggNy41IDE0LjI4SDcuN0wxMCAxNlY4QzEwIDcuNDUgMTAuNDUgNyAxMSA3UzEyIDcuNDUgMTIgOFYxMi40N0wxMy4yMSAxMi42TDE3LjE1IDE0Ljc5QzE3LjY4IDE1LjAzIDE4IDE1LjU2IDE4IDE2LjE0VjE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VzdHVyZVRhcEJ1dHRvbiA9IFwiTTEzIDVDMTUuMjEgNSAxNyA2Ljc5IDE3IDlDMTcgMTAuNSAxNi4yIDExLjc3IDE1IDEyLjQ2VjExLjI0QzE1LjYxIDEwLjY5IDE2IDkuODkgMTYgOUMxNiA3LjM0IDE0LjY2IDYgMTMgNlMxMCA3LjM0IDEwIDlDMTAgOS44OSAxMC4zOSAxMC42OSAxMSAxMS4yNFYxMi40NkM5LjggMTEuNzcgOSAxMC41IDkgOUM5IDYuNzkgMTAuNzkgNSAxMyA1TTIwIDIwLjVDMTkuOTcgMjEuMzIgMTkuMzIgMjEuOTcgMTguNSAyMkgxM0MxMi42MiAyMiAxMi4yNiAyMS44NSAxMiAyMS41N0w4IDE3LjM3TDguNzQgMTYuNkM4LjkzIDE2LjM5IDkuMiAxNi4yOCA5LjUgMTYuMjhIOS43TDEyIDE4VjlDMTIgOC40NSAxMi40NSA4IDEzIDhTMTQgOC40NSAxNCA5VjEzLjQ3TDE1LjIxIDEzLjZMMTkuMTUgMTUuNzlDMTkuNjggMTYuMDMgMjAgMTYuNTYgMjAgMTcuMTRWMjAuNU0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjEyQzIgMTMuMTEgMi45IDE0IDQgMTRIOFYxMkw0IDEyTDQgNEgyMEwyMCAxMkgxOFYxNEgyMFYxMy45NkwyMC4wNCAxNEMyMS4xMyAxNCAyMiAxMy4wOSAyMiAxMlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2VzdHVyZVRhcEhvbGQgPSBcIk0xMCw5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjEzLjQ3TDEzLjIxLDEzLjZMMTguMTUsMTUuNzlDMTguNjgsMTYuMDMgMTksMTYuNTYgMTksMTcuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOU05LDEyLjQ0VjlBMiwyIDAgMCwxIDExLDdBMiwyIDAgMCwxIDEzLDlWMTIuNDRDMTQuMTksMTEuNzUgMTUsMTAuNDcgMTUsOUE0LDQgMCAwLDAgMTEsNUE0LDQgMCAwLDAgNyw5QzcsMTAuNDcgNy44MSwxMS43NSA5LDEyLjQ0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdlc3R1cmVUd29Eb3VibGVUYXAgPSBcIk0xOSwxNS4xNFYyMS41QzE4Ljk3LDIyLjMyIDE4LjMyLDIyLjk3IDE3LjUsMjNIMTFDMTAuNjIsMjMgMTAuMjYsMjIuODUgMTAsMjIuNTdMNS4xLDE4LjM3TDUuODQsMTcuNkM2LjAzLDE3LjM5IDYuMywxNy4yOCA2LjU4LDE3LjI4SDYuOEwxMCwxOVY5QTEsMSAwIDAsMSAxMSw4QTEsMSAwIDAsMSAxMiw5VjdBMSwxIDAgMCwxIDEzLDZBMSwxIDAgMCwxIDE0LDdWMTJMMTguMTUsMTMuODRDMTguNjYsMTQuMDcgMTksMTQuNTggMTksMTUuMTRNMTMsM0E0LDQgMCAwLDEgMTcsN0MxNyw4LjUgMTYuMiw5Ljc3IDE1LDEwLjQ2VjkuMjRDMTUuNjEsOC42OSAxNiw3Ljg5IDE2LDdBMywzIDAgMCwwIDEzLDRDMTEuNjUsNCAxMC41LDQuOSAxMC4xMyw2LjEzQzguOSw2LjUgOCw3LjY1IDgsOUM4LDkuODkgOC4zOSwxMC42OSA5LDExLjI0VjEyLjQ2QzcuOCwxMS43NyA3LDEwLjUgNyw5QzcsNy4zOCA3Ljk3LDYgOS4zNSw1LjM1QzEwLDMuOTcgMTEuMzgsMyAxMywzTTEzLDFBNiw2IDAgMCwxIDE5LDdDMTksOS4wNiAxNy45NiwxMC44OCAxNi4zOCwxMS45NkwxNS4yNiwxMS40NkMxNi44OSwxMC42NCAxOCw4Ljk1IDE4LDdBNSw1IDAgMCwwIDEzLDJDMTEuMTEsMiA5LjQ2LDMuMDUgOC42MSw0LjYxQzcuMDUsNS40NiA2LDcuMTEgNiw5QzYsMTEuMDUgNy4yMywxMi44MSA5LDEzLjU4VjE0LjY2QzYuNjcsMTMuODMgNSwxMS42MSA1LDlDNSw2LjgzIDYuMTUsNC45MyA3Ljg4LDMuODhDOC45MywyLjE1IDEwLjgzLDEgMTMsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHZXN0dXJlVHdvVGFwID0gXCJNMTksMTUuMTRWMjEuNUMxOC45NywyMi4zMiAxOC4zMiwyMi45NyAxNy41LDIzSDExQzEwLjYyLDIzIDEwLjI2LDIyLjg1IDEwLDIyLjU3TDUuMSwxOC4zN0w1Ljg0LDE3LjZDNi4wMywxNy4zOSA2LjMsMTcuMjggNi41OCwxNy4yOEg2LjhMMTAsMTlWOUExLDEgMCAwLDEgMTEsOEExLDEgMCAwLDEgMTIsOVY3QTEsMSAwIDAsMSAxMyw2QTEsMSAwIDAsMSAxNCw3VjEyTDE4LjE1LDEzLjg0QzE4LjY2LDE0LjA3IDE5LDE0LjU4IDE5LDE1LjE0TTE1LDEwLjQ1VjkuMjRMMTUsOS4yM0MxNS4yMyw5LjAzIDE1LjQyLDguNzkgMTUuNTcsOC41NEMxNS44NCw4LjA5IDE2LDcuNTYgMTYsN0EzLDMgMCAwLDAgMTMsNEMxMi4yMSw0IDExLjUsNC4zMSAxMC45NSw0LjgxTDEwLjgxLDQuOTVDMTAuNjgsNS4wOSAxMC41Niw1LjI0IDEwLjQ2LDUuNEMxMC4zNiw1LjU2IDEwLjI3LDUuNzQgMTAuMiw1LjkyQzEwLjE3LDYgMTAuMTUsNi4wNiAxMC4xMyw2LjEzQzguOSw2LjUgOCw3LjY1IDgsOUM4LDkuNyA4LjI0LDEwLjM0IDguNjQsMTAuODVDOC43NCwxMSA4Ljg3LDExLjExIDksMTEuMjNWMTEuMjRMOSwxMi40NlYxMi40NkM3LjgsMTEuNzcgNywxMC41IDcsOUM3LDcuMzggNy45Nyw2IDkuMzUsNS4zNUMxMCwzLjk3IDExLjM4LDMgMTMsM0E0LDQgMCAwLDEgMTcsN0MxNyw4LjUgMTYuMiw5Ljc3IDE1LDEwLjQ2VjEwLjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdob3N0ID0gXCJNMTIsMkE5LDkgMCAwLDAgMywxMVYyMkw2LDE5TDksMjJMMTIsMTlMMTUsMjJMMTgsMTlMMjEsMjJWMTFBOSw5IDAgMCwwIDEyLDJNOSw4QTIsMiAwIDAsMSAxMSwxMEEyLDIgMCAwLDEgOSwxMkEyLDIgMCAwLDEgNywxMEEyLDIgMCAwLDEgOSw4TTE1LDhBMiwyIDAgMCwxIDE3LDEwQTIsMiAwIDAsMSAxNSwxMkEyLDIgMCAwLDEgMTMsMTBBMiwyIDAgMCwxIDE1LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2hvc3RPZmYgPSBcIk0yLDMuMjdMMy4yOCwyTDIyLDIwLjcyTDIwLjczLDIyTDE3Ljg3LDE5LjEzTDE1LDIyTDEyLDE5TDksMjJMNiwxOUwzLDIyVjExQzMsOS4wOSAzLjU5LDcuMzMgNC42LDUuODdMMiwzLjI3TTEyLDJBOSw5IDAgMCwxIDIxLDExVjE3LjE4TDE1LjcsMTEuODhDMTYuNDYsMTEuNTkgMTcsMTAuODYgMTcsMTBBMiwyIDAgMCwwIDE1LDhDMTQuMTQsOCAxMy40MSw4LjU0IDEzLjEzLDkuM0w3LjIsMy4zOEM4LjU5LDIuNSAxMC4yNCwyIDEyLDJNNywxMEEyLDIgMCAwLDAgOSwxMkM5LjUsMTIgOS45MywxMS44MyAxMC4yNywxMS41NEw3LjQ2LDguNzNDNy4xNyw5LjA3IDcsOS41IDcsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2hvc3RPZmZPdXRsaW5lID0gXCJNOC4yOSA1LjA5TDYuODQgMy42NEM4LjMgMi42MSAxMC4wOCAyIDEyIDJDMTYuOTcgMiAyMSA2LjAzIDIxIDExVjE3LjhMMTkgMTUuOFYxMUMxOSA3LjE0IDE1Ljg2IDQgMTIgNEMxMC42MyA0IDkuMzYgNC40IDguMjkgNS4wOU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxNy41NiAxOS40NUwxNSAyMkwxMiAxOUw5IDIyTDYgMTlMMyAyMlYxMUMzIDkuMjYgMy41IDcuNjMgNC4zNiA2LjI1TDEuMTEgM0wyLjM5IDEuNzNMNi44OSA2LjIzTDguNjkgOC4wM0g4LjY5TDEwLjk3IDEwLjMxVjEwLjMxTDE3LjQxIDE2Ljc2TDE3LjQyIDE2Ljc2TDIxIDIwLjM0VjIwLjM1TDIyLjExIDIxLjQ2TTE2LjE0IDE4LjAzTDkuODkgMTEuNzhDOS42MiAxMS45MiA5LjMyIDEyIDkgMTJDNy45IDEyIDcgMTEuMTEgNyAxMEM3IDkuNjggNy4wOCA5LjM4IDcuMjIgOS4xMUw1LjgyIDcuNzFDNS4zIDguNjkgNSA5LjgxIDUgMTFWMTcuMTdMNiAxNi4xN0w3LjQxIDE3LjU5TDkgMTkuMTdMMTAuNTkgMTcuNTlMMTIgMTYuMTdMMTMuNDEgMTcuNTlMMTUgMTkuMTdMMTYuMTQgMTguMDNNMTUgOEMxMy45NiA4IDEzLjExIDguOCAxMyA5LjgyTDE1LjE4IDEyQzE2LjIgMTEuODkgMTcgMTEuMDQgMTcgMTBDMTcgOC45IDE2LjExIDggMTUgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHaG9zdE91dGxpbmUgPSBcIk0xMiAyQzcuMDMgMiAzIDYuMDMgMyAxMVYyMkw2IDE5TDkgMjJMMTIgMTlMMTUgMjJMMTggMTlMMjEgMjJWMTFDMjEgNi4wMyAxNi45NyAyIDEyIDJNMTkgMTcuMTdMMTggMTYuMTdMMTYuNTkgMTcuNTlMMTUgMTkuMTdMMTMuNDEgMTcuNTlMMTIgMTYuMTdMMTAuNTkgMTcuNTlMOSAxOS4xN0w3LjQxIDE3LjU5TDYgMTYuMTdMNSAxNy4xN1YxMUM1IDcuMTQgOC4xNCA0IDEyIDRTMTkgNy4xNCAxOSAxMVYxNy4xN00xMSAxMEMxMSAxMS4xMSAxMC4xMSAxMiA5IDEyUzcgMTEuMTEgNyAxMCA3LjkgOCA5IDggMTEgOC45IDExIDEwTTE3IDEwQzE3IDExLjExIDE2LjExIDEyIDE1IDEyUzEzIDExLjExIDEzIDEwIDEzLjkgOCAxNSA4IDE3IDguOSAxNyAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHaWYgPSBcIk0xMSw4SDEzVjE2SDExVjhNNy42Nyw4SDQuMzNDMy41Myw4IDMsOC42NyAzLDkuMzNWMTQuNjdDMywxNS4zMyAzLjUzLDE2IDQuMzMsMTZINy42N0M4LjQ3LDE2IDksMTUuMzMgOSwxNC42N1YxMkg3VjE0SDVWMTBIOVY5LjMzQzksOC42NyA4LjQ3LDggNy42Nyw4TTIxLDEwVjhIMTVWMTZIMTdWMTRIMTkuNVYxMkgxN1YxMEgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHaWZ0ID0gXCJNOS4wNiwxLjkzQzcuMTcsMS45MiA1LjMzLDMuNzQgNi4xNyw2SDNBMiwyIDAgMCwwIDEsOFYxMEExLDEgMCAwLDAgMiwxMUgxMVY4SDEzVjExSDIyQTEsMSAwIDAsMCAyMywxMFY4QTIsMiAwIDAsMCAyMSw2SDE3LjgzQzE5LDIuNzMgMTQuNiwwLjQyIDEyLjU3LDMuMjRMMTIsNEwxMS40MywzLjIyQzEwLjgsMi4zMyA5LjkzLDEuOTQgOS4wNiwxLjkzTTksNEM5Ljg5LDQgMTAuMzQsNS4wOCA5LjcxLDUuNzFDOS4wOCw2LjM0IDgsNS44OSA4LDVBMSwxIDAgMCwxIDksNE0xNSw0QzE1Ljg5LDQgMTYuMzQsNS4wOCAxNS43MSw1LjcxQzE1LjA4LDYuMzQgMTQsNS44OSAxNCw1QTEsMSAwIDAsMSAxNSw0TTIsMTJWMjBBMiwyIDAgMCwwIDQsMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjEySDEzVjIwSDExVjEySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2lmdE9mZiA9IFwiTTEuMTEgM0w0LjE0IDYuMDRIM0MxLjkgNi4wNCAxIDYuOTMgMSA4LjA0VjEwLjA0QzEgMTAuNTkgMS40NSAxMS4wNCAyIDExLjA0SDkuMTVMMTAuMTUgMTIuMDRIMlYyMC4wNEMyIDIxLjE0IDIuOSAyMi4wNCA0IDIyLjA0SDIwQzIwLjA1IDIyLjA0IDIwLjA5IDIyLjAzIDIwLjEzIDIyTDIxLjU2IDIzLjQ1TDIyLjgzIDIyLjE4TDIuMzkgMS43M0wxLjExIDNNMTEgMTIuODlMMTMgMTQuODlWMjAuMDRIMTFWMTIuODlNMjIgMTIuMDRWMTguOEwxNS4yNCAxMi4wNEgyMk0yMSA2LjA0SDE3LjgzQzE5IDIuNzcgMTQuNiAuNDU1IDEyLjU3IDMuMjhMMTIgNC4wNEwxMS40MyAzLjI2QzEwLjggMi4zNyA5LjkzIDIgOS4wNiAxLjk3QzguMDYgMS45NiA3LjA4IDIuNSA2LjUgMy4zTDguMDQgNC44NEM4LjEzIDQuMzggOC41IDQuMDQgOSA0LjA0QzkuODkgNC4wNCAxMC4zNCA1LjEyIDkuNzEgNS43NUM5LjU2IDUuODkgOS4zOSA2IDkuMjEgNkwxMS4yNCA4LjA0SDEzVjkuOEwxNC4yNCAxMS4wNEgyMkMyMi41NSAxMS4wNCAyMyAxMC41OSAyMyAxMC4wNFY4LjA0QzIzIDYuOTMgMjIuMTEgNi4wNCAyMSA2LjA0TTE1LjcxIDUuNzVDMTUuMDggNi4zOCAxNCA1LjkzIDE0IDUuMDRDMTQgNC41IDE0LjQ1IDQuMDQgMTUgNC4wNEMxNS44OSA0LjA0IDE2LjM0IDUuMTIgMTUuNzEgNS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlHaWZ0T2ZmT3V0bGluZSA9IFwiTTIxIDZIMTcuODNDMTcuOTQgNS42OSAxOCA1LjM1IDE4IDVDMTggMy4zNCAxNi42NiAyIDE1IDJDMTQgMiAxMy4xMiAyLjUgMTIuNTcgMy4yNFYzLjIzTDEyIDRMMTEuNDMgMy4yM1YzLjI0QzEwLjg4IDIuNSAxMCAyIDkgMkM3Ljk3IDIgNy4wNiAyLjUgNi41IDMuMzJMOC4wMyA0LjgzQzguMTIgNC4zNiA4LjUgNCA5IDRDOS41NSA0IDEwIDQuNDUgMTAgNUMxMCA1LjUgOS42NCA1Ljg4IDkuMTcgNS45N0wxMyA5LjhWOEgyMVYxMEgxMy4yTDE1LjIgMTJIMjBWMTYuOEwyMiAxOC44VjEyQzIyLjU1IDEyIDIzIDExLjU1IDIzIDExVjhDMjMgNi45IDIyLjExIDYgMjEgNk0xNSA2QzE0LjQ1IDYgMTQgNS41NSAxNCA1UzE0LjQ1IDQgMTUgNCAxNiA0LjQ1IDE2IDUgMTUuNTUgNiAxNSA2TTEuMTEgM0w0LjExIDZIM0MxLjkgNiAxIDYuOSAxIDhWMTFDMSAxMS41NSAxLjQ1IDEyIDIgMTJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgyMEMyMC4wMyAyMiAyMC4wNyAyMiAyMC4xIDIyTDIxLjU2IDIzLjQ1TDIyLjgzIDIyLjE4TDIuMzkgMS43M0wxLjExIDNNMTMgMTQuODlMMTguMTEgMjBIMTNWMTQuODlNMTEgMTIuODlWMjBINFYxMkgxMC4xMUwxMSAxMi44OU04LjExIDEwSDNWOEg2LjExTDguMTEgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2lmdE9wZW4gPSBcIk0yMiAxMC45MkwxOS4yNiA5LjMzQzIxLjkgNy4wOCAxOS4yNSAyLjg4IDE2LjA4IDQuMzFMMTUuMjEgNC42OEwxNS4xIDMuNzJDMTUgMi42NCAxNC40NCAxLjg3IDEzLjcgMS40MkMxMi4wNiAuNDY3IDkuNTYgMS4xMiA5LjE2IDMuNUw2LjQxIDEuOTJDNS40NSAxLjM2IDQuMjMgMS42OSAzLjY4IDIuNjVMMi42OCA0LjM4QzIuNCA0Ljg2IDIuNTcgNS40NyAzLjA1IDUuNzVMMTAuODQgMTAuMjVMMTIuMzQgNy42NUwxNC4wNyA4LjY1TDEyLjU3IDExLjI1TDIwLjM2IDE1Ljc1QzIwLjg0IDE2IDIxLjQ2IDE1Ljg2IDIxLjczIDE1LjM4TDIyLjczIDEzLjY1QzIzLjI4IDEyLjY5IDIyLjk2IDExLjQ3IDIyIDEwLjkyTTEyLjM3IDVDMTEuNSA1LjI1IDEwLjggNC4zMiAxMS4yNCAzLjU1QzExLjUgMy4wNyAxMi4xMyAyLjkxIDEyLjYxIDMuMThDMTMuMzggMy42MyAxMy4yMyA0Ljc5IDEyLjM3IDVNMTcuNTYgOEMxNi43IDguMjUgMTYgNy4zMiAxNi40NCA2LjU1QzE2LjcxIDYuMDcgMTcuMzMgNS45MSAxNy44IDYuMThDMTguNTcgNi42MyAxOC40MiA3Ljc5IDE3LjU2IDhNMjAuODcgMTYuODhDMjEuMjggMTYuODggMjEuNjcgMTYuNzQgMjIgMTYuNVYyMEMyMiAyMS4xMSAyMS4xMSAyMiAyMCAyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTFIMTAuMTVMMTEgMTEuNVYyMEgxM1YxMi42NUwxOS44NyAxNi42MUMyMC4xNyAxNi43OSAyMC41IDE2Ljg4IDIwLjg3IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdpZnRPcGVuT3V0bGluZSA9IFwiTTIyIDEwLjg3TDE5LjI2IDkuMjhDMTkuNSA5LjA3IDE5LjczIDguOCAxOS45IDguNUMyMC43MyA3LjA3IDIwLjI0IDUuMjMgMTguOCA0LjRDMTcuOTQgMy45IDE2LjkzIDMuOSAxNi4wOCA0LjI2TDE2LjA5IDQuMjVMMTUuMjEgNC42NEwxNS4xIDMuNjhMMTUuMDkgMy42OUMxNSAyLjc4IDE0LjQ3IDEuOSAxMy42MSAxLjRDMTIuMTcgLjU3NSAxMC4zNCAxLjA3IDkuNSAyLjVDOS4zMyAyLjggOS4yMiAzLjEzIDkuMTYgMy40NUw2LjQxIDEuODdDNS40NSAxLjMyIDQuMjMgMS42NCAzLjY4IDIuNkwyLjE4IDUuMkMxLjkgNS42OCAyLjA3IDYuMjkgMi41NSA2LjU2TDQuMjggNy41Nkw4LjUgMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjE0Ljg3TDIyLjczIDEzLjZDMjMuMjggMTIuNjQgMjIuOTYgMTEuNDIgMjIgMTAuODdNMTYuNDQgNi41QzE2LjcxIDYgMTcuMzMgNS44NiAxNy44IDYuMTNDMTguMjggNi40MSAxOC40NSA3IDE4LjE3IDcuNUMxNy44OSA4IDE3LjI4IDguMTQgMTYuOCA3Ljg3QzE2LjMzIDcuNTkgMTYuMTYgNyAxNi40NCA2LjVNMTQuMDcgOC42TDIxIDEyLjZMMjAgMTQuMzNMMTMuMDcgMTAuMzNMMTQuMDcgOC42TTExIDIwSDRWMTJIMTFWMjBNMTEuMzQgOS4zM0w0LjQxIDUuMzNMNS40MSAzLjZMMTIuMzQgNy42TDExLjM0IDkuMzNNMTEuNjEgNC44N0MxMS4xMyA0LjU5IDEwLjk3IDQgMTEuMjQgMy41QzExLjUgMyAxMi4xMyAyLjg2IDEyLjYxIDMuMTNDMTMuMDkgMy40MSAxMy4yNSA0IDEyLjk3IDQuNUMxMi43IDUgMTIuMDkgNS4xNCAxMS42MSA0Ljg3TTEzIDIwVjEyLjZMMjAgMTYuNjRWMjBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2lmdE91dGxpbmUgPSBcIk0yMiwxMlYyMEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgMiwyMFYxMkExLDEgMCAwLDEgMSwxMVY4QTIsMiAwIDAsMSAzLDZINi4xN0M2LjA2LDUuNjkgNiw1LjM1IDYsNUEzLDMgMCAwLDEgOSwyQzEwLDIgMTAuODgsMi41IDExLjQzLDMuMjRWMy4yM0wxMiw0TDEyLjU3LDMuMjNWMy4yNEMxMy4xMiwyLjUgMTQsMiAxNSwyQTMsMyAwIDAsMSAxOCw1QzE4LDUuMzUgMTcuOTQsNS42OSAxNy44Myw2SDIxQTIsMiAwIDAsMSAyMyw4VjExQTEsMSAwIDAsMSAyMiwxMk00LDIwSDExVjEySDRWMjBNMjAsMjBWMTJIMTNWMjBIMjBNOSw0QTEsMSAwIDAsMCA4LDVBMSwxIDAgMCwwIDksNkExLDEgMCAwLDAgMTAsNUExLDEgMCAwLDAgOSw0TTE1LDRBMSwxIDAgMCwwIDE0LDVBMSwxIDAgMCwwIDE1LDZBMSwxIDAgMCwwIDE2LDVBMSwxIDAgMCwwIDE1LDRNMyw4VjEwSDExVjhIM00xMyw4VjEwSDIxVjhIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2l0ID0gXCJNMi42LDEwLjU5TDguMzgsNC44TDEwLjA3LDYuNUM5LjgzLDcuMzUgMTAuMjIsOC4yOCAxMSw4LjczVjE0LjI3QzEwLjQsMTQuNjEgMTAsMTUuMjYgMTAsMTZBMiwyIDAgMCwwIDEyLDE4QTIsMiAwIDAsMCAxNCwxNkMxNCwxNS4yNiAxMy42LDE0LjYxIDEzLDE0LjI3VjkuNDFMMTUuMDcsMTEuNUMxNSwxMS42NSAxNSwxMS44MiAxNSwxMkEyLDIgMCAwLDAgMTcsMTRBMiwyIDAgMCwwIDE5LDEyQTIsMiAwIDAsMCAxNywxMEMxNi44MiwxMCAxNi42NSwxMCAxNi41LDEwLjA3TDEzLjkzLDcuNUMxNC4xOSw2LjU3IDEzLjcxLDUuNTUgMTIuNzgsNS4xNkMxMi4zNSw1IDExLjksNC45NiAxMS41LDUuMDdMOS44LDMuMzhMMTAuNTksMi42QzExLjM3LDEuODEgMTIuNjMsMS44MSAxMy40MSwyLjZMMjEuNCwxMC41OUMyMi4xOSwxMS4zNyAyMi4xOSwxMi42MyAyMS40LDEzLjQxTDEzLjQxLDIxLjRDMTIuNjMsMjIuMTkgMTEuMzcsMjIuMTkgMTAuNTksMjEuNEwyLjYsMTMuNDFDMS44MSwxMi42MyAxLjgxLDExLjM3IDIuNiwxMC41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlHaXRodWIgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJDMiwxNi40MiA0Ljg3LDIwLjE3IDguODQsMjEuNUM5LjM0LDIxLjU4IDkuNSwyMS4yNyA5LjUsMjFDOS41LDIwLjc3IDkuNSwyMC4xNCA5LjUsMTkuMzFDNi43MywxOS45MSA2LjE0LDE3Ljk3IDYuMTQsMTcuOTdDNS42OCwxNi44MSA1LjAzLDE2LjUgNS4wMywxNi41QzQuMTIsMTUuODggNS4xLDE1LjkgNS4xLDE1LjlDNi4xLDE1Ljk3IDYuNjMsMTYuOTMgNi42MywxNi45M0M3LjUsMTguNDUgOC45NywxOCA5LjU0LDE3Ljc2QzkuNjMsMTcuMTEgOS44OSwxNi42NyAxMC4xNywxNi40MkM3Ljk1LDE2LjE3IDUuNjIsMTUuMzEgNS42MiwxMS41QzUuNjIsMTAuMzkgNiw5LjUgNi42NSw4Ljc5QzYuNTUsOC41NCA2LjIsNy41IDYuNzUsNi4xNUM2Ljc1LDYuMTUgNy41OSw1Ljg4IDkuNSw3LjE3QzEwLjI5LDYuOTUgMTEuMTUsNi44NCAxMiw2Ljg0QzEyLjg1LDYuODQgMTMuNzEsNi45NSAxNC41LDcuMTdDMTYuNDEsNS44OCAxNy4yNSw2LjE1IDE3LjI1LDYuMTVDMTcuOCw3LjUgMTcuNDUsOC41NCAxNy4zNSw4Ljc5QzE4LDkuNSAxOC4zOCwxMC4zOSAxOC4zOCwxMS41QzE4LjM4LDE1LjMyIDE2LjA0LDE2LjE2IDEzLjgxLDE2LjQxQzE0LjE3LDE2LjcyIDE0LjUsMTcuMzMgMTQuNSwxOC4yNkMxNC41LDE5LjYgMTQuNSwyMC42OCAxNC41LDIxQzE0LjUsMjEuMjcgMTQuNjYsMjEuNTkgMTUuMTcsMjEuNUMxOS4xNCwyMC4xNiAyMiwxNi40MiAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdpdGxhYiA9IFwiTTIxLjk0IDEzLjExTDIwLjg5IDkuODlDMjAuODkgOS44NiAyMC44OCA5LjgzIDIwLjg3IDkuOEwxOC43NiAzLjMyQzE4LjY1IDMgMTguMzMgMi43NSAxNy45NiAyLjc1QzE3LjYgMi43NSAxNy4yOCAzIDE3LjE3IDMuMzNMMTUuMTcgOS41SDguODRMNi44MyAzLjMzQzYuNzIgMyA2LjQgMi43NSA2LjA0IDIuNzVINi4wNEM1LjY3IDIuNzUgNS4zNSAzIDUuMjQgMy4zM0wzLjEzIDkuODJDMy4xMyA5LjgyIDMuMTMgOS44MyAzLjEzIDkuODNMMi4wNiAxMy4xMUMxLjkgMTMuNjEgMi4wNyAxNC4xNSAyLjUgMTQuNDVMMTEuNzIgMjEuMTZDMTEuODkgMjEuMjggMTIuMTEgMjEuMjggMTIuMjggMjEuMTVMMjEuNSAxNC40NUMyMS45MyAxNC4xNSAyMi4xIDEzLjYxIDIxLjk0IDEzLjExTTguMTUgMTAuNDVMMTAuNzIgMTguMzZMNC41NSAxMC40NU0xMy4yOCAxOC4zN0wxNS43NSAxMC43OEwxNS44NSAxMC40NUgxOS40NkwxMy44NyAxNy42MU0xNy45NyAzLjk0TDE5Ljc4IDkuNUgxNi4xNk0xNC44NiAxMC40NUwxMy4wNyAxNS45NkwxMiAxOS4yNEw5LjE0IDEwLjQ1TTYuMDMgMy45NEw3Ljg0IDkuNUg0LjIzTTMuMDUgMTMuNjlDMi45NiAxMy42MiAyLjkyIDEzLjUgMi45NiAxMy40TDMuNzUgMTAuOTdMOS41NyAxOC40Mk0yMC45NSAxMy42OUwxNC40NCAxOC40MkwxNC40NiAxOC4zOUwyMC4yNSAxMC45N0wyMS4wNCAxMy40QzIxLjA4IDEzLjUgMjEuMDQgMTMuNjIgMjAuOTUgMTMuNjlcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc0NvY2t0YWlsID0gXCJNNy41LDdMNS41LDVIMTguNUwxNi41LDdNMTEsMTNWMTlINlYyMUgxOFYxOUgxM1YxM0wyMSw1VjNIM1Y1TDExLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzQ29ja3RhaWxPZmYgPSBcIk0xMy4zMyAxMi42N0w3LjY2IDdMNi4xMyA1LjQ3TDIuMzkgMS43M0wxLjExIDNMMyA0Ljg5VjVMMTEgMTNWMTlINlYyMUgxOFYxOS44OUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwxMy4zMyAxMi42N00xMyAxOVYxNC44OUwxNy4xMSAxOUgxM004LjIgNUw2LjIgM0gyMVY1TDE0LjYgMTEuNEwxMC4yIDdIMTYuNUwxOC41IDVIOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzRmx1dGUgPSBcIk04LDJIMTZDMTUuNjcsNSAxNS4zMyw4IDE0Ljc1LDkuODNDMTQuMTcsMTEuNjcgMTMuMzMsMTIuMzMgMTIuOTIsMTQuMDhDMTIuNSwxNS44MyAxMi41LDE4LjY3IDEzLjA4LDIwQzEzLjY3LDIxLjMzIDE0LjgzLDIxLjE3IDE1LjQyLDIxLjI1QzE2LDIxLjMzIDE2LDIxLjY3IDE2LDIySDhDOCwyMS42NyA4LDIxLjMzIDguNTgsMjEuMjVDOS4xNywyMS4xNyAxMC4zMywyMS4zMyAxMC45MiwyMEMxMS41LDE4LjY3IDExLjUsMTUuODMgMTEuMDgsMTQuMDhDMTAuNjcsMTIuMzMgOS44MywxMS42NyA5LjI1LDkuODNDOC42Nyw4IDguMzMsNSA4LDJNMTAsNEMxMC4wNyw1LjAzIDEwLjE1LDYuMDcgMTAuMjQsN0gxMy43NkMxMy44NSw2LjA3IDEzLjkzLDUuMDMgMTQsNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc011ZyA9IFwiTTEwLDRWN0gxOFY0SDEwTTgsMkgyMEwyMSwyVjNMMjAsNFYyMEwyMSwyMVYyMkgyMEw4LDIySDdWMjFMOCwyMFYxOC42TDQuMiwxNi44M0MzLjUsMTYuNSAzLDE1LjgyIDMsMTVWOEEyLDIgMCAwLDEgNSw2SDhWNEw3LDNWMkg4TTUsMTVMOCwxNi4zOVY4SDVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2xhc3NNdWdPZmYgPSBcIk0yMCAxOS4zNVYxOS4zNEw2LjY2IDZMNi4wNyA1LjQxTDIuMzkgMS43M0wxLjExIDNMNC4yNiA2LjE1QzMuNSA2LjQ0IDMgNy4xNiAzIDhWMTVDMyAxNS44MiAzLjUgMTYuNSA0LjIgMTYuODNMOCAxOC42VjIwTDcgMjFWMjJIMjAuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZMMjAgMTkuMzVNOCAxNi4zOUw1IDE1VjhINi4xMUw4IDkuODlWMTYuMzlNOCA0TDcgM1YySDIxVjNMMjAgNFYxNi44TDEwLjIgN0gxOFY0SDEwVjYuOEw4IDQuOFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzTXVnVmFyaWFudCA9IFwiTTkuNSAzQzcuNTYgMyA1Ljg1IDQuMjQgNS4yMyA2LjA4QzMuMzYgNi40NCAyIDguMDkgMiAxMEMyIDEyLjIxIDMuNzkgMTQgNiAxNFYyMkgxN1YyMEgyMEMyMC41NSAyMCAyMSAxOS41NSAyMSAxOVYxMUMyMSAxMC40NSAyMC41NSAxMCAyMCAxMEgxOFY4QzE4IDUuNzkgMTYuMjEgNCAxNCA0SDEyLjMyQzExLjUgMy4zNSAxMC41MyAzIDkuNSAzTTkuNSA1QzEwLjI5IDUgMTEuMDMgNS4zNyAxMS41IDZIMTRDMTUuMTEgNiAxNiA2LjkgMTYgOEgxMkMxMCA4IDkuMzIgOS4xMyA4LjUgMTAuNjNDNy42OCAxMi4xMyA2IDEyIDYgMTJDNC44OSAxMiA0IDExLjExIDQgMTBDNCA4LjkgNC44OSA4IDYgOEg3VjcuNUM3IDYuMTIgOC4xMiA1IDkuNSA1TTE3IDEySDE5VjE4SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzTXVnVmFyaWFudE9mZiA9IFwiTTguNDQgNS4yNEw3IDMuNzlDNy43MSAzLjI5IDguNTcgMyA5LjUgM0MxMC41MyAzIDExLjUgMy4zNSAxMi4zMiA0SDE0QzE2LjIxIDQgMTggNS43OSAxOCA4VjEwSDIwQzIwLjU1IDEwIDIxIDEwLjQ1IDIxIDExVjE3LjhMMTkgMTUuOFYxMkgxN1YxMy44TDExLjI2IDguMDZDMTEuNSA4IDExLjczIDggMTIgOEgxNkMxNiA2LjkgMTUuMTEgNiAxNCA2SDExLjVDMTEuMDMgNS4zNyAxMC4yOSA1IDkuNSA1QzkuMTIgNSA4Ljc2IDUuMDkgOC40NCA1LjI0TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE4LjExIDIwSDE3VjIySDZWMTRDMy43OSAxNCAyIDEyLjIxIDIgMTBDMiA4LjM3IDMgNi45NCA0LjQ0IDYuMzNMMS4xMSAzTDIuMzkgMS43M0w3LjE5IDYuNTRMOS42MSA4Ljk2TDE3IDE2LjM0VjE2LjM1TDE4LjY1IDE4SDE4LjY2TDIwLjUgMTkuODRWMTkuODVMMjIuMTEgMjEuNDZNOC41OSAxMC41TDYuMTEgOEg2QzQuODkgOCA0IDguOSA0IDEwQzQgMTEuMTEgNC44OSAxMiA2IDEyQzYgMTIgNy42OCAxMi4xMyA4LjUgMTAuNjNMOC41OSAxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzUGludE91dGxpbmUgPSBcIk00IDJMNiAyMkgxN0wxOSAySDRNNi4yIDRIMTYuOEwxNS4yIDIwSDcuOEw2LjIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc1N0YW5nZSA9IFwiTTgsMkgxNlYyMkg4VjJNMTAsNFY3SDE0VjRIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR2xhc3NUdWxpcCA9IFwiTTgsMkgxNkMxNS42NywyLjY3IDE1LjMzLDMuMzMgMTUuNTgsNUMxNS44Myw2LjY3IDE2LjY3LDkuMzMgMTYuMjUsMTAuNzRDMTUuODMsMTIuMTQgMTQuMTcsMTIuMjggMTMuMzMsMTMuODZDMTIuNSwxNS40NCAxMi41LDE4LjQ3IDEzLjA4LDE5LjlDMTMuNjcsMjEuMzMgMTQuODMsMjEuMTcgMTUuNDIsMjEuMjVDMTYsMjEuMzMgMTYsMjEuNjcgMTYsMjJIOEM4LDIxLjY3IDgsMjEuMzMgOC41OCwyMS4yNUM5LjE3LDIxLjE3IDEwLjMzLDIxLjMzIDEwLjkyLDE5LjlDMTEuNSwxOC40NyAxMS41LDE1LjQ0IDEwLjY3LDEzLjg2QzkuODMsMTIuMjggOC4xNywxMi4xNCA3Ljc1LDEwLjc0QzcuMzMsOS4zMyA4LjE3LDYuNjcgOC40Miw1QzguNjcsMy4zMyA4LjMzLDIuNjcgOCwyTTEwLDRDMTAsNS4xOSA5LjgzLDYuMTcgOS42NCw3SDE0LjI3QzE0LjEzLDYuMTcgMTQsNS4xOSAxNCw0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsYXNzV2luZSA9IFwiTTE1LjUsMjEuMjdMMTQuNjYsMjEuMThDMTMuOSwyMS4xMSAxMy4yNSwyMC42IDEzLDE5Ljg3QzEyLjQ3LDE3LjkxIDEyLjQ3LDE1LjgzIDEzLDEzLjg3QzE1LjMyLDEzLjQgMTcsMTEuMzcgMTcsOUMxNyw3IDE1LDIgMTUsMkg5QzksMiA3LDcgNyw5QzcsMTEuMzggOC42NywxMy40MiAxMSwxMy45QzExLjUzLDE1Ljg2IDExLjUzLDE3Ljk0IDExLDE5LjlDMTAuNzYsMjAuNjIgMTAuMTIsMjEuMTMgOS4zNywyMS4yMUw4LjUsMjEuM0M4LjUsMjEuMyA4LDIxLjI4IDgsMjJIMTZDMTYsMjEuMjggMTUuNSwyMS4yNyAxNS41LDIxLjI3TTkuNDQsN0wxMC40NCw0SDEzLjU2TDE0LjU2LDdIOS40NFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbGFzc2VzID0gXCJNMywxMEMyLjc2LDEwIDIuNTUsMTAuMDkgMi40MSwxMC4yNUMyLjI3LDEwLjQgMi4yMSwxMC42MiAyLjI0LDEwLjg2TDIuNzQsMTMuODVDMi44MiwxNC41IDMuNCwxNSA0LDE1SDdDNy42NCwxNSA4LjM2LDE0LjQ0IDguNSwxMy44Mkw5LjU2LDEwLjYzQzkuNiwxMC41IDkuNTcsMTAuMzEgOS41LDEwLjE5QzkuMzksMTAuMDcgOS4yMiwxMCA5LDEwSDNNNywxN0g0QzIuMzgsMTcgMC45NiwxNS43NCAwLjc2LDE0LjE0TDAuMjYsMTEuMTVDMC4xNSwxMC4zIDAuMzksOS41IDAuOTEsOC45MkMxLjQzLDguMzQgMi4xOSw4IDMsOEg5QzkuODMsOCAxMC41OCw4LjM1IDExLjA2LDguOTZDMTEuMTcsOS4xMSAxMS4yNyw5LjI3IDExLjM1LDkuNDVDMTEuNzgsOS4zNiAxMi4yMiw5LjM2IDEyLjY0LDkuNDVDMTIuNzIsOS4yNyAxMi44Miw5LjExIDEyLjk0LDguOTZDMTMuNDEsOC4zNSAxNC4xNiw4IDE1LDhIMjFDMjEuODEsOCAyMi41Nyw4LjM0IDIzLjA5LDguOTJDMjMuNiw5LjUgMjMuODQsMTAuMyAyMy43NCwxMS4xMUwyMy4yMywxNC4xOEMyMy4wNCwxNS43NCAyMS42MSwxNyAyMCwxN0gxN0MxNS40NCwxNyAxMy45MiwxNS44MSAxMy41NCwxNC4zTDEyLjY0LDExLjU5QzEyLjI2LDExLjMxIDExLjczLDExLjMxIDExLjM1LDExLjU5TDEwLjQzLDE0LjM3QzEwLjA3LDE1LjgyIDguNTYsMTcgNywxN00xNSwxMEMxNC43OCwxMCAxNC42MSwxMC4wNyAxNC41LDEwLjE5QzE0LjQyLDEwLjMxIDE0LjQsMTAuNSAxNC40NSwxMC43TDE1LjQ2LDEzLjc1QzE1LjY0LDE0LjQ0IDE2LjM2LDE1IDE3LDE1SDIwQzIwLjU5LDE1IDIxLjE4LDE0LjUgMjEuMjUsMTMuODlMMjEuNzYsMTAuODJDMjEuNzksMTAuNjIgMjEuNzMsMTAuNCAyMS41OSwxMC4yNUMyMS40NSwxMC4wOSAyMS4yNCwxMCAyMSwxMEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHbG9iZUxpZ2h0ID0gXCJNMTMgOC4wOFYySDExVjguMDhDNy42MSA4LjU3IDUgMTEuNDcgNSAxNUM1IDE4Ljg3IDguMTMgMjIgMTIgMjJTMTkgMTguODcgMTkgMTVDMTkgMTEuNDcgMTYuMzkgOC41NyAxMyA4LjA4TTEyIDIwQzkuMjQgMjAgNyAxNy43NiA3IDE1QzcgMTMuODcgNy4zOSAxMi44NCA4LjAzIDEySDE1Ljk3QzE2LjYxIDEyLjg0IDE3IDEzLjg3IDE3IDE1QzE3IDE3Ljc2IDE0Ljc2IDIwIDEyIDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdsb2JlTW9kZWwgPSBcIk0xNy4zNiwyLjY0TDE1Ljk1LDQuMDZDMTcuMjYsNS4zNyAxOCw3LjE0IDE4LDlBNyw3IDAgMCwxIDExLDE2QzkuMTUsMTYgNy4zNywxNS4yNiA2LjA2LDEzLjk1TDQuNjQsMTUuMzZDNi4wOCwxNi44IDcuOTcsMTcuNzEgMTAsMTcuOTNWMjBINlYyMkgxNlYyMEgxMlYxNy45NEMxNi41NSwxNy40MyAyMCwxMy41OCAyMCw5QzIwLDYuNjIgMTkuMDUsNC4zMyAxNy4zNiwyLjY0TTExLDMuNUE1LjUsNS41IDAgMCwwIDUuNSw5QTUuNSw1LjUgMCAwLDAgMTEsMTQuNUE1LjUsNS41IDAgMCwwIDE2LjUsOUE1LjUsNS41IDAgMCwwIDExLDMuNU0xMSw1LjVDMTIuOTQsNS41IDE0LjUsNy4wNyAxNC41LDlBMy41LDMuNSAwIDAsMSAxMSwxMi41QTMuNSwzLjUgMCAwLDEgNy41LDlBMy41LDMuNSAwIDAsMSAxMSw1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR21haWwgPSBcIk0yMCwxOEgxOFY5LjI1TDEyLDEzTDYsOS4yNVYxOEg0VjZINS4yTDEyLDEwLjI1TDE4LjgsNkgyME0yMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHbm9tZSA9IFwiTTE4LjQyLDJDMTQuMjYsMiAxMy41LDcuOTMgMTUuODIsNy45M0MxOC4xNiw3LjkzIDIyLjU4LDIgMTguNDIsMk0xMiwyLjczQzExLjkyLDIuNzMgMTEuODUsMi43MyAxMS43OCwyLjc0QzkuNDQsMy4wNCAxMC4yNiw3LjEyIDExLjUsNy4xOUMxMi43Miw3LjI3IDE0LjA0LDIuNzMgMTIsMi43M003LjkzLDQuMzRDNy44MSw0LjM0IDcuNjcsNC4zNyA3LjUzLDQuNDNDNS42NSw1LjIxIDcuMjQsOC40MSA4LjMsOC4yQzkuMjcsOCA5LjM5LDQuMyA3LjkzLDQuMzRNNC45Myw2Ljg1QzQuNzcsNi44NCA0LjU5LDYuOSA0LjQxLDcuMDNDMi45LDguMDcgNC45MSwxMC41OCA1LjgsMTAuMTlDNi41Nyw5Ljg1IDYuMDgsNi44OSA0LjkzLDYuODVNMTMuMjksOC43N0MxMC4xLDguOCA2LjAzLDEwLjQyIDUuMzIsMTMuNTlDNC41MywxNy4xMSA4LjU2LDIyIDEyLjc2LDIyQzE0LjgzLDIyIDE3LjIxLDIwLjEzIDE3LjY2LDE3Ljc3QzE4LDE1Ljk3IDEzLjY1LDE2LjY5IDEzLjgxLDE3Ljg4QzE0LDE5LjMxIDEyLjc2LDIwIDExLjU1LDE5LjFDNy42OSwxNi4xNiAxNy45MywxNC43IDE3LjI1LDEwLjY5QzE3LjAzLDkuMzkgMTUuMzQsOC43NiAxMy4yOSw4Ljc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvS2FydCA9IFwiTTE4LDEwSDE1LjUzTDE0LjM4LDguMjhMMTUuOCw3LjMzTDE0LjcsNS42N0wxMC4yLDguNjdMMTEuMywxMC4zM0wxMi43Myw5LjM4TDEzLjg4LDExLjEyTDEzLDEySDEwLjJMNS44Myw1LjQ1TDQuMTcsNi41NUw1Ljg3LDkuMTFDMy4wNCw5LjY1IDEsMTIuMTIgMSwxNVYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTVBNSw1IDAgMCwwIDE4LDEwTTYsMTguNUExLjUsMS41IDAgMCwxIDQuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTguNU0xOCwxOC41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE1LjVBMS41LDEuNSAwIDAsMSAxOS41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb0thcnRUcmFjayA9IFwiTTIyLDUuNUEzLjUsMy41IDAgMCwwIDE4LjUsMkEzLjUsMy41IDAgMCwwIDE1LDUuNVY2QTMsMyAwIDAsMSAxMiw5QzEwLDkgOSw2IDYsNkE0LDQgMCAwLDAgMiwxMFYxMUg0VjEwQTIsMiAwIDAsMSA2LDhDNi44Niw4IDcuNDIsOC40NSA4LjMyLDkuMjRDOS4yOCwxMC4yNyAxMC42LDEwLjkgMTIsMTFBNSw1IDAgMCwwIDE3LDZWNS41QTEuNSwxLjUgMCAwLDEgMTguNSw0QTEuNSwxLjUgMCAwLDEgMjAsNS41QzE5Ljg2LDYuMzUgMTkuNTgsNy4xOCAxOS4xNyw3Ljk0QzE4LjUsOS4yIDE4LjExLDEwLjU4IDE4LDEyQzE4LjA5LDEzLjM3IDE4LjUsMTQuNzEgMTkuMjEsMTUuODlDMTkuNiwxNi41NCAxOS44NywxNy4yNSAyMCwxOEEyLDIgMCAwLDEgMTgsMjBBMiwyIDAgMCwxIDE2LDE4QTMuNzUsMy43NSAwIDAsMCAxMi4yNSwxNC4yNUEzLjc1LDMuNzUgMCAwLDAgOC41LDE4VjE4LjVBMS41LDEuNSAwIDAsMSA3LDIwQTMsMyAwIDAsMSA0LDE3VjE1SDZWMTNIMFYxNUgyVjE3QTUsNSAwIDAsMCA3LDIyQTMuNSwzLjUgMCAwLDAgMTAuNSwxOC41VjE4QTEuNzUsMS43NSAwIDAsMSAxMi4yNSwxNi4yNUExLjc1LDEuNzUgMCAwLDEgMTQsMThBNCw0IDAgMCwwIDE4LDIyQTQsNCAwIDAsMCAyMiwxOEMyMiwxNiAyMCwxNCAyMCwxMkMyMCwxMCAyMiw3LjUgMjIsNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvZyA9IFwiTTQsM0gyMEEyLDIgMCAwLDEgMjIsNVYxOUEyLDIgMCAwLDEgMjAsMjFINEEyLDIgMCAwLDEgMiwxOVY1QTIsMiAwIDAsMSA0LDNNMTAuNDYsNS41NEM5Ljk1LDUuNTQgOS41NCw1Ljk1IDkuNTQsNi40NlY5LjU0QTAuOTIsMC45MiAwIDAsMCAxMC40NiwxMC40NkgxMy41NEEwLjkyLDAuOTIgMCAwLDAgMTQuNDYsOS41NFY2LjQ2QzE0LjQ2LDUuOTUgMTQuMDUsNS41NCAxMy41NCw1LjU0SDEwLjQ2TTExLjA4LDYuNzdIMTIuOTJBMC4zMSwwLjMxIDAgMCwxIDEzLjIzLDcuMDhWOC45MkEwLjMxLDAuMzEgMCAwLDEgMTIuOTIsOS4yM0gxMS4wOEEwLjMxLDAuMzEgMCAwLDEgMTAuNzcsOC45MlY3LjA4QTAuMzEsMC4zMSAwIDAsMSAxMS4wOCw2Ljc3TTQuOTIsNS41NEEwLjkyLDAuOTIgMCAwLDAgNCw2LjQ2VjkuNTRDNCwxMC4wNSA0LjQxLDEwLjQ2IDQuOTIsMTAuNDZINy4wOFY5LjIzSDUuNTRDNS4zNyw5LjIzIDUuMjMsOS4wOSA1LjIzLDguOTJWNy4wOEM1LjIzLDYuOTEgNS4zNyw2Ljc3IDUuNTQsNi43N0g3LjM4QTAuMzEsMC4zMSAwIDAsMSA3LjY5LDcuMDhWMTAuNzdBMC4zMSwwLjMxIDAgMCwxIDcuMzgsMTEuMDhINFYxMi4zMUg4QzguNSwxMi4zMSA4LjkyLDExLjg5IDguOTIsMTEuMzhWNi40NkEwLjkyLDAuOTIgMCAwLDAgOCw1LjU0SDQuOTJNMTYsNS41NEMxNS41LDUuNTQgMTUuMDgsNS45NSAxNS4wOCw2LjQ2VjkuNTRDMTUuMDgsMTAuMDUgMTUuNSwxMC40NiAxNiwxMC40NkgxOC4xNVY5LjIzSDE2LjYyQzE2LjQ1LDkuMjMgMTYuMzEsOS4wOSAxNi4zMSw4LjkyVjcuMDhDMTYuMzEsNi45MSAxNi40NSw2Ljc3IDE2LjYyLDYuNzdIMTguNDZDMTguNjMsNi43NyAxOC43Nyw2LjkxIDE4Ljc3LDcuMDhWMTAuNzdDMTguNzcsMTAuOTQgMTguNjMsMTEuMDggMTguNDYsMTEuMDhIMTUuMDhWMTIuMzFIMTkuMDhDMTkuNTksMTIuMzEgMjAsMTEuODkgMjAsMTEuMzhWNi40NkMyMCw1Ljk1IDE5LjU5LDUuNTQgMTkuMDgsNS41NEgxNk05Ljg1LDEzLjU0QzkuMzQsMTMuNTQgOC45MiwxMy45NSA4LjkyLDE0LjQ2VjE3LjU0QzguOTIsMTguMDUgOS4zNCwxOC40NiA5Ljg1LDE4LjQ2SDEyLjkyQzEzLjQzLDE4LjQ2IDEzLjg1LDE4LjA1IDEzLjg1LDE3LjU0VjE0LjQ2QzEzLjg1LDEzLjk1IDEzLjQzLDEzLjU0IDEyLjkyLDEzLjU0SDkuODVNMTAuNDYsMTQuNzdIMTIuMzFDMTIuNSwxNC43NyAxMi42MiwxNC45MSAxMi42MiwxNS4wOFYxNi45MkEwLjMxLDAuMzEgMCAwLDEgMTIuMzEsMTcuMjNIMTAuNDZDMTAuMjksMTcuMjMgMTAuMTUsMTcuMDkgMTAuMTUsMTYuOTJWMTUuMDhBMC4zMSwwLjMxIDAgMCwxIDEwLjQ2LDE0Ljc3TTQuOTIsMTMuNTRDNC40MSwxMy41NCA0LDEzLjk1IDQsMTQuNDZWMTcuNTRDNCwxOC4wNSA0LjQxLDE4LjQ2IDQuOTIsMTguNDZIOC4zMVYxNy4yM0g1LjU0QzUuMzcsMTcuMjMgNS4yMywxNy4wOSA1LjIzLDE2LjkyVjE1LjA4QzUuMjMsMTQuOTEgNS4zNywxNC43NyA1LjU0LDE0Ljc3SDguMzFWMTMuNTRINC45Mk0xNS4zOCwxMy41NEMxNC44NywxMy41NCAxNC40NiwxMy45NSAxNC40NiwxNC40NlYxOC40NkgxNS42OVYxNS4wOEEwLjMxLDAuMzEgMCAwLDEgMTYsMTQuNzdIMTYuNjJWMTguNDZIMTcuODVWMTQuNzdIMTguNzdWMTguNDZIMjBWMTMuNTRIMTUuMzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29sZCA9IFwiTTEgMjJMMi41IDE3SDkuNUwxMSAyMkgxTTEzIDIyTDE0LjUgMTdIMjEuNUwyMyAyMkgxM002IDE1TDcuNSAxMEgxNC41TDE2IDE1SDZNMjMgNi4wNUwxOS4xNCA3LjE0TDE4LjA1IDExTDE2Ljk2IDcuMTRMMTMuMSA2LjA1TDE2Ljk2IDQuOTZMMTguMDUgMS4xTDE5LjE0IDQuOTZMMjMgNi4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb2xmID0gXCJNMTkuNSwxOEExLjUsMS41IDAgMCwxIDIxLDE5LjVBMS41LDEuNSAwIDAsMSAxOS41LDIxQTEuNSwxLjUgMCAwLDEgMTgsMTkuNUExLjUsMS41IDAgMCwxIDE5LjUsMThNMTcsNS45MkwxMSw5VjE4LjAzQzEzLjg0LDE4LjE5IDE2LDE5IDE2LDIwQzE2LDIxLjEgMTMuMzEsMjIgMTAsMjJDNi42OSwyMiA0LDIxLjEgNCwyMEM0LDE5LjI2IDUuMjEsMTguNjIgNywxOC4yN1YyMEg5VjJMMTcsNS45MlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb2xmQ2FydCA9IFwiTTE5Ljg5IDEyLjM3TDE4LjI1IDVIMTlWM0gzVjdIMVY5SDNWMTIuNTRBNiA2IDAgMCAwIDEgMTdWMTlIM0EzIDMgMCAwIDAgOSAxOUgxNUEzIDMgMCAwIDAgMjEgMTlIMjNWMTdBNSA1IDAgMCAwIDE5Ljg5IDEyLjM3TTYgMjAuNUExLjUgMS41IDAgMSAxIDcuNSAxOUExLjUgMS41IDAgMCAxIDYgMjAuNU0xNS41MyAxMkwxNC4zOCAxMC4yOEwxNS44IDkuMzNMMTQuNyA3LjY3TDEwLjIgMTAuNjdMMTEuMyAxMi4zM0wxMi43MyAxMS4zOEwxMy44OCAxMy4xMkwxMyAxNEgxMC4yTDUgN1Y1SDE2LjJMMTcuNzUgMTJNMTggMjAuNUExLjUgMS41IDAgMSAxIDE5LjUgMTlBMS41IDEuNSAwIDAgMSAxOCAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvbGZUZWUgPSBcIk03IDE5VjE3SDE3VjE5SDE1QzE0LjUgMTkgMTQgMTkuMiAxMy42IDE5LjZTMTMgMjAuNSAxMyAyMVYyMkgxMVYyMUMxMSAyMC41IDEwLjggMjAgMTAuNCAxOS42UzkuNSAxOSA5IDE5SDdNMTEgNkMxMSA1LjcgMTEuMSA1LjUgMTEuMyA1LjNTMTEuNyA1IDEyIDUgMTIuNSA1LjEgMTIuNyA1LjMgMTMgNS43IDEzIDYgMTIuOSA2LjUgMTIuNyA2LjcgMTIuMyA3IDEyIDcgMTEuNSA2LjkgMTEuMyA2LjcgMTEgNi4zIDExIDZNMTMgOEMxMyA3LjcgMTMuMSA3LjUgMTMuMyA3LjNTMTMuNyA3IDE0IDcgMTQuNSA3LjEgMTQuNyA3LjMgMTUgNy43IDE1IDggMTQuOSA4LjUgMTQuNyA4LjcgMTQuMyA5IDE0IDkgMTMuNSA4LjkgMTMuMyA4LjcgMTMgOC4zIDEzIDhNOSA4QzkgNy43IDkuMSA3LjUgOS4zIDcuM1M5LjcgNyAxMCA3IDEwLjUgNy4xIDEwLjcgNy4zIDExIDcuNyAxMSA4IDEwLjkgOC41IDEwLjcgOC43IDEwLjMgOSAxMCA5IDkuNSA4LjkgOS4zIDguNyA5IDguMyA5IDhNMTYuOSA0LjFDMTUuNSAyLjcgMTMuOSAyLjEgMTIgMi4xUzguNCAyLjggNy4xIDQuMSA1IDcuMSA1IDkgNS43IDEyLjYgNyAxMy45IDEwIDE1LjkgMTEuOSAxNS45IDE1LjUgMTUuMiAxNi44IDEzLjkgMTguOCAxMC45IDE4LjggOSAxOC4zIDUuNCAxNi45IDQuMU0xNS41IDEyLjVDMTQuNSAxMy41IDEzLjMgMTQgMTIgMTRTOS40IDEzLjUgOC41IDEyLjUgNyAxMC40IDcgOSA3LjUgNi40IDguNSA1LjUgMTAuNiA0IDEyIDQgMTQuNiA0LjUgMTUuNSA1LjUgMTcgNy42IDE3IDkgMTYuNSAxMS42IDE1LjUgMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb25kb2xhID0gXCJNMTgsMTBIMTNWNy41OUwyMi4xMiw2LjA3TDIxLjg4LDQuNTlMMTYuNDEsNS41QzE2LjQ2LDUuMzUgMTYuNSw1LjE4IDE2LjUsNUExLjUsMS41IDAgMCwwIDE1LDMuNUExLjUsMS41IDAgMCwwIDEzLjUsNUMxMy41LDUuMzUgMTMuNjMsNS42OCAxMy44NCw1LjkzTDEzLDYuMDdWNUgxMVY2LjQxTDEwLjQxLDYuNUMxMC40Niw2LjM1IDEwLjUsNi4xOCAxMC41LDZBMS41LDEuNSAwIDAsMCA5LDQuNUExLjUsMS41IDAgMCwwIDcuNSw2QzcuNSw2LjM2IDcuNjMsNi42OCA3LjgzLDYuOTNMMS44OCw3LjkzTDIuMTIsOS40MUwxMSw3LjkzVjEwSDZDNC44OSwxMCA0LDEwLjkgNCwxMlYxOEEyLDIgMCAwLDAgNiwyMEgxOEEyLDIgMCAwLDAgMjAsMThWMTJBMiwyIDAgMCwwIDE4LDEwTTYsMTJIOC4yNVYxNkg2VjEyTTkuNzUsMTZWMTJIMTQuMjVWMTZIOS43NU0xOCwxNkgxNS43NVYxMkgxOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29kcmVhZHMgPSBcIk0xNywxMi43N0MxNS45NiwxNC40MiAxNC4yMiwxNS41IDEyLjI1LDE1LjVDOS4wNywxNS41IDYuNSwxMi43IDYuNSw5LjI1QzYuNSw1LjggOS4wNywzIDEyLjI1LDNDMTQuMjIsMyAxNS45Niw0LjA4IDE3LDUuNzNWM0gxOFYxNS4yNUMxOCwyMC43MSAxNC41NCwyMSAxMS41LDIxQzksMjEgNy41NSwxOS4zMSA3LjEzLDE3SDguMTRDOC41LDE4Ljc1IDkuNTQsMjAgMTEuNSwyMEMxMy43MiwyMCAxNywyMC4wNSAxNywxNS4yNVYxNS4yNUwxNywxMi43N00xMi4yNSw0QzkuNjMsNCA3LjUsNi4zNSA3LjUsOS4yNUM3LjUsMTIuMTUgOS42MywxNC41IDEyLjI1LDE0LjVDMTQuODcsMTQuNSAxNywxMi4xNSAxNyw5LjI1QzE3LDYuMzUgMTQuODcsNCAxMi4yNSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZSA9IFwiTTIxLjM1LDExLjFIMTIuMThWMTMuODNIMTguNjlDMTguMzYsMTcuNjQgMTUuMTksMTkuMjcgMTIuMTksMTkuMjdDOC4zNiwxOS4yNyA1LDE2LjI1IDUsMTJDNSw3LjkgOC4yLDQuNzMgMTIuMiw0LjczQzE1LjI5LDQuNzMgMTcuMSw2LjcgMTcuMSw2LjdMMTksNC43MkMxOSw0LjcyIDE2LjU2LDIgMTIuMSwyQzYuNDIsMiAyLjAzLDYuOCAyLjAzLDEyQzIuMDMsMTcuMDUgNi4xNiwyMiAxMi4yNSwyMkMxNy42LDIyIDIxLjUsMTguMzMgMjEuNSwxMi45MUMyMS41LDExLjc2IDIxLjM1LDExLjEgMjEuMzUsMTEuMVYxMS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUFkcyA9IFwiTTEyLjI1IDEuNDdDMTEuNTUgMS40MiAxMC44MiAxLjU4IDEwLjE3IDEuOTZDOC40MSAyLjk3IDcuODEgNS4yMSA4LjgyIDYuOTZMMTYuMTYgMTkuNjZDMTcuMTcgMjEuNDIgMTkuNDEgMjIgMjEuMTcgMjFDMjIuOTIgMjAgMjMuNSAxNy43NSAyMi41IDE2TDE1LjE4IDMuM0MxNC41NCAyLjIgMTMuNDMgMS41NiAxMi4yNSAxLjQ3TTYuODIgNi43NkwxLjUgMTZBMy42NyAzLjY3IDAgMCAwIDEgMTcuODNBMy42NyAzLjY3IDAgMCAwIDQuNjcgMjEuNUEzLjY3IDMuNjcgMCAwIDAgNy44NCAxOS42NlYxOS42N0wxMSAxNC4xOUM5LjY1IDExLjg5IDguMjcgOS42IDcuMDMgNy4yM0M2Ljk1IDcuMDggNi44OCA2LjkyIDYuODMgNi43NlpMMTYuNCA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUFuYWx5dGljcyA9IFwiTTE1Ljg2IDQuMzlWMTkuMzlDMTUuODYgMjEuMDYgMTcgMjIgMTguMjUgMjJDMTkuMzkgMjIgMjAuNjQgMjEuMjEgMjAuNjQgMTkuMzlWNC41QzIwLjY0IDIuOTYgMTkuNSAyIDE4LjI1IDJTMTUuODYgMy4wNiAxNS44NiA0LjM5TTkuNjEgMTJWMTkuMzlDOS42MSAyMS4wNyAxMC43NyAyMiAxMiAyMkMxMy4xNCAyMiAxNC4zOSAyMS4yMSAxNC4zOSAxOS4zOVYxMi4xMUMxNC4zOSAxMC41NyAxMy4yNSA5LjYxIDEyIDkuNjFTOS42MSAxMC42NyA5LjYxIDEyTTUuNzUgMTcuMjNDNy4wNyAxNy4yMyA4LjE0IDE4LjMgOC4xNCAxOS42MUM4LjE0IDIwLjkzIDcuMDcgMjIgNS43NSAyMlMzLjM2IDIwLjkzIDMuMzYgMTkuNjFDMy4zNiAxOC4zIDQuNDMgMTcuMjMgNS43NSAxNy4yM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVBc3Npc3RhbnQgPSBcIk03LDJBNiw2IDAgMCwwIDEsOEE2LDYgMCAwLDAgNywxNEE2LDYgMCAwLDAgMTMsOEE2LDYgMCAwLDAgNywyTTIxLjUsNkExLjUsMS41IDAgMCwwIDIwLDcuNUExLjUsMS41IDAgMCwwIDIxLjUsOUExLjUsMS41IDAgMCwwIDIzLDcuNUExLjUsMS41IDAgMCwwIDIxLjUsNk0xNyw4QTMsMyAwIDAsMCAxNCwxMUEzLDMgMCAwLDAgMTcsMTRBMywzIDAgMCwwIDIwLDExQTMsMyAwIDAsMCAxNyw4TTE3LDE1QTMuNSwzLjUgMCAwLDAgMTMuNSwxOC41QTMuNSwzLjUgMCAwLDAgMTcsMjJBMy41LDMuNSAwIDAsMCAyMC41LDE4LjVBMy41LDMuNSAwIDAsMCAxNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDYXJkYm9hcmQgPSBcIk0yMC43NCw2SDMuMkMyLjU1LDYgMiw2LjU3IDIsNy4yN1YxNy43M0MyLDE4LjQzIDIuNTUsMTkgMy4yMywxOUg4QzguNTQsMTkgOSwxOC42OCA5LjE2LDE4LjIxTDEwLjU1LDE0Ljc0QzEwLjc5LDE0LjE2IDExLjM1LDEzLjc1IDEyLDEzLjc1QzEyLjY1LDEzLjc1IDEzLjIxLDE0LjE2IDEzLjQ1LDE0Ljc0TDE0Ljg0LDE4LjIxQzE1LjAzLDE4LjY4IDE1LjQ2LDE5IDE1Ljk1LDE5SDIwLjc0QzIxLjQ1LDE5IDIyLDE4LjQzIDIyLDE3LjczVjcuMjdDMjIsNi41NyAyMS40NSw2IDIwLjc0LDZNNy4yMiwxNC41OEM2LDE0LjU4IDUsMTMuNTUgNSwxMi4yOUM1LDExIDYsMTAgNy4yMiwxMEM4LjQ0LDEwIDkuNDMsMTEgOS40MywxMi4yOUM5LjQzLDEzLjU1IDguNDQsMTQuNTggNy4yMiwxNC41OE0xNi43OCwxNC41OEMxNS41NiwxNC41OCAxNC41NywxMy41NSAxNC41NywxMi4yOUMxNC41NywxMS4wMyAxNS41NiwxMCAxNi43OCwxMEMxOCwxMCAxOSwxMS4wMyAxOSwxMi4yOUMxOSwxMy41NSAxOCwxNC41OCAxNi43OCwxNC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDaHJvbWUgPSBcIk0xMiwyMEwxNS40NiwxNEgxNS40NUMxNS43OSwxMy40IDE2LDEyLjczIDE2LDEyQzE2LDEwLjggMTUuNDYsOS43MyAxNC42Miw5SDE5LjQxQzE5Ljc5LDkuOTMgMjAsMTAuOTQgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTQsMTJDNCwxMC41NCA0LjM5LDkuMTggNS4wNyw4TDguNTQsMTRIOC41NUM5LjI0LDE1LjE5IDEwLjUsMTYgMTIsMTZDMTIuNDUsMTYgMTIuODgsMTUuOTEgMTMuMjksMTUuNzdMMTAuODksMTkuOTFDNywxOS4zNyA0LDE2LjA0IDQsMTJNMTUsMTJBMywzIDAgMCwxIDEyLDE1QTMsMyAwIDAsMSA5LDEyQTMsMyAwIDAsMSAxMiw5QTMsMyAwIDAsMSAxNSwxMk0xMiw0QzE0Ljk2LDQgMTcuNTQsNS42MSAxOC45Miw4SDEyQzEwLjA2LDggOC40NSw5LjM4IDguMDgsMTEuMjFMNS43LDcuMDhDNy4xNiw1LjIxIDkuNDQsNCAxMiw0TTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUNpcmNsZXMgPSBcIk0xNi42NiwxNUgxN0MxOCwxNSAxOSwxNC44IDE5Ljg3LDE0LjQ2QzE5LjE3LDE4LjczIDE1LjQ3LDIyIDExLDIyQzYsMjIgMiwxNy45NyAyLDEzQzIsOC41MyA1LjI3LDQuODMgOS41NCw0LjEzQzkuMiw1IDksNiA5LDdWNy4zNEM2LjY4LDguMTYgNSwxMC4zOCA1LDEzQTYsNiAwIDAsMCAxMSwxOUMxMy42MiwxOSAxNS44NCwxNy4zMiAxNi42NiwxNU0xNywxMEEzLDMgMCAwLDAgMjAsN0EzLDMgMCAwLDAgMTcsNEEzLDMgMCAwLDAgMTQsN0EzLDMgMCAwLDAgMTcsMTBNMTcsMUE2LDYgMCAwLDEgMjMsN0E2LDYgMCAwLDEgMTcsMTNBNiw2IDAgMCwxIDExLDdDMTEsMy42OCAxMy42OSwxIDE3LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ2lyY2xlc0NvbW11bml0aWVzID0gXCJNMTUsMTJDMTMuODksMTIgMTMsMTIuODkgMTMsMTRBMiwyIDAgMCwwIDE1LDE2QTIsMiAwIDAsMCAxNywxNEMxNywxMi44OSAxNi4xLDEyIDE1LDEyTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTQsOUMxNCw3Ljg5IDEzLjEsNyAxMiw3QzEwLjg5LDcgMTAsNy44OSAxMCw5QTIsMiAwIDAsMCAxMiwxMUEyLDIgMCAwLDAgMTQsOU05LDEyQTIsMiAwIDAsMCA3LDE0QTIsMiAwIDAsMCA5LDE2QTIsMiAwIDAsMCAxMSwxNEMxMSwxMi44OSAxMC4xLDEyIDksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ2lyY2xlc0V4dGVuZGVkID0gXCJNMTgsMTlDMTYuODksMTkgMTYsMTguMSAxNiwxN0MxNiwxNS44OSAxNi44OSwxNSAxOCwxNUEyLDIgMCAwLDEgMjAsMTdBMiwyIDAgMCwxIDE4LDE5TTE4LDEzQTQsNCAwIDAsMCAxNCwxN0E0LDQgMCAwLDAgMTgsMjFBNCw0IDAgMCwwIDIyLDE3QTQsNCAwIDAsMCAxOCwxM00xMiwxMS4xQTEuOSwxLjkgMCAwLDAgMTAuMSwxM0ExLjksMS45IDAgMCwwIDEyLDE0LjlBMS45LDEuOSAwIDAsMCAxMy45LDEzQTEuOSwxLjkgMCAwLDAgMTIsMTEuMU02LDE5QzQuODksMTkgNCwxOC4xIDQsMTdDNCwxNS44OSA0Ljg5LDE1IDYsMTVBMiwyIDAgMCwxIDgsMTdBMiwyIDAgMCwxIDYsMTlNNiwxM0E0LDQgMCAwLDAgMiwxN0E0LDQgMCAwLDAgNiwyMUE0LDQgMCAwLDAgMTAsMTdBNCw0IDAgMCwwIDYsMTNNMTIsNEEyLDIgMCAwLDEgMTQsNkEyLDIgMCAwLDEgMTIsOEMxMC44OSw4IDEwLDcuMSAxMCw2QzEwLDQuODkgMTAuODksNCAxMiw0TTEyLDEwQTQsNCAwIDAsMCAxNiw2QTQsNCAwIDAsMCAxMiwyQTQsNCAwIDAsMCA4LDZBNCw0IDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUNpcmNsZXNHcm91cCA9IFwiTTUsMTBBMiwyIDAgMCwwIDMsMTJDMywxMy4xMSAzLjksMTQgNSwxNEM2LjExLDE0IDcsMTMuMTEgNywxMkEyLDIgMCAwLDAgNSwxME01LDE2QTQsNCAwIDAsMSAxLDEyQTQsNCAwIDAsMSA1LDhBNCw0IDAgMCwxIDksMTJBNCw0IDAgMCwxIDUsMTZNMTAuNSwxMUgxNFY4TDE4LDEyTDE0LDE2VjEzSDEwLjVWMTFNNSw2QzQuNTUsNiA0LjExLDYuMDUgMy42OSw2LjE0QzUuNjMsMy4wNSA5LjA4LDEgMTMsMUMxOS4wOCwxIDI0LDUuOTIgMjQsMTJDMjQsMTguMDggMTkuMDgsMjMgMTMsMjNDOS4wOCwyMyA1LjYzLDIwLjk1IDMuNjksMTcuODZDNC4xMSwxNy45NSA0LjU1LDE4IDUsMThDNS44LDE4IDYuNTYsMTcuODQgNy4yNSwxNy41NkM4LjcxLDE5LjA3IDEwLjc0LDIwIDEzLDIwQTgsOCAwIDAsMCAyMSwxMkE4LDggMCAwLDAgMTMsNEMxMC43NCw0IDguNzEsNC45MyA3LjI1LDYuNDRDNi41Niw2LjE2IDUuOCw2IDUsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDbGFzc3Jvb20gPSBcIk0yMywySDFBMSwxIDAgMCwwIDAsM1YyMUExLDEgMCAwLDAgMSwyMkgyM0ExLDEgMCAwLDAgMjQsMjFWM0ExLDEgMCAwLDAgMjMsMk0yMiwyMEgyMFYxOUgxNVYyMEgyVjRIMjJWMjBNMTAuMjksOS43MUExLjcxLDEuNzEgMCAwLDEgMTIsOEMxMi45NSw4IDEzLjcxLDguNzcgMTMuNzEsOS43MUMxMy43MSwxMC42NiAxMi45NSwxMS40MyAxMiwxMS40M0MxMS4wNSwxMS40MyAxMC4yOSwxMC42NiAxMC4yOSw5LjcxTTUuNzEsMTEuMjlDNS43MSwxMC41OCA2LjI5LDEwIDcsMTBBMS4yOSwxLjI5IDAgMCwxIDguMjksMTEuMjlDOC4yOSwxMiA3LjcxLDEyLjU3IDcsMTIuNTdDNi4yOSwxMi41NyA1LjcxLDEyIDUuNzEsMTEuMjlNMTUuNzEsMTEuMjlBMS4yOSwxLjI5IDAgMCwxIDE3LDEwQTEuMjksMS4yOSAwIDAsMSAxOC4yOSwxMS4yOUMxOC4yOSwxMiAxNy43MSwxMi41NyAxNywxMi41N0MxNi4yOSwxMi41NyAxNS43MSwxMiAxNS43MSwxMS4yOU0yMCwxNS4xNFYxNkgxNkwxNCwxNkgxMEw4LDE2SDRWMTUuMTRDNCwxNC4yIDUuNTUsMTMuNDMgNywxMy40M0M3LjU1LDEzLjQzIDguMTEsMTMuNTQgOC42LDEzLjczQzkuMzUsMTMuMDQgMTAuNywxMi41NyAxMiwxMi41N0MxMy4zLDEyLjU3IDE0LjY1LDEzLjA0IDE1LjQsMTMuNzNDMTUuODksMTMuNTQgMTYuNDUsMTMuNDMgMTcsMTMuNDNDMTguNDUsMTMuNDMgMjAsMTQuMiAyMCwxNS4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVDbG91ZCA9IFwiTTIzIDE0Ljc1QzIzIDE4LjIgMjAuMiAyMSAxNi43NSAyMUg3LjI1QzMuOCAyMSAxIDE4LjIgMSAxNC43NUMxIDEyLjYxIDIuMDggMTAuNzIgMy43MSA5LjZDNC41OCA1LjgyIDcuOTYgMyAxMiAzQzE2LjA0IDMgMTkuNDIgNS44MiAyMC4yOSA5LjZDMjEuOTMgMTAuNzIgMjMgMTIuNjEgMjMgMTQuNzVNMTYuNjMgMTdDMTcuOTQgMTcgMTkgMTUuOTQgMTkgMTQuNjNDMTkgMTMuMzUgMTggMTIuMyAxNi43MiAxMi4yNUwxNi43NSAxMS43NUMxNi43NSA5LjEzIDE0LjYyIDcgMTIgN0MxMC41OCA3IDkuMyA3LjYyIDguNDMgOC42MUM5LjkzIDguOSAxMS4yMyA5LjcyIDEyLjE0IDEwLjg2TDkuNSAxMy41QzkuMDggMTIuNzcgOC4yOSAxMi4yNSA3LjM4IDEyLjI1QzYuMDYgMTIuMjUgNSAxMy4zMSA1IDE0LjYzQzUgMTUuOSA2IDE2LjkzIDcuMjUgMTdWMTdIMTYuNjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ29udHJvbGxlciA9IFwiTTcuOTcsMTZMNSwxOUM0LjY3LDE5LjMgNC4yMywxOS41IDMuNzUsMTkuNUExLjc1LDEuNzUgMCAwLDEgMiwxNy43NVYxNy41TDMsMTAuMTJDMy4yMSw3LjgxIDUuMTQsNiA3LjUsNkgxNi41QzE4Ljg2LDYgMjAuNzksNy44MSAyMSwxMC4xMkwyMiwxNy41VjE3Ljc1QTEuNzUsMS43NSAwIDAsMSAyMC4yNSwxOS41QzE5Ljc3LDE5LjUgMTkuMzMsMTkuMyAxOSwxOUwxNi4wMywxNkg3Ljk3TTcsOFYxMEg1VjExSDdWMTNIOFYxMUgxMFYxMEg4VjhIN00xNi41LDhBMC43NSwwLjc1IDAgMCwwIDE1Ljc1LDguNzVBMC43NSwwLjc1IDAgMCwwIDE2LjUsOS41QTAuNzUsMC43NSAwIDAsMCAxNy4yNSw4Ljc1QTAuNzUsMC43NSAwIDAsMCAxNi41LDhNMTQuNzUsOS43NUEwLjc1LDAuNzUgMCAwLDAgMTQsMTAuNUEwLjc1LDAuNzUgMCAwLDAgMTQuNzUsMTEuMjVBMC43NSwwLjc1IDAgMCwwIDE1LjUsMTAuNUEwLjc1LDAuNzUgMCAwLDAgMTQuNzUsOS43NU0xOC4yNSw5Ljc1QTAuNzUsMC43NSAwIDAsMCAxNy41LDEwLjVBMC43NSwwLjc1IDAgMCwwIDE4LjI1LDExLjI1QTAuNzUsMC43NSAwIDAsMCAxOSwxMC41QTAuNzUsMC43NSAwIDAsMCAxOC4yNSw5Ljc1TTE2LjUsMTEuNUEwLjc1LDAuNzUgMCAwLDAgMTUuNzUsMTIuMjVBMC43NSwwLjc1IDAgMCwwIDE2LjUsMTNBMC43NSwwLjc1IDAgMCwwIDE3LjI1LDEyLjI1QTAuNzUsMC43NSAwIDAsMCAxNi41LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlQ29udHJvbGxlck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuNzMsMTZINy45N0w1LDE5QzQuNjcsMTkuMyA0LjIzLDE5LjUgMy43NSwxOS41QTEuNzUsMS43NSAwIDAsMSAyLDE3Ljc1VjE3LjVMMywxMC4xMkMzLjEsOS4wOSAzLjUzLDguMTcgNC4xOSw3LjQ2TDIsNS4yN001LDEwVjExSDdWMTNIOFYxMS4yN0w2LjczLDEwSDVNMTYuNSw2QzE4Ljg2LDYgMjAuNzksNy44MSAyMSwxMC4xMkwyMiwxNy41VjE3Ljc1QzIyLDE4LjQxIDIxLjY0LDE5IDIxLjEsMTkuMjhMNy44Miw2SDE2LjVNMTYuNSw4QTAuNzUsMC43NSAwIDAsMCAxNS43NSw4Ljc1QTAuNzUsMC43NSAwIDAsMCAxNi41LDkuNUEwLjc1LDAuNzUgMCAwLDAgMTcuMjUsOC43NUEwLjc1LDAuNzUgMCAwLDAgMTYuNSw4TTE0Ljc1LDkuNzVBMC43NSwwLjc1IDAgMCwwIDE0LDEwLjVBMC43NSwwLjc1IDAgMCwwIDE0Ljc1LDExLjI1QTAuNzUsMC43NSAwIDAsMCAxNS41LDEwLjVBMC43NSwwLjc1IDAgMCwwIDE0Ljc1LDkuNzVNMTguMjUsOS43NUEwLjc1LDAuNzUgMCAwLDAgMTcuNSwxMC41QTAuNzUsMC43NSAwIDAsMCAxOC4yNSwxMS4yNUEwLjc1LDAuNzUgMCAwLDAgMTksMTAuNUEwLjc1LDAuNzUgMCAwLDAgMTguMjUsOS43NU0xNi41LDExLjVBMC43NSwwLjc1IDAgMCwwIDE1Ljc1LDEyLjI1QTAuNzUsMC43NSAwIDAsMCAxNi41LDEzQTAuNzUsMC43NSAwIDAsMCAxNy4yNSwxMi4yNUEwLjc1LDAuNzUgMCAwLDAgMTYuNSwxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZURvd25hc2F1ciA9IFwiTTEzIDJWM0gxMlY5SDExVjEwSDlWMTFIOFYxMkg3VjEzSDVWMTJINFYxMUgzVjlIMlYxNUgzVjE2SDRWMTdINVYxOEg2VjIySDhWMjFIN1YyMEg4VjE5SDlWMThIMTBWMTlIMTFWMjJIMTNWMjFIMTJWMTdIMTNWMTZIMTRWMTVIMTVWMTJIMTZWMTNIMTdWMTFIMTVWOUgyMFY4SDE3VjdIMjJWM0gyMVYyTTE0IDNIMTVWNEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVEcml2ZSA9IFwiTTcuNzEsMy41TDEuMTUsMTVMNC41OCwyMUwxMS4xMyw5LjVNOS43MywxNUw2LjMsMjFIMTkuNDJMMjIuODUsMTVNMjIuMjgsMTRMMTUuNDIsMkg4LjU4TDguNTcsMkwxNS40MywxNEgyMi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVFYXJ0aCA9IFwiTTEyLDEyLjE0QzExLjA5LDEwLjc3IDEwLjE0LDkuNzggOS4xNCw5LjE5QzguMTQsOC41OSA3LjI3LDguMzggNi41LDguNTVDNS43Nyw4LjczIDUuMTQsOS4xNCA0LjY0LDkuOEM0LjIsMTAuMzkgNCwxMS4wNiA0LDExLjgxVjEyQzQsMTIuNzggNC4xMSwxMy41OCA0LjM2LDE0LjM5QzQuNDUsMTQuNjQgNC41LDE0LjY0IDQuNTUsMTQuMzlDNC42NywxMy43NyA0Ljk2LDEzLjMxIDUuNDEsMTMuMDNDNS44NywxMi43NSA2LjQ3LDEyLjc2IDcuMjIsMTMuMDVDNy45NywxMy4zNSA4LjcsMTQgOS40MiwxNC45NUMxMC43LDE2LjY3IDEyLjIsMTcuNzIgMTMuOTIsMTguMDlDMTYuMTQsMTguNDEgMTcuODEsMTcuNyAxOC45NCwxNkMxOS4yNSwxNS4zOSAxOS41LDE0Ljg2IDE5LjY0LDE0LjM5QzE5LjczLDE0LjA4IDE5LjY5LDE0LjA1IDE5LjUsMTQuM0MxOS4wMywxNC45MiAxOC40LDE1LjMzIDE3LjYsMTUuNUMxNi44LDE1LjcgMTUuODksMTUuNSAxNC44NiwxNUMxMy44MywxNC40MyAxMi44OCwxMy41IDEyLDEyLjE0TTE2Ljk3LDguMTZDMTUuNDEsNS44MSAxMy43Miw0LjUgMTEuOTEsNC4xN0MxMC40NywzLjk1IDguOTEsNC40NSA3LjIyLDUuNjdDNyw1LjgzIDYuOSw1LjkxIDYuOTEsNS45M0M2LjkzLDUuOTUgNy4wNiw1Ljg5IDcuMzEsNS43N0M5LjgxLDQuNTUgMTIuMjIsNS44MyAxNC41Myw5LjYxQzE1LjAzLDEwLjQ1IDE1LjU1LDExLjExIDE2LjEsMTEuNThDMTYuNjUsMTIuMDUgMTcuMTYsMTIuMzMgMTcuNjUsMTIuNDJDMTguMTMsMTIuNSAxOC41NywxMi41IDE4Ljk2LDEyLjM4QzE5LjM1LDEyLjI1IDE5LjcsMTIuMDUgMjAsMTEuNzdDMjAsMTEuMTcgMTkuOTEsMTAuNSAxOS42OSw5LjhDMTkuMTksOS45MiAxOC43NCw5Ljg4IDE4LjM1LDkuNjhDMTcuOTYsOS41IDE3LjUsOC45NyAxNi45Nyw4LjE2TTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC43NSAyMSwxNy4xIDE5LjA1LDE5LjA1QzE3LjEsMjEgMTQuNzUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsOS4yNSAzLDYuOSA0Ljk1LDQuOTVDNi45LDMgOS4yNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlRml0ID0gXCJNMTcsNEE1LDUgMCAwLDEgMjIsOUMyMiwxMC4zOCAyMS40NCwxMS42MyAyMC41NCwxMi41NEwxMiwyMS4wN0wzLjQ2LDEyLjU0QzIuNTYsMTEuNjMgMiwxMC4zOCAyLDlBNSw1IDAgMCwxIDcsNEM4LjM4LDQgOS42Myw0LjU2IDEwLjU0LDUuNDZMMTIsNi45M0wxMy40Niw1LjQ2QzE0LjM3LDQuNTYgMTUuNjIsNCAxNyw0TTE1LjU5LDcuNTlMOS4xNywxNEwxMiwxNi44M0wxOC40MSwxMC40MUMxOC43OCwxMC4wNSAxOSw5LjU1IDE5LDlBMiwyIDAgMCwwIDE3LDdDMTYuNDUsNyAxNS45NSw3LjIyIDE1LjU5LDcuNTlNOC40MSw3LjU5QzguMDUsNy4yMiA3LjU1LDcgNyw3QTIsMiAwIDAsMCA1LDlDNSw5LjU1IDUuMjIsMTAuMDUgNS41OSwxMC40MUw3LjA1LDExLjg4TDkuODgsOS4wNUw4LjQxLDcuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlR2xhc3MgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgyMEMyMS4xIDIyIDIyIDIxLjEgMjIgMjBWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTYuNzUgMThIMTUuMjVWOC45TDYuNzIgMThINC42NkwxNS40NSA2LjVDMTUuNjYgNi4yNiAxNiA2LjE5IDE2LjI3IDYuM0MxNi41NiA2LjQyIDE2Ljc1IDYuNjkgMTYuNzUgN1YxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVIYW5nb3V0cyA9IFwiTTE1LDExTDE0LDEzSDEyLjVMMTMuNSwxMUgxMlY4SDE1TTExLDExTDEwLDEzSDguNUw5LjUsMTFIOFY4SDExTTExLjUsMkE4LjUsOC41IDAgMCwwIDMsMTAuNUE4LjUsOC41IDAgMCwwIDExLjUsMTlIMTJWMjIuNUMxNi44NiwyMC4xNSAyMCwxNSAyMCwxMC41QzIwLDUuOCAxNi4xOSwyIDExLjUsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVIb21lID0gXCJNOC4wNiw3Ljc4QzcuNSw3Ljc4IDcuMTcsNy43MyA3LjA4LDcuNjRMNi42NiwxMy43M0M3LjE5LDE0LjA1IDcuODgsMTQuMyA4LjcyLDE0LjVDOS41NiwxNC43MSAxMC43OCwxNC43NyAxMi4zOCwxNC42N0MxMy45NywxNC41OCAxNS42MywxNC4yMyAxNy4zNCwxMy42NEwxNi41NSw0LjIyQzE1LjY3LDUuMDkgMTQuMzgsNS45MSAxMi42Niw2LjY2QzExLjEzLDcuMzEgOS44MSw3LjY5IDguNzIsNy43OEg4LjA2TTcuOTcsNS4zNEM3LjI4LDUuOTQgNyw2LjM0IDcuMTMsNi41NkM3LjIyLDYuNzggNy43LDYuODQgOC41OCw2Ljc1QzkuNjcsNi42NiAxMC45MSw2LjMxIDEyLjI4LDUuNzJDMTMuMjIsNS4zMSAxNC4wMyw0Ljg4IDE0LjcyLDQuNDFDMTUuNDEsMy45NCAxNS44OCwzLjU1IDE2LjEzLDMuMjNDMTYuMzgsMi45MiAxNi40NywyLjcgMTYuNDEsMi41OEMxNi4zNCwyLjQyIDE2LjAzLDIuMzQgMTUuNDcsMi4zNEMxNC4zNCwyLjM0IDEyLjk0LDIuNyAxMS4yNSwzLjQyQzkuODEsNC4wNSA4LjcyLDQuNjkgNy45Nyw1LjM0TTE3LjM0LDIuMkMxNy40MSwyLjMzIDE3LjQ0LDIuNDcgMTcuNDQsMi42M0wxOC42MSwxN0MxOC42MSwxOC43MyAxOCwyMC4wOSAxNi44MywyMS4wN0MxNS42NCwyMi4wNSAxNC4wMywyMi41NSAxMiwyMi41NUMxMCwyMi41NSA4LjQsMjIuMDQgNy4yLDIxQzYsMjAgNS4zOSwxOC42NCA1LjM5LDE2LjkyTDYuMDksNi40N0M2LjA5LDYuMjIgNi4yLDUuOTQgNi40Miw1LjYzQzYuNjQsNS4zMSA2Ljg0LDUuMDYgNy4wMyw0Ljg4TDcuMzYsNC41OUM4LjMzLDMuNzggOS41LDMuMDggMTAuODgsMi41QzExLjgxLDIuMDggMTIuNzMsMS43NyAxMy42MiwxLjU3QzE0LjUsMS4zNyAxNS4zLDEuMyAxNiwxLjM4QzE2LjcxLDEuNDYgMTcuMTYsMS43MyAxNy4zNCwyLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlS2VlcCA9IFwiTTQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE3LjMzTDE3LjMzIDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY0QzIgMi45IDIuOSAyIDQgMk0xNyAxN1YyMC4yNUwyMC4yNSAxN0gxN00xMCAxOUgxNFYxOEgxNVYxM0MxNi4yMSAxMi4wOSAxNyAxMC42NCAxNyA5QzE3IDYuMjQgMTQuNzYgNCAxMiA0UzcgNi4yNCA3IDlDNyAxMC42NCA3Ljc5IDEyLjA5IDkgMTNWMThIMTBWMTlNMTQgMTdIMTBWMTVIMTRWMTdNMTIgNUMxNC4yMSA1IDE2IDYuNzkgMTYgOUMxNiAxMC41IDE1LjIgMTEuNzcgMTQgMTIuNDZWMTRIMTBWMTIuNDZDOC44IDExLjc3IDggMTAuNSA4IDlDOCA2Ljc5IDkuNzkgNSAxMiA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZUxlbnMgPSBcIk02LDJIMThBNCw0IDAgMCwxIDIyLDZWMTJIMjBWNkEyLDIgMCAwLDAgMTgsNEg2QTIsMiAwIDAsMCA0LDZWMThBMiwyIDAgMCwwIDYsMjBIMTJWMjJINkE0LDQgMCAwLDEgMiwxOFY2QTQsNCAwIDAsMSA2LDJNMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyQTQsNCAwIDAsMSAxMiw4TTE4LDE2QTIsMiAwIDAsMSAyMCwxOEEyLDIgMCAwLDEgMTgsMjBBMiwyIDAgMCwxIDE2LDE4QTIsMiAwIDAsMSAxOCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVNYXBzID0gXCJNMTguMjcgNkMxOS4yOCA4LjE3IDE5LjA1IDEwLjczIDE3Ljk0IDEyLjgxQzE3IDE0LjUgMTUuNjUgMTUuOTMgMTQuNSAxNy41QzE0IDE4LjIgMTMuNSAxOC45NSAxMy4xMyAxOS43NkMxMyAyMC4wMyAxMi45MSAyMC4zMSAxMi44MSAyMC41OUMxMi43MSAyMC44NyAxMi42MiAyMS4xNSAxMi41MyAyMS40M0MxMi40NCAyMS42OSAxMi4zMyAyMiAxMiAyMkgxMkMxMS42MSAyMiAxMS41IDIxLjU2IDExLjQyIDIxLjI2QzExLjE4IDIwLjUzIDEwLjk0IDE5LjgzIDEwLjU3IDE5LjE2QzEwLjE1IDE4LjM3IDkuNjIgMTcuNjQgOS4wOCAxNi45M0wxOC4yNyA2TTkuMTIgOC40Mkw1LjgyIDEyLjM0QzYuNDMgMTMuNjMgNy4zNCAxNC43MyA4LjIxIDE1LjgzQzguNDIgMTYuMDggOC42MyAxNi4zNCA4LjgzIDE2LjYxTDEzIDExLjY3TDEyLjk2IDExLjY4QzExLjUgMTIuMTggOS44OCAxMS40NCA5LjMgMTBDOS4yMiA5LjgzIDkuMTYgOS42MyA5LjEyIDkuNDNDOS4wNyA5LjA2IDkuMDYgOC43OSA5LjEyIDguNDNMOS4xMiA4LjQyTTYuNTggNC42Mkw2LjU3IDQuNjNDNC45NSA2LjY4IDQuNjcgOS41MyA1LjY0IDExLjk0TDkuNjMgNy4yTDkuNTggNy4xNUw2LjU4IDQuNjJNMTQuMjIgMi4zNkwxMSA2LjE3TDExLjA0IDYuMTZDMTIuMzggNS43IDEzLjg4IDYuMjggMTQuNTYgNy41QzE0LjcxIDcuNzggMTQuODMgOC4wOCAxNC44NyA4LjM4QzE0LjkzIDguNzYgMTQuOTUgOS4wMyAxNC44OCA5LjRMMTQuODggOS40MUwxOC4wOCA1LjYxQzE3LjI0IDQuMDkgMTUuODcgMi45MyAxNC4yMyAyLjM3TDE0LjIyIDIuMzZNOS44OSA2Ljg5TDEzLjggMi4yNEwxMy43NiAyLjIzQzEzLjE4IDIuMDggMTIuNTkgMiAxMiAyQzEwLjAzIDIgOC4xNyAyLjg1IDYuODUgNC4zMUw2LjgzIDQuMzJMOS44OSA2Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZU15QnVzaW5lc3MgPSBcIk0yMiA4LjVDMjIgOS44NyAyMC44OCAxMSAxOS41IDExUzE3IDkuODcgMTcgOC41QzE3IDkuODcgMTUuODggMTEgMTQuNSAxMUMxMy4xMiAxMSAxMiA5Ljg3IDEyIDguNUMxMiA5Ljg3IDEwLjg4IDExIDkuNSAxMVM3IDkuODcgNyA4LjVDNyA5Ljg3IDUuODggMTEgNC41IDExUzIgOS44NyAyIDguNUwzLjM5IDMuMDhDMy4zOSAzLjA4IDMuNjggMiA0LjcgMkgxOS4zQzIwLjMyIDIgMjAuNjEgMy4wOCAyMC42MSAzLjA4TDIyIDguNU0yMSAxMi4yVjIwQzIxIDIxLjEgMjAuMSAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjEgMyAyMFYxMi4yQzMuNDYgMTIuMzkgMy45NyAxMi41IDQuNSAxMi41QzUuNDUgMTIuNSA2LjMyIDEyLjE3IDcgMTEuNjJDNy42OSAxMi4xNyA4LjU2IDEyLjUgOS41IDEyLjVDMTAuNDUgMTIuNSAxMS4zMiAxMi4xNyAxMiAxMS42MkMxMi42OSAxMi4xNyAxMy41NiAxMi41IDE0LjUgMTIuNUMxNS40NSAxMi41IDE2LjMyIDEyLjE3IDE3IDExLjYyQzE3LjY4IDEyLjE3IDE4LjU2IDEyLjUgMTkuNSAxMi41QzIwLjAzIDEyLjUgMjAuNTQgMTIuMzkgMjEgMTIuMk0xOSAxNy4zM0MxOSAxNy4xMyAxOSAxNi45MiAxOC45NSAxNi43TDE4LjkyIDE2LjU0SDE1Ljk1VjE3LjcxSDE3Ljc2QzE3LjcgMTcuOTMgMTcuNjIgMTguMTUgMTcuNDUgMTguMzNDMTcuMTIgMTguNjYgMTYuNjcgMTguODQgMTYuMTkgMTguODRDMTUuNjkgMTguODQgMTUuMiAxOC42MyAxNC44NCAxOC4yOEMxNC4xNSAxNy41NyAxNC4xNSAxNi40MiAxNC44NiAxNS43QzE1LjU1IDE1IDE2LjY5IDE1IDE3LjQxIDE1LjY3TDE3LjU1IDE1LjhMMTguMzkgMTQuOTVMMTguMjMgMTQuODFDMTcuNjcgMTQuMjkgMTYuOTMgMTQgMTYuMTUgMTRIMTYuMTRDMTUuMzMgMTQgMTQuNTcgMTQuMzEgMTQgMTQuODdDMTMuNDEgMTUuNDUgMTMuMDggMTYuMjEgMTMuMDggMTdDMTMuMDggMTcuOCAxMy4zOSAxOC41NCAxMy45NiAxOS4wOUgxMy45NkMxNC41NCAxOS42NiAxNS4zNSAyMCAxNi4xOCAyMEgxNi4yQzE3IDIwIDE3LjcxIDE5LjcxIDE4LjIzIDE5LjJDMTguNyAxOC43MiAxOSAxOCAxOSAxNy4zM1pcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVOZWFyYnkgPSBcIk0yMS4zNiwxMC40NkwxMy41NCwyLjY0QzEyLjY5LDEuNzkgMTEuMzEsMS43OSAxMC40NiwyLjY0TDIuNjQsMTAuNDZDMS43OSwxMS4zMSAxLjc5LDEyLjY5IDIuNjQsMTMuNTRMMTAuNDYsMjEuMzZDMTEuMzEsMjIuMjEgMTIuNjksMjIuMjEgMTMuNTQsMjEuMzZMMjEuMzYsMTMuNTRDMjIuMjEsMTIuNjkgMjIuMjEsMTEuMzEgMjEuMzYsMTAuNDZNMTIsMTlMNSwxMkwxMiw1TDE5LDEyTDEyLDE5TTE2LjUsMTJMMTIsMTYuNUw3LjUsMTJMMTIsNy41TDE2LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlUGhvdG9zID0gXCJNMTAsMTNDMTAuNTUsMTMgMTEsMTMuMTggMTEuNDEsMTMuNTdDMTEuOCwxMy45NiAxMiwxNC40NCAxMiwxNVYyMkMxMiwyMi4xNyAxMS45MSwyMi4yNyAxMS43MiwyMi4yN0MxMS42NiwyMi4yNyAxMS41OCwyMi4yMiAxMS41LDIyLjEzTDcsMTcuNjdWMTNIMTBNMTIuNSwxLjg4TDE3LDYuMzNWMTFIMTRDMTMuNDUsMTEgMTMsMTAuODIgMTIuNTksMTAuNDNDMTIuMiwxMC4wNCAxMiw5LjU2IDEyLDlWMkMxMiwxLjgzIDEyLjA5LDEuNzMgMTIuMjgsMS43M0MxMi4zNCwxLjczIDEyLjQyLDEuNzggMTIuNSwxLjg4TTIyLDEyQzIyLjE3LDEyIDIyLjI3LDEyLjA5IDIyLjI3LDEyLjI4QzIyLjI3LDEyLjM0IDIyLjIyLDEyLjQyIDIyLjEzLDEyLjVMMTcuNjcsMTdIMTNWMTRDMTMsMTMuNDUgMTMuMTgsMTMgMTMuNTcsMTIuNTlDMTMuOTYsMTIuMiAxNC40NCwxMiAxNSwxMkgyMk02LjMzLDdIMTFWMTBDMTEsMTAuNTUgMTAuODIsMTEgMTAuNDMsMTEuNDFDMTAuMDQsMTEuOCA5LjU2LDEyIDksMTJIMkMxLjgzLDEyIDEuNzMsMTEuOTEgMS43MywxMS43MkMxLjczLDExLjY2IDEuNzgsMTEuNTggMS44OCwxMS41TDYuMzMsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVQbGF5ID0gXCJNMywyMC41VjMuNUMzLDIuOTEgMy4zNCwyLjM5IDMuODQsMi4xNUwxMy42OSwxMkwzLjg0LDIxLjg1QzMuMzQsMjEuNiAzLDIxLjA5IDMsMjAuNU0xNi44MSwxNS4xMkw2LjA1LDIxLjM0TDE0LjU0LDEyLjg1TDE2LjgxLDE1LjEyTTIwLjE2LDEwLjgxQzIwLjUsMTEuMDggMjAuNzUsMTEuNSAyMC43NSwxMkMyMC43NSwxMi41IDIwLjUzLDEyLjkgMjAuMTgsMTMuMThMMTcuODksMTQuNUwxNS4zOSwxMkwxNy44OSw5LjVMMjAuMTYsMTAuODFNNi4wNSwyLjY2TDE2LjgxLDguODhMMTQuNTQsMTEuMTVMNi4wNSwyLjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdvb2dsZVBsdXMgPSBcIk0yMywxMUgyMVY5SDE5VjExSDE3VjEzSDE5VjE1SDIxVjEzSDIzTTgsMTFWMTMuNEgxMkMxMS44LDE0LjQgMTAuOCwxNi40IDgsMTYuNEM1LjYsMTYuNCAzLjcsMTQuNCAzLjcsMTJDMy43LDkuNiA1LjYsNy42IDgsNy42QzkuNCw3LjYgMTAuMyw4LjIgMTAuOCw4LjdMMTIuNyw2LjlDMTEuNSw1LjcgOS45LDUgOCw1QzQuMSw1IDEsOC4xIDEsMTJDMSwxNS45IDQuMSwxOSA4LDE5QzEyLDE5IDE0LjcsMTYuMiAxNC43LDEyLjJDMTQuNywxMS43IDE0LjcsMTEuNCAxNC42LDExSDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlUG9kY2FzdCA9IFwiTTE3LjY4LDcuMjJWOC42MkMxNy42OCw5LjMgMTcuMTMsOS44NiAxNi40Myw5Ljg2QzE1Ljc0LDkuODYgMTUuMTgsOS4zIDE1LjE4LDguNjJWNy4yMkExLjI1LDEuMjUgMCAwLDEgMTYuNDMsNS45N0MxNy4xMyw1Ljk3IDE3LjY4LDYuNTMgMTcuNjgsNy4yMk0xMy4yNSw4LjM2VjE1LjYzQzEzLjI1LDE2LjMyIDEyLjY5LDE2Ljg4IDEyLDE2Ljg4QzExLjMxLDE2Ljg4IDEwLjc1LDE2LjMyIDEwLjc1LDE1LjYzVjguMzZDMTAuNzUsNy42OCAxMS4zMSw3LjExIDEyLDcuMTFDMTIuNjksNy4xMSAxMy4yNSw3LjY4IDEzLjI1LDguMzZNMjIsMTEuM1YxMi43QzIyLDEzLjM4IDIxLjQ0LDEzLjk0IDIwLjc1LDEzLjk0QzIwLjA2LDEzLjk0IDE5LjUsMTMuMzggMTkuNSwxMi43VjExLjNDMTkuNSwxMC42MSAyMC4wNiwxMC4wNiAyMC43NSwxMC4wNkMyMS40NCwxMC4wNiAyMiwxMC42MSAyMiwxMS4zTTQuNSwxMS4zVjEyLjdDNC41LDEzLjM4IDMuOTQsMTMuOTQgMy4yNSwxMy45NEMyLjU1LDEzLjk0IDIsMTMuMzggMiwxMi43VjExLjNDMiwxMC42MSAyLjU1LDEwLjA2IDMuMjUsMTAuMDZDMy45NCwxMC4wNiA0LjUsMTAuNjEgNC41LDExLjNNOC44MiwxNS4zOFYxNi43N0M4LjgyLDE3LjQ1IDguMjYsMTggNy41NywxOEM2Ljg4LDE4IDYuMzIsMTcuNDUgNi4zMiwxNi43N1YxNS4zOEM2LjMyLDE0LjY4IDYuODgsMTQuMTMgNy41NywxNC4xM0ExLjI1LDEuMjUgMCAwLDEgOC44MiwxNS4zOE0xMy4yNSwxOS4zNlYyMC43NUExLjI1LDEuMjUgMCAwLDEgMTIsMjJBMS4yNSwxLjI1IDAgMCwxIDEwLjc1LDIwLjc1VjE5LjM2QTEuMjUsMS4yNSAwIDAsMSAxMiwxOC4xMUExLjI1LDEuMjUgMCAwLDEgMTMuMjUsMTkuMzZNMTMuMjUsMy4yNVY0LjY0QTEuMjUsMS4yNSAwIDAsMSAxMiw1Ljg5QTEuMjUsMS4yNSAwIDAsMSAxMC43NSw0LjY0VjMuMjVDMTAuNzUsMi41NSAxMS4zMSwyIDEyLDJBMS4yNSwxLjI1IDAgMCwxIDEzLjI1LDMuMjVNMTcuNjgsMTIuMzRWMTYuNzdDMTcuNjgsMTcuNDYgMTcuMTMsMTggMTYuNDMsMThDMTUuNzQsMTggMTUuMTgsMTcuNDYgMTUuMTgsMTYuNzdWMTIuMzRDMTUuMTgsMTEuNjQgMTUuNzQsMTEuMDkgMTYuNDMsMTEuMDlDMTcuMTMsMTEuMDkgMTcuNjgsMTEuNjQgMTcuNjgsMTIuMzRNOC44Miw3LjIyVjExLjY1QzguODIsMTIuMzUgOC4yNiwxMi45IDcuNTcsMTIuOUExLjI1LDEuMjUgMCAwLDEgNi4zMiwxMS42NVY3LjIyQTEuMjUsMS4yNSAwIDAsMSA3LjU3LDUuOTdBMS4yNSwxLjI1IDAgMCwxIDguODIsNy4yMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHb29nbGVTcHJlYWRzaGVldCA9IFwiTTE5LDExVjlIMTFWNUg5VjlINVYxMUg5VjE5SDExVjExSDE5TTE5LDNDMTkuNSwzIDIwLDMuMiAyMC4zOSwzLjYxQzIwLjgsNCAyMSw0LjUgMjEsNVYxOUMyMSwxOS41IDIwLjgsMjAgMjAuMzksMjAuMzlDMjAsMjAuOCAxOS41LDIxIDE5LDIxSDVDNC41LDIxIDQsMjAuOCAzLjYxLDIwLjM5QzMuMiwyMCAzLDE5LjUgMywxOVY1QzMsNC41IDMuMiw0IDMuNjEsMy42MUM0LDMuMiA0LjUsMyA1LDNIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlU3RyZWV0VmlldyA9IFwiTTExLjk1LDkuMjdDMTMuOTYsOS4yNyAxNS41OSw3LjY0IDE1LjU5LDUuNjNDMTUuNTksMy42MyAxMy45NiwyIDExLjk1LDJDOS45NCwyIDguMzIsMy42MyA4LjMyLDUuNjNDOC4zMiw3LjY0IDkuOTQsOS4yNyAxMS45NSw5LjI3TTkuMzYsMTIuOTdDOS4zNiwxMi45NyA4LjI3LDE1Ljk0IDcuOTYsMTYuNUM3Ljg1LDE2LjcxIDcuODcsMTYuNzcgNy42LDE2Ljc3QzcuMzMsMTYuNzcgNi45MSwxNi41IDYuOTEsMTYuNUM2LjkxLDE2LjUgNi43MSwxNi4zNyA2Ljc5LDE2LjE0QzcuMDMsMTUuNCA4LjEyLDExLjA4IDguMzUsMTAuMjVDOC42LDkuMzYgOS4yOCw5LjM5IDkuMjgsOS4zOUg5LjkzTDEyLjAzLDEzLjA0TDE0LjE0LDkuMzlIMTQuOTJDMTQuOTIsOS4zOSAxNS4yMyw5LjQzIDE1LjQ2LDkuN0MxNS43LDkuOTcgMTUuNzUsMTAuNDQgMTUuNzUsMTAuNDRMMTcuMTQsMTUuODRDMTcuMTQsMTUuODQgMTcuMjQsMTYuMjIgMTcuMjEsMTYuMzNDMTcuMTcsMTYuNSAxNy4wOCwxNi41IDE3LjA4LDE2LjVDMTcuMDgsMTYuNSAxNi42OSwxNi42MiAxNi40NywxNi42OUMxNi4wNywxNi44MiAxNiwxNi40NCAxNiwxNi40NEwxNC43LDEzLjA0TDE0LjU1LDIySDEyLjZMMTIuMjcsMTYuODlDMTIuMjcsMTYuODkgMTIuMjEsMTYuNzYgMTIuMDMsMTYuNzZDMTEuODYsMTYuNzYgMTEuOCwxNi44OSAxMS44LDE2Ljg5TDExLjQ1LDIySDkuNUw5LjM3LDEyLjk3SDkuMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR29vZ2xlVHJhbnNsYXRlID0gXCJNMjAsNUgxMC44OEwxMCwySDRBMiwyIDAgMCwwIDIsNFYxN0EyLDIgMCAwLDAgNCwxOUgxMUwxMiwyMkgyMEEyLDIgMCAwLDAgMjIsMjBWN0EyLDIgMCAwLDAgMjAsNU03LjE3LDE0LjU5QTQuMDksNC4wOSAwIDAsMSAzLjA4LDEwLjVBNC4wOSw0LjA5IDAgMCwxIDcuMTcsNi40MUM4LjIxLDYuNDEgOS4xNiw2Ljc4IDkuOTEsNy41TDEwLDcuNTRMOC43NSw4LjcyTDguNjksOC42N0M4LjQsOC40IDcuOTEsOC4wOCA3LjE3LDguMDhDNS44Niw4LjA4IDQuNzksOS4xNyA0Ljc5LDEwLjVDNC43OSwxMS44MyA1Ljg2LDEyLjkyIDcuMTcsMTIuOTJDOC41NCwxMi45MiA5LjEzLDEyLjA1IDkuMjksMTEuNDZINy4wOFY5LjkxSDExLjAzTDExLjA0LDEwQzExLjA4LDEwLjE5IDExLjA5LDEwLjM4IDExLjA5LDEwLjU5QzExLjA5LDEyLjk0IDkuNSwxNC41OSA3LjE3LDE0LjU5TTEzLjIsMTIuODhDMTMuNTMsMTMuNSAxMy45NCwxNC4wNiAxNC4zOSwxNC41OEwxMy44NSwxNS4xMUwxMy4yLDEyLjg4TTEzLjk3LDEyLjEySDEzTDEyLjY3LDExLjA4SDE2LjY2QzE2LjY2LDExLjA4IDE2LjMyLDEyLjM5IDE1LjEsMTMuODJDMTQuNTgsMTMuMiAxNC4yMSwxMi41OSAxMy45NywxMi4xMk0yMSwyMEExLDEgMCAwLDEgMjAsMjFIMTNMMTUsMTlMMTQuMTksMTYuMjNMMTUuMTEsMTUuMzFMMTcuNzksMThMMTguNSwxNy4yN0wxNS44MSwxNC41OUMxNi43MSwxMy41NiAxNy40MSwxMi4zNCAxNy43MywxMS4wOEgxOVYxMC4wNEgxNS4zNlY5SDE0LjMyVjEwLjA0SDEyLjM2TDExLjE4LDZIMjBBMSwxIDAgMCwxIDIxLDdWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhZGllbnQgPSBcIk0xMSw5SDEzVjExSDExVjlNOSwxMUgxMVYxM0g5VjExTTEzLDExSDE1VjEzSDEzVjExTTE1LDlIMTdWMTFIMTVWOU03LDlIOVYxMUg3VjlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNOSwxOEg3VjE2SDlWMThNMTMsMThIMTFWMTZIMTNWMThNMTcsMThIMTVWMTZIMTdWMThNMTksMTFIMTdWMTNIMTlWMTVIMTdWMTNIMTVWMTVIMTNWMTNIMTFWMTVIOVYxM0g3VjE1SDVWMTNIN1YxMUg1VjVIMTlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhaW4gPSBcIk0xMCwxMkEyLDIgMCAwLDAgOCwxNEEyLDIgMCAwLDAgMTAsMTZBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxMCwxMk02LDhBMiwyIDAgMCwwIDQsMTBBMiwyIDAgMCwwIDYsMTJBMiwyIDAgMCwwIDgsMTBBMiwyIDAgMCwwIDYsOE02LDE2QTIsMiAwIDAsMCA0LDE4QTIsMiAwIDAsMCA2LDIwQTIsMiAwIDAsMCA4LDE4QTIsMiAwIDAsMCA2LDE2TTE4LDhBMiwyIDAgMCwwIDIwLDZBMiwyIDAgMCwwIDE4LDRBMiwyIDAgMCwwIDE2LDZBMiwyIDAgMCwwIDE4LDhNMTQsMTZBMiwyIDAgMCwwIDEyLDE4QTIsMiAwIDAsMCAxNCwyMEEyLDIgMCAwLDAgMTYsMThBMiwyIDAgMCwwIDE0LDE2TTE4LDEyQTIsMiAwIDAsMCAxNiwxNEEyLDIgMCAwLDAgMTgsMTZBMiwyIDAgMCwwIDIwLDE0QTIsMiAwIDAsMCAxOCwxMk0xNCw4QTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDE2LDEwQTIsMiAwIDAsMCAxNCw4TTEwLDRBMiwyIDAgMCwwIDgsNkEyLDIgMCAwLDAgMTAsOEEyLDIgMCAwLDAgMTIsNkEyLDIgMCAwLDAgMTAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmFwaCA9IFwiTTE5LjUgMTdDMTkuMzcgMTcgMTkuMjQgMTcgMTkuMTEgMTcuMDRMMTcuNSAxMy43OUMxNy45NSAxMy4zNCAxOC4yNSAxMi43MSAxOC4yNSAxMkMxOC4yNSAxMC42MiAxNy4xMyA5LjUgMTUuNzUgOS41QzE1LjYyIDkuNSAxNS41IDkuNSAxNS4zNiA5LjU0TDEzLjczIDYuMjlDMTQuMjEgNS44NCAxNC41IDUuMjEgMTQuNSA0LjVDMTQuNSAzLjEyIDEzLjM4IDIgMTIgMlM5LjUgMy4xMiA5LjUgNC41QzkuNSA1LjIxIDkuNzkgNS44NCAxMC4yNiA2LjI5TDguNjQgOS41NEM4LjUgOS41IDguMzggOS41IDguMjUgOS41QzYuODcgOS41IDUuNzUgMTAuNjIgNS43NSAxMkM1Ljc1IDEyLjcxIDYuMDUgMTMuMzQgNi41IDEzLjc5TDQuODkgMTcuMDRDNC43NiAxNyA0LjYzIDE3IDQuNSAxN0MzLjEyIDE3IDIgMTguMTIgMiAxOS41QzIgMjAuODggMy4xMiAyMiA0LjUgMjJTNyAyMC44OCA3IDE5LjVDNyAxOC44IDYuNzEgMTguMTYgNi4yNCAxNy43MUw3Ljg2IDE0LjQ2QzggMTQuNSA4LjEyIDE0LjUgOC4yNSAxNC41QzguMzggMTQuNSA4LjUgMTQuNSA4LjY0IDE0LjQ2TDEwLjI3IDE3LjcxQzkuOCAxOC4xNiA5LjUgMTguOCA5LjUgMTkuNUM5LjUgMjAuODggMTAuNjIgMjIgMTIgMjJTMTQuNSAyMC44OCAxNC41IDE5LjVDMTQuNSAxOC4xMiAxMy4zOCAxNyAxMiAxN0MxMS44NyAxNyAxMS43NCAxNyAxMS42MSAxNy4wNEwxMCAxMy43OUMxMC40NiAxMy4zNCAxMC43NSAxMi43MSAxMC43NSAxMlMxMC40NiAxMC42NiAxMCAxMC4yMUwxMS42MSA2Ljk2QzExLjc0IDcgMTEuODcgNyAxMiA3UzEyLjI2IDcgMTIuMzkgNi45NkwxNCAxMC4yMUMxMy41NSAxMC42NiAxMy4yNSAxMS4zIDEzLjI1IDEyQzEzLjI1IDEzLjM4IDE0LjM3IDE0LjUgMTUuNzUgMTQuNUMxNS44OCAxNC41IDE2IDE0LjUgMTYuMTQgMTQuNDZMMTcuNzcgMTcuNzFDMTcuMyAxOC4xNiAxNyAxOC44IDE3IDE5LjVDMTcgMjAuODggMTguMTIgMjIgMTkuNSAyMlMyMiAyMC44OCAyMiAxOS41QzIyIDE4LjEyIDIwLjg4IDE3IDE5LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhcGhPdXRsaW5lID0gXCJNMTkuNSAxN0MxOS4zNiAxNyAxOS4yNCAxNyAxOS4xMSAxNy4wNEwxNy41IDEzLjhDMTcuOTUgMTMuMzUgMTguMjUgMTIuNzEgMTguMjUgMTJDMTguMjUgMTAuNjIgMTcuMTMgOS41IDE1Ljc1IDkuNUMxNS42MSA5LjUgMTUuNSA5LjUgMTUuMzUgOS41NEwxMy43NCA2LjNDMTQuMjEgNS44NCAxNC41IDUuMjEgMTQuNSA0LjVDMTQuNSAzLjEyIDEzLjM4IDIgMTIgMlM5LjUgMy4xMiA5LjUgNC41QzkuNSA1LjIgOS43OSA1Ljg0IDEwLjI2IDYuMjlMOC42NSA5LjU0QzguNSA5LjUgOC4zOSA5LjUgOC4yNSA5LjVDNi44NyA5LjUgNS43NSAxMC42MiA1Ljc1IDEyQzUuNzUgMTIuNzEgNi4wNCAxMy4zNCA2LjUgMTMuNzlMNC44OSAxNy4wNEM0Ljc2IDE3IDQuNjQgMTcgNC41IDE3QzMuMTIgMTcgMiAxOC4xMiAyIDE5LjVDMiAyMC44OCAzLjEyIDIyIDQuNSAyMlM3IDIwLjg4IDcgMTkuNUM3IDE4LjggNi43MSAxOC4xNiA2LjI0IDE3LjcxTDcuODYgMTQuNDZDOCAxNC41IDguMTIgMTQuNSA4LjI1IDE0LjVDOC4zOCAxNC41IDguNSAxNC41IDguNjMgMTQuNDZMMTAuMjYgMTcuNzFDOS43OSAxOC4xNiA5LjUgMTguOCA5LjUgMTkuNUM5LjUgMjAuODggMTAuNjIgMjIgMTIgMjJTMTQuNSAyMC44OCAxNC41IDE5LjVDMTQuNSAxOC4xMiAxMy4zOCAxNyAxMiAxN0MxMS44NyAxNyAxMS43NCAxNyAxMS42MSAxNy4wNEwxMCAxMy44QzEwLjQ1IDEzLjM1IDEwLjc1IDEyLjcxIDEwLjc1IDEyQzEwLjc1IDExLjMgMTAuNDYgMTAuNjcgMTAgMTAuMjFMMTEuNjEgNi45NkMxMS43NCA3IDExLjg3IDcgMTIgN0MxMi4xMyA3IDEyLjI2IDcgMTIuMzkgNi45NkwxNCAxMC4yMUMxMy41NCAxMC42NiAxMy4yNSAxMS4zIDEzLjI1IDEyQzEzLjI1IDEzLjM4IDE0LjM3IDE0LjUgMTUuNzUgMTQuNUMxNS44OCAxNC41IDE2IDE0LjUgMTYuMTMgMTQuNDZMMTcuNzYgMTcuNzFDMTcuMjkgMTguMTYgMTcgMTguOCAxNyAxOS41QzE3IDIwLjg4IDE4LjEyIDIyIDE5LjUgMjJTMjIgMjAuODggMjIgMTkuNUMyMiAxOC4xMiAyMC44OCAxNyAxOS41IDE3TTQuNSAyMC41QzMuOTUgMjAuNSAzLjUgMjAuMDUgMy41IDE5LjVTMy45NSAxOC41IDQuNSAxOC41IDUuNSAxOC45NSA1LjUgMTkuNSA1LjA1IDIwLjUgNC41IDIwLjVNMTMgMTkuNUMxMyAyMC4wNSAxMi41NSAyMC41IDEyIDIwLjVTMTEgMjAuMDUgMTEgMTkuNSAxMS40NSAxOC41IDEyIDE4LjUgMTMgMTguOTUgMTMgMTkuNU03LjI1IDEyQzcuMjUgMTEuNDUgNy43IDExIDguMjUgMTFTOS4yNSAxMS40NSA5LjI1IDEyIDguOCAxMyA4LjI1IDEzIDcuMjUgMTIuNTUgNy4yNSAxMk0xMSA0LjVDMTEgMy45NSAxMS40NSAzLjUgMTIgMy41UzEzIDMuOTUgMTMgNC41IDEyLjU1IDUuNSAxMiA1LjUgMTEgNS4wNSAxMSA0LjVNMTQuNzUgMTJDMTQuNzUgMTEuNDUgMTUuMiAxMSAxNS43NSAxMVMxNi43NSAxMS40NSAxNi43NSAxMiAxNi4zIDEzIDE1Ljc1IDEzIDE0Ljc1IDEyLjU1IDE0Ljc1IDEyTTE5LjUgMjAuNUMxOC45NSAyMC41IDE4LjUgMjAuMDUgMTguNSAxOS41UzE4Ljk1IDE4LjUgMTkuNSAxOC41IDIwLjUgMTguOTUgMjAuNSAxOS41IDIwLjA1IDIwLjUgMTkuNSAyMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdyYXBocWwgPSBcIk0xMiw1LjM3TDExLjU2LDUuMzFMNiwxNC45QzYuMjQsMTUuMTEgNi40LDE1LjM4IDYuNDcsMTUuNjhIMTcuNTNDMTcuNiwxNS4zOCAxNy43NiwxNS4xMSAxOCwxNC45TDEyLjQ0LDUuMzFMMTIsNS4zN002LjYsMTYuNTNMMTAuODgsMTkuMDZDMTEuMTcsMTguNzkgMTEuNTcsMTguNjMgMTIsMTguNjNDMTIuNDMsMTguNjMgMTIuODMsMTguNzkgMTMuMTIsMTkuMDZMMTcuNCwxNi41M0g2LjZNMTIsMjJBMS42OCwxLjY4IDAgMCwxIDEwLjMyLDIwLjMyTDEwLjQxLDE5Ljc2TDYuMTEsMTcuMjFDNS44LDE3LjU3IDUuMzUsMTcuNzkgNC44NCwxNy43OUExLjY4LDEuNjggMCAwLDEgMy4xNiwxNi4xMUMzLjE2LDE1LjMyIDMuNjksMTQuNjYgNC40MiwxNC40N1Y5LjM2QzMuNTksOS4yNSAyLjk1LDguNTQgMi45NSw3LjY4QTEuNjgsMS42OCAwIDAsMSA0LjYzLDZDNS4xOCw2IDUuNjYsNi4yNiA1Ljk3LDYuNjZMMTAuMzgsNC4xM0wxMC4zMiwzLjY4QzEwLjMyLDIuNzUgMTEuMDcsMiAxMiwyQzEyLjkzLDIgMTMuNjgsMi43NSAxMy42OCwzLjY4TDEzLjYyLDQuMTNMMTguMDMsNi42NkMxOC4zNCw2LjI2IDE4LjgyLDYgMTkuMzcsNkExLjY4LDEuNjggMCAwLDEgMjEuMDUsNy42OEMyMS4wNSw4LjU0IDIwLjQxLDkuMjUgMTkuNTgsOS4zNlYxNC40N0MyMC4zMSwxNC42NiAyMC44NCwxNS4zMiAyMC44NCwxNi4xMUExLjY4LDEuNjggMCAwLDEgMTkuMTYsMTcuNzlDMTguNjUsMTcuNzkgMTguMiwxNy41NyAxNy44OSwxNy4yMUwxMy41OSwxOS43NkwxMy42OCwyMC4zMkExLjY4LDEuNjggMCAwLDEgMTIsMjJNMTAuOCw0Ljg2TDYuMyw3LjQ0TDYuMzIsNy42OEM2LjMyLDguMzkgNS44OCw5IDUuMjYsOS4yNUw1LjI5LDE0LjVMMTAuOCw0Ljg2TTEzLjIsNC44NkwxOC43MSwxNC41TDE4Ljc0LDkuMjVDMTguMTIsOSAxNy42OCw4LjM5IDE3LjY4LDcuNjhMMTcuNyw3LjQ0TDEzLjIsNC44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmFzcyA9IFwiTTEyIDIwSDJWMThINy43NUM3IDE1LjE5IDQuODEgMTMgMiAxMi4yNkMyLjY0IDEyLjEgMy4zMSAxMiA0IDEyQzguNDIgMTIgMTIgMTUuNTggMTIgMjBNMjIgMTIuMjZDMjEuMzYgMTIuMSAyMC42OSAxMiAyMCAxMkMxNy4wNyAxMiAxNC41IDEzLjU4IDEzLjEyIDE1LjkzQzEzLjQxIDE2LjU5IDEzLjY1IDE3LjI4IDEzLjc5IDE4QzEzLjkyIDE4LjY1IDE0IDE5LjMyIDE0IDIwSDIyVjE4SDE2LjI0QzE3IDE1LjE5IDE5LjE5IDEzIDIyIDEyLjI2TTE1LjY0IDExQzE2LjQyIDguOTMgMTcuODcgNy4xOCAxOS43MyA2QzE1LjQ0IDYuMTYgMTIgOS42NyAxMiAxNFYxNEMxMi45NSAxMi43NSAxNC4yIDExLjcyIDE1LjY0IDExTTExLjQyIDguODVDMTAuNTggNi42NiA4Ljg4IDQuODkgNi43IDRDOC4xNCA1Ljg2IDkgOC4xOCA5IDEwLjcxQzkgMTAuOTIgOC45NyAxMS4xMiA4Ljk2IDExLjMyQzkuMzkgMTEuNTYgOS43OSAxMS44NCAxMC4xOCAxMi4xNEMxMC4zOSAxMC45NiAxMC44MyA5Ljg1IDExLjQyIDguODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JhdmVTdG9uZSA9IFwiTTEwLDJIMTRDMTcuMzEsMiAxOSw0LjY5IDE5LDhWMTguNjZDMTYuODgsMTcuNjMgMTUuMDcsMTcgMTIsMTdDOC45MywxNyA3LjEyLDE3LjYzIDUsMTguNjZWOEM1LDQuNjkgNi42OSwyIDEwLDJNOCw4VjkuNUgxNlY4SDhNOSwxMlYxMy41SDE1VjEySDlNMywyMlYyMS4zMUM1LjY2LDE5LjYyIDEzLjIzLDE1Ljg0IDIxLDIxLjI1VjIySDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JlYXNlUGVuY2lsID0gXCJNMTguNjIsMS41QzE4LjExLDEuNSAxNy42LDEuNjkgMTcuMjEsMi4wOUwxMC43NSw4LjU1TDE0Ljk1LDEyLjc0TDIxLjQxLDYuMjlDMjIuMiw1LjUgMjIuMiw0LjI0IDIxLjQxLDMuNDZMMjAuMDQsMi4wOUMxOS42NSwxLjY5IDE5LjE0LDEuNSAxOC42MiwxLjVNOS44LDkuNUwzLjIzLDE2LjA3TDMuOTMsMTYuNzdDMy40LDE3LjI0IDIuODksMTcuNzggMi4zOCwxOC4yOUMxLjYsMTkuMDggMS42LDIwLjM0IDIuMzgsMjEuMTJDMy4xNiwyMS45IDQuNDIsMjEuOSA1LjIxLDIxLjEyQzUuNzIsMjAuNjMgNi4yNSwyMC4wOCA2LjczLDE5LjU4TDcuNDMsMjAuMjdMMTQsMTMuN1wiO1xyXG5leHBvcnQgdmFyIG1kaUdyZWF0ZXJUaGFuID0gXCJNNS41LDQuMTRMNC41LDUuODZMMTUsMTJMNC41LDE4LjE0TDUuNSwxOS44NkwxOSwxMkw1LjUsNC4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmVhdGVyVGhhbk9yRXF1YWwgPSBcIk02LjUsMi4yN0wyMCwxMC4xNEw2LjUsMThMNS41LDE2LjI3TDE2LjAzLDEwLjE0TDUuNSw0TDYuNSwyLjI3TTIwLDIwVjIySDVWMjBIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpR3JpZCA9IFwiTTEwLDRWOEgxNFY0SDEwTTE2LDRWOEgyMFY0SDE2TTE2LDEwVjE0SDIwVjEwSDE2TTE2LDE2VjIwSDIwVjE2SDE2TTE0LDIwVjE2SDEwVjIwSDE0TTgsMjBWMTZINFYyMEg4TTgsMTRWMTBINFYxNEg4TTgsOFY0SDRWOEg4TTEwLDE0SDE0VjEwSDEwVjE0TTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYyMEEyLDIgMCAwLDEgMjAsMjJINEMyLjkyLDIyIDIsMjEuMSAyLDIwVjRBMiwyIDAgMCwxIDQsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmlkTGFyZ2UgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMjBBMiwyIDAgMCwxIDIwLDIySDRDMi45MiwyMiAyLDIxLjEgMiwyMFY0QTIsMiAwIDAsMSA0LDJNNCw0VjExSDExVjRINE00LDIwSDExVjEzSDRWMjBNMjAsMjBWMTNIMTNWMjBIMjBNMjAsNEgxM1YxMUgyMFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdyaWRPZmYgPSBcIk0wLDIuNzdMMS4yOCwxLjVMMjIuNSwyMi43MkwyMS4yMywyNEwxOS4yMywyMkg0QzIuOTIsMjIgMiwyMS4xIDIsMjBWNC43N0wwLDIuNzdNMTAsNFY3LjY4TDgsNS42OFY0SDYuMzJMNC4zMiwySDIwQTIsMiAwIDAsMSAyMiw0VjE5LjdMMjAsMTcuN1YxNkgxOC4zMkwxNi4zMiwxNEgyMFYxMEgxNlYxMy42OEwxNCwxMS42OFYxMEgxMi4zMkwxMC4zMiw4SDE0VjRIMTBNMTYsNFY4SDIwVjRIMTZNMTYsMjBIMTcuMjNMMTYsMTguNzdWMjBNNCw4SDUuMjNMNCw2Ljc3VjhNMTAsMTRIMTEuMjNMMTAsMTIuNzdWMTRNMTQsMjBWMTYuNzdMMTMuMjMsMTZIMTBWMjBIMTRNOCwyMFYxNkg0VjIwSDhNOCwxNFYxMC43N0w3LjIzLDEwSDRWMTRIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlHcmlsbCA9IFwiTTguMDYsMkM3Ljg4LDMuMTcgOC4xNyw0LjE2IDguOTUsNC45N0M5LjQ1LDUuNDcgOS42MSw2LjE0IDkuNDIsN0gxMC40MUMxMC41Myw2LjQ1IDEwLjU1LDYgMTAuNDUsNS41NUMxMC4zNiw1LjEzIDEwLjA1LDQuNjMgOS41LDQuMDNDOS4wNSwzLjQ3IDguODksMi44IDkuMDUsMkg4LjA2TTEwLjU1LDJDMTAuMzYsMy4xNyAxMC42Niw0LjE2IDExLjQ0LDQuOTdDMTEuOTQsNS40NyAxMi4wOSw2LjE0IDExLjkxLDdIMTIuODlDMTMsNi40NSAxMy4wMyw2IDEyLjk0LDUuNTVDMTIuODQsNS4xMyAxMi41Myw0LjYzIDEyLDQuMDNDMTEuNTMsMy40NyAxMS4zOCwyLjggMTEuNTMsMkgxMC41NU0xMy4wOCwyQzEyLjg5LDMuMTcgMTMuMTksNC4xNiAxMy45Nyw0Ljk3QzE0LjQ3LDUuNDcgMTQuNjEsNi4xNCAxNC4zOSw3SDE1LjQyQzE1LjU1LDYuNDUgMTUuNTYsNiAxNS40Nyw1LjU1QzE1LjM4LDUuMTMgMTUuMDYsNC42MyAxNC41Myw0LjAzQzE0LjA2LDMuNDcgMTMuOTEsMi44IDE0LjA2LDJIMTMuMDhNNSw4QzUsOS40MiA1LjM5LDEwLjcgNi4xNCwxMS44NEM2Ljg3LDEyLjk2IDcuOTEsMTMuODUgOS4xNCwxNC4zOUw1LjE2LDIwLjQ0QzUuMDYsMjAuNTYgNSwyMC43NSA1LDIxQzUsMjEuNDEgNS4xNiwyMS42OSA1LjQ0LDIxLjg0QzUuNTYsMjEuOTQgNS43NSwyMiA2LDIyQzYuNDEsMjIgNi42OSwyMS44NCA2Ljg0LDIxLjU2TDcuODMsMTkuOTdIMTQuMkMxNC40MSwyMC41NSAxNC43OSwyMS4wNSAxNS4yOCwyMS40MkMxNS43OCwyMS44IDE2LjM2LDIyIDE3LDIyQzE3LjgzLDIyIDE4LjUzLDIxLjY5IDE5LjEzLDIxLjA5QzE5LjcyLDIwLjUgMjAsMTkuOCAyMCwxOUMyMCwxOC4xNyAxOS43MiwxNy40NyAxOS4xMywxNi44OEMxOC41MywxNi4yOCAxNy44MywxNiAxNywxNkMxNi4zNiwxNiAxNS43OCwxNi4xNyAxNS4yOCwxNi41NUMxNC43OCwxNi45MiAxNC40MiwxNy40MSAxNC4yLDE4SDkuMTRMMTEuMTEsMTQuOTVDMTEuMjcsMTUgMTEuNTYsMTUgMTIsMTVDMTIuNDQsMTUgMTIuNzMsMTUgMTIuODksMTQuOTVMMTMuODgsMTYuNUMxNC4yOSwxNS45NiAxNC44NCwxNS41NCAxNS40NywxNS4yOEwxNC45MSwxNC4zOUMxNi4wMywxMy44OSAxNywxMyAxNy43OSwxMS43N0MxOC41OSwxMC41IDE5LDkuMjcgMTksOEg1TTE3LDE4QzE3LjMsMTggMTcuNTMsMTguMDkgMTcuNzIsMTguMjhDMTcuOTEsMTguNDcgMTgsMTguNzIgMTgsMTlDMTgsMTkuMjcgMTcuOTEsMTkuNSAxNy43MiwxOS43MUMxNy41NCwxOS45MSAxNy4yOCwyMCAxNywyMEMxNi43NCwyMCAxNi41LDE5LjkxIDE2LjI5LDE5LjcxQzE2LjA5LDE5LjUgMTYsMTkuMjYgMTYsMTlDMTYsMTguNyAxNi4wOSwxOC40NyAxNi4yOSwxOC4yOEMxNi41LDE4LjA5IDE2LjczLDE4IDE3LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUdyaWxsT3V0bGluZSA9IFwiTTE3IDIyQTMgMyAwIDEgMCAxNC4xOCAxOEg5LjE0TDExLjEzIDE0Ljk0QTYuMzYgNi4zNiAwIDAgMCAxMi44NyAxNC45NEwxMy44OSAxNi41QzE0LjMxIDE2IDE0Ljg1IDE1LjU2IDE1LjUgMTUuM0wxNC44OSAxNC4zN0E3IDcgMCAwIDAgMTkgOEg1QTcgNyAwIDAgMCA5LjEyIDE0LjM3TDUuMTcgMjAuNDVBMSAxIDAgMCAwIDYuODQgMjEuNTRMNy44NCAyMEgxNC4xOEEzIDMgMCAwIDAgMTcgMjJNMTcgMThBMSAxIDAgMCAxIDE4IDE5QzE4IDE5LjU1IDE3LjU1IDIwIDE3IDIwUzE2IDE5LjU1IDE2IDE5QTEgMSAwIDAgMSAxNyAxOE03LjQyIDEwSDE2LjU4QTUgNSAwIDAgMSA3LjQyIDEwTTkuNDEgN0gxMC40MUMxMC41NiA1Ljg1IDEwLjY0IDUuMzYgOS41IDQuMDRDOS4xIDMuNTQgOC44NCAzLjI3IDkuMDYgMkg4LjA3QTMuMTQgMy4xNCAwIDAgMCA4Ljk2IDQuOTZDOS4xOCA1LjIgOS43NSA1LjYzIDkuNDEgN00xMS44OSA3SDEyLjg5QzEzLjA0IDUuODUgMTMuMTIgNS4zNiAxMiA0LjA0QzExLjU4IDMuNTQgMTEuMzIgMy4yNiAxMS41NCAySDEwLjU1QTMuMTQgMy4xNCAwIDAgMCAxMS40NCA0Ljk2QzExLjY3IDUuMiAxMi4yNCA1LjYzIDExLjg5IDdNMTQuNDEgN0gxNS40MUMxNS41NiA1Ljg1IDE1LjY0IDUuMzYgMTQuNSA0LjA0QzE0LjEgMy41NCAxMy44NCAzLjI3IDE0LjA2IDJIMTMuMDdBMy4xNCAzLjE0IDAgMCAwIDEzLjk2IDQuOTZDMTQuMTggNS4yIDE0Ljc1IDUuNjMgMTQuNDEgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlHcm91cCA9IFwiTTEsMVY1SDJWMTlIMVYyM0g1VjIySDE5VjIzSDIzVjE5SDIyVjVIMjNWMUgxOVYySDVWMU01LDRIMTlWNUgyMFYxOUgxOVYyMEg1VjE5SDRWNUg1TTYsNlYxNEg5VjE4SDE4VjlIMTRWNk04LDhIMTJWMTJIOE0xNCwxMUgxNlYxNkgxMVYxNEgxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUd1aXRhckFjb3VzdGljID0gXCJNMTkuNTksM0gyMlY1SDIwLjQxTDE2LjE3LDkuMjRDMTUuOCw4LjY4IDE1LjMyLDguMiAxNC43Niw3LjgzTDE5LjU5LDNNMTIsOEE0LDQgMCAwLDEgMTYsMTJDMTYsMTMuODIgMTQuNzcsMTUuNDIgMTMsMTUuODdWMTZBNSw1IDAgMCwxIDgsMjFBNSw1IDAgMCwxIDMsMTZBNSw1IDAgMCwxIDgsMTFIOC4xM0M4LjU4LDkuMjQgMTAuMTcsOCAxMiw4TTEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgMTIsMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMC41TTYuOTQsMTQuMjRMNi4yMywxNC45NEw5LjA2LDE3Ljc3TDkuNzcsMTcuMDZMNi45NCwxNC4yNFpcIjtcclxuZXhwb3J0IHZhciBtZGlHdWl0YXJFbGVjdHJpYyA9IFwiTTE5LjU5LDNIMjJWNUgyMC40MUwxNS4xMiwxMC4yOUwxMy43MSw4LjlMMTkuNTksM00xMiw5QzEyLjI2LDkgMTIuNSw5LjEgMTIuNzEsOS4zTDE0LjcxLDExLjNDMTQuODksMTEuNSAxNSwxMS43MyAxNSwxMkwxNC45LDEyLjRMMTAuOSwyMC40QzEwLjcxLDIwLjc1IDEwLjM2LDIwLjkzIDEwLDIwLjkzQzkuNjUsMjAuOTMgOS4yOSwyMC43NSA5LjExLDIwLjRMNy4yNSwxNi43TDMuNTUsMTQuOUMzLjE4LDE0LjcgMywxNC4zNSAzLDE0QzMsMTMuNjUgMy4xOCwxMy4zIDMuNTUsMTMuMUwxMS41NSw5LjFDMTEuNjksOSAxMS44NCw5IDEyLDlNOS4zNSwxMS44Mkw4LjY1LDEyLjVMMTEuNSwxNS4zNUwxMi4xOCwxNC42NUw5LjM1LDExLjgyTTcuOTQsMTMuMjNMNy4yMywxMy45NEwxMC4wNiwxNi43N0wxMC43NywxNi4wNkw3Ljk0LDEzLjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUd1aXRhclBpY2sgPSBcIk0xOSw0LjFDMTguMSwzLjMgMTcsMi44IDE1LjgsMi41QzE1LjUsMi40IDEzLjYsMiAxMi4yLDJDMTIuMiwyIDEyLjEsMiAxMiwyQzEyLDIgMTEuOSwyIDExLjgsMkMxMC40LDIgOC40LDIuNCA4LjEsMi41QzcsMi44IDUuOSwzLjMgNSw0LjFDMyw1LjkgMyw4LjcgNCwxMUM1LDEzLjUgNi4xLDE1LjcgNy42LDE3LjlDOC44LDE5LjYgMTAuMSwyMiAxMiwyMkMxMy45LDIyIDE1LjIsMTkuNiAxNi41LDE3LjlDMTgsMTUuOCAxOS4xLDEzLjUgMjAuMSwxMUMyMSw4LjcgMjEsNS45IDE5LDQuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlHdWl0YXJQaWNrT3V0bGluZSA9IFwiTTE5LDQuMUMxOC4xLDMuMyAxNywyLjggMTUuOCwyLjVDMTUuNSwyLjQgMTMuNiwyIDEyLjIsMkMxMi4yLDIgMTIuMSwyIDEyLDJDMTIsMiAxMS45LDIgMTEuOCwyQzEwLjQsMiA4LjQsMi40IDguMSwyLjVDNywyLjggNS45LDMuMyA1LDQuMUMzLDUuOSAzLDguNyA0LDExQzUsMTMuNSA2LjEsMTUuNyA3LjYsMTcuOUM4LjgsMTkuNiAxMC4xLDIyIDEyLDIyQzEzLjksMjIgMTUuMiwxOS42IDE2LjUsMTcuOUMxOCwxNS44IDE5LjEsMTMuNSAyMC4xLDExQzIxLDguNyAyMSw1LjkgMTksNC4xTTE4LjIsMTAuMkMxNy4xLDEyLjkgMTYuMSwxNC45IDE0LjgsMTYuN0MxNC42LDE2LjkgMTQuNSwxNy4yIDE0LjMsMTcuNEMxMy44LDE4LjIgMTIuNiwyMCAxMiwyMEMxMiwyMCAxMiwyMCAxMiwyMEMxMS4zLDIwIDEwLjIsMTguMyA5LjYsMTcuNEM5LjQsMTcuMiA5LjMsMTYuOSA5LjEsMTYuN0M3LjksMTQuOSA2LjgsMTIuOSA1LjcsMTAuMkM1LjUsOS41IDQuNyw3IDYuMyw1LjVDNi44LDUgNy42LDQuNyA4LjYsNC40QzksNC40IDEwLjcsNCAxMS44LDRDMTEuOCw0IDEyLjEsNCAxMi4xLDRDMTMuMiw0IDE0LjksNC4zIDE1LjMsNC40QzE2LjMsNC43IDE3LjEsNSAxNy42LDUuNUMxOS4zLDcgMTguNSw5LjUgMTguMiwxMC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUd1eUZhd2tlc01hc2sgPSBcIk0yMSwxM0E5LDkgMCAwLDEgMTIsMjJBOSw5IDAgMCwxIDMsMTNMMy4wMyw0LjQzQzUuNjgsMi44OCA4Ljc2LDIgMTIuMDUsMkMxNS4zLDIgMTguMzYsMi44NyAyMSw0LjM4VjEzTTEzLDE5LjkzQzE2LjM5LDE5LjQ0IDE5LDE2LjUgMTksMTNWNS41OUMxNi45LDQuNTcgMTQuNTQsNCAxMi4wNSw0QzkuNSw0IDcuMDgsNC42IDQuOTQsNS42Nkw1LDEzQzUsMTYuNSA3LjYzLDE5LjQ0IDExLDE5LjkzVjE4SDEzVjE5LjkzTTExLDE2SDhMNiwxM0w5LDE0SDEwTDExLDEzSDEzTDE0LDE0SDE1TDE4LDEzTDE2LDE2SDEzTDEyLDE1TDExLDE2TTYsOS4wM0M2LjY0LDguNCA3LjUsOC4wNSA4LjUsOC4wNUM5LjQ1LDguMDUgMTAuMzQsOC40IDExLDkuMDNDMTAuMzQsOS42NSA5LjQ1LDEwIDguNSwxMEM3LjUsMTAgNi42NCw5LjY1IDYsOS4wM00xMyw5LjAzQzEzLjY0LDguNCAxNC41LDguMDUgMTUuNSw4LjA1QzE2LjQ1LDguMDUgMTcuMzQsOC40IDE4LDkuMDNDMTcuMzQsOS42NSAxNi40NSwxMCAxNS41LDEwQzE0LjUsMTAgMTMuNjQsOS42NSAxMyw5LjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhaWwgPSBcIk00LDE2SDdWMjJINFYxNk0xOSwyLjM5QzE4LjkyLDMuODYgMTguNTUsNS4xMyAxNy44Niw2LjIxQzE3LjE3LDcuMjkgMTYuMjIsOCAxNSw4LjM5VjIySDEzVjE2SDExVjIySDlWMTAuMDhDOC43MiwxMC4xNyA4LjUsMTAuMjggOC4zOSwxMC40MUM3LjQ1LDExLjE2IDcsMTIuMTkgNywxMy41VjE0SDVWMTMuNUM1LDExLjUzIDUuNzIsOS45NCA3LjEzLDguNzJDOC41Myw3LjU2IDEwLjE2LDcgMTIsN0MxMy40MSw3IDE0LjU2LDYuNjQgMTUuNDcsNS45NUMxNi41LDUuMTEgMTcsMy45NSAxNywyLjVWMkgxOVYyLjM5TTEyLDJBMiwyIDAgMCwxIDE0LDRBMiwyIDAgMCwxIDEyLDZBMiwyIDAgMCwxIDEwLDRBMiwyIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFpckRyeWVyID0gXCJNMjIgOUE0LjMyIDQuMzIgMCAwIDEgMTkuNzggOC40NUEzLjQgMy40IDAgMCAwIDE4IDhWN0E0LjMyIDQuMzIgMCAwIDEgMjAuMjIgNy41NUEzLjQgMy40IDAgMCAwIDIyIDhNMjIgNkEzLjQgMy40IDAgMCAxIDIwLjIyIDUuNTVBNC4zMiA0LjMyIDAgMCAwIDE4IDVWNkEzLjQgMy40IDAgMCAxIDE5Ljc4IDYuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDdNMjIgMTBBMy40IDMuNCAwIDAgMSAyMC4yMiA5LjU1QTQuMzIgNC4zMiAwIDAgMCAxOCA5VjEwQTMuNCAzLjQgMCAwIDEgMTkuNzggMTAuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDExTTEwIDEyLjczQTcwLjM5IDcwLjM5IDAgMCAwIDE3IDExVjRTMTAuNSAyIDcuNSAyQTUuNSA1LjUgMCAwIDAgNi4xMiAxMi44Mkw3IDE5SDhBMyAzIDAgMCAwIDkuNDYgMjEuMzNBMy4xNSAzLjE1IDAgMCAxIDExIDI0SDEyQTQuMTIgNC4xMiAwIDAgMCAxMC4wOSAyMC41NUM5LjM5IDIwIDkgMTkuNjMgOSAxOUgxME03LjUgMTBBMi41IDIuNSAwIDEgMSAxMCA3LjVBMi41IDIuNSAwIDAgMSA3LjUgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFpckRyeWVyT3V0bGluZSA9IFwiTTEwIDEyLjczQTcwLjM5IDcwLjM5IDAgMCAwIDE3IDExVjRTMTAuNSAyIDcuNSAyQTUuNSA1LjUgMCAwIDAgNi4xMiAxMi44Mkw3IDE5SDhBMyAzIDAgMCAwIDkuNDYgMjEuMzNBMy4xNSAzLjE1IDAgMCAxIDExIDI0SDEyQTQuMTIgNC4xMiAwIDAgMCAxMC4wOSAyMC41NUM5LjM5IDIwIDkgMTkuNjMgOSAxOUgxME00IDcuNUEzLjUgMy41IDAgMCAxIDcuNSA0QTM3LjA4IDM3LjA4IDAgMCAxIDE1IDUuNVY5LjVBMzcuMDggMzcuMDggMCAwIDEgNy41IDExQTMuNSAzLjUgMCAwIDEgNCA3LjVNMjIgOUE0LjMyIDQuMzIgMCAwIDEgMTkuNzggOC40NUEzLjQgMy40IDAgMCAwIDE4IDhWN0E0LjMyIDQuMzIgMCAwIDEgMjAuMjIgNy41NUEzLjQgMy40IDAgMCAwIDIyIDhNMjIgNkEzLjQgMy40IDAgMCAxIDIwLjIyIDUuNTVBNC4zMiA0LjMyIDAgMCAwIDE4IDVWNkEzLjQgMy40IDAgMCAxIDE5Ljc4IDYuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDdNMjIgMTBBMy40IDMuNCAwIDAgMSAyMC4yMiA5LjU1QTQuMzIgNC4zMiAwIDAgMCAxOCA5VjEwQTMuNCAzLjQgMCAwIDEgMTkuNzggMTAuNDVBNC4zMiA0LjMyIDAgMCAwIDIyIDExTTkgNy41QTEuNSAxLjUgMCAxIDEgNy41IDZBMS41IDEuNSAwIDAgMSA5IDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYWxsb3dlZW4gPSBcIk02LjUsNkM3LjQ3LDYgOC4zNyw2LjUgOS4xMSw3LjM4QzkuNjYsNi43OSAxMC4zMSw2LjM2IDExLDYuMTVWNEEyLDIgMCAwLDEgMTMsMkgxNVY0SDEzVjYuMTVDMTMuNjksNi4zNiAxNC4zNCw2Ljc5IDE0Ljg5LDcuMzhDMTUuNjMsNi41IDE2LjUzLDYgMTcuNSw2QzIwLDYgMjIsOS4zNiAyMiwxMy41QzIyLDE3LjY0IDIwLDIxIDE3LjUsMjFDMTYuNTMsMjEgMTUuNjMsMjAuNSAxNC44OSwxOS42MkMxNC4wOCwyMC41IDEzLjA4LDIxIDEyLDIxQzEwLjkyLDIxIDkuOTIsMjAuNSA5LjExLDE5LjYyQzguMzcsMjAuNSA3LjQ3LDIxIDYuNSwyMUM0LDIxIDIsMTcuNjQgMiwxMy41QzIsOS4zNiA0LDYgNi41LDZNOSwxMEw3Ljc1LDEyLjI1SDEwLjI1TDksMTBNMTUsMTBMMTMuNzUsMTIuMjVIMTYuMjVMMTUsMTBNOCwxN0gxMEwxMSwxNkwxMiwxN0gxNEwxNSwxNkwxNiwxN0wxNy41LDE0TDEzLjkyLDE0LjYyTDEzLDE2TDEyLDE1SDEwTDksMTZMOCwxNUw2LDE0TDgsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFtYnVyZ2VyID0gXCJNMiwxNkgyMlYxOEMyMiwxOS4xMSAyMS4xMSwyMCAyMCwyMEg0QzIuODksMjAgMiwxOS4xMSAyLDE4VjE2TTYsNEgxOEMyMC4yMiw0IDIyLDUuNzggMjIsOFYxMEgyVjhDMiw1Ljc4IDMuNzgsNCA2LDRNNCwxMUgxNUwxNywxM0wxOSwxMUgyMEMyMS4xMSwxMSAyMiwxMS44OSAyMiwxM0MyMiwxNC4xMSAyMS4xMSwxNSAyMCwxNUg0QzIuODksMTUgMiwxNC4xMSAyLDEzQzIsMTEuODkgMi44OSwxMSA0LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbW1lciA9IFwiTTIgMTkuNjNMMTMuNDMgOC4yTDEyLjcyIDcuNUwxNC4xNCA2LjA3TDEyIDMuODlDMTMuMiAyLjcgMTUuMDkgMi43IDE2LjI3IDMuODlMMTkuODcgNy41TDE4LjQ1IDguOTFIMjEuMjlMMjIgOS42MkwxOC40NSAxMy4yMUwxNy43NCAxMi41VjkuNjJMMTYuMjcgMTEuMDRMMTUuNTYgMTAuMzNMNC4xMyAyMS43NkwyIDE5LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbW1lclNjcmV3ZHJpdmVyID0gXCJNMTYuMDYgMTMuMDlMMjEuNjkgMTguNjhMMTguMzcgMjEuOTZMMTIuNzggMTYuMzdWMTUuNDVMMTUuMTQgMTMuMDlIMTYuMDZNMTYuOTcgMTAuNTZMMTYgOS42TDExLjIxIDE0LjRWMTYuMzdMNS41OCAyMkwyLjMgMTguNjhMNy44OSAxMy4wOUg5Ljg2TDEwLjY0IDEyLjMxTDYuOCA4LjQ2SDUuNUwyLjY5IDUuNjJMNS4zMSAzTDguMTEgNS44VjcuMTFMMTIgMTAuOTVMMTQuNjYgOC4yOUwxMy43IDcuMjhMMTUgNS45N0gxMi4zNEwxMS42OSA1LjMyTDE1IDJMMTUuNjYgMi42NlY1LjMyTDE2Ljk3IDRMMjAuMjUgNy4yOEMyMS4zNCA4LjM4IDIxLjM0IDEwLjE3IDIwLjI1IDExLjI2TDE4LjI4IDkuMjVMMTYuOTcgMTAuNTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFtbWVyV3JlbmNoID0gXCJNMTMuNzggMTUuM0wxOS43OCAyMS4zTDIxLjg5IDE5LjE0TDE1Ljg5IDEzLjE0TDEzLjc4IDE1LjNNMTcuNSAxMC4xQzE3LjExIDEwLjEgMTYuNjkgMTAuMDUgMTYuMzYgOS45MUw0Ljk3IDIxLjI1TDIuODYgMTkuMTRMMTAuMjcgMTEuNzRMOC41IDkuOTZMNy43OCAxMC42Nkw2LjMzIDkuMjVWMTIuMTFMNS42MyAxMi44MUwyLjExIDkuMjVMMi44MSA4LjU1SDUuNjJMNC4yMiA3LjE0TDcuNzggMy41OEM4Ljk1IDIuNDEgMTAuODMgMi40MSAxMiAzLjU4TDkuODkgNS43NEwxMS4zIDcuMTRMMTAuNTkgNy44NUwxMi4zOCA5LjYzTDE0LjIgNy43NUMxNC4wNiA3LjQyIDE0IDcgMTQgNi42M0MxNCA0LjY2IDE1LjU2IDMuMTEgMTcuNSAzLjExQzE4LjA5IDMuMTEgMTguNjEgMy4yNSAxOS4wOCAzLjUzTDE2LjQxIDYuMkwxNy45MSA3LjdMMjAuNTggNS4wM0MyMC44NiA1LjUgMjEgNiAyMSA2LjYzQzIxIDguNTUgMTkuNDUgMTAuMSAxNy41IDEwLjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZCA9IFwiTTYuNTgsMTlIMTQuNThWMjJINi41OFYxOU0xOS43NCwxMS42QzE5LjU1LDExLjQgMTkuMjksMTEuMjggMTksMTEuMjhMMTguNzgsMTEuMzFMMTUuNTgsMTNWMTEuODNMMTYuMDksMi45QzE2LjEyLDIuMzUgMTUuNywxLjg3IDE1LjE1LDEuODRDMTQuNiwxLjgxIDE0LjEyLDIuMjMgMTQuMDksMi43OEwxMy44Miw3LjQ3SDEzLjU4TDEyLjU0LDcuNThWMkExLDEgMCAwLDAgMTEuNTQsMUMxMSwxIDEwLjU0LDEuNDUgMTAuNTQsMlY4LjQxTDkuNzIsOC43OEw5LjAzLDMuMzJDOC45NiwyLjc3IDguNDYsMi4zOCA3LjkxLDIuNDVDNy4zNiwyLjUgNi45NywzIDcuMDQsMy41N0w3LjgxLDkuNjNMNy40Myw5LjhDNy4zLDkuODUgNy4xOCw5LjkzIDcuMDcsMTBMNS45Nyw2LjExQzUuODEsNS41NCA1LjI1LDUuMiA0LjcxLDUuMzRDNC4xOCw1LjUgMy44OCw2LjA4IDQuMDQsNi42NUw2LjYxLDE1Ljc3QzYuNjEsMTUuOCA2LjYzLDE1Ljg0IDYuNjQsMTUuODdMNi42NywxNkg2LjY4QzYuOSwxNi41NyA3LjQ3LDE3IDguMDgsMTdIMTQuNThDMTQuOTcsMTcgMTUuMzIsMTYuODQgMTUuNTgsMTYuNTdMMjAuNSwxMi4zN0wxOS43NCwxMS42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRIZWFydCA9IFwiTTIwIDE3UTIwLjg2IDE3IDIxLjQ1IDE3LjZUMjIuMDMgMTlMMTQgMjJMNyAyMFYxMUg4Ljk1TDE2LjIyIDEzLjY5UTE3IDE0IDE3IDE0LjgxIDE3IDE1LjI4IDE2LjY2IDE1LjYzVDE1LjggMTZIMTNMMTEuMjUgMTUuMzNMMTAuOTIgMTYuMjdMMTMgMTdIMjBNMTYgMy4yM1ExNy4wNiAyIDE4LjcgMiAyMC4wNiAyIDIxIDNUMjIgNS4zUTIyIDYuMzMgMjEgNy43NlQxOS4wMyAxMC4xNSAxNiAxM1ExMy45MiAxMS4xMSAxMi45NCAxMC4xNVQxMC45NyA3Ljc2IDEwIDUuM1ExMCAzLjk0IDEwLjk3IDNUMTMuMzEgMlExNC45MSAyIDE2IDMuMjNNLjk4NCAxMUg1VjIySC45ODRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZEhlYXJ0T3V0bGluZSA9IFwiTTE2IDMuMjNDMTYuNzEgMi40MSAxNy42MSAyIDE4LjcgMkMxOS42MSAyIDIwLjM3IDIuMzMgMjEgM0MyMS42MyAzLjY3IDIxLjk2IDQuNDMgMjIgNS4zQzIyIDYgMjEuNjcgNi44MSAyMSA3Ljc2UzE5LjY4IDkuNSAxOS4wMyAxMC4xNUMxOC4zOCAxMC43OSAxNy4zNyAxMS43NCAxNiAxM0MxNC42MSAxMS43NCAxMy41OSAxMC43OSAxMi45NCAxMC4xNVMxMS42MyA4LjcxIDEwLjk3IDcuNzZDMTAuMzEgNi44MSAxMCA2IDEwIDUuM0MxMCA0LjM5IDEwLjMyIDMuNjMgMTAuOTcgM0MxMS42MiAyLjM3IDEyLjQgMi4wNCAxMy4zMSAyQzE0LjM4IDIgMTUuMjcgMi40MSAxNiAzLjIzTTIyIDE5VjIwTDE0IDIyLjVMNyAyMC41NlYyMkgxVjExSDguOTdMMTUuMTMgMTMuM0MxNi4yNSAxMy43MiAxNyAxNC44IDE3IDE2SDE5QzIwLjY2IDE2IDIyIDE3LjM0IDIyIDE5TTUgMjBWMTNIM1YyMEg1TTE5LjkgMTguNTdDMTkuNzQgMTguMjQgMTkuMzkgMTggMTkgMThIMTMuNjVDMTMuMTEgMTggMTIuNTggMTcuOTIgMTIuMDcgMTcuNzVMOS42OSAxNi45NkwxMC4zMiAxNS4wNkwxMi43IDE1Ljg1QzEzIDE1Ljk1IDE1IDE2IDE1IDE2QzE1IDE1LjYzIDE0Ljc3IDE1LjMgMTQuNDMgMTUuMTdMOC42MSAxM0g3VjE4LjVMMTMuOTcgMjAuNDFMMTkuOSAxOC41N1pcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kTGVmdCA9IFwiTTMsNi41OFYxOC42N0MzLDIwLjUgNC41LDIyIDYuMzMsMjJIMTIuNDJDMTMuMzIsMjIgMTQuMTcsMjEuNjQgMTQuNzksMjFMMjEuMzMsMTQuMzZDMjEuMzMsMTQuMzYgMjAuMjgsMTMuMzMgMjAuMjUsMTMuMzJDMjAuMDcsMTMuMTYgMTkuODQsMTMuMDcgMTkuNTksMTMuMDdDMTkuNDEsMTMuMDcgMTkuMjQsMTMuMTIgMTkuMDksMTMuMjFDMTkuMDYsMTMuMjIgMTUuNSwxNS4yNiAxNS41LDE1LjI2VjUuMzNBMS4yNSwxLjI1IDAgMCwwIDE0LjI1LDQuMDhBMS4yNSwxLjI1IDAgMCwwIDEzLDUuMzNWMTEuMTdIMTIuMTdWMy4yNUExLjI1LDEuMjUgMCAwLDAgMTAuOTIsMkExLjI1LDEuMjUgMCAwLDAgOS42NywzLjI1VjExLjE3SDguODNWNC4wOEExLjI1LDEuMjUgMCAwLDAgNy41OCwyLjgzQTEuMjUsMS4yNSAwIDAsMCA2LjMzLDQuMDhWMTEuMTdINS41VjYuNThBMS4yNSwxLjI1IDAgMCwwIDQuMjUsNS4zM0ExLjI1LDEuMjUgMCAwLDAgMyw2LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRPa2F5ID0gXCJNMTMuMywxOS4yNkwxOC45NiwxMy42MUwyMS4wOCwxNS43M0wxNS40MiwyMS4zOEwxMy4zLDE5LjI2TTE2LjUsMTEuMTNMMTMuNCw4LjA1QzEzLjI3LDcuOTIgMTMuMTMsNy44MyAxMyw3Ljc2TDExLjg4LDMuNDdDMTEuNzQsMi45MyAxMS4yLDIuNjEgMTAuNjYsMi43NUMxMC4xMywyLjg4IDkuODEsMy40MyA5Ljk0LDMuOTZMMTEsOC4wM1Y4LjAzTDguNjcsMy4xOUM4LjQ0LDIuNjkgNy44NCwyLjUgNy4zNCwyLjcxQzYuODQsMi45NSA2LjYzLDMuNTUgNi44Nyw0LjA1TDguNTYsNy41OUw1LjE5LDQuMjVDNC44LDMuODYgNC4xNiwzLjg2IDMuNzcsNC4yNUMzLjM4LDQuNjUgMy4zOSw1LjI4IDMuNzgsNS42N0w3LjUsOS4zN0w2LjgsOS42NEw1LjcyLDEwLjA3TDMuODEsMTEuMzlDMy44MSwxMS4zOSAzLDEyLjQ0IDIuOTMsMTIuODlDMi44NSwxMy4zNCAzLjcyLDE1LjYgMy43MiwxNS42SDMuNzNDMy44OSwxNS45NCA0LjIzLDE2LjE4IDQuNjMsMTYuMThBMSwxIDAgMCwwIDUuNjMsMTUuMThDNS42MywxNS4wOCA1LjYsMTUgNS41NywxNC45MUw1LjU5LDE0LjlMNSwxMy4xN0w2LjIzLDEyLjE5QzYuNywxMi4yMSA3LjcxLDEyLjI5IDguMiwxMi4zMkMxMC45MywxNC43NyA4LjM1LDE1LjczIDguMzUsMTUuNzNMNC44OSwxNi43OUw0LjcyLDE2LjkzQzQuNSwxNy4xMyA0LjQxLDE3LjQgNC40MiwxNy42OEw0LjQ0LDE4Ljc1TDEwLjg3LDE4LjI1QzExLjI1LDE4LjI2IDExLjYxLDE4LjEyIDExLjg5LDE3Ljg1TDE2LjUsMTMuMjVDMTcuMDMsMTIuNzEgMTcuMDUsMTEuNyAxNi41LDExLjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQZWFjZSA9IFwiTTcsMTlIMTVWMjJIN1YxOU0xNi4xNSwxMlYxMkwxMi45NywxMC4zNEMxMi44MiwxMC4zNCAxMi42OSwxMC40IDEyLjYsMTAuNUwxMi4zLDEwLjgxTDEyLjg5LDEzLjIzTDExLjkxLDEzLjQ3TDEwLjcyLDguNUw5LjI1LDkuMThMMTAuMjksMTMuNDdMOS4zMiwxMy43TDguMzIsOS41OUw3Ljg1LDkuOEM3LjM1LDEwIDcsMTAuNTMgNywxMS4xNFYxNS41QzcsMTYuMyA3LjczLDE3IDguNSwxN0gxNUMxNS4zOSwxNyAxNS43NCwxNi44NCAxNiwxNi41N0wxNi41LDE2LjE2QzE2LjUsMTYuMTYgMTcsMTUuNzggMTcsMTUuMzZWMTMuN0MxNywxMy43IDE3LDEyLjU2IDE2LjE1LDEyTTE2Ljk0LDFDMTYuNCwwLjkxIDE1Ljg3LDEuMjUgMTUuNzYsMS44TDE0LjY5LDcuOTdDMTQuNDcsNy45NCAxNC4zOCw3Ljg2IDE0LjA4LDcuODNMMTMuNjUsNy44OEwxMi40MSwxLjhDMTIuMywxLjI2IDExLjc4LDAuOTEgMTEuMjQsMUMxMC42OSwxLjEzIDEwLjM0LDEuNjYgMTAuNDUsMi4yTDExLjY1LDguMTFWOC4xMUwxMiw5LjY3QzEyLjI4LDkuNDcgMTIuNjEsOS4zNCAxMi45Nyw5LjM0SDEzLjMxTDE2LjMxLDEwLjk1TDE3LjcyLDIuMkMxNy44MywxLjY2IDE3LjUsMS4xMyAxNi45NCwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQZWFjZVZhcmlhbnQgPSBcIk03LDE5SDE1VjIySDdWMTlNMTYuOTQsMUMxNi40LDAuOTEgMTUuODcsMS4yNSAxNS43NiwxLjhMMTQuNzUsNy41N0MxNC41Myw3LjU0IDE0LjI5LDcuNSAxNCw3LjQ3TDEzLjU3LDcuNUwxMi40MSwxLjhDMTIuMzEsMS4yNiAxMS43OCwwLjkxIDExLjI0LDFDMTAuNywxLjEzIDEwLjM1LDEuNjYgMTAuNDUsMi4yTDExLjY1LDguMTFMNy44NSw5LjhDNy4zNSwxMCA3LDEwLjUzIDcsMTEuMTRWMTUuNUM3LDE2LjMgNy43MywxNyA4LjUsMTdIMTVDMTUuMzksMTcgMTUuNzQsMTYuODQgMTYsMTYuNTdMMTYuNSwxNi4xNkMxNi41LDE2LjE2IDE3LDE1Ljc4IDE3LDE1LjM2VjEzQzE3LDEzIDE3LDExLjg2IDE2LjEzLDExLjNMMTcuNzEsMi4yQzE3LjgzLDEuNjYgMTcuNSwxLjEzIDE2Ljk0LDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFBvaW50aW5nRG93biA9IFwiTTkuOSwyMVYxMUw2LjcsMTIuNjlMNi41LDEyLjcyQzYuMTksMTIuNzIgNS45MywxMi42IDUuNzQsMTIuNEw1LDExLjYzTDkuOSw3LjQzQzEwLjE2LDcuMTYgMTAuNSw3IDEwLjksN0gxNy40QzE4LjE3LDcgMTguOSw3LjcgMTguOSw4LjVWMTIuODZDMTguOSwxMy40NyAxOC41NSwxNCAxOC4wNSwxNC4yTDEzLjExLDE2LjRMMTEuOSwxNi41M1YyMUExLDEgMCAwLDEgMTAuOSwyMkExLDEgMCAwLDEgOS45LDIxTTE4LjksNUgxMC45VjJIMTguOVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQb2ludGluZ0xlZnQgPSBcIk0zLDlIMTNMMTEuMzEsNS44TDExLjI4LDUuNThDMTEuMjgsNS4yOSAxMS40LDUuMDMgMTEuNiw0Ljg0TDEyLjM3LDQuMUwxNi41Nyw5QzE2Ljg0LDkuMjYgMTcsOS42MSAxNywxMFYxNi41QzE3LDE3LjI3IDE2LjMsMTggMTUuNSwxOEgxMS4xNEMxMC41MywxOCAxMCwxNy42NSA5LjgsMTcuMTVMNy42LDEyLjIxTDcuNDcsMTFIM0ExLDEgMCAwLDEgMiwxMEExLDEgMCAwLDEgMyw5TTE5LDE4VjEwSDIyVjE4SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRQb2ludGluZ1JpZ2h0ID0gXCJNMjEsOUExLDEgMCAwLDEgMjIsMTBBMSwxIDAgMCwxIDIxLDExSDE2LjUzTDE2LjQsMTIuMjFMMTQuMiwxNy4xNUMxNCwxNy42NSAxMy40NywxOCAxMi44NiwxOEg4LjVDNy43LDE4IDcsMTcuMjcgNywxNi41VjEwQzcsOS42MSA3LjE2LDkuMjYgNy40Myw5TDExLjYzLDQuMUwxMi40LDQuODRDMTIuNiw1LjAzIDEyLjcyLDUuMjkgMTIuNzIsNS41OEwxMi42OSw1LjhMMTEsOUgyMU0yLDE4VjEwSDVWMThIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kUG9pbnRpbmdVcCA9IFwiTTE0LDNWMTNMMTcuMiwxMS4zMUwxNy40MiwxMS4yOEMxNy43MSwxMS4yOCAxNy45NywxMS40IDE4LjE2LDExLjZMMTguOSwxMi4zN0wxNCwxNi41N0MxMy43NCwxNi44NCAxMy4zOSwxNyAxMywxN0g2LjVDNS43MywxNyA1LDE2LjMgNSwxNS41VjExLjE0QzUsMTAuNTMgNS4zNSwxMCA1Ljg1LDkuOEwxMC43OSw3LjZMMTIsNy40N1YzQTEsMSAwIDAsMSAxMywyQTEsMSAwIDAsMSAxNCwzTTUsMTlIMTNWMjJINVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kUmlnaHQgPSBcIk0yMSw2LjU4VjE4LjY3QTMuMzMsMy4zMyAwIDAsMSAxNy42NywyMkgxMS41OEMxMC42OCwyMiA5LjgzLDIxLjY0IDkuMjEsMjFMMi42NywxNC4zNkMyLjY3LDE0LjM2IDMuNzIsMTMuMzMgMy43NSwxMy4zMkMzLjkzLDEzLjE2IDQuMTYsMTMuMDcgNC40MSwxMy4wN0M0LjU5LDEzLjA3IDQuNzYsMTMuMTIgNC45MSwxMy4yMUM0Ljk0LDEzLjIyIDguNSwxNS4yNiA4LjUsMTUuMjZWNS4zM0ExLjI1LDEuMjUgMCAwLDEgOS43NSw0LjA4QTEuMjUsMS4yNSAwIDAsMSAxMSw1LjMzVjExLjE3SDExLjgzVjMuMjVBMS4yNSwxLjI1IDAgMCwxIDEzLjA4LDJDMTMuNzgsMiAxNC4zMywyLjU2IDE0LjMzLDMuMjVWMTEuMTdIMTUuMTdWNC4wOEMxNS4xNywzLjM5IDE1LjcyLDIuODMgMTYuNDIsMi44M0ExLjI1LDEuMjUgMCAwLDEgMTcuNjcsNC4wOFYxMS4xN0gxOC41VjYuNThBMS4yNSwxLjI1IDAgMCwxIDE5Ljc1LDUuMzNBMS4yNSwxLjI1IDAgMCwxIDIxLDYuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFNhdyA9IFwiTTkuOCwxN0w1LjksMTEuNkwyMCwyTDIyLDVWOEgxOVYxMUgxNlYxNEgxM1YxN005LjcsMTguN0w5LjIsMjEuNUw3LjYsMjIuN0M2LjcsMjMuMyA1LjUsMjMuMSA0LjgsMjIuMkwxLjMsMTcuM0MwLjcsMTYuNCAwLjksMTUuMiAxLjgsMTQuNUw1LjEsMTIuMkw5LjcsMTguN000LjYsMTVMMywxNi4xTDYuNSwyMUw4LjEsMTkuOEw0LjYsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFdhc2ggPSBcIk0xNyA1TDE3LjYyIDYuMzdMMTkgN0wxNy42MiA3LjYzTDE3IDlMMTYuMzYgNy42M0wxNSA3TDE2LjM2IDYuMzdMMTcgNU0xMSA2LjEzVjRIMTNDMTMuNTcgNCAxNC4xIDQuMTcgMTQuNTUgNC40NUwxNiAzQzE1LjE1IDIuMzkgMTQuMTMgMiAxMyAySDcuNVY0SDlWNi4xNEM3LjIzIDYuNSA1LjgxIDcuOCA1LjI2IDkuNUg5LjI0TDE1IDExLjY1VjExLjAzQzE1IDguNjEgMTMuMjggNi41OSAxMSA2LjEzTTEgMjJINVYxMUgxVjIyTTIwIDE3SDEzTDEwLjkxIDE2LjI3TDExLjI0IDE1LjMzTDEzIDE2SDE1LjgyQzE2LjQ3IDE2IDE3IDE1LjQ3IDE3IDE0LjgyQzE3IDE0LjMzIDE2LjY5IDEzLjg5IDE2LjIzIDEzLjcxTDguOTcgMTFIN1YyMEwxNCAyMkwyMiAxOUMyMiAxNy45IDIxLjExIDE3IDIwIDE3TTIwIDE0QzIxLjEgMTQgMjIgMTMuMSAyMiAxMlMyMCA4IDIwIDggMTggMTAuOSAxOCAxMiAxOC45IDE0IDIwIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRXYXNoT3V0bGluZSA9IFwiTTE3IDVMMTcuNjIgNi4zN0wxOSA3TDE3LjYyIDcuNjNMMTcgOUwxNi4zNiA3LjYzTDE1IDdMMTYuMzYgNi4zN0wxNyA1TTIwIDE0QzIxLjEgMTQgMjIgMTMuMSAyMiAxMlMyMCA4IDIwIDggMTggMTAuOSAxOCAxMiAxOC45IDE0IDIwIDE0TTExIDYuMVY0SDEzQzEzLjU3IDQgMTQuMSA0LjE3IDE0LjU1IDQuNDVMMTYgM0MxNS4xNSAyLjM5IDE0LjEzIDIgMTMgMkg3LjVWNEg5VjYuMTFDNy4yMiA2LjUgNS44IDcuNzkgNS4yNSA5LjVINy40MUM3Ljk0IDguNjEgOC44OSA4IDEwIDhDMTEuNjIgOCAxMi45NCA5LjI5IDEzIDEwLjlMMTUgMTEuNjVWMTFDMTUgOC41OCAxMy4yOCA2LjU2IDExIDYuMU0yMiAxOVYyMEwxNCAyMi41TDcgMjAuNTZWMjJIMVYxMUg4Ljk3TDE1LjEzIDEzLjNDMTYuMjUgMTMuNzIgMTcgMTQuOCAxNyAxNkgxOUMyMC42NiAxNiAyMiAxNy4zNCAyMiAxOU01IDIwVjEzSDNWMjBINU0xOS45IDE4LjU3QzE5Ljc0IDE4LjI0IDE5LjM5IDE4IDE5IDE4SDEzLjY1QzEzLjExIDE4IDEyLjU4IDE3LjkyIDEyLjA3IDE3Ljc1TDkuNjkgMTYuOTZMMTAuMzIgMTUuMDZMMTIuNyAxNS44NUMxMyAxNS45NSAxNSAxNiAxNSAxNkMxNSAxNS42MyAxNC43NyAxNS4zIDE0LjQzIDE1LjE3TDguNjEgMTNIN1YxOC41TDEzLjk3IDIwLjQxTDE5LjkgMTguNTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFuZFdhdGVyID0gXCJNMTcuNDIgMjIuNUg1LjMzQzMuNSAyMi41IDIgMjEgMiAxOS4xN1YxMy4wOEMyIDEyLjE4IDIuMzYgMTEuMzMgMyAxMC43MUw4LjYzIDUuMTdDOC42MyA1LjE3IDkuNjYgNi4yMiA5LjY3IDYuMjVDOS44MyA2LjQzIDkuOTIgNi42NiA5LjkyIDYuOTFDOS45MiA3LjA5IDkuODcgNy4yNiA5Ljc4IDcuNDFDOS43NyA3LjQ0IDggMTAgOCAxMEgxOC42N0MxOS4zNiAxMCAxOS45MiAxMC41NiAxOS45MiAxMS4yNUMxOS45MiAxMS45NCAxOS4zNiAxMi41IDE4LjY3IDEyLjVIMTIuODNWMTMuMzNIMjAuNzVDMjEuNDQgMTMuMzMgMjIgMTMuODkgMjIgMTQuNThDMjIgMTUuMjggMjEuNDQgMTUuODMgMjAuNzUgMTUuODNIMTIuODNWMTYuNjdIMTkuOTJDMjAuNjEgMTYuNjcgMjEuMTcgMTcuMjIgMjEuMTcgMTcuOTJDMjEuMTcgMTguNjEgMjAuNjEgMTkuMTcgMTkuOTIgMTkuMTdIMTIuODNWMjBIMTcuNDJDMTguMTEgMjAgMTguNjcgMjAuNTYgMTguNjcgMjEuMjVDMTguNjcgMjEuOTQgMTguMTEgMjIuNSAxNy40MiAyMi41TTEzLjUgNC44QzEzLjUgNC44IDEyIDYuNDYgMTIgNy41QzEyIDkuNSAxNSA5LjUgMTUgNy41QzE1IDYuNDYgMTMuNSA0LjggMTMuNSA0LjhNMTguNSAxQzE4LjUgMSAxNiAzLjc2IDE2IDUuNUMxNiA4LjgzIDIxIDguODMgMjEgNS41QzIxIDMuNzYgMTguNSAxIDE4LjUgMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5kYmFsbCA9IFwiTTE1LjgzIDEwLjQzQTYuOTMgNi45MyAwIDAgMSAxOC4zOSAxNC44NkE2LjY0IDYuNjQgMCAwIDEgMTcuNSAxOS41TDE1Ljc4IDE4LjVBNSA1IDAgMCAwIDE2LjQ0IDE2QTUuMjIgNS4yMiAwIDAgMCAxNS40NiAxMy4wNkw5LjE4IDIzLjkzTDcuNDQgMjIuOTVMMTAuNDQgMTcuNzVMOC43MSAxNi43Nkw3LjIxIDE5LjM0TDUuNSAxOC4zNkwxMC42MyA5LjQ1QTcgNyAwIDAgMSA4LjggNS40NkE2LjkxIDYuOTEgMCAwIDEgOS42OSAxLjFMMTEuNDMgMi4xM0E0Ljg0IDQuODQgMCAwIDAgMTAuOTEgNS45QTQuNzQgNC43NCAwIDAgMCAxMy4yMSA4LjkzTTE2IDVBMiAyIDAgMSAwIDE4IDdBMiAyIDAgMCAwIDE2IDVNMTMuNSAxQTEuNSAxLjUgMCAxIDAgMTUgMi41QTEuNSAxLjUgMCAwIDAgMTMuNSAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRjdWZmcyA9IFwiTTIwLjI0IDYuNzZDMTguNCA0LjkxIDE1LjY1IDQuNTMgMTMuNDIgNS41OUwxMi40NiA0LjYzQzEyLjA3IDQuMjQgMTEuNDQgNC4yNCAxMS4wNSA0LjYzTDEwLjk3IDQuNzJDMTAuODMgMy43NSAxMCAzIDkgM0M3LjkgMyA3IDMuOSA3IDVDNyA1LjA5IDcgNS4xOCA3LjAzIDUuMjZDNi40MiA1LjYxIDYgNi4yNSA2IDdDNiA3LjQ2IDYuMTYgNy44NyA2LjQyIDguMjFDNi4xNyA4LjM5IDYgOC42NyA2IDlWMTAuMzVDMy42NyAxMS4xNyAyIDEzLjM5IDIgMTZDMiAxOS4zMSA0LjY5IDIyIDggMjJTMTQgMTkuMzEgMTQgMTZDMTQgMTMuMzkgMTIuMzMgMTEuMTcgMTAgMTAuMzVWOUMxMCA4LjY3IDkuODMgOC4zOSA5LjU4IDguMjFDOS44NCA3Ljg3IDEwIDcuNDYgMTAgN0MxMCA2LjkxIDEwIDYuODIgOS45NyA2Ljc0QzEwLjE1IDYuNjQgMTAuMyA2LjUgMTAuNDMgNi4zOEMxMS4zNiA2Ljg4IDEyIDcuODYgMTIgOVY5LjA4QzEyLjEzIDkuMTUgMTIuMjUgOS4yNSAxMi4zOCA5LjMzQzEyLjU3IDguOTEgMTIuODMgOC41IDEzLjE3IDguMTdDMTQuNzMgNi42MSAxNy4yNyA2LjYxIDE4LjgzIDguMTdDMjAuMzkgOS43MyAyMC4zOSAxMi4yNyAxOC44MyAxMy44M0MxOC4wMyAxNC42MyAxNyAxNSAxNS45MyAxNUMxNiAxNS4zMiAxNiAxNS42NiAxNiAxNkMxNiAxNi4zNCAxNS45NyAxNi42NyAxNS45MyAxN0MxNy41IDE3IDE5LjA1IDE2LjQzIDIwLjI0IDE1LjI0QzIyLjU5IDEyLjkgMjIuNTkgOS4xIDIwLjI0IDYuNzZNOSA0QzkuNTUgNCAxMCA0LjQ1IDEwIDVDMTAgNS4zMyA5LjgzIDUuNjEgOS41OCA1Ljc5QzkuMjIgNS4zMSA4LjY1IDUgOCA1QzggNC40NSA4LjQ1IDQgOSA0TTcuNDIgNi4yMUM3Ljc4IDYuNjkgOC4zNSA3IDkgN0M5IDcuNTUgOC41NSA4IDggOFM3IDcuNTUgNyA3QzcgNi42NyA3LjE3IDYuMzkgNy40MiA2LjIxTTEyIDE2QzEyIDE4LjIxIDEwLjIxIDIwIDggMjBTNCAxOC4yMSA0IDE2QzQgMTMuNzkgNS43OSAxMiA4IDEyUzEyIDEzLjc5IDEyIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRzaGFrZSA9IFwiTTExIDZIMTRMMTcuMjkgMi43QTEgMSAwIDAgMSAxOC43MSAyLjdMMjEuMjkgNS4yOUExIDEgMCAwIDEgMjEuMjkgNi43TDE5IDlIMTFWMTFBMSAxIDAgMCAxIDEwIDEyQTEgMSAwIDAgMSA5IDExVjhBMiAyIDAgMCAxIDExIDZNNSAxMVYxNUwyLjcxIDE3LjI5QTEgMSAwIDAgMCAyLjcxIDE4LjdMNS4yOSAyMS4yOUExIDEgMCAwIDAgNi43MSAyMS4yOUwxMSAxN0gxNUExIDEgMCAwIDAgMTYgMTZWMTVIMTdBMSAxIDAgMCAwIDE4IDE0VjEzSDE5QTEgMSAwIDAgMCAyMCAxMlYxMUgxM1YxMkEyIDIgMCAwIDEgMTEgMTRIOUEyIDIgMCAwIDEgNyAxMlY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhbmRzaGFrZU91dGxpbmUgPSBcIk0yMS43MSA4LjcxQzIyLjk2IDcuNDYgMjIuMzkgNiAyMS43MSA1LjI5TDE4LjcxIDIuMjlDMTcuNDUgMS4wNCAxNiAxLjYxIDE1LjI5IDIuMjlMMTMuNTkgNEgxMUM5LjEgNCA4IDUgNy40NCA2LjE1TDMgMTAuNTlWMTQuNTlMMi4yOSAxNS4yOUMxLjA0IDE2LjU1IDEuNjEgMTggMi4yOSAxOC43MUw1LjI5IDIxLjcxQzUuODMgMjIuMjUgNi40MSAyMi40NSA2Ljk2IDIyLjQ1QzcuNjcgMjIuNDUgOC4zMiAyMi4xIDguNzEgMjEuNzFMMTEuNDEgMTlIMTVDMTYuNyAxOSAxNy41NiAxNy45NCAxNy44NyAxNi45QzE5IDE2LjYgMTkuNjIgMTUuNzQgMTkuODcgMTQuOUMyMS40MiAxNC41IDIyIDEzLjAzIDIyIDEyVjlIMjEuNDFMMjEuNzEgOC43MU0yMCAxMkMyMCAxMi40NSAxOS44MSAxMyAxOSAxM0wxOCAxM0wxOCAxNEMxOCAxNC40NSAxNy44MSAxNSAxNyAxNUwxNiAxNUwxNiAxNkMxNiAxNi40NSAxNS44MSAxNyAxNSAxN0gxMC41OUw3LjMxIDIwLjI4QzcgMjAuNTcgNi44MiAyMC40IDYuNzEgMjAuMjlMMy43MiAxNy4zMUMzLjQzIDE3IDMuNiAxNi44MiAzLjcxIDE2LjcxTDUgMTUuNDFWMTEuNDFMNyA5LjQxVjExQzcgMTIuMjEgNy44IDE0IDEwIDE0UzEzIDEyLjIxIDEzIDExSDIwVjEyTTIwLjI5IDcuMjlMMTguNTkgOUgxMVYxMUMxMSAxMS40NSAxMC44MSAxMiAxMCAxMlM5IDExLjQ1IDkgMTFWOEM5IDcuNTQgOS4xNyA2IDExIDZIMTQuNDFMMTYuNjkgMy43MkMxNyAzLjQzIDE3LjE4IDMuNiAxNy4yOSAzLjcxTDIwLjI4IDYuNjlDMjAuNTcgNyAyMC40IDcuMTggMjAuMjkgNy4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYW5nZXIgPSBcIk0xMiA0QTMuNSAzLjUgMCAwIDAgOC41IDcuNUgxMC41QTEuNSAxLjUgMCAwIDEgMTIgNkExLjUgMS41IDAgMCAxIDEzLjUgNy41QTEuNSAxLjUgMCAwIDEgMTIgOUMxMS40NSA5IDExIDkuNDUgMTEgMTBWMTEuNzVMMi40IDE4LjJBMSAxIDAgMCAwIDMgMjBIMjFBMSAxIDAgMCAwIDIxLjYgMTguMkwxMyAxMS43NVYxMC44NUEzLjUgMy41IDAgMCAwIDE1LjUgNy41QTMuNSAzLjUgMCAwIDAgMTIgNE0xMiAxMy41TDE4IDE4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGFyZEhhdCA9IFwiTTkuODcsMTIuMTVMOSw2LjQ2QzEwLjk1LDUuODQgMTMuMDUsNS44NCAxNSw2LjQ2TDE0LjEzLDEyLjE1QzE0LjA2LDEyLjY0IDEzLjYzLDEzIDEzLjEzLDEzSDEwLjg2QzEwLjM3LDEzIDkuOTQsMTIuNjQgOS44NywxMi4xNU0yMiwxNlYxNkMyMiwxNS4yMSAyMS41MywxNC41IDIwLjgsMTQuMTdDMjAuMzIsMTEuODYgMTguOTYsOS44MyAxNyw4LjVMMTUuMjQsMTMuMzRDMTUuMSwxMy43NCAxNC43MiwxNCAxNC4zLDE0SDkuN0M5LjI4LDE0IDguOSwxMy43NCA4Ljc2LDEzLjM0TDcsOC41QzUuMDQsOS44MyAzLjY4LDExLjg2IDMuMiwxNC4xNkMyLjQ3LDE0LjUgMiwxNS4yIDIsMTZMOC40NSwxNy44NEM4LjgxLDE3Ljk0IDkuMTgsMTggOS41NSwxOEgxNC40M0MxNC44LDE4IDE1LjE3LDE3Ljk0IDE1LjUzLDE3Ljg0TDIyLDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhhcmRkaXNrID0gXCJNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk0xMiw0QTYsNiAwIDAsMCA2LDEwQzYsMTMuMzEgOC42OSwxNiAxMi4xLDE2TDExLjIyLDEzLjc3QzEwLjk1LDEzLjI5IDExLjExLDEyLjY4IDExLjU5LDEyLjRMMTIuNDUsMTEuOUMxMi45MywxMS42MyAxMy41NCwxMS43OSAxMy44MiwxMi4yN0wxNS43NCwxNC42OUMxNy4xMiwxMy41OSAxOCwxMS45IDE4LDEwQTYsNiAwIDAsMCAxMiw0TTEyLDlBMSwxIDAgMCwxIDEzLDEwQTEsMSAwIDAsMSAxMiwxMUExLDEgMCAwLDEgMTEsMTBBMSwxIDAgMCwxIDEyLDlNNywxOEExLDEgMCAwLDAgNiwxOUExLDEgMCAwLDAgNywyMEExLDEgMCAwLDAgOCwxOUExLDEgMCAwLDAgNywxOE0xMi4wOSwxMy4yN0wxNC41OCwxOS41OEwxNy4xNywxOC4wOEwxMi45NSwxMi43N0wxMi4wOSwxMy4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIYXJkZGlza1BsdXMgPSBcIk0xMiA5QTEgMSAwIDEgMCAxMyAxMEExIDEgMCAwIDAgMTIgOU0xMiA5QTEgMSAwIDEgMCAxMyAxMEExIDEgMCAwIDAgMTIgOU0xOCAySDZBMiAyIDAgMCAwIDQgNFYxMy4wOUE1LjQ3IDUuNDcgMCAwIDEgNSAxM0E1LjcxIDUuNzEgMCAwIDEgNyAxMy4zNkE2IDYgMCAxIDEgMTUuNzEgMTQuNjlMMTMuNzkgMTIuMjdBMSAxIDAgMCAwIDEyLjQyIDExLjlMMTEuNTYgMTIuNEExIDEgMCAwIDAgMTEuMTkgMTMuNzdMMTIuMSAxNkE2LjEyIDYuMTIgMCAwIDEgMTAgMTUuNjJBNiA2IDAgMCAxIDEwLjE5IDIySDE4QTIgMiAwIDAgMCAyMCAyMFY0QTIgMiAwIDAgMCAxOCAyTTE0LjU4IDE5LjU4TDEyLjA5IDEzLjI3TDEyLjk1IDEyLjc3TDE3LjE3IDE4LjA4TTEyIDExQTEgMSAwIDEgMCAxMSAxMEExIDEgMCAwIDAgMTIgMTFNOSAyMEg2VjIzSDRWMjBIMVYxOEg0VjE1SDZWMThIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIYXJkZGlza1JlbW92ZSA9IFwiTTEyIDlBMSAxIDAgMSAwIDEzIDEwQTEgMSAwIDAgMCAxMiA5TTEyIDlBMSAxIDAgMSAwIDEzIDEwQTEgMSAwIDAgMCAxMiA5TTE4IDJINkEyIDIgMCAwIDAgNCA0VjEzLjA5QTUuNDcgNS40NyAwIDAgMSA1IDEzQTUuNzEgNS43MSAwIDAgMSA3IDEzLjM2QTYgNiAwIDEgMSAxNS43MSAxNC42OUwxMy43OSAxMi4yN0ExIDEgMCAwIDAgMTIuNDIgMTEuOUwxMS41NiAxMi40QTEgMSAwIDAgMCAxMS4xOSAxMy43N0wxMi4xIDE2QTYuMTIgNi4xMiAwIDAgMSAxMCAxNS42MkE2IDYgMCAwIDEgMTAuMTkgMjJIMThBMiAyIDAgMCAwIDIwIDIwVjRBMiAyIDAgMCAwIDE4IDJNMTQuNTggMTkuNThMMTIuMDkgMTMuMjdMMTIuOTUgMTIuNzdMMTcuMTcgMTguMDhNMTIgMTFBMSAxIDAgMSAwIDExIDEwQTEgMSAwIDAgMCAxMiAxMU03LjEyIDIyLjU0TDUgMjAuNDFMMi44OCAyMi41NEwxLjQ2IDIxLjEyTDMuNTkgMTlMMS40NiAxNi44OEwyLjg4IDE1LjQ2TDUgMTcuNTlMNy4xMiAxNS40Nkw4LjU0IDE2Ljg4TDYuNDEgMTlMOC41NCAyMS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIYXRGZWRvcmEgPSBcIk0xOS4xMSwxMS45MkMxOS4xMywxMS43MSAxOS4xNCwxMS41IDE5LjE0LDExLjI5QzE5LjE0LDcuODYgMTcuNzEsNC4xNCAxNi4yOCw0LjE0QzE0Ljg1LDQuMTQgMTMuNDIsNS41NyAxMiw1LjU3QzEwLjU3LDUuNTcgOS4xNCw0LjE0IDcuNzEsNC4xNEM2LjI4LDQuMTQgNC44Niw3Ljc5IDQuODYsMTEuMjlDNC44NiwxMS41IDQuODYsMTEuNzEgNC44OCwxMS45MkM3LjIyLDEyLjQ1IDkuNiwxMi43MiAxMiwxMi43MUMxNC40NSwxMi43MSAxNi44MywxMi40NCAxOS4xMSwxMS45Mk0zLjQ1LDE4LjE4QzksMTkuODUgMTQuOTYsMTkuODYgMjAuNTQsMTguMThDMjAuOTYsMTguMDQgMjEuMzMsMTcuNzcgMjEuNTksMTcuNDFDMjEuODUsMTcuMDUgMjIsMTYuNjEgMjIsMTYuMTdDMjIsMTUuNzIgMjEuODYsMTUuMjkgMjEuNjEsMTQuOTJDMjEuMzUsMTQuNTYgMjEsMTQuMjkgMjAuNTYsMTQuMTRDMTcuODYsMTUgMTUsMTUuNDUgMTIsMTUuNDVDOSwxNS40NSA2LjEzLDE1IDMuNDMsMTQuMTRDMywxNC4yOSAyLjY1LDE0LjU3IDIuMzksMTQuOTNDMi4xNCwxNS4yOSAyLDE1LjcyIDIsMTYuMTdDMiwxNy4xMSAyLjYxLDE3LjkgMy40NSwxOC4xOFYxOC4xOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIYXphcmRMaWdodHMgPSBcIk0xMiwxMkwxNC4zMywxNkg5LjY4TDEyLDEyTTEyLDhMNi4yMSwxOEgxNy44TDEyLDhNMTIsMkwxLDIxSDIzTDEyLDJNMTIsNkwxOS41MywxOUg0LjQ3TDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGRyID0gXCJNMjEsMTEuNVYxMC41QzIxLDkuNyAyMC4zLDkgMTkuNSw5SDE2VjE1SDE3LjVWMTNIMTguNkwxOS41LDE1SDIxTDIwLjEsMTIuOUMyMC42LDEyLjYgMjEsMTIuMSAyMSwxMS41TTE5LjUsMTEuNUgxNy41VjEwLjVIMTkuNVYxMS41TTYuNSwxMUg0LjVWOUgzVjE1SDQuNVYxMi41SDYuNVYxNUg4VjlINi41VjExTTEzLDlIOS41VjE1SDEzQzEzLjgsMTUgMTQuNSwxNC4zIDE0LjUsMTMuNVYxMC41QzE0LjUsOS43IDEzLjgsOSAxMyw5TTEzLDEzLjVIMTFWMTAuNUgxM1YxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhkck9mZiA9IFwiTTE3LjUsMTVWMTNIMTguNkwxOS41LDE1SDIxTDIwLjEsMTIuOUMyMC42LDEyLjcgMjEsMTIuMSAyMSwxMS41VjEwLjVDMjEsOS43IDIwLjMsOSAxOS41LDlIMTZWMTMuOUwxNy4xLDE1SDE3LjVNMTcuNSwxMC41SDE5LjVWMTEuNUgxNy41VjEwLjVNMTMsMTAuNVYxMC45TDE0LjUsMTIuNFYxMC41QzE0LjUsOS43IDEzLjgsOSAxMyw5SDExLjFMMTIuNiwxMC41SDEzTTkuNSw5LjVMMi41LDIuNUwxLjQsMy41TDYuOSw5SDYuNVYxMUg0LjVWOUgzVjE1SDQuNVYxMi41SDYuNVYxNUg4VjEwLjFMOS41LDExLjZWMTVIMTIuOUwyMC41LDIyLjZMMjEuNiwyMS41TDkuNSw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZCA9IFwiTTEzIDNDOS4yIDMgNi4yIDUuOSA2IDkuN0w0LjEgMTIuMkMzLjkgMTIuNSA0LjEgMTMgNC41IDEzSDZWMTZDNiAxNy4xIDYuOSAxOCA4IDE4SDlWMjFIMTZWMTYuM0MxOC40IDE1LjIgMjAgMTIuOCAyMCAxMEMyMCA2LjEgMTYuOSAzIDEzIDNcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkQWxlcnQgPSBcIk0xMyAzQzkuMiAzIDYuMiA1LjkgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE0IDE1SDEyVjEzSDE0VjE0TTE0IDExSDEyVjVIMTRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZEFsZXJ0T3V0bGluZSA9IFwiTTEzIDNDMTYuOSAzIDIwIDYuMSAyMCAxMEMyMCAxMi44IDE4LjQgMTUuMiAxNiAxNi4zVjIxSDlWMThIOEM2LjkgMTggNiAxNy4xIDYgMTZWMTNINC41QzQuMSAxMyAzLjggMTIuNSA0LjEgMTIuMkw2IDkuN0M2LjIgNS45IDkuMiAzIDEzIDNNMTMgMUM4LjQgMSA0LjYgNC40IDQuMSA4LjlMMi41IDExQzEuOSAxMS44IDEuOSAxMi44IDIuMyAxMy42QzIuNyAxNC4zIDMuMyAxNC44IDQgMTQuOVYxNkM0IDE3LjkgNS4zIDE5LjQgNyAxOS45VjIzSDE4VjE3LjVDMjAuNSAxNS44IDIyIDEzLjEgMjIgMTBDMjIgNSAxOCAxIDEzIDFNMTQgMTVIMTJWMTNIMTRWMTVNMTQgMTFIMTJWNUgxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRDaGVjayA9IFwiTTEzIDNDOS4yMyAzIDYuMTkgNS45NSA2IDkuNjZMNC4wOCAxMi4xOUMzLjg0IDEyLjUgNC4wOCAxMyA0LjUgMTNINlYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIxSDE2VjE2LjMxQzE4LjM3IDE1LjE5IDIwIDEyLjggMjAgMTBDMjAgNi4xNCAxNi44OCAzIDEzIDNNMTIuNDcgMTNMOSA5LjVMMTAuNCA4LjA5TDEyLjQ3IDEwLjE3TDE2LjYgNkwxOCA3LjQxTDEyLjQ3IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRDaGVja091dGxpbmUgPSBcIk0xMyAzQzE2Ljg4IDMgMjAgNi4xNCAyMCAxMEMyMCAxMi44IDE4LjM3IDE1LjE5IDE2IDE2LjMxVjIxSDlWMThIOEM2Ljg5IDE4IDYgMTcuMTEgNiAxNlYxM0g0LjVDNC4wOCAxMyAzLjg0IDEyLjUgNC4wOCAxMi4xOUw2IDkuNjZDNi4xOSA1Ljk1IDkuMjMgMyAxMyAzTTEzIDFDOC40MiAxIDQuNjEgNC40MyA0LjA2IDguOTFMMi41IDExQzEuOTIgMTEuNzIgMS44MiAxMi43MiAyLjI0IDEzLjU5QzIuNiAxNC4zMSAzLjI0IDE0LjggNCAxNC45NVYxNkM0IDE3Ljg2IDUuMjggMTkuNDMgNyAxOS44N1YyM0gxOFYxNy40N0MyMC41IDE1LjgzIDIyIDEzLjA2IDIyIDEwQzIyIDUuMDQgMTcuOTYgMSAxMyAxTTEyLjQ3IDEzTDkgOS41TDEwLjQgOC4wOUwxMi40NyAxMC4xN0wxNi42IDZMMTggNy40MUwxMi40NyAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkQ29nID0gXCJNMTMgOC41OEMxMy43OCA4LjU4IDE0LjQ0IDkuMTkgMTQuNDQgMTBTMTMuNzggMTEuNDQgMTMgMTEuNDQgMTEuNTggMTAuNzggMTEuNTggMTAgMTIuMTkgOC41OCAxMyA4LjU4TTEzIDNDMTYuODggMyAyMCA2LjE0IDIwIDEwQzIwIDEyLjggMTguMzcgMTUuMTkgMTYgMTYuMzFWMjFIOVYxOEg4QzYuODkgMTggNiAxNy4xMSA2IDE2VjEzSDQuNUM0LjA4IDEzIDMuODQgMTIuNSA0LjA4IDEyLjE5TDYgOS42NkM2LjE5IDUuOTUgOS4yMyAzIDEzIDNNMTYgMTBDMTYgOS44NCAxNiA5Ljc1IDE1Ljk0IDkuNjFMMTYuODMgOC45NUMxNi44OCA4LjkxIDE2LjkyIDguNzcgMTYuODggOC42N0wxNi4wOCA3LjMxQzE2LjAzIDcuMjIgMTUuODkgNy4xNyAxNS44IDcuMjJMMTQuODEgNy42NEMxNC42MyA3LjQ1IDE0LjM5IDcuMzEgMTQuMTYgNy4yMkwxNCA2LjE5QzEzLjk3IDYuMDUgMTMuOTIgNiAxMy43OCA2SDEyLjE5QzEyLjA5IDYgMTIgNi4wNSAxMiA2LjE5TDExLjg2IDcuMjJDMTEuNjMgNy4zMSAxMS4zOSA3LjQ1IDExLjIgNy42NEwxMC4xNyA3LjIyQzEwLjA4IDcuMTcgMTAgNy4yMiA5Ljk0IDcuMzFMOS4xNCA4LjY3QzkuMDkgOC44MSA5LjA5IDguOTEgOS4xOSA4Ljk1TDEwLjAzIDkuNjFDMTAuMDMgOS43NSAxMCA5Ljg5IDEwIDEwQzEwIDEwLjEzIDEwLjAzIDEwLjI3IDEwLjAzIDEwLjQxTDkuMTkgMTEuMDZDOS4wOSAxMS4xMSA5LjA5IDExLjIgOS4xNCAxMS4zTDkuOTQgMTIuN0MxMCAxMi44IDEwLjA4IDEyLjggMTAuMTcgMTIuOEwxMS4xNiAxMi4zN0MxMS4zOSAxMi41NiAxMS41OCAxMi42NiAxMS44NiAxMi43NUwxMiAxMy44M0MxMiAxMy45MiAxMi4wOSAxNCAxMi4xOSAxNEgxMy43OEMxMy45MiAxNCAxMy45NyAxMy45MiAxNCAxMy44M0wxNC4xNiAxMi43NUMxNC4zOSAxMi42NiAxNC42MyAxMi41NiAxNC44MSAxMi4zOEwxNS44IDEyLjhDMTUuODkgMTIuOCAxNi4wMyAxMi44IDE2LjA4IDEyLjdMMTYuODggMTEuM0MxNi45MiAxMS4yIDE2Ljg4IDExLjExIDE2LjgzIDExLjA2TDE2IDEwLjQxVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRDb2dPdXRsaW5lID0gXCJNMTMgM0MxNi44OCAzIDIwIDYuMTQgMjAgMTBDMjAgMTIuOCAxOC4zNyAxNS4xOSAxNiAxNi4zMVYyMUg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWMTNINC41QzQuMDggMTMgMy44NCAxMi41IDQuMDggMTIuMTlMNiA5LjY2QzYuMTkgNS45NSA5LjIzIDMgMTMgM00xMyAxQzguNDIgMSA0LjYxIDQuNDMgNC4wNiA4LjkxTDIuNSAxMUMxLjkyIDExLjcyIDEuODIgMTIuNzIgMi4yNCAxMy41OUMyLjYgMTQuMzEgMy4yNCAxNC44IDQgMTQuOTVWMTZDNCAxNy44NiA1LjI4IDE5LjQzIDcgMTkuODdWMjNIMThWMTcuNDdDMjAuNSAxNS44MyAyMiAxMy4wNiAyMiAxMEMyMiA1LjA0IDE3Ljk2IDEgMTMgMU0xNi4xIDkuNDJWOUMxNi4xIDguODUgMTYuMSA4Ljc2IDE2LjA0IDguNjJMMTYuOTMgNy45NkMxNyA3LjkyIDE3IDcuNzggMTcgNy42OEwxNi4xOCA2LjMyQzE2LjEzIDYuMjMgMTYgNi4xOCAxNS45IDYuMjNMMTQuOTEgNi42NUMxNC43MyA2LjQ2IDE0LjUgNi4zMiAxNC4yNiA2LjIzTDE0LjEgNS4yQzE0LjA3IDUuMDYgMTQgNSAxMy44OCA1SDEyLjI5QzEyLjE5IDUgMTIuMSA1LjA2IDEyLjEgNS4yTDExLjk2IDYuMjNDMTEuNzMgNi4zMiAxMS41IDYuNDYgMTEuMyA2LjY1TDEwLjI3IDYuMjNDMTAuMTggNi4xOCAxMC4xIDYuMjMgMTAuMDQgNi4zMkw5LjI0IDcuNjhDOS4xOSA3LjgyIDkuMTkgNy45MiA5LjI5IDcuOTZMMTAuMTMgOC42MkMxMC4xMyA4Ljc2IDEwLjEgOC45IDEwLjEgOUMxMC4xIDkuMTQgMTAuMTMgOS4yOCAxMC4xMyA5LjQyTDkuMjkgMTAuMDdDOS4xOSAxMC4xMiA5LjE5IDEwLjIxIDkuMjQgMTAuMzFMMTAuMDQgMTEuNzFDMTAuMSAxMS44MSAxMC4xOCAxMS44MSAxMC4yNyAxMS44MUwxMS4yNiAxMS4zOEMxMS41IDExLjU3IDExLjY4IDExLjY3IDExLjk2IDExLjc2TDEyLjEgMTIuODRDMTIuMSAxMi45MyAxMi4xOSAxMyAxMi4yOSAxM0gxMy44OEMxNCAxMyAxNC4wNyAxMi45MyAxNC4xIDEyLjg0TDE0LjI2IDExLjc2QzE0LjUgMTEuNjcgMTQuNzMgMTEuNTcgMTQuOTEgMTEuMzlMMTUuOSAxMS44MUMxNiAxMS44MSAxNi4xMyAxMS44MSAxNi4xOCAxMS43MUwxNyAxMC4zMUMxNyAxMC4yMSAxNyAxMC4xMiAxNi45MyAxMC4wN0wxNi4xIDkuNDJNMTMuMSAxMC40NUMxMi4zMiAxMC40NSAxMS42OCA5Ljc5IDExLjY4IDlTMTIuMjkgNy41OSAxMy4xIDcuNTlDMTMuODggNy41OSAxNC41NCA4LjIgMTQuNTQgOVMxMy44OCAxMC40NSAxMy4xIDEwLjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWREb3RzSG9yaXpvbnRhbCA9IFwiTTEzIDNDOS4yMyAzIDYuMTkgNS45NSA2IDkuNjZMNC4wOCAxMi4xOUMzLjg0IDEyLjUgNC4wOCAxMyA0LjUgMTNINlYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIxSDE2VjE2LjMxQzE4LjM3IDE1LjE5IDIwIDEyLjggMjAgMTBDMjAgNi4xNCAxNi44OCAzIDEzIDNNMTAgMTFDOS40NSAxMSA5IDEwLjU1IDkgMTBTOS40NSA5IDEwIDkgMTEgOS40NSAxMSAxMCAxMC41NSAxMSAxMCAxMU0xMyAxMUMxMi40NSAxMSAxMiAxMC41NSAxMiAxMFMxMi40NSA5IDEzIDkgMTQgOS40NSAxNCAxMCAxMy41NSAxMSAxMyAxMU0xNiAxMUMxNS40NSAxMSAxNSAxMC41NSAxNSAxMFMxNS40NSA5IDE2IDkgMTcgOS40NSAxNyAxMCAxNi41NSAxMSAxNiAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkRG90c0hvcml6b250YWxPdXRsaW5lID0gXCJNMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNWMjFIOVYxOEg4QzYuOSAxOCA2IDE3LjEgNiAxNlYxM0g0LjVDNC4xIDEzIDMuOCAxMi41IDQuMSAxMi4yTDYgOS43QzYuMiA1LjkgOS4yIDMgMTMgM00xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMS45IDExLjggMS45IDEyLjggMi4zIDEzLjZDMi43IDE0LjMgMy4zIDE0LjggNCAxNC45VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjggMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xMCAxMEM5LjQgMTAgOSA5LjYgOSA5UzkuNCA4IDEwIDggMTEgOC40IDExIDkgMTAuNiAxMCAxMCAxME0xMyAxMEMxMi40IDEwIDEyIDkuNiAxMiA5UzEyLjQgOCAxMyA4IDE0IDguNCAxNCA5IDEzLjYgMTAgMTMgMTBNMTYgMTBDMTUuNSAxMCAxNSA5LjYgMTUgOVMxNS41IDggMTYgOCAxNyA4LjQgMTcgOSAxNi41IDEwIDE2IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRGbGFzaCA9IFwiTTEzIDNDOS4yIDMgNi4yIDYgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE1IDlMMTEuOSAxNUwxMi41IDExSDEwLjVMMTIuNSA2SDE1TDEzLjUgOUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkRmxhc2hPdXRsaW5lID0gXCJNMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNWMjFIOVYxOEg4QzYuOSAxOCA2IDE3LjEgNiAxNlYxM0g0LjVDNC4xIDEzIDMuOCAxMi41IDQuMSAxMi4yTDYgOS43QzYuMiA1LjkgOS4yIDMgMTMgM00xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMS45IDExLjggMS45IDEyLjggMi4zIDEzLjZDMi43IDE0LjMgMy4zIDE0LjggNCAxNC45VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjggMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xNSA5TDExLjkgMTVMMTIuNSAxMUgxMC40TDEyLjUgNkgxNUwxMy41IDlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZEhlYXJ0ID0gXCJNMTMgM0M5LjIzIDMgNi4xOSA1Ljk1IDYgOS42Nkw0LjA4IDEyLjE5QzMuODQgMTIuNSA0LjA4IDEzIDQuNSAxM0g2VjE2QzYgMTcuMTEgNi44OSAxOCA4IDE4SDlWMjFIMTZWMTYuMzFDMTguMzcgMTUuMTkgMjAgMTIuOCAyMCAxMEMyMCA2LjE0IDE2Ljg4IDMgMTMgM00xNyA4LjgzQzE3IDEwLjM3IDE1LjY0IDExLjYgMTMuNTggMTMuNDdMMTMgMTRMMTIuNDIgMTMuNDdDMTAuMzYgMTEuNiA5IDEwLjM3IDkgOC44M0M5IDcuNjMgOS45NiA2LjY0IDExLjE2IDYuNjNIMTEuMkMxMS44OSA2LjYzIDEyLjU1IDYuOTQgMTMgNy40NkMxMy40NSA2Ljk0IDE0LjExIDYuNjMgMTQuOCA2LjYzQzE2IDYuNjIgMTcgNy41OSAxNyA4Ljc5VjguODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZEhlYXJ0T3V0bGluZSA9IFwiTTEzIDNDMTYuODggMyAyMCA2LjE0IDIwIDEwQzIwIDEyLjggMTguMzcgMTUuMTkgMTYgMTYuMzFWMjFIOVYxOEg4QzYuODkgMTggNiAxNy4xMSA2IDE2VjEzSDQuNUM0LjA4IDEzIDMuODQgMTIuNSA0LjA4IDEyLjE5TDYgOS42NkM2LjE5IDUuOTUgOS4yMyAzIDEzIDNNMTMgMUM4LjQxIDEgNC42MSA0LjQyIDQuMDYgOC45TDIuNSAxMUwyLjQ3IDExTDIuNDUgMTEuMDNDMS45IDExLjc5IDEuODMgMTIuNzkgMi4yNiAxMy42MkMyLjYyIDE0LjMxIDMuMjYgMTQuNzkgNCAxNC45NFYxNkM0IDE3Ljg1IDUuMjggMTkuNDIgNyAxOS44N1YyM0gxOFYxNy41QzIwLjUgMTUuODMgMjIgMTMuMDYgMjIgMTBDMjIgNS4wMyAxNy45NiAxIDEzIDFNMTcgOC44M0MxNyAxMC4zNyAxNS42NCAxMS42IDEzLjU4IDEzLjQ3TDEzIDE0TDEyLjQyIDEzLjQ3QzEwLjM2IDExLjYgOSAxMC4zNyA5IDguODNDOSA3LjYzIDkuOTYgNi42NCAxMS4xNiA2LjYzSDExLjJDMTEuODkgNi42MyAxMi41NSA2Ljk0IDEzIDcuNDZDMTMuNDUgNi45NCAxNC4xMSA2LjYzIDE0LjggNi42M0MxNiA2LjYyIDE3IDcuNTkgMTcgOC43OVY4LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRMaWdodGJ1bGIgPSBcIk0xMyAzQzkuMjMgMyA2LjE5IDUuOTUgNiA5LjY2TDQuMDggMTIuMTlDMy44NCAxMi41IDQuMDggMTMgNC41IDEzSDZWMTZDNiAxNy4xMSA2Ljg5IDE4IDggMThIOVYyMUgxNlYxNi4zMUMxOC4zNyAxNS4xOSAyMCAxMi44IDIwIDEwQzIwIDYuMTQgMTYuODggMyAxMyAzTTE0IDE0SDEyVjEzSDE0VjE0TTE1LjYgOS41QzE1LjM0IDkuOTQgMTQuOTYgMTAuMzIgMTQuNSAxMC41OFYxMkgxMS41VjEwLjU4QzEwLjA3IDkuNzUgOS41NyA3LjkyIDEwLjQgNi41UzEzLjA3IDQuNTYgMTQuNSA1LjM4IDE2LjQzIDguMDUgMTUuNiA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZExpZ2h0YnVsYk91dGxpbmUgPSBcIk0xMyAzQzE2LjkgMyAyMCA2LjEgMjAgMTBDMjAgMTIuOCAxOC40IDE1LjIgMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDUuOSA5LjIgMyAxMyAzTTEzIDFDOC40IDEgNC42IDQuNCA0LjEgOC45TDIuNSAxMUMxLjkgMTEuOCAxLjkgMTIuOCAyLjMgMTMuNkMyLjcgMTQuMyAzLjMgMTQuOCA0IDE0LjlWMTZDNCAxNy45IDUuMyAxOS40IDcgMTkuOVYyM0gxOFYxNy41QzIwLjUgMTUuOCAyMiAxMy4xIDIyIDEwQzIyIDUgMTggMSAxMyAxTTE0IDE0SDEyVjEzSDE0VjE0TTE1LjYgOS41QzE1LjMgOS45IDE1IDEwLjMgMTQuNSAxMC42VjEySDExLjVWMTAuNkMxMC4xIDkuOCA5LjYgNy45IDEwLjQgNi41UzEzLjEgNC42IDE0LjUgNS40IDE2LjQgOC4xIDE1LjYgOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRNaW51cyA9IFwiTTEzIDNDOS4yIDMgNi4yIDUuOSA2IDkuN0w0LjEgMTIuMkMzLjkgMTIuNSA0LjEgMTMgNC41IDEzSDZWMTZDNiAxNy4xIDYuOSAxOCA4IDE4SDlWMjFIMTZWMTYuM0MxOC40IDE1LjIgMjAgMTIuOCAyMCAxMEMyMCA2LjEgMTYuOSAzIDEzIDNNMTcgMTBIOVY4SDE3VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRNaW51c091dGxpbmUgPSBcIk0xMyAzQzE2LjkgMyAyMCA2LjEgMjAgMTBDMjAgMTIuOCAxOC40IDE1LjIgMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDUuOSA5LjIgMyAxMyAzTTEzIDFDOC40IDEgNC42IDQuNCA0LjEgOC45TDIuNSAxMUMxLjkgMTEuNyAxLjggMTIuNyAyLjIgMTMuNkMyLjYgMTQuMyAzLjIgMTQuOCA0IDE1VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjkgMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xNyAxMEg5VjhIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZE91dGxpbmUgPSBcIk0xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMiAxMS44IDEuOSAxMi44IDIuMyAxMy42QzIuNyAxNC4zIDMuMyAxNC44IDQgMTQuOVYxNkM0IDE3LjggNS4zIDE5LjQgNyAxOS45VjIzSDE4VjE3LjVDMjAuNSAxNS44IDIyIDEzLjEgMjIgMTBDMjIgNSAxOCAxIDEzIDFNMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDYgOS4yIDMgMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFBsdXMgPSBcIk0xMyAzQzkuMiAzIDYuMiA1LjkgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE3IDEwSDE0VjEzSDEyVjEwSDlWOEgxMlY1SDE0VjhIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFBsdXNPdXRsaW5lID0gXCJNMTMgM0MxNi45IDMgMjAgNi4xIDIwIDEwQzIwIDEyLjggMTguNCAxNS4yIDE2IDE2LjNWMjFIOVYxOEg4QzYuOSAxOCA2IDE3LjEgNiAxNlYxM0g0LjVDNC4xIDEzIDMuOCAxMi41IDQuMSAxMi4yTDYgOS43QzYuMiA1LjkgOS4yIDMgMTMgM00xMyAxQzguNCAxIDQuNiA0LjQgNC4xIDguOUwyLjUgMTFDMS45IDExLjcgMS44IDEyLjcgMi4yIDEzLjZDMi42IDE0LjMgMy4yIDE0LjggNCAxNVYxNkM0IDE3LjkgNS4zIDE5LjQgNyAxOS45VjIzSDE4VjE3LjVDMjAuNSAxNS45IDIyIDEzLjEgMjIgMTBDMjIgNSAxOCAxIDEzIDFNMTcgMTBIMTRWMTNIMTJWMTBIOVY4SDEyVjVIMTRWOEgxN1YxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkUXVlc3Rpb24gPSBcIk0xMyAzQzkuMjMgMyA2LjE5IDUuOTUgNiA5LjY2TDQuMDggMTIuMTlDMy44NCAxMi41IDQuMDggMTMgNC41IDEzSDZWMTZDNiAxNy4xMSA2Ljg5IDE4IDggMThIOVYyMUgxNlYxNi4zMUMxOC4zNyAxNS4xOSAyMCAxMi44IDIwIDEwQzIwIDYuMTQgMTYuODggMyAxMyAzTTE0IDE0SDEyVjEySDE0VjE0TTE1Ljc1IDguODFDMTUuNDYgOS4yMSAxNS4wOSA5LjUgMTQuNjQgOS43NEMxNC4zOSA5LjkgMTQuMjIgMTAuMDcgMTQuMTMgMTAuMjZDMTQuMDQgMTAuNDQgMTQgMTAuNjkgMTQgMTFIMTJDMTIgMTAuNSAxMi4xMSAxMC4wOCAxMi4zMSA5LjgyQzEyLjUgOS41NSAxMi44NSA5LjI1IDEzLjM2IDguOTFDMTMuNjIgOC43NSAxMy44MyA4LjU1IDEzLjk3IDguMzJDMTQuMTMgOC4wOSAxNC4yIDcuODIgMTQuMiA3LjVDMTQuMiA3LjIgMTQuMTIgNi45NCAxMy45NCA2Ljc1QzEzLjc2IDYuNTcgMTMuNSA2LjQ3IDEzLjE5IDYuNDdDMTIuOTMgNi40NyAxMi43MSA2LjU1IDEyLjUzIDYuN0MxMi4zNSA2Ljg2IDEyLjI2IDcuMDkgMTIuMjUgNy4zOUgxMC4zMkwxMC4zMSA3LjM2QzEwLjMgNi41NyAxMC41NiA2IDExLjA4IDUuNTlDMTEuNjIgNS4yIDEyLjMyIDUgMTMuMTkgNUMxNC4xMiA1IDE0Ljg1IDUuMjMgMTUuMzggNS42OEMxNS45MiA2LjEzIDE2LjE5IDYuNzQgMTYuMTkgNy41QzE2LjE5IDggMTYuMDQgOC40MSAxNS43NSA4LjgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRRdWVzdGlvbk91dGxpbmUgPSBcIk0xMyAzQzE2Ljg4IDMgMjAgNi4xNCAyMCAxMEMyMCAxMi44IDE4LjM3IDE1LjE5IDE2IDE2LjMxVjIxSDlWMThIOEM2Ljg5IDE4IDYgMTcuMTEgNiAxNlYxM0g0LjVDNC4wOCAxMyAzLjg0IDEyLjUgNC4wOCAxMi4xOUw2IDkuNjZDNi4xOSA1Ljk1IDkuMjMgMyAxMyAzTTEwLjMyIDcuMzlIMTIuMjVDMTIuMjYgNy4wOSAxMi4zNSA2Ljg2IDEyLjUzIDYuN0MxMi43MSA2LjU1IDEyLjkzIDYuNDcgMTMuMTkgNi40N0MxMy41IDYuNDcgMTMuNzYgNi41NyAxMy45NCA2Ljc1QzE0LjEyIDYuOTQgMTQuMiA3LjIgMTQuMiA3LjVDMTQuMiA3LjgyIDE0LjEzIDguMDkgMTMuOTcgOC4zMkMxMy44MyA4LjU1IDEzLjYyIDguNzUgMTMuMzYgOC45MUMxMi44NSA5LjI1IDEyLjUgOS41NSAxMi4zMSA5LjgyQzEyLjExIDEwLjA4IDEyIDEwLjUgMTIgMTFIMTRDMTQgMTAuNjkgMTQuMDQgMTAuNDQgMTQuMTMgMTAuMjZDMTQuMjIgMTAuMDcgMTQuMzkgOS45IDE0LjY0IDkuNzRDMTUuMDkgOS41IDE1LjQ2IDkuMjEgMTUuNzUgOC44MUMxNi4wNCA4LjQxIDE2LjE5IDggMTYuMTkgNy41QzE2LjE5IDYuNzQgMTUuOTIgNi4xMyAxNS4zOCA1LjY4QzE0Ljg1IDUuMjMgMTQuMTIgNSAxMy4xOSA1QzEyLjMyIDUgMTEuNjIgNS4yIDExLjA4IDUuNTlDMTAuNTYgNiAxMC4zIDYuNTcgMTAuMzEgNy4zNkwxMC4zMiA3LjM5TTEyIDE0SDE0VjEySDEyVjE0TTEzIDFDOC40MSAxIDQuNjEgNC40MiA0LjA2IDguOUwyLjUgMTFMMi40NyAxMUwyLjQ1IDExLjAzQzEuOSAxMS43OSAxLjgzIDEyLjc5IDIuMjYgMTMuNjJDMi42MiAxNC4zMSAzLjI2IDE0Ljc5IDQgMTQuOTRWMTZDNCAxNy44NSA1LjI4IDE5LjQyIDcgMTkuODdWMjNIMThWMTcuNUMyMC41IDE1LjgzIDIyIDEzLjA2IDIyIDEwQzIyIDUuMDMgMTcuOTYgMSAxMyAxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRSZW1vdmUgPSBcIk0xMyAzQzkuMiAzIDYuMiA1LjkgNiA5LjdMNC4xIDEyLjJDMy45IDEyLjUgNC4xIDEzIDQuNSAxM0g2VjE2QzYgMTcuMSA2LjkgMTggOCAxOEg5VjIxSDE2VjE2LjNDMTguNCAxNS4yIDIwIDEyLjggMjAgMTBDMjAgNi4xIDE2LjkgMyAxMyAzTTE1LjEgMTIuNUwxMyAxMC40TDEwLjkgMTIuNUw5LjUgMTEuMUwxMS42IDlMOS41IDYuOUwxMC45IDUuNUwxMyA3LjZMMTUuMSA1LjVMMTYuNSA2LjlMMTQuNCA5TDE2LjUgMTEuMUwxNS4xIDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFJlbW92ZU91dGxpbmUgPSBcIk0xMyAzQzE2LjkgMyAyMCA2LjEgMjAgMTBDMjAgMTIuOCAxOC40IDE1LjIgMTYgMTYuM1YyMUg5VjE4SDhDNi45IDE4IDYgMTcuMSA2IDE2VjEzSDQuNUM0LjEgMTMgMy44IDEyLjUgNC4xIDEyLjJMNiA5LjdDNi4yIDUuOSA5LjIgMyAxMyAzTTEzIDFDOC40IDEgNC42IDQuNCA0LjEgOC45TDIuNSAxMUMxLjkgMTEuNyAxLjggMTIuNyAyLjIgMTMuNkMyLjYgMTQuMyAzLjIgMTQuOCA0IDE1VjE2QzQgMTcuOSA1LjMgMTkuNCA3IDE5LjlWMjNIMThWMTcuNUMyMC41IDE1LjkgMjIgMTMuMSAyMiAxMEMyMiA1IDE4IDEgMTMgMU0xNi41IDYuOUwxNC40IDlMMTYuNSAxMS4xTDE1LjEgMTIuNUwxMyAxMC40TDEwLjkgMTIuNUw5LjUgMTEuMUwxMS42IDlMOS41IDYuOUwxMC45IDUuNUwxMyA3LjZMMTUuMSA1LjVMMTYuNSA2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFNub3dmbGFrZSA9IFwiTTEzIDNDOS4yMyAzIDYuMTkgNS45NSA2IDkuNjZMNC4wOCAxMi4xOUMzLjg0IDEyLjUgNC4wOCAxMyA0LjUgMTNINlYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIxSDE2VjE2LjMxQzE4LjM3IDE1LjE5IDIwIDEyLjggMjAgMTBDMjAgNi4xNCAxNi44OCAzIDEzIDNNMTcuMDYgOS41N0wxNS4xIDEwLjA5TDE2LjU0IDExLjU0QzE2Ljg5IDExLjg4IDE2Ljg5IDEyLjQ2IDE2LjU0IDEyLjgxQzE2LjE5IDEzLjE2IDE1LjYxIDEzLjE2IDE1LjI3IDEyLjgxTDEzLjgxIDExLjM3TDEzLjMgMTMuMzNDMTMuMTggMTMuODIgMTIuNjggMTQuMSAxMi4yMSAxMy45N0MxMS43MiAxMy44NCAxMS40NCAxMy4zNSAxMS41NyAxMi44N0wxMi4xIDEwLjlMMTAuMTMgMTEuNDNDOS42NSAxMS41NiA5LjE1IDExLjI4IDkuMDMgMTAuNzlDOC45IDEwLjMyIDkuMTggOS44MiA5LjY3IDkuN0wxMS42MyA5LjE5TDEwLjE5IDcuNzNDOS44NCA3LjM5IDkuODQgNi44MiAxMC4xOSA2LjQ2QzEwLjU0IDYuMTEgMTEuMTIgNi4xMSAxMS40NiA2LjQ2TDEyLjkxIDcuOUwxMy40MyA1Ljk0QzEzLjU1IDUuNDYgMTQuMDQgNS4xOCAxNC41IDUuM0MxNSA1LjQzIDE1LjI4IDUuOTIgMTUuMTYgNi40MUwxNC42MyA4LjM3TDE2LjU5IDcuODRDMTcuMDggNy43MiAxNy41NyA4IDE3LjcgOC41QzE3LjgyIDguOTYgMTcuNTQgOS40NSAxNy4wNiA5LjU3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRTbm93Zmxha2VPdXRsaW5lID0gXCJNMTMgM0MxNi44OCAzIDIwIDYuMTQgMjAgMTBDMjAgMTIuOCAxOC4zNyAxNS4xOSAxNiAxNi4zMVYyMUg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWMTNINC41QzQuMDggMTMgMy44NCAxMi41IDQuMDggMTIuMTlMNiA5LjY2QzYuMTkgNS45NSA5LjIzIDMgMTMgM00xMyAxQzguNDEgMSA0LjYxIDQuNDIgNC4wNiA4LjlMMi41IDExTDIuNDcgMTFMMi40NSAxMS4wM0MxLjkgMTEuNzkgMS44MyAxMi43OSAyLjI2IDEzLjYyQzIuNjIgMTQuMzEgMy4yNiAxNC43OSA0IDE0Ljk0VjE2QzQgMTcuODUgNS4yOCAxOS40MiA3IDE5Ljg3VjIzSDE4VjE3LjVDMjAuNSAxNS44MyAyMiAxMy4wNiAyMiAxMEMyMiA1LjAzIDE3Ljk2IDEgMTMgMU0xNy4zMyA5LjNMMTUuMzcgOS44MUwxNi44MSAxMS4yN0MxNy4xNiAxMS42MSAxNy4xNiAxMi4xOSAxNi44MSAxMi41NFMxNS44OCAxMi44OSAxNS41NCAxMi41NEwxNC4wOSAxMS4xTDEzLjU3IDEzLjA2QzEzLjQ1IDEzLjU1IDEyLjk2IDEzLjgyIDEyLjUgMTMuN0MxMiAxMy41NyAxMS43MiAxMy4wOCAxMS44NCAxMi41OUwxMi4zNyAxMC42M0wxMC40MSAxMS4xNkM5LjkyIDExLjI4IDkuNDMgMTEgOS4zIDEwLjVDOS4xOCAxMC4wNSA5LjQ2IDkuNTUgOS45NCA5LjQzTDExLjkgOC45MUwxMC40NiA3LjQ2QzEwLjExIDcuMTIgMTAuMTEgNi41NSAxMC40NiA2LjE5QzEwLjgxIDUuODQgMTEuMzkgNS44NCAxMS43MyA2LjE5TDEzLjE5IDcuNjNMMTMuNyA1LjY3QzEzLjgyIDUuMTggMTQuMzIgNC45IDE0Ljc5IDUuMDNDMTUuMjggNS4xNiAxNS41NiA1LjY1IDE1LjQzIDYuMTNMMTQuOSA4LjFMMTYuODcgNy41N0MxNy4zNSA3LjQ0IDE3Ljg0IDcuNzIgMTcuOTcgOC4yMUMxOC4xIDguNjggMTcuODIgOS4xOCAxNy4zMyA5LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFN5bmMgPSBcIk0xMyAzQzkuMjMgMyA2LjE5IDUuOTUgNiA5LjY2TDQuMDggMTIuMTlDMy44NCAxMi41IDQuMDggMTMgNC41IDEzSDZWMTZDNiAxNy4xMSA2Ljg5IDE4IDggMThIOVYyMUgxNlYxNi4zMUMxOC4zNyAxNS4xOSAyMCAxMi44IDIwIDEwQzIwIDYuMTQgMTYuODggMyAxMyAzTTEzIDE1VjEzLjVDMTAuNzkgMTMuNSA5IDExLjcxIDkgOS41QzkgOC42OCA5LjI1IDcuOTIgOS42NyA3LjI5TDEwLjc2IDguMzhDMTAuNTkgOC43MiAxMC41IDkuMSAxMC41IDkuNUMxMC41IDEwLjg4IDExLjYyIDEyIDEzIDEyVjEwLjVMMTUuMjUgMTIuNzVMMTMgMTVNMTYuMzMgMTEuNzFMMTUuMjQgMTAuNjJDMTUuNDEgMTAuMjggMTUuNSA5LjkgMTUuNSA5LjVDMTUuNSA4LjEyIDE0LjM4IDcgMTMgN1Y4LjVMMTAuNzUgNi4yNUwxMyA0VjUuNUMxNS4yMSA1LjUgMTcgNy4yOSAxNyA5LjVDMTcgMTAuMzIgMTYuNzUgMTEuMDggMTYuMzMgMTEuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZFN5bmNPdXRsaW5lID0gXCJNMTMgM0MxNi44OCAzIDIwIDYuMTQgMjAgMTBDMjAgMTIuOCAxOC4zNyAxNS4xOSAxNiAxNi4zMVYyMUg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWMTNINC41QzQuMDggMTMgMy44NCAxMi41IDQuMDggMTIuMTlMNiA5LjY2QzYuMTkgNS45NSA5LjIzIDMgMTMgM00xMyAxQzguNDEgMSA0LjYxIDQuNDIgNC4wNiA4LjlMMi41IDExTDIuNDcgMTFMMi40NSAxMS4wM0MxLjkgMTEuNzkgMS44MyAxMi43OSAyLjI2IDEzLjYyQzIuNjIgMTQuMzEgMy4yNiAxNC43OSA0IDE0Ljk0VjE2QzQgMTcuODUgNS4yOCAxOS40MiA3IDE5Ljg3VjIzSDE4VjE3LjVDMjAuNSAxNS44MyAyMiAxMy4wNiAyMiAxMEMyMiA1LjAzIDE3Ljk2IDEgMTMgMU0xNCAxNVYxMy41QzExLjc5IDEzLjUgMTAgMTEuNzEgMTAgOS41QzEwIDguNjggMTAuMjUgNy45MiAxMC42NyA3LjI5TDExLjc2IDguMzhDMTEuNTkgOC43MiAxMS41IDkuMSAxMS41IDkuNUMxMS41IDEwLjg4IDEyLjYyIDEyIDE0IDEyVjEwLjVMMTYuMjUgMTIuNzVMMTQgMTVNMTcuMzMgMTEuNzFMMTYuMjQgMTAuNjJDMTYuNDEgMTAuMjggMTYuNSA5LjkgMTYuNSA5LjVDMTYuNSA4LjEyIDE1LjM4IDcgMTQgN1Y4LjVMMTEuNzUgNi4yNUwxNCA0VjUuNUMxNi4yMSA1LjUgMTggNy4yOSAxOCA5LjVDMTggMTAuMzIgMTcuNzUgMTEuMDggMTcuMzMgMTEuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHBob25lcyA9IFwiTTEyLDFDNywxIDMsNSAzLDEwVjE3QTMsMyAwIDAsMCA2LDIwSDlWMTJINVYxMEE3LDcgMCAwLDEgMTIsM0E3LDcgMCAwLDEgMTksMTBWMTJIMTVWMjBIMThBMywzIDAgMCwwIDIxLDE3VjEwQzIxLDUgMTYuOTcsMSAxMiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRwaG9uZXNCbHVldG9vdGggPSBcIk04LDZBNiw2IDAgMCwwIDIsMTJWMTYuOEMyLDE3LjQ2IDIuNTQsMTggMy4yLDE4SDZWMTRINFYxMkE0LDQgMCAwLDEgOCw4QTQsNCAwIDAsMSAxMiwxMlYxNEgxMFYxOEgxMi44QTEuMiwxLjIgMCAwLDAgMTQsMTYuOFYxMkE2LDYgMCAwLDAgOCw2TTE5LDdWMTAuNzlMMTYuNzEsOC41TDE2LDkuMjFMMTguNzksMTJMMTYsMTQuNzlMMTYuNzEsMTUuNUwxOSwxMy4yMVYxN0gxOS41TDIyLjM1LDE0LjE0TDIwLjIxLDEyTDIyLjM1LDkuODVMMTkuNSw3SDE5TTIwLDguOTFMMjAuOTQsOS44NUwyMCwxMC43OVY4LjkxTTIwLDEzLjIxTDIwLjk0LDE0LjE0TDIwLDE1LjA4VjEzLjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYWRwaG9uZXNCb3ggPSBcIk03LjIsMThDNi41NCwxOCA2LDE3LjQ2IDYsMTYuOFYxMy4yTDYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyVjEzLjJMMTgsMTYuOEExLjIsMS4yIDAgMCwxIDE2LjgsMThIMTRWMTRIMTZWMTJBNCw0IDAgMCwwIDEyLDhBNCw0IDAgMCwwIDgsMTJWMTRIMTBWMThNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHBob25lc09mZiA9IFwiTTEyLDFBOSw5IDAgMCwxIDIxLDEwVjE3QzIxLDE3LjYyIDIwLjgxLDE4LjE5IDIwLjUsMTguNjdMMTUsMTMuMThWMTJIMTlWMTBBNyw3IDAgMCwwIDEyLDNDMTAsMyA4LjIzLDMuODIgNi45Niw1LjE0TDUuNTUsMy43MkM3LjE4LDIuMDQgOS40NywxIDEyLDFNMi43OCwzLjVMMjAuNSwyMS4yMkwxOS4yMywyMi41TDE2LjczLDIwSDE1VjE4LjI3TDksMTIuMjdWMjBINkEzLDMgMCAwLDEgMywxN1YxMEMzLDguODkgMy4yLDcuODIgMy41Nyw2Ljg0TDEuNSw0Ljc3TDIuNzgsMy41TTUuMTcsOC40NEM1LjA2LDguOTQgNSw5LjQ2IDUsMTBWMTJIOC43M0w1LjE3LDguNDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHBob25lc1NldHRpbmdzID0gXCJNMTIsMUE5LDkgMCAwLDEgMjEsMTBWMTdBMywzIDAgMCwxIDE4LDIwSDE1VjEySDE5VjEwQTcsNyAwIDAsMCAxMiwzQTcsNyAwIDAsMCA1LDEwVjEySDlWMjBINkEzLDMgMCAwLDEgMywxN1YxMEE5LDkgMCAwLDEgMTIsMU0xNSwyNFYyMkgxN1YyNEgxNU0xMSwyNFYyMkgxM1YyNEgxMU03LDI0VjIySDlWMjRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkc2V0ID0gXCJNMTIsMUM3LDEgMyw1IDMsMTBWMTdBMywzIDAgMCwwIDYsMjBIOVYxMkg1VjEwQTcsNyAwIDAsMSAxMiwzQTcsNyAwIDAsMSAxOSwxMFYxMkgxNVYyMEgxOVYyMUgxMlYyM0gxOEEzLDMgMCAwLDAgMjEsMjBWMTBDMjEsNSAxNi45NywxIDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhZHNldERvY2sgPSBcIk0yLDE4SDlWNi4xM0M3LjI3LDYuNTcgNiw4LjE0IDYsMTBWMTFIOFYxN0g2QTIsMiAwIDAsMSA0LDE1VjEwQTYsNiAwIDAsMSAxMCw0SDExQTYsNiAwIDAsMSAxNywxMFYxMkgxOFY5SDIwVjEyQTIsMiAwIDAsMSAxOCwxNEgxN1YxNUEyLDIgMCAwLDEgMTUsMTdIMTNWMTFIMTVWMTBDMTUsOC4xNCAxMy43Myw2LjU3IDEyLDYuMTNWMThIMjJWMjBIMlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFkc2V0T2ZmID0gXCJNMS41LDQuNzdMMy41Nyw2Ljg0QzMuMiw3LjgyIDMsOC44OSAzLDEwVjIwQTMsMyAwIDAsMCA2LDIzSDEyVjIxSDVWMjBIOVYxMi4yN0wxNSwxOC4yN1YyMEgxNi43M0wxOS4yMywyMi41TDIwLjUsMjEuMjJMMi43OCwzLjVMMS41LDQuNzdNMTIsMUM5LjQ3LDEgNy4xOCwyLjA0IDUuNTUsMy43Mkw2Ljk2LDUuMTRDOC4yMywzLjgyIDEwLDMgMTIsM0E3LDcgMCAwLDEgMTksMTBWMTJIMTVWMTMuMThMMjAuNSwxOC42N0MyMC44MSwxOC4xOSAyMSwxNy42MiAyMSwxN1YxMEE5LDkgMCAwLDAgMTIsMU01LDEyVjEwQzUsOS40NiA1LjA2LDguOTQgNS4xNyw4LjQ0TDguNzMsMTJINVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydCA9IFwiTTEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOS4yNCwzIDEwLjkxLDMuODEgMTIsNS4wOEMxMy4wOSwzLjgxIDE0Ljc2LDMgMTYuNSwzQzE5LjU4LDMgMjIsNS40MSAyMiw4LjVDMjIsMTIuMjcgMTguNiwxNS4zNiAxMy40NSwyMC4wM0wxMiwyMS4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNMTIsMTdMMTIuNzIsMTYuMzRDMTUuMywxNCAxNywxMi40NiAxNywxMC41N0MxNyw5LjAzIDE1Ljc5LDcuODIgMTQuMjUsNy44MkMxMy4zOCw3LjgyIDEyLjU1LDguMjMgMTIsOC44N0MxMS40NSw4LjIzIDEwLjYyLDcuODIgOS43NSw3LjgyQzguMjEsNy44MiA3LDkuMDMgNywxMC41N0M3LDEyLjQ2IDguNywxNCAxMS4yOCwxNi4zNEwxMiwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJveE91dGxpbmUgPSBcIk0xMiwxN0wxMS4yOCwxNi4zNEM4LjcsMTQgNywxMi40NiA3LDEwLjU3QzcsOS4wMyA4LjIxLDcuODIgOS43NSw3LjgyQzEwLjYyLDcuODIgMTEuNDUsOC4yMyAxMiw4Ljg3QzEyLjU1LDguMjMgMTMuMzgsNy44MiAxNC4yNSw3LjgyQzE1Ljc5LDcuODIgMTcsOS4wMyAxNywxMC41N0MxNywxMi40NiAxNS4zLDE0IDEyLjcyLDE2LjM0TDEyLDE3TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJyb2tlbiA9IFwiTTEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOC4xNywzIDguODIsMy4xMiA5LjQ0LDMuMzNMMTMsOS4zNUw5LDE0LjM1TDEyLDIxLjM1VjIxLjM1TTE2LjUsM0MxOS41OCwzIDIyLDUuNDEgMjIsOC41QzIyLDEyLjI3IDE4LjYsMTUuMzYgMTMuNDUsMjAuMDNMMTIsMjEuMzVMMTEsMTQuMzVMMTUuNSw5LjM1TDEyLjg1LDQuMjdDMTMuODcsMy40NyAxNS4xNywzIDE2LjUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEJyb2tlbk91dGxpbmUgPSBcIk03LjUsNUM3LjcsNSA3LjksNSA4LjEsNS4xTDEwLjUsOS4yTDYuOCwxMy44QzUuMSwxMS44IDQsMTAuMiA0LDguNUM0LDYuNSA1LjUsNSA3LjUsNU03LjUsM0M0LjQsMyAyLDUuNCAyLDguNUMyLDEyLjMgNS40LDE1LjQgMTAuNiwyMEwxMiwyMS4zTDksMTQuM0wxMyw5LjNMOS40LDMuM0M4LjgsMy4xIDguMiwzIDcuNSwzTTE2LjUsNUMxOC41LDUgMjAsNi41IDIwLDguNUMyMCwxMS4xIDE3LjQsMTMuNyAxMy40LDE3LjNMMTMuMSwxNUwxNy45LDkuN0wxNS42LDUuMkMxNS45LDUgMTYuMiw1IDE2LjUsNU0xNi41LDNDMTUuMiwzIDEzLjksMy41IDEyLjksNC4zTDE1LjUsOS40TDExLDE0LjRMMTIsMjEuNEwxMy40LDIwLjFDMTguNiwxNS40IDIyLDEyLjMgMjIsOC42QzIyLDUuNCAxOS42LDMgMTYuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0Q2lyY2xlID0gXCJNMTIsMkM2LjQ3LDIgMiw2LjUgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTkuNzUsNy44MkMxMC42Miw3LjgyIDExLjQ1LDguMjMgMTIsOC44N0MxMi41NSw4LjIzIDEzLjM4LDcuODIgMTQuMjUsNy44MkMxNS43OSw3LjgyIDE3LDkuMDMgMTcsMTAuNTdDMTcsMTIuNDYgMTUuMywxNCAxMi43MiwxNi4zNEwxMiwxN0wxMS4yOCwxNi4zNEM4LjcsMTQgNywxMi40NiA3LDEwLjU3QzcsOS4wMyA4LjIxLDcuODIgOS43NSw3LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0Q2lyY2xlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE05Ljc1LDcuODJDOC4yMSw3LjgyIDcsOS4wMyA3LDEwLjU3QzcsMTIuNDYgOC43LDE0IDExLjI4LDE2LjM0TDEyLDE3TDEyLjcyLDE2LjM0QzE1LjMsMTQgMTcsMTIuNDYgMTcsMTAuNTdDMTcsOS4wMyAxNS43OSw3LjgyIDE0LjI1LDcuODJDMTMuMzgsNy44MiAxMi41NSw4LjIzIDEyLDguODdDMTEuNDUsOC4yMyAxMC42Miw3LjgyIDkuNzUsNy44MlpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydENvZyA9IFwiTTEyIDE5QzEyIDE5LjcxIDEyLjEyIDIwLjQgMTIuMzIgMjEuMDZMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjggMjEuNTkgMTEgMjAuODQgMTIuMjVDMjAuMjUgMTIuMDkgMTkuNjMgMTIgMTkgMTJDMTUuMTQgMTIgMTIgMTUuMTQgMTIgMTlNMjMuODMgMjAuNjRMMjIuODMgMjIuMzdDMjIuNzYgMjIuNSAyMi42MyAyMi41IDIyLjUgMjIuNUwyMS4yNyAyMkMyMSAyMi4xOCAyMC43MyAyMi4zNCAyMC40MyAyMi40N0wyMC4yNCAyMy43OUMyMC4yMiAyMy45MSAyMC4xMSAyNCAyMCAyNEgxOEMxNy44NiAyNCAxNy43NiAyMy45MSAxNy43NCAyMy43OUwxNy41NSAyMi40N0MxNy4yNCAyMi4zNSAxNi45NiAyMi4xOCAxNi43IDIyTDE1LjQ2IDIyLjVDMTUuMzQgMjIuNSAxNS4yMSAyMi41IDE1LjE1IDIyLjM3TDE0LjE1IDIwLjY0QzE0LjA5IDIwLjUzIDE0LjEyIDIwLjQgMTQuMjEgMjAuMzJMMTUuMjcgMTkuNUMxNS4yNSAxOS4zMyAxNS4yNCAxOS4xNyAxNS4yNCAxOVMxNS4yNSAxOC42NyAxNS4yNyAxOC41TDE0LjIxIDE3LjY4QzE0LjExIDE3LjYgMTQuMDkgMTcuNDcgMTQuMTUgMTcuMzZMMTUuMTUgMTUuNjNDMTUuMjIgMTUuNSAxNS4zNSAxNS41IDE1LjQ2IDE1LjVMMTYuNyAxNkMxNi45NiAxNS44MiAxNy4yNSAxNS42NiAxNy41NSAxNS41M0wxNy43NCAxNC4yMUMxNy43NiAxNC4wOSAxNy44NyAxNCAxOCAxNEgyMEMyMC4xMSAxNCAyMC4yMiAxNC4wOSAyMC4yMyAxNC4yMUwyMC40MiAxNS41M0MyMC43MyAxNS42NSAyMSAxNS44MiAyMS4yNyAxNkwyMi41IDE1LjVDMjIuNjMgMTUuNSAyMi43NiAxNS41IDIyLjgyIDE1LjYzTDIzLjgyIDE3LjM2QzIzLjg4IDE3LjQ3IDIzLjg1IDE3LjYgMjMuNzYgMTcuNjhMMjIuNyAxOC41QzIyLjczIDE4LjY3IDIyLjc0IDE4LjgzIDIyLjc0IDE5UzIyLjcyIDE5LjMzIDIyLjcgMTkuNUwyMy43NyAyMC4zMkMyMy44NiAyMC40IDIzLjg5IDIwLjUzIDIzLjgzIDIwLjY0TTIwLjUgMTlDMjAuNSAxOC4xNyAxOS44MyAxNy41IDE5IDE3LjVTMTcuNSAxOC4xNyAxNy41IDE5IDE4LjE2IDIwLjUgMTkgMjAuNUMxOS44MyAyMC41IDIwLjUgMTkuODMgMjAuNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydENvZ091dGxpbmUgPSBcIk0xNi41IDVDMTQuOTYgNSAxMy40NiA2IDEyLjkzIDcuMzZIMTEuMDdDMTAuNTQgNiA5LjA0IDUgNy41IDVDNS41IDUgNCA2LjUgNCA4LjVDNCAxMS4zOSA3LjE0IDE0LjI0IDExLjg5IDE4LjU1TDEyIDE4LjY1TDEyIDE4LjYzQzEyIDE4Ljc1IDEyIDE4Ljg4IDEyIDE5QzEyIDE5LjcxIDEyLjEyIDIwLjQgMTIuMzIgMjEuMDZMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjggMjEuNTkgMTEgMjAuODQgMTIuMjVDMjAuMjUgMTIuMDkgMTkuNjMgMTIgMTkgMTJDMTguODcgMTIgMTguNzQgMTIgMTguNiAxMkMxOS41IDEwLjc5IDIwIDkuNjUgMjAgOC41QzIwIDYuNSAxOC41IDUgMTYuNSA1TTIzLjgzIDIwLjY0TDIyLjgzIDIyLjM3QzIyLjc2IDIyLjUgMjIuNjMgMjIuNSAyMi41IDIyLjVMMjEuMjcgMjJDMjEgMjIuMTggMjAuNzMgMjIuMzQgMjAuNDMgMjIuNDdMMjAuMjQgMjMuNzlDMjAuMjIgMjMuOTEgMjAuMTEgMjQgMjAgMjRIMThDMTcuODYgMjQgMTcuNzYgMjMuOTEgMTcuNzQgMjMuNzlMMTcuNTUgMjIuNDdDMTcuMjQgMjIuMzUgMTYuOTYgMjIuMTggMTYuNyAyMkwxNS40NiAyMi41QzE1LjM0IDIyLjUgMTUuMjEgMjIuNSAxNS4xNSAyMi4zN0wxNC4xNSAyMC42NEMxNC4wOSAyMC41MyAxNC4xMiAyMC40IDE0LjIxIDIwLjMyTDE1LjI3IDE5LjVDMTUuMjUgMTkuMzMgMTUuMjQgMTkuMTcgMTUuMjQgMTlTMTUuMjUgMTguNjcgMTUuMjcgMTguNUwxNC4yMSAxNy42OEMxNC4xMSAxNy42IDE0LjA5IDE3LjQ3IDE0LjE1IDE3LjM2TDE1LjE1IDE1LjYzQzE1LjIyIDE1LjUgMTUuMzUgMTUuNSAxNS40NiAxNS41TDE2LjcgMTZDMTYuOTYgMTUuODIgMTcuMjUgMTUuNjYgMTcuNTUgMTUuNTNMMTcuNzQgMTQuMjFDMTcuNzYgMTQuMDkgMTcuODcgMTQgMTggMTRIMjBDMjAuMTEgMTQgMjAuMjIgMTQuMDkgMjAuMjMgMTQuMjFMMjAuNDIgMTUuNTNDMjAuNzMgMTUuNjUgMjEgMTUuODIgMjEuMjcgMTZMMjIuNSAxNS41QzIyLjYzIDE1LjUgMjIuNzYgMTUuNSAyMi44MiAxNS42M0wyMy44MiAxNy4zNkMyMy44OCAxNy40NyAyMy44NSAxNy42IDIzLjc2IDE3LjY4TDIyLjcgMTguNUMyMi43MyAxOC42NyAyMi43NCAxOC44MyAyMi43NCAxOVMyMi43MiAxOS4zMyAyMi43IDE5LjVMMjMuNzcgMjAuMzJDMjMuODYgMjAuNCAyMy44OSAyMC41MyAyMy44MyAyMC42NE0yMC41IDE5QzIwLjUgMTguMTcgMTkuODMgMTcuNSAxOSAxNy41UzE3LjUgMTguMTcgMTcuNSAxOSAxOC4xNiAyMC41IDE5IDIwLjVDMTkuODMgMjAuNSAyMC41IDE5LjgzIDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRGbGFzaCA9IFwiTTE2LjUsMi44M0MxNC43NiwyLjgzIDEzLjA5LDMuNjQgMTIsNC45QzEwLjkxLDMuNjQgOS4yNCwyLjgzIDcuNSwyLjgzQzQuNDIsMi44MyAyLDUuMjQgMiw4LjMzQzIsMTIuMSA1LjQsMTUuMTkgMTAuNTUsMTkuODZMMTIsMjEuMTdMMTMuNDUsMTkuODZDMTguNiwxNS4xOSAyMiwxMi4xIDIyLDguMzNDMjIsNS4yNCAxOS41OCwyLjgzIDE2LjUsMi44M00xMiwxNy44M1YxMy44M0g5TDEyLDYuODNWMTAuODNIMTVcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydEhhbGYgPSBcIk0xMyw3LjJWMTcuNzRMMTMsMjAuNDRMMTIsMjEuMzVMMTAuNTUsMjAuMDNDNS40LDE1LjM2IDIsMTIuMjcgMiw4LjVDMiw1LjQxIDQuNDIsMyA3LjUsM0MxMCwzIDEzLDUgMTMsNy4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0SGFsZkZ1bGwgPSBcIk0xNi41LDVDMTUsNSAxMy41OCw1LjkxIDEzLDcuMlYxNy43NEMxNy4yNSwxMy44NyAyMCwxMS4yIDIwLDguNUMyMCw2LjUgMTguNSw1IDE2LjUsNU0xNi41LDNDMTkuNTgsMyAyMiw1LjQxIDIyLDguNUMyMiwxMi4yNyAxOC42LDE1LjM2IDEzLjQ1LDIwLjAzTDEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOS4yNCwzIDEwLjkxLDMuODEgMTIsNS4wOEMxMy4wOSwzLjgxIDE0Ljc2LDMgMTYuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0SGFsZk91dGxpbmUgPSBcIk00LDguNUM0LDExLjIgNi43NSwxMy44NyAxMSwxNy43NFY3LjJDMTAuNDIsNS45MSA5LDUgNy41LDVDNS41LDUgNCw2LjUgNCw4LjVNMTMsNy4yVjE3Ljc0TDEzLDIwLjQ0TDEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDMTAsMyAxMyw1IDEzLDcuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydE1pbnVzID0gXCJNMTIgMThDMTIgMTkgMTIuMjUgMTkuOTIgMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMTkuODMgMTIuMjMgMTguOTQgMTIgMTggMTJDMTQuNjkgMTIgMTIgMTQuNjkgMTIgMThNMTQgMTdWMTlIMjJWMTdIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRNaW51c091dGxpbmUgPSBcIk0xMi42NyAyMC43NEwxMiAyMS4zNUwxMC41NSAyMC4wM0M1LjQgMTUuMzYgMiAxMi4yNyAyIDguNUMyIDUuNDEgNC40MiAzIDcuNSAzQzkuMjQgMyAxMC45MSAzLjgxIDEyIDUuMDhDMTMuMDkgMy44MSAxNC43NiAzIDE2LjUgM0MxOS41OCAzIDIyIDUuNDEgMjIgOC41QzIyIDkuOTMgMjEuNSAxMS4yNiAyMC42MiAxMi42MUMyMCAxMi4zMSAxOS4zMSAxMi4xMSAxOC41OSAxMi4wNEMxOS41IDEwLjggMjAgOS42NSAyMCA4LjVDMjAgNi41IDE4LjUgNSAxNi41IDVDMTQuOTYgNSAxMy40NiA2IDEyLjkzIDcuMzZIMTEuMDdDMTAuNTQgNiA5LjA0IDUgNy41IDVDNS41IDUgNCA2LjUgNCA4LjVDNCAxMS4zOSA3LjE0IDE0LjI0IDExLjg5IDE4LjU1TDEyIDE4LjY1TDEyLjA0IDE4LjYxQzEyLjEyIDE5LjM3IDEyLjM0IDIwLjA5IDEyLjY3IDIwLjc0TTE0IDE3VjE5SDIyVjE3SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0TXVsdGlwbGUgPSBcIk0xMy41LDIwQzYuOSwxMy45IDMuNSwxMC44IDMuNSw3LjFDMy41LDQgNS45LDEuNiA5LDEuNkMxMC43LDEuNiAxMi40LDIuNCAxMy41LDMuN0MxNC42LDIuNCAxNi4zLDEuNiAxOCwxLjZDMjEuMSwxLjYgMjMuNSw0IDIzLjUsNy4xQzIzLjUsMTAuOSAyMC4xLDE0IDEzLjUsMjBNMTIsMjEuMUM1LjQsMTUuMiAxLjUsMTEuNyAxLjUsN0MxLjUsNi44IDEuNSw2LjYgMS41LDYuNEMwLjksNy4zIDAuNSw4LjQgMC41LDkuNkMwLjUsMTMuNCAzLjksMTYuNSAxMC41LDIyLjRMMTIsMjEuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydE11bHRpcGxlT3V0bGluZSA9IFwiTTEyLDIxLjFMMTAuNSwyMi40QzMuOSwxNi41IDAuNSwxMy40IDAuNSw5LjZDMC41LDguNCAwLjksNy4zIDEuNSw2LjRDMS41LDYuNiAxLjUsNi44IDEuNSw3QzEuNSwxMS43IDUuNCwxNS4yIDEyLDIxLjFNMTMuNiwxN0MxOC4zLDEyLjcgMjEuNSw5LjkgMjEuNiw3QzIxLjYsNSAyMC4xLDMuNSAxOC4xLDMuNUMxNi41LDMuNSAxNSw0LjUgMTQuNSw1LjlIMTIuNkMxMiw0LjUgMTAuNSwzLjUgOSwzLjVDNywzLjUgNS41LDUgNS41LDdDNS41LDkuOSA4LjYsMTIuNyAxMy40LDE3TDEzLjUsMTcuMU0xOCwxLjVDMjEuMSwxLjUgMjMuNSwzLjkgMjMuNSw3QzIzLjUsMTAuNyAyMC4xLDEzLjggMTMuNSwxOS44QzYuOSwxMy45IDMuNSwxMC44IDMuNSw3QzMuNSwzLjkgNS45LDEuNSA5LDEuNUMxMC43LDEuNSAxMi40LDIuMyAxMy41LDMuNkMxNC42LDIuMyAxNi4zLDEuNSAxOCwxLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRPZmYgPSBcIk0xLDQuMjdMMi4yOCwzTDIwLDIwLjcyTDE4LjczLDIyTDE1LjE4LDE4LjQ0TDEzLjQ1LDIwLjAzTDEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNy41NSAyLjIzLDYuNjcgMi42Myw1LjlMMSw0LjI3TTcuNSwzQzkuMjQsMyAxMC45MSwzLjgxIDEyLDUuMDhDMTMuMDksMy44MSAxNC43NiwzIDE2LjUsM0MxOS41OCwzIDIyLDUuNDEgMjIsOC41QzIyLDExLjA3IDIwLjQyLDEzLjMyIDE3Ljc5LDE1Ljk3TDUuMjcsMy40NUM1Ljk1LDMuMTYgNi43LDMgNy41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRPZmZPdXRsaW5lID0gXCJNMi4zOSAxLjczTDEuMTEgM0wzLjE5IDUuMDhDMi40NSA2IDIgNy4xOSAyIDguNUMyIDEyLjI3IDUuNCAxNS4zNiAxMC41NSAyMC4wM0wxMiAyMS4zNUwxMy40NSAyMC4wM0MxNC4zMiAxOS4yNCAxNS4xNCAxOC41IDE1LjkgMTcuNzlMMjAgMjJMMjEuMjcgMjAuNzNNMTIuMSAxOC41NUwxMiAxOC42NUwxMS44OSAxOC41NUM3LjE0IDE0LjI0IDQgMTEuMzkgNCA4LjVDNCA3Ljc0IDQuMjIgNy4wNiA0LjYxIDYuNUwxNC41IDE2LjM3QzEzLjc0IDE3LjA2IDEyLjk1IDE3Ljc4IDEyLjEgMTguNTVNOC4zIDUuMUw2LjMzIDMuMTNDNi43IDMuMDUgNy4xIDMgNy41IDNDOS4yNCAzIDEwLjkxIDMuODEgMTIgNS4wOEMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzQzE5LjU4IDMgMjIgNS40MSAyMiA4LjVDMjIgMTAuODQgMjAuNjkgMTIuOTIgMTguNDcgMTUuMjdMMTcuMDYgMTMuODZDMTguOTEgMTEuODggMjAgMTAuMiAyMCA4LjVDMjAgNi41IDE4LjUgNSAxNi41IDVDMTUuMSA1IDEzLjc0IDUuODMgMTMuMTEgN0gxMC44OUMxMC4zOCA2LjA2IDkuMzkgNS4zNCA4LjMgNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0T3V0bGluZSA9IFwiTTEyLjEsMTguNTVMMTIsMTguNjVMMTEuODksMTguNTVDNy4xNCwxNC4yNCA0LDExLjM5IDQsOC41QzQsNi41IDUuNSw1IDcuNSw1QzkuMDQsNSAxMC41NCw2IDExLjA3LDcuMzZIMTIuOTNDMTMuNDYsNiAxNC45Niw1IDE2LjUsNUMxOC41LDUgMjAsNi41IDIwLDguNUMyMCwxMS4zOSAxNi44NiwxNC4yNCAxMi4xLDE4LjU1TTE2LjUsM0MxNC43NiwzIDEzLjA5LDMuODEgMTIsNS4wOEMxMC45MSwzLjgxIDkuMjQsMyA3LjUsM0M0LjQyLDMgMiw1LjQxIDIsOC41QzIsMTIuMjcgNS40LDE1LjM2IDEwLjU1LDIwLjAzTDEyLDIxLjM1TDEzLjQ1LDIwLjAzQzE4LjYsMTUuMzYgMjIsMTIuMjcgMjIsOC41QzIyLDUuNDEgMTkuNTgsMyAxNi41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRQbHVzID0gXCJNMTIgMThDMTIgMTkgMTIuMjUgMTkuOTIgMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMTkuODMgMTIuMjMgMTguOTQgMTIgMTggMTJDMTQuNjkgMTIgMTIgMTQuNjkgMTIgMThNMTkgMTRIMTdWMTdIMTRWMTlIMTdWMjJIMTlWMTlIMjJWMTdIMTlWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRQbHVzT3V0bGluZSA9IFwiTTEyLjY3IDIwLjc0TDEyIDIxLjM1TDEwLjU1IDIwLjAzQzUuNCAxNS4zNiAyIDEyLjI3IDIgOC41QzIgNS40MSA0LjQyIDMgNy41IDNDOS4yNCAzIDEwLjkxIDMuODEgMTIgNS4wOEMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzQzE5LjU4IDMgMjIgNS40MSAyMiA4LjVDMjIgOS45MyAyMS41IDExLjI2IDIwLjYyIDEyLjYxQzIwIDEyLjMxIDE5LjMxIDEyLjExIDE4LjU5IDEyLjA0QzE5LjUgMTAuOCAyMCA5LjY1IDIwIDguNUMyMCA2LjUgMTguNSA1IDE2LjUgNUMxNC45NiA1IDEzLjQ2IDYgMTIuOTMgNy4zNkgxMS4wN0MxMC41NCA2IDkuMDQgNSA3LjUgNUM1LjUgNSA0IDYuNSA0IDguNUM0IDExLjM5IDcuMTQgMTQuMjQgMTEuODkgMTguNTVMMTIgMTguNjVMMTIuMDQgMTguNjFDMTIuMTIgMTkuMzcgMTIuMzQgMjAuMDkgMTIuNjcgMjAuNzRNMTcgMTRWMTdIMTRWMTlIMTdWMjJIMTlWMTlIMjJWMTdIMTlWMTRIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRQdWxzZSA9IFwiTTcuNSw0QTUuNSw1LjUgMCAwLDAgMiw5LjVDMiwxMCAyLjA5LDEwLjUgMi4yMiwxMUg2LjNMNy41Nyw3LjYzQzcuODcsNi44MyA5LjA1LDYuNzUgOS40Myw3LjYzTDExLjUsMTNMMTIuMDksMTEuNThDMTIuMjIsMTEuMjUgMTIuNTcsMTEgMTMsMTFIMjEuNzhDMjEuOTEsMTAuNSAyMiwxMCAyMiw5LjVBNS41LDUuNSAwIDAsMCAxNi41LDRDMTQuNjQsNCAxMyw0LjkzIDEyLDYuMzRDMTEsNC45MyA5LjM2LDQgNy41LDRWNE0zLDEyLjVBMSwxIDAgMCwwIDIsMTMuNUExLDEgMCAwLDAgMywxNC41SDUuNDRMMTEsMjBDMTIsMjAuOSAxMiwyMC45IDEzLDIwTDE4LjU2LDE0LjVIMjFBMSwxIDAgMCwwIDIyLDEzLjVBMSwxIDAgMCwwIDIxLDEyLjVIMTMuNEwxMi40NywxNC44QzEyLjA3LDE1LjgxIDEwLjkyLDE1LjY3IDEwLjU1LDE0LjgzTDguNSw5LjVMNy41NCwxMS44M0M3LjM5LDEyLjIxIDcuMDUsMTIuNSA2LjYsMTIuNUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlYXJ0UmVtb3ZlID0gXCJNMTIgMThDMTIgMTkgMTIuMjUgMTkuOTIgMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMTkuODMgMTIuMjMgMTguOTQgMTIgMTggMTJDMTQuNjkgMTIgMTIgMTQuNjkgMTIgMThNMjEuNTQgMTUuODhMMjAuMTIgMTQuNDdMMTggMTYuNTlMMTUuODggMTQuNDdMMTQuNDcgMTUuODhMMTYuNTkgMThMMTQuNDcgMjAuMTJMMTUuODggMjEuNTRMMTggMTkuNDFMMjAuMTIgMjEuNTRMMjEuNTQgMjAuMTJMMTkuNDEgMThMMjEuNTQgMTUuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVhcnRSZW1vdmVPdXRsaW5lID0gXCJNMTIuNjcgMjAuNzRMMTIgMjEuMzVMMTAuNTUgMjAuMDNDNS40IDE1LjM2IDIgMTIuMjcgMiA4LjVDMiA1LjQxIDQuNDIgMyA3LjUgM0M5LjI0IDMgMTAuOTEgMy44MSAxMiA1LjA4QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDNDMTkuNTggMyAyMiA1LjQxIDIyIDguNUMyMiA5LjkzIDIxLjUgMTEuMjYgMjAuNjIgMTIuNjFDMjAgMTIuMzEgMTkuMzEgMTIuMTEgMTguNTkgMTIuMDRDMTkuNSAxMC44IDIwIDkuNjUgMjAgOC41QzIwIDYuNSAxOC41IDUgMTYuNSA1QzE0Ljk2IDUgMTMuNDYgNiAxMi45MyA3LjM2SDExLjA3QzEwLjU0IDYgOS4wNCA1IDcuNSA1QzUuNSA1IDQgNi41IDQgOC41QzQgMTEuMzkgNy4xNCAxNC4yNCAxMS44OSAxOC41NUwxMiAxOC42NUwxMi4wNCAxOC42MUMxMi4xMiAxOS4zNyAxMi4zNCAyMC4wOSAxMi42NyAyMC43NE0yMC4xMiAxNC40NkwxOCAxNi41OUwxNS44OCAxNC40N0wxNC40NyAxNS44OEwxNi41OSAxOEwxNC40NyAyMC4xMkwxNS44OCAyMS41NEwxOCAxOS40MUwyMC4xMiAyMS41NEwyMS41NCAyMC4xMkwxOS40MSAxOEwyMS41NCAxNS44OEwyMC4xMiAxNC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydFNldHRpbmdzID0gXCJNMTUgMjJIMTdWMjRIMTVWMjJNMTEgMjRIMTNWMjJIMTFWMjRNNyAyNEg5VjIySDdWMjRNMTYuNSAzQzE0Ljc2IDMgMTMuMDkgMy44MSAxMiA1LjA4QzEwLjkxIDMuODEgOS4yNCAzIDcuNSAzQzQuNDIgMyAyIDUuNDEgMiA4LjVDMiAxMi4yNyA1LjQgMTUuMzYgMTAuNTUgMjAuMDNMMTIgMjEuMzVMMTMuNDUgMjAuMDNDMTguNiAxNS4zNiAyMiAxMi4yNyAyMiA4LjVDMjIgNS40MSAxOS41OCAzIDE2LjUgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIZWFydFNldHRpbmdzT3V0bGluZSA9IFwiTTcgMjJIOVYyNEg3VjIyTTExIDI0SDEzVjIySDExVjI0TTE1IDI0SDE3VjIySDE1VjI0TTIyIDguNUMyMiAxMi4yNyAxOC42IDE1LjM2IDEzLjQ1IDIwLjAzTDEyIDIxLjM1TDEwLjU1IDIwLjAzQzUuNCAxNS4zNiAyIDEyLjI3IDIgOC41QzIgNS40MSA0LjQyIDMgNy41IDNDOS4yNCAzIDEwLjkxIDMuODEgMTIgNS4wOEMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzQzE5LjU4IDMgMjIgNS40MSAyMiA4LjVNMjAgOC41QzIwIDYuNSAxOC41IDUgMTYuNSA1QzE0Ljk2IDUgMTMuNDYgNiAxMi45MyA3LjM2SDExLjA3QzEwLjU0IDYgOS4wNCA1IDcuNSA1QzUuNSA1IDQgNi41IDQgOC41QzQgMTEuMzkgNy4xNCAxNC4yNCAxMS44OSAxOC41NUwxMiAxOC42NUwxMi4xIDE4LjU1QzE2Ljg2IDE0LjI0IDIwIDExLjM5IDIwIDguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWxpY29wdGVyID0gXCJNMywzSDE3VjVIM1YzTTIzLDZWMTAuNUwxNC43NSwxMi4yQzE0LjkxLDEyLjYgMTUsMTMuMDQgMTUsMTMuNUMxNSwxNC45IDE0LjE4LDE2LjEgMTMsMTYuNjZWMTdMMTMsMTlIMTZWMjFINEEzLDMgMCAwLDEgMSwxOFYxN0gzVjE4QTEsMSAwIDAsMCA0LDE5SDVWMTYuNzRDMy4yNSwxNi4xMyAyLDE0LjQ2IDIsMTIuNUMyLDEwIDQsOCA2LjUsOEg5VjZIMTFWOEgyMVY2SDIzTTExLDE5VjE3SDdWMTlIMTFNNy41LDEwQzYuMTIsMTAgNSwxMC45IDUsMTJDNSwxMy4xIDYuMTIsMTQgNy41LDE0QzguODgsMTQgMTAsMTMuMSAxMCwxMkMxMCwxMC45IDguODgsMTAgNy41LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlbHAgPSBcIk0xMCwxOUgxM1YyMkgxMFYxOU0xMiwyQzE3LjM1LDIuMjIgMTkuNjgsNy42MiAxNi41LDExLjY3QzE1LjY3LDEyLjY3IDE0LjMzLDEzLjMzIDEzLjY3LDE0LjE3QzEzLDE1IDEzLDE2IDEzLDE3SDEwQzEwLDE1LjMzIDEwLDEzLjkyIDEwLjY3LDEyLjkyQzExLjMzLDExLjkyIDEyLjY3LDExLjMzIDEzLjUsMTAuNjdDMTUuOTIsOC40MyAxNS4zMiw1LjI2IDEyLDVBMywzIDAgMCwwIDksOEg2QTYsNiAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlbHBCb3ggPSBcIk0xMSwxOEgxM1YxNkgxMVYxOE0xMiw2QTQsNCAwIDAsMCA4LDEwSDEwQTIsMiAwIDAsMSAxMiw4QTIsMiAwIDAsMSAxNCwxMEMxNCwxMiAxMSwxMS43NSAxMSwxNUgxM0MxMywxMi43NSAxNiwxMi41IDE2LDEwQTQsNCAwIDAsMCAxMiw2TTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscENpcmNsZSA9IFwiTTE1LjA3LDExLjI1TDE0LjE3LDEyLjE3QzEzLjQ1LDEyLjg5IDEzLDEzLjUgMTMsMTVIMTFWMTQuNUMxMSwxMy4zOSAxMS40NSwxMi4zOSAxMi4xNywxMS42N0wxMy40MSwxMC40MUMxMy43OCwxMC4wNSAxNCw5LjU1IDE0LDlDMTQsNy44OSAxMy4xLDcgMTIsN0EyLDIgMCAwLDAgMTAsOUg4QTQsNCAwIDAsMSAxMiw1QTQsNCAwIDAsMSAxNiw5QzE2LDkuODggMTUuNjQsMTAuNjcgMTUuMDcsMTEuMjVNMTMsMTlIMTFWMTdIMTNNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscENpcmNsZU91dGxpbmUgPSBcIk0xMSwxOEgxM1YxNkgxMVYxOE0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTEyLDZBNCw0IDAgMCwwIDgsMTBIMTBBMiwyIDAgMCwxIDEyLDhBMiwyIDAgMCwxIDE0LDEwQzE0LDEyIDExLDExLjc1IDExLDE1SDEzQzEzLDEyLjc1IDE2LDEyLjUgMTYsMTBBNCw0IDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscE5ldHdvcmsgPSBcIk0xNywzQTIsMiAwIDAsMSAxOSw1VjE1QTIsMiAwIDAsMSAxNywxN0gxM1YxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0M1Ljg5LDE3IDUsMTYuMSA1LDE1VjVBMiwyIDAgMCwxIDcsM0gxN00xMi4xOSw1QzExLjMyLDUgMTAuNjIsNS4yIDEwLjA4LDUuNTlDOS41Niw2IDkuMyw2LjU3IDkuMzEsNy4zNkw5LjMyLDcuMzlIMTEuMjVDMTEuMjYsNy4wOSAxMS4zNSw2Ljg2IDExLjUzLDYuN0MxMS43MSw2LjU1IDExLjkzLDYuNDcgMTIuMTksNi40N0MxMi41LDYuNDcgMTIuNzYsNi41NyAxMi45NCw2Ljc1QzEzLjEyLDYuOTQgMTMuMiw3LjIgMTMuMiw3LjVDMTMuMiw3LjgyIDEzLjEzLDguMDkgMTIuOTcsOC4zMkMxMi44Myw4LjU1IDEyLjYyLDguNzUgMTIuMzYsOC45MUMxMS44NSw5LjI1IDExLjUsOS41NSAxMS4zMSw5LjgyQzExLjExLDEwLjA4IDExLDEwLjUgMTEsMTFIMTNDMTMsMTAuNjkgMTMuMDQsMTAuNDQgMTMuMTMsMTAuMjZDMTMuMjIsMTAuMDcgMTMuMzksOS45IDEzLjY0LDkuNzRDMTQuMDksOS41IDE0LjQ2LDkuMjEgMTQuNzUsOC44MUMxNS4wNCw4LjQxIDE1LjE5LDggMTUuMTksNy41QzE1LjE5LDYuNzQgMTQuOTIsNi4xMyAxNC4zOCw1LjY4QzEzLjg1LDUuMjMgMTMuMTIsNSAxMi4xOSw1TTExLDEyVjE0SDEzVjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhlbHBOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTEuOTUsNkMxMS4xNyw2IDEwLjU1LDYuMTggMTAuMDcsNi41QzkuNjEsNi44OSA5LjM4LDcuNCA5LjM5LDguMUw5LjQsOC4xM0gxMS4xMUMxMS4xMiw3Ljg2IDExLjIsNy42NSAxMS4zNiw3LjVDMTEuNSw3LjM4IDExLjcyLDcuMzEgMTEuOTUsNy4zMUMxMi4yMiw3LjMxIDEyLjQ1LDcuNCAxMi42MSw3LjU2QzEyLjc3LDcuNzMgMTIuODUsNy45NiAxMi44NSw4LjIyQzEyLjg1LDguNSAxMi43OCw4Ljc1IDEyLjY0LDguOTVDMTIuNSw5LjE2IDEyLjMzLDkuMzMgMTIuMSw5LjVDMTEuNjUsOS43OCAxMS4zNCwxMC4wNSAxMS4xNywxMC4yOUMxMSwxMC41IDEwLjg5LDEwLjg5IDEwLjg5LDExLjMzSDEyLjY3QzEyLjY3LDExLjA2IDEyLjcsMTAuODQgMTIuNzgsMTAuNjhDMTIuODYsMTAuNSAxMywxMC4zNiAxMy4yNCwxMC4yMUMxMy42NCwxMCAxMy45Nyw5Ljc0IDE0LjIyLDkuMzlDMTQuNSw5LjAzIDE0LjYyLDguNjcgMTQuNjIsOC4yMkMxNC42Miw3LjU1IDE0LjM4LDcgMTMuOSw2LjYxQzEzLjQyLDYuMiAxMi43Nyw2IDExLjk1LDZNMTAuODksMTIuMjJWMTRIMTIuNjdWMTIuMjJIMTAuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGVscFJob21idXMgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNi45NUMxNC43IDcuMDYgMTUuODcgOS43OCAxNC4yOCAxMS44MUMxMy44NiAxMi4zMSAxMy4xOSAxMi42NCAxMi44NSAxMy4wN0MxMi41IDEzLjUgMTIuNSAxNCAxMi41IDE0LjVIMTFDMTEgMTMuNjUgMTEgMTIuOTQgMTEuMzUgMTIuNDRDMTEuNjggMTEuOTQgMTIuMzUgMTEuNjQgMTIuNzcgMTEuMzFDMTQgMTAuMTggMTMuNjggOC41OSAxMiA4LjQ2QzExLjE4IDguNDYgMTAuNSA5LjEzIDEwLjUgOS45N0g5QzkgOC4zIDEwLjM1IDYuOTUgMTIgNi45NU0xMSAxNS41SDEyLjVWMTdIMTFWMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZWxwUmhvbWJ1c091dGxpbmUgPSBcIk0xMSAxNS41SDEyLjVWMTdIMTFWMTUuNU0xMiA2Ljk1QzE0LjcgNy4wNiAxNS44NyA5Ljc4IDE0LjI4IDExLjgxQzEzLjg2IDEyLjMxIDEzLjE5IDEyLjY0IDEyLjg1IDEzLjA3QzEyLjUgMTMuNSAxMi41IDE0IDEyLjUgMTQuNUgxMUMxMSAxMy42NSAxMSAxMi45NCAxMS4zNSAxMi40NEMxMS42OCAxMS45NCAxMi4zNSAxMS42NCAxMi43NyAxMS4zMUMxNCAxMC4xOCAxMy42OCA4LjU5IDEyIDguNDZDMTEuMTggOC40NiAxMC41IDkuMTMgMTAuNSA5Ljk3SDlDOSA4LjMgMTAuMzUgNi45NSAxMiA2Ljk1TTEyIDJDMTEuNSAyIDExIDIuMTkgMTAuNTkgMi41OUwyLjU5IDEwLjU5QzEuOCAxMS4zNyAxLjggMTIuNjMgMi41OSAxMy40MUwxMC41OSAyMS40MUMxMS4zNyAyMi4yIDEyLjYzIDIyLjIgMTMuNDEgMjEuNDFMMjEuNDEgMTMuNDFDMjIuMiAxMi42MyAyMi4yIDExLjM3IDIxLjQxIDEwLjU5TDEzLjQxIDIuNTlDMTMgMi4xOSAxMi41IDIgMTIgMk0xMiA0TDIwIDEyTDEyIDIwTDQgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWRlY2ltYWwgPSBcIk03IDdDNS45IDcgNSA3LjkgNSA5VjE1QzUgMTYuMTEgNS45IDE3IDcgMTdIOUMxMC4xMSAxNyAxMSAxNi4xMSAxMSAxNVY5QzExIDcuOSAxMC4xMSA3IDkgN0g3TTcgOUg5VjE1SDdWOU0xNy42IDE3TDE1LjUgMTQuOUwxMy40IDE3TDEyIDE1LjZMMTQuMSAxMy41TDEyIDExLjRMMTMuNCAxMEwxNS41IDEyLjFMMTcuNiAxMEwxOSAxMS40TDE2LjkgMTMuNUwxOSAxNS42TDE3LjYgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvbiA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhleGFnb25NdWx0aXBsZSA9IFwiTTEwLjI1LDJDMTAuNDQsMiAxMC42MSwyLjExIDEwLjY5LDIuMjZMMTIuOTEsNi4yMkwxMyw2LjVMMTIuOTEsNi43OEwxMC42OSwxMC43NEMxMC42MSwxMC44OSAxMC40NCwxMSAxMC4yNSwxMUg1Ljc1QzUuNTYsMTEgNS4zOSwxMC44OSA1LjMxLDEwLjc0TDMuMDksNi43OEwzLDYuNUwzLjA5LDYuMjJMNS4zMSwyLjI2QzUuMzksMi4xMSA1LjU2LDIgNS43NSwySDEwLjI1TTEwLjI1LDEzQzEwLjQ0LDEzIDEwLjYxLDEzLjExIDEwLjY5LDEzLjI2TDEyLjkxLDE3LjIyTDEzLDE3LjVMMTIuOTEsMTcuNzhMMTAuNjksMjEuNzRDMTAuNjEsMjEuODkgMTAuNDQsMjIgMTAuMjUsMjJINS43NUM1LjU2LDIyIDUuMzksMjEuODkgNS4zMSwyMS43NEwzLjA5LDE3Ljc4TDMsMTcuNUwzLjA5LDE3LjIyTDUuMzEsMTMuMjZDNS4zOSwxMy4xMSA1LjU2LDEzIDUuNzUsMTNIMTAuMjVNMTkuNSw3LjVDMTkuNjksNy41IDE5Ljg2LDcuNjEgMTkuOTQsNy43NkwyMi4xNiwxMS43MkwyMi4yNSwxMkwyMi4xNiwxMi4yOEwxOS45NCwxNi4yNEMxOS44NiwxNi4zOSAxOS42OSwxNi41IDE5LjUsMTYuNUgxNUMxNC44MSwxNi41IDE0LjY0LDE2LjM5IDE0LjU2LDE2LjI0TDEyLjM0LDEyLjI4TDEyLjI1LDEyTDEyLjM0LDExLjcyTDE0LjU2LDcuNzZDMTQuNjQsNy42MSAxNC44MSw3LjUgMTUsNy41SDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvbk11bHRpcGxlT3V0bGluZSA9IFwiTTkuMzcgNEwxMC43OCA2LjVMOS4zNyA5SDYuNjNMNS4yMyA2LjVMNi42MyA0SDkuMzdNMTAuMjUgMkg1Ljc1QzUuNTYgMiA1LjM5IDIuMTEgNS4zMSAyLjI2TDMuMDkgNi4yMkwzIDYuNUwzLjA5IDYuNzhMNS4zMSAxMC43NEM1LjM5IDEwLjg5IDUuNTYgMTEgNS43NSAxMUgxMC4yNUMxMC40NCAxMSAxMC42MSAxMC44OSAxMC42OSAxMC43NEwxMi45MSA2Ljc4TDEzIDYuNUwxMi45MSA2LjIyTDEwLjY5IDIuMjZDMTAuNjEgMi4xMSAxMC40NCAyIDEwLjI1IDJNMTguNjIgOS41TDIwIDEyTDE4LjYyIDE0LjVIMTUuODhMMTQuNSAxMkwxNS44OCA5LjVIMTguNjJNMTkuNSA3LjVIMTVDMTQuODEgNy41IDE0LjY0IDcuNjEgMTQuNTYgNy43NkwxMi4zNCAxMS43MkwxMi4yNSAxMkwxMi4zNCAxMi4yOEwxNC41NiAxNi4yNEMxNC42NCAxNi4zOSAxNC44MSAxNi41IDE1IDE2LjVIMTkuNUMxOS42OSAxNi41IDE5Ljg2IDE2LjM5IDE5Ljk0IDE2LjI0TDIyLjE2IDEyLjI4TDIyLjI1IDEyTDIyLjE2IDExLjcyTDE5Ljk0IDcuNzZDMTkuODYgNy42MSAxOS42OSA3LjUgMTkuNSA3LjVNOS4zNyAxNUwxMC43OCAxNy41TDkuMzcgMjBINi42M0w1LjIzIDE3LjVMNi42MyAxNUg5LjM3TTEwLjI1IDEzSDUuNzVDNS41NiAxMyA1LjM5IDEzLjExIDUuMzEgMTMuMjZMMy4wOSAxNy4yMkwzIDE3LjVMMy4wOSAxNy43OEw1LjMxIDIxLjc0QzUuMzkgMjEuODkgNS41NiAyMiA1Ljc1IDIySDEwLjI1QzEwLjQ0IDIyIDEwLjYxIDIxLjg5IDEwLjY5IDIxLjc0TDEyLjkxIDE3Ljc4TDEzIDE3LjVMMTIuOTEgMTcuMjJMMTAuNjkgMTMuMjZDMTAuNjEgMTMuMTEgMTAuNDQgMTMgMTAuMjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvbk91dGxpbmUgPSBcIk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlMSA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNSw4LjA5VjE1LjkxTDEyLDE5Ljg1TDE5LDE1LjkxVjguMDlMMTIsNC4xNU0xMiwxMlY1LjMyTDE3Ljk0LDguNjZMMTIsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlMiA9IFwiTTE4LDE1LjM4TDEyLDEyVjUuMzJMMTgsOC42OVYxNS4zOE0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlMyA9IFwiTTEyLDUuMzJMMTgsOC42OVYxNS4zMUwxMiwxOC42OFY1LjMyTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTEyLDQuMTVMNSw4LjA5VjE1LjkxTDEyLDE5Ljg1TDE5LDE1LjkxVjguMDlMMTIsNC4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlIZXhhZ29uU2xpY2U0ID0gXCJNMTIsNS4zMkwxOCw4LjY5VjE1LjMxTDEyLDE4LjY4TDYuMDYsMTUuMzRMMTIsMTJWNS4zMk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlNSA9IFwiTTEyLDUuMzJMMTgsOC42OVYxNS4zMUwxMiwxOC42OEw2LDE1LjMxVjguNjlMMTIsMTJWNS4zMk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdvblNsaWNlNiA9IFwiTTEyLDUuMzJMMTgsOC42OVYxNS4zMUwxMiwxOC42OEw2LDE1LjMxVjguNjlMMTIsNS4zMk0yMSwxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVY3LjVDMyw3LjEyIDMuMjEsNi43OSAzLjUzLDYuNjJMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjc5LDYuNzkgMjEsNy4xMiAyMSw3LjVWMTYuNU0xMiw0LjE1TDUsOC4wOVYxNS45MUwxMiwxOS44NUwxOSwxNS45MVY4LjA5TDEyLDQuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGV4YWdyYW0gPSBcIk0xNC41LDcuNjZMMjAuNjQsNi45N0wxNywxMkwyMC42OCwxNi45N0wxNC41LDE2LjMyTDEyLjAzLDIyTDkuNSwxNi4zNEwzLjM2LDE3LjAzTDcsMTJMMy4zMiw3LjAzTDkuNSw3LjY4TDExLjk3LDJMMTQuNSw3LjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhleGFncmFtT3V0bGluZSA9IFwiTTEyLDdMMTMuMyw5LjhMMTYuNSw5LjRMMTQuNSwxMkwxNi40LDE0LjVMMTMuMiwxNC4xTDEyLDE3TDEwLjcsMTQuMkw3LjUsMTQuNkw5LjUsMTJMNy42LDkuNUwxMC44LDkuOUwxMiw3TTEyLDJMOS41LDcuN0wzLjMsN0w3LDEyTDMuNCwxN0w5LjYsMTYuM0wxMiwyMkwxNC41LDE2LjNMMjAuNywxNi45TDE3LDEyTDIwLjYsN0wxNC40LDcuN0wxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhpZ2hEZWZpbml0aW9uID0gXCJNNSw3SDdWMTFIOVY3SDExVjE3SDlWMTNIN1YxN0g1VjdNMTMsN0gxNkEzLDMgMCAwLDEgMTksMTBWMTRBMywzIDAgMCwxIDE2LDE3SDEzVjdNMTYsMTVBMSwxIDAgMCwwIDE3LDE0VjEwQTEsMSAwIDAsMCAxNiw5SDE1VjE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhpZ2hEZWZpbml0aW9uQm94ID0gXCJNMTksM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTEsMTVIOS41VjEzSDcuNVYxNUg2VjlINy41VjExLjVIOS41VjlIMTFWMTVNMTMsOUgxN0ExLDEgMCAwLDEgMTgsMTBWMTRBMSwxIDAgMCwxIDE3LDE1SDEzVjlNMTQuNSwxMy41SDE2LjVWMTAuNUgxNC41VjEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGlnaHdheSA9IFwiTTEwLDJMOCw4SDExVjJIMTBNMTMsMlY4SDE2TDE0LDJIMTNNMiw5VjEwSDRWMTFINlYxMEgxOEwxOC4wNiwxMUgyMFYxMEgyMlY5SDJNNywxMUwzLjM0LDIySDExVjExSDdNMTMsMTFWMjJIMjAuNjZMMTcsMTFIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGlraW5nID0gXCJNOS44LDguOUw3LDIzSDkuMUwxMC45LDE1TDEzLDE3VjIzSDE1VjE1LjVMMTIuOSwxMy41TDEzLjUsMTAuNUMxNC42MywxMS44MSAxNi4yOSwxMi43MyAxOC4xNSwxMi45NUwxNiwyM0gxN0wyMCw5TDE5LjA0LDguOEwxOC41OCwxMUMxNi44NiwxMC44NSAxNS40NCw5Ljg5IDE0LjcsOC42TDEzLjcsN0MxMy41LDYuNjUgMTMuMiw2LjM3IDEyLjg0LDYuMkMxMi41LDYgMTIuMDgsNS45NiAxMS42OCw2QzExLjI4LDYuMDkgMTAuOTIsNi4yNyAxMC42Myw2LjU1QzEwLjM0LDYuODMgMTAuMTQsNy4xOSAxMC4wNiw3LjU4TDkuOCw4LjlNNy4wOCw2LjkyTDkuNCw3LjM4TDguNCwxMi40Nkw2LjA4LDEyTDcuMDgsNi45Mk0xMy41LDUuNUEyLDIgMCAwLDAgMTUuNSwzLjVBMiwyIDAgMCwwIDEzLjUsMS41QTIsMiAwIDAsMCAxMS41LDMuNUEyLDIgMCAwLDAgMTMuNSw1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGluZHVpc20gPSBcIk0xNSwyTDEzLjUsMy41TDE1LDVMMTYuNSwzLjVMMTUsMk0xMSwzQzEwLDkgMTcsMTAgMjAsNkwxOCw0LjVDMTcsNiAxMyw4IDExLDNNOSw3QzcsNyA0LjUsOC41IDQuNSw4LjVMNiwxMUM3LDEwIDksOS41IDEwLDEwQzEyLDExIDksMTMgNywxMlYxNS41QzEwLDE0IDEyLDE2IDExLDE3LjVDOCwyMiAzLDE2IDMsMTNDMSwxOSA2LDIyIDksMjJDMTIsMjIgMTQsMjAgMTIuNSwxNUgxNEMxMi41LDE5LjUgMTgsMjQgMjEsMThDMjIsMTYgMjIsOS41IDE3LDkuNUMxMyw5LjUgMTQsMTUgMTAuNSwxMy41QzE0LDEwIDEyLDcgOSw3TTE5LDEyQzIyLDE1IDE1LDIxIDE1LDE1QzE1LDEzIDE3LDEwLjUgMTksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSGlzdG9yeSA9IFwiTTEzLjUsOEgxMlYxM0wxNi4yOCwxNS41NEwxNywxNC4zM0wxMy41LDEyLjI1VjhNMTMsM0E5LDkgMCAwLDAgNCwxMkgxTDQuOTYsMTYuMDNMOSwxMkg2QTcsNyAwIDAsMSAxMyw1QTcsNyAwIDAsMSAyMCwxMkE3LDcgMCAwLDEgMTMsMTlDMTEuMDcsMTkgOS4zMiwxOC4yMSA4LjA2LDE2Ljk0TDYuNjQsMTguMzZDOC4yNywyMCAxMC41LDIxIDEzLDIxQTksOSAwIDAsMCAyMiwxMkE5LDkgMCAwLDAgMTMsM1wiO1xyXG5leHBvcnQgdmFyIG1kaUhvY2tleVB1Y2sgPSBcIk0xMiw1QzYuNSw1IDIsNi41NyAyLDguNUMyLDEwLjQzIDYuNSwxMiAxMiwxMkMxNy41LDEyIDIyLDEwLjQzIDIyLDguNUMyMiw2LjU3IDE3LjUsNSAxMiw1TTIsMTEuNzZWMTYuNUMyLDE4LjQzIDYuNSwyMCAxMiwyMEMxNy41LDIwIDIyLDE4LjQzIDIyLDE2LjVWMTEuNzZDMjEuMzMsMTIuMjIgMjAuNTgsMTIuNTcgMTkuNzMsMTIuODZDMTcuNjIsMTMuNiAxNC45NSwxNCAxMiwxNEM5LjA1LDE0IDYuMzgsMTMuNiA0LjI3LDEyLjg2QzMuNDIsMTIuNTcgMi42NywxMi4yMiAyLDExLjc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvY2tleVN0aWNrcyA9IFwiTTcuNTgsM0w1LjA1LDQuNjFMOS4wNCwxMC44N0wxMC44Miw4LjA4TDcuNTgsM00xNi40MywzTDcuNSwxN0gyVjIxSDguNUwxOC45Niw0LjYxTDE2LjQzLDNNMTQuOTcsMTQuNTlMMTMuMTksMTcuMzhMMTUuNSwyMUgyMlYxN0gxNi41TDE0Ljk3LDE0LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbG9sZW5zID0gXCJNMTIsOEMxMiw4IDIyLDggMjIsMTFDMjIsMTEgMjIuMDksMTQuMzYgMjEuNzUsMTQuMjVDMjEsMTEgMTIsMTEgMTIsMTFDMTIsMTEgMywxMSAyLjI1LDE0LjI1QzEuOTEsMTQuMzYgMiwxMSAyLDExQzIsOCAxMiw4IDEyLDhNMTIsMTJDMjAsMTIgMjAuNzUsMTQuMjUgMjAuNzUsMTQuMjVDMTkuNzUsMTcuMjUgMTksMTggMTUsMThDMTIsMTggMTMsMTYuNSAxMiwxNi41QzExLDE2LjUgMTIsMTggOSwxOEM1LDE4IDQuMjUsMTcuMjUgMy4yNSwxNC4yNUMzLjI1LDE0LjI1IDQsMTIgMTIsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZSA9IFwiTTEwLDIwVjE0SDE0VjIwSDE5VjEySDIyTDEyLDNMMiwxMkg1VjIwSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVBY2NvdW50ID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xMiw4Ljc1QTIuMjUsMi4yNSAwIDAsMSAxNC4yNSwxMUEyLjI1LDIuMjUgMCAwLDEgMTIsMTMuMjVBMi4yNSwyLjI1IDAgMCwxIDkuNzUsMTFBMi4yNSwyLjI1IDAgMCwxIDEyLDguNzVNMTIsMTVDMTMuNSwxNSAxNi41LDE1Ljc1IDE2LjUsMTcuMjVWMThINy41VjE3LjI1QzcuNSwxNS43NSAxMC41LDE1IDEyLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVBbGVydCA9IFwiTTEyIDNMMiAxMkg1VjIwSDE5VjEySDIyTDEyIDNNMTMgMThIMTFWMTZIMTNWMThNMTMgMTRIMTFWOEgxM1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQWxlcnRPdXRsaW5lID0gXCJNMTIgNS43TDE3IDEwLjJWMThIN1YxMC4yTDEyIDUuN00xOSAyMFYxMkgyMkwxMiAzTDIgMTJINVYyME0xMyA4SDExVjEzSDEzVjhNMTMgMTVIMTFWMTdIMTNWMTVcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQW5hbHl0aWNzID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJNOSwxOEg3VjEySDlNMTMsMThIMTFWMTBIMTNNMTcsMThIMTVWMTRIMTdcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQXNzaXN0YW50ID0gXCJNMjEuOCwxM0gyMFYyMUgxM1YxNy42N0wxNS43OSwxNC44OEwxNi41LDE1QzE3LjY2LDE1IDE4LjYsMTQuMDYgMTguNiwxMi45QzE4LjYsMTEuNzQgMTcuNjYsMTAuOCAxNi41LDEwLjhBMi4xLDIuMSAwIDAsMCAxNC40LDEyLjlMMTQuNSwxMy42MUwxMywxNS4xM1Y5LjY1QzEzLjY2LDkuMjkgMTQuMSw4LjYgMTQuMSw3LjhBMi4xLDIuMSAwIDAsMCAxMiw1LjdBMi4xLDIuMSAwIDAsMCA5LjksNy44QzkuOSw4LjYgMTAuMzQsOS4yOSAxMSw5LjY1VjE1LjEzTDkuNSwxMy42MUw5LjYsMTIuOUEyLjEsMi4xIDAgMCwwIDcuNSwxMC44QTIuMSwyLjEgMCAwLDAgNS40LDEyLjlBMi4xLDIuMSAwIDAsMCA3LjUsMTVMOC4yMSwxNC44OEwxMSwxNy42N1YyMUg0VjEzSDIuMjVDMS44MywxMyAxLjQyLDEzIDEuNDIsMTIuNzlDMS40MywxMi41NyAxLjg1LDEyLjE1IDIuMjgsMTEuNzJMMTEsM0MxMS4zMywyLjY3IDExLjY3LDIuMzMgMTIsMi4zM0MxMi4zMywyLjMzIDEyLjY3LDIuNjcgMTMsM0wxNyw3VjZIMTlWOUwyMS43OCwxMS43OEMyMi4xOCwxMi4xOCAyMi41OSwxMi41OSAyMi42LDEyLjhDMjIuNiwxMyAyMi4yLDEzIDIxLjgsMTNNNy41LDEyQTAuOSwwLjkgMCAwLDEgOC40LDEyLjlBMC45LDAuOSAwIDAsMSA3LjUsMTMuOEEwLjksMC45IDAgMCwxIDYuNiwxMi45QTAuOSwwLjkgMCAwLDEgNy41LDEyTTE2LjUsMTJDMTcsMTIgMTcuNCwxMi40IDE3LjQsMTIuOUMxNy40LDEzLjQgMTcsMTMuOCAxNi41LDEzLjhBMC45LDAuOSAwIDAsMSAxNS42LDEyLjlBMC45LDAuOSAwIDAsMSAxNi41LDEyTTEyLDYuOUMxMi41LDYuOSAxMi45LDcuMyAxMi45LDcuOEMxMi45LDguMyAxMi41LDguNyAxMiw4LjdDMTEuNSw4LjcgMTEuMSw4LjMgMTEuMSw3LjhDMTEuMSw3LjMgMTEuNSw2LjkgMTIsNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVBdXRvbWF0aW9uID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xMiw4LjVDMTQuMzQsOC41IDE2LjQ2LDkuNDMgMTgsMTAuOTRMMTYuOCwxMi4xMkMxNS41OCwxMC45MSAxMy44OCwxMC4xNyAxMiwxMC4xN0MxMC4xMiwxMC4xNyA4LjQyLDEwLjkxIDcuMiwxMi4xMkw2LDEwLjk0QzcuNTQsOS40MyA5LjY2LDguNSAxMiw4LjVNMTIsMTEuODNDMTMuNCwxMS44MyAxNC42NywxMi4zOSAxNS42LDEzLjNMMTQuNCwxNC40N0MxMy43OSwxMy44NyAxMi45NCwxMy41IDEyLDEzLjVDMTEuMDYsMTMuNSAxMC4yMSwxMy44NyA5LjYsMTQuNDdMOC40LDEzLjNDOS4zMywxMi4zOSAxMC42LDExLjgzIDEyLDExLjgzTTEyLDE1LjE3QzEyLjk0LDE1LjE3IDEzLjcsMTUuOTEgMTMuNywxNi44M0MxMy43LDE3Ljc1IDEyLjk0LDE4LjUgMTIsMTguNUMxMS4wNiwxOC41IDEwLjMsMTcuNzUgMTAuMywxNi44M0MxMC4zLDE1LjkxIDExLjA2LDE1LjE3IDEyLDE1LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVDaXJjbGUgPSBcIk0xOS4wNyw0LjkzQzE3LjIyLDMgMTQuNjYsMS45NiAxMiwyQzkuMzQsMS45NiA2Ljc5LDMgNC45NCw0LjkzQzMsNi43OCAxLjk2LDkuMzQgMiwxMkMxLjk2LDE0LjY2IDMsMTcuMjEgNC45MywxOS4wNkM2Ljc4LDIxIDkuMzQsMjIuMDQgMTIsMjJDMTQuNjYsMjIuMDQgMTcuMjEsMjEgMTkuMDYsMTkuMDdDMjEsMTcuMjIgMjIuMDQsMTQuNjYgMjIsMTJDMjIuMDQsOS4zNCAyMSw2Ljc4IDE5LjA3LDQuOTNNMTcsMTJWMThIMTMuNVYxM0gxMC41VjE4SDdWMTJINUwxMiw1TDE5LjUsMTJIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUNpcmNsZU91dGxpbmUgPSBcIk0xMiAyMEM3LjYgMjAgNCAxNi40IDQgMTJTNy42IDQgMTIgNCAyMCA3LjYgMjAgMTIgMTYuNCAyMCAxMiAyME0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTEgMTRIMTNWMTdIMTZWMTJIMThMMTIgN0w2IDEySDhWMTdIMTFWMTRcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lQ2l0eSA9IFwiTTAsMjFWMTBMNy41LDVMMTUsMTBWMjFIMTBWMTRINVYyMUgwTTI0LDJWMjFIMTdWOC45M0wxNiw4LjI3VjZIMTRWNi45M0wxMCw0LjI3VjJIMjRNMjEsMTRIMTlWMTZIMjFWMTRNMjEsMTBIMTlWMTJIMjFWMTBNMjEsNkgxOVY4SDIxVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUNpdHlPdXRsaW5lID0gXCJNMTAsMlY0LjI2TDEyLDUuNTlWNEgyMlYxOUgxN1YyMUgyNFYySDEwTTcuNSw1TDAsMTBWMjFIMTVWMTBMNy41LDVNMTQsNlY2LjkzTDE1LjYxLDhIMTZWNkgxNE0xOCw2VjhIMjBWNkgxOE03LjUsNy41TDEzLDExVjE5SDEwVjEzSDVWMTlIMlYxMUw3LjUsNy41TTE4LDEwVjEySDIwVjEwSDE4TTE4LDE0VjE2SDIwVjE0SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVDdXJyZW5jeVVzZCA9IFwiTTEyLDNMMjIsMTJIMTlWMjBINVYxMkgyTDEyLDNNOS4yMiw4LjkzQzguNzUsOS40IDguNSwxMC4wMyA4LjUsMTAuNzVDOC41LDEyLjQzIDEwLjU0LDEzLjA3IDExLjc2LDEzLjQ2QzEzLjI2LDEzLjkzIDEzLjQ3LDE0LjIxIDEzLjUsMTQuMjVDMTMuNSwxNSAxMi4xNSwxNSAxMiwxNVYxNUMxMS4zNywxNSAxMS4wMywxNC44OCAxMC44NiwxNC43OEMxMC42NywxNC42NyAxMC41LDE0LjUgMTAuNSwxNEg4LjVDOC41LDE1LjQzIDkuMjQsMTYuMTYgOS44NSwxNi41QzEwLjE4LDE2LjcgMTAuNTcsMTYuODQgMTEsMTYuOTJWMThIMTNWMTYuOTFDMTQuNTMsMTYuNjEgMTUuNSwxNS42MiAxNS41LDE0LjI1QzE1LjUsMTIuNjcgMTMuODgsMTIuMDMgMTIuMzYsMTEuNTVDMTAuOCwxMS4wNiAxMC41MywxMC43NyAxMC41LDEwLjc1QzEwLjUsMTAuNSAxMC41NywxMC40MSAxMC42NCwxMC4zNEMxMC44NSwxMC4xMyAxMS4zNiwxMCAxMiwxMFYxMEMxMi42OCwxMCAxMy41LDEwLjEzIDEzLjUsMTAuNzVIMTUuNUMxNS41LDkuMzQgMTQuNTYsOC4zNyAxMyw4LjA5VjdIMTFWOC4wOEMxMC4yNiw4LjIxIDkuNjUsOC41IDkuMjIsOC45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRWRpdCA9IFwiTTEyIDNMMiAxMkg1VjIwSDEwVjE0SDE0VjE1LjExTDE5LjQzIDkuNjhMMTIgM00yMS4wNCAxMS4xNEMyMC45IDExLjE0IDIwLjc2IDExLjIgMjAuNjUgMTEuM0wxOS42NSAxMi4zTDIxLjcgMTQuMzVMMjIuNyAxMy4zNUMyMi45MSAxMy4xNCAyMi45MSAxMi43OSAyMi43IDEyLjU4TDIxLjQyIDExLjNDMjEuMzIgMTEuMiAyMS4xOCAxMS4xNCAyMS4wNCAxMS4xNE0xOS4wNiAxMi44OEwxMyAxOC45NFYyMUgxNS4wNkwyMS4xMSAxNC45M0wxOS4wNiAxMi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRWRpdE91dGxpbmUgPSBcIk0xMiAzTDIgMTJINVYyMEgxMVYxNEgxM1YxNi4xMUwxNSAxNC4xMVYxMkg5VjE4SDdWMTAuMTlMMTIgNS42OUwxNyAxMC4xOVYxMi4xMUwxOS40MyA5LjY4TDEyIDNNMjEuMDQgMTEuMTRDMjAuOSAxMS4xNCAyMC43NiAxMS4yIDIwLjY1IDExLjNMMTkuNjUgMTIuM0wyMS43IDE0LjM1TDIyLjcgMTMuMzVDMjIuOTEgMTMuMTQgMjIuOTEgMTIuNzkgMjIuNyAxMi41OEwyMS40MiAxMS4zQzIxLjMyIDExLjIgMjEuMTggMTEuMTQgMjEuMDQgMTEuMTRNMTkuMDYgMTIuODhMMTMgMTguOTRWMjFIMTUuMDZMMjEuMTEgMTQuOTNMMTkuMDYgMTIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUV4cG9ydE91dGxpbmUgPSBcIk0yNCAxM0wyMCA5VjEySDExVjE0SDIwVjE3TTE4IDE2VjIxSDJWMTJIMEwxMCAyTDE4IDEwSDE1TDEwIDVMNCAxMVYxOUgxNlYxNkgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb2QgPSBcIk01LDExSDJMMTIsMkwyMiwxMUgxOVYxNS45MkMxNy45NSwxNS43NSAxNi45MywxNS4zMiAxNiwxNC42N0MxNS4zNywxNS4xMSAxNC43LDE1LjQzIDE0LDE1LjY1VjEzSDEwVjE1LjY1QzkuMywxNS40MyA4LjYzLDE1LjExIDgsMTQuNjdDNy4wNywxNS4zMiA2LjA1LDE1Ljc1IDUsMTUuOTJNMjAsMThDMTguNjEsMTggMTcuMjIsMTcuNTMgMTYsMTYuNjdDMTMuNTYsMTguMzggMTAuNDQsMTguMzggOCwxNi42N0M2Ljc4LDE3LjUzIDUuMzksMTggNCwxOEgyVjIySDIyVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUZsb29yMCA9IFwiTTExLDEwSDEzVjE2SDExVjEwTTIyLDEySDE5VjIwSDVWMTJIMkwxMiwzTDIyLDEyTTE1LDEwQTIsMiAwIDAsMCAxMyw4SDExQTIsMiAwIDAsMCA5LDEwVjE2QTIsMiAwIDAsMCAxMSwxOEgxM0EyLDIgMCAwLDAgMTUsMTZWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUZsb29yMSA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTAsOEgxNFYxOEgxMlYxMEgxMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVGbG9vcjIgPSBcIk0xMiwzTDIsMTJINVYyMEgxOVYxMkgyMkwxMiwzTTksOEgxM0EyLDIgMCAwLDEgMTUsMTBWMTJBMiwyIDAgMCwxIDEzLDE0SDExVjE2SDE1VjE4SDlWMTRBMiwyIDAgMCwxIDExLDEySDEzVjEwSDlWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb3IzID0gXCJNMTIsM0wyMiwxMkgxOVYyMEg1VjEySDJMMTIsM00xNSwxMS41VjEwQzE1LDguODkgMTQuMSw4IDEzLDhIOVYxMEgxM1YxMkgxMVYxNEgxM1YxNkg5VjE4SDEzQTIsMiAwIDAsMCAxNSwxNlYxNC41QTEuNSwxLjUgMCAwLDAgMTMuNSwxM0ExLjUsMS41IDAgMCwwIDE1LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUZsb29yQSA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTEsOEgxM0EyLDIgMCAwLDEgMTUsMTBWMThIMTNWMTVIMTFWMThIOVYxMEM5LDguODkgOS45LDggMTEsOE0xMSwxMFYxM0gxM1YxMEgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb3JCID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM005LDhIMTNBMiwyIDAgMCwxIDE1LDEwVjExLjVBMS41LDEuNSAwIDAsMSAxMy41LDEzQTEuNSwxLjUgMCAwLDEgMTUsMTQuNVYxNkEyLDIgMCAwLDEgMTMsMThIOVY4TTExLDEwVjEySDEzVjEwSDExTTExLDE0VjE2SDEzVjE0SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVGbG9vckcgPSBcIk0xMiwzTDIsMTJINVYyMEgxOVYxMkgyMkwxMiwzTTExLDhIMTVWMTBIMTFWMTZIMTNWMTJIMTVWMTZDMTUsMTcuMTEgMTQuMSwxOCAxMywxOEgxMUEyLDIgMCAwLDEgOSwxNlYxMEM5LDguODkgOS45LDggMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lRmxvb3JMID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM005LDhIMTFWMTZIMTVWMThIOVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVGbG9vck5lZ2F0aXZlMSA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTEsMTVIN1YxM0gxMVYxNU0xNSwxOEgxM1YxMEgxMVY4SDE1VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVHcm91cCA9IFwiTTE3LDE2SDE1VjIySDEyVjE3SDhWMjJINVYxNkgzTDEwLDEwTDE3LDE2TTYsMkwxMCw2SDlWOUg3VjZINVY5SDNWNkgyTDYsMk0xOCwzTDIzLDhIMjJWMTJIMTlWOUgxN1YxMkgxNS4zNEwxNCwxMC44N1Y4SDEzTDE4LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUhlYXJ0ID0gXCJNMiwxMkwxMiwzTDIyLDEySDE5VjIwSDVWMTJIMk0xMiwxOEwxMi43MiwxNy4zNEMxNS4zLDE1IDE3LDEzLjQ2IDE3LDExLjU3QzE3LDEwLjAzIDE1Ljc5LDguODIgMTQuMjUsOC44MkMxMy4zOCw4LjgyIDEyLjU1LDkuMjMgMTIsOS44N0MxMS40NSw5LjIzIDEwLjYyLDguODIgOS43NSw4LjgyQzguMjEsOC44MiA3LDEwLjAzIDcsMTEuNTdDNywxMy40NiA4LjcsMTUgMTEuMjgsMTcuMzRMMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUltcG9ydE91dGxpbmUgPSBcIk0xNSAxM0wxMSA5VjEySDJWMTRIMTFWMTdNMjIgMTJIMjBWMjFINFYxNkg2VjE5SDE4VjExTDEyIDVMNyAxMEg0TDEyIDJMMjIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUxpZ2h0YnVsYiA9IFwiTTEyIDNMMiAxMkg1VjIwSDE5VjEySDIyTTEzIDE4SDExVjE3SDEzTTEzLjUgMTQuNThWMTZIMTAuNVYxNC41OEEzIDMgMCAxIDEgMTMuNSAxNC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lTGlnaHRidWxiT3V0bGluZSA9IFwiTTEyIDJMMiAxMkg0VjIxSDIwVjEySDIyTTEyIDVMMTggMTFWMTlINlYxMU0xMy41IDE0LjU4VjE2SDEwLjVWMTQuNThDOS4wNyAxMy43NSA4LjU3IDExLjkyIDkuNCAxMC41QzEwLjIzIDkuMDUgMTIuMDcgOC41NiAxMy41IDkuMzhTMTUuNDMgMTIuMDUgMTQuNiAxMy41QzE0LjM0IDEzLjk0IDEzLjk2IDE0LjMyIDEzLjUgMTQuNThNMTMgMTdIMTFWMThIMTNWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZUxvY2sgPSBcIk0xMiwzTDIsMTJINVYyMEgxOVYxMkgyMkwxMiwzTTEyLDlBMywzIDAgMCwxIDE1LDEyVjEzSDE2VjE3SDhWMTNIOVYxMkEzLDMgMCAwLDEgMTIsOU0xMiwxMUExLDEgMCAwLDAgMTEsMTJWMTNIMTNWMTJDMTMsMTEuNSAxMi42LDExIDEyLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVMb2NrT3BlbiA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTIsOEEzLDMgMCAwLDEgMTUsMTFIMTNBMSwxIDAgMCwwIDEyLDEwQTEsMSAwIDAsMCAxMSwxMVYxM0gxNlYxN0g4VjEzSDlWMTFBMywzIDAgMCwxIDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZU1hcE1hcmtlciA9IFwiTTEyLDNMMiwxMkg1VjIwSDE5VjEySDIyTDEyLDNNMTIsNy43QzE0LjEsNy43IDE1LjgsOS40IDE1LjgsMTEuNUMxNS44LDE0LjUgMTIsMTggMTIsMThDMTIsMTggOC4yLDE0LjUgOC4yLDExLjVDOC4yLDkuNCA5LjksNy43IDEyLDcuN00xMiwxMEExLjUsMS41IDAgMCwwIDEwLjUsMTEuNUExLjUsMS41IDAgMCwwIDEyLDEzQTEuNSwxLjUgMCAwLDAgMTMuNSwxMS41QTEuNSwxLjUgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZU1pbnVzID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xNiwxM1YxNUg4VjEzSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVNaW51c091dGxpbmUgPSBcIk0xMiAyTDIgMTJINFYyMUgyMFYxMkgyMk0xMiA1TDE4IDExVjE5SDZWMTFNMTYgMTNWMTVIOFYxM0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lTW9kZXJuID0gXCJNNiwyMVY4QTIsMiAwIDAsMSA4LDZMMTYsM1Y2QTIsMiAwIDAsMSAxOCw4VjIxSDEyVjE2SDhWMjFINk0xNCwxOUgxNlYxNkgxNFYxOU04LDEzSDEwVjlIOFYxM00xMiwxM0gxNlY5SDEyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVPdXRsaW5lID0gXCJNMTIgNS42OUwxNyAxMC4xOVYxOEgxNVYxMkg5VjE4SDdWMTAuMTlMMTIgNS42OU0xMiAzTDIgMTJINVYyMEgxMVYxNEgxM1YyMEgxOVYxMkgyMkwxMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVQbHVzID0gXCJNMTIsM0wyLDEySDVWMjBIMTlWMTJIMjJMMTIsM00xMSwxMEgxM1YxM0gxNlYxNUgxM1YxOEgxMVYxNUg4VjEzSDExVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVQbHVzT3V0bGluZSA9IFwiTTEyIDJMMiAxMkg0VjIxSDIwVjEySDIyTTEyIDVMMTggMTFWMTlINlYxMU0xMSAxMEgxM1YxM0gxNlYxNUgxM1YxOEgxMVYxNUg4VjEzSDExVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVSZW1vdmUgPSBcIk0xMiAzTDIgMTJINVYyMEgxOVYxMkgyMkwxMiAzTTE1LjU0IDE2LjEyTDE0LjEyIDE3LjU0TDEyIDE1LjQxTDkuODggMTcuNTRMOC40NyAxNi4xMkwxMC41OSAxNEw4LjQ3IDExLjg4TDkuODggMTAuNDdMMTIgMTIuNTlMMTQuMTIgMTAuNDdMMTUuNTQgMTEuODhMMTMuNDEgMTRMMTUuNTQgMTYuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVJlbW92ZU91dGxpbmUgPSBcIk0xMiAyTDIgMTJINFYyMUgyMFYxMkgyMk0xMiA1TDE4IDExVjE5SDZWMTFNMTQuMTIgMTAuNDZMMTUuNTQgMTEuODhMMTMuNDEgMTRMMTUuNTQgMTYuMTJMMTQuMTIgMTcuNTRMMTIgMTUuNDFMOS44OCAxNy41NEw4LjQ3IDE2LjEyTDEwLjU5IDE0TDguNDcgMTEuODhMOS44OCAxMC40N0wxMiAxMi41OUwxNC4xMiAxMC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lUm9vZiA9IFwiTTE5IDE2SDIyTDEyIDdMMiAxNkg1TDEyIDkuNjlMMTkgMTZNNyA4LjgxVjdINFYxMS41TDcgOC44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lU2VhcmNoID0gXCJNMTkuMzEgMTguOUMxOS43NSAxOC4yMSAyMCAxNy4zOCAyMCAxNi41QzIwIDE0IDE4IDEyIDE1LjUgMTJTMTEgMTQgMTEgMTYuNSAxMyAyMSAxNS41IDIxQzE2LjM3IDIxIDE3LjE5IDIwLjc1IDE3Ljg4IDIwLjMyTDIxIDIzLjM5TDIyLjM5IDIyTDE5LjMxIDE4LjlNMTUuNSAxOUMxNC4xMiAxOSAxMyAxNy44OCAxMyAxNi41UzE0LjEyIDE0IDE1LjUgMTQgMTggMTUuMTIgMTggMTYuNSAxNi44OCAxOSAxNS41IDE5TTUgMjBWMTJIMkwxMiAzTDIyIDEySDIwLjE4QzE5IDEwLjc3IDE3LjM0IDEwIDE1LjUgMTBDMTEuOTIgMTAgOSAxMi45MiA5IDE2LjVDOSAxNy43OSA5LjM4IDE5IDEwLjAzIDIwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVNlYXJjaE91dGxpbmUgPSBcIk0xOS4zMSAxOC45QzE5Ljc1IDE4LjIxIDIwIDE3LjM4IDIwIDE2LjVDMjAgMTQgMTggMTIgMTUuNSAxMlMxMSAxNCAxMSAxNi41IDEzIDIxIDE1LjUgMjFDMTYuMzcgMjEgMTcuMTkgMjAuNzUgMTcuODggMjAuMzJMMjEgMjMuMzlMMjIuMzkgMjJMMTkuMzEgMTguOU0xNS41IDE5QzE0LjEyIDE5IDEzIDE3Ljg4IDEzIDE2LjVTMTQuMTIgMTQgMTUuNSAxNCAxOCAxNS4xMiAxOCAxNi41IDE2Ljg4IDE5IDE1LjUgMTlNNSAyMFYxMkgyTDEyIDNMMjIgMTJIMjAuMThDMTkuMzMgMTEuMTEgMTguMjMgMTAuNDcgMTcgMTAuMThMMTIgNS42OUw3IDEwLjE5VjE4SDkuMThDOS4zNSAxOC43MiA5LjY0IDE5LjM5IDEwLjAzIDIwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVRoZXJtb21ldGVyID0gXCJNMTIgM0wyIDEySDVWMjBIMTlWMTJIMjJMMTIgM00xMiA4QTEgMSAwIDAgMSAxMyA5VjE0LjI3QTIgMiAwIDAgMSAxNCAxNkEyIDIgMCAwIDEgMTIgMThBMiAyIDAgMCAxIDEwIDE2QTIgMiAwIDAgMSAxMSAxNC4yN1Y5QTEgMSAwIDAgMSAxMiA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvbWVUaGVybW9tZXRlck91dGxpbmUgPSBcIk0xMiAyTDIgMTJINFYyMUgyMFYxMkgyMk0xMiA1TDE4IDExVjE5SDZWMTFNMTIgOEMxMS40NSA4IDExIDguNDUgMTEgOVYxMy4yN0MxMC4zOCAxMy42MyAxMCAxNC4yOSAxMCAxNUMxMCAxNi4xMSAxMC45IDE3IDEyIDE3UzE0IDE2LjExIDE0IDE1QzE0IDE0LjI5IDEzLjYyIDEzLjYzIDEzIDEzLjI3VjlDMTMgOC40NSAxMi41NSA4IDEyIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9tZVZhcmlhbnQgPSBcIk0xMiwzTDIwLDlWMjFIMTVWMTRIOVYyMUg0VjlMMTIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIb21lVmFyaWFudE91dGxpbmUgPSBcIk05LDEzSDE1VjE5SDE4VjEwTDEyLDUuNUw2LDEwVjE5SDlWMTNNNCwyMVY5TDEyLDNMMjAsOVYyMUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvb2sgPSBcIk0xOCw2QzE4LDcuODIgMTYuNzYsOS40MSAxNSw5Ljg2VjE3QTUsNSAwIDAsMSAxMCwyMkE1LDUgMCAwLDEgNSwxN1YxMkwxMCwxN0g3QTMsMyAwIDAsMCAxMCwyMEEzLDMgMCAwLDAgMTMsMTdWOS44NkMxMS4yMyw5LjQgMTAsNy44IDEwLDUuOTdDMTAsMy43NiAxMS44LDIgMTQsMkMxNi4yMiwyIDE4LDMuNzkgMTgsNk0xNCw4QTIsMiAwIDAsMCAxNiw2QTIsMiAwIDAsMCAxNCw0QTIsMiAwIDAsMCAxMiw2QTIsMiAwIDAsMCAxNCw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvb2tPZmYgPSBcIk0xMyw5Ljg2VjExLjE4TDE1LDEzLjE4VjkuODZDMTcuMTQsOS4zMSAxOC40Myw3LjEzIDE3Ljg3LDVDMTcuMzIsMi44NSAxNS4xNCwxLjU2IDEzLDIuMTFDMTAuODYsMi42NyA5LjU3LDQuODUgMTAuMTMsN0MxMC41LDguNCAxMS41OSw5LjUgMTMsOS44Nk0xNCw0QTIsMiAwIDAsMSAxNiw2QTIsMiAwIDAsMSAxNCw4QTIsMiAwIDAsMSAxMiw2QTIsMiAwIDAsMSAxNCw0TTE4LjczLDIyTDE0Ljg2LDE4LjEzQzE0LjIxLDIwLjgxIDExLjUsMjIuNDYgOC44MywyMS44MkM2LjYsMjEuMjggNSwxOS4yOSA1LDE3VjEyTDEwLDE3SDdBMywzIDAgMCwwIDEwLDIwQTMsMyAwIDAsMCAxMywxN1YxNi4yN0wyLDUuMjdMMy4yOCw0TDEzLDEzLjcyTDE1LDE1LjcyTDIwLDIwLjcyTDE4LjczLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcHMgPSBcIk0yMSwxMkMyMSwxMiAxMi41LDEwIDEyLjUsMkMxMi41LDIgMjEsMiAyMSwxMk0zLDEyQzMsMiAxMS41LDIgMTEuNSwyQzExLjUsMTAgMywxMiAzLDEyTTEyLDYuNUMxMiw2LjUgMTMsOC42NiAxNSwxMC41QzE0Ljc2LDE0LjE2IDEyLDE2IDEyLDE2QzEyLDE2IDkuMjQsMTQuMTYgOSwxMC41QzExLDguNjYgMTIsNi41IDEyLDYuNU0yMC43NSwxMy4yNUMyMC43NSwxMy4yNSAyMCwxNyAxOCwxOUMxOCwxOSAxNS41MywxNy4zNiAxNC4zMywxNC44MUMxNS4wNSwxMy41OCAxNS41LDEyLjEyIDE1Ljc1LDExLjEzQzE3LjEzLDEyLjE4IDE4Ljc1LDEzIDIwLjc1LDEzLjI1TTE1LjUsMTguMjVDMTQuNSwyMC4yNSAxMiwyMS43NSAxMiwyMS43NUMxMiwyMS43NSA5LjUsMjAuMjUgOC41LDE4LjI1QzguNSwxOC4yNSA5LjU5LDE3LjM0IDEwLjM1LDE1LjhDMTAuODIsMTYuMzUgMTEuMzYsMTYuNzkgMTIsMTdDMTIuNjQsMTYuNzkgMTMuMTgsMTYuMzUgMTMuNjUsMTUuOEMxNC40MSwxNy4zNCAxNS41LDE4LjI1IDE1LjUsMTguMjVNMy4yNSwxMy4yNUM1LjI1LDEzIDYuODcsMTIuMTggOC4yNSwxMS4xM0M4LjUsMTIuMTIgOC45NSwxMy41OCA5LjY3LDE0LjgxQzguNDcsMTcuMzYgNiwxOSA2LDE5QzQsMTcgMy4yNSwxMy4yNSAzLjI1LDEzLjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcml6b250YWxSb3RhdGVDbG9ja3dpc2UgPSBcIk0xMiAxNEw4IDEwTDQgMTRINy4xQzcuNTYgMTguNTYgOS41OCAyMiAxMiAyMlMxNi40NCAxOC41NiAxNi45IDE0SDE0LjkxQzE0LjU3IDE3LjQ1IDEzLjQgMjAgMTIgMjBTOS40MyAxNy40NSA5LjA5IDE0SDEyTTEyIDRDMTMuNCA0IDE0LjU3IDYuNTUgMTQuOTEgMTBIMTYuOUMxNi40NCA1LjQ0IDE0LjQyIDIgMTIgMkM5Ljg0IDIgOCA0Ljc0IDcuMyA4LjU4TDggNy44OEw5LjIxIDkuMDhDOS42NCA2LjExIDEwLjczIDQgMTIgNE0yMiAxM1YxMUgxMUwxMyAxM0gyMk0yIDEzSDNMNSAxMUgyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcml6b250YWxSb3RhdGVDb3VudGVyY2xvY2t3aXNlID0gXCJNMTIgMTBIOS4wOUM5LjQzIDYuNTUgMTAuNiA0IDEyIDRTMTQuNTcgNi41NSAxNC45MSAxMEgxNi45QzE2LjQ0IDUuNDQgMTQuNDIgMiAxMiAyUzcuNTYgNS40NCA3LjEgMTBINEw4IDE0TDEyIDEwTTEyIDIwQzEwLjczIDIwIDkuNjQgMTcuODkgOS4yMSAxNC45Mkw4IDE2LjEyTDcuMyAxNS40MkM4IDE5LjI2IDkuODQgMjIgMTIgMjJDMTQuNDIgMjIgMTYuNDQgMTguNTYgMTYuOSAxNEgxNC45MUMxNC41NyAxNy40NSAxMy40IDIwIDEyIDIwTTIyIDExSDEzTDExIDEzSDIyVjExTTIgMTNINUwzIDExSDJWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlIb3JzZSA9IFwiTTIyIDZWOS41TDIwLjUgMTBMMTguOTYgNy41NEMxOC44MyA3LjMzIDE4LjUgNy40MiAxOC41IDcuNjdWMTEuMjVDMTguNSAxMi4yMyAxOC4xMSAxMy4xMSAxNy41IDEzLjc4VjIxSDE1VjE1QzE0LjkyIDE1IDE0Ljg0IDE1IDE0Ljc1IDE1QzE0LjU0IDE1IDE0LjMzIDE0Ljk3IDE0LjEzIDE0Ljk0TDkuNjkgMTQuMkw4LjU3IDE2LjIxTDkuNTMgMjFIN0w2IDE2LjI1QzUuOTcgMTUuOTUgNiAxNS42NSA2LjE2IDE1LjM5TDcuMTggMTMuNThDNi4yIDEzLjAzIDUuNTMgMTIgNS41IDEwLjgxQzUuNDYgMTAuOTYgNS40NCAxMS4xOCA1LjQ3IDExLjVDNS41IDExLjk0IDUuNjEgMTIuNTkgNS41NCAxMy4zMUM1LjUgMTQuMDMgNS4xNyAxNC43NyA0Ljc1IDE1LjI2QzQuMzIgMTUuNzUgMy44NSAxNi4wOSAzLjM1IDE2LjM1TDIuNjUgMTUuNjVDMi44NCAxNS4xOCAzLjAzIDE0Ljc2IDMuMDcgMTQuMzdDMy4xMyAxNCAzLjA2IDEzLjcgMi45NSAxMy40M0wyLjQyIDEyLjNDMi4yMSAxMS43OSAxLjk1IDExLjA1IDIgMTAuMThDMi4wMyA5LjMzIDIuNSA4LjIyIDMuMzkgNy42MUM0LjI5IDcgNS4yNiA2LjkyIDYuMDUgNy4wOEM2LjU1IDcuMTggNy4wNiA3LjQyIDcuNSA3Ljc2QzcuODcgNy41OSA4LjMgNy41IDguNzUgNy41SDE0LjVWN0MxNC41IDQuNzkgMTYuMjkgMyAxOC41IDNIMjJMMjEuMTEgNC4zNEMyMS42NSA0LjcgMjIgNS4zMSAyMiA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvcnNlSHVtYW4gPSBcIk0xMCAzLjVDMTAgMi42NyAxMC42NyAyIDExLjUgMlMxMyAyLjY3IDEzIDMuNSAxMi4zMyA1IDExLjUgNSAxMCA0LjMzIDEwIDMuNU0yMiA4VjExLjVMMjAuOTcgMTEuODVDMjAuOCAxMy4wNiAxOS43NiAxNCAxOC41IDE0SDE4LjQyQzE4LjI4IDE0LjY4IDE3Ljk1IDE1LjI5IDE3LjUgMTUuNzhWMjJIMTVWMTdDMTQuOTIgMTcgMTQuODQgMTcgMTQuNzUgMTdDMTQuNTQgMTcgMTQuMzMgMTYuOTcgMTQuMTMgMTYuOTRMOS42OSAxNi4yTDguNTcgMTguMjFMOS4zMiAyMkg2Ljc4TDYgMTguMjVDNS45NyAxNy45NSA2IDE3LjY1IDYuMTYgMTcuMzlMNy4xOCAxNS41OEM2LjIgMTUuMDMgNS41MyAxNCA1LjUgMTIuODFDNS40NiAxMi45NiA1LjQ0IDEzLjE4IDUuNDcgMTMuNUM1LjUgMTMuOTQgNS42MSAxNC41OSA1LjU0IDE1LjMxQzUuNSAxNi4wMyA1LjE3IDE2Ljc3IDQuNzUgMTcuMjZDNC4zMiAxNy43NSAzLjg1IDE4LjA5IDMuMzUgMTguMzVMMi42NSAxNy42NUMyLjg0IDE3LjE4IDMuMDMgMTYuNzYgMy4wNyAxNi4zN0MzLjEzIDE2IDMuMDYgMTUuNyAyLjk1IDE1LjQzTDIuNDIgMTQuM0MyLjIxIDEzLjc5IDEuOTUgMTMuMDUgMiAxMi4xOEMyLjAzIDExLjMzIDIuNSAxMC4yMiAzLjM5IDkuNjFDNC4yOSA5IDUuMjYgOC45MSA2LjA1IDkuMDhDNi41NSA5LjE4IDcuMDYgOS40MiA3LjUgOS43NkM3Ljg3IDkuNTkgOC4zIDkuNSA4Ljc1IDkuNUg5VjguMTFDOSA3LjExIDkuNjggNi4xOSAxMC42NiA2LjAzQzExLjkyIDUuODIgMTMgNi43OSAxMyA4VjkuNUgxNC41VjlDMTQuNSA2Ljc5IDE2LjI5IDUgMTguNSA1SDIyTDIxLjExIDYuMzRDMjEuNjUgNi43IDIyIDcuMzEgMjIgOE0yMCAxMS4yTDE4Ljk2IDkuNTRDMTguODMgOS4zMyAxOC41IDkuNDIgMTguNSA5LjY3VjEzQzE5LjMzIDEzIDIwIDEyLjMzIDIwIDExLjVWMTEuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIb3JzZVZhcmlhbnQgPSBcIk0yMCA4VjE2TDE3IDE3TDEzLjkxIDExLjVDMTMuNjUgMTEuMDQgMTIuOTIgMTEuMjcgMTMgMTEuODFMMTQgMjFMNCAxN0w1LjE1IDguOTRDNS42NCA1LjUzIDguNTYgMyAxMiAzSDIwTDE4LjQyIDUuMzdDMTkuMzYgNS44OCAyMCA2Ljg2IDIwIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9yc2VzaG9lID0gXCJNMTksNEgyMFYxSDE2VjRDMTYsNCAxOCw4IDE4LDEyQzE4LDE2IDE2LDE5IDEyLDE5QzgsMTkgNiwxNiA2LDEyQzYsOCA4LDQgOCw0VjFINFY0SDVDNSw0IDIsOCAyLDE0QzIsMTkgNywyMyAxMiwyM0MxNywyMyAyMiwxOSAyMiwxNEMyMiw4IDE5LDQgMTksNE00LDEzQzMuNCwxMyAzLDEyLjYgMywxMkMzLDExLjQgMy40LDExIDQsMTFDNC42LDExIDUsMTEuNCA1LDEyQzUsMTIuNiA0LjYsMTMgNCwxM002LDE5QzUuNCwxOSA1LDE4LjYgNSwxOEM1LDE3LjQgNS40LDE3IDYsMTdDNi42LDE3IDcsMTcuNCA3LDE4QzcsMTguNiA2LjYsMTkgNiwxOU0xMiwyMkMxMS40LDIyIDExLDIxLjYgMTEsMjFDMTEsMjAuNCAxMS40LDIwIDEyLDIwQzEyLjYsMjAgMTMsMjAuNCAxMywyMUMxMywyMS42IDEyLjYsMjIgMTIsMjJNMTgsMTlDMTcuNCwxOSAxNywxOC42IDE3LDE4QzE3LDE3LjQgMTcuNCwxNyAxOCwxN0MxOC42LDE3IDE5LDE3LjQgMTksMThDMTksMTguNiAxOC42LDE5IDE4LDE5TTIwLDEzQzE5LjQsMTMgMTksMTIuNiAxOSwxMkMxOSwxMS40IDE5LjQsMTEgMjAsMTFDMjAuNiwxMSAyMSwxMS40IDIxLDEyQzIxLDEyLjYgMjAuNiwxMyAyMCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIb3NwaXRhbCA9IFwiTTE4IDE0SDE0VjE4SDEwVjE0SDZWMTBIMTBWNkgxNFYxMEgxOFwiO1xyXG5leHBvcnQgdmFyIG1kaUhvc3BpdGFsQm94ID0gXCJNMTgsMTRIMTRWMThIMTBWMTRINlYxMEgxMFY2SDE0VjEwSDE4TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvc3BpdGFsQm94T3V0bGluZSA9IFwiTTE4IDE0SDE0VjE4SDEwVjE0SDZWMTBIMTBWNkgxNFYxMEgxOE0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgyMEMyMS4xIDIyIDIyIDIxLjEgMjIgMjBWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMjAgMjBINFY0SDIwVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvc3BpdGFsQnVpbGRpbmcgPSBcIk0yLDIyVjdBMSwxIDAgMCwxIDMsNkg3VjJIMTdWNkgyMUExLDEgMCAwLDEgMjIsN1YyMkgxNFYxN0gxMFYyMkgyTTksNFYxMEgxMVY4SDEzVjEwSDE1VjRIMTNWNkgxMVY0SDlNNCwyMEg4VjE3SDRWMjBNNCwxNUg4VjEySDRWMTVNMTYsMjBIMjBWMTdIMTZWMjBNMTYsMTVIMjBWMTJIMTZWMTVNMTAsMTVIMTRWMTJIMTBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG9zcGl0YWxNYXJrZXIgPSBcIk0xMiwyQzE1Ljg2LDIgMTksNS4xMyAxOSw5QzE5LDE0LjI1IDEyLDIyIDEyLDIyQzEyLDIyIDUsMTQuMjUgNSw5QTcsNyAwIDAsMSAxMiwyTTksNlYxMkgxMVYxMEgxM1YxMkgxNVY2SDEzVjhIMTFWNkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUhvdFR1YiA9IFwiTTcsNEEyLDIgMCAwLDEgOSw2QTIsMiAwIDAsMSA3LDhBMiwyIDAgMCwxIDUsNkEyLDIgMCAwLDEgNyw0TTExLjE1LDEySDIyVjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjEySDVWMTEuMjVDNSwxMCA2LDkgNy4yNSw5SDcuMjhDNy42Miw5IDcuOTUsOS4wOSA4LjI0LDkuMjNDOC41LDkuMzUgOC43NCw5LjUgOC45Myw5LjczTDEwLjMzLDExLjI4QzEwLjU2LDExLjU0IDEwLjg0LDExLjc4IDExLjE1LDEyTTcsMjBWMTRINVYyMEg3TTExLDIwVjE0SDlWMjBIMTFNMTUsMjBWMTRIMTNWMjBIMTVNMTksMjBWMTRIMTdWMjBIMTlNMTguNjUsNS44NkMxOS42OCw2Ljg2IDIwLjE2LDguMjEgMTkuOTUsOS41N0wxOS44OSwxMEgxOEwxOC4wOSw5LjQxQzE4LjI0LDguNjIgMTgsNy44MyAxNy40Miw3LjIxTDE3LjM1LDcuMTVDMTYuMzIsNi4xNCAxNS44NSw0Ljc5IDE2LjA1LDMuNDNMMTYuMTEsM0gxOEwxNy45MSwzLjU5QzE3Ljc2LDQuMzggMTgsNS4xNyAxOC41OCw1Ljc5TDE4LjY1LDUuODZNMTQuNjUsNS44NkMxNS42OCw2Ljg2IDE2LjE2LDguMjEgMTUuOTUsOS41N0wxNS44OSwxMEgxNEwxNC4wOSw5LjQxQzE0LjI0LDguNjIgMTQsNy44MyAxMy40Miw3LjIxTDEzLjM1LDcuMTVDMTIuMzIsNi4xNCAxMS44NSw0Ljc5IDEyLjA1LDMuNDNMMTIuMTEsM0gxNEwxMy45MSwzLjU5QzEzLjc2LDQuMzggMTQsNS4xNyAxNC41OCw1Ljc5TDE0LjY1LDUuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSG91cnMyNCA9IFwiTTEzIDIuMDVWNC4wN0MxNi45NSA0LjU2IDIwIDcuOTIgMjAgMTJDMjAgMTUuMjEgMTguMDggMTggMTUuMjggMTkuMjhMMTMgMTdWMjJIMThMMTYuNzggMjAuNzhDMTkuOTEgMTkuMDcgMjIgMTUuNzYgMjIgMTJDMjIgNi44MiAxOC4wNSAyLjU1IDEzIDIuMDVNMTEgMkM5LjA1IDIuMiA3LjIgMi45NiA1LjY4IDQuMjFMNy4xIDUuNjNDOC4yMyA0Ljc1IDkuNTggNC4yIDExIDRWMk00LjIgNS42OEMyLjk2IDcuMiAyLjIgOS4wNSAyIDExSDRDNC4xOSA5LjU4IDQuNzUgOC4yMyA1LjYzIDcuMUw0LjIgNS42OE02IDhWMTBIOVYxMUg4QzYuOSAxMSA2IDExLjkgNiAxM1YxNkgxMVYxNEg4VjEzSDlDMTAuMTEgMTMgMTEgMTIuMTEgMTEgMTFWMTBDMTEgOC45IDEwLjExIDggOSA4SDZNMTIgOFYxM0gxNVYxNkgxN1YxM0gxOFYxMUgxN1Y4SDE1VjExSDE0VjhIMTJNMiAxM0MyLjIgMTQuOTUgMi45NyAxNi44IDQuMjIgMTguMzJMNS42NCAxNi45QzQuNzYgMTUuNzcgNC4yIDE0LjQyIDQgMTNIMk03LjExIDE4LjM3TDUuNjggMTkuNzlDNy4yIDIxLjAzIDkuMDUgMjEuOCAxMSAyMlYyMEM5LjU4IDE5LjgxIDguMjQgMTkuMjUgNy4xMSAxOC4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlIdWJzcG90ID0gXCJNMTcuMSw4LjZWNi4yQzE3LjcsNS45IDE4LjIsNS4zIDE4LjIsNC42VjQuNUMxOC4yLDMuNSAxNy40LDIuNyAxNi40LDIuN0gxNi4zQzE1LjMsMi43IDE0LjUsMy41IDE0LjUsNC41VjQuNkMxNC41LDUuMyAxNC45LDUuOSAxNS42LDYuMlY4LjZDMTQuNyw4LjcgMTMuOCw5LjEgMTMuMSw5LjdMNi41LDQuNkM2LjgsMy41IDYuMSwyLjMgNSwyLjFDMy45LDEuOSAyLjgsMi40IDIuNSwzLjVDMi4yLDQuNiAyLjksNS44IDQsNi4xQzQuNSw2LjIgNS4xLDYuMiA1LjYsNS45TDEyLDEwLjlDMTAuOCwxMi43IDEwLjgsMTUgMTIuMSwxNi44TDEwLjEsMTguOEM5LjksMTguOCA5LjgsMTguNyA5LjYsMTguN0M4LjcsMTguNyA3LjksMTkuNSA3LjksMjAuNEM3LjksMjEuMyA4LjcsMjIgOS42LDIyQzEwLjUsMjIgMTEuMywyMS4yIDExLjMsMjAuM1YyMC4zQzExLjMsMjAuMSAxMS4zLDIwIDExLjIsMTkuOEwxMy4xLDE3LjlDMTUuNCwxOS42IDE4LjcsMTkuMiAyMC40LDE2LjlDMjIuMSwxNC42IDIxLjcsMTEuMyAxOS40LDkuNkMxOC44LDkuMSAxOCw4LjcgMTcuMSw4LjZNMTYuMywxNi40QzE0LjgsMTYuNCAxMy42LDE1LjIgMTMuNiwxMy43QzEzLjYsMTIuMiAxNC44LDExIDE2LjMsMTFDMTcuOCwxMSAxOSwxMi4yIDE5LDEzLjdDMTksMTUuMiAxNy44LDE2LjQgMTYuMywxNi40XCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVsdSA9IFwiTTE5LjUsMTIuOFYyMkgxNC43VjEzLjlDMTQuNywxMy4yIDE0LjEsMTIuNiAxMy40LDEyLjZIMTAuNUM5LjgsMTIuNiA5LjIsMTMuMiA5LjIsMTMuOVYyMkg0LjVWMkg5LjNWOC40QzkuNiw4LjMgOS45LDguMiAxMC4yLDguMkgxNUMxNy41LDguMiAxOS41LDEwLjMgMTkuNSwxMi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuID0gXCJNMjEsOUgxNVYyMkgxM1YxNkgxMVYyMkg5VjlIM1Y3SDIxTTEyLDJBMiwyIDAgMCwxIDE0LDRBMiwyIDAgMCwxIDEyLDZDMTAuODksNiAxMCw1LjEgMTAsNEMxMCwyLjg5IDEwLjg5LDIgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkJhYnlDaGFuZ2luZ1RhYmxlID0gXCJNNi41IDYuMDhDNS43MiA2LjEyIDUgNi42MiA0LjcyIDcuNEwzIDEyLjEzVjIySDdWMTIuODRMOC40MiA4Ljk0TDEwLjcgMTBIMTRWOEgxMS4xNUw3LjI5IDYuMkM3LjAzIDYuMTEgNi43NiA2LjA3IDYuNSA2LjA4TTkgMTdIMjFWMTlIOU0xMCAzLjVBMiAyIDAgMCAxIDggNS41QTIgMiAwIDAgMSA2IDMuNUEyIDIgMCAwIDEgOCAxLjVBMiAyIDAgMCAxIDEwIDMuNU0yMSAxNC41QTEuNSAxLjUgMCAwIDEgMTkuNSAxNkExLjUgMS41IDAgMCAxIDE4IDE0LjVBMS41IDEuNSAwIDAgMSAxOS41IDEzQTEuNSAxLjUgMCAwIDEgMjEgMTQuNU05IDExVjEzSDExVjE0QzExIDE1LjExIDExLjg5IDE2IDEzIDE2SDE1QzE2LjExIDE2IDE3IDE1LjExIDE3IDE0VjExSDE1VjEzSDEzVjEyQTEgMSAwIDAgMCAxMiAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNhbmUgPSBcIk0xOCAxMi4yNFYyMkgxNy4wNlYxMi4yNEMxNy4wNiAxMi4wOSAxNyAxMiAxNi45MyAxMS44OUMxNi44NCAxMS44IDE2Ljc0IDExLjc2IDE2LjYyIDExLjc2QzE2LjQ3IDExLjc2IDE2LjM2IDExLjggMTYuMjcgMTEuODlDMTYuMTggMTIgMTYuMTQgMTIuMSAxNi4xNCAxMi4yNFYxMy4xNkgxNS4yM1YxMi41QzE0LjUzIDEyLjMzIDEzLjkgMTIuMDQgMTMuMzUgMTEuNjNDMTIuOCAxMS4yMiAxMi4zNCAxMC43NCAxMS45NiAxMC4xOUwxMS42MSAxMS4zOUMxMS41IDExLjgxIDExLjUgMTIuMjQgMTEuNSAxMi42OEwxMS41IDEzTDExLjUgMTMuMzNMMTMuMzUgMTUuOTRWMjJIMTEuNVYxNy4zNEw5LjgyIDE1TDkuNjUgMTguMjVMNi44NiAyMkw1LjM4IDIwLjg3TDcuNzcgMTcuNjRWMTIuNjhDNy43NyAxMi4xNSA3LjgyIDExLjYzIDcuOTEgMTEuMTFMOC4yNSA5LjU0TDYuODYgMTAuMzJWMTMuNjNINVY5LjIzTDEwIDYuNEMxMC4yOSA2LjI2IDEwLjU5IDYuMTggMTAuOTEgNi4xOEMxMS4yMyA2LjE4IDExLjU0IDYuMjcgMTEuODMgNi40NEMxMi4xNSA2LjYyIDEyLjM5IDYuODggMTIuNTcgNy4yM0wxMy4zMSA4LjhDMTMuNiA5LjM4IDE0LjA0IDkuODcgMTQuNjQgMTAuMjZDMTUuMjMgMTAuNjUgMTUuODkgMTAuODUgMTYuNjIgMTAuODVDMTcgMTAuODUgMTcuMzIgMTEgMTcuNiAxMS4yNEMxNy44OCAxMS41IDE4IDExLjgzIDE4IDEyLjI0TTEyIDJDMTMuMTEgMiAxNCAyLjkgMTQgNEMxNCA1LjExIDEzLjExIDYgMTIgNkMxMC45IDYgMTAgNS4xMSAxMCA0QzEwIDIuOSAxMC45IDIgMTIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNhcGFjaXR5RGVjcmVhc2UgPSBcIk0xNiA0QzE2IDIuOSAxNi45IDIgMTggMlMyMCAyLjkgMjAgNCAxOS4xIDYgMTggNiAxNiA1LjEgMTYgNE0yMC43OCA3LjU4QzE5LjkzIDcuMjEgMTkgNyAxOCA3QzE3LjMzIDcgMTYuNjkgNy4xIDE2LjA4IDcuMjhDMTYuNjYgNy44MyAxNyA4LjYgMTcgOS40M1YxMEgyMlY5LjQzQzIyIDguNjIgMjEuNSA3LjkgMjAuNzggNy41OE02IDZDNy4xIDYgOCA1LjEgOCA0UzcuMSAyIDYgMiA0IDIuOSA0IDQgNC45IDYgNiA2TTcuOTIgNy4yOEM3LjMxIDcuMSA2LjY3IDcgNiA3QzUgNyA0LjA3IDcuMjEgMy4yMiA3LjU4QzIuNSA3LjkgMiA4LjYyIDIgOS40M1YxMEg3VjkuNDNDNyA4LjYgNy4zNCA3LjgzIDcuOTIgNy4yOE0xMCA0QzEwIDIuOSAxMC45IDIgMTIgMlMxNCAyLjkgMTQgNCAxMy4xIDYgMTIgNiAxMCA1LjEgMTAgNE0xNiAxMEg4VjkuNDNDOCA4LjYyIDguNSA3LjkgOS4yMiA3LjU4QzEwLjA3IDcuMjEgMTEgNyAxMiA3QzEzIDcgMTMuOTMgNy4yMSAxNC43OCA3LjU4QzE1LjUgNy45IDE2IDguNjIgMTYgOS40M1YxME0xNSAxNkMxNSAxNC45IDE1LjkgMTQgMTcgMTRTMTkgMTQuOSAxOSAxNiAxOC4xIDE4IDE3IDE4IDE1IDE3LjEgMTUgMTZNMjEgMjJIMTNWMjEuNDNDMTMgMjAuNjIgMTMuNSAxOS45IDE0LjIyIDE5LjU4QzE1LjA3IDE5LjIxIDE2IDE5IDE3IDE5QzE4IDE5IDE4LjkzIDE5LjIxIDE5Ljc4IDE5LjU4QzIwLjUgMTkuOSAyMSAyMC42MiAyMSAyMS40M1YyMk01IDE2QzUgMTQuOSA1LjkgMTQgNyAxNFM5IDE0LjkgOSAxNiA4LjEgMTggNyAxOCA1IDE3LjEgNSAxNk0xMSAyMkgzVjIxLjQzQzMgMjAuNjIgMy41IDE5LjkgNC4yMiAxOS41OEM1LjA3IDE5LjIxIDYgMTkgNyAxOUM4IDE5IDguOTMgMTkuMjEgOS43OCAxOS41OEMxMC41IDE5LjkgMTEgMjAuNjIgMTEgMjEuNDNWMjJNMTIuNzUgMTNWMTFIMTEuMjVWMTNIOUwxMiAxNkwxNSAxM0gxMi43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNhcGFjaXR5SW5jcmVhc2UgPSBcIk0xNiA0QzE2IDIuOSAxNi45IDIgMTggMkMxOS4xIDIgMjAgMi45IDIwIDRDMjAgNS4xIDE5LjEgNiAxOCA2QzE2LjkgNiAxNiA1LjEgMTYgNE0yMC43OCA3LjU4QzE5LjkzIDcuMjEgMTkgNyAxOCA3QzE3LjMzIDcgMTYuNjkgNy4xIDE2LjA4IDcuMjhDMTYuNjYgNy44MyAxNyA4LjYgMTcgOS40M1YxMEgyMlY5LjQzQzIyIDguNjIgMjEuNSA3LjkgMjAuNzggNy41OE02IDZDNy4xIDYgOCA1LjEgOCA0QzggMi45IDcuMSAyIDYgMkM0LjkgMiA0IDIuOSA0IDRDNCA1LjEgNC45IDYgNiA2TTcuOTIgNy4yOEM3LjMxIDcuMSA2LjY3IDcgNiA3QzUgNyA0LjA3IDcuMjEgMy4yMiA3LjU4QzIuNSA3LjkgMiA4LjYyIDIgOS40M1YxMEg3VjkuNDNDNyA4LjYgNy4zNCA3LjgzIDcuOTIgNy4yOE0xMCA0QzEwIDIuOSAxMC45IDIgMTIgMkMxMy4xIDIgMTQgMi45IDE0IDRDMTQgNS4xIDEzLjEgNiAxMiA2QzEwLjkgNiAxMCA1LjEgMTAgNE0xNiAxMEg4VjkuNDNDOCA4LjYyIDguNSA3LjkgOS4yMiA3LjU4QzEwLjA3IDcuMjEgMTEgNyAxMiA3QzEzIDcgMTMuOTMgNy4yMSAxNC43OCA3LjU4QzE1LjUgNy45IDE2IDguNjIgMTYgOS40M00xNSAxNkMxNSAxNC45IDE1LjkgMTQgMTcgMTRDMTguMSAxNCAxOSAxNC45IDE5IDE2QzE5IDE3LjEgMTguMSAxOCAxNyAxOEMxNS45IDE4IDE1IDE3LjEgMTUgMTZNMjEgMjJIMTNWMjEuNDNDMTMgMjAuNjIgMTMuNSAxOS45IDE0LjIyIDE5LjU4QzE1LjA3IDE5LjIxIDE2IDE5IDE3IDE5QzE4IDE5IDE4LjkzIDE5LjIxIDE5Ljc4IDE5LjU4QzIwLjUgMTkuOSAyMSAyMC42MiAyMSAyMS40M001IDE2QzUgMTQuOSA1LjkgMTQgNyAxNEM4LjEgMTQgOSAxNC45IDkgMTZDOSAxNy4xIDguMSAxOCA3IDE4QzUuOSAxOCA1IDE3LjEgNSAxNk0xMSAyMkgzVjIxLjQzQzMgMjAuNjIgMy41IDE5LjkgNC4yMiAxOS41OEM1LjA3IDE5LjIxIDYgMTkgNyAxOUM4IDE5IDguOTMgMTkuMjEgOS43OCAxOS41OEMxMC41IDE5LjkgMTEgMjAuNjIgMTEgMjEuNDNNMTIuNzUgMTRWMTZIMTEuMjVWMTRIOUwxMiAxMUwxNSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkNoaWxkID0gXCJNMTIsMkEzLDMgMCAwLDEgMTUsNUEzLDMgMCAwLDEgMTIsOEEzLDMgMCAwLDEgOSw1QTMsMyAwIDAsMSAxMiwyTTExLDIySDhWMTZINlY5SDE4VjE2SDE2VjIySDEzVjE4SDExVjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRWRpdCA9IFwiTTE5LjA3IDE0Ljg4TDIxLjEyIDE2LjkzTDE1LjA2IDIzSDEzVjIwLjk0TDE5LjA3IDE0Ljg4TTIxLjA0IDEzLjEzQzIxLjE4IDEzLjEzIDIxLjMxIDEzLjE5IDIxLjQyIDEzLjNMMjIuNyAxNC41OEMyMi45MiAxNC43OSAyMi45MiAxNS4xNCAyMi43IDE1LjM1TDIxLjcgMTYuMzVMMTkuNjUgMTQuM0wyMC42NSAxMy4zQzIwLjc2IDEzLjE5IDIwLjkgMTMuMTMgMjEuMDQgMTMuMTNNMjEgOUgxNVYxNkwxMyAxOFYxNkgxMVYyMkg5VjlIM1Y3SDIxVjlNMTIgMkMxMy4xIDIgMTQgMi45IDE0IDRDMTQgNS4xIDEzLjEgNiAxMiA2QzEwLjkgNiAxMCA1LjEgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5GZW1hbGUgPSBcIk0xMiwyQTIsMiAwIDAsMSAxNCw0QTIsMiAwIDAsMSAxMiw2QTIsMiAwIDAsMSAxMCw0QTIsMiAwIDAsMSAxMiwyTTEwLjUsMjJWMTZINy41TDEwLjA5LDguNDFDMTAuMzQsNy41OSAxMS4xLDcgMTIsN0MxMi45LDcgMTMuNjYsNy41OSAxMy45MSw4LjQxTDE2LjUsMTZIMTMuNVYyMkgxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRmVtYWxlQm95ID0gXCJNNy41LDJBMiwyIDAgMCwxIDkuNSw0QTIsMiAwIDAsMSA3LjUsNkEyLDIgMCAwLDEgNS41LDRBMiwyIDAgMCwxIDcuNSwyTTYsMjJWMTZIM0w1LjYsOC40QzUuOSw3LjYgNi42LDcgNy41LDdDOC40LDcgOS4yLDcuNiA5LjQsOC40TDEyLDE2SDlWMjJINk0xNC41LDEyQTIsMiAwIDAsMSAxNi41LDEwQTIsMiAwIDAsMSAxOC41LDEyQTIsMiAwIDAsMSAxNi41LDE0QTIsMiAwIDAsMSAxNC41LDEyTTEzLjUsMTVIMTkuNVYxOUgxOFYyMkgxNVYxOUgxMy41VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRmVtYWxlRGFuY2UgPSBcIk0xNyAxN0gxNVYyM0gxM1YxN0gxMC44OEw5LjM0IDE4LjkzTDExLjcxIDIxLjI5TDEwLjI5IDIyLjcxTDcuOTMgMjAuMzRDNy41OCAyMCA3LjM4IDE5LjUzIDcuMzUgMTkuMDRDNy4zMiAxOC41NSA3LjQ3IDE4LjA2IDcuNzggMTcuNjhMOC4zMiAxN0g3TDkgMTNWMTBDOC4zOCAxMC40NyA3Ljg4IDExLjA3IDcuNTMgMTEuNzZDNy4xOCAxMi40NiA3IDEzLjIyIDcgMTRINUM1IDEyLjE0IDUuNzQgMTAuMzYgNy4wNSA5LjA1QzguMzYgNy43NCAxMC4xNCA3IDEyIDdDMTMuMzMgNyAxNC42IDYuNDcgMTUuNTQgNS41NEMxNi40NyA0LjYgMTcgMy4zMyAxNyAySDE5QzE5IDMuMzIgMTguNjIgNC42MiAxNy45MSA1LjczQzE3LjIgNi44NSAxNi4yIDcuNzQgMTUgOC4zMVYxM0wxNyAxN00xNCA0QzE0IDQuNCAxMy44OCA0Ljc4IDEzLjY2IDUuMTFDMTMuNDQgNS40NCAxMy4xMyA1LjcgMTIuNzcgNS44NUMxMi40IDYgMTIgNi4wNCAxMS42MSA1Ljk2QzExLjIyIDUuODggMTAuODcgNS42OSAxMC41OSA1LjQxQzEwLjMxIDUuMTMgMTAuMTIgNC43OCAxMC4wNCA0LjM5QzkuOTYgNCAxMCAzLjYgMTAuMTUgMy4yNEMxMC4zIDIuODcgMTAuNTYgMi41NiAxMC44OSAyLjM0QzExLjIyIDIuMTIgMTEuNiAyIDEyIDJDMTIuNTMgMiAxMy4wNCAyLjIxIDEzLjQxIDIuNTlDMTMuNzkgMi45NiAxNCAzLjQ3IDE0IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5GZW1hbGVGZW1hbGUgPSBcIk03LjUsMkEyLDIgMCAwLDEgOS41LDRBMiwyIDAgMCwxIDcuNSw2QTIsMiAwIDAsMSA1LjUsNEEyLDIgMCAwLDEgNy41LDJNNiwyMlYxNkgzTDUuNiw4LjRDNS45LDcuNiA2LjYsNyA3LjUsN0M4LjQsNyA5LjIsNy42IDkuNCw4LjRMMTIsMTZMMTQuNiw4LjRDMTQuOSw3LjYgMTUuNiw3IDE2LjUsN0MxNy40LDcgMTguMiw3LjYgMTguNCw4LjRMMjEsMTZIMThWMjJIMTVWMTZIMTJMOSwxNlYyMkg2TTE2LjUsMkEyLDIgMCAwLDEgMTguNSw0QTIsMiAwIDAsMSAxNi41LDZBMiwyIDAgMCwxIDE0LjUsNEEyLDIgMCAwLDEgMTYuNSwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuRmVtYWxlR2lybCA9IFwiTTcuNSwyQTIsMiAwIDAsMSA5LjUsNEEyLDIgMCAwLDEgNy41LDZBMiwyIDAgMCwxIDUuNSw0QTIsMiAwIDAsMSA3LjUsMk02LDIyVjE2SDNMNS42LDguNEM1LjksNy42IDYuNiw3IDcuNSw3QzguNCw3IDkuMiw3LjYgOS40LDguNEwxMiwxNkg5VjIySDZNMTQuNSwxMkEyLDIgMCAwLDEgMTYuNSwxMEEyLDIgMCAwLDEgMTguNSwxMkEyLDIgMCAwLDEgMTYuNSwxNEEyLDIgMCAwLDEgMTQuNSwxMk0xNSwxNUgxOEwxOS41LDE5SDE4VjIySDE1VjE5SDEzLjVMMTUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5HcmVldGluZyA9IFwiTTEuNSw0VjUuNUMxLjUsOS42NSAzLjcxLDEzLjI4IDcsMTUuM1YyMEgyMlYxOEMyMiwxNS4zNCAxNi42NywxNCAxNCwxNEMxNCwxNCAxMy44MywxNCAxMy43NSwxNEM5LDE0IDUsMTAgNSw1LjVWNE0xNCw0QTQsNCAwIDAsMCAxMCw4QTQsNCAwIDAsMCAxNCwxMkE0LDQgMCAwLDAgMTgsOEE0LDQgMCAwLDAgMTQsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbkdyZWV0aW5nUHJveGltaXR5ID0gXCJNMTEgMTRIOUM5IDkuMDMgMTMuMDMgNSAxOCA1VjdDMTQuMTMgNyAxMSAxMC4xMyAxMSAxNE0xOCAxMVY5QzE1LjI0IDkgMTMgMTEuMjQgMTMgMTRIMTVDMTUgMTIuMzQgMTYuMzQgMTEgMTggMTFNNyA0QzcgMi44OSA2LjExIDIgNSAyUzMgMi44OSAzIDQgMy44OSA2IDUgNiA3IDUuMTEgNyA0TTExLjQ1IDQuNUg5LjQ1QzkuMjEgNS45MiA4IDcgNi41IDdIMy41QzIuNjcgNyAyIDcuNjcgMiA4LjVWMTFIOFY4Ljc0QzkuODYgOC4xNSAxMS4yNSA2LjUgMTEuNDUgNC41TTE5IDE3QzIwLjExIDE3IDIxIDE2LjExIDIxIDE1UzIwLjExIDEzIDE5IDEzIDE3IDEzLjg5IDE3IDE1IDE3Ljg5IDE3IDE5IDE3TTIwLjUgMThIMTcuNUMxNiAxOCAxNC43OSAxNi45MiAxNC41NSAxNS41SDEyLjU1QzEyLjc1IDE3LjUgMTQuMTQgMTkuMTUgMTYgMTkuNzRWMjJIMjJWMTkuNUMyMiAxOC42NyAyMS4zMyAxOCAyMC41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuSGFuZHNkb3duID0gXCJNMTIsMUMxMC44OSwxIDEwLDEuOSAxMCwzQzEwLDQuMTEgMTAuODksNSAxMiw1QzEzLjExLDUgMTQsNC4xMSAxNCwzQTIsMiAwIDAsMCAxMiwxTTEwLDZDOS43Myw2IDkuNSw2LjExIDkuMzEsNi4yOEg5LjNMNCwxMS41OUw1LjQyLDEzTDksOS40MVYyMkgxMVYxNUgxM1YyMkgxNVY5LjQxTDE4LjU4LDEzTDIwLDExLjU5TDE0LjcsNi4yOEMxNC41LDYuMTEgMTQuMjcsNiAxNCw2XCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5IYW5kc3VwID0gXCJNNSwxQzUsMy43IDYuNTYsNi4xNiA5LDcuMzJWMjJIMTFWMTVIMTNWMjJIMTVWNy4zMUMxNy40NCw2LjE2IDE5LDMuNyAxOSwxSDE3QTUsNSAwIDAsMSAxMiw2QTUsNSAwIDAsMSA3LDFNMTIsMUMxMC44OSwxIDEwLDEuODkgMTAsM0MxMCw0LjExIDEwLjg5LDUgMTIsNUMxMy4xMSw1IDE0LDQuMTEgMTQsM0MxNCwxLjg5IDEzLjExLDEgMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hbk1hbGUgPSBcIk0xMiwyQTIsMiAwIDAsMSAxNCw0QTIsMiAwIDAsMSAxMiw2QTIsMiAwIDAsMSAxMCw0QTIsMiAwIDAsMSAxMiwyTTEwLjUsN0gxMy41QTIsMiAwIDAsMSAxNS41LDlWMTQuNUgxNFYyMkgxMFYxNC41SDguNVY5QTIsMiAwIDAsMSAxMC41LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlQm95ID0gXCJNNy41LDJBMiwyIDAgMCwxIDkuNSw0QTIsMiAwIDAsMSA3LjUsNkEyLDIgMCAwLDEgNS41LDRBMiwyIDAgMCwxIDcuNSwyTTYsN0g5QTIsMiAwIDAsMSAxMSw5VjE0LjVIOS41VjIySDUuNVYxNC41SDRWOUEyLDIgMCAwLDEgNiw3TTE0LjUsMTJBMiwyIDAgMCwxIDE2LjUsMTBBMiwyIDAgMCwxIDE4LjUsMTJBMiwyIDAgMCwxIDE2LjUsMTRBMiwyIDAgMCwxIDE0LjUsMTJNMTMuNSwxNUgxOS41VjE5SDE4VjIySDE1VjE5SDEzLjVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlQ2hpbGQgPSBcIk03IDJDNS45IDIgNSAyLjkgNSA0UzUuOSA2IDcgNiA5IDUuMTEgOSA0IDguMTEgMiA3IDJNNSA3QzMuODkgNyAzIDcuODkgMyA5VjE1SDVWMjJIMTBWMTEuNkwxMi41MyAxNkgxNC45N0wxNiAxNC42NlYyMkgyMFYxN0gyMVYxNEMyMSAxMi44OSAyMC4xMSAxMiAxOSAxMkgxNi41QzE1LjkgMTIgMTUuMzcgMTIuMjYgMTUgMTIuNjhDMTQuNjcgMTMuMSAxNC4zMiAxMy41NiAxNCAxNEgxMy42OUwxMCA3LjY2QzkuODQgNy4zOCA5LjIyIDcgOC41IDdINU0xOCA4QzE3LjE3IDggMTYuNSA4LjY3IDE2LjUgOS41UzE3LjE3IDExIDE4IDExIDE5LjUgMTAuMzMgMTkuNSA5LjUgMTguODMgOCAxOCA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuTWFsZUZlbWFsZSA9IFwiTTcuNSwyQTIsMiAwIDAsMSA5LjUsNEEyLDIgMCAwLDEgNy41LDZBMiwyIDAgMCwxIDUuNSw0QTIsMiAwIDAsMSA3LjUsMk02LDdIOUEyLDIgMCAwLDEgMTEsOVYxNC41SDkuNVYyMkg1LjVWMTQuNUg0VjlBMiwyIDAgMCwxIDYsN00xNi41LDJBMiwyIDAgMCwxIDE4LjUsNEEyLDIgMCAwLDEgMTYuNSw2QTIsMiAwIDAsMSAxNC41LDRBMiwyIDAgMCwxIDE2LjUsMk0xNSwyMlYxNkgxMkwxNC41OSw4LjQxQzE0Ljg0LDcuNTkgMTUuNiw3IDE2LjUsN0MxNy40LDcgMTguMTYsNy41OSAxOC40MSw4LjQxTDIxLDE2SDE4VjIySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuTWFsZUdpcmwgPSBcIk03LjUsMkEyLDIgMCAwLDEgOS41LDRBMiwyIDAgMCwxIDcuNSw2QTIsMiAwIDAsMSA1LjUsNEEyLDIgMCAwLDEgNy41LDJNNiw3SDlBMiwyIDAgMCwxIDExLDlWMTQuNUg5LjVWMjJINS41VjE0LjVINFY5QTIsMiAwIDAsMSA2LDdNMTQuNSwxMkEyLDIgMCAwLDEgMTYuNSwxMEEyLDIgMCAwLDEgMTguNSwxMkEyLDIgMCAwLDEgMTYuNSwxNEEyLDIgMCAwLDEgMTQuNSwxMk0xNSwxNUgxOEwxOS41LDE5SDE4VjIySDE1VjE5SDEzLjVMMTUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlSGVpZ2h0ID0gXCJNNywyQzguNzgsMiA5LjY3LDQuMTYgOC40Miw1LjQyQzcuMTYsNi42NyA1LDUuNzggNSw0QTIsMiAwIDAsMSA3LDJNNS41LDdIOC41QTIsMiAwIDAsMSAxMC41LDlWMTQuNUg5VjIySDVWMTQuNUgzLjVWOUEyLDIgMCAwLDEgNS41LDdNMjEsOEgxNVYxMEgyMU0yMSwxMUgxOFYxM0gyMU0yMSwySDE1VjRIMjFNMjEsNUgxOFY3SDIxTTIxLDE0SDE1VjE2SDIxTTIxLDIwSDE1VjIySDIxTTIxLDE3SDE4VjE5SDIxXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5NYWxlSGVpZ2h0VmFyaWFudCA9IFwiTTcsMkM4Ljc4LDIgOS42Nyw0LjE2IDguNDIsNS40MkM3LjE2LDYuNjcgNSw1Ljc4IDUsNEEyLDIgMCAwLDEgNywyTTUuNSw3SDguNUEyLDIgMCAwLDEgMTAuNSw5VjE0LjVIOVYyMkg1VjE0LjVIMy41VjlBMiwyIDAgMCwxIDUuNSw3TTE5LDhIMjFMMTgsNEwxNSw4SDE3VjE2SDE1TDE4LDIwTDIxLDE2SDE5TTIyLDJIMTRWNEgyMk0yMiwyMEgxNFYyMkgyMlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuTWFsZU1hbGUgPSBcIk03LjUsMkEyLDIgMCAwLDEgOS41LDRBMiwyIDAgMCwxIDcuNSw2QTIsMiAwIDAsMSA1LjUsNEEyLDIgMCAwLDEgNy41LDJNNiw3SDlBMiwyIDAgMCwxIDExLDlWMTQuNUg5LjVWMjJINS41VjE0LjVINFY5QTIsMiAwIDAsMSA2LDdNMTYuNSwyQTIsMiAwIDAsMSAxOC41LDRBMiwyIDAgMCwxIDE2LjUsNkEyLDIgMCAwLDEgMTQuNSw0QTIsMiAwIDAsMSAxNi41LDJNMTUsN0gxOEEyLDIgMCAwLDEgMjAsOVYxNC41SDE4LjVWMjJIMTQuNVYxNC41SDEzVjlBMiwyIDAgMCwxIDE1LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5QcmVnbmFudCA9IFwiTTksNEM5LDIuODkgOS44OSwyIDExLDJDMTIuMTEsMiAxMywyLjg5IDEzLDRDMTMsNS4xMSAxMi4xMSw2IDExLDZDOS44OSw2IDksNS4xMSA5LDRNMTYsMTNDMTYsMTEuNjYgMTUuMTcsMTAuNSAxNCwxMEEzLDMgMCAwLDAgMTEsN0EzLDMgMCAwLDAgOCwxMFYxN0gxMFYyMkgxM1YxN0gxNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlIdW1hblF1ZXVlID0gXCJNNSA2QzMuOSA2IDMgNi45IDMgOFMzLjkgMTAgNSAxMCA3IDkuMTEgNyA4IDYuMTEgNiA1IDZNMTIgNEMxMC45IDQgMTAgNC44OSAxMCA2UzEwLjkgOCAxMiA4IDE0IDcuMTEgMTQgNiAxMy4xMSA0IDEyIDRNMTkgMkMxNy45IDIgMTcgMi45IDE3IDRTMTcuOSA2IDE5IDYgMjEgNS4xMSAyMSA0IDIwLjExIDIgMTkgMk0zLjUgMTFDMi42NyAxMSAyIDExLjY3IDIgMTIuNVYxN0gzVjIySDdWMTdIOFYxMi41QzggMTEuNjcgNy4zMyAxMSA2LjUgMTFIMy41TTEwLjUgOUM5LjY3IDkgOSA5LjY3IDkgMTAuNVYxNUgxMFYyMEgxNFYxNUgxNVYxMC41QzE1IDkuNjcgMTQuMzMgOSAxMy41IDlIMTAuNU0xNy41IDdDMTYuNjcgNyAxNiA3LjY3IDE2IDguNVYxM0gxN1YxOEgyMVYxM0gyMlY4LjVDMjIgNy42NyAyMS4zMyA3IDIwLjUgN0gxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUh1bWFuU2Nvb3RlciA9IFwiTTE2LjUgMi4yNUMxNy4zMyAyLjI1IDE4IDIuOTIgMTggMy43NUMxOCA0LjU4IDE3LjMzIDUuMjUgMTYuNSA1LjI1QzE1LjY3IDUuMjUgMTUgNC41OCAxNSAzLjc1QzE1IDIuOTIgMTUuNjcgMi4yNSAxNi41IDIuMjVNMjAgMThDMjEuMTEgMTggMjIgMTguOSAyMiAyMEMyMiAyMS4xMSAyMS4xMSAyMiAyMCAyMkMxOS4yNiAyMiAxOC42MSAyMS42IDE4LjI3IDIxSDguNzNDOC4zOSAyMS42IDcuNzQgMjIgNyAyMkM1LjkgMjIgNSAyMS4xMSA1IDIwQzUgMTguOSA1LjkgMTggNyAxOEM3Ljc0IDE4IDguMzkgMTguNCA4LjczIDE5SDEzVjEzLjVMOS43MyAxMS4yM0w2Ljc3IDE0QzYuMzYgMTQuMzcgNS43MyAxNC4zNCA1LjM1IDEzLjk0TDIuMjggMTAuNjVDMS45MSAxMC4yNCAxLjkzIDkuNjEgMi4zMyA5LjIzQzIuNzQgOC44NiAzLjM3IDguODggMy43NCA5LjI4TDYuMTMgMTEuODRMMTMuMjYgNS4yTDEzLjMgNS4xOEMxMy43MiA0LjgyIDE0LjM1IDQuODggMTQuNzEgNS4zTDE2Ljk3IDhIMjBDMjAuNTUgOCAyMSA4LjQ1IDIxIDlDMjEgOS41NSAyMC41NSAxMCAyMCAxMEgxNi41QzE2LjE1IDEwIDE1Ljg1IDkuODIgMTUuNjcgOS41NkwxNC4xNyA3Ljc3TDExLjY0IDEwLjEzTDE0LjU3IDEyLjE4SDE0LjU3QzE0LjgzIDEyLjM2IDE1IDEyLjY2IDE1IDEzVjE5SDE1LjYxQzE2LjA0IDE3LjEzIDE3LjYzIDE1LjcgMTkuNTggMTUuNUwxOC44MSAxMUgyMC4zMUwyMS4zOSAxNy4zNEMyMC45NyAxNy4xMiAyMC41IDE3IDIwIDE3QzE4LjY5IDE3IDE3LjU4IDE3Ljg0IDE3LjE3IDE5SDE4LjI3QzE4LjYxIDE4LjQgMTkuMjYgMTggMjAgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYW5XaGVlbGNoYWlyID0gXCJNOC41IDRBMiAyIDAgMCAxIDYuNSA2QTIgMiAwIDAgMSA0LjUgNEEyIDIgMCAwIDEgNi41IDJBMiAyIDAgMCAxIDguNSA0TTUgN0MzLjg5IDcgMyA3Ljg5IDMgOVYxNUg1VjIySDguNjFBNyA3IDAgMCAxIDYuNSAxN0E3IDcgMCAwIDEgMTAgMTAuOTVWOUMxMCA3Ljg5IDkuMTEgNyA4IDdNMTMgOFYxNkgxOC41TDIxLjIgMTkuNkwyMi44IDE4LjRMMTkuNSAxNEgxNVY4TTEyIDEyLjIzQTUgNSAwIDAgMCA4LjUgMTdBNSA1IDAgMCAwIDEzLjUgMjJBNSA1IDAgMCAwIDE4LjUgMTdIMTYuNUEzIDMgMCAwIDEgMTMuNSAyMEEzIDMgMCAwIDEgMTAuNSAxN0EzIDMgMCAwIDEgMTIgMTQuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHVtYmxlQnVuZGxlID0gXCJNMTYuOTEsMTguMTJDMTQuMDksMTguMTIgMTguNDMsMi4xMyAxOC40MywyLjEzSDE1LjUzQzE1LjUzLDIuMTMgMTQuMzQsNS44OSAxMy41NSwxMC4wN0gxMS4wNUMxMS4xMSw5LjIxIDExLjE1LDguMzQgMTEuMTMsNy41QzExLDAuNTkgNywxLjg3IDUuMTgsMy40NUMzLjQ3LDQuOTUgMi4wMyw3LjggMiwxMEMyLjI3LDEwIDMuMzUsMTAgMy4zNSwxMEMzLjM1LDEwIDQuMjUsNS44OCA3LjA3LDUuODhDOS44OSw1Ljg4IDUuNTQsMjEuODcgNS41NCwyMS44N0g4LjQ1QzguNDUsMjEuODcgOS45NSwxNy41OSAxMC43LDEyLjgxTDEzLjA5LDEyLjhDMTIuOTUsMTQuMDQgMTIuOTEsMTUuNCAxMi45MywxNi42N0MxMy4wNCwyMy41NiAxNy4wNiwyMi4wOCAxOC44NiwyMC41QzIwLjY3LDE4LjkyIDIyLDE1LjU4IDIyLDE0SDIwLjYxQzIwLjYyLDE0LjEyIDE5LjczLDE4LjEyIDE2LjkxLDE4LjEyVjE4LjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUh2YWMgPSBcIk04LjU4IDE0QzguMyAxMy41NSA4LjExIDEzLjAzIDguMDYgMTIuNUgxNS45NEMxNS44OSAxMy4wMyAxNS43IDEzLjU1IDE1LjQ3IDE0SDguNThNMTIgMTZDMTAuOTcgMTYgMTAuMDggMTUuNjEgOS4zOCAxNUgxNC42M0MxMy45MiAxNS42MSAxMy4wMyAxNiAxMiAxNk0xMiA4QzEzLjAzIDggMTMuOTIgOC4zOSAxNC42MyA5SDkuMzhDMTAuMDggOC4zOSAxMC45NyA4IDEyIDhNOC41OCAxMEgxNS40MkMxNS43IDEwLjQ1IDE1Ljg5IDEwLjk3IDE1Ljk0IDExLjVIOC4wNkM4LjExIDEwLjk3IDguMyAxMC40NSA4LjU4IDEwTTMgM1YyMUgyMVYzSDNNMTIgMThDOC42NyAxOCA2IDE1LjMzIDYgMTJTOC42NyA2IDEyIDYgMTggOC42NyAxOCAxMiAxNS4zMyAxOCAxMiAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlIdmFjT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzIDQuODlWMjFIMTkuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMThDOC42NyAxOCA2IDE1LjMzIDYgMTJDNiAxMC44MiA2LjM0IDkuNzMgNi45MiA4LjgxTDguNDMgMTAuMzJDOC4yNCAxMC42OSA4LjEgMTEuMDkgOC4wNiAxMS41SDkuNjFMMTAuNjEgMTIuNUg4LjA2QzguMTEgMTMuMDMgOC4zIDEzLjU1IDguNTggMTRIMTIuMTFMMTMuMTEgMTVIOS4zOEMxMC4wOCAxNS42MSAxMC45NyAxNiAxMiAxNkMxMi42MyAxNiAxMy4xOSAxNS44NCAxMy43IDE1LjU5TDE1LjE5IDE3LjA4QzE0LjI3IDE3LjY2IDEzLjE4IDE4IDEyIDE4TTEyIDhDMTMuMDMgOCAxMy45MiA4LjM5IDE0LjYzIDlIMTIuMkwxMS4yNyA4LjA3QzExLjUgOC4wMyAxMS43NSA4IDEyIDhNOS42NyA2LjQ3TDYuMiAzSDIxVjE3LjhMMTcuNTMgMTQuMzNDMTcuODMgMTMuNjIgMTggMTIuODMgMTggMTJDMTggOC42NyAxNS4zMyA2IDEyIDZDMTEuMTcgNiAxMC4zOCA2LjE3IDkuNjcgNi40N00xNS45NCAxMS41SDE0LjdMMTMuMiAxMEgxNS40MkMxNS43IDEwLjQ1IDE1Ljg5IDEwLjk3IDE1Ljk0IDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHlkcmF1bGljT2lsTGV2ZWwgPSBcIk0xNSAxOEMxMy4zNCAxOCAxMiAxNi42NiAxMiAxNUMxMiAxMyAxNSA5LjYzIDE1IDkuNjNTMTggMTMgMTggMTVDMTggMTYuNjYgMTYuNjYgMTggMTUgMThNMjAgNFYyMEgxMFY0SDhWMjBDOCAyMS4xMSA4Ljg5IDIyIDEwIDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjRIMjBNMiAxOUw3IDE0TDIgOVYxOU0xNiA2VjJIMTRWNkgxMVY4SDE5VjZIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHlkcmF1bGljT2lsVGVtcGVyYXR1cmUgPSBcIk05IDE4QzcuMzQgMTggNiAxNi42NiA2IDE1QzYgMTMgOSA5LjYzIDkgOS42M1MxMiAxMyAxMiAxNUMxMiAxNi42NiAxMC42NiAxOCA5IDE4TTE0IDRWMjBINFY0SDJWMjBDMiAyMS4xMSAyLjg5IDIyIDQgMjJIMTRDMTUuMTEgMjIgMTYgMjEuMTEgMTYgMjBWNEgxNE0xMCA2VjJIOFY2SDVWOEgxM1Y2SDEwTTIxIDE3LjVWNS41QzIxIDQuNjcgMjAuMzMgNCAxOS41IDRTMTggNC42NyAxOCA1LjVWMTcuNUMxNy4zNyAxNy45NyAxNyAxOC43MSAxNyAxOS41QzE3IDIwLjg4IDE4LjEyIDIyIDE5LjUgMjJTMjIgMjAuODggMjIgMTkuNUMyMiAxOC43MSAyMS42MyAxOCAyMSAxNy41TTIwIDEzSDE5VjZIMjBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSHlkcm9Qb3dlciA9IFwiTTE3LjEyIDMuNTVBMiAyIDAgMCAwIDE1LjIgNC45NUwxNC40IDcuNUEzIDMgMCAwIDAgMTMuMzMgNy43NEwxMS41IDUuNzdMMTAuMTcgNC4yOUEyIDIgMCAwIDAgMTAuMDUgNy4xMkwxMS44NiA5LjA5QTMgMyAwIDAgMCAxMS42NCA5LjZBMyAzIDAgMCAwIDExLjUzIDEwLjEzTDguOTIgMTAuNzFMNi45NiAxMS4xNUEyIDIgMCAwIDAgOS4zNSAxMi42N0wxMS45NiAxMi4wOEEzIDMgMCAwIDAgMTIuNyAxMi44OUwxMS45IDE1LjQ0TDExLjMgMTcuMzVBMiAyIDAgMCAwIDEzLjggMTYuMDRMMTQuNjEgMTMuNUEzIDMgMCAwIDAgMTUuNjggMTMuMjZMMTcuNSAxNS4yM0wxOC44MyAxNi43QTIgMiAwIDAgMCAxOC45NiAxMy44OEwxNy4xNSAxMS45MUEzIDMgMCAwIDAgMTcuMzYgMTEuNEEzIDMgMCAwIDAgMTcuNSAxMC44NkwyMC4wOSAxMC4yOEwyMi4wNCA5Ljg1QTIgMiAwIDAgMCAxOS42NiA4LjMzTDE3LjA1IDguOTFBMyAzIDAgMCAwIDE2LjMxIDguMTFMMTcuMTEgNS41NUwxNy43MSAzLjY1QTIgMiAwIDAgMCAxNy4xMiAzLjU1TTE0LjU2IDlBMS41IDEuNSAwIDAgMSAxNC45NSA5LjA3QTEuNSAxLjUgMCAwIDEgMTUuOTMgMTAuOTVBMS41IDEuNSAwIDAgMSAxNC4wNSAxMS45M0ExLjUgMS41IDAgMCAxIDEzLjA3IDEwLjA1QTEuNSAxLjUgMCAwIDEgMTQuNTUgOU04IDEzLjY3QzYuNzggMTQuNTMgNS4zOSAxNSA0IDE1SDJWMTdINEM1LjM3IDE3IDYuNzQgMTYuNjUgOCAxNkM4Ljc3IDE2LjQgOS41OCAxNi42NiAxMC40MSAxNi44MUwxMC45NCAxNS4xNEwxMS4wMyAxNC44OEM5Ljk3IDE0LjczIDguOTMgMTQuMzIgOCAxMy42N00yMC40NSAxNUMyMC41IDE1LjcgMjAuMzMgMTYuNDEgMTkuOTEgMTdDMTkuOTMgMTcgMTkuOTcgMTcgMjAgMTdIMjJWMTVIMjAuNDVNOCAxNy42N0M2Ljc4IDE4LjUzIDUuMzkgMTkgNCAxOUgyVjIxSDRDNS4zNyAyMSA2Ljc0IDIwLjY1IDggMjBDMTAuNSAyMS4zIDEzLjUgMjEuMyAxNiAyMEMxNy4yNiAyMC42NSAxOC42MiAyMSAyMCAyMUgyMlYxOUgyMEMxOC42MSAxOSAxNy4yMiAxOC41MyAxNiAxNy42N0MxMy41NiAxOS4zOCAxMC40NCAxOS4zOCA4IDE3LjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUljZUNyZWFtID0gXCJNMTcuNSA2LjA1QzE3LjI1IDMuMjIgMTQuODkgMSAxMiAxUzYuNzUgMy4yMiA2LjUgNi4wNUM1LjA5IDYuMjggNCA3LjUgNCA5QzQgMTAuNjYgNS4zNCAxMiA3IDEyTDEyIDIyTDE3IDEyQzE4LjY2IDEyIDIwIDEwLjY2IDIwIDlDMjAgNy41IDE4LjkxIDYuMjggMTcuNSA2LjA1TTEyIDE3LjUzTDguODkgMTEuMzFDOC45NSAxMS4yNiA5IDExLjIxIDkuMDggMTEuMTZDOS45MyAxMS42OSAxMC45MyAxMiAxMiAxMlMxNC4wNyAxMS42OSAxNC45MiAxMS4xNkMxNSAxMS4yMSAxNS4wNSAxMS4yNiAxNS4xMSAxMS4zMUwxMiAxNy41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlJY2VDcmVhbU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNC45NSA2Ljg0QzQuMzcgNy4zOCA0IDguMTQgNCA5QzQgMTAuNjYgNS4zNCAxMiA3IDEyTDEyIDIyTDE0LjcgMTYuNTlMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMTcuNTNMOC44OSAxMS4zMUM4Ljk1IDExLjI2IDkgMTEuMjEgOS4wOCAxMS4xNkM5LjIxIDExLjI0IDkuMzUgMTEuMyA5LjUgMTEuMzdMMTMuMjEgMTUuMUwxMiAxNy41M003LjE1IDMuOTVDOC4wNyAyLjIgOS44OSAxIDEyIDFDMTQuODkgMSAxNy4yNSAzLjIyIDE3LjUgNi4wNUMxOC45MSA2LjI4IDIwIDcuNSAyMCA5QzIwIDEwLjY2IDE4LjY2IDEyIDE3IDEyTDE2LjQgMTMuMkw3LjE1IDMuOTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWNlUG9wID0gXCJNMTguMTUgMTQuOTZMOS45NSAxOC42NUw1Ljg1IDkuNjVDNy4yMSA5LjEzIDguMTIgNy44MiA4LjE1IDYuMzZDOC4xNCA1IDcuMzYgMy43NiA2LjE1IDMuMTVDNi41NCAyLjggNyAyLjUgNy40NSAyLjI1QzkuNzEgMS4yNSAxMi4zNyAyLjIzIDEzLjQ1IDQuNDZNMTMuMTUgMTguMzZMMTQuNzUgMjEuODZMMTcuNDUgMjAuNjVMMTUuODUgMTcuMTVcIjtcclxuZXhwb3J0IHZhciBtZGlJZENhcmQgPSBcIk00IDRDMi44OSA0IDIgNC44OSAyIDZWMThDMiAxOS4xMSAyLjg5IDIwIDQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWNkMyMiA0Ljg5IDIxLjExIDQgMjAgNEg0TTQgNkgyMFYxMEg0VjZNNCAxMkg4VjE0SDRWMTJNMTAgMTJIMjBWMTRIMTBWMTJNNCAxNkgxNFYxOEg0VjE2TTE2IDE2SDIwVjE4SDE2VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlkZW50aWZpZXIgPSBcIk0xMCA3VjlIOVYxNUgxMFYxN0g2VjE1SDdWOUg2VjdIMTBNMTYgN0MxNy4xMSA3IDE4IDcuOSAxOCA5VjE1QzE4IDE2LjExIDE3LjExIDE3IDE2IDE3SDEyVjdNMTYgOUgxNFYxNUgxNlY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlkZW9ncmFtQ2prID0gXCJNMTEgNFY2SDRWMTBINlY4SDE4VjEwSDIwVjZIMTNWNE04IDEwVjEySDEzLjU5TDExLjU5IDE0SDRWMTZIMTFWMThIMTBWMjBIMTNWMTZIMjBWMTRIMTQuMjFMMTYgMTIuMjFWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWRlb2dyYW1DamtWYXJpYW50ID0gXCJNMTEgNFY2SDRWOEgxNS4zNkMxNS4xMyA4Ljg3IDE0LjYzIDkuNzcgMTMuODggMTAuNjlDMTMuMzUgMTEuMzUgMTIuNzEgMTIgMTIgMTIuNjdDMTEuMjkgMTIgMTAuNjUgMTEuMzUgMTAuMTIgMTAuNjlDOS42NSAxMC4xMiA5LjMgOS41NSA5LjAzIDlINi44NUM3LjIxIDEwLjA1IDcuODIgMTEuMDMgOC41NiAxMS45NUM5LjEzIDEyLjY2IDkuNzkgMTMuMzQgMTAuNSAxNEw1LjM2IDE4LjIzTDYuNjQgMTkuNzdMMTIgMTUuMzRMMTcuMzYgMTkuNzdMMTguNjQgMTguMjNMMTMuNSAxNEMxNC4yMSAxMy4zNCAxNC44NyAxMi42NiAxNS40NCAxMS45NUMxNi40MSAxMC43NCAxNy4xNiA5LjQzIDE3LjQgOEgyMFY2SDEzVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lID0gXCJNMjEsMkgzQTIsMiAwIDAsMCAxLDRWMjBBMiwyIDAgMCwwIDMsMjJIMjFBMiwyIDAgMCwwIDIzLDIwVjRBMiwyIDAgMCwwIDIxLDJNMTEsMTcuNUw5LjUsMTlMNSwxNC41TDkuNSwxMEwxMSwxMS41TDgsMTQuNUwxMSwxNy41TTE0LjUsMTlMMTMsMTcuNUwxNiwxNC41TDEzLDExLjVMMTQuNSwxMEwxOSwxNC41TDE0LjUsMTlNMjEsN0gzVjRIMjFWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVBcnJheSA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0xMCAxMUg4VjE4SDEwVjIwSDZWOUgxMFYxMU0xOCAyMEgxNFYxOEgxNlYxMUgxNFY5SDE4VjIwTTIxIDdIM1Y0SDIxVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lQXJyYXlPdXRsaW5lID0gXCJNMjEgMkgzQzEuOSAyIDEgMi45IDEgNFYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjRDMjMgMi45IDIyLjEgMiAyMSAyTTIxIDIwSDNWNkgyMVYyME02IDhWMThIMTBWMTZIOFYxMEgxMFY4SDZNMTYgMTZIMTRWMThIMThWOEgxNFYxMEgxNlYxNlwiO1xyXG5leHBvcnQgdmFyIG1kaUlmcmFtZUJyYWNlcyA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0xMSAxMUg5VjEyLjVDOSAxMy42IDguMSAxNC41IDcgMTQuNUM4LjEgMTQuNSA5IDE1LjQgOSAxNi41VjE4SDExVjIwSDlDNy45IDIwIDcgMTkuMSA3IDE4VjE3LjVDNyAxNi40IDYuMSAxNS41IDUgMTUuNVYxMy41QzYuMSAxMy41IDcgMTIuNiA3IDExLjVWMTFDNyA5LjkgNy45IDkgOSA5SDExVjExTTE5IDE1LjVDMTcuOSAxNS41IDE3IDE2LjQgMTcgMTcuNVYxOEMxNyAxOS4xIDE2LjEgMjAgMTUgMjBIMTNWMThIMTVWMTYuNUMxNSAxNS40IDE1LjkgMTQuNSAxNyAxNC41QzE1LjkgMTQuNSAxNSAxMy42IDE1IDEyLjVWMTFIMTNWOUgxNUMxNi4xIDkgMTcgOS45IDE3IDExVjExLjVDMTcgMTIuNiAxNy45IDEzLjUgMTkgMTMuNVYxNS41TTIxIDdIM1Y0SDIxVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lQnJhY2VzT3V0bGluZSA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0yMSAyMEgzVjZIMjFWMjBNOSA4QzcuOSA4IDcgOC45IDcgMTBDNyAxMS4xIDYuMSAxMiA1IDEyVjE0QzYuMSAxNCA3IDE0LjkgNyAxNkM3IDE3LjEgNy45IDE4IDkgMThIMTFWMTZIOVYxNUM5IDEzLjkgOC4xIDEzIDcgMTNDOC4xIDEzIDkgMTIuMSA5IDExVjEwSDExVjhNMTUgOEMxNi4xIDggMTcgOC45IDE3IDEwQzE3IDExLjEgMTcuOSAxMiAxOSAxMlYxNEMxNy45IDE0IDE3IDE0LjkgMTcgMTZDMTcgMTcuMSAxNi4xIDE4IDE1IDE4SDEzVjE2SDE1VjE1QzE1IDEzLjkgMTUuOSAxMyAxNyAxM0MxNS45IDEzIDE1IDEyLjEgMTUgMTFWMTBIMTNWOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVPdXRsaW5lID0gXCJNOS41LDguNUwxMSwxMEw4LDEzTDExLDE2TDkuNSwxNy41TDUsMTNMOS41LDguNU0xNC41LDE3LjVMMTMsMTZMMTYsMTNMMTMsMTBMMTQuNSw4LjVMMTksMTNMMTQuNSwxNy41TTIxLDJIM0EyLDIgMCAwLDAgMSw0VjIwQTIsMiAwIDAsMCAzLDIySDIxQTIsMiAwIDAsMCAyMywyMFY0QTIsMiAwIDAsMCAyMSwyTTIxLDIwSDNWNkgyMVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVQYXJlbnRoZXNlcyA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDIxQzIyLjEgMjIgMjMgMjEuMSAyMyAyMFY0QzIzIDIuOSAyMi4xIDIgMjEgMk0xMCAxOS40TDguNCAyMEM2LjkgMTguNiA2IDE2LjYgNiAxNC41UzYuOSAxMC40IDguNCA5TDEwIDkuNkM4LjcgMTAuNyA4IDEyLjYgOCAxNC41UzguNyAxOC4yIDEwIDE5LjRNMTUuNiAyMEwxNCAxOS40QzE1LjMgMTguMiAxNiAxNi40IDE2IDE0LjVTMTUuMyAxMC44IDE0IDkuNkwxNS42IDlDMTcuMSAxMC40IDE4IDEyLjQgMTggMTQuNUMxOCAxNi42IDE3LjEgMTguNiAxNS42IDIwTTIxIDdIM1Y0SDIxVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSWZyYW1lUGFyZW50aGVzZXNPdXRsaW5lID0gXCJNMjEgMkgzQzEuOSAyIDEgMi45IDEgNFYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjRDMjMgMi45IDIyLjEgMiAyMSAyTTIxIDIwSDNWNkgyMVYyME0xNS42IDhDMTcuMSA5LjMgMTggMTEuMSAxOCAxM0MxOCAxNC45IDE3LjEgMTYuNyAxNS42IDE4TDE0IDE3LjRDMTUuMyAxNi40IDE2IDE0LjcgMTYgMTNTMTUuMyA5LjYgMTQgOC42TDE1LjYgOE04LjQgOEwxMCA4LjZDOC43IDkuNiA4IDExLjMgOCAxM1M4LjcgMTYuNCAxMCAxNy40TDguNCAxOEM2LjkgMTYuNyA2IDE0LjkgNiAxM1M2LjkgOS4zIDguNCA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlmcmFtZVZhcmlhYmxlID0gXCJNMjEgMkgzQzEuOSAyIDEgMi45IDEgNFYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMjFDMjIuMSAyMiAyMyAyMS4xIDIzIDIwVjRDMjMgMi45IDIyLjEgMiAyMSAyTTcuNCAyMEM1LjkgMTguNiA1IDE2LjYgNSAxNC41UzUuOSAxMC40IDcuNCA5TDkgOS42QzcuNyAxMC43IDcgMTIuNiA3IDE0LjVTNy43IDE4LjIgOSAxOS40TDcuNCAyME0xMi43IDE4TDExLjkgMTZMMTAuNSAxOEg5TDExLjMgMTQuOUwxMCAxMkgxMS4zTDEyLjEgMTRMMTMuNSAxMkgxNUwxMi44IDE1TDE0LjEgMThIMTIuN00xNi42IDIwTDE1IDE5LjRDMTYuMyAxOC4yIDE3IDE2LjQgMTcgMTQuNVMxNi4zIDEwLjggMTUgOS42TDE2LjYgOUMxOC4xIDEwLjQgMTkgMTIuNCAxOSAxNC41QzE5IDE2LjYgMTguMSAxOC42IDE2LjYgMjBNMjEgN0gzVjRIMjFWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJZnJhbWVWYXJpYWJsZU91dGxpbmUgPSBcIk0yMSAySDNDMS45IDIgMSAyLjkgMSA0VjIwQzEgMjEuMSAxLjkgMjIgMyAyMkgyMUMyMi4xIDIyIDIzIDIxLjEgMjMgMjBWNEMyMyAyLjkgMjIuMSAyIDIxIDJNMjEgMjBIM1Y2SDIxVjIwTTE2LjYgOEMxOC4xIDkuMyAxOSAxMS4xIDE5IDEzQzE5IDE0LjkgMTguMSAxNi43IDE2LjYgMThMMTUgMTcuNEMxNi4zIDE2LjQgMTcgMTQuNyAxNyAxM1MxNi4zIDkuNiAxNSA4LjZMMTYuNiA4TTcuNCA4TDkgOC42QzcuNyA5LjYgNyAxMS4zIDcgMTNTNy43IDE2LjQgOSAxNy40TDcuNCAxOEM1LjkgMTYuNyA1IDE0LjkgNSAxM1M1LjkgOS4zIDcuNCA4TTEyLjEgMTJMMTMuNSAxMEgxNUwxMi44IDEzTDE0LjEgMTZIMTIuOEwxMiAxNEwxMC42IDE2SDlMMTEuMyAxMi45TDEwIDEwSDExLjNMMTIuMSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZSA9IFwiTTguNSwxMy41TDExLDE2LjVMMTQuNSwxMkwxOSwxOEg1TTIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlQWxidW0gPSBcIk02LDE5TDksMTUuMTRMMTEuMTQsMTcuNzJMMTQuMTQsMTMuODZMMTgsMTlINk02LDRIMTFWMTJMOC41LDEwLjVMNiwxMk0xOCwySDZBMiwyIDAgMCwwIDQsNFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWNEEyLDIgMCAwLDAgMTgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUFyZWEgPSBcIk0yMCw1QTIsMiAwIDAsMSAyMiw3VjE3QTIsMiAwIDAsMSAyMCwxOUg0QzIuODksMTkgMiwxOC4xIDIsMTdWN0MyLDUuODkgMi44OSw1IDQsNUgyME01LDE2SDE5TDE0LjUsMTBMMTEsMTQuNUw4LjUsMTEuNUw1LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlQXJlYUNsb3NlID0gXCJNMTIsMjNMOCwxOUgxNkwxMiwyM00yMCwzQTIsMiAwIDAsMSAyMiw1VjE1QTIsMiAwIDAsMSAyMCwxN0g0QTIsMiAwIDAsMSAyLDE1VjVBMiwyIDAgMCwxIDQsM0gyME01LDE0SDE5TDE0LjUsOEwxMSwxMi41TDguNSw5LjVMNSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUF1dG9BZGp1c3QgPSBcIk0xOSAxMFYxOUg1VjVIMTRWM0g1QzMuOTIgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOTIgMjEgNSAyMUgxOUMyMC4xMiAyMSAyMSAyMC4xIDIxIDE5VjEwSDE5TTE3IDEwTDE3Ljk0IDcuOTRMMjAgN0wxNy45NCA2LjA2TDE3IDRMMTYuMDYgNi4wNkwxNCA3TDE2LjA2IDcuOTRMMTcgMTBNMTMuMjUgMTAuNzVMMTIgOEwxMC43NSAxMC43NUw4IDEyTDEwLjc1IDEzLjI1TDEyIDE2TDEzLjI1IDEzLjI1TDE2IDEyTDEzLjI1IDEwLjc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlQnJva2VuID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxMUgxOVYxM0gxOUwxNywxM1YxNUgxNVYxN0gxM1YxOUgxMVYyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5TTIxLDE1VjE5QTIsMiAwIDAsMSAxOSwyMUgxOUwxNSwyMVYxOUgxN1YxN0gxOVYxNUgyMU0xOSw4LjVBMC41LDAuNSAwIDAsMCAxOC41LDhINS41QTAuNSwwLjUgMCAwLDAgNSw4LjVWMTUuNUEwLjUsMC41IDAgMCwwIDUuNSwxNkgxMVYxNUgxM1YxM0gxNVYxMUgxN1Y5SDE5VjguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUJyb2tlblZhcmlhbnQgPSBcIk0yMSw1VjExLjU5TDE4LDguNThMMTQsMTIuNTlMMTAsOC41OUw2LDEyLjU5TDMsOS41OFY1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVNMTgsMTEuNDJMMjEsMTQuNDNWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWMTIuNDJMNiwxNS40MUwxMCwxMS40MUwxNCwxNS40MVwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRWRpdCA9IFwiTTIyLjcgMTQuM0wyMS43IDE1LjNMMTkuNyAxMy4zTDIwLjcgMTIuM0MyMC44IDEyLjIgMjAuOSAxMi4xIDIxLjEgMTIuMUMyMS4yIDEyLjEgMjEuNCAxMi4yIDIxLjUgMTIuM0wyMi44IDEzLjZDMjIuOSAxMy44IDIyLjkgMTQuMSAyMi43IDE0LjNNMTMgMTkuOVYyMkgxNS4xTDIxLjIgMTUuOUwxOS4yIDEzLjlMMTMgMTkuOU0yMSA1QzIxIDMuOSAyMC4xIDMgMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTFWMTkuMUwxMi4xIDE4SDVMOC41IDEzLjVMMTEgMTYuNUwxNC41IDEyTDE2LjEgMTQuMUwyMSA5LjFWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUVkaXRPdXRsaW5lID0gXCJNMjIuNyAxNC4zTDIxLjcgMTUuM0wxOS43IDEzLjNMMjAuNyAxMi4zQzIwLjggMTIuMiAyMC45IDEyLjEgMjEuMSAxMi4xQzIxLjIgMTIuMSAyMS40IDEyLjIgMjEuNSAxMi4zTDIyLjggMTMuNkMyMi45IDEzLjggMjIuOSAxNC4xIDIyLjcgMTQuM00xMyAxOS45VjIySDE1LjFMMjEuMiAxNS45TDE5LjIgMTMuOUwxMyAxOS45TTExLjIxIDE1LjgzTDkuMjUgMTMuNDdMNi41IDE3SDEzLjEyTDE1LjY2IDE0LjU1TDEzLjk2IDEyLjI5TDExLjIxIDE1LjgzTTExIDE5LjlWMTkuMDVMMTEuMDUgMTlINVY1SDE5VjExLjMxTDIxIDkuMzhWNUMyMSAzLjkgMjAuMTEgMyAxOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMTEgMy45IDIxIDUgMjFIMTFWMTkuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlckJsYWNrV2hpdGUgPSBcIk0xOSwxOUwxMiwxMVYxOUg1TDEyLDExVjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGaWx0ZXJDZW50ZXJGb2N1cyA9IFwiTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOU0xOSwxOUgxNVYyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTVIMTlNMTksM0gxNVY1SDE5VjlIMjFWNUEyLDIgMCAwLDAgMTksM001LDVIOVYzSDVBMiwyIDAgMCwwIDMsNVY5SDVNNSwxNUgzVjE5QTIsMiAwIDAsMCA1LDIxSDlWMTlINVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlckNlbnRlckZvY3VzU3Ryb25nID0gXCJNMTIgOEM4LjQ0IDggNi42NSAxMi4zMSA5LjE3IDE0LjgzQzExLjY5IDE3LjM1IDE2IDE1LjU2IDE2IDEyQzE2IDkuNzkgMTQuMjEgOCAxMiA4TTUgMTVIM1YxOUMzIDIwLjEgMy45IDIxIDUgMjFIOVYxOUg1TTUgNUg5VjNINUMzLjkgMyAzIDMuOSAzIDVWOUg1TTE5IDNIMTVWNUgxOVY5SDIxVjVDMjEgMy45IDIwLjEgMyAxOSAzTTE5IDE5SDE1VjIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVYxNUgxOVwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyQ2VudGVyRm9jdXNTdHJvbmdPdXRsaW5lID0gXCJNMTcgMTJDMTcgNy41NSAxMS42MiA1LjMxIDguNDYgOC40NkM1LjMxIDExLjYxIDcuNTUgMTcgMTIgMTdDMTQuNzYgMTcgMTcgMTQuNzYgMTcgMTJNMTIgMTVDOS4zMyAxNSA4IDExLjc3IDkuODggOS44OEMxMS43NyA4IDE1IDkuMzMgMTUgMTJDMTUgMTMuNjYgMTMuNjYgMTUgMTIgMTVNNSAxNUgzVjE5QzMgMjAuMSAzLjkgMjEgNSAyMUg5VjE5SDVNNSA1SDlWM0g1QzMuOSAzIDMgMy45IDMgNVY5SDVNMTkgM0gxNVY1SDE5VjlIMjFWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTkgMTlIMTVWMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjE1SDE5XCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGaWx0ZXJDZW50ZXJGb2N1c1dlYWsgPSBcIk01LDE1SDNWMTlBMiwyIDAgMCwwIDUsMjFIOVYxOUg1TTUsNUg5VjNINUEyLDIgMCAwLDAgMyw1VjlINU0xOSwzSDE1VjVIMTlWOUgyMVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDE1VjIxSDE5QTIsMiAwIDAsMCAyMSwxOVYxNUgxOU0xMiw4QTQsNCAwIDAsMCA4LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDEyLDhNMTIsMTRBMiwyIDAgMCwxIDEwLDEyQTIsMiAwIDAsMSAxMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyRHJhbWEgPSBcIk0xOSwxOEg2QTQsNCAwIDAsMSAyLDE0QTQsNCAwIDAsMSA2LDEwQTQsNCAwIDAsMSAxMCwxNEgxMkMxMiwxMS4yNCAxMC4xNCw4LjkyIDcuNiw4LjIyQzguNjEsNi44OCAxMC4yLDYgMTIsNkMxNS4wMyw2IDE3LjUsOC40NyAxNy41LDExLjVWMTJIMTlBMywzIDAgMCwxIDIyLDE1QTMsMyAwIDAsMSAxOSwxOE0xOS4zNSwxMC4wNEMxOC42Nyw2LjU5IDE1LjY0LDQgMTIsNEM5LjExLDQgNi42MSw1LjY0IDUuMzYsOC4wNEMyLjM1LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyRnJhbWVzID0gXCJNMTgsOEg2VjE4SDE4TTIwLDIwSDRWNkg4LjVMMTIuMDQsMi41TDE1LjUsNkgyME0yMCw0SDE2TDEyLDBMOCw0SDRBMiwyIDAgMCwwIDIsNlYyMEEyLDIgMCAwLDAgNCwyMkgyMEEyLDIgMCAwLDAgMjIsMjBWNkEyLDIgMCAwLDAgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlckhkciA9IFwiTTE0LDZMMTAuMjUsMTFMMTMuMSwxNC44TDExLjUsMTZDOS44MSwxMy43NSA3LDEwIDcsMTBMMSwxOEgyM0wxNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlRmlsdGVyTm9uZSA9IFwiTTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0zLDVIMVYyMUEyLDIgMCAwLDAgMywyM0gxOVYyMUgzVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGaWx0ZXJUaWx0U2hpZnQgPSBcIk01LjY4LDE5Ljc0QzcuMTYsMjAuOTUgOSwyMS43NSAxMSwyMS45NVYxOS45M0M5LjU0LDE5Ljc1IDguMjEsMTkuMTcgNy4xLDE4LjMxTTEzLDE5LjkzVjIxLjk1QzE1LDIxLjc1IDE2Ljg0LDIwLjk1IDE4LjMyLDE5Ljc0TDE2Ljg5LDE4LjMxQzE1Ljc5LDE5LjE3IDE0LjQ2LDE5Ljc1IDEzLDE5LjkzTTE4LjMxLDE2LjlMMTkuNzQsMTguMzNDMjAuOTUsMTYuODUgMjEuNzUsMTUgMjEuOTUsMTNIMTkuOTNDMTkuNzUsMTQuNDYgMTkuMTcsMTUuNzkgMTguMzEsMTYuOU0xNSwxMkEzLDMgMCAwLDAgMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyTTQuMDcsMTNIMi4wNUMyLjI1LDE1IDMuMDUsMTYuODQgNC4yNiwxOC4zMkw1LjY5LDE2Ljg5QzQuODMsMTUuNzkgNC4yNSwxNC40NiA0LjA3LDEzTTUuNjksNy4xTDQuMjYsNS42OEMzLjA1LDcuMTYgMi4yNSw5IDIuMDUsMTFINC4wN0M0LjI1LDkuNTQgNC44Myw4LjIxIDUuNjksNy4xTTE5LjkzLDExSDIxLjk1QzIxLjc1LDkgMjAuOTUsNy4xNiAxOS43NCw1LjY4TDE4LjMxLDcuMUMxOS4xNyw4LjIxIDE5Ljc1LDkuNTQgMTkuOTMsMTFNMTguMzIsNC4yNkMxNi44NCwzLjA1IDE1LDIuMjUgMTMsMi4wNVY0LjA3QzE0LjQ2LDQuMjUgMTUuNzksNC44MyAxNi45LDUuNjlNMTEsNC4wN1YyLjA1QzksMi4yNSA3LjE2LDMuMDUgNS42OCw0LjI2TDcuMSw1LjY5QzguMjEsNC44MyA5LjU0LDQuMjUgMTEsNC4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZUZpbHRlclZpbnRhZ2UgPSBcIk0xMiwxNkE0LDQgMCAwLDEgOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2TTE4LjcsMTIuNEMxOC40MiwxMi4yNCAxOC4xMywxMi4xMSAxNy44NCwxMkMxOC4xMywxMS44OSAxOC40MiwxMS43NiAxOC43LDExLjZDMjAuNjIsMTAuNSAyMS42OSw4LjUgMjEuNyw2LjQxQzE5LjkxLDUuMzggMTcuNjMsNS4zIDE1LjcsNi40MUMxNS40Miw2LjU3IDE1LjE2LDYuNzYgMTQuOTIsNi45NUMxNC45Nyw2LjY0IDE1LDYuMzIgMTUsNkMxNSwzLjc4IDEzLjc5LDEuODUgMTIsMC44MUMxMC4yMSwxLjg1IDksMy43OCA5LDZDOSw2LjMyIDkuMDMsNi42NCA5LjA4LDYuOTVDOC44NCw2Ljc1IDguNTgsNi41NiA4LjMsNi40QzYuMzgsNS4yOSA0LjEsNS4zNyAyLjMsNi40QzIuMyw4LjQ3IDMuMzcsMTAuNSA1LjMsMTEuNTlDNS41OCwxMS43NSA1Ljg3LDExLjg4IDYuMTYsMTJDNS44NywxMi4xIDUuNTgsMTIuMjMgNS4zLDEyLjM5QzMuMzgsMTMuNSAyLjMxLDE1LjUgMi4zLDE3LjU4QzQuMDksMTguNjEgNi4zNywxOC42OSA4LjMsMTcuNThDOC41OCwxNy40MiA4Ljg0LDE3LjIzIDkuMDgsMTcuMDRDOS4wMywxNy4zNiA5LDE3LjY4IDksMThDOSwyMC4yMiAxMC4yMSwyMi4xNSAxMiwyMy4xOUMxMy43OSwyMi4xNSAxNSwyMC4yMiAxNSwxOEMxNSwxNy42OCAxNC45NywxNy4zNiAxNC45MiwxNy4wNUMxNS4xNiwxNy4yNSAxNS40MiwxNy40MyAxNS43LDE3LjU5QzE3LjYyLDE4LjcgMTkuOSwxOC42MiAyMS43LDE3LjU5QzIxLjY5LDE1LjUgMjAuNjIsMTMuNSAxOC43LDEyLjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VGcmFtZSA9IFwiTTEwLDE0LjI5TDYuNSwxOUgxNy40NkwxNC43NSwxNS40NkwxMi43OCwxNy44TDEwLDE0LjI5TTUsMjFWN0gxOC45NlYyMUg1TTEyLDIuNEwxNC42MSw1LjAzSDkuMzdMMTIsMi40TTUsNS4wM0M0LjUsNS4wMyA0LDUuMjIgMy42MSw1LjYxQzMuMiw2IDMsNi40NiAzLDdWMjFDMywyMS41IDMuMiwyMiAzLjYxLDIyLjM5QzQsMjIuOCA0LjUsMjMgNSwyM0gxOC45NkMxOS41LDIzIDE5Ljk2LDIyLjggMjAuMzcsMjIuMzlDMjAuNzcsMjIgMjEsMjEuNSAyMSwyMVY3QzIxLDYuNDYgMjAuNzcsNiAyMC4zNyw1LjYxQzE5Ljk2LDUuMjIgMTkuNSw1LjAzIDE4Ljk2LDUuMDNIMTZMMTIsMUw3Ljk2LDUuMDNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU1pbnVzID0gXCJNNSAzQzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE0LjA5QzE0LjAzIDIwLjY3IDE0IDIwLjM0IDE0IDIwQzE0IDE5LjMyIDE0LjEyIDE4LjY0IDE0LjM1IDE4SDVMOC41IDEzLjVMMTEgMTYuNUwxNC41IDEyTDE2LjczIDE0Ljk3QzE3LjcgMTQuMzQgMTguODQgMTQgMjAgMTRDMjAuMzQgMTQgMjAuNjcgMTQuMDMgMjEgMTQuMDlWNUMyMSAzLjg5IDIwLjEgMyAxOSAzSDVNMTYgMTlWMjFIMjRWMTlIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VNb3ZlID0gXCJNMTUsM0gxOVYwTDI0LDVMMTksMTBWN0gxNVYzTTIxLDExLjk0VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxMi4wNkMxMiwzLjMzIDEyLDMuNjcgMTIsNEE4LDggMCAwLDAgMjAsMTJDMjAuMzMsMTIgMjAuNjcsMTIgMjEsMTEuOTRNMTksMThMMTQuNSwxMkwxMSwxNi41TDguNSwxMy41TDUsMThIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VNdWx0aXBsZSA9IFwiTTIyLDE2VjRBMiwyIDAgMCwwIDIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNk0xMSwxMkwxMy4wMywxNC43MUwxNiwxMUwyMCwxNkg4TTIsNlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU11bHRpcGxlT3V0bGluZSA9IFwiTTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0zLDVIMVYyMUEyLDIgMCAwLDAgMywyM0gxOVYyMUgzTTE1Ljk2LDEwLjI5TDEzLjIxLDEzLjgzTDExLjI1LDExLjQ3TDguNSwxNUgxOS41TDE1Ljk2LDEwLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlT2ZmID0gXCJNMjEgMTcuMkw2LjggM0gxOUMyMC4xIDMgMjEgMy45IDIxIDVWMTcuMk0yMC43IDIyTDE5LjcgMjFINUMzLjkgMjEgMyAyMC4xIDMgMTlWNC4zTDIgMy4zTDMuMyAyTDIyIDIwLjdMMjAuNyAyMk0xNi44IDE4TDEyLjkgMTQuMUwxMSAxNi41TDguNSAxMy41TDUgMThIMTYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU9mZk91dGxpbmUgPSBcIk0yMiAyMC43TDMuMyAyTDIgMy4zTDMgNC4zVjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOS43TDIwLjcgMjJMMjIgMjAuN001IDE5VjYuM0wxMi42IDEzLjlMMTEuMSAxNS44TDkgMTMuMUw2IDE3SDE1LjdMMTcuNyAxOUg1TTguOCA1TDYuOCAzSDE5QzIwLjEgMyAyMSAzLjkgMjEgNVYxNy4yTDE5IDE1LjJWNUg4LjhcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZU91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTMuOTYsMTIuMjlMMTEuMjEsMTUuODNMOS4yNSwxMy40N0w2LjUsMTdIMTcuNUwxMy45NiwxMi4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZVBsdXMgPSBcIk01LDNBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxNC4wOUMxNC4wMywyMC42NyAxNCwyMC4zNCAxNCwyMEMxNCwxOS4zMiAxNC4xMiwxOC42NCAxNC4zNSwxOEg1TDguNSwxMy41TDExLDE2LjVMMTQuNSwxMkwxNi43MywxNC45N0MxNy43LDE0LjM0IDE4Ljg0LDE0IDIwLDE0QzIwLjM0LDE0IDIwLjY3LDE0LjAzIDIxLDE0LjA5VjVDMjEsMy44OSAyMC4xLDMgMTksM0g1TTE5LDE2VjE5SDE2VjIxSDE5VjI0SDIxVjIxSDI0VjE5SDIxVjE2SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlUmVtb3ZlID0gXCJNNSAzQzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjExIDMuOSAyMSA1IDIxSDE0LjA5QzE0LjAzIDIwLjY3IDE0IDIwLjM0IDE0IDIwQzE0IDE5LjMyIDE0LjEyIDE4LjY0IDE0LjM1IDE4SDVMOC41IDEzLjVMMTEgMTYuNUwxNC41IDEyTDE2LjczIDE0Ljk3QzE3LjcgMTQuMzQgMTguODQgMTQgMjAgMTRDMjAuMzQgMTQgMjAuNjcgMTQuMDMgMjEgMTQuMDlWNUMyMSAzLjg5IDIwLjEgMyAxOSAzSDVNMTYuNDcgMTcuODhMMTguNTkgMjBMMTYuNDcgMjIuMTJMMTcuODggMjMuNTRMMjAgMjEuNDFMMjIuMTIgMjMuNTRMMjMuNTQgMjIuMTJMMjEuNDEgMjBMMjMuNTQgMTcuODhMMjIuMTIgMTYuNDZMMjAgMTguNTlMMTcuODggMTYuNDdMMTYuNDYgMTcuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VTZWFyY2ggPSBcIk0xNS41LDJDMTgsMiAyMCw0IDIwLDYuNUMyMCw3LjM4IDE5Ljc1LDguMjEgMTkuMzEsOC45TDIyLjM5LDEyTDIxLDEzLjM5TDE3Ljg4LDEwLjMyQzE3LjE5LDEwLjc1IDE2LjM3LDExIDE1LjUsMTFDMTMsMTEgMTEsOSAxMSw2LjVDMTEsNCAxMywyIDE1LjUsMk0xNS41LDRBMi41LDIuNSAwIDAsMCAxMyw2LjVBMi41LDIuNSAwIDAsMCAxNS41LDlBMi41LDIuNSAwIDAsMCAxOCw2LjVBMi41LDIuNSAwIDAsMCAxNS41LDRNNy41LDE0LjVMNCwxOUgxOEwxMy41LDEzTDEwLDE3LjVMNy41LDE0LjVNMjAsMjBBMiwyIDAgMCwxIDE4LDIySDRBMiwyIDAgMCwxIDIsMjBWNkEyLDIgMCAwLDEgNCw0SDkuNUM5LjE4LDQuNzcgOSw1LjYxIDksNi41QTYuNSw2LjUgMCAwLDAgMTUuNSwxM0MxNi4xOCwxMyAxNi44NCwxMi44OSAxNy40NiwxMi43TDIwLDE1LjI0VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUltYWdlU2VhcmNoT3V0bGluZSA9IFwiTTE1LjUsOUMxNi4yLDkgMTYuNzksOC43NiAxNy4yNyw4LjI3QzE3Ljc2LDcuNzkgMTgsNy4yIDE4LDYuNUMxOCw1LjgzIDE3Ljc2LDUuMjMgMTcuMjcsNC43M0MxNi43OSw0LjIzIDE2LjIsNCAxNS41LDRDMTQuODMsNCAxNC4yMyw0LjIzIDEzLjczLDQuNzNDMTMuMjMsNS4yMyAxMyw1LjgzIDEzLDYuNUMxMyw3LjIgMTMuMjMsNy43OSAxMy43Myw4LjI3QzE0LjIzLDguNzYgMTQuODMsOSAxNS41LDlNMTkuMzEsOC45MUwyMi40MSwxMkwyMSwxMy40MUwxNy44NiwxMC4zMUMxNy4wOCwxMC43OCAxNi4yOCwxMSAxNS40NywxMUMxNC4yMiwxMSAxMy4xNiwxMC41OCAxMi4zLDkuN0MxMS40NSw4LjgzIDExLDcuNzcgMTEsNi41QzExLDUuMjcgMTEuNDUsNC4yIDEyLjMzLDMuMzNDMTMuMiwyLjQ1IDE0LjI3LDIgMTUuNSwyQzE2Ljc3LDIgMTcuODMsMi40NSAxOC43LDMuMzNDMTkuNTgsNC4yIDIwLDUuMjcgMjAsNi41QzIwLDcuMzMgMTkuNzgsOC4xMyAxOS4zMSw4LjkxTTE2LjUsMThINS41TDguMjUsMTQuNUwxMC4yMiwxNi44M0wxMi45NCwxMy4zMUwxNi41LDE4TTE4LDEzTDIwLDE1VjIwQzIwLDIwLjU1IDE5LjgxLDIxIDE5LjQxLDIxLjRDMTksMjEuNzkgMTguNTMsMjIgMTgsMjJINEMzLjQ1LDIyIDMsMjEuNzkgMi42LDIxLjRDMi4yMSwyMSAyLDIwLjU1IDIsMjBWNkMyLDUuNDcgMi4yMSw1IDIuNiw0LjU5QzMsNC4xOSAzLjQ1LDQgNCw0SDkuNUM5LjIsNC42NCA5LjAzLDUuMzEgOSw2SDRWMjBIMThWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VTaXplU2VsZWN0QWN0dWFsID0gXCJNMjEsM0gzQzIsMyAxLDQgMSw1VjE5QTIsMiAwIDAsMCAzLDIxSDIxQzIyLDIxIDIzLDIwIDIzLDE5VjVDMjMsNCAyMiwzIDIxLDNNNSwxN0w4LjUsMTIuNUwxMSwxNS41TDE0LjUsMTFMMTksMTdINVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZVNpemVTZWxlY3RMYXJnZSA9IFwiTTIxLDE1SDIzVjE3SDIxVjE1TTIxLDExSDIzVjEzSDIxVjExTTIzLDE5SDIxVjIxQzIyLDIxIDIzLDIwIDIzLDE5TTEzLDNIMTVWNUgxM1YzTTIxLDdIMjNWOUgyMVY3TTIxLDNWNUgyM0MyMyw0IDIyLDMgMjEsM00xLDdIM1Y5SDFWN00xNywzSDE5VjVIMTdWM00xNywxOUgxOVYyMUgxN1YxOU0zLDNDMiwzIDEsNCAxLDVIM1YzTTksM0gxMVY1SDlWM001LDNIN1Y1SDVWM00xLDExVjE5QTIsMiAwIDAsMCAzLDIxSDE1VjExSDFNMywxOUw1LjUsMTUuNzlMNy4yOSwxNy45NEw5Ljc5LDE0LjcyTDEzLDE5SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1hZ2VTaXplU2VsZWN0U21hbGwgPSBcIk0yMywxNUgyMVYxN0gyM1YxNU0yMywxMUgyMVYxM0gyM1YxMU0yMywxOUgyMVYyMUMyMiwyMSAyMywyMCAyMywxOU0xNSwzSDEzVjVIMTVWM00yMyw3SDIxVjlIMjNWN00yMSwzVjVIMjNDMjMsNCAyMiwzIDIxLDNNMywyMUgxMVYxNUgxVjE5QTIsMiAwIDAsMCAzLDIxTTMsN0gxVjlIM1Y3TTE1LDE5SDEzVjIxSDE1VjE5TTE5LDNIMTdWNUgxOVYzTTE5LDE5SDE3VjIxSDE5VjE5TTMsM0MyLDMgMSw0IDEsNUgzVjNNMywxMUgxVjEzSDNWMTFNMTEsM0g5VjVIMTFWM003LDNINVY1SDdWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbWFnZVRleHQgPSBcIk0yMiAxM0gxNFYxMUgyMlYxM00yMiA3SDE0VjlIMjJWN00xNCAxN0gyMlYxNUgxNFYxN00xMiA5VjE1QzEyIDE2LjEgMTEuMSAxNyAxMCAxN0g0QzIuOSAxNyAyIDE2LjEgMiAxNVY5QzIgNy45IDIuOSA3IDQgN0gxMEMxMS4xIDcgMTIgNy45IDEyIDlNMTAuNSAxNUw4LjMgMTJMNi41IDE0LjNMNS4zIDEyLjhMMy41IDE1SDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW1wb3J0ID0gXCJNMTQsMTJMMTAsOFYxMUgyVjEzSDEwVjE2TTIwLDE4VjZDMjAsNC44OSAxOS4xLDQgMTgsNEg2QTIsMiAwIDAsMCA0LDZWOUg2VjZIMThWMThINlYxNUg0VjE4QTIsMiAwIDAsMCA2LDIwSDE4QTIsMiAwIDAsMCAyMCwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveCA9IFwiTTE5LDE1SDE1QTMsMyAwIDAsMSAxMiwxOEEzLDMgMCAwLDEgOSwxNUg1VjVIMTlNMTksM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5ib3hBcnJvd0Rvd24gPSBcIk0xNiwxMEgxNFY3SDEwVjEwSDhMMTIsMTRNMTksMTVIMTVBMywzIDAgMCwxIDEyLDE4QTMsMyAwIDAsMSA5LDE1SDVWNUgxOU0xOSwzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEFycm93RG93bk91dGxpbmUgPSBcIk0xOSAzSDVBMiAyIDAgMCAwIDMgNVYxOUEyIDIgMCAwIDAgNSAyMUgxOUEyIDIgMCAwIDAgMjEgMTlWNUEyIDIgMCAwIDAgMTkgM001IDE5VjE3SDguMTNBNC4xMyA0LjEzIDAgMCAwIDkuNCAxOU0xOSAxOUgxNC42QTQuMTMgNC4xMyAwIDAgMCAxNS44NyAxN0gxOU0xOSAxNUgxNFYxNkEyIDIgMCAwIDEgMTAgMTZWMTVINVY1SDE5TTE2IDEwSDE0VjdIMTBWMTBIOEwxMiAxNFwiO1xyXG5leHBvcnQgdmFyIG1kaUluYm94QXJyb3dVcCA9IFwiTTE0LDE0SDEwVjExSDhMMTIsN0wxNiwxMUgxNFYxNE0xNiwxMU01LDE1VjVIMTlWMTVIMTVBMywzIDAgMCwxIDEyLDE4QTMsMyAwIDAsMSA5LDE1SDVNMTksM0g1QzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEFycm93VXBPdXRsaW5lID0gXCJNMTkgM0g1QTIgMiAwIDAgMCAzIDVWMTlBMiAyIDAgMCAwIDUgMjFIMTlBMiAyIDAgMCAwIDIxIDE5VjVBMiAyIDAgMCAwIDE5IDNNNSAxOVYxN0g4LjEzQTQuMTMgNC4xMyAwIDAgMCA5LjQgMTlNMTkgMTlIMTQuNkE0LjEzIDQuMTMgMCAwIDAgMTUuODcgMTdIMTlNMTkgMTVIMTRWMTZBMiAyIDAgMCAxIDEwIDE2VjE1SDVWNUgxOU04IDExSDEwVjE0SDE0VjExSDE2TDEyIDdcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEZ1bGwgPSBcIk0xOSAxNVY1SDVWMTVIOUM5IDE2LjY2IDEwLjM0IDE4IDEyIDE4QzEzLjY2IDE4IDE1IDE2LjY2IDE1IDE1SDE5TTE5IDNDMjAuMSAzIDIxIDMuOSAyMSA1VjE5QzIxIDIwLjEgMjAuMSAyMSAxOSAyMUg1QzMuODkgMjEgMyAyMC4xIDMgMTlMMyA1QzMgMy45IDMuODkgMyA1IDNIMTlNNyAxM1YxMUgxN1YxM0g3TTcgOVY3SDE3VjlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveEZ1bGxPdXRsaW5lID0gXCJNMTkgM0MyMC4xIDMgMjEgMy45IDIxIDVWMTlDMjEgMjAuMSAyMC4xIDIxIDE5IDIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzSDE5TTUgMTlIOS40QzguNzkgMTguNDcgOC4zNSAxNy43OCA4LjEzIDE3SDVWMTlNMTkgMTlWMTdIMTUuODdDMTUuNjUgMTcuNzggMTUuMjEgMTguNDcgMTQuNiAxOUgxOU0xOSAxNVY1SDVWMTVIMTBWMTZDMTAgMTguNjcgMTQgMTguNjcgMTQgMTZWMTVIMTlNNyA3SDE3VjlIN1Y3TTE3IDExVjEzSDdWMTFIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5ib3hNdWx0aXBsZSA9IFwiTTE5LDhWNUg1VjhIOUEzLDMgMCAwLDAgMTIsMTFBMywzIDAgMCwwIDE1LDhIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxMkEyLDIgMCAwLDEgMTksMTRINUEyLDIgMCAwLDEgMywxMlY1QTIsMiAwIDAsMSA1LDNIMTlNMywxNUg5QTMsMyAwIDAsMCAxMiwxOEEzLDMgMCAwLDAgMTUsMTVIMjFWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5ib3hNdWx0aXBsZU91dGxpbmUgPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjEyQTIsMiAwIDAsMSAxOSwxNEg1QTIsMiAwIDAsMSAzLDEyVjVBMiwyIDAgMCwxIDUsM0gxOU01LDEwVjEySDkuNEM4LjgsMTEuNDcgOC4zNCwxMC43OCA4LjEzLDEwSDVNMTksMTJWMTBIMTUuODdDMTUuNjYsMTAuNzggMTUuMiwxMS40NyAxNC42LDEySDE5TTE5LDhWNUg1VjhIMTBWOUMxMCwxMC4wNyAxMC45MywxMSAxMiwxMUMxMy4wNywxMSAxNCwxMC4wNyAxNCw5VjhIMTlNMjEsMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWMTVIMTBWMTZDMTAsMTcuMDcgMTAuOTMsMTggMTIsMThDMTMuMDcsMTggMTQsMTcuMDcgMTQsMTZWMTVIMjFWMTlNNSwxN1YxOUg5LjRDOC44LDE4LjQ3IDguMzQsMTcuNzggOC4xMywxN0g1TTE5LDE5VjE3SDE1Ljg3QzE1LjY2LDE3Ljc4IDE1LjIsMTguNDcgMTQuNiwxOUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmJveE91dGxpbmUgPSBcIk0xOSAzSDVBMiAyIDAgMCAwIDMgNVYxOUEyIDIgMCAwIDAgNSAyMUgxOUEyIDIgMCAwIDAgMjEgMTlWNUEyIDIgMCAwIDAgMTkgM001IDE5VjE3SDguMTNBNC4xMyA0LjEzIDAgMCAwIDkuNCAxOU0xOSAxOUgxNC42QTQuMTMgNC4xMyAwIDAgMCAxNS44NyAxN0gxOU0xOSAxNUgxNFYxNkEyIDIgMCAwIDEgMTAgMTZWMTVINVY1SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluYm94UmVtb3ZlID0gXCJNMTkgMTVIMTVDMTUgMTYuNyAxMy43IDE4IDEyIDE4UzkgMTYuNyA5IDE1SDVWNUgxOU0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTQuMSA2LjVMMTUuNSA3LjlMMTMuNCAxMEwxNS41IDEyLjFMMTQuMSAxMy41TDEyIDExLjRMOS45IDEzLjVMOC41IDEyLjFMMTAuNiAxMEw4LjUgNy45TDkuOSA2LjVMMTIgOC42TDE0LjEgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluYm94UmVtb3ZlT3V0bGluZSA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM001IDE5VjE3SDguMUM4LjMgMTcuOCA4LjggMTguNSA5LjQgMTlNMTkgMTlIMTQuNkMxNS4yIDE4LjUgMTUuNyAxNy44IDE1LjkgMTdIMTlNMTkgMTVIMTRWMTZDMTQgMTcuMSAxMy4xIDE4IDEyIDE4UzEwIDE3LjEgMTAgMTZWMTVINVY1SDE5VjE1TTE0LjEgNi41TDE1LjUgNy45TDEzLjQgMTBMMTUuNSAxMi4xTDE0LjEgMTMuNUwxMiAxMS40TDkuOSAxMy41TDguNSAxMi4xTDEwLjYgMTBMOC41IDcuOUw5LjkgNi41TDEyIDguNkwxNC4xIDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmNvZ25pdG8gPSBcIk0xNy4wNiAxM0MxNS4yIDEzIDEzLjY0IDE0LjMzIDEzLjI0IDE2LjFDMTIuMjkgMTUuNjkgMTEuNDIgMTUuOCAxMC43NiAxNi4wOUMxMC4zNSAxNC4zMSA4Ljc5IDEzIDYuOTQgMTNDNC43NyAxMyAzIDE0Ljc5IDMgMTdDMyAxOS4yMSA0Ljc3IDIxIDYuOTQgMjFDOSAyMSAxMC42OCAxOS4zOCAxMC44NCAxNy4zMkMxMS4xOCAxNy4wOCAxMi4wNyAxNi42MyAxMy4xNiAxNy4zNEMxMy4zNCAxOS4zOSAxNSAyMSAxNy4wNiAyMUMxOS4yMyAyMSAyMSAxOS4yMSAyMSAxN0MyMSAxNC43OSAxOS4yMyAxMyAxNy4wNiAxM002Ljk0IDE5Ljg2QzUuMzggMTkuODYgNC4xMyAxOC41OCA0LjEzIDE3UzUuMzkgMTQuMTQgNi45NCAxNC4xNEM4LjUgMTQuMTQgOS43NSAxNS40MiA5Ljc1IDE3UzguNSAxOS44NiA2Ljk0IDE5Ljg2TTE3LjA2IDE5Ljg2QzE1LjUgMTkuODYgMTQuMjUgMTguNTggMTQuMjUgMTdTMTUuNSAxNC4xNCAxNy4wNiAxNC4xNEMxOC42MiAxNC4xNCAxOS44OCAxNS40MiAxOS44OCAxN1MxOC42MSAxOS44NiAxNy4wNiAxOS44Nk0yMiAxMC41SDJWMTJIMjJWMTAuNU0xNS41MyAyLjYzQzE1LjMxIDIuMTQgMTQuNzUgMS44OCAxNC4yMiAyLjA1TDEyIDIuNzlMOS43NyAyLjA1TDkuNzIgMi4wNEM5LjE5IDEuODkgOC42MyAyLjE3IDguNDMgMi42OEw2IDlIMThMMTUuNTYgMi42OEwxNS41MyAyLjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUluY29nbml0b0NpcmNsZSA9IFwiTTEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMlMxNy41IDIyIDEyIDIyIDIgMTcuNSAyIDEyIDYuNSAyIDEyIDJNMTQuOTIgMTIuODFDMTMuODQgMTIuODEgMTIuOTUgMTMuNTYgMTIuNzEgMTQuNTZDMTIuMTcgMTQuMzMgMTEuNjYgMTQuMzkgMTEuMjkgMTQuNTVDMTEuMDUgMTMuNTUgMTAuMTUgMTIuODEgOS4wOCAxMi44MUM3LjgzIDEyLjgxIDYuODIgMTMuODIgNi44MiAxNS4wN0M2LjgyIDE2LjMyIDcuODMgMTcuMzMgOS4wOCAxNy4zM0MxMC4yOCAxNy4zMyAxMS4yNCAxNi40MiAxMS4zMyAxNS4yNUMxMS41MyAxNS4xMiAxMi4wNCAxNC44NiAxMi42NyAxNS4yNkMxMi43NyAxNi40MiAxMy43MyAxNy4zMyAxNC45MiAxNy4zM0MxNi4xNyAxNy4zMyAxNy4xOCAxNi4zMiAxNy4xOCAxNS4wN0MxNy4xOCAxMy44MiAxNi4xNyAxMi44MSAxNC45MiAxMi44MU05LjA4IDEzLjQ1QzEwIDEzLjQ1IDEwLjcgMTQuMTggMTAuNyAxNS4wN0MxMC43IDE1Ljk2IDEwIDE2LjY5IDkuMDggMTYuNjlDOC4xOSAxNi42OSA3LjQ2IDE1Ljk2IDcuNDYgMTUuMDdDNy40NiAxNC4xOCA4LjE5IDEzLjQ1IDkuMDggMTMuNDVNMTQuOTIgMTMuNDVDMTUuODEgMTMuNDUgMTYuNTQgMTQuMTggMTYuNTQgMTUuMDdDMTYuNTQgMTUuOTYgMTUuODEgMTYuNjkgMTQuOTIgMTYuNjlDMTQgMTYuNjkgMTMuMyAxNS45NiAxMy4zIDE1LjA3QzEzLjMgMTQuMTggMTQgMTMuNDUgMTQuOTIgMTMuNDVNMTcuODMgMTEuNUg2LjE3VjEyLjE3SDE3LjgzVjExLjVNMTQuMTUgNi44OUMxNCA2LjU5IDEzLjY3IDYuNDMgMTMuMzUgNi41M0wxMiA3TDEwLjY1IDYuNTNMMTAuNjEgNi41QzEwLjI5IDYuNDMgOS45NSA2LjYxIDkuODQgNi45Mkw4LjM2IDEwLjgzSDE1LjY0TDE0LjE2IDYuOTJMMTQuMTUgNi44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlJbmNvZ25pdG9DaXJjbGVPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDQuMDYgNS45NUMyLjc3IDcuNjMgMiA5LjcyIDIgMTJDMiAxNy41IDYuNSAyMiAxMiAyMkMxNC4yOCAyMiAxNi4zNyAyMS4yMyAxOC4wNSAxOS45NEwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk04Ljk0IDEwLjgzSDguMzZMOC41IDEwLjQxTDguOTQgMTAuODNNNi4xNyAxMS41SDkuNjFMMTAuMjggMTIuMTdINi4xN1YxMS41TTE0LjkyIDE3LjMzQzEzLjczIDE3LjMzIDEyLjc3IDE2LjQyIDEyLjY3IDE1LjI2QzEyLjA0IDE0Ljg2IDExLjUzIDE1LjEyIDExLjMzIDE1LjI1QzExLjI0IDE2LjQyIDEwLjI4IDE3LjMzIDkuMDggMTcuMzNDNy44MyAxNy4zMyA2LjgyIDE2LjMyIDYuODIgMTUuMDdDNi44MiAxMy44MiA3LjgzIDEyLjgxIDkuMDggMTIuODFDMTAuMTUgMTIuODEgMTEuMDUgMTMuNTUgMTEuMjkgMTQuNTVDMTEuNjUgMTQuNCAxMi4xMyAxNC4zNCAxMi42NSAxNC41NEwxMy4zMSAxNS4yQzEzLjM3IDE2IDE0IDE2LjYxIDE0Ljc4IDE2LjY3TDE1LjM4IDE3LjI3QzE1LjIzIDE3LjMgMTUuMDggMTcuMzMgMTQuOTIgMTcuMzNNOS45NCA2Ljc0TDYuNzIgMy41QzguMjUgMi41NiAxMC4wNiAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy45NCAyMS40NCAxNS43NSAyMC41IDE3LjI4TDE1LjM3IDEyLjE3SDE3LjgzVjExLjVIMTQuN0wxNC4wMyAxMC44M0gxNS42NEwxNC4xNiA2LjkyTDE0LjE1IDYuODlDMTQgNi41OSAxMy42NyA2LjQzIDEzLjM1IDYuNTNMMTIgN0wxMC42NSA2LjUzTDEwLjYxIDYuNUMxMC4zNiA2LjQ1IDEwLjEgNi41NSA5Ljk0IDYuNzRNMTAuNyAxNS4wN0MxMC43IDE1Ljk2IDEwIDE2LjY5IDkuMDggMTYuNjlDOC4xOSAxNi42OSA3LjQ2IDE1Ljk2IDcuNDYgMTUuMDdTOC4xOSAxMy40NSA5LjA4IDEzLjQ1QzEwIDEzLjQ1IDEwLjcgMTQuMTggMTAuNyAxNS4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbmNvZ25pdG9PZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDYuMzEgOC4yTDYgOUg3LjExTDguNjEgMTAuNUgyVjEySDEwLjExTDEzLjUgMTUuMzdDMTMuMzggMTUuNjEgMTMuMyAxNS44NSAxMy4yNCAxNi4xQzEyLjI5IDE1LjY5IDExLjQxIDE1LjggMTAuNzYgMTYuMDlDMTAuMzUgMTQuMzEgOC43OSAxMyA2Ljk0IDEzQzQuNzcgMTMgMyAxNC43OSAzIDE3QzMgMTkuMjEgNC43NyAyMSA2Ljk0IDIxQzkgMjEgMTAuNjggMTkuMzggMTAuODQgMTcuMzJDMTEuMTggMTcuMDggMTIuMDcgMTYuNjMgMTMuMTYgMTcuMzRDMTMuMzQgMTkuMzkgMTUgMjEgMTcuMDYgMjFDMTcuNjYgMjEgMTguMjIgMjAuODYgMTguNzIgMjAuNjFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNi45NCAxOS44NkM1LjM4IDE5Ljg2IDQuMTMgMTguNTggNC4xMyAxN0M0LjEzIDE1LjQyIDUuMzkgMTQuMTQgNi45NCAxNC4xNEM4LjUgMTQuMTQgOS43NSAxNS40MiA5Ljc1IDE3QzkuNzUgMTguNTggOC41IDE5Ljg2IDYuOTQgMTkuODZNMTcuMDYgMTkuODZDMTUuNSAxOS44NiAxNC4yNSAxOC41OCAxNC4yNSAxN0MxNC4yNSAxNi43NCAxNC4yOSAxNi41IDE0LjM2IDE2LjI1TDE3Ljg0IDE5LjczQzE3LjU5IDE5LjgxIDE3LjM0IDE5Ljg2IDE3LjA2IDE5Ljg2TTIyIDEySDE1LjJMMTMuNyAxMC41SDIyVjEyTTE3LjA2IDEzQzE5LjIzIDEzIDIxIDE0Ljc5IDIxIDE3QzIxIDE3LjI1IDIwLjk3IDE3LjUgMjAuOTMgMTcuNzNMMTkuODQgMTYuNjRDMTkuNjggMTUuMzQgMTguNjYgMTQuMzIgMTcuMzggMTQuMTdMMTYuMjkgMTMuMDlDMTYuNTQgMTMuMDMgMTYuOCAxMyAxNy4wNiAxM00xMi4yIDlMNy43MiA0LjVMOC40MyAyLjY4QzguNjMgMi4xNyA5LjE5IDEuODkgOS43MiAyLjA0TDkuNzcgMi4wNUwxMiAyLjc5TDE0LjIyIDIuMDVDMTQuNzUgMS44OCAxNS4zMiAyLjE0IDE1LjU0IDIuNjNMMTUuNTYgMi42OEwxOCA5SDEyLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5maW5pdHkgPSBcIk0xOC42LDYuNjJDMjEuNTgsNi42MiAyNCw5IDI0LDEyQzI0LDE0Ljk2IDIxLjU4LDE3LjM3IDE4LjYsMTcuMzdDMTcuMTUsMTcuMzcgMTUuOCwxNi44MSAxNC43OCwxNS44TDEyLDEzLjM0TDkuMTcsMTUuODVDOC4yLDE2LjgyIDYuODQsMTcuMzggNS40LDE3LjM4QzIuNDIsMTcuMzggMCwxNC45NiAwLDEyQzAsOS4wNCAyLjQyLDYuNjIgNS40LDYuNjJDNi44NCw2LjYyIDguMiw3LjE4IDkuMjIsOC4yTDEyLDEwLjY2TDE0LjgzLDguMTVDMTUuOCw3LjE4IDE3LjE2LDYuNjIgMTguNiw2LjYyTTcuOCwxNC4zOUwxMC41LDEyTDcuODQsOS42NUM3LjE2LDguOTcgNi4zMSw4LjYyIDUuNCw4LjYyQzMuNTMsOC42MiAyLDEwLjEzIDIsMTJDMiwxMy44NyAzLjUzLDE1LjM4IDUuNCwxNS4zOEM2LjMxLDE1LjM4IDcuMTYsMTUuMDMgNy44LDE0LjM5TTE2LjIsOS42MUwxMy41LDEyTDE2LjE2LDE0LjM1QzE2Ljg0LDE1LjAzIDE3LjcsMTUuMzggMTguNiwxNS4zOEMyMC40NywxNS4zOCAyMiwxMy44NyAyMiwxMkMyMiwxMC4xMyAyMC40Nyw4LjYyIDE4LjYsOC42MkMxNy42OSw4LjYyIDE2Ljg0LDguOTcgMTYuMiw5LjYxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUluZm9ybWF0aW9uID0gXCJNMTMsOUgxMVY3SDEzTTEzLDE3SDExVjExSDEzTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUluZm9ybWF0aW9uT3V0bGluZSA9IFwiTTExLDlIMTNWN0gxMU0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTExLDE3SDEzVjExSDExVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluZm9ybWF0aW9uVmFyaWFudCA9IFwiTTEzLjUsNEExLjUsMS41IDAgMCwwIDEyLDUuNUExLjUsMS41IDAgMCwwIDEzLjUsN0ExLjUsMS41IDAgMCwwIDE1LDUuNUExLjUsMS41IDAgMCwwIDEzLjUsNE0xMy4xNCw4Ljc3QzExLjk1LDguODcgOC43LDExLjQ2IDguNywxMS40NkM4LjUsMTEuNjEgOC41NiwxMS42IDguNzIsMTEuODhDOC44OCwxMi4xNSA4Ljg2LDEyLjE3IDkuMDUsMTIuMDRDOS4yNSwxMS45MSA5LjU4LDExLjcgMTAuMTMsMTEuMzZDMTIuMjUsMTAgMTAuNDcsMTMuMTQgOS41NiwxOC40M0M5LjIsMjEuMDUgMTEuNTYsMTkuNyAxMi4xNywxOS4zQzEyLjc3LDE4LjkxIDE0LjM4LDE3LjggMTQuNTQsMTcuNjlDMTQuNzYsMTcuNTQgMTQuNiwxNy40MiAxNC40MywxNy4xN0MxNC4zMSwxNyAxNC4xOSwxNy4xMiAxNC4xOSwxNy4xMkMxMy41NCwxNy41NSAxMi4zNSwxOC40NSAxMi4xOSwxNy44OEMxMiwxNy4zMSAxMy4yMiwxMy40IDEzLjg5LDEwLjcxQzE0LDEwLjA3IDE0LjMsOC42NyAxMy4xNCw4Ljc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUluc3RhZ3JhbSA9IFwiTTcuOCwySDE2LjJDMTkuNCwyIDIyLDQuNiAyMiw3LjhWMTYuMkE1LjgsNS44IDAgMCwxIDE2LjIsMjJINy44QzQuNiwyMiAyLDE5LjQgMiwxNi4yVjcuOEE1LjgsNS44IDAgMCwxIDcuOCwyTTcuNiw0QTMuNiwzLjYgMCAwLDAgNCw3LjZWMTYuNEM0LDE4LjM5IDUuNjEsMjAgNy42LDIwSDE2LjRBMy42LDMuNiAwIDAsMCAyMCwxNi40VjcuNkMyMCw1LjYxIDE4LjM5LDQgMTYuNCw0SDcuNk0xNy4yNSw1LjVBMS4yNSwxLjI1IDAgMCwxIDE4LjUsNi43NUExLjI1LDEuMjUgMCAwLDEgMTcuMjUsOEExLjI1LDEuMjUgMCAwLDEgMTYsNi43NUExLjI1LDEuMjUgMCAwLDEgMTcuMjUsNS41TTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSW5zdHJ1bWVudFRyaWFuZ2xlID0gXCJNMTEuNSAySDEwLjVWNi4yQzEwLjQgNi4zIDEwLjMgNi4zIDEwLjIgNi41TDIuMSAyMC43QzEuOCAyMS4zIDIuMiAyMiAyLjkgMjJIMTZWMjBINC44TDExIDkuMkwxNi43IDE5LjJMMTguNCAxOC4yTDExLjggNi40TDExLjUgNi4xVjJNMjEgNkgyMFYxOEwxOS41IDIySDIxLjVMMjEgMThWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlJbnZlcnRDb2xvcnMgPSBcIk0xMiwxOS41OFYxOS41OEMxMC40LDE5LjU4IDguODksMTguOTYgNy43NiwxNy44M0M2LjYyLDE2LjY5IDYsMTUuMTkgNiwxMy41OEM2LDEyIDYuNjIsMTAuNDcgNy43Niw5LjM0TDEyLDUuMU0xNy42Niw3LjkzTDEyLDIuMjdWMi4yN0w2LjM0LDcuOTNDMy4yMiwxMS4wNSAzLjIyLDE2LjEyIDYuMzQsMTkuMjRDNy45LDIwLjggOS45NSwyMS41OCAxMiwyMS41OEMxNC4wNSwyMS41OCAxNi4xLDIwLjggMTcuNjYsMTkuMjRDMjAuNzgsMTYuMTIgMjAuNzgsMTEuMDUgMTcuNjYsNy45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlJbnZlcnRDb2xvcnNPZmYgPSBcIk0yMC42NSwyMC44N0wxOC4zLDE4LjVMMTIsMTIuMjNMOC40NCw4LjY2TDcsNy4yNUw0LjI3LDQuNUwzLDUuNzdMNS43OCw4LjU1QzMuMjMsMTEuNjkgMy40MiwxNi4zMSA2LjM0LDE5LjI0QzcuOSwyMC44IDkuOTUsMjEuNTggMTIsMjEuNThDMTMuNzksMjEuNTggMTUuNTcsMjEgMTcuMDMsMTkuOEwxOS43MywyMi41TDIxLDIxLjIzTDIwLjY1LDIwLjg3TTEyLDE5LjU5QzEwLjQsMTkuNTkgOC44OSwxOC45NyA3Ljc2LDE3LjgzQzYuNjIsMTYuNjkgNiwxNS4xOSA2LDEzLjU5QzYsMTIuMjcgNi40MywxMSA3LjIxLDEwTDEyLDE0Ljc3VjE5LjU5TTEyLDUuMVY5LjY4TDE5LjI1LDE2Ljk0QzIwLjYyLDE0IDIwLjA5LDEwLjM3IDE3LjY1LDcuOTNMMTIsMi4yN0w4LjMsNS45N0w5LjcxLDcuMzhMMTIsNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaUlvYnJva2VyID0gXCJNMTIgMkMxMS41IDIgMTEgMi4wNCAxMC41IDIuMTFWNC44NUMxMSA0Ljc1IDExLjUgNC43IDEyIDQuN0MxMi41IDQuNyAxMyA0Ljc1IDEzLjUgNC44NVYyLjEyQzEzIDIuMDQgMTIuNSAyIDEyIDJNOS44MiAyLjI1QzUuNCAzLjI1IDIuMTEgNy4yNCAyLjExIDEyQzIuMTEgMTcuNSA2LjUzIDIyIDEyIDIyQzE3LjQ3IDIyIDIxLjg5IDE3LjUgMjEuODkgMTJDMjEuODkgNy4yNCAxOC42IDMuMjUgMTQuMTkgMi4yNVY1LjAzQzE3LjE3IDUuOTYgMTkuMzQgOC43MyAxOS4zNCAxMkMxOS4zNCAxNiAxNi4wNSAxOS4zIDEyIDE5LjNDNy45NiAxOS4zIDQuNjcgMTYgNC42NyAxMkM0LjY3IDguNzMgNi44NCA1Ljk2IDkuODIgNS4wM00xMiA1LjQ1QzExLjUgNS40NSAxMSA1LjUgMTAuNSA1LjYyVjE4LjI3QzExIDE4LjM4IDExLjUgMTguNDQgMTIgMTguNDRDMTIuNSAxOC40NCAxMyAxOC4zOSAxMy41IDE4LjI3VjUuNjJDMTMgNS41IDEyLjUgNS40NSAxMiA1LjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUlwID0gXCJNMTYsMTFIMTRWOUgxNlYxMU0zLDVBMiwyIDAgMCwxIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVNMTAsN0g4VjE3SDEwVjdNMTIsMTdIMTRWMTNIMTZBMiwyIDAgMCwwIDE4LDExVjlBMiwyIDAgMCwwIDE2LDdIMTJWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXBOZXR3b3JrID0gXCJNMTUsOUgxM1Y3SDE1VjlNMjIsMjBWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdIN0EyLDIgMCAwLDEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdBMiwyIDAgMCwxIDE5LDVWMTVBMiwyIDAgMCwxIDE3LDE3SDEzVjE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMk05LDVIN1YxNUg5VjVNMTEsMTVIMTNWMTFIMTVBMiwyIDAgMCwwIDE3LDlWN0EyLDIgMCAwLDAgMTUsNUgxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlJcE5ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xMCw2SDhWMTRIMTBWNk0xNCw2SDExVjE0SDEzVjEySDE0QTIsMiAwIDAsMCAxNiwxMFY4QTIsMiAwIDAsMCAxNCw2TTE0LDEwSDEzVjhIMTRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXBvZCA9IFwiTTcsMkEyLDIgMCAwLDAgNSw0VjIwQTIsMiAwIDAsMCA3LDIySDE3QTIsMiAwIDAsMCAxOSwyMFY0QTIsMiAwIDAsMCAxNywySDdNNyw0SDE3VjEwSDdWNE0xMiwxMkE0LDQgMCAwLDEgMTYsMTZBNCw0IDAgMCwxIDEyLDIwQTQsNCAwIDAsMSA4LDE2QTQsNCAwIDAsMSAxMiwxMk0xMiwxNEEyLDIgMCAwLDAgMTAsMTZBMiwyIDAgMCwwIDEyLDE4QTIsMiAwIDAsMCAxNCwxNkEyLDIgMCAwLDAgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXNsYW0gPSBcIk0xMi4zLDJDMTIuMiwyIDEyLjEsMiAxMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJDMTUsMjIgMTYuNywyMSAxOC41LDE5LjVDMTMsMjEgOCwxNyA4LDEyQzgsNyAxMywzIDE4LjUsNC41QzE2Ljg2LDIuODYgMTQuNjIsMS45NiAxMi4zLDJNMTYuOCw2LjJMMTUuMyw5LjdMMTEuNiwxMEwxNC41LDEyLjVMMTMuNiwxNkwxNi44LDE0TDIwLDE2TDE5LDEyLjVMMjIsMTBMMTguMyw5LjdMMTYuOCw2LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSXNsYW5kID0gXCJNMjAgMjBDMTguNjEgMjAgMTcuMjIgMTkuNTMgMTYgMTguNjdDMTMuNTYgMjAuMzggMTAuNDQgMjAuMzggOCAxOC42N0M2Ljc4IDE5LjUzIDUuMzkgMjAgNCAyMEgyVjIySDRDNS4zNyAyMiA2Ljc0IDIxLjY1IDggMjFDMTAuNSAyMi4zIDEzLjUgMjIuMyAxNiAyMUMxNy4yNiAyMS42NSAxOC42MiAyMiAyMCAyMkgyMlYyMEgyME0yMC43OCAxOUgyMEMxOC44MiAxOSAxNy42NCAxOC42IDE2LjU4IDE3Ljg1TDE2IDE3LjQ1TDE1LjQyIDE3Ljg1QzE0LjM5IDE4LjU3IDEzLjIxIDE4Ljk1IDEyIDE4Ljk1QzEwLjc3IDE4Ljk1IDkuNTkgMTguNTcgOC41NiAxNy44NUw4IDE3LjQ1TDcuNDMgMTcuODVDNi4zNiAxOC42IDUuMTggMTkgNCAxOUgzLjIyQzMuNzUgMTcuNTQgNS41OCAxNSAxMiAxNUMxNCAxNSAxNSAxNS4yNCAxNSAxNS4yNEMxNS42OCAxMy44NyAxNi44MyAxMC43NyAxNiA2LjgyTDE3LjA2IDcuNTNDMTcuMzkgOC45NiAxOCAxMS43NSAxNi44IDE1LjY1QzE5LjQzIDE2LjUgMjAuNDIgMTggMjAuNzggMTlNMjIgNy41OUMyMS4yMSA2LjUgMjAgNS43MSAxOC41OCA1LjUzQzE4LjcgNS42NyAxOC44MSA1LjgzIDE4LjkyIDZDMjAuMTIgNy45MSAxOS44NyAxMC4zMiAxOC40NyAxMS45NUMxOS4wNiAxMC41IDE5IDguNzkgMTguMDggNy4zNkMxOCA3LjI4IDE3Ljk2IDcuMiAxNy45IDcuMTFDMTcuNSA2LjUzIDE2Ljk2IDYuMDYgMTYuMzggNS43MkMxNC4zNSA2LjM3IDEyLjg4IDguMjcgMTIuODggMTAuNUMxMi44OCAxMS4wMyAxMi45NiAxMS41MyAxMy4xIDEyQzEyLjUgMTEuMTcgMTIuMTYgMTAuMTcgMTIuMTYgOS4wN0MxMi4xNiA3LjQxIDEyLjk2IDUuOTUgMTQuMiA1LjAzQzEzLjE2IDQuOTUgMTIuMDkgNS4xOCAxMS4xNCA1Ljc4QzEwLjcgNi4wNSAxMC4zMiA2LjM4IDEwIDYuNzZDMTAuMzkgNS44MiAxMS4wNSA1IDEyIDQuNEMxMy4wNCAzLjc0IDE0LjI1IDMuNSAxNS4zOSAzLjY5QzE1LjEgMy4yOSAxNC43NSAyLjkyIDE0LjMzIDIuNkMxMy45MiAyLjI5IDEzLjQ3IDIuMDUgMTMgMS44OEMxNCAxLjkxIDE1LjA0IDIuMjQgMTUuOTEgMi44OUMxNi4zNSAzLjIyIDE2LjcgMy42MiAxNyA0LjA1QzE3LjA2IDQuMDUgMTcuMTIgNC4wNCAxNy4xOSA0LjA0QzE5LjQ1IDQuMDQgMjEuMzcgNS41MyAyMiA3LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUl2QmFnID0gXCJNMTQgMUgxMEM1IDEgNSAzIDUgM1YxNUM1IDE1IDUgMTcgMTAgMTdWMTlIMTFWMjBDMTEgMjEuMjEgMTEuOCAyMyAxNCAyM0gxOFYyMUgxNEMxMy4xOSAyMSAxMyAyMC40NSAxMyAyMFYxOUgxNFYxN0MxOSAxNyAxOSAxNSAxOSAxNVYzQzE5IDMgMTkgMSAxNCAxTTE3IDEySDE0VjExSDE3VjEyTTE3IDVIMTRWNkgxN1Y4SDE0VjlIMTdWMTBIN1YzLjVDNy4zIDMuMzIgOC4xMyAzIDEwIDNIMTRDMTUuODggMyAxNi43IDMuMzIgMTcgMy41VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSmFiYmVyID0gXCJNNS4yMyw1LjcyQzQuNjEsNS41NSA1LDMuMTkgNSwzLjE3QzUsMy4xOSAxMi41OCwtMC43MSAxNi43LDUuNzNDMjAuOCwxMi4xNSAxNS44NiwxNC44NiAxMy45NywxNi4wNkMxMi4wOCwxNy4yNyAxMi43MywxOS43MiAxMi43MywyMC4xM0MxMi43MywyMC41MyAxMi4xNiwyMC45NyAxMiwyMC40MUMxMS44OCwxOS44NCAxMS4yNSwxNi41NSAxMy4zMywxNS4xNkMxNy4xMywxMi42MSAxNy45LDEwLjEgMTYsNi40MkMxNC4yLDMgOC4yOCwzLjQxIDcuMDMsNC4wOEM1Ljc4LDQuNzUgNS44Niw1Ljg5IDUuMjMsNS43Mk05LjMzLDEyLjYzTDkuMTEsMTIuMTZDOS4yMywxMC4yOCA3LjYzLDEwLjM5IDguMDgsMTMuMzNDOC4yMSwxNC4xNiA3LjQ3LDEzLjggNy40NSwxMy43M0M2Ljg5LDExLjQ0IDcuNDIsMTAuMjIgOC41NSwxMC40NUM5LjYyLDEwLjY4IDkuNTMsMTEuODMgOS41MywxMS44M0M5LjU2LDExLjc4IDExLDEwLjE3IDExLjUsMTAuOTJDMTIuNTgsMTIuNSAxMC41MywxNC40NyAxMC40MSwxNC42M0MxMC4yOCwxNC43OCAxMC4xNCwxNS4wNSA5LjkyLDE0Ljg0QzkuNywxNC42NCA5LjcyLDE0LjUgOS44OSwxNC4yN0MxMi43NywxMCA5LjU5LDEyLjIyIDkuMzMsMTIuNjNNNi41LDE1LjMzVjE1LjMxQzYuNSwxNS4zMSA4LDE4LjEzIDEwLjYxLDE3LjA4QzExLDE2LjkyIDExLjE3LDE3LjE0IDExLjIsMTcuMjdDMTEuMjcsMTcuNTMgMTEuMTMsMTcuNjQgMTAuODYsMTcuNzNDNy44NiwxOC43MiA1Ljg5LDE2LjYzIDUuNjMsMTYuMTNDNS4zOSwxNS42OCA1LjUsMTUuMzggNS43NSwxNS4yMkM2LDE1LjA2IDYuNSwxNS4zMyA2LjUsMTUuMzNNNiwxNy41QzYsMTcuNSA3LjY3LDE5LjUgMTAuOCwxOUMxMS4wOSwxOC45NCAxMS4yLDE5LjEzIDExLjI1LDE5LjM4QzExLjMsMTkuNjMgMTEuMjIsMTkuODQgMTAuOTIsMTkuOTRDMTAuNjMsMjAuMDMgNy4wOCwyMC41IDUuMTMsMTcuNzJDNSwxNy41NiA1LjMsMTcuMzYgNS40NywxNy4zNkM1LjY0LDE3LjM2IDYuMDMsMTcuNSA2LDE3LjVNNS45NSwxOS4zOUM3LjUzLDIxLjUgMTAuMzMsMjEuNTUgMTEuMjgsMjAuODhDMTEuNSwyMC43MyAxMS43LDIxLjA1IDExLjU2LDIxLjE5QzkuNjQsMjMuMTYgNS42NywyMSA1LjI3LDIwLjMzQzUuMDksMjAuMDUgNS4xMywxOS42NiA1LjMxLDE5LjQ1QzUuNSwxOS4yNSA1LjkzLDE5LjM4IDUuOTUsMTkuMzlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSmVlcG5leSA9IFwiTTE5LDEzVjdIMjBWNEg0VjdINVYxM0gyQzIsMTMuOTMgMi41LDE0LjcxIDMuNSwxNC45M1YyMEExLDEgMCAwLDAgNC41LDIxSDUuNUExLDEgMCAwLDAgNi41LDIwVjE5SDE3LjVWMjBBMSwxIDAgMCwwIDE4LjUsMjFIMTkuNUExLDEgMCAwLDAgMjAuNSwyMFYxNC45M0MyMS41LDE0LjcgMjIsMTMuOTMgMjIsMTNIMTlNOCwxNUExLjUsMS41IDAgMCwxIDYuNSwxMy41QTEuNSwxLjUgMCAwLDEgOCwxMkExLjUsMS41IDAgMCwxIDkuNSwxMy41QTEuNSwxLjUgMCAwLDEgOCwxNU0xNiwxNUExLjUsMS41IDAgMCwxIDE0LjUsMTMuNUExLjUsMS41IDAgMCwxIDE2LDEyQTEuNSwxLjUgMCAwLDEgMTcuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTYsMTVNMTcuNSwxMC41QzE1LjkyLDEwLjE4IDE0LjAzLDEwIDEyLDEwQzkuOTcsMTAgOCwxMC4xOCA2LjUsMTAuNVY3SDE3LjVWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlKZWxseWZpc2ggPSBcIk0xOS41LDE0LjVDMTguOTIsMTQuNDMgMTguNDMsMTQuOTIgMTguNSwxNS41QzE4LjUsMTYuMTcgMTcuNSwxNi4xNyAxNy41LDE1LjVWMTMuMkwxOS4yLDEyLjdDMTkuOTIsMTIuMzYgMjAuNDEsMTEuNjggMjAuNSwxMC45QzIwLjUsNS41IDE2LjcsMiAxMiwyQzcuMywyIDMuNSw1LjUgMy41LDEwLjlDMy41NiwxMS43IDQuMDYsMTIuNCA0LjgsMTIuN0w2LjUsMTMuMlYxNS41QTAuNSwwLjUgMCAwLDEgNiwxNkEwLjUsMC41IDAgMCwxIDUuNSwxNS41QzUuNTcsMTQuOTIgNS4wOCwxNC40MyA0LjUsMTQuNUMzLjkyLDE0LjQzIDMuNDMsMTQuOTIgMy41LDE1LjVDMy40NCwxNi45MSA0LjU5LDE4LjA2IDYsMThDNy40MSwxOC4wNiA4LjU2LDE2LjkxIDguNSwxNS41VjEzLjdIOS41VjE5LjRDOS41LDIwLjA3IDguNSwyMC4wNyA4LjUsMTkuNEM4LjU3LDE4LjgyIDguMDgsMTguMzMgNy41LDE4LjRDNi45MiwxOC4zMyA2LjQzLDE4LjgyIDYuNSwxOS40QzYuMzgsMjAuODQgNy41NSwyMi4wNyA5LDIyQzEwLjQxLDIyLjA2IDExLjU2LDIwLjkxIDExLjUsMTkuNVYxNEgxMi41VjE5LjVDMTIuNDQsMjAuOTEgMTMuNTksMjIuMDYgMTUsMjJDMTYuNDEsMjIuMDYgMTcuNTYsMjAuOTEgMTcuNSwxOS41QzE3LjUsMTguMTcgMTUuNSwxOC4xNyAxNS41LDE5LjVDMTUuNSwyMC4xNyAxNC41LDIwLjE3IDE0LjUsMTkuNVYxMy44SDE1LjVWMTUuNkMxNS41LDE2Ljk2IDE2LjYzLDE4LjA2IDE4LDE4QzE5LjQxLDE4LjA2IDIwLjU2LDE2LjkxIDIwLjUsMTUuNUMyMC41NywxNC45MiAyMC4wOCwxNC40MyAxOS41LDE0LjVNMTAuNiw0LjdDOS4wOSw1LjAzIDcuNzksNS45NyA3LDcuM0M2LjgzLDcuNSA2LjUsNy41NyA2LjMsNy40QzYuMDgsNy4yMyA2LjA0LDYuOTIgNi4yLDYuN0M3LjE2LDUuMTkgOC42Nyw0LjEyIDEwLjQsMy43QzEwLjY3LDMuNjggMTAuOTEsMy44NSAxMSw0LjFDMTEuMDYsNC4zNyAxMC44OCw0LjY1IDEwLjYsNC43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUplbGx5ZmlzaE91dGxpbmUgPSBcIk0xMiw0QzE1LjgsNCAxOC41LDYuOCAxOC41LDEwLjhDMTQuMzEsMTIuMzkgOS42OSwxMi4zOSA1LjUsMTAuOEM1LjUsNi44IDguMiw0IDEyLDRNMTIsMkM3LjMsMiAzLjUsNS41IDMuNSwxMC45QzMuNTYsMTEuNyA0LjA2LDEyLjQgNC44LDEyLjdMNi41LDEzLjJWMTUuNUEwLjUsMC41IDAgMCwxIDYsMTZBMC41LDAuNSAwIDAsMSA1LjUsMTUuNUM1LjU3LDE0LjkyIDUuMDgsMTQuNDMgNC41LDE0LjVDMy45MiwxNC40MyAzLjQzLDE0LjkyIDMuNSwxNS41QzMuNDQsMTYuODYgNC41NCwxOCA1LjksMThINkM3LjQxLDE4LjA2IDguNTYsMTYuOTEgOC41LDE1LjVWMTMuN0g5LjVWMTkuNEM5LjUsMjAuMDcgOC41LDIwLjA3IDguNSwxOS40QzguNTcsMTguODIgOC4wOCwxOC4zMyA3LjUsMTguNEM2LjkyLDE4LjMzIDYuNDMsMTguODIgNi41LDE5LjRDNi4zOSwyMC44IDcuNSwyMiA4LjksMjJIOUMxMC40MSwyMi4wNiAxMS41NiwyMC45MSAxMS41LDE5LjVWMTRIMTIuNVYxOS41QzEyLjQ0LDIwLjkxIDEzLjU5LDIyLjA2IDE1LDIySDE1LjFDMTYuNDcsMjIgMTcuNTYsMjAuODYgMTcuNSwxOS41QzE3LjUsMTguMTcgMTUuNSwxOC4xNyAxNS41LDE5LjVDMTUuNSwyMC4xNyAxNC41LDIwLjE3IDE0LjUsMTkuNVYxMy44SDE1LjVWMTUuNkMxNS41LDE2Ljk2IDE2LjYzLDE4LjA2IDE4LDE4SDE4LjFDMTkuNDcsMTggMjAuNTYsMTYuODYgMjAuNSwxNS41QzIwLjUsMTQuMTcgMTguNSwxNC4xNyAxOC41LDE1LjVDMTguNSwxNi4xNyAxNy41LDE2LjE3IDE3LjUsMTUuNVYxMy4yTDE5LjIsMTIuN0MxOS45MiwxMi4zNiAyMC40MSwxMS42OCAyMC41LDEwLjlDMjAuNSw1LjUgMTYuNywyIDEyLDJNMTIsNi4yQzEwLjUzLDYuNiA5LjI0LDcuNTMgOC40LDguOEM4LDkuMzMgNy4yLDguNzMgNy42LDguMkM4LjYsNi43MyAxMC4wOSw1LjY3IDExLjgsNS4yQzEyLjA4LDUuMTQgMTIuMzUsNS4zMiAxMi40LDUuNkMxMi41LDUuOSAxMi4zLDYuMSAxMiw2LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSmlyYSA9IFwiTTExLjUzLDJDMTEuNTMsNC40IDEzLjUsNi4zNSAxNS44OCw2LjM1SDE3LjY2VjguMDVDMTcuNjYsMTAuNDUgMTkuNiwxMi4zOSAyMiwxMi40VjIuODRBMC44NCwwLjg0IDAgMCwwIDIxLjE2LDJIMTEuNTNNNi43Nyw2LjhDNi43OCw5LjE5IDguNzIsMTEuMTMgMTEuMTEsMTEuMTRIMTIuOTFWMTIuODZDMTIuOTIsMTUuMjUgMTQuODYsMTcuMTkgMTcuMjUsMTcuMlY3LjYzQzE3LjI0LDcuMTcgMTYuODgsNi44MSAxNi40Miw2LjhINi43N00yLDExLjZDMiwxNCAzLjk1LDE1Ljk0IDYuMzUsMTUuOTRIOC4xM1YxNy42NkM4LjE0LDIwLjA1IDEwLjA4LDIyIDEyLjQ3LDIyVjEyLjQzQTAuODQsMC44NCAwIDAsMCAxMS42MywxMS41OUwyLDExLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpSnF1ZXJ5ID0gXCJNMjIuODgsMTAuNDFDMjAuNzcsMTIuMTggMTcuNjEsMTEuOSAxNS44NCw5Ljc5QzE0LjA2LDcuNjcgMTQuMzQsNC41IDE2LjQ1LDIuNzVMMTYuOTYsMi4zN0MxNS4yNyw0LjE5IDE1LjE2LDcuMDMgMTYuOCw5QzE4LjQzLDEwLjk0IDIxLjI1LDExLjMyIDIzLjM0LDkuOTdMMjIuODgsMTAuNDFNMjEuMSwxNC41QzE3LjkzLDE3LjE3IDEzLjIsMTYuNzYgMTAuNTQsMTMuNThDNy44NywxMC40MSA4LjI5LDUuNjggMTEuNDYsM0wxMi4zOCwyLjM2QzkuOTYsNS4wOSA5Ljg0LDkuMjYgMTIuMjYsMTIuMTRDMTQuNjgsMTUgMTguOCwxNS42MyAyMS45MSwxMy43MkwyMS4xLDE0LjVNMTkuOTcsMTkuMzhDMTUuNTMsMjMuMTEgOC45LDIyLjUzIDUuMTcsMTguMDhDMS40NSwxMy42NCAyLjAzLDcgNi40NywzLjI5TDcuNTgsMi41QzQuMDcsNi4zIDMuODUsMTIuMjMgNy4yOCwxNi4zMkMxMC43MSwyMC40IDE2LjU5LDIxLjIyIDIwLjk2LDE4LjQzTDE5Ljk3LDE5LjM4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUpzZmlkZGxlID0gXCJNMTcuMzQgMTMuN0MxNy4zNCAxNSAxNi4yMyAxNi4wNCAxNC44NiAxNi4wNEMxMy42NSAxNi4wNCAxMi42NCAxNSAxMS43NSAxNC4wNEwxMS41IDEzLjc5QzExLjUgMTMuNzYgMTEuNDcgMTMuNzMgMTEuNDUgMTMuN0MxMC43NCAxMi45NiA5Ljk2IDEyLjIyIDkuMjEgMTIuMjJDOC4zMiAxMi4yMiA3LjYgMTIuODggNy42IDEzLjY5QzcuNiAxNC41IDguMzIgMTUuMTcgOS4yMSAxNS4xN0M5Ljk3IDE1LjE3IDEwLjM1IDE0Ljc1IDEwLjYzIDE0LjQ1TDEwLjcgMTQuMzdDMTAuODYgMTQuMiAxMS4xNCAxNC4xOSAxMS4zMSAxNC4zNUMxMS41IDE0LjUgMTEuNSAxNC43OSAxMS4zMyAxNC45NkwxMS4yNyAxNS4wM0MxMC45NCAxNS4zOCAxMC4zNSAxNi4wMyA5LjIxIDE2LjAzQzcuODQgMTYuMDMgNi43MyAxNSA2LjczIDEzLjY5QzYuNzMgMTIuNCA3Ljg0IDExLjM1IDkuMjEgMTEuMzVDMTAuNDIgMTEuMzUgMTEuNDMgMTIuNDEgMTIuMzIgMTMuMzVMMTIuNTYgMTMuNkMxMi41OCAxMy42MyAxMi42IDEzLjY2IDEyLjYyIDEzLjY5QzEzLjMzIDE0LjQzIDE0LjExIDE1LjE3IDE0Ljg2IDE1LjE3QzE1Ljc1IDE1LjE3IDE2LjQ3IDE0LjUgMTYuNDcgMTMuNjlDMTYuNDcgMTIuODggMTUuNzUgMTIuMjIgMTQuODYgMTIuMjJDMTQuMTEgMTIuMjIgMTMuNzIgMTIuNjQgMTMuNDQgMTIuOTRMMTMuMzcgMTNDMTMuMjEgMTMuMTkgMTIuOTQgMTMuMiAxMi43NiAxMy4wNEMxMi41OSAxMi44NyAxMi41OCAxMi42IDEyLjc0IDEyLjQyTDEyLjgxIDEyLjM2QzEzLjEzIDEyIDEzLjczIDExLjM2IDE0Ljg2IDExLjM2QzE2LjIzIDExLjM2IDE3LjM0IDEyLjQgMTcuMzQgMTMuN00yMiAxNC44NUMyMiAxNS45NiAyMS41NyAxNyAyMC43OCAxNy43OUMyMCAxOC41NyAxOC45NSAxOSAxNy44NCAxOUg2LjI4QzMuOTYgMTguOTYgMi4wNyAxNy4wNiAyLjA3IDE0Ljc1QzIuMDcgMTMuMzcgMi43NiAxMi4wNyAzLjg5IDExLjI4QzMuODUgMTEuMDkgMy44MyAxMC45IDMuODMgMTAuN0MzLjgzIDkuMDMgNS4yIDcuNjcgNi44OCA3LjY3QzcuMzkgNy42NyA3Ljg4IDcuNzkgOC4zMiA4LjAzQzkuNDEgNi4xNyAxMS40MyA1IDEzLjYgNUMxNi45NyA1IDE5LjcgNy43MiAxOS43IDExLjA3TDE5LjcgMTEuMTRDMjEuMTEgMTEuODQgMjIgMTMuMjcgMjIgMTQuODVNMjEuMTMgMTQuODVDMjEuMTMgMTMuNSAyMC4zMyAxMi4zMiAxOS4wOSAxMS44MUMxOC45MiAxMS43NCAxOC44MSAxMS41NyAxOC44MiAxMS4zOEwxOC44MyAxMS4yOUMxOC44MyAxMS4yMiAxOC44NCAxMS4xNCAxOC44NCAxMS4wN0MxOC44NCA4LjIgMTYuNSA1Ljg3IDEzLjYgNS44N0MxMS42IDUuODcgOS43NCA3LjAzIDguODcgOC44M0M4LjgyIDguOTUgOC43MSA5LjA0IDguNTggOS4wN0M4LjQ2IDkuMSA4LjMyIDkuMDcgOC4yMiA5QzcuODMgOC42OSA3LjM3IDguNTMgNi44OCA4LjUzQzUuNjggOC41MyA0LjcgOS41IDQuNyAxMC43QzQuNyAxMC45MiA0LjczIDExLjE0IDQuOCAxMS4zNEM0Ljg2IDExLjU0IDQuNzggMTEuNzUgNC42MSAxMS44NUMzLjU2IDEyLjQ3IDIuOTQgMTMuNTUgMi45NCAxNC43NUMyLjk0IDE2LjU5IDQuNDQgMTguMSA2LjI5IDE4LjEzSDE3LjgzQzE4LjcyIDE4LjEzIDE5LjU0IDE3Ljc5IDIwLjE2IDE3LjE3QzIwLjc5IDE2LjU1IDIxLjEzIDE1LjczIDIxLjEzIDE0Ljg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUp1ZGFpc20gPSBcIk0xMiwyTDkuMSw3SDMuM0w2LjMsMTJMMy4zLDE3SDkuMUwxMiwyMkwxNC45LDE3SDIwLjdMMTcuNywxMkwyMC43LDdIMTQuOUwxMiwyTTEyLDVMMTMuMiw3SDEwLjhMMTIsNU04LjIsOC41TDcuMSwxMC41TDUuOSw4LjVIOC4yTTEwLDguNUgxNEwxNiwxMkwxNCwxNS41SDEwTDgsMTJMMTAsOC41TTE4LDguNUwxNi44LDEwLjVMMTUuNyw4LjVIMThNNy4xLDEzLjVMOC4yLDE1LjVINkw3LjEsMTMuNU0xNi45LDEzLjVMMTguMSwxNS41SDE1LjhMMTYuOSwxMy41TTEzLjMsMTdMMTIsMTlMMTAuOCwxN0gxMy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUp1bXBSb3BlID0gXCJNMjEgNC41VjEwLjVDMjEgMTEuMiAyMC41IDExLjkgMTkuOCAxMlYxNy4zQzE5LjggMTguNiAxOSAyMS4xIDE2IDIxLjFIMTQuNUMxNC45IDIwLjcgMTUuMyAyMC4yIDE1LjUgMTkuNkgxNkMxOC4xIDE5LjYgMTguMiAxNy43IDE4LjIgMTcuNFYxMkMxNy41IDExLjkgMTcgMTEuMyAxNyAxMC41VjQuNUMxNyAzLjcgMTcuNyAzIDE4LjUgM0gxOS41QzIwLjMgMyAyMSAzLjcgMjEgNC41TTE0LjggMTguMkMxNC44IDE5LjcgMTMuNiAyMSAxMiAyMUg4QzUgMjEgNC4yIDE4LjUgNC4yIDE3LjJWMTJDMy41IDExLjkgMyAxMS4yIDMgMTAuNVY0LjVDMyAzLjcgMy43IDMgNC41IDNINS41QzYuMyAzIDcgMy43IDcgNC41VjEwLjVDNyAxMS4yIDYuNSAxMS45IDUuOCAxMlYxNy4zQzUuOCAxNy43IDUuOSAxOS41IDggMTkuNUg5LjZDOS40IDE5LjEgOS4zIDE4LjcgOS4zIDE4LjNWOC4zQzkuMyA2LjggMTAuNSA1LjUgMTIuMSA1LjVTMTQuOCA2LjcgMTQuOCA4LjNNMTMuMiA4LjJDMTMuMiA3LjYgMTIuNyA3IDEyIDdTMTAuOCA3LjYgMTAuOCA4LjJWMTguMkMxMC44IDE4LjkgMTEuNCAxOS40IDEyIDE5LjRTMTMuMiAxOC44IDEzLjIgMTguMlY4LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2FiYWRkaSA9IFwiTTExLjIgMTAuNkMxMi4yIDExLjYgMTMuNCAxMi4xIDE0LjggMTIuMUwxNC45IDE0LjJDMTMgMTQuMiAxMS4zIDEzLjUgOS44IDEyLjFMOS4xIDExLjRMNi44IDEzLjhMOSAxNS45VjIxLjlIN1YxNi43TDUuNyAxNS41VjE3LjdMMS41IDIyTC4xIDIwLjZMMy43IDE3TDIuNSAxMy41QzIuMyAxMi45IDIuNiAxMi40IDMuMSAxMkw2LjQgOC43QzYuOCA4LjIgNy4zIDggNy44IDhDOC4zIDggOC42IDguMSA4LjkgOC4zTDExLjIgMTAuNk0yNCAxMS45SDIyVjguNUwyMC4yIDcuOEwyMS4xIDEyLjJMMjIuMSAxNy40TDIzIDIxLjhIMjAuOUwxOS4xIDEzLjhMMTcgMTUuOFYyMS44SDE1VjE0LjNMMTcuMSAxMi4zTDE2LjUgOS4zQzE1LjkgOS45IDE1LjIgMTAuNSAxNC40IDEwLjlDMTMuNSAxMC44IDEyLjYgMTAuNCAxMS45IDkuN0MxMy41IDkuNCAxNC42IDguNiAxNS4zIDcuNEwxNi4zIDUuOEMxNi45IDQuOCAxNy44IDQuNSAxOC45IDVMMjQgNy4yVjExLjlNMTEuNCA0LjRDMTIuNSA0LjQgMTMuNCA1LjMgMTMuNCA2LjRDMTMuNCA3LjUgMTIuNSA4LjQgMTEuNCA4LjRDMTAuMyA4LjQgOS40IDcuNSA5LjQgNi40QzkuNCA1LjMgMTAuMyA0LjQgMTEuNCA0LjRNMTYuNSAuM0MxNy42IC4zIDE4LjUgMS4yIDE4LjUgMi4zQzE4LjUgMy40IDE3LjYgNC4zIDE2LjUgNC4zQzE1LjQgNC4zIDE0LjUgMy40IDE0LjUgMi4zQzE0LjUgMS4yIDE1LjQgLjMgMTYuNSAuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlLYW5nYXJvbyA9IFwiTTE5LjggNi41OUwxOSA3Ljk3VjEwLjA0TDE3LjY5IDExLjYxTDE3LjMxIDEzLjI1TDE2IDE0TDE1LjUgMTMuMTJMMTYuNDQgMTIuNTlMMTYuNyAxMS40NUwxNi43IDExLjQ1TDE2Ljc3IDExLjE1TDE2Ljc3IDExLjE1VjExLjE1TDE3LjQ3IDEwLjMxQzE3LjY1IDEwLjEgMTcuNjIgOS43OCAxNy40MSA5LjYxQzE3LjIgOS40MyAxNi44OCA5LjQ2IDE2LjcgOS42N0wxNS44NSAxMC42OUwxNS41NiAxMS45M0MxNS4zOCAxMS45NiAxNS4yIDEyIDE1IDEyQzE0LjMxIDEyIDEzLjY4IDExLjc2IDEzLjIzIDExLjRDMTMuMTUgMTIuNyAxMi43MyAxMy44MSAxMi4xMyAxNC40M0wxMC41IDE2LjE5TDkuOTYgMTkuNzlMOC4wNyAyMUw3LjUzIDIwLjE3TDkuMDQgMTkuMTlMOS41IDE1LjkyTDkuNSAxNS45MUwxMCAxNC41NEM5LjQ3IDE0LjA4IDkuMDggMTMuMjggOC44OCAxMi4zTDguNzEgMTIuNjFDOC4zNSAxMy4yNSA4IDEzLjkgNy41NiAxNC41NkM3LjExIDE1LjIgNi42NiAxNS45IDUuNzggMTYuNDRDNS4zNCAxNi43MiA0LjcgMTYuODQgNC4xNyAxNi43M0MzLjYxIDE2LjYxIDMuMTQgMTYuMjYgMi44NiAxNS44OUMyLjMxIDE1LjEzIDIuMTUgMTQuMzUgMiAxMy42MkwyLjk3IDEzLjM2QzMuMiAxNCAzLjUgMTQuNjUgMy44OCAxNUM0LjI2IDE1LjMzIDQuNTcgMTUuMjYgNC44NCAxNUM1LjE2IDE0LjczIDUuNDcgMTQuMTUgNS43MyAxMy41NUM2IDEyLjk0IDYuMjIgMTIuMjggNi40NSAxMS42QzYuOTMgMTAuMjQgNy4zOSA4LjgyIDguMiA3LjM2QzguNjIgNi42NCA5LjEzIDUuODkgOS45MiA1LjIyQzEwLjcgNC41NSAxMS43MyA0IDEzIDRTMTUuNyA1LjIyIDE2LjU4IDYuMzRDMTcgNi44OSAxNy44NyA2LjgyIDE4LjIyIDYuMjFMMTkuMTQgNC42M0MxOSA0LjU4IDE4Ljg5IDQuNSAxOC43OSA0LjRDMTguNCA0IDE4LjQgMy4zOCAxOC43OSAzTDE5LjkzIDQuMTNDMTkuOTYgNC4xMyAyMCA0LjExIDIwIDQuMTFDMjAuNDEgNC4xMSAyMC43NSA0LjM1IDIwLjkxIDQuNjlMMjIgN0wyMSA3LjVMMTkuOCA2LjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUthcmF0ZSA9IFwiTTE5LDEuMjdDMTguMDQsMC43MiAxNi44MiwxLjA0IDE2LjI3LDJDMTUuNzEsMi45NSAxNi4wNCw0LjE4IDE3LDQuNzNDMTcuOTUsNS4yOCAxOS4xNyw0Ljk2IDE5LjczLDRDMjAuMjgsMy4wNCAxOS45NSwxLjgyIDE5LDEuMjdNMjEuMjcsOS4zNEwxOC43LDEzLjc5TDE2Ljk2LDEyLjc5TDE4LjY5LDkuNzlMMTcuMTQsOC41TDE0LDEzLjkyVjIySDEyVjEzLjM5TDIuNDcsNy44OUwzLjQ3LDYuMTZMMTEuMjcsMTAuNjZMMTMuNjcsNi41TDcuMjgsNC4xN0w4LDIuMjlMMTQuNzMsNC43NEwxNSw0Ljg0QzE1LjM5LDUgMTUuNzYsNS4xNSAxNi4xMiw1LjM1TDE2Ljk2LDUuODRDMTcuMzEsNi4wNCAxNy42NSw2LjI4IDE3Ljk2LDYuNTRMMTguMTksNi43NEwyMS4yNyw5LjM0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtlZyA9IFwiTTUsMjJWMjBINlYxNkg1VjE0SDZWMTFINVY3SDExVjNIMTBWMkgxMUwxMywySDE0VjNIMTNWN0gxOVYxMUgxOFYxNEgxOVYxNkgxOFYyMEgxOVYyMkg1TTE3LDlBMSwxIDAgMCwwIDE2LDhIMTRBMSwxIDAgMCwwIDEzLDlBMSwxIDAgMCwwIDE0LDEwSDE2QTEsMSAwIDAsMCAxNyw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZSA9IFwiTTEyLjUsM0M3LjgxLDMgNCw1LjY5IDQsOVY5QzQsMTAuMTkgNC41LDExLjM0IDUuNDQsMTIuMzNDNC41MywxMy41IDQsMTQuOTYgNCwxNi41QzQsMTcuNjQgNCwxOC44MyA0LDIwQzQsMjEuMTEgNC44OSwyMiA2LDIySDE5QzIwLjExLDIyIDIxLDIxLjExIDIxLDIwQzIxLDE4Ljg1IDIxLDE3LjYxIDIxLDE2LjVDMjEsMTUuMjggMjAuNjYsMTQuMDcgMjAsMTNMMjIsMTFMMTksOEwxNi45LDEwLjFDMTUuNTgsOS4zOCAxNC4wNSw5IDEyLjUsOUMxMC42NSw5IDguOTUsOS41MyA3LjU1LDEwLjQxQzcuMTksOS45NyA3LDkuNSA3LDlDNyw3LjIxIDkuNDYsNS43NSAxMi41LDUuNzVWNS43NUMxMy45Myw1Ljc1IDE1LjMsNi4wOCAxNi4zMyw2LjY3TDE4LjM1LDQuNjVDMTYuNzcsMy41OSAxNC42OCwzIDEyLjUsM00xMi41LDExQzEyLjg0LDExIDEzLjE3LDExLjA0IDEzLjUsMTEuMDlDMTAuMzksMTEuNTcgOCwxNC4yNSA4LDE3LjVWMjBINlYxNy41QTYuNSw2LjUgMCAwLDEgMTIuNSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXR0bGVBbGVydCA9IFwiTTkuNSAzQzQuOCAzIDEgNS43IDEgOUMxIDEwLjIgMS41IDExLjMgMi40IDEyLjNDMS41IDEzLjUgMSAxNSAxIDE2LjVWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDE2QzE3LjEgMjIgMTggMjEuMSAxOCAyMFYxNi41QzE4IDE1LjMgMTcuNyAxNC4xIDE3IDEzTDE5IDExTDE2IDhMMTMuOSAxMC4xQzEyLjYgOS40IDExLjEgOSA5LjUgOUM3LjcgOSA1LjkgOS41IDQuNiAxMC40QzQuMiAxMCA0IDkuNSA0IDlDNCA3LjIgNi41IDUuOCA5LjUgNS44QzEwLjkgNS44IDEyLjMgNi4xIDEzLjMgNi43TDE1LjMgNC43QzEzLjggMy42IDExLjcgMyA5LjUgM005LjUgMTFDOS44IDExIDEwLjIgMTEgMTAuNSAxMS4xQzcuNCAxMS42IDUgMTQuMiA1IDE3LjVWMjBIM1YxNy41QzMgMTMuOSA1LjkgMTEgOS41IDExTTIxIDEzVjdIMjNWMTNIMjFNMjEgMTdWMTVIMjNWMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V0dGxlQWxlcnRPdXRsaW5lID0gXCJNOS41IDNDNC44IDMgMSA1LjcgMSA5QzEgMTAuMiAxLjUgMTEuMyAyLjQgMTIuM0MxLjUgMTMuNSAxIDE1IDEgMTYuNVYyMEMxIDIxLjEgMS45IDIyIDMgMjJIMTZDMTcuMSAyMiAxOCAyMS4xIDE4IDIwVjE2LjVDMTggMTUuMyAxNy43IDE0LjEgMTcgMTNMMTkgMTFMMTYgOEwxMy45IDEwLjFDMTEgOC41IDcuNCA4LjYgNC42IDEwLjRDNC4yIDEwIDQgOS41IDQgOUM0IDcuMiA2LjUgNS43IDkuNSA1LjdDMTAuOSA1LjcgMTIuMyA2LjEgMTMuMyA2LjdMMTUuMyA0LjdDMTMuNiAzLjUgMTEuNiAzIDkuNSAzTTkuNSAxMUMxMyAxMSAxNiAxNCAxNiAxNi41VjIwSDNWMTYuNUMzIDE0IDYgMTEgOS41IDExTTEwIDEyLjVDNyAxMi41IDUgMTQgNSAxN1YxOEg3VjE3QzcgMTYgNyAxMy41IDEwIDEyLjVNMjEgMTNWN0gyM1YxM0gyMU0yMSAxN1YxNUgyM1YxN0gyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXR0bGVPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w0LjcgNi42QzQuMyA3LjMgNCA4LjEgNCA5QzQgMTAuMiA0LjUgMTEuMyA1LjQgMTIuM0M0LjUgMTMuNSA0IDE1IDQgMTYuNVYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMTlDMTkuMyAyMiAxOS42IDIxLjkgMTkuOSAyMS44TDIwLjggMjIuN0wyMi4xIDIxLjVNOC4yIDEwLjFMNy42IDEwLjRDNy4yIDEwIDcgOS41IDcgOVY4LjlMOC4yIDEwLjFNOCAxNy41VjIwSDZWMTcuNUM2IDE0LjkgNy41IDEyLjcgOS43IDExLjZMMTAuNSAxMi40QzkgMTMuNiA4IDE1LjQgOCAxNy41TTE2LjkgMTAuMUwxOSA4TDIyIDExTDIwIDEzQzIwLjcgMTQuMSAyMSAxNS4zIDIxIDE2LjVWMTcuOEwxMi4yIDlIMTIuNUMxNCA5IDE1LjYgOS40IDE2LjkgMTAuMU05LjUgNi4zTDcuNCA0LjJDOC44IDMuNSAxMC42IDMgMTIuNSAzQzE0LjcgMyAxNi44IDMuNiAxOC4zIDQuN0wxNi4zIDYuN0MxNS4zIDYuMSAxMy45IDUuOCAxMi41IDUuOEMxMS40IDUuOCAxMC40IDUuOSA5LjUgNi4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZU9mZk91dGxpbmUgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w0LjcgNi42QzQuMyA3LjMgNCA4LjEgNCA5QzQgMTAuMiA0LjUgMTEuMyA1LjQgMTIuM0M0LjUgMTMuNSA0IDE1IDQgMTYuNVYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMTlDMTkuMyAyMiAxOS42IDIxLjkgMTkuOSAyMS44TDIwLjggMjIuN0wyMi4xIDIxLjVNOC4yIDEwLjFMNy42IDEwLjRDNy4yIDEwIDcgOS41IDcgOVY4LjlMOC4yIDEwLjFNNiAyMFYxNi41QzYgMTQuNyA3LjYgMTIuNiA5LjcgMTEuNkwxMC45IDEyLjhDOS4xIDEzLjQgOCAxNC44IDggMTdWMThIMTBWMTdDMTAgMTYuMiAxMCAxNC41IDExLjQgMTMuM0wxOC4xIDIwSDZNMTYuOSAxMC4xTDE5IDhMMjIgMTFMMjAgMTNDMjAuNyAxNC4xIDIxIDE1LjMgMjEgMTYuNVYxNy44TDE4LjkgMTUuN0MxOC41IDEzLjkgMTYuOCAxMi4xIDE0LjYgMTEuNEwxMi4yIDlDMTMuOCA4LjkgMTUuNCA5LjMgMTYuOSAxMC4xTTkuNSA2LjNMNy40IDQuMkM4LjggMy41IDEwLjYgMyAxMi41IDNDMTQuNiAzIDE2LjYgMy41IDE4LjMgNC43TDE2LjMgNi43QzE1LjMgNi4xIDEzLjkgNS43IDEyLjUgNS43QzExLjQgNS43IDEwLjMgNS45IDkuNSA2LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V0dGxlT3V0bGluZSA9IFwiTTEyLjUgM0M3LjggMyA0IDUuNyA0IDlDNCAxMC4yIDQuNSAxMS4zIDUuNCAxMi4zQTYuOCA2LjggMCAwIDAgNCAxNi41VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOUEyIDIgMCAwIDAgMjEgMjBWMTYuNUMyMSAxNS4zIDIwLjcgMTQuMSAyMCAxM0wyMiAxMUwxOSA4TDE2LjkgMTAuMUE5LjIgOS4yIDAgMCAwIDcuNiAxMC40QTIgMiAwIDAgMSA3IDlDNyA3LjIgOS41IDUuNyAxMi41IDUuN0MxMy45IDUuNyAxNS4zIDYuMSAxNi4zIDYuN0wxOC4zIDQuN0ExMCAxMCAwIDAgMCAxMi41IDNNMTIuNSAxMUMxNiAxMSAxOSAxNCAxOSAxNi41VjIwSDZWMTYuNUM2IDE0IDkgMTEgMTIuNSAxMU0xMyAxMi41QzEwIDEyLjUgOCAxNCA4IDE3VjE4SDEwVjE3QzEwIDE2IDEwIDEzLjUgMTMgMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXR0bGVQb3VyT3ZlciA9IFwiTTEwIDRDOS40IDQgOSA0LjQgOSA1VjZIMTRWNUMxNCA0LjQgMTMuNiA0IDEzIDRIMTBNMyA3TDQuMSAxNC4xQzQuMiAxNC44IDQuNSAxNS41IDUuMSAxNi4xQzUuNSAxNi42IDYuMiAxNi45IDcgMTdDNyAxNy42IDcuNCAxOCA4IDE4SDE2QzE2LjYgMTggMTcgMTcuNiAxNyAxN0wxNSAxMUgxN0wyMC4zIDE2TDIyIDE1TDE4LjcgMTBMMjAgOS4yTDE5IDcuNUwxNi40IDlIMTVWN0g4VjExTDcuMiAxNkM2LjUgMTUuOSA2LjEgMTUuNyA1LjggMTUuNEM1LjQgMTUgNS4yIDE0LjUgNS4xIDEzLjlMNCA3SDNNNCAxOVYyMUgyMFYxOUg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZVN0ZWFtID0gXCJNMTkgMTFMMTYgOEwxMy45IDEwLjFDMTIuNTggOS4zOCAxMS4wNSA5IDkuNSA5QzcuNjUgOSA1Ljk1IDkuNTMgNC41NSAxMC40MUM0LjE5IDkuOTcgNCA5LjUgNCA5QzQgNy4yMSA2LjQ2IDUuNzUgOS41IDUuNzVDMTAuOTMgNS43NSAxMi4zIDYuMDggMTMuMzMgNi42N0wxNS4zNSA0LjY1QzEzLjc3IDMuNTkgMTEuNjggMyA5LjUgM0M0LjgxIDMgMSA1LjY5IDEgOUMxIDEwLjE5IDEuNSAxMS4zNCAyLjQ0IDEyLjMzQzEuNTMgMTMuNSAxIDE0Ljk2IDEgMTYuNVYyMEMxIDIxLjExIDEuODkgMjIgMyAyMkgxNkMxNy4xMSAyMiAxOCAyMS4xMSAxOCAyMFYxNi41QzE4IDE1LjI4IDE3LjY2IDE0LjA3IDE3IDEzTDE5IDExTTUgMTcuNVYyMEgzVjE3LjVDMyAxMy45MSA1LjkxIDExIDkuNSAxMUM5Ljg0IDExIDEwLjE3IDExLjA0IDEwLjUgMTEuMDlDNy4zOSAxMS41NyA1IDE0LjI1IDUgMTcuNU0yMyA3LjNDMjMgOC45MyAyMS45MSAxMC42IDIwLjM4IDEwLjk3TDE5LjcxIDEwLjI5TDE5IDkuNkgxOS43NUMyMC43NSA5LjYgMjEuNSA4LjIyIDIxLjUgNy4yQzIxLjUgNi4xOCAyMC42NSA1LjE0IDE5LjY1IDUuMTRWMy42NEMyMS41IDMuNjQgMjMgNS40NSAyMyA3LjNNMTcuNjUgNi43M0MxNy4wMyA2LjEyIDE2LjY1IDUuMjggMTYuNjUgNC4zNUMxNi42NSAyLjUgMTguMTUgMSAyMCAxVjIuNUMxOSAyLjUgMTguMTUgMy4zMyAxOC4xNSA0LjM1QzE4LjE1IDUuMzcgMTkgNi4yIDIwIDYuMlY3LjdDMTkuMTggNy43IDE4LjQyIDcuOTUgMTcuNzkgOC4zOEwxNi43MiA3LjMxQzE3IDcuMDkgMTcuMzIgNi44OSAxNy42NSA2LjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtldHRsZVN0ZWFtT3V0bGluZSA9IFwiTTkuNSAzQzQuOCAzIDEgNS43IDEgOUMxIDEwLjIgMS41IDExLjMgMi40IDEyLjNDMS41IDEzLjUgLjk4NSAxNSAxIDE2LjVWMjBDMSAyMS4xIDEuOSAyMiAzIDIySDE2QzE3LjExIDIyIDE4IDIxLjExIDE4IDIwVjE2LjVDMTggMTUuMyAxNy43IDE0LjEgMTcgMTNMMTkgMTFMMTYgOEwxMy45IDEwLjFDMTAuOTcgOC41IDcuNDIgOC42MyA0LjYgMTAuNEM0LjIyIDEwLjAzIDQgOS41MyA0IDlDNCA3LjIgNi41IDUuNyA5LjUgNS43QzEwLjkgNS43IDEyLjMgNi4xIDEzLjMgNi43TDE1LjMgNC43QzEzLjU5IDMuNTUgMTEuNTYgMi45NiA5LjUgM005LjUgMTFDMTMgMTEgMTYgMTQgMTYgMTYuNVYyMEgzVjE2LjVDMyAxNCA2IDExIDkuNSAxMU0xMCAxMi41QzcgMTIuNSA1IDE0IDUgMTdWMThIN1YxN0M3IDE2IDcgMTMuNSAxMCAxMi41TTIzIDcuM0MyMyA4LjkzIDIxLjkxIDEwLjYgMjAuMzggMTAuOTdMMTkuNzEgMTAuMjlMMTkgOS42SDE5Ljc1QzIwLjc1IDkuNiAyMS41IDguMjIgMjEuNSA3LjJDMjEuNSA2LjE4IDIwLjY1IDUuMTQgMTkuNjUgNS4xNFYzLjY0QzIxLjUgMy42NCAyMyA1LjQ1IDIzIDcuM00xNy42NSA2LjczQzE3LjAzIDYuMTIgMTYuNjUgNS4yOCAxNi42NSA0LjM1QzE2LjY1IDIuNSAxOC4xNSAxIDIwIDFWMi41QzE5IDIuNSAxOC4xNSAzLjMzIDE4LjE1IDQuMzVDMTguMTUgNS4zNyAxOSA2LjIgMjAgNi4yVjcuN0MxOS4xOCA3LjcgMTguNDIgNy45NSAxNy43OSA4LjM4TDE2LjcyIDcuMzFDMTcgNy4wOSAxNy4zMiA2Ljg5IDE3LjY1IDYuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V0dGxlYmVsbCA9IFwiTTE2LjIgMTAuN0wxNi44IDguM0MxNi45IDggMTcuMyA2LjYgMTYuNSA1LjRDMTUuOSA0LjUgMTQuNyA0IDEzIDRIMTFDOS4zIDQgOC4xIDQuNSA3LjUgNS40QzYuNyA2LjYgNy4xIDcuOSA3LjIgOC4zTDcuOCAxMC43QzYuNyAxMS44IDYgMTMuMyA2IDE1QzYgMTcuMSA3LjEgMTguOSA4LjcgMjBIMTUuM0MxNi45IDE4LjkgMTggMTcuMSAxOCAxNUMxOCAxMy4zIDE3LjMgMTEuOCAxNi4yIDEwLjdNOS42IDkuNUw5LjEgNy44VjcuN0M5LjEgNy43IDguOSA3IDkuMiA2LjZDOS40IDYuMiAxMCA2IDExIDZIMTNDMTMuOSA2IDE0LjYgNi4yIDE0LjkgNi41QzE1LjIgNi45IDE1IDcuNiAxNSA3LjZMMTQuNSA5LjVDMTMuNyA5LjIgMTIuOSA5IDEyIDlDMTEuMSA5IDEwLjMgOS4yIDkuNiA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5ID0gXCJNNywxNEEyLDIgMCAwLDEgNSwxMkEyLDIgMCAwLDEgNywxMEEyLDIgMCAwLDEgOSwxMkEyLDIgMCAwLDEgNywxNE0xMi42NSwxMEMxMS44Myw3LjY3IDkuNjEsNiA3LDZBNiw2IDAgMCwwIDEsMTJBNiw2IDAgMCwwIDcsMThDOS42MSwxOCAxMS44MywxNi4zMyAxMi42NSwxNEgxN1YxOEgyMVYxNEgyM1YxMEgxMi42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlBcnJvd1JpZ2h0ID0gXCJNMTAuNyA2QzEwLjEgNC4yIDguNCAzIDYuNSAzQzQgMyAyIDUgMiA3LjVTNCAxMiA2LjUgMTJDOC41IDEyIDEwLjEgMTAuOCAxMC43IDlIMTVWMTJIMThWOUgyMlY2SDEwLjdNNi41IDlDNS43IDkgNSA4LjMgNSA3LjVTNS43IDYgNi41IDYgOCA2LjcgOCA3LjUgNy4zIDkgNi41IDlNMTMgMjFWMTlIOFYxN0gxM1YxNUwxNiAxOEwxMyAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaUtleUNoYWluID0gXCJNMTIuNjcgMTMuNjdDMTIuMiAxNC4xMyAxMS42MyAxNC41IDExIDE0LjczVjIzSDhWMjFINVYxOEg4VjE0LjcyQzYuMjYgMTQuMSA1IDEyLjQ2IDUgMTAuNUM1IDggNyA2IDkuNSA2QzkuNTQgNiA5LjU3IDYgOS42IDZDOS4xMyA2Ljk1IDguOTIgOCA5LjAzIDkuMDhDOC40NCA5LjI4IDggOS44NCA4IDEwLjVDOCAxMS4zMyA4LjY3IDEyIDkuNSAxMkM5LjczIDEyIDkuOTUgMTEuOTQgMTAuMTUgMTEuODVDMTAuNzkgMTIuNjkgMTEuNjcgMTMuMzIgMTIuNjcgMTMuNjdNMjAuNzMgMTkuNDRMMTcuOTcgMjAuNkwxNy4xOSAxOC43NkwxNC40MyAxOS45M0wxMy4yNiAxNy4xNkwxNi4wMyAxNkwxNC43NiAxM0MxMi45MSAxMy4wOCAxMS4xMSAxMi4wNSAxMC4zNSAxMC4yNUM5LjM5IDcuOTYgMTAuNDcgNS4zMiAxMi43NiA0LjM1QzEzIDQuMjUgMTMuMjYgNC4xOCAxMy41IDQuMTJDMTIuODQgMi44NyAxMS41IDIgMTAgMkM3Ljc5IDIgNiAzLjc5IDYgNkM2IDYuMDggNiA2LjE2IDYgNi4yNEM1LjcgNi41IDUuNCA2LjgyIDUuMTUgNy4xNUM1LjA2IDYuNzggNSA2LjQgNSA2QzUgMy4yNCA3LjI0IDEgMTAgMVMxNSAzLjI0IDE1IDZDMTUgNy40MiAxNC40IDguNjcgMTMuNDUgOS41N0MxMy44NyAxMCAxNC41IDEwLjEzIDE1LjA4IDkuODhDMTUuODUgOS41NiAxNi4yIDguNjggMTUuODggNy45MkMxNS44NSA3LjgzIDE1LjggNy43NCAxNS43NCA3LjY2QzE1LjkgNy4xMyAxNiA2LjU4IDE2IDZDMTYgNS4zNyAxNS45IDQuNzYgMTUuNzIgNC4xOUMxNyA0LjU1IDE4LjEgNS40NCAxOC42NSA2Ljc2QzE5LjQxIDguNTYgMTguODkgMTAuNTcgMTcuNSAxMS44MUwyMC43MyAxOS40NE0xMyA4LjZDMTMuMzcgOC4xOSAxMy42NSA3LjcxIDEzLjgyIDcuMThDMTMuMjggNy40NSAxMi45NyA4IDEzIDguNlpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlDaGFpblZhcmlhbnQgPSBcIk0xMi42NiAxMy42N0MxMi4zMiAxNCAxMS45MyAxNC4yOSAxMS41IDE0LjVWMjFMOS41IDIzTDcuNSAyMUw5LjUgMTkuMjlMOCAxOEw5LjUgMTYuNzFMNy41IDE1VjE0LjVDNiAxMy43NyA1IDEyLjI2IDUgMTAuNUM1IDggNyA2IDkuNSA2QzkuNTQgNiA5LjU4IDYgOS42MSA2QzkuNTkgNi4wNyA5LjU0IDYuMTIgOS41IDYuMThDOS4yMyA2Ljc5IDkuMDggNy40MyA5LjAzIDguMDhDOC40MyA4LjI4IDggOC44NCA4IDkuNUM4IDEwLjMzIDguNjcgMTEgOS41IDExQzkuNTMgMTEgOS41NyAxMSA5LjYgMTFDMTAuMjQgMTIuMjUgMTEuMzQgMTMuMiAxMi42NiAxMy42N00xNiA2QzE2IDUuMzcgMTUuOSA0Ljc1IDE1LjcyIDQuMThDMTcuMDYgNC41NiAxOC4yMSA1LjU1IDE4LjczIDYuOTZDMTkuMzMgOC42MiAxOC44OSAxMC4zOSAxNy43NSAxMS41OUwyMCAxNy42OEwxOC43OCAyMC4yNUwxNi4yMiAxOS4wNUwxNy41IDE2Ljc2TDE1LjY2IDE2LjA2TDE2LjYzIDE0LjM0TDE0LjE2IDEzLjQxTDE0IDEyLjk1QzEyLjM2IDEyLjc3IDEwLjg4IDExLjcgMTAuMjcgMTAuMDRDOS40MiA3LjcxIDEwLjYzIDUuMTIgMTIuOTYgNC4yN0MxMy4xNCA0LjIxIDEzLjMzIDQuMTcgMTMuNSA0LjEzQzEyLjg0IDIuODcgMTEuNTMgMiAxMCAyQzcuNzkgMiA2IDMuNzkgNiA2QzYgNi4wOSA2IDYuMTcgNi4wMyA2LjI2QzUuNyA2LjUzIDUuNCA2LjgyIDUuMTUgNy4xNUM1LjA2IDYuNzggNSA2LjQgNSA2QzUgMy4yNCA3LjI0IDEgMTAgMVMxNSAzLjI0IDE1IDZDMTUgNy4xNiAxNC42IDguMjEgMTMuOTQgOS4wNkMxNi4wOCA4Ljg4IDE2IDYgMTYgNk0xMi44MSA4LjFDMTIuODcgOC4yNyAxMi45NiA4LjQxIDEzLjA2IDguNTRDMTMuNjIgNy44OCAxMy45NyA3LjA0IDE0IDYuMTFDMTMuODkgNi4xMyAxMy44IDYuMTUgMTMuNyA2LjE4QzEyLjkyIDYuNDcgMTIuNSA3LjMzIDEyLjgxIDguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlDaGFuZ2UgPSBcIk02LjUsMkM4LjQ2LDIgMTAuMTMsMy4yNSAxMC43NCw1SDIyVjhIMThWMTFIMTVWOEgxMC43NEMxMC4xMyw5Ljc1IDguNDYsMTEgNi41LDExQzQsMTEgMiw5IDIsNi41QzIsNCA0LDIgNi41LDJNNi41LDVBMS41LDEuNSAwIDAsMCA1LDYuNUExLjUsMS41IDAgMCwwIDYuNSw4QTEuNSwxLjUgMCAwLDAgOCw2LjVBMS41LDEuNSAwIDAsMCA2LjUsNU02LjUsMTNDOC40NiwxMyAxMC4xMywxNC4yNSAxMC43NCwxNkgyMlYxOUgyMFYyMkgxOFYxOUgxNlYyMkgxM1YxOUgxMC43NEMxMC4xMywyMC43NSA4LjQ2LDIyIDYuNSwyMkM0LDIyIDIsMjAgMiwxNy41QzIsMTUgNCwxMyA2LjUsMTNNNi41LDE2QTEuNSwxLjUgMCAwLDAgNSwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE5QTEuNSwxLjUgMCAwLDAgOCwxNy41QTEuNSwxLjUgMCAwLDAgNi41LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleUxpbmsgPSBcIk02LjUgM0M0IDMgMiA1IDIgNy41UzQgMTIgNi41IDEyQzguNDYgMTIgMTAuMTMgMTAuNzUgMTAuNzQgOUgxNVYxMkgxOFY5SDIyVjZIMTAuNzRDMTAuMTMgNC4yNSA4LjQ2IDMgNi41IDNNNi41IDZDNy4zMyA2IDggNi42NyA4IDcuNVM3LjMzIDkgNi41IDkgNSA4LjMzIDUgNy41IDUuNjcgNiA2LjUgNk0xMCAxNEM4LjM5IDE0IDYgMTUuMDcgNiAxOEM2IDIwLjk0IDguMzkgMjIgMTAgMjJIMTFWMjBIMTBDOS42NyAyMCA4IDE5LjkgOCAxOEM4IDE2LjE3IDkuNTQgMTYgMTAgMTZIMTFWMTRNMTMgMTRWMTZIMTRDMTQuMzMgMTYgMTYgMTYuMSAxNiAxOEMxNiAxOS44MyAxNC40NiAyMCAxNCAyMEgxM1YyMkgxNEMxNS42MSAyMiAxOCAyMC45NCAxOCAxOEMxOCAxNS4wNyAxNS42MSAxNCAxNCAxNE05IDE3VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleU1pbnVzID0gXCJNNi41LDNDOC40NiwzIDEwLjEzLDQuMjUgMTAuNzQsNkgyMlY5SDE4VjEySDE1VjlIMTAuNzRDMTAuMTMsMTAuNzUgOC40NiwxMiA2LjUsMTJDNCwxMiAyLDEwIDIsNy41QzIsNSA0LDMgNi41LDNNNi41LDZBMS41LDEuNSAwIDAsMCA1LDcuNUExLjUsMS41IDAgMCwwIDYuNSw5QTEuNSwxLjUgMCAwLDAgOCw3LjVBMS41LDEuNSAwIDAsMCA2LjUsNk04LDE3SDE2VjE5SDhWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5T3V0bGluZSA9IFwiTTIyLDE5SDE2VjE1SDEzLjMyQzEyLjE4LDE3LjQyIDkuNzIsMTkgNywxOUMzLjE0LDE5IDAsMTUuODYgMCwxMkMwLDguMTQgMy4xNCw1IDcsNUM5LjcyLDUgMTIuMTcsNi41OCAxMy4zMiw5SDI0VjE1SDIyVjE5TTE4LDE3SDIwVjEzSDIyVjExSDExLjk0TDExLjcxLDEwLjMzQzExLDguMzQgOS4xMSw3IDcsN0E1LDUgMCAwLDAgMiwxMkE1LDUgMCAwLDAgNywxN0M5LjExLDE3IDExLDE1LjY2IDExLjcxLDEzLjY3TDExLjk0LDEzSDE4VjE3TTcsMTVBMywzIDAgMCwxIDQsMTJBMywzIDAgMCwxIDcsOUEzLDMgMCAwLDEgMTAsMTJBMywzIDAgMCwxIDcsMTVNNywxMUExLDEgMCAwLDAgNiwxMkExLDEgMCAwLDAgNywxM0ExLDEgMCAwLDAgOCwxMkExLDEgMCAwLDAgNywxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlQbHVzID0gXCJNNi41LDNDOC40NiwzIDEwLjEzLDQuMjUgMTAuNzQsNkgyMlY5SDE4VjEySDE1VjlIMTAuNzRDMTAuMTMsMTAuNzUgOC40NiwxMiA2LjUsMTJDNCwxMiAyLDEwIDIsNy41QzIsNSA0LDMgNi41LDNNNi41LDZBMS41LDEuNSAwIDAsMCA1LDcuNUExLjUsMS41IDAgMCwwIDYuNSw5QTEuNSwxLjUgMCAwLDAgOCw3LjVBMS41LDEuNSAwIDAsMCA2LjUsNk04LDE3SDExVjE0SDEzVjE3SDE2VjE5SDEzVjIySDExVjE5SDhWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5UmVtb3ZlID0gXCJNNi41LDNDOC40NiwzIDEwLjEzLDQuMjUgMTAuNzQsNkgyMlY5SDE4VjEySDE1VjlIMTAuNzRDMTAuMTMsMTAuNzUgOC40NiwxMiA2LjUsMTJDNCwxMiAyLDEwIDIsNy41QzIsNSA0LDMgNi41LDNNNi41LDZBMS41LDEuNSAwIDAsMCA1LDcuNUExLjUsMS41IDAgMCwwIDYuNSw5QTEuNSwxLjUgMCAwLDAgOCw3LjVBMS41LDEuNSAwIDAsMCA2LjUsNk0xNC41OSwxNEwxNiwxNS40MUwxMy40MSwxOEwxNiwyMC41OUwxNC41OSwyMkwxMiwxOS40MUw5LjQxLDIyTDgsMjAuNTlMMTAuNTksMThMOCwxNS40MUw5LjQxLDE0TDEyLDE2LjU5TDE0LjU5LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleVN0YXIgPSBcIk02LjUgM0M0IDMgMiA1IDIgNy41UzQgMTIgNi41IDEyQzguNDYgMTIgMTAuMTMgMTAuNzUgMTAuNzQgOUgxNVYxMkgxOFY5SDIyVjZIMTAuNzRDMTAuMTMgNC4yNSA4LjQ2IDMgNi41IDNNNi41IDZDNy4zMyA2IDggNi42NyA4IDcuNVM3LjMzIDkgNi41IDkgNSA4LjMzIDUgNy41IDUuNjcgNiA2LjUgNk0xMiAxNEwxMC44NyAxNi42NEw4IDE2Ljg5TDEwLjE4IDE4Ljc3TDkuNSAyMS41OEwxMiAyMC4wOUwxNC40NSAyMS41OEwxMy44IDE4Ljc3TDE2IDE2Ljg5TDEzLjExIDE2LjY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleVZhcmlhbnQgPSBcIk0yMiwxOFYyMkgxOFYxOUgxNVYxNkgxMkw5Ljc0LDEzLjc0QzkuMTksMTMuOTEgOC42MSwxNCA4LDE0QTYsNiAwIDAsMSAyLDhBNiw2IDAgMCwxIDgsMkE2LDYgMCAwLDEgMTQsOEMxNCw4LjYxIDEzLjkxLDkuMTkgMTMuNzQsOS43NEwyMiwxOE03LDVBMiwyIDAgMCwwIDUsN0EyLDIgMCAwLDAgNyw5QTIsMiAwIDAsMCA5LDdBMiwyIDAgMCwwIDcsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlXaXJlbGVzcyA9IFwiTTQuOTMgNS45Mkw2LjM0IDcuMzNBOCA4IDAgMCAxIDE3LjY2IDcuMzNMMTkuMDcgNS45MkExMCAxMCAwIDAgMCA0LjkzIDUuOTJNNy43NiA4Ljc1TDkuMTcgMTAuMTZBNCA0IDAgMCAxIDE0LjgzIDEwLjE2TDE2LjI0IDguNzVBNiA2IDAgMCAwIDcuNzYgOC43NU0xMC43NiAxNUE0LjUgNC41IDAgMSAwIDEwLjc2IDE4SDE1VjIxSDE4VjE4SDIyVjE1TTYuNSAxOEExLjUgMS41IDAgMSAxIDggMTYuNUExLjUgMS41IDAgMCAxIDYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZCA9IFwiTTE5LDEwSDE3VjhIMTlNMTksMTNIMTdWMTFIMTlNMTYsMTBIMTRWOEgxNk0xNiwxM0gxNFYxMUgxNk0xNiwxN0g4VjE1SDE2TTcsMTBINVY4SDdNNywxM0g1VjExSDdNOCwxMUgxMFYxM0g4TTgsOEgxMFYxMEg4TTExLDExSDEzVjEzSDExTTExLDhIMTNWMTBIMTFNMjAsNUg0QzIuODksNSAyLDUuODkgMiw3VjE3QTIsMiAwIDAsMCA0LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QzIyLDUuODkgMjEuMSw1IDIwLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRCYWNrc3BhY2UgPSBcIk0yMSwxMUg2LjgzTDEwLjQxLDcuNDFMOSw2TDMsMTJMOSwxOEwxMC40MSwxNi41OEw2LjgzLDEzSDIxVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkQ2FwcyA9IFwiTTYsMThIMThWMTZINk0xMiw4LjQxTDE2LjU5LDEzTDE4LDExLjU4TDEyLDUuNThMNiwxMS41OEw3LjQxLDEzTDEyLDguNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRDbG9zZSA9IFwiTTEyLDIzTDE2LDE5SDhNMTksOEgxN1Y2SDE5TTE5LDExSDE3VjlIMTlNMTYsOEgxNFY2SDE2TTE2LDExSDE0VjlIMTZNMTYsMTVIOFYxM0gxNk03LDhINVY2SDdNNywxMUg1VjlIN004LDlIMTBWMTFIOE04LDZIMTBWOEg4TTExLDlIMTNWMTFIMTFNMTEsNkgxM1Y4SDExTTIwLDNINEMyLjg5LDMgMiwzLjg5IDIsNVYxNUEyLDIgMCAwLDAgNCwxN0gyMEEyLDIgMCAwLDAgMjIsMTVWNUMyMiwzLjg5IDIxLjEsMyAyMCwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRXNjID0gXCJNMSA3SDdWOUgzVjExSDdWMTNIM1YxNUg3VjE3SDFWN00xMSA3SDE1VjlIMTFWMTFIMTNDMTQuMTEgMTEgMTUgMTEuOSAxNSAxM1YxNUMxNSAxNi4xMSAxNC4xMSAxNyAxMyAxN0g5VjE1SDEzVjEzSDExQzkuOSAxMyA5IDEyLjExIDkgMTFWOUM5IDcuOSA5LjkgNyAxMSA3TTE5IDdIMjFDMjIuMTEgNyAyMyA3LjkgMjMgOVYxMEgyMVY5SDE5VjE1SDIxVjE0SDIzVjE1QzIzIDE2LjExIDIyLjExIDE3IDIxIDE3SDE5QzE3LjkgMTcgMTcgMTYuMTEgMTcgMTVWOUMxNyA3LjkgMTcuOSA3IDE5IDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGMSA9IFwiTTYgN0gxMlY5SDhWMTFIMTFWMTNIOFYxN0g2VjdNMTQgN0gxOFYxN0gxNlY5SDE0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGMTAgPSBcIk0yIDdIOFY5SDRWMTFIN1YxM0g0VjE3SDJWN00xMCA3SDE0VjE3SDEyVjlIMTBWN00xOCA3SDIwQzIxLjExIDcgMjIgNy45IDIyIDlWMTVDMjIgMTYuMTEgMjEuMTEgMTcgMjAgMTdIMThDMTYuOSAxNyAxNiAxNi4xMSAxNiAxNVY5QzE2IDcuOSAxNi45IDcgMTggN00xOCA5VjE1SDIwVjlIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGMTEgPSBcIk0zIDdIOVY5SDVWMTFIOFYxM0g1VjE3SDNWN00xMSA3SDE1VjE3SDEzVjlIMTFWN00xNyA3SDIxVjE3SDE5VjlIMTdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZEYxMiA9IFwiTTIgN0g4VjlINFYxMUg3VjEzSDRWMTdIMlY3TTE2IDdIMjBDMjEuMTEgNyAyMiA3LjkgMjIgOVYxMUMyMiAxMi4xMSAyMS4xMSAxMyAyMCAxM0gxOFYxNUgyMlYxN0gxNlYxM0MxNiAxMS45IDE2LjkgMTEgMTggMTFIMjBWOUgxNlY3TTEwIDdIMTRWMTdIMTJWOUgxMFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjIgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTEzIDdIMTdDMTguMTEgNyAxOSA3LjkgMTkgOVYxMUMxOSAxMi4xMSAxOC4xMSAxMyAxNyAxM0gxNVYxNUgxOVYxN0gxM1YxM0MxMyAxMS45IDEzLjkgMTEgMTUgMTFIMTdWOUgxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjMgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTE5IDE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDEzVjE1SDE3VjEzSDE1VjExSDE3VjlIMTNWN0gxN0MxOC4xIDcgMTkgNy44OSAxOSA5VjEwLjVDMTkgMTEuMzMgMTguMzMgMTIgMTcuNSAxMkMxOC4zMyAxMiAxOSAxMi42NyAxOSAxMy41VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjQgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTEzIDdIMTVWMTFIMTdWN0gxOVYxN0gxN1YxM0gxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjUgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTEzIDdIMTlWOUgxNVYxMUgxN0MxOC4xMSAxMSAxOSAxMS45IDE5IDEzVjE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDEzVjE1SDE3VjEzSDEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRGNiA9IFwiTTUgN0gxMVY5SDdWMTFIMTBWMTNIN1YxN0g1VjdNMTUgN0gxOVY5SDE1VjExSDE3QzE4LjExIDExIDE5IDExLjkgMTkgMTNWMTVDMTkgMTYuMTEgMTguMTEgMTcgMTcgMTdIMTVDMTMuOSAxNyAxMyAxNi4xMSAxMyAxNVY5QzEzIDcuOSAxMy45IDcgMTUgN00xNSAxM1YxNUgxN1YxM0gxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZEY3ID0gXCJNNSA3SDExVjlIN1YxMUgxMFYxM0g3VjE3SDVWN00xNSAxN0gxM0wxNyA5SDEzVjdIMTlWOUwxNSAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZEY4ID0gXCJNNSA3SDExVjlIN1YxMUgxMFYxM0g3VjE3SDVWN00xNSAxM1YxNUgxN1YxM0gxNU0xNSA5VjExSDE3VjlIMTVNMTUgMTdDMTMuOSAxNyAxMyAxNi4xMSAxMyAxNVYxMy41QzEzIDEyLjY3IDEzLjY3IDEyIDE0LjUgMTJDMTMuNjcgMTIgMTMgMTEuMzMgMTMgMTAuNVY5QzEzIDcuOSAxMy45IDcgMTUgN0gxN0MxOC4xIDcgMTkgNy44OSAxOSA5VjEwLjVDMTkgMTEuMzMgMTguMzMgMTIgMTcuNSAxMkMxOC4zMyAxMiAxOSAxMi42NyAxOSAxMy41VjE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkRjkgPSBcIk01IDdIMTFWOUg3VjExSDEwVjEzSDdWMTdINVY3TTE3IDE3SDEzVjE1SDE3VjEzSDE1QzEzLjkgMTMgMTMgMTIuMTEgMTMgMTFWOUMxMyA3LjkgMTMuOSA3IDE1IDdIMTdDMTguMTEgNyAxOSA3LjkgMTkgOVYxNUMxOSAxNi4xMSAxOC4xMSAxNyAxNyAxN00xNyAxMVY5SDE1VjExSDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMCwyMC43MkwxOC43MywyMkwxNS43MywxOUg0QzIuODksMTkgMiwxOC4xIDIsMTdWN0MyLDYuNSAyLjE4LDYuMDcgMi40Niw1LjczTDEsNC4yN00xOSwxMFY4SDE3VjEwSDE5TTE5LDEzVjExSDE3VjEzSDE5TTE2LDEwVjhIMTRWMTBIMTZNMTYsMTNWMTFIMTRWMTIuMThMMTEuODIsMTBIMTNWOEgxMVY5LjE4TDkuODIsOEw2LjgyLDVIMjBBMiwyIDAgMCwxIDIyLDdWMTdDMjIsMTcuODYgMjEuNDYsMTguNTkgMjAuNywxOC44N0wxNC44MiwxM0gxNk04LDE1VjE3SDEzLjczTDExLjczLDE1SDhNNSwxMEg2LjczTDUsOC4yN1YxME03LDEzVjExSDVWMTNIN004LDEzSDkuNzNMOCwxMS4yN1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlLZXlib2FyZE9mZk91dGxpbmUgPSBcIk0xLDQuMjdMMi40Nyw1Ljc0QzIuMTgsNi4wOCAyLDYuNSAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMTUuNzNMMTguNzMsMjJMMjAsMjAuNzJMMi4yOCwzTDEsNC4yN000LDE3VjcuMjdMNSw4LjI3VjEwSDYuNzNMOCwxMS4yN1YxM0g5LjczTDEwLjczLDE0SDhWMTZIMTIuNzNMMTMuNzMsMTdINE01LDExSDdWMTNINVYxMU0xNywxMUgxOVYxM0gxN1YxMU0xOSwxMEgxN1Y4SDE5VjEwTTE0LDExSDE2VjEzSDE0LjgzTDE0LDEyLjE3VjExTTEzLDEwSDExLjgzTDExLDkuMTdWOEgxM1YxME0yMiw3VjE3QzIyLDE3Ljg2IDIxLjQ1LDE4LjU4IDIwLjcsMTguODdMMTguODMsMTdIMjBWN0g4LjgzTDYuODMsNUgyMEEyLDIgMCAwLDEgMjIsN00xNiwxMEgxNFY4SDE2VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkT3V0bGluZSA9IFwiTTQsNUEyLDIgMCAwLDAgMiw3VjE3QTIsMiAwIDAsMCA0LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QTIsMiAwIDAsMCAyMCw1SDRNNCw3SDIwVjE3SDRWN001LDhWMTBIN1Y4SDVNOCw4VjEwSDEwVjhIOE0xMSw4VjEwSDEzVjhIMTFNMTQsOFYxMEgxNlY4SDE0TTE3LDhWMTBIMTlWOEgxN001LDExVjEzSDdWMTFINU04LDExVjEzSDEwVjExSDhNMTEsMTFWMTNIMTNWMTFIMTFNMTQsMTFWMTNIMTZWMTFIMTRNMTcsMTFWMTNIMTlWMTFIMTdNOCwxNFYxNkgxNlYxNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkUmV0dXJuID0gXCJNMTksN1YxMUg1LjgzTDkuNDEsNy40MUw4LDZMMiwxMkw4LDE4TDkuNDEsMTYuNThMNS44MywxM0gyMVY3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkU2V0dGluZ3MgPSBcIk0xOSwxMEgxN1Y4SDE5TTE5LDEzSDE3VjExSDE5TTE2LDEwSDE0VjhIMTZNMTYsMTNIMTRWMTFIMTZNMTYsMTdIOFYxNUgxNk03LDEwSDVWOEg3TTcsMTNINVYxMUg3TTgsMTFIMTBWMTNIOE04LDhIMTBWMTBIOE0xMSwxMUgxM1YxM0gxMU0xMSw4SDEzVjEwSDExTTIwLDVINEEyLDIgMCAwLDAgMiw3VjE3QTIsMiAwIDAsMCA0LDE5SDIwQTIsMiAwIDAsMCAyMiwxN1Y3QTIsMiAwIDAsMCAyMCw1TTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtleWJvYXJkU2V0dGluZ3NPdXRsaW5lID0gXCJNNywyMkg5VjI0SDdWMjJNMTEsMjJIMTNWMjRIMTFWMjJNMTUsMjJIMTdWMjRIMTVWMjJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMjBBMiwyIDAgMCwwIDIyLDE3VjdBMiwyIDAgMCwwIDIwLDVINE00LDdIMjBWMTdINFY3TTUsOFYxMEg3VjhINU04LDhWMTBIMTBWOEg4TTExLDhWMTBIMTNWOEgxMU0xNCw4VjEwSDE2VjhIMTRNMTcsOFYxMEgxOVY4SDE3TTUsMTFWMTNIN1YxMUg1TTgsMTFWMTNIMTBWMTFIOE0xMSwxMVYxM0gxM1YxMUgxMU0xNCwxMVYxM0gxNlYxMUgxNE0xNywxMVYxM0gxOVYxMUgxN004LDE0VjE2SDE2VjE0SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRTcGFjZSA9IFwiTTMgMTVINVYxOUgxOVYxNUgyMVYxOUMyMSAyMC4xIDIwLjEgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xIDMgMTlWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRUYWIgPSBcIk0yMCwxOEgyMlY2SDIwTTExLjU5LDcuNDFMMTUuMTcsMTFIMVYxM0gxNS4xN0wxMS41OSwxNi41OEwxMywxOEwxOSwxMkwxMyw2TDExLjU5LDcuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2V5Ym9hcmRWYXJpYW50ID0gXCJNNiwxNkgxOFYxOEg2VjE2TTYsMTNWMTVIMlYxM0g2TTcsMTVWMTNIMTBWMTVIN00xMSwxNVYxM0gxM1YxNUgxMU0xNCwxNVYxM0gxN1YxNUgxNE0xOCwxNVYxM0gyMlYxNUgxOE0yLDEwSDVWMTJIMlYxME0xOSwxMlYxMEgyMlYxMkgxOU0xOCwxMkgxNlYxMEgxOFYxMk04LDEySDZWMTBIOFYxMk0xMiwxMkg5VjEwSDEyVjEyTTE1LDEySDEzVjEwSDE1VjEyTTIsOVY3SDRWOUgyTTUsOVY3SDdWOUg1TTgsOVY3SDEwVjlIOE0xMSw5VjdIMTNWOUgxMU0xNCw5VjdIMTZWOUgxNE0xNyw5VjdIMjJWOUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlLaGFuZGEgPSBcIk0xNiAyMEMxOS43MiAxOCAyMiAxNS4yNyAyMiAxMkMyMiA5LjM0IDIwLjQ2IDYuOSAxNy44OSA1SDE3LjgyQzE5IDYuMzUgMTkuNjggOC4wOSAxOS42OCAxMEMxOS42OCAxMyAxOCAxNSAxNS41IDE2LjgzQzE1LjUgMTYuODQgMTQuMzggMTcuNTQgMTMgMTguNDFWMTcuMzNMMTUgMTZDMTUgMTYgMTQuOCAxNS40IDE0LjU4IDE0LjQ2QzE2LjYgMTMuNTggMTggMTEuNjkgMTggOS41QzE4IDcuMzQgMTYuNjQgNS40NyAxNC42NSA0LjU3QzE0Ljg0IDMuNjMgMTUgMyAxNSAzTDEyIDFMOSAzQzkgMyA5LjE2IDMuNjMgOS4zNSA0LjU3QzcuMzcgNS40NyA2IDcuMzQgNiA5LjVDNiAxMS42OSA3LjQgMTMuNTggOS40MiAxNC40NkM5LjIgMTUuNCA5IDE2IDkgMTZMMTEgMTcuMzNWMTguNDFDOS42MiAxNy41NCA4LjUgMTYuODQgOC41IDE2LjgzQzYgMTUgNC4zMiAxMyA0LjMyIDEwQzQuMzIgOC4wOSA1IDYuMzUgNi4xOCA1SDYuMTJDMy41NCA2LjkgMiA5LjM0IDIgMTJDMiAxNS4yNyA0LjI5IDE4IDggMjBMOSAxOC41TDEwLjkyIDE5LjczTDcuMzQgMjJMOCAyM0wxMSAyMS4wN1YyM0gxM1YyMS4wN0wxNiAyM0wxNi42NiAyMkwxMy4wOCAxOS43M0wxNSAxOC41TDE2IDIwTTE2Ljc1IDkuNUMxNi43NSAxMS4wOSAxNS43NiAxMi40NiAxNC4zMSAxMy4xOUMxNC4xNCAxMi4yMyAxNCAxMS4xMiAxNCAxMEMxNCA4LjY3IDE0LjIgNy4xNSAxNC40MiA1Ljg2QzE1LjgxIDYuNiAxNi43NSA3Ljk1IDE2Ljc1IDkuNU03LjI1IDkuNUM3LjI1IDcuOTUgOC4xOSA2LjYgOS41OSA1Ljg2QzkuOCA3LjE1IDEwIDguNjcgMTAgMTBDMTAgMTEuMTIgOS44NiAxMi4yMyA5LjY5IDEzLjE5QzguMjQgMTIuNDYgNy4yNSAxMS4wOSA3LjI1IDkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLaWNrc3RhcnRlciA9IFwiTTE5LjMgMTAuMkwxNy41IDEyTDE5LjMgMTMuOEMyMS4xOSAxNS42NyAyMS4xOSAxOC43MiAxOS4zIDIwLjU5QzE3LjQyIDIyLjQ2IDE0LjM1IDIyLjQ2IDEyLjQ3IDIwLjU5TDExLjggMTkuOTNDMTAuOTMgMjEuMTkgOS41IDIyIDcuODMgMjJDNS4xNiAyMiAzIDE5Ljg1IDMgMTcuMlY2LjhDMyA0LjE1IDUuMTYgMiA3LjgzIDJDOS41IDIgMTAuOTMgMi44MiAxMS44IDQuMDdMMTIuNDcgMy40MUMxNC4zNSAxLjU0IDE3LjQyIDEuNTQgMTkuMyAzLjQxQzIxLjE5IDUuMjggMjEuMTkgOC4zMyAxOS4zIDEwLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpS2xpbmdvbiA9IFwiTTQuNzkgMjEuNUw0LjcxIDIxLjI0QzQuNTMgMjAuNjUgNC40NyAyMC4wOCA0LjUgMTkuNEM0LjYgMTguMTcgNS4xNCAxNy4zMSA1LjgyIDE2LjU5QzUuNjQgMTYgNS41MyAxNS4zOSA1LjUzIDE0Ljc0QzUuNTMgMTMgNi4yNiAxMS40NCA3LjQ1IDEwLjNDOC4zMyA5LjQ2IDkuNDYgOC44NiAxMC43MSA4LjZDMTEuMzcgNi4yMyAxMS44IDMuOCAxMiAxLjVDMTIuMjQgMy41IDEyLjY1IDYuMTIgMTMuMyA4LjU4QzE0LjYgOC44MiAxNS43NiA5LjQzIDE2LjY3IDEwLjNDMTcuODUgMTEuNDQgMTguNTkgMTMgMTguNTkgMTQuNzRDMTguNTkgMTUuMzUgMTguNSAxNS45MyAxOC4zMyAxNi41QzE5LjIxIDE2LjkyIDIwLjIgMTcuMTcgMjEuNSAxNy4yOUwyMS40NCAxNy40NEMyMS4zMiAxNy43NyAyMSAxOCAyMC43MSAxOC4xOEwyMC42OSAxOC4xOUMyMC4xMyAxOC41NyAxOS4xOCAxOSAxNy44NSAxOUMxNy43IDE5IDE3LjU2IDE5IDE3LjQxIDE5QzE3LjIzIDE5IDE3LjA2IDE4Ljk3IDE2LjkgMTguOTVDMTYuODMgMTkgMTYuNzUgMTkuMSAxNi42NyAxOS4xOEMxNS41IDIwLjMxIDEzLjg2IDIxIDEyLjA2IDIxQzEwLjI3IDIxIDguNjQgMjAuMzEgNy40NiAxOS4xOEM3LjQyIDE5LjE0IDcuMzggMTkuMSA3LjM0IDE5LjA2QzYuMzQgMTkuNTkgNS41NCAyMC4zMyA0Ljk0IDIxLjI3TDQuOCAyMS41TTYuNSAxNS45NEM2LjY1IDE1LjgyIDguMiAxNC41IDguNjMgMTMuNzhMOC43MyAxMy42MUM5LjY1IDE1IDEwLjQgMTYuMjggMTEuNDMgMTguMDhMMTEuMjIgMTguMDlDMTAuMDggMTguMTYgOS4wNSAxOC4zNyA4LjE1IDE4LjdDOS4xNyAxOS42MiAxMC41NSAyMC4xOSAxMi4wNiAyMC4xOUMxMy41NCAyMC4xOSAxNC44OCAxOS42NSAxNS44OSAxOC43N0MxNS42NCAxOC43MiAxNS4zOSAxOC42NSAxNS4xNSAxOC41OUMxNC4zOCAxOC40MSAxMy42NSAxOC4yMiAxMi44MSAxOC4xOUwxMi42MiAxOC4xOEwxMi43IDE4QzEzLjEgMTcuMiAxNC44IDE0LjQxIDE1LjIzIDEzLjYzTDE1LjM0IDEzLjgxQzE2IDE0Ljc3IDE2LjczIDE1LjUgMTcuNTggMTYuMDdDMTcuNjkgMTUuNjQgMTcuNzUgMTUuMiAxNy43NSAxNC43NUMxNy43NSAxMy4yNSAxNy4xMSAxMS44OSAxNi4wOSAxMC45QzE1LjQgMTAuMjQgMTQuNTMgOS43NCAxMy41NSA5LjVDMTMuODUgMTAuNSAxNC4yIDExLjUgMTQuNTkgMTIuMzVMMTQuNjIgMTIuNEwxNC41OSAxMi40NkMxNC4yIDEzLjIyIDEzLjc2IDEzLjk1IDEzLjMzIDE0LjY2QzEyLjk0IDE1LjMgMTIuNTQgMTUuOTYgMTIuMTggMTYuNjRMMTIuMDggMTYuODNMMTEuOTYgMTYuNjVDMTEuMzkgMTUuODIgOS43NSAxMy4wNiA5LjQxIDEyLjVDOS44MSAxMS41IDEwLjE1IDEwLjUgMTAuNDUgOS41QzkuNSA5Ljc4IDguNyAxMC4yNiA4LjAzIDEwLjlDNyAxMS44OCA2LjM3IDEzLjI1IDYuMzcgMTQuNzRDNi4zNyAxNS4xNiA2LjQyIDE1LjU2IDYuNSAxNS45NVwiO1xyXG5leHBvcnQgdmFyIG1kaUtuaWZlID0gXCJNMjAuNjIsMkMyMy45Nyw3LjYxIDEyLjQ3LDIwLjE1IDEyLjQ3LDIwLjE1TDkuNiwxNy4yOEw0LjkxLDIyTDIuNzcsMTkuODZMMjAuNjIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlLbmlmZU1pbGl0YXJ5ID0gXCJNMjIsMkwxNy4zOSwzLjc1TDEwLjQ2LDEwLjY4TDE0LDE0LjIyTDIwLjkyLDcuMjlDMjIuNDMsNS43OCAyMiwyIDIyLDJNOC4zMywxMEw2LjkyLDExLjM5TDguMzMsMTIuOEwyLjY4LDE4LjQ2TDYuMjEsMjJMMTEuODcsMTYuMzRMMTMuMjgsMTcuNzZMMTQuNywxNi4zNEw4LjMzLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUtvYWxhID0gXCJNMTkgM0MxOC4xIDMgMTUuNSAzIDE0LjMgNi4xQzEzLjkgNiAxMy40IDYgMTMgNkgxMUMxMC42IDYgMTAuMSA2IDkuNyA2LjFDOC41IDMgNS45IDMgNSAzQzQgMyAxIDQgMSA5QzEgMTIuNiAzLjUgMTMuNiA1IDEzLjlWMTVDNSAxOC4zIDcuNyAyMSAxMSAyMUgxM0MxNi4zIDIxIDE5IDE4LjMgMTkgMTVWMTMuOUMyMC41IDEzLjYgMjMgMTIuNiAyMyA5QzIzIDQgMjAgMyAxOSAzTTUgMTJWMTIuNEMyLjkgMTEuOCAzLjMgOS41IDQuMyA4LjdDNCA4LjMgMyA5IDMgOC42QzMgOC4xIDQuOCA3LjQgNS4xIDcuM0M0LjggNi44IDMuNiA3IDMuNiA2LjZDMy42IDYuMyA0LjggNS44IDUuOCA2QzYuMyA2LjEgNi45IDYuMyA3LjQgNi43QzYgOCA1IDkuOCA1IDEyTTguNSAxNUM2LjUgMTUgNi41IDEyIDguNSAxMkMxMC41IDEyIDEwLjUgMTUgOC41IDE1TTEyLjUgMThIMTEuNUMxMC44IDE4IDEwLjMgMTcuMyAxMC42IDE2LjdMMTEuMyAxMy43QzExLjQgMTMuMyAxMS44IDEzLjEgMTIuMSAxM0MxMi40IDEzIDEyLjcgMTMuMiAxMi45IDEzLjdMMTMuNiAxNi43QzEzLjcgMTcuMyAxMy4yIDE4IDEyLjUgMThNMTUuNSAxNUMxMy41IDE1IDEzLjUgMTIgMTUuNSAxMkMxNy41IDEyIDE3LjUgMTUgMTUuNSAxNU0xOS43IDguNkMyMC43IDkuNCAyMS4xIDExLjcgMTkgMTIuM0MxOS4xIDEwLjEgMTguMSA4IDE2LjYgNi43QzE3LjEgNi4zIDE3LjcgNi4xIDE4LjIgNkMxOS4yIDUuOCAyMC40IDYuMiAyMC40IDYuNkMyMC40IDcgMTkuMiA2LjggMTguOSA3LjJDMTkuMiA3LjQgMjEgOC4xIDIxIDguNkMyMSA5IDIwLjEgOC4zIDE5LjcgOC42WlwiO1xyXG5leHBvcnQgdmFyIG1kaUtvZGkgPSBcIk0xMi4wMywxQzExLjgyLDEgMTEuNiwxLjExIDExLjQxLDEuMzFDMTAuNTYsMi4xNiA5LjcyLDMgOC44OCwzLjg0QzguNjYsNC4wNiA4LjYsNC4xOCA4LjM4LDQuMzhDOC4wOSw0LjYyIDcuOTYsNC45MSA3Ljk3LDUuMjhDOCw2LjU3IDgsNy44NCA4LDkuMTNDOCwxMC40NiA4LDExLjgyIDgsMTMuMTZDOCwxMy4yNiA4LDEzLjM0IDguMDMsMTMuNDRDOC4xMSwxMy43NSA4LjMxLDEzLjgyIDguNTMsMTMuNTlDOS43MywxMi4zOSAxMC44LDExLjMgMTIsMTAuMDlDMTMuMzYsOC43MyAxNC43Myw3LjM3IDE2LjA5LDZDMTYuNSw1LjYgMTYuNSw1LjE1IDE2LjA5LDQuNzVDMTQuOTQsMy42IDEzLjc3LDIuNDcgMTIuNjMsMS4zMUMxMi40MywxLjExIDEyLjI0LDEgMTIuMDMsMU0xOC42Niw3LjY2QzE4LjQ1LDcuNjYgMTguMjUsNy43NSAxOC4wNiw3Ljk0QzE2LjkxLDkuMSAxNS43NSwxMC4yNCAxNC41OSwxMS40MUMxNC4yLDExLjggMTQuMiwxMi4yMyAxNC41OSwxMi42M0MxNS43NCwxMy43OCAxNi44OCwxNC45NCAxOC4wMywxNi4wOUMxOC40MywxNi41IDE4Ljg1LDE2LjUgMTkuMjUsMTYuMDlDMjAuMzYsMTUgMjEuNSwxMy44NyAyMi41OSwxMi43NUMyMi43NiwxMi41OCAyMi45MywxMi40MiAyMywxMi4xOVYxMS44OEMyMi45MywxMS42NCAyMi43NiwxMS41IDIyLjU5LDExLjMxQzIxLjQ3LDEwLjE5IDIwLjM3LDkuMDYgMTkuMjUsNy45NEMxOS4wNiw3Ljc1IDE4Ljg2LDcuNjYgMTguNjYsNy42Nk00Ljc4LDguMDlDNC42NSw4LjA0IDQuNTgsOC4xNCA0LjUsOC4yMkMzLjM1LDkuMzkgMi4zNCwxMC40MyAxLjE5LDExLjU5QzAuOTMsMTEuODYgMC45MywxMi4yNCAxLjE5LDEyLjVDMS44MSwxMy4xMyAyLjQ0LDEzLjc1IDMuMDYsMTQuMzhDMy42LDE0LjkyIDQsMTUuMzMgNC41NiwxNS44OEM0LjcyLDE2LjAzIDQuODYsMTYgNC45NCwxNS44MUM1LDE1LjcxIDUsMTUuNTggNSwxNS40N0M1LDE0LjI5IDUsMTMuMzcgNSwxMi4xOUM1LDExIDUsOS44MSA1LDguNjNDNSw4LjU1IDUsOC40NSA0Ljk3LDguMzhDNC45NSw4LjI1IDQuOSw4LjE0IDQuNzgsOC4wOU0xMi4wOSwxNC4yNUMxMS44OSwxNC4yNSAxMS42NiwxNC4zNCAxMS40NywxNC41M0MxMC4zMiwxNS42OSA5LjE4LDE2Ljg3IDguMDMsMTguMDNDNy42MywxOC40MyA3LjYzLDE4Ljg1IDguMDMsMTkuMjVDOS4xNCwyMC4zNyAxMC4yNiwyMS40NyAxMS4zOCwyMi41OUMxMS41NCwyMi43NiAxMS43MSwyMi45MyAxMS45NCwyM0gxMi4yMkMxMi40NCwyMi45NCAxMi42MiwyMi43OSAxMi43OCwyMi42M0MxMy45LDIxLjUgMTUuMDMsMjAuMzggMTYuMTYsMTkuMjVDMTYuNTUsMTguODUgMTYuNSwxOC40IDE2LjEzLDE4QzE0Ljk3LDE2Ljg0IDEzLjg0LDE1LjY5IDEyLjY5LDE0LjUzQzEyLjUsMTQuMzQgMTIuMywxNC4yNSAxMi4wOSwxNC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlLdWJlcm5ldGVzID0gXCJNMTMuOTUgMTMuNUgxMy43MkMxMy41NCAxMy42MSAxMy40NiAxMy44MiAxMy41NCAxNEwxNC40IDE2LjExQzE1LjIzIDE1LjU4IDE1Ljg2IDE0Ljc5IDE2LjE5IDEzLjg2TDEzLjk2IDEzLjVIMTMuOTVNMTAuNSAxMy43OUMxMC40NCAxMy42MiAxMC4yOSAxMy41IDEwLjEyIDEzLjVIMTAuMDRMNy44MiAxMy44N0M4LjE1IDE0Ljc5IDguNzggMTUuNTcgOS42MSAxNi4xTDEwLjQ2IDE0LjAzVjE0QzEwLjUgMTMuOTUgMTAuNSAxMy44NiAxMC41IDEzLjc5TTEyLjMzIDE0LjZDMTIuMjMgMTQuNDIgMTIgMTQuMzUgMTEuODIgMTQuNDVDMTEuNzUgMTQuNSAxMS43IDE0LjUzIDExLjY3IDE0LjZIMTEuNjZMMTAuNTcgMTYuNTdDMTEuMzUgMTYuODMgMTIuMTkgMTYuODggMTMgMTYuNjlDMTMuMTQgMTYuNjYgMTMuMjkgMTYuNjIgMTMuNDMgMTYuNTdMMTIuMzQgMTQuNkgxMi4zM00xNS43OCAxMC4wM0wxNC4xIDExLjVMMTQuMTEgMTEuNTNDMTMuOTUgMTEuNjcgMTMuOTMgMTEuOTEgMTQuMDcgMTIuMDZDMTQuMTIgMTIuMTIgMTQuMTggMTIuMTYgMTQuMjUgMTIuMThMMTQuMjYgMTIuMTlMMTYuNDMgMTIuODFDMTYuNSAxMS44NCAxNi4yOSAxMC44NiAxNS43OCAxMC4wM00xMi42NyAxMC4xOUMxMi42OCAxMC40IDEyLjg1IDEwLjU2IDEzLjA2IDEwLjU1QzEzLjE0IDEwLjU1IDEzLjIxIDEwLjUzIDEzLjI3IDEwLjVIMTMuMjhMMTUuMTEgOS4xOUMxNC40MSA4LjUgMTMuNSA4LjA3IDEyLjU0IDcuOTVMMTIuNjcgMTAuMTlNMTAuNzMgMTAuNUMxMC45IDEwLjYxIDExLjEzIDEwLjU4IDExLjI1IDEwLjQxQzExLjMgMTAuMzUgMTEuMzIgMTAuMjggMTEuMzMgMTAuMkgxMS4zNEwxMS40NiA3Ljk1QzExLjMxIDcuOTcgMTEuMTYgOCAxMSA4LjAzQzEwLjIgOC4yMSA5LjQ2IDguNjEgOC44OCA5LjE5TDEwLjcyIDEwLjVIMTAuNzNNOS43NCAxMi4xOUM5Ljk0IDEyLjE0IDEwLjA2IDExLjkzIDEwIDExLjczQzEwIDExLjY1IDkuOTUgMTEuNTkgOS44OSAxMS41NFYxMS41M0w4LjIxIDEwQzcuNjkgMTAuODYgNy40NyAxMS44NCA3LjU4IDEyLjgyTDkuNzQgMTIuMlYxMi4xOU0xMS4zOCAxMi44NUwxMiAxMy4xNUwxMi42MiAxMi44NUwxMi43NyAxMi4xOEwxMi4zNCAxMS42NUgxMS42NUwxMS4yMiAxMi4xOEwxMS4zOCAxMi44NU0yMi4yNyAxNC4xN0wyMC41IDYuNUMyMC40MSA2LjA4IDIwLjEzIDUuNzQgMTkuNzYgNS41NkwxMi41OSAyLjEzQzEyLjIyIDEuOTYgMTEuNzggMS45NiAxMS40IDIuMTNMNC4yNCA1LjU2QzMuODcgNS43NCAzLjU5IDYuMDggMy41IDYuNUwxLjczIDE0LjE3QzEuNjggMTQuMzcgMS42OCAxNC41NyAxLjczIDE0Ljc2QzEuNzQgMTQuODIgMS43NiAxNC44OCAxLjc4IDE0Ljk0QzEuODEgMTUuMDMgMS44NiAxNS4xMyAxLjkxIDE1LjIxQzEuOTQgMTUuMjUgMS45NiAxNS4yOSAyIDE1LjMyTDYuOTUgMjEuNUM2Ljk3IDIxLjUgNyAyMS41NCA3IDIxLjU2QzcuMSAyMS42NSA3LjE5IDIxLjcyIDcuMjggMjEuNzhDNy40IDIxLjg2IDcuNTQgMjEuOTIgNy42OCAyMS45NUM3Ljc5IDIyIDcuOTEgMjIgOCAyMkgxNi4xMkMxNi4xOSAyMiAxNi4yNiAyMS45NyAxNi4zMiAyMS45NUMxNi4zNyAyMS45NCAxNi40MiAyMS45MiAxNi40NiAyMS45MUMxNi41IDIxLjg5IDE2LjUzIDIxLjg4IDE2LjU3IDIxLjg2QzE2LjYyIDIxLjg0IDE2LjY3IDIxLjgxIDE2LjcyIDIxLjc4QzE2Ljg0IDIxLjcgMTYuOTUgMjEuNiAxNy4wNSAyMS41TDE3LjIgMjEuM0wyMiAxNS4zMkMyMi4xIDE1LjIgMjIuMTcgMTUuMDcgMjIuMjIgMTQuOTRDMjIuMjQgMTQuODggMjIuMjYgMTQuODIgMjIuMjcgMTQuNzZDMjIuMzIgMTQuNTcgMjIuMzIgMTQuMzYgMjIuMjcgMTQuMTdNMTQuODQgMTcuMTZDMTQuODYgMTcuMjIgMTQuODggMTcuMjggMTQuOTEgMTcuMzNDMTQuODcgMTcuNDEgMTQuODUgMTcuNSAxNC44OCAxNy41OUMxNSAxNy44MyAxNS4xMSAxOC4wNSAxNS4yNiAxOC4yN0MxNS4zNCAxOC4zOCAxNS40MiAxOC41IDE1LjUgMTguNjFDMTUuNSAxOC42NCAxNS41MyAxOC42OSAxNS41NCAxOC43M0MxNS42NiAxOC45MyAxNS42IDE5LjE5IDE1LjM5IDE5LjMyUzE0LjkyIDE5LjM3IDE0LjggMTkuMTdDMTQuNzkgMTkuMTQgMTQuNzggMTkuMTIgMTQuNzcgMTkuMDlDMTQuNzUgMTkuMDYgMTQuNzMgMTkgMTQuNzEgMTlDMTQuNjYgMTguODUgMTQuNjIgMTguNzIgMTQuNTkgMTguNTlDMTQuNSAxOC4zNCAxNC40MiAxOC4xIDE0LjI5IDE3Ljg3QzE0LjI0IDE3LjggMTQuMTYgMTcuNzUgMTQuMDggMTcuNzNMMTQgMTcuNTdDMTIuNzEgMTguMDUgMTEuMyAxOC4wNSAxMC4wMyAxNy41Nkw5LjkzIDE3Ljc0QzkuODYgMTcuNzUgOS43OSAxNy43OCA5Ljc0IDE3LjgzQzkuNiAxOC4wNyA5LjUgMTguMzIgOS40MSAxOC42QzkuMzggMTguNzMgOS4zNCAxOC44NiA5LjI5IDE5QzkuMjcgMTkgOS4yNSAxOS4wNyA5LjIzIDE5LjFDOS4xNSAxOS4zMiA4LjkxIDE5LjQ0IDguNjggMTkuMzZDOC40NiAxOS4yOCA4LjM0IDE5LjA0IDguNDIgMTguODFDOC40MyAxOC43OCA4LjQ1IDE4Ljc2IDguNDYgMTguNzNDOC41IDE4LjcgOC41IDE4LjY1IDguNSAxOC42MkM4LjU5IDE4LjUgOC42NiAxOC4zOSA4Ljc0IDE4LjI3QzguOSAxOC4wNiA5LjAzIDE3LjgyIDkuMTMgMTcuNThDOS4xNCAxNy41IDkuMTMgMTcuNDEgOS4xIDE3LjMzTDkuMTcgMTcuMTVDOCAxNi40NSA3LjEyIDE1LjM2IDYuNyAxNC4wNkw2LjUgMTQuMDlDNi40NCAxNC4wNCA2LjM1IDE0IDYuMjcgMTRDNiAxNC4wNSA1Ljc2IDE0LjEzIDUuNSAxNC4yMkM1LjM5IDE0LjI4IDUuMjYgMTQuMzMgNS4xMyAxNC4zN0M1LjEgMTQuMzggNS4wNiAxNC4zOSA1IDE0LjRDNC43OCAxNC40NyA0LjU0IDE0LjM1IDQuNDYgMTQuMTNDNC4zOSAxMy45IDQuNSAxMy42NiA0Ljc0IDEzLjU4QzQuNzYgMTMuNTggNC43OSAxMy41NyA0LjgyIDEzLjU3VjEzLjU2SDQuODNMNC45NCAxMy41NEM1LjA4IDEzLjUgNS4yMiAxMy41IDUuMzUgMTMuNUM1LjYxIDEzLjUgNS44NyAxMy40NCA2LjEyIDEzLjM4QzYuMiAxMy4zMyA2LjI2IDEzLjI3IDYuMzEgMTMuMTlMNi41IDEzLjE0QzYuMjkgMTEuNzggNi42IDEwLjQxIDcuMzYgOS4yN0w3LjIyIDkuMTVDNy4yMiA5LjA2IDcuMTkgOC45NyA3LjE0IDguOUM2Ljk0IDguNzMgNi43MyA4LjU4IDYuNSA4LjQ1QzYuMzggOC4zOSA2LjI2IDguMzIgNi4xNCA4LjI0QzYuMTIgOC4yMiA2LjA4IDguMTkgNi4wNiA4LjE3TDYuMDUgOC4xNkM1Ljg1IDggNS44IDcuNzQgNS45NCA3LjUzQzYuMDMgNy40MyA2LjE1IDcuMzggNi4yOSA3LjM4QzYuNCA3LjM5IDYuNSA3LjQzIDYuNTkgNy41TDYuNjggNy41N0M2Ljc4IDcuNjYgNi44NyA3Ljc3IDYuOTYgNy44N0M3LjE0IDguMDYgNy4zMyA4LjI0IDcuNTQgOC4zOUM3LjYyIDguNDMgNy43MSA4LjQ0IDcuOCA4LjQyTDcuOTUgOC41M0M4LjcgNy43MyA5LjY4IDcuMTcgMTAuNzUgNi45M0MxMSA2Ljg3IDExLjI3IDYuODMgMTEuNTMgNi44MUwxMS41NCA2LjYzQzExLjYxIDYuNTcgMTEuNjUgNi41IDExLjY4IDYuNEMxMS42OSA2LjE0IDExLjY3IDUuODggMTEuNjMgNS42M0MxMS42IDUuNSAxMS41OCA1LjM2IDExLjU3IDUuMjJWNS4xQzExLjU1IDQuODYgMTEuNzIgNC42NSAxMS45NiA0LjYyUzEyLjQgNC43NyAxMi40MyA1VjUuMjJDMTIuNDIgNS4zNiAxMi40IDUuNSAxMi4zNyA1LjYzQzEyLjMzIDUuODggMTIuMzEgNi4xNCAxMi4zMiA2LjRDMTIuMzQgNi41IDEyLjM5IDYuNTcgMTIuNDYgNi42MkwxMi40NyA2LjgxQzEzLjgzIDYuOTMgMTUuMDkgNy41NCAxNi4wMyA4LjUzTDE2LjE5IDguNDFDMTYuMjggOC40MyAxNi4zNyA4LjQyIDE2LjQ1IDguMzhDMTYuNjYgOC4yMyAxNi44NiA4LjA1IDE3LjAzIDcuODZDMTcuMTIgNy43NiAxNy4yMSA3LjY2IDE3LjMxIDcuNTZDMTcuMzQgNy41NCAxNy4zOCA3LjUgMTcuNDEgNy41QzE3LjU4IDcuMzIgMTcuODUgNy4zMiAxOCA3LjVDMTguMTkgNy42NiAxOC4xOCA3LjkzIDE4IDguMUMxOCA4LjEyIDE3Ljk3IDguMTQgMTcuOTQgOC4xNkMxNy45MiA4LjE4IDE3Ljg4IDguMjEgMTcuODUgOC4yM0MxNy43NCA4LjMxIDE3LjYyIDguMzggMTcuNSA4LjQ0QzE3LjI3IDguNTcgMTcuMDUgOC43MiAxNi44NiA4Ljg5QzE2LjggOC45NiAxNi43NyA5LjA0IDE2Ljc4IDkuMTNMMTYuNjIgOS4yN0MxNy4zOSAxMC40IDE3LjcgMTEuNzggMTcuNSAxMy4xM0wxNy42OSAxMy4xOEMxNy43MyAxMy4yNiAxNy44IDEzLjMyIDE3Ljg4IDEzLjM2QzE4LjEzIDEzLjQzIDE4LjM5IDEzLjQ3IDE4LjY1IDEzLjVIMTkuMDZDMTkuMDkgMTMuNTMgMTkuMTQgMTMuNTQgMTkuMTggMTMuNTVDMTkuNDIgMTMuNTggMTkuNTggMTMuOCAxOS41NSAxNC4wNEMxOS41IDE0LjI3IDE5LjMxIDE0LjQ0IDE5LjA3IDE0LjQxQzE5LjA0IDE0LjQgMTkgMTQuNCAxOSAxNC4zOVYxNC4zOEMxOC45NCAxNC4zOCAxOC45IDE0LjM3IDE4Ljg2IDE0LjM2QzE4LjczIDE0LjMyIDE4LjYxIDE0LjI3IDE4LjUgMTQuMjFDMTguMjQgMTQuMTEgMTggMTQuMDQgMTcuNzMgMTRDMTcuNjQgMTQgMTcuNTYgMTQgMTcuNSAxNC4wOEMxNy40MyAxNC4wNyAxNy4zNyAxNC4wNiAxNy4zMSAxNC4wNUMxNi45IDE1LjM2IDE2IDE2LjQ2IDE0Ljg0IDE3LjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsID0gXCJNMTcuNjMsNS44NEMxNy4yNyw1LjMzIDE2LjY3LDUgMTYsNUg1QTIsMiAwIDAsMCAzLDdWMTdBMiwyIDAgMCwwIDUsMTlIMTZDMTYuNjcsMTkgMTcuMjcsMTguNjYgMTcuNjMsMTguMTVMMjIsMTJMMTcuNjMsNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYWJlbE11bHRpcGxlID0gXCJNNCAxOUgxM0wxMSAyMUg0QzMuNSAyMSAyLjk3IDIwLjc5IDIuNTkgMjAuNDFDMi4yMSAyMC4wMyAyIDE5LjUgMiAxOVY5SDRWMTlNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUg4QzYuOSA1IDYgNS45IDYgN1YxNUM2IDE2LjEgNi45IDE3IDggMTdIMTZDMTYuNjcgMTcgMTcuMjcgMTYuNjYgMTcuNjMgMTYuMTVMMjIgMTFMMTcuNjMgNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYWJlbE11bHRpcGxlT3V0bGluZSA9IFwiTTQgMThIMTNMMTEgMjBINEMzLjUgMjAgMi45NyAxOS43OSAyLjU5IDE5LjQxQzIuMjEgMTkuMDMgMiAxOC41IDIgMThWOEg0VjE4TTE3LjYzIDQuODRDMTcuMjcgNC4zMyAxNi42NyA0IDE2IDRIOEM2LjkgNCA2IDQuOSA2IDZWMTRDNiAxNS4xIDYuOSAxNiA4IDE2SDE2QzE2LjY3IDE2IDE3LjI3IDE1LjY2IDE3LjYzIDE1LjE1TDIyIDEwTDE3LjYzIDQuODRNMTYgMTRIOFY2SDE2TDE5LjU1IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsT2ZmID0gXCJNMiw0LjI3TDMuMjgsM0wyMCwxOS43MkwxOC43MywyMUwxNi42MywxOC45QzE2LjQzLDE4Ljk2IDE2LjIyLDE5IDE2LDE5SDVBMiwyIDAgMCwxIDMsMTdWN0MzLDYuNSAzLjE3LDYuMDcgMy40Niw1LjczTDIsNC4yN00xNy42Myw1Ljg0TDIyLDEyTDE5LDE2LjJMNy44Myw1SDE2QzE2LjY3LDUgMTcuMjcsNS4zMyAxNy42Myw1Ljg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsT2ZmT3V0bGluZSA9IFwiTTIsNC4yN0wzLjI4LDNMMjAsMTkuNzJMMTguNzMsMjFMMTYuNjMsMTguOUMxNi40MywxOC45NiAxNi4yMiwxOSAxNiwxOUg1QTIsMiAwIDAsMSAzLDE3VjdDMyw2LjUgMy4xNyw2LjA3IDMuNDYsNS43M0wyLDQuMjdNNSwxN0gxNC43M0w1LDcuMjdWMTdNMTkuNTUsMTJMMTYsN0g5LjgyTDcuODMsNUgxNkMxNi42Nyw1IDE3LjI3LDUuMzMgMTcuNjMsNS44NEwyMiwxMkwxOSwxNi4yTDE3LjU5LDE0Ljc2TDE5LjU1LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsT3V0bGluZSA9IFwiTTE2LDE3SDVWN0gxNkwxOS41NSwxMk0xNy42Myw1Ljg0QzE3LjI3LDUuMzMgMTYuNjcsNSAxNiw1SDVBMiwyIDAgMCwwIDMsN1YxN0EyLDIgMCAwLDAgNSwxOUgxNkMxNi42NywxOSAxNy4yNywxOC42NiAxNy42MywxOC4xNUwyMiwxMkwxNy42Myw1Ljg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsUGVyY2VudCA9IFwiTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVINUMzLjkgNSAzIDUuOSAzIDdWMTdDMyAxOC4xMSAzLjkgMTkgNSAxOUgxNkMxNi42NyAxOSAxNy4yNyAxOC42NiAxNy42MyAxOC4xNUwyMiAxMkwxNy42MyA1Ljg0TTguNDUgOC4wM0M5LjIzIDguMDMgOS44NyA4LjY3IDkuODcgOS40NVM5LjIzIDEwLjg3IDguNDUgMTAuODcgNy4wMyAxMC4yMyA3LjAzIDkuNDUgNy42NyA4LjAzIDguNDUgOC4wM00xMy41NSAxNS45N0MxMi43NyAxNS45NyAxMi4xMyAxNS4zMyAxMi4xMyAxNC41NVMxMi43NyAxMy4xMyAxMy41NSAxMy4xMyAxNC45NyAxMy43NyAxNC45NyAxNC41NSAxNC4zMyAxNS45NyAxMy41NSAxNS45N004LjIgMTZMNyAxNC44TDEzLjggOEwxNSA5LjJMOC4yIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsUGVyY2VudE91dGxpbmUgPSBcIk0xNiAxN0g1VjdIMTZMMTkuNTUgMTJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUg1QzMuOSA1IDMgNS45IDMgN1YxN0MzIDE4LjExIDMuOSAxOSA1IDE5SDE2QzE2LjY3IDE5IDE3LjI3IDE4LjY2IDE3LjYzIDE4LjE1TDIyIDEyTDE3LjYzIDUuODRNMTMuOCA4TDE1IDkuMkw4LjIgMTZMNyAxNC44TTguNDUgOC4wM0M5LjIzIDguMDMgOS44NyA4LjY3IDkuODcgOS40NVM5LjIzIDEwLjg3IDguNDUgMTAuODcgNy4wMyAxMC4yMyA3LjAzIDkuNDUgNy42NyA4LjAzIDguNDUgOC4wM00xMy41NSAxMy4xM0MxNC4zMyAxMy4xMyAxNC45NyAxMy43NyAxNC45NyAxNC41NUMxNC45NyAxNS4zMyAxNC4zMyAxNS45NyAxMy41NSAxNS45N0MxMi43NyAxNS45NyAxMi4xMyAxNS4zMyAxMi4xMyAxNC41NUMxMi4xMyAxMy43NyAxMi43NyAxMy4xMyAxMy41NSAxMy4xM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYWJlbFZhcmlhbnQgPSBcIk0zLjUsMTlMOC4zNCwxMkwzLjUsNUgxNC41QzE1LjE3LDUgMTUuNzIsNS4zIDE2LjEzLDUuODZMMjAuNSwxMkwxNi4xMywxOC4xNEMxNS43MiwxOC43IDE1LjE3LDE5IDE0LjUsMTlIMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhYmVsVmFyaWFudE91dGxpbmUgPSBcIk02LjUsMTdIMTVMMTguNSwxMkwxNSw3SDYuNUwxMCwxMkw2LjUsMTdNMTUsMTlIM0w3LjUsMTJMMyw1SDE1QzE1LjY5LDUgMTYuMjMsNS4zIDE2LjY0LDUuODZMMjEsMTJMMTYuNjQsMTguMTRDMTYuMjMsMTguNyAxNS42OSwxOSAxNSwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYWRkZXIgPSBcIk0xNCAxVjNIMTBWMUg4VjIySDEwVjIwSDE0VjIySDE2VjFIMTRNMTQgNVY4SDEwVjVIMTRNMTQgMTBWMTNIMTBWMTBIMTRNMTAgMThWMTVIMTRWMThIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFkeWJ1ZyA9IFwiTTEyLDVDMTIuNzQsNSAxMy40Nyw1LjEgMTQuMTUsNS4yOUwxNS43OCwyLjQ2QzE2LjA2LDIgMTYuNjcsMS44MiAxNy4xNSwyLjFDMTcuNjMsMi4zNyAxNy43OSwzIDE3LjUsMy40NkwxNiw2LjA3QzE3LjIyLDYuNzggMTguMjMsNy43OSAxOC45Myw5SDUuMDdDNS43Nyw3Ljc5IDYuNzgsNi43OCA4LDYuMDdMNi41LDMuNDZDNi4yMSwzIDYuMzcsMi4zNyA2Ljg1LDIuMUM3LjMzLDEuODIgNy45NCwyIDguMjIsMi40Nkw5Ljg1LDUuMjlDMTAuNTMsNS4xIDExLjI2LDUgMTIsNU0yMCwxM0MyMCwxNy4xNyAxNi44MiwyMC41OSAxMi43NSwyMC45N1YxMC41SDE5LjZDMTkuODYsMTEuMjkgMjAsMTIuMTMgMjAsMTNNNCwxM0M0LDEyLjEzIDQuMTQsMTEuMjkgNC40LDEwLjVIMTEuMjVWMjAuOTdDNy4xOCwyMC41OSA0LDE3LjE3IDQsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFtYmRhID0gXCJNNiwyMEwxMC4xNiw3LjkxTDkuMzQsNkg4VjRIMTBDMTAuNDIsNCAxMC43OCw0LjI2IDEwLjkzLDQuNjNMMTYuNjYsMThIMThWMjBIMTZDMTUuNTcsMjAgMTUuMjEsMTkuNzMgMTUuMDcsMTkuMzZMMTEuMzMsMTAuNjVMOC4xMiwyMEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbXAgPSBcIk04LDJIMTZMMjAsMTRINEw4LDJNMTEsMTVIMTNWMjBIMThWMjJINlYyMEgxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW1wcyA9IFwiTTEwIDJMMTIgOUgyTDQgMk02IDEwSDhWMjBIMTFWMjJIM1YyMEg2VjEwTTIwIDhMMjIgMTVIMTJMMTQgOE0xNiAxNkgxOFYyMEgyMVYyMkgxM1YyMEgxNlYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW4gPSBcIk0xMCwyQzguODksMiA4LDIuODkgOCw0VjdDOCw4LjExIDguODksOSAxMCw5SDExVjExSDJWMTNINlYxNUg1QzMuODksMTUgMywxNS44OSAzLDE3VjIwQzMsMjEuMTEgMy44OSwyMiA1LDIySDlDMTAuMTEsMjIgMTEsMjEuMTEgMTEsMjBWMTdDMTEsMTUuODkgMTAuMTEsMTUgOSwxNUg4VjEzSDE2VjE1SDE1QzEzLjg5LDE1IDEzLDE1Ljg5IDEzLDE3VjIwQzEzLDIxLjExIDEzLjg5LDIyIDE1LDIySDE5QzIwLjExLDIyIDIxLDIxLjExIDIxLDIwVjE3QzIxLDE1Ljg5IDIwLjExLDE1IDE5LDE1SDE4VjEzSDIyVjExSDEzVjlIMTRDMTUuMTEsOSAxNiw4LjExIDE2LDdWNEMxNiwyLjg5IDE1LjExLDIgMTQsMkgxME0xMCw0SDE0VjdIMTBWNE01LDE3SDlWMjBINVYxN00xNSwxN0gxOVYyMEgxNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5DaGVjayA9IFwiTTQgMUMyLjg5IDEgMiAxLjg5IDIgM1Y3QzIgOC4xMSAyLjg5IDkgNCA5SDFWMTFIMTNWOUgxMEMxMS4xMSA5IDEyIDguMTEgMTIgN1YzQzEyIDEuODkgMTEuMTEgMSAxMCAxSDRNNCAzSDEwVjdINFYzTTE0IDEzQzEyLjg5IDEzIDEyIDEzLjg5IDEyIDE1VjE5QzEyIDIwLjExIDEyLjg5IDIxIDE0IDIxSDExVjIzSDIzVjIxSDIwQzIxLjExIDIxIDIyIDIwLjExIDIyIDE5VjE1QzIyIDEzLjg5IDIxLjExIDEzIDIwIDEzSDE0TTE0IDE1SDIwVjE5SDE0VjE1TTUuNSAyMC41TDEwLjUgMTUuNUw5IDE0TDUuNSAxNy41TDMuNSAxNS41TDIgMTdMNS41IDIwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuQ29ubmVjdCA9IFwiTTQsMUMyLjg5LDEgMiwxLjg5IDIsM1Y3QzIsOC4xMSAyLjg5LDkgNCw5SDFWMTFIMTNWOUgxMEMxMS4xMSw5IDEyLDguMTEgMTIsN1YzQzEyLDEuODkgMTEuMTEsMSAxMCwxSDRNNCwzSDEwVjdINFYzTTMsMTNWMThMMywyMEgxMFYxOEg1VjEzSDNNMTQsMTNDMTIuODksMTMgMTIsMTMuODkgMTIsMTVWMTlDMTIsMjAuMTEgMTIuODksMjEgMTQsMjFIMTFWMjNIMjNWMjFIMjBDMjEuMTEsMjEgMjIsMjAuMTEgMjIsMTlWMTVDMjIsMTMuODkgMjEuMTEsMTMgMjAsMTNIMTRNMTQsMTVIMjBWMTlIMTRWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuRGlzY29ubmVjdCA9IFwiTTQsMUMyLjg5LDEgMiwxLjg5IDIsM1Y3QzIsOC4xMSAyLjg5LDkgNCw5SDFWMTFIMTNWOUgxMEMxMS4xMSw5IDEyLDguMTEgMTIsN1YzQzEyLDEuODkgMTEuMTEsMSAxMCwxSDRNNCwzSDEwVjdINFYzTTE0LDEzQzEyLjg5LDEzIDEyLDEzLjg5IDEyLDE1VjE5QzEyLDIwLjExIDEyLjg5LDIxIDE0LDIxSDExVjIzSDIzVjIxSDIwQzIxLjExLDIxIDIyLDIwLjExIDIyLDE5VjE1QzIyLDEzLjg5IDIxLjExLDEzIDIwLDEzSDE0TTMuODgsMTMuNDZMMi40NiwxNC44OEw0LjU5LDE3TDIuNDYsMTkuMTJMMy44OCwyMC41NEw2LDE4LjQxTDguMTIsMjAuNTRMOS41NCwxOS4xMkw3LjQxLDE3TDkuNTQsMTQuODhMOC4xMiwxMy40Nkw2LDE1LjU5TDMuODgsMTMuNDZNMTQsMTVIMjBWMTlIMTRWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuUGVuZGluZyA9IFwiTTQsMUMyLjg5LDEgMiwxLjg5IDIsM1Y3QzIsOC4xMSAyLjg5LDkgNCw5SDFWMTFIMTNWOUgxMEMxMS4xMSw5IDEyLDguMTEgMTIsN1YzQzEyLDEuODkgMTEuMTEsMSAxMCwxSDRNNCwzSDEwVjdINFYzTTMsMTJWMTRINVYxMkgzTTE0LDEzQzEyLjg5LDEzIDEyLDEzLjg5IDEyLDE1VjE5QzEyLDIwLjExIDEyLjg5LDIxIDE0LDIxSDExVjIzSDIzVjIxSDIwQzIxLjExLDIxIDIyLDIwLjExIDIyLDE5VjE1QzIyLDEzLjg5IDIxLjExLDEzIDIwLDEzSDE0TTMsMTVWMTdINVYxNUgzTTE0LDE1SDIwVjE5SDE0VjE1TTMsMThWMjBINVYxOEgzTTYsMThWMjBIOFYxOEg2TTksMThWMjBIMTFWMThIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUMgPSBcIk0xNS40NSwxNS45N0wxNS44NywxOC40MUMxNS42MSwxOC41NSAxNS4xOSwxOC42OCAxNC42MywxOC44QzE0LjA2LDE4LjkzIDEzLjM5LDE5IDEyLjYyLDE5QzEwLjQxLDE4Ljk2IDguNzUsMTguMyA3LjY0LDE3LjA0QzYuNSwxNS43NyA1Ljk2LDE0LjE2IDUuOTYsMTIuMjFDNiw5LjkgNi42OCw4LjEzIDgsNi44OUM5LjI4LDUuNjQgMTAuOTIsNSAxMi45LDVDMTMuNjUsNSAxNC4zLDUuMDcgMTQuODQsNS4xOUMxNS4zOCw1LjMxIDE1Ljc4LDUuNDQgMTYuMDQsNS41OUwxNS40NCw4LjA4TDE0LjQsNy43NEMxNCw3LjY0IDEzLjUzLDcuNTkgMTMsNy41OUMxMS44NSw3LjU4IDEwLjg5LDcuOTUgMTAuMTQsOC42OUM5LjM4LDkuNDIgOSwxMC41NCA4Ljk2LDEyLjAzQzguOTcsMTMuMzkgOS4zMywxNC40NSAxMC4wNCwxNS4yM0MxMC43NSwxNiAxMS43NCwxNi40IDEzLjAzLDE2LjQxTDE0LjM2LDE2LjI5QzE0Ljc5LDE2LjIxIDE1LjE1LDE2LjEgMTUuNDUsMTUuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VDcHAgPSBcIk0xMC41LDE1Ljk3TDEwLjkxLDE4LjQxQzEwLjY1LDE4LjU1IDEwLjIzLDE4LjY4IDkuNjcsMTguOEM5LjEsMTguOTMgOC40MywxOSA3LjY2LDE5QzUuNDUsMTguOTYgMy43OSwxOC4zIDIuNjgsMTcuMDRDMS41NiwxNS43NyAxLDE0LjE2IDEsMTIuMjFDMS4wNSw5LjkgMS43Miw4LjEzIDMsNi44OUM0LjMyLDUuNjQgNS45Niw1IDcuOTQsNUM4LjY5LDUgOS4zNCw1LjA3IDkuODgsNS4xOUMxMC40Miw1LjMxIDEwLjgyLDUuNDQgMTEuMDgsNS41OUwxMC41LDguMDhMOS40NCw3Ljc0QzkuMDQsNy42NCA4LjU4LDcuNTkgOC4wNSw3LjU5QzYuODksNy41OCA1LjkzLDcuOTUgNS4xOCw4LjY5QzQuNDIsOS40MiA0LjAzLDEwLjU0IDQsMTIuMDNDNCwxMy4zOSA0LjM3LDE0LjQ1IDUuMDgsMTUuMjNDNS43OSwxNiA2Ljc5LDE2LjQgOC4wNywxNi40MUw5LjQsMTYuMjlDOS44MywxNi4yMSAxMC4xOSwxNi4xIDEwLjUsMTUuOTdNMTEsMTFIMTNWOUgxNVYxMUgxN1YxM0gxNVYxNUgxM1YxM0gxMVYxMU0xOCwxMUgyMFY5SDIyVjExSDI0VjEzSDIyVjE1SDIwVjEzSDE4VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlQ3NoYXJwID0gXCJNMTEuNSwxNS45N0wxMS45MSwxOC40MUMxMS42NSwxOC41NSAxMS4yMywxOC42OCAxMC42NywxOC44QzEwLjEsMTguOTMgOS40MywxOSA4LjY2LDE5QzYuNDUsMTguOTYgNC43OSwxOC4zIDMuNjgsMTcuMDRDMi41NiwxNS43NyAyLDE0LjE2IDIsMTIuMjFDMi4wNSw5LjkgMi43Miw4LjEzIDQsNi44OUM1LjMyLDUuNjQgNi45Niw1IDguOTQsNUM5LjY5LDUgMTAuMzQsNS4wNyAxMC44OCw1LjE5QzExLjQyLDUuMzEgMTEuODIsNS40NCAxMi4wOCw1LjU5TDExLjUsOC4wOEwxMC40NCw3Ljc0QzEwLjA0LDcuNjQgOS41OCw3LjU5IDkuMDUsNy41OUM3Ljg5LDcuNTggNi45Myw3Ljk1IDYuMTgsOC42OUM1LjQyLDkuNDIgNS4wMywxMC41NCA1LDEyLjAzQzUsMTMuMzkgNS4zNywxNC40NSA2LjA4LDE1LjIzQzYuNzksMTYgNy43OSwxNi40IDkuMDcsMTYuNDFMMTAuNCwxNi4yOUMxMC44MywxNi4yMSAxMS4xOSwxNi4xIDExLjUsMTUuOTdNMTMuODksMTlMMTQuNSwxNUgxM0wxMy4zNCwxM0gxNC44NEwxNS4xNiwxMUgxMy42NkwxNCw5SDE1LjVMMTYuMTEsNUgxOC4xMUwxNy41LDlIMTguNUwxOS4xMSw1SDIxLjExTDIwLjUsOUgyMkwyMS42NiwxMUgyMC4xNkwxOS44NCwxM0gyMS4zNEwyMSwxNUgxOS41TDE4Ljg5LDE5SDE2Ljg5TDE3LjUsMTVIMTYuNUwxNS44OSwxOUgxMy44OU0xNi44NCwxM0gxNy44NEwxOC4xNiwxMUgxNy4xNkwxNi44NCwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUNzczMgPSBcIk01LDNMNC4zNSw2LjM0SDE3Ljk0TDE3LjUsOC41SDMuOTJMMy4yNiwxMS44M0gxNi44NUwxNi4wOSwxNS42NEwxMC42MSwxNy40NUw1Ljg2LDE1LjY0TDYuMTksMTRIMi44NUwyLjA2LDE4TDkuOTEsMjFMMTguOTYsMThMMjAuMTYsMTEuOTdMMjAuNCwxMC43NkwyMS45NCwzSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VGb3J0cmFuID0gXCJNNSA0VjZINkM2LjU1IDYgNyA2LjQ1IDcgN1YxN0M3IDE3LjU1IDYuNTUgMTggNiAxOEg1VjIwSDE0VjE4SDEyQzExLjQ1IDE4IDExIDE3LjU1IDExIDE3VjEzSDEzQzEzLjU1IDEzIDE0IDEzLjQ1IDE0IDE0VjE2SDE2VjhIMTRWMTBDMTQgMTAuNTUgMTMuNTUgMTEgMTMgMTFIMTFWNkgxNkMxNy4xMSA2IDE4IDcuMzQgMTggOVYxMEgyMFY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlR28gPSBcIk0yLjY0LDEwLjMzTDIuNjIsMTAuMjdMMi44NCwxMEwyLjk2LDkuOTJINi44TDYuODMsMTBMNi42NSwxMC4yNkw2LjU0LDEwLjMyTDIuNjQsMTAuMzNNMS4wMywxMS4zMUwxLDExLjI2TDEuMjIsMTAuOTdMMS4zNCwxMC45MUg2LjI0TDYuMjksMTFMNi4yMSwxMS4yNEw2LjExLDExLjMxSDEuMDNNMy42MywxMi4zTDMuNTksMTIuMjRMMy43NSwxMS45NkwzLjg1LDExLjlINkw2LjA3LDExLjk3TDYuMDUsMTIuMjJMNS45NywxMi4zSDMuNjNNMTQuNzgsMTAuMTRMMTMsMTAuNjFDMTIuODEsMTAuNjUgMTIuOCwxMC42NiAxMi42NiwxMC41QzEyLjUsMTAuMzIgMTIuMzksMTAuMjEgMTIuMTYsMTAuMUMxMS41LDkuNzYgMTAuODMsOS44NiAxMC4yMiwxMC4yNUM5LjUsMTAuNzMgOS4xMSwxMS40MiA5LjEyLDEyLjNDOS4xMywxMy4xNiA5LjcyLDEzLjg3IDEwLjU3LDE0QzExLjMsMTQuMDkgMTEuOTEsMTMuODMgMTIuNCwxMy4yOEwxMi42OSwxMi44OUgxMC42MkMxMC40LDEyLjg5IDEwLjM1LDEyLjc1IDEwLjQyLDEyLjU3TDEwLjk3LDExLjM5QzExLDExLjMzIDExLjA4LDExLjIyIDExLjI0LDExLjIySDE0LjY4QzE0LjgzLDEwLjcyIDE1LjA5LDEwLjI2IDE1LjQzLDkuODFDMTYuMjEsOC43OCAxNy4xNiw4LjI0IDE4LjQzLDhDMTkuNSw3LjgyIDIwLjU2LDcuOTMgMjEuNSw4LjU3QzIyLjM0LDkuMTUgMjIuODcsOS45MyAyMywxMC45NkMyMy4xOSwxMi40MSAyMi43NiwxMy41OSAyMS43NiwxNC42MUMyMS4wNSwxNS4zMyAyMC4xOCwxNS43OCAxOS4xOSwxNkwxOC4zMywxNi4wOEMxNy4zNSwxNi4wNiAxNi40NiwxNS43OCAxNS43MSwxNS4xM0MxNS4xOSwxNC42OCAxNC44MywxNC4xNCAxNC42NSwxMy41QzE0LjUsMTMuNzQgMTQuMzgsMTMuOTcgMTQuMjEsMTQuMkMxMy40NCwxNS4yMiAxMi40MywxNS44NSAxMS4xNSwxNkMxMC4xLDE2LjE2IDkuMTIsMTUuOTUgOC4yNiwxNS4zMUM3LjQ3LDE0LjcxIDcsMTMuOTEgNi45LDEyLjkyQzYuNzYsMTEuNzUgNy4xLDEwLjcgNy44MSw5Ljc4QzguNTcsOC43OCA5LjU4LDguMTUgMTAuODIsNy45MkMxMS44Miw3Ljc0IDEyLjc5LDcuODYgMTMuNjYsOC40NEMxNC4yMyw4LjgyIDE0LjYzLDkuMzQgMTQuOSw5Ljk2QzE0Ljk0LDEwLjA1IDE0LjksMTAuMTEgMTQuNzgsMTAuMTRNMjAuODksMTEuNzRMMjAuODYsMTEuMzhDMjAuNjcsMTAuMzIgMTkuNjksOS43MiAxOC42Nyw5Ljk1QzE3LjY2LDEwLjE3IDE3LDEwLjggMTYuNzksMTEuODFDMTYuNiwxMi42NSAxNywxMy41IDE3Ljc3LDEzLjg0QzE4LjM2LDE0LjEgMTguOTYsMTQuMDYgMTkuNTMsMTMuNzhDMjAuMzcsMTMuMzUgMjAuODQsMTIuNjYgMjAuODksMTEuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VIYXNrZWxsID0gXCJNMi4wOCwxOUw2Ljc1LDEyTDIuMDgsNUg1LjU4TDEwLjI1LDEyTDUuNTgsMTlIMi4wOE02Ljc1LDE5TDExLjQyLDEyTDYuNzUsNUgxMC4yNUwxOS41OSwxOUgxNi4wOUwxMy4xNywxNC42M0wxMC4yNSwxOUg2Ljc1TTE4LjAzLDE0LjkyTDE2LjUsMTIuNThIMjEuOTJWMTQuOTJIMTguMDNNMTUuNywxMS40MkwxNC4xNCw5LjA4SDIxLjkyVjExLjQySDE1LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VIdG1sNSA9IFwiTTEyLDE3LjU2TDE2LjA3LDE2LjQzTDE2LjYyLDEwLjMzSDkuMzhMOS4yLDguM0gxNi44TDE3LDYuMzFIN0w3LjU2LDEyLjMySDE0LjQ1TDE0LjIyLDE0LjlMMTIsMTUuNUw5Ljc4LDE0LjlMOS42NCwxMy4yNEg3LjY0TDcuOTMsMTYuNDNMMTIsMTcuNTZNNC4wNywzSDE5LjkzTDE4LjUsMTkuMkwxMiwyMUw1LjUsMTkuMkw0LjA3LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VKYXZhID0gXCJNMTYuNSw2LjA4QzE2LjUsNi4wOCA5LjY2LDcuNzkgMTIuOTQsMTEuNTZDMTMuOTEsMTIuNjcgMTIuNjksMTMuNjcgMTIuNjksMTMuNjdDMTIuNjksMTMuNjcgMTUuMTQsMTIuNDIgMTQsMTAuODJDMTIuOTQsOS4zNSAxMi4xNCw4LjYyIDE2LjUsNi4wOE0xMi4wMyw3LjI4QzE2LjA4LDQuMDggMTQsMiAxNCwyQzE0Ljg0LDUuMyAxMS4wNCw2LjMgOS42Nyw4LjM2QzguNzMsOS43NiAxMC4xMywxMS4yNyAxMiwxM0MxMS4yOSwxMS4zIDguNzgsOS44NCAxMi4wMyw3LjI4TTkuMzcsMTcuNDdDNi4yOSwxOC4zMyAxMS4yNSwyMC4xIDE1LjE2LDE4LjQzQzE0Ljc4LDE4LjI4IDE0LjQxLDE4LjEgMTQuMDYsMTcuODlDMTIuNywxOC4yIDExLjMsMTguMjYgOS45MiwxOC4wN0M4LjYxLDE3LjkxIDkuMzcsMTcuNDcgOS4zNywxNy40N00xNC42OSwxNS43OUMxMi45NCwxNi4xNyAxMS4xMywxNi4yNiA5LjM1LDE2LjA1QzguMDQsMTUuOTIgOC45LDE1LjI4IDguOSwxNS4yOEM1LjUsMTYuNDEgMTAuNzgsMTcuNjggMTUuNSwxNi4zQzE1LjIxLDE2LjE5IDE0LjkzLDE2IDE0LjY5LDE1Ljc5TTE4LjExLDE5LjA5QzE4LjExLDE5LjA5IDE4LjY4LDE5LjU2IDE3LjUsMTkuOTJDMTUuMjIsMjAuNiA4LjA3LDIwLjgxIDYuMDksMTkuOTVDNS4zOCwxOS42NCA2LjcyLDE5LjIxIDcuMTQsMTkuMTJDNy4zNywxOS4wNiA3LjYsMTkuMDQgNy44MywxOS4wNEM3LjA0LDE4LjUgMi43LDIwLjE0IDUuNjQsMjAuNkMxMy42MSwyMS45IDIwLjE4LDIwIDE4LjExLDE5LjA5TTE1LjM3LDE0LjIzQzE1LjY2LDE0LjA0IDE1Ljk3LDEzLjg4IDE2LjI5LDEzLjc0QzE2LjI5LDEzLjc0IDE0Ljc4LDE0IDEzLjI3LDE0LjE0QzExLjY3LDE0LjMgMTAuMDYsMTQuMzIgOC40NiwxNC4yQzYuMTEsMTMuODkgOS43NSwxMyA5Ljc1LDEzQzguNjUsMTMgNy41NywxMy4yNiA2LjU5LDEzLjc1QzQuNTQsMTQuNzUgMTEuNjksMTUuMiAxNS4zNywxNC4yM00xNi4yNywxNi42NUMxNi4yNSwxNi42OSAxNi4yMywxNi43MiAxNi4xOSwxNi43NUMyMS4yLDE1LjQ0IDE5LjM2LDEyLjExIDE2Ljk2LDEyLjk0QzE2LjgzLDEzIDE2LjcyLDEzLjA4IDE2LjY1LDEzLjE5QzE2Ljc5LDEzLjE0IDE2LjkzLDEzLjEgMTcuMDgsMTMuMDdDMTguMjgsMTIuODMgMjAsMTQuNyAxNi4yNywxNi42NU0xNi40LDIxLjI2QzEzLjM5LDIxLjc4IDEwLjMxLDIxLjgyIDcuMjgsMjEuNEM3LjI4LDIxLjQgNy43NCwyMS43OCAxMC4wOSwyMS45M0MxMy42OSwyMi4xNiAxOS4yMiwyMS44IDE5LjM1LDIwLjFDMTkuMzgsMjAuMTEgMTkuMTIsMjAuNzUgMTYuNCwyMS4yNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUphdmFzY3JpcHQgPSBcIk0zLDNIMjFWMjFIM1YzTTcuNzMsMTguMDRDOC4xMywxOC44OSA4LjkyLDE5LjU5IDEwLjI3LDE5LjU5QzExLjc3LDE5LjU5IDEyLjgsMTguNzkgMTIuOCwxNy4wNFYxMS4yNkgxMS4xVjE3QzExLjEsMTcuODYgMTAuNzUsMTguMDggMTAuMiwxOC4wOEM5LjYyLDE4LjA4IDkuMzgsMTcuNjggOS4xMSwxNy4yMUw3LjczLDE4LjA0TTEzLjcxLDE3Ljg2QzE0LjIxLDE4Ljg0IDE1LjIyLDE5LjU5IDE2LjgsMTkuNTlDMTguNCwxOS41OSAxOS42LDE4Ljc2IDE5LjYsMTcuMjNDMTkuNiwxNS44MiAxOC43OSwxNS4xOSAxNy4zNSwxNC41N0wxNi45MywxNC4zOUMxNi4yLDE0LjA4IDE1Ljg5LDEzLjg3IDE1Ljg5LDEzLjM3QzE1Ljg5LDEyLjk2IDE2LjIsMTIuNjQgMTYuNywxMi42NEMxNy4xOCwxMi42NCAxNy41LDEyLjg1IDE3Ljc5LDEzLjM3TDE5LjEsMTIuNUMxOC41NSwxMS41NCAxNy43NywxMS4xNyAxNi43LDExLjE3QzE1LjE5LDExLjE3IDE0LjIyLDEyLjEzIDE0LjIyLDEzLjRDMTQuMjIsMTQuNzggMTUuMDMsMTUuNDMgMTYuMjUsMTUuOTVMMTYuNjcsMTYuMTNDMTcuNDUsMTYuNDcgMTcuOTEsMTYuNjggMTcuOTEsMTcuMjZDMTcuOTEsMTcuNzQgMTcuNDYsMTguMDkgMTYuNzYsMTguMDlDMTUuOTMsMTguMDkgMTUuNDUsMTcuNjYgMTUuMDksMTcuMDZMMTMuNzEsMTcuODZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VLb3RsaW4gPSBcIk0yIDJIMjJMMTIgMTJMMjIgMjJIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZUx1YSA9IFwiTTEwLjUsNUE4LjUsOC41IDAgMCwwIDIsMTMuNUE4LjUsOC41IDAgMCwwIDEwLjUsMjJBOC41LDguNSAwIDAsMCAxOSwxMy41QTguNSw4LjUgMCAwLDAgMTAuNSw1TTEzLjUsMTNBMi41LDIuNSAwIDAsMSAxMSwxMC41QTIuNSwyLjUgMCAwLDEgMTMuNSw4QTIuNSwyLjUgMCAwLDEgMTYsMTAuNUEyLjUsMi41IDAgMCwxIDEzLjUsMTNNMTkuNSwyQTIuNSwyLjUgMCAwLDAgMTcsNC41QTIuNSwyLjUgMCAwLDAgMTkuNSw3QTIuNSwyLjUgMCAwLDAgMjIsNC41QTIuNSwyLjUgMCAwLDAgMTkuNSwyXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VNYXJrZG93biA9IFwiTTIwLjU2IDE4SDMuNDRDMi42NSAxOCAyIDE3LjM3IDIgMTYuNTlWNy40MUMyIDYuNjMgMi42NSA2IDMuNDQgNkgyMC41NkMyMS4zNSA2IDIyIDYuNjMgMjIgNy40MVYxNi41OUMyMiAxNy4zNyAyMS4zNSAxOCAyMC41NiAxOE02LjgxIDE1LjE5VjExLjUzTDguNzMgMTMuODhMMTAuNjUgMTEuNTNWMTUuMTlIMTIuNThWOC44MUgxMC42NUw4LjczIDExLjE2TDYuODEgOC44MUg0Ljg5VjE1LjE5SDYuODFNMTkuNjkgMTJIMTcuNzdWOC44MUgxNS44NVYxMkgxMy45MkwxNi44MSAxNS4yOEwxOS42OSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZU1hcmtkb3duT3V0bGluZSA9IFwiTTIwLjU2IDE4SDMuNDRDMi42NSAxOCAyIDE3LjM3IDIgMTYuNTlWNy40MUMyIDYuNjMgMi42NSA2IDMuNDQgNkgyMC41NkMyMS4zNSA2IDIyIDYuNjMgMjIgNy40MVYxNi41OUMyMiAxNy4zNyAyMS4zNSAxOCAyMC41NiAxOE0zLjQ0IDYuOTRDMy4xOCA2Ljk0IDIuOTYgNy4xNSAyLjk2IDcuNDFWMTYuNkMyLjk2IDE2Ljg1IDMuMTggMTcuMDYgMy40NCAxNy4wNkgyMC41NkMyMC44MiAxNy4wNiAyMS4wNCAxNi44NSAyMS4wNCAxNi42VjcuNDFDMjEuMDQgNy4xNSAyMC44MiA2Ljk0IDIwLjU2IDYuOTRIMy40NE00Ljg5IDE1LjE5VjguODFINi44MUw4LjczIDExLjE2TDEwLjY1IDguODFIMTIuNThWMTUuMTlIMTAuNjVWMTEuNTNMOC43MyAxMy44OEw2LjgxIDExLjUzVjE1LjE5SDQuODlNMTYuOSAxNS4xOUwxNCAxMi4wOUgxNS45NFY4LjgxSDE3Ljg2VjEyLjA5SDE5Ljc5TDE2LjkgMTUuMTlcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVBocCA9IFwiTTEyLDE4LjA4QzUuMzcsMTguMDggMCwxNS4zNiAwLDEyQzAsOC42NCA1LjM3LDUuOTIgMTIsNS45MkMxOC42Myw1LjkyIDI0LDguNjQgMjQsMTJDMjQsMTUuMzYgMTguNjMsMTguMDggMTIsMTguMDhNNi44MSwxMC4xM0M3LjM1LDEwLjEzIDcuNzIsMTAuMjMgNy45LDEwLjQ0QzguMDgsMTAuNjQgOC4xMiwxMSA4LjAzLDExLjQ3QzcuOTMsMTIgNy43NCwxMi4zNCA3LjQ1LDEyLjU2QzcuMTcsMTIuNzggNi43NCwxMi44OSA2LjE2LDEyLjg5SDUuMjlMNS44MiwxMC4xM0g2LjgxTTMuMzEsMTUuNjhINC43NUw1LjA5LDEzLjkzSDYuMzJDNi44NiwxMy45MyA3LjMsMTMuODcgNy42NSwxMy43NkM4LDEzLjY0IDguMzIsMTMuNDUgOC42MSwxMy4xOEM4Ljg1LDEyLjk2IDkuMDQsMTIuNzIgOS4xOSwxMi40NUM5LjM0LDEyLjE5IDkuNDUsMTEuODkgOS41LDExLjU3QzkuNjYsMTAuNzkgOS41NSwxMC4xOCA5LjE3LDkuNzVDOC43OCw5LjMxIDguMTgsOS4xIDcuMzUsOS4xSDQuNTlMMy4zMSwxNS42OE0xMC41Niw3LjM1TDkuMjgsMTMuOTNIMTAuN0wxMS40NCwxMC4xNkgxMi41OEMxMi45NCwxMC4xNiAxMy4xOCwxMC4yMiAxMy4yOSwxMC4zNEMxMy40LDEwLjQ2IDEzLjQyLDEwLjY4IDEzLjM2LDExTDEyLjc5LDEzLjkzSDE0LjI0TDE0LjgzLDEwLjg2QzE0Ljk2LDEwLjI0IDE0Ljg2LDkuNzkgMTQuNTYsOS41QzE0LjI2LDkuMjMgMTMuNzEsOS4xIDEyLjkxLDkuMUgxMS42NEwxMiw3LjM1SDEwLjU2TTE4LDEwLjEzQzE4LjU1LDEwLjEzIDE4LjkxLDEwLjIzIDE5LjA5LDEwLjQ0QzE5LjI3LDEwLjY0IDE5LjMxLDExIDE5LjIyLDExLjQ3QzE5LjEyLDEyIDE4LjkzLDEyLjM0IDE4LjY1LDEyLjU2QzE4LjM2LDEyLjc4IDE3LjkzLDEyLjg5IDE3LjM1LDEyLjg5SDE2LjVMMTcsMTAuMTNIMThNMTQuNSwxNS42OEgxNS45NEwxNi4yOCwxMy45M0gxNy41QzE4LjA1LDEzLjkzIDE4LjUsMTMuODcgMTguODUsMTMuNzZDMTkuMiwxMy42NCAxOS41LDEzLjQ1IDE5LjgsMTMuMThDMjAuMDQsMTIuOTYgMjAuMjQsMTIuNzIgMjAuMzgsMTIuNDVDMjAuNTMsMTIuMTkgMjAuNjQsMTEuODkgMjAuNywxMS41N0MyMC44NSwxMC43OSAyMC43NCwxMC4xOCAyMC4zNiw5Ljc1QzIwLDkuMzEgMTkuMzcsOS4xIDE4LjU0LDkuMUgxNS43OUwxNC41LDE1LjY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlUHl0aG9uID0gXCJNMTkuMTQsNy41QTIuODYsMi44NiAwIDAsMSAyMiwxMC4zNlYxNC4xNEEyLjg2LDIuODYgMCAwLDEgMTkuMTQsMTdIMTJDMTIsMTcuMzkgMTIuMzIsMTcuOTYgMTIuNzEsMTcuOTZIMTdWMTkuNjRBMi44NiwyLjg2IDAgMCwxIDE0LjE0LDIyLjVIOS44NkEyLjg2LDIuODYgMCAwLDEgNywxOS42NFYxNS44OUM3LDE0LjMxIDguMjgsMTMuMDQgOS44NiwxMy4wNEgxNS4xMUMxNi42OSwxMy4wNCAxNy45NiwxMS43NiAxNy45NiwxMC4xOFY3LjVIMTkuMTRNMTQuODYsMTkuMjlDMTQuNDYsMTkuMjkgMTQuMTQsMTkuNTkgMTQuMTQsMjAuMThDMTQuMTQsMjAuNzcgMTQuNDYsMjAuODkgMTQuODYsMjAuODlBMC43MSwwLjcxIDAgMCwwIDE1LjU3LDIwLjE4QzE1LjU3LDE5LjU5IDE1LjI1LDE5LjI5IDE0Ljg2LDE5LjI5TTQuODYsMTcuNUMzLjI4LDE3LjUgMiwxNi4yMiAyLDE0LjY0VjEwLjg2QzIsOS4yOCAzLjI4LDggNC44Niw4SDEyQzEyLDcuNjEgMTEuNjgsNy4wNCAxMS4yOSw3LjA0SDdWNS4zNkM3LDMuNzggOC4yOCwyLjUgOS44NiwyLjVIMTQuMTRDMTUuNzIsMi41IDE3LDMuNzggMTcsNS4zNlY5LjExQzE3LDEwLjY5IDE1LjcyLDExLjk2IDE0LjE0LDExLjk2SDguODlDNy4zMSwxMS45NiA2LjA0LDEzLjI0IDYuMDQsMTQuODJWMTcuNUg0Ljg2TTkuMTQsNS43MUM5LjU0LDUuNzEgOS44Niw1LjQxIDkuODYsNC44MkM5Ljg2LDQuMjMgOS41NCw0LjExIDkuMTQsNC4xMUM4Ljc1LDQuMTEgOC40Myw0LjIzIDguNDMsNC44MkM4LjQzLDUuNDEgOC43NSw1LjcxIDkuMTQsNS43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVIgPSBcIk0xMiw0LjI5QzYuNSw0LjI5IDIsNy4yOSAyLDExQzIsMTQuMjggNS41NiwxNyAxMC4yNCwxNy41OFYxOS43MUgxMy42NVYxNy41OUMxNC41LDE3LjUgMTUuMjksMTcuMzQgMTYuMDQsMTcuMTFMMTcuNDIsMTkuNzFIMjEuMjhMMTguOTYsMTUuOEMyMC44MywxNC41OCAyMiwxMi44NyAyMiwxMUMyMiw3LjI5IDE3LjUsNC4yOSAxMiw0LjI5VjQuMjlNMTMuNTMsNi45MUMxNy43Myw2LjkxIDIwLjgzLDguMzEgMjAuODMsMTEuNUMyMC44MywxMy4yMSAxOS45MSwxNC40MSAxOC40MSwxNS4xNUMxOC4zMiwxNS4xIDE4LjI0LDE1LjA1IDE4LjE5LDE1QzE3LjgzLDE0Ljg0IDE3LjIzLDE0LjY2IDE3LjIzLDE0LjY2QzE3LjIzLDE0LjY2IDIwLjIxLDE0LjQ0IDIwLjIxLDExLjQ3QzIwLjIxLDguNSAxNy4wOSw4LjQ1IDE3LjA5LDguNDVIMTAuMjRWMTUuNjFDNy42OSwxNC44NyA1LjkzLDEzLjMgNS45MywxMS41QzUuOTMsOC45NiA5LjMzLDYuOTEgMTMuNTMsNi45MU0xMy42OCwxMC44OUgxNS43NUMxNS43NSwxMC44OSAxNi43LDEwLjg0IDE2LjcsMTEuODNDMTYuNywxMi44IDE1Ljc1LDEyLjggMTUuNzUsMTIuOEgxMy42OFYxMC44OU0xMy42NSwxNS4zSDE0LjU3QzE0Ljc1LDE1LjMgMTQuODQsMTUuMzUgMTUsMTUuNUMxNS4xMywxNS42IDE1LjI3LDE1Ljc5IDE1LjM5LDE1Ljk2QzE0Ljg0LDE2LjAzIDE0LjI2LDE2LjA2IDEzLjY1LDE2LjA2VjE1LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VSdWJ5ID0gXCJNMTguOCwyLjA3QzIxLjMyLDIuNSAyMi4wNCw0LjIzIDIyLDYuMDRWNkwyMC44NiwyMC45M0w2LjA4LDIxLjk0SDYuMDlDNC44NiwyMS44OSAyLjEzLDIxLjc3IDIsMTcuOTVMMy4zNywxNS40NUw2LjE0LDIxLjkxTDguNSwxNC4yOUw4LjQ1LDE0LjNMOC40NywxNC4yOEwxNi4xOCwxNi43NEwxNC4xOSw4Ljk2TDIxLjU0LDguNUwxNS43NSwzLjc2TDE4LjgsMi4wNlYyLjA3TTIsMTcuOTFWMTcuOTNMMiwxNy45MVYxNy45MU02LjI4LDYuMjNDOS4yNCwzLjI4IDEzLjA3LDEuNTQgMTQuNTQsMy4wM0MxNiw0LjUgMTQuNDYsOC4xMiAxMS41LDExLjA2QzguNSwxNCA0LjczLDE1Ljg0IDMuMjYsMTQuMzZDMS43OSwxMi44NyAzLjMsOS4xNyA2LjI3LDYuMjNINi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVJ1YnlPblJhaWxzID0gXCJNMTkuOCwxNi43QzE5LjgsMTYuNyAyMS42LDE2LjUgMjEuNiwxNC4zQzIxLjYsMTIuMSAxOS41LDExLjggMTkuNSwxMS44SDE1LjdWMTlIMTcuNlYxNy4zTDE5LjMsMTlIMjJMMTkuOCwxNi43TTE5LDE1LjNIMTcuNVYxMy43SDE5QzE5LDEzLjcgMTkuNCwxMy45IDE5LjQsMTQuNUMxOS41LDE1LjEgMTksMTUuMyAxOSwxNS4zTTIxLjMsOC4yVjguNEMxMy4yLDYuMSAxMCwxMy4yIDEwLjYsMTguN0MxMC42LDE4LjcgNC45LDE4LjcgNC4zLDE4LjdDNSwxMy4zIDExLjgsMi42IDIxLjMsOC4yTTIwLjUsNi45QzE5LjgsNi42IDE5LjEsNi4zIDE4LjQsNi4xTDE4LjUsNC44TDIwLjYsNS42TDIwLjUsNi45TTE4LjUsOC43QzE5LjIsOC43IDE5LjksOC44IDIwLjYsOUwyMC41LDEwLjJMMTguNywxMEwxOC41LDguN00xMy45LDUuOEwxMy41LDQuNkwxNS42LDQuNEwxNiw1LjdDMTUuOCw1LjcgMTQuMSw1LjggMTMuOSw1LjhNMTUuMiw5LjVDMTUuNiw5LjMgMTYuMyw5IDE3LjIsOC44TDE3LjYsMTBMMTUuOCwxMC43TDE1LjIsOS41TTExLjgsNi41QzExLjIsNi44IDEwLjYsNy4xIDEwLDcuNUw5LjIsNi4yTDExLDUuMkwxMS44LDYuNU0xNC4zLDEwLjFMMTUuMSwxMS4zTDE0LDEyLjZMMTIuOSwxMS42QzEzLjIsMTEgMTMuNywxMC41IDE0LjMsMTAuMU0xMS42LDE1QzExLjcsMTQuMiAxMS45LDEzLjUgMTIuMiwxMi43TDEzLjQsMTMuN0wxMy4xLDE1LjZMMTEuNiwxNU03LjksOS4zQzcuNCw5LjggNi45LDEwLjQgNi41LDEwLjlMNS4yLDkuOEw2LjcsOC4yTDcuOSw5LjNNNC44LDEzLjdDNC40LDE0LjUgNC4xLDE1LjMgMy44LDE2TDIsMTUuM0wyLjksMTNMNC44LDEzLjdNMTEuNSwxNi4zTDEzLjMsMTYuOUwxMy42LDE4LjlMMTEuNiwxOC40QzExLjYsMTguMiAxMS41LDE3LjUgMTEuNSwxNi4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhbmd1YWdlUnVzdCA9IFwiTTIxLjkgMTEuN0wyMSAxMS4yVjExTDIxLjcgMTAuM0MyMS44IDEwLjIgMjEuOCAxMCAyMS43IDkuOUwyMS42IDkuOEwyMC43IDkuNUMyMC43IDkuNCAyMC43IDkuMyAyMC42IDkuM0wyMS4yIDguNUMyMS4zIDguNCAyMS4zIDguMiAyMS4xIDguMUMyMS4xIDguMSAyMSA4LjEgMjEgOEwyMCA3LjhDMjAgNy43IDE5LjkgNy43IDE5LjkgNy42TDIwLjMgNi43VjYuNEMyMC4yIDYuMyAyMC4xIDYuMyAyMCA2LjNIMTlDMTkgNi4zIDE5IDYuMiAxOC45IDYuMkwxOS4xIDUuMkMxOS4xIDUgMTkgNC45IDE4LjkgNC45SDE4LjhMMTcuOCA1LjFDMTcuOCA1IDE3LjcgNSAxNy42IDQuOVYzLjlDMTcuNiAzLjcgMTcuNSAzLjYgMTcuMyAzLjZIMTcuMkwxNi4zIDRIMTYuMkwxNiAzQzE2IDIuOCAxNS44IDIuNyAxNS43IDIuOEgxNS42TDE0LjggMy40QzE0LjcgMy40IDE0LjYgMy40IDE0LjYgMy4zTDE0LjMgMi40QzE0LjIgMi4zIDE0LjEgMi4yIDEzLjkgMi4yQzEzLjkgMi4yIDEzLjggMi4yIDEzLjggMi4zTDEzIDNIMTIuOEwxMi4zIDIuMkMxMi4yIDIgMTIgMiAxMS44IDJMMTEuNyAyLjFMMTEuMiAzSDExTDEwLjMgMi4zQzEwLjIgMi4yIDEwIDIuMiA5LjkgMi4zTDkuOCAyLjRMOS41IDMuM0M5LjQgMy4zIDkuMyAzLjMgOS4zIDMuNEw4LjUgMi44QzguMyAyLjcgOC4xIDIuNyA4IDIuOVYzTDcuOCA0QzcuOCA0IDcuNyA0IDcuNiA0LjFMNi43IDMuN0M2LjYgMy42IDYuNCAzLjcgNi4zIDMuOFY0LjlDNi4zIDUgNi4yIDUgNi4yIDUuMUw1LjIgNC45QzUgNC44IDQuOSA0LjkgNC45IDUuMVY1LjJMNS4xIDYuMkM1IDYuMiA1IDYuMyA0LjkgNi4zSDMuOUMzLjcgNi4zIDMuNiA2LjQgMy42IDYuNlY2LjdMNCA3LjZWNy44TDMgOEMyLjggOCAyLjcgOC4yIDIuNyA4LjNWOC40TDMuMyA5LjJDMy4zIDkuMyAzLjMgOS40IDMuMiA5LjRMMi40IDkuOEMyLjMgOS45IDIuMiAxMCAyLjIgMTAuMkMyLjIgMTAuMiAyLjIgMTAuMyAyLjMgMTAuM0wzIDExVjExLjJMMi4yIDExLjdDMiAxMS44IDIgMTIgMiAxMi4xTDIuMSAxMi4yTDMgMTIuOFYxM0wyLjMgMTMuN0MyLjIgMTMuOCAyLjIgMTQgMi4zIDE0LjFMMi40IDE0LjJMMy4zIDE0LjVDMy4zIDE0LjYgMy4zIDE0LjcgMy40IDE0LjdMMi44IDE1LjVDMi43IDE1LjYgMi43IDE1LjggMi45IDE1LjlDMi45IDE1LjkgMyAxNS45IDMgMTZMNCAxNi4yQzQgMTYuMyA0LjEgMTYuMyA0LjEgMTYuNEwzLjcgMTcuM0MzLjYgMTcuNCAzLjcgMTcuNiAzLjggMTcuN0g0LjlDNSAxNy43IDUgMTcuOCA1LjEgMTcuOEw0LjkgMTguOEM0LjkgMTkgNSAxOS4xIDUuMSAxOS4xSDUuMkw2LjIgMTguOUM2LjIgMTkgNi4zIDE5IDYuNCAxOS4xVjIwLjFDNi40IDIwLjMgNi41IDIwLjQgNi43IDIwLjRINi44TDcuNyAyMEg3LjhMOCAyMUM4IDIxLjIgOC4yIDIxLjMgOC4zIDIxLjJIOC40TDkuMiAyMC42QzkuMyAyMC42IDkuNCAyMC42IDkuNCAyMC43TDkuNyAyMS42QzkuOCAyMS43IDkuOSAyMS44IDEwLjEgMjEuOEMxMC4xIDIxLjggMTAuMiAyMS44IDEwLjIgMjEuN0wxMSAyMUgxMS4yTDExLjcgMjEuOEMxMS44IDIxLjkgMTIgMjIgMTIuMSAyMS45TDEyLjIgMjEuOEwxMi43IDIxSDEyLjlMMTMuNiAyMS43QzEzLjcgMjEuOCAxMy45IDIxLjggMTQgMjEuN0wxNC4xIDIxLjZMMTQuNCAyMC43QzE0LjUgMjAuNyAxNC42IDIwLjcgMTQuNiAyMC42TDE1LjQgMjEuMkMxNS41IDIxLjMgMTUuNyAyMS4zIDE1LjggMjEuMUMxNS44IDIxLjEgMTUuOCAyMSAxNS45IDIxTDE2LjEgMjBDMTYuMiAyMCAxNi4yIDE5LjkgMTYuMyAxOS45TDE3LjIgMjAuM0MxNy4zIDIwLjQgMTcuNSAyMC4zIDE3LjYgMjAuMlYxOS4xTDE3LjggMTguOUwxOC44IDE5LjFDMTkgMTkuMSAxOS4xIDE5IDE5LjEgMTguOVYxOC44TDE4LjkgMTcuOEwxOS4xIDE3LjZIMjAuMUMyMC4zIDE3LjYgMjAuNCAxNy41IDIwLjQgMTcuM1YxNy4yTDIwIDE2LjNDMjAgMTYuMiAyMC4xIDE2LjIgMjAuMSAxNi4xTDIxLjEgMTUuOUMyMS4zIDE1LjkgMjEuNCAxNS43IDIxLjMgMTUuNlYxNS41TDIwLjcgMTQuN0wyMC44IDE0LjVMMjEuNyAxNC4yQzIxLjggMTQuMSAyMS45IDE0IDIxLjkgMTMuOEMyMS45IDEzLjggMjEuOSAxMy43IDIxLjggMTMuN0wyMSAxM1YxMi44TDIxLjggMTIuM0MyMiAxMi4yIDIyIDEyIDIxLjkgMTEuN0MyMS45IDExLjggMjEuOSAxMS44IDIxLjkgMTEuN00xNi4yIDE4LjdDMTUuOSAxOC42IDE1LjcgMTguMyAxNS43IDE4QzE1LjggMTcuNyAxNi4xIDE3LjUgMTYuNCAxNy41QzE2LjcgMTcuNiAxNi45IDE3LjkgMTYuOSAxOC4yQzE2LjkgMTguNiAxNi42IDE4LjggMTYuMiAxOC43TTE2IDE2LjhDMTUuNyAxNi43IDE1LjQgMTYuOSAxNS40IDE3LjJMMTUgMTguNkMxNC4xIDE5IDEzLjEgMTkuMiAxMiAxOS4yQzEwLjkgMTkuMiA5LjkgMTkgOC45IDE4LjVMOC42IDE3LjFDOC41IDE2LjggOC4zIDE2LjYgOCAxNi43TDYuOCAxN0M2LjYgMTYuOCA2LjQgMTYuNSA2LjIgMTYuM0gxMi4yQzEyLjMgMTYuMyAxMi4zIDE2LjMgMTIuMyAxNi4yVjE0LjFDMTIuMyAxNCAxMi4zIDE0IDEyLjIgMTRIMTAuNVYxMi43SDEyLjRDMTIuNiAxMi43IDEzLjMgMTIuNyAxMy42IDEzLjdDMTMuNyAxNCAxMy44IDE1IDE0IDE1LjNDMTQuMSAxNS42IDE0LjYgMTYuMyAxNS4xIDE2LjNIMTguMkMxOCAxNi42IDE3LjggMTYuOCAxNy41IDE3LjFMMTYgMTYuOE03LjcgMTguN0M3LjQgMTguOCA3LjEgMTguNiA3IDE4LjJDNi45IDE3LjkgNy4xIDE3LjYgNy41IDE3LjVTOC4xIDE3LjYgOC4yIDE4QzguMiAxOC4zIDggMTguNiA3LjcgMTguN001LjQgOS41QzUuNSA5LjggNS40IDEwLjIgNS4xIDEwLjNDNC44IDEwLjQgNC40IDEwLjMgNC4zIDEwQzQuMiA5LjcgNC4zIDkuMyA0LjYgOS4yQzUgOS4xIDUuMyA5LjIgNS40IDkuNU00LjcgMTEuMUw2IDEwLjZDNi4zIDEwLjUgNi40IDEwLjIgNi4zIDkuOUw2IDkuM0g3VjE0SDVDNC43IDEzIDQuNiAxMi4xIDQuNyAxMS4xTTEwLjMgMTAuN1Y5LjNIMTIuOEMxMi45IDkuMyAxMy43IDkuNCAxMy43IDEwQzEzLjcgMTAuNSAxMy4xIDEwLjcgMTIuNiAxMC43SDEwLjNNMTkuMyAxMS45VjEyLjRIMTguNUMxOC40IDEyLjQgMTguNCAxMi40IDE4LjQgMTIuNVYxMi44QzE4LjQgMTMuNiAxNy45IDEzLjggMTcuNSAxMy44QzE3LjEgMTMuOCAxNi43IDEzLjYgMTYuNiAxMy40QzE2LjQgMTIuMSAxNiAxMS45IDE1LjQgMTEuNEMxNi4xIDEwLjkgMTYuOSAxMC4yIDE2LjkgOS4zQzE2LjkgOC4zIDE2LjIgNy43IDE1LjggNy40QzE1LjEgNyAxNC40IDYuOSAxNC4yIDYuOUg2LjZDNy43IDUuNyA5LjEgNC45IDEwLjcgNC42TDExLjYgNS42QzExLjggNS44IDEyLjEgNS44IDEyLjQgNS42TDEzLjQgNC42QzE1LjUgNSAxNy4zIDYuMyAxOC40IDguMkwxNy43IDkuOEMxNy42IDEwLjEgMTcuNyAxMC40IDE4IDEwLjVMMTkuMyAxMS4xVjExLjlNMTEuNiAzLjlDMTEuOCAzLjcgMTIuMiAzLjcgMTIuNCAzLjlDMTIuNiA0LjEgMTIuNiA0LjUgMTIuNCA0LjdDMTIuMSA1IDExLjggNSAxMS41IDQuN0MxMS4zIDQuNSAxMS40IDQuMiAxMS42IDMuOU0xOC41IDkuNUMxOC42IDkuMiAxOSA5LjEgMTkuMyA5LjJDMTkuNiA5LjMgMTkuNyA5LjcgMTkuNiAxMEMxOS41IDEwLjMgMTkuMSAxMC40IDE4LjggMTAuM0MxOC41IDEwLjIgMTguNCA5LjggMTguNSA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VTd2lmdCA9IFwiTTE3LjA5LDE5LjcyQzE0LjczLDIxLjA4IDExLjUsMjEuMjIgOC4yMywxOS44MkM1LjU5LDE4LjcgMy40LDE2Ljc0IDIsMTQuNUMyLjY3LDE1LjA1IDMuNDYsMTUuNSA0LjMsMTUuOUM3LjY3LDE3LjQ3IDExLjAzLDE3LjM2IDEzLjQsMTUuOUMxMC4wMywxMy4zMSA3LjE2LDkuOTQgNS4wMyw3LjE5QzQuNTgsNi43NCA0LjI1LDYuMTggMy45MSw1LjY4QzEyLjE5LDExLjczIDExLjgzLDEzLjI3IDYuMzIsNC42N0MxMS4yMSw5LjYxIDE1Ljc1LDEyLjQxIDE1Ljc1LDEyLjQxQzE1LjkxLDEyLjUgMTYsMTIuNTcgMTYuMTEsMTIuNjNDMTYuMjEsMTIuMzggMTYuMywxMi4xMiAxNi4zNywxMS44NUMxNy4xNiw5IDE2LjI2LDUuNzMgMTQuMjksMy4wNEMxOC44NCw1Ljc5IDIxLjU0LDEwLjk1IDIwLjQxLDE1LjI4QzIwLjM4LDE1LjM5IDIwLjM1LDE1LjUgMjAuMzYsMTUuNjdDMjIuNiwxOC41IDIyLDIxLjQ1IDIxLjcxLDIwLjg5QzIwLjUsMTguNSAxOC4yMywxOS4yNCAxNy4wOSwxOS43MlYxOS43MlpcIjtcclxuZXhwb3J0IHZhciBtZGlMYW5ndWFnZVR5cGVzY3JpcHQgPSBcIk0zLDNIMjFWMjFIM1YzTTEzLjcxLDE3Ljg2QzE0LjIxLDE4Ljg0IDE1LjIyLDE5LjU5IDE2LjgsMTkuNTlDMTguNCwxOS41OSAxOS42LDE4Ljc2IDE5LjYsMTcuMjNDMTkuNiwxNS44MiAxOC43OSwxNS4xOSAxNy4zNSwxNC41N0wxNi45MywxNC4zOUMxNi4yLDE0LjA4IDE1Ljg5LDEzLjg3IDE1Ljg5LDEzLjM3QzE1Ljg5LDEyLjk2IDE2LjIsMTIuNjQgMTYuNywxMi42NEMxNy4xOCwxMi42NCAxNy41LDEyLjg1IDE3Ljc5LDEzLjM3TDE5LjEsMTIuNUMxOC41NSwxMS41NCAxNy43NywxMS4xNyAxNi43LDExLjE3QzE1LjE5LDExLjE3IDE0LjIyLDEyLjEzIDE0LjIyLDEzLjRDMTQuMjIsMTQuNzggMTUuMDMsMTUuNDMgMTYuMjUsMTUuOTVMMTYuNjcsMTYuMTNDMTcuNDUsMTYuNDcgMTcuOTEsMTYuNjggMTcuOTEsMTcuMjZDMTcuOTEsMTcuNzQgMTcuNDYsMTguMDkgMTYuNzYsMTguMDlDMTUuOTMsMTguMDkgMTUuNDUsMTcuNjYgMTUuMDksMTcuMDZMMTMuNzEsMTcuODZNMTMsMTEuMjVIOFYxMi43NUg5LjVWMjBIMTEuMjVWMTIuNzVIMTNWMTEuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFuZ3VhZ2VYYW1sID0gXCJNMTYuOTMgNy45TDE5LjMxIDEyTDE2Ljk1IDE2LjA5TDE2LjMzIDE1TDE3LjggMTIuNUMxNy45NyAxMi4xOSAxNy45NyAxMS44MyAxNy44IDExLjU0TDE2LjMyIDlMMTYuOTMgNy45TTE2LjkyIDYuNTdDMTYuODkgNi41NyAxNi44NSA2LjU5IDE2LjgzIDYuNjJMMTUuNTYgOC44N0MxNS41IDguOTQgMTUuNSA5IDE1LjU2IDkuMDlMMTcuMTggMTEuOUMxNy4yMiAxMS45NyAxNy4yMiAxMi4wNSAxNy4xOCAxMi4xMkwxNS41NyAxNC45MUMxNS41MyAxNC45NyAxNS41MyAxNS4wNiAxNS41NyAxNS4xM0wxNi44NSAxNy4zNkMxNi44NyAxNy40IDE2LjkxIDE3LjQyIDE2Ljk0IDE3LjQyQzE3IDE3LjQyIDE3IDE3LjQgMTcuMDQgMTcuMzZMMjAgMTIuMjNDMjAuMDggMTIuMDkgMjAuMDggMTEuOTIgMjAgMTEuNzlMMTcgNi42MkMxNyA2LjU5IDE2Ljk2IDYuNTcgMTYuOTIgNi41N00yMS45MSAxMS42N0wxNy4yMyAzLjU4QzE3LjExIDMuMzggMTYuODkgMy4yNSAxNi42NiAzLjI1SDcuMjhDNy4wNSAzLjI1IDYuODMgMy4zOCA2LjcxIDMuNThMMiAxMS42N0MxLjkxIDExLjg3IDEuOTEgMTIuMTMgMiAxMi4zM0w2LjcxIDIwLjQyQzYuODMgMjAuNjIgNy4wNSAyMC43NSA3LjI4IDIwLjc1SDE2LjY2QzE2Ljg5IDIwLjc1IDE3LjExIDIwLjYyIDE3LjIzIDIwLjQyTDIxLjkxIDEyLjMzQzIyLjAzIDEyLjEzIDIyLjAzIDExLjg4IDIxLjkxIDExLjY3TTcuMyAzLjk1SDE2LjEyTDExLjc2IDExLjY1SDYuOTNMMTAuODcgNC44MkMxMC45MSA0Ljc1IDEwLjg2IDQuNjYgMTAuNzggNC42Nkw4LjIxIDQuNjVDOC4xMyA0LjY1IDguMDYgNC43IDggNC43Nkw0LjA0IDExLjY1SDIuODRMNy4zIDMuOTVNNi4xNyAxMi40Nkw5Ljc0IDE4LjYzTDguNSAxOC42M0w0Ljg3IDEyLjM1TDQuNjcgMTJMNC44NyAxMS42NUw4LjUgNS4zN0w5LjczIDUuMzdMNi4xNyAxMS41M0M2LjE1IDExLjU3IDYuMTMgMTEuNjEgNi4xMSAxMS42NUM2LjAzIDExLjg4IDYuMDMgMTIuMTMgNi4xMiAxMi4zNUM2LjEzIDEyLjM5IDYuMTUgMTIuNDMgNi4xNyAxMi40Nk03LjMgMjAuMDVMMi44NSAxMi4zNUg0LjA1TDguMDMgMTkuMjNDOC4wNyAxOS4zIDguMTQgMTkuMzQgOC4yMiAxOS4zNEwxMC43OSAxOS4zNEMxMC44NyAxOS4zNCAxMC45MiAxOS4yNSAxMC44OCAxOS4xOEw2Ljk0IDEyLjM1SDExLjc3TDE2LjE3IDIwLjA1SDcuM00xNi44IDE5Ljc1TDEyLjM3IDEyTDE2Ljc4IDQuMjFMMjEuMjkgMTJMMTYuOCAxOS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXB0b3AgPSBcIk00LDZIMjBWMTZINE0yMCwxOEEyLDIgMCAwLDAgMjIsMTZWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMTZBMiwyIDAgMCwwIDQsMThIMFYyMEgyNFYxOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXB0b3BDaHJvbWVib29rID0gXCJNMjAsMTVINFY1SDIwTTE0LDE4SDEwVjE3SDE0TTIyLDE4VjNIMlYxOEgwVjIwSDI0VjE4SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhcHRvcE1hYyA9IFwiTTEyLDE5QTEsMSAwIDAsMSAxMSwxOEExLDEgMCAwLDEgMTIsMTdBMSwxIDAgMCwxIDEzLDE4QTEsMSAwIDAsMSAxMiwxOU00LDVIMjBWMTZINE0yMCwxOEEyLDIgMCAwLDAgMjIsMTZWNUMyMiwzLjg5IDIxLjEsMyAyMCwzSDRDMi44OSwzIDIsMy44OSAyLDVWMTZBMiwyIDAgMCwwIDQsMThIMEEyLDIgMCAwLDAgMiwyMEgyMkEyLDIgMCAwLDAgMjQsMThIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFwdG9wT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMCwyMC43MkwxOC43MywyMkwxNi43MywyMEgwVjE4SDRDMi44OSwxOCAyLDE3LjEgMiwxNlY2QzIsNS43OCAyLjA0LDUuNTcgMi4xLDUuMzdMMSw0LjI3TTQsMTZIMTIuNzNMNCw3LjI3VjE2TTIwLDE2VjZINy44Mkw1LjgyLDRIMjBBMiwyIDAgMCwxIDIyLDZWMTZBMiwyIDAgMCwxIDIwLDE4SDI0VjIwSDIxLjgyTDE3LjgyLDE2SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhcHRvcFdpbmRvd3MgPSBcIk0zLDRIMjFBMSwxIDAgMCwxIDIyLDVWMTZBMSwxIDAgMCwxIDIxLDE3SDIyTDI0LDIwVjIxSDBWMjBMMiwxN0gzQTEsMSAwIDAsMSAyLDE2VjVBMSwxIDAgMCwxIDMsNE00LDZWMTVIMjBWNkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhcmF2ZWwgPSBcIk0yMS43IDYuNTNDMjEuNzEgNi41NSAyMS43MSA2LjU4IDIxLjcxIDYuNjFWMTAuOUMyMS43MSAxMSAyMS42NSAxMS4xMiAyMS41NiAxMS4xN0wxNy45NSAxMy4yNVYxNy4zNkMxNy45NSAxNy40NyAxNy45IDE3LjU3IDE3LjggMTcuNjNMMTAuMjggMjEuOTZDMTAuMjYgMjEuOTcgMTAuMjQgMjIgMTAuMjIgMjJMMTAuMiAyMkMxMC4xNSAyMiAxMC4wOSAyMiAxMC4wNCAyMkMxMC4wMyAyMiAxMCAyMiAxMCAyMkMxMCAyMiAxMCAyMS45NyA5Ljk2IDIxLjk2TDIuNDQgMTcuNjNDMi4zNSAxNy41OCAyLjI5IDE3LjQ3IDIuMjkgMTcuMzZWNC41QzIuMjkgNC40NSAyLjI5IDQuNDIgMi4zIDQuNEMyLjMgNC4zOSAyLjMxIDQuMzggMi4zMSA0LjM3QzIuMzEgNC4zNSAyLjMyIDQuMzQgMi4zMyA0LjMyQzIuMzMgNC4zMSAyLjM0IDQuMyAyLjM1IDQuMjlDMi4zNiA0LjI4IDIuMzcgNC4yNyAyLjM4IDQuMjZDMi4zOSA0LjI1IDIuNCA0LjI0IDIuNDEgNC4yM0MyLjQyIDQuMjIgMi40MyA0LjIxIDIuNDQgNC4yMUw2LjIgMi4wNEM2LjMgMiA2LjQyIDIgNi41IDIuMDRMMTAuMjggNC4yMUgxMC4yOEMxMC4yOSA0LjIyIDEwLjMgNC4yMiAxMC4zMSA0LjIzQzEwLjMyIDQuMjQgMTAuMzMgNC4yNSAxMC4zNCA0LjI2QzEwLjM1IDQuMjcgMTAuMzYgNC4yOCAxMC4zNyA0LjI5QzEwLjM4IDQuMyAxMC4zOSA0LjMxIDEwLjM5IDQuMzJDMTAuNCA0LjM0IDEwLjQxIDQuMzUgMTAuNDEgNC4zN0MxMC40MSA0LjM4IDEwLjQyIDQuMzkgMTAuNDIgNC40QzEwLjQzIDQuNDMgMTAuNDMgNC40NSAxMC40MyA0LjVWMTIuNUwxMy41NyAxMC43MlY2LjYxQzEzLjU3IDYuNTggMTMuNTcgNi41NSAxMy41OCA2LjUzTDEzLjU5IDYuNUMxMy41OSA2LjUgMTMuNiA2LjQ3IDEzLjYxIDYuNDVDMTMuNjEgNi40NCAxMy42MiA2LjQzIDEzLjYzIDYuNDJDMTMuNjQgNi40MSAxMy42NSA2LjQgMTMuNjYgNi4zOUMxMy42NyA2LjM4IDEzLjY4IDYuMzcgMTMuNjkgNi4zNkMxMy43IDYuMzUgMTMuNzEgNi4zNCAxMy43MiA2LjM0TDE3LjUgNC4xN0MxNy41OCA0LjExIDE3LjcgNC4xMSAxNy44IDQuMTdMMjEuNTYgNi4zNEMyMS41NyA2LjM0IDIxLjU4IDYuMzUgMjEuNTkgNi4zNkwyMS42MiA2LjM5QzIxLjYzIDYuNCAyMS42NCA2LjQxIDIxLjY1IDYuNDJDMjEuNjYgNi40MyAyMS42NiA2LjQ0IDIxLjY3IDYuNDVDMjEuNjggNi40NyAyMS42OCA2LjUgMjEuNjkgNi41QzIxLjcgNi41IDIxLjcgNi41IDIxLjcgNi41M00yMS4wOSAxMC43MlY3LjE1TDE3Ljk1IDguOTVWMTIuNUwyMS4wOSAxMC43Mk0xNy4zMyAxNy4xOFYxMy42TDEwLjQzIDE3LjU0VjIxLjE1TDE3LjMzIDE3LjE4TTIuOTEgNVYxNy4xOEw5LjgxIDIxLjE1VjE3LjU0TDYuMjEgMTUuNUw2LjIgMTUuNUw2LjIgMTUuNUM2LjE5IDE1LjUgNi4xOCAxNS41IDYuMTcgMTUuNDdDNi4xNiAxNS40NyA2LjE1IDE1LjQ2IDYuMTQgMTUuNDVWMTUuNDVDNi4xMyAxNS40NCA2LjEyIDE1LjQzIDYuMTEgMTUuNDJDNi4xIDE1LjQxIDYuMSAxNS40IDYuMDkgMTUuMzlWMTUuMzlDNi4wOCAxNS4zNyA2LjA4IDE1LjM2IDYuMDcgMTUuMzVDNi4wNyAxNS4zMyA2LjA2IDE1LjMyIDYuMDYgMTUuMzFDNi4wNSAxNS4zIDYuMDUgMTUuMjggNi4wNSAxNS4yN0M2LjA1IDE1LjI1IDYuMDUgMTUuMjQgNi4wNSAxNS4yM1Y2LjgyTDIuOTEgNU02LjM2IDIuNjhMMy4yMyA0LjVMNi4zNiA2LjI4TDkuNSA0LjVMNi4zNiAyLjY4TTkuODEgMTIuODhWNUw2LjY3IDYuODJWMTQuNjlMOS44MSAxMi44OE0xNy42NCA0LjhMMTQuNSA2LjYxTDE3LjY0IDguNDFMMjAuNzcgNi42MUwxNy42NCA0LjhNMTcuMzMgOC45NUwxNC4xOSA3LjE1VjEwLjcyTDE3LjMzIDEyLjVWOC45NU0xMC4xMiAxN0wxNyAxMy4wNkwxMy44OCAxMS4yNkw3IDE1LjIzTDEwLjEyIDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxhc2VyUG9pbnRlciA9IFwiTTkgMTNMNSAxNkM0IDE2Ljg4IDMuODYgMTguMTIgNCAxOUM0LjEzIDIwIDQuOTEgMjEuMjIgNiAyMS42OEM3LjU3IDIyLjM1IDkuMDkgMjEuOSAxMC4wNCAyMC45MkwxOSAxM0MyMC44NiAxMS42MiAyMCA5IDE4IDlIMTJMMTkuNDYgNC42MUMxOS45IDQuMjkgMjAuMDggMy44MiAyMC4wNiAzLjM3QzIwIDIuNjcgMTkuNDYgMiAxOC42IDJIMTguNTRDMTguMTkgMiAxNy44NiAyLjExIDE3LjU2IDIuMjlMNSA5QzQuMTkgOS40NiAzLjk0IDEwLjI0IDQgMTFDNC4wNSAxMi4wMyA0Ljc0IDEzIDYgMTNNNSAxOC41QzUgMTcuMTIgNi4xMiAxNiA3LjUgMTZTMTAgMTcuMTIgMTAgMTguNSA4Ljg4IDIxIDcuNSAyMSA1IDE5Ljg4IDUgMTguNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXNzbyA9IFwiTTEyIDJDMTcuNSAyIDIyIDUuMTMgMjIgOUMyMiAxMi4yNiAxOC44MSAxNSAxNC41IDE1Ljc4TDE0LjUgMTUuNUMxNC41IDE0LjkxIDE0LjQgMTQuMzQgMTQuMjEgMTMuODFDMTcuNTUgMTMuMjEgMjAgMTEuMjggMjAgOUMyMCA2LjI0IDE2LjQyIDQgMTIgNEM3LjU4IDQgNCA2LjI0IDQgOUM0IDEwLjE5IDQuNjcgMTEuMjkgNS43OSAxMi4xNUM1LjM1IDEyLjY0IDUgMTMuMjEgNC43OCAxMy44NUMzLjA2IDEyLjU5IDIgMTAuODggMiA5QzIgNS4xMyA2LjUgMiAxMiAyTTkuNSAxMkMxMS40MyAxMiAxMyAxMy41NyAxMyAxNS41QzEzIDE3LjQgMTEuNSAxOC45NSA5LjYgMTlDOS4zOSAxOS4zNiA5LjE4IDIwIDkuODMgMjAuNjhDMTEgMjEuODggMTMuMjggMTkuNzIgMTYuMzkgMTkuNzFDMTguNDMgMTkuNyAyMC4wMyAxOS45NyAyMC4wMyAxOS45N0MyMC4wMyAxOS45NyAyMS4wOCAyMC4xIDIwLjk3IDIxLjA0QzIwLjg2IDIxLjk3IDE5LjkxIDIxLjk3IDE5LjkxIDIxLjk3QzE5LjUzIDIxLjkzIDE4LjAzIDIxLjU4IDE2LjIyIDIxLjY4QzE0LjQxIDIxLjc3IDEzLjQ3IDIyLjQxIDEyLjU2IDIyLjY5QzExLjY2IDIyLjk3IDkuOTEgMjMuMzggOC4zIDIyLjA1QzYuOTcgMjAuOTYgNy40NiAxOS4xMSA3LjY3IDE4LjVDNi42NyAxNy44NyA2IDE2Ljc2IDYgMTUuNUM2IDEzLjU3IDcuNTcgMTIgOS41IDEyTTkuNSAxNEM4LjY3IDE0IDggMTQuNjcgOCAxNS41QzggMTYuMzMgOC42NyAxNyA5LjUgMTdDMTAuMzMgMTcgMTEgMTYuMzMgMTEgMTUuNUMxMSAxNC42NyAxMC4zMyAxNCA5LjUgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGFzdHBhc3MgPSBcIk0xNCwxMkEyLDIgMCAwLDEgMTYsMTBBMiwyIDAgMCwxIDE4LDEyQTIsMiAwIDAsMSAxNiwxNEEyLDIgMCAwLDEgMTQsMTJNOCwxMkEyLDIgMCAwLDEgMTAsMTBBMiwyIDAgMCwxIDEyLDEyQTIsMiAwIDAsMSAxMCwxNEEyLDIgMCAwLDEgOCwxMk0yLDEyQTIsMiAwIDAsMSA0LDEwQTIsMiAwIDAsMSA2LDEyQTIsMiAwIDAsMSA0LDE0QTIsMiAwIDAsMSAyLDEyTTIyLDVIMjBWMTlIMjJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXRpdHVkZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlM2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMk0xMiA0QzE1IDQgMTcuNSA1LjYgMTguOSA4SDUuMUM2LjUgNS42IDkgNCAxMiA0TTEyIDIwQzkgMjAgNi41IDE4LjQgNS4xIDE2SDE4LjlDMTcuNSAxOC40IDE1IDIwIDEyIDIwTTQuMyAxNEM0LjEgMTMuNCA0IDEyLjcgNCAxMlM0LjEgMTAuNiA0LjMgMTBIMTkuOEMyMCAxMC42IDIwLjEgMTEuMyAyMC4xIDEyUzIwIDEzLjQgMTkuOCAxNEg0LjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF1bmNoID0gXCJNMTQsM1Y1SDE3LjU5TDcuNzYsMTQuODNMOS4xNywxNi4yNEwxOSw2LjQxVjEwSDIxVjNNMTksMTlINVY1SDEyVjNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTJIMTlWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF2YUxhbXAgPSBcIk0xMCwzTDgsMTZIMTZMMTQsM0gxME0xMS41LDUuNzVBMC43NSwwLjc1IDAgMCwxIDEyLjI1LDYuNUEwLjc1LDAuNzUgMCAwLDEgMTEuNSw3LjI1QTAuNzUsMC43NSAwIDAsMSAxMC43NSw2LjVBMC43NSwwLjc1IDAgMCwxIDExLjUsNS43NU0xMi41LDguNUExLDEgMCAwLDEgMTMuNSw5LjVBMSwxIDAgMCwxIDEyLjUsMTAuNUExLDEgMCAwLDEgMTEuNSw5LjVBMSwxIDAgMCwxIDEyLjUsOC41TTExLjUsMTJBMS41LDEuNSAwIDAsMSAxMywxMy41QTEuNSwxLjUgMCAwLDEgMTEuNSwxNUExLjUsMS41IDAgMCwxIDEwLDEzLjVBMS41LDEuNSAwIDAsMSAxMS41LDEyTTgsMTdMMTAsMTlMOCwyMUgxNkwxNCwxOUwxNiwxN0g4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVycyA9IFwiTTEyLDE2TDE5LjM2LDEwLjI3TDIxLDlMMTIsMkwzLDlMNC42MywxMC4yN00xMiwxOC41NEw0LjYyLDEyLjgxTDMsMTQuMDdMMTIsMjEuMDdMMjEsMTQuMDdMMTkuMzcsMTIuOEwxMiwxOC41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNNaW51cyA9IFwiTTIyLDE3VjE5SDE0VjE3SDIyTTExLDE2TDIsOUwxMSwyTDIwLDlMMTEsMTZNMTEsMTguNTRMMTIsMTcuNzVWMThDMTIsMTguNzEgMTIuMTIsMTkuMzkgMTIuMzUsMjBMMTEsMjEuMDdMMiwxNC4wN0wzLjYyLDEyLjgxTDExLDE4LjU0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc09mZiA9IFwiTTMuMjcsMUwyLDIuMjdMNi4yMiw2LjVMMyw5TDQuNjMsMTAuMjdMMTIsMTZMMTQuMSwxNC4zN0wxNS41MywxNS44TDEyLDE4LjU0TDQuNjMsMTIuODFMMywxNC4wN0wxMiwyMS4wN0wxNi45NSwxNy4yMkwyMC43MywyMUwyMiwxOS43M0wzLjI3LDFNMTkuMzYsMTAuMjdMMjEsOUwxMiwyTDkuMDksNC4yN0wxNi45NiwxMi4xNUwxOS4zNiwxMC4yN00xOS44MSwxNUwyMSwxNC4wN0wxOS41NywxMi42NEwxOC4zOCwxMy41NkwxOS44MSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNPZmZPdXRsaW5lID0gXCJNMTIsNC41M0wxMC44Myw1LjQ0TDkuNDEsNEwxMiwyTDIxLDlMMTcuMjgsMTEuODlMMTUuODUsMTAuNDdMMTcuNzQsOUwxMiw0LjUzTTIxLDE0LjA3TDIwLjEzLDE0Ljc1TDE4LjcsMTMuMzJMMTkuMzcsMTIuOEwyMSwxNC4wN00zLjQxLDAuODZMMjIuMTQsMTkuNTlMMjAuNzMsMjFMMTYuOTUsMTcuMjJMMTIsMjEuMDdMMywxNC4wN0w0LjYyLDEyLjgxTDEyLDE4LjU0TDE1LjUsMTUuNzlMMTQuMSwxNC4zN0wxMiwxNkwzLDlMNi4yMiw2LjVMMiwyLjI3TDMuNDEsMC44Nk0xMiwxMy40N0wxMi42NywxMi45NEw3LjY1LDcuOTJMNi4yNiw5TDEyLDEzLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc091dGxpbmUgPSBcIk0xMiwxOC41NEwxOS4zNywxMi44TDIxLDE0LjA3TDEyLDIxLjA3TDMsMTQuMDdMNC42MiwxMi44MUwxMiwxOC41NE0xMiwxNkwzLDlMMTIsMkwyMSw5TDEyLDE2TTEyLDQuNTNMNi4yNiw5TDEyLDEzLjQ3TDE3Ljc0LDlMMTIsNC41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNQbHVzID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTEsMTZMMiw5TDExLDJMMjAsOUwxMSwxNk0xMSwxOC41NEwxMiwxNy43NVYxOEMxMiwxOC43MSAxMi4xMiwxOS4zOSAxMi4zNSwyMEwxMSwyMS4wN0wyLDE0LjA3TDMuNjIsMTIuODFMMTEsMTguNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF5ZXJzUmVtb3ZlID0gXCJNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhNMTEsMTZMMiw5TDExLDJMMjAsOUwxMSwxNk0xMSwxOC41NEwxMiwxNy43NVYxOEMxMiwxOC43MSAxMi4xMiwxOS4zOSAxMi4zNSwyMEwxMSwyMS4wN0wyLDE0LjA3TDMuNjIsMTIuODFMMTEsMTguNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGF5ZXJzU2VhcmNoID0gXCJNMTkuMzEgMTguOUMxOS43NSAxOC4yMSAyMCAxNy4zOCAyMCAxNi41QzIwIDE0IDE4IDEyIDE1LjUgMTJTMTEgMTQgMTEgMTYuNSAxMyAyMSAxNS41IDIxQzE2LjM3IDIxIDE3LjE5IDIwLjc1IDE3Ljg4IDIwLjMyTDIxIDIzLjM5TDIyLjM5IDIyTDE5LjMxIDE4LjlNMTUuNSAxOUMxNC4xMiAxOSAxMyAxNy44OCAxMyAxNi41UzE0LjEyIDE0IDE1LjUgMTQgMTggMTUuMTIgMTggMTYuNSAxNi44OCAxOSAxNS41IDE5TTkuNTkgMTkuMkwzIDE0LjA3TDQuNjIgMTIuODFMOSAxNi4yMkM5IDE2LjMyIDkgMTYuNDEgOSAxNi41QzkgMTcuNDYgOS4yMiAxOC4zOCA5LjU5IDE5LjJNNC42MyAxMC4yN0wzIDlMMTIgMkwyMSA5TDE5LjM2IDEwLjI3TDE4LjY1IDEwLjgyQzE3LjcyIDEwLjMgMTYuNjQgMTAgMTUuNSAxMEMxMi43OSAxMCAxMC40NiAxMS42OCA5LjUgMTQuMDVMNC42MyAxMC4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMYXllcnNTZWFyY2hPdXRsaW5lID0gXCJNMTkuMzEgMTguOUMxOS43NSAxOC4yMSAyMCAxNy4zOCAyMCAxNi41QzIwIDE0IDE4IDEyIDE1LjUgMTJTMTEgMTQgMTEgMTYuNSAxMyAyMSAxNS41IDIxQzE2LjM3IDIxIDE3LjE5IDIwLjc1IDE3Ljg4IDIwLjMyTDIxIDIzLjM5TDIyLjM5IDIyTDE5LjMxIDE4LjlNMTUuNSAxOUMxNC4xMiAxOSAxMyAxNy44OCAxMyAxNi41UzE0LjEyIDE0IDE1LjUgMTQgMTggMTUuMTIgMTggMTYuNSAxNi44OCAxOSAxNS41IDE5TTkuNTkgMTkuMkwzIDE0LjA3TDQuNjIgMTIuODFMOSAxNi4yMkM5IDE2LjMyIDkgMTYuNDEgOSAxNi41QzkgMTcuNDYgOS4yMiAxOC4zOCA5LjU5IDE5LjJNOS41IDE0LjA0TDMgOUwxMiAyTDIxIDlMMTguNjYgMTAuODJDMTcuOTYgMTAuNDQgMTcuMTkgMTAuMTggMTYuMzcgMTAuMDdMMTcuNzQgOUwxMiA0LjUzTDYuMjYgOUwxMC41MyAxMi4zMkMxMC4xIDEyLjg0IDkuNzQgMTMuNDIgOS41IDE0LjA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc1RyaXBsZSA9IFwiTTEyIDBMMyA3TDQuNjMgOC4yN0wxMiAxNEwxOS4zNiA4LjI3TDIxIDdMMTIgME0xOS4zNyAxMC43M0wxMiAxNi40N0w0LjYyIDEwLjc0TDMgMTJMMTIgMTlMMjEgMTJMMTkuMzcgMTAuNzNNMTkuMzcgMTUuNzNMMTIgMjEuNDdMNC42MiAxNS43NEwzIDE3TDEyIDI0TDIxIDE3TDE5LjM3IDE1LjczWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxheWVyc1RyaXBsZU91dGxpbmUgPSBcIk0xMiAxNi41NEwxOS4zNyAxMC44TDIxIDEyLjA3TDEyIDE5LjA3TDMgMTIuMDdMNC42MiAxMC44MUwxMiAxNi41NE0xMiAxNEwzIDdMMTIgMEwyMSA3TDEyIDE0TTEyIDIuNTNMNi4yNiA3TDEyIDExLjQ3TDE3Ljc0IDdMMTIgMi41M00xMiAyMS40N0wxOS4zNyAxNS43M0wyMSAxN0wxMiAyNEwzIDE3TDQuNjIgMTUuNzRMMTIgMjEuNDdcIjtcclxuZXhwb3J0IHZhciBtZGlMZWFkUGVuY2lsID0gXCJNMTYuODQsMi43M0MxNi40NSwyLjczIDE2LjA3LDIuODggMTUuNzcsMy4xN0wxMy42NSw1LjI5TDE4Ljk1LDEwLjZMMjEuMDcsOC41QzIxLjY3LDcuODkgMjEuNjcsNi45NCAyMS4wNyw2LjM2TDE3LjksMy4xN0MxNy42LDIuODggMTcuMjIsMi43MyAxNi44NCwyLjczTTEyLjk0LDZMNC44NCwxNC4xMUw3LjQsMTQuMzlMNy41OCwxNi42OEw5Ljg2LDE2Ljg1TDEwLjE1LDE5LjQxTDE4LjI1LDExLjNNNC4yNSwxNS4wNEwyLjUsMjEuNzNMOS4yLDE5Ljk0TDguOTYsMTcuNzhMNi42NSwxNy42MUw2LjQ3LDE1LjI5XCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVhZiA9IFwiTTE3LDhDOCwxMCA1LjksMTYuMTcgMy44MiwyMS4zNEw1LjcxLDIyTDYuNjYsMTkuN0M3LjE0LDE5Ljg3IDcuNjQsMjAgOCwyMEMxOSwyMCAyMiwzIDIyLDNDMjEsNSAxNCw1LjI1IDksNi4yNUM0LDcuMjUgMiwxMS41IDIsMTMuNUMyLDE1LjUgMy43NSwxNy4yNSAzLjc1LDE3LjI1QzcsOCAxNyw4IDE3LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVhZk1hcGxlID0gXCJNMjEuNzksMTNMMTYsMTZMMTcsMThMMTMsMTcuMjVWMjFIMTFWMTcuMjVMNywxOEw4LDE2TDIuMjEsMTNMMy4yMSwxMS4yN0wxLjYxLDhMNS4yMSw3Ljc3TDYuMjEsNkw5LjYzLDkuOUw4LDVIMTBMMTIsMkwxNCw1SDE2TDE0LjM3LDkuOUwxNy43OSw2TDE4Ljc5LDcuNzNMMjIuMzksNy45NkwyMC43OSwxMS4xOUwyMS43OSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMZWFmTWFwbGVPZmYgPSBcIk0xOC4xMSAxNC45MUw4LjIgNUgxMEwxMiAyTDE0IDVIMTZMMTQuMzcgOS45TDE3Ljc5IDZMMTguNzkgNy43M0wyMi4zOSA3Ljk2TDIwLjc5IDExLjE5TDIxLjc5IDEzTDE4LjExIDE0LjkxTTIuMzkgMS43M0wxLjExIDNMNS40NSA3LjM0TDUuMjEgNy43N0wxLjYxIDhMMy4yMSAxMS4yN0wyLjIxIDEzTDggMTZMNyAxOEwxMSAxNy4yNVYyMUgxM1YxNy4yNUwxNS45MSAxNy44TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TDIuMzkgMS43M1pcIjtcclxuZXhwb3J0IHZhciBtZGlMZWFmT2ZmID0gXCJNMjAuODQgMjIuNzNMMTUuMTQgMTcuMDNDMTMuMjYgMTguNzkgMTAuOTIgMjAgOCAyMEM3LjY0IDIwIDcuMTQgMTkuODcgNi42NiAxOS43TDUuNzEgMjJMMy44MiAyMS4zNEM1LjE1IDE4LjAzIDYuNSAxNC4zMiA5LjY2IDExLjU1TDguNzcgMTAuNjZDNi43NiAxMi4wMyA0Ljg2IDE0LjEgMy43NSAxNy4yNUMzLjc1IDE3LjI1IDIgMTUuNSAyIDEzLjVDMiAxMiAzLjEyIDkuMzIgNS43MiA3LjYxTDEuMTEgM0wyLjM5IDEuNzNDMi4zOSAxLjczIDE2LjM5IDE1Ljc0IDE2LjM5IDE1Ljc0TDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTE3IDhDMTUuMzUgOC4zNyAxMy45MyA4Ljg4IDEyLjcgOS41TDE3LjUgMTQuMjlDMjAuODcgOS4zNSAyMiAzIDIyIDNDMjEuMDMgNC45NSAxNC4zNSA1LjI0IDkuMzggNi4xOEwxMi4xNSA4Ljk1QzE0LjgxIDggMTcgOCAxNyA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlYWsgPSBcIk02LDNIM1Y2QTMsMyAwIDAsMCA2LDNNMTQsM0gxMkE5LDkgMCAwLDEgMywxMlYxNEM5LjA4LDE0IDE0LDkuMDcgMTQsM00xMCwzSDhBNSw1IDAgMCwxIDMsOFYxMEE3LDcgMCAwLDAgMTAsM00xMCwyMUgxMkE5LDkgMCAwLDEgMjEsMTJWMTBBMTEsMTEgMCAwLDAgMTAsMjFNMTgsMjFIMjFWMThBMywzIDAgMCwwIDE4LDIxTTE0LDIxSDE2QTUsNSAwIDAsMSAyMSwxNlYxNEE3LDcgMCAwLDAgMTQsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVha09mZiA9IFwiTTEwLDNIOEM4LDMuMzcgNy45NiwzLjcyIDcuODgsNC4wNkw5LjQ3LDUuNjVDOS44MSw0Ljg0IDEwLDMuOTQgMTAsM00zLDQuMjdMNS44NCw3LjExQzUuMDMsNy42NyA0LjA2LDggMyw4VjEwQzQuNjEsMTAgNi4wOSw5LjQ1IDcuMjcsOC41NEw4LjcsOS45N0M3LjE0LDExLjI0IDUuMTYsMTIgMywxMlYxNEM1LjcxLDE0IDguMTksMTMgMTAuMTEsMTEuMzhMMTIuNjEsMTMuODhDMTEsMTUuODEgMTAsMTguMjkgMTAsMjFIMTJDMTIsMTguODQgMTIuNzYsMTYuODYgMTQuMDMsMTUuMzFMMTUuNDYsMTYuNzRDMTQuNTUsMTcuOTEgMTQsMTkuMzkgMTQsMjFIMTZDMTYsMTkuOTQgMTYuMzMsMTguOTcgMTYuODksMTguMTZMMTkuNzMsMjFMMjEsMTkuNzNMNC4yNywzTDMsNC4yN00xNCwzSDEyQzEyLDQuNSAxMS42Myw1LjkxIDExLDcuMTZMMTIuNDQsOC42MkMxMy40Miw3IDE0LDUuMDYgMTQsM00xOS45NCwxNi4xMkMyMC4yOCwxNi4wNCAyMC42MywxNiAyMSwxNlYxNEMyMC4wNiwxNCAxOS4xNiwxNC4xOSAxOC4zNCwxNC41TDE5Ljk0LDE2LjEyTTE1LjM4LDExLjU2TDE2Ljg0LDEzQzE4LjA5LDEyLjM3IDE5LjUsMTIgMjEsMTJWMTBDMTguOTQsMTAgMTcsMTAuNTggMTUuMzgsMTEuNTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVkT2ZmID0gXCJNMTIsNkE0LDQgMCAwLDAgOCwxMFYxNkg2VjE4SDlWMjNIMTFWMThIMTNWMjNIMTVWMThIMThWMTZIMTZWMTBBNCw0IDAgMCwwIDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVkT24gPSBcIk0xMSwwVjRIMTNWMEgxMU0xOC4zLDIuMjlMMTUuMjQsNS4yOUwxNi42NCw2LjcxTDE5LjcsMy43MUwxOC4zLDIuMjlNNS43MSwyLjI5TDQuMjksMy43MUw3LjI5LDYuNzFMOC43MSw1LjI5TDUuNzEsMi4yOU0xMiw2QTQsNCAwIDAsMCA4LDEwVjE2SDZWMThIOVYyM0gxMVYxOEgxM1YyM0gxNVYxOEgxOFYxNkgxNlYxMEE0LDQgMCAwLDAgMTIsNk0yLDlWMTFINlY5SDJNMTgsOVYxMUgyMlY5SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlZE91dGxpbmUgPSBcIk0xMiw2QTQsNCAwIDAsMCA4LDEwVjE2SDZWMThIOVYyM0gxMVYxOEgxM1YyM0gxNVYxOEgxOFYxNkgxNlYxMEE0LDQgMCAwLDAgMTIsNk0xMiw4QTIsMiAwIDAsMSAxNCwxMFYxNUgxMFYxMEEyLDIgMCAwLDEgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlMZWRTdHJpcCA9IFwiTTIuODEsOC40NkwxNC44MywyMC41TDE1LjU0LDE5Ljc4TDE2Ljk1LDIxLjE5TDE4LjM2LDE5Ljc4TDE2Ljk1LDE4LjM2TDE4LjM2LDE2Ljk1TDE5Ljc4LDE4LjM2TDIxLjE5LDE2Ljk1TDE5Ljc4LDE1LjU0TDIwLjUsMTQuODNMOC40NiwyLjgxTDIuODEsOC40Nk01LjY0LDguNDZMOC40Niw1LjY0TDE3LjY2LDE0LjgzTDE0LjgzLDE3LjY2TDUuNjQsOC40Nk03LjA1LDguNDZMOC40Niw5Ljg4TDkuODgsOC40Nkw4LjQ2LDcuMDVMNy4wNSw4LjQ2TTkuMTcsMTAuNTlMMTAuNTksMTJMMTIsMTAuNTlMMTAuNTksOS4xN0w5LjE3LDEwLjU5TTExLjI5LDEyLjcxTDEyLjcxLDE0LjEyTDE0LjEyLDEyLjcxTDEyLjcxLDExLjI5TDExLjI5LDEyLjcxTTEzLjQxLDE0LjgzTDE0LjgzLDE2LjI0TDE2LjI0LDE0LjgzTDE0LjgzLDEzLjQxTDEzLjQxLDE0LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlZFN0cmlwVmFyaWFudCA9IFwiTTIuOTUgM0wyIDYuOTFMMTkuMzQgMTEuMjVMMjAuMjkgNy4zNEwyLjk1IDNNNi4wOSA2Ljg5TDQuMTYgNi40MUw0LjY0IDQuNDZMNi41NyA0Ljk0TDYuMDkgNi44OU05Ljk0IDcuODZMOCA3LjM4TDguNSA1LjQyTDEwLjQyIDUuOTFMOS45NCA3Ljg2TTEzLjggOC44MkwxMS44NyA4LjM0TDEyLjM1IDYuMzlMMTQuMjcgNi44N0wxMy44IDguODJNMTcuNjUgOS43OUwxNS43MiA5LjMxTDE2LjIgNy4zNUwxOC4xMyA3Ljg0TDE3LjY1IDkuNzlNNC42NiAxMi43NUwzLjcxIDE2LjY2TDIxLjA1IDIxTDIyIDE3LjFMNC42NiAxMi43NU03LjggMTYuNjVMNS44OCAxNi4xNkw2LjM1IDE0LjIxTDguMjggMTQuNjlMNy44IDE2LjY1TTExLjY1IDE3LjYxTDkuNzMgMTcuMTNMMTAuMiAxNS4xOEwxMi4xMyAxNS42NkwxMS42NSAxNy42MU0xNS41IDE4LjU4TDEzLjU4IDE4LjA5TDE0LjA2IDE2LjE0TDE2IDE2LjYyTDE1LjUgMTguNThNMTkuMzYgMTkuNTRMMTcuNDMgMTkuMDZMMTcuOTEgMTcuMTFMMTkuODQgMTcuNTlMMTkuMzYgMTkuNTRNNi4yNSAxMi4xMUwxMSAxMC4yTDE3Ljc1IDExLjg5TDEzIDEzLjhMNi4yNSAxMi4xMVpcIjtcclxuZXhwb3J0IHZhciBtZGlMZWRWYXJpYW50T2ZmID0gXCJNMTIsM0MxMC4wNSwzIDguNDMsNC40IDguMDgsNi4yNUwxNi44MiwxNUgxOFYxM0gxNlY3QTQsNCAwIDAsMCAxMiwzTTMuMjgsNEwyLDUuMjdMOCwxMS4yN1YxM0g2VjE1SDlWMjFIMTFWMTVIMTEuNzNMMTMsMTYuMjdWMjFIMTVWMTguMjdMMTguNzMsMjJMMjAsMjAuNzJMMTUsMTUuNzJMOCw4LjcyTDMuMjgsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlMZWRWYXJpYW50T24gPSBcIk0xMiwzQTQsNCAwIDAsMCA4LDdWMTNINlYxNUg5VjIxSDExVjE1SDEzVjIxSDE1VjE1SDE4VjEzSDE2VjdBNCw0IDAgMCwwIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVkVmFyaWFudE91dGxpbmUgPSBcIk0xMiwzQTQsNCAwIDAsMCA4LDdWMTNINlYxNUg5VjIxSDExVjE1SDEzVjIxSDE1VjE1SDE4VjEzSDE2VjdBNCw0IDAgMCwwIDEyLDNNMTIsNUEyLDIgMCAwLDEgMTQsN1YxMkgxMFY3QTIsMiAwIDAsMSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlZWsgPSBcIk0xMCAyVjUuNTVMMTIgNy41NUwxNCA1LjU1VjJIMTBNNi4zNCA0TDMuODcgNi41TDE1IDE3LjYyVjEyLjY3TDYuMzQgNE0xNy42NiA0TDEzLjA2IDguNjFMMTUuNTQgMTEuMDlMMjAuMTMgNi41TDE3LjY2IDRNOSAxMy43NFYyMEEyIDIgMCAwIDAgMTEgMjJIMTNBMiAyIDAgMCAwIDE1IDIwVjE5Ljc0TDEzIDE3Ljc0VjIwSDExVjE1Ljc0TDkgMTMuNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGVzc1RoYW4gPSBcIk0xOC41LDQuMTRMMTkuNSw1Ljg2TDguOTcsMTJMMTkuNSwxOC4xNEwxOC41LDE5Ljg2TDUsMTJMMTguNSw0LjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxlc3NUaGFuT3JFcXVhbCA9IFwiTTE4LjUsMi4yN0w1LDEwLjE0TDE4LjUsMThMMTkuNSwxNi4yN0w4Ljk3LDEwLjE0TDE5LjUsNEwxOC41LDIuMjdNNSwyMFYyMkgyMFYyMEg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpYnJhcnkgPSBcIk0xMiw4QTMsMyAwIDAsMCAxNSw1QTMsMyAwIDAsMCAxMiwyQTMsMyAwIDAsMCA5LDVBMywzIDAgMCwwIDEyLDhNMTIsMTEuNTRDOS42NCw5LjM1IDYuNSw4IDMsOFYxOUM2LjUsMTkgOS42NCwyMC4zNSAxMiwyMi41NEMxNC4zNiwyMC4zNSAxNy41LDE5IDIxLDE5VjhDMTcuNSw4IDE0LjM2LDkuMzUgMTIsMTEuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlicmFyeVNoZWx2ZXMgPSBcIk0xOS41LDlWMS41SDE2LjVWOUgxMy41VjEuNUgxMC41VjlINy41VjEuNUg0LjY1VjlIM1YxMC41SDIxVjlIMTkuNU0xOS41LDEzLjVIMTYuNVYyMUgxMy41VjEzLjVIMTAuNVYyMUg3LjVWMTMuNUg0LjY1VjIxSDNWMjIuNUgyMVYyMUgxOS41VjEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGljZW5zZSA9IFwiTTkgMTBBMy4wNCAzLjA0IDAgMCAxIDEyIDdBMy4wNCAzLjA0IDAgMCAxIDE1IDEwQTMuMDQgMy4wNCAwIDAgMSAxMiAxM0EzLjA0IDMuMDQgMCAwIDEgOSAxME0xMiAxOUwxNiAyMFYxNi45MkE3LjU0IDcuNTQgMCAwIDEgMTIgMThBNy41NCA3LjU0IDAgMCAxIDggMTYuOTJWMjBNMTIgNEE1Ljc4IDUuNzggMCAwIDAgNy43NiA1Ljc0QTUuNzggNS43OCAwIDAgMCA2IDEwQTUuNzggNS43OCAwIDAgMCA3Ljc2IDE0LjIzQTUuNzggNS43OCAwIDAgMCAxMiAxNkE1Ljc4IDUuNzggMCAwIDAgMTYuMjQgMTQuMjNBNS43OCA1Ljc4IDAgMCAwIDE4IDEwQTUuNzggNS43OCAwIDAgMCAxNi4yNCA1Ljc0QTUuNzggNS43OCAwIDAgMCAxMiA0TTIwIDEwQTguMDQgOC4wNCAwIDAgMSAxOS40MyAxMi44QTcuODQgNy44NCAwIDAgMSAxOCAxNS4yOFYyM0wxMiAyMUw2IDIzVjE1LjI4QTcuOSA3LjkgMCAwIDEgNCAxMEE3LjY4IDcuNjggMCAwIDEgNi4zMyA0LjM2QTcuNzMgNy43MyAwIDAgMSAxMiAyQTcuNzMgNy43MyAwIDAgMSAxNy42NyA0LjM2QTcuNjggNy42OCAwIDAgMSAyMCAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMaWZlYnVveSA9IFwiTTE5Ljc5LDE1LjQxQzIwLjc0LDEzLjI0IDIwLjc0LDEwLjc1IDE5Ljc5LDguNTlMMTcuMDUsOS44M0MxNy42NSwxMS4yMSAxNy42NSwxMi43OCAxNy4wNiwxNC4xN0wxOS43OSwxNS40MU0xNS40Miw0LjIxQzEzLjI1LDMuMjYgMTAuNzYsMy4yNiA4LjU5LDQuMjFMOS44Myw2Ljk0QzExLjIyLDYuMzUgMTIuNzksNi4zNSAxNC4xOCw2Ljk1TDE1LjQyLDQuMjFNNC4yMSw4LjU4QzMuMjYsMTAuNzYgMy4yNiwxMy4yNCA0LjIxLDE1LjQyTDYuOTUsMTQuMTdDNi4zNSwxMi43OSA2LjM1LDExLjIxIDYuOTUsOS44Mkw0LjIxLDguNThNOC41OSwxOS43OUMxMC43NiwyMC43NCAxMy4yNSwyMC43NCAxNS40MiwxOS43OEwxNC4xOCwxNy4wNUMxMi44LDE3LjY1IDExLjIyLDE3LjY1IDkuODQsMTcuMDZMOC41OSwxOS43OU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw4QTQsNCAwIDAsMCA4LDEyQTQsNCAwIDAsMCAxMiwxNkE0LDQgMCAwLDAgMTYsMTJBNCw0IDAgMCwwIDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRTd2l0Y2ggPSBcIk03LDFBMiwyIDAgMCwwIDUsM1YyMUEyLDIgMCAwLDAgNywyM0gxN0EyLDIgMCAwLDAgMTksMjFWM0EyLDIgMCAwLDAgMTcsMUg3TTcsM0gxN1YyMUg3VjNNOSw2VjE4SDE1VjZIOU0xMCw3SDE0VjExSDEwVjdNMTAsMTNIMTRWMTdIMTBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiID0gXCJNMTIsMkE3LDcgMCAwLDAgNSw5QzUsMTEuMzggNi4xOSwxMy40NyA4LDE0Ljc0VjE3QTEsMSAwIDAsMCA5LDE4SDE1QTEsMSAwIDAsMCAxNiwxN1YxNC43NEMxNy44MSwxMy40NyAxOSwxMS4zOCAxOSw5QTcsNyAwIDAsMCAxMiwyTTksMjFBMSwxIDAgMCwwIDEwLDIySDE0QTEsMSAwIDAsMCAxNSwyMVYyMEg5VjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkNmbCA9IFwiTTEwLjUgMkMxMS44OCAyIDEzIDMuMTIgMTMgNC41VjE0SDE0VjQuNDdDMTQgMy41NiAxMy42MyAyLjcgMTMgMi4wNUMxMy4xNyAyIDEzLjMzIDIgMTMuNSAyQzE0Ljg4IDIgMTYgMy4xMiAxNiA0LjVWMTRIMTdWMTdDMTcgMTcuNTUgMTYuNTUgMTggMTYgMThIOEM3LjQ1IDE4IDcgMTcuNTUgNyAxN1YxNEg4VjQuNUM4IDMuMTIgOS4xMiAyIDEwLjUgMk0xMC41IDRDMTAuMjIgNCAxMCA0LjIyIDEwIDQuNVYxNEgxMVY0LjVDMTEgNC4yMiAxMC43OCA0IDEwLjUgNE05IDIwSDE1VjIxQzE1IDIxLjU1IDE0LjU1IDIyIDE0IDIySDEwQzkuNDUgMjIgOSAyMS41NSA5IDIxVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkNmbE9mZiA9IFwiTTE0IDQuNDdDMTQgMy41NiAxMy42MyAyLjcgMTMgMi4wNUMxMy4xNyAyIDEzLjMzIDIgMTMuNSAyQzE0Ljg4IDIgMTYgMy4xMiAxNiA0LjVWMTRIMTdWMTUuMThMMTQgMTIuMThWNC41TDE0IDQuNDdNMTAgNC41QzEwIDQuMjIgMTAuMjIgNCAxMC41IDRTMTEgNC4yMiAxMSA0LjVWOS4xOEwxMyAxMS4xOFY0LjVDMTMgMy4xMiAxMS44OCAyIDEwLjUgMlM4IDMuMTIgOCA0LjVWNi4xOEwxMCA4LjE4VjQuNU05IDIxQzkgMjEuNTUgOS40NSAyMiAxMCAyMkgxNEMxNC41NSAyMiAxNSAyMS41NSAxNSAyMVYyMEg5VjIxTTIwIDIwLjcyTDE4LjczIDIyTDE0LjczIDE4SDhDNy40NSAxOCA3IDE3LjU1IDcgMTdWMTRIOFYxMS4yN0wyIDUuMjdMMy4yOCA0TDIwIDIwLjcyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkNmbFNwaXJhbCA9IFwiTTExIDJDMTAuODQgMiAxMC42OSAyLjAzIDEwLjU1IDIuMUw4LjU1IDMuMUM3LjU2IDMuNjYgOCA1IDkgNUM5LjE2IDUgOS4zMiA0Ljk1IDkuNDUgNC45TDExLjQ1IDMuOUMxMi40MyAzLjM2IDEyIDIgMTEgMk0xNSA0QzE0LjgzIDQgMTQuNjkgNC4wMyAxNC41NSA0LjFMOC41NSA3LjFDNy41NiA3LjY4IDggOSA5IDlDOS4xOCA5IDkuMzIgOC45NSA5LjQ1IDguOUwxNS40NSA1LjlDMTYuNDEgNS40MyAxNiA0IDE1IDRNMTUgOEMxNC44NCA4IDE0LjY5IDguMDMgMTQuNTUgOC4xTDguNyAxMS4wM0M4LjIgMTEuMjUgOCAxMS42IDggMTJWMTRIN1YxN0M3IDE3LjU1IDcuNDQgMTggOCAxOEgxNkMxNi41NSAxOCAxNyAxNy41NSAxNyAxN1YxNEgxNlYxM0MxNiAxMi40NCAxNS41NSAxMiAxNSAxMkMxNC40NSAxMiAxNCAxMi40NSAxNCAxM1YxNEgxMFYxMi42MkwxNS40NSA5LjlDMTYuNDIgOS4zNCAxNiA4IDE1IDhNOSAyMFYyMUM5IDIxLjU3IDkuNDYgMjIgMTAgMjJIMTRDMTQuNTYgMjIgMTUgMjEuNTUgMTUgMjFWMjBcIjtcclxuZXhwb3J0IHZhciBtZGlMaWdodGJ1bGJDZmxTcGlyYWxPZmYgPSBcIk0xNS40NSA5LjlMMTMuODggMTAuNjhMMTIuMzggOS4xOEwxNC41NSA4LjFDMTQuNjkgOC4wMyAxNC44NCA4IDE1IDhDMTYgOCAxNi40MiA5LjM0IDE1LjQ1IDkuOU0xMS4yMiA4TDE1LjQ1IDUuOUMxNi40MSA1LjQzIDE2IDQgMTUgNEMxNC44MyA0IDE0LjY5IDQuMDMgMTQuNTUgNC4xTDkuNzIgNi41TDExLjIyIDhNMjAuODQgMjIuNzNMMTYuMDkgMThIOEM3LjQ0IDE4IDcgMTcuNTUgNyAxN1YxNEg4VjEyQzggMTEuNiA4LjIgMTEuMjUgOC43IDExLjAzTDkgMTAuODhMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xMi4xMSAxNEwxMC41IDEyLjM4TDEwIDEyLjYyVjE0SDEyLjExTTkgMjFDOSAyMS41NyA5LjQ2IDIyIDEwIDIySDE0QzE0LjU2IDIyIDE1IDIxLjU1IDE1IDIxVjIwSDlWMjFNOSA1QzkuMTYgNSA5LjMyIDQuOTUgOS40NSA0LjlMMTEuNDUgMy45QzEyLjQzIDMuMzYgMTIgMiAxMSAyQzEwLjg0IDIgMTAuNjkgMi4wMyAxMC41NSAyLjFMOC41NSAzLjFDNy41NiAzLjY2IDggNSA5IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiR3JvdXAgPSBcIk0xNSAxNFYxNkExIDEgMCAwIDEgMTQgMTdIMTBBMSAxIDAgMCAxIDkgMTZWMTRBNSA1IDAgMSAxIDE1IDE0TTE0IDE4SDEwVjE5QTEgMSAwIDAgMCAxMSAyMEgxM0ExIDEgMCAwIDAgMTQgMTlNNyAxOVYxOEg1VjE5QTEgMSAwIDAgMCA2IDIwSDcuMTdBMi45MyAyLjkzIDAgMCAxIDcgMTlNNSAxMEE2Ljc5IDYuNzkgMCAwIDEgNS42OCA3QTQgNCAwIDAgMCA0IDE0LjQ1VjE2QTEgMSAwIDAgMCA1IDE3SDdWMTQuODhBNi45MiA2LjkyIDAgMCAxIDUgMTBNMTcgMThWMTlBMi45MyAyLjkzIDAgMCAxIDE2LjgzIDIwSDE4QTEgMSAwIDAgMCAxOSAxOVYxOE0xOC4zMiA3QTYuNzkgNi43OSAwIDAgMSAxOSAxMEE2LjkyIDYuOTIgMCAwIDEgMTcgMTQuODhWMTdIMTlBMSAxIDAgMCAwIDIwIDE2VjE0LjQ1QTQgNCAwIDAgMCAxOC4zMiA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkdyb3VwT2ZmID0gXCJNMjAuODQgMjIuNzNMMTguMDkgMjBDMTguMDYgMjAgMTguMDMgMjAgMTggMjBIMTYuODNDMTYuOTQgMTkuNjggMTcgMTkuMzQgMTcgMTlWMTguODlMMTQuNzUgMTYuNjRDMTQuNTcgMTYuODYgMTQuMzEgMTcgMTQgMTdIMTBDOS40NSAxNyA5IDE2LjU1IDkgMTZWMTRDNy40IDEyLjggNi43NCAxMC44NCA3LjEyIDlMNS41IDcuNEM1LjE4IDguMjMgNSA5LjExIDUgMTBDNSAxMS44MyA1LjcyIDEzLjU4IDcgMTQuODhWMTdINUM0LjQ1IDE3IDQgMTYuNTUgNCAxNlYxNC40NUMyLjg2IDEzLjc5IDIuMTIgMTIuNjIgMiAxMS4zMUMxLjg1IDkuMjcgMy4yNSA3LjUgNS4yIDcuMDlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xNSA2QzEzLjIyIDQuNjcgMTAuODYgNC43MiA5LjEzIDUuOTNMMTYuMDggMTIuODhDMTcuNjMgMTAuNjcgMTcuMTcgNy42MyAxNSA2TTE5Ljc5IDE2LjU5QzE5LjkxIDE2LjQyIDIwIDE2LjIyIDIwIDE2VjE0LjQ1QzIxLjkxIDEzLjM0IDIyLjU3IDEwLjkgMjEuNDYgOUMyMC44IDcuODUgMTkuNjMgNy4xMSAxOC4zMiA3QzE4Ljc3IDcuOTQgMTkgOC45NiAxOSAxMEMxOSAxMS41NyAxOC40NyAxMy4wOSAxNy41IDE0LjMxTDE5Ljc5IDE2LjU5TTEwIDE5QzEwIDE5LjU1IDEwLjQ1IDIwIDExIDIwSDEzQzEzLjU1IDIwIDE0IDE5LjU1IDE0IDE5VjE4SDEwVjE5TTcgMThINVYxOUM1IDE5LjU1IDUuNDUgMjAgNiAyMEg3LjE3QzcuMDYgMTkuNjggNyAxOS4zNCA3IDE5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkdyb3VwT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNS4yIDcuMDlDMy4yNSA3LjUgMS44NSA5LjI3IDIgMTEuMzFDMi4xMiAxMi42MiAyLjg2IDEzLjc5IDQgMTQuNDVWMTZDNCAxNi41NSA0LjQ1IDE3IDUgMTdIN1YxNC44OEM1LjcyIDEzLjU4IDUgMTEuODMgNSAxMEM1IDkuMTEgNS4xOCA4LjIzIDUuNSA3LjRMNy4xMiA5QzYuNzQgMTAuODQgNy40IDEyLjggOSAxNFYxNkM5IDE2LjU1IDkuNDUgMTcgMTAgMTdIMTRDMTQuMzEgMTcgMTQuNTcgMTYuODYgMTQuNzUgMTYuNjRMMTcgMTguODlWMTlDMTcgMTkuMzQgMTYuOTQgMTkuNjggMTYuODMgMjBIMThDMTguMDMgMjAgMTguMDYgMjAgMTguMDkgMjBMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNOS4yMyAxMS4xMkwxMC44NyAxMi43NkMxMC4xMSAxMi40NiA5LjUzIDExLjg2IDkuMjMgMTEuMTJNMTMgMTVIMTFWMTIuODlMMTMgMTQuODlWMTVNMTAuNTcgNy4zN0w5LjEzIDUuOTNDMTAuODYgNC43MiAxMy4yMiA0LjY3IDE1IDZDMTYuMjYgNi45NCAxNyA4LjQzIDE3IDEwQzE3IDExLjA1IDE2LjY3IDEyLjA1IDE2LjA4IDEyLjg4TDE0LjYzIDExLjQzQzE0Ljg2IDExIDE1IDEwLjUgMTUgMTBDMTUgOC4zNCAxMy42NyA3IDEyIDdDMTEuNSA3IDExIDcuMTQgMTAuNTcgNy4zN00xNy41IDE0LjMxQzE4LjQ3IDEzLjA5IDE5IDExLjU3IDE5IDEwQzE5IDguOTYgMTguNzcgNy45NCAxOC4zMiA3QzE5LjYzIDcuMTEgMjAuOCA3Ljg1IDIxLjQ2IDlDMjIuNTcgMTAuOSAyMS45MSAxMy4zNCAyMCAxNC40NVYxNkMyMCAxNi4yMiAxOS45MSAxNi40MiAxOS43OSAxNi41OUwxNy41IDE0LjMxTTEwIDE4SDE0VjE5QzE0IDE5LjU1IDEzLjU1IDIwIDEzIDIwSDExQzEwLjQ1IDIwIDEwIDE5LjU1IDEwIDE5VjE4TTcgMTlDNyAxOS4zNCA3LjA2IDE5LjY4IDcuMTcgMjBINkM1LjQ1IDIwIDUgMTkuNTUgNSAxOVYxOEg3VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYkdyb3VwT3V0bGluZSA9IFwiTTcgMTlBMi45MyAyLjkzIDAgMCAwIDcuMTcgMjBINkExIDEgMCAwIDEgNSAxOVYxOEg3TTEwIDE5QTEgMSAwIDAgMCAxMSAyMEgxM0ExIDEgMCAwIDAgMTQgMTlWMThIMTBNNCAxNkExIDEgMCAwIDAgNSAxN0g3VjE0Ljg4QTYuOTIgNi45MiAwIDAgMSA1IDEwQTYuNzkgNi43OSAwIDAgMSA1LjY4IDdBNCA0IDAgMCAwIDQgMTQuNDVNMTcgMTlBMi45MyAyLjkzIDAgMCAxIDE2LjgzIDIwSDE4QTEgMSAwIDAgMCAxOSAxOVYxOEgxN00xNyAxMEE1IDUgMCAwIDEgMTUgMTRWMTZBMSAxIDAgMCAxIDE0IDE3SDEwQTEgMSAwIDAgMSA5IDE2VjE0QTUgNSAwIDEgMSAxNyAxME0xNSAxMEEzIDMgMCAxIDAgMTEgMTIuODJWMTVIMTNWMTIuODJBMyAzIDAgMCAwIDE1IDEwTTE4LjMyIDdBNi43OSA2Ljc5IDAgMCAxIDE5IDEwQTYuOTIgNi45MiAwIDAgMSAxNyAxNC44OFYxN0gxOUExIDEgMCAwIDAgMjAgMTZWMTQuNDVBNCA0IDAgMCAwIDE4LjMyIDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiTXVsdGlwbGUgPSBcIk0xNyAxNlYxOEMxNyAxOC41NSAxNi41MyAxOSAxNiAxOUgxMkMxMS40MiAxOSAxMSAxOC41NSAxMSAxOFYxNkM4Ljc3IDE0LjM0IDguMzIgMTEuMjEgMTAgOVMxNC43NyA2LjM0IDE3IDggMTkuNjMgMTIuNzkgMTggMTVDMTcuNjkgMTUuMzggMTcuMzUgMTUuNzIgMTcgMTZNMTYgMjBIMTJWMjFDMTIgMjEuNTUgMTIuNDIgMjIgMTMgMjJIMTVDMTUuNTMgMjIgMTYgMjEuNTUgMTYgMjFNNy42NiAxNUg3VjE2QzcgMTYuNTUgNy40MiAxNyA4IDE3SDlWMTYuODhDOC40NCAxNi4zMyA4IDE1LjcgNy42NiAxNU0xMy41OCA1QzEyLjQ2IDIuNDcgOS41IDEuMzMgNyAyLjQ1UzMuMzEgNi41IDQuNDMgOS4wNEM0Ljc3IDkuODEgNS4zIDEwLjUgNiAxMVYxM0M2IDEzLjU1IDYuNDIgMTQgNyAxNEg3LjI4QzcuMDcgMTMuMzUgNi45NyAxMi42OCA3IDEyQzYuOTcgOC4yOSA5Ljg3IDUuMjEgMTMuNTggNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMaWdodGJ1bGJNdWx0aXBsZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE2Ljc0IDE4LjYzQzE2LjU1IDE4Ljg1IDE2LjI5IDE5IDE2IDE5SDEyQzExLjQyIDE5IDExIDE4LjU1IDExIDE4VjE2QzkuMzcgMTQuOCA4LjcxIDEyLjgyIDkuMSAxMUw3LjUgOS4zOUM3LjE3IDEwLjIgNi45NyAxMS4wOCA3IDEyQzYuOTcgMTIuNjggNy4wNyAxMy4zNSA3LjI4IDE0SDdDNi40MiAxNCA2IDEzLjU1IDYgMTNWMTFDNS4zIDEwLjUgNC43NyA5LjgxIDQuNDMgOS4wNEM0IDguMDUgMy45MSA3IDQuMTIgNkwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTEzLjU4IDVDMTIuNDYgMi40NyA5LjUgMS4zMyA3IDIuNDVDNi42OCAyLjU4IDYuMzkgMi43NSA2LjEzIDIuOTNMOS42NyA2LjQ3QzEwLjc2IDUuNjMgMTIuMSA1LjA4IDEzLjU4IDVNMTguMDYgMTQuODZDMTkuNiAxMi42NiAxOS4xNCA5LjYyIDE3IDhDMTUuMiA2LjY3IDEyLjg0IDYuNzIgMTEuMTIgNy45MkwxOC4wNiAxNC44Nk0xMiAyMUMxMiAyMS41NSAxMi40MiAyMiAxMyAyMkgxNUMxNS41MyAyMiAxNiAyMS41NSAxNiAyMVYyMEgxMlYyMU03IDE1VjE2QzcgMTYuNTUgNy40MiAxNyA4IDE3SDlWMTYuODhDOC40MyAxNi4zMyA4IDE1LjcgNy42NiAxNUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk11bHRpcGxlT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNC4xNCA2LjAzQzMuOTMgNyA0IDguMDUgNC40NSA5LjA0QzQuNzkgOS44MSA1LjMzIDEwLjUgNiAxMVYxM0M2IDEzLjU1IDYuNDUgMTQgNyAxNEg3LjNDNy4xIDEzLjM1IDcgMTIuNjggNyAxMkM3IDExLjA4IDcuMTkgMTAuMjEgNy41IDkuNDFMOS4xMSAxMUM5LjA1IDExLjMzIDkgMTEuNjYgOSAxMkM5IDEzLjU3IDkuNzQgMTUuMDYgMTEgMTZWMThDMTEgMTguNTUgMTEuNDUgMTkgMTIgMTlIMTZDMTYuMzEgMTkgMTYuNTcgMTguODYgMTYuNzUgMTguNjRMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTEuMjMgMTMuMTJMMTIuODcgMTQuNzZDMTIuMSAxNC40NCAxMS41MyAxMy44NSAxMS4yMyAxMy4xMk0xNSAxN0gxM1YxNC44OUwxNSAxNi44OVYxN005LjY5IDYuNUw2LjE0IDIuOTRDNi40MSAyLjc1IDYuNyAyLjU4IDcgMi40NEM5LjUzIDEuMzMgMTIuNSAyLjQ3IDEzLjYgNUMxMi4xMiA1LjA5IDEwLjc3IDUuNjMgOS42OSA2LjVNMTEuMTIgNy45MkMxMS45NCA3LjM1IDEyLjkzIDcgMTQgN0MxNS41NyA3IDE3LjA2IDcuNzQgMTggOUMxOS4zMyAxMC43OCAxOS4yOCAxMy4xNCAxOC4wNyAxNC44N0wxNi42MiAxMy40MkMxNi43IDEzLjI4IDE2Ljc3IDEzLjE0IDE2LjgzIDEzQzE3LjM4IDExLjQzIDE2LjU2IDkuNzIgMTUgOS4xNkMxNC4xNiA4Ljg3IDEzLjI5IDguOTcgMTIuNTcgOS4zN0wxMS4xMiA3LjkyTTcuNjggMTVDOCAxNS43IDguNDYgMTYuMzMgOSAxNi44OFYxN0g4QzcuNDUgMTcgNyAxNi41NSA3IDE2VjE1SDcuNjhNMTIgMjBIMTZWMjFDMTYgMjEuNTUgMTUuNTUgMjIgMTUgMjJIMTNDMTIuNDUgMjIgMTIgMjEuNTUgMTIgMjFWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiTXVsdGlwbGVPdXRsaW5lID0gXCJNMTIgMjFDMTIgMjEuNTUgMTIuNDUgMjIgMTMgMjJIMTVDMTUuNTUgMjIgMTYgMjEuNTUgMTYgMjFWMjBIMTJNMTQgN0MxMS4yNCA3IDkgOS4yNCA5IDEyQzkgMTMuNTcgOS43NCAxNS4wNiAxMSAxNlYxOEMxMSAxOC41NSAxMS40NSAxOSAxMiAxOUgxNkMxNi41NSAxOSAxNyAxOC41NSAxNyAxOFYxNkMxOS4yMSAxNC4zNCAxOS42NiAxMS4yMSAxOCA5QzE3LjA2IDcuNzQgMTUuNTcgNyAxNCA3TTE1IDE0LjgyVjE3SDEzVjE0LjgyQzExLjQ0IDE0LjI3IDEwLjYyIDEyLjU1IDExLjE3IDExQzExLjcyIDkuNDMgMTMuNDQgOC42MSAxNSA5LjE2QzE2LjU2IDkuNzIgMTcuMzggMTEuNDMgMTYuODMgMTNDMTYuNTMgMTMuODUgMTUuODUgMTQuNSAxNSAxNC44Mk03LjY4IDE1SDdWMTZDNyAxNi41NSA3LjQ1IDE3IDggMTdIOVYxNi44OEM4LjQ2IDE2LjMzIDggMTUuNyA3LjY4IDE1TTEzLjYgNUMxMi41IDIuNDcgOS41MyAxLjMzIDcgMi40NVMzLjM0IDYuNSA0LjQ1IDkuMDRDNC43OSA5LjgxIDUuMzMgMTAuNSA2IDExVjEzQzYgMTMuNTUgNi40NSAxNCA3IDE0SDcuM0M3LjEgMTMuMzUgNyAxMi42OCA3IDEyQzcgOC4yOSA5Ljg5IDUuMjEgMTMuNiA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk9mZiA9IFwiTTEyLDJDOS43NiwyIDcuNzgsMy4wNSA2LjUsNC42OEwxNi4zMSwxNC41QzE3Ljk0LDEzLjIxIDE5LDExLjI0IDE5LDlBNyw3IDAgMCwwIDEyLDJNMy4yOCw0TDIsNS4yN0w1LjA0LDguM0M1LDguNTMgNSw4Ljc2IDUsOUM1LDExLjM4IDYuMTksMTMuNDcgOCwxNC43NFYxN0ExLDEgMCAwLDAgOSwxOEgxNC43M0wxOC43MywyMkwyMCwyMC43MkwzLjI4LDRNOSwyMFYyMUExLDEgMCAwLDAgMTAsMjJIMTRBMSwxIDAgMCwwIDE1LDIxVjIwSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiT2ZmT3V0bGluZSA9IFwiTTEyLDJDOS43NiwyIDcuNzgsMy4wNSA2LjUsNC42OEw3LjkzLDYuMTFDOC44NCw0Ljg0IDEwLjMyLDQgMTIsNEE1LDUgMCAwLDEgMTcsOUMxNywxMC42OCAxNi4xNiwxMi4xNiAxNC44OSwxMy4wNkwxNi4zMSwxNC41QzE3Ljk0LDEzLjIxIDE5LDExLjI0IDE5LDlBNyw3IDAgMCwwIDEyLDJNMy4yOCw0TDIsNS4yN0w1LjA0LDguM0M1LDguNTMgNSw4Ljc2IDUsOUM1LDExLjM4IDYuMTksMTMuNDcgOCwxNC43NFYxN0ExLDEgMCAwLDAgOSwxOEgxNC43M0wxOC43MywyMkwyMCwyMC43MkwzLjI4LDRNNy4yMywxMC41TDEyLjczLDE2SDEwVjEzLjU4QzguNjgsMTMgNy42NiwxMS44OCA3LjIzLDEwLjVNOSwyMFYyMUExLDEgMCAwLDAgMTAsMjJIMTRBMSwxIDAgMCwwIDE1LDIxVjIwSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRidWxiT24gPSBcIk0xMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxNC4yMiAxNi43OSwxNi4xNiAxNSwxNy4yVjE5QTEsMSAwIDAsMSAxNCwyMEgxMEExLDEgMCAwLDEgOSwxOVYxNy4yQzcuMjEsMTYuMTYgNiwxNC4yMiA2LDEyQTYsNiAwIDAsMSAxMiw2TTE0LDIxVjIyQTEsMSAwIDAsMSAxMywyM0gxMUExLDEgMCAwLDEgMTAsMjJWMjFIMTRNMjAsMTFIMjNWMTNIMjBWMTFNMSwxMUg0VjEzSDFWMTFNMTMsMVY0SDExVjFIMTNNNC45MiwzLjVMNy4wNSw1LjY0TDUuNjMsNy4wNUwzLjUsNC45M0w0LjkyLDMuNU0xNi45NSw1LjYzTDE5LjA3LDMuNUwyMC41LDQuOTNMMTguMzcsNy4wNUwxNi45NSw1LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk9uT3V0bGluZSA9IFwiTTIwLDExSDIzVjEzSDIwVjExTTEsMTFINFYxM0gxVjExTTEzLDFWNEgxMVYxSDEzTTQuOTIsMy41TDcuMDUsNS42NEw1LjYzLDcuMDVMMy41LDQuOTNMNC45MiwzLjVNMTYuOTUsNS42M0wxOS4wNywzLjVMMjAuNSw0LjkzTDE4LjM3LDcuMDVMMTYuOTUsNS42M00xMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxNC4yMiAxNi43OSwxNi4xNiAxNSwxNy4yVjE5QTEsMSAwIDAsMSAxNCwyMEgxMEExLDEgMCAwLDEgOSwxOVYxNy4yQzcuMjEsMTYuMTYgNiwxNC4yMiA2LDEyQTYsNiAwIDAsMSAxMiw2TTE0LDIxVjIyQTEsMSAwIDAsMSAxMywyM0gxMUExLDEgMCAwLDEgMTAsMjJWMjFIMTRNMTEsMThIMTNWMTUuODdDMTQuNzMsMTUuNDMgMTYsMTMuODYgMTYsMTJBNCw0IDAgMCwwIDEyLDhBNCw0IDAgMCwwIDgsMTJDOCwxMy44NiA5LjI3LDE1LjQzIDExLDE1Ljg3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0YnVsYk91dGxpbmUgPSBcIk0xMiwyQTcsNyAwIDAsMSAxOSw5QzE5LDExLjM4IDE3LjgxLDEzLjQ3IDE2LDE0Ljc0VjE3QTEsMSAwIDAsMSAxNSwxOEg5QTEsMSAwIDAsMSA4LDE3VjE0Ljc0QzYuMTksMTMuNDcgNSwxMS4zOCA1LDlBNyw3IDAgMCwxIDEyLDJNOSwyMVYyMEgxNVYyMUExLDEgMCAwLDEgMTQsMjJIMTBBMSwxIDAgMCwxIDksMjFNMTIsNEE1LDUgMCAwLDAgNyw5QzcsMTEuMDUgOC4yMywxMi44MSAxMCwxMy41OFYxNkgxNFYxMy41OEMxNS43NywxMi44MSAxNywxMS4wNSAxNyw5QTUsNSAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0aG91c2UgPSBcIk04LDEwVjhIOVY0SDhWM0wxMiwxTDE2LDNWNEgxNVY4SDE2VjEwSDE0Ljc0TDguNDQsMTMuNjRMOSwxMEg4TTEzLDhWNEgxMVY4SDEzTTcsMjNMNy4wNCwyMi43NkwxNi4xNSwxNy41TDE2LjY3LDIwLjg4TDEzLDIzSDdNOC4wNSwxNi4xN0wxNS4zMSwxMkwxNS44MywxNS4zN0w3LjQzLDIwLjIyTDguMDUsMTYuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRob3VzZU9uID0gXCJNMSwxMFYyTDEwLDVWN0wxLDEwTTgsMTBWOEgxM1Y0SDhWM0wxMiwxTDE2LDNWNEgxNVY4SDE2VjEwSDE0Ljc0TDguNDQsMTMuNjRMOSwxMEg4TTcsMjNMNy4wNCwyMi43NkwxNi4xNSwxNy41TDE2LjY3LDIwLjg4TDEzLDIzSDdNOC4wNSwxNi4xN0wxNS4zMSwxMkwxNS44MywxNS4zN0w3LjQzLDIwLjIyTDguMDUsMTYuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlnaHRuaW5nQm9sdCA9IFwiTTExIDE1SDZMMTMgMVY5SDE4TDExIDIzVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpZ2h0bmluZ0JvbHRPdXRsaW5lID0gXCJNMTEgOS40N1YxMUgxNC43NkwxMyAxNC41M1YxM0g5LjI0TDExIDkuNDdNMTMgMUw2IDE1SDExVjIzTDE4IDlIMTNWMVpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5nZXJpZSA9IFwiTTIyIDdIMjBWMkgxOFY0LjM0TDEyIDYuOTFMNiA0LjM0VjJINFY3SDJWOUg0LjA1QzQuMyAxMS4yNSA2LjE5IDEzIDguNSAxM0M5LjkyIDEzIDExLjE4IDEyLjMzIDEyIDExLjNDMTIuODMgMTIuMzMgMTQuMDggMTMgMTUuNSAxM0MxNy44MSAxMyAxOS43IDExLjI1IDE5Ljk1IDlIMjJWN004LjUgMTFDNy4xMiAxMSA2IDkuODggNiA4LjVWNi41TDExIDguNjVDMTAuOSA5Ljk2IDkuODMgMTEgOC41IDExTTE4IDguNUMxOCA5Ljg4IDE2Ljg4IDExIDE1LjUgMTFDMTQuMTcgMTEgMTMuMSA5Ljk2IDEzIDguNjVMMTggNi41VjguNU0yIDE1VjE3SDNDNS45NyAxNyA4LjQzIDE5LjE3IDguOTEgMjJIMTUuMDlDMTUuNTcgMTkuMTcgMTguMDMgMTcgMjEgMTdIMjJWMTVIMk0xMy41OSAyMEgxMC40MUM5Ljk0IDE4Ljg0IDkuMjEgMTcuODIgOC4yOSAxN0gxNS43MUMxNC43OSAxNy44MiAxNC4wNiAxOC44NCAxMy41OSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rID0gXCJNMy45LDEyQzMuOSwxMC4yOSA1LjI5LDguOSA3LDguOUgxMVY3SDdBNSw1IDAgMCwwIDIsMTJBNSw1IDAgMCwwIDcsMTdIMTFWMTUuMUg3QzUuMjksMTUuMSAzLjksMTMuNzEgMy45LDEyTTgsMTNIMTZWMTFIOFYxM00xNyw3SDEzVjguOUgxN0MxOC43MSw4LjkgMjAuMSwxMC4yOSAyMC4xLDEyQzIwLjEsMTMuNzEgMTguNzEsMTUuMSAxNywxNS4xSDEzVjE3SDE3QTUsNSAwIDAsMCAyMiwxMkE1LDUgMCAwLDAgMTcsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rQm94ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTEsMTZIMTBDOC4zOSwxNiA2LDE0Ljk0IDYsMTJDNiw5LjA3IDguMzksOCAxMCw4SDExVjEwSDEwQzkuNTQsMTAgOCwxMC4xNyA4LDEyQzgsMTMuOSA5LjY3LDE0IDEwLDE0SDExVjE2TTE1LDExVjEzSDlWMTFIMTVNMTQsMTZIMTNWMTRIMTRDMTQuNDYsMTQgMTYsMTMuODMgMTYsMTJDMTYsMTAuMSAxNC4zMywxMCAxNCwxMEgxM1Y4SDE0QzE1LjYxLDggMTgsOS4wNyAxOCwxMkMxOCwxNC45NCAxNS42MSwxNiAxNCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rQm94T3V0bGluZSA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTE5LDE5SDVWNUgxOVYxOU0xMSwxNkgxMEM4LjM5LDE2IDYsMTQuOTQgNiwxMkM2LDkuMDcgOC4zOSw4IDEwLDhIMTFWMTBIMTBDOS41NCwxMCA4LDEwLjE3IDgsMTJDOCwxMy45IDkuNjcsMTQgMTAsMTRIMTFWMTZNMTQsMTZIMTNWMTRIMTRDMTQuNDYsMTQgMTYsMTMuODMgMTYsMTJDMTYsMTAuMSAxNC4zMywxMCAxNCwxMEgxM1Y4SDE0QzE1LjYxLDggMTgsOS4wNyAxOCwxMkMxOCwxNC45NCAxNS42MSwxNiAxNCwxNk0xNSwxM0g5VjExSDE1VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtCb3hWYXJpYW50ID0gXCJNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTMuOTQsMTQuODFMMTEuNzMsMTdDMTEuMDgsMTcuNjcgMTAuMjIsMTggOS4zNiwxOEM4LjUsMTggNy42NCwxNy42NyA3LDE3QzUuNjcsMTUuNzEgNS42NywxMy41OCA3LDEyLjI2TDguMzUsMTAuOUw4LjM0LDExLjVDOC4zMywxMiA4LjQxLDEyLjUgOC41NywxMi45NEw4LjYyLDEzLjA5TDguMjIsMTMuNUM3LjkxLDEzLjggNy43NCwxNC4yMSA3Ljc0LDE0LjY0QzcuNzQsMTUuMDcgNy45MSwxNS40NyA4LjIyLDE1Ljc4QzguODMsMTYuNCA5Ljg5LDE2LjQgMTAuNSwxNS43OEwxMi43LDEzLjU5QzEzLDEzLjI4IDEzLjE4LDEyLjg3IDEzLjE4LDEyLjQ0QzEzLjE4LDEyIDEzLDExLjYxIDEyLjcsMTEuM0MxMi41MywxMS4xNCAxMi40NCwxMC45MiAxMi40NCwxMC42OEMxMi40NCwxMC40NSAxMi41MywxMC4yMyAxMi43LDEwLjA2QzEzLjAzLDkuNzMgMTMuNjEsOS43NCAxMy45NCwxMC4wNkMxNC41NywxMC43IDE0LjkyLDExLjU0IDE0LjkyLDEyLjQ0QzE0LjkyLDEzLjM0IDE0LjU3LDE0LjE4IDEzLjk0LDE0LjgxTTE3LDExLjc0TDE1LjY2LDEzLjFWMTIuNUMxNS42NywxMiAxNS41OSwxMS41IDE1LjQzLDExLjA2TDE1LjM4LDEwLjkyTDE1Ljc4LDEwLjVDMTYuMDksMTAuMiAxNi4yNiw5Ljc5IDE2LjI2LDkuMzZDMTYuMjYsOC45MyAxNi4wOSw4LjUzIDE1Ljc4LDguMjJDMTUuMTcsNy42IDE0LjEsNy42MSAxMy41LDguMjJMMTEuMywxMC40MkMxMSwxMC43MiAxMC44MiwxMS4xMyAxMC44MiwxMS41NkMxMC44MiwxMiAxMSwxMi4zOSAxMS4zLDEyLjdDMTEuNDcsMTIuODYgMTEuNTYsMTMuMDggMTEuNTYsMTMuMzJDMTEuNTYsMTMuNTYgMTEuNDcsMTMuNzggMTEuMywxMy45NEMxMS4xMywxNC4xMSAxMC45MSwxNC4xOSAxMC42OCwxNC4xOUMxMC40NiwxNC4xOSAxMC4yMywxNC4xMSAxMC4wNiwxMy45NEM4Ljc1LDEyLjYzIDguNzUsMTAuNSAxMC4wNiw5LjE5TDEyLjI3LDdDMTMuNTgsNS42NyAxNS43MSw1LjY4IDE3LDdDMTcuNjUsNy42MiAxOCw4LjQ2IDE4LDkuMzZDMTgsMTAuMjYgMTcuNjUsMTEuMSAxNywxMS43NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rQm94VmFyaWFudE91dGxpbmUgPSBcIk0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xOSwxOUg1VjVIMTlWMTlNMTMuOTQsMTAuMDZDMTQuNTcsMTAuNyAxNC45MiwxMS41NCAxNC45MiwxMi40NEMxNC45MiwxMy4zNCAxNC41NywxNC4xOCAxMy45NCwxNC44MUwxMS43MywxN0MxMS4wOCwxNy42NyAxMC4yMiwxOCA5LjM2LDE4QzguNSwxOCA3LjY0LDE3LjY3IDcsMTdDNS42NywxNS43MSA1LjY3LDEzLjU4IDcsMTIuMjZMOC4zNSwxMC45TDguMzQsMTEuNUM4LjMzLDEyIDguNDEsMTIuNSA4LjU3LDEyLjk0TDguNjIsMTMuMDlMOC4yMiwxMy41QzcuOTEsMTMuOCA3Ljc0LDE0LjIxIDcuNzQsMTQuNjRDNy43NCwxNS4wNyA3LjkxLDE1LjQ3IDguMjIsMTUuNzhDOC44MywxNi40IDkuODksMTYuNCAxMC41LDE1Ljc4TDEyLjcsMTMuNTlDMTMsMTMuMjggMTMuMTgsMTIuODcgMTMuMTgsMTIuNDRDMTMuMTgsMTIgMTMsMTEuNjEgMTIuNywxMS4zQzEyLjUzLDExLjE0IDEyLjQ0LDEwLjkyIDEyLjQ0LDEwLjY4QzEyLjQ0LDEwLjQ1IDEyLjUzLDEwLjIzIDEyLjcsMTAuMDZDMTMuMDMsOS43MyAxMy42MSw5Ljc0IDEzLjk0LDEwLjA2TTE4LDkuMzZDMTgsMTAuMjYgMTcuNjUsMTEuMSAxNywxMS43NEwxNS42NiwxMy4xVjEyLjVDMTUuNjcsMTIgMTUuNTksMTEuNSAxNS40MywxMS4wNkwxNS4zOCwxMC45MkwxNS43OCwxMC41QzE2LjA5LDEwLjIgMTYuMjYsOS43OSAxNi4yNiw5LjM2QzE2LjI2LDguOTMgMTYuMDksOC41MyAxNS43OCw4LjIyQzE1LjE3LDcuNiAxNC4xLDcuNjEgMTMuNSw4LjIyTDExLjMsMTAuNDJDMTEsMTAuNzIgMTAuODIsMTEuMTMgMTAuODIsMTEuNTZDMTAuODIsMTIgMTEsMTIuMzkgMTEuMywxMi43QzExLjQ3LDEyLjg2IDExLjU2LDEzLjA4IDExLjU2LDEzLjMyQzExLjU2LDEzLjU2IDExLjQ3LDEzLjc4IDExLjMsMTMuOTRDMTEuMTMsMTQuMTEgMTAuOTEsMTQuMTkgMTAuNjgsMTQuMTlDMTAuNDYsMTQuMTkgMTAuMjMsMTQuMTEgMTAuMDYsMTMuOTRDOC43NSwxMi42MyA4Ljc1LDEwLjUgMTAuMDYsOS4xOUwxMi4yNyw3QzEzLjU4LDUuNjcgMTUuNzEsNS42OCAxNyw3QzE3LjY1LDcuNjIgMTgsOC40NiAxOCw5LjM2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtMb2NrID0gXCJNMjMgMTZWMTUuNUEyLjUgMi41IDAgMCAwIDE4IDE1LjVWMTZBMSAxIDAgMCAwIDE3IDE3VjIxQTEgMSAwIDAgMCAxOCAyMkgyM0ExIDEgMCAwIDAgMjQgMjFWMTdBMSAxIDAgMCAwIDIzIDE2TTIyIDE2SDE5VjE1LjVBMS41IDEuNSAwIDAgMSAyMiAxNS41TTcgOC45SDExVjdIN0E1IDUgMCAwIDAgNyAxN0gxMVYxNS4xSDdBMy4xIDMuMSAwIDAgMSA3IDguOU04IDExVjEzSDE2VjExTTEzIDE1LjFWMTdIMTVWMTUuMU0xNyA3SDEzVjguOUgxN0EzLjA5IDMuMDkgMCAwIDEgMTkuOTQgMTFBNS4xMiA1LjEyIDAgMCAxIDIwLjUgMTFIMjEuOUE1IDUgMCAwIDAgMTcgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMaW5rT2ZmID0gXCJNMTcsN0gxM1Y4LjlIMTdDMTguNzEsOC45IDIwLjEsMTAuMjkgMjAuMSwxMkMyMC4xLDEzLjQzIDE5LjEyLDE0LjYzIDE3Ljc5LDE1TDE5LjI1LDE2LjQ0QzIwLjg4LDE1LjYxIDIyLDEzLjk1IDIyLDEyQTUsNSAwIDAsMCAxNyw3TTE2LDExSDEzLjgxTDE1LjgxLDEzSDE2VjExTTIsNC4yN0w1LjExLDcuMzhDMy4yOSw4LjEyIDIsOS45MSAyLDEyQTUsNSAwIDAsMCA3LDE3SDExVjE1LjFIN0M1LjI5LDE1LjEgMy45LDEzLjcxIDMuOSwxMkMzLjksMTAuNDEgNS4xMSw5LjEgNi42Niw4LjkzTDguNzMsMTFIOFYxM0gxMC43M0wxMywxNS4yN1YxN0gxNC43M0wxOC43NCwyMUwyMCwxOS43NEwzLjI3LDNMMiw0LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtQbHVzID0gXCJNNyw3SDExVjlIN0EzLDMgMCAwLDAgNCwxMkEzLDMgMCAwLDAgNywxNUgxMVYxN0g3QTUsNSAwIDAsMSAyLDEyQTUsNSAwIDAsMSA3LDdNMTcsN0E1LDUgMCAwLDEgMjIsMTJIMjBBMywzIDAgMCwwIDE3LDlIMTNWN0gxN004LDExSDE2VjEzSDhWMTFNMTcsMTJIMTlWMTVIMjJWMTdIMTlWMjBIMTdWMTdIMTRWMTVIMTdWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnQgPSBcIk0xMC41OSwxMy40MUMxMSwxMy44IDExLDE0LjQ0IDEwLjU5LDE0LjgzQzEwLjIsMTUuMjIgOS41NiwxNS4yMiA5LjE3LDE0LjgzQzcuMjIsMTIuODggNy4yMiw5LjcxIDkuMTcsNy43NlY3Ljc2TDEyLjcxLDQuMjJDMTQuNjYsMi4yNyAxNy44MywyLjI3IDE5Ljc4LDQuMjJDMjEuNzMsNi4xNyAyMS43Myw5LjM0IDE5Ljc4LDExLjI5TDE4LjI5LDEyLjc4QzE4LjMsMTEuOTYgMTguMTcsMTEuMTQgMTcuODksMTAuMzZMMTguMzYsOS44OEMxOS41NCw4LjcxIDE5LjU0LDYuODEgMTguMzYsNS42NEMxNy4xOSw0LjQ2IDE1LjI5LDQuNDYgMTQuMTIsNS42NEwxMC41OSw5LjE3QzkuNDEsMTAuMzQgOS40MSwxMi4yNCAxMC41OSwxMy40MU0xMy40MSw5LjE3QzEzLjgsOC43OCAxNC40NCw4Ljc4IDE0LjgzLDkuMTdDMTYuNzgsMTEuMTIgMTYuNzgsMTQuMjkgMTQuODMsMTYuMjRWMTYuMjRMMTEuMjksMTkuNzhDOS4zNCwyMS43MyA2LjE3LDIxLjczIDQuMjIsMTkuNzhDMi4yNywxNy44MyAyLjI3LDE0LjY2IDQuMjIsMTIuNzFMNS43MSwxMS4yMkM1LjcsMTIuMDQgNS44MywxMi44NiA2LjExLDEzLjY1TDUuNjQsMTQuMTJDNC40NiwxNS4yOSA0LjQ2LDE3LjE5IDUuNjQsMTguMzZDNi44MSwxOS41NCA4LjcxLDE5LjU0IDkuODgsMTguMzZMMTMuNDEsMTQuODNDMTQuNTksMTMuNjYgMTQuNTksMTEuNzYgMTMuNDEsMTAuNTlDMTMsMTAuMiAxMyw5LjU2IDEzLjQxLDkuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnRNaW51cyA9IFwiTTEwLjYgMTMuNEExIDEgMCAwIDEgOS4yIDE0LjhBNC44IDQuOCAwIDAgMSA5LjIgNy44TDEyLjcgNC4yQTUuMSA1LjEgMCAwIDEgMTkuOCA0LjJBNS4xIDUuMSAwIDAgMSAxOS44IDExLjNMMTguMyAxMi44QTYuNCA2LjQgMCAwIDAgMTcuOSAxMC40TDE4LjQgOS45QTMuMiAzLjIgMCAwIDAgMTguNCA1LjZBMy4yIDMuMiAwIDAgMCAxNC4xIDUuNkwxMC42IDkuMkEyLjkgMi45IDAgMCAwIDEwLjYgMTMuNE0yMyAxOFYyMEgxNVYxOE0xNi4yIDEzLjdBNC44IDQuOCAwIDAgMCAxNC44IDkuMkExIDEgMCAwIDAgMTMuNCAxMC42QTIuOSAyLjkgMCAwIDEgMTMuNCAxNC44TDkuOSAxOC40QTMuMiAzLjIgMCAwIDEgNS42IDE4LjRBMy4yIDMuMiAwIDAgMSA1LjYgMTQuMUw2LjEgMTMuN0E3LjMgNy4zIDAgMCAxIDUuNyAxMS4yTDQuMiAxMi43QTUuMSA1LjEgMCAwIDAgNC4yIDE5LjhBNS4xIDUuMSAwIDAgMCAxMS4zIDE5LjhMMTMuMSAxOEE2IDYgMCAwIDEgMTYuMiAxMy43WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpbmtWYXJpYW50T2ZmID0gXCJNMiw1LjI3TDMuMjgsNEwyMCwyMC43MkwxOC43MywyMkwxMy45LDE3LjE3TDExLjI5LDE5Ljc4QzkuMzQsMjEuNzMgNi4xNywyMS43MyA0LjIyLDE5Ljc4QzIuMjcsMTcuODMgMi4yNywxNC42NiA0LjIyLDEyLjcxTDUuNzEsMTEuMjJDNS43LDEyLjA0IDUuODMsMTIuODYgNi4xMSwxMy42NUw1LjY0LDE0LjEyQzQuNDYsMTUuMjkgNC40NiwxNy4xOSA1LjY0LDE4LjM2QzYuODEsMTkuNTQgOC43MSwxOS41NCA5Ljg4LDE4LjM2TDEyLjUsMTUuNzZMMTAuODgsMTQuMTVDMTAuODcsMTQuMzkgMTAuNzcsMTQuNjQgMTAuNTksMTQuODNDMTAuMiwxNS4yMiA5LjU2LDE1LjIyIDkuMTcsMTQuODNDOC4xMiwxMy43NyA3LjYzLDEyLjM3IDcuNzIsMTFMMiw1LjI3TTEyLjcxLDQuMjJDMTQuNjYsMi4yNyAxNy44MywyLjI3IDE5Ljc4LDQuMjJDMjEuNzMsNi4xNyAyMS43Myw5LjM0IDE5Ljc4LDExLjI5TDE4LjI5LDEyLjc4QzE4LjMsMTEuOTYgMTguMTcsMTEuMTQgMTcuODksMTAuMzZMMTguMzYsOS44OEMxOS41NCw4LjcxIDE5LjU0LDYuODEgMTguMzYsNS42NEMxNy4xOSw0LjQ2IDE1LjI5LDQuNDYgMTQuMTIsNS42NEwxMC43OSw4Ljk3TDkuMzgsNy41NUwxMi43MSw0LjIyTTEzLjQxLDkuMTdDMTMuOCw4Ljc4IDE0LjQ0LDguNzggMTQuODMsOS4xN0MxNi4yLDEwLjU0IDE2LjYxLDEyLjUgMTYuMDYsMTQuMjNMMTQuMjgsMTIuNDZDMTQuMjMsMTEuNzggMTMuOTQsMTEuMTEgMTMuNDEsMTAuNTlDMTMsMTAuMiAxMyw5LjU2IDEzLjQxLDkuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnRQbHVzID0gXCJNMTAuNiAxMy40QTEgMSAwIDAgMSA5LjIgMTQuOEE0LjggNC44IDAgMCAxIDkuMiA3LjhMMTIuNyA0LjJBNS4xIDUuMSAwIDAgMSAxOS44IDQuMkE1LjEgNS4xIDAgMCAxIDE5LjggMTEuM0wxOC4zIDEyLjhBNi40IDYuNCAwIDAgMCAxNy45IDEwLjRMMTguNCA5LjlBMy4yIDMuMiAwIDAgMCAxOC40IDUuNkEzLjIgMy4yIDAgMCAwIDE0LjEgNS42TDEwLjYgOS4yQTIuOSAyLjkgMCAwIDAgMTAuNiAxMy40TTIzIDE4VjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1SDIwVjE4TTE2LjIgMTMuN0E0LjggNC44IDAgMCAwIDE0LjggOS4yQTEgMSAwIDAgMCAxMy40IDEwLjZBMi45IDIuOSAwIDAgMSAxMy40IDE0LjhMOS45IDE4LjRBMy4yIDMuMiAwIDAgMSA1LjYgMTguNEEzLjIgMy4yIDAgMCAxIDUuNiAxNC4xTDYuMSAxMy43QTcuMyA3LjMgMCAwIDEgNS43IDExLjJMNC4yIDEyLjdBNS4xIDUuMSAwIDAgMCA0LjIgMTkuOEE1LjEgNS4xIDAgMCAwIDExLjMgMTkuOEwxMy4xIDE4QTYgNiAwIDAgMSAxNi4yIDEzLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua1ZhcmlhbnRSZW1vdmUgPSBcIk0xMC42IDEzLjRBMSAxIDAgMCAxIDkuMiAxNC44QTQuOCA0LjggMCAwIDEgOS4yIDcuOEwxMi43IDQuMkE1LjEgNS4xIDAgMCAxIDE5LjggNC4yQTUuMSA1LjEgMCAwIDEgMTkuOCAxMS4zTDE4LjMgMTIuOEE2LjQgNi40IDAgMCAwIDE3LjkgMTAuNEwxOC40IDkuOUEzLjIgMy4yIDAgMCAwIDE4LjQgNS42QTMuMiAzLjIgMCAwIDAgMTQuMSA1LjZMMTAuNiA5LjJBMi45IDIuOSAwIDAgMCAxMC42IDEzLjRNMTYuMiAxMy43QTQuOCA0LjggMCAwIDAgMTQuOCA5LjJBMSAxIDAgMCAwIDEzLjQgMTAuNkEyLjkgMi45IDAgMCAxIDEzLjQgMTQuOEw5LjkgMTguNEEzLjIgMy4yIDAgMCAxIDUuNiAxOC40QTMuMiAzLjIgMCAwIDEgNS42IDE0LjFMNi4xIDEzLjdBNy4zIDcuMyAwIDAgMSA1LjcgMTEuMkw0LjIgMTIuN0E1LjEgNS4xIDAgMCAwIDQuMiAxOS44QTUuMSA1LjEgMCAwIDAgMTEuMyAxOS44TDEzLjEgMThBNiA2IDAgMCAxIDE2LjIgMTMuN00yMS4xIDE1LjVMMTkgMTcuNkwxNi45IDE1LjVMMTUuNSAxNi45TDE3LjYgMTlMMTUuNSAyMS4xTDE2LjkgMjIuNUwxOSAyMC40TDIxLjEgMjIuNUwyMi41IDIxLjFMMjAuNCAxOUwyMi41IDE2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGlua2VkaW4gPSBcIk0xOSAzQTIgMiAwIDAgMSAyMSA1VjE5QTIgMiAwIDAgMSAxOSAyMUg1QTIgMiAwIDAgMSAzIDE5VjVBMiAyIDAgMCAxIDUgM0gxOU0xOC41IDE4LjVWMTMuMkEzLjI2IDMuMjYgMCAwIDAgMTUuMjQgOS45NEMxNC4zOSA5Ljk0IDEzLjQgMTAuNDYgMTIuOTIgMTEuMjRWMTAuMTNIMTAuMTNWMTguNUgxMi45MlYxMy41N0MxMi45MiAxMi44IDEzLjU0IDEyLjE3IDE0LjMxIDEyLjE3QTEuNCAxLjQgMCAwIDEgMTUuNzEgMTMuNTdWMTguNUgxOC41TTYuODggOC41NkExLjY4IDEuNjggMCAwIDAgOC41NiA2Ljg4QzguNTYgNS45NSA3LjgxIDUuMTkgNi44OCA1LjE5QTEuNjkgMS42OSAwIDAgMCA1LjE5IDYuODhDNS4xOSA3LjgxIDUuOTUgOC41NiA2Ljg4IDguNTZNOC4yNyAxOC41VjEwLjEzSDUuNVYxOC41SDguMjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTGludXggPSBcIk0xNC42Miw4LjM1QzE0LjIsOC42MyAxMi44Nyw5LjM5IDEyLjY3LDkuNTRDMTIuMjgsOS44NSAxMS45Miw5LjgzIDExLjUzLDkuNTNDMTEuMzMsOS4zNyAxMCw4LjYxIDkuNTgsOC4zNEM5LjEsOC4wMyA5LjEzLDcuNjQgOS42Niw3LjQyQzExLjMsNi43MyAxMi45NCw2Ljc4IDE0LjU3LDcuNDVDMTUuMDYsNy42NiAxNS4wOCw4LjA1IDE0LjYyLDguMzVNMjEuODQsMTUuNjNDMjAuOTEsMTMuNTQgMTkuNjQsMTEuNjQgMTgsOS45N0MxNy40Nyw5LjQyIDE3LjE0LDguOCAxNi45NCw4LjA5QzE2Ljg0LDcuNzYgMTYuNzcsNy40MiAxNi43LDcuMDhDMTYuNSw2LjIgMTYuNDEsNS4zIDE2LDQuNDdDMTUuMjcsMi44OSAxNCwyLjA3IDEyLjE2LDJDMTAuMzUsMi4wNSA5LDIuODEgOC4yMSw0LjRDOCw0LjgzIDcuODUsNS4yOCA3Ljc1LDUuNzRDNy41OCw2LjUgNy40Myw3LjI5IDcuMjUsOC4wNkM3LjEsOC43MSA2LjgsOS4yNyA2LjI5LDkuNzdDNC42OCwxMS4zNCAzLjM5LDEzLjE0IDIuNDEsMTUuMTJDMi4yNywxNS40MSAyLjEzLDE1LjcgMi4wNCwxNkMxLjg1LDE2LjY2IDIuMzMsMTcuMTIgMy4wMywxNi45NkMzLjQ3LDE2Ljg3IDMuOTEsMTYuNzggNC4zMywxNi42NUM0Ljc0LDE2LjUgNC45LDE2LjYgNSwxN0M1LjY1LDE5LjE1IDcuMDcsMjAuNjYgOS4yNCwyMS41QzEzLjM2LDIzLjA2IDE4LjE3LDIwLjg0IDE5LjIxLDE2LjkyQzE5LjI4LDE2LjY1IDE5LjM4LDE2LjU1IDE5LjY4LDE2LjY1QzIwLjE0LDE2Ljc5IDIwLjYxLDE2Ljg5IDIxLjA4LDE3QzIxLjU3LDE3LjA5IDIxLjkzLDE2Ljg0IDIyLDE2LjM2QzIyLjAzLDE2LjEgMjEuOTQsMTUuODcgMjEuODQsMTUuNjNcIjtcclxuZXhwb3J0IHZhciBtZGlMaW51eE1pbnQgPSBcIk0yLDMuMjNWNi44SDMuNUM0LjU5LDYuOCA0Ljc4LDcuNTMgNC43OCw4LjU1VjE0Ljg2QzQuNzgsMTguMTIgNy42NSwyMC43NyAxMS4xOCwyMC43N0gxOS45QzIxLDIwLjc3IDIyLDIwLjA3IDIyLDE5VjkuMkMyMiw1LjkzIDE5LjEzLDMuMjggMTUuNiwzLjI4SDExLjkzVjMuMjdMMiwzLjIzVjMuMjNNNi42Miw1LjQ2SDguMzdWMTQuNDVDOC4zNywxNS42NSA5LjE5LDE2LjU5IDEwLjE2LDE2LjU5TDE2LjEzLDE2LjYxQzE3LjM4LDE2LjYxIDE4LjM1LDE1Ljc1IDE4LjM1LDE0LjczTDE4LjM0LDkuOTZDMTguMzQsOS42NSAxOC4yNCw5LjQxIDE4LDkuMTlDMTcuNzksOC45NiAxNy41Niw4Ljg2IDE3LjI1LDguODZDMTYuOTQsOC44NiAxNi43MSw4Ljk2IDE2LjUsOS4xOUMxNi4yNyw5LjQxIDE2LjE2LDkuNjUgMTYuMTYsOS45NlYxNC4wNUgxNC4zMVY5Ljk2QzE0LjMxLDkuNjUgMTQuMjEsOS40MSAxNCw5LjE5QzEzLjc3LDguOTYgMTMuNTQsOC44NiAxMy4yMiw4Ljg2QzEyLjkyLDguODYgMTIuNjgsOC45NiAxMi40Niw5LjE5QzEyLjI0LDkuNDEgMTIuMTQsOS42NSAxMi4xNCw5Ljk2VjE0LjA1SDEwLjI5VjkuOTZDMTAuMjksOS4xNSAxMC41OCw4LjQ0IDExLjE1LDcuODZDMTEuNzIsNy4yOSAxMi40Myw3IDEzLjIyLDdDMTQsNyAxNC42OCw3LjI4IDE1LjI0LDcuODJDMTUuNzksNy4yOCAxNi40Nyw3IDE3LjI1LDdDMTguMDUsNyAxOC43Niw3LjI5IDE5LjMyLDcuODZDMTkuODksOC40NCAyMC4xOSw5LjE1IDIwLjE5LDkuOTZMMjAuMiwxNS4wNkMyMC4xMSwxNS45MSAxOS43NSwxNi42NyAxOS4xMywxNy4zMVYxNy4zMUMxOC40LDE4LjA0IDE3LjUsMTguNDIgMTYuNSwxOC40Mkg5LjgzQzksMTguMzQgOC4yOSwxNy45NSA3LjY5LDE3LjM2QzcsMTYuNjUgNi42MiwxNS43OSA2LjYyLDE0Ljc5VjUuNDZINi42MlpcIjtcclxuZXhwb3J0IHZhciBtZGlMaXBzdGljayA9IFwiTTkgMjNDOC40NSAyMyA4IDIyLjU1IDggMjJWMTNDOCAxMi40NSA4LjQ1IDEyIDkgMTJIMTVDMTUuNTUgMTIgMTYgMTIuNDUgMTYgMTNWMjJDMTYgMjIuNTUgMTUuNTUgMjMgMTUgMjNIOU0xMCAxMUM5LjQ1IDExIDkgMTAuNTUgOSAxMFY1LjI1QzkgNS4yNSAxMSAzIDExLjc1IDFDMTIuODMgMS42NyAxMy45MiAyLjMzIDE0LjQ2IDMuODNDMTUgNS4zMyAxNSA3LjY3IDE1IDEwQzE1IDEwLjU1IDE0LjU1IDExIDE0IDExSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxpc3RTdGF0dXMgPSBcIk0xNi41IDExTDEzIDcuNUwxNC40IDYuMUwxNi41IDguMkwyMC43IDRMMjIuMSA1LjRMMTYuNSAxMU0xMSA3SDJWOUgxMVY3TTIxIDEzLjRMMTkuNiAxMkwxNyAxNC42TDE0LjQgMTJMMTMgMTMuNEwxNS42IDE2TDEzIDE4LjZMMTQuNCAyMEwxNyAxNy40TDE5LjYgMjBMMjEgMTguNkwxOC40IDE2TDIxIDEzLjRNMTEgMTVIMlYxN0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlMaXRlY29pbiA9IFwiTTEyLjU1LDE1LjkyTDEzLjE2LDEzLjc4TDE0LjgxLDEzLjE5TDE2LjI1LDcuNjNMMTQuNTYsOC4zMUwxNi4yNSwySDhMNS4zOCwxMS43N0wzLjcyLDEyLjM0TDIuMjIsMTcuOTFMNCwxNy4yN0wyLjY2LDIySDIwLjE2TDIxLjc4LDE1LjkySDEyLjU1TTE5LjM5LDIxSDRMNS40NiwxNS42NUwzLjcyLDE2LjNMNC41OCwxMy4xMUw2LjI0LDEyLjU0TDguNzQsM0gxNUwxMy4xMywxMEwxNC44Myw5LjNMMTQsMTIuNDJMMTIuMzMsMTNMMTEuMjIsMTYuOTFIMjAuNUwxOS4zOSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2FkaW5nID0gXCJNMTIsNFYyQTEwLDEwIDAgMCwwIDIsMTJINEE4LDggMCAwLDEgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NhdGlvbkVudGVyID0gXCJNMTQgMTJMMTAgOFYxMUgyVjEzSDEwVjE2TTIyIDEyQTEwIDEwIDAgMCAxIDIuNDYgMTVINC41OUE4IDggMCAxIDAgNC41OSA5SDIuNDZBMTAgMTAgMCAwIDEgMjIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9jYXRpb25FeGl0ID0gXCJNMjIgMTJMMTggOFYxMUgxMFYxM0gxOFYxNk0yMCAxOEExMCAxMCAwIDEgMSAyMCA2SDE3LjI3QTggOCAwIDEgMCAxNy4yNyAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrID0gXCJNMTIsMTdBMiwyIDAgMCwwIDE0LDE1QzE0LDEzLjg5IDEzLjEsMTMgMTIsMTNBMiwyIDAgMCwwIDEwLDE1QTIsMiAwIDAsMCAxMiwxN00xOCw4QTIsMiAwIDAsMSAyMCwxMFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFYxMEM0LDguODkgNC45LDggNiw4SDdWNkE1LDUgMCAwLDEgMTIsMUE1LDUgMCAwLDEgMTcsNlY4SDE4TTEyLDNBMywzIDAgMCwwIDksNlY4SDE1VjZBMywzIDAgMCwwIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja0FsZXJ0ID0gXCJNMTAgMTdDMTEuMSAxNyAxMiAxNi4xIDEyIDE1QzEyIDEzLjkgMTEuMSAxMyAxMCAxM0M4LjkgMTMgOCAxMy45IDggMTVTOC45IDE3IDEwIDE3TTE2IDhDMTcuMSA4IDE4IDguOSAxOCAxMFYyMEMxOCAyMS4xIDE3LjEgMjIgMTYgMjJINEMyLjkgMjIgMiAyMS4xIDIgMjBWMTBDMiA4LjkgMi45IDggNCA4SDVWNkM1IDMuMiA3LjIgMSAxMCAxUzE1IDMuMiAxNSA2VjhIMTZNMTAgM0M4LjMgMyA3IDQuMyA3IDZWOEgxM1Y2QzEzIDQuMyAxMS43IDMgMTAgM00yMiAxM0gyMFY3SDIyVjEzTTIyIDE3SDIwVjE1SDIyVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tBbGVydE91dGxpbmUgPSBcIk0xMCAxN0M4LjkgMTcgOCAxNi4xIDggMTVDOCAxMy45IDguOSAxMyAxMCAxM0MxMS4xIDEzIDEyIDEzLjkgMTIgMTVTMTEuMSAxNyAxMCAxN00xNiAyMFYxMEg0VjIwSDE2TTE2IDhDMTcuMSA4IDE4IDguOSAxOCAxMFYyMEMxOCAyMS4xIDE3LjEgMjIgMTYgMjJINEMyLjkgMjIgMiAyMS4xIDIgMjBWMTBDMiA4LjkgMi45IDggNCA4SDVWNkM1IDMuMiA3LjIgMSAxMCAxUzE1IDMuMiAxNSA2VjhIMTZNMTAgM0M4LjMgMyA3IDQuMyA3IDZWOEgxM1Y2QzEzIDQuMyAxMS43IDMgMTAgM00yMiA3SDIwVjEzSDIyVjdNMjIgMTVIMjBWMTdIMjJWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja0NoZWNrID0gXCJNMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlWMTBDMjAgOC45IDE5LjExIDggMTggOEgxN1Y2QzE3IDMuMjQgMTQuNzYgMSAxMiAxUzcgMy4yNCA3IDZWOEg2QzQuOSA4IDQgOC44OSA0IDEwVjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM005IDZDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg5VjZNMTIgMTdDMTAuOSAxNyAxMCAxNi4xMSAxMCAxNVMxMC45IDEzIDEyIDEzQzEzLjEgMTMgMTQgMTMuODkgMTQgMTVDMTQgMTYuMTEgMTMuMTEgMTcgMTIgMTdNMjIuNSAxNy4yNUwxNy43NSAyMkwxNSAxOUwxNi4xNiAxNy44NEwxNy43NSAxOS40M0wyMS4zNCAxNS44NEwyMi41IDE3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tDaGVja091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN0MxMC44OSAxNyAxMCAxNi4xIDEwIDE1QzEwIDEzLjg5IDEwLjg5IDEzIDEyIDEzQzEzLjExIDEzIDE0IDEzLjkgMTQgMTVNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMSA0IDIwVjEwQzQgOC44OSA0Ljg5IDggNiA4SDdWNkM3IDMuMjQgOS4yNCAxIDEyIDFTMTcgMy4yNCAxNyA2VjhIMThDMTkuMTEgOCAyMCA4LjkgMjAgMTBWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWMTBINlYyMEgxMy4wOU05IDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM1M5IDQuMzQgOSA2VjhNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrQ2xvY2sgPSBcIk04LjUsMkM2LDIgNCw0IDQsNi41VjdDMi44OSw3IDIsNy44OSAyLDlWMThDMiwxOS4xMSAyLjg5LDIwIDQsMjBIOC43MkMxMC4xOCwyMS4yOSAxMi4wNiwyMiAxNCwyMkE4LDggMCAwLDAgMjIsMTRBOCw4IDAgMCwwIDE0LDZDMTMuNjYsNiAxMy4zMiw2LjAzIDEzLDYuMDhDMTIuNzYsMy43NyAxMC44MiwyIDguNSwyTTguNSw0QTIuNSwyLjUgMCAwLDEgMTEsNi41VjdINlY2LjVBMi41LDIuNSAwIDAsMSA4LjUsNE0xNCw4QTYsNiAwIDAsMSAyMCwxNEE2LDYgMCAwLDEgMTQsMjBBNiw2IDAgMCwxIDgsMTRBNiw2IDAgMCwxIDE0LDhNMTMsMTBWMTVMMTYuNjQsMTcuMTlMMTcuNDIsMTUuOUwxNC41LDE0LjE1VjEwSDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tNaW51cyA9IFwiTTE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2VjhINkM0LjkgOCA0IDguODkgNCAxMFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNOSA2QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhIOVY2TTEyIDE3QzEwLjkgMTcgMTAgMTYuMTEgMTAgMTVTMTAuOSAxMyAxMiAxM0MxMy4xIDEzIDE0IDEzLjg5IDE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3TTIzIDE4VjIwSDE1VjE4SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tNaW51c091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN0MxMC44OSAxNyAxMCAxNi4xIDEwIDE1QzEwIDEzLjg5IDEwLjg5IDEzIDEyIDEzQzEzLjExIDEzIDE0IDEzLjkgMTQgMTVNMTMuMDkgMjBDMTMuMjEgMjAuNzIgMTMuNDYgMjEuMzkgMTMuODEgMjJINkM0Ljg5IDIyIDQgMjEuMSA0IDIwVjEwQzQgOC44OSA0Ljg5IDggNiA4SDdWNkM3IDMuMjQgOS4yNCAxIDEyIDFTMTcgMy4yNCAxNyA2VjhIMThDMTkuMTEgOCAyMCA4LjkgMjAgMTBWMTMuMDlDMTkuNjcgMTMuMDQgMTkuMzQgMTMgMTkgMTNDMTguNjYgMTMgMTguMzMgMTMuMDQgMTggMTMuMDlWMTBINlYyMEgxMy4wOU05IDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM1M5IDQuMzQgOSA2VjhNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09mZiA9IFwiTTkgNS44Mkw3LjM2IDQuMTZDOC4wOSAyLjMxIDkuODkgMSAxMiAxQzE0Ljc2IDEgMTcgMy4yNCAxNyA2VjhIMThDMTkuMTEgOCAyMCA4LjkgMjAgMTBWMTYuOEwxMS4yIDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM0MxMC40MSAzIDkuMTEgNC4yNSA5IDUuODJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuNDYgMjEuMzVDMTkuMSAyMS43NSAxOC41OCAyMiAxOCAyMkg2QzQuODkgMjIgNCAyMS4xMSA0IDIwVjEwQzQgOC44OSA0LjkgOCA2IDhINi4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTEzLjg1IDE1Ljc0TDExLjI2IDEzLjE1QzEwLjUgMTMuNDQgMTAgMTQuMTYgMTAgMTVDMTAgMTYuMTEgMTAuOSAxNyAxMiAxN0MxMi44NCAxNyAxMy41NiAxNi41IDEzLjg1IDE1Ljc0WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPZmZPdXRsaW5lID0gXCJNOSA1LjgyTDcuMzYgNC4xNkM4LjA5IDIuMzEgOS44OSAxIDEyIDFDMTQuNzYgMSAxNyAzLjI0IDE3IDZWOEgxOEMxOS4xMSA4IDIwIDguOSAyMCAxMFYxNi44TDE4IDE0LjhWMTBIMTMuMkwxMS4yIDhIMTVWNkMxNSA0LjM0IDEzLjY2IDMgMTIgM0MxMC40MSAzIDkuMTEgNC4yNSA5IDUuODJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuNDYgMjEuMzVDMTkuMSAyMS43NSAxOC41OCAyMiAxOCAyMkg2QzQuODkgMjIgNCAyMS4xIDQgMjBWMTBDNCA4Ljg5IDQuODkgOCA2IDhINi4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE4IDE5Ljg5TDEzLjg1IDE1Ljc0QzEzLjU2IDE2LjUgMTIuODQgMTcgMTIgMTdDMTAuODkgMTcgMTAgMTYuMSAxMCAxNUMxMCAxNC4xNSAxMC41IDEzLjQ0IDExLjI2IDEzLjE1TDguMTEgMTBINlYyMEgxOFYxOS44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlbiA9IFwiTTE4LDhBMiwyIDAgMCwxIDIwLDEwVjIwQTIsMiAwIDAsMSAxOCwyMkg2QzQuODksMjIgNCwyMS4xIDQsMjBWMTBBMiwyIDAgMCwxIDYsOEgxNVY2QTMsMyAwIDAsMCAxMiwzQTMsMyAwIDAsMCA5LDZIN0E1LDUgMCAwLDEgMTIsMUE1LDUgMCAwLDEgMTcsNlY4SDE4TTEyLDE3QTIsMiAwIDAsMCAxNCwxNUEyLDIgMCAwLDAgMTIsMTNBMiwyIDAgMCwwIDEwLDE1QTIsMiAwIDAsMCAxMiwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlbkFsZXJ0ID0gXCJNMTYgOEMxNy4xIDggMTggOC45IDE4IDEwVjIwQzE4IDIxLjEgMTcuMSAyMiAxNiAyMkg0QzIuOSAyMiAyIDIxLjEgMiAyMFYxMEMyIDguOSAyLjkgOCA0IDhIMTNWNkMxMyA0LjMgMTEuNyAzIDEwIDNTNyA0LjMgNyA2SDVDNSAzLjIgNy4yIDEgMTAgMVMxNSAzLjIgMTUgNlY4SDE2TTEwIDE3QzExLjEgMTcgMTIgMTYuMSAxMiAxNVMxMS4xIDEzIDEwIDEzIDggMTMuOSA4IDE1IDguOSAxNyAxMCAxN00yMiAxM0gyMFY3SDIyVjEzTTIyIDE3SDIwVjE1SDIyVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPcGVuQWxlcnRPdXRsaW5lID0gXCJNMTYgMjBWMTBINFYyMEgxNk0xNiA4QzE3LjEgOCAxOCA4LjkgMTggMTBWMjBDMTggMjEuMSAxNy4xIDIyIDE2IDIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjEwQzIgOC45IDIuOSA4IDQgOEgxM1Y2QzEzIDQuMyAxMS43IDMgMTAgM1M3IDQuMyA3IDZINUM1IDMuMiA3LjIgMSAxMCAxUzE1IDMuMiAxNSA2VjhIMTZNMTAgMTdDOC45IDE3IDggMTYuMSA4IDE1UzguOSAxMyAxMCAxMyAxMiAxMy45IDEyIDE1IDExLjEgMTcgMTAgMTdNMjIgN0gyMFYxM0gyMlY3TTIyIDE1SDIwVjE3SDIyVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPcGVuQ2hlY2sgPSBcIk0xOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNkg5QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhINkM0Ljg5IDggNCA4LjkgNCAxMFYyMEM0IDIxLjEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM00xMiAxN0MxMC45IDE3IDEwIDE2LjExIDEwIDE1UzEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNSAxMy4xMSAxNyAxMiAxN00yMi41IDE3LjI1TDE3Ljc1IDIyTDE1IDE5TDE2LjE2IDE3Ljg0TDE3Ljc1IDE5LjQzTDIxLjM0IDE1Ljg0TDIyLjUgMTcuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5DaGVja091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN1MxMCAxNi4xMSAxMCAxNSAxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTVNNiAyMFYxMEgxOFYxMy4wOUMxOC4zMyAxMy4wNCAxOC42NiAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNkg5QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhINkM0Ljg5IDggNCA4LjkgNCAxMFYyMEM0IDIxLjEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjQ2IDIxLjM5IDEzLjIyIDIwLjcyIDEzLjA5IDIwSDZNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3Blbk1pbnVzID0gXCJNMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlWMTBDMjAgOC45IDE5LjExIDggMTggOEgxN1Y2QzE3IDMuMjQgMTQuNzYgMSAxMiAxUzcgMy4yNCA3IDZIOUM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDZDNC44OSA4IDQgOC45IDQgMTBWMjBDNCAyMS4xIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNMTIgMTdDMTAuOSAxNyAxMCAxNi4xMSAxMCAxNVMxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTUgMTMuMTEgMTcgMTIgMTdNMjMgMThWMjBIMTVWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5NaW51c091dGxpbmUgPSBcIk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN1MxMCAxNi4xMSAxMCAxNSAxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTVNNiAyMFYxMEgxOFYxMy4wOUMxOC4zMyAxMy4wNCAxOC42NiAxMyAxOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNkg5QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhINkM0Ljg5IDggNCA4LjkgNCAxMFYyMEM0IDIxLjEgNC44OSAyMiA2IDIySDEzLjgxQzEzLjQ2IDIxLjM5IDEzLjIyIDIwLjcyIDEzLjA5IDIwSDZNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5PdXRsaW5lID0gXCJNMTgsMjBWMTBINlYyMEgxOE0xOCw4QTIsMiAwIDAsMSAyMCwxMFYyMEEyLDIgMCAwLDEgMTgsMjJINkM0Ljg5LDIyIDQsMjEuMSA0LDIwVjEwQTIsMiAwIDAsMSA2LDhIMTVWNkEzLDMgMCAwLDAgMTIsM0EzLDMgMCAwLDAgOSw2SDdBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZWOEgxOE0xMiwxN0EyLDIgMCAwLDEgMTAsMTVBMiwyIDAgMCwxIDEyLDEzQTIsMiAwIDAsMSAxNCwxNUEyLDIgMCAwLDEgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5QbHVzID0gXCJNMTkgMTNDMTkuMzQgMTMgMTkuNjcgMTMuMDQgMjAgMTMuMDlWMTBDMjAgOC45IDE5LjExIDggMTggOEgxN1Y2QzE3IDMuMjQgMTQuNzYgMSAxMiAxUzcgMy4yNCA3IDZIOUM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDZDNC44OSA4IDQgOC45IDQgMTBWMjBDNCAyMS4xIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNMTIgMTdDMTAuOSAxNyAxMCAxNi4xMSAxMCAxNVMxMC45IDEzIDEyIDEzIDE0IDEzLjkgMTQgMTUgMTMuMTEgMTcgMTIgMTdNMjMgMThWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVIMjBWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5QbHVzT3V0bGluZSA9IFwiTTE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3UzEwIDE2LjExIDEwIDE1IDEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNU02IDIwVjEwSDE4VjEzLjA5QzE4LjMzIDEzLjA0IDE4LjY2IDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2SDlDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg2QzQuODkgOCA0IDguOSA0IDEwVjIwQzQgMjEuMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINk0yMCAxOFYxNUgxOFYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlblJlbW92ZSA9IFwiTTE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2SDlDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg2QzQuODkgOCA0IDguOSA0IDEwVjIwQzQgMjEuMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTEyIDE3QzEwLjkgMTcgMTAgMTYuMTEgMTAgMTVTMTAuOSAxMyAxMiAxMyAxNCAxMy45IDE0IDE1IDEzLjExIDE3IDEyIDE3TTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPcGVuUmVtb3ZlT3V0bGluZSA9IFwiTTE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3UzEwIDE2LjExIDEwIDE1IDEwLjkgMTMgMTIgMTMgMTQgMTMuOSAxNCAxNU02IDIwVjEwSDE4VjEzLjA5QzE4LjMzIDEzLjA0IDE4LjY2IDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2SDlDOSA0LjM0IDEwLjM0IDMgMTIgM1MxNSA0LjM0IDE1IDZWOEg2QzQuODkgOCA0IDguOSA0IDEwVjIwQzQgMjEuMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINk0yMi41NCAxNi44OEwyMS4xMiAxNS40N0wxOSAxNy41OUwxNi44OCAxNS40N0wxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrT3BlblZhcmlhbnQgPSBcIk0xOCAxQzE1LjI0IDEgMTMgMy4yNCAxMyA2VjhINEMyLjkgOCAyIDguODkgMiAxMFYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDE2QzE3LjExIDIyIDE4IDIxLjExIDE4IDIwVjEwQzE4IDguOSAxNy4xMSA4IDE2IDhIMTVWNkMxNSA0LjM0IDE2LjM0IDMgMTggM0MxOS42NiAzIDIxIDQuMzQgMjEgNlY4SDIzVjZDMjMgMy4yNCAyMC43NiAxIDE4IDFNMTAgMTNDMTEuMSAxMyAxMiAxMy44OSAxMiAxNUMxMiAxNi4xMSAxMS4xMSAxNyAxMCAxN0M4LjkgMTcgOCAxNi4xMSA4IDE1QzggMTMuOSA4LjkgMTMgMTAgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja09wZW5WYXJpYW50T3V0bGluZSA9IFwiTTEwIDEzQzExLjEgMTMgMTIgMTMuODkgMTIgMTVDMTIgMTYuMTEgMTEuMTEgMTcgMTAgMTdTOCAxNi4xMSA4IDE1IDguOSAxMyAxMCAxM00xOCAxQzE1LjI0IDEgMTMgMy4yNCAxMyA2VjhINEMyLjkgOCAyIDguOSAyIDEwVjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxNkMxNy4xIDIyIDE4IDIxLjEgMTggMjBWMTBDMTggOC45IDE3LjEgOCAxNiA4SDE1VjZDMTUgNC4zNCAxNi4zNCAzIDE4IDNTMjEgNC4zNCAyMSA2VjhIMjNWNkMyMyAzLjI0IDIwLjc2IDEgMTggMU0xNiAxMFYyMEg0VjEwSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tPdXRsaW5lID0gXCJNMTIsMTdDMTAuODksMTcgMTAsMTYuMSAxMCwxNUMxMCwxMy44OSAxMC44OSwxMyAxMiwxM0EyLDIgMCAwLDEgMTQsMTVBMiwyIDAgMCwxIDEyLDE3TTE4LDIwVjEwSDZWMjBIMThNMTgsOEEyLDIgMCAwLDEgMjAsMTBWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFYxMEM0LDguODkgNC44OSw4IDYsOEg3VjZBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZWOEgxOE0xMiwzQTMsMyAwIDAsMCA5LDZWOEgxNVY2QTMsMyAwIDAsMCAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tQYXR0ZXJuID0gXCJNNywzQTQsNCAwIDAsMSAxMSw3QzExLDguODYgOS43MywxMC40MyA4LDEwLjg3VjEzLjEzQzguMzcsMTMuMjIgOC43MiwxMy4zNyA5LjA0LDEzLjU2TDEzLjU2LDkuMDRDMTMuMiw4LjQ0IDEzLDcuNzUgMTMsN0E0LDQgMCAwLDEgMTcsM0E0LDQgMCAwLDEgMjEsN0E0LDQgMCAwLDEgMTcsMTFDMTYuMjYsMTEgMTUuNTcsMTAuOCAxNSwxMC40NUwxMC40NSwxNUMxMC44LDE1LjU3IDExLDE2LjI2IDExLDE3QTQsNCAwIDAsMSA3LDIxQTQsNCAwIDAsMSAzLDE3QzMsMTUuMTQgNC4yNywxMy41NyA2LDEzLjEzVjEwLjg3QzQuMjcsMTAuNDMgMyw4Ljg2IDMsN0E0LDQgMCAwLDEgNywzTTE3LDEzQTQsNCAwIDAsMSAyMSwxN0E0LDQgMCAwLDEgMTcsMjFBNCw0IDAgMCwxIDEzLDE3QTQsNCAwIDAsMSAxNywxM00xNywxNUEyLDIgMCAwLDAgMTUsMTdBMiwyIDAgMCwwIDE3LDE5QTIsMiAwIDAsMCAxOSwxN0EyLDIgMCAwLDAgMTcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja1BsdXMgPSBcIk0xOSAxM0MxOS4zNCAxMyAxOS42NyAxMy4wNCAyMCAxMy4wOVYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4SDE3VjZDMTcgMy4yNCAxNC43NiAxIDEyIDFTNyAzLjI0IDcgNlY4SDZDNC45IDggNCA4Ljg5IDQgMTBWMjBDNCAyMS4xMSA0Ljg5IDIyIDYgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTkgNkM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDlWNk0xMiAxN0MxMC45IDE3IDEwIDE2LjExIDEwIDE1UzEwLjkgMTMgMTIgMTNDMTMuMSAxMyAxNCAxMy44OSAxNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN00yMyAxOFYyMEgyMFYyM0gxOFYyMEgxNVYxOEgxOFYxNUgyMFYxOEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrUGx1c091dGxpbmUgPSBcIk02IDIwVjEwSDE4VjEzLjA5QzE4LjMzIDEzLjA0IDE4LjY2IDEzIDE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2VjhINkM0Ljg5IDggNCA4Ljg5IDQgMTBWMjBDNCAyMS4xIDQuODkgMjIgNiAyMkgxMy44MUMxMy40NiAyMS4zOSAxMy4yMiAyMC43MiAxMy4wOSAyMEg2TTkgNkM5IDQuMzQgMTAuMzQgMyAxMiAzUzE1IDQuMzQgMTUgNlY4SDlWNk0xNCAxNUMxNCAxNi4xMSAxMy4xMSAxNyAxMiAxN0MxMC44OSAxNyAxMCAxNi4xIDEwIDE1QzEwIDEzLjg5IDEwLjg5IDEzIDEyIDEzQzEzLjExIDEzIDE0IDEzLjkgMTQgMTVNMjMgMThWMjBIMjBWMjNIMThWMjBIMTVWMThIMThWMTVIMjBWMThIMjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja1F1ZXN0aW9uID0gXCJNMTIsMUE1LDUgMCAwLDAgNyw2VjhINkEyLDIgMCAwLDAgNCwxMFYyMEEyLDIgMCAwLDAgNiwyMkgxOEEyLDIgMCAwLDAgMjAsMjBWMTBBMiwyIDAgMCwwIDE4LDhIMTdWNkE1LDUgMCAwLDAgMTIsMU0xMiwyLjlDMTMuNzEsMi45IDE1LjEsNC4yOSAxNS4xLDZWOEg4LjlWNkM4LjksNC4yOSAxMC4yOSwyLjkgMTIsMi45TTEyLjE5LDEwLjVDMTMuMTMsMTAuNSAxMy44OCwxMC43MSAxNC40MiwxMS4xMkMxNC45NiwxMS41NCAxNS4yMywxMi4xIDE1LjIzLDEyLjhDMTUuMjMsMTMuMjQgMTUuMDgsMTMuNjMgMTQuNzksMTRDMTQuNSwxNC4zNiAxNC4xMiwxNC42NCAxMy42NiwxNC44NUMxMy40LDE1IDEzLjIzLDE1LjE1IDEzLjE0LDE1LjMyQzEzLjA1LDE1LjUgMTMsMTUuNzIgMTMsMTZIMTFDMTEsMTUuNSAxMS4xLDE1LjE2IDExLjI5LDE0LjkyQzExLjUsMTQuNjggMTEuODQsMTQuNCAxMi4zNiwxNC4wOEMxMi42MiwxMy45NCAxMi44MywxMy43NiAxMywxMy41NEMxMy4xNCwxMy4zMyAxMy4yMiwxMy4wOCAxMy4yMiwxMi44QzEzLjIyLDEyLjUgMTMuMTMsMTIuMjggMTIuOTUsMTIuMTFDMTIuNzcsMTEuOTMgMTIuNSwxMS44NSAxMi4xOSwxMS44NUMxMS45MiwxMS44NSAxMS43LDExLjkyIDExLjUsMTIuMDZDMTEuMzQsMTIuMiAxMS4yNCwxMi40MSAxMS4yNCwxMi42OUg5LjI3QzkuMjIsMTIgOS41LDExLjQgMTAuMDUsMTEuMDRDMTAuNTksMTAuNjggMTEuMywxMC41IDEyLjE5LDEwLjVNMTEsMTdIMTNWMTlIMTFWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9ja1JlbW92ZSA9IFwiTTE5IDEzQzE5LjM0IDEzIDE5LjY3IDEzLjA0IDIwIDEzLjA5VjEwQzIwIDguOSAxOS4xMSA4IDE4IDhIMTdWNkMxNyAzLjI0IDE0Ljc2IDEgMTIgMVM3IDMuMjQgNyA2VjhINkM0LjkgOCA0IDguODkgNCAxMFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNOSA2QzkgNC4zNCAxMC4zNCAzIDEyIDNTMTUgNC4zNCAxNSA2VjhIOVY2TTEyIDE3QzEwLjkgMTcgMTAgMTYuMTEgMTAgMTVTMTAuOSAxMyAxMiAxM0MxMy4xIDEzIDE0IDEzLjg5IDE0IDE1QzE0IDE2LjExIDEzLjExIDE3IDEyIDE3TTIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tSZW1vdmVPdXRsaW5lID0gXCJNMTQgMTVDMTQgMTYuMTEgMTMuMTEgMTcgMTIgMTdDMTAuODkgMTcgMTAgMTYuMSAxMCAxNUMxMCAxMy44OSAxMC44OSAxMyAxMiAxM0MxMy4xMSAxMyAxNCAxMy45IDE0IDE1TTEzLjA5IDIwQzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDZDNC44OSAyMiA0IDIxLjEgNCAyMFYxMEM0IDguODkgNC44OSA4IDYgOEg3VjZDNyAzLjI0IDkuMjQgMSAxMiAxUzE3IDMuMjQgMTcgNlY4SDE4QzE5LjExIDggMjAgOC45IDIwIDEwVjEzLjA5QzE5LjY3IDEzLjA0IDE5LjM0IDEzIDE5IDEzQzE4LjY2IDEzIDE4LjMzIDEzLjA0IDE4IDEzLjA5VjEwSDZWMjBIMTMuMDlNOSA4SDE1VjZDMTUgNC4zNCAxMy42NiAzIDEyIDNTOSA0LjM0IDkgNlY4TTIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ3TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvY2tSZXNldCA9IFwiTTEyLjYzLDJDMTguMTYsMiAyMi42NCw2LjUgMjIuNjQsMTJDMjIuNjQsMTcuNSAxOC4xNiwyMiAxMi42MywyMkM5LjEyLDIyIDYuMDUsMjAuMTggNC4yNiwxNy40M0w1Ljg0LDE2LjE4QzcuMjUsMTguNDcgOS43NiwyMCAxMi42NCwyMEE4LDggMCAwLDAgMjAuNjQsMTJBOCw4IDAgMCwwIDEyLjY0LDRDOC41Niw0IDUuMiw3LjA2IDQuNzEsMTFINy40N0wzLjczLDE0LjczTDAsMTFIMi42OUMzLjE5LDUuOTUgNy40NSwyIDEyLjYzLDJNMTUuNTksMTAuMjRDMTYuMDksMTAuMjUgMTYuNSwxMC42NSAxNi41LDExLjE2VjE1Ljc3QzE2LjUsMTYuMjcgMTYuMDksMTYuNjkgMTUuNTgsMTYuNjlIMTAuMDVDOS41NCwxNi42OSA5LjEzLDE2LjI3IDkuMTMsMTUuNzdWMTEuMTZDOS4xMywxMC42NSA5LjU0LDEwLjI1IDEwLjA0LDEwLjI0VjkuMjNDMTAuMDQsNy43IDExLjI5LDYuNDYgMTIuODEsNi40NkMxNC4zNCw2LjQ2IDE1LjU5LDcuNyAxNS41OSw5LjIzVjEwLjI0TTEyLjgxLDcuODZDMTIuMDYsNy44NiAxMS40NCw4LjQ3IDExLjQ0LDkuMjNWMTAuMjRIMTQuMTlWOS4yM0MxNC4xOSw4LjQ3IDEzLjU3LDcuODYgMTIuODEsNy44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrU21hcnQgPSBcIk0xMiwyQTYsNiAwIDAsMCA2LDhWMTZBNiw2IDAgMCwwIDEyLDIyQTYsNiAwIDAsMCAxOCwxNlY4QTYsNiAwIDAsMCAxMiwyTTgsNkgxMFY4SDhWNk0xMSw2SDEzVjhIMTFWNk0xNCw2SDE2VjhIMTRWNk04LDlIMTBWMTFIOFY5TTExLDlIMTNWMTFIMTFWOU0xNCw5SDE2VjExSDE0VjlNOCwxMkgxMFYxNEg4VjEyTTExLDEySDEzVjE0SDExVjEyTTE0LDEySDE2VjE0SDE0VjEyTTEyLDE2QTIsMiAwIDAsMSAxNCwxOEEyLDIgMCAwLDEgMTIsMjBBMiwyIDAgMCwxIDEwLDE4QTIsMiAwIDAsMSAxMiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrZXIgPSBcIk04LDJIMTZBMiwyIDAgMCwxIDE4LDRWMjBBMiwyIDAgMCwxIDE2LDIySDhBMiwyIDAgMCwxIDYsMjBWNEEyLDIgMCAwLDEgOCwyTTgsNFYyMEgxNlY0SDhNMTAsMTNIMTJWMTdIMTBWMTNNMTAsNkgxNFY3LjVIMTBWNk0xMCw5SDE0VjEwLjVIMTBWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2NrZXJNdWx0aXBsZSA9IFwiTTMsMkgyMUEyLDIgMCAwLDEgMjMsNFYyMEEyLDIgMCAwLDEgMjEsMjJIM0EyLDIgMCAwLDEgMSwyMFY0QTIsMiAwIDAsMSAzLDJNMTMsNFYyMEgyMVY0SDEzTTMsNFYyMEgxMVY0SDNNNSwxM0g3VjE3SDVWMTNNNSw2SDlWNy41SDVWNk01LDlIOVYxMC41SDVWOU0xNSwxM0gxN1YxN0gxNVYxM00xNSw2SDE5VjcuNUgxNVY2TTE1LDlIMTlWMTAuNUgxNVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvZ2luID0gXCJNMTAsMTdWMTRIM1YxMEgxMFY3TDE1LDEyTDEwLDE3TTEwLDJIMTlBMiwyIDAgMCwxIDIxLDRWMjBBMiwyIDAgMCwxIDE5LDIySDEwQTIsMiAwIDAsMSA4LDIwVjE4SDEwVjIwSDE5VjRIMTBWNkg4VjRBMiwyIDAgMCwxIDEwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG9naW5WYXJpYW50ID0gXCJNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjlINVY1SDE5VjE5SDVWMTVIM1YxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzTTEwLjA4LDE1LjU4TDExLjUsMTdMMTYuNSwxMkwxMS41LDdMMTAuMDgsOC40MUwxMi42NywxMUgzVjEzSDEyLjY3TDEwLjA4LDE1LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvZ291dCA9IFwiTTE2LDE3VjE0SDlWMTBIMTZWN0wyMSwxMkwxNiwxN00xNCwyQTIsMiAwIDAsMSAxNiw0VjZIMTRWNEg1VjIwSDE0VjE4SDE2VjIwQTIsMiAwIDAsMSAxNCwyMkg1QTIsMiAwIDAsMSAzLDIwVjRBMiwyIDAgMCwxIDUsMkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb2dvdXRWYXJpYW50ID0gXCJNMTQuMDgsMTUuNTlMMTYuNjcsMTNIN1YxMUgxNi42N0wxNC4wOCw4LjQxTDE1LjUsN0wyMC41LDEyTDE1LjUsMTdMMTQuMDgsMTUuNTlNMTksM0EyLDIgMCAwLDEgMjEsNVY5LjY3TDE5LDcuNjdWNUg1VjE5SDE5VjE2LjMzTDIxLDE0LjMzVjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlMb25naXR1ZGUgPSBcIk0xMiAyQTEwIDEwIDAgMSAwIDIyIDEyQTEwLjAzIDEwLjAzIDAgMCAwIDEyIDJNOS40IDE5LjZBOC4wNSA4LjA1IDAgMCAxIDkuNCA0LjRBMTYuNDUgMTYuNDUgMCAwIDAgNy41IDEyQTE2LjQ1IDE2LjQ1IDAgMCAwIDkuNCAxOS42TTEyIDIwQTEzLjgxIDEzLjgxIDAgMCAxIDkuNSAxMkExMy44MSAxMy44MSAwIDAgMSAxMiA0QTEzLjgxIDEzLjgxIDAgMCAxIDE0LjUgMTJBMTMuODEgMTMuODEgMCAwIDEgMTIgMjBNMTQuNiAxOS42QTE2LjE1IDE2LjE1IDAgMCAwIDE0LjYgNC40QTguMDMgOC4wMyAwIDAgMSAyMCAxMkE3LjkgNy45IDAgMCAxIDE0LjYgMTkuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb29rcyA9IFwiTTEyLDZBMTEsMTEgMCAwLDAgMSwxN0gzQzMsMTIuMDQgNy4wNCw4IDEyLDhDMTYuOTYsOCAyMSwxMi4wNCAyMSwxN0gyM0ExMSwxMSAwIDAsMCAxMiw2TTEyLDEwQzguMTQsMTAgNSwxMy4xNCA1LDE3SDdBNSw1IDAgMCwxIDEyLDEyQTUsNSAwIDAsMSAxNywxN0gxOUMxOSwxMy4xNCAxNS44NiwxMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlMb3Rpb24gPSBcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0UzE4LjUgNS42NiAxOC41IDYuNUMxOC41IDcuMzMgMTcuODMgOCAxNyA4UzE1LjUgNy4zMyAxNS41IDYuNU0xOS41IDE1QzIwLjg4IDE1IDIyIDEzLjg4IDIyIDEyLjVDMjIgMTAuODMgMTkuNSA4IDE5LjUgOFMxNyAxMC44MyAxNyAxMi41QzE3IDEzLjg4IDE4LjEyIDE1IDE5LjUgMTVNMTYgMTJWMjJINFYxMkM0IDkuMDMgNi4xNiA2LjU3IDkgNi4wOVY0SDdWMkgxM0MxNC4xMyAyIDE1LjE1IDIuMzkgMTYgM0wxNC41NiA0LjQ0QzE0LjEgNC4xNyAxMy41NyA0IDEzIDRIMTFWNi4wOUMxMy44NCA2LjU3IDE2IDkuMDMgMTYgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG90aW9uT3V0bGluZSA9IFwiTTE1LjUgNi41QzE1LjUgNS42NiAxNyA0IDE3IDRTMTguNSA1LjY2IDE4LjUgNi41QzE4LjUgNy4zMyAxNy44MyA4IDE3IDhTMTUuNSA3LjMzIDE1LjUgNi41TTE5LjUgMTVDMjAuODggMTUgMjIgMTMuODggMjIgMTIuNUMyMiAxMC44MyAxOS41IDggMTkuNSA4UzE3IDEwLjgzIDE3IDEyLjVDMTcgMTMuODggMTguMTIgMTUgMTkuNSAxNU0xNiAxMlYyMEMxNiAyMS4xIDE1LjEgMjIgMTQgMjJINkM0LjkgMjIgNCAyMS4xIDQgMjBWMTJDNCA5LjAzIDYuMTYgNi41NyA5IDYuMDlWNEg3VjJIMTNDMTQuMTMgMiAxNS4xNSAyLjM5IDE2IDNMMTQuNTYgNC40NEMxNC4xIDQuMTcgMTMuNTcgNCAxMyA0SDExVjYuMDlDMTMuODQgNi41NyAxNiA5LjAzIDE2IDEyTTE0IDEyQzE0IDkuNzkgMTIuMjEgOCAxMCA4UzYgOS43OSA2IDEyVjIwSDE0VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaUxvdGlvblBsdXMgPSBcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0UzE4LjUgNS42NiAxOC41IDYuNUMxOC41IDcuMzMgMTcuODMgOCAxNyA4UzE1LjUgNy4zMyAxNS41IDYuNU0xOS41IDE1QzIwLjg4IDE1IDIyIDEzLjg4IDIyIDEyLjVDMjIgMTAuODMgMTkuNSA4IDE5LjUgOFMxNyAxMC44MyAxNyAxMi41QzE3IDEzLjg4IDE4LjEyIDE1IDE5LjUgMTVNMTMgMTRIMTFWMTJIOVYxNEg3VjE2SDlWMThIMTFWMTZIMTNWMTRNMTYgMTJWMjJINFYxMkM0IDkuMDMgNi4xNiA2LjU3IDkgNi4wOVY0SDdWMkgxM0MxNC4xMyAyIDE1LjE1IDIuMzkgMTYgM0wxNC41NiA0LjQ0QzE0LjEgNC4xNyAxMy41NyA0IDEzIDRIMTFWNi4wOUMxMy44NCA2LjU3IDE2IDkuMDMgMTYgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTG90aW9uUGx1c091dGxpbmUgPSBcIk0xNS41IDYuNUMxNS41IDUuNjYgMTcgNCAxNyA0UzE4LjUgNS42NiAxOC41IDYuNUMxOC41IDcuMzMgMTcuODMgOCAxNyA4UzE1LjUgNy4zMyAxNS41IDYuNU0xOS41IDE1QzIwLjg4IDE1IDIyIDEzLjg4IDIyIDEyLjVDMjIgMTAuODMgMTkuNSA4IDE5LjUgOFMxNyAxMC44MyAxNyAxMi41QzE3IDEzLjg4IDE4LjEyIDE1IDE5LjUgMTVNMTMgMTRIMTFWMTJIOVYxNEg3VjE2SDlWMThIMTFWMTZIMTNWMTRNMTYgMTJWMjBDMTYgMjEuMSAxNS4xIDIyIDE0IDIySDZDNC45IDIyIDQgMjEuMSA0IDIwVjEyQzQgOS4wMyA2LjE2IDYuNTcgOSA2LjA5VjRIN1YySDEzQzE0LjEzIDIgMTUuMTUgMi4zOSAxNiAzTDE0LjU2IDQuNDRDMTQuMSA0LjE3IDEzLjU3IDQgMTMgNEgxMVY2LjA5QzEzLjg0IDYuNTcgMTYgOS4wMyAxNiAxMk0xNCAxMkMxNCA5Ljc5IDEyLjIxIDggMTAgOFM2IDkuNzkgNiAxMlYyMEgxNFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlMb3VwZSA9IFwiTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIySDIwQTIsMiAwIDAsMCAyMiwyMFYxMkExMCwxMCAwIDAsMCAxMiwyTTEzLDdIMTFWMTFIN1YxM0gxMVYxN0gxM1YxM0gxN1YxMUgxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaUx1bXggPSBcIk0xMi4zNSwxLjc1TDIwLjEzLDkuNTNMMTMuNzcsMTUuODlMMTIuMzUsMTQuNDdMMTcuMyw5LjUzTDEwLjk0LDMuMTZMMTIuMzUsMS43NU0xNS44OSw5LjUzTDE0LjQ3LDEwLjk0TDEwLjIzLDYuN0w1LjI4LDExLjY1TDMuODcsMTAuMjNMMTAuMjMsMy44N0wxNS44OSw5LjUzTTEwLjIzLDguMTFMMTEuNjUsOS41M0w2LjcsMTQuNDdMMTMuMDYsMjAuODRMMTEuNjUsMjIuMjVMMy44NywxNC40N0wxMC4yMyw4LjExTTguMTEsMTQuNDdMOS41MywxMy4wNkwxMy43NywxNy4zTDE4LjcyLDEyLjM1TDIwLjEzLDEzLjc3TDEzLjc3LDIwLjEzTDguMTEsMTQuNDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTHVuZ3MgPSBcIk0xNS40NyAzLjExQzE1IDIuODUgMTQuMzcgMy4wNSAxNC4xMSAzLjU0QzE0LjA0IDMuNjggMTQgMy44NCAxNCA0VjYuNTlMMTMuMjkgNS44OEMxMy4xIDUuNjkgMTMgNS40NCAxMyA1LjE4VjFIMTFWNS4xN0MxMSA1LjQ0IDEwLjkgNS42OSAxMC43MSA1Ljg4TDEwIDYuNTlWNEMxMCAzLjQ0IDkuNTQgMyA5IDNDOC44MyAzIDguNjcgMy4wNCA4LjUzIDMuMTFDNC43MiA1IDIgOS45NyAyIDE1Ljc3QzIgMTcuNjcgMi4zMyAxOS41NSAzIDIxLjMyQzMuMTkgMjEuODUgMy43NiAyMi4xMyA0LjI5IDIxLjk0QzQuMzQgMjEuOTIgNC4zOSAyMS45IDQuNDQgMjEuODdMOS41IDE5LjA3QzkuODEgMTguOSAxMCAxOC41NiAxMCAxOC4xOVY5LjQxTDExLjMgOC4xMkMxMS42OSA3LjczIDEyLjMyIDcuNzMgMTIuNzEgOC4xMkwxNCA5LjQyVjE4LjJDMTQgMTguNTYgMTQuMjEgMTguOSAxNC41IDE5LjA4TDE5LjU4IDIxLjg4QzIwLjA3IDIyLjE0IDIwLjY4IDIxLjk2IDIwLjk0IDIxLjQ2QzIwLjk2IDIxLjQyIDIxIDIxLjM3IDIxIDIxLjMyQzIxLjY3IDE5LjU1IDIyIDE3LjY3IDIyIDE1Ljc3QzIyIDkuOTcgMTkuMjkgNSAxNS40NyAzLjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25ldCA9IFwiTTMsN1YxM0E5LDkgMCAwLDAgMTIsMjJBOSw5IDAgMCwwIDIxLDEzVjdIMTdWMTNBNSw1IDAgMCwxIDEyLDE4QTUsNSAwIDAsMSA3LDEzVjdNMTcsNUgyMVYySDE3TTMsNUg3VjJIM1wiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25ldE9uID0gXCJNMyw3VjEzQTksOSAwIDAsMCAxMiwyMkE5LDkgMCAwLDAgMjEsMTNWN0gxN1YxM0E1LDUgMCAwLDEgMTIsMThBNSw1IDAgMCwxIDcsMTNWN00xNyw1SDIxVjJIMTdNMyw1SDdWMkgzTTEzLDEuNUw5LDlIMTFWMTQuNUwxNSw3SDEzVjEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWduaWZ5ID0gXCJNOS41LDNBNi41LDYuNSAwIDAsMSAxNiw5LjVDMTYsMTEuMTEgMTUuNDEsMTIuNTkgMTQuNDQsMTMuNzNMMTQuNzEsMTRIMTUuNUwyMC41LDE5TDE5LDIwLjVMMTQsMTUuNVYxNC43MUwxMy43MywxNC40NEMxMi41OSwxNS40MSAxMS4xMSwxNiA5LjUsMTZBNi41LDYuNSAwIDAsMSAzLDkuNUE2LjUsNi41IDAgMCwxIDkuNSwzTTkuNSw1QzcsNSA1LDcgNSw5LjVDNSwxMiA3LDE0IDkuNSwxNEMxMiwxNCAxNCwxMiAxNCw5LjVDMTQsNyAxMiw1IDkuNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlDbG9zZSA9IFwiTTksMkE3LDcgMCAwLDEgMTYsOUMxNiwxMC41IDE1LjUsMTIgMTQuNjEsMTMuMTlMMTUuNDEsMTRIMTZMMjIsMjBMMjAsMjJMMTQsMTZWMTUuNDFMMTMuMTksMTQuNjFDMTIsMTUuNSAxMC41LDE2IDksMTZBNyw3IDAgMCwxIDIsOUE3LDcgMCAwLDEgOSwyTTExLjEyLDUuNDZMOSw3LjU5TDYuODgsNS40Nkw1LjQ2LDYuODhMNy41OSw5TDUuNDYsMTEuMTJMNi44OCwxMi41NEw5LDEwLjQxTDExLjEyLDEyLjU0TDEyLjU0LDExLjEyTDEwLjQxLDlMMTIuNTQsNi44OEwxMS4xMiw1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlNaW51cyA9IFwiTTksMkE3LDcgMCAwLDEgMTYsOUMxNiwxMC41NyAxNS41LDEyIDE0LjYxLDEzLjE5TDE1LjQxLDE0SDE2TDIyLDIwTDIwLDIyTDE0LDE2VjE1LjQxTDEzLjE5LDE0LjYxQzEyLDE1LjUgMTAuNTcsMTYgOSwxNkE3LDcgMCAwLDEgMiw5QTcsNyAwIDAsMSA5LDJNNSw4VjEwSDEzVjhINVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWduaWZ5TWludXNDdXJzb3IgPSBcIk0xMSw0QTcsNyAwIDAsMSAxOCwxMUMxOCwxMi41IDE3LjUsMTQgMTYuNjEsMTUuMTlMMTcuNDIsMTZIMThMMjMsMjFMMjEsMjNMMTYsMThWMTcuNDFMMTUuMTksMTYuNkMxMi4xLDE4LjkyIDcuNzEsMTguMjkgNS4zOSwxNS4yQzMuMDcsMTIuMTEgMy43LDcuNzIgNi43OSw1LjRDOCw0LjUgOS41LDQgMTEsNE03LDEwVjEySDE1VjEwSDdNMSwxVjhMOCwxSDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeU1pbnVzT3V0bGluZSA9IFwiTTE1LjUsMTRIMTQuNzFMMTQuNDMsMTMuNzNDMTUuNDEsMTIuNTkgMTYsMTEuMTEgMTYsOS41QTYuNSw2LjUgMCAwLDAgOS41LDNBNi41LDYuNSAwIDAsMCAzLDkuNUE2LjUsNi41IDAgMCwwIDkuNSwxNkMxMS4xMSwxNiAxMi41OSwxNS40MSAxMy43MywxNC40M0wxNCwxNC43MVYxNS41TDE5LDIwLjVMMjAuNSwxOUwxNS41LDE0TTkuNSwxNEM3LDE0IDUsMTIgNSw5LjVDNSw3IDcsNSA5LjUsNUMxMiw1IDE0LDcgMTQsOS41QzE0LDEyIDEyLDE0IDkuNSwxNE03LDlIMTJWMTBIN1Y5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlQbHVzID0gXCJNOSwyQTcsNyAwIDAsMSAxNiw5QzE2LDEwLjU3IDE1LjUsMTIgMTQuNjEsMTMuMTlMMTUuNDEsMTRIMTZMMjIsMjBMMjAsMjJMMTQsMTZWMTUuNDFMMTMuMTksMTQuNjFDMTIsMTUuNSAxMC41NywxNiA5LDE2QTcsNyAwIDAsMSAyLDlBNyw3IDAgMCwxIDksMk04LDVWOEg1VjEwSDhWMTNIMTBWMTBIMTNWOEgxMFY1SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeVBsdXNDdXJzb3IgPSBcIk0xMSw0QTcsNyAwIDAsMSAxOCwxMUMxOCwxMi41IDE3LjUsMTQgMTYuNjEsMTUuMTlMMTcuNDIsMTZIMThMMjMsMjFMMjEsMjNMMTYsMThWMTcuNDFMMTUuMTksMTYuNkMxMi4xLDE4LjkyIDcuNzEsMTguMjkgNS4zOSwxNS4yQzMuMDcsMTIuMTEgMy43LDcuNzIgNi43OSw1LjRDOCw0LjUgOS41LDQgMTEsNE0xMCw3VjEwSDdWMTJIMTBWMTVIMTJWMTJIMTVWMTBIMTJWN0gxME0xLDFWOEw4LDFIMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWduaWZ5UGx1c091dGxpbmUgPSBcIk0xNS41LDE0TDIwLjUsMTlMMTksMjAuNUwxNCwxNS41VjE0LjcxTDEzLjczLDE0LjQzQzEyLjU5LDE1LjQxIDExLjExLDE2IDkuNSwxNkE2LjUsNi41IDAgMCwxIDMsOS41QTYuNSw2LjUgMCAwLDEgOS41LDNBNi41LDYuNSAwIDAsMSAxNiw5LjVDMTYsMTEuMTEgMTUuNDEsMTIuNTkgMTQuNDMsMTMuNzNMMTQuNzEsMTRIMTUuNU05LjUsMTRDMTIsMTQgMTQsMTIgMTQsOS41QzE0LDcgMTIsNSA5LjUsNUM3LDUgNSw3IDUsOS41QzUsMTIgNywxNCA5LjUsMTRNMTIsMTBIMTBWMTJIOVYxMEg3VjlIOVY3SDEwVjlIMTJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeVJlbW92ZUN1cnNvciA9IFwiTTEgMVY4TDggMUgxTTE4IDE2SDE3LjQyTDE2LjYxIDE1LjE5QzE3LjUgMTQgMTggMTIuNSAxOCAxMUMxOCA3LjEzIDE0Ljg3IDQgMTEgNEM5LjUgNCA4IDQuNSA2Ljc5IDUuNEMzLjcgNy43MiAzLjA3IDEyLjExIDUuMzkgMTUuMkM3LjcxIDE4LjI5IDEyLjEgMTguOTIgMTUuMTkgMTYuNkwxNiAxNy40MVYxOEwyMSAyM0wyMyAyMUwxOCAxNk0xNC42IDEzLjE2TDEzLjE4IDE0LjU4TDExLjA2IDEyLjQ1TDguOTQgMTQuNThMNy41IDEzLjE2TDkuNjUgMTEuMDRMNy41IDguOTJMOC45NCA3LjVMMTEuMDYgOS42M0wxMy4xOCA3LjVMMTQuNiA4LjkyTDEyLjQ3IDExLjA0TDE0LjYgMTMuMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFnbmlmeVJlbW92ZU91dGxpbmUgPSBcIk0xNS41IDE0SDE0LjcxTDE0LjQzIDEzLjczQzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNUMxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2QzExLjExIDE2IDEyLjU5IDE1LjQxIDEzLjczIDE0LjQzTDE0IDE0LjcxVjE1LjVMMTkgMjAuNUwyMC41IDE5TDE1LjUgMTRNOS41IDE0QzcgMTQgNSAxMiA1IDkuNVM3IDUgOS41IDUgMTQgNyAxNCA5LjUgMTIgMTQgOS41IDE0TTEwLjkxIDExLjYyTDkuNSAxMC4yMUw4LjA5IDExLjYyTDcuMzggMTAuOTFMOC43OSA5LjVMNy4zOCA4LjA5TDguMDkgNy4zOEw5LjUgOC43OUwxMC45MSA3LjM4TDExLjYyIDguMDlMMTAuMjEgOS41TDExLjYyIDEwLjkxTDEwLjkxIDExLjYyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hZ25pZnlTY2FuID0gXCJNMTcgMjJWMjBIMjBWMTdIMjJWMjAuNUMyMiAyMC44OSAyMS44NCAyMS4yNCAyMS41NCAyMS41NEMyMS4yNCAyMS44NCAyMC44OSAyMiAyMC41IDIySDE3TTcgMjJIMy41QzMuMTEgMjIgMi43NiAyMS44NCAyLjQ2IDIxLjU0QzIuMTYgMjEuMjQgMiAyMC44OSAyIDIwLjVWMTdINFYyMEg3VjIyTTE3IDJIMjAuNUMyMC44OSAyIDIxLjI0IDIuMTYgMjEuNTQgMi40NkMyMS44NCAyLjc2IDIyIDMuMTEgMjIgMy41VjdIMjBWNEgxN1YyTTcgMlY0SDRWN0gyVjMuNUMyIDMuMTEgMi4xNiAyLjc2IDIuNDYgMi40NkMyLjc2IDIuMTYgMy4xMSAyIDMuNSAySDdNMTAuNSA2QzEzIDYgMTUgOCAxNSAxMC41QzE1IDExLjM4IDE0Ljc1IDEyLjIgMTQuMzEgMTIuOUwxNy41NyAxNi4xNkwxNi4xNiAxNy41N0wxMi45IDE0LjMxQzEyLjIgMTQuNzUgMTEuMzggMTUgMTAuNSAxNUM4IDE1IDYgMTMgNiAxMC41QzYgOCA4IDYgMTAuNSA2TTEwLjUgOEM5LjEyIDggOCA5LjEyIDggMTAuNUM4IDExLjg4IDkuMTIgMTMgMTAuNSAxM0MxMS44OCAxMyAxMyAxMS44OCAxMyAxMC41QzEzIDkuMTIgMTEuODggOCAxMC41IDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbCA9IFwiTTIwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0TTE3LDE3SDdWMTVIMTdNMTcsMTNIN1YxMUgxN00yMCw5SDE3VjZIMjBcIjtcclxuZXhwb3J0IHZhciBtZGlNYWlsYm94ID0gXCJNMTcsNEg3QTUsNSAwIDAsMCAyLDlWMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjlBNSw1IDAgMCwwIDE3LDRNMTAsMThINFY5QTMsMyAwIDAsMSA3LDZBMywzIDAgMCwxIDEwLDlWMThNMTksMTVIMTdWMTNIMTNWMTFIMTlWMTVNOSwxMUg1VjlIOVYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYWlsYm94T3BlbiA9IFwiTTgsNEE1LDUgMCAwLDAgMyw5VjE4SDFWMjBIMjFBMiwyIDAgMCwwIDIzLDE4VjlBNSw1IDAgMCwwIDE4LDRIOE04LDZBMywzIDAgMCwxIDExLDlWMThINVY5QTMsMyAwIDAsMSA4LDZNMTQsMTFIMjBWMTVIMThWMTNIMTRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveE9wZW5PdXRsaW5lID0gXCJNMTQsMTFIMjBWMTVIMThWMTNIMTRWMTFNMTgsNEg4QTUsNSAwIDAsMCAzLDlWMThIMVYyMEgyMUEyLDIgMCAwLDAgMjMsMThWOUE1LDUgMCAwLDAgMTgsNE0xMSwxOEg1VjlBMywzIDAgMCwxIDgsNkEzLDMgMCAwLDEgMTEsOVYxOE0yMSwxOEgxM1Y5QzEzLDcuOTIgMTIuNjUsNi44NiAxMiw2SDE4QTMsMyAwIDAsMSAyMSw5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1haWxib3hPcGVuVXAgPSBcIk04LDRBNSw1IDAgMCwwIDMsOVYxOEgxVjIwSDIxQTIsMiAwIDAsMCAyMywxOFY5QTUsNSAwIDAsMCAxOCw0SDhNOCw2QTMsMyAwIDAsMSAxMSw5VjE4SDVWOUEzLDMgMCAwLDEgOCw2TTEzLDEzVjdIMTdWOUgxNVYxM0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYWlsYm94T3BlblVwT3V0bGluZSA9IFwiTTE0LDEyLjg1VjYuODVIMThWOC44NUgxNlYxMi44NUgxNE0xOCwzLjg1SDhBNSw1IDAgMCwwIDMsOC44NVYxNy44NUgxVjE5Ljg1SDIxQTIsMiAwIDAsMCAyMywxNy44NVY4Ljg1QTUsNSAwIDAsMCAxOCwzLjg1TTExLDE3Ljg1SDVWOC44NUEzLDMgMCAwLDEgOCw1Ljg1QTMsMyAwIDAsMSAxMSw4Ljg1VjE3Ljg1TTIxLDE3Ljg1SDEzVjguODVDMTMsNy43NiAxMi42NSw2LjcxIDEyLDUuODVIMThBMywzIDAgMCwxIDIxLDguODVWMTcuODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveE91dGxpbmUgPSBcIk0xNyw0SDdBNSw1IDAgMCwwIDIsOVYyMEgyMEEyLDIgMCAwLDAgMjIsMThWOUE1LDUgMCAwLDAgMTcsNE0xMCwxOEg0VjlBMywzIDAgMCwxIDcsNkEzLDMgMCAwLDEgMTAsOVYxOE0yMCwxOEgxMlY5QzEyLDcuOTIgMTEuNjUsNi44NiAxMSw2SDE3QTMsMyAwIDAsMSAyMCw5VjE4TTEzLDExVjEzSDE3VjE1SDE5VjExSDEzTTksMTFINVY5SDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveFVwID0gXCJNNSw5SDlWMTFINVY5TTIyLDlWMThBMiwyIDAgMCwxIDIwLDIwSDJWOUE1LDUgMCAwLDEgNyw0SDE3QTUsNSAwIDAsMSAyMiw5TTEwLDlBMywzIDAgMCwwIDcsNkEzLDMgMCAwLDAgNCw5VjE4SDEwVjlNMTYsN0gxMlYxM0gxNFY5SDE2VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFpbGJveFVwT3V0bGluZSA9IFwiTTE3LDRIN0E1LDUgMCAwLDAgMiw5VjIwSDIwQTIsMiAwIDAsMCAyMiwxOFY5QTUsNSAwIDAsMCAxNyw0TTEwLDE4SDRWOUEzLDMgMCAwLDEgNyw2QTMsMyAwIDAsMSAxMCw5VjE4TTIwLDE4SDEyVjlDMTIsNy45MiAxMS42NSw2Ljg2IDExLDZIMTdBMywzIDAgMCwxIDIwLDlWMThNMTMsMTNIMTVWOUgxN1Y3SDEzVjEzTTksMTFINVY5SDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFuamFybyA9IFwiTTIgMlYyMkg3LjZWNy42SDE0LjhWMkgyTTkuMiA5LjJWMjJIMTQuOFY5LjJIOS4yTTE2LjQgMlYyMkgyMlYySDE2LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwID0gXCJNMTUsMTlMOSwxNi44OVY1TDE1LDcuMTFNMjAuNSwzQzIwLjQ0LDMgMjAuMzksMyAyMC4zNCwzTDE1LDUuMUw5LDNMMy4zNiw0LjlDMy4xNSw0Ljk3IDMsNS4xNSAzLDUuMzhWMjAuNUEwLjUsMC41IDAgMCwwIDMuNSwyMUMzLjU1LDIxIDMuNjEsMjEgMy42NiwyMC45N0w5LDE4LjlMMTUsMjFMMjAuNjQsMTkuMUMyMC44NSwxOSAyMSwxOC44NSAyMSwxOC42MlYzLjVBMC41LDAuNSAwIDAsMCAyMC41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwQ2hlY2sgPSBcIk0xOC4yNSwyMkwxNS41LDE5TDE2LjY2LDE3LjgyTDE4LjI1LDE5LjQxTDIxLjg0LDE1LjgyTDIzLDE3LjIzTTIwLjUsM0EwLjUsMC41IDAgMCwxIDIxLDMuNVYxMy4zNkMyMC4zNiwxMy4xMyAxOS42OSwxMyAxOSwxM0MxNy40NiwxMyAxNi4wNiwxMy42IDE1LDE0LjU2VjcuMUw5LDVWMTYuOUwxMy4wNCwxOC4zQzEzLDE4LjU0IDEzLDE4Ljc3IDEzLDE5QzEzLDE5LjQ2IDEzLjA2LDE5LjkyIDEzLjE2LDIwLjM2TDksMTguOUwzLjY2LDIwLjk3QzMuNTksMjEgMy41NSwyMSAzLjUsMjFBMC41LDAuNSAwIDAsMSAzLDIwLjVWNS4zOEMzLDUuMTUgMy4xNiw0Ljk3IDMuMzUsNC45TDksM0wxNSw1LjFMMjAuMzMsM1wiO1xyXG5leHBvcnQgdmFyIG1kaU1hcENoZWNrT3V0bGluZSA9IFwiTTE4LjI1LDIyTDE1LjUsMTlMMTYuNjYsMTcuODJMMTguMjUsMTkuNDFMMjEuODQsMTUuODJMMjMsMTcuMjNMMTguMjUsMjJNMjAuNSwzQTAuNSwwLjUgMCAwLDEgMjEsMy41VjEzLjM0QzIwLjM3LDEzLjEyIDE5LjcsMTMgMTksMTNWNS43TDE2LDYuODZWMTMuOEMxNS4yLDE0LjI3IDE0LjUsMTQuOTEgMTQsMTUuNjhWNi44N0wxMCw1LjQ3VjE3LjEzTDEzLjA1LDE4LjJMMTMsMTlDMTMsMTkuNDYgMTMuMDUsMTkuOTIgMTMuMTUsMjAuMzVMOSwxOC45TDMuNjYsMjAuOTdMMy41LDIxQTAuNSwwLjUgMCAwLDEgMywyMC41VjUuMzhDMyw1LjE1IDMuMTUsNC45NyAzLjM2LDQuOUw5LDNMMTUsNS4xTDIwLjM0LDMuMDNMMjAuNSwzTTUsNi40NlYxOC4zMUw4LDE3LjE1VjUuNDVMNSw2LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcENsb2NrID0gXCJNMTUsMTJIMTYuNVYxNi4yNUwxOS4zNiwxNy45NEwxOC42MSwxOS4xNkwxNSwxN1YxMk0yMywxNkE3LDcgMCAwLDEgMTYsMjNDMTMsMjMgMTAuNCwyMS4wOCA5LjQyLDE4LjRMOCwxNy45TDIuNjYsMTkuOTdMMi41LDIwQTAuNSwwLjUgMCAwLDEgMiwxOS41VjQuMzhDMiw0LjE1IDIuMTUsMy45NyAyLjM2LDMuOUw4LDJMMTQsNC4xTDE5LjM0LDJIMTkuNUEwLjUsMC41IDAgMCwxIDIwLDIuNVYxMC4yNUMyMS44MSwxMS41IDIzLDEzLjYyIDIzLDE2TTksMTZDOSwxMi44MyAxMS4xMSwxMC4xNSAxNCw5LjI5VjYuMTFMOCw0VjE1Ljg5TDksMTYuMjRDOSwxNi4xNiA5LDE2LjA4IDksMTZNMTYsMTFBNSw1IDAgMCwwIDExLDE2QTUsNSAwIDAsMCAxNiwyMUE1LDUgMCAwLDAgMjEsMTZBNSw1IDAgMCwwIDE2LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcENsb2NrT3V0bGluZSA9IFwiTTE1LDEySDE2LjVWMTYuMjVMMTkuMzYsMTcuOTRMMTguNjEsMTkuMTZMMTUsMTdWMTJNMTYsOUMxNi42OSw5IDE3LjM3LDkuMSAxOCw5LjI5VjQuN0wxNSw1Ljg2VjkuMDdDMTUuMzMsOSAxNS42Niw5IDE2LDlNMjMsMTZBNyw3IDAgMCwxIDE2LDIzQzEzLDIzIDEwLjQsMjEuMDggOS40MiwxOC40TDgsMTcuOUwyLjY2LDE5Ljk3TDIuNSwyMEEwLjUsMC41IDAgMCwxIDIsMTkuNVY0LjM4QzIsNC4xNSAyLjE1LDMuOTcgMi4zNiwzLjlMOCwyTDE0LDQuMUwxOS4zNCwyLjAzTDE5LjUsMkEwLjUsMC41IDAgMCwxIDIwLDIuNVYxMC4yNUMyMS44MSwxMS41IDIzLDEzLjYyIDIzLDE2TTksMTZDOSwxMy4yMSAxMC42MywxMC44IDEzLDkuNjdWNS44N0w5LDQuNDdWMTYuMTNIOUM5LDE2LjA5IDksMTYuMDQgOSwxNk0xNiwxMUE1LDUgMCAwLDAgMTEsMTZBNSw1IDAgMCwwIDE2LDIxQTUsNSAwIDAsMCAyMSwxNkE1LDUgMCAwLDAgMTYsMTFNNCw1LjQ2VjE3LjMxTDcsMTYuMTVWNC40NUw0LDUuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTGVnZW5kID0gXCJNOSwzTDMuMzYsNC45QzMuMTUsNC45NyAzLDUuMTUgMyw1LjM4VjIwLjVBMC41LDAuNSAwIDAsMCAzLjUsMjFMMy42NiwyMC45N0w5LDE4LjlMMTUsMjFMMjAuNjQsMTkuMUMyMC44NSwxOS4wMyAyMSwxOC44NSAyMSwxOC42MlYzLjVBMC41LDAuNSAwIDAsMCAyMC41LDNMMjAuMzQsMy4wM0wxNSw1LjFMOSwzTTgsNS40NVYxNy4xNUw1LDE4LjMxVjYuNDZMOCw1LjQ1TTEwLDUuNDdMMTQsNi44N1YxOC41M0wxMCwxNy4xM1Y1LjQ3TTE5LDUuN1YxNy41NEwxNiwxOC41NVY2Ljg2TDE5LDUuN003LjQ2LDYuM0w1LjU3LDYuOTdWOS4xMkw3LjQ2LDguNDVWNi4zTTcuNDYsOS4wNUw1LjU3LDkuNzJWMTEuODdMNy40NiwxMS4yVjkuMDVNNy40NiwxMS44TDUuNTcsMTIuNDdWMTQuNjJMNy40NiwxMy45NVYxMS44TTcuNDYsMTQuNTVMNS41NywxNS4yMlYxNy4zN0w3LjQ2LDE2LjdWMTQuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyID0gXCJNMTIsMTEuNUEyLjUsMi41IDAgMCwxIDkuNSw5QTIuNSwyLjUgMCAwLDEgMTIsNi41QTIuNSwyLjUgMCAwLDEgMTQuNSw5QTIuNSwyLjUgMCAwLDEgMTIsMTEuNU0xMiwyQTcsNyAwIDAsMCA1LDlDNSwxNC4yNSAxMiwyMiAxMiwyMkMxMiwyMiAxOSwxNC4yNSAxOSw5QTcsNyAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlckFsZXJ0ID0gXCJNMTIgMkMxNS45IDIgMTkgNS4xIDE5IDlDMTkgMTQuMiAxMiAyMiAxMiAyMlM1IDE0LjIgNSA5QzUgNS4xIDguMSAyIDEyIDJNMTEgNlYxMkgxM1Y2SDExTTExIDE0VjE2SDEzVjE0SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlckFsZXJ0T3V0bGluZSA9IFwiTTEyLDJBNyw3IDAgMCwxIDE5LDlDMTksMTQuMjUgMTIsMjIgMTIsMjJDMTIsMjIgNSwxNC4yNSA1LDlBNyw3IDAgMCwxIDEyLDJNMTIsNEE1LDUgMCAwLDAgNyw5QzcsMTAgNywxMiAxMiwxOC43MUMxNywxMiAxNywxMCAxNyw5QTUsNSAwIDAsMCAxMiw0TTExLDZIMTNWMTFIMTFWNk0xMSwxM0gxM1YxNUgxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJDaGVjayA9IFwiTTEyLDJDMTUuODYsMiAxOSw1LjE0IDE5LDlDMTksMTQuMjUgMTIsMjIgMTIsMjJDMTIsMjIgNSwxNC4yNSA1LDlDNSw1LjE0IDguMTQsMiAxMiwyTTEwLjQ3LDE0TDE3LDcuNDFMMTUuNiw2TDEwLjQ3LDExLjE4TDguNCw5LjA5TDcsMTAuNUwxMC40NywxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJDaGVja091dGxpbmUgPSBcIk0xMiA0QzE0LjggNCAxNyA2LjIgMTcgOUMxNyAxMS45IDE0LjEgMTYuMiAxMiAxOC45QzkuOSAxNi4yIDcgMTEuOSA3IDlDNyA2LjIgOS4yIDQgMTIgNE0xMiAyQzguMSAyIDUgNS4xIDUgOUM1IDE0LjIgMTIgMjIgMTIgMjJTMTkgMTQuMiAxOSA5QzE5IDUuMSAxNS45IDIgMTIgMk0xMS4zIDE0TDE2LjIgOUwxNC44IDcuNkwxMS4zIDExLjJMOS43IDkuNkw4LjMgMTFMMTEuMyAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJDaXJjbGUgPSBcIk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDEyLjVBMS41LDEuNSAwIDAsMSAxMC41LDExQTEuNSwxLjUgMCAwLDEgMTIsOS41QTEuNSwxLjUgMCAwLDEgMTMuNSwxMUExLjUsMS41IDAgMCwxIDEyLDEyLjVNMTIsNy4yQzkuOSw3LjIgOC4yLDguOSA4LjIsMTFDOC4yLDE0IDEyLDE3LjUgMTIsMTcuNUMxMiwxNy41IDE1LjgsMTQgMTUuOCwxMUMxNS44LDguOSAxNC4xLDcuMiAxMiw3LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyRGlzdGFuY2UgPSBcIk02LjUsOC4xMUM1LjYxLDguMTEgNC44OSw3LjM5IDQuODksNi41QTEuNjEsMS42MSAwIDAsMSA2LjUsNC44OUM3LjM5LDQuODkgOC4xMSw1LjYxIDguMTEsNi41VjYuNUExLjYxLDEuNjEgMCAwLDEgNi41LDguMTFNNi41LDJDNCwyIDIsNCAyLDYuNUMyLDkuODcgNi41LDE0Ljg2IDYuNSwxNC44NkM2LjUsMTQuODYgMTEsOS44NyAxMSw2LjVDMTEsNCA5LDIgNi41LDJNMTcuNSw4LjExQTEuNjEsMS42MSAwIDAsMSAxNS44OSw2LjVDMTUuODksNS42MSAxNi42MSw0Ljg5IDE3LjUsNC44OUMxOC4zOSw0Ljg5IDE5LjExLDUuNjEgMTkuMTEsNi41QTEuNjEsMS42MSAwIDAsMSAxNy41LDguMTFNMTcuNSwyQzE1LDIgMTMsNCAxMyw2LjVDMTMsOS44NyAxNy41LDE0Ljg2IDE3LjUsMTQuODZDMTcuNSwxNC44NiAyMiw5Ljg3IDIyLDYuNUMyMiw0IDIwLDIgMTcuNSwyTTE3LjUsMTZDMTYuMjMsMTYgMTUuMSwxNi44IDE0LjY4LDE4SDkuMzJDOC43NywxNi40NCA3LjA1LDE1LjYyIDUuNSwxNi4xN0MzLjkzLDE2LjcyIDMuMTEsMTguNDQgMy42NiwyMEM0LjIyLDIxLjU2IDUuOTMsMjIuMzggNy41LDIxLjgzQzguMzUsMjEuNTMgOSwyMC44NSA5LjMyLDIwSDE0LjY5QzE1LjI0LDIxLjU2IDE2Ljk2LDIyLjM4IDE4LjUsMjEuODNDMjAuMDgsMjEuMjggMjAuOSwxOS41NiAyMC4zNSwxOEMxOS45MiwxNi44IDE4Ljc4LDE2IDE3LjUsMTZWMTZNMTcuNSwyMC41QTEuNSwxLjUgMCAwLDEgMTYsMTlBMS41LDEuNSAwIDAsMSAxNy41LDE3LjVBMS41LDEuNSAwIDAsMSAxOSwxOUExLjUsMS41IDAgMCwxIDE3LjUsMjAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJEb3duID0gXCJNMTIgMkE3IDcgMCAwIDAgNSA5QzUgMTQuMjUgMTIgMjIgMTIgMjJTMTkgMTQuMjUgMTkgOUE3IDcgMCAwIDAgMTIgMk03LjUgMTBIMTBWNUgxNFYxMEgxNi41TDEyIDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTGVmdCA9IFwiTTE1IDExLjVDMTMuNjIgMTEuNSAxMi41IDEwLjM4IDEyLjUgOVMxMy42MiA2LjUgMTUgNi41IDE3LjUgNy42MiAxNy41IDkgMTYuMzggMTEuNSAxNSAxMS41TTggOUM4IDE0LjI1IDE1IDIyIDE1IDIyUzIyIDE0LjI1IDIyIDlDMjIgNS4xMyAxOC44NyAyIDE1IDJTOCA1LjEzIDggOU02IDdMMSAxMkw2IDE3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTGVmdE91dGxpbmUgPSBcIk0xNSA2LjVDMTYuMzggNi41IDE3LjUgNy42MiAxNy41IDlTMTYuMzggMTEuNSAxNSAxMS41IDEyLjUgMTAuMzggMTIuNSA5IDEzLjYyIDYuNSAxNSA2LjVNMTUgMkMxOC44NyAyIDIyIDUuMTMgMjIgOUMyMiAxNC4yNSAxNSAyMiAxNSAyMlM4IDE0LjI1IDggOUM4IDUuMTMgMTEuMTMgMiAxNSAyTTEwIDlDMTAgMTAgMTAgMTIgMTUgMTguNzFDMjAgMTIgMjAgMTAgMjAgOUMyMCA2LjI0IDE3Ljc2IDQgMTUgNFMxMCA2LjI0IDEwIDlNNiA3TDEgMTJMNiAxN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlck1pbnVzID0gXCJNOSwxMS41QTIuNSwyLjUgMCAwLDAgMTEuNSw5QTIuNSwyLjUgMCAwLDAgOSw2LjVBMi41LDIuNSAwIDAsMCA2LjUsOUEyLjUsMi41IDAgMCwwIDksMTEuNU05LDJDMTIuODYsMiAxNiw1LjEzIDE2LDlDMTYsMTQuMjUgOSwyMiA5LDIyQzksMjIgMiwxNC4yNSAyLDlBNyw3IDAgMCwxIDksMk0xNSwxN0gyM1YxOUgxNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJNaW51c091dGxpbmUgPSBcIk0xNSAxN0gyM1YxOUgxNVYxN005IDYuNUMxMC40IDYuNSAxMS41IDcuNiAxMS41IDlTMTAuNCAxMS41IDkgMTEuNSA2LjUgMTAuNCA2LjUgOSA3LjYgNi41IDkgNi41TTkgMkMxMi45IDIgMTYgNS4xIDE2IDlDMTYgMTQuMiA5IDIyIDkgMjJTMiAxNC4yIDIgOUMyIDUuMSA1LjEgMiA5IDJNOSA0QzYuMiA0IDQgNi4yIDQgOUM0IDEwIDQgMTIgOSAxOC43QzE0IDEyIDE0IDEwIDE0IDlDMTQgNi4yIDExLjggNCA5IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTXVsdGlwbGUgPSBcIk0xNCwxMS41QTIuNSwyLjUgMCAwLDAgMTYuNSw5QTIuNSwyLjUgMCAwLDAgMTQsNi41QTIuNSwyLjUgMCAwLDAgMTEuNSw5QTIuNSwyLjUgMCAwLDAgMTQsMTEuNU0xNCwyQzE3Ljg2LDIgMjEsNS4xMyAyMSw5QzIxLDE0LjI1IDE0LDIyIDE0LDIyQzE0LDIyIDcsMTQuMjUgNyw5QTcsNyAwIDAsMSAxNCwyTTUsOUM1LDEzLjUgMTAuMDgsMTkuNjYgMTEsMjAuODFMMTAsMjJDMTAsMjIgMywxNC4yNSAzLDlDMyw1LjgzIDUuMTEsMy4xNSA4LDIuMjlDNi4xNiwzLjk0IDUsNi4zMyA1LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyTXVsdGlwbGVPdXRsaW5lID0gXCJNMTEuNSA5QzExLjUgNy42MiAxMi42MiA2LjUgMTQgNi41QzE1LjEgNi41IDE2LjAzIDcuMjEgMTYuMzcgOC4xOUMxNi40NSA4LjQ1IDE2LjUgOC43MiAxNi41IDlDMTYuNSAxMC4zOCAxNS4zOCAxMS41IDE0IDExLjVDMTIuOTEgMTEuNSAxMiAxMC44MSAxMS42NCA5Ljg0QzExLjU1IDkuNTggMTEuNSA5LjI5IDExLjUgOU01IDlDNSAxMy41IDEwLjA4IDE5LjY2IDExIDIwLjgxTDEwIDIyQzEwIDIyIDMgMTQuMjUgMyA5QzMgNS44MyA1LjExIDMuMTUgOCAyLjI5QzYuMTYgMy45NCA1IDYuMzMgNSA5TTE0IDJDMTcuODYgMiAyMSA1LjEzIDIxIDlDMjEgMTQuMjUgMTQgMjIgMTQgMjJDMTQgMjIgNyAxNC4yNSA3IDlDNyA1LjEzIDEwLjE0IDIgMTQgMk0xNCA0QzExLjI0IDQgOSA2LjI0IDkgOUM5IDEwIDkgMTIgMTQgMTguNzFDMTkgMTIgMTkgMTAgMTkgOUMxOSA2LjI0IDE2Ljc2IDQgMTQgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJPZmYgPSBcIk0xNi4zNywxNi4xTDExLjc1LDExLjQ3TDExLjY0LDExLjM2TDMuMjcsM0wyLDQuMjdMNS4xOCw3LjQ1QzUuMDYsNy45NSA1LDguNDYgNSw5QzUsMTQuMjUgMTIsMjIgMTIsMjJDMTIsMjIgMTMuNjcsMjAuMTUgMTUuMzcsMTcuNjVMMTguNzMsMjFMMjAsMTkuNzJNMTIsNi41QTIuNSwyLjUgMCAwLDEgMTQuNSw5QzE0LjUsOS43MyAxNC4xNywxMC4zOSAxMy42NywxMC44NUwxNy4zLDE0LjVDMTguMjgsMTIuNjIgMTksMTAuNjggMTksOUE3LDcgMCAwLDAgMTIsMkMxMCwyIDguMjQsMi44MiA2Ljk2LDQuMTRMMTAuMTUsNy4zM0MxMC42MSw2LjgyIDExLjI2LDYuNSAxMiw2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyT2ZmT3V0bGluZSA9IFwiTTIwIDE5LjdMMy4zIDNMMiA0LjNMNS4yIDcuNUM1LjEgOCA1IDguNSA1IDlDNSAxNC4yIDEyIDIyIDEyIDIyUzEzLjcgMjAuMSAxNS40IDE3LjZMMTguOCAyMUwyMCAxOS43TTEyIDE4LjdDNy40IDEyLjUgNyAxMC40IDcgOS4zTDEzLjggMTYuMUMxMy4zIDE2LjkgMTIuNyAxNy43IDEyIDE4LjdNOC40IDUuNkw3IDQuMkM4LjIgMi44IDEwIDIgMTIgMkMxNS45IDIgMTkgNS4xIDE5IDlDMTkgMTAuNyAxOC4zIDEyLjYgMTcuMyAxNC41TDE1LjggMTNDMTcgMTAuNiAxNyA5LjYgMTcgOUMxNyA2LjIgMTQuOCA0IDEyIDRDMTAuNiA0IDkuMyA0LjYgOC40IDUuNk0xMiA2LjVDMTMuNCA2LjUgMTQuNSA3LjYgMTQuNSA5QzE0LjUgOS43IDE0LjIgMTAuNCAxMy43IDEwLjlMMTAuMiA3LjRDMTAuNiA2LjggMTEuMyA2LjUgMTIgNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlck91dGxpbmUgPSBcIk0xMiw2LjVBMi41LDIuNSAwIDAsMSAxNC41LDlBMi41LDIuNSAwIDAsMSAxMiwxMS41QTIuNSwyLjUgMCAwLDEgOS41LDlBMi41LDIuNSAwIDAsMSAxMiw2LjVNMTIsMkE3LDcgMCAwLDEgMTksOUMxOSwxNC4yNSAxMiwyMiAxMiwyMkMxMiwyMiA1LDE0LjI1IDUsOUE3LDcgMCAwLDEgMTIsMk0xMiw0QTUsNSAwIDAsMCA3LDlDNywxMCA3LDEyIDEyLDE4LjcxQzE3LDEyIDE3LDEwIDE3LDlBNSw1IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUGF0aCA9IFwiTTE4LDE1QTMsMyAwIDAsMSAyMSwxOEEzLDMgMCAwLDEgMTgsMjFDMTYuNjksMjEgMTUuNTgsMjAuMTcgMTUuMTcsMTlIMTRWMTdIMTUuMTdDMTUuNTgsMTUuODMgMTYuNjksMTUgMTgsMTVNMTgsMTdBMSwxIDAgMCwwIDE3LDE4QTEsMSAwIDAsMCAxOCwxOUExLDEgMCAwLDAgMTksMThBMSwxIDAgMCwwIDE4LDE3TTE4LDhBMS40MywxLjQzIDAgMCwwIDE5LjQzLDYuNTdDMTkuNDMsNS43OCAxOC43OSw1LjE0IDE4LDUuMTRDMTcuMjEsNS4xNCAxNi41Nyw1Ljc4IDE2LjU3LDYuNTdBMS40MywxLjQzIDAgMCwwIDE4LDhNMTgsMi41N0E0LDQgMCAwLDEgMjIsNi41N0MyMiw5LjU2IDE4LDE0IDE4LDE0QzE4LDE0IDE0LDkuNTYgMTQsNi41N0E0LDQgMCAwLDEgMTgsMi41N004LjgzLDE3SDEwVjE5SDguODNDOC40MiwyMC4xNyA3LjMxLDIxIDYsMjFBMywzIDAgMCwxIDMsMThDMywxNi42OSAzLjgzLDE1LjU4IDUsMTUuMTdWMTRIN1YxNS4xN0M3Ljg1LDE1LjQ3IDguNTMsMTYuMTUgOC44MywxN002LDE3QTEsMSAwIDAsMCA1LDE4QTEsMSAwIDAsMCA2LDE5QTEsMSAwIDAsMCA3LDE4QTEsMSAwIDAsMCA2LDE3TTYsM0EzLDMgMCAwLDEgOSw2QzksNy4zMSA4LjE3LDguNDIgNyw4LjgzVjEwSDVWOC44M0MzLjgzLDguNDIgMyw3LjMxIDMsNkEzLDMgMCAwLDEgNiwzTTYsNUExLDEgMCAwLDAgNSw2QTEsMSAwIDAsMCA2LDdBMSwxIDAgMCwwIDcsNkExLDEgMCAwLDAgNiw1TTExLDE5VjE3SDEzVjE5SDExTTcsMTNINVYxMUg3VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclBsdXMgPSBcIk05LDExLjVBMi41LDIuNSAwIDAsMCAxMS41LDlBMi41LDIuNSAwIDAsMCA5LDYuNUEyLjUsMi41IDAgMCwwIDYuNSw5QTIuNSwyLjUgMCAwLDAgOSwxMS41TTksMkMxMi44NiwyIDE2LDUuMTMgMTYsOUMxNiwxNC4yNSA5LDIyIDksMjJDOSwyMiAyLDE0LjI1IDIsOUE3LDcgMCAwLDEgOSwyTTE1LDE3SDE4VjE0SDIwVjE3SDIzVjE5SDIwVjIySDE4VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclBsdXNPdXRsaW5lID0gXCJNMTUgMTdIMThWMTRIMjBWMTdIMjNWMTlIMjBWMjJIMThWMTlIMTVWMTdNOSA2LjVDMTAuNCA2LjUgMTEuNSA3LjYgMTEuNSA5UzEwLjQgMTEuNSA5IDExLjUgNi41IDEwLjQgNi41IDkgNy42IDYuNSA5IDYuNU05IDJDMTIuOSAyIDE2IDUuMSAxNiA5QzE2IDE0LjIgOSAyMiA5IDIyUzIgMTQuMiAyIDlDMiA1LjEgNS4xIDIgOSAyTTkgNEM2LjIgNCA0IDYuMiA0IDlDNCAxMCA0IDEyIDkgMTguN0MxNCAxMiAxNCAxMCAxNCA5QzE0IDYuMiAxMS44IDQgOSA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclF1ZXN0aW9uID0gXCJNMTIsMkM4LjE0LDIgNSw1LjE0IDUsOUM1LDE0LjI1IDEyLDIyIDEyLDIyQzEyLDIyIDE5LDE0LjI1IDE5LDlDMTksNS4xNCAxNS44NiwyIDEyLDJNMTIuODgsMTUuNzVIMTEuMTNWMTRIMTIuODhNMTIuODgsMTIuODhIMTEuMTNDMTEuMTMsMTAuMDQgMTMuNzUsMTAuMjYgMTMuNzUsOC41QTEuNzUsMS43NSAwIDAsMCAxMiw2Ljc1QTEuNzUsMS43NSAwIDAsMCAxMC4yNSw4LjVIOC41QTMuNSwzLjUgMCAwLDEgMTIsNUEzLjUsMy41IDAgMCwxIDE1LjUsOC41QzE1LjUsMTAuNjkgMTIuODgsMTAuOTEgMTIuODgsMTIuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUXVlc3Rpb25PdXRsaW5lID0gXCJNMTIsMUM3LjU5LDEgNCw0LjU5IDQsOUM0LDE0LjU3IDEwLjk2LDIyLjM0IDExLjI2LDIyLjY3TDEyLDIzLjVMMTIuNzQsMjIuNjdDMTMuMDQsMjIuMzQgMjAsMTQuNTcgMjAsOUMyMCw0LjU5IDE2LjQxLDEgMTIsMU0xMiwyMC40N0M5LjgyLDE3Ljg2IDYsMTIuNTQgNiw5QTYsNiAwIDAsMSAxMiwzQTYsNiAwIDAsMSAxOCw5QzE4LDEyLjgzIDEzLjc1LDE4LjM2IDEyLDIwLjQ3TTExLjEzLDE0SDEyLjg4VjE1Ljc1SDExLjEzTTEyLDVBMy41LDMuNSAwIDAsMCA4LjUsOC41SDEwLjI1QTEuNzUsMS43NSAwIDAsMSAxMiw2Ljc1QTEuNzUsMS43NSAwIDAsMSAxMy43NSw4LjVDMTMuNzUsMTAuMjYgMTEuMTMsMTAuMDQgMTEuMTMsMTIuODhIMTIuODhDMTIuODgsMTAuOTEgMTUuNSwxMC42OSAxNS41LDguNUEzLjUsMy41IDAgMCwwIDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmFkaXVzID0gXCJNMTIsMkMxNS4zMSwyIDE4LDQuNjYgMTgsNy45NUMxOCwxMi40MSAxMiwxOSAxMiwxOUMxMiwxOSA2LDEyLjQxIDYsNy45NUM2LDQuNjYgOC42OSwyIDEyLDJNMTIsNkEyLDIgMCAwLDAgMTAsOEEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDE0LDhBMiwyIDAgMCwwIDEyLDZNMjAsMTlDMjAsMjEuMjEgMTYuNDIsMjMgMTIsMjNDNy41OCwyMyA0LDIxLjIxIDQsMTlDNCwxNy43MSA1LjIyLDE2LjU2IDcuMTEsMTUuODNMNy43NSwxNi43NEM2LjY3LDE3LjE5IDYsMTcuODEgNiwxOC41QzYsMTkuODggOC42OSwyMSAxMiwyMUMxNS4zMSwyMSAxOCwxOS44OCAxOCwxOC41QzE4LDE3LjgxIDE3LjMzLDE3LjE5IDE2LjI1LDE2Ljc0TDE2Ljg5LDE1LjgzQzE4Ljc4LDE2LjU2IDIwLDE3LjcxIDIwLDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclJhZGl1c091dGxpbmUgPSBcIk0xMiA0QzE0LjIgNCAxNiA1LjggMTYgOEMxNiAxMC4xIDEzLjkgMTMuNSAxMiAxNS45QzEwLjEgMTMuNCA4IDEwLjEgOCA4QzggNS44IDkuOCA0IDEyIDRNMTIgMkM4LjcgMiA2IDQuNyA2IDhDNiAxMi41IDEyIDE5IDEyIDE5UzE4IDEyLjQgMTggOEMxOCA0LjcgMTUuMyAyIDEyIDJNMTIgNkMxMC45IDYgMTAgNi45IDEwIDhTMTAuOSAxMCAxMiAxMCAxNCA5LjEgMTQgOCAxMy4xIDYgMTIgNk0yMCAxOUMyMCAyMS4yIDE2LjQgMjMgMTIgMjNTNCAyMS4yIDQgMTlDNCAxNy43IDUuMiAxNi42IDcuMSAxNS44TDcuNyAxNi43QzYuNyAxNy4yIDYgMTcuOCA2IDE4LjVDNiAxOS45IDguNyAyMSAxMiAyMVMxOCAxOS45IDE4IDE4LjVDMTggMTcuOCAxNy4zIDE3LjIgMTYuMiAxNi43TDE2LjggMTUuOEMxOC44IDE2LjYgMjAgMTcuNyAyMCAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJSZW1vdmUgPSBcIk05LDJDNS4xNCwyIDIsNS4xNCAyLDlDMiwxNC4yNSA5LDIyIDksMjJDOSwyMiAxNiwxNC4yNSAxNiw5QTcsNyAwIDAsMCA5LDJNOSw2LjVBMi41LDIuNSAwIDAsMSAxMS41LDlBMi41LDIuNSAwIDAsMSA5LDExLjVBMi41LDIuNSAwIDAsMSA2LjUsOUEyLjUsMi41IDAgMCwxIDksNi41TTE2LjU4LDE0LjE2TDE1LjE3LDE1LjU4TDE3LjU4LDE4TDE1LjE3LDIwLjQxTDE2LjU4LDIxLjgyTDE5LDE5LjQxTDIxLjQxLDIxLjgyTDIyLjgzLDIwLjQxTDIwLjQxLDE4TDIyLjgzLDE1LjU4TDIxLjQxLDE0LjE2TDE5LDE2LjU4XCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmVtb3ZlT3V0bGluZSA9IFwiTTE2LjYgMTQuMkwxNS4yIDE1LjZMMTcuNiAxOEwxNS4yIDIwLjRMMTYuNiAyMS44TDE5IDE5LjRMMjEuNCAyMS44TDIyLjggMjAuNEwyMC40IDE4TDIyLjggMTUuNkwyMS40IDE0LjJMMTkgMTYuNk05IDYuNUMxMC40IDYuNSAxMS41IDcuNiAxMS41IDlTMTAuNCAxMS41IDkgMTEuNSA2LjUgMTAuNCA2LjUgOSA3LjYgNi41IDkgNi41TTkgMkMxMi45IDIgMTYgNS4xIDE2IDlDMTYgMTQuMiA5IDIyIDkgMjJTMiAxNC4yIDIgOUMyIDUuMSA1LjEgMiA5IDJNOSA0QzYuMiA0IDQgNi4yIDQgOUM0IDEwIDQgMTIgOSAxOC43QzE0IDEyIDE0IDEwIDE0IDlDMTQgNi4yIDExLjggNCA5IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmVtb3ZlVmFyaWFudCA9IFwiTTEyLDJDOC4xNCwyIDUsNS4xNCA1LDlDNSwxNC4yNSAxMiwyMiAxMiwyMkMxMiwyMiAxOSwxNC4yNSAxOSw5QzE5LDUuMTQgMTUuODYsMiAxMiwyTTkuNTksNS4xN0wxMiw3LjU4TDE0LjQxLDUuMTdMMTUuODMsNi41OEwxMy40MSw5TDE1LjgzLDExLjQxTDE0LjQxLDEyLjgzTDEyLDEwLjQxTDkuNTksMTIuODNMOC4xNywxMS40MUwxMC41OSw5TDguMTcsNi41OFwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclJpZ2h0ID0gXCJNOSAxMS41QzcuNjIgMTEuNSA2LjUgMTAuMzggNi41IDlTNy42MiA2LjUgOSA2LjUgMTEuNSA3LjYyIDExLjUgOSAxMC4zOCAxMS41IDkgMTEuNU05IDJDNS4xMyAyIDIgNS4xMyAyIDlDMiAxNC4yNSA5IDIyIDkgMjJTMTYgMTQuMjUgMTYgOUMxNiA1LjEzIDEyLjg3IDIgOSAyTTE4IDE3TDIzIDEyTDE4IDdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwTWFya2VyUmlnaHRPdXRsaW5lID0gXCJNOSA2LjVDMTAuMzggNi41IDExLjUgNy42MiAxMS41IDlTMTAuMzggMTEuNSA5IDExLjUgNi41IDEwLjM4IDYuNSA5IDcuNjIgNi41IDkgNi41TTkgMkMxMi44NyAyIDE2IDUuMTMgMTYgOUMxNiAxNC4yNSA5IDIyIDkgMjJTMiAxNC4yNSAyIDlDMiA1LjEzIDUuMTMgMiA5IDJNOSA0QzYuMjQgNCA0IDYuMjQgNCA5QzQgMTAgNCAxMiA5IDE4LjcxQzE0IDEyIDE0IDEwIDE0IDlDMTQgNi4yNCAxMS43NiA0IDkgNE0xOCAxN0wyMyAxMkwxOCA3VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclN0YXIgPSBcIk0xMiAyQzguMSAyIDUgNS4xIDUgOUM1IDE0LjIgMTIgMjIgMTIgMjJTMTkgMTQuMiAxOSA5QzE5IDUuMSAxNS45IDIgMTIgMk0xNC41IDEzTDEyIDExLjVMOS41IDEzTDEwLjIgMTAuMkw4IDguM0wxMC45IDguMUwxMiA1LjRMMTMuMSA4TDE2IDguM0wxMy44IDEwLjJMMTQuNSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBNYXJrZXJTdGFyT3V0bGluZSA9IFwiTTEyIDJDMTUuOSAyIDE5IDUuMSAxOSA5QzE5IDE0LjIgMTIgMjIgMTIgMjJTNSAxNC4yIDUgOUM1IDUuMSA4LjEgMiAxMiAyTTEyIDRDOS4yIDQgNyA2LjIgNyA5QzcgMTAgNyAxMiAxMiAxOC43QzE3IDEyIDE3IDEwIDE3IDlDMTcgNi4yIDE0LjggNCAxMiA0TTEyIDExLjVMMTQuNCAxM0wxMy44IDEwLjJMMTYgOC4zTDEzLjEgOC4xTDEyIDUuNEwxMC45IDhMOCA4LjNMMTAuMiAxMC4yTDkuNSAxM0wxMiAxMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1hcmtlclVwID0gXCJNMTIgMkE3IDcgMCAwIDAgNSA5QzUgMTQuMjUgMTIgMjIgMTIgMjJTMTkgMTQuMjUgMTkgOUE3IDcgMCAwIDAgMTIgMk0xNi41IDlIMTRWMTRIMTBWOUg3LjVMMTIgNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcE1pbnVzID0gXCJNMTUgMThWMjBIMjNWMThIMTVNMTMuMTYgMjAuMzZMOSAxOC45TDMuNjYgMjAuOTdDMy42IDIxIDMuNTUgMjEgMy41IDIxQzMuMjIgMjEgMyAyMC43OCAzIDIwLjVWNS4zOEMzIDUuMTUgMy4xNiA0Ljk3IDMuMzYgNC45TDkgM0wxNSA1LjFMMjAuMzQgM0gyMC41QzIwLjc4IDMgMjEgMy4yMiAyMSAzLjVWMTMuMzVDMjAuMzcgMTMuMTMgMTkuNyAxMyAxOSAxM0MxNy40NiAxMyAxNi4wNiAxMy41OCAxNSAxNC41NFY3LjFMOSA1VjE2LjlMMTMuMDQgMTguMzJDMTMgMTguNTQgMTMgMTguNzcgMTMgMTlDMTMgMTkuNDcgMTMuMDYgMTkuOTIgMTMuMTYgMjAuMzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFwT3V0bGluZSA9IFwiTTIwLjUsM0wyMC4zNCwzLjAzTDE1LDUuMUw5LDNMMy4zNiw0LjlDMy4xNSw0Ljk3IDMsNS4xNSAzLDUuMzhWMjAuNUEwLjUsMC41IDAgMCwwIDMuNSwyMUwzLjY2LDIwLjk3TDksMTguOUwxNSwyMUwyMC42NCwxOS4xQzIwLjg1LDE5LjAzIDIxLDE4Ljg1IDIxLDE4LjYyVjMuNUEwLjUsMC41IDAgMCwwIDIwLjUsM00xMCw1LjQ3TDE0LDYuODdWMTguNTNMMTAsMTcuMTNWNS40N001LDYuNDZMOCw1LjQ1VjE3LjE1TDUsMTguMzFWNi40Nk0xOSwxNy41NEwxNiwxOC41NVY2Ljg2TDE5LDUuN1YxNy41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXBQbHVzID0gXCJNOSwzTDMuMzYsNC45QzMuMTYsNC45NyAzLDUuMTUgMyw1LjM4VjIwLjVBMC41LDAuNSAwIDAsMCAzLjUsMjFDMy41NSwyMSAzLjYsMjEgMy42NiwyMC45N0w5LDE4LjlMMTMuMTYsMjAuMzZDMTMuMDYsMTkuOTIgMTMsMTkuNDYgMTMsMTlDMTMsMTguNzcgMTMsMTguNTQgMTMuMDQsMTguM0w5LDE2LjlWNUwxNSw3LjFWMTQuNTZDMTYuMDcsMTMuNiAxNy40NywxMyAxOSwxM0MxOS43LDEzIDIwLjM3LDEzLjEzIDIxLDEzLjM2VjMuNUEwLjUsMC41IDAgMCwwIDIwLjUsM0gyMC4zNEwxNSw1LjFMOSwzTTE4LDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcFNlYXJjaCA9IFwiTTE1LjUsMTJDMTgsMTIgMjAsMTQgMjAsMTYuNUMyMCwxNy4zOCAxOS43NSwxOC4yMSAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTE0LDYuMTFMOCw0VjE1Ljg5TDksMTYuMjRWMTYuNUM5LDE3LjE0IDkuMDksMTcuNzYgOS4yNiwxOC4zNEw4LDE3LjlMMi42NiwxOS45N0wyLjUsMjBBMC41LDAuNSAwIDAsMSAyLDE5LjVWNC4zOEMyLDQuMTUgMi4xNSwzLjk3IDIuMzYsMy45TDgsMkwxNCw0LjFMMTkuMzQsMkgxOS41QTAuNSwwLjUgMCAwLDEgMjAsMi41VjExLjgxQzE4LjgzLDEwLjY5IDE3LjI1LDEwIDE1LjUsMTBDMTUsMTAgMTQuNSwxMC4wNiAxNCwxMC4xN1Y2LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcFNlYXJjaE91dGxpbmUgPSBcIk0xNS41LDEyQzE4LDEyIDIwLDE0IDIwLDE2LjVDMjAsMTcuMzggMTkuNzUsMTguMiAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTE5LjUsMkEwLjUsMC41IDAgMCwxIDIwLDIuNVYxMS44MUMxOS40MiwxMS4yNiAxOC43NSwxMC44MSAxOCwxMC41VjQuN0wxNSw1Ljg2VjEwQzE0LjMsMTAuMDcgMTMuNjIsMTAuMjQgMTMsMTAuNVY1Ljg3TDksNC40N1YxNi4xM0g5VjE2LjVDOSwxNy4xNCA5LjA5LDE3Ljc2IDkuMjYsMTguMzRMOCwxNy45TDIuNjYsMTkuOTdMMi41LDIwQTAuNSwwLjUgMCAwLDEgMiwxOS41VjQuMzhDMiw0LjE1IDIuMTUsMy45NyAyLjM2LDMuOUw4LDJMMTQsNC4xTDE5LjM0LDIuMDNMMTkuNSwyTTQsNS40NlYxNy4zMUw3LDE2LjE1VjQuNDVMNCw1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcGJveCA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTE2Ljc1LDE0LjQ1QzE4LjY1LDEyLjU1IDE4LjU4LDkuMzkgMTYuNTksNy40MUMxNC42LDUuNDMgMTEuNDUsNS4zNSA5LjU1LDcuMjVDNi4xMiwxMC42OCA3LjIyLDE2Ljc4IDcuMjIsMTYuNzhDNy4yMiwxNi43OCAxMy4zMywxNy44NyAxNi43NSwxNC40NU0xMy4xNSw3Ljg2TDE0LjEzLDkuODdMMTYuMTQsMTAuODVMMTQuMTMsMTEuODNMMTMuMTUsMTMuODRMMTIuMTcsMTEuODNMMTAuMTYsMTAuODVMMTIuMTcsOS44N0wxMy4xNSw3Ljg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hcmdpbiA9IFwiTTIwLDRWOUwxOC41LDcuNUw1LjUsMjAuNUwzLjUsMTguNUwxNi41LDUuNUwxNSw0SDIwTTE3LDIwQTMsMyAwIDAsMSAxNCwxN1YxNUEzLDMgMCAwLDEgMTcsMTJBMywzIDAgMCwxIDIwLDE1VjE3QTMsMyAwIDAsMSAxNywyME0xNywxNEExLDEgMCAwLDAgMTYsMTVWMTdBMSwxIDAgMCwwIDE3LDE4QTEsMSAwIDAsMCAxOCwxN1YxNUExLDEgMCAwLDAgMTcsMTRNNywxMkEzLDMgMCAwLDEgNCw5VjdBMywzIDAgMCwxIDcsNEEzLDMgMCAwLDEgMTAsN1Y5QTMsMyAwIDAsMSA3LDEyTTcsNkExLDEgMCAwLDAgNiw3VjlBMSwxIDAgMCwwIDcsMTBBMSwxIDAgMCwwIDgsOVY3QTEsMSAwIDAsMCA3LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFya2VyID0gXCJNMTguNSwxLjE1QzE3Ljk3LDEuMTUgMTcuNDYsMS4zNCAxNy4wNywxLjczTDExLjI2LDcuNTVMMTYuOTEsMTMuMkwyMi43Myw3LjM5QzIzLjUsNi42MSAyMy41LDUuMzUgMjIuNzMsNC41NkwxOS44OSwxLjczQzE5LjUsMS4zNCAxOSwxLjE1IDE4LjUsMS4xNU0xMC4zLDguNUw0LjM0LDE0LjQ2QzMuNTYsMTUuMjQgMy41NiwxNi41IDQuMzYsMTcuMzFDMy4xNCwxOC41NCAxLjksMTkuNzcgMC42NywyMUg2LjMzTDcuMTksMjAuMTRDNy45NywyMC45IDkuMjIsMjAuODkgMTAsMjAuMTJMMTUuOTUsMTQuMTZcIjtcclxuZXhwb3J0IHZhciBtZGlNYXJrZXJDYW5jZWwgPSBcIk0xNy41LDEzQzIwLDEzIDIyLDE1IDIyLDE3LjVDMjIsMjAgMjAsMjIgMTcuNSwyMkMxNSwyMiAxMywyMCAxMywxNy41QzEzLDE1IDE1LDEzIDE3LjUsMTNNMTcuNSwxNC41QzE2Ljk0LDE0LjUgMTYuNDIsMTQuNjUgMTYsMTQuOTJMMjAuMDgsMTlDMjAuMzUsMTguNTggMjAuNSwxOC4wNiAyMC41LDE3LjVBMywzIDAgMCwwIDE3LjUsMTQuNU0xNC41LDE3LjVBMywzIDAgMCwwIDE3LjUsMjAuNUMxOC4wNiwyMC41IDE4LjU4LDIwLjM1IDE5LDIwLjA4TDE0LjkyLDE2QzE0LjY1LDE2LjQyIDE0LjUsMTYuOTQgMTQuNSwxNy41TTE4LjUsMS4xNUMxOSwxLjE1IDE5LjUsMS4zNCAxOS44OSwxLjczTDIyLjczLDQuNTZDMjMuNSw1LjM1IDIzLjUsNi42MSAyMi43Myw3LjM5TDE4Ljk1LDExLjE2QzE4LjUsMTEuMDYgMTgsMTEgMTcuNSwxMUMxNi42NywxMSAxNS44OCwxMS4xNiAxNS4xNSwxMS40NEwxMS4yNiw3LjU1TDE3LjA3LDEuNzNDMTcuNDYsMS4zNCAxNy45NywxLjE1IDE4LjUsMS4xNU0xMC4zLDguNUwxMy44OSwxMi4xQzEyLjE1LDEzLjI2IDExLDE1LjI1IDExLDE3LjVDMTEsMTggMTEuMDYsMTguNSAxMS4xNiwxOC45NUwxMCwyMC4xMkM5LjIyLDIwLjg5IDcuOTcsMjAuOSA3LjE5LDIwLjE0TDYuMzMsMjFIMC42N0w0LjM2LDE3LjMxQzMuNTYsMTYuNSAzLjU2LDE1LjI0IDQuMzQsMTQuNDZMMTAuMyw4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWFya2VyQ2hlY2sgPSBcIk0xMCwxNkw1LDExTDYuNDEsOS41OEwxMCwxMy4xN0wxNy41OSw1LjU4TDE5LDdNMTksMUg1QzMuODksMSAzLDEuODkgMywzVjE1LjkzQzMsMTYuNjIgMy4zNSwxNy4yMyAzLjg4LDE3LjU5TDEyLDIzTDIwLjExLDE3LjU5QzIwLjY0LDE3LjIzIDIxLDE2LjYyIDIxLDE1LjkzVjNDMjEsMS44OSAyMC4xLDEgMTksMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXN0b2RvbiA9IFwiTTIwLjk0LDE0QzIwLjY2LDE1LjQxIDE4LjUsMTYuOTYgMTUuOTcsMTcuMjZDMTQuNjYsMTcuNDEgMTMuMzcsMTcuNTYgMTIsMTcuNUM5Ljc1LDE3LjM5IDgsMTYuOTYgOCwxNi45NlYxNy41OEM4LjMyLDE5LjggMTAuMjIsMTkuOTMgMTIuMDMsMjBDMTMuODUsMjAuMDUgMTUuNDcsMTkuNTQgMTUuNDcsMTkuNTRMMTUuNTUsMjEuMTlDMTUuNTUsMjEuMTkgMTQuMjcsMjEuODcgMTIsMjJDMTAuNzUsMjIuMDcgOS4xOSwyMS45NyA3LjM4LDIxLjVDMy40NiwyMC40NSAyLjc4LDE2LjI2IDIuNjgsMTJMMi42Nyw4LjU3QzIuNjcsNC4yMyA1LjUsMi45NiA1LjUsMi45NkM2Ljk1LDIuMyA5LjQxLDIgMTEuOTcsMkgxMi4wM0MxNC41OSwyIDE3LjA1LDIuMyAxOC41LDIuOTZDMTguNSwyLjk2IDIxLjMzLDQuMjMgMjEuMzMsOC41N0MyMS4zMyw4LjU3IDIxLjM3LDExLjc4IDIwLjk0LDE0TTE4LDguOTFDMTgsNy44MyAxNy43LDcgMTcuMTUsNi4zNUMxNi41OSw1LjcyIDE1Ljg1LDUuMzkgMTQuOTIsNS4zOUMxMy44Niw1LjM5IDEzLjA1LDUuOCAxMi41LDYuNjJMMTIsNy41TDExLjUsNi42MkMxMC45NCw1LjggMTAuMTQsNS4zOSA5LjA3LDUuMzlDOC4xNSw1LjM5IDcuNDEsNS43MiA2Ljg0LDYuMzVDNi4yOSw3IDYsNy44MyA2LDguOTFWMTQuMTdIOC4xVjkuMDZDOC4xLDggOC41NSw3LjQ0IDkuNDYsNy40NEMxMC40Niw3LjQ0IDEwLjk2LDguMDkgMTAuOTYsOS4zN1YxMi4xNkgxMy4wM1Y5LjM3QzEzLjAzLDguMDkgMTMuNTMsNy40NCAxNC41NCw3LjQ0QzE1LjQ0LDcuNDQgMTUuODksOCAxNS44OSw5LjA2VjE0LjE3SDE4VjguOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWF0ZXJpYWxEZXNpZ24gPSBcIk0yMSwxMkMyMSw5Ljk3IDIwLjMzLDguMDkgMTksNi4zOFYxNy42M0MyMC4zMywxNS45NyAyMSwxNC4wOSAyMSwxMk0xNy42MywxOUg2LjM4QzcuMDYsMTkuNTUgNy45NSwyMCA5LjA1LDIwLjQxQzEwLjE0LDIwLjggMTEuMTMsMjEgMTIsMjFDMTIuODgsMjEgMTMuODYsMjAuOCAxNC45NSwyMC40MUMxNi4wNSwyMCAxNi45NCwxOS41NSAxNy42MywxOU0xMSwxN0w3LDlWMTdIMTFNMTcsOUwxMywxN0gxN1Y5TTEyLDE0LjUzTDE1Ljc1LDdIOC4yNUwxMiwxNC41M00xNy42Myw1QzE1Ljk3LDMuNjcgMTQuMDksMyAxMiwzQzkuOTEsMyA4LjAzLDMuNjcgNi4zOCw1SDE3LjYzTTUsMTcuNjNWNi4zOEMzLjY3LDguMDkgMyw5Ljk3IDMsMTJDMywxNC4wOSAzLjY3LDE1Ljk3IDUsMTcuNjNNMjMsMTJDMjMsMTUuMDMgMjEuOTQsMTcuNjMgMTkuNzgsMTkuNzhDMTcuNjMsMjEuOTQgMTUuMDMsMjMgMTIsMjNDOC45NywyMyA2LjM4LDIxLjk0IDQuMjIsMTkuNzhDMi4wNiwxNy42MyAxLDE1LjAzIDEsMTJDMSw4Ljk3IDIuMDYsNi4zOCA0LjIyLDQuMjJDNi4zOCwyLjA2IDguOTcsMSAxMiwxQzE1LjAzLDEgMTcuNjMsMi4wNiAxOS43OCw0LjIyQzIxLjk0LDYuMzggMjMsOC45NyAyMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRlcmlhbFVpID0gXCJNOCwxNi42MVYxNS4zN0wxNCwxMS45MVY3LjIzTDksMTAuMTJMNCw3LjIzVjEzTDMsMTMuNThMMiwxM1Y1TDMuMDcsNC4zOEw5LDcuODFMMTIuOTMsNS41NEwxNC45Myw0LjM4TDE2LDVWMTMuMDZMMTAuOTIsMTZMMTQuOTcsMTguMzNMMjAsMTUuNDNWMTFMMjEsMTAuNDJMMjIsMTFWMTYuNThMMTQuOTcsMjAuNjRMOCwxNi42MU0yMiw5Ljc1TDIxLDEwLjMzTDIwLDkuNzVWOC41OEwyMSw4TDIyLDguNThWOS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRoQ29tcGFzcyA9IFwiTTIwLDE5Ljg4VjIyTDE4LjIsMjAuODNMMTMuNDEsMTEuODNDMTQuMDcsMTEuNjIgMTQuNjcsMTEuMjggMTUuMTksMTAuODNMMjAsMTkuODhNMTUsN0EzLDMgMCAwLDEgMTIsMTBDMTEuODUsMTAgMTEuNzEsMTAgMTEuNTYsMTBMNS44LDIwLjgzTDQsMjJWMTkuODhMOS43OSw5QzguNjksNy43NyA4Ljc5LDUuODcgMTAuMDMsNC43NkMxMC41Nyw0LjI4IDExLjI3LDQgMTIsNFYyQTEsMSAwIDAsMSAxMywzVjQuMThDMTQuMiw0LjYgMTUsNS43MyAxNSw3TTEzLDdBMSwxIDAgMCwwIDEyLDZBMSwxIDAgMCwwIDExLDdBMSwxIDAgMCwwIDEyLDhBMSwxIDAgMCwwIDEzLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWF0aENvcyA9IFwiTTQsN0EyLDIgMCAwLDAgMiw5VjE1QTIsMiAwIDAsMCA0LDE3SDZBMiwyIDAgMCwwIDgsMTVWMTRINlYxNUg0VjlINlYxMEg4VjlBMiwyIDAgMCwwIDYsN0g0TTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5TTE4LDdBMiwyIDAgMCwwIDE2LDlWMTFBMiwyIDAgMCwwIDE4LDEzSDIwVjE1SDE2VjE3SDIwQTIsMiAwIDAsMCAyMiwxNVYxM0EyLDIgMCAwLDAgMjAsMTFIMThWOUgyMlY3SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhJbnRlZ3JhbCA9IFwiTTExLjUgMTkuMUMxMS4zIDIwLjIgMTAuOSAyMSAxMC4yIDIxLjVDOS41IDIyIDguNiAyMi4xIDcuNSAyMS45QzcuMSAyMS44IDYuMyAyMS43IDYgMjEuNUw2LjUgMjBDNi44IDIwLjEgNy40IDIwLjMgNy43IDIwLjNDOC44IDIwLjUgOS40IDIwIDkuNiAxOC44TDEyIDUuMkMxMi4yIDQgMTIuNyAzLjIgMTMuNCAyLjZDMTQuMSAyLjEgMTUuMSAxLjkgMTYuMiAyLjFDMTYuNiAyLjIgMTcuNCAyLjMgMTggMi42TDE3LjUgNEMxNy4zIDMuOSAxNi42IDMuOCAxNi4zIDMuN0MxNSAzLjUgMTQuMyA0LjEgMTQgNS42TDExLjUgMTkuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRoSW50ZWdyYWxCb3ggPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNMTUuOSA2LjlDMTUuOSA2LjkgMTUuMiA2LjYgMTQuOSA2LjZDMTQuMyA2LjUgMTMuOSA2LjcgMTMuNyA3LjdMMTIgMTYuOEMxMS44IDE3LjYgMTEuNSAxOC4yIDExIDE4LjZDMTAuNiAxOC45IDEwLjIgMTkgOS43IDE5QzguOSAxOSA3LjcgMTguNSA3LjcgMTguNUw4LjIgMTcuMUM4LjIgMTcuMSA5IDE3LjQgOS4yIDE3LjRDOS41IDE3LjUgOS43IDE3LjQgOS45IDE3LjNDMTAuMSAxNy4yIDEwLjIgMTYuOSAxMC4zIDE2LjZMMTEuOSA3LjRDMTIgNi42IDEyLjQgNiAxMi45IDUuNUMxMy41IDUuMSAxNC4yIDUgMTUgNS4xQzE1LjcgNS4yIDE2LjUgNS42IDE2LjUgNS42TDE1LjkgNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhMb2cgPSBcIk0xOCA3QzE2LjkgNyAxNiA3LjkgMTYgOVYxNUMxNiAxNi4xIDE2LjkgMTcgMTggMTdIMjBDMjEuMSAxNyAyMiAxNi4xIDIyIDE1VjExSDIwVjE1SDE4VjlIMjJWN0gxOE0yIDdWMTdIOFYxNUg0VjdIMk0xMSA3QzkuOSA3IDkgNy45IDkgOVYxNUM5IDE2LjEgOS45IDE3IDExIDE3SDEzQzE0LjEgMTcgMTUgMTYuMSAxNSAxNVY5QzE1IDcuOSAxNC4xIDcgMTMgN0gxMU0xMSA5SDEzVjE1SDExVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWF0aE5vcm0gPSBcIk0xNCAyMVYzSDE2VjIxSDE0TTggMjFWM0gxMFYyMUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhOb3JtQm94ID0gXCJNMTkgM0g1QzMuOSAzIDMgMy45IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy45IDIwLjEgMyAxOSAzTTEwIDE4SDhWNkgxMFYxOE0xNiAxOEgxNFY2SDE2VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdGhTaW4gPSBcIk00LDdBMiwyIDAgMCwwIDIsOVYxMUEyLDIgMCAwLDAgNCwxM0g2VjE1SDJWMTdINkEyLDIgMCAwLDAgOCwxNVYxM0EyLDIgMCAwLDAgNiwxMUg0VjlIOFY3SDRNMTQsN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNE0xNiw3VjE3SDE4VjEyTDIwLDE3SDIyVjdIMjBWMTJMMTgsN0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNYXRoVGFuID0gXCJNMiw3VjlINFYxN0g2VjlIOFY3SDJNMTEsN0EyLDIgMCAwLDAgOSw5VjE3SDExVjEzSDEzVjE3SDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxMUgxMVY5TTE2LDdWMTdIMThWMTJMMjAsMTdIMjJWN0gyMFYxMkwxOCw3SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1hdHJpeCA9IFwiTTIsMkg2VjRINFYyMEg2VjIySDJWMk0yMCw0SDE4VjJIMjJWMjJIMThWMjBIMjBWNE05LDVIMTBWMTBIMTFWMTFIOFYxMEg5VjZMOCw2LjVWNS41TDksNU0xNSwxM0gxNlYxOEgxN1YxOUgxNFYxOEgxNVYxNEwxNCwxNC41VjEzLjVMMTUsMTNNOSwxM0MxMC4xLDEzIDExLDE0LjM0IDExLDE2QzExLDE3LjY2IDEwLjEsMTkgOSwxOUM3LjksMTkgNywxNy42NiA3LDE2QzcsMTQuMzQgNy45LDEzIDksMTNNOSwxNEM4LjQ1LDE0IDgsMTQuOSA4LDE2QzgsMTcuMSA4LjQ1LDE4IDksMThDOS41NSwxOCAxMCwxNy4xIDEwLDE2QzEwLDE0LjkgOS41NSwxNCA5LDE0TTE1LDVDMTYuMSw1IDE3LDYuMzQgMTcsOEMxNyw5LjY2IDE2LjEsMTEgMTUsMTFDMTMuOSwxMSAxMyw5LjY2IDEzLDhDMTMsNi4zNCAxMy45LDUgMTUsNU0xNSw2QzE0LjQ1LDYgMTQsNi45IDE0LDhDMTQsOS4xIDE0LjQ1LDEwIDE1LDEwQzE1LjU1LDEwIDE2LDkuMSAxNiw4QzE2LDYuOSAxNS41NSw2IDE1LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVkYWwgPSBcIk0yMCwySDRWNEw5LjgxLDguMzZDNi4xNCw5LjU3IDQuMTQsMTMuNTMgNS4zNSwxNy4yQzYuNTYsMjAuODcgMTAuNSwyMi44NyAxNC4xOSwyMS42NkMxNy44NiwyMC40NSAxOS44NiwxNi41IDE4LjY1LDEyLjgyQzE3Ljk1LDEwLjcxIDE2LjMsOS4wNSAxNC4xOSw4LjM2TDIwLDRWMk0xNC45NCwxOS41TDEyLDE3Ljc4TDkuMDYsMTkuNUw5Ljg0LDE2LjE3TDcuMjUsMTMuOTNMMTAuNjYsMTMuNjRMMTIsMTAuNUwxMy4zNCwxMy42NEwxNi43NSwxMy45M0wxNC4xNiwxNi4xN0wxNC45NCwxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lZGFsT3V0bGluZSA9IFwiTTE0Ljk0IDE5LjVMMTIgMTcuNzdMOS4wNiAxOS41TDkuODQgMTYuMTZMNy4yNSAxMy45MkwxMC42NiAxMy42M0wxMiAxMC41TDEzLjM0IDEzLjYzTDE2Ljc1IDEzLjkyTDE0LjE2IDE2LjE2TTIwIDJINFY0TDguODYgNy42NEE4IDggMCAxIDAgMTUuMTQgNy42NEwyMCA0TTE4IDE1QTYgNiAwIDEgMSAxMC44MiA5LjEyQTUuODYgNS44NiAwIDAgMSAxMy4xOCA5LjEyQTYgNiAwIDAgMSAxOCAxNU0xMi42MyA3SDExLjM3TDcuMzcgNEgxNi43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZWRpY2FsQmFnID0gXCJNMTAsM0w4LDVWN0g1QzMuODUsNyAzLjEyLDggMyw5TDIsMTlDMS44OCwyMCAyLjU0LDIxIDQsMjFIMjBDMjEuNDYsMjEgMjIuMTIsMjAgMjIsMTlMMjEsOUMyMC44OCw4IDIwLjA2LDcgMTksN0gxNlY1TDE0LDNIMTBNMTAsNUgxNFY3SDEwVjVNMTEsMTBIMTNWMTNIMTZWMTVIMTNWMThIMTFWMTVIOFYxM0gxMVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNZWRpdGF0aW9uID0gXCJNMTIgNEMxMy4xMSA0IDE0IDQuODkgMTQgNlMxMy4xMSA4IDEyIDggMTAgNy4xMSAxMCA2IDEwLjkgNCAxMiA0TTIxIDE2VjE0QzE4Ljc2IDE0IDE2Ljg0IDEzLjA0IDE1LjQgMTEuMzJMMTQuMDYgOS43MkMxMy42OCA5LjI2IDEzLjEyIDkgMTIuNTMgOUgxMS41QzEwLjg5IDkgMTAuMzMgOS4yNiA5Ljk1IDkuNzJMOC42MSAxMS4zMkM3LjE2IDEzLjA0IDUuMjQgMTQgMyAxNFYxNkM1Ljc3IDE2IDguMTkgMTQuODMgMTAgMTIuNzVWMTVMNi4xMiAxNi41NUM1LjQ1IDE2LjgyIDUgMTcuNSA1IDE4LjIxQzUgMTkuMiA1LjggMjAgNi43OSAyMEg5VjE5LjVDOSAxOC4xMiAxMC4xMiAxNyAxMS41IDE3SDE0LjVDMTQuNzggMTcgMTUgMTcuMjIgMTUgMTcuNVMxNC43OCAxOCAxNC41IDE4SDExLjVDMTAuNjcgMTggMTAgMTguNjcgMTAgMTkuNVYyMEgxNy4yMUMxOC4yIDIwIDE5IDE5LjIgMTkgMTguMjFDMTkgMTcuNSAxOC41NSAxNi44MiAxNy44OCAxNi41NUwxNCAxNVYxMi43NUMxNS44MSAxNC44MyAxOC4yMyAxNiAyMSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZW1vcnkgPSBcIk0xNywxN0g3VjdIMTdNMjEsMTFWOUgxOVY3QzE5LDUuODkgMTguMSw1IDE3LDVIMTVWM0gxM1Y1SDExVjNIOVY1SDdDNS44OSw1IDUsNS44OSA1LDdWOUgzVjExSDVWMTNIM1YxNUg1VjE3QTIsMiAwIDAsMCA3LDE5SDlWMjFIMTFWMTlIMTNWMjFIMTVWMTlIMTdBMiwyIDAgMCwwIDE5LDE3VjE1SDIxVjEzSDE5VjExTTEzLDEzSDExVjExSDEzTTE1LDlIOVYxNUgxNVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnUgPSBcIk0zLDZIMjFWOEgzVjZNMywxMUgyMVYxM0gzVjExTTMsMTZIMjFWMThIM1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51RG93biA9IFwiTTcsMTBMMTIsMTVMMTcsMTBIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51RG93bk91dGxpbmUgPSBcIk0xOCw5VjEwLjVMMTIsMTYuNUw2LDEwLjVWOUgxOE0xMiwxMy42N0wxNC42NywxMUg5LjMzTDEyLDEzLjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnVMZWZ0ID0gXCJNMTQsN0w5LDEyTDE0LDE3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudUxlZnRPdXRsaW5lID0gXCJNMTUsMThIMTMuNUw3LjUsMTJMMTMuNSw2SDE1VjE4TTEwLjMzLDEyTDEzLDE0LjY3VjkuMzNMMTAuMzMsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudU9wZW4gPSBcIk0yMSwxNS42MUwxOS41OSwxN0wxNC41OCwxMkwxOS41OSw3TDIxLDguMzlMMTcuNDQsMTJMMjEsMTUuNjFNMyw2SDE2VjhIM1Y2TTMsMTNWMTFIMTNWMTNIM00zLDE4VjE2SDE2VjE4SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudVJpZ2h0ID0gXCJNMTAsMTdMMTUsMTJMMTAsN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51UmlnaHRPdXRsaW5lID0gXCJNOSw2SDEwLjVMMTYuNSwxMkwxMC41LDE4SDlWNk0xMy42NywxMkwxMSw5LjMzVjE0LjY3TDEzLjY3LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnVTd2FwID0gXCJNMTIsNkw3LDExSDE3TDEyLDZNNywxM0wxMiwxOEwxNywxM0g3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lbnVTd2FwT3V0bGluZSA9IFwiTTEyLDMuNUw2LDkuNVYxMUgxOFY5LjVMMTIsMy41TTEyLDYuMzNMMTQuNjcsOUg5LjMzTDEyLDYuMzNNNiwxM1YxNC41TDEyLDIwLjVMMTgsMTQuNVYxM0g2TTkuMzMsMTVIMTQuNjdMMTIsMTcuNjdMOS4zMywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZW51VXAgPSBcIk03LDE1TDEyLDEwTDE3LDE1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVudVVwT3V0bGluZSA9IFwiTTE4LDE2VjE0LjVMMTIsOC41TDYsMTQuNVYxNkgxOE0xMiwxMS4zM0wxNC42NywxNEg5LjMzTDEyLDExLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lcmdlID0gXCJNOCAxN0wxMiAxM0gxNS4yQzE1LjYgMTQuMiAxNi43IDE1IDE4IDE1QzE5LjcgMTUgMjEgMTMuNyAyMSAxMlMxOS43IDkgMTggOUMxNi43IDkgMTUuNiA5LjggMTUuMiAxMUgxMkw4IDdWM0gzVjhINkwxMC4yIDEyTDYgMTZIM1YyMUg4VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2UgPSBcIk0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QzIyLDIuODkgMjEuMSwyIDIwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFsZXJ0ID0gXCJNMTMgMTFIMTFWNUgxM00xMyAxNUgxMVYxM0gxM00yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VBbGVydE91dGxpbmUgPSBcIk0xMywxMEgxMVY2SDEzVjEwTTEzLDEySDExVjE0SDEzVjEyTTIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDZMMiwyMlY0QTIsMiAwIDAsMSA0LDJIMjBBMiwyIDAgMCwxIDIyLDRNMjAsNEg0VjE3LjJMNS4yLDE2SDIwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFycm93TGVmdCA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjJMNiAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMTYgMTFIMTEuNUwxMy4zIDEyLjhMMTIgMTRMOCAxMEwxMiA2TDEzLjIgNy4yTDExLjUgOUgxNlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQXJyb3dMZWZ0T3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjJMNiAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMjAgMTZINS4yTDQgMTcuMlY0SDIwVjE2TTE2IDExVjlIMTEuNUwxMy4zIDcuMkwxMiA2TDggMTBMMTIgMTRMMTMuMiAxMi44TDExLjUgMTFIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFycm93UmlnaHQgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEyIDE0TDEwLjggMTIuOEwxMi42IDExSDhWOUgxMi41TDEwLjcgNy4yTDEyIDZMMTYgMTBMMTIgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUFycm93UmlnaHRPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNOCA5VjExSDEyLjVMMTAuNyAxMi44TDEyIDE0TDE2IDEwTDEyIDZMMTAuOCA3LjJMMTIuNSA5SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUJvb2ttYXJrID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0xOSAxM0wxNi41IDExLjVMMTQgMTNWNUgxOVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQm9va21hcmtPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNMTggMTRWNkgxM1YxNEwxNS41IDEyLjVMMTggMTRcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQnVsbGV0ZWQgPSBcIk0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTgsMTRINlYxMkg4VjE0TTgsMTFINlY5SDhWMTFNOCw4SDZWNkg4VjhNMTUsMTRIMTBWMTJIMTVWMTRNMTgsMTFIMTBWOUgxOFYxMU0xOCw4SDEwVjZIMThWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlQnVsbGV0ZWRPZmYgPSBcIk0xLjI3LDEuNzNMMCwzTDIsNVYyMkw2LDE4SDE1TDIwLjczLDIzLjczTDIyLDIyLjQ2TDEuMjcsMS43M004LDE0SDZWMTJIOFYxNE02LDExVjlMOCwxMUg2TTIwLDJINC4wOEwxMCw3LjkyVjZIMThWOEgxMC4wOEwxMS4wOCw5SDE4VjExSDEzLjA4TDIwLjA3LDE4QzIxLjE0LDE3Ljk1IDIyLDE3LjA4IDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUNvZyA9IFwiTTEzLjUsMTBBMS41LDEuNSAwIDAsMSAxMiwxMS41QzExLjE2LDExLjUgMTAuNSwxMC44MyAxMC41LDEwQTEuNSwxLjUgMCAwLDEgMTIsOC41QTEuNSwxLjUgMCAwLDEgMTMuNSwxME0yMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEg2TDIsMjJWNEEyLDIgMCAwLDEgNCwySDIwQTIsMiAwIDAsMSAyMiw0TTE2Ljc3LDExLjMyTDE1LjcsMTAuNUMxNS43MSwxMC4zMyAxNS43MSwxMC4xNiAxNS43LDEwQzE1LjcyLDkuODQgMTUuNzIsOS42NyAxNS43LDkuNUwxNi43Niw4LjY4QzE2Ljg1LDguNiAxNi44OCw4LjQ3IDE2LjgyLDguMzZMMTUuODIsNi42M0MxNS43Niw2LjUgMTUuNjMsNi40NyAxNS41LDYuNUwxNC4yNyw3QzE0LDYuOCAxMy43Myw2LjYzIDEzLjQyLDYuNUwxMy4yMyw1LjE5QzEzLjIxLDUuMDggMTMuMTEsNSAxMyw1SDExQzEwLjg4LDUgMTAuNzcsNS4wOSAxMC43NSw1LjIxTDEwLjU2LDYuNTNDMTAuMjYsNi42NSA5Ljk3LDYuODEgOS43LDdMOC40Niw2LjVDOC4zNCw2LjQ2IDguMjEsNi41IDguMTUsNi42MUw3LjE1LDguMzRDNy4wOSw4LjQ1IDcuMTEsOC41OCA3LjIxLDguNjZMOC4yNyw5LjVDOC4yMyw5LjgyIDguMjMsMTAuMTYgOC4yNywxMC41TDcuMjEsMTEuMzJDNy4xMiwxMS40IDcuMDksMTEuNTMgNy4xNSwxMS42NEw4LjE1LDEzLjM3QzguMjEsMTMuNSA4LjM0LDEzLjUzIDguNDYsMTMuNUw5LjcsMTNDOS45NiwxMy4yIDEwLjI0LDEzLjM3IDEwLjU1LDEzLjVMMTAuNzQsMTQuODFDMTAuNzcsMTQuOTMgMTAuODgsMTUgMTEsMTVIMTNDMTMuMTIsMTUgMTMuMjMsMTQuOTEgMTMuMjUsMTQuNzlMMTMuNDQsMTMuNDdDMTMuNzQsMTMuMzQgMTQsMTMuMTggMTQuMjgsMTNMMTUuNTMsMTMuNUMxNS42NSwxMy41IDE1Ljc4LDEzLjUgMTUuODQsMTMuMzdMMTYuODQsMTEuNjRDMTYuOSwxMS41MyAxNi44NywxMS40IDE2Ljc3LDExLjMyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VDb2dPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNMTYuOCAxMS4zTDE1LjcgMTAuNVYxMCA5LjVMMTYuOCA4LjdDMTYuOSA4LjYgMTYuOSA4LjUgMTYuOSA4LjRMMTUuOSA2LjdDMTUuOCA2LjYgMTUuNyA2LjUgMTUuNiA2LjZMMTQuMyA3QzE0IDYuOCAxMy44IDYuNiAxMy40IDYuNUwxMy4yIDUuMkMxMy4yIDUuMSAxMy4xIDUgMTMgNUgxMUMxMC45IDUgMTAuOCA1LjEgMTAuOCA1LjJMMTAuNiA2LjVDMTAuMyA2LjcgMTAgNi44IDkuNyA3TDguNSA2LjVDOC40IDYuNSA4LjMgNi41IDguMiA2LjZMNy4yIDguM0M3LjEgOC40IDcuMiA4LjUgNy4zIDguNkw4LjQgOS40VjEwLjRMNy4zIDExLjJDNy4yIDExLjMgNy4yIDExLjQgNy4yIDExLjVMOC4yIDEzLjJDOC4zIDEzLjMgOC40IDEzLjQgOC41IDEzLjNMOS43IDEzQzEwIDEzLjIgMTAuMiAxMy40IDEwLjUgMTMuNUwxMC43IDE0LjhDMTAuNyAxNC45IDEwLjggMTUgMTEgMTVIMTNDMTMuMSAxNSAxMy4yIDE0LjkgMTMuMiAxNC44TDEzLjQgMTMuNUMxMy43IDEzLjQgMTQgMTMuMiAxNC4yIDEzTDE1LjQgMTMuNUMxNS41IDEzLjUgMTUuNiAxMy41IDE1LjcgMTMuNEwxNi43IDExLjdDMTYuOSAxMS41IDE2LjkgMTEuNCAxNi44IDExLjNNMTIgMTEuNUMxMS4yIDExLjUgMTAuNSAxMC44IDEwLjUgMTBTMTEuMiA4LjUgMTIgOC41IDEzLjUgOS4yIDEzLjUgMTAgMTIuOCAxMS41IDEyIDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZURyYXcgPSBcIk0xOCwxNEgxMC41TDEyLjUsMTJIMThNNiwxNFYxMS41TDEyLjg4LDQuNjRDMTMuMDcsNC40NSAxMy4zOSw0LjQ1IDEzLjU5LDQuNjRMMTUuMzUsNi40MUMxNS41NSw2LjYxIDE1LjU1LDYuOTIgMTUuMzUsNy4xMkw4LjQ3LDE0TTIwLDJINEEyLDIgMCAwLDAgMiw0VjIyTDYsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRDMjIsMi44OSAyMS4xLDIgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlRmxhc2ggPSBcIk0yMiA0QzIyIDIuOSAyMS4xIDIgMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDE1VjEwSDIyVjRNMjIuNSAxNkgyMC4zTDIyIDEySDE3VjE4SDE5VjIzTDIyLjUgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZUZsYXNoT3V0bGluZSA9IFwiTTQgMTcuMlY0SDIwVjEwSDIyVjRDMjIgMi45IDIxLjEgMiAyMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMTVWMTZINS4yTDQgMTcuMk0yMi41IDE2SDIwLjNMMjIgMTJIMTdWMThIMTlWMjNMMjIuNSAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlSW1hZ2UgPSBcIk01LDE0TDguNSw5LjVMMTEsMTIuNUwxNC41LDhMMTksMTRNMjAsMkg0QTIsMiAwIDAsMCAyLDRWMjJMNiwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEMyMiwyLjg5IDIxLjEsMiAyMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VJbWFnZU91dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk01IDE0TDguNSA5LjVMMTEgMTIuNUwxNC41IDhMMTkgMTRcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlTG9jayA9IFwiTTIwLjUgMEEyLjUgMi41IDAgMCAwIDE4IDIuNVYzQTEgMSAwIDAgMCAxNyA0VjhBMSAxIDAgMCAwIDE4IDlIMjNBMSAxIDAgMCAwIDI0IDhWNEExIDEgMCAwIDAgMjMgM1YyLjVBMi41IDIuNSAwIDAgMCAyMC41IDBNMjAuNSAxQTEuNSAxLjUgMCAwIDEgMjIgMi41VjNIMTlWMi41QTEuNSAxLjUgMCAwIDEgMjAuNSAxTTQgMkEyIDIgMCAwIDAgMiA0VjIyTDYgMThIMjBBMiAyIDAgMCAwIDIyIDE2VjExSDE3QzE1Ljg5IDExIDE1IDEwLjExIDE1IDlWMkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VMb2NrT3V0bGluZSA9IFwiTTIzIDNWMi41QzIzIDEuMSAyMS45IDAgMjAuNSAwUzE4IDEuMSAxOCAyLjVWM0MxNy41IDMgMTcgMy41IDE3IDRWOEMxNyA4LjUgMTcuNSA5IDE4IDlIMjNDMjMuNSA5IDI0IDguNSAyNCA4VjRDMjQgMy41IDIzLjUgMyAyMyAzTTIyIDNIMTlWMi41QzE5IDEuNyAxOS43IDEgMjAuNSAxUzIyIDEuNyAyMiAyLjVWM00yMiAxMVYxNkMyMiAxNy4xIDIxLjEgMTggMjAgMThINkwyIDIyVjRDMiAyLjkgMi45IDIgNCAySDE1VjRINFYxNy4yTDUuMiAxNkgyMFYxMUgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlTWludXMgPSBcIk0yMCAyQzIxLjExIDIgMjIgMi45IDIyIDRWMTZDMjIgMTcuMTEgMjEuMTEgMTggMjAgMThINkwyIDIyVjRDMiAyLjg5IDIuOSAyIDQgMkgyME04IDlWMTFIMTZWOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VNaW51c091dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk04IDlWMTFIMTZWOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VPZmYgPSBcIk0yMC45NSAxNy43NUw1LjIgMkgyMEMyMS4xIDIgMjIgMi44OSAyMiA0VjE2QzIyIDE2Ljc2IDIxLjU3IDE3LjQxIDIwLjk1IDE3Ljc1TTIuMzkgMS43M0wxLjExIDNMMiAzLjlDMiAzLjkzIDIgMy45NyAyIDRWMjJMNiAxOEgxNi4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZU9mZk91dGxpbmUgPSBcIk03LjIgNEw1LjIgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE2Ljc2IDIxLjU3IDE3LjQxIDIwLjk1IDE3Ljc1TDE5LjIgMTZIMjBWNEg3LjJNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTYuMTEgMThINkwyIDIyVjRDMiAzLjk3IDIgMy45MyAyIDMuOUwxLjExIDNMMi4zOSAxLjczTDYuMSA1LjQ0TDE2LjY1IDE2SDE2LjY2TDE4LjY2IDE4SDE4LjY1TDIyLjExIDIxLjQ2TTE0LjExIDE2TDQgNS44OVYxOEw2IDE2SDE0LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVBsdXMgPSBcIk0yMCwyQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEg2TDIsMjJWNEMyLDIuODkgMi45LDIgNCwySDIwTTExLDZWOUg4VjExSDExVjE0SDEzVjExSDE2VjlIMTNWNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUGx1c091dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk0xNiA5VjExSDEzVjE0SDExVjExSDhWOUgxMVY2SDEzVjlIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVByb2Nlc3NpbmcgPSBcIk0xNywxMUgxNVY5SDE3TTEzLDExSDExVjlIMTNNOSwxMUg3VjlIOU0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QzIyLDIuODkgMjEuMSwyIDIwLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVByb2Nlc3NpbmdPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDIwQzIxLjEgMTggMjIgMTcuMSAyMiAxNlY0QzIyIDIuOSAyMS4xIDIgMjAgMk0yMCAxNkg1LjJMNCAxNy4yVjRIMjBWMTZNMTcgMTFIMTVWOUgxN00xMyAxMUgxMVY5SDEzTTkgMTFIN1Y5SDlcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUXVlc3Rpb24gPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEzIDE0SDExVjEySDEzVjE0TTE0LjggOUMxNC41IDkuNCAxNC4xIDkuNiAxMy43IDkuOEMxMy40IDEwIDEzLjMgMTAuMSAxMy4yIDEwLjNDMTMgMTAuNSAxMyAxMC43IDEzIDExSDExQzExIDEwLjUgMTEuMSAxMC4yIDExLjMgOS45QzExLjUgOS43IDExLjkgOS40IDEyLjQgOS4xQzEyLjcgOSAxMi45IDguOCAxMyA4LjZDMTMuMSA4LjQgMTMuMiA4LjEgMTMuMiA3LjlDMTMuMiA3LjYgMTMuMSA3LjQgMTIuOSA3LjJDMTIuNyA3IDEyLjQgNi45IDEyLjEgNi45QzExLjggNi45IDExLjYgNyAxMS40IDcuMUMxMS4yIDcuMiAxMS4xIDcuNCAxMS4xIDcuN0g5LjFDOS4yIDcgOS41IDYuNCAxMCA2QzEwLjUgNS42IDExLjIgNS41IDEyLjEgNS41QzEzIDUuNSAxMy44IDUuNyAxNC4zIDYuMUMxNC44IDYuNSAxNS4xIDcuMSAxNS4xIDcuOEMxNS4yIDguMiAxNS4xIDguNiAxNC44IDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVF1ZXN0aW9uT3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjJMNiAxOEgyMEMyMS4xIDE4IDIyIDE3LjEgMjIgMTZWNEMyMiAyLjkgMjEuMSAyIDIwIDJNMjAgMTZINS4yTDQgMTcuMlY0SDIwVjE2TTEyLjIgNS41QzExLjMgNS41IDEwLjYgNS43IDEwLjEgNkM5LjUgNi40IDkuMiA3IDkuMyA3LjdIMTEuM0MxMS4zIDcuNCAxMS40IDcuMiAxMS42IDcuMUMxMS44IDcgMTIgNi45IDEyLjMgNi45QzEyLjYgNi45IDEyLjkgNyAxMy4xIDcuMkMxMy4zIDcuNCAxMy40IDcuNiAxMy40IDcuOUMxMy40IDguMiAxMy4zIDguNCAxMy4yIDguNkMxMyA4LjggMTIuOCA5IDEyLjYgOS4xQzEyLjEgOS40IDExLjcgOS43IDExLjUgOS45QzExLjEgMTAuMiAxMSAxMC41IDExIDExSDEzQzEzIDEwLjcgMTMuMSAxMC41IDEzLjEgMTAuM0MxMy4yIDEwLjEgMTMuNCAxMCAxMy42IDkuOEMxNC4xIDkuNiAxNC40IDkuMyAxNC43IDguOUMxNSA4LjUgMTUuMSA4LjEgMTUuMSA3LjdDMTUuMSA3IDE0LjggNi40IDE0LjMgNkMxMy45IDUuNyAxMy4xIDUuNSAxMi4yIDUuNU0xMSAxMlYxNEgxM1YxMkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUmVwbHkgPSBcIk0yMiw0QzIyLDIuODkgMjEuMSwyIDIwLDJINEEyLDIgMCAwLDAgMiw0VjE2QTIsMiAwIDAsMCA0LDE4SDE4TDIyLDIyVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVJlcGx5T3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xIDIuOSAxOCA0IDE4SDE4TDIyIDIyVjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE3LjJMMTguOCAxNkg0VjRIMjBWMTcuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlUmVwbHlUZXh0ID0gXCJNMTgsOEg2VjZIMThWOE0xOCwxMUg2VjlIMThWMTFNMTgsMTRINlYxMkgxOFYxNE0yMiw0QTIsMiAwIDAsMCAyMCwySDRBMiwyIDAgMCwwIDIsNFYxNkEyLDIgMCAwLDAgNCwxOEgxOEwyMiwyMlY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VSZXBseVRleHRPdXRsaW5lID0gXCJNOSAxMUgxOFYxM0g5VjExTTE4IDdINlY5SDE4VjdNMjIgNFYyMkwxOCAxOEg0QzIuOSAxOCAyIDE3LjExIDIgMTZWNEMyIDIuOSAyLjkgMiA0IDJIMjBDMjEuMSAyIDIyIDIuODkgMjIgNE0yMCA0SDRWMTZIMTguODNMMjAgMTcuMTdWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlU2V0dGluZ3MgPSBcIk0yMCwySDRBMiwyIDAgMCwwIDIsNFYyMkw2LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTExLDI0SDEzVjIySDExVjI0TTcsMjRIOVYyMkg3VjI0TTE1LDI0SDE3VjIySDE1VjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VTZXR0aW5nc091dGxpbmUgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjIyTDYgMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTIwIDE2SDUuMkw0IDE3LjJWNEgyMFYxNk0xMSAyNEgxM1YyMkgxMVYyNE03IDI0SDlWMjJIN1YyNE0xNSAyNEgxN1YyMkgxNVYyNFwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VUZXh0ID0gXCJNMjAsMkg0QTIsMiAwIDAsMCAyLDRWMjJMNiwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEEyLDIgMCAwLDAgMjAsMk02LDlIMThWMTFINk0xNCwxNEg2VjEySDE0TTE4LDhINlY2SDE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVRleHRDbG9jayA9IFwiTTIyIDEyLjQxVjRDMjIgMi45IDIxLjExIDIgMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYyMkw2IDE4SDkuMjlDMTAuMTUgMjAuODkgMTIuODMgMjMgMTYgMjNDMTkuODYgMjMgMjMgMTkuODcgMjMgMTZDMjMgMTQuNjkgMjIuNjMgMTMuNDYgMjIgMTIuNDFNNiA2SDE4VjhINlY2TTE2IDlDMTQuMSA5IDEyLjM3IDkuNzcgMTEuMTEgMTFINlY5SDE2TTYgMTJIMTAuMjZDOS44NCAxMi42IDkuNSAxMy4yOCA5LjMgMTRINlYxMk0xNiAyMC44NUMxMy4zMiAyMC44NSAxMS4xNSAxOC42OCAxMS4xNSAxNlMxMy4zMiAxMS4xNSAxNiAxMS4xNUMxOC42NyAxMS4xNSAyMC44NSAxMy4zMiAyMC44NSAxNlMxOC42NyAyMC44NSAxNiAyMC44NU0xNi41IDE1LjgyTDE4Ljk0IDE3LjIzTDE4LjE5IDE4LjUzTDE1IDE2LjY5VjEzSDE2LjVWMTUuODJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVRleHRDbG9ja091dGxpbmUgPSBcIk0yMiAxMi40MVY0QzIyIDIuOSAyMS4xMSAyIDIwIDJINEMyLjkgMiAyIDIuODkgMiA0VjIyTDYgMThIOS4yOUMxMC4xNSAyMC44OSAxMi44MyAyMyAxNiAyM0MxOS44NiAyMyAyMyAxOS44NyAyMyAxNkMyMyAxNC42OSAyMi42MyAxMy40NiAyMiAxMi40MU01LjE3IDE2TDQgMTcuMTdWNEgyMFYxMC4yNkMxOC44NiA5LjQ3IDE3LjUgOSAxNiA5QzE0LjEgOSAxMi4zNyA5Ljc3IDExLjExIDExSDZWMTNIOS42OUM5LjI1IDEzLjkxIDkgMTQuOTMgOSAxNkg1LjE3TTE2IDIwLjg1QzEzLjMyIDIwLjg1IDExLjE1IDE4LjY4IDExLjE1IDE2UzEzLjMyIDExLjE1IDE2IDExLjE1QzE4LjY3IDExLjE1IDIwLjg1IDEzLjMyIDIwLjg1IDE2UzE4LjY3IDIwLjg1IDE2IDIwLjg1TTE4IDlINlY3SDE4VjlNMTYuNSAxNS44MkwxOC45NCAxNy4yM0wxOC4xOSAxOC41M0wxNSAxNi42OVYxM0gxNi41VjE1LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VUZXh0TG9jayA9IFwiTTIwLjUgMEEyLjUgMi41IDAgMCAwIDE4IDIuNVYzQTEgMSAwIDAgMCAxNyA0VjhBMSAxIDAgMCAwIDE4IDlIMjNBMSAxIDAgMCAwIDI0IDhWNEExIDEgMCAwIDAgMjMgM1YyLjVBMi41IDIuNSAwIDAgMCAyMC41IDBNMjAuNSAxQTEuNSAxLjUgMCAwIDEgMjIgMi41VjNIMTlWMi41QTEuNSAxLjUgMCAwIDEgMjAuNSAxTTQgMkEyIDIgMCAwIDAgMiA0VjIyTDYgMThIMjBBMiAyIDAgMCAwIDIyIDE2VjExSDE3QzE1Ljg5IDExIDE1IDEwLjExIDE1IDlWMkg0TTYgNkgxM1Y4SDZWNk02IDlIMTNWMTFINlY5TTYgMTJIMTRWMTRINlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXNzYWdlVGV4dExvY2tPdXRsaW5lID0gXCJNMjMgM1YyLjVDMjMgMS4xMiAyMS44OCAwIDIwLjUgMFMxOCAxLjEyIDE4IDIuNVYzQzE3LjQ1IDMgMTcgMy40NSAxNyA0VjhDMTcgOC41NSAxNy40NSA5IDE4IDlIMjNDMjMuNTUgOSAyNCA4LjU1IDI0IDhWNEMyNCAzLjQ1IDIzLjU1IDMgMjMgM00yMiAzSDE5VjIuNUMxOSAxLjY3IDE5LjY3IDEgMjAuNSAxUzIyIDEuNjcgMjIgMi41VjNNNiAxMUgxNVYxM0g2VjExTTYgN0gxNVY5SDZWN00yMiAxMVYxNkMyMiAxNy4xMSAyMS4xMSAxOCAyMCAxOEg2TDIgMjJWNEMyIDIuODkgMi45IDIgNCAySDE1VjRINFYxNy4xN0w1LjE3IDE2SDIwVjExSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1lc3NhZ2VUZXh0T3V0bGluZSA9IFwiTTIwLDJBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDZMMiwyMlY0QzIsMi44OSAyLjksMiA0LDJIMjBNNCw0VjE3LjE3TDUuMTcsMTZIMjBWNEg0TTYsN0gxOFY5SDZWN002LDExSDE1VjEzSDZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWVzc2FnZVZpZGVvID0gXCJNMTgsMTRMMTQsMTAuOFYxNEg2VjZIMTRWOS4yTDE4LDZNMjAsMkg0QTIsMiAwIDAsMCAyLDRWMjJMNiwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEMyMiwyLjg5IDIxLjEsMiAyMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1ldGVvciA9IFwiTTIuOCwzTDE5LjY3LDE4LjgyQzE5LjY3LDE4LjgyIDIwLDE5LjI3IDE5LjU4LDE5LjcxQzE5LjE3LDIwLjE1IDE4LjYzLDE5Ljc3IDE4LjYzLDE5Ljc3TDIuOCwzTTcuODEsNC41OUwyMC45MSwxNi42NEMyMC45MSwxNi42NCAyMS4yMywxNy4wOCAyMC44MiwxNy41QzIwLjQsMTcuOTcgMTkuODYsMTcuNTkgMTkuODYsMTcuNTlMNy44MSw0LjU5TTQuMjksOEwxNy4zOSwyMC4wM0MxNy4zOSwyMC4wMyAxNy43MSwyMC40NyAxNy4zLDIwLjkxQzE2Ljg4LDIxLjM2IDE2LjM0LDIxIDE2LjM0LDIxTDQuMjksOE0xMi4wNSw1Ljk2TDIxLjIsMTQuMzdDMjEuMiwxNC4zNyAyMS40MiwxNC42OCAyMS4xMywxNUMyMC44NSwxNS4zIDIwLjQ3LDE1LjAzIDIwLjQ3LDE1LjAzTDEyLjA1LDUuOTZNNS40NSwxMS45MUwxNC42LDIwLjMzQzE0LjYsMjAuMzMgMTQuODIsMjAuNjQgMTQuNTQsMjAuOTVDMTQuMjUsMjEuMjYgMTMuODcsMjEgMTMuODcsMjFMNS40NSwxMS45MU0xNi4zOCw3LjkyTDIwLjU1LDExLjc0QzIwLjU1LDExLjc0IDIwLjY2LDExLjg4IDIwLjUsMTIuMDNDMjAuMzgsMTIuMTcgMjAuMTksMTIuMDUgMjAuMTksMTIuMDVMMTYuMzgsNy45Mk03LjU2LDE2LjFMMTEuNzQsMTkuOTFDMTEuNzQsMTkuOTEgMTEuODUsMjAuMDYgMTEuNywyMC4yQzExLjU2LDIwLjM1IDExLjM3LDIwLjIyIDExLjM3LDIwLjIyTDcuNTYsMTYuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNZXRyb25vbWUgPSBcIk0xMiwxLjc1TDguNTcsMi42N0w0LjA2LDE5LjUzQzQuMDMsMTkuNjggNCwxOS44NCA0LDIwQzQsMjEuMTEgNC44OSwyMiA2LDIySDE4QzE5LjExLDIyIDIwLDIxLjExIDIwLDIwQzIwLDE5Ljg0IDE5Ljk3LDE5LjY4IDE5Ljk0LDE5LjUzTDE4LjU4LDE0LjQyTDE3LDE2TDE3LjIsMTdIMTMuNDFMMTYuMjUsMTQuMTZMMTQuODQsMTIuNzVMMTAuNTksMTdINi44TDEwLjI5LDRIMTMuNzFMMTUuMTcsOS40M0wxNi44LDcuNzlMMTUuNDMsMi42N0wxMiwxLjc1TTExLjI1LDVWMTQuNzVMMTIuNzUsMTMuMjVWNUgxMS4yNU0xOS43OSw3LjhMMTYuOTYsMTAuNjNMMTYuMjUsOS45MkwxNC44NCwxMS4zNEwxNy42NiwxNC4xNkwxOS4wOCwxMi43NUwxOC4zNywxMi4wNEwyMS4yLDkuMjFMMTkuNzksNy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1ldHJvbm9tZVRpY2sgPSBcIk0xMiwxLjc1TDguNTcsMi42N0w0LjA3LDE5LjVDNC4wNiwxOS41IDQsMTkuODQgNCwyMEM0LDIxLjExIDQuODksMjIgNiwyMkgxOEMxOS4xMSwyMiAyMCwyMS4xMSAyMCwyMEMyMCwxOS44NCAxOS45NCwxOS41IDE5LjkzLDE5LjVMMTUuNDMsMi42N0wxMiwxLjc1TTEwLjI5LDRIMTMuNzFMMTcuMiwxN0gxM1YxMkgxMVYxN0g2LjhMMTAuMjksNE0xMSw1VjlIMTBWMTFIMTRWOUgxM1Y1SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvU2QgPSBcIk04LDJBMiwyIDAgMCwwIDYsNFYxMUw0LDEzVjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwySDhNOSw0SDExVjhIOVY0TTEyLDRIMTRWOEgxMlY0TTE1LDRIMTdWOEgxNVY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmUgPSBcIk0xMiwyQTMsMyAwIDAsMSAxNSw1VjExQTMsMyAwIDAsMSAxMiwxNEEzLDMgMCAwLDEgOSwxMVY1QTMsMyAwIDAsMSAxMiwyTTE5LDExQzE5LDE0LjUzIDE2LjM5LDE3LjQ0IDEzLDE3LjkzVjIxSDExVjE3LjkzQzcuNjEsMTcuNDQgNSwxNC41MyA1LDExSDdBNSw1IDAgMCwwIDEyLDE2QTUsNSAwIDAsMCAxNywxMUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3Bob25lTWludXMgPSBcIk05LDJBMywzIDAgMCwxIDEyLDVWMTFBMywzIDAgMCwxIDksMTRBMywzIDAgMCwxIDYsMTFWNUEzLDMgMCAwLDEgOSwyTTE2LDExQzE2LDE0LjUgMTMuNDQsMTcuNDMgMTAsMTcuOTNWMjFIOFYxNy45M0M0LjU2LDE3LjQzIDIsMTQuNSAyLDExSDRBNSw1IDAgMCwwIDksMTZBNSw1IDAgMCwwIDE0LDExSDE2TTE1LDVIMjNWN0gxNVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmVPZmYgPSBcIk0xOSwxMUMxOSwxMi4xOSAxOC42NiwxMy4zIDE4LjEsMTQuMjhMMTYuODcsMTMuMDVDMTcuMTQsMTIuNDMgMTcuMywxMS43NCAxNy4zLDExSDE5TTE1LDExLjE2TDksNS4xOFY1QTMsMyAwIDAsMSAxMiwyQTMsMyAwIDAsMSAxNSw1VjExTDE1LDExLjE2TTQuMjcsM0wyMSwxOS43M0wxOS43MywyMUwxNS41NCwxNi44MUMxNC43NywxNy4yNyAxMy45MSwxNy41OCAxMywxNy43MlYyMUgxMVYxNy43MkM3LjcyLDE3LjIzIDUsMTQuNDEgNSwxMUg2LjdDNi43LDE0IDkuMjQsMTYuMSAxMiwxNi4xQzEyLjgxLDE2LjEgMTMuNiwxNS45MSAxNC4zMSwxNS41OEwxMi42NSwxMy45MkwxMiwxNEEzLDMgMCAwLDEgOSwxMVYxMC4yOEwzLDQuMjdMNC4yNywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmVPdXRsaW5lID0gXCJNMTcuMywxMUMxNy4zLDE0IDE0Ljc2LDE2LjEgMTIsMTYuMUM5LjI0LDE2LjEgNi43LDE0IDYuNywxMUg1QzUsMTQuNDEgNy43MiwxNy4yMyAxMSwxNy43MlYyMUgxM1YxNy43MkMxNi4yOCwxNy4yMyAxOSwxNC40MSAxOSwxMU0xMC44LDQuOUMxMC44LDQuMjQgMTEuMzQsMy43IDEyLDMuN0MxMi42NiwzLjcgMTMuMiw0LjI0IDEzLjIsNC45TDEzLjE5LDExLjFDMTMuMTksMTEuNzYgMTIuNjYsMTIuMyAxMiwxMi4zQzExLjM0LDEyLjMgMTAuOCwxMS43NiAxMC44LDExLjFNMTIsMTRBMywzIDAgMCwwIDE1LDExVjVBMywzIDAgMCwwIDEyLDJBMywzIDAgMCwwIDksNVYxMUEzLDMgMCAwLDAgMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9waG9uZVBsdXMgPSBcIk05LDJBMywzIDAgMCwxIDEyLDVWMTFBMywzIDAgMCwxIDksMTRBMywzIDAgMCwxIDYsMTFWNUEzLDMgMCAwLDEgOSwyTTE2LDExQzE2LDE0LjUgMTMuNDQsMTcuNDMgMTAsMTcuOTNWMjFIOFYxNy45M0M0LjU2LDE3LjQzIDIsMTQuNSAyLDExSDRBNSw1IDAgMCwwIDksMTZBNSw1IDAgMCwwIDE0LDExSDE2TTE1LDVIMThWMkgyMFY1SDIzVjdIMjBWMTBIMThWN0gxNVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3JvcGhvbmVTZXR0aW5ncyA9IFwiTTE5LDEwSDE3LjNDMTcuMywxMyAxNC43NiwxNS4xIDEyLDE1LjFDOS4yNCwxNS4xIDYuNywxMyA2LjcsMTBINUM1LDEzLjQxIDcuNzIsMTYuMjMgMTEsMTYuNzJWMjBIMTNWMTYuNzJDMTYuMjgsMTYuMjMgMTksMTMuNDEgMTksMTBNMTUsMjRIMTdWMjJIMTVNMTEsMjRIMTNWMjJIMTFNMTIsMTNBMywzIDAgMCwwIDE1LDEwVjRBMywzIDAgMCwwIDEyLDFBMywzIDAgMCwwIDksNFYxMEEzLDMgMCAwLDAgMTIsMTNNNywyNEg5VjIySDdWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9waG9uZVZhcmlhbnQgPSBcIk05LDNBNCw0IDAgMCwxIDEzLDdINUE0LDQgMCAwLDEgOSwzTTExLjg0LDkuODJMMTEsMThIMTBWMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOVYxNEE0LDQgMCAwLDEgMTgsMTBIMjBMMTksMTFMMjAsMTJIMThBMiwyIDAgMCwwIDE2LDE0VjE5QTQsNCAwIDAsMSAxMiwyM0E0LDQgMCAwLDEgOCwxOVYxOEg3TDYuMTYsOS44MkM1LjY3LDkuMzIgNS4zMSw4LjcgNS4xMyw4SDEyLjg3QzEyLjY5LDguNyAxMi4zMyw5LjMyIDExLjg0LDkuODJNOSwxMUExLDEgMCAwLDAgOCwxMkExLDEgMCAwLDAgOSwxM0ExLDEgMCAwLDAgMTAsMTJBMSwxIDAgMCwwIDksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9waG9uZVZhcmlhbnRPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDE2LDE5LjI2QzE1Ljg2LDIxLjM1IDE0LjEyLDIzIDEyLDIzQTQsNCAwIDAsMSA4LDE5VjE4SDdMNi4xNiw5LjgyQzUuODIsOS40NyA1LjUzLDkuMDYgNS4zMyw4LjZMMiw1LjI3TTksM0E0LDQgMCAwLDEgMTMsN0g4LjgyTDYuMDgsNC4yNkM2LjgxLDMuNSA3Ljg1LDMgOSwzTTExLjg0LDkuODJMMTEuODIsMTBMOS44Miw4SDEyLjg3QzEyLjY5LDguNyAxMi4zMyw5LjMyIDExLjg0LDkuODJNMTEsMThIMTBWMTlBMiwyIDAgMCwwIDEyLDIxQTIsMiAwIDAsMCAxNCwxOVYxNy4yN0wxMS4zNSwxNC42MkwxMSwxOE0xOCwxMEgyMEwxOSwxMUwyMCwxMkgxOEEyLDIgMCAwLDAgMTYsMTRWMTQuMThMMTQuMywxMi41QzE0LjksMTEgMTYuMzMsMTAgMTgsMTBNOCwxMkExLDEgMCAwLDAgOSwxM0M5LjIxLDEzIDkuNCwxMi45NCA5LjU2LDEyLjgzTDguMTcsMTEuNDRDOC4wNiwxMS42IDgsMTEuNzkgOCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3Njb3BlID0gXCJNOS40Niw2LjI4TDExLjA1LDlDOC40Nyw5LjI2IDYuNSwxMS40MSA2LjUsMTRBNSw1IDAgMCwwIDExLjUsMTlDMTMuNTUsMTkgMTUuMzEsMTcuNzcgMTYuMDgsMTZIMTMuNVYxNEgyMS41VjE2SDE5LjI1QzE4Ljg0LDE3LjU3IDE3Ljk3LDE4Ljk2IDE2Ljc5LDIwSDE5LjVWMjJIMy41VjIwSDYuMjFDNC41NSwxOC41MyAzLjUsMTYuMzkgMy41LDE0QzMuNSwxMC4zNyA1Ljk2LDcuMiA5LjQ2LDYuMjhNMTIuNzQsMi4wN0wxMy41LDMuMzdMMTQuMzYsMi44N0wxNy44Niw4LjkzTDE0LjM5LDEwLjkzTDEwLjg5LDQuODdMMTEuNzYsNC4zN0wxMSwzLjA3TDEyLjc0LDIuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0ID0gXCJNMiwzSDExVjEySDJWM00xMSwyMkgyVjEzSDExVjIyTTIxLDNWMTJIMTJWM0gyMU0yMSwyMkgxMlYxM0gyMVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRBY2Nlc3MgPSBcIk0xNC41IDIuNjNRMTUuODQgMi42MyAxNy4xOCAyLjc3TDE3Ljg1IDIuODZRMTguMyAyLjkzIDE4Ljg0IDMuMDQgMTkuMzcgMy4xNSAxOS45MyAzLjMxIDIwLjUgMy40NyAyMC45NiAzLjY5IDIxLjQyIDMuOTEgMjEuNzEgNC4xOSAyMiA0LjQ3IDIyIDQuODFWMTkuMTlRMjIgMTkuNTMgMjEuNzEgMTkuODEgMjEuNDEgMjAuMDkgMjAuOTYgMjAuMzEgMjAuNSAyMC41MyAxOS45MyAyMC42OSAxOS4zNyAyMC44NSAxOC44MyAyMC45NiAxOC4zIDIxLjA3IDE3Ljg2IDIxLjE0IDE3LjQxIDIxLjIxIDE3LjE3IDIxLjIzIDE1Ljg0IDIxLjM4IDE0LjUgMjEuMzggMTMuMTUgMjEuMzggMTEuODIgMjEuMjMgMTEuNTkgMjEuMjEgMTEuMTUgMjEuMTQgMTAuNyAyMS4wNyAxMC4xNiAyMC45NiA5LjYzIDIwLjg1IDkuMDcgMjAuNjkgOC41IDIwLjUzIDguMDUgMjAuMzEgNy41OSAyMC4wOSA3LjI5IDE5LjgxIDcgMTkuNTMgNyAxOS4xOVYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuODFRNyA0LjQ3IDcuMjkgNC4xOSA3LjU5IDMuOTEgOC4wNSAzLjY5IDguNSAzLjQ3IDkuMDcgMy4zMSA5LjYzIDMuMTUgMTAuMTcgMy4wNCAxMC43IDIuOTMgMTEuMTQgMi44NiAxMS41OSAyLjggMTEuODMgMi43NyAxMy4xNSAyLjYzIDE0LjUgMi42M00xNC41IDMuODhRMTMuODcgMy44OCAxMy4wOCAzLjkyIDEyLjMgMy45NiAxMS41IDQuMDcgMTAuNjkgNC4xOCA5LjkzIDQuMzYgOS4xNyA0LjU0IDguNTggNC44MSA5LjE5IDUuMSA5Ljk1IDUuMjggMTAuNyA1LjQ2IDExLjUgNS41NiAxMi4yOSA1LjY2IDEzLjA3IDUuNzEgMTMuODUgNS43NSAxNC41IDUuNzUgMTUuMTYgNS43NSAxNS45MyA1LjcxIDE2LjcxIDUuNjYgMTcuNSA1LjU2IDE4LjMgNS40NiAxOS4wNiA1LjI4IDE5LjgxIDUuMSAyMC40MiA0LjgxIDE5LjgzIDQuNTQgMTkuMDcgNC4zNiAxOC4zMSA0LjE4IDE3LjUgNC4wNyAxNi43IDMuOTYgMTUuOTIgMy45MiAxNS4xNCAzLjg4IDE0LjUgMy44OE01Ljk0IDEzLjc5SDguMDZMOC41NSAxNS4yOEgxMC4yMkw3LjgzIDguNzJINi4yTDMuNzggMTUuMjhINS40NE0yMC43NSAxOVYxNlEyMC4xMSAxNi4zMSAxOS4zMSAxNi41IDE4LjUgMTYuNjggMTcuNjcgMTYuNzkgMTYuODMgMTYuOSAxNiAxNi45NSAxNS4xOSAxNyAxNC41IDE3IDEzLjc5IDE3IDEzLjA4IDE2Ljk2IDEyLjM3IDE2LjkxIDExLjY3IDE2LjgzIDExLjQ0IDE3IDExLjE3IDE3SDguMjVWMTlROC41MyAxOS4yMSA5IDE5LjM4IDkuNSAxOS41NiAxMC4wNyAxOS42OCAxMC42NSAxOS44MSAxMS4yOSAxOS45IDExLjkyIDIwIDEyLjUgMjAuMDMgMTMuMTIgMjAuMDkgMTMuNjQgMjAuMTEgMTQuMTYgMjAuMTMgMTQuNSAyMC4xMyAxNC44NCAyMC4xMiAxNS4zNiAyMC4xIDE1Ljg4IDIwLjA5IDE2LjUgMjAuMDMgMTcuMDggMjAgMTcuNzEgMTkuOSAxOC4zNSAxOS44MSAxOC45MyAxOS42OCAxOS41IDE5LjU2IDIwIDE5LjM4IDIwLjQ3IDE5LjIxIDIwLjc1IDE5TTIwLjc1IDE0LjYzVjExUTIwLjExIDExLjMxIDE5LjMxIDExLjUgMTguNSAxMS42OCAxNy42NyAxMS43OSAxNi44MyAxMS45IDE2IDExLjk1IDE1LjE5IDEyIDE0LjUgMTIgMTMuODggMTIgMTMuMjUgMTEuOTcgMTIuNjMgMTEuOTMgMTIgMTEuODdWMTUuNjJRMTIuNjMgMTUuNjkgMTMuMjUgMTUuNzIgMTMuODggMTUuNzUgMTQuNSAxNS43NSAxNC44NiAxNS43NSAxNS4zOCAxNS43MyAxNS45IDE1LjcxIDE2LjUgMTUuNjYgMTcuMDggMTUuNiAxNy43IDE1LjUgMTguMzMgMTUuNDQgMTguOSAxNS4zMSAxOS41IDE1LjE4IDE5Ljk2IDE1IDIwLjQ1IDE0Ljg1IDIwLjc1IDE0LjYzTTIwLjc1IDkuNjNWNlEyMC4xMSA2LjMxIDE5LjMxIDYuNSAxOC41IDYuNjggMTcuNjcgNi43OSAxNi44MyA2LjkgMTYgNi45NSAxNS4xOSA3IDE0LjUgNyAxMy44MSA3IDEzIDYuOTUgMTIuMTcgNi45IDExLjMzIDYuNzkgMTAuNSA2LjY4IDkuNjkgNi41IDguODkgNi4zMSA4LjI1IDZWN0gxMS4xN1ExMS41IDcgMTEuNzYgNy4yNCAxMiA3LjUgMTIgNy44M1YxMC42MlExMi42MyAxMC42OSAxMy4yNSAxMC43MiAxMy44OCAxMC43NSAxNC41IDEwLjc1IDE0Ljg2IDEwLjc1IDE1LjM4IDEwLjczIDE1LjkgMTAuNzEgMTYuNSAxMC42NiAxNy4wOCAxMC42IDE3LjcgMTAuNSAxOC4zMyAxMC40NCAxOC45IDEwLjMxIDE5LjUgMTAuMTggMTkuOTYgMTAgMjAuNDQgOS44NSAyMC43NSA5LjYzTTYuMzIgMTIuNUw3IDEwLjVMNy42NSAxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdEF6dXJlID0gXCJNMTMuMDUsNC4yNEw2LjU2LDE4LjA1TDIsMThMNy4wOSw5LjI0TDEzLjA1LDQuMjRNMTMuNzUsNS4zM0wyMiwxOS43Nkg2Ljc0TDE2LjA0LDE4LjFMMTEuMTcsMTIuMzFMMTMuNzUsNS4zM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRBenVyZURldm9wcyA9IFwiTTIyIDE4TDE3IDIyTDkgMTlWMjJMNC44MSAxNi4yNUwxNy43MiAxNy4zVjYuMzRMMjIgNS42NVYxOE00LjgxIDE2LjI1VjguOTZMMTcuNzIgNi4zNEwxMC42IDJWNC44NEwzLjk3IDYuNzZMMiA5LjM4VjE1LjA3TDQuODEgMTYuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0QmluZyA9IFwiTTUsM1YxOUw4LjcyLDIxTDE4LDE1LjgyVjExLjczSDE4TDkuNzcsOC45NUwxMS4zOCwxMi44NEwxMy45NCwxNEw4LjcsMTYuOTJWNC4yN0w1LDNcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnREeW5hbWljczM2NSA9IFwiTTYsMkwxNy4yNSw4LjVMMTMuNSwxMS41TDYsOFYyTTYsOUw5LjUsMTEuMjVMNiwyMkwxOCw5VjE1TDYsMjJWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRFZGdlID0gXCJNMTAuODYgMTUuMzdDMTAuMTcgMTQuNiA5LjcgMTMuNjggOS41NSAxMi42NUM5LjI1IDEzLjExIDkgMTMuNjEgOC44MiAxNC4xNUM3LjkgMTYuOSA5LjUgMjAuMzMgMTIuMjIgMjEuMzNDMTQuNTYgMjIuMTEgMTcuMTkgMjAuNzIgMTguOTIgMTkuMkMxOS4xOCAxOC44NSAyMS4yMyAxNy4wNCAyMC4yMSAxNi44NEMxNy4xOSAxOC4zOSAxMy4xOSAxNy45NSAxMC44NiAxNS4zN00xMS40NiA5LjU2QzEyLjUgOS41NSAxMS41IDkuMTMgMTEuMDcgOC44MUMxMC4wMyA4LjI0IDguODEgNy45NiA3LjYzIDcuOTZDMy43OCA4IC45OTUgMTAuNDEgMi4zIDE0LjRDMy4yNCAxOC4yOCA2LjYxIDIxLjQgMTAuNTkgMjEuOUM4LjU0IDIwLjYxIDcuMyAxOC4xOSA3LjMgMTUuNzhDNy4zOCAxMy4yNSA4Ljk0IDEwLjI4IDExLjQ2IDkuNTZNMi43OCA4LjI0QzUuODIgNiAxMC42NiA2LjE4IDEzLjI4IDlDMTQuMyAxMC4xMSAxNSAxMiAxNC4wNyAxMy4zN0MxMi4zMyAxNS4yNSAxNy4xNSAxNS41IDE4LjE4IDE1LjIyQzIxLjkyIDE0LjUgMjIuOTEgMTAuMTUgMjEuMTMgNy4xNUMxOS40MyAzLjc1IDE1LjY2IDEuOTcgMTEuOTYgMkM3LjkgMS45MyA0LjI1IDQuNSAyLjc4IDguMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0RWRnZUxlZ2FjeSA9IFwiTSAyLjczNjc1LDEwLjgwNzdDIDMuODI5MywtMS4zNjEwOSAyMi41MTU3LC0xLjM2MTA5IDIxLjE5NzEsMTMuNTU3OUwgOC42MTM5MiwxMy41NTc5QyA4LjYxMzkyLDE3Ljg1MjcgMTQuNDE1NywxOS4yMDkgMTkuNTM5NCwxNi4zMDgxTCAxOS41Mzk0LDIwLjUyNzZDIDEzLjI0NzgsMjMuODgwNiA0Ljk5NzIsMjEuNDMxOCA0Ljk5NzIsMTQuMDg1M0MgNC45OTcyLDguNTg0NzYgOS45NzAxOSw2LjgxNDIgOS45NzAxOSw2LjgxNDJDIDkuOTcwMTksNi44MTQyIDguNTc2MjQsOC41ODQ4OSA4LjUzODU3LDEwLjA1NDJMIDE1LjY5NjcsMTAuMDU0MkMgMTUuNjk2NywyLjkzMzc2IDUuOTAxMzcsNS41NzA5NSAyLjczNjc1LDEwLjgwNzcgWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdEV4Y2VsID0gXCJNMjEuMTcgMy4yNVEyMS41IDMuMjUgMjEuNzYgMy41IDIyIDMuNzQgMjIgNC4wOFYxOS45MlEyMiAyMC4yNiAyMS43NiAyMC41IDIxLjUgMjAuNzUgMjEuMTcgMjAuNzVINy44M1E3LjUgMjAuNzUgNy4yNCAyMC41IDcgMjAuMjYgNyAxOS45MlYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuMDhRNyAzLjc0IDcuMjQgMy41IDcuNSAzLjI1IDcuODMgMy4yNU03IDEzLjA2TDguMTggMTUuMjhIOS45N0w4IDEyLjA2TDkuOTMgOC44OUg4LjIyTDcuMTMgMTAuOUw3LjA5IDEwLjk2TDcuMDYgMTEuMDNRNi44IDEwLjUgNi41IDkuOTYgNi4yNSA5LjQzIDUuOTcgOC44OUg0LjE2TDYuMDUgMTIuMDhMNCAxNS4yOEg1Ljc4TTEzLjg4IDE5LjVWMTdIOC4yNVYxOS41TTEzLjg4IDE1Ljc1VjEyLjYzSDEyVjE1Ljc1TTEzLjg4IDExLjM4VjguMjVIMTJWMTEuMzhNMTMuODggN1Y0LjVIOC4yNVY3TTIwLjc1IDE5LjVWMTdIMTUuMTNWMTkuNU0yMC43NSAxNS43NVYxMi42M0gxNS4xM1YxNS43NU0yMC43NSAxMS4zOFY4LjI1SDE1LjEzVjExLjM4TTIwLjc1IDdWNC41SDE1LjEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlciA9IFwiTTEzLDNMMTQsMy4wNkMxNi44LDEuNzkgMTkuMjMsMS42NCAyMC41LDIuOTJDMjEuNSwzLjkzIDIxLjU4LDUuNjcgMjAuOTIsNy43MkMyMS42MSw5IDIyLDEwLjQ1IDIyLDEyTDIxLjk1LDEzSDkuMDhDOS40NSwxNS4yOCAxMS4wNiwxNyAxMywxN0MxNC4zMSwxNyAxNS40NywxNi4yMSAxNi4yLDE1SDIxLjVDMjAuMjUsMTguNSAxNi45MiwyMSAxMywyMUMxMS43MiwyMSAxMC41LDIwLjczIDkuNDEsMjAuMjVDNi41LDIxLjY4IDMuODksMjEuOSAyLjU3LDIwLjU2QzEsMTguOTYgMS42OCwxNS41NyA0LDEyQzQuOTMsMTAuNTQgNi4xNCw5LjA2IDcuNTcsNy42NUw4LjM4LDYuODhDNy4yMSw3LjU3IDUuNzEsOC42MiA0LjE5LDEwLjE3QzUuMDMsNi4wOCA4LjY2LDMgMTMsM00xMyw3QzExLjIxLDcgOS42OSw4LjQ3IDkuMTgsMTAuNUgxNi44MkMxNi4zMSw4LjQ3IDE0Ljc5LDcgMTMsN00yMC4wNiw0LjA2QzE5LjQsMy4zOSAxOC4yMiwzLjM1IDE2Ljc0LDMuODFDMTguMjIsNC41IDE5LjUsNS41NiAyMC40MSw2Ljg5QzIwLjczLDUuNjUgMjAuNjQsNC42NSAyMC4wNiw0LjA2TTMuODksMjBDNC43MiwyMC44NCA2LjQsMjAuNjkgOC40NCwxOS43NkM2LjU5LDE4LjY3IDUuMTcsMTYuOTQgNC40NywxNC44OEMzLjI3LDE3LjE1IDMsMTkuMDcgMy44OSwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRPZmZpY2UgPSBcIk0xOS45NCA1LjU5VjE4LjM5UTE5Ljk0IDE5LjA2IDE5LjU1IDE5LjU5IDE5LjE2IDIwLjExIDE4LjUgMjAuMjlMMTIuNzcgMjEuOTRRMTIuNjUgMjEuOTcgMTIuNSAyMkgxMi4yOFExMS45NSAyMiAxMS42OCAyMS45MSAxMS40MSAyMS44MiAxMS4xMyAyMS42N0w3LjM4IDE5LjU1UTcuMTcgMTkuNDMgNy4wNSAxOS4yNCA2LjkzIDE5LjA1IDYuOTMgMTguODEgNi45MyAxOC40NSA3LjE5IDE4LjIgNy40NCAxNy45NSA3LjggMTcuOTVIMTIuNjZWNi4xNEw5IDcuNDRROC41NyA3LjYgOC4zIDggOC4wMyA4LjM4IDguMDMgOC44NVYxNS41OFE4LjAzIDE2IDcuODIgMTYuMzQgNy42MiAxNi42OCA3LjI1IDE2Ljg4TDUuNTMgMTcuODJRNS4yOSAxNy45NSA1LjA1IDE3Ljk1IDQuNjQgMTcuOTUgNC4zNSAxNy42NiA0LjA2IDE3LjM3IDQuMDYgMTYuOTVWNy40N1E0LjA2IDYuOTUgNC4zMyA2LjUgNC42MSA2IDUuMDYgNS43NEwxMS4yMiAyLjI0UTExLjQzIDIuMTIgMTEuNjcgMi4wNiAxMS45MSAyIDEyLjE1IDIgMTIuMzIgMiAxMi40NiAyLjAzIDEyLjYgMi4wNSAxMi43NyAyLjFMMTguNSAzLjY5UTE4LjgzIDMuNzggMTkuMDkgMy45NiAxOS4zNSA0LjE0IDE5LjU0IDQuMzkgMTkuNzQgNC42NSAxOS44NCA0Ljk1IDE5Ljk0IDUuMjYgMTkuOTQgNS41OU0xOC42MiAxOC4zOVY1LjU5UTE4LjYyIDUuMzYgMTguNSA1LjE5IDE4LjM1IDUgMTguMTMgNC45NkwxNS4zMSA0LjE4UTE1IDQuMDkgMTQuNjUgNCAxNC4zMiAzLjg5IDE0IDMuODFWMjAuMjFMMTguMTMgMTlRMTguMzUgMTguOTYgMTguNSAxOC43OSAxOC42MiAxOC42MiAxOC42MiAxOC4zOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRPbmVkcml2ZSA9IFwiTTE4LjIxIDEwLjI5UTE5IDEwLjM0IDE5LjcgMTAuNjggMjAuMzkgMTEgMjAuOSAxMS41NyAyMS40MSAxMi4xMiAyMS43MSAxMi44MyAyMiAxMy41NCAyMiAxNC4zNCAyMiAxNS4xOCAyMS42OCAxNS45MiAyMS4zNiAxNi42NiAyMC44IDE3LjIxIDIwLjI1IDE3Ljc2IDE5LjUgMTguMDggMTguNzggMTguNDEgMTcuOTQgMTguNDFIN1E1Ljk3IDE4LjQxIDUuMDYgMTggNC4xNSAxNy42MSAzLjQ3IDE2Ljk0IDIuNzkgMTYuMjYgMi40IDE1LjM1IDIgMTQuNDQgMiAxMy40MSAyIDEyLjU5IDIuMjYgMTEuODMgMi41IDExLjA4IDMgMTAuNDUgMy40NCA5LjgyIDQuMDggOS4zNSA0LjcyIDguODggNS41IDguNjMgNS44NyA4LjUgNi4yMSA4LjUgNi41NiA4LjQzIDYuOTMgOC40MUg2Ljk0UTcuMzcgNy43NSA3Ljk1IDcuMjMgOC41IDYuNzEgOS4yIDYuMzQgOS44NyA2IDEwLjYyIDUuNzggMTEuMzcgNS41OSAxMi4xNiA1LjU5IDEzLjIyIDUuNTkgMTQuMiA1Ljk0IDE1LjE4IDYuMjkgMTYgNi45MSAxNi44IDcuNTMgMTcuMzcgOC4zOSAxNy45NSA5LjI2IDE4LjIxIDEwLjI5TTEyLjE2IDYuODRRMTEuMDUgNi44NCAxMC4wNiA3LjMgOS4wNiA3Ljc1IDguMzYgOC42IDguNzMgOC43IDkuMDcgOC44NSA5LjQgOSA5LjczIDkuMkwxMy43MSAxMS41OEwxNiAxMC42MlExNi4yMSAxMC41MyAxNi40NCAxMC40NSAxNi42NyAxMC4zOCAxNi45MiAxMC4zMyAxNi42OCA5LjU1IDE2LjIxIDguOTEgMTUuNzQgOC4yNyAxNS4xMSA3LjgxIDE0LjUgNy4zNSAxMy43MyA3LjEgMTMgNi44NCAxMi4xNiA2Ljg0TTQgMTUuNjZMMTIuMjcgMTIuMThMOS4wOCAxMC4yNlE4LjU5IDkuOTcgOC4wNiA5LjgxIDcuNSA5LjY2IDYuOTUgOS42NiA2LjE5IDkuNjYgNS41IDkuOTYgNC44NCAxMC4yNiA0LjM0IDEwLjc3IDMuODQgMTEuMjkgMy41NCAxMS45NyAzLjI1IDEyLjY1IDMuMjUgMTMuNDEgMy4yNSAxNCAzLjQ1IDE0LjU5IDMuNjQgMTUuMTkgNCAxNS42Nk0xNy45NCAxNy4xNlExOC40MSAxNy4xNiAxOC44NCAxNyAxOS4yNyAxNi44NiAxOS42NCAxNi41OEwxMy42MSAxM0w1LjAzIDE2LjU5UTUuNDcgMTYuODYgNS45NyAxNyA2LjQ3IDE3LjE2IDcgMTcuMTZNMjAuNDUgMTUuNjFRMjAuNzUgMTUgMjAuNzUgMTQuMzQgMjAuNzUgMTMuNyAyMC41IDEzLjE3IDIwLjI2IDEyLjY1IDE5Ljg1IDEyLjI4IDE5LjQzIDExLjkxIDE4Ljg4IDExLjcxIDE4LjMyIDExLjUgMTcuNyAxMS41IDE3LjM1IDExLjUgMTcgMTEuNiAxNi42NiAxMS42OCAxNi4zMyAxMS44MSAxNiAxMS45MyAxNS42NyAxMi4wOCAxNS4zNSAxMi4yMyAxNS4wNCAxMi4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRPbmVub3RlID0gXCJNMjEuMTcgMy4yNVEyMS41IDMuMjUgMjEuNzYgMy41IDIyIDMuNzQgMjIgNC4wOFYxOS45MlEyMiAyMC4yNiAyMS43NiAyMC41IDIxLjUgMjAuNzUgMjEuMTcgMjAuNzVINy44M1E3LjUgMjAuNzUgNy4yNCAyMC41IDcgMjAuMjYgNyAxOS45MlYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuMDhRNyAzLjc0IDcuMjQgMy41IDcuNSAzLjI1IDcuODMgMy4yNU01LjggMTEuMTdMOC4xNiAxNS4yN0g5LjY1VjguNzNIOC4yVjEyLjkyTDUuOTMgOC43M0g0LjM1VjE1LjI3SDUuOE0yMC43NSAxOS41VjE3SDE4LjI1VjE5LjVNMjAuNzUgMTUuNzVWMTMuMjVIMTguMjVWMTUuNzVNMjAuNzUgMTJWOS41SDE4LjI1VjEyTTIwLjc1IDguMjVWNC41SDguMjVWN0gxMS4xN1ExMS41IDcgMTEuNzYgNy4yNCAxMiA3LjUgMTIgNy44M1YxNi4xN1ExMiAxNi41IDExLjc2IDE2Ljc2IDExLjUgMTcgMTEuMTcgMTdIOC4yNVYxOS41SDE3VjguMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0T3V0bG9vayA9IFwiTTguNTYgMTIuMDNROC41NiAxMi40MSA4LjUgMTIuNzYgOC4zOSAxMy4xIDguMiAxMy4zOCA4IDEzLjY1IDcuNzEgMTMuODEgNy40MSAxMy45NyA3IDEzLjk3IDYuNTggMTMuOTcgNi4yOSAxMy44IDYgMTMuNjMgNS44MSAxMy4zNSA1LjYyIDEzLjA3IDUuNTQgMTIuNzIgNS40NSAxMi4zNyA1LjQ1IDEyIDUuNDUgMTEuNjQgNS41NCAxMS4yOCA1LjYyIDEwLjkzIDUuODEgMTAuNjUgNiAxMC4zNyA2LjMxIDEwLjIgNi42MSAxMC4wMyA3LjAzIDEwLjAzIDcuNDYgMTAuMDMgNy43NSAxMC4yIDguMDUgMTAuMzggOC4yMyAxMC42NiA4LjQxIDEwLjk1IDguNSAxMS4zIDguNTYgMTEuNjYgOC41NiAxMi4wM00yMiAxMlYxOS44MVEyMiAyMC4yIDIxLjczIDIwLjUgMjEuNDUgMjAuNzUgMjEuMDYgMjAuNzVINy45NFE3LjU1IDIwLjc1IDcuMjcgMjAuNSA3IDIwLjIgNyAxOS44MVYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g4LjI1VjQuMTNROC4yNSAzLjc2IDguNSAzLjUgOC43NiAzLjI1IDkuMTMgMy4yNUgxOS44N1EyMC4yNCAzLjI1IDIwLjUgMy41IDIwLjc1IDMuNzYgMjAuNzUgNC4xM1YxMS4wNEwyMS43OSAxMS42NEgyMS44UTIxLjg4IDExLjcgMjEuOTQgMTEuOCAyMiAxMS44OSAyMiAxMk0xNyA1LjEzVjcuNjNIMTkuNVY1LjEzTTE3IDguODhWMTEuMzhIMTkuNVY4Ljg4TTE3IDEyLjYzVjE0LjE1TDE5LjU0IDEyLjYzTTEyLjYzIDUuMTNWNy42M0gxNS43NVY1LjEzTTEyLjYzIDguODhWMTEuMzhIMTUuNzVWOC44OE0xMi42MyAxMi42M1YxNC4zMkwxNC42NCAxNS41NkwxNS43NSAxNC45VjEyLjYzTTkuNSA1LjEzVjdIMTEuMjdRMTEuMzMgNyAxMS4zOCA3LjA0VjUuMTJNNyAxNS4zMlE3LjczIDE1LjMyIDguMzIgMTUuMDYgOC45IDE0LjggOS4zMSAxNC4zNSA5LjcxIDEzLjkgOS45MSAxMy4yOCAxMC4xMiAxMi42NiAxMC4xMyAxMS45NCAxMC4xMyAxMS4yNSA5LjkyIDEwLjY1IDkuNzIgMTAuMDYgOS4zMiA5LjYyIDguOTMgOS4xOCA4LjM3IDguOTMgNy44IDguNjggNy4wOCA4LjY4IDYuMzEgOC42OCA1LjcxIDguOTMgNS4xMiA5LjE4IDQuNzEgOS42MyA0LjMgMTAuMDkgNC4wOSAxMC43MSAzLjg4IDExLjM0IDMuODggMTIuMDggMy44OCAxMi43OCA0LjA5IDEzLjM4IDQuMzEgMTMuOTcgNC43MSAxNC40IDUuMTEgMTQuODMgNS42OCAxNS4wOCA2LjI2IDE1LjMyIDcgMTUuMzJNOC4yNSAxOS41SDE4LjU3TDEyIDE1LjRWMTYuMTdRMTIgMTYuNSAxMS43NiAxNi43NiAxMS41IDE3IDExLjE3IDE3SDguMjVNMjAuNzUgMTkuMzlWMTMuMzZMMTUuODMgMTYuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0UG93ZXJwb2ludCA9IFwiTTEzLjI1IDMuMjVRMTQuNDYgMy4yNSAxNS41OCAzLjU2IDE2LjcgMy44OCAxNy42NyA0LjQ1IDE4LjY0IDUgMTkuNDQgNS44MSAyMC4yMyA2LjYxIDIwLjggNy41OCAyMS4zOCA4LjU1IDIxLjY5IDkuNjcgMjIgMTAuNzkgMjIgMTIgMjIgMTMuMjEgMjEuNjkgMTQuMzMgMjEuMzggMTUuNDUgMjAuOCAxNi40MiAyMC4yMyAxNy4zOSAxOS40NCAxOC4xOSAxOC42NCAxOSAxNy42NyAxOS41NSAxNi43IDIwLjEzIDE1LjU4IDIwLjQ0IDE0LjQ2IDIwLjc1IDEzLjI1IDIwLjc1IDEyLjE4IDIwLjc1IDExLjE1IDIwLjUgMTAuMTIgMjAuMjQgOS4yIDE5Ljc2IDguMjggMTkuMjcgNy41IDE4LjU4IDYuNjkgMTcuODggNi4wNyAxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI1IDIuNSA3IDIuODMgN0g2LjA3UTYuNjkgNi4xMiA3LjUgNS40MiA4LjI4IDQuNzIgOS4yIDQuMjQgMTAuMTMgMy43NiAxMS4xNSAzLjUgMTIuMTggMy4yNSAxMy4yNSAzLjI1TTEzLjg4IDQuNTNWMTEuMzdIMjAuNzJRMjAuNiAxMCAyMC4wMyA4LjgxIDE5LjQ2IDcuNjIgMTguNTUgNi43IDE3LjY0IDUuNzkgMTYuNDMgNS4yMiAxNS4yMyA0LjY1IDEzLjg4IDQuNTNNOS41IDEwLjg0UTkuNSAxMC4yNyA5LjMgOS44NyA5LjExIDkuNDYgOC43OCA5LjIxIDguNDUgOC45NSA4IDguODQgNy41NSA4LjcyIDcgOC43Mkg0LjM3VjE1LjI3SDUuOTFWMTNINi45NFE3LjQyIDEzIDcuODcgMTIuODQgOC4zMyAxMi43IDguNjkgMTIuNDMgOS4wNSAxMi4xNyA5LjI3IDExLjc2IDkuNSAxMS4zNiA5LjUgMTAuODRNMTMuMjUgMTkuNVExNC4yMyAxOS41IDE1LjE0IDE5LjI2IDE2LjA0IDE5IDE2Ljg1IDE4LjU4IDE3LjY2IDE4LjEzIDE4LjMzIDE3LjUgMTkgMTYuODkgMTkuNSAxNi4xMyAyMCAxNS4zNiAyMC4zMyAxNC40NyAyMC42NCAxMy41OCAyMC43MiAxMi42MkgxMi42NFY0LjUzUTExLjE5IDQuNjUgOS45MSA1LjI5IDguNjMgNS45MyA3LjY3IDdIMTEuMTdRMTEuNSA3IDExLjc2IDcuMjUgMTIgNy41IDEyIDcuODNWMTYuMTdRMTIgMTYuNSAxMS43NiAxNi43NiAxMS41IDE3IDExLjE3IDE3SDcuNjdROC4yIDE3LjYgOC44NCAxOC4wNiA5LjUgMTguNSAxMC4xOSAxOC44NCAxMC45MSAxOS4xNyAxMS42OCAxOS4zMyAxMi40NSAxOS41IDEzLjI1IDE5LjVNNi44NSAxMFE3LjMyIDEwIDcuNjEgMTAuMTkgNy44OSAxMC4zOCA3Ljg5IDEwLjg5IDcuODkgMTEuMTEgNy43OSAxMS4yNSA3LjY5IDExLjM5IDcuNTMgMTEuNSA3LjM3IDExLjU3IDcuMTggMTEuNiA3IDExLjY0IDYuOCAxMS42NEg1LjkxVjEwSDYuODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0U2hhcmVwb2ludCA9IFwiTTIyIDEzLjI1UTIyIDE0LjI5IDIxLjYgMTUuMiAyMS4yMSAxNi4xIDIwLjUzIDE2Ljc4IDE5Ljg1IDE3LjQ2IDE4Ljk0IDE3Ljg2IDE4LjAzIDE4LjI1IDE3IDE4LjI1IDE2LjM2IDE4LjI1IDE1LjczIDE4LjA5IDE1LjY0IDE4LjkyIDE1LjI3IDE5LjYzIDE0Ljg5IDIwLjM1IDE0LjMgMjAuODggMTMuNzIgMjEuNDEgMTIuOTcgMjEuNyAxMi4yMSAyMiAxMS4zOCAyMiAxMC40NyAyMiA5LjY3IDIxLjY1IDguODggMjEuMzEgOC4yOCAyMC43MiA3LjY5IDIwLjEzIDcuMzUgMTkuMzMgNyAxOC41MyA3IDE3LjYzVjE3LjMxUTcuMDMgMTcuMTYgNy4wNSAxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g1Ljc4UTUuOSA1Ljk0IDYuMzkgNSA2Ljg3IDQuMTEgNy42MyAzLjQ0IDguMzggMi43NiA5LjM0IDIuMzggMTAuMyAyIDExLjM4IDIgMTIuNTQgMiAxMy41NiAyLjQ0IDE0LjU5IDIuODkgMTUuMzUgMy42NSAxNi4xMSA0LjQxIDE2LjU2IDUuNDQgMTcgNi40NiAxNyA3LjYzVjcuOTRRMTcgOC4wOSAxNi45NiA4LjI1IDE4IDguMjUgMTguOTEgOC42NCAxOS44MyA5LjAzIDIwLjUgOS43MSAyMS4yMSAxMC4zOCAyMS42IDExLjI5IDIyIDEyLjIxIDIyIDEzLjI1TTExLjM3IDMuMjVRMTAuNTYgMy4yNSA5LjgzIDMuNTQgOS4wOSAzLjgyIDguNSA0LjMyIDcuOTQgNC44MiA3LjU1IDUuNSA3LjE3IDYuMiA3LjA1IDdIMTEuMTdRMTEuNSA3IDExLjc2IDcuMjUgMTIgNy41IDEyIDcuODNWMTEuOTVMMTIuMTggMTEuOTJRMTIuMzUgMTEuMyAxMi42OCAxMC43NCAxMyAxMC4xNyAxMy40NyA5LjcyIDEzLjkyIDkuMjcgMTQuNSA4LjkzIDE1LjA0IDguNiAxNS42NyA4LjQzIDE1Ljc1IDggMTUuNzUgNy42MyAxNS43NSA2LjcyIDE1LjQgNS45MiAxNS4wNiA1LjEzIDE0LjQ2IDQuNTQgMTMuODcgMy45NSAxMy4wOCAzLjYgMTIuMjggMy4yNSAxMS4zNyAzLjI1TTcuMSAxNS4yNVE3LjU1IDE1LjI1IDggMTUuMTYgOC40MiAxNS4wNyA4Ljc2IDE0Ljg1IDkuMSAxNC42NCA5LjMxIDE0LjI5IDkuNSAxMy45MyA5LjUgMTMuNDEgOS41IDEyLjg4IDkuMyAxMi41MyA5LjA4IDEyLjE4IDguNzUgMTEuOTQgOC40MiAxMS43MSA4LjA0IDExLjU2TDcuMzIgMTEuMjdRNyAxMS4xNCA2Ljc3IDExIDYuNTUgMTAuODUgNi41NSAxMC42MiA2LjU1IDEwLjQ2IDYuNjcgMTAuMzUgNi43OSAxMC4yNSA2Ljk1IDEwLjIgNy4xMSAxMC4xMyA3LjI4IDEwLjExIDcuNDYgMTAuMSA3LjU4IDEwLjEgOC4wNyAxMC4xIDguNDYgMTAuMjIgOC44NCAxMC4zNSA5LjI1IDEwLjZWOS4xMlE5IDkuMDUgOC44MSA5IDguNjEgOC45NSA4LjQyIDguOTIgOC4yMiA4Ljg5IDggOC44NyA3LjggOC44NiA3LjU1IDguODYgNy4xMiA4Ljg2IDYuNjcgOC45NSA2LjIyIDkuMDUgNS44NSA5LjI3IDUuNSA5LjUgNS4yNiA5LjgzIDUuMDMgMTAuMTggNS4wMyAxMC42OSA1LjAzIDExLjE5IDUuMjUgMTEuNSA1LjQ3IDExLjg1IDUuOCAxMi4wOSA2LjEzIDEyLjMyIDYuNSAxMi41TDcuMjIgMTIuNzlRNy41NiAxMi45MyA3Ljc4IDEzLjA4IDggMTMuMjQgOCAxMy40NiA4IDEzLjY1IDcuODkgMTMuNzYgNy43OSAxMy44NyA3LjYzIDEzLjkyIDcuNSAxNCA3LjMxIDE0SDdRNi40MSAxNCA1Ljk2IDEzLjgyIDUuNSAxMy42MiA1LjA0IDEzLjNWMTQuODZRNi4wMyAxNS4yNSA3LjEgMTUuMjVNMTEuMzcgMjAuNzVRMTIgMjAuNzUgMTIuNTggMjAuNSAxMy4xNSAyMC4yNiAxMy41OCAxOS44NCAxNCAxOS40MSAxNC4yNSAxOC44NCAxNC41IDE4LjI3IDE0LjUgMTcuNjMgMTQuNSAxNy4wNyAxNC4zMSAxNi41NiAxNC4xMyAxNi4wNSAxMy44IDE1LjY1IDEzLjQ2IDE1LjI0IDEzIDE0Ljk2IDEyLjU1IDE0LjY4IDEyIDE0LjU2VjE2LjE3UTEyIDE2LjUgMTEuNzYgMTYuNzYgMTEuNSAxNyAxMS4xNyAxN0g4LjMxUTguMjUgMTcuMzEgOC4yNSAxNy42MyA4LjI1IDE4LjI3IDguNSAxOC44NCA4Ljc0IDE5LjQxIDkuMTYgMTkuODQgOS41OSAyMC4yNiAxMC4xNiAyMC41IDEwLjczIDIwLjc1IDExLjM3IDIwLjc1TTE3IDE3UTE3Ljc3IDE3IDE4LjQ1IDE2LjcxIDE5LjE0IDE2LjQyIDE5LjY1IDE1LjkgMjAuMTYgMTUuMzkgMjAuNDYgMTQuNzEgMjAuNzUgMTQuMDMgMjAuNzUgMTMuMjUgMjAuNzUgMTIuNSAyMC40NiAxMS44IDIwLjE2IDExLjExIDE5LjY1IDEwLjYgMTkuMTQgMTAuMDkgMTguNDUgOS43OSAxNy43NyA5LjUgMTcgOS41IDE2LjIzIDkuNSAxNS41NSA5LjggMTQuODcgMTAuMSAxNC4zNiAxMC42MSAxMy44NSAxMS4xMiAxMy41NSAxMS44IDEzLjI1IDEyLjUgMTMuMjUgMTMuMjVWMTMuNDZMMTMuMjcgMTMuNjhRMTMuNzMgMTMuOSAxNC4xMiAxNC4yMiAxNC41IDE0LjU0IDE0LjgyIDE0LjkzIDE1LjEyIDE1LjMzIDE1LjM0IDE1Ljc5IDE1LjU1IDE2LjI1IDE1LjY2IDE2Ljc0IDE2LjMyIDE3IDE3IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFRlYW1zID0gXCJNMTkuMTkgOC43N1ExOC43MyA4Ljc3IDE4LjMzIDguNiAxNy45NCA4LjQzIDE3LjY0IDguMTMgMTcuMzQgNy44MyAxNy4xNyA3LjQ0IDE3IDcuMDQgMTcgNi41OCAxNyA2LjEzIDE3LjE3IDUuNzMgMTcuMzQgNS4zMyAxNy42NCA1LjA0IDE3Ljk0IDQuNzQgMTguMzMgNC41NyAxOC43MyA0LjM5IDE5LjE5IDQuNCAxOS42NCA0LjM5IDIwLjA0IDQuNTcgMjAuNDQgNC43NCAyMC43NCA1LjA0IDIxLjAzIDUuMzMgMjEuMjEgNS43MyAyMS4zOCA2LjEzIDIxLjM4IDYuNTggMjEuMzggNy4wNCAyMS4yMSA3LjQ0IDIxLjA0IDcuODMgMjAuNzQgOC4xMyAyMC40NCA4LjQzIDIwLjA0IDguNiAxOS42NCA4Ljc3IDE5LjE5IDguNzdNMTkuMTkgNS42NVExOC44IDUuNjUgMTguNSA1LjkyIDE4LjI1IDYuMTkgMTguMjUgNi41OCAxOC4yNSA2Ljk3IDE4LjUgNy4yNSAxOC44IDcuNSAxOS4xOSA3LjUgMTkuNTggNy41IDE5Ljg1IDcuMjUgMjAuMTMgNyAyMC4xMyA2LjU4IDIwLjEzIDYuMTkgMTkuODUgNS45MiAxOS41OCA1LjY1IDE5LjE5IDUuNjVNMjIgMTAuMzNWMTVRMjIgMTUuNjMgMjEuNzYgMTYuMiAyMS41IDE2Ljc3IDIxLjA5IDE3LjE5IDIwLjY2IDE3LjYyIDIwLjA5IDE3Ljg2IDE5LjUgMTguMTEgMTguODggMTguMTEgMTguNSAxOC4xMSAxOC4xMiAxOCAxNy43MyAxNy45MyAxNy40MSAxNy43NSAxNy4xNyAxOC41NCAxNi43IDE5LjE5IDE2LjIzIDE5Ljg0IDE1LjYgMjAuMyAxNC45NyAyMC43NiAxNC4yMSAyMSAxMy40NSAyMS4yNyAxMi42MyAyMS4yNyAxMS42NyAyMS4yNyAxMC44MiAyMC45NCAxMCAyMC42MSA5LjMyIDIwIDguNjYgMTkuNDMgOC4yMyAxOC42NCA3Ljc5IDE3Ljg0IDcuNjYgMTYuOUgyLjgzUTIuNSAxNi45IDIuMjQgMTYuNjUgMiAxNi40MSAyIDE2LjA3VjcuNzNRMiA3LjM5IDIuMjQgNy4xNCAyLjUgNi45IDIuODMgNi45SDEwUTkuNzEgNi4zIDkuNzEgNS42NSA5LjcxIDUuMDQgOS45NCA0LjUgMTAuMTYgNCAxMC41NiAzLjU4IDEwLjk2IDMuMTkgMTEuNSAyLjk2IDEyIDIuNzMgMTIuNjIgMi43MyAxMy4yMyAyLjczIDEzLjc2IDIuOTYgMTQuMjkgMy4xOSAxNC42OSAzLjU4IDE1LjA5IDQgMTUuMzEgNC41IDE1LjU0IDUuMDQgMTUuNTQgNS42NSAxNS41NCA2LjI1IDE1LjMxIDYuNzkgMTUuMDkgNy4zMiAxNC42OSA3LjcxIDE0LjI5IDguMTEgMTMuNzYgOC4zNCAxMy4yMyA4LjU3IDEyLjYyIDguNTcgMTIuNDcgOC41NyAxMi4zMSA4LjU1IDEyLjE2IDguNTMgMTIgOC41VjkuNEgyMS4wNlEyMS40NSA5LjQgMjEuNzMgOS42NyAyMiA5Ljk0IDIyIDEwLjMzTTEyLjYzIDRRMTIuMjggNCAxMiA0LjExIDExLjY3IDQuMjQgMTEuNDQgNC40NyAxMS4yMiA0LjcgMTEuMDkgNSAxMC45NiA1LjMxIDEwLjk2IDUuNjUgMTAuOTYgNiAxMS4wOSA2LjMgMTEuMjIgNi42IDExLjQ0IDYuODMgMTEuNjcgNy4wNSAxMiA3LjE5IDEyLjI4IDcuMzIgMTIuNjMgNy4zMiAxMi45NyA3LjMyIDEzLjI3IDcuMTkgMTMuNTcgNy4wNSAxMy44IDYuODMgMTQuMDMgNi42IDE0LjE2IDYuMyAxNC4zIDYgMTQuMyA1LjY1IDE0LjMgNS4zMSAxNC4xNiA1IDE0LjAzIDQuNyAxMy44IDQuNDcgMTMuNTcgNC4yNCAxMy4yNyA0LjExIDEyLjk3IDQgMTIuNjMgNE03Ljc4IDEwLjE4SDkuNjZWOC42Mkg0LjM0VjEwLjE4SDYuMjJWMTUuMThINy43OE0xNi4zOCAxNi4yN1YxMC42NUgxMlYxNi4wN1ExMiAxNi40MSAxMS43NiAxNi42NSAxMS41IDE2LjkgMTEuMTcgMTYuOUg4LjkyUTkuMDUgMTcuNTcgOS4zOSAxOC4xNSA5LjczIDE4LjcyIDEwLjIxIDE5LjE0IDEwLjY5IDE5LjU1IDExLjMxIDE5Ljc5IDExLjkyIDIwIDEyLjYzIDIwIDEzLjQgMjAgMTQuMDggMTkuNzMgMTQuNzYgMTkuNDMgMTUuMjggMTguOTIgMTUuNzkgMTguNDEgMTYuMDggMTcuNzMgMTYuMzggMTcuMDUgMTYuMzggMTYuMjdNMjAuNzUgMTVWMTAuNjVIMTcuNjNWMTYuMzZRMTcuODggMTYuNjEgMTguMiAxNi43NCAxOC41IDE2Ljg2IDE4Ljg4IDE2Ljg2IDE5LjI3IDE2Ljg2IDE5LjYxIDE2LjcxIDE5Ljk1IDE2LjU2IDIwLjIgMTYuMzEgMjAuNDYgMTYuMDYgMjAuNiAxNS43MSAyMC43NSAxNS4zNyAyMC43NSAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRWaXN1YWxTdHVkaW8gPSBcIk0xNyw4LjVMMTIuMjUsMTIuMzJMMTcsMTZWOC41TTQuNywxOC40TDIsMTYuN1Y3LjdMNSw2LjdMOS4zLDEwLjAzTDE4LDJMMjIsNC41VjIwTDE3LDIyTDkuMzQsMTQuNjZMNC43LDE4LjRNNSwxNEw2Ljg2LDEyLjI4TDUsMTAuNVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRWaXN1YWxTdHVkaW9Db2RlID0gXCJNMTcsMTYuNDdWNy4zOUwxMSwxMS45M00yLjIyLDkuMTlDMS45Miw4Ljg3IDEuOTEsOC4zNyAyLjIsOC4wNEwzLjQsNi45M0MzLjYsNi43NSA0LjA5LDYuNjcgNC40NSw2LjkzTDcuODcsOS41NEwxNS44LDIuMjlDMTYuMTIsMS45NyAxNi42NywxLjg0IDE3LjMsMi4xN0wyMS4zLDQuMDhDMjEuNjYsNC4yOSAyMiw0LjYyIDIyLDUuMjNWMTguNzNDMjIsMTkuMTMgMjEuNzEsMTkuNTYgMjEuNCwxOS43M0wxNywyMS44M0MxNi42OCwyMS45NiAxNi4wOCwyMS44NCAxNS44NywyMS42M0w3Ljg1LDE0LjMzTDQuNDUsMTYuOTNDNC4wNywxNy4xOSAzLjYsMTcuMTIgMy40LDE2LjkzTDIuMiwxNS44M0MxLjg4LDE1LjUgMS45MiwxNC45NiAyLjI1LDE0LjYzTDUuMjUsMTEuOTNcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRXaW5kb3dzID0gXCJNMywxMlY2Ljc1TDksNS40M1YxMS45MUwzLDEyTTIwLDNWMTEuNzVMMTAsMTEuOVY1LjIxTDIwLDNNMywxM0w5LDEzLjA5VjE5LjlMMywxOC43NVYxM00yMCwxMy4yNVYyMkwxMCwyMC4wOVYxMy4xTDIwLDEzLjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFdpbmRvd3NDbGFzc2ljID0gXCJNMi42Nyw1LjNWNS45MUwxLjk2LDYuMjFWNS42TDIuNjcsNS4zTTIuNjcsMTEuMjRWMTEuODZMMS45NiwxMi4xNVYxMS41NkwyLjY3LDExLjI0TTIuNjcsMTcuMjdWMTcuODlMMS45NiwxOC4xOFYxNy41OUwyLjY3LDE3LjI3TTIuNiw3LjI5VjcuODRMMi4wMyw4LjFWNy41NkwyLjYsNy4yOU0yLjYsOS4yOFY5LjgyTDIuMDMsMTAuMDhWOS41NEwyLjYsOS4yOE0yLjYsMTMuMzFWMTMuODRMMi4wMywxNC4xVjEzLjU2TDIuNiwxMy4zMU0yLjYsMTUuMzNWMTUuODdMMi4wMywxNi4xM1YxNS42TDIuNiwxNS4zM000LjUsNS42NFY2LjM2TDMuNSw2LjczVjZMNC41LDUuNjRNNC41LDExLjY2VjEyLjM3TDMuNSwxMi43NFYxMi4wM0w0LjUsMTEuNjZNNC41LDE3LjdWMTguNDFMMy41LDE4LjgxVjE4LjFMNC41LDE3LjdNNC40Myw3LjcyVjguMzhMMy42NCw4LjY4VjhMNC40Myw3LjcyTTQuNDMsOS43M1YxMC4zN0wzLjY1LDEwLjY3VjEwTDQuNDMsOS43M000LjQzLDEzLjc0VjE0LjM4TDMuNjUsMTQuNjlWMTQuMDNMNC40MywxMy43NE00LjQzLDE1Ljc2VjE2LjQxTDMuNjUsMTYuNzJWMTYuMDZMNC40MywxNS43Nk02LjMxLDYuMDlWNi45NEw1LjA1LDcuNDNWNi41OUw2LjMxLDYuMDlNNi4zMSwxMi4xMVYxMi45Nkw1LjA1LDEzLjQ1VjEyLjYxTDYuMzEsMTIuMTFNNi4zMSwxOC4wOFYxOC45M0w1LjA1LDE5LjQzVjE4LjU4TDYuMzEsMTguMDhNNi4yNSw4LjE4VjguOTRMNS4xOSw5LjM0VjguNjFMNi4yNSw4LjE4TTYuMjUsMTAuMThWMTAuOTNMNS4xOSwxMS4zNVYxMC42TDYuMjUsMTAuMThNNi4yNSwxNC4xOVYxNC45NEw1LjE5LDE1LjM3VjE0LjYyTDYuMjUsMTQuMTlNNi4yNSwxNi4xNFYxNi45TDUuMTksMTcuMzJWMTYuNTdMNi4yNSwxNi4xNE04LjI5LDYuMDRWNy4xNkw2LjcyLDcuNzhWNi42N0w4LjI5LDYuMDRNOC4yOSwxMi4wNlYxMy4xOUw2LjcyLDEzLjhWMTIuNjhMOC4yOSwxMi4wNk04LjI5LDE4LjAzVjE5LjE1TDYuNzIsMTkuNzdWMTguNjZMOC4yOSwxOC4wM004LjIsOC4xM1Y5LjE2TDYuODksOS42OVY4LjY2TDguMiw4LjEzTTguMiwxMC4xM1YxMS4xNUw2Ljg5LDExLjY4VjEwLjY1TDguMiwxMC4xM004LjIsMTQuMTVWMTUuMThMNi44OSwxNS43VjE0LjY3TDguMiwxNC4xNU04LjIsMTYuMVYxNy4xMkw2Ljg5LDE3LjY0VjE2LjYzTDguMiwxNi4xTTEwLjM0LDUuODVWNy4zMkw4LjYxLDhWNi41NkwxMC4zNCw1Ljg1TTEwLjM0LDExLjg3VjEzLjMzTDguNjEsMTQuMDNWMTIuNTZMMTAuMzQsMTEuODdNMTAuMzQsMTcuODRWMTkuM0w4LjYxLDIwVjE4LjU0TDEwLjM0LDE3Ljg0TTEwLjI2LDguMDVWOS4yOEw4Ljc4LDkuODdWOC42NEwxMC4yNiw4LjA1TTEwLjI2LDkuOTdWMTEuMkw4Ljc4LDExLjc4VjEwLjU2TDEwLjI2LDkuOTdNMTAuMjYsMTQuMDZWMTUuMzFMOC43OCwxNS44OFYxNC42NUwxMC4yNiwxNC4wNk0xMC4yNiwxNlYxNy4yNUw4Ljc4LDE3Ljg0VjE2LjZMMTAuMjYsMTZNMTIuNDUsNS4xMlY3LjEyTDEwLjU5LDcuODlWNkMxMS4yMyw1LjY1IDExLjg1LDUuMzUgMTIuNDUsNS4xMk0xMi40NSw3LjMzVjkuMDZMMTAuNTksOS44NFY4LjFMMTIuNDUsNy4zM00xMi40NSw5LjI4VjExLjA0TDEwLjU5LDExLjgyVjEwLjA2TDEyLjQ1LDkuMjhNMTIuNDUsMTEuMjVWMTNMMTAuNTksMTMuNzdWMTJMMTIuNDUsMTEuMjVNMTIuNDUsMTMuMjFWMTVMMTAuNTksMTUuNzhWMTRMMTIuNDUsMTMuMjFNMTIuNDUsMTUuMjFWMTYuOTZMMTAuNTksMTcuNzZWMTZMMTIuNDUsMTUuMjFNMTIuNDUsMTcuMTdWMTkuMDRDMTEuNzIsMTkuMzIgMTEuMSwxOS41OSAxMC41OSwxOS44NFYxNy45NkwxMi40NSwxNy4xN00yMi4wNCw1LjE4VjE5LjIzQzIwLjg1LDE4LjQ0IDE5LjM3LDE4LjA1IDE3LjU5LDE4LjA1QzE2LjEyLDE4LjA1IDE0LjQ3LDE4LjM1IDEyLjY1LDE4Ljk2VjE3LjA2QzEzLjYyLDE2LjY5IDE0LjY4LDE2LjQyIDE1Ljg0LDE2LjI2VjExLjY5QzE0Ljg2LDExLjgxIDEzLjgsMTIuMTUgMTIuNjUsMTIuNzFWMTEuNEMxMy42NCwxMC45NCAxNC43MSwxMC42MyAxNS44NCwxMC40NlY2QzE0LjgyLDYuMTggMTMuNzYsNi41MyAxMi42NSw3VjUuMDNDMTQuMjcsNC4zNCAxNS44Niw0IDE3LjQxLDRDMTkuMDksNCAyMC42Myw0LjM5IDIyLjA0LDUuMThNMjAuMTUsNi40MUMxOS4zOSw2IDE4LjUsNS44MiAxNy40Miw1LjgyQzE3LjI5LDUuODIgMTcuMTcsNS44MyAxNy4wNSw1Ljg0VjEwLjM4TDE3LjQ2LDEwLjM3QzE4LjM3LDEwLjM3IDE5LjI3LDEwLjUgMjAuMTUsMTAuOFY2LjQxTTIwLjE1LDEyLjFDMTkuMzQsMTEuNzQgMTguNDMsMTEuNTYgMTcuNDQsMTEuNTZDMTcuMzEsMTEuNTYgMTcuMTgsMTEuNTcgMTcuMDUsMTEuNThWMTYuMTZIMTcuNDZDMTguNDUsMTYuMTYgMTkuMzUsMTYuMjggMjAuMTUsMTYuNTNWMTIuMUgyMC4xNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRXb3JkID0gXCJNMjEuMTcgMy4yNVEyMS41IDMuMjUgMjEuNzYgMy41IDIyIDMuNzQgMjIgNC4wOFYxOS45MlEyMiAyMC4yNiAyMS43NiAyMC41IDIxLjUgMjAuNzUgMjEuMTcgMjAuNzVINy44M1E3LjUgMjAuNzUgNy4yNCAyMC41IDcgMjAuMjYgNyAxOS45MlYxN0gyLjgzUTIuNSAxNyAyLjI0IDE2Ljc2IDIgMTYuNSAyIDE2LjE3VjcuODNRMiA3LjUgMi4yNCA3LjI0IDIuNSA3IDIuODMgN0g3VjQuMDhRNyAzLjc0IDcuMjQgMy41IDcuNSAzLjI1IDcuODMgMy4yNU03LjAzIDExLjM0TDguMjMgMTUuMjhIOS42TDEwLjkxIDguNzJIOS41M0w4Ljc1IDEyLjZMNy42NCA4Ljg1SDYuNUw1LjMxIDEyLjYyTDQuNTMgOC43MkgzLjA5TDQuNCAxNS4yOEg1Ljc3TTIwLjc1IDE5LjVWMTdIOC4yNVYxOS41TTIwLjc1IDE1Ljc1VjEyLjYzSDEyVjE1Ljc1TTIwLjc1IDExLjM4VjguMjVIMTJWMTEuMzhNMjAuNzUgN1Y0LjVIOC4yNVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFhib3ggPSBcIk02LjQzLDMuNzJDNi41LDMuNjYgNi41NywzLjYgNi42MiwzLjU2QzguMTgsMi41NSAxMCwyIDEyLDJDMTMuODgsMiAxNS42NCwyLjUgMTcuMTQsMy40MkMxNy4yNSwzLjUgMTcuNTQsMy42OSAxNy43LDMuODhDMTYuMjUsMi4yOCAxMiw1LjcgMTIsNS43QzEwLjUsNC41NyA5LjE3LDMuOCA4LjE2LDMuNUM3LjMxLDMuMjkgNi43MywzLjUgNi40NiwzLjdNMTkuMzQsNS4yMUMxOS4yOSw1LjE2IDE5LjI0LDUuMTEgMTkuMiw1LjA2QzE4Ljg0LDQuNjYgMTguMzgsNC41NiAxOCw0LjU5QzE3LjYxLDQuNzEgMTUuOSw1LjMyIDEzLjgsNy4zMUMxMy44LDcuMzEgMTYuMTcsOS42MSAxNy42MiwxMS45NkMxOS4wNywxNC4zMSAxOS45MywxNi4xNiAxOS40LDE4LjczQzIxLDE2Ljk1IDIyLDE0LjU5IDIyLDEyQzIyLDkuMzggMjEsNyAxOS4zNCw1LjIxTTE1LjczLDEyLjk2QzE1LjA4LDEyLjI0IDE0LjEzLDExLjIxIDEyLjg2LDkuOTVDMTIuNTksOS42OCAxMi4zLDkuNCAxMiw5LjFDMTIsOS4xIDExLjUzLDkuNTYgMTAuOTMsMTAuMTdDMTAuMTYsMTAuOTQgOS4xNywxMS45NSA4LjYxLDEyLjU0QzcuNjMsMTMuNTkgNC44MSwxNi44OSA0LjY1LDE4Ljc0QzQuNjUsMTguNzQgNCwxNy4yOCA1LjQsMTMuODlDNi4zLDExLjY4IDksOC4zNiAxMC4xNSw3LjI4QzEwLjE1LDcuMjggOS4xMiw2LjE0IDcuODIsNS4zNUw3Ljc3LDUuMzJDNy4xNCw0Ljk1IDYuNDYsNC42NiA1LjgsNC42MkM1LjEzLDQuNjcgNC43MSw1LjE2IDQuNzEsNS4xNkMzLjAzLDYuOTUgMiw5LjM1IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJDMTQuOTMsMjIgMTcuNTcsMjAuNzQgMTkuNCwxOC43M0MxOS40LDE4LjczIDE5LjE5LDE3LjQgMTcuODQsMTUuNUMxNy41MywxNS4wNyAxNi4zNywxMy42OSAxNS43MywxMi45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlciA9IFwiTTguNzUsMTUuNzVDNi43NSwxNS43NSA2LDE4IDQsMTlDMiwxOSAwLjUsMTYgNC41LDcuNUg0Ljc1TDUuMTksNi42N0M1LjE5LDYuNjcgOCw1IDkuMzMsNi4yM0gxNC42N0MxNiw1IDE4LjgxLDYuNjcgMTguODEsNi42N0wxOS4yNSw3LjVIMTkuNUMyMy41LDE2IDIyLDE5IDIwLDE5QzE4LDE4IDE3LjI1LDE1Ljc1IDE1LjI1LDE1Ljc1SDguNzVNMTIsN0ExLDEgMCAwLDAgMTEsOEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTMsOEExLDEgMCAwLDAgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlBbGVydCA9IFwiTTIxLDE5VjdIMTVWMTlIMjFNMjEuNjcsNUMyMi40LDUgMjMsNS42IDIzLDYuMzNWMTkuNjdBMS4zMywxLjMzIDAgMCwxIDIxLjY3LDIxSDE0LjMzQzEzLjYsMjEgMTMsMjAuNCAxMywxOS42N1YxNi43NUg3Ljc1QzUuNzUsMTYuNzUgNSwxOSAzLDIwQzEsMjAgLTAuNSwxNyAzLjUsOC41SDMuNzVMNC4xOSw3LjY3QzQuMTksNy42NyA3LDYgOC4zMyw3LjIzSDEzVjYuMzNBMS4zMywxLjMzIDAgMCwxIDE0LjMzLDVIMTZWM0gyMFY1SDIxLjY3TTExLDhBMSwxIDAgMCwwIDEwLDlBMSwxIDAgMCwwIDExLDEwQTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMSw4TTE3LDlIMTlWMTRIMTdWOU0xNywxNUgxOVYxN0gxN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlDaGFyZ2luZyA9IFwiTTIwLDVIMjEuNjdDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNU0yMSw3SDE1VjE5SDIxVjdNMTUuNSwxNEwxOC41LDcuNVYxMkgyMC41TDE3LjUsMTguNVYxNEgxNS41TTExLDhBMSwxIDAgMCwwIDEwLDlBMSwxIDAgMCwwIDExLDEwQTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFhib3hDb250cm9sbGVyQmF0dGVyeUVtcHR5ID0gXCJNMjEsMTlWN0gxNVYxOUgyMU0yMS42Nyw1QzIyLjQsNSAyMyw1LjYgMjMsNi4zM1YxOS42N0ExLjMzLDEuMzMgMCAwLDEgMjEuNjcsMjFIMTQuMzNDMTMuNiwyMSAxMywyMC40IDEzLDE5LjY3VjE2Ljc1SDcuNzVDNS43NSwxNi43NSA1LDE5IDMsMjBDMSwyMCAtMC41LDE3IDMuNSw4LjVIMy43NUw0LjE5LDcuNjdDNC4xOSw3LjY3IDcsNiA4LjMzLDcuMjNIMTNWNi4zM0ExLjMzLDEuMzMgMCAwLDEgMTQuMzMsNUgxNlYzSDIwVjVIMjEuNjdNMTEsOEExLDEgMCAwLDAgMTAsOUExLDEgMCAwLDAgMTEsMTBBMSwxIDAgMCwwIDEyLDlBMSwxIDAgMCwwIDExLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm9zb2Z0WGJveENvbnRyb2xsZXJCYXR0ZXJ5RnVsbCA9IFwiTTIxLjY3LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNUgyMS42N00xMSw4QTEsMSAwIDAsMCAxMCw5QTEsMSAwIDAsMCAxMSwxMEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlMb3cgPSBcIk0yMSwxNlY3SDE1VjE2SDIxTTIxLjY3LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNUgyMS42N00xMSw4QTEsMSAwIDAsMCAxMCw5QTEsMSAwIDAsMCAxMSwxMEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlNZWRpdW0gPSBcIk0yMSwxMlY3SDE1VjEySDIxTTIxLjY3LDVDMjIuNCw1IDIzLDUuNiAyMyw2LjMzVjE5LjY3QTEuMzMsMS4zMyAwIDAsMSAyMS42NywyMUgxNC4zM0MxMy42LDIxIDEzLDIwLjQgMTMsMTkuNjdWMTYuNzVINy43NUM1Ljc1LDE2Ljc1IDUsMTkgMywyMEMxLDIwIC0wLjUsMTcgMy41LDguNUgzLjc1TDQuMTksNy42N0M0LjE5LDcuNjcgNyw2IDguMzMsNy4yM0gxM1Y2LjMzQTEuMzMsMS4zMyAwIDAsMSAxNC4zMyw1SDE2VjNIMjBWNUgyMS42N00xMSw4QTEsMSAwIDAsMCAxMCw5QTEsMSAwIDAsMCAxMSwxMEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTEsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlckJhdHRlcnlVbmtub3duID0gXCJNMjEuNjcsNUMyMi40LDUgMjMsNS42IDIzLDYuMzNWMTkuNjdBMS4zMywxLjMzIDAgMCwxIDIxLjY3LDIxSDE0LjMzQzEzLjYsMjEgMTMsMjAuNCAxMywxOS42N1YxNi43NUg3Ljc1QzUuNzUsMTYuNzUgNSwxOSAzLDIwQzEsMjAgLTAuNSwxNyAzLjUsOC41SDMuNzVMNC4xOSw3LjY3QzQuMTksNy42NyA3LDYgOC4zMyw3LjIzSDEzVjYuMzNBMS4zMywxLjMzIDAgMCwxIDE0LjMzLDVIMTZWM0gyMFY1SDIxLjY3TTExLDhBMSwxIDAgMCwwIDEwLDlBMSwxIDAgMCwwIDExLDEwQTEsMSAwIDAsMCAxMiw5QTEsMSAwIDAsMCAxMSw4TTE4LjE5LDhDMTcuMzIsOCAxNi42Miw4LjIgMTYuMDgsOC41OUMxNS41Niw5IDE1LjMsOS41NyAxNS4zMSwxMC4zNkwxNS4zMiwxMC4zOUgxNy4yNUMxNy4yNiwxMC4wOSAxNy4zNSw5Ljg2IDE3LjUzLDkuN0MxNy43MSw5LjU1IDE3LjkzLDkuNDcgMTguMTksOS40N0MxOC41LDkuNDcgMTguNzYsOS41NyAxOC45NCw5Ljc1QzE5LjEyLDkuOTQgMTkuMiwxMC4yIDE5LjIsMTAuNUMxOS4yLDEwLjgyIDE5LjEzLDExLjA5IDE4Ljk3LDExLjMyQzE4LjgzLDExLjU1IDE4LjYyLDExLjc1IDE4LjM2LDExLjkxQzE3Ljg1LDEyLjI1IDE3LjUsMTIuNTUgMTcuMzEsMTIuODJDMTcuMTEsMTMuMDggMTcsMTMuNSAxNywxNEgxOUMxOSwxMy42OSAxOS4wNCwxMy40NCAxOS4xMywxMy4yNkMxOS4yMiwxMy4wOCAxOS4zOSwxMi45IDE5LjY0LDEyLjc0QzIwLjA5LDEyLjUgMjAuNDYsMTIuMjEgMjAuNzUsMTEuODFDMjEuMDQsMTEuNDEgMjEuMTksMTEgMjEuMTksMTAuNUMyMS4xOSw5Ljc0IDIwLjkyLDkuMTMgMjAuMzgsOC42OEMxOS44NSw4LjIzIDE5LjEyLDggMTguMTksOE0xNywxNVYxN0gxOVYxNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlck1lbnUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk02LDdIMThWOUg2VjdNNiwxMUgxOFYxM0g2VjExTTYsMTVIMThWMTdINlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuNSwxNS43NUg4Ljc1QzYuNzUsMTUuNzUgNiwxOCA0LDE5QzIsMTkgMC41LDE2LjA0IDQuNDIsNy42OUwyLDUuMjdNOS4zMyw2LjIzSDE0LjY3QzE2LDUgMTguODEsNi42NyAxOC44MSw2LjY3TDE5LjI1LDcuNUgxOS41QzIzLDE1IDIyLjI4LDE4LjIgMjAuNjksMTguODdMNy42Miw1LjhDOC4yNSw1LjczIDguODcsNS44MSA5LjMzLDYuMjNNMTIsN0ExLDEgMCAwLDAgMTEsOEExLDEgMCAwLDAgMTIsOUExLDEgMCAwLDAgMTMsOEExLDEgMCAwLDAgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3NvZnRYYm94Q29udHJvbGxlclZpZXcgPSBcIk0xMiwyQzYuNDcsMiAyLDYuNSAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNNiw3SDE1VjlIOFYxNEg2VjdNOSwxMEgxOFYxN0g5VjEwTTExLDEyVjE1SDE2VjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pY3Jvc29mdFlhbW1lciA9IFwiTTIyIDEyUTIyIDEyLjQzIDIxLjk3IDEyLjk0IDIxLjk1IDEzLjQ1IDIxLjg5IDEzLjk3IDIxLjg0IDE0LjUgMjEuNzYgMTUgMjEuNjggMTUuNSAyMS41NiAxNS44OSAyMS41IDE2LjA3IDIxLjM4IDE2LjE5IDIxLjI0IDE2LjMgMjEuMDQgMTYuMyAyMC45NSAxNi4zIDIwLjY2IDE2LjIzIDIwLjM3IDE2LjE2IDIwLjAzIDE2LjA3TDE5LjM5IDE1Ljg4UTE5LjA5IDE1Ljc5IDE4Ljk2IDE1Ljc2IDE4Ljc1IDE2LjU0IDE4LjQxIDE3LjM4IDE4LjA4IDE4LjIxIDE3LjY1IDE5IDE3LjIyIDE5LjggMTYuNyAyMC41IDE2LjE4IDIxLjI1IDE1LjYxIDIxLjgyTDE1LjQzIDIxLjk1UTE1LjMzIDIyIDE1LjIxIDIyIDE1IDIyIDE0Ljg0IDIxLjg0TDEwLjEgMTcuMTFIMi44NVEyLjUgMTcuMTEgMi4yNSAxNi44NiAyIDE2LjYxIDIgMTYuMjZWNy43NFEyIDcuMzkgMi4yNSA3LjE0IDIuNSA2Ljg5IDIuODUgNi44OUgxMC4xTDE0LjgzIDIuMTZRMTUgMiAxNS4yMSAyIDE1LjMzIDIgMTUuNDIgMi4wNSAxNS41IDIuMDkgMTUuNTkgMi4xOCAxNS44NSAyLjQ0IDE2LjA4IDIuNzEgMTYuMyAzIDE2LjUgMy4yOCAxOC4yMyA1LjU1IDE4Ljk2IDguMjggMTkuMTQgOC4yMyAxOS40NCA4LjE0IDE5Ljc0IDguMDUgMjAuMDYgNy45NiAyMC4zNyA3Ljg3IDIwLjY1IDcuOCAyMC45MiA3Ljc0IDIxLjA0IDcuNzQgMjEuMjQgNy43NCAyMS4zOCA3Ljg1IDIxLjUgNy45NyAyMS41NiA4LjE1IDIxLjY4IDguNTYgMjEuNzcgOS4wNSAyMS44NSA5LjU1IDIxLjkxIDEwLjA2IDIxLjk2IDEwLjU3IDIyIDExLjA4VjEyTTkuODIgOS4zN1E5LjgyIDkuMDYgOS42MiA4Ljg1IDkuNCA4LjY0IDkuMSA4LjY0IDguOSA4LjY0IDguNzIgOC43NCA4LjU1IDguODUgOC40NSA5LjAzTDcuMTUgMTEuNDdMNS44OSA5LjAzUTUuNzcgOC44IDUuNTcgOC43MiA1LjM3IDguNjQgNS4xMyA4LjY0IDQuODIgOC42NCA0LjYxIDguODUgNC40IDkuMDYgNC40IDkuMzYgNC40IDkuNTcgNC41IDkuNzNMNi4yNSAxMi44N1E2LjI3IDEyLjkxIDYuMjkgMTIuOTcgNi4zIDEzLjAzIDYuMyAxMy4wOFYxNC42M1E2LjMgMTUgNi41NiAxNS4xOSA2LjgxIDE1LjM2IDcuMTUgMTUuMzYgNy4zOSAxNS4zNiA3LjU0IDE1LjI3IDcuNjggMTUuMTggNy43NiAxNS4wMyA3Ljg0IDE0Ljg4IDcuODcgMTQuNjkgNy45IDE0LjUgNy45IDE0LjI4IDcuOSAxNCA3Ljg4IDEzLjc2IDcuODYgMTMuNSA3Ljg2IDEzLjI4IDcuODYgMTMuMTQgNy44NyAxMy4wMyA3Ljg4IDEyLjkzIDcuOTMgMTIuODVMOS43MyA5LjczUTkuODMgOS41NSA5LjgzIDkuMzdNMTUuMTcgMy42M0wxMS44IDdRMTIgNy4xMiAxMi4xIDcuMzEgMTIuMjIgNy41IDEyLjIyIDcuNzRWMTAuMDdMMTcuNzIgOC42MVExNy4zNCA3LjE5IDE2LjcxIDYgMTYuMDggNC43NyAxNS4xNyAzLjYzTTE3LjczIDE1LjQyTDEyLjIyIDEzLjk1VjE2LjI2UTEyLjIyIDE2LjUgMTIuMSAxNi42OSAxMiAxNi44OCAxMS44IDE3TDE1LjE4IDIwLjM3UTE2LjA3IDE5LjI5IDE2LjcyIDE4LjA0IDE3LjM3IDE2Ljc5IDE3LjczIDE1LjQzVjE1LjQyTTIwLjQ3IDE0Ljg0UTIwLjYgMTQuMTQgMjAuNjYgMTMuNDMgMjAuNzIgMTIuNzMgMjAuNzIgMTIgMjAuNzIgMTEuMjkgMjAuNjYgMTAuNTkgMjAuNiA5Ljg5IDIwLjQ3IDkuMTkgMTguNCA5Ljc0IDE2LjM1IDEwLjI5IDE0LjMgMTAuODMgMTIuMjIgMTEuMzkgMTIuMjEgMTEuNTUgMTIuMjEgMTEuN1YxMi4zMkwxMi4yMiAxMi42M1ExNC4zIDEzLjE5IDE2LjM1IDEzLjczIDE4LjQgMTQuMjcgMjAuNDcgMTQuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWljcm93YXZlID0gXCJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMjBBMiwyIDAgMCwwIDIyLDE3VjdBMiwyIDAgMCwwIDIwLDVINE00LDdIMTZWMTdINFY3TTE5LDdBMSwxIDAgMCwxIDIwLDhBMSwxIDAgMCwxIDE5LDlBMSwxIDAgMCwxIDE4LDhBMSwxIDAgMCwxIDE5LDdNMTMsOVYxNUgxNVY5SDEzTTE5LDExQTEsMSAwIDAsMSAyMCwxMkExLDEgMCAwLDEgMTksMTNBMSwxIDAgMCwxIDE4LDEyQTEsMSAwIDAsMSAxOSwxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaWNyb3dhdmVPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDMuMjYgNS4xNUMyLjUgNS40NCAyIDYuMTYgMiA3VjE3QzIgMTguMTEgMi45IDE5IDQgMTlIMTcuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNCAxN1Y3SDUuMTFMMTUuMTEgMTdINE0xNiA3VjEyLjhMMjEuNSAxOC4zMUMyMS44MSAxNy45NSAyMiAxNy41IDIyIDE3VjdDMjIgNS45IDIxLjExIDUgMjAgNUg4LjJMMTAuMiA3SDE2TTE5IDdDMTkuNTUgNyAyMCA3LjQ1IDIwIDhTMTkuNTUgOSAxOSA5IDE4IDguNTUgMTggOCAxOC40NSA3IDE5IDdNMTkgMTFDMTkuNTUgMTEgMjAgMTEuNDUgMjAgMTJTMTkuNTUgMTMgMTkgMTMgMTggMTIuNTUgMTggMTIgMTguNDUgMTEgMTkgMTFNMTMgOS44VjlIMTVWMTEuOEwxMyA5LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlkZGxld2FyZSA9IFwiTTIzIDEyTDE5IDhWMTFIMTQuODJDMTQuNCA5Ljg0IDEzLjMgOSAxMiA5UzkuNiA5Ljg0IDkuMTggMTFINUwyIDhWMTZMNSAxM0g5LjE4QzkuNiAxNC4xNiAxMC43IDE1IDEyIDE1UzE0LjQgMTQuMTYgMTQuODIgMTNIMTlWMTZMMjMgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlkZGxld2FyZU91dGxpbmUgPSBcIk0yMyAxMkwxOSA4VjExSDE1Ljg2QzE1LjQxIDkuMjggMTMuODYgOCAxMiA4UzguNTkgOS4yOCA4LjE0IDExSDVMMiA4VjE2TDUgMTNIOC4xNEM4LjU5IDE0LjcyIDEwLjE0IDE2IDEyIDE2UzE1LjQxIDE0LjcyIDE1Ljg2IDEzSDE5VjE2TDIzIDEyTTEyIDE0QzEwLjkgMTQgMTAgMTMuMSAxMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBTMTQgMTAuOSAxNCAxMkMxNCAxMy4xIDEzLjEgMTQgMTIgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlkaSA9IFwiTTIwLjE1IDguMjZIMjJWMTUuNzRIMjAuMTVNMTMgOC4yNkgxOC40M0MxOSA4LjI2IDE5LjMgOC43NCAxOS4zIDkuM1YxNC44MUMxOS4zIDE1LjUgMTkgMTUuNzQgMTguMzggMTUuNzRIMTNWMTFIMTQuODdWMTMuOTFIMTcuNVY5Ljk1SDEzTTEwLjMyIDguMjZIMTIuMTRWMTUuNzRIMTAuMzJNMiA4LjI2SDguNTVDOS4xIDguMjYgOS40MSA4Ljc0IDkuNDEgOS4zVjE1Ljc0SDcuNTlWMTAuMTVINi41VjE1Ljc0SDQuODdWMTAuMTVIMy44M1YxNS43NEgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pZGlQb3J0ID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMjAuMTgsMTJDMjAuMTgsOC4xOCAxNy41NSw0Ljk2IDE0LDQuMDdWNkgxMFY0LjA3QzYuNDUsNC45NiAzLjgyLDguMTggMy44MiwxMkE4LjE4LDguMTggMCAwLDAgMTIsMjAuMThBOC4xOCw4LjE4IDAgMCwwIDIwLjE4LDEyTTcsMTAuNjRBMS4zNiwxLjM2IDAgMCwxIDguMzYsMTJBMS4zNiwxLjM2IDAgMCwxIDcsMTMuMzZDNi4yNSwxMy4zNiA1LjY0LDEyLjc1IDUuNjQsMTJDNS42NCwxMS4yNSA2LjI1LDEwLjY0IDcsMTAuNjRNMTcsMTAuNjRBMS4zNiwxLjM2IDAgMCwxIDE4LjM2LDEyQTEuMzYsMS4zNiAwIDAsMSAxNywxMy4zNkExLjM2LDEuMzYgMCAwLDEgMTUuNjQsMTJBMS4zNiwxLjM2IDAgMCwxIDE3LDEwLjY0TTguMzYsMTQuMjdBMS4zNywxLjM3IDAgMCwxIDkuNzMsMTUuNjRDOS43MywxNi4zOSA5LjEyLDE3IDguMzYsMTdBMS4zNiwxLjM2IDAgMCwxIDcsMTUuNjRDNywxNC44OCA3LjYxLDE0LjI3IDguMzYsMTQuMjdNMTUuNjQsMTQuMjdDMTYuMzksMTQuMjcgMTcsMTQuODggMTcsMTUuNjRBMS4zNiwxLjM2IDAgMCwxIDE1LjY0LDE3QzE0Ljg4LDE3IDE0LjI3LDE2LjM5IDE0LjI3LDE1LjY0QTEuMzcsMS4zNyAwIDAsMSAxNS42NCwxNC4yN00xMiwxNS42NEExLjM2LDEuMzYgMCAwLDEgMTMuMzYsMTdBMS4zNiwxLjM2IDAgMCwxIDEyLDE4LjM2QTEuMzYsMS4zNiAwIDAsMSAxMC42NCwxN0ExLjM2LDEuMzYgMCAwLDEgMTIsMTUuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWluZSA9IFwiTTIzLDEzVjExSDE5LjkzQzE5Ljc1LDkuNTggMTkuMTksOC4yMyAxOC4zMSw3LjFMMjAuNSw0LjkzTDE5LjA3LDMuNUwxNi45LDUuNjlDMTUuNzcsNC44MSAxNC40Miw0LjI1IDEzLDQuMDdWMUgxMVY0LjA3QzkuNTgsNC4yNSA4LjIzLDQuODEgNy4xLDUuNjlMNC45MywzLjVMMy41LDQuOTNMNS42OSw3LjFDNC44MSw4LjIzIDQuMjUsOS41OCA0LjA3LDExSDFWMTNINC4wN0M0LjI1LDE0LjQyIDQuODEsMTUuNzcgNS42OSwxNi45TDMuNSwxOS4wN0w0LjkzLDIwLjVMNy4xLDE4LjMxQzguMjMsMTkuMTkgOS41OCwxOS43NSAxMSwxOS45M1YyM0gxM1YxOS45M0MxNC40MiwxOS43NSAxNS43NywxOS4xOSAxNi45LDE4LjMxTDE5LjA3LDIwLjVMMjAuNSwxOS4wN0wxOC4zMSwxNi45QzE5LjE5LDE1Ljc3IDE5Ljc1LDE0LjQyIDE5LjkzLDEzSDIzTTEyLDhBNCw0IDAgMCwwIDgsMTJINkE2LDYgMCAwLDEgMTIsNlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pbmVjcmFmdCA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYyMEEyLDIgMCAwLDEgMjAsMjJINEEyLDIgMCAwLDEgMiwyMFY0QTIsMiAwIDAsMSA0LDJNNiw2VjEwSDEwVjEySDhWMThIMTBWMTZIMTRWMThIMTZWMTJIMTRWMTBIMThWNkgxNFYxMEgxMFY2SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWluaVNkID0gXCJNNiw0QTIsMiAwIDAsMCA0LDZWMThBMiwyIDAgMCwwIDYsMjBIMThBMiwyIDAgMCwwIDIwLDE4VjEyTDE4LDEwVjZBMiwyIDAgMCwwIDE2LDRINk03LDZIOVYxMEg3VjZNMTAsNkgxMlYxMEgxMFY2TTEzLDZIMTVWMTBIMTNWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW5pZGlzYyA9IFwiTTUsM0MzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzSDVNMTIsNUMxNS4wOSw1IDE3LjgyLDcuMDQgMTguNywxMEgxNkExLDEgMCAwLDAgMTUsMTFWMTNBMSwxIDAgMCwwIDE2LDE0SDE4LjcxQzE3LjgyLDE2Ljk3IDE1LjA5LDE5IDEyLDE5QTcsNyAwIDAsMSA1LDEyQTcsNyAwIDAsMSAxMiw1TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51cyA9IFwiTTE5LDEzSDVWMTFIMTlWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNCb3ggPSBcIk0xNywxM0g3VjExSDE3TTE5LDNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pbnVzQm94TXVsdGlwbGUgPSBcIk0xOSAxMUg5VjlIMTlNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjExIDYuOSAxOCA4IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk00IDZIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDE4VjIwSDRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTE4IDExSDEwVjlIMThNMjAgNFYxNkg4VjRIMjBNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjExIDYuOSAxOCA4IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk00IDZIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDE4VjIwSDRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0JveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QzMsMy44OSAzLjksMyA1LDNIMTlNMTcsMTFWMTNIN1YxMUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0NpcmNsZSA9IFwiTTE3LDEzSDdWMTFIMTdNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNDaXJjbGVNdWx0aXBsZSA9IFwiTTIgMTJDMiA5LjIxIDMuNjQgNi44IDYgNS42OFYzLjVDMi41IDQuNzYgMCA4LjA5IDAgMTJTMi41IDE5LjI0IDYgMjAuNVYxOC4zMkMzLjY0IDE3LjIgMiAxNC43OSAyIDEyTTE1IDNDMTAuMDQgMyA2IDcuMDQgNiAxMlMxMC4wNCAyMSAxNSAyMSAyNCAxNi45NiAyNCAxMiAxOS45NiAzIDE1IDNNMjAgMTNIMTBWMTFIMjBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNDaXJjbGVNdWx0aXBsZU91dGxpbmUgPSBcIk0xMSAxMVYxM0gxOVYxMUgxMU0yIDEyQzIgOS4yMSAzLjY0IDYuOCA2IDUuNjhWMy41QzIuNSA0Ljc2IDAgOC4wOSAwIDEyUzIuNSAxOS4yNCA2IDIwLjVWMTguMzJDMy42NCAxNy4yIDIgMTQuNzkgMiAxMk0xNSAzQzEwLjA0IDMgNiA3LjA0IDYgMTJTMTAuMDQgMjEgMTUgMjEgMjQgMTYuOTYgMjQgMTIgMTkuOTYgMyAxNSAzTTE1IDE5QzExLjE0IDE5IDggMTUuODYgOCAxMlMxMS4xNCA1IDE1IDUgMjIgOC4xNCAyMiAxMiAxOC44NiAxOSAxNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c0NpcmNsZU9mZiA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDQuMSA2QzIuOCA3LjYgMiA5LjcgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE0LjMgMjIgMTYuNCAyMS4yIDE4IDE5LjlMMjAuOCAyMi43TDIyLjEgMjEuNU03IDEzVjExSDkuMUwxMS4xIDEzSDdNMTQuMiAxMUw2LjcgMy41QzguMyAyLjYgMTAuMSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy45IDIxLjQgMTUuNyAyMC41IDE3LjNMMTYuMiAxM0gxN1YxMUgxNC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1pbnVzQ2lyY2xlT2ZmT3V0bGluZSA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDQuMSA2QzIuOCA3LjYgMiA5LjcgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzE0LjMgMjIgMTYuNCAyMS4yIDE4IDE5LjlMMjAuOCAyMi43TDIyLjEgMjEuNU0xMiAyMEM3LjYgMjAgNCAxNi40IDQgMTJDNCAxMC4zIDQuNiA4LjcgNS41IDcuNEw5LjEgMTFIN1YxM0gxMS4xTDE2LjYgMTguNUMxNS4zIDE5LjQgMTMuNyAyMCAxMiAyME04LjIgNUw2LjcgMy41QzguMyAyLjYgMTAuMSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy45IDIxLjQgMTUuNyAyMC41IDE3LjNMMTkgMTUuOEMxOS42IDE0LjcgMjAgMTMuNCAyMCAxMkMyMCA3LjYgMTYuNCA0IDEyIDRDMTAuNiA0IDkuMyA0LjQgOC4yIDVNMTYuMiAxM0wxNC4yIDExSDE3VjEzSDE2LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNDaXJjbGVPdXRsaW5lID0gXCJNMTIsMjBDNy41OSwyMCA0LDE2LjQxIDQsMTJDNCw3LjU5IDcuNTksNCAxMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk03LDEzSDE3VjExSDdcIjtcclxuZXhwb3J0IHZhciBtZGlNaW51c05ldHdvcmsgPSBcIk0xNiwxMVY5SDhWMTFIMTZNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTUsMTFWOUg5VjExSDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpTWludXNUaGljayA9IFwiTTIwIDE0SDRWMTBIMjBWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWlycm9yID0gXCJNMTIgMUMxNi42OSAxIDIwLjUgNS45MyAyMC41IDEyQzIwLjUgMTguMDggMTYuNjkgMjMgMTIgMjNDNy4zMSAyMyAzLjUgMTguMDggMy41IDEyQzMuNSA1LjkzIDcuMzEgMSAxMiAxTTEyIDNDOC40MSAzIDUuNSA3LjAzIDUuNSAxMkM1LjUgMTYuOTcgOC40MSAyMSAxMiAyMUMxNS41OSAyMSAxOC41IDE2Ljk3IDE4LjUgMTJDMTguNSA3LjAzIDE1LjU5IDMgMTIgM004LjI5IDEwLjI4TDExLjUzIDcuMDNMMTIuNTkgOC4wOUw5LjM1IDExLjM0TDguMjkgMTAuMjhNOC43IDE0LjYxTDE0LjM2IDguOTVMMTUuNDIgMTBMOS43NiAxNS42N0w4LjcgMTQuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTWl4ZWRNYXJ0aWFsQXJ0cyA9IFwiTTE1LDEwVjdIN1YxMEgxNU0xOCw3QzE4LjI4LDcgMTguNSw3LjA5IDE4LjcsNy4yOUMxOC44OSw3LjUgMTksNy43MyAxOSw4VjEwLjc4QzE5LDEwLjk3IDE4Ljk3LDExLjExIDE4Ljk0LDExLjJMMTguMTQsMTUuMTlDMTgsMTUuNzIgMTcuNywxNiAxNy4yLDE2SDYuOEM2LjI3LDE2IDUuOTUsMTUuNzIgNS44NiwxNS4xOUw1LjA2LDExLjJDNS4wMywxMS4xMSA1LDEwLjk3IDUsMTAuNzhWNUM1LDQuNSA1LjIxLDQgNS42LDMuNjFDNiwzLjIgNi40NSwzIDcsM0gxNUMxNS41MywzIDE2LDMuMiAxNi40MSwzLjYxQzE2LjgxLDQgMTcsNC41IDE3LDVWOEMxNyw3LjczIDE3LjExLDcuNSAxNy4zLDcuMjlDMTcuNSw3LjA5IDE3LjcyLDcgMTgsN003LDIwVjE3SDE3VjIwQzE3LDIwLjMgMTYuOTEsMjAuNTMgMTYuNzEsMjAuNzJDMTYuNSwyMC45MSAxNi4yNywyMSAxNiwyMUg4QzcuNzMsMjEgNy41LDIwLjkxIDcuMjksMjAuNzJDNy4wOSwyMC41MyA3LDIwLjMgNywyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNaXhlZFJlYWxpdHkgPSBcIk01LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QTIsMiAwIDAsMSA1LDNNOC4yNSwxNUg5Ljc1TDEwLjc1LDExLjU3VjE1SDEyLjI1VjlIMTBMOSwxMi40M0w4LDlINS43NVYxNUg3LjI1VjExLjU3TDguMjUsMTVNMTMuNSw5VjE1SDE1VjEzSDE2LjE1TDE3LDE1SDE4LjVMMTcuNiwxMi45QzE4LjEsMTIuNjUgMTguNSwxMi4xIDE4LjUsMTEuNVYxMC41QzE4LjUsOS42NSAxNy44NSw5IDE3LDlIMTMuNU0xNSwxMC41SDE3VjExLjVIMTVWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb2xlY3VsZSA9IFwiTTcuMjcsMTBMOSw3SDE0LjQyTDE1LjU4LDVMMTUuNSw0LjVBMS41LDEuNSAwIDAsMSAxNywzQTEuNSwxLjUgMCAwLDEgMTguNSw0LjVDMTguNSw1LjIxIDE4LDUuODEgMTcuMzMsNS45NkwxNi4zNyw3LjYzTDE3LjczLDEwTDE4LjU5LDguNUwxOC41LDhBMS41LDEuNSAwIDAsMSAyMCw2LjVBMS41LDEuNSAwIDAsMSAyMS41LDhDMjEuNSw4LjcxIDIxLDkuMyAyMC4zNSw5LjQ2TDE4Ljg5LDEyTDIwLjYyLDE1QzIxLjM5LDE1LjA3IDIyLDE1LjcxIDIyLDE2LjVBMS41LDEuNSAwIDAsMSAyMC41LDE4QTEuNSwxLjUgMCAwLDEgMTksMTYuNVYxNi4yNEwxNy43MywxNEwxNi4zNywxNi4zN0wxNy4zMywxOC4wNEMxOCwxOC4xOSAxOC41LDE4Ljc5IDE4LjUsMTkuNUExLjUsMS41IDAgMCwxIDE3LDIxQTEuNSwxLjUgMCAwLDEgMTUuNSwxOS41TDE1LjU4LDE5TDE0LjQyLDE3SDEwLjU4TDkuNDIsMTlMOS41LDE5LjVBMS41LDEuNSAwIDAsMSA4LDIxQTEuNSwxLjUgMCAwLDEgNi41LDE5LjVDNi41LDE4Ljc5IDcsMTguMTkgNy42NywxOC4wNEw4LjYzLDE2LjM3TDQuMzgsOUMzLjYxLDguOTMgMyw4LjI5IDMsNy41QTEuNSwxLjUgMCAwLDEgNC41LDZBMS41LDEuNSAwIDAsMSA2LDcuNUM2LDcuNTkgNiw3LjY4IDYsNy43Nkw3LjI3LDEwTTEwLjE1LDlMOC40MiwxMkwxMC4xNSwxNUgxNC44NUwxNi41OCwxMkwxNC44NSw5SDEwLjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbGVjdWxlQ28gPSBcIk04IDdDNi45IDcgNiA3LjkgNiA5VjE1QzYgMTYuMTEgNi45IDE3IDggMTdIMTFWMTVIOFY5SDExVjdIOE0xNCA3QzEyLjkgNyAxMiA3LjkgMTIgOVYxNUMxMiAxNi4xMSAxMi45IDE3IDE0IDE3SDE2QzE3LjExIDE3IDE4IDE2LjExIDE4IDE1VjlDMTggNy45IDE3LjExIDcgMTYgN0gxNE0xNCA5SDE2VjE1SDE0VjlcIjtcclxuZXhwb3J0IHZhciBtZGlNb2xlY3VsZUNvMiA9IFwiTTUsN0EyLDIgMCAwLDAgMyw5VjE1QTIsMiAwIDAsMCA1LDE3SDhWMTVINVY5SDhWN0g1TTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5TTE2LDEwLjVWMTJIMTlWMTMuNUgxNy41QTEuNSwxLjUgMCAwLDAgMTYsMTVWMThIMjAuNVYxNi41SDE3LjVWMTVIMTlBMS41LDEuNSAwIDAsMCAyMC41LDEzLjVWMTJBMS41LDEuNSAwIDAsMCAxOSwxMC41SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3IgPSBcIk0yMSwxNkgzVjRIMjFNMjEsMkgzQzEuODksMiAxLDIuODkgMSw0VjE2QTIsMiAwIDAsMCAzLDE4SDEwVjIwSDhWMjJIMTZWMjBIMTRWMThIMjFBMiwyIDAgMCwwIDIzLDE2VjRDMjMsMi44OSAyMi4xLDIgMjEsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yQ2VsbHBob25lID0gXCJNMjMsMTFIMThBMSwxIDAgMCwwIDE3LDEyVjIxQTEsMSAwIDAsMCAxOCwyMkgyM0ExLDEgMCAwLDAgMjQsMjFWMTJBMSwxIDAgMCwwIDIzLDExTTIzLDIwSDE4VjEzSDIzVjIwTTIwLDJIMkMwLjg5LDIgMCwyLjg5IDAsNFYxNkEyLDIgMCAwLDAgMiwxOEg5VjIwSDdWMjJIMTVWMjBIMTNWMThIMTVWMTZIMlY0SDIwVjlIMjJWNEMyMiwyLjg5IDIxLjEsMiAyMCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JDZWxscGhvbmVTdGFyID0gXCJNMjMsMTFIMThBMSwxIDAgMCwwIDE3LDEyVjIxQTEsMSAwIDAsMCAxOCwyMkgyM0ExLDEgMCAwLDAgMjQsMjFWMTJBMSwxIDAgMCwwIDIzLDExTTIzLDIwSDE4VjEzSDIzVjIwTTIwLDJIMkMwLjg5LDIgMCwyLjg5IDAsNFYxNkEyLDIgMCAwLDAgMiwxOEg5VjIwSDdWMjJIMTVWMjBIMTNWMThIMTVWMTZIMlY0SDIwVjlIMjJWNEMyMiwyLjg5IDIxLjEsMiAyMCwyTTExLjk3LDlMMTEsNkwxMC4wMyw5SDdMOS40NywxMC43Nkw4LjUzLDEzLjY3TDExLDExLjg3TDEzLjQ3LDEzLjY3TDEyLjUzLDEwLjc2TDE1LDlIMTEuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvckNsZWFuID0gXCJNMjEgMTZIM1Y0SDIxTTIxIDJIM0MxLjg5IDIgMSAyLjg5IDEgNFYxNkMxIDE3LjExIDEuOSAxOCAzIDE4SDEwVjIwSDhWMjJIMTZWMjBIMTRWMThIMjFDMjIuMTEgMTggMjMgMTcuMTEgMjMgMTZWNEMyMyAyLjg5IDIyLjEgMiAyMSAyTTE1IDUuNUwxNC4zOCA2Ljg3TDEzIDcuNUwxNC4zOCA4LjEzTDE1IDkuNUwxNS42MyA4LjEzTDE3IDcuNUwxNS42MyA2Ljg3TDE1IDUuNU0xMC41IDcuNUw5LjQxIDkuOTFMNyAxMUw5LjQxIDEyLjA5TDEwLjUgMTQuNUwxMS42IDEyLjA5TDE0IDExTDExLjYgOS45MUwxMC41IDcuNVwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JEYXNoYm9hcmQgPSBcIk0yMSwxNlY0SDNWMTZIMjFNMjEsMkEyLDIgMCAwLDEgMjMsNFYxNkEyLDIgMCAwLDEgMjEsMThIMTRWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQzEuODksMTggMSwxNy4xIDEsMTZWNEMxLDIuODkgMS44OSwyIDMsMkgyMU01LDZIMTRWMTFINVY2TTE1LDZIMTlWOEgxNVY2TTE5LDlWMTRIMTVWOUgxOU01LDEySDlWMTRINVYxMk0xMCwxMkgxNFYxNEgxMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yRWRpdCA9IFwiTTIxIDJIM0MxLjkgMiAxIDIuOSAxIDRWMTZDMSAxNy4xMSAxLjkgMTggMyAxOEgxMFYyMEg4VjIySDE2VjIwSDE0VjE4SDIxQzIyLjExIDE4IDIzIDE3LjExIDIzIDE2VjRDMjMgMi45IDIyLjExIDIgMjEgMk0yMSAxNkgzVjRIMjFWMTZNMTUuODQgOC4yTDE0LjgzIDkuMjFMMTIuNzYgNy4xOEwxMy43NyA2LjE2QzEzLjk3IDUuOTUgMTQuMzEgNS45NCAxNC41NSA2LjE2TDE1Ljg0IDcuNDFDMTYuMDUgNy42MiAxNi4wNiA3Ljk2IDE1Ljg0IDguMk04IDExLjkxTDEyLjE3IDcuNzJMMTQuMjQgOS44TDEwLjA4IDE0SDhWMTEuOTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvckV5ZSA9IFwiTTMgNFYxNkgyMVY0SDNNMyAySDIxQzIyLjEgMiAyMyAyLjg5IDIzIDRWMTZDMjMgMTYuNTMgMjIuNzkgMTcuMDQgMjIuNDEgMTcuNDFDMjIuMDQgMTcuNzkgMjEuNTMgMTggMjEgMThIMTRWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQzIuNDcgMTggMS45NiAxNy43OSAxLjU5IDE3LjQxQzEuMjEgMTcuMDQgMSAxNi41MyAxIDE2VjRDMSAyLjg5IDEuODkgMiAzIDJNMTAuODQgOC45M0MxMS4xNSA4LjYzIDExLjU3IDguNDUgMTIgOC40NUMxMi40MyA4LjQ2IDEyLjg1IDguNjMgMTMuMTYgOC45NEMxMy40NiA5LjI0IDEzLjY0IDkuNjYgMTMuNjQgMTAuMDlDMTMuNjQgMTAuNTMgMTMuNDYgMTAuOTQgMTMuMTYgMTEuMjVDMTIuODUgMTEuNTYgMTIuNDMgMTEuNzMgMTIgMTEuNzNDMTEuNTcgMTEuNzMgMTEuMTUgMTEuNTUgMTAuODQgMTEuMjVDMTAuNTQgMTAuOTQgMTAuMzYgMTAuNTMgMTAuMzYgMTAuMDlDMTAuMzYgOS42NiAxMC41NCA5LjI0IDEwLjg0IDguOTNNMTAuMDcgMTJDMTAuNTggMTIuNTMgMTEuMjggMTIuODIgMTIgMTIuODJDMTIuNzIgMTIuODIgMTMuNDIgMTIuNTMgMTMuOTMgMTJDMTQuNDQgMTEuNSAxNC43MyAxMC44MSAxNC43MyAxMC4wOUMxNC43MyA5LjM3IDE0LjQ0IDguNjcgMTMuOTMgOC4xNkMxMy40MiA3LjY1IDEyLjcyIDcuMzYgMTIgNy4zNkMxMS4yOCA3LjM2IDEwLjU4IDcuNjUgMTAuMDcgOC4xNkM5LjU2IDguNjcgOS4yNyA5LjM3IDkuMjcgMTAuMDlDOS4yNyAxMC44MSA5LjU2IDExLjUgMTAuMDcgMTJNNiAxMC4wOUM2Ljk0IDcuNyA5LjI3IDYgMTIgNkMxNC43MyA2IDE3LjA2IDcuNyAxOCAxMC4wOUMxNy4wNiAxMi41IDE0LjczIDE0LjE4IDEyIDE0LjE4QzkuMjcgMTQuMTggNi45NCAxMi41IDYgMTAuMDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvckxvY2sgPSBcIk0yMC41LDEzQTIuNSwyLjUgMCAwLDEgMjMsMTUuNVYxNkExLDEgMCAwLDEgMjQsMTdWMjFBMSwxIDAgMCwxIDIzLDIySDE4QTEsMSAwIDAsMSAxNywyMVYxN0ExLDEgMCAwLDEgMTgsMTZWMTUuNUEyLjUsMi41IDAgMCwxIDIwLjUsMTNNMjAuNSwxNEExLjUsMS41IDAgMCwwIDE5LDE1LjVWMTZIMjJWMTUuNUExLjUsMS41IDAgMCwwIDIwLjUsMTRNMjAsNEgyVjE2SDE1VjE4SDEzVjIwSDE1VjIySDdWMjBIOVYxOEgyQzAuODksMTggMCwxNy4xIDAsMTZWNEMwLDIuODkgMC44OSwyIDIsMkgyMEEyLDIgMCAwLDEgMjIsNFYxMS41M0MyMS40MSwxMS4xOSAyMC43MywxMSAyMCwxMVY0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JNdWx0aXBsZSA9IFwiTTIyLDE3VjdINlYxN0gyMk0yMiw1QTIsMiAwIDAsMSAyNCw3VjE3QzI0LDE4LjExIDIzLjEsMTkgMjIsMTlIMTZWMjFIMThWMjNIMTBWMjFIMTJWMTlINkM0Ljg5LDE5IDQsMTguMTEgNCwxN1Y3QTIsMiAwIDAsMSA2LDVIMjJNMiwzVjE1SDBWM0EyLDIgMCAwLDEgMiwxSDIwVjNIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yT2ZmID0gXCJNMTQsMThWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQTIsMiAwIDAsMSAxLDE2VjRMMCwzTDEuNDEsMS41OEwyMi4xNiwyMi4zNEwyMC43NSwyMy43NUwxNSwxOEgxNE0zLDE2SDEzTDMsNlYxNk0yMSwyQTIsMiAwIDAsMSAyMyw0VjE2QTIsMiAwIDAsMSAyMSwxOEgyMC42NkwxOC42NiwxNkgyMVY0SDYuNjZMNC42NiwySDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vbml0b3JTY3JlZW5zaG90ID0gXCJNOSw2SDVWMTBIN1Y4SDlNMTksMTBIMTdWMTJIMTVWMTRIMTlNMjEsMTZIM1Y0SDIxTTIxLDJIM0MxLjg5LDIgMSwyLjg5IDEsNFYxNkEyLDIgMCAwLDAgMywxOEgxMFYyMEg4VjIySDE2VjIwSDE0VjE4SDIxQTIsMiAwIDAsMCAyMywxNlY0QzIzLDIuODkgMjIuMSwyIDIxLDJcIjtcclxuZXhwb3J0IHZhciBtZGlNb25pdG9yU2hhcmUgPSBcIk0yMyA0VjE2QzIzIDE3LjExIDIyLjExIDE4IDIxIDE4SDE1VjE2SDIxVjRIM1YxNkg5VjE4SDNDMS45IDE4IDEgMTcuMTEgMSAxNlY0QzEgMi44OSAxLjg5IDIgMyAySDIxQzIyLjEgMiAyMyAyLjg5IDIzIDRNMTMgMTNIMTZMMTIgOUw4IDEzSDExVjIwSDhWMjJIMTZWMjBIMTNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvclNwZWFrZXIgPSBcIk0xMCAyMFYxOEgzQzEuOSAxOCAxIDE3LjEgMSAxNlY0QzEgMi44OSAxLjg5IDIgMyAySDIxQzIyLjEgMiAyMyAyLjg5IDIzIDRWOEgyMVY0SDNWMTZIMTJWMjJIOFYyMEgxME0xOC41IDE1QzE3LjEyIDE1IDE2IDE2LjEyIDE2IDE3LjVTMTcuMTIgMjAgMTguNSAyMCAyMSAxOC44OCAyMSAxNy41IDE5Ljg4IDE1IDE4LjUgMTVNMjMgMTBWMjFDMjMgMjEuNTUgMjIuNTUgMjIgMjIgMjJIMTVDMTQuNDUgMjIgMTQgMjEuNTUgMTQgMjFWMTBDMTQgOS40NSAxNC40NSA5IDE1IDlIMjJDMjIuNTUgOSAyMyA5LjQ1IDIzIDEwTTE3IDExLjVDMTcgMTIuMzMgMTcuNjcgMTMgMTguNSAxM1MyMCAxMi4zMyAyMCAxMS41IDE5LjMzIDEwIDE4LjUgMTAgMTcgMTAuNjcgMTcgMTEuNU0yMiAxNy41QzIyIDE1LjU3IDIwLjQzIDE0IDE4LjUgMTRTMTUgMTUuNTcgMTUgMTcuNSAxNi41NyAyMSAxOC41IDIxIDIyIDE5LjQzIDIyIDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvclNwZWFrZXJPZmYgPSBcIk0yMy4xIDIyLjVMMS40LjcuMSAyTDEuMiAzLjFDMS4xIDMuNCAxIDMuNyAxIDRWMTZDMSAxNy4xIDEuOSAxOCAzIDE4SDEwVjIwSDhWMjJIMTJWMTZIM1Y0LjlMMTQgMTUuOVYyMUMxNCAyMS42IDE0LjUgMjIgMTUgMjJIMjAuMUwyMS44IDIzLjdMMjMuMSAyMi41TTE4LjUgMjFDMTYuNiAyMSAxNSAxOS40IDE1IDE3LjVDMTUgMTcuMyAxNSAxNy4xIDE1LjEgMTYuOUwxNi4xIDE3LjlDMTYuMyAxOC45IDE3LjEgMTkuNyAxOC4xIDE5LjlMMTkuMSAyMC45QzE4LjkgMjEgMTguNyAyMSAxOC41IDIxTTIxIDE3LjVWMTcuOEwxOC4yIDE1SDE4LjVDMTkuOSAxNSAyMSAxNi4xIDIxIDE3LjVNMjMgMTkuOFYxMEMyMyA5LjQgMjIuNSA5IDIyIDlIMTVDMTQuNCA5IDE0IDkuNSAxNCAxMFYxMC44TDE3LjQgMTQuMkMxNy43IDE0LjEgMTguMSAxNCAxOC41IDE0QzIwLjQgMTQgMjIgMTUuNiAyMiAxNy41QzIyIDE3LjkgMjEuOSAxOC4zIDIxLjggMTguNkwyMyAxOS44TTE4LjUgMTNDMTcuNyAxMyAxNyAxMi4zIDE3IDExLjVTMTcuNyAxMCAxOC41IDEwIDIwIDEwLjcgMjAgMTEuNSAxOS4zIDEzIDE4LjUgMTNNNy4yIDRMNS4yIDJIMjFDMjIuMSAyIDIzIDIuOSAyMyA0VjhIMjFWNEg3LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9uaXRvclN0YXIgPSBcIk0yMSwxNlY0SDNWMTZIMjFNMjEsMkEyLDIgMCAwLDEgMjMsNFYxNkEyLDIgMCAwLDEgMjEsMThIMTRWMjBIMTZWMjJIOFYyMEgxMFYxOEgzQzEuODksMTggMSwxNy4xIDEsMTZWNEMxLDIuODkgMS44OSwyIDMsMkgyMU0xMi45Nyw5SDE2TDEzLjUzLDEwLjc2TDE0LjQ3LDEzLjY3TDEyLDExLjg3TDkuNTMsMTMuNjdMMTAuNDcsMTAuNzZMOCw5SDExLjAzTDEyLDZMMTIuOTcsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb29uRmlyc3RRdWFydGVyID0gXCJNMTIgMlYyMkExMCAxMCAwIDAgMCAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vb25GdWxsID0gXCJNMTIgMkExMCAxMCAwIDEgMSAyIDEyQTEwIDEwIDAgMCAxIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbkxhc3RRdWFydGVyID0gXCJNMTIgMkExMCAxMCAwIDAgMCAxMiAyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb29uTmV3ID0gXCJNMTIgMjBBOCA4IDAgMSAxIDIwIDEyQTggOCAwIDAgMSAxMiAyME0xMiAyQTEwIDEwIDAgMSAwIDIyIDEyQTEwIDEwIDAgMCAwIDEyIDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbldhbmluZ0NyZXNjZW50ID0gXCJNMiAxMkExMCAxMCAwIDAgMCAxNSAyMS41NEExMCAxMCAwIDAgMSAxNSAyLjQ2QTEwIDEwIDAgMCAwIDIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbldhbmluZ0dpYmJvdXMgPSBcIk0xOCAxMkMxOCA3LjUgMTYuMDggMy4yNiAxMiAyQTEwIDEwIDAgMCAwIDEyIDIyQzE2LjA4IDIwLjc0IDE4IDE2LjUgMTggMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW9vbldheGluZ0NyZXNjZW50ID0gXCJNMTIgMkE5LjkxIDkuOTEgMCAwIDAgOSAyLjQ2QTEwIDEwIDAgMCAxIDkgMjEuNTRBMTAgMTAgMCAxIDAgMTIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb29uV2F4aW5nR2liYm91cyA9IFwiTTYgMTJDNiA3LjUgNy45MyAzLjI2IDEyIDJBMTAgMTAgMCAwIDEgMTIgMjJDNy45MyAyMC43NCA2IDE2LjUgNiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3BlZCA9IFwiTTE5IDE1QzE5LjU1IDE1IDIwIDE1LjQ1IDIwIDE2QzIwIDE2LjU1IDE5LjU1IDE3IDE5IDE3UzE4IDE2LjU1IDE4IDE2QzE4IDE1LjQ1IDE4LjQ1IDE1IDE5IDE1TTE5IDEzQzE3LjM0IDEzIDE2IDE0LjM0IDE2IDE2UzE3LjM0IDE5IDE5IDE5IDIyIDE3LjY2IDIyIDE2IDIwLjY2IDEzIDE5IDEzTTEwIDZINVY4SDEwVjZNMTcgNUgxNFY3SDE3VjkuNjVMMTMuNSAxNEgxMFY5SDZDMy43OSA5IDIgMTAuNzkgMiAxM1YxNkg0QzQgMTcuNjYgNS4zNCAxOSA3IDE5UzEwIDE3LjY2IDEwIDE2SDE0LjVMMTkgMTAuMzVWN0MxOSA1LjkgMTguMTEgNSAxNyA1TTcgMTdDNi40NSAxNyA2IDE2LjU1IDYgMTZIOEM4IDE2LjU1IDcuNTUgMTcgNyAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3BlZEVsZWN0cmljID0gXCJNMTkgNUMxOSAzLjkgMTguMSAzIDE3IDNIMTRWNUgxN1Y3LjY1TDEzLjUgMTJIMTBWN0g2QzMuNzkgNyAyIDguNzkgMiAxMVYxNEg0QzQgMTUuNjYgNS4zNCAxNyA3IDE3UzEwIDE1LjY2IDEwIDE0SDE0LjVMMTkgOC4zNVY1TTcgMTVDNi40NSAxNSA2IDE0LjU1IDYgMTRIOEM4IDE0LjU1IDcuNTUgMTUgNyAxNU01IDRIMTBWNkg1VjRNMTkgMTFDMTcuMzQgMTEgMTYgMTIuMzQgMTYgMTRTMTcuMzQgMTcgMTkgMTcgMjIgMTUuNjYgMjIgMTQgMjAuNjYgMTEgMTkgMTFNMTkgMTVDMTguNDUgMTUgMTggMTQuNTUgMTggMTRTMTguNDUgMTMgMTkgMTMgMjAgMTMuNDUgMjAgMTQgMTkuNTUgMTUgMTkgMTVNNyAyMEgxMVYxOEwxNyAyMUgxM1YyM0w3IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vcGVkRWxlY3RyaWNPdXRsaW5lID0gXCJNMTkgNUMxOSAzLjkgMTguMSAzIDE3IDNIMTRWNUgxN1Y3LjY1TDEzLjUgMTJIMTBWN0g2QzMuNzkgNyAyIDguNzkgMiAxMVYxNEg0QzQgMTUuNjYgNS4zNCAxNyA3IDE3UzEwIDE1LjY2IDEwIDE0SDE0LjVMMTkgOC4zNVY1TTQgMTJWMTFDNCA5LjkgNC45IDkgNiA5SDhWMTJINE03IDE1QzYuNDUgMTUgNiAxNC41NSA2IDE0SDhDOCAxNC41NSA3LjU1IDE1IDcgMTVNNSA0SDEwVjZINVY0TTE5IDExQzE3LjM0IDExIDE2IDEyLjM0IDE2IDE0UzE3LjM0IDE3IDE5IDE3IDIyIDE1LjY2IDIyIDE0IDIwLjY2IDExIDE5IDExTTE5IDE1QzE4LjQ1IDE1IDE4IDE0LjU1IDE4IDE0UzE4LjQ1IDEzIDE5IDEzIDIwIDEzLjQ1IDIwIDE0IDE5LjU1IDE1IDE5IDE1TTcgMjBIMTFWMThMMTcgMjFIMTNWMjNMNyAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3BlZE91dGxpbmUgPSBcIk0xOSA3QzE5IDUuOSAxOC4xMSA1IDE3IDVIMTRWN0gxN1Y5LjY1TDEzLjUgMTRIMTBWOUg2QzMuNzkgOSAyIDEwLjc5IDIgMTNWMTZINEM0IDE3LjY2IDUuMzQgMTkgNyAxOVMxMCAxNy42NiAxMCAxNkgxNC41TDE5IDEwLjM1VjdNNyAxN0M2LjQ1IDE3IDYgMTYuNTUgNiAxNkg4QzggMTYuNTUgNy41NSAxNyA3IDE3TTggMTRINFYxM0M0IDExLjkgNC45IDExIDYgMTFIOFYxNE0xOSAxM0MxNy4zNCAxMyAxNiAxNC4zNCAxNiAxNlMxNy4zNCAxOSAxOSAxOSAyMiAxNy42NiAyMiAxNiAyMC42NiAxMyAxOSAxM00xOSAxN0MxOC40NSAxNyAxOCAxNi41NSAxOCAxNlMxOC40NSAxNSAxOSAxNSAyMCAxNS40NSAyMCAxNiAxOS41NSAxNyAxOSAxN00xMCA4SDVWNkgxMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vcmUgPSBcIk0xOSwxMy41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMkExLjUsMS41IDAgMCwxIDE5LDEwLjVBMS41LDEuNSAwIDAsMSAyMC41LDEyQTEuNSwxLjUgMCAwLDEgMTksMTMuNU0xNCwxMy41QTEuNSwxLjUgMCAwLDEgMTIuNSwxMkExLjUsMS41IDAgMCwxIDE0LDEwLjVBMS41LDEuNSAwIDAsMSAxNS41LDEyQTEuNSwxLjUgMCAwLDEgMTQsMTMuNU05LDEzLjVBMS41LDEuNSAwIDAsMSA3LjUsMTJBMS41LDEuNSAwIDAsMSA5LDEwLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgOSwxMy41TTIyLDNIN0M2LjMxLDMgNS43NywzLjM1IDUuNDEsMy44OEwwLDEyTDUuNDEsMjAuMTFDNS43NywyMC42NCA2LjM3LDIxIDcuMDYsMjFIMjJBMiwyIDAgMCwwIDI0LDE5VjVDMjQsMy44OSAyMy4xLDMgMjIsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3RoZXJIZWFydCA9IFwiTTEyIDJDMTMuNjYgMiAxNSAzLjM0IDE1IDVTMTMuNjYgOCAxMiA4IDkgNi42NiA5IDUgMTAuMzQgMiAxMiAyTTIwIDE4TDE4IDEyLjU2QzE3LjY1IDExLjU3IDE3LjM0IDEwLjcxIDE2IDEwQzE0LjYzIDkuMyAxMy42MyA5IDEyIDlDMTAuMzkgOSA5LjM5IDkuMyA4IDEwQzYuNjggMTAuNzEgNi4zNyAxMS41NyA2IDEyLjU2TDQgMThDMy43NyAxOS4xMyA2LjM4IDIwLjQ0IDguMTMgMjEuMTlDOS4zNCAyMS43MiAxMC42NCAyMiAxMiAyMkMxMy4zOCAyMiAxNC42NyAyMS43MiAxNS44OSAyMS4xOUMxNy42NCAyMC40NCAyMC4yNSAxOS4xMyAyMCAxOE0xNS40MiAxNy41TDEyIDIxTDguNTggMTcuNUM4LjIyIDE3LjEyIDggMTYuNjEgOCAxNi4wNUM4IDE0LjkyIDguOSAxNCAxMCAxNEMxMC41NSAxNCAxMS4wNiAxNC4yMyAxMS40MiAxNC42MUwxMiAxNS4yTDEyLjU4IDE0LjZDMTIuOTQgMTQuMjMgMTMuNDUgMTQgMTQgMTRDMTUuMTEgMTQgMTYgMTQuOTIgMTYgMTYuMDVDMTYgMTYuNjEgMTUuNzggMTcuMTMgMTUuNDIgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3RoZXJOdXJzZSA9IFwiTTEyLDJBMywzIDAgMCwxIDE1LDVBMywzIDAgMCwxIDEyLDhBMywzIDAgMCwxIDksNUEzLDMgMCAwLDEgMTIsMk0yMCwxOEwxOCwxMi41NkMxNy42NSwxMS41NyAxNy4zNCwxMC43MSAxNiwxMEMxNC42Miw5LjMgMTMuNjIsOSAxMiw5QzEwLjM3LDkgOS4zOCw5LjMgOCwxMEM2LjY2LDEwLjcxIDYuMzUsMTEuNTcgNiwxMi41Nkw0LDE4QzMuNjgsMTkuMzUgNi4zNiwyMC40NCA4LjExLDIxLjE5VjE5QzguMTEsMTguMDUgOC45NywxNy4zOCAxMC42OSwxNi45N0MxMC44NSwxNi45MyAxMSwxNi45MSAxMS4xMiwxNi44OUMxMC41OCwxNi4wNyAxMC4zNiwxNS4zNCAxMC4zNCwxNS4yOEwxMi4xMSwxNC42OEMxMi4xMiwxNC43IDEyLjYzLDE2LjI3IDEzLjg0LDE3LjA2QzE0LjA1LDE3LjEzIDE0LjI2LDE3LjIxIDE0LjQ2LDE3LjNDMTUuMjMsMTcuNjQgMTUuNjksMTguMDggMTUuODQsMTguNjFDMTQuNSwxOS4xNCAxMy4yMiwxOS40MSAxMiwxOS40MUwxMSwxOS4zMVYyMS45NEwxMiwyMkMxMy4zNywyMiAxNC42NywyMS43MiAxNS44OSwyMS4xOUMxNy42NCwyMC40NCAyMC4yNSwxOS4xMyAyMCwxOE0xNS41LDE3QTEuNSwxLjUgMCAwLDEgMTQsMTUuNUExLjUsMS41IDAgMCwxIDE1LjUsMTRBMS41LDEuNSAwIDAsMSAxNywxNS41QTEuNSwxLjUgMCAwLDEgMTUuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3Rpb24gPSBcIk03IDEzSDNDMi40NSAxMyAyIDEyLjU1IDIgMTJTMi40NSAxMSAzIDExSDdDNy41NSAxMSA4IDExLjQ1IDggMTJTNy41NSAxMyA3IDEzTTYgOEM2IDcuNDUgNS41NSA3IDUgN0g0QzMuNDUgNyAzIDcuNDUgMyA4UzMuNDUgOSA0IDlINUM1LjU1IDkgNiA4LjU1IDYgOE0yMiAxMkMyMiAxNC43NiAxOS43NiAxNyAxNyAxN0g0QzMuNDUgMTcgMyAxNi41NSAzIDE2UzMuNDUgMTUgNCAxNUgxM0MxMi41OCAxNC40MiAxMi4yNSAxMy43NCAxMi4xIDEzSDEwQzkuNDUgMTMgOSAxMi41NSA5IDEyUzkuNDUgMTEgMTAgMTFIMTIuMUMxMi4yNSAxMC4yNiAxMi41OCA5LjU4IDEzIDlIOEM3LjQ1IDkgNyA4LjU1IDcgOFM3LjQ1IDcgOCA3SDE3QzE5Ljc2IDcgMjIgOS4yNCAyMiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3Rpb25PdXRsaW5lID0gXCJNNyAxM0gzQzIuNDUgMTMgMiAxMi41NSAyIDEyUzIuNDUgMTEgMyAxMUg3QzcuNTUgMTEgOCAxMS40NSA4IDEyUzcuNTUgMTMgNyAxM002IDhDNiA3LjQ1IDUuNTUgNyA1IDdINEMzLjQ1IDcgMyA3LjQ1IDMgOFMzLjQ1IDkgNCA5SDVDNS41NSA5IDYgOC41NSA2IDhNMjIgMTJDMjIgMTQuNzYgMTkuNzYgMTcgMTcgMTdINEMzLjQ1IDE3IDMgMTYuNTUgMyAxNlMzLjQ1IDE1IDQgMTVIMTNDMTIuNTggMTQuNDIgMTIuMjUgMTMuNzQgMTIuMSAxM0gxMEM5LjQ1IDEzIDkgMTIuNTUgOSAxMlM5LjQ1IDExIDEwIDExSDEyLjFDMTIuMjUgMTAuMjYgMTIuNTggOS41OCAxMyA5SDhDNy40NSA5IDcgOC41NSA3IDhTNy40NSA3IDggN0gxN0MxOS43NiA3IDIyIDkuMjQgMjIgMTJNMjAgMTJDMjAgMTAuMzUgMTguNjUgOSAxNyA5UzE0IDEwLjM1IDE0IDEyQzE0IDEzLjY1IDE1LjM1IDE1IDE3IDE1UzIwIDEzLjY1IDIwIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdGlvblBhdXNlID0gXCJNMjIgMTJDMjIgNi40NiAxNy41NCAyIDEyIDJDMTAuODMgMiA5LjcgMi4xOSA4LjYyIDIuNTZMOS4zMiA0LjVDMTAuMTcgNC4xNiAxMS4wNiAzLjk3IDEyIDMuOTdDMTYuNDEgMy45NyAyMC4wMyA3LjU5IDIwLjAzIDEyQzIwLjAzIDE2LjQxIDE2LjQxIDIwLjAzIDEyIDIwLjAzQzcuNTkgMjAuMDMgMy45NyAxNi40MSAzLjk3IDEyQzMuOTcgMTEuMDYgNC4xNiAxMC4xMiA0LjUgOS4yOEwyLjU2IDguNjJDMi4xOSA5LjcgMiAxMC44MyAyIDEyQzIgMTcuNTQgNi40NiAyMiAxMiAyMkMxNy41NCAyMiAyMiAxNy41NCAyMiAxMk01LjQ3IDMuOTdDNi4zMiAzLjk3IDcgNC42OCA3IDUuNDdDNyA2LjMyIDYuMzIgNyA1LjQ3IDdDNC42OCA3IDMuOTcgNi4zMiAzLjk3IDUuNDdDMy45NyA0LjY4IDQuNjggMy45NyA1LjQ3IDMuOTdNMTggMTJDMTggOC42NyAxNS4zMyA2IDEyIDZDOC42NyA2IDYgOC42NyA2IDEyQzYgMTUuMzMgOC42NyAxOCAxMiAxOEMxNS4zMyAxOCAxOCAxNS4zMyAxOCAxMk0xMSA5VjE1SDlWOU0xNSA5VjE1SDEzVjlcIjtcclxuZXhwb3J0IHZhciBtZGlNb3Rpb25QYXVzZU91dGxpbmUgPSBcIk0yMiAxMkMyMiA2LjQ2IDE3LjU0IDIgMTIgMkMxMC44MyAyIDkuNyAyLjE5IDguNjIgMi41Nkw5LjMyIDQuNUMxMC4xNyA0LjE2IDExLjA2IDMuOTcgMTIgMy45N0MxNi40MSAzLjk3IDIwLjAzIDcuNTkgMjAuMDMgMTJDMjAuMDMgMTYuNDEgMTYuNDEgMjAuMDMgMTIgMjAuMDNDNy41OSAyMC4wMyAzLjk3IDE2LjQxIDMuOTcgMTJDMy45NyAxMS4wNiA0LjE2IDEwLjEyIDQuNSA5LjI4TDIuNTYgOC42MkMyLjE5IDkuNyAyIDEwLjgzIDIgMTJDMiAxNy41NCA2LjQ2IDIyIDEyIDIyQzE3LjU0IDIyIDIyIDE3LjU0IDIyIDEyTTUuNDcgN0M0LjY4IDcgMy45NyA2LjMyIDMuOTcgNS40N0MzLjk3IDQuNjggNC42OCAzLjk3IDUuNDcgMy45N0M2LjMyIDMuOTcgNyA0LjY4IDcgNS40N0M3IDYuMzIgNi4zMiA3IDUuNDcgN005IDlIMTFWMTVIOU0xMyA5SDE1VjE1SDEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW90aW9uUGxheSA9IFwiTTIyIDEyQzIyIDYuNDYgMTcuNTQgMiAxMiAyQzEwLjgzIDIgOS43IDIuMTkgOC42MiAyLjU2TDkuMzIgNC41QzEwLjE3IDQuMTYgMTEuMDYgMy45NyAxMiAzLjk3QzE2LjQxIDMuOTcgMjAuMDMgNy41OSAyMC4wMyAxMkMyMC4wMyAxNi40MSAxNi40MSAyMC4wMyAxMiAyMC4wM0M3LjU5IDIwLjAzIDMuOTcgMTYuNDEgMy45NyAxMkMzLjk3IDExLjA2IDQuMTYgMTAuMTIgNC41IDkuMjhMMi41NiA4LjYyQzIuMTkgOS43IDIgMTAuODMgMiAxMkMyIDE3LjU0IDYuNDYgMjIgMTIgMjJDMTcuNTQgMjIgMjIgMTcuNTQgMjIgMTJNNS40NyAzLjk3QzYuMzIgMy45NyA3IDQuNjggNyA1LjQ3QzcgNi4zMiA2LjMyIDcgNS40NyA3QzQuNjggNyAzLjk3IDYuMzIgMy45NyA1LjQ3QzMuOTcgNC42OCA0LjY4IDMuOTcgNS40NyAzLjk3TTE4IDEyQzE4IDguNjcgMTUuMzMgNiAxMiA2QzguNjcgNiA2IDguNjcgNiAxMkM2IDE1LjMzIDguNjcgMTggMTIgMThDMTUuMzMgMTggMTggMTUuMzMgMTggMTJNMTUgMTJMMTAgMTVWOVwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdGlvblBsYXlPdXRsaW5lID0gXCJNMTAgMTYuNUwxNiAxMkwxMCA3LjVNMjIgMTJDMjIgNi40NiAxNy41NCAyIDEyIDJDMTAuODMgMiA5LjcgMi4xOSA4LjYyIDIuNTZMOS4zMiA0LjVDMTAuMTcgNC4xNiAxMS4wNiAzLjk3IDEyIDMuOTdDMTYuNDEgMy45NyAyMC4wMyA3LjU5IDIwLjAzIDEyQzIwLjAzIDE2LjQxIDE2LjQxIDIwLjAzIDEyIDIwLjAzQzcuNTkgMjAuMDMgMy45NyAxNi40MSAzLjk3IDEyQzMuOTcgMTEuMDYgNC4xNiAxMC4xMiA0LjUgOS4yOEwyLjU2IDguNjJDMi4xOSA5LjcgMiAxMC44MyAyIDEyQzIgMTcuNTQgNi40NiAyMiAxMiAyMkMxNy41NCAyMiAyMiAxNy41NCAyMiAxMk01LjQ3IDMuOTdDNi4zMiAzLjk3IDcgNC42OCA3IDUuNDdDNyA2LjMyIDYuMzIgNyA1LjQ3IDdDNC42OCA3IDMuOTcgNi4zMiAzLjk3IDUuNDdDMy45NyA0LjY4IDQuNjggMy45NyA1LjQ3IDMuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW90aW9uU2Vuc29yID0gXCJNMTAsMC4yQzksMC4yIDguMiwxIDguMiwyQzguMiwzIDksMy44IDEwLDMuOEMxMSwzLjggMTEuOCwzIDExLjgsMkMxMS44LDEgMTEsMC4yIDEwLDAuMk0xNS42NywxQTcuMzMsNy4zMyAwIDAsMCAyMyw4LjMzVjdBNiw2IDAgMCwxIDE3LDFIMTUuNjdNMTguMzMsMUMxOC4zMywzLjU4IDIwLjQyLDUuNjcgMjMsNS42N1Y0LjMzQzIxLjE2LDQuMzMgMTkuNjcsMi44NCAxOS42NywxSDE4LjMzTTIxLDFBMiwyIDAgMCwwIDIzLDNWMUgyMU03LjkyLDQuMDNDNy43NSw0LjAzIDcuNTgsNC4wNiA3LjQyLDQuMTFMMiw1LjhWMTFIMy44VjcuMzNMNS45MSw2LjY3TDIsMjJIMy44TDYuNjcsMTMuODlMOSwxN1YyMkgxMC44VjE1LjU5TDguMzEsMTEuMDVMOS4wNCw4LjE4TDEwLjEyLDEwSDE1VjguMkgxMS4zOEw5LjM4LDQuODdDOS4wOCw0LjM3IDguNTQsNC4wMyA3LjkyLDQuMDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW90aW9uU2Vuc29yT2ZmID0gXCJNMTEuNCA4LjJIMTVWMTBIMTMuMkwxMS40IDguMk0xOS42NyAxSDE4LjMzQzE4LjMzIDMuNTggMjAuNDIgNS42NyAyMyA1LjY3VjQuMzNDMjEuMTYgNC4zMyAxOS42NyAyLjg0IDE5LjY3IDFNMjEgMUMyMSAyLjExIDIxLjkgMyAyMyAzVjFIMjFNMTcgMUgxNS42N0MxNS42NyA1LjA1IDE4Ljk1IDguMzMgMjMgOC4zM1Y3QzE5LjY5IDcgMTcgNC4zMSAxNyAxTTEwIDMuOEMxMSAzLjggMTEuOCAzIDExLjggMlMxMSAuMiAxMCAuMiA4LjIgMSA4LjIgMiA5IDMuOCAxMCAzLjhNMi4zOSAxLjczTDEuMTEgM0wzLjQ2IDUuMzVMMiA1LjhWMTFIMy44VjcuMzNMNS4wNSA2Ljk0TDUuNjggNy41N0wyIDIySDMuOEw2LjY3IDEzLjg5TDkgMTdWMjJIMTAuOFYxNS41OUw4LjMxIDExLjA1TDguNSAxMC4zN0wyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNOS4zOCA0Ljg3QzkuMDggNC4zNyA4LjU0IDQuMDMgNy45MiA0LjAzQzcuNzUgNC4wMyA3LjU4IDQuMDYgNy40MiA0LjExTDcuMzQgNC4xNEwxMS4zNSA4LjE1TDkuMzggNC44N1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3RvcmJpa2UgPSBcIk0xNy40MiwxMEwxMy40MSw2SDlWOEgxMi41OUwxNC41OSwxMEg2LjVDNCwxMCAyLDEyIDIsMTQuNUMyLDE3IDQsMTkgNi41LDE5QzguNzIsMTkgMTAuNTYsMTcuMzggMTAuOTIsMTUuMjdMMTMuMDQsMTRDMTMsMTQuMTcgMTMsMTQuMzMgMTMsMTQuNUMxMywxNyAxNSwxOSAxNy41LDE5QzIwLDE5IDIyLDE3IDIyLDE0LjVDMjIsMTIgMjAsMTAgMTcuNSwxME04Ljg0LDE1LjI2QzguNSwxNi4yNyA3LjU4LDE3IDYuNDcsMTdDNS4wOSwxNyAzLjk3LDE1Ljg4IDMuOTcsMTQuNUMzLjk3LDEzLjEyIDUuMDksMTIgNi40NywxMkM3LjU5LDEyIDguNSwxMi43NCA4Ljg0LDEzLjc1SDZWMTUuMjVMOC44NCwxNS4yNk0xNy40NywxN0MxNi4wOSwxNyAxNC45NywxNS44OCAxNC45NywxNC41QzE0Ljk3LDEzLjEyIDE2LjA5LDEyIDE3LjQ3LDEyQTIuNSwyLjUgMCAwLDEgMTkuOTcsMTQuNUEyLjUsMi41IDAgMCwxIDE3LjQ3LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdG9yYmlrZUVsZWN0cmljID0gXCJNMTcuNDIgOEwxMy40MSA0SDlWNkgxMi41OUwxNC41OSA4SDYuNUM0IDggMiAxMCAyIDEyLjVTNCAxNyA2LjUgMTdDOC43MiAxNyAxMC41NiAxNS4zOCAxMC45MiAxMy4yN0wxMy4wNCAxMkMxMyAxMi4xNyAxMyAxMi4zMyAxMyAxMi41QzEzIDE1IDE1IDE3IDE3LjUgMTdTMjIgMTUgMjIgMTIuNSAyMCA4IDE3LjUgOE04Ljg0IDEzLjI2QzguNSAxNC4yNyA3LjU4IDE1IDYuNDcgMTVDNS4wOSAxNSAzLjk3IDEzLjg4IDMuOTcgMTIuNVM1LjA5IDEwIDYuNDcgMTBDNy41OSAxMCA4LjUgMTAuNzQgOC44NCAxMS43NUg2VjEzLjI1TDguODQgMTMuMjZNMTcuNDcgMTVDMTYuMDkgMTUgMTQuOTcgMTMuODggMTQuOTcgMTIuNVMxNi4wOSAxMCAxNy40NyAxMEMxOC44NSAxMCAxOS45NyAxMS4xMiAxOS45NyAxMi41UzE4Ljg1IDE1IDE3LjQ3IDE1TTExIDIwSDdMMTMgMjNWMjFIMTdMMTEgMThWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW91c2UgPSBcIk0xMSwxLjA3QzcuMDUsMS41NiA0LDQuOTIgNCw5SDExTTQsMTVBOCw4IDAgMCwwIDEyLDIzQTgsOCAwIDAsMCAyMCwxNVYxMUg0TTEzLDEuMDdWOUgyMEMyMCw0LjkyIDE2Ljk0LDEuNTYgMTMsMS4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZUJsdWV0b290aCA9IFwiTTIwLDdIMjAuNUwyMy4zNSw5Ljg1TDIxLjIxLDEyTDIzLjM1LDE0LjE0TDIwLjUsMTdIMjBWMTMuMjFMMTcuNzEsMTUuNUwxNywxNC43OUwxOS43OSwxMkwxNyw5LjIxTDE3LjcxLDguNUwyMCwxMC43OVY3TTIxLDguOTFWMTAuNzlMMjEuOTQsOS44NUwyMSw4LjkxTTIxLDEzLjIxVjE1LjA4TDIxLjk0LDE0LjE0TDIxLDEzLjIxTTE1LDlWMTBIOVYyLjA3QzEyLjM5LDIuNTYgMTUsNS40NyAxNSw5TTEsMTBWOUMxLDUuNDcgMy42MSwyLjU2IDcsMi4wN1YxMEgxTTE1LDE1QTcsNyAwIDAsMSA4LDIyQTcsNyAwIDAsMSAxLDE1VjEySDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdXNlTW92ZURvd24gPSBcIk03IDlIMkMyIDYuMDQgNC4xNyAzLjU3IDcgMy4wOVY5TTIwIDdIMThWMTNIMTVMMTkgMTdMMjMgMTNIMjBWN005IDMuMDlWOUgxNEMxNCA2LjA0IDExLjgzIDMuNTcgOSAzLjA5TTIgMTVDMiAxOC4zIDQuNyAyMSA4IDIxUzE0IDE4LjMgMTQgMTVWMTFIMlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZU1vdmVVcCA9IFwiTTcgOUgyQzIgNi4wNCA0LjE3IDMuNTcgNyAzLjA5VjlNMTggMTdIMjBWMTFIMjNMMTkgN0wxNSAxMUgxOFYxN005IDMuMDlWOUgxNEMxNCA2LjA0IDExLjgzIDMuNTcgOSAzLjA5TTIgMTVDMiAxOC4zIDQuNyAyMSA4IDIxUzE0IDE4LjMgMTQgMTVWMTFIMlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZU1vdmVWZXJ0aWNhbCA9IFwiTTIwIDZIMjNMMTkgMkwxNSA2SDE4VjE4SDE1TDE5IDIyTDIzIDE4SDIwVjZNOSAzLjA5QzExLjgzIDMuNTcgMTQgNi4wNCAxNCA5SDlWMy4wOU0xNCAxMVYxNUMxNCAxOC4zIDExLjMgMjEgOCAyMVMyIDE4LjMgMiAxNVYxMUgxNE03IDlIMkMyIDYuMDQgNC4xNyAzLjU3IDcgMy4wOVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdXNlT2ZmID0gXCJNMiw1LjI3TDMuMjgsNEwyMCwyMC43MkwxOC43MywyMkwxNy41LDIwLjc5QzE2LjA4LDIyLjE2IDE0LjE0LDIzIDEyLDIzQTgsOCAwIDAsMSA0LDE1VjExSDcuNzNMNS43Myw5SDRDNCw4LjQ2IDQuMDUsNy45MyA0LjE1LDcuNDJMMiw1LjI3TTExLDEuMDdWOUgxMC44Mkw1Ljc5LDMuOTZDNy4wNSwyLjQgOC45LDEuMzMgMTEsMS4wN00yMCwxMVYxNUMyMCwxNS45NSAxOS44MywxNi44NiAxOS41MywxNy43MUwxMi44MiwxMUgyME0xMywxLjA3QzE2Ljk0LDEuNTYgMjAsNC45MiAyMCw5SDEzVjEuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW91c2VWYXJpYW50ID0gXCJNMTQsN0gxMFYyLjFDMTIuMjgsMi41NiAxNCw0LjU4IDE0LDdNNCw3QzQsNC41OCA1LjcyLDIuNTYgOCwyLjFWN0g0TTE0LDEyQzE0LDE0LjQyIDEyLjI4LDE2LjQ0IDEwLDE2LjlWMThBMywzIDAgMCwwIDEzLDIxQTMsMyAwIDAsMCAxNiwxOFYxM0E0LDQgMCAwLDEgMjAsOUgyMkwyMSwxMEwyMiwxMUgyMEEyLDIgMCAwLDAgMTgsMTNIMThWMThBNSw1IDAgMCwxIDEzLDIzQTUsNSAwIDAsMSA4LDE4VjE2LjlDNS43MiwxNi40NCA0LDE0LjQyIDQsMTJWOUgxNFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3VzZVZhcmlhbnRPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDE3LjI5LDIwLjU2QzE2LjQyLDIyIDE0LjgyLDIzIDEzLDIzQTUsNSAwIDAsMSA4LDE4VjE2LjlDNS43MiwxNi40NCA0LDE0LjQyIDQsMTJWOUg1LjczTDIsNS4yN00xNCw3SDEwVjIuMUMxMi4yOCwyLjU2IDE0LDQuNTggMTQsN004LDIuMVY2LjE4TDUuMzgsMy41NUM2LjA3LDIuODMgNywyLjMxIDgsMi4xTTE0LDEyVjEyLjE3TDEwLjgyLDlIMTRWMTJNMTAsMTYuOVYxOEEzLDMgMCAwLDAgMTMsMjFDMTQuMjgsMjEgMTUuMzcsMjAuMiAxNS44LDE5LjA3TDEyLjQsMTUuNjdDMTEuNzQsMTYuMjggMTAuOTIsMTYuNzEgMTAsMTYuOU0xNiwxM0E0LDQgMCAwLDEgMjAsOUgyMkwyMSwxMEwyMiwxMUgyMEEyLDIgMCAwLDAgMTgsMTNWMTYuMThMMTYsMTQuMThWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92ZVJlc2l6ZSA9IFwiTTksMVYySDEwVjVIOVY2SDEyVjVIMTFWMkgxMlYxTTksN0M3Ljg5LDcgNyw3Ljg5IDcsOVYyMUM3LDIyLjExIDcuODksMjMgOSwyM0gyMUMyMi4xMSwyMyAyMywyMi4xMSAyMywyMVY5QzIzLDcuODkgMjIuMTEsNyAyMSw3TTEsOVYxMkgyVjExSDVWMTJINlY5SDVWMTBIMlY5TTksOUgyMVYyMUg5TTE0LDEwVjExSDE1VjE2SDExVjE1SDEwVjE4SDExVjE3SDE1VjE5SDE0VjIwSDE3VjE5SDE2VjE3SDE5VjE4SDIwVjE1SDE5VjE2SDE2VjExSDE3VjEwXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92ZVJlc2l6ZVZhcmlhbnQgPSBcIk0xLjg4LDAuNDZMMC40NiwxLjg4TDUuNTksN0gyVjlIOVYySDdWNS41OU0xMSw3VjlIMjFWMTVIMjNWOUEyLDIgMCAwLDAgMjEsN003LDExVjIxQTIsMiAwIDAsMCA5LDIzSDE1VjIxSDlWMTFNMTUuODgsMTQuNDZMMTQuNDYsMTUuODhMMTkuNiwyMUgxN1YyM0gyM1YxN0gyMVYxOS41OVwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllID0gXCJNMTgsNEwyMCw4SDE3TDE1LDRIMTNMMTUsOEgxMkwxMCw0SDhMMTAsOEg3TDUsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjRIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVDaGVjayA9IFwiTTEzIDE5QzEzIDE5LjM0IDEzLjA0IDE5LjY3IDEzLjA5IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIxLjM0IDE1Ljg0TDE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVDaGVja091dGxpbmUgPSBcIk0xMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjgxQzIxLjM5IDEzLjQ2IDIwLjcyIDEzLjIyIDIwIDEzLjA5VjEwSDUuNzZMNCA2LjQ3VjE4SDEzLjA5QzEzLjA0IDE4LjMzIDEzIDE4LjY2IDEzIDE5TTIxLjM0IDE1Ljg0TDE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVDb2cgPSBcIk0xMiAxOUMxMiAxOS4zNCAxMi4wMyAxOS42NyAxMi4wOCAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEyLjY4QzIxLjA5IDEyLjI1IDIwLjA4IDEyIDE5IDEyQzE1LjEzIDEyIDEyIDE1LjEzIDEyIDE5TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllQ29nT3V0bGluZSA9IFwiTTEyIDE5QzEyIDE5LjM0IDEyLjAzIDE5LjY3IDEyLjA4IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTIuNjhDMjEuMzggMTIuMzkgMjAuNzEgMTIuMTggMjAgMTIuMDhWMTBINS43Nkw0IDYuNDdWMThIMTIuMDhDMTIuMDMgMTguMzMgMTIgMTguNjYgMTIgMTlNMjMuOCAyMC40QzIzLjkgMjAuNCAyMy45IDIwLjUgMjMuOCAyMC42TDIyLjggMjIuM0MyMi43IDIyLjQgMjIuNiAyMi40IDIyLjUgMjIuNEwyMS4zIDIyQzIxIDIyLjIgMjAuOCAyMi4zIDIwLjUgMjIuNUwyMC4zIDIzLjhDMjAuMyAyMy45IDIwLjIgMjQgMjAuMSAyNEgxOC4xQzE4IDI0IDE3LjkgMjMuOSAxNy44IDIzLjhMMTcuNiAyMi41QzE3LjMgMjIuNCAxNyAyMi4yIDE2LjggMjJMMTUuNiAyMi41QzE1LjUgMjIuNSAxNS40IDIyLjUgMTUuMyAyMi40TDE0LjMgMjAuN0MxNC4yIDIwLjYgMTQuMyAyMC41IDE0LjQgMjAuNEwxNS41IDE5LjZWMTguNkwxNC40IDE3LjhDMTQuMyAxNy43IDE0LjMgMTcuNiAxNC4zIDE3LjVMMTUuMyAxNS44QzE1LjQgMTUuNyAxNS41IDE1LjcgMTUuNiAxNS43TDE2LjggMTYuMkMxNy4xIDE2IDE3LjMgMTUuOSAxNy42IDE1LjdMMTcuOCAxNC40QzE3LjggMTQuMyAxNy45IDE0LjIgMTguMSAxNC4ySDIwLjFDMjAuMiAxNC4yIDIwLjMgMTQuMyAyMC4zIDE0LjRMMjAuNSAxNS43QzIwLjggMTUuOCAyMS4xIDE2IDIxLjQgMTYuMkwyMi42IDE1LjdDMjIuNyAxNS43IDIyLjkgMTUuNyAyMi45IDE1LjhMMjMuOSAxNy41QzI0IDE3LjYgMjMuOSAxNy43IDIzLjggMTcuOEwyMi43IDE4LjZWMTkuNkwyMy44IDIwLjRNMjAuNSAxOUMyMC41IDE4LjIgMTkuOCAxNy41IDE5IDE3LjVTMTcuNSAxOC4yIDE3LjUgMTkgMTguMiAyMC41IDE5IDIwLjUgMjAuNSAxOS44IDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVFZGl0ID0gXCJNMjEuMDQgMTEuMTNDMjAuOSAxMS4xMyAyMC43NiAxMS4xOSAyMC42NSAxMS4zTDE5LjY1IDEyLjNMMjEuNyAxNC4zNUwyMi43IDEzLjM1QzIyLjkyIDEzLjE0IDIyLjkyIDEyLjc5IDIyLjcgMTIuNThMMjEuNDIgMTEuM0MyMS4zMSAxMS4xOSAyMS4xOCAxMS4xMyAyMS4wNCAxMS4xM00xOS4wNyAxMi44OEwxMyAxOC45NFYyMUgxNS4wNkwyMS4xMiAxNC45M0wxOS4wNyAxMi44OE0xMSAyMEgzQzEuOSAyMCAxIDE5LjExIDEgMThWNkMxIDQuODkgMS45IDQgMyA0SDRMNiA4SDlMNyA0SDlMMTEgOEgxNEwxMiA0SDE0TDE2IDhIMTlMMTcgNEgyMVY4LjEyTDExIDE4LjExVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllRWRpdE91dGxpbmUgPSBcIk0yMSA0VjguMTJMMTkuMTIgMTBINC43NkwzIDYuNDdWMThIMTFWMjBIM0MxLjkgMjAgMSAxOS4xMSAxIDE4VjZDMSA0Ljg5IDEuOSA0IDMgNEg0TDYgOEg5TDcgNEg5TDExIDhIMTRMMTIgNEgxNEwxNiA4SDE5TDE3IDRIMjFNMjEuNDIgMTIuM0wyMi43IDEzLjU4QzIyLjkyIDEzLjc5IDIyLjkyIDE0LjE0IDIyLjcgMTQuMzVMMjEuNyAxNS4zNUwxOS42NSAxMy4zTDIwLjY1IDEyLjNDMjAuNzYgMTIuMTkgMjAuOSAxMi4xMyAyMS4wNCAxMi4xM0MyMS4xOCAxMi4xMyAyMS4zMSAxMi4xOSAyMS40MiAxMi4zTTIxLjEyIDE1LjkzTDE1LjA2IDIySDEzVjE5Ljk0TDE5LjA3IDEzLjg4TDIxLjEyIDE1LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllRmlsdGVyID0gXCJNMTggNEwyMCA3SDE3TDE1IDRIMTNMMTUgN0gxMkwxMCA0SDhMMTAgN0g3TDUgNEg0QzIuOSA0IDIgNC45IDIgNkwyIDE4QzIgMTkuMSAyLjkgMjAgNCAyMEgyMEMyMS4xIDIwIDIyIDE5LjEgMjIgMThWNEgxOE0xMS4yNSAxNS4yNUwxMCAxOEw4Ljc1IDE1LjI1TDYgMTRMOC43NSAxMi43NUwxMCAxMEwxMS4yNSAxMi43NUwxNCAxNEwxMS4yNSAxNS4yNU0xNi45NCAxMS45NEwxNiAxNEwxNS4wNiAxMS45NEwxMyAxMUwxNS4wNiAxMC4wNkwxNiA4TDE2Ljk0IDEwLjA2TDE5IDExTDE2Ljk0IDExLjk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllRmlsdGVyT3V0bGluZSA9IFwiTTEwIDExTDkuMDYgMTMuMDZMNyAxNEw5LjA2IDE0Ljk0TDEwIDE3TDEwLjk0IDE0Ljk0TDEzIDE0TDEwLjk0IDEzLjA2TTE4IDRMMjAgOEgxN0wxNSA0SDEzTDE1IDhIMTJMMTAgNEg4TDEwIDhIN0w1IDRINEMyLjkxIDQgMiA0LjkgMiA2TDIgMThDMiAxOS4xIDIuOTEgMjAgNCAyMEgyMEMyMS4xMSAyMCAyMiAxOS4xIDIyIDE4VjRIMThNMjAgMThINFY2LjQ3TDUuNzcgMTBIMTZMMTUuMzcgMTEuMzdMMTQgMTJMMTUuMzcgMTIuNjNMMTYgMTRMMTYuNjMgMTIuNjNMMTggMTJMMTYuNjMgMTEuMzdMMTYgMTBIMjBWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVNaW51cyA9IFwiTTEzIDE5QzEzIDE5LjM0IDEzLjA0IDE5LjY3IDEzLjA5IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllTWludXNPdXRsaW5lID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMEg1Ljc2TDQgNi40N1YxOEgxMy4wOUMxMy4wNCAxOC4zMyAxMyAxOC42NiAxMyAxOU0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE4LjExIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNS40MiAyLjI1IDQuOSAyLjY1IDQuNTRMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0yMS44OCAxOC42OEMyMS45NiAxOC40NyAyMiAxOC4yNCAyMiAxOFY0SDE4TDIwIDhIMTdMMTUgNEgxM0wxNSA4SDEyTDEwIDRIOEw4LjggNS42TDIxLjg4IDE4LjY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT2ZmT3V0bGluZSA9IFwiTTIuMzkgMS43M0wxLjExIDNMMi42NSA0LjU0QzIuMjUgNC45IDIgNS40MiAyIDZWMThDMiAxOS4xMSAyLjkgMjAgNCAyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNNNCAxOFY2LjQ3TDUuNzYgMTBIOC4xMUwxNi4xMSAxOEg0TTguOCA1LjZMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMThDMjIgMTguMjQgMjEuOTYgMTguNDcgMjEuODggMTguNjhMMjAgMTYuOFYxMEgxMy4yTDguOCA1LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuID0gXCJNMjAuODQgMi4xOEwxNi45MSAyLjk2TDE5LjY1IDYuNUwyMS42MiA2LjFMMjAuODQgMi4xOE0xMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TDEzLjk3IDMuNTRNOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVMOS4wNyA0LjVNNC4xNiA1LjVMMy4xOCA1LjY5QTIgMiAwIDAgMCAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0yIDEwVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMjBDMjEuMTEgMjIgMjIgMjEuMTEgMjIgMjBWMTBIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5DaGVjayA9IFwiTTE5LjY1IDYuNUwxNi45MSAyLjk2TDIwLjg0IDIuMThMMjEuNjIgNi4xTDE5LjY1IDYuNU0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNMTkgMTNDMjAuMSAxMyAyMS4xMiAxMy4zIDIyIDEzLjgxVjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNNMTEuODEgOC4wNUw5LjA3IDQuNUw3LjEgNC45MUw5Ljg1IDguNDRMMTEuODEgOC4wNU00LjE2IDUuNUwzLjE4IDUuNjlDMi4xIDUuOTEgMS40IDYuOTYgMS42MSA4LjA0TDIgMTBMNi45IDkuMDNMNC4xNiA1LjVNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5DaGVja091dGxpbmUgPSBcIk0xNC43NSA3LjQ2TDEyIDMuOTNMMTMuOTcgMy41NEwxNi43MSA3LjA3TDE0Ljc1IDcuNDZNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTQgMjBWMTJIMjBWMTMuMDlDMjAuNzIgMTMuMjEgMjEuMzkgMTMuNDYgMjIgMTMuODFWMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDEzLjgxQzEzLjQ2IDIxLjM5IDEzLjIyIDIwLjcyIDEzLjA5IDIwSDRNMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNMMTYuMTYgMTcuODRMMTUgMTlMMTcuNzUgMjJMMjIuNSAxNy4yNUwyMS4zNCAxNS44NFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5Db2cgPSBcIk0xNC43NSA3LjQ2TDEyIDMuOTNMMTMuOTcgMy41NEwxNi43MSA3LjA3TDE0Ljc1IDcuNDZNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTE5IDEyQzIwLjA4IDEyIDIxLjA5IDEyLjI1IDIyIDEyLjY4VjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMi42OEMxMi4yNSAyMS4wOSAxMiAyMC4wOCAxMiAxOUMxMiAxNS4xMyAxNS4xMyAxMiAxOSAxMk0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0yMy44IDIwLjRDMjMuOSAyMC40IDIzLjkgMjAuNSAyMy44IDIwLjZMMjIuOCAyMi4zQzIyLjcgMjIuNCAyMi42IDIyLjQgMjIuNSAyMi40TDIxLjMgMjJDMjEgMjIuMiAyMC44IDIyLjMgMjAuNSAyMi41TDIwLjMgMjMuOEMyMC4zIDIzLjkgMjAuMiAyNCAyMC4xIDI0SDE4LjFDMTggMjQgMTcuOSAyMy45IDE3LjggMjMuOEwxNy42IDIyLjVDMTcuMyAyMi40IDE3IDIyLjIgMTYuOCAyMkwxNS42IDIyLjVDMTUuNSAyMi41IDE1LjQgMjIuNSAxNS4zIDIyLjRMMTQuMyAyMC43QzE0LjIgMjAuNiAxNC4zIDIwLjUgMTQuNCAyMC40TDE1LjUgMTkuNlYxOC42TDE0LjQgMTcuOEMxNC4zIDE3LjcgMTQuMyAxNy42IDE0LjMgMTcuNUwxNS4zIDE1LjhDMTUuNCAxNS43IDE1LjUgMTUuNyAxNS42IDE1LjdMMTYuOCAxNi4yQzE3LjEgMTYgMTcuMyAxNS45IDE3LjYgMTUuN0wxNy44IDE0LjRDMTcuOCAxNC4zIDE3LjkgMTQuMiAxOC4xIDE0LjJIMjAuMUMyMC4yIDE0LjIgMjAuMyAxNC4zIDIwLjMgMTQuNEwyMC41IDE1LjdDMjAuOCAxNS44IDIxLjEgMTYgMjEuNCAxNi4yTDIyLjYgMTUuN0MyMi43IDE1LjcgMjIuOSAxNS43IDIyLjkgMTUuOEwyMy45IDE3LjVDMjQgMTcuNiAyMy45IDE3LjcgMjMuOCAxNy44TDIyLjcgMTguNlYxOS42TDIzLjggMjAuNE0yMC41IDE5QzIwLjUgMTguMiAxOS44IDE3LjUgMTkgMTcuNVMxNy41IDE4LjIgMTcuNSAxOSAxOC4yIDIwLjUgMTkgMjAuNSAyMC41IDE5LjggMjAuNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5Db2dPdXRsaW5lID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45IDEuMzkgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU00IDIwVjEySDIwVjEyLjA4QzIwLjcxIDEyLjE4IDIxLjM4IDEyLjM5IDIyIDEyLjY5VjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMi42OEMxMi4zOSAyMS4zOCAxMi4xOCAyMC43MSAxMi4wOCAyMEg0TTIzLjggMjAuNEMyMy45IDIwLjQgMjMuOSAyMC41IDIzLjggMjAuNkwyMi44IDIyLjNDMjIuNyAyMi40IDIyLjYgMjIuNCAyMi41IDIyLjRMMjEuMyAyMkMyMSAyMi4yIDIwLjggMjIuMyAyMC41IDIyLjVMMjAuMyAyMy44QzIwLjMgMjMuOSAyMC4yIDI0IDIwLjEgMjRIMTguMUMxOCAyNCAxNy45IDIzLjkgMTcuOCAyMy44TDE3LjYgMjIuNUMxNy4zIDIyLjQgMTcgMjIuMiAxNi44IDIyTDE1LjYgMjIuNUMxNS41IDIyLjUgMTUuNCAyMi41IDE1LjMgMjIuNEwxNC4zIDIwLjdDMTQuMiAyMC42IDE0LjMgMjAuNSAxNC40IDIwLjRMMTUuNSAxOS42VjE4LjZMMTQuNCAxNy44QzE0LjMgMTcuNyAxNC4zIDE3LjYgMTQuMyAxNy41TDE1LjMgMTUuOEMxNS40IDE1LjcgMTUuNSAxNS43IDE1LjYgMTUuN0wxNi44IDE2LjJDMTcuMSAxNiAxNy4zIDE1LjkgMTcuNiAxNS43TDE3LjggMTQuNEMxNy44IDE0LjMgMTcuOSAxNC4yIDE4LjEgMTQuMkgyMC4xQzIwLjIgMTQuMiAyMC4zIDE0LjMgMjAuMyAxNC40TDIwLjUgMTUuN0MyMC44IDE1LjggMjEuMSAxNiAyMS40IDE2LjJMMjIuNiAxNS43QzIyLjcgMTUuNyAyMi45IDE1LjcgMjIuOSAxNS44TDIzLjkgMTcuNUMyNCAxNy42IDIzLjkgMTcuNyAyMy44IDE3LjhMMjIuNyAxOC42VjE5LjZMMjMuOCAyMC40TTIwLjUgMTlDMjAuNSAxOC4yIDE5LjggMTcuNSAxOSAxNy41UzE3LjUgMTguMiAxNy41IDE5IDE4LjIgMjAuNSAxOSAyMC41IDIwLjUgMTkuOCAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlbkVkaXQgPSBcIk0xOS42NSA2LjVMMTYuOTEgMi45NkwyMC44NCAyLjE4TDIxLjYyIDYuMUwxOS42NSA2LjVNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTIgMTBWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMVYxOS4xM0wyMC4xMyAxMEgyTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkxIDEuNCA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTEzIDE5Ljk2VjIySDE1LjA0TDIxLjE3IDE1Ljg4TDE5LjEzIDEzLjgzTDEzIDE5Ljk2TTIyLjg1IDEzLjQ3TDIxLjUzIDEyLjE1QzIxLjMzIDExLjk1IDIxIDExLjk1IDIwLjgxIDEyLjE1TDE5LjgzIDEzLjEzTDIxLjg3IDE1LjE3TDIyLjg1IDE0LjE5QzIzLjA1IDE0IDIzLjA1IDEzLjY3IDIyLjg1IDEzLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlbkVkaXRPdXRsaW5lID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU00IDEySDE4LjEzTDIwLjEzIDEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMVYyMEg0VjEyTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTEzIDE5Ljk2VjIySDE1LjA0TDIxLjE3IDE1Ljg4TDE5LjEzIDEzLjgzTDEzIDE5Ljk2TTIyLjg1IDEzLjQ3TDIxLjUzIDEyLjE1QzIxLjMzIDExLjk1IDIxIDExLjk1IDIwLjgxIDEyLjE1TDE5LjgzIDEzLjEzTDIxLjg3IDE1LjE3TDIyLjg1IDE0LjE5QzIzLjA1IDE0IDIzLjA1IDEzLjY3IDIyLjg1IDEzLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3Blbk1pbnVzID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xOSAxM0MyMC4xIDEzIDIxLjEyIDEzLjMgMjIgMTMuODFWMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM00xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5NaW51c091dGxpbmUgPSBcIk0xMy4wOSAyMEMxMy4yMSAyMC43MiAxMy40NiAyMS4zOSAxMy44MSAyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTBIMjJWMTMuODFDMjEuMzkgMTMuNDYgMjAuNzIgMTMuMjIgMjAgMTMuMDlWMTJINFYyMEgxMy4wOU0yMS42MiA2LjFMMjAuODQgMi4xOEwxNi45MSAyLjk2TDE5LjY1IDYuNUwyMS42MiA2LjFNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45IDEuMzkgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3Blbk9mZiA9IFwiTTEzLjIgMTBIMjJWMTguOEwxMy4yIDEwTTIxLjYgNi4xTDIwLjggMi4yTDE2LjkgM0wxOS42IDYuNUwyMS42IDYuMU0xMS44IDhMOS4xIDQuNUw3LjkgNC43TDExLjMgOC4xTDExLjggOE0yLjQgMS43TDEuMSAzTDMuNyA1LjZMMy4yIDUuN0MyLjEgNS45IDEuNCA3IDEuNiA4TDIgMTBMNy4xIDlMOC4xIDEwSDJWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDIwLjFMMjAuOCAyMi43TDIyLjEgMjEuNEwyLjQgMS43TTE2LjcgNy4xTDE0IDMuNUwxMiAzLjlMMTQuOCA3LjRMMTYuNyA3LjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuT2ZmT3V0bGluZSA9IFwiTTE5LjcgNi41TDE2LjkgM0wyMC44IDIuMkwyMS42IDYuMUwxOS43IDYuNU0yMi4xIDIxLjVMMjAuOCAyMi44TDIwLjEgMjJINEMyLjkgMjIgMiAyMS4xIDIgMjBWMTBIOC4xTDcuMSA5TDIgMTBMMS42IDhDMS40IDcgMi4xIDUuOSAzLjIgNS43TDMuNyA1LjZMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjVNMTguMSAyMEwxMC4xIDEySDRWMjBIMTguMU0yMiAxOC44VjEwSDEzLjJMMTUuMiAxMkgyMFYxNi44TDIyIDE4LjhNMTYuNyA3LjFMMTQgMy41TDEyIDMuOUwxNC44IDcuNEwxNi43IDcuMU0xMS44IDhMOS4xIDQuNUw3LjkgNC43TDExLjMgOC4xTDExLjggOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5PdXRsaW5lID0gXCJNMjAuODQgMi4xOEwxNi45MSAyLjk2TDE5LjY1IDYuNUwyMS42MiA2LjFMMjAuODQgMi4xOE0xMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TDEzLjk3IDMuNTRNOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVMOS4wNyA0LjVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTIwIDEyVjIwSDRWMTJIMjBNMjIgMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDIwQzIxLjExIDIyIDIyIDIxLjExIDIyIDIwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblBsYXkgPSBcIk0xNC43NSA3LjQ2TDEyIDMuOTNMMTMuOTcgMy41NEwxNi43MSA3LjA3TDE0Ljc1IDcuNDZNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTIgMTBWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMy44MUMxMy4zIDIxLjEyIDEzIDIwLjEgMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNDMjAuMSAxMyAyMS4xMiAxMy4zIDIyIDEzLjgxVjEwSDJNMTcgMjJMMjIgMTlMMTcgMTZWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuUGxheU91dGxpbmUgPSBcIk0yMiAxMFYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMkg0VjIwSDEzLjA5QzEzLjIxIDIwLjcyIDEzLjQ2IDIxLjM5IDEzLjgxIDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxMEgyMk0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNMjEuNjIgNi4xTDIwLjg0IDIuMThMMTYuOTEgMi45NkwxOS42NSA2LjVMMjEuNjIgNi4xTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTE3IDIyTDIyIDE5TDE3IDE2VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblBsdXMgPSBcIk0xOS42NSA2LjVMMTYuOTEgMi45NkwyMC44NCAyLjE4TDIxLjYyIDYuMUwxOS42NSA2LjVNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTE5IDEzQzIwLjEgMTMgMjEuMTIgMTMuMyAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkxIDEuNCA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblBsdXNPdXRsaW5lID0gXCJNMTQuNzUgNy40NkwxMiAzLjkzTDEzLjk3IDMuNTRMMTYuNzEgNy4wN0wxNC43NSA3LjQ2TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU00IDIwVjEySDIwVjEzLjA5QzIwLjcyIDEzLjIxIDIxLjM5IDEzLjQ2IDIyIDEzLjgxVjEwSDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxMy44MUMxMy40NiAyMS4zOSAxMy4yMiAyMC43MiAxMy4wOSAyMEg0TTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblJlbW92ZSA9IFwiTTE0Ljc1IDcuNDZMMTIgMy45M0wxMy45NyAzLjU0TDE2LjcxIDcuMDdMMTQuNzUgNy40Nk0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTIxLjYyIDYuMUwyMC44NCAyLjE4TDE2LjkxIDIuOTZMMTkuNjUgNi41TDIxLjYyIDYuMU0xOSAxM0MyMC4xIDEzIDIxLjEyIDEzLjMgMjIgMTMuODFWMTBIMlYyMEMyIDIxLjExIDIuOSAyMiA0IDIySDEzLjgxQzEzLjMgMjEuMTIgMTMgMjAuMSAxMyAxOUMxMyAxNS42OSAxNS42OSAxMyAxOSAxM000LjE2IDUuNUwzLjE4IDUuNjlDMi4xIDUuOTEgMS40IDYuOTYgMS42MSA4LjA0TDIgMTBMNi45IDkuMDNMNC4xNiA1LjVNMjIuNTQgMTYuODhMMjEuMTIgMTUuNDdMMTkgMTcuNTlMMTYuODggMTUuNDdMMTUuNDcgMTYuODhMMTcuNTkgMTlMMTUuNDcgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPcGVuUmVtb3ZlT3V0bGluZSA9IFwiTTE5LjY1IDYuNUwxNi45MSAyLjk2TDIwLjg0IDIuMThMMjEuNjIgNi4xTDE5LjY1IDYuNU0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNCAyMFYxMkgyMFYxMy4wOUMyMC43MiAxMy4yMSAyMS4zOSAxMy40NiAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINE0yMi41NCAxNi44OEwyMS4xMiAxNS40N0wxOSAxNy41OUwxNi44OCAxNS40N0wxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5TZXR0aW5ncyA9IFwiTTE0Ljc1IDUuNDZMMTIgMS45M0wxMy45NyAxLjU0TDE2LjcxIDUuMDdMMTQuNzUgNS40Nk0yMS42MiA0LjFMMjAuODQgLjE4TDE2LjkxIC45NkwxOS42NSA0LjVMMjEuNjIgNC4xTTExLjgxIDYuMDVMOS4wNyAyLjVMNy4xIDIuOTFMOS44NSA2LjQ0TDExLjgxIDYuMDVNMiA4VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMjBDMjEuMTEgMjAgMjIgMTkuMTEgMjIgMThWOEgyTTQuMTYgMy41TDMuMTggMy42OUMyLjEgMy45MSAxLjQgNC45NiAxLjYxIDYuMDRMMiA4TDYuOSA3LjAzTDQuMTYgMy41TTExIDI0SDEzVjIySDExVjI0TTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblNldHRpbmdzT3V0bGluZSA9IFwiTTE5LjY1IDQuNUwxNi45MSAuOTZMMjAuODQgLjE4TDIxLjYyIDQuMUwxOS42NSA0LjVNMTYuNzEgNS4wN0wxMy45NyAxLjU0TDEyIDEuOTNMMTQuNzUgNS40NkwxNi43MSA1LjA3TTExLjgxIDYuMDVMOS4wNyAyLjVMNy4xIDIuOTFMOS44NSA2LjQ0TDExLjgxIDYuMDVNNC4xNiAzLjVMMy4xOCAzLjY5QzIuMSAzLjkgMS4zOSA0Ljk2IDEuNjEgNi4wNEwyIDhMNi45IDcuMDNMNC4xNiAzLjVNMjIgOFYxOEMyMiAxOS4xMSAyMS4xMSAyMCAyMCAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWOEgyMk0yMCAxMEg0VjE4SDIwVjEwTTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0TTExIDI0SDEzVjIySDExVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllT3BlblN0YXIgPSBcIk0xOS42NSA2LjVMMTYuOTEgMi45NkwyMC44NCAyLjE4TDIxLjYyIDYuMUwxOS42NSA2LjVNMTYuNzEgNy4wN0wxMy45NyAzLjU0TDEyIDMuOTNMMTQuNzUgNy40NkwxNi43MSA3LjA3TTE5IDEzQzIwLjEgMTMgMjEuMTIgMTMuMyAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuMyAyMS4xMiAxMyAyMC4xIDEzIDE5QzEzIDE1LjY5IDE1LjY5IDEzIDE5IDEzTTQuMTYgNS41TDMuMTggNS42OUMyLjEgNS45MSAxLjQgNi45NiAxLjYxIDguMDRMMiAxMEw2LjkgOS4wM0w0LjE2IDUuNU0xMS44MSA4LjA1TDkuMDcgNC41TDcuMSA0LjkxTDkuODUgOC40NEwxMS44MSA4LjA1TTIzIDE3Ljg5TDIwLjExIDE3LjY0TDE5IDE1TDE3Ljg3IDE3LjY0TDE1IDE3Ljg5TDE3LjE4IDE5Ljc3TDE2LjUgMjIuNThMMTkgMjEuMDlMMjEuNDUgMjIuNThMMjAuOCAxOS43N0wyMyAxNy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZU9wZW5TdGFyT3V0bGluZSA9IFwiTTE5LjY1IDYuNUwxNi45MSAyLjk2TDIwLjg0IDIuMThMMjEuNjIgNi4xTDE5LjY1IDYuNU0xNi43MSA3LjA3TDEzLjk3IDMuNTRMMTIgMy45M0wxNC43NSA3LjQ2TDE2LjcxIDcuMDdNNC4xNiA1LjVMMy4xOCA1LjY5QzIuMSA1LjkgMS4zOSA2Ljk2IDEuNjEgOC4wNEwyIDEwTDYuOSA5LjAzTDQuMTYgNS41TTExLjgxIDguMDVMOS4wNyA0LjVMNy4xIDQuOTFMOS44NSA4LjQ0TDExLjgxIDguMDVNNCAyMFYxMkgyMFYxMy4wOUMyMC43MiAxMy4yMSAyMS4zOSAxMy40NiAyMiAxMy44MVYxMEgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTMuODFDMTMuNDYgMjEuMzkgMTMuMjIgMjAuNzIgMTMuMDkgMjBINE0yMyAxNy44OUwyMC4xMSAxNy42NEwxOSAxNUwxNy44NyAxNy42NEwxNSAxNy44OUwxNy4xOCAxOS43N0wxNi41IDIyLjU4TDE5IDIxLjA5TDIxLjQ1IDIyLjU4TDIwLjggMTkuNzdMMjMgMTcuODlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVPdXRsaW5lID0gXCJNNS43NiwxMEgyMFYxOEg0VjYuNDdNMjIsNEgxOEwyMCw4SDE3TDE1LDRIMTNMMTUsOEgxMkwxMCw0SDhMMTAsOEg3TDUsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVQbGF5ID0gXCJNMjIgNFYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMk0xNyAyMkwyMiAxOUwxNyAxNlYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZVBsYXlPdXRsaW5lID0gXCJNMjIgNFYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMEg1Ljc2TDQgNi40N1YxOEgxMy4wOUMxMy4wNCAxOC4zMyAxMyAxOC42NiAxMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyTTE3IDIyTDIyIDE5TDE3IDE2VjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllUGx1cyA9IFwiTTEzIDE5QzEzIDE5LjM0IDEzLjA0IDE5LjY3IDEzLjA5IDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllUGx1c091dGxpbmUgPSBcIk0xMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjgxQzIxLjM5IDEzLjQ2IDIwLjcyIDEzLjIyIDIwIDEzLjA5VjEwSDUuNzZMNCA2LjQ3VjE4SDEzLjA5QzEzLjA0IDE4LjMzIDEzIDE4LjY2IDEzIDE5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllUmVtb3ZlID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjIuNTQgMTYuODhMMjEuMTIgMTUuNDdMMTkgMTcuNTlMMTYuODggMTUuNDdMMTUuNDcgMTYuODhMMTcuNTkgMTlMMTUuNDcgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVSZW1vdmVPdXRsaW5lID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4zOSAxMy40NiAyMC43MiAxMy4yMiAyMCAxMy4wOVYxMEg1Ljc2TDQgNi40N1YxOEgxMy4wOUMxMy4wNCAxOC4zMyAxMyAxOC42NiAxMyAxOU0yMi41NCAxNi44OEwyMS4xMiAxNS40N0wxOSAxNy41OUwxNi44OCAxNS40N0wxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3ZpZVJvbGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTIuNSwyLjUgMCAwLDAgOS41LDYuNUEyLjUsMi41IDAgMCwwIDEyLDlBMi41LDIuNSAwIDAsMCAxNC41LDYuNUEyLjUsMi41IDAgMCwwIDEyLDRNNC40LDkuNTNDMy45NywxMC44NCA0LjY5LDEyLjI1IDYsMTIuNjhDNy4zMiwxMy4xIDguNzMsMTIuMzkgOS4xNSwxMS4wN0M5LjU4LDkuNzYgOC44Niw4LjM1IDcuNTUsNy45MkM2LjI0LDcuNSA0LjgyLDguMjEgNC40LDkuNTNNMTkuNjEsOS41QzE5LjE4LDguMjEgMTcuNzcsNy41IDE2LjQ2LDcuOTJDMTUuMTQsOC4zNCAxNC40Miw5Ljc1IDE0Ljg1LDExLjA3QzE1LjI4LDEyLjM4IDE2LjY5LDEzLjEgMTgsMTIuNjdDMTkuMzEsMTIuMjUgMjAuMDMsMTAuODMgMTkuNjEsOS41TTcuMzEsMTguNDZDOC40MiwxOS4yOCAxMCwxOS4wMyAxMC44LDE3LjkxQzExLjYxLDE2Ljc5IDExLjM2LDE1LjIzIDEwLjI0LDE0LjQyQzkuMTMsMTMuNjEgNy41NiwxMy44NiA2Ljc1LDE0Ljk3QzUuOTQsMTYuMDkgNi4xOSwxNy42NSA3LjMxLDE4LjQ2TTE2LjcsMTguNDZDMTcuODIsMTcuNjUgMTguMDcsMTYuMDkgMTcuMjYsMTQuOTdDMTYuNDUsMTMuODUgMTQuODgsMTMuNiAxMy43NywxNC40MkMxMi42NSwxNS4yMyAxMi40LDE2Ljc5IDEzLjIxLDE3LjkxQzE0LDE5LjAzIDE1LjU5LDE5LjI3IDE2LjcsMTguNDZNMTIsMTAuNUExLjUsMS41IDAgMCwwIDEwLjUsMTJBMS41LDEuNSAwIDAsMCAxMiwxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDEyLDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVTZWFyY2ggPSBcIk0xMS4wMyAyMEg0QzIuOSAyMCAyIDE5LjEgMiAxOEwyIDZDMiA0LjkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjA1QzIwLjg1IDExLjIyIDE4LjgyIDEwIDE2LjUgMTBDMTIuOTIgMTAgMTAgMTIuOTIgMTAgMTYuNUMxMCAxNy43OSAxMC4zOCAxOSAxMS4wMyAyME0yMy4zOSAyMkwyMiAyMy4zOUwxOC44OCAyMC4zMkMxOC4xOSAyMC43NSAxNy4zNyAyMSAxNi41IDIxQzE0IDIxIDEyIDE5IDEyIDE2LjVTMTQgMTIgMTYuNSAxMiAyMSAxNCAyMSAxNi41QzIxIDE3LjM4IDIwLjc1IDE4LjIxIDIwLjMxIDE4LjlMMjMuMzkgMjJNMTkgMTYuNUMxOSAxNS4xMiAxNy44OCAxNCAxNi41IDE0UzE0IDE1LjEyIDE0IDE2LjUgMTUuMTIgMTkgMTYuNSAxOSAxOSAxNy44OCAxOSAxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllU2VhcmNoT3V0bGluZSA9IFwiTTExIDIwSDRDMi45IDIwIDIgMTkuMSAyIDE4VjZDMiA0LjkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzQzIxLjUgMTIuMiAyMC44IDExLjUgMjAgMTFWMTBINS44TDQgNi41VjE4SDEwLjJDMTAuNCAxOC43IDEwLjYgMTkuNCAxMSAyME0yMC4zIDE4LjlDMjAuNyAxOC4yIDIxIDE3LjQgMjEgMTYuNUMyMSAxNCAxOSAxMiAxNi41IDEyUzEyIDE0IDEyIDE2LjUgMTQgMjEgMTYuNSAyMUMxNy40IDIxIDE4LjIgMjAuOCAxOC45IDIwLjNMMjIgMjMuNEwyMy40IDIyTDIwLjMgMTguOU0xNi41IDE5QzE1LjEgMTkgMTQgMTcuOSAxNCAxNi41UzE1LjEgMTQgMTYuNSAxNCAxOSAxNS4xIDE5IDE2LjUgMTcuOSAxOSAxNi41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllU2V0dGluZ3MgPSBcIk0yMiA0VjE4QzIyIDE5LjExIDIxLjExIDIwIDIwIDIwSDRDMi45IDIwIDIgMTkuMTEgMiAxOFY2QzIgNC44OSAyLjkgNCA0IDRINUw3IDhIMTBMOCA0SDEwTDEyIDhIMTVMMTMgNEgxNUwxNyA4SDIwTDE4IDRIMjJNNyAyNEg5VjIySDdWMjRNMTEgMjRIMTNWMjJIMTFWMjRNMTUgMjRIMTdWMjJIMTVWMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVTZXR0aW5nc091dGxpbmUgPSBcIk0xOCA0TDIwIDhIMTdMMTUgNEgxM0wxNSA4SDEyTDEwIDRIOEwxMCA4SDdMNSA0SDRDMi45IDQgMiA0Ljg5IDIgNlYxOEMyIDE5LjExIDIuOSAyMCA0IDIwSDIwQzIxLjExIDIwIDIyIDE5LjExIDIyIDE4VjRIMThNMjAgMThINFY2LjQ3TDUuNzYgMTBIMjBWMThNMTEgMjJIMTNWMjRIMTFWMjJNNyAyMkg5VjI0SDdWMjJNMTUgMjJIMTdWMjRIMTVWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTW92aWVTdGFyID0gXCJNMTMgMTlDMTMgMTkuMzQgMTMuMDQgMTkuNjcgMTMuMDkgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjZDMiA0Ljg5IDIuOSA0IDQgNEg1TDcgOEgxMEw4IDRIMTBMMTIgOEgxNUwxMyA0SDE1TDE3IDhIMjBMMTggNEgyMlYxMy44MUMyMS4xMiAxMy4zIDIwLjEgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlNMjMgMTcuODlMMjAuMTEgMTcuNjRMMTkgMTVMMTcuODcgMTcuNjRMMTUgMTcuODlMMTcuMTggMTkuNzdMMTYuNSAyMi41OEwxOSAyMS4wOUwyMS40NSAyMi41OEwyMC44IDE5Ljc3TDIzIDE3Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU1vdmllU3Rhck91dGxpbmUgPSBcIk0xMyAxOUMxMyAxOS4zNCAxMy4wNCAxOS42NyAxMy4wOSAyMEg0QzIuOSAyMCAyIDE5LjExIDIgMThWNkMyIDQuODkgMi45IDQgNCA0SDVMNyA4SDEwTDggNEgxMEwxMiA4SDE1TDEzIDRIMTVMMTcgOEgyMEwxOCA0SDIyVjEzLjgxQzIxLjM5IDEzLjQ2IDIwLjcyIDEzLjIyIDIwIDEzLjA5VjEwSDUuNzZMNCA2LjQ3VjE4SDEzLjA5QzEzLjA0IDE4LjMzIDEzIDE4LjY2IDEzIDE5TTIzIDE3Ljg5TDIwLjExIDE3LjY0TDE5IDE1TDE3Ljg3IDE3LjY0TDE1IDE3Ljg5TDE3LjE4IDE5Ljc3TDE2LjUgMjIuNThMMTkgMjEuMDlMMjEuNDUgMjIuNThMMjAuOCAxOS43N0wyMyAxNy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlNb3dlciA9IFwiTTE4LjUgMTRDMTcuNTUgMTQgMTYuNjkgMTQuMzggMTYuMDYgMTVIOS4zOUw1Ljc0IDNIMlY1SDQuMjZMNyAxNC4wNUM2Ljg1IDE0LjAzIDYuNjggMTQgNi41IDE0QzQuNTcgMTQgMyAxNS41NyAzIDE3LjVTNC41NyAyMSA2LjUgMjFDNy44OSAyMSA5LjA5IDIwLjE4IDkuNjUgMTlIMTUuMzVDMTUuOTEgMjAuMTggMTcuMTEgMjEgMTguNSAyMUMyMC40MyAyMSAyMiAxOS40MyAyMiAxNy41UzIwLjQzIDE0IDE4LjUgMTRNNi41IDE5QzUuNjcgMTkgNSAxOC4zMyA1IDE3LjVTNS42NyAxNiA2LjUgMTYgOCAxNi42NyA4IDE3LjUgNy4zMyAxOSA2LjUgMTlNMTguNSAxOUMxNy42NyAxOSAxNyAxOC4zMyAxNyAxNy41UzE3LjY3IDE2IDE4LjUgMTYgMjAgMTYuNjcgMjAgMTcuNSAxOS4zMyAxOSAxOC41IDE5TTEwLjEzIDE0TDkuNTMgMTJIMTIuNzZDMTMuNSAxMiAxNC4yMSAxMi40MyAxNC41NSAxMy4xMUwxNSAxNEgxMC4xM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNb3dlckJhZyA9IFwiTTExLjk1IDE0TDEwLjgyIDEySDE0Ljc2QzE1LjUgMTIgMTYuMjEgMTIuNDMgMTYuNTUgMTMuMTFMMTcgMTRIMTEuOTVNMjMgMThDMjMgMTkuNjYgMjEuNjYgMjEgMjAgMjFDMTguNyAyMSAxNy42IDIwLjE2IDE3LjE4IDE5SDExLjY1QzExLjA5IDIwLjE4IDkuODkgMjEgOC41IDIxUzUuOTEgMjAuMTggNS4zNSAxOUgyQzEuNDUgMTkgMSAxOC41NSAxIDE4VjExQzEgMTAuNjcgMS4xNyAxMC4zNiAxLjQ0IDEwLjE3QzEuNzEgMTAgMi4wNiA5Ljk1IDIuMzcgMTAuMDdMNy40MyAxMi4wOUwzLjQyIDVIMVYzSDQuNThMMTEuMzcgMTVIMjBDMjEuNjYgMTUgMjMgMTYuMzQgMjMgMThNNy4zNCAxNC4yMUwzIDEyLjVWMTdINS4wNUM1LjI0IDE1LjcgNi4xMyAxNC42NCA3LjM0IDE0LjIxTTEwIDE3LjVDMTAgMTYuNjcgOS4zMyAxNiA4LjUgMTZTNyAxNi42NyA3IDE3LjUgNy42NyAxOSA4LjUgMTkgMTAgMTguMzMgMTAgMTcuNU0yMSAxOEMyMSAxNy40NSAyMC41NSAxNyAyMCAxN1MxOSAxNy40NSAxOSAxOCAxOS40NSAxOSAyMCAxOSAyMSAxOC41NSAyMSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdWZmaW4gPSBcIk0xNiw1QzE2LDUgMTUsMiAxMiwyQzksMiA4LDUgOCw1QzYsNSA0LDcgNCw5QzEuMyw5IDEuMywxMyA0LDEzSDIwQzIyLjcsMTMgMjIuNyw5IDIwLDlDMjAsNyAxOCw1IDE2LDVNNSwxNUw3LDIySDlMOCwxNUg1TTEwLDE1TDExLDIySDEzTDE0LDE1SDEwTTE2LDE1TDE1LDIySDE3TDE5LDE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11bHRpcGxpY2F0aW9uID0gXCJNMTEsM0gxM1YxMC4yN0wxOS4yOSw2LjY0TDIwLjI5LDguMzdMMTQsMTJMMjAuMywxNS42NEwxOS4zLDE3LjM3TDEzLDEzLjcyVjIxSDExVjEzLjczTDQuNjksMTcuMzZMMy42OSwxNS42M0wxMCwxMkwzLjcyLDguMzZMNC43Miw2LjYzTDExLDEwLjI2VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVsdGlwbGljYXRpb25Cb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOU0xMSwxN0gxM1YxMy43M0wxNS44MywxNS4zNkwxNi44MywxMy42M0wxNCwxMkwxNi44MywxMC4zNkwxNS44Myw4LjYzTDEzLDEwLjI3VjdIMTFWMTAuMjdMOC4xNyw4LjYzTDcuMTcsMTAuMzZMMTAsMTJMNy4xNywxMy42M0w4LjE3LDE1LjM2TDExLDEzLjczVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2hyb29tID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkEyLDIgMCAwLDEgMjAsMTRINEEyLDIgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDhBMiwyIDAgMCwwIDE0LDZBMiwyIDAgMCwwIDEyLDRBMiwyIDAgMCwwIDEwLDZBMiwyIDAgMCwwIDEyLDhNMTcsMTJBMiwyIDAgMCwwIDE5LDEwQTIsMiAwIDAsMCAxNyw4QTIsMiAwIDAsMCAxNSwxMEEyLDIgMCAwLDAgMTcsMTJNNywxMkEyLDIgMCAwLDAgOSwxMEEyLDIgMCAwLDAgNyw4QTIsMiAwIDAsMCA1LDEwQTIsMiAwIDAsMCA3LDEyTTE1LDE1TDE2LjI3LDE5LjQ1TDE2LjM1LDIwQzE2LjM1LDIxLjEgMTUuNDUsMjIgMTQuMzUsMjJIOS42NUEyLDIgMCAwLDEgNy42NSwyMEw3LjczLDE5LjQ1TDksMTVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaHJvb21PZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w0LjEgNkMyLjggNy42IDIgOS43IDIgMTJDMiAxMy4xIDIuOSAxNCA0IDE0SDEyLjFMMTMuMSAxNUg5TDcuNyAxOS41VjIwQzcuNyAyMS4xIDguNiAyMiA5LjcgMjJIMTQuNEMxNS41IDIyIDE2LjQgMjEuMSAxNi40IDIwTDE2LjMgMTkuNUwxNS44IDE3LjdMMjAuOSAyMi44TDIyLjEgMjEuNU03IDEyQzUuOSAxMiA1IDExLjEgNSAxMEM1IDkuMiA1LjUgOC40IDYuMyA4LjFMOC45IDEwLjdDOC42IDExLjUgNy44IDEyIDcgMTJNMTAgNkMxMCA0LjkgMTAuOSA0IDEyIDRTMTQgNC45IDE0IDYgMTMuMSA4IDEyIDhDMTEuNSA4IDExLjEgNy44IDEwLjcgNy41TDE3LjIgMTRIMjBDMjEuMSAxNCAyMiAxMy4xIDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMkMxMC4xIDIgOC4zIDIuNiA2LjcgMy41TDEwLjQgNy4yQzEwLjIgNi45IDEwIDYuNSAxMCA2TTE3IDhDMTguMSA4IDE5IDguOSAxOSAxMFMxOC4xIDEyIDE3IDEyIDE1IDExLjEgMTUgMTAgMTUuOSA4IDE3IDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaHJvb21PZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNC4xIDZDMi44IDcuNiAyIDkuNyAyIDEyQzIgMTMuMSAyLjkgMTQgNCAxNEgxMi4xTDEzLjEgMTVIOUw4IDE4LjVMNy43IDE5LjVDNy40IDIwLjYgOC4xIDIxLjcgOS4xIDIxLjlMOS43IDIySDE0LjRDMTUuNSAyMiAxNi40IDIxLjEgMTYuNCAyMEwxNi4zIDE5LjVMMTYgMTguNUwxNS44IDE3LjZMMjAuOSAyMi43TDIyLjEgMjEuNU00IDEyQzQgMTAuMyA0LjYgOC43IDUuNSA3LjRMNi4yIDguMUM2LjEgOC40IDYgOC43IDYgOUM2IDEwLjEgNi45IDExIDggMTFDOC4zIDExIDguNiAxMC45IDguOSAxMC44TDEwLjEgMTJINE05LjcgMjBMMTAgMTlMMTAuNiAxN0gxMy42TDE0LjIgMTlMMTQuNSAyMEg5LjdNMTYgMTFDMTQuOSAxMSAxNCAxMC4xIDE0IDlTMTQuOSA3IDE2IDcgMTggNy45IDE4IDkgMTcuMSAxMSAxNiAxMU04LjIgNUw2LjcgMy41QzguMyAyLjYgMTAuMSAyIDEyIDJDMTcuNSAyIDIyIDYuNSAyMiAxMkMyMiAxMy4xIDIxLjEgMTQgMjAgMTRIMTcuMkwxNS4yIDEySDIwQzIwIDguMyAxNy40IDUuMSAxNCA0LjJDMTMuOSA1LjIgMTMgNiAxMiA2UzEwLjEgNS4yIDEwIDQuMkM5LjQgNC40IDguNyA0LjcgOC4yIDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaHJvb21PdXRsaW5lID0gXCJNNCwxMkgyMEMyMCw4LjI3IDE3LjQ0LDUuMTMgMTQsNC4yNUMxMy44Niw1LjI0IDEzLDYgMTIsNkMxMSw2IDEwLjE0LDUuMjQgMTAsNC4yNUM2LjU2LDUuMTMgNCw4LjI3IDQsMTJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkEyLDIgMCAwLDEgMjAsMTRINEEyLDIgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEzLjUsMTdIMTAuNUw5LjkyLDE5TDkuNjUsMjBIMTQuMzVMMTQuMDgsMTlMMTMuNSwxN00xNSwxNUwxNiwxOC41TDE2LjI3LDE5LjQ1TDE2LjM1LDIwQzE2LjM1LDIxLjEgMTUuNDUsMjIgMTQuMzUsMjJIOS42NUw5LjE3LDIxLjk0QzguMSwyMS42NiA3LjQ1LDIwLjU3IDcuNzMsMTkuNUw4LDE4LjVMOSwxNUgxNU0xNiw3QTIsMiAwIDAsMSAxOCw5QTIsMiAwIDAsMSAxNiwxMUEyLDIgMCAwLDEgMTQsOUEyLDIgMCAwLDEgMTYsN004LDdBMiwyIDAgMCwxIDEwLDlBMiwyIDAgMCwxIDgsMTFBMiwyIDAgMCwxIDYsOUEyLDIgMCAwLDEgOCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljID0gXCJNMjEsM1YxNS41QTMuNSwzLjUgMCAwLDEgMTcuNSwxOUEzLjUsMy41IDAgMCwxIDE0LDE1LjVBMy41LDMuNSAwIDAsMSAxNy41LDEyQzE4LjA0LDEyIDE4LjU1LDEyLjEyIDE5LDEyLjM0VjYuNDdMOSw4LjZWMTcuNUEzLjUsMy41IDAgMCwxIDUuNSwyMUEzLjUsMy41IDAgMCwxIDIsMTcuNUEzLjUsMy41IDAgMCwxIDUuNSwxNEM2LjA0LDE0IDYuNTUsMTQuMTIgNywxNC4zNFY2TDIxLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNBY2NpZGVudGFsRG91YmxlRmxhdCA9IFwiTTE1LjUgOUMxNC44IDkgMTQuMTEgOS4yOCAxMy41IDkuNjdWNUgxMS41VjkuNjJDMTEuMDQgOS4yNCAxMC4zOSA5IDkuNSA5QzguOCA5IDguMTEgOS4yOCA3LjUgOS42N1Y1SDUuNVYxOUM4LjUgMTcuMzIgMTAuNDMgMTUuNzkgMTEuNSAxNC40MVYxOUMxNi4zNiAxNi4yNiAxOC41IDEzLjkxIDE4LjUgMTJDMTguNSAxMC41OSAxNy43OSA5IDE1LjUgOU03LjUgMTUuMzhWMTIuMjZDOC4xMiAxMS41OSA4Ljk1IDExIDkuNSAxMUMxMC4wOSAxMSAxMC41IDExLjA3IDEwLjUgMTJDMTAuNSAxMi4xNSAxMC40IDEzLjMgNy41IDE1LjM4TTEzLjUgMTUuMzhWMTIuMjZDMTQuMTIgMTEuNTkgMTQuOTUgMTEgMTUuNSAxMUMxNi4wOSAxMSAxNi41IDExLjA3IDE2LjUgMTJDMTYuNSAxMi4xNSAxNi40IDEzLjMgMTMuNSAxNS4zOFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0FjY2lkZW50YWxEb3VibGVTaGFycCA9IFwiTTE1LjQxIDEwSDE3VjdIMTRWOC41OUwxMiAxMC41OUwxMCA4LjU5VjdIN1YxMEg4LjU5TDEwLjU5IDEyTDguNTkgMTRIN1YxN0gxMFYxNS40MUwxMiAxMy40MUwxNCAxNS40MVYxN0gxN1YxNEgxNS40MUwxMy40MSAxMkwxNS40MSAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0FjY2lkZW50YWxGbGF0ID0gXCJNOC41IDE5QzEzLjM2IDE2LjI2IDE1LjUgMTMuOTEgMTUuNSAxMkMxNS41IDEwLjU5IDE0Ljc5IDkgMTIuNSA5QzExLjggOSAxMS4xMSA5LjI4IDEwLjUgOS42N1Y1SDguNU0xMC41IDE1LjM4VjEyLjI2QzExLjEyIDExLjU5IDExLjk1IDExIDEyLjUgMTFDMTMuMDkgMTEgMTMuNSAxMS4wNyAxMy41IDEyQzEzLjUgMTIuMTUgMTMuNCAxMy4zIDEwLjUgMTUuMzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNBY2NpZGVudGFsTmF0dXJhbCA9IFwiTTEwIDguNzVWMy41SDhWMTcuNUwxNCAxNS4yNVYyMC41SDE2VjYuNUwxMCA4Ljc1TTE0IDEzLjI1TDEwIDE0Ljc1VjEwLjc1TDE0IDkuMjVWMTMuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNBY2NpZGVudGFsU2hhcnAgPSBcIk0xNyA5LjVWNy41TDE1IDguMVY1LjVIMTNWOC43TDExIDkuM1Y2LjVIOVY5LjlMNyAxMC41VjEyLjVMOSAxMS45VjEzLjlMNyAxNC41VjE2LjVMOSAxNS45VjE4LjVIMTFWMTUuM0wxMyAxNC43VjE3LjVIMTVWMTQuMUwxNyAxMy41VjExLjVMMTUgMTIuMVYxMC4xTDE3IDkuNU0xMyAxMi43TDExIDEzLjNWMTEuM0wxMyAxMC43VjEyLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNCb3ggPSBcIk0xNiw5SDEzVjE0LjVBMi41LDIuNSAwIDAsMSAxMC41LDE3QTIuNSwyLjUgMCAwLDEgOCwxNC41QTIuNSwyLjUgMCAwLDEgMTAuNSwxMkMxMS4wNywxMiAxMS41OCwxMi4xOSAxMiwxMi41VjdIMTZNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNCb3hNdWx0aXBsZSA9IFwiTTQsNkgyVjIwQTIsMiAwIDAsMCA0LDIySDE4VjIwSDRNMTgsN0gxNVYxMi41QTIuNSwyLjUgMCAwLDEgMTIuNSwxNUEyLjUsMi41IDAgMCwxIDEwLDEyLjVBMi41LDIuNSAwIDAsMSAxMi41LDEwQzEzLjA3LDEwIDEzLjU4LDEwLjE5IDE0LDEwLjVWNUgxOE0yMCwySDhBMiwyIDAgMCwwIDYsNFYxNkEyLDIgMCAwLDAgOCwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEEyLDIgMCAwLDAgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTIwLDE2SDhWNEgyME0xMi41LDE1QTIuNSwyLjUgMCAwLDAgMTUsMTIuNVY3SDE4VjVIMTRWMTAuNUMxMy41OCwxMC4xOSAxMy4wNywxMCAxMi41LDEwQTIuNSwyLjUgMCAwLDAgMTAsMTIuNUEyLjUsMi41IDAgMCwwIDEyLjUsMTVNNCw2SDJWMjBBMiwyIDAgMCwwIDQsMjJIMThWMjBINFwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljQm94T3V0bGluZSA9IFwiTTE2LDlIMTNWMTQuNUEyLjUsMi41IDAgMCwxIDEwLjUsMTdBMi41LDIuNSAwIDAsMSA4LDE0LjVBMi41LDIuNSAwIDAsMSAxMC41LDEyQzExLjA3LDEyIDExLjU4LDEyLjE5IDEyLDEyLjVWN0gxNlY5TTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5TTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNDaXJjbGUgPSBcIk0xNiw5VjdIMTJWMTIuNUMxMS41OCwxMi4xOSAxMS4wNywxMiAxMC41LDEyQTIuNSwyLjUgMCAwLDAgOCwxNC41QTIuNSwyLjUgMCAwLDAgMTAuNSwxN0EyLjUsMi41IDAgMCwwIDEzLDE0LjVWOUgxNk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0NpcmNsZU91dGxpbmUgPSBcIk0xNiw5SDEzVjE0LjVBMi41LDIuNSAwIDAsMSAxMC41LDE3QTIuNSwyLjUgMCAwLDEgOCwxNC41QTIuNSwyLjUgMCAwLDEgMTAuNSwxMkMxMS4wNywxMiAxMS41OCwxMi4xOSAxMiwxMi41VjdIMTZWOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNDbGVmQWx0byA9IFwiTTUgNEg3VjIwSDVNMTUuNDYgMTNIMTQuODNMMTMuODMgMTJMMTQuODMgMTFIMTUuNDZBMy41IDMuNSAwIDEgMCAxMS45NiA3LjVIMTMuOTZBMS41IDEuNSAwIDEgMSAxNS40NiA5SDE0TDEyIDExSDExVjRIOVYyMEgxMVYxM0gxMkwxNCAxNUgxNS40NkExLjUgMS41IDAgMSAxIDEzLjk2IDE2LjVIMTEuOTZBMy41IDMuNSAwIDEgMCAxNS40NiAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY0NsZWZCYXNzID0gXCJNMTguNSA1QTEuNSAxLjUgMCAxIDEgMTcgNi41QTEuNSAxLjUgMCAwIDEgMTguNSA1TTE4LjUgMTFBMS41IDEuNSAwIDEgMSAxNyAxMi41QTEuNSAxLjUgMCAwIDEgMTguNSAxMU0xMCA0QTUgNSAwIDAgMCA1IDlWMTBBMiAyIDAgMSAwIDcuMTggOEEzIDMgMCAwIDEgMTAgNkE0IDQgMCAwIDEgMTQgMTBDMTQgMTMuNTkgMTEuNzcgMTYuMTkgNyAxOC4yTDcuNzYgMjAuMDRDMTMuMzEgMTcuNzIgMTYgMTQuNDMgMTYgMTBBNiA2IDAgMCAwIDEwIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNDbGVmVHJlYmxlID0gXCJNMTMgMTFWNy41TDE1LjIgNS4yOUMxNiA0LjUgMTYuMTUgMy4yNCAxNS41OSAyLjI2QzE1LjE0IDEuNDcgMTQuMzIgMSAxMy40NSAxQzEzLjI0IDEgMTMgMS4wMyAxMi44MSAxLjA5QzExLjczIDEuMzggMTEgMi4zOCAxMSAzLjVWNi43NEw3Ljg2IDkuOTFDNi4yIDExLjYgNS43IDE0LjEzIDYuNjEgMTYuMzRDNy4zOCAxOC4yNCA5LjA2IDE5LjU1IDExIDE5Ljg5VjIwLjVDMTEgMjAuNzYgMTAuNzcgMjEgMTAuNSAyMUg5VjIzSDEwLjVDMTEuODUgMjMgMTMgMjEuODkgMTMgMjAuNVYyMEMxNS4wMyAyMCAxNy4xNiAxOC4wOCAxNy4xNiAxNS4yNUMxNy4xNiAxMi45NSAxNS4yNCAxMSAxMyAxMU0xMyAzLjVDMTMgMy4yNyAxMy4xMSAzLjA5IDEzLjMyIDMuMDNDMTMuNTQgMi45NyAxMy43NyAzLjA2IDEzLjg4IDMuMjZDMTQgMy40NiAxMy45NiAzLjcxIDEzLjggMy44N0wxMyA0LjczVjMuNU0xMSAxMS41QzEwLjAzIDEyLjE0IDkuMyAxMy4yNCA5LjA0IDE0LjI2TDExIDE0Ljc4VjE3LjgzQzkuODcgMTcuNTMgOC45IDE2LjcxIDguNDMgMTUuNTdDNy44NCAxNC4xMSA4LjE2IDEyLjQ1IDkuMjYgMTEuMzNMMTEgOS41VjExLjVNMTMgMThWMTIuOTRDMTQuMTcgMTIuOTQgMTUuMTggMTQuMDQgMTUuMTggMTUuMjVDMTUuMTggMTcgMTMuOTEgMTggMTMgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlID0gXCJNMTIgM1YxMy41NUMxMS40MSAxMy4yMSAxMC43MyAxMyAxMCAxM0M3Ljc5IDEzIDYgMTQuNzkgNiAxN1M3Ljc5IDIxIDEwIDIxIDE0IDE5LjIxIDE0IDE3VjdIMThWM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVCbHVldG9vdGggPSBcIk0yMiA5Ljg1TDE5LjE0IDdIMTguNjRWMTAuNzlMMTYuMzUgOC41TDE1LjY0IDkuMjFMMTguNDMgMTJMMTUuNjQgMTQuNzlMMTYuMzUgMTUuNUwxOC42NCAxMy4yMVYxN0gxOS4xNEwyMiAxNC4xNUwxOS44NSAxMkwyMiA5Ljg1TTE5LjY0IDguOTFMMjAuNTggOS44NUwxOS42NCAxMC43OVY4LjkxTTIwLjU4IDE0LjE1TDE5LjY0IDE1LjA5VjEzLjIxTDIwLjU4IDE0LjE1TTkuNjQgM1YxMy41NUM5LjA1IDEzLjIxIDguMzcgMTMgNy42NCAxM0M1LjQzIDEzIDMuNjQgMTQuNzkgMy42NCAxN1M1LjQzIDIxIDcuNjQgMjEgMTEuNjQgMTkuMjEgMTEuNjQgMTdWN0gxNS42NFYzSDkuNjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlQmx1ZXRvb3RoT2ZmID0gXCJNMjIgOS44NUwxOS4xNCA3SDE4LjY0VjEwLjc5TDE2LjM1IDguNUwxNS42NCA5LjIxTDE4LjQzIDEyTDE1LjY0IDE0Ljc5TDE2LjM1IDE1LjVMMTguNjQgMTMuMjFWMTdIMTkuMTRMMjIgMTQuMTVMMTkuODUgMTJMMjIgOS44NU0xOS42NCA4LjkxTDIwLjU4IDkuODVMMTkuNjQgMTAuNzlWOC45MU0yMC41OCAxNC4xNUwxOS42NCAxNS4wOVYxMy4yMUwyMC41OCAxNC4xNU0xLjk2IDNMLjY4NyA0LjI3TDkuNjkgMTMuMjdWMTMuNTVDOS4xIDEzLjIxIDguNDIgMTMgNy42OSAxM0M1LjUgMTMgMy42OSAxNC43OSAzLjY5IDE3UzUuNSAyMSA3LjY5IDIxIDExLjY5IDE5LjIxIDExLjY5IDE3VjE1LjI3TDE3LjQyIDIxTDE4LjY5IDE5LjczTDEuOTYgM00xMS42OSA3SDE1LjY5VjNIOS42OVY4LjE4TDExLjY5IDEwLjE4VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlRWlnaHRoID0gXCJNMTIgM1YxMy41NUMxMS40MSAxMy4yMSAxMC43MyAxMyAxMCAxM0M3Ljc5IDEzIDYgMTQuNzkgNiAxN1M3Ljc5IDIxIDEwIDIxIDE0IDE5LjIxIDE0IDE3VjdIMThWM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVFaWdodGhEb3R0ZWQgPSBcIk0xMiAzVjEzLjU1QTQgNCAwIDEgMCAxNCAxN1Y3SDE4VjNNMTYuNSAyMEExLjUgMS41IDAgMSAxIDE4IDE4LjVBMS41IDEuNSAwIDAgMSAxNi41IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZUhhbGYgPSBcIk0xNiAzSDE0VjEzLjU2QTMuOTYgMy45NiAwIDAgMCAxMiAxM0E0IDQgMCAxIDAgMTYgMTdWM00xMiAxOUEyIDIgMCAxIDEgMTQgMTdBMiAyIDAgMCAxIDEyIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZUhhbGZEb3R0ZWQgPSBcIk0xNCAzSDEyVjEzLjU2QTMuOTYgMy45NiAwIDAgMCAxMCAxM0E0IDQgMCAxIDAgMTQgMTdWM00xMCAxOUEyIDIgMCAxIDEgMTIgMTdBMiAyIDAgMCAxIDEwIDE5TTE2LjUgMjBBMS41IDEuNSAwIDEgMSAxOCAxOC41QTEuNSAxLjUgMCAwIDEgMTYuNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVPZmYgPSBcIk00LjI3IDNMMyA0LjI3TDEyIDEzLjI3VjEzLjU1QzExLjQxIDEzLjIxIDEwLjczIDEzIDEwIDEzQzcuNzkgMTMgNiAxNC43OSA2IDE3UzcuNzkgMjEgMTAgMjEgMTQgMTkuMjEgMTQgMTdWMTUuMjdMMTkuNzMgMjFMMjEgMTkuNzNMNC4yNyAzTTE0IDdIMThWM0gxMlY4LjE4TDE0IDEwLjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZU9mZk91dGxpbmUgPSBcIk0xNCA3SDE4VjNIMTJWNy42MUwxNCA5LjYxTTEyIDEwLjQ0TDQuNDEgMi44NkwzIDQuMjdMMTIgMTMuMjdWMTMuNTVBMy45NCAzLjk0IDAgMCAwIDguNjcgMTMuMjNBNCA0IDAgMCAwIDEwLjY1IDIwLjk1QTQuMSA0LjEgMCAwIDAgMTQgMTYuODVWMTUuMjdMMTkuNzMgMjFMMjEuMTQgMTkuNTlNMTAgMTlBMiAyIDAgMSAxIDEyIDE3QTIgMiAwIDAgMSAxMCAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVPdXRsaW5lID0gXCJNMTIgM1YxMy41NUE0IDQgMCAxIDAgMTQgMTdWN0gxOFYzTTEwIDE5QTIgMiAwIDEgMSAxMiAxN0EyIDIgMCAwIDEgMTAgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlUGx1cyA9IFwiTTE3IDlWMTJIMTRWMTRIMTdWMTdIMTlWMTRIMjJWMTJIMTlWOUgxN005IDNWMTMuNTVDOC40MSAxMy4yMSA3LjczIDEzIDcgMTNDNC43OSAxMyAzIDE0Ljc5IDMgMTdTNC43OSAyMSA3IDIxIDExIDE5LjIxIDExIDE3VjdIMTVWM0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZVF1YXJ0ZXIgPSBcIk0xNCAzVjEzLjU2QzEzLjQxIDEzLjIxIDEyLjczIDEzIDEyIDEzQzkuNzkgMTMgOCAxNC43OSA4IDE3UzkuNzkgMjEgMTIgMjEgMTYgMTkuMjEgMTYgMTdWM0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVRdWFydGVyRG90dGVkID0gXCJNMTIgMTNWMTMuNTZBMy45NiAzLjk2IDAgMCAwIDEwIDEzQTQgNCAwIDEgMCAxNCAxN1YzSDEyTTE2LjUgMTdBMS41IDEuNSAwIDEgMSAxNSAxOC41QTEuNSAxLjUgMCAwIDEgMTYuNSAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY05vdGVTaXh0ZWVudGggPSBcIk0xOCA3VjNIMTJWMTMuNTVDMTEuNDEgMTMuMjEgMTAuNzMgMTMgMTAgMTNDNy43OSAxMyA2IDE0Ljc5IDYgMTdTNy43OSAyMSAxMCAyMSAxNCAxOS4yMSAxNCAxN1YxMUgxOFY4SDE0VjdIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNOb3RlU2l4dGVlbnRoRG90dGVkID0gXCJNMTggMTguNUExLjUgMS41IDAgMSAxIDE2LjUgMTdBMS41IDEuNSAwIDAgMSAxOCAxOC41TTE4IDdWM0gxMlYxMy41NUE0IDQgMCAxIDAgMTQgMTdWMTFIMThWOEgxNFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZVdob2xlID0gXCJNMTIgMTVBMiAyIDAgMSAxIDEwIDE3QTIgMiAwIDAgMSAxMiAxNU0xMiAxM0E0IDQgMCAxIDAgMTYgMTdBNCA0IDAgMCAwIDEyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljTm90ZVdob2xlRG90dGVkID0gXCJNMTAgMTVBMiAyIDAgMSAxIDggMTdBMiAyIDAgMCAxIDEwIDE1TTEwIDEzQTQgNCAwIDEgMCAxNCAxN0E0IDQgMCAwIDAgMTAgMTNNMTYuNSAxN0ExLjUgMS41IDAgMSAxIDE1IDE4LjVBMS41IDEuNSAwIDAgMSAxNi41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljT2ZmID0gXCJNMiw1LjI3TDMuMjgsNEwyMCwyMC43MkwxOC43MywyMkw5LDEyLjI3VjE3LjVBMy41LDMuNSAwIDAsMSA1LjUsMjFBMy41LDMuNSAwIDAsMSAyLDE3LjVBMy41LDMuNSAwIDAsMSA1LjUsMTRDNi4wNCwxNCA2LjU1LDE0LjEyIDcsMTQuMzRWMTAuMjdMMiw1LjI3TTIxLDNWMTUuNUMyMSwxNi41IDIwLjU3LDE3LjQyIDE5Ljg4LDE4LjA2TDE0Ljk0LDEzLjEyQzE1LjU4LDEyLjQzIDE2LjUsMTIgMTcuNSwxMkMxOC4wNCwxMiAxOC41NSwxMi4xMiAxOSwxMi4zNFY2LjQ3TDEwLjE3LDguMzVMNy42Niw1Ljg0TDIxLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNSZXN0RWlnaHRoID0gXCJNMTQgNkE1LjU2IDUuNTYgMCAwIDEgMTAuOTUgNy44NkExLjUgMS41IDAgMSAwIDkuNSA5SDkuNzRBNi4zMiA2LjMyIDAgMCAwIDEzLjI1IDcuOTNMMTAgMThIMTJMMTYgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlNdXNpY1Jlc3RIYWxmID0gXCJNNiAxNEg4VjEwSDE2VjE0SDE4VjE1SDZWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzaWNSZXN0UXVhcnRlciA9IFwiTTExLjcxIDE2LjgxQzEwLjkxIDE3LjYgMTAuODggMTguODQgMTEuNjQgMTkuNThMMTAuMTkgMjFDOC42NiAxOS41IDguNzIgMTcuMDMgMTAuMzIgMTUuNDZDMTAuODUgMTQuOTQgMTEuNSAxNC42MSAxMi4xNiAxNC40Mkw5IDExLjM0TDEwLjQ1IDkuOTJMMTAuODIgOS41N0MxMS44MiA4LjU5IDExLjg1IDcuMDQgMTAuOSA2LjExTDkuMTYgNC40MkwxMC42MiAzTDE0Ljc4IDcuMDZDMTUuNTQgNy44MSAxNS41IDkuMDUgMTQuNzEgOS44M0wxMi41MyAxMS45NUwxNiAxNS4zM0wxNS42MSAxNS43MkMxNS4xMSAxNi4yMSAxNC4zOCAxNi40NiAxMy43MiAxNi4yOEMxMy4wNCAxNi4xIDEyLjI2IDE2LjI4IDExLjcxIDE2LjgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljUmVzdFNpeHRlZW50aCA9IFwiTTE1IDNBNS41NiA1LjU2IDAgMCAxIDExLjk1IDQuODZBMS41IDEuNSAwIDEgMCAxMC41IDZIMTAuNzRBNi4zMiA2LjMyIDAgMCAwIDE0LjI1IDQuOTNMMTIuOSA5LjFBNS41NiA1LjU2IDAgMCAxIDkuOTUgMTAuODZBMS41IDEuNSAwIDEgMCA4LjUgMTJIOC43NEE2LjMyIDYuMzIgMCAwIDAgMTIuMjUgMTAuOTNMOSAyMUgxMUwxNyAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU11c2ljUmVzdFdob2xlID0gXCJNMTggMTBIMTZWMTRIOFYxMEg2VjlIMThWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTXVzdGFjaGUgPSBcIk0yMSAxMkMxOSAxMiAxOCA5IDE1IDlTMTIgMTEgMTIgMTEgMTIgOSA5IDkgNSAxMiAzIDEyQzIgMTIgMSAxMSAxIDExUzIgMTYgNiAxNkMxMSAxNiAxMiAxMyAxMiAxM1MxMyAxNiAxOCAxNkMyMiAxNiAyMyAxMSAyMyAxMVMyMiAxMiAyMSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOYWlsID0gXCJNMTMuNSw1VjE2TDEyLDIyTDEwLjUsMTZWNUgxMy41TTE3LDJIN1Y0SDE3VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmFzID0gXCJNNCw1QzIuODksNSAyLDUuODkgMiw3VjE3QzIsMTguMTEgMi44OSwxOSA0LDE5SDIwQzIxLjExLDE5IDIyLDE4LjExIDIyLDE3VjdDMjIsNS44OSAyMS4xMSw1IDIwLDVINE00LjUsN0ExLDEgMCAwLDEgNS41LDhBMSwxIDAgMCwxIDQuNSw5QTEsMSAwIDAsMSAzLjUsOEExLDEgMCAwLDEgNC41LDdNNyw3SDIwVjE3SDdWN004LDhWMTZIMTFWOEg4TTEyLDhWMTZIMTVWOEgxMk0xNiw4VjE2SDE5VjhIMTZNOSw5SDEwVjEwSDlWOU0xMyw5SDE0VjEwSDEzVjlNMTcsOUgxOFYxMEgxN1Y5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5hdGl2ZXNjcmlwdCA9IFwiTTcuNSwzSDE2LjVDMTksMyAyMSw1IDIxLDcuNVYxNi41QzIxLDE5IDE5LDIxIDE2LjUsMjFINy41QzUsMjEgMywxOSAzLDE2LjVWNy41QzMsNSA1LDMgNy41LDNNNiwxMy41VjE2LjVBMS41LDEuNSAwIDAsMCA3LjUsMThIOVYxMC41TDE1LDE4SDE2LjVBMS41LDEuNSAwIDAsMCAxOCwxNi41VjEzLjVBMS41LDEuNSAwIDAsMSAxOS41LDEyQTEuNSwxLjUgMCAwLDEgMTgsMTAuNVY3LjVBMS41LDEuNSAwIDAsMCAxNi41LDZIMTVWMTMuNUw5LDZINy41QTEuNSwxLjUgMCAwLDAgNiw3LjVWMTAuNUExLjUsMS41IDAgMCwxIDQuNSwxMkExLjUsMS41IDAgMCwxIDYsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOYXR1cmUgPSBcIk0xMywxNi4xMkMxNi40NywxNS43MSAxOS4xNywxMi43NiAxOS4xNyw5LjE3QzE5LjE3LDUuMyAxNi4wNCwyLjE3IDEyLjE3LDIuMTdBNyw3IDAgMCwwIDUuMTcsOS4xN0M1LjE3LDEyLjY0IDcuNjksMTUuNSAxMSwxNi4wNlYyMEg1VjIySDE5VjIwSDEzVjE2LjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5hdHVyZVBlb3BsZSA9IFwiTTQuNSwxMUExLjUsMS41IDAgMCwwIDYsOS41QTEuNSwxLjUgMCAwLDAgNC41LDhBMS41LDEuNSAwIDAsMCAzLDkuNUExLjUsMS41IDAgMCwwIDQuNSwxMU0yMi4xNyw5LjE3QzIyLjE3LDUuMyAxOS4wNCwyLjE3IDE1LjE3LDIuMTdBNyw3IDAgMCwwIDguMTcsOS4xN0M4LjE3LDEyLjY0IDEwLjY5LDE1LjUgMTQsMTYuMDZWMjBINlYxN0g3VjEzQTEsMSAwIDAsMCA2LDEySDNBMSwxIDAgMCwwIDIsMTNWMTdIM1YyMkgxOVYyMEgxNlYxNi4xMkMxOS40NywxNS43MSAyMi4xNywxMi43NiAyMi4xNyw5LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5hdmlnYXRpb24gPSBcIk0xMiwyTDQuNSwyMC4yOUw1LjIxLDIxTDEyLDE4TDE4Ljc5LDIxTDE5LjUsMjAuMjlMMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOYXZpZ2F0aW9uT3V0bGluZSA9IFwiTTEyIDcuM0wxNi4zIDE3LjdMMTIuOCAxNi4yTDEyIDE1LjhMMTEuMiAxNi4yTDcuNyAxNy43TDEyIDcuM00xMiAyTDQuNSAyMC4zTDUuMiAyMUwxMiAxOEwxOC44IDIxTDE5LjUgMjAuM0wxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5lYXJNZSA9IFwiTTIxLDNMMywxMC41M1YxMS41TDkuODQsMTQuMTZMMTIuNSwyMUgxMy40NkwyMSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5lY2tsYWNlID0gXCJNMjEuNSA1SDE5LjVDMTkuNSA5LjE0IDE2LjE0IDEyLjUgMTIgMTIuNUM3Ljg2IDEyLjUgNC41IDkuMTQgNC41IDVIMi41QzIuNTUgMTAuMTEgNi41OSAxNC4yOSAxMS43IDE0LjVDMTEuMSAxNS40IDEwIDE3LjIgMTAgMThDMTAgMjAuNjcgMTQgMjAuNjcgMTQgMThDMTQgMTcuMiAxMi45IDE1LjQgMTIuMyAxNC41QzE3LjQxIDE0LjI5IDIxLjQ1IDEwLjExIDIxLjUgNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZWVkbGUgPSBcIk0xMS4xNSwxNS4xOEw5LjczLDEzLjc3TDExLjE1LDEyLjM1TDEyLjU2LDEzLjc3TDEzLjk3LDEyLjM1TDEyLjU2LDEwLjk0TDEzLjk3LDkuNTNMMTUuMzksMTAuOTRMMTYuOCw5LjUzTDEzLjk3LDYuN0w2LjksMTMuNzdMOS43MywxNi42TDExLjE1LDE1LjE4TTMuMDgsMTlMNi4yLDE1Ljg5TDQuMDgsMTMuNzdMMTMuOTcsMy44N0wxNi4xLDZMMTcuNSw0LjU4TDE2LjEsMy4xNkwxNy41LDEuNzVMMjEuNzUsNkwyMC4zNCw3LjRMMTguOTIsNkwxNy41LDcuNEwxOS42Myw5LjUzTDkuNzMsMTkuNDJMNy42MSwxNy4zTDMuMDgsMjEuODRWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0ZmxpeCA9IFwiTTYuNSwySDEwLjVMMTMuNDQsMTAuODNMMTMuNSwySDE3LjVWMjJDMTYuMjUsMjEuNzggMTQuODcsMjEuNjQgMTMuNDEsMjEuNThMMTAuNSwxM0wxMC40MywyMS41OUM5LjAzLDIxLjY1IDcuNywyMS43OSA2LjUsMjJWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya09mZiA9IFwiTTEsNS4yN0w1LDkuMjdWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMTcuNzNMMTkuNzMsMjRMMjEsMjIuNzJMMi4yOCw0TDEsNS4yN00xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTcuMjdMMTUuNzMsMjBIMTVNMTcuNjksMTYuODdMNS4xMyw0LjMxQzUuNDEsMy41NSA2LjE0LDMgNywzSDE3QTIsMiAwIDAsMSAxOSw1VjE1QzE5LDE1Ljg2IDE4LjQ1LDE2LjU5IDE3LjY5LDE2Ljg3TTIyLDIwVjIxLjE4TDIwLjgyLDIwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtPZmZPdXRsaW5lID0gXCJNMS4wNCw1LjI3TDUsOS4yM1YxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgxNy43N0wxOS43NywyNEwyMS4wNCwyMi43MkwyLjMyLDRMMS4wNCw1LjI3TTcsMTEuMjNMMTAuNzcsMTVIN1YxMS4yM00xNSwyMEExLDEgMCAwLDAgMTQsMTlIMTNWMTcuMjNMMTUuNzcsMjBIMTVNMjIsMjBWMjEuMTRMMjAuODYsMjBIMjJNNyw2LjE0TDUuMTQsNC4yOEM1LjQzLDMuNTMgNi4xNiwzIDcsM0gxN0EyLDIgMCAwLDEgMTksNVYxNUMxOSwxNS44NSAxOC40NywxNi41NyAxNy43MiwxNi44NkwxNS44NiwxNUgxN1Y1SDdWNi4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoMSA9IFwiTTEsMjFIMjFWMU0xOSw1LjgzVjE5SDExVjEzLjgzXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoMUFsZXJ0ID0gXCJNMjEgMUwxIDIxSDE3VjE5SDExVjEzLjhMMTkgNS44VjlIMjFNMTkgMTFWMTdIMjFWMTFNMTkgMTlWMjFIMjFWMTlcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrU3RyZW5ndGgyID0gXCJNMSwyMUgyMVYxTTE5LDUuODNWMTlIMTNWMTEuODNcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrU3RyZW5ndGgyQWxlcnQgPSBcIk0yMSAxTDEgMjFIMTdWMTlIMTNWMTEuOEwxOSA1LjhWOUgyMU0xOSAxMVYxN0gyMVYxMU0xOSAxOVYyMUgyMVYxOVwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtTdHJlbmd0aDMgPSBcIk0xLDIxSDIxVjFNMTksNS44M1YxOUgxNlY4LjgzXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoM0FsZXJ0ID0gXCJNMjEgMUwxIDIxSDE3VjE5SDE2VjguOEwxOSA1LjhWOUgyMU0xOSAxMVYxN0gyMVYxMU0xOSAxOVYyMUgyMVYxOVwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtTdHJlbmd0aDQgPSBcIk0xLDIxSDIxVjFcIjtcclxuZXhwb3J0IHZhciBtZGlOZXR3b3JrU3RyZW5ndGg0QWxlcnQgPSBcIk0xOSAxN0gyMVYxMUgxOU0xOSAyMUgyMVYxOUgxOU0xIDIxSDE3VjlIMjFWMVwiO1xyXG5leHBvcnQgdmFyIG1kaU5ldHdvcmtTdHJlbmd0aE9mZiA9IFwiTTIxLDFMMTIuNCw5LjZMMjEsMTguMTlNNC43Nyw0LjVMMy41LDUuNzdMOS44NiwxMi4xM0wxLDIxSDE4LjczTDIwLjczLDIzTDIyLDIxLjczXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoT2ZmT3V0bGluZSA9IFwiTTIxLDFMMTIuNCw5LjZMMTMuODUsMTEuMDVMMTksNS44M1YxNi4xOUwyMSwxOC4xOU00Ljc3LDQuNUwzLjUsNS43N0w5Ljg2LDEyLjEzTDEsMjFIMTguNzNMMjAuNzMsMjNMMjIsMjEuNzNNMTEuMzMsMTMuNkwxNi43MywxOUg2XCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV0d29ya1N0cmVuZ3RoT3V0bGluZSA9IFwiTTEsMjFIMjFWMU0xOSw1LjgzVjE5SDZcIjtcclxuZXhwb3J0IHZhciBtZGlOZXdCb3ggPSBcIk0yMCw0QzIxLjExLDQgMjIsNC44OSAyMiw2VjE4QzIyLDE5LjExIDIxLjExLDIwIDIwLDIwSDRDMi44OSwyMCAyLDE5LjExIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgyME04LjUsMTVWOUg3LjI1VjEyLjVMNC43NSw5SDMuNVYxNUg0Ljc1VjExLjVMNy4zLDE1SDguNU0xMy41LDEwLjI2VjlIOS41VjE1SDEzLjVWMTMuNzVIMTFWMTIuNjRIMTMuNVYxMS4zOEgxMVYxMC4yNkgxMy41TTIwLjUsMTRWOUgxOS4yNVYxMy41SDE4LjEzVjEwSDE2Ljg4VjEzLjVIMTUuNzVWOUgxNC41VjE0QTEsMSAwIDAsMCAxNS41LDE1SDE5LjVBMSwxIDAgMCwwIDIwLjUsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV3c3BhcGVyID0gXCJNMjAsMTFINFY4SDIwTTIwLDE1SDEzVjEzSDIwTTIwLDE5SDEzVjE3SDIwTTExLDE5SDRWMTNIMTFNMjAuMzMsNC42N0wxOC42NywzTDE3LDQuNjdMMTUuMzMsM0wxMy42Nyw0LjY3TDEyLDNMMTAuMzMsNC42N0w4LjY3LDNMNyw0LjY3TDUuMzMsM0wzLjY3LDQuNjdMMiwzVjE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVYzTDIwLjMzLDQuNjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV3c3BhcGVyTWludXMgPSBcIk0yMiwxN1YxOUgxNFYxN0gyMk0yMCwxMVY4SDRWMTFIMjBNMTMsMTNWMTQuNjhDMTIuMzcsMTUuNjMgMTIsMTYuNzcgMTIsMThDMTIsMTkuMDkgMTIuMjksMjAuMTIgMTIuOCwyMUg0QTIsMiAwIDAsMSAyLDE5VjNMMy42Nyw0LjY3TDUuMzMsM0w3LDQuNjdMOC42NywzTDEwLjMzLDQuNjdMMTIsM0wxMy42Nyw0LjY3TDE1LjMzLDNMMTcsNC42N0wxOC42NywzTDIwLjMzLDQuNjdMMjIsM1YxMy41QzIwLjkzLDEyLjU4IDE5LjUzLDEyIDE4LDEyQzE2Ljc3LDEyIDE1LjYzLDEyLjM3IDE0LjY4LDEzSDEzTTExLDE5VjEzSDRWMTlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmV3c3BhcGVyUGx1cyA9IFwiTTE3LDE0SDE5VjE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3SDE3VjE0TTIwLDExVjhINFYxMUgyME0xMywxM1YxNC42OEMxMi4zNywxNS42MyAxMiwxNi43NyAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxSDRBMiwyIDAgMCwxIDIsMTlWM0wzLjY3LDQuNjdMNS4zMywzTDcsNC42N0w4LjY3LDNMMTAuMzMsNC42N0wxMiwzTDEzLjY3LDQuNjdMMTUuMzMsM0wxNyw0LjY3TDE4LjY3LDNMMjAuMzMsNC42N0wyMiwzVjEzLjVDMjAuOTMsMTIuNTggMTkuNTMsMTIgMTgsMTJDMTYuNzcsMTIgMTUuNjMsMTIuMzcgMTQuNjgsMTNIMTNNMTEsMTlWMTNINFYxOUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXdzcGFwZXJWYXJpYW50ID0gXCJNMjAgM0g0QzIuODkgMyAyIDMuODkgMiA1VjE5QzIgMjAuMTEgMi44OSAyMSA0IDIxSDIwQzIxLjExIDIxIDIyIDIwLjExIDIyIDE5VjVDMjIgMy44OSAyMS4xMSAzIDIwIDNNNSA3SDEwVjEzSDVWN00xOSAxN0g1VjE1SDE5VjE3TTE5IDEzSDEyVjExSDE5VjEzTTE5IDlIMTJWN0gxOVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5ld3NwYXBlclZhcmlhbnRNdWx0aXBsZSA9IFwiTTQgN1YxOUgxOVYyMUg0QzIgMjEgMiAxOSAyIDE5VjdINE0yMS4zIDNINy43QzYuNzYgMyA2IDMuNyA2IDQuNTVWMTUuNDVDNiAxNi4zMSA2Ljc2IDE3IDcuNyAxN0gyMS4zQzIyLjI0IDE3IDIzIDE2LjMxIDIzIDE1LjQ1VjQuNTVDMjMgMy43IDIyLjI0IDMgMjEuMyAzTTggNUgxM1YxMUg4VjVNMjEgMTVIOFYxM0gyMVYxNU0yMSAxMUgxNVY5SDIxVjExTTIxIDdIMTVWNUgyMVY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5ld3NwYXBlclZhcmlhbnRNdWx0aXBsZU91dGxpbmUgPSBcIk00IDdWMTlIMTlWMjFINEMyIDIxIDIgMTkgMiAxOVY3SDRNMjEgNVYxNUg4VjVIMjFNMjEuMyAzSDcuN0M2Ljc2IDMgNiAzLjcgNiA0LjU1VjE1LjQ1QzYgMTYuMzEgNi43NiAxNyA3LjcgMTdIMjEuM0MyMi4yNCAxNyAyMyAxNi4zMSAyMyAxNS40NVY0LjU1QzIzIDMuNyAyMi4yNCAzIDIxLjMgM005IDZIMTJWMTFIOVY2TTIwIDE0SDlWMTJIMjBWMTRNMjAgOEgxNFY2SDIwVjhNMjAgMTFIMTRWOUgyMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZXdzcGFwZXJWYXJpYW50T3V0bGluZSA9IFwiTTIwIDVMMjAgMTlMNCAxOUw0IDVIMjBNMjAgM0g0QzIuODkgMyAyIDMuODkgMiA1VjE5QzIgMjAuMTEgMi44OSAyMSA0IDIxSDIwQzIxLjExIDIxIDIyIDIwLjExIDIyIDE5VjVDMjIgMy44OSAyMS4xMSAzIDIwIDNNMTggMTVINlYxN0gxOFYxNU0xMCA3SDZWMTNIMTBWN00xMiA5SDE4VjdIMTJWOU0xOCAxMUgxMlYxM0gxOFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmMgPSBcIk03LjI0IDJDNS42IDIgMy45NiAyIDMuNTUgMi4wNEMyLjY3IDIuMDkgMi4wOCAyLjczIDIuMDQgMy41NkMyIDQuMzcgMiAxOS41OSAyLjA0IDIwLjQxQzIuMDkgMjEuMjMgMi43MSAyMS44NiAzLjU1IDIxLjkxQzQuNDYgMjEuOTYgNy40NCAyMS45NyA4LjI5IDIxLjk3QzYuNzYgMjAuOTEgNi41NSAxOC45MiA2LjQxIDE1LjIzQzYuMzMgMTMuMDQgNi40IDUuMzYgNi40MSA1LjA0TDYuNDUgMi45NEwxNC41IDExVjEzLjVMOC4wOSA3LjExQzguMDggOC4zOCA4LjA2IDEwLjAzIDguMDYgMTEuNTRDOC4wNiAxMyA4LjA4IDE0LjM0IDguMTIgMTUuMDVDOC4zNiAxOS4wNyA4Ljc0IDIwLjk2IDEwLjgzIDIxLjdDMTEuNSAyMS45MyAxMi4wNyAyMiAxMy4wNyAyMkMxMy44OSAyMiAxOS42MyAyMiAyMC40NSAyMS45NkMyMS4zMyAyMS45MSAyMS45MyAyMS4yNyAyMS45NyAyMC40NEMyMiAxOS42MyAyMiA0LjQ1IDIxLjk3IDMuNjJDMjEuOTEgMi44IDIxLjI5IDIuMTggMjAuNDUgMi4xM0MxOS41NCAyLjA4IDE2LjU3IDIuMDMgMTUuNzEgMi4wM0MxNy4yNCAzLjA5IDE3LjQ0IDUuMDggMTcuNTkgOC43OEMxNy42NyAxMC45NyAxNy42IDE4LjY0IDE3LjU5IDE4Ljk3TDE3LjU1IDIxLjA2TDkuNTMgMTNWMTAuNUwxNS45MSAxNi44OUMxNS45MiAxNS42MiAxNS45NCAxMy45NyAxNS45NCAxMi40NkMxNS45NCAxMSAxNS45MiA5LjY2IDE1Ljg4IDguOTZDMTUuNjQgNC45MyAxNS4yNiAzLjA0IDEzLjE3IDIuM0MxMi41MyAyLjA3IDExLjkzIDIgMTAuOTMgMkg3LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5mY1NlYXJjaFZhcmlhbnQgPSBcIk0xNi41LDEyQzE5LDEyIDIxLDE0IDIxLDE2LjVDMjEsMTcuMzggMjAuNzYsMTguMjEgMjAuMzIsMTguOUwyMy40LDIyTDIyLDIzLjM5TDE4Ljg5LDIwLjMyQzE4LjIsMjAuNzUgMTcuMzgsMjEgMTYuNSwyMUMxNCwyMSAxMiwxOSAxMiwxNi41QzEyLDE0IDE0LDEyIDE2LjUsMTJNMTYuNSwxNEEyLjUsMi41IDAgMCwwIDE0LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE5QzE3Ljg5LDE5IDE5LDE3Ljg4IDE5LDE2LjVBMi41LDIuNSAwIDAsMCAxNi41LDE0TTE4LDZWMTAuMThDMTcuMzMsMTAgMTYuNjYsOS45NyAxNiwxMFY4SDEzVjEwLjI4TDEzLjUzLDEwLjcyQzEyLjM0LDExLjMzIDExLjM1LDEyLjMgMTAuNzIsMTMuNTNDMTAuMjgsMTMuMTcgMTAsMTIuNjIgMTAsMTJDMTAsMTEuMjYgMTAuNDEsMTAuNjIgMTEsMTAuMjhWOEEyLDIgMCAwLDEgMTMsNkgxOE02LDE4VjZIOEwxMCw2VjhIOFYxNkgxMEM5Ljk2LDE2LjY4IDEwLDE3LjM1IDEwLjE3LDE4SDZNMjAsNEg0VjIwSDExQzExLjUzLDIwLjggMTIuMjEsMjEuNSAxMy4wMywyMkg0QzIuODksMjIgMiwyMS4xIDIsMjBWNEEyLDIgMCAwLDEgNCwySDIwQTIsMiAwIDAsMSAyMiw0VjEzLjA0QzIxLjUsMTIuMjQgMjAuODIsMTEuNTQgMjAsMTFWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmNUYXAgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNNCw0SDExQTIsMiAwIDAsMSAxMyw2VjlIMTFWNkg0VjExSDZWOUw5LDEyTDYsMTVWMTNINEEyLDIgMCAwLDEgMiwxMVY2QTIsMiAwIDAsMSA0LDRNMjAsMjBIMTNBMiwyIDAgMCwxIDExLDE4VjE1SDEzVjE4SDIwVjEzSDE4VjE1TDE1LDEyTDE4LDlWMTFIMjBBMiwyIDAgMCwxIDIyLDEzVjE4QTIsMiAwIDAsMSAyMCwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmNWYXJpYW50ID0gXCJNMTgsNkgxM0EyLDIgMCAwLDAgMTEsOFYxMC4yOEMxMC40MSwxMC42MiAxMCwxMS4yNiAxMCwxMkEyLDIgMCAwLDAgMTIsMTRDMTMuMTEsMTQgMTQsMTMuMSAxNCwxMkMxNCwxMS4yNiAxMy42LDEwLjYyIDEzLDEwLjI4VjhIMTZWMTZIOFY4SDEwVjZIOEw2LDZWMThIMThNMjAsMjBINFY0SDIwTTIwLDJINEEyLDIgMCAwLDAgMiw0VjIwQTIsMiAwIDAsMCA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjEgMjIsMjBWNEMyMiwyLjg5IDIxLjExLDIgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOZmNWYXJpYW50T2ZmID0gXCJNMS4yNSwyLjA1TDIxLjk1LDIyLjc1TDIwLjcsMjRMMTguNywyMkg0QTIsMiAwIDAsMSAyLDIwVjUuM0wwLDMuM0wxLjI1LDIuMDVNMy44MSwyQzMuODcsMiAzLjk0LDIgNCwySDIwQzIxLjExLDIgMjIsMi44OSAyMiw0VjIwQzIyLDIwLjA2IDIyLDIwLjEzIDIyLDIwLjE5TDIwLDE4LjJWNEg1LjhMMy44MSwyTTYsOS4zTDQsNy4zVjIwSDE2LjdMMTQuNywxOEg2VjkuM00xOCwxNi4yTDE2LDE0LjJWOEgxM1YxMC4yOEMxMy42LDEwLjYyIDE0LDExLjI2IDE0LDEyQzE0LDEyLjA2IDE0LDEyLjEzIDE0LDEyLjE5TDExLDkuMlY4QTIsMiAwIDAsMSAxMyw2SDE4VjE2LjJNOCwxNkgxMi43TDgsMTEuM1YxNk0xMCw4SDkuOEw3LjgsNkgxMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5pbmphID0gXCJNNy43NSwxM0M3Ljc0LDEyLjY1IDcuOSwxMi4zMSA4LjE3LDEyLjA4QzguOTIsMTIuMjQgOS42MiwxMi41NSAxMC4yNSwxM0MxMC4yNSwxMy42OCA5LjY5LDE0LjI0IDksMTQuMjRDOC4zMSwxNC4yNCA3Ljc2LDEzLjY5IDcuNzUsMTNNMTMuNzUsMTNDMTQuMzgsMTIuNTYgMTUuMDgsMTIuMjUgMTUuODMsMTIuMDlDMTYuMSwxMi4zMiAxNi4yNiwxMi42NiAxNi4yNSwxM0MxNi4yNSwxMy43IDE1LjY5LDE0LjI2IDE1LDE0LjI2QzE0LjMxLDE0LjI2IDEzLjc1LDEzLjcgMTMuNzUsMTNWMTNNMTIsOUM5LjIzLDguOTYgNi41LDkuNjUgNC4wNywxMUw0LDEyQzQsMTMuMjMgNC4yOSwxNC40NCA0Ljg0LDE1LjU0QzcuMjEsMTUuMTggOS42LDE1IDEyLDE1QzE0LjQsMTUgMTYuNzksMTUuMTggMTkuMTYsMTUuNTRDMTkuNzEsMTQuNDQgMjAsMTMuMjMgMjAsMTJMMTkuOTMsMTFDMTcuNSw5LjY1IDE0Ljc3LDguOTYgMTIsOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOaW50ZW5kb0dhbWVCb3kgPSBcIk03IDFDNS45IDEgNSAxLjkgNSAzVjIxQzUgMjIuMTEgNS45IDIzIDcgMjNIMTRDMTYuNzYgMjMgMTkgMjAuNzYgMTkgMThWM0MxOSAxLjkgMTguMTEgMSAxNyAxSDdNOCA0SDE2VjExSDhWNE05IDE0SDEwVjE2SDEyVjE3SDEwVjE5SDlWMTdIN1YxNkg5VjE0TTE2IDE1QzE2LjU1IDE1IDE3IDE1LjQ1IDE3IDE2QzE3IDE2LjU1IDE2LjU1IDE3IDE2IDE3QzE1LjQ1IDE3IDE1IDE2LjU1IDE1IDE2QzE1IDE1LjQ1IDE1LjQ1IDE1IDE2IDE1TTE0IDE3QzE0LjU1IDE3IDE1IDE3LjQ1IDE1IDE4QzE1IDE4LjU1IDE0LjU1IDE5IDE0IDE5QzEzLjQ1IDE5IDEzIDE4LjU1IDEzIDE4QzEzIDE3LjQ1IDEzLjQ1IDE3IDE0IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5pbnRlbmRvU3dpdGNoID0gXCJNMTAuMDQsMjAuNEg3LjEyQzYuMTksMjAuNCA1LjMsMjAgNC42NCwxOS4zNkM0LDE4LjcgMy42LDE3LjgxIDMuNiwxNi44OFY3LjEyQzMuNiw2LjE5IDQsNS4zIDQuNjQsNC42NEM1LjMsNCA2LjE5LDMuNjIgNy4xMiwzLjYySDEwLjA0VjIwLjRNNy4xMiwyQTUuMTIsNS4xMiAwIDAsMCAyLDcuMTJWMTYuODhDMiwxOS43MSA0LjI5LDIyIDcuMTIsMjJIMTEuNjVWMkg3LjEyTTUuMTEsOEM1LjExLDkuMDQgNS45NSw5Ljg4IDcsOS44OEM4LjAzLDkuODggOC44Nyw5LjA0IDguODcsOEM4Ljg3LDYuOTYgOC4wMyw2LjEyIDcsNi4xMkM1Ljk1LDYuMTIgNS4xMSw2Ljk2IDUuMTEsOE0xNy42MSwxMUMxOC43MiwxMSAxOS42MiwxMS44OSAxOS42MiwxM0MxOS42MiwxNC4xMiAxOC43MiwxNSAxNy42MSwxNUMxNi41LDE1IDE1LjU4LDE0LjEyIDE1LjU4LDEzQzE1LjU4LDExLjg5IDE2LjUsMTEgMTcuNjEsMTFNMTYuODgsMjJBNS4xMiw1LjEyIDAgMCwwIDIyLDE2Ljg4VjcuMTJDMjIsNC4yOSAxOS43MSwyIDE2Ljg4LDJIMTMuNjVWMjJIMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmludGVuZG9XaWkgPSBcIk0xNy44NCwxNi45NEgxNS45N1YxMC43OUgxNy44NFYxNi45NE0xOCw4LjU4QzE4LDkuMTkgMTcuNSw5LjY5IDE2LjksOS42OUExLjExLDEuMTEgMCAwLDEgMTUuNzksOC41OEMxNS43OSw3Ljk2IDE2LjI5LDcuNDYgMTYuOSw3LjQ2QzE3LjUsNy40NiAxOCw3Ljk2IDE4LDguNThNMjEuODIsMTYuOTRIMTkuOTRWMTAuNzlIMjEuODJWMTYuOTRNMjIsOC41OEMyMiw5LjE5IDIxLjUsOS42OSAyMC44OCw5LjY5QTEuMTEsMS4xMSAwIDAsMSAxOS43Nyw4LjU4QzE5Ljc3LDcuOTYgMjAuMjcsNy40NiAyMC44OCw3LjQ2QzIxLjUsNy40NiAyMiw3Ljk2IDIyLDguNThNMTIuOSw4LjA1SDE0LjlMMTIuNzgsMTUuNUMxMi43OCwxNS41IDEyLjUsMTcuMDQgMTEuMjgsMTcuMDRDMTAuMDcsMTcuMDQgOS43OSwxNS41IDkuNzksMTUuNUw4LjQ1LDEwLjY0TDcuMTEsMTUuNUM3LjExLDE1LjUgNi44MiwxNy4wNCA1LjYxLDE3LjA0QzQuNCwxNy4wNCA0LjEyLDE1LjUgNC4xMiwxNS41TDIsOC4wNUg0TDUuNzIsMTQuNjdMNy4xMSw5LjNDNy40Myw3Ljk1IDguNDUsNy45NyA4LjQ1LDcuOTdDOC40NSw3Ljk3IDkuNDcsNy45NSA5Ljc5LDkuM0wxMS4xNywxNC42N0wxMi45LDguMDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTmludGVuZG9XaWl1ID0gXCJNMiwxNS45NkMyLDE4LjE5IDMuNTQsMTkuNSA1Ljc5LDE5LjVIMTguNTdDMjAuNDcsMTkuNSAyMiwxOC4yIDIyLDE2LjMyVjYuOTdDMjIsNS44MyAyMS4xNSw0LjYgMjAuMTEsNC42SDE3LjE1VjEyLjNDMTcuMTUsMTguMTQgNi45NywxOC4wOSA2Ljk3LDEyLjQxVjQuNUg0LjcyQzMuMjYsNC41IDIsNS40MSAyLDYuODVWMTUuOTZNOS4zNCwxMS4yM0M5LjM0LDE1Ljc0IDE0LjY2LDE1LjA5IDE0LjY2LDExLjk0VjQuNUg5LjM0VjExLjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5peCA9IFwiTTkuOSA4LjdMNSAxNy4yTDMuOSAxNS4zTDUuMiAxM0gyLjZMMiAxMkwyLjYgMTFINi4zTDcuNiA4LjdIOS45TTEwLjIgMTUuNUgxOS45TDE4LjggMTcuNEgxNi4yTDE3LjUgMTkuN0wxNi45IDIwLjdIMTUuOEwxNCAxNy40SDExLjNMMTAuMiAxNS41TTE1LjkgMTEuOEwxMSAzLjNIMTMuMkwxNC41IDUuNkwxNS44IDMuM0gxNi45TDE3LjUgNC4zTDE1LjYgNy41TDE3IDkuOEwxNS45IDExLjhNMTMuOCA4LjVINEw1LjEgNi42SDcuN0w2LjQgNC4zTDcgMy4zSDguMUwxMCA2LjVIMTIuN0wxMy44IDguNU0xNC4xIDE1LjNMMTkgNi44TDIwLjEgOC43TDE4LjggMTFIMjEuNEwyMiAxMkwyMS40IDEzSDE3LjdMMTYuNCAxNS4zSDE0LjFNOC4xIDEyLjJMMTMgMjAuNkgxMC44TDkuNSAxOC4zTDguNCAyMC42SDcuMUw2LjUgMTkuNkw4LjQgMTYuNEw3IDE0LjJMOC4xIDEyLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm9kZWpzID0gXCJNMTIsMS44NUMxMS43MywxLjg1IDExLjQ1LDEuOTIgMTEuMjIsMi4wNUwzLjc4LDYuMzVDMy4zLDYuNjMgMyw3LjE1IDMsNy43MVYxNi4yOUMzLDE2Ljg1IDMuMywxNy4zNyAzLjc4LDE3LjY1TDUuNzMsMTguNzdDNi42OCwxOS4yMyA3LDE5LjI0IDcuNDQsMTkuMjRDOC44NCwxOS4yNCA5LjY1LDE4LjM5IDkuNjUsMTYuOTFWOC40NEM5LjY1LDguMzIgOS41NSw4LjIyIDkuNDMsOC4yMkg4LjVDOC4zNyw4LjIyIDguMjcsOC4zMiA4LjI3LDguNDRWMTYuOTFDOC4yNywxNy41NyA3LjU5LDE4LjIyIDYuNSwxNy42N0w0LjQ1LDE2LjVDNC4zOCwxNi40NSA0LjM0LDE2LjM3IDQuMzQsMTYuMjlWNy43MUM0LjM0LDcuNjIgNC4zOCw3LjU0IDQuNDUsNy41TDExLjg5LDMuMjFDMTEuOTUsMy4xNyAxMi4wNSwzLjE3IDEyLjExLDMuMjFMMTkuNTUsNy41QzE5LjYyLDcuNTQgMTkuNjYsNy42MiAxOS42Niw3LjcxVjE2LjI5QzE5LjY2LDE2LjM3IDE5LjYyLDE2LjQ1IDE5LjU1LDE2LjVMMTIuMTEsMjAuNzlDMTIuMDUsMjAuODMgMTEuOTUsMjAuODMgMTEuODgsMjAuNzlMMTAsMTkuNjVDOS45MiwxOS42MiA5Ljg0LDE5LjYxIDkuNzksMTkuNjRDOS4yNiwxOS45NCA5LjE2LDIwIDguNjcsMjAuMTVDOC41NSwyMC4xOSA4LjM2LDIwLjI2IDguNzQsMjAuNDdMMTEuMjIsMjEuOTRDMTEuNDYsMjIuMDggMTEuNzIsMjIuMTUgMTIsMjIuMTVDMTIuMjgsMjIuMTUgMTIuNTQsMjIuMDggMTIuNzgsMjEuOTRMMjAuMjIsMTcuNjVDMjAuNywxNy4zNyAyMSwxNi44NSAyMSwxNi4yOVY3LjcxQzIxLDcuMTUgMjAuNyw2LjYzIDIwLjIyLDYuMzVMMTIuNzgsMi4wNUMxMi41NSwxLjkyIDEyLjI4LDEuODUgMTIsMS44NU0xNCw4QzExLjg4LDggMTAuNjEsOC44OSAxMC42MSwxMC4zOUMxMC42MSwxMiAxMS44NywxMi40NyAxMy45MSwxMi42N0MxNi4zNCwxMi45MSAxNi41MywxMy4yNyAxNi41MywxMy43NUMxNi41MywxNC41OCAxNS44NiwxNC45MyAxNC4zLDE0LjkzQzEyLjMyLDE0LjkzIDExLjksMTQuNDQgMTEuNzUsMTMuNDZDMTEuNzMsMTMuMzYgMTEuNjQsMTMuMjggMTEuNTMsMTMuMjhIMTAuNTdDMTAuNDUsMTMuMjggMTAuMzYsMTMuMzcgMTAuMzYsMTMuNUMxMC4zNiwxNC43NCAxMS4wNCwxNi4yNCAxNC4zLDE2LjI0QzE2LjY1LDE2LjI0IDE4LDE1LjMxIDE4LDEzLjY5QzE4LDEyLjA4IDE2LjkyLDExLjY2IDE0LjYzLDExLjM1QzEyLjMyLDExLjA1IDEyLjA5LDEwLjg5IDEyLjA5LDEwLjM1QzEyLjA5LDkuOSAxMi4yOSw5LjMgMTQsOS4zQzE1LjUsOS4zIDE2LjA5LDkuNjMgMTYuMzIsMTAuNjZDMTYuMzQsMTAuNzYgMTYuNDMsMTAuODMgMTYuNTMsMTAuODNIMTcuNUMxNy41NSwxMC44MyAxNy42MSwxMC44MSAxNy42NSwxMC43NkMxNy42OSwxMC43MiAxNy43MiwxMC42NiAxNy43LDEwLjZDMTcuNTYsOC44MiAxNi4zOCw4IDE0LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm9vZGxlcyA9IFwiTTIyIDNMMTAgNC40MVY2SDIyVjdIMTBWMTJIMjJDMjIgMTMuODEgMjEuNDMgMTUuNDYgMjAuMzIgMTYuOTVTMTcuNzcgMTkuNTMgMTYgMjAuMjVWMjJIOFYyMC4yNUM2LjI0IDE5LjUzIDQuNzkgMTguNDMgMy42OCAxNi45NVMyIDEzLjgxIDIgMTJINVY0TDIyIDJWM002IDQuODhWNkg3VjQuNzhMNiA0Ljg4TTYgN1YxMkg3VjdINk05IDEyVjdIOFYxMkg5TTkgNlY0LjU1TDggNC42NFY2SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90RXF1YWwgPSBcIk0yMSwxMEg5VjhIMjFWMTBNMjEsMTZIOVYxNEgyMVYxNk00LDVINlYxNkg0VjVNNiwxOFYyMEg0VjE4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90RXF1YWxWYXJpYW50ID0gXCJNMTQuMDgsNC42MUwxNS45Miw1LjRMMTQuOCw4SDE5VjEwSDEzLjk1TDEyLjIzLDE0SDE5VjE2SDExLjM4TDkuOTIsMTkuNEw4LjA4LDE4LjYxTDkuMiwxNkg1VjE0SDEwLjA2TDExLjc3LDEwSDVWOEgxMi42M0wxNC4wOCw0LjYxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGUgPSBcIk0xNCwxMFY0LjVMMTkuNSwxME01LDNDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjlMMTUsM0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVNaW51cyA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjlMMTUgM00xNCAxNUg2VjEzSDE0VjE1TTE0IDEwVjQuNUwxOS41IDEwSDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVNaW51c091dGxpbmUgPSBcIk0xNiAzSDRDMi44OSAzIDIgMy44OSAyIDVWMTlDMiAyMC4xIDIuODkgMjEgNCAyMUgyMEMyMS4xMSAyMSAyMiAyMC4xMSAyMiAxOVY5TDE2IDNNMjAgMTlINFY1SDEzVjEySDIwVjE5TTE1IDEwVjQuNUwyMC41IDEwSDE1TTYgMTNIMTJWMTVINlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlTXVsdGlwbGUgPSBcIk0xNiw5SDIxLjVMMTYsMy41VjlNNywySDE3TDIzLDhWMThBMiwyIDAgMCwxIDIxLDIwSDdDNS44OSwyMCA1LDE5LjEgNSwxOFY0QTIsMiAwIDAsMSA3LDJNMyw2VjIySDIxVjI0SDNBMiwyIDAgMCwxIDEsMjJWNkgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVNdWx0aXBsZU91dGxpbmUgPSBcIk0zLDZWMjJIMjFWMjRIM0EyLDIgMCAwLDEgMSwyMlY2SDNNMTYsOUgyMS41TDE2LDMuNVY5TTcsMkgxN0wyMyw4VjE4QTIsMiAwIDAsMSAyMSwyMEg3QzUuODksMjAgNSwxOS4xIDUsMThWNEEyLDIgMCAwLDEgNywyTTcsNFYxOEgyMVYxMUgxNFY0SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZU91dGxpbmUgPSBcIk0xNCwxMEgxOS41TDE0LDQuNVYxME01LDNIMTVMMjEsOVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNNNSw1VjE5SDE5VjEySDEyVjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlUGx1cyA9IFwiTTE0LDEwSDE5LjVMMTQsNC41VjEwTTUsM0gxNUwyMSw5VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM005LDE4SDExVjE1SDE0VjEzSDExVjEwSDlWMTNINlYxNUg5VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVQbHVzT3V0bGluZSA9IFwiTTE1LDEwSDIwLjVMMTUsNC41VjEwTTQsM0gxNkwyMiw5VjE5QTIsMiAwIDAsMSAyMCwyMUg0QzIuODksMjEgMiwyMC4xIDIsMTlWNUMyLDMuODkgMi44OSwzIDQsM000LDVWMTlIMjBWMTJIMTNWNUg0TTgsMTdWMTVINlYxM0g4VjExSDEwVjEzSDEyVjE1SDEwVjE3SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVJlbW92ZSA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjlMMTUgM00xMy41NCAxNi4xMkwxMi4xMiAxNy41NEwxMCAxNS40MUw3Ljg4IDE3LjU0TDYuNDcgMTYuMTJMOC41OSAxNEw2LjQ3IDExLjg4TDcuODggMTAuNDdMMTAgMTIuNTlMMTIuMTIgMTAuNDdMMTMuNTQgMTEuODhMMTEuNDEgMTRMMTMuNTQgMTYuMTJNMTQgMTBWNC41TDE5LjUgMTBIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVJlbW92ZU91dGxpbmUgPSBcIk0xNiAzSDRDMi44OSAzIDIgMy44OSAyIDVWMTlDMiAyMC4xIDIuODkgMjEgNCAyMUgyMEMyMS4xMSAyMSAyMiAyMC4xMSAyMiAxOVY5TDE2IDNNMjAgMTlINFY1SDEzVjEySDIwVjE5TTE1IDEwVjQuNUwyMC41IDEwSDE1TTExLjgzIDEyLjU5TDEwLjQxIDE0TDExLjgzIDE1LjQxTDEwLjQxIDE2LjgzTDkgMTUuNDFMNy41OSAxNi44M0w2LjE3IDE1LjQxTDcuNTkgMTRMNi4xNyAxMi41OUw3LjU5IDExLjE3TDkgMTIuNTlMMTAuNDEgMTEuMTdMMTEuODMgMTIuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVNlYXJjaCA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxMC44MkM1LjU1IDguMzcgOS41OSA4LjQgMTIuMSAxMC45QzE0LjYzIDEzLjQ0IDE0LjYzIDE3LjU2IDEyLjEgMjAuMUMxMS43NCAyMC40NSAxMS4zNSAyMC43NCAxMC45NCAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY5TDE1IDNNMTQgMTBWNC41TDE5LjUgMTBIMTRNNy41IDExQzUgMTEgMyAxMyAzIDE1LjVDMyAxNi4zOCAzLjI1IDE3LjIxIDMuNjkgMTcuOUwuNjEgMjFMMiAyMi4zOUw1LjEyIDE5LjMyQzUuODEgMTkuNzUgNi42MyAyMCA3LjUgMjBDMTAgMjAgMTIgMTggMTIgMTUuNVMxMCAxMSA3LjUgMTFNNy41IDE4QzYuMTIgMTggNSAxNi44OCA1IDE1LjVTNi4xMiAxMyA3LjUgMTMgMTAgMTQuMTIgMTAgMTUuNSA4Ljg4IDE4IDcuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlU2VhcmNoT3V0bGluZSA9IFwiTTE1IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxMC44MkMzLjYgMTAuMjQgNC4yOCA5LjggNSA5LjVWNUgxMlYxMC44MkMxMi4wMyAxMC44NSAxMi4wNyAxMC44NyAxMi4xIDEwLjlDMTIuNDQgMTEuMjQgMTIuNzMgMTEuNjEgMTIuOTcgMTJIMTlWMTlIMTIuOTdDMTIuNzMgMTkuMzkgMTIuNDQgMTkuNzYgMTIuMSAyMC4xQzExLjc0IDIwLjQ1IDExLjM1IDIwLjc0IDEwLjk0IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjlMMTUgM00xNCAxMFY0LjVMMTkuNSAxMEgxNE03LjUgMTFDNSAxMSAzIDEzIDMgMTUuNUMzIDE2LjM4IDMuMjUgMTcuMjEgMy42OSAxNy45TC42MSAyMUwyIDIyLjM5TDUuMTIgMTkuMzJDNS44MSAxOS43NSA2LjYzIDIwIDcuNSAyMEMxMCAyMCAxMiAxOCAxMiAxNS41UzEwIDExIDcuNSAxMU03LjUgMThDNi4xMiAxOCA1IDE2Ljg4IDUgMTUuNVM2LjEyIDEzIDcuNSAxMyAxMCAxNC4xMiAxMCAxNS41IDguODggMTggNy41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVUZXh0ID0gXCJNMTQsMTBIMTkuNUwxNCw0LjVWMTBNNSwzSDE1TDIxLDlWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzTTUsMTJWMTRIMTlWMTJINU01LDE2VjE4SDE0VjE2SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZVRleHRPdXRsaW5lID0gXCJNMTUgM0g1QTIgMiAwIDAgMCAzIDVWMTlBMiAyIDAgMCAwIDUgMjFIMTlBMiAyIDAgMCAwIDIxIDE5VjlMMTUgM00xOSAxOUg1VjVIMTRWMTBIMTlNMTcgMTRIN1YxMkgxN00xNCAxN0g3VjE1SDE0XCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2sgPSBcIk0zLDdWNUg1VjRDNSwyLjg5IDUuOSwyIDcsMkgxM1Y5TDE1LjUsNy41TDE4LDlWMkgxOUMyMC4wNSwyIDIxLDIuOTUgMjEsNFYyMEMyMSwyMS4wNSAyMC4wNSwyMiAxOSwyMkg3QzUuOTUsMjIgNSwyMS4wNSA1LDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTcsMTFINVYxM0g3VjExTTcsN1Y1SDVWN0g3TTcsMTlWMTdINVYxOUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rQ2hlY2sgPSBcIk0xNi43NSAyMi4xNkwxNCAxOS4xNkwxNS4xNiAxOEwxNi43NSAxOS41OUwyMC4zNCAxNkwyMS41IDE3LjQxTDE2Ljc1IDIyLjE2TTMgN1Y1SDVWNEM1IDIuODkgNS45IDIgNyAySDEzVjlMMTUuNSA3LjVMMTggOVYySDE5QzIwLjA1IDIgMjEgMi45NSAyMSA0VjEzLjhDMjAuMTIgMTMuMjkgMTkuMDkgMTMgMTggMTNDMTQuNjkgMTMgMTIgMTUuNjkgMTIgMTlDMTIgMjAuMDkgMTIuMjkgMjEuMTIgMTIuOCAyMkg3QzUuOTUgMjIgNSAyMS4wNSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTUgNVY3SDdWNUg1TTUgMTlIN1YxN0g1VjE5TTUgMTNIN1YxMUg1VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rQ2hlY2tPdXRsaW5lID0gXCJNMTYuNzUgMjIuMTZMMTQgMTkuMTZMMTUuMTYgMThMMTYuNzUgMTkuNTlMMjAuMzQgMTZMMjEuNSAxNy40MUwxNi43NSAyMi4xNk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjA4QzEyLjIgMjAuNzIgMTIuNDUgMjEuMzkgMTIuOCAyMkg3QzUuOTUgMjIgNSAyMS4wNSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzVjVINVY0QzUgMi44OSA1LjkgMiA3IDJIMTlDMjAuMDUgMiAyMSAyLjk1IDIxIDRWMTMuOEMyMC4zOSAxMy40NSAxOS43MiAxMy4yIDE5IDEzLjA4VjRIMTdNNSAxOUg3VjE3SDVWMTlNNSAxM0g3VjExSDVWMTNNNSA3SDdWNUg1VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2tFZGl0ID0gXCJNMjEuMDQgMTMuMTNDMjEuMTggMTMuMTMgMjEuMzEgMTMuMTkgMjEuNDIgMTMuM0wyMi43IDE0LjU4QzIyLjkyIDE0Ljc5IDIyLjkyIDE1LjE0IDIyLjcgMTUuMzVMMjEuNyAxNi4zNUwxOS42NSAxNC4zTDIwLjY1IDEzLjNDMjAuNzYgMTMuMTkgMjAuOSAxMy4xMyAyMS4wNCAxMy4xM00xOS4wNyAxNC44OEwyMS4xMiAxNi45M0wxNS4wNiAyM0gxM1YyMC45NEwxOS4wNyAxNC44OE0zIDdWNUg1VjRDNSAyLjg5IDUuOSAyIDcgMkgxM1Y5TDE1LjUgNy41TDE4IDlWMkgxOUMyMC4wNSAyIDIxIDIuOTUgMjEgNFYxMEwxMSAyMFYyMkg3QzUuOTUgMjIgNSAyMS4wNSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTUgN0g3VjVINVY3TTUgMTFWMTNIN1YxMUg1TTUgMTdWMTlIN1YxN0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rRWRpdE91dGxpbmUgPSBcIk0xOS4wNyAxNC44OEwyMS4xMiAxNi45M0wxNS4wNiAyM0gxM1YyMC45NEwxOS4wNyAxNC44OE0yMS4wNCAxMy4xM0MyMS4xOCAxMy4xMyAyMS4zMSAxMy4xOSAyMS40MiAxMy4zTDIyLjcgMTQuNThDMjIuOTIgMTQuNzkgMjIuOTIgMTUuMTQgMjIuNyAxNS4zNUwyMS43IDE2LjM1TDE5LjY1IDE0LjNMMjAuNjUgMTMuM0MyMC43NiAxMy4xOSAyMC45IDEzLjEzIDIxLjA0IDEzLjEzTTE3IDRWMTBMMTUgOEwxMyAxMFY0SDlWMjBIMTFWMjJIN0M1Ljk1IDIyIDUgMjEuMDUgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuODkgNS45IDIgNyAySDE5QzIwLjA1IDIgMjEgMi45NSAyMSA0VjEwTDE5IDEyVjRIMTdNNSA1VjdIN1Y1SDVNNSAxMVYxM0g3VjExSDVNNSAxN1YxOUg3VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2tNaW51cyA9IFwiTTMgN1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTNWOUwxNS41IDcuNUwxOCA5VjJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC4xIDEzLjMgMTkuMSAxMyAxOCAxM0MxNC43IDEzIDEyIDE1LjcgMTIgMTlDMTIgMjAuMSAxMi4zIDIxLjEgMTIuOCAyMkg3QzUuOSAyMiA1IDIxIDUgMjBWMTlIM1YxN0g1VjEzSDNWMTFINVY3SDNNNSA1VjdIN1Y1SDVNNSAxOUg3VjE3SDVWMTlNNSAxM0g3VjExSDVWMTNNMTQgMThWMjBIMjJWMThIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTm90ZWJvb2tNaW51c091dGxpbmUgPSBcIk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjFDMTIuMiAyMC43IDEyLjUgMjEuNCAxMi44IDIySDdDNS45IDIyIDUgMjEgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC40IDEzLjQgMTkuNyAxMy4yIDE5IDEzLjFWNEgxN001IDE5SDdWMTdINVYxOU01IDEzSDdWMTFINVYxM001IDdIN1Y1SDVWN00xNCAxOFYyMEgyMlYxOEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va011bHRpcGxlID0gXCJNOS4wNSw5SDcuMDZWNkg5LjA1VjQuMDNINy4wNlYzLjAzQzcuMDYsMS45MiA3Ljk1LDEuMDQgOS4wNSwxLjA0SDE1LjAzVjhMMTcuNSw2LjVMMjAsOFYxLjA0SDIxQzIyLjA1LDEuMDQgMjMsMiAyMywzLjAzVjE3QzIzLDE4LjAzIDIyLjA1LDE5IDIxLDE5SDkuMDVDOCwxOSA3LjA2LDE4LjA1IDcuMDYsMTdWMTZIOS4wNVYxNEg3LjA2VjExSDkuMDVWOU0xLDE4SDNWMTVIMVYxM0gzVjEwSDFWOEgzVjVINVY4SDNWMTBINVYxM0gzVjE1SDVWMThIM1YyMEg1VjIxSDIxVjIzSDVBMiwyIDAgMCwxIDMsMjFWMjBIMVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va091dGxpbmUgPSBcIk0xNyw0VjEwTDE1LDhMMTMsMTBWNEg5VjIwSDE5VjRIMTdNMyw3VjVINVY0QzUsMi44OSA1LjksMiA3LDJIMTlDMjAuMDUsMiAyMSwyLjk1IDIxLDRWMjBDMjEsMjEuMDUgMjAuMDUsMjIgMTksMjJIN0M1Ljk1LDIyIDUsMjEuMDUgNSwyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM001LDVWN0g3VjVINU01LDE5SDdWMTdINVYxOU01LDEzSDdWMTFINVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va1BsdXMgPSBcIk0zIDdWNUg1VjRDNSAyLjkgNS45IDIgNyAySDEzVjlMMTUuNSA3LjVMMTggOVYySDE5QzIwIDIgMjEgMyAyMSA0VjEzLjhDMjAuMSAxMy4zIDE5LjEgMTMgMTggMTNDMTQuNyAxMyAxMiAxNS43IDEyIDE5QzEyIDIwLjEgMTIuMyAyMS4xIDEyLjggMjJIN0M1LjkgMjIgNSAyMSA1IDIwVjE5SDNWMTdINVYxM0gzVjExSDVWN0gzTTUgNVY3SDdWNUg1TTUgMTlIN1YxN0g1VjE5TTUgMTNIN1YxMUg1VjEzTTE3IDE1VjE4SDE0VjIwSDE3VjIzSDE5VjIwSDIyVjE4SDE5VjE1SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGVib29rUGx1c091dGxpbmUgPSBcIk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjFDMTIuMiAyMC43IDEyLjUgMjEuNCAxMi44IDIySDdDNS45IDIyIDUgMjEgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC40IDEzLjQgMTkuNyAxMy4yIDE5IDEzLjFWNEgxN001IDE5SDdWMTdINVYxOU01IDEzSDdWMTFINVYxM001IDdIN1Y1SDVWN00xNyAxNVYxOEgxNFYyMEgxN1YyM0gxOVYyMEgyMlYxOEgxOVYxNUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va1JlbW92ZSA9IFwiTTMgN1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTNWOUwxNS41IDcuNUwxOCA5VjJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC4xIDEzLjMgMTkuMSAxMyAxOCAxM0MxNC43IDEzIDEyIDE1LjcgMTIgMTlDMTIgMjAuMSAxMi4zIDIxLjEgMTIuOCAyMkg3QzUuOSAyMiA1IDIxIDUgMjBWMTlIM1YxN0g1VjEzSDNWMTFINVY3SDNNNSA1VjdIN1Y1SDVNNSAxOUg3VjE3SDVWMTlNNSAxM0g3VjExSDVWMTNNMjAuMSAxNS41TDE4IDE3LjZMMTUuOSAxNS41TDE0LjUgMTYuOUwxNi42IDE5TDE0LjUgMjEuMUwxNS45IDIyLjVMMTggMjAuNEwyMC4xIDIyLjVMMjEuNSAyMS4xTDE5LjQgMTlMMjEuNSAxNi45TDIwLjEgMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOb3RlYm9va1JlbW92ZU91dGxpbmUgPSBcIk0xNyA0VjEwTDE1IDhMMTMgMTBWNEg5VjIwSDEyLjFDMTIuMiAyMC43IDEyLjUgMjEuNCAxMi44IDIySDdDNS45IDIyIDUgMjEgNSAyMFYxOUgzVjE3SDVWMTNIM1YxMUg1VjdIM1Y1SDVWNEM1IDIuOSA1LjkgMiA3IDJIMTlDMjAgMiAyMSAzIDIxIDRWMTMuOEMyMC40IDEzLjQgMTkuNyAxMy4yIDE5IDEzLjFWNEgxN001IDE5SDdWMTdINVYxOU01IDEzSDdWMTFINVYxM001IDdIN1Y1SDVWN00yMC4xIDE1LjVMMTggMTcuNkwxNS45IDE1LjVMMTQuNSAxNi45TDE2LjYgMTlMMTQuNSAyMS4xTDE1LjkgMjIuNUwxOCAyMC40TDIwLjEgMjIuNUwyMS41IDIxLjFMMTkuNCAxOUwyMS41IDE2LjlMMjAuMSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaU5vdGlmaWNhdGlvbkNsZWFyQWxsID0gXCJNNSwxM0gxOVYxMUg1TTMsMTdIMTdWMTVIM003LDdWOUgyMVY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpTnBtID0gXCJNNCwxMFYxNEg2VjExSDdWMTRIOFYxMEg0TTksMTBWMTVIMTFWMTRIMTNWMTBIOU0xMiwxMVYxM0gxMVYxMUgxMk0xNCwxMFYxNEgxNlYxMUgxN1YxNEgxOFYxMUgxOVYxNEgyMFYxMEgxNE0zLDlIMjFWMTVIMTJWMTZIOFYxNUgzVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVrZSA9IFwiTTE0LjA0LDEySDEwVjExSDUuNUEzLjUsMy41IDAgMCwxIDIsNy41QTMuNSwzLjUgMCAwLDEgNS41LDRDNi41Myw0IDcuNDUsNC40NCA4LjA5LDUuMTVDOC41LDMuMzUgMTAuMDgsMiAxMiwyQzEzLjkyLDIgMTUuNSwzLjM1IDE1LjkxLDUuMTVDMTYuNTUsNC40NCAxNy40Nyw0IDE4LjUsNEEzLjUsMy41IDAgMCwxIDIyLDcuNUEzLjUsMy41IDAgMCwxIDE4LjUsMTFIMTQuMDRWMTJNMTAsMTYuOVYxNS43Nkg1VjEzLjc2SDE5VjE1Ljc2SDE0LjA0VjE2LjkyTDIwLDE5LjA4QzIwLjU4LDE5LjI5IDIxLDE5Ljg0IDIxLDIwLjVBMS41LDEuNSAwIDAsMSAxOS41LDIySDQuNUExLjUsMS41IDAgMCwxIDMsMjAuNUMzLDE5Ljg0IDMuNDIsMTkuMjkgNCwxOS4wOEwxMCwxNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bGwgPSBcIk0xMiwyQzEzLjg1LDIgMTUuNTUsMi43OCAxNi45LDQuMUwxOC42LDEuOTNMMjAuMTgsMy4xNkwxOC4yLDUuNjhDMTkuMzMsNy40MSAyMCw5LjYgMjAsMTJDMjAsMTcuNSAxNi40MiwyMiAxMiwyMkMxMC4xNSwyMiA4LjQ1LDIxLjIyIDcuMSwxOS45TDUuNCwyMi4wN0wzLjgyLDIwLjg0TDUuOCwxOC4zMkM0LjY3LDE2LjU5IDQsMTQuNCA0LDEyQzQsNi41IDcuNTgsMiAxMiwyTTEyLDRDOC42OSw0IDYsNy41OCA2LDEyQzYsMTMuNzMgNi40MSwxNS4zMyA3LjExLDE2LjY0TDE1LjY3LDUuNjdDMTQuNjYsNC42MiAxMy4zOCw0IDEyLDRNMTIsMjBDMTUuMzEsMjAgMTgsMTYuNDIgMTgsMTJDMTgsMTAuMjcgMTcuNTksOC42NyAxNi44OSw3LjM2TDguMzMsMTguMzNDOS4zNCwxOS4zOCAxMC42MiwyMCAxMiwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljID0gXCJNNCwxN1Y5SDJWN0g2VjE3SDRNMjIsMTVDMjIsMTYuMTEgMjEuMSwxNyAyMCwxN0gxNlYxNUgyMFYxM0gxOFYxMUgyMFY5SDE2VjdIMjBBMiwyIDAgMCwxIDIyLDlWMTAuNUExLjUsMS41IDAgMCwxIDIwLjUsMTJBMS41LDEuNSAwIDAsMSAyMiwxMy41VjE1TTE0LDE1VjE3SDhWMTNDOCwxMS44OSA4LjksMTEgMTAsMTFIMTJWOUg4VjdIMTJBMiwyIDAgMCwxIDE0LDlWMTFDMTQsMTIuMTEgMTMuMSwxMyAxMiwxM0gxMFYxNUgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMCA9IFwiTTExLDdBMiwyIDAgMCwwIDksOVYxNUEyLDIgMCAwLDAgMTEsMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFNMTEsOUgxM1YxNUgxMVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMwQm94ID0gXCJNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0gxMU0xMSw5SDEzVjE1SDExVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzBCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMU0xMyw1QTIsMiAwIDAsMCAxMSw3VjEzQTIsMiAwIDAsMCAxMywxNUgxNUEyLDIgMCAwLDAgMTcsMTNWN0EyLDIgMCAwLDAgMTUsNUgxM00xMyw3SDE1VjEzSDEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzBCb3hNdWx0aXBsZU91dGxpbmUgPSBcIk0yMSwxN1YzSDdWMTdIMjFNMjEsMUEyLDIgMCAwLDEgMjMsM1YxN0EyLDIgMCAwLDEgMjEsMTlIN0EyLDIgMCAwLDEgNSwxN1YzQTIsMiAwIDAsMSA3LDFIMjFNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTEzLDVIMTVBMiwyIDAgMCwxIDE3LDdWMTNBMiwyIDAgMCwxIDE1LDE1SDEzQTIsMiAwIDAsMSAxMSwxM1Y3QTIsMiAwIDAsMSAxMyw1TTEzLDdWMTNIMTVWN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMEJveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNMTEsN0gxM0EyLDIgMCAwLDEgMTUsOVYxNUEyLDIgMCAwLDEgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUEyLDIgMCAwLDEgMTEsN00xMSw5VjE1SDEzVjlIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzBDaXJjbGUgPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QTIsMiAwIDAsMCAxMyw3SDExTTExLDlIMTNWMTVIMTFWOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMENpcmNsZU91dGxpbmUgPSBcIk0xMSw3SDEzQTIsMiAwIDAsMSAxNSw5VjE1QTIsMiAwIDAsMSAxMywxN0gxMUEyLDIgMCAwLDEgOSwxNVY5QTIsMiAwIDAsMSAxMSw3TTExLDlWMTVIMTNWOUgxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzEgPSBcIk0xMCw3VjlIMTJWMTdIMTRWN0gxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUJveCA9IFwiTTE0LDE3SDEyVjlIMTBWN0gxNE0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUJveE11bHRpcGxlID0gXCJNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTE0LDE1SDE2VjVIMTJWN0gxNFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUJveE11bHRpcGxlT3V0bGluZSA9IFwiTTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0xNCwxNUgxNlY1SDEyVjdIMTRNMyw1SDFWMjFBMiwyIDAgMCwwIDMsMjNIMTlWMjFIM1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxQm94T3V0bGluZSA9IFwiTTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMiwxN0gxNFY3SDEwVjlIMTJcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMUNpcmNsZSA9IFwiTTEwLDdWOUgxMlYxN0gxNFY3SDEwTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxQ2lyY2xlT3V0bGluZSA9IFwiTTEwLDdIMTRWMTdIMTJWOUgxMFY3TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMTAgPSBcIk0xMCA3SDZWOUg4VjE3SDEwVjdNMTYgN0gxNEMxMi45IDcgMTIgNy45IDEyIDlWMTVDMTIgMTYuMTEgMTIuOSAxNyAxNCAxN0gxNkMxNy4xMSAxNyAxOCAxNi4xMSAxOCAxNVY5QzE4IDcuOSAxNy4xMSA3IDE2IDdNMTYgMTVIMTRWOUgxNlYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMTBCb3ggPSBcIk0xNCw5SDE2VjE1SDE0VjlNMjEsNVYxOUMyMSwyMC4xMSAyMC4xMSwyMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOUMyMC4xMSwzIDIxLDMuOSAyMSw1TTEwLDdINlY5SDhWMTdIMTBWN00xOCw5QTIsMiAwIDAsMCAxNiw3SDE0QTIsMiAwIDAsMCAxMiw5VjE1QzEyLDE2LjExIDEyLjksMTcgMTQsMTdIMTZDMTcuMTEsMTcgMTgsMTYuMTEgMTgsMTVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMTBCb3hNdWx0aXBsZSA9IFwiTTMgNVYyMUgxOVYyM0gzQzEuOSAyMyAxIDIyLjExIDEgMjFWNUgzTTE2IDEzSDE4VjdIMTZWMTNNMjEgMUg3QzUuOSAxIDUgMS45IDUgM1YxN0M1IDE4LjExIDUuOSAxOSA3IDE5SDIxQzIyLjExIDE5IDIzIDE4LjExIDIzIDE3VjNDMjMgMS45IDIyLjExIDEgMjEgMU0xMiAxNUgxMFY3SDhWNUgxMlYxNU0yMCAxM0MyMCAxNC4xMSAxOS4xMSAxNSAxOCAxNUgxNkMxNC45IDE1IDE0IDE0LjExIDE0IDEzVjdDMTQgNS45IDE0LjkgNSAxNiA1SDE4QzE5LjExIDUgMjAgNS45IDIwIDdWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzEwQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjEgMTdWM0g3VjE3SDIxTTIxIDFDMjIuMTEgMSAyMyAxLjkgMjMgM1YxN0MyMyAxOC4xMSAyMi4xMSAxOSAyMSAxOUg3QzUuOSAxOSA1IDE4LjExIDUgMTdWM0M1IDEuOSA1LjkgMSA3IDFIMjFNMyA1VjIxSDE5VjIzSDNDMS45IDIzIDEgMjIuMTEgMSAyMVY1SDNNMTIgNUg4VjdIMTBWMTVIMTJWNU0xOCA1SDE2QzE0LjkgNSAxNCA1LjkgMTQgN1YxM0MxNCAxNC4xMSAxNC45IDE1IDE2IDE1SDE4QzE5LjExIDE1IDIwIDE0LjExIDIwIDEzVjdDMjAgNS45IDE5LjExIDUgMTggNU0xOCAxM0gxNlY3SDE4VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxMEJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlDMywyMC4xMSAzLjksMjEgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTgsMTdIMTBWN0g2VjlIOE0xNCw3SDE2QzE3LjExLDcgMTgsNy45IDE4LDlWMTVDMTgsMTYuMTEgMTcuMTEsMTcgMTYsMTdIMTRBMiwyIDAgMCwxIDEyLDE1VjlBMiwyIDAgMCwxIDE0LDdNMTQsOVYxNUgxNlY5SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxMENpcmNsZSA9IFwiTTE0IDlIMTZWMTVIMTRWOU0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJTMiAxNy41IDIgMTIgNi41IDIgMTIgMiAyMiA2LjUgMjIgMTJNMTAgN0g2VjlIOFYxN0gxMFY3TTE4IDlDMTggNy45IDE3LjExIDcgMTYgN0gxNEMxMi45IDcgMTIgNy45IDEyIDlWMTVDMTIgMTYuMTEgMTIuOSAxNyAxNCAxN0gxNkMxNy4xMSAxNyAxOCAxNi4xMSAxOCAxNVY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMxMENpcmNsZU91dGxpbmUgPSBcIk0xMiAyQzE3LjUgMiAyMiA2LjUgMjIgMTJTMTcuNSAyMiAxMiAyMiAyIDE3LjUgMiAxMiA2LjUgMiAxMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyUzcuNTggMjAgMTIgMjAgMjAgMTYuNDIgMjAgMTIgMTYuNDIgNCAxMiA0TTEwIDdINlY5SDhWMTdIMTBWN00xNiA3SDE0QzEyLjkgNyAxMiA3LjkgMTIgOVYxNUMxMiAxNi4xMSAxMi45IDE3IDE0IDE3SDE2QzE3LjExIDE3IDE4IDE2LjExIDE4IDE1VjlDMTggNy45IDE3LjExIDcgMTYgN00xNiAxNUgxNFY5SDE2VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMyID0gXCJNOSw3VjlIMTNWMTFIMTFBMiwyIDAgMCwwIDksMTNWMTdIMTFMMTUsMTdWMTVIMTFWMTNIMTNBMiwyIDAgMCwwIDE1LDExVjlBMiwyIDAgMCwwIDEzLDdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMkJveCA9IFwiTTE1LDExQzE1LDEyLjExIDE0LjEsMTMgMTMsMTNIMTFWMTVIMTVWMTdIOVYxM0M5LDExLjg5IDkuOSwxMSAxMSwxMUgxM1Y5SDlWN0gxM0EyLDIgMCAwLDEgMTUsOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMkJveE11bHRpcGxlID0gXCJNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTE3LDEzSDEzVjExSDE1QTIsMiAwIDAsMCAxNyw5VjdDMTcsNS44OSAxNi4xLDUgMTUsNUgxMVY3SDE1VjlIMTNBMiwyIDAgMCwwIDExLDExVjE1SDE3VjEzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMyQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMTcsMTNIMTNWMTFIMTVBMiwyIDAgMCwwIDE3LDlWN0MxNyw1Ljg5IDE2LjEsNSAxNSw1SDExVjdIMTVWOUgxM0EyLDIgMCAwLDAgMTEsMTFWMTVIMTdNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljMkJveE91dGxpbmUgPSBcIk0xNSwxNUgxMVYxM0gxM0EyLDIgMCAwLDAgMTUsMTFWOUMxNSw3Ljg5IDE0LjEsNyAxMyw3SDlWOUgxM1YxMUgxMUEyLDIgMCAwLDAgOSwxM1YxN0gxNU0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzJDaXJjbGUgPSBcIk05LDdWOUgxM1YxMUgxMUEyLDIgMCAwLDAgOSwxM1YxN0gxMUwxNSwxN1YxNUgxMVYxM0gxM0EyLDIgMCAwLDAgMTUsMTFWOUEyLDIgMCAwLDAgMTMsN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMyQ2lyY2xlT3V0bGluZSA9IFwiTTksN0gxM0EyLDIgMCAwLDEgMTUsOVYxMUEyLDIgMCAwLDEgMTMsMTNIMTFWMTVIMTVWMTdIMTFMOSwxN1YxM0EyLDIgMCAwLDEgMTEsMTFIMTNWOUg5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMzID0gXCJNMTUsMTVWMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxNSwxMC41VjlDMTUsNy44OSAxNC4xLDcgMTMsN0g5VjlIMTNWMTFIMTFWMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljM0JveCA9IFwiTTE1LDEwLjVBMS41LDEuNSAwIDAsMSAxMy41LDEyQzE0LjM0LDEyIDE1LDEyLjY3IDE1LDEzLjVWMTVDMTUsMTYuMTEgMTQuMTEsMTcgMTMsMTdIOVYxNUgxM1YxM0gxMVYxMUgxM1Y5SDlWN0gxM0MxNC4xMSw3IDE1LDcuODkgMTUsOU0xOSwzSDVDMy45MSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUMyMC4xMSwyMSAyMSwyMC4xIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzNCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xNywxM1YxMS41QTEuNSwxLjUgMCAwLDAgMTUuNSwxMEExLjUsMS41IDAgMCwwIDE3LDguNVY3QzE3LDUuODkgMTYuMSw1IDE1LDVIMTFWN0gxNVY5SDEzVjExSDE1VjEzSDExVjE1SDE1QTIsMiAwIDAsMCAxNywxM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljM0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTE3LDEzVjExLjVBMS41LDEuNSAwIDAsMCAxNS41LDEwQTEuNSwxLjUgMCAwLDAgMTcsOC41VjdDMTcsNS44OSAxNi4xLDUgMTUsNUgxMVY3SDE1VjlIMTNWMTFIMTVWMTNIMTFWMTVIMTVBMiwyIDAgMCwwIDE3LDEzTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMzQm94T3V0bGluZSA9IFwiTTE1LDE1VjEzLjVBMS41LDEuNSAwIDAsMCAxMy41LDEyQTEuNSwxLjUgMCAwLDAgMTUsMTAuNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdIOVY5SDEzVjExSDExVjEzSDEzVjE1SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1TTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljM0NpcmNsZSA9IFwiTTE1LDE1VjEzLjVBMS41LDEuNSAwIDAsMCAxMy41LDEyQTEuNSwxLjUgMCAwLDAgMTUsMTAuNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdIOVY5SDEzVjExSDExVjEzSDEzVjE1SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWMzQ2lyY2xlT3V0bGluZSA9IFwiTTE1LDE1QTIsMiAwIDAsMSAxMywxN0g5VjE1SDEzVjEzSDExVjExSDEzVjlIOVY3SDEzQTIsMiAwIDAsMSAxNSw5VjEwLjVBMS41LDEuNSAwIDAsMSAxMy41LDEyQTEuNSwxLjUgMCAwLDEgMTUsMTMuNVYxNU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzQgPSBcIk05LDdWMTNIMTNWMTdIMTVWN0gxM1YxMUgxMVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzRCb3ggPSBcIk0xNSwxN0gxM1YxM0g5VjdIMTFWMTFIMTNWN0gxNU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNEJveE11bHRpcGxlID0gXCJNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTE1LDE1SDE3VjVIMTVWOUgxM1Y1SDExVjExSDE1VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM0Qm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTE1LDE1SDE3VjVIMTVWOUgxM1Y1SDExVjExSDE1TTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNEJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNNMTMsMTdIMTVWN0gxM1YxMUgxMVY3SDlWMTNIMTNcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNENpcmNsZSA9IFwiTTksN1YxM0gxM1YxN0gxNVY3SDEzVjExSDExVjdIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNENpcmNsZU91dGxpbmUgPSBcIk05LDdIMTFWMTFIMTNWN0gxNVYxN0gxM1YxM0g5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM1ID0gXCJNOSw3VjEzSDEzVjE1SDlWMTdIMTNBMiwyIDAgMCwwIDE1LDE1VjEzQTIsMiAwIDAsMCAxMywxMUgxMVY5SDE1VjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNUJveCA9IFwiTTE1LDlIMTFWMTFIMTNBMiwyIDAgMCwxIDE1LDEzVjE1QzE1LDE2LjExIDE0LjEsMTcgMTMsMTdIOVYxNUgxM1YxM0g5VjdIMTVNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMU0xNywxM1YxMUMxNyw5Ljg5IDE2LjEsOSAxNSw5SDEzVjdIMTdWNUgxMVYxMUgxNVYxM0gxMVYxNUgxNUEyLDIgMCAwLDAgMTcsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVCb3hNdWx0aXBsZU91dGxpbmUgPSBcIk0xNywxM1YxMUMxNyw5Ljg5IDE2LjEsOSAxNSw5SDEzVjdIMTdWNUgxMVYxMUgxNVYxM0gxMVYxNUgxNUEyLDIgMCAwLDAgMTcsMTNNMyw1SDFWMjFBMiwyIDAgMCwwIDMsMjNIMTlWMjFIM00yMSwxN0g3VjNIMjFNMjEsMUg3QTIsMiAwIDAsMCA1LDNWMTdBMiwyIDAgMCwwIDcsMTlIMjFBMiwyIDAgMCwwIDIzLDE3VjNBMiwyIDAgMCwwIDIxLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVCb3hPdXRsaW5lID0gXCJNMTUsMTVWMTNDMTUsMTEuODkgMTQuMSwxMSAxMywxMUgxMVY5SDE1VjdIOVYxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNU0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzVDaXJjbGUgPSBcIk05LDdWMTNIMTNWMTVIOVYxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0g5TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM1Q2lyY2xlT3V0bGluZSA9IFwiTTksN0gxNVY5SDExVjExSDEzQTIsMiAwIDAsMSAxNSwxM1YxNUEyLDIgMCAwLDEgMTMsMTdIOVYxNUgxM1YxM0g5VjdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM2ID0gXCJNMTEsN0EyLDIgMCAwLDAgOSw5VjE1QTIsMiAwIDAsMCAxMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNBMiwyIDAgMCwwIDEzLDExSDExVjlIMTVWN0gxMU0xMSwxM0gxM1YxNUgxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNkJveCA9IFwiTTE1LDlIMTFWMTFIMTNBMiwyIDAgMCwxIDE1LDEzVjE1QzE1LDE2LjExIDE0LjEsMTcgMTMsMTdIMTFBMiwyIDAgMCwxIDksMTVWOUM5LDcuODkgOS45LDcgMTEsN0gxNU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM00xMSwxNUgxM1YxM0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNkJveE11bHRpcGxlID0gXCJNMTMsMTFIMTVWMTNIMTNWMTFNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTEzLDE1SDE1QTIsMiAwIDAsMCAxNywxM1YxMUMxNyw5Ljg5IDE2LjEsOSAxNSw5SDEzVjdIMTdWNUgxM0EyLDIgMCAwLDAgMTEsN1YxM0MxMSwxNC4xMSAxMS45LDE1IDEzLDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM2Qm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMTMsMTFIMTVWMTNIMTNNMTMsMTVIMTVBMiwyIDAgMCwwIDE3LDEzVjExQzE3LDkuODkgMTYuMSw5IDE1LDlIMTNWN0gxN1Y1SDEzQTIsMiAwIDAsMCAxMSw3VjEzQzExLDE0LjExIDExLjksMTUgMTMsMTVNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljNkJveE91dGxpbmUgPSBcIk0xMSwxM0gxM1YxNUgxMU0xMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTNDMTUsMTEuODkgMTQuMSwxMSAxMywxMUgxMVY5SDE1VjdIMTFBMiwyIDAgMCwwIDksOVYxNUM5LDE2LjExIDkuOSwxNyAxMSwxN00xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzZDaXJjbGUgPSBcIk0xMSw3QTIsMiAwIDAsMCA5LDlWMTVBMiwyIDAgMCwwIDExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxM0EyLDIgMCAwLDAgMTMsMTFIMTFWOUgxNVY3SDExTTExLDEzSDEzVjE1SDExVjEzTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM2Q2lyY2xlT3V0bGluZSA9IFwiTTExLDdIMTVWOUgxMVYxMUgxM0EyLDIgMCAwLDEgMTUsMTNWMTVBMiwyIDAgMCwxIDEzLDE3SDExQTIsMiAwIDAsMSA5LDE1VjlBMiwyIDAgMCwxIDExLDdNMTEsMTNWMTVIMTNWMTNIMTFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM3ID0gXCJNMTEsMTdMMTUsOVY3SDlWOUgxM0w5LDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzdCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xMSwxN0wxNSw5VjdIOVY5SDEzTDksMTdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzdCb3hNdWx0aXBsZSA9IFwiTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xMywxNUwxNyw3VjVIMTFWN0gxNUwxMSwxNUgxM00yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljN0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTEzLDE1TDE3LDdWNUgxMVY3SDE1TDExLDE1TTIxLDE3SDdWM0gyMU0yMSwxSDdBMiwyIDAgMCwwIDUsM1YxN0EyLDIgMCAwLDAgNywxOUgyMUEyLDIgMCAwLDAgMjMsMTdWM0EyLDIgMCAwLDAgMjEsMU0zLDVIMVYyMUEyLDIgMCAwLDAgMywyM0gxOVYyMUgzVjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzdCb3hPdXRsaW5lID0gXCJNMTEsMTdMMTUsOVY3SDlWOUgxM0w5LDE3TTE5LDE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljN0NpcmNsZSA9IFwiTTExLDE3TDE1LDlWN0g5VjlIMTNMOSwxN0gxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljN0NpcmNsZU91dGxpbmUgPSBcIk0xMSwxN0g5TDEzLDlIOVY3SDE1VjlMMTEsMTdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM4ID0gXCJNMTEsMTNIMTNWMTVIMTFNMTEsOUgxM1YxMUgxMU0xMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxNSwxMC41VjlDMTUsNy44OSAxNC4xLDcgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgOSwxMy41VjE1QzksMTYuMTEgOS45LDE3IDExLDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzhCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xMSwxN0gxM0EyLDIgMCAwLDAgMTUsMTVWMTMuNUExLjUsMS41IDAgMCwwIDEzLjUsMTJBMS41LDEuNSAwIDAsMCAxNSwxMC41VjlDMTUsNy44OSAxNC4xLDcgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjEwLjVBMS41LDEuNSAwIDAsMCAxMC41LDEyQTEuNSwxLjUgMCAwLDAgOSwxMy41VjE1QzksMTYuMTEgOS45LDE3IDExLDE3TTExLDEzSDEzVjE1SDExVjEzTTExLDlIMTNWMTFIMTFWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOEJveE11bHRpcGxlID0gXCJNMTMsMTFIMTVWMTNIMTNWMTFNMTMsN0gxNVY5SDEzVjdNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTEzLDE1SDE1QTIsMiAwIDAsMCAxNywxM1YxMS41QTEuNSwxLjUgMCAwLDAgMTUuNSwxMEExLjUsMS41IDAgMCwwIDE3LDguNVY3QzE3LDUuODkgMTYuMSw1IDE1LDVIMTNBMiwyIDAgMCwwIDExLDdWOC41QTEuNSwxLjUgMCAwLDAgMTIuNSwxMEExLjUsMS41IDAgMCwwIDExLDExLjVWMTNDMTEsMTQuMTEgMTEuOSwxNSAxMywxNU0yMSwxQTIsMiAwIDAsMSAyMywzVjE3QTIsMiAwIDAsMSAyMSwxOUg3QTIsMiAwIDAsMSA1LDE3VjNBMiwyIDAgMCwxIDcsMUgyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOEJveE11bHRpcGxlT3V0bGluZSA9IFwiTTEzLDExSDE1VjEzSDEzTTEzLDdIMTVWOUgxM00xMywxNUgxNUEyLDIgMCAwLDAgMTcsMTNWMTEuNUExLjUsMS41IDAgMCwwIDE1LjUsMTBBMS41LDEuNSAwIDAsMCAxNyw4LjVWN0MxNyw1Ljg5IDE2LjEsNSAxNSw1SDEzQTIsMiAwIDAsMCAxMSw3VjguNUExLjUsMS41IDAgMCwwIDEyLjUsMTBBMS41LDEuNSAwIDAsMCAxMSwxMS41VjEzQzExLDE0LjExIDExLjksMTUgMTMsMTVNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOEJveE91dGxpbmUgPSBcIk0xMSwxM0gxM1YxNUgxMU0xMSw5SDEzVjExSDExTTExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEwLjVWOUMxNSw3Ljg5IDE0LjEsNyAxMyw3SDExQTIsMiAwIDAsMCA5LDlWMTAuNUExLjUsMS41IDAgMCwwIDEwLjUsMTJBMS41LDEuNSAwIDAsMCA5LDEzLjVWMTVDOSwxNi4xMSA5LjksMTcgMTEsMTdNMTksMTlINVY1SDE5TTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM4Q2lyY2xlID0gXCJNMTEsMTNIMTNWMTVIMTFWMTNNMTEsOUgxM1YxMUgxMVY5TTExLDE3SDEzQTIsMiAwIDAsMCAxNSwxNVYxMy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxMkExLjUsMS41IDAgMCwwIDE1LDEwLjVWOUMxNSw3Ljg5IDE0LjEsNyAxMyw3SDExQTIsMiAwIDAsMCA5LDlWMTAuNUExLjUsMS41IDAgMCwwIDEwLjUsMTJBMS41LDEuNSAwIDAsMCA5LDEzLjVWMTVDOSwxNi4xMSA5LjksMTcgMTEsMTdNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzhDaXJjbGVPdXRsaW5lID0gXCJNMTEsMTNWMTVIMTNWMTNIMTFNMTEsOVYxMUgxM1Y5SDExTTExLDE3QTIsMiAwIDAsMSA5LDE1VjEzLjVBMS41LDEuNSAwIDAsMSAxMC41LDEyQTEuNSwxLjUgMCAwLDEgOSwxMC41VjlBMiwyIDAgMCwxIDExLDdIMTNBMiwyIDAgMCwxIDE1LDlWMTAuNUExLjUsMS41IDAgMCwxIDEzLjUsMTJBMS41LDEuNSAwIDAsMSAxNSwxMy41VjE1QTIsMiAwIDAsMSAxMywxN0gxMU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzkgPSBcIk0xMywxN0EyLDIgMCAwLDAgMTUsMTVWOUEyLDIgMCAwLDAgMTMsN0gxMUEyLDIgMCAwLDAgOSw5VjExQTIsMiAwIDAsMCAxMSwxM0gxM1YxNUg5VjE3SDEzTTEzLDExSDExVjlIMTNWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xMywxMUgxMVY5SDEzVjExTTEzLDdIMTFBMiwyIDAgMCwwIDksOVYxMUM5LDEyLjExIDkuOSwxMyAxMSwxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlCb3hNdWx0aXBsZSA9IFwiTTE1LDlIMTNWN0gxNVY5TTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xNSw1SDEzQTIsMiAwIDAsMCAxMSw3VjlDMTEsMTAuMTEgMTEuOSwxMSAxMywxMUgxNVYxM0gxMVYxNUgxNUEyLDIgMCAwLDAgMTcsMTNWN0MxNyw1Ljg5IDE2LjEsNSAxNSw1TTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5Qm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMTUsOUgxM1Y3SDE1TTE1LDVIMTNBMiwyIDAgMCwwIDExLDdWOUMxMSwxMC4xMSAxMS45LDExIDEzLDExSDE1VjEzSDExVjE1SDE1QTIsMiAwIDAsMCAxNywxM1Y3QzE3LDUuODkgMTYuMSw1IDE1LDVNMjEsMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTMsNUgxVjIxQTIsMiAwIDAsMCAzLDIzSDE5VjIxSDNWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOUJveE91dGxpbmUgPSBcIk0xMywxMUgxMVY5SDEzTTEzLDdIMTFBMiwyIDAgMCwwIDksOVYxMUM5LDEyLjExIDkuOSwxMyAxMSwxM0gxM1YxNUg5VjE3SDEzQTIsMiAwIDAsMCAxNSwxNVY5QzE1LDcuODkgMTQuMSw3IDEzLDdNMTksMTlINVY1SDE5TTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5Q2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTMsMTdBMiwyIDAgMCwwIDE1LDE1VjlBMiwyIDAgMCwwIDEzLDdIMTFBMiwyIDAgMCwwIDksOVYxMUEyLDIgMCAwLDAgMTEsMTNIMTNWMTVIOVYxN0gxM00xMywxMUgxMVY5SDEzVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5Q2lyY2xlT3V0bGluZSA9IFwiTTEzLDE3SDlWMTVIMTNWMTNIMTFBMiwyIDAgMCwxIDksMTFWOUEyLDIgMCAwLDEgMTEsN0gxM0EyLDIgMCAwLDEgMTUsOVYxNUEyLDIgMCAwLDEgMTMsMTdNMTMsMTFWOUgxMVYxMUgxM00xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlQbHVzID0gXCJNMTkgMTFIMTdWOUgxNVYxMUgxM1YxM0gxNVYxNUgxN1YxM0gxOVYxMU0xMCA3SDhDNi45IDcgNiA3LjkgNiA5VjExQzYgMTIuMTEgNi45IDEzIDggMTNIMTBWMTVINlYxN0gxMEMxMS4xMSAxNyAxMiAxNi4xMSAxMiAxNVY5QzEyIDcuODkgMTEuMSA3IDEwIDdNMTAgMTFIOFY5SDEwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5UGx1c0JveCA9IFwiTTIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1TTE5LDExSDE3VjlIMTVWMTFIMTNWMTNIMTVWMTVIMTdWMTNIMTlWMTFNMTAsN0g4QTIsMiAwIDAsMCA2LDlWMTFDNiwxMi4xMSA2LjksMTMgOCwxM0gxMFYxNUg2VjE3SDEwQTIsMiAwIDAsMCAxMiwxNVY5QzEyLDcuODkgMTEuMSw3IDEwLDdNOCw5SDEwVjExSDhWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOVBsdXNCb3hNdWx0aXBsZSA9IFwiTTExLDlWOEgxMlY5SDExTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdBMiwyIDAgMCwxIDIxLDE5SDdBMiwyIDAgMCwxIDUsMTdWM0EyLDIgMCAwLDEgNywxSDIxTTMsNVYyMUgxOVYyM0gzQTIsMiAwIDAsMSAxLDIxVjVIM00xNSw5VjExSDE3VjEzSDE5VjExSDIxVjlIMTlWN0gxN1Y5SDE1TTE0LDEyVjhDMTQsNi44OSAxMy4xLDYgMTIsNkgxMUEyLDIgMCAwLDAgOSw4VjlDOSwxMC4xMSA5LjksMTEgMTEsMTFIMTJWMTJIOVYxNEgxMkEyLDIgMCAwLDAgMTQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnVtZXJpYzlQbHVzQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNMjEsOUgxOVY3SDE3VjlIMTVWMTFIMTdWMTNIMTlWMTFIMjFWMTdIN1YzSDIxTTIxLDFIN0EyLDIgMCAwLDAgNSwzVjE3QTIsMiAwIDAsMCA3LDE5SDIxQTIsMiAwIDAsMCAyMywxN1YzQTIsMiAwIDAsMCAyMSwxTTExLDlWOEgxMlY5TTE0LDEyVjhDMTQsNi44OSAxMy4xLDYgMTIsNkgxMUEyLDIgMCAwLDAgOSw4VjlDOSwxMC4xMSA5LjksMTEgMTEsMTFIMTJWMTJIOVYxNEgxMkEyLDIgMCAwLDAgMTQsMTJNMyw1SDFWMjFBMiwyIDAgMCwwIDMsMjNIMTlWMjFIM1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5UGx1c0JveE91dGxpbmUgPSBcIk0xOSwxMUgxN1Y5SDE1VjExSDEzVjEzSDE1VjE1SDE3VjEzSDE5VjE5SDVWNUgxOU0xOSwzSDVBMiwyIDAgMCwwIDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM005LDExVjEwSDEwVjExTTEyLDE0VjEwQzEyLDguODkgMTEuMSw4IDEwLDhIOUEyLDIgMCAwLDAgNywxMFYxMUM3LDEyLjExIDcuOSwxMyA5LDEzSDEwVjE0SDdWMTZIMTBBMiwyIDAgMCwwIDEyLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51bWVyaWM5UGx1c0NpcmNsZSA9IFwiTTE5LDExSDE3VjlIMTVWMTFIMTNWMTNIMTVWMTVIMTdWMTNIMTlWMTFNMTAsN0g4QTIsMiAwIDAsMCA2LDlWMTFDNiwxMi4xMSA2LjksMTMgOCwxM0gxMFYxNUg2VjE3SDEwQTIsMiAwIDAsMCAxMiwxNVY5QzEyLDcuODkgMTEuMSw3IDEwLDdNOCw5SDEwVjExSDhWOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljOVBsdXNDaXJjbGVPdXRsaW5lID0gXCJNMTksMTFWMTNIMTdWMTVIMTVWMTNIMTNWMTFIMTVWOUgxN1YxMUgxOU0xMCw3QTIsMiAwIDAsMSAxMiw5VjE1QzEyLDE2LjExIDExLjEsMTcgMTAsMTdINlYxNUgxMFYxM0g4QTIsMiAwIDAsMSA2LDExVjlDNiw3Ljg5IDYuOSw3IDgsN0gxME04LDlWMTFIMTBWOUg4TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljTmVnYXRpdmUxID0gXCJNMTMgN1Y5SDE1VjE3SDE3VjdIMTNNMTEgMTNINVYxMUgxMVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlOdW1lcmljUG9zaXRpdmUxID0gXCJNMTMgN1Y5SDE1VjE3SDE3VjdIMTNNMTEgMTNIOVYxNUg3VjEzSDVWMTFIN1Y5SDlWMTFIMTFWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnV0ID0gXCJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsN0E1LDUgMCAwLDAgNywxMkE1LDUgMCAwLDAgMTIsMTdBNSw1IDAgMCwwIDE3LDEyQTUsNSAwIDAsMCAxMiw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU51dHJpdGlvbiA9IFwiTTIyLDE4QTQsNCAwIDAsMSAxOCwyMkgxNEE0LDQgMCAwLDEgMTAsMThWMTZIMjJWMThNNCwzSDE0QTIsMiAwIDAsMSAxNiw1VjE0SDhWMTlINEEyLDIgMCAwLDEgMiwxN1Y1QTIsMiAwIDAsMSA0LDNNNCw2VjhINlY2SDRNMTQsOFY2SDhWOEgxNE00LDEwVjEySDZWMTBINE04LDEwVjEySDE0VjEwSDhNNCwxNFYxNkg2VjE0SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpTnV4dCA9IFwiTTIxLjggMTguMzZMMTYuMDMgOC4wOEMxNS45MyA4IDE1LjYzIDcuNDMgMTUuMDMgNy40M0MxNC43OCA3LjQzIDE0LjQzIDcuNTMgMTQuMDcgOC4wOEwxMy4zMyA5LjI2TDExLjMxIDUuNjVDMTEuMjYgNS41NSAxMC45MSA1IDEwLjMxIDVDMTAuMDYgNSA5LjY2IDUuMSA5LjM2IDUuNjVMMi4xOCAxOC4zMUMyLjEzIDE4LjQxIDEuODMgMTkgMi4xMyAxOS41QzIuMjMgMTkuNzUgMi41MyAyMCAzLjE5IDIwSDIwLjg1QzIwLjk1IDIwIDIxLjYgMjAgMjEuOSAxOS41QzIyIDE5LjI2IDIyLjEgMTguODYgMjEuOCAxOC4zNk04LjEgMTguMzFMNy45NSAxOC44NkgzLjI0TDEwLjM2IDYuMzRMMTIuNjYgMTAuNDdMOC4xIDE4LjMxTTkuMjEgMTguODZMMTMuMzIgMTEuNjZMMTcuNSAxOC44Nkg5LjIxTTE4Ljc0IDE4Ljg2TDE4LjU0IDE4LjMxTDE0IDEwLjQ2TDE1LjAzIDguNzNMMjAuNzUgMTguODZIMTguNzRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2FyID0gXCJNMjAuMjMsMTUuMjFDMTguNzcsMTMuNzUgMTQuOTcsMTAuMiAxMi43NywxMS4yN0w0LjUsM0wzLDQuNUwxMS4yOCwxMi43OUMxMC4zLDE1IDEzLjg4LDE4LjYyIDE1LjM1LDIwLjA4QzE3LjExLDIxLjg0IDE4LjI2LDIwLjkyIDE5LjYxLDE5LjU3QzIxLjEsMTguMDggMjEuNjEsMTYuNjEgMjAuMjMsMTUuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2NhcmluYSA9IFwiTTIwLDEyQzE2LjgsMTAuNCAxMy40LDkuNyAxMC44LDkuM0w5LjcsNS45QzkuMyw0LjggNy43LDQuOCA3LjMsNS45TDYuMyw5QzMuOSw5LjQgMiwxMS41IDIsMTRDMiwxNi44IDQuMiwxOSA3LDE5QzcsMTkgMTQsMTkgMjAsMTZDMjAsMTYgMjIsMTUgMjIsMTRDMjIsMTMgMjAsMTIgMjAsMTJNNSwxNEM0LjQsMTQgNCwxMy42IDQsMTNDNCwxMi40IDQuNCwxMiA1LDEyQzUuNiwxMiA2LDEyLjQgNiwxM0M2LDEzLjUgNS42LDE0IDUsMTRNNywxN0M2LjQsMTcgNiwxNi42IDYsMTZDNiwxNS40IDYuNCwxNSA3LDE1QzcuNiwxNSA4LDE1LjQgOCwxNkM4LDE2LjUgNy42LDE3IDcsMTdNOSwxNEM4LjQsMTQgOCwxMy42IDgsMTNDOCwxMi40IDguNCwxMiA5LDEyQzkuNiwxMiAxMCwxMi40IDEwLDEzQzEwLDEzLjUgOS42LDE0IDksMTRNMTEsMTdDMTAuNCwxNyAxMCwxNi42IDEwLDE2QzEwLDE1LjQgMTAuNCwxNSAxMSwxNUMxMS42LDE1IDEyLDE1LjQgMTIsMTZDMTIsMTYuNSAxMS42LDE3IDExLDE3TTE2LDE0QzE1LjQsMTQgMTUsMTMuNiAxNSwxM0MxNSwxMi40IDE1LjQsMTIgMTYsMTJDMTYuNiwxMiAxNywxMi40IDE3LDEzQzE3LDEzLjUgMTYuNiwxNCAxNiwxNE0xOSwxNUMxOC40LDE1IDE4LDE0LjYgMTgsMTRDMTgsMTMuNCAxOC40LDEzIDE5LDEzQzE5LjYsMTMgMjAsMTMuNCAyMCwxNEMyMCwxNC41IDE5LjYsMTUgMTksMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2NpID0gXCJNMiAyVjIySDIyVjJNMTkuMTIgMTkuMDNINC44N1Y1SDE5LjEzVjE5LjAzTTE0LjgzIDEwLjcxSDE3LjY5VjE3LjU5SDE0LjgzTTE0LjgzIDYuNDFIMTcuNjlWOS4yN0gxNC44M002LjMgNi40MVYxNy41OUgxMy40VjE0LjcySDkuMTdWOS4yOEgxMy40VjYuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2NyID0gXCJNMiA1VjE5SDE0VjE3SDEyQzEwLjg5IDE3IDEwIDE2LjExIDEwIDE1VjlDMTAgNy44OSAxMC44OSA3IDEyIDdIMTRWNU0xNCA3VjlIMTZWN00xNCA5SDEyVjE1SDE0TTE0IDE1VjE3SDE2VjE1TTUgN0g3QzguMTEgNyA5IDcuODkgOSA5VjE1QzkgMTYuMTEgOC4xMSAxNyA3IDE3SDVDMy44OSAxNyAzIDE2LjExIDMgMTVWOUMzIDcuODkgMy44OSA3IDUgN00xNyA3VjE3SDE5VjEzSDIwVjE0SDIxVjE3SDIzVjE0SDIyVjEySDIzVjhIMjJWN001IDlWMTVIN1Y5TTE5IDlIMjFWMTFIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2N0YWdvbiA9IFwiTTE1LjczLDNIOC4yN0wzLDguMjdWMTUuNzNMOC4yNywyMUgxNS43M0wyMSwxNS43M1Y4LjI3XCI7XHJcbmV4cG9ydCB2YXIgbWRpT2N0YWdvbk91dGxpbmUgPSBcIk04LjI3LDNMMyw4LjI3VjE1LjczTDguMjcsMjFIMTUuNzNDMTcuNSwxOS4yNCAyMSwxNS43MyAyMSwxNS43M1Y4LjI3TDE1LjczLDNNOS4xLDVIMTQuOUwxOSw5LjFWMTQuOUwxNC45LDE5SDkuMUw1LDE0LjlWOS4xXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2N0YWdyYW0gPSBcIk0yLjIsMTYuMDZMMy44OCwxMkwyLjIsNy45NEw2LjI2LDYuMjZMNy45NCwyLjJMMTIsMy44OEwxNi4wNiwyLjJMMTcuNzQsNi4yNkwyMS44LDcuOTRMMjAuMTIsMTJMMjEuOCwxNi4wNkwxNy43NCwxNy43NEwxNi4wNiwyMS44TDEyLDIwLjEyTDcuOTQsMjEuOEw2LjI2LDE3Ljc0TDIuMiwxNi4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlPY3RhZ3JhbU91dGxpbmUgPSBcIk0yLjIsMTYuMDZMMy44OCwxMkwyLjIsNy45NEw2LjI2LDYuMjZMNy45NCwyLjJMMTIsMy44OEwxNi4wNiwyLjJMMTcuNzQsNi4yNkwyMS44LDcuOTRMMjAuMTIsMTJMMjEuOCwxNi4wNkwxNy43NCwxNy43NEwxNi4wNiwyMS44TDEyLDIwLjEyTDcuOTQsMjEuOEw2LjI2LDE3Ljc0TDIuMiwxNi4wNk00LjgxLDlMNi4wNSwxMkw0LjgxLDE1TDcuNzksMTYuMjFMOSwxOS4xOUwxMiwxNy45NUwxNSwxOS4xOUwxNi4yMSwxNi4yMUwxOS4xOSwxNUwxNy45NSwxMkwxOS4xOSw5TDE2LjIxLDcuNzlMMTUsNC44MUwxMiw2LjA1TDksNC44MUw3Ljc5LDcuNzlMNC44MSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9kbm9rbGFzc25pa2kgPSBcIk0xNy44MywxMi43NEMxNy41NSwxMi4xNyAxNi43NiwxMS42OSAxNS43MSwxMi41QzE0LjI4LDEzLjY0IDEyLDEzLjY0IDEyLDEzLjY0QzEyLDEzLjY0IDkuNzIsMTMuNjQgOC4yOSwxMi41QzcuMjQsMTEuNjkgNi40NSwxMi4xNyA2LjE3LDEyLjc0QzUuNjcsMTMuNzQgNi4yMywxNC4yMyA3LjUsMTUuMDRDOC41OSwxNS43NCAxMC4wOCwxNiAxMS4wNCwxNi4xTDEwLjI0LDE2LjlDOS4xLDE4LjAzIDgsMTkuMTIgNy4yNSwxOS44OEM2LjgsMjAuMzQgNi44LDIxLjA3IDcuMjUsMjEuNUw3LjM5LDIxLjY2QzcuODQsMjIuMTEgOC41OCwyMi4xMSA5LjAzLDIxLjY2TDEyLDE4LjY4QzEzLjE1LDE5LjgxIDE0LjI0LDIwLjkgMTUsMjEuNjZDMTUuNDUsMjIuMTEgMTYuMTgsMjIuMTEgMTYuNjQsMjEuNjZMMTYuNzcsMjEuNUMxNy4yMywyMS4wNyAxNy4yMywyMC4zNCAxNi43NywxOS44OEwxMy43OSwxNi45TDEzLDE2LjA5QzEzLjk1LDE2IDE1LjQyLDE1LjczIDE2LjUsMTUuMDRDMTcuNzcsMTQuMjMgMTguMzMsMTMuNzQgMTcuODMsMTIuNzRNMTIsNC41N0MxMy4zOCw0LjU3IDE0LjUsNS42OSAxNC41LDcuMDZDMTQuNSw4LjQ0IDEzLjM4LDkuNTUgMTIsOS41NUMxMC42Miw5LjU1IDkuNSw4LjQ0IDkuNSw3LjA2QzkuNSw1LjY5IDEwLjYyLDQuNTcgMTIsNC41N00xMiwxMi4xMkMxNC44LDEyLjEyIDE3LjA2LDkuODYgMTcuMDYsNy4wNkMxNy4wNiw0LjI3IDE0LjgsMiAxMiwyQzkuMiwyIDYuOTQsNC4yNyA2Ljk0LDcuMDZDNi45NCw5Ljg2IDkuMiwxMi4xMiAxMiwxMi4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPZmZlciA9IFwiTTIxIDEzQzIxLjYgMTMgMjIuMSAxMy4yIDIyLjQgMTMuNkMyMi44IDE0IDIzIDE0LjUgMjMgMTVMMTUgMThMOCAxNlY3SDkuOUwxNy4yIDkuN0MxNy43IDkuOSAxOCAxMC4zIDE4IDEwLjhDMTggMTEuMSAxNy45IDExLjQgMTcuNyAxMS42QzE3LjUgMTEuOCAxNy4yIDEyIDE2LjggMTJIMTRMMTIuMyAxMS4zTDEyIDEyLjJMMTQgMTNIMjFNMiA3SDZWMThIMlY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9mZmljZUJ1aWxkaW5nID0gXCJNNSwzVjIxSDExVjE3LjVIMTNWMjFIMTlWM0g1TTcsNUg5VjdIN1Y1TTExLDVIMTNWN0gxMVY1TTE1LDVIMTdWN0gxNVY1TTcsOUg5VjExSDdWOU0xMSw5SDEzVjExSDExVjlNMTUsOUgxN1YxMUgxNVY5TTcsMTNIOVYxNUg3VjEzTTExLDEzSDEzVjE1SDExVjEzTTE1LDEzSDE3VjE1SDE1VjEzTTcsMTdIOVYxOUg3VjE3TTE1LDE3SDE3VjE5SDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9mZmljZUJ1aWxkaW5nTWFya2VyID0gXCJNMTUuMTkgMjFDMTQuMTIgMTkuNDMgMTMgMTcuMzYgMTMgMTUuNUMxMyAxMy42NyAxMy45NiAxMiAxNS40IDExSDE1VjlIMTdWMTAuMjNDMTcuNSAxMC4wOSAxOCAxMCAxOC41IDEwQzE4LjY3IDEwIDE4Ljg0IDEwIDE5IDEwLjAzVjNINVYyMUgxMVYxNy41SDEzVjIxSDE1LjE5TTE1IDVIMTdWN0gxNVY1TTkgMTlIN1YxN0g5VjE5TTkgMTVIN1YxM0g5VjE1TTkgMTFIN1Y5SDlWMTFNOSA3SDdWNUg5VjdNMTEgNUgxM1Y3SDExVjVNMTEgOUgxM1YxMUgxMVY5TTExIDE1VjEzSDEzVjE1SDExTTE4LjUgMTJDMTYuNiAxMiAxNSAxMy42MSAxNSAxNS41QzE1IDE4LjExIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xMSAyMiAxNS41QzIyIDEzLjYxIDIwLjQgMTIgMTguNSAxMk0xOC41IDE2LjgxQzE3LjggMTYuODEgMTcuMyAxNi4yMSAxNy4zIDE1LjYxQzE3LjMgMTQuOTEgMTcuOSAxNC40MSAxOC41IDE0LjQxUzE5LjcgMTUgMTkuNyAxNS42MUMxOS44IDE2LjIxIDE5LjIgMTYuODEgMTguNSAxNi44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlPZmZpY2VCdWlsZGluZ01hcmtlck91dGxpbmUgPSBcIk0xNSA5SDE3VjExSDE1VjlNMTcgNUgxNVY3SDE3VjVNMTEgMTVIMTNWMTNIMTFWMTVNMTMgNUgxMVY3SDEzVjVNMTEgMTFIMTNWOUgxMVYxMU05IDVIN1Y3SDlWNU05IDlIN1YxMUg5VjlNMTQuNTUgMjFIMTNWMTcuNUgxMVYyMUg1VjNIMTlWMTEuMDNDMTkuNzEgMTEuMDkgMjAuMzkgMTEuMzEgMjEgMTEuNjNWMUgzVjIzSDE1LjkxQzE1LjUgMjIuNDQgMTUgMjEuNzYgMTQuNTUgMjFNNyAxOUg5VjE3SDdWMTlNOSAxM0g3VjE1SDlWMTNNMjIgMTYuNUMyMiAxOS4xIDE4LjUgMjMgMTguNSAyM1MxNSAxOS4xIDE1IDE2LjVDMTUgMTQuNiAxNi42IDEzIDE4LjUgMTNTMjIgMTQuNiAyMiAxNi41TTE5LjcgMTYuNkMxOS43IDE2IDE5LjEgMTUuNCAxOC41IDE1LjRTMTcuMyAxNS45IDE3LjMgMTYuNkMxNy4zIDE3LjIgMTcuOCAxNy44IDE4LjUgMTcuOFMxOS44IDE3LjIgMTkuNyAxNi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9mZmljZUJ1aWxkaW5nT3V0bGluZSA9IFwiTTE5IDNWMjFIMTNWMTcuNUgxMVYyMUg1VjNIMTlNMTUgN0gxN1Y1SDE1VjdNMTEgN0gxM1Y1SDExVjdNNyA3SDlWNUg3VjdNMTUgMTFIMTdWOUgxNVYxMU0xMSAxMUgxM1Y5SDExVjExTTcgMTFIOVY5SDdWMTFNMTUgMTVIMTdWMTNIMTVWMTVNMTEgMTVIMTNWMTNIMTFWMTVNNyAxNUg5VjEzSDdWMTVNMTUgMTlIMTdWMTdIMTVWMTlNNyAxOUg5VjE3SDdWMTlNMjEgMUgzVjIzSDIxVjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsID0gXCJNMjIsMTIuNUMyMiwxMi41IDI0LDE0LjY3IDI0LDE2QTIsMiAwIDAsMSAyMiwxOEEyLDIgMCAwLDEgMjAsMTZDMjAsMTQuNjcgMjIsMTIuNSAyMiwxMi41TTYsNkgxMEExLDEgMCAwLDEgMTEsN0ExLDEgMCAwLDEgMTAsOEg5VjEwSDExQzExLjc0LDEwIDEyLjM5LDEwLjQgMTIuNzMsMTFMMTkuMjQsNy4yNEwyMi41LDkuMTNDMjMsOS40IDIzLjE0LDEwIDIyLjg3LDEwLjVDMjIuNTksMTAuOTcgMjIsMTEuMTQgMjEuNSwxMC44NkwxOS40LDkuNjVMMTUuNzUsMTUuOTdDMTUuNDEsMTYuNTggMTQuNzUsMTcgMTQsMTdINUEyLDIgMCAwLDEgMywxNVYxMkEyLDIgMCAwLDEgNSwxMEg3VjhINkExLDEgMCAwLDEgNSw3QTEsMSAwIDAsMSA2LDZNNSwxMlYxNUgxNEwxNi4wNiwxMS40M0wxMi42LDEzLjQzTDExLjY5LDEySDVNMC4zOCw5LjIxTDIuMDksNy41QzIuNSw3LjExIDMuMTEsNy4xMSAzLjUsNy41QzMuODksNy44OSAzLjg5LDguNSAzLjUsOC45MUwxLjc5LDEwLjYyQzEuNCwxMSAwLjc3LDExIDAuMzgsMTAuNjJDMCwxMC4yMyAwLDkuNiAwLjM4LDkuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsTGFtcCA9IFwiTTUsMjBIMTZWMjJINU0xMSw1SDEwQTIsMiAwIDAsMCA4LDdIMTNBMiwyIDAgMCwwIDExLDVNMTYsOEgyMkEyLDIgMCAwLDEgMjAsMTBIMTlBNCw0IDAgMCwwIDE1LDE0VjE1QTQsNCAwIDAsMSAxMSwxOUgxMEE0LDQgMCAwLDEgNiwxNUg0QTIsMiAwIDAsMSAyLDEzVjEwQTIsMiAwIDAsMSA0LDhNNiwxMEg0VjEzSDZNMTksNUEyLDIgMCAwLDEgMjEsN0gyMkEyLjksMi45IDAgMCwwIDE5LDRBMiwyIDAgMCwxIDE3LDJIMTZBMi45LDIuOSAwIDAsMCAxOSw1XCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsTGV2ZWwgPSBcIk04IDE4QzYuNjcgMTggNS43OSAxOC43OSA1LjI5IDE5LjI5UzQuNjcgMjAgNCAyMCAzLjIxIDE5Ljc5IDIuNzEgMTkuMjlDMi4zNSAxOC45MyAxLjc5IDE4LjQyIDEgMTguMTZWMjAuNDFDMS4wOSAyMC41IDEuMTggMjAuNTkgMS4yOSAyMC43MUMxLjc5IDIxLjIxIDIuNjcgMjIgNCAyMlM2LjIxIDIxLjIxIDYuNzEgMjAuNzEgNy4zMyAyMCA4IDIwIDguNzkgMjAuMjEgOS4yOSAyMC43MUM5LjczIDIxLjE0IDEwLjQ0IDIxLjggMTEuNSAyMS45NkMxMS42NiAyMiAxMS44MyAyMiAxMiAyMkMxMy4zMyAyMiAxNC4yMSAyMS4yMSAxNC43MSAyMC43MVMxNS4zMyAyMCAxNiAyMCAxNi43OSAyMC4yMSAxNy4yOSAyMC43MSAxOC42NyAyMiAyMCAyMiAyMi4yMSAyMS4yMSAyMi43MSAyMC43MUMyMi44MiAyMC41OSAyMi45MSAyMC41IDIzIDIwLjQxVjE4LjE2QzIyLjIxIDE4LjQyIDIxLjY1IDE4LjkzIDIxLjI5IDE5LjI5QzIwLjc5IDE5Ljc5IDIwLjY3IDIwIDIwIDIwUzE5LjIxIDE5Ljc5IDE4LjcxIDE5LjI5IDE3LjMzIDE4IDE2IDE4IDEzLjc5IDE4Ljc5IDEzLjI5IDE5LjI5IDEyLjY3IDIwIDEyIDIwQzExLjc4IDIwIDExLjYzIDE5Ljk3IDExLjUgMTkuOTJDMTEuMjIgMTkuODIgMTEuMDUgMTkuNjMgMTAuNzEgMTkuMjlDMTAuMjEgMTguNzkgOS4zMyAxOCA4IDE4TTIyIDEwLjVDMjIgMTAuNSAyNCAxMi42NyAyNCAxNEMyNCAxNS4xIDIzLjEgMTYgMjIgMTZTMjAgMTUuMSAyMCAxNEMyMCAxMi42NyAyMiAxMC41IDIyIDEwLjVNMjIuNSA3LjEzTDE5LjI0IDUuMjRMMTIuNzMgOUMxMi4zOSA4LjQgMTEuNzQgOCAxMSA4SDlWNkgxMEMxMC41NSA2IDExIDUuNTUgMTEgNVMxMC41NSA0IDEwIDRINkM1LjQ1IDQgNSA0LjQ1IDUgNVM1LjQ1IDYgNiA2SDdWOEg1QzMuOSA4IDMgOC45IDMgMTBWMTNDMyAxNC4xIDMuOSAxNSA1IDE1SDE0QzE0Ljc1IDE1IDE1LjQxIDE0LjU4IDE1Ljc1IDEzLjk3TDE5LjQgNy42NUwyMS41IDguODZDMjIgOS4xNCAyMi41OSA4Ljk3IDIyLjg3IDguNUMyMy4xNCA4IDIzIDcuNCAyMi41IDcuMTNNMTQgMTNINVYxMEgxMS42OUwxMi42IDExLjQzTDE2LjA2IDkuNDNMMTQgMTNNMy41IDYuOTJMMS43OSA4LjYyQTEgMSAwIDAgMSAuMzggNy4yMUwyLjA5IDUuNUExIDEgMCAwIDEgMy41IDUuNUMzLjg5IDUuODkgMy44OSA2LjUgMy41IDYuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT2lsVGVtcGVyYXR1cmUgPSBcIk0xMCA1SDEzVjNIMTBWMkMxMCAxLjQgOS42IDEgOSAxUzggMS40IDggMlYxNS4zQzcuNCAxNS42IDcgMTYuMyA3IDE3QzcgMTguMSA3LjkgMTkgOSAxOVMxMSAxOC4xIDExIDE3QzExIDE2LjMgMTAuNiAxNS42IDEwIDE1LjNWMTNIMTNWMTFIMTBWOUgxM1Y3SDEwVjVNMjIgMTcuNUMyMiAxNy41IDI0IDE5LjcgMjQgMjFDMjQgMjIuMSAyMy4xIDIzIDIyIDIzUzIwIDIyLjEgMjAgMjFDMjAgMTkuNyAyMiAxNy41IDIyIDE3LjVNMjIuOSAxNS41QzIyLjYgMTYgMjIgMTYuMSAyMS41IDE1LjlMMTkuNCAxNC43TDE1LjggMjFDMTUuNSAyMS42IDE0LjggMjIgMTQgMjJINUMzLjkgMjIgMyAyMS4xIDMgMjBWMTdDMyAxNS45IDMuOSAxNSA1IDE1VjIwSDE0TDE2LjEgMTYuNEwxMyAxOC4yVjE1LjhMMTkuMiAxMi4yTDIyLjUgMTQuMUMyMyAxNC40IDIzLjEgMTUgMjIuOSAxNS41TTMuNSAxMy45TDEuOCAxNS42QzEuNCAxNiAuOCAxNiAuNCAxNS42UzAgMTQuNi40IDE0LjJMMi4xIDEyLjVDMi41IDEyLjEgMy4xIDEyLjEgMy41IDEyLjVTMy45IDEzLjUgMy41IDEzLjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT21lZ2EgPSBcIk0xOS4xNSwxOUgxMy4zOVYxNi44N0MxNS41LDE1LjI1IDE2LjU5LDEzLjI0IDE2LjU5LDEwLjg0QzE2LjU5LDkuMzQgMTYuMTYsOC4xNiAxNS4zMiw3LjI5QzE0LjQ3LDYuNDIgMTMuMzcsNiAxMi4wMyw2QzEwLjY4LDYgOS41Nyw2LjQyIDguNzEsNy4zQzcuODQsOC4xNyA3LjQxLDkuMzcgNy40MSwxMC44OEM3LjQxLDEzLjI2IDguNSwxNS4yNiAxMC42MSwxNi44N1YxOUg0Ljg1VjE2Ljg3SDguNDFDNi4wNCwxNS4zMiA0Ljg1LDEzLjIzIDQuODUsMTAuNkM0Ljg1LDguNSA1LjUsNi44NiA2LjgxLDUuNjZDOC4xMiw0LjQ1IDkuODQsMy44NSAxMS45NywzLjg1QzE0LjE1LDMuODUgMTUuODksNC40NSAxNy4xOSw1LjY0QzE4LjUsNi44MyAxOS4xNSw4LjUgMTkuMTUsMTAuNThDMTkuMTUsMTMuMjEgMTcuOTUsMTUuMzEgMTUuNTUsMTYuODdIMTkuMTVWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT25lVXAgPSBcIk0xMCwxOVYxOUM5LjQsMTkgOSwxOC42IDksMThWMTdDOSwxNi41IDkuNCwxNiAxMCwxNlYxNkMxMC41LDE2IDExLDE2LjQgMTEsMTdWMThDMTEsMTguNiAxMC42LDE5IDEwLDE5TTE1LDE4VjE3QzE1LDE2LjUgMTQuNiwxNiAxNCwxNlYxNkMxMy41LDE2IDEzLDE2LjQgMTMsMTdWMThDMTMsMTguNSAxMy40LDE5IDE0LDE5VjE5QzE0LjYsMTkgMTUsMTguNiAxNSwxOE0yMiwxMkMyMiwxNC42IDIwLjQsMTYuOSAxOCwxOC40VjIwQTIsMiAwIDAsMSAxNiwyMkg4QTIsMiAwIDAsMSA2LDIwVjE4LjRDMy42LDE2LjkgMiwxNC42IDIsMTJBMTAsMTAgMCAwLDEgMTIsMkExMCwxMCAwIDAsMSAyMiwxMk03LDEwQzcsOC45IDYuNCw3LjkgNS41LDcuNEM0LjUsOC43IDQsMTAuMyA0LDEyQzQsMTIuMyA0LDEyLjcgNC4xLDEzQzUuNywxMi45IDcsMTEuNiA3LDEwTTksOUM5LDEwLjcgMTAuMywxMiAxMiwxMkMxMy43LDEyIDE1LDEwLjcgMTUsOUMxNSw3LjMgMTMuNyw2IDEyLDZDMTAuMyw2IDksNy4zIDksOU0xNiwyMFYxNS41QzE0LjgsMTUuMiAxMy40LDE1IDEyLDE1QzEwLjYsMTUgOS4yLDE1LjIgOCwxNS41VjIwSDE2TTE5LjksMTNDMjAsMTIuNyAyMCwxMi4zIDIwLDEyQzIwLDEwLjMgMTkuNSw4LjcgMTguNSw3LjRDMTcuNiw3LjkgMTcsOC45IDE3LDEwQzE3LDExLjYgMTguMywxMi45IDE5LjksMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT25lcGFzc3dvcmQgPSBcIk0xMiwxQzUuOTIsMSAxLDUuOTIgMSwxMkMxLDE4LjA4IDUuOTIsMjMgMTIsMjNDMTguMDgsMjMgMjMsMTguMDggMjMsMTJDMjMsNS45MiAxOC4wOCwxIDEyLDFNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMywxMy41QzEzLDE0LjEzIDEzLjQsMTQuNyAxNCwxNC45MVYxOEgxMFYxMS45MUMxMC43OCwxMS42NCAxMS4xOSwxMC44IDEwLjkzLDEwQzEwLjc4LDkuNTggMTAuNDQsOS4yNCAxMCw5LjA5VjZIMTRWMTIuMDlDMTMuNCwxMi4zIDEzLDEyLjg3IDEzLDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3BhY2l0eSA9IFwiTTE3LjY2LDhMMTIsMi4zNUw2LjM0LDhDNC43OCw5LjU2IDQsMTEuNjQgNCwxMy42NEM0LDE1LjY0IDQuNzgsMTcuNzUgNi4zNCwxOS4zMUM3LjksMjAuODcgOS45NSwyMS42NiAxMiwyMS42NkMxNC4wNSwyMS42NiAxNi4xLDIwLjg3IDE3LjY2LDE5LjMxQzE5LjIyLDE3Ljc1IDIwLDE1LjY0IDIwLDEzLjY0QzIwLDExLjY0IDE5LjIyLDkuNTYgMTcuNjYsOE02LDE0QzYsMTIgNi42MiwxMC43MyA3Ljc2LDkuNkwxMiw1LjI3TDE2LjI0LDkuNjVDMTcuMzgsMTAuNzcgMTgsMTIgMTgsMTRINlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcGVuSW5BcHAgPSBcIk0xMiwxMEw4LDE0SDExVjIwSDEzVjE0SDE2TTE5LDRINUMzLjg5LDQgMyw0LjkgMyw2VjE4QTIsMiAwIDAsMCA1LDIwSDlWMThINVY4SDE5VjE4SDE1VjIwSDE5QTIsMiAwIDAsMCAyMSwxOFY2QTIsMiAwIDAsMCAxOSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9wZW5Jbk5ldyA9IFwiTTE0LDNWNUgxNy41OUw3Ljc2LDE0LjgzTDkuMTcsMTYuMjRMMTksNi40MVYxMEgyMVYzTTE5LDE5SDVWNUgxMlYzSDVDMy44OSwzIDMsMy45IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTJIMTlWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3BlblNvdXJjZUluaXRpYXRpdmUgPSBcIk0xNS40MSwyMkMxNS4zNSwyMiAxNS4yOCwyMiAxNS4yMiwyMkMxNS4xLDIxLjk1IDE1LDIxLjg1IDE0Ljk2LDIxLjczTDEyLjc0LDE1LjkzQzEyLjY1LDE1LjY5IDEyLjc3LDE1LjQyIDEzLDE1LjMyQzEzLjcxLDE1LjA2IDE0LjI4LDE0LjUgMTQuNTgsMTMuODNDMTUuMjIsMTIuNCAxNC41OCwxMC43MyAxMy4xNSwxMC4wOUMxMS43Miw5LjQ1IDEwLjA1LDEwLjA5IDkuNDEsMTEuNUM5LjExLDEyLjIxIDkuMDksMTMgOS4zNiwxMy42OUM5LjY2LDE0LjQzIDEwLjI1LDE1IDExLDE1LjI4QzExLjI0LDE1LjM3IDExLjM3LDE1LjY0IDExLjI4LDE1Ljg5TDksMjEuNjlDOC45NiwyMS44MSA4Ljg3LDIxLjkxIDguNzUsMjEuOTZDOC42MywyMiA4LjUsMjIgOC4zOSwyMS45NkMzLjI0LDE5Ljk3IDAuNjcsMTQuMTggMi42Niw5LjAzQzQuNjUsMy44OCAxMC40NCwxLjMxIDE1LjU5LDMuM0MxOC4wNiw0LjI2IDIwLjA1LDYuMTUgMjEuMTMsOC41N0MyMi4yMiwxMSAyMi4yOSwxMy43NSAyMS4zMywxNi4yMkMyMC4zMiwxOC44OCAxOC4yMywyMSAxNS41OCwyMkMxNS41LDIyIDE1LjQ3LDIyIDE1LjQxLDIyTTEyLDMuNTlDNy4wMywzLjQ2IDIuOSw3LjM5IDIuNzcsMTIuMzZDMi42OCwxNi4wOCA0Ljg4LDE5LjQ3IDguMzIsMjAuOUwxMC4yMSwxNkM4LjM4LDE1IDcuNjksMTIuNzIgOC42OCwxMC44OUM5LjY3LDkuMDYgMTEuOTYsOC4zOCAxMy43OSw5LjM2QzE1LjYyLDEwLjM1IDE2LjMxLDEyLjY0IDE1LjMyLDE0LjQ3QzE0Ljk3LDE1LjEyIDE0LjQ0LDE1LjY1IDEzLjc5LDE2TDE1LjY4LDIwLjkzQzE3Ljg2LDE5Ljk1IDE5LjU3LDE4LjE2IDIwLjQ0LDE1LjkzQzIyLjI4LDExLjMxIDIwLjA0LDYuMDggMTUuNDIsNC4yM0MxNC4zMywzLjggMTMuMTcsMy41OCAxMiwzLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaU9wZW5pZCA9IFwiTTE0LDJMMTEsMy41VjE5Ljk0QzcsMTkuNSA0LDE3LjQ2IDQsMTVDNCwxMi43NSA2LjUsMTAuODUgMTAsMTAuMjJWOC4xOUM0Ljg2LDguODggMSwxMS42NiAxLDE1QzEsMTguNTYgNS4zNiwyMS41IDExLDIxLjk0QzExLjAzLDIxLjk0IDExLjA2LDIxLjk0IDExLjA5LDIxLjk0TDE0LDIwLjVWMk0xNSw4LjE5VjEwLjIyQzE2LjE1LDEwLjQzIDE3LjE4LDEwLjc3IDE4LjA2LDExLjIyTDE2LjUsMTJMMjMsMTMuNUwyMi41LDlMMjAuNSwxMEMxOSw5LjEyIDE3LjEyLDguNDcgMTUsOC4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlPcGVyYSA9IFwiTTkuMDQsMTcuMDdDOC4wNCwxNS45IDcuNCwxNC4xNiA3LjM1LDEyLjIxVjExLjc5QzcuNCw5Ljg0IDguMDQsOC4xIDkuMDQsNi45M0M5Ljg2LDUuOTUgMTAuOTMsNS4zNyAxMi4xLDUuMzdDMTQuNzIsNS4zNyAxNi44NCw4LjM0IDE2Ljg0LDEyQzE2Ljg0LDE1LjY2IDE0LjcyLDE4LjYzIDEyLjEsMTguNjNDMTAuOTMsMTguNjMgMTAuMzMsMTguNSA5LjA0LDE3LjA3TTEyLjAzLDNIMTJBOSw5IDAgMCwwIDMsMTJDMywxNi44MyA2LjgsMjAuNzcgMTEuNTcsMjFIMTJDMTQuMywyMSAxNi40LDIwLjEzIDE4LDE4LjcxQzE5Ljg0LDE3LjA2IDIxLDE0LjY3IDIxLDEyQzIxLDkuMzMgMTkuODQsNi45NCAxOCw1LjI5QzE2LjQxLDMuODcgMTQuMzIsMyAxMi4wMywzWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yYml0ID0gXCJNOC4xMSwxLjc1QzkuMywxLjI1IDEwLjYyLDEgMTIsMUMxOC4wOCwxIDIzLDUuOTIgMjMsMTJDMjMsMTguMDggMTguMDgsMjMgMTIsMjNDNS45MiwyMyAxLDE4LjA4IDEsMTJDMSwxMC42MiAxLjI1LDkuMyAxLjcyLDguMDhDMi4yNCw4LjYxIDIuODMsOC45NiAzLjQ1LDkuMThDMy4xNiwxMC4wNyAzLDExIDMsMTJBOSw5IDAgMCwwIDEyLDIxQTksOSAwIDAsMCAyMSwxMkE5LDkgMCAwLDAgMTIsM0MxMSwzIDEwLjA3LDMuMTYgOS4xOCwzLjQ1QzguOTYsMi44MyA4LjYxLDIuMjQgOC4xMSwxLjc1TTQuOTMsMi45M0M2LjAzLDIuOTMgNi45MywzLjgyIDYuOTMsNC45M0EyLDIgMCAwLDEgNC45Myw2LjkzQzMuODIsNi45MyAyLjkzLDYuMDMgMi45Myw0LjkzQzIuOTMsMy44MiAzLjgyLDIuOTMgNC45MywyLjkzTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlPcmJpdFZhcmlhbnQgPSBcIk0xOSA4TDE1IDEySDE4QzE4IDE1LjMxIDE1LjMxIDE4IDEyIDE4QzExIDE4IDEwLjAzIDE3Ljc1IDkuMiAxNy4zTDcuNzQgMTguNzZDOC45NyAxOS41NCAxMC40MyAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkgyM002IDEyQzYgOC42OSA4LjY5IDYgMTIgNkMxMyA2IDEzLjk3IDYuMjUgMTQuOCA2LjdMMTYuMjYgNS4yNEMxNS4wMyA0LjQ2IDEzLjU3IDQgMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJIMUw1IDE2TDkgMTJNMTQgMTJDMTQgMTMuMTEgMTMuMTEgMTQgMTIgMTRTMTAgMTMuMTEgMTAgMTIgMTAuOSAxMCAxMiAxMCAxNCAxMC45IDE0IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yZGVyQWxwaGFiZXRpY2FsQXNjZW5kaW5nID0gXCJNMTIgNUgyMlY3SDEyTTEyIDE5VjE3SDIyVjE5TTEyIDExSDIyVjEzSDEyTTkgMTNWMTVMNS42NyAxOUg5VjIxSDNWMTlMNi4zMyAxNUgzVjEzTTcgM0g1QzMuOSAzIDMgMy45IDMgNVYxMUg1VjlIN1YxMUg5VjVDOSAzLjkgOC4xMSAzIDcgM003IDdINVY1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3JkZXJBbHBoYWJldGljYWxEZXNjZW5kaW5nID0gXCJNNyAxM0g1QzMuOSAxMyAzIDEzLjkgMyAxNVYyMUg1VjE5SDdWMjFIOVYxNUM5IDEzLjkgOC4xMSAxMyA3IDEzTTcgMTdINVYxNUg3TTkgM1Y1TDUuNjcgOUg5VjExSDNWOUw2LjMzIDVIM1YzTTEyIDVIMjJWN0gxMk0xMiAxOVYxN0gyMlYxOU0xMiAxMUgyMlYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlckJvb2xBc2NlbmRpbmcgPSBcIk02IDNDMy43OSAzIDIgNC43OSAyIDdTMy43OSAxMSA2IDExIDEwIDkuMjEgMTAgNyA4LjIxIDMgNiAzTTYgOUM0LjkgOSA0IDguMSA0IDdTNC45IDUgNiA1IDggNS45IDggNyA3LjEgOSA2IDlNNiAxM0MzLjc5IDEzIDIgMTQuNzkgMiAxN1MzLjc5IDIxIDYgMjEgMTAgMTkuMjEgMTAgMTcgOC4yMSAxMyA2IDEzTTEyIDVIMjJWN0gxMlY1TTEyIDE5VjE3SDIyVjE5SDEyTTEyIDExSDIyVjEzSDEyVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yZGVyQm9vbEFzY2VuZGluZ1ZhcmlhbnQgPSBcIk00IDEzQzIuODkgMTMgMiAxMy44OSAyIDE1VjE5QzIgMjAuMTEgMi44OSAyMSA0IDIxSDhDOS4xMSAyMSAxMCAyMC4xMSAxMCAxOVYxNUMxMCAxMy44OSA5LjExIDEzIDggMTNNOC4yIDE0LjVMOS4yNiAxNS41NUw1LjI3IDE5LjVMMi43NCAxNi45NUwzLjgxIDE1LjlMNS4yOCAxNy4zOU00IDNDMi44OSAzIDIgMy44OSAyIDVWOUMyIDEwLjExIDIuODkgMTEgNCAxMUg4QzkuMTEgMTEgMTAgMTAuMTEgMTAgOVY1QzEwIDMuODkgOS4xMSAzIDggM000IDVIOFY5SDRNMTIgNUgyMlY3SDEyTTEyIDE5VjE3SDIyVjE5TTEyIDExSDIyVjEzSDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9yZGVyQm9vbERlc2NlbmRpbmcgPSBcIk02IDEzQzMuNzkgMTMgMiAxNC43OSAyIDE3UzMuNzkgMjEgNiAyMSAxMCAxOS4yMSAxMCAxNyA4LjIxIDEzIDYgMTNNNiAxOUM0LjkgMTkgNCAxOC4xIDQgMTdTNC45IDE1IDYgMTUgOCAxNS45IDggMTcgNy4xIDE5IDYgMTlNNiAzQzMuNzkgMyAyIDQuNzkgMiA3UzMuNzkgMTEgNiAxMSAxMCA5LjIxIDEwIDcgOC4yMSAzIDYgM00xMiA1SDIyVjdIMTJWNU0xMiAxOVYxN0gyMlYxOUgxMk0xMiAxMUgyMlYxM0gxMlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlckJvb2xEZXNjZW5kaW5nVmFyaWFudCA9IFwiTTQgM0MyLjg5IDMgMiAzLjg5IDIgNVY5QzIgMTAuMTEgMi44OSAxMSA0IDExSDhDOS4xMSAxMSAxMCAxMC4xMSAxMCA5VjVDMTAgMy44OSA5LjExIDMgOCAzTTguMiA0LjVMOS4yNiA1LjU1TDUuMjcgOS41TDIuNzQgNi45NUwzLjgxIDUuOUw1LjI4IDcuMzlNNCAxM0MyLjg5IDEzIDIgMTMuODkgMiAxNVYxOUMyIDIwLjExIDIuODkgMjEgNCAyMUg4QzkuMTEgMjEgMTAgMjAuMTEgMTAgMTlWMTVDMTAgMTMuODkgOS4xMSAxMyA4IDEzTTQgMTVIOFYxOUg0TTEyIDVIMjJWN0gxMk0xMiAxOVYxN0gyMlYxOU0xMiAxMUgyMlYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlck51bWVyaWNBc2NlbmRpbmcgPSBcIk03IDIxSDNWMTlIN1YxOEg1QzMuOSAxOCAzIDE3LjExIDMgMTZWMTVDMyAxMy45IDMuOSAxMyA1IDEzSDdDOC4xMSAxMyA5IDEzLjkgOSAxNVYxOUM5IDIwLjExIDguMTEgMjEgNyAyMU03IDE1SDVWMTZIN001IDNIN0M4LjExIDMgOSAzLjkgOSA1VjlDOSAxMC4xMSA4LjExIDExIDcgMTFINUMzLjkgMTEgMyAxMC4xMSAzIDlWNUMzIDMuOSAzLjkgMyA1IDNNNSA5SDdWNUg1TTEyIDVIMjJWN0gxMk0xMiAxOVYxN0gyMlYxOU0xMiAxMUgyMlYxM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlPcmRlck51bWVyaWNEZXNjZW5kaW5nID0gXCJNNyAxMUgzVjlIN1Y4SDVDMy45IDggMyA3LjExIDMgNlY1QzMgMy45IDMuOSAzIDUgM0g3QzguMTEgMyA5IDMuOSA5IDVWOUM5IDEwLjExIDguMTEgMTEgNyAxMU03IDVINVY2SDdNNSAxM0g3QzguMTEgMTMgOSAxMy45IDkgMTVWMTlDOSAyMC4xMSA4LjExIDIxIDcgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjE1QzMgMTMuOSAzLjkgMTMgNSAxM001IDE5SDdWMTVINU0xMiA1SDIyVjdIMTJNMTIgMTlWMTdIMjJWMTlNMTIgMTFIMjJWMTNIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3JpZ2luID0gXCJNMTIsMi4xM0MxMiwyLjIzIDExLjk1LDIuMzMgMTEuODksMi40MUMxMS41LDMgMTEuMTYsMy42NCAxMS4wNCw0LjMzTDExLDQuNTZMMTIsNC41QTcuNSw3LjUgMCAwLDEgMTkuNSwxMkMxOS41LDEzLjYyIDE5LDE1LjExIDE4LjEyLDE2LjM0QzE2LjczLDE4LjY4IDE0LjcyLDIwLjY1IDEyLjM0LDIxLjk3QzEyLjI1LDIyIDEyLjEyLDIyIDEyLjA2LDIxLjkzQzEyLDIxLjgzIDEyLDIxLjcgMTIuMDksMjEuNjFDMTIuNDcsMjEuMDkgMTIuNzMsMjAuNSAxMi44NywxOS44NUwxMi45MywxOS40NEwxMiwxOS41QTcuNSw3LjUgMCAwLDEgNC41LDEyQzQuNSwxMC4zOSA1LDguODkgNS44OCw3LjY3QzcuMjYsNS4zMiA5LjI4LDMuMzQgMTEuNjcsMkMxMS43OCwxLjk1IDExLjk0LDIgMTIsMi4xM00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3JuYW1lbnQgPSBcIk0xMiwxQTMsMyAwIDAsMSAxNSw0VjVBMSwxIDAgMCwxIDE2LDZWNy4wN0MxOC4zOSw4LjQ1IDIwLDExLjA0IDIwLDE0QTgsOCAwIDAsMSAxMiwyMkE4LDggMCAwLDEgNCwxNEM0LDExLjA0IDUuNjEsOC40NSA4LDcuMDdWNkExLDEgMCAwLDEgOSw1VjRBMywzIDAgMCwxIDEyLDFNMTIsM0ExLDEgMCAwLDAgMTEsNFY1SDEzVjRBMSwxIDAgMCwwIDEyLDNNMTIsOEMxMC4yMiw4IDguNjMsOC43NyA3LjUzLDEwSDE2LjQ3QzE1LjM3LDguNzcgMTMuNzgsOCAxMiw4TTYuMzQsMTZINy41OUw2LDE0LjQzQzYuMDUsMTUgNi4xNywxNS41IDYuMzQsMTZNMTIuNTksMTZMOC41OSwxMkg2LjQxTDEwLjQxLDE2SDEyLjU5TTE3LjY2LDEySDE2LjQxTDE4LDEzLjU3QzE3Ljk1LDEzIDE3LjgzLDEyLjUgMTcuNjYsMTJNMTEuNDEsMTJMMTUuNDEsMTZIMTcuNTlMMTMuNTksMTJIMTEuNDFNMTIsMjBDMTMuNzgsMjAgMTUuMzcsMTkuMjMgMTYuNDcsMThINy41M0M4LjYzLDE5LjIzIDEwLjIyLDIwIDEyLDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaU9ybmFtZW50VmFyaWFudCA9IFwiTTEyLDFBMywzIDAgMCwxIDE1LDRWNUExLDEgMCAwLDEgMTYsNlY3LjA3QzE4LjM5LDguNDUgMjAsMTEuMDQgMjAsMTRBOCw4IDAgMCwxIDEyLDIyQTgsOCAwIDAsMSA0LDE0QzQsMTEuMDQgNS42MSw4LjQ1IDgsNy4wN1Y2QTEsMSAwIDAsMSA5LDVWNEEzLDMgMCAwLDEgMTIsMU0xMiwzQTEsMSAwIDAsMCAxMSw0VjVIMTNWNEExLDEgMCAwLDAgMTIsM00xMiw4QzEwLjIyLDggOC42Myw4Ljc3IDcuNTMsMTBIMTYuNDdDMTUuMzcsOC43NyAxMy43OCw4IDEyLDhNMTIsMjBDMTMuNzgsMjAgMTUuMzcsMTkuMjMgMTYuNDcsMThINy41M0M4LjYzLDE5LjIzIDEwLjIyLDIwIDEyLDIwTTEyLDEyQTIsMiAwIDAsMCAxMCwxNEEyLDIgMCAwLDAgMTIsMTZBMiwyIDAgMCwwIDE0LDE0QTIsMiAwIDAsMCAxMiwxMk0xOCwxNEMxOCwxMy4zMSAxNy44OCwxMi42NSAxNy42NywxMkMxNi43MiwxMi4xOSAxNiwxMyAxNiwxNEMxNiwxNSAxNi43MiwxNS44MSAxNy42NywxNS45N0MxNy44OCwxNS4zNSAxOCwxNC42OSAxOCwxNE02LDE0QzYsMTQuNjkgNi4xMiwxNS4zNSA2LjMzLDE1Ljk3QzcuMjgsMTUuODEgOCwxNSA4LDE0QzgsMTMgNy4yOCwxMi4xOSA2LjMzLDEyQzYuMTIsMTIuNjUgNiwxMy4zMSA2LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU91dGRvb3JMYW1wID0gXCJNMTUgMjJIMTNDMTEuOSAyMiAxMSAyMS4xIDExIDIwVjE1SDE3VjIwQzE3IDIxLjEgMTYuMSAyMiAxNSAyMk03IDE0SDIxTDE1IDkuNzFWNkMxNSA0LjM5IDEzLjk0IDIgMTEgMlM3IDQuMzkgNyA2QzcgNi40NSA2LjgxIDcgNiA3SDVWM0gzVjEySDVWOUg2QzguMiA5IDkgNy4yMSA5IDZDOSA1LjY3IDkuMSA0IDExIDRDMTIuODMgNCAxMyA1LjU0IDEzIDZWOS43MUw3IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaU92ZXJzY2FuID0gXCJNMTIgNS41TDEwIDhIMTRMMTIgNS41TTE4IDEwVjE0TDIwLjUgMTJMMTggMTBNNiAxMEwzLjUgMTJMNiAxNFYxME0xNCAxNkgxMEwxMiAxOC41TDE0IDE2TTIxIDNIM0MxLjkgMyAxIDMuOSAxIDVWMTlDMSAyMC4xIDEuOSAyMSAzIDIxSDIxQzIyLjEgMjEgMjMgMjAuMSAyMyAxOVY1QzIzIDMuOSAyMi4xIDMgMjEgM00yMSAxOUgzVjVIMjFWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpT3dsID0gXCJNMTIsMTZDMTIuNTYsMTYuODQgMTMuMzEsMTcuNTMgMTQuMiwxOEwxMiwyMC4yTDkuOCwxOEMxMC42OSwxNy41MyAxMS40NSwxNi44NCAxMiwxNk0xNywxMS4yQTIsMiAwIDAsMCAxNSwxMy4yQTIsMiAwIDAsMCAxNywxNS4yQTIsMiAwIDAsMCAxOSwxMy4yQzE5LDEyLjA5IDE4LjEsMTEuMiAxNywxMS4yTTcsMTEuMkEyLDIgMCAwLDAgNSwxMy4yQTIsMiAwIDAsMCA3LDE1LjJBMiwyIDAgMCwwIDksMTMuMkM5LDEyLjA5IDguMSwxMS4yIDcsMTEuMk0xNyw4LjdBNCw0IDAgMCwxIDIxLDEyLjdBNCw0IDAgMCwxIDE3LDE2LjdBNCw0IDAgMCwxIDEzLDEyLjdBNCw0IDAgMCwxIDE3LDguN003LDguN0E0LDQgMCAwLDEgMTEsMTIuN0E0LDQgMCAwLDEgNywxNi43QTQsNCAwIDAsMSAzLDEyLjdBNCw0IDAgMCwxIDcsOC43TTIuMjQsMUM0LDQuNyAyLjczLDcuNDYgMS41NSwxMC4yQzEuMTksMTEgMSwxMS44MyAxLDEyLjdBNiw2IDAgMCwwIDcsMTguN0M3LjIxLDE4LjY5IDcuNDIsMTguNjggNy42MywxOC42NUwxMC41OSwyMS42MUwxMiwyM0wxMy40MSwyMS42MUwxNi4zNywxOC42NUMxNi41OCwxOC42OCAxNi43OSwxOC42OSAxNywxOC43QTYsNiAwIDAsMCAyMywxMi43QzIzLDExLjgzIDIyLjgxLDExIDIyLjQ1LDEwLjJDMjEuMjcsNy40NiAyMCw0LjcgMjEuNzYsMUMxOS4xMiwzLjA2IDE1LjM2LDQuNjkgMTIsNC43QzguNjQsNC42OSA0Ljg4LDMuMDYgMi4yNCwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY01hbiA9IFwiTTEyLDEyTDE5LjA3LDE5LjA3QzE1LjE3LDIzIDguODMsMjMgNC45MywxOS4wN0MxLDE1LjE3IDEsOC44NCA0LjkzLDQuOTNDOC44MywxIDE1LjE2LDEgMTkuMDcsNC45M0wxMiwxMk0xOSwxMEEyLDIgMCAwLDAgMTcsMTJBMiwyIDAgMCwwIDE5LDE0QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFja2FnZSA9IFwiTTUuMTIsNUgxOC44N0wxNy45Myw0SDUuOTNMNS4xMiw1TTIwLjU0LDUuMjNDMjAuODMsNS41NyAyMSw2IDIxLDYuNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY2LjVDMyw2IDMuMTcsNS41NyAzLjQ2LDUuMjNMNC44NCwzLjU1QzUuMTIsMy4yMSA1LjUzLDMgNiwzSDE4QzE4LjQ3LDMgMTguODgsMy4yMSAxOS4xNSwzLjU1TDIwLjU0LDUuMjNNNiwxOEgxMlYxNUg2VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY2thZ2VEb3duID0gXCJNNS4xMiw1TDUuOTMsNEgxNy45M0wxOC44Nyw1TTEyLDE3LjVMNi41LDEySDEwVjEwSDE0VjEySDE3LjVMMTIsMTcuNU0yMC41NCw1LjIzTDE5LjE1LDMuNTVDMTguODgsMy4yMSAxOC40NywzIDE4LDNINkM1LjUzLDMgNS4xMiwzLjIxIDQuODQsMy41NUwzLjQ2LDUuMjNDMy4xNyw1LjU3IDMsNiAzLDYuNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNi41QzIxLDYgMjAuODMsNS41NyAyMC41NCw1LjIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY2thZ2VVcCA9IFwiTTIwLjU0LDUuMjNDMjAuODMsNS41NyAyMSw2IDIxLDYuNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY2LjVDMyw2IDMuMTcsNS41NyAzLjQ2LDUuMjNMNC44NCwzLjU1QzUuMTIsMy4yMSA1LjUzLDMgNiwzSDE4QzE4LjQ3LDMgMTguODgsMy4yMSAxOS4xNSwzLjU1TDIwLjU0LDUuMjNNNS4xMiw1SDE4Ljg3TDE3LjkzLDRINS45M0w1LjEyLDVNMTIsOS41TDYuNSwxNUgxMFYxN0gxNFYxNUgxNy41TDEyLDkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWNrYWdlVmFyaWFudCA9IFwiTTIsMTAuOTZDMS41LDEwLjY4IDEuMzUsMTAuMDcgMS42Myw5LjU5TDMuMTMsN0MzLjI0LDYuOCAzLjQxLDYuNjYgMy42LDYuNThMMTEuNDMsMi4xOEMxMS41OSwyLjA2IDExLjc5LDIgMTIsMkMxMi4yMSwyIDEyLjQxLDIuMDYgMTIuNTcsMi4xOEwyMC40Nyw2LjYyQzIwLjY2LDYuNzIgMjAuODIsNi44OCAyMC45MSw3LjA4TDIyLjM2LDkuNkMyMi42NCwxMC4wOCAyMi40NywxMC42OSAyMiwxMC45NkwyMSwxMS41NFYxNi41QzIxLDE2Ljg4IDIwLjc5LDE3LjIxIDIwLjQ3LDE3LjM4TDEyLjU3LDIxLjgyQzEyLjQxLDIxLjk0IDEyLjIxLDIyIDEyLDIyQzExLjc5LDIyIDExLjU5LDIxLjk0IDExLjQzLDIxLjgyTDMuNTMsMTcuMzhDMy4yMSwxNy4yMSAzLDE2Ljg4IDMsMTYuNVYxMC45NkMyLjcsMTEuMTMgMi4zMiwxMS4xNCAyLDEwLjk2TTEyLDQuMTVWNC4xNUwxMiwxMC44NVYxMC44NUwxNy45Niw3LjVMMTIsNC4xNU01LDE1LjkxTDExLDE5LjI5VjEyLjU4TDUsOS4yMVYxNS45MU0xOSwxNS45MVYxMi42OUwxNCwxNS41OUMxMy42NywxNS43NyAxMy4zLDE1Ljc2IDEzLDE1LjZWMTkuMjlMMTksMTUuOTFNMTMuODUsMTMuMzZMMjAuMTMsOS43M0wxOS41NSw4LjcyTDEzLjI3LDEyLjM1TDEzLjg1LDEzLjM2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhY2thZ2VWYXJpYW50Q2xvc2VkID0gXCJNMjEsMTYuNUMyMSwxNi44OCAyMC43OSwxNy4yMSAyMC40NywxNy4zOEwxMi41NywyMS44MkMxMi40MSwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44MkwzLjUzLDE3LjM4QzMuMjEsMTcuMjEgMywxNi44OCAzLDE2LjVWNy41QzMsNy4xMiAzLjIxLDYuNzkgMy41Myw2LjYyTDExLjQzLDIuMThDMTEuNTksMi4wNiAxMS43OSwyIDEyLDJDMTIuMjEsMiAxMi40MSwyLjA2IDEyLjU3LDIuMThMMjAuNDcsNi42MkMyMC43OSw2Ljc5IDIxLDcuMTIgMjEsNy41VjE2LjVNMTIsNC4xNUwxMC4xMSw1LjIyTDE2LDguNjFMMTcuOTYsNy41TDEyLDQuMTVNNi4wNCw3LjVMMTIsMTAuODVMMTMuOTYsOS43NUw4LjA4LDYuMzVMNi4wNCw3LjVNNSwxNS45MUwxMSwxOS4yOVYxMi41OEw1LDkuMjFWMTUuOTFNMTksMTUuOTFWOS4yMUwxMywxMi41OFYxOS4yOUwxOSwxNS45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlRmlyc3QgPSBcIk0xOC40MSwxNi41OUwxMy44MiwxMkwxOC40MSw3LjQxTDE3LDZMMTEsMTJMMTcsMThMMTguNDEsMTYuNTlNNiw2SDhWMThINlY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VMYXN0ID0gXCJNNS41OSw3LjQxTDEwLjE4LDEyTDUuNTksMTYuNTlMNywxOEwxMywxMkw3LDZMNS41OSw3LjQxTTE2LDZIMThWMThIMTZWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlTGF5b3V0Qm9keSA9IFwiTTYsMkgxOEEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJNNiw4VjE2SDE4VjhINlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlTGF5b3V0Rm9vdGVyID0gXCJNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk02LDE2VjIwSDE4VjE2SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFnZUxheW91dEhlYWRlciA9IFwiTTYsMkgxOEEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJNNiw0VjhIMThWNEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VMYXlvdXRIZWFkZXJGb290ZXIgPSBcIk0xOCAySDZDNC44OSAyIDQgMi45IDQgNFYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOS4xMSAyMiAyMCAyMS4xMSAyMCAyMFY0QzIwIDIuOSAxOS4xMSAyIDE4IDJNMTggMjBINlYxNkgxOFYyME0xOCA4SDZWNEgxOFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VMYXlvdXRTaWRlYmFyTGVmdCA9IFwiTTYsMkgxOEEyLDIgMCAwLDEgMjAsNFYyMEEyLDIgMCAwLDEgMTgsMjJINkEyLDIgMCAwLDEgNCwyMFY0QTIsMiAwIDAsMSA2LDJNNiw4VjE2SDEwVjhINlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWdlTGF5b3V0U2lkZWJhclJpZ2h0ID0gXCJNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk0xNCw4VjE2SDE4VjhIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFnZU5leHQgPSBcIk0yMCwzSDVBMiwyIDAgMCwwIDMsNVYxMUg3VjlMMTEsMTJMNywxNVYxM0gzVjE5QTIsMiAwIDAsMCA1LDIxSDIwQTIsMiAwIDAsMCAyMiwxOVY1QTIsMiAwIDAsMCAyMCwzTTE3LDE3SDEzVjE1SDE3VjE3TTIwLDEzSDEzVjExSDIwVjEzTTIwLDlIMTNWN0gyMFY5TTMsMTNIMFYxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VOZXh0T3V0bGluZSA9IFwiTTIyLDNINUEyLDIgMCAwLDAgMyw1VjlINVY1SDIyVjE5SDVWMTVIM1YxOUEyLDIgMCAwLDAgNSwyMUgyMkEyLDIgMCAwLDAgMjQsMTlWNUEyLDIgMCAwLDAgMjIsM003LDE1VjEzSDBWMTFIN1Y5TDExLDEyTDcsMTVNMjAsMTNIMTNWMTFIMjBWMTNNMjAsOUgxM1Y3SDIwVjlNMTcsMTdIMTNWMTVIMTdWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFnZVByZXZpb3VzID0gXCJNNCwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTNIMTdWMTVMMTMsMTJMMTcsOVYxMUgyMVY1QTIsMiAwIDAsMCAxOSwzSDRBMiwyIDAgMCwwIDIsNVYxOUEyLDIgMCAwLDAgNCwyMU00LDE1SDhWMTdINFYxNU00LDExSDExVjEzSDRWMTFNNCw3SDExVjlINFY3TTIxLDExSDI0VjEzSDIxVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhZ2VQcmV2aW91c091dGxpbmUgPSBcIk0yLDNIMTlBMiwyIDAgMCwxIDIxLDVWOUgxOVY1SDJWMTlIMTlWMTVIMjFWMTlBMiwyIDAgMCwxIDE5LDIxSDJBMiwyIDAgMCwxIDAsMTlWNUEyLDIgMCAwLDEgMiwzTTE3LDE1VjEzSDI0VjExSDE3VjlMMTMsMTJMMTcsMTVNNCwxM0gxMVYxMUg0VjEzTTQsOUgxMVY3SDRWOU00LDE3SDhWMTVINFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsID0gXCJNMTEuNSA3LjYzQzExLjk3IDcuMzUgMTIuNTggNy41IDEyLjg2IDhDMTMuMTQgOC40NyAxMi45NyA5LjA5IDEyLjUgOS4zNkw0LjI3IDE0LjExQzMuNzkgMTQuMzkgMy4xOCAxNC4yMyAyLjkgMTMuNzVDMi42MiAxMy4yNyAyLjc5IDEyLjY2IDMuMjcgMTIuMzhMMTEuNSA3LjYzTTcgMjFMNS43OSAxNC45N0wxMy4yMSAxMC42OUMxNCAxMC4yNiAxNC41IDkuNDQgMTQuNSA4LjVDMTQuNSA3LjEyIDEzLjM4IDYgMTIgNkMxMS41MyA2IDExLjA5IDYuMTMgMTAuNzEgNi4zNkw0Ljc2IDkuNzlMNCA2SDNWNEgyMVY2SDIwTDE3IDIxSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFpbE1pbnVzID0gXCJNMTIuNSA5LjM2TDQuMjcgMTQuMTFDMy43OSAxNC4zOSAzLjE4IDE0LjIzIDIuOSAxMy43NUMyLjYyIDEzLjI3IDIuNzkgMTIuNjYgMy4yNyAxMi4zOEwxMS41IDcuNjNDMTEuOTcgNy4zNSAxMi41OCA3LjUgMTIuODYgOEMxMy4xNCA4LjQ3IDEyLjk3IDkuMDkgMTIuNSA5LjM2TTEzIDE5QzEzIDE1LjgyIDE1LjQ3IDEzLjIzIDE4LjYgMTNMMjAgNkgyMVY0SDNWNkg0TDQuNzYgOS43OUwxMC43MSA2LjM2QzExLjA5IDYuMTMgMTEuNTMgNiAxMiA2QzEzLjM4IDYgMTQuNSA3LjEyIDE0LjUgOC41QzE0LjUgOS40NCAxNCAxMC4yNiAxMy4yMSAxMC42OUw1Ljc5IDE0Ljk3TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsTWludXNPdXRsaW5lID0gXCJNNCA2SDNWNEgyMVY2SDIwTDE4LjYgMTNDMTcuODMgMTMuMDcgMTcuMTEgMTMuMjYgMTYuNDUgMTMuNThMMTcuOTYgNkg2LjA0TDYuNSA4LjIyTDQuNjUgOS4yN0w0IDZNMTIuODYgOEMxMi41OCA3LjUgMTEuOTcgNy4zNSAxMS41IDcuNjNMMy4yNyAxMi4zOEMyLjc5IDEyLjY2IDIuNjIgMTMuMjcgMi45IDEzLjc1QzMuMTggMTQuMjMgMy43OSAxNC4zOSA0LjI3IDE0LjExTDEyLjUgOS4zNkMxMi45NyA5LjA5IDEzLjE0IDguNDcgMTIuODYgOE0xMyAxOUg4LjY0TDcuNzMgMTQuNDNMNS45IDE1LjVMNyAyMUgxMy4zNUMxMy4xMyAyMC4zNyAxMyAxOS43IDEzIDE5TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxPZmYgPSBcIk0yMC44NCAyMi43M0wxNy4zNSAxOS4yNEwxNyAyMUg3TDUuNzkgMTQuOTdMMTAuNDEgMTIuM0w5LjMxIDExLjJMNC4yNyAxNC4xMUMzLjc5IDE0LjM5IDMuMTggMTQuMjMgMi45IDEzLjc1QzIuNjIgMTMuMjcgMi43OSAxMi42NiAzLjI3IDEyLjM4TDcuODUgOS43NEw2Ljc1IDguNjRMNC43NiA5Ljc5TDQgNkgzVjQuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xMC43MSA2LjM2QzExLjA5IDYuMTMgMTEuNTMgNiAxMiA2QzEzLjM4IDYgMTQuNSA3LjEyIDE0LjUgOC41QzE0LjUgOS4yNyAxNC4xNiA5Ljk0IDEzLjYgMTAuNEwxOC4yIDE1TDIwIDZIMjFWNEg3LjJMMTAgNi43OEwxMC43MSA2LjM2TTExLjUgNy42M0wxMS4wOCA3Ljg4TDEyLjUzIDkuMzNDMTIuOTcgOS4wNSAxMy4xMyA4LjQ2IDEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxPZmZPdXRsaW5lID0gXCJNMjAuODQgMjIuNzNMMTcuMzUgMTkuMjRMMTcgMjFIN0w1LjkgMTUuNUw3LjczIDE0LjQzTDguNjQgMTlIMTUuMzZMMTUuNjUgMTcuNTRMOS4zMSAxMS4yTDQuMjcgMTQuMTFDMy43OSAxNC4zOSAzLjE4IDE0LjIzIDIuOSAxMy43NUMyLjYyIDEzLjI3IDIuNzkgMTIuNjYgMy4yNyAxMi4zOEw3Ljg1IDkuNzRMNi4zOCA4LjI3TDQuNjUgOS4yN0w0IDZIM1Y0Ljg5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTcuOTYgNkwxNi41IDEzLjNMMTguMiAxNUwyMCA2SDIxVjRINy4yTDkuMiA2SDE3Ljk2TTExLjUgNy42M0wxMS4wOCA3Ljg4TDEyLjUzIDkuMzNDMTIuOTcgOS4wNSAxMy4xMyA4LjQ2IDEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxPdXRsaW5lID0gXCJNMTEuNSA3LjYzQzExLjk3IDcuMzUgMTIuNTggNy41IDEyLjg2IDhDMTMuMTQgOC40NyAxMi45NyA5LjA5IDEyLjUgOS4zNkw0LjI3IDE0LjExQzMuNzkgMTQuMzkgMy4xOCAxNC4yMyAyLjkgMTMuNzVTMi43OSAxMi42NiAzLjI3IDEyLjM4TDExLjUgNy42M00zIDRWNkg0TDQuNjUgOS4yN0w2LjUgOC4yMkw2LjA0IDZIMTcuOTZMMTUuMzYgMTlIOC42NEw3LjczIDE0LjQzTDUuOSAxNS41TDcgMjFIMTdMMjAgNkgyMVY0SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFpbFBsdXMgPSBcIk0xMi41IDkuMzZMNC4yNyAxNC4xMUMzLjc5IDE0LjM5IDMuMTggMTQuMjMgMi45IDEzLjc1QzIuNjIgMTMuMjcgMi43OSAxMi42NiAzLjI3IDEyLjM4TDExLjUgNy42M0MxMS45NyA3LjM1IDEyLjU4IDcuNSAxMi44NiA4QzEzLjE0IDguNDcgMTIuOTcgOS4wOSAxMi41IDkuMzZNMTMgMTlDMTMgMTUuODIgMTUuNDcgMTMuMjMgMTguNiAxM0wyMCA2SDIxVjRIM1Y2SDRMNC43NiA5Ljc5TDEwLjcxIDYuMzZDMTEuMDkgNi4xMyAxMS41MyA2IDEyIDZDMTMuMzggNiAxNC41IDcuMTIgMTQuNSA4LjVDMTQuNSA5LjQ0IDE0IDEwLjI2IDEzLjIxIDEwLjY5TDUuNzkgMTQuOTdMNyAyMUgxMy4zNUMxMy4xMyAyMC4zNyAxMyAxOS43IDEzIDE5TTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhaWxQbHVzT3V0bGluZSA9IFwiTTQgNkgzVjRIMjFWNkgyMEwxOC42IDEzQzE3LjgzIDEzLjA3IDE3LjExIDEzLjI2IDE2LjQ1IDEzLjU4TDE3Ljk2IDZINi4wNEw2LjUgOC4yMkw0LjY1IDkuMjdMNCA2TTEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzTDMuMjcgMTIuMzhDMi43OSAxMi42NiAyLjYyIDEzLjI3IDIuOSAxMy43NUMzLjE4IDE0LjIzIDMuNzkgMTQuMzkgNC4yNyAxNC4xMUwxMi41IDkuMzZDMTIuOTcgOS4wOSAxMy4xNCA4LjQ3IDEyLjg2IDhNMTMgMTlIOC42NEw3LjczIDE0LjQzTDUuOSAxNS41TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsUmVtb3ZlID0gXCJNMTIuNSA5LjM2TDQuMjcgMTQuMTFDMy43OSAxNC4zOSAzLjE4IDE0LjIzIDIuOSAxMy43NUMyLjYyIDEzLjI3IDIuNzkgMTIuNjYgMy4yNyAxMi4zOEwxMS41IDcuNjNDMTEuOTcgNy4zNSAxMi41OCA3LjUgMTIuODYgOEMxMy4xNCA4LjQ3IDEyLjk3IDkuMDkgMTIuNSA5LjM2TTEzIDE5QzEzIDE1LjgyIDE1LjQ3IDEzLjIzIDE4LjYgMTNMMjAgNkgyMVY0SDNWNkg0TDQuNzYgOS43OUwxMC43MSA2LjM2QzExLjA5IDYuMTMgMTEuNTMgNiAxMiA2QzEzLjM4IDYgMTQuNSA3LjEyIDE0LjUgOC41QzE0LjUgOS40NCAxNCAxMC4yNiAxMy4yMSAxMC42OUw1Ljc5IDE0Ljk3TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWlsUmVtb3ZlT3V0bGluZSA9IFwiTTQgNkgzVjRIMjFWNkgyMEwxOC42IDEzQzE3LjgzIDEzLjA3IDE3LjExIDEzLjI2IDE2LjQ1IDEzLjU4TDE3Ljk2IDZINi4wNEw2LjUgOC4yMkw0LjY1IDkuMjdMNCA2TTEyLjg2IDhDMTIuNTggNy41IDExLjk3IDcuMzUgMTEuNSA3LjYzTDMuMjcgMTIuMzhDMi43OSAxMi42NiAyLjYyIDEzLjI3IDIuOSAxMy43NUMzLjE4IDE0LjIzIDMuNzkgMTQuMzkgNC4yNyAxNC4xMUwxMi41IDkuMzZDMTIuOTcgOS4wOSAxMy4xNCA4LjQ3IDEyLjg2IDhNMTMgMTlIOC42NEw3LjczIDE0LjQzTDUuOSAxNS41TDcgMjFIMTMuMzVDMTMuMTMgMjAuMzcgMTMgMTkuNyAxMyAxOU0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NiAxNi44OEwxNy41OCAxOUwxNS40NiAyMS4xMkwxNi44NyAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41MyAyMS4xMkwyMC40MSAxOUwyMi41MyAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWxldHRlID0gXCJNMTcuNSwxMkExLjUsMS41IDAgMCwxIDE2LDEwLjVBMS41LDEuNSAwIDAsMSAxNy41LDlBMS41LDEuNSAwIDAsMSAxOSwxMC41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMk0xNC41LDhBMS41LDEuNSAwIDAsMSAxMyw2LjVBMS41LDEuNSAwIDAsMSAxNC41LDVBMS41LDEuNSAwIDAsMSAxNiw2LjVBMS41LDEuNSAwIDAsMSAxNC41LDhNOS41LDhBMS41LDEuNSAwIDAsMSA4LDYuNUExLjUsMS41IDAgMCwxIDkuNSw1QTEuNSwxLjUgMCAwLDEgMTEsNi41QTEuNSwxLjUgMCAwLDEgOS41LDhNNi41LDEyQTEuNSwxLjUgMCAwLDEgNSwxMC41QTEuNSwxLjUgMCAwLDEgNi41LDlBMS41LDEuNSAwIDAsMSA4LDEwLjVBMS41LDEuNSAwIDAsMSA2LjUsMTJNMTIsM0E5LDkgMCAwLDAgMywxMkE5LDkgMCAwLDAgMTIsMjFBMS41LDEuNSAwIDAsMCAxMy41LDE5LjVDMTMuNSwxOS4xMSAxMy4zNSwxOC43NiAxMy4xMSwxOC41QzEyLjg4LDE4LjIzIDEyLjczLDE3Ljg4IDEyLjczLDE3LjVBMS41LDEuNSAwIDAsMSAxNC4yMywxNkgxNkE1LDUgMCAwLDAgMjEsMTFDMjEsNi41OCAxNi45NywzIDEyLDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFsZXR0ZUFkdmFuY2VkID0gXCJNMjIsMjJIMTBWMjBIMjJWMjJNMiwyMlYyMEg5VjIySDJNMTgsMThWMTBIMjJWMThIMThNMTgsM0gyMlY5SDE4VjNNMiwxOFYzSDE2VjE4SDJNOSwxNC41NkEzLDMgMCAwLDAgMTIsMTEuNTZDMTIsOS41NiA5LDYuMTkgOSw2LjE5QzksNi4xOSA2LDkuNTYgNiwxMS41NkEzLDMgMCAwLDAgOSwxNC41NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWxldHRlT3V0bGluZSA9IFwiTTEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMkMxNy41LDIgMjIsNiAyMiwxMUE2LDYgMCAwLDEgMTYsMTdIMTQuMkMxMy45LDE3IDEzLjcsMTcuMiAxMy43LDE3LjVDMTMuNywxNy42IDEzLjgsMTcuNyAxMy44LDE3LjhDMTQuMiwxOC4zIDE0LjQsMTguOSAxNC40LDE5LjVDMTQuNSwyMC45IDEzLjQsMjIgMTIsMjJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBDMTIuMywyMCAxMi41LDE5LjggMTIuNSwxOS41QzEyLjUsMTkuMyAxMi40LDE5LjIgMTIuNCwxOS4xQzEyLDE4LjYgMTEuOCwxOC4xIDExLjgsMTcuNUMxMS44LDE2LjEgMTIuOSwxNSAxNC4zLDE1SDE2QTQsNCAwIDAsMCAyMCwxMUMyMCw3LjEgMTYuNCw0IDEyLDRNNi41LDEwQzcuMywxMCA4LDEwLjcgOCwxMS41QzgsMTIuMyA3LjMsMTMgNi41LDEzQzUuNywxMyA1LDEyLjMgNSwxMS41QzUsMTAuNyA1LjcsMTAgNi41LDEwTTkuNSw2QzEwLjMsNiAxMSw2LjcgMTEsNy41QzExLDguMyAxMC4zLDkgOS41LDlDOC43LDkgOCw4LjMgOCw3LjVDOCw2LjcgOC43LDYgOS41LDZNMTQuNSw2QzE1LjMsNiAxNiw2LjcgMTYsNy41QzE2LDguMyAxNS4zLDkgMTQuNSw5QzEzLjcsOSAxMyw4LjMgMTMsNy41QzEzLDYuNyAxMy43LDYgMTQuNSw2TTE3LjUsMTBDMTguMywxMCAxOSwxMC43IDE5LDExLjVDMTksMTIuMyAxOC4zLDEzIDE3LjUsMTNDMTYuNywxMyAxNiwxMi4zIDE2LDExLjVDMTYsMTAuNyAxNi43LDEwIDE3LjUsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFsZXR0ZVN3YXRjaCA9IFwiTTIuNTMsMTkuNjVMMy44NywyMC4yMVYxMS4xOEwxLjQ0LDE3LjA0QzEuMDMsMTguMDYgMS41LDE5LjIzIDIuNTMsMTkuNjVNMjIuMDMsMTUuOTVMMTcuMDcsNEMxNi43NiwzLjIzIDE2LjAzLDIuNzcgMTUuMjYsMi43NUMxNSwyLjc1IDE0LjczLDIuNzkgMTQuNDcsMi45TDcuMSw1Ljk1QzYuMzUsNi4yNiA1Ljg5LDcgNS44Nyw3Ljc1QzUuODYsOCA1LjkxLDguMjkgNiw4LjU1TDExLDIwLjVDMTEuMjksMjEuMjggMTIuMDMsMjEuNzQgMTIuODEsMjEuNzVDMTMuMDcsMjEuNzUgMTMuMzMsMjEuNyAxMy41OCwyMS42TDIwLjk0LDE4LjU1QzIxLjk2LDE4LjEzIDIyLjQ1LDE2Ljk2IDIyLjAzLDE1Ljk1TTcuODgsOC43NUExLDEgMCAwLDEgNi44OCw3Ljc1QTEsMSAwIDAsMSA3Ljg4LDYuNzVDOC40Myw2Ljc1IDguODgsNy4yIDguODgsNy43NUM4Ljg4LDguMyA4LjQzLDguNzUgNy44OCw4Ljc1TTUuODgsMTkuNzVBMiwyIDAgMCwwIDcuODgsMjEuNzVIOS4zM0w1Ljg4LDEzLjQxVjE5Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbGV0dGVTd2F0Y2hPdXRsaW5lID0gXCJNMi41IDE5LjZMMy44IDIwLjJWMTEuMkwxLjQgMTdDMSAxOC4xIDEuNSAxOS4yIDIuNSAxOS42TTE1LjIgNC44TDIwLjIgMTYuOEwxMi45IDE5LjhMNy45IDcuOVY3LjhMMTUuMiA0LjhNMTUuMyAyLjhDMTUgMi44IDE0LjggMi44IDE0LjUgMi45TDcuMSA2QzYuNCA2LjMgNS45IDcgNS45IDcuOEM1LjkgOCA1LjkgOC4zIDYgOC42TDExIDIwLjVDMTEuMyAyMS4zIDEyIDIxLjcgMTIuOCAyMS43QzEzLjEgMjEuNyAxMy4zIDIxLjcgMTMuNiAyMS42TDIxIDE4LjVDMjIgMTguMSAyMi41IDE2LjkgMjIuMSAxNS45TDE3LjEgNEMxNi44IDMuMiAxNiAyLjggMTUuMyAyLjhNMTAuNSA5LjlDOS45IDkuOSA5LjUgOS41IDkuNSA4LjlTOS45IDcuOSAxMC41IDcuOUMxMS4xIDcuOSAxMS41IDguNCAxMS41IDguOVMxMS4xIDkuOSAxMC41IDkuOU01LjkgMTkuOEM1LjkgMjAuOSA2LjggMjEuOCA3LjkgMjEuOEg5LjNMNS45IDEzLjVWMTkuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYWxtVHJlZSA9IFwiTTEyIDlDMTMuNTkgMTYuNjEgMTAgMjIgMTAgMjJIMTNDMTQuODggMTYuMiAxNCAxMi4wOSAxMy41IDEwTTE1LjY2IDcuMTZDMTUuODMgNy4zNyAxNiA3LjU5IDE2LjEzIDcuODJDMTcuODQgMTAuNTMgMTcuNSAxMy45NSAxNS41IDE2LjI2QzE2LjM0IDE0LjIxIDE2LjIyIDExLjc5IDE0Ljk1IDkuNzdDMTQuODcgOS42NCAxNC43OCA5LjUzIDE0LjcgOS40MUMxNC4xMSA4LjU4IDEzLjM2IDcuOTIgMTIuNTQgNy40M0M5LjY2IDguMzUgNy41OCAxMS4wNCA3LjU4IDE0LjIyQzcuNTggMTQuOTYgNy42OSAxNS42NyA3Ljg5IDE2LjMzQzcuMDUgMTUuMTYgNi41NiAxMy43MyA2LjU2IDEyLjE5QzYuNTYgOS44NCA3LjcgNy43NiA5LjQ1IDYuNDZDOCA2LjM1IDYuNDYgNi42NyA1LjEyIDcuNUM0LjUgNy45MSAzLjk2IDguMzggMy41IDguOTFDNC4wNSA3LjU4IDUgNi4zOSA2LjMgNS41N0M3LjggNC42MyA5LjUgNC4zMiAxMS4xNCA0LjU2QzEwLjczIDQgMTAuMjMgMy40NyA5LjYzIDNDOS4wNSAyLjU4IDguNDIgMi4yNCA3Ljc2IDJDOS4yIDIuMDQgMTAuNjQgMi41IDExLjg3IDMuNDNDMTIuNSAzLjkgMTMgNC40NyAxMy40IDUuMDdDMTMuNSA1LjA3IDEzLjU5IDUuMDYgMTMuNjkgNS4wNkMxNi44OSA1LjA2IDE5LjYgNy4xNyAyMC41IDEwLjA4QzE5LjM4IDguNSAxNy42NSA3LjQzIDE1LjY2IDcuMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuID0gXCJNMTIsMi41TDgsN0gxNkwxMiwyLjVNNyw4TDIuNSwxMkw3LDE2VjhNMTcsOFYxNkwyMS41LDEyTDE3LDhNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwTTgsMTdMMTIsMjEuNUwxNiwxN0g4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbkJvdHRvbUxlZnQgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNNS4zNSwxM0wxMSwxOC42NUw1LDE5TDUuMzUsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuQm90dG9tUmlnaHQgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTMsMTguNjVMMTguNjUsMTNMMTksMTlMMTMsMTguNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuRG93biA9IFwiTTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME04LDE3TDEyLDIxLjVMMTYsMTdIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5Ib3Jpem9udGFsID0gXCJNNyw4TDIuNSwxMkw3LDE2VjhNMTcsOFYxNkwyMS41LDEyTDE3LDhNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbkxlZnQgPSBcIk03LDhMMi41LDEyTDcsMTZWOE0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuUmlnaHQgPSBcIk0xNyw4VjE2TDIxLjUsMTJMMTcsOE0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuVG9wTGVmdCA9IFwiTTEyLDEwQTIsMiAwIDAsMSAxNCwxMkEyLDIgMCAwLDEgMTIsMTRBMiwyIDAgMCwxIDEwLDEyQTIsMiAwIDAsMSAxMiwxME0xMSw1LjM1TDUuMzUsMTFMNSw1TDExLDUuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFuVG9wUmlnaHQgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTguNjUsMTFMMTMsNS4zNUwxOSw1TDE4LjY1LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhblVwID0gXCJNMTIsMi41TDgsN0gxNkwxMiwyLjVNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhblZlcnRpY2FsID0gXCJNMTIsMi41TDgsN0gxNkwxMiwyLjVNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwTTgsMTdMMTIsMjEuNUwxNiwxN0g4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbmRhID0gXCJNMTIsM0MxMy43NCwzIDE1LjM2LDMuNSAxNi43NCw0LjM1QzE3LjM4LDMuNTMgMTguMzgsMyAxOS41LDNBMy41LDMuNSAwIDAsMSAyMyw2LjVDMjMsOCAyMi4wNSw5LjI4IDIwLjcyLDkuNzhDMjAuOSwxMC41IDIxLDExLjIzIDIxLDEyQTksOSAwIDAsMSAxMiwyMUE5LDkgMCAwLDEgMywxMkMzLDExLjIzIDMuMSwxMC41IDMuMjgsOS43OEMxLjk1LDkuMjggMSw4IDEsNi41QTMuNSwzLjUgMCAwLDEgNC41LDNDNS42MiwzIDYuNjIsMy41MyA3LjI2LDQuMzVDOC42NCwzLjUgMTAuMjYsMyAxMiwzTTEyLDVBNyw3IDAgMCwwIDUsMTJBNyw3IDAgMCwwIDEyLDE5QTcsNyAwIDAsMCAxOSwxMkE3LDcgMCAwLDAgMTIsNU0xNi4xOSwxMC4zQzE2LjU1LDExLjYzIDE2LjA4LDEyLjkxIDE1LjE1LDEzLjE2QzE0LjIxLDEzLjQyIDEzLjE3LDEyLjU0IDEyLjgxLDExLjJDMTIuNDUsOS44NyAxMi45Miw4LjU5IDEzLjg1LDguMzRDMTQuNzksOC4wOSAxNS44Myw4Ljk2IDE2LjE5LDEwLjNNNy44MSwxMC4zQzguMTcsOC45NiA5LjIxLDguMDkgMTAuMTUsOC4zNEMxMS4wOCw4LjU5IDExLjU1LDkuODcgMTEuMTksMTEuMkMxMC44MywxMi41NCA5Ljc5LDEzLjQyIDguODUsMTMuMTZDNy45MiwxMi45MSA3LjQ1LDExLjYzIDcuODEsMTAuM00xMiwxNEMxMi42LDE0IDEzLjEzLDE0LjE5IDEzLjUsMTQuNUwxMi41LDE1LjVDMTIuNSwxNS45MiAxMi44NCwxNi4yNSAxMy4yNSwxNi4yNUEwLjc1LDAuNzUgMCAwLDAgMTQsMTUuNUEwLjUsMC41IDAgMCwxIDE0LjUsMTVBMC41LDAuNSAwIDAsMSAxNSwxNS41QTEuNzUsMS43NSAwIDAsMSAxMy4yNSwxNy4yNUMxMi43NiwxNy4yNSAxMi4zMiwxNy4wNSAxMiwxNi43MkMxMS42OCwxNy4wNSAxMS4yNCwxNy4yNSAxMC43NSwxNy4yNUExLjc1LDEuNzUgMCAwLDEgOSwxNS41QTAuNSwwLjUgMCAwLDEgOS41LDE1QTAuNSwwLjUgMCAwLDEgMTAsMTUuNUEwLjc1LDAuNzUgMCAwLDAgMTAuNzUsMTYuMjVBMC43NSwwLjc1IDAgMCwwIDExLjUsMTUuNUwxMC41LDE0LjVDMTAuODcsMTQuMTkgMTEuNCwxNCAxMiwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5kb3JhID0gXCJNMTAsMjBBMSwxIDAgMCwxIDksMjFINFYzSDEzLjcxQTYuNzUsNi43NSAwIDAsMSAyMC40Niw5Ljc1QzIwLjQ2LDEzLjUgMTcuNDQsMTYuNSAxMy43MSwxNi41SDEwVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbm9yYW1hID0gXCJNOC41LDEyLjVMMTEsMTUuNUwxNC41LDExTDE5LDE3SDVNMjMsMThWNkEyLDIgMCAwLDAgMjEsNEgzQTIsMiAwIDAsMCAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMjFBMiwyIDAgMCwwIDIzLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbm9yYW1hRmlzaGV5ZSA9IFwiTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTIsMkM2LjQ3LDIgMiw2LjQ3IDIsMTJDMiwxNy41MyA2LjQ3LDIyIDEyLDIyQzE3LjUzLDIyIDIyLDE3LjUzIDIyLDEyQzIyLDYuNDcgMTcuNTMsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhbm9yYW1hSG9yaXpvbnRhbCA9IFwiTTIxLjQzLDRDMjEuMzMsNCAyMS4yMyw0IDIxLjEyLDQuMDZDMTguMTgsNS4xNiAxNS4wOSw1LjcgMTIsNS43QzguOTEsNS43IDUuODIsNS4xNSAyLjg4LDQuMDZDMi43Nyw0IDIuNjYsNCAyLjU3LDRDMi4yMyw0IDIsNC4yMyAyLDQuNjNWMTkuMzhDMiwxOS43NyAyLjIzLDIwIDIuNTcsMjBDMi42NywyMCAyLjc3LDIwIDIuODgsMTkuOTRDNS44MiwxOC44NCA4LjkxLDE4LjMgMTIsMTguM0MxNS4wOSwxOC4zIDE4LjE4LDE4Ljg1IDIxLjEyLDE5Ljk0QzIxLjIzLDIwIDIxLjMzLDIwIDIxLjQzLDIwQzIxLjc2LDIwIDIyLDE5Ljc3IDIyLDE5LjM3VjQuNjNDMjIsNC4yMyAyMS43Niw0IDIxLjQzLDRNMjAsNi41NFYxNy40NUMxNy40LDE2LjY4IDE0LjcyLDE2LjI5IDEyLDE2LjI5QzkuMjgsMTYuMjkgNi42LDE2LjY4IDQsMTcuNDVWNi41NEM2LjYsNy4zMSA5LjI4LDcuNyAxMiw3LjdDMTQuNzIsNy43MSAxNy40LDcuMzIgMjAsNi41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5vcmFtYVZlcnRpY2FsID0gXCJNNi41NCwyMEM3LjMxLDE3LjQgNy43LDE0LjcyIDcuNywxMkM3LjcsOS4yOCA3LjMxLDYuNiA2LjU0LDRIMTcuNDVDMTYuNjgsNi42IDE2LjI5LDkuMjggMTYuMjksMTJDMTYuMjksMTQuNzIgMTYuNjgsMTcuNCAxNy40NSwyME0xOS45NCwyMS4xMkMxOC44NCwxOC4xOCAxOC4zLDE1LjA5IDE4LjMsMTJDMTguMyw4LjkxIDE4Ljg1LDUuODIgMTkuOTQsMi44OEMyMCwyLjc3IDIwLDIuNjYgMjAsMi41N0MyMCwyLjIzIDE5Ljc3LDIgMTkuMzcsMkg0LjYzQzQuMjMsMiA0LDIuMjMgNCwyLjU3QzQsMi42NyA0LDIuNzcgNC4wNiwyLjg4QzUuMTYsNS44MiA1LjcxLDguOTEgNS43MSwxMkM1LjcxLDE1LjA5IDUuMTYsMTguMTggNC4wNywyMS4xMkM0LDIxLjIzIDQsMjEuMzQgNCwyMS40M0M0LDIxLjc2IDQuMjMsMjIgNC42MywyMkgxOS4zOEMxOS43NywyMiAyMCwyMS43NiAyMCwyMS40M0MyMCwyMS4zMyAyMCwyMS4yMyAxOS45NCwyMS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYW5vcmFtYVdpZGVBbmdsZSA9IFwiTTEyLDRDOS4yNyw0IDYuNzgsNC4yNCA0LjA1LDQuNzJMMy4xMiw0Ljg4TDIuODcsNS43OEMyLjI5LDcuODUgMiw5LjkzIDIsMTJDMiwxNC4wNyAyLjI5LDE2LjE1IDIuODcsMTguMjJMMy4xMiwxOS4xMUw0LjA1LDE5LjI3QzYuNzgsMTkuNzYgOS4yNywyMCAxMiwyMEMxNC43MywyMCAxNy4yMiwxOS43NiAxOS45NSwxOS4yOEwyMC44OCwxOS4xMkwyMS4xMywxOC4yM0MyMS43MSwxNi4xNSAyMiwxNC4wNyAyMiwxMkMyMiw5LjkzIDIxLjcxLDcuODUgMjEuMTMsNS43OEwyMC44OCw0Ljg5TDE5Ljk1LDQuNzNDMTcuMjIsNC4yNCAxNC43Myw0IDEyLDRNMTIsNkMxNC40NSw2IDE2LjcxLDYuMiAxOS4yOSw2LjY0QzE5Ljc2LDguNDIgMjAsMTAuMjIgMjAsMTJDMjAsMTMuNzggMTkuNzYsMTUuNTggMTkuMjksMTcuMzZDMTYuNzEsMTcuOCAxNC40NSwxOCAxMiwxOEM5LjU1LDE4IDcuMjksMTcuOCA0LjcxLDE3LjM2QzQuMjQsMTUuNTggNCwxMy43OCA0LDEyQzQsMTAuMjIgNC4yNCw4LjQyIDQuNzEsNi42NEM3LjI5LDYuMiA5LjU1LDYgMTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXBlckN1dFZlcnRpY2FsID0gXCJNMTEuNDMsMy4yM0wxMiw0TDEyLjU3LDMuMjNWMy4yNEMxMy4xMiwyLjUgMTQsMiAxNSwyQTMsMyAwIDAsMSAxOCw1QzE4LDUuMzUgMTcuOTQsNS42OSAxNy44Myw2SDIwQTIsMiAwIDAsMSAyMiw4VjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjhBMiwyIDAgMCwxIDQsNkg2LjE3QzYuMDYsNS42OSA2LDUuMzUgNiw1QTMsMyAwIDAsMSA5LDJDMTAsMiAxMC44OCwyLjUgMTEuNDMsMy4yNFYzLjIzTTQsOFYyMEgxMUExLDEgMCAwLDEgMTIsMTlBMSwxIDAgMCwxIDEzLDIwSDIwVjhIMTVMMTQuOSw4TDE3LDEwLjkyTDE1LjQsMTIuMUwxMi40Miw4SDExLjU4TDguNiwxMi4xTDcsMTAuOTJMOS4xLDhIOUw0LDhNOSw0QTEsMSAwIDAsMCA4LDVBMSwxIDAgMCwwIDksNkExLDEgMCAwLDAgMTAsNUExLDEgMCAwLDAgOSw0TTE1LDRBMSwxIDAgMCwwIDE0LDVBMSwxIDAgMCwwIDE1LDZBMSwxIDAgMCwwIDE2LDVBMSwxIDAgMCwwIDE1LDRNMTIsMTZBMSwxIDAgMCwxIDEzLDE3QTEsMSAwIDAsMSAxMiwxOEExLDEgMCAwLDEgMTEsMTdBMSwxIDAgMCwxIDEyLDE2TTEyLDEzQTEsMSAwIDAsMSAxMywxNEExLDEgMCAwLDEgMTIsMTVBMSwxIDAgMCwxIDExLDE0QTEsMSAwIDAsMSAxMiwxM00xMiwxMEExLDEgMCAwLDEgMTMsMTFBMSwxIDAgMCwxIDEyLDEyQTEsMSAwIDAsMSAxMSwxMUExLDEgMCAwLDEgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFwZXJSb2xsID0gXCJNOSAzQzUuNjkgMyAzLjE0IDUuNjkgMyA5VjIxSDEyVjEzLjQ2QzEzLjEgMTQuNDUgMTQuNSAxNSAxNiAxNUMxOS4zMSAxNSAyMiAxMi4zMSAyMiA5QzIyIDUuNjkgMTkuMzEgMyAxNiAzSDlNMTYgNUMxOC4yMSA1IDIwIDYuNzkgMjAgOUMyMCAxMS4yMSAxOC4yMSAxMyAxNiAxM0MxMy43OSAxMyAxMiAxMS4yMSAxMiA5QzEyIDYuNzkgMTMuNzkgNSAxNiA1TTE2IDcuMjVDMTUuMDMgNy4yNSAxNC4yNSA4LjAzIDE0LjI1IDlDMTQuMjUgOS45NyAxNS4wMyAxMC43NSAxNiAxMC43NUMxNi45NyAxMC43NSAxNy43NSA5Ljk3IDE3Ljc1IDlDMTcuNzUgOC4wMyAxNi45NyA3LjI1IDE2IDcuMjVNNCAxMkg1VjEzSDRWMTJNNiAxMkg3VjEzSDZWMTJNOCAxMkg5VjEzSDhWMTJNMTAgMTJIMTFWMTNIMTBWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFwZXJSb2xsT3V0bGluZSA9IFwiTTkgM0M1LjY5IDMgMy4xNCA1LjY5IDMgOVYyMUgxMlYxMy40NkMxMy4xIDE0LjQ1IDE0LjUgMTUgMTYgMTVDMTkuMzEgMTUgMjIgMTIuMzEgMjIgOUMyMiA1LjY5IDE5LjMxIDMgMTYgM0g5TTkgNUgxMS41NEMxMC41NSA2LjEgMTAgNy41IDEwIDlWMTJIOVYxM0gxMFYxOUg1VjEzSDZWMTJINVY5QzUgNi43OSA2Ljc5IDUgOSA1TTE2IDVDMTguMjEgNSAyMCA2Ljc5IDIwIDlDMjAgMTEuMjEgMTguMjEgMTMgMTYgMTNDMTMuNzkgMTMgMTIgMTEuMjEgMTIgOUMxMiA2Ljc5IDEzLjc5IDUgMTYgNU0xNiA3LjI1QzE1LjAzIDcuMjUgMTQuMjUgOC4wMyAxNC4yNSA5QzE0LjI1IDkuOTcgMTUuMDMgMTAuNzUgMTYgMTAuNzVDMTYuOTcgMTAuNzUgMTcuNzUgOS45NyAxNy43NSA5QzE3Ljc1IDguMDMgMTYuOTcgNy4yNSAxNiA3LjI1TTcgMTJWMTNIOFYxMkg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhcGVyY2xpcCA9IFwiTTE2LjUsNlYxNy41QTQsNCAwIDAsMSAxMi41LDIxLjVBNCw0IDAgMCwxIDguNSwxNy41VjVBMi41LDIuNSAwIDAsMSAxMSwyLjVBMi41LDIuNSAwIDAsMSAxMy41LDVWMTUuNUExLDEgMCAwLDEgMTIuNSwxNi41QTEsMSAwIDAsMSAxMS41LDE1LjVWNkgxMFYxNS41QTIuNSwyLjUgMCAwLDAgMTIuNSwxOEEyLjUsMi41IDAgMCwwIDE1LDE1LjVWNUE0LDQgMCAwLDAgMTEsMUE0LDQgMCAwLDAgNyw1VjE3LjVBNS41LDUuNSAwIDAsMCAxMi41LDIzQTUuNSw1LjUgMCAwLDAgMTgsMTcuNVY2SDE2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGFyYWNodXRlID0gXCJNMjEuMiwxMC45NUwxMiwyM0wyLjc4LDEwLjk2TDIuODcsMTAuODhDMy4wOCwxMC42NyAzLjMzLDEwLjUgMy41OCwxMC4zNkwxMC43MywxOS42OUw4LjU4LDEzTDkuMjQsMTEuODFMMTIsMjAuMzhMMTQuNzMsMTEuOEwxNS40LDEzTDEzLjI3LDE5LjY5TDIwLjQxLDEwLjM1QzIwLjY2LDEwLjUgMjAuOSwxMC42NCAyMS4xLDEwLjg1TDIxLjIsMTAuOTVNNSw5QzYuNSw5IDcuODEsOS44NiA4LjUsMTEuMUM5LjE3LDkuODYgMTAuNDcsOSAxMiw5QzEzLjUsOSAxNC44LDkuODUgMTUuNSwxMS4wOUMxNi4xNiw5Ljg0IDE3LjQ3LDkgMTksOUMyMC4wOSw5IDIxLjA5LDkuNDIgMjEuODEsMTAuMTRDMjAuOTQsNS41IDE2Ljg4LDIgMTIsMkM3LjA5LDIgMy4wMyw1LjUgMi4xNiwxMC4xN0MyLjg5LDkuNDUgMy44OSw5IDUsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXJhY2h1dGVPdXRsaW5lID0gXCJNMjEuMiwxMC45NUwxMiwyM0wyLjc4LDEwLjk2TDIuODcsMTAuODhDMy4wOCwxMC42NyAzLjMzLDEwLjUgMy41OCwxMC4zNkwxMC43MywxOS42OUw4LjU4LDEzTDkuMjQsMTEuODFMMTIsMjAuMzhMMTQuNzMsMTEuOEwxNS40LDEzTDEzLjI3LDE5LjY5TDIwLjQxLDEwLjM1QzIwLjY2LDEwLjUgMjAuOSwxMC42NCAyMS4xLDEwLjg1TDIxLjIsMTAuOTVNMTIsNEMxNC41LDQgMTYuNzcsNS4xNyAxOC4yNSw3LjAzQzE3LjI0LDcuMTUgMTYuMjgsNy41NCAxNS40Nyw4LjEzQzE0LjQ3LDcuNDEgMTMuMjYsNyAxMiw3QzEwLjcxLDcgOS41LDcuNDEgOC41LDguMTRDNy42OCw3LjU1IDYuNzIsNy4xNyA1LjcxLDcuMDRDNy4xOSw1LjE3IDkuNDcsNCAxMiw0TTEyLDJDNy4wOSwyIDMuMDMsNS41IDIuMTYsMTAuMTdDMi44OSw5LjQ1IDMuODksOSA1LDlDNi41LDkgNy44MSw5Ljg2IDguNSwxMS4xQzkuMTcsOS44NiAxMC40Nyw5IDEyLDlDMTMuNSw5IDE0LjgsOS44NSAxNS41LDExLjA5QzE2LjE2LDkuODQgMTcuNDcsOSAxOSw5QzIwLjA5LDkgMjEuMDksOS40MiAyMS44MSwxMC4xNEMyMC45NCw1LjUgMTYuODgsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhcmtpbmcgPSBcIk0xMy4yLDExSDEwVjdIMTMuMkEyLDIgMCAwLDEgMTUuMiw5QTIsMiAwIDAsMSAxMy4yLDExTTEzLDNINlYyMUgxMFYxNUgxM0E2LDYgMCAwLDAgMTksOUMxOSw1LjY4IDE2LjMxLDMgMTMsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQYXJ0eVBvcHBlciA9IFwiTTE0LjUzIDEuNDVMMTMuNDUgMi41M0wxNS4wNSA0LjEzQzE1LjI3IDQuMzggMTUuMzggNC42NyAxNS4zOCA1UzE1LjI3IDUuNjQgMTUuMDUgNS44NkwxMS41IDkuNDdMMTIuNSAxMC41NUwxNi4xMyA2Ljk0QzE2LjY2IDYuMzUgMTYuOTIgNS43IDE2LjkyIDVDMTYuOTIgNC4zIDE2LjY2IDMuNjQgMTYuMTMgMy4wNUwxNC41MyAxLjQ1TTEwLjU1IDMuNDdMOS40NyA0LjU1TDEwLjA4IDUuMTFDMTAuMyA1LjMzIDEwLjQxIDUuNjMgMTAuNDEgNlMxMC4zIDYuNjcgMTAuMDggNi44OUw5LjQ3IDcuNDVMMTAuNTUgOC41M0wxMS4xMSA3LjkyQzExLjY0IDcuMzMgMTEuOTEgNi42OSAxMS45MSA2QzExLjkxIDUuMjggMTEuNjQgNC42MyAxMS4xMSA0LjAzTDEwLjU1IDMuNDdNMjEgNS4wNkMyMC4zMSA1LjA2IDE5LjY3IDUuMzMgMTkuMDggNS44NkwxMy40NSAxMS41TDE0LjUzIDEyLjVMMjAuMTEgNi45NEMyMC4zNiA2LjY5IDIwLjY2IDYuNTYgMjEgNi41NlMyMS42NCA2LjY5IDIxLjg5IDYuOTRMMjIuNSA3LjU1TDIzLjUzIDYuNDdMMjIuOTcgNS44NkMyMi4zOCA1LjMzIDIxLjcyIDUuMDYgMjEgNS4wNk03IDhMMiAyMkwxNiAxN0w3IDhNMTkgMTEuMDZDMTguMyAxMS4wNiAxNy42NiAxMS4zMyAxNy4wNiAxMS44NkwxNS40NyAxMy40NUwxNi41NSAxNC41M0wxOC4xNCAxMi45NEMxOC4zOSAxMi42OSAxOC42NyAxMi41NiAxOSAxMi41NkMxOS4zMyAxMi41NiAxOS42MyAxMi42OSAxOS44OCAxMi45NEwyMS41IDE0LjUzTDIyLjU1IDEzLjVMMjAuOTUgMTEuODZDMjAuMzYgMTEuMzMgMTkuNyAxMS4wNiAxOSAxMS4wNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXNzcG9ydCA9IFwiTTYsMkEyLDIgMCAwLDAgNCw0VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwySDZNMTIsNUE1LDUgMCAwLDEgMTcsMTBBNSw1IDAgMCwxIDEyLDE1QTUsNSAwIDAsMSA3LDEwQTUsNSAwIDAsMSAxMiw1TTEyLDZDMTEuNTksNi42MiAxMS4yNSw3LjI5IDExLjA0LDhIMTIuOTZDMTIuNzUsNy4yOSAxMi40Miw2LjYyIDEyLDZNMTAuNyw2LjIyQzkuNzgsNi41MyA5LDcuMTcgOC41NCw4SDEwQzEwLjE4LDcuMzggMTAuNCw2Ljc4IDEwLjcsNi4yMk0xMy4yOSw2LjIyQzEzLjU5LDYuNzggMTMuODIsNy4zOCAxNCw4SDE1LjQ2QzE1LDcuMTcgMTQuMjEsNi41NCAxMy4yOSw2LjIyTTguMTMsOUM4LjA1LDkuMzIgOCw5LjY1IDgsMTBDOCwxMC4zNSA4LjA1LDEwLjY4IDguMTMsMTFIOS44MkM5Ljc4LDEwLjY3IDkuNzUsMTAuMzQgOS43NSwxMEM5Ljc1LDkuNjYgOS43OCw5LjMzIDkuODIsOUg4LjEzTTEwLjgzLDlDMTAuNzgsOS4zMiAxMC43NSw5LjY2IDEwLjc1LDEwQzEwLjc1LDEwLjM0IDEwLjc4LDEwLjY3IDEwLjgzLDExSDEzLjE3QzEzLjIxLDEwLjY3IDEzLjI1LDEwLjM0IDEzLjI1LDEwQzEzLjI1LDkuNjYgMTMuMjEsOS4zMiAxMy4xNyw5SDEwLjgzTTE0LjE4LDlDMTQuMjIsOS4zMyAxNC4yNSw5LjY2IDE0LjI1LDEwQzE0LjI1LDEwLjM0IDE0LjIyLDEwLjY3IDE0LjE4LDExSDE1Ljg3QzE1Ljk1LDEwLjY4IDE2LDEwLjM1IDE2LDEwQzE2LDkuNjUgMTUuOTUsOS4zMiAxNS44Nyw5SDE0LjE4TTguNTQsMTJDOSwxMi44MyA5Ljc4LDEzLjQ2IDEwLjcsMTMuNzhDMTAuNCwxMy4yMiAxMC4xOCwxMi42MyAxMCwxMkg4LjU0TTExLjA0LDEyQzExLjI1LDEyLjcyIDExLjU5LDEzLjM4IDEyLDE0QzEyLjQyLDEzLjM4IDEyLjc1LDEyLjcyIDEyLjk2LDEySDExLjA0TTE0LDEyQzEzLjgyLDEyLjYzIDEzLjU5LDEzLjIyIDEzLjI5LDEzLjc4QzE0LjIxLDEzLjQ2IDE1LDEyLjgzIDE1LjQ2LDEySDE0TTcsMTdIMTdWMTlIN1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQYXNzcG9ydEJpb21ldHJpYyA9IFwiTTQsNEEyLDIgMCAwLDAgMiw2VjExSDguMTNDOC41OSw5LjI0IDEwLjE4LDggMTIsOEMxMy44Miw4IDE1LjQxLDkuMjQgMTUuODcsMTFIMjJWNkEyLDIgMCAwLDAgMjAsNEg0TTEyLDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxME0yLDEzVjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFYxM0gxNS44N0MxNS40MSwxNC43NiAxMy44MiwxNiAxMiwxNkMxMC4xOCwxNiA4LjU5LDE0Ljc2IDguMTMsMTNIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXN0YSA9IFwiTTQgMTYuNVY4SDNWN0g0VjZIM1Y1SDRWNEgzVjNIOUM5LjUgMy4wMyA5Ljk1IDMuMjQgMTAuMzQgMy42M1MxMC45NSA0LjUgMTEgNUgyMVY2SDExQzEwLjk1IDYuNTMgMTAuNzMgNyAxMC4zNCA3LjQzUzkuNSA4LjA1IDkgOEg3VjE1LjA1QzcuMDUgMTUuMDUgNy4xMyAxNS4wNCA3LjI0IDE1UzcuNDQgMTUgNy41IDE1QzguMDYgMTUgOC43IDE1LjE0IDkuNDIgMTUuNDJDOS44MyAxNC41IDEwLjUzIDEzLjY4IDExLjUzIDEzUzEzLjUzIDEyIDE0LjUzIDEyQzE2LjA2IDEyIDE3LjM2IDEyLjUzIDE4LjQyIDEzLjU5UzIwIDE1Ljk1IDIwIDE3LjVDMjAgMTcuNTUgMjAgMTcuNjQgMjAgMTcuNzdTMTkuOTcgMTcuOTcgMTkuOTcgMThIMy4xNEMzLjI3IDE3LjUgMy41NSAxNyA0IDE2LjVNNiAxNS4yM1Y4SDVWMTUuN0M1LjUgMTUuNDUgNS44MSAxNS4zIDYgMTUuMjNNOSA3VjZIN1Y3SDlNOSA0SDdWNUg5VjRNNSA0VjVINlY0SDVNNSA2VjdINlY2SDVNMiAxOUgyMkwyMCAyMUg0TDIgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF0aW9IZWF0ZXIgPSBcIk0xNSAyMkg5VjIxSDE1VjIyTTE5IDRMMTUgMkg5TDUgNEgxOU04IDVMOC40IDZIMTUuNkwxNiA1SDhNMTAgMTBIMTFWMTVDMTAuNCAxNSAxMCAxNS40IDEwIDE2VjIwSDE0VjE2QzE0IDE1LjQgMTMuNiAxNSAxMyAxNVYxMEgxNEwxNC40IDlIOS42TDEwIDEwTTkuMiA4SDE0LjhMMTUuMiA3SDguOEw5LjIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXRyZW9uID0gXCJNMTQuODIgMi40MUMxOC43OCAyLjQxIDIyIDUuNjUgMjIgOS42MkMyMiAxMy41OCAxOC43OCAxNi44IDE0LjgyIDE2LjhDMTAuODUgMTYuOCA3LjYxIDEzLjU4IDcuNjEgOS42MkM3LjYxIDUuNjUgMTAuODUgMi40MSAxNC44MiAyLjQxTTIgMjEuNkg1LjVWMi40MUgyVjIxLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF1c2UgPSBcIk0xNCwxOUgxOFY1SDE0TTYsMTlIMTBWNUg2VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhdXNlQ2lyY2xlID0gXCJNMTUsMTZIMTNWOEgxNU0xMSwxNkg5VjhIMTFNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF1c2VDaXJjbGVPdXRsaW5lID0gXCJNMTMsMTZWOEgxNVYxNkgxM005LDE2VjhIMTFWMTZIOU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF1c2VPY3RhZ29uID0gXCJNMTUuNzMsM0wyMSw4LjI3VjE1LjczTDE1LjczLDIxSDguMjdMMywxNS43M1Y4LjI3TDguMjcsM0gxNS43M00xNSwxNlY4SDEzVjE2SDE1TTExLDE2VjhIOVYxNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXVzZU9jdGFnb25PdXRsaW5lID0gXCJNMTUsMTZIMTNWOEgxNVYxNk0xMSwxNkg5VjhIMTFWMTZNMTUuNzMsM0wyMSw4LjI3VjE1LjczTDE1LjczLDIxSDguMjdMMywxNS43M1Y4LjI3TDguMjcsM0gxNS43M00xNC45LDVIOS4xTDUsOS4xVjE0LjlMOS4xLDE5SDE0LjlMMTksMTQuOVY5LjFMMTQuOSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhdyA9IFwiTTguMzUsM0M5LjUzLDIuODMgMTAuNzgsNC4xMiAxMS4xNCw1LjlDMTEuNSw3LjY3IDEwLjg1LDkuMjUgOS42Nyw5LjQzQzguNSw5LjYxIDcuMjQsOC4zMiA2Ljg3LDYuNTRDNi41LDQuNzcgNy4xNywzLjE5IDguMzUsM00xNS41LDNDMTYuNjksMy4xOSAxNy4zNSw0Ljc3IDE3LDYuNTRDMTYuNjIsOC4zMiAxNS4zNyw5LjYxIDE0LjE5LDkuNDNDMTMsOS4yNSAxMi4zNSw3LjY3IDEyLjcyLDUuOUMxMy4wOCw0LjEyIDE0LjMzLDIuODMgMTUuNSwzTTMsNy42QzQuMTQsNy4xMSA1LjY5LDggNi41LDkuNTVDNy4yNiwxMS4xMyA3LDEyLjc5IDUuODcsMTMuMjhDNC43NCwxMy43NyAzLjIsMTIuODkgMi40MSwxMS4zMkMxLjYyLDkuNzUgMS45LDguMDggMyw3LjZNMjEsNy42QzIyLjEsOC4wOCAyMi4zOCw5Ljc1IDIxLjU5LDExLjMyQzIwLjgsMTIuODkgMTkuMjYsMTMuNzcgMTguMTMsMTMuMjhDMTcsMTIuNzkgMTYuNzQsMTEuMTMgMTcuNSw5LjU1QzE4LjMxLDggMTkuODYsNy4xMSAyMSw3LjZNMTkuMzMsMTguMzhDMTkuMzcsMTkuMzIgMTguNjUsMjAuMzYgMTcuNzksMjAuNzVDMTYsMjEuNTcgMTMuODgsMTkuODcgMTEuODksMTkuODdDOS45LDE5Ljg3IDcuNzYsMjEuNjQgNiwyMC43NUM1LDIwLjI2IDQuMzEsMTguOTYgNC40NCwxNy44OEM0LjYyLDE2LjM5IDYuNDEsMTUuNTkgNy40NywxNC41QzguODgsMTMuMDkgOS44OCwxMC40NCAxMS44OSwxMC40NEMxMy44OSwxMC40NCAxNC45NSwxMy4wNSAxNi4zLDE0LjVDMTcuNDEsMTUuNzIgMTkuMjYsMTYuNzUgMTkuMzMsMTguMzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGF3T2ZmID0gXCJNMiw0LjI3TDMuMjgsM0wyMS41LDIxLjIyTDIwLjIzLDIyLjVMMTguMjMsMjAuNUMxOC4wOSwyMC42IDE3Ljk0LDIwLjY4IDE3Ljc5LDIwLjc1QzE2LDIxLjU3IDEzLjg4LDE5Ljg3IDExLjg5LDE5Ljg3QzkuOSwxOS44NyA3Ljc2LDIxLjY0IDYsMjAuNzVDNSwyMC4yNiA0LjMxLDE4Ljk2IDQuNDQsMTcuODhDNC42MiwxNi4zOSA2LjQxLDE1LjU5IDcuNDcsMTQuNUM4LjIxLDEzLjc3IDguODQsMTIuNjkgOS41NSwxMS44MkwyLDQuMjdNOC4zNSwzQzkuNTMsMi44MyAxMC43OCw0LjEyIDExLjE0LDUuOUMxMS4zMiw2Ljc1IDExLjI2LDcuNTYgMTEsOC4xOUw3LjAzLDQuMkM3LjI5LDMuNTUgNy43NSwzLjEgOC4zNSwzTTE1LjUsM0MxNi42OSwzLjE5IDE3LjM1LDQuNzcgMTcsNi41NEMxNi42Miw4LjMyIDE1LjM3LDkuNjEgMTQuMTksOS40M0MxMyw5LjI1IDEyLjM1LDcuNjcgMTIuNzIsNS45QzEzLjA4LDQuMTIgMTQuMzMsMi44MyAxNS41LDNNMyw3LjZDNC4xNCw3LjExIDUuNjksOCA2LjUsOS41NUM3LjI2LDExLjEzIDcsMTIuNzkgNS44NywxMy4yOEM0Ljc0LDEzLjc3IDMuMiwxMi44OSAyLjQxLDExLjMyQzEuNjIsOS43NSAxLjksOC4wOCAzLDcuNk0yMSw3LjZDMjIuMSw4LjA4IDIyLjM4LDkuNzUgMjEuNTksMTEuMzJDMjAuOCwxMi44OSAxOS4yNiwxMy43NyAxOC4xMywxMy4yOEMxNywxMi43OSAxNi43NCwxMS4xMyAxNy41LDkuNTVDMTguMzEsOCAxOS44Niw3LjExIDIxLDcuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQYXdPZmZPdXRsaW5lID0gXCJNMjIuODMgOC4yNUMyMi41NiA3LjUgMjIuMDUgNi45NiAyMS4zOSA2LjY4QzIwLjIyIDYuMTggMTguOCA2LjYgMTcuNyA3LjY2QzE3LjgxIDcuMzcgMTcuOTEgNy4wNiAxOCA2LjczQzE4LjI1IDUuMzggMTggNC4wMyAxNy4zOCAzLjEyQzE2Ljk1IDIuNSAxNi4zMyAyLjExIDE1LjY0IDJDMTQuMSAxLjc4IDEyLjU3IDMuMDggMTEuOTMgNUMxMS4yOCAzLjA1IDkuNzQgMS43NiA4LjE5IDJDNy41IDIuMTIgNi44OCAyLjUzIDYuNDUgMy4xNkM2LjQ0IDMuMTggNi40MyAzLjIgNi40MiAzLjIyTDcuOTEgNC43MUM3Ljk2IDQuNTQgOCA0LjQgOC4xIDQuMjlDOC4yMiA0LjEyIDguMzYgNCA4LjUgNEM5IDMuOTEgOS44OCA0LjY5IDEwLjE2IDYuMUMxMC4yMyA2LjQ0IDEwLjI0IDYuNzUgMTAuMjIgN0wxMS44OCA4LjY4QzExLjg5IDguNjUgMTEuOTEgOC42MiAxMS45MyA4LjU4QzExLjk3IDguNjkgMTIuMDQgOC43OCAxMi4wOSA4Ljg5TDEzLjQzIDEwLjIzQzEzLjYzIDEwLjMyIDEzLjgzIDEwLjM5IDE0LjA0IDEwLjQyQzE0LjE2IDEwLjQ0IDE0LjI5IDEwLjQ1IDE0LjQxIDEwLjQ1QzE1LjEzIDEwLjQ1IDE1LjgzIDEwLjEyIDE2LjQzIDkuNTdDMTYgMTAuNjQgMTUuOTYgMTEuNzMgMTYuMjkgMTIuNjNDMTYuNTYgMTMuMzUgMTcuMDcgMTMuOTEgMTcuNzMgMTQuMkMxOC4wNyAxNC4zNCAxOC40MyAxNC40MSAxOC44IDE0LjQxQzIwLjE4IDE0LjQxIDIxLjY2IDEzLjQgMjIuNSAxMS43N0MyMy4wOCAxMC41OCAyMy4yMSA5LjMgMjIuODMgOC4yNU0xNiA2LjMzQzE1LjcyIDcuNzMgMTQuODMgOC41IDE0LjM0IDguNDRDMTQuMjggOC40MyAxNC4xMiA4LjQxIDEzLjk0IDguMTVDMTMuNjkgNy43OSAxMy41IDcuMDcgMTMuNyA2LjFDMTMuOTcgNC43NiAxNC44IDQgMTUuMjkgNEMxNS4zMSA0IDE1LjM0IDQgMTUuMzYgNEMxNS41IDQgMTUuNjMgNC4xMSAxNS43NSA0LjI3QzE2LjA3IDQuNzMgMTYuMTggNS41NCAxNiA2LjMzTTIwLjcgMTAuODdDMjAuMTIgMTIgMTkuMDggMTIuNiAxOC41MyAxMi4zNkMxOC40NyAxMi4zNCAxOC4yOCAxMi4yNiAxOC4xNiAxMS45M0MxOCAxMS40MyAxOC4wNyAxMC42OCAxOC4zOSAxMEMxOC45IDkuMDQgMTkuNzQgOC40NyAyMC4zMyA4LjQ3QzIwLjQzIDguNDcgMjAuNSA4LjUgMjAuNiA4LjVIMjAuNkMyMC43NSA4LjU4IDIwLjg3IDguNzIgMjAuOTUgOC45NEMyMS4wOSA5LjM0IDIxLjEgMTAuMDYgMjAuNyAxMC44N00xLjExIDNMNC44IDYuNjlDNC4wNiA2LjQxIDMuMjkgNi4zOSAyLjYgNi42OEMxLjk0IDYuOTcgMS40MyA3LjUzIDEuMTcgOC4yN0MuNzkzIDkuMzEgLjkxOSAxMC41OCAxLjUgMTEuNzdDMi4zNCAxMy40IDMuODIgMTQuNDEgNS4yMSAxNC40MUM1LjU3IDE0LjQxIDUuOTMgMTQuMzQgNi4yNyAxNC4yQzYuOTMgMTMuOTEgNy40NCAxMy4zNSA3LjcxIDEyLjYzQzggMTEuNzkgOCAxMC43NyA3LjY0IDkuNzZDNy44MyA5LjkxIDguMDQgMTAuMDMgOC4yNCAxMC4xM0w5LjczIDExLjYyQzguOTQgMTIuNSA4LjI3IDEzLjcgNy40NyAxNC41QzYuNDEgMTUuNTkgNC42MiAxNi4zOSA0LjQ0IDE3Ljg4QzQuMzEgMTguOTYgNSAyMC4yNiA2IDIwLjc1QzYuMzUgMjAuOTMgNi43MiAyMSA3LjEgMjFDOC42MSAyMSAxMC4zIDE5Ljg3IDExLjg5IDE5Ljg3QzEzLjUgMTkuODcgMTUuMTggMjAuOTcgMTYuNzEgMjAuOTdDMTcuMDggMjAuOTcgMTcuNDQgMjAuOTEgMTcuNzkgMjAuNzVDMTggMjAuNjUgMTguMjMgMjAuNSAxOC40MyAyMC4zMkwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTTExLjE1IDEzLjA0TDE3IDE4LjlDMTcgMTguOTEgMTYuOTcgMTguOTIgMTYuOTYgMTguOTNDMTYuOTIgMTguOTUgMTYuODUgMTguOTcgMTYuNzEgMTguOTdDMTYuMjggMTguOTcgMTUuNjMgMTguNzUgMTUgMTguNTRDMTQuMDggMTguMjMgMTMuMDMgMTcuODcgMTEuODkgMTcuODdDMTAuNzUgMTcuODcgOS43IDE4LjI0IDguNzggMTguNTZDOC4xNSAxOC43NyA3LjUgMTkgNy4xIDE5QzYuOTcgMTkgNi45MiAxOSA2Ljg4IDE4Ljk1QzYuNjYgMTguODQgNi40IDE4LjM3IDYuNDMgMTguMTJDNi41IDE3Ljg5IDcuMjMgMTcuMzEgNy41OSAxN0M4LjAzIDE2LjY4IDguNSAxNi4zMyA4Ljg5IDE1LjkxQzkuNDQgMTUuMzYgOS44OSAxNC43MyAxMC4zMyAxNC4xMkMxMC41NSAxMy44IDEwLjg2IDEzLjM4IDExLjE1IDEzLjA0TTUuNiAxMEM1LjkzIDEwLjY4IDYgMTEuNDMgNS44NCAxMS45M0M1LjcxIDEyLjI2IDUuNTMgMTIuMzQgNS40NyAxMi4zNkM0LjkyIDEyLjYgMy44OCAxMiAzLjMgMTAuODdDMi45IDEwLjA2IDIuOTEgOS4zNSAzLjA1IDguOTRDMy4xMyA4LjczIDMuMjUgOC41OCAzLjQgOC41QzMuNSA4LjUgMy41NyA4LjQ2IDMuNjggOC40NkM0LjI2IDguNDYgNS4xIDkuMDMgNS42IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBhd091dGxpbmUgPSBcIk0yMi44MyA4LjI1QzIyLjU2IDcuNSAyMi4wNSA2Ljk2IDIxLjQgNi42OEMyMC4yMyA2LjE4IDE4LjgxIDYuNiAxNy43IDcuNjZDMTcuODEgNy4zNyAxNy45MSA3LjA2IDE4IDYuNzNDMTguMjUgNS4zOCAxOC4wMyA0LjAzIDE3LjM4IDMuMTJDMTYuOTUgMi41IDE2LjMzIDIuMTEgMTUuNjQgMkMxNC4xIDEuNzggMTIuNTcgMy4wOCAxMS45MyA1QzExLjI5IDMuMDUgOS43NCAxLjc2IDguMTkgMkM3LjUgMi4xMiA2Ljg4IDIuNTMgNi40NSAzLjE2QzUuODEgNC4wOSA1LjYxIDUuMzkgNS44OSA2Ljc0QzUuOTQgNyA2IDcuMjQgNi4wOSA3LjQ3QzUgNi41NiAzLjcgNi4yIDIuNiA2LjY4QzEuOTQgNi45NyAxLjQ0IDcuNTMgMS4xNyA4LjI3Qy43OTQgOS4zMSAuOTIgMTAuNTggMS41IDExLjc3QzIuMzQgMTMuNCAzLjgyIDE0LjQxIDUuMjEgMTQuNDFDNS41NyAxNC40MSA1LjkzIDE0LjM0IDYuMjcgMTQuMkM2LjkzIDEzLjkxIDcuNDQgMTMuMzUgNy43MSAxMi42M0M4LjAzIDExLjc5IDggMTAuNzcgNy42NCA5Ljc2QzguMTkgMTAuMTkgOC44MSAxMC40NSA5LjQ1IDEwLjQ1QzkuNTcgMTAuNDUgOS43IDEwLjQ0IDkuODIgMTAuNDJDMTAuNSAxMC4zMiAxMS4xMiA5LjkyIDExLjU1IDkuM0MxMS43IDkuMDggMTEuODMgOC44NCAxMS45MyA4LjU4QzEyLjAzIDguODQgMTIuMTUgOS4wOCAxMi4zIDkuMjlDMTIuNzMgOS45MSAxMy4zNSAxMC4zMSAxNC4wNCAxMC40MkMxNC4xNiAxMC40NCAxNC4yOSAxMC40NSAxNC40MSAxMC40NUMxNS4xMyAxMC40NSAxNS44MyAxMC4xMiAxNi40MyA5LjU3QzE2IDEwLjY0IDE1Ljk2IDExLjczIDE2LjI5IDEyLjYzQzE2LjU2IDEzLjM2IDE3LjA3IDEzLjkxIDE3LjczIDE0LjJDMTguMDcgMTQuMzQgMTguNDMgMTQuNDEgMTguOCAxNC40MUMyMC4xOCAxNC40MSAyMS42NiAxMy40IDIyLjUgMTEuNzdDMjMuMDggMTAuNTggMjMuMjEgOS4zIDIyLjgzIDguMjVNNS44NCAxMS45M0M1LjcyIDEyLjI2IDUuNTMgMTIuMzQgNS40NyAxMi4zNkM0LjkyIDEyLjYgMy44OCAxMiAzLjMgMTAuODdDMi45IDEwLjA2IDIuOTEgOS4zNSAzLjA1IDguOTRDMy4xMyA4LjczIDMuMjUgOC41OCAzLjQgOC41QzMuNSA4LjUgMy41OCA4LjQ2IDMuNjggOC40NkM0LjI2IDguNDYgNS4xIDkuMDMgNS42IDEwQzUuOTMgMTAuNjggNi4wMyAxMS40MyA1Ljg0IDExLjkzTTkuOTEgOC4xNkM5Ljc5IDguMzIgOS42NiA4LjQyIDkuNSA4LjQ0QzkgOC41IDguMTQgNy43MyA3Ljg1IDYuMzRDNy42NSA1LjM4IDcuODUgNC42NiA4LjEgNC4yOUM4LjIyIDQuMTIgOC4zNiA0IDguNSA0QzkgMy45MSA5Ljg4IDQuNjkgMTAuMTYgNi4xQzEwLjM2IDcuMDcgMTAuMTYgNy44IDkuOTEgOC4xNk0xNiA2LjMzQzE1LjcyIDcuNzMgMTQuODMgOC41IDE0LjM0IDguNDRDMTQuMjggOC40MyAxNC4xMiA4LjQxIDEzLjk0IDguMTVDMTMuNjkgNy43OSAxMy41IDcuMDcgMTMuNyA2LjFDMTMuOTcgNC43NiAxNC44IDQgMTUuMjkgNEMxNS4zMiA0IDE1LjM0IDQgMTUuMzYgNEMxNS41IDQgMTUuNjMgNC4xMSAxNS43NSA0LjI3QzE2LjA3IDQuNzMgMTYuMTggNS41NCAxNiA2LjMzTTIwLjcgMTAuODdDMjAuMTIgMTIgMTkuMDggMTIuNiAxOC41MyAxMi4zNkMxOC40NyAxMi4zNCAxOC4yOCAxMi4yNiAxOC4xNiAxMS45M0MxOCAxMS40MyAxOC4wNyAxMC42OCAxOC4zOSAxMEMxOC45IDkuMDQgMTkuNzUgOC40NyAyMC4zMyA4LjQ3QzIwLjQzIDguNDcgMjAuNSA4LjUgMjAuNiA4LjVIMjAuNjFDMjAuNzYgOC41OCAyMC44NyA4LjcyIDIwLjk1IDguOTRDMjEuMSA5LjM0IDIxLjExIDEwLjA2IDIwLjcgMTAuODdNMTYuMyAxNC41QzE0Ljk1IDEzLjA1IDEzLjg5IDEwLjQ0IDExLjg5IDEwLjQ0QzkuODggMTAuNDQgOC44OCAxMy4wOSA3LjQ3IDE0LjVDNi40MSAxNS41OSA0LjYyIDE2LjM5IDQuNDQgMTcuODhDNC4zMSAxOC45NiA1IDIwLjI2IDYgMjAuNzVDNi4zNSAyMC45MyA2LjcyIDIxIDcuMSAyMUM4LjYxIDIxIDEwLjMgMTkuODcgMTEuODkgMTkuODdDMTMuNSAxOS44NyAxNS4xOCAyMC45NyAxNi43MSAyMC45N0MxNy4wOCAyMC45NyAxNy40NCAyMC45MSAxNy43OSAyMC43NUMxOC42NSAyMC4zNiAxOS4zNyAxOS4zMiAxOS4zMyAxOC4zOEMxOS4yNiAxNi43NSAxNy40MSAxNS43MiAxNi4zIDE0LjVNMTYuOTYgMTguOTNDMTYuOTIgMTguOTUgMTYuODUgMTguOTcgMTYuNzEgMTguOTdDMTYuMjkgMTguOTcgMTUuNjMgMTguNzUgMTUgMTguNTRDMTQuMDggMTguMjMgMTMuMDMgMTcuODcgMTEuODkgMTcuODdDMTAuNzUgMTcuODcgOS43IDE4LjI0IDguNzggMTguNTZDOC4xNSAxOC43NyA3LjUgMTkgNy4xIDE5QzYuOTcgMTkgNi45MiAxOSA2Ljg4IDE4Ljk1QzYuNjYgMTguODQgNi40IDE4LjM3IDYuNDMgMTguMTJDNi41IDE3Ljg5IDcuMjMgMTcuMzEgNy41OSAxN0M4LjAzIDE2LjY4IDguNSAxNi4zMyA4Ljg5IDE1LjkxQzkuNDQgMTUuMzYgOS44OSAxNC43MyAxMC4zMyAxNC4xMkMxMC43OCAxMy41IDExLjUzIDEyLjQ0IDExLjg5IDEyLjQ0QzEyLjI5IDEyLjQ0IDEzLjA4IDEzLjU2IDEzLjU2IDE0LjIyQzEzLjk1IDE0Ljc4IDE0LjM2IDE1LjM1IDE0LjgyIDE1Ljg1QzE1LjIxIDE2LjI3IDE1LjYyIDE2LjY0IDE2IDE3QzE2LjU0IDE3LjQ1IDE3LjMyIDE4LjE0IDE3LjMzIDE4LjQ0QzE3LjMyIDE4LjU4IDE3LjEyIDE4Ljg2IDE2Ljk2IDE4LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBkZkJveCA9IFwiTTEyLDEwLjVIMTNWMTMuNUgxMlYxMC41TTcsMTEuNUg4VjEwLjVIN1YxMS41TTIwLDZWMThBMiwyIDAgMCwxIDE4LDIwSDZBMiwyIDAgMCwxIDQsMThWNkEyLDIgMCAwLDEgNiw0SDE4QTIsMiAwIDAsMSAyMCw2TTkuNSwxMC41QTEuNSwxLjUgMCAwLDAgOCw5SDUuNVYxNUg3VjEzSDhBMS41LDEuNSAwIDAsMCA5LjUsMTEuNVYxMC41TTE0LjUsMTAuNUExLjUsMS41IDAgMCwwIDEzLDlIMTAuNVYxNUgxM0ExLjUsMS41IDAgMCwwIDE0LjUsMTMuNVYxMC41TTE4LjUsOUgxNS41VjE1SDE3VjEzSDE4LjVWMTEuNUgxN1YxMC41SDE4LjVWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZWFjZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTExLDE0LjQxVjE5LjkzQzkuNTgsMTkuNzUgOC4yMywxOS4xOSA3LjEsMTguMzFMMTEsMTQuNDFNMTMsMTQuNDFMMTYuOSwxOC4zMUMxNS43NywxOS4xOSAxNC40MiwxOS43NSAxMywxOS45M1YxNC40MU00LDEyQzQsNy45NyA3LDQuNTcgMTEsNC4wN1YxMS41OUw1LjY5LDE2LjlDNC41OSwxNS41IDQsMTMuNzggNCwxMk0xOC4zMSwxNi45TDEzLDExLjU5VjQuMDdDMTcsNC41NyAyMCw3Ljk3IDIwLDEyQzIwLDEzLjc4IDE5LjQxLDE1LjUgMTguMzEsMTYuOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZWFudXQgPSBcIk0xNiAxMi43N0EyIDIgMCAwIDEgMTUuODYgMTAuMTJBNSA1IDAgMCAwIDEzLjA0IDIuMTJBNS43NCA1Ljc0IDAgMCAwIDEyIDJBNSA1IDAgMCAwIDcgN0E1IDUgMCAwIDAgOC4xMSAxMC4xMkEyIDIgMCAwIDEgOCAxMi43MkE1LjUgNS41IDAgMCAwIDEwLjgxIDIxLjg3QTUuNDIgNS40MiAwIDAgMCAxMiAyMkE1LjUgNS41IDAgMCAwIDE2IDEyLjc3TTEzIDVBMSAxIDAgMSAxIDEyIDZBMSAxIDAgMCAxIDEzIDVNMTEgMThBMSAxIDAgMSAxIDEyIDE3QTEgMSAwIDAgMSAxMSAxOE0xMiAxNUExIDEgMCAxIDEgMTMgMTZBMSAxIDAgMCAxIDEyIDE1TTE0IDE5QTEgMSAwIDEgMSAxNSAxOEExIDEgMCAwIDEgMTQgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVhbnV0T2ZmID0gXCJNMTUuOSAxMC4xMkE1IDUgMCAwIDAgMTMuMDggMi4xMkE1Ljc0IDUuNzQgMCAwIDAgMTIgMkE1IDUgMCAwIDAgNy42OCA0LjVMMTYuMzggMTMuMThBNC4zNSA0LjM1IDAgMCAwIDE2LjA0IDEyLjc3QTIgMiAwIDAgMSAxNS45IDEwLjEyTTEzIDdBMSAxIDAgMSAxIDE0IDZBMSAxIDAgMCAxIDEzIDdNNyA2LjM5TDIuMzkgMS43M0wxLjExIDNMNy44IDkuNjlDNy45IDkuODQgOCAxMCA4LjExIDEwLjEyQTIgMiAwIDAgMSA4IDEyLjcyQTUuNSA1LjUgMCAwIDAgMTAuODEgMjEuODdBNS40MiA1LjQyIDAgMCAwIDEyIDIyQTUuNSA1LjUgMCAwIDAgMTcgMTguODZMMjAuODcgMjIuNzNMMjIuMTQgMjEuNDZNMTEgMThBMSAxIDAgMSAxIDEyIDE3QTEgMSAwIDAgMSAxMSAxOE0xNCAxOUExIDEgMCAxIDEgMTUgMThBMSAxIDAgMCAxIDE0IDE5TTEzIDE2QTEgMSAwIDAgMSAxMiAxNUExIDEgMCAwIDEgMTIuMzUgMTQuMjRMMTMuNzYgMTUuNjVBMSAxIDAgMCAxIDEzIDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlYW51dE9mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxNy42OSAxOS41OEMxNy4zNiAyMC4yMSAxNi45MyAyMC43NyAxNi40MSAyMS4yNUMxNC44NiAyMi43MSAxMi42OSAyMy4zMSAxMC42MSAyMi44NUM3LjEgMjIuMSA0Ljg3IDE4LjY0IDUuNjIgMTUuMTNDNS44NyAxMy45NSA2LjQ1IDEyLjg3IDcuMjggMTJDNy42MiAxMS42NCA3LjYyIDExLjA4IDcuMjggMTAuNzJDNi42MyA5LjkxIDYuMjEgOC45NSA2LjA0IDcuOTNMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0xNS4zIDE5LjU2QzE1LjY5IDE5LjEzIDE2IDE4LjYzIDE2LjE5IDE4LjA4TDEzLjc1IDE1LjY0QzEzLjU3IDE1Ljg3IDEzLjI5IDE2IDEzIDE2QzEyLjQ1IDE2IDEyIDE1LjU1IDEyIDE1QzEyIDE0LjcxIDEyLjEzIDE0LjQzIDEyLjM2IDE0LjI1TDkuNTUgMTEuNDRDOS41MyAxMi4xOCA5LjI0IDEyLjg4IDguNzMgMTMuNDFDNy4wMyAxNS4yMiA3LjEzIDE4LjA3IDguOTQgMTkuNzdMOC45NSAxOS43OEMxMC43NiAyMS40NyAxMy42MSAyMS4zNyAxNS4zIDE5LjU2TTE0IDE3QzEyLjcxIDE3IDEyLjcyIDE5IDE0IDE5QzE1LjI4IDE5IDE1LjI5IDE3IDE0IDE3TTYuOSAzLjdMOC40MyA1LjIzQzguNjggNC43MSA5LjA1IDQuMjUgOS41IDMuODlDMTAuMiAzLjMxIDExLjA5IDMgMTIgM0gxMi44OEMxMy40NyAzLjE0IDE0IDMuNDEgMTQuNSAzLjc5QzE2LjIyIDUuMTcgMTYuNSA3LjY5IDE1LjEyIDkuNDFDMTQuNyA5LjkzIDE0LjQ2IDEwLjU4IDE0LjQ1IDExLjI1TDE4LjMyIDE1LjEyQzE4LjA3IDEzLjk3IDE3LjUgMTIuOTIgMTYuNzIgMTIuMDZDMTYuMzcgMTEuNyAxNi4zMyAxMS4xMyAxNi42MiAxMC43MkMxNi42MiAxMC43MiAxOCA5IDE4IDdTMTUuOTcuOTk3IDEyIC45OTcgNi45IDMuNyA2LjkgMy43TTEyIDE3QzEyIDE1LjcxIDEwIDE1LjcyIDEwIDE3QzEwIDE4LjI4IDEyIDE4LjI5IDEyIDE3TTEzIDVDMTEuNzEgNSAxMS43MiA3IDEzIDdDMTQuMjggNyAxNC4yOSA1IDEzIDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVhbnV0T3V0bGluZSA9IFwiTTEyIDIzQzExLjUzIDIzIDExLjA3IDIyLjk1IDEwLjYxIDIyLjg1QzcuMSAyMi4xIDQuODcgMTguNjQgNS42MiAxNS4xM0M1Ljg3IDEzLjk1IDYuNDUgMTIuODcgNy4yOCAxMkM3LjYyIDExLjY0IDcuNjIgMTEuMDggNy4yOCAxMC43MkM1LjIgOC4xNCA1LjYgNC4zNiA4LjE4IDIuMjhTMTQuNTQuNjA3IDE2LjYyIDMuMTlDMTguMzkgNS4zOCAxOC4zOSA4LjUgMTYuNjIgMTAuNzJDMTYuMzMgMTEuMTMgMTYuMzcgMTEuNyAxNi43MiAxMi4wNkMxOS4xNyAxNC42OCAxOS4wNCAxOC44IDE2LjQxIDIxLjI1QzE1LjIyIDIyLjM3IDEzLjY0IDIzIDEyIDIzTTEyIDNDMTEuMDkgMyAxMC4yIDMuMzEgOS41IDMuODlDOC41NSA0LjY1IDggNS43OSA4IDdDOCA3LjkxIDguMzEgOC43OSA4Ljg4IDkuNUM5Ljg0IDEwLjY0IDkuNzcgMTIuMzMgOC43MyAxMy40MUM3LjAzIDE1LjIyIDcuMTMgMTguMDcgOC45NCAxOS43N1MxMy42IDIxLjM4IDE1LjMgMTkuNTZDMTYuOTIgMTcuODMgMTYuOTIgMTUuMTQgMTUuMyAxMy40MUMxNC4yMyAxMi4zMiAxNC4xNSAxMC42IDE1LjEyIDkuNDFDMTYuNSA3LjY5IDE2LjIyIDUuMTcgMTQuNSAzLjc5QzE0IDMuNDEgMTMuNDcgMy4xNCAxMi44OCAzQzEyLjU5IDMgMTIuMjkgMyAxMiAzTTEyIDZDMTIgNi41NSAxMi40NSA3IDEzIDdTMTQgNi41NSAxNCA2IDEzLjU1IDUgMTMgNSAxMiA1LjQ1IDEyIDZNMTQgMTlDMTQuNTUgMTkgMTUgMTguNTUgMTUgMThTMTQuNTUgMTcgMTQgMTcgMTMgMTcuNDUgMTMgMTggMTMuNDUgMTkgMTQgMTlNMTMgMTZDMTMuNTUgMTYgMTQgMTUuNTUgMTQgMTVTMTMuNTUgMTQgMTMgMTQgMTIgMTQuNDUgMTIgMTUgMTIuNDUgMTYgMTMgMTZNMTEgMThDMTEuNTUgMTggMTIgMTcuNTUgMTIgMTdTMTEuNTUgMTYgMTEgMTYgMTAgMTYuNDUgMTAgMTcgMTAuNDUgMTggMTEgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuID0gXCJNMjAuNzEsNy4wNEMyMC4zNyw3LjM4IDIwLjA0LDcuNzEgMjAuMDMsOC4wNEMyMCw4LjM2IDIwLjM0LDguNjkgMjAuNjYsOUMyMS4xNCw5LjUgMjEuNjEsOS45NSAyMS41OSwxMC40NEMyMS41NywxMC45MyAyMS4wNiwxMS40NCAyMC41NSwxMS45NEwxNi40MiwxNi4wOEwxNSwxNC42NkwxOS4yNSwxMC40MkwxOC4yOSw5LjQ2TDE2Ljg3LDEwLjg3TDEzLjEyLDcuMTJMMTYuOTYsMy4yOUMxNy4zNSwyLjkgMTgsMi45IDE4LjM3LDMuMjlMMjAuNzEsNS42M0MyMS4xLDYgMjEuMSw2LjY1IDIwLjcxLDcuMDRNMywxNy4yNUwxMi41Niw3LjY4TDE2LjMxLDExLjQzTDYuNzUsMjFIM1YxNy4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5Mb2NrID0gXCJNMjEuNyw3QzIxLjQsNy40IDIxLDcuNyAyMSw4QzIxLDguMyAyMS4zLDguNiAyMS42LDlDMjIuMSw5LjUgMjIuNiw5LjkgMjIuNSwxMC40QzIyLjUsMTAuOSAyMiwxMS40IDIxLjUsMTEuOUwxNy40LDE2TDE2LDE0LjdMMjAuMiwxMC41TDE5LjIsOS41TDE3LjgsMTAuOUwxNCw3LjFMMTgsMy4zQzE4LjQsMi45IDE5LDIuOSAxOS40LDMuM0wyMS43LDUuNkMyMi4xLDYgMjIuMSw2LjcgMjEuNyw3TTQsMTcuMkwxMy42LDcuNkwxNy4zLDExLjRMNy44LDIxSDRWMTcuMk04LDVWNC41QzgsMy4xIDYuOSwyIDUuNSwyQzQuMSwyIDMsMy4xIDMsNC41VjVDMi40LDUgMiw1LjQgMiw2VjEwQzIsMTAuNiAyLjQsMTEgMywxMUg4QzguNiwxMSA5LDEwLjYgOSwxMFY2QzksNS40IDguNiw1IDgsNU03LDVINFY0LjVDNCwzLjcgNC43LDMgNS41LDNDNi4zLDMgNywzLjcgNyw0LjVWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5NaW51cyA9IFwiTTIwLjcsN0MyMC40LDcuNCAyMCw3LjcgMjAsOEMyMCw4LjMgMjAuMyw4LjYgMjAuNiw5QzIxLjEsOS41IDIxLjYsOS45IDIxLjUsMTAuNEMyMS41LDEwLjkgMjEsMTEuNCAyMC41LDExLjlMMTYuNCwxNkwxNSwxNC43TDE5LjIsMTAuNUwxOC4yLDkuNUwxNi44LDEwLjlMMTMsNy4xTDE3LDMuM0MxNy40LDIuOSAxOCwyLjkgMTguNCwzLjNMMjAuNyw1LjZDMjEuMSw2IDIxLjEsNi43IDIwLjcsN00zLDE3LjJMMTIuNiw3LjZMMTYuMywxMS40TDYuOCwyMUgzVjE3LjJNMTAsNVY3SDJWNUgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5PZmYgPSBcIk0yLjMsNUwxLDYuM0w3LjUsMTIuOEwzLDE3LjJWMjFINi44TDExLjMsMTYuNUwxNy44LDIzTDE5LjEsMjEuN0wyLjMsNU0xNi45LDEwLjlMMTMuMSw3LjFMMTcsMy4zQzE3LjQsMi45IDE4LDIuOSAxOC40LDMuM0wyMC43LDUuNkMyMS4xLDYgMjEuMSw2LjYgMjAuNyw3QzIwLjQsNy40IDIwLDcuNyAyMCw4QzIwLDguMyAyMC4zLDguNyAyMC42LDlDMjEuMSw5LjUgMjEuNiwxMCAyMS41LDEwLjRDMjEuNSwxMC45IDIxLDExLjQgMjAuNSwxMS45TDE2LjQsMTZMMTUsMTQuN0wxOS4yLDEwLjVMMTguMiw5LjVMMTYuOSwxMC45TTEwLDEwLjJMMTIuNSw3LjdMMTYuMywxMS41TDEzLjgsMTRMMTAsMTAuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5QbHVzID0gXCJNMjAuNyw3QzIwLjQsNy40IDIwLDcuNyAyMCw4QzIwLDguMyAyMC4zLDguNiAyMC42LDlDMjEuMSw5LjUgMjEuNiw5LjkgMjEuNSwxMC40QzIxLjUsMTAuOSAyMSwxMS40IDIwLjUsMTEuOUwxNi40LDE2TDE1LDE0LjdMMTkuMiwxMC41TDE4LjIsOS41TDE2LjgsMTAuOUwxMyw3LjFMMTcsMy4zQzE3LjQsMi45IDE4LDIuOSAxOC40LDMuM0wyMC43LDUuNkMyMS4xLDYgMjEuMSw2LjcgMjAuNyw3TTMsMTcuMkwxMi42LDcuNkwxNi4zLDExLjRMNi44LDIxSDNWMTcuMk03LDJWNUgxMFY3SDdWMTBINVY3SDJWNUg1VjJIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5SZW1vdmUgPSBcIk0yMC43LDdDMjAuNCw3LjQgMjAsNy43IDIwLDhDMjAsOC4zIDIwLjMsOC42IDIwLjYsOUMyMS4xLDkuNSAyMS42LDkuOSAyMS41LDEwLjRDMjEuNSwxMC45IDIxLDExLjQgMjAuNSwxMS45TDE2LjQsMTZMMTUsMTQuN0wxOS4yLDEwLjVMMTguMiw5LjVMMTYuOCwxMC45TDEzLDcuMUwxNywzLjNDMTcuNCwyLjkgMTgsMi45IDE4LjQsMy4zTDIwLjcsNS42QzIxLjEsNiAyMS4xLDYuNyAyMC43LDdNMywxNy4yTDEyLjYsNy42TDE2LjMsMTEuNEw2LjgsMjFIM1YxNy4yTTMuODgsMi40Nkw2LDQuNTlMOC4xMiwyLjQ2TDkuNTQsMy44OEw3LjQxLDZMOS41NCw4LjEyTDguMTIsOS41NEw2LDcuNDFMMy44OCw5LjU0TDIuNDYsOC4xMkw0LjU5LDZMMi40NiwzLjg4TDMuODgsMi40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWwgPSBcIk0yMC43MSw3LjA0QzIxLjEsNi42NSAyMS4xLDYgMjAuNzEsNS42M0wxOC4zNywzLjI5QzE4LDIuOSAxNy4zNSwyLjkgMTYuOTYsMy4yOUwxNS4xMiw1LjEyTDE4Ljg3LDguODdNMywxNy4yNVYyMUg2Ljc1TDE3LjgxLDkuOTNMMTQuMDYsNi4xOEwzLDE3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbEJveCA9IFwiTTE5LDNBMiwyIDAgMCwxIDIxLDVWMTlDMjEsMjAuMTEgMjAuMSwyMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM0gxOU0xNi43LDkuMzVDMTYuOTIsOS4xNCAxNi45Miw4Ljc5IDE2LjcsOC41OEwxNS40Miw3LjNDMTUuMjEsNy4wOCAxNC44Niw3LjA4IDE0LjY1LDcuM0wxMy42NSw4LjNMMTUuNywxMC4zNUwxNi43LDkuMzVNNywxNC45NFYxN0g5LjA2TDE1LjEyLDEwLjk0TDEzLjA2LDguODhMNywxNC45NFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxCb3hNdWx0aXBsZSA9IFwiTTIwLjIyIDJINy43OEM2LjggMiA2IDIuOCA2IDMuNzhWMTYuMjJDNiAxNy4yIDYuOCAxOCA3Ljc4IDE4SDIwLjIyQzIxLjIgMTggMjIgMTcuMjEgMjIgMTYuMjJWMy43OEMyMiAyLjggMjEuMiAyIDIwLjIyIDJNMTEuMDYgMTVIOVYxMi45NEwxNS4wNiA2Ljg4TDE3LjEyIDguOTRMMTEuMDYgMTVNMTguNyA3LjM1TDE3LjcgOC4zNUwxNS42NSA2LjNMMTYuNjUgNS4zQzE2Ljg2IDUuMDggMTcuMjEgNS4wOCAxNy40MiA1LjNMMTguNyA2LjU4QzE4LjkyIDYuNzkgMTguOTIgNy4xNCAxOC43IDcuMzVNNCA2SDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuY2lsQm94TXVsdGlwbGVPdXRsaW5lID0gXCJNNCA2SDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZNMTguNyA3LjM1TDE3LjcgOC4zNUwxNS42NSA2LjNMMTYuNjUgNS4zQzE2Ljg2IDUuMDggMTcuMjEgNS4wOCAxNy40MiA1LjNMMTguNyA2LjU4QzE4LjkyIDYuNzkgMTguOTIgNy4xNCAxOC43IDcuMzVNOSAxMi45NEwxNS4wNiA2Ljg4TDE3LjEyIDguOTRMMTEuMDYgMTVIOVYxMi45NE0yMCA0TDIwIDRMMjAgMTZMOCAxNkw4IDRIMjBNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjEgNi45IDE4IDggMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbEJveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUMyMSwyMC4xMSAyMC4xLDIxIDE5LDIxSDVBMiwyIDAgMCwxIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5TTE2LjcsOS4zNUwxNS43LDEwLjM1TDEzLjY1LDguM0wxNC42NSw3LjNDMTQuODYsNy4wOCAxNS4yMSw3LjA4IDE1LjQyLDcuM0wxNi43LDguNThDMTYuOTIsOC43OSAxNi45Miw5LjE0IDE2LjcsOS4zNU03LDE0Ljk0TDEzLjA2LDguODhMMTUuMTIsMTAuOTRMOS4wNiwxN0g3VjE0Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbENpcmNsZSA9IFwiTTEyLDJDNi40NywyIDIsNi40NyAyLDEyQzIsMTcuNTMgNi40NywyMiAxMiwyMkMxNy41MywyMiAyMiwxNy41MyAyMiwxMkMyMiw2LjQ3IDE3LjUzLDIgMTIsMk0xNS4xLDcuMDdDMTUuMjQsNy4wNyAxNS4zOCw3LjEyIDE1LjUsNy4yM0wxNi43Nyw4LjVDMTcsOC43MiAxNyw5LjA3IDE2Ljc3LDkuMjhMMTUuNzcsMTAuMjhMMTMuNzIsOC4yM0wxNC43Miw3LjIzQzE0LjgyLDcuMTIgMTQuOTYsNy4wNyAxNS4xLDcuMDdNMTMuMTMsOC44MUwxNS4xOSwxMC44N0w5LjEzLDE2LjkzSDcuMDdWMTQuODdMMTMuMTMsOC44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxDaXJjbGVPdXRsaW5lID0gXCJNNywxNC45NEwxMy4wNiw4Ljg4TDE1LjEyLDEwLjk0TDkuMDYsMTdIN1YxNC45NE0xMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwTTE2LjcsOS4zNUwxNS43LDEwLjM1TDEzLjY1LDguM0wxNC42NSw3LjNDMTQuODYsNy4wOCAxNS4yMSw3LjA4IDE1LjQyLDcuM0wxNi43LDguNThDMTYuOTIsOC43OSAxNi45Miw5LjE0IDE2LjcsOS4zNU0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbExvY2sgPSBcIk01LjUsMkEyLjUsMi41IDAgMCwwIDMsNC41VjVBMSwxIDAgMCwwIDIsNlYxMEExLDEgMCAwLDAgMywxMUg4QTEsMSAwIDAsMCA5LDEwVjZBMSwxIDAgMCwwIDgsNVY0LjVBMi41LDIuNSAwIDAsMCA1LjUsMk01LjUsM0ExLjUsMS41IDAgMCwxIDcsNC41VjVINFY0LjVBMS41LDEuNSAwIDAsMSA1LjUsM00xOS42NiwzQzE5LjQsMyAxOS4xNiwzLjA5IDE4Ljk3LDMuMjhMMTcuMTMsNS4xM0wyMC44OCw4Ljg4TDIyLjcyLDcuMDNDMjMuMTEsNi42NCAyMy4xMSw2IDIyLjcyLDUuNjNMMjAuMzgsMy4yOEMyMC4xOCwzLjA5IDE5LjkxLDMgMTkuNjYsM00xNi4wNiw2LjE5TDUsMTcuMjVWMjFIOC43NUwxOS44MSw5Ljk0TDE2LjA2LDYuMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuY2lsTG9ja091dGxpbmUgPSBcIk0xNi4xLDlMMTcsOS45TDcuOSwxOUg3VjE4LjFMMTYuMSw5TTE5LjcsM0MxOS41LDMgMTkuMiwzLjEgMTksMy4zTDE3LjIsNS4xTDIwLjksOC45TDIyLjcsN0MyMy4xLDYuNiAyMy4xLDYgMjIuNyw1LjZMMjAuNCwzLjNDMjAuMiwzLjEgMTkuOSwzIDE5LjcsM00xNi4xLDYuMkw1LDE3LjJWMjFIOC44TDE5LjgsOS45TDE2LjEsNi4yTTgsNVY0LjVDOCwzLjEgNi45LDIgNS41LDJDNC4xLDIgMywzLjEgMyw0LjVWNUMyLjQsNSAyLDUuNCAyLDZWMTBDMiwxMC42IDIuNCwxMSAzLDExSDhDOC42LDExIDksMTAuNiA5LDEwVjZDOSw1LjQgOC42LDUgOCw1TTcsNUg0VjQuNUM0LDMuNyA0LjcsMyA1LjUsM0M2LjMsMyA3LDMuNyA3LDQuNVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbE1pbnVzID0gXCJNMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOCwyLjkgMTcuNCwyLjkgMTcsMy4zTDE1LjIsNS4xTDE5LDguOU0zLDE3LjJWMjFINi44TDE3LjgsOS45TDE0LjEsNi4xTDMsMTcuMk0xMCw1VjdIMlY1SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbE1pbnVzT3V0bGluZSA9IFwiTTE0LjEsOUwxNSw5LjlMNS45LDE5SDVWMTguMUwxNC4xLDlNMTcuNywzQzE3LjUsMyAxNy4yLDMuMSAxNywzLjNMMTUuMiw1LjFMMTguOSw4LjlMMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOC4yLDMuMSAxNy45LDMgMTcuNywzTTE0LjEsNi4yTDMsMTcuMlYyMUg2LjhMMTcuOCw5LjlMMTQuMSw2LjJNMTAsNVY3SDJWNUgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxPZmYgPSBcIk0xOC42NiwyQzE4LjQsMiAxOC4xNiwyLjA5IDE3Ljk3LDIuMjhMMTYuMTMsNC4xM0wxOS44OCw3Ljg4TDIxLjcyLDYuMDNDMjIuMTEsNS42NCAyMi4xMSw1IDIxLjcyLDQuNjNMMTkuMzgsMi4yOEMxOS4xOCwyLjA5IDE4LjkxLDIgMTguNjYsMk0zLjI4LDRMMiw1LjI4TDguNSwxMS43NUw0LDE2LjI1VjIwSDcuNzVMMTIuMjUsMTUuNUwxOC43MiwyMkwyMCwyMC43MkwxMy41LDE0LjI1TDkuNzUsMTAuNUwzLjI4LDRNMTUuMDYsNS4xOUwxMS4wMyw5LjIyTDE0Ljc4LDEyLjk3TDE4LjgxLDguOTRMMTUuMDYsNS4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxPZmZPdXRsaW5lID0gXCJNMTAsMTAuMkwxNCw2LjJMMTcuOCwxMEwxMy44LDE0TDEyLjQsMTIuNkwxNSw5LjlMMTQuMSw5TDExLjUsMTEuNkwxMCwxMC4yTTIwLjcsNS42TDE4LjQsMy4zQzE4LjIsMy4xIDE3LjksMyAxNy43LDNDMTcuNSwzIDE3LjIsMy4xIDE3LDMuM0wxNS4yLDUuMUwxOSw4LjlMMjAuNyw3QzIxLjEsNi43IDIxLjEsNiAyMC43LDUuNk0xOSwyMS43TDE3LjcsMjNMMTEuMiwxNi41TDYuOCwyMUgzVjE3LjJMNy41LDEyLjdMMSw2LjNMMi4zLDVMMTksMjEuN005LjgsMTUuMUw4LjksMTQuMkw1LDE4LjFWMTlINS45TDkuOCwxNS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlbmNpbE91dGxpbmUgPSBcIk0xNC4wNiw5TDE1LDkuOTRMNS45MiwxOUg1VjE4LjA4TDE0LjA2LDlNMTcuNjYsM0MxNy40MSwzIDE3LjE1LDMuMSAxNi45NiwzLjI5TDE1LjEzLDUuMTJMMTguODgsOC44N0wyMC43MSw3LjA0QzIxLjEsNi42NSAyMS4xLDYgMjAuNzEsNS42M0wxOC4zNywzLjI5QzE4LjE3LDMuMDkgMTcuOTIsMyAxNy42NiwzTTE0LjA2LDYuMTlMMywxNy4yNVYyMUg2Ljc1TDE3LjgxLDkuOTRMMTQuMDYsNi4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxQbHVzID0gXCJNMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOCwyLjkgMTcuNCwyLjkgMTcsMy4zTDE1LjIsNS4xTDE5LDguOU0zLDE3LjJWMjFINi44TDE3LjgsOS45TDE0LjEsNi4xTDMsMTcuMk03LDJWNUgxMFY3SDdWMTBINVY3SDJWNUg1VjJIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxQbHVzT3V0bGluZSA9IFwiTTE0LjEsOUwxNSw5LjlMNS45LDE5SDVWMTguMUwxNC4xLDlNMTcuNywzQzE3LjUsMyAxNy4yLDMuMSAxNywzLjNMMTUuMiw1LjFMMTguOSw4LjlMMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOC4yLDMuMSAxNy45LDMgMTcuNywzTTE0LjEsNi4yTDMsMTcuMlYyMUg2LjhMMTcuOCw5LjlMMTQuMSw2LjJNNywyVjVIMTBWN0g3VjEwSDVWN0gyVjVINVYySDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVuY2lsUmVtb3ZlID0gXCJNMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOCwyLjkgMTcuNCwyLjkgMTcsMy4zTDE1LjIsNS4xTDE5LDguOU0zLDE3LjJWMjFINi44TDE3LjgsOS45TDE0LjEsNi4xTDMsMTcuMk0zLjksMi40TDYsNC41TDguMSwyLjRMOS41LDMuOEw3LjQsNS45TDkuNSw4TDguMSw5LjVMNiw3LjRMMy45LDkuNUwyLjUsOC4xTDQuNiw2TDIuNSwzLjhMMy45LDIuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxSZW1vdmVPdXRsaW5lID0gXCJNMTcuNywzQzE3LjUsMyAxNy4yLDMuMSAxNywzLjNMMTUuMiw1LjFMMTguOSw4LjlMMjAuNyw3QzIxLjEsNi42IDIxLjEsNiAyMC43LDUuNkwxOC40LDMuM0MxOC4yLDMuMSAxNy45LDMgMTcuNywzTTE0LjEsNi4yTDMsMTcuMlYyMUg2LjhMMTcuOCw5LjlMMTQuMSw2LjJNNS45LDE5SDVWMTguMUwxNC4xLDlMMTUsOS45TDUuOSwxOU0zLjksMi41TDYsNC42TDguMSwyLjVMOS41LDMuOUw3LjQsNkw5LjUsOC4xTDguMSw5LjVMNiw3LjRMMy45LDkuNUwyLjUsOC4xTDQuNiw2TDIuNSwzLjlMMy45LDIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5jaWxSdWxlciA9IFwiTTMgMTcuMjVWMjFINi43NUwxNy44MSA5LjkzTDE0LjA2IDYuMThMMyAxNy4yNU0yMi42MSAxOC4zNkwxOC4zNiAyMi42MUwxMy4xNiAxNy40MUwxNC45MyAxNS42NEwxNS45MyAxNi42NEwxOC40IDE0LjE2TDE5LjgyIDE1LjU4TDE4LjM2IDE3TDE5LjQyIDE4TDIwLjg0IDE2LjZMMjIuNjEgMTguMzZNNi42MSAxMC44M0wxLjM5IDUuNjRMNS42NCAxLjM5TDcuNCAzLjE2TDQuOTMgNS42NEw2IDYuN0w4LjQ2IDQuMjJMOS44OCA1LjY0TDguNDYgNy4wNUw5LjQ2IDguMDVMNi42MSAxMC44M00yMC43MSA3QzIxLjEgNi42MSAyMS4xIDYgMjAuNzEgNS41OUwxOC4zNyAzLjI5QzE4IDIuOSAxNy4zNSAyLjkgMTYuOTYgMy4yOUwxNS4xMiA1LjEyTDE4Ljg3IDguODdMMjAuNzEgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQZW5ndWluID0gXCJNMTksMTZDMTksMTcuNzIgMTguMzcsMTkuMyAxNy4zNCwyMC41QzE3Ljc1LDIwLjg5IDE4LDIxLjQxIDE4LDIySDZDNiwyMS40MSA2LjI1LDIwLjg5IDYuNjYsMjAuNUM1LjYzLDE5LjMgNSwxNy43MiA1LDE2SDNDMywxNC43NSAzLjU3LDEzLjY0IDQuNDYsMTIuOTFMNC40NywxMi44OUM2LDExLjgxIDcsMTAgNyw4VjdBNSw1IDAgMCwxIDEyLDJBNSw1IDAgMCwxIDE3LDdWOEMxNywxMCAxOCwxMS44MSAxOS41MywxMi44OUwxOS41NCwxMi45MUMyMC40MywxMy42NCAyMSwxNC43NSAyMSwxNkgxOU0xNiwxNkE0LDQgMCAwLDAgMTIsMTJBNCw0IDAgMCwwIDgsMTZBNCw0IDAgMCwwIDEyLDIwQTQsNCAwIDAsMCAxNiwxNk0xMCw5TDEyLDEwLjVMMTQsOUwxMiw3LjVMMTAsOU0xMCw1QTEsMSAwIDAsMCA5LDZBMSwxIDAgMCwwIDEwLDdBMSwxIDAgMCwwIDExLDZBMSwxIDAgMCwwIDEwLDVNMTQsNUExLDEgMCAwLDAgMTMsNkExLDEgMCAwLDAgMTQsN0ExLDEgMCAwLDAgMTUsNkExLDEgMCAwLDAgMTQsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQZW50YWdvbiA9IFwiTTEyLDIuNUwyLDkuOEw1LjgsMjEuNUgxOC4yTDIyLDkuOEwxMiwyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVudGFnb25PdXRsaW5lID0gXCJNMTIsNUwxOS42LDEwLjVMMTYuNywxOS40SDcuM0w0LjQsMTAuNUwxMiw1TTEyLDIuNUwyLDkuOEw1LjgsMjEuNUgxOC4xTDIyLDkuOEwxMiwyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVudGFncmFtID0gXCJNMTYuMTUgMTQuNEwxOC43MSAyMi4yNkwxMiAxNy40TDUuMjggMjIuM0w3Ljg1IDE0LjM3TDEuMTUgOS41SDkuNDRMMTIgMS42MUwxNC41NiA5LjVIMjIuODlMMTYuMTUgMTQuNE0xMy4zIDE2LjQ3TDE1Ljg2IDE4LjMzTDE0Ljg4IDE1LjMyTDEzLjMgMTYuNDdNMTEgOS41SDEzTDEyIDYuNDdMMTEgOS41TTEwLjc0IDE2LjQ3TDkuMTMgMTUuM0w4LjEzIDE4LjM3TDEwLjc0IDE2LjQ3TTE4LjI4IDExSDE1LjA1TDE1LjY3IDEyLjlMMTguMjggMTFNMTAuNTMgMTFMOS42MiAxMy44TDEyIDE1LjU0TDE0LjM5IDEzLjgyTDEzLjQ3IDExSDEwLjUzTTUuNzYgMTFMOC4zNCAxMi44N0w4Ljk1IDExSDUuNzZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVyY2VudCA9IFwiTTE4LjUsMy41TDMuNSwxOC41TDUuNSwyMC41TDIwLjUsNS41TTcsNEEzLDMgMCAwLDAgNCw3QTMsMyAwIDAsMCA3LDEwQTMsMyAwIDAsMCAxMCw3QTMsMyAwIDAsMCA3LDRNMTcsMTRBMywzIDAgMCwwIDE0LDE3QTMsMyAwIDAsMCAxNywyMEEzLDMgMCAwLDAgMjAsMTdBMywzIDAgMCwwIDE3LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlcmNlbnRPdXRsaW5lID0gXCJNMTguNSAzLjVMMjAuNSA1LjVMNS41IDIwLjVMMy41IDE4LjVMMTguNSAzLjVNNyA0QzguNjYgNCAxMCA1LjM0IDEwIDdDMTAgOC42NiA4LjY2IDEwIDcgMTBDNS4zNCAxMCA0IDguNjYgNCA3QzQgNS4zNCA1LjM0IDQgNyA0TTE3IDE0QzE4LjY2IDE0IDIwIDE1LjM0IDIwIDE3QzIwIDE4LjY2IDE4LjY2IDIwIDE3IDIwQzE1LjM0IDIwIDE0IDE4LjY2IDE0IDE3QzE0IDE1LjM0IDE1LjM0IDE0IDE3IDE0TTcgNkM2LjQ1IDYgNiA2LjQ1IDYgN0M2IDcuNTUgNi40NSA4IDcgOEM3LjU1IDggOCA3LjU1IDggN0M4IDYuNDUgNy41NSA2IDcgNk0xNyAxNkMxNi40NSAxNiAxNiAxNi40NSAxNiAxN0MxNiAxNy41NSAxNi40NSAxOCAxNyAxOEMxNy41NSAxOCAxOCAxNy41NSAxOCAxN0MxOCAxNi40NSAxNy41NSAxNiAxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQZXJpb2RpY1RhYmxlID0gXCJNMiw0VjZINFY0SDJNMjAsNFY2SDIyVjRIMjBNMiw3VjlINFY3SDJNNSw3VjlIN1Y3SDVNMTQsN1Y5SDE2VjdIMTRNMTcsN1Y5SDE5VjdIMTdNMjAsN1Y5SDIyVjdIMjBNMiwxMFYxMkg0VjEwSDJNNSwxMFYxMkg3VjEwSDVNOCwxMFYxMkgxMFYxMEg4TTExLDEwVjEySDEzVjEwSDExTTE0LDEwVjEySDE2VjEwSDE0TTE3LDEwVjEySDE5VjEwSDE3TTIwLDEwVjEySDIyVjEwSDIwTTIsMTNWMTVINFYxM0gyTTUsMTNWMTVIN1YxM0g1TTgsMTNWMTVIMTBWMTNIOE0xMSwxM1YxNUgxM1YxM0gxMU0xNCwxM1YxNUgxNlYxM0gxNE0xNywxM1YxNUgxOVYxM0gxN00yMCwxM1YxNUgyMlYxM0gyME01LDE3VjE5SDdWMTdINU04LDE3VjE5SDEwVjE3SDhNMTEsMTdWMTlIMTNWMTdIMTFNMTQsMTdWMTlIMTZWMTdIMTRNMTcsMTdWMTlIMTlWMTdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGVyc3BlY3RpdmVMZXNzID0gXCJNMTYuNTYsMTJMMTkuMjMsMjBINC43OEw3LjQ0LDEySDE2LjU2TTcsMUwzLDVMNyw5VjZIMTFWNEg3VjFNMTcsMVY0SDEzVjZIMTdWOUwyMSw1TDE3LDFNMTgsMTBINkwyLDIySDIyTDE4LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBlcnNwZWN0aXZlTW9yZSA9IFwiTTE2LjU2LDEyTDE5LjIzLDIwSDQuNzhMNy40NCwxMkgxNi41Nk0xNywxTDEzLDVMMTcsOVY2SDIxVjRIMTdWMU03LDFWNEgzVjZIN1Y5TDExLDVMNywxTTE4LDEwSDZMMiwyMkgyMkwxOCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaGFybWFjeSA9IFwiTTE2LDE0SDEzVjE3SDExVjE0SDhWMTJIMTFWOUgxM1YxMkgxNk0yMSw1SDE4LjM1TDE5LjUsMS44NUwxNy4xNSwxTDE1LjY5LDVIM1Y3TDUsMTNMMywxOVYyMUgyMVYxOUwxOSwxM0wyMSw3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmUgPSBcIk02LjYyLDEwLjc5QzguMDYsMTMuNjIgMTAuMzgsMTUuOTQgMTMuMjEsMTcuMzhMMTUuNDEsMTUuMThDMTUuNjksMTQuOSAxNi4wOCwxNC44MiAxNi40MywxNC45M0MxNy41NSwxNS4zIDE4Ljc1LDE1LjUgMjAsMTUuNUExLDEgMCAwLDEgMjEsMTYuNVYyMEExLDEgMCAwLDEgMjAsMjFBMTcsMTcgMCAwLDEgMyw0QTEsMSAwIDAsMSA0LDNINy41QTEsMSAwIDAsMSA4LjUsNEM4LjUsNS4yNSA4LjcsNi40NSA5LjA3LDcuNTdDOS4xOCw3LjkyIDkuMSw4LjMxIDguODIsOC41OUw2LjYyLDEwLjc5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQWxlcnQgPSBcIk02LjYyLDEwLjc5QzguMDYsMTMuNjIgMTAuMzgsMTUuOTQgMTMuMjEsMTcuMzhMMTUuNDEsMTUuMThDMTUuNjksMTQuOSAxNi4wOCwxNC44MiAxNi40MywxNC45M0MxNy41NSwxNS4zIDE4Ljc1LDE1LjUgMjAsMTUuNUExLDEgMCAwLDEgMjEsMTYuNVYyMEExLDEgMCAwLDEgMjAsMjFBMTcsMTcgMCAwLDEgMyw0QzMsMy40NCAzLjQ1LDMgNCwzSDcuNUExLDEgMCAwLDEgOC41LDRDOC41LDUuMjQgOC43LDYuNDUgOS4wNyw3LjU3QzkuMTgsNy45MiA5LjEsOC4zMSA4LjgyLDguNThMNi42MiwxMC43OU0xNywxMlYxMEgxOVYxMkgxN00xNyw4VjJIMTlWOEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUFsZXJ0T3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xNyAxMlYxMEgxOVYxMkgxN00xNyA4VjJIMTlWOEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUJsdWV0b290aCA9IFwiTTIwLDE1LjVDMTguNzUsMTUuNSAxNy41NSwxNS4zIDE2LjQzLDE0LjkzQzE2LjA4LDE0LjgyIDE1LjY5LDE0LjkgMTUuNDEsMTUuMThMMTMuMjEsMTcuMzhDMTAuMzgsMTUuOTQgOC4wNiwxMy42MiA2LjYyLDEwLjc5TDguODIsOC41OUM5LjEsOC4zMSA5LjE4LDcuOTIgOS4wNyw3LjU3QzguNyw2LjQ1IDguNSw1LjI1IDguNSw0QTEsMSAwIDAsMCA3LjUsM0g0QTEsMSAwIDAsMCAzLDRBMTcsMTcgMCAwLDAgMjAsMjFBMSwxIDAgMCwwIDIxLDIwVjE2LjVBMSwxIDAgMCwwIDIwLDE1LjVNMTgsNy4yMUwxOC45NCw4LjE0TDE4LDkuMDhNMTgsMi45MUwxOC45NCwzLjg1TDE4LDQuNzlNMTQuNzEsOS41TDE3LDcuMjFWMTFIMTcuNUwyMC4zNSw4LjE0TDE4LjIxLDZMMjAuMzUsMy44NUwxNy41LDFIMTdWNC43OUwxNC43MSwyLjVMMTQsMy4yMUwxNi43OSw2TDE0LDguNzlMMTQuNzEsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQmx1ZXRvb3RoT3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xOCA3LjIxTDE4Ljk0IDguMTRMMTggOS4wOE0xOCAyLjkxTDE4Ljk0IDMuODVMMTggNC43OU0xNC43MSA5LjVMMTcgNy4yMVYxMUgxNy41TDIwLjM1IDguMTRMMTguMjEgNkwyMC4zNSAzLjg1TDE3LjUgMUgxN1Y0Ljc5TDE0LjcxIDIuNUwxNCAzLjIxTDE2Ljc5IDZMMTQgOC43OUwxNC43MSA5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVDYW5jZWwgPSBcIk02LjYyIDEwLjc5QzguMDYgMTMuNjIgMTAuMzggMTUuOTQgMTMuMjEgMTcuMzhMMTUuNDEgMTUuMThDMTUuNjkgMTQuOSAxNi4wOCAxNC44MiAxNi40MyAxNC45M0MxNy41NSAxNS4zIDE4Ljc1IDE1LjUgMjAgMTUuNUMyMC41NSAxNS41IDIxIDE1Ljk1IDIxIDE2LjVWMjBDMjEgMjAuNTUgMjAuNTUgMjEgMjAgMjFDMTAuNjEgMjEgMyAxMy4zOSAzIDRDMyAzLjQ1IDMuNDUgMyA0IDNINy41QzguMDUgMyA4LjUgMy40NSA4LjUgNEM4LjUgNS4yNSA4LjcgNi40NSA5LjA3IDcuNTdDOS4xOCA3LjkyIDkuMSA4LjMxIDguODIgOC41OUw2LjYyIDEwLjc5TTE2LjUgMkMxNCAyIDEyIDQgMTIgNi41UzE0IDExIDE2LjUgMTEgMjEgOSAyMSA2LjUgMTkgMiAxNi41IDJNMTYuNSA5LjVDMTQuODQgOS41IDEzLjUgOC4xNiAxMy41IDYuNUMxMy41IDUuOTQgMTMuNjUgNS40MiAxMy45MiA1TDE4IDkuMDhDMTcuNTggOS4zNSAxNy4wNiA5LjUgMTYuNSA5LjVNMTkuMDggOEwxNSAzLjkyQzE1LjQyIDMuNjUgMTUuOTQgMy41IDE2LjUgMy41QzE4LjE2IDMuNSAxOS41IDQuODQgMTkuNSA2LjVDMTkuNSA3LjA2IDE5LjM1IDcuNTggMTkuMDggOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUNhbmNlbE91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTYuNSAyQzE0IDIgMTIgNCAxMiA2LjVTMTQgMTEgMTYuNSAxMSAyMSA5IDIxIDYuNSAxOSAyIDE2LjUgMk0xNi41IDkuNUMxNC44NCA5LjUgMTMuNSA4LjE2IDEzLjUgNi41QzEzLjUgNS45NCAxMy42NSA1LjQyIDEzLjkyIDVMMTggOS4wOEMxNy41OCA5LjM1IDE3LjA2IDkuNSAxNi41IDkuNU0xOS4wOCA4TDE1IDMuOTJDMTUuNDIgMy42NSAxNS45NCAzLjUgMTYuNSAzLjVDMTguMTYgMy41IDE5LjUgNC44NCAxOS41IDYuNUMxOS41IDcuMDYgMTkuMzUgNy41OCAxOS4wOCA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQ2hlY2sgPSBcIk02LjYyIDEwLjc5QTE1LjEgMTUuMSAwIDAgMCAxMy4yMSAxNy4zOEwxNS40MSAxNS4xOEExIDEgMCAwIDEgMTYuNDEgMTQuOTNBMTEuMzYgMTEuMzYgMCAwIDAgMjAgMTUuNUExIDEgMCAwIDEgMjEgMTYuNVYyMEExIDEgMCAwIDEgMjAgMjFBMTcgMTcgMCAwIDEgMyA0QTEgMSAwIDAgMSA0IDNINy41QTEgMSAwIDAgMSA4LjUgNEExMS4zNiAxMS4zNiAwIDAgMCA5LjA3IDcuNTdBMSAxIDAgMCAxIDguODIgOC41N00yMS43MSA0LjcxTDIwLjI5IDMuMjlMMTUgOC41OUwxMi43MSA2LjI5TDExLjI5IDcuNzFMMTUgMTEuNDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVDaGVja091dGxpbmUgPSBcIk0yMCAxNS41QTExLjM2IDExLjM2IDAgMCAxIDE2LjQzIDE0LjkzQTEgMSAwIDAgMCAxNS40MyAxNS4xOEwxMy4yMyAxNy4zOEExNS4xIDE1LjEgMCAwIDEgNi42NCAxMC43OUw4Ljg0IDguNTlBMSAxIDAgMCAwIDkuMDkgNy41OUExMS4zNiAxMS4zNiAwIDAgMSA4LjUgNEExIDEgMCAwIDAgNy41IDNINEExIDEgMCAwIDAgMyA0QTE3IDE3IDAgMCAwIDIwIDIxQTEgMSAwIDAgMCAyMSAyMFYxNi41QTEgMSAwIDAgMCAyMCAxNS41TTUgNUg2LjU0QTEyLjU0IDEyLjU0IDAgMCAwIDcgNy41OUw1Ljc5IDguOEExNSAxNSAwIDAgMSA1IDVNMTkgMTlBMTUgMTUgMCAwIDEgMTUuMiAxOC4yNEwxNi40MSAxN0ExMi4zMSAxMi4zMSAwIDAgMCAxOSAxNy40NU0xNSAxMS40NEwxMS4yOSA3Ljc0TDEyLjcxIDYuMzJMMTUgOC41OUwyMC4yOSAzLjI5TDIxLjcxIDQuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVDbGFzc2ljID0gXCJNMTIsM0M3LjQ2LDMgMy4zNCw0Ljc4IDAuMjksNy42N0MwLjExLDcuODUgMCw4LjEgMCw4LjM4QzAsOC42NiAwLjExLDguOTEgMC4yOSw5LjA5TDIuNzcsMTEuNTdDMi45NSwxMS43NSAzLjIsMTEuODYgMy41LDExLjg2QzMuNzUsMTEuODYgNCwxMS43NSA0LjE4LDExLjU4QzQuOTcsMTAuODQgNS44NywxMC4yMiA2Ljg0LDkuNzNDNy4xNyw5LjU3IDcuNCw5LjIzIDcuNCw4LjgzVjUuNzNDOC44NSw1LjI1IDEwLjM5LDUgMTIsNUMxMy41OSw1IDE1LjE0LDUuMjUgMTYuNTksNS43MlY4LjgyQzE2LjU5LDkuMjEgMTYuODIsOS41NiAxNy4xNSw5LjcyQzE4LjEzLDEwLjIxIDE5LDEwLjg0IDE5LjgyLDExLjU3QzIwLDExLjc1IDIwLjI1LDExLjg1IDIwLjUsMTEuODVDMjAuOCwxMS44NSAyMS4wNSwxMS43NCAyMS4yMywxMS41NkwyMy43MSw5LjA4QzIzLjg5LDguOSAyNCw4LjY1IDI0LDguMzdDMjQsOC4wOSAyMy44OCw3Ljg1IDIzLjcsNy42N0MyMC42NSw0Ljc4IDE2LjUzLDMgMTIsM005LDdWMTBDOSwxMCAzLDE1IDMsMThWMjJIMjFWMThDMjEsMTUgMTUsMTAgMTUsMTBWN0gxM1Y5SDExVjdIOU0xMiwxMkE0LDQgMCAwLDEgMTYsMTZBNCw0IDAgMCwxIDEyLDIwQTQsNCAwIDAsMSA4LDE2QTQsNCAwIDAsMSAxMiwxMk0xMiwxMy41QTIuNSwyLjUgMCAwLDAgOS41LDE2QTIuNSwyLjUgMCAwLDAgMTIsMTguNUEyLjUsMi41IDAgMCwwIDE0LjUsMTZBMi41LDIuNSAwIDAsMCAxMiwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lQ2xhc3NpY09mZiA9IFwiTTEyIDNDMTYuNTMgMyAyMC42NSA0Ljc4IDIzLjcgNy42N0MyMy44OCA3Ljg1IDI0IDguMDkgMjQgOC4zN0MyNCA4LjY1IDIzLjg5IDguOSAyMy43MSA5LjA4TDIxLjIzIDExLjU2QzIxLjA1IDExLjc0IDIwLjggMTEuODUgMjAuNSAxMS44NUMyMC4yNSAxMS44NSAyMCAxMS43NSAxOS44MiAxMS41N0MxOSAxMC44NCAxOC4xMyAxMC4yMSAxNy4xNSA5LjcyQzE2LjgyIDkuNTYgMTYuNTkgOS4yMSAxNi41OSA4LjgyVjUuNzJDMTUuMTQgNS4yNSAxMy41OSA1IDEyIDVDMTAuNDQgNSA4LjkzIDUuMjQgNy41IDUuNjlMNS45NCA0LjExQzcuODIgMy40IDkuODYgMyAxMiAzTTkgN0gxMVY5SDEzVjdIMTVWMTBDMTUgMTAgMjEgMTUgMjEgMThWMTkuMThMOSA3LjE4VjdNMSA0LjI3TDIuMjggM0wyMS41IDIyLjIyTDIwLjIzIDIzLjVMMTguNzMgMjJIM1YxOEMzIDE1Ljg2IDYuMDUgMTIuNzEgNy44IDExLjA3TDYuNTkgOS44NkM1LjcxIDEwLjMzIDQuOSAxMC45IDQuMTggMTEuNThDNCAxMS43NSAzLjc1IDExLjg2IDMuNSAxMS44NkMzLjIgMTEuODYgMi45NSAxMS43NSAyLjc3IDExLjU3TC4yOSA5LjA5Qy4xMSA4LjkxIDAgOC42NiAwIDguMzhDMCA4LjEgLjExIDcuODUgLjI5IDcuNjdDLjk5NiA3IDIuNTggNS44NSAyLjU4IDUuODVMMSA0LjI3TTggMTZDOCAxOC4yMSA5Ljc5IDIwIDEyIDIwQzEzLjI5IDIwIDE0LjQ0IDE5LjM5IDE1LjE3IDE4LjQ0TDE0LjEgMTcuMzZDMTMuNjUgMTguMDUgMTIuODggMTguNSAxMiAxOC41QzEwLjYyIDE4LjUgOS41IDE3LjM4IDkuNSAxNkM5LjUgMTUuMTIgOS45NSAxNC4zNSAxMC42NCAxMy45MUw5LjU2IDEyLjgzQzguNjEgMTMuNTYgOCAxNC43MSA4IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lRGlhbCA9IFwiTTYuNiAxMC44QzggMTMuNiAxMC40IDE1LjkgMTMuMiAxNy40TDE1LjQgMTUuMkMxNS43IDE0LjkgMTYuMSAxNC44IDE2LjQgMTVDMTcuNSAxNS40IDE4LjcgMTUuNiAyMCAxNS42QzIwLjYgMTUuNiAyMSAxNiAyMSAxNi42VjIwQzIxIDIwLjYgMjAuNiAyMSAyMCAyMUMxMC42IDIxIDMgMTMuNCAzIDRDMyAzLjQgMy41IDMgNCAzSDcuNUM4LjEgMyA4LjUgMy40IDguNSA0QzguNSA1LjIgOC43IDYuNCA5LjEgNy42QzkuMiA3LjkgOS4xIDguMyA4LjkgOC42TDYuNiAxMC44TTE0IDNDMTMuNCAzIDEzIDMuNCAxMyA0UzEzLjQgNSAxNCA1IDE1IDQuNiAxNSA0IDE0LjYgMyAxNCAzTTE3IDNDMTYuNCAzIDE2IDMuNCAxNiA0UzE2LjQgNSAxNyA1IDE4IDQuNiAxOCA0IDE3LjYgMyAxNyAzTTIwIDNDMTkuNCAzIDE5IDMuNCAxOSA0UzE5LjQgNSAyMCA1IDIxIDQuNiAyMSA0IDIwLjYgMyAyMCAzTTE0IDZDMTMuNCA2IDEzIDYuNCAxMyA3UzEzLjQgOCAxNCA4IDE1IDcuNiAxNSA3IDE0LjYgNiAxNCA2TTE3IDZDMTYuNCA2IDE2IDYuNCAxNiA3UzE2LjQgOCAxNyA4IDE4IDcuNiAxOCA3IDE3LjYgNiAxNyA2TTIwIDZDMTkuNCA2IDE5IDYuNCAxOSA3UzE5LjQgOCAyMCA4IDIxIDcuNiAyMSA3IDIwLjYgNiAyMCA2TTE0IDlDMTMuNCA5IDEzIDkuNCAxMyAxMFMxMy40IDExIDE0IDExIDE1IDEwLjYgMTUgMTAgMTQuNiA5IDE0IDlNMTcgOUMxNi40IDkgMTYgOS40IDE2IDEwUzE2LjQgMTEgMTcgMTEgMTggMTAuNiAxOCAxMCAxNy42IDkgMTcgOU0yMCA5QzE5LjQgOSAxOSA5LjQgMTkgMTBTMTkuNCAxMSAyMCAxMSAyMSAxMC42IDIxIDEwIDIwLjYgOSAyMCA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lRGlhbE91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTUgNEMxNSA0LjYgMTQuNiA1IDE0IDVTMTMgNC42IDEzIDQgMTMuNCAzIDE0IDMgMTUgMy40IDE1IDRNMTggNEMxOCA0LjYgMTcuNiA1IDE3IDVTMTYgNC42IDE2IDQgMTYuNCAzIDE3IDMgMTggMy40IDE4IDRNMjEgNEMyMSA0LjYgMjAuNiA1IDIwIDVTMTkgNC42IDE5IDQgMTkuNCAzIDIwIDMgMjEgMy40IDIxIDRNMTUgN0MxNSA3LjYgMTQuNiA4IDE0IDhTMTMgNy42IDEzIDcgMTMuNCA2IDE0IDYgMTUgNi40IDE1IDdNMTggN0MxOCA3LjYgMTcuNiA4IDE3IDhTMTYgNy42IDE2IDcgMTYuNCA2IDE3IDYgMTggNi40IDE4IDdNMjEgN0MyMSA3LjYgMjAuNiA4IDIwIDhTMTkgNy42IDE5IDcgMTkuNCA2IDIwIDYgMjEgNi40IDIxIDdNMTUgMTBDMTUgMTAuNiAxNC42IDExIDE0IDExUzEzIDEwLjYgMTMgMTAgMTMuNCA5IDE0IDkgMTUgOS40IDE1IDEwTTE4IDEwQzE4IDEwLjYgMTcuNiAxMSAxNyAxMVMxNiAxMC42IDE2IDEwIDE2LjQgOSAxNyA5IDE4IDkuNCAxOCAxME0yMSAxMEMyMSAxMC42IDIwLjYgMTEgMjAgMTFTMTkgMTAuNiAxOSAxMCAxOS40IDkgMjAgOSAyMSA5LjQgMjEgMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVGb3J3YXJkID0gXCJNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNU0xOCwxMUwyMyw2TDE4LDFWNEgxNFY4SDE4VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lRm9yd2FyZE91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTggMTFMMjMgNkwxOCAxVjRIMTRWOEgxOFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUhhbmd1cCA9IFwiTTEyLDlDMTAuNCw5IDguODUsOS4yNSA3LjQsOS43MlYxMi44MkM3LjQsMTMuMjIgNy4xNywxMy41NiA2Ljg0LDEzLjcyQzUuODYsMTQuMjEgNC45NywxNC44NCA0LjE3LDE1LjU3QzQsMTUuNzUgMy43NSwxNS44NiAzLjUsMTUuODZDMy4yLDE1Ljg2IDIuOTUsMTUuNzQgMi43NywxNS41NkwwLjI5LDEzLjA4QzAuMTEsMTIuOSAwLDEyLjY1IDAsMTIuMzhDMCwxMi4xIDAuMTEsMTEuODUgMC4yOSwxMS42N0MzLjM0LDguNzcgNy40Niw3IDEyLDdDMTYuNTQsNyAyMC42Niw4Ljc3IDIzLjcxLDExLjY3QzIzLjg5LDExLjg1IDI0LDEyLjEgMjQsMTIuMzhDMjQsMTIuNjUgMjMuODksMTIuOSAyMy43MSwxMy4wOEwyMS4yMywxNS41NkMyMS4wNSwxNS43NCAyMC44LDE1Ljg2IDIwLjUsMTUuODZDMjAuMjUsMTUuODYgMjAsMTUuNzUgMTkuODIsMTUuNTdDMTkuMDMsMTQuODQgMTguMTQsMTQuMjEgMTcuMTYsMTMuNzJDMTYuODMsMTMuNTYgMTYuNiwxMy4yMiAxNi42LDEyLjgyVjkuNzJDMTUuMTUsOS4yNSAxMy42LDkgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUhhbmd1cE91dGxpbmUgPSBcIk0yMy43MSAxMS42N0ExNyAxNyAwIDAgMCAuMjkgMTEuNjdBMSAxIDAgMCAwIDAgMTIuMzhBMSAxIDAgMCAwIC4yOSAxMy4wOEwyLjc3IDE1LjU2QTEgMSAwIDAgMCAzLjUgMTUuODVBMSAxIDAgMCAwIDQuMTggMTUuNTdBMTEuNSAxMS41IDAgMCAxIDYuODQgMTMuNzJBMSAxIDAgMCAwIDcuNCAxMi44MlY5LjcyQTE0LjkxIDE0LjkxIDAgMCAxIDEyIDlBMTQuNSAxNC41IDAgMCAxIDE2LjU5IDkuNzNWMTIuODNBMSAxIDAgMCAwIDE3LjE1IDEzLjczQTExLjI3IDExLjI3IDAgMCAxIDE5LjgyIDE1LjU4QTEgMSAwIDAgMCAyMC41IDE1Ljg2QTEgMSAwIDAgMCAyMS4yMyAxNS41N0wyMy43MSAxMy4wOUExIDEgMCAwIDAgMjMuNzEgMTEuNjdNNS40IDEyLjIyQTEzLjY4IDEzLjY4IDAgMCAwIDMuNTMgMTMuNUwyLjQ2IDEyLjQyQTE1LjU0IDE1LjU0IDAgMCAxIDUuNCAxMC41TTIwLjUgMTMuNUExMy43NSAxMy43NSAwIDAgMCAxOC42IDEyLjIzVjEwLjUzQTE0LjI2IDE0LjI2IDAgMCAxIDIxLjU1IDEyLjQzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lSW5UYWxrID0gXCJNMTUsMTJIMTdBNSw1IDAgMCwwIDEyLDdWOUEzLDMgMCAwLDEgMTUsMTJNMTksMTJIMjFDMjEsNyAxNi45NywzIDEyLDNWNUMxNS44Niw1IDE5LDguMTMgMTksMTJNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUluVGFsa091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTUgMTJIMTdBNSA1IDAgMCAwIDEyIDdWOUEzIDMgMCAwIDEgMTUgMTJNMTkgMTJIMjFDMjEgNyAxNi45NyAzIDEyIDNWNUMxNS44NiA1IDE5IDguMTMgMTkgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVJbmNvbWluZyA9IFwiTTQsM0ExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc1LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE3TDEzLjIxLDE3LjM3QzEwLjM4LDE1LjkzIDguMDYsMTMuNjIgNi42MiwxMC43OEw4LjgyLDguNTdDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNSA4LjUsNEExLDEgMCAwLDAgNy41LDNINE0xOSwxMVY5LjVIMTUuNUwyMSw0TDIwLDNMMTQuNSw4LjVWNUgxM1YxMUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUluY29taW5nT3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xOSAxMVY5LjVIMTUuNUwyMSA0TDIwIDNMMTQuNSA4LjVWNUgxM1YxMUgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUxvY2sgPSBcIk0xOS4yLDRIMTUuOFYzLjVDMTUuOCwyLjU2IDE2LjU2LDEuOCAxNy41LDEuOEMxOC40NCwxLjggMTkuMiwyLjU2IDE5LjIsMy41TTIwLDRWMy41QTIuNSwyLjUgMCAwLDAgMTcuNSwxQTIuNSwyLjUgMCAwLDAgMTUsMy41VjRBMSwxIDAgMCwwIDE0LDVWOUExLDEgMCAwLDAgMTUsMTBIMjBBMSwxIDAgMCwwIDIxLDlWNUExLDEgMCAwLDAgMjAsNE0yMCwxNS41QzE4Ljc1LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE4TDEzLjIxLDE3LjM4QzEwLjM4LDE1Ljk0IDguMDYsMTMuNjIgNi42MiwxMC43OUw4LjgyLDguNTlDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNSA4LjUsNEExLDEgMCAwLDAgNy41LDNINEExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lTG9ja091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTkuMiA0SDE1LjhWMy41QzE1LjggMi41NiAxNi41NiAxLjggMTcuNSAxLjhDMTguNDQgMS44IDE5LjIgMi41NiAxOS4yIDMuNU0yMCA0VjMuNUEyLjUgMi41IDAgMCAwIDE3LjUgMUEyLjUgMi41IDAgMCAwIDE1IDMuNVY0QTEgMSAwIDAgMCAxNCA1VjlBMSAxIDAgMCAwIDE1IDEwSDIwQTEgMSAwIDAgMCAyMSA5VjVBMSAxIDAgMCAwIDIwIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVMb2cgPSBcIk0yMCwxNS41QTEsMSAwIDAsMSAyMSwxNi41VjIwQTEsMSAwIDAsMSAyMCwyMUExNywxNyAwIDAsMSAzLDRBMSwxIDAgMCwxIDQsM0g3LjVBMSwxIDAgMCwxIDguNSw0QzguNSw1LjI0IDguNyw2LjQ1IDkuMDcsNy41N0M5LjE4LDcuOTIgOS4xLDguMzEgOC44Miw4LjU4TDYuNjIsMTAuNzlDOC4wNiwxMy42MiAxMC4zOCwxNS45NCAxMy4yMSwxNy4zOEwxNS40MSwxNS4xOEMxNS42OSwxNC45IDE2LjA4LDE0LjgyIDE2LjQzLDE0LjkzQzE3LjU1LDE1LjMgMTguNzUsMTUuNSAyMCwxNS41TTEyLDNIMTRWNUgxMk0xNSwzSDIxVjVIMTVNMTIsNkgxNFY4SDEyTTE1LDZIMjFWOEgxNU0xMiw5SDE0VjExSDEyTTE1LDlIMjFWMTFIMTVcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZUxvZ091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTIgM0gxNFY1SDEyTTE1IDNIMjFWNUgxNU0xMiA2SDE0VjhIMTJNMTUgNkgyMVY4SDE1TTEyIDlIMTRWMTFIMTJNMTUgOUgyMVYxMUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU1lc3NhZ2UgPSBcIk0yMCAxNS41QzE4Ljc1IDE1LjUgMTcuNTUgMTUuMyAxNi40MyAxNC45M0MxNi4wOCAxNC44MiAxNS42OSAxNC45IDE1LjQxIDE1LjE3TDEzLjIxIDE3LjM3QzEwLjM4IDE1LjkzIDguMDYgMTMuNjIgNi42MiAxMC43OUw4LjgyIDguNThDOS4xIDguMzEgOS4xOCA3LjkyIDkuMDcgNy41N0M4LjcgNi40NSA4LjUgNS4yNSA4LjUgNEM4LjUgMy40NSA4LjA1IDMgNy41IDNINEMzLjQ1IDMgMyAzLjQ1IDMgNEMzIDEzLjM5IDEwLjYxIDIxIDIwIDIxQzIwLjU1IDIxIDIxIDIwLjU1IDIxIDIwVjE2LjVDMjEgMTUuOTUgMjAuNTUgMTUuNSAyMCAxNS41TTEyIDNWMTNMMTUgMTBIMjFWM0gxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU1lc3NhZ2VPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC43NSAxNS41IDE3LjU1IDE1LjMgMTYuNDMgMTQuOTNDMTYuMzMgMTQuOSAxNi4yMiAxNC44OCAxNi4xMiAxNC44OEMxNS44NiAxNC44OCAxNS42MSAxNSAxNS40MSAxNS4xN0wxMy4yMSAxNy4zN0MxMC4zOCAxNS45MyA4LjA2IDEzLjYyIDYuNjIgMTAuNzlMOC44MiA4LjU4QzkuMSA4LjMxIDkuMTggNy45MiA5LjA3IDcuNTdDOC43IDYuNDUgOC41IDUuMjUgOC41IDRDOC41IDMuNDUgOC4wNSAzIDcuNSAzSDRDMy40NSAzIDMgMy40NSAzIDRDMyAxMy4zOSAxMC42MSAyMSAyMCAyMUMyMC41NSAyMSAyMSAyMC41NSAyMSAyMFYxNi41QzIxIDE1Ljk1IDIwLjU1IDE1LjUgMjAgMTUuNU01LjAzIDVINi41M0M2LjYgNS44OCA2Ljc1IDYuNzUgNyA3LjU5TDUuNzkgOC44QzUuMzggNy41OSA1LjEyIDYuMzIgNS4wMyA1TTE5IDE4Ljk3QzE3LjY4IDE4Ljg4IDE2LjQgMTguNjIgMTUuMiAxOC4yMUwxNi40IDE3QzE3LjI1IDE3LjI1IDE4LjEyIDE3LjQgMTkgMTcuNDZWMTguOTdNMTIgM1YxM0wxNSAxMEgyMVYzSDEyTTE5IDhIMTRWNUgxOVY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lTWludXMgPSBcIk00LDNBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNUMxOC43NiwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA3LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU4QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjQgOC41LDRBMSwxIDAgMCwwIDcuNSwzTTEzLDZWOEgyMVY2XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVNaW51c091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTMgNlY4SDIxVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVNaXNzZWQgPSBcIk0yMy43MSwxNi42N0MyMC42NiwxMy43NyAxNi41NCwxMiAxMiwxMkM3LjQ2LDEyIDMuMzQsMTMuNzcgMC4yOSwxNi42N0MwLjExLDE2Ljg1IDAsMTcuMSAwLDE3LjM4QzAsMTcuNjUgMC4xMSwxNy45IDAuMjksMTguMDhMMi43NywyMC41NkMyLjk1LDIwLjc0IDMuMiwyMC44NiAzLjUsMjAuODZDMy43NSwyMC44NiA0LDIwLjc1IDQuMTgsMjAuNTdDNC45NywxOS44MyA1Ljg2LDE5LjIxIDYuODQsMTguNzJDNy4xNywxOC41NiA3LjQsMTguMjIgNy40LDE3LjgyVjE0LjcyQzguODUsMTQuMjUgMTAuMzksMTQgMTIsMTRDMTMuNiwxNCAxNS4xNSwxNC4yNSAxNi42LDE0LjcyVjE3LjgyQzE2LjYsMTguMjIgMTYuODMsMTguNTYgMTcuMTYsMTguNzJDMTguMTQsMTkuMjEgMTkuMDMsMTkuODMgMTkuODIsMjAuNTdDMjAsMjAuNzUgMjAuMjUsMjAuODYgMjAuNSwyMC44NkMyMC44LDIwLjg2IDIxLjA1LDIwLjc0IDIxLjIzLDIwLjU2TDIzLjcxLDE4LjA4QzIzLjg5LDE3LjkgMjQsMTcuNjUgMjQsMTcuMzhDMjQsMTcuMSAyMy44OSwxNi44NSAyMy43MSwxNi42N002LjUsNS41TDEyLDExTDE5LDRMMTgsM0wxMiw5TDcuNSw0LjVIMTFWM0g1VjlINi41VjUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU1pc3NlZE91dGxpbmUgPSBcIk0xOC42IDE1LjV2MS44Yy43LjQgMS4zLjggMS45IDEuM2wxLjEtMS4xYy0uOS0uOS0xLjktMS41LTMtMm0tMTMuMiAwYy0xIC41LTIgMS4xLTIuOSAxLjlsMS4xIDEuMWMuNi0uNSAxLjItLjkgMS45LTEuM3YtMS43TTEyIDEyYzQuNSAwIDguNyAxLjcgMTEuNyA0LjcuMi4yLjMuNC4zLjcgMCAuMy0uMS41LS4zLjdsLTIuNSAyLjVjLS4yLjItLjQuMy0uNy4zLS4yIDAtLjUtLjEtLjctLjMtLjgtLjctMS43LTEuNC0yLjctMS44LS4zLS4yLS42LS41LS42LS45di0zLjFjLTEuNS0uNS0zLS43LTQuNi0uNy0xLjYgMC0zLjEuMi00LjYuN3YzLjFjMCAuNC0uMi43LS42LjktMSAuNS0xLjkgMS4xLTIuNyAxLjgtLjIuMi0uNC4zLS43LjMtLjMgMC0uNS0uMS0uNy0uM0wuMSAxOC4xYzAtLjItLjEtLjUtLjEtLjcgMC0uMy4xLS41LjMtLjdDMy4zIDEzLjggNy41IDEyIDEyIDEyek02LjUgNS41VjlINVYzaDZ2MS41SDcuNUwxMiA5bDYtNiAxIDEtNyA3LTUuNS01LjV6XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVPZmYgPSBcIk0yMC4yMiwyLjVMMi41LDIwLjIyTDMuNzcsMjEuNUw4LjY1LDE2LjYyQzExLjc2LDE5LjQzIDE1LjgxLDIxIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc1LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE4TDEzLjIxLDE3LjM4QzEyLjA2LDE2LjggMTEsMTYuMDYgMTAuMDYsMTUuMjFMMjEuNSwzLjc3TDIwLjIyLDIuNU00LDNBMSwxIDAgMCwwIDMsNEMzLDcuNTcgNC4xNCwxMS4wNSA2LjI0LDEzLjk0TDcuNjYsMTIuNUM3LjI4LDExLjk3IDYuOTMsMTEuMzkgNi42MiwxMC43OUw4LjgyLDguNTlDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNSA4LjUsNEExLDEgMCAwLDAgNy41LDNINFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZU9mZk91dGxpbmUgPSBcIk0xNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNVYxOUMxNy43IDE4LjkgMTYuNCAxOC43IDE1LjIgMTguMkwxNi40IDE3TTIwLjIgMi41TDIuNSAyMC4yTDMuOCAyMS41TDguNyAxNi42QzExLjggMTkuNCAxNS44IDIxIDIwIDIxQzIwLjYgMjEgMjEgMjAuNiAyMSAyMFYxNi41QzIxIDE1LjkgMjAuNiAxNS41IDIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEyLjEgMTYuOCAxMSAxNi4xIDEwLjEgMTUuMkwyMS41IDMuOEwyMC4yIDIuNU02LjUgNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1SDYuNU03LjUgM0g0QzMuNCAzIDMgMy40IDMgNEMzIDcuNiA0LjEgMTEgNi4yIDEzLjlMNy42IDEyLjVDNy4yIDEyIDYuOSAxMS40IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjQgOC41IDUuMiA4LjUgNEM4LjUgMy40IDguMSAzIDcuNSAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lT3V0Z29pbmcgPSBcIk00LDNBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xN0wxMy4yMSwxNy4zN0MxMC4zOCwxNS45MyA4LjA2LDEzLjYyIDYuNjIsMTAuNzhMOC44Miw4LjU3QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRNMTUsM1Y0LjVIMTguNUwxMywxMEwxNCwxMUwxOS41LDUuNVY5SDIxVjNIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVPdXRnb2luZ091dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMTUgM1Y0LjVIMTguNUwxMyAxMEwxNCAxMUwxOS41IDUuNVY5SDIxVjNIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVPdXRsaW5lID0gXCJNMjAsMTUuNUMxOC44LDE1LjUgMTcuNSwxNS4zIDE2LjQsMTQuOUMxNi4zLDE0LjkgMTYuMiwxNC45IDE2LjEsMTQuOUMxNS44LDE0LjkgMTUuNiwxNSAxNS40LDE1LjJMMTMuMiwxNy40QzEwLjQsMTUuOSA4LDEzLjYgNi42LDEwLjhMOC44LDguNkM5LjEsOC4zIDkuMiw3LjkgOSw3LjZDOC43LDYuNSA4LjUsNS4yIDguNSw0QzguNSwzLjUgOCwzIDcuNSwzSDRDMy41LDMgMywzLjUgMyw0QzMsMTMuNCAxMC42LDIxIDIwLDIxQzIwLjUsMjEgMjEsMjAuNSAyMSwyMFYxNi41QzIxLDE2IDIwLjUsMTUuNSAyMCwxNS41TTUsNUg2LjVDNi42LDUuOSA2LjgsNi44IDcsNy42TDUuOCw4LjhDNS40LDcuNiA1LjEsNi4zIDUsNU0xOSwxOUMxNy43LDE4LjkgMTYuNCwxOC42IDE1LjIsMTguMkwxNi40LDE3QzE3LjIsMTcuMiAxOC4xLDE3LjQgMTksMTcuNFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVBhdXNlZCA9IFwiTTE5LDEwSDIxVjNIMTlNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNU0xNywzSDE1VjEwSDE3VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVQYXVzZWRPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC44IDE1LjUgMTcuNSAxNS4zIDE2LjQgMTQuOUgxNi4xQzE1LjggMTQuOSAxNS42IDE1IDE1LjQgMTUuMkwxMy4yIDE3LjRDMTAuNCAxNS45IDggMTMuNiA2LjYgMTAuOEw4LjggOC42QzkuMSA4LjMgOS4yIDcuOSA5IDcuNkM4LjcgNi41IDguNSA1LjIgOC41IDRDOC41IDMuNSA4IDMgNy41IDNINEMzLjUgMyAzIDMuNSAzIDRDMyAxMy40IDEwLjYgMjEgMjAgMjFDMjAuNSAyMSAyMSAyMC41IDIxIDIwVjE2LjVDMjEgMTYgMjAuNSAxNS41IDIwIDE1LjVNNSA1SDYuNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1TTE5IDE5QzE3LjcgMTguOSAxNi40IDE4LjYgMTUuMiAxOC4yTDE2LjQgMTdDMTcuMiAxNy4yIDE4LjEgMTcuNCAxOSAxNy40VjE5TTE5IDEwSDIxVjNIMTlNMTcgM0gxNVYxMEgxN1YzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUGx1cyA9IFwiTTQsM0ExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc2LDE1LjUgMTcuNTUsMTUuMyAxNi40MywxNC45M0MxNi4wOCwxNC44MiAxNS42OSwxNC45IDE1LjQxLDE1LjE4TDEzLjIxLDE3LjM4QzEwLjM4LDE1Ljk0IDguMDcsMTMuNjIgNi42MiwxMC43OUw4LjgyLDguNThDOS4xLDguMzEgOS4xOCw3LjkyIDkuMDcsNy41N0M4LjcsNi40NSA4LjUsNS4yNCA4LjUsNEExLDEgMCAwLDAgNy41LDNNMTYsM1Y2SDEzVjhIMTZWMTFIMThWOEgyMVY2SDE4VjNcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVBsdXNPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC44IDE1LjUgMTcuNSAxNS4zIDE2LjQgMTQuOUgxNi4xQzE1LjggMTQuOSAxNS42IDE1IDE1LjQgMTUuMkwxMy4yIDE3LjRDMTAuNCAxNS45IDggMTMuNiA2LjYgMTAuOEw4LjggOC42QzkuMSA4LjMgOS4yIDcuOSA5IDcuNkM4LjcgNi41IDguNSA1LjIgOC41IDRDOC41IDMuNSA4IDMgNy41IDNINEMzLjUgMyAzIDMuNSAzIDRDMyAxMy40IDEwLjYgMjEgMjAgMjFDMjAuNSAyMSAyMSAyMC41IDIxIDIwVjE2LjVDMjEgMTYgMjAuNSAxNS41IDIwIDE1LjVNNSA1SDYuNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1TTE5IDE5QzE3LjcgMTguOSAxNi40IDE4LjYgMTUuMiAxOC4yTDE2LjQgMTdDMTcuMiAxNy4yIDE4LjEgMTcuNCAxOSAxNy40VjE5TTE2IDNWNkgxM1Y4SDE2VjExSDE4VjhIMjFWNkgxOFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUmVtb3ZlID0gXCJNNCAzQzMuNCAzIDMgMy40IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC42IDIxIDIxIDIwLjYgMjEgMjBWMTYuNUMyMSAxNS45IDIwLjYgMTUuNSAyMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45QzE2IDE0LjggMTUuNyAxNC45IDE1LjQgMTUuMUwxMy4yIDE3LjNDMTAuNCAxNS45IDguMSAxMy41IDYuNiAxMC43TDguOCA4LjVDOS4xIDguMiA5LjIgNy44IDkgNy41QzguNyA2LjQgOC41IDUuMiA4LjUgNEM4LjUgMy40IDguMSAzIDcuNSAzTTE5LjEgMy41TDE3IDUuNkwxNC45IDMuNUwxMy41IDQuOUwxNS42IDdMMTMuNSA5LjFMMTQuOSAxMC41TDE3IDguNEwxOS4xIDEwLjVMMjAuNSA5LjFMMTguNCA3TDIwLjUgNC45XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVSZW1vdmVPdXRsaW5lID0gXCJNMjAgMTUuNUMxOC44IDE1LjUgMTcuNSAxNS4zIDE2LjQgMTQuOUgxNi4xQzE1LjggMTQuOSAxNS42IDE1IDE1LjQgMTUuMkwxMy4yIDE3LjRDMTAuNCAxNS45IDggMTMuNiA2LjYgMTAuOEw4LjggOC42QzkuMSA4LjMgOS4yIDcuOSA5IDcuNkM4LjcgNi41IDguNSA1LjIgOC41IDRDOC41IDMuNSA4IDMgNy41IDNINEMzLjUgMyAzIDMuNSAzIDRDMyAxMy40IDEwLjYgMjEgMjAgMjFDMjAuNSAyMSAyMSAyMC41IDIxIDIwVjE2LjVDMjEgMTYgMjAuNSAxNS41IDIwIDE1LjVNNSA1SDYuNUM2LjYgNS45IDYuOCA2LjggNyA3LjZMNS44IDguOEM1LjQgNy42IDUuMSA2LjMgNSA1TTE5IDE5QzE3LjcgMTguOSAxNi40IDE4LjYgMTUuMiAxOC4yTDE2LjQgMTdDMTcuMiAxNy4yIDE4LjEgMTcuNCAxOSAxNy40VjE5TTE5LjEgMy41TDE3IDUuNkwxNC45IDMuNUwxMy41IDQuOUwxNS42IDdMMTMuNSA5LjFMMTQuOSAxMC41TDE3IDguNEwxOS4xIDEwLjVMMjAuNSA5LjFMMTguNCA3TDIwLjUgNC45TDE5LjEgMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUmV0dXJuID0gXCJNMjEsNlYxMUgxOS41VjcuNUgxMy44N0wxNi4zLDkuOTNMMTUuMjQsMTFMMTEsNi43NUwxNS4yNCwyLjVMMTYuMywzLjU3TDEzLjg3LDZIMjFNOC44Miw4LjU4QzkuMDgsOC4zMiA5LjE3LDcuOTMgOS4wNiw3LjU4QzguNjksNi40MiA4LjUsNS4yMiA4LjUsNEExLDEgMCAwLDAgNy41LDNINEExLDEgMCAwLDAgMyw0QTE3LDE3IDAgMCwwIDIwLDIxQTEsMSAwIDAsMCAyMSwyMFYxNi41QTEsMSAwIDAsMCAyMCwxNS41QzE4Ljc5LDE1LjUgMTcuNTgsMTUuMzEgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOTEgMTUuNDMsMTUuMTdMMTMuMjMsMTcuMzdDMTAuMzksMTUuOTIgOC4wOSwxMy42MiA2LjY0LDEwLjc4TDguODIsOC41OFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVJldHVybk91dGxpbmUgPSBcIk0yMCAxNS41QzE4LjggMTUuNSAxNy41IDE1LjMgMTYuNCAxNC45SDE2LjFDMTUuOCAxNC45IDE1LjYgMTUgMTUuNCAxNS4yTDEzLjIgMTcuNEMxMC40IDE1LjkgOCAxMy42IDYuNiAxMC44TDguOCA4LjZDOS4xIDguMyA5LjIgNy45IDkgNy42QzguNyA2LjUgOC41IDUuMiA4LjUgNEM4LjUgMy41IDggMyA3LjUgM0g0QzMuNSAzIDMgMy41IDMgNEMzIDEzLjQgMTAuNiAyMSAyMCAyMUMyMC41IDIxIDIxIDIwLjUgMjEgMjBWMTYuNUMyMSAxNiAyMC41IDE1LjUgMjAgMTUuNU01IDVINi41QzYuNiA1LjkgNi44IDYuOCA3IDcuNkw1LjggOC44QzUuNCA3LjYgNS4xIDYuMyA1IDVNMTkgMTlDMTcuNyAxOC45IDE2LjQgMTguNiAxNS4yIDE4LjJMMTYuNCAxN0MxNy4yIDE3LjIgMTguMSAxNy40IDE5IDE3LjRWMTlNMjEgNlYxMUgxOS41VjcuNUgxMy44N0wxNi4zIDkuOTNMMTUuMjQgMTFMMTEgNi43NUwxNS4yNCAyLjVMMTYuMyAzLjU3TDEzLjg3IDZIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVSaW5nID0gXCJNMjMuNzEgMTYuNjdDMjAuNjYgMTMuNzggMTYuNTQgMTIgMTIgMTJTMy4zNCAxMy43OC4yOSAxNi42N2MtLjE4LjE4LS4yOS40My0uMjkuNzEgMCAuMjguMTEuNTMuMjkuNzFsMi40OCAyLjQ4Yy4xOC4xOC40My4yOS43MS4yOS4yNyAwIC41Mi0uMTEuNy0uMjguNzktLjc0IDEuNjktMS4zNiAyLjY2LTEuODUuMzMtLjE2LjU2LS41LjU2LS45di0zLjFjMS40NS0uNDggMy0uNzMgNC42LS43M3MzLjE1LjI1IDQuNi43MnYzLjFjMCAuMzkuMjMuNzQuNTYuOS45OC40OSAxLjg3IDEuMTIgMi42NiAxLjg1LjE4LjE4LjQzLjI4LjcuMjguMjggMCAuNTMtLjExLjcxLS4yOWwyLjQ4LTIuNDhjLjE4LS4xOC4yOS0uNDMuMjktLjcxYS45OS45OSAwIDAgMC0uMjktLjd6TTIxLjE2IDYuMjZsLTEuNDEtMS40MS0zLjU2IDMuNTUgMS40MSAxLjQxczMuNDUtMy41MiAzLjU2LTMuNTV6TTEzIDJoLTJ2NWgyVjJ6TTYuNCA5LjgxTDcuODEgOC40IDQuMjYgNC44NCAyLjg0IDYuMjZjLjExLjAzIDMuNTYgMy41NSAzLjU2IDMuNTV6XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVSaW5nT3V0bGluZSA9IFwiTTIzLjcxIDE2LjY3QzIwLjY2IDEzLjc4IDE2LjU0IDEyIDEyIDEyUzMuMzQgMTMuNzguMjkgMTYuNjdjLS4xOC4xOC0uMjkuNDMtLjI5LjcxIDAgLjI4LjExLjUzLjI5LjcxbDIuNDggMi40OGMuMTguMTguNDMuMjkuNzEuMjkuMjcgMCAuNTItLjExLjctLjI4Ljc5LS43NCAxLjY5LTEuMzYgMi42Ni0xLjg1LjMzLS4xNi41Ni0uNS41Ni0uOXYtMy4xYzEuNDUtLjQ4IDMtLjczIDQuNi0uNzNzMy4xNS4yNSA0LjYuNzJ2My4xYzAgLjM5LjIzLjc0LjU2LjkuOTguNDkgMS44NyAxLjEyIDIuNjYgMS44NS4xOC4xOC40My4yOC43LjI4LjI4IDAgLjUzLS4xMS43MS0uMjlsMi40OC0yLjQ4Yy4xOC0uMTguMjktLjQzLjI5LS43MWEuOTkuOTkgMCAwIDAtLjI5LS43em0tMTguMzEuNTZjLS42Ni4zNy0xLjI5LjgtMS44NyAxLjI3bC0xLjA3LTEuMDdjLjkxLS43NSAxLjktMS4zOSAyLjk1LTEuOXYxLjdINS40em0xNS4wNyAxLjI2Yy0uNTktLjQ4LTEuMjEtLjktMS44Ny0xLjI3di0xLjdjMS4wNC41MSAyLjAzIDEuMTUgMi45NCAxLjlsLTEuMDcgMS4wN3ptLjY5LTEyLjIzbC0xLjQxLTEuNDEtMy41NiAzLjU1IDEuNDEgMS40MXMzLjQ1LTMuNTIgMy41Ni0zLjU1ek0xMSAyaDJ2NWgtMlYyek02LjQgOS44MUw3LjgxIDguNCA0LjI2IDQuODQgMi44NCA2LjI2Yy4xMS4wMyAzLjU2IDMuNTUgMy41NiAzLjU1elwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUm90YXRlTGFuZHNjYXBlID0gXCJNOSwxSDNBMiwyIDAgMCwwIDEsM1YxNkEyLDIgMCAwLDAgMywxOEg5QTIsMiAwIDAsMCAxMSwxNlYzQTIsMiAwIDAsMCA5LDFNOSwxNUgzVjNIOVYxNU0yMSwxM0gxM1YxNUgyMVYyMUg5VjIwSDZWMjFBMiwyIDAgMCwwIDgsMjNIMjFBMiwyIDAgMCwwIDIzLDIxVjE1QTIsMiAwIDAsMCAyMSwxM00yMywxMEwxOSw4TDIwLjkxLDcuMDlDMTkuNzQsNC4zMSAxNywyLjUgMTQsMi41VjFBOSw5IDAgMCwxIDIzLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lUm90YXRlUG9ydHJhaXQgPSBcIk05LDFIM0EyLDIgMCAwLDAgMSwzVjE2QTIsMiAwIDAsMCAzLDE4SDRWMTVIM1YzSDlWMTFIMTFWM0EyLDIgMCAwLDAgOSwxTTIzLDIxVjE1QTIsMiAwIDAsMCAyMSwxM0g4QTIsMiAwIDAsMCA2LDE1VjIxQTIsMiAwIDAsMCA4LDIzSDIxQTIsMiAwIDAsMCAyMywyMU05LDIxVjE1SDIxVjIxSDlNMjMsMTBIMjEuNUMyMS41LDcgMTkuNjksNC4yNyAxNi45MiwzLjA5TDE2LDVMMTQsMUE5LDkgMCAwLDEgMjMsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGhvbmVTZXR0aW5ncyA9IFwiTTE5LDExSDIxVjlIMTlNMjAsMTUuNUMxOC43NSwxNS41IDE3LjU1LDE1LjMgMTYuNDMsMTQuOTNDMTYuMDgsMTQuODIgMTUuNjksMTQuOSAxNS40MSwxNS4xOEwxMy4yMSwxNy4zOEMxMC4zOCwxNS45NCA4LjA2LDEzLjYyIDYuNjIsMTAuNzlMOC44Miw4LjU5QzkuMSw4LjMxIDkuMTgsNy45MiA5LjA3LDcuNTdDOC43LDYuNDUgOC41LDUuMjUgOC41LDRBMSwxIDAgMCwwIDcuNSwzSDRBMSwxIDAgMCwwIDMsNEExNywxNyAwIDAsMCAyMCwyMUExLDEgMCAwLDAgMjEsMjBWMTYuNUExLDEgMCAwLDAgMjAsMTUuNU0xNyw5SDE1VjExSDE3TTEzLDlIMTFWMTFIMTNWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaG9uZVNldHRpbmdzT3V0bGluZSA9IFwiTTIwIDE1LjVDMTguOCAxNS41IDE3LjUgMTUuMyAxNi40IDE0LjlIMTYuMUMxNS44IDE0LjkgMTUuNiAxNSAxNS40IDE1LjJMMTMuMiAxNy40QzEwLjQgMTUuOSA4IDEzLjYgNi42IDEwLjhMOC44IDguNkM5LjEgOC4zIDkuMiA3LjkgOSA3LjZDOC43IDYuNSA4LjUgNS4yIDguNSA0QzguNSAzLjUgOCAzIDcuNSAzSDRDMy41IDMgMyAzLjUgMyA0QzMgMTMuNCAxMC42IDIxIDIwIDIxQzIwLjUgMjEgMjEgMjAuNSAyMSAyMFYxNi41QzIxIDE2IDIwLjUgMTUuNSAyMCAxNS41TTUgNUg2LjVDNi42IDUuOSA2LjggNi44IDcgNy42TDUuOCA4LjhDNS40IDcuNiA1LjEgNi4zIDUgNU0xOSAxOUMxNy43IDE4LjkgMTYuNCAxOC42IDE1LjIgMTguMkwxNi40IDE3QzE3LjIgMTcuMiAxOC4xIDE3LjQgMTkgMTcuNFYxOU0xNyA5SDE1VjExSDE3TTEzIDlIMTFWMTFIMTNWOU0xOSAxMUgyMVY5SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBob25lVm9pcCA9IFwiTTEzLDE3VjE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMlYyMkgxNUExLDEgMCAwLDEgMTQsMjNIMTBBMSwxIDAgMCwxIDksMjJIMlYyMEg5QTEsMSAwIDAsMSAxMCwxOUgxMVYxN0gxM00yMy43LDcuNjdDMjMuODgsNy44NSAyNCw4LjA5IDI0LDguMzdDMjQsOC42NSAyMy44OSw4LjkgMjMuNzEsOS4wOEwyMS4yMywxMS41NkMyMS4wNSwxMS43NCAyMC44LDExLjg1IDIwLjUsMTEuODVDMjAuMjUsMTEuODUgMjAsMTEuNzUgMTkuODIsMTEuNTdDMTksMTAuODQgMTguMTMsMTAuMjEgMTcuMTUsOS43MkMxNi44Miw5LjU2IDE2LjU5LDkuMjEgMTYuNTksOC44MlY1LjcyQzE1LjE0LDUuMjUgMTMuNTksNSAxMiw1QzEwLjQsNSA4Ljg1LDUuMjUgNy40LDUuNzNWOC44M0M3LjQsOS4yMyA3LjE3LDkuNTcgNi44NCw5LjczQzUuODcsMTAuMjIgNC45NywxMC44NCA0LjE4LDExLjU4QzQsMTEuNzUgMy43NSwxMS44NiAzLjUsMTEuODZDMy4yLDExLjg2IDIuOTUsMTEuNzUgMi43NywxMS41N0wwLjI5LDkuMDlDMC4xMSw4LjkxIDAsOC42NiAwLDguMzhDMCw4LjEgMC4xMSw3Ljg1IDAuMjksNy42N0MzLjM0LDQuNzggNy40NiwzIDEyLDNDMTYuNTMsMyAyMC42NSw0Ljc4IDIzLjcsNy42N00xMSwxMFYxNUgxMFYxMEgxMU0xMiwxMEgxNVYxM0gxM1YxNUgxMlYxME0xNCwxMlYxMUgxM1YxMkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaSA9IFwiTTQsNVY3SDZWMTlIOFY3SDE0VjE2QTMsMyAwIDAsMCAxNywxOUEzLDMgMCAwLDAgMjAsMTZIMThBMSwxIDAgMCwxIDE3LDE3QTEsMSAwIDAsMSAxNiwxNlY3SDE4VjVcIjtcclxuZXhwb3J0IHZhciBtZGlQaUJveCA9IFwiTTUsM0MzLjg5LDMgMywzLjkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTYsN0gxN1Y5SDE1VjE0QTEsMSAwIDAsMCAxNiwxNUExLDEgMCAwLDAgMTcsMTRIMTlBMywzIDAgMCwxIDE2LDE3QTMsMyAwIDAsMSAxMywxNFY5SDEwVjE3SDhWOUg2XCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlIb2xlID0gXCJNNS42MiwyQzkuNSwyIDExLjU3LDQuMjkgMTEuNzcsNy45M0MxMi41LDMuNTcgMTUuOTMsNC4wOCAxNS45Myw0LjA4QzE2LjEsNi41NSAxNC4wNyw4LjA1IDExLjc3LDguMTdDMTEuMTIsNi44MSA3LjI1LDMuNDcgNy4yNSwzLjQ3QzcuMjMsMy41IDEwLjk3LDYuNzQgMTAuODMsOC4xNUM4LjMzLDcuODggNS44Miw2IDUuNjIsMk02LjA2LDEzLjExTDkuOTIsOS4yNUMxMS4wOSw4LjA4IDEzLDguMDggMTQuMTYsOS4yNUwxOCwxMy4xMUMxOS4xOSwxNC4yOCAxOS4xOSwxNi4xOCAxOCwxNy4zNUwxNC4xNiwyMS4yMUMxMywyMi4zOCAxMS4wOSwyMi4zOCA5LjkyLDIxLjIxTDYuMDYsMTcuMzVDNC44OSwxNi4xOCA0Ljg5LDE0LjI4IDYuMDYsMTMuMTFNOS4zOSwxOS41OUM5LjM5LDE4LjM2IDEwLjE1LDE2Ljg1IDEyLjA5LDE2Ljg1QzEzLjQsMTYuODUgMTQuODcsMTguMSAxNi4zMSwxNy45NkMxNC44NywxNy45MiAxMy41OSwxNi44NSAxMy41OSwxNS4xOUMxMy41OSwxMy44NiAxNC42OSwxMi45IDE0LjY5LDExLjM0QzE0LjYzLDEyLjMzIDEzLjgyLDEzLjc3IDEyLDEzLjc3QzEwLjU5LDEzLjc3IDkuNTUsMTIuNjMgNy44NywxMi42M0M4LjU4LDEyLjY3IDEwLjUsMTMuMyAxMC41LDE1LjM1QzEwLjUsMTcgOS4zOSwxNy41IDkuMzksMTkuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlhbm8gPSBcIk00LDNIMjBBMiwyIDAgMCwxIDIyLDVWMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlWNUEyLDIgMCAwLDEgNCwzTTQsNVYxOUg4VjEzSDYuNzVWNUg0TTksMTlIMTVWMTNIMTMuNzVWNUgxMC4yNVYxM0g5VjE5TTE2LDE5SDIwVjVIMTcuMjVWMTNIMTZWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlja2F4ZSA9IFwiTTE0Ljc5LDEwLjYyTDMuNSwyMS45TDIuMSwyMC41TDEzLjM4LDkuMjFMMTQuNzksMTAuNjJNMTkuMjcsNy43M0wxOS44Niw3LjE0TDE5LjA3LDYuMzVMMTkuNzEsNS43MUwxOC4yOSw0LjI5TDE3LjY1LDQuOTNMMTYuODYsNC4xNEwxNi4yNyw0LjczQzE0LjUzLDMuMzEgMTIuNTcsMi4xNyAxMC40NywxLjM3TDkuNjQsMy4xNkMxMS4zOSw0LjA4IDEzLDUuMTkgMTQuNSw2LjVMMTQsN0wxNywxMEwxNy41LDkuNUMxOC44MSwxMSAxOS45MiwxMi42MSAyMC44NCwxNC4zNkwyMi42MywxMy41M0MyMS44MywxMS40MyAyMC42OSw5LjQ3IDE5LjI3LDcuNzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGljdHVyZUluUGljdHVyZUJvdHRvbVJpZ2h0ID0gXCJNMTksMTFIMTFWMTdIMTlWMTFNMjMsMTlWNUMyMywzLjg4IDIyLjEsMyAyMSwzSDNBMiwyIDAgMCwwIDEsNVYxOUEyLDIgMCAwLDAgMywyMUgyMUEyLDIgMCAwLDAgMjMsMTlNMjEsMTlIM1Y0Ljk3SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpY3R1cmVJblBpY3R1cmVCb3R0b21SaWdodE91dGxpbmUgPSBcIk0xOSwxMUgxMVYxN0gxOVYxMU0xNywxNUgxM1YxM0gxN1YxNU0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxOUEyLDIgMCAwLDAgMywyMUgyMUEyLDIgMCAwLDAgMjMsMTlWNUMyMywzLjg4IDIyLjEsMyAyMSwzTTIxLDE5SDNWNC45N0gyMVYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWN0dXJlSW5QaWN0dXJlVG9wUmlnaHQgPSBcIk0xOSw3SDExVjEzSDE5VjdNMjEsM0gzQTIsMiAwIDAsMCAxLDVWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVBMiwyIDAgMCwwIDIxLDNNMjEsMTlIM1Y1SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpY3R1cmVJblBpY3R1cmVUb3BSaWdodE91dGxpbmUgPSBcIk0xOSw3SDExVjEzSDE5VjdNMTcsMTFIMTNWOUgxN1YxMU0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxOUMxLDIwLjExIDEuOSwyMSAzLDIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QzIzLDMuOTEgMjIuMSwzIDIxLDNNMjEsMTlIM1Y1SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpZXIgPSBcIk0yMCwxOEMxOC42LDE4IDE3LjIsMTcuNSAxNiwxNi43QzEzLjYsMTguNCAxMC40LDE4LjQgOCwxNi43QzYuOCwxNy41IDUuNCwxOCA0LDE4SDJWMjBINEM1LjQsMjAgNi43LDE5LjYgOCwxOUMxMC41LDIwLjMgMTMuNSwyMC4zIDE2LDE5QzE3LjMsMTkuNiAxOC42LDIwIDIwLDIwSDIyVjE4SDIwTTIwLDEzSDE5VjE2LjlDMTguMywxNi44IDE3LjYsMTYuNiAxNywxNi4yVjEzSDEyVjE3QzExLjMsMTcgMTAuNywxNi45IDEwLDE2LjdWMTNINVYxNi45QzQuNywxNyA0LjMsMTcgNCwxN0gzVjEzSDJWMTFIM1Y5SDVWMTFIMTBWOUgxMlYxMUgxN1Y5SDE5VjExSDIwVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpZXJDcmFuZSA9IFwiTTIwLDIwQzE4LjYxLDIwIDE3LjIyLDE5LjUzIDE2LDE4LjY3QzEzLjU2LDIwLjM4IDEwLjQ0LDIwLjM4IDgsMTguNjdDNi43OCwxOS41MyA1LjM5LDIwIDQsMjBIMlYyMkg0QzUuMzcsMjIgNi43NCwyMS42NSA4LDIxQzEwLjUsMjIuMyAxMy41LDIyLjMgMTYsMjFDMTcuMjYsMjEuNjUgMTguNjIsMjIgMjAsMjJIMjJWMjBIMjBNMjAsNFYzQTEsMSAwIDAsMCAxOSwySDlWMUg2VjJINVY0SDZWMTNINVYxMUgzVjEzSDJWMTVIM1YxOUg0QzQuMzMsMTkgNC42NywxOC45NyA1LDE4LjkyVjE1SDEwVjE4LjY1QzEwLjY1LDE4Ljg1IDExLjMzLDE4Ljk1IDEyLDE4Ljk1VjE4LjkyTDEyLDE1SDEzVjEzSDEyVjExSDEwVjEzSDlWNEgxN1Y4LjYyQzE2LjUzLDguNzkgMTYuMTksOS4yMyAxNi4xOSw5Ljc2QzE2LjE5LDEwLjIgMTYuNDMsMTAuNiAxNi44LDEwLjgyVjEySDE3LjQyQzE3Ljc2LDEyIDE4LjAzLDEyLjI4IDE4LjAzLDEyLjYyQzE4LjAzLDEyLjk2IDE3Ljc2LDEzLjI0IDE3LjQyLDEzLjI0QzE3LjIsMTMuMjQgMTcsMTMuMTIgMTYuODgsMTIuOTNDMTYuNzEsMTIuNjQgMTYuMzQsMTIuNTQgMTYuMDUsMTIuNzFDMTUuNzUsMTIuODcgMTUuNjUsMTMuMjUgMTUuODIsMTMuNTVDMTYuMTUsMTQuMTEgMTYuNzYsMTQuNDcgMTcuNDIsMTQuNDdDMTguNDMsMTQuNDcgMTkuMjYsMTMuNjQgMTkuMjYsMTIuNjJDMTkuMjYsMTEuODQgMTguNzYsMTEuMTQgMTguMDMsMTAuODhWMTAuODJDMTguNDEsMTAuNiAxOC42NSwxMC4yIDE4LjY1LDkuNzZDMTguNjUsOS4zIDE4LjM4LDguOTEgMTgsOC43VjRIMjBNOCwxMS42Nkw3LDEyLjY2VjExLjI0TDgsMTAuMjRWMTEuNjZNOCw4LjcxTDcsOS43MVY4LjI5TDgsNy4yOVY4LjcxTTcsNi43MVY1LjI5TDgsNC4yOVY1LjcxTDcsNi43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWcgPSBcIk05LjUsOUExLjUsMS41IDAgMCwwIDgsMTAuNUExLjUsMS41IDAgMCwwIDkuNSwxMkExLjUsMS41IDAgMCwwIDExLDEwLjVBMS41LDEuNSAwIDAsMCA5LjUsOU0xNC41LDlBMS41LDEuNSAwIDAsMCAxMywxMC41QTEuNSwxLjUgMCAwLDAgMTQuNSwxMkExLjUsMS41IDAgMCwwIDE2LDEwLjVBMS41LDEuNSAwIDAsMCAxNC41LDlNMTIsNEwxMi42OCw0LjAzQzEzLjYyLDMuMjQgMTQuODIsMi41OSAxNS43MiwyLjM1QzE3LjU5LDEuODUgMjAuODgsMi4yMyAyMS4zMSwzLjgzQzIxLjYyLDUgMjAuNiw2LjQ1IDE5LjAzLDcuMzhDMjAuMjYsOC45MiAyMSwxMC44NyAyMSwxM0E5LDkgMCAwLDEgMTIsMjJBOSw5IDAgMCwxIDMsMTNDMywxMC44NyAzLjc0LDguOTIgNC45Nyw3LjM4QzMuNCw2LjQ1IDIuMzgsNSAyLjY5LDMuODNDMy4xMiwyLjIzIDYuNDEsMS44NSA4LjI4LDIuMzVDOS4xOCwyLjU5IDEwLjM4LDMuMjQgMTEuMzIsNC4wM0wxMiw0TTEwLDE2QTEsMSAwIDAsMSAxMSwxN0ExLDEgMCAwLDEgMTAsMThBMSwxIDAgMCwxIDksMTdBMSwxIDAgMCwxIDEwLDE2TTE0LDE2QTEsMSAwIDAsMSAxNSwxN0ExLDEgMCAwLDEgMTQsMThBMSwxIDAgMCwxIDEzLDE3QTEsMSAwIDAsMSAxNCwxNk0xMiwxM0M5LjI0LDEzIDcsMTUuMzQgNywxN0M3LDE4LjY2IDkuMjQsMjAgMTIsMjBDMTQuNzYsMjAgMTcsMTguNjYgMTcsMTdDMTcsMTUuMzQgMTQuNzYsMTMgMTIsMTNNNy43Niw0LjI4QzcuMzEsNC4xNiA0LjU5LDQuMzUgNC41OSw0LjM1QzQuNTksNC4zNSA2LjgsNi4xIDcuMjQsNi4yMkM3LjY5LDYuMzQgOS43Nyw2LjQzIDkuOTEsNS45QzEwLjA2LDUuMzYgOC4yLDQuNCA3Ljc2LDQuMjhNMTYuMjQsNC4yOEMxNS44LDQuNCAxMy45NCw1LjM2IDE0LjA5LDUuOUMxNC4yMyw2LjQzIDE2LjMxLDYuMzQgMTYuNzYsNi4yMkMxNy4yLDYuMSAxOS40MSw0LjM1IDE5LjQxLDQuMzVDMTkuNDEsNC4zNSAxNi42OSw0LjE2IDE2LjI0LDQuMjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlnVmFyaWFudCA9IFwiTTIwIDEyQzIwIDguNjkgMTYuNDIgNiAxMiA2QzExLjE1IDYgMTAuMzQgNi4xIDkuNTcgNi4yOEw3IDVWNy4zMkM1LjUgOC4yMiA0LjQ1IDkuNSA0LjEyIDExSDJWMTVINS4wOEM1LjU4IDE1LjY1IDYuMjMgMTYuMjIgNyAxNi42OFYyMEg5VjE3LjU2QzkuOTMgMTcuODQgMTAuOTQgMTggMTIgMThTMTQuMDcgMTcuODQgMTUgMTcuNTZWMjBIMTdWMTYuNjhDMTguMTUgMTYgMTkuMDMgMTUuMDYgMTkuNTQgMTRIMjJWMTJIMjBNNyAxMUM2LjQ1IDExIDYgMTAuNTUgNiAxMFM2LjQ1IDkgNyA5IDggOS40NSA4IDEwIDcuNTUgMTEgNyAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWdWYXJpYW50T3V0bGluZSA9IFwiTTkgMTJDOC40IDEyIDggMTEuNiA4IDExUzguNCAxMCA5IDEwIDEwIDEwLjQgMTAgMTEgOS42IDEyIDkgMTJNMjIgMTJIMjBDMjAgOC43IDE2LjQgNiAxMiA2QzExLjIgNiAxMC4zIDYuMSA5LjYgNi4zTDcgNVY3LjNDNS41IDguMiA0LjUgOS41IDQuMSAxMUgyVjE1SDUuMUM1LjYgMTUuNiA2LjIgMTYuMiA3IDE2LjdWMjBIOVYxNy42QzkuOSAxNy45IDEwLjkgMTggMTIgMThTMTQuMSAxNy44IDE1IDE3LjZWMjBIMTdWMTYuN0MxOC4xIDE2IDE5IDE1LjEgMTkuNSAxNEgyMlYxMk0xMiAxNkM4LjcgMTYgNiAxNC4yIDYgMTJTOC43IDggMTIgOCAxOCA5LjggMTggMTIgMTUuMyAxNiAxMiAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaWdneUJhbmsgPSBcIk0xMyAxQzE0LjY2IDEgMTYgMi4zNCAxNiA0UzE0LjY2IDcgMTMgNyAxMCA1LjY2IDEwIDQgMTEuMzQgMSAxMyAxTTIwIDE0QzIwIDExLjY0IDE4LjE3IDkuNiAxNS41IDguNjJDMTUgOS40NSAxNC4wNiAxMCAxMyAxMEMxMS43NiAxMCAxMC42OSA5LjI0IDEwLjI0IDguMTdDMTAgOC4yIDkuNzggOC4yMyA5LjU3IDguMjlMNyA3VjkuMzJDNS41IDEwLjIyIDQuNDUgMTEuNSA0LjEyIDEzSDJWMTdINS4wOEM1LjU4IDE3LjY1IDYuMjMgMTguMjIgNyAxOC42OFYyMkg5VjE5LjU2QzkuOTMgMTkuODQgMTAuOTQgMjAgMTIgMjBTMTQuMDcgMTkuODQgMTUgMTkuNTZWMjJIMTdWMTguNjhDMTguMTUgMTggMTkuMDMgMTcuMDYgMTkuNTQgMTZIMjJWMTRIMjBNNyAxM0M2LjQ1IDEzIDYgMTIuNTUgNiAxMlM2LjQ1IDExIDcgMTEgOCAxMS40NSA4IDEyIDcuNTUgMTMgNyAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQaWdneUJhbmtPdXRsaW5lID0gXCJNMjIgMTRIMjBDMjAgMTEuNiAxOC4yIDkuNiAxNS41IDguNkMxNSA5LjQgMTQuMSAxMCAxMyAxMEMxMS43IDEwIDEwLjcgOS4yIDEwLjIgOC4yQzEwIDguMiA5LjggOC4zIDkuNSA4LjNMNyA3VjkuM0M1LjUgMTAuMiA0LjQgMTEuNSA0LjEgMTNIMlYxN0g1LjFDNS42IDE3LjYgNi4yIDE4LjIgNyAxOC43VjIySDlWMTkuNkM5LjkgMTkuOSAxMC45IDIwIDEyIDIwUzE0LjEgMTkuOCAxNSAxOS42VjIySDE3VjE4LjdDMTguMSAxOCAxOSAxNy4xIDE5LjUgMTZIMjJWMTRNMTIgMThDOC43IDE4IDYgMTYuMiA2IDE0QzYgMTIuNSA3LjQgMTEuMSA5LjQgMTAuNEMxMC4zIDExLjQgMTEuNiAxMiAxMyAxMkMxNC4xIDEyIDE1LjEgMTEuNyAxNiAxMUMxNy4zIDExLjggMTggMTIuOSAxOCAxNEMxOCAxNi4yIDE1LjMgMTggMTIgMThNMTMgM0MxMy42IDMgMTQgMy40IDE0IDRTMTMuNiA1IDEzIDUgMTIgNC42IDEyIDQgMTIuNCAzIDEzIDNNMTMgMUMxMS4zIDEgMTAgMi4zIDEwIDRTMTEuMyA3IDEzIDcgMTYgNS43IDE2IDQgMTQuNyAxIDEzIDFNMTAgMTNDMTAgMTMuNiA5LjYgMTQgOSAxNFM4IDEzLjYgOCAxMyA4LjQgMTIgOSAxMiAxMCAxMi40IDEwIDEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlsbCA9IFwiTTQuMjIsMTEuMjlMMTEuMjksNC4yMkMxMy42NCwxLjg4IDE3LjQzLDEuODggMTkuNzgsNC4yMkMyMi4xMiw2LjU2IDIyLjEyLDEwLjM2IDE5Ljc4LDEyLjcxTDEyLjcxLDE5Ljc4QzEwLjM2LDIyLjEyIDYuNTYsMjIuMTIgNC4yMiwxOS43OEMxLjg4LDE3LjQzIDEuODgsMTMuNjQgNC4yMiwxMS4yOU01LjY0LDEyLjcxQzQuNTksMTMuNzUgNC4yNCwxNS4yNCA0LjYsMTYuNTdMMTAuNTksMTAuNTlMMTQuODMsMTQuODNMMTguMzYsMTEuMjlDMTkuOTMsOS43MyAxOS45Myw3LjIgMTguMzYsNS42NEMxNi44LDQuMDcgMTQuMjcsNC4wNyAxMi43MSw1LjY0TDUuNjQsMTIuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlsbGFyID0gXCJNNiw1SDE4QTEsMSAwIDAsMSAxOSw2QTEsMSAwIDAsMSAxOCw3SDZBMSwxIDAgMCwxIDUsNkExLDEgMCAwLDEgNiw1TTIxLDJWNEgzVjJIMjFNMTUsOEgxN1YyMkgxNVY4TTcsOEg5VjIySDdWOE0xMSw4SDEzVjIySDExVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGluID0gXCJNMTYsMTJWNEgxN1YySDdWNEg4VjEyTDYsMTRWMTZIMTEuMlYyMkgxMi44VjE2SDE4VjE0TDE2LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpbk9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuOCwxNi4wN1YyMkgxMS4yVjE2SDZWMTRMOCwxMlYxMS4yN0wyLDUuMjdNMTYsMTJMMTgsMTRWMTZIMTcuODJMOCw2LjE4VjRIN1YySDE3VjRIMTZWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGluT2ZmT3V0bGluZSA9IFwiTTgsNi4yVjRIN1YySDE3VjRIMTZWMTJMMTgsMTRWMTZIMTcuOEwxNCwxMi4yVjRIMTBWOC4yTDgsNi4yTTIwLDIwLjdMMTguNywyMkwxMi44LDE2LjFWMjJIMTEuMlYxNkg2VjE0TDgsMTJWMTEuM0wyLDUuM0wzLjMsNEwyMCwyMC43TTguOCwxNEgxMC42TDkuNywxMy4xTDguOCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW5PdXRsaW5lID0gXCJNMTYsMTJWNEgxN1YySDdWNEg4VjEyTDYsMTRWMTZIMTEuMlYyMkgxMi44VjE2SDE4VjE0TDE2LDEyTTguOCwxNEwxMCwxMi44VjRIMTRWMTIuOEwxNS4yLDE0SDguOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW5lVHJlZSA9IFwiTTEwLDIxVjE4SDNMOCwxM0g1TDEwLDhIN0wxMiwzTDE3LDhIMTRMMTksMTNIMTZMMjEsMThIMTRWMjFIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGluZVRyZWVCb3ggPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMjBBMiwyIDAgMCwxIDIwLDIySDRBMiwyIDAgMCwxIDIsMjBWNEEyLDIgMCAwLDEgNCwyTTExLDE5SDEzVjE3SDE4TDE0LDEzSDE3TDEzLDlIMTZMMTIsNUw4LDlIMTFMNywxM0gxMEw2LDE3SDExVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpbmVUcmVlRmlyZSA9IFwiTTIyLjE0IDE0Ljg0TDIyLjEyIDE0Ljg1QzIyLjM1IDE1LjEzIDIyLjU1IDE1LjQ0IDIyLjcgMTUuNzdMMjIuNzkgMTUuOTZDMjMuNSAxNy42NSAyMyAxOS42IDIxLjY5IDIwLjgyQzIwLjUgMjEuOTEgMTguODQgMjIuMiAxNy4zIDIyQzE1Ljg0IDIxLjgyIDE0LjUgMjAuOSAxMy43MyAxOS42M0MxMy41IDE5LjI0IDEzLjMgMTguOCAxMy4yIDE4LjM1QzEzLjA3IDE4IDEzLjAzIDE3LjYyIDEzIDE3LjI1QzEyLjkxIDE1LjY1IDEzLjU1IDEzLjk1IDE0Ljc2IDEyLjk1QzE0LjIxIDE0LjE2IDE0LjM0IDE1LjY3IDE1LjE1IDE2LjcyTDE1LjI2IDE2Ljg1QzE1LjQgMTYuOTcgMTUuNTcgMTcgMTUuNzMgMTYuOTRDMTUuODggMTYuODggMTYgMTYuNzMgMTYgMTYuNTdMMTUuOTMgMTYuMzNDMTUuMDUgMTQgMTUuNzkgMTEuMyAxNy42NiA5Ljc3QzE4LjE3IDkuMzUgMTguOCA4Ljk3IDE5LjQ2IDguOEMxOC43OCAxMC4xNiAxOSAxMS45NCAyMC4wOSAxM0MyMC41NSAxMy41IDIxLjExIDEzLjc5IDIxLjU4IDE0LjIzTDIyLjE0IDE0Ljg0TTE5Ljg2IDE5LjVMMTkuODUgMTkuNDdDMjAuMyAxOS4wOCAyMC41NSAxOC40MSAyMC41MyAxNy44MUwyMC41IDE3LjVDMjAuMyAxNi41IDE5LjQzIDE2LjE2IDE4Ljg3IDE1LjQzQzE4LjcgMTUuMjEgMTguNTUgMTQuOTMgMTguNDQgMTQuNjVDMTguMjIgMTUuMTUgMTguMiAxNS42MiAxOC4yOSAxNi4xNkMxOC4zOSAxNi43MyAxOC42MSAxNy4yMiAxOC41IDE3LjgxQzE4LjM0IDE4LjQ2IDE3LjgzIDE5LjExIDE2Ljk0IDE5LjMyQzE3LjQ0IDE5LjgxIDE4LjI1IDIwLjIgMTkuMDYgMTkuOTJDMTkuMzIgMTkuODUgMTkuNjUgMTkuNjYgMTkuODYgMTkuNU05IDIxVjE4SDJMNyAxM0g0TDkgOEg2TDExIDNMMTYgOEgxM0wxNC44MiA5LjgyQzEyLjU1IDExLjA2IDExIDEzLjU5IDExIDE2LjVDMTEgMTguMTkgMTEuNSAxOS43NSAxMi40IDIxSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGludGVyZXN0ID0gXCJNOS4wNCwyMS41NEMxMCwyMS44MyAxMC45NywyMiAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQTEwLDEwIDAgMCwwIDIsMTJDMiwxNi4yNSA0LjY3LDE5LjkgOC40NCwyMS4zNEM4LjM1LDIwLjU2IDguMjYsMTkuMjcgOC40NCwxOC4zOEw5LjU5LDEzLjQ0QzkuNTksMTMuNDQgOS4zLDEyLjg2IDkuMywxMS45NEM5LjMsMTAuNTYgMTAuMTYsOS41MyAxMS4xNCw5LjUzQzEyLDkuNTMgMTIuNCwxMC4xNiAxMi40LDEwLjk3QzEyLjQsMTEuODMgMTEuODMsMTMuMDYgMTEuNTQsMTQuMjRDMTEuMzcsMTUuMjIgMTIuMDYsMTYuMDggMTMuMDYsMTYuMDhDMTQuODQsMTYuMDggMTYuMjIsMTQuMTggMTYuMjIsMTEuNUMxNi4yMiw5LjEgMTQuNSw3LjQ2IDEyLjAzLDcuNDZDOS4yMSw3LjQ2IDcuNTUsOS41NiA3LjU1LDExLjc3QzcuNTUsMTIuNjMgNy44MywxMy41IDguMjksMTQuMDdDOC4zOCwxNC4xMyA4LjM4LDE0LjIxIDguMzUsMTQuMzZMOC4wNiwxNS40NUM4LjA2LDE1LjYyIDcuOTUsMTUuNjggNy43OCwxNS41NkM2LjUsMTUgNS43NiwxMy4xOCA1Ljc2LDExLjcxQzUuNzYsOC41NSA4LDUuNjggMTIuMzIsNS42OEMxNS43Niw1LjY4IDE4LjQ0LDguMTUgMTguNDQsMTEuNDNDMTguNDQsMTQuODcgMTYuMzEsMTcuNjMgMTMuMjYsMTcuNjNDMTIuMjksMTcuNjMgMTEuMzQsMTcuMTEgMTEsMTYuNUwxMC4zMywxOC44N0MxMC4xLDE5LjczIDkuNDcsMjAuODggOS4wNCwyMS41N1YyMS41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW53aGVlbCA9IFwiTTEyLDEyQzEyLDkgMTQuNSw2LjUgMTcuNSw2LjVDMjAuNSw2LjUgMjMsOSAyMywxMkgxMk0xMiwxMkMxMiwxNSA5LjUsMTcuNSA2LjUsMTcuNUMzLjUsMTcuNSAxLDE1IDEsMTJIMTJNMTIsMTJDOSwxMiA2LjUsOS41IDYuNSw2LjVDNi41LDMuNSA5LDEgMTIsMVYxMk0xMiwxMkMxNSwxMiAxNy41LDE0LjUgMTcuNSwxNy41QzE3LjUsMjAuNSAxNSwyMyAxMiwyM1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaW53aGVlbE91dGxpbmUgPSBcIk0xMiwyM0gxMVYxNi40M0M5LjkzLDE3LjQgOC41LDE4IDcsMThDMy43NSwxOCAxLDE1LjI1IDEsMTJWMTFINy41N0M2LjYsOS45MyA2LDguNSA2LDdDNiwzLjc1IDguNzUsMSAxMiwxSDEzVjcuNTdDMTQuMDcsNi42IDE1LjUsNiAxNyw2QzIwLjI1LDYgMjMsOC43NSAyMywxMlYxM0gxNi40M0MxNy40LDE0LjA3IDE4LDE1LjUgMTgsMTdDMTgsMjAuMjUgMTUuMjUsMjMgMTIsMjNNMTMsMTMuMTNWMjAuODdDMTQuNywyMC40MSAxNiwxOC44MyAxNiwxN0MxNiwxNS4xNyAxNC43LDEzLjU5IDEzLDEzLjEzTTMuMTMsMTNDMy41OSwxNC43IDUuMTcsMTYgNywxNkM4LjgzLDE2IDEwLjQxLDE0LjcgMTAuODcsMTNIMy4xM00xMy4xMywxMUgyMC44N0MyMC40MSw5LjMgMTguODIsOCAxNyw4QzE1LjE4LDggMTMuNTksOS4zIDEzLjEzLDExTTExLDMuMTNDOS4zLDMuNTkgOCw1LjE4IDgsN0M4LDguODIgOS4zLDEwLjQxIDExLDEwLjg3VjMuMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlwZSA9IFwiTTIyLDE0SDIwVjE2SDE0VjEzSDE2VjExSDE0VjZBMiwyIDAgMCwwIDEyLDRINFYySDJWMTBINFY4SDEwVjExSDhWMTNIMTBWMThBMiwyIDAgMCwwIDEyLDIwSDIwVjIySDIyXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlwZURpc2Nvbm5lY3RlZCA9IFwiTTE2LDlWMTFIOFY5SDEwVjhINFYxMEgyVjJINFY0SDEyQTIsMiAwIDAsMSAxNCw2VjlIMTZNMTAsMTVWMThBMiwyIDAgMCwwIDEyLDIwSDIwVjIySDIyVjE0SDIwVjE2SDE0VjE1SDE2VjEzSDhWMTVIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGlwZUxlYWsgPSBcIk0yLDVWMTNINFYxMUgxMEwxMiw5TDEwLDdINFY1SDJNMjAsNVY3SDEyTDE0LDlMMTIsMTFIMjBWMTNIMjJWNUgyME0xMiwxM0MxMiwxMyAxMCwxNS4xNyAxMCwxNi41QTIsMiAwIDAsMCAxMiwxOC41QTIsMiAwIDAsMCAxNCwxNi41QzE0LDE1LjE3IDEyLDEzIDEyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpcGVXcmVuY2ggPSBcIk0xNi4xNyA1LjYzTDE0LjA2IDcuNzhMMTEuOTEgNS42M0wxNi4xNyAxLjQxTDE5LjY5IDQuOTJDMjAuODYgNi4wOSAyMC44NiA4IDE5LjY5IDkuMTlMMTYuMTcgNS42M000LjgzIDEyLjdMNyAxNC44MUwxMC41IDExLjNMOC4zOSA5LjE5TDQuODMgMTIuN00xNS40NyA3Ljc4TDE5IDExLjNMMTcuNTggMTIuN0wxNi44OCAxMkw2LjIzIDIyLjU5TDMuNDIgMTkuNzhMMTEuOTEgMTEuM0w3LjY5IDcuMDNMOS44IDQuOTJMMTQuMDYgOS4xOUwxNS40NyA3Ljc4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBpcmF0ZSA9IFwiTTguMiwxMi4xQzcuOSwxMi4zIDcuNywxMi43IDcuOCwxM0M3LjgsMTMuNyA4LjUsMTQuMiA5LjEsMTQuMkM5LjcsMTQuMiAxMC4zLDEzLjcgMTAuMywxM0M5LjcsMTIuNiA5LDEyLjMgOC4yLDEyLjFNMjIsMTFMMjMsN0MyMyw3IDIxLDcgMTgsNUMxNSwzIDE1LDEgMTIsMUM5LDEgOSwzIDYsNUMzLDcgMSw3IDEsN0wyLDExSDIuMUMyLDExLjMgMiwxMS43IDIsMTJDMiwxNS41IDMuOCwxOC42IDYuNSwyMC40TDYsMjEuM0MxMi40LDI1LjQgMTgsMjEuMyAxOCwyMS4zTDE3LjUsMjAuNEMyMC4yLDE4LjYgMjIsMTUuNSAyMiwxMkMyMiwxMS43IDIyLDExLjMgMjIsMTFNMTEuMyw0LjVMOS45LDMuMUwxMC42LDIuNEwxMiwzLjhMMTMuNCwyLjRMMTQuMSwzLjFMMTIuNyw0LjVMMTQuMSw1LjlMMTMuNCw2LjZMMTIsNS4yTDEwLjYsNi42TDkuOSw1LjlMMTEuMyw0LjVNOS4zLDguNUMxMC4zLDguMiAxMS4zLDggMTIsOEMxNC4yLDggMTcuOSw5LjYgMTkuOCwxMC40QzE5LjksMTAuNyAxOS45LDExIDE5LjksMTEuM0w5LjMsOC41TTEzLjYsMTkuMUMxMi45LDE5LjUgMTIuMiwxOS44IDExLjQsMTkuOUMxMC45LDE5LjUgMTAuOSwxOC43IDExLjQsMTguM0MxMS44LDE3LjkgMTIuNywxNy43IDEzLjIsMTguMkMxMy41LDE4LjMgMTMuNiwxOC44IDEzLjYsMTkuMU0yMCwxMy40QzE5LjUsMTUuNSAxOC4yLDE3LjQgMTYuNSwxOC42TDE1LDE2SDlMNy41LDE4LjZDNS40LDE3LjIgNCwxNC44IDQsMTJDNCwxMS41IDQuMSwxMSA0LjIsMTAuNUM0LjcsMTAuMyA1LjMsMTAgNiw5LjdMMTMuMSwxMS42VjE0QzEzLjEsMTQuNSAxMy41LDE1IDE0LjEsMTVIMTYuMUMxNi42LDE1IDE3LjEsMTQuNiAxNy4xLDE0VjEyLjZMMjAsMTMuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXN0b2wgPSBcIk03LDVIMjNWOUgyMlYxMEgxNkExLDEgMCAwLDAgMTUsMTFWMTJBMiwyIDAgMCwxIDEzLDE0SDkuNjJDOS4yNCwxNCA4Ljg5LDE0LjIyIDguNzIsMTQuNTZMNi4yNywxOS40NUM2LjEsMTkuNzkgNS43NiwyMCA1LjM4LDIwSDJDMiwyMCAtMSwyMCAzLDE0QzMsMTQgNiwxMCAyLDEwVjVIM0wzLjUsNEg2LjVMNyw1TTE0LDEyVjExQTEsMSAwIDAsMCAxMywxMEgxMkMxMiwxMCAxMSwxMSAxMiwxMkEyLDIgMCAwLDEgMTAsMTBBMSwxIDAgMCwwIDksMTFWMTJBMSwxIDAgMCwwIDEwLDEzSDEzQTEsMSAwIDAsMCAxNCwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXN0b24gPSBcIk0xMywxNi4xOEMxMy41LDE2LjM1IDEzLjksMTYuNjMgMTQuMjMsMTdIMTVWMjFIMTQuMjFDMTMuODksMjEuMzUgMTMuNSwyMS42MyAxMywyMS44QzExLjg1LDIyLjIyIDEwLjU4LDIxLjg3IDkuNzgsMjFIOVYxN0g5Ljc3QzEwLjEsMTYuNjMgMTAuNSwxNi4zNSAxMSwxNi4xOFYxMkgxM1YxNi4xOE0xMiwyMEExLDEgMCAwLDAgMTMsMTlBMSwxIDAgMCwwIDEyLDE4QTEsMSAwIDAsMCAxMSwxOUExLDEgMCAwLDAgMTIsMjBNMTcsNEgxNVY1SDE3VjExSDdWNUg5VjRIN1YySDE3VjRNMTIsOUExLDEgMCAwLDAgMTMsOEExLDEgMCAwLDAgMTIsN0ExLDEgMCAwLDAgMTEsOEExLDEgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXRjaGZvcmsgPSBcIk0xNS45IC45TDEzLjEgMy43QzEyLjMgNC41IDEyLjMgNS43IDEzLjEgNi41TDE0LjUgOEw5LjIgMTMuNEw3LjggMTJDNyAxMS4yIDUuOCAxMS4yIDUgMTJMMSAxNkwyLjQgMTcuNEw2LjQgMTMuNEw3LjggMTQuOEwzLjggMTguOEw1LjIgMjAuMkw5LjIgMTYuMkwxMC42IDE3LjZMOS45IDE4LjRMNi43IDIxLjZMOCAyM0wxMiAxOUMxMi44IDE4LjIgMTIuOCAxNyAxMiAxNi4yTDEwLjYgMTQuOEwxNS45IDkuNEwxNy4zIDEwLjhDMTguMSAxMS42IDE5LjMgMTEuNiAyMC4xIDEwLjhMMjMgOEwxNS45IC45TTE4LjcgOS40TDE0LjUgNS4yTDE1LjkgMy44TDIwLjEgOEwxOC43IDkuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQaXp6YSA9IFwiTTEyLDE1QTIsMiAwIDAsMSAxMCwxM0MxMCwxMS44OSAxMC45LDExIDEyLDExQTIsMiAwIDAsMSAxNCwxM0EyLDIgMCAwLDEgMTIsMTVNNyw3QzcsNS44OSA3Ljg5LDUgOSw1QTIsMiAwIDAsMSAxMSw3QTIsMiAwIDAsMSA5LDlDNy44OSw5IDcsOC4xIDcsN00xMiwyQzguNDMsMiA1LjIzLDMuNTQgMyw2TDEyLDIyTDIxLDZDMTguNzgsMy41NCAxNS41NywyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheSA9IFwiTTgsNS4xNFYxOS4xNEwxOSwxMi4xNEw4LDUuMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveCA9IFwiTTE5IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjEgMy45IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjVDMjEgMy44OSAyMC4xIDMgMTkgM00xMCAxNlY4TDE1IDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveE11bHRpcGxlID0gXCJNNCw2SDJWMjBBMiwyIDAgMCwwIDQsMjJIMThWMjBINFY2TTIwLDJIOEEyLDIgMCAwLDAgNiw0VjE2QTIsMiAwIDAsMCA4LDE4SDIwQTIsMiAwIDAsMCAyMiwxNlY0QTIsMiAwIDAsMCAyMCwyTTEyLDE0LjVWNS41TDE4LDEwTDEyLDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveE11bHRpcGxlT3V0bGluZSA9IFwiTTQgNkgyVjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZNMjAgNFYxNkg4VjRIMjBNMjAgMkg4QzYuOSAyIDYgMi45IDYgNFYxNkM2IDE3LjEgNi45IDE4IDggMThIMjBDMjEuMSAxOCAyMiAxNy4xIDIyIDE2VjRDMjIgMi45IDIxLjEgMiAyMCAyTTEyIDE0LjVWNS41TDE4IDEwTDEyIDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUJveE91dGxpbmUgPSBcIk0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMCw4VjE2TDE1LDEyTDEwLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheUNpcmNsZSA9IFwiTTEwLDE2LjVWNy41TDE2LDEyTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlDaXJjbGVPdXRsaW5lID0gXCJNMTIsMjBDNy41OSwyMCA0LDE2LjQxIDQsMTJDNCw3LjU5IDcuNTksNCAxMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMCwxNi41TDE2LDEyTDEwLDcuNVYxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlOZXR3b3JrID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU0xMCwxNFY2TDE1LDEwTDEwLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlOZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTAsMTRWNkwxNSwxMEwxMCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5T3V0bGluZSA9IFwiTTguNSw4LjY0TDEzLjc3LDEyTDguNSwxNS4zNlY4LjY0TTYuNSw1VjE5TDE3LjUsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5UGF1c2UgPSBcIk0zLDVWMTlMMTEsMTJNMTMsMTlIMTZWNUgxM00xOCw1VjE5SDIxVjVcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5UHJvdGVjdGVkQ29udGVudCA9IFwiTTIsNVYxOEgxMVYxNkg0VjdIMTdWMTFIMTlWNUgyTTksOVYxNEwxMi41LDExLjVMOSw5TTIxLjA0LDExLjY3TDE2LjA5LDE2LjYyTDEzLjk2LDE0LjVMMTIuNTUsMTUuOTFMMTYuMDksMTkuNDVMMjIuNDUsMTMuMDlMMjEuMDQsMTEuNjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheVNwZWVkID0gXCJNMTMsMi4wNVY0LjA1QzE3LjM5LDQuNTkgMjAuNSw4LjU4IDE5Ljk2LDEyLjk3QzE5LjUsMTYuNjEgMTYuNjQsMTkuNSAxMywxOS45M1YyMS45M0MxOC41LDIxLjM4IDIyLjUsMTYuNSAyMS45NSwxMUMyMS41LDYuMjUgMTcuNzMsMi41IDEzLDIuMDNWMi4wNU01LjY3LDE5Ljc0QzcuMTgsMjEgOS4wNCwyMS43OSAxMSwyMlYyMEM5LjU4LDE5LjgyIDguMjMsMTkuMjUgNy4xLDE4LjM3TDUuNjcsMTkuNzRNNy4xLDUuNzRDOC4yMiw0Ljg0IDkuNTcsNC4yNiAxMSw0LjA2VjIuMDZDOS4wNSwyLjI1IDcuMTksMyA1LjY3LDQuMjZMNy4xLDUuNzRNNS42OSw3LjFMNC4yNiw1LjY3QzMsNy4xOSAyLjI1LDkuMDQgMi4wNSwxMUg0LjA1QzQuMjQsOS41OCA0LjgsOC4yMyA1LjY5LDcuMU00LjA2LDEzSDIuMDZDMi4yNiwxNC45NiAzLjAzLDE2LjgxIDQuMjcsMTguMzNMNS42OSwxNi45QzQuODEsMTUuNzcgNC4yNCwxNC40MiA0LjA2LDEzTTEwLDE2LjVMMTYsMTJMMTAsNy41VjE2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RDaGVjayA9IFwiTTE0LDEwSDJWMTJIMTRWMTBNMTQsNkgyVjhIMTRWNk0yLDE2SDEwVjE0SDJWMTZNMjEuNSwxMS41TDIzLDEzTDE2LDIwTDExLjUsMTUuNUwxMywxNEwxNiwxN0wyMS41LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RFZGl0ID0gXCJNMiw2VjhIMTRWNkgyTTIsMTBWMTJIMTRWMTBIMk0yMC4wNCwxMC4xM0MxOS45LDEwLjEzIDE5Ljc2LDEwLjE5IDE5LjY1LDEwLjNMMTguNjUsMTEuM0wyMC43LDEzLjM1TDIxLjcsMTIuMzVDMjEuOTIsMTIuMTQgMjEuOTIsMTEuNzkgMjEuNywxMS41OEwyMC40MiwxMC4zQzIwLjMxLDEwLjE5IDIwLjE4LDEwLjEzIDIwLjA0LDEwLjEzTTE4LjA3LDExLjg4TDEyLDE3Ljk0VjIwSDE0LjA2TDIwLjEyLDEzLjkzTDE4LjA3LDExLjg4TTIsMTRWMTZIMTBWMTRIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdE1pbnVzID0gXCJNMiwxNkgxMFYxNEgyTTEyLDE0VjE2SDIyVjE0TTE0LDZIMlY4SDE0TTE0LDEwSDJWMTJIMTRWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RNdXNpYyA9IFwiTTE1LDZIM1Y4SDE1VjZNMTUsMTBIM1YxMkgxNVYxME0zLDE2SDExVjE0SDNWMTZNMTcsNlYxNC4xOEMxNi42OSwxNC4wNyAxNi4zNSwxNCAxNiwxNEEzLDMgMCAwLDAgMTMsMTdBMywzIDAgMCwwIDE2LDIwQTMsMyAwIDAsMCAxOSwxN1Y4SDIyVjZIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGxheWxpc3RNdXNpY091dGxpbmUgPSBcIk0xNSw2VjhIM1Y2SDE1TTE1LDEwVjEySDNWMTBIMTVNMywxNlYxNEgxMVYxNkgzTTE3LDZIMjJWOEgxOVYxN0EzLDMgMCAwLDEgMTYsMjBBMywzIDAgMCwxIDEzLDE3QTMsMyAwIDAsMSAxNiwxNEMxNi4zNSwxNCAxNi42OSwxNC4wNyAxNywxNC4xOFY2TTE2LDE2QTEsMSAwIDAsMCAxNSwxN0ExLDEgMCAwLDAgMTYsMThBMSwxIDAgMCwwIDE3LDE3QTEsMSAwIDAsMCAxNiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdFBsYXkgPSBcIk0xOSw5SDJWMTFIMTlWOU0xOSw1SDJWN0gxOVY1TTIsMTVIMTVWMTNIMlYxNU0xNywxM1YxOUwyMiwxNkwxNywxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdFBsdXMgPSBcIk0yLDE2SDEwVjE0SDJNMTgsMTRWMTBIMTZWMTRIMTJWMTZIMTZWMjBIMThWMTZIMjJWMTRNMTQsNkgyVjhIMTRNMTQsMTBIMlYxMkgxNFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGF5bGlzdFJlbW92ZSA9IFwiTTIsNlY4SDE0VjZIMk0yLDEwVjEySDExVjEwSDJNMTQuMTcsMTAuNzZMMTIuNzYsMTIuMTdMMTUuNTksMTVMMTIuNzYsMTcuODNMMTQuMTcsMTkuMjRMMTcsMTYuNDFMMTkuODMsMTkuMjRMMjEuMjQsMTcuODNMMTguNDEsMTVMMjEuMjQsMTIuMTdMMTkuODMsMTAuNzZMMTcsMTMuNTlMMTQuMTcsMTAuNzZNMiwxNFYxNkgxMVYxNEgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsYXlsaXN0U3RhciA9IFwiTTE3LDE5LjA5TDE5LjQ1LDIwLjU4TDE4LjgsMTcuNzdMMjEsMTUuODlMMTguMTEsMTUuNjRMMTcsMTNMMTUuODcsMTUuNjRMMTMsMTUuODlMMTUuMTgsMTcuNzdMMTQuNSwyMC41OEwxNywxOS4wOU00LDE0SDEyVjE2SDRWMTRNNCw2SDE2VjhINFY2TTQsMTBIMTZWMTJINFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQbGV4ID0gXCJNNCwyQzIuODksMiAyLDIuODkgMiw0VjIwQzIsMjEuMTEgMi44OSwyMiA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjRDMjIsMi44OSAyMS4xMSwyIDIwLDJINE04LjU2LDZIMTIuMDZMMTUuNSwxMkwxMi4wNiwxOEg4LjU2TDEyLDEyTDguNTYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzID0gXCJNMTksMTNIMTNWMTlIMTFWMTNINVYxMUgxMVY1SDEzVjExSDE5VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNCb3ggPSBcIk0xNywxM0gxM1YxN0gxMVYxM0g3VjExSDExVjdIMTNWMTFIMTdNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0JveE11bHRpcGxlID0gXCJNMTksMTFIMTVWMTVIMTNWMTFIOVY5SDEzVjVIMTVWOUgxOU0yMCwySDhBMiwyIDAgMCwwIDYsNFYxNkEyLDIgMCAwLDAgOCwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWNEEyLDIgMCAwLDAgMjAsMk00LDZIMlYyMEEyLDIgMCAwLDAgNCwyMkgxOFYyMEg0VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0JveE11bHRpcGxlT3V0bGluZSA9IFwiTTE4IDExSDE1VjE0SDEzVjExSDEwVjlIMTNWNkgxNVY5SDE4TTIwIDRWMTZIOFY0SDIwTTIwIDJIOEM2LjkgMiA2IDIuOSA2IDRWMTZDNiAxNy4xMSA2LjkgMTggOCAxOEgyMEMyMS4xMSAxOCAyMiAxNy4xMSAyMiAxNlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJNNCA2SDJWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgxOFYyMEg0VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0JveE91dGxpbmUgPSBcIk0xOSwxOVY1SDVWMTlIMTlNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QzMsMy44OSAzLjksMyA1LDNIMTlNMTEsN0gxM1YxMUgxN1YxM0gxM1YxN0gxMVYxM0g3VjExSDExVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0NpcmNsZSA9IFwiTTE3LDEzSDEzVjE3SDExVjEzSDdWMTFIMTFWN0gxM1YxMUgxN00xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzQ2lyY2xlTXVsdGlwbGUgPSBcIk0yIDEyQzIgOS4yIDMuNiA2LjggNiA1LjdWMy41QzIuNSA0LjggMCA4LjEgMCAxMlMyLjUgMTkuMiA2IDIwLjVWMTguM0MzLjYgMTcuMiAyIDE0LjggMiAxMk0xNSAzQzEwIDMgNiA3IDYgMTJTMTAgMjEgMTUgMjEgMjQgMTcgMjQgMTIgMjAgMyAxNSAzTTIwIDEzSDE2VjE3SDE0VjEzSDEwVjExSDE0VjdIMTZWMTFIMjBWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0NpcmNsZU11bHRpcGxlT3V0bGluZSA9IFwiTTE2LDhIMTRWMTFIMTFWMTNIMTRWMTZIMTZWMTNIMTlWMTFIMTZNMiwxMkMyLDkuMjEgMy42NCw2LjggNiw1LjY4VjMuNUMyLjUsNC43NiAwLDguMDkgMCwxMkMwLDE1LjkxIDIuNSwxOS4yNCA2LDIwLjVWMTguMzJDMy42NCwxNy4yIDIsMTQuNzkgMiwxMk0xNSwzQzEwLjA0LDMgNiw3LjA0IDYsMTJDNiwxNi45NiAxMC4wNCwyMSAxNSwyMUMxOS45NiwyMSAyNCwxNi45NiAyNCwxMkMyNCw3LjA0IDE5Ljk2LDMgMTUsM00xNSwxOUMxMS4xNCwxOSA4LDE1Ljg2IDgsMTJDOCw4LjE0IDExLjE0LDUgMTUsNUMxOC44Niw1IDIyLDguMTQgMjIsMTJDMjIsMTUuODYgMTguODYsMTkgMTUsMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c0NpcmNsZU91dGxpbmUgPSBcIk0xMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEzLDdIMTFWMTFIN1YxM0gxMVYxN0gxM1YxM0gxN1YxMUgxM1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNNaW51cyA9IFwiTTExLDRWOUg2VjExSDExVjE2SDEzVjExSDE4VjlIMTNWNEgxMU02LDE4VjIwSDE4VjE4SDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c01pbnVzQm94ID0gXCJNNSwzQzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzSDVNMTEsNkgxM1Y5SDE2VjExSDEzVjE0SDExVjExSDhWOUgxMVY2TTgsMTZIMTZWMThIOFYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzTWludXNWYXJpYW50ID0gXCJNMyA3SDZWNEg4VjdIMTFWOUg4VjEySDZWOUgzVjdNMTMgMTVIMjFWMTdIMTNWMTVNMTYuMDQgM0gxOC4zNUw3Ljk2IDIxSDUuNjVMMTYuMDQgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQbHVzTmV0d29yayA9IFwiTTE2LDExVjlIMTNWNkgxMVY5SDhWMTFIMTFWMTRIMTNWMTFIMTZNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c05ldHdvcmtPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE0LDE5SDEzVjE3SDE3QTIsMiAwIDAsMCAxOSwxNVY1QTIsMiAwIDAsMCAxNywzSDdBMiwyIDAgMCwwIDUsNVYxNUEyLDIgMCAwLDAgNywxN0gxMVYxOUgxMEExLDEgMCAwLDAgOSwyMEgyVjIySDlBMSwxIDAgMCwwIDEwLDIzSDE0QTEsMSAwIDAsMCAxNSwyMkgyMlYyMEgxNU03LDE1VjVIMTdWMTVIN00xNSwxMUgxM1YxM0gxMVYxMUg5VjlIMTFWN0gxM1Y5SDE1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNPbmUgPSBcIk0xMCw4VjEySDE0VjE0SDEwVjE4SDhWMTRINFYxMkg4VjhIMTBNMTQuNSw2LjA4TDE5LDVWMThIMTdWNy40TDE0LjUsNy45VjYuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUGx1c091dGxpbmUgPSBcIk00LDlIOVY0SDE1VjlIMjBWMTVIMTVWMjBIOVYxNUg0VjlNMTEsMTNWMThIMTNWMTNIMThWMTFIMTNWNkgxMVYxMUg2VjEzSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBsdXNUaGljayA9IFwiTTIwIDE0SDE0VjIwSDEwVjE0SDRWMTBIMTBWNEgxNFYxMEgyMFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb2RjYXN0ID0gXCJNMTcsMTguMjVWMjEuNUg3VjE4LjI1QzcsMTYuODcgOS4yNCwxNS43NSAxMiwxNS43NUMxNC43NiwxNS43NSAxNywxNi44NyAxNywxOC4yNU0xMiw1LjVBNi41LDYuNSAwIDAsMSAxOC41LDEyQzE4LjUsMTMuMjUgMTguMTUsMTQuNDIgMTcuNTQsMTUuNDFMMTYsMTQuMDRDMTYuMzIsMTMuNDMgMTYuNSwxMi43MyAxNi41LDEyQzE2LjUsOS41IDE0LjUsNy41IDEyLDcuNUM5LjUsNy41IDcuNSw5LjUgNy41LDEyQzcuNSwxMi43MyA3LjY4LDEzLjQzIDgsMTQuMDRMNi40NiwxNS40MUM1Ljg1LDE0LjQyIDUuNSwxMy4yNSA1LjUsMTJBNi41LDYuNSAwIDAsMSAxMiw1LjVNMTIsMS41QTEwLjUsMTAuNSAwIDAsMSAyMi41LDEyQzIyLjUsMTQuMjggMjEuNzcsMTYuMzkgMjAuNTQsMTguMTFMMTkuMDQsMTYuNzZDMTkuOTYsMTUuNCAyMC41LDEzLjc2IDIwLjUsMTJBOC41LDguNSAwIDAsMCAxMiwzLjVBOC41LDguNSAwIDAsMCAzLjUsMTJDMy41LDEzLjc2IDQuMDQsMTUuNCA0Ljk2LDE2Ljc2TDMuNDYsMTguMTFDMi4yMywxNi4zOSAxLjUsMTQuMjggMS41LDEyQTEwLjUsMTAuNSAwIDAsMSAxMiwxLjVNMTIsOS41QTIuNSwyLjUgMCAwLDEgMTQuNSwxMkEyLjUsMi41IDAgMCwxIDEyLDE0LjVBMi41LDIuNSAwIDAsMSA5LjUsMTJBMi41LDIuNSAwIDAsMSAxMiw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9kaXVtID0gXCJNMTIsNy4wOUwxNC40NSw4LjU4TDEzLjgsNS43N0wxNiwzLjg5TDEzLjExLDMuNjRMMTIsMUwxMC44NywzLjY0TDgsMy44OUwxMC4xOCw1Ljc3TDkuNSw4LjU4TDEyLDcuMDlNNCwxMy4wOUw2LjQ1LDE0LjU4TDUuOCwxMS43N0w4LDkuODlMNS4xMSw5LjY0TDQsN0wyLjg3LDkuNjRMMCw5Ljg5TDIuMTgsMTEuNzdMMS41LDE0LjU4TDQsMTMuMDlNMjAsMTAuMDlMMjIuNDUsMTEuNThMMjEuOCw4Ljc3TDI0LDYuODlMMjEuMTEsNi42NEwyMCw0TDE4Ljg3LDYuNjRMMTYsNi44OUwxOC4xOCw4Ljc3TDE3LjUsMTEuNThMMjAsMTAuMDlNMTUsMjNIOVYxMEgxNVYyM003LDIzSDFWMTdIN1YyM00yMywyM0gxN1YxM0gyM1YyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQb2RpdW1Ccm9uemUgPSBcIk00LDEzLjA5TDYuNDUsMTQuNThMNS44LDExLjc3TDgsOS44OUw1LjExLDkuNjRMNCw3TDIuODcsOS42NEwwLDkuODlMMi4xOCwxMS43N0wxLjUsMTQuNThMNCwxMy4wOU03LDIzSDFWMTdIN1YyM005LDEwVjIzSDE1VjEwSDlNMTMsMjFIMTFWMTJIMTNWMjFNMTcsMTNWMjNIMjNWMTNIMTdNMjEsMjFIMTlWMTVIMjFWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9kaXVtR29sZCA9IFwiTTEyLDcuMDlMMTQuNDUsOC41OEwxMy44LDUuNzdMMTYsMy44OUwxMy4xMSwzLjY0TDEyLDFMMTAuODcsMy42NEw4LDMuODlMMTAuMTgsNS43N0w5LjUsOC41OEwxMiw3LjA5TTE1LDIzSDlWMTBIMTVWMjNNMSwxN1YyM0g3VjE3SDFNNSwyMUgzVjE5SDVWMjFNMTcsMTNWMjNIMjNWMTNIMTdNMjEsMjFIMTlWMTVIMjFWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9kaXVtU2lsdmVyID0gXCJNMjAsMTAuMDlMMjIuNDUsMTEuNThMMjEuOCw4Ljc3TDI0LDYuODlMMjEuMTEsNi42NEwyMCw0TDE4Ljg3LDYuNjRMMTYsNi44OUwxOC4xOCw4Ljc3TDE3LjUsMTEuNThMMjAsMTAuMDlNMjMsMjNIMTdWMTNIMjNWMjNNMSwxN1YyM0g3VjE3SDFNNSwyMUgzVjE5SDVWMjFNOSwxMFYyM0gxNVYxMEg5TTEzLDIxSDExVjEySDEzVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvaW50T2ZTYWxlID0gXCJNMjAsNUMxOS40LDUgMTksNS41IDE5LDYuMVYxNkMxOSwxNi42IDE5LjQsMTcgMjAsMTcuMUMyMC42LDE3LjEgMjEsMTYuNiAyMSwxNlY2LjFDMjEsNS41IDIwLjYsNSAyMCw1TTE2LjQsMkg0LjZDMy43LDIgMywyLjcgMywzLjZWMTcuNEMzLDE4LjMgMy43LDE5IDQuNiwxOUg2VjIxQzYsMjEuNiA2LjQsMjIgNywyMkgxM0MxMy42LDIyIDE0LDIxLjYgMTQsMjFWMTlIMTYuNEMxNy4zLDE5IDE4LDE4LjMgMTgsMTcuNFYzLjZDMTgsMi43IDE3LjMsMiAxNi40LDJNNSw4SDhWMTBINVY4TTEyLDExVjEzSDlWMTFIMTJNOSwxMFY4SDEyVjEwSDlNMTIsMTRWMTZIOVYxNEgxMk01LDExSDhWMTNINVYxMU01LDE2VjE0SDhWMTZINU04LDIxSDdWMTlIOFYyMU0xMywyMUgxMFYxOUgxM1YyMU0xNiwxNkgxM1YxNEgxNlYxNk0xNiwxM0gxM1YxMUgxNlYxM00xNiwxMEgxM1Y4SDE2VjEwTTE2LDZINVY0SDE2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9rZWJhbGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMiw0QzcuOTIsNCA0LjU1LDcuMDUgNC4wNiwxMUg4LjEzQzguNTcsOS4yNyAxMC4xNCw4IDEyLDhDMTMuODYsOCAxNS40Myw5LjI3IDE1Ljg3LDExSDE5Ljk0QzE5LjQ1LDcuMDUgMTYuMDgsNCAxMiw0TTEyLDIwQzE2LjA4LDIwIDE5LjQ1LDE2Ljk1IDE5Ljk0LDEzSDE1Ljg3QzE1LjQzLDE0LjczIDEzLjg2LDE2IDEyLDE2QzEwLjE0LDE2IDguNTcsMTQuNzMgOC4xMywxM0g0LjA2QzQuNTUsMTYuOTUgNy45MiwyMCAxMiwyME0xMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkEyLDIgMCAwLDAgMTIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9rZW1vbkdvID0gXCJNMTIsMkE3LDcgMCAwLDEgMTksOUMxOSwxMC40IDE4LjU5LDExLjcxIDE3Ljg4LDEyLjhMMTIsMjIuMjFMNi4xMiwxMi44QzUuNDEsMTEuNzEgNSwxMC40IDUsOUE3LDcgMCAwLDEgMTIsMk0xMiwzLjVDOS4zLDMuNSA3LjA2LDUuNDQgNi41OSw4SDkuMTdDOS41OCw2LjgzIDEwLjY5LDYgMTIsNkMxMy4zMSw2IDE0LjQyLDYuODMgMTQuODMsOEgxNy40MUMxNi45NCw1LjQ0IDE0LjcsMy41IDEyLDMuNU0xMiwxMkMxMC42OSwxMiA5LjU4LDExLjE3IDkuMTcsMTBINi41OUM2LjcyLDEwLjY5IDYuOTcsMTEuMzQgNy4zNCwxMS45MVYxMS45MUw3LjM4LDEyQzguMzYsMTMuNSAxMC4wNiwxNC41IDEyLDE0LjVDMTMuOTQsMTQuNSAxNS42NCwxMy41IDE2LjYyLDEyTDE2LjY2LDExLjkxVjExLjkxQzE3LjAzLDExLjM0IDE3LjI4LDEwLjY5IDE3LjQxLDEwSDE0LjgzQzE0LjQyLDExLjE3IDEzLjMxLDEyIDEyLDEyTTEyLDcuNUExLjUsMS41IDAgMCwwIDEwLjUsOUExLjUsMS41IDAgMCwwIDEyLDEwLjVBMS41LDEuNSAwIDAsMCAxMy41LDlBMS41LDEuNSAwIDAsMCAxMiw3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9rZXJDaGlwID0gXCJNMjMsMTJDMjMsMTguMDggMTguMDgsMjMgMTIsMjNDNS45MiwyMyAxLDE4LjA4IDEsMTJDMSw1LjkyIDUuOTIsMSAxMiwxQzE4LjA4LDEgMjMsNS45MiAyMywxMk0xMyw0LjA2QzE1LjEzLDQuMzMgMTcuMDcsNS40NSAxOC4zNyw3LjE2TDIwLjExLDYuMTZDMTguNDUsMy44MiAxNS44NiwyLjMgMTMsMlY0LjA2TTMuODksNi4xNkw1LjYzLDcuMTZDNi45Myw1LjQ1IDguODcsNC4zMyAxMSw0LjA2VjJDOC4xNCwyLjMgNS41NSwzLjgyIDMuODksNi4xNk0yLjg5LDE2LjFMNC42MiwxNS4xQzMuNzksMTMuMTIgMy43OSwxMC44OCA0LjYyLDguOUwyLjg5LDcuOUMxLjcsMTAuNSAxLjcsMTMuNSAyLjg5LDE2LjFNMTEsMTkuOTRDOC44NywxOS42NyA2LjkzLDE4LjU1IDUuNjMsMTYuODRMMy44OSwxNy44NEM1LjU1LDIwLjE4IDguMTQsMjEuNyAxMSwyMlYxOS45NE0yMC4xMSwxNy44NEwxOC4zNywxNi44NEMxNy4wNywxOC41NSAxNS4xMywxOS42NyAxMywxOS45NFYyMS45NEMxNS44NSwyMS42NSAxOC40NCwyMC4xNiAyMC4xMSwxNy44NE0yMS4xMSwxNi4xQzIyLjMsMTMuNSAyMi4zLDEwLjUgMjEuMTEsNy45TDE5LjM4LDguOUMyMC4yMSwxMC44OCAyMC4yMSwxMy4xMiAxOS4zOCwxNS4xTDIxLjExLDE2LjFNMTUsMTJMMTIsN0w5LDEyTDEyLDE3TDE1LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGFyb2lkID0gXCJNNiwzSDE4QTIsMiAwIDAsMSAyMCw1VjE5QTIsMiAwIDAsMSAxOCwyMUg2QTIsMiAwIDAsMSA0LDE5VjVBMiwyIDAgMCwxIDYsM002LDVWMTdIMThWNUg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGljZUJhZGdlID0gXCJNMjIgNEwyMCAyQzE4Ljg1IDIuNjQgMTcuNCAzIDE2IDNDMTQuNiAzIDEzLjE0IDIuNjMgMTIgMkMxMC44NiAyLjYzIDkuNCAzIDggM0M2LjYgMyA1LjE1IDIuNjQgNCAyTDIgNEMyIDQgNCA2IDQgOFMyIDE0IDIgMTZDMiAyMCAxMiAyMiAxMiAyMlMyMiAyMCAyMiAxNkMyMiAxNCAyMCAxMCAyMCA4UzIyIDQgMjIgNE0xNS4wNSAxNi40NUwxMS45NyAxNC41OUw4LjkgMTYuNDVMOS43MiAxMi45NUw3IDEwLjYxTDEwLjU4IDEwLjNMMTEuOTcgN0wxMy4zNyAxMC4yOUwxNi45NSAxMC42TDE0LjIzIDEyLjk0TDE1LjA1IDE2LjQ1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGljZUJhZGdlT3V0bGluZSA9IFwiTTEyIDQuMjFDMTMuMjQgNC43MiAxNC42NSA1IDE2IDVDMTcuMDUgNSAxOC4xIDQuODQgMTkuMDggNC41NEMxOC41IDUuNSAxOCA2LjcxIDE4IDhDMTggOS4zMiAxOC41NCAxMC45MyAxOS4xIDEyLjYzQzE5LjUgMTMuODMgMjAgMTUuMzMgMjAgMTZDMjAgMTcuMDMgMTYuNDcgMTkgMTIgMTkuOTZDNy41NCAxOSA0IDE3LjAzIDQgMTZDNCAxNS4zMyA0LjUgMTMuODMgNC45IDEyLjYzQzUuNDYgMTAuOTMgNiA5LjMyIDYgOEM2IDYuNzEgNS41IDUuNSA0LjkyIDQuNTRDNS45IDQuODQgNi45NiA1IDggNUM5LjM1IDUgMTAuNzYgNC43MiAxMiA0LjIxTTIwIDJDMTguODUgMi42NCAxNy40IDMgMTYgM0MxNC42IDMgMTMuMTQgMi42MyAxMiAyQzEwLjg2IDIuNjMgOS40IDMgOCAzQzYuNiAzIDUuMTUgMi42NCA0IDJMMiA0QzIgNCA0IDYgNCA4UzIgMTQgMiAxNkMyIDIwIDEyIDIyIDEyIDIyUzIyIDIwIDIyIDE2QzIyIDE0IDIwIDEwIDIwIDhTMjIgNCAyMiA0TDIwIDJNMTUuMDUgMTYuNDVMMTEuOTcgMTQuNTlMOC45IDE2LjQ1TDkuNzIgMTIuOTVMNyAxMC42MUwxMC41OCAxMC4zTDExLjk3IDdMMTMuMzcgMTAuMjlMMTYuOTUgMTAuNkwxNC4yMyAxMi45NEwxNS4wNSAxNi40NVwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbGwgPSBcIk0zLDIyVjhIN1YyMkgzTTEwLDIyVjJIMTRWMjJIMTBNMTcsMjJWMTRIMjFWMjJIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9sbEJveCA9IFwiTTE3LDE3SDE1VjEzSDE3TTEzLDE3SDExVjdIMTNNOSwxN0g3VjEwSDlNMTksM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9sbEJveE91dGxpbmUgPSBcIk05IDE3SDdWMTBIOU0xMyAxN0gxMVY3SDEzTTE3IDE3SDE1VjEzSDE3TTE5LjUgMTkuMUg0LjVWNUgxOS41TTE5LjUgM0g0LjVDMy40IDMgMi41IDMuOSAyLjUgNVYxOUMyLjUgMjAuMSAzLjQgMjEgNC41IDIxSDE5LjVDMjAuNiAyMSAyMS41IDIwLjEgMjEuNSAxOVY1QzIxLjUgMy45IDIwLjYgMyAxOS41IDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9sbyA9IFwiTTIyIDkuNUMyMiAxMC44OCAyMC44OCAxMiAxOS41IDEyUzE3IDEwLjg4IDE3IDkuNSAxOC4xMiA3IDE5LjUgNyAyMiA4LjEyIDIyIDkuNU0xMSAxN1YzSDhWMTdIMkw2IDIxSDEzVjE3SDExTTE2IDE3SDE0VjIxSDE2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvbHltZXIgPSBcIk0xOSw0SDE1TDcuMSwxNi42M0w0LjUsMTJMOSw0SDVMMC41LDEyTDUsMjBIOUwxNi44OSw3LjM3TDE5LjUsMTJMMTUsMjBIMTlMMjMuNSwxMkwxOSw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvb2wgPSBcIk0yLDE1QzMuNjcsMTQuMjUgNS4zMywxMy41IDcsMTMuMTdWNUEzLDMgMCAwLDEgMTAsMkMxMS4zMSwyIDEyLjQyLDIuODMgMTIuODMsNEgxMEExLDEgMCAwLDAgOSw1VjZIMTRWNUEzLDMgMCAwLDEgMTcsMkMxOC4zMSwyIDE5LjQyLDIuODMgMTkuODMsNEgxN0ExLDEgMCAwLDAgMTYsNVYxNC45NEMxOCwxNC42MiAyMCwxMyAyMiwxM1YxNUMxOS43OCwxNSAxNy41NiwxNyAxNS4zMywxN0MxMy4xMSwxNyAxMC44OSwxNSA4LjY3LDE1QzYuNDQsMTUgNC4yMiwxNiAyLDE3VjE1TTE0LDhIOVYxMEgxNFY4TTE0LDEySDlWMTNDMTAuNjcsMTMuMTYgMTIuMzMsMTQuMzEgMTQsMTQuNzlWMTJNMiwxOUM0LjIyLDE4IDYuNDQsMTcgOC42NywxN0MxMC44OSwxNyAxMy4xMSwxOSAxNS4zMywxOUMxNy41NiwxOSAxOS43OCwxNyAyMiwxN1YxOUMxOS43OCwxOSAxNy41NiwyMSAxNS4zMywyMUMxMy4xMSwyMSAxMC44OSwxOSA4LjY3LDE5QzYuNDQsMTkgNC4yMiwyMCAyLDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvcGNvcm4gPSBcIk03LDIySDQuNzVDNC43NSwyMiA0LDIyIDMuODEsMjAuNjVMMi4wNCwzLjgxTDIsMy41QzIsMi42NyAyLjksMiA0LDJDNS4xLDIgNiwyLjY3IDYsMy41QzYsMi42NyA2LjksMiA4LDJDOS4xLDIgMTAsMi42NyAxMCwzLjVDMTAsMi42NyAxMC45LDIgMTIsMkMxMy4wOSwyIDE0LDIuNjYgMTQsMy41VjMuNUMxNCwyLjY3IDE0LjksMiAxNiwyQzE3LjEsMiAxOCwyLjY3IDE4LDMuNUMxOCwyLjY3IDE4LjksMiAyMCwyQzIxLjEsMiAyMiwyLjY3IDIyLDMuNUwyMS45NiwzLjgxTDIwLjE5LDIwLjY1QzIwLDIyIDE5LjI1LDIyIDE5LjI1LDIySDE3TDE2LjUsMjJIMTMuNzVMMTAuMjUsMjJINy41TDcsMjJNMTcuODUsNC45M0MxNy41NSw0LjM5IDE2Ljg0LDQgMTYsNEMxNS4xOSw0IDE0LjM2LDQuMzYgMTQsNC44N0wxMy43OCwyMEgxNi42NkwxNy44NSw0LjkzTTEwLDQuODdDOS42NCw0LjM2IDguODEsNCA4LDRDNy4xNiw0IDYuNDUsNC4zOSA2LjE1LDQuOTNMNy4zNCwyMEgxMC4yMkwxMCw0Ljg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvc3QgPSBcIk0zIDNWMjFIMjFWM0gzTTE4IDE4SDZWMTdIMThWMThNMTggMTZINlYxNUgxOFYxNk0xOCAxMkg2VjZIMThWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG9zdE91dGxpbmUgPSBcIk0xOSA1VjE5SDVWNUgxOU0yMSAzSDNWMjFIMjFWM00xNyAxN0g3VjE2SDE3VjE3TTE3IDE1SDdWMTRIMTdWMTVNMTcgMTJIN1Y3SDE3VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvc3RhZ2VTdGFtcCA9IFwiTTIsMlY1LjVDMy4xLDUuNSA0LDYuNjIgNCw4QzQsOS4zOCAzLjEsMTAuNSAyLDEwLjVWMTMuNUMzLjEsMTMuNSA0LDE0LjYyIDQsMTZDNCwxNy4zOCAzLjEsMTguNSAyLDE4LjVWMjJINS41QzUuNSwyMC45IDYuNjIsMjAgOCwyMEM5LjM4LDIwIDEwLjUsMjAuOSAxMC41LDIySDEzLjVDMTMuNSwyMC45IDE0LjYyLDIwIDE2LDIwQzE3LjM4LDIwIDE4LjUsMjAuOSAxOC41LDIySDIyVjE4LjVDMjAuOSwxOC41IDIwLDE3LjM4IDIwLDE2VjE2QzIwLDE0LjYyIDIwLjksMTMuNSAyMiwxMy41VjEwLjVDMjAuOSwxMC41IDIwLDkuMzggMjAsOFY4QzIwLDYuNjIgMjAuOSw1LjUgMjIsNS41VjJIMTguNUMxOC41LDMuMSAxNy4zOCw0IDE2LDRDMTQuNjIsNCAxMy41LDMuMSAxMy41LDJIMTAuNUMxMC41LDMuMSA5LjM4LDQgOCw0QzYuNjIsNCA1LjUsMy4xIDUuNSwySDJNNiw2SDE4VjE4SDZWNk05LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSwxMUEyLDIgMCAwLDAgMTEsOUEyLDIgMCAwLDAgOSw3TTE3LDEwTDE0LDEzTDEyLDEyTDcsMTdIMTdWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG90ID0gXCJNMTkgMTlDMTkgMjAuMSAxOC4xIDIxIDE3IDIxSDdDNS45IDIxIDUgMjAuMSA1IDE5VjEySDNWMTBIMjFWMTJIMTlWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG90TWl4ID0gXCJNMTQuNiA5TDE4IDMuMUwxOS43IDQuMUwxNi45IDlIMTQuNk0xNCAxMEgzVjEySDVWMTlDNSAyMC4xIDUuOSAyMSA3IDIxSDE3QzE4LjEgMjEgMTkgMjAuMSAxOSAxOVYxMkgyMVYxMEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3RNaXhPdXRsaW5lID0gXCJNMTQuNiA5TDE4IDMuMUwxOS43IDQuMUwxNi45IDlIMTQuNk0xNi4zIDEwSDIxVjEySDE5VjE5QzE5IDIwLjEgMTguMSAyMSAxNyAyMUg3QzUuOSAyMSA1IDIwLjEgNSAxOVYxMkgzVjEwSDE2LjNNMTcgMTJIN1YxOUgxN1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3RPdXRsaW5lID0gXCJNMyAxMFYxMkg1VjE5QzUgMjAuMSA1LjkgMjEgNyAyMUgxN0MxOC4xIDIxIDE5IDIwLjEgMTkgMTlWMTJIMjFWMTBIM003IDEySDE3VjE5SDdWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG90U3RlYW0gPSBcIk0xOSAxOUMxOSAyMC4xMSAxOC4xMSAyMSAxNyAyMUg3QzUuOSAyMSA1IDIwLjExIDUgMTlWMTJIM1YxMEgyMVYxMkgxOU04IDEuNUM2LjE1IDEuNSA0LjY1IDMgNC42NSA0Ljg1QzQuNjUgNi43IDYuMTUgOC4yIDggOC4ySDkuNTNDOS45MiA4LjIgMTAuMjkgOC4zIDEwLjYxIDguNUgxMi42M0MxMi4wNSA3LjQ1IDEwLjg2IDYuNzUgOS41MyA2Ljc1SDhDNyA2Ljc1IDYuMTUgNS43NyA2LjE1IDQuNzVDNi4xNSAzLjczIDcgMyA4IDNNMTIuODUgMkMxMi44NSAzIDEyIDMuODUgMTEgMy44NVY1LjM1QzEyLjkyIDUuMzUgMTQuNSA2LjcgMTQuODkgOC41SDE2LjQyQzE2LjEyIDYuNjcgMTQuOTYgNS4xNSAxMy4zNSA0LjM4QzEzLjk3IDMuNzcgMTQuMzUgMi45MyAxNC4zNSAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvdFN0ZWFtT3V0bGluZSA9IFwiTTggMS41QzYuMTUgMS41IDQuNjUgMyA0LjY1IDQuODVDNC42NSA2LjcgNi4xNSA4LjIgOCA4LjJIOS41M0M5LjkyIDguMiAxMC4yOSA4LjMgMTAuNjEgOC41SDEyLjYzQzEyLjA1IDcuNDUgMTAuODYgNi43NSA5LjUzIDYuNzVIOEM3IDYuNzUgNi4xNSA1Ljc3IDYuMTUgNC43NUM2LjE1IDMuNzMgNyAzIDggM1YxLjVNMTIuODUgMkMxMi44NSAzIDEyIDMuODUgMTEgMy44NVY1LjM1QzEyLjkyIDUuMzUgMTQuNSA2LjcgMTQuODkgOC41SDE2LjQyQzE2LjEyIDYuNjcgMTQuOTYgNS4xNSAxMy4zNSA0LjM4QzEzLjk3IDMuNzcgMTQuMzUgMi45MyAxNC4zNSAySDEyLjg1TTMgMTBWMTJINVYxOUM1IDIwLjExIDUuOSAyMSA3IDIxSDE3QzE4LjExIDIxIDE5IDIwLjExIDE5IDE5VjEySDIxVjEwSDNNNyAxMkgxN1YxOUg3VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvdW5kID0gXCJNNS40MSwyMUw2LjEyLDE3SDIuMTJMMi40NywxNUg2LjQ3TDcuNTMsOUgzLjUzTDMuODgsN0g3Ljg4TDguNTksM0gxMC41OUw5Ljg4LDdIMTUuODhMMTYuNTksM0gxOC41OUwxNy44OCw3SDIxLjg4TDIxLjUzLDlIMTcuNTNMMTYuNDcsMTVIMjAuNDdMMjAuMTIsMTdIMTYuMTJMMTUuNDEsMjFIMTMuNDFMMTQuMTIsMTdIOC4xMkw3LjQxLDIxSDUuNDFNOS41Myw5TDguNDcsMTVIMTQuNDdMMTUuNTMsOUg5LjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvdW5kQm94ID0gXCJNMyw1QTIsMiAwIDAsMSA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTlBMiwyIDAgMCwxIDE5LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1TTcsMThIOUw5LjM1LDE2SDEzLjM1TDEzLDE4SDE1TDE1LjM1LDE2SDE3LjM1TDE3LjcxLDE0SDE1LjcxTDE2LjQxLDEwSDE4LjQxTDE4Ljc2LDhIMTYuNzZMMTcuMTIsNkgxNS4xMkwxNC43Niw4SDEwLjc2TDExLjEyLDZIOS4xMkw4Ljc2LDhINi43Nkw2LjQxLDEwSDguNDFMNy43MSwxNEg1LjcxTDUuMzUsMTZINy4zNUw3LDE4TTEwLjQxLDEwSDE0LjQxTDEzLjcxLDE0SDkuNzFMMTAuNDEsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG91bmRCb3hPdXRsaW5lID0gXCJNMTkgMTlINVY1SDE5TTE5IDNINUEyIDIgMCAwIDAgMyA1VjE5QTIgMiAwIDAgMCA1IDIxSDE5QTIgMiAwIDAgMCAyMSAxOVY1QTIgMiAwIDAgMCAxOSAzTTcgOUg5LjMxTDkuNjMgNkgxMS42M0wxMS4zMSA5SDEzLjMxTDEzLjYzIDZIMTUuNjNMMTUuMzEgOUgxN1YxMUgxNS4xTDE0LjkgMTNIMTdWMTVIMTQuNjlMMTQuMzcgMThIMTIuMzdMMTIuNjkgMTVIMTAuNjlMMTAuMzcgMThIOC4zN0w4LjY5IDE1SDdWMTNIOC45TDkuMSAxMUg3VjlNMTEuMSAxMUwxMC45IDEzSDEyLjlMMTMuMSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlciA9IFwiTTE2LjU2LDUuNDRMMTUuMTEsNi44OUMxNi44NCw3Ljk0IDE4LDkuODMgMTgsMTJBNiw2IDAgMCwxIDEyLDE4QTYsNiAwIDAsMSA2LDEyQzYsOS44MyA3LjE2LDcuOTQgOC44OCw2Ljg4TDcuNDQsNS40NEM1LjM2LDYuODggNCw5LjI4IDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCw5LjI4IDE4LjY0LDYuODggMTYuNTYsNS40NE0xMywzSDExVjEzSDEzXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJDeWNsZSA9IFwiTTEyLDNBOSw5IDAgMCwwIDMsMTJBOSw5IDAgMCwwIDEyLDIxQTksOSAwIDAsMCAyMSwxMkE5LDkgMCAwLDAgMTIsM00xMiwxOUE3LDcgMCAwLDEgNSwxMkE3LDcgMCAwLDEgMTIsNUE3LDcgMCAwLDEgMTksMTJBNyw3IDAgMCwxIDEyLDE5TTEzLDE3SDExVjdIMTNWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJPZmYgPSBcIk0xMiwzQTksOSAwIDAsMCAzLDEyQTksOSAwIDAsMCAxMiwyMUE5LDkgMCAwLDAgMjEsMTJBOSw5IDAgMCwwIDEyLDNNMTIsMTlBNyw3IDAgMCwxIDUsMTJBNyw3IDAgMCwxIDEyLDVBNyw3IDAgMCwxIDE5LDEyQTcsNyAwIDAsMSAxMiwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlck9uID0gXCJNMTEsM0gxM1YyMUgxMVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyUGx1ZyA9IFwiTTE2LDdWM0gxNFY3SDEwVjNIOFY3SDhDNyw3IDYsOCA2LDlWMTQuNUw5LjUsMThWMjFIMTQuNVYxOEwxOCwxNC41VjlDMTgsOCAxNyw3IDE2LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJQbHVnT2ZmID0gXCJNMjAuODQgMjIuNzNMMTUuMzEgMTcuMkwxNC41IDE4VjIxSDkuNVYxOEw2IDE0LjVWOUM2IDguNyA2LjEgOC40MSA2LjI1IDguMTRMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00xOCAxNC41VjlDMTggOCAxNyA3IDE2IDdWM0gxNFY3SDEwLjJMMTcuODUgMTQuNjVMMTggMTQuNU0xMCAzSDhWNC44TDEwIDYuOFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyUGx1Z09mZk91dGxpbmUgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDYuMjUgOC4xNEM2LjEgOC40MSA2IDguNyA2IDlWMTQuNUw5LjUgMThWMjFIMTQuNVYxOEwxNS4zMSAxNy4yTDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTEzLjA5IDE2LjU5TDEyLjY3IDE3SDExLjMzTDEwLjkyIDE2LjU5TDggMTMuNjdWOS44OUwxMy44OSAxNS43OEwxMy4wOSAxNi41OU0xMi4yIDlMMTAuMiA3SDE0VjNIMTZWN0MxNyA3IDE4IDggMTggOVYxNC41TDE3Ljg1IDE0LjY1TDE2IDEyLjhWOS4wOUMxNiA5LjA2IDE1Ljk1IDkgMTUuOTIgOUgxMi4yTTEwIDYuOEw4IDQuOFYzSDEwVjYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclBsdWdPdXRsaW5lID0gXCJNMTYgN1YzSDE0VjdIMTBWM0g4VjdDNyA3IDYgOCA2IDlWMTQuNUw5LjUgMThWMjFIMTQuNVYxOEwxOCAxNC41VjlDMTggOCAxNyA3IDE2IDdNMTYgMTMuNjdMMTMuMDkgMTYuNTlMMTIuNjcgMTdIMTEuMzNMMTAuOTIgMTYuNTlMOCAxMy42N1Y5LjA5QzggOS4wNiA4LjA2IDkgOC4wOSA5SDE1LjkyQzE1Ljk1IDkgMTYgOS4wNiAxNiA5LjA5VjEzLjY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyU2V0dGluZ3MgPSBcIk0xNSwyNEgxN1YyMkgxNU0xNi41Niw0LjQ0TDE1LjExLDUuODlDMTYuODQsNi45NCAxOCw4LjgzIDE4LDExQTYsNiAwIDAsMSAxMiwxN0E2LDYgMCAwLDEgNiwxMUM2LDguODMgNy4xNiw2Ljk0IDguODgsNS44OEw3LjQ0LDQuNDRDNS4zNiw1Ljg4IDQsOC4yOCA0LDExQTgsOCAwIDAsMCAxMiwxOUE4LDggMCAwLDAgMjAsMTFDMjAsOC4yOCAxOC42NCw1Ljg4IDE2LjU2LDQuNDRNMTMsMkgxMVYxMkgxM00xMSwyNEgxM1YyMkgxMU03LDI0SDlWMjJIN1YyNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclNsZWVwID0gXCJNMTguNzMsMThDMTUuNCwyMS42OSA5LjcxLDIyIDYsMTguNjRDMi4zMywxNS4zMSAyLjA0LDkuNjIgNS4zNyw1LjkzQzYuOSw0LjI1IDksMy4yIDExLjI3LDNDNy45Niw2LjcgOC4yNywxMi4zOSAxMiwxNS43MUMxMy42MywxNy4xOSAxNS43OCwxOCAxOCwxOEMxOC4yNSwxOCAxOC41LDE4IDE4LjczLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVBvd2VyU29ja2V0ID0gXCJNMTUsMTVIMTdWMTFIMTVNNywxNUg5VjExSDdNMTEsMTNIMTNWOUgxMU04LjgzLDdIMTUuMkwxOSwxMC44VjE3SDVWMTAuOE04LDVMMywxMFYxOUgyMVYxMEwxNiw1SDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRBdSA9IFwiTTQuMjIsMkEyLjIyLDIuMjIgMCAwLDAgMiw0LjIyVjE5Ljc4QzIsMjEgMywyMiA0LjIyLDIySDE5Ljc4QTIuMjIsMi4yMiAwIDAsMCAyMiwxOS43OFY0LjIyQzIyLDMgMjEsMiAxOS43OCwySDQuMjJNMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0TTguMjcsNy41NEw2LjI3LDExTDgsMTJMMTAsOC41NEw4LjI3LDcuNTRNMTUuNzMsNy41NEwxNCw4LjU0TDE2LDEyTDE3LjczLDExTDE1LjczLDcuNTRNMTEsMTRWMThIMTNWMTRIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXREZSA9IFwiTTQuMjIgMkEyLjIyIDIuMjIgMCAwIDAgMiA0LjIyVjE5Ljc4QzIgMjEgMyAyMiA0LjIyIDIySDE5Ljc4QTIuMjIgMi4yMiAwIDAgMCAyMiAxOS43OFY0LjIyQzIyIDMgMjEgMiAxOS43OCAySDQuMjJNMTEgNC4wN1Y2SDEzVjQuMDdBOCA4IDAgMCAxIDIwIDEyQTggOCAwIDAgMSAxMyAxOS45M1YxOEgxMVYxOS45M0E4IDggMCAwIDEgNCAxMkE4IDggMCAwIDEgMTEgNC4wN003LjUgMTAuNUExLjUgMS41IDAgMCAwIDYgMTJDNiAxMi44MyA2LjY2IDEzLjUgNy41IDEzLjVBMS41IDEuNSAwIDAgMCA5IDEyQTEuNSAxLjUgMCAwIDAgNy41IDEwLjVNMTYuNSAxMC41QTEuNSAxLjUgMCAwIDAgMTUgMTJBMS41IDEuNSAwIDAgMCAxNi41IDEzLjVBMS41IDEuNSAwIDAgMCAxOCAxMkExLjUgMS41IDAgMCAwIDE2LjUgMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclNvY2tldEV1ID0gXCJNNy41LDEwLjVBMS41LDEuNSAwIDAsMSA5LDEyQTEuNSwxLjUgMCAwLDEgNy41LDEzLjVDNi42NiwxMy41IDYsMTIuODMgNiwxMkExLjUsMS41IDAgMCwxIDcuNSwxMC41TTE2LjUsMTAuNUExLjUsMS41IDAgMCwxIDE4LDEyQTEuNSwxLjUgMCAwLDEgMTYuNSwxMy41QTEuNSwxLjUgMCAwLDEgMTUsMTJBMS41LDEuNSAwIDAsMSAxNi41LDEwLjVNNC4yMiwySDE5Ljc4QzIxLDIgMjIsMyAyMiw0LjIyVjE5Ljc4QTIuMjIsMi4yMiAwIDAsMSAxOS43OCwyMkg0LjIyQzMsMjIgMiwyMSAyLDE5Ljc4VjQuMjJBMi4yMiwyLjIyIDAgMCwxIDQuMjIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRGciA9IFwiTTQuMjIgMkEyLjIyIDIuMjIgMCAwIDAgMiA0LjIyVjE5Ljc4QzIgMjEgMyAyMiA0LjIyIDIySDE5Ljc4QTIuMjIgMi4yMiAwIDAgMCAyMiAxOS43OFY0LjIyQzIyIDMgMjEgMiAxOS43OCAySDQuMjJNMTIgNEE4IDggMCAwIDEgMjAgMTJBOCA4IDAgMCAxIDEyIDIwQTggOCAwIDAgMSA0IDEyQTggOCAwIDAgMSAxMiA0TTEyIDZBMS41IDEuNSAwIDAgMCAxMC41IDcuNUExLjUgMS41IDAgMCAwIDEyIDlBMS41IDEuNSAwIDAgMCAxMy41IDcuNUExLjUgMS41IDAgMCAwIDEyIDZNNy41IDEwLjVBMS41IDEuNSAwIDAgMCA2IDEyQzYgMTIuODMgNi42NiAxMy41IDcuNSAxMy41QTEuNSAxLjUgMCAwIDAgOSAxMkExLjUgMS41IDAgMCAwIDcuNSAxMC41TTE2LjUgMTAuNUExLjUgMS41IDAgMCAwIDE1IDEyQTEuNSAxLjUgMCAwIDAgMTYuNSAxMy41QTEuNSAxLjUgMCAwIDAgMTggMTJBMS41IDEuNSAwIDAgMCAxNi41IDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRJdCA9IFwiTTEwLjUgMTYuNUMxMC41IDE1LjY4IDExLjE3IDE1IDEyIDE1QzEyLjgzIDE1IDEzLjUgMTUuNjggMTMuNSAxNi41QzEzLjUgMTcuMzQgMTIuODMgMTggMTIgMThDMTEuMTcgMTggMTAuNSAxNy4zNCAxMC41IDE2LjVNMTAuNSA3LjVDMTAuNSA2LjY3IDExLjE3IDYgMTIgNkMxMi44MyA2IDEzLjUgNi42NyAxMy41IDcuNUMxMy41IDguMzMgMTIuODMgOSAxMiA5QzExLjE3IDkgMTAuNSA4LjMzIDEwLjUgNy41TTQuMjIgMkgxOS43OEMyMSAyIDIyIDMgMjIgNC4yMlYxOS43OEMyMiAyMSAyMSAyMiAxOS43OCAyMkg0LjIyQzMgMjIgMiAyMSAyIDE5Ljc4VjQuMjJDMiAzIDMgMiA0LjIyIDJNMTIgNEM3LjU4IDQgNCA3LjU4IDQgMTJDNCAxNi40MiA3LjU4IDIwIDEyIDIwQzE2LjQyIDIwIDIwIDE2LjQyIDIwIDEyQzIwIDcuNTggMTYuNDIgNCAxMiA0TTEwLjUgMTJDMTAuNSAxMS4xNyAxMS4xNyAxMC41IDEyIDEwLjVDMTIuODMgMTAuNSAxMy41IDExLjE3IDEzLjUgMTJDMTMuNSAxMi44MyAxMi44MyAxMy41IDEyIDEzLjVDMTEuMTcgMTMuNSAxMC41IDEyLjgzIDEwLjUgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRKcCA9IFwiTTEwIDkuNVYxNC41SDhWOS41TTE5Ljc4IDJDMjEgMiAyMiAzIDIyIDQuMjJWMTkuNzhDMjIgMjEgMjEgMjIgMTkuNzggMjJINC4yMkMzIDIyIDIgMjEgMiAxOS43OFY0LjIyQzIgMyAzIDIgNC4yMiAyTTEyIDRDNy41OCA0IDQgNy41OCA0IDEyQzQgMTYuNDIgNy41OCAyMCAxMiAyMEMxNi40MiAyMCAyMCAxNi40MiAyMCAxMkMyMCA3LjU4IDE2LjQyIDQgMTIgNE0xNiA5LjVWMTQuNUgxNFY5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRVayA9IFwiTTQgMkEyIDIgMCAwIDAgMiA0VjIwQTIgMiAwIDAgMCA0IDIySDIwQTIgMiAwIDAgMCAyMiAyMFY0QTIgMiAwIDAgMCAyMCAySDRNNCA0SDIwVjIwSDRWNE0xMSA3VjExSDEzVjdIMTFNNiAxNC43NVYxN0g5LjVWMTQuNzVINk0xNC41IDE0Ljc1VjE3SDE4VjE0Ljc1SDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJTb2NrZXRVcyA9IFwiTTgsN0gxMFYxMkg4VjdNNC4yMiwySDE5Ljc4QzIxLDIgMjIsMyAyMiw0LjIyVjE5Ljc4QTIuMjIsMi4yMiAwIDAsMSAxOS43OCwyMkg0LjIyQzMsMjIgMiwyMSAyLDE5Ljc4VjQuMjJBMi4yMiwyLjIyIDAgMCwxIDQuMjIsMk0xMiw0QTgsOCAwIDAsMCA0LDEyQTgsOCAwIDAsMCAxMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRNMTQsNy41SDE2VjExLjVIMTRWNy41TTEwLjUsMTYuMjVBMS41LDEuNSAwIDAsMSAxMiwxNC43NUExLjUsMS41IDAgMCwxIDEzLjUsMTYuMjVWMTdIMTAuNVYxNi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQb3dlclN0YW5kYnkgPSBcIk0xMywzSDExVjEzSDEzVjNNMTcuODMsNS4xN0wxNi40MSw2LjU5QzE4LjA1LDcuOTEgMTksOS45IDE5LDEyQTcsNyAwIDAsMSAxMiwxOUM4LjE0LDE5IDUsMTUuODggNSwxMkM1LDkuOTEgNS45NSw3LjkxIDcuNTgsNi41OEw2LjE3LDUuMTdDMi4zOCw4LjM5IDEuOTIsMTQuMDcgNS4xNCwxNy44NkM4LjM2LDIxLjY0IDE0LjA0LDIyLjEgMTcuODMsMTguODhDMTkuODUsMTcuMTcgMjEsMTQuNjUgMjEsMTJDMjEsOS4zNyAxOS44NCw2Ljg3IDE3LjgzLDUuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUG93ZXJzaGVsbCA9IFwiTTIxLjgzLDRDMjIuMzIsNCAyMi42Myw0LjQgMjIuNSw0Ljg5TDE5LjM0LDE5LjExQzE5LjIzLDE5LjYgMTguNzUsMjAgMTguMjYsMjBIMi4xN0MxLjY4LDIwIDEuMzcsMTkuNiAxLjUsMTkuMTFMNC42Niw0Ljg5QzQuNzcsNC40IDUuMjUsNCA1Ljc0LDRIMjEuODNNMTUuODMsMTZIMTEuODNDMTEuMzcsMTYgMTEsMTYuMzggMTEsMTYuODRDMTEsMTcuMzEgMTEuMzcsMTcuNjkgMTEuODMsMTcuNjlIMTUuODNDMTYuMywxNy42OSAxNi42OCwxNy4zMSAxNi42OCwxNi44NEMxNi42OCwxNi4zOCAxNi4zLDE2IDE1LjgzLDE2TTUuNzgsMTYuMjhDNS4zOCwxNi41NiA1LjI5LDE3LjExIDUuNTcsMTcuNUM1Ljg1LDE3LjkyIDYuNDEsMTggNi44MSwxNy43M0MxNC4xNiwxMi41NiAxNC4yMSwxMi41IDE0LjI2LDEyLjQ3QzE0LjQ0LDEyLjMxIDE0LjUzLDEyLjA5IDE0LjU0LDExLjg3QzE0LjU1LDExLjY3IDE0LjUsMTEuNSAxNC4zOCwxMS4zMUw5LjQ2LDYuMDNDOS4xMyw1LjY3IDguNTcsNS42NSA4LjIxLDZDNy44NSw2LjMyIDcuODMsNi44OCA4LjE2LDcuMjRMMTIuMzEsMTEuNjhMNS43OCwxNi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQcmVzY3JpcHRpb24gPSBcIk00LDRWMTBMNCwxNEg2VjEwSDhMMTMuNDEsMTUuNDFMOS44MywxOUwxMS4yNCwyMC40MUwxNC44MywxNi44M0wxOC40MSwyMC40MUwxOS44MiwxOUwxNi4yNCwxNS40MUwxOS44MiwxMS44M0wxOC40MSwxMC40MUwxNC44MywxNEwxMC44MywxMEgxMUEzLDMgMCAwLDAgMTQsN0EzLDMgMCAwLDAgMTEsNEg0TTYsNkgxMUExLDEgMCAwLDEgMTIsN0ExLDEgMCAwLDEgMTEsOEg2VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJlc2VudGF0aW9uID0gXCJNMiwzSDEwQTIsMiAwIDAsMSAxMiwxQTIsMiAwIDAsMSAxNCwzSDIyVjVIMjFWMTZIMTUuMjVMMTcsMjJIMTVMMTMuMjUsMTZIMTAuNzVMOSwyMkg3TDguNzUsMTZIM1Y1SDJWM001LDVWMTRIMTlWNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByZXNlbnRhdGlvblBsYXkgPSBcIk0yLDNIMTBBMiwyIDAgMCwxIDEyLDFBMiwyIDAgMCwxIDE0LDNIMjJWNUgyMVYxNkgxNS4yNUwxNywyMkgxNUwxMy4yNSwxNkgxMC43NUw5LDIySDdMOC43NSwxNkgzVjVIMlYzTTUsNVYxNEgxOVY1SDVNMTEuODUsMTEuODVDMTEuNzYsMTEuOTQgMTEuNjQsMTIgMTEuNSwxMkEwLjUsMC41IDAgMCwxIDExLDExLjVWNy41QTAuNSwwLjUgMCAwLDEgMTEuNSw3QzExLjY0LDcgMTEuNzYsNy4wNiAxMS44NSw3LjE1TDEzLjI1LDguNTRDMTMuNTcsOC44NiAxMy44OSw5LjE4IDEzLjg5LDkuNUMxMy44OSw5LjgyIDEzLjU3LDEwLjE0IDEzLjI1LDEwLjQ2TDExLjg1LDExLjg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByZXR6ZWwgPSBcIk01LjE1IDE1Ljg0QzMuODEgMTQuMjcgMyAxMi4yMyAzIDEwVjkuOTdDMyA3LjIyIDUuMjUgNSA4IDVDOS42NCA1IDExLjA5IDUuNzkgMTIgN0MxMi45MSA1Ljc5IDE0LjM3IDUgMTYgNUMxOC43NiA1IDIxIDcuMjQgMjEgMTBDMjEgMTIuMjMgMjAuMTkgMTQuMjcgMTguODUgMTUuODRMMjAuMjEgMTcuMkwxOC43OSAxOC42MUwxNy4zOSAxNy4yMUMxNS44OSAxOC4zMyAxNCAxOSAxMiAxOUMxMCAxOSA4LjExIDE4LjMzIDYuNjEgMTcuMjFMNS4yMSAxOC42MUwzLjc5IDE3LjJMNS4xNSAxNS44NE0xNS45NiAxNS43N0wxMiAxMS44Mkw4LjA0IDE1Ljc3QzkuMTcgMTYuNTUgMTAuNTMgMTcgMTIgMTdDMTMuNDcgMTcgMTQuODMgMTYuNTUgMTUuOTYgMTUuNzdNMTEgMTBDMTEgOC4zNCA5LjY1IDcgOCA3QzYuMzQgNyA1IDguMzQgNSAxMEM1IDExLjY4IDUuNTkgMTMuMjEgNi41NyAxNC40MkwxMSAxME0xNy40MyAxNC40MkMxOC40MSAxMy4yMSAxOSAxMS42OCAxOSAxMFYxMEMxOSA4LjMzIDE3LjY1IDcgMTYgN0MxNC4zNSA3IDEzIDguMzQgMTMgMTBMMTcuNDMgMTQuNDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJpbnRlciA9IFwiTTE4LDNINlY3SDE4TTE5LDEyQTEsMSAwIDAsMSAxOCwxMUExLDEgMCAwLDEgMTksMTBBMSwxIDAgMCwxIDIwLDExQTEsMSAwIDAsMSAxOSwxMk0xNiwxOUg4VjE0SDE2TTE5LDhINUEzLDMgMCAwLDAgMiwxMVYxN0g2VjIxSDE4VjE3SDIyVjExQTMsMyAwIDAsMCAxOSw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXIzZCA9IFwiTTE5LDZBMSwxIDAgMCwwIDIwLDVBMSwxIDAgMCwwIDE5LDRBMSwxIDAgMCwwIDE4LDVBMSwxIDAgMCwwIDE5LDZNMTksMkEzLDMgMCAwLDEgMjIsNVYxMUgxOFY3SDZWMTFIMlY1QTMsMyAwIDAsMSA1LDJIMTlNMTgsMTguMjVDMTgsMTguNjMgMTcuNzksMTguOTYgMTcuNDcsMTkuMTNMMTIuNTcsMjEuODJDMTIuNCwyMS45NCAxMi4yMSwyMiAxMiwyMkMxMS43OSwyMiAxMS41OSwyMS45NCAxMS40MywyMS44Mkw2LjUzLDE5LjEzQzYuMjEsMTguOTYgNiwxOC42MyA2LDE4LjI1VjEzQzYsMTIuNjIgNi4yMSwxMi4yOSA2LjUzLDEyLjEyTDExLjQzLDkuNjhDMTEuNTksOS41NiAxMS43OSw5LjUgMTIsOS41QzEyLjIxLDkuNSAxMi40LDkuNTYgMTIuNTcsOS42OEwxNy40NywxMi4xMkMxNy43OSwxMi4yOSAxOCwxMi42MiAxOCwxM1YxOC4yNU0xMiwxMS42NUw5LjA0LDEzTDEyLDE0LjZMMTQuOTYsMTNMMTIsMTEuNjVNOCwxNy42NkwxMSwxOS4yOVYxNi4zM0w4LDE0LjcxVjE3LjY2TTE2LDE3LjY2VjE0LjcxTDEzLDE2LjMzVjE5LjI5TDE2LDE3LjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXIzZE5venpsZSA9IFwiTTcsMkgxN1Y4SDE5VjEzSDE2LjVMMTMsMTdIMTFMNy41LDEzSDVWOEg3VjJNMTAsMjJIMlYyMEgxMEExLDEgMCAwLDAgMTEsMTlWMThIMTNWMTlBMywzIDAgMCwxIDEwLDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXIzZE5venpsZUFsZXJ0ID0gXCJNNyAySDE3VjhIMTlWMTNIMTYuNUwxMyAxN0gxMUw3LjUgMTNINVY4SDdWMk0xMCAyMkgyVjIwSDEwQzEwLjYgMjAgMTEgMTkuNSAxMSAxOVYxOEgxM1YxOUMxMyAyMC43IDExLjcgMjIgMTAgMjJNMjEgMTNWN0gyM1YxM0gyMU0yMSAxN1YxNUgyM1YxN0gyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyM2ROb3p6bGVBbGVydE91dGxpbmUgPSBcIk03IDJIMTdWN0gxOVYxM0gxNi41TDEzIDE3SDExTDcuNSAxM0g1VjdIN1YyTTEwIDIySDJWMjBIMTBDMTAuNiAyMCAxMSAxOS41IDExIDE5VjE4SDEzVjE5QzEzIDIwLjcgMTEuNyAyMiAxMCAyMk03IDlWMTFIOC41TDEyIDE1TDE1LjUgMTFIMTdWOUgxNVY0SDlWOUg3TTIxIDEzVjdIMjNWMTNIMjFNMjEgMTdWMTVIMjNWMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJpbnRlcjNkTm96emxlT3V0bGluZSA9IFwiTTcsMkgxN1Y3SDE5VjEzSDE2LjVMMTMsMTdIMTFMNy41LDEzSDVWN0g3VjJNMTAsMjJIMlYyMEgxMEExLDEgMCAwLDAgMTEsMTlWMThIMTNWMTlBMywzIDAgMCwxIDEwLDIyTTcsOVYxMUg4LjVMMTIsMTVMMTUuNSwxMUgxN1Y5SDE1VjRIOVY5SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJpbnRlckFsZXJ0ID0gXCJNMTYgM0g0VjdIMTZNMTcgMTJDMTYuNCAxMiAxNiAxMS42IDE2IDExUzE2LjQgMTAgMTcgMTAgMTggMTAuNCAxOCAxMSAxNy42IDEyIDE3IDEyTTE0IDE5SDZWMTRIMTRNMTcgOEgzQzEuMyA4IDAgOS4zIDAgMTFWMTdINFYyMUgxNlYxN0gyMFYxMUMyMCA5LjMgMTguNyA4IDE3IDhNMjQgMTNIMjJWN0gyNFYxM00yNCAxN0gyMlYxNUgyNFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyQ2hlY2sgPSBcIk0xOCA3SDZWM0gxOFY3TTYgMjFWMTdIMlYxMUMyIDkuMzQgMy4zNCA4IDUgOEgxOUMyMC42NiA4IDIyIDkuMzQgMjIgMTFWMTMuODFDMjEuMTIgMTMuMyAyMC4xIDEzIDE5IDEzQzE3Ljc3IDEzIDE2LjY0IDEzLjM3IDE1LjY5IDE0SDhWMTlIMTNDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMUg2TTE4IDExQzE4IDExLjU1IDE4LjQ1IDEyIDE5IDEyUzIwIDExLjU1IDIwIDExIDE5LjU1IDEwIDE5IDEwIDE4IDEwLjQ1IDE4IDExTTIzLjUgMTdMMjIgMTUuNUwxOC41IDE5TDE2LjUgMTdMMTUgMTguNUwxOC41IDIyTDIzLjUgMTdcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyRXllID0gXCJNOS44IDIxQzkuNiAyMC42IDkuMyAyMC4yIDkuMiAxOS43TDguOCAxOUg4VjE0SDEzQzE0LjIgMTMuNCAxNS42IDEzIDE3IDEzQzE4LjkgMTMgMjAuNiAxMy42IDIyIDE0LjZWMTFDMjIgOS4zIDIwLjcgOCAxOSA4SDVDMy4zIDggMiA5LjMgMiAxMVYxN0g2VjIxSDkuOE0xOSAxMEMxOS42IDEwIDIwIDEwLjQgMjAgMTFTMTkuNiAxMiAxOSAxMiAxOCAxMS42IDE4IDExIDE4LjQgMTAgMTkgMTBNMTggN0g2VjNIMThWN00xNyAxOEMxNy42IDE4IDE4IDE4LjQgMTggMTlTMTcuNiAyMCAxNyAyMCAxNiAxOS42IDE2IDE5IDE2LjQgMTggMTcgMThNMTcgMTVDMTQuMyAxNSAxMS45IDE2LjcgMTEgMTlDMTEuOSAyMS4zIDE0LjMgMjMgMTcgMjNTMjIuMSAyMS4zIDIzIDE5QzIyLjEgMTYuNyAxOS43IDE1IDE3IDE1TTE3IDIxLjVDMTUuNiAyMS41IDE0LjUgMjAuNCAxNC41IDE5UzE1LjYgMTYuNSAxNyAxNi41IDE5LjUgMTcuNiAxOS41IDE5IDE4LjQgMjEuNSAxNyAyMS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXJPZmYgPSBcIk02LDNWNC4xOEw4LjgyLDdIMThWM0g2TTIuMjgsM0wxLDQuMjdMNC43NSw4QzMuMTksOC4xNSAyLDkuNDQgMiwxMVYxN0g2VjIxSDE3LjczTDE5LjczLDIzTDIxLDIxLjcyTDIuMjgsM005LjgyLDhMMTguODIsMTdIMjJWMTFBMywzIDAgMCwwIDE5LDhIOS44Mk0xOSwxMEExLDEgMCAwLDEgMjAsMTFBMSwxIDAgMCwxIDE5LDEyQTEsMSAwIDAsMSAxOCwxMUExLDEgMCAwLDEgMTksMTBNOCwxNEgxMC43M0wxNS43MywxOUg4VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXJQb3MgPSBcIk0xOCAxMEg2QTIgMiAwIDAgMCA0IDEyVjE5SDIwVjEyQTIgMiAwIDAgMCAxOCAxME0xOCAxNEgxNFYxMkgxOE0xNyA5SDdWNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyU2VhcmNoID0gXCJNMjAuMyAxOC45QzIwLjcgMTguMiAyMSAxNy40IDIxIDE2LjVDMjEgMTQgMTkgMTIgMTYuNSAxMlMxMiAxNCAxMiAxNi41IDE0IDIxIDE2LjUgMjFDMTcuNCAyMSAxOC4yIDIwLjggMTguOSAyMC4zTDIyIDIzLjRMMjMuNCAyMkwyMC4zIDE4LjlNMTYuNSAxOUMxNS4xIDE5IDE0IDE3LjkgMTQgMTYuNVMxNS4xIDE0IDE2LjUgMTQgMTkgMTUuMSAxOSAxNi41IDE3LjkgMTkgMTYuNSAxOU0xOCA3SDZWM0gxOFY3TTYgMjFWMTdIMlYxMUMyIDkuMyAzLjMgOCA1IDhIMTlDMjAuNyA4IDIyIDkuMyAyMiAxMVYxM0MyMC44IDExLjIgMTguOCAxMCAxNi41IDEwQzEzLjggMTAgMTEuNSAxMS43IDEwLjUgMTRIOFYxOUgxMC41QzEwLjggMTkuNyAxMS4zIDIwLjQgMTEuOCAyMUg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW50ZXJTZXR0aW5ncyA9IFwiTTE4LDJWNkg2VjJIMThNMTksMTFBMSwxIDAgMCwwIDIwLDEwQTEsMSAwIDAsMCAxOSw5QTEsMSAwIDAsMCAxOCwxMEExLDEgMCAwLDAgMTksMTFNMTYsMThWMTNIOFYxOEgxNk0xOSw3QTMsMyAwIDAsMSAyMiwxMFYxNkgxOFYyMEg2VjE2SDJWMTBBMywzIDAgMCwxIDUsN0gxOU0xNSwyNFYyMkgxN1YyNEgxNU0xMSwyNFYyMkgxM1YyNEgxMU03LDI0VjIySDlWMjRIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcmludGVyV2lyZWxlc3MgPSBcIk00LjkzLDMuOTJMNi4zNCw1LjMzQzkuNDYsMi4yIDE0LjUzLDIuMiAxNy42Niw1LjMzTDE5LjA3LDMuOTJDMTUuMTcsMCA4Ljg0LDAgNC45MywzLjkyTTcuNzYsNi43NUw5LjE3LDguMTZDMTAuNzMsNi42IDEzLjI2LDYuNiAxNC44Myw4LjE2TDE2LjI0LDYuNzVDMTMuOSw0LjQxIDEwLjEsNC40MSA3Ljc2LDYuNzVNMTksMTRBMSwxIDAgMCwxIDE4LDEzQTEsMSAwIDAsMSAxOSwxMkExLDEgMCAwLDEgMjAsMTNBMSwxIDAgMCwxIDE5LDE0TTE2LDIwSDhWMTVIMTZWMjBNMTksMTBINUEzLDMgMCAwLDAgMiwxM1YxOEg2VjIySDE4VjE4SDIyVjEzQTMsMyAwIDAsMCAxOSwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlQcmlvcml0eUhpZ2ggPSBcIk0xNCwxOUgyMlYxN0gxNFYxOU0xNCwxMy41SDIyVjExLjVIMTRWMTMuNU0xNCw4SDIyVjZIMTRWOE0yLDEyLjVDMiw4LjkyIDQuOTIsNiA4LjUsNkg5VjRMMTIsN0w5LDEwVjhIOC41QzYsOCA0LDEwIDQsMTIuNUM0LDE1IDYsMTcgOC41LDE3SDEyVjE5SDguNUM0LjkyLDE5IDIsMTYuMDggMiwxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByaW9yaXR5TG93ID0gXCJNMTQsNUgyMlY3SDE0VjVNMTQsMTAuNUgyMlYxMi41SDE0VjEwLjVNMTQsMTZIMjJWMThIMTRWMTZNMiwxMS41QzIsMTUuMDggNC45MiwxOCA4LjUsMThIOVYyMEwxMiwxN0w5LDE0VjE2SDguNUM2LDE2IDQsMTQgNCwxMS41QzQsOSA2LDcgOC41LDdIMTJWNUg4LjVDNC45Miw1IDIsNy45MiAyLDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvZmVzc2lvbmFsSGV4YWdvbiA9IFwiTTIxLDE2LjVDMjEsMTYuODggMjAuNzksMTcuMjEgMjAuNDcsMTcuMzhMMTIuNTcsMjEuODJDMTIuNDEsMjEuOTQgMTIuMjEsMjIgMTIsMjJDMTEuNzksMjIgMTEuNTksMjEuOTQgMTEuNDMsMjEuODJMMy41MywxNy4zOEMzLjIxLDE3LjIxIDMsMTYuODggMywxNi41VjcuNUMzLDcuMTIgMy4yMSw2Ljc5IDMuNTMsNi42MkwxMS40MywyLjE4QzExLjU5LDIuMDYgMTEuNzksMiAxMiwyQzEyLjIxLDIgMTIuNDEsMi4wNiAxMi41NywyLjE4TDIwLjQ3LDYuNjJDMjAuNzksNi43OSAyMSw3LjEyIDIxLDcuNVYxNi41TTUsOVYxNUg2LjI1VjEzSDdBMiwyIDAgMCwwIDksMTFBMiwyIDAgMCwwIDcsOUg1TTYuMjUsMTJWMTBINi43NUExLDEgMCAwLDEgNy43NSwxMUExLDEgMCAwLDEgNi43NSwxMkg2LjI1TTkuNzUsOVYxNUgxMVYxM0gxMS43NUwxMi40MSwxNUgxMy43M0wxMi45NCwxMi42MUMxMy40MywxMi4yNSAxMy43NSwxMS42NiAxMy43NSwxMUEyLDIgMCAwLDAgMTEuNzUsOUg5Ljc1TTExLDEyVjEwSDExLjVBMSwxIDAgMCwxIDEyLjUsMTFBMSwxIDAgMCwxIDExLjUsMTJIMTFNMTcsOUMxNS42Miw5IDE0LjUsMTAuMzQgMTQuNSwxMkMxNC41LDEzLjY2IDE1LjYyLDE1IDE3LDE1QzE4LjM4LDE1IDE5LjUsMTMuNjYgMTkuNSwxMkMxOS41LDEwLjM0IDE4LjM4LDkgMTcsOU0xNywxMC4yNUMxNy43NiwxMC4yNSAxOC4zOCwxMS4wMyAxOC4zOCwxMkMxOC4zOCwxMi45NyAxNy43NiwxMy43NSAxNywxMy43NUMxNi4yNCwxMy43NSAxNS42MywxMi45NyAxNS42MywxMkMxNS42MywxMS4wMyAxNi4yNCwxMC4yNSAxNywxMC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc0FsZXJ0ID0gXCJNMTMsMlY0QzE3LjM5LDQuNTQgMjAuNSw4LjUzIDE5Ljk2LDEyLjkyQzE5LjUsMTYuNTYgMTYuNjQsMTkuNDMgMTMsMTkuODhWMjEuODhDMTguNSwyMS4yOCAyMi40NSwxNi4zNCAyMS44NSwxMC44NUMyMS4zMyw2LjE5IDE3LjY2LDIuNSAxMywyTTExLDJDOS4wNCwyLjE4IDcuMTksMi45NSA1LjY3LDQuMkw3LjEsNS43NEM4LjIyLDQuODQgOS41Nyw0LjI2IDExLDQuMDZWMi4wNk00LjI2LDUuNjdDMyw3LjE5IDIuMjQsOS4wNCAyLjA1LDExSDQuMDVDNC4yNCw5LjU4IDQuOCw4LjIzIDUuNjksNy4xTDQuMjYsNS42N00yLjA2LDEzQzIuMjYsMTQuOTYgMy4wMywxNi44MSA0LjI3LDE4LjMzTDUuNjksMTYuOUM0LjgxLDE1Ljc3IDQuMjQsMTQuNDIgNC4wNiwxM0gyLjA2TTcuMDYsMTguMzdMNS42NywxOS43NEM3LjE4LDIxIDkuMDQsMjEuNzkgMTEsMjJWMjBDOS41OCwxOS44MiA4LjIzLDE5LjI1IDcuMSwxOC4zN0g3LjA2TTEzLDEzVjdIMTFWMTNIMTNNMTMsMTdWMTVIMTFWMTdIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvZ3Jlc3NDaGVjayA9IFwiTTEzLDIuMDNWMi4wNUwxMyw0LjA1QzE3LjM5LDQuNTkgMjAuNSw4LjU4IDE5Ljk2LDEyLjk3QzE5LjUsMTYuNjEgMTYuNjQsMTkuNSAxMywxOS45M1YyMS45M0MxOC41LDIxLjM4IDIyLjUsMTYuNSAyMS45NSwxMUMyMS41LDYuMjUgMTcuNzMsMi41IDEzLDIuMDNNMTEsMi4wNkM5LjA1LDIuMjUgNy4xOSwzIDUuNjcsNC4yNkw3LjEsNS43NEM4LjIyLDQuODQgOS41Nyw0LjI2IDExLDQuMDZWMi4wNk00LjI2LDUuNjdDMyw3LjE5IDIuMjUsOS4wNCAyLjA1LDExSDQuMDVDNC4yNCw5LjU4IDQuOCw4LjIzIDUuNjksNy4xTDQuMjYsNS42N00xNS41LDguNUwxMC42MiwxMy4zOEw4LjUsMTEuMjZMNy40NCwxMi4zMkwxMC42MiwxNS41TDE2LjU2LDkuNTZMMTUuNSw4LjVNMi4wNiwxM0MyLjI2LDE0Ljk2IDMuMDMsMTYuODEgNC4yNywxOC4zM0w1LjY5LDE2LjlDNC44MSwxNS43NyA0LjI0LDE0LjQyIDQuMDYsMTNIMi4wNk03LjEsMTguMzdMNS42NywxOS43NEM3LjE4LDIxIDkuMDQsMjEuNzkgMTEsMjJWMjBDOS41OCwxOS44MiA4LjIzLDE5LjI1IDcuMSwxOC4zN1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc0Nsb2NrID0gXCJNMTMsMi4wM1YyLjA1TDEzLDQuMDVDMTcuMzksNC41OSAyMC41LDguNTggMTkuOTYsMTIuOTdDMTkuNSwxNi42MSAxNi42NCwxOS41IDEzLDE5LjkzVjIxLjkzQzE4LjUsMjEuMzggMjIuNSwxNi41IDIxLjk1LDExQzIxLjUsNi4yNSAxNy43MywyLjUgMTMsMi4wM00xMSwyLjA2QzkuMDUsMi4yNSA3LjE5LDMgNS42Nyw0LjI2TDcuMSw1Ljc0QzguMjIsNC44NCA5LjU3LDQuMjYgMTEsNC4wNlYyLjA2TTQuMjYsNS42N0MzLDcuMTkgMi4yNSw5LjA0IDIuMDUsMTFINC4wNUM0LjI0LDkuNTggNC44LDguMjMgNS42OSw3LjFMNC4yNiw1LjY3TTIuMDYsMTNDMi4yNiwxNC45NiAzLjAzLDE2LjgxIDQuMjcsMTguMzNMNS42OSwxNi45QzQuODEsMTUuNzcgNC4yNCwxNC40MiA0LjA2LDEzSDIuMDZNNy4xLDE4LjM3TDUuNjcsMTkuNzRDNy4xOCwyMSA5LjA0LDIxLjc5IDExLDIyVjIwQzkuNTgsMTkuODIgOC4yMywxOS4yNSA3LjEsMTguMzdNMTIuNSw3VjEyLjI1TDE3LDE0LjkyTDE2LjI1LDE2LjE1TDExLDEzVjdIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc0Nsb3NlID0gXCJNMTMgMi4wM1Y0LjA1QzE3LjM5IDQuNTkgMjAuNSA4LjU4IDE5Ljk2IDEyLjk3QzE5LjUgMTYuNjEgMTYuNjQgMTkuNSAxMyAxOS45M1YyMS45M0MxOC41IDIxLjM4IDIyLjUgMTYuNSAyMS45NSAxMUMyMS41IDYuMjUgMTcuNzMgMi41IDEzIDIuMDNNMTEgMi4wNkM5LjA1IDIuMjUgNy4xOSAzIDUuNjcgNC4yNkw3LjEgNS43NEM4LjIyIDQuODQgOS41NyA0LjI2IDExIDQuMDZWMi4wNk00LjI2IDUuNjdDMyA3LjE5IDIuMjUgOS4wNCAyLjA1IDExSDQuMDVDNC4yNCA5LjU4IDQuOCA4LjIzIDUuNjkgNy4xTDQuMjYgNS42N00yLjA2IDEzQzIuMjYgMTQuOTYgMy4wMyAxNi44MSA0LjI3IDE4LjMzTDUuNjkgMTYuOUM0LjgxIDE1Ljc3IDQuMjQgMTQuNDIgNC4wNiAxM0gyLjA2TTcuMSAxOC4zN0w1LjY3IDE5Ljc0QzcuMTggMjEgOS4wNCAyMS43OSAxMSAyMlYyMEM5LjU4IDE5LjgyIDguMjMgMTkuMjUgNy4xIDE4LjM3TTE0LjU5IDhMMTIgMTAuNTlMOS40MSA4TDggOS40MUwxMC41OSAxMkw4IDE0LjU5TDkuNDEgMTZMMTIgMTMuNDFMMTQuNTkgMTZMMTYgMTQuNTlMMTMuNDEgMTJMMTYgOS40MUwxNC41OSA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb2dyZXNzRG93bmxvYWQgPSBcIk0xMywyLjAzQzE3LjczLDIuNSAyMS41LDYuMjUgMjEuOTUsMTFDMjIuNSwxNi41IDE4LjUsMjEuMzggMTMsMjEuOTNWMTkuOTNDMTYuNjQsMTkuNSAxOS41LDE2LjYxIDE5Ljk2LDEyLjk3QzIwLjUsOC41OCAxNy4zOSw0LjU5IDEzLDQuMDVWMi4wNUwxMywyLjAzTTExLDIuMDZWNC4wNkM5LjU3LDQuMjYgOC4yMiw0Ljg0IDcuMSw1Ljc0TDUuNjcsNC4yNkM3LjE5LDMgOS4wNSwyLjI1IDExLDIuMDZNNC4yNiw1LjY3TDUuNjksNy4xQzQuOCw4LjIzIDQuMjQsOS41OCA0LjA1LDExSDIuMDVDMi4yNSw5LjA0IDMsNy4xOSA0LjI2LDUuNjdNMi4wNiwxM0g0LjA2QzQuMjQsMTQuNDIgNC44MSwxNS43NyA1LjY5LDE2LjlMNC4yNywxOC4zM0MzLjAzLDE2LjgxIDIuMjYsMTQuOTYgMi4wNiwxM003LjEsMTguMzdDOC4yMywxOS4yNSA5LjU4LDE5LjgyIDExLDIwVjIyQzkuMDQsMjEuNzkgNy4xOCwyMSA1LjY3LDE5Ljc0TDcuMSwxOC4zN00xMiwxNi41TDcuNSwxMkgxMVY4SDEzVjEySDE2LjVMMTIsMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9ncmVzc1F1ZXN0aW9uID0gXCJNMTMgMi4wM1Y0LjA1QzE3LjM5IDQuNTkgMjAuNSA4LjU4IDE5Ljk2IDEyLjk3QzE5LjUgMTYuNjEgMTYuNjQgMTkuNSAxMyAxOS45M1YyMS45M0MxOC41IDIxLjM4IDIyLjUgMTYuNSAyMS45NSAxMUMyMS41IDYuMjUgMTcuNzMgMi41IDEzIDIuMDNNMTEgMi4wNkM5LjA1IDIuMjUgNy4xOSAzIDUuNjcgNC4yNkw3LjEgNS43NEM4LjIyIDQuODQgOS41NyA0LjI2IDExIDQuMDZWMi4wNk00LjI2IDUuNjdDMyA3LjE5IDIuMjUgOS4wNCAyLjA1IDExSDQuMDVDNC4yNCA5LjU4IDQuOCA4LjIzIDUuNjkgNy4xTDQuMjYgNS42N00yLjA2IDEzQzIuMjYgMTQuOTYgMy4wMyAxNi44MSA0LjI3IDE4LjMzTDUuNjkgMTYuOUM0LjgxIDE1Ljc3IDQuMjQgMTQuNDIgNC4wNiAxM0gyLjA2TTcuMSAxOC4zN0w1LjY3IDE5Ljc0QzcuMTggMjEgOS4wNCAyMS43OSAxMSAyMlYyMEM5LjU4IDE5LjgyIDguMjMgMTkuMjUgNy4xIDE4LjM3TTIwIDRINDRNMTMgMThIMTFWMTZIMTNWMThNMTMgMTVIMTFDMTEgMTEuNzUgMTQgMTIgMTQgMTBDMTQgOC45IDEzLjEgOCAxMiA4UzEwIDguOSAxMCAxMEg4QzggNy43OSA5Ljc5IDYgMTIgNlMxNiA3Ljc5IDE2IDEwQzE2IDEyLjUgMTMgMTIuNzUgMTMgMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvZ3Jlc3NVcGxvYWQgPSBcIk0xMywyLjAzQzE3LjczLDIuNSAyMS41LDYuMjUgMjEuOTUsMTFDMjIuNSwxNi41IDE4LjUsMjEuMzggMTMsMjEuOTNWMTkuOTNDMTYuNjQsMTkuNSAxOS41LDE2LjYxIDE5Ljk2LDEyLjk3QzIwLjUsOC41OCAxNy4zOSw0LjU5IDEzLDQuMDVWMi4wNUwxMywyLjAzTTExLDIuMDZWNC4wNkM5LjU3LDQuMjYgOC4yMiw0Ljg0IDcuMSw1Ljc0TDUuNjcsNC4yNkM3LjE5LDMgOS4wNSwyLjI1IDExLDIuMDZNNC4yNiw1LjY3TDUuNjksNy4xQzQuOCw4LjIzIDQuMjQsOS41OCA0LjA1LDExSDIuMDVDMi4yNSw5LjA0IDMsNy4xOSA0LjI2LDUuNjdNMi4wNiwxM0g0LjA2QzQuMjQsMTQuNDIgNC44MSwxNS43NyA1LjY5LDE2LjlMNC4yNywxOC4zM0MzLjAzLDE2LjgxIDIuMjYsMTQuOTYgMi4wNiwxM003LjEsMTguMzdDOC4yMywxOS4yNSA5LjU4LDE5LjgyIDExLDIwVjIyQzkuMDQsMjEuNzkgNy4xOCwyMSA1LjY3LDE5Ljc0TDcuMSwxOC4zN00xMiw3LjVMNy41LDEySDExVjE2SDEzVjEySDE2LjVMMTIsNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb2dyZXNzV3JlbmNoID0gXCJNMTMsMi4wM1YyLjA1TDEzLDQuMDVDMTcuMzksNC41OSAyMC41LDguNTggMTkuOTYsMTIuOTdDMTkuNSwxNi42MSAxNi42NCwxOS41IDEzLDE5LjkzVjIxLjkzQzE4LjUsMjEuMzggMjIuNSwxNi41IDIxLjk1LDExQzIxLjUsNi4yNSAxNy43MywyLjUgMTMsMi4wM00xMSwyLjA2QzkuMDUsMi4yNSA3LjE5LDMgNS42Nyw0LjI2TDcuMSw1Ljc0QzguMjIsNC44NCA5LjU3LDQuMjYgMTEsNC4wNlYyLjA2TTQuMjYsNS42N0MzLDcuMTkgMi4yNSw5LjA0IDIuMDUsMTFINC4wNUM0LjI0LDkuNTggNC44LDguMjMgNS42OSw3LjFMNC4yNiw1LjY3TTIuMDYsMTNDMi4yNiwxNC45NiAzLjAzLDE2LjgxIDQuMjcsMTguMzNMNS42OSwxNi45QzQuODEsMTUuNzcgNC4yNCwxNC40MiA0LjA2LDEzSDIuMDZNNy4xLDE4LjM3TDUuNjcsMTkuNzRDNy4xOCwyMSA5LjA0LDIxLjc5IDExLDIyVjIwQzkuNTgsMTkuODIgOC4yMywxOS4yNSA3LjEsMTguMzdNMTYuODIsMTUuMTlMMTIuNzEsMTEuMDhDMTMuMTIsMTAuMDQgMTIuODksOC44MiAxMi4wMyw3Ljk3QzExLjEzLDcuMDYgOS43OCw2Ljg4IDguNjksNy4zOEwxMC42Myw5LjMyTDkuMjgsMTAuNjhMNy4yOSw4LjczQzYuNzUsOS44MiA3LDExLjE3IDcuODgsMTIuMDhDOC43NCwxMi45NCA5Ljk2LDEzLjE2IDExLDEyLjc2TDE1LjExLDE2Ljg2QzE1LjI5LDE3LjA1IDE1LjU2LDE3LjA1IDE1Ljc0LDE2Ljg2TDE2Ljc4LDE1LjgzQzE3LDE1LjY1IDE3LDE1LjMzIDE2LjgyLDE1LjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb2plY3RvciA9IFwiTTE2LDZDMTQuODcsNiAxMy43Nyw2LjM1IDEyLjg0LDdINEMyLjg5LDcgMiw3Ljg5IDIsOVYxNUMyLDE2LjExIDIuODksMTcgNCwxN0g1VjE4QTEsMSAwIDAsMCA2LDE5SDhBMSwxIDAgMCwwIDksMThWMTdIMTVWMThBMSwxIDAgMCwwIDE2LDE5SDE4QTEsMSAwIDAsMCAxOSwxOFYxN0gyMEMyMS4xMSwxNyAyMiwxNi4xMSAyMiwxNVY5QzIyLDcuODkgMjEuMTEsNyAyMCw3SDE5LjE1QzE4LjIzLDYuMzUgMTcuMTMsNiAxNiw2TTE2LDcuNUEzLjUsMy41IDAgMCwxIDE5LjUsMTFBMy41LDMuNSAwIDAsMSAxNiwxNC41QTMuNSwzLjUgMCAwLDEgMTIuNSwxMUEzLjUsMy41IDAgMCwxIDE2LDcuNU00LDlIOFYxMEg0VjlNMTYsOUEyLDIgMCAwLDAgMTQsMTFBMiwyIDAgMCwwIDE2LDEzQTIsMiAwIDAsMCAxOCwxMUEyLDIgMCAwLDAgMTYsOU00LDExSDhWMTJINFYxMU00LDEzSDhWMTRINFYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9qZWN0b3JTY3JlZW4gPSBcIk00LDJBMSwxIDAgMCwwIDMsM1Y0QTEsMSAwIDAsMCA0LDVINVYxNEgxMVYxNi41OUw2Ljc5LDIwLjc5TDguMjEsMjIuMjFMMTEsMTkuNDFWMjJIMTNWMTkuNDFMMTUuNzksMjIuMjFMMTcuMjEsMjAuNzlMMTMsMTYuNTlWMTRIMTlWNUgyMEExLDEgMCAwLDAgMjEsNFYzQTEsMSAwIDAsMCAyMCwySDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvamVjdG9yU2NyZWVuT3V0bGluZSA9IFwiTTIwIDJINEMzLjQ1IDIgMyAyLjQ1IDMgM1Y0QzMgNC41NSAzLjQ1IDUgNCA1SDVWMTRIMTFWMTYuNTlMNi43OSAyMC43OUw4LjIxIDIyLjIxTDExIDE5LjQxVjIySDEzVjE5LjQxTDE1Ljc5IDIyLjIxTDE3LjIxIDIwLjc5TDEzIDE2LjU5VjE0SDE5VjVIMjBDMjAuNTUgNSAyMSA0LjU1IDIxIDRWM0MyMSAyLjQ1IDIwLjU1IDIgMjAgMk0xNyAxMkg3VjVIMTdWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHJvcGFuZVRhbmsgPSBcIk0xNiA2SDE2VjRDMTYgMi45IDE1LjExIDIgMTQgMkgxMEM4LjkgMiA4IDIuOSA4IDRWNkg4QzUuNzkgNiA0IDcuNzkgNCAxMFYxN0M0IDE4Ljg2IDUuMjggMjAuNDEgNyAyMC44NlYyMkgxN1YyMC44NkMxOC43MiAyMC40MiAyMCAxOC44NiAyMCAxN1YxMEMyMCA3Ljc5IDE4LjIxIDYgMTYgNk0xMCA0SDE0VjZIMTBWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQcm9wYW5lVGFua091dGxpbmUgPSBcIk0xNiA2VjRDMTYgMi45IDE1LjExIDIgMTQgMkgxMEM4LjkgMiA4IDIuOSA4IDRWNkM1Ljc5IDYgNCA3Ljc5IDQgMTBWMTdDNCAxOC44NiA1LjI4IDIwLjQxIDcgMjAuODZWMjJIMTdWMjAuODZDMTguNzIgMjAuNDIgMjAgMTguODYgMjAgMTdWMTBDMjAgNy43OSAxOC4yMSA2IDE2IDZNMTAgNEgxNFY2SDEwVjRNMTggMTdDMTggMTguMSAxNy4xIDE5IDE2IDE5SDhDNi45IDE5IDYgMTguMSA2IDE3VjEwQzYgOC45IDYuOSA4IDggOEgxNkMxNy4xIDggMTggOC45IDE4IDEwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVByb3RvY29sID0gXCJNMTggMjBIMTRMMTggNEgyMk0xNiA0SDEyTDggMjBIMTJNMiAxNi41QTIuNSAyLjUgMCAwIDAgNC41IDE5QTIuNSAyLjUgMCAwIDAgNyAxNi41QTIuNSAyLjUgMCAwIDAgNC41IDE0QTIuNSAyLjUgMCAwIDAgMiAxNi41TTIgOS41QTIuNSAyLjUgMCAwIDAgNC41IDEyQTIuNSAyLjUgMCAwIDAgNyA5LjVBMi41IDIuNSAwIDAgMCA0LjUgN0EyLjUgMi41IDAgMCAwIDIgOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1Ymxpc2ggPSBcIk01LDRWNkgxOVY0SDVNNSwxNEg5VjIwSDE1VjE0SDE5TDEyLDdMNSwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlQdWxzZSA9IFwiTTMsMTNINS43OUwxMC4xLDQuNzlMMTEuMjgsMTMuNzVMMTQuNSw5LjY2TDE3LjgzLDEzSDIxVjE1SDE3TDE0LjY3LDEyLjY3TDkuOTIsMTguNzNMOC45NCwxMS4zMUw3LDE1SDNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHVtcCA9IFwiTTIgMjFWMTVIMy41QzMuMTggMTQuMDYgMyAxMy4wNSAzIDEyQzMgNy4wMyA3LjAzIDMgMTIgM0gyMlY5SDIwLjVDMjAuODIgOS45NCAyMSAxMC45NSAyMSAxMkMyMSAxNi45NyAxNi45NyAyMSAxMiAyMUgyTTUgMTJDNSAxMy4yOCA1LjM0IDE0LjQ3IDUuOTQgMTUuNUw5LjQgMTMuNUM5LjE1IDEzLjA2IDkgMTIuNTUgOSAxMkM5IDExLjM1IDkuMjEgMTAuNzUgOS41NiAxMC4yNkw2LjMgNy45M0M1LjUgOS4wOCA1IDEwLjUgNSAxMk0xMiAxOUMxNC41OSAxOSAxNi44NSAxNy41OSAxOC4wNiAxNS41TDE0LjYgMTMuNUMxNC4wOCAxNC40IDEzLjExIDE1IDEyIDE1TDExLjcxIDE1TDExLjMzIDE4Ljk3TDEyIDE5TTEyIDlDMTMuMjEgOSAxNC4yNiA5LjcyIDE0LjczIDEwLjc2TDE4LjM3IDkuMUMxNy4yNyA2LjY4IDE0LjgzIDUgMTIgNVY5TTEyIDExQzExLjQ1IDExIDExIDExLjQ1IDExIDEyQzExIDEyLjU1IDExLjQ1IDEzIDEyIDEzQzEyLjU1IDEzIDEzIDEyLjU1IDEzIDEyQzEzIDExLjQ1IDEyLjU1IDExIDEyIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1bXBraW4gPSBcIk02LjUsNkM3LjQ3LDYgOC4zNyw2LjUgOS4xMSw3LjM4QzkuNjYsNi43OSAxMC4zMSw2LjM2IDExLDYuMTVWNEEyLDIgMCAwLDEgMTMsMkgxNVY0SDEzVjYuMTVDMTMuNjksNi4zNiAxNC4zNCw2Ljc5IDE0Ljg5LDcuMzhDMTUuNjMsNi41IDE2LjUzLDYgMTcuNSw2QzIwLDYgMjIsOS4zNiAyMiwxMy41QzIyLDE3LjY0IDIwLDIxIDE3LjUsMjFDMTYuNTMsMjEgMTUuNjMsMjAuNSAxNC44OSwxOS42MkMxNC4wOCwyMC41IDEzLjA4LDIxIDEyLDIxQzEwLjkyLDIxIDkuOTIsMjAuNSA5LjExLDE5LjYyQzguMzcsMjAuNSA3LjQ3LDIxIDYuNSwyMUM0LDIxIDIsMTcuNjQgMiwxMy41QzIsOS4zNiA0LDYgNi41LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHVyc2UgPSBcIk0yMiwxOS4xTDIxLDEwLjVBMS42NSwxLjY1IDAgMCwwIDE5LjMsOUgxNlY1TDE0LDNIMTBMOCw1VjlINC43QTEuNjUsMS42NSAwIDAsMCAzLDEwLjVMMiwxOS4xQTEuNzQsMS43NCAwIDAsMCAzLjcsMjFIMjAuM0ExLjc0LDEuNzQgMCAwLDAgMjIsMTkuMU0xMCw1SDE0VjlIMTBcIjtcclxuZXhwb3J0IHZhciBtZGlQdXJzZU91dGxpbmUgPSBcIk0xOSwxMUwyMCwxOUg0TDUsMTFIMTlNMTQsM0gxMEw4LDVWOUg0LjdBMS42NSwxLjY1IDAgMCwwIDMsMTAuNUwyLDE5LjFBMS43NCwxLjc0IDAgMCwwIDMuNywyMUgyMC4zQTEuNzQsMS43NCAwIDAsMCAyMiwxOS4xTDIxLDEwLjVBMS42NSwxLjY1IDAgMCwwIDE5LjMsOUgxNlY1TDE0LDNNMTAsOVY1SDE0VjlcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGUgPSBcIk0yMC41LDExSDE5VjdDMTksNS44OSAxOC4xLDUgMTcsNUgxM1YzLjVBMi41LDIuNSAwIDAsMCAxMC41LDFBMi41LDIuNSAwIDAsMCA4LDMuNVY1SDRBMiwyIDAgMCwwIDIsN1YxMC44SDMuNUM1LDEwLjggNi4yLDEyIDYuMiwxMy41QzYuMiwxNSA1LDE2LjIgMy41LDE2LjJIMlYyMEEyLDIgMCAwLDAgNCwyMkg3LjhWMjAuNUM3LjgsMTkgOSwxNy44IDEwLjUsMTcuOEMxMiwxNy44IDEzLjIsMTkgMTMuMiwyMC41VjIySDE3QTIsMiAwIDAsMCAxOSwyMFYxNkgyMC41QTIuNSwyLjUgMCAwLDAgMjMsMTMuNUEyLjUsMi41IDAgMCwwIDIwLjUsMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlQ2hlY2sgPSBcIk0yMy41IDE3TDE4LjUgMjJMMTUgMTguNUwxNi41IDE3TDE4LjUgMTlMMjIgMTUuNUwyMy41IDE3TTIwLjUgMTFDMjEuODggMTEgMjMgMTIuMTIgMjMgMTMuNUMyMyAxMy44MSAyMi45NCAxNC4xMSAyMi44NCAxNC4zOUMyMS44IDEzLjUgMjAuNDYgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlWMTkuNTRDMTIuNjQgMTguNSAxMS42NSAxNy44IDEwLjUgMTcuOEM5IDE3LjggNy44IDE5IDcuOCAyMC41VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuODkgMi45IDUgNCA1SDhWMy41QzggMi4xMiA5LjEyIC45OTggMTAuNSAuOTk4UzEzIDIuMTIgMTMgMy41VjVIMTdDMTguMSA1IDE5IDUuODkgMTkgN1YxMUgyMC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlQ2hlY2tPdXRsaW5lID0gXCJNMjMuNSAxN0wxOC41IDIyTDE1IDE4LjVMMTYuNSAxN0wxOC41IDE5TDIyIDE1LjVMMjMuNSAxN00yMiAxMy41TDIyIDEzLjhDMjEuMzcgMTMuNDQgMjAuNjcgMTMuMTkgMTkuOTQgMTMuMDdDMTkuNzUgMTIuNDUgMTkuMTggMTIgMTguNSAxMkgxN1Y3SDEyVjUuNUMxMiA0LjY3IDExLjMzIDQgMTAuNSA0QzkuNjcgNCA5IDQuNjcgOSA1LjVWN0g0TDQgOS4xMkM1Ljc2IDkuOCA3IDExLjUgNyAxMy41QzcgMTUuNSA1Ljc1IDE3LjIgNCAxNy44OFYyMEg2LjEyQzYuOCAxOC4yNSA4LjUgMTcgMTAuNSAxN0MxMS40NyAxNyAxMi4zNyAxNy4zIDEzLjEyIDE3LjhMMTMgMTlDMTMgMjAuMDkgMTMuMjkgMjEuMTIgMTMuOCAyMkgxMy4yVjIxLjdDMTMuMiAyMC4yMSAxMiAxOSAxMC41IDE5QzkgMTkgNy44IDIwLjIxIDcuOCAyMS43VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjE2LjJIMi4zQzMuNzkgMTYuMiA1IDE1IDUgMTMuNUM1IDEyIDMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMkMxMi4yNiAyIDEzLjcyIDMuMyAxMy45NiA1SDE3QzE4LjEgNSAxOSA1LjkgMTkgN1YxMC4wNEMyMC43IDEwLjI4IDIyIDExLjc0IDIyIDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlRWRpdCA9IFwiTTIxLjA0IDEyLjEzQzIwLjkgMTIuMTMgMjAuNzYgMTIuMTkgMjAuNjUgMTIuM0wxOS42NSAxMy4zTDIxLjcgMTUuMzVMMjIuNyAxNC4zNUMyMi45MiAxNC4xNCAyMi45MiAxMy43OSAyMi43IDEzLjU4TDIxLjQyIDEyLjNDMjEuMzEgMTIuMTkgMjEuMTggMTIuMTMgMjEuMDQgMTIuMTNNMTkuMDcgMTMuODhMMTMgMTkuOTRWMjJIMTUuMDZMMjEuMTIgMTUuOTNMMTkuMDcgMTMuODhNMTkgMTEuMTJMMTEuOTEgMTguMkMxMS41IDE3Ljk1IDExIDE3LjggMTAuNSAxNy44QzkgMTcuOCA3LjggMTkgNy44IDIwLjVWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVIOFYzLjVDOCAyLjEyIDkuMTIgMSAxMC41IDFTMTMgMi4xMiAxMyAzLjVWNUgxN0MxOC4xIDUgMTkgNS44OSAxOSA3VjExLjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZUVkaXRPdXRsaW5lID0gXCJNMjEuMDQgMTIuMTNDMjAuOSAxMi4xMyAyMC43NiAxMi4xOSAyMC42NSAxMi4zTDE5LjY1IDEzLjNMMjEuNyAxNS4zNUwyMi43IDE0LjM1QzIyLjkyIDE0LjE0IDIyLjkyIDEzLjc5IDIyLjcgMTMuNThMMjEuNDIgMTIuM0MyMS4zMSAxMi4xOSAyMS4xOCAxMi4xMyAyMS4wNCAxMi4xM00xOS4wNyAxMy44OEwxMyAxOS45NFYyMkgxNS4wNkwyMS4xMiAxNS45M0wxOS4wNyAxMy44OE0xMS4wNSAxOS4wNkMxMC44NyAxOSAxMC42OSAxOSAxMC41IDE5QzkgMTkgNy44IDIwLjIxIDcuOCAyMS43VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxNi4ySDIuM0MzLjc5IDE2LjIgNSAxNSA1IDEzLjVTMy43OSAxMC44IDIuMyAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVINy4wNEM3LjI4IDMuMyA4Ljc0IDIgMTAuNSAyUzEzLjcyIDMuMyAxMy45NiA1SDE3QzE4LjExIDUgMTkgNS45IDE5IDdWMTAuMDRDMTkuMzYgMTAuMDkgMTkuNjkgMTAuMjEgMjAgMTAuMzZDMTkuNzMgMTAuNSAxOS40NiAxMC42NiAxOS4yNCAxMC44OUwxOC4xMiAxMkgxN1Y3SDEyVjUuNUMxMiA0LjY3IDExLjMzIDQgMTAuNSA0UzkgNC42NyA5IDUuNVY3SDRWOS4xMkM1Ljc2IDkuOCA3IDExLjUgNyAxMy41UzUuNzUgMTcuMiA0IDE3Ljg4VjIwSDYuMTJDNi44IDE4LjI1IDguNSAxNyAxMC41IDE3QzExLjI2IDE3IDEyIDE3LjE4IDEyLjYxIDE3LjVMMTEuMDUgMTkuMDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlSGVhcnQgPSBcIk0xOSAyMi4zTDE4LjQgMjEuOEMxNi40IDE5LjkgMTUgMTguNyAxNSAxNy4yQzE1IDE2IDE2IDE1IDE3LjIgMTVDMTcuOSAxNSAxOC42IDE1LjMgMTkgMTUuOEMxOS40IDE1LjMgMjAuMSAxNSAyMC44IDE1QzIyIDE1IDIzIDE1LjkgMjMgMTcuMkMyMyAxOC43IDIxLjYgMTkuOSAxOS42IDIxLjhMMTkgMjIuM00yMC41IDExSDE5VjdDMTkgNS44OSAxOC4xIDUgMTcgNUgxM1YzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0QzIuOSA1IDIgNS45IDIgN1YxMC44SDMuNUM1IDEwLjggNi4yIDEyIDYuMiAxMy41UzUgMTYuMiAzLjUgMTYuMkgyVjIwQzIgMjEuMTEgMi45IDIyIDQgMjJINy44VjIwLjVDNy44IDE5IDkgMTcuOCAxMC41IDE3LjhDMTEuNDQgMTcuOCAxMi4yNyAxOC4yNyAxMi43NSAxOUgxMy4wOUMxMy4wNCAxOC42NyAxMyAxOC4zNCAxMyAxOEMxMyAxNC42OSAxNS42OSAxMiAxOSAxMkMyMC41NCAxMiAyMS45NCAxMi41OCAyMyAxMy41M0MyMyAxMy41IDIzIDEzLjUgMjMgMTMuNUMyMyAxMi4xMiAyMS44OCAxMSAyMC41IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZUhlYXJ0T3V0bGluZSA9IFwiTTEzLjIgMjJWMjEuN0MxMy4yIDIwLjIxIDEyIDE5IDEwLjUgMTlDOSAxOSA3LjggMjAuMjEgNy44IDIxLjdWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMi4zQzMuNzkgMTYuMiA1IDE1IDUgMTMuNVMzLjc5IDEwLjggMi4zIDEwLjhIMlY3QzIgNS45IDIuOSA1IDQgNUg3LjA0QzcuMjggMy4zIDguNzQgMiAxMC41IDJTMTMuNzIgMy4zIDEzLjk2IDVIMTdDMTguMTEgNSAxOSA1LjkgMTkgN1YxMC4wNEMyMC40NSAxMC4yNSAyMS42MSAxMS4zNCAyMS45MSAxMi43NkMyMS4wNSAxMi4yOCAyMC4wNiAxMiAxOSAxMkMxOC44OSAxMiAxOC43OCAxMiAxOC42NyAxMkMxOC42MSAxMiAxOC41NiAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDMgMTcgMTIuMjkgMTcuMjggMTMgMTcuNzRDMTMgMTcuODMgMTMgMTcuOTEgMTMgMThDMTMgMTkuNTQgMTMuNTggMjAuOTQgMTQuNTQgMjJIMTMuMk0xOSAyMi4zTDE5LjYgMjEuOEMyMS42IDE5LjkgMjMgMTguNyAyMyAxNy4yQzIzIDE1LjkgMjIgMTUgMjAuOCAxNUMyMC4xIDE1IDE5LjQgMTUuMyAxOSAxNS44QzE4LjYgMTUuMyAxNy45IDE1IDE3LjIgMTVDMTYgMTUgMTUgMTYgMTUgMTcuMkMxNSAxOC43IDE2LjQgMTkuOSAxOC40IDIxLjhMMTkgMjIuM1wiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZU1pbnVzID0gXCJNMTMuMDQgMTkuNjFDMTIuNjcgMTguNTUgMTEuNjggMTcuOCAxMC41IDE3LjhDOSAxNy44IDcuOCAxOSA3LjggMjAuNVYyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgzLjVDNSAxNi4yIDYuMiAxNSA2LjIgMTMuNVM1IDEwLjggMy41IDEwLjhIMlY3QzIgNS45IDIuOSA1IDQgNUg4VjMuNUM4IDIuMTIgOS4xMiAxIDEwLjUgMVMxMyAyLjEyIDEzIDMuNVY1SDE3QzE4LjEgNSAxOSA1Ljg5IDE5IDdWMTFIMjAuNUMyMS44OCAxMSAyMyAxMi4xMiAyMyAxMy41QzIzIDEzLjgyIDIyLjk0IDE0LjEyIDIyLjgzIDE0LjM5QzIxLjc5IDEzLjUzIDIwLjQ2IDEzIDE5IDEzQzE1LjY5IDEzIDEzIDE1LjY5IDEzIDE5QzEzIDE5LjIgMTMgMTkuNDEgMTMuMDQgMTkuNjFNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlTWludXNPdXRsaW5lID0gXCJNMTMuMiAyMlYyMS43QzEzLjIgMjAuMjEgMTIgMTkgMTAuNSAxOUM5IDE5IDcuOCAyMC4yMSA3LjggMjEuN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgyLjNDMy43OSAxNi4yIDUgMTUgNSAxMy41UzMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMlMxMy43MiAzLjMgMTMuOTYgNUgxN0MxOC4xMSA1IDE5IDUuOSAxOSA3VjEwLjA0QzIwLjcgMTAuMjggMjIgMTEuNzQgMjIgMTMuNUMyMiAxMy42IDIyIDEzLjcgMjEuOTcgMTMuNzlDMjEuMzUgMTMuNDQgMjAuNjcgMTMuMiAxOS45MyAxMy4wOEMxOS43NSAxMi40NiAxOS4xOCAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDcgMTcgMTIuMzcgMTcuMyAxMy4xMiAxNy44MUMxMy4wNCAxOC4xOSAxMyAxOC41OSAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJIMTMuMk0xNSAxOFYyMEgyM1YxOEgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVPdXRsaW5lID0gXCJNMjIsMTMuNUMyMiwxNS4yNiAyMC43LDE2LjcyIDE5LDE2Ljk2VjIwQTIsMiAwIDAsMSAxNywyMkgxMy4yVjIxLjdBMi43LDIuNyAwIDAsMCAxMC41LDE5QzksMTkgNy44LDIwLjIxIDcuOCwyMS43VjIySDRBMiwyIDAgMCwxIDIsMjBWMTYuMkgyLjNDMy43OSwxNi4yIDUsMTUgNSwxMy41QzUsMTIgMy43OSwxMC44IDIuMywxMC44SDJWN0EyLDIgMCAwLDEgNCw1SDcuMDRDNy4yOCwzLjMgOC43NCwyIDEwLjUsMkMxMi4yNiwyIDEzLjcyLDMuMyAxMy45Niw1SDE3QTIsMiAwIDAsMSAxOSw3VjEwLjA0QzIwLjcsMTAuMjggMjIsMTEuNzQgMjIsMTMuNU0xNywxNUgxOC41QTEuNSwxLjUgMCAwLDAgMjAsMTMuNUExLjUsMS41IDAgMCwwIDE4LjUsMTJIMTdWN0gxMlY1LjVBMS41LDEuNSAwIDAsMCAxMC41LDRBMS41LDEuNSAwIDAsMCA5LDUuNVY3SDRWOS4xMkM1Ljc2LDkuOCA3LDExLjUgNywxMy41QzcsMTUuNSA1Ljc1LDE3LjIgNCwxNy44OFYyMEg2LjEyQzYuOCwxOC4yNSA4LjUsMTcgMTAuNSwxN0MxMi41LDE3IDE0LjIsMTguMjUgMTQuODgsMjBIMTdWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUHV6emxlUGx1cyA9IFwiTTEzLjA0IDE5LjYxQzEyLjY3IDE4LjU1IDExLjY4IDE3LjggMTAuNSAxNy44QzkgMTcuOCA3LjggMTkgNy44IDIwLjVWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVIOFYzLjVDOCAyLjEyIDkuMTIgMSAxMC41IDFTMTMgMi4xMiAxMyAzLjVWNUgxN0MxOC4xIDUgMTkgNS44OSAxOSA3VjExSDIwLjVDMjEuODggMTEgMjMgMTIuMTIgMjMgMTMuNUMyMyAxMy44MiAyMi45NCAxNC4xMiAyMi44MyAxNC4zOUMyMS43OSAxMy41MyAyMC40NiAxMyAxOSAxM0MxNS42OSAxMyAxMyAxNS42OSAxMyAxOUMxMyAxOS4yIDEzIDE5LjQxIDEzLjA0IDE5LjYxTTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVB1enpsZVBsdXNPdXRsaW5lID0gXCJNMTMuMiAyMlYyMS43QzEzLjIgMjAuMjEgMTIgMTkgMTAuNSAxOUM5IDE5IDcuOCAyMC4yMSA3LjggMjEuN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgyLjNDMy43OSAxNi4yIDUgMTUgNSAxMy41UzMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMlMxMy43MiAzLjMgMTMuOTYgNUgxN0MxOC4xMSA1IDE5IDUuOSAxOSA3VjEwLjA0QzIwLjcgMTAuMjggMjIgMTEuNzQgMjIgMTMuNUMyMiAxMy42IDIyIDEzLjcgMjEuOTcgMTMuNzlDMjEuMzUgMTMuNDQgMjAuNjcgMTMuMiAxOS45MyAxMy4wOEMxOS43NSAxMi40NiAxOS4xOCAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDcgMTcgMTIuMzcgMTcuMyAxMy4xMiAxNy44MUMxMy4wNCAxOC4xOSAxMyAxOC41OSAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJIMTMuMk0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNUgxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVSZW1vdmUgPSBcIk0xMy4wNCAxOS42MUMxMi42NyAxOC41NSAxMS42OCAxNy44IDEwLjUgMTcuOEM5IDE3LjggNy44IDE5IDcuOCAyMC41VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxNi4ySDMuNUM1IDE2LjIgNi4yIDE1IDYuMiAxMy41UzUgMTAuOCAzLjUgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDhWMy41QzggMi4xMiA5LjEyIDEgMTAuNSAxUzEzIDIuMTIgMTMgMy41VjVIMTdDMTguMSA1IDE5IDUuODkgMTkgN1YxMUgyMC41QzIxLjg4IDExIDIzIDEyLjEyIDIzIDEzLjVDMjMgMTMuODIgMjIuOTQgMTQuMTIgMjIuODMgMTQuMzlDMjEuNzkgMTMuNTMgMjAuNDYgMTMgMTkgMTNDMTUuNjkgMTMgMTMgMTUuNjkgMTMgMTlDMTMgMTkuMiAxMyAxOS40MSAxMy4wNCAxOS42MU0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVSZW1vdmVPdXRsaW5lID0gXCJNMTMuMiAyMlYyMS43QzEzLjIgMjAuMjEgMTIgMTkgMTAuNSAxOUM5IDE5IDcuOCAyMC4yMSA3LjggMjEuN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBWMTYuMkgyLjNDMy43OSAxNi4yIDUgMTUgNSAxMy41UzMuNzkgMTAuOCAyLjMgMTAuOEgyVjdDMiA1LjkgMi45IDUgNCA1SDcuMDRDNy4yOCAzLjMgOC43NCAyIDEwLjUgMlMxMy43MiAzLjMgMTMuOTYgNUgxN0MxOC4xMSA1IDE5IDUuOSAxOSA3VjEwLjA0QzIwLjcgMTAuMjggMjIgMTEuNzQgMjIgMTMuNUMyMiAxMy42IDIyIDEzLjcgMjEuOTcgMTMuNzlDMjEuMzUgMTMuNDQgMjAuNjcgMTMuMiAxOS45MyAxMy4wOEMxOS43NSAxMi40NiAxOS4xOCAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDcgMTcgMTIuMzcgMTcuMyAxMy4xMiAxNy44MUMxMy4wNCAxOC4xOSAxMyAxOC41OSAxMyAxOUMxMyAyMC4xIDEzLjMgMjEuMTIgMTMuODEgMjJIMTMuMk0yMS4xMiAxNS40NkwxOSAxNy41OUwxNi44OCAxNS40NkwxNS40NyAxNi44OEwxNy41OSAxOUwxNS40NyAyMS4xMkwxNi44OCAyMi41NEwxOSAyMC40MUwyMS4xMiAyMi41NEwyMi41NCAyMS4xMkwyMC40MSAxOUwyMi41NCAxNi44OEwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVTdGFyID0gXCJNMTkgMjAuMDlMMjEuNDUgMjEuNThMMjAuOCAxOC43N0wyMyAxNi44OUwyMC4xMSAxNi42NEwxOSAxNEwxNy44NyAxNi42NEwxNSAxNi44OUwxNy4xOCAxOC43N0wxNi41IDIxLjU4TDE5IDIwLjA5TTIzIDEzLjVDMjMgMTMuNSAyMyAxMy41IDIzIDEzLjUzQzIxLjk0IDEyLjU4IDIwLjU0IDEyIDE5IDEyQzE1LjY5IDEyIDEzIDE0LjY5IDEzIDE4QzEzIDE4LjM0IDEzLjA0IDE4LjY3IDEzLjA5IDE5SDEyLjc1QzEyLjI3IDE4LjI3IDExLjQ0IDE3LjggMTAuNSAxNy44QzkgMTcuOCA3LjggMTkgNy44IDIwLjVWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMy41QzUgMTYuMiA2LjIgMTUgNi4yIDEzLjVTNSAxMC44IDMuNSAxMC44SDJWN0MyIDUuOSAyLjkgNSA0IDVIOFYzLjVDOCAyLjEyIDkuMTIgMSAxMC41IDFTMTMgMi4xMiAxMyAzLjVWNUgxN0MxOC4xIDUgMTkgNS44OSAxOSA3VjExSDIwLjVDMjEuODggMTEgMjMgMTIuMTIgMjMgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlQdXp6bGVTdGFyT3V0bGluZSA9IFwiTTEzLjIgMjJWMjEuN0MxMy4yIDIwLjIxIDEyIDE5IDEwLjUgMTlDOSAxOSA3LjggMjAuMjEgNy44IDIxLjdWMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjE2LjJIMi4zQzMuNzkgMTYuMiA1IDE1IDUgMTMuNVMzLjc5IDEwLjggMi4zIDEwLjhIMlY3QzIgNS45IDIuOSA1IDQgNUg3LjA0QzcuMjggMy4zIDguNzQgMiAxMC41IDJTMTMuNzIgMy4zIDEzLjk2IDVIMTdDMTguMTEgNSAxOSA1LjkgMTkgN1YxMC4wNEMyMC40NSAxMC4yNSAyMS42MSAxMS4zNCAyMS45MSAxMi43NkMyMS4wNSAxMi4yOCAyMC4wNiAxMiAxOSAxMkMxOC44OSAxMiAxOC43OCAxMiAxOC42NyAxMkMxOC42MSAxMiAxOC41NiAxMiAxOC41IDEySDE3VjdIMTJWNS41QzEyIDQuNjcgMTEuMzMgNCAxMC41IDRTOSA0LjY3IDkgNS41VjdINFY5LjEyQzUuNzYgOS44IDcgMTEuNSA3IDEzLjVTNS43NSAxNy4yIDQgMTcuODhWMjBINi4xMkM2LjggMTguMjUgOC41IDE3IDEwLjUgMTdDMTEuNDMgMTcgMTIuMjkgMTcuMjggMTMgMTcuNzRDMTMgMTcuODMgMTMgMTcuOTEgMTMgMThDMTMgMTkuNTQgMTMuNTggMjAuOTQgMTQuNTQgMjJIMTMuMk0xOSAyMC4wOUwxNi41IDIxLjU4TDE3LjE4IDE4Ljc3TDE1IDE2Ljg5TDE3Ljg3IDE2LjY0TDE5IDE0TDIwLjExIDE2LjY0TDIzIDE2Ljg5TDIwLjggMTguNzdMMjEuNDUgMjEuNThMMTkgMjAuMDlcIjtcclxuZXhwb3J0IHZhciBtZGlRaSA9IFwiTTEyLjA5LDYuNTZWMTQuNjRDMTIuMDksMTQuNzIgMTIsMTQuNzkgMTEuOTQsMTQuNzlDOS42MiwxNC43OSA3Ljc1LDEyLjkxIDcuNzUsMTAuNkM3Ljc1LDguMjggOS42Miw2LjQgMTEuOTQsNi40QzEyLDYuNCAxMi4wOSw2LjQ3IDEyLjA5LDYuNTZNMTIuMDksMTcuODZWMjAuMjlDMTIuMDYsMjEuNjkgMTMuMTIsMjIuODcgMTQuNSwyM0MxNC42NiwyMyAxNC43OCwyMi44OSAxNC43OSwyMi43M1Y0LjQ3QzE0Ljc4LDQuMyAxNC42OCw0LjE1IDE0LjUsNC4wOUMxMC45MiwyLjY3IDYuODYsNC40NCA1LjQ0LDguMDNDNCwxMS42MyA1Ljc5LDE1LjY5IDkuMzgsMTcuMTFDMTAuMTYsMTcuNDIgMTEsMTcuNTggMTEuODEsMTcuNkMxMS45NSwxNy41OSAxMi4wNywxNy43MSAxMi4wOCwxNy44N00xNi4xOSw1LjVWMTUuNzJDMTYuMTksMTYgMTYuMTksMTYuMiAxNi40NiwxNlYxNkMxOS40MiwxMy41IDE5LjgxLDkuMDkgMTcuMzMsNi4xM0MxNy4wNyw1LjgxIDE2Ljc3LDUuNSAxNi40Niw1LjI2QzE2LjE5LDUuMDUgMTYuMTksNS4yNiAxNi4xOSw1LjUzTTE0Ljc5LDIuNDNDMTQuNzksMS42NiAxNS40MiwxLjAzIDE2LjE5LDEuMDNDMTYuOTYsMS4wMyAxNy41OSwxLjY2IDE3LjU5LDIuNDNDMTcuNTksMy4yIDE2Ljk2LDMuODMgMTYuMTksMy44M1YzLjgzQzE1LjQyLDMuODMgMTQuNzksMy4yIDE0Ljc5LDIuNDNcIjtcclxuZXhwb3J0IHZhciBtZGlRcWNoYXQgPSBcIk0zLjE4LDEzLjU0QzMuNzYsMTIuMTYgNC41NywxMS4xNCA1LjE3LDEwLjkyQzUuMTYsMTAuMTIgNS4zMSw5LjYyIDUuNTYsOS4yMkM1LjU2LDkuMTkgNS41LDguODYgNS43Miw4LjQ1QzUuODcsNC44NSA4LjIxLDIgMTIsMkMxNS43OSwyIDE4LjEzLDQuODUgMTguMjgsOC40NUMxOC41LDguODYgMTguNDQsOS4xOSAxOC40NCw5LjIyQzE4LjY5LDkuNjIgMTguODQsMTAuMTIgMTguODMsMTAuOTJDMTkuNDMsMTEuMTQgMjAuMjQsMTIuMTYgMjAuODIsMTMuNTVDMjEuNTcsMTUuMzEgMjEuNjksMTcgMjEuMDksMTcuM0MyMC42OCwxNy41IDIwLjAzLDE3IDE5LjQyLDE2LjEyQzE5LjE4LDE3LjEgMTguNTgsMTggMTcuNzMsMTguNzFDMTguNjMsMTkuMDQgMTkuMjEsMTkuNTggMTkuMjEsMjAuMTlDMTkuMjEsMjEuMTkgMTcuNjMsMjIgMTUuNjksMjJDMTMuOTMsMjIgMTIuNSwyMS4zNCAxMi4yMSwyMC41SDExLjc5QzExLjUsMjEuMzQgMTAuMDcsMjIgOC4zMSwyMkM2LjM3LDIyIDQuNzksMjEuMTkgNC43OSwyMC4xOUM0Ljc5LDE5LjU4IDUuMzcsMTkuMDQgNi4yNywxOC43MUM1LjQyLDE4IDQuODIsMTcuMSA0LjU4LDE2LjEyQzMuOTcsMTcgMy4zMiwxNy41IDIuOTEsMTcuM0MyLjMxLDE3IDIuNDMsMTUuMzEgMy4xOCwxMy41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlRcmNvZGUgPSBcIk0zLDExSDVWMTNIM1YxMU0xMSw1SDEzVjlIMTFWNU05LDExSDEzVjE1SDExVjEzSDlWMTFNMTUsMTFIMTdWMTNIMTlWMTFIMjFWMTNIMTlWMTVIMjFWMTlIMTlWMjFIMTdWMTlIMTNWMjFIMTFWMTdIMTVWMTVIMTdWMTNIMTVWMTFNMTksMTlWMTVIMTdWMTlIMTlNMTUsM0gyMVY5SDE1VjNNMTcsNVY3SDE5VjVIMTdNMywzSDlWOUgzVjNNNSw1VjdIN1Y1SDVNMywxNUg5VjIxSDNWMTVNNSwxN1YxOUg3VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXJjb2RlRWRpdCA9IFwiTTUsNUg3VjdINVY1TTEsMUgxMVYxMUgxVjFNMywzVjlIOVYzSDNNNSwxN0g3VjE5SDVWMTdNMSwxM0gxMVYyM0gxVjEzTTMsMTVWMjFIOVYxNUgzTTEzLDEzSDE3VjE1SDE5VjEzSDIzVjE1SDE5VjE3SDIzVjIzSDE5VjIxSDE1VjIzSDEzVjIxSDE1VjE5SDEzVjEzTTIxLDIxVjE5SDE5VjIxSDIxTTE5LDE3SDE3VjE1SDE1VjE5SDE5VjE3TTIyLjcsMy4zNUwyMS43LDQuMzVMMTkuNjUsMi4zNUwyMC42NSwxLjM1QzIwLjg1LDEuMTQgMjEuMTksMS4xMyAyMS40MiwxLjM1TDIyLjcsMi41OEMyMi45MSwyLjc4IDIyLjkyLDMuMTIgMjIuNywzLjM1TTEzLDguOTRMMTkuMDcsMi44OEwyMS4xMiw0LjkzTDE1LjA2LDExSDEzVjguOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXJjb2RlTWludXMgPSBcIk01IDVIN1Y3SDVWNU0xIDFIMTFWMTFIMVYxTTMgM1Y5SDlWM0gzTTUgMTdIN1YxOUg1VjE3TTEgMTNIMTFWMjNIMVYxM00zIDE1VjIxSDlWMTVIM00xMyAxM0gxN1YxNUgxOVYxM0gyM1YxNUgxOVYxN0gyM1YyM0gxOVYyMUgxNVYyM0gxM1YyMUgxNVYxOUgxM1YxM00yMSAyMVYxOUgxOVYyMUgyMU0xOSAxN0gxN1YxNUgxNVYxOUgxOVYxN00xNCA1VjdIMjJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlRcmNvZGVQbHVzID0gXCJNNSA1SDdWN0g1VjVNMSAxSDExVjExSDFWMU0zIDNWOUg5VjNIM001IDE3SDdWMTlINVYxN00xIDEzSDExVjIzSDFWMTNNMyAxNVYyMUg5VjE1SDNNMTMgMTNIMTdWMTVIMTlWMTNIMjNWMTVIMTlWMTdIMjNWMjNIMTlWMjFIMTVWMjNIMTNWMjFIMTVWMTlIMTNWMTNNMjEgMjFWMTlIMTlWMjFIMjFNMTkgMTdIMTdWMTVIMTVWMTlIMTlWMTdNMTcgMlY1SDE0VjdIMTdWMTBIMTlWN0gyMlY1SDE5VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXJjb2RlUmVtb3ZlID0gXCJNNSA1SDdWN0g1VjVNMSAxSDExVjExSDFWMU0zIDNWOUg5VjNIM001IDE3SDdWMTlINVYxN00xIDEzSDExVjIzSDFWMTNNMyAxNVYyMUg5VjE1SDNNMTMgMTNIMTdWMTVIMTlWMTNIMjNWMTVIMTlWMTdIMjNWMjNIMTlWMjFIMTVWMjNIMTNWMjFIMTVWMTlIMTNWMTNNMjEgMjFWMTlIMTlWMjFIMjFNMTkgMTdIMTdWMTVIMTVWMTlIMTlWMTdNMTUuMTcgMS43NkwxMy43NiAzLjE3TDE2LjU5IDZMMTMuNzYgOC44M0wxNS4xNyAxMC4yNEwxOCA3LjQxTDIwLjgzIDEwLjI0TDIyLjI0IDguODNMMTkuNDEgNkwyMi4yNCAzLjE3TDIwLjgzIDEuNzZMMTggNC41OUwxNS4xNyAxLjc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVFyY29kZVNjYW4gPSBcIk00LDRIMTBWMTBINFY0TTIwLDRWMTBIMTRWNEgyME0xNCwxNUgxNlYxM0gxNFYxMUgxNlYxM0gxOFYxMUgyMFYxM0gxOFYxNUgyMFYxOEgxOFYyMEgxNlYxOEgxM1YyMEgxMVYxNkgxNFYxNU0xNiwxNVYxOEgxOFYxNUgxNk00LDIwVjE0SDEwVjIwSDRNNiw2VjhIOFY2SDZNMTYsNlY4SDE4VjZIMTZNNiwxNlYxOEg4VjE2SDZNNCwxMUg2VjEzSDRWMTFNOSwxMUgxM1YxNUgxMVYxM0g5VjExTTExLDZIMTNWMTBIMTFWNk0yLDJWNkgwVjJBMiwyIDAgMCwxIDIsMEg2VjJIMk0yMiwwQTIsMiAwIDAsMSAyNCwyVjZIMjJWMkgxOFYwSDIyTTIsMThWMjJINlYyNEgyQTIsMiAwIDAsMSAwLDIyVjE4SDJNMjIsMjJWMThIMjRWMjJBMiwyIDAgMCwxIDIyLDI0SDE4VjIySDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVF1YWRjb3B0ZXIgPSBcIk01LjUsMUM4LDEgMTAsMyAxMCw1LjVDMTAsNi4zOCA5Ljc1LDcuMiA5LjMxLDcuOUw5LjQxLDhIMTQuNTlMMTQuNjksNy45QzE0LjI1LDcuMiAxNCw2LjM4IDE0LDUuNUMxNCwzIDE2LDEgMTguNSwxQzIxLDEgMjMsMyAyMyw1LjVDMjMsOCAyMSwxMCAxOC41LDEwQzE3LjYyLDEwIDE2LjgsOS43NSAxNi4xLDkuMzFMMTUsMTAuNDFWMTMuNTlMMTYuMSwxNC42OUMxNi44LDE0LjI1IDE3LjYyLDE0IDE4LjUsMTRDMjEsMTQgMjMsMTYgMjMsMTguNUMyMywyMSAyMSwyMyAxOC41LDIzQzE2LDIzIDE0LDIxIDE0LDE4LjVDMTQsMTcuNjIgMTQuMjUsMTYuOCAxNC42OSwxNi4xTDE0LjU5LDE2SDkuNDFMOS4zMSwxNi4xQzkuNzUsMTYuOCAxMCwxNy42MiAxMCwxOC41QzEwLDIxIDgsMjMgNS41LDIzQzMsMjMgMSwyMSAxLDE4LjVDMSwxNiAzLDE0IDUuNSwxNEM2LjM4LDE0IDcuMiwxNC4yNSA3LjksMTQuNjlMOSwxMy41OVYxMC40MUw3LjksOS4zMUM3LjIsOS43NSA2LjM4LDEwIDUuNSwxMEMzLDEwIDEsOCAxLDUuNUMxLDMgMywxIDUuNSwxTTUuNSwzQTIuNSwyLjUgMCAwLDAgMyw1LjVBMi41LDIuNSAwIDAsMCA1LjUsOEEyLjUsMi41IDAgMCwwIDgsNS41QTIuNSwyLjUgMCAwLDAgNS41LDNNNS41LDE2QTIuNSwyLjUgMCAwLDAgMywxOC41QTIuNSwyLjUgMCAwLDAgNS41LDIxQTIuNSwyLjUgMCAwLDAgOCwxOC41QTIuNSwyLjUgMCAwLDAgNS41LDE2TTE4LjUsM0EyLjUsMi41IDAgMCwwIDE2LDUuNUEyLjUsMi41IDAgMCwwIDE4LjUsOEEyLjUsMi41IDAgMCwwIDIxLDUuNUEyLjUsMi41IDAgMCwwIDE4LjUsM00xOC41LDE2QTIuNSwyLjUgMCAwLDAgMTYsMTguNUEyLjUsMi41IDAgMCwwIDE4LjUsMjFBMi41LDIuNSAwIDAsMCAyMSwxOC41QTIuNSwyLjUgMCAwLDAgMTguNSwxNk0zLjkxLDE3LjI1TDUuMDQsMTcuOTFDNS4xNywxNy44MSA1LjMzLDE3Ljc1IDUuNSwxNy43NUEwLjc1LDAuNzUgMCAwLDEgNi4yNSwxOC41TDYuMjQsMTguNkw3LjM3LDE5LjI1TDcuMDksMTkuNzVMNS45NiwxOS4wOUM1LjgzLDE5LjE5IDUuNjcsMTkuMjUgNS41LDE5LjI1QTAuNzUsMC43NSAwIDAsMSA0Ljc1LDE4LjVMNC43NiwxOC40TDMuNjMsMTcuNzVMMy45MSwxNy4yNU0zLjYzLDYuMjVMNC43Niw1LjZMNC43NSw1LjVBMC43NSwwLjc1IDAgMCwxIDUuNSw0Ljc1QzUuNjcsNC43NSA1LjgzLDQuODEgNS45Niw0LjkxTDcuMDksNC4yNUw3LjM3LDQuNzVMNi4yNCw1LjRMNi4yNSw1LjVBMC43NSwwLjc1IDAgMCwxIDUuNSw2LjI1QzUuMzMsNi4yNSA1LjE3LDYuMTkgNS4wNCw2LjA5TDMuOTEsNi43NUwzLjYzLDYuMjVNMTYuOTEsNC4yNUwxOC4wNCw0LjkxQzE4LjE3LDQuODEgMTguMzMsNC43NSAxOC41LDQuNzVBMC43NSwwLjc1IDAgMCwxIDE5LjI1LDUuNUwxOS4yNCw1LjZMMjAuMzcsNi4yNUwyMC4wOSw2Ljc1TDE4Ljk2LDYuMDlDMTguODMsNi4xOSAxOC42Nyw2LjI1IDE4LjUsNi4yNUEwLjc1LDAuNzUgMCAwLDEgMTcuNzUsNS41TDE3Ljc2LDUuNEwxNi42Myw0Ljc1TDE2LjkxLDQuMjVNMTYuNjMsMTkuMjVMMTcuNzUsMTguNUEwLjc1LDAuNzUgMCAwLDEgMTguNSwxNy43NUMxOC42NywxNy43NSAxOC44MywxNy44MSAxOC45NiwxNy45MUwyMC4wOSwxNy4yNUwyMC4zNywxNy43NUwxOS4yNSwxOC41QTAuNzUsMC43NSAwIDAsMSAxOC41LDE5LjI1QzE4LjMzLDE5LjI1IDE4LjE3LDE5LjE5IDE4LjA0LDE5LjA5TDE2LjkxLDE5Ljc1TDE2LjYzLDE5LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVF1YWxpdHlIaWdoID0gXCJNMTQuNSwxMy41SDE2LjVWMTAuNUgxNC41TTE4LDE0QTEsMSAwIDAsMSAxNywxNUgxNi4yNVYxNi41SDE0Ljc1VjE1SDE0QTEsMSAwIDAsMSAxMywxNFYxMEExLDEgMCAwLDEgMTQsOUgxN0ExLDEgMCAwLDEgMTgsMTBNMTEsMTVIOS41VjEzSDcuNVYxNUg2VjlINy41VjExLjVIOS41VjlIMTFNMTksNEg1QzMuODksNCAzLDQuODkgMyw2VjE4QTIsMiAwIDAsMCA1LDIwSDE5QTIsMiAwIDAsMCAyMSwxOFY2QzIxLDQuODkgMjAuMSw0IDE5LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXVhbGl0eUxvdyA9IFwiTTE0LjUsMTMuNUgxNi41VjEwLjVIMTQuNU0xOCwxNEMxOCwxNC42IDE3LjYsMTUgMTcsMTVIMTYuMjVWMTYuNUgxNC43NVYxNUgxNEMxMy40LDE1IDEzLDE0LjYgMTMsMTRWMTBDMTMsOS40IDEzLjQsOSAxNCw5SDE3QzE3LjYsOSAxOCw5LjQgMTgsMTBNMTksNEg1QTIsMiAwIDAsMCAzLDZWMThBMiwyIDAgMCwwIDUsMjBIMTlBMiwyIDAgMCwwIDIxLDE4VjZBMiwyIDAgMCwwIDE5LDRNMTEsMTMuNVYxNUg2VjlINy41VjEzLjVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUXVhbGl0eU1lZGl1bSA9IFwiTTIxLDZWMThBMiwyIDAgMCwxIDE5LDIwSDVBMiwyIDAgMCwxIDMsMThWNkEyLDIgMCAwLDEgNSw0SDE5QTIsMiAwIDAsMSAyMSw2TTEyLDEwQzEyLDkuNSAxMS41LDkgMTEsOUg2LjVDNiw5IDUuNSw5LjUgNS41LDEwVjE1SDdWMTAuNUg4VjE0SDkuNVYxMC41SDEwLjVWMTVIMTJWMTBNMTQuNSw5QTEsMSAwIDAsMCAxMy41LDEwVjE0QTEsMSAwIDAsMCAxNC41LDE1SDE1LjVWMTYuNUgxNi43NVYxNUgxNy41QTEsMSAwIDAsMCAxOC41LDE0VjEwQTEsMSAwIDAsMCAxNy41LDlIMTQuNU0xNSwxMC41SDE3VjEzLjVIMTVWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlRdW9yYSA9IFwiTTE5LjcsMTguOEMyMC4yLDE4LjIgMjAuMSwxNy43IDIwLjEsMTcuN0gyMS42QzIxLjYsMTcuNyAyMS42LDE4LjEgMjEuNSwxOC42QzIxLjQsMTkgMjEuMywxOS4zIDIxLjIsMTkuNkMyMSwyMC4zIDIwLDIxLjEgMjAsMjEuMUMxOC45LDIyIDE3LjcsMjEuOSAxNy43LDIxLjlDMTcuNywyMS45IDE2LjMsMjIuMSAxNS4yLDIxLjRDMTQuMSwyMC43IDEzLjIsMTkuMiAxMy4yLDE5LjJDMTMuMiwxOS4yIDguOCwyMC40IDUuNCwxNy41QzIsMTQuNiAyLjIsMTEuMSAyLjIsMTAuOEMyLjIsMTAuMSAyLjYsMi4zIDEwLjgsMkMxNS42LDEuOCAxOC4yLDQuOCAxOS4yLDcuMkMxOS45LDguOSAxOS45LDEwLjIgMTkuOSwxMC40QzE5LjksMTAuNiAxOS45LDExLjUgMTkuNywxMi40QzE5LjYsMTMuMyAxOS4yLDE0LjMgMTguOSwxNC44QzE4LjYsMTUuMyAxOC4yLDE2IDE3LjcsMTYuNUMxNy4yLDE3LjEgMTYuNiwxNy42IDE2LjUsMTcuN0MxNi41LDE3LjcgMTcuNSwxOC45IDE4LjEsMTkuMUMxOC4zLDE5LjEgMTkuMiwxOS40IDE5LjcsMTguOE0xMi43LDE3LjNDMTIuOCwxNy4yIDEyLjQsMTYuNyAxMi4yLDE2LjRDMTIsMTYuMSAxMi4zLDE2LjUgMTEuNSwxNS40QzExLjIsMTQuOSAxMC44LDE0LjcgMTAuMiwxNC42QzEwLDE0LjYgOS43LDE0LjYgOS41LDE0LjZDOSwxNC42IDguNywxNC43IDguNiwxNC43QzguNiwxNC42IDguNCwxNC40IDguMywxNC4yQzguMiwxNCA4LjIsMTMuNyA4LjIsMTMuN0M4LjIsMTMuNSA5LjcsMTIuOCAxMS40LDEyLjhDMTIuOCwxMi44IDEzLjgsMTMuNiAxNC4yLDE0QzE0LjYsMTQuMyAxNC43LDE0LjcgMTUuMSwxNUMxNS4xLDE1IDE1LjIsMTUgMTUuMiwxNS4xQzE1LjYsMTUuNCAxNi4xLDEyLjEgMTYsOS45QzE1LjksNy43IDE1LjgsNi42IDE1LDUuNUMxNC4zLDQuNSAxMi44LDMuNyAxMS40LDMuN0MxMC43LDMuNyA4LjQsMy44IDcuNCw1LjVDNi4yLDcuNSA2LjQsMTEuMSA2LjQsMTEuMUM2LjQsMTEuMSA2LjEsMTQuMyA3LjgsMTZDOS41LDE3LjcgMTEuMiwxNy40IDEyLDE3LjRMMTIuNywxNy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhYmJpdCA9IFwiTTE4LjA1LDIxTDE1LjMyLDE2LjI2QzE1LjMyLDE0LjUzIDE0LjI1LDEzLjQyIDEyLjk1LDEzLjQyQzEyLjA1LDEzLjQyIDExLjI3LDEzLjkyIDEwLjg3LDE0LjY2QzExLjIsMTQuNDcgMTEuNTksMTQuMzcgMTIsMTQuMzdDMTMuMywxNC4zNyAxNC4zNiwxNS40MyAxNC4zNiwxNi43M0MxNC4zNiwxOC4wNCAxMy4zMSwxOS4xMSAxMiwxOS4xMUgxNS4zVjIxSDYuNzlDNi41NSwyMSA2LjMsMjAuOTEgNi4xMiwyMC43MkM1Ljc1LDIwLjM1IDUuNzUsMTkuNzUgNi4xMiwxOS4zOFYxOS4zOEw2LjYyLDE4Ljg4QzYuMjgsMTguNzMgNiwxOC41IDUuNzIsMTguMjZDNS41LDE4Ljc2IDUsMTkuMTEgNC40MiwxOS4xMUMzLjY0LDE5LjExIDMsMTguNDcgMywxNy42OEMzLDE2LjkgMy42NCwxNi4yNiA0LjQyLDE2LjI2TDQuODksMTYuMzRWMTQuMzdDNC44OSwxMS43NSA3LDkuNjMgOS42Myw5LjYzSDkuNjVDMTEuNzcsOS42NCAxMy40MiwxMC40NyAxMy40Miw5LjE2QzEzLjQyLDguMjMgMTMuNjIsNy44NiAxMy45Niw3LjM0QzEzLjIzLDcgMTIuNCw2Ljc5IDExLjUzLDYuNzlDMTEsNi43OSAxMC41OCw2LjM3IDEwLjU4LDUuODRDMTAuNTgsNS40MSAxMC44Niw1LjA1IDExLjI1LDQuOTNMMTAuNTgsNC44OUMxMC4wNiw0Ljg5IDkuNjMsNC40NyA5LjYzLDMuOTVDOS42MywzLjQyIDEwLjA2LDMgMTAuNTgsM0gxMS41M0MxMy42MywzIDE1LjQ3LDQuMTUgMTYuNDYsNS44NUwxNi43NCw1Ljg0QzE3LjQ1LDUuODQgMTguMTEsNi4wNyAxOC42NSw2LjQ1TDE5LjEsNi44M0MyMS4yNyw4Ljc4IDIxLDEwLjEgMjEsMTAuMTFDMjEsMTEuMzkgMTkuOTQsMTIuNDQgMTguNjUsMTIuNDRMMTguMTYsMTIuMzlWMTIuNDdDMTguMTYsMTMuNTggMTcuNjgsMTQuNTcgMTYuOTMsMTUuMjdMMjAuMjQsMjFIMTguMDVNMTguMTYsNy43NEMxNy42Myw3Ljc0IDE3LjIxLDguMTYgMTcuMjEsOC42OEMxNy4yMSw5LjIxIDE3LjYzLDkuNjMgMTguMTYsOS42M0MxOC42OCw5LjYzIDE5LjExLDkuMjEgMTkuMTEsOC42OEMxOS4xMSw4LjE2IDE4LjY4LDcuNzQgMTguMTYsNy43NFpcIjtcclxuZXhwb3J0IHZhciBtZGlSYWNpbmdIZWxtZXQgPSBcIk0yLjIsMTEuMkMyLDEzLjYgMi43LDE1LjYgNC4yLDE3LjRDNS43LDE5LjIgNy43LDIwIDEwLjEsMjBIMjAuMUMyMC42LDIwIDIxLjEsMTkuOCAyMS41LDE5LjRDMjEuOSwxOSAyMi4xLDE4LjUgMjIuMSwxOFYxNy4yQzIyLjEsMTYuNiAyMiwxNS45IDIxLjksMTVIMTMuN0MxMi43LDE1IDExLjksMTQuNiAxMS4yLDEzLjlDMTAuNSwxMy4yIDEwLjEsMTIuMyAxMC4xLDExLjRDMTAuMSw5LjggMTAuOCw4LjcgMTIuMyw4LjFMMTcuMSw2QzE1LjQsNC44IDEzLjQsNC4xIDExLjEsNEM4LjksMy44IDYuOSw0LjUgNS4xLDUuOUMzLjMsNy4zIDIuNCw5IDIuMiwxMS4yTTEyLjEsMTEuNEMxMi4xLDExLjggMTIuMywxMi4yIDEyLjYsMTIuNUMxMi45LDEyLjggMTMuMywxMyAxMy43LDEzSDIxLjVDMjAuOSwxMC44IDIwLDkgMTguNyw3LjZMMTMuMSw5LjlDMTIuNCwxMC4xIDEyLjEsMTAuNiAxMi4xLDExLjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFjcXVldGJhbGwgPSBcIk0xOC41LDE2QzE5LjksMTYgMjEsMTcuMSAyMSwxOC41QzIxLDE5LjkgMTkuOSwyMSAxOC41LDIxQzE3LjEsMjEgMTYsMTkuOSAxNiwxOC41QzE2LDE3LjEgMTcuMSwxNiAxOC41LDE2TTEwLjUsMUMzLDEgMywzLjcgMyw5LjhDMywxMy4yIDYuNCwxNi45IDksMTguMVYyM0gxMlYxOC4xQzE0LjYsMTYuOSAxOCwxMy4yIDE4LDkuOEMxOCwzLjYgMTgsMSAxMC41LDFNMTUuNCw0LjJDMTUuNyw0LjYgMTUuOCw1LjIgMTUuOSw2SDE1VjMuOEMxNS4yLDMuOSAxNS4zLDQuMSAxNS40LDQuMk0xNiw5LjhDMTYsOS45IDE2LDEwIDE2LDEwSDE1VjdIMTZDMTYsNy44IDE2LDguNyAxNiw5LjhNMTQsMTRIMTFWMTFIMTRWMTRNNywxNFYxMUgxMFYxNEg3TTUsOS44QzUsOC44IDUsNy45IDUsN0g2VjEwSDVDNSw5LjkgNSw5LjggNSw5LjhNNyw3SDEwVjEwSDdWN00xMSwzQzEyLjQsMyAxMy40LDMuMiAxNCwzLjNWNkgxMVYzTTEwLDZIN1YzLjRDNy42LDMuMiA4LjYsMyAxMCwzVjZNMTEsMTBWN0gxNFYxMEgxMU02LDMuOFY2SDUuMUM1LjIsNS4yIDUuMyw0LjYgNS42LDQuMkM1LjcsNC4xIDUuOCw0IDYsMy44TTUuMiwxMUg2VjEyLjdDNS43LDEyLjEgNS40LDExLjYgNS4yLDExTTgsMTVIMTBWMTYuM0w5LjgsMTYuMkM5LjIsMTYgOC42LDE1LjUgOCwxNU0xMS4yLDE2LjNIMTFWMTVIMTNDMTIuNCwxNS41IDExLjgsMTYgMTEuMiwxNi4zTTE1LDEyLjdWMTFIMTUuOEMxNS42LDExLjUgMTUuMywxMi4xIDE1LDEyLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkYXIgPSBcIk0xOS4wNyw0LjkzTDE3LjY2LDYuMzRDMTkuMSw3Ljc5IDIwLDkuNzkgMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQzQsNy45MiA3LjA1LDQuNTYgMTEsNC4wN1Y2LjA5QzguMTYsNi41NyA2LDkuMDMgNiwxMkE2LDYgMCAwLDAgMTIsMThBNiw2IDAgMCwwIDE4LDEyQzE4LDEwLjM0IDE3LjMzLDguODQgMTYuMjQsNy43NkwxNC44Myw5LjE3QzE1LjU1LDkuOSAxNiwxMC45IDE2LDEyQTQsNCAwIDAsMSAxMiwxNkE0LDQgMCAwLDEgOCwxMkM4LDEwLjE0IDkuMjgsOC41OSAxMSw4LjE0VjEwLjI4QzEwLjQsMTAuNjMgMTAsMTEuMjYgMTAsMTJBMiwyIDAgMCwwIDEyLDE0QTIsMiAwIDAsMCAxNCwxMkMxNCwxMS4yNiAxMy42LDEwLjYyIDEzLDEwLjI4VjJIMTJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw5LjI0IDIwLjg4LDYuNzQgMTkuMDcsNC45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpYXRvciA9IFwiTTcuOTUsM0w2LjUzLDUuMTlMNy45NSw3LjRINy45NEw1Ljk1LDEwLjVMNC4yMiw5LjZMNS42NCw3LjM5TDQuMjIsNS4xOUw2LjIyLDIuMDlMNy45NSwzTTEzLjk1LDIuODlMMTIuNTMsNS4xTDEzLjk1LDcuM0wxMy45NCw3LjMxTDExLjk1LDEwLjRMMTAuMjIsOS41TDExLjY0LDcuM0wxMC4yMiw1LjFMMTIuMjIsMkwxMy45NSwyLjg5TTIwLDIuODlMMTguNTYsNS4xTDIwLDcuM1Y3LjMxTDE4LDEwLjRMMTYuMjUsOS41TDE3LjY3LDcuM0wxNi4yNSw1LjFMMTguMjUsMkwyMCwyLjg5TTIsMjJWMTRBMiwyIDAgMCwxIDQsMTJIMjBBMiwyIDAgMCwxIDIyLDE0VjIySDIwVjIwSDRWMjJIMk02LDE0QTEsMSAwIDAsMCA1LDE1VjE3QTEsMSAwIDAsMCA2LDE4QTEsMSAwIDAsMCA3LDE3VjE1QTEsMSAwIDAsMCA2LDE0TTEwLDE0QTEsMSAwIDAsMCA5LDE1VjE3QTEsMSAwIDAsMCAxMCwxOEExLDEgMCAwLDAgMTEsMTdWMTVBMSwxIDAgMCwwIDEwLDE0TTE0LDE0QTEsMSAwIDAsMCAxMywxNVYxN0ExLDEgMCAwLDAgMTQsMThBMSwxIDAgMCwwIDE1LDE3VjE1QTEsMSAwIDAsMCAxNCwxNE0xOCwxNEExLDEgMCAwLDAgMTcsMTVWMTdBMSwxIDAgMCwwIDE4LDE4QTEsMSAwIDAsMCAxOSwxN1YxNUExLDEgMCAwLDAgMTgsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaWF0b3JEaXNhYmxlZCA9IFwiTTIwLDEySDRBMiwyIDAgMCwwIDIsMTRWMjJINFYyMEgyMFYyMkgyMlYxNEEyLDIgMCAwLDAgMjAsMTJNNywxN0ExLDEgMCAwLDEgNiwxOEExLDEgMCAwLDEgNSwxN1YxNUExLDEgMCAwLDEgNiwxNEExLDEgMCAwLDEgNywxNVYxN00xMSwxN0ExLDEgMCAwLDEgMTAsMThBMSwxIDAgMCwxIDksMTdWMTVBMSwxIDAgMCwxIDEwLDE0QTEsMSAwIDAsMSAxMSwxNVYxN00xNSwxN0ExLDEgMCAwLDEgMTQsMThBMSwxIDAgMCwxIDEzLDE3VjE1QTEsMSAwIDAsMSAxNCwxNEExLDEgMCAwLDEgMTUsMTVWMTdNMTksMTdBMSwxIDAgMCwxIDE4LDE4QTEsMSAwIDAsMSAxNywxN1YxNUExLDEgMCAwLDEgMTgsMTRBMSwxIDAgMCwxIDE5LDE1VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlhdG9yT2ZmID0gXCJNMy4yOCwyTDIsMy4yN0w0Ljc3LDYuMDRMNS42NCw3LjM5TDQuMjIsOS42TDUuOTUsMTAuNUw3LjIzLDguNUwxMC43MywxMkg0QTIsMiAwIDAsMCAyLDE0VjIySDRWMjBIMTguNzNMMjAsMjEuMjdWMjJIMjJWMjAuNzNMMjIsMjAuNzJWMjAuNzJMMy4yOCwyTTcsMTdBMSwxIDAgMCwxIDYsMThBMSwxIDAgMCwxIDUsMTdWMTVBMSwxIDAgMCwxIDYsMTRBMSwxIDAgMCwxIDcsMTVWMTdNMTEsMTdBMSwxIDAgMCwxIDEwLDE4QTEsMSAwIDAsMSA5LDE3VjE1QTEsMSAwIDAsMSAxMCwxNEExLDEgMCAwLDEgMTEsMTVWMTdNMTUsMTdBMSwxIDAgMCwxIDE0LDE4QTEsMSAwIDAsMSAxMywxN1YxNUMxMywxNC43OSAxMy4wOCwxNC42MSAxMy4xOCwxNC40NUwxNSwxNi4yN1YxN00xNi4yNSw5LjVMMTcuNjcsNy4zTDE2LjI1LDUuMUwxOC4yNSwyTDIwLDIuODlMMTguNTYsNS4xTDIwLDcuM1Y3LjMxTDE4LDEwLjRMMTYuMjUsOS41TTIyLDE0VjE4LjE4TDE5LDE1LjE4VjE1QTEsMSAwIDAsMCAxOCwxNEMxNy45NSwxNCAxNy45LDE0IDE3Ljg1LDE0LjAzTDE1LjgyLDEySDIwQzIxLjExLDEyIDIyLDEyLjkgMjIsMTRNMTEuNjQsNy4zTDEwLjIyLDUuMUwxMi4yMiwyTDEzLjk1LDIuODlMMTIuNTMsNS4xTDEzLjk1LDcuM0wxMy45NCw3LjMxTDEyLjg0LDlMMTEuNDQsNy42MkwxMS42NCw3LjNNNy41LDMuNjlMNi4xLDIuMjhMNi4yMiwyLjA5TDcuOTUsM0w3LjUsMy42OVpcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpbyA9IFwiTTIwLDZBMiwyIDAgMCwxIDIyLDhWMjBBMiwyIDAgMCwxIDIwLDIySDRBMiwyIDAgMCwxIDIsMjBWOEMyLDcuMTUgMi41Myw2LjQyIDMuMjgsNi4xM0wxNS43MSwxTDE2LjQ3LDIuODNMOC44Myw2SDIwTTIwLDhINFYxMkgxNlYxMEgxOFYxMkgyMFY4TTcsMTRBMywzIDAgMCwwIDQsMTdBMywzIDAgMCwwIDcsMjBBMywzIDAgMCwwIDEwLDE3QTMsMyAwIDAsMCA3LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlvQW0gPSBcIk01LDdBMiwyIDAgMCwwIDMsOVYxN0g1VjEzSDdWMTdIOVY5QTIsMiAwIDAsMCA3LDdINU01LDlIN1YxMUg1VjlNMTMsN0EyLDIgMCAwLDAgMTEsOVYxN0gxM1Y5SDE1VjE2SDE3VjlIMTlWMTdIMjFWOUEyLDIgMCAwLDAgMTksN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpb0ZtID0gXCJNMyw3VjE3SDVWMTNIOFYxMUg1VjlIOVY3SDNNMTMsN0EyLDIgMCAwLDAgMTEsOVYxN0gxM1Y5SDE1VjE2SDE3VjlIMTlWMTdIMjFWOUEyLDIgMCAwLDAgMTksN0gxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpb0hhbmRoZWxkID0gXCJNOSwyQTEsMSAwIDAsMCA4LDNDOCw4LjY3IDgsMTQuMzMgOCwyMEM4LDIxLjExIDguODksMjIgMTAsMjJIMTVDMTYuMTEsMjIgMTcsMjEuMTEgMTcsMjBWOUMxNyw3Ljg5IDE2LjExLDcgMTUsN0gxMFYzQTEsMSAwIDAsMCA5LDJNMTAsOUgxNVYxM0gxMFY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlvT2ZmID0gXCJNMSA0LjI3TDMgNi4yN0MyLjQgNi42MSAyIDcuMjYgMiA4VjIwQzIgMjEuMTEgMi45IDIyIDQgMjJIMTguNzNMMjAuNzMgMjRMMjIgMjIuNzJMMi4yOCAzTDEgNC4yN00yMCA2SDguODNMMTYuNDcgMi44M0wxNS43MSAxTDYuNTkgNC43Nkw5LjgyIDhIMjBWMTJIMThWMTBIMTZWMTJIMTMuODJMMjIgMjAuMThWOEMyMiA2LjkgMjEuMTEgNiAyMCA2TTQgOEg0LjczTDguNzMgMTJINFY4TTcgMTRDOC42NiAxNCAxMCAxNS4zNCAxMCAxN0MxMCAxOC42NiA4LjY2IDIwIDcgMjBDNS4zNCAyMCA0IDE4LjY2IDQgMTdDNCAxNS4zNCA1LjM0IDE0IDcgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9Ub3dlciA9IFwiTTEyLDEwQTIsMiAwIDAsMSAxNCwxMkMxNCwxMi41IDEzLjgyLDEyLjk0IDEzLjUzLDEzLjI5TDE2LjcsMjJIMTQuNTdMMTIsMTQuOTNMOS40MywyMkg3LjNMMTAuNDcsMTMuMjlDMTAuMTgsMTIuOTQgMTAsMTIuNSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTIsOEE0LDQgMCAwLDAgOCwxMkM4LDEyLjUgOC4xLDEzIDguMjgsMTMuNDZMNy40LDE1Ljg2QzYuNTMsMTQuODEgNiwxMy40NyA2LDEyQTYsNiAwIDAsMSAxMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxMy40NyAxNy40NywxNC44MSAxNi42LDE1Ljg2TDE1LjcyLDEzLjQ2QzE1LjksMTMgMTYsMTIuNSAxNiwxMkE0LDQgMCAwLDAgMTIsOE0xMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTQuMzYgNSwxNi41IDYuNjQsMTcuOTRMNS45MiwxOS45NEMzLjU0LDE4LjExIDIsMTUuMjMgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyQzIyLDE1LjIzIDIwLjQ2LDE4LjExIDE4LjA4LDE5Ljk0TDE3LjM2LDE3Ljk0QzE5LDE2LjUgMjAsMTQuMzYgMjAsMTJBOCw4IDAgMCwwIDEyLDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9hY3RpdmUgPSBcIk0xMiwxMEEyLDIgMCAwLDEgMTQsMTJBMiwyIDAgMCwxIDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBNMTIsMjJDMTAuMDUsMjIgOC4yMiwyMS40NCA2LjY5LDIwLjQ3TDEwLDE1LjQ3QzEwLjYsMTUuODEgMTEuMjgsMTYgMTIsMTZDMTIuNzIsMTYgMTMuNCwxNS44MSAxNCwxNS40N0wxNy4zMSwyMC40N0MxNS43OCwyMS40NCAxMy45NSwyMiAxMiwyMk0yLDEyQzIsNy44NiA0LjUsNC4zIDguMTEsMi43OEwxMC4zNCw4LjM2QzguOTYsOSA4LDEwLjM4IDgsMTJIMk0xNiwxMkMxNiwxMC4zOCAxNS4wNCw5IDEzLjY2LDguMzZMMTUuODksMi43OEMxOS41LDQuMyAyMiw3Ljg2IDIyLDEySDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGlvYWN0aXZlT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMSwyMS43MkwxOS43MywyM0wxNy4yNSwyMC41QzE1LjcyLDIxLjQ2IDEzLjkyLDIyIDEyLDIyQzEwLjA1LDIyIDguMjIsMjEuNDQgNi42OSwyMC40N0wxMCwxNS40N0MxMC42LDE1LjgxIDExLjI4LDE2IDEyLDE2QzEyLjIzLDE2IDEyLjQ2LDE2IDEyLjY3LDE1Ljk0TDguMDYsMTEuMzNDOCwxMS41NCA4LDExLjc3IDgsMTJIMkMyLDEwLjA4IDIuNTQsOC4yOCAzLjUsNi43NUwxLDQuMjdNMTIsMTBBMiwyIDAgMCwxIDE0LDEyVjEyLjE3TDExLjgzLDEwSDEyTTguMTEsMi43OEwxMC4yMyw4LjQxTDUuOSw0LjA4QzYuNTcsMy41NiA3LjMyLDMuMTIgOC4xMSwyLjc4TTE2LDEyQzE2LDEwLjM4IDE1LjA0LDkgMTMuNjYsOC4zNkwxNS44OSwyLjc4QzE5LjUsNC4zIDIyLDcuODYgMjIsMTJIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9ib3hCbGFuayA9IFwiTTEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QTgsOCAwIDAsMSAyMCwxMkE4LDggMCAwLDEgMTIsMjBNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9ib3hNYXJrZWQgPSBcIk0xMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNEE4LDggMCAwLDEgMjAsMTJBOCw4IDAgMCwxIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QTUsNSAwIDAsMCAxNywxMkE1LDUgMCAwLDAgMTIsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpb2xvZ3lCb3ggPSBcIk0xOSAzSDVDMy44OSAzIDMgMy44OSAzIDVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIMTlDMjAuMTEgMjEgMjEgMjAuMTEgMjEgMTlWNUMyMSAzLjg5IDIwLjExIDMgMTkgM00xNy4xIDEzSDEzVjE0SDE3QzE3IDE0IDE2Ljk0IDE3IDE1LjUgMTdDMTQuMTUgMTcgMTQuNSAxNS40NyAxMyAxNVYxN0MxMyAxNy41NSAxMi41NSAxOCAxMiAxOFMxMSAxNy41NSAxMSAxN1YxNUM5LjUgMTUuNDcgOS44NSAxNyA4LjUgMTdDNy4wNiAxNyA3IDE0IDcgMTRIMTFWMTNINi45QzYuODUgMTIuNjkgNi44NCAxMi4zNSA2LjggMTJIMTFWMTFINi44MUM2LjgzIDEwLjY3IDYuOTEgMTAuMzMgNyAxMEgxMVY5SDcuMzRDNy41IDguNjUgNy42NSA4LjMxIDcuODMgOEgxMVY3QzExIDYuNDUgMTEuNDUgNiAxMiA2UzEzIDYuNDUgMTMgN1Y4SDE2LjE3QzE2LjM1IDguMzEgMTYuNSA4LjY1IDE2LjY2IDlIMTNWMTBIMTdDMTcuMSAxMC4zMyAxNy4xNyAxMC42NyAxNy4xOSAxMUgxM1YxMkgxNy4yQzE3LjE2IDEyLjM1IDE3LjE1IDEyLjY5IDE3LjEgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFkaW9sb2d5Qm94T3V0bGluZSA9IFwiTTE5IDVWMTlINVY1SDE5TTE5IDNINUMzLjg5IDMgMyAzLjg5IDMgNVYxOUMzIDIwLjExIDMuODkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVY1QzIxIDMuODkgMjAuMTEgMyAxOSAzTTEyIDZDMTIuNTUgNiAxMyA2LjQ1IDEzIDdWOEgxNi4xN0MxNi4zNSA4LjMxIDE2LjUgOC42NSAxNi42NiA5SDEzVjEwSDE3QzE3LjEgMTAuMzMgMTcuMTcgMTAuNjcgMTcuMTkgMTFIMTNWMTJIMTcuMkMxNy4xNiAxMi4zNSAxNy4xNSAxMi42OSAxNy4xIDEzSDEzVjE0SDE3QzE3IDE0IDE2Ljk0IDE3IDE1LjUgMTdDMTQuMTUgMTcgMTQuNSAxNS40NyAxMyAxNVYxN0MxMyAxNy41NSAxMi41NSAxOCAxMiAxOFMxMSAxNy41NSAxMSAxN1YxNUM5LjUgMTUuNDcgOS44NSAxNyA4LjUgMTdDNy4wNiAxNyA3IDE0IDcgMTRIMTFWMTNINi45QzYuODUgMTIuNjkgNi44NCAxMi4zNSA2LjggMTJIMTFWMTFINi44MUM2LjgzIDEwLjY3IDYuOTEgMTAuMzMgNyAxMEgxMVY5SDcuMzRDNy41IDguNjUgNy42NSA4LjMxIDcuODMgOEgxMVY3QzExIDYuNDUgMTEuNDUgNiAxMiA2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhZGl1cyA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTE3LDE1VjEzSDEzLjcyQzEzLjM2LDEzLjYyIDEyLjcxLDE0IDEyLDE0QTIsMiAwIDAsMSAxMCwxMkEyLDIgMCAwLDEgMTIsMTBDMTIuNzEsMTAgMTMuMzYsMTAuMzggMTMuNzIsMTFIMTdWOUwyMCwxMkwxNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSYWRpdXNPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xNiwxNVYxM0gxMy43MkMxMy4zNiwxMy42MiAxMi43MSwxNCAxMiwxNEEyLDIgMCAwLDEgMTAsMTJBMiwyIDAgMCwxIDEyLDEwQzEyLjcxLDEwIDEzLjM2LDEwLjM4IDEzLjcyLDExSDE2VjlMMTksMTJMMTYsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFpbHJvYWRMaWdodCA9IFwiTTE3LjY3LDEwLjVDMTYuNCwxMC41IDE1LjI3LDExLjMgMTQuODUsMTIuNUgxMy4xN1Y3Ljc3TDE2LjY2LDkuODZMMTcuNjYsOC4xNEwxNC4xMSw2TDE3LjY4LDMuODZMMTYuNjgsMi4xNEwxMy4xNyw0LjIzVjJIMTEuMTdWNC4yM0w3LjY4LDIuMTRMNi42OCwzLjg2TDEwLjIzLDZMNi42Niw4LjE0TDcuNjYsOS44NkwxMS4xNyw3Ljc3VjEyLjVIOS41QzguMzYsOS4zMiAzLjY2LDEwLjEzIDMuNjYsMTMuNUMzLjY2LDE2Ljg3IDguMzYsMTcuNjggOS41LDE0LjVIMTEuMTdWMjBBMiwyIDAgMCwwIDkuMTcsMjJIMTUuMTdBMiwyIDAgMCwwIDEzLjE3LDIwVjE0LjVIMTQuODVDMTUuNjYsMTYuOCAxOC43MywxNy4yMiAyMC4xMywxNS4yM0MyMS41MywxMy4yNCAyMC4xLDEwLjUgMTcuNjcsMTAuNU02LjY3LDE0LjVDNS43OCwxNC41IDUuMzMsMTMuNDIgNS45NiwxMi43OUM2LjU5LDEyLjE2IDcuNjcsMTIuNjEgNy42NywxMy41QTEsMSAwIDAsMSA2LjY3LDE0LjVNMTcuNjcsMTQuNUMxNi43OCwxNC41IDE2LjMzLDEzLjQyIDE2Ljk2LDEyLjc5QzE3LjU5LDEyLjE2IDE4LjY3LDEyLjYxIDE4LjY3LDEzLjVBMSwxIDAgMCwxIDE3LjY3LDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmFrZSA9IFwiTTEwLjUgMTcuMDVMOS40MyAxNkwyMi4wNyAzLjM1TDIwLjY2IDEuOTNMOCAxNC41OEw2Ljk1IDEzLjVDNi4xNyAxMi43MyA0LjkgMTIuNzMgNC4xMiAxMy41TDIgMTUuNjRMMi43MSAxNi4zNEw0LjgzIDE0LjIyTDUuNTQgMTQuOTNMMy40MSAxNy4wNUw0LjEyIDE3Ljc2TDYuMjQgMTUuNjRMNi45NSAxNi4zNEw0LjgzIDE4LjQ2TDUuNTQgMTkuMTdMNy42NiAxNy4wNUw4LjM2IDE3Ljc2TDYuMjQgMTkuODhMNi45NSAyMC41OUw5LjA3IDE4LjQ2TDkuNzggMTkuMTdMNy42NiAyMS4yOUw4LjM2IDIyTDEwLjUgMTkuODhDMTEuMjcgMTkuMSAxMS4yNyAxNy44MyAxMC41IDE3LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJhc3BiZXJyeVBpID0gXCJNMjAsOEgyMlYxMEgyMFY4TTQsNUgyMEEyLDIgMCAwLDEgMjIsN0gxOVY5SDVWMTNIOFYxNkgxOVYxN0gyMkEyLDIgMCAwLDEgMjAsMTlIMTZWMjBIMTRWMTlIMTFWMjBIN1YxOUg0QTIsMiAwIDAsMSAyLDE3VjdBMiwyIDAgMCwxIDQsNU0xOSwxNUg5VjEwSDE5VjExSDIyVjEzSDE5VjE1TTEzLDEyVjE0SDE1VjEySDEzTTUsNlY4SDZWNkg1TTcsNlY4SDhWNkg3TTksNlY4SDEwVjZIOU0xMSw2VjhIMTJWNkgxMU0xMyw2VjhIMTRWNkgxM00xNSw2VjhIMTZWNkgxNU0yMCwxNEgyMlYxNkgyMFYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlFbmQgPSBcIk0yMCw5QzE4LjY5LDkgMTcuNTgsOS44MyAxNy4xNywxMUgyVjEzSDE3LjE3QzE3LjU4LDE0LjE3IDE4LjY5LDE1IDIwLDE1QTMsMyAwIDAsMCAyMywxMkEzLDMgMCAwLDAgMjAsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlFbmRBcnJvdyA9IFwiTTEsMTJMNSwxNlYxM0gxNy4xN0MxNy41OCwxNC4xNyAxOC42OSwxNSAyMCwxNUEzLDMgMCAwLDAgMjMsMTJBMywzIDAgMCwwIDIwLDlDMTguNjksOSAxNy41OCw5LjgzIDE3LjE3LDExSDVWOEwxLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJheVN0YXJ0ID0gXCJNNCw5QzUuMzEsOSA2LjQyLDkuODMgNi44MywxMUgyMlYxM0g2LjgzQzYuNDIsMTQuMTcgNS4zMSwxNSA0LDE1QTMsMyAwIDAsMSAxLDEyQTMsMyAwIDAsMSA0LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmF5U3RhcnRBcnJvdyA9IFwiTTIzLDEyTDE5LDE2VjEzSDYuODNDNi40MiwxNC4xNyA1LjMxLDE1IDQsMTVBMywzIDAgMCwxIDEsMTJBMywzIDAgMCwxIDQsOUM1LjMxLDkgNi40Miw5LjgzIDYuODMsMTFIMTlWOEwyMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlTdGFydEVuZCA9IFwiTTQsOUM1LjMxLDkgNi40Miw5LjgzIDYuODMsMTFIMTcuMTdDMTcuNTgsOS44MyAxOC42OSw5IDIwLDlBMywzIDAgMCwxIDIzLDEyQTMsMyAwIDAsMSAyMCwxNUMxOC42OSwxNSAxNy41OCwxNC4xNyAxNy4xNywxM0g2LjgzQzYuNDIsMTQuMTcgNS4zMSwxNSA0LDE1QTMsMyAwIDAsMSAxLDEyQTMsMyAwIDAsMSA0LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmF5U3RhcnRWZXJ0ZXhFbmQgPSBcIk0yMCA5QzE4LjY5IDkgMTcuNTggOS44MyAxNy4xNyAxMUgxNC44MkMxNC40IDkuODQgMTMuMyA5IDEyIDlTOS42IDkuODQgOS4xOCAxMUg2LjgzQzYuNDIgOS44MyA1LjMxIDkgNCA5QzIuMzQgOSAxIDEwLjM0IDEgMTJTMi4zNCAxNSA0IDE1QzUuMzEgMTUgNi40MiAxNC4xNyA2LjgzIDEzSDkuMThDOS42IDE0LjE2IDEwLjcgMTUgMTIgMTVTMTQuNCAxNC4xNiAxNC44MiAxM0gxNy4xN0MxNy41OCAxNC4xNyAxOC42OSAxNSAyMCAxNUMyMS42NiAxNSAyMyAxMy42NiAyMyAxMlMyMS42NiA5IDIwIDlcIjtcclxuZXhwb3J0IHZhciBtZGlSYXlWZXJ0ZXggPSBcIk0yLDExSDkuMTdDOS41OCw5LjgzIDEwLjY5LDkgMTIsOUMxMy4zMSw5IDE0LjQyLDkuODMgMTQuODMsMTFIMjJWMTNIMTQuODNDMTQuNDIsMTQuMTcgMTMuMzEsMTUgMTIsMTVDMTAuNjksMTUgOS41OCwxNC4xNyA5LjE3LDEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVhY3QgPSBcIk0xMiwxMC4xMUMxMy4wMywxMC4xMSAxMy44NywxMC45NSAxMy44NywxMkMxMy44NywxMyAxMy4wMywxMy44NSAxMiwxMy44NUMxMC45NywxMy44NSAxMC4xMywxMyAxMC4xMywxMkMxMC4xMywxMC45NSAxMC45NywxMC4xMSAxMiwxMC4xMU03LjM3LDIwQzgsMjAuMzggOS4zOCwxOS44IDEwLjk3LDE4LjNDMTAuNDUsMTcuNzEgOS45NCwxNy4wNyA5LjQ2LDE2LjRDOC42NCwxNi4zMiA3LjgzLDE2LjIgNy4wNiwxNi4wNEM2LjU1LDE4LjE4IDYuNzQsMTkuNjUgNy4zNywyME04LjA4LDE0LjI2TDcuNzksMTMuNzVDNy42OCwxNC4wNCA3LjU3LDE0LjMzIDcuNSwxNC42MUM3Ljc3LDE0LjY3IDguMDcsMTQuNzIgOC4zOCwxNC43N0M4LjI4LDE0LjYgOC4xOCwxNC40MyA4LjA4LDE0LjI2TTE0LjYyLDEzLjVMMTUuNDMsMTJMMTQuNjIsMTAuNUMxNC4zMiw5Ljk3IDE0LDkuNSAxMy43MSw5LjAzQzEzLjE3LDkgMTIuNiw5IDEyLDlDMTEuNCw5IDEwLjgzLDkgMTAuMjksOS4wM0MxMCw5LjUgOS42OCw5Ljk3IDkuMzgsMTAuNUw4LjU3LDEyTDkuMzgsMTMuNUM5LjY4LDE0LjAzIDEwLDE0LjUgMTAuMjksMTQuOTdDMTAuODMsMTUgMTEuNCwxNSAxMiwxNUMxMi42LDE1IDEzLjE3LDE1IDEzLjcxLDE0Ljk3QzE0LDE0LjUgMTQuMzIsMTQuMDMgMTQuNjIsMTMuNU0xMiw2Ljc4QzExLjgxLDcgMTEuNjEsNy4yMyAxMS40MSw3LjVDMTEuNjEsNy41IDExLjgsNy41IDEyLDcuNUMxMi4yLDcuNSAxMi4zOSw3LjUgMTIuNTksNy41QzEyLjM5LDcuMjMgMTIuMTksNyAxMiw2Ljc4TTEyLDE3LjIyQzEyLjE5LDE3IDEyLjM5LDE2Ljc3IDEyLjU5LDE2LjVDMTIuMzksMTYuNSAxMi4yLDE2LjUgMTIsMTYuNUMxMS44LDE2LjUgMTEuNjEsMTYuNSAxMS40MSwxNi41QzExLjYxLDE2Ljc3IDExLjgxLDE3IDEyLDE3LjIyTTE2LjYyLDRDMTYsMy42MiAxNC42Miw0LjIgMTMuMDMsNS43QzEzLjU1LDYuMjkgMTQuMDYsNi45MyAxNC41NCw3LjZDMTUuMzYsNy42OCAxNi4xNyw3LjggMTYuOTQsNy45NkMxNy40NSw1LjgyIDE3LjI2LDQuMzUgMTYuNjIsNE0xNS45Miw5Ljc0TDE2LjIxLDEwLjI1QzE2LjMyLDkuOTYgMTYuNDMsOS42NyAxNi41LDkuMzlDMTYuMjMsOS4zMyAxNS45Myw5LjI4IDE1LjYyLDkuMjNDMTUuNzIsOS40IDE1LjgyLDkuNTcgMTUuOTIsOS43NE0xNy4zNywyLjY5QzE4Ljg0LDMuNTMgMTksNS43NCAxOC4zOCw4LjMyQzIwLjkyLDkuMDcgMjIuNzUsMTAuMzEgMjIuNzUsMTJDMjIuNzUsMTMuNjkgMjAuOTIsMTQuOTMgMTguMzgsMTUuNjhDMTksMTguMjYgMTguODQsMjAuNDcgMTcuMzcsMjEuMzFDMTUuOTEsMjIuMTUgMTMuOTIsMjEuMTkgMTIsMTkuMzZDMTAuMDgsMjEuMTkgOC4wOSwyMi4xNSA2LjYyLDIxLjMxQzUuMTYsMjAuNDcgNSwxOC4yNiA1LjYyLDE1LjY4QzMuMDgsMTQuOTMgMS4yNSwxMy42OSAxLjI1LDEyQzEuMjUsMTAuMzEgMy4wOCw5LjA3IDUuNjIsOC4zMkM1LDUuNzQgNS4xNiwzLjUzIDYuNjIsMi42OUM4LjA5LDEuODUgMTAuMDgsMi44MSAxMiw0LjY0QzEzLjkyLDIuODEgMTUuOTEsMS44NSAxNy4zNywyLjY5TTE3LjA4LDEyQzE3LjQyLDEyLjc1IDE3LjcyLDEzLjUgMTcuOTcsMTQuMjZDMjAuMDcsMTMuNjMgMjEuMjUsMTIuNzMgMjEuMjUsMTJDMjEuMjUsMTEuMjcgMjAuMDcsMTAuMzcgMTcuOTcsOS43NEMxNy43MiwxMC41IDE3LjQyLDExLjI1IDE3LjA4LDEyTTYuOTIsMTJDNi41OCwxMS4yNSA2LjI4LDEwLjUgNi4wMyw5Ljc0QzMuOTMsMTAuMzcgMi43NSwxMS4yNyAyLjc1LDEyQzIuNzUsMTIuNzMgMy45MywxMy42MyA2LjAzLDE0LjI2QzYuMjgsMTMuNSA2LjU4LDEyLjc1IDYuOTIsMTJNMTUuOTIsMTQuMjZDMTUuODIsMTQuNDMgMTUuNzIsMTQuNiAxNS42MiwxNC43N0MxNS45MywxNC43MiAxNi4yMywxNC42NyAxNi41LDE0LjYxQzE2LjQzLDE0LjMzIDE2LjMyLDE0LjA0IDE2LjIxLDEzLjc1TDE1LjkyLDE0LjI2TTEzLjAzLDE4LjNDMTQuNjIsMTkuOCAxNiwyMC4zOCAxNi42MiwyMEMxNy4yNiwxOS42NSAxNy40NSwxOC4xOCAxNi45NCwxNi4wNEMxNi4xNywxNi4yIDE1LjM2LDE2LjMyIDE0LjU0LDE2LjRDMTQuMDYsMTcuMDcgMTMuNTUsMTcuNzEgMTMuMDMsMTguM004LjA4LDkuNzRDOC4xOCw5LjU3IDguMjgsOS40IDguMzgsOS4yM0M4LjA3LDkuMjggNy43Nyw5LjMzIDcuNSw5LjM5QzcuNTcsOS42NyA3LjY4LDkuOTYgNy43OSwxMC4yNUw4LjA4LDkuNzRNMTAuOTcsNS43QzkuMzgsNC4yIDgsMy42MiA3LjM3LDRDNi43NCw0LjM1IDYuNTUsNS44MiA3LjA2LDcuOTZDNy44Myw3LjggOC42NCw3LjY4IDkuNDYsNy42QzkuOTQsNi45MyAxMC40NSw2LjI5IDEwLjk3LDUuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSZWFkID0gXCJNMjEuNTksMTEuNTlMMjMsMTNMMTMuNSwyMi41TDguNDIsMTcuNDFMOS44MywxNkwxMy41LDE5LjY4TDIxLjU5LDExLjU5TTQsMTZWM0g2TDksM0E0LDQgMCAwLDEgMTMsN0MxMyw4LjU0IDEyLjEzLDkuODggMTAuODUsMTAuNTVMMTQsMTZIMTJMOS4xMSwxMUg2VjE2SDRNNiw5SDlBMiwyIDAgMCwwIDExLDdBMiwyIDAgMCwwIDksNUg2VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjZWlwdCA9IFwiTTMsMjJMNC41LDIwLjVMNiwyMkw3LjUsMjAuNUw5LDIyTDEwLjUsMjAuNUwxMiwyMkwxMy41LDIwLjVMMTUsMjJMMTYuNSwyMC41TDE4LDIyTDE5LjUsMjAuNUwyMSwyMlYyTDE5LjUsMy41TDE4LDJMMTYuNSwzLjVMMTUsMkwxMy41LDMuNUwxMiwyTDEwLjUsMy41TDksMkw3LjUsMy41TDYsMkw0LjUsMy41TDMsMk0xOCw5SDZWN0gxOE0xOCwxM0g2VjExSDE4TTE4LDE3SDZWMTVIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjb3JkID0gXCJNMTksMTJDMTksMTUuODYgMTUuODYsMTkgMTIsMTlDOC4xNCwxOSA1LDE1Ljg2IDUsMTJDNSw4LjE0IDguMTQsNSAxMiw1QzE1Ljg2LDUgMTksOC4xNCAxOSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWNvcmRDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw5QTMsMyAwIDAsMSAxNSwxMkEzLDMgMCAwLDEgMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjb3JkQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyMEE4LDggMCAwLDEgNCwxMkE4LDggMCAwLDEgMTIsNE0xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjb3JkUGxheWVyID0gXCJNNSwxNy41QTAuNSwwLjUgMCAwLDEgNC41LDE4SDMuNUEwLjUsMC41IDAgMCwxIDMsMTcuNVYxN0gyQTEsMSAwIDAsMSAxLDE2VjEzQTEsMSAwIDAsMSAyLDEySDE5VjEwSDdMNiwxMVY5QTEsMSAwIDAsMSA3LDhIMTlWN0gyMVY4QTEsMSAwIDAsMSAyMiw5VjEwSDIxVjEySDIyQTEsMSAwIDAsMSAyMywxM1YxNkExLDEgMCAwLDEgMjIsMTdIMjFWMTcuNUEwLjUsMC41IDAgMCwxIDIwLjUsMThIMTkuNUEwLjUsMC41IDAgMCwxIDE5LDE3LjVWMTdINVYxNy41TTMsMTRWMTVINVYxNEgzTTYsMTRWMTVIOFYxNEg2TTIwLjUsMTMuNUExLDEgMCAwLDAgMTkuNSwxNC41QTEsMSAwIDAsMCAyMC41LDE1LjVBMSwxIDAgMCwwIDIxLjUsMTQuNUExLDEgMCAwLDAgMjAuNSwxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlY29yZFJlYyA9IFwiTTEyLjUsNUE3LjUsNy41IDAgMCwwIDUsMTIuNUE3LjUsNy41IDAgMCwwIDEyLjUsMjBBNy41LDcuNSAwIDAsMCAyMCwxMi41QTcuNSw3LjUgMCAwLDAgMTIuNSw1TTcsMTBIOUExLDEgMCAwLDEgMTAsMTFWMTJDMTAsMTIuNSA5LjYyLDEyLjkgOS4xNCwxMi45N0wxMC4zMSwxNUg5LjE1TDgsMTNWMTVIN00xMiwxMEgxNFYxMUgxMlYxMkgxNFYxM0gxMlYxNEgxNFYxNUgxMkExLDEgMCAwLDEgMTEsMTRWMTFBMSwxIDAgMCwxIDEyLDEwTTE2LDEwSDE4VjExSDE2VjE0SDE4VjE1SDE2QTEsMSAwIDAsMSAxNSwxNFYxMUExLDEgMCAwLDEgMTYsMTBNOCwxMVYxMkg5VjExXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjdGFuZ2xlID0gXCJNNCw2VjE5SDIwVjZINFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWN0YW5nbGVPdXRsaW5lID0gXCJNNCw2VjE5SDIwVjZINE0xOCwxN0g2VjhIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVjeWNsZSA9IFwiTTIxLjgyLDE1LjQyTDE5LjMyLDE5Ljc1QzE4LjgzLDIwLjYxIDE3LjkyLDIxLjA2IDE3LDIxSDE1VjIzTDEyLjUsMTguNUwxNSwxNFYxNkgxNy44MkwxNS42LDEyLjE1TDE5LjkzLDkuNjVMMjEuNzMsMTIuNzdDMjIuMjUsMTMuNTQgMjIuMzIsMTQuNTcgMjEuODIsMTUuNDJNOS4yMSwzLjA2SDE0LjIxQzE1LjE5LDMuMDYgMTYuMDQsMy42MyAxNi40NSw0LjQ1TDE3LjQ1LDYuMTlMMTkuMTgsNS4xOUwxNi41NCw5LjZMMTEuMzksOS42OUwxMy4xMiw4LjY5TDExLjcxLDYuMjRMOS41LDEwLjA5TDUuMTYsNy41OUw2Ljk2LDQuNDdDNy4zNywzLjY0IDguMjIsMy4wNiA5LjIxLDMuMDZNNS4wNSwxOS43NkwyLjU1LDE1LjQzQzIuMDYsMTQuNTggMi4xMywxMy41NiAyLjY0LDEyLjc5TDMuNjQsMTEuMDZMMS45MSwxMC4wNkw3LjA1LDEwLjE0TDkuNywxNC41Nkw3Ljk3LDEzLjU2TDYuNTYsMTZIMTFWMjFINy40QzYuNDcsMjEuMDcgNS41NSwyMC42MSA1LjA1LDE5Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlY3ljbGVWYXJpYW50ID0gXCJNNy4xNyA3LjkxTDguOSA4LjkxTDEyLjA4IDMuNDJMMTQuMzMgNy4zMUwxMS43MyA4LjgxTDE3LjE5IDEwLjI3TDE4LjY2IDQuODFMMTYuMDYgNi4zMUwxMy44MSAyLjQxQzEzLjI2IDEuNDUgMTIuMDMgMS4xMiAxMS4wOCAxLjY4QzEwLjgxIDEuODMgMTAuNTggMi4wNSAxMC40MSAyLjMxTTEwIDIwVjE4TDMuNjYgMThMNS45IDE0LjFMOC41IDE1LjZMNy4wNCAxMC4xNEwxLjU3IDExLjZMNC4xNyAxMy4xTDEuOTIgMTdDMS4zNyAxNy45NiAxLjcgMTkuMTggMi42NSAxOS43M0MyLjkyIDE5Ljg5IDMuMjIgMTkuOTcgMy41NCAyME0xOS4wNiAxMS41TDE3LjMyIDEyLjVMMjAuNSAxOEgxNlYxNUwxMiAxOUwxNiAyM1YyMEgyMC41QzIxLjYxIDIwIDIyLjUgMTkuMTEgMjIuNSAxOEMyMi41IDE3LjY5IDIyLjQyIDE3LjM4IDIyLjI4IDE3LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlZGRpdCA9IFwiTTE0LjUgMTUuNDFDMTQuNTggMTUuNSAxNC41OCAxNS42OSAxNC41IDE1LjhDMTMuNzcgMTYuNSAxMi40MSAxNi41NiAxMiAxNi41NkMxMS42MSAxNi41NiAxMC4yNSAxNi41IDkuNTQgMTUuOEM5LjQ0IDE1LjY5IDkuNDQgMTUuNSA5LjU0IDE1LjQxQzkuNjUgMTUuMzEgOS44MiAxNS4zMSA5LjkyIDE1LjQxQzEwLjM4IDE1Ljg3IDExLjMzIDE2IDEyIDE2QzEyLjY5IDE2IDEzLjY2IDE1Ljg3IDE0LjEgMTUuNDFDMTQuMjEgMTUuMzEgMTQuMzggMTUuMzEgMTQuNSAxNS40MU0xMC43NSAxMy4wNEMxMC43NSAxMi40NyAxMC4yOCAxMiA5LjcxIDEyQzkuMTQgMTIgOC42NyAxMi40NyA4LjY3IDEzLjA0QzguNjcgMTMuNjEgOS4xNCAxNC4wOSA5LjcxIDE0LjA4QzEwLjI4IDE0LjA4IDEwLjc1IDEzLjYxIDEwLjc1IDEzLjA0TTE0LjI5IDEyQzEzLjcyIDEyIDEzLjI1IDEyLjUgMTMuMjUgMTMuMDVTMTMuNzIgMTQuMDkgMTQuMjkgMTQuMDlDMTQuODYgMTQuMDkgMTUuMzMgMTMuNjEgMTUuMzMgMTMuMDVDMTUuMzMgMTIuNSAxNC44NiAxMiAxNC4yOSAxMk0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJTMiAxNy41IDIgMTJDMiA2LjUgNi41IDIgMTIgMlMyMiA2LjUgMjIgMTJNMTguNjcgMTJDMTguNjcgMTEuMTkgMTggMTAuNTQgMTcuMjIgMTAuNTRDMTYuODIgMTAuNTQgMTYuNDYgMTAuNyAxNi4yIDEwLjk1QzE1LjIgMTAuMjMgMTMuODMgOS43NyAxMi4zIDkuNzFMMTIuOTcgNi41OEwxNS4xNCA3LjA1QzE1LjE2IDcuNiAxNS42MiA4LjA0IDE2LjE4IDguMDRDMTYuNzUgOC4wNCAxNy4yMiA3LjU3IDE3LjIyIDdDMTcuMjIgNi40MyAxNi43NSA1Ljk2IDE2LjE4IDUuOTZDMTUuNzcgNS45NiAxNS40MSA2LjIgMTUuMjUgNi41NUwxMi44MiA2LjAzQzEyLjc1IDYgMTIuNjggNi4wMyAxMi42MyA2LjA3QzEyLjU3IDYuMTEgMTIuNTQgNi4xNyAxMi41MyA2LjI0TDExLjc5IDkuNzJDMTAuMjQgOS43NyA4Ljg0IDEwLjIzIDcuODIgMTAuOTZDNy41NiAxMC43MSA3LjIgMTAuNTYgNi44MSAxMC41NkM2IDEwLjU2IDUuMzUgMTEuMjEgNS4zNSAxMkM1LjM1IDEyLjYxIDUuNzEgMTMuMTEgNi4yMSAxMy4zNEM2LjE5IDEzLjUgNi4xOCAxMy42MiA2LjE4IDEzLjc4QzYuMTggMTYgOC43OSAxNy44NSAxMiAxNy44NUMxNS4yMyAxNy44NSAxNy44NSAxNi4wMyAxNy44NSAxMy43OEMxNy44NSAxMy42NCAxNy44NCAxMy41IDE3LjgxIDEzLjM0QzE4LjMxIDEzLjExIDE4LjY3IDEyLjYgMTguNjcgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVkaGF0ID0gXCJNMTUuMzQgMTMuMTZDMTYuNjYgMTMuMTYgMTguNTYgMTIuODkgMTguNTYgMTEuMzJDMTguNTcgMTEuMiAxOC41NiAxMS4wOCAxOC41MyAxMC45NkwxNy43NSA3LjU2QzE3LjU3IDYuODEgMTcuNDEgNi40NyAxNi4wOSA1LjgxQzE1LjA3IDUuMjkgMTIuODUgNC40MyAxMi4xOSA0LjQzQzExLjU4IDQuNDMgMTEuNCA1LjIyIDEwLjY3IDUuMjJDOS45NyA1LjIyIDkuNDUgNC42MyA4Ljc5IDQuNjNDOC4xNiA0LjYzIDcuNzUgNS4wNiA3LjQzIDUuOTRDNy40MyA1Ljk0IDYuNTUgOC40NCA2LjQzIDguOEM2LjQyIDguODcgNi40MSA4LjkzIDYuNDEgOUM2LjQxIDkuOTcgMTAuMjMgMTMuMTUgMTUuMzQgMTMuMTVNMTguNzcgMTEuOTZDMTguOTUgMTIuODIgMTguOTUgMTIuOTEgMTguOTUgMTNDMTguOTUgMTQuNSAxNy4yOSAxNS4zMSAxNS4xMiAxNS4zMUMxMC4yIDE1LjMxIDUuODkgMTIuNDMgNS44OSAxMC41M0M1Ljg5IDEwLjI2IDUuOTUgMTAgNi4wNSA5Ljc2QzQuMjggOS44NCAyIDEwLjE2IDIgMTIuMThDMiAxNS41IDkuODQgMTkuNTcgMTYuMDUgMTkuNTdDMjAuODEgMTkuNTcgMjIgMTcuNDIgMjIgMTUuNzJDMjIgMTQuMzggMjAuODUgMTIuODYgMTguNzcgMTEuOTZcIjtcclxuZXhwb3J0IHZhciBtZGlSZWRvID0gXCJNMTguNCwxMC42QzE2LjU1LDkgMTQuMTUsOCAxMS41LDhDNi44NSw4IDIuOTIsMTEuMDMgMS41NCwxNS4yMkwzLjksMTZDNC45NSwxMi44MSA3Ljk1LDEwLjUgMTEuNSwxMC41QzEzLjQ1LDEwLjUgMTUuMjMsMTEuMjIgMTYuNjIsMTIuMzhMMTMsMTZIMjJWN0wxOC40LDEwLjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVkb1ZhcmlhbnQgPSBcIk0xMC41LDdBNi41LDYuNSAwIDAsMCA0LDEzLjVBNi41LDYuNSAwIDAsMCAxMC41LDIwSDE0VjE4SDEwLjVDOCwxOCA2LDE2IDYsMTMuNUM2LDExIDgsOSAxMC41LDlIMTYuMTdMMTMuMDksMTIuMDlMMTQuNSwxMy41TDIwLDhMMTQuNSwyLjVMMTMuMDgsMy45MUwxNi4xNyw3SDEwLjVNMTgsMThIMTZWMjBIMThWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVmbGVjdEhvcml6b250YWwgPSBcIk0yMiwyMEgxNEExLDEgMCAwLDEgMTMsMTlWNC45N0MxMyw0LjUgMTMuMzEsNC4xMiAxMy43NCw0QzE0LjE5LDMuODggMTQuNjUsNC4wOCAxNC44Nyw0LjQ3TDIyLjg5LDE4LjVDMjMuMDcsMTguODEgMjMuMDcsMTkuMTkgMjIuODksMTkuNUMyMi43MSwxOS44MSAyMi4zOCwyMCAyMiwyME0yLDIwQzEuNjIsMjAgMS4yOSwxOS44MSAxLjExLDE5LjVDMC45MywxOS4xOSAwLjkzLDE4LjgxIDEuMTEsMTguNUw5LjEzLDQuNDdDOS4zNSw0LjA4IDkuODEsMy44OCAxMC4yNiw0QzEwLjY5LDQuMTIgMTEsNC41IDExLDQuOTdWMTlBMSwxIDAgMCwxIDEwLDIwSDJNOSwxOFY4Ljc0TDMuNzEsMThIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWZsZWN0VmVydGljYWwgPSBcIk0xOCwyM0g2QzUuNjEsMjMgNS4yNiwyMi43OSA1LjA5LDIyLjQ1QzQuOTIsMjIuMTEgNC45NiwyMS43IDUuMTksMjEuNEwxMS4yLDEzLjM4QzExLjU4LDEyLjg3IDEyLjQyLDEyLjg3IDEyLjgsMTMuMzhMMTguODEsMjEuNEMxOS4wNCwyMS43IDE5LjA4LDIyLjExIDE4LjkxLDIyLjQ1QzE4Ljc0LDIyLjc5IDE4LjM5LDIzIDE4LDIzTTE4LDFDMTguMzksMSAxOC43NCwxLjIxIDE4LjkxLDEuNTVDMTkuMDgsMS44OSAxOS4wNCwyLjMgMTguODEsMi42TDEyLjgsMTAuNjJDMTIuNDIsMTEuMTMgMTEuNTgsMTEuMTMgMTEuMiwxMC42Mkw1LjE5LDIuNkM0Ljk2LDIuMyA0LjkyLDEuODkgNS4wOSwxLjU1QzUuMjYsMS4yMSA1LjYxLDEgNiwxSDE4TTgsM0wxMiw4LjM1TDE2LDNIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWZyZXNoID0gXCJNMTcuNjUsNi4zNUMxNi4yLDQuOSAxNC4yMSw0IDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQzE1LjczLDIwIDE4Ljg0LDE3LjQ1IDE5LjczLDE0SDE3LjY1QzE2LjgzLDE2LjMzIDE0LjYxLDE4IDEyLDE4QTYsNiAwIDAsMSA2LDEyQTYsNiAwIDAsMSAxMiw2QzEzLjY2LDYgMTUuMTQsNi42OSAxNi4yMiw3Ljc4TDEzLDExSDIwVjRMMTcuNjUsNi4zNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWZyZXNoQ2lyY2xlID0gXCJNMTIgMkExMCAxMCAwIDEgMCAyMiAxMkExMCAxMCAwIDAgMCAxMiAyTTE4IDExSDEzTDE0LjgxIDkuMTlBMy45NCAzLjk0IDAgMCAwIDEyIDhBNCA0IDAgMSAwIDE1Ljg2IDEzSDE3LjkxQTYgNiAwIDEgMSAxMiA2QTUuOTEgNS45MSAwIDAgMSAxNi4yMiA3Ljc4TDE4IDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVnZXggPSBcIk0xNiwxNi45MkMxNS42NywxNi45NyAxNS4zNCwxNyAxNSwxN0MxNC42NiwxNyAxNC4zMywxNi45NyAxNCwxNi45MlYxMy40MUwxMS41LDE1Ljg5QzExLDE1LjUgMTAuNSwxNSAxMC4xMSwxNC41TDEyLjU5LDEySDkuMDhDOS4wMywxMS42NyA5LDExLjM0IDksMTFDOSwxMC42NiA5LjAzLDEwLjMzIDkuMDgsMTBIMTIuNTlMMTAuMTEsNy41QzEwLjMsNy4yNSAxMC41LDcgMTAuNzYsNi43NlY2Ljc2QzExLDYuNSAxMS4yNSw2LjMgMTEuNSw2LjExTDE0LDguNTlWNS4wOEMxNC4zMyw1LjAzIDE0LjY2LDUgMTUsNUMxNS4zNCw1IDE1LjY3LDUuMDMgMTYsNS4wOFY4LjU5TDE4LjUsNi4xMUMxOSw2LjUgMTkuNSw3IDE5Ljg5LDcuNUwxNy40MSwxMEgyMC45MkMyMC45NywxMC4zMyAyMSwxMC42NiAyMSwxMUMyMSwxMS4zNCAyMC45NywxMS42NyAyMC45MiwxMkgxNy40MUwxOS44OSwxNC41QzE5LjcsMTQuNzUgMTkuNSwxNSAxOS4yNCwxNS4yNFYxNS4yNEMxOSwxNS41IDE4Ljc1LDE1LjcgMTguNSwxNS44OUwxNiwxMy40MVYxNi45MkgxNlYxNi45Mk01LDE5QTIsMiAwIDAsMSA3LDE3QTIsMiAwIDAsMSA5LDE5QTIsMiAwIDAsMSA3LDIxQTIsMiAwIDAsMSA1LDE5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVnaXN0ZXJlZFRyYWRlbWFyayA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsMTJDMjAsMTYuNDEgMTYuNDEsMjAgMTIsMjBNMTIuMjUsMTMuMjdIMTAuODFWMTYuNUg5VjcuNzFIMTIuMjZDMTMuMjksNy43MSAxNC4wOSw3Ljk0IDE0LjY2LDguNEMxNS4yMiw4Ljg3IDE1LjUsOS41IDE1LjUsMTAuMzZDMTUuNSwxMC45NiAxNS4zNywxMS40NiAxNS4xMSwxMS44NkMxNC44NSwxMi4yNiAxNC40NiwxMi41OCAxMy45MywxMi44MUwxNS44MywxNi40VjE2LjVIMTMuODlMMTIuMjUsMTMuMjdNMTAuODEsMTEuODFIMTIuMjdDMTIuNzIsMTEuODEgMTMuMDcsMTEuNjkgMTMuMzIsMTEuNDZDMTMuNTcsMTEuMjMgMTMuNjksMTAuOTEgMTMuNjksMTAuNUMxMy42OSwxMC4wOSAxMy41OCw5Ljc3IDEzLjM0LDkuNTNDMTMuMTEsOS4yOSAxMi43NSw5LjE4IDEyLjI2LDkuMThIMTAuODFWMTEuODFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVpdGVyYXRlID0gXCJNMTAuNSA0QTYuNSA2LjUgMCAwIDAgNCAxMEgxTDUgMTRMOSAxMEg2LjAzQTQuNSA0LjUgMCAwIDEgMTAuNSA2QTQuNSA0LjUgMCAwIDEgMTUgMTAuNUE0LjUgNC41IDAgMCAxIDEwLjUgMTVIMlYxN0gxMC41QTYuNSA2LjUgMCAwIDAgMTcgMTAuNUE2LjUgNi41IDAgMCAwIDEwLjUgNE0xOSAxMlYxNUgxNi41QTcuNSA3LjUgMCAwIDEgMTQuMjQgMTdIMTlWMjBMMjMgMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25NYW55VG9NYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdIMTFWOUg1TDMgMTFIMlY1SDNMNSA3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uTWFueVRvT25lID0gXCJNMjIgMTVWMTdIMTlWMTlIMTdWMTdIMTFWOUg1TDMgMTFIMlY1SDNMNSA3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uTWFueVRvT25lT3JNYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdWMTlIMTdWMTdIMTFWOUg1TDMgMTFIMlY1SDNMNSA3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uTWFueVRvT25seU9uZSA9IFwiTTIyIDE1VjE3SDIxVjE5SDE5VjE3SDE4VjE5SDE2VjE3SDExVjlINUwzIDExSDJWNUgzTDUgN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk1hbnlUb1plcm9Pck1hbnkgPSBcIk0yMSAxM0wxOSAxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdINUwzIDVIMlYxMUgzTDUgOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25NYW55VG9aZXJvT3JPbmUgPSBcIk0yMSAxNVYxM0gxOVYxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdINUwzIDVIMlYxMUgzTDUgOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVPck1hbnlUb01hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN0gxMVY5SDdWMTFINVY5TDMgMTFIMlY1SDNMNSA3VjVIN1Y3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lT3JNYW55VG9PbmUgPSBcIk0yMiAxNVYxN0gxOVYxOUgxN1YxN0gxMVY5SDdWMTFINVY5TDMgMTFIMlY1SDNMNSA3VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lT3JNYW55VG9PbmVPck1hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN1YxOUgxN1YxN0gxMVY5SDdWMTFINVY5TDMgMTFIMlY1SDNMNSA3VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lT3JNYW55VG9Pbmx5T25lID0gXCJNMjIgMTVWMTdIMjFWMTlIMTlWMTdIMThWMTlIMTZWMTdIMTFWOUg3VjExSDVWOUwzIDExSDJWNUgzTDUgN1Y1SDdWN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk9uZU9yTWFueVRvWmVyb09yTWFueSA9IFwiTTIxIDEzTDE5IDE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3TDMgNUgyVjExSDNMNSA5VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVPck1hbnlUb1plcm9Pck9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3TDMgNUgyVjExSDNMNSA5VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVUb01hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN0gxMVY5SDdWMTFINVY5SDJWN0g1VjVIN1Y3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lVG9PbmUgPSBcIk0yMiAxNVYxN0gxOVYxOUgxN1YxN0gxMVY5SDdWMTFINVY5SDJWN0g1VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lVG9PbmVPck1hbnkgPSBcIk0yMiAxM1YxOUgyMUwxOSAxN1YxOUgxN1YxN0gxMVY5SDdWMTFINVY5SDJWN0g1VjVIN1Y3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25lVG9Pbmx5T25lID0gXCJNMjIgMTVWMTdIMjFWMTlIMTlWMTdIMThWMTlIMTZWMTdIMTFWOUg3VjExSDVWOUgyVjdINVY1SDdWN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk9uZVRvWmVyb09yTWFueSA9IFwiTTIxIDEzTDE5IDE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3SDJWOUg1VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25PbmVUb1plcm9Pck9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g3VjVINVY3SDJWOUg1VjExSDdWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25Pbmx5T25lVG9NYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdIMTFWOUg4VjExSDZWOUg1VjExSDNWOUgyVjdIM1Y1SDVWN0g2VjVIOFY3SDEzVjE1SDE5TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25seU9uZVRvT25lID0gXCJNMjIgMTVWMTdIMTlWMTlIMTdWMTdIMTFWOUg4VjExSDZWOUg1VjExSDNWOUgyVjdIM1Y1SDVWN0g2VjVIOFY3SDEzVjE1SDE3VjEzSDE5VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25seU9uZVRvT25lT3JNYW55ID0gXCJNMjIgMTNWMTlIMjFMMTkgMTdWMTlIMTdWMTdIMTFWOUg4VjExSDZWOUg1VjExSDNWOUgyVjdIM1Y1SDVWN0g2VjVIOFY3SDEzVjE1SDE3VjEzSDE5VjE1TDIxIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uT25seU9uZVRvT25seU9uZSA9IFwiTTIyIDE1VjE3SDIxVjE5SDE5VjE3SDE4VjE5SDE2VjE3SDExVjlIOFYxMUg2VjlINVYxMUgzVjlIMlY3SDNWNUg1VjdINlY1SDhWN0gxM1YxNUgxNlYxM0gxOFYxNUgxOVYxM0gyMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvbk9ubHlPbmVUb1plcm9Pck1hbnkgPSBcIk0yMSAxM0wxOSAxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOFY1SDZWN0g1VjVIM1Y3SDJWOUgzVjExSDVWOUg2VjExSDhWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5TDIxIDE5SDIyVjEzTTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25Pbmx5T25lVG9aZXJvT3JPbmUgPSBcIk0yMSAxNVYxM0gxOVYxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOFY1SDZWN0g1VjVIM1Y3SDJWOUgzVjExSDVWOUg2VjExSDhWOUgxMVYxN0gxNC4yMUEyLjUgMi41IDAgMCAwIDE4Ljc5IDE3SDE5VjE5SDIxVjE3SDIyVjE1TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JNYW55VG9NYW55ID0gXCJNMjEgMTNMMTkgMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVMMyA1SDJWMTFIM0w1IDlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yTWFueVRvT25lID0gXCJNMTkgMTVWMTNIMTdWMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVMMyA1SDJWMTFIM0w1IDlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yTWFueVRvT25lT3JNYW55ID0gXCJNMjEgMTNMMTkgMTVWMTNIMTdWMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVMMyA1SDJWMTFIM0w1IDlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0wyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yTWFueVRvT25seU9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4VjEzSDE2VjE1SDEzVjdIOS43OUEyLjUgMi41IDAgMCAwIDUuMjEgN0g1TDMgNUgyVjExSDNMNSA5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTZWMTlIMThWMTdIMTlWMTlIMjFWMTdIMjJWMTVNNy41IDlBMSAxIDAgMSAxIDguNSA4QTEgMSAwIDAgMSA3LjUgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvblplcm9Pck1hbnlUb1plcm9Pck1hbnkgPSBcIk0yMSAxM0wxOSAxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOS43OUEyLjUgMi41IDAgMCAwIDUuMjEgN0g1TDMgNUgyVjExSDNMNSA5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JNYW55VG9aZXJvT3JPbmUgPSBcIk0yMSAxNVYxM0gxOVYxNUgxOC43OUEyLjUgMi41IDAgMCAwIDE0LjIxIDE1SDEzVjdIOS43OUEyLjUgMi41IDAgMCAwIDUuMjEgN0g1TDMgNUgyVjExSDNMNSA5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOVYxOUgyMVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JPbmVUb01hbnkgPSBcIk0yMSAxM0wxOSAxNUgxM1Y3SDkuNzlBMi41IDIuNSAwIDAgMCA1LjIxIDdINVY1SDNWN0gyVjlIM1YxMUg1VjlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yT25lVG9PbmUgPSBcIk0xOSAxNVYxM0gxN1YxNUgxM1Y3SDkuNzlBMi41IDIuNSAwIDAgMCA1LjIxIDdINVY1SDNWN0gyVjlIM1YxMUg1VjlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yT25lVG9PbmVPck1hbnkgPSBcIk0yMSAxM0wxOSAxNVYxM0gxN1YxNUgxM1Y3SDkuNzlBMi41IDIuNSAwIDAgMCA1LjIxIDdINVY1SDNWN0gyVjlIM1YxMUg1VjlINS4yMUEyLjUgMi41IDAgMCAwIDkuNzkgOUgxMVYxN0gxN1YxOUgxOVYxN0wyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbGF0aW9uWmVyb09yT25lVG9Pbmx5T25lID0gXCJNMjEgMTVWMTNIMTlWMTVIMThWMTNIMTZWMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVWNUgzVjdIMlY5SDNWMTFINVY5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTZWMTlIMThWMTdIMTlWMTlIMjFWMTdIMjJWMTVNNy41IDlBMSAxIDAgMSAxIDguNSA4QTEgMSAwIDAgMSA3LjUgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxhdGlvblplcm9Pck9uZVRvWmVyb09yTWFueSA9IFwiTTIxIDEzTDE5IDE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVWNUgzVjdIMlY5SDNWMTFINVY5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOUwyMSAxOUgyMlYxM003LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpb25aZXJvT3JPbmVUb1plcm9Pck9uZSA9IFwiTTIxIDE1VjEzSDE5VjE1SDE4Ljc5QTIuNSAyLjUgMCAwIDAgMTQuMjEgMTVIMTNWN0g5Ljc5QTIuNSAyLjUgMCAwIDAgNS4yMSA3SDVWNUgzVjdIMlY5SDNWMTFINVY5SDUuMjFBMi41IDIuNSAwIDAgMCA5Ljc5IDlIMTFWMTdIMTQuMjFBMi41IDIuNSAwIDAgMCAxOC43OSAxN0gxOVYxOUgyMVYxN0gyMlYxNU03LjUgOUExIDEgMCAxIDEgOC41IDhBMSAxIDAgMCAxIDcuNSA5TTE2LjUgMTdBMSAxIDAgMSAxIDE3LjUgMTZBMSAxIDAgMCAxIDE2LjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVsYXRpdmVTY2FsZSA9IFwiTTIwLDE4SDRWNkgyME0yMCw0SDRDMi44OSw0IDIsNC44OSAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNE0xMiwxMEgxMFYxMkgxMk04LDEwSDZWMTJIOE0xNiwxNEgxNFYxNkgxNk0xNiwxMEgxNFYxMkgxNlYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZWxvYWQgPSBcIk0yIDEyQzIgMTYuOTcgNi4wMyAyMSAxMSAyMUMxMy4zOSAyMSAxNS42OCAyMC4wNiAxNy40IDE4LjRMMTUuOSAxNi45QzE0LjYzIDE4LjI1IDEyLjg2IDE5IDExIDE5QzQuNzYgMTkgMS42NCAxMS40NiA2LjA1IDcuMDVDMTAuNDYgMi42NCAxOCA1Ljc3IDE4IDEySDE1TDE5IDE2SDE5LjFMMjMgMTJIMjBDMjAgNy4wMyAxNS45NyAzIDExIDNDNi4wMyAzIDIgNy4wMyAyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbG9hZEFsZXJ0ID0gXCJNMiAxMkMyIDE3IDYgMjEgMTEgMjFDMTMuNCAyMSAxNS43IDIwLjEgMTcuNCAxOC40TDE1LjkgMTYuOUMxNC42IDE4LjMgMTIuOSAxOSAxMSAxOUM0LjggMTkgMS42IDExLjUgNi4xIDcuMVMxOCA1LjggMTggMTJIMTVMMTkgMTZIMTkuMUwyMyAxMkgyMEMyMCA3IDE2IDMgMTEgM1MyIDcgMiAxMk0xMCAxNUgxMlYxN0gxMFYxNU0xMCA3SDEyVjEzSDEwVjdcIjtcclxuZXhwb3J0IHZhciBtZGlSZW1pbmRlciA9IFwiTTcuMjUsM0M3LjksMyA4LjUsMy4yMSA5LDMuNTZWM0EyLDIgMCAwLDEgMTEsMUEyLDIgMCAwLDEgMTMsM1YzLjU3QzEzLjUsMy4yMiAxNC4xLDMgMTQuNzUsM0EzLDMgMCAwLDEgMTcuNzUsNkMxNy43NSw3LjU4IDE2LjU0LDguODcgMTUsOUgxM1YxMEgxNC4yNEwxNC43MiwxMC4xM0wxOS4zMSwxMi40MkMyMC4xMywxMi43MyAyMC41MywxMy4zNCAyMC41MywxNC4yNUwyMC41LDE0LjM5VjE0LjUzTDE5LjUsMjEuMjhDMTkuNDQsMjEuNzUgMTkuMjIsMjIuMTYgMTguODQsMjIuNUMxOC40NywyMi44NCAxOC4wNSwyMyAxNy41OCwyM0gxMEM5LjQ1LDIzIDksMjIuODEgOC41OCwyMi40MUwyLDE1Ljg0TDMuMDUsMTQuNzdDMy4zMywxNC41IDMuNjksMTQuMzQgNC4xMywxNC4zNEg0LjQ1TDksMTUuMzNWMTBMOSw5SDdWOUM1LjQ2LDguODYgNC4yNSw3LjU3IDQuMjUsNkEzLDMgMCAwLDEgNy4yNSwzTTksNkExLjc1LDEuNzUgMCAwLDAgNy4yNSw0LjI1QTEuNzUsMS43NSAwIDAsMCA1LjUsNkM1LjUsNi44OCA2LjE1LDcuNjEgNyw3LjczVjcuNzVIOVY2TTE1LDcuNzVWNy43NEMxNS44NSw3LjYyIDE2LjUsNi44OSAxNi41LDZDMTYuNSw1LjA0IDE1LjcyLDQuMjYgMTQuNzUsNC4yNkMxMy43OCw0LjI2IDEzLDUuMDQgMTMsNlY3Ljc1SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbW90ZSA9IFwiTTEyLDBDOC45NiwwIDYuMjEsMS4yMyA0LjIyLDMuMjJMNS42Myw0LjYzQzcuMjYsMyA5LjUsMiAxMiwyQzE0LjUsMiAxNi43NCwzIDE4LjM2LDQuNjRMMTkuNzcsMy4yM0MxNy43OSwxLjIzIDE1LjA0LDAgMTIsME03LjA1LDYuMDVMOC40Niw3LjQ2QzkuMzcsNi41NiAxMC42Miw2IDEyLDZDMTMuMzgsNiAxNC42Myw2LjU2IDE1LjU0LDcuNDZMMTYuOTUsNi4wNUMxNS42OCw0Ljc4IDEzLjkzLDQgMTIsNEMxMC4wNyw0IDguMzIsNC43OCA3LjA1LDYuMDVNMTIsMTVBMiwyIDAgMCwxIDEwLDEzQTIsMiAwIDAsMSAxMiwxMUEyLDIgMCAwLDEgMTQsMTNBMiwyIDAgMCwxIDEyLDE1TTE1LDlIOUExLDEgMCAwLDAgOCwxMFYyMkExLDEgMCAwLDAgOSwyM0gxNUExLDEgMCAwLDAgMTYsMjJWMTBBMSwxIDAgMCwwIDE1LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVtb3RlRGVza3RvcCA9IFwiTTMsMkEyLDIgMCAwLDAgMSw0VjE2QzEsMTcuMTEgMS45LDE4IDMsMThIMTBWMjBIOFYyMkgxNlYyMEgxNFYxOEgyMUEyLDIgMCAwLDAgMjMsMTZWNEEyLDIgMCAwLDAgMjEsMk0zLDRIMjFWMTZIM00xNSw1TDExLjUsOC41TDE1LDEyTDE2LjQsMTAuNkwxNC4zLDguNUwxNi40LDYuNE05LDhMNy42LDkuNEw5LjcsMTEuNUw3LjYsMTMuNkw5LDE1TDEyLjUsMTEuNVwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbW90ZU9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjEsMjEuNzJMMTkuNzMsMjNMMTYsMTkuMjdWMjJBMSwxIDAgMCwxIDE1LDIzSDlDOC40NiwyMyA4LDIyLjU1IDgsMjJWMTEuMjdMMiw1LjI3TTEyLDBDMTUuMDUsMCAxNy44LDEuMjMgMTkuNzcsMy4yM0wxOC4zNiw0LjY0QzE2Ljc1LDMgMTQuNSwyIDEyLDJDOS43MiwyIDcuNjQsMi44NSA2LjA2LDQuMjRMNC42NCwyLjgyQzYuNTksMS4wNyA5LjE3LDAgMTIsME0xMiw0QzEzLjk0LDQgMTUuNjksNC43OCAxNi45NSw2LjA1TDE1LjU1LDcuNDZDMTQuNjQsNi41NiAxMy4zOSw2IDEyLDZDMTAuODMsNiA5Ljc2LDYuNCA4LjksNy4wOEw3LjUsNS42NkM4LjcsNC42MiAxMC4yOCw0IDEyLDRNMTUsOUMxNS41Niw5IDE2LDkuNDUgMTYsMTBWMTQuMThMMTMuNSwxMS42OUwxMy4zMSwxMS41TDEwLjgyLDlIMTVNMTAuMDMsMTMuM0MxMC4xNiwxNC4xNiAxMC44NCwxNC44NSAxMS43MSwxNUwxMC4wMywxMy4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlbW90ZVR2ID0gXCJNOSwyQzcuODksMiA3LDIuODkgNyw0VjIwQzcsMjEuMTEgNy44OSwyMiA5LDIySDE1QzE2LjExLDIyIDE3LDIxLjExIDE3LDIwVjRDMTcsMi44OSAxNi4xMSwyIDE1LDJIMTNWNEgxMVYySDlNMTEsNkgxM1Y4SDE1VjEwSDEzVjEySDExVjEwSDlWOEgxMVY2TTksMTRIMTFWMTZIOVYxNE0xMywxNEgxNVYxNkgxM1YxNE05LDE4SDExVjIwSDlWMThNMTMsMThIMTVWMjBIMTNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVtb3RlVHZPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDE3LDIwLjI1QzE2Ljg2LDIxLjI0IDE2LDIyIDE1LDIySDlBMiwyIDAgMCwxIDcsMjBWMTAuMjdMMiw1LjI3TTksMkgxMVY0SDEzVjJIMTVBMiwyIDAgMCwxIDE3LDRWMTUuMThMMTMsMTEuMThWMTBIMTVWOEgxM1Y2SDExVjhIOS44Mkw3LDUuMThWNEEyLDIgMCAwLDEgOSwyTTksMjBIMTFWMThIOVYyME0xMywyMEgxNVYxOC4yN0wxNC43MywxOEgxM1YyME05LDE0VjE2SDExVjE0LjI3TDEwLjczLDE0SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVuYW1lQm94ID0gXCJNMTgsMTdIMTAuNUwxMi41LDE1SDE4TTYsMTdWMTQuNUwxMy44OCw2LjY1QzE0LjA3LDYuNDUgMTQuMzksNi40NSAxNC41OSw2LjY1TDE2LjM1LDguNDFDMTYuNTUsOC42MSAxNi41NSw4LjkyIDE2LjM1LDkuMTJMOC40NywxN00xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSZW9yZGVySG9yaXpvbnRhbCA9IFwiTTMsMTVIMjFWMTNIM1YxNU0zLDE5SDIxVjE3SDNWMTlNMywxMUgyMVY5SDNWMTFNMyw1VjdIMjFWNUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlb3JkZXJWZXJ0aWNhbCA9IFwiTTksM1YyMUgxMVYzSDlNNSwzVjIxSDdWM0g1TTEzLDNWMjFIMTVWM0gxM00xOSwzSDE3VjIxSDE5VjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwZWF0ID0gXCJNMTcsMTdIN1YxNEwzLDE4TDcsMjJWMTlIMTlWMTNIMTdNNyw3SDE3VjEwTDIxLDZMMTcsMlY1SDVWMTFIN1Y3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlcGVhdE9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUuNzMsMTlIN1YyMkwzLDE4TDcsMTRWMTdIMTMuNzNMNywxMC4yN1YxMUg1VjguMjdMMiw1LjI3TTE3LDEzSDE5VjE3LjE4TDE3LDE1LjE4VjEzTTE3LDVWMkwyMSw2TDE3LDEwVjdIOC44Mkw2LjgyLDVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwZWF0T25jZSA9IFwiTTEzLDE1VjlIMTJMMTAsMTBWMTFIMTEuNVYxNU0xNywxN0g3VjE0TDMsMThMNywyMlYxOUgxOVYxM0gxN003LDdIMTdWMTBMMjEsNkwxNywyVjVINVYxMUg3VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwbGF5ID0gXCJNMTIsNVYxTDcsNkwxMiwxMVY3QTYsNiAwIDAsMSAxOCwxM0E2LDYgMCAwLDEgMTIsMTlBNiw2IDAgMCwxIDYsMTNINEE4LDggMCAwLDAgMTIsMjFBOCw4IDAgMCwwIDIwLDEzQTgsOCAwIDAsMCAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlcGx5ID0gXCJNMTAsOVY1TDMsMTJMMTAsMTlWMTQuOUMxNSwxNC45IDE4LjUsMTYuNSAyMSwyMEMyMCwxNSAxNywxMCAxMCw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlcGx5QWxsID0gXCJNMTMsOVY1TDYsMTJMMTMsMTlWMTQuOUMxOCwxNC45IDIxLjUsMTYuNSAyNCwyMEMyMywxNSAyMCwxMCAxMyw5TTcsOFY1TDAsMTJMNywxOVYxNkwzLDEyTDcsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXBseUFsbE91dGxpbmUgPSBcIk0xMSw5LjhWMTAuN0wxMi43LDEwLjlDMTUuMywxMS4zIDE3LjIsMTIuMyAxOC42LDEzLjZDMTYuOSwxMy4xIDE1LjEsMTIuOCAxMywxMi44SDExVjE0LjFMOC44LDEyTDExLDkuOE0xMyw1TDYsMTJMMTMsMTlWMTQuOUMxOCwxNC45IDIxLjUsMTYuNSAyNCwyMEMyMywxNSAyMCwxMCAxMyw5TTcsOFY1TDAsMTJMNywxOVYxNkwzLDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwbHlDaXJjbGUgPSBcIk0yIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJTMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMiAyIDYuNSAyIDEyTTUgMTFMMTAgNlY5QzE1LjA2IDkuNzMgMTcuMjggMTMuMzMgMTggMTdDMTYuMTkgMTQuNDMgMTMuNjEgMTMgMTAgMTNWMTZMNSAxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXBseU91dGxpbmUgPSBcIk04LDkuOFYxMC43TDkuNywxMUMxMi4zLDExLjQgMTQuMiwxMi40IDE1LjYsMTMuN0MxMy45LDEzLjIgMTIuMSwxMi45IDEwLDEyLjlIOFYxNC4yTDUuOCwxMkw4LDkuOE0xMCw1TDMsMTJMMTAsMTlWMTQuOUMxNSwxNC45IDE4LjUsMTYuNSAyMSwyMEMyMCwxNSAxNywxMCAxMCw5XCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVwcm9kdWN0aW9uID0gXCJNMTIuNzIsMTMuMTVMMTMuNjIsMTIuMjZDMTMuNiwxMSAxNC4zMSw5LjQ0IDE1LjYyLDguMTRDMTcuNTcsNi4xOCAyMC4xMSw1LjU1IDIxLjI4LDYuNzJDMjIuNDUsNy44OSAyMS44MiwxMC40MyAxOS44NiwxMi4zOEMxOC41NiwxMy42OSAxNywxNC40IDE1Ljc0LDE0LjM4TDE0Ljg1LDE1LjI4QzE0LjUsMTUuNjEgMTQsMTUuNjYgMTMuNiwxNS40MUMxMi43NiwxNS43MSAxMiwxNi4wOCAxMS41NiwxNi44QzExLjAzLDE3LjY4IDExLjAzLDE5LjEgMTAuNDcsMTkuOTVDOS45MSwyMC44MSA4Ljc5LDIxLjEgNy42MSwyMS4xQzYuNDMsMjEuMSA1LDIxIDMuOTUsMTkuNUw2LjQzLDE5LjkyQzcsMjAgOC41LDE5LjM5IDkuMDUsMTguNTRDOS42MSwxNy42OCA5LjYxLDE2LjI3IDEwLjE0LDE1LjM4QzEwLjYxLDE0LjYgMTEuNSwxNC4yMyAxMi40MywxMy45MUMxMi40MiwxMy42NCAxMi41LDEzLjM2IDEyLjcyLDEzLjE1TTcsMkE1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMiw3QTUsNSAwIDAsMSA3LDJNNyw0QTMsMyAwIDAsMCA0LDdBMywzIDAgMCwwIDcsMTBBMywzIDAgMCwwIDEwLDdBMywzIDAgMCwwIDcsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXNpc3RvciA9IFwiTTIsMTFIN0wxMC4wNywxNS4zNUwxMy4xMSw0TDE4LDExSDIyVjEzSDE3TDEzLjkzLDguNjVMMTAuODksMjBMNiwxM0gyVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc2lzdG9yTm9kZXMgPSBcIk0yLDExSDMuNjdDNC4wOCw5LjgzIDUuMTksOSA2LjUsOUEzLDMgMCAwLDEgOS41LDEyQzkuNSwxMi42NSA5LjI5LDEzLjI1IDguOTQsMTMuNzRMMTAuMDcsMTUuMzVMMTMuMTEsNEwxNC42MSw2LjEzTDE2LjcsOS4xMUwxNy41LDlDMTguODEsOSAxOS45Miw5LjgzIDIwLjMzLDExSDIyVjEzSDIwLjMzQzE5LjkyLDE0LjE3IDE4LjgxLDE1IDE3LjUsMTVBMywzIDAgMCwxIDE0LjUsMTJDMTQuNSwxMS4zNSAxNC43MSwxMC43NSAxNS4wNiwxMC4yNkwxMy45Myw4LjY1TDEwLjg5LDIwTDcuMywxNC44OUM3LjA1LDE0Ljk2IDYuNzgsMTUgNi41LDE1QzUuMTksMTUgNC4wOCwxNC4xNyAzLjY3LDEzSDJWMTFNMTcuNSwxMC41QTEuNSwxLjUgMCAwLDAgMTYsMTJBMS41LDEuNSAwIDAsMCAxNy41LDEzLjVBMS41LDEuNSAwIDAsMCAxOSwxMkExLjUsMS41IDAgMCwwIDE3LjUsMTAuNU02LjUsMTAuNUExLjUsMS41IDAgMCwwIDUsMTJBMS41LDEuNSAwIDAsMCA2LjUsMTMuNUExLjUsMS41IDAgMCwwIDgsMTJBMS41LDEuNSAwIDAsMCA2LjUsMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSZXNpemUgPSBcIk0xMC41OSwxMkwxNC41OSw4SDExVjZIMThWMTNIMTZWOS40MUwxMiwxMy40MVYxNkgyMFY0SDhWMTJIMTAuNTlNMjIsMlYxOEgxMlYyMkgyVjEySDZWMkgyMk0xMCwxNEg0VjIwSDEwVjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc2l6ZUJvdHRvbVJpZ2h0ID0gXCJNMjIsMjJIMjBWMjBIMjJWMjJNMjIsMThIMjBWMTZIMjJWMThNMTgsMjJIMTZWMjBIMThWMjJNMTgsMThIMTZWMTZIMThWMThNMTQsMjJIMTJWMjBIMTRWMjJNMjIsMTRIMjBWMTJIMjJWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVzcG9uc2l2ZSA9IFwiTTQsNlYxNkg5VjEyQTIsMiAwIDAsMSAxMSwxMEgxNkEyLDIgMCAwLDEgMTgsMTJWMTZIMjBWNkg0TTAsMjBWMThINEEyLDIgMCAwLDEgMiwxNlY2QTIsMiAwIDAsMSA0LDRIMjBBMiwyIDAgMCwxIDIyLDZWMTZBMiwyIDAgMCwxIDIwLDE4SDI0VjIwSDE4VjIwQzE4LDIxLjExIDE3LjEsMjIgMTYsMjJIMTFBMiwyIDAgMCwxIDksMjBIOUwwLDIwTTExLjUsMjBBMC41LDAuNSAwIDAsMCAxMSwyMC41QTAuNSwwLjUgMCAwLDAgMTEuNSwyMUEwLjUsMC41IDAgMCwwIDEyLDIwLjVBMC41LDAuNSAwIDAsMCAxMS41LDIwTTE1LjUsMjBBMC41LDAuNSAwIDAsMCAxNSwyMC41QTAuNSwwLjUgMCAwLDAgMTUuNSwyMUEwLjUsMC41IDAgMCwwIDE2LDIwLjVBMC41LDAuNSAwIDAsMCAxNS41LDIwTTEzLDIwVjIxSDE0VjIwSDEzTTExLDEyVjE5SDE2VjEySDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc3RhcnQgPSBcIk0xMiw0QzE0LjEsNCAxNi4xLDQuOCAxNy42LDYuM0MyMC43LDkuNCAyMC43LDE0LjUgMTcuNiwxNy42QzE1LjgsMTkuNSAxMy4zLDIwLjIgMTAuOSwxOS45TDExLjQsMTcuOUMxMy4xLDE4LjEgMTQuOSwxNy41IDE2LjIsMTYuMkMxOC41LDEzLjkgMTguNSwxMC4xIDE2LjIsNy43QzE1LjEsNi42IDEzLjUsNiAxMiw2VjEwLjZMNyw1LjZMMTIsMC42VjRNNi4zLDE3LjZDMy43LDE1IDMuMywxMSA1LjEsNy45TDYuNiw5LjRDNS41LDExLjYgNS45LDE0LjQgNy44LDE2LjJDOC4zLDE2LjcgOC45LDE3LjEgOS42LDE3LjRMOSwxOS40QzgsMTkgNy4xLDE4LjQgNi4zLDE3LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVzdGFydEFsZXJ0ID0gXCJNMTAgNC4wM1YuNjMzTDUgNS42M0wxMCAxMC42M1Y2LjAzQzExLjUgNi4wMyAxMy4xMSA2LjYzIDE0LjIxIDcuNzNDMTYuNSAxMC4xMyAxNi41IDEzLjkzIDE0LjIxIDE2LjIzQzEyLjkxIDE3LjUzIDExLjExIDE4LjEzIDkuNCAxNy45M0w4LjkgMTkuOTNDMTEuMzEgMjAuMjMgMTMuODEgMTkuNTMgMTUuNjEgMTcuNjNDMTguNyAxNC41MyAxOC43IDkuNDMgMTUuNjEgNi4zM0MxNC4xMSA0LjgzIDEyLjExIDQuMDMgMTAgNC4wM000LjMxIDE3LjYzQzUuMTEgMTguNDMgNiAxOS4wMyA3IDE5LjQzTDcuNjEgMTcuNDNDNi45MSAxNy4xMyA2LjMxIDE2LjczIDUuODEgMTYuMjNDMy45MSAxNC40MyAzLjUgMTEuNjMgNC42MSA5LjQzTDMuMTEgNy45M0MxLjMxIDExLjAzIDEuNzEgMTUuMDMgNC4zMSAxNy42M00yMCAxM0gyMlY3SDIwVjEzTTIwIDE3SDIyVjE1SDIwVjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJlc3RhcnRPZmYgPSBcIk0yMC44LDIyLjdMMTYuNiwxOC41QzE0LjksMTkuNyAxMi45LDIwLjIgMTAuOSwxOS45TDExLjQsMTcuOUMxMi43LDE4IDE0LDE3LjcgMTUuMSwxN0wxLjEsM0wyLjQsMS43TDE2LjUsMTUuOEwxNy45LDE3LjJMMjIuMSwyMS40TDIwLjgsMjIuN00xMiw2QzEzLjUsNiAxNS4xLDYuNiAxNi4yLDcuOEMxOCw5LjYgMTguNCwxMi4yIDE3LjUsMTQuNEwxOSwxNS45QzIwLjcsMTIuOSAyMC4yLDkgMTcuNiw2LjRDMTYuMSw0LjggMTQsNCAxMiw0VjAuN0w3LjksNC43TDEyLDguOFY2TTYuNiw5LjRMNS4xLDcuOUMzLjMsMTEgMy43LDE1IDYuMywxNy43QzcuMSwxOC40IDgsMTkgOSwxOS40TDkuNSwxNy40QzguOSwxNy4xIDguMywxNi43IDcuNywxNi4yQzUuOSwxNC40IDUuNSwxMS42IDYuNiw5LjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmVzdG9yZSA9IFwiTTEzLDNBOSw5IDAgMCwwIDQsMTJIMUw0Ljg5LDE1Ljg5TDQuOTYsMTYuMDNMOSwxMkg2QTcsNyAwIDAsMSAxMyw1QTcsNyAwIDAsMSAyMCwxMkE3LDcgMCAwLDEgMTMsMTlDMTEuMDcsMTkgOS4zMiwxOC4yMSA4LjA2LDE2Ljk0TDYuNjQsMTguMzZDOC4yNywyMCAxMC41LDIxIDEzLDIxQTksOSAwIDAsMCAyMiwxMkE5LDkgMCAwLDAgMTMsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSZXN0b3JlQWxlcnQgPSBcIk0xMyAzQzggMyA0IDcgNCAxMkgxTDQuOSAxNS45TDUgMTZMOSAxMkg2QzYgOC4xIDkuMSA1IDEzIDVTMjAgOC4xIDIwIDEyIDE2LjkgMTkgMTMgMTlDMTEuMSAxOSA5LjMgMTguMiA4LjEgMTYuOUw2LjcgMTguM0M4LjMgMjAgMTAuNSAyMSAxMyAyMUMxOCAyMSAyMiAxNyAyMiAxMlMxOCAzIDEzIDNNMTIgMTVIMTRWMTdIMTJWMTVNMTIgN0gxNFYxM0gxMlY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpUmV3aW5kID0gXCJNMTEuNSwxMkwyMCwxOFY2TTExLDE4VjZMMi41LDEyTDExLDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJld2luZDEwID0gXCJNMTIuNSwzQzE3LjE1LDMgMjEuMDgsNi4wMyAyMi40NywxMC4yMkwyMC4xLDExQzE5LjA1LDcuODEgMTYuMDQsNS41IDEyLjUsNS41QzEwLjU0LDUuNSA4Ljc3LDYuMjIgNy4zOCw3LjM4TDEwLDEwSDNWM0w1LjYsNS42QzcuNDUsNCA5Ljg1LDMgMTIuNSwzTTEwLDEyVjIySDhWMTRINlYxMkgxME0xOCwxNFYyMEMxOCwyMS4xMSAxNy4xMSwyMiAxNiwyMkgxNEEyLDIgMCAwLDEgMTIsMjBWMTRBMiwyIDAgMCwxIDE0LDEySDE2QzE3LjExLDEyIDE4LDEyLjkgMTgsMTRNMTQsMTRWMjBIMTZWMTRIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmV3aW5kMzAgPSBcIk0xOSwxNFYyMEMxOSwyMS4xMSAxOC4xMSwyMiAxNywyMkgxNUEyLDIgMCAwLDEgMTMsMjBWMTRBMiwyIDAgMCwxIDE1LDEySDE3QzE4LjExLDEyIDE5LDEyLjkgMTksMTRNMTUsMTRWMjBIMTdWMTRIMTVNMTEsMjBDMTEsMjEuMTEgMTAuMSwyMiA5LDIySDVWMjBIOVYxOEg3VjE2SDlWMTRINVYxMkg5QTIsMiAwIDAsMSAxMSwxNFYxNS41QTEuNSwxLjUgMCAwLDEgOS41LDE3QTEuNSwxLjUgMCAwLDEgMTEsMTguNVYyME0xMi41LDNDMTcuMTUsMyAyMS4wOCw2LjAzIDIyLjQ3LDEwLjIyTDIwLjEsMTFDMTkuMDUsNy44MSAxNi4wNCw1LjUgMTIuNSw1LjVDMTAuNTQsNS41IDguNzcsNi4yMiA3LjM4LDcuMzhMMTAsMTBIM1YzTDUuNiw1LjZDNy40NSw0IDkuODUsMyAxMi41LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmV3aW5kNSA9IFwiTTEyLjUgM0MxNy4xNSAzIDIxLjA4IDYuMDMgMjIuNDcgMTAuMjJMMjAuMSAxMUMxOS4wNSA3LjgxIDE2LjA0IDUuNSAxMi41IDUuNUMxMC41NCA1LjUgOC43NyA2LjIyIDcuMzggNy4zOEwxMCAxMEgzVjNMNS42IDUuNkM3LjQ1IDQgOS44NSAzIDEyLjUgM005IDEySDE1VjE0SDExVjE2SDEzQzE0LjExIDE2IDE1IDE2LjkgMTUgMThWMjBDMTUgMjEuMTEgMTQuMTEgMjIgMTMgMjJIOVYyMEgxM1YxOEg5VjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJld2luZDYwID0gXCJNMTkgMTRWMjBDMTkgMjEuMSAxOC4xIDIyIDE3IDIySDE1QzEzLjkgMjIgMTMgMjEuMSAxMyAyMFYxNEMxMyAxMi45IDEzLjkgMTIgMTUgMTJIMTdDMTguMSAxMiAxOSAxMi45IDE5IDE0TTE1IDE0VjIwSDE3VjE0SDE1TTEyLjUgM0MxNy4xIDMgMjEuMSA2IDIyLjUgMTAuMkwyMC4xIDExQzE5IDcuOCAxNiA1LjUgMTIuNSA1LjVDMTAuNSA1LjUgOC44IDYuMiA3LjQgNy40TDEwIDEwSDNWM0w1LjYgNS42QzcuNCA0IDkuOSAzIDEyLjUgM003IDEyQzUuOSAxMiA1IDEyLjkgNSAxNFYyMEM1IDIxLjEgNS45IDIyIDcgMjJIOUMxMC4xIDIyIDExIDIxLjEgMTEgMjBWMThDMTEgMTYuOSAxMC4xIDE2IDkgMTZIN1YxNEgxMVYxMkg3TTcgMThIOVYyMEg3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJld2luZE91dGxpbmUgPSBcIk0xMCw5LjlMNywxMkwxMCwxNC4xVjkuOU0xOSw5LjlMMTYsMTJMMTksMTQuMVY5LjlNMTIsNlYxOEwzLjUsMTJMMTIsNk0yMSw2VjE4TDEyLjUsMTJMMjEsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlSaG9tYnVzID0gXCJNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJob21idXNNZWRpdW0gPSBcIk0xMiA2LjQ2QzExLjcyIDYuNDYgMTEuNDQgNi41NiAxMS4yMiA2Ljc4TDYuNzggMTEuMjJDNi4zNSAxMS42NSA2LjM1IDEyLjM1IDYuNzggMTIuNzhMMTEuMjIgMTcuMjJDMTEuNjUgMTcuNjUgMTIuMzUgMTcuNjUgMTIuNzggMTcuMjJMMTcuMjIgMTIuNzhDMTcuNjUgMTIuMzUgMTcuNjUgMTEuNjUgMTcuMjIgMTEuMjJMMTIuNzggNi43OEMxMi41NiA2LjU2IDEyLjI4IDYuNDYgMTIgNi40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlSaG9tYnVzTWVkaXVtT3V0bGluZSA9IFwiTTEyIDYuNDZDMTEuNzIgNi40NiAxMS40NCA2LjU2IDExLjIyIDYuNzhMNi43OCAxMS4yMkM2LjM1IDExLjY1IDYuMzUgMTIuMzUgNi43OCAxMi43OEwxMS4yMiAxNy4yMkMxMS42NSAxNy42NSAxMi4zNSAxNy42NSAxMi43OCAxNy4yMkwxNy4yMiAxMi43OEMxNy42NSAxMi4zNSAxNy42NSAxMS42NSAxNy4yMiAxMS4yMkwxMi43OCA2Ljc4QzEyLjU2IDYuNTYgMTIuMjggNi40NiAxMiA2LjQ2TTEyIDguODNMMTUuMTcgMTJMMTIgMTUuMTdMOC44MyAxMkwxMiA4LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJob21idXNPdXRsaW5lID0gXCJNMTIgMkMxMS41IDIgMTEgMi4xOSAxMC41OSAyLjU5TDIuNTkgMTAuNTlDMS44IDExLjM3IDEuOCAxMi42MyAyLjU5IDEzLjQxTDEwLjU5IDIxLjQxQzExLjM3IDIyLjIgMTIuNjMgMjIuMiAxMy40MSAyMS40MUwyMS40MSAxMy40MUMyMi4yIDEyLjYzIDIyLjIgMTEuMzcgMjEuNDEgMTAuNTlMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTEyIDRMMjAgMTJMMTIgMjBMNCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSaG9tYnVzU3BsaXQgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMNy4yOSA1Ljg4TDEyIDEwLjU4TDE2LjcxIDUuODhMMTMuNDEgMi41OUMxMyAyLjE5IDEyLjUgMiAxMiAyTTUuODggNy4yOUwyLjU5IDEwLjU5QzEuOCAxMS4zNyAxLjggMTIuNjMgMi41OSAxMy40MUw1Ljg4IDE2LjcxTDEwLjU4IDEyTDUuODggNy4yOU0xOC4xMiA3LjI5TDEzLjQyIDEyTDE4LjEyIDE2LjcxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxOC4xMiA3LjI5TTEyIDEzLjQyTDcuMjkgMTguMTJMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDE2LjcxIDE4LjEyTDEyIDEzLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJob21idXNTcGxpdE91dGxpbmUgPSBcIk0xMiAyQzExLjUgMiAxMSAyLjE5IDEwLjU5IDIuNTlMMi41OSAxMC41OUMxLjggMTEuMzcgMS44IDEyLjYzIDIuNTkgMTMuNDFMMTAuNTkgMjEuNDFDMTEuMzcgMjIuMiAxMi42MyAyMi4yIDEzLjQxIDIxLjQxTDIxLjQxIDEzLjQxQzIyLjIgMTIuNjMgMjIuMiAxMS4zNyAyMS40MSAxMC41OUwxMy40MSAyLjU5QzEzIDIuMTkgMTIuNSAyIDEyIDJNMTIgNEwxNS4yOSA3LjI5TDEyIDEwLjU5TDguNzEgNy4yOUwxMiA0TTcuMjkgOC43MUwxMC41OSAxMkw3LjI5IDE1LjI5TDQgMTJMNy4yOSA4LjcxTTE2LjcxIDguNzFMMjAgMTJMMTYuNzEgMTUuMjlMMTMuNDEgMTJMMTYuNzEgOC43MU0xMiAxMy40MUwxNS4yOSAxNi43MUwxMiAyMEw4LjcxIDE2LjcxTDEyIDEzLjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJpYmJvbiA9IFwiTTEzLjQxLDE5LjMxTDE2LjU5LDIyLjVMMTgsMjEuMDdMMTQuODMsMTcuOU0xNS41NCwxMS41M0gxNS41M0wxMiwxNS4wN0w4LjQ3LDExLjUzSDguNDZWMTEuNTNDNy41NiwxMC42MyA3LDkuMzggNyw4QTUsNSAwIDAsMSAxMiwzQTUsNSAwIDAsMSAxNyw4QzE3LDkuMzggMTYuNDQsMTAuNjMgMTUuNTQsMTEuNTNNMTYuOSwxM0MxOC4yLDExLjczIDE5LDkuOTYgMTksOEE3LDcgMCAwLDAgMTIsMUE3LDcgMCAwLDAgNSw4QzUsOS45NiA1LjgxLDExLjczIDcuMSwxM1YxM0wxMC41OSwxNi41TDYsMjEuMDdMNy40MSwyMi41TDE2LjksMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmljZSA9IFwiTTIyLDExSDE5LjdDMTkuNCw5LjkgMTguOSw4LjggMTguMiw4TDIxLjYsMi42TDE5LjksMS41TDE2LjcsNi42QzE2LjMsNi4zIDE2LDYuMSAxNS41LDUuOUwxNi40LDIuM0wxNC41LDEuOEwxMy43LDUuMkMxMy4xLDUuMSAxMi42LDUgMTIsNUM4LjMsNSA1LjIsNy42IDQuMywxMUgyQzIsMTUuMSA0LjUsMTguNiA4LDIwLjJWMjJIMTZWMjAuMkMxOS41LDE4LjYgMjIsMTUuMSAyMiwxMU0xMiw3QzE0LjYsNyAxNi44LDguNyAxNy42LDExSDYuNEM3LjIsOC43IDkuNCw3IDEyLDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmlja3NoYXcgPSBcIk0yMCAxNC4wNVYxMi43M0MyMCAxMi4yNiAxOS44NCAxMS44IDE5LjU0IDExLjQ0TDE1LjYgNi43MkMxNS4yMiA2LjI2IDE0LjY2IDYgMTQuMDYgNkg0QzIuOSA2IDIgNi45IDIgOFYxNUMyIDE2LjEgMi45IDE3IDQgMTdINC4wNUM0LjI4IDE4LjE0IDUuMjkgMTkgNi41IDE5UzguNzIgMTguMTQgOC45NSAxN0gxNy4wNUMxNy4yOCAxOC4xNCAxOC4yOSAxOSAxOS41IDE5QzIwLjg4IDE5IDIyIDE3Ljg4IDIyIDE2LjVDMjIgMTUuMjkgMjEuMTQgMTQuMjggMjAgMTQuMDVNMy41IDhDMy41IDcuNzMgMy43MyA3LjUgNCA3LjVIN1YxMkgzLjVWOE02LjUgMTcuNUM1Ljk1IDE3LjUgNS41IDE3LjA1IDUuNSAxNi41UzUuOTUgMTUuNSA2LjUgMTUuNSA3LjUgMTUuOTUgNy41IDE2LjUgNy4wNSAxNy41IDYuNSAxNy41TTEzIDE1LjVIOVYxNEgxMVYxMkg5VjcuNUgxM1YxNS41TTE1IDguMzRMMTguMDUgMTJIMTVWOC4zNE0xOS41IDE3LjVDMTguOTUgMTcuNSAxOC41IDE3LjA1IDE4LjUgMTYuNVMxOC45NSAxNS41IDE5LjUgMTUuNSAyMC41IDE1Ljk1IDIwLjUgMTYuNSAyMC4wNSAxNy41IDE5LjUgMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSaWNrc2hhd0VsZWN0cmljID0gXCJNMjAgMTIuMDVWMTAuNzNDMjAgMTAuMjYgMTkuODQgOS44IDE5LjU0IDkuNDRMMTUuNiA0LjcyQzE1LjIyIDQuMjYgMTQuNjYgNCAxNC4wNiA0SDRDMi45IDQgMiA0LjkgMiA2VjEzQzIgMTQuMSAyLjkgMTUgNCAxNUg0LjA1QzQuMjggMTYuMTQgNS4yOSAxNyA2LjUgMTdTOC43MiAxNi4xNCA4Ljk1IDE1SDE3LjA1QzE3LjI4IDE2LjE0IDE4LjI5IDE3IDE5LjUgMTdDMjAuODggMTcgMjIgMTUuODggMjIgMTQuNUMyMiAxMy4yOSAyMS4xNCAxMi4yOCAyMCAxMi4wNU0zLjUgNkMzLjUgNS43MyAzLjczIDUuNSA0IDUuNUg3VjEwSDMuNVY2TTYuNSAxNS41QzUuOTUgMTUuNSA1LjUgMTUuMDUgNS41IDE0LjVTNS45NSAxMy41IDYuNSAxMy41IDcuNSAxMy45NSA3LjUgMTQuNSA3LjA1IDE1LjUgNi41IDE1LjVNMTMgMTMuNUg5VjEySDExVjEwSDlWNS41SDEzVjEzLjVNMTUgNi4zNEwxOC4wNSAxMEgxNVY2LjM0TTE5LjUgMTUuNUMxOC45NSAxNS41IDE4LjUgMTUuMDUgMTguNSAxNC41UzE4Ljk1IDEzLjUgMTkuNSAxMy41IDIwLjUgMTMuOTUgMjAuNSAxNC41IDIwLjA1IDE1LjUgMTkuNSAxNS41TTExIDIwSDdMMTMgMjNWMjFIMTdMMTEgMThWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUmluZyA9IFwiTTEyLDEwTDgsNC40TDkuNiwySDE0LjRMMTYsNC40TDEyLDEwTTE1LjUsNi44TDE0LjMsOC41QzE2LjUsOS40IDE4LDExLjUgMTgsMTRBNiw2IDAgMCwxIDEyLDIwQTYsNiAwIDAsMSA2LDE0QzYsMTEuNSA3LjUsOS40IDkuNyw4LjVMOC41LDYuOEM1LjgsOC4xIDQsMTAuOCA0LDE0QTgsOCAwIDAsMCAxMiwyMkE4LDggMCAwLDAgMjAsMTRDMjAsMTAuOCAxOC4yLDguMSAxNS41LDYuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSaXZldCA9IFwiTTExLjQzLDJDMTAuNjEsMiA5Ljk0LDIuNjUgOS45NCwzLjVDOS45NCw0LjY0IDkuOTQsNS44IDkuOTQsNi45Nkg3Ljk1VjcuOTVIMTUuOTFWNi45NkgxMy45MkMxMy45Miw1LjggMTMuOTIsNC42NCAxMy45MiwzLjVDMTMuOTIsMi42NSAxMy4yNSwyIDEyLjQzLDJIMTEuNDNNMTAuOTQsOC45NVYyMS44N0wxMS45MywyMi44N0wxMi45MiwyMS44N1Y4Ljk1SDEwLjk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYWQgPSBcIk0xMSwxNkgxM1YyMEgxMU0xMSwxMEgxM1YxNEgxMU0xMSw0SDEzVjhIMTFNNCwyMkgyMFYySDRWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9hZFZhcmlhbnQgPSBcIk0xOC4xLDQuOEMxOCw0LjMgMTcuNiw0IDE3LjEsNEgxM0wxMy4yLDdIMTAuOEwxMSw0SDYuOEM2LjMsNCA1LjksNC40IDUuOCw0LjhMMy4xLDE4LjhDMywxOS40IDMuNSwyMCA0LjEsMjBIMTBMMTAuMywxNUgxMy43TDE0LDIwSDE5LjhDMjAuNCwyMCAyMC45LDE5LjQgMjAuOCwxOC44TDE4LjEsNC44TTEwLjQsMTNMMTAuNiw5SDEzLjJMMTMuNCwxM0gxMC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYmJlciA9IFwiTTEwLjcgMTIuNUMxMC43IDEyLjggOS40IDEzLjIgOC40IDEzLjJTNi4zIDEyLjUgNi4zIDEyLjNDNi4zIDEyIDcgMTEuMSA4LjYgMTFDOS41IDEwLjkgMTAuNSAxMS41IDEwLjcgMTIuNU0xNS40IDExQzE0LjQgMTAuOSAxMy41IDExLjUgMTMuMyAxMi41QzEzLjMgMTIuOCAxNC41IDEzLjIgMTUuNiAxMy4yQzE2LjcgMTMuMiAxNy43IDEyLjUgMTcuNyAxMi4zUzE3IDExLjEgMTUuNCAxMU0yMiAxMkMyMiAxNy41IDE3LjUgMjIgMTIgMjJTMiAxNy41IDIgMTIgNi41IDIgMTIgMiAyMiA2LjUgMjIgMTJNMjAgMTEuMkMyMCA5LjIgMTkuMyA4LjUgMTYuNyA4LjVDMTQuMSA4LjUgMTMuMyA5LjYgMTIgOS42UzEwIDguNSA3LjMgOC41IDQgOS4xIDQgMTEuMkM0IDE0LjYgNS41IDE2LjUgNy42IDE2LjVDOS4yIDE2LjUgMTAuNCAxNC41IDEyIDE0LjVTMTQuNyAxNi41IDE2LjQgMTYuNUMxOC41IDE2LjUgMjAgMTQuNiAyMCAxMS4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90ID0gXCJNMTIsMkEyLDIgMCAwLDEgMTQsNEMxNCw0Ljc0IDEzLjYsNS4zOSAxMyw1LjczVjdIMTRBNyw3IDAgMCwxIDIxLDE0SDIyQTEsMSAwIDAsMSAyMywxNVYxOEExLDEgMCAwLDEgMjIsMTlIMjFWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWMTlIMkExLDEgMCAwLDEgMSwxOFYxNUExLDEgMCAwLDEgMiwxNEgzQTcsNyAwIDAsMSAxMCw3SDExVjUuNzNDMTAuNCw1LjM5IDEwLDQuNzQgMTAsNEEyLDIgMCAwLDEgMTIsMk03LjUsMTNBMi41LDIuNSAwIDAsMCA1LDE1LjVBMi41LDIuNSAwIDAsMCA3LjUsMThBMi41LDIuNSAwIDAsMCAxMCwxNS41QTIuNSwyLjUgMCAwLDAgNy41LDEzTTE2LjUsMTNBMi41LDIuNSAwIDAsMCAxNCwxNS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxOEEyLjUsMi41IDAgMCwwIDE5LDE1LjVBMi41LDIuNSAwIDAsMCAxNi41LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90QW5ncnkgPSBcIk0yMiAxNEgyMUMyMSAxMC4xMyAxNy44NyA3IDE0IDdIMTNWNS43M0MxMy42IDUuMzkgMTQgNC43NCAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJTMTAgMi45IDEwIDRDMTAgNC43NCAxMC40IDUuMzkgMTEgNS43M1Y3SDEwQzYuMTMgNyAzIDEwLjEzIDMgMTRIMkMxLjQ1IDE0IDEgMTQuNDUgMSAxNVYxOEMxIDE4LjU1IDEuNDUgMTkgMiAxOUgzVjIwQzMgMjEuMTEgMy45IDIyIDUgMjJIMTlDMjAuMTEgMjIgMjEgMjEuMTEgMjEgMjBWMTlIMjJDMjIuNTUgMTkgMjMgMTguNTUgMjMgMThWMTVDMjMgMTQuNDUgMjIuNTUgMTQgMjIgMTRNNy41IDE4QzYuMTIgMTggNSAxNi44OCA1IDE1LjVDNSAxNC42OCA1LjQgMTMuOTYgNiAxMy41TDkuODMgMTYuMzhDOS41IDE3LjMyIDguNTcgMTggNy41IDE4TTE2LjUgMThDMTUuNDMgMTggMTQuNSAxNy4zMiAxNC4xNyAxNi4zOEwxOCAxMy41QzE4LjYgMTMuOTYgMTkgMTQuNjggMTkgMTUuNUMxOSAxNi44OCAxNy44OCAxOCAxNi41IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90QW5ncnlPdXRsaW5lID0gXCJNMjIgMTRIMjFDMjEgMTAuMTMgMTcuODcgNyAxNCA3SDEzVjUuNzNDMTMuNiA1LjM5IDE0IDQuNzQgMTQgNEMxNCAyLjkgMTMuMTEgMiAxMiAyUzEwIDIuOSAxMCA0QzEwIDQuNzQgMTAuNCA1LjM5IDExIDUuNzNWN0gxMEM2LjEzIDcgMyAxMC4xMyAzIDE0SDJDMS40NSAxNCAxIDE0LjQ1IDEgMTVWMThDMSAxOC41NSAxLjQ1IDE5IDIgMTlIM1YyMEMzIDIxLjExIDMuOSAyMiA1IDIySDE5QzIwLjExIDIyIDIxIDIxLjExIDIxIDIwVjE5SDIyQzIyLjU1IDE5IDIzIDE4LjU1IDIzIDE4VjE1QzIzIDE0LjQ1IDIyLjU1IDE0IDIyIDE0TTIxIDE3SDE5VjIwSDVWMTdIM1YxNkg1VjE0QzUgMTEuMjQgNy4yNCA5IDEwIDlIMTRDMTYuNzYgOSAxOSAxMS4yNCAxOSAxNFYxNkgyMVYxN00xNy41IDE1LjVDMTcuNSAxNi42MSAxNi42MSAxNy41IDE1LjUgMTcuNUMxNC41MyAxNy41IDEzLjczIDE2LjgxIDEzLjU0IDE1LjlMMTYuNSAxMy43OEMxNy4xIDE0LjEzIDE3LjUgMTQuNzYgMTcuNSAxNS41TTcuNSAxMy43OEwxMC40NiAxNS45QzEwLjI4IDE2LjgxIDkuNDcgMTcuNSA4LjUgMTcuNUM3LjQgMTcuNSA2LjUgMTYuNjEgNi41IDE1LjVDNi41IDE0Ljc2IDYuOSAxNC4xMyA3LjUgMTMuNzhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RDb25mdXNlZCA9IFwiTTIwIDRIMThWM0gyMC41QzIwLjc4IDMgMjEgMy4yMiAyMSAzLjVWNS41QzIxIDUuNzggMjAuNzggNiAyMC41IDZIMjBWN0gxOVY1SDIwVjRNMTkgOUgyMFY4SDE5VjlNMTcgM0gxNlY3SDE3VjNNMjMgMTVWMThDMjMgMTguNTUgMjIuNTUgMTkgMjIgMTlIMjFWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjE5SDJDMS40NSAxOSAxIDE4LjU1IDEgMThWMTVDMSAxNC40NSAxLjQ1IDE0IDIgMTRIM0MzIDEwLjEzIDYuMTMgNyAxMCA3SDExVjUuNzNDMTAuNCA1LjM5IDEwIDQuNzQgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJTMTQgMi45IDE0IDRDMTQgNC43NCAxMy42IDUuMzkgMTMgNS43M1Y3SDE0QzE0LjM0IDcgMTQuNjcgNy4wMyAxNSA3LjA4VjEwSDE5Ljc0QzIwLjUzIDExLjEzIDIxIDEyLjUgMjEgMTRIMjJDMjIuNTUgMTQgMjMgMTQuNDUgMjMgMTVNMTAgMTUuNUMxMCAxNC4xMiA4Ljg4IDEzIDcuNSAxM1M1IDE0LjEyIDUgMTUuNSA2LjEyIDE4IDcuNSAxOCAxMCAxNi44OCAxMCAxNS41TTE5IDE1LjVDMTkgMTQuMTIgMTcuODggMTMgMTYuNSAxM1MxNCAxNC4xMiAxNCAxNS41IDE1LjEyIDE4IDE2LjUgMTggMTkgMTYuODggMTkgMTUuNU0xNyA4SDE2VjlIMTdWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdENvbmZ1c2VkT3V0bGluZSA9IFwiTTE5IDhIMjBWOUgxOVY4TTIwIDVIMTlWN0gyMFY2SDIwLjVDMjAuNzggNiAyMSA1Ljc4IDIxIDUuNVYzLjVDMjEgMy4yMiAyMC43OCAzIDIwLjUgM0gxOFY0SDIwVjVNMTcgM0gxNlY3SDE3VjNNMTMuNSAxNS41QzEzLjUgMTYuNjEgMTQuNCAxNy41IDE1LjUgMTcuNVMxNy41IDE2LjYxIDE3LjUgMTUuNSAxNi42MSAxMy41IDE1LjUgMTMuNSAxMy41IDE0LjQgMTMuNSAxNS41TTE3IDhIMTZWOUgxN1Y4TTIyIDE0SDIxQzIxIDEyLjUgMjAuNTMgMTEuMTMgMTkuNzQgMTBIMTYuOTdDMTguMTkgMTAuOTEgMTkgMTIuMzYgMTkgMTRWMTZIMjFWMTdIMTlWMjBINVYxN0gzVjE2SDVWMTRDNSAxMS4yNCA3LjI0IDkgMTAgOUgxNEMxNC4zNCA5IDE0LjY4IDkuMDQgMTUgOS4xVjcuMDhDMTQuNjcgNy4wMyAxNC4zNCA3IDE0IDdIMTNWNS43M0MxMy42IDUuMzkgMTQgNC43NCAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJTMTAgMi45IDEwIDRDMTAgNC43NCAxMC40IDUuMzkgMTEgNS43M1Y3SDEwQzYuMTMgNyAzIDEwLjEzIDMgMTRIMkMxLjQ1IDE0IDEgMTQuNDUgMSAxNVYxOEMxIDE4LjU1IDEuNDUgMTkgMiAxOUgzVjIwQzMgMjEuMTEgMy45IDIyIDUgMjJIMTlDMjAuMTEgMjIgMjEgMjEuMTEgMjEgMjBWMTlIMjJDMjIuNTUgMTkgMjMgMTguNTUgMjMgMThWMTVDMjMgMTQuNDUgMjIuNTUgMTQgMjIgMTRNOC41IDEzLjVDNy40IDEzLjUgNi41IDE0LjQgNi41IDE1LjVTNy40IDE3LjUgOC41IDE3LjUgMTAuNSAxNi42MSAxMC41IDE1LjUgOS42MSAxMy41IDguNSAxMy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90RGVhZCA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE05Ljg2IDE2LjY4TDguNjggMTcuODZMNy41IDE2LjY4TDYuMzIgMTcuODZMNS4xNCAxNi42OEw2LjMyIDE1LjVMNS4xNCAxNC4zMkw2LjMyIDEzLjE0TDcuNSAxNC4zMkw4LjY4IDEzLjE0TDkuODYgMTQuMzJMOC42OCAxNS41TDkuODYgMTYuNjhNMTguODYgMTYuNjhMMTcuNjggMTcuODZMMTYuNSAxNi42OEwxNS4zMiAxNy44NkwxNC4xNCAxNi42OEwxNS4zMiAxNS41TDE0LjE0IDE0LjMyTDE1LjMyIDEzLjE0TDE2LjUgMTQuMzJMMTcuNjggMTMuMTRMMTguODYgMTQuMzJMMTcuNjggMTUuNUwxOC44NiAxNi42OFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdERlYWRPdXRsaW5lID0gXCJNMTAuNjIgMTQuNDRMOS41NiAxNS41TDEwLjYyIDE2LjU2TDkuNTYgMTcuNjJMOC41IDE2LjU2TDcuNDQgMTcuNjJMNi4zOCAxNi41Nkw3LjQ0IDE1LjVMNi4zOCAxNC40NEw3LjQ0IDEzLjM4TDguNSAxNC40NEw5LjU2IDEzLjM4TDEwLjYyIDE0LjQ0TTE2LjU2IDEzLjM4TDE1LjUgMTQuNDRMMTQuNDQgMTMuMzhMMTMuMzggMTQuNDRMMTQuNDQgMTUuNUwxMy4zOCAxNi41NkwxNC40NCAxNy42MkwxNS41IDE2LjU2TDE2LjU2IDE3LjYyTDE3LjYyIDE2LjU2TDE2LjU2IDE1LjVMMTcuNjIgMTQuNDRMMTYuNTYgMTMuMzhNMjMgMTVWMThDMjMgMTguNTUgMjIuNTUgMTkgMjIgMTlIMjFWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjE5SDJDMS40NSAxOSAxIDE4LjU1IDEgMThWMTVDMSAxNC40NSAxLjQ1IDE0IDIgMTRIM0MzIDEwLjEzIDYuMTMgNyAxMCA3SDExVjUuNzNDMTAuNCA1LjM5IDEwIDQuNzQgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJTMTQgMi45IDE0IDRDMTQgNC43NCAxMy42IDUuMzkgMTMgNS43M1Y3SDE0QzE3Ljg3IDcgMjEgMTAuMTMgMjEgMTRIMjJDMjIuNTUgMTQgMjMgMTQuNDUgMjMgMTVNMjEgMTZIMTlWMTRDMTkgMTEuMjQgMTYuNzYgOSAxNCA5SDEwQzcuMjQgOSA1IDExLjI0IDUgMTRWMTZIM1YxN0g1VjIwSDE5VjE3SDIxVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90RXhjaXRlZCA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE04LjY4IDE3LjA0TDcuNSAxNS44Nkw2LjMyIDE3LjA0TDUuMTQgMTUuODZMNy41IDEzLjVMOS44NiAxNS44Nkw4LjY4IDE3LjA0TTE3LjY4IDE3LjA0TDE2LjUgMTUuODZMMTUuMzIgMTcuMDRMMTQuMTQgMTUuODZMMTYuNSAxMy41TDE4Ljg2IDE1Ljg2TDE3LjY4IDE3LjA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90RXhjaXRlZE91dGxpbmUgPSBcIk0yMiAxNEgyMUMyMSAxMC4xMyAxNy44NyA3IDE0IDdIMTNWNS43M0MxMy42IDUuMzkgMTQgNC43NCAxNCA0QzE0IDIuOSAxMy4xMSAyIDEyIDJTMTAgMi45IDEwIDRDMTAgNC43NCAxMC40IDUuMzkgMTEgNS43M1Y3SDEwQzYuMTMgNyAzIDEwLjEzIDMgMTRIMkMxLjQ1IDE0IDEgMTQuNDUgMSAxNVYxOEMxIDE4LjU1IDEuNDUgMTkgMiAxOUgzVjIwQzMgMjEuMTEgMy45IDIyIDUgMjJIMTlDMjAuMTEgMjIgMjEgMjEuMTEgMjEgMjBWMTlIMjJDMjIuNTUgMTkgMjMgMTguNTUgMjMgMThWMTVDMjMgMTQuNDUgMjIuNTUgMTQgMjIgMTRNMjEgMTdIMTlWMjBINVYxN0gzVjE2SDVWMTRDNSAxMS4yNCA3LjI0IDkgMTAgOUgxNEMxNi43NiA5IDE5IDExLjI0IDE5IDE0VjE2SDIxVjE3TTguNSAxMy41TDEwLjg2IDE1Ljg2TDkuNjggMTcuMDRMOC41IDE1Ljg2TDcuMzIgMTcuMDRMNi4xNCAxNS44Nkw4LjUgMTMuNU0xNS41IDEzLjVMMTcuODYgMTUuODZMMTYuNjggMTcuMDRMMTUuNSAxNS44NkwxNC4zMiAxNy4wNEwxMy4xNCAxNS44NkwxNS41IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RIYXBweSA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE05Ljc5IDE2LjVDOS40IDE1LjYyIDguNTMgMTUgNy41IDE1UzUuNiAxNS42MiA1LjIxIDE2LjVDNS4wOCAxNi4xOSA1IDE1Ljg2IDUgMTUuNUM1IDE0LjEyIDYuMTIgMTMgNy41IDEzUzEwIDE0LjEyIDEwIDE1LjVDMTAgMTUuODYgOS45MiAxNi4xOSA5Ljc5IDE2LjVNMTguNzkgMTYuNUMxOC40IDE1LjYyIDE3LjUgMTUgMTYuNSAxNVMxNC42IDE1LjYyIDE0LjIxIDE2LjVDMTQuMDggMTYuMTkgMTQgMTUuODYgMTQgMTUuNUMxNCAxNC4xMiAxNS4xMiAxMyAxNi41IDEzUzE5IDE0LjEyIDE5IDE1LjVDMTkgMTUuODYgMTguOTIgMTYuMTkgMTguNzkgMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdEhhcHB5T3V0bGluZSA9IFwiTTEwLjUgMTUuNUMxMC41IDE1Ljg3IDEwLjQgMTYuMiAxMC4yMiAxNi41QzkuODggMTUuOTEgOS4yNCAxNS41IDguNSAxNS41UzcuMTIgMTUuOTEgNi43OCAxNi41QzYuNjEgMTYuMiA2LjUgMTUuODcgNi41IDE1LjVDNi41IDE0LjQgNy40IDEzLjUgOC41IDEzLjVTMTAuNSAxNC40IDEwLjUgMTUuNU0yMyAxNVYxOEMyMyAxOC41NSAyMi41NSAxOSAyMiAxOUgyMVYyMEMyMSAyMS4xMSAyMC4xMSAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjExIDMgMjBWMTlIMkMxLjQ1IDE5IDEgMTguNTUgMSAxOFYxNUMxIDE0LjQ1IDEuNDUgMTQgMiAxNEgzQzMgMTAuMTMgNi4xMyA3IDEwIDdIMTFWNS43M0MxMC40IDUuMzkgMTAgNC43NCAxMCA0QzEwIDIuOSAxMC45IDIgMTIgMlMxNCAyLjkgMTQgNEMxNCA0Ljc0IDEzLjYgNS4zOSAxMyA1LjczVjdIMTRDMTcuODcgNyAyMSAxMC4xMyAyMSAxNEgyMkMyMi41NSAxNCAyMyAxNC40NSAyMyAxNU0yMSAxNkgxOVYxNEMxOSAxMS4yNCAxNi43NiA5IDE0IDlIMTBDNy4yNCA5IDUgMTEuMjQgNSAxNFYxNkgzVjE3SDVWMjBIMTlWMTdIMjFWMTZNMTUuNSAxMy41QzE0LjQgMTMuNSAxMy41IDE0LjQgMTMuNSAxNS41QzEzLjUgMTUuODcgMTMuNjEgMTYuMiAxMy43OCAxNi41QzE0LjEyIDE1LjkxIDE0Ljc2IDE1LjUgMTUuNSAxNS41UzE2Ljg4IDE1LjkxIDE3LjIyIDE2LjVDMTcuNCAxNi4yIDE3LjUgMTUuODcgMTcuNSAxNS41QzE3LjUgMTQuNCAxNi42MSAxMy41IDE1LjUgMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdEluZHVzdHJpYWwgPSBcIk0xOC40MSw0TDE2LDYuNDFWNi41OUwxOC40MSw5SDIyVjExSDE3LjU5TDE2LDkuNDFWMTJIMTVBMiwyIDAgMCwxIDEzLDEwVjcuNUg5Ljg2QzkuNzcsNy44NyA5LjYyLDguMjIgOS40Miw4LjU1TDE1LjE4LDE5SDIwQTIsMiAwIDAsMSAyMiwyMVYyMkgyVjIxQTIsMiAwIDAsMSA0LDE5SDEwLjYxTDUuOTIsMTAuNUM0LjEyLDEwLjQ3IDIuNTYsOS4yNCAyLjExLDcuNUMxLjU2LDUuMzYgMi44NSwzLjE4IDUsMi42M0M3LjEzLDIuMDggOS4zMSwzLjM2IDkuODYsNS41SDEzVjNBMiwyIDAgMCwxIDE1LDFIMTZWMy41OUwxNy41OSwySDIyVjRIMTguNDFNNiw0LjVBMiwyIDAgMCwwIDQsNi41QTIsMiAwIDAsMCA2LDguNUEyLDIgMCAwLDAgOCw2LjVBMiwyIDAgMCwwIDYsNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90TG92ZSA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE05LjcgMTUuNDVMOC45NyAxNi4xOEw3LjUgMTcuNjVMNS4zIDE1LjQ1QzQuOSAxNS4wNSA0LjkgMTQuMzkgNS4zIDE0QzUuNzEgMTMuNTggNi4zNiAxMy41OCA2Ljc3IDE0TDcuNSAxNC43Mkw4LjIzIDE0QzguNjQgMTMuNTggOS4yOSAxMy41OCA5LjcgMTRDMTAuMSAxNC4zOSAxMC4xIDE1LjA1IDkuNyAxNS40NU0xOC43IDE1LjQ1TDE3Ljk3IDE2LjE4TDE2LjUgMTcuNjVMMTQuMyAxNS40NUMxMy45IDE1LjA1IDEzLjkgMTQuMzkgMTQuMyAxNEMxNC43MSAxMy41OCAxNS4zNiAxMy41OCAxNS43NyAxNEwxNi41IDE0LjcyTDE3LjIzIDE0QzE3LjY0IDEzLjU4IDE4LjI5IDEzLjU4IDE4LjcgMTRDMTkuMSAxNC4zOSAxOS4xIDE1LjA1IDE4LjcgMTUuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RMb3ZlT3V0bGluZSA9IFwiTTIyIDE0SDIxQzIxIDEwLjEzIDE3Ljg3IDcgMTQgN0gxM1Y1LjczQzEzLjYgNS4zOSAxNCA0Ljc0IDE0IDRDMTQgMi45IDEzLjExIDIgMTIgMlMxMCAyLjkgMTAgNEMxMCA0Ljc0IDEwLjQgNS4zOSAxMSA1LjczVjdIMTBDNi4xMyA3IDMgMTAuMTMgMyAxNEgyQzEuNDUgMTQgMSAxNC40NSAxIDE1VjE4QzEgMTguNTUgMS40NSAxOSAyIDE5SDNWMjBDMyAyMS4xMSAzLjkgMjIgNSAyMkgxOUMyMC4xMSAyMiAyMSAyMS4xMSAyMSAyMFYxOUgyMkMyMi41NSAxOSAyMyAxOC41NSAyMyAxOFYxNUMyMyAxNC40NSAyMi41NSAxNCAyMiAxNE0yMSAxN0gxOVYyMEg1VjE3SDNWMTZINVYxNEM1IDExLjI0IDcuMjQgOSAxMCA5SDE0QzE2Ljc2IDkgMTkgMTEuMjQgMTkgMTRWMTZIMjFWMTdNMTAuNyAxNEMxMS4xIDE0LjM5IDExLjEgMTUuMDUgMTAuNyAxNS40NUw5Ljk3IDE2LjE4TDguNSAxNy42NUw2LjMgMTUuNDVDNS45IDE1LjA1IDUuOSAxNC4zOSA2LjMgMTRDNi43MSAxMy41OCA3LjM2IDEzLjU4IDcuNzcgMTRMOC41IDE0LjcyTDkuMjMgMTRDOS42NCAxMy41OCAxMC4yOSAxMy41OCAxMC43IDE0TTE3LjcgMTRDMTguMSAxNC4zOSAxOC4xIDE1LjA1IDE3LjcgMTUuNDVMMTYuOTcgMTYuMThMMTUuNSAxNy42NUwxMy4zIDE1LjQ1QzEyLjkgMTUuMDUgMTIuOSAxNC4zOSAxMy4zIDE0QzEzLjcxIDEzLjU4IDE0LjM2IDEzLjU4IDE0Ljc3IDE0TDE1LjUgMTQuNzJMMTYuMjMgMTRDMTYuNjQgMTMuNTggMTcuMjkgMTMuNTggMTcuNyAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdE1vd2VyID0gXCJNMSAxNFY1SDEzQzE4LjUgNSAyMyA5LjUgMjMgMTVWMTdIMjAuODNDMjAuNDIgMTguMTcgMTkuMzEgMTkgMTggMTlDMTYuNjkgMTkgMTUuNTggMTguMTcgMTUuMTcgMTdIMTBDOS4wOSAxOC4yMSA3LjY0IDE5IDYgMTlDMy4yNCAxOSAxIDE2Ljc2IDEgMTRNNiAxMUM0LjM0IDExIDMgMTIuMzQgMyAxNEMzIDE1LjY2IDQuMzQgMTcgNiAxN0M3LjY2IDE3IDkgMTUuNjYgOSAxNEM5IDEyLjM0IDcuNjYgMTEgNiAxMU0xNSAxMFYxMkgyMC4yNUMxOS45MiAxMS4yNyAxOS41IDEwLjYgMTkgMTBIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RNb3dlck91dGxpbmUgPSBcIk0xIDE0QzEgMTYuNzYgMy4yNCAxOSA2IDE5QzcuNjQgMTkgOS4wOSAxOC4yMSAxMCAxN0gxNS4xN0MxNS41OCAxOC4xNyAxNi43IDE5IDE4IDE5QzE5LjMxIDE5IDIwLjQyIDE4LjE3IDIwLjgzIDE3SDIzVjE1QzIzIDkuNSAxOC41IDUgMTMgNUgxVjE0TTIxIDE1SDEwLjlDMTAuOTcgMTQuNjggMTEgMTQuMzQgMTEgMTRDMTEgMTEuMjQgOC43NiA5IDYgOUM0Ljg3IDkgMy44NCA5LjM3IDMgMTBWN0gxMi41QzE1LjEgNyAxNy40MiA4LjE2IDE5IDEwSDE1VjEySDIwLjI1QzIwLjY3IDEyLjkyIDIwLjkyIDEzLjk0IDIxIDE1TTYgMTFDNy42NiAxMSA5IDEyLjM0IDkgMTRDOSAxNS42NiA3LjY2IDE3IDYgMTdDNC4zNCAxNyAzIDE1LjY2IDMgMTRDMyAxMi4zNCA0LjM0IDExIDYgMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9ib3RPZmYgPSBcIk0yMyAxNVYxOEMyMyAxOC41IDIyLjY0IDE4Ljg4IDIyLjE3IDE4Ljk3TDE4Ljk3IDE1Ljc3QzE5IDE1LjY4IDE5IDE1LjU5IDE5IDE1LjVDMTkgMTQuMTIgMTcuODggMTMgMTYuNSAxM0MxNi40MSAxMyAxNi4zMiAxMyAxNi4yMyAxMy4wM0wxMC4yIDdIMTFWNS43M0MxMC40IDUuMzkgMTAgNC43NCAxMCA0QzEwIDIuOSAxMC45IDIgMTIgMlMxNCAyLjkgMTQgNEMxNCA0Ljc0IDEzLjYgNS4zOSAxMyA1LjczVjdIMTRDMTcuODcgNyAyMSAxMC4xMyAyMSAxNEgyMkMyMi41NSAxNCAyMyAxNC40NSAyMyAxNU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS44OSAyMS43OEMxOS42MiAyMS45MiAxOS4zMiAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjExIDMgMjBWMTlIMkMxLjQ1IDE5IDEgMTguNTUgMSAxOFYxNUMxIDE0LjQ1IDEuNDUgMTQgMiAxNEgzQzMgMTEuNTMgNC4yOSA5LjM2IDYuMjIgOC4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTEwIDE1LjVDMTAgMTQuMTIgOC44OCAxMyA3LjUgMTNTNSAxNC4xMiA1IDE1LjUgNi4xMiAxOCA3LjUgMTggMTAgMTYuODggMTAgMTUuNU0xNi4wNyAxNy45NkwxNC4wNCAxNS45M0MxNC4yMyAxNi45NyAxNS4wNCAxNy43NyAxNi4wNyAxNy45NlpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdE9mZk91dGxpbmUgPSBcIk0yMyAxNVYxOEMyMyAxOC41IDIyLjY0IDE4Ljg4IDIyLjE3IDE4Ljk3TDIwLjIgMTdIMjFWMTZIMTkuMkwxOSAxNS44VjE0QzE5IDExLjI0IDE2Ljc2IDkgMTQgOUgxMi4yTDEwLjIgN0gxMVY1LjczQzEwLjQgNS4zOSAxMCA0Ljc0IDEwIDRDMTAgMi45IDEwLjkgMiAxMiAyUzE0IDIuOSAxNCA0QzE0IDQuNzQgMTMuNiA1LjM5IDEzIDUuNzNWN0gxNEMxNy44NyA3IDIxIDEwLjEzIDIxIDE0SDIyQzIyLjU1IDE0IDIzIDE0LjQ1IDIzIDE1TTguNSAxMy41QzcuNCAxMy41IDYuNSAxNC40IDYuNSAxNS41UzcuNCAxNy41IDguNSAxNy41IDEwLjUgMTYuNjEgMTAuNSAxNS41IDkuNjEgMTMuNSA4LjUgMTMuNU0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS44OSAyMS43OEMxOS42MiAyMS45MiAxOS4zMiAyMiAxOSAyMkg1QzMuOSAyMiAzIDIxLjExIDMgMjBWMTlIMkMxLjQ1IDE5IDEgMTguNTUgMSAxOFYxNUMxIDE0LjQ1IDEuNDUgMTQgMiAxNEgzQzMgMTEuNTMgNC4yOSA5LjM2IDYuMjIgOC4xMUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TTE4LjExIDIwTDE1LjYgMTcuNUMxNS41NyAxNy41IDE1LjUzIDE3LjUgMTUuNSAxNy41QzE0LjQgMTcuNSAxMy41IDE2LjYxIDEzLjUgMTUuNUMxMy41IDE1LjQ3IDEzLjUgMTUuNDMgMTMuNSAxNS40TDcuNyA5LjU5QzYuMSAxMC40MiA1IDEyLjA4IDUgMTRWMTZIM1YxN0g1VjIwSDE4LjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90T3V0bGluZSA9IFwiTTE3LjUgMTUuNUMxNy41IDE2LjYxIDE2LjYxIDE3LjUgMTUuNSAxNy41UzEzLjUgMTYuNjEgMTMuNSAxNS41IDE0LjQgMTMuNSAxNS41IDEzLjUgMTcuNSAxNC40IDE3LjUgMTUuNU04LjUgMTMuNUM3LjQgMTMuNSA2LjUgMTQuNCA2LjUgMTUuNVM3LjQgMTcuNSA4LjUgMTcuNSAxMC41IDE2LjYxIDEwLjUgMTUuNSA5LjYxIDEzLjUgOC41IDEzLjVNMjMgMTVWMThDMjMgMTguNTUgMjIuNTUgMTkgMjIgMTlIMjFWMjBDMjEgMjEuMTEgMjAuMTEgMjIgMTkgMjJINUMzLjkgMjIgMyAyMS4xMSAzIDIwVjE5SDJDMS40NSAxOSAxIDE4LjU1IDEgMThWMTVDMSAxNC40NSAxLjQ1IDE0IDIgMTRIM0MzIDEwLjEzIDYuMTMgNyAxMCA3SDExVjUuNzNDMTAuNCA1LjM5IDEwIDQuNzQgMTAgNEMxMCAyLjkgMTAuOSAyIDEyIDJTMTQgMi45IDE0IDRDMTQgNC43NCAxMy42IDUuMzkgMTMgNS43M1Y3SDE0QzE3Ljg3IDcgMjEgMTAuMTMgMjEgMTRIMjJDMjIuNTUgMTQgMjMgMTQuNDUgMjMgMTVNMjEgMTZIMTlWMTRDMTkgMTEuMjQgMTYuNzYgOSAxNCA5SDEwQzcuMjQgOSA1IDExLjI0IDUgMTRWMTZIM1YxN0g1VjIwSDE5VjE3SDIxVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvYm90VmFjdXVtID0gXCJNMTIsMkMxNC42NSwyIDE3LjE5LDMuMDYgMTkuMDcsNC45M0wxNy42NSw2LjM1QzE2LjE1LDQuODUgMTQuMTIsNCAxMiw0QzkuODgsNCA3Ljg0LDQuODQgNi4zNSw2LjM1TDQuOTMsNC45M0M2LjgxLDMuMDYgOS4zNSwyIDEyLDJNMy42Niw2LjVMNS4xMSw3Ljk0QzQuMzksOS4xNyA0LDEwLjU3IDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkMyMCwxMC41NyAxOS42MSw5LjE3IDE4Ljg4LDcuOTRMMjAuMzQsNi41QzIxLjQyLDguMTIgMjIsMTAuMDQgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkMyLDEwLjA0IDIuNTgsOC4xMiAzLjY2LDYuNU0xMiw2QTYsNiAwIDAsMSAxOCwxMkMxOCwxMy41OSAxNy4zNywxNS4xMiAxNi4yNCwxNi4yNEwxNC44MywxNC44M0MxNC4wOCwxNS41OCAxMy4wNiwxNiAxMiwxNkMxMC45NCwxNiA5LjkyLDE1LjU4IDkuMTcsMTQuODNMNy43NiwxNi4yNEM2LjYzLDE1LjEyIDYsMTMuNTkgNiwxMkE2LDYgMCAwLDEgMTIsNk0xMiw4QTEsMSAwIDAsMCAxMSw5QTEsMSAwIDAsMCAxMiwxMEExLDEgMCAwLDAgMTMsOUExLDEgMCAwLDAgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb2JvdFZhY3V1bVZhcmlhbnQgPSBcIk01LDNBMiwyIDAgMCwwIDMsNVY3SDVWNUgxOVY3SDIxVjVBMiwyIDAgMCwwIDE5LDNINU04LDdWOUgxNlY3SDhNMyw5VjEyQTksOSAwIDAsMCAxMiwyMUE5LDkgMCAwLDAgMjEsMTJWOUgxOVYxMkE3LDcgMCAwLDEgMTIsMTlBNyw3IDAgMCwxIDUsMTJWOUgzTTEyLDEyQTIuNSwyLjUgMCAwLDAgOS41LDE0LjVBMi41LDIuNSAwIDAsMCAxMiwxN0EyLjUsMi41IDAgMCwwIDE0LjUsMTQuNUEyLjUsMi41IDAgMCwwIDEyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvY2tldCA9IFwiTTIwIDIyTDE2LjE0IDIwLjQ1QzE2Ljg0IDE4LjkyIDE3LjM0IDE3LjM0IDE3LjY1IDE1LjczTDIwIDIyTTcuODYgMjAuNDVMNCAyMkw2LjM1IDE1LjczQzYuNjYgMTcuMzQgNy4xNiAxOC45MiA3Ljg2IDIwLjQ1TTEyIDJDMTIgMiAxNyA0IDE3IDEyQzE3IDE1LjEgMTYuMjUgMTcuNzUgMTUuMzMgMTkuODNDMTUgMjAuNTUgMTQuMjkgMjEgMTMuNSAyMUgxMC41QzkuNzEgMjEgOSAyMC41NSA4LjY3IDE5LjgzQzcuNzYgMTcuNzUgNyAxNS4xIDcgMTJDNyA0IDEyIDIgMTIgMk0xMiAxMkMxMy4xIDEyIDE0IDExLjEgMTQgMTBDMTQgOC45IDEzLjEgOCAxMiA4QzEwLjkgOCAxMCA4LjkgMTAgMTBDMTAgMTEuMSAxMC45IDEyIDEyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvY2tldExhdW5jaCA9IFwiTTEzLjEzIDIyLjE5TDExLjUgMTguMzZDMTMuMDcgMTcuNzggMTQuNTQgMTcgMTUuOSAxNi4wOUwxMy4xMyAyMi4xOU01LjY0IDEyLjVMMS44MSAxMC44N0w3LjkxIDguMUM3IDkuNDYgNi4yMiAxMC45MyA1LjY0IDEyLjVNMjEuNjEgMi4zOUMyMS42MSAyLjM5IDE2LjY2IC4yNjkgMTEgNS45M0M4LjgxIDguMTIgNy41IDEwLjUzIDYuNjUgMTIuNjRDNi4zNyAxMy4zOSA2LjU2IDE0LjIxIDcuMTEgMTQuNzdMOS4yNCAxNi44OUM5Ljc5IDE3LjQ1IDEwLjYxIDE3LjYzIDExLjM2IDE3LjM1QzEzLjUgMTYuNTMgMTUuODggMTUuMTkgMTguMDcgMTNDMjMuNzMgNy4zNCAyMS42MSAyLjM5IDIxLjYxIDIuMzlNMTQuNTQgOS40NkMxMy43NiA4LjY4IDEzLjc2IDcuNDEgMTQuNTQgNi42M1MxNi41OSA1Ljg1IDE3LjM3IDYuNjNDMTguMTQgNy40MSAxOC4xNSA4LjY4IDE3LjM3IDkuNDZDMTYuNTkgMTAuMjQgMTUuMzIgMTAuMjQgMTQuNTQgOS40Nk04Ljg4IDE2LjUzTDcuNDcgMTUuMTJMOC44OCAxNi41M002LjI0IDIyTDkuODggMTguMzZDOS41NCAxOC4yNyA5LjIxIDE4LjEyIDguOTEgMTcuOTFMNC44MyAyMkg2LjI0TTIgMjJIMy40MUw4LjE4IDE3LjI0TDYuNzYgMTUuODNMMiAyMC41OVYyMk0yIDE5LjE3TDYuMDkgMTUuMDlDNS44OCAxNC43OSA1LjczIDE0LjQ3IDUuNjQgMTQuMTJMMiAxNy43NlYxOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb2NrZXRMYXVuY2hPdXRsaW5lID0gXCJNMTMuMTMgMjIuMTlMMTEuNSAxOC4zNkMxMy4wNyAxNy43OCAxNC41NCAxNyAxNS45IDE2LjA5TDEzLjEzIDIyLjE5TTUuNjQgMTIuNUwxLjgxIDEwLjg3TDcuOTEgOC4xQzcgOS40NiA2LjIyIDEwLjkzIDUuNjQgMTIuNU0xOS4yMiA0QzE5LjUgNCAxOS43NSA0IDE5Ljk2IDQuMDVDMjAuMTMgNS40NCAxOS45NCA4LjMgMTYuNjYgMTEuNThDMTQuOTYgMTMuMjkgMTIuOTMgMTQuNiAxMC42NSAxNS40N0w4LjUgMTMuMzdDOS40MiAxMS4wNiAxMC43MyA5LjAzIDEyLjQyIDcuMzRDMTUuMTggNC41OCAxNy42NCA0IDE5LjIyIDRNMTkuMjIgMkMxNy4yNCAyIDE0LjI0IDIuNjkgMTEgNS45M0M4LjgxIDguMTIgNy41IDEwLjUzIDYuNjUgMTIuNjRDNi4zNyAxMy4zOSA2LjU2IDE0LjIxIDcuMTEgMTQuNzdMOS4yNCAxNi44OUM5LjYyIDE3LjI3IDEwLjEzIDE3LjUgMTAuNjYgMTcuNUMxMC44OSAxNy41IDExLjEzIDE3LjQ0IDExLjM2IDE3LjM1QzEzLjUgMTYuNTMgMTUuODggMTUuMTkgMTguMDcgMTNDMjMuNzMgNy4zNCAyMS42MSAyLjM5IDIxLjYxIDIuMzlTMjAuNyAyIDE5LjIyIDJNMTQuNTQgOS40NkMxMy43NiA4LjY4IDEzLjc2IDcuNDEgMTQuNTQgNi42M1MxNi41OSA1Ljg1IDE3LjM3IDYuNjNDMTguMTQgNy40MSAxOC4xNSA4LjY4IDE3LjM3IDkuNDZDMTYuNTkgMTAuMjQgMTUuMzIgMTAuMjQgMTQuNTQgOS40Nk04Ljg4IDE2LjUzTDcuNDcgMTUuMTJMOC44OCAxNi41M002LjI0IDIyTDkuODggMTguMzZDOS41NCAxOC4yNyA5LjIxIDE4LjEyIDguOTEgMTcuOTFMNC44MyAyMkg2LjI0TTIgMjJIMy40MUw4LjE4IDE3LjI0TDYuNzYgMTUuODNMMiAyMC41OVYyMk0yIDE5LjE3TDYuMDkgMTUuMDlDNS44OCAxNC43OSA1LjczIDE0LjQ3IDUuNjQgMTQuMTJMMiAxNy43NlYxOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb2NrZXRPdXRsaW5lID0gXCJNMTIgMkMxMiAyIDcgNCA3IDEyQzcgMTUuMSA3Ljc2IDE3Ljc1IDguNjcgMTkuODNDOSAyMC41NSA5LjcxIDIxIDEwLjUgMjFIMTMuNUMxNC4yOSAyMSAxNSAyMC41NSAxNS4zMyAxOS44M0MxNi4yNSAxNy43NSAxNyAxNS4xIDE3IDEyQzE3IDQgMTIgMiAxMiAyTTEzLjUgMTlIMTAuNUM5LjUgMTYuNzYgOSAxNC40MSA5IDEyQzkgNy4zNiAxMC45IDUuMiAxMiA0LjMzQzEzLjEgNS4yIDE1IDcuMzYgMTUgMTJDMTUgMTQuNDEgMTQuNSAxNi43NiAxMy41IDE5TTIwIDIyTDE2LjE0IDIwLjQ1QzE2Ljg0IDE4LjkyIDE3LjM0IDE3LjM0IDE3LjY1IDE1LjczTTcuODYgMjAuNDVMNCAyMkw2LjM1IDE1LjczQzYuNjYgMTcuMzQgNy4xNiAxOC45MiA3Ljg2IDIwLjQ1TTEyIDEyQzEwLjkgMTIgMTAgMTEuMSAxMCAxMEMxMCA4LjkgMTAuOSA4IDEyIDhDMTMuMSA4IDE0IDguOSAxNCAxMEMxNCAxMS4xIDEzLjEgMTIgMTIgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9kZW50ID0gXCJNMjEuMzMgMTcuMzlDMjIuNzMgMTguNjYgMjEuOCAyMSAxOS45MiAyMUgxMS4wNkM4LjI1IDIxIDYgMTguNzUgNiAxNS45NFYxNS44OUMzLjcgMTUuNDIgMiAxMy40MSAyIDExQzIgOC4yNSA0LjIyIDYgNyA2SDkuNUM5LjggNiAxMCA1Ljc3IDEwIDUuNVM5LjggNSA5LjUgNUg3VjNIOS41QzEwLjg4IDMgMTIgNC4xMyAxMiA1LjVDMTIgNi44OSAxMC44OCA4IDkuNSA4SDdDNS4zNCA4IDQgOS4zMyA0IDExQzQgMTIuMzcgNC45MiAxMy41IDYuMTQgMTMuODdDNi43IDExLjY3IDguNjcgMTAgMTEuMDYgMTBDMTEuODYgMTAgMTIuNjYgMTAuMjIgMTMuMzYgMTAuNTVDMTEuOTUgMTEuMzQgMTEgMTIuOCAxMSAxNC41QzExIDE1Ljc1IDExLjUgMTYuODcgMTIuMzMgMTcuNjdMMTMuMDMgMTYuOTdDMTIuMzggMTYuMzYgMTIgMTUuNDcgMTIgMTQuNUMxMiAxMS45MSAxNC4zNCAxMSAxNS41IDExQzE3LjU4IDExIDE5LjQ1IDEyLjg5IDE4Ljk0IDE1LjIzTDIxLjMzIDE3LjM5TTE4IDE5QzE4LjU2IDE5IDE5IDE4LjU2IDE5IDE4UzE4LjU2IDE3IDE4IDE3IDE3IDE3LjQ0IDE3IDE4IDE3LjQ0IDE5IDE4IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGxlclNrYXRlID0gXCJNMTksMTVDMTksMTUgMTksMTYgMTcsMTZDMTUsMTYgNCwxNiA0LDE2VjNIMTFMMTEuMjEsNC41SDkuMjRWNkgxMS40M0wxMS42NCw3LjVIOS4yNFY5SDExLjg2TDEyLDEwSDE0QzE0LDEwIDE5LDEwIDE5LDE1TTYuNSwxN0EyLjUsMi41IDAgMCwwIDQsMTkuNUEyLjUsMi41IDAgMCwwIDYuNSwyMkEyLjUsMi41IDAgMCwwIDksMTkuNUEyLjUsMi41IDAgMCwwIDYuNSwxN00xNi41LDE3QTIuNSwyLjUgMCAwLDAgMTQsMTkuNUEyLjUsMi41IDAgMCwwIDE2LjUsMjJBMi41LDIuNSAwIDAsMCAxOSwxOS41QTIuNSwyLjUgMCAwLDAgMTYuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb2xsZXJTa2F0ZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE4LjczIDIwLjYyQzE4LjMyIDIxLjQzIDE3LjUgMjIgMTYuNSAyMkMxNS4xMiAyMiAxNCAyMC44OCAxNCAxOS41QzE0IDE4LjUgMTQuNTcgMTcuNjggMTUuMzggMTcuMjdMMTQuMTEgMTZINFY1Ljg5TDEuMTEgM0wyLjM5IDEuNzNMMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNNMTkgMTVDMTkgMTAgMTQgMTAgMTQgMTBIMTMuMkwxOC43MiAxNS41QzE5IDE1LjI3IDE5IDE1IDE5IDE1TTExLjY0IDcuNUwxMS40MyA2SDkuMjRWNC41SDExLjIxTDExIDNINi4yTDEwLjcgNy41SDExLjY0TTYuNSAxN0M1LjEyIDE3IDQgMTguMTIgNCAxOS41UzUuMTIgMjIgNi41IDIyIDkgMjAuODggOSAxOS41IDcuODggMTcgNi41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGxlcmJsYWRlID0gXCJNMTksMTVDMTksMTUgMTksMTYgMTcsMTZDMTUsMTYgNCwxNiA0LDE2VjNIMTFMMTEuMjEsNC41SDkuMjRWNkgxMS40M0wxMS42NCw3LjVIOS4yNFY5SDExLjg2TDEyLDEwSDE0QzE0LDEwIDE5LDEwIDE5LDE1TTUuNSwxN0EyLjUsMi41IDAgMCwwIDMsMTkuNUEyLjUsMi41IDAgMCwwIDUuNSwyMkEyLjUsMi41IDAgMCwwIDgsMTkuNUEyLjUsMi41IDAgMCwwIDUuNSwxN00xNy41LDE3QTIuNSwyLjUgMCAwLDAgMTUsMTkuNUEyLjUsMi41IDAgMCwwIDE3LjUsMjJBMi41LDIuNSAwIDAsMCAyMCwxOS41QTIuNSwyLjUgMCAwLDAgMTcuNSwxN00xMS41LDE3QTIuNSwyLjUgMCAwLDAgOSwxOS41QTIuNSwyLjUgMCAwLDAgMTEuNSwyMkEyLjUsMi41IDAgMCwwIDE0LDE5LjVBMi41LDIuNSAwIDAsMCAxMS41LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGxlcmJsYWRlT2ZmID0gXCJNMjAuODQgMjIuNzNMMTkuMzIgMjEuMjFDMTguODYgMjEuNjkgMTguMjIgMjIgMTcuNSAyMkMxNi4xMiAyMiAxNSAyMC44OCAxNSAxOS41QzE1IDE4Ljc4IDE1LjMxIDE4LjE0IDE1Ljc5IDE3LjY4TDE0LjExIDE2SDRWNS44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTExLjY0IDcuNUwxMS40MyA2SDkuMjRWNC41SDExLjIxTDExIDNINi4yTDEwLjcgNy41SDExLjY0TTE5IDE1QzE5IDEwIDE0IDEwIDE0IDEwSDEzLjJMMTguNzIgMTUuNUMxOSAxNS4yNyAxOSAxNSAxOSAxNU0xMS41IDE3QzEwLjEyIDE3IDkgMTguMTIgOSAxOS41UzEwLjEyIDIyIDExLjUgMjIgMTQgMjAuODggMTQgMTkuNSAxMi44OCAxNyAxMS41IDE3TTUuNSAxN0M0LjEyIDE3IDMgMTguMTIgMyAxOS41UzQuMTIgMjIgNS41IDIyIDggMjAuODggOCAxOS41IDYuODggMTcgNS41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbGx1cGpzID0gXCJNMTkuNDYsOC42NEMxOS40NiwxMS4xMSAxOC4xMSwxMy4yNiAxNi4xMiwxNC40QzE2LDE0LjUgMTUuOTMsMTQuNjYgMTYsMTQuODFMMTkuNDEsMjEuNTVDMTkuNSwyMS43NiAxOS4zNiwyMiAxOS4xMywyMkg2LjFMNi4xNywyMS45NkM2LjY2LDIxLjY4IDEwLjA2LDE0Ljk3IDEzLjM4LDExLjc5QzE2LjcsOC42MSAxNy4xMiw5LjY3IDE1LjI5LDYuMjFDMTUuMjksNi4yMSAxNi43LDguOTYgMTUuNSw5LjE3QzE0LjU2LDkuMzQgMTIuNCw3LjI1IDEzLjIsNS4zN0MxNCwzLjUzIDE3LjE1LDMuODggMTguNiw1LjM4QzE5LjE1LDYuMzQgMTkuNDYsNy40NSAxOS40Niw4LjY0TTcuMTYsMTMuMTNDNS44NCwxNS41NiA1LDE3LjMzIDQuNTQsMTguNTdWMi4zMUM0LjU0LDIuMTQgNC42OCwyIDQuODUsMkgxMi45MkMxNS4yNiwyLjA0IDE3LjMxLDMuMjggMTguNDYsNS4xNUMxNy42Miw0LjEgMTYuMywzLjUgMTUsMy41QzEyLjUzLDMuNSAxMS45MSw0LjQgNy4xNiwxMy4xM1pcIjtcclxuZXhwb3J0IHZhciBtZGlSb21hbk51bWVyYWwxID0gXCJNMTQgN1Y5SDEzVjE1SDE0VjE3SDEwVjE1SDExVjlIMTBWN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb21hbk51bWVyYWwxMCA9IFwiTTkgN0wxMSAxMkw5IDE3SDExTDEyIDE0LjVMMTMgMTdIMTVMMTMgMTJMMTUgN0gxM0wxMiA5LjVMMTEgN0g5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbWFuTnVtZXJhbDIgPSBcIk0xMSA3VjlIMTBWMTVIMTFWMTdIN1YxNUg4VjlIN1Y3SDExTTE3IDdWOUgxNlYxNUgxN1YxN0gxM1YxNUgxNFY5SDEzVjdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsMyA9IFwiTTkgN1Y5SDhWMTVIOVYxN0g1VjE1SDZWOUg1VjdIOU0xNCA3VjlIMTNWMTVIMTRWMTdIMTBWMTVIMTFWOUgxMFY3SDE0TTE5IDdWOUgxOFYxNUgxOVYxN0gxNVYxNUgxNlY5SDE1VjdIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsNCA9IFwiTTEyIDdMMTQgMTdIMTZMMTggN0gxNkwxNSAxMkwxNCA3SDEyTTExIDdWOUgxMFYxNUgxMVYxN0g3VjE1SDhWOUg3VjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsNSA9IFwiTTkgN0wxMSAxN0gxM0wxNSA3SDEzTDEyIDEyTDExIDdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb21hbk51bWVyYWw2ID0gXCJNNiA3TDggMTdIMTBMMTIgN0gxMEw5IDEyTDggN0g2TTE3IDdWOUgxNlYxNUgxN1YxN0gxM1YxNUgxNFY5SDEzVjdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsNyA9IFwiTTQgN0w2IDE3SDhMMTAgN0g4TDcgMTJMNiA3SDRNMTUgN1Y5SDE0VjE1SDE1VjE3SDExVjE1SDEyVjlIMTFWN0gxNU0yMCA3VjlIMTlWMTVIMjBWMTdIMTZWMTVIMTdWOUgxNlY3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvbWFuTnVtZXJhbDggPSBcIk0xIDdMMyAxN0g1TDcgN0g1TDQgMTJMMyA3SDFNMTIgN1Y5SDExVjE1SDEyVjE3SDhWMTVIOVY5SDhWN0gxMk0xNyA3VjlIMTZWMTVIMTdWMTdIMTNWMTVIMTRWOUgxM1Y3SDE3TTIyIDdWOUgyMVYxNUgyMlYxN0gxOFYxNUgxOVY5SDE4VjdIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9tYW5OdW1lcmFsOSA9IFwiTTExIDdWOUgxMFYxNUgxMVYxN0g3VjE1SDhWOUg3VjdIMTFNMTIgN0wxNCAxMkwxMiAxN0gxNEwxNSAxNC41TDE2IDE3SDE4TDE2IDEyTDE4IDdIMTZMMTUgOS41TDE0IDdIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm9vbVNlcnZpY2UgPSBcIk0xMiw1QTIsMiAwIDAsMSAxNCw3QzE0LDcuMjQgMTMuOTYsNy40NyAxMy44OCw3LjY5QzE3Ljk1LDguNSAyMSwxMS45MSAyMSwxNkgzQzMsMTEuOTEgNi4wNSw4LjUgMTAuMTIsNy42OUMxMC4wNCw3LjQ3IDEwLDcuMjQgMTAsN0EyLDIgMCAwLDEgMTIsNU0yMiwxOUgyVjE3SDIyVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvb21TZXJ2aWNlT3V0bGluZSA9IFwiTTEyLDVBMiwyIDAgMCwxIDE0LDdDMTQsNy4yNCAxMy45Niw3LjQ3IDEzLjg4LDcuNjlDMTcuOTUsOC41IDIxLDExLjkxIDIxLDE2SDNDMywxMS45MSA2LjA1LDguNSAxMC4xMiw3LjY5QzEwLjA0LDcuNDcgMTAsNy4yNCAxMCw3QTIsMiAwIDAsMSAxMiw1TTIyLDE5SDJWMTdIMjJWMTlNMTIsOS41QzguODksOS41IDYuMjUsMTEuMzkgNS4zNCwxNEgxOC42NkMxNy43NSwxMS4zOSAxNS4xMSw5LjUgMTIsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdGF0ZTNkID0gXCJNNy40NywyMS41QzQuMiwxOS45NCAxLjg2LDE2Ljc2IDEuNSwxM0gwQzAuNSwxOS4xNiA1LjY2LDI0IDExLjk1LDI0TDEyLjYxLDIzLjk3TDguOCwyMC4xNkw3LjQ3LDIxLjVNOC4zNiwxNC45NkM4LjE3LDE0Ljk2IDgsMTQuOTMgNy44NCwxNC44OEM3LjY4LDE0LjgyIDcuNTUsMTQuNzUgNy40NCwxNC42NEM3LjMzLDE0LjU0IDcuMjQsMTQuNDIgNy4xOCwxNC4yN0M3LjEyLDE0LjEzIDcuMDksMTMuOTcgNy4wOSwxMy44SDUuNzlDNS43OSwxNC4xNiA1Ljg2LDE0LjUgNiwxNC43NUM2LjE0LDE1IDYuMzMsMTUuMjUgNi41NiwxNS40NEM2LjgsMTUuNjIgNy4wNywxNS43NiA3LjM4LDE1Ljg1QzcuNjgsMTUuOTUgOCwxNiA4LjM0LDE2QzguNzEsMTYgOS4wNiwxNS45NSA5LjM3LDE1Ljg1QzkuNjksMTUuNzUgOS45NywxNS42IDEwLjIsMTUuNDFDMTAuNDMsMTUuMjIgMTAuNjIsMTUgMTAuNzUsMTQuNjlDMTAuODgsMTQuNCAxMC45NSwxNC4wOCAxMC45NSwxMy43MkMxMC45NSwxMy41MyAxMC45MywxMy4zNCAxMC44OCwxMy4xNkMxMC44MywxMyAxMC43NiwxMi44MSAxMC42NSwxMi42NUMxMC41NSwxMi41IDEwLjQxLDEyLjM1IDEwLjI1LDEyLjIyQzEwLjA4LDEyLjA5IDkuODgsMTIgOS42NCwxMS45MUM5Ljg0LDExLjgyIDEwLDExLjcxIDEwLjE2LDExLjU4QzEwLjMxLDExLjQ1IDEwLjQzLDExLjMxIDEwLjUzLDExLjE2QzEwLjYzLDExIDEwLjcsMTAuODYgMTAuNzUsMTAuN0MxMC44LDEwLjU0IDEwLjgyLDEwLjM4IDEwLjgyLDEwLjIyQzEwLjgyLDkuODYgMTAuNzYsOS41NCAxMC42NCw5LjI2QzEwLjUsOSAxMC4zNSw4Ljc1IDEwLjEzLDguNTdDOS45Myw4LjM4IDkuNjYsOC4yNCA5LjM2LDguMTRDOS4wNSw4LjA1IDguNzEsOCA4LjM0LDhDOCw4IDcuNjUsOC4wNSA3LjM0LDguMTZDNy4wNCw4LjI3IDYuNzcsOC40MiA2LjU1LDguNjFDNi4zNCw4LjggNi4xNyw5IDYuMDQsOS4yOEM1LjkyLDkuNTQgNS44Niw5LjgyIDUuODYsMTAuMTNINy4xNkM3LjE2LDkuOTYgNy4xOSw5LjgxIDcuMjUsOS42OEM3LjMxLDkuNTUgNy4zOSw5LjQzIDcuNSw5LjM0QzcuNjEsOS4yNSA3LjczLDkuMTcgNy44OCw5LjEyQzguMDMsOS4wNyA4LjE4LDkuMDQgOC4zNiw5LjA0QzguNzYsOS4wNCA5LjA2LDkuMTQgOS4yNSw5LjM1QzkuNDQsOS41NSA5LjU0LDkuODQgOS41NCwxMC4yMUM5LjU0LDEwLjM5IDkuNSwxMC41NSA5LjQ2LDEwLjdDOS40MSwxMC44NSA5LjMyLDEwLjk3IDkuMjEsMTEuMDdDOS4xLDExLjE3IDguOTYsMTEuMjUgOC44LDExLjMxQzguNjQsMTEuMzcgOC40NCwxMS40IDguMjIsMTEuNEg3LjQ1VjEyLjQzSDguMjJDOC40NCwxMi40MyA4LjY0LDEyLjQ1IDguODIsMTIuNUM5LDEyLjU1IDkuMTUsMTIuNjMgOS4yNywxMi43M0M5LjM5LDEyLjg0IDkuNSwxMi45NyA5LjU2LDEzLjEzQzkuNjMsMTMuMjkgOS42NiwxMy41IDkuNjYsMTMuN0M5LjY2LDE0LjExIDkuNTQsMTQuNDIgOS4zMSwxNC42M0M5LjA4LDE0Ljg2IDguNzYsMTQuOTYgOC4zNiwxNC45Nk0xNi45MSw5LjA0QzE2LjU5LDguNzEgMTYuMjEsOC40NSAxNS43Nyw4LjI3QzE1LjM0LDguMDkgMTQuODUsOCAxNC4zMSw4SDExLjk1VjE2SDE0LjI1QzE0LjgsMTYgMTUuMzEsMTUuOTEgMTUuNzYsMTUuNzNDMTYuMjEsMTUuNTUgMTYuNiwxNS4zIDE2LjkyLDE0Ljk3QzE3LjI0LDE0LjY0IDE3LjUsMTQuMjQgMTcuNjYsMTMuNzhDMTcuODMsMTMuMzEgMTcuOTIsMTIuNzkgMTcuOTIsMTIuMjFWMTEuODFDMTcuOTIsMTEuMjMgMTcuODMsMTAuNzEgMTcuNjYsMTAuMjRDMTcuNSw5Ljc3IDE3LjIzLDkuMzcgMTYuOTEsOS4wNE0xNi41LDEyLjJDMTYuNSwxMi42MiAxNi40NywxMyAxNi4zOCwxMy4zM0MxNi4yOCwxMy42NiAxNi4xNCwxMy45NSAxNS45NSwxNC4xOEMxNS43NiwxNC40MSAxNS41LDE0LjU5IDE1LjI0LDE0LjcxQzE0Ljk1LDE0LjgzIDE0LjYyLDE0Ljg5IDE0LjI1LDE0Ljg5SDEzLjM0VjkuMTJIMTQuMzFDMTUuMDMsOS4xMiAxNS41OCw5LjM1IDE1Ljk1LDkuODFDMTYuMzMsMTAuMjcgMTYuNSwxMC45MyAxNi41LDExLjhNMTEuOTUsMEwxMS4yOSwwLjAzTDE1LjEsMy44NEwxNi40MywyLjVDMTkuNyw0LjA2IDIyLjA0LDcuMjMgMjIuMzksMTFIMjMuODlDMjMuMzksNC44NCAxOC4yNCwwIDExLjk1LDBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlM2RWYXJpYW50ID0gXCJNMTIsNUMxNi45Nyw1IDIxLDcuNjkgMjEsMTFDMjEsMTIuNjggMTkuOTYsMTQuMiAxOC4yOSwxNS4yOUMxOS4zNiwxNC40MiAyMCwxMy4zMiAyMCwxMi4xM0MyMCw5LjI5IDE2LjQyLDcgMTIsN1YxMEw4LDZMMTIsMlY1TTEyLDE5QzcuMDMsMTkgMywxNi4zMSAzLDEzQzMsMTEuMzIgNC4wNCw5LjggNS43MSw4LjcxQzQuNjQsOS41OCA0LDEwLjY4IDQsMTEuODhDNCwxNC43MSA3LjU4LDE3IDEyLDE3VjE0TDE2LDE4TDEyLDIyVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdGF0ZUxlZnQgPSBcIk0xMyw0LjA3VjFMOC40NSw1LjU1TDEzLDEwVjYuMDlDMTUuODQsNi41NyAxOCw5LjAzIDE4LDEyQzE4LDE0Ljk3IDE1Ljg0LDE3LjQzIDEzLDE3LjkxVjE5LjkzQzE2Ljk1LDE5LjQ0IDIwLDE2LjA4IDIwLDEyQzIwLDcuOTIgMTYuOTUsNC41NiAxMyw0LjA3TTcuMSwxOC4zMkM4LjI2LDE5LjIyIDkuNjEsMTkuNzYgMTEsMTkuOTNWMTcuOUMxMC4xMywxNy43NSA5LjI5LDE3LjQxIDguNTQsMTYuODdMNy4xLDE4LjMyTTYuMDksMTNINC4wN0M0LjI0LDE0LjM5IDQuNzksMTUuNzMgNS42OSwxNi44OUw3LjEsMTUuNDdDNi41OCwxNC43MiA2LjIzLDEzLjg4IDYuMDksMTNNNy4xMSw4LjUzTDUuNyw3LjExQzQuOCw4LjI3IDQuMjQsOS42MSA0LjA3LDExSDYuMDlDNi4yMywxMC4xMyA2LjU4LDkuMjggNy4xMSw4LjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdGF0ZUxlZnRWYXJpYW50ID0gXCJNNCwySDdBMiwyIDAgMCwxIDksNFYyMEEyLDIgMCAwLDEgNywyMkg0QTIsMiAwIDAsMSAyLDIwVjRBMiwyIDAgMCwxIDQsMk0yMCwxNUEyLDIgMCAwLDEgMjIsMTdWMjBBMiwyIDAgMCwxIDIwLDIySDExVjE1SDIwTTE0LDRBOCw4IDAgMCwxIDIyLDEyTDIxLjk0LDEzSDE5LjkyTDIwLDEyQTYsNiAwIDAsMCAxNCw2VjlMMTAsNUwxNCwxVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlT3JiaXQgPSBcIk04LDE0LjI1TDQuNzUsMTFIN0M3LjI1LDUuMzkgOS4zOSwxIDEyLDFDMTQsMSAxNS43NywzLjY0IDE2LjU1LDcuNDVDMjAuMzYsOC4yMyAyMywxMCAyMywxMkMyMywxMy44MyAyMC44MywxNS40MyAxNy42LDE2LjNMMTcuODksMTQuMjdDMTkuOCwxMy43MiAyMSwxMi45MSAyMSwxMkMyMSwxMC45NCAxOS4zNSwxMCAxNi44Nyw5LjVDMTYuOTUsMTAuMjkgMTcsMTEuMTMgMTcsMTJDMTcsMTguMDggMTQuNzYsMjMgMTIsMjNDMTAuMTcsMjMgOC41NywyMC44MyA3LjcsMTcuNkw5LjczLDE3Ljg5QzEwLjI4LDE5LjggMTEuMDksMjEgMTIsMjFDMTMuNjYsMjEgMTUsMTYuOTcgMTUsMTJDMTUsMTEgMTQuOTUsMTAuMDUgMTQuODUsOS4xNUMxMy45NSw5LjA1IDEzLDkgMTIsOUwxMC4xNCw5LjA2TDEwLjQzLDcuMDVMMTIsN0MxMi44Nyw3IDEzLjcxLDcuMDUgMTQuNSw3LjEzQzE0LDQuNjUgMTMuMDYsMyAxMiwzQzEwLjQ2LDMgOS4xOCw2LjUgOSwxMUgxMS4yNUw4LDE0LjI1TTE0LjI1LDE2TDExLDE5LjI1VjE3QzUuMzksMTYuNzUgMSwxNC42MSAxLDEyQzEsMTAuMTcgMy4xNyw4LjU3IDYuNCw3LjdMNi4xMSw5LjczQzQuMiwxMC4yOCAzLDExLjA5IDMsMTJDMywxMy41NCA2LjUsMTQuODIgMTEsMTVWMTIuNzVMMTQuMjUsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlUmlnaHQgPSBcIk0xNi44OSwxNS41TDE4LjMxLDE2Ljg5QzE5LjIxLDE1LjczIDE5Ljc2LDE0LjM5IDE5LjkzLDEzSDE3LjkxQzE3Ljc3LDEzLjg3IDE3LjQzLDE0LjcyIDE2Ljg5LDE1LjVNMTMsMTcuOVYxOS45MkMxNC4zOSwxOS43NSAxNS43NCwxOS4yMSAxNi45LDE4LjMxTDE1LjQ2LDE2Ljg3QzE0LjcxLDE3LjQxIDEzLjg3LDE3Ljc2IDEzLDE3LjlNMTkuOTMsMTFDMTkuNzYsOS42MSAxOS4yMSw4LjI3IDE4LjMxLDcuMTFMMTYuODksOC41M0MxNy40Myw5LjI4IDE3Ljc3LDEwLjEzIDE3LjkxLDExTTE1LjU1LDUuNTVMMTEsMVY0LjA3QzcuMDYsNC41NiA0LDcuOTIgNCwxMkM0LDE2LjA4IDcuMDUsMTkuNDQgMTEsMTkuOTNWMTcuOTFDOC4xNiwxNy40MyA2LDE0Ljk3IDYsMTJDNiw5LjAzIDguMTYsNi41NyAxMSw2LjA5VjEwTDE1LjU1LDUuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm90YXRlUmlnaHRWYXJpYW50ID0gXCJNMTAsNFYxTDE0LDVMMTAsOVY2QTYsNiAwIDAsMCA0LDEyTDQuMDgsMTNIMi4wNkwyLDEyQTgsOCAwIDAsMSAxMCw0TTE3LDJIMjBBMiwyIDAgMCwxIDIyLDRWMjBBMiwyIDAgMCwxIDIwLDIySDE3QTIsMiAwIDAsMSAxNSwyMFY0QTIsMiAwIDAsMSAxNywyTTQsMTVIMTNWMjJINEEyLDIgMCAwLDEgMiwyMFYxN0EyLDIgMCAwLDEgNCwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3VuZGVkQ29ybmVyID0gXCJNMTksMTlIMjFWMjFIMTlWMTlNMTksMTdIMjFWMTVIMTlWMTdNMywxM0g1VjExSDNWMTNNMywxN0g1VjE1SDNWMTdNMyw5SDVWN0gzVjlNMyw1SDVWM0gzVjVNNyw1SDlWM0g3VjVNMTUsMjFIMTdWMTlIMTVWMjFNMTEsMjFIMTNWMTlIMTFWMjFNMTUsMjFIMTdWMTlIMTVWMjFNNywyMUg5VjE5SDdWMjFNMywyMUg1VjE5SDNWMjFNMjEsOEE1LDUgMCAwLDAgMTYsM0gxMVY1SDE2QTMsMyAwIDAsMSAxOSw4VjEzSDIxVjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm91dGVyID0gXCJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyQzIgMTcuNSA2LjUgMjIgMTIgMjJDMTcuNSAyMiAyMiAxNy41IDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMk0xMiAyMEM3LjU4IDIwIDQgMTYuNDIgNCAxMkM0IDcuNTggNy41OCA0IDEyIDRDMTYuNDIgNCAyMCA3LjU4IDIwIDEyQzIwIDE2LjQyIDE2LjQyIDIwIDEyIDIwTTEzIDEzVjE2SDE1TDEyIDE5TDkgMTZIMTFWMTNNNSAxM0g4VjE1TDExIDEyTDggOVYxMUg1TTExIDExVjhIOUwxMiA1TDE1IDhIMTNWMTFNMTkgMTFIMTZWOUwxMyAxMkwxNiAxNVYxM0gxOVwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdXRlck5ldHdvcmsgPSBcIk01IDlDMy45IDkgMyA5LjkgMyAxMVYxNUMzIDE2LjExIDMuOSAxNyA1IDE3SDExVjE5SDEwQzkuNDUgMTkgOSAxOS40NSA5IDIwSDJWMjJIOUM5IDIyLjU1IDkuNDUgMjMgMTAgMjNIMTRDMTQuNTUgMjMgMTUgMjIuNTUgMTUgMjJIMjJWMjBIMTVDMTUgMTkuNDUgMTQuNTUgMTkgMTQgMTlIMTNWMTdIMTlDMjAuMTEgMTcgMjEgMTYuMTEgMjEgMTVWMTFDMjEgOS45IDIwLjExIDkgMTkgOUg1TTYgMTJIOFYxNEg2VjEyTTkuNSAxMkgxMS41VjE0SDkuNVYxMk0xMyAxMkgxNVYxNEgxM1YxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3V0ZXJXaXJlbGVzcyA9IFwiTTIwLjIsNS45TDIxLDUuMUMxOS42LDMuNyAxNy44LDMgMTYsM0MxNC4yLDMgMTIuNCwzLjcgMTEsNS4xTDExLjgsNS45QzEzLDQuOCAxNC41LDQuMiAxNiw0LjJDMTcuNSw0LjIgMTksNC44IDIwLjIsNS45TTE5LjMsNi43QzE4LjQsNS44IDE3LjIsNS4zIDE2LDUuM0MxNC44LDUuMyAxMy42LDUuOCAxMi43LDYuN0wxMy41LDcuNUMxNC4yLDYuOCAxNS4xLDYuNSAxNiw2LjVDMTYuOSw2LjUgMTcuOCw2LjggMTguNSw3LjVMMTkuMyw2LjdNMTksMTNIMTdWOUgxNVYxM0g1QTIsMiAwIDAsMCAzLDE1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVYxNUEyLDIgMCAwLDAgMTksMTNNOCwxOEg2VjE2SDhWMThNMTEuNSwxOEg5LjVWMTZIMTEuNVYxOE0xNSwxOEgxM1YxNkgxNVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3V0ZXJXaXJlbGVzc09mZiA9IFwiTTExLjggNS45TDExIDUuMUMxMi40IDMuNyAxNC4yIDMgMTYgM1MxOS42IDMuNyAyMSA1LjFMMjAuMiA1LjlDMTkgNC44IDE3LjUgNC4yIDE2IDQuMlMxMyA0LjggMTEuOCA1LjlNMjEgMTVDMjEgMTMuOSAyMC4xIDEzIDE5IDEzSDE3VjlIMTVWMTEuOEwyMSAxNy44VjE1TTE4LjUgNy41TDE5LjMgNi43QzE4LjQgNS44IDE3LjIgNS4zIDE2IDUuM1MxMy42IDUuOCAxMi43IDYuN0wxMy41IDcuNUMxNC4yIDYuOCAxNS4xIDYuNSAxNiA2LjVDMTYuOSA2LjUgMTcuOCA2LjggMTguNSA3LjVNMjIuMSAyMS41TDIwLjggMjIuOEwxOS4xIDIxSDVDMy45IDIxIDMgMjAuMSAzIDE5VjE1QzMgMTMuOSAzLjkgMTMgNSAxM0gxMS4xTDEuMSAzTDIuNCAxLjdMMjIuMSAyMS41TTggMTZINlYxOEg4VjE2TTExLjUgMTZIOS41VjE4SDExLjVWMTZNMTUgMTYuOUwxNC4xIDE2SDEzVjE4SDE1VjE2LjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUm91dGVyV2lyZWxlc3NTZXR0aW5ncyA9IFwiTTIwLjIsNC45QzE5LDMuOCAxNy41LDMuMiAxNiwzLjJDMTQuNSwzLjIgMTMsMy44IDExLjgsNC45TDExLDQuMUMxMi40LDIuNyAxNC4yLDIgMTYsMkMxNy44LDIgMTkuNiwyLjcgMjEsNC4xTDIwLjIsNC45TTE5LjMsNS43TDE4LjUsNi41QzE3LjgsNS44IDE2LjksNS41IDE2LDUuNUMxNS4xLDUuNSAxNC4yLDUuOCAxMy41LDYuNUwxMi43LDUuN0MxMy42LDQuOCAxNC44LDQuMyAxNiw0LjNDMTcuMiw0LjMgMTguNCw0LjggMTkuMyw1LjdNMTksMTJBMiwyIDAgMCwxIDIxLDE0VjE4QTIsMiAwIDAsMSAxOSwyMEg1QTIsMiAwIDAsMSAzLDE4VjE0QTIsMiAwIDAsMSA1LDEySDE1VjhIMTdWMTJIMTlNOCwxN1YxNUg2VjE3SDhNMTEuNSwxN1YxNUg5LjVWMTdIMTEuNU0xNSwxN1YxNUgxM1YxN0gxNU03LDIySDlWMjRIN1YyMk0xMSwyMkgxM1YyNEgxMVYyMk0xNSwyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3V0ZXMgPSBcIk0xMSwxMEg1TDMsOEw1LDZIMTFWM0wxMiwyTDEzLDNWNEgxOUwyMSw2TDE5LDhIMTNWMTBIMTlMMjEsMTJMMTksMTRIMTNWMjBBMiwyIDAgMCwxIDE1LDIySDlBMiwyIDAgMCwxIDExLDIwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJvdXRlc0Nsb2NrID0gXCJNMTYuNSAxM0gxNVYxNi42OUwxOC4xOSAxOC41M0wxOC45NCAxNy4yM0wxNi41IDE1LjgyVjEzTTE2IDlDMTQuMDQgOSAxMi4yNyA5LjgyIDExIDExLjEyVjdIMTdMMTkgNUwxNyAzSDExVjJMMTAgMUw5IDJWNkgzTDEgOEwzIDEwSDlWMjBDNy45IDIwIDcgMjAuOSA3IDIySDEyLjQxQzEzLjQ2IDIyLjYzIDE0LjY5IDIzIDE2IDIzQzE5Ljg3IDIzIDIzIDE5Ljg3IDIzIDE2UzE5Ljg3IDkgMTYgOU0xNiAyMC44NUMxMy4zMiAyMC44NSAxMS4xNSAxOC42OCAxMS4xNSAxNlMxMy4zMiAxMS4xNSAxNiAxMS4xNSAyMC44NSAxMy4zMiAyMC44NSAxNiAxOC42OCAyMC44NSAxNiAyMC44NVpcIjtcclxuZXhwb3J0IHZhciBtZGlSb3dpbmcgPSBcIk04LjUsMTQuNUw0LDE5TDUuNSwyMC41TDksMTdIMTFMOC41LDE0LjVNMTUsMUEyLDIgMCAwLDAgMTMsM0EyLDIgMCAwLDAgMTUsNUEyLDIgMCAwLDAgMTcsM0EyLDIgMCAwLDAgMTUsMU0yMSwyMUwxOCwyNEwxNSwyMVYxOS41TDcuOTEsMTIuNDFDNy42LDEyLjQ2IDcuMywxMi41IDcsMTIuNVYxMC4zMkM4LjY2LDEwLjM1IDEwLjYxLDkuNDUgMTEuNjcsOC4yOEwxMy4wNyw2LjczQzEzLjI2LDYuNSAxMy41LDYuMzUgMTMuNzYsNi4yM0MxNC4wNSw2LjA5IDE0LjM4LDYgMTQuNzIsNkgxNC43NUMxNiw2IDE3LDcgMTcsOC4yNlYxNEMxNywxNC44NSAxNi42NSwxNS42MiAxNi4wOCwxNi4xN0wxMi41LDEyLjU5VjEwLjMyQzExLjg3LDEwLjg0IDExLjA3LDExLjM0IDEwLjIxLDExLjcxTDE2LjUsMThIMThMMjEsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnNzID0gXCJNNi4xOCwxNS42NEEyLjE4LDIuMTggMCAwLDEgOC4zNiwxNy44MkM4LjM2LDE5IDcuMzgsMjAgNi4xOCwyMEM1LDIwIDQsMTkgNCwxNy44MkEyLjE4LDIuMTggMCAwLDEgNi4xOCwxNS42NE00LDQuNDRBMTUuNTYsMTUuNTYgMCAwLDEgMTkuNTYsMjBIMTYuNzNBMTIuNzMsMTIuNzMgMCAwLDAgNCw3LjI3VjQuNDRNNCwxMC4xQTkuOSw5LjkgMCAwLDEgMTMuOSwyMEgxMS4wN0E3LjA3LDcuMDcgMCAwLDAgNCwxMi45M1YxMC4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJzc0JveCA9IFwiTTUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNNNy41LDE1QTEuNSwxLjUgMCAwLDAgNiwxNi41QTEuNSwxLjUgMCAwLDAgNy41LDE4QTEuNSwxLjUgMCAwLDAgOSwxNi41QTEuNSwxLjUgMCAwLDAgNy41LDE1TTYsMTBWMTJBNiw2IDAgMCwxIDEyLDE4SDE0QTgsOCAwIDAsMCA2LDEwTTYsNlY4QTEwLDEwIDAgMCwxIDE2LDE4SDE4QTEyLDEyIDAgMCwwIDYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlSc3NPZmYgPSBcIk0yLjUsMy43N0wzLjc4LDIuNUwyMS41LDIwLjIyTDIwLjIzLDIxLjVMMTguNzMsMjBIMTYuNzNDMTYuNzMsMTkuMjUgMTYuNjcsMTguNSAxNi41NCwxNy44MUw2LjE5LDcuNDZDNS41LDcuMzMgNC43NSw3LjI3IDQsNy4yN1Y1LjI3TDIuNSwzLjc3TTYuMTgsMTUuNjRBMi4xOCwyLjE4IDAgMCwxIDguMzYsMTcuODJDOC4zNiwxOSA3LjM4LDIwIDYuMTgsMjBDNSwyMCA0LDE5IDQsMTcuODJBMi4xOCwyLjE4IDAgMCwxIDYuMTgsMTUuNjRNNCwxMC4xQTkuOSw5LjkgMCAwLDEgMTMuOSwyMEgxMS4wN0E3LjA3LDcuMDcgMCAwLDAgNCwxMi45M1YxMC4xTTkuMTMsNS4zMUMxMy41OSw2Ljg3IDE3LjEzLDEwLjQxIDE4LjY5LDE0Ljg3TDkuMTMsNS4zMVpcIjtcclxuZXhwb3J0IHZhciBtZGlSdWcgPSBcIk0xMiAxNEMxMC45IDE0IDEwIDEzLjExIDEwIDEyUzEwLjkgMTAgMTIgMTAgMTQgMTAuOSAxNCAxMiAxMy4xMSAxNCAxMiAxNE0yMyAxOUgxVjE3SDRWMTVIMVYxM0g0VjExSDFWOUg0VjdIMVY1SDIzVjdIMjBWOUgyM1YxMUgyMFYxM0gyM1YxNUgyMFYxN0gyM1YxOU0xMiAxNS45MkMxMi42MiAxNi42MiAxMy42NiAxNi44MSAxNC41IDE2LjMzQzE1LjM0IDE1Ljg1IDE1LjY5IDE0Ljg0IDE1LjQgMTMuOTZDMTYuMzEgMTMuNzggMTcgMTIuOTcgMTcgMTJTMTYuMzEgMTAuMjIgMTUuNCAxMC4wNEMxNS42OSA5LjE2IDE1LjM0IDguMTUgMTQuNSA3LjY3QzEzLjY2IDcuMTkgMTIuNjIgNy4zOCAxMiA4LjA4QzExLjM4IDcuMzggMTAuMzQgNy4xOSA5LjUgNy42N0M4LjY2IDguMTUgOC4zMSA5LjE2IDguNjEgMTAuMDRDNy42OSAxMC4yMiA3IDExLjAzIDcgMTJTNy42OSAxMy43OCA4LjYxIDEzLjk2QzguMzEgMTQuODQgOC42NiAxNS44NSA5LjUgMTYuMzNDMTAuMzQgMTYuODIgMTEuMzggMTYuNjIgMTIgMTUuOTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnVnYnkgPSBcIk0xNi4yMiwxNi4yMkMxOC4yNSwxNC4xOSAxOS4zMywxMS41IDE5LjQ1LDguMkMxOC4zNiwxMC42MSAxNi44MSwxMi44MSAxNC44MSwxNC44MUMxMi44MSwxNi44MSAxMC42MSwxOC4zNiA4LjIsMTkuNDVDMTEuNSwxOS4zNiAxNC4xNiwxOC4yOCAxNi4yMiwxNi4yMk03Ljc4LDcuNzhDNS43NSw5LjgxIDQuNjcsMTIuNSA0LjU1LDE1LjhDNSwxNC44IDUuNywxMy42NSA2LjYxLDEyLjM1QzcuNSwxMS4wNSA4LjM4LDEwIDkuMTksOS4xOUMxMS4xOSw3LjE5IDEzLjM5LDUuNjQgMTUuOCw0LjU1QzEyLjUsNC42NCA5Ljg0LDUuNzIgNy43OCw3Ljc4TTIwLjUsMy41QzIxLDQuMDUgMjEuMzQsNS4xMSAyMS40Nyw2LjdDMjEuNTksOC4zIDIxLjM1LDEwLjE2IDIwLjc0LDEyLjNDMjAuMTMsMTQuNDUgMTkuMTEsMTYuMjMgMTcuNjcsMTcuNjdDMTYuMzYsMTkgMTQuOCwxOS45NSAxMywyMC41NUMxMS4yMSwyMS4xNiA5LjQ0LDIxLjQ3IDcuNjksMjEuNDdDNS41NiwyMS40NyA0LjE3LDIxLjE0IDMuNSwyMC41QzMsMTkuOTUgMi42NiwxOC44OSAyLjUzLDE3LjNDMi40MSwxNS43IDIuNjUsMTMuODQgMy4yNiwxMS43QzMuODcsOS41NSA0Ljg5LDcuNzcgNi4zMyw2LjMzQzcuNjQsNSA5LjIsNC4wNSAxMSwzLjQ1QzEyLjc5LDIuODQgMTQuNTYsMi41MyAxNi4zMSwyLjUzQzE4LjQ0LDIuNTMgMTkuODMsMi44NiAyMC41LDMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlSdWxlciA9IFwiTTEuMzksMTguMzZMMy4xNiwxNi42TDQuNTgsMThMNS42NCwxNi45NUw0LjIyLDE1LjU0TDUuNjQsMTQuMTJMOC4xMSwxNi42TDkuMTcsMTUuNTRMNi43LDEzLjA2TDguMTEsMTEuNjVMOS41MywxMy4wNkwxMC41OSwxMkw5LjE3LDEwLjU5TDEwLjU5LDkuMTdMMTMuMDYsMTEuNjVMMTQuMTIsMTAuNTlMMTEuNjUsOC4xMUwxMy4wNiw2LjdMMTQuNDcsOC4xMUwxNS41NCw3LjA1TDE0LjEyLDUuNjRMMTUuNTQsNC4yMkwxOCw2LjdMMTkuMDcsNS42NEwxNi42LDMuMTZMMTguMzYsMS4zOUwyMi42MSw1LjY0TDUuNjQsMjIuNjFMMS4zOSwxOC4zNlpcIjtcclxuZXhwb3J0IHZhciBtZGlSdWxlclNxdWFyZSA9IFwiTTMsNVYyMUg5VjE5LjVIN1YxOEg5VjE2LjVINVYxNUg5VjEzLjVIN1YxMkg5VjEwLjVINVY5SDlWNUgxMC41VjlIMTJWN0gxMy41VjlIMTVWNUgxNi41VjlIMThWN0gxOS41VjlIMjFWM0g1QTIsMiAwIDAsMCAzLDVNNiw3QTEsMSAwIDAsMSA1LDZBMSwxIDAgMCwxIDYsNUExLDEgMCAwLDEgNyw2QTEsMSAwIDAsMSA2LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnVsZXJTcXVhcmVDb21wYXNzID0gXCJNMjAgMTkuODhWMjJMMTguMiAyMC44M0wxMy40MSAxMS44M0E0Ljk0IDQuOTQgMCAwIDAgMTUuMTkgMTAuODNNMTUgN0EzIDMgMCAwIDEgMTIgMTBBMy4yNyAzLjI3IDAgMCAxIDExLjU2IDEwTDUuOCAyMC44M0w0IDIyVjE5Ljg4TDkuNzkgOUEzIDMgMCAwIDEgMTIgNFYyQTEgMSAwIDAgMSAxMyAzVjQuMThBMyAzIDAgMCAxIDE1IDdNMTMgN0ExIDEgMCAxIDAgMTIgOEExIDEgMCAwIDAgMTMgN000LjIyIDEwTDYgMTEuOEw0LjU2IDE0LjU2TDIuMSAxMi4xTTEyIDE3Ljc2TDEwLjUgMTYuMjVMOSAxOUwxMiAyMkwxNSAxOUwxMy41MyAxNi4yM00xOS43OCAxMEwxOCAxMS44TDE5LjUgMTQuNTZMMjEuOSAxMi4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVJ1biA9IFwiTTEzLjUsNS41QzE0LjU5LDUuNSAxNS41LDQuNTggMTUuNSwzLjVDMTUuNSwyLjM4IDE0LjU5LDEuNSAxMy41LDEuNUMxMi4zOSwxLjUgMTEuNSwyLjM4IDExLjUsMy41QzExLjUsNC41OCAxMi4zOSw1LjUgMTMuNSw1LjVNOS44OSwxOS4zOEwxMC44OSwxNUwxMywxN1YyM0gxNVYxNS41TDEyLjg5LDEzLjVMMTMuNSwxMC41QzE0Ljc5LDEyIDE2Ljc5LDEzIDE5LDEzVjExQzE3LjA5LDExIDE1LjUsMTAgMTQuNjksOC41OEwxMy42OSw3QzEzLjI5LDYuMzggMTIuNjksNiAxMiw2QzExLjY5LDYgMTEuNSw2LjA4IDExLjE5LDYuMDhMNiw4LjI4VjEzSDhWOS41OEw5Ljc5LDguODhMOC4xOSwxN0wzLjI5LDE2TDIuODksMThMOS44OSwxOS4zOFpcIjtcclxuZXhwb3J0IHZhciBtZGlSdW5GYXN0ID0gXCJNMTYuNSw1LjVBMiwyIDAgMCwwIDE4LjUsMy41QTIsMiAwIDAsMCAxNi41LDEuNUEyLDIgMCAwLDAgMTQuNSwzLjVBMiwyIDAgMCwwIDE2LjUsNS41TTEyLjksMTkuNEwxMy45LDE1TDE2LDE3VjIzSDE4VjE1LjVMMTUuOSwxMy41TDE2LjUsMTAuNUMxNy44OSwxMi4wOSAxOS44OSwxMyAyMiwxM1YxMUMyMC4yNCwxMS4wMyAxOC42LDEwLjExIDE3LjcsOC42TDE2LjcsN0MxNi4zNCw2LjQgMTUuNyw2IDE1LDZDMTQuNyw2IDE0LjUsNi4xIDE0LjIsNi4xTDksOC4zVjEzSDExVjkuNkwxMi44LDguOUwxMS4yLDE3TDYuMywxNkw1LjksMThMMTIuOSwxOS40TTQsOUExLDEgMCAwLDEgMyw4QTEsMSAwIDAsMSA0LDdIN1Y5SDRNNSw1QTEsMSAwIDAsMSA0LDRBMSwxIDAgMCwxIDUsM0gxMFY1SDVNMywxM0ExLDEgMCAwLDEgMiwxMkExLDEgMCAwLDEgMywxMUg3VjEzSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpUnZUcnVjayA9IFwiTTIwIDhIMjJWNkwyMCA0SDNBMiAyIDAgMCAwIDEgNlYxNUEyIDIgMCAwIDAgMyAxN0g0QTMgMyAwIDAgMCA3IDIwQTMgMyAwIDAgMCAxMCAxN0gxNUEzIDMgMCAwIDAgMjEgMTdIMjNWMTJNNyAxOC41QTEuNSAxLjUgMCAwIDEgNyAxNS41QTEuNSAxLjUgMCAwIDEgNyAxOC41TTkgMTJIM1Y5SDlNMTQgMTVIMTFWOUgxNE0xOCAxOC41QTEuNSAxLjUgMCAxIDEgMTkuNSAxN0ExLjU0IDEuNTQgMCAwIDEgMTggMTguNU0xNyAxMlY5LjVIMTkuNUwyMS41IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhY2sgPSBcIk0xNiw5QzIwLDExIDIxLDE4IDIxLDE4QzIxLDE4IDIyLDIyIDE2LDIyQzEwLDIyIDgsMjIgOCwyMkMyLDIyIDMsMTggMywxOEMzLDE4IDQsMTEgOCw5TTE0LDRMMTIsMkwxMCw0TDYsMkw4LDdIMTZMMTgsMkwxNCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhY2tQZXJjZW50ID0gXCJNOCw3TDYsMkwxMCw0TDEyLDJMMTQsNEwxOCwyTDE2LDdIOE0xNiwyMkMxMCwyMiA4LDIyIDgsMjJDMiwyMiAzLDE4IDMsMThDMywxOCA0LDExIDgsOUgxNkMyMCwxMSAyMSwxOCAyMSwxOEMyMSwxOCAyMiwyMiAxNiwyMk03LjUsMTIuNUExLjUsMS41IDAgMCwwIDksMTRBMS41LDEuNSAwIDAsMCAxMC41LDEyLjVBMS41LDEuNSAwIDAsMCA5LDExQTEuNSwxLjUgMCAwLDAgNy41LDEyLjVNMTYuNSwxOC41QTEuNSwxLjUgMCAwLDAgMTUsMTdBMS41LDEuNSAwIDAsMCAxMy41LDE4LjVBMS41LDEuNSAwIDAsMCAxNSwyMEExLjUsMS41IDAgMCwwIDE2LjUsMTguNU0xNi41LDEyLjM1TDE1LjE1LDExTDcuNSwxOC42NUw4Ljg3LDIwTDE2LjUsMTIuMzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2FmZSA9IFwiTTQsNEEyLDIgMCAwLDAgMiw2VjE3QTIsMiAwIDAsMCA0LDE5VjIwSDZWMTlIMTdWMjBIMTlWMTlBMiwyIDAgMCwwIDIxLDE3VjE2SDIyVjE0SDIxVjlIMjJWN0gyMVY2QTIsMiAwIDAsMCAxOSw0SDRNNCw2SDE5VjE3SDRWNk0xMy41LDcuNUE0LDQgMCAwLDAgOS41LDExLjVBNCw0IDAgMCwwIDEzLjUsMTUuNUE0LDQgMCAwLDAgMTcuNSwxMS41QTQsNCAwIDAsMCAxMy41LDcuNU01LDlWMTRIN1Y5SDVNMTMuNSw5LjVBMiwyIDAgMCwxIDE1LjUsMTEuNUEyLDIgMCAwLDEgMTMuNSwxMy41QTIsMiAwIDAsMSAxMS41LDExLjVBMiwyIDAgMCwxIDEzLjUsOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhZmVTcXVhcmUgPSBcIk0yMCAyQzIxLjEgMiAyMiAyLjkgMjIgNFYyMEMyMiAyMS4xIDIxLjEgMjIgMjAgMjJIMTlWMjNIMTVWMjJIOVYyM0g1VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjRDMiAyLjkgMi45IDIgNCAySDIwTTE3IDEyQzE3IDExIDE2LjcgMTAgMTYuMiA5LjJMMTcuNyA3LjdMMTYuMyA2LjNMMTQuOCA3LjhDMTQgNy4zIDEzIDcgMTIgN0MxMSA3IDEwIDcuMyA5LjIgNy44TDcuOCA2LjNMNi4zIDcuOEw3LjggOS4zQzcuMyAxMCA3IDExIDcgMTJDNyAxMyA3LjMgMTQgNy44IDE0LjhMNi4zIDE2LjNMNy44IDE3LjdMOS4zIDE2LjJDMTAgMTYuNyAxMSAxNyAxMiAxN0MxMyAxNyAxNCAxNi43IDE0LjggMTYuMkwxNi4zIDE3LjdMMTcuNyAxNi4zTDE2LjIgMTQuOEMxNi43IDE0IDE3IDEzIDE3IDEyTTEyIDlDMTMuNyA5IDE1IDEwLjMgMTUgMTJDMTUgMTMuNyAxMy43IDE1IDEyIDE1QzEwLjMgMTUgOSAxMy43IDkgMTJDOSAxMC4zIDEwLjMgOSAxMiA5TTEyIDE0QzEzLjEgMTQgMTQgMTMuMSAxNCAxMkMxNCAxMC45IDEzLjEgMTAgMTIgMTBDMTAuOSAxMCAxMCAxMC45IDEwIDEyQzEwIDEzLjEgMTAuOSAxNCAxMiAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTYWZlU3F1YXJlT3V0bGluZSA9IFwiTTEwIDEyQzEwIDEwLjkgMTAuOSAxMCAxMiAxMEMxMy4xIDEwIDE0IDEwLjkgMTQgMTJDMTQgMTMuMSAxMy4xIDE0IDEyIDE0QzEwLjkgMTQgMTAgMTMuMSAxMCAxMk03LjggMTcuN0w2LjMgMTYuM0w3LjggMTQuOEM3LjMgMTQgNyAxMyA3IDEyQzcgMTEgNy4zIDEwIDcuOCA5LjNMNi4zIDcuOEw3LjggNi4zTDkuMiA3LjhDMTAgNy4zIDExIDcgMTIgN0MxMyA3IDE0IDcuMyAxNC44IDcuOEwxNi4zIDYuM0wxNy43IDcuN0wxNi4yIDkuMkMxNi43IDEwIDE3IDExIDE3IDEyQzE3IDEzIDE2LjcgMTQgMTYuMiAxNC44TDE3LjcgMTYuM0wxNi4zIDE3LjdMMTQuOCAxNi4yQzE0IDE2LjcgMTMgMTcgMTIgMTdDMTEgMTcgMTAgMTYuNyA5LjMgMTYuMkw3LjggMTcuN00xMiA5QzEwLjMgOSA5IDEwLjMgOSAxMkM5IDEzLjcgMTAuMyAxNSAxMiAxNUMxMy43IDE1IDE1IDEzLjcgMTUgMTJDMTUgMTAuMyAxMy43IDkgMTIgOU0yMCAyQzIxLjEgMiAyMiAyLjkgMjIgNFYyMEMyMiAyMS4xIDIxLjEgMjIgMjAgMjJIMTlWMjNIMTVWMjJIOVYyM0g1VjIySDRDMi45IDIyIDIgMjEuMSAyIDIwVjRDMiAyLjkgMi45IDIgNCAySDIwTTIwIDIwVjRINFYyMEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTYWZldHlHb2dnbGVzID0gXCJNMTgsOUMxOS4xMSw5IDIwLDkuODkgMjAsMTFWMTRDMjAsMTUuMTEgMTkuMTEsMTYgMTgsMTZIMTUuNzdMMTQuNTMsMTQuNzdDMTMuNzgsMTQgMTIuNzcsMTMuNiAxMS43LDEzLjZDMTAuNjMsMTMuNiA5LjYzLDE0IDguODcsMTQuNzdMNy42NCwxNkg2QzQuODksMTYgNCwxNS4xMSA0LDE0VjExQzQsOS44OSA0Ljg5LDkgNiw5SDE4TTE4LDdINkE0LDQgMCAwLDAgMiwxMUgyTDEsMTFWMTRIMlYxNEE0LDQgMCAwLDAgNiwxOEg4LjVDOC41NCwxNy45NCA4LjU5LDE3Ljg4IDEwLjI5LDE2LjE4QzEwLjY4LDE1Ljc5IDExLjE5LDE1LjYgMTEuNywxNS42QzEyLjIyLDE1LjYgMTIuNzMsMTUuNzkgMTMuMTIsMTYuMThMMTQuOTEsMThIMThBNCw0IDAgMCwwIDIyLDE0SDIyTDIzLDE0VjExSDIyVjExQTQsNCAwIDAsMCAxOCw3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhaWxCb2F0ID0gXCJNMTQsM0w1LDE0SDE0TTMsMTZMNiwyMUgxOEwyMSwxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhbGUgPSBcIk0xOC42NSwyLjg1TDE5LjI2LDYuNzFMMjIuNzcsOC41TDIxLDEyTDIyLjc4LDE1LjVMMTkuMjQsMTcuMjlMMTguNjMsMjEuMTVMMTQuNzQsMjAuNTRMMTEuOTcsMjMuM0w5LjE5LDIwLjVMNS4zMywyMS4xNEw0LjcxLDE3LjI1TDEuMjIsMTUuNDdMMywxMS45N0wxLjIzLDguNUw0Ljc0LDYuNjlMNS4zNSwyLjg2TDkuMjIsMy41TDEyLDAuNjlMMTQuNzcsMy40NkwxOC42NSwyLjg1TTkuNSw3QTEuNSwxLjUgMCAwLDAgOCw4LjVBMS41LDEuNSAwIDAsMCA5LjUsMTBBMS41LDEuNSAwIDAsMCAxMSw4LjVBMS41LDEuNSAwIDAsMCA5LjUsN00xNC41LDE0QTEuNSwxLjUgMCAwLDAgMTMsMTUuNUExLjUsMS41IDAgMCwwIDE0LjUsMTdBMS41LDEuNSAwIDAsMCAxNiwxNS41QTEuNSwxLjUgMCAwLDAgMTQuNSwxNE04LjQxLDE3TDE3LDguNDFMMTUuNTksN0w3LDE1LjU5TDguNDEsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2FsZXNmb3JjZSA9IFwiTTE4LjM4LDYuMzdDMTcuNjgsNi4zNyAxNy4wNyw2LjU4IDE2LjQ3LDYuNzhDMTUuNzcsNS41NyAxNC40Niw0Ljc3IDEzLjA1LDQuNzdDMTEuOTUsNC43NyAxMC45NSw1LjI3IDEwLjI0LDUuOTdDOS40NCw0Ljk3IDguMjMsNC4yNiA2LjgzLDQuMjZDNC41LDQuMjYgMi41LDYuMTcgMi41LDguNUMyLjUsOS4wOSAyLjcxLDkuNjkgMi45MSwxMC4yOUMxLjgsMTAuOSAxLDEyLjEgMSwxMy41QzEsMTUuNSAyLjYxLDE3LjIyIDQuNjIsMTcuMjJDNC45MiwxNy4yMiA1LjIyLDE3LjIyIDUuNDIsMTcuMTJDNS44MiwxOC42MyA3LjMzLDE5Ljc0IDkuMTQsMTkuNzRDMTAuODQsMTkuNzQgMTIuMjUsMTguNzMgMTIuNzUsMTcuMzJDMTMuMjYsMTcuNTMgMTMuNzYsMTcuNzMgMTQuMjYsMTcuNzNDMTUuNTcsMTcuNzMgMTYuNzcsMTcgMTcuMzcsMTUuOTJDMTcuNjgsMTYgMTgsMTYgMTguMjgsMTZDMjAuODksMTYgMjMsMTMuOTEgMjMsMTEuMkMyMy4xLDguNSAyMSw2LjM3IDE4LjM4LDYuMzdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2FzcyA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEwLDE1LjMzQzEwLjE2LDE1Ljg3IDEwLjE0LDE2LjM3IDEwLDE2LjgzQzEwLDE2Ljg4IDkuOTYsMTYuOTMgOS45NCwxN0M5LjkyLDE3IDkuOSwxNy4wNyA5Ljg3LDE3LjEyQzkuNzYsMTcuMzYgOS42LDE3LjU5IDkuNDEsMTcuNzlDOC44MywxOC40MyA4LDE4LjY3IDcuNjcsMTguNDdDNy4yOSwxOC4yNSA3LjUsMTcuMzUgOC4xNiwxNi42NEM4Ljg4LDE1Ljg4IDkuOTIsMTUuMzggOS45MiwxNS4zOFYxNS4zOEwxMCwxNS4zM00xOC4yNyw2LjI4QzE3LjgyLDQuNSAxNC44NywzLjkyIDEyLjA5LDQuOTFDMTAuNDMsNS41IDguNjMsNi40MiA3LjM0LDcuNjNDNS44MSw5LjA3IDUuNTYsMTAuMzIgNS42NiwxMC44NEM2LDEyLjY4IDguNTQsMTMuODkgOS41OCwxNC43OFYxNC43OUM5LjI4LDE0Ljk0IDcuMDQsMTYuMDcgNi41LDE3LjIzQzUuOTYsMTguNDUgNi42LDE5LjMzIDcsMTkuNDVDOC4zNCwxOS44MSA5LjY5LDE5LjE2IDEwLjQxLDE4LjA3QzExLjExLDE3LjAzIDExLjA2LDE1LjY4IDEwLjc1LDE1QzExLjE3LDE0LjkgMTEuNjYsMTQuODUgMTIuMjgsMTQuOTJDMTQuMDQsMTUuMTMgMTQuMzgsMTYuMjIgMTQuMzEsMTYuNjhDMTQuMjUsMTcuMTQgMTMuODgsMTcuMzkgMTMuNzYsMTcuNDdDMTMuNjQsMTcuNTQgMTMuNiwxNy41NyAxMy42MSwxNy42M0MxMy42MiwxNy43MSAxMy42OCwxNy43MSAxMy43OCwxNy42OUMxMy45MywxNy42NiAxNC43MSwxNy4zMiAxNC43NCwxNi40N0MxNC43OCwxNS4zOSAxMy43NSwxNC4xOSAxMS45MywxNC4yMkMxMS4xOCwxNC4yNCAxMC43MSwxNC4zMSAxMC4zNywxNC40NEwxMC4yOSwxNC4zNUM5LjE2LDEzLjE1IDcuMDgsMTIuMyA3LjE3LDEwLjY4QzcuMiwxMC4wOSA3LjQsOC41NSAxMS4xNyw2LjY3QzE0LjI1LDUuMTMgMTYuNzIsNS41NSAxNy4xNSw2LjVDMTcuNzYsNy44MyAxNS44MywxMC4zMiAxMi42MywxMC42OEMxMS40MSwxMC44MiAxMC43NiwxMC4zNCAxMC42LDEwLjE3QzEwLjQzLDEwIDEwLjQxLDkuOTcgMTAuMzUsMTBDMTAuMjQsMTAuMDcgMTAuMzEsMTAuMjMgMTAuMzUsMTAuMzNDMTAuNDQsMTAuNTggMTAuODQsMTEgMTEuNSwxMS4yNEMxMi4wOSwxMS40MyAxMy41MywxMS41NCAxNS4yNiwxMC44N0MxNy4yLDEwLjEyIDE4LjcyLDguMDMgMTguMjcsNi4yOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTYXRlbGxpdGUgPSBcIk01LDE4TDguNSwxMy41TDExLDE2LjVMMTQuNSwxMkwxOSwxOE01LDEyVjEwQTUsNSAwIDAsMCAxMCw1SDEyQTcsNyAwIDAsMSA1LDEyTTUsNUg4QTMsMyAwIDAsMSA1LDhNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTYXRlbGxpdGVVcGxpbmsgPSBcIk0xMS44NiwyTDExLjM0LDMuOTNDMTUuNzUsNC43OCAxOS4yLDguMjMgMjAuMDUsMTIuNjVMMjIsMTIuMTNDMjAuOTUsNy4wMyAxNi45NiwzLjA0IDExLjg2LDJNMTAuODIsNS44NkwxMC4zLDcuODFDMTMuMzQsOC4yNyAxNS43MiwxMC42NSAxNi4xOCwxMy42OEwxOC4xMiwxMy4xNkMxNy40Niw5LjQ0IDE0LjU1LDYuNSAxMC44Miw1Ljg2TTMuNzIsOS42OUMzLjI1LDEwLjczIDMsMTEuODYgMywxM0MzLDE0Ljk1IDMuNzEsMTYuODIgNSwxOC4yOFYyMkg4VjIwLjQxQzguOTUsMjAuOCA5Ljk3LDIxIDExLDIxQzEyLjE0LDIxIDEzLjI3LDIwLjc1IDE0LjMsMjAuMjhMMy43Miw5LjY5TTkuNzksOS43Nkw5LjI2LDExLjcyQTMsMyAwIDAsMSAxMi4yNiwxNC43MkwxNC4yMywxNC4yQzE0LDExLjg2IDEyLjEzLDEwIDkuNzksOS43NlpcIjtcclxuZXhwb3J0IHZhciBtZGlTYXRlbGxpdGVWYXJpYW50ID0gXCJNMTEuNjIsMUwxNy4yOCw2LjY3TDE1LjE2LDguNzlMMTMuMDQsNi42N0wxMS42Miw4LjA5TDEzLjk1LDEwLjQxTDEyLjc5LDExLjU4TDEzLjI0LDEyLjA0QzE0LjE3LDExLjYxIDE1LjMxLDExLjc3IDE2LjA3LDEyLjU0TDEyLjU0LDE2LjA3QzExLjc3LDE1LjMxIDExLjYxLDE0LjE3IDEyLjA0LDEzLjI0TDExLjU4LDEyLjc5TDEwLjQxLDEzLjk1TDguMDksMTEuNjJMNi42NywxMy4wNEw4Ljc5LDE1LjE2TDYuNjcsMTcuMjhMMSwxMS42MkwzLjE0LDkuNUw1LjI2LDExLjYyTDYuNjcsMTAuMjFMMy44NCw3LjM4QzMuMDYsNi42IDMuMDYsNS4zMyAzLjg0LDQuNTVMNC41NSwzLjg0QzUuMzMsMy4wNiA2LjYsMy4wNiA3LjM4LDMuODRMMTAuMjEsNi42N0wxMS42Miw1LjI2TDkuNSwzLjE0TDExLjYyLDFNMTgsMTRBNCw0IDAgMCwxIDE0LDE4VjE2QTIsMiAwIDAsMCAxNiwxNEgxOE0yMiwxNEE4LDggMCAwLDEgMTQsMjJWMjBBNiw2IDAgMCwwIDIwLDE0SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhdXNhZ2UgPSBcIk0zLjUsM0g5LjVMNy45Niw1LjMyQzkuMTYsNS44NyAxMCw3LjA5IDEwLDguNUE1LjUsNS41IDAgMCwwIDE1LjUsMTRDMTYuOTEsMTQgMTguMTMsMTQuODQgMTguNjgsMTYuMDRMMjEsMTQuNVYyMC41TDE4LjY4LDE4Ljk2QzE4LjEzLDIwLjE2IDE2LjkxLDIxIDE1LjUsMjFBMTIuNSwxMi41IDAgMCwxIDMsOC41QzMsNy4wOSAzLjg0LDUuODcgNS4wNCw1LjMyTDMuNSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNhd0JsYWRlID0gXCJNMjAsMTVDMjAsMTUgMTguNiwxNi4zIDIxLjEsMTdMMTguMywxOS44SDE1LjVDMTUuNSwxOS44IDEzLjYsMTkuNyAxNSwyMkgxMUw5LDIwQzksMjAgNy43LDE4LjYgNywyMS4xTDQuMiwxOC4zVjE1LjVDNC4yLDE1LjUgNC4zLDEzLjYgMiwxNVYxMUw0LDlDNCw5IDUuNCw3LjcgMi44LDcuMUw1LjYsNC4ySDguNUM4LjUsNC4yIDEwLjQsNC4zIDksMkgxM0wxNSw0QzE1LDQgMTYuMyw1LjQgMTcsMi44TDE5LjgsNS42VjguNUMxOS44LDguNSAxOS43LDEwLjQgMjIsOVYxM0wyMCwxNU0xNCwxMkEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2F3dG9vdGhXYXZlID0gXCJNMTEgMjJWNi44M0wyIDE2VjEzLjE3TDEzIDJWMTcuMTdMMjIgOFYxMC44M0wxMSAyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTYXhvcGhvbmUgPSBcIk00LDJBMSwxIDAgMCwwIDMsM0ExLDEgMCAwLDAgNCw0QTMsMyAwIDAsMSA3LDdWOC42Nkw3LDE1LjVDNywxOS4xIDkuOSwyMiAxMy41LDIyQzE3LjEsMjIgMjAsMTkuMSAyMCwxNS41VjEzQTEsMSAwIDAsMCAyMSwxMkExLDEgMCAwLDAgMjAsMTFIMTRBMSwxIDAgMCwwIDEzLDEyQTEsMSAwIDAsMCAxNCwxM1YxNUExLDEgMCAwLDEgMTMsMTZBMSwxIDAgMCwxIDEyLDE1VjExQTEsMSAwIDAsMCAxMywxMEExLDEgMCAwLDAgMTIsOVY4QTEsMSAwIDAsMCAxMyw3QTEsMSAwIDAsMCAxMiw2VjUuNUEzLjUsMy41IDAgMCwwIDguNSwySDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhbGUgPSBcIk04LjQ2LDE1LjA2TDcuMDUsMTYuNDdMNS42OCwxNS4xQzQuODIsMTYuMjEgNC4yNCwxNy41NCA0LjA2LDE5SDZWMjFIMlYyMEMyLDE1LjE2IDUuNDQsMTEuMTMgMTAsMTAuMlY4LjJMMiw1VjNIMjJWNUwxNCw4LjJWMTAuMkMxOC41NiwxMS4xMyAyMiwxNS4xNiAyMiwyMFYyMUgxOFYxOUgxOS45NEMxOS43NiwxNy41NCAxOS4xOCwxNi4yMSAxOC4zMiwxNS4xTDE2Ljk1LDE2LjQ3TDE1LjU0LDE1LjA2TDE2LjkxLDEzLjY4QzE1LjgsMTIuODIgMTQuNDYsMTIuMjQgMTMsMTIuMDZWMTRIMTFWMTIuMDZDOS41NCwxMi4yNCA4LjIsMTIuODIgNy4wOSwxMy42OEw4LjQ2LDE1LjA2TTEyLDE4QTIsMiAwIDAsMSAxNCwyMEEyLDIgMCAwLDEgMTIsMjJDMTEuNjgsMjIgMTEuMzgsMjEuOTMgMTEuMTIsMjEuNzlMNy4yNywyMEwxMS4xMiwxOC4yMUMxMS4zOCwxOC4wNyAxMS42OCwxOCAxMiwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY2FsZUJhbGFuY2UgPSBcIk0xMiwzQzEwLjczLDMgOS42LDMuOCA5LjE4LDVIM1Y3SDQuOTVMMiwxNEMxLjUzLDE2IDMsMTcgNS41LDE3QzgsMTcgOS41NiwxNiA5LDE0TDYuMDUsN0g5LjE3QzkuNSw3Ljg1IDEwLjE1LDguNSAxMSw4LjgzVjIwSDJWMjJIMjJWMjBIMTNWOC44MkMxMy44NSw4LjUgMTQuNSw3Ljg1IDE0LjgyLDdIMTcuOTVMMTUsMTRDMTQuNTMsMTYgMTYsMTcgMTguNSwxN0MyMSwxNyAyMi41NiwxNiAyMiwxNEwxOS4wNSw3SDIxVjVIMTQuODNDMTQuNCwzLjggMTMuMjcsMyAxMiwzTTEyLDVBMSwxIDAgMCwxIDEzLDZBMSwxIDAgMCwxIDEyLDdBMSwxIDAgMCwxIDExLDZBMSwxIDAgMCwxIDEyLDVNNS41LDEwLjI1TDcsMTRINEw1LjUsMTAuMjVNMTguNSwxMC4yNUwyMCwxNEgxN0wxOC41LDEwLjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjYWxlQmF0aHJvb20gPSBcIk01LDJIMTlBMiwyIDAgMCwxIDIxLDRWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWNEEyLDIgMCAwLDEgNSwyTTEyLDRBNCw0IDAgMCwwIDgsOEgxMS4yNkwxMC44NSw1LjIzTDEyLjksOEgxNkE0LDQgMCAwLDAgMTIsNE01LDEwVjIwSDE5VjEwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhbGVPZmYgPSBcIk0yMi4xMSAyMS40NkwyMC44NCAyMi43M0wxOS4xMSAyMUgxOFYxOS44OUwxMi4xMSAxNEgxMVYxMi44OUwxMC4zMSAxMi4yQTcuOTIgNy45MiAwIDAgMCA3LjA5IDEzLjY4TDguNDYgMTUuMDZMNy4wNSAxNi40N0w1LjY4IDE1LjFBNy45NCA3Ljk0IDAgMCAwIDQuMDYgMTlINlYyMUgyVjIwQTEwIDEwIDAgMCAxIDguNjggMTAuNTdMMy44NSA1Ljc0TDIgNVYzLjg5TDEuMTEgM0wyLjM5IDEuNzNNMjEuOTEgMTguNzFBMTAgMTAgMCAwIDAgMTQgMTAuMlY4LjJMMjIgNVYzSDYuMk0xMiAxOEExLjg0IDEuODQgMCAwIDAgMTEuMTIgMTguMjFMNy4yNyAyMEwxMS4xMiAyMS43OUExLjg0IDEuODQgMCAwIDAgMTIgMjJBMiAyIDAgMCAwIDEyIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjYW5IZWxwZXIgPSBcIk0wIDJBMiAyIDAgMCAxIDIgMEg2VjJIMlY2SDBWMk0yNCAyMkEyIDIgMCAwIDEgMjIgMjRIMThWMjJIMjJWMThIMjRWMjJNMiAyNEEyIDIgMCAwIDEgMCAyMlYxOEgyVjIySDZWMjRIMk0yMiAwQTIgMiAwIDAgMSAyNCAyVjZIMjJWMkgxOFYwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjYW5uZXIgPSBcIk00LjIsMTAuN0wxOS44LDVMMjAuNSw2LjlMNi40LDEySDE5QTIsMiAwIDAsMSAyMSwxNFYxOEEyLDIgMCAwLDEgMTksMjBINUEyLDIgMCAwLDEgMywxOFYxMi41QzMsMTEuNyAzLjUsMTAuOSA0LjIsMTAuN00xNywxN0gxOVYxNUgxN1YxN001LDE3SDE1VjE1SDVWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2Nhbm5lck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTYuNzMsMjBINUEyLDIgMCAwLDEgMywxOFYxMi41QzMsMTEuNyAzLjUsMTAuOSA0LjIsMTAuN0w2LjU3LDkuODRMMiw1LjI3TTYuNCwxMkg4LjczTDguMTEsMTEuMzhMNi40LDEyTTUsMTVWMTdIMTMuNzNMMTEuNzMsMTVINU0xOS44LDVMMjAuNSw2LjlMMTEuODUsMTAuMDNMMTAuMyw4LjQ3TDE5LjgsNU0xOSwxMkEyLDIgMCAwLDEgMjEsMTRWMThDMjEsMTguMzQgMjAuOTEsMTguNjYgMjAuNzYsMTguOTRMMTksMTcuMThWMTVIMTYuODJMMTMuODIsMTJIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhdHRlclBsb3QgPSBcIk03LDExQTMsMyAwIDAsMSAxMCwxNEEzLDMgMCAwLDEgNywxN0EzLDMgMCAwLDEgNCwxNEEzLDMgMCAwLDEgNywxMU0xMSwzQTMsMyAwIDAsMSAxNCw2QTMsMyAwIDAsMSAxMSw5QTMsMyAwIDAsMSA4LDZBMywzIDAgMCwxIDExLDNNMTYuNiwxNC42QzE4LjI1LDE0LjYgMTkuNiwxNS45NCAxOS42LDE3LjZBMywzIDAgMCwxIDE2LjYsMjAuNkMxNC45NCwyMC42IDEzLjYsMTkuMjUgMTMuNiwxNy42QTMsMyAwIDAsMSAxNi42LDE0LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NhdHRlclBsb3RPdXRsaW5lID0gXCJNNywxOEE0LDQgMCAwLDEgMywxNEE0LDQgMCAwLDEgNywxMEE0LDQgMCAwLDEgMTEsMTRBNCw0IDAgMCwxIDcsMThNNywxMkEyLDIgMCAwLDAgNSwxNEEyLDIgMCAwLDAgNywxNkEyLDIgMCAwLDAgOSwxNEEyLDIgMCAwLDAgNywxMk0xMSwxMEE0LDQgMCAwLDEgNyw2QTQsNCAwIDAsMSAxMSwyQTQsNCAwIDAsMSAxNSw2QTQsNCAwIDAsMSAxMSwxME0xMSw0QTIsMiAwIDAsMCA5LDZBMiwyIDAgMCwwIDExLDhBMiwyIDAgMCwwIDEzLDZBMiwyIDAgMCwwIDExLDRNMTYuNiwyMS42QzE0LjM5LDIxLjYgMTIuNiwxOS44MSAxMi42LDE3LjZBNCw0IDAgMCwxIDE2LjYsMTMuNkMxOC44MSwxMy42IDIwLjYsMTUuMzkgMjAuNiwxNy42QTQsNCAwIDAsMSAxNi42LDIxLjZNMTYuNiwxNS42QTIsMiAwIDAsMCAxNC42LDE3LjZDMTQuNiwxOC43IDE1LjUsMTkuNiAxNi42LDE5LjZBMiwyIDAgMCwwIDE4LjYsMTcuNkMxOC42LDE2LjUgMTcuNywxNS42IDE2LjYsMTUuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTY2hvb2wgPSBcIk0xMiwzTDEsOUwxMiwxNUwyMSwxMC4wOVYxN0gyM1Y5TTUsMTMuMThWMTcuMThMMTIsMjFMMTksMTcuMThWMTMuMThMMTIsMTdMNSwxMy4xOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY2hvb2xPdXRsaW5lID0gXCJNMTIgM0wxIDlMNSAxMS4xOFYxNy4xOEwxMiAyMUwxOSAxNy4xOFYxMS4xOEwyMSAxMC4wOVYxN0gyM1Y5TDEyIDNNMTguODIgOUwxMiAxMi43Mkw1LjE4IDlMMTIgNS4yOEwxOC44MiA5TTE3IDE2TDEyIDE4LjcyTDcgMTZWMTIuMjdMMTIgMTVMMTcgMTIuMjdWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2Npc3NvcnNDdXR0aW5nID0gXCJNMTEsMjFIN1YxOUgxMVYyMU0xNS41LDE5SDE3VjIxSDEzVjE5SDEzLjJMMTEuOCwxMi45TDkuMywxMy41QzkuMiwxNCA5LDE0LjQgOC44LDE0LjhDNy45LDE2LjMgNiwxNi43IDQuNSwxNS44QzMsMTQuOSAyLjYsMTMgMy41LDExLjVDNC40LDEwIDYuMyw5LjYgNy44LDEwLjVDOC4yLDEwLjcgOC41LDExLjEgOC43LDExLjRMMTEuMiwxMC44TDEwLjYsOC4zQzEwLjIsOC4yIDkuOCw4IDkuNCw3LjhDOCw2LjkgNy41LDUgOC40LDMuNUM5LjMsMiAxMS4yLDEuNiAxMi43LDIuNUMxNC4yLDMuNCAxNC42LDUuMyAxMy43LDYuOEMxMy41LDcuMiAxMy4xLDcuNSAxMi44LDcuN0wxNS41LDE5TTcsMTEuOEM2LjMsMTEuMyA1LjMsMTEuNiA0LjgsMTIuM0M0LjMsMTMgNC42LDE0IDUuMywxNC40QzYsMTQuOSA3LDE0LjcgNy41LDEzLjlDNy45LDEzLjIgNy43LDEyLjIgNywxMS44TTEyLjQsNkMxMi45LDUuMyAxMi42LDQuMyAxMS45LDMuOEMxMS4yLDMuMyAxMC4yLDMuNiA5LjcsNC4zQzkuMyw1IDkuNSw2IDEwLjMsNi41QzExLDYuOSAxMiw2LjcgMTIuNCw2TTEyLjgsMTEuM0MxMi42LDExLjIgMTIuNCwxMS4yIDEyLjMsMTEuNEMxMi4yLDExLjYgMTIuMiwxMS44IDEyLjQsMTEuOUMxMi42LDEyIDEyLjgsMTIgMTIuOSwxMS44QzEzLjEsMTEuNiAxMywxMS40IDEyLjgsMTEuM00yMSw4LjVMMTQuNSwxMEwxNSwxMi4yTDIyLjUsMTAuNEwyMyw5LjdMMjEsOC41TTIzLDE5SDE5VjIxSDIzVjE5TTUsMTlIMVYyMUg1VjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjb290ZXIgPSBcIk03LjgyIDE5SDE1VjE4QzE1IDE1Ljc5IDE2Ljc5IDE0IDE5IDE0SDE5Ljc0TDE3Ljg0IDUuNTZDMTcuNjMgNC42NSAxNi44MiA0IDE1Ljg5IDRIMTJWNkgxNS44OUwxNy4yOSAxMi4yNUgxNy4yOEMxNS4xMiAxMi45IDEzLjQ3IDE0LjczIDEzLjA5IDE3SDcuODJDNy4zNCAxNS42NiA1Ljk2IDE0Ljc2IDQuNCAxNS4wNkMzLjIyIDE1LjI5IDIuMjcgMTYuMjYgMi4wNSAxNy40NEMxLjcgMTkuMzQgMy4xNiAyMSA1IDIxQzYuMyAyMSA3LjQgMjAuMTYgNy44MiAxOU01IDE5QzQuNDUgMTkgNCAxOC41NSA0IDE4UzQuNDUgMTcgNSAxNyA2IDE3LjQ1IDYgMTggNS41NSAxOSA1IDE5TTE5IDE1QzE3LjM0IDE1IDE2IDE2LjM0IDE2IDE4UzE3LjM0IDIxIDE5IDIxIDIyIDE5LjY2IDIyIDE4IDIwLjY2IDE1IDE5IDE1TTE5IDE5QzE4LjQ1IDE5IDE4IDE4LjU1IDE4IDE4UzE4LjQ1IDE3IDE5IDE3IDIwIDE3LjQ1IDIwIDE4IDE5LjU1IDE5IDE5IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjb290ZXJFbGVjdHJpYyA9IFwiTTcuODIgMTZIMTVWMTVDMTUgMTIuNzkgMTYuNzkgMTEgMTkgMTFIMTkuNzRMMTcuODQgMi41NkMxNy42MyAxLjY1IDE2LjgyIDEgMTUuODkgMUgxMlYzSDE1Ljg5TDE3LjI5IDkuMjVIMTcuMjhDMTUuMTIgOS45IDEzLjQ3IDExLjczIDEzLjA5IDE0SDcuODJDNy4zNCAxMi42NiA1Ljk2IDExLjc2IDQuNCAxMi4wNkMzLjIyIDEyLjI5IDIuMjcgMTMuMjYgMi4wNSAxNC40NEMxLjcgMTYuMzQgMy4xNiAxOCA1IDE4QzYuMyAxOCA3LjQgMTcuMTYgNy44MiAxNk01IDE2QzQuNDUgMTYgNCAxNS41NSA0IDE1UzQuNDUgMTQgNSAxNCA2IDE0LjQ1IDYgMTUgNS41NSAxNiA1IDE2TTE5IDEyQzE3LjM0IDEyIDE2IDEzLjM0IDE2IDE1UzE3LjM0IDE4IDE5IDE4IDIyIDE2LjY2IDIyIDE1IDIwLjY2IDEyIDE5IDEyTTE5IDE2QzE4LjQ1IDE2IDE4IDE1LjU1IDE4IDE1UzE4LjQ1IDE0IDE5IDE0IDIwIDE0LjQ1IDIwIDE1IDE5LjU1IDE2IDE5IDE2TTExIDIwSDdMMTMgMjNWMjFIMTdMMTEgMThWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NvcmVib2FyZCA9IFwiTTYgOUg4VjE1SDZWOU0xNiA5SDE4VjE1SDE2VjlNMjEgM0MyMi4xIDMgMjMgMy45IDIzIDVWMTlDMjMgMjAuMSAyMi4xIDIxIDIxIDIxSDNDMS45IDIxIDEgMjAuMSAxIDE5VjVDMSAzLjkgMS45IDMgMyAzSDIxTTUgN0M0LjQgNyA0IDcuNCA0IDhWMTZDNCAxNi42IDQuNCAxNyA1IDE3SDlDOS42IDE3IDEwIDE2LjYgMTAgMTZWOEMxMCA3LjQgOS42IDcgOSA3SDVNMTUgN0MxNC40IDcgMTQgNy40IDE0IDhWMTZDMTQgMTYuNiAxNC40IDE3IDE1IDE3SDE5QzE5LjYgMTcgMjAgMTYuNiAyMCAxNlY4QzIwIDcuNCAxOS42IDcgMTkgN0gxNU0xMiAxMUMxMi42IDExIDEzIDEwLjYgMTMgMTBDMTMgOS40IDEyLjYgOSAxMiA5QzExLjQgOSAxMSA5LjQgMTEgMTBDMTEgMTAuNiAxMS40IDExIDEyIDExTTEyIDE1QzEyLjYgMTUgMTMgMTQuNiAxMyAxNEMxMyAxMy40IDEyLjYgMTMgMTIgMTNDMTEuNCAxMyAxMSAxMy40IDExIDE0QzExIDE0LjYgMTEuNCAxNSAxMiAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTY29yZWJvYXJkT3V0bGluZSA9IFwiTTIxIDNIM0MxLjkgMyAxIDMuOSAxIDVWMTlDMSAyMC4xIDEuOSAyMSAzIDIxSDIxQzIyLjEgMjEgMjMgMjAuMSAyMyAxOVY1QzIzIDMuOSAyMi4xIDMgMjEgM00yMSAxOUgzVjVIMjFNNSA3SDlDOS42IDcgMTAgNy40IDEwIDhWMTZDMTAgMTYuNiA5LjYgMTcgOSAxN0g1QzQuNCAxNyA0IDE2LjYgNCAxNlY4QzQgNy40IDQuNCA3IDUgN002IDlWMTVIOFY5TTE1IDdIMTlDMTkuNiA3IDIwIDcuNCAyMCA4VjE2QzIwIDE2LjYgMTkuNiAxNyAxOSAxN0gxNUMxNC40IDE3IDE0IDE2LjYgMTQgMTZWOEMxNCA3LjQgMTQuNCA3IDE1IDdNMTYgOVYxNUgxOFY5TTEyIDExQzEyLjYgMTEgMTMgMTAuNiAxMyAxMEMxMyA5LjQgMTIuNiA5IDEyIDlDMTEuNCA5IDExIDkuNCAxMSAxMEMxMSAxMC42IDExLjQgMTEgMTIgMTFNMTIgMTVDMTIuNiAxNSAxMyAxNC42IDEzIDE0QzEzIDEzLjQgMTIuNiAxMyAxMiAxM0MxMS40IDEzIDExIDEzLjQgMTEgMTRDMTEgMTQuNiAxMS40IDE1IDEyIDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmVlblJvdGF0aW9uID0gXCJNNy41LDIxLjVDNC4yNSwxOS45NCAxLjkxLDE2Ljc2IDEuNTUsMTNIMC4wNUMwLjU2LDE5LjE2IDUuNzEsMjQgMTIsMjRMMTIuNjYsMjMuOTdMOC44NSwyMC4xNk0xNC44MywyMS4xOUwyLjgxLDkuMTdMOS4xNywyLjgxTDIxLjE5LDE0LjgzTTEwLjIzLDEuNzVDOS42NCwxLjE2IDguNjksMS4xNiA4LjExLDEuNzVMMS43NSw4LjExQzEuMTYsOC43IDEuMTYsOS42NSAxLjc1LDEwLjIzTDEzLjc3LDIyLjI1QzE0LjM2LDIyLjg0IDE1LjMxLDIyLjg0IDE1Ljg5LDIyLjI1TDIyLjI1LDE1Ljg5QzIyLjg0LDE1LjMgMjIuODQsMTQuMzUgMjIuMjUsMTMuNzdMMTAuMjMsMS43NU0xNi41LDIuNUMxOS43NSw0LjA3IDIyLjA5LDcuMjQgMjIuNDUsMTFIMjMuOTVDMjMuNDQsNC44NCAxOC4yOSwwIDEyLDBMMTEuMzQsMC4wM0wxNS4xNSwzLjg0TDE2LjUsMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmVlblJvdGF0aW9uTG9jayA9IFwiTTE2LjgsMi41QzE2LjgsMS41NiAxNy41NiwwLjggMTguNSwwLjhDMTkuNDQsMC44IDIwLjIsMS41NiAyMC4yLDIuNVYzSDE2LjhWMi41TTE2LDlIMjFBMSwxIDAgMCwwIDIyLDhWNEExLDEgMCAwLDAgMjEsM1YyLjVBMi41LDIuNSAwIDAsMCAxOC41LDBBMi41LDIuNSAwIDAsMCAxNiwyLjVWM0ExLDEgMCAwLDAgMTUsNFY4QTEsMSAwIDAsMCAxNiw5TTguNDcsMjAuNUM1LjIsMTguOTQgMi44NiwxNS43NiAyLjUsMTJIMUMxLjUsMTguMTYgNi42NiwyMyAxMi45NSwyM0wxMy42MSwyMi45N0w5LjgsMTkuMTVMOC40NywyMC41TTIzLjI1LDEyLjc3TDIwLjY4LDEwLjJMMTkuMjcsMTEuNjFMMjEuNSwxMy44M0wxNS44MywxOS41TDQuNSw4LjE3TDEwLjE3LDIuNUwxMi4yNyw0LjYxTDEzLjY4LDMuMkwxMS4yMywwLjc1QzEwLjY0LDAuMTYgOS42OSwwLjE2IDkuMTEsMC43NUwyLjc1LDcuMTFDMi4xNiw3LjcgMi4xNiw4LjY1IDIuNzUsOS4yM0wxNC43NywyMS4yNUMxNS4zNiwyMS44NCAxNi4zMSwyMS44NCAxNi44OSwyMS4yNUwyMy4yNSwxNC44OUMyMy44NCwxNC4zIDIzLjg0LDEzLjM1IDIzLjI1LDEyLjc3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmV3RmxhdFRvcCA9IFwiTTEzLjUsMTdWMTlMMTIsMjJMMTAuNSwxOUwxMy41LDE3TTE0LjUsNi4zTDEzLjUsN1Y2SDEwLjVWOUw5LjUsOS43VjEwLjdMMTQuNSw3LjRWNi4zTTE0LjUsMTAuM0wxMy41LDExVjlMMTAuNSwxMVYxM0w5LjUsMTMuN1YxNC43TDE0LjUsMTEuNFYxMC4zTTE0LjUsMTQuM0wxMy41LDE1VjEzTDEwLjUsMTVWMTdMOS41LDE3LjdWMTguN0wxNC41LDE1LjRWMTQuM004LDJDOCwyIDcsMiA3LDNMMTAsNUgxNEwxNywzQzE3LDMgMTcsMiAxNiwyQzE1LDIgOCwyIDgsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3Jld0xhZyA9IFwiTTEwLDE5LjNMMTQsMTYuNlYyMEwxMiwyMkwxMCwyMFYxOS4zTTE0LDEyLjdMMTAsMTUuNFYxNy40TDksMThWMTlMMTUsMTUuMVYxNEwxNCwxNC43VjEyLjdNNywyVjVIMTdWMkg3TTksNlY5TDEwLDkuN1YxMy40TDksMTRWMTVMMTUsMTEuMVYxMEwxNCwxMC43QzE0LDEwLjcgMTQsMTAuMyAxNCw5LjdMMTUsOVY2SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyZXdNYWNoaW5lRmxhdFRvcCA9IFwiTTE0LjUsNy4zTDEzLjUsOFY3SDEwLjVWMTBMOS41LDEwLjdWMTEuN0wxNC41LDguNFY3LjNNMTQuNSwxMS4zTDEzLjUsMTJWMTBMMTAuNSwxMlYxNEw5LjUsMTQuN1YxNS43TDE0LjUsMTIuNFYxMS4zTTE0LjUsMTUuM0wxMy41LDE2VjE0TDEwLjUsMTZWMThMOS41LDE4LjdWMTkuN0wxNC41LDE2LjRWMTUuM004LDNDOCwzIDcsMyA3LDRMMTAsNkgxNEwxNyw0QzE3LDQgMTcsMyAxNiwzQzE1LDMgOCwzIDgsM00xMy41LDE4VjIxSDEwLjVWMjBMMTMuNSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3Jld01hY2hpbmVSb3VuZFRvcCA9IFwiTTE0LjUsNy4zTDEzLjUsOFY3SDEwLjVWMTBMOS41LDEwLjdWMTEuN0wxNC41LDguNFY3LjNNMTQuNSwxMS4zTDEzLjUsMTJWMTBMMTAuNSwxMlYxNEw5LjUsMTQuN1YxNS43TDE0LjUsMTIuNFYxMS4zTTE0LjUsMTUuM0wxMy41LDE2VjE0TDEwLjUsMTZWMThMOS41LDE4LjdWMTkuN0wxNC41LDE2LjRWMTUuM003LDZIMTdDMTcsNiAxNiwzIDEyLDNDOCwzIDcsNiA3LDZNMTMuNSwxOFYyMUgxMC41VjIwTDEzLjUsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyZXdSb3VuZFRvcCA9IFwiTTEzLjUsMTdWMTlMMTIsMjJMMTAuNSwxOUwxMy41LDE3TTE0LjUsNi4zTDEzLjUsN1Y2SDEwLjVWOUw5LjUsOS43VjEwLjdMMTQuNSw3LjRWNi4zTTE0LjUsMTAuM0wxMy41LDExVjlMMTAuNSwxMVYxM0w5LjUsMTMuN1YxNC43TDE0LjUsMTEuNFYxMC4zTTE0LjUsMTQuM0wxMy41LDE1VjEzTDEwLjUsMTVWMTdMOS41LDE3LjdWMTguN0wxNC41LDE1LjRWMTQuM003LDVIMTdDMTcsNSAxNiwyIDEyLDJDOCwyIDcsNSA3LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyZXdkcml2ZXIgPSBcIk0xOCwxLjgzQzE3LjUsMS44MyAxNywyIDE2LjU5LDIuNDFDMTMuNzIsNS4yOCA4LDExIDgsMTFMOS41LDEyLjVMNiwxNkg0TDIsMjBMNCwyMkw4LDIwVjE4TDExLjUsMTQuNUwxMywxNkMxMywxNiAxOC43MiwxMC4yOCAyMS41OSw3LjQxQzIyLjIxLDYuNSAyMi4zNyw1LjM3IDIxLjU5LDQuNTlMMTkuNDEsMi40MUMxOSwyIDE4LjUsMS44MyAxOCwxLjgzTTE4LDRMMjAsNkwxMywxM0wxMSwxMUwxOCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmlwdCA9IFwiTTE3LjgsMjBDMTcuNCwyMS4yIDE2LjMsMjIgMTUsMjJINUMzLjMsMjIgMiwyMC43IDIsMTlWMThINUwxNC4yLDE4QzE0LjYsMTkuMiAxNS43LDIwIDE3LDIwSDE3LjhNMTksMkg4QzYuMywyIDUsMy4zIDUsNVYxNkgxNlYxN0MxNiwxNy42IDE2LjQsMTggMTcsMThIMThWNUMxOCw0LjQgMTguNCw0IDE5LDRDMTkuNiw0IDIwLDQuNCAyMCw1VjZIMjJWNUMyMiwzLjMgMjAuNywyIDE5LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyaXB0T3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNiwxOVY0SDhBMSwxIDAgMCwwIDcsNVYxNkg1VjVBMywzIDAgMCwxIDgsMkgxOUEzLDMgMCAwLDEgMjIsNVY2SDIwVjVBMSwxIDAgMCwwIDE5LDRBMSwxIDAgMCwwIDE4LDVWOUwxOCwxOUEzLDMgMCAwLDEgMTUsMjJINUEzLDMgMCAwLDEgMiwxOVYxOEgxM0EyLDIgMCAwLDAgMTUsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyaXB0VGV4dCA9IFwiTTE3LjgsMjBDMTcuNCwyMS4yIDE2LjMsMjIgMTUsMjJINUMzLjMsMjIgMiwyMC43IDIsMTlWMThINUwxNC4yLDE4QzE0LjYsMTkuMiAxNS43LDIwIDE3LDIwSDE3LjhNMTksMkMyMC43LDIgMjIsMy4zIDIyLDVWNkgyMFY1QzIwLDQuNCAxOS42LDQgMTksNEMxOC40LDQgMTgsNC40IDE4LDVWMThIMTdDMTYuNCwxOCAxNiwxNy42IDE2LDE3VjE2SDVWNUM1LDMuMyA2LjMsMiA4LDJIMTlNOCw2VjhIMTVWNkg4TTgsMTBWMTJIMTRWMTBIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3JpcHRUZXh0S2V5ID0gXCJNMTkgMkg4QzYuMyAyIDUgMy4zIDUgNVYxNkgxM0MxMy44IDE1LjQgMTQuOSAxNSAxNiAxNUMxNi43IDE1IDE3LjQgMTUuMiAxOCAxNS40VjVDMTggNC40IDE4LjQgNCAxOSA0UzIwIDQuNCAyMCA1VjZIMjJWNUMyMiAzLjMgMjAuNyAyIDE5IDJNMTQgMTJIOFYxMEgxNFYxMk0xNSA4SDhWNkgxNVY4TTExLjQgMjJINUMzLjMgMjIgMiAyMC43IDIgMTlWMThIMTEuNEMxMS4xIDE4LjYgMTEgMTkuMyAxMSAyMFMxMS4xIDIxLjQgMTEuNCAyMk0xOC44IDE5QzE4LjQgMTcuOCAxNy4zIDE3IDE2IDE3QzE0LjMgMTcgMTMgMTguMyAxMyAyMFMxNC4zIDIzIDE2IDIzQzE3LjMgMjMgMTguNCAyMi4yIDE4LjggMjFIMjBWMjNIMjJWMjFIMjNWMTlIMTguOE0xNiAyMS4zQzE1LjMgMjEuMyAxNC43IDIwLjcgMTQuNyAyMFMxNS4zIDE4LjcgMTYgMTguN0MxNi43IDE4LjcgMTcuMyAxOS4zIDE3LjMgMjBTMTYuNyAyMS4zIDE2IDIxLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2NyaXB0VGV4dEtleU91dGxpbmUgPSBcIk0xMS40IDIySDVDMy4zIDIyIDIgMjAuNyAyIDE5VjE4SDExLjRDMTEuMSAxOC42IDExIDE5LjMgMTEgMjBTMTEuMiAyMS40IDExLjQgMjJNMTkgMkg4QzYuMyAyIDUgMy4zIDUgNVYxNkg3VjVDNyA0LjQgNy40IDQgOCA0SDE2VjE1QzE2LjcgMTUgMTcuNCAxNS4yIDE4IDE1LjRWNUMxOCA0LjQgMTguNCA0IDE5IDRTMjAgNC40IDIwIDVWNkgyMlY1QzIyIDMuMyAyMC43IDIgMTkgMk05IDhIMTRWNkg5VjhNOSAxNkgxM0MxMy4zIDE1LjggMTMuNiAxNS42IDE0IDE1LjRWMTRIOVYxNk05IDEySDE0VjEwSDlWMTJNMjMgMTlWMjFIMjJWMjNIMjBWMjFIMTguOEMxOC40IDIyLjIgMTcuMyAyMyAxNiAyM0MxNC4zIDIzIDEzIDIxLjcgMTMgMjBTMTQuMyAxNyAxNiAxN0MxNy4zIDE3IDE4LjQgMTcuOCAxOC44IDE5SDIzTTE3LjMgMjBDMTcuMyAxOS4zIDE2LjcgMTguNyAxNiAxOC43UzE0LjcgMTkuMyAxNC43IDIwIDE1LjMgMjEuMyAxNiAyMS4zIDE3LjMgMjAuNyAxNy4zIDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNjcmlwdFRleHRPdXRsaW5lID0gXCJNMTUsMjBBMSwxIDAgMCwwIDE2LDE5VjRIOEExLDEgMCAwLDAgNyw1VjE2SDVWNUEzLDMgMCAwLDEgOCwySDE5QTMsMyAwIDAsMSAyMiw1VjZIMjBWNUExLDEgMCAwLDAgMTksNEExLDEgMCAwLDAgMTgsNVY5TDE4LDE5QTMsMyAwIDAsMSAxNSwyMkg1QTMsMyAwIDAsMSAyLDE5VjE4SDEzQTIsMiAwIDAsMCAxNSwyME05LDZIMTRWOEg5VjZNOSwxMEgxNFYxMkg5VjEwTTksMTRIMTRWMTZIOVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3JpcHRUZXh0UGxheSA9IFwiTTEzLjggMjJINUMzLjMgMjIgMiAyMC43IDIgMTlWMThIMTMuMUMxMyAxOC4zIDEzIDE4LjcgMTMgMTlDMTMgMjAuMSAxMy4zIDIxLjEgMTMuOCAyMk0xMy44IDE2SDVWNUM1IDMuMyA2LjMgMiA4IDJIMTlDMjAuNyAyIDIyIDMuMyAyMiA1VjZIMjBWNUMyMCA0LjQgMTkuNiA0IDE5IDRTMTggNC40IDE4IDVWMTMuMUMxNi4yIDEzLjQgMTQuNyAxNC41IDEzLjggMTZNOCA4SDE1VjZIOFY4TTggMTJIMTRWMTBIOFYxMk0xNyAxNlYyMkwyMiAxOUwxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTY3JpcHRUZXh0UGxheU91dGxpbmUgPSBcIk05IDE0SDE0VjE1LjdDMTMuOSAxNS44IDEzLjkgMTUuOSAxMy44IDE2SDlWMTRNOSAxMkgxNFYxMEg5VjEyTTkgOEgxNFY2SDlWOE03IDVDNyA0LjQgNy40IDQgOCA0SDE2VjEzLjhDMTYuNiAxMy40IDE3LjMgMTMuMiAxOCAxMy4xVjVDMTggNC40IDE4LjQgNCAxOSA0UzIwIDQuNCAyMCA1VjZIMjJWNUMyMiAzLjMgMjAuNyAyIDE5IDJIOEM2LjMgMiA1IDMuMyA1IDVWMTZIN1Y1TTEzIDE5VjE4LjQgMThIMlYxOUMyIDIwLjcgMy4zIDIyIDUgMjJIMTMuOEMxMy4zIDIxLjEgMTMgMjAuMSAxMyAxOU0xNyAxNlYyMkwyMiAxOUwxNyAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZCA9IFwiTTE4LDhIMTZWNEgxOE0xNSw4SDEzVjRIMTVNMTIsOEgxMFY0SDEyTTE4LDJIMTBMNCw4VjIwQTIsMiAwIDAsMCA2LDIySDE4QTIsMiAwIDAsMCAyMCwyMFY0QTIsMiAwIDAsMCAxOCwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYWwgPSBcIk0yMC4zOSwxOS4zN0wxNi4zOCwxOEwxNSwyMkwxMS45MiwxNkw5LDIyTDcuNjIsMThMMy42MSwxOS4zN0w2LjUzLDEzLjM3QzUuNTcsMTIuMTcgNSwxMC42NSA1LDlBNyw3IDAgMCwxIDEyLDJBNyw3IDAgMCwxIDE5LDlDMTksMTAuNjUgMTguNDMsMTIuMTcgMTcuNDcsMTMuMzdMMjAuMzksMTkuMzdNNyw5TDkuNjksMTAuMzRMOS41LDEzLjM0TDEyLDExLjY4TDE0LjUsMTMuMzNMMTQuMzMsMTAuMzRMMTcsOUwxNC4zMiw3LjY1TDE0LjUsNC42N0wxMiw2LjMxTDkuNSw0LjY1TDkuNjcsNy42Nkw3LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhbFZhcmlhbnQgPSBcIk0xNy43MSA2LjE1QzE3LjQ2IDUuMzggMTYuNzkgNS4yMSAxNi40NSA0Ljc3QzE2LjE0IDQuMzEgMTYuMTggMy42MiAxNS41MyAzLjE1UzE0LjIzIDIuOTIgMTMuNyAyLjc3IDEyLjgxIDIgMTIgMiAxMC44MiAyLjU4IDEwLjMgMi43NyA5LjEzIDIuNjcgOC40NyAzLjE1IDcuODYgNC4zMSA3LjU1IDQuNzdDNy4yMSA1LjIxIDYuNTUgNS4zOCA2LjI5IDYuMTVTNi41IDcuNDUgNi41IDggNiA5LjA4IDYuMjkgOS44NSA3LjIxIDEwLjc5IDcuNTUgMTEuMjNDNy44NiAxMS42OSA3LjgyIDEyLjM4IDguNDcgMTIuODVTOS43NyAxMy4wOCAxMC4zIDEzLjIzIDExLjE5IDE0IDEyIDE0IDEzLjE4IDEzLjQyIDEzLjcgMTMuMjMgMTQuODcgMTMuMzMgMTUuNTMgMTIuODUgMTYuMTQgMTEuNjkgMTYuNDUgMTEuMjNDMTYuNzkgMTAuNzkgMTcuNDUgMTAuNjIgMTcuNzEgOS44NVMxNy41IDguNTUgMTcuNSA4IDE4IDYuOTIgMTcuNzEgNi4xNU0xMiAxMkE0IDQgMCAxIDEgMTYgOEE0IDQgMCAwIDEgMTIgMTJNMTQgOEEyIDIgMCAxIDEgMTIgNkEyIDIgMCAwIDEgMTQgOE0xMy43MSAxNS41NkwxMy4wOCAxOS4xNkwxMi4zNSAyMy4yOUw5Ljc0IDIwLjhMNi40NCAyMi4yNUw3Ljc3IDE0Ljc1QTQgNCAwIDAgMCA5LjY2IDE1LjE3QTQuMTUgNC4xNSAwIDAgMCAxMSAxNS44NUEzLjMyIDMuMzIgMCAwIDAgMTIgMTZBMy41IDMuNSAwIDAgMCAxMy43MSAxNS41Nk0xNy45MiAxOC43OEwxNS4zNCAxNy44NkwxNS44NSAxNC45MkEzLjIgMy4yIDAgMCAwIDE2LjcgMTQuNDdMMTYuODIgMTQuMzdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhcmNoV2ViID0gXCJNMTUuNSwxNEwyMC41LDE5TDE5LDIwLjVMMTQsMTUuNVYxNC43MUwxMy43MywxNC40M0MxMi41OSwxNS40MSAxMS4xMSwxNiA5LjUsMTZBNi41LDYuNSAwIDAsMSAzLDkuNUE2LjUsNi41IDAgMCwxIDkuNSwzQTYuNSw2LjUgMCAwLDEgMTYsOS41QzE2LDExLjExIDE1LjQxLDEyLjU5IDE0LjQzLDEzLjczTDE0LjcxLDE0SDE1LjVNOS41LDQuNUw4Ljk1LDQuNTNDOC43MSw1LjA1IDguMzQsNS45MyA4LjA3LDdIMTAuOTNDMTAuNjYsNS45MyAxMC4yOSw1LjA1IDEwLjA1LDQuNTNDOS44Nyw0LjUgOS42OSw0LjUgOS41LDQuNU0xMy44Myw3QzEzLjI0LDUuOTcgMTIuMjksNS4xNyAxMS4xNSw0Ljc4QzExLjM5LDUuMzEgMTEuNyw2LjA4IDExLjkzLDdIMTMuODNNNS4xNyw3SDcuMDdDNy4zLDYuMDggNy42MSw1LjMxIDcuODUsNC43OEM2LjcxLDUuMTcgNS43Niw1Ljk3IDUuMTcsN000LjUsOS41QzQuNSwxMCA0LjU4LDEwLjUzIDQuNzMsMTFINi44N0w2Ljc1LDkuNUw2Ljg3LDhINC43M0M0LjU4LDguNDcgNC41LDkgNC41LDkuNU0xNC4yNywxMUMxNC40MiwxMC41MyAxNC41LDEwIDE0LjUsOS41QzE0LjUsOSAxNC40Miw4LjQ3IDE0LjI3LDhIMTIuMTNDMTIuMjEsOC41IDEyLjI1LDkgMTIuMjUsOS41QzEyLjI1LDEwIDEyLjIxLDEwLjUgMTIuMTMsMTFIMTQuMjdNNy44Nyw4TDcuNzUsOS41TDcuODcsMTFIMTEuMTNDMTEuMjEsMTAuNSAxMS4yNSwxMCAxMS4yNSw5LjVDMTEuMjUsOSAxMS4yMSw4LjUgMTEuMTMsOEg3Ljg3TTkuNSwxNC41QzkuNjgsMTQuNSA5Ljg2LDE0LjUgMTAuMDMsMTQuNDdDMTAuMjgsMTMuOTUgMTAuNjYsMTMuMDcgMTAuOTMsMTJIOC4wN0M4LjM0LDEzLjA3IDguNzIsMTMuOTUgOC45NywxNC40N0w5LjUsMTQuNU0xMy44MywxMkgxMS45M0MxMS43LDEyLjkyIDExLjM5LDEzLjY5IDExLjE1LDE0LjIyQzEyLjI5LDEzLjgzIDEzLjI0LDEzLjAzIDEzLjgzLDEyTTUuMTcsMTJDNS43NiwxMy4wMyA2LjcxLDEzLjgzIDcuODUsMTQuMjJDNy42MSwxMy42OSA3LjMsMTIuOTIgNy4wNywxMkg1LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXQgPSBcIk00LDE4VjIxSDdWMThIMTdWMjFIMjBWMTVINFYxOE0xOSwxMEgyMlYxM0gxOVYxME0yLDEwSDVWMTNIMlYxME0xNywxM0g3VjVBMiwyIDAgMCwxIDksM0gxNUEyLDIgMCAwLDEgMTcsNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZWF0RmxhdCA9IFwiTTIyLDExVjEzSDlWN0gxOEE0LDQgMCAwLDEgMjIsMTFNMiwxNFYxNkg4VjE4SDE2VjE2SDIyVjE0TTcuMTQsMTIuMUM4LjMsMTAuOTEgOC4yOCw5IDcuMSw3Ljg2QzUuOTEsNi43IDQsNi43MiAyLjg2LDcuOUMxLjcsOS4wOSAxLjcyLDExIDIuOSwxMi4xNEM0LjA5LDEzLjMgNiwxMy4yOCA3LjE0LDEyLjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdEZsYXRBbmdsZWQgPSBcIk0yMi4yNSwxNC4yOUwyMS41NiwxNi4xOEw5LjIsMTEuNzFMMTEuMjgsNi4wNUwxOS44NCw5LjE0QzIxLjk0LDkuOSAyMywxMi4yIDIyLjI1LDE0LjI5TTEuNSwxMi4xNEw4LDE0LjVWMTlIMTZWMTcuMzdMMjAuNSwxOUwyMS4yMSwxNy4xMUwyLjE5LDEwLjI1TTcuMywxMC4yQzguNzksOS41IDkuNDIsNy42OSA4LjcxLDYuMkM4LDQuNzEgNi4yLDQuMDggNC43LDQuOEMzLjIxLDUuNSAyLjU4LDcuMyAzLjMsOC44QzQsMTAuMjkgNS44LDEwLjkyIDcuMywxMC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXRJbmRpdmlkdWFsU3VpdGUgPSBcIk03LDEzQTMsMyAwIDAsMCAxMCwxMEEzLDMgMCAwLDAgNyw3QTMsMyAwIDAsMCA0LDEwQTMsMyAwIDAsMCA3LDEzTTE5LDdIMTFWMTRIM1Y3SDFWMTdIMjNWMTFBNCw0IDAgMCwwIDE5LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdExlZ3Jvb21FeHRyYSA9IFwiTTQsMTJWM0gyVjEyQTUsNSAwIDAsMCA3LDE3SDEzVjE1SDdBMywzIDAgMCwxIDQsMTJNMjIuODMsMTcuMjRDMjIuNDUsMTYuNSAyMS41NCwxNi4yNyAyMC44LDE2LjYxTDE5LjcxLDE3LjExTDE2LjMsMTAuMTNDMTUuOTYsOS40NSAxNS4yNyw5IDE0LjUsOUgxMVYzSDVWMTFBMywzIDAgMCwwIDgsMTRIMTVMMTguNDEsMjFMMjIuMTMsMTkuM0MyMi45LDE4Ljk0IDIzLjIzLDE4IDIyLjgzLDE3LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXRMZWdyb29tTm9ybWFsID0gXCJNNSwxMlYzSDNWMTJBNSw1IDAgMCwwIDgsMTdIMTRWMTVIOEEzLDMgMCAwLDEgNSwxMk0yMC41LDE4SDE5VjExQTIsMiAwIDAsMCAxNyw5SDEyVjNINlYxMUEzLDMgMCAwLDAgOSwxNEgxNlYyMUgyMC41QTEuNSwxLjUgMCAwLDAgMjIsMTkuNUExLjUsMS41IDAgMCwwIDIwLjUsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdExlZ3Jvb21SZWR1Y2VkID0gXCJNMTkuOTcsMTkuMkMyMC4xNSwyMC4xNiAxOS40MiwyMSAxOC41LDIxSDE0VjE4TDE1LDE0SDlBMywzIDAgMCwxIDYsMTFWM0gxMlY5SDE3QTIsMiAwIDAsMSAxOSwxMUwxNywxOEgxOC40NEMxOS4xNywxOCAxOS44MywxOC41IDE5Ljk3LDE5LjJNNSwxMlYzSDNWMTJBNSw1IDAgMCwwIDgsMTdIMTJWMTVIOEEzLDMgMCAwLDEgNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWF0T3V0bGluZSA9IFwiTTE1LDVWMTJIOVY1SDE1TTE1LDNIOUEyLDIgMCAwLDAgNyw1VjE0SDE3VjVBMiwyIDAgMCwwIDE1LDNNMjIsMTBIMTlWMTNIMjJWMTBNNSwxMEgyVjEzSDVWMTBNMjAsMTVINFYyMUg2VjE3SDE4VjIxSDIwVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlYXRQYXNzZW5nZXIgPSBcIk05IDE5SDE1VjIxSDlDNi4yNCAyMSA0IDE4Ljc2IDQgMTZWN0g2VjE2QzYgMTcuNjYgNy4zNCAxOSA5IDE5TTEwLjQyIDUuNDFDMTEuMiA0LjYzIDExLjIgMy4zNiAxMC40MiAyLjU4QzkuNjQgMS44IDguMzcgMS44IDcuNTkgMi41OEM2LjgxIDMuMzYgNi44MSA0LjYzIDcuNTkgNS40MUM4LjM3IDYuMiA5LjYzIDYuMiAxMC40MiA1LjQxTTExLjUgOUMxMS41IDcuOSAxMC42IDcgOS41IDdIOUM3LjkgNyA3IDcuOSA3IDlWMTVDNyAxNi42NiA4LjM0IDE4IDEwIDE4SDE1LjA3TDE4LjU3IDIxLjVMMjAgMjAuMDdMMTQuOTMgMTVIMTEuNUwxMS41IDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdFJlY2xpbmVFeHRyYSA9IFwiTTUuMzUsNS42NEM0LjQ1LDUgNC4yMywzLjc2IDQuODYsMi44NUM1LjUsMS45NSA2Ljc0LDEuNzMgNy42NSwyLjM2QzguNTUsMyA4Ljc3LDQuMjQgOC4xNCw1LjE1QzcuNSw2LjA1IDYuMjYsNi4yNyA1LjM1LDUuNjRNMTYsMTlIOC45M0M3LjQ1LDE5IDYuMTksMTcuOTIgNS45NywxNi40Nkw0LDdIMkw0LDE2Ljc2QzQuMzcsMTkuMiA2LjQ3LDIxIDguOTQsMjFIMTZNMTYuMjMsMTVIMTEuMzVMMTAuMzIsMTAuOUMxMS45LDExLjc5IDEzLjYsMTIuNDQgMTUuNDcsMTIuMTJWMTBDMTMuODQsMTAuMyAxMi4wMyw5LjcyIDEwLjc4LDguNzRMOS4xNCw3LjQ3QzguOTEsNy4yOSA4LjY1LDcuMTcgOC4zOCw3LjA5QzguMDYsNyA3LjcyLDYuOTcgNy4zOSw3LjAzSDcuMzdDNi4xNCw3LjI1IDUuMzIsOC40MiA1LjUzLDkuNjRMNi44OCwxNS41NkM3LjE2LDE3IDguMzksMTggOS44MywxOEgxNi42OEwyMC41LDIxTDIyLDE5LjVcIjtcclxuZXhwb3J0IHZhciBtZGlTZWF0UmVjbGluZU5vcm1hbCA9IFwiTTcuNTksNS40MUM2LjgxLDQuNjMgNi44MSwzLjM2IDcuNTksMi41OEM4LjM3LDEuOCA5LjY0LDEuOCAxMC40MiwyLjU4QzExLjIsMy4zNiAxMS4yLDQuNjMgMTAuNDIsNS40MUM5LjYzLDYuMiA4LjM3LDYuMiA3LjU5LDUuNDFNNiwxNlY3SDRWMTZBNSw1IDAgMCwwIDksMjFIMTVWMTlIOUEzLDMgMCAwLDEgNiwxNk0yMCwyMC4wN0wxNC45MywxNUgxMS41VjExLjMyQzEyLjksMTIuNDcgMTUuMSwxMy41IDE3LDEzLjVWMTEuMzJDMTUuMzQsMTEuMzQgMTMuMzksMTAuNDUgMTIuMzMsOS4yOEwxMC45Myw3LjczQzEwLjc0LDcuNSAxMC41LDcuMzUgMTAuMjQsNy4yM0M5Ljk1LDcuMDkgOS42Miw3IDkuMjgsN0g5LjI1QzgsNyA3LDggNyw5LjI1VjE1QTMsMyAwIDAsMCAxMCwxOEgxNS4wN0wxOC41NywyMS41XCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VhdGJlbHQgPSBcIk0xMiwyQzEzLjExLDIgMTQsMi45IDE0LDRDMTQsNS4xMSAxMy4xMSw2IDEyLDZBMiwyIDAgMCwxIDEwLDRBMiwyIDAgMCwxIDEyLDJNMTIuMzksMTQuNzlDMTQuMDMsMTQuNzkgMTUuNDYsMTQuODkgMTYuNjQsMTUuMDRDMTYuNywxMi4zMiAxNi40Niw5LjkyIDE2LDlDMTUuODcsOC43MyAxNS42OSw4LjUgMTUuNSw4LjNMNy40MywxNS4yMkM4Ljc5LDE1IDEwLjUsMTQuNzkgMTIuMzksMTQuNzlNNy40NiwxN0M3LjU5LDE4Ljc0IDcuODUsMjAuNSA4LjI3LDIySDEwLjM0QzEwLjA1LDIxLjEyIDkuODQsMjAuMDkgOS42OCwxOUM5LjY4LDE5IDEyLDE4LjU2IDE0LjMyLDE5QzE0LjE2LDIwLjA5IDEzLjk1LDIxLjEyIDEzLjY2LDIySDE1LjczQzE2LjE3LDIwLjQ1IDE2LjQzLDE4LjYxIDE2LjU2LDE2Ljc5QzE1LjQxLDE2LjY1IDE0LDE2LjU0IDEyLjM5LDE2LjU0QzEwLjQ2LDE2LjU0IDguNzgsMTYuNzUgNy40NiwxN00xMiw3QzEyLDcgOSw3IDgsOUM3LjY2LDkuNjggNy40NCwxMS4xNSA3LjM3LDEyLjk2TDEzLjkyLDcuMzRDMTIuOTMsNyAxMiw3IDEyLDdNMTguNTcsNS42N0wxNy40Myw0LjM0TDEzLjkyLDcuMzVDMTQuNDcsNy41NCAxNS4wNSw3Ljg0IDE1LjUsOC4zTDE4LjU3LDUuNjdNMjAuNjcsMTUuODNDMjAuNTgsMTUuOCAxOS4xNCwxNS4zMyAxNi42NCwxNS4wNEMxNi42MywxNS42MSAxNi42LDE2LjIgMTYuNTYsMTYuNzlDMTguODEsMTcuMDcgMjAuMSwxNy41IDIwLjEyLDE3LjVMMjAuNjcsMTUuODNNNy4zNywxMi45NkwzLjQzLDE2LjM0TDQuMzIsMTcuODJDNC4zNCwxNy44MSA1LjUsMTcuMzYgNy40NiwxN0M3LjM1LDE1LjU5IDcuMzIsMTQuMiA3LjM3LDEyLjk2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlY3VyaXR5ID0gXCJNMTIsMTJIMTlDMTguNDcsMTYuMTEgMTUuNzIsMTkuNzggMTIsMjAuOTJWMTJINVY2LjNMMTIsMy4xOU0xMiwxTDMsNVYxMUMzLDE2LjU1IDYuODQsMjEuNzMgMTIsMjNDMTcuMTYsMjEuNzMgMjEsMTYuNTUgMjEsMTFWNUwxMiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlY3VyaXR5TmV0d29yayA9IFwiTTEzLDE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMlYyMkgxNUExLDEgMCAwLDEgMTQsMjNIMTBBMSwxIDAgMCwxIDksMjJIMlYyMEg5QTEsMSAwIDAsMSAxMCwxOUgxMVYxNy4zNEM4LjA3LDE2LjEzIDYsMTMgNiw5LjY3VjUuNjdMMTIsM0wxOCw1LjY3VjkuNjdDMTgsMTMgMTUuOTMsMTYuMTMgMTMsMTcuMzRWMTlNMTIsNUw4LDYuNjlWMTBIMTJWNU0xMiwxMFYxNkMxMy45MSwxNS41MyAxNiwxMy4wNiAxNiwxMVYxMEgxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWVkID0gXCJNMjAuNywzLjNDMjAuNywzLjMgMTkuMywzIDE3LjIsM0MxMS43LDMgMS42LDUuMSAzLjIsMjAuOEM0LjMsMjAuOSA1LjQsMjEgNi40LDIxQzI0LjMsMjEgMjAuNywzLjMgMjAuNywzLjNNNywxN0M3LDE3IDcsNyAxNyw3QzE3LDcgMTEsOSA3LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlZWRPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w1LjkgNy44QzMuOCAxMC41IDIuNiAxNC42IDMuMiAyMC44QzQuMyAyMC45IDUuNCAyMSA2LjQgMjFDMTAuOSAyMSAxNC4xIDE5LjkgMTYuMyAxOC4yTDIwLjkgMjIuOEwyMi4xIDIxLjVNNyAxN0M3IDE3IDcgMTMuNyA4LjkgMTAuOEwxMC4yIDEyLjFDOS4xIDEzLjQgOCAxNSA3IDE3TTExLjYgOC40TDguNSA1LjNDMTEuMyAzLjQgMTQuNyAzIDE3LjIgM0MxOS4zIDMgMjAuNyAzLjMgMjAuNyAzLjNTMjIuMSAxMC4zIDE4LjcgMTUuNUwxMi44IDkuNkMxNS4xIDcuNiAxNyA3IDE3IDdDMTQuNyA3IDEyLjkgNy41IDExLjYgOC40WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlZWRPZmZPdXRsaW5lID0gXCJNMjIuMSAyMS41TDIuNCAxLjdMMS4xIDNMNS45IDcuOEMzLjggMTAuNSAyLjYgMTQuNiAzLjIgMjAuOEM0LjMgMjAuOSA1LjQgMjEgNi40IDIxQzEwLjkgMjEgMTQuMSAxOS45IDE2LjMgMTguMkwyMC45IDIyLjhMMjIuMSAyMS41TTYuNCAxOUg1LjFDNC45IDE0LjggNS42IDExLjUgNy4zIDkuMkw4LjkgMTAuOEM3IDEzLjcgNyAxNyA3IDE3QzggMTUgOS4xIDEzLjQgMTAuMiAxMi4xTDE0LjggMTYuN0MxMi44IDE4LjIgMTAgMTkgNi40IDE5TTEwIDYuOEw4LjUgNS4zQzExLjMgMy40IDE0LjcgMyAxNy4yIDNDMTkuMyAzIDIwLjcgMy4zIDIwLjcgMy4zUzIyLjEgMTAuMyAxOC43IDE1LjVMMTcuMiAxNEMxOS4xIDEwLjkgMTkgNy4xIDE4LjkgNS4xQzE4LjQgNSAxNy44IDUgMTcuMiA1QzE1LjEgNSAxMi4zIDUuMyAxMCA2LjhNMTIuOCA5LjZMMTEuNiA4LjRDMTIuOSA3LjUgMTQuNyA3IDE3IDdDMTcgNyAxNS4xIDcuNiAxMi44IDkuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWVkT3V0bGluZSA9IFwiTTE3LjIsNVY1QzE3LjgsNSAxOC40LDUgMTguOSw1LjFDMTkuMSw3LjQgMTkuMSwxMiAxNi40LDE1LjJDMTQuNCwxNy43IDExLDE5IDYuNCwxOUM2LDE5IDUuNSwxOSA1LjEsMTlDNC45LDE0LjQgNS44LDEwLjggNy45LDguNUMxMC40LDUuNiAxNC40LDUgMTcuMiw1TTE3LjIsM0MxMS43LDMgMS42LDUuMSAzLjIsMjAuOEM0LjMsMjAuOSA1LjQsMjEgNi40LDIxQzI0LjMsMjEgMjAuNywzLjMgMjAuNywzLjNDMjAuNywzLjMgMTkuMywzIDE3LjIsM00xNyw3QzcsNyA3LDE3IDcsMTdDMTEsOSAxNyw3IDE3LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2Vlc2F3ID0gXCJNMjEuNjggMTMuMjZMMjIuMDQgMTUuMjNMMi4zNSAxOC43N0wyIDE2LjhMNC45NSAxNi4yN0w0LjYgMTQuM0M0LjUgMTMuNzYgNC44NiAxMy4yNCA1LjQxIDEzLjE0QzUuOTUgMTMuMDQgNi40NyAxMy40IDYuNTcgMTMuOTVMNi45MiAxNS45MUwxNi43NiAxNC4xNUwxNi40MSAxMi4xOEMxNi4zMSAxMS42MyAxNi42NyAxMS4xMSAxNy4yMiAxMUMxNy43NiAxMC45MiAxOC4yOCAxMS4yOCAxOC4zOCAxMS44MkwxOC43MyAxMy43OUwyMS42OCAxMy4yNk0xMC4wNiAxOC40TDggMjJIMTZMMTMuNTggMTcuNzdMMTAuMDYgMTguNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWdtZW50ID0gXCJNMjEsOEgzVjZIMjFNOSwxM0gyMVYxMUg5TTksMThIMjFWMTZIOVwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdCA9IFwiTTQsM0g1VjVIM1Y0QTEsMSAwIDAsMSA0LDNNMjAsM0ExLDEgMCAwLDEgMjEsNFY1SDE5VjNIMjBNMTUsNVYzSDE3VjVIMTVNMTEsNVYzSDEzVjVIMTFNNyw1VjNIOVY1SDdNMjEsMjBBMSwxIDAgMCwxIDIwLDIxSDE5VjE5SDIxVjIwTTE1LDIxVjE5SDE3VjIxSDE1TTExLDIxVjE5SDEzVjIxSDExTTcsMjFWMTlIOVYyMUg3TTQsMjFBMSwxIDAgMCwxIDMsMjBWMTlINVYyMUg0TTMsMTVINVYxN0gzVjE1TTIxLDE1VjE3SDE5VjE1SDIxTTMsMTFINVYxM0gzVjExTTIxLDExVjEzSDE5VjExSDIxTTMsN0g1VjlIM1Y3TTIxLDdWOUgxOVY3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdEFsbCA9IFwiTTksOUgxNVYxNUg5TTcsMTdIMTdWN0g3TTE1LDVIMTdWM0gxNU0xNSwyMUgxN1YxOUgxNU0xOSwxN0gyMVYxNUgxOU0xOSw5SDIxVjdIMTlNMTksMjFBMiwyIDAgMCwwIDIxLDE5SDE5TTE5LDEzSDIxVjExSDE5TTExLDIxSDEzVjE5SDExTTksM0g3VjVIOU0zLDE3SDVWMTVIM001LDIxVjE5SDNBMiwyIDAgMCwwIDUsMjFNMTksM1Y1SDIxQTIsMiAwIDAsMCAxOSwzTTEzLDNIMTFWNUgxM00zLDlINVY3SDNNNywyMUg5VjE5SDdNMywxM0g1VjExSDNNMyw1SDVWM0EyLDIgMCAwLDAgMyw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdENvbG9yID0gXCJNMy44OCwzQzMuMzgsMy4wNiAzLDMuNSAzLDRWNEwzLDVINEw1LDVWNEw1LDNINEwzLjg4LDNNNywzVjVIOVYzSDdNMTEsM1Y1SDEzVjNIMTFNMTUsM1Y1SDE3VjNIMTVNMTksM1Y0TDE5LDVIMjBMMjEsNVY0TDIxLDMuODhDMjAuOTQsMy4zOCAyMC41LDMgMjAsM0gxOU0zLDdWOUg1VjdIM00xOSw3VjlIMjFWN0gxOU0zLDExVjEzSDVWMTFIM00xOS4zMSwxMkMxOS4xOCwxMiAxOS4wNSwxMi4wNSAxOC45NSwxMi4xNEwxNy4zOSwxMy43MUwxNi40MywxMi43NUwxNS43MiwxMy40NkwxNi40MywxNC4xN0wxMS45NywxOC42M1YyMUgxNC4zNUwxOC44LDE2LjU0TDE5LjUsMTcuMjVMMjAuMjIsMTYuNTRMMTkuMjYsMTUuNThMMjAuODIsMTQuMDNDMjEsMTMuODMgMjEsMTMuNSAyMC44MiwxMy4zMUwxOS42NSwxMi4xNEMxOS41NiwxMi4wNSAxOS40NCwxMiAxOS4zMSwxMk0zLDE1VjE3SDVWMTVIM00xNywxNUwxNy45NywxNS45N0wxMy45MywyMEwxMi45NywxOS4wNEwxNywxNU0zLDE5VjIwTDMsMjAuMTJDMy4wNiwyMC42MiAzLjUsMjEgNCwyMVYyMUg1VjIwTDUsMTlINEwzLDE5TTcsMTlWMjFIOVYxOUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdENvbXBhcmUgPSBcIk0xMywyM0gxMVYxSDEzVjIzTTksMTlINVY1SDlWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QzMsMjAuMTEgMy45LDIxIDUsMjFIOVYxOU0xOSw3VjlIMjFWN0gxOU0xOSw1SDIxQzIxLDMuODkgMjAuMSwzIDE5LDNWNU0yMSwxNUgxOVYxN0gyMVYxNU0xOSwxMVYxM0gyMVYxMUgxOU0xNywzSDE1VjVIMTdWM00xOSwyMUMyMC4xMSwyMSAyMSwyMC4xMSAyMSwxOUgxOVYyMU0xNywxOUgxNVYyMUgxN1YxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3REcmFnID0gXCJNMTMsMTdIMTdWMTNIMTlWMTdIMjNWMTlIMTlWMjNIMTdWMTlIMTNWMTdNMTEsMTdWMTlIOVYxN0gxMU03LDE3VjE5SDVWMTdIN00xOSw5VjExSDE3VjlIMTlNMTksNVY3SDE3VjVIMTlNMTUsNVY3SDEzVjVIMTVNMTEsNVY3SDlWNUgxMU03LDVWN0g1VjVIN003LDEzVjE1SDVWMTNIN003LDlWMTFINVY5SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0R3JvdXAgPSBcIk01IDNBMiAyIDAgMCAwIDMgNUg1TTcgM1Y1SDlWM00xMSAzVjVIMTNWM00xNSAzVjVIMTdWM00xOSAzVjVIMjFBMiAyIDAgMCAwIDE5IDNNMyA3VjlINVY3TTcgN1YxMUgxMVY3TTEzIDdWMTFIMTdWN00xOSA3VjlIMjFWN00zIDExVjEzSDVWMTFNMTkgMTFWMTNIMjFWMTFNNyAxM1YxN0gxMVYxM00xMyAxM1YxN0gxN1YxM00zIDE1VjE3SDVWMTVNMTkgMTVWMTdIMjFWMTVNMyAxOUEyIDIgMCAwIDAgNSAyMVYxOU03IDE5VjIxSDlWMTlNMTEgMTlWMjFIMTNWMTlNMTUgMTlWMjFIMTdWMTlNMTkgMTlWMjFBMiAyIDAgMCAwIDIxIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdEludmVyc2UgPSBcIk01LDNIN1Y1SDlWM0gxMVY1SDEzVjNIMTVWNUgxN1YzSDE5VjVIMjFWN0gxOVY5SDIxVjExSDE5VjEzSDIxVjE1SDE5VjE3SDIxVjE5SDE5VjIxSDE3VjE5SDE1VjIxSDEzVjE5SDExVjIxSDlWMTlIN1YyMUg1VjE5SDNWMTdINVYxNUgzVjEzSDVWMTFIM1Y5SDVWN0gzVjVINVYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdE1hcmtlciA9IFwiTTQgM0g1VjVIM1Y0QzMgMy40NSAzLjQ1IDMgNCAzTTIwIDNDMjAuNTUgMyAyMSAzLjQ1IDIxIDRWNUgxOVYzSDIwTTE1IDVWM0gxN1Y1SDE1TTExIDVWM0gxM1Y1SDExTTcgNVYzSDlWNUg3TTExIDIxVjE5SDEzVjIxSDExTTcgMjFWMTlIOVYyMUg3TTQgMjFDMy40NSAyMSAzIDIwLjU1IDMgMjBWMTlINVYyMUg0TTMgMTVINVYxN0gzVjE1TTMgMTFINVYxM0gzVjExTTMgN0g1VjlIM1Y3TTIxIDdWOUgxOVY3SDIxTTE5LjUgMTNDMjEuNCAxMyAyMyAxNC42IDIzIDE2LjVDMjMgMTkuMSAxOS41IDIzIDE5LjUgMjNDMTkuNSAyMyAxNiAxOS4xIDE2IDE2LjVDMTYgMTQuNiAxNy42IDEzIDE5LjUgMTNNMTkuNSAxNy44QzIwLjIgMTcuOCAyMC44IDE3LjIgMjAuNyAxNi42QzIwLjcgMTYgMjAuMSAxNS40IDE5LjUgMTUuNEMxOC45IDE1LjQgMTguMyAxNS45IDE4LjMgMTYuNkMxOC4zIDE3LjIgMTguOCAxNy44IDE5LjUgMTcuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3RNdWx0aXBsZSA9IFwiTTE4IDEySDIwVjE0SDE4VjEyTTE0IDE2SDE2VjE4SDE0VjE2TTIwIDE3QzIwIDE3LjU1IDE5LjU1IDE4IDE5IDE4SDE4VjE2SDIwVjE3TTcgNEg4VjZINlY1QzYgNC40NSA2LjQ1IDQgNyA0TTE5IDRDMTkuNTUgNCAyMCA0LjQ1IDIwIDVWNkgxOFY0SDE5TTE0IDZWNEgxNlY2SDE0TTEwIDZWNEgxMlY2SDEwTTEwIDE4VjE2SDEyVjE4SDEwTTcgMThDNi40NSAxOCA2IDE3LjU1IDYgMTdWMTZIOFYxOEg3TTYgMTJIOFYxNEg2VjEyTTYgOEg4VjEwSDZWOE0yMCA4VjEwSDE4VjhIMjBNMyA4SDRWMjBIMTZWMjFDMTYgMjEuNTQgMTUuNTcgMjIgMTUuMDMgMjJIMTVMMyAyMkMyLjQ1IDIyIDIgMjEuNTUgMiAyMVY5QzIgOC40NSAyLjQ1IDggMyA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdE11bHRpcGxlTWFya2VyID0gXCJNNyA0SDhWNkg2VjVDNiA0LjQ1IDYuNDUgNCA3IDRNMTkgNEMxOS41NSA0IDIwIDQuNDUgMjAgNVY2SDE4VjRIMTlNMTQgNlY0SDE2VjZIMTRNMTAgNlY0SDEyVjZIMTBNMTAgMThWMTZIMTJWMThIMTBNNyAxOEM2LjQ1IDE4IDYgMTcuNTUgNiAxN1YxNkg4VjE4SDdNNiAxMkg4VjE0SDZWMTJNNiA4SDhWMTBINlY4TTIwIDhWMTBIMThWOEgyME0zIDhINFYyMEgxNC41OEwxNi4wMyAyMkwzIDIyQzIuNDUgMjIgMiAyMS41NSAyIDIxVjlDMiA4LjQ1IDIuNDUgOCAzIDhNMTguNSAxMkMyMC40IDEyIDIyIDEzLjYgMjIgMTUuNUMyMiAxOC4xIDE4LjUgMjIgMTguNSAyMkMxOC41IDIyIDE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMk0xOC41IDE2LjhDMTkuMiAxNi44IDE5LjggMTYuMiAxOS43IDE1LjZDMTkuNyAxNSAxOS4xIDE0LjQgMTguNSAxNC40QzE3LjkgMTQuNCAxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdE9mZiA9IFwiTTEsNC4yN0wyLjI4LDNMMjEsMjEuNzJMMTkuNzMsMjNMMTcsMjAuMjdWMjFIMTVWMTlIMTUuNzNMNSw4LjI3VjlIM1Y3SDMuNzNMMSw0LjI3TTIwLDNBMSwxIDAgMCwxIDIxLDRWNUgxOVYzSDIwTTE1LDVWM0gxN1Y1SDE1TTExLDVWM0gxM1Y1SDExTTcsNVYzSDlWNUg3TTExLDIxVjE5SDEzVjIxSDExTTcsMjFWMTlIOVYyMUg3TTQsMjFBMSwxIDAgMCwxIDMsMjBWMTlINVYyMUg0TTMsMTVINVYxN0gzVjE1TTIxLDE1VjE3SDE5VjE1SDIxTTMsMTFINVYxM0gzVjExTTIxLDExVjEzSDE5VjExSDIxTTIxLDdWOUgxOVY3SDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdFBsYWNlID0gXCJNNCAzSDVWNUgzVjRDMyAzLjUgMy41IDMgNCAzTTIwIDNDMjAuNSAzIDIxIDMuNSAyMSA0VjVIMTlWM0gyME0xNSA1VjNIMTdWNUgxNU0xMSA1VjNIMTNWNUgxMU03IDVWM0g5VjVIN00yMSAxMkMyMSAxMi41IDIwLjUgMTMgMjAgMTNIMTlWMTFIMjFWMTJNMTUgMTNWMTFIMTdWMTNIMTVNMTEgMTNWMTFIMTNWMTNIMTFNNyAxM1YxMUg5VjEzSDdNNCAxM0MzLjUgMTMgMyAxMi41IDMgMTJWMTFINVYxM0g0TTMgN0g1VjlIM1Y3TTIxIDdWOUgxOVY3SDIxTTcgMTZMMTIgMjFMMTcgMTZIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3RTZWFyY2ggPSBcIk0xOS4zMSAxOC45QzE5Ljc1IDE4LjIxIDIwIDE3LjM4IDIwIDE2LjVDMjAgMTQgMTggMTIgMTUuNSAxMlMxMSAxNCAxMSAxNi41IDEzIDIxIDE1LjUgMjFDMTYuMzcgMjEgMTcuMTkgMjAuNzUgMTcuODggMjAuMzJMMjEgMjMuMzlMMjIuMzkgMjJMMTkuMzEgMTguOU0xNS41IDE5QzE0LjEyIDE5IDEzIDE3Ljg4IDEzIDE2LjVTMTQuMTIgMTQgMTUuNSAxNCAxOCAxNS4xMiAxOCAxNi41IDE2Ljg4IDE5IDE1LjUgMTlNMjEgOUgxOVY3SDIxVjlNMjEgNUgxOVYzSDIwQzIwLjU1IDMgMjEgMy40NSAyMSA0VjVNMTkgMTEuMDNWMTFIMjFWMTNIMjAuOTdDMjAuNDYgMTIuMjEgMTkuNzkgMTEuNTQgMTkgMTEuMDNNMTcgNUgxNVYzSDE3VjVNMTMgNUgxMVYzSDEzVjVNMyA3SDVWOUgzVjdNNyAxOUg5VjIxSDdWMTlNMyAxMUg1VjEzSDNWMTFNNCAzSDVWNUgzVjRDMyAzLjQ1IDMuNDUgMyA0IDNNOSA1SDdWM0g5VjVNMyAxOUg1VjIxSDRDMy40NSAyMSAzIDIwLjU1IDMgMjBWMTlNMyAxNUg1VjE3SDNWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uID0gXCJNMiw0QzIsMi44OSAyLjksMiA0LDJIN1Y0SDRWN0gyVjRNMjIsNFY3SDIwVjRIMTdWMkgyMEEyLDIgMCAwLDEgMjIsNE0yMCwyMFYxN0gyMlYyMEMyMiwyMS4xMSAyMS4xLDIyIDIwLDIySDE3VjIwSDIwTTIsMjBWMTdINFYyMEg3VjIySDRBMiwyIDAgMCwxIDIsMjBNMTAsMkgxNFY0SDEwVjJNMTAsMjBIMTRWMjJIMTBWMjBNMjAsMTBIMjJWMTRIMjBWMTBNMiwxMEg0VjE0SDJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uRHJhZyA9IFwiTTE0LDE3SDE3VjE0SDE5VjE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3TTEyLDE3VjE5SDlWMTdIMTJNNywxN1YxOUgzVjE1SDVWMTdIN00zLDEzVjEwSDVWMTNIM00zLDhWNEg3VjZINVY4SDNNOSw0SDEyVjZIOVY0TTE1LDRIMTlWOEgxN1Y2SDE1VjRNMTksMTBWMTJIMTdWMTBIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uRWxsaXBzZSA9IFwiTTYuMzUsMjAuMjVMNy41NiwxOC42NkM4LjQyLDE5LjIzIDkuMzksMTkuNjQgMTAuNDMsMTkuODVMMTAuMTYsMjEuODNDOC43NywyMS41NyA3LjUsMjEgNi4zNSwyMC4yNU0xNi40MywxOC42NkwxNy42NCwyMC4yNkMxNi41LDIxLjAzIDE1LjIzLDIxLjU3IDEzLjg0LDIxLjgzTDEzLjU3LDE5Ljg1QzE0LjYxLDE5LjY0IDE1LjU3LDE5LjIzIDE2LjQzLDE4LjY2TTE5Ljg0LDEzLjU5TDIxLjgzLDEzLjg2QzIxLjU3LDE1LjI1IDIxLDE2LjU0IDIwLjI0LDE3LjY2TDE4LjY1LDE2LjQ1QzE5LjIyLDE1LjYgMTkuNjMsMTQuNjMgMTkuODQsMTMuNTlNMi4xNywxMy44NEw0LjE1LDEzLjU3QzQuMzYsMTQuNjEgNC43NywxNS41OCA1LjM0LDE2LjQ0TDMuNzUsMTcuNjVDMywxNi41IDIuNDMsMTUuMjMgMi4xNywxMy44NE0xOC42Niw3LjU2TDIwLjI1LDYuMzVDMjEuMDMsNy41IDIxLjU4LDguNzggMjEuODMsMTAuMThMMTkuODUsMTAuNDVDMTkuNjQsOS40IDE5LjIzLDguNDIgMTguNjYsNy41Nk0xMy41Nyw0LjE1TDEzLjg0LDIuMTdDMTUuMjMsMi40MyAxNi41LDMgMTcuNjUsMy43NUwxNi40NCw1LjM0QzE1LjU4LDQuNzcgMTQuNjEsNC4zNiAxMy41Nyw0LjE1TTcuNTYsNS4zNEw2LjM1LDMuNzVDNy41LDMgOC43NywyLjQzIDEwLjE2LDIuMTdMMTAuNDMsNC4xNUM5LjM5LDQuMzYgOC40Miw0Ljc3IDcuNTYsNS4zNE00LjE1LDEwLjQzTDIuMTcsMTAuMTZDMi40Myw4Ljc3IDMsNy41IDMuNzUsNi4zNUw1LjM0LDcuNTZDNC43Nyw4LjQyIDQuMzYsOS4zOSA0LjE1LDEwLjQzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbkVsbGlwc2VBcnJvd0luc2lkZSA9IFwiTTExLjIgNEM5Ljk0IDQuMTIgOC43MiA0LjUzIDcuNjQgNS4yTDYuNjQgMy40N0M3Ljk1IDIuNjQgOS40NSAyLjEzIDExIDJNMTcuNTMgNi4yNUMxNi42MiA1LjM5IDE1LjUzIDQuNzMgMTQuMzQgNC4zM0wxNSAyLjM5QzE2LjUgMi44NCAxNy44OSAzLjY2IDE5IDQuNzhNNS4zNCA3LjQxQzQuNjQgOC40NCA0LjE5IDkuNiA0IDEwLjgzTDIgMTAuNTVDMi4yIDkgMi43OSA3LjUgMy43IDYuMjNNMjIgMTJWMTIuNjZMMjAgMTIuNVYxMkMyMCAxMC45MiAxOS44MSA5Ljg2IDE5LjM5IDguODZMMjEuMjIgOC4wNkMyMS43NSA5LjMxIDIyIDEwLjY1IDIyIDEyTTYgMTcuM0w0LjUgMTguNjFDMy40NyAxNy40MyAyLjcyIDE2LjA0IDIuMyAxNC41M0w0LjE3IDE0QzQuNTMgMTUuMjIgNS4xNiAxNi4zNSA2IDE3LjNNMTIuMTQgMjJIMTJDMTAuNSAyMiA5IDIxLjY4IDcuNjQgMjEuMDdMOC41MyAxOS4yNEM5LjYyIDE5Ljc1IDEwLjggMjAgMTIgMjBIMTIuMTlNMTcgMjFIMTVWMTVIMjFWMTdIMTguNDJMMjEuMTQgMTkuNzZMMTkuNzMgMjEuMTdMMTcgMTguNVwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbk1hcmtlciA9IFwiTTIgNEMyIDIuODkgMi45IDIgNCAySDdWNEg0VjdIMlY0TTIyIDRWN0gyMFY0SDE3VjJIMjBDMjEuMSAyIDIyIDIuODkgMjIgNE0yIDIwVjE3SDRWMjBIN1YyMkg0QzIuOSAyMiAyIDIxLjExIDIgMjBNMTAgMkgxNFY0SDEwVjJNMTAgMjBIMTRWMjJIMTBWMjBNMiAxMEg0VjE0SDJWMTBNMTguNSAxM0MyMC40IDEzIDIyIDE0LjYgMjIgMTYuNUMyMiAxOS4xIDE4LjUgMjMgMTguNSAyM0MxOC41IDIzIDE1IDE5LjEgMTUgMTYuNUMxNSAxNC42IDE2LjYgMTMgMTguNSAxM00xOC41IDE3LjhDMTkuMiAxNy44IDE5LjggMTcuMiAxOS43IDE2LjZDMTkuNyAxNiAxOS4xIDE1LjQgMTguNSAxNS40QzE3LjkgMTUuNCAxNy4zIDE1LjkgMTcuMyAxNi42QzE3LjMgMTcuMiAxNy44IDE3LjggMTguNSAxNy44TTIwIDEwSDIyVjEyLjM0QzIxLjQyIDExLjg0IDIwLjc0IDExLjQ1IDIwIDExLjIzVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbk11bHRpcGxlID0gXCJNMTEgNlY0SDE1VjZIMTFNNiA5SDhWMTNINlY5TTYgNkM2IDQuODkgNi45IDQgOCA0SDlWNkg4VjdINlY2TTggMThDNi44OSAxOCA2IDE3LjEgNiAxNlYxNUg4VjE2SDlWMThIOE0xOCA0QzE5LjExIDQgMjAgNC45IDIwIDZWN0gxOFY2SDE3VjRIMThNMTUgMTZWMThIMTFWMTZIMTVNMjAgMTNIMThWOUgyMFYxM00yMCAxNkMyMCAxNy4xMSAxOS4xIDE4IDE4IDE4SDE3VjE2SDE4VjE1SDIwVjE2TTMgOEg0VjIwSDE2VjIxQzE2IDIxLjU0IDE1LjU3IDIyIDE1LjAzIDIySDE1TDMgMjJDMi40NSAyMiAyIDIxLjU1IDIgMjFWOUMyIDguNDUgMi40NSA4IDMgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZWxlY3Rpb25NdWx0aXBsZU1hcmtlciA9IFwiTTcgNEg5VjZIOFY3SDZWNUM2IDQuNDUgNi40NSA0IDcgNE0xOSA0QzE5LjU1IDQgMjAgNC40NSAyMCA1VjdIMThWNkgxN1Y0SDE5TTExIDZWNEgxNVY2SDExTTcgMThDNi40NSAxOCA2IDE3LjU1IDYgMTdWMTVIOFYxNkg5VjE4SDdNNiA5SDhWMTNINlY5TTMgOEg0VjIwSDE0LjU4TDE2LjAzIDIyTDMgMjJDMi40NSAyMiAyIDIxLjU1IDIgMjFWOUMyIDguNDUgMi40NSA4IDMgOE0xOC41IDEyQzIwLjQgMTIgMjIgMTMuNiAyMiAxNS41QzIyIDE4LjEgMTguNSAyMiAxOC41IDIyQzE4LjUgMjIgMTUgMTguMSAxNSAxNS41QzE1IDEzLjYgMTYuNiAxMiAxOC41IDEyTTE4LjUgMTYuOEMxOS4yIDE2LjggMTkuOCAxNi4yIDE5LjcgMTUuNkMxOS43IDE1IDE5LjEgMTQuNCAxOC41IDE0LjRDMTcuOSAxNC40IDE3LjMgMTQuOSAxNy4zIDE1LjZDMTcuMyAxNi4yIDE3LjggMTYuOCAxOC41IDE2LjhNMTEgMThWMTZIMTNDMTMuMDkgMTYuNjYgMTMuMjcgMTcuMzMgMTMuNSAxOEgxMU0yMCA5VjEwLjIzQzE5LjUgMTAuMDggMTkgMTAgMTguNSAxMEwxOCAxMC4wM1Y5SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbGVjdGlvbk9mZiA9IFwiTTAuNSwzLjc3TDEuNzgsMi41TDIxLjUsMjIuMjJMMjAuMjMsMjMuNUwxOC43MywyMkgxN1YyMC4yN0wzLjczLDdIMlY1LjI3TDAuNSwzLjc3TTQsMkg3VjRINS44MkwzLjgzLDJINE0yMiw0VjdIMjBWNEgxN1YySDIwQTIsMiAwIDAsMSAyMiw0TTIwLDE3SDIyVjIwTDIyLDIwLjE3TDIwLDE4LjE4VjE3TTIsMjBWMTdINFYyMEg3VjIySDRBMiwyIDAgMCwxIDIsMjBNMTAsMkgxNFY0SDEwVjJNMTAsMjBIMTRWMjJIMTBWMjBNMjAsMTBIMjJWMTRIMjBWMTBNMiwxMEg0VjE0SDJWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VsZWN0aW9uU2VhcmNoID0gXCJNMTkuMjcgMTguOUMxOS43IDE4LjIxIDE5Ljk1IDE3LjM4IDE5Ljk1IDE2LjVDMTkuOTUgMTQgMTcuOTUgMTIgMTUuNDYgMTJTMTAuOTYgMTQgMTAuOTYgMTYuNSAxMi45NiAyMSAxNS40NiAyMUMxNi4zMyAyMSAxNy4xNSAyMC43NSAxNy44NCAyMC4zMkwyMC45NiAyMy4zOUwyMi4zNSAyMkwxOS4yNyAxOC45TTE1LjQ2IDE5QzE0LjA3IDE5IDEyLjk2IDE3Ljg4IDEyLjk2IDE2LjVTMTQuMDcgMTQgMTUuNDYgMTQgMTcuOTUgMTUuMTIgMTcuOTUgMTYuNSAxNi44NCAxOSAxNS40NiAxOU0yMiAxNEgyMS40NUMyMS4xMiAxMy4xOSAyMC42MiAxMi40NyAyMCAxMS44NlYxMEgyMlYxNE0yMCA0SDE3VjJIMjBDMjEuMTEgMiAyMiAyLjkgMjIgNFY3SDIwVjRNMTQgNEgxMFYySDE0VjRNNCAySDdWNEg0VjdIMlY0QzIgMi44OSAyLjkgMiA0IDJNMTIgMjJIMTBWMjBDMTAuNSAyMC44MiAxMS4yIDIxLjUgMTIgMjJNNCAyMEg3VjIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFYxN0g0VjIwTTQgMTRIMlYxMEg0VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbWFudGljV2ViID0gXCJNMTIuOSA0LjIyQzE4LjczIDYuODQgMjAgMiAyMCAyUzE4Ljg5IDguMDcgMTMuNzkgMTAuNTVDMTIuNzUgMTEuMDYgMTIuMSAxMS4zMyAxMi4xIDExLjMzTDMuNzMgNy4yNUwxMi4xIDMuODJDMTIuMSAzLjgyIDExLjkgMy43NiAxMi45IDQuMjJNMTEuMTIgMjJMMy4zMyAxNy43OFY5LjA3TDExLjEyIDEzLjA0VjIyTTEyLjg4IDIyTDIwLjY4IDE3Ljc4VjkuMDdMMTIuODggMTMuMDRWMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZCA9IFwiTTIsMjFMMjMsMTJMMiwzVjEwTDE3LDEyTDIsMTRWMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZENoZWNrID0gXCJNMiAzVjEwTDE3IDEyTDIgMTRWMjFMMjMgMTJNMjIgMTUuNUwxOC41IDE5TDE2LjUgMTdMMTUgMTguNUwxOC41IDIyTDIzLjUgMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZENoZWNrT3V0bGluZSA9IFwiTTIgM1YxMEwxNyAxMkwyIDE0VjIxTDIzIDEyTTQgNi4wM0wxMS41MyA5LjI1TDQgOC4yNU0xMS41MyAxNC43NUw0IDE3Ljk3VjE1Ljc1TTIyIDE1LjVMMTguNSAxOUwxNi41IDE3TDE1IDE4LjVMMTguNSAyMkwyMy41IDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbmRDaXJjbGUgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk04LDcuNzFWMTEuMDVMMTUuMTQsMTJMOCwxMi45NVYxNi4yOUwxOCwxMkw4LDcuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZENpcmNsZU91dGxpbmUgPSBcIk04LDcuNzFMMTgsMTJMOCwxNi4yOVYxMi45NUwxNS4xNCwxMkw4LDExLjA1VjcuNzFNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEE4LDggMCAwLDAgNCwxMkE4LDggMCAwLDAgMTIsMjBBOCw4IDAgMCwwIDIwLDEyQTgsOCAwIDAsMCAxMiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlbmRDbG9jayA9IFwiTTIgM1YxMEwxMSAxMkwyIDE0VjIxTDkuMjcgMTcuODlBNyA3IDAgMCAwIDE2IDIzQTcgNyAwIDAgMCAyMyAxNkE3IDcgMCAwIDAgMTYgOUwyIDNNMTYgMTFBNSA1IDAgMCAxIDIxIDE2QTUgNSAwIDAgMSAxNiAyMUE1IDUgMCAwIDEgMTEgMTZBNSA1IDAgMCAxIDE2IDExTTE1IDEyLjVWMTYuNUwxOCAxOC41TDE4Ljc1IDE3LjI1TDE2LjUgMTUuNzVWMTIuNUgxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZW5kQ2xvY2tPdXRsaW5lID0gXCJNMiAzVjEwTDExIDEyTDIgMTRWMjFMOS4yNyAxNy44OUE3IDcgMCAwIDAgMTYgMjNBNyA3IDAgMCAwIDIzIDE2QTcgNyAwIDAgMCAxNiA5TDIgM000IDYuMDNMMTIuNzggOS44QTcgNyAwIDAgMCAxMi4xIDEwLjJMNCA4LjRWNi4wM00xNiAxMUE1IDUgMCAwIDEgMjEgMTZBNSA1IDAgMCAxIDE2IDIxQTUgNSAwIDAgMSAxMSAxNkE1IDUgMCAwIDEgMTYgMTFNMTUgMTIuNVYxNi41TDE4IDE4LjVMMTguNzUgMTcuMjVMMTYuNSAxNS43NVYxMi41SDE1TTkuMTggMTQuNDVBNyA3IDAgMCAwIDkgMTUuODJMNCAxNy45N1YxNS42TDkuMTggMTQuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VuZExvY2sgPSBcIk0yMywxOFYxNy41QTIuNSwyLjUgMCAwLDAgMjAuNSwxNUEyLjUsMi41IDAgMCwwIDE4LDE3LjVWMThBMSwxIDAgMCwwIDE3LDE5VjIzQTEsMSAwIDAsMCAxOCwyNEgyM0ExLDEgMCAwLDAgMjQsMjNWMTlBMSwxIDAgMCwwIDIzLDE4TTIyLDE4SDE5VjE3LjVBMS41LDEuNSAwIDAsMSAyMC41LDE2QTEuNSwxLjUgMCAwLDEgMjIsMTcuNVYxOE0yMywxMkwyLDIxVjE0TDE3LDEyTDIsMTBWM0wyMywxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZW5kTG9ja091dGxpbmUgPSBcIk0yMyAxOFYxNy41QzIzIDE2LjEyIDIxLjg4IDE1IDIwLjUgMTVTMTggMTYuMTIgMTggMTcuNVYxOEMxNy40NSAxOCAxNyAxOC40NSAxNyAxOVYyM0MxNyAyMy41NSAxNy40NSAyNCAxOCAyNEgyM0MyMy41NSAyNCAyNCAyMy41NSAyNCAyM1YxOUMyNCAxOC40NSAyMy41NSAxOCAyMyAxOE0yMiAxOEgxOVYxNy41QzE5IDE2LjY3IDE5LjY3IDE2IDIwLjUgMTZTMjIgMTYuNjcgMjIgMTcuNVYxOE00IDYuMDNMMTEuNSA5LjI1TDQgOC4yNUw0IDYuMDNNMTEuNSAxNC43NUw0IDE3Ljk3VjE1Ljc1TDExLjUgMTQuNzVNMiAzTDIgMTBMMTcgMTJMMiAxNEwyIDIxTDIzIDEyTDIgM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZW5kT3V0bGluZSA9IFwiTTQgNi4wM0wxMS41IDkuMjVMNCA4LjI1TDQgNi4wM00xMS41IDE0Ljc1TDQgMTcuOTdWMTUuNzVMMTEuNSAxNC43NU0yIDNMMiAxMEwxNyAxMkwyIDE0TDIgMjFMMjMgMTJMMiAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcmlhbFBvcnQgPSBcIk03LDNIMTdWNUgxOVY4SDE2VjE0SDhWOEg1VjVIN1YzTTE3LDlIMTlWMTRIMTdWOU0xMSwxNUgxM1YyMkgxMVYxNU01LDlIN1YxNEg1VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VydmVyID0gXCJNNCwxSDIwQTEsMSAwIDAsMSAyMSwyVjZBMSwxIDAgMCwxIDIwLDdINEExLDEgMCAwLDEgMyw2VjJBMSwxIDAgMCwxIDQsMU00LDlIMjBBMSwxIDAgMCwxIDIxLDEwVjE0QTEsMSAwIDAsMSAyMCwxNUg0QTEsMSAwIDAsMSAzLDE0VjEwQTEsMSAwIDAsMSA0LDlNNCwxN0gyMEExLDEgMCAwLDEgMjEsMThWMjJBMSwxIDAgMCwxIDIwLDIzSDRBMSwxIDAgMCwxIDMsMjJWMThBMSwxIDAgMCwxIDQsMTdNOSw1SDEwVjNIOVY1TTksMTNIMTBWMTFIOVYxM005LDIxSDEwVjE5SDlWMjFNNSwzVjVIN1YzSDVNNSwxMVYxM0g3VjExSDVNNSwxOVYyMUg3VjE5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2VydmVyTWludXMgPSBcIk00LDRIMjBBMSwxIDAgMCwxIDIxLDVWOUExLDEgMCAwLDEgMjAsMTBINEExLDEgMCAwLDEgMyw5VjVBMSwxIDAgMCwxIDQsNE05LDhIMTBWNkg5VjhNNSw2VjhIN1Y2SDVNOCwxNkgxNlYxOEg4VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlck5ldHdvcmsgPSBcIk0xMywxOUgxNEExLDEgMCAwLDEgMTUsMjBIMjJWMjJIMTVBMSwxIDAgMCwxIDE0LDIzSDEwQTEsMSAwIDAsMSA5LDIySDJWMjBIOUExLDEgMCAwLDEgMTAsMTlIMTFWMTdINEExLDEgMCAwLDEgMywxNlYxMkExLDEgMCAwLDEgNCwxMUgyMEExLDEgMCAwLDEgMjEsMTJWMTZBMSwxIDAgMCwxIDIwLDE3SDEzVjE5TTQsM0gyMEExLDEgMCAwLDEgMjEsNFY4QTEsMSAwIDAsMSAyMCw5SDRBMSwxIDAgMCwxIDMsOFY0QTEsMSAwIDAsMSA0LDNNOSw3SDEwVjVIOVY3TTksMTVIMTBWMTNIOVYxNU01LDVWN0g3VjVINU01LDEzVjE1SDdWMTNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXJ2ZXJOZXR3b3JrT2ZmID0gXCJNMTMsMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDE1LjczTDEzLDE3LjI3VjE5TTIyLDIwVjIxLjE4TDIwLjgyLDIwSDIyTTIxLDIyLjcyTDE5LjczLDI0TDE3LjczLDIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDRBMSwxIDAgMCwxIDMsMTZWMTJBMSwxIDAgMCwxIDQsMTFINi43M0w0LjczLDlINEExLDEgMCAwLDEgMyw4VjcuMjdMMSw1LjI3TDIuMjgsNEwyMSwyMi43Mk00LDNIMjBBMSwxIDAgMCwxIDIxLDRWOEExLDEgMCAwLDEgMjAsOUg5LjgyTDcsNi4xOFY1SDUuODJMMy44NCwzQzMuODksMyAzLjk0LDMgNCwzTTIwLDExQTEsMSAwIDAsMSAyMSwxMlYxNkExLDEgMCAwLDEgMjAsMTdIMTcuODJMMTEuODIsMTFIMjBNOSw3SDEwVjVIOVY3TTksMTVIMTBWMTQuMjdMOSwxMy4yN1YxNU01LDEzVjE1SDdWMTNINVpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXJ2ZXJPZmYgPSBcIk00LDFIMjBBMSwxIDAgMCwxIDIxLDJWNkExLDEgMCAwLDEgMjAsN0g4LjgyTDYuODIsNUg3VjNINVYzLjE4TDMuMjEsMS4zOUMzLjM5LDEuMTUgMy42OCwxIDQsMU0yMiwyMi43MkwyMC43MywyNEwxOS43MywyM0g0QTEsMSAwIDAsMSAzLDIyVjE4QTEsMSAwIDAsMSA0LDE3SDEzLjczTDExLjczLDE1SDRBMSwxIDAgMCwxIDMsMTRWMTBBMSwxIDAgMCwxIDQsOUg1LjczTDMuNjgsNi45NUMzLjM4LDYuODUgMy4xNSw2LjYyIDMuMDUsNi4zMkwxLDQuMjdMMi4yOCwzTDIyLDIyLjcyTTIwLDlBMSwxIDAgMCwxIDIxLDEwVjE0QTEsMSAwIDAsMSAyMCwxNUgxNi44MkwxMC44Miw5SDIwTTIwLDE3QTEsMSAwIDAsMSAyMSwxOFYxOS4xOEwxOC44MiwxN0gyME05LDVIMTBWM0g5VjVNOSwxM0g5LjczTDksMTIuMjdWMTNNOSwyMUgxMFYxOUg5VjIxTTUsMTFWMTNIN1YxMUg1TTUsMTlWMjFIN1YxOUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlclBsdXMgPSBcIk00LDRIMjBBMSwxIDAgMCwxIDIxLDVWOUExLDEgMCAwLDEgMjAsMTBINEExLDEgMCAwLDEgMyw5VjVBMSwxIDAgMCwxIDQsNE05LDhIMTBWNkg5VjhNNSw2VjhIN1Y2SDVNOCwxNkgxMVYxM0gxM1YxNkgxNlYxOEgxM1YyMUgxMVYxOEg4VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlclJlbW92ZSA9IFwiTTQsNEgyMEExLDEgMCAwLDEgMjEsNVY5QTEsMSAwIDAsMSAyMCwxMEg0QTEsMSAwIDAsMSAzLDlWNUExLDEgMCAwLDEgNCw0TTksOEgxMFY2SDlWOE01LDZWOEg3VjZINU0xMC41OSwxN0w4LDE0LjQxTDkuNDEsMTNMMTIsMTUuNTlMMTQuNTksMTNMMTYsMTQuNDFMMTMuNDEsMTdMMTYsMTkuNTlMMTQuNTksMjFMMTIsMTguNDFMOS40MSwyMUw4LDE5LjU5TDEwLjU5LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNlcnZlclNlY3VyaXR5ID0gXCJNMywxSDE5QTEsMSAwIDAsMSAyMCwyVjZBMSwxIDAgMCwxIDE5LDdIM0ExLDEgMCAwLDEgMiw2VjJBMSwxIDAgMCwxIDMsMU0zLDlIMTlBMSwxIDAgMCwxIDIwLDEwVjEwLjY3TDE3LjUsOS41NkwxMSwxMi40NFYxNUgzQTEsMSAwIDAsMSAyLDE0VjEwQTEsMSAwIDAsMSAzLDlNMywxN0gxMUMxMS4wNiwxOS4yNSAxMiwyMS40IDEzLjQ2LDIzSDNBMSwxIDAgMCwxIDIsMjJWMThBMSwxIDAgMCwxIDMsMTdNOCw1SDlWM0g4VjVNOCwxM0g5VjExSDhWMTNNOCwyMUg5VjE5SDhWMjFNNCwzVjVINlYzSDRNNCwxMVYxM0g2VjExSDRNNCwxOVYyMUg2VjE5SDRNMTcuNSwxMkwyMiwxNFYxN0MyMiwxOS43OCAyMC4wOCwyMi4zNyAxNy41LDIzQzE0LjkyLDIyLjM3IDEzLDE5Ljc4IDEzLDE3VjE0TDE3LjUsMTJNMTcuNSwxMy45NEwxNSwxNS4wNlYxNy43MkMxNSwxOS4yNiAxNi4wNywyMC43IDE3LjUsMjEuMDZWMTMuOTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0QWxsID0gXCJNOSw1QzEwLjA0LDUgMTEuMDYsNS4yNCAxMiw1LjY4QzEyLjk0LDUuMjQgMTMuOTYsNSAxNSw1QTcsNyAwIDAsMSAyMiwxMkE3LDcgMCAwLDEgMTUsMTlDMTMuOTYsMTkgMTIuOTQsMTguNzYgMTIsMTguMzJDMTEuMDYsMTguNzYgMTAuMDQsMTkgOSwxOUE3LDcgMCAwLDEgMiwxMkE3LDcgMCAwLDEgOSw1TTguNSwxMkM4LjUsMTMuODcgOS4yOSwxNS41NiAxMC41NiwxNi43NUwxMS41NiwxNi4yOUMxMC4zMSwxNS4yOSA5LjUsMTMuNzQgOS41LDEyQzkuNSwxMC4yNiAxMC4zMSw4LjcxIDExLjU2LDcuNzFMMTAuNTYsNy4yNUM5LjI5LDguNDQgOC41LDEwLjEzIDguNSwxMk0xNS41LDEyQzE1LjUsMTAuMTMgMTQuNzEsOC40NCAxMy40NCw3LjI1TDEyLjQ0LDcuNzFDMTMuNjksOC43MSAxNC41LDEwLjI2IDE0LjUsMTJDMTQuNSwxMy43NCAxMy42OSwxNS4yOSAxMi40NCwxNi4yOUwxMy40NCwxNi43NUMxNC43MSwxNS41NiAxNS41LDEzLjg3IDE1LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0Q2VudGVyID0gXCJNOSw1QTcsNyAwIDAsMCAyLDEyQTcsNyAwIDAsMCA5LDE5QzEwLjA0LDE5IDExLjA2LDE4Ljc2IDEyLDE4LjMyQzEyLjk0LDE4Ljc2IDEzLjk2LDE5IDE1LDE5QTcsNyAwIDAsMCAyMiwxMkE3LDcgMCAwLDAgMTUsNUMxMy45Niw1IDEyLjk0LDUuMjQgMTIsNS42OEMxMS4wNiw1LjI0IDEwLjA0LDUgOSw1TTksN0M5LjM0LDcgOS42Nyw3LjAzIDEwLDcuMUM4LjcyLDguNDEgOCwxMC4xNyA4LDEyQzgsMTMuODMgOC43MiwxNS41OSAxMCwxNi44OUM5LjY3LDE2Ljk2IDkuMzQsMTcgOSwxN0E1LDUgMCAwLDEgNCwxMkE1LDUgMCAwLDEgOSw3TTE1LDdBNSw1IDAgMCwxIDIwLDEyQTUsNSAwIDAsMSAxNSwxN0MxNC42NiwxNyAxNC4zMywxNi45NyAxNCwxNi45QzE1LjI4LDE1LjU5IDE2LDEzLjgzIDE2LDEyQzE2LDEwLjE3IDE1LjI4LDguNDEgMTQsNy4xMUMxNC4zMyw3LjA0IDE0LjY2LDcgMTUsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRDZW50ZXJSaWdodCA9IFwiTTE1LDE5QzEzLjk2LDE5IDEyLjk0LDE4Ljc2IDEyLDE4LjMyQzExLjA2LDE4Ljc2IDEwLjA0LDE5IDksMTlBNyw3IDAgMCwxIDIsMTJBNyw3IDAgMCwxIDksNUMxMC4wNCw1IDExLjA2LDUuMjQgMTIsNS42OEMxMi45NCw1LjI0IDEzLjk2LDUgMTUsNUE3LDcgMCAwLDEgMjIsMTJBNyw3IDAgMCwxIDE1LDE5TTksMTdMMTAsMTYuODlDOC43MiwxNS41OSA4LDEzLjgzIDgsMTJDOCwxMC4xNyA4LjcyLDguNDEgMTAsNy4xTDksN0E1LDUgMCAwLDAgNCwxMkE1LDUgMCAwLDAgOSwxN00xNS41LDEyQzE1LjUsMTAuMTMgMTQuNzEsOC40NCAxMy40NCw3LjI1TDEyLjQ0LDcuNzFDMTMuNjksOC43MSAxNC41LDEwLjI2IDE0LjUsMTJDMTQuNSwxMy43NCAxMy42OSwxNS4yOSAxMi40NCwxNi4yOUwxMy40NCwxNi43NUMxNC43MSwxNS41NiAxNS41LDEzLjg3IDE1LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0TGVmdCA9IFwiTTksNUE3LDcgMCAwLDAgMiwxMkE3LDcgMCAwLDAgOSwxOUMxMC4wNCwxOSAxMS4wNiwxOC43NiAxMiwxOC4zMkMxMi45NCwxOC43NiAxMy45NiwxOSAxNSwxOUE3LDcgMCAwLDAgMjIsMTJBNyw3IDAgMCwwIDE1LDVDMTMuOTYsNSAxMi45NCw1LjI0IDEyLDUuNjhDMTEuMDYsNS4yNCAxMC4wNCw1IDksNU0xNSw3QTUsNSAwIDAsMSAyMCwxMkE1LDUgMCAwLDEgMTUsMTdDMTQuNjYsMTcgMTQuMzMsMTYuOTcgMTQsMTYuOUMxNS4yOCwxNS41OSAxNiwxMy44MyAxNiwxMkMxNiwxMC4xNyAxNS4yOCw4LjQxIDE0LDcuMTFDMTQuMzMsNy4wNCAxNC42Niw3IDE1LDdNMTIsOEMxMy4yNiw4Ljk1IDE0LDEwLjQzIDE0LDEyQzE0LDEzLjU3IDEzLjI2LDE1LjA1IDEyLDE2QzEwLjc0LDE1LjA1IDEwLDEzLjU3IDEwLDEyQzEwLDEwLjQzIDEwLjc0LDguOTUgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRMZWZ0Q2VudGVyID0gXCJNOSw1QzEwLjA0LDUgMTEuMDYsNS4yNCAxMiw1LjY4QzEyLjk0LDUuMjQgMTMuOTYsNSAxNSw1QTcsNyAwIDAsMSAyMiwxMkE3LDcgMCAwLDEgMTUsMTlDMTMuOTYsMTkgMTIuOTQsMTguNzYgMTIsMTguMzJDMTEuMDYsMTguNzYgMTAuMDQsMTkgOSwxOUE3LDcgMCAwLDEgMiwxMkE3LDcgMCAwLDEgOSw1TTE1LDdMMTQsNy4xMUMxNS4yOCw4LjQxIDE2LDEwLjE3IDE2LDEyQzE2LDEzLjgzIDE1LjI4LDE1LjU5IDE0LDE2LjlMMTUsMTdBNSw1IDAgMCwwIDIwLDEyQTUsNSAwIDAsMCAxNSw3TTguNSwxMkM4LjUsMTMuODcgOS4yOSwxNS41NiAxMC41NiwxNi43NUwxMS41NiwxNi4yOUMxMC4zMSwxNS4yOSA5LjUsMTMuNzQgOS41LDEyQzkuNSwxMC4yNiAxMC4zMSw4LjcxIDExLjU2LDcuNzFMMTAuNTYsNy4yNUM5LjI5LDguNDQgOC41LDEwLjEzIDguNSwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRMZWZ0UmlnaHQgPSBcIk05LDVDMTAuMDQsNSAxMS4wNiw1LjI0IDEyLDUuNjhDMTIuOTQsNS4yNCAxMy45Niw1IDE1LDVBNyw3IDAgMCwxIDIyLDEyQTcsNyAwIDAsMSAxNSwxOUMxMy45NiwxOSAxMi45NCwxOC43NiAxMiwxOC4zMkMxMS4wNiwxOC43NiAxMC4wNCwxOSA5LDE5QTcsNyAwIDAsMSAyLDEyQTcsNyAwIDAsMSA5LDVNOSwxMkM5LDE0LjIyIDEwLjIxLDE2LjE2IDEyLDE3LjJDMTMuNzksMTYuMTYgMTUsMTQuMjIgMTUsMTJDMTUsOS43OCAxMy43OSw3Ljg0IDEyLDYuOEMxMC4yMSw3Ljg0IDksOS43OCA5LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNldE1lcmdlID0gXCJNMiA3VjlIN1Y3SDJNMTIgOVYxMUg5VjEzSDEyVjE1TDE1IDEyTDEyIDlNMTcgOVYxNUgyMlY5SDE3TTIgMTFWMTNIN1YxMUgyTTIgMTVWMTdIN1YxNUgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNldE5vbmUgPSBcIk05LDVBNyw3IDAgMCwwIDIsMTJBNyw3IDAgMCwwIDksMTlDMTAuMDQsMTkgMTEuMDYsMTguNzYgMTIsMTguMzJDMTIuOTQsMTguNzYgMTMuOTYsMTkgMTUsMTlBNyw3IDAgMCwwIDIyLDEyQTcsNyAwIDAsMCAxNSw1QzEzLjk2LDUgMTIuOTQsNS4yNCAxMiw1LjY4QzExLjA2LDUuMjQgMTAuMDQsNSA5LDVNOSw3QzkuMzQsNyA5LjY3LDcuMDMgMTAsNy4xQzguNzIsOC40MSA4LDEwLjE3IDgsMTJDOCwxMy44MyA4LjcyLDE1LjU5IDEwLDE2Ljg5QzkuNjcsMTYuOTYgOS4zNCwxNyA5LDE3QTUsNSAwIDAsMSA0LDEyQTUsNSAwIDAsMSA5LDdNMTUsN0E1LDUgMCAwLDEgMjAsMTJBNSw1IDAgMCwxIDE1LDE3QzE0LjY2LDE3IDE0LjMzLDE2Ljk3IDE0LDE2LjlDMTUuMjgsMTUuNTkgMTYsMTMuODMgMTYsMTJDMTYsMTAuMTcgMTUuMjgsOC40MSAxNCw3LjExQzE0LjMzLDcuMDQgMTQuNjYsNyAxNSw3TTEyLDhDMTMuMjYsOC45NSAxNCwxMC40MyAxNCwxMkMxNCwxMy41NyAxMy4yNiwxNS4wNSAxMiwxNkMxMC43NCwxNS4wNSAxMCwxMy41NyAxMCwxMkMxMCwxMC40MyAxMC43NCw4Ljk1IDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0UmlnaHQgPSBcIk0xNSwxOUMxMy45NiwxOSAxMi45NCwxOC43NiAxMiwxOC4zMkMxMS4wNiwxOC43NiAxMC4wNCwxOSA5LDE5QTcsNyAwIDAsMSAyLDEyQTcsNyAwIDAsMSA5LDVDMTAuMDQsNSAxMS4wNiw1LjI0IDEyLDUuNjhDMTIuOTQsNS4yNCAxMy45Niw1IDE1LDVBNyw3IDAgMCwxIDIyLDEyQTcsNyAwIDAsMSAxNSwxOU05LDE3TDEwLDE2Ljg5QzguNzIsMTUuNTkgOCwxMy44MyA4LDEyQzgsMTAuMTcgOC43Miw4LjQxIDEwLDcuMUw5LDdBNSw1IDAgMCwwIDQsMTJBNSw1IDAgMCwwIDksMTdNMTIsMTZDMTMuMjYsMTUuMDUgMTQsMTMuNTcgMTQsMTJDMTQsMTAuNDMgMTMuMjYsOC45NSAxMiw4QzEwLjc0LDguOTUgMTAsMTAuNDMgMTAsMTJDMTAsMTMuNTcgMTAuNzQsMTUuMDUgMTIsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0U3BsaXQgPSBcIk0xNyA3VjlIMjJWN0gxN00yIDlWMTVIN1Y5SDJNMTIgOVYxMUg5VjEzSDEyVjE1TDE1IDEyTDEyIDlNMTcgMTFWMTNIMjJWMTFIMTdNMTcgMTVWMTdIMjJWMTVIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0U3F1YXJlID0gXCJNMTcuNyAxNy43TDE2LjYgMTguOEwxNS45IDE4TDE3IDE3TDE1IDE1TDE0IDE2LjFMMTMuMyAxNS40TDE0LjQgMTQuM0wxMi41IDEyLjRMMTEuNCAxMy41TDEwLjcgMTIuOEwxMS44IDExLjdMOS44IDkuOEw4LjcgMTAuOUw4IDEwLjJMOSA5TDcuMSA3LjFMNiA4LjFMNS4zIDcuNEw2LjQgNi4zTDQgNFYyMEgyMEwxNy43IDE3LjdNNyAxN1YxMS4yTDEyLjggMTdIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTZXRUb3BCb3ggPSBcIk01LDE1LjVBMC41LDAuNSAwIDAsMSA0LjUsMTZIMy41QTAuNSwwLjUgMCAwLDEgMywxNS41VjE1SDJBMSwxIDAgMCwxIDEsMTRWMTFBMSwxIDAgMCwxIDIsMTBIMjJBMSwxIDAgMCwxIDIzLDExVjE0QTEsMSAwIDAsMSAyMiwxNUgyMVYxNS41QTAuNSwwLjUgMCAwLDEgMjAuNSwxNkgxOS41QTAuNSwwLjUgMCAwLDEgMTksMTUuNVYxNUg1VjE1LjVNMywxMlYxM0g1VjEySDNNNiwxMlYxM0g4VjEySDZNMjAuNSwxMS41QTEsMSAwIDAsMCAxOS41LDEyLjVBMSwxIDAgMCwwIDIwLjUsMTMuNUExLDEgMCAwLDAgMjEuNSwxMi41QTEsMSAwIDAsMCAyMC41LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2V0dGluZ3NIZWxwZXIgPSBcIk03LDIySDlWMjRIN1YyMk0xMSwyMkgxM1YyNEgxMVYyMk0xNSwyMkgxN1YyNEgxNVYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFrZXIgPSBcIk03IDE2QzcgMTYuNTUgNi41NSAxNyA2IDE3UzUgMTYuNTUgNSAxNkM1IDE1LjQ1IDUuNDUgMTUgNiAxNVM3IDE1LjQ1IDcgMTZNOSAxNkM4LjQ1IDE2IDggMTYuNDUgOCAxN1M4LjQ1IDE4IDkgMTggMTAgMTcuNTUgMTAgMTcgOS41NSAxNiA5IDE2TTQgMThDMy40NSAxOCAzIDE4LjQ1IDMgMTlTMy40NSAyMCA0IDIwIDUgMTkuNTUgNSAxOSA0LjU1IDE4IDQgMThNNyAxOUM2LjQ1IDE5IDYgMTkuNDUgNiAyMFM2LjQ1IDIxIDcgMjEgOCAyMC41NSA4IDIwIDcuNTUgMTkgNyAxOU0xNS4zMyAyLjcyTDkuOCA5LjY1TDEzLjM0IDEzLjE5TDIwLjI4IDcuNjdDMjEuMTggNi45MSAyMS4yNSA1LjU0IDIwLjQxIDQuN0wxOC4zIDIuNTlDMTcuNDYgMS43NSAxNi4wOSAxLjgyIDE1LjMzIDIuNzJNOC4zOSAxMi41TDEwLjUgMTQuNkMxMC45IDE1IDExLjU0IDE1IDExLjkzIDE0LjZMMTIuNjMgMTMuOUw5LjEgMTAuMzZMOC4zOSAxMS4wN0M4IDExLjQ2IDggMTIuMDkgOC4zOSAxMi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYWtlck91dGxpbmUgPSBcIk0xNi44OCA0TDE2Ljg4IDRMMTkuMDMgNi4xTDEzLjUgMTAuNUwxMi41IDkuNUwxNi44NyA0TDE2Ljg4IDRNMTYuODggMkMxNi4zIDIgMTUuNzMgMi4yNCAxNS4zMyAyLjcyTDkuOCA5LjY1TDEzLjM0IDEzLjE5TDIwLjI4IDcuNjdDMjEuMTggNi45MSAyMS4yNSA1LjU0IDIwLjQxIDQuN0wxOC4zIDIuNTlDMTcuOSAyLjE5IDE3LjM5IDIgMTYuODggMk05LjEgMTAuMzZMOC4zOSAxMS4wN0M4IDExLjQ2IDggMTIuMDkgOC4zOSAxMi41TDEwLjUgMTQuNkMxMC43MSAxNC44IDEwLjk2IDE0Ljg5IDExLjIyIDE0Ljg5UzExLjczIDE0LjggMTEuOTMgMTQuNkwxMi42MyAxMy45TDkuMSAxMC4zNk02IDE1QzUuNDUgMTUgNSAxNS40NSA1IDE2QzUgMTYuNTUgNS40NSAxNyA2IDE3QzYuNTUgMTcgNyAxNi41NSA3IDE2QzcgMTUuNDUgNi41NSAxNSA2IDE1TTkgMTZDOC40NSAxNiA4IDE2LjQ1IDggMTdTOC40NSAxOCA5IDE4QzkuNTUgMTggMTAgMTcuNTUgMTAgMTdTOS41NSAxNiA5IDE2TTQgMThDMy40NSAxOCAzIDE4LjQ1IDMgMTlTMy40NSAyMCA0IDIwQzQuNTUgMjAgNSAxOS41NSA1IDE5UzQuNTUgMTggNCAxOE03IDE5QzYuNDUgMTkgNiAxOS40NSA2IDIwUzYuNDUgMjEgNyAyMUM3LjU1IDIxIDggMjAuNTUgOCAyMFM3LjU1IDE5IDcgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGUgPSBcIk0xMSwxMy41VjIxLjVIM1YxMy41SDExTTEyLDJMMTcuNSwxMUg2LjVMMTIsMk0xNy41LDEzQzIwLDEzIDIyLDE1IDIyLDE3LjVDMjIsMjAgMjAsMjIgMTcuNSwyMkMxNSwyMiAxMywyMCAxMywxNy41QzEzLDE1IDE1LDEzIDE3LjUsMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGVDaXJjbGVQbHVzID0gXCJNMTEsMTlBNiw2IDAgMCwwIDE3LDEzSDE5QTgsOCAwIDAsMSAxMSwyMUE4LDggMCAwLDEgMywxM0E4LDggMCAwLDEgMTEsNVY3QTYsNiAwIDAsMCA1LDEzQTYsNiAwIDAsMCAxMSwxOU0xOSw1SDIyVjdIMTlWMTBIMTdWN0gxNFY1SDE3VjJIMTlWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFwZU91dGxpbmUgPSBcIk0xMSwxMy41VjIxLjVIM1YxMy41SDExTTksMTUuNUg1VjE5LjVIOVYxNS41TTEyLDJMMTcuNSwxMUg2LjVMMTIsMk0xMiw1Ljg2TDEwLjA4LDlIMTMuOTJMMTIsNS44Nk0xNy41LDEzQzIwLDEzIDIyLDE1IDIyLDE3LjVDMjIsMjAgMjAsMjIgMTcuNSwyMkMxNSwyMiAxMywyMCAxMywxNy41QzEzLDE1IDE1LDEzIDE3LjUsMTNNMTcuNSwxNUEyLjUsMi41IDAgMCwwIDE1LDE3LjVBMi41LDIuNSAwIDAsMCAxNy41LDIwQTIuNSwyLjUgMCAwLDAgMjAsMTcuNUEyLjUsMi41IDAgMCwwIDE3LjUsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGVPdmFsUGx1cyA9IFwiTTE5IDVIMjJWN0gxOVYxMEgxN1Y3SDE0VjVIMTdWMkgxOVY1TTExIDRMMTIgNC4wOVY2LjE0QzExLjY4IDYuMDUgMTEuMzQgNiAxMSA2QzguMjQgNiA2IDkuMTMgNiAxM0M2IDE2Ljg3IDguMjQgMjAgMTEgMjBDMTMuNzYgMjAgMTYgMTYuODcgMTYgMTNMMTUuOTUgMTJIMTcuOTZMMTggMTNDMTggMTcuOTcgMTQuODcgMjIgMTEgMjJDNy4xMyAyMiA0IDE3Ljk3IDQgMTNDNCA4LjAzIDcuMTMgNCAxMSA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXBlUGx1cyA9IFwiTTIsMkgxMVYxMUgyVjJNMTcuNSwyQzIwLDIgMjIsNCAyMiw2LjVDMjIsOSAyMCwxMSAxNy41LDExQzE1LDExIDEzLDkgMTMsNi41QzEzLDQgMTUsMiAxNy41LDJNNi41LDE0TDExLDIySDJMNi41LDE0TTE5LDE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3SDE3VjE0SDE5VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXBlUG9seWdvblBsdXMgPSBcIk0xNywxNS43VjEzSDE5VjE3TDEwLDIxTDMsMTRMNyw1SDExVjdIOC4zTDUuNCwxMy42TDEwLjQsMTguNkwxNywxNS43TTIyLDVWN0gxOVYxMEgxN1Y3SDE0VjVIMTdWMkgxOVY1SDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXBlUmVjdGFuZ2xlUGx1cyA9IFwiTTE5LDZIMjJWOEgxOVYxMUgxN1Y4SDE0VjZIMTdWM0gxOVY2TTE3LDE3VjE0SDE5VjE5SDNWNkgxMVY4SDVWMTdIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcGVTcXVhcmVQbHVzID0gXCJNMTksNUgyMlY3SDE5VjEwSDE3VjdIMTRWNUgxN1YySDE5VjVNMTcsMTlWMTNIMTlWMjFIM1Y1SDExVjdINVYxOUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFwZVNxdWFyZVJvdW5kZWRQbHVzID0gXCJNMTcgMkgxOVY1SDIyVjdIMTlWMTBIMTdWN0gxNFY1SDE3VjJNNyA1SDExVjdIN0M1LjkgNyA1IDcuOSA1IDlWMTdDNSAxOC4xMSA1LjkgMTkgNyAxOUgxNUMxNi4xMSAxOSAxNyAxOC4xMSAxNyAxN1YxM0gxOVYxN0MxOSAxOS4yMSAxNy4yMSAyMSAxNSAyMUg3QzQuNzkgMjEgMyAxOS4yMSAzIDE3VjlDMyA2Ljc5IDQuNzkgNSA3IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcmUgPSBcIk0yMSwxMkwxNCw1VjlDNywxMCA0LDE1IDMsMjBDNS41LDE2LjUgOSwxNC45IDE0LDE0LjlWMTlMMjEsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcmVBbGwgPSBcIk0xMSA5VjVMMTggMTJMMTEgMTlWMTQuOUM2IDE0LjkgMi41IDE2LjUgMCAyMEMxIDE1IDQgMTAgMTEgOU0xNyA4VjVMMjQgMTJMMTcgMTlWMTZMMjEgMTJMMTcgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFyZUFsbE91dGxpbmUgPSBcIk0xMyA5LjhWMTAuN0wxMS4zIDEwLjlDOC43IDExLjMgNi44IDEyLjMgNS40IDEzLjZDNy4xIDEzLjEgOC45IDEyLjggMTEgMTIuOEgxM1YxNC4xTDE1LjIgMTJMMTMgOS44TTExIDVMMTggMTJMMTEgMTlWMTQuOUM2IDE0LjkgMi41IDE2LjUgMCAyMEMxIDE1IDQgMTAgMTEgOU0xNyA4VjVMMjQgMTJMMTcgMTlWMTZMMjEgMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFyZUNpcmNsZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlM2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMk0xNCAxNlYxM0MxMC4zOSAxMyA3LjgxIDE0LjQzIDYgMTdDNi43MiAxMy4zMyA4Ljk0IDkuNzMgMTQgOVY2TDE5IDExTDE0IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlT2ZmID0gXCJNMjAuOCAyMi43TDE1LjYgMTcuNUwxNCAxOVYxNS45TDEzLjEgMTQuOUM4LjYgMTUuMiA1LjQgMTYuOCAzIDIwLjFDMy41OCAxNi4zMSA1LjcyIDEyLjk0IDguOSAxMC44TDEuMSAzTDIuNCAxLjdMMjIuMSAyMS41TTE4LjEgMTQuOUwyMSAxMkwxNCA1VjlMMTIuNSA5LjNcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFyZU9mZk91dGxpbmUgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w4LjkgMTAuOEM1LjQgMTIuOSAzLjcgMTYuNCAzIDIwQzUuMyAxNi43IDguNiAxNS4xIDEzIDE0LjlMMTQgMTUuOVYxOUwxNS42IDE3LjRMMjAuOCAyMi43TTguMyAxMy44QzguOTQgMTMuMjIgOS42NSAxMi43MSAxMC40IDEyLjNMMTEuMyAxMy4xTTE0LjIgMTFMMTIuNSA5LjNMMTQgOVY1TDIxIDEyTDE4LjEgMTQuOUwxNi43IDEzLjVMMTguMiAxMkwxNiA5LjhWMTAuN1wiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlT3V0bGluZSA9IFwiTTE0LDVWOUM3LDEwIDQsMTUgMywyMEM1LjUsMTYuNSA5LDE0LjkgMTQsMTQuOVYxOUwyMSwxMkwxNCw1TTE2LDkuODNMMTguMTcsMTJMMTYsMTQuMTdWMTIuOUgxNEMxMS45MywxMi45IDEwLjA3LDEzLjI4IDguMzQsMTMuODVDOS43NCwxMi40NiAxMS41NCwxMS4zNyAxNC4yOCwxMUwxNiwxMC43M1Y5LjgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlVmFyaWFudCA9IFwiTTE4LDE2LjA4QzE3LjI0LDE2LjA4IDE2LjU2LDE2LjM4IDE2LjA0LDE2Ljg1TDguOTEsMTIuN0M4Ljk2LDEyLjQ3IDksMTIuMjQgOSwxMkM5LDExLjc2IDguOTYsMTEuNTMgOC45MSwxMS4zTDE1Ljk2LDcuMTlDMTYuNSw3LjY5IDE3LjIxLDggMTgsOEEzLDMgMCAwLDAgMjEsNUEzLDMgMCAwLDAgMTgsMkEzLDMgMCAwLDAgMTUsNUMxNSw1LjI0IDE1LjA0LDUuNDcgMTUuMDksNS43TDguMDQsOS44MUM3LjUsOS4zMSA2Ljc5LDkgNiw5QTMsMyAwIDAsMCAzLDEyQTMsMyAwIDAsMCA2LDE1QzYuNzksMTUgNy41LDE0LjY5IDguMDQsMTQuMTlMMTUuMTYsMTguMzRDMTUuMTEsMTguNTUgMTUuMDgsMTguNzcgMTUuMDgsMTlDMTUuMDgsMjAuNjEgMTYuMzksMjEuOTEgMTgsMjEuOTFDMTkuNjEsMjEuOTEgMjAuOTIsMjAuNjEgMjAuOTIsMTlBMi45MiwyLjkyIDAgMCwwIDE4LDE2LjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoYXJlVmFyaWFudE91dGxpbmUgPSBcIk0xOCAxNi4wOEMxNy4yNCAxNi4wOCAxNi41NiAxNi4zOCAxNi4wNCAxNi44NUw4LjkxIDEyLjdDOC45NiAxMi40NyA5IDEyLjI0IDkgMTJTOC45NiAxMS41MyA4LjkxIDExLjNMMTUuOTYgNy4xOUMxNi41IDcuNjkgMTcuMjEgOCAxOCA4QzE5LjY2IDggMjEgNi42NiAyMSA1UzE5LjY2IDIgMTggMiAxNSAzLjM0IDE1IDVDMTUgNS4yNCAxNS4wNCA1LjQ3IDE1LjA5IDUuN0w4LjA0IDkuODFDNy41IDkuMzEgNi43OSA5IDYgOUM0LjM0IDkgMyAxMC4zNCAzIDEyUzQuMzQgMTUgNiAxNUM2Ljc5IDE1IDcuNSAxNC42OSA4LjA0IDE0LjE5TDE1LjE2IDE4LjM0QzE1LjExIDE4LjU1IDE1LjA4IDE4Ljc3IDE1LjA4IDE5QzE1LjA4IDIwLjYxIDE2LjM5IDIxLjkxIDE4IDIxLjkxUzIwLjkyIDIwLjYxIDIwLjkyIDE5QzIwLjkyIDE3LjM5IDE5LjYxIDE2LjA4IDE4IDE2LjA4TTE4IDRDMTguNTUgNCAxOSA0LjQ1IDE5IDVTMTguNTUgNiAxOCA2IDE3IDUuNTUgMTcgNSAxNy40NSA0IDE4IDRNNiAxM0M1LjQ1IDEzIDUgMTIuNTUgNSAxMlM1LjQ1IDExIDYgMTEgNyAxMS40NSA3IDEyIDYuNTUgMTMgNiAxM00xOCAyMEMxNy40NSAyMCAxNyAxOS41NSAxNyAxOVMxNy40NSAxOCAxOCAxOCAxOSAxOC40NSAxOSAxOSAxOC41NSAyMCAxOCAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGFya0ZpbiA9IFwiTTIyIDE2VjE4SDIwQzE4LjYgMTggMTcuMiAxNy42IDE2IDE3QzEzLjUgMTguMyAxMC41IDE4LjMgOCAxN0M2LjggMTcuNiA1LjQgMTggNCAxOEgyVjE2SDRDNS40IDE2IDYuOCAxNS41IDggMTQuN0MxMC40IDE2LjQgMTMuNiAxNi40IDE2IDE0LjdDMTcuMiAxNS41IDE4LjYgMTYgMjAgMTZIMjJNNS4yOCAxMy43OUM1LjgyIDEzLjYzIDYuMzcgMTMuMzggNi44OSAxMy4wNEw4LjAzIDEyLjI3TDkuMTYgMTMuMDdDMTAgMTMuNjYgMTEgMTQgMTIgMTRDMTMgMTQgMTQgMTMuNjYgMTQuODQgMTMuMDdMMTUuOTcgMTIuMjdMMTcuMTEgMTMuMDRDMTcuOTMgMTMuNTkgMTguODMgMTMuOSAxOS42NyAxMy45N0MxOC4yNCA3LjQgMTIuMzcgMiA2IDJDNS42NSAyIDUuMzMgMi4xOCA1LjE1IDIuNDdDNC45NyAyLjc3IDQuOTUgMy4xNCA1LjExIDMuNDVDNy4yOCA3Ljc5IDYuNjEgMTEuMjkgNS4yOCAxMy43OU0xNiAxOC43QzEzLjYgMjAuNCAxMC40IDIwLjQgOCAxOC43QzYuOCAxOS41IDUuNCAyMCA0IDIwSDJWMjJINEM1LjQgMjIgNi44IDIxLjYgOCAyMUMxMC41IDIyLjMgMTMuNSAyMi4zIDE2IDIxQzE3LjIgMjEuNiAxOC42IDIyIDIwIDIySDIyVjIwSDIwQzE4LjYgMjAgMTcuMiAxOS41IDE2IDE4LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hhcmtGaW5PdXRsaW5lID0gXCJNMjIgMTZWMThIMjBDMTguNiAxOCAxNy4yIDE3LjYgMTYgMTdDMTMuNSAxOC4zIDEwLjUgMTguMyA4IDE3QzYuOCAxNy42IDUuNCAxOCA0IDE4SDJWMTZINEM1LjQgMTYgNi44IDE1LjUgOCAxNC43QzEwLjQgMTYuNCAxMy42IDE2LjQgMTYgMTQuN0MxNy4yIDE1LjUgMTguNiAxNiAyMCAxNkgyMk01LjI4IDEzLjc5QzUuODIgMTMuNjMgNi4zNyAxMy4zOCA2Ljg5IDEzLjA0TDggMTIuMjhDOC42OSAxMCA4Ljc4IDcuMjcgNy41OSA0LjE0QzExLjk1IDQuODkgMTUuODkgOC42NSAxNy4zNyAxMy4xOUMxOC4xMiAxMy42NCAxOC45MSAxMy45MSAxOS42NiAxMy45N0MxOC4yNCA3LjQgMTIuMzcgMiA2IDJDNS42NSAyIDUuMzMgMi4xOCA1LjE1IDIuNDdDNC45NyAyLjc3IDQuOTUgMy4xNCA1LjExIDMuNDVDNy4yOCA3Ljc5IDYuNjEgMTEuMjkgNS4yOCAxMy43OU0xNiAxOC43QzEzLjYgMjAuNCAxMC40IDIwLjQgOCAxOC43QzYuOCAxOS41IDUuNCAyMCA0IDIwSDJWMjJINEM1LjQgMjIgNi44IDIxLjYgOCAyMUMxMC41IDIyLjMgMTMuNSAyMi4zIDE2IDIxQzE3LjIgMjEuNiAxOC42IDIyIDIwIDIySDIyVjIwSDIwQzE4LjYgMjAgMTcuMiAxOS41IDE2IDE4LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hlZXAgPSBcIk0yMCw4LjVBMi41LDIuNSAwIDAsMSAxNy41LDExQzE2LjQyLDExIDE1LjUsMTAuMzEgMTUuMTYsOS4zNkMxNC43Miw5Ljc1IDE0LjE0LDEwIDEzLjUsMTBDMTIuOTQsMTAgMTIuNDIsOS44MSAxMiw5LjVDMTEuNTgsOS44MSAxMS4wNywxMCAxMC41LDEwQzkuODYsMTAgOS4yOCw5Ljc1IDguODQsOS4zNkM4LjUsMTAuMzEgNy41OCwxMSA2LjUsMTFBMi41LDIuNSAwIDAsMSA0LDguNUM0LDcuMjYgNC45MSw2LjIzIDYuMSw2LjA0QzYuMDQsNS44NyA2LDUuNjkgNiw1LjVBMS41LDEuNSAwIDAsMSA3LjUsNEM3LjcsNCA3Ljg5LDQuMDQgOC4wNiw0LjExQzguMjMsMy40NyA4LjgxLDMgOS41LDNDOS43NSwzIDEwLDMuMDcgMTAuMTgsMy4xN0MxMC41LDIuNSAxMS4xOSwyIDEyLDJDMTIuODEsMiAxMy41LDIuNSAxMy44MiwzLjE3QzE0LDMuMDcgMTQuMjUsMyAxNC41LDNDMTUuMTksMyAxNS43NywzLjQ3IDE1Ljk0LDQuMTFDMTYuMTEsNC4wNCAxNi4zLDQgMTYuNSw0QTEuNSwxLjUgMCAwLDEgMTgsNS41QzE4LDUuNjkgMTcuOTYsNS44NyAxNy45LDYuMDRDMTkuMDksNi4yMyAyMCw3LjI2IDIwLDguNU0xMCwxMkExLDEgMCAwLDAgOSwxM0ExLDEgMCAwLDAgMTAsMTRBMSwxIDAgMCwwIDExLDEzQTEsMSAwIDAsMCAxMCwxMk0xNCwxMkExLDEgMCAwLDAgMTMsMTNBMSwxIDAgMCwwIDE0LDE0QTEsMSAwIDAsMCAxNSwxM0ExLDEgMCAwLDAgMTQsMTJNMjAuMjMsMTAuNjZDMTkuNTksMTEuNDcgMTguNjEsMTIgMTcuNSwxMkMxNy4wNSwxMiAxNi42MiwxMS45IDE2LjIxLDExLjczQzE2LjIsMTQuMjggMTUuODMsMTcuMzYgMTQuNDUsMTguOTVDMTMuOTMsMTkuNTQgMTMuMywxOS44NiAxMi41LDE5Ljk2VjE4SDExLjVWMTkuOTZDMTAuNywxOS44NiAxMC4wNywxOS41NSA5LjU1LDE4Ljk1QzguMTYsMTcuMzUgNy43OSwxNC4yOSA3Ljc4LDExLjc0QzcuMzgsMTEuOSA2Ljk1LDEyIDYuNSwxMkM1LjM5LDEyIDQuNDEsMTEuNDcgMy43NywxMC42NkMyLjg4LDExLjU1IDIsMTIgMiwxMkMyLDEyIDMsMTQgNSwxNEM1LjM2LDE0IDUuNjQsMTMuOTYgNS44OCwxMy45MUM2LjIyLDE3LjczIDcuNTgsMjIgMTIsMjJDMTYuNDIsMjIgMTcuNzgsMTcuNzMgMTguMTIsMTMuOTFDMTguMzYsMTMuOTYgMTguNjQsMTQgMTksMTRDMjEsMTQgMjIsMTIgMjIsMTJDMjIsMTIgMjEuMTIsMTEuNTUgMjAuMjMsMTAuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkID0gXCJNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRBY2NvdW50ID0gXCJNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMU0xMiw1QTMsMyAwIDAsMSAxNSw4QTMsMyAwIDAsMSAxMiwxMUEzLDMgMCAwLDEgOSw4QTMsMyAwIDAsMSAxMiw1TTE3LjEzLDE3QzE1LjkyLDE4Ljg1IDE0LjExLDIwLjI0IDEyLDIwLjkyQzkuODksMjAuMjQgOC4wOCwxOC44NSA2Ljg3LDE3QzYuNTMsMTYuNSA2LjI0LDE2IDYsMTUuNDdDNiwxMy44MiA4LjcxLDEyLjQ3IDEyLDEyLjQ3QzE1LjI5LDEyLjQ3IDE4LDEzLjc5IDE4LDE1LjQ3QzE3Ljc2LDE2IDE3LjQ3LDE2LjUgMTcuMTMsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkQWNjb3VudE91dGxpbmUgPSBcIk0xMiwxTDMsNVYxMUMzLDE2LjU1IDYuODQsMjEuNzQgMTIsMjNDMTcuMTYsMjEuNzQgMjEsMTYuNTUgMjEsMTFWNUwxMiwxTTEyLDMuMThMMTksNi4zVjExLjIyQzE5LDEyLjkyIDE4LjUsMTQuNjUgMTcuNjUsMTYuMTdDMTYsMTQuOTQgMTMuMjYsMTQuNSAxMiwxNC41QzEwLjc0LDE0LjUgOCwxNC45NCA2LjM1LDE2LjE3QzUuNSwxNC42NSA1LDEyLjkyIDUsMTEuMjJWNi4zTDEyLDMuMThNMTIsNkEzLjUsMy41IDAgMCwwIDguNSw5LjVBMy41LDMuNSAwIDAsMCAxMiwxM0EzLjUsMy41IDAgMCwwIDE1LjUsOS41QTMuNSwzLjUgMCAwLDAgMTIsNk0xMiw4QTEuNSwxLjUgMCAwLDEgMTMuNSw5LjVBMS41LDEuNSAwIDAsMSAxMiwxMUExLjUsMS41IDAgMCwxIDEwLjUsOS41QTEuNSwxLjUgMCAwLDEgMTIsOE0xMiwxNi41QzEzLjU3LDE2LjUgMTUuNjQsMTcuMTEgMTYuNTMsMTcuODRDMTUuMjksMTkuMzggMTMuNywyMC41NSAxMiwyMUMxMC4zLDIwLjU1IDguNzEsMTkuMzggNy40NywxNy44NEM4LjM3LDE3LjExIDEwLjQzLDE2LjUgMTIsMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRBY2NvdW50VmFyaWFudCA9IFwiTTE3IDExQzE3LjMgMTEgMTcuNyAxMSAxOCAxMS4xVjYuM0wxMC41IDNMMyA2LjNWMTEuMkMzIDE1LjcgNi4yIDIwIDEwLjUgMjFDMTEuMSAyMC45IDExLjYgMjAuNyAxMi4xIDIwLjVDMTEuNCAxOS41IDExIDE4LjMgMTEgMTdDMTEgMTMuNyAxMy43IDExIDE3IDExTTE3IDEzQzE0LjggMTMgMTMgMTQuOCAxMyAxN1MxNC44IDIxIDE3IDIxIDIxIDE5LjIgMjEgMTcgMTkuMiAxMyAxNyAxM00xNyAxNC40QzE3LjYgMTQuNCAxOC4xIDE0LjkgMTguMSAxNS41QzE4LjEgMTYuMSAxNy42IDE2LjYgMTcgMTYuNlMxNS45IDE2LjEgMTUuOSAxNS41IDE2LjQgMTQuNCAxNyAxNC40TTE3IDE5LjhDMTYuMSAxOS44IDE1LjMgMTkuMyAxNC44IDE4LjZDMTQuOSAxNy45IDE2LjMgMTcuNSAxNyAxNy41UzE5LjIgMTcuOSAxOS4yIDE4LjZDMTguNyAxOS4zIDE3LjkgMTkuOCAxNyAxOS44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEFjY291bnRWYXJpYW50T3V0bGluZSA9IFwiTTE3IDE0LjRDMTcuNiAxNC40IDE4LjEgMTQuOSAxOC4xIDE1LjVTMTcuNiAxNi42IDE3IDE2LjYgMTUuOSAxNi4xIDE1LjkgMTUuNSAxNi40IDE0LjQgMTcgMTQuNE0xNyAxNy41QzE2LjMgMTcuNSAxNC44IDE3LjkgMTQuOCAxOC42QzE1LjMgMTkuMyAxNi4xIDE5LjggMTcgMTkuOFMxOC43IDE5LjMgMTkuMiAxOC42QzE5LjIgMTcuOSAxNy43IDE3LjUgMTcgMTcuNU0xOCAxMS4xVjYuM0wxMC41IDNMMyA2LjNWMTEuMkMzIDE1LjcgNi4yIDIwIDEwLjUgMjFDMTEuMSAyMC45IDExLjYgMjAuNyAxMi4xIDIwLjVDMTMuMiAyMiAxNSAyMyAxNyAyM0MyMC4zIDIzIDIzIDIwLjMgMjMgMTdDMjMgMTQgMjAuOCAxMS42IDE4IDExLjFNMTEgMTdDMTEgMTcuNiAxMS4xIDE4LjEgMTEuMiAxOC42QzExIDE4LjcgMTAuNyAxOC44IDEwLjUgMTguOUM3LjMgMTcuOSA1IDE0LjcgNSAxMS4yVjcuNkwxMC41IDUuMkwxNiA3LjZWMTEuMUMxMy4yIDExLjYgMTEgMTQgMTEgMTdNMTcgMjFDMTQuOCAyMSAxMyAxOS4yIDEzIDE3UzE0LjggMTMgMTcgMTMgMjEgMTQuOCAyMSAxNyAxOS4yIDIxIDE3IDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEFpcnBsYW5lID0gXCJNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMU0xMiw1LjY4QzEyLjUsNS42OCAxMi45NSw2LjExIDEyLjk1LDYuNjNWMTAuMTFMMTgsMTMuMjZWMTQuNTNMMTIuOTUsMTIuOTVWMTYuNDJMMTQuMjEsMTcuMzdWMTguMzJMMTIsMTcuNjhMOS43OSwxOC4zMlYxNy4zN0wxMS4wNSwxNi40MlYxMi45NUw2LDE0LjUzVjEzLjI2TDExLjA1LDEwLjExVjYuNjNDMTEuMDUsNi4xMSAxMS41LDUuNjggMTIsNS42OFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRBaXJwbGFuZU91dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFNMTIsNS42OEMxMi41LDUuNjggMTIuOTUsNi4xMSAxMi45NSw2LjYzVjEwLjExTDE4LDEzLjI2VjE0LjUzTDEyLjk1LDEyLjk1VjE2LjQyTDE0LjIxLDE3LjM3VjE4LjMyTDEyLDE3LjY4TDkuNzksMTguMzJWMTcuMzdMMTEuMDUsMTYuNDJWMTIuOTVMNiwxNC41M1YxMy4yNkwxMS4wNSwxMC4xMVY2LjYzQzExLjA1LDYuMTEgMTEuNSw1LjY4IDEyLDUuNjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkQWxlcnQgPSBcIk0xMiwxTDMsNVYxMUMzLDE2LjU1IDYuODQsMjEuNzQgMTIsMjNDMTcuMTYsMjEuNzQgMjEsMTYuNTUgMjEsMTFWNU0xMSw3SDEzVjEzSDExTTExLDE1SDEzVjE3SDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkQWxlcnRPdXRsaW5lID0gXCJNMjEsMTFDMjEsMTYuNTUgMTcuMTYsMjEuNzQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFNMTIsMjFDMTUuNzUsMjAgMTksMTUuNTQgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTTExLDdIMTNWMTNIMTFWN00xMSwxNUgxM1YxN0gxMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRCdWcgPSBcIk0xMSAxM0gxM1YxNEgxMVYxM00yMSA1VjExQzIxIDE2LjUgMTcuMiAyMS43IDEyIDIzQzYuOCAyMS43IDMgMTYuNSAzIDExVjVMMTIgMUwyMSA1TTE3IDEwSDE0LjhDMTQuNiA5LjQgMTQuMiA4LjkgMTMuNyA4LjVMMTQuOSA3LjNMMTQuMiA2LjZMMTIuOCA4SDEyQzExLjggOCAxMS41IDggMTEuMyA4LjFMOS45IDYuNkw5LjEgNy40TDEwLjMgOC42QzkuOCA4LjkgOS40IDkuNCA5LjIgMTBIN1YxMUg5VjEySDdWMTNIOVYxNEg3VjE1SDkuMkM5LjYgMTYuMiAxMC43IDE3IDEyIDE3UzE0LjQgMTYuMiAxNC44IDE1SDE3VjE0SDE1VjEzSDE3VjEySDE1VjExSDE3VjEwTTExIDEySDEzVjExSDExVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEJ1Z091dGxpbmUgPSBcIk05LjkgNi42TDkuMSA3LjRMMTAuMyA4LjZDOS44IDguOSA5LjQgOS40IDkuMiAxMEg3VjExSDlWMTJIN1YxM0g5VjE0SDdWMTVIOS4yQzkuNiAxNi4yIDEwLjcgMTcgMTIgMTdTMTQuNCAxNi4yIDE0LjggMTVIMTdWMTRIMTVWMTNIMTdWMTJIMTVWMTFIMTdWMTBIMTQuOEMxNC42IDkuNCAxNC4yIDguOSAxMy43IDguNUwxNC45IDcuM0wxNC4yIDYuNkwxMi44IDhIMTJDMTEuOCA4IDExLjUgOCAxMS4zIDguMUw5LjkgNi42TTExIDExSDEzVjEySDExVjExTTExIDEzSDEzVjE0SDExVjEzTTIxIDExQzIxIDE2LjUgMTcuMiAyMS43IDEyIDIzQzYuOCAyMS43IDMgMTYuNSAzIDExVjVMMTIgMUwyMSA1VjExTTEyIDIxQzE1LjggMjAgMTkgMTUuNSAxOSAxMS4yVjYuM0wxMiAzLjJMNSA2LjNWMTEuMkM1IDE1LjUgOC4yIDIwIDEyIDIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZENhciA9IFwiTTE0LjQyIDcuNUwxNiAxMUg4TDkuNDIgNy41SDE0LjQyTTkgMTJDOC40NSAxMiA4IDEyLjQ1IDggMTNTOC40NSAxNCA5IDE0IDEwIDEzLjU1IDEwIDEzIDkuNTUgMTIgOSAxMk0xNSAxMkMxNC40NSAxMiAxNCAxMi40NSAxNCAxM1MxNC40NSAxNCAxNSAxNCAxNiAxMy41NSAxNiAxMyAxNS41NSAxMiAxNSAxMk0yMSA1VjExQzIxIDE2LjU1IDE3LjE2IDIxLjc0IDEyIDIzQzYuODQgMjEuNzQgMyAxNi41NSAzIDExVjVMMTIgMUwyMSA1TTE4IDEyTDE1Ljg0IDdDMTUuNjQgNi40MiAxNS4wOCA2IDE0LjQyIDZIOS40MkM4Ljc2IDYgOC4yIDYuNDIgOCA3TDYgMTJWMTZDNiAxNi41NSA2LjQ1IDE3IDcgMTdIOEM4LjU1IDE3IDkgMTYuNTUgOSAxNlYxNUgxNVYxNkMxNSAxNi41NSAxNS40NSAxNyAxNiAxN0gxN0MxNy41NSAxNyAxOCAxNi41NSAxOCAxNlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRDaGVjayA9IFwiTTEwLDE3TDYsMTNMNy40MSwxMS41OUwxMCwxNC4xN0wxNi41OSw3LjU4TDE4LDlNMTIsMUwzLDVWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzE3LjE2LDIxLjc0IDIxLDE2LjU1IDIxLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRDaGVja091dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFNMTAsMTdMNiwxM0w3LjQxLDExLjU5TDEwLDE0LjE3TDE2LjU5LDcuNThMMTgsOVwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZENyb3NzID0gXCJNMTIsMUwzLDVWMTFDMywxNi41IDYuOCwyMS43IDEyLDIzQzE3LjIsMjEuNyAyMSwxNi41IDIxLDExVjVMMTIsMU0xNiwxMEgxM1YxOEgxMVYxMEg4VjhIMTFWNUgxM1Y4SDE2VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZENyb3NzT3V0bGluZSA9IFwiTTIxLDExQzIxLDE2LjUgMTcuMiwyMS43IDEyLDIzQzYuOCwyMS43IDMsMTYuNSAzLDExVjVMMTIsMUwyMSw1VjExTTEyLDIxQzE1LjgsMjAgMTksMTUuNSAxOSwxMS4yVjYuM0wxMiwzLjJMNSw2LjNWMTEuMkM1LDE1LjUgOC4zLDIwIDEyLDIxTTE2LDlIMTNWNkgxMVY5SDhWMTFIMTFWMTlIMTNWMTFIMTZWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRFZGl0ID0gXCJNMjEuNyAxNC40TDIwLjcgMTUuNEwxOC42IDEzLjNMMTkuNiAxMi4zQzE5LjggMTIuMSAyMC4yIDEyLjEgMjAuNCAxMi4zTDIxLjcgMTMuNkMyMS45IDEzLjggMjEuOSAxNC4xIDIxLjcgMTQuNE0xMiAxOS45TDE4LjEgMTMuOEwyMC4yIDE1LjlMMTQuMSAyMkgxMlYxOS45TTEwIDE5LjFMMjEgOC4xVjVMMTIgMUwzIDVWMTFDMyAxNS44IDUuOSAyMC4zIDEwIDIyLjNWMTkuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRFZGl0T3V0bGluZSA9IFwiTTIxLjcgMTMuNkwyMC40IDEyLjNDMjAuMyAxMi4yIDIwLjIgMTIuMSAyMCAxMi4xQzE5LjkgMTIuMSAxOS43IDEyLjIgMTkuNiAxMi4zTDE4LjYgMTMuM0wyMC42IDE1LjNMMjEuNiAxNC4zQzIxLjkgMTQuMSAyMS45IDEzLjggMjEuNyAxMy42TTEyIDE5LjlWMjJIMTQuMUwyMC4yIDE1LjlMMTguMiAxMy44TDEyIDE5LjlNMTAgMjIuM0M1LjkgMjAuMyAzIDE1LjggMyAxMVY1TDEyIDFMMjEgNVY4LjFMMTkgMTAuMVY2LjNMMTIgMy4yTDUgNi4zVjExLjJDNSAxNC43IDcuMiAxOC4zIDEwIDIwLjFWMjIuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRIYWxmID0gXCJNMTIgMUwzIDVWMTFDMyAxNi41IDYuOCAyMS43IDEyIDIzVjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkSGFsZkZ1bGwgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOFYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRIb21lID0gXCJNMTEsMTNIMTNWMTZIMTZWMTFIMThMMTIsNkw2LDExSDhWMTZIMTFWMTNNMTIsMUwyMSw1VjExQzIxLDE2LjU1IDE3LjE2LDIxLjc0IDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRIb21lT3V0bGluZSA9IFwiTTIxLDExQzIxLDE2LjU1IDE3LjE2LDIxLjc0IDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMUwyMSw1VjExTTEyLDIxQzE1Ljc1LDIwIDE5LDE1LjU0IDE5LDExLjIyVjYuM0wxMiwzLjE4TDUsNi4zVjExLjIyQzUsMTUuNTQgOC4yNSwyMCAxMiwyMU0xMSwxNEgxM1YxN0gxNlYxMkgxOEwxMiw3TDYsMTJIOFYxN0gxMVYxNFwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZEtleSA9IFwiTTEyLDhBMSwxIDAgMCwxIDEzLDlBMSwxIDAgMCwxIDEyLDEwQTEsMSAwIDAsMSAxMSw5QTEsMSAwIDAsMSAxMiw4TTIxLDExQzIxLDE2LjU1IDE3LjE2LDIxLjc0IDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMUwyMSw1VjExTTEyLDZBMywzIDAgMCwwIDksOUM5LDEwLjMxIDkuODMsMTEuNDIgMTEsMTEuODNWMThIMTNWMTZIMTVWMTRIMTNWMTEuODNDMTQuMTcsMTEuNDIgMTUsMTAuMzEgMTUsOUEzLDMgMCAwLDAgMTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRLZXlPdXRsaW5lID0gXCJNMjEsMTFDMjEsMTYuNTUgMTcuMTYsMjEuNzQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFNMTIsMjFDMTUuNzUsMjAgMTksMTUuNTQgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTTEyLDZBMywzIDAgMCwxIDE1LDlDMTUsMTAuMzEgMTQuMTcsMTEuNDIgMTMsMTEuODNWMTRIMTVWMTZIMTNWMThIMTFWMTEuODNDOS44MywxMS40MiA5LDEwLjMxIDksOUEzLDMgMCAwLDEgMTIsNk0xMiw4QTEsMSAwIDAsMCAxMSw5QTEsMSAwIDAsMCAxMiwxMEExLDEgMCAwLDAgMTMsOUExLDEgMCAwLDAgMTIsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRMaW5rVmFyaWFudCA9IFwiTTEyLDFMMyw1VjExQzMsMTYuNTUgNi44NCwyMS43NCAxMiwyM0MxNy4xNiwyMS43NCAyMSwxNi41NSAyMSwxMVY1TDEyLDFNMTQuMjgsMTQuMDhMMTIuMjYsMTYuMUMxMS42NiwxNi43IDEwLjg3LDE3IDEwLjA4LDE3QzkuMjksMTcgOC41LDE2LjcgNy45LDE2LjFDNi43LDE0LjkgNi43LDEyLjk1IDcuOSwxMS43NEw5LjE1LDEwLjVMOS4xNCwxMS4wNkM5LjE0LDExLjUgOS4yMSwxMS45NSA5LjM2LDEyLjM3TDkuNDEsMTIuNUw5LjA0LDEyLjg3QzguNzYsMTMuMTUgOC42LDEzLjUzIDguNiwxMy45MkM4LjYsMTQuMzIgOC43NiwxNC42OSA5LjA0LDE0Ljk3QzkuNiwxNS41MyAxMC41NywxNS41MyAxMS4xMywxNC45N0wxMy4xNCwxMi45NkMxMy40MywxMi42NyAxMy41OCwxMi4zIDEzLjU4LDExLjkxQzEzLjU4LDExLjUgMTMuNDMsMTEuMTQgMTMuMTUsMTAuODZDMTMsMTAuNzEgMTIuOSwxMC41IDEyLjksMTAuMjlDMTIuOSwxMC4wOCAxMyw5Ljg4IDEzLjE1LDkuNzNDMTMuNDUsOS40MiAxNCw5LjQzIDE0LjI4LDkuNzNDMTQuODYsMTAuMzEgMTUuMTgsMTEuMDggMTUuMTgsMTEuOUMxNS4xOCwxMi43MyAxNC44NiwxMy41IDE0LjI4LDE0LjA4TTE3LjEsMTEuMjZMMTUuODUsMTIuNUwxNS44NiwxMS45NEMxNS44NiwxMS41IDE1Ljc5LDExLjA2IDE1LjY0LDEwLjY0TDE1LjYsMTAuNUwxNS45NiwxMC4xM0MxNi4yNSw5Ljg1IDE2LjQsOS41IDE2LjQsOS4wOEMxNi40LDguNjkgMTYuMjUsOC4zMiAxNS45Nyw4LjA0QzE1LjQsNy40NyAxNC40Myw3LjQ3IDEzLjg3LDguMDRMMTEuODYsMTAuMDVDMTEuNTgsMTAuMzMgMTEuNDIsMTAuNyAxMS40MiwxMS4xQzExLjQyLDExLjUgMTEuNTcsMTEuODYgMTEuODYsMTIuMTRDMTIsMTIuMjkgMTIuMSwxMi41IDEyLjEsMTIuNzFDMTIuMSwxMi45MyAxMiwxMy4xMyAxMS44NSwxMy4yOEMxMS43LDEzLjQ0IDExLjUsMTMuNSAxMS4yOSwxMy41QzExLjA5LDEzLjUgMTAuODgsMTMuNDMgMTAuNzIsMTMuMjhDOS41LDEyLjA4IDkuNSwxMC4xMiAxMC43Miw4LjkyTDEyLjc0LDYuOUMxMy45NSw1LjcgMTUuOSw1LjcgMTcuMSw2LjlDMTcuNjgsNy41IDE4LDguMjYgMTgsOS4wOEMxOCw5LjkgMTcuNjgsMTAuNjggMTcuMSwxMS4yNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRMaW5rVmFyaWFudE91dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFNMTQuMjgsOS43M0MxNC44NiwxMC4zMSAxNS4xOCwxMS4wOCAxNS4xOCwxMS45QzE1LjE4LDEyLjczIDE0Ljg2LDEzLjUgMTQuMjgsMTQuMDhMMTIuMjYsMTYuMUMxMS42NiwxNi43IDEwLjg3LDE3IDEwLjA4LDE3QzkuMjksMTcgOC41LDE2LjcgNy45LDE2LjFDNi43LDE0LjkgNi43LDEyLjk1IDcuOSwxMS43NEw5LjE1LDEwLjVMOS4xNCwxMS4wNkM5LjE0LDExLjUgOS4yMSwxMS45NSA5LjM2LDEyLjM2TDkuNCwxMi41TDkuMDQsMTIuODdDOC43NSwxMy4xNSA4LjYsMTMuNSA4LjYsMTMuOTJDOC42LDE0LjMxIDguNzUsMTQuNjggOS4wMywxNC45NkM5LjYsMTUuNTMgMTAuNTcsMTUuNTMgMTEuMTMsMTQuOTdMMTMuMTQsMTIuOTVDMTMuNDMsMTIuNjcgMTMuNTgsMTIuMyAxMy41OCwxMS45MUMxMy41OCwxMS41IDEzLjQzLDExLjE0IDEzLjE0LDEwLjg2QzEzLDEwLjcxIDEyLjksMTAuNSAxMi45LDEwLjI5QzEyLjksMTAuMDggMTMsOS44NyAxMy4xNCw5LjcyQzEzLjQ1LDkuNDIgMTQsOS40MiAxNC4yOCw5LjczTTE4LDkuMDhDMTgsOS45IDE3LjY4LDEwLjY4IDE3LjEsMTEuMjZMMTUuODUsMTIuNUwxNS44NiwxMS45NEMxNS44NiwxMS41IDE1Ljc5LDExLjA2IDE1LjY0LDEwLjY0TDE1LjU5LDEwLjVMMTUuOTYsMTAuMTNDMTYuMjUsOS44NSAxNi40LDkuNSAxNi40LDkuMDhDMTYuNCw4LjY5IDE2LjI1LDguMzIgMTUuOTYsOC4wNEMxNS40LDcuNDcgMTQuNDMsNy40NyAxMy44Nyw4LjAzTDExLjg2LDEwLjA1QzExLjU3LDEwLjMzIDExLjQyLDEwLjcgMTEuNDIsMTEuMUMxMS40MiwxMS41IDExLjU3LDExLjg2IDExLjg1LDEyLjE0QzEyLDEyLjI5IDEyLjEsMTIuNSAxMi4xLDEyLjcxQzEyLjEsMTIuOTMgMTIsMTMuMTMgMTEuODUsMTMuMjhDMTEuNywxMy40MyAxMS41LDEzLjUgMTEuMjksMTMuNUMxMS4wOSwxMy41IDEwLjg4LDEzLjQzIDEwLjcyLDEzLjI4QzkuNSwxMi4wNyA5LjUsMTAuMTIgMTAuNzIsOC45MkwxMi43NCw2LjlDMTMuOTUsNS43IDE1LjksNS43IDE3LjEsNi45QzE3LjY4LDcuNSAxOCw4LjI2IDE4LDkuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkTG9jayA9IFwiTTEyLDFMMyw1VjExQzMsMTYuNTUgNi44NCwyMS43NCAxMiwyM0MxNy4xNiwyMS43NCAyMSwxNi41NSAyMSwxMVY1TDEyLDFNMTIsN0MxMy40LDcgMTQuOCw4LjEgMTQuOCw5LjVWMTFDMTUuNCwxMSAxNiwxMS42IDE2LDEyLjNWMTUuOEMxNiwxNi40IDE1LjQsMTcgMTQuNywxN0g5LjJDOC42LDE3IDgsMTYuNCA4LDE1LjdWMTIuMkM4LDExLjYgOC42LDExIDkuMiwxMVY5LjVDOS4yLDguMSAxMC42LDcgMTIsN00xMiw4LjJDMTEuMiw4LjIgMTAuNSw4LjcgMTAuNSw5LjVWMTFIMTMuNVY5LjVDMTMuNSw4LjcgMTIuOCw4LjIgMTIsOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZExvY2tPdXRsaW5lID0gXCJNMjEsMTFDMjEsMTYuNTUgMTcuMTYsMjEuNzQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFNMTIsMjFDMTUuNzUsMjAgMTksMTUuNTQgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTTE0LjgsMTFWOS41QzE0LjgsOC4xIDEzLjQsNyAxMiw3QzEwLjYsNyA5LjIsOC4xIDkuMiw5LjVWMTFDOC42LDExIDgsMTEuNiA4LDEyLjJWMTUuN0M4LDE2LjQgOC42LDE3IDkuMiwxN0gxNC43QzE1LjQsMTcgMTYsMTYuNCAxNiwxNS44VjEyLjNDMTYsMTEuNiAxNS40LDExIDE0LjgsMTFNMTMuNSwxMUgxMC41VjkuNUMxMC41LDguNyAxMS4yLDguMiAxMiw4LjJDMTIuOCw4LjIgMTMuNSw4LjcgMTMuNSw5LjVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkT2ZmID0gXCJNMSw0LjI3TDIuMjgsM0wyMC41LDIxLjIyTDE5LjIzLDIyLjVMMTcsMjAuMjVDMTUuNTcsMjEuNTcgMTMuODcsMjIuNTQgMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNi4yN0wxLDQuMjdNMTIsMUwyMSw1VjExQzIxLDEzLjI4IDIwLjM1LDE1LjUgMTkuMjMsMTcuNDFMNS42NSwzLjgyTDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkT2ZmT3V0bGluZSA9IFwiTTEsNC4yN0wzLDYuMjdWMTFDMywxNi41NSA2Ljg0LDIxLjc0IDEyLDIzQzEzLjg3LDIyLjU0IDE1LjU3LDIxLjU2IDE2Ljk3LDIwLjI0TDE5LjIzLDIyLjVMMjAuNSwyMS4yMkwyLjI4LDNMMSw0LjI3TTEyLDIxQzguMjUsMjAgNSwxNS41NCA1LDExLjIyVjguMjdMMTUuNTksMTguODZDMTQuNTMsMTkuODkgMTMuMywyMC42NSAxMiwyMU0yMSw1VjExQzIxLDEzLjI4IDIwLjM1LDE1LjUgMTkuMjMsMTcuNEwxNy43NywxNS45NUMxOC41NCwxNC41IDE5LDEyLjg0IDE5LDExLjIyVjYuM0wxMiwzLjE4TDcuMTYsNS4zNEw1LjY1LDMuODJMMTIsMUwyMSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZE91dGxpbmUgPSBcIk0yMSwxMUMyMSwxNi41NSAxNy4xNiwyMS43NCAxMiwyM0M2Ljg0LDIxLjc0IDMsMTYuNTUgMywxMVY1TDEyLDFMMjEsNVYxMU0xMiwyMUMxNS43NSwyMCAxOSwxNS41NCAxOSwxMS4yMlY2LjNMMTIsMy4xOEw1LDYuM1YxMS4yMkM1LDE1LjU0IDguMjUsMjAgMTIsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkUGx1cyA9IFwiTTE5LDIwVjIyLjk3SDE3VjIwSDE0VjE4SDE3VjE1SDE5VjE4SDIyVjIwSDE5TTEyLDFMMjEsNVYxMUMyMSwxMS45IDIwLjksMTIuNzggMjAuNzEsMTMuNjVDMTkuOSwxMy4yMyAxOSwxMyAxOCwxM0E2LDYgMCAwLDAgMTIsMTlDMTIsMjAuMzYgMTIuNDUsMjEuNjIgMTMuMjIsMjIuNjJMMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFBsdXNPdXRsaW5lID0gXCJNMTksMjBWMjIuOTdIMTdWMjBIMTRWMThIMTdWMTVIMTlWMThIMjJWMjBIMTlNMjEsMTFDMjEsMTEuOSAyMC45LDEyLjc4IDIwLjcxLDEzLjY1QzIwLjEzLDEzLjM1IDE5LjUsMTMuMTUgMTguODEsMTMuMDVDMTguOTMsMTIuNDUgMTksMTEuODMgMTksMTEuMjJWNi4zTDEyLDMuMThMNSw2LjNWMTEuMjJDNSwxNS41NCA4LjI1LDIwIDEyLDIxTDEyLjMxLDIwLjkxQzEyLjUsMjEuNTMgMTIuODMsMjIuMTEgMTMuMjIsMjIuNjJMMTIsMjNDNi44NCwyMS43NCAzLDE2LjU1IDMsMTFWNUwxMiwxTDIxLDVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkUmVmcmVzaCA9IFwiTTE4IDEyQzE5IDEyIDIwIDEyLjIgMjAuOSAxMi43QzIxIDEyLjEgMjEgMTEuNiAyMSAxMVY1TDEyIDFMMyA1VjExQzMgMTYuNSA2LjggMjEuNyAxMiAyM0MxMi40IDIyLjkgMTIuNyAyMi44IDEzIDIyLjdDMTIgMjEuNSAxMS41IDIwIDExLjUgMTguNUMxMS41IDE0LjkgMTQuNCAxMiAxOCAxMk0xOCAxNC41QzE5LjEgMTQuNSAyMC4xIDE0LjkgMjAuOCAxNS43TDIyIDE0LjVWMTguNUgxOEwxOS44IDE2LjdDMTkuMyAxNi4zIDE4LjcgMTYgMTggMTZDMTYuNiAxNiAxNS41IDE3LjEgMTUuNSAxOC41UzE2LjYgMjEgMTggMjFDMTguOCAyMSAxOS41IDIwLjYgMjAgMjBIMjEuN0MyMS4xIDIxLjUgMTkuNyAyMi41IDE4IDIyLjVDMTUuOCAyMi41IDE0IDIwLjcgMTQgMTguNVMxNS44IDE0LjUgMTggMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRSZWZyZXNoT3V0bGluZSA9IFwiTTEyIDIxQzguMiAyMCA1IDE1LjUgNSAxMS4yVjYuM0wxMiAzLjJMMTkgNi4zVjEyLjFDMTkuNyAxMi4yIDIwLjMgMTIuNCAyMC45IDEyLjdDMjEgMTIuMSAyMSAxMS42IDIxIDExVjVMMTIgMUwzIDVWMTFDMyAxNi41IDYuOCAyMS43IDEyIDIzQzEyLjQgMjIuOSAxMi43IDIyLjggMTMgMjIuN0MxMi42IDIyLjIgMTIuMiAyMS42IDEyIDIxTTE4IDE0LjVDMTkuMSAxNC41IDIwLjEgMTQuOSAyMC44IDE1LjdMMjIgMTQuNVYxOC41SDE4TDE5LjggMTYuN0MxOS4zIDE2LjMgMTguNyAxNiAxOCAxNkMxNi42IDE2IDE1LjUgMTcuMSAxNS41IDE4LjVTMTYuNiAyMSAxOCAyMUMxOC44IDIxIDE5LjUgMjAuNiAyMCAyMEgyMS43QzIxLjEgMjEuNSAxOS43IDIyLjUgMTggMjIuNUMxNS44IDIyLjUgMTQgMjAuNyAxNCAxOC41UzE1LjggMTQuNSAxOCAxNC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFJlbW92ZSA9IFwiTTE5LjQzLDE5TDIxLjUsMjEuMTFMMjAuMTIsMjIuNUwxOC4wMywyMC40MUwxNS45MSwyMi41M0wxNC41LDIxLjExTDE2LjYxLDE5TDE0LjUsMTYuODZMMTUuODgsMTUuNDdMMTgsMTcuNTlMMjAuMTIsMTUuNDdMMjEuNTUsMTYuOUwxOS40MywxOU0xMiwxTDIxLDVWMTFDMjEsMTEuOSAyMC45LDEyLjc4IDIwLjcxLDEzLjY1QzE5LjksMTMuMjMgMTksMTMgMTgsMTNBNiw2IDAgMCwwIDEyLDE5QzEyLDIwLjM2IDEyLjQ1LDIxLjYyIDEzLjIyLDIyLjYyTDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRSZW1vdmVPdXRsaW5lID0gXCJNMTkuNDMsMTlMMjEuNSwyMS4xMUwyMC4xMiwyMi41TDE4LjAzLDIwLjQxTDE1LjkxLDIyLjUzTDE0LjUsMjEuMTFMMTYuNjEsMTlMMTQuNSwxNi44NkwxNS44OCwxNS40N0wxOCwxNy41OUwyMC4xMiwxNS40N0wyMS41NSwxNi45TDE5LjQzLDE5TTIxLDExQzIxLDExLjkgMjAuOSwxMi43OCAyMC43MSwxMy42NUMyMC4xMywxMy4zNSAxOS41LDEzLjE1IDE4LjgxLDEzLjA1QzE4LjkzLDEyLjQ1IDE5LDExLjgzIDE5LDExLjIyVjYuM0wxMiwzLjE4TDUsNi4zVjExLjIyQzUsMTUuNTQgOC4yNSwyMCAxMiwyMUwxMi4zMSwyMC45MUMxMi41LDIxLjUzIDEyLjgzLDIyLjExIDEzLjIyLDIyLjYyTDEyLDIzQzYuODQsMjEuNzQgMywxNi41NSAzLDExVjVMMTIsMUwyMSw1VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFNlYXJjaCA9IFwiTTEyLDlBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxMiwxNUEzLDMgMCAwLDEgOSwxMkEzLDMgMCAwLDEgMTIsOU0xNy44NiwxOS4zMUMxNi4yMywyMS4yMiAxNC4yOCwyMi40NSAxMiwyM0M5LjQ0LDIyLjM5IDcuMywyMC45MyA1LjU4LDE4LjYzQzMuODYsMTYuMzQgMywxMy44IDMsMTFWNUwxMiwxTDIxLDVWMTFDMjEsMTMuMzkgMjAuMzYsMTUuNjEgMTkuMDgsMTcuNjdMMTYuMTcsMTQuNzZDMTYuNjksMTMuOTcgMTcsMTMgMTcsMTJBNSw1IDAgMCwwIDEyLDdBNSw1IDAgMCwwIDcsMTJBNSw1IDAgMCwwIDEyLDE3QzEzLDE3IDEzLjk3LDE2LjY5IDE0Ljc2LDE2LjE3TDE3Ljg2LDE5LjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFN0YXIgPSBcIk0xMiAxTDMgNVYxMUMzIDE2LjU1IDYuODQgMjEuNzQgMTIgMjNDMTcuMTYgMjEuNzQgMjEgMTYuNTUgMjEgMTFWNUwxMiAxTTE1LjA4IDE2TDEyIDE0LjE1TDguOTMgMTZMOS43NCAxMi41TDcuMDMgMTAuMTZMMTAuNjEgOS44NUwxMiA2LjU1TDEzLjM5IDkuODRMMTYuOTcgMTAuMTVMMTQuMjYgMTIuNUwxNS4wOCAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRTdGFyT3V0bGluZSA9IFwiTTIxIDExQzIxIDE2LjU1IDE3LjE2IDIxLjc0IDEyIDIzQzYuODQgMjEuNzQgMyAxNi41NSAzIDExVjVMMTIgMUwyMSA1VjExTTEyIDIxQzE1Ljc1IDIwIDE5IDE1LjU0IDE5IDExLjIyVjYuM0wxMiAzLjE4TDUgNi4zVjExLjIyQzUgMTUuNTQgOC4yNSAyMCAxMiAyMU0xNS4wNSAxNkwxMS45NyAxNC4xNUw4LjkgMTZMOS43MSAxMi41TDcgMTAuMTZMMTAuNTggOS44NUwxMS45NyA2LjU1TDEzLjM3IDkuODRMMTYuOTUgMTAuMTVMMTQuMjMgMTIuNUwxNS4wNSAxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFN1biA9IFwiTTEyIDFMMyA1VjExQzMgMTYuNTUgNi44NCAyMS43NCAxMiAyM0MxNy4xNiAyMS43NCAyMSAxNi41NSAyMSAxMVY1TDEyIDFNMTIgOC44OUMxMy42IDguODkgMTQuODkgMTAuMTggMTQuODkgMTEuNzhTMTMuNiAxNC42NyAxMiAxNC42NyA5LjExIDEzLjM3IDkuMTEgMTEuNzggMTAuNDEgOC44OSAxMiA4Ljg5TTEyIDZMMTMuMzggOEMxMi45NiA3LjgyIDEyLjUgNy43MyAxMiA3LjczUzExLjA1IDcuODIgMTAuNjIgOEwxMiA2TTcgOC44OUw5LjQgOC42OUM5LjA2IDkgOC43NCA5LjM0IDguNSA5Ljc2QzguMjUgMTAuMTggOC4xIDEwLjYyIDggMTEuMDhMNyA4Ljg5TTcgMTQuNjdMOC4wMyAxMi41QzguMTEgMTIuOTMgOC4yNyAxMy4zOCA4LjUgMTMuOEM4Ljc1IDE0LjIzIDkuMDYgMTQuNTkgOS40IDE0Ljg4TDcgMTQuNjdNMTcgOC44OUwxNiAxMS4wOEMxNS45IDEwLjYyIDE1Ljc0IDEwLjE4IDE1LjUgOS43NkMxNS4yNiA5LjM0IDE0Ljk1IDkgMTQuNiA4LjY4TDE3IDguODlNMTcgMTQuNjdMMTQuNiAxNC44N0MxNC45NCAxNC41OCAxNS4yNSAxNC4yMiAxNS41IDEzLjhDMTUuNzQgMTMuMzggMTUuODkgMTIuOTMgMTUuOTcgMTIuNUwxNyAxNC42N00xMiAxNy41NUwxMC42MSAxNS41N0MxMS4wNCAxNS43MiAxMS41IDE1LjgyIDEyIDE1LjgyQzEyLjUgMTUuODIgMTIuOTUgMTUuNzIgMTMuMzcgMTUuNTdMMTIgMTcuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpZWxkU3VuT3V0bGluZSA9IFwiTTIxIDExQzIxIDE2LjU1IDE3LjE2IDIxLjc0IDEyIDIzQzYuODQgMjEuNzQgMyAxNi41NSAzIDExVjVMMTIgMUwyMSA1VjExTTEyIDIxQzE1Ljc1IDIwIDE5IDE1LjU0IDE5IDExLjIyVjYuM0wxMiAzLjE4TDUgNi4zVjExLjIyQzUgMTUuNTQgOC4yNSAyMCAxMiAyMU0xMiA4Ljg5QzEzLjYgOC44OSAxNC44OSAxMC4xOCAxNC44OSAxMS43OFMxMy42IDE0LjY3IDEyIDE0LjY3IDkuMTEgMTMuMzcgOS4xMSAxMS43OCAxMC40MSA4Ljg5IDEyIDguODlNMTIgNkwxMy4zOCA4QzEyLjk2IDcuODIgMTIuNSA3LjczIDEyIDcuNzNTMTEuMDUgNy44MiAxMC42MiA4TDEyIDZNNyA4Ljg5TDkuNCA4LjY5QzkuMDYgOSA4Ljc0IDkuMzQgOC41IDkuNzZDOC4yNSAxMC4xOCA4LjEgMTAuNjIgOCAxMS4wOEw3IDguODlNNyAxNC42N0w4LjAzIDEyLjVDOC4xMSAxMi45MyA4LjI3IDEzLjM4IDguNSAxMy44QzguNzUgMTQuMjMgOS4wNiAxNC41OSA5LjQgMTQuODhMNyAxNC42N00xNyA4Ljg5TDE2IDExLjA4QzE1LjkgMTAuNjIgMTUuNzQgMTAuMTggMTUuNSA5Ljc2QzE1LjI2IDkuMzQgMTQuOTUgOSAxNC42IDguNjhMMTcgOC44OU0xNyAxNC42N0wxNC42IDE0Ljg3QzE0Ljk0IDE0LjU4IDE1LjI1IDE0LjIyIDE1LjUgMTMuOEMxNS43NCAxMy4zOCAxNS44OSAxMi45MyAxNS45NyAxMi41TDE3IDE0LjY3TTEyIDE3LjU1TDEwLjYxIDE1LjU3QzExLjA0IDE1LjcyIDExLjUgMTUuODIgMTIgMTUuODJDMTIuNSAxNS44MiAxMi45NSAxNS43MiAxMy4zNyAxNS41N0wxMiAxNy41NVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaGllbGRTeW5jID0gXCJNMTggMTJBNi40MSA2LjQxIDAgMCAxIDIwLjg3IDEyLjY3QTExLjYzIDExLjYzIDAgMCAwIDIxIDExVjVMMTIgMUwzIDVWMTFDMyAxNi41NSA2Ljg0IDIxLjc0IDEyIDIzQzEyLjM1IDIyLjkxIDEyLjcgMjIuOCAxMyAyMi42OEE2LjQyIDYuNDIgMCAwIDEgMTEuNSAxOC41QTYuNSA2LjUgMCAwIDEgMTggMTJNMTggMTQuNVYxM0wxNS43NSAxNS4yNUwxOCAxNy41VjE2QTIuNSAyLjUgMCAwIDEgMjAuMjQgMTkuNjJMMjEuMzMgMjAuNzFBNCA0IDAgMCAwIDE4IDE0LjVNMTggMjFBMi41IDIuNSAwIDAgMSAxNS43NiAxNy4zOEwxNC42NyAxNi4yOUE0IDQgMCAwIDAgMTggMjIuNVYyNEwyMC4yNSAyMS43NUwxOCAxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNoaWVsZFN5bmNPdXRsaW5lID0gXCJNMTIgMjFDOC4yNSAyMCA1IDE1LjU0IDUgMTEuMjJWNi4zTDEyIDMuMThMMTkgNi4zVjEyLjA3QTYuNDUgNi40NSAwIDAgMSAyMC45MSAxMi42N0ExMS42MyAxMS42MyAwIDAgMCAyMSAxMVY1TDEyIDFMMyA1VjExQzMgMTYuNTUgNi44NCAyMS43NCAxMiAyM0MxMi4zNSAyMi45MSAxMi43IDIyLjggMTMgMjIuNjhBNi4zIDYuMyAwIDAgMSAxMiAyMU0xOCAxNC41VjEzTDE1Ljc1IDE1LjI1TDE4IDE3LjVWMTZBMi41IDIuNSAwIDAgMSAyMC4yNCAxOS42MkwyMS4zMyAyMC43MUE0IDQgMCAwIDAgMTggMTQuNU0xOCAyMUEyLjUgMi41IDAgMCAxIDE1Ljc2IDE3LjM4TDE0LjY3IDE2LjI5QTQgNCAwIDAgMCAxOCAyMi41VjI0TDIwLjI1IDIxLjc1TDE4IDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hpcFdoZWVsID0gXCJNMiwxMUw0LjA1LDExLjFDNC4zLDguODMgNS41LDYuODUgNy4yNSw1LjU2TDYuMTMsMy44NEM1Ljg2LDMuMzYgNiwyLjc1IDYuNSwyLjQ3QzcsMi4yIDcuNTksMi4zNiA3Ljg3LDIuODRMOC44LDQuNjZDOS43OCw0LjI0IDEwLjg2LDQgMTIsNEMxMy4xNCw0IDE0LjIyLDQuMjQgMTUuMiw0LjY2TDE2LjEzLDIuODRDMTYuNDEsMi4zNiAxNywyLjIgMTcuNSwyLjQ3QzE4LDIuNzUgMTguMTQsMy4zNiAxNy44NywzLjg0TDE2Ljc1LDUuNTZDMTguNSw2Ljg1IDE5LjcsOC44MyAxOS45NSwxMS4xTDIyLDExQTEsMSAwIDAsMSAyMywxMkExLDEgMCAwLDEgMjIsMTNMMTkuOTUsMTIuOUMxOS43LDE1LjE3IDE4LjUsMTcuMTUgMTYuNzUsMTguNDRMMTcuODcsMjAuMTZDMTguMTQsMjAuNjQgMTgsMjEuMjUgMTcuNSwyMS41M0MxNywyMS44IDE2LjQxLDIxLjY0IDE2LjEzLDIxLjE2TDE1LjIsMTkuMzRDMTQuMjIsMTkuNzYgMTMuMTQsMjAgMTIsMjBDMTAuODYsMjAgOS43OCwxOS43NiA4LjgsMTkuMzRMNy44NywyMS4xNkM3LjU5LDIxLjY0IDcsMjEuOCA2LjUsMjEuNTNDNiwyMS4yNSA1Ljg2LDIwLjY0IDYuMTMsMjAuMTZMNy4yNSwxOC40NEM1LjUsMTcuMTUgNC4zLDE1LjE3IDQuMDUsMTIuOUwyLDEzQTEsMSAwIDAsMSAxLDEyQTEsMSAwIDAsMSAyLDExTTkuMDcsMTEuMzVDOS4yLDEwLjc0IDkuNTMsMTAuMiAxMCw5Ljc5TDguMzQsNy4yNUM3LjExLDguMTkgNi4yNyw5LjYgNi4wNSwxMS4yTDkuMDcsMTEuMzVNMTIsOUMxMi4zMiw5IDEyLjYyLDkuMDUgMTIuOSw5LjE0TDE0LjI4LDYuNDVDMTMuNTgsNi4xNiAxMi44MSw2IDEyLDZDMTEuMTksNiAxMC40Miw2LjE2IDkuNzIsNi40NUwxMS4xLDkuMTRDMTEuMzgsOS4wNSAxMS42OCw5IDEyLDlNMTQuOTMsMTEuMzVMMTcuOTUsMTEuMkMxNy43Myw5LjYgMTYuODksOC4xOSAxNS42Niw3LjI1TDE0LDkuNzlDMTQuNDcsMTAuMiAxNC44LDEwLjc0IDE0LjkzLDExLjM1TTE0LjkzLDEyLjY1QzE0LjgsMTMuMjYgMTQuNDcsMTMuOCAxNCwxNC4yMUwxNS42NiwxNi43NUMxNi44OSwxNS44MSAxNy43MywxNC40IDE3Ljk1LDEyLjhMMTQuOTMsMTIuNjVNMTIsMTVDMTEuNjgsMTUgMTEuMzgsMTQuOTUgMTEuMDksMTQuODZMOS43MiwxNy41NUMxMC40MiwxNy44NCAxMS4xOSwxOCAxMiwxOEMxMi44MSwxOCAxMy41OCwxNy44NCAxNC4yOCwxNy41NUwxMi45MSwxNC44NkMxMi42MiwxNC45NSAxMi4zMiwxNSAxMiwxNU05LjA3LDEyLjY1TDYuMDUsMTIuOEM2LjI3LDE0LjQgNy4xMSwxNS44MSA4LjM0LDE2Ljc1TDEwLDE0LjIxQzkuNTMsMTMuOCA5LjIsMTMuMjYgOS4wNywxMi42NVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG9lQmFsbGV0ID0gXCJNMTIuNzggMTEuOTdDMTIuMjcgOC41NCAxMC44NiAyIDcuNTMgMlMyLjggOC41NCAyLjI4IDExLjk3QzIuMDcgMTMuNDIgMiAxNC44OSAyLjE2IDE2LjM1QzIuNSAxOS4zOSAzLjU1IDIwLjg0IDQuMjcgMjEuNUM0LjY0IDIxLjgzIDUuMTEgMjIgNS42IDIySDkuNDdDOS45NiAyMiAxMC40MyAyMS44MyAxMC44IDIxLjVDMTEuNSAyMC44NCAxMi41NSAxOS4zOSAxMi45MSAxNi4zNUMxMy4wOCAxNC44OSAxMyAxMy40MiAxMi43OCAxMS45N003LjUzIDRDNy44OSAzLjg3IDguNTkgNC43MyA5LjI3IDYuMzFMNC41OCAxMC4zM0M1LjQxIDYuMjYgNi45NCAzLjc5IDcuNTMgNE05Ljc1IDEzSDUuMzFDNS4xIDEzIDQuOTIgMTIuOTIgNC43NiAxMi44MUwxMCA4LjMzQzEwLjI5IDkuMzUgMTAuNTYgMTAuNSAxMC43NSAxMS44M0MxMC44NCAxMi40NCAxMC4zNyAxMyA5Ljc1IDEzTTIxLjc4IDExLjk3QzIxLjI3IDguNTQgMTkuODYgMiAxNi41MyAyQzE1LjA0IDIgMTMuOTQgMy4zMiAxMy4xMyA1LjA4QzEzLjUgNi4wNCAxMy44NCA3LjE0IDE0LjEzIDguMzdMMTkuMzEgMTIuODFDMTkuMTUgMTIuOTIgMTguOTcgMTMgMTguNzUgMTNIMTQuOTJDMTUuMDQgMTQuMjcgMTUuMDMgMTUuNDUgMTQuODkgMTYuNTlDMTQuNjIgMTguODcgMTQgMjAuNDUgMTMuMzIgMjEuNTNDMTMuNjggMjEuODQgMTQuMTMgMjIgMTQuNiAyMkgxOC40N0MxOC45NiAyMiAxOS40MyAyMS44MyAxOS44IDIxLjVDMjAuNSAyMC44NCAyMS41NSAxOS4zOSAyMS45MSAxNi4zNUMyMi4wOCAxNC44OSAyMiAxMy40MiAyMS43OCAxMS45N00xNC44IDYuMzFDMTUuNSA0LjczIDE2LjE4IDMuODcgMTYuNTMgNEMxNy4xMyAzLjc5IDE4LjY1IDYuMjYgMTkuNSAxMC4zM0wxNC44IDYuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZUNsZWF0ID0gXCJNMjEgOEMyMC43NiA4IDIwLjUzIDggMjAuMyA4TDIwLjI1IDcuOTdDMTguMTQgNy44NCAxNi4zOCA3LjE3IDE1LjUzIDYuMjNMMTQgN0MxMy45NSA3LjEgMTMuODkgNy4xOSAxMy44NCA3LjI4QzE0LjU1IDcuODkgMTUgOC42NSAxNSA5LjVDMTUgOS44MyAxNC45MSAxMC4xNCAxNC43OSAxMC40NUwxMi45MiA4LjU4QzEyLjcgOC44MyAxMi40NyA5LjA3IDEyLjIyIDkuMjlMMTQuMjUgMTEuMzJDMTQuMDQgMTEuNTcgMTMuOCAxMS43OSAxMy41IDEyTDExLjQzIDkuOTFDMTEuMTQgMTAuMTEgMTAuODUgMTAuMjggMTAuNTUgMTAuNDVMMTIuNTggMTIuNUMxMi4yNSAxMi42MyAxMS44OSAxMi43NCAxMS41IDEyLjgyTDkuNTkgMTAuOTFDOS4yNSAxMS4wNSA4LjkxIDExLjE4IDguNTYgMTEuMjlMMTAuMjYgMTNDMTAuMTcgMTMgMTAuMDkgMTMgMTAgMTNDOC41IDEzIDcuMiAxMi41NCA2LjI4IDExLjgyQzUuNDYgMTEuOTUgNC42OCAxMiA0IDEyQzIgMTIgMiAxNSAyIDE1VjE1QzIgMTYuMTEgMi44OSAxNyA0IDE3SDRWMThDNCAxOC41NSA0LjQ1IDE5IDUgMTlTNiAxOC41NSA2IDE4VjE3SDdWMThDNyAxOC41NSA3LjQ1IDE5IDggMTlTOSAxOC41NSA5IDE4VjE3SDEwVjE4QzEwIDE4LjU1IDEwLjQ1IDE5IDExIDE5UzEyIDE4LjU1IDEyIDE4VjE3SDE1VjE4QzE1IDE4LjU1IDE1LjQ1IDE5IDE2IDE5UzE3IDE4LjU1IDE3IDE4VjE3SDE4VjE4QzE4IDE4LjU1IDE4LjQ1IDE5IDE5IDE5UzIwIDE4LjU1IDIwIDE4VjE3SDIxQzIxIDE3IDIyIDE3IDIyIDEyLjVDMjIgOSAyMSA4IDIxIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZUZvcm1hbCA9IFwiTTIxLjUsOVY4SDIwLjVMMTkuNSw5SDE1TDE0LDhIMTNMNywxMkg0QTIsMiAwIDAsMCAyLDE0VjE2SDEwTDEzLDE1SDE1VjE2SDIxLjVWMTRDMjEuNSwxNCAyMiwxMyAyMiwxMS41QzIyLDEwIDIxLjUsOSAyMS41LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZUhlZWwgPSBcIk0zLDE4SDExLjdMMTcsMTRIMThWMThIMjBWMTRDMjAsMTQgMjEsMTIgMjEsMTBDMjEsOCAyMC41LDYgMjAuNSw2SDE4LjVMMTgsN0wxMCwxNEg4TDMsMTZWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvZVByaW50ID0gXCJNMTAuNzQsMTEuNzJDMTEuMjEsMTIuOTUgMTEuMTYsMTQuMjMgOS43NSwxNC43NEM2Ljg1LDE1LjgxIDYuMiwxMyA2LjE2LDEyLjg2TDEwLjc0LDExLjcyTTUuNzEsMTAuOTFMMTAuMDMsOS44NEM5Ljg0LDguNzkgMTAuMTMsNy43NCAxMC4xMyw2LjVDMTAuMTMsNC44MiA4LjgsMS41MyA2LjY4LDIuMDZDNC4yNiwyLjY2IDMuOTEsNS4zNSA0LDYuNjVDNC4xMiw3Ljk1IDUuNjQsMTAuNzMgNS43MSwxMC45MU0xNy44NSwxOS44NUMxNy44MiwyMCAxNy4xNiwyMi44IDE0LjI2LDIxLjc0QzEyLjg2LDIxLjIyIDEyLjgsMTkuOTQgMTMuMjcsMTguNzFMMTcuODUsMTkuODVNMjAsMTMuNjVDMjAuMSwxMi4zNSAxOS43Niw5LjY1IDE3LjMzLDkuMDVDMTUuMjIsOC41IDEzLjg5LDExLjgxIDEzLjg5LDEzLjVDMTMuODksMTQuNzMgMTQuMTcsMTUuNzggMTQsMTYuODNMMTguMywxNy45QzE4LjM4LDE3LjcyIDE5Ljg5LDE0Ljk0IDIwLDEzLjY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob2VTbmVha2VyID0gXCJNMiAxNUMyIDE1IDIgMTIgNCAxMkM0LjY4IDEyIDUuNDYgMTEuOTUgNi4yOCAxMS44MkM3LjIgMTIuNTQgOC41IDEzIDEwIDEzSDEwLjI1TDguNTYgMTEuMjlDOC45MSAxMS4xOCA5LjI1IDExLjA1IDkuNTkgMTAuOTFMMTEuNSAxMi44MkMxMS44OSAxMi43NCAxMi4yNSAxMi42MyAxMi41OCAxMi41TDEwLjU1IDEwLjQ1QzEwLjg1IDEwLjI4IDExLjE0IDEwLjExIDExLjQzIDkuOTFMMTMuNSAxMkMxMy44IDExLjc5IDE0LjA0IDExLjU2IDE0LjI1IDExLjMyTDEyLjIyIDkuMjlDMTIuNDYgOS4wNyAxMi43IDguODMgMTIuOTIgOC41OEwxNC43OSAxMC40NUMxNC45MSAxMC4xNCAxNSA5LjgzIDE1IDkuNUMxNSA4LjY1IDE0LjU1IDcuODkgMTMuODQgNy4yOEMxMy44OSA3LjE5IDEzLjk1IDcuMSAxNCA3TDE1LjUzIDYuMjNDMTYuMzggNy4xNyAxOC4xNCA3Ljg0IDIwLjI1IDcuOTdMMjAuMyA4SDIxQzIxIDggMjIgOSAyMiAxMi41QzIyIDEzLjA3IDIyIDEzLjU3IDIxLjk2IDE0SDE5QzE3LjkgMTQgMTYuNTggMTQuMjYgMTUuMyAxNC41QzE0LjEyIDE0Ljc2IDEyLjkgMTUgMTIgMTVIMk0yMSAxN0MyMSAxNyAyMS41OCAxNyAyMS44NiAxNUgxOUMxNyAxNSAxNCAxNiAxMiAxNkgyLjI4QzIuNjIgMTYuNiAzLjI2IDE3IDQgMTdIMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvcHBpbmcgPSBcIk0xMiwxM0E1LDUgMCAwLDEgNyw4SDlBMywzIDAgMCwwIDEyLDExQTMsMyAwIDAsMCAxNSw4SDE3QTUsNSAwIDAsMSAxMiwxM00xMiwzQTMsMyAwIDAsMSAxNSw2SDlBMywzIDAgMCwxIDEyLDNNMTksNkgxN0E1LDUgMCAwLDAgMTIsMUE1LDUgMCAwLDAgNyw2SDVDMy44OSw2IDMsNi44OSAzLDhWMjBBMiwyIDAgMCwwIDUsMjJIMTlBMiwyIDAgMCwwIDIxLDIwVjhDMjEsNi44OSAyMC4xLDYgMTksNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG9wcGluZ011c2ljID0gXCJNMTIsM0EzLDMgMCAwLDAgOSw2SDE1QTMsMyAwIDAsMCAxMiwzTTE5LDZBMiwyIDAgMCwxIDIxLDhWMjBBMiwyIDAgMCwxIDE5LDIySDVDMy44OSwyMiAzLDIxLjEgMywyMFY4QzMsNi44OSAzLjg5LDYgNSw2SDdBNSw1IDAgMCwxIDEyLDFBNSw1IDAgMCwxIDE3LDZIMTlNOSwxOUwxNi41LDE0TDksMTBWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvcHBpbmdPdXRsaW5lID0gXCJNMTkgNkgxN0MxNyAzLjIgMTQuOCAxIDEyIDFTNyAzLjIgNyA2SDVDMy45IDYgMyA2LjkgMyA4VjIwQzMgMjEuMSAzLjkgMjIgNSAyMkgxOUMyMC4xIDIyIDIxIDIxLjEgMjEgMjBWOEMyMSA2LjkgMjAuMSA2IDE5IDZNMTIgM0MxMy43IDMgMTUgNC4zIDE1IDZIOUM5IDQuMyAxMC4zIDMgMTIgM00xOSAyMEg1VjhIMTlWMjBNMTIgMTJDMTAuMyAxMiA5IDEwLjcgOSA5SDdDNyAxMS44IDkuMiAxNCAxMiAxNFMxNyAxMS44IDE3IDlIMTVDMTUgMTAuNyAxMy43IDEyIDEyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob3BwaW5nU2VhcmNoID0gXCJNMTkgNkgxN0E1IDUgMCAwIDAgNyA2SDVBMiAyIDAgMCAwIDMgOFYyMEEyIDIgMCAwIDAgNSAyMkgxMi4wNUE2LjUgNi41IDAgMCAxIDkgMTYuNUE2LjQgNi40IDAgMCAxIDEwLjI1IDEyLjY4QTUgNSAwIDAgMSA3IDhIOUEzIDMgMCAwIDAgMTIgMTFIMTIuMDZBNi4yMiA2LjIyIDAgMCAxIDE0LjA2IDEwLjE2QTMgMyAwIDAgMCAxNSA4SDE3QTQuODggNC44OCAwIDAgMSAxNi41NCAxMC4wOUE2LjUgNi41IDAgMCAxIDIxIDEzLjA5VjhBMiAyIDAgMCAwIDE5IDZNOSA2QTMgMyAwIDAgMSAxNSA2TTE5LjMxIDE4LjlBNC41IDQuNSAwIDEgMCAxNy44OCAyMC4zMkwyMSAyMy4zOUwyMi4zOSAyMk0xNS41IDE5QTIuNSAyLjUgMCAxIDEgMTggMTYuNUEyLjUgMi41IDAgMCAxIDE1LjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2hvcmUgPSBcIk0yMCAxMkgyMlYxNEgyMEMxOC42IDE0IDE3LjMgMTMuNiAxNiAxM0MxMy41IDE0LjMgMTAuNSAxNC4zIDggMTNDNi43IDEzLjYgNS40IDE0IDQgMTRIMlYxMkg0QzUuNCAxMiA2LjggMTEuNSA4IDEwLjdDMTAuNCAxMi40IDEzLjYgMTIuNCAxNiAxMC43QzE3LjIgMTEuNSAxOC42IDEyIDIwIDEyTTIwIDZIMjJWOEgyMEMxOC42IDggMTcuMyA3LjcgMTYgN0MxMy41IDguMyAxMC41IDguMyA4IDdDNi43IDcuNyA1LjQgOCA0IDhIMlY2SDRDNS40IDYgNi44IDUuNSA4IDQuN0MxMC40IDYuNCAxMy42IDYuNCAxNiA0LjdDMTcuMiA1LjUgMTguNiA2IDIwIDZNMjIgMjBIMlYxOEgyMlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob3ZlbCA9IFwiTTE1LjEsMS44MUwxMi4yNyw0LjY0QzExLjUsNS40MiAxMS41LDYuNjkgMTIuMjcsNy40N0wxMy42OCw4Ljg4TDkuMTMsMTMuNDNMNi4zMSwxMC42TDQuODksMTJDLTAuMDYsMTcgMy41LDIwLjUgMy41LDIwLjVDMy41LDIwLjUgNywyNCAxMiwxOS4wOUwxMy40MSwxNy42OEwxMC42MSwxNC44OEwxNS4xNSwxMC4zNEwxNi41NCwxMS43M0MxNy4zMiwxMi41IDE4LjU5LDEyLjUgMTkuMzcsMTEuNzNMMjIuMiw4LjlMMTUuMSwxLjgxTTE3LjkzLDEwLjI4TDE2LjU1LDguOUwxNS4xMSw3LjQ2TDEzLjcxLDYuMDZMMTUuMTIsNC42NUwxOS4zNSw4Ljg4TDE3LjkzLDEwLjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNob3ZlbE9mZiA9IFwiTTE1LjEsMS44MUwxMi4yNyw0LjY1QzExLjUsNS40MyAxMS41LDYuNjkgMTIuMjcsNy40N0wxMy42OCw4Ljg5TDEzLDkuNjJMMTQuNDQsMTEuMDZMMTUuMTcsMTAuMzNMMTYuNTYsMTEuNzJDMTcuMzQsMTIuNSAxOC42MSwxMi41IDE5LjM5LDExLjcyTDIyLjIyLDguODhMMTUuMSwxLjgxTTE3LjkzLDEwLjI4TDEzLjcsNi4wNkwxNS4xMSw0LjY1TDE5LjM0LDguODhMMTcuOTMsMTAuMjhNMjAuNywyMC4yNEwxOS4yOSwyMS42NUwxMS41LDEzLjg4TDEwLjUsMTQuODhMMTMuMzMsMTcuNjlMMTIsMTkuMDlDNywyNCAzLjUsMjAuNSAzLjUsMjAuNUMzLjUsMjAuNSAtMC4wNiwxNyA0Ljg5LDEyTDYuMzEsMTAuNkw5LjEzLDEzLjQzTDEwLjEzLDEyLjQzTDIuMzUsNC42OEwzLjc3LDMuMjZMMjAuNywyMC4yNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG93ZXIgPSBcIk0yMSwxNFYxNUMyMSwxNi45MSAxOS45MywxOC41NyAxOC4zNSwxOS40MUwxOSwyMkgxN0wxNi41LDIwQzE2LjMzLDIwIDE2LjE3LDIwIDE2LDIwSDhDNy44MywyMCA3LjY3LDIwIDcuNSwyMEw3LDIySDVMNS42NSwxOS40MUM0LjA3LDE4LjU3IDMsMTYuOTEgMywxNVYxNEgyVjEySDIwVjVBMSwxIDAgMCwwIDE5LDRDMTguNSw0IDE4LjEyLDQuMzQgMTgsNC43OUMxOC42Myw1LjMzIDE5LDYuMTMgMTksN0gxM0EzLDMgMCAwLDEgMTYsNEMxNi4wNiw0IDE2LjExLDQgMTYuMTcsNEMxNi41OCwyLjg0IDE3LjY5LDIgMTksMkEzLDMgMCAwLDEgMjIsNVYxNEgyMVYxNE0xOSwxNEg1VjE1QTMsMyAwIDAsMCA4LDE4SDE2QTMsMyAwIDAsMCAxOSwxNVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaG93ZXJIZWFkID0gXCJNMjAsMjBBMSwxIDAgMCwxIDIxLDIxQTEsMSAwIDAsMSAyMCwyMkExLDEgMCAwLDEgMTksMjFBMSwxIDAgMCwxIDIwLDIwTTE2LDIwQTEsMSAwIDAsMSAxNywyMUExLDEgMCAwLDEgMTYsMjJBMSwxIDAgMCwxIDE1LDIxQTEsMSAwIDAsMSAxNiwyME0xMiwyMEExLDEgMCAwLDEgMTMsMjFBMSwxIDAgMCwxIDEyLDIyQTEsMSAwIDAsMSAxMSwyMUExLDEgMCAwLDEgMTIsMjBNOCwyMEExLDEgMCAwLDEgOSwyMUExLDEgMCAwLDEgOCwyMkExLDEgMCAwLDEgNywyMUExLDEgMCAwLDEgOCwyME00LDIwQTEsMSAwIDAsMSA1LDIxQTEsMSAwIDAsMSA0LDIyQTEsMSAwIDAsMSAzLDIxQTEsMSAwIDAsMSA0LDIwTTYsMTdBMSwxIDAgMCwxIDcsMThBMSwxIDAgMCwxIDYsMTlINkExLDEgMCAwLDEgNSwxOEExLDEgMCAwLDEgNiwxN0g2TTEwLDE3QTEsMSAwIDAsMSAxMSwxOEExLDEgMCAwLDEgMTAsMTlBMSwxIDAgMCwxIDksMThBMSwxIDAgMCwxIDEwLDE3TTE0LDE3QTEsMSAwIDAsMSAxNSwxOEExLDEgMCAwLDEgMTQsMTlBMSwxIDAgMCwxIDEzLDE4QTEsMSAwIDAsMSAxNCwxN00xOCwxN0ExLDEgMCAwLDEgMTksMThBMSwxIDAgMCwxIDE4LDE5QTEsMSAwIDAsMSAxNywxOEExLDEgMCAwLDEgMTgsMTdNOCwxNEExLDEgMCAwLDEgOSwxNUExLDEgMCAwLDEgOCwxNkExLDEgMCAwLDEgNywxNUExLDEgMCAwLDEgOCwxNE0xMiwxNEExLDEgMCAwLDEgMTMsMTVBMSwxIDAgMCwxIDEyLDE2QTEsMSAwIDAsMSAxMSwxNUExLDEgMCAwLDEgMTIsMTRNMTYsMTRBMSwxIDAgMCwxIDE3LDE1QTEsMSAwIDAsMSAxNiwxNkExLDEgMCAwLDEgMTUsMTVBMSwxIDAgMCwxIDE2LDE0TTE5LDEySDVWMTBIMTlWMTJNMTcuOTIsOUg2LjA4QzYuNSw2LjUgOC41LDQuNSAxMSw0LjA4VjJIMTNWNC4wOEMxNS41LDQuNSAxNy41LDYuNSAxNy45Miw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNocmVkZGVyID0gXCJNNiwzVjdIOFY1SDE2VjdIMThWM0g2TTUsOEEzLDMgMCAwLDAgMiwxMVYxN0g1VjE0SDE5VjE3SDIyVjExQTMsMyAwIDAsMCAxOSw4SDVNMTgsMTBBMSwxIDAgMCwxIDE5LDExQTEsMSAwIDAsMSAxOCwxMkExLDEgMCAwLDEgMTcsMTFBMSwxIDAgMCwxIDE4LDEwTTcsMTZWMjFIOVYxNkg3TTExLDE2VjIwSDEzVjE2SDExTTE1LDE2VjIxSDE3VjE2SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNodWZmbGUgPSBcIk0xNC44MywxMy40MUwxMy40MiwxNC44MkwxNi41NSwxNy45NUwxNC41LDIwSDIwVjE0LjVMMTcuOTYsMTYuNTRMMTQuODMsMTMuNDFNMTQuNSw0TDE2LjU0LDYuMDRMNCwxOC41OUw1LjQxLDIwTDE3Ljk2LDcuNDZMMjAsOS41VjRNMTAuNTksOS4xN0w1LjQxLDRMNCw1LjQxTDkuMTcsMTAuNThMMTAuNTksOS4xN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaHVmZmxlRGlzYWJsZWQgPSBcIk0xNiw0LjVWN0g1VjlIMTZWMTEuNUwxOS41LDhNMTYsMTIuNVYxNUg1VjE3SDE2VjE5LjVMMTkuNSwxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNodWZmbGVWYXJpYW50ID0gXCJNMTcsM0wyMi4yNSw3LjVMMTcsMTJMMjIuMjUsMTYuNUwxNywyMVYxOEgxNC4yNkwxMS40NCwxNS4xOEwxMy41NiwxMy4wNkwxNS41LDE1SDE3VjEyTDE3LDlIMTUuNUw2LjUsMThIMlYxNUg1LjI2TDE0LjI2LDZIMTdWM00yLDZINi41TDkuMzIsOC44Mkw3LjIsMTAuOTRMNS4yNiw5SDJWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaHVyaWtlbiA9IFwiTTE0LjUgOS41TDEyIDJMOS41IDkuNUwyIDEyTDkuNSAxNC41TDEyIDIyTDE0LjUgMTQuNUwyMiAxMkwxNC41IDkuNU0xMiAxMy43QzExLjEgMTMuNyAxMC4zIDEzIDEwLjMgMTJDMTAuMyAxMS4xIDExIDEwLjMgMTIgMTAuM0MxMi45IDEwLjMgMTMuNyAxMSAxMy43IDEyQzEzLjcgMTIuOSAxMi45IDEzLjcgMTIgMTMuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWdtYSA9IFwiTTE4LDZIOC44M0wxNC44MywxMkw4LjgzLDE4SDE4VjIwSDZWMThMMTIsMTJMNiw2VjRIMThWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWdtYUxvd2VyID0gXCJNMTksMTJDMTksMTYuNDIgMTUuNjQsMjAgMTEuNSwyMEM3LjM2LDIwIDQsMTYuNDIgNCwxMkM0LDcuNTggNy4zNiw0IDExLjUsNEgyMFY2SDE2LjQ2QzE4LDcuNDcgMTksOS42MSAxOSwxMk0xMS41LDZDOC40Niw2IDYsOC42OSA2LDEyQzYsMTUuMzEgOC40NiwxOCAxMS41LDE4QzE0LjU0LDE4IDE3LDE1LjMxIDE3LDEyQzE3LDguNjkgMTQuNTQsNiAxMS41LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbkNhdXRpb24gPSBcIk0yLDNIMjJWMTNIMThWMjFIMTZWMTNIOFYyMUg2VjEzSDJWM00xOC45NywxMUwyMCw5Ljk3VjcuMTVMMTYuMTUsMTFIMTguOTdNMTMuMzIsMTFMMTkuMzIsNUgxNi41TDEwLjUsMTFIMTMuMzJNNy42NiwxMUwxMy42Niw1SDEwLjgzTDQuODMsMTFINy42Nk01LjE4LDVMNCw2LjE4VjlMOCw1SDUuMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbkRpcmVjdGlvbiA9IFwiTTExLDEySDMuNUw2LDkuNUwzLjUsN0gxMVYzTDEyLDJMMTMsM1Y3SDE4TDIwLjUsOS41TDE4LDEySDEzVjIwQTIsMiAwIDAsMSAxNSwyMkg5QTIsMiAwIDAsMSAxMSwyMFYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduRGlyZWN0aW9uTWludXMgPSBcIk0yMC41IDkuNUwxOCAxMkgxM1YyMkg5QTIgMiAwIDAgMSAxMSAyMFYxMkgzLjVMNiA5LjVMMy41IDdIMTFWM0wxMiAyTDEzIDNWN0gxOE0yMyAxOEgxNVYyMEgyM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduRGlyZWN0aW9uUGx1cyA9IFwiTTEzIDIwSDEzLjA5QTUuNSA1LjUgMCAwIDAgMTMuODEgMjJIOUEyIDIgMCAwIDEgMTEgMjBWMTJIMy41TDYgOS41TDMuNSA3SDExVjNMMTIgMkwxMyAzVjdIMThMMjAuNSA5LjVMMTggMTJIMTNNMTggMTVWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbkRpcmVjdGlvblJlbW92ZSA9IFwiTTEzIDIwSDEzLjA5QTUuNSA1LjUgMCAwIDAgMTMuODEgMjJIOUEyIDIgMCAwIDEgMTEgMjBWMTJIMy41TDYgOS41TDMuNSA3SDExVjNMMTIgMkwxMyAzVjdIMThMMjAuNSA5LjVMMTggMTJIMTNNMjEuMTIgMTUuNDZMMTkgMTcuNTlMMTYuODggMTUuNDZMMTUuNDYgMTYuODhMMTcuNTkgMTlMMTUuNDYgMjEuMTJMMTYuODggMjIuNTRMMTkgMjAuNDFMMjEuMTIgMjIuNTRMMjIuNTQgMjEuMTJMMjAuNDEgMTlMMjIuNTQgMTYuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnblBvbGUgPSBcIk0xMSAzTDEyIDJMMTMgM1YyMEMxNC4xMSAyMCAxNSAyMC45IDE1IDIySDlDOSAyMC45IDkuOSAyMCAxMSAyMFYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25SZWFsRXN0YXRlID0gXCJNMTggOEg4QzYuOSA4IDYgOC45IDYgMTBWMTZDNiAxNy4xMSA2LjkgMTggOCAxOEgxOEMxOS4xMSAxOCAyMCAxNy4xMSAyMCAxNlYxMEMyMCA4LjkgMTkuMTEgOCAxOCA4TTE0IDE2SDhWMTRIMTRWMTZNMTggMTJIOFYxMEgxOFYxMk0yMiA2SDRWMjJIMlYySDRWNEgyMlY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25UZXh0ID0gXCJNMTEsM0wxMiwyTDEzLDNWNUgyMEExLDEgMCAwLDEgMjEsNlYxNkExLDEgMCAwLDEgMjAsMTdIMTNWMjBBMiwyIDAgMCwxIDE1LDIySDlBMiwyIDAgMCwxIDExLDIwVjE3SDRBMSwxIDAgMCwxIDMsMTZWNkExLDEgMCAwLDEgNCw1SDExVjNNNiw4VjEwSDE4VjhINk02LDEyVjE0SDEzVjEySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsID0gXCJNMywyMUg2VjE4SDNNOCwyMUgxMVYxNEg4TTEzLDIxSDE2VjlIMTNNMTgsMjFIMjFWM0gxOFYyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWwyZyA9IFwiTTExLDE5LjVIMlYxMy41QTMsMyAwIDAsMSA1LDEwLjVIOFY3LjVIMlY0LjVIOEEzLDMgMCAwLDEgMTEsNy41VjEwLjVBMywzIDAgMCwxIDgsMTMuNUg1VjE2LjVIMTFNMjIsMTAuNUgxNy41VjEzLjVIMTlWMTYuNUgxNlY3LjVIMjJWNC41SDE2QTMsMyAwIDAsMCAxMyw3LjVWMTYuNUEzLDMgMCAwLDAgMTYsMTkuNUgxOUEzLDMgMCAwLDAgMjIsMTYuNVwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbDNnID0gXCJNMTEsMTYuNVYxNC4yNUMxMSwxMyAxMCwxMiA4Ljc1LDEyQzEwLDEyIDExLDExIDExLDkuNzVWNy41QTMsMyAwIDAsMCA4LDQuNUgyVjcuNUg4VjEwLjVINVYxMy41SDhWMTYuNUgyVjE5LjVIOEEzLDMgMCAwLDAgMTEsMTYuNU0yMiwxNi41VjEwLjVIMTcuNVYxMy41SDE5VjE2LjVIMTZWNy41SDIyVjQuNUgxNkEzLDMgMCAwLDAgMTMsNy41VjE2LjVBMywzIDAgMCwwIDE2LDE5LjVIMTlBMywzIDAgMCwwIDIyLDE2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsNGcgPSBcIk0yMiwxNi41VjEwLjVIMTcuNVYxMy41SDE5VjE2LjVIMTZWNy41SDIyVjQuNUgxNkEzLDMgMCAwLDAgMTMsNy41VjE2LjVBMywzIDAgMCwwIDE2LDE5LjVIMTlBMywzIDAgMCwwIDIyLDE2LjVNOCwxOS41SDExVjQuNUg4VjEwLjVINVY0LjVIMlYxMy41SDhWMTkuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWw1ZyA9IFwiTTIyLDE2LjVWMTAuNUgxNy41VjEzLjVIMTlWMTYuNUgxNlY3LjVIMjJWNC41SDE2QTMsMyAwIDAsMCAxMyw3LjVWMTYuNUEzLDMgMCAwLDAgMTYsMTkuNUgxOUEzLDMgMCAwLDAgMjIsMTYuNU0xMCw0LjVIM1YxMkwzLDEzLjVIN1YxNi41SDNWMTkuNUg4LjVBMS41LDEuNSAwIDAsMCAxMCwxOFYxMkExLjUsMS41IDAgMCwwIDguNSwxMC41SDZWNy41SDEwVjQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWxDZWxsdWxhcjEgPSBcIk0xOS41LDUuNVYxOC41SDE3LjVWNS41SDE5LjVNMTIuNSwxMC41VjE4LjVIMTAuNVYxMC41SDEyLjVNMjEsNEgxNlYyMEgyMVY0TTE0LDlIOVYyMEgxNFY5TTcsMTRIMlYyMEg3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbENlbGx1bGFyMiA9IFwiTTE5LjUsNS41VjE4LjVIMTcuNVY1LjVIMTkuNU0yMSw0SDE2VjIwSDIxVjRNMTQsOUg5VjIwSDE0VjlNNywxNEgyVjIwSDdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsQ2VsbHVsYXIzID0gXCJNMjEsNEgxNlYyMEgyMVY0TTE0LDlIOVYyMEgxNFY5TTcsMTRIMlYyMEg3VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbENlbGx1bGFyT3V0bGluZSA9IFwiTTE5LjUsNS41VjE4LjVIMTcuNVY1LjVIMTkuNU0xMi41LDEwLjVWMTguNUgxMC41VjEwLjVIMTIuNU01LjUsMTUuNVYxOC41SDMuNVYxNS41SDUuNU0yMSw0SDE2VjIwSDIxVjRNMTQsOUg5VjIwSDE0VjlNNywxNEgyVjIwSDdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmFsRGlzdGFuY2VWYXJpYW50ID0gXCJNNCw2VjRBMTIsMTIgMCAwLDEgMTYsMTZIMTRBMTAsMTAgMCAwLDAgNCw2TTQsMTBWOEE4LDggMCAwLDEgMTIsMTZIMTBBNiw2IDAgMCwwIDQsMTBNNCwxMkE0LDQgMCAwLDEgOCwxNkg0VjEyTTMsMThIMTlWMTZMMjIsMTlMMTksMjJWMjBIM1YxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWxIc3BhID0gXCJNMTAuNSwxMC41SDEzLjVWNC41SDE2LjVWMTkuNUgxMy41VjEzLjVIMTAuNVYxOS41SDcuNVY0LjVIMTAuNVYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbEhzcGFQbHVzID0gXCJNMTksOFYxMUgyMlYxNEgxOVYxN0gxNlYxNEgxM1YxMUgxNlY4SDE5TTUsMTAuNUg4VjQuNUgxMVYxOS41SDhWMTMuNUg1VjE5LjVIMlY0LjVINVYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hbE9mZiA9IFwiTTE4LDNWMTYuMThMMjEsMTkuMThWM0gxOE00LjI4LDVMMyw2LjI3TDEwLjczLDE0SDhWMjFIMTFWMTQuMjdMMTMsMTYuMjdWMjFIMTZWMTkuMjdMMTkuNzMsMjNMMjEsMjEuNzJMNC4yOCw1TTEzLDlWMTEuMThMMTYsMTQuMThWOUgxM00zLDE4VjIxSDZWMThIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYWxWYXJpYW50ID0gXCJNNCw2VjRINC4xQzEyLjksNCAyMCwxMS4xIDIwLDE5LjlWMjBIMThWMTkuOUMxOCwxMi4yIDExLjgsNiA0LDZNNCwxMFY4QTEyLDEyIDAgMCwxIDE2LDIwSDE0QTEwLDEwIDAgMCwwIDQsMTBNNCwxNFYxMkE4LDggMCAwLDEgMTIsMjBIMTBBNiw2IDAgMCwwIDQsMTRNNCwxNkE0LDQgMCAwLDEgOCwyMEg0VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpZ25hdHVyZSA9IFwiTTIyLDIySDJWMjBIMjJWMjJNMi4yNiwxNi44M0w1LjA5LDE0TDIuMjYsMTEuMTdMMy42Nyw5Ljc2TDYuNSwxMi41OUw5LjMzLDkuNzZMMTAuNzQsMTEuMTdMNy45MSwxNEwxMC43NCwxNi44M0w5LjMzLDE4LjI0TDYuNSwxNS40MUwzLjY3LDE4LjI0TDIuMjYsMTYuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmF0dXJlRnJlZWhhbmQgPSBcIk0yMiwyMkgyVjIwSDIyVjIyTTYuMiwxNy4zTDUuNSwxOEw0LjEsMTYuNkwyLjcsMThMMiwxNy4zTDMuNCwxNS45TDIsMTQuNUwyLjcsMTMuOEw0LjEsMTUuMkw1LjUsMTMuOEw2LjIsMTQuNUw0LjgsMTUuOUw2LjIsMTcuM00xNi4yMiwxNC40M0MxNi4yMiwxMy44NSAxNS41LDEzLjIgMTQuMDYsMTIuNDZDMTIuMjMsMTEuNTQgMTEsMTAuNzkgMTAuMzYsMTAuMjRDOS43MSw5LjY4IDkuMzksOS4wNiA5LjM5LDguMzdDOS4zOSw2LjU5IDEwLjMsNS4xMiAxMi4xMiwzLjk1QzEzLjk0LDIuNzggMTUuNDMsMi4xOSAxNi41NywyLjE5QzE3LjMxLDIuMTkgMTcuODUsMi4zMiAxOC4xOCwyLjU4QzE4LjUsMi44MyAxOC42OCwzLjI3IDE4LjY4LDMuOUMxOC42OCw0LjE4IDE4LjU2LDQuNDIgMTguMzEsNC42M0MxOC4wNyw0LjgzIDE3Ljg3LDQuOTMgMTcuNzQsNC45M0MxNy42Myw0LjkzIDE3LjQzLDQuODMgMTcuMTMsNC42NEwxNi41NSw0LjM4QzE2LjA4LDQuMzggMTUuMTQsNC43MSAxMy43MSw1LjM4QzEyLjI5LDYuMDQgMTEuNTgsNi43OSAxMS41OCw3LjYzQzExLjU4LDguMTQgMTEuODIsOC42IDEyLjMyLDlDMTIuODIsOS40MiAxMy43MSw5LjkzIDE1LDEwLjUzQzE2LjAzLDExIDE2Ljg2LDExLjUgMTcuNSwxMi4wN0MxOC4xLDEyLjYxIDE4LjQxLDEzLjI1IDE4LjQxLDE0QzE4LjQxLDE1LjM0IDE3LjQ3LDE2LjQxIDE1LjU4LDE3LjE3QzEzLjcsMTcuOTQgMTEuOSwxOC4zMiAxMC4xOSwxOC4zMkM4Ljc1LDE4LjMyIDgsMTcuODMgOCwxNi44NkM4LDE2LjUgOC4xOSwxNi4yNyA4LjUsMTYuMTFDOC44MywxNS45NSA5LjE2LDE1Ljg3IDkuNSwxNS44N0wxMC4yNSwxNkwxMC45NywxNi4xM0MxMS45NSwxNi4xMyAxMywxNS45NyAxNC4xMywxNS42NEMxNS4yNiwxNS4zMiAxNS45NiwxNC45MSAxNi4yMiwxNC40M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWduYXR1cmVJbWFnZSA9IFwiTTIyLDIySDJWMjBIMjJWMjJNNi4yLDE3LjNMNC44LDE1LjlMNi4yLDE0LjVMNS41LDEzLjhMNC4xLDE1LjJMMi43LDEzLjhMMiwxNC41TDMuNCwxNS45TDIsMTcuM0wyLjcsMThMNC4xLDE2LjZMNS41LDE4TDYuMiwxNy4zTTIwLDVIMTBBMiwyIDAgMCwwIDgsN1YxNkEyLDIgMCAwLDAgMTAsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjdBMiwyIDAgMCwwIDIwLDVNMTAsMTZMMTIuNiwxMi43TDE0LjQsMTQuOUwxNi44LDExLjZMMjAsMTZIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lnbmF0dXJlVGV4dCA9IFwiTTIyLDIySDJWMjBIMjJWMjJNNi4yLDE3LjNMNC44LDE1LjlMNi4yLDE0LjVMNS41LDEzLjhMNC4xLDE1LjJMMi43LDEzLjhMMiwxNC41TDMuNCwxNS45TDIsMTcuM0wyLjcsMThMNC4xLDE2LjZMNS41LDE4TDYuMiwxNy4zTTIwLjUsM0wyMS43LDcuNEwyMC43LDcuN0MyMC4yLDYuOCAxOS44LDYgMTkuMyw1LjVDMTguNyw1IDE4LjEsNSAxNy41LDVIMTVWMTUuNUMxNSwxNiAxNSwxNi41IDE1LjMsMTYuN0MxNS42LDE2LjkgMTYuMywxNi45IDE3LDE2LjlWMTcuOUgxMVYxNi45QzExLjcsMTYuOSAxMi4zLDE2LjkgMTIuNywxNi43QzEzLDE2LjUgMTMsMTYgMTMsMTUuNVY1SDEwLjVDOS45LDUgOS4zLDUgOC43LDUuNEM4LjIsNS44IDcuNyw2LjcgNy4zLDcuNkw2LjMsNy4zTDcuNSwzSDIwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lsbyA9IFwiTTguNSwyQzExLjg1LDIgMTQuNiw0LjUzIDE0Ljk2LDcuNzhMMjIsMTJWMTRMMjAsMTIuOFYyMkgxOFYxMS42TDE1LDkuOFYyMkgxM1Y5SDRWMjJIMlY4LjVBNi41LDYuNSAwIDAsMSA4LjUsMk04LjUsNEM2LjU0LDQgNC44Nyw1LjI1IDQuMjYsN0gxMi43NEMxMi4xMyw1LjI1IDEwLjQ2LDQgOC41LDRNNiwxMUgxMVYxM0g2VjExTTYsMTVIMTFWMTdINlYxNU02LDE5SDExVjIxSDZWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2lsdmVyd2FyZSA9IFwiTTguMSwxMy4zNEwzLjkxLDkuMTZDMi4zNSw3LjU5IDIuMzUsNS4wNiAzLjkxLDMuNUwxMC45MywxMC41TDguMSwxMy4zNE0xNC44OCwxMS41M0wxMy40MSwxM0wyMC4yOSwxOS44OEwxOC44OCwyMS4yOUwxMiwxNC40MUw1LjEyLDIxLjI5TDMuNzEsMTkuODhMMTMuNDcsMTAuMTJDMTIuNzYsOC41OSAxMy4yNiw2LjQ0IDE0Ljg1LDQuODVDMTYuNzYsMi45MyAxOS41LDIuNTcgMjAuOTYsNC4wM0MyMi40Myw1LjUgMjIuMDcsOC4yNCAyMC4xNSwxMC4xNUMxOC41NiwxMS43NCAxNi40MSwxMi4yNCAxNC44OCwxMS41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaWx2ZXJ3YXJlQ2xlYW4gPSBcIk0xNSAwTDE0LjM4IDEuMzdMMTMgMkwxNC4zOCAyLjYzTDE1IDRMMTUuNjMgMi42M0wxNyAyTDE1LjYzIDEuMzdMMTUgME0xMC41IDJMOS40MSA0LjQxTDcgNS41TDkuNDEgNi41OUwxMC41IDlMMTEuNiA2LjU5TDE0IDUuNUwxMS42IDQuNDFMMTAuNSAyTTE4Ljg5IDUuMTRDMTcuNTYgNS4wNiAxNi4wNCA1LjY1IDE0Ljg0IDYuODRDMTMuMjUgOC40MyAxMi43NSAxMC41OCAxMy40NiAxMi4xMUwzLjcgMjEuODdMNS4xMSAyMy4yOEwxMiAxNi40MUwxOC44OCAyMy4yOUwyMC4yOSAyMS44OEwxMy40MSAxNUwxNC44OCAxMy41M0MxNi40MSAxNC4yNCAxOC41NiAxMy43NCAyMC4xNSAxMi4xNUMyMi4wNiAxMC4yNCAyMi40MyA3LjUgMjAuOTYgNi4wM0MyMC40MSA1LjUgMTkuNjggNS4xOSAxOC44OSA1LjE0TTMuOTEgNS41QzIuMzUgNy4wNiAyLjM1IDkuNTkgMy45MSAxMS4xNkw4LjEgMTUuMzRMMTAuOTMgMTIuNUwzLjkxIDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaWx2ZXJ3YXJlRm9yayA9IFwiTTUuMTIsMjEuMjlMMy43MSwxOS44OEwxMy4zNiwxMC4yMkwxMy4xNiwxMEMxMi4zOCw5LjIzIDEyLjM4LDcuOTcgMTMuMTYsNy4xOUwxNy41LDIuODJMMTguNDMsMy43NEwxNS4xOSw3TDE2LjE1LDcuOTRMMTkuMzksNC42OUwyMC4zMSw1LjYxTDE3LjA2LDguODVMMTgsOS44MUwyMS4yNiw2LjU2TDIyLjE4LDcuNUwxNy44MSwxMS44NEMxNy4wMywxMi42MiAxNS43NywxMi42MiAxNSwxMS44NEwxNC43OCwxMS42NEw1LjEyLDIxLjI5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbHZlcndhcmVGb3JrS25pZmUgPSBcIk0xMSw5SDlWMkg3VjlINVYySDNWOUMzLDExLjEyIDQuNjYsMTIuODQgNi43NSwxMi45N1YyMkg5LjI1VjEyLjk3QzExLjM0LDEyLjg0IDEzLDExLjEyIDEzLDlWMkgxMVY5TTE2LDZWMTRIMTguNVYyMkgyMVYyQzE4LjI0LDIgMTYsNC4yNCAxNiw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbHZlcndhcmVTcG9vbiA9IFwiTTE0Ljg4LDExLjUzTDUuMTIsMjEuMjlMMy43MSwxOS44OEwxMy40NywxMC4xMkMxMi43Niw4LjU5IDEzLjI2LDYuNDQgMTQuODUsNC44NUMxNi43NiwyLjkzIDE5LjUsMi41NyAyMC45Niw0LjAzQzIyLjQzLDUuNSAyMi4wNyw4LjI0IDIwLjE1LDEwLjE1QzE4LjU2LDExLjc0IDE2LjQxLDEyLjI0IDE0Ljg4LDExLjUzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbHZlcndhcmVWYXJpYW50ID0gXCJNOC4xLDEzLjM0TDMuOTEsOS4xNkMyLjM1LDcuNTkgMi4zNSw1LjA2IDMuOTEsMy41TDEwLjkzLDEwLjVMOC4xLDEzLjM0TTEzLjQxLDEzTDIwLjI5LDE5Ljg4TDE4Ljg4LDIxLjI5TDEyLDE0LjQxTDUuMTIsMjEuMjlMMy43MSwxOS44OEwxMy4zNiwxMC4yMkwxMy4xNiwxMEMxMi4zOCw5LjIzIDEyLjM4LDcuOTcgMTMuMTYsNy4xOUwxNy41LDIuODJMMTguNDMsMy43NEwxNS4xOSw3TDE2LjE1LDcuOTRMMTkuMzksNC42OUwyMC4zMSw1LjYxTDE3LjA2LDguODVMMTgsOS44MUwyMS4yNiw2LjU2TDIyLjE4LDcuNUwxNy44MSwxMS44NEMxNy4wMywxMi42MiAxNS43NywxMi42MiAxNSwxMS44NEwxNC43OCwxMS42NEwxMy40MSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaW0gPSBcIk0yMCw0QTIsMiAwIDAsMCAxOCwySDEwTDQsOFYyMEEyLDIgMCAwLDAgNiwyMkgxOEMxOS4xMSwyMiAyMCwyMS4xIDIwLDIwVjRNOSwxOUg3VjE3SDlWMTlNMTcsMTlIMTVWMTdIMTdWMTlNOSwxNUg3VjExSDlWMTVNMTMsMTlIMTFWMTVIMTNWMTlNMTMsMTNIMTFWMTFIMTNWMTNNMTcsMTVIMTVWMTFIMTdWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2ltQWxlcnQgPSBcIk0xMyAxM0gxMVY3SDEzTTEzIDE3SDExVjE1SDEzTTE4IDJIMTBMNCA4VjIwQzQgMjEuMSA0LjkgMjIgNiAyMkgxOEMxOS4xIDIyIDIwIDIxLjEgMjAgMjBWNEMyMCAyLjkgMTkuMSAyIDE4IDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2ltQWxlcnRPdXRsaW5lID0gXCJNMTMgMTNIMTFWN0gxM00xMyAxN0gxMVYxNUgxM00xOCA0VjIwSDZWOC44TDEwLjggNEgxOE0xOCAySDEwTDQgOFYyMEM0IDIxLjEgNC45IDIyIDYgMjJIMThDMTkuMSAyMiAyMCAyMS4xIDIwIDIwVjRDMjAgMi45IDE5LjEgMiAxOCAyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbU9mZiA9IFwiTTIwLjg0IDIyLjczTDE5LjQ2IDIxLjM1QzE5LjEgMjEuNzUgMTguNTggMjIgMTggMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMFY4TDUuMDYgNi45NUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIwIDRDMjAgMi45IDE5LjExIDIgMTggMkgxMEw3LjYgNC40TDIwIDE2LjhWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaW1PZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w1LjA2IDYuOTVMNCA4VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE4LjU4IDIyIDE5LjEgMjEuNzUgMTkuNDYgMjEuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTggMjBINlY4LjgzTDYuNDcgOC4zNkwxOCAxOS44OVYyME0xMC44MyA0SDE4VjE0LjhMMjAgMTYuOFY0QzIwIDIuOSAxOS4xMSAyIDE4IDJIMTBMNy42IDQuNEw5IDUuODFMMTAuODMgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTaW1PdXRsaW5lID0gXCJNMTggNFYyMEg2VjguOEwxMC44IDRIMThNMTggMkgxMEw0IDhWMjBDNCAyMS4xIDQuOSAyMiA2IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFY0QzIwIDIuOSAxOS4xIDIgMTggMk05LjUgMTlINy41VjE3SDkuNVYxOU0xNi41IDE5SDE0LjVWMTdIMTYuNVYxOU05LjUgMTVINy41VjExSDkuNVYxNU0xMyAxOUgxMVYxNUgxM1YxOU0xMyAxM0gxMVYxMUgxM1YxM00xNi41IDE1SDE0LjVWMTFIMTYuNVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaW1wbGVJY29ucyA9IFwiTTE4LjI1IDE3QzE4LjI1IDE3Ljg4IDE4LjA3IDE4Ljc0IDE3LjcxIDE5LjUzSDE2LjMxQzE3LjcxIDE3LjE1IDE2LjkxIDE0LjA5IDE0LjUzIDEyLjY5QzEzLjc2IDEyLjI0IDEyLjg5IDEyIDEyIDEyQzkuMjQgMTIgNyA5Ljc2IDcgN0M3IDQuMjQgOS4yNCAyIDEyIDJDMTQuNzYgMiAxNyA0LjI0IDE3IDdIMTUuNzVDMTUuNzUgNC45MyAxNC4wNyAzLjI1IDEyIDMuMjVDOS45MyAzLjI1IDguMjUgNC45MyA4LjI1IDdDOC4yNSA5LjA3IDkuOTMgMTAuNzUgMTIgMTAuNzVDMTUuNDUgMTAuNzUgMTguMjUgMTMuNTYgMTguMjUgMTdNNi4yOSAxOS41M0M1LjkzIDE4Ljc0IDUuNzUgMTcuODcgNS43NSAxN0g3QzcgMTcuOTMgNy4yNSAxOC43OSA3LjY5IDE5LjUzSDYuMjlNMTguMjUgMjAuNzVWMjJINS43NVYyMC43NUg5LjVWMTUuNzVIOC4yNVYxNC41SDE1Ljc1VjE1Ljc1SDE0LjVWMjAuNzVIMTguMjVNMTMuMjUgMTUuNzVIMTAuNzVWMjAuNzVIMTMuMjVWMTUuNzVNMTQuNDQgNy4wN0MxNC40IDguNCAxMy4zMyA5LjQ3IDEyIDkuNUMxMC42MiA5LjQ2IDkuNTMgOC4zMiA5LjU3IDYuOTRDOS42IDUuNjEgMTAuNjcgNC41MyAxMiA0LjVDMTMuMzggNC41NCAxNC40NyA1LjY4IDE0LjQ0IDcuMDdNMTMuMjUgN0MxMy4yNSA2LjMxIDEyLjY5IDUuNzUgMTIgNS43NUMxMS4zMSA1Ljc1IDEwLjc1IDYuMzEgMTAuNzUgN0MxMC43NSA3LjY5IDExLjMxIDguMjUgMTIgOC4yNUMxMi42OSA4LjI1IDEzLjI1IDcuNjkgMTMuMjUgN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTaW5hV2VpYm8gPSBcIk05LjgyLDEzLjg3QzEwLjg5LDEzLjg3IDExLjc3LDE0Ljc0IDExLjc3LDE1LjgyQTEuOTUsMS45NSAwIDAsMSA5LjgyLDE3Ljc3QzguNzQsMTcuNzcgNy44NywxNi44OSA3Ljg3LDE1LjgyQzcuODcsMTQuNzQgOC43NCwxMy44NyA5LjgyLDEzLjg3TTE0LjUsMy4zNEwxNS4xOCwzLjMxQzE4Ljk0LDMuMzEgMjIsNi4zNyAyMiwxMC4xM0wyMS45NSwxMC45NUwyMC43NiwxMC41OEwyMC43OCwxMC4xM0MyMC43OCw3LjA0IDE4LjI3LDQuNTMgMTUuMTgsNC41M0wxNC44Myw0LjU0TDE0LjUsMy4zNE0xNS4zMiw2LjIzQzE3LjM4LDYuMyAxOS4wNSw4IDE5LjA4LDEwLjA2TDE3Ljg0LDkuNjhDMTcuNjUsOC41NiAxNi43OCw3LjY4IDE1LjY3LDcuNUwxNS4zMiw2LjIzTTIsMTUuNDFDMS45NywxNC44IDIuMDcsMTIuNjQgNC45NSw5Ljk3QzguMzUsNi44MSA5LjgyLDcuMDUgOS44Miw3LjA1QzkuODIsNy4wNSAxMyw2Ljc1IDExLjA2LDEwLjQ2SDExLjEzQzExLjYsOS45NiAxMi42Miw5LjIxIDE0LjY5LDlDMTYuNzcsOC43OSAxNi43NywxMC41IDE2LjUsMTEuN0MxOC4zOCwxMi42NCAxOS41NiwxNC4wMyAxOS41NiwxNS41OEMxOS41NiwxOC40IDE1LjYzLDIwLjY5IDEwLjc4LDIwLjY5SDEwLjY1TDEwLjUsMjAuNjlDNywyMC42OSA0LDE5LjQyIDIuNzEsMTcuNTlDMi4yNSwxNi45NyAyLDE2LjI5IDIsMTUuNThWMTUuNDFNOS44MiwxMS45MkM2LjU5LDExLjkyIDMuOTcsMTMuNjcgMy45NywxNS44MkMzLjk3LDE3Ljk3IDYuNTksMTkuNzIgOS44MiwxOS43MkMxMy4wNSwxOS43MiAxNS42NywxNy45NyAxNS42NywxNS44MkMxNS42NywxMy42NyAxMy4wNSwxMS45MiA5LjgyLDExLjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpbmVXYXZlID0gXCJNMTYuNSwyMUMxMy41LDIxIDEyLjMxLDE2Ljc2IDExLjA1LDEyLjI4QzEwLjE0LDkuMDQgOSw1IDcuNSw1QzQuMTEsNSA0LDExLjkzIDQsMTJIMkMyLDExLjYzIDIuMDYsMyA3LjUsM0MxMC41LDMgMTEuNzEsNy4yNSAxMi45NywxMS43NEMxMy44MywxNC44IDE1LDE5IDE2LjUsMTlDMTkuOTQsMTkgMjAuMDMsMTIuMDcgMjAuMDMsMTJIMjIuMDNDMjIuMDMsMTIuMzcgMjEuOTcsMjEgMTYuNSwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaXRlbWFwID0gXCJNOSwyVjhIMTFWMTFINUMzLjg5LDExIDMsMTEuODkgMywxM1YxNkgxVjIySDdWMTZINVYxM0gxMVYxNkg5VjIySDE1VjE2SDEzVjEzSDE5VjE2SDE3VjIySDIzVjE2SDIxVjEzQzIxLDExLjg5IDIwLjExLDExIDE5LDExSDEzVjhIMTVWMkg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpemVMID0gXCJNOSA3VjE3SDE1VjE1SDExVjdIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTaXplTSA9IFwiTTkgN0M3LjkgNyA3IDcuOSA3IDlWMTdIOVY5SDExVjE2SDEzVjlIMTVWMTdIMTdWOUMxNyA3LjkgMTYuMTEgNyAxNSA3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVMgPSBcIk0xMSA3QzkuOSA3IDkgNy45IDkgOVYxMUM5IDEyLjExIDkuOSAxMyAxMSAxM0gxM1YxNUg5VjE3SDEzQzE0LjExIDE3IDE1IDE2LjExIDE1IDE1VjEzQzE1IDExLjkgMTQuMTEgMTEgMTMgMTFIMTFWOUgxNVY3SDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpemVYbCA9IFwiTTYgN0g4TDkgOS41TDEwIDdIMTJMMTAgMTJMMTIgMTdIMTBMOSAxNC41TDggMTdINkw4IDEyTDYgN00xMyA3SDE1VjE1SDE5VjE3SDEzVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVhzID0gXCJNNiA3SDhMOSA5LjVMMTAgN0gxMkwxMCAxMkwxMiAxN0gxMEw5IDE0LjVMOCAxN0g2TDggMTJMNiA3TTE1IDdIMTlWOUgxNVYxMUgxN0MxOC4xMSAxMSAxOSAxMS45IDE5IDEzVjE1QzE5IDE2LjExIDE4LjExIDE3IDE3IDE3SDEzVjE1SDE3VjEzSDE1QzEzLjkgMTMgMTMgMTIuMTEgMTMgMTFWOUMxMyA3LjkgMTMuOSA3IDE1IDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVh4bCA9IFwiTTkgN0gxMUwxMiA5LjVMMTMgN0gxNUwxMyAxMkwxNSAxN0gxM0wxMiAxNC41TDExIDE3SDlMMTEgMTJMOSA3TTE2IDdIMThWMTVIMjJWMTdIMTZWN00yIDdINEw1IDkuNUw2IDdIOEw2IDEyTDggMTdINkw1IDE0LjVMNCAxN0gyTDQgMTJMMiA3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNpemVYeHMgPSBcIk05IDdIMTFMMTIgOS41TDEzIDdIMTVMMTMgMTJMMTUgMTdIMTNMMTIgMTQuNUwxMSAxN0g5TDExIDEyTDkgN00xOCA3SDIyVjlIMThWMTFIMjBDMjEuMTEgMTEgMjIgMTEuOSAyMiAxM1YxNUMyMiAxNi4xMSAyMS4xMSAxNyAyMCAxN0gxNlYxNUgyMFYxM0gxOEMxNi45IDEzIDE2IDEyLjExIDE2IDExVjlDMTYgNy45IDE2LjkgNyAxOCA3TTIgN0g0TDUgOS41TDYgN0g4TDYgMTJMOCAxN0g2TDUgMTQuNUw0IDE3SDJMNCAxMkwyIDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2l6ZVh4eGwgPSBcIk05IDdIMTFMMTIgOS41TDEzIDdIMTVMMTMgMTJMMTUgMTdIMTNMMTIgMTQuNUwxMSAxN0g5TDExIDEyTDkgN00xNiA3SDE4VjE1SDIyVjE3SDE2VjdNOCAxNUM4IDE2LjExIDcuMTEgMTcgNiAxN0gyVjE1SDZWMTNINFYxMUg2VjlIMlY3SDZDNy4xIDcgOCA3Ljg5IDggOVYxMC41QzggMTEuMzMgNy4zMyAxMiA2LjUgMTJDNy4zMyAxMiA4IDEyLjY3IDggMTMuNVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2F0ZSA9IFwiTTIxLjEsMTYuNUMyMC4zNiwxNi4xNyAxOS41LDE2LjUgMTkuMTksMTcuMjZDMTkuMDYsMTcuNTggMTguOCwxNy44NyAxOC41LDE4SDNWMjFIMTcuOTdDMTkuNjgsMjEgMjEuMjIsMjAgMjEuODgsMTguNDFDMjIuMiwxNy42NyAyMS44NiwxNi44MSAyMS4xLDE2LjVNMTksMTVDMTksMTUgMTksMTYgMTcsMTZDMTUsMTYgNCwxNiA0LDE2VjNIMTFMMTEuMjEsNC41SDkuMjRWNkgxMS40M0wxMS42NCw3LjVIOS4yNFY5SDExLjg2TDEyLDEwSDE0QzE0LDEwIDE5LDEwIDE5LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrYXRlYm9hcmQgPSBcIk05IDE0LjVDOSAxNS4zMyA4LjMzIDE2IDcuNSAxNlM2IDE1LjMzIDYgMTQuNSA2LjY3IDEzIDcuNSAxMyA5IDEzLjY3IDkgMTQuNU0xNi41IDEzQzE1LjY3IDEzIDE1IDEzLjY3IDE1IDE0LjVTMTUuNjcgMTYgMTYuNSAxNkMxNy4zMyAxNiAxOCAxNS4zMyAxOCAxNC41UzE3LjMzIDEzIDE2LjUgMTNNMjEuNTkgOS4xOUMyMS4xNCA4Ljg3IDIwLjUgOC45NyAyMC4xOSA5LjQxTDIwLjA2IDkuNTlDMTkuODggOS44NSAxOS41NyAxMCAxOS4yNiAxMEw0Ljc0IDEwQzQuNDMgMTAgNC4xMyA5Ljg1IDMuOTQgOS41OUwzLjgxIDkuNDFDMy41IDguOTcgMi44NiA4Ljg3IDIuNDEgOS4xOUMxLjk2IDkuNSAxLjg3IDEwLjE1IDIuMTkgMTAuNTlMMi4zMiAxMC43N0MyLjg4IDExLjU0IDMuNzkgMTIgNC43NCAxMkgxOS4yNkMyMC4yMSAxMiAyMS4xMiAxMS41NCAyMS42OCAxMC43N0wyMS44MSAxMC41OUMyMi4xMyAxMC4xNSAyMi4wNCA5LjUgMjEuNTkgOS4xOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2V3TGVzcyA9IFwiTTE3LjUsMTFMMTUuNDEsMjBIMTAuNUwxMi41OSwxMUgxNy41TTIwLDlIMTFMOCwyMkgxN0wyMCw5TTQsNkw4LDJWNUgxNlY3SDhWMTBMNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrZXdNb3JlID0gXCJNMTIuNSwxMUwxMC40MSwyMEg1LjVMNy41OSwxMUgxMi41TTE1LDlINkwzLDIySDEyTDE1LDlNMjEsNkwxNywyVjVIOVY3SDE3VjEwTDIxLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpID0gXCJNMTUuMyAxOC4zTDE3IDEyLjlMMTguNCAxMy4zTDE2LjcgMTguN0wxNS4zIDE4LjNNMTcuMyA1LjJDMTguMiA1LjIgMTkgNC40IDE5IDMuNVMxOC4zIDEuOCAxNy4zIDEuOEMxNi40IDEuOCAxNS42IDIuNiAxNS42IDMuNVMxNi40IDUuMiAxNy4zIDUuMk0yMS4zIDE5LjhDMjAuNyAyMC4xIDIwLjEgMjAuNCAxOS40IDIwLjVDMTguNyAyMC42IDE4IDIwLjYgMTcuMyAyMC40TDExIDE4LjVMMTMuNCAxMS43TDEwLjkgOC43TDEzLjggNy4xQzEzLjggNy4xIDE0LjkgMTAgMTUgMTAuM1MxNS4zIDEwLjggMTUuNiAxMC45TDE5LjcgMTIuMUwyMC4yIDEwLjNMMTkuMyA5LjlMMTkuOSA3LjhMMTguNSA3LjRMMTggOS40TDE2LjggOC45TDE1LjQgNUMxNSA0LjIgMTQgMy44IDEzLjEgNC4yTDguNSA2LjdDNy42IDcuMiA3LjMgOC4zIDcuOCA5LjFDNy45IDkuMyAxMC44IDEyLjMgMTAuOCAxMi4zTDkuMSAxOEwyLjMgMTZMMiAxNy4zTDE2LjkgMjEuN0MxOC42IDIyLjIgMjAuNCAyMiAyMiAyMS4xTDIxLjMgMTkuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lDcm9zc0NvdW50cnkgPSBcIk0xNSAxLjJDMTYgMS4yIDE2LjggMiAxNi44IDNTMTYgNC44IDE1IDQuOCAxMy4yIDQgMTMuMiAzIDE0IDEuMiAxNSAxLjJNMTEgMjNWMjEuN0g5LjNMMTEuNyAxNC45TDE0IDE4VjIxLjdIMTNWMjNIMjBWMjEuN0gxNS44VjE2LjVMMTMuMyAxMkwxNCA5LjJMMTUuMSAxMUgyMFY5LjFIMTYuNEwxNC40IDUuOEMxNC4xIDUuMyAxMy41IDUgMTIuOSA1QzEyLjcgNSAxMi42IDUuMSAxMi40IDUuMUw3IDYuOFYxMkg4LjhWOC4zTDExIDcuN0w3LjQgMjEuN0g0VjIzXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpV2F0ZXIgPSBcIk00LjIgMy41QzQuMiAyLjcgNC45IDEuOSA1LjggMS45QzYuNyAxLjkgNy40IDIuNiA3LjQgMy41UzYuNiA1IDUuOCA1IDQuMiA0LjMgNC4yIDMuNU0yMiAzLjlMMjEuNSAzTDEzLjUgNy4xTDE0IDhMMjIgMy45TTIwLjggMjAuM0wyMS43IDIxLjJDMjEuMSAyMS44IDIwLjUgMjIuMiAxOS44IDIyLjVTMTguMyAyMyAxNy41IDIzSDJWMjEuN0g0LjdMNi44IDE4LjJMNC41IDE1TDMuNyA3LjJDMy43IDYuMyA0LjUgNS41IDUuNCA1LjVDNS43IDUuNSA2IDUuNiA2LjIgNS43TDkuNyA4LjNMMTIgNy41TDEyLjggOS4xTDkuMyAxMC42QzkuMiAxMC41IDcuNyA5LjQgNi42IDguNUw3IDEyTDEyLjMgMTYuNUwxNCAyMS43SDE3LjVDMTguMSAyMS43IDE4LjcgMjEuNiAxOS4zIDIxLjNDMTkuOSAyMS4xIDIwLjQgMjAuNyAyMC44IDIwLjNNNyAyMS43SDEyTDEwLjQgMTcuOEw4LjEgMTUuOUw5LjMgMTguNEw3IDIxLjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpcEJhY2t3YXJkID0gXCJNMjAsNVYxOUwxMywxMk02LDVWMTlINFY1TTEzLDVWMTlMNiwxMlwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBCYWNrd2FyZE91dGxpbmUgPSBcIk0xOCwxNC4xN0wxNS44MywxMkwxOCw5LjgzVjE0LjE3TTIwLDE5VjVMMTMsMTJNNCwxOUg2VjVINE0xMSwxNC4xN0w4LjgzLDEyTDExLDkuODNWMTQuMTdNMTMsMTlWNUw2LDEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2tpcEZvcndhcmQgPSBcIk00LDVWMTlMMTEsMTJNMTgsNVYxOUgyMFY1TTExLDVWMTlMMTgsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwRm9yd2FyZE91dGxpbmUgPSBcIk02LDkuODNMOC4xNywxMkw2LDE0LjE3VjkuODNNNCw1VjE5TDExLDEyTTIwLDVIMThWMTlIMjBNMTMsOS44M0wxNS4xNywxMkwxMywxNC4xN1Y5LjgzTTExLDVWMTlMMTgsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwTmV4dCA9IFwiTTE2LDE4SDE4VjZIMTZNNiwxOEwxNC41LDEyTDYsNlYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwTmV4dENpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTgsOEwxMywxMkw4LDE2TTE0LDhIMTZWMTZIMTRcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwTmV4dENpcmNsZU91dGxpbmUgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xMiw0QzE2LjQxLDQgMjAsNy41OSAyMCwxMkMyMCwxNi40MSAxNi40MSwyMCAxMiwyMEM3LjU5LDIwIDQsMTYuNDEgNCwxMkM0LDcuNTkgNy41OSw0IDEyLDRNOCw4VjE2TDEzLDEyTTE0LDhWMTZIMTZWOFwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBOZXh0T3V0bGluZSA9IFwiTTYsMThMMTQuNSwxMkw2LDZNOCw5Ljg2TDExLjAzLDEyTDgsMTQuMTRNMTYsNkgxOFYxOEgxNlwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBQcmV2aW91cyA9IFwiTTYsMThWNkg4VjE4SDZNOS41LDEyTDE4LDZWMThMOS41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNraXBQcmV2aW91c0NpcmNsZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTgsOEgxMFYxNkg4TTE2LDhWMTZMMTEsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwUHJldmlvdXNDaXJjbGVPdXRsaW5lID0gXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsNEM3LjU5LDQgNCw3LjU5IDQsMTJDNCwxNi40MSA3LjU5LDIwIDEyLDIwQzE2LjQxLDIwIDIwLDE2LjQxIDIwLDEyQzIwLDcuNTkgMTYuNDEsNCAxMiw0TTE2LDhWMTZMMTEsMTJNMTAsOFYxNkg4VjhcIjtcclxuZXhwb3J0IHZhciBtZGlTa2lwUHJldmlvdXNPdXRsaW5lID0gXCJNNiw2SDhWMThINk05LjUsMTJMMTgsMThWNk0xNiwxNC4xNEwxMi45NywxMkwxNiw5Ljg2VjE0LjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrdWxsID0gXCJNMTIsMkE5LDkgMCAwLDAgMywxMUMzLDE0LjAzIDQuNTMsMTYuODIgNywxOC40N1YyMkg5VjE5SDExVjIySDEzVjE5SDE1VjIySDE3VjE4LjQ2QzE5LjQ3LDE2LjgxIDIxLDE0IDIxLDExQTksOSAwIDAsMCAxMiwyTTgsMTFBMiwyIDAgMCwxIDEwLDEzQTIsMiAwIDAsMSA4LDE1QTIsMiAwIDAsMSA2LDEzQTIsMiAwIDAsMSA4LDExTTE2LDExQTIsMiAwIDAsMSAxOCwxM0EyLDIgMCAwLDEgMTYsMTVBMiwyIDAgMCwxIDE0LDEzQTIsMiAwIDAsMSAxNiwxMU0xMiwxNEwxMy41LDE3SDEwLjVMMTIsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2t1bGxDcm9zc2JvbmVzID0gXCJNMTUuOCwxOC41TDIxLjgsMjAuMUwyMS40LDIyTDEyLDE5LjVMMi42LDIyTDIuMSwyMC4xTDguMSwxOC41TDIsMTYuOUwyLjUsMTVMMTEuOSwxNy41TDIxLjMsMTVMMjEuOCwxNi45TDE1LjgsMTguNU0xOCw4QzE4LDkuOCAxNy4yLDExLjMgMTYsMTIuNFYxNUgxNFYxMy43TDE0LDEzSDEzVjE1SDExVjEzSDEwVjEzLjdMMTAsMTVIOFYxMi40QzYuOCwxMS4zIDYsOS44IDYsOEE2LDYgMCAwLDEgMTIsMkE2LDYgMCAwLDEgMTgsOE0xMSw3LjVDMTEsNi43IDEwLjMsNiA5LjUsNkM4LjcsNiA4LDYuNyA4LDcuNUM4LDguMyA4LjcsOSA5LjUsOUMxMC4zLDkgMTEsOC4zIDExLDcuNU0xMywxMUwxMiw5TDExLDExSDEzTTE2LDcuNUMxNiw2LjcgMTUuMyw2IDE0LjUsNkMxMy43LDYgMTMsNi43IDEzLDcuNUMxMyw4LjMgMTMuNyw5IDE0LjUsOUMxNS4zLDkgMTYsOC4zIDE2LDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTa3VsbENyb3NzYm9uZXNPdXRsaW5lID0gXCJNMTUuOCwxOC41TDIxLjgsMjAuMUwyMS40LDIyTDEyLDE5LjVMMi42LDIyTDIuMSwyMC4xTDguMSwxOC41TDIsMTYuOUwyLjUsMTVMMTEuOSwxNy41TDIxLjMsMTVMMjEuOCwxNi45TDE1LjgsMTguNU05LjUsNkM4LjcsNiA4LDYuNyA4LDcuNUM4LDguMyA4LjcsOSA5LjUsOUMxMC4zLDkgMTEsOC4zIDExLDcuNUMxMSw2LjcgMTAuMyw2IDkuNSw2TTE0LjUsNkMxMy43LDYgMTMsNi43IDEzLDcuNUMxMyw4LjMgMTMuNyw5IDE0LjUsOUMxNS4zLDkgMTYsOC4zIDE2LDcuNUMxNiw2LjcgMTUuMyw2IDE0LjUsNk0xMywxMUwxMiw5TDExLDExSDEzTTEyLDFDOC4xLDEgNSw0LjEgNSw4QzUsOS45IDUuOCwxMS42IDcsMTIuOVYxNkgxN1YxMi45QzE4LjIsMTEuNiAxOSw5LjkgMTksOEMxOSw0LjEgMTUuOSwxIDEyLDFNMTUsMTJWMTRIMTRWMTJIMTNWMTRIMTFWMTJIMTBWMTRIOVYxMkg5QzcuOCwxMS4xIDcsOS43IDcsOEM3LDUuMiA5LjIsMyAxMiwzQzE0LjgsMyAxNyw1LjIgMTcsOEMxNyw5LjYgMTYuMiwxMS4xIDE1LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrdWxsT3V0bGluZSA9IFwiTTgsMTVBMiwyIDAgMCwxIDYsMTNBMiwyIDAgMCwxIDgsMTFBMiwyIDAgMCwxIDEwLDEzQTIsMiAwIDAsMSA4LDE1TTEwLjUsMTdMMTIsMTRMMTMuNSwxN0gxMC41TTE2LDE1QTIsMiAwIDAsMSAxNCwxM0EyLDIgMCAwLDEgMTYsMTFBMiwyIDAgMCwxIDE4LDEzQTIsMiAwIDAsMSAxNiwxNU0yMiwxMUExMCwxMCAwIDAsMCAxMiwxQTEwLDEwIDAgMCwwIDIsMTFDMiwxMy44IDMuMiwxNi4zIDUsMTguMVYyMkgxOVYxOC4xQzIwLjgsMTYuMyAyMiwxMy44IDIyLDExTTE3LDIwSDE1VjE4SDEzVjIwSDExVjE4SDlWMjBIN1YxNy4yQzUuMiwxNS43IDQsMTMuNSA0LDExQTgsOCAwIDAsMSAxMiwzQTgsOCAwIDAsMSAyMCwxMUMyMCwxMy41IDE4LjgsMTUuOCAxNywxNy4yVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNrdWxsU2NhbiA9IFwiTTIgMEMuOSAwIDAgLjkgMCAyVjZIMlYySDZWMEgyTTE4IDBWMkgyMlY2SDI0VjJDMjQgLjkgMjMuMSAwIDIyIDBIMThNMTIgM0M3LjYgMyA0IDYuNiA0IDExQzQgMTMuNSA1LjIgMTUuOCA3IDE3LjJWMjFIOVYxOEgxMVYyMUgxM1YxOEgxNVYyMUgxN1YxNy4yQzE4LjggMTUuNyAyMCAxMy41IDIwIDExQzIwIDYuNiAxNi40IDMgMTIgM004IDE0QzYuOSAxNCA2IDEzLjEgNiAxMlM2LjkgMTAgOCAxMCAxMCAxMC45IDEwIDEyIDkuMSAxNCA4IDE0TTEwLjUgMTZMMTIgMTNMMTMuNSAxNkgxMC41TTE2IDE0QzE0LjkgMTQgMTQgMTMuMSAxNCAxMlMxNC45IDEwIDE2IDEwIDE4IDEwLjkgMTggMTIgMTcuMSAxNCAxNiAxNE0wIDE4VjIyQzAgMjMuMSAuOSAyNCAyIDI0SDZWMjJIMlYxOEgwTTIyIDE4VjIySDE4VjI0SDIyQzIzLjEgMjQgMjQgMjMuMSAyNCAyMlYxOEgyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTa3VsbFNjYW5PdXRsaW5lID0gXCJNMiAwQy45IDAgMCAuOSAwIDJWNkgyVjJINlYwSDJNMTggMFYySDIyVjZIMjRWMkMyNCAuOSAyMy4xIDAgMjIgMEgxOE05LjUgMTNDOC43IDEzIDggMTIuMyA4IDExLjVTOC43IDEwIDkuNSAxMCAxMSAxMC43IDExIDExLjUgMTAuMyAxMyA5LjUgMTNNMTEgMTVMMTIgMTNMMTMgMTVIMTFNMTQuNSAxM0MxMy43IDEzIDEzIDEyLjMgMTMgMTEuNVMxMy43IDEwIDE0LjUgMTAgMTYgMTAuNyAxNiAxMS41IDE1LjMgMTMgMTQuNSAxM00wIDE4VjIyQzAgMjMuMSAuOSAyNCAyIDI0SDZWMjJIMlYxOEgwTTIyIDE4VjIySDE4VjI0SDIyQzIzLjEgMjQgMjQgMjMuMSAyNCAyMlYxOEgyMk0xMiAzQzcuNiAzIDQgNi42IDQgMTFDNCAxMyA0LjggMTQuOSA2IDE2LjNWMjFIMThWMTYuM0MxOS4yIDE0LjkgMjAgMTMuMSAyMCAxMUMyMCA2LjYgMTYuNCAzIDEyIDNNMTYgMTUuNFYxOUgxNFYxN0gxM1YxOUgxMVYxN0gxMFYxOUg4VjE1LjRDNi44IDE0LjMgNiAxMi43IDYgMTFDNiA3LjcgOC43IDUgMTIgNVMxOCA3LjcgMTggMTFDMTggMTIuOCAxNy4yIDE0LjMgMTYgMTUuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTa3lwZSA9IFwiTTE4LDZDMjAuMDcsOC4wNCAyMC44NSwxMC44OSAyMC4zNiwxMy41NUMyMC43NywxNC4yNyAyMSwxNS4xMSAyMSwxNkE1LDUgMCAwLDEgMTYsMjFDMTUuMTEsMjEgMTQuMjcsMjAuNzcgMTMuNTUsMjAuMzZDMTAuODksMjAuODUgOC4wNCwyMC4wNyA2LDE4QzMuOTMsMTUuOTYgMy4xNSwxMy4xMSAzLjY0LDEwLjQ1QzMuMjMsOS43MyAzLDguODkgMyw4QTUsNSAwIDAsMSA4LDNDOC44OSwzIDkuNzMsMy4yMyAxMC40NSwzLjY0QzEzLjExLDMuMTUgMTUuOTYsMy45MyAxOCw2TTEyLjA0LDE3LjE2QzE0LjkxLDE3LjE2IDE2LjM0LDE1Ljc4IDE2LjM0LDEzLjkyQzE2LjM0LDEyLjczIDE1Ljc4LDExLjQ2IDEzLjYxLDEwLjk3TDExLjYyLDEwLjUzQzEwLjg2LDEwLjM2IDEwLDEwLjEzIDEwLDkuNDJDMTAsOC43IDEwLjYsOC4yIDExLjcsOC4yQzEzLjkzLDguMiAxMy43Miw5LjczIDE0LjgzLDkuNzNDMTUuNDEsOS43MyAxNS45MSw5LjM5IDE1LjkxLDguOEMxNS45MSw3LjQzIDEzLjcyLDYuNCAxMS44Niw2LjRDOS44NSw2LjQgNy43LDcuMjYgNy43LDkuNTRDNy43LDEwLjY0IDguMDksMTEuODEgMTAuMjUsMTIuMzVMMTIuOTQsMTMuMDNDMTMuNzUsMTMuMjMgMTMuOTUsMTMuNjggMTMuOTUsMTQuMUMxMy45NSwxNC43OCAxMy4yNywxNS40NSAxMi4wNCwxNS40NUM5LjYzLDE1LjQ1IDkuOTYsMTMuNiA4LjY3LDEzLjZDOC4wOSwxMy42IDcuNjcsMTQgNy42NywxNC41N0M3LjY3LDE1LjY4IDksMTcuMTYgMTIuMDQsMTcuMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2t5cGVCdXNpbmVzcyA9IFwiTTEyLjAzLDE2LjUzQzkuMzcsMTYuNTMgOC4xOCwxNS4yMiA4LjE4LDE0LjI0QzguMTgsMTMuNzQgOC41NSwxMy4zOCA5LjA2LDEzLjM4QzEwLjIsMTMuMzggOS45MSwxNSAxMi4wMywxNUMxMy4xMiwxNSAxMy43MywxNC40MyAxMy43MywxMy44MkMxMy43MywxMy40NiAxMy41NSwxMy4wNiAxMi44MywxMi44OEwxMC40NiwxMi4yOUM4LjU1LDExLjgxIDguMiwxMC43OCA4LjIsOS44MUM4LjIsNy43OSAxMC4xLDcuMDMgMTEuODgsNy4wM0MxMy41LDcuMDMgMTUuNDYsNy45NCAxNS40Niw5LjE1QzE1LjQ2LDkuNjcgMTUsOS45NyAxNC41LDkuOTdDMTMuNSw5Ljk3IDEzLjcsOC42MiAxMS43NCw4LjYyQzEwLjc3LDguNjIgMTAuMjMsOS4wNiAxMC4yMyw5LjY5QzEwLjIzLDEwLjMyIDExLDEwLjUgMTEuNjYsMTAuNjhMMTMuNDIsMTEuMDdDMTUuMzQsMTEuNSAxNS44MywxMi42MiAxNS44MywxMy42N0MxNS44MywxNS4zMSAxNC41NywxNi41MyAxMi4wMywxNi41M00xOCw2QzIwLjA3LDguMDQgMjAuODUsMTAuODkgMjAuMzYsMTMuNTVDMjAuNzcsMTQuMjcgMjEsMTUuMTEgMjEsMTZBNSw1IDAgMCwxIDE2LDIxQzE1LjExLDIxIDE0LjI3LDIwLjc3IDEzLjU1LDIwLjM2QzEwLjg5LDIwLjg1IDguMDQsMjAuMDcgNiwxOEMzLjkzLDE1Ljk2IDMuMTUsMTMuMTEgMy42NCwxMC40NUMzLjIzLDkuNzMgMyw4Ljg5IDMsOEE1LDUgMCAwLDEgOCwzQzguODksMyA5LjczLDMuMjMgMTAuNDUsMy42NEMxMy4xMSwzLjE1IDE1Ljk2LDMuOTMgMTgsNk04LDVBMywzIDAgMCwwIDUsOEM1LDguNzkgNS4zLDkuNSA1LjgsMTAuMDRDNS4xLDEyLjI4IDUuNjMsMTQuODIgNy40LDE2LjZDOS4xOCwxOC4zNyAxMS43MiwxOC45IDEzLjk2LDE4LjJDMTQuNSwxOC43IDE1LjIxLDE5IDE2LDE5QTMsMyAwIDAsMCAxOSwxNkMxOSwxNS4yMSAxOC43LDE0LjUgMTguMiwxMy45NkMxOC45LDExLjcyIDE4LjM3LDkuMTggMTYuNiw3LjRDMTQuODIsNS42MyAxMi4yOCw1LjEgMTAuMDQsNS44QzkuNSw1LjMgOC43OSw1IDgsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbGFjayA9IFwiTTYsMTVBMiwyIDAgMCwxIDQsMTdBMiwyIDAgMCwxIDIsMTVBMiwyIDAgMCwxIDQsMTNINlYxNU03LDE1QTIsMiAwIDAsMSA5LDEzQTIsMiAwIDAsMSAxMSwxNVYyMEEyLDIgMCAwLDEgOSwyMkEyLDIgMCAwLDEgNywyMFYxNU05LDdBMiwyIDAgMCwxIDcsNUEyLDIgMCAwLDEgOSwzQTIsMiAwIDAsMSAxMSw1VjdIOU05LDhBMiwyIDAgMCwxIDExLDEwQTIsMiAwIDAsMSA5LDEySDRBMiwyIDAgMCwxIDIsMTBBMiwyIDAgMCwxIDQsOEg5TTE3LDEwQTIsMiAwIDAsMSAxOSw4QTIsMiAwIDAsMSAyMSwxMEEyLDIgMCAwLDEgMTksMTJIMTdWMTBNMTYsMTBBMiwyIDAgMCwxIDE0LDEyQTIsMiAwIDAsMSAxMiwxMFY1QTIsMiAwIDAsMSAxNCwzQTIsMiAwIDAsMSAxNiw1VjEwTTE0LDE4QTIsMiAwIDAsMSAxNiwyMEEyLDIgMCAwLDEgMTQsMjJBMiwyIDAgMCwxIDEyLDIwVjE4SDE0TTE0LDE3QTIsMiAwIDAsMSAxMiwxNUEyLDIgMCAwLDEgMTQsMTNIMTlBMiwyIDAgMCwxIDIxLDE1QTIsMiAwIDAsMSAxOSwxN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTbGFzaEZvcndhcmQgPSBcIk03IDIxTDE0LjkgM0gxN0w5LjEgMjFIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTbGFzaEZvcndhcmRCb3ggPSBcIk0xOSAzSDVDMy45IDMgMyAzLjkgMyA1VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNUMyMSAzLjkgMjAuMSAzIDE5IDNNOS4zIDE5SDdMMTQuNyA1SDE3TDkuMyAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbGVlcCA9IFwiTTIzLDEySDE3VjEwTDIwLjM5LDZIMTdWNEgyM1Y2TDE5LjYyLDEwSDIzVjEyTTE1LDE2SDlWMTRMMTIuMzksMTBIOVY4SDE1VjEwTDExLjYyLDE0SDE1VjE2TTcsMjBIMVYxOEw0LjM5LDE0SDFWMTJIN1YxNEwzLjYyLDE4SDdWMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2xlZXBPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIwLDIwLjcyTDE4LjczLDIyTDEyLjczLDE2SDlWMTRMOS43OSwxMy4wNkwyLDUuMjdNMjMsMTJIMTdWMTBMMjAuMzksNkgxN1Y0SDIzVjZMMTkuNjIsMTBIMjNWMTJNOS44Miw4SDE1VjEwTDEzLjU0LDExLjcyTDkuODIsOE03LDIwSDFWMThMNC4zOSwxNEgxVjEySDdWMTRMMy42MiwxOEg3VjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNsaWRlID0gXCJNMTQuODMgMTUuNDVDMTQuNDcgMTQuOSAxNC4xOCAxNC4zOSAxMy45MSAxMy45MkMxMi43NCAxMS45MSAxMS43OSAxMC41NSA5IDEwLjEzVjUuNUM5IDMuNTcgNy40MyAyIDUuNSAyUzIgMy41NyAyIDUuNVYyMkg0VjIwSDdWMjJIOVYxMi4xNkMxMC43NiAxMi41IDExLjI5IDEzLjM5IDEyLjE3IDE0LjkyQzEyLjQ2IDE1LjQzIDEyLjc4IDE1Ljk3IDEzLjE3IDE2LjU2QzE1LjQxIDE5LjkyIDE3LjY3IDIyIDIyIDIyVjIwQzE4LjUzIDIwIDE2LjggMTguNCAxNC44MyAxNS40NU01LjUgNEM2LjMzIDQgNyA0LjY3IDcgNS41VjEwSDRWNS41QzQgNC42NyA0LjY3IDQgNS41IDRNNCAxOFYxNkg3VjE4SDRNNyAxNEg0VjEySDdWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2xvcGVEb3duaGlsbCA9IFwiTTIyLDE5VjIySDJWMTNMMjIsMTlNMTkuMDksNy41TDE4LjI1LDEwLjI2TDguMTMsNy4yNkM4LjA2LDUuNjYgNi43LDQuNDIgNS4xLDQuNUMzLjUsNC41NyAyLjI2LDUuOTMgMi4zNCw3LjUzQzIuNDEsOS4xMyAzLjc3LDEwLjM2IDUuMzcsMTAuMjlDNi4yNCwxMC4yNSA3LjA1LDkuODIgNy41Nyw5LjExTDE3LjY5LDEyLjExTDE2Ljg1LDE0Ljg5TDIxLjY3LDEyLjI5TDE5LjA5LDcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbG9wZVVwaGlsbCA9IFwiTTIyLDEzVjIySDJWMTlMMjIsMTNNMjEuNjgsNy4wNkwxNi44Niw0LjQ2TDE3LjcsNy4yNEw3LjU4LDEwLjI0QzYuNjMsOC45NSA0LjgyLDguNjcgMy41Myw5LjYyQzIuMjQsMTAuNTcgMS45NiwxMi4zOCAyLjkxLDEzLjY3QzMuODUsMTQuOTcgNS42NywxNS4yNCA2Ljk2LDE0LjI5QzcuNjcsMTMuNzggOC4xLDEyLjk3IDguMTQsMTIuMDlMMTguMjYsOS4wOUwxOS4xLDExLjg3TDIxLjY4LDcuMDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU2xvdE1hY2hpbmUgPSBcIk01IDEyTDcgOFY3SDRWOEg2TDQgMTJNOSAxMkwxMSA4VjdIOFY4SDEwTDggMTJNMTMgMTJMMTUgOFY3SDEyVjhIMTRMMTIgMTJNMjEgMkMxOS45IDIgMTkgMi45IDE5IDRDMTkgNC43IDE5LjQgNS40IDIwIDUuN1YxN0gxN1YxNUMxNy42IDE1IDE4IDE0LjYgMTggMTRWNUMxOCA0LjQgMTcuNiA0IDE3IDRIMTMuMkMxMi40IDIuOCAxMSAyIDkuNSAyUzYuNiAyLjggNS44IDRIMkMxLjQgNCAxIDQuNCAxIDVWMTRDMSAxNC42IDEuNCAxNSAyIDE1VjIySDE3VjE5SDIwQzIxLjEgMTkgMjIgMTguMSAyMiAxN1Y1LjdDMjIuNiA1LjQgMjMgNC43IDIzIDRDMjMgMi45IDIyLjEgMiAyMSAyTTEzIDE5SDZWMTdIMTNWMTlNMTYgMTNIM1Y2SDE2VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNsb3RNYWNoaW5lT3V0bGluZSA9IFwiTTUgMTJMNyA4VjdINFY4SDZMNCAxMk05IDEyTDExIDhWN0g4VjhIMTBMOCAxMk0xMyAxMkwxNSA4VjdIMTJWOEgxNEwxMiAxMk0yMSAyQzE5LjkgMiAxOSAyLjkgMTkgNEMxOSA0LjcgMTkuNCA1LjQgMjAgNS43VjE3SDE3VjE1QzE3LjYgMTUgMTggMTQuNiAxOCAxNFY1QzE4IDQuNCAxNy42IDQgMTcgNEgxMy4yQzEyLjQgMi44IDExIDIgOS41IDJTNi42IDIuOCA1LjggNEgyQzEuNCA0IDEgNC40IDEgNVYxNEMxIDE0LjYgMS40IDE1IDIgMTVWMjJIMTdWMTlIMjBDMjEuMSAxOSAyMiAxOC4xIDIyIDE3VjUuN0MyMi42IDUuNCAyMyA0LjcgMjMgNEMyMyAyLjkgMjIuMSAyIDIxIDJNMyA2SDE2VjEzSDNWNk0xNSAyMEg0VjE1SDE1VjIwTTEzIDE5SDZWMTdIMTNWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU21hcnRDYXJkID0gXCJNMiAzSDIyQTIuMDcgMi4wNyAwIDAgMSAyNCA1VjE5QTIuMDcgMi4wNyAwIDAgMSAyMiAyMUgyQTIuMDcgMi4wNyAwIDAgMSAwIDE5VjVBMi4wNyAyLjA3IDAgMCAxIDIgM004IDEzLjkxQzYgMTMuOTEgMiAxNSAyIDE3VjE4SDE0VjE3QzE0IDE1IDEwIDEzLjkxIDggMTMuOTFNOCA2QTMgMyAwIDEgMCAxMSA5QTMgMyAwIDAgMCA4IDZNMTcgMTBWMTNIMjFWMTBIMTdcIjtcclxuZXhwb3J0IHZhciBtZGlTbWFydENhcmRPdXRsaW5lID0gXCJNMjIgM0gyQTIuMDcgMi4wNyAwIDAgMCAwIDVWMTlBMi4wNyAyLjA3IDAgMCAwIDIgMjFIMjJBMi4wNyAyLjA3IDAgMCAwIDI0IDE5VjVBMi4wNyAyLjA3IDAgMCAwIDIyIDNNMjIgMTlIMlY1SDIyTTE0IDE3VjE1Ljc1QzE0IDE0LjA5IDEwLjY2IDEzLjI1IDkgMTMuMjVTNCAxNC4wOSA0IDE1Ljc1VjE3SDE0TTkgN0EyLjUgMi41IDAgMSAwIDExLjUgOS41QTIuNSAyLjUgMCAwIDAgOSA3TTE1IDEwVjEzSDE5VjEwSDE1XCI7XHJcbmV4cG9ydCB2YXIgbWRpU21hcnRDYXJkUmVhZGVyID0gXCJNMjEgNEEyLjA3IDIuMDcgMCAwIDAgMTkgMkg1QTIuMDcgMi4wNyAwIDAgMCAzIDRWMThIMjFNOC4yNSAxNkg3VjZIOC4yNUM5LjkxIDYgMTAuNzUgOS4zNCAxMC43NSAxMVM5LjkxIDE2IDguMjUgMTZNMTQuNSAxMy41QTIuNSAyLjUgMCAxIDEgMTcgMTFBMi41IDIuNSAwIDAgMSAxNC41IDEzLjVNMjMgMjFWMjJIMVYyMUEyIDIgMCAwIDEgMyAxOUgyMUEyIDIgMCAwIDEgMjMgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU21hcnRDYXJkUmVhZGVyT3V0bGluZSA9IFwiTTE0LjUgOC41QTIuNSAyLjUgMCAxIDAgMTcgMTFBMi41IDIuNSAwIDAgMCAxNC41IDguNU04LjI1IDZIN1YxNkg4LjI1QzkuOTEgMTYgMTAuNzUgMTIuNjYgMTAuNzUgMTFTOS45MSA2IDguMjUgNk0xOSAySDVBMi4wNyAyLjA3IDAgMCAwIDMgNFYxOEg1VjRIMTlWMThIMjFWNEEyLjA3IDIuMDcgMCAwIDAgMTkgMk0yMyAyMkgxVjIxQTIgMiAwIDAgMSAzIDE5SDIxQTIgMiAwIDAgMSAyMyAyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbW9nID0gXCJNMTIsMkMxMC4wOCwyIDguNSwzLjM1IDguMDksNS4xNUM3LjQ1LDQuNDQgNi41Myw0IDUuNSw0QTMuNSwzLjUgMCAwLDAgMiw3LjVIMkEzLjUsMy41IDAgMCwwIDUuNSwxMUg2LjY4VjEySDEwLjcyVjExSDEzLjI4VjEySDE3LjMyVjExSDE4LjVBMy41LDMuNSAwIDAsMCAyMiw3LjVIMjJBMy41LDMuNSAwIDAsMCAxOC41LDRIMTguNUMxNy40Nyw0IDE2LjU1LDQuNDQgMTUuOTEsNS4xNUMxNS41LDMuMzUgMTMuOTIsMiAxMiwyTTcuMiwxNEw2LjQsMjJIMTFMMTAuMiwxNEg3LjJNMTMuOCwxNEwxMywyMkgxNy42TDE2LjgsMTRIMTMuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTbW9rZURldGVjdG9yID0gXCJNMTIsMThBNiw2IDAgMCwwIDE4LDEyQzE4LDguNjggMTUuMzEsNiAxMiw2QzguNjgsNiA2LDguNjggNiwxMkE2LDYgMCAwLDAgMTIsMThNMTksM0EyLDIgMCAwLDEgMjEsNVYxOUEyLDIgMCAwLDEgMTksMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlNOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2QTQsNCAwIDAsMSA4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNtb2tpbmcgPSBcIk0yLDE2SDE3VjE5SDJWMTZNMjAuNSwxNkgyMlYxOUgyMC41VjE2TTE4LDE2SDE5LjVWMTlIMThWMTZNMTguODUsNy43M0MxOS40Nyw3LjEyIDE5Ljg1LDYuMjggMTkuODUsNS4zNUMxOS44NSwzLjUgMTguMzUsMiAxNi41LDJWMy41QzE3LjUsMy41IDE4LjM1LDQuMzMgMTguMzUsNS4zNUMxOC4zNSw2LjM3IDE3LjUsNy4yIDE2LjUsNy4yVjguN0MxOC43NCw4LjcgMjAuNSwxMC41MyAyMC41LDEyLjc3VjE1SDIyVjEyLjc2QzIyLDEwLjU0IDIwLjcyLDguNjIgMTguODUsNy43M00xNi4wMywxMC4ySDE0LjVDMTMuNSwxMC4yIDEyLjY1LDkuMjIgMTIuNjUsOC4yQzEyLjY1LDcuMTggMTMuNSw2LjQ1IDE0LjUsNi40NVY0Ljk1QzEyLjY1LDQuOTUgMTEuMTUsNi40NSAxMS4xNSw4LjNBMy4zNSwzLjM1IDAgMCwwIDE0LjUsMTEuNjVIMTYuMDNDMTcuMDgsMTEuNjUgMTgsMTIuMzkgMTgsMTMuN1YxNUgxOS41VjEzLjM2QzE5LjUsMTEuNTUgMTcuOSwxMC4yIDE2LjAzLDEwLjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU21va2luZ09mZiA9IFwiTTIsNkw5LDEzSDJWMTZIMTJMMTksMjNMMjAuMjUsMjEuNzVMMy4yNSw0Ljc1TDIsNk0yMC41LDEzSDIyVjE2SDIwLjVWMTNNMTgsMTNIMTkuNVYxNkgxOFYxM00xOC44NSw0Ljg4QzE5LjQ3LDQuMjcgMTkuODUsMy40MyAxOS44NSwyLjVIMTguMzVDMTguMzUsMy41IDE3LjUsNC4zNSAxNi41LDQuMzVWNS44NUMxOC43NCw1Ljg1IDIwLjUsNy42OCAyMC41LDkuOTJWMTJIMjJWOS45MkMyMiw3LjY5IDIwLjcyLDUuNzcgMTguODUsNC44OE0xNC41LDguN0gxNi4wM0MxNy4wOCw4LjcgMTgsOS40NCAxOCwxMC43NVYxMkgxOS41VjEwLjQxQzE5LjUsOC42MSAxNy45LDcuMjUgMTYuMDMsNy4yNUgxNC41QzEzLjUsNy4yNSAxMi42NSw2LjI3IDEyLjY1LDUuMjVDMTIuNjUsNC4yMyAxMy41LDMuNSAxNC41LDMuNVYyQTMuMzUsMy4zNSAwIDAsMCAxMS4xNSw1LjM1QTMuMzUsMy4zNSAwIDAsMCAxNC41LDguN00xNywxNS45M1YxM0gxNC4wN0wxNywxNS45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTbW9raW5nUGlwZSA9IFwiTTE2IDEzQzE0Ljg5IDEzIDE0IDEzLjg5IDE0IDE1VjE4SDEzQzEyIDE4IDExIDE3LjkyIDEwLjMgMTcuMjNMNi41MyAxMy40N0M1LjYgMTIuNTMgNC4zMyAxMiAzIDEySDJWMTRIM0MzLjggMTQgNC41NiAxNC4zMiA1LjEyIDE0Ljg4TDguODkgMTguNjVDMTEuNzIgMjEuNSAxMyAyMiAxNiAyMkgxOEMyMC4yMSAyMiAyMiAyMC4yMSAyMiAxOFYxNUMyMiAxMy44OSAyMS4xMSAxMyAyMCAxM0gxNk0xNCA3LjJIMTIuNUMxMS40NSA3LjEyIDEwLjY1IDYuMjUgMTAuNjUgNS4yQzEwLjY3IDQuMjIgMTEuNSAzLjQzIDEyLjQ2IDMuNDVMMTIuNSAzLjQ1VjJDMTAuNjUgMiA5LjE1IDMuNSA5LjE1IDUuMzVTMTAuNjUgOC43IDEyLjUgOC43SDE0QzE1LjA3IDguNjYgMTUuOTYgOS41IDE2IDEwLjU2QzE2IDEwLjYxIDE2IDEwLjY1IDE2IDEwLjdWMTJIMTcuNVYxMC4zNkMxNy40MiA4LjUzIDE1Ljg4IDcuMTIgMTQuMDUgNy4yTDE0IDcuMk0yMCA5Ljc2VjEySDE4LjVWOS43N0wxOC41IDkuN0MxOC41IDcuNSAxNi43MSA1LjcgMTQuNSA1LjdWNC4ySDE0LjVDMTUuNSA0LjIgMTYuMzUgMy4zNyAxNi4zNSAyLjM1QzE2LjM1IDIuMjMgMTYuMzQgMi4xMSAxNi4zMiAySDE3Ljc5QzE3Ljg5IDMgMTcuNTggNCAxNi44MiA0LjczSDE2Ljg1QzE4Ljc4IDUuNjYgMjAgNy42MiAyMCA5Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNtb2tpbmdQaXBlT2ZmID0gXCJNMjAuODQgMjIuNzNMMTkuNzEgMjEuNkMxOS4xOSAyMS44NSAxOC42MiAyMiAxOCAyMkgxNkMxMyAyMiAxMS43MiAyMS41IDguODkgMTguNjVMNS4xMiAxNC44OEM0LjU2IDE0LjMyIDMuOCAxNCAzIDE0SDJWMTJIM0M0LjMzIDEyIDUuNiAxMi41MyA2LjUzIDEzLjQ3TDEwLjMgMTcuMjNDMTEgMTcuOTIgMTIgMTggMTMgMThIMTRWMTUuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M00yMS45MyAxOC43M0MyMS45NyAxOC41IDIyIDE4LjI1IDIyIDE4VjE1QzIyIDEzLjg5IDIxLjExIDEzIDIwIDEzSDE2LjJMMjEuOTMgMTguNzNNMTguNSA5LjdMMTguNSA5Ljc3VjEySDIwVjkuNzZDMjAgNy42MiAxOC43OCA1LjY2IDE2Ljg1IDQuNzNIMTYuODJDMTcuNTggNCAxNy45IDMgMTcuOCAySDE2LjMyQzE2LjM0IDIuMTEgMTYuMzUgMi4yMyAxNi4zNSAyLjM1QzE2LjM1IDMuMzcgMTUuNSA0LjIgMTQuNSA0LjJIMTQuNVY1LjdDMTYuNzEgNS43IDE4LjUgNy41IDE4LjUgOS43TTExLjgzIDguNjNDMTIuMDUgOC42OCAxMi4yNyA4LjcgMTIuNSA4LjdIMTRDMTUuMDcgOC42NiAxNS45NiA5LjUgMTYgMTAuNTZDMTYgMTAuNjEgMTYgMTAuNjUgMTYgMTAuN1YxMkgxNy41VjEwLjM2QzE3LjQyIDguNTMgMTUuODggNy4xMiAxNC4wNSA3LjJMMTQgNy4ySDEyLjVDMTEuNDUgNy4xMiAxMC42NSA2LjI1IDEwLjY1IDUuMkMxMC42NyA0LjIyIDExLjUgMy40MyAxMi40NiAzLjQ1TDEyLjUgMy40NVYyQzEwLjY1IDIgOS4xNSAzLjUgOS4xNSA1LjM1QzkuMTUgNS41OCA5LjE3IDUuOCA5LjIyIDZMMTEuODMgOC42M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTbmFpbCA9IFwiTTIwLjMxIDguMDNMMjEuMjQgNC45NUMyMS42NyA0Ljg1IDIyIDQuNDcgMjIgNEMyMiAzLjQ1IDIxLjU1IDMgMjEgM1MyMCAzLjQ1IDIwIDRDMjAgNC4yNiAyMC4xMSA0LjUgMjAuMjcgNC42OEwxOS41IDcuMjZMMTguNzMgNC42OEMxOC44OSA0LjUgMTkgNC4yNiAxOSA0QzE5IDMuNDUgMTguNTUgMyAxOCAzUzE3IDMuNDUgMTcgNEMxNyA0LjQ3IDE3LjMzIDQuODUgMTcuNzYgNC45NUwxOC42OSA4LjAzQzE3LjczIDguMTggMTcgOSAxNyAxMFYxMi4yNUMxNS42NSA5LjE2IDEyLjYzIDcgOS4xMSA3QzUuMTkgNyAyIDEwLjI2IDIgMTQuMjZDMiAxNi4xIDIuODIgMTcuNzUgNC4xIDE4Ljg1TDIuODggMTlDMi4zOCAxOS4wNiAyIDE5LjUgMiAyMEMyIDIwLjU1IDIuNDUgMjEgMyAyMUwxOS4xMiAyMUMyMC4xNiAyMSAyMSAyMC4xNiAyMSAxOS4xMlYxMS43MkMyMS42IDExLjM4IDIyIDEwLjc0IDIyIDEwQzIyIDkgMjEuMjcgOC4xOCAyMC4zMSA4LjAzTTE1LjYgMTcuNDFMMTIuMDcgMTcuODZDMTIuNSAxNy4xIDEyLjggMTYuMjEgMTIuOCAxNS4yNkMxMi44IDEyLjk0IDEwLjk1IDExLjA2IDguNjcgMTEuMDZDOC4xNCAxMS4wNiA3LjYyIDExLjE4IDcuMTQgMTEuNDFDNi42NSAxMS42NiA2LjQ0IDEyLjI2IDYuNjkgMTIuNzVDNi45MyAxMy4yNSA3LjUzIDEzLjQ1IDguMDMgMTMuMjFDOC4yMyAxMy4xMSA4LjQ1IDEzLjA2IDguNjcgMTMuMDZDOS44NSAxMy4wNiAxMC44IDE0LjA0IDEwLjggMTUuMjZDMTAuOCAxNi45MiA5LjUgMTguMjcgNy44OSAxOC4yN0M1Ljc1IDE4LjI3IDQgMTYuNDcgNCAxNC4yNkM0IDExLjM2IDYuMjkgOSA5LjExIDlDMTIuNzcgOSAxNS43NSAxMi4wNiAxNS43NSAxNS44MkMxNS43NSAxNi4zNiAxNS42OSAxNi44OSAxNS42IDE3LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNuYWtlID0gXCJNMTkuNSAxN0gxOEMxOS4xIDE3IDIwIDE2LjEgMjAgMTVTMTkuMSAxMyAxOCAxM1Y5QzE4IDggMTggNyAxNi45MiA2LjE0QzE2Ljk3IDUuOTMgMTcgNS43MiAxNyA1LjVDMTcgMy41NyAxNSAyIDEyLjUgMkMxMC4yNCAyIDguMzggMy4zMSA4LjA3IDVINkwzLjcxIDIuNzlMMyAzLjVMNSA1LjVMMyA3LjVMMy43MSA4LjIxTDYgNkg4LjA3QzguMzggNy42OSAxMC4yNCA5IDEyLjUgOUMxMyA5IDEzLjUgOC45MiAxMy45MyA4LjhDMTMuOTcgOC44NyAxNCA4Ljk0IDE0IDlWMTNIOEM2LjkgMTMgNiAxMy45IDYgMTVTNi45IDE3IDggMTdINi41QzUuMTIgMTcgNCAxOC4xMiA0IDE5LjVDNCAxOS42NyA0IDE5Ljg0IDQuMDUgMjBINEMyLjkgMjAgMiAyMC45IDIgMjJIMTkuNUMyMC44OCAyMiAyMiAyMC44OCAyMiAxOS41UzIwLjg4IDE3IDE5LjUgMTdNMTIgNUMxMS40NSA1IDExIDQuNTUgMTEgNFMxMS40NSAzIDEyIDMgMTMgMy40NSAxMyA0IDEyLjU1IDUgMTIgNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbmFwY2hhdCA9IFwiTTIxLjkzIDE2LjU2QzIxLjc5IDE2LjE4IDIxLjUgMTYgMjEuMjIgMTUuODFDMjEuMTcgMTUuNzggMjEuMTEgMTUuNzUgMjEuMDcgMTUuNzNDMjEgMTUuNjggMjAuODkgMTUuNjQgMjAuOCAxNS41OUMxOS44NiAxNS4wOSAxOS4xMiAxNC40NiAxOC42MSAxMy43MkMxOC40NyAxMy41IDE4LjM1IDEzLjI5IDE4LjI0IDEzLjA2QzE4LjIgMTIuOTMgMTguMiAxMi44NiAxOC4yMyAxMi44QzE4LjI2IDEyLjc1IDE4LjMgMTIuNyAxOC4zNSAxMi42N0MxOC41IDEyLjU2IDE4LjY4IDEyLjQ2IDE4Ljc5IDEyLjM4QzE5IDEyLjI1IDE5LjE1IDEyLjE1IDE5LjI1IDEyLjA4QzE5LjY0IDExLjgxIDE5LjkxIDExLjUgMjAuMDggMTEuMkMyMC4zMiAxMC43NSAyMC4zNSAxMC4yMiAyMC4xNiA5Ljc1QzE5LjkxIDkuMDggMTkuMjcgOC42NiAxOC41IDguNjZDMTguMzQgOC42NiAxOC4xOCA4LjY4IDE4IDguNzFDMTggOC43MiAxNy45NCA4LjczIDE3LjkgOC43NEMxNy45IDguMjggMTcuODkgNy44IDE3Ljg1IDcuMzJDMTcuNzEgNS42NCAxNy4xMiA0Ljc2IDE2LjUgNC4wNkMxNi4xMSAzLjYyIDE1LjY1IDMuMjQgMTUuMTQgMi45NUMxNC4yMSAyLjQyIDEzLjE1IDIuMTUgMTIgMi4xNVM5LjggMi40MiA4Ljg3IDIuOTVDOC4zNSAzLjI0IDcuODkgMy42MiA3LjUgNC4wNkM2Ljg4IDQuNzYgNi4zIDUuNjQgNi4xNSA3LjMyQzYuMTEgNy44IDYuMSA4LjI4IDYuMTEgOC43NEM2LjA2IDguNzMgNiA4LjcyIDYgOC43MUM1LjgyIDguNjggNS42NiA4LjY2IDUuNSA4LjY2QzQuNzMgOC42NiA0LjA5IDkuMDggMy44NCA5Ljc1QzMuNjUgMTAuMjIgMy42OCAxMC43NSAzLjkyIDExLjJDNC4wOSAxMS41IDQuMzYgMTEuODEgNC43NSAxMi4wOEM0Ljg1IDEyLjE1IDUgMTIuMjUgNS4yMSAxMi4zOUw1LjYzIDEyLjY2QzUuNjkgMTIuNyA1LjczIDEyLjc1IDUuNzcgMTIuOEM1LjggMTIuODcgNS44IDEyLjk0IDUuNzUgMTMuMDdDNS42NSAxMy4zIDUuNTMgMTMuNSA1LjM5IDEzLjcyQzQuODkgMTQuNDUgNC4xOCAxNS4wNyAzLjI3IDE1LjU2QzIuNzggMTUuODIgMi4yOCAxNiAyLjA3IDE2LjU2QzEuOTEgMTcgMiAxNy41IDIuNDIgMTcuOTFDMi41NyAxOC4wNiAyLjc0IDE4LjE5IDIuOTMgMTguMjlDMy4zMyAxOC41IDMuNzUgMTguNjggNC4xOCAxOC43OUM0LjI3IDE4LjgyIDQuMzYgMTguODUgNC40MyAxOC45MUM0LjU4IDE5LjAzIDQuNTYgMTkuMjMgNC43NiAxOS41QzQuODYgMTkuNjYgNSAxOS43OSA1LjEzIDE5Ljg5QzUuNTQgMjAuMTggNiAyMC4xOSA2LjUgMjAuMjFDNi45NCAyMC4yMyA3LjQ0IDIwLjI1IDggMjAuNDRDOC4yNiAyMC41IDguNSAyMC42NyA4Ljc5IDIwLjg1QzkuNSAyMS4yNyAxMC40MiAyMS44NSAxMiAyMS44NUMxMy41NyAyMS44NSAxNC41IDIxLjI3IDE1LjIyIDIwLjg0QzE1LjUgMjAuNjcgMTUuNzUgMjAuNSAxNiAyMC40NEMxNi41NSAyMC4yNSAxNy4wNiAyMC4yMyAxNy41IDIwLjIxQzE4IDIwLjIgMTguNDYgMjAuMTggMTguODcgMTkuODlDMTkuMDQgMTkuNzcgMTkuMTggMTkuNjEgMTkuMjkgMTkuNDNDMTkuNDMgMTkuMTkgMTkuNDMgMTkgMTkuNTYgMTguOTFDMTkuNjMgMTguODYgMTkuNzEgMTguODIgMTkuOCAxOC44QzIwLjI0IDE4LjY4IDIwLjY2IDE4LjUgMjEuMDYgMTguMjlDMjEuMjcgMTguMTggMjEuNDUgMTguMDQgMjEuNiAxNy44N0wyMS42MSAxNy44N0MyMiAxNy40NiAyMi4wOCAxNyAyMS45MyAxNi41Nk0yMC41MyAxNy4zMUMxOS42NyAxNy43OCAxOS4xIDE3LjczIDE4LjY2IDE4QzE4LjUgMTguMTIgMTguNDUgMTguMjggMTguNDIgMTguNDRDMTguNDEgMTguNSAxOC40IDE4LjU4IDE4LjM5IDE4LjY0QzE4LjM3IDE4Ljc4IDE4LjM0IDE4LjkgMTguMjQgMTguOTdDMTcuOSAxOS4yIDE2LjkxIDE4Ljk1IDE1LjYzIDE5LjM3QzE0LjU3IDE5LjcyIDEzLjkgMjAuNzMgMTIgMjAuNzNDMTAuMSAyMC43MyA5LjQ1IDE5LjczIDguMzcgMTkuMzdDNy4xIDE4Ljk1IDYuMSAxOS4yIDUuNzcgMTguOTdDNS41IDE4Ljc4IDUuNzIgMTguMjYgNS4zNCAxOEM0LjkgMTcuNzMgNC4zMyAxNy43OCAzLjUgMTcuMzFDMy4xOSAxNy4xNSAzLjE0IDE3IDMuMTggMTYuOTNDMy4yMiAxNi44NCAzLjM0IDE2Ljc3IDMuNDIgMTYuNzNDNS4wNyAxNS45NCA2IDE0LjkxIDYuNDcgMTQuMUM2LjkxIDEzLjM4IDcgMTIuODMgNy4wMyAxMi43NUM3LjA2IDEyLjU0IDcuMDkgMTIuMzggNi44NiAxMi4xN0M2LjY0IDExLjk2IDUuNjYgMTEuMzYgNS4zOSAxMS4xN0M0LjkzIDEwLjg1IDQuNzQgMTAuNTQgNC44OCAxMC4xNUw0Ljg4IDEwLjE1VjEwLjE1QzUgOS44OCA1LjIzIDkuNzggNS41IDkuNzhDNS41OCA5Ljc4IDUuNjYgOS43OSA1Ljc0IDkuODFDNi4yNCA5LjkxIDYuNzIgMTAuMTYgNyAxMC4yM0M3LjAzIDEwLjI0IDcuMDYgMTAuMjQgNy4xIDEwLjI0QzcuMTkgMTAuMjQgNy4yNCAxMC4yMSA3LjI3IDEwLjE1QzcuMjggMTAuMTEgNy4yOSAxMC4wNiA3LjI5IDEwQzcuMjUgOS40NiA3LjE4IDguNDEgNy4yNiA3LjQyQzcuMyA3IDcuMzcgNi42NCA3LjQ2IDYuMzNDNy42NiA1LjY1IDggNS4yIDguMzQgNC43OUM4LjU5IDQuNSA5Ljc1IDMuMjcgMTIgMy4yN0MxMy44NSAzLjI3IDE0Ljk2IDQuMTEgMTUuNDQgNC41NkMxNS41NCA0LjY2IDE1LjYyIDQuNzQgMTUuNjYgNC43OUMxNi4wNCA1LjIzIDE2LjM4IDUuNzEgMTYuNTggNi40N0MxNi42NSA2Ljc0IDE2LjcxIDcuMDYgMTYuNzQgNy40MkMxNi44MiA4LjQgMTYuNzUgOS40NiAxNi43MSAxMEMxNi43MSAxMC4wNCAxNi43MSAxMC4wOCAxNi43MiAxMC4xMUMxNi43MyAxMC4yIDE2Ljc5IDEwLjI0IDE2LjkgMTAuMjRDMTYuOTQgMTAuMjQgMTYuOTcgMTAuMjQgMTcgMTAuMjNDMTcuMjggMTAuMTYgMTcuNzYgOS45MSAxOC4yNiA5LjhDMTguMzQgOS43OSAxOC40MiA5Ljc4IDE4LjUgOS43OEMxOC43NSA5Ljc4IDE5IDkuODcgMTkuMSAxMC4xTDE5LjExIDEwLjE0TDE5LjEyIDEwLjE0TDE5LjEyIDEwLjE1QzE5LjI3IDEwLjUzIDE5LjA3IDEwLjg1IDE4LjYyIDExLjE2QzE4LjM1IDExLjM1IDE3LjM2IDExLjk2IDE3LjE0IDEyLjE2QzE2LjkxIDEyLjM4IDE2Ljk0IDEyLjU0IDE2Ljk3IDEyLjc1QzE3IDEyLjg1IDE3LjE4IDEzLjggMTguMDggMTQuODZDMTguNjMgMTUuNSAxOS40MiAxNi4xNyAyMC41OCAxNi43M0MyMC42NSAxNi43NiAyMC43NCAxNi44MSAyMC43OSAxNi44N0MyMC44MiAxNi45MiAyMC44NCAxNi45NiAyMC44MyAxN0MyMC44MiAxNy4xIDIwLjczIDE3LjIgMjAuNTMgMTcuMzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2JvYXJkID0gXCJNMTUuNCA1LjRDMTUuNCA0LjMgMTYuMyAzLjQgMTcuNCAzLjRDMTguNSAzLjQgMTkuNCA0LjMgMTkuNCA1LjRDMTkuNCA2LjUgMTguNSA3LjQgMTcuNCA3LjRDMTYuMyA3LjQgMTUuNCA2LjUgMTUuNCA1LjRNMjIgMTkuMkMyMS40IDE5LjggMjAuOCAyMC4yIDIwLjEgMjAuNUMxOS40IDIwLjggMTguNiAyMSAxNy44IDIxSDYuMkM1LjQgMjEgNC42IDIwLjggMy45IDIwLjVDMy4yIDIwLjIgMi42IDE5LjggMiAxOS4yTDIuOSAxOC4zQzMuMyAxOC43IDMuOCAxOS4xIDQuNCAxOS4zQzQuOSAxOS42IDUuNCAxOS43IDUuOSAxOS43TDkuNyAxNkw4LjUgMTIuNUM4LjMgMTEuOSA4LjYgMTEuNCA5LjEgMTFMMTEgOUg2VjdIMTRDMTQuNSA3IDE0LjcgNy4xIDE1IDcuM0wxNy4zIDkuNUMxOC4zIDEwLjUgMTkuNSAxMSAyMC45IDExTDIxIDEzLjFDMTkuMSAxMy4xIDE3LjQgMTIuNCAxNS45IDExTDE1LjIgMTAuM0wxMi45IDEyLjdMMTUgMTVWMTkuN0gxNy44QzE4LjQgMTkuNyAxOSAxOS42IDE5LjYgMTkuM0MyMC4yIDE5LjEgMjAuNyAxOC43IDIxLjEgMTguM0wyMiAxOS4yTTguOCAxOS43SDEzVjE1LjhMMTEuNyAxNC42VjE2LjhMOC44IDE5LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2ZsYWtlID0gXCJNMjAuNzksMTMuOTVMMTguNDYsMTQuNTdMMTYuNDYsMTMuNDRWMTAuNTZMMTguNDYsOS40M0wyMC43OSwxMC4wNUwyMS4zMSw4LjEyTDE5LjU0LDcuNjVMMjAsNS44OEwxOC4wNyw1LjM2TDE3LjQ1LDcuNjlMMTUuNDUsOC44MkwxMyw3LjM4VjUuMTJMMTQuNzEsMy40MUwxMy4yOSwyTDEyLDMuMjlMMTAuNzEsMkw5LjI5LDMuNDFMMTEsNS4xMlY3LjM4TDguNSw4LjgyTDYuNSw3LjY5TDUuOTIsNS4zNkw0LDUuODhMNC40Nyw3LjY1TDIuNyw4LjEyTDMuMjIsMTAuMDVMNS41NSw5LjQzTDcuNTUsMTAuNTZWMTMuNDVMNS41NSwxNC41OEwzLjIyLDEzLjk2TDIuNywxNS44OUw0LjQ3LDE2LjM2TDQsMTguMTJMNS45MywxOC42NEw2LjU1LDE2LjMxTDguNTUsMTUuMThMMTEsMTYuNjJWMTguODhMOS4yOSwyMC41OUwxMC43MSwyMkwxMiwyMC43MUwxMy4yOSwyMkwxNC43LDIwLjU5TDEzLDE4Ljg4VjE2LjYyTDE1LjUsMTUuMTdMMTcuNSwxNi4zTDE4LjEyLDE4LjYzTDIwLDE4LjEyTDE5LjUzLDE2LjM1TDIxLjMsMTUuODhMMjAuNzksMTMuOTVNOS41LDEwLjU2TDEyLDkuMTFMMTQuNSwxMC41NlYxMy40NEwxMiwxNC44OUw5LjUsMTMuNDRWMTAuNTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2ZsYWtlQWxlcnQgPSBcIk0xNi40Niw5LjQxTDEzLDcuMzhWNS4xMkwxNC43MSwzLjQxTDEzLjI5LDJMMTIsMy4yOUwxMC43MSwyTDkuMjksMy40MUwxMSw1LjEyVjcuMzhMOC41LDguODJMNi41LDcuNjlMNS45Miw1LjM2TDQsNS44OEw0LjQ3LDcuNjVMMi43LDguMTJMMy4yMiwxMC4wNUw1LjU1LDkuNDNMNy41NSwxMC41NlYxMy40NUw1LjU1LDE0LjU4TDMuMjIsMTMuOTZMMi43LDE1Ljg5TDQuNDcsMTYuMzZMNCwxOC4xMkw1LjkzLDE4LjY0TDYuNTUsMTYuMzFMOC41NSwxNS4xOEwxMSwxNi42MlYxOC44OEw5LjI5LDIwLjU5TDEwLjcxLDIyTDEyLDIwLjcxTDEzLjI5LDIyTDE0LjcsMjAuNTlMMTMsMTguODhWMTYuNjJMMTYuNDYsMTQuNjFNOS41LDEwLjU2TDEyLDkuMTFMMTQuNSwxMC41NlYxMy40NEwxMiwxNC44OUw5LjUsMTMuNDRNMTksMTNWN0gyMVYxM0gxOU0xOSwxN1YxNUgyMVYxN0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTbm93Zmxha2VNZWx0ID0gXCJNOCAxNy44NUM4IDE5LjA0IDcuMTEgMjAgNiAyMFM0IDE5LjA0IDQgMTcuODVDNCAxNi40MiA2IDE0IDYgMTRTOCAxNi40MiA4IDE3Ljg1TTE2LjQ2IDEyVjEwLjU2TDE4LjQ2IDkuNDNMMjAuNzkgMTAuMDVMMjEuMzEgOC4xMkwxOS41NCA3LjY1TDIwIDUuODhMMTguMDcgNS4zNkwxNy40NSA3LjY5TDE1LjQ1IDguODJMMTMgNy4zOFY1LjEyTDE0LjcxIDMuNDFMMTMuMjkgMkwxMiAzLjI5TDEwLjcxIDJMOS4yOSAzLjQxTDExIDUuMTJWNy4zOEw4LjUgOC44Mkw2LjUgNy42OUw1LjkyIDUuMzZMNCA1Ljg4TDQuNDcgNy42NUwyLjcgOC4xMkwzLjIyIDEwLjA1TDUuNTUgOS40M0w3LjU1IDEwLjU2VjEySDJWMTNIMjJWMTJIMTYuNDZNOS41IDEyVjEwLjU2TDEyIDkuMTFMMTQuNSAxMC41NlYxMkg5LjVNMjAgMTcuODVDMjAgMTkuMDQgMTkuMTEgMjAgMTggMjBTMTYgMTkuMDQgMTYgMTcuODVDMTYgMTYuNDIgMTggMTQgMTggMTRTMjAgMTYuNDIgMjAgMTcuODVNMTQgMjAuODVDMTQgMjIuMDQgMTMuMTEgMjMgMTIgMjNTMTAgMjIuMDQgMTAgMjAuODVDMTAgMTkuNDIgMTIgMTcgMTIgMTdTMTQgMTkuNDIgMTQgMjAuODVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU25vd2ZsYWtlT2ZmID0gXCJNMTEgNS4xMkw5LjI5IDMuNDFMMTAuNzEgMkwxMiAzLjI5TDEzLjI5IDJMMTQuNzEgMy40MUwxMyA1LjEyVjcuMzhMMTUuNDUgOC44MkwxNy40NSA3LjY5TDE4LjA3IDUuMzZMMjAgNS44OEwxOS41NCA3LjY1TDIxLjMxIDguMTJMMjAuNzkgMTAuMDVMMTguNDYgOS40M0wxNi40NiAxMC41NlYxMy4yNkwxNC41IDExLjNWMTAuNTZMMTIuNzQgOS41NEwxMC43MyA3LjUzTDExIDcuMzhWNS4xMk0xOC40NiAxNC41N0wxNi44NyAxMy42N0wxOS41NSAxNi4zNUwyMS4zIDE1Ljg4TDIwLjc5IDEzLjk1TDE4LjQ2IDE0LjU3TTEzIDE2LjYyVjE4Ljg4TDE0LjcgMjAuNTlMMTMuMjkgMjJMMTIgMjAuNzFMMTAuNzEgMjJMOS4yOSAyMC41OUwxMSAxOC44OFYxNi42Mkw4LjU1IDE1LjE4TDYuNTUgMTYuMzFMNS45MyAxOC42NEw0IDE4LjEyTDQuNDcgMTYuMzZMMi43IDE1Ljg5TDMuMjIgMTMuOTZMNS41NSAxNC41OEw3LjU1IDEzLjQ1VjEwLjU2TDUuNTUgOS40M0wzLjIyIDEwLjA1TDIuNyA4LjEyTDQuNDcgNy42NUw0IDUuODlMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40NkwyMC44NCAyMi43M0wxNC4xIDE2TDEzIDE2LjYyTTEyIDE0Ljg5TDEyLjYzIDE0LjVMOS41IDExLjM5VjEzLjQ0TDEyIDE0Ljg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNub3dmbGFrZVZhcmlhbnQgPSBcIk0xNC4yNSwxMkwxNi4yNywxMUgyM0wyMiw5SDE4LjAzTDIwLjQyLDUuODNMMTkuNDMsMy44M0wxNS4zNyw5LjJMMTMuMzUsMTAuMjFMMTMuNzUsOEwxNy44MywyLjYyTDE1LjY0LDIuMjJMMTIsN0w4LjQsMi4yTDYuMiwyLjZMMTAuMjYsOEwxMC42NiwxMC4yMUw4LjgyLDkuMjlMOC42Niw5LjIxTDQuNiwzLjhMMy42LDUuOEw2LDlIMkwxLDExSDcuNzdMOS43NSwxMkw3LjczLDEzSDFMMiwxNUg1Ljk3TDMuNTgsMTguMTdMNC41NywyMC4xN0w4LjYzLDE0LjhMMTAuNjUsMTMuNzlMMTAuMjUsMTZMNi4xNywyMS4zOEw4LjM2LDIxLjc5TDEyLDE3TDE1LjYsMjEuOEwxNy44LDIxLjRMMTMuNzQsMTZMMTMuMzQsMTMuNzlMMTUuMzQsMTQuNzlMMTkuNCwyMC4yTDIwLjQsMTguMkwxOCwxNUgyMkwyMywxM0gxNi4yM1wiO1xyXG5leHBvcnQgdmFyIG1kaVNub3dtYW4gPSBcIk0xNywxN0E1LDUgMCAwLDEgMTIsMjJBNSw1IDAgMCwxIDcsMTdDNywxNS41IDcuNjUsMTQuMTcgOC42OSwxMy4yNUM4LjI2LDEyLjYxIDgsMTEuODMgOCwxMUM4LDEwLjg2IDgsMTAuNzMgOCwxMC41OUw1LjA0LDguODdMNC44Myw4LjcxTDIuMjksOS4zOUwyLjAzLDguNDNMNC4yNCw3Ljg0TDIuMjYsNi42OUwyLjc2LDUuODJMNC43NCw2Ljk3TDQuMTUsNC43NUw1LjExLDQuNUw1LjgsNy4wNEw2LjA0LDcuMTRMOC43Myw4LjY5QzkuMTEsOC4xNSA5LjYyLDcuNzEgMTAuMjIsNy40MkM5LjUsNi44NyA5LDYgOSw1QTMsMyAwIDAsMSAxMiwyQTMsMyAwIDAsMSAxNSw1QzE1LDYgMTQuNSw2Ljg3IDEzLjc4LDcuNDJDMTQuMzgsNy43MSAxNC44OSw4LjE1IDE1LjI3LDguNjlMMTcuOTYsNy4xNEwxOC4yLDcuMDRMMTguODksNC41TDE5Ljg1LDQuNzVMMTkuMjYsNi45N0wyMS4yNCw1LjgyTDIxLjc0LDYuNjlMMTkuNzYsNy44NEwyMS45Nyw4LjQzTDIxLjcxLDkuMzlMMTkuMTcsOC43MUwxOC45Niw4Ljg3TDE2LDEwLjU5VjExQzE2LDExLjgzIDE1Ljc0LDEyLjYxIDE1LjMxLDEzLjI1QzE2LjM1LDE0LjE3IDE3LDE1LjUgMTcsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29jY2VyID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNMTIsM0MxMy43NiwzIDE1LjQsMy41MyAxNi43OCw0LjQxTDE2LjUsNUgxM0wxMiw1TDEwLjI4LDQuMTZMMTAuNjMsMy4xM0MxMS4wOCwzLjA1IDExLjUzLDMgMTIsM005LjUzLDMuMzhMOS4xOSw0LjQxTDYuNjMsNS42OUw1LjM4LDUuOTRDNi41LDQuNzMgNy45MiwzLjg0IDkuNTMsMy4zOE0xMyw2SDE2TDE4LjY5LDkuNTlMMTcuNDQsMTIuMTZMMTQuODEsMTIuNzhMMTEuNTMsOC45NEwxMyw2TTYuMTYsNi42Nkw3LDEwTDUuNzgsMTMuMDZMMy4yMiwxMy45NEMzLjA4LDEzLjMxIDMsMTIuNjcgMywxMkMzLDEwLjEgMy41OSw4LjM2IDQuNTksNi45MUw2LjE2LDYuNjZNMjAuNTYsOS4yMkMyMC44NSwxMC4wOSAyMSwxMS4wMyAyMSwxMkMyMSwxMy40NCAyMC42MywxNC43OSAyMC4wMywxNkgxOUwxOC4xNiwxMi42NkwxOS42Niw5LjY2TDIwLjU2LDkuMjJNOCwxMEgxMUwxMy44MSwxMy4yOEwxMiwxNkw4Ljg0LDE2Ljc4TDYuNTMsMTMuNjlMOCwxME0xMiwxN0wxNSwxOUwxNC4xMywyMC43MkMxMy40NCwyMC44OCAxMi43MywyMSAxMiwyMUMxMC4yNSwyMSA4LjYzLDIwLjUgNy4yNSwxOS42M0w4LjQxLDE3LjkxTDEyLDE3TTE5LDE3SDE5LjVDMTguNSwxOC41IDE3LDE5LjY3IDE1LjMxLDIwLjM0TDE2LDE5TDE5LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvY2NlckZpZWxkID0gXCJNNCw0QzIuODksNCAyLDQuODkgMiw2VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFY2QzIyLDQuODkgMjEuMSw0IDIwLDRINE00LDZIMTFWOC4xM0M5LjI0LDguNTkgOCwxMC4xOCA4LDEyQzgsMTMuODIgOS4yNCwxNS40MSAxMSwxNS44N1YxOEg0VjE2SDdWOEg0VjZNMTMsNkgyMFY4SDE3VjE2SDIwVjE4SDEzVjE1Ljg3QzE0Ljc2LDE1LjQxIDE2LDEzLjgyIDE2LDEyQzE2LDEwLjE4IDE0Ljc2LDguNTkgMTMsOC4xM1Y2TTQsMTBINVYxNEg0VjEwTTE5LDEwSDIwVjE0SDE5VjEwTTEzLDEwLjI3QzEzLjYyLDEwLjYzIDE0LDExLjI5IDE0LDEyQzE0LDEyLjcxIDEzLjYyLDEzLjM3IDEzLDEzLjczVjEwLjI3TTExLDEwLjI3VjEzLjczQzEwLjM4LDEzLjM3IDEwLDEyLjcxIDEwLDEyQzEwLDExLjI5IDEwLjM4LDEwLjYzIDExLDEwLjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvY2lhbERpc3RhbmNlMk1ldGVycyA9IFwiTTYgNkM3LjEgNiA4IDUuMSA4IDRTNy4xIDIgNiAyIDQgMi45IDQgNCA0LjkgNiA2IDZNMTAgOS40M0MxMCA4LjYyIDkuNSA3LjkgOC43OCA3LjU4QzcuOTMgNy4yMSA3IDcgNiA3UzQuMDcgNy4yMSAzLjIyIDcuNThDMi41IDcuOSAyIDguNjIgMiA5LjQzVjEwSDEwVjkuNDNNMTggNkMxOS4xIDYgMjAgNS4xIDIwIDRTMTkuMSAyIDE4IDIgMTYgMi45IDE2IDQgMTYuOSA2IDE4IDZNMjIgOS40M0MyMiA4LjYyIDIxLjUgNy45IDIwLjc4IDcuNThDMTkuOTMgNy4yMSAxOSA3IDE4IDdTMTYuMDcgNy4yMSAxNS4yMiA3LjU4QzE0LjUgNy45IDE0IDguNjIgMTQgOS40M1YxMEgyMlY5LjQzTTE5IDE3VjE1TDUgMTVWMTdMMiAxNEw1IDExVjEzTDE5IDEzVjExTDIyIDE0TDE5IDE3TTkgMjAuNVYyMUgxMVYyMkg4VjIwLjVDOCAxOS45NSA4LjQ1IDE5LjUgOSAxOS41SDEwVjE5SDhWMThIMTBDMTAuNTUgMTggMTEgMTguNDUgMTEgMTlWMTkuNUMxMSAyMC4wNSAxMC41NSAyMC41IDEwIDIwLjVIOU0xNiAxOVYyMkgxNVYxOUgxNC41VjIxSDEzLjVWMTlIMTNWMjJIMTJWMTlDMTIgMTguNDUgMTIuNDUgMTggMTMgMThIMTVDMTUuNTUgMTggMTYgMTguNDUgMTYgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29jaWFsRGlzdGFuY2U2RmVldCA9IFwiTTYgNkM3LjEgNiA4IDUuMSA4IDRTNy4xIDIgNiAyIDQgMi45IDQgNCA0LjkgNiA2IDZNMTAgOS40M0MxMCA4LjYyIDkuNSA3LjkgOC43OCA3LjU4QzcuOTMgNy4yMSA3IDcgNiA3UzQuMDcgNy4yMSAzLjIyIDcuNThDMi41IDcuOSAyIDguNjIgMiA5LjQzVjEwSDEwVjkuNDNNMTggNkMxOS4xIDYgMjAgNS4xIDIwIDRTMTkuMSAyIDE4IDIgMTYgMi45IDE2IDQgMTYuOSA2IDE4IDZNMjIgOS40M0MyMiA4LjYyIDIxLjUgNy45IDIwLjc4IDcuNThDMTkuOTMgNy4yMSAxOSA3IDE4IDdTMTYuMDcgNy4yMSAxNS4yMiA3LjU4QzE0LjUgNy45IDE0IDguNjIgMTQgOS40M1YxMEgyMlY5LjQzTTE5IDE3VjE1SDVWMTdMMiAxNEw1IDExVjEzSDE5VjExTDIyIDE0TDE5IDE3TTEwIDE5VjE4SDcuNUM3LjIyIDE4IDcgMTguMjIgNyAxOC41VjIxLjVDNyAyMS43OCA3LjIyIDIyIDcuNSAyMkg5LjVDOS43OCAyMiAxMCAyMS43OCAxMCAyMS41VjIwQzEwIDE5LjcyIDkuNzggMTkuNSA5LjUgMTkuNUg4VjE5SDEwTTkgMjAuNVYyMUg4VjIwLjVIOU0xNy41IDE5SDE2LjVWMjJIMTUuNVYxOUgxNC41VjE4SDE3LjVWMTlNMTIuNSAxOVYxOS41SDEzLjVWMjAuNUgxMi41VjIySDExLjVWMThIMTRWMTlIMTIuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2ZhID0gXCJNMTIuNSA3QzEyLjUgNS44OSAxMy4zOSA1IDE0LjUgNUgxOEMxOS4xIDUgMjAgNS45IDIwIDdWOS4xNkMxOC44NCA5LjU3IDE4IDEwLjY3IDE4IDExLjk3VjE0SDEyLjVWN002IDExLjk2VjE0SDExLjVWN0MxMS41IDUuODkgMTAuNjEgNSA5LjUgNUg2QzQuOSA1IDQgNS45IDQgN1Y5LjE1QzUuMTYgOS41NiA2IDEwLjY3IDYgMTEuOTZNMjAuNjYgMTAuMDNDMTkuNjggMTAuMTkgMTkgMTEuMTIgMTkgMTIuMTJWMTVINVYxMkM1IDEwLjkgNC4xMSAxMCAzIDEwUzEgMTAuOSAxIDEyVjE3QzEgMTguMSAxLjkgMTkgMyAxOVYyMUg1VjE5SDE5VjIxSDIxVjE5QzIyLjEgMTkgMjMgMTguMSAyMyAxN1YxMkMyMyAxMC43OSAyMS45MSA5LjgyIDIwLjY2IDEwLjAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvZmFPdXRsaW5lID0gXCJNMjEgOVY3QzIxIDUuMzUgMTkuNjUgNCAxOCA0SDE0QzEzLjIzIDQgMTIuNTMgNC4zIDEyIDQuNzhDMTEuNDcgNC4zIDEwLjc3IDQgMTAgNEg2QzQuMzUgNCAzIDUuMzUgMyA3VjlDMS4zNSA5IDAgMTAuMzUgMCAxMlYxN0MwIDE4LjY1IDEuMzUgMjAgMyAyMFYyMkg1VjIwSDE5VjIySDIxVjIwQzIyLjY1IDIwIDI0IDE4LjY1IDI0IDE3VjEyQzI0IDEwLjM1IDIyLjY1IDkgMjEgOU0xNCA2SDE4QzE4LjU1IDYgMTkgNi40NSAxOSA3VjkuNzhDMTguMzkgMTAuMzMgMTggMTEuMTIgMTggMTJWMTRIMTNWN0MxMyA2LjQ1IDEzLjQ1IDYgMTQgNk01IDdDNSA2LjQ1IDUuNDUgNiA2IDZIMTBDMTAuNTUgNiAxMSA2LjQ1IDExIDdWMTRINlYxMkM2IDExLjEyIDUuNjEgMTAuMzMgNSA5Ljc4VjdNMjIgMTdDMjIgMTcuNTUgMjEuNTUgMTggMjEgMThIM0MyLjQ1IDE4IDIgMTcuNTUgMiAxN1YxMkMyIDExLjQ1IDIuNDUgMTEgMyAxMVM0IDExLjQ1IDQgMTJWMTZIMjBWMTJDMjAgMTEuNDUgMjAuNDUgMTEgMjEgMTFTMjIgMTEuNDUgMjIgMTJWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29mYVNpbmdsZSA9IFwiTTUgOS4xNVY3QzUgNS45IDUuOSA1IDcgNUgxN0MxOC4xIDUgMTkgNS45IDE5IDdWOS4xNkMxNy44NCA5LjU3IDE3IDEwLjY3IDE3IDExLjk3VjE0SDdWMTEuOTZDNyAxMC42NyA2LjE2IDkuNTYgNSA5LjE1TTIwIDEwQzE4LjkgMTAgMTggMTAuOSAxOCAxMlYxNUg2VjEyQzYgMTAuOSA1LjExIDEwIDQgMTBTMiAxMC45IDIgMTJWMTdDMiAxOC4xIDIuOSAxOSA0IDE5VjIxSDZWMTlIMThWMjFIMjBWMTlDMjEuMSAxOSAyMiAxOC4xIDIyIDE3VjEyQzIyIDEwLjkgMjEuMSAxMCAyMCAxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2ZhU2luZ2xlT3V0bGluZSA9IFwiTTE5IDlWN0MxOSA1LjM1IDE3LjY1IDQgMTYgNEg4QzYuMzUgNCA1IDUuMzUgNSA3VjlDMy4zNSA5IDIgMTAuMzUgMiAxMlYxN0MyIDE4LjY1IDMuMzUgMjAgNSAyMFYyMkg3VjIwSDE3VjIySDE5VjIwQzIwLjY1IDIwIDIyIDE4LjY1IDIyIDE3VjEyQzIyIDEwLjM1IDIwLjY1IDkgMTkgOU03IDdDNyA2LjQ1IDcuNDUgNiA4IDZIMTZDMTYuNTUgNiAxNyA2LjQ1IDE3IDdWOS43OEMxNi4zOSAxMC4zMyAxNiAxMS4xMiAxNiAxMlYxNEg4VjEyQzggMTEuMTIgNy42MSAxMC4zMyA3IDkuNzhWN00yMCAxN0MyMCAxNy41NSAxOS41NSAxOCAxOSAxOEg1QzQuNDUgMTggNCAxNy41NSA0IDE3VjEyQzQgMTEuNDUgNC40NSAxMSA1IDExUzYgMTEuNDUgNiAxMlYxNkgxOFYxMkMxOCAxMS40NSAxOC40NSAxMSAxOSAxMVMyMCAxMS40NSAyMCAxMlYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xhclBhbmVsID0gXCJNNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE0QTIsMiAwIDAsMSAyMCwxNkgxNVYyMEgxOFYyMkgxM1YxNkgxMVYyMkg2VjIwSDlWMTZINEEyLDIgMCAwLDEgMiwxNFY0QTIsMiAwIDAsMSA0LDJNNCw0VjhIMTFWNEg0TTQsMTRIMTFWMTBINFYxNE0yMCwxNFYxMEgxM1YxNEgyME0yMCw0SDEzVjhIMjBWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xhclBhbmVsTGFyZ2UgPSBcIk0zLDZINlYzSDNWNk04LDNWNkgxMVYzSDhNMTMsM1Y2SDE2VjNIMTNNMTgsM1Y2SDIxVjNIMThNMjEsOEgxOFYxMUgyMVY4TTIxLDEzSDE4VjE2SDIxVjEzTTE2LDE2VjEzSDEzVjE2SDE2TTExLDE2VjEzSDhWMTZIMTFNNiwxNlYxM0gzVjE2SDZNMywxMUg2VjhIM1YxMU0xMyw4VjExSDE2VjhIMTNNOCw4VjExSDExVjhIOE0zLDFIMjFBMiwyIDAgMCwxIDIzLDNWMTZBMiwyIDAgMCwxIDIxLDE4SDE1VjIxSDE4VjIzSDEzVjE4SDExVjIzSDZWMjFIOVYxOEgzQTIsMiAwIDAsMSAxLDE2VjNBMiwyIDAgMCwxIDMsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xhclBvd2VyID0gXCJNMTEuNDUsMlY1LjU1TDE1LDMuNzdMMTEuNDUsMk0xMC40NSw4TDgsMTAuNDZMMTEuNzUsMTEuNzFMMTAuNDUsOE0yLDExLjQ1TDMuNzcsMTVMNS41NSwxMS40NUgyTTEwLDJIMlYxMEMyLjU3LDEwLjE3IDMuMTcsMTAuMjUgMy43NywxMC4yNUM3LjM1LDEwLjI2IDEwLjI2LDcuMzUgMTAuMjcsMy43NUMxMC4yNiwzLjE2IDEwLjE3LDIuNTcgMTAsMk0xNywyMlYxNkgxNEwxOSw3VjEzSDIyTDE3LDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvbGRlcmluZ0lyb24gPSBcIk00Ljg2IDQuMDNMMi4wMyA2Ljg2TDUuMjEgMTAuMDRWMTIuODdMNi42MyAxNC4yOEwxMi4yOCA4LjYzTDEwLjg3IDcuMjFIOC4wNEw0Ljg2IDQuMDNNMTcgNlY3LjVDMTggNy41IDE4Ljg1IDguMzMgMTguODUgOS4zNUMxOC44NSAxMC4zNyAxOCAxMS4yIDE3IDExLjJWMTIuN0MxOS4yNCAxMi43IDIxIDE0LjUzIDIxIDE2Ljc3VjIxSDIyLjVWMTYuNzZDMjIuNSAxNC41NCAyMS4yMiAxMi42MiAxOS4zNSAxMS43M0MxOS45NyAxMS4xMiAyMC4zNSAxMC4yOCAyMC4zNSA5LjM1QzIwLjM1IDcuNSAxOC44NSA2IDE3IDZNMTEuOTMgMTEuMUw5LjEgMTMuOTNMMTQuMDUgMTguODhMMTQuNzYgMTguMTdMMTYuODggMjAuMjlMMTkgMjFMMTguMjkgMTguODhMMTYuMTcgMTYuNzZMMTYuODggMTYuMDVMMTEuOTMgMTEuMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb2xpZCA9IFwiTTAsMEgyNFYyNEgwXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ueVBsYXlzdGF0aW9uID0gXCJNOS41LDQuMjdDMTAuODgsNC41MyAxMi45LDUuMTQgMTQsNS41QzE2Ljc1LDYuNDUgMTcuNjksNy42MyAxNy42OSwxMC4yOUMxNy42OSwxMi44OSAxNi4wOSwxMy44NyAxNC4wNSwxMi44OVY4LjA1QzE0LjA1LDcuNSAxMy45NSw2Ljk3IDEzLjQxLDYuODJDMTMsNi42OSAxMi43Niw3LjA3IDEyLjc2LDcuNjNWMTkuNzNMOS41LDE4LjY5VjQuMjdNMTMuMzcsMTcuNjJMMTguNjIsMTUuNzVDMTkuMjIsMTUuNTQgMTkuMzEsMTUuMjQgMTguODMsMTUuMDhDMTguMzQsMTQuOTIgMTcuNDcsMTQuOTcgMTYuODcsMTUuMThMMTMuMzcsMTYuNDFWMTQuNDVMMTMuNTgsMTQuMzhDMTMuNTgsMTQuMzggMTQuNTksMTQgMTYsMTMuODdDMTcuNDMsMTMuNzEgMTkuMTcsMTMuODkgMjAuNTMsMTQuNEMyMi4wNywxNC44OSAyMi4yNSwxNS42MSAyMS44NiwxNi4xQzIxLjQ2LDE2LjYgMjAuNSwxNi45NSAyMC41LDE2Ljk1TDEzLjM3LDE5LjVWMTcuNjJNMy41LDE3LjQyQzEuOTMsMTcgMS42NiwxNi4wNSAyLjM4LDE1LjVDMy4wNSwxNSA0LjE4LDE0LjY1IDQuMTgsMTQuNjVMOC44NiwxM1YxNC44OEw1LjUsMTYuMDlDNC45LDE2LjMgNC44MSwxNi42IDUuMjksMTYuNzZDNS43NywxNi45MiA2LjY1LDE2Ljg4IDcuMjQsMTYuNjZMOC44NiwxNi4wOFYxNy43N0w4LjU0LDE3LjgzQzYuOTIsMTguMDkgNS4yLDE4IDMuNSwxNy40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0ID0gXCJNMTggMjFMMTQgMTdIMTdWN0gxNEwxOCAzTDIyIDdIMTlWMTdIMjJNMiAxOVYxN0gxMlYxOU0yIDEzVjExSDlWMTNNMiA3VjVINlY3SDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEFscGhhYmV0aWNhbEFzY2VuZGluZyA9IFwiTTE5IDE3SDIyTDE4IDIxTDE0IDE3SDE3VjNIMTlNMTEgMTNWMTVMNy42NyAxOUgxMVYyMUg1VjE5TDguMzMgMTVINVYxM005IDNIN0M1LjkgMyA1IDMuOSA1IDVWMTFIN1Y5SDlWMTFIMTFWNUMxMSAzLjkgMTAuMTEgMyA5IDNNOSA3SDdWNUg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRBbHBoYWJldGljYWxBc2NlbmRpbmdWYXJpYW50ID0gXCJNOS4yNSA1TDEyLjUgMS43NUwxNS43NSA1SDkuMjVNOC44OSAxNC4zSDZMNS4yOCAxN0gyLjkxTDYgN0g5TDEyLjEzIDE3SDkuNjdMOC44OSAxNC4zTTYuMzMgMTIuNjhIOC41Nkw3LjkzIDEwLjU2TDcuNjcgOS41OUw3LjQyIDguNjNINy4zOUw3LjE3IDkuNkw2LjkzIDEwLjU4TDYuMzMgMTIuNjhNMTMuMDUgMTdWMTUuNzRMMTcuOCA4Ljk3VjguOTFIMTMuNVY3SDIwLjczVjguMzRMMTYuMDkgMTVWMTUuMDhIMjAuOFYxN0gxMy4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0QWxwaGFiZXRpY2FsRGVzY2VuZGluZyA9IFwiTTE5IDdIMjJMMTggM0wxNCA3SDE3VjIxSDE5TTExIDEzVjE1TDcuNjcgMTlIMTFWMjFINVYxOUw4LjMzIDE1SDVWMTNNOSAzSDdDNS45IDMgNSAzLjkgNSA1VjExSDdWOUg5VjExSDExVjVDMTEgMy45IDEwLjExIDMgOSAzTTkgN0g3VjVIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0QWxwaGFiZXRpY2FsRGVzY2VuZGluZ1ZhcmlhbnQgPSBcIk0xNS43NSAxOUwxMi41IDIyLjI1TDkuMjUgMTlIMTUuNzVNOC44OSAxNC4zSDZMNS4yOCAxN0gyLjkxTDYgN0g5TDEyLjEzIDE3SDkuNjdMOC44OSAxNC4zTTYuMzMgMTIuNjhIOC41Nkw3LjkzIDEwLjU2TDcuNjcgOS41OUw3LjQyIDguNjNINy4zOUw3LjE3IDkuNkw2LjkzIDEwLjU4TDYuMzMgMTIuNjhNMTMuMDUgMTdWMTUuNzRMMTcuOCA4Ljk3VjguOTFIMTMuNVY3SDIwLjczVjguMzRMMTYuMDkgMTVWMTUuMDhIMjAuOFYxN0gxMy4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0QWxwaGFiZXRpY2FsVmFyaWFudCA9IFwiTTkuMjUsNUwxMi41LDEuNzVMMTUuNzUsNUg5LjI1TTE1Ljc1LDE5TDEyLjUsMjIuMjVMOS4yNSwxOUgxNS43NU04Ljg5LDE0LjNINkw1LjI4LDE3SDIuOTFMNiw3SDlMMTIuMTMsMTdIOS42N0w4Ljg5LDE0LjNNNi4zMywxMi42OEg4LjU2TDcuOTMsMTAuNTZMNy42Nyw5LjU5TDcuNDIsOC42M0g3LjM5TDcuMTcsOS42TDYuOTMsMTAuNThMNi4zMywxMi42OE0xMy4wNSwxN1YxNS43NEwxNy44LDguOTdWOC45MUgxMy41VjdIMjAuNzNWOC4zNEwxNi4wOSwxNVYxNS4wOEgyMC44VjE3SDEzLjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRBc2NlbmRpbmcgPSBcIk0xOSAxN0gyMkwxOCAyMUwxNCAxN0gxN1YzSDE5TTIgMTdIMTJWMTlIMk02IDVWN0gyVjVNMiAxMUg5VjEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEJvb2xBc2NlbmRpbmcgPSBcIk0xOSAxN0gyMkwxOCAyMUwxNCAxN0gxN1YzSDE5VjE3TTcgM0M0Ljc5IDMgMyA0Ljc5IDMgN1M0Ljc5IDExIDcgMTEgMTEgOS4yMSAxMSA3IDkuMjEgMyA3IDNNNyA5QzUuOSA5IDUgOC4xIDUgN1M1LjkgNSA3IDUgOSA1LjkgOSA3IDguMSA5IDcgOU03IDEzQzQuNzkgMTMgMyAxNC43OSAzIDE3UzQuNzkgMjEgNyAyMSAxMSAxOS4yMSAxMSAxNyA5LjIxIDEzIDcgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEJvb2xBc2NlbmRpbmdWYXJpYW50ID0gXCJNMTkgMTdIMjJMMTggMjFMMTQgMTdIMTdWM0gxOVYxN005IDEzSDVDMy44OSAxMyAzIDEzLjg5IDMgMTVWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFIOUMxMC4xMSAyMSAxMSAyMC4xMSAxMSAxOVYxNUMxMSAxMy44OSAxMC4xMSAxMyA5IDEzTTYuMjcgMTkuNUwzLjc0IDE2Ljk1TDQuODEgMTUuOUw2LjI4IDE3LjM5TDkuMiAxNC41TDEwLjI2IDE1LjU1TDYuMjcgMTkuNU05IDNINUMzLjg5IDMgMyAzLjg5IDMgNVY5QzMgMTAuMTEgMy44OSAxMSA1IDExSDlDMTAuMTEgMTEgMTEgMTAuMTEgMTEgOVY1QzExIDMuODkgMTAuMTEgMyA5IDNNOSA5SDVWNUg5VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydEJvb2xEZXNjZW5kaW5nID0gXCJNMTkgN0gyMkwxOCAzTDE0IDdIMTdWMjFIMTlNNSA3QzUgOC4xIDUuOSA5IDcgOUM4LjEgOSA5IDguMSA5IDdDOSA1LjkgOC4xIDUgNyA1QzUuOSA1IDUgNS45IDUgN003IDNDOS4yMSAzIDExIDQuNzkgMTEgN0MxMSA5LjIxIDkuMjEgMTEgNyAxMUM0Ljc5IDExIDMgOS4yMSAzIDdDMyA0Ljc5IDQuNzkgMyA3IDNNNyAxM0M0Ljc5IDEzIDMgMTQuNzkgMyAxN0MzIDE5LjIxIDQuNzkgMjEgNyAyMUM5LjIxIDIxIDExIDE5LjIxIDExIDE3QzExIDE0Ljc5IDkuMjEgMTMgNyAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0Qm9vbERlc2NlbmRpbmdWYXJpYW50ID0gXCJNMTkgN0gyMkwxOCAzTDE0IDdIMTdWMjFIMTlNNSAxM0MzLjg5IDEzIDMgMTMuODkgMyAxNVYxOUMzIDIwLjExIDMuODkgMjEgNSAyMUg5QzEwLjExIDIxIDExIDIwLjExIDExIDE5VjE1QzExIDEzLjg5IDEwLjExIDEzIDkgMTNNOS4yIDE0LjVMMTAuMjYgMTUuNTVMNi4yNyAxOS41TDMuNzQgMTYuOTVMNC44MSAxNS45TDYuMjggMTcuMzlNNSAzQzMuODkgMyAzIDMuODkgMyA1VjlDMyAxMC4xMSAzLjg5IDExIDUgMTFIOUMxMC4xMSAxMSAxMSAxMC4xMSAxMSA5VjVDMTEgMy44OSAxMC4xMSAzIDkgM001IDVIOVY5SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydENhbGVuZGFyQXNjZW5kaW5nID0gXCJNMjEgMTdIMjRMMjAgMjFMMTYgMTdIMTlWM0gyMVYxN004IDE2SDExVjEzSDhWMTZNMTMgNUgxMlYzSDEwVjVINlYzSDRWNUgzQzEuODkgNSAxIDUuODkgMSA3VjE4QzEgMTkuMTEgMS44OSAyMCAzIDIwSDEzQzE0LjExIDIwIDE1IDE5LjExIDE1IDE4VjdDMTUgNS44OSAxNC4xMSA1IDEzIDVNMyAxOEwzIDExSDEzTDEzIDE4TDMgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydENhbGVuZGFyRGVzY2VuZGluZyA9IFwiTTE5IDdIMTZMMjAgM0wyNCA3SDIxVjIxSDE5VjdNOCAxNkgxMVYxM0g4VjE2TTEzIDVIMTJWM0gxMFY1SDZWM0g0VjVIM0MxLjg5IDUgMSA1Ljg5IDEgN1YxOEMxIDE5LjExIDEuODkgMjAgMyAyMEgxM0MxNC4xMSAyMCAxNSAxOS4xMSAxNSAxOFY3QzE1IDUuODkgMTQuMTEgNSAxMyA1TTMgMThMMyAxMUgxM0wxMyAxOEwzIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRDbG9ja0FzY2VuZGluZyA9IFwiTTIwIDE3SDIzTDE5IDIxTDE1IDE3SDE4VjNIMjBWMTdNOCA1QzQuMTQgNSAxIDguMTMgMSAxMkMxIDE1Ljg3IDQuMTMgMTkgOCAxOUMxMS44NiAxOSAxNSAxNS44NyAxNSAxMkMxNSA4LjEzIDExLjg3IDUgOCA1TTEwLjE5IDE0LjUzTDcgMTIuNjlWOUg4LjVWMTEuODJMMTAuOTQgMTMuMjNMMTAuMTkgMTQuNTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydENsb2NrQXNjZW5kaW5nT3V0bGluZSA9IFwiTTIwIDE3SDIzTDE5IDIxTDE1IDE3SDE4VjNIMjBWMTdNOCA1QzQuMTQgNSAxIDguMTMgMSAxMkMxIDE1Ljg3IDQuMTMgMTkgOCAxOUMxMS44NiAxOSAxNSAxNS44NyAxNSAxMkMxNSA4LjEzIDExLjg3IDUgOCA1TTggNy4xNUMxMC42NyA3LjE1IDEyLjg1IDkuMzIgMTIuODUgMTJDMTIuODUgMTQuNjggMTAuNjggMTYuODUgOCAxNi44NUM1LjMyIDE2Ljg1IDMuMTUgMTQuNjggMy4xNSAxMkMzLjE1IDkuMzIgNS4zMiA3LjE1IDggNy4xNU03IDlWMTIuNjlMMTAuMTkgMTQuNTNMMTAuOTQgMTMuMjNMOC41IDExLjgyVjlcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0Q2xvY2tEZXNjZW5kaW5nID0gXCJNMTggN0gxNUwxOSAzTDIzIDdIMjBWMjFIMThWN004IDVDNC4xNCA1IDEgOC4xMyAxIDEyQzEgMTUuODcgNC4xMyAxOSA4IDE5QzExLjg2IDE5IDE1IDE1Ljg3IDE1IDEyQzE1IDguMTMgMTEuODcgNSA4IDVNMTAuMTkgMTQuNTNMNyAxMi42OVY5SDguNVYxMS44MkwxMC45NCAxMy4yM0wxMC4xOSAxNC41M1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0Q2xvY2tEZXNjZW5kaW5nT3V0bGluZSA9IFwiTTE4IDdIMTVMMTkgM0wyMyA3SDIwVjIxSDE4VjdNOCA1QzQuMTQgNSAxIDguMTMgMSAxMkMxIDE1Ljg3IDQuMTMgMTkgOCAxOUMxMS44NiAxOSAxNSAxNS44NyAxNSAxMkMxNSA4LjEzIDExLjg3IDUgOCA1TTggNy4xNUMxMC42NyA3LjE1IDEyLjg1IDkuMzIgMTIuODUgMTJDMTIuODUgMTQuNjggMTAuNjggMTYuODUgOCAxNi44NUM1LjMyIDE2Ljg1IDMuMTUgMTQuNjggMy4xNSAxMkMzLjE1IDkuMzIgNS4zMiA3LjE1IDggNy4xNU03IDlWMTIuNjlMMTAuMTkgMTQuNTNMMTAuOTQgMTMuMjNMOC41IDExLjgyVjlcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0RGVzY2VuZGluZyA9IFwiTTE5IDdIMjJMMTggM0wxNCA3SDE3VjIxSDE5TTIgMTdIMTJWMTlIMk02IDVWN0gyVjVNMiAxMUg5VjEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydE51bWVyaWNBc2NlbmRpbmcgPSBcIk0xOSAxN0gyMkwxOCAyMUwxNCAxN0gxN1YzSDE5VjE3TTkgMTNIN0M1LjkgMTMgNSAxMy45IDUgMTVWMTZDNSAxNy4xMSA1LjkgMTggNyAxOEg5VjE5SDVWMjFIOUMxMC4xMSAyMSAxMSAyMC4xMSAxMSAxOVYxNUMxMSAxMy45IDEwLjExIDEzIDkgMTNNOSAxNkg3VjE1SDlWMTZNOSAzSDdDNS45IDMgNSAzLjkgNSA1VjlDNSAxMC4xMSA1LjkgMTEgNyAxMUg5QzEwLjExIDExIDExIDEwLjExIDExIDlWNUMxMSAzLjkgMTAuMTEgMyA5IDNNOSA5SDdWNUg5VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU29ydE51bWVyaWNBc2NlbmRpbmdWYXJpYW50ID0gXCJNNy43OCA3QzkuMDggNy4wNCAxMCA3LjUzIDEwLjU3IDguNDZDMTEuMTMgOS40IDExLjQxIDEwLjU2IDExLjM5IDExLjk1QzExLjQgMTMuNSAxMS4wOSAxNC43MyAxMC41IDE1LjYyQzkuODggMTYuNSA4Ljk1IDE2Ljk3IDcuNzEgMTdDNi40NSAxNi45NiA1LjU0IDE2LjUgNC45NiAxNS41NkM0LjM4IDE0LjYzIDQuMDkgMTMuNDUgNC4wOSAxMlM0LjM5IDkuMzYgNSA4LjQ0QzUuNTkgNy41IDYuNSA3LjA0IDcuNzggN003Ljc1IDguNjNDNy4zMSA4LjYzIDYuOTYgOC45IDYuNyA5LjQ2QzYuNDQgMTAgNi4zMiAxMC44NyA2LjMyIDEyQzYuMzEgMTMuMTUgNi40NCAxNCA2LjY5IDE0LjU0QzYuOTUgMTUuMSA3LjMxIDE1LjM3IDcuNzcgMTUuMzdDOC42OSAxNS4zNyA5LjE2IDE0LjI0IDkuMTcgMTJDOS4xNyA5Ljc3IDguNyA4LjY1IDcuNzUgOC42M00xMy4zMyAxN1YxNS4yMkwxMy43NiAxNS4yNEwxNC4zIDE1LjIyTDE1LjM0IDE1LjAzQzE1LjY4IDE0LjkyIDE2IDE0Ljc4IDE2LjI2IDE0LjU4QzE2LjU5IDE0LjM1IDE2Ljg2IDE0LjA4IDE3LjA3IDEzLjc2QzE3LjI5IDEzLjQ1IDE3LjQ0IDEzLjEyIDE3LjUzIDEyLjc4TDE3LjUgMTIuNzdDMTcuMDUgMTMuMTkgMTYuMzggMTMuNCAxNS40NyAxMy40MUMxNC42MiAxMy40IDEzLjkxIDEzLjE1IDEzLjM0IDEyLjY1UzEyLjUgMTEuNDMgMTIuNDYgMTAuNUMxMi40NyA5LjUgMTIuODEgOC42OSAxMy40NyA4LjAzQzE0LjE0IDcuMzcgMTUgNy4wMyAxNi4xMiA3QzE3LjM3IDcuMDQgMTguMjkgNy40NSAxOC44OCA4LjI0QzE5LjQ3IDkgMTkuNzYgMTAgMTkuNzYgMTEuMTlDMTkuNzUgMTIuMTUgMTkuNjEgMTMgMTkuMzIgMTMuNzZDMTkuMDMgMTQuNSAxOC42NCAxNS4xMyAxOC4xMiAxNS42NEMxNy42NiAxNi4wNiAxNy4xMSAxNi4zOCAxNi40NyAxNi42MUMxNS44MyAxNi44MyAxNS4xMiAxNi45NiAxNC4zNCAxN0gxMy4zM00xNi4wNiA4LjYzQzE1LjY1IDguNjQgMTUuMzIgOC44IDE1LjA2IDkuMTFDMTQuODEgOS40MiAxNC42OCA5Ljg0IDE0LjY4IDEwLjM2QzE0LjY4IDEwLjggMTQuOCAxMS4xNiAxNS4wMyAxMS40NkMxNS4yNyAxMS43NyAxNS42MyAxMS45MiAxNi4xMSAxMS45M0MxNi40MyAxMS45MyAxNi43IDExLjg2IDE2LjkyIDExLjc0QzE3LjE0IDExLjYxIDE3LjMgMTEuNDYgMTcuNDEgMTEuMjhDMTcuNSAxMS4xNyAxNy41MyAxMC45NyAxNy41MyAxMC43MUMxNy41NCAxMC4xNiAxNy40MyA5LjY5IDE3LjIgOS4yOEMxNi45NyA4Ljg3IDE2LjU5IDguNjUgMTYuMDYgOC42M005LjI1IDVMMTIuNSAxLjc1TDE1Ljc1IDVIOS4yNVwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnROdW1lcmljRGVzY2VuZGluZyA9IFwiTTE5IDdIMjJMMTggM0wxNCA3SDE3VjIxSDE5TTkgMjFINVYxOUg5VjE4SDdDNS45IDE4IDUgMTcuMTEgNSAxNlYxNUM1IDEzLjkgNS45IDEzIDcgMTNIOUMxMC4xMSAxMyAxMSAxMy45IDExIDE1VjE5QzExIDIwLjExIDEwLjExIDIxIDkgMjFNOSAxNUg3VjE2SDlNNyAzSDlDMTAuMTEgMyAxMSAzLjkgMTEgNVY5QzExIDEwLjExIDEwLjExIDExIDkgMTFIN0M1LjkgMTEgNSAxMC4xMSA1IDlWNUM1IDMuOSA1LjkgMyA3IDNNNyA5SDlWNUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnROdW1lcmljRGVzY2VuZGluZ1ZhcmlhbnQgPSBcIk03Ljc4IDdDOS4wOCA3LjA0IDEwIDcuNTMgMTAuNTcgOC40NkMxMS4xMyA5LjQgMTEuNDEgMTAuNTYgMTEuMzkgMTEuOTVDMTEuNCAxMy41IDExLjA5IDE0LjczIDEwLjUgMTUuNjJDOS44OCAxNi41IDguOTUgMTYuOTcgNy43MSAxN0M2LjQ1IDE2Ljk2IDUuNTQgMTYuNSA0Ljk2IDE1LjU2QzQuMzggMTQuNjMgNC4wOSAxMy40NSA0LjA5IDEyUzQuMzkgOS4zNiA1IDguNDRDNS41OSA3LjUgNi41IDcuMDQgNy43OCA3TTcuNzUgOC42M0M3LjMxIDguNjMgNi45NiA4LjkgNi43IDkuNDZDNi40NCAxMCA2LjMyIDEwLjg3IDYuMzIgMTJDNi4zMSAxMy4xNSA2LjQ0IDE0IDYuNjkgMTQuNTRDNi45NSAxNS4xIDcuMzEgMTUuMzcgNy43NyAxNS4zN0M4LjY5IDE1LjM3IDkuMTYgMTQuMjQgOS4xNyAxMkM5LjE3IDkuNzcgOC43IDguNjUgNy43NSA4LjYzTTEzLjMzIDE3VjE1LjIyTDEzLjc2IDE1LjI0TDE0LjMgMTUuMjJMMTUuMzQgMTUuMDNDMTUuNjggMTQuOTIgMTYgMTQuNzggMTYuMjYgMTQuNThDMTYuNTkgMTQuMzUgMTYuODYgMTQuMDggMTcuMDcgMTMuNzZDMTcuMjkgMTMuNDUgMTcuNDQgMTMuMTIgMTcuNTMgMTIuNzhMMTcuNSAxMi43N0MxNy4wNSAxMy4xOSAxNi4zOCAxMy40IDE1LjQ3IDEzLjQxQzE0LjYyIDEzLjQgMTMuOTEgMTMuMTUgMTMuMzQgMTIuNjVTMTIuNSAxMS40MyAxMi40NiAxMC41QzEyLjQ3IDkuNSAxMi44MSA4LjY5IDEzLjQ3IDguMDNDMTQuMTQgNy4zNyAxNSA3LjAzIDE2LjEyIDdDMTcuMzcgNy4wNCAxOC4yOSA3LjQ1IDE4Ljg4IDguMjRDMTkuNDcgOSAxOS43NiAxMCAxOS43NiAxMS4xOUMxOS43NSAxMi4xNSAxOS42MSAxMyAxOS4zMiAxMy43NkMxOS4wMyAxNC41IDE4LjY0IDE1LjEzIDE4LjEyIDE1LjY0QzE3LjY2IDE2LjA2IDE3LjExIDE2LjM4IDE2LjQ3IDE2LjYxQzE1LjgzIDE2LjgzIDE1LjEyIDE2Ljk2IDE0LjM0IDE3SDEzLjMzTTE2LjA2IDguNjNDMTUuNjUgOC42NCAxNS4zMiA4LjggMTUuMDYgOS4xMUMxNC44MSA5LjQyIDE0LjY4IDkuODQgMTQuNjggMTAuMzZDMTQuNjggMTAuOCAxNC44IDExLjE2IDE1LjAzIDExLjQ2QzE1LjI3IDExLjc3IDE1LjYzIDExLjkyIDE2LjExIDExLjkzQzE2LjQzIDExLjkzIDE2LjcgMTEuODYgMTYuOTIgMTEuNzRDMTcuMTQgMTEuNjEgMTcuMyAxMS40NiAxNy40MSAxMS4yOEMxNy41IDExLjE3IDE3LjUzIDEwLjk3IDE3LjUzIDEwLjcxQzE3LjU0IDEwLjE2IDE3LjQzIDkuNjkgMTcuMiA5LjI4QzE2Ljk3IDguODcgMTYuNTkgOC42NSAxNi4wNiA4LjYzTTE1Ljc1IDE5TDEyLjUgMjIuMjVMOS4yNSAxOUgxNS43NVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0TnVtZXJpY1ZhcmlhbnQgPSBcIk03Ljc4LDdDOS4wOCw3LjA0IDEwLDcuNTMgMTAuNTcsOC40NkMxMS4xMyw5LjQgMTEuNDEsMTAuNTYgMTEuMzksMTEuOTVDMTEuNCwxMy41IDExLjA5LDE0LjczIDEwLjUsMTUuNjJDOS44OCwxNi41IDguOTUsMTYuOTcgNy43MSwxN0M2LjQ1LDE2Ljk2IDUuNTQsMTYuNSA0Ljk2LDE1LjU2QzQuMzgsMTQuNjMgNC4wOSwxMy40NSA0LjA5LDEyQzQuMDksMTAuNTUgNC4zOSw5LjM2IDUsOC40NEM1LjU5LDcuNSA2LjUsNy4wNCA3Ljc4LDdNNy43NSw4LjYzQzcuMzEsOC42MyA2Ljk2LDguOSA2LjcsOS40NkM2LjQ0LDEwIDYuMzIsMTAuODcgNi4zMiwxMkM2LjMxLDEzLjE1IDYuNDQsMTQgNi42OSwxNC41NEM2Ljk1LDE1LjEgNy4zMSwxNS4zNyA3Ljc3LDE1LjM3QzguNjksMTUuMzcgOS4xNiwxNC4yNCA5LjE3LDEyQzkuMTcsOS43NyA4LjcsOC42NSA3Ljc1LDguNjNNMTMuMzMsMTdWMTUuMjJMMTMuNzYsMTUuMjRMMTQuMywxNS4yMkwxNS4zNCwxNS4wM0MxNS42OCwxNC45MiAxNiwxNC43OCAxNi4yNiwxNC41OEMxNi41OSwxNC4zNSAxNi44NiwxNC4wOCAxNy4wNywxMy43NkMxNy4yOSwxMy40NSAxNy40NCwxMy4xMiAxNy41MywxMi43OEwxNy41LDEyLjc3QzE3LjA1LDEzLjE5IDE2LjM4LDEzLjQgMTUuNDcsMTMuNDFDMTQuNjIsMTMuNCAxMy45MSwxMy4xNSAxMy4zNCwxMi42NUMxMi43NywxMi4xNSAxMi41LDExLjQzIDEyLjQ2LDEwLjVDMTIuNDcsOS41IDEyLjgxLDguNjkgMTMuNDcsOC4wM0MxNC4xNCw3LjM3IDE1LDcuMDMgMTYuMTIsN0MxNy4zNyw3LjA0IDE4LjI5LDcuNDUgMTguODgsOC4yNEMxOS40Nyw5IDE5Ljc2LDEwIDE5Ljc2LDExLjE5QzE5Ljc1LDEyLjE1IDE5LjYxLDEzIDE5LjMyLDEzLjc2QzE5LjAzLDE0LjUgMTguNjQsMTUuMTMgMTguMTIsMTUuNjRDMTcuNjYsMTYuMDYgMTcuMTEsMTYuMzggMTYuNDcsMTYuNjFDMTUuODMsMTYuODMgMTUuMTIsMTYuOTYgMTQuMzQsMTdIMTMuMzNNMTYuMDYsOC42M0MxNS42NSw4LjY0IDE1LjMyLDguOCAxNS4wNiw5LjExQzE0LjgxLDkuNDIgMTQuNjgsOS44NCAxNC42OCwxMC4zNkMxNC42OCwxMC44IDE0LjgsMTEuMTYgMTUuMDMsMTEuNDZDMTUuMjcsMTEuNzcgMTUuNjMsMTEuOTIgMTYuMTEsMTEuOTNDMTYuNDMsMTEuOTMgMTYuNywxMS44NiAxNi45MiwxMS43NEMxNy4xNCwxMS42MSAxNy4zLDExLjQ2IDE3LjQxLDExLjI4QzE3LjUsMTEuMTcgMTcuNTMsMTAuOTcgMTcuNTMsMTAuNzFDMTcuNTQsMTAuMTYgMTcuNDMsOS42OSAxNy4yLDkuMjhDMTYuOTcsOC44NyAxNi41OSw4LjY1IDE2LjA2LDguNjNNOS4yNSw1TDEyLjUsMS43NUwxNS43NSw1SDkuMjVNMTUuNzUsMTlMMTIuNSwyMi4yNUw5LjI1LDE5SDE1Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRSZXZlcnNlVmFyaWFudCA9IFwiTTMgMTFIMTVWMTNIM00zIDE4VjE2SDIxVjE4TTMgNkg5VjhIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0VmFyaWFudCA9IFwiTTMsMTNIMTVWMTFIM00zLDZWOEgyMVY2TTMsMThIOVYxNkgzVjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRWYXJpYW50TG9jayA9IFwiTTMsMTNWMTFIMTVWMTNIM00zLDZIMjFWOEgzVjZNMywxOFYxNkg5VjE4SDNNMjIsMjJIMTRWMThIMTVWMTdBMywzIDAgMCwxIDE4LDE0QTMsMyAwIDAsMSAyMSwxN1YxOEgyMlYyMk0xOCwxNkExLDEgMCAwLDAgMTcsMTdWMThIMTlWMTdBMSwxIDAgMCwwIDE4LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvcnRWYXJpYW50TG9ja09wZW4gPSBcIk0zLDEzVjExSDE1VjEzSDNNMyw2SDIxVjhIM1Y2TTMsMThWMTZIOVYxOEgzTTIyLDIySDE0VjE4SDE1VjE2QTMsMyAwIDAsMSAxOCwxM0EzLDMgMCAwLDEgMjEsMTZIMTlBMSwxIDAgMCwwIDE4LDE1QTEsMSAwIDAsMCAxNywxNlYxOEgyMlYyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3J0VmFyaWFudFJlbW92ZSA9IFwiTTMgMTNIMTVWMTFIM00zIDZWOEgyMVY2TTMgMThIOVYxNkgzVjE4TTIyLjU0IDE2Ljg4TDIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ3IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TDE2Ljg4IDE1LjQ3TDE5IDE3LjU5TDIxLjEyIDE1LjQ2TDIyLjU0IDE2Ljg4XCI7XHJcbmV4cG9ydCB2YXIgbWRpU291bmRjbG91ZCA9IFwiTTExLjU2LDguODdWMTdIMjAuMzJWMTdDMjIuMTcsMTYuODcgMjMsMTUuNzMgMjMsMTQuMzNDMjMsMTIuODUgMjEuODgsMTEuNjYgMjAuMzgsMTEuNjZDMjAsMTEuNjYgMTkuNjgsMTEuNzQgMTkuMzUsMTEuODhDMTkuMTEsOS41NCAxNy4xMiw3LjcxIDE0LjY3LDcuNzFDMTMuNSw3LjcxIDEyLjM5LDguMTUgMTEuNTYsOC44N00xMC42OCw5Ljg5QzEwLjM4LDkuNzEgMTAuMDYsOS41NyA5LjcxLDkuNVYxN0gxMS4xVjkuMzRDMTAuOTUsOS41IDEwLjgxLDkuNyAxMC42OCw5Ljg5TTguMzMsOS4zNVYxN0g5LjI1VjkuMzhDOS4wNiw5LjM1IDguODcsOS4zNCA4LjY3LDkuMzRDOC41NSw5LjM0IDguNDQsOS4zNCA4LjMzLDkuMzVNNi41LDEwVjE3SDcuNDFWOS41NEM3LjA4LDkuNjUgNi43Nyw5LjgxIDYuNSwxME00LjgzLDEyLjVDNC43NywxMi41IDQuNzEsMTIuNDQgNC42NCwxMi40MVYxN0g1LjU2VjEwLjg2QzUuMTksMTEuMzQgNC45NCwxMS45MSA0LjgzLDEyLjVNMi43OSwxMi4yMlYxNi45MUMzLDE2Ljk3IDMuMjQsMTcgMy41LDE3SDMuNzJWMTIuMTRDMy42NCwxMi4xMyAzLjU2LDEyLjEyIDMuNSwxMi4xMkMzLjI0LDEyLjEyIDMsMTIuMTYgMi43OSwxMi4yMk0xLDE0LjU2QzEsMTUuMzEgMS4zNCwxNS45NyAxLjg3LDE2LjQyVjEyLjcxQzEuMzQsMTMuMTUgMSwxMy44MiAxLDE0LjU2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUJyYW5jaCA9IFwiTTEzLDE0QzkuNjQsMTQgOC41NCwxNS4zNSA4LjE4LDE2LjI0QzkuMjUsMTYuNyAxMCwxNy43NiAxMCwxOUEzLDMgMCAwLDEgNywyMkEzLDMgMCAwLDEgNCwxOUM0LDE3LjY5IDQuODMsMTYuNTggNiwxNi4xN1Y3LjgzQzQuODMsNy40MiA0LDYuMzEgNCw1QTMsMyAwIDAsMSA3LDJBMywzIDAgMCwxIDEwLDVDMTAsNi4zMSA5LjE3LDcuNDIgOCw3LjgzVjEzLjEyQzguODgsMTIuNDcgMTAuMTYsMTIgMTIsMTJDMTQuNjcsMTIgMTUuNTYsMTAuNjYgMTUuODUsOS43N0MxNC43Nyw5LjMyIDE0LDguMjUgMTQsN0EzLDMgMCAwLDEgMTcsNEEzLDMgMCAwLDEgMjAsN0MyMCw4LjM0IDE5LjEyLDkuNSAxNy45MSw5Ljg2QzE3LjY1LDExLjI5IDE2LjY4LDE0IDEzLDE0TTcsMThBMSwxIDAgMCwwIDYsMTlBMSwxIDAgMCwwIDcsMjBBMSwxIDAgMCwwIDgsMTlBMSwxIDAgMCwwIDcsMThNNyw0QTEsMSAwIDAsMCA2LDVBMSwxIDAgMCwwIDcsNkExLDEgMCAwLDAgOCw1QTEsMSAwIDAsMCA3LDRNMTcsNkExLDEgMCAwLDAgMTYsN0ExLDEgMCAwLDAgMTcsOEExLDEgMCAwLDAgMTgsN0ExLDEgMCAwLDAgMTcsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VCcmFuY2hDaGVjayA9IFwiTTEzIDE0QzkuNjQgMTQgOC41NCAxNS4zNSA4LjE4IDE2LjI0QzkuMjUgMTYuNyAxMCAxNy43NiAxMCAxOUMxMCAyMC42NiA4LjY2IDIyIDcgMjJTNCAyMC42NiA0IDE5QzQgMTcuNjkgNC44MyAxNi41OCA2IDE2LjE3VjcuODNDNC44MyA3LjQyIDQgNi4zMSA0IDVDNCAzLjM0IDUuMzQgMiA3IDJTMTAgMy4zNCAxMCA1QzEwIDYuMzEgOS4xNyA3LjQyIDggNy44M1YxMy4xMkM4Ljg4IDEyLjQ3IDEwLjE2IDEyIDEyIDEyQzE0LjY3IDEyIDE1LjU2IDEwLjY2IDE1Ljg1IDkuNzdDMTQuNzcgOS4zMiAxNCA4LjI1IDE0IDdDMTQgNS4zNCAxNS4zNCA0IDE3IDRTMjAgNS4zNCAyMCA3QzIwIDguMzQgMTkuMTIgOS41IDE3LjkxIDkuODZDMTcuNjUgMTEuMjkgMTYuNjggMTQgMTMgMTRNNyAxOEM2LjQ1IDE4IDYgMTguNDUgNiAxOVM2LjQ1IDIwIDcgMjAgOCAxOS41NSA4IDE5IDcuNTUgMTggNyAxOE03IDRDNi40NSA0IDYgNC40NSA2IDVTNi40NSA2IDcgNiA4IDUuNTUgOCA1IDcuNTUgNCA3IDRNMTcgNkMxNi40NSA2IDE2IDYuNDUgMTYgN1MxNi40NSA4IDE3IDggMTggNy41NSAxOCA3IDE3LjU1IDYgMTcgNk0xNi43NSAyMS4xNkwxNCAxOC4xNkwxNS4xNiAxN0wxNi43NSAxOC41OUwyMC4zNCAxNUwyMS41IDE2LjQxTDE2Ljc1IDIxLjE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQnJhbmNoTWludXMgPSBcIk0xMyAxNEM5LjY0IDE0IDguNTQgMTUuMzUgOC4xOCAxNi4yNEM5LjI1IDE2LjcgMTAgMTcuNzYgMTAgMTlDMTAgMjAuNjYgOC42NiAyMiA3IDIyUzQgMjAuNjYgNCAxOUM0IDE3LjY5IDQuODMgMTYuNTggNiAxNi4xN1Y3LjgzQzQuODMgNy40MiA0IDYuMzEgNCA1QzQgMy4zNCA1LjM0IDIgNyAyUzEwIDMuMzQgMTAgNUMxMCA2LjMxIDkuMTcgNy40MiA4IDcuODNWMTMuMTJDOC44OCAxMi40NyAxMC4xNiAxMiAxMiAxMkMxNC42NyAxMiAxNS41NiAxMC42NiAxNS44NSA5Ljc3QzE0Ljc3IDkuMzIgMTQgOC4yNSAxNCA3QzE0IDUuMzQgMTUuMzQgNCAxNyA0UzIwIDUuMzQgMjAgN0MyMCA4LjM0IDE5LjEyIDkuNSAxNy45MSA5Ljg2QzE3LjY1IDExLjI5IDE2LjY4IDE0IDEzIDE0TTcgMThDNi40NSAxOCA2IDE4LjQ1IDYgMTlTNi40NSAyMCA3IDIwIDggMTkuNTUgOCAxOSA3LjU1IDE4IDcgMThNNyA0QzYuNDUgNCA2IDQuNDUgNiA1UzYuNDUgNiA3IDYgOCA1LjU1IDggNSA3LjU1IDQgNyA0TTE3IDZDMTYuNDUgNiAxNiA2LjQ1IDE2IDdTMTYuNDUgOCAxNyA4IDE4IDcuNTUgMTggNyAxNy41NSA2IDE3IDZNMTQgMTdWMTlIMjJWMTdIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQnJhbmNoUGx1cyA9IFwiTTEzIDE0QzkuNjQgMTQgOC41NCAxNS4zNSA4LjE4IDE2LjI0QzkuMjUgMTYuNyAxMCAxNy43NiAxMCAxOUMxMCAyMC42NiA4LjY2IDIyIDcgMjJTNCAyMC42NiA0IDE5QzQgMTcuNjkgNC44MyAxNi41OCA2IDE2LjE3VjcuODNDNC44MyA3LjQyIDQgNi4zMSA0IDVDNCAzLjM0IDUuMzQgMiA3IDJTMTAgMy4zNCAxMCA1QzEwIDYuMzEgOS4xNyA3LjQyIDggNy44M1YxMy4xMkM4Ljg4IDEyLjQ3IDEwLjE2IDEyIDEyIDEyQzE0LjY3IDEyIDE1LjU2IDEwLjY2IDE1Ljg1IDkuNzdDMTQuNzcgOS4zMiAxNCA4LjI1IDE0IDdDMTQgNS4zNCAxNS4zNCA0IDE3IDRTMjAgNS4zNCAyMCA3QzIwIDguMzQgMTkuMTIgOS41IDE3LjkxIDkuODZDMTcuNjUgMTEuMjkgMTYuNjggMTQgMTMgMTRNNyAxOEM2LjQ1IDE4IDYgMTguNDUgNiAxOVM2LjQ1IDIwIDcgMjAgOCAxOS41NSA4IDE5IDcuNTUgMTggNyAxOE03IDRDNi40NSA0IDYgNC40NSA2IDVTNi40NSA2IDcgNiA4IDUuNTUgOCA1IDcuNTUgNCA3IDRNMTcgNkMxNi40NSA2IDE2IDYuNDUgMTYgN1MxNi40NSA4IDE3IDggMTggNy41NSAxOCA3IDE3LjU1IDYgMTcgNk0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VCcmFuY2hSZWZyZXNoID0gXCJNMTMgMTRDOS42NCAxNCA4LjU0IDE1LjM1IDguMTggMTYuMjRDOS4yNSAxNi43IDEwIDE3Ljc2IDEwIDE5QzEwIDIwLjY2IDguNjYgMjIgNyAyMlM0IDIwLjY2IDQgMTlDNCAxNy42OSA0LjgzIDE2LjU4IDYgMTYuMTdWNy44M0M0LjgzIDcuNDIgNCA2LjMxIDQgNUM0IDMuMzQgNS4zNCAyIDcgMlMxMCAzLjM0IDEwIDVDMTAgNi4zMSA5LjE3IDcuNDIgOCA3LjgzVjEzLjEyQzguODggMTIuNDcgMTAuMTYgMTIgMTIgMTJDMTQuNjcgMTIgMTUuNTYgMTAuNjYgMTUuODUgOS43N0MxNC43NyA5LjMyIDE0IDguMjUgMTQgN0MxNCA1LjM0IDE1LjM0IDQgMTcgNFMyMCA1LjM0IDIwIDdDMjAgOC4zNCAxOS4xMiA5LjUgMTcuOTEgOS44NkMxNy42NSAxMS4yOSAxNi42OCAxNCAxMyAxNE03IDE4QzYuNDUgMTggNiAxOC40NSA2IDE5UzYuNDUgMjAgNyAyMCA4IDE5LjU1IDggMTkgNy41NSAxOCA3IDE4TTcgNEM2LjQ1IDQgNiA0LjQ1IDYgNVM2LjQ1IDYgNyA2IDggNS41NSA4IDUgNy41NSA0IDcgNE0xNyA2QzE2LjQ1IDYgMTYgNi40NSAxNiA3UzE2LjQ1IDggMTcgOCAxOCA3LjU1IDE4IDcgMTcuNTUgNiAxNyA2TTE4IDE0QzE5LjEgMTQgMjAuMSAxNC40IDIwLjggMTUuMkwyMiAxNFYxOEgxOEwxOS44IDE2LjJDMTkuMyAxNS44IDE4LjcgMTUuNSAxOCAxNS41QzE2LjYgMTUuNSAxNS41IDE2LjYgMTUuNSAxOFMxNi42IDIwLjUgMTggMjAuNUMxOC44IDIwLjUgMTkuNSAyMC4xIDIwIDE5LjVIMjEuN0MyMS4xIDIxIDE5LjcgMjIgMTggMjJDMTUuOCAyMiAxNCAyMC4yIDE0IDE4UzE1LjggMTQgMTggMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQnJhbmNoUmVtb3ZlID0gXCJNMTMgMTRDOS42NCAxNCA4LjU0IDE1LjM1IDguMTggMTYuMjRDOS4yNSAxNi43IDEwIDE3Ljc2IDEwIDE5QzEwIDIwLjY2IDguNjYgMjIgNyAyMlM0IDIwLjY2IDQgMTlDNCAxNy42OSA0LjgzIDE2LjU4IDYgMTYuMTdWNy44M0M0LjgzIDcuNDIgNCA2LjMxIDQgNUM0IDMuMzQgNS4zNCAyIDcgMlMxMCAzLjM0IDEwIDVDMTAgNi4zMSA5LjE3IDcuNDIgOCA3LjgzVjEzLjEyQzguODggMTIuNDcgMTAuMTYgMTIgMTIgMTJDMTQuNjcgMTIgMTUuNTYgMTAuNjYgMTUuODUgOS43N0MxNC43NyA5LjMyIDE0IDguMjUgMTQgN0MxNCA1LjM0IDE1LjM0IDQgMTcgNFMyMCA1LjM0IDIwIDdDMjAgOC4zNCAxOS4xMiA5LjUgMTcuOTEgOS44NkMxNy42NSAxMS4yOSAxNi42OCAxNCAxMyAxNE03IDE4QzYuNDUgMTggNiAxOC40NSA2IDE5UzYuNDUgMjAgNyAyMCA4IDE5LjU1IDggMTkgNy41NSAxOCA3IDE4TTcgNEM2LjQ1IDQgNiA0LjQ1IDYgNVM2LjQ1IDYgNyA2IDggNS41NSA4IDUgNy41NSA0IDcgNE0xNyA2QzE2LjQ1IDYgMTYgNi40NSAxNiA3UzE2LjQ1IDggMTcgOCAxOCA3LjU1IDE4IDcgMTcuNTUgNiAxNyA2TTIwLjEyIDE0LjQ2TDE4IDE2LjU5TDE1Ljg4IDE0LjQ3TDE0LjQ3IDE1Ljg4TDE2LjU5IDE4TDE0LjQ3IDIwLjEyTDE1Ljg4IDIxLjU0TDE4IDE5LjQxTDIwLjEyIDIxLjU0TDIxLjU0IDIwLjEyTDE5LjQxIDE4TDIxLjU0IDE1Ljg4TDIwLjEyIDE0LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUJyYW5jaFN5bmMgPSBcIk0xMyAxNEM5LjY0IDE0IDguNTQgMTUuMzUgOC4xOCAxNi4yNEM5LjI1IDE2LjcgMTAgMTcuNzYgMTAgMTlDMTAgMjAuNjYgOC42NiAyMiA3IDIyUzQgMjAuNjYgNCAxOUM0IDE3LjY5IDQuODMgMTYuNTggNiAxNi4xN1Y3LjgzQzQuODMgNy40MiA0IDYuMzEgNCA1QzQgMy4zNCA1LjM0IDIgNyAyUzEwIDMuMzQgMTAgNUMxMCA2LjMxIDkuMTcgNy40MiA4IDcuODNWMTMuMTJDOC44OCAxMi40NyAxMC4xNiAxMiAxMiAxMkMxNC42NyAxMiAxNS41NiAxMC42NiAxNS44NSA5Ljc3QzE0Ljc3IDkuMzIgMTQgOC4yNSAxNCA3QzE0IDUuMzQgMTUuMzQgNCAxNyA0UzIwIDUuMzQgMjAgN0MyMCA4LjM0IDE5LjEyIDkuNSAxNy45MSA5Ljg2QzE3LjY1IDExLjI5IDE2LjY4IDE0IDEzIDE0TTcgMThDNi40NSAxOCA2IDE4LjQ1IDYgMTlTNi40NSAyMCA3IDIwIDggMTkuNTUgOCAxOSA3LjU1IDE4IDcgMThNNyA0QzYuNDUgNCA2IDQuNDUgNiA1UzYuNDUgNiA3IDYgOCA1LjU1IDggNSA3LjU1IDQgNyA0TTE3IDZDMTYuNDUgNiAxNiA2LjQ1IDE2IDdTMTYuNDUgOCAxNyA4IDE4IDcuNTUgMTggNyAxNy41NSA2IDE3IDZNMTggMTNWMTQuNUMyMC4yMSAxNC41IDIyIDE2LjI5IDIyIDE4LjVDMjIgMTkuMzIgMjEuNzUgMjAuMDggMjEuMzMgMjAuNzFMMjAuMjQgMTkuNjJDMjAuNDEgMTkuMjggMjAuNSAxOC45IDIwLjUgMTguNUMyMC41IDE3LjEyIDE5LjM4IDE2IDE4IDE2VjE3LjVMMTUuNzUgMTUuMjVMMTUuNzIgMTUuMjJDMTUuNzggMTUuMTcgMTUuODUgMTUuMTMgMTggMTNNMTggMjRWMjIuNUMxNS43OSAyMi41IDE0IDIwLjcxIDE0IDE4LjVDMTQgMTcuNjggMTQuMjUgMTYuOTIgMTQuNjcgMTYuMjlMMTUuNzYgMTcuMzhDMTUuNTkgMTcuNzIgMTUuNSAxOC4xIDE1LjUgMTguNUMxNS41IDE5Ljg4IDE2LjYyIDIxIDE4IDIxVjE5LjVMMjAuMjUgMjEuNzVMMjAuMjggMjEuNzhDMjAuMjIgMjEuODMgMjAuMTUgMjEuODcgMTggMjRcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXQgPSBcIk0xNywxMkMxNywxNC40MiAxNS4yOCwxNi40NCAxMywxNi45VjIxSDExVjE2LjlDOC43MiwxNi40NCA3LDE0LjQyIDcsMTJDNyw5LjU4IDguNzIsNy41NiAxMSw3LjFWM0gxM1Y3LjFDMTUuMjgsNy41NiAxNyw5LjU4IDE3LDEyTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXRFbmQgPSBcIk0xNywxMkE1LDUgMCAwLDEgMTIsMTdBNSw1IDAgMCwxIDcsMTJDNyw5LjU4IDguNzIsNy41NiAxMSw3LjFWM0gxM1Y3LjFDMTUuMjgsNy41NiAxNyw5LjU4IDE3LDEyTTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXRFbmRMb2NhbCA9IFwiTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlNMTEsNVYzSDEzVjVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlQ29tbWl0TG9jYWwgPSBcIk0xMiw3QTUsNSAwIDAsMSAxNywxMkE1LDUgMCAwLDEgMTIsMTdBNSw1IDAgMCwxIDcsMTJBNSw1IDAgMCwxIDEyLDdNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTExLDVWM0gxM1Y1SDExTTExLDIxVjE5SDEzVjIxSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUNvbW1pdE5leHRMb2NhbCA9IFwiTTE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkM3LDkuNTggOC43Miw3LjU2IDExLDcuMVYzSDEzVjcuMUMxNS4yOCw3LjU2IDE3LDkuNTggMTcsMTJNMTIsOUEzLDMgMCAwLDAgOSwxMkEzLDMgMCAwLDAgMTIsMTVBMywzIDAgMCwwIDE1LDEyQTMsMyAwIDAsMCAxMiw5TTExLDIxVjE5SDEzVjIxSDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZUNvbW1pdFN0YXJ0ID0gXCJNMTIsN0E1LDUgMCAwLDEgMTcsMTJDMTcsMTQuNDIgMTUuMjgsMTYuNDQgMTMsMTYuOVYyMUgxMVYxNi45QzguNzIsMTYuNDQgNywxNC40MiA3LDEyQTUsNSAwIDAsMSAxMiw3TTEyLDlBMywzIDAgMCwwIDksMTJBMywzIDAgMCwwIDEyLDE1QTMsMyAwIDAsMCAxNSwxMkEzLDMgMCAwLDAgMTIsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VDb21taXRTdGFydE5leHRMb2NhbCA9IFwiTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlNMTEsMjFWMTlIMTNWMjFIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU291cmNlRm9yayA9IFwiTTYsMkEzLDMgMCAwLDEgOSw1QzksNi4yOCA4LjE5LDcuMzggNy4wNiw3LjgxQzcuMTUsOC4yNyA3LjM5LDguODMgOCw5LjYzQzksMTAuOTIgMTEsMTIuODMgMTIsMTQuMTdDMTMsMTIuODMgMTUsMTAuOTIgMTYsOS42M0MxNi42MSw4LjgzIDE2Ljg1LDguMjcgMTYuOTQsNy44MUMxNS44MSw3LjM4IDE1LDYuMjggMTUsNUEzLDMgMCAwLDEgMTgsMkEzLDMgMCAwLDEgMjEsNUMyMSw2LjMyIDIwLjE0LDcuNDUgMTguOTUsNy44NUMxOC44Nyw4LjM3IDE4LjY0LDkgMTgsOS44M0MxNywxMS4xNyAxNSwxMy4wOCAxNCwxNC4zOEMxMy4zOSwxNS4xNyAxMy4xNSwxNS43MyAxMy4wNiwxNi4xOUMxNC4xOSwxNi42MiAxNSwxNy43MiAxNSwxOUEzLDMgMCAwLDEgMTIsMjJBMywzIDAgMCwxIDksMTlDOSwxNy43MiA5LjgxLDE2LjYyIDEwLjk0LDE2LjE5QzEwLjg1LDE1LjczIDEwLjYxLDE1LjE3IDEwLDE0LjM4QzksMTMuMDggNywxMS4xNyA2LDkuODNDNS4zNiw5IDUuMTMsOC4zNyA1LjA1LDcuODVDMy44Niw3LjQ1IDMsNi4zMiAzLDVBMywzIDAgMCwxIDYsMk02LDRBMSwxIDAgMCwwIDUsNUExLDEgMCAwLDAgNiw2QTEsMSAwIDAsMCA3LDVBMSwxIDAgMCwwIDYsNE0xOCw0QTEsMSAwIDAsMCAxNyw1QTEsMSAwIDAsMCAxOCw2QTEsMSAwIDAsMCAxOSw1QTEsMSAwIDAsMCAxOCw0TTEyLDE4QTEsMSAwIDAsMCAxMSwxOUExLDEgMCAwLDAgMTIsMjBBMSwxIDAgMCwwIDEzLDE5QTEsMSAwIDAsMCAxMiwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTb3VyY2VNZXJnZSA9IFwiTTcsM0EzLDMgMCAwLDEgMTAsNkMxMCw3LjI5IDkuMTksOC4zOSA4LjA0LDguODFDOC41OCwxMy44MSAxMy4wOCwxNC43NyAxNS4xOSwxNC45NkMxNS42MSwxMy44MSAxNi43MSwxMyAxOCwxM0EzLDMgMCAwLDEgMjEsMTZBMywzIDAgMCwxIDE4LDE5QzE2LjY5LDE5IDE1LjU3LDE4LjE2IDE1LjE2LDE3QzEwLjkxLDE2LjggOS40NCwxNS4xOSA4LDEzLjM5VjE1LjE3QzkuMTcsMTUuNTggMTAsMTYuNjkgMTAsMThBMywzIDAgMCwxIDcsMjFBMywzIDAgMCwxIDQsMThDNCwxNi42OSA0LjgzLDE1LjU4IDYsMTUuMTdWOC44M0M0LjgzLDguNDIgNCw3LjMxIDQsNkEzLDMgMCAwLDEgNywzTTcsNUExLDEgMCAwLDAgNiw2QTEsMSAwIDAsMCA3LDdBMSwxIDAgMCwwIDgsNkExLDEgMCAwLDAgNyw1TTcsMTdBMSwxIDAgMCwwIDYsMThBMSwxIDAgMCwwIDcsMTlBMSwxIDAgMCwwIDgsMThBMSwxIDAgMCwwIDcsMTdNMTgsMTVBMSwxIDAgMCwwIDE3LDE2QTEsMSAwIDAsMCAxOCwxN0ExLDEgMCAwLDAgMTksMTZBMSwxIDAgMCwwIDE4LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZVB1bGwgPSBcIk02LDNBMywzIDAgMCwxIDksNkM5LDcuMzEgOC4xNyw4LjQyIDcsOC44M1YxNS4xN0M4LjE3LDE1LjU4IDksMTYuNjkgOSwxOEEzLDMgMCAwLDEgNiwyMUEzLDMgMCAwLDEgMywxOEMzLDE2LjY5IDMuODMsMTUuNTggNSwxNS4xN1Y4LjgzQzMuODMsOC40MiAzLDcuMzEgMyw2QTMsMyAwIDAsMSA2LDNNNiw1QTEsMSAwIDAsMCA1LDZBMSwxIDAgMCwwIDYsN0ExLDEgMCAwLDAgNyw2QTEsMSAwIDAsMCA2LDVNNiwxN0ExLDEgMCAwLDAgNSwxOEExLDEgMCAwLDAgNiwxOUExLDEgMCAwLDAgNywxOEExLDEgMCAwLDAgNiwxN00yMSwxOEEzLDMgMCAwLDEgMTgsMjFBMywzIDAgMCwxIDE1LDE4QzE1LDE2LjY5IDE1LjgzLDE1LjU4IDE3LDE1LjE3VjdIMTVWMTAuMjVMMTAuNzUsNkwxNSwxLjc1VjVIMTdBMiwyIDAgMCwxIDE5LDdWMTUuMTdDMjAuMTcsMTUuNTggMjEsMTYuNjkgMjEsMThNMTgsMTdBMSwxIDAgMCwwIDE3LDE4QTEsMSAwIDAsMCAxOCwxOUExLDEgMCAwLDAgMTksMThBMSwxIDAgMCwwIDE4LDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZVJlcG9zaXRvcnkgPSBcIk02LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyTTEyLjc1LDEzLjVDMTUuNSwxMy41IDE2LjI0LDExLjQ3IDE2LjQzLDEwLjRDMTcuMzQsMTAuMTEgMTgsOS4yNiAxOCw4LjI1QzE4LDcgMTcsNiAxNS43NSw2QzE0LjUsNiAxMy41LDcgMTMuNSw4LjI1QzEzLjUsOS4xOSAxNC4wNywxMCAxNC44OSwxMC4zM0MxNC42NywxMSAxNCwxMiAxMiwxMkMxMC42MiwxMiA5LjY2LDEyLjM1IDksMTIuODRWOC44N0M5Ljg3LDguNTYgMTAuNSw3LjczIDEwLjUsNi43NUMxMC41LDUuNSA5LjUsNC41IDguMjUsNC41QzcsNC41IDYsNS41IDYsNi43NUM2LDcuNzMgNi42Myw4LjU2IDcuNSw4Ljg3VjE1LjEzQzYuNjMsMTUuNDQgNiwxNi4yNyA2LDE3LjI1QzYsMTguNSA3LDE5LjUgOC4yNSwxOS41QzkuNSwxOS41IDEwLjUsMTguNSAxMC41LDE3LjI1QzEwLjUsMTYuMzIgOS45NCwxNS41IDkuMTMsMTUuMThDOS40MSwxNC41IDEwLjIzLDEzLjUgMTIuNzUsMTMuNU04LjI1LDE2LjVBMC43NSwwLjc1IDAgMCwxIDksMTcuMjVBMC43NSwwLjc1IDAgMCwxIDguMjUsMThBMC43NSwwLjc1IDAgMCwxIDcuNSwxNy4yNUEwLjc1LDAuNzUgMCAwLDEgOC4yNSwxNi41TTguMjUsNkEwLjc1LDAuNzUgMCAwLDEgOSw2Ljc1QTAuNzUsMC43NSAwIDAsMSA4LjI1LDcuNUEwLjc1LDAuNzUgMCAwLDEgNy41LDYuNzVBMC43NSwwLjc1IDAgMCwxIDguMjUsNk0xNS43NSw3LjVBMC43NSwwLjc1IDAgMCwxIDE2LjUsOC4yNUEwLjc1LDAuNzUgMCAwLDEgMTUuNzUsOUEwLjc1LDAuNzUgMCAwLDEgMTUsOC4yNUEwLjc1LDAuNzUgMCAwLDEgMTUuNzUsNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNvdXJjZVJlcG9zaXRvcnlNdWx0aXBsZSA9IFwiTTgsMEgyMEEyLDIgMCAwLDEgMjIsMlYxOEEyLDIgMCAwLDEgMjAsMjBIOEEyLDIgMCAwLDEgNiwxOFYyQTIsMiAwIDAsMSA4LDBNMTQuNzUsMTEuNUMxNy41LDExLjUgMTguMjQsOS40NyAxOC40Myw4LjRDMTkuMzQsOC4xMSAyMCw3LjI2IDIwLDYuMjVDMjAsNSAxOSw0IDE3Ljc1LDRDMTYuNSw0IDE1LjUsNSAxNS41LDYuMjVDMTUuNSw3LjE5IDE2LjA3LDggMTYuODksOC4zM0MxNi42Nyw5IDE2LDEwIDE0LDEwQzEyLjYyLDEwIDExLjY2LDEwLjM1IDExLDEwLjg0VjYuODdDMTEuODcsNi41NiAxMi41LDUuNzMgMTIuNSw0Ljc1QzEyLjUsMy41IDExLjUsMi41IDEwLjI1LDIuNUM5LDIuNSA4LDMuNSA4LDQuNzVDOCw1LjczIDguNjMsNi41NiA5LjUsNi44N1YxMy4xM0M4LjYzLDEzLjQ0IDgsMTQuMjcgOCwxNS4yNUM4LDE2LjUgOSwxNy41IDEwLjI1LDE3LjVDMTEuNSwxNy41IDEyLjUsMTYuNSAxMi41LDE1LjI1QzEyLjUsMTQuMzIgMTEuOTQsMTMuNSAxMS4xMywxMy4xOEMxMS40MSwxMi41IDEyLjIzLDExLjUgMTQuNzUsMTEuNU0xMC4yNSwxNC41QTAuNzUsMC43NSAwIDAsMSAxMSwxNS4yNUEwLjc1LDAuNzUgMCAwLDEgMTAuMjUsMTZBMC43NSwwLjc1IDAgMCwxIDkuNSwxNS4yNUEwLjc1LDAuNzUgMCAwLDEgMTAuMjUsMTQuNU0xMC4yNSw0QTAuNzUsMC43NSAwIDAsMSAxMSw0Ljc1QTAuNzUsMC43NSAwIDAsMSAxMC4yNSw1LjVBMC43NSwwLjc1IDAgMCwxIDkuNSw0Ljc1QTAuNzUsMC43NSAwIDAsMSAxMC4yNSw0TTE3Ljc1LDUuNUEwLjc1LDAuNzUgMCAwLDEgMTguNSw2LjI1QTAuNzUsMC43NSAwIDAsMSAxNy43NSw3QTAuNzUsMC43NSAwIDAsMSAxNyw2LjI1QTAuNzUsMC43NSAwIDAsMSAxNy43NSw1LjVNMTYsMjJWMjRINEEyLDIgMCAwLDEgMiwyMlY2SDRWMjJIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU295U2F1Y2UgPSBcIk0xMy45LDcuNUMxMy45LDYuOCAxNC4xLDYuMyAxNC4yLDZIMTQuOEwxNS43LDMuNUgxNi41VjJINy41VjMuNUg4LjNMOS4yLDZIOS44QzEwLDYuMyAxMC4xLDYuOCAxMC4xLDcuNUMxMC4xLDguOCA2LDEzLjcgNiwxNy42VjE5LjZDNiwyMSA4LjcsMjEuOSAxMiwyMS45QzE1LjMsMjEuOSAxOCwyMSAxOCwxOS42VjE3LjZDMTgsMTMuNyAxMy45LDguOCAxMy45LDcuNU0xMiwxNUEyLDIgMCAwLDEgMTAsMTNBMiwyIDAgMCwxIDEyLDExQTIsMiAwIDAsMSAxNCwxM0EyLDIgMCAwLDEgMTIsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU295U2F1Y2VPZmYgPSBcIk0yMi4xIDIxLjVMMi40IDEuN0wxLjEgM0w4LjYgMTAuNUM3LjUgMTIuNiA2IDE1LjMgNiAxNy42VjE5LjZDNiAyMSA4LjcgMjEuOSAxMiAyMS45QzE1LjEgMjEuOSAxNy43IDIxLjEgMTggMTkuOUwyMC45IDIyLjhMMjIuMSAyMS41TTEyIDE1QzEwLjkgMTUgMTAgMTQuMSAxMCAxM0MxMCAxMi43IDEwLjEgMTIuNCAxMC4yIDEyLjFMMTIuOSAxNC44QzEyLjYgMTQuOSAxMi4zIDE1IDEyIDE1TTguMyAzLjVINy41VjJIMTYuNVYzLjVIMTUuN0wxNC44IDZIMTQuMkMxNC4xIDYuMyAxMy45IDYuOCAxMy45IDcuNUMxMy45IDguNCAxNS45IDExIDE3LjEgMTMuOUwxMC4xIDYuOUMxMCA2LjUgOS45IDYuMiA5LjggNkg5LjJMOC4zIDMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGEgPSBcIk0xNS41LDkuNjNDMTUuMzEsNi44NCAxNC4xOCw0LjEyIDEyLjA2LDJDOS45Miw0LjE0IDguNzQsNi44NiA4LjUsOS42M0M5Ljc5LDEwLjMxIDEwLjk3LDExLjE5IDEyLDEyLjI2QzEzLjAzLDExLjIgMTQuMjEsMTAuMzIgMTUuNSw5LjYzTTEyLDE1LjQ1QzkuODUsMTIuMTcgNi4xOCwxMCAyLDEwQzIsMjAgMTEuMzIsMjEuODkgMTIsMjJDMTIuNjgsMjEuODggMjIsMjAgMjIsMTBDMTcuODIsMTAgMTQuMTUsMTIuMTcgMTIsMTUuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BhT3V0bGluZSA9IFwiTTE1LjUsOS42M0MxNC4yMSwxMC4zMiAxMy4wMywxMS4yIDEyLDEyLjI2QzEwLjk3LDExLjE5IDkuNzksMTAuMzEgOC41LDkuNjNDOC43NCw2Ljg2IDkuOTIsNC4xNCAxMi4wNiwyQzE0LjE4LDQuMTIgMTUuMzEsNi44NCAxNS41LDkuNjNNMTIsMTUuNDVDMTQuMTUsMTIuMTcgMTcuODIsMTAgMjIsMTBDMjIsMjAgMTIuNjgsMjEuODggMTIsMjJDMTEuMzIsMjEuODkgMiwyMCAyLDEwQzYuMTgsMTAgOS44NSwxMi4xNyAxMiwxNS40NU0xMi4wNSw1LjE5QzExLjM5LDYuMjMgMTAuOTMsNy4zOCAxMC42OCw4LjU4TDEyLDkuNTVMMTMuMzUsOC41N0MxMy4xMiw3LjM3IDEyLjY4LDYuMjIgMTIuMDUsNS4xOU0xMiwxOS45N0MxMiwxOS45NyAxOCwxOSAxOS43NCwxMi4yNUMxNCwxNCAxMiwxOS4xIDEyLDE5LjFDMTIsMTkuMSA5LDEzIDQuMjYsMTIuMjZDNiwxOSAxMiwxOS45NyAxMiwxOS45N1pcIjtcclxuZXhwb3J0IHZhciBtZGlTcGFjZUludmFkZXJzID0gXCJNNyw2SDVWNEg3VjZNMTcsNkgxOVY0SDE3VjZNMjMsMTJWMThIMjFWMTRIMTlWMThIMTdWMTZIN1YxOEg1VjE0SDNWMThIMVYxMkgzVjEwSDVWOEg3VjZIOVY4SDE1VjZIMTdWOEgxOVYxMEgyMVYxMkgyM00xNSwxMFYxMkgxN1YxMEgxNU03LDEySDlWMTBIN1YxMk0xMSwxOEg3VjIwSDExVjE4TTE3LDE4SDEzVjIwSDE3VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwYWNlU3RhdGlvbiA9IFwiTTE1LjUgMTlWMjFIMTMuNzNDMTMuMzkgMjEuNiAxMi43NCAyMiAxMiAyMkMxMS4yNiAyMiAxMC42MSAyMS42IDEwLjI3IDIxSDguNVYxOUgxMC4yN0MxMC40NCAxOC43IDEwLjcgMTguNDQgMTEgMTguMjdWMTdIMTBDOS40NSAxNyA5IDE2LjU1IDkgMTZWMTNINlYxN0M2IDE3LjU1IDUuNTUgMTggNSAxOEgzQzIuNDUgMTggMiAxNy41NSAyIDE3VjhDMiA3LjQ1IDIuNDUgNyAzIDdINUM1LjU1IDcgNiA3LjQ1IDYgOFYxMUg5VjhDOSA3LjQ1IDkuNDUgNyAxMCA3SDExVjZIMTBDOS40NSA2IDkgNS41NSA5IDVWNEM5IDMuNDUgOS40NSAzIDEwIDNIMTRDMTQuNTUgMyAxNSAzLjQ1IDE1IDRWNUMxNSA1LjU1IDE0LjU1IDYgMTQgNkgxM1Y3SDE0QzE0LjU1IDcgMTUgNy40NSAxNSA4VjExSDE4VjhDMTggNy40NSAxOC40NSA3IDE5IDdIMjFDMjEuNTUgNyAyMiA3LjQ1IDIyIDhWMTdDMjIgMTcuNTUgMjEuNTUgMTggMjEgMThIMTlDMTguNDUgMTggMTggMTcuNTUgMTggMTdWMTNIMTVWMTZDMTUgMTYuNTUgMTQuNTUgMTcgMTQgMTdIMTNWMTguMjdDMTMuMyAxOC40NCAxMy41NiAxOC43IDEzLjczIDE5SDE1LjVNMyAxNlYxN0g1VjE2SDNNMyAxNFYxNUg1VjE0SDNNMyAxMlYxM0g1VjEySDNNMyAxMFYxMUg1VjEwSDNNMyA4VjlINVY4SDNNMTkgMTZWMTdIMjFWMTZIMTlNMTkgMTRWMTVIMjFWMTRIMTlNMTkgMTJWMTNIMjFWMTJIMTlNMTkgMTBWMTFIMjFWMTBIMTlNMTkgOFY5SDIxVjhIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BhZGUgPSBcIk0xNS43MSwxLjIyTDEyLjg4LDQuMDVDMTIuMSw0LjgzIDEyLjEsNi4wOSAxMi44OCw2Ljg3TDE0LjMsOC4yOUwxMC4wNiwxMi41M0w3LjU4LDEwLjA2TDEuMjIsMTYuNDJMNy41OCwyMi43OEwxMy45NCwxNi40MkwxMS40NywxMy45NEwxNS43MSw5LjdMMTcuMTMsMTEuMTJDMTcuOTEsMTEuOSAxOS4xNywxMS45IDE5Ljk1LDExLjEyTDIyLjc4LDguMjlMMTUuNzEsMS4yMk0xNS43MSw0LjA1TDE5Ljk1LDguMjlMMTguNTQsOS43TDE0LjMsNS40NkwxNS43MSw0LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwYXJrbGVzID0gXCJNMTAuNiA5LjZMOSAxNUw3LjQgOS42TDIgOEw3LjQgNi40TDkgMUwxMC42IDYuNEwxNiA4TDEwLjYgOS42TTE3IDE0LjJMMjEgMTJMMTguOCAxNkwyMSAyMEwxNyAxNy44TDEzIDIwTDE1LjIgMTZMMTMgMTJMMTcgMTQuMk0xMCAxNkw4LjMgMTlMMTAgMjJMNyAyMC4zTDQgMjJMNS43IDE5TDQgMTZMNyAxNy43TDEwIDE2XCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BlYWtlciA9IFwiTTEyLDEyQTMsMyAwIDAsMCA5LDE1QTMsMyAwIDAsMCAxMiwxOEEzLDMgMCAwLDAgMTUsMTVBMywzIDAgMCwwIDEyLDEyTTEyLDIwQTUsNSAwIDAsMSA3LDE1QTUsNSAwIDAsMSAxMiwxMEE1LDUgMCAwLDEgMTcsMTVBNSw1IDAgMCwxIDEyLDIwTTEyLDRBMiwyIDAgMCwxIDE0LDZBMiwyIDAgMCwxIDEyLDhDMTAuODksOCAxMCw3LjEgMTAsNkMxMCw0Ljg5IDEwLjg5LDQgMTIsNE0xNywySDdDNS44OSwyIDUsMi44OSA1LDRWMjBBMiwyIDAgMCwwIDcsMjJIMTdBMiwyIDAgMCwwIDE5LDIwVjRDMTksMi44OSAxOC4xLDIgMTcsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGVha2VyQmx1ZXRvb3RoID0gXCJNNCwzQTIsMiAwIDAsMCAyLDVWMTlBMiwyIDAgMCwwIDQsMjFIMTJBMiwyIDAgMCwwIDE0LDE5VjVBMiwyIDAgMCwwIDEyLDNINE04LDVBMiwyIDAgMCwxIDEwLDdBMiwyIDAgMCwxIDgsOUEyLDIgMCAwLDEgNiw3QTIsMiAwIDAsMSA4LDVNMTksN1YxMC43OUwxNi43MSw4LjVMMTYsOS4yMUwxOC43OSwxMkwxNiwxNC43OUwxNi43MSwxNS41TDE5LDEzLjIxVjE3SDE5LjVMMjIuMzUsMTQuMTRMMjAuMjEsMTJMMjIuMzUsOS44NUwxOS41LDdIMTlNMjAsOC45MUwyMC45NCw5Ljg1TDIwLDEwLjc5VjguOTFNOCwxMUE0LDQgMCAwLDEgMTIsMTVBNCw0IDAgMCwxIDgsMTlBNCw0IDAgMCwxIDQsMTVBNCw0IDAgMCwxIDgsMTFNOCwxM0EyLDIgMCAwLDAgNiwxNUEyLDIgMCAwLDAgOCwxN0EyLDIgMCAwLDAgMTAsMTVBMiwyIDAgMCwwIDgsMTNNMjAsMTMuMjFMMjAuOTQsMTQuMTRMMjAsMTUuMDhWMTMuMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BlYWtlck11bHRpcGxlID0gXCJNMTQsMTBBMywzIDAgMCwwIDExLDEzQTMsMyAwIDAsMCAxNCwxNkEzLDMgMCAwLDAgMTcsMTNBMywzIDAgMCwwIDE0LDEwTTE0LDE4QTUsNSAwIDAsMSA5LDEzQTUsNSAwIDAsMSAxNCw4QTUsNSAwIDAsMSAxOSwxM0E1LDUgMCAwLDEgMTQsMThNMTQsMkEyLDIgMCAwLDEgMTYsNEEyLDIgMCAwLDEgMTQsNkEyLDIgMCAwLDEgMTIsNEEyLDIgMCAwLDEgMTQsMk0xOSwwSDlBMiwyIDAgMCwwIDcsMlYxOEEyLDIgMCAwLDAgOSwyMEgxOUEyLDIgMCAwLDAgMjEsMThWMkEyLDIgMCAwLDAgMTksME01LDIySDE3VjI0SDVBMiwyIDAgMCwxIDMsMjJWNEg1XCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BlYWtlck9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjEsMjEuNzJMMTkuNzMsMjNMMTguMjcsMjEuNTRDMTcuOTMsMjEuODMgMTcuNSwyMiAxNywyMkg3QzUuODksMjIgNSwyMS4xIDUsMjBWOC4yN0wyLDUuMjdNMTIsMThBMywzIDAgMCwxIDksMTVDOSwxNC4yNCA5LjI4LDEzLjU0IDkuNzUsMTNMOC4zMywxMS42QzcuNSwxMi41IDcsMTMuNjkgNywxNUE1LDUgMCAwLDAgMTIsMjBDMTMuMzEsMjAgMTQuNSwxOS41IDE1LjQsMTguNjdMMTQsMTcuMjVDMTMuNDUsMTcuNzIgMTIuNzYsMTggMTIsMThNMTcsMTVBNSw1IDAgMCwwIDEyLDEwSDExLjgyTDUuMTIsMy4zQzUuNDEsMi41NCA2LjE0LDIgNywySDE3QTIsMiAwIDAsMSAxOSw0VjE3LjE4TDE3LDE1LjE3VjE1TTEyLDRDMTAuODksNCAxMCw0Ljg5IDEwLDZBMiwyIDAgMCwwIDEyLDhBMiwyIDAgMCwwIDE0LDZDMTQsNC44OSAxMy4xLDQgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGVha2VyV2lyZWxlc3MgPSBcIk0yMC4wNywxOS4wN0wxOC42NiwxNy42NkMyMC4xMSwxNi4yMiAyMSwxNC4yMSAyMSwxMkMyMSw5Ljc4IDIwLjExLDcuNzggMTguNjYsNi4zNEwyMC4wNyw0LjkzQzIxLjg4LDYuNzQgMjMsOS4yNCAyMywxMkMyMywxNC43NiAyMS44OCwxNy4yNiAyMC4wNywxOS4wN00xNy4yNCwxNi4yNEwxNS44MywxNC44M0MxNi41NSwxNC4xMSAxNywxMy4xMSAxNywxMkMxNywxMC44OSAxNi41NSw5Ljg5IDE1LjgzLDkuMTdMMTcuMjQsNy43NkMxOC4zMyw4Ljg1IDE5LDEwLjM1IDE5LDEyQzE5LDEzLjY1IDE4LjMzLDE1LjE1IDE3LjI0LDE2LjI0TTQsM0gxMkEyLDIgMCAwLDEgMTQsNVYxOUEyLDIgMCAwLDEgMTIsMjFINEEyLDIgMCAwLDEgMiwxOVY1QTIsMiAwIDAsMSA0LDNNOCw1QTIsMiAwIDAsMCA2LDdBMiwyIDAgMCwwIDgsOUEyLDIgMCAwLDAgMTAsN0EyLDIgMCAwLDAgOCw1TTgsMTFBNCw0IDAgMCwwIDQsMTVBNCw0IDAgMCwwIDgsMTlBNCw0IDAgMCwwIDEyLDE1QTQsNCAwIDAsMCA4LDExTTgsMTNBMiwyIDAgMCwxIDEwLDE1QTIsMiAwIDAsMSA4LDE3QTIsMiAwIDAsMSA2LDE1QTIsMiAwIDAsMSA4LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwZWVkb21ldGVyID0gXCJNMTIsMTZBMywzIDAgMCwxIDksMTNDOSwxMS44OCA5LjYxLDEwLjkgMTAuNSwxMC4zOUwyMC4yMSw0Ljc3TDE0LjY4LDE0LjM1QzE0LjE4LDE1LjMzIDEzLjE3LDE2IDEyLDE2TTEyLDNDMTMuODEsMyAxNS41LDMuNSAxNi45Nyw0LjMyTDE0Ljg3LDUuNTNDMTQsNS4xOSAxMyw1IDEyLDVBOCw4IDAgMCwwIDQsMTNDNCwxNS4yMSA0Ljg5LDE3LjIxIDYuMzQsMTguNjVINi4zNUM2Ljc0LDE5LjA0IDYuNzQsMTkuNjcgNi4zNSwyMC4wNkM1Ljk2LDIwLjQ1IDUuMzIsMjAuNDUgNC45MywyMC4wN1YyMC4wN0MzLjEyLDE4LjI2IDIsMTUuNzYgMiwxM0ExMCwxMCAwIDAsMSAxMiwzTTIyLDEzQzIyLDE1Ljc2IDIwLjg4LDE4LjI2IDE5LjA3LDIwLjA3VjIwLjA3QzE4LjY4LDIwLjQ1IDE4LjA1LDIwLjQ1IDE3LjY2LDIwLjA2QzE3LjI3LDE5LjY3IDE3LjI3LDE5LjA0IDE3LjY2LDE4LjY1VjE4LjY1QzE5LjExLDE3LjIgMjAsMTUuMjEgMjAsMTNDMjAsMTIgMTkuODEsMTEgMTkuNDYsMTAuMUwyMC42Nyw4QzIxLjUsOS41IDIyLDExLjE4IDIyLDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwZWVkb21ldGVyTWVkaXVtID0gXCJNMTIgMS4zOEw5LjE0IDEyLjA2QzguOCAxMy4xIDkuMDQgMTQuMjkgOS44NiAxNS4xMkMxMS4wNCAxNi4yOSAxMi45NCAxNi4yOSAxNC4xMSAxNS4xMkMxNC45IDE0LjMzIDE1LjE2IDEzLjIgMTQuODkgMTIuMjFNMTQuNiAzLjM1TDE1LjIyIDUuNjhDMTguMDQgNi45MiAyMCA5LjczIDIwIDEzQzIwIDE1LjIxIDE5LjExIDE3LjIxIDE3LjY2IDE4LjY1SDE3LjY1QzE3LjI2IDE5LjA0IDE3LjI2IDE5LjY3IDE3LjY1IDIwLjA2QzE4LjA0IDIwLjQ1IDE4LjY4IDIwLjQ1IDE5LjA3IDIwLjA3QzIwLjg4IDE4LjI2IDIyIDE1Ljc2IDIyIDEzQzIyIDguMzggMTguODYgNC41IDE0LjYgMy4zNU05LjQgMy4zNkM1LjE1IDQuNSAyIDguNCAyIDEzQzIgMTUuNzYgMy4xMiAxOC4yNiA0LjkzIDIwLjA3QzUuMzIgMjAuNDUgNS45NSAyMC40NSA2LjM0IDIwLjA2QzYuNzMgMTkuNjcgNi43MyAxOS4wNCA2LjM0IDE4LjY1QzQuODkgMTcuMiA0IDE1LjIxIDQgMTNDNCA5LjY1IDUuOTQgNi44NiA4Ljc5IDUuNjVcIjtcclxuZXhwb3J0IHZhciBtZGlTcGVlZG9tZXRlclNsb3cgPSBcIk0xMiAxNkMxMy42NiAxNiAxNSAxNC42NiAxNSAxM0MxNSAxMS44OCAxNC4zOSAxMC45IDEzLjUgMTAuMzlMMy43OSA0Ljc3TDkuMzIgMTQuMzVDOS44MiAxNS4zMyAxMC44MyAxNiAxMiAxNk0xMiAzQzEwLjE5IDMgOC41IDMuNSA3LjAzIDQuMzJMOS4xMyA1LjUzQzEwIDUuMTkgMTEgNSAxMiA1QzE2LjQyIDUgMjAgOC41OCAyMCAxM0MyMCAxNS4yMSAxOS4xMSAxNy4yMSAxNy42NiAxOC42NUgxNy42NUMxNy4yNiAxOS4wNCAxNy4yNiAxOS42NyAxNy42NSAyMC4wNkMxOC4wNCAyMC40NSAxOC42OCAyMC40NSAxOS4wNyAyMC4wN0MyMC44OCAxOC4yNiAyMiAxNS43NiAyMiAxM0MyMiA3LjUgMTcuNSAzIDEyIDNNMiAxM0MyIDE1Ljc2IDMuMTIgMTguMjYgNC45MyAyMC4wN0M1LjMyIDIwLjQ1IDUuOTUgMjAuNDUgNi4zNCAyMC4wNkM2LjczIDE5LjY3IDYuNzMgMTkuMDQgNi4zNCAxOC42NUM0Ljg5IDE3LjIgNCAxNS4yMSA0IDEzQzQgMTIgNC4xOSAxMSA0LjU0IDEwLjFMMy4zMyA4QzIuNSA5LjUgMiAxMS4xOCAyIDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwZWxsY2hlY2sgPSBcIk0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNNNi40MywxMUw4LjUsNS41TDEwLjU3LDExTTEyLjQ1LDE2SDE0LjU0TDkuNDMsM0g3LjU3TDIuNDYsMTZINC41NUw1LjY3LDEzSDExLjMxTDEyLjQ1LDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwaWRlciA9IFwiTTIxLjI5IDE2LjcxTDIyLjcxIDE1LjI5TDE5LjUgMTIuMTFMMTYuNSAxMS4yNkwxOC40MSAxMUwyMi42IDcuOEwyMS40IDYuMkwxNy41OSA5LjA1TDE0LjkxIDkuNUwxOC4xMSA2LjMxTDE3IDEuNzZMMTUgMi4yNEwxNS44NiA1LjY5TDE0Ljc2IDYuODNBMyAzIDAgMCAwIDkuMjQgNi44M0w4LjExIDUuNjlMOSAyLjI0TDcgMS43Nkw1Ljg5IDYuMzFMOS4wOSA5LjVMNi40IDkuMDVMMi42IDYuMkwxLjQgNy44TDUuNiAxMUw3LjQ2IDExLjMxTDQuNDYgMTIuMTZMMS4yOSAxNS4yOUwyLjcxIDE2LjcxTDUuNSAxMy44OUw3Ljg3IDEzLjIyTDQgMTYuNTRWMjJINlYxNy40Nkw3LjU2IDE2LjEyQTQuNSA0LjUgMCAwIDAgMTYuNDQgMTYuMTJMMTggMTcuNDZWMjJIMjBWMTYuNTRMMTYuMTMgMTMuMjJMMTguNSAxMy44OVpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGlkZXJUaHJlYWQgPSBcIk0xMyAyVjcuMDhBNS40NyA1LjQ3IDAgMCAwIDEyIDdBNS40NyA1LjQ3IDAgMCAwIDExIDcuMDhWMk0xNi45IDE1QTUgNSAwIDAgMSAxNi43MyAxNS41NUwyMCAxNy40MlYyMkgxOFYxOC41OEwxNS43NCAxNy4yOUE0Ljk0IDQuOTQgMCAwIDEgOC4yNiAxNy4yOUw2IDE4LjU4VjIySDRWMTcuNDJMNy4yNyAxNS41NUE1IDUgMCAwIDEgNy4xIDE1SDUuM0wyLjU1IDE2LjgzTDEuNDUgMTUuMTdMNC43IDEzSDcuMUE1IDUgMCAwIDEgNy4zNyAxMi4xMkw1LjgxIDExLjEyTDIuMjQgMTJMMS43NiAxMEw2LjE5IDguOTJMOC41IDEwLjQ1QTUgNSAwIDAgMSAxNS41IDEwLjQ1TDE3Ljc3IDguOTJMMjIuMjQgMTBMMjEuNzYgMTJMMTguMTkgMTEuMTFMMTYuNjMgMTIuMTFBNSA1IDAgMCAxIDE2LjkgMTNIMTkuM0wyMi41NSAxNS4xNkwyMS40NSAxNi44MkwxOC43IDE1TTExIDE0QTEgMSAwIDEgMCAxMCAxNUExIDEgMCAwIDAgMTEgMTRNMTUgMTRBMSAxIDAgMSAwIDE0IDE1QTEgMSAwIDAgMCAxNSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcGlkZXJXZWIgPSBcIk0xMy42MiwxMy4yOEwxNS4yNiwxNS41NEMxNS4yOSwxNSAxNS4zOCwxNC40NyAxNS41NiwxMy45M0MxNS43NCwxMy4zNyAxNiwxMi44NiAxNi4zLDEyLjQxTDEzLjYyLDEzLjI4TTE3Ljc3LDE5QzE3Ljc1LDE3LjY4IDE3Ljk1LDE2LjI3IDE4LjQxLDE0Ljg1QzE4Ljg4LDEzLjQyIDE5LjU2LDEyLjE0IDIwLjM2LDExLjA5TDE4LjMyLDExLjc1QzE3LjU0LDEyLjI2IDE2Ljg3LDEzLjE0IDE2LjUsMTQuMjNDMTYuMTcsMTUuMjkgMTYuMTgsMTYuMzYgMTYuNSwxNy4yMkwxNy43NywxOU0xOS4yNSwyMUMxOC43NSwyMS40NiAxOC4yMSwyMS44NiAxNy42MywyMi4yTDE3LjMxLDIxLjc2QzE1LjksMjEgMTQuMDQsMjAuNSAxMiwyMC41QzkuOTYsMjAuNSA4LjEsMjEgNi42OSwyMS43Nkw2LjM3LDIyLjJDNS43OSwyMS44NiA1LjI1LDIxLjQ2IDQuNzUsMjFMNSwyMC42OUM1LjMzLDE5LjA4IDUuMjIsMTcuMTIgNC41OCwxNS4xNEMzLjk0LDEzLjE5IDIuOSwxMS41NiAxLjcxLDEwLjQ2TDEuMjcsMTAuMzJDMS40Miw5LjY2IDEuNjMsOSAxLjg5LDguNDFMMi4yOSw4LjU0QzMuOTIsOC4zNyA1Ljc0LDcuNjUgNy40Myw2LjQzQzkuMDksNS4yMiAxMC4zMiwzLjczIDExLDIuMjZWMS43OUwxMiwxLjc1TDEzLDEuNzlWMi4yMUMxMy42NywzLjcxIDE0LjkxLDUuMjMgMTYuNiw2LjQ1QzE4LjI2LDcuNjYgMjAuMDYsOC4zNyAyMS42Nyw4LjU2TDIyLjExLDguNDFDMjIuMzcsOSAyMi41OCw5LjY2IDIyLjczLDEwLjMyTDIyLjIzLDEwLjVDMjEuMDQsMTEuNTggMjAsMTMuMjEgMTkuMzcsMTUuMTZDMTguNzQsMTcuMDkgMTguNjIsMTkgMTguOTIsMjAuNTdMMTkuMjUsMjFNMTEsMTEuMzdWOC41QzEwLjY2LDguOTIgMTAuMjYsOS4zMiA5Ljc4LDkuNjdDOS4yOSwxMCA4Ljc3LDEwLjI5IDguMjUsMTAuNUwxMSwxMS4zN00xMSw0LjIyQzEwLjI1LDUuMzEgOS4yNCw2LjM1IDgsNy4yNEM2Ljc4LDguMTQgNS40Niw4Ljc4IDQuMTgsOS4xNkw2LjE1LDkuOEM3LjExLDkuODggOC4yMiw5LjU2IDkuMTksOC44NkMxMC4xMyw4LjE4IDEwLjc2LDcuMjcgMTEsNi4zNlY0LjIyTTEzLDExLjM3TDE1Ljc0LDEwLjVDMTUuMjMsMTAuMyAxNC43MiwxMC4wMyAxNC4yNSw5LjY5QzEzLjc2LDkuMzMgMTMuMzQsOC45MiAxMyw4LjVWMTEuMzdNMTkuOCw5LjE2QzE4LjUzLDguNzggMTcuMjMsOC4xNSAxNiw3LjI2QzE0Ljc3LDYuMzYgMTMuNzYsNS4zMSAxMyw0LjJWNi4yN0MxMy4yMiw3LjIxIDEzLjg2LDguMTcgMTQuODQsOC44OEMxNS43Nyw5LjU2IDE2LjgzLDkuODcgMTcuNzcsOS44MkwxOS44LDkuMTZNMTAuMzgsMTMuMjhMNy42NCwxMi4zOUM3Ljk1LDEyLjg0IDguMiwxMy4zNSA4LjM4LDEzLjkxQzguNTcsMTQuNSA4LjY2LDE1LjA2IDguNjgsMTUuNjJMMTAuMzgsMTMuMjhNMy41OCwxMS4wN0M0LjM4LDEyLjEyIDUuMDYsMTMuNCA1LjUzLDE0LjgzQzYsMTYuMjkgNi4yLDE3Ljc0IDYuMTcsMTkuMDhMNy4zOCwxNy40MUM3Ljc2LDE2LjUgNy44LDE1LjM2IDcuNDMsMTQuMjJDNy4wNywxMy4xMiA2LjQsMTIuMjQgNS42MSwxMS43M0wzLjU4LDExLjA3TTEyLDE0LjQ1TDEwLjM1LDE2LjcyQzEwLjg3LDE2LjU4IDExLjQyLDE2LjUgMTIsMTYuNUMxMi41OCwxNi41IDEzLjEzLDE2LjU4IDEzLjY1LDE2LjcyTDEyLDE0LjQ1TTcuODQsMjAuMThDOS4wOCwxOS43NSAxMC41LDE5LjUgMTIsMTkuNUMxMy41LDE5LjUgMTQuOTIsMTkuNzUgMTYuMTYsMjAuMThMMTQuODgsMTguNDJDMTQuMTYsMTcuODUgMTMuMTMsMTcuNSAxMiwxNy41QzEwLjg3LDE3LjUgOS44NCwxNy44NSA5LjEyLDE4LjQyTDcuODQsMjAuMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Bpcml0TGV2ZWwgPSBcIk0yMiA4SDJWMTZIMjJWOE0xOCAxNFYxMEgyMFYxNEgxOE0xMSAxMkgxM0MxNC4xIDEyIDE1IDExLjExIDE1IDEwSDE3VjE0SDdWMTBIOUM5IDExLjExIDkuOSAxMiAxMSAxMk00IDE0VjEwSDZWMTRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcG9vblN1Z2FyID0gXCJNNiAxM0gzVjEwSDZWMTNNMTAgMTBIN1YxM0gxMFYxME04IDZINVY5SDhWNk0xOCAxMkMxNC4yNSAxMiAxMi4yOCAxMy4yNSAxMSAxNEgyQzIgMTYuMjEgMy43OSAxOCA2IDE4SDdDOCAxOCA4LjkyIDE3LjYzIDkuNjIgMTdDMTEuMDYgMTUuNzggMTIuNjggMTQuNzQgMTQuNTUgMTQuMzZDMTUuNjEgMTQuMTUgMTYuNzggMTQgMTggMTRIMjJWMTJIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BvdGlmeSA9IFwiTTE3LjksMTAuOUMxNC43LDkgOS4zNSw4LjggNi4zLDkuNzVDNS44LDkuOSA1LjMsOS42IDUuMTUsOS4xNUM1LDguNjUgNS4zLDguMTUgNS43NSw4QzkuMyw2Ljk1IDE1LjE1LDcuMTUgMTguODUsOS4zNUMxOS4zLDkuNiAxOS40NSwxMC4yIDE5LjIsMTAuNjVDMTguOTUsMTEgMTguMzUsMTEuMTUgMTcuOSwxMC45TTE3LjgsMTMuN0MxNy41NSwxNC4wNSAxNy4xLDE0LjIgMTYuNzUsMTMuOTVDMTQuMDUsMTIuMyA5Ljk1LDExLjggNi44LDEyLjhDNi40LDEyLjkgNS45NSwxMi43IDUuODUsMTIuM0M1Ljc1LDExLjkgNS45NSwxMS40NSA2LjM1LDExLjM1QzEwLDEwLjI1IDE0LjUsMTAuOCAxNy42LDEyLjdDMTcuOSwxMi44NSAxOC4wNSwxMy4zNSAxNy44LDEzLjdNMTYuNiwxNi40NUMxNi40LDE2Ljc1IDE2LjA1LDE2Ljg1IDE1Ljc1LDE2LjY1QzEzLjQsMTUuMiAxMC40NSwxNC45IDYuOTUsMTUuN0M2LjYsMTUuOCA2LjMsMTUuNTUgNi4yLDE1LjI1QzYuMSwxNC45IDYuMzUsMTQuNiA2LjY1LDE0LjVDMTAuNDUsMTMuNjUgMTMuNzUsMTQgMTYuMzUsMTUuNkMxNi43LDE1Ljc1IDE2Ljc1LDE2LjE1IDE2LjYsMTYuNDVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3BvdGxpZ2h0ID0gXCJNMiw2TDcuMDksOC41NUM2LjQsOS41IDYsMTAuNzEgNiwxMkM2LDEzLjI5IDYuNCwxNC41IDcuMDksMTUuNDVMMiwxOFY2TTYsM0gxOEwxNS40NSw3LjA5QzE0LjUsNi40IDEzLjI5LDYgMTIsNkMxMC43MSw2IDkuNSw2LjQgOC41NSw3LjA5TDYsM00yMiw2VjE4TDE2LjkxLDE1LjQ1QzE3LjYsMTQuNSAxOCwxMy4yOSAxOCwxMkMxOCwxMC43MSAxNy42LDkuNSAxNi45MSw4LjU1TDIyLDZNMTgsMjFINkw4LjU1LDE2LjkxQzkuNSwxNy42IDEwLjcxLDE4IDEyLDE4QzEzLjI5LDE4IDE0LjUsMTcuNiAxNS40NSwxNi45MUwxOCwyMU0xMiw4QTQsNCAwIDAsMSAxNiwxMkE0LDQgMCAwLDEgMTIsMTZBNCw0IDAgMCwxIDgsMTJBNCw0IDAgMCwxIDEyLDhNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwb3RsaWdodEJlYW0gPSBcIk05LDE2LjVMOS45MSwxNS41OUwxNS4xMywyMC44TDE0LjIxLDIxLjcxTDksMTYuNU0xNS41LDEwTDE2LjQxLDkuMDlMMjEuNjMsMTQuM0wyMC43MSwxNS4yMUwxNS41LDEwTTYuNzIsMi43MkwxMC4xNSw2LjE1TDYuMTUsMTAuMTVMMi43Miw2LjcyQzEuOTQsNS45NCAxLjk0LDQuNjcgMi43MiwzLjg5TDMuODksMi43MkM0LjY3LDEuOTQgNS45NCwxLjk0IDYuNzIsMi43Mk0xNC41Nyw3LjVMMTUuMjgsOC4yMUw4LjIxLDE1LjI4TDcuNSwxNC41N0w2LjY0LDExLjA3TDExLjA3LDYuNjRMMTQuNTcsNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwcmF5ID0gXCJNMTAsNEgxMlY2SDEwVjRNNywzSDlWNUg3VjNNNyw2SDlWOEg3VjZNNiw4VjEwSDRWOEg2TTYsNVY3SDRWNUg2TTYsMlY0SDRWMkg2TTEzLDIyQTIsMiAwIDAsMSAxMSwyMFYxMEEyLDIgMCAwLDEgMTMsOFY3SDE0VjRIMTdWN0gxOFY4QTIsMiAwIDAsMSAyMCwxMFYyMEEyLDIgMCAwLDEgMTgsMjJIMTNNMTMsMTBWMjBIMThWMTBIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ByYXlCb3R0bGUgPSBcIk0xMiw3SDE1QzE1LjY2LDcuNjQgMTYsOC4zMSAxNiw5VjIySDhWMTVDOCwxNC43MiA4LjExLDE0LjM5IDguMywxNEwxMiw3TTE2LDRMMTUsNkgxMlY1TDEwLDdIOUwxMCw1VjRIOVYySDE0LjVBMS41LDEuNSAwIDAsMSAxNiwzLjVWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTcHJpbmtsZXIgPSBcIk0xMSA3SDEzVjlIMTFWN001IDIySDlWMTBINVYyMk0xNCAxMUgxNlY5SDE0VjExTTE3IDEwSDE5VjhIMTdWMTBNMTcgNVY3SDE5VjVIMTdNMTQgOEgxNlY2SDE0VjhNMTcgMTNIMTlWMTFIMTdWMTNNNSA3SDUuMzNMNiA5SDhMOC42NyA3SDlWNkg1VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ByaW5rbGVyVmFyaWFudCA9IFwiTTEwIDEwSDE0VjIySDEwVjEwTTcgOUg5VjdIN1Y5TTQgOEg2VjZINFY4TTQgMTFINlY5SDRWMTFNMSAxM0gzVjExSDFWMTNNMSA3SDNWNUgxVjdNMSAxMEgzVjhIMVYxME0xOCAxMUgyMFY5SDE4VjExTTIxIDEwSDIzVjhIMjFWMTBNMjEgNVY3SDIzVjVIMjFNMjEgMTNIMjNWMTFIMjFWMTNNMTUgOUgxN1Y3SDE1VjlNMTggOEgyMFY2SDE4VjhNMTAgN0gxMC4zM0wxMSA5SDEzTDEzLjY3IDdIMTRWNkgxMFY3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwcm91dCA9IFwiTTIsMjJWMjBDMiwyMCA3LDE4IDEyLDE4QzE3LDE4IDIyLDIwIDIyLDIwVjIySDJNMTEuMyw5LjFDMTAuMSw1LjIgNCw2LjEgNCw2LjFDNCw2LjEgNC4yLDEzLjkgOS45LDEyLjdDOS41LDkuOCA4LDkgOCw5QzEwLjgsOSAxMSwxMi40IDExLDEyLjRWMTdDMTEuMywxNyAxMS43LDE3IDEyLDE3QzEyLjMsMTcgMTIuNywxNyAxMywxN1YxMi44QzEzLDEyLjggMTMsOC45IDE2LDcuOUMxNiw3LjkgMTQsMTAuOSAxNCwxMi45QzIxLDEzLjYgMjEsNCAyMSw0QzIxLDQgMTIuMSwzIDExLjMsOS4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNwcm91dE91dGxpbmUgPSBcIk0yMyw0LjFWMi4zTDIxLjIsMi4xQzIxLjEsMi4xIDIwLjUsMiAxOS41LDJDMTUuNCwyIDEyLjQsMy4yIDEwLjcsNS4zQzkuNCw0LjUgNy42LDQgNS41LDRDNC41LDQgMy44LDQuMSAzLjgsNC4xTDEuOSw0LjRMMiw2LjFDMi4xLDkuMSAzLjYsMTQuOCA4LjgsMTQuOEM4LjksMTQuOCA4LjksMTQuOCA5LDE0LjhWMTguMkM1LjIsMTguNyAyLDIwIDIsMjBWMjJIMjJWMjBDMjIsMjAgMTguOCwxOC43IDE1LDE4LjJWMTVDMjEuMywxNC45IDIzLDcuOCAyMyw0LjFNMTIsMThDMTEuNywxOCAxMS4zLDE4IDExLDE4VjEyLjRDMTEsMTIuNCAxMC44LDkgOCw5QzgsOSA5LjUsOS44IDkuOSwxMi43QzkuNSwxMi44IDkuMSwxMi44IDguOCwxMi44QzQuMiwxMi44IDQsNi4xIDQsNi4xQzQsNi4xIDQuNiw2IDUuNSw2QzcuNCw2IDEwLjUsNi40IDExLjQsOS4xQzExLjksNC42IDE3LDQgMTkuNSw0QzIwLjQsNCAyMSw0LjEgMjEsNC4xQzIxLDQuMSAyMSwxMy4xIDE0LjcsMTMuMUMxNC41LDEzLjEgMTQuMiwxMy4xIDE0LDEzLjFDMTQsMTEuMSAxNiw4LjEgMTYsOC4xQzEzLDkuMSAxMywxMyAxMywxM1YxOEMxMi43LDE4IDEyLjMsMTggMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlID0gXCJNMywzVjIxSDIxVjNcIjtcclxuZXhwb3J0IHZhciBtZGlTcXVhcmVDaXJjbGUgPSBcIk0yMCA0VjIwSDRWNEgyME0yMiAySDJWMjJIMjJWMk0xMiA2QzguNjkgNiA2IDguNjkgNiAxMlM4LjY5IDE4IDEyIDE4IDE4IDE1LjMxIDE4IDEyIDE1LjMxIDYgMTIgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTcXVhcmVFZGl0T3V0bGluZSA9IFwiTTUsM0MzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWMTJIMTlWMTlINVY1SDEyVjNINU0xNy43OCw0QzE3LjYxLDQgMTcuNDMsNC4wNyAxNy4zLDQuMkwxNi4wOCw1LjQxTDE4LjU4LDcuOTFMMTkuOCw2LjdDMjAuMDYsNi40NCAyMC4wNiw2IDE5LjgsNS43NUwxOC4yNSw0LjJDMTguMTIsNC4wNyAxNy45NSw0IDE3Ljc4LDRNMTUuMzcsNi4xMkw4LDEzLjVWMTZIMTAuNUwxNy44Nyw4LjYyTDE1LjM3LDYuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlTWVkaXVtID0gXCJNMTYsOEg4VjE2SDE2VjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlTWVkaXVtT3V0bGluZSA9IFwiTTE0LDEwVjE0SDEwVjEwSDE0TTE2LDhIOFYxNkgxNlY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZU9mZiA9IFwiTTIwLjg0IDIyLjczTDE5LjExIDIxSDNWNC44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTIxIDNINi4yTDIxIDE3LjhWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTcXVhcmVPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzIDQuODlWMjFIMTkuMTFMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNNSAxOVY2Ljg5TDE3LjExIDE5SDVNOC4yIDVMNi4yIDNIMjFWMTcuOEwxOSAxNS44VjVIOC4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZU91dGxpbmUgPSBcIk0zLDNIMjFWMjFIM1YzTTUsNVYxOUgxOVY1SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlUm9vdCA9IFwiTTExLjc2LDE2LjgzTDE0LjU5LDE0TDExLjc2LDExLjE3TDEzLjE3LDkuNzZMMTYsMTIuNTlMMTguODMsOS43NkwyMC4yNCwxMS4xN0wxNy40MSwxNEwyMC4yNCwxNi44M0wxOC44MywxOC4yNEwxNiwxNS40MUwxMy4xNywxOC4yNEwxMS43NiwxNi44M00yLDExSDVWMTFINUw3LjI5LDE2LjRMMTAsNkgyMlY4SDExLjU1TDguNjgsMTlINi4yMkwzLjY4LDEzSDJWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlUm9vdEJveCA9IFwiTTUsM0MzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUEyLDIgMCAwLDAgMTksM0g1TTExLjI0LDZIMTlWOEgxMi43NkwxMCwxOEg4TDYuMjUsMTJINVYxMEg3Ljc1TDksMTQuMjhMMTEuMjQsNlY2TTE0LDEwLjU5TDE1Ljc5LDEyLjM4TDE3LjU5LDEwLjU5TDE5LDEyTDE3LjIxLDEzLjc5TDE5LDE1LjU5TDE3LjU5LDE3TDE1Ljc5LDE1LjIxTDE0LDE3TDEyLjU5LDE1LjU5TDE0LjM4LDEzLjc5TDEyLjU5LDEyTDE0LDEwLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZVJvdW5kZWQgPSBcIk04IDNIMTZDMTguNzYgMyAyMSA1LjI0IDIxIDhWMTZDMjEgMTguNzYgMTguNzYgMjEgMTYgMjFIOEM1LjI0IDIxIDMgMTguNzYgMyAxNlY4QzMgNS4yNCA1LjI0IDMgOCAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZVJvdW5kZWRPdXRsaW5lID0gXCJNOCAzSDE2QzE4Ljc2IDMgMjEgNS4yNCAyMSA4VjE2QzIxIDE4Ljc2IDE4Ljc2IDIxIDE2IDIxSDhDNS4yNCAyMSAzIDE4Ljc2IDMgMTZWOEMzIDUuMjQgNS4yNCAzIDggM004IDVDNi4zNCA1IDUgNi4zNCA1IDhWMTZDNSAxNy42NiA2LjM0IDE5IDggMTlIMTZDMTcuNjYgMTkgMTkgMTcuNjYgMTkgMTZWOEMxOSA2LjM0IDE3LjY2IDUgMTYgNUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWFyZVNtYWxsID0gXCJNMTAsMTRWMTBIMTRWMTRIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3F1YXJlV2F2ZSA9IFwiTTIgMlYxMkg0VjRIMTFWMjJIMjJWMTJIMjBWMjBIMTNWMkgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVNxdWVlZ2VlID0gXCJNMjIsMlY1SDJWMkgyMk0yLDhIN0w5LDEwSDEwVjIwQTIsMiAwIDAsMCAxMiwyMkEyLDIgMCAwLDAgMTQsMjBWMTBIMTVMMTcsOEgyMlY2SDJWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTc2ggPSBcIk00LjUsOUMzLjksOSAzLjUsOS41IDMuNSwxMFYxMS43NUMzLjUsMTIuMjUgMy45LDEyLjc1IDQuNSwxMi43NUg3VjEzLjVIMy41VjE1SDcuNUM4LjEsMTUgOC41LDE0LjUgOC41LDE0VjEyLjI1QzguNSwxMS43NSA4LjEsMTEuMjUgNy41LDExLjI1SDVWMTAuNUg4LjVWOUg0LjVNMTAuNSw5QzkuOSw5IDkuNSw5LjUgOS41LDEwVjExLjc1QzkuNSwxMi4yNSA5LjksMTIuNzUgMTAuNSwxMi43NUgxM1YxMy41SDkuNVYxNUgxMy41QzE0LjEsMTUgMTQuNSwxNC41IDE0LjUsMTRWMTIuMjVDMTQuNSwxMS43NSAxNC4xLDExLjI1IDEzLjUsMTEuMjVIMTFWMTAuNUgxNC41VjlIMTAuNU0xNS41LDlWMTVIMTdWMTIuNUgxOVYxNUgyMC41VjlIMTlWMTFIMTdWOUgxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YWNrRXhjaGFuZ2UgPSBcIk0zLjkgMTAuNzJIMjBWMTQuMDNIMy45VjEwLjcyTTMuOSA2LjQ0SDIwVjkuNzVIMy45VjYuNDRNMTcuNSAySDYuNUM1LjA2IDIgMy45IDMuMTggMy45IDQuNjVWNS41SDIwVjQuNjVDMjAgMy4xOCAxOC44OCAyIDE3LjUgMk0zLjkgMTVWMTUuODRDMy45IDE3LjMxIDUuMDYgMTguNSA2LjUgMTguNUgxMy4zN1YyMkwxNi43NyAxOC41SDE3LjVDMTguOTQgMTguNSAyMC4xMSAxNy4zMSAyMC4xMSAxNS44NFYxNUgzLjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhY2tPdmVyZmxvdyA9IFwiTTE3LjM2LDIwLjJWMTQuODJIMTkuMTVWMjJIM1YxNC44Mkg0LjhWMjAuMkgxNy4zNk02Ljc3LDE0LjMyTDcuMTQsMTIuNTZMMTUuOTMsMTQuNDFMMTUuNTYsMTYuMTdMNi43NywxNC4zMk03LjkzLDEwLjExTDguNjksOC41TDE2LjgzLDEyLjI4TDE2LjA3LDEzLjlMNy45MywxMC4xMU0xMC4xOSw2LjEyTDExLjM0LDQuNzRMMTguMjQsMTAuNUwxNy4wOSwxMS44N0wxMC4xOSw2LjEyTTE0LjY0LDEuODdMMjAsOS4wOEwxOC41NiwxMC4xNUwxMy4yLDIuOTRMMTQuNjQsMS44N002LjU5LDE4LjQxVjE2LjYxSDE1LjU3VjE4LjQxSDYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhY2twYXRoID0gXCJNNC45MSA4QzQuMDQgOCAzLjMyIDguMiAyLjc2IDguNjFDMi4xOSA5IDEuOTEgOS41MyAxLjkxIDEwLjE5QzEuOTEgMTAuODUgMi4xNSAxMS4zNyAyLjYyIDExLjcyQzMuMSAxMi4wNyAzLjgyIDEyLjQxIDQuOCAxMi43MkM1LjI3IDEyLjg4IDUuNiAxMy4wNCA1Ljc4IDEzLjE5QzUuOTYgMTMuMzQgNi4wNSAxMy41NSA2LjA1IDEzLjgzQzYuMDUgMTQuMDcgNS45NiAxNC4yNiA1Ljc4IDE0LjQxQzUuNiAxNC41NiA1LjMyIDE0LjYzIDQuOTQgMTQuNjNDNC40NSAxNC42MyA0LjA5IDE0LjU0IDMuODUgMTQuMzVDMy42IDE0LjE2IDMuNSAxMy44NCAzLjUgMTMuMzlIMS43MkwxLjcxIDEzLjQyQzEuNyAxNC4yNSAyIDE0Ljg5IDIuNjYgMTUuMzNDMy4zIDE1Ljc4IDQuMDYgMTYgNC45NCAxNkM1LjgyIDE2IDYuNSAxNS44IDcuMDYgMTUuNDJDNy41OSAxNS4wMyA3Ljg2IDE0LjUgNy44NiAxMy44MUM3Ljg2IDEzLjE0IDcuNjMgMTIuNjEgNy4xOSAxMi4yM0M2Ljc0IDExLjg0IDYuMDggMTEuNSA1LjIgMTEuMjZDNC42MiAxMS4wNSA0LjIzIDEwLjg4IDQgMTAuNzRDMy44MSAxMC42IDMuNzEgMTAuNDIgMy43MSAxMC4yQzMuNzEgOS45NiAzLjgxIDkuNzYgNCA5LjZDNC4yMiA5LjQ0IDQuNSA5LjM2IDQuODcgOS4zNkM1LjI0IDkuMzYgNS41MyA5LjQ2IDUuNzQgOS42NUM1Ljk2IDkuODQgNi4wNyAxMC4xMiA2LjA2IDEwLjQxSDcuOEw3LjgyIDEwLjM3QzcuODQgOS42OCA3LjU3IDkuMTEgNyA4LjY2QzYuNDcgOC4yMiA1Ljc3IDggNC45MSA4TTkgOC4wNVYxNS45M0gxMC44NFYxMy4yM0gxMS45NkMxMi44OSAxMy4yMyAxMy42MyAxMyAxNC4xOCAxMi41QzE0LjczIDEyLjA1IDE1IDExLjQyIDE1IDEwLjY0QzE1IDkuODcgMTQuNzMgOS4yNSAxNC4xOCA4Ljc3QzEzLjYzIDguMjkgMTIuODkgOC4wNSAxMS45NiA4LjA1SDlNMTcuMjQgOC4wNUwxNC41IDE1LjkzSDE2LjIyTDE5IDguMDVNMjAuNSA4LjA1TDE3Ljc5IDE1LjkzSDE5LjVMMjIuMjkgOC4wNU0xMC44NCA5LjQ2SDExLjk2QzEyLjM1IDkuNDYgMTIuNjYgOS41NyAxMi44NiA5LjhDMTMuMDcgMTAgMTMuMTcgMTAuMzEgMTMuMTcgMTAuNjVDMTMuMTcgMTEgMTMuMDcgMTEuMjggMTIuODYgMTEuNUMxMi42NiAxMS43MSAxMi4zNSAxMS44MiAxMS45NiAxMS44MkgxMC44NFwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YWRpdW0gPSBcIk0yMiAxMy41VjE3LjVDMjIgMTkuMiAxNy41IDIwLjUgMTIgMjAuNUMxMC42IDIwLjUgOS4yIDIwLjQgOCAyMC4yVjE3LjVMNCAxNi41VjE5LjNDMi43IDE4LjggMiAxOC4yIDIgMTcuNVYxMS41QzIgMTAuNSA0IDkuNSA2IDkuNUMxMiA5LjUgMTQgMTUgMTkgMTVDMjEgMTUgMjIgMTMuNSAyMiAxMy41TTUgOEw5IDlWNkw1IDVWOE0xOCA2LjVMMjIgNy41VjQuNUwxOCAzLjVWNi41TTIyLjMgMTAuOEMyMi4zIDkuOCAyMS41IDggMTguNyA4UzEzLjQgMTAuNyAxMy4zIDEwLjlDMTUuMSAxMi4yIDE2LjUgMTMuNSAxOSAxMy41QzIyLjMgMTMuNSAyMi4zIDEwLjggMjIuMyAxMC44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YWRpdW1WYXJpYW50ID0gXCJNNSwzSDdMMTAsNUw3LDdWOC4zM0M4LjQ3LDguMTIgMTAuMTgsOCAxMiw4QzEzLjgyLDggMTUuNTMsOC4xMiAxNyw4LjMzVjNIMTlMMjIsNUwxOSw3VjguNzFDMjAuODUsOS4xNyAyMiw5LjggMjIsMTAuNUMyMiwxMS44OCAxNy41LDEzIDEyLDEzQzYuNSwxMyAyLDExLjg4IDIsMTAuNUMyLDkuOCAzLjE1LDkuMTcgNSw4LjcxVjNNMTIsOS41QzguNjksOS41IDcsOS42NyA3LDEwLjVDNywxMS4zMyA4LjY5LDExLjUgMTIsMTEuNUMxNS4zMSwxMS41IDE3LDExLjMzIDE3LDEwLjVDMTcsOS42NyAxNS4zMSw5LjUgMTIsOS41TTEyLDE0Ljc1QzE1LjgxLDE0Ljc1IDE5LjIsMTQuMDggMjEuNCwxMy4wNUwyMCwyMUgxNVYxOUEyLDIgMCAwLDAgMTMsMTdIMTFBMiwyIDAgMCwwIDksMTlWMjFINEwyLjYsMTMuMDVDNC44LDE0LjA4IDguMTksMTQuNzUgMTIsMTQuNzVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhaXJzID0gXCJNMTUsNVY5SDExVjEzSDdWMTdIM1YyMEgxMFYxNkgxNFYxMkgxOFY4SDIyVjVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhaXJzQm94ID0gXCJNNSAzQzMuODkgMyAzIDMuODkgMyA1VjE5QzMgMjAuMTEgMy44OSAyMSA1IDIxSDE5QzIwLjExIDIxIDIxIDIwLjExIDIxIDE5VjVDMjEgMy44OSAyMC4xMSAzIDE5IDNINU0xNCA3SDE5VjlIMTZWMTJIMTNWMTVIMTBWMThINVYxNkg4VjEzSDExVjEwSDE0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhaXJzRG93biA9IFwiTTE1IDZIMjJWOUgxOFYxM0gxNFYxN0gxMFYyMUgzVjE4SDdWMTRIMTFWMTBIMTVWNk00LjgzIDguMzRMMTAuMzQgMi44M0wxMi4xNyA0LjY2TDYuNjYgMTAuMTdMOC41IDEySDNWNi41TDQuODMgOC4zNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFpcnNVcCA9IFwiTTE1IDZIMjJWOUgxOFYxM0gxNFYxN0gxMFYyMUgzVjE4SDdWMTRIMTFWMTBIMTVWNk0xMC4xNyA2LjY2TDQuNjYgMTIuMTdMMi44MyAxMC4zNEw4LjM0IDQuODNMNi41IDNIMTJWOC41TDEwLjE3IDYuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhbXBlciA9IFwiTTEyLDNBMywzIDAgMCwwIDksNkM5LDkgMTQsMTMgNiwxM0EyLDIgMCAwLDAgNCwxNVYxN0gyMFYxNUEyLDIgMCAwLDAgMTgsMTNDMTAsMTMgMTUsOSAxNSw2QzE1LDQgMTMuNjYsMyAxMiwzTTYsMTlWMjFIMThWMTlINlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFuZGFyZERlZmluaXRpb24gPSBcIk0xMyw3SDE2QTMsMyAwIDAsMSAxOSwxMFYxNEEzLDMgMCAwLDEgMTYsMTdIMTNWN00xNiwxNUExLDEgMCAwLDAgMTcsMTRWMTBBMSwxIDAgMCwwIDE2LDlIMTVWMTVIMTZNNyw3SDExVjlIN1YxMUg5QTIsMiAwIDAsMSAxMSwxM1YxNUEyLDIgMCAwLDEgOSwxN0g1VjE1SDlWMTNIN0EyLDIgMCAwLDEgNSwxMVY5QTIsMiAwIDAsMSA3LDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhciA9IFwiTTEyLDE3LjI3TDE4LjE4LDIxTDE2LjU0LDEzLjk3TDIyLDkuMjRMMTQuODEsOC42MkwxMiwyTDkuMTksOC42MkwyLDkuMjRMNy40NSwxMy45N0w1LjgyLDIxTDEyLDE3LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJCb3ggPSBcIk0xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QzIxLDIwLjExIDIwLjEsMjEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNMTUuNTgsMTdMMTQuNjMsMTIuOTJMMTcuNzksMTAuMTlMMTMuNjIsOS44M0wxMiw2TDEwLjM4LDkuODRMNi4yMSwxMC4yTDkuMzcsMTIuOTNMOC40MiwxN0wxMiwxNC44NEwxNS41OCwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQm94TXVsdGlwbGUgPSBcIk00IDZWMjBIMThWMjJIM0MyLjQgMjIgMiAyMS42IDIgMjFWNkg0TTggMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDhDNi45IDE4IDYgMTcuMTEgNiAxNlY0QzYgMi45IDYuOSAyIDggMk0xNi4zIDEzLjNMMTUuOSAxMC43TDE3LjggOC44TDE1LjIgOC40TDE0IDZMMTIuOCA4LjRMMTAuMiA4LjhMMTIuMSAxMC42TDExLjYgMTMuMkwxNCAxMkwxNi4zIDEzLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckJveE11bHRpcGxlT3V0bGluZSA9IFwiTTQgNlYyMEgxOFYyMkgzQzIuNCAyMiAyIDIxLjYgMiAyMVY2SDRNMTIuMSAxMC42TDEwLjIgOC44TDEyLjggOC40TDE0IDZMMTUuMiA4LjRMMTcuOCA4LjhMMTUuOSAxMC43TDE2LjMgMTMuM0wxNCAxMkwxMS42IDEzLjJMMTIuMSAxMC42TTggMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDhDNi45IDE4IDYgMTcuMTEgNiAxNlY0QzYgMi45IDYuOSAyIDggMk04IDRWMTZIMjBWNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJCb3hPdXRsaW5lID0gXCJNMTUuNTgsMTdMMTIsMTQuODRMOC40MiwxN0w5LjM3LDEyLjkzTDYuMjEsMTAuMkwxMC4zOCw5Ljg0TDEyLDZMMTMuNjIsOS44M0wxNy43OSwxMC4xOUwxNC42MywxMi45MkwxNS41OCwxN00xOSwzQTIsMiAwIDAsMSAyMSw1VjE5QzIxLDIwLjExIDIwLjEsMjEgMTksMjFINUEyLDIgMCAwLDEgMywxOVY1QTIsMiAwIDAsMSA1LDNIMTlNNSw1VjE5SDE5VjVINVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ2hlY2sgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNC45IDEyIDEyLjQgMTQuMyAxMiAxNy4zTDUuOCAyMU0xNy44IDIxLjJMMjIuNiAxNi40TDIxLjMgMTVMMTcuNyAxOC42TDE2LjIgMTdMMTUgMTguMkwxNy44IDIxLjJcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ2hlY2tPdXRsaW5lID0gXCJNNS44IDIxTDcuNCAxNEwyIDkuMkw5LjIgOC42TDEyIDJMMTQuOCA4LjZMMjIgOS4yTDE4LjggMTJIMThDMTcuMyAxMiAxNi42IDEyLjEgMTUuOSAxMi40TDE4LjEgMTAuNUwxMy43IDEwLjFMMTIgNi4xTDEwLjMgMTAuMUw1LjkgMTAuNUw5LjIgMTMuNEw4LjIgMTcuN0wxMiAxNS40TDEyLjUgMTUuN0MxMi4zIDE2LjIgMTIuMSAxNi44IDEyLjEgMTcuM0w1LjggMjFNMTcuOCAyMS4yTDE1IDE4LjJMMTYuMiAxN0wxNy44IDE4LjZMMjEuNCAxNUwyMi42IDE2LjRMMTcuOCAyMS4yXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckNpcmNsZSA9IFwiTTE2LjIzLDE4TDEyLDE1LjQ1TDcuNzcsMThMOC44OSwxMy4xOUw1LjE2LDkuOTZMMTAuMDgsOS41NEwxMiw1TDEzLjkyLDkuNTNMMTguODQsOS45NUwxNS4xMSwxMy4xOEwxNi4yMywxOE0xMiwyQzYuNDcsMiAyLDYuNSAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckNpcmNsZU91dGxpbmUgPSBcIk04LjU4LDE3LjI1TDkuNSwxMy4zNkw2LjUsMTAuNzhMMTAuNDUsMTAuNDFMMTIsNi44TDEzLjU1LDEwLjQ1TDE3LjUsMTAuNzhMMTQuNSwxMy4zNkwxNS40MiwxNy4yNUwxMiwxNS4xOUw4LjU4LDE3LjI1TTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTgsOCAwIDAsMCAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ29nID0gXCJNMTguOCAxMkMxNS41OSAxMi4xIDEyLjkxIDE0LjM3IDEyLjE5IDE3LjM5TDEyIDE3LjI3TDUuODIgMjFMNy40NSAxMy45N0wyIDkuMjRMOS4xOSA4LjYyTDEyIDJMMTQuODEgOC42MkwyMiA5LjI0TDE4LjggMTJNMjMuODMgMjAuNjRMMjIuODMgMjIuMzdDMjIuNzYgMjIuNSAyMi42MyAyMi41IDIyLjUgMjIuNUwyMS4yNyAyMkMyMSAyMi4xOCAyMC43MyAyMi4zNCAyMC40MyAyMi40N0wyMC4yNCAyMy43OUMyMC4yMiAyMy45MSAyMC4xMSAyNCAyMCAyNEgxOEMxNy44NiAyNCAxNy43NiAyMy45MSAxNy43NCAyMy43OUwxNy41NSAyMi40N0MxNy4yNCAyMi4zNSAxNi45NiAyMi4xOCAxNi43IDIyTDE1LjQ2IDIyLjVDMTUuMzQgMjIuNSAxNS4yMSAyMi41IDE1LjE1IDIyLjM3TDE0LjE1IDIwLjY0QzE0LjA5IDIwLjUzIDE0LjEyIDIwLjQgMTQuMjEgMjAuMzJMMTUuMjcgMTkuNUMxNS4yNSAxOS4zMyAxNS4yNCAxOS4xNyAxNS4yNCAxOVMxNS4yNSAxOC42NyAxNS4yNyAxOC41TDE0LjIxIDE3LjY4QzE0LjExIDE3LjYgMTQuMDkgMTcuNDcgMTQuMTUgMTcuMzZMMTUuMTUgMTUuNjNDMTUuMjIgMTUuNSAxNS4zNSAxNS41IDE1LjQ2IDE1LjVMMTYuNyAxNkMxNi45NiAxNS44MiAxNy4yNSAxNS42NiAxNy41NSAxNS41M0wxNy43NCAxNC4yMUMxNy43NiAxNC4wOSAxNy44NyAxNCAxOCAxNEgyMEMyMC4xMSAxNCAyMC4yMiAxNC4wOSAyMC4yMyAxNC4yMUwyMC40MiAxNS41M0MyMC43MyAxNS42NSAyMSAxNS44MiAyMS4yNyAxNkwyMi41IDE1LjVDMjIuNjMgMTUuNSAyMi43NiAxNS41IDIyLjgyIDE1LjYzTDIzLjgyIDE3LjM2QzIzLjg4IDE3LjQ3IDIzLjg1IDE3LjYgMjMuNzYgMTcuNjhMMjIuNyAxOC41QzIyLjczIDE4LjY3IDIyLjc0IDE4LjgzIDIyLjc0IDE5UzIyLjcyIDE5LjMzIDIyLjcgMTkuNUwyMy43NyAyMC4zMkMyMy44NiAyMC40IDIzLjg5IDIwLjUzIDIzLjgzIDIwLjY0TTIwLjUgMTlDMjAuNSAxOC4xNyAxOS44MyAxNy41IDE5IDE3LjVTMTcuNSAxOC4xNyAxNy41IDE5IDE4LjE2IDIwLjUgMTkgMjAuNUMxOS44MyAyMC41IDIwLjUgMTkuODMgMjAuNSAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyQ29nT3V0bGluZSA9IFwiTTEwLjI5IDEwLjEzTDUuOTEgMTAuNUw5LjIzIDEzLjM4TDguMjQgMTcuNjZMMTIgMTUuMzlMMTIuNzYgMTUuODVDMTIuNSAxNi4zMyAxMi4zMiAxNi44NSAxMi4xOSAxNy4zOUwxMiAxNy4yN0w1LjgyIDIxTDcuNDUgMTMuOTdMMiA5LjI0TDkuMTkgOC42M0wxMiAyTDE0LjgxIDguNjNMMjIgOS4yNEwxOC44IDEyQzE3LjI5IDEyLjA1IDE1LjkxIDEyLjU3IDE0Ljc4IDEzLjQzTDE0Ljc3IDEzLjM4TDE4LjA5IDEwLjVMMTMuNzEgMTAuMTNMMTIgNi4wOUwxMC4yOSAxMC4xM00yMy44MyAyMC42NEwyMi44MyAyMi4zN0MyMi43NiAyMi41IDIyLjYzIDIyLjUgMjIuNSAyMi41TDIxLjI3IDIyQzIxIDIyLjE4IDIwLjczIDIyLjM0IDIwLjQzIDIyLjQ3TDIwLjI0IDIzLjc5QzIwLjIyIDIzLjkxIDIwLjExIDI0IDIwIDI0SDE4QzE3Ljg2IDI0IDE3Ljc2IDIzLjkxIDE3Ljc0IDIzLjc5TDE3LjU1IDIyLjQ3QzE3LjI0IDIyLjM1IDE2Ljk2IDIyLjE4IDE2LjcgMjJMMTUuNDYgMjIuNUMxNS4zNCAyMi41IDE1LjIxIDIyLjUgMTUuMTUgMjIuMzdMMTQuMTUgMjAuNjRDMTQuMDkgMjAuNTMgMTQuMTIgMjAuNCAxNC4yMSAyMC4zMkwxNS4yNyAxOS41QzE1LjI1IDE5LjMzIDE1LjI0IDE5LjE3IDE1LjI0IDE5UzE1LjI1IDE4LjY3IDE1LjI3IDE4LjVMMTQuMjEgMTcuNjhDMTQuMTEgMTcuNiAxNC4wOSAxNy40NyAxNC4xNSAxNy4zNkwxNS4xNSAxNS42M0MxNS4yMiAxNS41IDE1LjM1IDE1LjUgMTUuNDYgMTUuNUwxNi43IDE2QzE2Ljk2IDE1LjgyIDE3LjI1IDE1LjY2IDE3LjU1IDE1LjUzTDE3Ljc0IDE0LjIxQzE3Ljc2IDE0LjA5IDE3Ljg3IDE0IDE4IDE0SDIwQzIwLjExIDE0IDIwLjIyIDE0LjA5IDIwLjIzIDE0LjIxTDIwLjQyIDE1LjUzQzIwLjczIDE1LjY1IDIxIDE1LjgyIDIxLjI3IDE2TDIyLjUgMTUuNUMyMi42MyAxNS41IDIyLjc2IDE1LjUgMjIuODIgMTUuNjNMMjMuODIgMTcuMzZDMjMuODggMTcuNDcgMjMuODUgMTcuNiAyMy43NiAxNy42OEwyMi43IDE4LjVDMjIuNzMgMTguNjcgMjIuNzQgMTguODMgMjIuNzQgMTlTMjIuNzIgMTkuMzMgMjIuNyAxOS41TDIzLjc3IDIwLjMyQzIzLjg2IDIwLjQgMjMuODkgMjAuNTMgMjMuODMgMjAuNjRNMjAuNSAxOUMyMC41IDE4LjE3IDE5LjgzIDE3LjUgMTkgMTcuNVMxNy41IDE4LjE3IDE3LjUgMTkgMTguMTYgMjAuNSAxOSAyMC41QzE5LjgzIDIwLjUgMjAuNSAxOS44MyAyMC41IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJGYWNlID0gXCJNMTIsMi41TDguNDIsOC4wNkwyLDkuNzRMNi4yLDE0Ljg4TDUuODIsMjEuNUwxMiwxOS4wOUwxOC4xOCwyMS41TDE3LjgsMTQuODhMMjIsOS43NEwxNS41OCw4LjA2TDEyLDIuNU05LjM4LDEwLjVDMTAsMTAuNSAxMC41LDExIDEwLjUsMTEuNjNBMS4xMiwxLjEyIDAgMCwxIDkuMzgsMTIuNzVDOC43NSwxMi43NSA4LjI1LDEyLjI1IDguMjUsMTEuNjNDOC4yNSwxMSA4Ljc1LDEwLjUgOS4zOCwxMC41TTE0LjYzLDEwLjVDMTUuMjUsMTAuNSAxNS43NSwxMSAxNS43NSwxMS42M0ExLjEyLDEuMTIgMCAwLDEgMTQuNjMsMTIuNzVDMTQsMTIuNzUgMTMuNSwxMi4yNSAxMy41LDExLjYzQzEzLjUsMTEgMTQsMTAuNSAxNC42MywxMC41TTksMTVIMTVDMTQuNSwxNi4yMSAxMy4zMSwxNyAxMiwxN0MxMC42OSwxNyA5LjUsMTYuMjEgOSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyRm91clBvaW50cyA9IFwiTTEyLDFMOSw5TDEsMTJMOSwxNUwxMiwyM0wxNSwxNUwyMywxMkwxNSw5TDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckZvdXJQb2ludHNPdXRsaW5lID0gXCJNMTIsNi43TDEzLjQ1LDEwLjU1TDE3LjMsMTJMMTMuNDUsMTMuNDVMMTIsMTcuM0wxMC41NSwxMy40NUw2LjcsMTJMMTAuNTUsMTAuNTVMMTIsNi43TTEyLDFMOSw5TDEsMTJMOSwxNUwxMiwyM0wxNSwxNUwyMywxMkwxNSw5TDEyLDFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckhhbGYgPSBcIk0xMiAyTDkuMTkgOC42MkwyIDkuMjRMNy40NSAxMy45N0w1LjgyIDIxTDEyIDE3LjI3VjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhckhhbGZGdWxsID0gXCJNMTIsMTUuNFY2LjFMMTMuNzEsMTAuMTNMMTguMDksMTAuNUwxNC43NywxMy4zOUwxNS43NiwxNy42N00yMiw5LjI0TDE0LjgxLDguNjNMMTIsMkw5LjE5LDguNjNMMiw5LjI0TDcuNDUsMTMuOTdMNS44MiwyMUwxMiwxNy4yN0wxOC4xOCwyMUwxNi41NCwxMy45N0wyMiw5LjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJNaW51cyA9IFwiTTUuOCAyMUw3LjQgMTRMMiA5LjJMOS4yIDguNkwxMiAyTDE0LjggOC42TDIyIDkuMkwxOC44IDEySDE4QzE0LjkgMTIgMTIuNCAxNC4zIDEyIDE3LjNMNS44IDIxTTE0IDE3VjE5SDIyVjE3SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJNaW51c091dGxpbmUgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNy4zIDEyIDE2LjYgMTIuMSAxNS45IDEyLjRMMTguMSAxMC41TDEzLjcgMTAuMUwxMiA2LjFMMTAuMyAxMC4xTDUuOSAxMC41TDkuMiAxMy40TDguMiAxNy43TDEyIDE1LjRMMTIuNSAxNS43QzEyLjMgMTYuMiAxMi4xIDE2LjggMTIuMSAxNy4zTDUuOCAyMU0xNCAxN1YxOUgyMlYxN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyT2ZmID0gXCJNMjAuOCAyMi43TDE3LjkgMTkuOEwxOC4yIDIxTDEyIDE3LjNMNS44IDIxTDcuNCAxNEwyIDkuMkw2LjkgOC44TDEuMSAzTDIuNCAxLjdMMjIuMSAyMS40TDIwLjggMjIuN00yMiA5LjJMMTQuOCA4LjZMMTIgMkwxMCA2LjhMMTYuOSAxMy43TDIyIDkuMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyT2ZmT3V0bGluZSA9IFwiTTIyLjEgMjEuNUwyLjQgMS43TDEuMSAzTDYuOSA4LjhMMiA5LjJMNy41IDE0TDUuOSAyMUwxMi4xIDE3LjNMMTguMyAyMUwxOCAxOS44TDIwLjkgMjIuN0wyMi4xIDIxLjVNMTUuOCAxNy43TDEyIDE1LjRMOC4yIDE3LjdMOS4yIDEzLjRMNS45IDEwLjVMOC40IDEwLjNMMTUuOCAxNy43TTExLjIgOEwxMCA2LjhMMTIgMkwxNC44IDguNkwyMiA5LjJMMTYuOSAxMy42TDE1LjggMTIuNUwxOC4yIDEwLjVMMTMuOCAxMC4xTDEyLjEgNi4xTDExLjIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyT3V0bGluZSA9IFwiTTEyLDE1LjM5TDguMjQsMTcuNjZMOS4yMywxMy4zOEw1LjkxLDEwLjVMMTAuMjksMTAuMTNMMTIsNi4wOUwxMy43MSwxMC4xM0wxOC4wOSwxMC41TDE0Ljc3LDEzLjM4TDE1Ljc2LDE3LjY2TTIyLDkuMjRMMTQuODEsOC42M0wxMiwyTDkuMTksOC42M0wyLDkuMjRMNy40NSwxMy45N0w1LjgyLDIxTDEyLDE3LjI3TDE4LjE4LDIxTDE2LjU0LDEzLjk3TDIyLDkuMjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclBsdXMgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNC45IDEyIDEyLjQgMTQuMyAxMiAxNy4zTDUuOCAyMU0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyUGx1c091dGxpbmUgPSBcIk01LjggMjFMNy40IDE0TDIgOS4yTDkuMiA4LjZMMTIgMkwxNC44IDguNkwyMiA5LjJMMTguOCAxMkgxOEMxNy4zIDEyIDE2LjYgMTIuMSAxNS45IDEyLjRMMTguMSAxMC41TDEzLjcgMTAuMUwxMiA2LjFMMTAuMyAxMC4xTDUuOSAxMC41TDkuMiAxMy40TDguMiAxNy43TDEyIDE1LjRMMTIuNSAxNS43QzEyLjMgMTYuMiAxMi4xIDE2LjggMTIuMSAxNy4zTDUuOCAyMU0xNyAxNFYxN0gxNFYxOUgxN1YyMkgxOVYxOUgyMlYxN0gxOVYxNEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyUmVtb3ZlID0gXCJNNS44IDIxTDcuNCAxNEwyIDkuMkw5LjIgOC42TDEyIDJMMTQuOCA4LjZMMjIgOS4yTDE4LjggMTJIMThDMTQuOSAxMiAxMi40IDE0LjMgMTIgMTcuM0w1LjggMjFNMjAuMSAxNC41TDE4IDE2LjZMMTUuOSAxNC41TDE0LjUgMTUuOUwxNi42IDE4TDE0LjUgMjAuMUwxNS45IDIxLjVMMTggMTkuNEwyMC4xIDIxLjVMMjEuNSAyMC4xTDE5LjQgMThMMjEuNSAxNS45TDIwLjEgMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyUmVtb3ZlT3V0bGluZSA9IFwiTTUuOCAyMUw3LjQgMTRMMiA5LjJMOS4yIDguNkwxMiAyTDE0LjggOC42TDIyIDkuMkwxOC44IDEySDE4QzE3LjMgMTIgMTYuNiAxMi4xIDE1LjkgMTIuNEwxOC4xIDEwLjVMMTMuNyAxMC4xTDEyIDYuMUwxMC4zIDEwLjFMNS45IDEwLjVMOS4yIDEzLjRMOC4yIDE3LjdMMTIgMTUuNEwxMi41IDE1LjdDMTIuMyAxNi4yIDEyLjEgMTYuOCAxMi4xIDE3LjNMNS44IDIxTTIwLjEgMTQuNUwxOCAxNi42TDE1LjkgMTQuNUwxNC41IDE1LjlMMTYuNiAxOEwxNC41IDIwLjFMMTUuOSAyMS41TDE4IDE5LjRMMjAuMSAyMS41TDIxLjUgMjAuMUwxOS40IDE4TDIxLjUgMTUuOUwyMC4xIDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclNldHRpbmdzID0gXCJNNyAyMkg5VjI0SDdWMjJNMTEgMjRIMTNWMjJIMTFWMjRNMTUgMjRIMTdWMjJIMTVWMjRNMjIgOS4yNEwxNC44MSA4LjYyTDEyIDJMOS4xOSA4LjYyTDIgOS4yNEw3LjQ1IDEzLjk3TDUuODIgMjFMMTIgMTcuMjdMMTguMTggMjFMMTYuNTQgMTMuOTdMMjIgOS4yNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyU2V0dGluZ3NPdXRsaW5lID0gXCJNMTEgMjJIMTNWMjRIMTFWMjJNNyAyNEg5VjIySDdWMjRNMTUgMjRIMTdWMjJIMTVWMjRNMTYuNTQgMTMuOTdMMTguMTggMjFMMTIgMTcuMjdMNS44MiAyMUw3LjQ1IDEzLjk3TDIgOS4yNEw5LjE5IDguNjNMMTIgMkwxNC44MSA4LjYzTDIyIDkuMjRMMTYuNTQgMTMuOTdNMTUuNzYgMTcuNjZMMTQuNzcgMTMuMzhMMTguMDkgMTAuNUwxMy43MSAxMC4xM0wxMiA2LjA5TDEwLjI5IDEwLjEzTDUuOTEgMTAuNUw5LjIzIDEzLjM4TDguMjQgMTcuNjZMMTIgMTUuMzlMMTUuNzYgMTcuNjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclNob290aW5nID0gXCJNMTguMDkgMTEuNzdMMTkuNTYgMTguMUwxNCAxNC43NEw4LjQ0IDE4LjFMOS45IDExLjc3TDUgNy41TDExLjQ3IDYuOTZMMTQgMUwxNi41MyA2Ljk2TDIzIDcuNUwxOC4wOSAxMS43N00yIDEyLjQzQzIuMTkgMTIuNDMgMi4zOCAxMi4zNyAyLjU1IDEyLjI2TDUuNzUgMTAuMTVMNC4xOCA4Ljc5TDEuNDUgMTAuNTlDLjk4OSAxMC44OSAuODYxIDExLjUgMS4xNiAxMkMxLjM2IDEyLjI3IDEuNjggMTIuNDMgMiAxMi40M00xLjE2IDIxLjU1QzEuMzYgMjEuODQgMS42OCAyMiAyIDIyQzIuMTkgMjIgMi4zOCAyMS45NSAyLjU1IDIxLjg0TDYuNjYgMTkuMTNMNyAxNy43Nkw3LjMxIDE2LjMxTDEuNDUgMjAuMTZDLjk4OSAyMC40NyAuODYxIDIxLjA5IDEuMTYgMjEuNTVNMS40NSAxNS4zOEMuOTg5IDE1LjY4IC44NjEgMTYuMyAxLjE2IDE2Ljc2QzEuMzYgMTcuMDYgMS42OCAxNy4yMSAyIDE3LjIxQzIuMTkgMTcuMjEgMi4zOCAxNy4xNiAyLjU1IDE3LjA1TDcuOTcgMTMuNUw4LjI0IDEyLjMxTDcuMzIgMTEuNUwxLjQ1IDE1LjM4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXJTaG9vdGluZ091dGxpbmUgPSBcIk0yMyA3LjVMMTYuNTMgNi45NkwxNCAxTDExLjQ3IDYuOTZMNSA3LjVMOS45IDExLjc3TDguNDQgMTguMUwxNCAxNC43NEwxOS41NiAxOC4xTDE4LjA5IDExLjc3TDIzIDcuNU0xNi4xNCAxMi4yM0wxNi41NCAxMy45NEwxNS4wMyAxMy4wM0wxNCAxMi40MUwxMi45NyAxMy4wM0wxMS40NiAxMy45NEwxMS44NSAxMi4yM0wxMi4xMyAxMS4wNUwxMS4yMiAxMC4yNkw5Ljg4IDkuMUwxMS42NCA4Ljk1TDEyLjg0IDguODVMMTMuMzEgNy43NEwxNCA2LjEyTDE0LjY5IDcuNzRMMTUuMTYgOC44NUwxNi4zNiA4Ljk1TDE4LjExIDkuMUwxNi43OCAxMC4yNkwxNS44NiAxMS4wNUwxNi4xNCAxMi4yM00xLjE2IDEyQy44NjEgMTEuNSAuOTg5IDEwLjg5IDEuNDUgMTAuNTlMNC4xOCA4Ljc5TDUuNzUgMTAuMTVMMi41NSAxMi4yNkMyLjM4IDEyLjM3IDIuMTkgMTIuNDMgMiAxMi40M0MxLjY4IDEyLjQzIDEuMzYgMTIuMjcgMS4xNiAxMk0xLjQ1IDIwLjE2TDcuMzEgMTYuMzFMNyAxNy43Nkw2LjY2IDE5LjEzTDIuNTUgMjEuODRDMi4zOCAyMS45NSAyLjE5IDIyIDIgMjJDMS42OCAyMiAxLjM2IDIxLjg0IDEuMTYgMjEuNTVDLjg2MSAyMS4wOSAuOTg5IDIwLjQ3IDEuNDUgMjAuMTZNNy4zMiAxMS41TDguMjQgMTIuMzFMNy45NyAxMy41TDIuNTUgMTcuMDVDMi4zOCAxNy4xNiAyLjE5IDE3LjIxIDIgMTcuMjFDMS42OCAxNy4yMSAxLjM2IDE3LjA2IDEuMTYgMTYuNzZDLjg2MSAxNi4zIC45ODkgMTUuNjggMS40NSAxNS4zOEw3LjMyIDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RhclRocmVlUG9pbnRzID0gXCJNMTIsMi42TDksMTIuNEwyLDE5LjlMMTIsMTcuNkwyMiwyMEwxNSwxMi41TDEyLDIuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGFyVGhyZWVQb2ludHNPdXRsaW5lID0gXCJNMTIsOS41TDEzLjIsMTMuNUwxNiwxNi41TDEyLDE1LjZMNy45LDE2LjVMMTAuNywxMy41TDEyLDkuNU0xMiwyLjZMOSwxMi40TDIsMTkuOUwxMiwxNy42TDIyLDIwTDE1LDEyLjVMMTIsMi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0YXRlTWFjaGluZSA9IFwiTTYuMjcgMTcuMDVDNi43MiAxNy41OCA3IDE4LjI1IDcgMTlDNyAyMC42NiA1LjY2IDIyIDQgMjJTMSAyMC42NiAxIDE5IDIuMzQgMTYgNCAxNkM0LjE4IDE2IDQuMzYgMTYgNC41MyAxNi4wNUw3LjYgMTAuNjlMNS44NiA5LjdMOS45NSA4LjU4TDExLjA3IDEyLjY3TDkuMzMgMTEuNjhMNi4yNyAxNy4wNU0yMCAxNkMxOC43IDE2IDE3LjYgMTYuODQgMTcuMTggMThIMTFWMTZMOCAxOUwxMSAyMlYyMEgxNy4xOEMxNy42IDIxLjE2IDE4LjcgMjIgMjAgMjJDMjEuNjYgMjIgMjMgMjAuNjYgMjMgMTlTMjEuNjYgMTYgMjAgMTZNMTIgOEMxMi4xOCA4IDEyLjM2IDggMTIuNTMgNy45NUwxNS42IDEzLjMxTDEzLjg2IDE0LjNMMTcuOTUgMTUuNDJMMTkuMDcgMTEuMzNMMTcuMzMgMTIuMzJMMTQuMjcgNi45NUMxNC43MiA2LjQyIDE1IDUuNzUgMTUgNUMxNSAzLjM0IDEzLjY2IDIgMTIgMlM5IDMuMzQgOSA1IDEwLjM0IDggMTIgOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVhbSA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJDNy40LDIyIDMuNTUsMTguOTIgMi4zNiwxNC43M0w2LjE5LDE2LjMxQzYuNDUsMTcuNiA3LjYsMTguNTggOC45NywxOC41OEMxMC41MywxOC41OCAxMS44LDE3LjMxIDExLjgsMTUuNzVWMTUuNjJMMTUuMiwxMy4xOUgxNS4yOEMxNy4zNiwxMy4xOSAxOS4wNSwxMS41IDE5LjA1LDkuNDJDMTkuMDUsNy4zNCAxNy4zNiw1LjY1IDE1LjI4LDUuNjVDMTMuMiw1LjY1IDExLjUsNy4zNCAxMS41LDkuNDJWOS40N0w5LjEzLDEyLjkzTDguOTcsMTIuOTJDOC4zOCwxMi45MiA3LjgzLDEzLjEgNy4zOCwxMy40MUwyLDExLjJDMi40Myw2LjA1IDYuNzMsMiAxMiwyTTguMjgsMTcuMTdDOS4wOCwxNy41IDEwLDE3LjEzIDEwLjMzLDE2LjMzQzEwLjY2LDE1LjUzIDEwLjI4LDE0LjYyIDkuNSwxNC4yOUw4LjIyLDEzLjc2QzguNzEsMTMuNTggOS4yNiwxMy41NyA5Ljc4LDEzLjc5QzEwLjMxLDE0IDEwLjcyLDE0LjQxIDEwLjkzLDE0Ljk0QzExLjE1LDE1LjQ2IDExLjE1LDE2LjA0IDEwLjkzLDE2LjU2QzEwLjUsMTcuNjQgOS4yMywxOC4xNiA4LjE1LDE3LjcxQzcuNjUsMTcuNSA3LjI3LDE3LjEyIDcuMDYsMTYuNjdMOC4yOCwxNy4xN00xNy44LDkuNDJDMTcuOCwxMC44MSAxNi42NywxMS45NCAxNS4yOCwxMS45NEMxMy45LDExLjk0IDEyLjc3LDEwLjgxIDEyLjc3LDkuNDJBMi41LDIuNSAwIDAsMSAxNS4yOCw2LjkxQzE2LjY3LDYuOTEgMTcuOCw4LjA0IDE3LjgsOS40Mk0xMy40LDkuNDJDMTMuNCwxMC40NiAxNC4yNCwxMS4zMSAxNS4yOSwxMS4zMUMxNi4zMywxMS4zMSAxNy4xNywxMC40NiAxNy4xNyw5LjQyQzE3LjE3LDguMzggMTYuMzMsNy41MyAxNS4yOSw3LjUzQzE0LjI0LDcuNTMgMTMuNCw4LjM4IDEzLjQsOS40MlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVlcmluZyA9IFwiTTEzLDE5LjkyQzE0LjgsMTkuNyAxNi4zNSwxOC45NSAxNy42NSwxNy42NUMxOC45NSwxNi4zNSAxOS43LDE0LjggMTkuOTIsMTNIMTYuOTJDMTYuNywxNCAxNi4yNCwxNC44NCAxNS41NCwxNS41NEMxNC44NCwxNi4yNCAxNCwxNi43IDEzLDE2LjkyVjE5LjkyTTEwLDhIMTRMMTcsMTFIMTkuOTJDMTkuNjcsOS4wNSAxOC43OSw3LjM4IDE3LjI3LDZDMTUuNzYsNC42NiAxNCw0IDEyLDRDMTAsNCA4LjI0LDQuNjYgNi43Myw2QzUuMjEsNy4zOCA0LjMzLDkuMDUgNC4wOCwxMUg3TDEwLDhNMTEsMTkuOTJWMTYuOTJDMTAsMTYuNyA5LjE2LDE2LjI0IDguNDYsMTUuNTRDNy43NiwxNC44NCA3LjMsMTQgNy4wOCwxM0g0LjA4QzQuMywxNC43NyA1LjA1LDE2LjMgNi4zNSwxNy42QzcuNjUsMTguOSA5LjIsMTkuNjcgMTEsMTkuOTJNMTIsMkMxNC43NSwyIDE3LjEsMyAxOS4wNSw0Ljk1QzIxLDYuOSAyMiw5LjI1IDIyLDEyQzIyLDE0Ljc1IDIxLDE3LjEgMTkuMDUsMTkuMDVDMTcuMSwyMSAxNC43NSwyMiAxMiwyMkM5LjI1LDIyIDYuOSwyMSA0Ljk1LDE5LjA1QzMsMTcuMSAyLDE0Ljc1IDIsMTJDMiw5LjI1IDMsNi45IDQuOTUsNC45NUM2LjksMyA5LjI1LDIgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVlcmluZ09mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTcuMjUsMjAuNUMxNS43LDIxLjUgMTMuOTUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsMTAuMDUgMi41LDguMyAzLjUsNi43NUwyLDUuMjdNMTMsMTkuOTJDMTQsMTkuOCAxNC45MywxOS41IDE1Ljc4LDE5LjA1TDEzLjUsMTYuNzhDMTMuMzQsMTYuODQgMTMuMTYsMTYuODggMTMsMTYuOTJWMTkuOTJNNC4wOCwxMUg3TDcuMzcsMTAuNjNMNC45Niw4LjIzQzQuNSw5LjA4IDQuMjEsMTAgNC4wOCwxMU0xOS45MiwxM0gxNi45MkMxNi44LDEzLjU0IDE2LjYsMTQuMDUgMTYuMzMsMTQuNUw5LjkxLDguMDlMMTAsOEgxNEwxNywxMUgxOS45MkMxOS42Nyw5LjA1IDE4Ljc5LDcuMzggMTcuMjcsNkMxNS43Niw0LjY2IDE0LDQgMTIsNEMxMC4yNiw0IDguNzEsNC41IDcuMzQsNS41TDUuOTEsNC4wOUM3LjY2LDIuNzEgOS42OSwyIDEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC4zMSAyMS4yOSwxNi4zNCAxOS45MSwxOC4wOUwxOC41LDE2LjY3QzE5LjI4LDE1LjU5IDE5Ljc2LDE0LjM2IDE5LjkyLDEzTTExLDE5LjkyVjE2LjkyQzEwLDE2LjcgOS4xNiwxNi4yNCA4LjQ2LDE1LjU0QzcuNzYsMTQuODQgNy4zLDE0IDcuMDgsMTNINC4wOEM0LjMsMTQuNzcgNS4wNSwxNi4zIDYuMzUsMTcuNkM3LjY1LDE4LjkgOS4yLDE5LjY3IDExLDE5LjkyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0ZXBCYWNrd2FyZCA9IFwiTTE5LDVWMTlIMTZWNU0xNCw1VjE5TDMsMTJcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVwQmFja3dhcmQyID0gXCJNMTcsNUgxNFYxOUgxN1Y1TTEyLDVMMSwxMkwxMiwxOVY1TTIyLDVIMTlWMTlIMjJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGVwRm9yd2FyZCA9IFwiTTUsNVYxOUg4VjVNMTAsNVYxOUwyMSwxMlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0ZXBGb3J3YXJkMiA9IFwiTTcsNUgxMFYxOUg3VjVNMTIsNUwyMywxMkwxMiwxOVY1TTIsNUg1VjE5SDJWNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGV0aG9zY29wZSA9IFwiTTE5LDhDMTkuNTYsOCAyMCw4LjQzIDIwLDlBMSwxIDAgMCwxIDE5LDEwQzE4LjQzLDEwIDE4LDkuNTUgMTgsOUMxOCw4LjQzIDE4LjQzLDggMTksOE0yLDJWMTFDMiwxMy45NiA0LjE5LDE2LjUgNy4xNCwxNi45MUM3Ljc2LDE5LjkyIDEwLjQyLDIyIDEzLjUsMjJBNi41LDYuNSAwIDAsMCAyMCwxNS41VjExLjgxQzIxLjE2LDExLjM5IDIyLDEwLjI5IDIyLDlBMywzIDAgMCwwIDE5LDZBMywzIDAgMCwwIDE2LDlDMTYsMTAuMjkgMTYuODQsMTEuNCAxOCwxMS44MVYxNS40MUMxOCwxNy45MSAxNiwxOS45MSAxMy41LDE5LjkxQzExLjUsMTkuOTEgOS44MiwxOC43IDkuMjIsMTYuOUMxMiwxNi4zIDE0LDEzLjggMTQsMTFWMkgxMFY1SDEyVjExQTQsNCAwIDAsMSA4LDE1QTQsNCAwIDAsMSA0LDExVjVINlYySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlciA9IFwiTTE4LjUgMkg1LjVDMy42IDIgMiAzLjYgMiA1LjVWMTguNUMyIDIwLjQgMy42IDIyIDUuNSAyMkgxNkwyMiAxNlY1LjVDMjIgMy42IDIwLjQgMiAxOC41IDJNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyQWxlcnQgPSBcIk0xOC41IDJINS41QzMuNiAyIDIgMy42IDIgNS41VjE4LjVDMiAyMC40IDMuNiAyMiA1LjUgMjJIMTZMMjIgMTZWNS41QzIyIDMuNiAyMC40IDIgMTguNSAyTTEzIDE3SDExVjE1SDEzVjE2TTEzIDEzSDExVjdIMTNWMTJNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyQWxlcnRPdXRsaW5lID0gXCJNMTEgMTVIMTNWMTdIMTFWMTVNMTEgMTNIMTNWN0gxMVYxM00yMiA1LjVWMTZMMTYgMjJINS41QzMuNiAyMiAyIDIwLjQgMiAxOC41VjUuNUMyIDMuNiAzLjYgMiA1LjUgMkgxOC41QzIwLjQgMiAyMiAzLjYgMjIgNS41TTIwIDUuOEMyMCA0LjggMTkuMiA0IDE4LjIgNEg1LjhDNC44IDQgNCA0LjggNCA1LjhWMTguM0M0IDE5LjMgNC44IDIwLjEgNS44IDIwLjFIMTVWMTguNkMxNSAxNi43IDE2LjYgMTUuMSAxOC41IDE1LjFIMjBWNS44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0aWNrZXJDaGVjayA9IFwiTTE4LjUgMkg1LjVDMy42IDIgMiAzLjYgMiA1LjVWMTguNUMyIDIwLjQgMy42IDIyIDUuNSAyMkgxNkwyMiAxNlY1LjVDMjIgMy42IDIwLjQgMiAxOC41IDJNNyAxMi41TDguMyAxMS4xTDEwLjQgMTMuMkwxNS42IDhMMTcgOS40TDEwLjUgMTZMNyAxMi41TTE1IDIwVjE4LjVDMTUgMTYuNiAxNi42IDE1IDE4LjUgMTVIMjBMMTUgMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlckNoZWNrT3V0bGluZSA9IFwiTTE4LjUgMkg1LjVDMy42IDIgMiAzLjYgMiA1LjVWMTguNUMyIDIwLjQgMy42IDIyIDUuNSAyMkgxNkwyMiAxNlY1LjVDMjIgMy42IDIwLjQgMiAxOC41IDJNMjAgMTVIMTguNUMxNi42IDE1IDE1IDE2LjYgMTUgMTguNVYyMEg1LjhDNC44IDIwIDQgMTkuMiA0IDE4LjJWNS44QzQgNC44IDQuOCA0IDUuOCA0SDE4LjNDMTkuMyA0IDIwLjEgNC44IDIwLjEgNS44VjE1TTE1LjIgOC4yTDE2LjcgOS43TDEwLjcgMTUuN0w3LjIgMTIuMkw4LjcgMTAuN0wxMC43IDEyLjdMMTUuMiA4LjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlckNpcmNsZU91dGxpbmUgPSBcIk0xMi4xMiwxOC40NkwxOC4zLDEyLjI4QzE2Ljk0LDEyLjU5IDE1LjMxLDEzLjIgMTQuMDcsMTQuNDZDMTMuMDQsMTUuNSAxMi4zOSwxNi44MyAxMi4xMiwxOC40Nk0yMC43NSwxMEgyMS4wNUMyMS40NCwxMCAyMS43OSwxMC4yNyAyMS45MywxMC42NEMyMi4wNywxMSAyMiwxMS40MyAyMS43LDExLjcxTDExLjcsMjEuNzFDMTEuNSwyMS45IDExLjI2LDIyIDExLDIyTDEwLjY0LDIxLjkzQzEwLjI3LDIxLjc5IDEwLDIxLjQ0IDEwLDIxLjA1QzkuODQsMTcuNjYgMTAuNzMsMTQuOTYgMTIuNjYsMTMuMDNDMTUuNSwxMC4yIDE5LjYyLDEwIDIwLjc1LDEwTTEyLDJDMTYuNSwyIDIwLjM0LDUgMjEuNTgsOS4xMUwyMCw5SDE5LjQyQzE4LjI0LDYuMDcgMTUuMzYsNCAxMiw0QTgsOCAwIDAsMCA0LDEyQzQsMTUuMzYgNi4wNywxOC4yNCA5LDE5LjQyQzguOTcsMjAuMTMgOSwyMC44NSA5LjExLDIxLjU3QzUsMjAuMzMgMiwxNi41IDIsMTJDMiw2LjQ3IDYuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlckVtb2ppID0gXCJNNS41LDJDMy41NiwyIDIsMy41NiAyLDUuNVYxOC41QzIsMjAuNDQgMy41NiwyMiA1LjUsMjJIMTZMMjIsMTZWNS41QzIyLDMuNTYgMjAuNDQsMiAxOC41LDJINS41TTUuNzUsNEgxOC4yNUExLjc1LDEuNzUgMCAwLDEgMjAsNS43NVYxNUgxOC41QzE2LjU2LDE1IDE1LDE2LjU2IDE1LDE4LjVWMjBINS43NUExLjc1LDEuNzUgMCAwLDEgNCwxOC4yNVY1Ljc1QTEuNzUsMS43NSAwIDAsMSA1Ljc1LDRNMTQuNDQsNi43N0MxNC4yOCw2Ljc3IDE0LjEyLDYuNzkgMTMuOTcsNi44M0MxMy4wMyw3LjA5IDEyLjUsOC4wNSAxMi43NCw5QzEyLjc5LDkuMTUgMTIuODYsOS4zIDEyLjk1LDkuNDRMMTYuMTgsOC41NkMxNi4xOCw4LjM5IDE2LjE2LDguMjIgMTYuMTIsOC4wNUMxNS45MSw3LjMgMTUuMjIsNi43NyAxNC40NCw2Ljc3TTguMTcsOC41QzgsOC41IDcuODUsOC41IDcuNyw4LjU1QzYuNzcsOC44MSA2LjIyLDkuNzcgNi40NywxMC43QzYuNSwxMC44NiA2LjU5LDExIDYuNjgsMTEuMTZMOS45MSwxMC4yOEM5LjkxLDEwLjExIDkuODksOS45NCA5Ljg1LDkuNzhDOS42NCw5IDguOTUsOC41IDguMTcsOC41TTE2LjcyLDExLjI2TDcuNTksMTMuNzdDOC45MSwxNS4zIDExLDE1Ljk0IDEyLjk1LDE1LjQxQzE0LjksMTQuODcgMTYuMzYsMTMuMjUgMTYuNzIsMTEuMjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlck1pbnVzID0gXCJNMTguNSAySDUuNUMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMk04IDExSDE2VjEzSDhWMTFNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyTWludXNPdXRsaW5lID0gXCJNOCAxMUgxNlYxM0g4VjExTTIyIDUuNVYxNkwxNiAyMkg1LjVDMy42IDIyIDIgMjAuNCAyIDE4LjVWNS41QzIgMy42IDMuNiAyIDUuNSAySDE4LjVDMjAuNCAyIDIyIDMuNiAyMiA1LjVNMjAgNS44QzIwIDQuOCAxOS4yIDQgMTguMiA0SDUuOEM0LjggNCA0IDQuOCA0IDUuOFYxOC4zQzQgMTkuMyA0LjggMjAuMSA1LjggMjAuMUgxNVYxOC42QzE1IDE2LjcgMTYuNiAxNS4xIDE4LjUgMTUuMUgyMFY1LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RpY2tlck91dGxpbmUgPSBcIk01LjUgMkMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMkg1LjVNNS44IDRIMTguM0MxOS4zIDQgMjAuMSA0LjggMjAuMSA1LjhWMTVIMTguNkMxNi43IDE1IDE1LjEgMTYuNiAxNS4xIDE4LjVWMjBINS44QzQuOCAyMCA0IDE5LjIgNCAxOC4yVjUuOEM0IDQuOCA0LjggNCA1LjggNFwiO1xyXG5leHBvcnQgdmFyIG1kaVN0aWNrZXJQbHVzID0gXCJNMTguNSAySDUuNUMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMk0xMyAxNkgxMVYxM0g4VjExSDExVjhIMTNWMTFIMTZWMTNIMTNWMTZNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyUGx1c091dGxpbmUgPSBcIk0xMyAxMUgxNlYxM0gxM1YxNkgxMVYxM0g4VjExSDExVjhIMTNWMTFNMjIgNS41VjE2TDE2IDIySDUuNUMzLjYgMjIgMiAyMC40IDIgMTguNVY1LjVDMiAzLjYgMy42IDIgNS41IDJIMTguNUMyMC40IDIgMjIgMy42IDIyIDUuNU0yMCA1LjhDMjAgNC44IDE5LjIgNCAxOC4yIDRINS44QzQuOCA0IDQgNC44IDQgNS44VjE4LjNDNCAxOS4zIDQuOCAyMC4xIDUuOCAyMC4xSDE1VjE4LjZDMTUgMTYuNyAxNi42IDE1LjEgMTguNSAxNS4xSDIwVjUuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyUmVtb3ZlID0gXCJNMTguNSAySDUuNUMzLjYgMiAyIDMuNiAyIDUuNVYxOC41QzIgMjAuNCAzLjYgMjIgNS41IDIySDE2TDIyIDE2VjUuNUMyMiAzLjYgMjAuNCAyIDE4LjUgMk0xMiAxMy40TDkuOSAxNS41TDguNSAxNC4xTDEwLjYgMTJMOC41IDkuOUw5LjkgOC41TDEyIDEwLjZMMTQuMSA4LjVMMTUuNSA5LjlMMTMuNCAxMkwxNS41IDE0LjFMMTQuMSAxNS41TDEyIDEzLjRNMTUgMjBWMTguNUMxNSAxNi42IDE2LjYgMTUgMTguNSAxNUgyMEwxNSAyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdGlja2VyUmVtb3ZlT3V0bGluZSA9IFwiTTE2IDkuNEwxMy40IDEyTDE2IDE0LjZMMTQuNiAxNkwxMiAxMy40TDkuNCAxNkw4IDE0LjZMMTAuNiAxMkw4IDkuNEw5LjQgOEwxMiAxMC42TDE0LjYgOEwxNiA5LjRNMjIgNS41VjE2TDE2IDIySDUuNUMzLjYgMjIgMiAyMC40IDIgMTguNVY1LjVDMiAzLjYgMy42IDIgNS41IDJIMTguNUMyMC40IDIgMjIgMy42IDIyIDUuNU0yMCA1LjhDMjAgNC44IDE5LjIgNCAxOC4yIDRINS44QzQuOCA0IDQgNC44IDQgNS44VjE4LjNDNCAxOS4zIDQuOCAyMC4xIDUuOCAyMC4xSDE1VjE4LjZDMTUgMTYuNyAxNi42IDE1LjEgMTguNSAxNS4xSDIwVjUuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9ja2luZyA9IFwiTTE3LDJBMiwyIDAgMCwxIDE5LDRWN0EyLDIgMCAwLDEgMTcsOVYxN0MxNywxNy44NSAxNi41LDE4LjU3IDE1Ljc0LDE4Ljg2TDkuNSwyMS43N0M4LjUsMjIuMjQgNy4yOSwyMS44MSA2LjgzLDIwLjgxTDYsMTlDNS41LDE4IDUuOTUsMTYuOCA2Ljk1LDE2LjM0TDEwLDE0LjkxVjlBMiwyIDAgMCwxIDgsN1Y0QTIsMiAwIDAsMSAxMCwySDE3TTEwLDRWN0gxN1Y0SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b21hY2ggPSBcIk00IDE4QzQuNjcgMTkuODUgNi4wNyAyMiAxMiAyMkMxNC4zNiAyMiAxNy4wNyAyMS45MyAxOSAyMEMyMCAxOSAyMiAxNyAyMiAxMVMyMCA0IDE4IDRDMTYuNjIgNCAxNSA0IDE0IDZWNi4wM0ExLjgyIDEuODIgMCAwIDEgMTIuMTMgNi45NUMxMSA2LjgxIDExIDYuMzcgMTEgNlYySDlWNkEyLjkyIDIuOTIgMCAwIDAgMTIgOUMxMyA5IDEzIDEwLjc4IDEzIDEyQzEzIDEzLjg5IDEyLjUgMTUuMjYgMTEgMTZDOC42OSAxNy4xNSA2LjM5IDE3IDUuNjEgMTUuNDdBMS41IDEuNSAwIDAgMCAzLjE0IDE0Ljg3QTMuNjcgMy42NyAwIDAgMCAyIDE4VjIySDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RvcCA9IFwiTTE4LDE4SDZWNkgxOFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9wQ2lyY2xlID0gXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJNOSw5SDE1VjE1SDlcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9wQ2lyY2xlT3V0bGluZSA9IFwiTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyTTEyLDRDMTYuNDEsNCAyMCw3LjU5IDIwLDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNE05LDlWMTVIMTVWOVwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b3JlID0gXCJNMTIsMThINlYxNEgxMk0yMSwxNFYxMkwyMCw3SDRMMywxMlYxNEg0VjIwSDE0VjE0SDE4VjIwSDIwVjE0TTIwLDRINFY2SDIwVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RvcmUyNEhvdXIgPSBcIk0xNiwxMkgxNVYxMEgxM1Y3SDE0VjlIMTVWN0gxNk0xMSwxMEg5VjExSDExVjEySDhWOUgxMFY4SDhWN0gxMU0xOSw3VjRINVY3SDJWMjBIMTBWMTZIMTRWMjBIMjJWN0gxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZU1pbnVzID0gXCJNNCA0VjZIMjBWNE00IDdMMyAxMlYxNEg0VjIwSDEzQzEyLjk1IDE5LjY2IDEyLjkyIDE5LjMxIDEyLjkyIDE4Ljk1QzEyLjkyIDE3LjczIDEzLjMgMTYuNTMgMTQgMTUuNTNWMTRIMTUuNTRDMTYuNTQgMTMuMzMgMTcuNzEgMTIuOTYgMTguOTEgMTIuOTZDMTkuNjIgMTIuOTYgMjAuMzMgMTMuMDkgMjEgMTMuMzRWMTJMMjAgN002IDE0SDEyVjE4SDZNMTUgMThWMjBIMjNWMThcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZU91dGxpbmUgPSBcIk0xOC4zNiA5TDE4Ljk2IDEySDUuMDRMNS42NCA5SDE4LjM2TTIwIDRINFY2SDIwVjRNMjAgN0g0TDMgMTJWMTRINFYyMEgxNFYxNEgxOFYyMEgyMFYxNEgyMVYxMkwyMCA3TTYgMThWMTRIMTJWMThINlpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZVBsdXMgPSBcIk00IDRWNkgyMFY0TTQgN0wzIDEyVjE0SDRWMjBIMTNDMTIuOTUgMTkuNjYgMTIuOTIgMTkuMzEgMTIuOTIgMTguOTVDMTIuOTIgMTcuNzMgMTMuMyAxNi41MyAxNCAxNS41M1YxNEgxNS41NEMxNi41NCAxMy4zMyAxNy43MSAxMi45NiAxOC45MSAxMi45NkMxOS42MiAxMi45NiAyMC4zMyAxMy4wOSAyMSAxMy4zNFYxMkwyMCA3TTYgMTRIMTJWMThINk0xOCAxNVYxOEgxNVYyMEgxOFYyM0gyMFYyMEgyM1YxOEgyMFYxNVwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b3JlUmVtb3ZlID0gXCJNNCA0SDIwVjZINFY0TTE1LjQ2IDE2Ljg4TDE2Ljg4IDE1LjQ2TDE5IDE3LjU5TDIxLjEyIDE1LjQ3TDIyLjU0IDE2Ljg4TDIwLjQxIDE5TDIyLjU0IDIxLjEyTDIxLjEyIDIyLjU0TDE5IDIwLjQxTDE2Ljg4IDIyLjU0TDE1LjQ2IDIxLjEyTDE3LjU5IDE5TDE1LjQ3IDE2Ljg4TTQgN0gyMEwyMSAxMlYxMy4zNEMyMC4zMyAxMy4wOSAxOS42MiAxMi45NiAxOC45MSAxMi45NkMxNy43MSAxMi45NiAxNi41NCAxMy4zMyAxNS41NCAxNEgxNFYxNS41M0MxMy4zIDE2LjUzIDEyLjkyIDE3LjczIDEyLjkyIDE4Ljk1TDEzIDIwSDRWMTRIM1YxMkw0IDdNNiAxNFYxOEgxMlYxNEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0b3JlZnJvbnQgPSBcIk01LjA2IDNDNC42MyAzIDQuMjIgMy4xNCAzLjg0IDMuNDJDMy40NiAzLjcgMy4yNCA0LjA2IDMuMTQgNC41TDIuMTEgOC45MUMxLjg2IDEwIDIuMDYgMTAuOTIgMi42OSAxMS43M0MyLjgxIDExLjg1IDIuOTMgMTEuOTcgMy4wNCAxMi4wN0MzLjYzIDEyLjY0IDQuMjggMTMgNS4yMiAxM0M2LjE2IDEzIDYuOTEgMTIuNTkgNy40NyAxMi4wNUM4LjEgMTIuNjcgOC44NiAxMyA5LjggMTNDMTAuNjQgMTMgMTEuNDQgMTIuNjMgMTIgMTIuMDdDMTIuNjggMTIuNyAxMy40NSAxMyAxNC4zIDEzQzE1LjE3IDEzIDE1LjkxIDEyLjY3IDE2LjU0IDEyLjA1QzE3LjExIDEyLjYyIDE3Ljg2IDEzIDE4LjgxIDEzQzE5Ljc2IDEzIDIwLjQzIDEyLjY1IDIxIDEyLjA2QzIxLjA5IDExLjk3IDIxLjE4IDExLjg3IDIxLjI4IDExLjc3QzIxLjk0IDEwLjk1IDIyLjE0IDEwIDIxLjg5IDguOTFMMjAuODYgNC41QzIwLjczIDQuMDYgMjAuNSAzLjcgMjAuMTMgMy40MkMxOS43NyAzLjE0IDE5LjM4IDMgMTguOTQgM00xOC44OSA0Ljk3TDE5Ljk3IDkuMzhDMjAuMDYgOS44MSAxOS45NyAxMC4yIDE5LjY5IDEwLjU1QzE5LjQ0IDEwLjg2IDE5LjEzIDExIDE4Ljc1IDExQzE4LjQ0IDExIDE4LjE3IDEwLjkgMTcuOTUgMTAuNjZDMTcuNzMgMTAuNDMgMTcuNjEgMTAuMTYgMTcuNTggOS44NEwxNi45NyA1TTUuMDYgNUg3LjAzTDYuNDIgOS44NEM2LjMgMTAuNjMgNS45MSAxMSA1LjI1IDExQzQuODQgMTEgNC41MyAxMC44NiA0LjMxIDEwLjU1QzQuMDMgMTAuMiAzLjk0IDkuODEgNC4wMyA5LjM4TTkuMDUgNUgxMVY5LjdDMTEgMTAuMDUgMTAuODkgMTAuMzUgMTAuNjQgMTAuNjJDMTAuMzkgMTAuODggMTAuMDggMTEgOS43IDExQzkuMzYgMTEgOS4wNyAxMC44OCA4Ljg0IDEwLjU5QzguNjEgMTAuMyA4LjUgMTAgOC41IDkuNjZWOS41TTEzIDVIMTQuOTVMMTUuNSA5LjVDMTUuNTggOS45MiAxNS41IDEwLjI3IDE1LjIxIDEwLjU3QzE0Ljk1IDEwLjg3IDE0LjYxIDExIDE0LjIgMTFDMTMuODkgMTEgMTMuNjEgMTAuODggMTMuMzYgMTAuNjJDMTMuMTEgMTAuMzUgMTMgMTAuMDUgMTMgOS43TTMgMTQuMDNWMTlDMyAyMC4xMSAzLjg5IDIxIDUgMjFDOS42NyAyMSAxNC4zMyAyMSAxOSAyMUMyMC4xIDIxIDIxIDIwLjExIDIxIDE5VjE0LjA1QzIwLjQ1IDE0LjYzIDE5Ljc1IDE0Ljk2IDE5IDE1QzE4IDE1LjAzIDE3LjI1IDE0Ljc0IDE2LjU0IDE0LjA1QzE1Ljk0IDE0LjY1IDE1LjE0IDE1IDE0LjMgMTVDMTMuNCAxNSAxMi42IDE0LjY0IDEyIDE0LjA3QzExLjQzIDE0LjY0IDEwLjY1IDE1IDkuNzggMTVDOC44NyAxNSA4LjA3IDE0LjY1IDcuNDcgMTQuMDVDNi44OSAxNC42NCA2LjEgMTUgNS4yMyAxNUM0LjMzIDE1IDMuNjYgMTQuNjUgMyAxNC4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdG9yZWZyb250T3V0bGluZSA9IFwiTTUuMDYgM0M0LjYzIDMgNC4yMiAzLjE0IDMuODQgMy40MlMzLjI0IDQuMDYgMy4xNCA0LjVMMi4xMSA4LjkxQzEuODYgMTAgMi4wNiAxMC45NSAyLjcyIDExLjc3TDMgMTIuMDVWMTlDMyAxOS41IDMuMiAyMCAzLjYxIDIwLjM5UzQuNSAyMSA1IDIxSDE5QzE5LjUgMjEgMjAgMjAuOCAyMC4zOSAyMC4zOVMyMSAxOS41IDIxIDE5VjEyLjA1TDIxLjI4IDExLjc3QzIxLjk0IDEwLjk1IDIyLjE0IDEwIDIxLjg5IDguOTFMMjAuODYgNC41QzIwLjczIDQuMDYgMjAuNSAzLjcgMjAuMTMgMy40MkMxOS43NyAzLjE0IDE5LjM4IDMgMTguOTQgM0g1LjA2TTE4Ljg5IDQuOTdMMTkuOTcgOS4zOEMyMC4wNiA5LjgxIDE5Ljk3IDEwLjIgMTkuNjkgMTAuNTVDMTkuNDQgMTAuODYgMTkuMTMgMTEgMTguNzUgMTFDMTguNDQgMTEgMTguMTcgMTAuOSAxNy45NSAxMC42NkMxNy43MyAxMC40MyAxNy42MSAxMC4xNiAxNy41OCA5Ljg0TDE2Ljk3IDVMMTguODkgNC45N001LjA2IDVINy4wM0w2LjQyIDkuODRDNi4zIDEwLjYzIDUuOTEgMTEgNS4yNSAxMUM0Ljg0IDExIDQuNTMgMTAuODYgNC4zMSAxMC41NUM0LjAzIDEwLjIgMy45NCA5LjgxIDQuMDMgOS4zOEw1LjA2IDVNOS4wNSA1SDExVjkuN0MxMSAxMC4wNSAxMC44OSAxMC4zNSAxMC42NCAxMC42MkMxMC4zOSAxMC44OCAxMC4wOCAxMSA5LjcgMTFDOS4zNiAxMSA5LjA3IDEwLjg4IDguODQgMTAuNTlTOC41IDEwIDguNSA5LjY2VjkuNUw5LjA1IDVNMTMgNUgxNC45NUwxNS41IDkuNUMxNS41OCA5LjkyIDE1LjUgMTAuMjcgMTUuMjEgMTAuNTdDMTQuOTUgMTAuODcgMTQuNjEgMTEgMTQuMiAxMUMxMy44OSAxMSAxMy42MSAxMC44OCAxMy4zNiAxMC42MkMxMy4xMSAxMC4zNSAxMyAxMC4wNSAxMyA5LjdWNU03LjQ1IDEyLjA1QzguMDggMTIuNjcgOC44NiAxMyA5LjggMTNDMTAuNjQgMTMgMTEuMzggMTIuNjcgMTIgMTIuMDVDMTIuNjkgMTIuNjcgMTMuNDUgMTMgMTQuMyAxM0MxNS4xNyAxMyAxNS45MiAxMi42NyAxNi41NSAxMi4wNUMxNy4xMSAxMi42NyAxNy44NiAxMyAxOC44IDEzSDE5LjAzVjE5SDVWMTNINS4yNUM2LjE2IDEzIDYuODkgMTIuNjcgNy40NSAxMi4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdG92ZSA9IFwiTTYsMTRIOEwxMSwxN0g5TDYsMTRNNCw0SDVWM0ExLDEgMCAwLDEgNiwySDEwQTEsMSAwIDAsMSAxMSwzVjRIMTNWM0ExLDEgMCAwLDEgMTQsMkgxOEExLDEgMCAwLDEgMTksM1Y0SDIwQTIsMiAwIDAsMSAyMiw2VjE5QTIsMiAwIDAsMSAyMCwyMVYyMkgxN1YyMUg3VjIySDRWMjFBMiwyIDAgMCwxIDIsMTlWNkEyLDIgMCAwLDEgNCw0TTE4LDdBMSwxIDAgMCwxIDE5LDhBMSwxIDAgMCwxIDE4LDlBMSwxIDAgMCwxIDE3LDhBMSwxIDAgMCwxIDE4LDdNMTQsN0ExLDEgMCAwLDEgMTUsOEExLDEgMCAwLDEgMTQsOUExLDEgMCAwLDEgMTMsOEExLDEgMCAwLDEgMTQsN00yMCw2SDRWMTBIMjBWNk00LDE5SDIwVjEySDRWMTlNNiw3QTEsMSAwIDAsMSA3LDhBMSwxIDAgMCwxIDYsOUExLDEgMCAwLDEgNSw4QTEsMSAwIDAsMSA2LDdNMTMsMTRIMTVMMTgsMTdIMTZMMTMsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3RyYXRlZ3kgPSBcIk02LjkxIDUuNUw5LjIxIDcuNzlMNy43OSA5LjIxTDUuNSA2LjkxTDMuMjEgOS4yMUwxLjc5IDcuNzlMNC4wOSA1LjVMMS43OSAzLjIxTDMuMjEgMS43OUw1LjUgNC4wOUw3Ljc5IDEuNzlMOS4yMSAzLjIxTTIyLjIxIDE2LjIxTDIwLjc5IDE0Ljc5TDE4LjUgMTcuMDlMMTYuMjEgMTQuNzlMMTQuNzkgMTYuMjFMMTcuMDkgMTguNUwxNC43OSAyMC43OUwxNi4yMSAyMi4yMUwxOC41IDE5LjkxTDIwLjc5IDIyLjIxTDIyLjIxIDIwLjc5TDE5LjkxIDE4LjVNMjAuNCA2LjgzTDE3LjE4IDExTDE1LjYgOS43M0wxNi43NyA4LjIzQTkuMDggOS4wOCAwIDAgMCAxMC4xMSAxMy44NUE0LjUgNC41IDAgMSAxIDcuNSAxM0E0IDQgMCAwIDEgOC4yOCAxMy4wOEExMS4yNyAxMS4yNyAwIDAgMSAxNi40MyA2LjI2TDE1IDUuMThMMTYuMjcgMy42TTEwIDE3LjVBMi41IDIuNSAwIDEgMCA3LjUgMjBBMi41IDIuNSAwIDAgMCAxMCAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN0cmV0Y2hUb1BhZ2UgPSBcIk0yMCwySDRDMi44OSwyIDIsMi44OSAyLDRWMjBDMiwyMS4xMSAyLjg5LDIyIDQsMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWNEMyMiwyLjg5IDIxLjExLDIgMjAsMk05LDE5SDVWMTVMNi4yOSwxNi4yOUw3LjgzLDE0Ljc1TDkuMjUsMTYuMTdMNy43MSwxNy43MU03LjgzLDkuMjVMNi4yOSw3LjcxTDUsOVY1SDlMNy43MSw2LjI5TDkuMjUsNy44M00xOSwxOUgxNUwxNi4yOSwxNy43MUwxNC43NSwxNi4xN0wxNi4xNywxNC43NUwxNy43MSwxNi4yOUwxOSwxNU0xOSw5TDE3LjcxLDcuNzFMMTYuMTcsOS4yNUwxNC43NSw3LjgzTDE2LjI5LDYuMjlMMTUsNUgxOVwiO1xyXG5leHBvcnQgdmFyIG1kaVN0cmV0Y2hUb1BhZ2VPdXRsaW5lID0gXCJNMjAsMkg0QzIuODksMiAyLDIuODkgMiw0VjIwQzIsMjEuMTEgMi44OSwyMiA0LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjRDMjIsMi44OSAyMS4xMSwyIDIwLDJNMjAsMjBINFY0SDIwTTguODMsMTAuMjVMNy4yOSw4LjcxTDYsMTBWNkgxMEw4LjcxLDcuMjlMMTAuMjUsOC44M00xMy43NSw4LjgzTDE1LjI5LDcuMjlMMTQsNkgxOFYxMEwxNi43MSw4LjcxTDE1LjE3LDEwLjI1TTE1LjE3LDEzLjc1TDE2LjcxLDE1LjI5TDE4LDE0VjE4SDE0TDE1LjI5LDE2LjcxTDEzLjc1LDE1LjE3TTEwLjI1LDE1LjE3TDguNzEsMTYuNzFMMTAsMThINlYxNEw3LjI5LDE1LjI5TDguODMsMTMuNzVcIjtcclxuZXhwb3J0IHZhciBtZGlTdHJpbmdMaWdodHMgPSBcIk0yMi41NiAxMS4zOUMyMi4zNiAxMC41OSAyMS44MiA5Ljg1IDIxLjA1IDkuNDRMMjAuNjMgNy43NEMyMS4xMSA3LjU4IDIxLjU3IDcuNDEgMjIgNy4yM1Y1QzIwIDYuMDcgMTYuNTMgNy4wMyAxMiA3LjAzUzQgNi4wNyAyIDVWNy4yM0MyLjQzIDcuNDEgMi44OSA3LjU4IDMuMzcgNy43NEwyLjk1IDkuNDRDMi4xOCA5Ljg1IDEuNjQgMTAuNTkgMS40NCAxMS4zOUMuOTA1IDEzLjU3IC4zODUgMTcuMzEgMi45MiAxNy45M0M0IDE4LjIgNiAxNy44OSA3LjI3IDEyLjgyQzcuNDYgMTIgNy4zMyAxMS4xMiA2Ljg0IDEwLjM5TDcuMjYgOC42N0M4LjE0IDguODEgOS4wNSA4LjkgMTAgOC45NlYxMC43NEM5LjM1IDExLjMzIDkgMTIuMTcgOSAxM0M5IDE1LjI0IDkuMzkgMTkgMTIgMTlDMTMuMTIgMTkgMTUgMTguMjIgMTUgMTNDMTUgMTIuMTcgMTQuNjUgMTEuMzMgMTQgMTAuNzRWOC45NkMxNC45NSA4LjkgMTUuODYgOC44MSAxNi43NCA4LjY3TDE3LjE2IDEwLjM5QzE2LjY3IDExLjEyIDE2LjU0IDEyIDE2LjczIDEyLjgyQzE4IDE3Ljg5IDIwIDE4LjIgMjEuMDggMTcuOTNDMjMuNjEgMTcuMzEgMjMuMDkgMTMuNTcgMjIuNTYgMTEuMzlNNS44MSAxMi40N0M1LjgxIDEyLjQ3IDQuNzQgMTYuODQgMy4yOCAxNi41QzEuODIgMTYuMTIgMi45IDExLjc1IDIuOSAxMS43NVMzLjI2IDEwLjI5IDQuNzEgMTAuNjUgNS44MSAxMi40NyA1LjgxIDEyLjQ3TTEyIDE3LjVDMTAuNSAxNy41IDEwLjUgMTMgMTAuNSAxM1MxMC41IDExLjUgMTIgMTEuNSAxMy41IDEzIDEzLjUgMTMgMTMuNSAxNy41IDEyIDE3LjVNMjAuNzIgMTYuNUMxOS4yNyAxNi44NCAxOC4xOSAxMi40NyAxOC4xOSAxMi40N1MxNy44MyAxMSAxOS4yOSAxMC42NSAyMS4xIDExLjc1IDIxLjEgMTEuNzUgMjIuMTggMTYuMTIgMjAuNzIgMTYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTdHJpbmdMaWdodHNPZmYgPSBcIk0xNCAxMC43NFY4Ljk2QzE0Ljk1IDguOSAxNS44NiA4LjgxIDE2Ljc0IDguNjdMMTcuMTYgMTAuMzlDMTYuNjcgMTEuMTIgMTYuNTQgMTIgMTYuNzMgMTIuODJDMTYuODIgMTMuMTcgMTYuOTEgMTMuNSAxNyAxMy44TDIxLjEyIDE3LjkyQzIzLjYxIDE3LjI2IDIzLjA5IDEzLjU1IDIyLjU2IDExLjM5QzIyLjM2IDEwLjU5IDIxLjgyIDkuODUgMjEuMDUgOS40NEwyMC42MyA3Ljc0QzIxLjExIDcuNTggMjEuNTcgNy40MSAyMiA3LjIzVjVDMjAgNi4wNyAxNi41MyA3LjAzIDEyIDcuMDNDMTEuMzcgNy4wMyAxMC43NiA3IDEwLjE3IDYuOTdNMjAuNzIgMTYuNUMxOS4yNyAxNi44NCAxOC4xOSAxMi40NyAxOC4xOSAxMi40N1MxNy44MyAxMSAxOS4yOSAxMC42NSAyMS4xIDExLjc1IDIxLjEgMTEuNzUgMjIuMTggMTYuMTIgMjAuNzIgMTYuNU0xNC45NSAxNC4yOUwxMy41IDEyLjgzVjEyLjgzTDEyLjE4IDExLjVIMTIuMThMMTAgOS4zNFY5LjM0TDkuNTggOC45M0g5LjU5TDcuMzIgNi42Nkg3LjMyTDIuMzkgMS43M0wxLjExIDNMMy45MSA1LjhDMy4xOSA1LjU1IDIuNTMgNS4yOCAyIDVWNy4yM0MyLjQzIDcuNDEgMi44OSA3LjU4IDMuMzcgNy43NEwyLjk1IDkuNDRDMi4xOCA5Ljg1IDEuNjQgMTAuNTkgMS40NCAxMS4zOUMuOTA1IDEzLjU3IC4zODUgMTcuMzEgMi45MiAxNy45M0M0IDE4LjIgNiAxNy44OSA3LjI3IDEyLjgyQzcuNDYgMTIgNy4zMyAxMS4xMiA2Ljg0IDEwLjM5TDcuMTcgOS4wNkw5LjUgMTEuMzhDOS4xOCAxMS44NyA5IDEyLjQ0IDkgMTNDOSAxNS4yNCA5LjM5IDE5IDEyIDE5QzEyLjggMTkgMTMuOTcgMTguNTkgMTQuNTkgMTYuNUwyMC44NCAyMi43M0wyMi4xMSAyMS40NkwxNC45NSAxNC4zTDE0Ljk1IDE0LjI5TTUuODEgMTIuNDdDNS44MSAxMi40NyA0Ljc0IDE2Ljg0IDMuMjggMTYuNUMxLjgyIDE2LjEyIDIuOSAxMS43NSAyLjkgMTEuNzVTMy4yNiAxMC4yOSA0LjcxIDEwLjY1IDUuODEgMTIuNDcgNS44MSAxMi40N00xMiAxNy41QzEwLjUgMTcuNSAxMC41IDEzIDEwLjUgMTNTMTAuNSAxMi43NyAxMC42IDEyLjVMMTMuMzIgMTUuMjFDMTMuMTMgMTYuMzUgMTIuNzYgMTcuNSAxMiAxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YmRpcmVjdG9yeUFycm93TGVmdCA9IFwiTTExLDlMMTIuNDIsMTAuNDJMOC44MywxNEgxOFY0SDIwVjE2SDguODNMMTIuNDIsMTkuNThMMTEsMjFMNSwxNUwxMSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YmRpcmVjdG9yeUFycm93UmlnaHQgPSBcIk0xOSwxNUwxMywyMUwxMS41OCwxOS41OEwxNS4xNywxNkg0VjRINlYxNEgxNS4xN0wxMS41OCwxMC40MkwxMyw5TDE5LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1Ym1hcmluZSA9IFwiTTggMy42N0M2Ljc4IDQuNTMgNS4zOSA0LjkzIDQgNUgyVjdINEM1LjM3IDcgNi43NCA2LjY1IDggNkMxMC41IDcuMyAxMy41IDcuMyAxNiA2QzE3LjI2IDYuNjUgMTguNjIgNi45NCAyMCA3SDIyVjVIMjBDMTguNjEgNSAxNy4yMiA0LjUzIDE2IDMuNjdDMTMuNTYgNS4zOCAxMC40NCA1LjM4IDggMy42N00xNiA4LjY3TDE1IDEwVjEySDE0TDEyIDE0SDlMNiAxNkw1IDE0SDRWMTZMMiAxN0w0IDE4VjIwSDUuMTRMNiAxOEw5IDIwSDIwQTIgMiAwIDAgMCAyMiAxOFYxNkEyIDIgMCAwIDAgMjAgMTRIMThMMTcgMTNWMTJIMTZWMTBIMTdWOC42N1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdWJ0aXRsZXMgPSBcIk0yMCw0SDRBMiwyIDAgMCwwIDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWNkEyLDIgMCAwLDAgMjAsNE00LDEySDhWMTRINFYxMk0xNCwxOEg0VjE2SDE0VjE4TTIwLDE4SDE2VjE2SDIwVjE4TTIwLDE0SDEwVjEySDIwVjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YnRpdGxlc091dGxpbmUgPSBcIk0yMCw0QTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNEgyME0yMCwxOFY2SDRWMThIMjBNNiwxMEg4VjEySDZWMTBNNiwxNEgxNFYxNkg2VjE0TTE2LDE0SDE4VjE2SDE2VjE0TTEwLDEwSDE4VjEySDEwVjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YndheSA9IFwiTTguNSwxNUExLDEgMCAwLDEgOS41LDE2QTEsMSAwIDAsMSA4LjUsMTdBMSwxIDAgMCwxIDcuNSwxNkExLDEgMCAwLDEgOC41LDE1TTcsOUgxN1YxNEg3VjlNMTUuNSwxNUExLDEgMCAwLDEgMTYuNSwxNkExLDEgMCAwLDEgMTUuNSwxN0ExLDEgMCAwLDEgMTQuNSwxNkExLDEgMCAwLDEgMTUuNSwxNU0xOCwxNS44OFY5QzE4LDYuMzggMTUuMzIsNiAxMiw2QzksNiA2LDYuMzcgNiw5VjE1Ljg4QTIuNjIsMi42MiAwIDAsMCA4LjYyLDE4LjVMNy41LDE5LjYyVjIwSDkuMTdMMTAuNjcsMTguNUgxMy41TDE1LDIwSDE2LjVWMTkuNjJMMTUuMzcsMTguNUMxNi44MiwxOC41IDE4LDE3LjMzIDE4LDE1Ljg4TTE3LjgsMi44QzIwLjQ3LDMuODQgMjIsNi4wNSAyMiw4Ljg2VjIySDJWOC44NkMyLDYuMDUgMy41MywzLjg0IDYuMiwyLjhDOCwyLjA5IDEwLjE0LDIgMTIsMkMxMy44NiwyIDE2LDIuMDkgMTcuOCwyLjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vid2F5QWxlcnRWYXJpYW50ID0gXCJNMTYgMTFWNkgxMVYxMUgxNk0xNC41IDE3QzE1LjMgMTcgMTYgMTYuMyAxNiAxNS41QzE2IDE0LjcgMTUuMyAxNCAxNC41IDE0UzEzIDE0LjcgMTMgMTUuNUMxMyAxNi4zIDEzLjcgMTcgMTQuNSAxN005IDExVjZINFYxMUg5TTUuNSAxN0M2LjMgMTcgNyAxNi4zIDcgMTUuNUM3IDE0LjcgNi4zIDE0IDUuNSAxNFM0IDE0LjcgNCAxNS41QzQgMTYuMyA0LjcgMTcgNS41IDE3TTEwIDJDMTQuNCAyIDE4IDIuNSAxOCA2VjE1LjVDMTggMTcuNCAxNi40IDE5IDE0LjUgMTlMMTYgMjAuNVYyMUg0VjIwLjVMNS41IDE5QzMuNiAxOSAyIDE3LjQgMiAxNS41VjZDMiAyLjUgNS42IDIgMTAgMk0yMCAxM1Y3SDIyVjEzSDIwTTIwIDE3VjE1SDIyVjE3SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1YndheVZhcmlhbnQgPSBcIk0xOCwxMUgxM1Y2SDE4TTE2LjUsMTdBMS41LDEuNSAwIDAsMSAxNSwxNS41QTEuNSwxLjUgMCAwLDEgMTYuNSwxNEExLjUsMS41IDAgMCwxIDE4LDE1LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3TTExLDExSDZWNkgxMU03LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTRBMS41LDEuNSAwIDAsMSA5LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTdNMTIsMkM3LjU4LDIgNCwyLjUgNCw2VjE1LjVBMy41LDMuNSAwIDAsMCA3LjUsMTlMNiwyMC41VjIxSDE4VjIwLjVMMTYuNSwxOUEzLjUsMy41IDAgMCwwIDIwLDE1LjVWNkMyMCwyLjUgMTYuNDIsMiAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1bW1pdCA9IFwiTTE1LDNIMTdMMjIsNUwxNyw3VjEwLjE3TDIyLDIxSDJMOCwxM0wxMS41LDE3LjdMMTUsMTAuMTdWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdW5nbGFzc2VzID0gXCJNNywxN0g0QzIuMzgsMTcgMC45NiwxNS43NCAwLjc2LDE0LjE0TDAuMjYsMTEuMTVDMC4xNSwxMC4zIDAuMzksOS41IDAuOTEsOC45MkMxLjQzLDguMzQgMi4xOSw4IDMsOEg5QzkuODMsOCAxMC41OCw4LjM1IDExLjA2LDguOTZDMTEuMTcsOS4xMSAxMS4yNyw5LjI3IDExLjM1LDkuNDVDMTEuNzgsOS4zNiAxMi4yMiw5LjM2IDEyLjY0LDkuNDVDMTIuNzIsOS4yNyAxMi44Miw5LjExIDEyLjk0LDguOTZDMTMuNDEsOC4zNSAxNC4xNiw4IDE1LDhIMjFDMjEuODEsOCAyMi41Nyw4LjM0IDIzLjA5LDguOTJDMjMuNiw5LjUgMjMuODQsMTAuMyAyMy43NCwxMS4xMUwyMy4yMywxNC4xOEMyMy4wNCwxNS43NCAyMS42MSwxNyAyMCwxN0gxN0MxNS40NCwxNyAxMy45MiwxNS44MSAxMy41NCwxNC4zTDEyLjY0LDExLjU5QzEyLjI2LDExLjMxIDExLjczLDExLjMxIDExLjM1LDExLjU5TDEwLjQzLDE0LjM3QzEwLjA3LDE1LjgyIDguNTYsMTcgNywxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTdXJyb3VuZFNvdW5kID0gXCJNMjAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZBMiwyIDAgMCwwIDIwLDRNNy43NiwxNi4yNEw2LjM1LDE3LjY1QzQuNzgsMTYuMSA0LDE0LjA1IDQsMTJDNCw5Ljk1IDQuNzgsNy45IDYuMzQsNi4zNEw3Ljc1LDcuNzVDNi41OSw4LjkzIDYsMTAuNDYgNiwxMkM2LDEzLjU0IDYuNTksMTUuMDcgNy43NiwxNi4yNE0xMiwxNkE0LDQgMCAwLDEgOCwxMkE0LDQgMCAwLDEgMTIsOEE0LDQgMCAwLDEgMTYsMTJBNCw0IDAgMCwxIDEyLDE2TTE3LjY2LDE3LjY2TDE2LjI1LDE2LjI1QzE3LjQxLDE1LjA3IDE4LDEzLjU0IDE4LDEyQzE4LDEwLjQ2IDE3LjQxLDguOTMgMTYuMjQsNy43NkwxNy42NSw2LjM1QzE5LjIyLDcuOSAyMCw5Ljk1IDIwLDEyQzIwLDE0LjA1IDE5LjIyLDE2LjEgMTcuNjYsMTcuNjZNMTIsMTBBMiwyIDAgMCwwIDEwLDEyQTIsMiAwIDAsMCAxMiwxNEEyLDIgMCAwLDAgMTQsMTJBMiwyIDAgMCwwIDEyLDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1cnJvdW5kU291bmQyMCA9IFwiTTE3LDdIMTlBMiwyIDAgMCwxIDIxLDlWMTVBMiwyIDAgMCwxIDE5LDE3SDE3QTIsMiAwIDAsMSAxNSwxNVY5QTIsMiAwIDAsMSAxNyw3TTE3LDlWMTVIMTlWOUgxN005LDE3SDNWMTVMNyw5SDNWN0g3QTIsMiAwIDAsMSA5LDlDOSw5LjQyIDguODcsOS44MSA4LjY1LDEwLjEzTDUuNDEsMTVIOVYxN00xMiwxN0ExLDEgMCAwLDEgMTEsMTZBMSwxIDAgMCwxIDEyLDE1QTEsMSAwIDAsMSAxMywxNkExLDEgMCAwLDEgMTIsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDIxID0gXCJNNCA3VjlIOFYxMUg2QTIgMiAwIDAgMCA0IDEzVjE3SDEwVjE1SDZWMTNIOEEyIDIgMCAwIDAgMTAgMTFWOUEyIDIgMCAwIDAgOCA3SDRNMTYgN1Y5SDE4VjE3SDIwVjdIMTZNMTIgMTVWMTdIMTRWMTVIMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDMxID0gXCJNMTMsMTdBMSwxIDAgMCwxIDEyLDE2QTEsMSAwIDAsMSAxMywxNUExLDEgMCAwLDEgMTQsMTZBMSwxIDAgMCwxIDEzLDE3TTE5LDdWMTVIMjBWMTdIMTZWMTVIMTdWOUgxNkwxNyw3SDE5TTQsN0g4QTIsMiAwIDAsMSAxMCw5VjE1QTIsMiAwIDAsMSA4LDE3SDRWMTVIOFYxM0g1VjExSDhWOUg0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDUxID0gXCJNMTMsMTdBMSwxIDAgMCwxIDEyLDE2QTEsMSAwIDAsMSAxMywxNUExLDEgMCAwLDEgMTQsMTZBMSwxIDAgMCwxIDEzLDE3TTE5LDdWMTVIMjBWMTdIMTZWMTVIMTdWOUgxNkwxNyw3SDE5TTYsMTNBMiwyIDAgMCwxIDQsMTFWN0gxMFY5SDZWMTFIOEEyLDIgMCAwLDEgMTAsMTNWMTVBMiwyIDAgMCwxIDgsMTdINFYxNUg4VjEzSDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3Vycm91bmRTb3VuZDUxMiA9IFwiTTIgOFYxM0g1VjE0SDJWMTZINUM2LjExIDE2IDcgMTUuMTEgNyAxNFYxM0M3IDExLjkgNi4xMSAxMSA1IDExSDRWMTBIN1Y4SDJNMTAgOFYxMEgxMVYxNkgxM1Y4SDEwTTE3IDhWMTBIMjBWMTFIMTlDMTcuOSAxMSAxNyAxMS45IDE3IDEzVjE2SDIyVjE0SDE5VjEzSDIwQzIxLjExIDEzIDIyIDEyLjExIDIyIDExVjEwQzIyIDguOSAyMS4xMSA4IDIwIDhIMTdNOCAxNFYxNkgxMFYxNEg4TTE0IDE0VjE2SDE2VjE0SDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN1cnJvdW5kU291bmQ3MSA9IFwiTTEyLDE3QTEsMSAwIDAsMSAxMSwxNkExLDEgMCAwLDEgMTIsMTVBMSwxIDAgMCwxIDEzLDE2QTEsMSAwIDAsMSAxMiwxN00xOCw3VjE1SDE5VjE3SDE1VjE1SDE2VjlIMTVMMTYsN0gxOE0xMSw3TDgsMTdINkw4LjQsOUg1VjdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ZnID0gXCJNNS4xMywxMC43MUg4Ljg3TDYuMjIsOC4wNkM1LjIxLDguMDYgNC4zOSw3LjI0IDQuMzksNi4yMkExLjgzLDEuODMgMCAwLDEgNi4yMiw0LjM5QzcuMjQsNC4zOSA4LjA2LDUuMjEgOC4wNiw2LjIyTDEwLjcxLDguODdWNS4xM0MxMCw0LjQxIDEwLDMuMjUgMTAuNzEsMi41NEMxMS40MiwxLjgyIDEyLjU4LDEuODIgMTMuMjksMi41NEMxNCwzLjI1IDE0LDQuNDEgMTMuMjksNS4xM1Y4Ljg3TDE1Ljk1LDYuMjJDMTUuOTUsNS4yMSAxNi43Niw0LjM5IDE3Ljc4LDQuMzlDMTguNzksNC4zOSAxOS42MSw1LjIxIDE5LjYxLDYuMjJDMTkuNjEsNy4yNCAxOC43OSw4LjA2IDE3Ljc4LDguMDZMMTUuMTMsMTAuNzFIMTguODdDMTkuNTksMTAgMjAuNzUsMTAgMjEuNDYsMTAuNzFDMjIuMTgsMTEuNDIgMjIuMTgsMTIuNTggMjEuNDYsMTMuMjlDMjAuNzUsMTQgMTkuNTksMTQgMTguODcsMTMuMjlIMTUuMTNMMTcuNzgsMTUuOTVDMTguNzksMTUuOTUgMTkuNjEsMTYuNzYgMTkuNjEsMTcuNzhBMS44MywxLjgzIDAgMCwxIDE3Ljc4LDE5LjYxQzE2Ljc2LDE5LjYxIDE1Ljk1LDE4Ljc5IDE1Ljk1LDE3Ljc4TDEzLjI5LDE1LjEzVjE4Ljg3QzE0LDE5LjU5IDE0LDIwLjc1IDEzLjI5LDIxLjQ2QzEyLjU4LDIyLjE4IDExLjQyLDIyLjE4IDEwLjcxLDIxLjQ2QzEwLDIwLjc1IDEwLDE5LjU5IDEwLjcxLDE4Ljg3VjE1LjEzTDguMDYsMTcuNzhDOC4wNiwxOC43OSA3LjI0LDE5LjYxIDYuMjIsMTkuNjFDNS4yMSwxOS42MSA0LjM5LDE4Ljc5IDQuMzksMTcuNzhDNC4zOSwxNi43NiA1LjIxLDE1Ljk1IDYuMjIsMTUuOTVMOC44NywxMy4yOUg1LjEzQzQuNDEsMTQgMy4yNSwxNCAyLjU0LDEzLjI5QzEuODIsMTIuNTggMS44MiwxMS40MiAyLjU0LDEwLjcxQzMuMjUsMTAgNC40MSwxMCA1LjEzLDEwLjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN3YXBIb3Jpem9udGFsID0gXCJNMjEsOUwxNyw1VjhIMTBWMTBIMTdWMTNNNywxMUwzLDE1TDcsMTlWMTZIMTRWMTRIN1YxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwSG9yaXpvbnRhbEJvbGQgPSBcIk04LDEwVjEzSDE0VjE4SDhWMjFMMiwxNS41TDgsMTBNMjIsOC41TDE2LDNWNkgxMFYxMUgxNlYxNEwyMiw4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3dhcEhvcml6b250YWxDaXJjbGUgPSBcIk0yMiAxMkMyMiA2LjUgMTcuNSAyIDEyIDJTMiA2LjUgMiAxMiA2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMk0xNSA2LjVMMTguNSAxMEwxNSAxMy41VjExSDExVjlIMTVWNi41TTkgMTcuNUw1LjUgMTRMOSAxMC41VjEzSDEzVjE1SDlWMTcuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwSG9yaXpvbnRhbENpcmNsZU91dGxpbmUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNMTIgMjBDNy41OSAyMCA0IDE2LjQxIDQgMTJTNy41OSA0IDEyIDQgMjAgNy41OSAyMCAxMiAxNi40MSAyMCAxMiAyME0xNSA2LjVWOUgxMVYxMUgxNVYxMy41TDE4LjUgMTBMMTUgNi41TTkgMTAuNUw1LjUgMTRMOSAxNy41VjE1SDEzVjEzSDlWMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwSG9yaXpvbnRhbFZhcmlhbnQgPSBcIk00LDZMOCwxMFY3SDE2QTIsMiAwIDAsMSAxOCw5QTIsMiAwIDAsMSAxNiwxMUg4QTQsNCAwIDAsMCA0LDE1QTQsNCAwIDAsMCA4LDE5SDE2VjIyTDIwLDE4TDE2LDE0VjE3SDhBMiwyIDAgMCwxIDYsMTVBMiwyIDAgMCwxIDgsMTNIMTZBNCw0IDAgMCwwIDIwLDlBNCw0IDAgMCwwIDE2LDVIOFYyTDQsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwVmVydGljYWwgPSBcIk05LDNMNSw3SDhWMTRIMTBWN0gxM00xNiwxN1YxMEgxNFYxN0gxMUwxNSwyMUwxOSwxN0gxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwVmVydGljYWxCb2xkID0gXCJNMTQsOEgxMVYxNEg2VjhIM0w4LjUsMkwxNCw4TTE1LjUsMjJMMjEsMTZIMThWMTBIMTNWMTZIMTBMMTUuNSwyMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd2FwVmVydGljYWxDaXJjbGUgPSBcIk0xMiAyQzYuNSAyIDIgNi41IDIgMTJTNi41IDIyIDEyIDIyIDIyIDE3LjUgMjIgMTIgMTcuNSAyIDEyIDJNNi41IDlMMTAgNS41TDEzLjUgOUgxMVYxM0g5VjlINi41TTE3LjUgMTVMMTQgMTguNUwxMC41IDE1SDEzVjExSDE1VjE1SDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3dhcFZlcnRpY2FsQ2lyY2xlT3V0bGluZSA9IFwiTTEyIDJDNi41IDIgMiA2LjUgMiAxMlM2LjUgMjIgMTIgMjIgMjIgMTcuNSAyMiAxMiAxNy41IDIgMTIgMk0xMiAyMEM3LjU5IDIwIDQgMTYuNDEgNCAxMlM3LjU5IDQgMTIgNCAyMCA3LjU5IDIwIDEyIDE2LjQxIDIwIDEyIDIwTTYuNSA5TDEwIDUuNUwxMy41IDlIMTFWMTNIOVY5SDYuNU0xNy41IDE1TDE0IDE4LjVMMTAuNSAxNUgxM1YxMUgxNVYxNUgxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN3YXBWZXJ0aWNhbFZhcmlhbnQgPSBcIk0xOCw0TDE0LDhIMTdWMTZBMiwyIDAgMCwxIDE1LDE4QTIsMiAwIDAsMSAxMywxNlY4QTQsNCAwIDAsMCA5LDRBNCw0IDAgMCwwIDUsOFYxNkgyTDYsMjBMMTAsMTZIN1Y4QTIsMiAwIDAsMSA5LDZBMiwyIDAgMCwxIDExLDhWMTZBNCw0IDAgMCwwIDE1LDIwQTQsNCAwIDAsMCAxOSwxNlY4SDIyTDE4LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3dpbSA9IFwiTTIsMThDNC4yMiwxNyA2LjQ0LDE2IDguNjcsMTZDMTAuODksMTYgMTMuMTEsMTggMTUuMzMsMThDMTcuNTYsMTggMTkuNzgsMTYgMjIsMTZWMTlDMTkuNzgsMTkgMTcuNTYsMjEgMTUuMzMsMjFDMTMuMTEsMjEgMTAuODksMTkgOC42NywxOUM2LjQ0LDE5IDQuMjIsMjAgMiwyMVYxOE04LjY3LDEzQzcuODksMTMgNy4xMiwxMy4xMiA2LjM1LDEzLjMyTDExLjI3LDkuODhMMTAuMjMsOC42NEMxMC4wOSw4LjQ3IDEwLDguMjQgMTAsOEMxMCw3LjY2IDEwLjE3LDcuMzUgMTAuNDQsNy4xN0wxNi4xNiwzLjE3TDE3LjMxLDQuOEwxMi40Nyw4LjE5TDE3LjcsMTQuNDJDMTYuOTEsMTQuNzUgMTYuMTIsMTUgMTUuMzMsMTVDMTMuMTEsMTUgMTAuODksMTMgOC42NywxM00xOCw3QTIsMiAwIDAsMSAyMCw5QTIsMiAwIDAsMSAxOCwxMUEyLDIgMCAwLDEgMTYsOUEyLDIgMCAwLDEgMTgsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlTd2l0Y2ggPSBcIk0xMywxOEgxNEExLDEgMCAwLDEgMTUsMTlIMjJWMjFIMTVBMSwxIDAgMCwxIDE0LDIySDEwQTEsMSAwIDAsMSA5LDIxSDJWMTlIOUExLDEgMCAwLDEgMTAsMThIMTFWMTZIOEExLDEgMCAwLDEgNywxNVYzQTEsMSAwIDAsMSA4LDJIMTZBMSwxIDAgMCwxIDE3LDNWMTVBMSwxIDAgMCwxIDE2LDE2SDEzVjE4TTEzLDZIMTRWNEgxM1Y2TTksNFY2SDExVjRIOU05LDhWMTBIMTFWOEg5TTksMTJWMTRIMTFWMTJIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTd29yZCA9IFwiTTYuOTIsNUg1TDE0LDE0TDE1LDEzLjA2TTE5Ljk2LDE5LjEyTDE5LjEyLDE5Ljk2QzE4LjczLDIwLjM1IDE4LjEsMjAuMzUgMTcuNzEsMTkuOTZMMTQuNTksMTYuODRMMTEuOTEsMTkuNUwxMC41LDE4LjA5TDExLjkyLDE2LjY3TDMsNy43NVYzSDcuNzVMMTYuNjcsMTEuOTJMMTguMDksMTAuNUwxOS41LDExLjkxTDE2LjgzLDE0LjU4TDE5Ljk1LDE3LjdDMjAuMzUsMTguMSAyMC4zNSwxOC43MyAxOS45NiwxOS4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTd29yZENyb3NzID0gXCJNNi4yLDIuNDRMMTguMSwxNC4zNEwyMC4yMiwxMi4yMkwyMS42MywxMy42M0wxOS4xNiwxNi4xTDIyLjM0LDE5LjI4QzIyLjczLDE5LjY3IDIyLjczLDIwLjMgMjIuMzQsMjAuNjlMMjEuNjMsMjEuNEMyMS4yNCwyMS43OSAyMC42MSwyMS43OSAyMC4yMiwyMS40TDE3LDE4LjIzTDE0LjU2LDIwLjdMMTMuMTUsMTkuMjlMMTUuMjcsMTcuMTdMMy4zNyw1LjI3VjIuNDRINi4yTTE1Ljg5LDEwTDIwLjYzLDUuMjZWMi40NEgxNy44TDEzLjA2LDcuMThMMTUuODksMTBNMTAuOTQsMTVMOC4xMSwxMi4xM0w1LjksMTQuMzRMMy43OCwxMi4yMkwyLjM3LDEzLjYzTDQuODQsMTYuMUwxLjY2LDE5LjI5QzEuMjcsMTkuNjggMS4yNywyMC4zMSAxLjY2LDIwLjdMMi4zNywyMS40MUMyLjc2LDIxLjggMy4zOSwyMS44IDMuNzgsMjEuNDFMNywxOC4yM0w5LjQ0LDIwLjdMMTAuODUsMTkuMjlMOC43MywxNy4xN0wxMC45NCwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlTeWxsYWJhcnlIYW5ndWwgPSBcIk04IDRWNkg0VjhINi4zOUM1LjU1IDguNzQgNSA5LjggNSAxMUM1IDEzLjIgNi44IDE1IDkgMTVDMTEuMiAxNSAxMyAxMy4yIDEzIDExQzEzIDkuOCAxMi40NSA4Ljc0IDExLjYxIDhIMTRWNkgxMFY0TTE1IDRWMTZIMTdWMTFIMjBWOUgxN1Y0TTkgOUMxMC4xMiA5IDExIDkuODggMTEgMTFDMTEgMTIuMTIgMTAuMTIgMTMgOSAxM0M3Ljg4IDEzIDcgMTIuMTIgNyAxMUM3IDkuODggNy44OCA5IDkgOU03IDE2VjIwSDE3VjE4SDlWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3lsbGFiYXJ5SGlyYWdhbmEgPSBcIk05IDRWNkg2VjhIOVYxMEM2LjI1IDEwIDQgMTIuMjcgNCAxNS4wM0M0IDE3LjggNi4yNiAyMC4wNiA5LjAzIDIwLjA2QzkuODkgMjAuMDYgMTAuNzIgMTkuNzcgMTEuNCAxOS4yNkMxMS42MyAxOS41NCAxMS44OCAxOS44MiAxMi4xNSAyMC4wOUwxMy41NiAxOC42N0MxMy4zIDE4LjQyIDEzLjA3IDE4LjE1IDEyLjg2IDE3Ljg5TDEzLjg2IDE2Ljg5QzE0LjkzIDE1LjgyIDE1Ljc4IDE0LjIzIDE2LjQyIDEyLjU5QzE3LjMxIDEzLjExIDE4IDEzLjkgMTggMTVDMTggMTYuMzIgMTcuNDcgMTcuNiAxNi41NCAxOC41NEwxNy45NSAxOS45NUMxOS4yNiAxOC42NCAyMCAxNi44NiAyMCAxNUMyMCAxMy4wNCAxOC44MiAxMS4zNiAxNy4xNSAxMC41NUwxNy41IDkuMjlMMTUuNTUgOC43OEwxNS4yMSAxMC4wNUMxNS4xMyAxMC4wNSAxNS4wNiAxMCAxNC45NyAxMEgxMVY4SDE2VjZIMTFWNE0xMSAxMkgxNC41QzEzLjk0IDEzLjM3IDEzLjE5IDE0LjcyIDEyLjQ0IDE1LjQ3TDExLjc5IDE2LjEzQzExLjI1IDE0LjkzIDExIDEzLjU5IDExIDEyTTkgMTJDOSAxNC4wNyA5LjQxIDE1Ljk0IDEwLjMgMTcuNTlDOS45NCAxNy44OSA5LjUgMTguMDYgOS4wMyAxOC4wNkM3LjMzIDE4LjA2IDYgMTYuNzMgNiAxNS4wM0M2IDEzLjM0IDcuMzIgMTIgOSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTeWxsYWJhcnlLYXRha2FuYSA9IFwiTTQgNFY2SDE4VjYuMDlMMTQuMjkgOS43OUwxNS43MSAxMS4yMUwyMCA2LjkxVjRNMTEgOVYxM0MxMSAxNS43OCAxMC4yNSAxNi44OSA4LjM2IDE4LjQ2TDkuNjQgMjBDMTEuNzUgMTguMjQgMTMgMTYuMjIgMTMgMTNWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlTeWxsYWJhcnlLYXRha2FuYUhhbGZ3aWR0aCA9IFwiTTggNFY2SDE0TDEzIDEwLjgxTDE1IDExLjJMMTYgNi4xVjRNMTAgOVYxMkMxMCAxNC44NiA5LjM0IDE3LjI5IDguMDggMTguNjFMOS41IDIwQzExLjM1IDE4LjA4IDEyIDE1LjE1IDEyIDEyVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpU3ltYm9sID0gXCJNMiA3VjE0SDRWN0gyTTYgN1Y5SDEwVjExSDhWMTRIMTBWMTNDMTEuMTEgMTMgMTIgMTIuMTEgMTIgMTFWOUMxMiA3Ljg5IDExLjExIDcgMTAgN0g2TTE1LjggN0wxNS42IDlIMTRWMTFIMTUuNEwxNS4yIDEzSDE0VjE1SDE1TDE0LjggMTdIMTYuOEwxNyAxNUgxOC40TDE4LjIgMTdIMjAuMkwyMC40IDE1SDIyVjEzSDIwLjZMMjAuOCAxMUgyMlY5SDIxTDIxLjIgN0gxOS4yTDE5IDlIMTcuNkwxNy44IDdIMTUuOE0xNy40IDExSDE4LjhMMTguNiAxM0gxNy4yTDE3LjQgMTFNMiAxNVYxN0g0VjE1SDJNOCAxNVYxN0gxMFYxNUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN5bWZvbnkgPSBcIk0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNi4zNyw1LjdWNS43QzE3LjM5LDUuNjcgMTguMTUsNi4xMyAxOC4yMSw2Ljg0QzE4LjIyLDcuMTUgMTguMDQsNy43NSAxNy40Miw3Ljc3QzE2Ljk1LDcuNzkgMTYuNjMsNy41IDE2LjYyLDcuMDlDMTYuNjEsNi45MyAxNi44OCw2LjQyIDE2Ljg4LDYuMzNDMTYuODcsNi4wNiAxNi40Nyw2LjA1IDE2LjM2LDYuMDZDMTQuODYsNi4xMSAxNC40Niw4LjEzIDE0LjE0LDkuNzhMMTQsMTAuNjVDMTQuODQsMTAuNzggMTUuNDYsMTAuNjIgMTUuOCwxMC40QzE2LjI4LDEwLjA5IDE1LjY2LDkuNzcgMTUuNzQsOS40MUMxNS44Miw5LjA0IDE2LjE1LDguODcgMTYuNDEsOC44NkMxNi43OCw4Ljg1IDE3LjA0LDkuMjMgMTcuMDMsOS42MkMxNywxMC4yNiAxNi4xNywxMS4xNCAxNC41LDExLjFDMTQuMjgsMTEuMSAxNC4wOSwxMS4wOCAxMy45MSwxMS4wNkMxMy4zLDE0LjE2IDEyLjkyLDE2IDExLjU2LDE3LjU4QzEwLjM5LDE4Ljk3IDkuMiwxOS4xOCA4LjY3LDE5LjJDNy42NywxOS4yNCA3LDE4LjcxIDcsMThDNi45NywxNy4zMiA3LjU3LDE2Ljk0IDcuOTcsMTYuOTNDOC41LDE2LjkxIDguODcsMTcuMyA4Ljg4LDE3Ljc0QzguOSwxOC4xMSA4LjcsMTguMjMgOC41NywxOC4zQzguNSwxOC4zNyA4LjM1LDE4LjQ1IDguMzYsMTguNkM4LjM2LDE4LjY3IDguNDMsMTguODIgOC42NSwxOC44MUM5LjA3LDE4LjggOS4zNCwxOC41OSA5LjU0LDE4LjQ1QzEwLjUsMTcuNjUgMTAuODgsMTYuMjQgMTEuMzcsMTMuNjhDMTEuNjMsMTIuMjMgMTEuODIsMTEuMyAxMi4xLDEwLjM4QzExLjQyLDkuODcgMTEsOS4yMyAxMC4wOSw5QzkuNDYsOC44MSA5LjA4LDguOTYgOC44MSw5LjNDOC41LDkuNzEgOC42LDEwLjIzIDguOSwxMC41NEMxMC4wNSwxMS44MiAxMC4zOSwxMi4zOCAxMC4yNiwxMy4xNEMxMC4wNiwxNC4zNSA4LjYyLDE1LjI3IDYuOTIsMTQuNzVDNS40NywxNC4zIDUuMiwxMy4yOCA1LjM3LDEyLjcxQzUuNTMsMTIuMjIgNS45MiwxMi4xMiA2LjMxLDEyLjI0QzYuNzMsMTIuMzcgNi44OSwxMi44NyA2Ljc3LDEzLjI2QzYuNzUsMTMuMyA2LjU1LDEzLjY3IDYuNSwxMy43OUM2LjQxLDE0LjEgNi44MywxNC4zMSA3LjEyLDE0LjRDNy43NywxNC42IDguNCwxNC4yNiA4LjU1LDEzLjczQzguNywxMy4yNSA4LjQsMTIuOTEgOC4yNywxMi43OEM3LjM4LDExLjggNi43NiwxMC45MyA3LjA2LDkuOTVDNy4xOCw5LjU4IDcuNDIsOS4xOCA3Ljc4LDguOTFDOC41Myw4LjM2IDkuMzUsOC4yNiAxMC4xMiw4LjVDMTEuMTMsOC43NyAxMS42MSw5LjQ0IDEyLjI0LDkuOTVDMTIuNTksOC45MyAxMy4wOCw3LjkyIDEzLjgxLDcuMDdDMTQuNDcsNi4zIDE1LjM1LDUuNzQgMTYuMzcsNS43WlwiO1xyXG5leHBvcnQgdmFyIG1kaVN5bmMgPSBcIk0xMiwxOEE2LDYgMCAwLDEgNiwxMkM2LDExIDYuMjUsMTAuMDMgNi43LDkuMkw1LjI0LDcuNzRDNC40Niw4Ljk3IDQsMTAuNDMgNCwxMkE4LDggMCAwLDAgMTIsMjBWMjNMMTYsMTlMMTIsMTVNMTIsNFYxTDgsNUwxMiw5VjZBNiw2IDAgMCwxIDE4LDEyQzE4LDEzIDE3Ljc1LDEzLjk3IDE3LjMsMTQuOEwxOC43NiwxNi4yNkMxOS41NCwxNS4wMyAyMCwxMy41NyAyMCwxMkE4LDggMCAwLDAgMTIsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlTeW5jQWxlcnQgPSBcIk0xMSwxM0gxM1Y3SDExTTIxLDRIMTVWMTBMMTcuMjQsNy43NkMxOC4zMiw4Ljg1IDE5LDEwLjM0IDE5LDEyQzE5LDE0LjYxIDE3LjMzLDE2LjgzIDE1LDE3LjY1VjE5Ljc0QzE4LjQ1LDE4Ljg1IDIxLDE1LjczIDIxLDEyQzIxLDkuNzkgMjAuMDksNy44IDE4LjY0LDYuMzZNMTEsMTdIMTNWMTVIMTFNMywxMkMzLDE0LjIxIDMuOTEsMTYuMiA1LjM2LDE3LjY0TDMsMjBIOVYxNEw2Ljc2LDE2LjI0QzUuNjgsMTUuMTUgNSwxMy42NiA1LDEyQzUsOS4zOSA2LjY3LDcuMTcgOSw2LjM1VjQuMjZDNS41NSw1LjE1IDMsOC4yNyAzLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVN5bmNDaXJjbGUgPSBcIk0yIDEyQTEwIDEwIDAgMSAwIDEyIDJBMTAgMTAgMCAwIDAgMiAxMk0xNS42IDEzLjcyQTQgNCAwIDAgMCAxNiAxMkE0IDQgMCAwIDAgMTIgOFYxMEw4Ljg4IDdMMTIgNFY2QTYgNiAwIDAgMSAxOCAxMkE1LjkgNS45IDAgMCAxIDE3LjA3IDE1LjE5TTYgMTJBNS45IDUuOSAwIDAgMSA2LjkzIDguODFMOC40IDEwLjI4QTQgNCAwIDAgMCA4IDEyQTQgNCAwIDAgMCAxMiAxNlYxNEwxNSAxN0wxMiAyMFYxOEE2IDYgMCAwIDEgNiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlTeW5jT2ZmID0gXCJNMjAsNEgxNFYxMEwxNi4yNCw3Ljc2QzE3LjMyLDguODUgMTgsMTAuMzQgMTgsMTJDMTgsMTMgMTcuNzUsMTMuOTQgMTcuMzIsMTQuNzdMMTguNzgsMTYuMjNDMTkuNTUsMTUgMjAsMTMuNTYgMjAsMTJDMjAsOS43OSAxOS4wOSw3LjggMTcuNjQsNi4zNkwyMCw0TTIuODYsNS40MUw1LjIyLDcuNzdDNC40NSw5IDQsMTAuNDQgNCwxMkM0LDE0LjIxIDQuOTEsMTYuMiA2LjM2LDE3LjY0TDQsMjBIMTBWMTRMNy43NiwxNi4yNEM2LjY4LDE1LjE1IDYsMTMuNjYgNiwxMkM2LDExIDYuMjUsMTAuMDYgNi42OCw5LjIzTDE0Ljc2LDE3LjMxQzE0LjUsMTcuNDQgMTQuMjYsMTcuNTYgMTQsMTcuNjVWMTkuNzRDMTQuNzksMTkuNTMgMTUuNTQsMTkuMiAxNi4yMiwxOC43OEwxOC41OCwyMS4xNEwxOS44NSwxOS44N0w0LjE0LDQuMTRMMi44Niw1LjQxTTEwLDYuMzVWNC4yNkM5LjIsNC40NyA4LjQ1LDQuOCA3Ljc3LDUuMjJMOS4yMyw2LjY4QzkuNSw2LjU2IDkuNzMsNi40NCAxMCw2LjM1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYiA9IFwiTTIxLDNIM0EyLDIgMCAwLDAgMSw1VjE5QTIsMiAwIDAsMCAzLDIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QTIsMiAwIDAsMCAyMSwzTTIxLDE5SDNWNUgxM1Y5SDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYk1pbnVzID0gXCJNMywzQTIsMiAwIDAsMCAxLDVWMTlBMiwyIDAgMCwwIDMsMjFIMjFBMiwyIDAgMCwwIDIzLDE5VjVBMiwyIDAgMCwwIDIxLDNIM00zLDVIMTNWOUgyMVYxOUgzVjVNNywxM1YxNUgxNVYxM0g3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYlBsdXMgPSBcIk0zLDNBMiwyIDAgMCwwIDEsNVYxOUEyLDIgMCAwLDAgMywyMUgyMUEyLDIgMCAwLDAgMjMsMTlWNUEyLDIgMCAwLDAgMjEsM0gzTTMsNUgxM1Y5SDIxVjE5SDNWNU0xMCwxMFYxM0g3VjE1SDEwVjE4SDEyVjE1SDE1VjEzSDEyVjEwSDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYlJlbW92ZSA9IFwiTTcuNDYsMTEuODhMOC44OCwxMC40NkwxMSwxMi41OUwxMy4xMiwxMC40NkwxNC41NCwxMS44OEwxMi40MSwxNEwxNC41NCwxNi4xMkwxMy4xMiwxNy41NEwxMSwxNS40MUw4Ljg4LDE3LjU0TDcuNDYsMTYuMTJMOS41OSwxNEw3LjQ2LDExLjg4TTMsM0gyMUEyLDIgMCAwLDEgMjMsNVYxOUEyLDIgMCAwLDEgMjEsMjFIM0EyLDIgMCAwLDEgMSwxOVY1QTIsMiAwIDAsMSAzLDNNMyw1VjE5SDIxVjlIMTNWNUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYlVuc2VsZWN0ZWQgPSBcIk0xLDlIM1Y3SDFWOU0xLDEzSDNWMTFIMVYxM00xLDVIM1YzQTIsMiAwIDAsMCAxLDVNOSwyMUgxMVYxOUg5VjIxTTEsMTdIM1YxNUgxVjE3TTMsMjFWMTlIMUEyLDIgMCAwLDAgMywyMU0yMSwzSDEzVjlIMjNWNUEyLDIgMCAwLDAgMjEsM00yMSwxN0gyM1YxNUgyMVYxN005LDVIMTFWM0g5VjVNNSwyMUg3VjE5SDVWMjFNNSw1SDdWM0g1VjVNMjEsMjFBMiwyIDAgMCwwIDIzLDE5SDIxVjIxTTIxLDEzSDIzVjExSDIxVjEzTTEzLDIxSDE1VjE5SDEzVjIxTTE3LDIxSDE5VjE5SDE3VjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlID0gXCJNNSw0SDE5QTIsMiAwIDAsMSAyMSw2VjE4QTIsMiAwIDAsMSAxOSwyMEg1QTIsMiAwIDAsMSAzLDE4VjZBMiwyIDAgMCwxIDUsNE01LDhWMTJIMTFWOEg1TTEzLDhWMTJIMTlWOEgxM001LDE0VjE4SDExVjE0SDVNMTMsMTRWMThIMTlWMTRIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVBY2NvdW50ID0gXCJNNCAzSDE4QzE5LjExIDMgMjAgMy45IDIwIDVWMTIuMDhDMTguNDUgMTEuODIgMTYuOTIgMTIuMTggMTUuNjggMTNIMTJWMTdIMTMuMDhDMTIuOTcgMTcuNjggMTIuOTcgMTguMzUgMTMuMDggMTlINEMyLjkgMTkgMiAxOC4xMSAyIDE3VjVDMiAzLjkgMi45IDMgNCAzTTQgN1YxMUgxMFY3SDRNMTIgN1YxMUgxOFY3SDEyTTQgMTNWMTdIMTBWMTNINE0yMyAyMlYyMUMyMyAxOS42NyAyMC4zMyAxOSAxOSAxOVMxNSAxOS42NyAxNSAyMVYyMkgyM00xOSAxNEMxNy45IDE0IDE3IDE0LjkgMTcgMTZTMTcuOSAxOCAxOSAxOCAyMSAxNy4xMSAyMSAxNiAyMC4xMSAxNCAxOSAxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUFsZXJ0ID0gXCJNMyA0SDE3QzE4LjExIDQgMTkgNC44OSAxOSA2VjE4QzE5IDE5LjExIDE4LjExIDIwIDE3IDIwSDNDMS45IDIwIDEgMTkuMTEgMSAxOFY2QzEgNC44OSAxLjkgNCAzIDRNMyA4VjEySDlWOEgzTTExIDhWMTJIMTdWOEgxMU0zIDE0VjE4SDlWMTRIM00xMSAxNFYxOEgxN1YxNEgxMU0yMyA3SDIxVjEzSDIzVjdNMjMgMTVIMjFWMTdIMjNWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVBcnJvd0Rvd24gPSBcIk00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0TTE1Ljk0IDE4LjVIMTcuOTRWMTQuNUgxOS45NFYxOC41SDIxLjk0TDE4Ljk0IDIxLjVMMTUuOTQgMTguNVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQXJyb3dMZWZ0ID0gXCJNNCAzSDE4QzE5LjExIDMgMjAgMy45IDIwIDVWMTIuMDhDMTguNDUgMTEuODIgMTYuOTIgMTIuMTggMTUuNjggMTNIMTJWMTdIMTMuMDhDMTIuOTcgMTcuNjggMTIuOTcgMTguMzUgMTMuMDggMTlINEMyLjkgMTkgMiAxOC4xMSAyIDE3VjVDMiAzLjkgMi45IDMgNCAzTTQgN1YxMUgxMFY3SDRNMTIgN1YxMUgxOFY3SDEyTTQgMTNWMTdIMTBWMTNINE0xOC40NCAxNVYxN0gyMi40NFYxOUgxOC40NFYyMUwxNS40NCAxOEwxOC40NCAxNVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQXJyb3dSaWdodCA9IFwiTTQgM0gxOEMxOS4xMSAzIDIwIDMuOSAyMCA1VjEyLjA4QzE4LjQ1IDExLjgyIDE2LjkyIDEyLjE4IDE1LjY4IDEzSDEyVjE3SDEzLjA4QzEyLjk3IDE3LjY4IDEyLjk3IDE4LjM1IDEzLjA4IDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRNMTkuNDQgMjFWMTlIMTUuNDRWMTdIMTkuNDRWMTVMMjIuNDQgMThMMTkuNDQgMjFcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUFycm93VXAgPSBcIk00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0TTIxLjk0IDE3LjVIMTkuOTRWMjEuNUgxNy45NFYxNy41SDE1Ljk0TDE4Ljk0IDE0LjVMMjEuOTQgMTcuNVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQm9yZGVyID0gXCJNMjEsMTlBMSwxIDAgMCwxIDIwLDIwSDE5VjE4SDIxVjE5TTE1LDIwVjE4SDE3VjIwSDE1TTExLDIwVjE4SDEzVjIwSDExTTcsMjBWMThIOVYyMEg3TTQsMjBBMSwxIDAgMCwxIDMsMTlWMThINVYyMEg0TTE5LDRINUEyLDIgMCAwLDAgMyw2VjhINUwxMSw4SDEzTDE5LDhIMjFWNkMyMSw0Ljg5IDIwLjExLDQgMTksNE01LDE0SDNWMTZINVYxNE01LDEwSDNWMTJINVYxME0yMSwxMEgxOVYxMkgyMVYxME0yMSwxNEgxOVYxNkgyMVYxNE0xMSwxNlYxNEgxM1YxNkgxMU0xMSwxMlYxMEgxM1YxMkgxMVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ2FuY2VsID0gXCJNMyAzSDE3QzE4LjExIDMgMTkgMy45IDE5IDVWMTIuMDhDMTcuNDUgMTEuODIgMTUuOTIgMTIuMTggMTQuNjggMTNIMTFWMTdIMTIuMDhDMTEuOTcgMTcuNjggMTEuOTcgMTguMzUgMTIuMDggMTlIM0MxLjkgMTkgMSAxOC4xMSAxIDE3VjVDMSAzLjkgMS45IDMgMyAzTTMgN1YxMUg5VjdIM00xMSA3VjExSDE3VjdIMTFNMyAxM1YxN0g5VjEzSDNNMTguNSAxNEMxNiAxNCAxNCAxNiAxNCAxOC41UzE2IDIzIDE4LjUgMjMgMjMgMjEgMjMgMTguNSAyMSAxNCAxOC41IDE0TTE4LjUgMjEuNUMxNi44NCAyMS41IDE1LjUgMjAuMTYgMTUuNSAxOC41QzE1LjUgMTcuOTQgMTUuNjUgMTcuNDIgMTUuOTIgMTdMMjAgMjEuMDhDMTkuNTggMjEuMzUgMTkuMDYgMjEuNSAxOC41IDIxLjVNMjEuMDggMjBMMTcgMTUuOTJDMTcuNDIgMTUuNjUgMTcuOTQgMTUuNSAxOC41IDE1LjVDMjAuMTYgMTUuNSAyMS41IDE2Ljg0IDIxLjUgMTguNUMyMS41IDE5LjA2IDIxLjM1IDE5LjU4IDIxLjA4IDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ2hhaXIgPSBcIk0xMiAyMkg2QTIgMiAwIDAgMSA4IDIwVjhIMlY1SDE2VjhIMTBWMjBBMiAyIDAgMCAxIDEyIDIyTTIyIDJWMjJIMjBWMTVIMTVWMjJIMTNWMTRBMiAyIDAgMCAxIDE1IDEySDIwVjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDaGVjayA9IFwiTTQgM0gxOEMxOS4xMSAzIDIwIDMuOSAyMCA1VjEyLjA4QzE4LjQ1IDExLjgyIDE2LjkyIDEyLjE4IDE1LjY4IDEzSDEyVjE3SDEzLjA4QzEyLjk3IDE3LjY4IDEyLjk3IDE4LjM1IDEzLjA4IDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRNMTcuNzUgMjFMMTUgMThMMTYuMTYgMTYuODRMMTcuNzUgMTguNDNMMjEuMzQgMTQuODRMMjIuNSAxNi4yNUwxNy43NSAyMVwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ2xvY2sgPSBcIk0xNi41IDE1LjgyTDE4Ljk0IDE3LjIzTDE4LjE5IDE4LjUzTDE1IDE2LjY5VjEzSDE2LjVWMTUuODJNMjAgMTAuMjZWNUMyMCAzLjkgMTkuMTEgMyAxOCAzSDRDMi45IDMgMiAzLjkgMiA1VjE3QzIgMTguMTEgMi45IDE5IDQgMTlIOS42OEMxMC44MSAyMS4zNiAxMy4yMSAyMyAxNiAyM0MxOS44NyAyMyAyMyAxOS44NyAyMyAxNkMyMyAxMy42MiAyMS44MSAxMS41MyAyMCAxMC4yNk0xOCA3VjkuMjlDMTcuMzcgOS4xMSAxNi43IDkgMTYgOUMxNC41IDkgMTMuMTMgOS40NyAxMiAxMC4yNlY3SDE4TTQgN0gxMFYxMUg0VjdNNCAxN1YxM0g5LjY4QzkuMjUgMTMuOTEgOSAxNC45MyA5IDE2QzkgMTYuMzQgOS4wMyAxNi42NyA5LjA4IDE3SDRNMTYgMjFDMTMuMjQgMjEgMTEgMTguNzYgMTEgMTZTMTMuMjQgMTEgMTYgMTEgMjEgMTMuMjQgMjEgMTYgMTguNzYgMjEgMTYgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2cgPSBcIk0zIDNIMTdDMTguMTEgMyAxOSAzLjkgMTkgNVYxMi4wOEMxNy40NSAxMS44MiAxNS45MiAxMi4xOCAxNC42OCAxM0gxMVYxN0gxMi4wOEMxMS45NyAxNy42OCAxMS45NyAxOC4zNSAxMi4wOCAxOUgzQzEuOSAxOSAxIDE4LjExIDEgMTdWNUMxIDMuOSAxLjkgMyAzIDNNMyA3VjExSDlWN0gzTTExIDdWMTFIMTdWN0gxMU0zIDEzVjE3SDlWMTNIM00yMi43OCAxOS4zMkwyMS43MSAxOC41QzIxLjczIDE4LjMzIDIxLjc1IDE4LjE3IDIxLjc1IDE4UzIxLjc0IDE3LjY3IDIxLjcxIDE3LjVMMjIuNzcgMTYuNjhDMjIuODYgMTYuNiAyMi44OSAxNi40NyAyMi44MyAxNi4zNkwyMS44MyAxNC42M0MyMS43NyAxNC41IDIxLjY0IDE0LjUgMjEuNSAxNC41TDIwLjI4IDE1QzIwIDE0LjgyIDE5Ljc0IDE0LjY1IDE5LjQzIDE0LjUzTDE5LjI0IDEzLjIxQzE5LjIzIDEzLjA5IDE5LjEyIDEzIDE5IDEzSDE3QzE2Ljg4IDEzIDE2Ljc3IDEzLjA5IDE2Ljc1IDEzLjIxTDE2LjU2IDE0LjUzQzE2LjI2IDE0LjY2IDE1Ljk3IDE0LjgyIDE1LjcxIDE1TDE0LjQ3IDE0LjVDMTQuMzYgMTQuNSAxNC4yMyAxNC41IDE0LjE2IDE0LjYzTDEzLjE2IDE2LjM2QzEzLjEgMTYuNDcgMTMuMTIgMTYuNiAxMy4yMiAxNi42OEwxNC4yOCAxNy41QzE0LjI2IDE3LjY3IDE0LjI1IDE3LjgzIDE0LjI1IDE4UzE0LjI2IDE4LjMzIDE0LjI4IDE4LjVMMTMuMjIgMTkuMzJDMTMuMTMgMTkuNCAxMy4xIDE5LjUzIDEzLjE2IDE5LjY0TDE0LjE2IDIxLjM3QzE0LjIyIDIxLjUgMTQuMzUgMjEuNSAxNC40NyAyMS41TDE1LjcxIDIxQzE1Ljk3IDIxLjE4IDE2LjI1IDIxLjM1IDE2LjU2IDIxLjQ3TDE2Ljc1IDIyLjc5QzE2Ljc3IDIyLjkxIDE2Ljg3IDIzIDE3IDIzSDE5QzE5LjEyIDIzIDE5LjIzIDIyLjkxIDE5LjI1IDIyLjc5TDE5LjQ0IDIxLjQ3QzE5Ljc0IDIxLjM0IDIwIDIxLjE4IDIwLjI4IDIxTDIxLjUgMjEuNUMyMS42NCAyMS41IDIxLjc3IDIxLjUgMjEuODQgMjEuMzdMMjIuODQgMTkuNjRDMjIuOSAxOS41MyAyMi44NyAxOS40IDIyLjc4IDE5LjMyTTE4IDE5LjVDMTcuMTcgMTkuNSAxNi41IDE4LjgzIDE2LjUgMThTMTcuMTggMTYuNSAxOCAxNi41IDE5LjUgMTcuMTcgMTkuNSAxOCAxOC44NCAxOS41IDE4IDE5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW4gPSBcIk04LDJIMTZBMiwyIDAgMCwxIDE4LDRWMjBBMiwyIDAgMCwxIDE2LDIySDhBMiwyIDAgMCwxIDYsMjBWNEEyLDIgMCAwLDEgOCwyTTgsMTBWMTRIMTZWMTBIOE04LDE2VjIwSDE2VjE2SDhNOCw0VjhIMTZWNEg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlQ29sdW1uUGx1c0FmdGVyID0gXCJNMTEsMkEyLDIgMCAwLDEgMTMsNFYyMEEyLDIgMCAwLDEgMTEsMjJIMlYySDExTTQsMTBWMTRIMTFWMTBINE00LDE2VjIwSDExVjE2SDRNNCw0VjhIMTFWNEg0TTE1LDExSDE4VjhIMjBWMTFIMjNWMTNIMjBWMTZIMThWMTNIMTVWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW5QbHVzQmVmb3JlID0gXCJNMTMsMkEyLDIgMCAwLDAgMTEsNFYyMEEyLDIgMCAwLDAgMTMsMjJIMjJWMkgxM00yMCwxMFYxNEgxM1YxMEgyME0yMCwxNlYyMEgxM1YxNkgyME0yMCw0VjhIMTNWNEgyME05LDExSDZWOEg0VjExSDFWMTNINFYxNkg2VjEzSDlWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW5SZW1vdmUgPSBcIk00LDJIMTFBMiwyIDAgMCwxIDEzLDRWMjBBMiwyIDAgMCwxIDExLDIySDRBMiwyIDAgMCwxIDIsMjBWNEEyLDIgMCAwLDEgNCwyTTQsMTBWMTRIMTFWMTBINE00LDE2VjIwSDExVjE2SDRNNCw0VjhIMTFWNEg0TTE3LjU5LDEyTDE1LDkuNDFMMTYuNDEsOEwxOSwxMC41OUwyMS41OSw4TDIzLDkuNDFMMjAuNDEsMTJMMjMsMTQuNTlMMjEuNTksMTZMMTksMTMuNDFMMTYuNDEsMTZMMTUsMTQuNTlMMTcuNTksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVDb2x1bW5XaWR0aCA9IFwiTTUsOEgxOUEyLDIgMCAwLDEgMjEsMTBWMjBBMiwyIDAgMCwxIDE5LDIySDVBMiwyIDAgMCwxIDMsMjBWMTBBMiwyIDAgMCwxIDUsOE01LDEyVjE1SDExVjEySDVNMTMsMTJWMTVIMTlWMTJIMTNNNSwxN1YyMEgxMVYxN0g1TTEzLDE3VjIwSDE5VjE3SDEzTTExLDJIMjFWNkgxOVY0SDEzVjZIMTFWMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUVkaXQgPSBcIk0yMS43LDEzLjM1TDIwLjcsMTQuMzVMMTguNjUsMTIuM0wxOS42NSwxMS4zQzE5Ljg2LDExLjA4IDIwLjIxLDExLjA4IDIwLjQyLDExLjNMMjEuNywxMi41OEMyMS45MiwxMi43OSAyMS45MiwxMy4xNCAyMS43LDEzLjM1TTEyLDE4Ljk0TDE4LjA3LDEyLjg4TDIwLjEyLDE0LjkzTDE0LjA2LDIxSDEyVjE4Ljk0TTQsMkgxOEEyLDIgMCAwLDEgMjAsNFY4LjE3TDE2LjE3LDEySDEyVjE2LjE3TDEwLjE3LDE4SDRBMiwyIDAgMCwxIDIsMTZWNEEyLDIgMCAwLDEgNCwyTTQsNlYxMEgxMFY2SDRNMTIsNlYxMEgxOFY2SDEyTTQsMTJWMTZIMTBWMTJINFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUV5ZSA9IFwiTTE3IDE2Ljg4QzE3LjU2IDE2Ljg4IDE4IDE3LjMyIDE4IDE3Ljg4UzE3LjU2IDE4Ljg4IDE3IDE4Ljg4IDE2IDE4LjQzIDE2IDE3Ljg4IDE2LjQ0IDE2Ljg4IDE3IDE2Ljg4TTE3IDEzLjg4QzE5LjczIDEzLjg4IDIyLjA2IDE1LjU0IDIzIDE3Ljg4QzIyLjA2IDIwLjIyIDE5LjczIDIxLjg4IDE3IDIxLjg4UzExLjk0IDIwLjIyIDExIDE3Ljg4QzExLjk0IDE1LjU0IDE0LjI3IDEzLjg4IDE3IDEzLjg4TTE3IDE1LjM4QzE1LjYyIDE1LjM4IDE0LjUgMTYuNSAxNC41IDE3Ljg4UzE1LjYyIDIwLjM4IDE3IDIwLjM4IDE5LjUgMTkuMjYgMTkuNSAxNy44OCAxOC4zOCAxNS4zOCAxNyAxNS4zOE0xOCAzSDRDMi45IDMgMiAzLjkgMiA1VjE3QzIgMTguMSAyLjkgMTkgNCAxOUg5LjQyQzkuMjYgMTguNjggOS4xMiAxOC4zNCA5IDE4QzkuMTIgMTcuNjYgOS4yNiAxNy4zMiA5LjQyIDE3SDRWMTNIMTBWMTUuOTdDMTAuNTUgMTUuMTEgMTEuMjMgMTQuMzcgMTIgMTMuNzZWMTNIMTMuMTVDMTQuMzEgMTIuMzYgMTUuNjIgMTIgMTcgMTJDMTguMDYgMTIgMTkuMDcgMTIuMjEgMjAgMTIuNTlWNUMyMCAzLjkgMTkuMSAzIDE4IDNNMTAgMTFINFY3SDEwVjExTTE4IDExSDEyVjdIMThWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVFeWVPZmYgPSBcIk0xMiA4LjhMNi4yIDNIMThDMTkuMSAzIDIwIDMuOSAyMCA1VjEyLjU5QzE5LjA3IDEyLjIxIDE4LjA2IDEyIDE3IDEyQzE2LjQ1IDEyIDE1LjkxIDEyLjA3IDE1LjM4IDEyLjE4TDE0LjIgMTFIMThWN0gxMlY4LjhNMTcuMDkgMTMuODlMMjIuMzEgMTkuMTFDMjIuNTggMTguNzMgMjIuODIgMTguMzIgMjMgMTcuODhDMjIuMDcgMTUuNTcgMTkuNzggMTMuOTIgMTcuMDkgMTMuODlNMjIuMTEgMjEuNDZMMjAuODQgMjIuNzNMMTkuNSAyMS4zN0MxOC43MSAyMS42OSAxNy44OCAyMS44OCAxNyAyMS44OEMxNC4yNyAyMS44OCAxMS45NCAyMC4yMiAxMSAxNy44OEMxMS40NSAxNi43NiAxMi4yMyAxNS44IDEzLjIxIDE1LjFMMTEuOTMgMTMuODJDMTEuMTkgMTQuNDIgMTAuNTMgMTUuMTQgMTAgMTUuOTdWMTNINFYxN0g5LjQyQzkuMjYgMTcuMzIgOS4xMiAxNy42NiA5IDE4QzkuMTIgMTguMzQgOS4yNiAxOC42OCA5LjQyIDE5SDRDMi45IDE5IDIgMTguMSAyIDE3VjVDMiA0LjY4IDIuMDggNC4zOCAyLjIyIDQuMTFMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk05LjExIDExTDUuMTEgN0g0VjExSDkuMTFNMTguMTggMjAuMDdMMTQuODEgMTYuN0MxNC42MSAxNy4wNSAxNC41IDE3LjQ1IDE0LjUgMTcuODhDMTQuNSAxOS4yNiAxNS42MiAyMC4zOCAxNyAyMC4zOEMxNy40MyAyMC4zOCAxNy44MyAyMC4yNyAxOC4xOCAyMC4wN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUZ1cm5pdHVyZSA9IFwiTTIgN0gyMlYxMEgyMEwyMSAxOUgxOC41TDE3Ljk0IDE0SDYuMDZMNS41IDE5SDNMNCAxMEgyVjdNMTcuNSAxMEg2LjVMNi4yOSAxMkgxNy43MUwxNy41IDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlSGVhZGVyc0V5ZSA9IFwiTTEgNlYxOUEyIDIgMCAwIDAgMyAyMUg5VjExSDIxVjZBMiAyIDAgMCAwIDE5IDRIM0EyIDIgMCAwIDAgMSA2TTMgNkg3VjlIM003IDE5SDNWMTZIN003IDE0SDNWMTFIN005IDlWNkgxM1Y5TTE5IDlIMTVWNkgxOU0xNyAxNkExIDEgMCAxIDEgMTYgMTdBMSAxIDAgMCAxIDE3IDE2TTE3IDEzQTYuNDUgNi40NSAwIDAgMSAyMyAxN0E2LjUgNi41IDAgMCAxIDExIDE3QTYuNDUgNi40NSAwIDAgMSAxNyAxM00xNyAxNC41QTIuNSAyLjUgMCAxIDAgMTkuNSAxN0EyLjUgMi41IDAgMCAwIDE3IDE0LjVcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUhlYWRlcnNFeWVPZmYgPSBcIk0yLjM4IDEuNzNMMS4xMSAzTDIuMjYgNC4xNUEyIDIgMCAwIDAgMSA2VjE5QTIgMiAwIDAgMCAzIDIxSDlWMTFIOS4xMUwxMi43MiAxNC42MUE2LjIxIDYuMjEgMCAwIDAgMTEgMTdBNi40NSA2LjQ1IDAgMCAwIDE3IDIxQTYuNTUgNi41NSAwIDAgMCAxOC44NCAyMC43M0wyMC44NCAyMi43M0wyMi4xMSAyMS40NkwyMC41OCAxOS45M003IDE5SDNWMTZIN003IDE0SDNWMTFIN003IDlIM1Y2SDQuMTFMNyA4Ljg5TTE3IDE5LjVBMi41IDIuNSAwIDAgMSAxNC41NiAxNi40NUwxNy41NiAxOS40NUEyLjUgMi41IDAgMCAxIDE3IDE5LjVNMTYuMjQgMTNMMTcuODUgMTQuNjFBMi41IDIuNSAwIDAgMSAxOS4zNSAxNi4xMUwyMS45NCAxOC43QTYuNDQgNi40NCAwIDAgMCAyMyAxN0E2LjQ1IDYuNDUgMCAwIDAgMTcgMTNIMTYuMjRNMTMgNlY5SDEyLjJMMTQuMiAxMUgyMVY2QTIgMiAwIDAgMCAxOSA0SDcuMkw5LjIgNk0xNSA2SDE5VjlIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVIZWFydCA9IFwiTTQgM0gxOEMxOS4xMSAzIDIwIDMuOSAyMCA1VjEyLjA4QzE4LjQ1IDExLjgyIDE2LjkyIDEyLjE4IDE1LjY4IDEzSDEyVjE3SDEzLjA4QzEyLjk3IDE3LjY4IDEyLjk3IDE4LjM1IDEzLjA4IDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRNMTkgMjIuM0wxOC40IDIxLjhDMTYuNCAxOS45IDE1IDE4LjcgMTUgMTcuMkMxNSAxNiAxNiAxNSAxNy4yIDE1QzE3LjkgMTUgMTguNiAxNS4zIDE5IDE1LjhDMTkuNCAxNS4zIDIwLjEgMTUgMjAuOCAxNUMyMiAxNSAyMyAxNS45IDIzIDE3LjJDMjMgMTguNyAyMS42IDE5LjkgMTkuNiAyMS44TDE5IDIyLjNcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUtleSA9IFwiTTE2LjgzIDE3QzE2LjQyIDE1LjgzIDE1LjMxIDE1IDE0IDE1QzEyLjM0IDE1IDExIDE2LjM0IDExIDE4UzEyLjM0IDIxIDE0IDIxQzE1LjMxIDIxIDE2LjQyIDIwLjE3IDE2LjgzIDE5SDE5VjIxSDIxVjE5SDIyVjE3SDE2LjgzTTE0IDE5QzEzLjQ1IDE5IDEzIDE4LjU1IDEzIDE4UzEzLjQ1IDE3IDE0IDE3IDE1IDE3LjQ1IDE1IDE4IDE0LjU1IDE5IDE0IDE5TTkgMThINFYxNEgxMFYxNS4wM0MxMC45MSAxMy44MSAxMi4zNiAxMyAxNCAxM0MxNS4xIDEzIDE2LjE0IDEzLjM3IDE3IDE0SDE4VjE1TDE4IDE1SDIwVjZDMjAgNC44OSAxOS4xMSA0IDE4IDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIOS40MkM5LjE1IDE5LjM5IDkgMTguNzEgOSAxOE0xMiA4SDE4VjEySDEyVjhNNCA4SDEwVjEySDRWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUxhcmdlID0gXCJNNCwzSDIwQTIsMiAwIDAsMSAyMiw1VjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjVBMiwyIDAgMCwxIDQsM000LDdWMTBIOFY3SDRNMTAsN1YxMEgxNFY3SDEwTTIwLDEwVjdIMTZWMTBIMjBNNCwxMlYxNUg4VjEySDRNNCwyMEg4VjE3SDRWMjBNMTAsMTJWMTVIMTRWMTJIMTBNMTAsMjBIMTRWMTdIMTBWMjBNMjAsMjBWMTdIMTZWMjBIMjBNMjAsMTJIMTZWMTVIMjBWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVMYXJnZVBsdXMgPSBcIk0xMi4zNSAyMEgxMFYxN0gxMi4wOUMxMi4yMSAxNi4yOCAxMi40NiAxNS42MSAxMi44MSAxNUgxMFYxMkgxNFYxMy41NEMxNC41OCAxMyAxNS4yNSAxMi42MSAxNiAxMi4zNVYxMkgyMFYxMi4zNUMyMC43NSAxMi42MSAyMS40MiAxMyAyMiAxMy41NFY1QzIyIDMuOSAyMS4xIDMgMjAgM0g0QzIuOSAzIDIgMy45IDIgNVYyMEMyIDIxLjEgMi45IDIyIDQgMjJIMTMuNTRDMTMgMjEuNDIgMTIuNjEgMjAuNzUgMTIuMzUgMjBNMTYgN0gyMFYxMEgxNlY3TTEwIDdIMTRWMTBIMTBWN004IDIwSDRWMTdIOFYyME04IDE1SDRWMTJIOFYxNU04IDEwSDRWN0g4VjEwTTE3IDE0SDE5VjE3SDIyVjE5SDE5VjIySDE3VjE5SDE0VjE3SDE3VjE0XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVMYXJnZVJlbW92ZSA9IFwiTTEyLjM1IDIwSDEwVjE3SDEyLjA5QzEyLjIxIDE2LjI4IDEyLjQ2IDE1LjYxIDEyLjgxIDE1SDEwVjEySDE0VjEzLjU0QzE0LjU4IDEzIDE1LjI1IDEyLjYxIDE2IDEyLjM1VjEySDIwVjEyLjM1QzIwLjc1IDEyLjYxIDIxLjQyIDEzIDIyIDEzLjU0VjVDMjIgMy45IDIxLjEgMyAyMCAzSDRDMi45IDMgMiAzLjkgMiA1VjIwQzIgMjEuMSAyLjkgMjIgNCAyMkgxMy41NEMxMyAyMS40MiAxMi42MSAyMC43NSAxMi4zNSAyME0xNiA3SDIwVjEwSDE2VjdNMTAgN0gxNFYxMEgxMFY3TTggMjBINFYxN0g4VjIwTTggMTVINFYxMkg4VjE1TTggMTBINFY3SDhWMTBNMTQuNDYgMTUuODhMMTUuODggMTQuNDZMMTggMTYuNTlMMjAuMTIgMTQuNDZMMjEuNTQgMTUuODhMMTkuNDEgMThMMjEuNTQgMjAuMTJMMjAuMTIgMjEuNTRMMTggMTkuNDFMMTUuODggMjEuNTRMMTQuNDYgMjAuMTJMMTYuNTkgMThMMTQuNDYgMTUuODhcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZUxvY2sgPSBcIk0yMSAxNlYxNS41QzIxIDE0LjEyIDE5Ljg4IDEzIDE4LjUgMTNTMTYgMTQuMTIgMTYgMTUuNVYxNkMxNS40NSAxNiAxNSAxNi40NSAxNSAxN1YyMUMxNSAyMS41NSAxNS40NSAyMiAxNiAyMkgyMUMyMS41NSAyMiAyMiAyMS41NSAyMiAyMVYxN0MyMiAxNi40NSAyMS41NSAxNiAyMSAxNk0yMCAxNkgxN1YxNS41QzE3IDE0LjY3IDE3LjY3IDE0IDE4LjUgMTRTMjAgMTQuNjcgMjAgMTUuNVYxNk0xMyAxOEgxMlYxNEgxNC4yNkMxNC41NCAxMy4yMSAxNS4wNCAxMi41IDE1LjY5IDEySDEyVjhIMThWMTEuMDVDMTguMTcgMTEuMDMgMTguMzMgMTEgMTguNSAxMUMxOS4wMyAxMSAxOS41MyAxMS4xIDIwIDExLjI2VjZDMjAgNC44OSAxOS4xMSA0IDE4IDRINEMyLjkgNCAyIDQuODkgMiA2VjE4QzIgMTkuMTEgMi45IDIwIDQgMjBIMTNWMThNMTAgMThINFYxNEgxMFYxOE0xMCAxMkg0VjhIMTBWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVNZXJnZUNlbGxzID0gXCJNNSwxMEgzVjRIMTFWNkg1VjEwTTE5LDE4SDEzVjIwSDIxVjE0SDE5VjE4TTUsMThWMTRIM1YyMEgxMVYxOEg1TTIxLDRIMTNWNkgxOVYxMEgyMVY0TTgsMTNWMTVMMTEsMTJMOCw5VjExSDNWMTNIOE0xNiwxMVY5TDEzLDEyTDE2LDE1VjEzSDIxVjExSDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlTWludXMgPSBcIk0xNSAxOVYxN0gyM1YxOUgxNU00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlTXVsdGlwbGUgPSBcIk03IDJIMjFDMjIuMTEgMiAyMyAyLjkgMjMgNFYxNkMyMyAxNy4xMSAyMi4xMSAxOCAyMSAxOEg3QzUuOSAxOCA1IDE3LjExIDUgMTZWNEM1IDIuOSA1LjkgMiA3IDJNNyA2VjEwSDEzVjZIN00xNSA2VjEwSDIxVjZIMTVNNyAxMlYxNkgxM1YxMkg3TTE1IDEyVjE2SDIxVjEySDE1TTMgMjBWNkgxVjIwQzEgMjEuMTEgMS44OSAyMiAzIDIySDE5VjIwSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVOZXR3b3JrID0gXCJNMTUgMjBDMTUgMTkuNDUgMTQuNTUgMTkgMTQgMTlIMTNWMTdIMTlDMjAuMTEgMTcgMjEgMTYuMTEgMjEgMTVWM0MyMSAxLjkgMjAuMTEgMSAxOSAxSDVDMy45IDEgMyAxLjkgMyAzVjE1QzMgMTYuMTEgMy45IDE3IDUgMTdIMTFWMTlIMTBDOS40NSAxOSA5IDE5LjQ1IDkgMjBIMlYyMkg5QzkgMjIuNTUgOS40NSAyMyAxMCAyM0gxNEMxNC41NSAyMyAxNSAyMi41NSAxNSAyMkgyMlYyMEgxNU0xMyA1SDE5VjlIMTNWNU0xMyAxMUgxOVYxNUgxM1YxMU01IDVIMTFWOUg1VjVNNSAxNVYxMUgxMVYxNUg1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlT2ZDb250ZW50cyA9IFwiTTMsOUgxN1Y3SDNWOU0zLDEzSDE3VjExSDNWMTNNMywxN0gxN1YxNUgzVjE3TTE5LDE3SDIxVjE1SDE5VjE3TTE5LDdWOUgyMVY3SDE5TTE5LDEzSDIxVjExSDE5VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0wzLjIyIDUuMTFDMy4wOCA1LjM4IDMgNS42OCAzIDZWMThDMyAxOS4xMSAzLjkgMjAgNSAyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMC4xMSAxMkg1VjhINi4xMUwxMC4xMSAxMk0xMSAxOEg1VjE0SDExVjE4TTEzIDE4VjE0Ljg5TDE2LjExIDE4SDEzTTEzIDkuOEw3LjIgNEgxOUMyMC4xMSA0IDIxIDQuODkgMjEgNlYxNy44TDE5IDE1LjhWMTRIMTcuMkwxNS4yIDEySDE5VjhIMTNWOS44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUGljbmljID0gXCJNNCA2SDIwVjlIMThMMTguMjIgMTFIMjNWMTNIMTguNDRMMTkgMThIMTYuNUwxNS45NCAxM0g4LjA2TDcuNSAxOEg1TDUuNTYgMTNIMVYxMUg1Ljc4TDYgOUg0TTE1LjUgOUg4LjVMOC4yOSAxMUgxNS43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVBsdXMgPSBcIk0xOCwxNEgyMFYxN0gyM1YxOUgyMFYyMkgxOFYxOUgxNVYxN0gxOFYxNE00LDNIMThBMiwyIDAgMCwxIDIwLDVWMTIuMDhDMTguNDUsMTEuODIgMTYuOTIsMTIuMTggMTUuNjgsMTNIMTJWMTdIMTMuMDhDMTIuOTcsMTcuNjggMTIuOTcsMTguMzUgMTMuMDgsMTlINEEyLDIgMCAwLDEgMiwxN1Y1QTIsMiAwIDAsMSA0LDNNNCw3VjExSDEwVjdINE0xMiw3VjExSDE4VjdIMTJNNCwxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUmVmcmVzaCA9IFwiTTE4IDE0LjVDMTkuMTEgMTQuNSAyMC4xMSAxNC45NSAyMC44MyAxNS42N0wyMiAxNC41VjE4LjVIMThMMTkuNzcgMTYuNzNDMTkuMzIgMTYuMjggMTguNjkgMTYgMTggMTZDMTYuNjIgMTYgMTUuNSAxNy4xMiAxNS41IDE4LjVDMTUuNSAxOS44OCAxNi42MiAyMSAxOCAyMUMxOC44MiAyMSAxOS41NSAyMC42MSAyMCAyMEgyMS43MUMyMS4xMiAyMS40NyAxOS42OCAyMi41IDE4IDIyLjVDMTUuNzkgMjIuNSAxNCAyMC43MSAxNCAxOC41QzE0IDE2LjI5IDE1Ljc5IDE0LjUgMTggMTQuNU00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4xN0MxOS41IDEyLjA2IDE5IDEyIDE4LjUgMTJDMTcuMjMgMTIgMTYuMDQgMTIuMzcgMTUuMDQgMTNIMTJWMTdIMTIuMThDMTIuMDYgMTcuNSAxMiAxOCAxMiAxOC41TDEyIDE5SDRDMi45IDE5IDIgMTguMTEgMiAxN1Y1QzIgMy45IDIuOSAzIDQgM000IDdWMTFIMTBWN0g0TTEyIDdWMTFIMThWN0gxMk00IDEzVjE3SDEwVjEzSDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVSZW1vdmUgPSBcIk0xNS40NiwxNS44OEwxNi44OCwxNC40NkwxOSwxNi41OUwyMS4xMiwxNC40NkwyMi41NCwxNS44OEwyMC40MSwxOEwyMi41NCwyMC4xMkwyMS4xMiwyMS41NEwxOSwxOS40MUwxNi44OCwyMS41NEwxNS40NiwyMC4xMkwxNy41OSwxOEwxNS40NiwxNS44OE00LDNIMThBMiwyIDAgMCwxIDIwLDVWMTIuMDhDMTguNDUsMTEuODIgMTYuOTIsMTIuMTggMTUuNjgsMTNIMTJWMTdIMTMuMDhDMTIuOTcsMTcuNjggMTIuOTcsMTguMzUgMTMuMDgsMTlINEEyLDIgMCAwLDEgMiwxN1Y1QTIsMiAwIDAsMSA0LDNNNCw3VjExSDEwVjdINE0xMiw3VjExSDE4VjdIMTJNNCwxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUm93ID0gXCJNMjIsMTRBMiwyIDAgMCwxIDIwLDE2SDRBMiwyIDAgMCwxIDIsMTRWMTBBMiwyIDAgMCwxIDQsOEgyMEEyLDIgMCAwLDEgMjIsMTBWMTRNNCwxNEg4VjEwSDRWMTRNMTAsMTRIMTRWMTBIMTBWMTRNMTYsMTRIMjBWMTBIMTZWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVSb3dIZWlnaHQgPSBcIk0zLDVIMTVBMiwyIDAgMCwxIDE3LDdWMTdBMiwyIDAgMCwxIDE1LDE5SDNBMiwyIDAgMCwxIDEsMTdWN0EyLDIgMCAwLDEgMyw1TTMsOVYxMkg4VjlIM00xMCw5VjEySDE1VjlIMTBNMywxNFYxN0g4VjE0SDNNMTAsMTRWMTdIMTVWMTRIMTBNMjMsMTRWN0gxOVY5SDIxVjEySDE5VjE0SDIzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlUm93UGx1c0FmdGVyID0gXCJNMjIsMTBBMiwyIDAgMCwxIDIwLDEySDRBMiwyIDAgMCwxIDIsMTBWM0g0VjVIOFYzSDEwVjVIMTRWM0gxNlY1SDIwVjNIMjJWMTBNNCwxMEg4VjdINFYxME0xMCwxMEgxNFY3SDEwVjEwTTIwLDEwVjdIMTZWMTBIMjBNMTEsMTRIMTNWMTdIMTZWMTlIMTNWMjJIMTFWMTlIOFYxN0gxMVYxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVJvd1BsdXNCZWZvcmUgPSBcIk0yMiwxNEEyLDIgMCAwLDAgMjAsMTJINEEyLDIgMCAwLDAgMiwxNFYyMUg0VjE5SDhWMjFIMTBWMTlIMTRWMjFIMTZWMTlIMjBWMjFIMjJWMTRNNCwxNEg4VjE3SDRWMTRNMTAsMTRIMTRWMTdIMTBWMTRNMjAsMTRWMTdIMTZWMTRIMjBNMTEsMTBIMTNWN0gxNlY1SDEzVjJIMTFWNUg4VjdIMTFWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVSb3dSZW1vdmUgPSBcIk05LjQxLDEzTDEyLDE1LjU5TDE0LjU5LDEzTDE2LDE0LjQxTDEzLjQxLDE3TDE2LDE5LjU5TDE0LjU5LDIxTDEyLDE4LjQxTDkuNDEsMjFMOCwxOS41OUwxMC41OSwxN0w4LDE0LjQxTDkuNDEsMTNNMjIsOUEyLDIgMCAwLDEgMjAsMTFINEEyLDIgMCAwLDEgMiw5VjZBMiwyIDAgMCwxIDQsNEgyMEEyLDIgMCAwLDEgMjIsNlY5TTQsOUg4VjZINFY5TTEwLDlIMTRWNkgxMFY5TTE2LDlIMjBWNkgxNlY5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlU2VhcmNoID0gXCJNMTkuMywxNy44OUMyMC42MiwxNS43OSAyMCwxMyAxNy44OSwxMS42OEMxNS43OSwxMC4zNiAxMywxMSAxMS42OCwxMy4wOUMxMC4zNiwxNS4yIDExLDE4IDEzLjA5LDE5LjNDMTQuNTYsMjAuMjIgMTYuNDIsMjAuMjIgMTcuODksMTkuM0wyMSwyMi4zOUwyMi4zOSwyMUwxOS4zLDE3Ljg5TTE3LjMsMTcuMjdDMTYuMzIsMTguMjUgMTQuNzQsMTguMjQgMTMuNzYsMTcuMjdDMTIuNzksMTYuMjkgMTIuNzksMTQuNzEgMTMuNzcsMTMuNzNDMTQuNzQsMTIuNzYgMTYuMzIsMTIuNzYgMTcuMywxMy43M0MxOC4yNiwxNC43MiAxOC4yNSwxNi4zIDE3LjI3LDE3LjI3SDE3LjNNMTksNEg1QTIsMiAwIDAsMCAzLDZWMThBMiwyIDAgMCwwIDUsMjBIMTAuODFDMTAuMjUsMTkuNDIgOS44LDE4Ljc0IDkuNSwxOEg1VjE0SDkuMThDOS4zNCwxMy4yOSA5LjYxLDEyLjYxIDEwLDEySDVWOEgxMVYxMC44MUMxMS41OCwxMC4yNSAxMi4yNiw5LjggMTMsOS41VjhIMTlWMTBDMTkuNCwxMC4yNSAxOS43NywxMC41NSAyMC4xLDEwLjg4QzIwLjQ0LDExLjIyIDIwLjc0LDExLjU5IDIxLDEyVjZBMiwyIDAgMCwwIDE5LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGVTZXR0aW5ncyA9IFwiTTcsMjJIOVYyNEg3VjIyTTExLDIySDEzVjI0SDExVjIyTTE1LDIySDE3VjI0SDE1VjIyTTUsNEgxOUEyLDIgMCAwLDEgMjEsNlYxOEEyLDIgMCAwLDEgMTksMjBINUEyLDIgMCAwLDEgMywxOFY2QTIsMiAwIDAsMSA1LDRNNSw4VjEySDExVjhINU0xMyw4VjEySDE5VjhIMTNNNSwxNFYxOEgxMVYxNEg1TTEzLDE0VjE4SDE5VjE0SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlU3BsaXRDZWxsID0gXCJNMTkgMTRIMjFWMjBIM1YxNEg1VjE4SDE5VjE0TTMgNFYxMEg1VjZIMTlWMTBIMjFWNEgzTTExIDExVjEzSDhWMTVMNSAxMkw4IDlWMTFIMTFNMTYgMTFWOUwxOSAxMkwxNiAxNVYxM0gxM1YxMUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVN0YXIgPSBcIk00IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMi4wOEMxOC40NSAxMS44MiAxNi45MiAxMi4xOCAxNS42OCAxM0gxMlYxN0gxMy4wOEMxMi45NyAxNy42OCAxMi45NyAxOC4zNSAxMy4wOCAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0TTE2LjUgMjEuNkwxNy4yIDE4LjhMMTUgMTYuOUwxNy45IDE2LjdMMTkgMTRMMjAuMSAxNi42TDIzIDE2LjhMMjAuOCAxOC43TDIxLjUgMjEuNUwxOSAyMC4xTDE2LjUgMjEuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZVN5bmMgPSBcIk0xOSAxMlYxMy41QzIxLjIxIDEzLjUgMjMgMTUuMjkgMjMgMTcuNUMyMyAxOC4zMiAyMi43NiAxOS4wOCAyMi4zMyAxOS43MUwyMS4yNCAxOC42MkMyMS40MSAxOC4yOCAyMS41IDE3LjkgMjEuNSAxNy41QzIxLjUgMTYuMTIgMjAuMzggMTUgMTkgMTVWMTYuNUwxNi43NSAxNC4yNUwxOSAxMk0xOSAyM1YyMS41QzE2Ljc5IDIxLjUgMTUgMTkuNzEgMTUgMTcuNUMxNSAxNi42OCAxNS4yNSAxNS45MiAxNS42NyAxNS4yOUwxNi43NiAxNi4zOEMxNi41OSAxNi43MiAxNi41IDE3LjEgMTYuNSAxNy41QzE2LjUgMTguODggMTcuNjIgMjAgMTkgMjBWMTguNUwyMS4yNSAyMC43NUwxOSAyM000IDNIMThDMTkuMTEgMyAyMCAzLjkgMjAgNVYxMUwxOS41IDExQzE3LjY2IDExIDE2IDExLjc3IDE0LjgxIDEzSDEyVjE3SDEzTDEzIDE3LjVDMTMgMTggMTMuMDYgMTguNSAxMy4xNyAxOUg0QzIuOSAxOSAyIDE4LjExIDIgMTdWNUMyIDMuOSAyLjkgMyA0IDNNNCA3VjExSDEwVjdINE0xMiA3VjExSDE4VjdIMTJNNCAxM1YxN0gxMFYxM0g0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxlVGVubmlzID0gXCJNMTguNSwxNEMxOS45LDE0IDIxLDE1LjEgMjEsMTYuNUMyMSwxNy45IDE5LjksMTkgMTguNSwxOUMxNy4xLDE5IDE2LDE3LjkgMTYsMTYuNUMxNiwxNS4xIDE3LjEsMTQgMTguNSwxNE03LDE1QzcsMTUgOCwxNiA4LDE3VjIwLjVDOCwyMS4zIDguNywyMiA5LjUsMjJDMTAuMywyMiAxMSwyMS4zIDExLDIwLjVWMTdDMTEsMTYgMTIsMTUgMTIsMTVIN004LDE0SDExQzExLDE0IDE2LDE0IDE2LDlDMTYsNCAxMiwyIDkuNSwyQzcsMiAzLDQgMyw5QzMsMTQgOCwxNCA4LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxldCA9IFwiTTE5LDE4SDVWNkgxOU0yMSw0SDNDMS44OSw0IDEsNC44OSAxLDZWMThBMiwyIDAgMCwwIDMsMjBIMjFBMiwyIDAgMCwwIDIzLDE4VjZDMjMsNC44OSAyMi4xLDQgMjEsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZXRBbmRyb2lkID0gXCJNMTkuMjUsMTlINC43NVYzSDE5LjI1TTE0LDIySDEwVjIxSDE0TTE4LDBINkEzLDMgMCAwLDAgMywzVjIxQTMsMyAwIDAsMCA2LDI0SDE4QTMsMyAwIDAsMCAyMSwyMVYzQTMsMyAwIDAsMCAxOCwwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhYmxldENlbGxwaG9uZSA9IFwiTTMsNEgyMEEyLDIgMCAwLDEgMjIsNlY4SDE4VjZINVYxOEgxNFYyMEgzQTIsMiAwIDAsMSAxLDE4VjZBMiwyIDAgMCwxIDMsNE0xNywxMEgyM0ExLDEgMCAwLDEgMjQsMTFWMjFBMSwxIDAgMCwxIDIzLDIySDE3QTEsMSAwIDAsMSAxNiwyMVYxMUExLDEgMCAwLDEgMTcsMTBNMTgsMTJWMTlIMjJWMTJIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFibGV0RGFzaGJvYXJkID0gXCJNMTksMThINVY2SDE5TTIxLDRIM0MxLjg5LDQgMSw0Ljg5IDEsNlYxOEEyLDIgMCAwLDAgMywyMEgyMUEyLDIgMCAwLDAgMjMsMThWNkMyMyw0Ljg5IDIyLjEsNCAyMSw0TTcsOEgxM1YxM0g3VjhNMTQsOEgxN1YxMEgxNFY4TTE3LDExVjE2SDE0VjExSDE3TTcsMTRIMTNWMTZIN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWJsZXRJcGFkID0gXCJNMTksMTlINFYzSDE5TTExLjUsMjNBMS41LDEuNSAwIDAsMSAxMCwyMS41QTEuNSwxLjUgMCAwLDEgMTEuNSwyMEExLjUsMS41IDAgMCwxIDEzLDIxLjVBMS41LDEuNSAwIDAsMSAxMS41LDIzTTE4LjUsMEg0LjVBMi41LDIuNSAwIDAsMCAyLDIuNVYyMS41QTIuNSwyLjUgMCAwLDAgNC41LDI0SDE4LjVBMi41LDIuNSAwIDAsMCAyMSwyMS41VjIuNUEyLjUsMi41IDAgMCwwIDE4LjUsMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWNvID0gXCJNMTksMThINUE0LDQgMCAwLDEgMSwxNEE4LDggMCAwLDEgOSw2QzEwLjA2LDYgMTEuMDcsNi4yMSAxMiw2LjU4QzEyLjkzLDYuMjEgMTMuOTQsNiAxNSw2QTgsOCAwIDAsMSAyMywxNEE0LDQgMCAwLDEgMTksMThNMywxNEEyLDIgMCAwLDAgNSwxNkEyLDIgMCAwLDAgNywxNEM3LDExLjYzIDguMDMsOS41IDkuNjcsOC4wNEw5LDhBNiw2IDAgMCwwIDMsMTRNMTksMTZBMiwyIDAgMCwwIDIxLDE0QTYsNiAwIDAsMCAxNSw4QTYsNiAwIDAsMCA5LDE0QzksMTQuNzMgOC44MSwxNS40MSA4LjQ2LDE2SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZyA9IFwiTTUuNSw3QTEuNSwxLjUgMCAwLDEgNCw1LjVBMS41LDEuNSAwIDAsMSA1LjUsNEExLjUsMS41IDAgMCwxIDcsNS41QTEuNSwxLjUgMCAwLDEgNS41LDdNMjEuNDEsMTEuNThMMTIuNDEsMi41OEMxMi4wNSwyLjIyIDExLjU1LDIgMTEsMkg0QzIuODksMiAyLDIuODkgMiw0VjExQzIsMTEuNTUgMi4yMiwxMi4wNSAyLjU5LDEyLjQxTDExLjU4LDIxLjQxQzExLjk1LDIxLjc3IDEyLjQ1LDIyIDEzLDIyQzEzLjU1LDIyIDE0LjA1LDIxLjc3IDE0LjQxLDIxLjQxTDIxLjQxLDE0LjQxQzIxLjc4LDE0LjA1IDIyLDEzLjU1IDIyLDEzQzIyLDEyLjQ0IDIxLjc3LDExLjk0IDIxLjQxLDExLjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0Fycm93RG93biA9IFwiTTIxLjQxIDExLjU4TDEyLjQxIDIuNThDMTIuMDQgMi4yMSAxMS41MyAyIDExIDJINEMyLjkgMiAyIDIuOSAyIDRWMTFDMiAxMS41MyAyLjIxIDEyLjA0IDIuNTkgMTIuNDFMMyAxMi44MUMzLjkgMTIuMjcgNC45NCAxMiA2IDEyQzkuMzEgMTIgMTIgMTQuNjkgMTIgMThDMTIgMTkuMDYgMTEuNzIgMjAuMDkgMTEuMTggMjFMMTEuNTggMjEuNEMxMS45NSAyMS43OCAxMi40NyAyMiAxMyAyMlMxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM1MyMS43OSAxMS45NiAyMS40MSAxMS41OE01LjUgN0M0LjY3IDcgNCA2LjMzIDQgNS41UzQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjUgNi4zMyA3IDUuNSA3TTcgMTlWMTVINVYxOUgzTDYgMjJMOSAxOUg3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0Fycm93RG93bk91dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTggMThWMTRINlYxOEg0TDcgMjFMMTAgMThIOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdBcnJvd0xlZnQgPSBcIk0yMS40MSAxMS41OEwxMi40MSAyLjU4QzEyLjA0IDIuMjEgMTEuNTMgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNTMgMi4yMSAxMi4wNCAyLjU5IDEyLjQxTDMgMTIuODFDMy45IDEyLjI3IDQuOTQgMTIgNiAxMkM5LjMxIDEyIDEyIDE0LjY5IDEyIDE4QzEyIDE5LjA2IDExLjcyIDIwLjA5IDExLjE4IDIxTDExLjU4IDIxLjRDMTEuOTUgMjEuNzggMTIuNDcgMjIgMTMgMjJTMTQuMDQgMjEuNzkgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFDMjEuNzkgMTQuMDQgMjIgMTMuNTMgMjIgMTNTMjEuNzkgMTEuOTYgMjEuNDEgMTEuNThNNS41IDdDNC42NyA3IDQgNi4zMyA0IDUuNVM0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41IDYuMzMgNyA1LjUgN001IDE5SDlWMTdINVYxNUwyIDE4TDUgMjFWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnQXJyb3dMZWZ0T3V0bGluZSA9IFwiTTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNNi41IDVDNS42NyA1IDUgNS42NyA1IDYuNVM1LjY3IDggNi41IDggOCA3LjMzIDggNi41IDcuMzMgNSA2LjUgNU0yMS40MSAxMS41OEwxMi40MSAyLjU4QzEyLjA0IDIuMjEgMTEuNTMgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNTMgMi4yMSAxMi4wNCAyLjU5IDEyLjQyTDMgMTIuODJDMy42NCAxMi40NCA0LjM1IDEyLjE5IDUuMDggMTIuMDhMNCAxMVY0SDExTDIwIDEzTDEzIDIwTDExLjkyIDE4LjkyQzExLjgyIDE5LjY2IDExLjU2IDIwLjM2IDExLjE4IDIxTDExLjU5IDIxLjQxQzExLjk2IDIxLjc5IDEyLjQ3IDIyIDEzIDIyQzEzLjUzIDIyIDE0LjA0IDIxLjc5IDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQzIxLjc5IDE0LjA0IDIyIDEzLjUzIDIyIDEzQzIyIDEyLjQ3IDIxLjc5IDExLjk2IDIxLjQxIDExLjU4TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNNSAxOUg5VjE3SDVWMTVMMiAxOEw1IDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0Fycm93UmlnaHQgPSBcIk0yMS40MSAxMS41OEwxMi40MSAyLjU4QzEyLjA0IDIuMjEgMTEuNTMgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNTMgMi4yMSAxMi4wNCAyLjU5IDEyLjQxTDMgMTIuODFDMy45IDEyLjI3IDQuOTQgMTIgNiAxMkM5LjMxIDEyIDEyIDE0LjY5IDEyIDE4QzEyIDE5LjA2IDExLjcyIDIwLjA5IDExLjE4IDIxTDExLjU4IDIxLjRDMTEuOTUgMjEuNzggMTIuNDcgMjIgMTMgMjJTMTQuMDQgMjEuNzkgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFDMjEuNzkgMTQuMDQgMjIgMTMuNTMgMjIgMTNTMjEuNzkgMTEuOTYgMjEuNDEgMTEuNThNNS41IDdDNC42NyA3IDQgNi4zMyA0IDUuNVM0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41IDYuMzMgNyA1LjUgN002IDE3SDJWMTlINlYyMUw5IDE4TDYgMTVWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnQXJyb3dSaWdodE91dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYgMTdIMlYxOUg2VjIxTDkgMThMNiAxNVYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdBcnJvd1VwID0gXCJNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MUwzIDEyLjgxQzMuOSAxMi4yNyA0Ljk0IDEyIDYgMTJDOS4zMSAxMiAxMiAxNC42OSAxMiAxOEMxMiAxOS4wNiAxMS43MiAyMC4wOSAxMS4xOCAyMUwxMS41OCAyMS40QzExLjk1IDIxLjc4IDEyLjQ3IDIyIDEzIDIyUzE0LjA0IDIxLjc5IDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQzIxLjc5IDE0LjA0IDIyIDEzLjUzIDIyIDEzUzIxLjc5IDExLjk2IDIxLjQxIDExLjU4TTUuNSA3QzQuNjcgNyA0IDYuMzMgNCA1LjVTNC42NyA0IDUuNSA0IDcgNC42NyA3IDUuNSA2LjMzIDcgNS41IDdNNSAxN1YyMUg3VjE3SDlMNiAxNEwzIDE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnQXJyb3dVcE91dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYgMTdWMjFIOFYxN0gxMEw3IDE0TDQgMTdINlpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdGYWNlcyA9IFwiTTE1LDE4QzExLjY4LDE4IDksMTUuMzEgOSwxMkM5LDguNjggMTEuNjgsNiAxNSw2QTYsNiAwIDAsMSAyMSwxMkE2LDYgMCAwLDEgMTUsMThNNCwxM0ExLDEgMCAwLDEgMywxMkExLDEgMCAwLDEgNCwxMUExLDEgMCAwLDEgNSwxMkExLDEgMCAwLDEgNCwxM00yMiwzSDcuNjNDNi45NywzIDYuMzgsMy4zMiA2LDMuODFMMCwxMkw2LDIwLjE4QzYuMzgsMjAuNjggNi45NywyMSA3LjYzLDIxSDIyQTIsMiAwIDAsMCAyNCwxOVY1QzI0LDMuODkgMjMuMSwzIDIyLDNNMTMsMTFBMSwxIDAgMCwwIDE0LDEwQTEsMSAwIDAsMCAxMyw5QTEsMSAwIDAsMCAxMiwxMEExLDEgMCAwLDAgMTMsMTFNMTUsMTZDMTYuODYsMTYgMTguMzUsMTQuNzIgMTguOCwxM0gxMS4yQzExLjY1LDE0LjcyIDEzLjE0LDE2IDE1LDE2TTE3LDExQTEsMSAwIDAsMCAxOCwxMEExLDEgMCAwLDAgMTcsOUExLDEgMCAwLDAgMTYsMTBBMSwxIDAgMCwwIDE3LDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0hlYXJ0ID0gXCJNMjEuNDEsMTEuNThMMTIuNDEsMi41OEMxMi4wNSwyLjIyIDExLjU1LDIgMTEsMkg0QTIsMiAwIDAsMCAyLDRWMTFDMiwxMS41NSAyLjIyLDEyLjA1IDIuNTksMTIuNDJMMTEuNTksMjEuNDJDMTEuOTUsMjEuNzggMTIuNDUsMjIgMTMsMjJDMTMuNTUsMjIgMTQuMDUsMjEuNzggMTQuNDEsMjEuNDFMMjEuNDEsMTQuNDFDMjEuNzgsMTQuMDUgMjIsMTMuNTUgMjIsMTNDMjIsMTIuNDUgMjEuNzcsMTEuOTQgMjEuNDEsMTEuNThNNS41LDdBMS41LDEuNSAwIDAsMSA0LDUuNUExLjUsMS41IDAgMCwxIDUuNSw0QTEuNSwxLjUgMCAwLDEgNyw1LjVBMS41LDEuNSAwIDAsMSA1LjUsN00xNy4yNywxNS4yN0wxMywxOS41NEw4LjczLDE1LjI3QzguMjgsMTQuODEgOCwxNC4xOSA4LDEzLjVBMi41LDIuNSAwIDAsMSAxMC41LDExQzExLjE5LDExIDExLjgyLDExLjI4IDEyLjI3LDExLjc0TDEzLDEyLjQ2TDEzLjczLDExLjczQzE0LjE4LDExLjI4IDE0LjgxLDExIDE1LjUsMTFBMi41LDIuNSAwIDAsMSAxOCwxMy41QzE4LDE0LjE5IDE3LjcyLDE0LjgyIDE3LjI3LDE1LjI3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ0hlYXJ0T3V0bGluZSA9IFwiTTQsMkEyLDIgMCAwLDAgMiw0VjExQzIsMTEuNTUgMi4yMiwxMi4wNSAyLjU5LDEyLjQyTDExLjU5LDIxLjQyQzExLjk1LDIxLjc4IDEyLjQ1LDIyIDEzLDIyQzEzLjU1LDIyIDE0LjA1LDIxLjc4IDE0LjQxLDIxLjQxTDIxLjQxLDE0LjQxQzIxLjc4LDE0LjA1IDIyLDEzLjU1IDIyLDEzQzIyLDEyLjQ1IDIxLjc3LDExLjk0IDIxLjQxLDExLjU4TDEyLjQxLDIuNThDMTIuMDUsMi4yMiAxMS41NSwyIDExLDJINFYyTTExLDRMMjAsMTNMMTMsMjBMNCwxMVY0SDExVjRIMTFNNi41LDVBMS41LDEuNSAwIDAsMCA1LDYuNUExLjUsMS41IDAgMCwwIDYuNSw4QTEuNSwxLjUgMCAwLDAgOCw2LjVBMS41LDEuNSAwIDAsMCA2LjUsNU0xMC45NSwxMC41QzkuODIsMTAuNSA4LjksMTEuNDIgOC45LDEyLjU1QzguOSwxMy4xMiA5LjEzLDEzLjYyIDkuNSwxNEwxMywxNy41TDE2LjUsMTRDMTYuODcsMTMuNjMgMTcuMSwxMy4xMSAxNy4xLDEyLjU1QTIuMDUsMi4wNSAwIDAsMCAxNS4wNSwxMC41QzE0LjUsMTAuNSAxMy45NywxMC43MyAxMy42LDExLjFMMTMsMTEuN0wxMi40LDExLjExQzEyLjAzLDEwLjczIDExLjUsMTAuNSAxMC45NSwxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ01pbnVzID0gXCJNMjEuNDEsMTEuNThMMTIuNDEsMi41OEMxMi4wNCwyLjIxIDExLjUzLDIgMTEsMkg0QTIsMiAwIDAsMCAyLDRWMTFDMiwxMS41MyAyLjIxLDEyLjA0IDIuNTksMTIuNDFMMywxMi44MUMzLjksMTIuMjcgNC45NCwxMiA2LDEyQTYsNiAwIDAsMSAxMiwxOEMxMiwxOS4wNiAxMS43MiwyMC4wOSAxMS4xOCwyMUwxMS41OCwyMS40QzExLjk1LDIxLjc4IDEyLjQ3LDIyIDEzLDIyQzEzLjUzLDIyIDE0LjA0LDIxLjc5IDE0LjQxLDIxLjQxTDIxLjQxLDE0LjQxQzIxLjc5LDE0LjA0IDIyLDEzLjUzIDIyLDEzQzIyLDEyLjQ3IDIxLjc5LDExLjk2IDIxLjQxLDExLjU4TTUuNSw3QTEuNSwxLjUgMCAwLDEgNCw1LjVBMS41LDEuNSAwIDAsMSA1LjUsNEExLjUsMS41IDAgMCwxIDcsNS41QTEuNSwxLjUgMCAwLDEgNS41LDdNMTAsMTlIMlYxN0gxMFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdNaW51c091dGxpbmUgPSBcIk02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTYuNSA1QzUuNjcgNSA1IDUuNjcgNSA2LjVTNS42NyA4IDYuNSA4IDggNy4zMyA4IDYuNSA3LjMzIDUgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEMxMi4wNCAyLjIxIDExLjUzIDIgMTEgMkg0QzIuOSAyIDIgMi45IDIgNFYxMUMyIDExLjUzIDIuMjEgMTIuMDQgMi41OSAxMi40MkwzIDEyLjgyQzMuNjQgMTIuNDQgNC4zNSAxMi4xOSA1LjA4IDEyLjA4TDQgMTFWNEgxMUwyMCAxM0wxMyAyMEwxMS45MiAxOC45MkMxMS44MiAxOS42NiAxMS41NiAyMC4zNiAxMS4xOCAyMUwxMS41OSAyMS40MUMxMS45NiAyMS43OSAxMi40NyAyMiAxMyAyMkMxMy41MyAyMiAxNC4wNCAyMS43OSAxNC40MSAyMS40MUwyMS40MSAxNC40MUMyMS43OSAxNC4wNCAyMiAxMy41MyAyMiAxM0MyMiAxMi40NyAyMS43OSAxMS45NiAyMS40MSAxMS41OE02LjUgNUM1LjY3IDUgNSA1LjY3IDUgNi41UzUuNjcgOCA2LjUgOCA4IDcuMzMgOCA2LjUgNy4zMyA1IDYuNSA1TTEwIDE5SDJWMTdIMTBWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnTXVsdGlwbGUgPSBcIk01LjUsOUExLjUsMS41IDAgMCwwIDcsNy41QTEuNSwxLjUgMCAwLDAgNS41LDZBMS41LDEuNSAwIDAsMCA0LDcuNUExLjUsMS41IDAgMCwwIDUuNSw5TTE3LjQxLDExLjU4QzE3Ljc3LDExLjk0IDE4LDEyLjQ0IDE4LDEzQzE4LDEzLjU1IDE3Ljc4LDE0LjA1IDE3LjQxLDE0LjQxTDEyLjQxLDE5LjQxQzEyLjA1LDE5Ljc3IDExLjU1LDIwIDExLDIwQzEwLjQ1LDIwIDkuOTUsMTkuNzggOS41OCwxOS40MUwyLjU5LDEyLjQyQzIuMjIsMTIuMDUgMiwxMS41NSAyLDExVjZDMiw0Ljg5IDIuODksNCA0LDRIOUM5LjU1LDQgMTAuMDUsNC4yMiAxMC40MSw0LjU4TDE3LjQxLDExLjU4TTEzLjU0LDUuNzFMMTQuNTQsNC43MUwyMS40MSwxMS41OEMyMS43OCwxMS45NCAyMiwxMi40NSAyMiwxM0MyMiwxMy41NSAyMS43OCwxNC4wNSAyMS40MiwxNC40MUwxNi4wNCwxOS43OUwxNS4wNCwxOC43OUwyMC43NSwxM0wxMy41NCw1LjcxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ011bHRpcGxlT3V0bGluZSA9IFwiTTYuNSAxMEM3LjMgMTAgOCA5LjMgOCA4LjVTNy4zIDcgNi41IDcgNSA3LjcgNSA4LjUgNS43IDEwIDYuNSAxME05IDZMMTYgMTNMMTEgMThMNCAxMVY2SDlNOSA0SDRDMi45IDQgMiA0LjkgMiA2VjExQzIgMTEuNiAyLjIgMTIuMSAyLjYgMTIuNEw5LjYgMTkuNEM5LjkgMTkuOCAxMC40IDIwIDExIDIwUzEyLjEgMTkuOCAxMi40IDE5LjRMMTcuNCAxNC40QzE3LjggMTQgMTggMTMuNSAxOCAxM0MxOCAxMi40IDE3LjggMTEuOSAxNy40IDExLjZMMTAuNCA0LjZDMTAuMSA0LjIgOS42IDQgOSA0TTEzLjUgNS43TDE0LjUgNC43TDIxLjQgMTEuNkMyMS44IDEyIDIyIDEyLjUgMjIgMTNTMjEuOCAxNC4xIDIxLjQgMTQuNEwxNiAxOS44TDE1IDE4LjhMMjAuNyAxM0wxMy41IDUuN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdPZmYgPSBcIk0xOC4zMyA4LjVMMjIuOTIgMy45MkwyMS41IDIuNUwyLjUgMjEuNUwzLjkyIDIyLjkyTDguNSAxOC4zM0wxMS41OCAyMS40MUEyIDIgMCAwIDAgMTMgMjJBMiAyIDAgMCAwIDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQTIgMiAwIDAgMCAyMiAxM0EyIDIgMCAwIDAgMjEuNDEgMTEuNThNNS42MSAxNS40M0wxNS40NyA1LjY1TDEyLjQxIDIuNThBMiAyIDAgMCAwIDExIDJINEEyIDIgMCAwIDAgMiA0VjExQTIgMiAwIDAgMCAyLjU5IDEyLjQxTTUuNSA0QTEuNSAxLjUgMCAxIDEgNCA1LjVBMS41IDEuNSAwIDAgMSA1LjUgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdPZmZPdXRsaW5lID0gXCJNNi41IDVBMS41IDEuNSAwIDEgMCA4IDYuNUExLjUgMS41IDAgMCAwIDYuNSA1TTYuNSA1QTEuNSAxLjUgMCAxIDAgOCA2LjVBMS41IDEuNSAwIDAgMCA2LjUgNU0xOC4zMyA4LjVMMjIuOTIgMy45MkwyMS41IDIuNUwyLjUgMjEuNUwzLjkyIDIyLjkyTDguNSAxOC4zM0wxMS41OSAyMS40MkEyIDIgMCAwIDAgMTMgMjJBMiAyIDAgMCAwIDE0LjQxIDIxLjQxTDIxLjQxIDE0LjQxQTIgMiAwIDAgMCAyMiAxM0EyIDIgMCAwIDAgMjEuNDEgMTEuNThNMTMgMjBMOS45MiAxNi45MkwxNi45MiA5LjkyTDIwIDEzTTUuNjEgMTUuNDNMNyAxNEw0IDExVjRIMTFMMTQuMDYgNy4wNkwxNS40NyA1LjY2TDEyLjQxIDIuNThBMiAyIDAgMCAwIDExIDJINEEyIDIgMCAwIDAgMiA0VjExQTIgMiAwIDAgMCAyLjU5IDEyLjQyTTUgNi41QTEuNSAxLjUgMCAxIDAgNi41IDVBMS41IDEuNSAwIDAgMCA1IDYuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdPdXRsaW5lID0gXCJNMjEuNDEgMTEuNThMMTIuNDEgMi41OEEyIDIgMCAwIDAgMTEgMkg0QTIgMiAwIDAgMCAyIDRWMTFBMiAyIDAgMCAwIDIuNTkgMTIuNDJMMTEuNTkgMjEuNDJBMiAyIDAgMCAwIDEzIDIyQTIgMiAwIDAgMCAxNC40MSAyMS40MUwyMS40MSAxNC40MUEyIDIgMCAwIDAgMjIgMTNBMiAyIDAgMCAwIDIxLjQxIDExLjU4TTEzIDIwTDQgMTFWNEgxMUwyMCAxM002LjUgNUExLjUgMS41IDAgMSAxIDUgNi41QTEuNSAxLjUgMCAwIDEgNi41IDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnUGx1cyA9IFwiTTIxLjQxLDExLjU4TDEyLjQxLDIuNThDMTIuMDQsMi4yMSAxMS41MywyIDExLDJINEEyLDIgMCAwLDAgMiw0VjExQzIsMTEuNTMgMi4yMSwxMi4wNCAyLjU5LDEyLjQxTDMsMTIuODFDMy45LDEyLjI3IDQuOTQsMTIgNiwxMkE2LDYgMCAwLDEgMTIsMThDMTIsMTkuMDYgMTEuNzIsMjAuMDkgMTEuMTgsMjFMMTEuNTgsMjEuNEMxMS45NSwyMS43OCAxMi40NywyMiAxMywyMkMxMy41MywyMiAxNC4wNCwyMS43OSAxNC40MSwyMS40MUwyMS40MSwxNC40MUMyMS43OSwxNC4wNCAyMiwxMy41MyAyMiwxM0MyMiwxMi40NyAyMS43OSwxMS45NiAyMS40MSwxMS41OE01LjUsN0ExLjUsMS41IDAgMCwxIDQsNS41QTEuNSwxLjUgMCAwLDEgNS41LDRBMS41LDEuNSAwIDAsMSA3LDUuNUExLjUsMS41IDAgMCwxIDUuNSw3TTEwLDE5SDdWMjJINVYxOUgyVjE3SDVWMTRIN1YxN0gxMFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYWdQbHVzT3V0bGluZSA9IFwiTTYuNSA1QTEuNSAxLjUgMCAxIDAgOCA2LjVBMS41IDEuNSAwIDAgMCA2LjUgNU02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEEyIDIgMCAwIDAgMTEgMkg0QTIgMiAwIDAgMCAyIDRWMTFBMiAyIDAgMCAwIDIuNTkgMTIuNDJMMyAxMi44MkE1LjYyIDUuNjIgMCAwIDEgNS4wOCAxMi4wOEw0IDExVjRIMTFMMjAgMTNMMTMgMjBMMTEuOTIgMTguOTJBNS41NyA1LjU3IDAgMCAxIDExLjE4IDIxTDExLjU5IDIxLjQxQTIgMiAwIDAgMCAxMyAyMkEyIDIgMCAwIDAgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFBMiAyIDAgMCAwIDIyIDEzQTIgMiAwIDAgMCAyMS40MSAxMS41OE02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNMTAgMTlIN1YyMkg1VjE5SDJWMTdINVYxNEg3VjE3SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhZ1JlbW92ZSA9IFwiTTIxLjQxLDExLjU4TDEyLjQxLDIuNThDMTIuMDQsMi4yMSAxMS41MywyIDExLDJINEEyLDIgMCAwLDAgMiw0VjExQzIsMTEuNTMgMi4yMSwxMi4wNCAyLjU5LDEyLjQxTDMsMTIuODFDMy45LDEyLjI3IDQuOTQsMTIgNiwxMkE2LDYgMCAwLDEgMTIsMThDMTIsMTkuMDYgMTEuNzIsMjAuMDkgMTEuMTgsMjFMMTEuNTgsMjEuNEMxMS45NSwyMS43OCAxMi40NywyMiAxMywyMkMxMy41MywyMiAxNC4wNCwyMS43OSAxNC40MSwyMS40MUwyMS40MSwxNC40MUMyMS43OSwxNC4wNCAyMiwxMy41MyAyMiwxM0MyMiwxMi40NyAyMS43OSwxMS45NiAyMS40MSwxMS41OE01LjUsN0ExLjUsMS41IDAgMCwxIDQsNS41QTEuNSwxLjUgMCAwLDEgNS41LDRBMS41LDEuNSAwIDAsMSA3LDUuNUExLjUsMS41IDAgMCwxIDUuNSw3TTguMTIsMjEuNTRMNiwxOS40MUwzLjg4LDIxLjU0TDIuNDYsMjAuMTJMNC41OSwxOEwyLjQ2LDE1Ljg4TDMuODcsMTQuNDdMNiwxNi41OUw4LjEyLDE0LjQ3TDkuNTMsMTUuODhMNy40MSwxOEw5LjUzLDIwLjEyTDguMTIsMjEuNTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnUmVtb3ZlT3V0bGluZSA9IFwiTTYuNSA1QTEuNSAxLjUgMCAxIDAgOCA2LjVBMS41IDEuNSAwIDAgMCA2LjUgNU02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNMjEuNDEgMTEuNThMMTIuNDEgMi41OEEyIDIgMCAwIDAgMTEgMkg0QTIgMiAwIDAgMCAyIDRWMTFBMiAyIDAgMCAwIDIuNTkgMTIuNDJMMyAxMi44MkE1LjYyIDUuNjIgMCAwIDEgNS4wOCAxMi4wOEw0IDExVjRIMTFMMjAgMTNMMTMgMjBMMTEuOTIgMTguOTJBNS41NyA1LjU3IDAgMCAxIDExLjE4IDIxTDExLjU5IDIxLjQxQTIgMiAwIDAgMCAxMyAyMkEyIDIgMCAwIDAgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFBMiAyIDAgMCAwIDIyIDEzQTIgMiAwIDAgMCAyMS40MSAxMS41OE02LjUgNUExLjUgMS41IDAgMSAwIDggNi41QTEuNSAxLjUgMCAwIDAgNi41IDVNOC4xMiAyMS41NEw2IDE5LjQxTDMuODggMjEuNTRMMi40NiAyMC4xMkw0LjU5IDE4TDIuNDYgMTUuODhMMy44OCAxNC40Nkw2IDE2LjU5TDguMTIgMTQuNDZMOS41NCAxNS44OEw3LjQxIDE4TDkuNTQgMjAuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnVGV4dCA9IFwiTTIxLjQxIDExLjU4TDEyLjQxIDIuNThBMiAyIDAgMCAwIDExIDJINEEyIDIgMCAwIDAgMiA0VjExQTIgMiAwIDAgMCAyLjU5IDEyLjQxTDExLjU5IDIxLjQxQTIgMiAwIDAgMCAxMyAyMkEyIDIgMCAwIDAgMTQuNDEgMjEuNDFMMjEuNDEgMTQuNDFBMiAyIDAgMCAwIDIyIDEzQTIgMiAwIDAgMCAyMS40MSAxMS41OE02LjUgOEExLjUgMS41IDAgMSAxIDggNi41QTEuNSAxLjUgMCAwIDEgNi41IDhNMTEuNTkgMTUuNDFMNy41OSAxMS40MUw5IDEwTDEzIDE0TTE1LjU5IDE0LjQxTDEwLjA5IDguOTFMMTEuNSA3LjVMMTcgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFnVGV4dE91dGxpbmUgPSBcIk0yMS40IDExLjZMMTIuNCAyLjZDMTIgMi4yIDExLjUgMiAxMSAySDRDMi45IDIgMiAyLjkgMiA0VjExQzIgMTEuNSAyLjIgMTIgMi42IDEyLjRMMTEuNiAyMS40QzEyIDIxLjggMTIuNSAyMiAxMyAyMkMxMy41IDIyIDE0IDIxLjggMTQuNCAyMS40TDIxLjQgMTQuNEMyMS44IDE0IDIyIDEzLjUgMjIgMTNDMjIgMTIuNSAyMS44IDEyIDIxLjQgMTEuNk0xMyAyMEw0IDExVjRIMTFMMjAgMTNNNi41IDVDNy4zIDUgOCA1LjcgOCA2LjVTNy4zIDggNi41IDggNSA3LjMgNSA2LjUgNS43IDUgNi41IDVNMTAuMSA4LjlMMTEuNSA3LjVMMTcgMTNMMTUuNiAxNC40TDEwLjEgOC45TTcuNiAxMS40TDkgMTBMMTMgMTRMMTEuNiAxNS40TDcuNiAxMS40WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhaWx3aW5kID0gXCJNMTIgNkM5LjMzIDYgNy42NyA3LjMzIDcgMTBDOCA4LjY3IDkuMTcgOC4xNyAxMC41IDguNUMxMS4yNiA4LjY5IDExLjgxIDkuMjQgMTIuNDEgOS44NUMxMy4zOSAxMC44NSAxNC41IDEyIDE3IDEyQzE5LjY3IDEyIDIxLjMzIDEwLjY3IDIyIDhDMjEgOS4zMyAxOS44MyA5LjgzIDE4LjUgOS41QzE3Ljc0IDkuMzEgMTcuMiA4Ljc2IDE2LjU5IDguMTVDMTUuNjEgNy4xNSAxNC41IDYgMTIgNk03IDEyQzQuMzMgMTIgMi42NyAxMy4zMyAyIDE2QzMgMTQuNjcgNC4xNyAxNC4xNyA1LjUgMTQuNUM2LjI2IDE0LjY5IDYuOCAxNS4yNCA3LjQxIDE1Ljg1QzguMzkgMTYuODUgOS41IDE4IDEyIDE4QzE0LjY3IDE4IDE2LjMzIDE2LjY3IDE3IDE0QzE2IDE1LjMzIDE0LjgzIDE1LjgzIDEzLjUgMTUuNUMxMi43NCAxNS4zMSAxMi4yIDE0Ljc2IDExLjU5IDE0LjE1QzEwLjYxIDEzLjE1IDkuNSAxMiA3IDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhbmsgPSBcIk0yMCwxMkg0VjExSDZMNyw2SDEyTDEzLDExSDIwVjEyTTEzLjIyLDdMMTMuNjIsOUgyMlY3SDEzLjIyTTIyLDE2QTMsMyAwIDAsMSAxOSwxOUg1QTMsMyAwIDAsMSAyLDE2QTMsMyAwIDAsMSA1LDEzSDE5QTMsMyAwIDAsMSAyMiwxNk02LDE2QTEsMSAwIDAsMCA1LDE1QTEsMSAwIDAsMCA0LDE2QTEsMSAwIDAsMCA1LDE3QTEsMSAwIDAsMCA2LDE2TTEzLDE2QTEsMSAwIDAsMCAxMiwxNUExLDEgMCAwLDAgMTEsMTZBMSwxIDAgMCwwIDEyLDE3QTEsMSAwIDAsMCAxMywxNk0yMCwxNkExLDEgMCAwLDAgMTksMTVBMSwxIDAgMCwwIDE4LDE2QTEsMSAwIDAsMCAxOSwxN0ExLDEgMCAwLDAgMjAsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFua2VyVHJ1Y2sgPSBcIk0yMCA4SDE1VjE0SDJWMTdIM0MzIDE4LjcgNC4zIDIwIDYgMjBTOSAxOC43IDkgMTdIMTVDMTUgMTguNyAxNi4zIDIwIDE4IDIwUzIxIDE4LjcgMjEgMTdIMjNWMTJMMjAgOE02IDE4LjVDNS4yIDE4LjUgNC41IDE3LjggNC41IDE3UzUuMiAxNS41IDYgMTUuNSA3LjUgMTYuMiA3LjUgMTcgNi44IDE4LjUgNiAxOC41TTE4IDE4LjVDMTcuMiAxOC41IDE2LjUgMTcuOCAxNi41IDE3UzE3LjIgMTUuNSAxOCAxNS41IDE5LjUgMTYuMiAxOS41IDE3IDE4LjggMTguNSAxOCAxOC41TTE3IDEyVjkuNUgxOS41TDIxLjUgMTJIMTdNMTQgOS41QzE0IDExLjQgMTIuNCAxMyAxMC41IDEzSDQuNUMyLjYgMTMgMSAxMS40IDEgOS41UzIuNiA2IDQuNSA2SDVWNUg0VjRIOFY1SDdWNkgxMC41QzEyLjQgNiAxNCA3LjYgMTQgOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcGVEcml2ZSA9IFwiTTEyIDEwQzEzLjExIDEwIDE0IDEwLjkgMTQgMTJDMTQgMTMuMTEgMTMuMTEgMTQgMTIgMTRDMTAuOSAxNCAxMCAxMy4xMSAxMCAxMkMxMCAxMC45IDEwLjkgMTAgMTIgMTBNNSAzSDE5QzIwLjExIDMgMjEgMy45IDIxIDVWMTdIMTYuOUMxOC4yIDE1LjczIDE5IDEzLjk2IDE5IDEyQzE5IDguMTMgMTUuODcgNSAxMiA1QzguMTMgNSA1IDguMTMgNSAxMkM1IDE1Ljg3IDguMTMgMTkgMTIgMTlIMjFDMjEgMjAuMTEgMjAuMTEgMjEgMTkgMjFINUMzLjkgMjEgMyAyMC4xMSAzIDE5VjVDMyAzLjkgMy45IDMgNSAzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcGVNZWFzdXJlID0gXCJNOSw1QTcsNyAwIDAsMSAxNiwxMkgxN1YxNUgxNlYxOUg5QTcsNyAwIDAsMSAyLDEyQTcsNyAwIDAsMSA5LDVNOSw4QTQsNCAwIDAsMCA1LDEyQTQsNCAwIDAsMCA5LDE2QTQsNCAwIDAsMCAxMywxMkE0LDQgMCAwLDAgOSw4TTE3LDE3SDIyVjE5TDIyLDIxSDIwVjE5SDE3VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcmdldCA9IFwiTTExLDJWNC4wN0M3LjM4LDQuNTMgNC41Myw3LjM4IDQuMDcsMTFIMlYxM0g0LjA3QzQuNTMsMTYuNjIgNy4zOCwxOS40NyAxMSwxOS45M1YyMkgxM1YxOS45M0MxNi42MiwxOS40NyAxOS40NywxNi42MiAxOS45MywxM0gyMlYxMUgxOS45M0MxOS40Nyw3LjM4IDE2LjYyLDQuNTMgMTMsNC4wN1YyTTExLDYuMDhWOEgxM1Y2LjA5QzE1LjUsNi41IDE3LjUsOC41IDE3LjkyLDExSDE2VjEzSDE3LjkxQzE3LjUsMTUuNSAxNS41LDE3LjUgMTMsMTcuOTJWMTZIMTFWMTcuOTFDOC41LDE3LjUgNi41LDE1LjUgNi4wOCwxM0g4VjExSDYuMDlDNi41LDguNSA4LjUsNi41IDExLDYuMDhNMTIsMTFBMSwxIDAgMCwwIDExLDEyQTEsMSAwIDAsMCAxMiwxM0ExLDEgMCAwLDAgMTMsMTJBMSwxIDAgMCwwIDEyLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRhcmdldEFjY291bnQgPSBcIk0yMC45NSwxMUgyMi41VjEzSDIwLjk1QzIwLjUsMTcuMTcgMTcuMTcsMjAuNSAxMywyMC45NVYyMi41SDExVjIwLjk1QzYuODMsMjAuNSAzLjUsMTcuMTcgMy4wNSwxM0gxLjVWMTFIMy4wNUMzLjUsNi44MyA2LjgzLDMuNSAxMSwzLjA1VjEuNUgxM1YzLjA1QzE3LjE3LDMuNSAyMC41LDYuODMgMjAuOTUsMTFNNS4wNywxMUg2LjVWMTNINS4wN0M1LjUsMTYuMDcgNy45MywxOC41IDExLDE4LjkzVjE3LjVIMTNWMTguOTNDMTYuMDcsMTguNSAxOC41LDE2LjA3IDE4LjkzLDEzSDE3LjVWMTFIMTguOTNDMTguNSw3LjkzIDE2LjA3LDUuNSAxMyw1LjA3VjYuNUgxMVY1LjA3QzcuOTMsNS41IDUuNSw3LjkzIDUuMDcsMTFNMTYsMTZIOFYxNUM4LDEzLjY3IDEwLjY3LDEzIDEyLDEzQzEzLjMzLDEzIDE2LDEzLjY3IDE2LDE1VjE2TTEyLDhBMiwyIDAgMCwxIDE0LDEwQTIsMiAwIDAsMSAxMiwxMkEyLDIgMCAwLDEgMTAsMTBBMiwyIDAgMCwxIDEyLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGFyZ2V0VmFyaWFudCA9IFwiTTIyLjA4LDExLjA0SDIwLjA4VjRIMTMuMDVWMkgxMS4wNFY0SDRWMTEuMDRIMlYxMy4wNUg0VjIwLjA4SDExLjA0VjIyLjA4SDEzLjA1VjIwLjA4SDIwLjA4VjEzLjA1SDIyLjA4VjExLjA0TTE4LjA3LDE4LjA3SDEzLjA1VjE2LjA2SDExLjA0VjE4LjA3SDZWMTMuMDVIOC4wM1YxMS4wNEg2VjZIMTEuMDRWOC4wM0gxMy4wNVY2SDE4LjA3VjExLjA0SDE2LjA2VjEzLjA1SDE4LjA3VjE4LjA3TTEzLjA1LDEyLjA1QTEsMSAwIDAsMSAxMi4wNSwxMy4wNUMxMS41LDEzLjA1IDExLjA0LDEyLjYgMTEuMDQsMTIuMDVDMTEuMDQsMTEuNSAxMS41LDExLjA0IDEyLjA1LDExLjA0QzEyLjYsMTEuMDQgMTMuMDUsMTEuNSAxMy4wNSwxMi4wNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUYXhpID0gXCJNNSwxMUw2LjUsNi41SDE3LjVMMTksMTFNMTcuNSwxNkExLjUsMS41IDAgMCwxIDE2LDE0LjVBMS41LDEuNSAwIDAsMSAxNy41LDEzQTEuNSwxLjUgMCAwLDEgMTksMTQuNUExLjUsMS41IDAgMCwxIDE3LjUsMTZNNi41LDE2QTEuNSwxLjUgMCAwLDEgNSwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDEzQTEuNSwxLjUgMCAwLDEgOCwxNC41QTEuNSwxLjUgMCAwLDEgNi41LDE2TTE4LjkyLDZDMTguNzIsNS40MiAxOC4xNiw1IDE3LjUsNUgxNVYzSDlWNUg2LjVDNS44NCw1IDUuMjgsNS40MiA1LjA4LDZMMywxMlYyMEExLDEgMCAwLDAgNCwyMUg1QTEsMSAwIDAsMCA2LDIwVjE5SDE4VjIwQTEsMSAwIDAsMCAxOSwyMUgyMEExLDEgMCAwLDAgMjEsMjBWMTJMMTguOTIsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUZWEgPSBcIk00LDE5SDIwVjIxSDRWMTlNMjAsOFY1SDE4VjhIMjBNMjAsM0MyMC42LDMgMjEsMy4yIDIxLjQsMy42QzIxLjgsNCAyMiw0LjUgMjIsNVY4QzIyLDguNiAyMS44LDkgMjEuNCw5LjRDMjEsOS44IDIwLjYsMTAgMjAsMTBIMThWMTNDMTgsMTQuMSAxNy42LDE1IDE2LjgsMTUuOEMxNiwxNi42IDE1LjEsMTcgMTQsMTdIOEM2LjksMTcgNiwxNi42IDUuMiwxNS44QzQuNCwxNSA0LDE0LjEgNCwxM1YzSDlWNS40TDcuMiw2LjhDNy4xLDYuOSA3LDcuMSA3LDcuMlYxMS41QzcsMTEuOCA3LjIsMTIgNy41LDEySDExLjVDMTEuOCwxMiAxMiwxMS44IDEyLDExLjVWNy4yQzEyLDcgMTEuOSw2LjkgMTEuOCw2LjhMMTAsNS40VjNIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVhT3V0bGluZSA9IFwiTTQsMTlIMjBWMjFINFYxOU0yMS40LDMuNkMyMSwzLjIgMjAuNiwzIDIwLDNINFYxM0M0LDE0LjEgNC40LDE1IDUuMiwxNS44QzYsMTYuNiA2LjksMTcgOCwxN0gxNEMxNS4xLDE3IDE2LDE2LjYgMTYuOCwxNS44QzE3LjYsMTUgMTgsMTQuMSAxOCwxM1YxMEgyMEMyMC42LDEwIDIxLDkuOCAyMS40LDkuNEMyMS44LDkgMjIsOC42IDIyLDhWNUMyMiw0LjUgMjEuOCw0IDIxLjQsMy42TTE2LDVWOEwxNiwxMFYxM0MxNiwxMy42IDE1LjgsMTQgMTUuNCwxNC40QzE1LDE0LjggMTQuNiwxNSAxNCwxNUg4QzcuNCwxNSA3LDE0LjggNi42LDE0LjRDNi4yLDE0IDYsMTMuNSA2LDEzVjVIMTBWNi40TDguMiw3LjhDOCw3LjkgOCw4LjEgOCw4LjJWMTIuNUM4LDEyLjggOC4yLDEzIDguNSwxM0gxMi41QzEyLjgsMTMgMTMsMTIuOCAxMywxMi41VjguMkMxMyw4IDEyLjksNy45IDEyLjgsNy44TDExLDYuNFY1SDE2TTIwLDhIMThWNUgyMFY4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlYWNoID0gXCJNMjAsMTdBMiwyIDAgMCwwIDIyLDE1VjRBMiwyIDAgMCwwIDIwLDJIOS40NkM5LjgxLDIuNjEgMTAsMy4zIDEwLDRIMjBWMTVIMTFWMTdNMTUsN1Y5SDlWMjJIN1YxNkg1VjIySDNWMTRIMS41VjlBMiwyIDAgMCwxIDMuNSw3SDE1TTgsNEEyLDIgMCAwLDEgNiw2QTIsMiAwIDAsMSA0LDRBMiwyIDAgMCwxIDYsMkEyLDIgMCAwLDEgOCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlYW12aWV3ZXIgPSBcIk0xMC4wNCA5LjJMOS4zIDExSDE0Ljc1TDE0IDkuMkwxOS41NSAxMkwxNCAxNC44TDE0Ljc1IDEzSDkuM0wxMC4wNCAxNC44TDQuNSAxMkwxMC4wNCA5LjJNMjAuODMgMjJIMy4xN0MyLjUzIDIyIDIgMjEuNSAyIDIwLjgzVjMuMTdDMiAyLjUzIDIuNTMgMiAzLjE3IDJIMjAuODNDMjEuNSAyIDIyIDIuNTMgMjIgMy4xN1YyMC44M0MyMiAyMS40NyAyMS41IDIyIDIwLjgzIDIyTTExLjkzIDMuNzZDNy40MSAzLjgyIDMuNzggNy41IDMuNzYgMTJDMy43MiAxNi41IDcuMzUgMjAuMiAxMS44NiAyMC4yNEgxMkMxNi41MyAyMC4xOCAyMC4xOCAxNi41MyAyMC4yNCAxMkMyMC4zMSA3LjUgMTYuNzQgMy44MyAxMi4yNiAzLjc2QzEyLjE1IDMuNzUgMTIuMDQgMy43NiAxMS45MyAzLjc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGVncmFtID0gXCJNOS43OCwxOC42NUwxMC4wNiwxNC40MkwxNy43NCw3LjVDMTguMDgsNy4xOSAxNy42Nyw3LjA0IDE3LjIyLDcuMzFMNy43NCwxMy4zTDMuNjQsMTJDMi43NiwxMS43NSAyLjc1LDExLjE0IDMuODQsMTAuN0wxOS44MSw0LjU0QzIwLjU0LDQuMjEgMjEuMjQsNC43MiAyMC45Niw1Ljg0TDE4LjI0LDE4LjY1QzE4LjA1LDE5LjU2IDE3LjUsMTkuNzggMTYuNzQsMTkuMzZMMTIuNiwxNi4zTDEwLjYxLDE4LjIzQzEwLjM4LDE4LjQ2IDEwLjE5LDE4LjY1IDkuNzgsMTguNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXNjb3BlID0gXCJNMjEuOSw4LjlMMjAuMiw5LjlMMTYuMiwzTDE3LjksMkwyMS45LDguOU05LjgsNy45TDEyLjgsMTMuMUwxOC45LDkuNkwxNS45LDQuNEw5LjgsNy45TTExLjQsMTIuN0w5LjQsOS4yTDUuMSwxMS43TDcuMSwxNS4yTDExLjQsMTIuN00yLjEsMTQuNkwzLjEsMTYuM0w1LjcsMTQuOEw0LjcsMTMuMUwyLjEsMTQuNk0xMi4xLDE0TDExLjgsMTMuNkw3LjUsMTYuMUw3LjgsMTYuNUM4LDE2LjggOC4zLDE3LjEgOC42LDE3LjNMNywyMkg5TDEwLjQsMTcuN0gxMC41TDEyLDIySDE0TDEyLjEsMTYuNEMxMi42LDE1LjcgMTIuNiwxNC44IDEyLjEsMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbiA9IFwiTTIxLDE3SDNWNUgyMU0yMSwzSDNBMiwyIDAgMCwwIDEsNVYxN0EyLDIgMCAwLDAgMywxOUg4VjIxSDE2VjE5SDIxQTIsMiAwIDAsMCAyMywxN1Y1QTIsMiAwIDAsMCAyMSwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25BbWJpZW50TGlnaHQgPSBcIk0zIDExSDBWOUgzVjExTTMgMTRIMFYxNkgzVjE0TTUgNS4xMkwyLjg4IDNMMS40NiA0LjQxTDMuNTkgNi41NEw1IDUuMTJNMTAgNVYySDhWNUgxME0yNCA5SDIxVjExSDI0VjlNMTYgNVYySDE0VjVIMTZNMjAuNDEgNi41NEwyMi41NCA0LjQyTDIxLjEyIDNMMTkgNS4xMkwyMC40MSA2LjU0TTI0IDE0SDIxVjE2SDI0VjE0TTE5IDlWMTZDMTkgMTcuMSAxOC4xIDE4IDE3IDE4SDE1VjIwSDlWMThIN0M1LjkgMTggNSAxNy4xIDUgMTZWOUM1IDcuOSA1LjkgNyA3IDdIMTdDMTguMSA3IDE5IDcuOSAxOSA5TTE3IDlIN1YxNkgxN1Y5TTE5IDE5Ljg4TDIxLjEyIDIyTDIyLjU0IDIwLjU5TDIwLjQxIDE4LjQ3TDE5IDE5Ljg4TTMuNTkgMTguNDZMMS40NyAyMC41OUwyLjg4IDIyTDUgMTkuODhMMy41OSAxOC40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlUZWxldmlzaW9uQm94ID0gXCJNNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjE5QTIsMiAwIDAsMSAxOSwyMUg1QTIsMiAwIDAsMSAzLDE5VjVBMiwyIDAgMCwxIDUsM00xNiwxNkwxOSw4SDE2LjVMMTUsMTIuNUwxMy41LDhINVYxMEg4VjE2SDEwVjEwSDExLjc3TDE0LDE2SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25DbGFzc2ljID0gXCJNOC4xNiwzTDYuNzUsNC40MUw5LjM0LDdINEMyLjg5LDcgMiw3Ljg5IDIsOVYxOUMyLDIwLjExIDIuODksMjEgNCwyMUgyMEMyMS4xMSwyMSAyMiwyMC4xMSAyMiwxOVY5QzIyLDcuODkgMjEuMTEsNyAyMCw3SDE0LjY2TDE3LjI1LDQuNDFMMTUuODQsM0wxMiw2Ljg0TDguMTYsM000LDlIMTdWMTlINFY5TTE5LjUsOUExLDEgMCAwLDEgMjAuNSwxMEExLDEgMCAwLDEgMTkuNSwxMUExLDEgMCAwLDEgMTguNSwxMEExLDEgMCAwLDEgMTkuNSw5TTE5LjUsMTJBMSwxIDAgMCwxIDIwLjUsMTNBMSwxIDAgMCwxIDE5LjUsMTRBMSwxIDAgMCwxIDE4LjUsMTNBMSwxIDAgMCwxIDE5LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbkNsYXNzaWNPZmYgPSBcIk0yLDUuMjdMMy4yOCw0TDIxLDIxLjcyTDE5LjczLDIzTDE3LjczLDIxSDRDMi44OSwyMSAyLDIwLjExIDIsMTlWOUMyLDggMi43Niw3LjE0IDMuNzUsN0wyLDUuMjdNOC4xNiwzTDEyLDYuODRMMTUuODQsM0wxNy4yNSw0LjQxTDE0LjY2LDdIMjBDMjEuMTEsNyAyMiw3Ljg5IDIyLDlWMTlDMjIsMTkuMzQgMjEuOTIsMTkuNjYgMjEuNzcsMTkuOTRMMTcsMTUuMThWOUgxMC44Mkw4LjgyLDdIOS4zNEw2Ljc1LDQuNDFMOC4xNiwzTTQsOVYxOUgxNS43M0w1LjczLDlINE0xOS41LDlBMSwxIDAgMCwwIDE4LjUsMTBBMSwxIDAgMCwwIDE5LjUsMTFBMSwxIDAgMCwwIDIwLjUsMTBBMSwxIDAgMCwwIDE5LjUsOU0xOS41LDEyQTEsMSAwIDAsMCAxOC41LDEzQTEsMSAwIDAsMCAxOS41LDE0QTEsMSAwIDAsMCAyMC41LDEzQTEsMSAwIDAsMCAxOS41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25DbGVhbiA9IFwiTTIxIDE3SDNWNUgyMU0yMSAzSDNDMS45IDMgMSAzLjkgMSA1VjE3QzEgMTguMTEgMS45IDE5IDMgMTlIOFYyMUgxNlYxOUgyMUMyMi4xMSAxOSAyMyAxOC4xMSAyMyAxN1Y1QzIzIDMuOSAyMi4xMSAzIDIxIDNNMTUgNi41TDE0LjM4IDcuODdMMTMgOC41TDE0LjM4IDkuMTNMMTUgMTAuNUwxNS42MyA5LjEzTDE3IDguNUwxNS42MyA3Ljg3TDE1IDYuNU0xMC41IDguNUw5LjQxIDEwLjkxTDcgMTJMOS40MSAxMy4wOUwxMC41IDE1LjVMMTEuNiAxMy4wOUwxNCAxMkwxMS42IDEwLjkxTDEwLjUgOC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbkd1aWRlID0gXCJNMjEsMTdWNUgzVjE3SDIxTTIxLDNBMiwyIDAgMCwxIDIzLDVWMTdBMiwyIDAgMCwxIDIxLDE5SDE2VjIxSDhWMTlIM0EyLDIgMCAwLDEgMSwxN1Y1QTIsMiAwIDAsMSAzLDNIMjFNNSw3SDExVjExSDVWN001LDEzSDExVjE1SDVWMTNNMTMsN0gxOVY5SDEzVjdNMTMsMTFIMTlWMTVIMTNWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvbk9mZiA9IFwiTTAuNSwyLjc3TDEuNzgsMS41TDIxLDIwLjcyTDE5LjczLDIyTDE2LjczLDE5SDE2VjIxSDhWMTlIM0EyLDIgMCAwLDEgMSwxN1Y1QzEsNC41IDEuMTcsNC4wNyAxLjQ2LDMuNzNMMC41LDIuNzdNMjEsMTdWNUg3LjgyTDUuODIsM0gyMUEyLDIgMCAwLDEgMjMsNVYxN0MyMywxNy44NSAyMi40NSwxOC41OSAyMS43LDE4Ljg3TDE5LjgyLDE3SDIxTTMsMTdIMTQuNzNMMyw1LjI3VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25QYXVzZSA9IFwiTTMgM0MxLjg5IDMgMSAzLjg5IDEgNVYxN0MxIDE4LjEgMS45IDE5IDMgMTlIOFYyMUgxNlYxOUgyMUMyMi4xIDE5IDIzIDE4LjEgMjMgMTdWNUMyMyAzLjg5IDIyLjEgMyAyMSAzTTMgNUgyMVYxN0gzTTkgOFYxNEgxMVY4TTEzIDhWMTRIMTVWOFwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbGV2aXNpb25QbGF5ID0gXCJNMjEsM0gzQzEuODksMyAxLDMuODkgMSw1VjE3QTIsMiAwIDAsMCAzLDE5SDhWMjFIMTZWMTlIMjFBMiwyIDAgMCwwIDIzLDE3VjVDMjMsMy44OSAyMi4xLDMgMjEsM00yMSwxN0gzVjVIMjFNMTYsMTFMOSwxNVY3XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVsZXZpc2lvblN0b3AgPSBcIk0zIDNIMjFDMjIuMSAzIDIzIDMuODkgMjMgNVYxN0MyMyAxOC4xIDIyLjEgMTkgMjEgMTlIMTZWMjFIOFYxOUgzQzEuOSAxOSAxIDE4LjEgMSAxN1Y1QzEgMy44OSAxLjg5IDMgMyAzTTMgNVYxN0gyMVY1SDNNOSA4SDE1VjE0SDlWOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUZW1wZXJhdHVyZUNlbHNpdXMgPSBcIk0xNi41LDVDMTguMDUsNSAxOS41LDUuNDcgMjAuNjksNi4yOEwxOS41Myw5LjE3QzE4LjczLDguNDQgMTcuNjcsOCAxNi41LDhDMTQsOCAxMiwxMCAxMiwxMi41QzEyLDE1IDE0LDE3IDE2LjUsMTdDMTcuNTMsMTcgMTguNDcsMTYuNjYgMTkuMjMsMTYuMDhMMjAuMzcsMTguOTNDMTkuMjQsMTkuNjEgMTcuOTIsMjAgMTYuNSwyMEE3LjUsNy41IDAgMCwxIDksMTIuNUE3LjUsNy41IDAgMCwxIDE2LjUsNU02LDNBMywzIDAgMCwxIDksNkEzLDMgMCAwLDEgNiw5QTMsMyAwIDAsMSAzLDZBMywzIDAgMCwxIDYsM002LDVBMSwxIDAgMCwwIDUsNkExLDEgMCAwLDAgNiw3QTEsMSAwIDAsMCA3LDZBMSwxIDAgMCwwIDYsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZW1wZXJhdHVyZUZhaHJlbmhlaXQgPSBcIk0xMSwyMFY1SDIwVjhIMTRWMTFIMTlWMTRIMTRWMjBIMTFNNiwzQTMsMyAwIDAsMSA5LDZBMywzIDAgMCwxIDYsOUEzLDMgMCAwLDEgMyw2QTMsMyAwIDAsMSA2LDNNNiw1QTEsMSAwIDAsMCA1LDZBMSwxIDAgMCwwIDYsN0ExLDEgMCAwLDAgNyw2QTEsMSAwIDAsMCA2LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVtcGVyYXR1cmVLZWx2aW4gPSBcIk03LDVIMTBWMTFMMTUsNUgxOUwxMy44OCwxMC43OEwxOSwyMEgxNS4zOEwxMS43NiwxMy4xN0wxMCwxNS4xNVYyMEg3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVubmlzID0gXCJNMTgsMTVBNCw0IDAgMCwxIDIyLDE5QTQsNCAwIDAsMSAxOCwyM0E0LDQgMCAwLDEgMTQsMTlBNCw0IDAgMCwxIDE4LDE1TTE4LDE3QTIsMiAwIDAsMCAxNiwxOUEyLDIgMCAwLDAgMTgsMjFBMiwyIDAgMCwwIDIwLDE5QTIsMiAwIDAsMCAxOCwxN002LjA1LDE0LjU0QzYuMDUsMTQuNTQgNy40NiwxMy4xMiA3LjQ3LDEwLjNDNy4xMSw4LjExIDcuOTcsNS41NCA5Ljk0LDMuNThDMTIuODcsMC42NSAxNy4xNCwwLjE3IDE5LjUsMi41QzIxLjgzLDQuODYgMjEuMzUsOS4xMyAxOC40MiwxMi4wNkMxNi40NiwxNC4wMyAxMy44OSwxNC44OSAxMS43LDE0LjUzQzguODgsMTQuNTQgNy40NiwxNS45NSA3LjQ2LDE1Ljk1TDMuMjIsMjAuMTlMMS44MSwxOC43OEw2LjA1LDE0LjU0TTE4LjA3LDMuOTNDMTYuNSwyLjM3IDEzLjUsMi44NCAxMS4zNSw1QzkuMjEsNy4xNCA4LjczLDEwLjE1IDEwLjI5LDExLjcxQzExLjg2LDEzLjI3IDE0Ljg2LDEyLjc5IDE3LDEwLjY1QzE5LjE2LDguNSAxOS42Myw1LjUgMTguMDcsMy45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlUZW5uaXNCYWxsID0gXCJNMTIsMkMxNC41LDIgMTYuNzUsMi45IDE4LjUsNC40QzE2LjM2LDYuMjMgMTUsOC45NiAxNSwxMkMxNSwxNS4wNCAxNi4zNiwxNy43NyAxOC41LDE5LjZDMTYuNzUsMjEuMSAxNC41LDIyIDEyLDIyQzkuNSwyMiA3LjI1LDIxLjEgNS41LDE5LjZDNy42NCwxNy43NyA5LDE1LjA0IDksMTJDOSw4Ljk2IDcuNjQsNi4yMyA1LjUsNC40QzcuMjUsMi45IDkuNSwyIDEyLDJNMjIsMTJDMjIsMTQuMzIgMjEuMjEsMTYuNDUgMTkuODgsMTguMTVDMTguMTIsMTYuNjggMTcsMTQuNDcgMTcsMTJDMTcsOS41MyAxOC4xMiw3LjMyIDE5Ljg4LDUuODVDMjEuMjEsNy41NSAyMiw5LjY4IDIyLDEyTTIsMTJDMiw5LjY4IDIuNzksNy41NSA0LjEyLDUuODVDNS44OCw3LjMyIDcsOS41MyA3LDEyQzcsMTQuNDcgNS44OCwxNi42OCA0LjEyLDE4LjE1QzIuNzksMTYuNDUgMiwxNC4zMiAyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlbnQgPSBcIk00LDZDNCw3LjE5IDQuMzksOC4yNyA1LDlBMywzIDAgMCwxIDIsNkEzLDMgMCAwLDEgNSwzQzQuMzksMy43MyA0LDQuODEgNCw2TTIsMjFWMTlINC43NkwxMiw0Ljc4TDE5LjI0LDE5SDIyVjIxSDJNMTIsOS4xOUw3LDE5SDE3TDEyLDkuMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVycmFmb3JtID0gXCJNMjEgNS40VjExLjhMMTUuNCAxNVY4LjdMMjEgNS40TTE0LjggOC43VjE1TDkuMiAxMS44VjUuNEwxNC44IDguN00xNC44IDE1LjdWMjIuMUw5LjIgMTguOVYxMi41TDE0LjggMTUuN004LjYgNS4xVjExLjVMMyA4LjNWMS45TDguNiA1LjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVycmFpbiA9IFwiTTE0LDZMMTAuMjUsMTFMMTMuMSwxNC44TDExLjUsMTZDOS44MSwxMy43NSA3LDEwIDcsMTBMMSwxOEgyM0wxNCw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRlc3RUdWJlID0gXCJNNywyVjRIOFYxOEE0LDQgMCAwLDAgMTIsMjJBNCw0IDAgMCwwIDE2LDE4VjRIMTdWMkg3TTExLDE2QzEwLjQsMTYgMTAsMTUuNiAxMCwxNUMxMCwxNC40IDEwLjQsMTQgMTEsMTRDMTEuNiwxNCAxMiwxNC40IDEyLDE1QzEyLDE1LjYgMTEuNiwxNiAxMSwxNk0xMywxMkMxMi40LDEyIDEyLDExLjYgMTIsMTFDMTIsMTAuNCAxMi40LDEwIDEzLDEwQzEzLjYsMTAgMTQsMTAuNCAxNCwxMUMxNCwxMS42IDEzLjYsMTIgMTMsMTJNMTQsN0gxMFY0SDE0VjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGVzdFR1YmVFbXB0eSA9IFwiTTcsMkgxN1Y0SDE2VjE4QTQsNCAwIDAsMSAxMiwyMkE0LDQgMCAwLDEgOCwxOFY0SDdWMk0xNCw0SDEwVjE4QTIsMiAwIDAsMCAxMiwyMEEyLDIgMCAwLDAgMTQsMThWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXN0VHViZU9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTUuODQsMTkuMTFDMTUuMzYsMjAuNzcgMTMuODIsMjIgMTIsMjJBNCw0IDAgMCwxIDgsMThWMTEuMjdMMiw1LjI3TTcsMkgxN1Y0SDE2VjE0LjE4TDEzLjYzLDExLjgxQzEzLjg2LDExLjYzIDE0LDExLjM1IDE0LDExQzE0LDEwLjQgMTMuNiwxMCAxMywxMEMxMi42NSwxMCAxMi4zNywxMC4xNCAxMi4xOSwxMC4zN0w4LDYuMThWNEg3VjJNMTEsMTZDMTEuNSwxNiAxMS44OCwxNS43MSAxMiwxNS4yNEwxMC43NiwxNEMxMC4yOSwxNC4xMiAxMCwxNC41IDEwLDE1QzEwLDE1LjYgMTAuNCwxNiAxMSwxNk0xNCw3VjRIMTBWN0gxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0ID0gXCJNMjEsNlY4SDNWNkgyMU0zLDE4SDEyVjE2SDNWMThNMywxM0gyMVYxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRBY2NvdW50ID0gXCJNMjEgNVY3SDNWNUgyMU0zIDE3SDEyVjE1SDNWMTdNMyAxMkgyMVYxMEgzVjEyTTE4IDE0QzE5LjExIDE0IDIwIDE0LjkgMjAgMTZTMTkuMTEgMTggMTggMTggMTYgMTcuMTEgMTYgMTYgMTYuOSAxNCAxOCAxNE0xNCAyMlYyMUMxNCAxOS45IDE1Ljc5IDE5IDE4IDE5UzIyIDE5LjkgMjIgMjFWMjJIMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveCA9IFwiTTE0LDE3SDdWMTVIMTRNMTcsMTNIN1YxMUgxN00xNyw5SDdWN0gxN00xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94Q2hlY2sgPSBcIk0xNywyMUwxNC4yNSwxOEwxNS40MSwxNi44NEwxNywxOC40M0wyMC41OSwxNC44NEwyMS43NSwxNi4yNU0xMi44LDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjEyLjhDMjAuMTIsMTIuMjkgMTkuMDksMTIgMTgsMTJMMTcsMTIuMDhWMTFIN1YxM0gxNC42OUMxMy4wNywxNC4wNyAxMiwxNS45MSAxMiwxOEMxMiwxOS4wOSAxMi4yOSwyMC4xMiAxMi44LDIxTTEyLDE1SDdWMTdIMTJNMTcsN0g3VjlIMTdcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94Q2hlY2tPdXRsaW5lID0gXCJNMTcsMjFMMTQuMjUsMThMMTUuNDEsMTYuODRMMTcsMTguNDNMMjAuNTksMTQuODRMMjEuNzUsMTYuMjVNMTIuOCwyMUg1QzMuODksMjEgMywyMC4xMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlDMjAuMTEsMyAyMSwzLjg5IDIxLDVWMTIuOEMyMC4zOSwxMi40NSAxOS43MiwxMi4yIDE5LDEyLjA4VjVINVYxOUgxMi4wOEMxMi4yLDE5LjcyIDEyLjQ1LDIwLjM5IDEyLjgsMjFNMTIsMTdIN1YxNUgxMk0xNC42OCwxM0g3VjExSDE3VjEyLjA4QzE2LjE1LDEyLjIyIDE1LjM3LDEyLjU0IDE0LjY4LDEzTTE3LDlIN1Y3SDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveE1pbnVzID0gXCJNMjIsMTdWMTlIMTRWMTdIMjJNMTIsMTdWMTVIN1YxN0gxMk0xNywxMUg3VjEzSDE0LjY5QzEzLjA3LDE0LjA3IDEyLDE1LjkxIDEyLDE4QzEyLDE5LjA5IDEyLjI5LDIwLjEyIDEyLjgsMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTIuOEMyMC4xMiwxMi4yOSAxOS4wOSwxMiAxOCwxMkwxNywxMi4wOFYxMU0xNyw5VjdIN1Y5SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRCb3hNaW51c091dGxpbmUgPSBcIk0yMiwxN1YxOUgxNFYxN0gyMk01LDNIMTlDMjAuMTEsMyAyMSwzLjg5IDIxLDVWMTIuOEMyMC4zOSwxMi40NSAxOS43MiwxMi4yIDE5LDEyLjA4VjVINVYxOUgxMi4wOEMxMi4yLDE5LjcyIDEyLjQ1LDIwLjM5IDEyLjgsMjFINUMzLjg5LDIxIDMsMjAuMTEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzTTcsN0gxN1Y5SDdWN003LDExSDE3VjEyLjA4QzE2LjE1LDEyLjIyIDE1LjM3LDEyLjU0IDE0LjY4LDEzSDdWMTFNNywxNUgxMlYxN0g3VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRCb3hNdWx0aXBsZSA9IFwiTTE2LDE1SDlWMTNIMTZNMTksMTFIOVY5SDE5TTE5LDdIOVY1SDE5TTIxLDFIN0M1Ljg5LDEgNSwxLjg5IDUsM1YxN0M1LDE4LjExIDUuOSwxOSA3LDE5SDIxQzIyLjExLDE5IDIzLDE4LjExIDIzLDE3VjNDMjMsMS44OSAyMi4xLDEgMjEsMU0zLDVWMjFIMTlWMjNIM0EyLDIgMCAwLDEgMSwyMVY1SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveE11bHRpcGxlT3V0bGluZSA9IFwiTTE2LDE1SDlWMTNIMTZWMTVNMTksMTFIOVY5SDE5VjExTTE5LDdIOVY1SDE5VjdNMyw1VjIxSDE5VjIzSDNBMiwyIDAgMCwxIDEsMjFWNUgzTTIxLDFBMiwyIDAgMCwxIDIzLDNWMTdDMjMsMTguMTEgMjIuMTEsMTkgMjEsMTlIN0EyLDIgMCAwLDEgNSwxN1YzQzUsMS44OSA1Ljg5LDEgNywxSDIxTTcsM1YxN0gyMVYzSDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveE91dGxpbmUgPSBcIk01LDNDMy44OSwzIDMsMy44OSAzLDVWMTlDMywyMC4xMSAzLjg5LDIxIDUsMjFIMTlDMjAuMTEsMjEgMjEsMjAuMTEgMjEsMTlWNUMyMSwzLjg5IDIwLjExLDMgMTksM0g1TTUsNUgxOVYxOUg1VjVNNyw3VjlIMTdWN0g3TTcsMTFWMTNIMTdWMTFIN003LDE1VjE3SDE0VjE1SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveFBsdXMgPSBcIk0xNywxNEgxOVYxN0gyMlYxOUgxOVYyMkgxN1YxOUgxNFYxN0gxN1YxNE0xMiwxN1YxNUg3VjE3SDEyTTE3LDExSDdWMTNIMTQuNjlDMTMuMDcsMTQuMDcgMTIsMTUuOTEgMTIsMThDMTIsMTkuMDkgMTIuMjksMjAuMTIgMTIuOCwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM0gxOUEyLDIgMCAwLDEgMjEsNVYxMi44QzIwLjEyLDEyLjI5IDE5LjA5LDEyIDE4LDEyTDE3LDEyLjA4VjExTTE3LDlWN0g3VjlIMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dEJveFBsdXNPdXRsaW5lID0gXCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNNSwzSDE5QzIwLjExLDMgMjEsMy44OSAyMSw1VjEyLjhDMjAuMzksMTIuNDUgMTkuNzIsMTIuMiAxOSwxMi4wOFY1SDVWMTlIMTIuMDhDMTIuMiwxOS43MiAxMi40NSwyMC4zOSAxMi44LDIxSDVDMy44OSwyMSAzLDIwLjExIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM003LDdIMTdWOUg3VjdNNywxMUgxN1YxMi4wOEMxNi4xNSwxMi4yMiAxNS4zNywxMi41NCAxNC42OCwxM0g3VjExTTcsMTVIMTJWMTdIN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94UmVtb3ZlID0gXCJNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhNMTIsMTdWMTVIN1YxN0gxMk0xNywxMUg3VjEzSDE0LjY5QzEzLjA3LDE0LjA3IDEyLDE1LjkxIDEyLDE4QzEyLDE5LjA5IDEyLjI5LDIwLjEyIDEyLjgsMjFINUMzLjg5LDIxIDMsMjAuMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNIMTlBMiwyIDAgMCwxIDIxLDVWMTIuOEMyMC4xMiwxMi4yOSAxOS4wOSwxMiAxOCwxMkwxNywxMi4wOFYxMU0xNyw5VjdIN1Y5SDE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRCb3hSZW1vdmVPdXRsaW5lID0gXCJNMTQuNDYsMTUuODhMMTUuODgsMTQuNDZMMTgsMTYuNTlMMjAuMTIsMTQuNDZMMjEuNTQsMTUuODhMMTkuNDEsMThMMjEuNTQsMjAuMTJMMjAuMTIsMjEuNTRMMTgsMTkuNDFMMTUuODgsMjEuNTRMMTQuNDYsMjAuMTJMMTYuNTksMThMMTQuNDYsMTUuODhNNSwzSDE5QzIwLjExLDMgMjEsMy44OSAyMSw1VjEyLjhDMjAuMzksMTIuNDUgMTkuNzIsMTIuMiAxOSwxMi4wOFY1SDVWMTlIMTIuMDhDMTIuMiwxOS43MiAxMi40NSwyMC4zOSAxMi44LDIxSDVDMy44OSwyMSAzLDIwLjExIDMsMTlWNUMzLDMuODkgMy44OSwzIDUsM003LDdIMTdWOUg3VjdNNywxMUgxN1YxMi4wOEMxNi4xNSwxMi4yMiAxNS4zNywxMi41NCAxNC42OCwxM0g3VjExTTcsMTVIMTJWMTdIN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94U2VhcmNoID0gXCJNMTUuNSwxMkMxOCwxMiAyMCwxNCAyMCwxNi41QzIwLDE3LjM4IDE5Ljc1LDE4LjIxIDE5LjMxLDE4LjlMMjIuMzksMjJMMjEsMjMuMzlMMTcuODgsMjAuMzJDMTcuMTksMjAuNzUgMTYuMzcsMjEgMTUuNSwyMUMxMywyMSAxMSwxOSAxMSwxNi41QzExLDE0IDEzLDEyIDE1LjUsMTJNMTUuNSwxNEEyLjUsMi41IDAgMCwwIDEzLDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE5QTIuNSwyLjUgMCAwLDAgMTgsMTYuNUEyLjUsMi41IDAgMCwwIDE1LjUsMTRNNywxNVYxN0g5QzkuMTQsMTguNTUgOS44LDE5Ljk0IDEwLjgxLDIxSDVDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjEzLjAzQzE5Ljg1LDExLjIxIDE3LjgyLDEwIDE1LjUsMTBDMTQuMjMsMTAgMTMuMDQsMTAuMzcgMTIuMDQsMTFIN1YxM0gxMEM5LjY0LDEzLjYgOS4zNCwxNC4yOCA5LjE3LDE1SDdNMTcsOVY3SDdWOUgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0Qm94U2VhcmNoT3V0bGluZSA9IFwiTTE1LjUsMTJDMTgsMTIgMjAsMTQgMjAsMTYuNUMyMCwxNy4zOCAxOS43NSwxOC4yMSAxOS4zMSwxOC45TDIyLjM5LDIyTDIxLDIzLjM5TDE3Ljg4LDIwLjMyQzE3LjE5LDIwLjc1IDE2LjM3LDIxIDE1LjUsMjFDMTMsMjEgMTEsMTkgMTEsMTYuNUMxMSwxNCAxMywxMiAxNS41LDEyTTE1LjUsMTRBMi41LDIuNSAwIDAsMCAxMywxNi41QTIuNSwyLjUgMCAwLDAgMTUuNSwxOUEyLjUsMi41IDAgMCwwIDE4LDE2LjVBMi41LDIuNSAwIDAsMCAxNS41LDE0TTUsM0gxOUMyMC4xMSwzIDIxLDMuODkgMjEsNVYxMy4wM0MyMC41LDEyLjIzIDE5LjgxLDExLjU0IDE5LDExVjVINVYxOUg5LjVDOS44MSwxOS43NSAxMC4yNiwyMC40MiAxMC44MSwyMUg1QzMuODksMjEgMywyMC4xMSAzLDE5VjVDMywzLjg5IDMuODksMyA1LDNNNyw3SDE3VjlIN1Y3TTcsMTFIMTIuMDNDMTEuMjMsMTEuNSAxMC41NCwxMi4xOSAxMCwxM0g3VjExTTcsMTVIOS4xN0M5LjA2LDE1LjUgOSwxNiA5LDE2LjVWMTdIN1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0UmVjb2duaXRpb24gPSBcIk0yIDRDMiAyLjkgMi45IDIgNCAySDhWNEg0VjhIMlY0TTIyIDIwQzIyIDIxLjExIDIxLjExIDIyIDIwIDIySDE2VjIwSDIwVjE2SDIyVjIwTTQgMjJDMi45IDIyIDIgMjEuMTEgMiAyMFYxNkg0VjIwSDhWMjJINE0yMCAyQzIxLjExIDIgMjIgMi45IDIyIDRWOEgyMFY0SDE2VjJIMjBNOSA3VjlIMTFWMTdIMTNWOUgxNVY3SDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFNlYXJjaCA9IFwiTTE5LjMxIDE4LjlMMjIuMzkgMjJMMjEgMjMuMzlMMTcuODggMjAuMzJDMTcuMTkgMjAuNzUgMTYuMzcgMjEgMTUuNSAyMUMxMyAyMSAxMSAxOSAxMSAxNi41QzExIDE0IDEzIDEyIDE1LjUgMTJDMTggMTIgMjAgMTQgMjAgMTYuNUMyMCAxNy4zOCAxOS43NSAxOC4yMSAxOS4zMSAxOC45TTE1LjUgMTlDMTYuODggMTkgMTggMTcuODggMTggMTYuNUMxOCAxNS4xMiAxNi44OCAxNCAxNS41IDE0QzE0LjEyIDE0IDEzIDE1LjEyIDEzIDE2LjVDMTMgMTcuODggMTQuMTIgMTkgMTUuNSAxOU0yMSA0VjZIM1Y0SDIxTTMgMTZWMTRIOVYxNkgzTTMgMTFWOUgyMVYxMUgxOC45N0MxNy45NiAxMC4zNyAxNi43NyAxMCAxNS41IDEwQzE0LjIzIDEwIDEzLjA0IDEwLjM3IDEyLjAzIDExSDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFNoYWRvdyA9IFwiTTMsM0gxNlY2SDExVjE4SDhWNkgzVjNNMTIsN0gxNFY5SDEyVjdNMTUsN0gxN1Y5SDE1VjdNMTgsN0gyMFY5SDE4VjdNMTIsMTBIMTRWMTJIMTJWMTBNMTIsMTNIMTRWMTVIMTJWMTNNMTIsMTZIMTRWMThIMTJWMTZNMTIsMTlIMTRWMjFIMTJWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFNob3J0ID0gXCJNNCw5SDIwVjExSDRWOU00LDEzSDE0VjE1SDRWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dFN1YmplY3QgPSBcIk00LDVIMjBWN0g0VjVNNCw5SDIwVjExSDRWOU00LDEzSDIwVjE1SDRWMTNNNCwxN0gxNFYxOUg0VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRUb1NwZWVjaCA9IFwiTTgsN0EyLDIgMCAwLDEgMTAsOVYxNEEyLDIgMCAwLDEgOCwxNkEyLDIgMCAwLDEgNiwxNFY5QTIsMiAwIDAsMSA4LDdNMTQsMTRDMTQsMTYuOTcgMTEuODQsMTkuNDQgOSwxOS45MlYyMkg3VjE5LjkyQzQuMTYsMTkuNDQgMiwxNi45NyAyLDE0SDRBNCw0IDAgMCwwIDgsMThBNCw0IDAgMCwwIDEyLDE0SDE0TTIxLjQxLDkuNDFMMTcuMTcsMTMuNjZMMTguMTgsMTBIMTRBMiwyIDAgMCwxIDEyLDhWNEEyLDIgMCAwLDEgMTQsMkgyMEEyLDIgMCAwLDEgMjIsNFY4QzIyLDguNTUgMjEuNzgsOS4wNSAyMS40MSw5LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRleHRUb1NwZWVjaE9mZiA9IFwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTMuMzgsMTYuNjVDMTIuNTUsMTguMzUgMTAuOTMsMTkuNTkgOSwxOS45MlYyMkg3VjE5LjkyQzQuMTYsMTkuNDQgMiwxNi45NyAyLDE0SDRBNCw0IDAgMCwwIDgsMThDOS44MiwxOCAxMS4zNiwxNi43OCAxMS44NCwxNS4xMUwxMCwxMy4yN1YxNEEyLDIgMCAwLDEgOCwxNkEyLDIgMCAwLDEgNiwxNFY5LjI3TDIsNS4yN00yMS40MSw5LjQxTDE3LjE3LDEzLjY2TDE4LjE4LDEwSDE0QTIsMiAwIDAsMSAxMiw4VjRBMiwyIDAgMCwxIDE0LDJIMjBBMiwyIDAgMCwxIDIyLDRWOEMyMiw4LjU1IDIxLjc4LDkuMDUgMjEuNDEsOS40MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUZXh0dXJlID0gXCJNOS4yOSwyMUgxMi4xMkwyMSwxMi4xMlY5LjI5TTE5LDIxQzE5LjU1LDIxIDIwLjA1LDIwLjc4IDIwLjQxLDIwLjQxQzIwLjc4LDIwLjA1IDIxLDE5LjU1IDIxLDE5VjE3TDE3LDIxTTUsM0EyLDIgMCAwLDAgMyw1VjdMNywzTTExLjg4LDNMMywxMS44OFYxNC43MUwxNC43MSwzTTE5LjUsMy4wOEwzLjA4LDE5LjVDMy4xNywxOS44NSAzLjM1LDIwLjE2IDMuNTksMjAuNDFDMy44NCwyMC42NSA0LjE1LDIwLjgzIDQuNSwyMC45MkwyMC45Myw0LjVDMjAuNzQsMy44IDIwLjIsMy4yNiAxOS41LDMuMDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGV4dHVyZUJveCA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMjBDMiAyMS4xMSAyLjkgMjIgNCAyMkgyMEMyMS4xMSAyMiAyMiAyMS4xMSAyMiAyMFY0QzIyIDIuOSAyMS4xMSAyIDIwIDJNNCA2TDYgNEgxMC45TDQgMTAuOVY2TTQgMTMuN0wxMy43IDRIMTguNkw0IDE4LjZWMTMuN00yMCAxOEwxOCAyMEgxMy4xTDIwIDEzLjFWMThNMjAgMTAuM0wxMC4zIDIwSDUuNEwyMCA1LjRWMTAuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVhdGVyID0gXCJNNCwxNUg2QTIsMiAwIDAsMSA4LDE3VjE5SDlWMTdBMiwyIDAgMCwxIDExLDE1SDEzQTIsMiAwIDAsMSAxNSwxN1YxOUgxNlYxN0EyLDIgMCAwLDEgMTgsMTVIMjBBMiwyIDAgMCwxIDIyLDE3VjE5SDIzVjIySDFWMTlIMlYxN0EyLDIgMCAwLDEgNCwxNU0xMSw3TDE1LDEwTDExLDEzVjdNNCwySDIwQTIsMiAwIDAsMSAyMiw0VjEzLjU0QzIxLjQxLDEzLjE5IDIwLjczLDEzIDIwLDEzVjRINFYxM0MzLjI3LDEzIDIuNTksMTMuMTkgMiwxMy41NFY0QTIsMiAwIDAsMSA0LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlbWVMaWdodERhcmsgPSBcIk03LjUsMkM1LjcxLDMuMTUgNC41LDUuMTggNC41LDcuNUM0LjUsOS44MiA1LjcxLDExLjg1IDcuNTMsMTNDNC40NiwxMyAyLDEwLjU0IDIsNy41QTUuNSw1LjUgMCAwLDEgNy41LDJNMTkuMDcsMy41TDIwLjUsNC45M0w0LjkzLDIwLjVMMy41LDE5LjA3TDE5LjA3LDMuNU0xMi44OSw1LjkzTDExLjQxLDVMOS45Nyw2TDEwLjM5LDQuM0w5LDMuMjRMMTAuNzUsMy4xMkwxMS4zMywxLjQ3TDEyLDMuMUwxMy43MywzLjEzTDEyLjM4LDQuMjZMMTIuODksNS45M005LjU5LDkuNTRMOC40Myw4LjgxTDcuMzEsOS41OUw3LjY1LDguMjdMNi41Niw3LjQ0TDcuOTIsNy4zNUw4LjM3LDYuMDZMOC44OCw3LjMzTDEwLjI0LDcuMzZMOS4xOSw4LjIzTDkuNTksOS41NE0xOSwxMy41QTUuNSw1LjUgMCAwLDEgMTMuNSwxOUMxMi4yOCwxOSAxMS4xNSwxOC42IDEwLjI0LDE3LjkzTDE3LjkzLDEwLjI0QzE4LjYsMTEuMTUgMTksMTIuMjggMTksMTMuNU0xNC42LDIwLjA4TDE3LjM3LDE4LjkzTDE3LjEzLDIyLjI4TDE0LjYsMjAuMDhNMTguOTMsMTcuMzhMMjAuMDgsMTQuNjFMMjIuMjgsMTcuMTVMMTguOTMsMTcuMzhNMjAuMDgsMTIuNDJMMTguOTQsOS42NEwyMi4yOCw5Ljg4TDIwLjA4LDEyLjQyTTkuNjMsMTguOTNMMTIuNCwyMC4wOEw5Ljg3LDIyLjI3TDkuNjMsMTguOTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vbWV0ZXIgPSBcIk0xNSAxM1Y1QTMgMyAwIDAgMCA5IDVWMTNBNSA1IDAgMSAwIDE1IDEzTTEyIDRBMSAxIDAgMCAxIDEzIDVWOEgxMVY1QTEgMSAwIDAgMSAxMiA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRoZXJtb21ldGVyQWxlcnQgPSBcIk0xNyAxM1Y3SDE5VjEzSDE3TTE3IDE3VjE1SDE5VjE3SDE3TTEzIDEzVjVDMTMgMy4zIDExLjcgMiAxMCAyUzcgMy4zIDcgNVYxM0M0LjggMTQuNyA0LjMgMTcuOCA2IDIwUzEwLjggMjIuNyAxMyAyMSAxNS43IDE2LjIgMTQgMTRDMTMuNyAxMy42IDEzLjQgMTMuMyAxMyAxM00xMCA0QzEwLjYgNCAxMSA0LjQgMTEgNVY4SDlWNUM5IDQuNCA5LjQgNCAxMCA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRoZXJtb21ldGVyQ2hldnJvbkRvd24gPSBcIk0xNy40MSAxMi4xN0wxNC4yNCA5TDEyLjgzIDEwLjQxTDE3LjQxIDE1TDIyIDEwLjQxTDIwLjU4IDlNMTAgMTNWNUMxMCAzLjM0IDguNjYgMiA3IDJTNCAzLjM0IDQgNVYxM0MxLjc5IDE0LjY2IDEuMzQgMTcuNzkgMyAyMFM3Ljc5IDIyLjY2IDEwIDIxIDEyLjY2IDE2LjIxIDExIDE0QzEwLjcyIDEzLjYyIDEwLjM4IDEzLjI4IDEwIDEzTTcgNEM3LjU1IDQgOCA0LjQ1IDggNVY4SDZWNUM2IDQuNDUgNi40NSA0IDcgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlckNoZXZyb25VcCA9IFwiTTE3LjQxIDExLjgzTDIwLjU4IDE1TDIyIDEzLjU5TDE3LjQxIDlMMTIuODIgMTMuNTlMMTQuMjQgMTVMMTcuNDEgMTEuODNNMTAgMTNWNUMxMCAzLjM0IDguNjYgMiA3IDJTNCAzLjM0IDQgNVYxM0MxLjc5IDE0LjY2IDEuMzQgMTcuNzkgMyAyMFM3Ljc5IDIyLjY2IDEwIDIxIDEyLjY2IDE2LjIxIDExIDE0QzEwLjcyIDEzLjYyIDEwLjM4IDEzLjI4IDEwIDEzTTcgNEM3LjU1IDQgOCA0LjQ1IDggNVY4SDZWNUM2IDQuNDUgNi40NSA0IDcgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlckhpZ2ggPSBcIk0xNSAxM1Y1QTMgMyAwIDAgMCA5IDVWMTNBNSA1IDAgMSAwIDE1IDEzTTEyIDRBMSAxIDAgMCAxIDEzIDVIMTFBMSAxIDAgMCAxIDEyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vbWV0ZXJMaW5lcyA9IFwiTTE3IDNIMjFWNUgxN1YzTTE3IDdIMjFWOUgxN1Y3TTE3IDExSDIxVjEzSDE3Ljc1TDE3IDEyLjFWMTFNMjEgMTVWMTdIMTlDMTkgMTYuMzEgMTguOSAxNS42MyAxOC43MSAxNUgyMU03IDNWNUgzVjNIN003IDdWOUgzVjdIN003IDExVjEyLjFMNi4yNSAxM0gzVjExSDdNMyAxNUg1LjI5QzUuMSAxNS42MyA1IDE2LjMxIDUgMTdIM1YxNU0xNSAxM1Y1QzE1IDMuMzQgMTMuNjYgMiAxMiAyUzkgMy4zNCA5IDVWMTNDNi43OSAxNC42NiA2LjM0IDE3Ljc5IDggMjBTMTIuNzkgMjIuNjYgMTUgMjEgMTcuNjYgMTYuMjEgMTYgMTRDMTUuNzIgMTMuNjIgMTUuMzggMTMuMjggMTUgMTNNMTIgNEMxMi41NSA0IDEzIDQuNDUgMTMgNVY4SDExVjVDMTEgNC40NSAxMS40NSA0IDEyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vbWV0ZXJMb3cgPSBcIk0xNSAxM1Y1QTMgMyAwIDAgMCA5IDVWMTNBNSA1IDAgMSAwIDE1IDEzTTEyIDRBMSAxIDAgMCAxIDEzIDVWMTJIMTFWNUExIDEgMCAwIDEgMTIgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlck1pbnVzID0gXCJNMjIgMTFIMTRWMTNIMjJWMTFNMTEgMTNWNUMxMSAzLjM0IDkuNjYgMiA4IDJTNSAzLjM0IDUgNVYxM0MyLjc5IDE0LjY2IDIuMzQgMTcuNzkgNCAyMFM4Ljc5IDIyLjY2IDExIDIxIDEzLjY2IDE2LjIxIDEyIDE0QzExLjcyIDEzLjYyIDExLjM4IDEzLjI4IDExIDEzTTggNEM4LjU1IDQgOSA0LjQ1IDkgNVY4SDdWNUM3IDQuNDUgNy40NSA0IDggNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlck9mZiA9IFwiTTExIDcuOEw5IDUuOFY1QzkgMy4zNCAxMC4zNCAyIDEyIDJTMTUgMy4zNCAxNSA1VjExLjhMMTEuMiA4SDEzVjVDMTMgNC40NSAxMi41NSA0IDEyIDRTMTEgNC40NSAxMSA1VjcuOE0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDkgMTAuODlWMTNDNi43OSAxNC42NiA2LjM0IDE3Ljc5IDggMjBDOS42NiAyMi4yMSAxMi43OSAyMi42NiAxNSAyMUMxNS44NCAyMC4zNyAxNi40IDE5LjUgMTYuNzEgMTguNkwyMC44NCAyMi43M0wyMi4xMSAyMS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlUaGVybW9tZXRlclBsdXMgPSBcIk0xOSAxMVY4SDE3VjExSDE0VjEzSDE3VjE2SDE5VjEzSDIyVjExTTExIDEzVjVDMTEgMy4zNCA5LjY2IDIgOCAyUzUgMy4zNCA1IDVWMTNDMi43OSAxNC42NiAyLjM0IDE3Ljc5IDQgMjBTOC43OSAyMi42NiAxMSAyMSAxMy42NiAxNi4yMSAxMiAxNEMxMS43MiAxMy42MiAxMS4zOCAxMy4yOCAxMSAxM004IDRDOC41NSA0IDkgNC40NSA5IDVWOEg3VjVDNyA0LjQ1IDcuNDUgNCA4IDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vc3RhdCA9IFwiTTE2Ljk1LDE2Ljk1TDE0LjgzLDE0LjgzQzE1LjU1LDE0LjEgMTYsMTMuMSAxNiwxMkMxNiwxMS4yNiAxNS43OSwxMC41NyAxNS40MywxMEwxNy42LDcuODFDMTguNSw5IDE5LDEwLjQzIDE5LDEyQzE5LDEzLjkzIDE4LjIyLDE1LjY4IDE2Ljk1LDE2Ljk1TTEyLDVDMTMuNTcsNSAxNSw1LjUgMTYuMTksNi40TDE0LDguNTZDMTMuNDMsOC4yMSAxMi43NCw4IDEyLDhBNCw0IDAgMCwwIDgsMTJDOCwxMy4xIDguNDUsMTQuMSA5LjE3LDE0LjgzTDcuMDUsMTYuOTVDNS43OCwxNS42OCA1LDEzLjkzIDUsMTJBNyw3IDAgMCwxIDEyLDVNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGhlcm1vc3RhdEJveCA9IFwiTTUsM0EyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNINU0xMiw1QzEzLjU3LDUgMTUsNS41IDE2LjE5LDYuNEwxNCw4LjU2QzEzLjQzLDguMjEgMTIuNzQsOCAxMiw4QTQsNCAwIDAsMCA4LDEyQzgsMTMuMSA4LjQ1LDE0LjEgOS4xNywxNC44M0w3LjA1LDE2Ljk1QzUuNzgsMTUuNjggNSwxMy45MyA1LDEyQTcsNyAwIDAsMSAxMiw1TTE3LjYsNy44MUMxOC41LDkgMTksMTAuNDMgMTksMTJDMTksMTMuOTMgMTguMjIsMTUuNjggMTYuOTUsMTYuOTVMMTQuODMsMTQuODNDMTUuNTUsMTQuMSAxNiwxMy4xIDE2LDEyQzE2LDExLjI2IDE1Ljc5LDEwLjU3IDE1LjQzLDEwTDE3LjYsNy44MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaG91Z2h0QnViYmxlID0gXCJNMy41LDE5QTEuNSwxLjUgMCAwLDEgNSwyMC41QTEuNSwxLjUgMCAwLDEgMy41LDIyQTEuNSwxLjUgMCAwLDEgMiwyMC41QTEuNSwxLjUgMCAwLDEgMy41LDE5TTguNSwxNkEyLjUsMi41IDAgMCwxIDExLDE4LjVBMi41LDIuNSAwIDAsMSA4LjUsMjFBMi41LDIuNSAwIDAsMSA2LDE4LjVBMi41LDIuNSAwIDAsMSA4LjUsMTZNMTQuNSwxNUMxMy4zMSwxNSAxMi4yMywxNC41IDExLjUsMTMuNjVDMTAuNzcsMTQuNSA5LjY5LDE1IDguNSwxNUM2LjU0LDE1IDQuOTEsMTMuNTkgNC41NywxMS43NEMzLjA3LDExLjE2IDIsOS43IDIsOEE0LDQgMCAwLDEgNiw0QzYuMjYsNCA2LjUsNC4wMyA2Ljc3LDQuMDdDNy41LDMuNDEgOC40NSwzIDkuNSwzQzEwLjY5LDMgMTEuNzcsMy41IDEyLjUsNC4zNUMxMy4yMywzLjUgMTQuMzEsMyAxNS41LDNDMTcuNDYsMyAxOS4wOSw0LjQxIDE5LjQzLDYuMjZDMjAuOTMsNi44NCAyMiw4LjMgMjIsMTBBNCw0IDAgMCwxIDE4LDE0TDE3LjIzLDEzLjkzQzE2LjUsMTQuNTkgMTUuNTUsMTUgMTQuNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaG91Z2h0QnViYmxlT3V0bGluZSA9IFwiTTMuNSwxOUExLjUsMS41IDAgMCwxIDUsMjAuNUExLjUsMS41IDAgMCwxIDMuNSwyMkExLjUsMS41IDAgMCwxIDIsMjAuNUExLjUsMS41IDAgMCwxIDMuNSwxOU04LjUsMTZBMi41LDIuNSAwIDAsMSAxMSwxOC41QTIuNSwyLjUgMCAwLDEgOC41LDIxQTIuNSwyLjUgMCAwLDEgNiwxOC41QTIuNSwyLjUgMCAwLDEgOC41LDE2TTE0LjUsMTVDMTMuMzEsMTUgMTIuMjMsMTQuNSAxMS41LDEzLjY1QzEwLjc3LDE0LjUgOS42OSwxNSA4LjUsMTVDNi41NCwxNSA0LjkxLDEzLjU5IDQuNTcsMTEuNzRDMy4wNywxMS4xNiAyLDkuNyAyLDhBNCw0IDAgMCwxIDYsNEw2Ljc3LDQuMDdDNy41LDMuNDEgOC40NSwzIDkuNSwzQzEwLjY5LDMgMTEuNzcsMy41IDEyLjUsNC4zNUMxMy4yMywzLjUgMTQuMzEsMyAxNS41LDNDMTcuNDYsMyAxOS4wOSw0LjQxIDE5LjQzLDYuMjZDMjAuOTMsNi44NCAyMiw4LjMgMjIsMTBBNCw0IDAgMCwxIDE4LDE0TDE3LjIzLDEzLjkzQzE2LjUsMTQuNTkgMTUuNTUsMTUgMTQuNSwxNU02LDZBMiwyIDAgMCwwIDQsOEEyLDIgMCAwLDAgNiwxMEM2LjMzLDEwIDYuNjQsOS45MiA2LjkyLDkuNzhDNi42NiwxMC4xMiA2LjUsMTAuNTQgNi41LDExQTIsMiAwIDAsMCA4LjUsMTNDOS4xLDEzIDkuNjQsMTIuNzMgMTAsMTIuMzFWMTIuMzFMMTEuNDcsMTAuNjNMMTMsMTIuMzRWMTIuMzRDMTMuMzgsMTIuNzQgMTMuOTEsMTMgMTQuNSwxM0MxNS41LDEzIDE2LjMzLDEyLjI2IDE2LjUsMTEuM0MxNi44NCwxMS43MyAxNy4zOSwxMiAxOCwxMkEyLDIgMCAwLDAgMjAsMTBBMiwyIDAgMCwwIDE4LDhDMTcuNjcsOCAxNy4zNiw4LjA4IDE3LjA4LDguMjJDMTcuMzQsNy44OCAxNy41LDcuNDYgMTcuNSw3QTIsMiAwIDAsMCAxNS41LDVDMTQuOTEsNSAxNC4zOCw1LjI2IDE0LDUuNjZMMTIuNDcsNy4zN0wxMSw1LjY5VjUuNjlDMTAuNjQsNS4yNyAxMC4xLDUgOS41LDVDOC41LDUgNy42Nyw1Ljc0IDcuNSw2LjdDNy4xNiw2LjI3IDYuNjEsNiA2LDZNOC41LDE3LjVBMSwxIDAgMCwwIDcuNSwxOC41QTEsMSAwIDAsMCA4LjUsMTkuNUExLDEgMCAwLDAgOS41LDE4LjVBMSwxIDAgMCwwIDguNSwxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1iRG93biA9IFwiTTE5LDE1SDIzVjNIMTlNMTUsM0g2QzUuMTcsMyA0LjQ2LDMuNSA0LjE2LDQuMjJMMS4xNCwxMS4yN0MxLjA1LDExLjUgMSwxMS43NCAxLDEyVjE0QTIsMiAwIDAsMCAzLDE2SDkuMzFMOC4zNiwyMC41N0M4LjM0LDIwLjY3IDguMzMsMjAuNzcgOC4zMywyMC44OEM4LjMzLDIxLjMgOC41LDIxLjY3IDguNzcsMjEuOTRMOS44MywyM0wxNi40MSwxNi40MUMxNi43OCwxNi4wNSAxNywxNS41NSAxNywxNVY1QzE3LDMuODkgMTYuMSwzIDE1LDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGh1bWJEb3duT3V0bGluZSA9IFwiTTE5LDE1VjNIMjNWMTVIMTlNMTUsM0EyLDIgMCAwLDEgMTcsNVYxNUMxNywxNS41NSAxNi43OCwxNi4wNSAxNi40MSwxNi40MUw5LjgzLDIzTDguNzcsMjEuOTRDOC41LDIxLjY3IDguMzMsMjEuMyA4LjMzLDIwLjg4TDguMzYsMjAuNTdMOS4zMSwxNkgzQzEuODksMTYgMSwxNS4xIDEsMTRWMTJDMSwxMS43NCAxLjA1LDExLjUgMS4xNCwxMS4yN0w0LjE2LDQuMjJDNC40NiwzLjUgNS4xNywzIDYsM0gxNU0xNSw1SDUuOTdMMywxMlYxNEgxMS43OEwxMC42NSwxOS4zMkwxNSwxNC45N1Y1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1iVXAgPSBcIk0yMywxMEMyMyw4Ljg5IDIyLjEsOCAyMSw4SDE0LjY4TDE1LjY0LDMuNDNDMTUuNjYsMy4zMyAxNS42NywzLjIyIDE1LjY3LDMuMTFDMTUuNjcsMi43IDE1LjUsMi4zMiAxNS4yMywyLjA1TDE0LjE3LDFMNy41OSw3LjU4QzcuMjIsNy45NSA3LDguNDUgNyw5VjE5QTIsMiAwIDAsMCA5LDIxSDE4QzE4LjgzLDIxIDE5LjU0LDIwLjUgMTkuODQsMTkuNzhMMjIuODYsMTIuNzNDMjIuOTUsMTIuNSAyMywxMi4yNiAyMywxMlYxME0xLDIxSDVWOUgxVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1iVXBPdXRsaW5lID0gXCJNNSw5VjIxSDFWOUg1TTksMjFBMiwyIDAgMCwxIDcsMTlWOUM3LDguNDUgNy4yMiw3Ljk1IDcuNTksNy41OUwxNC4xNywxTDE1LjIzLDIuMDZDMTUuNSwyLjMzIDE1LjY3LDIuNyAxNS42NywzLjExTDE1LjY0LDMuNDNMMTQuNjksOEgyMUMyMi4xMSw4IDIzLDguOSAyMywxMFYxMkMyMywxMi4yNiAyMi45NSwxMi41IDIyLjg2LDEyLjczTDE5Ljg0LDE5Ljc4QzE5LjU0LDIwLjUgMTguODMsMjEgMTgsMjFIOU05LDE5SDE4LjAzTDIxLDEyVjEwSDEyLjIxTDEzLjM0LDQuNjhMOSw5LjAzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRodW1ic1VwRG93biA9IFwiTTIyLjUsMTBIMTUuNzVDMTUuMTMsMTAgMTQuNiwxMC4zOCAxNC4zNywxMC45MUwxMi4xMSwxNi4yQzEyLjA0LDE2LjM3IDEyLDE2LjU2IDEyLDE2Ljc1VjE4QTEsMSAwIDAsMCAxMywxOUgxOC4xOEwxNy41LDIyLjE4VjIyLjQyQzE3LjUsMjIuNzMgMTcuNjMsMjMgMTcuODMsMjMuMjJMMTguNjIsMjRMMjMuNTYsMTkuMDZDMjMuODMsMTguNzkgMjQsMTguNDEgMjQsMThWMTEuNUExLjUsMS41IDAgMCwwIDIyLjUsMTBNMTIsNkExLDEgMCAwLDAgMTEsNUg1LjgyTDYuNSwxLjgyVjEuNTlDNi41LDEuMjggNi4zNywxIDYuMTcsMC43OUw1LjM4LDBMMC40NCw0Ljk0QzAuMTcsNS4yMSAwLDUuNTkgMCw2VjEyLjVBMS41LDEuNSAwIDAsMCAxLjUsMTRIOC4yNUM4Ljg3LDE0IDkuNCwxMy42MiA5LjYzLDEzLjA5TDExLjg5LDcuOEMxMS45Niw3LjYzIDEyLDcuNDQgMTIsNy4yNVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpY2tldCA9IFwiTTE1LjU4LDE2LjhMMTIsMTQuNUw4LjQyLDE2LjhMOS41LDEyLjY4TDYuMjEsMTBMMTAuNDYsOS43NEwxMiw1LjhMMTMuNTQsOS43NEwxNy43OSwxMEwxNC41LDEyLjY4TTIwLDEyQzIwLDEwLjg5IDIwLjksMTAgMjIsMTBWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0SDRBMiwyIDAgMCwwIDIsNlYxMEMzLjExLDEwIDQsMTAuOSA0LDEyQTIsMiAwIDAsMSAyLDE0VjE4QTIsMiAwIDAsMCA0LDIwSDIwQTIsMiAwIDAsMCAyMiwxOFYxNEEyLDIgMCAwLDEgMjAsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGlja2V0QWNjb3VudCA9IFwiTTIwLDEyQTIsMiAwIDAsMCAyMiwxNFYxOEEyLDIgMCAwLDEgMjAsMjBINEEyLDIgMCAwLDEgMiwxOFYxNEMzLjExLDE0IDQsMTMuMSA0LDEyQTIsMiAwIDAsMCAyLDEwVjZDMiw0Ljg5IDIuOSw0IDQsNEgyMEEyLDIgMCAwLDEgMjIsNlYxMEEyLDIgMCAwLDAgMjAsMTJNMTYuNSwxNi4yNUMxNi41LDE0Ljc1IDEzLjUsMTQgMTIsMTRDMTAuNSwxNCA3LjUsMTQuNzUgNy41LDE2LjI1VjE3SDE2LjVWMTYuMjVNMTIsMTIuMjVBMi4yNSwyLjI1IDAgMCwwIDE0LjI1LDEwQTIuMjUsMi4yNSAwIDAsMCAxMiw3Ljc1QTIuMjUsMi4yNSAwIDAsMCA5Ljc1LDEwQTIuMjUsMi4yNSAwIDAsMCAxMiwxMi4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaWNrZXRDb25maXJtYXRpb24gPSBcIk0xMyw4LjVIMTFWNi41SDEzVjguNU0xMywxM0gxMVYxMUgxM1YxM00xMywxNy41SDExVjE1LjVIMTNWMTcuNU0yMiwxMFY2QzIyLDQuODkgMjEuMSw0IDIwLDRINEEyLDIgMCAwLDAgMiw2VjEwQzMuMTEsMTAgNCwxMC45IDQsMTJBMiwyIDAgMCwxIDIsMTRWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjE0QTIsMiAwIDAsMSAyMCwxMkEyLDIgMCAwLDEgMjIsMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGlja2V0Q29uZmlybWF0aW9uT3V0bGluZSA9IFwiTTIyIDEwVjZDMjIgNC44OSAyMS4xIDQgMjAgNEg0QzIuOSA0IDIgNC44OSAyIDZWMTBDMy4xMSAxMCA0IDEwLjkgNCAxMlMzLjExIDE0IDIgMTRWMThDMiAxOS4xIDIuOSAyMCA0IDIwSDIwQzIxLjEgMjAgMjIgMTkuMSAyMiAxOFYxNEMyMC45IDE0IDIwIDEzLjEgMjAgMTJTMjAuOSAxMCAyMiAxME0yMCA4LjU0QzE4LjgxIDkuMjMgMTggMTAuNTMgMTggMTJTMTguODEgMTQuNzcgMjAgMTUuNDZWMThINFYxNS40NkM1LjE5IDE0Ljc3IDYgMTMuNDcgNiAxMkM2IDEwLjUgNS4yIDkuMjMgNCA4LjU0TDQgNkgyMFY4LjU0TTExIDE1SDEzVjE3SDExTTExIDExSDEzVjEzSDExTTExIDdIMTNWOUgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaWNrZXRPdXRsaW5lID0gXCJNNCw0QTIsMiAwIDAsMCAyLDZWMTBBMiwyIDAgMCwxIDQsMTJBMiwyIDAgMCwxIDIsMTRWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjE0QTIsMiAwIDAsMSAyMCwxMkEyLDIgMCAwLDEgMjIsMTBWNkEyLDIgMCAwLDAgMjAsNEg0TTQsNkgyMFY4LjU0QzE4Ljc2LDkuMjUgMTgsMTAuNTcgMTgsMTJDMTgsMTMuNDMgMTguNzYsMTQuNzUgMjAsMTUuNDZWMThINFYxNS40NkM1LjI0LDE0Ljc1IDYsMTMuNDMgNiwxMkM2LDEwLjU3IDUuMjQsOS4yNSA0LDguNTRWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUaWNrZXRQZXJjZW50ID0gXCJNNCw0QTIsMiAwIDAsMCAyLDZWMTBDMy4xMSwxMCA0LDEwLjkgNCwxMkEyLDIgMCAwLDEgMiwxNFYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWMTRBMiwyIDAgMCwxIDIwLDEyQzIwLDEwLjg5IDIwLjksMTAgMjIsMTBWNkMyMiw0Ljg5IDIxLjEsNCAyMCw0SDRNMTUuNSw3TDE3LDguNUw4LjUsMTdMNywxNS41TDE1LjUsN004LjgxLDcuMDRDOS43OSw3LjA0IDEwLjU4LDcuODMgMTAuNTgsOC44MUExLjc3LDEuNzcgMCAwLDEgOC44MSwxMC41OEM3LjgzLDEwLjU4IDcuMDQsOS43OSA3LjA0LDguODFBMS43NywxLjc3IDAgMCwxIDguODEsNy4wNE0xNS4xOSwxMy40MkMxNi4xNywxMy40MiAxNi45NiwxNC4yMSAxNi45NiwxNS4xOUExLjc3LDEuNzcgMCAwLDEgMTUuMTksMTYuOTZDMTQuMjEsMTYuOTYgMTMuNDIsMTYuMTcgMTMuNDIsMTUuMTlBMS43NywxLjc3IDAgMCwxIDE1LjE5LDEzLjQyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpY2tldFBlcmNlbnRPdXRsaW5lID0gXCJNMTQuOCA4TDE2IDkuMkw5LjIgMTZMOCAxNC44TDE0LjggOE00IDRIMjBDMjEuMTEgNCAyMiA0Ljg5IDIyIDZWMTBDMjAuOSAxMCAyMCAxMC45IDIwIDEyQzIwIDEzLjExIDIwLjkgMTQgMjIgMTRWMThDMjIgMTkuMTEgMjEuMTEgMjAgMjAgMjBINEMyLjkgMjAgMiAxOS4xMSAyIDE4VjE0QzMuMTEgMTQgNCAxMy4xMSA0IDEyQzQgMTAuOSAzLjExIDEwIDIgMTBWNkMyIDQuODkgMi45IDQgNCA0TTQgNlY4LjU0QzUuMjQgOS4yNiA2IDEwLjU3IDYgMTJDNiAxMy40MyA1LjI0IDE0Ljc1IDQgMTUuNDZWMThIMjBWMTUuNDZDMTguNzYgMTQuNzUgMTggMTMuNDMgMTggMTJDMTggMTAuNTcgMTguNzYgOS4yNiAyMCA4LjU0VjZINE05LjUgOEMxMC4zMyA4IDExIDguNjcgMTEgOS41QzExIDEwLjMzIDEwLjMzIDExIDkuNSAxMUM4LjY3IDExIDggMTAuMzMgOCA5LjVDOCA4LjY3IDguNjcgOCA5LjUgOE0xNC41IDEzQzE1LjMzIDEzIDE2IDEzLjY3IDE2IDE0LjVDMTYgMTUuMzMgMTUuMzMgMTYgMTQuNSAxNkMxMy42NyAxNiAxMyAxNS4zMyAxMyAxNC41QzEzIDEzLjY3IDEzLjY3IDEzIDE0LjUgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGllID0gXCJNNiwyTDEwLDZMNywxN0wxMiwyMkwxNywxN0wxNCw2TDE4LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGlsZGUgPSBcIk0yLDE1QzIsMTUgMiw5IDgsOUMxMiw5IDEyLjUsMTIuNSAxNS41LDEyLjVDMTkuNSwxMi41IDE5LjUsOSAxOS41LDlIMjJDMjIsOSAyMiwxNSAxNiwxNUMxMiwxNSAxMC41LDExLjUgOC41LDExLjVDNC41LDExLjUgNC41LDE1IDQuNSwxNUgyXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxhcHNlID0gXCJNMTIsMjBBOCw4IDAgMCwxIDQsMTJBOCw4IDAgMCwxIDEyLDRBOCw4IDAgMCwxIDIwLDEyQTgsOCAwIDAsMSAxMiwyME0xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMk0xNi4yNCw3Ljc2QzE1LjA3LDYuNTggMTMuNTMsNiAxMiw2VjEyTDcuNzYsMTYuMjRDMTAuMSwxOC41OCAxMy45LDE4LjU4IDE2LjI0LDE2LjI0QzE4LjU5LDEzLjkgMTguNTksMTAuMSAxNi4yNCw3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lbGluZUFsZXJ0ID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xNSA3VjEzSDE3VjdIMTVNMTUgMTVWMTdIMTdWMTVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVBbGVydE91dGxpbmUgPSBcIk00IDJWOEgyVjJINE0yIDIyVjE2SDRWMjJIMk01IDEyQzUgMTMuMTEgNC4xMSAxNCAzIDE0QzEuOSAxNCAxIDEzLjExIDEgMTJDMSAxMC45IDEuOSAxMCAzIDEwQzQuMTEgMTAgNSAxMC45IDUgMTJNMjQgNlYxOEMyNCAxOS4xMSAyMy4xMSAyMCAyMiAyMEgxMEM4LjkgMjAgOCAxOS4xMSA4IDE4VjE0TDYgMTJMOCAxMFY2QzggNC44OSA4LjkgNCAxMCA0SDIyQzIzLjExIDQgMjQgNC44OSAyNCA2TTEwIDZWMThIMjJWNkgxME0xNSA3SDE3VjEzSDE1VjdNMTUgMTVIMTdWMTdIMTVWMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVDaGVjayA9IFwiTTQgOEgyVjJINFY4TTIgMjJINFYxNkgyVjIyTTMgMTBDMS45IDEwIDEgMTAuOSAxIDEyQzEgMTMuMTEgMS45IDE0IDMgMTRDNC4xMSAxNCA1IDEzLjExIDUgMTJDNSAxMC45IDQuMTEgMTAgMyAxME0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMTkuNzUgMTAuMzNMMTguNTkgOC45MkwxNSAxMi41TDEzLjQxIDEwLjkyTDEyLjI1IDEyLjA4TDE1IDE1LjA4TDE5Ljc1IDEwLjMzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lQ2hlY2tPdXRsaW5lID0gXCJNMjIgNEgxMEM4LjkgNCA4IDQuODkgOCA2VjEwTDYgMTJMOCAxNFYxOEM4IDE5LjExIDguOSAyMCAxMCAyMEgyMkMyMy4xMSAyMCAyNCAxOS4xMSAyNCAxOFY2QzI0IDQuODkgMjMuMTEgNCAyMiA0TTIyIDE4SDEwVjZIMjJWMThNNCA4SDJWMkg0VjhNMiAxNkg0VjIySDJWMTZNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTE1IDE1LjA4TDEyLjI1IDEyLjA4TDEzLjQxIDEwLjkyTDE1IDEyLjVMMTguNTkgOC45MkwxOS43NSAxMC4zM0wxNSAxNS4wOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lbGluZUNsb2NrID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTE2IDRDMjAuNDIgNCAyNCA3LjU4IDI0IDEyQzI0IDE2LjQyIDIwLjQyIDIwIDE2IDIwQzEyLjQgMjAgOS4zNiAxNy42MiA4LjM1IDE0LjM1TDYgMTJMOC4zNSA5LjY1QzkuMzYgNi4zOCAxMi40IDQgMTYgNE0xNSAxM0wxOS41MyAxNS43OUwyMC4zMyAxNC41TDE2LjUgMTIuMlY3SDE1VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lQ2xvY2tPdXRsaW5lID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTE2IDRDMjAuNDIgNCAyNCA3LjU4IDI0IDEyQzI0IDE2LjQyIDIwLjQyIDIwIDE2IDIwQzEyLjQgMjAgOS4zNiAxNy42MiA4LjM1IDE0LjM1TDYgMTJMOC4zNSA5LjY1QzkuMzYgNi4zOCAxMi40IDQgMTYgNE0xNiA2QzEyLjY5IDYgMTAgOC42OSAxMCAxMkMxMCAxNS4zMSAxMi42OSAxOCAxNiAxOEMxOS4zMSAxOCAyMiAxNS4zMSAyMiAxMkMyMiA4LjY5IDE5LjMxIDYgMTYgNk0xNSAxM1Y4SDE2LjVWMTIuMkwxOS41IDE0TDE4LjY4IDE1LjI2TDE1IDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lSGVscCA9IFwiTTQgMlY4SDJWMkg0TTIgMjJWMTZINFYyMkgyTTUgMTJDNSAxMy4xMSA0LjExIDE0IDMgMTRDMS45IDE0IDEgMTMuMTEgMSAxMkMxIDEwLjkgMS45IDEwIDMgMTBDNC4xMSAxMCA1IDEwLjkgNSAxMk0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMTYuNSAxNS41SDE1VjE3SDE2LjVWMTUuNU0xNC41IDEwLjVWMTBDMTQuNSA5LjE3IDE1LjE3IDguNSAxNiA4LjVDMTYuODMgOC41IDE3LjUgOS4xOCAxNy41IDEwQzE3LjUgMTAuNDcgMTcuMjcgMTAuOSAxNi44OCAxMS4xNkwxNi41OSAxMS4zNUMxNS42IDEyIDE1IDEzLjExIDE1IDE0LjNWMTQuNUgxNi41VjE0LjNDMTYuNSAxMy42MiAxNi44NCAxMyAxNy40MSAxMi42TDE3LjcxIDEyLjQxQzE4LjUgMTEuODggMTkgMTAuOTcgMTkgMTBDMTkgOC4zNCAxNy42NiA3IDE2IDdDMTQuMzQgNyAxMyA4LjM0IDEzIDEwVjEwLjVIMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lbGluZUhlbHBPdXRsaW5lID0gXCJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTQgMlY4SDJWMkg0TTIgMjJWMTZINFYyMkgyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMiA2SDEwVjEwLjgzTDguODMgMTJMMTAgMTMuMTdWMThIMjJWNk0xNi41IDE1LjVWMTdIMTVWMTUuNUgxNi41TTE0LjUgMTAuNUgxM1YxMEMxMyA4LjM0IDE0LjM0IDcgMTYgN0MxNy42NiA3IDE5IDguMzQgMTkgMTBDMTkgMTAuOTcgMTguNSAxMS44OCAxNy43MSAxMi40MUwxNy40MSAxMi42QzE2Ljg0IDEzIDE2LjUgMTMuNjIgMTYuNSAxNC4zVjE0LjVIMTVWMTQuM0MxNSAxMy4xMSAxNS42IDEyIDE2LjU5IDExLjM1TDE2Ljg4IDExLjE2QzE3LjI3IDEwLjkgMTcuNSAxMC40NyAxNy41IDEwQzE3LjUgOS4xOCAxNi44MyA4LjUgMTYgOC41QzE1LjE3IDguNSAxNC41IDkuMTcgMTQuNSAxMFYxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lTWludXMgPSBcIk00IDhIMlYySDRWOE0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMjAgMTFIMTJWMTNIMjBWMTFNMiAyMkg0VjE2SDJWMjJNMyAxMEMxLjkgMTAgMSAxMC45IDEgMTJDMSAxMy4xMSAxLjkgMTQgMyAxNEM0LjExIDE0IDUgMTMuMTEgNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lTWludXNPdXRsaW5lID0gXCJNMiAxNkg0VjIySDJWMTZNNCAySDJWOEg0VjJNMjAgMTFIMTJWMTNIMjBWMTFNMyAxMEMxLjkgMTAgMSAxMC45IDEgMTJDMSAxMy4xMSAxLjkgMTQgMyAxNEM0LjExIDE0IDUgMTMuMTEgNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMiA2SDEwVjE4SDIyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVPdXRsaW5lID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xMCA2VjE4SDIyVjZIMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVQbHVzID0gXCJNNCAyVjhIMlYySDRNMiAyMlYxNkg0VjIySDJNNSAxMkM1IDEzLjExIDQuMTEgMTQgMyAxNEMxLjkgMTQgMSAxMy4xMSAxIDEyQzEgMTAuOSAxLjkgMTAgMyAxMEM0LjExIDEwIDUgMTAuOSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMCAxMUgxN1Y4SDE1VjExSDEyVjEzSDE1VjE2SDE3VjEzSDIwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lUGx1c091dGxpbmUgPSBcIk00IDJWOEgyVjJINE0yIDIyVjE2SDRWMjJIMk01IDEyQzUgMTMuMTEgNC4xMSAxNCAzIDE0QzEuOSAxNCAxIDEzLjExIDEgMTJDMSAxMC45IDEuOSAxMCAzIDEwQzQuMTEgMTAgNSAxMC45IDUgMTJNMjAgMTFWMTNIMTdWMTZIMTVWMTNIMTJWMTFIMTVWOEgxN1YxMUgyME0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMTAgNlYxOEgyMlY2SDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lUmVtb3ZlID0gXCJNNCA4SDJWMkg0VjhNMiAyMkg0VjE2SDJWMjJNMyAxMEMxLjkgMTAgMSAxMC45IDEgMTJDMSAxMy4xMSAxLjkgMTQgMyAxNEM0LjExIDE0IDUgMTMuMTEgNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xNy40MSAxMkwxOS41MyA5Ljg4TDE4LjEyIDguNDdMMTYgMTAuNTlMMTMuODggOC40N0wxMi40NyA5Ljg4TDE0LjU5IDEyTDEyLjQ3IDE0LjEyTDEzLjg4IDE1LjUzTDE2IDEzLjQxTDE4LjEyIDE1LjUzTDE5LjUzIDE0LjEyTDE3LjQxIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVsaW5lUmVtb3ZlT3V0bGluZSA9IFwiTTQgOEgyVjJINFY4TTIgMjJINFYxNkgyVjIyTTMgMTBDMS45IDEwIDEgMTAuOSAxIDEyQzEgMTMuMTEgMS45IDE0IDMgMTRDNC4xMSAxNCA1IDEzLjExIDUgMTJDNSAxMC45IDQuMTEgMTAgMyAxME0xMy44OCAxNS41NEwxNiAxMy40MUwxOC4xMiAxNS41M0wxOS41MyAxNC4xMkwxNy40MSAxMkwxOS41MyA5Ljg4TDE4LjEyIDguNDdMMTYgMTAuNTlMMTMuODggOC40N0wxMi40NyA5Ljg4TDE0LjU5IDEyTDEyLjQ3IDE0LjEyTDEzLjg4IDE1LjU0TTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0yMiA2SDEwVjE4SDIyVjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVUZXh0ID0gXCJNNCAyVjhIMlYySDRNMiAyMkg0VjE2SDJWMjJNNSAxMkM1IDEwLjkgNC4xMSAxMCAzIDEwQzEuOSAxMCAxIDEwLjkgMSAxMkMxIDEzLjExIDEuOSAxNCAzIDE0QzQuMTEgMTQgNSAxMy4xMSA1IDEyTTI0IDZWMThDMjQgMTkuMTEgMjMuMTEgMjAgMjIgMjBIMTBDOC45IDIwIDggMTkuMTEgOCAxOFYxNEw2IDEyTDggMTBWNkM4IDQuODkgOC45IDQgMTAgNEgyMkMyMy4xMSA0IDI0IDQuODkgMjQgNk0xOSAxM0gxMVYxNUgxOVYxM00yMSA5SDExVjExSDIxVjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZWxpbmVUZXh0T3V0bGluZSA9IFwiTTUgMTJDNSAxMy4xMSA0LjExIDE0IDMgMTRDMS45IDE0IDEgMTMuMTEgMSAxMkMxIDEwLjkgMS45IDEwIDMgMTBDNC4xMSAxMCA1IDEwLjkgNSAxMk00IDJWOEgyVjJINE0yIDIyVjE2SDRWMjJIMk0yNCA2VjE4QzI0IDE5LjExIDIzLjExIDIwIDIyIDIwSDEwQzguOSAyMCA4IDE5LjExIDggMThWMTRMNiAxMkw4IDEwVjZDOCA0Ljg5IDguOSA0IDEwIDRIMjJDMjMuMTEgNCAyNCA0Ljg5IDI0IDZNMjIgNkgxMFYxMC44M0w4LjgzIDEyTDEwIDEzLjE3VjE4SDIyVjZNMTIgOUgyMFYxMUgxMlY5TTEyIDEzSDE4VjE1SDEyVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVyID0gXCJNMTkuMDMgNy4zOUwyMC40NSA1Ljk3QzIwIDUuNDYgMTkuNTUgNSAxOS4wNCA0LjU2TDE3LjYyIDZDMTYuMDcgNC43NCAxNC4xMiA0IDEyIDRDNy4wMyA0IDMgOC4wMyAzIDEzUzcuMDMgMjIgMTIgMjJDMTcgMjIgMjEgMTcuOTcgMjEgMTNDMjEgMTAuODggMjAuMjYgOC45MyAxOS4wMyA3LjM5TTEzIDE0SDExVjdIMTNWMTRNMTUgMUg5VjNIMTVWMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lcjEwID0gXCJNMTIuOSwxMy4yMkMxMi45LDEzLjgyIDEyLjg2LDE0LjMzIDEyLjc4LDE0Ljc1QzEyLjcsMTUuMTcgMTIuNTgsMTUuNSAxMi40MiwxNS43N0MxMi4yNiwxNi4wMyAxMi4wNiwxNi4yMiAxMS44MywxNi4zNEMxMS42LDE2LjQ2IDExLjMyLDE2LjUgMTEsMTYuNUMxMC43MSwxNi41IDEwLjQzLDE2LjQ2IDEwLjE5LDE2LjM0QzkuOTUsMTYuMjIgOS43NSwxNi4wMyA5LjU5LDE1Ljc3QzkuNDMsMTUuNSA5LjMsMTUuMTcgOS4yMSwxNC43NUM5LjEyLDE0LjMzIDkuMDgsMTMuODIgOS4wOCwxMy4yMlYxMC43MkM5LjA4LDEwLjEyIDkuMTIsOS42MSA5LjIxLDkuMkM5LjMsOC43OSA5LjQyLDguNDYgOS41OSw4LjJDOS43NSw3Ljk1IDkuOTUsNy43NyAxMC4xOSw3LjY1QzEwLjQzLDcuNTQgMTAuNyw3LjUgMTEsNy41QzExLjMxLDcuNSAxMS41OCw3LjU0IDExLjgxLDcuNjVDMTIuMDUsNy43NiAxMi4yNSw3Ljk0IDEyLjQxLDguMkMxMi41Nyw4LjQ1IDEyLjcsOC43OCAxMi43OCw5LjE5QzEyLjg2LDkuNiAxMi45MSwxMC4xMSAxMi45MSwxMC43MVYxMy4yMk0xMy44Miw3LjA1QzEzLjUsNi42NSAxMy4wNyw2LjM1IDEyLjU5LDYuMTdDMTIuMTIsNiAxMS41OCw1LjkgMTEsNS45QzEwLjQyLDUuOSA5Ljg5LDYgOS40MSw2LjE3QzguOTMsNi4zNSA4LjUsNi42NCA4LjE4LDcuMDVDNy44NCw3LjQ2IDcuNTgsOCA3LjM5LDguNjRDNy4yMSw5LjI5IDcuMTEsMTAuMDkgNy4xMSwxMS4wM1YxMi45NUM3LjExLDEzLjg5IDcuMiwxNC42OSA3LjM5LDE1LjM0QzcuNTgsMTYgNy44NCwxNi41MyA4LjE5LDE2Ljk0QzguNTMsMTcuMzUgOC45NCwxNy42NSA5LjQyLDE3LjgzQzkuOSwxOCAxMC40MywxOC4xMSAxMSwxOC4xMUMxMS42LDE4LjExIDEyLjEzLDE4IDEyLjYsMTcuODNDMTMuMDgsMTcuNjUgMTMuNSwxNy4zNSAxMy44MiwxNi45NEMxNC4xNiwxNi41MyAxNC40MiwxNiAxNC42LDE1LjM0QzE0Ljc4LDE0LjY5IDE0Ljg4LDEzLjg5IDE0Ljg4LDEyLjk1VjExLjAzQzE0Ljg4LDEwLjA5IDE0Ljc5LDkuMjkgMTQuNiw4LjY0QzE0LjQyLDggMTQuMTYsNy40NSAxMy44Miw3LjA1TTIzLjc4LDE0LjM3QzIzLjY0LDE0LjA5IDIzLjQzLDEzLjg0IDIzLjE1LDEzLjYzQzIyLjg3LDEzLjQyIDIyLjU0LDEzLjI0IDIyLjE0LDEzLjFDMjEuNzQsMTIuOTYgMjEuMjksMTIuODMgMjAuNzksMTIuNzJDMjAuNDQsMTIuNjUgMjAuMTUsMTIuNTcgMTkuOTIsMTIuNUMxOS42OSwxMi40MSAxOS41LDEyLjMzIDE5LjM3LDEyLjI0QzE5LjIzLDEyLjE1IDE5LjE0LDEyLjA1IDE5LjA5LDExLjk0QzE5LjA0LDExLjgzIDE5LDExLjcgMTksMTEuNTVDMTksMTEuNDEgMTkuMDQsMTEuMjcgMTkuMSwxMS4xNEMxOS4xNiwxMSAxOS4yNSwxMC44OSAxOS4zNywxMC44QzE5LjUsMTAuNyAxOS42NCwxMC42MiAxOS44MiwxMC41NkMyMCwxMC41IDIwLjIyLDEwLjQ3IDIwLjQ2LDEwLjQ3QzIwLjcxLDEwLjQ3IDIwLjkzLDEwLjUgMjEuMTIsMTAuNThDMjEuMzEsMTAuNjUgMjEuNDcsMTAuNzUgMjEuNiwxMC44N0MyMS43MywxMSAyMS44MiwxMS4xMyAyMS44OSwxMS4yOUMyMS45NSwxMS40NSAyMiwxMS42MSAyMiwxMS43OEgyMy45NEMyMy45NCwxMS4zOSAyMy44NiwxMS4wMyAyMy43LDEwLjY5QzIzLjU0LDEwLjM1IDIzLjMxLDEwLjA2IDIzLDkuODFDMjIuNzEsOS41NiAyMi4zNSw5LjM3IDIxLjkyLDkuMjJDMjEuNSw5LjA3IDIxLDkgMjAuNDYsOUMxOS45NSw5IDE5LjUsOS4wNyAxOS4wNyw5LjIxQzE4LjY2LDkuMzUgMTguMyw5LjU0IDE4LDkuNzhDMTcuNzIsMTAgMTcuNSwxMC4zIDE3LjM0LDEwLjYyQzE3LjE4LDEwLjk0IDE3LjExLDExLjI3IDE3LjExLDExLjYzQzE3LjExLDEyIDE3LjE5LDEyLjMyIDE3LjM0LDEyLjU5QzE3LjUsMTIuODcgMTcuNywxMy4xMSAxOCwxMy4zMkMxOC4yNSwxMy41MyAxOC41OCwxMy43IDE4Ljk2LDEzLjg1QzE5LjM0LDE0IDE5Ljc3LDE0LjExIDIwLjIzLDE0LjIxQzIwLjYyLDE0LjI5IDIwLjk0LDE0LjM4IDIxLjE4LDE0LjQ3QzIxLjQyLDE0LjU2IDIxLjYxLDE0LjY2IDIxLjc1LDE0Ljc2QzIxLjg4LDE0Ljg2IDIxLjk3LDE1IDIyLDE1LjFDMjIuMDcsMTUuMjIgMjIuMDksMTUuMzUgMjIuMDksMTUuNUMyMi4wOSwxNS44MSAyMS45NiwxNi4wNiAyMS42OSwxNi4yNkMyMS40MiwxNi40NiAyMS4wMywxNi41NSAyMC41LDE2LjU1QzIwLjMsMTYuNTUgMjAuMDksMTYuNTMgMTkuODgsMTYuNDdDMTkuNjcsMTYuNDIgMTkuNSwxNi4zNCAxOS4zMiwxNi4yM0MxOS4xNSwxNi4xMiAxOSwxNS45NyAxOC45MSwxNS43OUMxOC44LDE1LjYxIDE4Ljc0LDE1LjM4IDE4LjczLDE1LjEySDE2Ljg0QzE2Ljg0LDE1LjUgMTYuOTIsMTUuODMgMTcuMDgsMTYuMTdDMTcuMjQsMTYuNSAxNy40NywxNi44MiAxNy43OCwxNy4xQzE4LjA5LDE3LjM3IDE4LjQ3LDE3LjU5IDE4LjkzLDE3Ljc2QzE5LjM5LDE3LjkzIDE5LjkxLDE4IDIwLjUsMThDMjEuMDQsMTggMjEuNSwxNy45NSAyMS45NSwxNy44MkMyMi4zOCwxNy42OSAyMi43NSwxNy41IDIzLjA2LDE3LjI4QzIzLjM3LDE3LjA1IDIzLjYsMTYuNzcgMjMuNzcsMTYuNDVDMjMuOTQsMTYuMTMgMjQsMTUuNzggMjQsMTUuMzlDMjQsMTUgMjMuOTMsMTQuNjUgMjMuNzgsMTQuMzdNMCw3LjcyVjkuNEwzLDguNFYxOEg1VjZINC43NUwwLDcuNzJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZXIzID0gXCJNMjAuODcsMTQuMzdDMjAuNzMsMTQuMDkgMjAuNSwxMy44NCAyMC4yNCwxMy42M0MxOS45NiwxMy40MiAxOS42MywxMy4yNCAxOS4yMywxMy4xQzE4LjgzLDEyLjk2IDE4LjM4LDEyLjgzIDE3Ljg4LDEyLjcyQzE3LjUzLDEyLjY1IDE3LjI0LDEyLjU3IDE3LDEyLjVDMTYuNzgsMTIuNDEgMTYuNiwxMi4zMyAxNi40NiwxMi4yNEMxNi4zMiwxMi4xNSAxNi4yMywxMi4wNSAxNi4xOCwxMS45NEMxNi4xMywxMS44MyAxNi4xLDExLjcgMTYuMSwxMS41NUMxNi4xLDExLjQgMTYuMTMsMTEuMjcgMTYuMTksMTEuMTRDMTYuMjUsMTEgMTYuMzQsMTAuODkgMTYuNDYsMTAuOEMxNi41OCwxMC43IDE2LjczLDEwLjYyIDE2LjkxLDEwLjU2QzE3LjA5LDEwLjUgMTcuMzEsMTAuNDcgMTcuNTUsMTAuNDdDMTcuOCwxMC40NyAxOCwxMC41IDE4LjIxLDEwLjU4QzE4LjQsMTAuNjUgMTguNTYsMTAuNzUgMTguNjksMTAuODdDMTguODIsMTEgMTguOTEsMTEuMTMgMTksMTEuMjlDMTkuMDQsMTEuNDUgMTkuMDgsMTEuNjEgMTkuMDgsMTEuNzhIMjEuMDNDMjEuMDMsMTEuMzkgMjAuOTUsMTEuMDMgMjAuNzksMTAuNjlDMjAuNjMsMTAuMzUgMjAuNCwxMC4wNiAyMC4xLDkuODFDMTkuOCw5LjU2IDE5LjQ0LDkuMzcgMTksOS4yMkMxOC41OCw5LjA3IDE4LjA5LDkgMTcuNTUsOUMxNy4wNCw5IDE2LjU3LDkuMDcgMTYuMTYsOS4yMUMxNS43NSw5LjM1IDE1LjM5LDkuNTQgMTUuMSw5Ljc4QzE0LjgxLDEwIDE0LjU5LDEwLjMgMTQuNDMsMTAuNjJDMTQuMjcsMTAuOTQgMTQuMiwxMS4yNyAxNC4yLDExLjYzQzE0LjIsMTIgMTQuMjgsMTIuMzEgMTQuNDMsMTIuNTlDMTQuNTgsMTIuODcgMTQuOCwxMy4xMSAxNS4wNywxMy4zMkMxNS4zNCwxMy41MyAxNS42NywxMy43IDE2LjA1LDEzLjg1QzE2LjQzLDE0IDE2Ljg2LDE0LjExIDE3LjMyLDE0LjIxQzE3LjcxLDE0LjI5IDE4LjAzLDE0LjM4IDE4LjI3LDE0LjQ3QzE4LjUsMTQuNTYgMTguNywxNC42NiAxOC44NCwxNC43NkMxOC45NywxNC44NiAxOS4wNiwxNSAxOS4xMSwxNS4xQzE5LjE2LDE1LjIyIDE5LjE4LDE1LjM1IDE5LjE4LDE1LjVDMTkuMTgsMTUuODEgMTkuMDUsMTYuMDYgMTguNzgsMTYuMjZDMTguNSwxNi40NiAxOC4xMiwxNi41NSAxNy42MSwxNi41NUMxNy4zOSwxNi41NSAxNy4xOCwxNi41MyAxNi45NywxNi40N0MxNi43NiwxNi40MiAxNi41NywxNi4zNCAxNi40MSwxNi4yM0MxNi4yNCwxNi4xMiAxNi4xMSwxNS45NyAxNiwxNS43OUMxNS44OSwxNS42MSAxNS44MywxNS4zOCAxNS44MiwxNS4xMkgxMy45M0MxMy45MywxNS41IDE0LDE1LjgzIDE0LjE3LDE2LjE3QzE0LjMzLDE2LjUgMTQuNTYsMTYuODIgMTQuODcsMTcuMUMxNS4xOCwxNy4zNyAxNS41NiwxNy41OSAxNiwxNy43NkMxNi41LDE3LjkzIDE3LDE4IDE3LjYsMThDMTguMTMsMTggMTguNjEsMTcuOTUgMTkuMDQsMTcuODJDMTkuNDcsMTcuNjkgMTkuODQsMTcuNSAyMC4xNSwxNy4yOEMyMC40NiwxNy4wNSAyMC42OSwxNi43NyAyMC44NiwxNi40NUMyMS4wMywxNi4xMyAyMS4xMSwxNS43OCAyMS4xMSwxNS4zOUMyMS4wOSwxNSAyMSwxNC42NSAyMC44NywxNC4zN00xMS42MSwxMi45N0MxMS40NSwxMi43MyAxMS4yNSwxMi41IDExLDEyLjMyQzEwLjc0LDEyLjEzIDEwLjQzLDExLjk3IDEwLjA2LDExLjg0QzEwLjM2LDExLjcgMTAuNjMsMTEuNTQgMTAuODYsMTEuMzRDMTEuMDksMTEuMTQgMTEuMjgsMTAuOTMgMTEuNDMsMTAuN0MxMS41OCwxMC40NyAxMS43LDEwLjI0IDExLjc3LDEwQzExLjg1LDkuNzUgMTEuODgsOS41IDExLjg4LDkuMjZDMTEuODgsOC43MSAxMS43OSw4LjIyIDExLjYsNy44QzExLjQyLDcuMzggMTEuMTYsNy4wMyAxMC44Miw2Ljc0QzEwLjUsNi40NiAxMC4wOSw2LjI0IDkuNjIsNi4xQzkuMTcsNS45NyA4LjY1LDUuOSA4LjA5LDUuOUM3LjU0LDUuOSA3LjAzLDYgNi41Nyw2LjE0QzYuMSw2LjMxIDUuNyw2LjU0IDUuMzcsNi44M0M1LjA0LDcuMTIgNC43Nyw3LjQ2IDQuNTksNy44NkM0LjM5LDguMjUgNC4zLDguNjkgNC4zLDkuMTVINi4yOEM2LjI4LDguODkgNi4zMyw4LjY2IDYuNDIsOC40NkM2LjUsOC4yNiA2LjY0LDguMDggNi44LDcuOTRDNi45Nyw3LjggNy4xNiw3LjY5IDcuMzgsNy42MUM3LjYsNy41MyA3Ljg0LDcuNSA4LjExLDcuNUM4LjcyLDcuNSA5LjE3LDcuNjUgOS40Nyw3Ljk2QzkuNzcsOC4yNyA5LjkxLDguNzEgOS45MSw5LjI4QzkuOTEsOS41NSA5Ljg3LDkuOCA5Ljc5LDEwQzkuNzEsMTAuMjQgOS41OCwxMC40MyA5LjQxLDEwLjU5QzkuMjQsMTAuNzUgOS4wMywxMC44NyA4Ljc4LDEwLjk2QzguNTMsMTEuMDUgOC4yMywxMS4wOSA3Ljg5LDExLjA5SDYuNzJWMTIuNjZINy45QzguMjQsMTIuNjYgOC41NCwxMi43IDguODEsMTIuNzdDOS4wOCwxMi44NSA5LjMxLDEyLjk2IDkuNSwxMy4xMkM5LjY5LDEzLjI4IDkuODQsMTMuNSA5Ljk0LDEzLjczQzEwLjA0LDEzLjk3IDEwLjEsMTQuMjcgMTAuMSwxNC42QzEwLjEsMTUuMjIgOS45MiwxNS42OSA5LjU3LDE2QzkuMjIsMTYuMzUgOC43MywxNi41IDguMTIsMTYuNUM3LjgzLDE2LjUgNy41NiwxNi40NyA3LjMyLDE2LjM4QzcuMDgsMTYuMyA2Ljg4LDE2LjE4IDYuNzEsMTZDNi41NCwxNS44NiA2LjQxLDE1LjY4IDYuMzIsMTUuNDZDNi4yMywxNS4yNCA2LjE4LDE1IDYuMTgsMTQuNzRINC4xOUM0LjE5LDE1LjI5IDQuMywxNS43NyA0LjUsMTYuMTlDNC43MiwxNi42MSA1LDE2Ljk2IDUuMzcsMTcuMjRDNS43MywxNy41IDYuMTQsMTcuNzMgNi42MSwxNy44N0M3LjA4LDE4IDcuNTcsMTguMDggOC4wOSwxOC4wOEM4LjY2LDE4LjA4IDkuMTgsMTggOS42NywxNy44NUMxMC4xNiwxNy43IDEwLjU4LDE3LjQ3IDEwLjkzLDE3LjE3QzExLjI5LDE2Ljg3IDExLjU3LDE2LjUgMTEuNzcsMTYuMDdDMTEuOTcsMTUuNjQgMTIuMDcsMTUuMTQgMTIuMDcsMTQuNTlDMTIuMDcsMTQuMyAxMi4wMywxNCAxMS45NiwxMy43M0MxMS44OCwxMy41IDExLjc3LDEzLjIyIDExLjYxLDEyLjk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWVyT2ZmID0gXCJNMyA0TDEuNzUgNS4yN0w0LjUgOC4wM0MzLjU1IDkuNDUgMyAxMS4xNiAzIDEzQzMgMTcuOTcgNy4wMyAyMiAxMiAyMkMxMy44NCAyMiAxNS41NSAyMS40NSAxNyAyMC41TDE5LjUgMjNMMjAuNzUgMjEuNzNMMTMuMDQgMTRMMyA0TTE1IDFIOVYzSDE1TTIxIDEzQzIxIDE0LjgzIDIwLjQ1IDE2LjUzIDE5LjUgMTcuOTRMMTMgMTEuNDVWN0gxMVY5LjQ1TDcuMDUgNS41QzguNDcgNC41NSAxMC4xNyA0IDEyIDRDMTQuMTIgNCAxNi4wNyA0Ljc0IDE3LjYyIDUuOTdMMTkuMDQgNC41NUwyMC40NSA1Ljk3TDE5LjAzIDcuMzlDMjAuMjYgOC45MyAyMSAxMC44OCAyMSAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lck9mZk91dGxpbmUgPSBcIk0xMiwyMEE3LDcgMCAwLDEgNSwxM0M1LDExLjcyIDUuMzUsMTAuNSA1Ljk1LDkuNUwxNS41LDE5LjA0QzE0LjUsMTkuNjUgMTMuMjgsMjAgMTIsMjBNMyw0TDEuNzUsNS4yN0w0LjUsOC4wM0MzLjU1LDkuNDUgMywxMS4xNiAzLDEzQTksOSAwIDAsMCAxMiwyMkMxMy44NCwyMiAxNS41NSwyMS40NSAxNywyMC41TDE5LjUsMjNMMjAuNzUsMjEuNzNMMTMuMDQsMTRMMyw0TTExLDkuNDRMMTMsMTEuNDRWOEgxMU0xNSwxSDlWM0gxNU0xOS4wNCw0LjU1TDE3LjYyLDUuOTdDMTYuMDcsNC43NCAxNC4xMiw0IDEyLDRDMTAuMTcsNCA4LjQ3LDQuNTUgNy4wNSw1LjVMOC41LDYuOTRDOS41Myw2LjM1IDEwLjczLDYgMTIsNkE3LDcgMCAwLDEgMTksMTNDMTksMTQuMjcgMTguNjUsMTUuNDcgMTguMDYsMTYuNUwxOS41LDE3Ljk0QzIwLjQ1LDE2LjUzIDIxLDE0LjgzIDIxLDEzQzIxLDEwLjg4IDIwLjI2LDguOTMgMTkuMDMsNy4zOUwyMC40NSw1Ljk3TDE5LjA0LDQuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZXJPdXRsaW5lID0gXCJNMTIsMjBBNyw3IDAgMCwxIDUsMTNBNyw3IDAgMCwxIDEyLDZBNyw3IDAgMCwxIDE5LDEzQTcsNyAwIDAsMSAxMiwyME0xOS4wMyw3LjM5TDIwLjQ1LDUuOTdDMjAsNS40NiAxOS41NSw1IDE5LjA0LDQuNTZMMTcuNjIsNkMxNi4wNyw0Ljc0IDE0LjEyLDQgMTIsNEE5LDkgMCAwLDAgMywxM0E5LDkgMCAwLDAgMTIsMjJDMTcsMjIgMjEsMTcuOTcgMjEsMTNDMjEsMTAuODggMjAuMjYsOC45MyAxOS4wMyw3LjM5TTExLDE0SDEzVjhIMTFNMTUsMUg5VjNIMTVWMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lclNhbmQgPSBcIk02LDJIMThWOEgxOFY4TDE0LDEyTDE4LDE2VjE2SDE4VjIySDZWMTZINlYxNkwxMCwxMkw2LDhWOEg2VjJNMTYsMTYuNUwxMiwxMi41TDgsMTYuNVYyMEgxNlYxNi41TTEyLDExLjVMMTYsNy41VjRIOFY3LjVMMTIsMTEuNU0xMCw2SDE0VjYuNzVMMTIsOC43NUwxMCw2Ljc1VjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVGltZXJTYW5kRW1wdHkgPSBcIk02LDJWOEg2VjhMMTAsMTJMNiwxNlYxNkg2VjIySDE4VjE2SDE4VjE2TDE0LDEyTDE4LDhWOEgxOFYySDZNMTYsMTYuNVYyMEg4VjE2LjVMMTIsMTIuNUwxNiwxNi41TTEyLDExLjVMOCw3LjVWNEgxNlY3LjVMMTIsMTEuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUaW1lclNhbmRGdWxsID0gXCJNNiwyVjhINlY4TDEwLDEyTDYsMTZWMTZINlYyMkgxOFYxNkgxOFYxNkwxNCwxMkwxOCw4VjhIMThWMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRpbWV0YWJsZSA9IFwiTTE0LDEySDE1LjVWMTQuODJMMTcuOTQsMTYuMjNMMTcuMTksMTcuNTNMMTQsMTUuNjlWMTJNNCwySDE4QTIsMiAwIDAsMSAyMCw0VjEwLjFDMjEuMjQsMTEuMzYgMjIsMTMuMDkgMjIsMTVBNyw3IDAgMCwxIDE1LDIyQzEzLjA5LDIyIDExLjM2LDIxLjI0IDEwLjEsMjBINEEyLDIgMCAwLDEgMiwxOFY0QTIsMiAwIDAsMSA0LDJNNCwxNVYxOEg4LjY3QzguMjQsMTcuMDkgOCwxNi4wNyA4LDE1SDRNNCw4SDEwVjVINFY4TTE4LDhWNUgxMlY4SDE4TTQsMTNIOC4yOUM4LjYzLDExLjg1IDkuMjYsMTAuODIgMTAuMSwxMEg0VjEzTTE1LDEwLjE1QTQuODUsNC44NSAwIDAsMCAxMC4xNSwxNUMxMC4xNSwxNy42OCAxMi4zMiwxOS44NSAxNSwxOS44NUE0Ljg1LDQuODUgMCAwLDAgMTkuODUsMTVDMTkuODUsMTIuMzIgMTcuNjgsMTAuMTUgMTUsMTAuMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9hc3RlciA9IFwiTTIxIDExQTIgMiAwIDAgMCAxOSA5SDVBMiAyIDAgMCAwIDMgMTFIMlYxM0gzVjIwSDIxVjEzSDIyVjExTTE3IDE1QTIgMiAwIDEgMSAxOSAxM0EyIDIgMCAwIDEgMTcgMTVNMTggOEg2QzYuMzMgNS43NSA4Ljg4IDQgMTIgNFMxNy42MyA1Ljc1IDE4IDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9hc3Rlck9mZiA9IFwiTTIwLjggMjIuN0wxOC4xIDIwSDNWMTNIMlYxMUgzQzMgOS45IDMuOSA5IDUgOUg3LjFMMS4xIDNMMi40IDEuN0wyMi4xIDIxLjRMMjAuOCAyMi43TTE1LjMgMTIuMUMxNS42IDExLjUgMTYuMyAxMSAxNyAxMUMxOC4xIDExIDE5IDExLjkgMTkgMTNDMTkgMTMuOCAxOC42IDE0LjQgMTcuOSAxNC43TDIxIDE3LjhWMTNIMjJWMTFIMjFDMjEgOS45IDIwLjEgOSAxOSA5SDEyLjJMMTUuMyAxMi4xTTE4IDhDMTcuNiA1LjggMTUuMSA0IDEyIDRDMTAuNiA0IDkuMiA0LjQgOC4yIDVMMTEuMiA4SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvYXN0ZXJPdmVuID0gXCJNNCw1QTIsMiAwIDAsMCAyLDdWMTdBMiwyIDAgMCwwIDQsMTlIMjBBMiwyIDAgMCwwIDIyLDE3VjdBMiwyIDAgMCwwIDIwLDVINE00LDdIMTZWMTdINFY3TTE5LDdBMSwxIDAgMCwxIDIwLDhBMSwxIDAgMCwxIDE5LDlBMSwxIDAgMCwxIDE4LDhBMSwxIDAgMCwxIDE5LDdNNiw5VjExSDE0VjlINk0xOSwxMUExLDEgMCAwLDEgMjAsMTJBMSwxIDAgMCwxIDE5LDEzQTEsMSAwIDAsMSAxOCwxMkExLDEgMCAwLDEgMTksMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9nZ2xlU3dpdGNoID0gXCJNMTcsN0g3QTUsNSAwIDAsMCAyLDEyQTUsNSAwIDAsMCA3LDE3SDE3QTUsNSAwIDAsMCAyMiwxMkE1LDUgMCAwLDAgMTcsN00xNywxNUEzLDMgMCAwLDEgMTQsMTJBMywzIDAgMCwxIDE3LDlBMywzIDAgMCwxIDIwLDEyQTMsMyAwIDAsMSAxNywxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb2dnbGVTd2l0Y2hPZmYgPSBcIk0xNyw3SDdBNSw1IDAgMCwwIDIsMTJBNSw1IDAgMCwwIDcsMTdIMTdBNSw1IDAgMCwwIDIyLDEyQTUsNSAwIDAsMCAxNyw3TTcsMTVBMywzIDAgMCwxIDQsMTJBMywzIDAgMCwxIDcsOUEzLDMgMCAwLDEgMTAsMTJBMywzIDAgMCwxIDcsMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9nZ2xlU3dpdGNoT2ZmT3V0bGluZSA9IFwiTTcsMTBBMiwyIDAgMCwxIDksMTJBMiwyIDAgMCwxIDcsMTRBMiwyIDAgMCwxIDUsMTJBMiwyIDAgMCwxIDcsMTBNMTcsN0E1LDUgMCAwLDEgMjIsMTJBNSw1IDAgMCwxIDE3LDE3SDdBNSw1IDAgMCwxIDIsMTJBNSw1IDAgMCwxIDcsN0gxN003LDlBMywzIDAgMCwwIDQsMTJBMywzIDAgMCwwIDcsMTVIMTdBMywzIDAgMCwwIDIwLDEyQTMsMyAwIDAsMCAxNyw5SDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9nZ2xlU3dpdGNoT3V0bGluZSA9IFwiTTE3LDEwQTIsMiAwIDAsMSAxOSwxMkEyLDIgMCAwLDEgMTcsMTRBMiwyIDAgMCwxIDE1LDEyQTIsMiAwIDAsMSAxNywxME0xNyw3QTUsNSAwIDAsMSAyMiwxMkE1LDUgMCAwLDEgMTcsMTdIN0E1LDUgMCAwLDEgMiwxMkE1LDUgMCAwLDEgNyw3SDE3TTcsOUEzLDMgMCAwLDAgNCwxMkEzLDMgMCAwLDAgNywxNUgxN0EzLDMgMCAwLDAgMjAsMTJBMywzIDAgMCwwIDE3LDlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUb2lsZXQgPSBcIk05LDIySDE3VjE5LjVDMTkuNDEsMTcuODcgMjEsMTUuMTIgMjEsMTJWNEEyLDIgMCAwLDAgMTksMkgxNUMxMy44OSwyIDEzLDIuOSAxMyw0VjEySDNDMywxNS4wOSA1LDE4IDksMTkuNVYyMk01LjI5LDE0SDE4LjcxQzE4LjE0LDE1LjkxIDE2Ljc3LDE3LjUgMTUsMTguMzNWMjBIMTFWMTguMzNDOSwxOCA1Ljg2LDE1LjkxIDUuMjksMTRNMTUsNEgxOVYxMkgxNVY0TTE2LDVWOEgxOFY1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2xib3ggPSBcIk05LDVWNkgxNVY1SDlNMjIsMThDMjIsMTguNTMgMjEuNzksMTkgMjEuNCwxOS40MUMyMSwxOS44MSAyMC41NSwyMCAyMCwyMEg0QzMuNDUsMjAgMywxOS44MSAyLjYsMTkuNDFDMi4yMSwxOSAyLDE4LjUzIDIsMThWMTRIN1YxNUg5VjE0SDE1VjE1SDE3VjE0SDIyVjE4TTQuNSw3LjIyQzQuODQsNi40MSA1LjQ1LDYgNi4zMyw2SDdWNUM3LDQuNDUgNy4xOCw0IDcuNTcsMy41OUM3Ljk2LDMuMiA4LjQ0LDMgOSwzSDE1QzE1LjU2LDMgMTYuMDQsMy4yIDE2LjQzLDMuNTlDMTYuODIsNCAxNyw0LjQ1IDE3LDVWNkgxNy42N0MxOC41NSw2IDE5LjE2LDYuNDEgMTkuNSw3LjIyTDIxLjU4LDEySDE3VjExSDE1VjEySDlWMTFIN1YxMkgyLjQyTDQuNSw3LjIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2xib3hPdXRsaW5lID0gXCJNMjAsMThWMTRIMTdWMTVIMTVWMTRIOVYxNUg3VjE0SDRWMThIMjBNNi4zMyw4TDQuNTksMTJIN1YxMUg5VjEySDE1VjExSDE3VjEySDE5LjQxTDE3LjY3LDhINi4zM005LDVWNkgxNVY1SDlNMjEuODQsMTIuNjFDMjEuOTQsMTIuODMgMjIsMTMuMDkgMjIsMTMuNDFWMThDMjIsMTguNTMgMjEuNzksMTkgMjEuNCwxOS40MUMyMSwxOS44MSAyMC41NSwyMCAyMCwyMEg0QzMuNDUsMjAgMywxOS44MSAyLjYsMTkuNDFDMi4yMSwxOSAyLDE4LjUzIDIsMThWMTMuNDFDMiwxMy4wOSAyLjA2LDEyLjgzIDIuMTYsMTIuNjFMNC41LDcuMjJDNC44NCw2LjQxIDUuNDUsNiA2LjMzLDZIN1Y1QzcsNC40NSA3LjE4LDQgNy41NywzLjU5QzcuOTYsMy4yIDguNDQsMyA5LDNIMTVDMTUuNTYsMyAxNi4wNCwzLjIgMTYuNDMsMy41OUMxNi44Miw0IDE3LDQuNDUgMTcsNVY2SDE3LjY3QzE4LjU1LDYgMTkuMTYsNi40MSAxOS41LDcuMjJMMjEuODQsMTIuNjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHMgPSBcIk0yMS43MSAyMC4yOUwyMC4yOSAyMS43MUExIDEgMCAwIDEgMTguODggMjEuNzFMNyA5Ljg1QTMuODEgMy44MSAwIDAgMSA2IDEwQTQgNCAwIDAgMSAyLjIyIDQuN0w0Ljc2IDcuMjRMNS4yOSA2LjcxTDYuNzEgNS4yOUw3LjI0IDQuNzZMNC43IDIuMjJBNCA0IDAgMCAxIDEwIDZBMy44MSAzLjgxIDAgMCAxIDkuODUgN0wyMS43MSAxOC44OEExIDEgMCAwIDEgMjEuNzEgMjAuMjlNMi4yOSAxOC44OEExIDEgMCAwIDAgMi4yOSAyMC4yOUwzLjcxIDIxLjcxQTEgMSAwIDAgMCA1LjEyIDIxLjcxTDEwLjU5IDE2LjI1TDcuNzYgMTMuNDJNMjAgMkwxNiA0VjZMMTMuODMgOC4xN0wxNS44MyAxMC4xN0wxOCA4SDIwTDIyIDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcCA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTZMMTIsMjJMOCwxOEg0QTIsMiAwIDAsMSAyLDE2VjRBMiwyIDAgMCwxIDQsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwQWNjb3VudCA9IFwiTTIwLDJINEEyLDIgMCAwLDAgMiw0VjE2QTIsMiAwIDAsMCA0LDE4SDhMMTIsMjJMMTYsMThIMjBBMiwyIDAgMCwwIDIyLDE2VjRBMiwyIDAgMCwwIDIwLDJNMTIsNC4zQzEzLjUsNC4zIDE0LjcsNS41IDE0LjcsN0MxNC43LDguNSAxMy41LDkuNyAxMiw5LjdDMTAuNSw5LjcgOS4zLDguNSA5LjMsN0M5LjMsNS41IDEwLjUsNC4zIDEyLDQuM00xOCwxNUg2VjE0LjFDNiwxMi4xIDEwLDExIDEyLDExQzE0LDExIDE4LDEyLjEgMTgsMTQuMVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwQ2hlY2sgPSBcIk0yMCAySDRDMi45IDIgMiAyLjkgMiA0VjE2QzIgMTcuMTEgMi45IDE4IDQgMThIOEwxMiAyMkwxNiAxOEgyMEMyMS4xMSAxOCAyMiAxNy4xMSAyMiAxNlY0QzIyIDIuOSAyMS4xMSAyIDIwIDJNMTAuNDYgMTRMNi45NiAxMC41TDguMzcgOS4wOEwxMC40NiAxMS4xN0wxNS42NCA2TDE3LjA1IDcuNDFMMTAuNDYgMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcENoZWNrT3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0yMCAxNkgxNS4xN0wxMiAxOS4xN0w4LjgzIDE2SDRWNEgyMFYxNk0xMC43NSAxMy43MUw3LjI1IDEwLjIxTDguNjYgOC43OUwxMC43NSAxMC44OEwxNS4zNCA2LjNMMTYuNzUgNy43MUwxMC43NSAxMy43MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwRWRpdCA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk05LjA4IDE1SDdWMTIuOTFMMTMuMTcgNi43MkwxNS4yNCA4LjhMOS4wOCAxNU0xNi44NCA3LjJMMTUuODMgOC4yMUwxMy43NiA2LjE4TDE0Ljc3IDUuMTZDMTQuOTcgNC45NSAxNS4zMSA0Ljk0IDE1LjU1IDUuMTZMMTYuODQgNi40MUMxNy4wNSA2LjYyIDE3LjA2IDYuOTYgMTYuODQgNy4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBFZGl0T3V0bGluZSA9IFwiTTQgMkgyMEMyMS4xMSAyIDIyIDIuOSAyMiA0VjE2QzIyIDE3LjExIDIxLjExIDE4IDIwIDE4SDE2TDEyIDIyTDggMThINEMyLjkgMTggMiAxNy4xMSAyIDE2VjRDMiAyLjkgMi45IDIgNCAyTTQgNFYxNkg4LjgzTDEyIDE5LjE3TDE1LjE3IDE2SDIwVjRINE0xNS44NCA4LjJMMTQuODMgOS4yMUwxMi43NiA3LjE4TDEzLjc3IDYuMTZDMTMuOTcgNS45NSAxNC4zMSA1Ljk0IDE0LjU1IDYuMTZMMTUuODQgNy40MUMxNi4wNSA3LjYyIDE2LjA2IDcuOTYgMTUuODQgOC4yTTggMTEuOTFMMTIuMTcgNy43MkwxNC4yNCA5LjhMMTAuMDggMTRIOFYxMS45MVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwSW1hZ2UgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNMTksMTVWN0wxNSwxMUwxMyw5TDcsMTVIMTlNNyw1QTIsMiAwIDAsMCA1LDdBMiwyIDAgMCwwIDcsOUEyLDIgMCAwLDAgOSw3QTIsMiAwIDAsMCA3LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcEltYWdlT3V0bGluZSA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTZMMTIsMjJMOCwxOEg0QTIsMiAwIDAsMSAyLDE2VjRBMiwyIDAgMCwxIDQsMk00LDRWMTZIOC44M0wxMiwxOS4xN0wxNS4xNywxNkgyMFY0SDRNNy41LDZBMS41LDEuNSAwIDAsMSA5LDcuNUExLjUsMS41IDAgMCwxIDcuNSw5QTEuNSwxLjUgMCAwLDEgNiw3LjVBMS41LDEuNSAwIDAsMSA3LjUsNk02LDE0TDExLDlMMTMsMTFMMTgsNlYxNEg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBNaW51cyA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0xNiAxMUg4VjlIMTZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcE1pbnVzT3V0bGluZSA9IFwiTTIwIDJINEMyLjkgMiAyIDIuOSAyIDRWMTZDMiAxNy4xMSAyLjkgMTggNCAxOEg4TDEyIDIyTDE2IDE4SDIwQzIxLjExIDE4IDIyIDE3LjExIDIyIDE2VjRDMjIgMi45IDIxLjExIDIgMjAgMk0yMCAxNkgxNS4xN0wxMiAxOS4xN0w4LjgzIDE2SDRWNEgyMFYxNk0xNiAxMUg4VjlIMTZWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcE91dGxpbmUgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNNCw0VjE2SDguODNMMTIsMTkuMTdMMTUuMTcsMTZIMjBWNEg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBQbHVzID0gXCJNNCwySDIwQTIsMiAwIDAsMSAyMiw0VjE2QTIsMiAwIDAsMSAyMCwxOEgxNkwxMiwyMkw4LDE4SDRBMiwyIDAgMCwxIDIsMTZWNEEyLDIgMCAwLDEgNCwyTTExLDZWOUg4VjExSDExVjE0SDEzVjExSDE2VjlIMTNWNkgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwUGx1c091dGxpbmUgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNNCw0VjE2SDguODNMMTIsMTkuMTdMMTUuMTcsMTZIMjBWNEg0TTExLDZIMTNWOUgxNlYxMUgxM1YxNEgxMVYxMUg4VjlIMTFWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb29sdGlwUmVtb3ZlID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjExIDIuOSAxOCA0IDE4SDhMMTIgMjJMMTYgMThIMjBDMjEuMTEgMTggMjIgMTcuMTEgMjIgMTZWNEMyMiAyLjkgMjEuMTEgMiAyMCAyTTE1LjU0IDEyLjEyTDE0LjEyIDEzLjU0TDEyIDExLjQxTDkuODggMTMuNTRMOC40NyAxMi4xMkwxMC41OSAxMEw4LjQ2IDcuODhMOS44OCA2LjQ3TDEyIDguNTlMMTQuMTIgNi40N0wxNS41NCA3Ljg4TDEzLjQxIDEwTDE1LjU0IDEyLjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBSZW1vdmVPdXRsaW5lID0gXCJNMjAgMkg0QzIuOSAyIDIgMi45IDIgNFYxNkMyIDE3LjExIDIuOSAxOCA0IDE4SDhMMTIgMjJMMTYgMThIMjBDMjEuMTEgMTggMjIgMTcuMTEgMjIgMTZWNEMyMiAyLjkgMjEuMTEgMiAyMCAyTTIwIDE2SDE1LjE3TDEyIDE5LjE3TDguODMgMTZINFY0SDIwVjE2TTguNDYgMTIuMTJMMTAuNTkgMTBMOC40NiA3Ljg4TDkuODggNi40N0wxMiA4LjU5TDE0LjEyIDYuNDdMMTUuNTQgNy44OEwxMy40MSAxMEwxNS41NCAxMi4xMkwxNC4xMiAxMy41NEwxMiAxMS40MUw5Ljg4IDEzLjU0TDguNDYgMTIuMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vbHRpcFRleHQgPSBcIk00LDJIMjBBMiwyIDAgMCwxIDIyLDRWMTZBMiwyIDAgMCwxIDIwLDE4SDE2TDEyLDIyTDgsMThINEEyLDIgMCAwLDEgMiwxNlY0QTIsMiAwIDAsMSA0LDJNNSw1VjdIMTlWNUg1TTUsOVYxMUgxNVY5SDVNNSwxM1YxNUgxN1YxM0g1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb2x0aXBUZXh0T3V0bGluZSA9IFwiTTQsMkgyMEEyLDIgMCAwLDEgMjIsNFYxNkEyLDIgMCAwLDEgMjAsMThIMTZMMTIsMjJMOCwxOEg0QTIsMiAwIDAsMSAyLDE2VjRBMiwyIDAgMCwxIDQsMk00LDRWMTZIOC44M0wxMiwxOS4xN0wxNS4xNywxNkgyMFY0SDRNNiw3SDE4VjlINlY3TTYsMTFIMTZWMTNINlYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb290aCA9IFwiTTcsMkM0LDIgMiw1IDIsOEMyLDEwLjExIDMsMTMgNCwxNEM1LDE1IDYsMjIgOCwyMkMxMi41NCwyMiAxMCwxNSAxMiwxNUMxNCwxNSAxMS40NiwyMiAxNiwyMkMxOCwyMiAxOSwxNSAyMCwxNEMyMSwxMyAyMiwxMC4xMSAyMiw4QzIyLDUgMjAsMiAxNywyQzE0LDIgMTQsMyAxMiwzQzEwLDMgMTAsMiA3LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vdGhPdXRsaW5lID0gXCJNNywyQzQsMiAyLDUgMiw4QzIsMTAuMTEgMywxMyA0LDE0QzUsMTUgNiwyMiA4LDIyQzEyLjU0LDIyIDEwLDE1IDEyLDE1QzE0LDE1IDExLjQ2LDIyIDE2LDIyQzE4LDIyIDE5LDE1IDIwLDE0QzIxLDEzIDIyLDEwLjExIDIyLDhDMjIsNSAyMCwyIDE3LDJDMTQsMiAxNCwzIDEyLDNDMTAsMyAxMCwyIDcsMk03LDRDOSw0IDEwLDUgMTIsNUMxNCw1IDE1LDQgMTcsNEMxOC42Nyw0IDIwLDYgMjAsOEMyMCw5Ljc1IDE5LjE0LDEyLjExIDE4LjE5LDEzLjA2QzE3LjMzLDEzLjkyIDE2LjA2LDE5Ljk0IDE1LjUsMTkuOTRDMTUuMjksMTkuOTQgMTUsMTguODggMTUsMTcuNTlDMTUsMTUuNTUgMTQuNDMsMTMgMTIsMTNDOS41NywxMyA5LDE1LjU1IDksMTcuNTlDOSwxOC44OCA4LjcxLDE5Ljk0IDguNSwxOS45NEM3Ljk0LDE5Ljk0IDYuNjcsMTMuOTIgNS44MSwxMy4wNkM0Ljg2LDEyLjExIDQsOS43NSA0LDhDNCw2IDUuMzMsNCA3LDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vdGhicnVzaCA9IFwiTTEyLjkxIDYuNDNMMTUuMDMgOC41NUwxNi4wOSA3LjVMMTUuMDMgNi40M0wxNy44NiAzLjZMMTguOTIgNC42NkwyMCAzLjZMMTcuODYgMS41TTMgMjAuNTdMNC40MyAyMkwxNC41IDExLjlMMTYuNjMgMTEuMTlMMjEuNCA2LjQzQzIyLjE4IDUuNjUgMjIuMTggNC4zOCAyMS40IDMuNkwxNS41NSA5LjQ0TDEzLjQzIDEwLjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvb3RoYnJ1c2hFbGVjdHJpYyA9IFwiTTEyIDEuNVYxNEMxMC4zNCAxNCA5IDE1LjM0IDkgMTdWMjJIMTdWMTdDMTcgMTUuMzQgMTUuNjYgMTQgMTQgMTRWMy41QzE0IDIuNCAxMy4xMSAxLjUgMTIgMS41TTcuNSAyVjlIMTFWNy41SDlWMy41SDExVjJINy41TTEzIDE3LjVDMTMuODMgMTcuNSAxNC41IDE4LjE3IDE0LjUgMTlDMTQuNSAxOS44MyAxMy44MyAyMC41IDEzIDIwLjVDMTIuMTcgMjAuNSAxMS41IDE5LjgzIDExLjUgMTlDMTEuNSAxOC4xNyAxMi4xNyAxNy41IDEzIDE3LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9vdGhicnVzaFBhc3RlID0gXCJNMTcuODYgMS41TDEyLjkxIDYuNDNMMTUuMDMgOC41NUwxNi4wOSA3LjVMMTUuMDMgNi40M0wxNy44NiAzLjZMMTguOTIgNC42NkwyMCAzLjZNMjEuNCAzLjZMMTUuNTYgOS40NEwxMy40MyAxMC4xNUwzIDIwLjU3TDQuNDMgMjJMMTAuMDggMTYuMzNMMTQuMzMgMjAuNTdMMTguNTcgMTYuMzNMMTQuMzMgMTIuMDlMMTQuNSAxMS45TDE2LjYzIDExLjE5TDIxLjQgNi40M0MyMi4xOCA1LjY1IDIyLjE4IDQuMzggMjEuNCAzLjZNNi41NSA0LjMxTDIuMzEgOC41NUw3LjI2IDEzLjVMMTEuNSA5LjI2TTE4LjIyIDE4LjFMMTYuMDkgMjAuMjJMMTcuNSAyMS42M0wxOS42MyAxOS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvcmNoID0gXCJNOC42IDkuNkM5IDEwLjIgOS41IDEwLjcgMTAuMiAxMUgxNC4yQzE0LjUgMTAuOSAxNC43IDEwLjcgMTQuOSAxMC41QzE1LjkgOS41IDE2LjMgOCAxNS44IDYuN0wxNS43IDYuNUMxNS42IDYuMiAxNS40IDYgMTUuMiA1LjhDMTUuMSA1LjYgMTQuOSA1LjUgMTQuOCA1LjNDMTQuNCA1IDE0IDQuNyAxMy42IDQuM0MxMi43IDMuNCAxMi42IDIgMTMuMSAxQzEyLjYgMS4xIDEyLjEgMS40IDExLjcgMS44QzEwLjIgMyA5LjYgNS4xIDEwLjMgN1Y3LjJDMTAuMyA3LjMgMTAuMiA3LjQgMTAuMSA3LjVDMTAgNy42IDkuOCA3LjUgOS43IDcuNEw5LjYgNy4zQzkgNi41IDguOSA1LjMgOS4zIDQuM0M4LjQgNS4xIDcuOSA2LjQgOCA3LjdDOCA4IDguMSA4LjMgOC4yIDguNkM4LjIgOC45IDguNCA5LjMgOC42IDkuNk0xMi4zIDguMUMxMi40IDcuNiAxMi4yIDcuMiAxMi4xIDYuOEMxMiA2LjQgMTIgNiAxMi4yIDUuNkwxMi41IDYuMkMxMi45IDYuOCAxMy42IDcgMTMuOCA3LjhWOC4xQzEzLjggOC42IDEzLjYgOS4xIDEzLjMgOS40QzEzLjEgOS41IDEyLjkgOS43IDEyLjcgOS43QzEyLjEgOS45IDExLjQgOS42IDExIDkuMkMxMS44IDkuMiAxMi4yIDguNiAxMi4zIDguMU0xNSAxMlYxNEgxNEwxMyAyMkgxMUwxMCAxNEg5VjEySDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvcnRvaXNlID0gXCJNMTkuMzEsNS42QzE4LjA5LDUuNTYgMTYuODgsNi41IDE2LjUsOEMxNiwxMCAxNiwxMCAxNSwxMUMxMywxMyAxMCwxNCA0LDE1QzMsMTUuMTYgMi41LDE1LjUgMiwxNkM0LDE2IDYsMTYgNC41LDE3LjVMMywxOUg2TDgsMTdDMTAsMTggMTEuMzMsMTggMTMuMzMsMTdMMTQsMTlIMTdMMTYsMTZDMTYsMTYgMTcsMTIgMTgsMTFDMTksMTAgMTksMTEgMjAsMTFDMjEsMTEgMjIsMTAgMjIsOC41QzIyLDggMjIsNyAyMC41LDZDMjAuMTUsNS43NiAxOS43NCw1LjYyIDE5LjMxLDUuNk05LDZBNiw2IDAgMCwwIDMsMTJDMywxMi42IDMuMTMsMTMuMDggMy4yMywxMy42QzkuMTUsMTIuNjIgMTIuMjksMTEuNTkgMTMuOTMsOS45NEwxNC40Myw5LjQ0QzEzLjQ0LDcuMzQgMTEuMzIsNiA5LDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG9zbGluayA9IFwiTTIwIDEwVjdMMTcgNEg3TDQgN1YxMEMyLjkgMTAgMiAxMC45IDIgMTJTMi45IDE0IDQgMTRWMThDNCAxOS4xIDQuOSAyMCA2IDIwSDE4QzE5LjEgMjAgMjAgMTkuMSAyMCAxOFYxNEMyMS4xMSAxNCAyMiAxMy4xMSAyMiAxMlMyMS4xMSAxMCAyMCAxME0xMiAxNkM5Ljc5IDE2IDggMTQuMjEgOCAxMlM5Ljc5IDggMTIgOCAxNiA5Ljc5IDE2IDEyIDE0LjIxIDE2IDEyIDE2TTE0IDEyQzE0IDEzLjExIDEzLjExIDE0IDEyIDE0UzEwIDEzLjExIDEwIDEyIDEwLjkgMTAgMTIgMTAgMTQgMTAuOSAxNCAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3VybmFtZW50ID0gXCJNMiwyVjRIN1Y4SDJWMTBIN0M4LjExLDEwIDksOS4xMSA5LDhWN0gxNFYxN0g5VjE2QzksMTQuODkgOC4xMSwxNCA3LDE0SDJWMTZIN1YyMEgyVjIySDdDOC4xMSwyMiA5LDIxLjExIDksMjBWMTlIMTRDMTUuMTEsMTkgMTYsMTguMTEgMTYsMTdWMTNIMjJWMTFIMTZWN0MxNiw1Ljg5IDE1LjExLDUgMTQsNUg5VjRDOSwyLjg5IDguMTEsMiA3LDJIMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3dUcnVjayA9IFwiTTE1LDEwSDIwLjM5TDE3LjA2LDZIMTVWMTBNMTcuNSwxOC41QzE3Ljg5LDE4LjUgMTguMjQsMTguMzcgMTguNTQsMTguMDdDMTguODQsMTcuNzcgMTksMTcuNDIgMTksMTdDMTksMTYuNjEgMTguODQsMTYuMjYgMTguNTQsMTUuOTZDMTguMjQsMTUuNjYgMTcuODksMTUuNSAxNy41LDE1LjVDMTcuMDgsMTUuNSAxNi43MywxNS42NiAxNi40MywxNS45NkMxNi4xMywxNi4yNiAxNiwxNi42MSAxNiwxN0MxNiwxNy40MiAxNi4xMywxNy43NyAxNi40MywxOC4wN0MxNi43MywxOC4zNyAxNy4wOCwxOC41IDE3LjUsMTguNU02LDE4LjVDNi40NCwxOC41IDYuOCwxOC4zNyA3LjA4LDE4LjA3QzcuMzYsMTcuNzcgNy41LDE3LjQyIDcuNSwxN0M3LjUsMTYuNjEgNy4zNiwxNi4yNiA3LjA4LDE1Ljk2QzYuOCwxNS42NiA2LjQ0LDE1LjUgNiwxNS41QzUuNTYsMTUuNSA1LjIsMTUuNjYgNC45MiwxNS45NkM0LjY0LDE2LjI2IDQuNSwxNi42MSA0LjUsMTdDNC41LDE3LjQyIDQuNjQsMTcuNzcgNC45MiwxOC4wN0M1LjIsMTguMzcgNS41NiwxOC41IDYsMTguNU0xOCw0TDIzLDEwVjE3SDIwLjVDMjAuNSwxNy44MyAyMC4xOSwxOC41MyAxOS41OSwxOS4xM0MxOSwxOS43MiAxOC4zLDIwIDE3LjUsMjBDMTYuNjcsMjAgMTUuOTcsMTkuNzIgMTUuMzgsMTkuMTNDMTQuNzgsMTguNTMgMTQuNSwxNy44MyAxNC41LDE3SDlDOSwxNy44MyA4LjcsMTguNTMgOC4xMSwxOS4xM0M3LjUsMTkuNzIgNi44MSwyMCA2LDIwQzUuMTksMjAgNC41LDE5LjcyIDMuODksMTkuMTNDMy4zLDE4LjUzIDMsMTcuODMgMywxN0gxVjEzSDkuMTlMMyw4LjExVjExSDFWNUgyTDEzLDExLjA2VjRIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG93ZXJCZWFjaCA9IFwiTTE3LDRWOEgxOFYxMEgxNy42NEwyMSwyM0gxOC45M0wxOC4zNywyMC44M0wxMiwxNy4xNUw1LjYzLDIwLjgzTDUuMDcsMjNIM0w2LjM2LDEwSDZWOEg3VjRINlYzTDE4LDFWNEgxN003LjI4LDE0LjQzTDYuMzMsMTguMTJMMTAsMTZMNy4yOCwxNC40M00xNS41NywxMEg4LjQzTDcuOCwxMi40MkwxMiwxNC44NUwxNi4yLDEyLjQyTDE1LjU3LDEwTTE3LjY3LDE4LjEyTDE2LjcyLDE0LjQzTDE0LDE2TDE3LjY3LDE4LjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRvd2VyRmlyZSA9IFwiTTE3LDRWOEgxOFYxMEgxNy42NEwyMSwyM0gxOC45M0wxOC4zNywyMC44M0wxMiwxNy4xNUw1LjYzLDIwLjgzTDUuMDcsMjNIM0w2LjM2LDEwSDZWOEg3VjRINlYzTDEyLDFMMTgsM1Y0SDE3TTcuMjgsMTQuNDNMNi4zMywxOC4xMkwxMCwxNkw3LjI4LDE0LjQzTTE1LjU3LDEwSDguNDNMNy44LDEyLjQyTDEyLDE0Ljg1TDE2LjIsMTIuNDJMMTUuNTcsMTBNMTcuNjcsMTguMTJMMTYuNzIsMTQuNDNMMTQsMTZMMTcuNjcsMTguMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2sgPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgyMVY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRveUJyaWNrTWFya2VyID0gXCJNMTkgNlY1QTIgMiAwIDAgMCAxNyAzSDE1QTIgMiAwIDAgMCAxMyA1VjZIMTFWNUEyIDIgMCAwIDAgOSAzSDdBMiAyIDAgMCAwIDUgNVY2SDNWMjBIMTQuNTRBOS41NSA5LjU1IDAgMCAxIDEzIDE1LjVBNS41OCA1LjU4IDAgMCAxIDE4LjUgMTBBNS4zIDUuMyAwIDAgMSAyMSAxMC42M1Y2TTE4LjUgMTJBMy41NCAzLjU0IDAgMCAwIDE1IDE1LjVDMTUgMTguMSAxOC41IDIyIDE4LjUgMjJTMjIgMTguMSAyMiAxNS41QTMuNTQgMy41NCAwIDAgMCAxOC41IDEyTTE4LjUgMTYuOEExLjIgMS4yIDAgMSAxIDE4LjUgMTQuNEExLjI5IDEuMjkgMCAwIDEgMTkuNyAxNS42QTEuMTUgMS4xNSAwIDAgMSAxOC41IDE2LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tNYXJrZXJPdXRsaW5lID0gXCJNMTguNSAxMkEzLjU0IDMuNTQgMCAwIDAgMTUgMTUuNUMxNSAxOC4xIDE4LjUgMjIgMTguNSAyMlMyMiAxOC4xIDIyIDE1LjVBMy41NCAzLjU0IDAgMCAwIDE4LjUgMTJNMTguNSAxNi44QTEuMiAxLjIgMCAxIDEgMTguNSAxNC40QTEuMjkgMS4yOSAwIDAgMSAxOS43IDE1LjZBMS4xNSAxLjE1IDAgMCAxIDE4LjUgMTYuOE0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxNC41NEExNS41NSAxNS41NSAwIDAgMSAxMy41NCAxOEg1VjhIMTlWMTBBNS4xMSA1LjExIDAgMCAxIDIxIDEwLjZWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja01pbnVzID0gXCJNMjMgMjBIMTVWMThIMjNWMjBNMTMgMTlDMTMgMTUuNjkgMTUuNjkgMTMgMTkgMTNDMTkuNyAxMyAyMC4zNyAxMy4xMyAyMSAxMy4zNVY2SDE5VjVDMTkgMy45IDE4LjExIDMgMTcgM0gxNUMxMy45IDMgMTMgMy45IDEzIDVWNkgxMVY1QzExIDMuOSAxMC4xMSAzIDkgM0g3QzUuOSAzIDUgMy45IDUgNVY2SDNWMjBIMTMuMDlDMTMuMDQgMTkuNjcgMTMgMTkuMzQgMTMgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tNaW51c091dGxpbmUgPSBcIk0xMy4wOSAyMEgzVjZINVY1QzUgMy45IDUuOSAzIDcgM0g5QzEwLjExIDMgMTEgMy45IDExIDVWNkgxM1Y1QzEzIDMuOSAxMy45IDMgMTUgM0gxN0MxOC4xMSAzIDE5IDMuOSAxOSA1VjZIMjFWMTMuMzVDMjAuMzcgMTMuMTMgMTkuNyAxMyAxOSAxM1Y4SDVWMThIMTMuMDlDMTMuMDQgMTguMzMgMTMgMTguNjYgMTMgMTlTMTMuMDQgMTkuNjcgMTMuMDkgMjBNMjMgMThIMTVWMjBIMjNWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tPdXRsaW5lID0gXCJNMTkgNlY1QTIgMiAwIDAgMCAxNyAzSDE1QTIgMiAwIDAgMCAxMyA1VjZIMTFWNUEyIDIgMCAwIDAgOSAzSDdBMiAyIDAgMCAwIDUgNVY2SDNWMjBIMjFWNk0xOSAxOEg1VjhIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tQbHVzID0gXCJNMTkgNlY1QTIgMiAwIDAgMCAxNyAzSDE1QTIgMiAwIDAgMCAxMyA1VjZIMTFWNUEyIDIgMCAwIDAgOSAzSDdBMiAyIDAgMCAwIDUgNVY2SDNWMjBIMTMuMDlBNS40NyA1LjQ3IDAgMCAxIDEzIDE5QTYgNiAwIDAgMSAyMSAxMy4zNFY2TTIwIDE1VjE4SDIzVjIwSDIwVjIzSDE4VjIwSDE1VjE4SDE4VjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRveUJyaWNrUGx1c091dGxpbmUgPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxNFYxOEg1VjhIMTlWMTNIMjFWNk0yMSAxNVYxOEgyNFYyMEgyMVYyM0gxOVYyMEgxNlYxOEgxOVYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja1JlbW92ZSA9IFwiTTE5IDZWNUEyIDIgMCAwIDAgMTcgM0gxNUEyIDIgMCAwIDAgMTMgNVY2SDExVjVBMiAyIDAgMCAwIDkgM0g3QTIgMiAwIDAgMCA1IDVWNkgzVjIwSDEzLjA5QTUuNDcgNS40NyAwIDAgMSAxMyAxOUE2IDYgMCAwIDEgMjEgMTMuMzRWNk0yMi41NCAxNi44OEwyMC40MSAxOUwyMi41NCAyMS4xMkwyMS4xMiAyMi41NEwxOSAyMC40MUwxNi44OCAyMi41NEwxNS40NiAyMS4xMkwxNy41OSAxOUwxNS40NiAxNi44OEwxNi44OCAxNS40NkwxOSAxNy41OUwyMS4xMiAxNS40NlpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja1JlbW92ZU91dGxpbmUgPSBcIk0xOSA2VjVDMTkgMy45IDE4LjEgMyAxNyAzSDE1QzEzLjkgMyAxMyAzLjkgMTMgNVY2SDExVjVDMTEgMy45IDEwLjEgMyA5IDNIN0M1LjkgMyA1IDMuOSA1IDVWNkgzVjIwSDE0VjE4SDVWOEgxOVYxM0gyMVY2TTE3Ljg4IDE1LjQ2TDIwIDE3LjU5TDIyLjEyIDE1LjQ3TDIzLjU0IDE2Ljg4TDIxLjQxIDE5TDIzLjU0IDIxLjEyTDIyLjEyIDIyLjU0TDIwIDIwLjQxTDE3Ljg4IDIyLjU0TDE2LjQ2IDIxLjEyTDE4LjU5IDE5TDE2LjQ3IDE2Ljg4XCI7XHJcbmV4cG9ydCB2YXIgbWRpVG95QnJpY2tTZWFyY2ggPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxMS44MUE2LjUgNi41IDAgMCAxIDIxIDEwLjgxVjZNMjAuMzEgMTcuOUE0LjUgNC41IDAgMSAwIDE4Ljg4IDE5LjMyTDIyIDIyLjM5TDIzLjM5IDIxTTE2LjUgMThBMi41IDIuNSAwIDEgMSAxOSAxNS41QTIuNSAyLjUgMCAwIDEgMTYuNSAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUb3lCcmlja1NlYXJjaE91dGxpbmUgPSBcIk0xOSA2VjVBMiAyIDAgMCAwIDE3IDNIMTVBMiAyIDAgMCAwIDEzIDVWNkgxMVY1QTIgMiAwIDAgMCA5IDNIN0EyIDIgMCAwIDAgNSA1VjZIM1YyMEgxMS44MUE2LjU5IDYuNTkgMCAwIDEgMTAuNSAxOEg1VjhIMTlWOS41QTYuNTkgNi41OSAwIDAgMSAyMSAxMC44MVY2TTIwLjMxIDE3LjlBNC41IDQuNSAwIDEgMCAxOC44OCAxOS4zMkwyMiAyMi4zOUwyMy4zOSAyMU0xNi41IDE4QTIuNSAyLjUgMCAxIDEgMTkgMTUuNUEyLjUgMi41IDAgMCAxIDE2LjUgMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhY2tMaWdodCA9IFwiTTYsMVYzSDlWNi40TDQuMTEsNC4zOEwxLjQzLDEwLjg0TDYuOTcsMTMuMTRMMTEuOTQsMTYuODJMMTMuNzksMTcuNTlMMTcuNjIsOC4zNUwxNS43Nyw3LjU4TDExLDYuODdWM0gxNFYxSDZNMjEuODEsNi4yOUwxOS41LDcuMjVMMjAuMjYsOS4xTDIyLjU3LDguMTRMMjEuODEsNi4yOU0xOS43OCwxMy41N0wxOSwxNS40MkwyMS43OSwxNi41N0wyMi41NSwxNC43MkwxOS43OCwxMy41N00xNi4xOSwxOC45M0wxNC4zNCwxOS42OUwxNS4zLDIyTDE3LjE1LDIxLjIzTDE2LjE5LDE4LjkzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYWNrcGFkID0gXCJNNCwzSDIwQTIsMiAwIDAsMSAyMiw1VjE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5VjVBMiwyIDAgMCwxIDQsM000LDVWMTNIMjBWNUg0TTQsMTlIMTFWMTVINFYxOU0yMCwxOVYxNUgxM1YxOUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFja3BhZExvY2sgPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWMTdDMSwxOC4xMSAxLjg5LDE5IDMsMTlIMTRWMTdIMTJWMTNIMTYuNjhDMTcuNSwxMi4zNSAxOC40NywxMiAxOS41LDEyQzIwLDEyIDIwLjUsMTIuMDkgMjEsMTIuMjZWM0MyMSwxLjg5IDIwLjExLDEgMTksMUgzTTMsM0gxOVYxMUgzVjNNMywxM0gxMFYxN0gzVjEzTTE5LjUsMTRBMi41LDIuNSAwIDAsMCAxNywxNi41VjE3QTEsMSAwIDAsMCAxNiwxOFYyMkExLDEgMCAwLDAgMTcsMjNIMjJBMSwxIDAgMCwwIDIzLDIyVjE4QTEsMSAwIDAsMCAyMiwxN1YxNi41QTIuNSwyLjUgMCAwLDAgMTkuNSwxNE0xOS41LDE1QTEuNSwxLjUgMCAwLDEgMjEsMTYuNVYxN0gxOFYxNi41QTEuNSwxLjUgMCAwLDEgMTkuNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFjdG9yID0gXCJNNSw0VjExLjI2QzMuMiwxMS45IDIsMTMuNiAyLDE1LjVDMiwxOCA0LDIwIDYuNSwyMEM4Ljc5LDIwIDEwLjcxLDE4LjI4IDEwLjk3LDE2SDE1LjE3QzE1LjA2LDE2LjMyIDE1LDE2LjY2IDE1LDE3QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdDMjEsMTYuNjYgMjAuOTQsMTYuMzIgMjAuODIsMTZIMjJWMTNDMjIsMTEuODkgMjEuMTEsMTEgMjAsMTFIMTUuMDRMMTMuNjUsNEg1TTcsNkgxMkwxMywxMVYxNEgxMC43NEMxMC4xNiwxMi4zOCA4LjcxLDExLjIzIDcsMTEuMDNWNk02LjUsMTMuMjVBMi4yNSwyLjI1IDAgMCwxIDguNzUsMTUuNUEyLjI1LDIuMjUgMCAwLDEgNi41LDE3Ljc1QTIuMjUsMi4yNSAwIDAsMSA0LjI1LDE1LjVBMi4yNSwyLjI1IDAgMCwxIDYuNSwxMy4yNU0xOCwxNS41QTEuNSwxLjUgMCAwLDEgMTkuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE4LjVBMS41LDEuNSAwIDAsMSAxNi41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFjdG9yVmFyaWFudCA9IFwiTTEzLjMgMi43OUw5LjggNi4yOUwxMC41IDdMMTEuOSA1LjYxTDEzIDYuNzFWOUMxMyAxMC4xMSAxMi4xMSAxMSAxMSAxMUgxMC40NkE2IDYgMCAwIDEgMTIgMTVBNiA2IDAgMCAxIDExLjkxIDE2SDE1LjAzQTQuNSA0LjUgMCAwIDEgMTkuNSAxMkE0LjUgNC41IDAgMCAxIDIyIDEyLjc2VjhDMjIgNi44OSAyMS4xMSA2IDIwIDZIMTMuNzFMMTIuNjEgNC45TDE0IDMuNUwxMy4zIDIuNzlNNCA3QzMuNDUgNyAzIDcuNDUgMyA4QzMgOC41NSAzLjQ1IDkgNCA5SDlDOSA3LjkgOC4xMSA3IDcgN0g0TTYgMTBBNSA1IDAgMCAwIDQuNDQgMTAuMjVMNC44IDExLjE4TDQuMzMgMTEuMzZMNCAxMC40M0E1IDUgMCAwIDAgMS41NCAxMi43NEwyLjQ1IDEzLjE1TDIuMjQgMTMuNkwxLjM0IDEzLjJBNSA1IDAgMCAwIDEgMTVBNSA1IDAgMCAwIDEuMjUgMTYuNTZMMi4xOCAxNi4yTDIuMzYgMTYuNjdMMS40MyAxN0E1IDUgMCAwIDAgMy43NCAxOS40Nkw0LjE0IDE4LjU1TDQuNiAxOC43Nkw0LjIgMTkuNjZBNSA1IDAgMCAwIDYgMjBBNSA1IDAgMCAwIDcuNTYgMTkuNzVMNy4yIDE4LjgyTDcuNjcgMTguNjRMOCAxOS41N0E1IDUgMCAwIDAgMTAuNDYgMTcuMjZMOS41NSAxNi44Nkw5Ljc2IDE2LjRMMTAuNjYgMTYuOEE1IDUgMCAwIDAgMTEgMTVBNSA1IDAgMCAwIDEwLjc1IDEzLjQ0TDkuODIgMTMuOEw5LjY0IDEzLjMzTDEwLjU3IDEzQTUgNSAwIDAgMCA4LjI2IDEwLjU0TDcuODYgMTEuNDVMNy40IDExLjI0TDcuOCAxMC4zNEE1IDUgMCAwIDAgNiAxME02IDEyQTMgMyAwIDAgMSA5IDE1QTMgMyAwIDAgMSA2IDE4QTMgMyAwIDAgMSAzIDE1QTMgMyAwIDAgMSA2IDEyTTE5LjUgMTNBMy41IDMuNSAwIDAgMCAxNiAxNi41QTMuNSAzLjUgMCAwIDAgMTkuNSAyMEEzLjUgMy41IDAgMCAwIDIzIDE2LjVBMy41IDMuNSAwIDAgMCAxOS41IDEzTTE5LjUgMTVBMS41IDEuNSAwIDAgMSAyMSAxNi41QTEuNSAxLjUgMCAwIDEgMTkuNSAxOEExLjUgMS41IDAgMCAxIDE4IDE2LjVBMS41IDEuNSAwIDAgMSAxOS41IDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYWRlbWFyayA9IFwiTTkuOCw4LjQ0SDYuODdWMTZINC44OVY4LjQ0SDJWN0g5LjhWOC40NE0xMy41LDdMMTUuOTYsMTMuNUwxOC40MSw3SDIxVjE2SDE5VjEzLjVMMTkuMjIsOS4yNEwxNi42MywxNkgxNS4yOEwxMi43LDkuMjVMMTIuOSwxMy41VjE2SDEwLjkzVjdIMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFmZmljQ29uZSA9IFwiTTE3IDE1TDE4IDE5SDIxVjIySDNWMTlINkw3IDE1SDE3TTE1IDhMMTYgMTJIOEw5IDhIMTVNMTMgMUwxNCA1SDEwTDExIDFIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhZmZpY0xpZ2h0ID0gXCJNMTIsOUEyLDIgMCAwLDEgMTAsN0MxMCw1Ljg5IDEwLjksNSAxMiw1QzEzLjExLDUgMTQsNS44OSAxNCw3QTIsMiAwIDAsMSAxMiw5TTEyLDE0QTIsMiAwIDAsMSAxMCwxMkMxMCwxMC44OSAxMC45LDEwIDEyLDEwQzEzLjExLDEwIDE0LDEwLjg5IDE0LDEyQTIsMiAwIDAsMSAxMiwxNE0xMiwxOUEyLDIgMCAwLDEgMTAsMTdDMTAsMTUuODkgMTAuOSwxNSAxMiwxNUMxMy4xMSwxNSAxNCwxNS44OSAxNCwxN0EyLDIgMCAwLDEgMTIsMTlNMjAsMTBIMTdWOC44NkMxOC43Miw4LjQxIDIwLDYuODYgMjAsNUgxN1Y0QTEsMSAwIDAsMCAxNiwzSDhBMSwxIDAgMCwwIDcsNFY1SDRDNCw2Ljg2IDUuMjgsOC40MSA3LDguODZWMTBINEM0LDExLjg2IDUuMjgsMTMuNDEgNywxMy44NlYxNUg0QzQsMTYuODYgNS4yOCwxOC40MSA3LDE4Ljg2VjIwQTEsMSAwIDAsMCA4LDIxSDE2QTEsMSAwIDAsMCAxNywyMFYxOC44NkMxOC43MiwxOC40MSAyMCwxNi44NiAyMCwxNUgxN1YxMy44NkMxOC43MiwxMy40MSAyMCwxMS44NiAyMCwxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbiA9IFwiTTEyLDJDOCwyIDQsMi41IDQsNlYxNS41QTMuNSwzLjUgMCAwLDAgNy41LDE5TDYsMjAuNVYyMUg4LjIzTDEwLjIzLDE5SDE0TDE2LDIxSDE4VjIwLjVMMTYuNSwxOUEzLjUsMy41IDAgMCwwIDIwLDE1LjVWNkMyMCwyLjUgMTYuNDIsMiAxMiwyTTcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxNEExLjUsMS41IDAgMCwxIDksMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN00xMSwxMEg2VjZIMTFWMTBNMTMsMTBWNkgxOFYxMEgxM00xNi41LDE3QTEuNSwxLjUgMCAwLDEgMTUsMTUuNUExLjUsMS41IDAgMCwxIDE2LjUsMTRBMS41LDEuNSAwIDAsMSAxOCwxNS41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbkNhciA9IFwiTTEyLDRINUEzLDMgMCAwLDAgMiw3VjE1QTMsMyAwIDAsMCA1LDE4TDQsMTlWMjBINUw3LDE3Ljk3TDksMThWMTNINFY2SDEzVjhIMTVWN0EzLDMgMCAwLDAgMTIsNE01LDE0QTEsMSAwIDAsMSA2LDE1QTEsMSAwIDAsMSA1LDE2QTEsMSAwIDAsMSA0LDE1QTEsMSAwIDAsMSA1LDE0TTIwLjU3LDkuNjZDMjAuNDMsOS4yNiAyMC4wNSw5IDE5LjYsOUgxMi40MUMxMS45NSw5IDExLjU4LDkuMjYgMTEuNDMsOS42NkwxMCwxMy43N1YxOS4yOEMxMCwxOS42NiAxMC4zMiwyMCAxMC43LDIwSDExLjMyQzExLjcsMjAgMTIsMTkuNjIgMTIsMTkuMjRWMThIMjBWMTkuMjRDMjAsMTkuNjIgMjAuMzEsMjAgMjAuNjksMjBIMjEuM0MyMS42OCwyMCAyMiwxOS42NiAyMiwxOS4yOFYxNy45MUwyMiwxMy43N0wyMC41Nyw5LjY2TTEyLjQxLDEwSDE5LjZMMjAuNjMsMTNIMTEuMzhMMTIuNDEsMTBNMTIsMTZBMSwxIDAgMCwxIDExLDE1QTEsMSAwIDAsMSAxMiwxNEExLDEgMCAwLDEgMTMsMTVBMSwxIDAgMCwxIDEyLDE2TTIwLDE2QTEsMSAwIDAsMSAxOSwxNUExLDEgMCAwLDEgMjAsMTRBMSwxIDAgMCwxIDIxLDE1QTEsMSAwIDAsMSAyMCwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbkNhclBhc3NlbmdlciA9IFwiTTIxIDdIM0MxLjkgNyAxIDcuOSAxIDlWMTdIMkMyIDE4LjExIDIuOSAxOSA0IDE5UzYgMTguMTEgNiAxN0gxOEMxOCAxOC4xMSAxOC45IDE5IDIwIDE5UzIyIDE4LjExIDIyIDE3SDIzVjlDMjMgNy45IDIyLjExIDcgMjEgN003IDEySDNWOUg3VjEyTTE1IDEySDlWOUgxNVYxMk0yMSAxMkgxN1Y5SDIxVjEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYWluQ2FyUGFzc2VuZ2VyRG9vciA9IFwiTTIxIDdIM0MxLjkgNyAxIDcuOSAxIDlWMTdIMkMyIDE4LjExIDIuOSAxOSA0IDE5UzYgMTguMTEgNiAxN0gxOEMxOCAxOC4xMSAxOC45IDE5IDIwIDE5UzIyIDE4LjExIDIyIDE3SDIzVjlDMjMgNy45IDIyLjExIDcgMjEgN003IDEySDNWOUg3VjEyTTExIDE2SDlWOUgxMVYxNk0xNSAxNkgxM1Y5SDE1VjE2TTIxIDEySDE3VjlIMjFWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhaW5DYXJQYXNzZW5nZXJEb29yT3BlbiA9IFwiTTIxIDdIM0MxLjkgNyAxIDcuOSAxIDlWMTdIMkMyIDE4LjExIDIuOSAxOSA0IDE5UzYgMTguMTEgNiAxN0gxOEMxOCAxOC4xMSAxOC45IDE5IDIwIDE5UzIyIDE4LjExIDIyIDE3SDIzVjlDMjMgNy45IDIyLjExIDcgMjEgN004IDEySDNWOUg4VjEyTTE0IDE2SDEwVjlIMTRWMTZNMjEgMTJIMTZWOUgyMVYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFpbkNhclBhc3NlbmdlclZhcmlhbnQgPSBcIk0yMSA3SDNDMS45IDcgMSA3LjkgMSA5VjE3SDJDMiAxOC4xMSAyLjkgMTkgNCAxOVM2IDE4LjExIDYgMTdIMThDMTggMTguMTEgMTguOSAxOSAyMCAxOVMyMiAxOC4xMSAyMiAxN0gyM1Y5QzIzIDcuOSAyMi4xMSA3IDIxIDdNMTEgMTJIM1Y5SDExVjEyTTIxIDEySDEzVjlIMjFWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhaW5WYXJpYW50ID0gXCJNMTgsMTBINlY1SDE4TTEyLDE3QzEwLjg5LDE3IDEwLDE2LjEgMTAsMTVDMTAsMTMuODkgMTAuODksMTMgMTIsMTNBMiwyIDAgMCwxIDE0LDE1QTIsMiAwIDAsMSAxMiwxN000LDE1LjVBMy41LDMuNSAwIDAsMCA3LjUsMTlMNiwyMC41VjIxSDE4VjIwLjVMMTYuNSwxOUEzLjUsMy41IDAgMCwwIDIwLDE1LjVWNUMyMCwxLjUgMTYuNDIsMSAxMiwxQzcuNTgsMSA0LDEuNSA0LDVWMTUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFtID0gXCJNMTksMTYuOTRWOC41QzE5LDUuNzEgMTYuMzksNS4xIDEzLDVMMTMuNzUsMy41SDE3VjJIN1YzLjVIMTEuNzVMMTEsNUM3Ljg2LDUuMTEgNSw1LjczIDUsOC41VjE2Ljk0QzUsMTguMzkgNi4xOSwxOS42IDcuNTksMTkuOTFMNiwyMS41VjIySDguMjNMMTAuMjMsMjBIMTRMMTYsMjJIMThWMjEuNUwxNi41LDIwSDE2LjQyQzE4LjExLDIwIDE5LDE4LjYzIDE5LDE2Ljk0TTEyLDE4LjVBMS41LDEuNSAwIDAsMSAxMC41LDE3QTEuNSwxLjUgMCAwLDEgMTIsMTUuNUExLjUsMS41IDAgMCwxIDEzLjUsMTdBMS41LDEuNSAwIDAsMSAxMiwxOC41TTE3LDE0SDdWOUgxN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFtU2lkZSA9IFwiTTkgMUw1IDRMNy41IDZINUM1IDYgMiA2IDIgOVYxOUg3QzcgMTkgNyAxNyA5IDE3SDIyVjE0SDE4VjhIMjJWNkgxMC41TDEzIDRMOSAxTTQgOEg5VjE0SDRWOE0xMSA4SDE2VjE0SDExVjhNNCAxNkg1VjE4SDRWMTZNOSAxOVYxOS41QzkgMjAuODggMTAuMTIgMjIgMTEuNSAyMkMxMi41IDIyIDEzLjM5IDIxLjQxIDEzLjc5IDIwLjVIMTUuMjFDMTUuNjEgMjEuNDEgMTYuNSAyMiAxNy41IDIyQzE4Ljg4IDIyIDIwIDIwLjg4IDIwIDE5LjVWMTlIOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2NyaWJlID0gXCJNMjAsNUEyLDIgMCAwLDEgMjIsN1YxN0EyLDIgMCAwLDEgMjAsMTlINEMyLjg5LDE5IDIsMTguMSAyLDE3VjdDMiw1Ljg5IDIuODksNSA0LDVIMjBNMTgsMTdWMTVIMTIuNUwxMC41LDE3SDE4TTYsMTdIOC41TDE1LjM1LDEwLjEyQzE1LjU1LDkuOTMgMTUuNTUsOS42MSAxNS4zNSw5LjQxTDEzLjU5LDcuNjVDMTMuMzksNy40NSAxMy4wNyw3LjQ1IDEyLjg4LDcuNjVMNiwxNC41M1YxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2NyaWJlQ2xvc2UgPSBcIk0xMiwyM0w4LDE5SDE2TDEyLDIzTTIwLDNBMiwyIDAgMCwxIDIyLDVWMTVBMiwyIDAgMCwxIDIwLDE3SDRBMiwyIDAgMCwxIDIsMTVWNUEyLDIgMCAwLDEgNCwzSDIwTTE4LDE1VjEzSDEyLjVMMTAuNSwxNUgxOE02LDE1SDguNUwxNS4zNSw4LjEyQzE1LjU1LDcuOTMgMTUuNTUsNy42MSAxNS4zNSw3LjQyTDEzLjU5LDUuNjVDMTMuMzksNS40NSAxMy4wNyw1LjQ1IDEyLjg4LDUuNjVMNiwxMi41M1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2ZlciA9IFwiTTggNEEyIDIgMCAwIDAgNiA2VjEwSDhWNkgxNlY5SDEzLjVMMTcgMTIuNUwyMC41IDlIMThWNkEyIDIgMCAwIDAgMTYgNEg4TTMgMTJWMTRIMTFWMTJIM00zIDE1VjE3SDExVjE1SDNNMTMgMTVWMTdIMjFWMTVIMTNNMyAxOFYyMEgxMVYxOEgzTTEzIDE4VjIwSDIxVjE4SDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYW5zZmVyRG93biA9IFwiTTE2LDNWNUg4VjNIMTZNMTYsN1Y5SDhWN0gxNk0xNiwxMVYxM0g4VjExSDE2TTUsMTVIMTlMMTIsMjJMNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2ZlckxlZnQgPSBcIk0yMSwxNkgxOVY4SDIxVjE2TTE3LDE2SDE1VjhIMTdWMTZNMTMsMTZIMTFWOEgxM1YxNk05LDVWMTlMMiwxMkw5LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNmZXJSaWdodCA9IFwiTTMsOEg1VjE2SDNWOE03LDhIOVYxNkg3VjhNMTEsOEgxM1YxNkgxMVY4TTE1LDE5LjI1VjQuNzVMMjIuMjUsMTJMMTUsMTkuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNmZXJVcCA9IFwiTTgsMjFWMTlIMTZWMjFIOE04LDE3VjE1SDE2VjE3SDhNOCwxM1YxMUgxNlYxM0g4TTE5LDlINUwxMiwyTDE5LDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNpdENvbm5lY3Rpb24gPSBcIk0xNSwxMkMxNSwxMC43IDE0LjE2LDkuNiAxMyw5LjE4VjYuODJDMTQuMTYsNi40IDE1LDUuMyAxNSw0QTMsMyAwIDAsMCAxMiwxQTMsMyAwIDAsMCA5LDRDOSw1LjMgOS44NCw2LjQgMTEsNi44MlY5LjE5QzkuODQsOS42IDksMTAuNyA5LDEyQzksMTMuMyA5Ljg0LDE0LjQgMTEsMTQuODJWMTcuMThDOS44NCwxNy42IDksMTguNyA5LDIwQTMsMyAwIDAsMCAxMiwyM0EzLDMgMCAwLDAgMTUsMjBDMTUsMTguNyAxNC4xNiwxNy42IDEzLDE3LjE4VjE0LjgyQzE0LjE2LDE0LjQgMTUsMTMuMyAxNSwxMk0xMiwzQTEsMSAwIDAsMSAxMyw0QTEsMSAwIDAsMSAxMiw1QTEsMSAwIDAsMSAxMSw0QTEsMSAwIDAsMSAxMiwzTTEyLDIxQTEsMSAwIDAsMSAxMSwyMEExLDEgMCAwLDEgMTIsMTlBMSwxIDAgMCwxIDEzLDIwQTEsMSAwIDAsMSAxMiwyMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0Q29ubmVjdGlvbkhvcml6b250YWwgPSBcIk0xMiA5QzEwLjcgOSA5LjYgOS44IDkuMiAxMUg2LjhDNi40IDkuOCA1LjMgOSA0IDlDMi4zIDkgMSAxMC4zIDEgMTJTMi4zIDE1IDQgMTVDNS4zIDE1IDYuNCAxNC4yIDYuOCAxM0g5LjJDOS42IDE0LjIgMTAuNyAxNSAxMiAxNVMxNC40IDE0LjIgMTQuOCAxM0gxNy4yQzE3LjYgMTQuMiAxOC43IDE1IDIwIDE1QzIxLjcgMTUgMjMgMTMuNyAyMyAxMlMyMS43IDkgMjAgOUMxOC43IDkgMTcuNiA5LjggMTcuMiAxMUgxNC44QzE0LjQgOS44IDEzLjMgOSAxMiA5TTMgMTJDMyAxMS40IDMuNCAxMSA0IDExUzUgMTEuNCA1IDEyIDQuNiAxMyA0IDEzIDMgMTIuNiAzIDEyTTIxIDEyQzIxIDEyLjYgMjAuNiAxMyAyMCAxM1MxOSAxMi42IDE5IDEyIDE5LjQgMTEgMjAgMTEgMjEgMTEuNCAyMSAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0Q29ubmVjdGlvblZhcmlhbnQgPSBcIk0xOCwxMUgxNC44MkMxNC40LDkuODQgMTMuMyw5IDEyLDlDMTAuNyw5IDkuNiw5Ljg0IDkuMTgsMTFINkM1LjY3LDExIDQsMTAuOSA0LDlWOEM0LDYuMTcgNS41NCw2IDYsNkgxNi4xOEMxNi42LDcuMTYgMTcuNyw4IDE5LDhBMywzIDAgMCwwIDIyLDVBMywzIDAgMCwwIDE5LDJDMTcuNywyIDE2LjYsMi44NCAxNi4xOCw0SDZDNC4zOSw0IDIsNS4wNiAyLDhWOUMyLDExLjk0IDQuMzksMTMgNiwxM0g5LjE4QzkuNiwxNC4xNiAxMC43LDE1IDEyLDE1QzEzLjMsMTUgMTQuNCwxNC4xNiAxNC44MiwxM0gxOEMxOC4zMywxMyAyMCwxMy4xIDIwLDE1VjE2QzIwLDE3LjgzIDE4LjQ2LDE4IDE4LDE4SDcuODJDNy40LDE2Ljg0IDYuMywxNiA1LDE2QTMsMyAwIDAsMCAyLDE5QTMsMyAwIDAsMCA1LDIyQzYuMywyMiA3LjQsMjEuMTYgNy44MiwyMEgxOEMxOS42MSwyMCAyMiwxOC45MyAyMiwxNlYxNUMyMiwxMi4wNyAxOS42MSwxMSAxOCwxMU0xOSw0QTEsMSAwIDAsMSAyMCw1QTEsMSAwIDAsMSAxOSw2QTEsMSAwIDAsMSAxOCw1QTEsMSAwIDAsMSAxOSw0TTUsMjBBMSwxIDAgMCwxIDQsMTlBMSwxIDAgMCwxIDUsMThBMSwxIDAgMCwxIDYsMTlBMSwxIDAgMCwxIDUsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNpdERldG91ciA9IFwiTTE5IDNBMyAzIDAgMCAwIDE2LjYxIDQuMjFBMTEuNSAxMS41IDAgMCAwIDEzLjc1IDRMMTMuODggNkE5LjQ3IDkuNDcgMCAwIDEgMTYgNi4xM0EzIDMgMCAxIDAgMTkgM00xOSA3QTEgMSAwIDEgMSAyMCA2QTEgMSAwIDAgMSAxOSA3TTguODYgNy44Nkw3LjY3IDYuMjVBMTEuNSAxMS41IDAgMCAxIDExLjYgNC4zN0wxMi4xIDYuMzFBOS41IDkuNSAwIDAgMCA4Ljg2IDcuODZNMjEgMThBMyAzIDAgMSAxIDE1LjY5IDE2LjExQTkuNDcgOS40NyAwIDAgMCA4LjU5IDEzLjQ2QzguMzcgMTMuNDcgOC4xNiAxMy41IDcuOTQgMTMuNTRBMyAzIDAgMSAxIDQuMzkgMTAuMDZBMTEuNTQgMTEuNTQgMCAwIDEgNi4wNCA3LjdMNy41IDkuMDZBOS4zNCA5LjM0IDAgMCAwIDYuNSAxMC40MUEzLjA0IDMuMDQgMCAwIDEgNy42MiAxMS41NkM3LjkxIDExLjUgOC4xOSAxMS41IDguNSAxMS40NkExMS40NyAxMS40NyAwIDAgMSAxNy40NiAxNS4wNUEyLjk2IDIuOTYgMCAwIDEgMTggMTVBMyAzIDAgMCAxIDIxIDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYW5zaXRTa2lwID0gXCJNMjEgMTJDMjEgOCAxOC41IDQuNyAxNSAzLjVDMTQuNyAyLjEgMTMuNSAxIDEyIDFDMTAuMyAxIDkgMi4zIDkgNFMxMC4zIDcgMTIgN0MxMy4xIDcgMTQuMSA2LjQgMTQuNiA1LjVDMTcuMiA2LjUgMTkgOSAxOSAxMkMxOSAxNC45IDE3LjIgMTcuNSAxNC42IDE4LjVDMTQuMSAxNy42IDEzLjEgMTcgMTIgMTdDMTAuMyAxNyA5IDE4LjMgOSAyMFMxMC4zIDIzIDEyIDIzQzEzLjUgMjMgMTQuNyAyMS45IDE1IDIwLjVDMTguNSAxOS4zIDIxIDE1LjkgMjEgMTJNMTIgNUMxMS40IDUgMTEgNC42IDExIDRTMTEuNCAzIDEyIDMgMTMgMy40IDEzIDQgMTIuNiA1IDEyIDVNMTIgMjFDMTEuNCAyMSAxMSAyMC42IDExIDIwUzExLjQgMTkgMTIgMTkgMTMgMTkuNCAxMyAyMCAxMi42IDIxIDEyIDIxTTEyIDlDMTMuNyA5IDE1IDEwLjMgMTUgMTJTMTMuNyAxNSAxMiAxNSA5IDEzLjcgOSAxMiAxMC4zIDkgMTIgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0VHJhbnNmZXIgPSBcIk0xNi41LDE1LjVIMjJWMTdIMTYuNVYxOC43NUwxNCwxNi4yNUwxNi41LDEzLjc1VjE1LjVNMTkuNSwxOS43NVYxOEwyMiwyMC41TDE5LjUsMjNWMjEuMjVIMTRWMTkuNzVIMTkuNU05LjUsNS41QTIsMiAwIDAsMSA3LjUsMy41QTIsMiAwIDAsMSA5LjUsMS41QTIsMiAwIDAsMSAxMS41LDMuNUEyLDIgMCAwLDEgOS41LDUuNU01Ljc1LDguOUw0LDkuNjVWMTNIMlY4LjNMNy4yNSw2LjE1QzcuNSw2LjA1IDcuNzUsNiA4LDZDOC43LDYgOS4zNSw2LjM1IDkuNyw2Ljk1TDEwLjY1LDguNTVDMTEuNTUsMTAgMTMuMTUsMTEgMTUsMTFWMTNDMTIuOCwxMyAxMC44NSwxMiA5LjU1LDEwLjRMOC45NSwxMy40TDExLDE1LjQ1VjIzSDlWMTdMNi44NSwxNUw1LjEsMjNIM0w1Ljc1LDguOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0aW9uID0gXCJNMTUsMkE3LDcgMCAwLDEgMjIsOUMyMiwxMS43MSAyMC40NiwxNC4wNSAxOC4yMiwxNS4yMkMxNy41NSwxNi41IDE2LjUsMTcuNTUgMTUuMjIsMTguMjJDMTQuMDUsMjAuNDYgMTEuNzEsMjIgOSwyMkE3LDcgMCAwLDEgMiwxNUMyLDEyLjI5IDMuNTQsOS45NSA1Ljc4LDguNzhDNi40NSw3LjUgNy41LDYuNDUgOC43OCw1Ljc4QzkuOTUsMy41NCAxMi4yOSwyIDE1LDJNMTIsMTlBNyw3IDAgMCwxIDUsMTJDNC4zNywxMi44NCA0LDEzLjg3IDQsMTVBNSw1IDAgMCwwIDksMjBDMTAuMTMsMjAgMTEuMTYsMTkuNjMgMTIsMTlNMTUsMTZBNyw3IDAgMCwxIDgsOUg4QzcuMzcsOS44NCA3LDEwLjg3IDcsMTJBNSw1IDAgMCwwIDEyLDE3QzEzLjEzLDE3IDE0LjE2LDE2LjYzIDE1LDE2VjE2TTE1LDRDMTMuODcsNCAxMi44NCw0LjM3IDEyLDVWNUE3LDcgMCAwLDEgMTksMTJIMTlDMTkuNjMsMTEuMTYgMjAsMTAuMTMgMjAsOUE1LDUgMCAwLDAgMTUsNE0xMCw5QTUsNSAwIDAsMCAxNSwxNEMxNS42LDE0IDE2LjE3LDEzLjkgMTYuNywxMy43QzE2LjksMTMuMTcgMTcsMTIuNiAxNywxMkE1LDUgMCAwLDAgMTIsN0MxMS40LDcgMTAuODMsNy4xIDEwLjMsNy4zQzEwLjEsNy44MyAxMCw4LjQgMTAsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2l0aW9uTWFza2VkID0gXCJNMTUsMkMxNi45NCwyIDE4LjU5LDIuNyAxOS45NSw0LjA1QzIxLjMsNS40MSAyMiw3LjA2IDIyLDlDMjIsMTAuNTYgMjEuNSwxMS45NiAyMC41OCwxMy4yQzE5LjY0LDE0LjQzIDE4LjQ0LDE1LjI3IDE2Ljk3LDE1LjdMMTcsMTUuMzhWMTVDMTcsMTIuODEgMTYuMjMsMTAuOTMgMTQuNjUsOS4zNUMxMy4wNyw3Ljc3IDExLjE5LDcgOSw3SDguNjNMOC4zLDcuMDNDOC43Myw1LjU2IDkuNTcsNC4zNiAxMC44LDMuNDJDMTIuMDQsMi41IDEzLjQ0LDIgMTUsMk05LDhBNyw3IDAgMCwxIDE2LDE1QTcsNyAwIDAsMSA5LDIyQTcsNyAwIDAsMSAyLDE1QTcsNyAwIDAsMSA5LDhNOSwxMEE1LDUgMCAwLDAgNCwxNUE1LDUgMCAwLDAgOSwyMEE1LDUgMCAwLDAgMTQsMTVBNSw1IDAgMCwwIDksMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJhbnNsYXRlID0gXCJNMTIuODcsMTUuMDdMMTAuMzMsMTIuNTZMMTAuMzYsMTIuNTNDMTIuMSwxMC41OSAxMy4zNCw4LjM2IDE0LjA3LDZIMTdWNEgxMFYySDhWNEgxVjZIMTIuMTdDMTEuNSw3LjkyIDEwLjQ0LDkuNzUgOSwxMS4zNUM4LjA3LDEwLjMyIDcuMyw5LjE5IDYuNjksOEg0LjY5QzUuNDIsOS42MyA2LjQyLDExLjE3IDcuNjcsMTIuNTZMMi41OCwxNy41OEw0LDE5TDksMTRMMTIuMTEsMTcuMTFMMTIuODcsMTUuMDdNMTguNSwxMEgxNi41TDEyLDIySDE0TDE1LjEyLDE5SDE5Ljg3TDIxLDIySDIzTDE4LjUsMTBNMTUuODgsMTdMMTcuNSwxMi42N0wxOS4xMiwxN0gxNS44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFuc2xhdGVPZmYgPSBcIk0xMi4xNyw1LjgxQzExLjg3LDYuNjkgMTEuNDcsNy41NSAxMSw4LjM5TDEyLjM1LDkuNzRDMTMuMTEsOC41IDEzLjcxLDcuMTggMTQuMTMsNS44MUgxNy4xNlYzLjc1SDkuOTRWMS42OUg3Ljg3VjMuNzVINi4zN0w4LjQzLDUuODFIMTIuMTdNMTUuNTMsMTIuOTFMMTcuMDMsMTQuNDFMMTcuNjcsMTIuNjlMMTkuMDgsMTYuNDdMMjIuMzksMTkuNzdMMTguNyw5Ljk0SDE2LjY0TDE1LjUzLDEyLjkxTTEuMzEsMS4zMUwwLDIuNjJMMS4xMywzLjc1SDAuNjVWNS44MUgzLjE5TDUuMjYsNy44OEg0LjQ2QzUuMjEsOS41NiA2LjI0LDExLjE1IDcuNTMsMTIuNThMMi4yOCwxNy43NkwzLjc1LDE5LjIyTDguOTEsMTQuMDdMMTIuMTEsMTcuMjdMMTIuOCwxNS40M0wxNC4xLDE2LjcyTDEyLDIyLjMxSDE0LjA2TDE1LjIyLDE5LjIySDE2LjZMMjEuMzgsMjRMMjIuNjksMjIuNjlMMS4zMSwxLjMxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYW5zbWlzc2lvblRvd2VyID0gXCJNOC4yOCw1LjQ1TDYuNSw0LjU1TDcuNzYsMkgxNi4yM0wxNy41LDQuNTVMMTUuNzIsNS40NEwxNSw0SDlMOC4yOCw1LjQ1TTE4LjYyLDhIMTQuMDlMMTMuMyw1SDEwLjdMOS45MSw4SDUuMzhMNC4xLDEwLjU1TDUuODksMTEuNDRMNi42MiwxMEgxNy4zOEwxOC4xLDExLjQ1TDE5Ljg5LDEwLjU2TDE4LjYyLDhNMTcuNzcsMjJIMTUuN0wxNS40NiwyMS4xTDEyLDE1LjlMOC41MywyMS4xTDguMywyMkg2LjIzTDkuMTIsMTFIMTEuMTlMMTAuODMsMTIuMzVMMTIsMTQuMUwxMy4xNiwxMi4zNUwxMi44MSwxMUgxNC44OEwxNy43NywyMk0xMS40LDE1TDEwLjUsMTMuNjVMOS4zMiwxOC4xM0wxMS40LDE1TTE0LjY4LDE4LjEyTDEzLjUsMTMuNjRMMTIuNiwxNUwxNC42OCwxOC4xMlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmFzaENhbiA9IFwiTTksM1Y0SDRWNkg1VjE5QTIsMiAwIDAsMCA3LDIxSDE3QTIsMiAwIDAsMCAxOSwxOVY2SDIwVjRIMTVWM0g5TTksOEgxMVYxN0g5VjhNMTMsOEgxNVYxN0gxM1Y4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYXNoQ2FuT3V0bGluZSA9IFwiTTksM1Y0SDRWNkg1VjE5QTIsMiAwIDAsMCA3LDIxSDE3QTIsMiAwIDAsMCAxOSwxOVY2SDIwVjRIMTVWM0g5TTcsNkgxN1YxOUg3VjZNOSw4VjE3SDExVjhIOU0xMyw4VjE3SDE1VjhIMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJheSA9IFwiTTIgMTJINFYxN0gyMFYxMkgyMlYxN0EyIDIgMCAwIDEgMjAgMTlINEEyIDIgMCAwIDEgMiAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmF5QWxlcnQgPSBcIk0yIDEySDRWMTdIMjBWMTJIMjJWMTdBMiAyIDAgMCAxIDIwIDE5SDRBMiAyIDAgMCAxIDIgMTdNMTMgMTJIMTFWMTRIMTNNMTMgNEgxMVYxMEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlUcmF5RnVsbCA9IFwiTTE4IDVINlY3SDE4TTYgOUgxOFYxMUg2TTIgMTJINFYxN0gyMFYxMkgyMlYxN0EyIDIgMCAwIDEgMjAgMTlINEEyIDIgMCAwIDEgMiAxN00xOCAxM0g2VjE1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyYXlNaW51cyA9IFwiTTE2IDEwSDhWOEgxNk0yIDE3QTIgMiAwIDAgMCA0IDE5SDIwQTIgMiAwIDAgMCAyMiAxN1YxMkgyMFYxN0g0VjEySDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJheVBsdXMgPSBcIk0yIDEySDRWMTdIMjBWMTJIMjJWMTdBMiAyIDAgMCAxIDIwIDE5SDRBMiAyIDAgMCAxIDIgMTdNMTEgNUgxM1Y4SDE2VjEwSDEzVjEzSDExVjEwSDhWOEgxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmF5UmVtb3ZlID0gXCJNMiAxN0EyIDIgMCAwIDAgNCAxOUgyMEEyIDIgMCAwIDAgMjIgMTdWMTJIMjBWMTdINFYxMkgyTTE0LjEyIDUuNDZMMTUuNTQgNi44OEwxMy40MSA5TDE1LjU0IDExLjEyTDE0LjEyIDEyLjU0TDEyIDEwLjQxTDkuODggMTIuNTRMOC40NiAxMS4xMkwxMC41OSA5TDguNDYgNi44OEw5Ljg4IDUuNDZMMTIgNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmVhc3VyZUNoZXN0ID0gXCJNNSw0SDE5QTMsMyAwIDAsMSAyMiw3VjExSDE1VjEwSDlWMTFIMlY3QTMsMyAwIDAsMSA1LDRNMTEsMTFIMTNWMTNIMTFWMTFNMiwxMkg5VjEzTDExLDE1SDEzTDE1LDEzVjEySDIyVjIwSDJWMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJlZSA9IFwiTTExLDIxVjE2Ljc0QzEwLjUzLDE2LjkxIDEwLjAzLDE3IDkuNSwxN0M3LDE3IDUsMTUgNSwxMi41QzUsMTEuMjMgNS41LDEwLjA5IDYuMzYsOS4yN0M2LjEzLDguNzMgNiw4LjEzIDYsNy41QzYsNSA4LDMgMTAuNSwzQzEyLjA2LDMgMTMuNDQsMy44IDE0LjI1LDVDMTQuMzMsNSAxNC40MSw1IDE0LjUsNUE1LjUsNS41IDAgMCwxIDIwLDEwLjVBNS41LDUuNSAwIDAsMSAxNC41LDE2QzE0LDE2IDEzLjUsMTUuOTMgMTMsMTUuNzlWMjFIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJlZU91dGxpbmUgPSBcIk0xMC41LDNDOCwzIDYsNSA2LDcuNUM2LDguMTEgNi4xMyw4LjcxIDYuMzcsOS4yN0M1LjUsMTAuMTIgNSwxMS4yOCA1LDEyLjVDNSwxNSA3LDE3IDkuNSwxN0MxMCwxNyAxMC41LDE2Ljg5IDExLDE2LjcyVjIxSDEzVjE1Ljc3QzEzLjUsMTUuOTEgMTQsMTYgMTQuNSwxNkE1LjUsNS41IDAgMCwwIDIwLDEwLjVBNS41LDUuNSAwIDAsMCAxNC41LDVDMTQuNDEsNSAxNC4zMyw1IDE0LjI0LDVDMTMuNDEsMy43NiAxMiwzIDEwLjUsM00xMC41LDVDMTEuODIsNSAxMi45MSw2LjAzIDEzLDcuMzVDMTMuNDYsNy4xMiAxNCw3IDE0LjUsN0EzLjUsMy41IDAgMCwxIDE4LDEwLjVBMy41LDMuNSAwIDAsMSAxNC41LDE0QzEzLjU0LDE0IDEyLjYzLDEzLjYxIDExLjk2LDEyLjkxQzExLjc2LDE0LjEyIDEwLjcyLDE1IDkuNSwxNUEyLjUsMi41IDAgMCwxIDcsMTIuNUM3LDExLjEyIDcuOCwxMC41NCA5LDkuNzlDOC4yLDguNzYgOCw4LjE2IDgsNy41QTIuNSwyLjUgMCAwLDEgMTAuNSw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyZWxsbyA9IFwiTTE5LjUsMkg0LjVBMi41LDIuNSAwIDAsMCAyLDQuNVYxOS41QTIuNSwyLjUgMCAwLDAgNC41LDIySDE5LjVBMi41LDIuNSAwIDAsMCAyMiwxOS41VjQuNUEyLjUsMi41IDAgMCwwIDE5LjUsMk0xMC43LDE3LjJBMS4yLDEuMiAwIDAsMSA5LjUsMTguNEg1LjhDNS4xNCwxOC40IDQuNiwxNy44NiA0LjYsMTcuMlY1LjhBMS4yLDEuMiAwIDAsMSA1LjgsNC42SDkuNUMxMC4xNiw0LjYgMTAuNyw1LjE0IDEwLjcsNS44VjE3LjJNMTkuNCwxMi4yQzE5LjQsMTIuODYgMTguODYsMTMuNCAxOC4yLDEzLjRIMTQuNUMxMy44NCwxMy40IDEzLjMsMTIuODYgMTMuMywxMi4yVjUuOEMxMy4zLDUuMTQgMTMuODQsNC42IDE0LjUsNC42SDE4LjJDMTguODYsNC42IDE5LjQsNS4xNCAxOS40LDUuOFYxMi4yWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyZW5kaW5nRG93biA9IFwiTTE2LDE4TDE4LjI5LDE1LjcxTDEzLjQxLDEwLjgzTDkuNDEsMTQuODNMMiw3LjQxTDMuNDEsNkw5LjQxLDEyTDEzLjQxLDhMMTkuNzEsMTQuMjlMMjIsMTJWMThIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJlbmRpbmdOZXV0cmFsID0gXCJNMjIsMTJMMTgsOFYxMUgzVjEzSDE4VjE2TDIyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyZW5kaW5nVXAgPSBcIk0xNiw2TDE4LjI5LDguMjlMMTMuNDEsMTMuMTdMOS40MSw5LjE3TDIsMTYuNTlMMy40MSwxOEw5LjQxLDEyTDEzLjQxLDE2TDE5LjcxLDkuNzFMMjIsMTJWNkgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUcmlhbmdsZSA9IFwiTTEsMjFIMjNMMTIsMlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyaWFuZ2xlT3V0bGluZSA9IFwiTTEyLDJMMSwyMUgyM00xMiw2TDE5LjUzLDE5SDQuNDdcIjtcclxuZXhwb3J0IHZhciBtZGlUcmlhbmdsZVdhdmUgPSBcIk0yMiAxMkwxNyAyMkw3LjEgNi4wNEw0LjI0IDEySDJMNyAyTDE2LjkgMTcuOTZMMTkuNzYgMTJIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJpZm9yY2UgPSBcIk0xLjUsMjFMMTIsMy41TDIyLjUsMjFIMS41TTEyLDIxTDE3LDEySDdMMTIsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJvcGh5ID0gXCJNMTggMkMxNy4xIDIgMTYgMyAxNiA0SDhDOCAzIDYuOSAyIDYgMkgyVjExQzIgMTIgMyAxMyA0IDEzSDYuMkM2LjYgMTUgNy45IDE2LjcgMTEgMTdWMTkuMDhDOCAxOS41NCA4IDIyIDggMjJIMTZDMTYgMjIgMTYgMTkuNTQgMTMgMTkuMDhWMTdDMTYuMSAxNi43IDE3LjQgMTUgMTcuOCAxM0gyMEMyMSAxMyAyMiAxMiAyMiAxMVYySDE4TTYgMTFINFY0SDZWMTFNMjAgMTFIMThWNEgyMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcm9waHlBd2FyZCA9IFwiTTE1LjIgMTAuN0wxNi42IDE2TDEyIDEyLjJMNy40IDE2TDguOCAxMC44TDQuNiA3LjNMMTAgN0wxMiAyTDE0IDdMMTkuNCA3LjNMMTUuMiAxMC43TTE0IDE5SDEzVjE2TDEyIDE1TDExIDE2VjE5SDEwQzguOSAxOSA4IDE5LjkgOCAyMVYyMkgxNlYyMUMxNiAxOS45IDE1LjExIDE5IDE0IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyb3BoeUJyb2tlbiA9IFwiTTYuMiAxM0M2LjYgMTQuOCA3LjYgMTYuMyAxMCAxNi44VjE5LjM0QzggMjAuMTIgOCAyMiA4IDIySDEzLjJMMTAuMiAxNUwxNC4yIDEwTDEwLjcgNEg4QzggMyA2LjkgMiA2IDJIMlYxMUMyIDEyIDMgMTMgNCAxM0g2LjJNNiAxMUg0VjRINlYxMU0xNy44IDEzSDIwQzIxIDEzIDIyIDEyIDIyIDExVjJIMThDMTcuMSAyIDE2IDMgMTYgNEgxMy45TDE2LjcgMTBMMTIuMiAxNUwxMy4yIDIySDE2QzE2IDIyIDE2IDIwLjEyIDE0IDE5LjM0TDE0IDE2Ljg1QzE2LjM5IDE2LjM1IDE3LjUgMTQuNyAxNy44IDEzTTIwIDExSDE4VjRIMjBWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJvcGh5T3V0bGluZSA9IFwiTTE4IDJDMTcuMSAyIDE2IDMgMTYgNEg4QzggMyA2LjkgMiA2IDJIMlYxMUMyIDEyIDMgMTMgNCAxM0g2LjJDNi42IDE1IDcuOSAxNi43IDExIDE3VjE5LjA4QzggMTkuNTQgOCAyMiA4IDIySDE2QzE2IDIyIDE2IDE5LjU0IDEzIDE5LjA4VjE3QzE2LjEgMTYuNyAxNy40IDE1IDE3LjggMTNIMjBDMjEgMTMgMjIgMTIgMjIgMTFWMkgxOE02IDExSDRWNEg2VjExTTE2IDExLjVDMTYgMTMuNDMgMTUuNDIgMTUgMTIgMTVDOC41OSAxNSA4IDEzLjQzIDggMTEuNVY2SDE2VjExLjVNMjAgMTFIMThWNEgyMFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlUcm9waHlWYXJpYW50ID0gXCJNMTcgNFYySDdWNEgyVjExQzIgMTIuMSAyLjkgMTMgNCAxM0g3LjFDNy41IDE0Ljk2IDkuMDQgMTYuNSAxMSAxNi45VjE5LjA4QzggMTkuNTQgOCAyMiA4IDIySDE2QzE2IDIyIDE2IDE5LjU0IDEzIDE5LjA4VjE2LjlDMTQuOTYgMTYuNSAxNi41IDE0Ljk2IDE2LjkgMTNIMjBDMjEuMSAxMyAyMiAxMi4xIDIyIDExVjRIMTdNNCAxMVY2SDdWMTFMNCAxMU0yMCAxMUwxNyAxMVY2SDIwTDIwIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRyb3BoeVZhcmlhbnRPdXRsaW5lID0gXCJNMTcgNFYySDdWNEgyVjExQzIgMTIuMSAyLjkgMTMgNCAxM0g3LjFDNy41IDE0Ljk2IDkuMDQgMTYuNSAxMSAxNi45VjE5LjA4QzggMTkuNTQgOCAyMiA4IDIySDE2QzE2IDIyIDE2IDE5LjU0IDEzIDE5LjA4VjE2LjlDMTQuOTYgMTYuNSAxNi41IDE0Ljk2IDE2LjkgMTNIMjBDMjEuMSAxMyAyMiAxMi4xIDIyIDExVjRIMTdNNCAxMVY2SDdWMTFMNCAxMU0xNSAxMkMxNSAxMy42NSAxMy42NSAxNSAxMiAxNVM5IDEzLjY1IDkgMTJWNEgxNVYxMk0yMCAxMUwxNyAxMVY2SDIwTDIwIDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrID0gXCJNMTgsMTguNUExLjUsMS41IDAgMCwxIDE2LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxNS41QTEuNSwxLjUgMCAwLDEgMTkuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE4LjVNMTkuNSw5LjVMMjEuNDYsMTJIMTdWOS41TTYsMTguNUExLjUsMS41IDAgMCwxIDQuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTUuNUExLjUsMS41IDAgMCwxIDcuNSwxN0ExLjUsMS41IDAgMCwxIDYsMTguNU0yMCw4SDE3VjRIM0MxLjg5LDQgMSw0Ljg5IDEsNlYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTJMMjAsOFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcnVja0NoZWNrID0gXCJNMyw0SDE3VjhIMjBMMjMsMTJWMTdIMjFBMywzIDAgMCwxIDE4LDIwQTMsMyAwIDAsMSAxNSwxN0g5QTMsMyAwIDAsMSA2LDIwQTMsMyAwIDAsMSAzLDE3SDFWNkMxLDQuODkgMS45LDQgMyw0TTE3LDkuNVYxMkgyMS40N0wxOS41LDkuNUgxN002LDE1LjVBMS41LDEuNSAwIDAsMCA0LjUsMTdBMS41LDEuNSAwIDAsMCA2LDE4LjVBMS41LDEuNSAwIDAsMCA3LjUsMTdBMS41LDEuNSAwIDAsMCA2LDE1LjVNMTgsMTUuNUExLjUsMS41IDAgMCwwIDE2LjUsMTdBMS41LDEuNSAwIDAsMCAxOCwxOC41QTEuNSwxLjUgMCAwLDAgMTkuNSwxN0ExLjUsMS41IDAgMCwwIDE4LDE1LjVNOCwxNEwxNCw4TDEyLjU5LDYuNThMOCwxMS4xN0w1LjkxLDkuMDhMNC41LDEwLjVMOCwxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcnVja0NoZWNrT3V0bGluZSA9IFwiTTE4IDE4LjVDMTguODMgMTguNSAxOS41IDE3LjgzIDE5LjUgMTdDMTkuNSAxNi4xNyAxOC44MyAxNS41IDE4IDE1LjVDMTcuMTcgMTUuNSAxNi41IDE2LjE3IDE2LjUgMTdDMTYuNSAxNy44MyAxNy4xNyAxOC41IDE4IDE4LjVNMTkuNSA5LjVIMTdWMTJIMjEuNDZMMTkuNSA5LjVNNiAxOC41QzYuODMgMTguNSA3LjUgMTcuODMgNy41IDE3QzcuNSAxNi4xNyA2LjgzIDE1LjUgNiAxNS41QzUuMTcgMTUuNSA0LjUgMTYuMTcgNC41IDE3QzQuNSAxNy44MyA1LjE3IDE4LjUgNiAxOC41TTIwIDhMMjMgMTJWMTdIMjFDMjEgMTguNjYgMTkuNjYgMjAgMTggMjBDMTYuMzQgMjAgMTUgMTguNjYgMTUgMTdIOUM5IDE4LjY2IDcuNjYgMjAgNiAyMEM0LjM0IDIwIDMgMTguNjYgMyAxN0gxVjZDMSA0Ljg5IDEuODkgNCAzIDRIMTdWOEgyME0zIDZWMTVIMy43NkM0LjMxIDE0LjM5IDUuMTEgMTQgNiAxNEM2Ljg5IDE0IDcuNjkgMTQuMzkgOC4yNCAxNUgxNVY2SDNNNSAxMC41TDYuNSA5TDggMTAuNUwxMS41IDdMMTMgOC41TDggMTMuNUw1IDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJ1Y2tEZWxpdmVyeSA9IFwiTTMsNEEyLDIgMCAwLDAgMSw2VjE3SDNBMywzIDAgMCwwIDYsMjBBMywzIDAgMCwwIDksMTdIMTVBMywzIDAgMCwwIDE4LDIwQTMsMyAwIDAsMCAyMSwxN0gyM1YxMkwyMCw4SDE3VjRNMTAsNkwxNCwxMEwxMCwxNFYxMUg0VjlIMTBNMTcsOS41SDE5LjVMMjEuNDcsMTJIMTdNNiwxNS41QTEuNSwxLjUgMCAwLDEgNy41LDE3QTEuNSwxLjUgMCAwLDEgNiwxOC41QTEuNSwxLjUgMCAwLDEgNC41LDE3QTEuNSwxLjUgMCAwLDEgNiwxNS41TTE4LDE1LjVBMS41LDEuNSAwIDAsMSAxOS41LDE3QTEuNSwxLjUgMCAwLDEgMTgsMTguNUExLjUsMS41IDAgMCwxIDE2LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrRGVsaXZlcnlPdXRsaW5lID0gXCJNMTggMTguNUMxOC44MyAxOC41IDE5LjUgMTcuODMgMTkuNSAxN0MxOS41IDE2LjE3IDE4LjgzIDE1LjUgMTggMTUuNUMxNy4xNyAxNS41IDE2LjUgMTYuMTcgMTYuNSAxN0MxNi41IDE3LjgzIDE3LjE3IDE4LjUgMTggMTguNU0xOS41IDkuNUgxN1YxMkgyMS40NkwxOS41IDkuNU02IDE4LjVDNi44MyAxOC41IDcuNSAxNy44MyA3LjUgMTdDNy41IDE2LjE3IDYuODMgMTUuNSA2IDE1LjVDNS4xNyAxNS41IDQuNSAxNi4xNyA0LjUgMTdDNC41IDE3LjgzIDUuMTcgMTguNSA2IDE4LjVNMjAgOEwyMyAxMlYxN0gyMUMyMSAxOC42NiAxOS42NiAyMCAxOCAyMEMxNi4zNCAyMCAxNSAxOC42NiAxNSAxN0g5QzkgMTguNjYgNy42NiAyMCA2IDIwQzQuMzQgMjAgMyAxOC42NiAzIDE3SDFWNkMxIDQuODkgMS44OSA0IDMgNEgxN1Y4SDIwTTMgNlYxNUgzLjc2QzQuMzEgMTQuMzkgNS4xMSAxNCA2IDE0QzYuODkgMTQgNy42OSAxNC4zOSA4LjI0IDE1SDE1VjZIM00xMCA3TDEzLjUgMTAuNUwxMCAxNFYxMS41SDVWOS41SDEwVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJ1Y2tGYXN0ID0gXCJNMywxMy41TDIuMjUsMTJINy41TDYuOSwxMC41SDJMMS4yNSw5SDkuMDVMOC40NSw3LjVIMS4xMUwwLjI1LDZINEEyLDIgMCAwLDEgNiw0SDE4VjhIMjFMMjQsMTJWMTdIMjJBMywzIDAgMCwxIDE5LDIwQTMsMyAwIDAsMSAxNiwxN0gxMkEzLDMgMCAwLDEgOSwyMEEzLDMgMCAwLDEgNiwxN0g0VjEzLjVIM00xOSwxOC41QTEuNSwxLjUgMCAwLDAgMjAuNSwxN0ExLjUsMS41IDAgMCwwIDE5LDE1LjVBMS41LDEuNSAwIDAsMCAxNy41LDE3QTEuNSwxLjUgMCAwLDAgMTksMTguNU0yMC41LDkuNUgxOFYxMkgyMi40NkwyMC41LDkuNU05LDE4LjVBMS41LDEuNSAwIDAsMCAxMC41LDE3QTEuNSwxLjUgMCAwLDAgOSwxNS41QTEuNSwxLjUgMCAwLDAgNy41LDE3QTEuNSwxLjUgMCAwLDAgOSwxOC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrRmFzdE91dGxpbmUgPSBcIk0uNzUgNy41SDEwLjVMMTEuMjUgOUgxLjVMLjc1IDcuNU0xLjc1IDEwLjVIMTEuNUwxMi4yNSAxMkgyLjVMMS43NSAxMC41TTE4IDE4LjVDMTguODMgMTguNSAxOS41IDE3LjgzIDE5LjUgMTdDMTkuNSAxNi4xNyAxOC44MyAxNS41IDE4IDE1LjVDMTcuMTcgMTUuNSAxNi41IDE2LjE3IDE2LjUgMTdDMTYuNSAxNy44MyAxNy4xNyAxOC41IDE4IDE4LjVNMTkuNSA5LjVIMTdWMTJIMjEuNDZMMTkuNSA5LjVNOCAxOC41QzguODMgMTguNSA5LjUgMTcuODMgOS41IDE3QzkuNSAxNi4xNyA4LjgzIDE1LjUgOCAxNS41QzcuMTcgMTUuNSA2LjUgMTYuMTcgNi41IDE3QzYuNSAxNy44MyA3LjE3IDE4LjUgOCAxOC41TTIwIDhMMjMgMTJWMTdIMjFDMjEgMTguNjYgMTkuNjYgMjAgMTggMjBDMTYuMzQgMjAgMTUgMTguNjYgMTUgMTdIMTFDMTEgMTguNjYgOS42NSAyMCA4IDIwQzYuMzQgMjAgNSAxOC42NiA1IDE3SDNWMTMuNSAxMy41SDVWMTVINS43NkM2LjMxIDE0LjM5IDcuMTEgMTQgOCAxNEM4Ljg5IDE0IDkuNjkgMTQuMzkgMTAuMjQgMTVIMTVWNkgzVjZDMyA0Ljg5IDMuODkgNCA1IDRIMTdWOEgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUcnVja091dGxpbmUgPSBcIk0xOCAxOC41QzE4LjgzIDE4LjUgMTkuNSAxNy44MyAxOS41IDE3QzE5LjUgMTYuMTcgMTguODMgMTUuNSAxOCAxNS41QzE3LjE3IDE1LjUgMTYuNSAxNi4xNyAxNi41IDE3QzE2LjUgMTcuODMgMTcuMTcgMTguNSAxOCAxOC41TTE5LjUgOS41SDE3VjEySDIxLjQ2TDE5LjUgOS41TTYgMTguNUM2LjgzIDE4LjUgNy41IDE3LjgzIDcuNSAxN0M3LjUgMTYuMTcgNi44MyAxNS41IDYgMTUuNUM1LjE3IDE1LjUgNC41IDE2LjE3IDQuNSAxN0M0LjUgMTcuODMgNS4xNyAxOC41IDYgMTguNU0yMCA4TDIzIDEyVjE3SDIxQzIxIDE4LjY2IDE5LjY2IDIwIDE4IDIwQzE2LjM0IDIwIDE1IDE4LjY2IDE1IDE3SDlDOSAxOC42NiA3LjY2IDIwIDYgMjBDNC4zNCAyMCAzIDE4LjY2IDMgMTdIMVY2QzEgNC44OSAxLjg5IDQgMyA0SDE3VjhIMjBNMyA2VjE1SDMuNzZDNC4zMSAxNC4zOSA1LjExIDE0IDYgMTRDNi44OSAxNCA3LjY5IDE0LjM5IDguMjQgMTVIMTVWNkgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVRydWNrVHJhaWxlciA9IFwiTTIyLDE1VjE3SDEwQTMsMyAwIDAsMSA3LDIwQTMsMyAwIDAsMSA0LDE3SDJWNkEyLDIgMCAwLDEgNCw0SDE3QTIsMiAwIDAsMSAxOSw2VjE1SDIyTTcsMTZBMSwxIDAgMCwwIDYsMTdBMSwxIDAgMCwwIDcsMThBMSwxIDAgMCwwIDgsMTdBMSwxIDAgMCwwIDcsMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHJ1bXBldCA9IFwiTTIyIDZDMjEgMTEgMTUgMTEgMTUgMTFINEMzIDExIDIgMTAgMiAxMEgxVjE0SDJDMiAxNCAzIDEzIDQgMTNINC4zQzQuMSAxMy4zIDQgMTMuNiA0IDE0VjE2QzQgMTcuMSA0LjkgMTggNiAxOEg3VjE5SDlWMThIMTBWMTlIMTJWMThIMTNWMTlIMTVWMThIMTZDMTcuMSAxOCAxOCAxNy4xIDE4IDE2VjE0QzE4IDEzLjkgMTggMTMuNyAxNy45IDEzLjZDMTkuNiAxNC4yIDIxLjQgMTUuNCAyMiAxOEgyM1Y2SDIyTTYgMTYuNUM1LjcgMTYuNSA1LjUgMTYuMyA1LjUgMTZWMTRDNS41IDEzLjcgNS43IDEzLjUgNiAxMy41SDdWMTYuNUg2TTkgMTYuNVYxMy41SDEwVjE2LjVIOU0xMiAxNi41VjEzLjVIMTNWMTYuNUgxMk0xNi41IDE2QzE2LjUgMTYuMyAxNi4zIDE2LjUgMTYgMTYuNUgxNVYxMy41SDE2QzE2LjMgMTMuNSAxNi41IDEzLjcgMTYuNSAxNFYxNk05IDEwSDdWOUg5VjEwTTEyIDEwSDEwVjlIMTJWMTBNMTUgMTBIMTNWOUgxNVYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUc2hpcnRDcmV3ID0gXCJNMTYsMjFIOEExLDEgMCAwLDEgNywyMFYxMi4wN0w1LjcsMTMuMDdDNS4zMSwxMy40NiA0LjY4LDEzLjQ2IDQuMjksMTMuMDdMMS40NiwxMC4yOUMxLjA3LDkuOSAxLjA3LDkuMjcgMS40Niw4Ljg4TDcuMzQsM0g5QzksNC4xIDEwLjM0LDUgMTIsNUMxMy42Niw1IDE1LDQuMSAxNSwzSDE2LjY2TDIyLjU0LDguODhDMjIuOTMsOS4yNyAyMi45Myw5LjkgMjIuNTQsMTAuMjlMMTkuNzEsMTMuMTJDMTkuMzIsMTMuNSAxOC42OSwxMy41IDE4LjMsMTMuMTJMMTcsMTIuMTJWMjBBMSwxIDAgMCwxIDE2LDIxXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHNoaXJ0Q3Jld091dGxpbmUgPSBcIk0xNiwyMUg4QTEsMSAwIDAsMSA3LDIwVjEyLjA3TDUuNywxMy4xMkM1LjMxLDEzLjUgNC42OCwxMy41IDQuMjksMTMuMTJMMS40NiwxMC4yOUMxLjA3LDkuOSAxLjA3LDkuMjcgMS40Niw4Ljg4TDcuMzQsM0g5QzksNC4xIDEwLjM0LDUgMTIsNUMxMy42Niw1IDE1LDQuMSAxNSwzSDE2LjY2TDIyLjU0LDguODhDMjIuOTMsOS4yNyAyMi45Myw5LjkgMjIuNTQsMTAuMjlMMTkuNzEsMTMuMTJDMTkuMzIsMTMuNSAxOC42OSwxMy41IDE4LjMsMTMuMTJMMTcsMTIuMDdWMjBBMSwxIDAgMCwxIDE2LDIxTTIwLjQyLDkuNThMMTYuMTEsNS4yOEMxNS44LDUuNjMgMTUuNDMsNS45NCAxNSw2LjJDMTQuMTYsNi43IDEzLjEzLDcgMTIsN0MxMC4zLDcgOC43OSw2LjMyIDcuODksNS4yOEwzLjU4LDkuNThMNSwxMUw4LDlIOVYxOUgxNVY5SDE2TDE5LDExTDIwLjQyLDkuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHNoaXJ0ViA9IFwiTTE2LDIxSDhBMSwxIDAgMCwxIDcsMjBWMTIuMDdMNS43LDEzLjA3QzUuMzEsMTMuNDYgNC42OCwxMy40NiA0LjI5LDEzLjA3TDEuNDYsMTAuMjlDMS4wNyw5LjkgMS4wNyw5LjI3IDEuNDYsOC44OEw3LjM0LDNIOUM5LjI5LDQuOCAxMC40LDYuMzcgMTIsNy4yNUMxMy42LDYuMzcgMTQuNzEsNC44IDE1LDNIMTYuNjZMMjIuNTQsOC44OEMyMi45Myw5LjI3IDIyLjkzLDkuOSAyMi41NCwxMC4yOUwxOS43MSwxMy4xMkMxOS4zMiwxMy41IDE4LjY5LDEzLjUgMTguMywxMy4xMkwxNywxMi4xMlYyMEExLDEgMCAwLDEgMTYsMjFcIjtcclxuZXhwb3J0IHZhciBtZGlUc2hpcnRWT3V0bGluZSA9IFwiTTE2LDIxSDhBMSwxIDAgMCwxIDcsMjBWMTIuMDdMNS43LDEzLjEyQzUuMzEsMTMuNSA0LjY4LDEzLjUgNC4yOSwxMy4xMkwxLjQ2LDEwLjI5QzEuMDcsOS45IDEuMDcsOS4yNyAxLjQ2LDguODhMNy4zNCwzSDlDOSw0LjEgMTAsNiAxMiw3LjI1QzE0LDYgMTUsNC4xIDE1LDNIMTYuNjZMMjIuNTQsOC44OEMyMi45Myw5LjI3IDIyLjkzLDkuOSAyMi41NCwxMC4yOUwxOS43MSwxMy4xMkMxOS4zMiwxMy41IDE4LjY5LDEzLjUgMTguMywxMy4xMkwxNywxMi4wN1YyMEExLDEgMCAwLDEgMTYsMjFNMjAuNDIsOS41OEwxNi4xMSw1LjI4QzE1LDcgMTQsOC4yNSAxMiw5LjI1QzEwLDguMjUgOSw3IDcuODksNS4yOEwzLjU4LDkuNThMNSwxMUw4LDlIOVYxOUgxNVY5SDE2TDE5LDExTDIwLjQyLDkuNThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVtYmxlRHJ5ZXIgPSBcIk02LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyTTcsNEExLDEgMCAwLDAgNiw1QTEsMSAwIDAsMCA3LDZBMSwxIDAgMCwwIDgsNUExLDEgMCAwLDAgNyw0TTEwLDRBMSwxIDAgMCwwIDksNUExLDEgMCAwLDAgMTAsNkExLDEgMCAwLDAgMTEsNUExLDEgMCAwLDAgMTAsNE0xMiw4QTYsNiAwIDAsMCA2LDE0QTYsNiAwIDAsMCAxMiwyMEE2LDYgMCAwLDAgMTgsMTRBNiw2IDAgMCwwIDEyLDhNOC4xMSwxMC41SDEwQzkuNzYsMTEuODggMTAsMTIuNjcgMTAuNTgsMTMuMjlDMTEuNjgsMTQuMzYgMTIuMTYsMTUuNzEgMTEuODksMTcuNUgxMEMxMC4yNCwxNi4xMiAxMCwxNS4zMyA5LjQyLDE0LjcxQzguMzIsMTMuNjQgNy44NSwxMi4yOSA4LjExLDEwLjVNMTIuMTEsMTAuNUgxNEMxMy43NiwxMS44OCAxNCwxMi42NyAxNC41OCwxMy4yOUMxNS42OCwxNC4zNiAxNi4xNiwxNS43MSAxNS44OSwxNy41SDE0QzE0LjI0LDE2LjEyIDE0LDE1LjMzIDEzLjQyLDE0LjcxQzEyLjMyLDEzLjY0IDExLjg1LDEyLjI5IDEyLjExLDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVtYmxlRHJ5ZXJBbGVydCA9IFwiTTQgMkgxNkMxNy4xMSAyIDE4IDIuOSAxOCA0VjIwQzE4IDIxLjExIDE3LjExIDIyIDE2IDIySDRDMi45IDIyIDIgMjEuMTEgMiAyMFY0QzIgMi45IDIuOSAyIDQgMk01IDRDNC40NSA0IDQgNC40NSA0IDVTNC40NSA2IDUgNiA2IDUuNTUgNiA1IDUuNTUgNCA1IDRNOCA0QzcuNDUgNCA3IDQuNDUgNyA1UzcuNDUgNiA4IDYgOSA1LjU1IDkgNSA4LjU1IDQgOCA0TTEwIDhDNi42OSA4IDQgMTAuNjkgNCAxNFM2LjY5IDIwIDEwIDIwIDE2IDE3LjMxIDE2IDE0IDEzLjMxIDggMTAgOE02LjExIDEwLjVIOEM3Ljc2IDExLjg4IDggMTIuNjcgOC41OCAxMy4yOUM5LjY4IDE0LjM2IDEwLjE2IDE1LjcxIDkuODkgMTcuNUg4QzguMjQgMTYuMTIgOCAxNS4zMyA3LjQyIDE0LjcxQzYuMzIgMTMuNjQgNS44NSAxMi4yOSA2LjExIDEwLjVNMTAuMTEgMTAuNUgxMkMxMS43NiAxMS44OCAxMiAxMi42NyAxMi41OCAxMy4yOUMxMy42OCAxNC4zNiAxNC4xNiAxNS43MSAxMy44OSAxNy41SDEyQzEyLjI0IDE2LjEyIDEyIDE1LjMzIDExLjQyIDE0LjcxQzEwLjMyIDEzLjY0IDkuODUgMTIuMjkgMTAuMTEgMTAuNU0yMCAxNUgyMlYxN0gyMFYxNU0yMCA3SDIyVjEzSDIwVjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVtYmxlRHJ5ZXJPZmYgPSBcIk0yMi4xMSAyMS40NkwyLjM5IDEuNzNMMS4xMSAzTDQgNS44OVYyMEM0IDIxLjExIDQuODkgMjIgNiAyMkgxOEMxOC41OCAyMiAxOS4xIDIxLjc1IDE5LjQ2IDIxLjM1TDIwLjg0IDIyLjczTDIyLjExIDIxLjQ2TTEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTIuMzIgNi43IDEwLjggNy44MiA5LjcxTDguNjEgMTAuNUg4LjExQzcuODUgMTIuMjkgOC4zMiAxMy42NCA5LjQyIDE0LjcxQzEwIDE1LjMzIDEwLjI0IDE2LjEyIDEwIDE3LjVIMTEuODlDMTIuMTYgMTUuNzEgMTEuNjggMTQuMzYgMTAuNTggMTMuMjlDMTAuMjIgMTIuOTEgMTAgMTIuNDQgOS45NSAxMS44NEwxNC4wMyAxNS45MkMxNC4xMSAxNi4zNSAxNC4xMSAxNi44NiAxNCAxNy41SDE1LjYxTDE2LjI5IDE4LjE4QzE1LjIgMTkuMyAxMy42OSAyMCAxMiAyME0xMS4yNSA4LjA1QzExLjUgOCAxMS43NSA4IDEyIDhDMTUuMzEgOCAxOCAxMC42OSAxOCAxNEMxOCAxNC4yNSAxOCAxNC41IDE3Ljk1IDE0Ljc1TDIwIDE2LjhWNEMyMCAyLjkgMTkuMTEgMiAxOCAySDZDNS43NiAyIDUuNTQgMi4wNSA1LjMzIDIuMTNMMTEuMjUgOC4wNU0xMCA0QzEwLjU1IDQgMTEgNC40NSAxMSA1UzEwLjU1IDYgMTAgNiA5IDUuNTUgOSA1IDkuNDUgNCAxMCA0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVR1bmUgPSBcIk0zLDE3VjE5SDlWMTdIM00zLDVWN0gxM1Y1SDNNMTMsMjFWMTlIMjFWMTdIMTNWMTVIMTFWMjFIMTNNNyw5VjExSDNWMTNIN1YxNUg5VjlIN00yMSwxM1YxMUgxMVYxM0gyMU0xNSw5SDE3VjdIMjFWNUgxN1YzSDE1VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVuZVZhcmlhbnQgPSBcIk04IDEzQzYuMTQgMTMgNC41OSAxNC4yOCA0LjE0IDE2SDJWMThINC4xNEM0LjU5IDE5LjcyIDYuMTQgMjEgOCAyMVMxMS40MSAxOS43MiAxMS44NiAxOEgyMlYxNkgxMS44NkMxMS40MSAxNC4yOCA5Ljg2IDEzIDggMTNNOCAxOUM2LjkgMTkgNiAxOC4xIDYgMTdDNiAxNS45IDYuOSAxNSA4IDE1UzEwIDE1LjkgMTAgMTdDMTAgMTguMSA5LjEgMTkgOCAxOU0xOS44NiA2QzE5LjQxIDQuMjggMTcuODYgMyAxNiAzUzEyLjU5IDQuMjggMTIuMTQgNkgyVjhIMTIuMTRDMTIuNTkgOS43MiAxNC4xNCAxMSAxNiAxMVMxOS40MSA5LjcyIDE5Ljg2IDhIMjJWNkgxOS44Nk0xNiA5QzE0LjkgOSAxNCA4LjEgMTQgN0MxNCA1LjkgMTQuOSA1IDE2IDVTMTggNS45IDE4IDdDMTggOC4xIDE3LjEgOSAxNiA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVR1bmVWZXJ0aWNhbCA9IFwiTTcgM0g1VjlIN1YzTTE5IDNIMTdWMTNIMTlWM00zIDEzSDVWMjFIN1YxM0g5VjExSDNWMTNNMTUgN0gxM1YzSDExVjdIOVY5SDE1VjdNMTEgMjFIMTNWMTFIMTFWMjFNMTUgMTVWMTdIMTdWMjFIMTlWMTdIMjFWMTVIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVuZVZlcnRpY2FsVmFyaWFudCA9IFwiTTggMTIuMTRWMkg2VjEyLjE0QzQuMjggMTIuNTkgMyAxNC4xNCAzIDE2UzQuMjggMTkuNDEgNiAxOS44NlYyMkg4VjE5Ljg2QzkuNzIgMTkuNDEgMTEgMTcuODYgMTEgMTZTOS43MiAxMi41OSA4IDEyLjE0TTcgMTRDOC4xIDE0IDkgMTQuOSA5IDE2UzguMSAxOCA3IDE4QzUuOSAxOCA1IDE3LjEgNSAxNlM1LjkgMTQgNyAxNE0xOCAySDE2VjQuMTRDMTQuMjggNC41OSAxMyA2LjE0IDEzIDhTMTQuMjggMTEuNDEgMTYgMTEuODZWMjJIMThWMTEuODZDMTkuNzIgMTEuNDEgMjEgOS44NiAyMSA4UzE5LjcyIDQuNTkgMTggNC4xNFYyTTE3IDZDMTguMSA2IDE5IDYuOSAxOSA4UzE4LjEgMTAgMTcgMTBDMTUuOSAxMCAxNSA5LjEgMTUgOFMxNS45IDYgMTcgNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUdXJrZXkgPSBcIk0xMC41IDE5LjQ0QzkuNzUgMTkuOCA4LjkgMjAgOCAyMEM0LjY5IDIwIDIgMTcuMzEgMiAxNFY5QzIgNS42OSA0LjY5IDMgOCAzTDEwLjUgNy41OEM4LjEgOC44MSA2LjUgMTEgNi41IDEzLjVDNi41IDE2IDguMTEgMTguMiAxMC41IDE5LjQ0TTE2IDE4Ljk0VjIwSDE3QzE3LjU1IDIwIDE4IDIwLjQ1IDE4IDIxUzE3LjU1IDIyIDE3IDIySDE0QzEzLjQ1IDIyIDEzIDIxLjU1IDEzIDIxUzEzLjQ1IDIwIDE0IDIwVjE4Ljk0QzEwLjYxIDE4LjU2IDggMTYuMjcgOCAxMy41QzggMTAuNDYgMTEuMTMgOCAxNSA4QzE1LjE5IDggMTUuMzcgOCAxNS41NiA4QzE0Ljg0IDYuNjMgMTQgNS4yMyAxNCA0QzE0IDIuOSAxNC45IDIgMTYgMkMxOC4yMSAyIDIwIDMuNzkgMjAgNkgxOEMxOCA2IDIyIDkgMjIgMTMuNUMyMiAxNi4yNyAxOS4zOSAxOC41NiAxNiAxOC45NE0xNiA0QzE2IDQuNTUgMTYuNDUgNSAxNyA1UzE4IDQuNTUgMTggNCAxNy41NSAzIDE3IDMgMTYgMy40NSAxNiA0TTE3IDEyQzE3IDEwLjkgMTYuMTEgMTAgMTUgMTBDMTIuNzkgMTAgMTEgMTEuNzkgMTEgMTRIMTVDMTYuMTEgMTQgMTcgMTMuMTEgMTcgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHVybnN0aWxlID0gXCJNMjIsMjJIMTZWMTFMMTAsNVYySDIyVjIyTTkuMTcsNi4xN0M4LjQyLDYuOTIgOCw3Ljk0IDgsOUgyVjExSDguNTVDOC45LDExLjYgOS40LDEyLjEgMTAsMTIuNDVWMTlIMTJWMTNDMTMuMDYsMTMgMTQuMDgsMTIuNTggMTQuODMsMTEuODNMOS4xNyw2LjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVR1cm5zdGlsZU91dGxpbmUgPSBcIk0xMy40MSwxMC40MUMxMy4wNCwxMC43OSAxMi41MywxMSAxMiwxMUEyLDIgMCAwLDEgMTAsOUMxMCw4LjQ3IDEwLjIxLDcuOTYgMTAuNTksNy41OUw5LjE3LDYuMTdDOC40Miw2LjkyIDgsNy45NCA4LDlIMlYxMUg4LjU1QzguOSwxMS42IDkuNCwxMi4xIDEwLDEyLjQ1VjE5SDEyVjEzQzEzLjA2LDEzIDE0LjA4LDEyLjU4IDE0LjgzLDExLjgzTDEzLjQxLDEwLjQxTTEwLDJWNUwxNiwxMVYyMkgyMlYySDEwTTIwLDIwSDE4VjEwLjE3TDEyLDQuMTdWNEgyMFYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlUdXJ0bGUgPSBcIk04LjQ3LDUuOTVDOC45NSw1LjY3IDkuNDcsNS40NCAxMCw1LjI4VjRDMTAsMi45IDEwLjg3LDIgMTEuOTcsMS45N0MxMy4xMywyIDE0LDIuOSAxNCw0VjUuMjhDMTQuNTMsNS40NSAxNS4wNSw1LjY3IDE1LjUzLDUuOTVMMTMuOTMsOC4wN0gxMC4wN0w4LjQ3LDUuOTVNMTksMTJDMTksMTIuNSAxOC45NSwxMi45NSAxOC44NiwxMy40TDE2LjMzLDEyLjYyTDE1LjE0LDguOTZMMTYuNzQsNi44NUMxNy4xNyw3LjI1IDE3LjU1LDcuNyAxNy44OCw4LjJDMTguNjcsOC4xMyAxOS40Myw4LjI1IDIwLjExLDguNTlDMjEuMTQsOS4xMiAyMS44NCwxMC4xMyAyMiwxMS4yOEwxOSwxMS42NEMxOSwxMS43NiAxOSwxMS44OCAxOSwxMk01LDEyQzUsMTEuODggNSwxMS43NiA1LDExLjY1TDIsMTEuMjhDMi4xNiwxMC4xMyAyLjg2LDkuMTIgMy44OSw4LjU5QzQuNTcsOC4yNSA1LjM0LDguMTMgNi4wOCw4LjI2QzYuNDEsNy43NSA2Ljc5LDcuMjggNy4yNCw2Ljg3TDguODYsOC45NUw3LjY3LDEyLjYyTDUuMTQsMTMuNEM1LjA1LDEyLjk1IDUsMTIuNSA1LDEyTTEwLjI0LDkuNTdIMTMuNzZMMTQuODUsMTIuOTNMMTIsMTVMOS4xNSwxMi45M0wxMC4yNCw5LjU3TTguMTMsMTQuMDVMMTEuMjUsMTYuMzFWMTguOTZDMTAuNjgsMTguOSAxMC4xMywxOC43NyA5LjYyLDE4LjU4TDguMzksMjEuMzRDNy4zMywyMC44NyA2LjU3LDE5LjkgNi4zNywxOC43NkM2LjIzLDE4IDYuMzUsMTcuMjQgNi42OSwxNi41NkM2LjI0LDE2LjA0IDUuODcsMTUuNDYgNS41OSwxNC44Mkw4LjEzLDE0LjA1TTE1Ljg3LDE0LjA1TDE4LjQxLDE0LjgyQzE4LjEzLDE1LjQ2IDE3Ljc2LDE2LjA0IDE3LjMxLDE2LjU2QzE3LjY1LDE3LjI0IDE3Ljc3LDE4IDE3LjY0LDE4Ljc2QzE3LjQzLDE5LjkgMTYuNjcsMjAuODcgMTUuNjEsMjEuMzRMMTQuMzksMTguNThDMTMuODYsMTguNzcgMTMuMzMsMTguOTQgMTIuNzUsMTlWMTYuMzFMMTUuODcsMTQuMDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVHdpdGNoID0gXCJNMTEuNjQgNS45M0gxMy4wN1YxMC4yMUgxMS42NE0xNS41NyA1LjkzSDE3VjEwLjIxSDE1LjU3TTcgMkwzLjQzIDUuNTdWMTguNDNINy43MVYyMkwxMS4yOSAxOC40M0gxNC4xNEwyMC41NyAxMlYyTTE5LjE0IDExLjI5TDE2LjI5IDE0LjE0SDEzLjQzTDEwLjkzIDE2LjY0VjE0LjE0SDcuNzFWMy40M0gxOS4xNFpcIjtcclxuZXhwb3J0IHZhciBtZGlUd2l0dGVyID0gXCJNMjIuNDYsNkMyMS42OSw2LjM1IDIwLjg2LDYuNTggMjAsNi42OUMyMC44OCw2LjE2IDIxLjU2LDUuMzIgMjEuODgsNC4zMUMyMS4wNSw0LjgxIDIwLjEzLDUuMTYgMTkuMTYsNS4zNkMxOC4zNyw0LjUgMTcuMjYsNCAxNiw0QzEzLjY1LDQgMTEuNzMsNS45MiAxMS43Myw4LjI5QzExLjczLDguNjMgMTEuNzcsOC45NiAxMS44NCw5LjI3QzguMjgsOS4wOSA1LjExLDcuMzggMyw0Ljc5QzIuNjMsNS40MiAyLjQyLDYuMTYgMi40Miw2Ljk0QzIuNDIsOC40MyAzLjE3LDkuNzUgNC4zMywxMC41QzMuNjIsMTAuNSAyLjk2LDEwLjMgMi4zOCwxMEMyLjM4LDEwIDIuMzgsMTAgMi4zOCwxMC4wM0MyLjM4LDEyLjExIDMuODYsMTMuODUgNS44MiwxNC4yNEM1LjQ2LDE0LjM0IDUuMDgsMTQuMzkgNC42OSwxNC4zOUM0LjQyLDE0LjM5IDQuMTUsMTQuMzYgMy44OSwxNC4zMUM0LjQzLDE2IDYsMTcuMjYgNy44OSwxNy4yOUM2LjQzLDE4LjQ1IDQuNTgsMTkuMTMgMi41NiwxOS4xM0MyLjIyLDE5LjEzIDEuODgsMTkuMTEgMS41NCwxOS4wN0MzLjQ0LDIwLjI5IDUuNywyMSA4LjEyLDIxQzE2LDIxIDIwLjMzLDE0LjQ2IDIwLjMzLDguNzlDMjAuMzMsOC42IDIwLjMzLDguNDIgMjAuMzIsOC4yM0MyMS4xNiw3LjYzIDIxLjg4LDYuODcgMjIuNDYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlUd2l0dGVyUmV0d2VldCA9IFwiTTYsNS43NUwxMC4yNSwxMEg3VjE2SDEzLjVMMTUuNSwxOEg3QTIsMiAwIDAsMSA1LDE2VjEwSDEuNzVMNiw1Ljc1TTE4LDE4LjI1TDEzLjc1LDE0SDE3VjhIMTAuNUw4LjUsNkgxN0EyLDIgMCAwLDEgMTksOFYxNEgyMi4yNUwxOCwxOC4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlUd29GYWN0b3JBdXRoZW50aWNhdGlvbiA9IFwiTTIsN1Y5SDZWMTFINEEyLDIgMCAwLDAgMiwxM1YxN0g4VjE1SDRWMTNINkEyLDIgMCAwLDAgOCwxMVY5QzgsNy44OSA3LjEsNyA2LDdIMk05LDdWMTdIMTFWMTNIMTRWMTFIMTFWOUgxNVY3SDlNMTgsN0EyLDIgMCAwLDAgMTYsOVYxN0gxOFYxNEgyMFYxN0gyMlY5QTIsMiAwIDAsMCAyMCw3SDE4TTE4LDlIMjBWMTJIMThWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlUeXBld3JpdGVyID0gXCJNMjAgMTNIMTZDMTYgMTQuMSAxNS4xIDE1IDE0IDE1SDEwQzguOSAxNSA4IDE0LjEgOCAxM0g0TDIgMThWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDIwQzIxLjEgMjIgMjIgMjEuMSAyMiAyMFYxOE02IDIwQzUuMTEgMjAgNC42NiAxOC45MiA1LjI5IDE4LjI5QzUuOTIgMTcuNjYgNyAxOC4xMSA3IDE5QzcgMTkuNTUgNi41NSAyMCA2IDIwTTEwIDIwQzkuMTEgMjAgOC42NiAxOC45MiA5LjI5IDE4LjI5QzkuOTIgMTcuNjYgMTEgMTguMTEgMTEgMTlDMTEgMTkuNTUgMTAuNTUgMjAgMTAgMjBNMTQgMjBDMTMuMTEgMjAgMTIuNjYgMTguOTIgMTMuMjkgMTguMjlDMTMuOTIgMTcuNjYgMTUgMTguMTEgMTUgMTlDMTUgMTkuNTUgMTQuNTUgMjAgMTQgMjBNMTggMjBDMTcuMTEgMjAgMTYuNjYgMTguOTIgMTcuMjkgMTguMjlDMTcuOTIgMTcuNjYgMTkgMTguMTEgMTkgMTlDMTkgMTkuNTUgMTguNTUgMjAgMTggMjBNMTggMTBWM0g2VjEwSDNWMTJIMjFWMTBNOCA1SDE2VjZIOE04IDdIMTRWOEg4XCI7XHJcbmV4cG9ydCB2YXIgbWRpVWJpc29mdCA9IFwiTTExLjQxLDJDNS4yMSwyIDIuNTMsNy41MyAyLjUzLDcuNTNMMy4zMiw4LjA5QzMuMzIsOC4wOSAyLjMzLDEwIDIuMzUsMTIuNEMyLjM1LDE3LjM0IDYuMjksMjIgMTIuMDcsMjJDMTcuMzMsMjIgMjEuNjcsMTcuNzEgMjEuNjcsMTIuNDFDMjEuNjcsNS41IDE2LjMxLDIgMTEuNDEsMk0xMS40NywzLjY5QzE2LjMxLDMuNjkgMjAuMDcsNy42IDIwLjA3LDEyLjE0QzIwLjA3LDE2Ljk1IDE2LjQ1LDIwLjMgMTIuMjMsMjAuM0M5LjEzLDIwLjMgNi4zMywxNy45NCA2LjMzLDE0LjdDNi4zMywxMi44MiA3LjMyLDExLjUgOC40NCwxMC44Mkw4LjYsMTFDOC4zLDExLjI0IDcuNDMsMTIuNjQgNy40MywxNEM3LjQzLDE2LjU2IDkuNDMsMTguMzMgMTEuOTUsMTguMzNDMTUuMTYsMTguMzMgMTcuMywxNS41OSAxNy4zLDEyLjQxQzE3LjMsOC43MSAxNC4wMyw1LjU3IDEwLjEsNS41N0M3LjkzLDUuNTcgNi4wOSw2LjUgNS4wMyw3LjMzTDQuODYsNy4xOEM2LjI1LDUuMDQgOC42NSwzLjY5IDExLjQ3LDMuNjlNMTAsNy4yM0MxMi41Myw3LjIzIDE0Ljk3LDguODkgMTUuNTksMTEuMjVMMTUuMzYsMTEuMzNDMTQuMjcsOS44OCAxMi40Nyw4LjY4IDEwLjM1LDguNjhDNi40NCw4LjY4IDQuMzksMTIuMjMgNC42OSwxNS4xOUw0LjQ2LDE1LjI4QzQuNDYsMTUuMjggNC4wMywxNC4zMyA0LjAzLDEzLjJDNC4wMyw5LjkzIDYuNzEsNy4yMyAxMCw3LjIzTTExLjY4LDExLjMzQzEyLjg2LDExLjMzIDEzLjgxLDEyLjMgMTMuODEsMTMuNDRDMTMuODEsMTQuMzggMTMuMjEsMTQuOTQgMTMuMjEsMTQuOTRMMTMuOTIsMTUuNDVDMTMuOTIsMTUuNDUgMTMuMjEsMTYuNTcgMTEuNzYsMTYuNTdDMTAuMzcsMTYuNTcgOS4xMywxNS40NCA5LjEzLDEzLjkzQzkuMTMsMTIuMzggMTAuNDcsMTEuMzMgMTEuNjgsMTEuMzNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVWJ1bnR1ID0gXCJNMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyQTEwLDEwIDAgMCwxIDIyLDEyTTE0LjM0LDcuNzRDMTQuOTIsOC4wNyAxNS42NSw3Ljg3IDE2LDcuM0MxNi4zMSw2LjczIDE2LjEyLDYgMTUuNTQsNS42NkMxNC45Nyw1LjMzIDE0LjIzLDUuNSAxMy45LDYuMUMxMy41Nyw2LjY3IDEzLjc3LDcuNDEgMTQuMzQsNy43NE0xMS44OCwxNS41QzExLjM1LDE1LjUgMTAuODUsMTUuMzkgMTAuNDEsMTUuMThMOS41NywxNi42OEMxMC4yNywxNyAxMS4wNSwxNy4yMiAxMS44OCwxNy4yMkMxMi4zNywxNy4yMiAxMi44MywxNy4xNSAxMy4yOCwxNy4wM0MxMy4zNiwxNi41NCAxMy42NCwxNi4xIDE0LjEsMTUuODRDMTQuNTYsMTUuNTcgMTUuMDgsMTUuNTUgMTUuNTQsMTUuNzJDMTYuNDMsMTQuODUgMTcsMTMuNjYgMTcuMDksMTIuMzNMMTUuMzgsMTIuMzFDMTUuMjIsMTQuMSAxMy43MiwxNS41IDExLjg4LDE1LjVNMTEuODgsOC41QzEzLjcyLDguNSAxNS4yMiw5Ljg5IDE1LjM4LDExLjY5TDE3LjA5LDExLjY2QzE3LDEwLjM0IDE2LjQzLDkuMTUgMTUuNTQsOC4yOEMxNS4wOCw4LjQ1IDE0LjU1LDguNDIgMTQuMSw4LjE2QzEzLjY0LDcuOSAxMy4zNiw3LjQ1IDEzLjI4LDYuOTdDMTIuODMsNi44NSAxMi4zNyw2Ljc4IDExLjg4LDYuNzhDMTEuMDUsNi43OCAxMC4yNyw2Ljk3IDkuNTcsNy4zMkwxMC40MSw4LjgyQzEwLjg1LDguNjEgMTEuMzUsOC41IDExLjg4LDguNU04LjM3LDEyQzguMzcsMTAuODEgOC45Niw5Ljc2IDkuODYsOS4xM0w5LDcuNjVDNy45NCw4LjM2IDcuMTUsOS40MyA2LjgzLDEwLjY5QzcuMjEsMTEgNy40NSwxMS40NyA3LjQ1LDEyQzcuNDUsMTIuNTMgNy4yMSwxMyA2LjgzLDEzLjMxQzcuMTUsMTQuNTYgNy45NCwxNS42NCA5LDE2LjM0TDkuODYsMTQuODdDOC45NiwxNC4yNCA4LjM3LDEzLjE5IDguMzcsMTJNMTQuMzQsMTYuMjZDMTMuNzcsMTYuNTkgMTMuNTcsMTcuMzIgMTMuOSwxNy45QzE0LjIzLDE4LjQ3IDE0Ljk3LDE4LjY3IDE1LjU0LDE4LjM0QzE2LjEyLDE4IDE2LjMxLDE3LjI3IDE2LDE2LjdDMTUuNjUsMTYuMTIgMTQuOTIsMTUuOTMgMTQuMzQsMTYuMjZNNS43NiwxMC44QzUuMSwxMC44IDQuNTYsMTEuMzQgNC41NiwxMkM0LjU2LDEyLjY2IDUuMSwxMy4yIDUuNzYsMTMuMkM2LjQzLDEzLjIgNi45NiwxMi42NiA2Ljk2LDEyQzYuOTYsMTEuMzQgNi40MywxMC44IDUuNzYsMTAuOFpcIjtcclxuZXhwb3J0IHZhciBtZGlVZm8gPSBcIk0xNS45NCAxMC4yOEMxNS42NiA3Ljg3IDE0IDYgMTIgNlM4LjM0IDcuODcgOC4wNiAxMC4yOEM0LjUgMTAuODIgMiAxMi4wNiAyIDEzLjVDMiAxNS40MyA2LjUgMTcgMTIgMTdTMjIgMTUuNDMgMjIgMTMuNUMyMiAxMi4wNiAxOS41IDEwLjgyIDE1Ljk0IDEwLjI4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVmb091dGxpbmUgPSBcIk0xNyAxMC41NEMxNi43OCA3LjQ0IDE0LjYzIDUgMTIgNVM3LjIyIDcuNDQgNyAxMC41NEM0IDExLjIzIDIgMTIuNSAyIDE0QzIgMTYuMjEgNi41IDE4IDEyIDE4UzIyIDE2LjIxIDIyIDE0QzIyIDEyLjUgMjAgMTEuMjMgMTcgMTAuNTRNMTQuOTMgMTEuODRDMTMuMDMgMTIuMDUgMTAuOTcgMTIuMDUgOS4wNyAxMS44NEM5LjAzIDExLjU2IDkgMTEuMjggOSAxMUM5IDguOCAxMC4zNSA3IDEyIDdTMTUgOC44IDE1IDExQzE1IDExLjI4IDE1IDExLjU2IDE0LjkzIDExLjg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVsdHJhSGlnaERlZmluaXRpb24gPSBcIk05LDdIMTFWMTFIMTNWN0gxNVYxN0gxM1YxM0gxMVYxN0g5VjdNMTcsN0gyMEEzLDMgMCAwLDEgMjMsMTBWMTRBMywzIDAgMCwxIDIwLDE3SDE3VjdNMjAsMTVBMSwxIDAgMCwwIDIxLDE0VjEwQTEsMSAwIDAsMCAyMCw5SDE5VjE1SDIwTTcsMTRBMywzIDAgMCwxIDQsMTdBMywzIDAgMCwxIDEsMTRWN0gzVjE0QTEsMSAwIDAsMCA0LDE1QTEsMSAwIDAsMCA1LDE0VjdIN1YxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlVbWJyYWNvID0gXCJNOC42LDguNkw3LjE3LDguMzhDNi41LDExLjY3IDYuNDYsMTQuMjQgNy42MSwxNS41QzguNiwxNi42MSAxMS44OSwxNi42MSAxMS44OSwxNi42MUMxMS44OSwxNi42MSAxNS4yOSwxNi42MSAxNi4yOCwxNS41QzE3LjQzLDE0LjI0IDE3LjM4LDExLjY3IDE2LjcyLDguMzhMMTUuMjksOC42QzE1LjI5LDguNiAxNi41NCwxMy44OCAxNC42OSwxNC42OUMxMy44MSwxNS4wNyAxMS44OSwxNS4wNyAxMS44OSwxNS4wN0MxMS44OSwxNS4wNyAxMC4wOCwxNS4wNyA5LjIsMTQuNjlDNy4zNSwxMy44OCA4LjYsOC42IDguNiw4LjZNMTIsM0E5LDkgMCAwLDEgMjEsMTJBOSw5IDAgMCwxIDEyLDIxQTksOSAwIDAsMSAzLDEyQTksOSAwIDAsMSAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVVtYnJlbGxhID0gXCJNMTIsMkE5LDkgMCAwLDEgMjEsMTFIMTNWMTlBMywzIDAgMCwxIDEwLDIyQTMsMyAwIDAsMSA3LDE5VjE4SDlWMTlBMSwxIDAgMCwwIDEwLDIwQTEsMSAwIDAsMCAxMSwxOVYxMUgzQTksOSAwIDAsMSAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVVtYnJlbGxhQ2xvc2VkID0gXCJNMTIgMkMxMS42IDIgMTEuMyAyLjIgMTEuMSAyLjZMNi41IDE1SDExVjE5QzExIDE5LjYgMTAuNiAyMCAxMCAyMEM5LjQgMjAgOSAxOS42IDkgMTlWMThIN1YxOUM3IDIwLjcgOC4zIDIyIDEwIDIyUzEzIDIwLjcgMTMgMTlWMTVIMTcuNUwxMi45IDIuNkMxMi43IDIuMiAxMi40IDIgMTIgMlpcIjtcclxuZXhwb3J0IHZhciBtZGlVbWJyZWxsYUNsb3NlZE91dGxpbmUgPSBcIk0xMiAyQzEyLjQgMiAxMi44IDIuMiAxMi45IDIuNkwxNy41IDE1SDEzVjE5QzEzIDIwLjcgMTEuNyAyMiAxMCAyMlM3IDIwLjcgNyAxOVYxOEg5VjE5QzkgMTkuNiA5LjQgMjAgMTAgMjBDMTAuNiAyMCAxMSAxOS42IDExIDE5VjE1SDYuNUwxMS4xIDIuNkMxMS4yIDIuMiAxMS42IDIgMTIgMk0xMiA1LjlMOS40IDEzSDE0LjdMMTIgNS45WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVtYnJlbGxhQ2xvc2VkVmFyaWFudCA9IFwiTTE1IDdMMTMgNlYzLjVDMTMgMy4yIDEzLjIgMyAxMy41IDNTMTQgMy4yIDE0IDMuNVY0SDE2VjMuNUMxNiAyLjEgMTQuOSAxIDEzLjUgMVMxMSAyLjEgMTEgMy41VjZMOSA3TDYgNkwxMS4xIDIxLjNDMTEuNCAyMi4yIDEyLjcgMjIuMiAxMyAyMS4zQzE0LjYgMTYuMiAxOCA2IDE4IDZMMTUgN00xMSAxNUw5IDguOUw5LjcgOS4xTDExIDguMVYxNU0xMyA4LjFMMTQuMyA5LjFMMTUgOC45TDEzIDE1VjguMVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbWJyZWxsYU91dGxpbmUgPSBcIk0xMiw0QzguOSw0IDYuMTgsNi4wMyA1LjMsOUgxOC43QzE3LjgyLDYuMDQgMTUuMDksNCAxMiw0TTEyLDJBOSw5IDAgMCwxIDIxLDExSDEzVjE5QTMsMyAwIDAsMSAxMCwyMkEzLDMgMCAwLDEgNywxOVYxOEg5VjE5QTEsMSAwIDAsMCAxMCwyMEExLDEgMCAwLDAgMTEsMTlWMTFIM0E5LDkgMCAwLDEgMTIsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmRvID0gXCJNMTIuNSw4QzkuODUsOCA3LjQ1LDkgNS42LDEwLjZMMiw3VjE2SDExTDcuMzgsMTIuMzhDOC43NywxMS4yMiAxMC41NCwxMC41IDEyLjUsMTAuNUMxNi4wNCwxMC41IDE5LjA1LDEyLjgxIDIwLjEsMTZMMjIuNDcsMTUuMjJDMjEuMDgsMTEuMDMgMTcuMTUsOCAxMi41LDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5kb1ZhcmlhbnQgPSBcIk0xMy41LDdBNi41LDYuNSAwIDAsMSAyMCwxMy41QTYuNSw2LjUgMCAwLDEgMTMuNSwyMEgxMFYxOEgxMy41QzE2LDE4IDE4LDE2IDE4LDEzLjVDMTgsMTEgMTYsOSAxMy41LDlINy44M0wxMC45MSwxMi4wOUw5LjUsMTMuNUw0LDhMOS41LDIuNUwxMC45MiwzLjkxTDcuODMsN0gxMy41TTYsMThIOFYyMEg2VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVuZm9sZExlc3NIb3Jpem9udGFsID0gXCJNMTYuNTksNS40MUwxNS4xNyw0TDEyLDcuMTdMOC44Myw0TDcuNDEsNS40MUwxMiwxME03LjQxLDE4LjU5TDguODMsMjBMMTIsMTYuODNMMTUuMTcsMjBMMTYuNTgsMTguNTlMMTIsMTRMNy40MSwxOC41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmZvbGRMZXNzVmVydGljYWwgPSBcIk01LjQxLDcuNDFMMTAsMTJMNS40MSwxNi41OUw0LDE1LjE3TDcuMTcsMTJMNCw4LjgzTDUuNDEsNy40MU0xOC41OSwxNi41OUwxNCwxMkwxOC41OSw3LjQyTDIwLDguODNMMTYuODMsMTJMMjAsMTUuMTdMMTguNTksMTYuNTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5mb2xkTW9yZUhvcml6b250YWwgPSBcIk0xMiwxOC4xN0w4LjgzLDE1TDcuNDIsMTYuNDFMMTIsMjFMMTYuNTksMTYuNDFMMTUuMTcsMTVNMTIsNS44M0wxNS4xNyw5TDE2LjU4LDcuNTlMMTIsM0w3LjQxLDcuNTlMOC44Myw5TDEyLDUuODNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5mb2xkTW9yZVZlcnRpY2FsID0gXCJNMTguMTcsMTJMMTUsOC44M0wxNi40MSw3LjQxTDIxLDEyTDE2LjQxLDE2LjU4TDE1LDE1LjE3TDE4LjE3LDEyTTUuODMsMTJMOSwxNS4xN0w3LjU5LDE2LjU5TDMsMTJMNy41OSw3LjQyTDksOC44M0w1LjgzLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVVuZ3JvdXAgPSBcIk0yLDJINlYzSDEzVjJIMTdWNkgxNlY5SDE4VjhIMjJWMTJIMjFWMThIMjJWMjJIMThWMjFIMTJWMjJIOFYxOEg5VjE2SDZWMTdIMlYxM0gzVjZIMlYyTTE4LDEyVjExSDE2VjEzSDE3VjE3SDEzVjE2SDExVjE4SDEyVjE5SDE4VjE4SDE5VjEySDE4TTEzLDZWNUg2VjZINVYxM0g2VjE0SDlWMTJIOFY4SDEyVjlIMTRWNkgxM00xMiwxMkgxMVYxNEgxM1YxM0gxNFYxMUgxMlYxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmljb2RlID0gXCJNMjIgNkExLjQ2IDEuNDYgMCAwIDEgMjAuNTQgNy40NEExLjQ2IDEuNDYgMCAwIDEgMTkuMDkgNkExLjQ2IDEuNDYgMCAwIDEgMjAuNTQgNC41QTEuNDYgMS40NiAwIDAgMSAyMiA2TTIxLjU2IDguODZIMTkuNTNDMTkuNCA4Ljg1IDE5LjM0IDguOTEgMTkuMzQgOVYxMi41OUMxOS4zNCAxMy4wOCAxOS4zNCAxMy41IDE5LjM1IDEzLjg2TDE5LjM3IDE0Ljc2QzE5LjM4IDE1IDE5LjM5IDE1LjIxIDE5LjM5IDE1LjM5QzE5LjQgMTUuNTYgMTkuNCAxNS43MiAxOS40IDE1Ljg2SDE5LjM4QzE5LjI2IDE1LjYgMTkuMDcgMTUuMjIgMTguODIgMTQuNzRDMTguNTggMTQuMjcgMTguMjkgMTMuNzIgMTcuOTcgMTMuMTFDMTcuNjQgMTIuNSAxNy4yOSAxMS44NCAxNi45MiAxMS4xNUMxNi41NSAxMC40NyAxNi4xOCA5Ljc4IDE1LjgxIDkuMTFDMTUuNDUgOC40MyAxNS4wOSA3Ljc4IDE0Ljc1IDcuMTZDMTQuNCA2LjU0IDE0LjEgNiAxMy44NSA1LjU0QzEzLjgyIDUuNSAxMy43OSA1LjQ0IDEzLjc3IDUuNDJDMTMuNzQgNS40IDEzLjY4IDUuMzkgMTMuNiA1LjM5SDEwLjYyQzEwLjUgNS4zOSAxMC40NyA1LjQ0IDEwLjQ3IDUuNTRIMTAuNUMxMC40NyA1LjU2IDEwLjQ3IDUuNTcgMTAuNDcgNS41OFYxMy44NEMxMC40NyAxNC41IDEwLjQgMTUgMTAuMjUgMTUuNDVDMTAuMSAxNS44OCA5LjkgMTYuMjMgOS42NCAxNi41QzkuMzggMTYuNzUgOS4wNyAxNi45MyA4LjcyIDE3LjA1QzguMzYgMTcuMTYgOCAxNy4yMiA3LjU2IDE3LjIyQzYuNTQgMTcuMjIgNS43OSAxNi45MSA1LjMgMTYuMzFDNC44IDE1LjcgNC41NiAxNC44OSA0LjU2IDEzLjg4VjUuNTZDNC41NiA1LjQ1IDQuNSA1LjM5IDQuMzkgNS4zOUgyLjE3QzIuMDYgNS4zOSAyIDUuNDUgMiA1LjU4VjE0LjA3QzIgMTUgMi4xMyAxNS43OCAyLjM4IDE2LjQ2QzIuNjMgMTcuMTMgMyAxNy42OSAzLjUgMTguMTRDMy45NiAxOC41OCA0LjUzIDE4LjkyIDUuMjEgMTkuMTRDNS44OSAxOS4zNiA2LjY0IDE5LjUgNy40NyAxOS41QzguMjQgMTkuNSA4Ljk3IDE5LjM4IDkuNjUgMTkuMTdDMTAuMzQgMTguOTcgMTAuOTMgMTguNjQgMTEuNDIgMTguMkMxMS45MSAxNy43NSAxMi4zIDE3LjE4IDEyLjU5IDE2LjVDMTIuODggMTUuNzkgMTMuMDMgMTQuOTUgMTMuMDMgMTMuOTZWOC42MkMxMy4xNCA4Ljg2IDEzLjI4IDkuMTUgMTMuNDQgOS40N0MxMy43MyAxMC4wNSAxNC4wNSAxMC42OCAxNC40MiAxMS4zOEMxNC43OSAxMi4wOCAxNS4xNyAxMi44IDE1LjU4IDEzLjU2QzE2IDE0LjMyIDE2LjM5IDE1LjA2IDE2Ljc3IDE1Ljc2QzE3LjE2IDE2LjQ2IDE3LjUgMTcuMTEgMTcuODMgMTcuN0MxOC4xNSAxOC4yOSAxOC40IDE4Ljc2IDE4LjU4IDE5LjEyQzE4LjYzIDE5LjIyIDE4LjczIDE5LjI3IDE4Ljg1IDE5LjI3SDIxLjU0QzIxLjY4IDE5LjI3IDIxLjc1IDE5LjIgMjEuNzUgMTkuMDhWOS4wNUMyMS43NSA4LjkyIDIxLjY4IDguODUgMjEuNTYgOC44NVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbmljb3JuID0gXCJNMjIgNUwyMS4xMSA2LjM0QzIxLjY1IDYuNyAyMiA3LjMxIDIyIDhWMTEuNUwyMC41IDEyTDE4Ljk2IDkuNTRDMTguODMgOS4zMyAxOC41IDkuNDIgMTguNSA5LjY3VjEzLjI1QzE4LjUgMTQuMjMgMTguMTEgMTUuMTEgMTcuNSAxNS43OFYyMkgxNVYxN0MxNC45MiAxNyAxNC44NCAxNyAxNC43NSAxN0MxNC41NCAxNyAxNC4zMyAxNi45NyAxNC4xMyAxNi45NEw5LjQ1IDE2LjE2TDguNTcgMTguMTJMOS41NCAyMkg2Ljk2TDYuMDQgMTguM0M1Ljk3IDE4LjAzIDYgMTcuNzQgNi4xMSAxNy41TDcgMTUuNUM2LjEyIDE0LjkyIDUuNTMgMTMuOTQgNS41IDEyLjgxQzUuNDYgMTIuOTYgNS40NCAxMy4xOCA1LjQ3IDEzLjVDNS41IDEzLjk0IDUuNjEgMTQuNTkgNS41NCAxNS4zMUM1LjUgMTYuMDMgNS4xOCAxNi43NyA0Ljc2IDE3LjI2QzQuMzIgMTcuNzUgMy44NSAxOC4wOSAzLjM1IDE4LjM1TDIuNjUgMTcuNjVDMi44NCAxNy4xOCAzLjAzIDE2Ljc2IDMuMDcgMTYuMzdDMy4xMyAxNiAzLjA2IDE1LjcgMi45NSAxNS40M0wyLjQyIDE0LjNDMi4yMSAxMy43OSAxLjk1IDEzLjA1IDIgMTIuMThDMi4wMyAxMS4zMyAyLjUgMTAuMjIgMy4zOSA5LjYxQzQuMjkgOSA1LjI2IDguOTEgNi4wNSA5LjA4QzYuNTUgOS4xOCA3LjA2IDkuNDIgNy41IDkuNzZDNy44NyA5LjU5IDguMyA5LjUgOC43NSA5LjVIMTQuNVY5QzE0LjUgNi43OSAxNi4yOSA1IDE4LjUgNUwyMiAyTDIxIDVIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5pY29yblZhcmlhbnQgPSBcIk0yMCAxMlYxOUwxNyAyMEwxNCAxNS4zM0MxMy43MSAxNC44OSAxMyAxNS4xNCAxMy4wOCAxNS42N0wxNCAyM0w0IDE4TDQuOTYgMTIuNzVDNS41NiA5LjQyIDguNDYgNyAxMS44NCA3SDEzTDE5IDFMMTcgN0gyMEwxOC40MiA5LjM3QzE5LjM2IDkuODggMjAgMTAuODYgMjAgMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVW5pY3ljbGUgPSBcIk0xMyA5LjA5VjVIMTRDMTQuNTUgNSAxNSA0LjU1IDE1IDRTMTQuNTUgMyAxNCAzSDEwQzkuNDUgMyA5IDMuNDUgOSA0UzkuNDUgNSAxMCA1SDExVjkuMDlDOC4xNiA5LjU3IDYgMTIuMDMgNiAxNUM2IDE4LjMxIDguNjkgMjEgMTIgMjFTMTggMTguMzEgMTggMTVDMTggMTIuMDMgMTUuODQgOS41NyAxMyA5LjA5TTEyIDE5QzkuNzkgMTkgOCAxNy4yMSA4IDE1QzggMTMuMTQgOS4yOCAxMS41OSAxMSAxMS4xNFYxNkgxM1YxMS4xNEMxNC43MiAxMS41OSAxNiAxMy4xNCAxNiAxNUMxNiAxNy4yMSAxNC4yMSAxOSAxMiAxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlVbml0eSA9IFwiTTEwLjExLDE3SDcuNUwyLjU5LDEyTDcuNSw3SDEwLjExTDExLjQyLDQuNzRMMTguMjEsM0wyMC4wOCw5Ljc0TDE4Ljc3LDEyTDIwLjA4LDE0LjI2TDE4LjIxLDIxTDExLjQyLDE5LjI2TDEwLjExLDE3TTEwLjI1LDE2Ljc1TDE1LjM4LDE4LjEzTDEyLjQyLDEzSDYuNUwxMC4yNSwxNi43NU0xNy4xMiwxNy4xM0wxOC41LDEyTDE3LjEyLDYuODdMMTQuMTUsMTJMMTcuMTIsMTcuMTNNMTAuMjUsNy4yNUw2LjUsMTFIMTIuNDJMMTUuMzgsNS44N0wxMC4yNSw3LjI1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVucmVhbCA9IFwiTTIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMkExMCwxMCAwIDAsMCAyLDEyTTUuMjQsMTguNzZDMy40MywxNi45NSAyLjQ0LDE0LjU1IDIuNDQsMTJDMi40NCw5LjQ1IDMuNDMsNy4wNSA1LjI0LDUuMjRDNy4wNSwzLjQzIDkuNDUsMi40NCAxMiwyLjQ0QzE0LjU1LDIuNDQgMTYuOTUsMy40MyAxOC43Niw1LjI0QzIwLjU3LDcuMDUgMjEuNTYsOS40NSAyMS41NiwxMkMyMS41NiwxNC41NSAyMC41NywxNi45NSAxOC43NiwxOC43NkMxNi45NSwyMC41NyAxNC41NSwyMS41NiAxMiwyMS41NkM5LjQ1LDIxLjU2IDcuMDUsMjAuNTcgNS4yNCwxOC43Nk02LjM1LDkuNUM0LjM0LDExLjc5IDQuNzMsMTMuNjggNC43MywxMy42OEM0LjczLDEzLjY4IDUuMjgsMTIuMzggNi42MSwxMUM3LjI1LDEwLjM3IDcuNzIsMTAuMTUgOC4wNCwxMC4xNUM4LjQsMTAuMTUgOC41NywxMC40MSA4LjU3LDEwLjY1VjE1LjI5QzguNTcsMTUuNzUgOC4yNywxNS44NSA4LDE1Ljg0QzcuNzcsMTUuODQgNy41NSwxNS43NiA3LjU1LDE1Ljc2QzguOTIsMTcuNzMgMTIuMTksMTggMTIuMTksMThMMTMuNjMsMTYuNUgxMy42N0wxNSwxNy42M0MxNy4zOSwxNi4yMSAxOC41NSwxMy41OCAxOC41NSwxMy41OEMxNy41LDE0LjcgMTYuNzksMTQuOTcgMTYuMzksMTQuOTZDMTYuMDMsMTQuOTYgMTUuODgsMTQuNzUgMTUuODgsMTQuNzVDMTUuODcsMTQuNjUgMTUuODIsOC45IDE1Ljg5LDguOUMxNi4zMSw4LjEzIDE3LjYzLDYuNTYgMTcuNjMsNi41NkMxNS4xNiw3LjA1IDEzLjgxLDguNjYgMTMuODEsOC42NkMxMy40MSw4LjM1IDEyLjU5LDguNCAxMi41OSw4LjRDMTIuOTcsOC42MSAxMy4zNSw5LjIxIDEzLjM1LDkuNzJWMTQuNjVDMTMuMzUsMTQuNjUgMTIuNSwxNS4zOCAxMS44OCwxNS4zOEMxMS41LDE1LjM4IDExLjI3LDE1LjE3IDExLjE0LDE1QzExLjA1LDE0Ljg4IDExLDE0Ljc5IDExLDE0Ljc5VjguNjlDMTAuOTMsOC43NSAxMC44Miw4LjggMTAuNzEsOC44QzEwLjU3LDguNzkgMTAuNDMsOC43MyAxMC4zNCw4LjUzQzEwLjI2LDguMzggMTAuMjIsOC4xNSAxMC4yMiw3LjgzQzEwLjIyLDYuNyAxMS41LDUuOTYgMTEuNSw1Ljk2QzkuODcsNi4zOSA4LjM2LDcuMjIgNi4zNSw5LjVcIjtcclxuZXhwb3J0IHZhciBtZGlVbnRhcHBkID0gXCJNMTQuNDEsNEMxNC40MSw0IDE0Ljk0LDQuMzkgMTQuOTcsNC43MUMxNC45Nyw0LjgxIDE0LjczLDQuODUgMTQuNjgsNC45M0MxNC42Miw1IDE0LjcsNS4xNSAxNC42NSw1LjIxQzE0LjU5LDUuMjYgMTQuNSw1LjI2IDE0LjQxLDUuNDFDMTQuMzMsNS41NiAxMi4wNywxMC4wOSAxMS43MywxMC42M0MxMS41OSwxMS4wMyAxMS40NywxMi40NiAxMS4zNywxMi42NkMxMS4yNiwxMi44NSA2LjM0LDE5Ljg0IDYuMTYsMjAuMDVDNS42NywyMC42MyA0LjMxLDIwLjMgMy4yOCwxOS41NkMyLjMsMTguODYgMS43NCwxNy43IDIuMTEsMTcuMTZDMi4yNywxNi45MyA3LjE1LDkuOTIgNy4yOSw5Ljc1QzcuNDQsOS41OCA4Ljc1LDkgOS4wNyw4LjcxQzkuNDcsOC4yMiAxMi45Niw0LjU0IDEzLjA3LDQuNDJDMTMuMTgsNC4zIDEzLjE1LDQuMiAxMy4xOCw0LjEzQzEzLjIyLDQuMDYgMTMuMzgsNC4wOCAxMy40Myw0QzEzLjUsMy45MyAxMy4zOSwzLjcxIDEzLjUsMy42OEMxMy41OSwzLjY0IDEzLjk2LDMuNjcgMTQuNDEsNE0xMC44NSw0LjQ0TDExLjc0LDUuMzdMMTAuMjYsNi45NEw5LjQ2LDUuMzdDOS4zOCw1LjIyIDkuMjgsNS4yMiA5LjIyLDUuMTdDOS4xNyw1LjExIDkuMjQsNC45NyA5LjE5LDQuODlDOS4xMyw0LjgxIDguOSw0LjgzIDguOSw0LjczQzguOSw0LjYyIDkuMDUsNC4yOCA5LjUsMy45NkM5LjUsMy45NiAxMC4wNiwzLjYgMTAuMzcsMy42OEMxMC40NywzLjcxIDEwLjQzLDMuOTUgMTAuNSw0QzEwLjU0LDQuMSAxMC43LDQuMDggMTAuNzMsNC4xNUMxMC43Nyw0LjIxIDEwLjczLDQuMzIgMTAuODUsNC40NE0yMS45MiwxNy4xNUMyMi4yOSwxNy44MSAyMS41MywxOSAyMC41LDE5LjdDMTkuNSwyMC4zOSAxOC4yMSwyMC41NCAxNy44MywyMEMxNy42NiwxOS43OCAxMi42NywxMi44MiAxMi41NiwxMi42MkMxMi40NSwxMi40MyAxMi4zMiwxMSAxMi4xOCwxMC41OUwxMi4xNSwxMC41NUMxMi40NSwxMCAxMy4wNyw4Ljc3IDEzLjczLDcuNDdDMTQuMyw4LjA2IDE0Ljc1LDguNTYgMTQuODgsOC43MkMxNS4yMSw5IDE2LjUzLDkuNTggMTYuNjgsOS43NUMxNi44Miw5LjkyIDIxLjc4LDE2LjkxIDIxLjkyLDE3LjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVwZGF0ZSA9IFwiTTIxLDEwLjEySDE0LjIyTDE2Ljk2LDcuM0MxNC4yMyw0LjYgOS44MSw0LjUgNy4wOCw3LjJDNC4zNSw5LjkxIDQuMzUsMTQuMjggNy4wOCwxN0M5LjgxLDE5LjcgMTQuMjMsMTkuNyAxNi45NiwxN0MxOC4zMiwxNS42NSAxOSwxNC4wOCAxOSwxMi4xSDIxQzIxLDE0LjA4IDIwLjEyLDE2LjY1IDE4LjM2LDE4LjM5QzE0Ljg1LDIxLjg3IDkuMTUsMjEuODcgNS42NCwxOC4zOUMyLjE0LDE0LjkyIDIuMTEsOS4yOCA1LjYyLDUuODFDOS4xMywyLjM0IDE0Ljc2LDIuMzQgMTguMjcsNS44MUwyMSwzVjEwLjEyTTEyLjUsOFYxMi4yNUwxNiwxNC4zM0wxNS4yOCwxNS41NEwxMSwxM1Y4SDEyLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkID0gXCJNOSwxNlYxMEg1TDEyLDNMMTksMTBIMTVWMTZIOU01LDIwVjE4SDE5VjIwSDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkTG9jayA9IFwiTTIyIDIySDE3QzE2LjUgMjIgMTYgMjEuNSAxNiAyMVYxN0MxNiAxNi41IDE2LjUgMTYgMTcgMTZWMTQuNUMxNyAxMy4xIDE4LjEgMTIgMTkuNSAxMkMyMC45IDEyIDIyIDEzLjEgMjIgMTQuNVYxNkMyMi41IDE2IDIzIDE2LjUgMjMgMTdWMjFDMjMgMjEuNSAyMi41IDIyIDIyIDIyTTE0IDIwSDVWMThIMTRWMjBNMjEgMTZWMTQuNUMyMSAxMy43IDIwLjMgMTMgMTkuNSAxM0MxOC43IDEzIDE4IDEzLjcgMTggMTQuNVYxNkgyMU0xNSAxNkg5VjEwSDVMMTIgM0wxOSAxMEgxNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWRMb2NrT3V0bGluZSA9IFwiTTIyIDIySDE3QzE2LjUgMjIgMTYgMjEuNSAxNiAyMVYxN0MxNiAxNi41IDE2LjUgMTYgMTcgMTZWMTQuNUMxNyAxMy4xIDE4LjEgMTIgMTkuNSAxMkMyMC45IDEyIDIyIDEzLjEgMjIgMTQuNVYxNkMyMi41IDE2IDIzIDE2LjUgMjMgMTdWMjFDMjMgMjEuNSAyMi41IDIyIDIyIDIyTTUgMThIMTRWMjBINVYxOE0yMSAxNlYxNC41QzIxIDEzLjcgMjAuMyAxMyAxOS41IDEzQzE4LjcgMTMgMTggMTMuNyAxOCAxNC41VjE2SDIxTTkgMTZWMTBINUwxMiAzTDE5IDEwSDE1VjE2SDlNOS44MyA4SDExVjE0SDEzVjhIMTQuMTdMMTIgNS44M0w5LjgzIDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkTXVsdGlwbGUgPSBcIk05LDE0VjhINUwxMiwxTDE5LDhIMTVWMTRIOU01LDE4VjE2SDE5VjE4SDVNMTksMjBINVYyMkgxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWROZXR3b3JrID0gXCJNMTcsM0EyLDIgMCAwLDEgMTksNVYxNUEyLDIgMCAwLDEgMTcsMTdIMTNWMTlIMTRBMSwxIDAgMCwxIDE1LDIwSDIyVjIySDE1QTEsMSAwIDAsMSAxNCwyM0gxMEExLDEgMCAwLDEgOSwyMkgyVjIwSDlBMSwxIDAgMCwxIDEwLDE5SDExVjE3SDdDNS44OSwxNyA1LDE2LjEgNSwxNVY1QTIsMiAwIDAsMSA3LDNIMTdNMTIsNS41TDcuNSwxMEgxMVYxNEgxM1YxMEgxNi41TDEyLDUuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWROZXR3b3JrT3V0bGluZSA9IFwiTTE1LDIwQTEsMSAwIDAsMCAxNCwxOUgxM1YxN0gxN0EyLDIgMCAwLDAgMTksMTVWNUEyLDIgMCAwLDAgMTcsM0g3QTIsMiAwIDAsMCA1LDVWMTVBMiwyIDAgMCwwIDcsMTdIMTFWMTlIMTBBMSwxIDAgMCwwIDksMjBIMlYyMkg5QTEsMSAwIDAsMCAxMCwyM0gxNEExLDEgMCAwLDAgMTUsMjJIMjJWMjBIMTVNNywxNVY1SDE3VjE1SDdNMTIsNkw4LDEwSDExVjE0SDEzVjEwSDE2TDEyLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkT2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w2LjU2IDguNDVMNSAxMEg4LjExTDkgMTAuODlWMTZIMTQuMTFMMTYuMTEgMThINVYyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xNSAxMEgxOUwxMiAzTDkuMSA1LjlMMTUgMTEuOFYxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlVcGxvYWRPZmZPdXRsaW5lID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w2LjU2IDguNDVMNSAxMEg4LjExTDkgMTAuODlWMTZIMTQuMTFMMTYuMTEgMThINVYyMEgxOC4xMUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMSAxNFYxMi44OUwxMi4xMSAxNEgxMU0xMiA1LjhMMTQuMiA4SDEzVjkuOEwxNSAxMS44VjEwSDE5TDEyIDNMOS4xIDUuOUwxMC41IDcuM0wxMiA1LjhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXBsb2FkT3V0bGluZSA9IFwiTTksMTBWMTZIMTVWMTBIMTlMMTIsM0w1LDEwSDlNMTIsNS44TDE0LjIsOEgxM1YxNEgxMVY4SDkuOEwxMiw1LjhNMTksMThINVYyMEgxOVYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlVc2IgPSBcIk0xNSw3VjExSDE2VjEzSDEzVjVIMTVMMTIsMUw5LDVIMTFWMTNIOFYxMC45M0M4LjcsMTAuNTYgOS4yLDkuODUgOS4yLDlDOS4yLDcuNzggOC4yMSw2LjggNyw2LjhDNS43OCw2LjggNC44LDcuNzggNC44LDlDNC44LDkuODUgNS4zLDEwLjU2IDYsMTAuOTNWMTNBMiwyIDAgMCwwIDgsMTVIMTFWMTguMDVDMTAuMjksMTguNDEgOS44LDE5LjE1IDkuOCwyMEEyLjIsMi4yIDAgMCwwIDEyLDIyLjJBMi4yLDIuMiAwIDAsMCAxNC4yLDIwQzE0LjIsMTkuMTUgMTMuNzEsMTguNDEgMTMsMTguMDVWMTVIMTZBMiwyIDAgMCwwIDE4LDEzVjExSDE5VjdIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVXNiRmxhc2hEcml2ZSA9IFwiTTggMTVDOC41NSAxNSA5IDE1LjQ1IDkgMTZDOSAxNi41NSA4LjU1IDE3IDggMTdDNy40NSAxNyA3IDE2LjU1IDcgMTZDNyAxNS40NSA3LjQ1IDE1IDggMTVNMTUuMDcgNC42OUwxNi41IDYuMUwxNS4wNyA3LjVMMTMuNjYgNi4xTDE1LjA3IDQuNjlNMTcuOSA3LjVMMTkuMzEgOC45M0wxNy45IDEwLjM0TDE2LjUgOC45M0wxNy45IDcuNU04IDEzQzYuMzQgMTMgNSAxNC4zNCA1IDE2QzUgMTcuNjYgNi4zNCAxOSA4IDE5QzkuNjYgMTkgMTEgMTcuNjYgMTEgMTZDMTEgMTQuMzQgOS42NiAxMyA4IDEzTTkuNzcgNC4zM0wxMC41IDUuMDhMMTQuMjkgMS4yOUMxNC40NyAxLjExIDE0LjcyIDEgMTUgMUMxNS4yOCAxIDE1LjUzIDEuMTEgMTUuNzEgMS4yOUwyMi43OCA4LjM2TDIyLjc4IDguMzdDMjIuOTIgOC41NCAyMyA4Ljc2IDIzIDlDMjMgOS4zIDIyLjg3IDkuNTcgMjIuNjYgOS43NkwyMi42NiA5Ljc2TDE4LjkzIDEzLjVMMTkuNjcgMTQuMjNMMTIuOTUgMjAuOTVDMTEuNjggMjIuMjIgOS45MyAyMyA4IDIzQzQuMTMgMjMgMSAxOS44NyAxIDE2QzEgMTQuMDcgMS43OCAxMi4zMiAzLjA1IDExLjA1TDkuNzcgNC4zM00yMC41OSA5TDE1IDMuNDFMMTEuOTMgNi41TDE3LjUgMTIuMDhMMjAuNTkgOVpcIjtcclxuZXhwb3J0IHZhciBtZGlVc2JGbGFzaERyaXZlT3V0bGluZSA9IFwiTTggMTNDOS42NiAxMyAxMSAxNC4zNCAxMSAxNkMxMSAxNy42NiA5LjY2IDE5IDggMTlDNi4zNCAxOSA1IDE3LjY2IDUgMTZDNSAxNC4zNCA2LjM0IDEzIDggMTNNOCAxNUM3LjQ1IDE1IDcgMTUuNDUgNyAxNkM3IDE2LjU1IDcuNDUgMTcgOCAxN0M4LjU1IDE3IDkgMTYuNTUgOSAxNkM5IDE1LjQ1IDguNTUgMTUgOCAxNU05Ljc3IDQuMzNMMTAuNSA1LjA4TDE0LjI5IDEuMjlDMTQuNDcgMS4xMSAxNC43MiAxIDE1IDFDMTUuMjggMSAxNS41MyAxLjExIDE1LjcxIDEuMjlMMjIuNzggOC4zNkwyMi43OCA4LjM3QzIyLjkyIDguNTQgMjMgOC43NiAyMyA5QzIzIDkuMyAyMi44NyA5LjU3IDIyLjY2IDkuNzZMMjIuNjYgOS43NkwxOC45MyAxMy41TDE5LjY3IDE0LjIzTDEyLjk1IDIwLjk1QzExLjY4IDIyLjIyIDkuOTMgMjMgOCAyM0M0LjEzIDIzIDEgMTkuODcgMSAxNkMxIDE0LjA3IDEuNzggMTIuMzIgMy4wNSAxMS4wNUw5Ljc3IDQuMzNNMTEuNTQgMTkuNTRMMTYuODQgMTQuMjNMOS43NyA3LjE2TDQuNDYgMTIuNDZDMy41NiAxMy4zNyAzIDE0LjYyIDMgMTZDMyAxOC43NiA1LjI0IDIxIDggMjFDOS4zOCAyMSAxMC42MyAyMC40NCAxMS41NCAxOS41NE0xNS4wNyA0LjY5TDE2LjUgNi4xTDE1LjA3IDcuNUwxMy42NiA2LjFMMTUuMDcgNC42OU0xNy45IDcuNUwxOS4zMSA4LjkzTDE3LjkgMTAuMzRMMTYuNSA4LjkzTDE3LjkgNy41TTIwLjU5IDlMMTUgMy40MUwxMS45MyA2LjVMMTcuNSAxMi4wOEwyMC41OSA5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVVzYlBvcnQgPSBcIk04IDJDNi45IDIgNiAyLjkgNiA0VjEySDVWMTZMOSAyMFYyMkgxNVYyMEwxOSAxNlYxMkgxOFY0QzE4IDIuOSAxNy4xMSAyIDE2IDJNOCA0SDE2VjEySDhNOSA3VjlIMTFWN00xMyA3VjlIMTVWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWYWx2ZSA9IFwiTTQgMjJIMlYySDRNMjIgMkgyMFYyMkgyMk0xNy4yNCA1LjM0TDEzLjI0IDkuMzRBMyAzIDAgMCAwIDkuMjQgMTMuMzRMNS4yNCAxNy4zNEw2LjY2IDE4Ljc2TDEwLjY2IDE0Ljc2QTMgMyAwIDAgMCAxNC42NiAxMC43NkwxOC42NiA2Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZhbHZlQ2xvc2VkID0gXCJNMjIgMlYyMkgyMFYxM0gxNC44MkEzIDMgMCAwIDEgOS4xOCAxM0g0VjIySDJWMkg0VjExSDkuMThBMyAzIDAgMCAxIDE0LjgyIDExSDIwVjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmFsdmVPcGVuID0gXCJNNCAyMkgyVjJINE0yMiAySDIwVjIySDIyTTExIDRWOS4xOEEzIDMgMCAwIDAgMTEgMTQuODJWMjBIMTNWMTQuODJBMyAzIDAgMCAwIDEzIDkuMThWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlWYW5QYXNzZW5nZXIgPSBcIk0zLDdDMS44OSw3IDEsNy44OSAxLDlWMTdIM0EzLDMgMCAwLDAgNiwyMEEzLDMgMCAwLDAgOSwxN0gxNUEzLDMgMCAwLDAgMTgsMjBBMywzIDAgMCwwIDIxLDE3SDIzVjEzQzIzLDExLjg5IDIyLjExLDExIDIxLDExTDE4LDdIM00zLDguNUg3VjExSDNWOC41TTksOC41SDEzVjExSDlWOC41TTE1LDguNUgxNy41TDE5LjQ2LDExSDE1VjguNU02LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE4LjVBMS41LDEuNSAwIDAsMSA0LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE1LjVNMTgsMTUuNUExLjUsMS41IDAgMCwxIDE5LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxOC41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmFuVXRpbGl0eSA9IFwiTTMsN0MxLjg5LDcgMSw3Ljg5IDEsOVYxN0gzQTMsMyAwIDAsMCA2LDIwQTMsMyAwIDAsMCA5LDE3SDE1QTMsMyAwIDAsMCAxOCwyMEEzLDMgMCAwLDAgMjEsMTdIMjNWMTNDMjMsMTEuODkgMjIuMTEsMTEgMjEsMTFMMTgsN0gzTTE1LDguNUgxNy41TDE5LjQ2LDExSDE1VjguNU02LDE1LjVBMS41LDEuNSAwIDAsMSA3LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE4LjVBMS41LDEuNSAwIDAsMSA0LjUsMTdBMS41LDEuNSAwIDAsMSA2LDE1LjVNMTgsMTUuNUExLjUsMS41IDAgMCwxIDE5LjUsMTdBMS41LDEuNSAwIDAsMSAxOCwxOC41QTEuNSwxLjUgMCAwLDEgMTYuNSwxN0ExLjUsMS41IDAgMCwxIDE4LDE1LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmFuaXNoID0gXCJNMTYsMTNWMTFIMjFWMTNIMTZNMTQuODMsNy43NkwxNy42Niw0LjkzTDE5LjA3LDYuMzRMMTYuMjQsOS4xN0wxNC44Myw3Ljc2TTExLDE2SDEzVjIxSDExVjE2TTExLDNIMTNWOEgxMVYzTTQuOTMsMTcuNjZMNy43NiwxNC44M0w5LjE3LDE2LjI0TDYuMzQsMTkuMDdMNC45MywxNy42Nk00LjkzLDYuMzRMNi4zNCw0LjkzTDkuMTcsNy43Nkw3Ljc2LDkuMTdMNC45Myw2LjM0TTgsMTNIM1YxMUg4VjEzTTE5LjA3LDE3LjY2TDE3LjY2LDE5LjA3TDE0LjgzLDE2LjI0TDE2LjI0LDE0LjgzTDE5LjA3LDE3LjY2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZhbmlzaFF1YXJ0ZXIgPSBcIk0xMSAzSDEzVjhIMTFWM000LjkgNi4zTDYuMyA0LjlMOS4xIDcuN0w3LjggOS4yTDQuOSA2LjNNOCAxM0gzVjExSDhWMTNcIjtcclxuZXhwb3J0IHZhciBtZGlWYW5pdHlMaWdodCA9IFwiTTIyIDIwSDE2QzE2IDE4LjM0IDE3LjM0IDEzIDE5IDEzUzIyIDE4LjM0IDIyIDIwTTEyIDEzQzEwLjM0IDEzIDkgMTguMzQgOSAyMEgxNUMxNSAxOC4zNCAxMy42NiAxMyAxMiAxM001IDEzQzMuMzQgMTMgMiAxOC4zNCAyIDIwSDhDOCAxOC4zNCA2LjY2IDEzIDUgMTNNMTQuODIgNkMxNC4yNiA0LjQ0IDEyLjUzIDMuNjQgMTEgNC4yQzEwLjE0IDQuNSA5LjUgNS4xNyA5LjE4IDZIMlY4SDRWMTJINlY4SDkuMThDOS41IDguODUgMTAuMTUgOS41IDExIDkuODJWMTJIMTNWOS44MkMxMy44NSA5LjUgMTQuNSA4Ljg1IDE0LjgyIDhIMThWMTJIMjBWOEgyMlY2SDE0LjgyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZhcmlhYmxlID0gXCJNMjAuNDEsM0MyMS44LDUuNzEgMjIuMzUsOC44NCAyMiwxMkMyMS44LDE1LjE2IDIwLjcsMTguMjkgMTguODMsMjFMMTcuMywyMEMxOC45MSwxNy41NyAxOS44NSwxNC44IDIwLDEyQzIwLjM0LDkuMiAxOS44OSw2LjQzIDE4LjcsNEwyMC40MSwzTTUuMTcsM0w2LjcsNEM1LjA5LDYuNDMgNC4xNSw5LjIgNCwxMkMzLjY2LDE0LjggNC4xMiwxNy41NyA1LjMsMjBMMy42MSwyMUMyLjIxLDE4LjI5IDEuNjUsMTUuMTcgMiwxMkMyLjIsOC44NCAzLjMsNS43MSA1LjE3LDNNMTIuMDgsMTAuNjhMMTQuNCw3LjQ1SDE2LjkzTDEzLjE1LDEyLjQ1TDE1LjM1LDE3LjM3SDEzLjA5TDExLjcxLDE0TDkuMjgsMTcuMzNINi43NkwxMC42NiwxMi4yMUw4LjUzLDcuNDVIMTAuOEwxMi4wOCwxMC42OFpcIjtcclxuZXhwb3J0IHZhciBtZGlWYXJpYWJsZUJveCA9IFwiTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM003LjQgMThDNS45IDE2LjUgNSAxNC4zIDUgMTJTNS45IDcuNSA3LjQgNkw5IDYuN0M3LjcgNy45IDcgOS45IDcgMTJTNy43IDE2LjEgOSAxNy4zTDcuNCAxOE0xMi43IDE1TDExLjkgMTNMMTAuNSAxNUg5TDExLjMgMTEuOUwxMCA5SDExLjNMMTIuMSAxMUwxMy41IDlIMTVMMTIuOCAxMkwxNC4xIDE1SDEyLjdNMTYuNiAxOEwxNSAxNy4zQzE2LjMgMTYgMTcgMTQuMSAxNyAxMlMxNi4zIDcuOSAxNSA2LjdMMTYuNiA2QzE4LjEgNy41IDE5IDkuNyAxOSAxMlMxOC4xIDE2LjUgMTYuNiAxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JBcnJhbmdlQWJvdmUgPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWMTRDMSwxNS4xMSAxLjg5LDE2IDMsMTZDNi42NywxNiAxMC4zMywxNiAxNCwxNkMxNS4xMSwxNiAxNiwxNS4xMSAxNiwxNEMxNiwxMC4zMyAxNiw2LjY3IDE2LDNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM00zLDNIMTRWMTRIM1YzTTE4LDdWOUgyMFYyMEg5VjE4SDdWMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0gxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JBcnJhbmdlQmVsb3cgPSBcIk0yMCwyMkMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY5QzIyLDcuODkgMjEuMTEsNyAyMCw3QzE2LjMzLDcgMTIuNjcsNyA5LDdDNy44OSw3IDcsNy44OSA3LDlDNywxMi42NyA3LDE2LjMzIDcsMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBNMjAsMjBIOVY5SDIwVjIwTTUsMTZWMTRIM1YzSDE0VjVIMTZWM0MxNiwxLjg5IDE1LjExLDEgMTQsMUgzQzEuODksMSAxLDEuODkgMSwzVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQmV6aWVyID0gXCJNNy41LDRBMS41LDEuNSAwIDAsMCA2LDUuNUExLjUsMS41IDAgMCwwIDcuNSw3QzguMTMsNyA4LjcsNi42IDguOTEsNkgxM0MxMy42Nyw1LjMzIDE0LjMzLDUgMTUsNUg4LjkxQzguNyw0LjQgOC4xMyw0IDcuNSw0TTE5LDVDOCw1IDE0LDE3IDUsMTdWMTlDMTYsMTkgMTAsNyAxOSw3VjVNMTYuNSwxN0MxNS44NywxNyAxNS4zLDE3LjQgMTUuMDksMThIMTFDMTAuMzMsMTguNjcgOS42NywxOSA5LDE5SDE1LjA5QzE1LjMsMTkuNiAxNS44NywyMCAxNi41LDIwQTEuNSwxLjUgMCAwLDAgMTgsMTguNUExLjUsMS41IDAgMCwwIDE2LjUsMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQ2lyY2xlID0gXCJNOSwyVjQuMDZDNi43Miw0LjkyIDQuOTIsNi43MiA0LjA1LDlIMlYxNUg0LjA2QzQuOTIsMTcuMjggNi43MiwxOS4wOSA5LDE5Ljk1VjIySDE1VjE5Ljk0QzE3LjI4LDE5LjA4IDE5LjA5LDE3LjI4IDE5Ljk1LDE1SDIyVjlIMTkuOTRDMTkuMDgsNi43MiAxNy4yOCw0LjkyIDE1LDQuMDVWMk0xMSw0SDEzVjZIMTFNOSw2LjI1VjhIMTVWNi4yNUMxNi4xOCw2Ljg2IDE3LjE0LDcuODIgMTcuNzUsOUgxNlYxNUgxNy43NUMxNy4xNCwxNi4xOCAxNi4xOCwxNy4xNCAxNSwxNy43NVYxNkg5VjE3Ljc1QzcuODIsMTcuMTQgNi44NiwxNi4xOCA2LjI1LDE1SDhWOUg2LjI1QzYuODYsNy44MiA3LjgyLDYuODYgOSw2LjI1TTQsMTFINlYxM0g0TTE4LDExSDIwVjEzSDE4TTExLDE4SDEzVjIwSDExXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQ2lyY2xlVmFyaWFudCA9IFwiTTIyLDlIMTkuOTdDMTguNyw1LjQxIDE1LjMxLDMgMTEuNSwzQTksOSAwIDAsMCAyLjUsMTJDMi41LDE3IDYuNTMsMjEgMTEuNSwyMUMxNS4zMSwyMSAxOC43LDE4LjYgMjAsMTVIMjJNMjAsMTFWMTNIMThWMTFNMTcuODIsMTVDMTYuNjYsMTcuNDQgMTQuMiwxOSAxMS41LDE5QzcuNjQsMTkgNC41LDE1Ljg3IDQuNSwxMkM0LjUsOC4xNCA3LjY0LDUgMTEuNSw1QzE0LjIsNSAxNi42Niw2LjU3IDE3LjgxLDlIMTZWMTVcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JDb21iaW5lID0gXCJNMywxQzEuODksMSAxLDEuODkgMSwzVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2QzQuMzMsMTYgNywxNiA3LDE2QzcsMTYgNywxOC42NyA3LDIwQzcsMjEuMTEgNy44OSwyMiA5LDIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjlDMjIsNy44OSAyMS4xMSw3IDIwLDdDMTguNjcsNyAxNiw3IDE2LDdDMTYsNyAxNiw0LjMzIDE2LDNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM00zLDNIMTRDMTQsNC4zMyAxNCw3IDE0LDdIOUM3Ljg5LDcgNyw3Ljg5IDcsOVYxNEM3LDE0IDQuMzMsMTQgMywxNFYzTTksOUgxNFYxNEg5VjlNMTYsOUMxNiw5IDE4LjY3LDkgMjAsOVYyMEg5QzksMTguNjcgOSwxNiA5LDE2SDE0QzE1LjExLDE2IDE2LDE1LjExIDE2LDE0VjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yQ3VydmUgPSBcIk0xOC41LDJBMS41LDEuNSAwIDAsMSAyMCwzLjVBMS41LDEuNSAwIDAsMSAxOC41LDVDMTguMjcsNSAxOC4wNSw0Ljk1IDE3Ljg1LDQuODVMMTQuMTYsOC41NUwxNC41LDlDMTYuNjksNy43NCAxOS4yNiw3IDIyLDdMMjMsNy4wM1Y5LjA0TDIyLDlDMTkuNDIsOSAxNyw5Ljc1IDE1LDExLjA0QTMuOTYsMy45NiAwIDAsMSAxMS4wNCwxNUM5Ljc1LDE3IDksMTkuNDIgOSwyMkw5LjA0LDIzSDcuMDNMNywyMkM3LDE5LjI2IDcuNzQsMTYuNjkgOSwxNC41TDguNTUsMTQuMTZMNC44NSwxNy44NUM0Ljk1LDE4LjA1IDUsMTguMjcgNSwxOC41QTEuNSwxLjUgMCAwLDEgMy41LDIwQTEuNSwxLjUgMCAwLDEgMiwxOC41QTEuNSwxLjUgMCAwLDEgMy41LDE3QzMuNzMsMTcgMy45NSwxNy4wNSA0LjE1LDE3LjE1TDcuODQsMTMuNDVDNy4zMSwxMi43OCA3LDExLjkyIDcsMTFBNCw0IDAgMCwxIDExLDdDMTEuOTIsNyAxMi43OCw3LjMxIDEzLjQ1LDcuODRMMTcuMTUsNC4xNUMxNy4wNSwzLjk1IDE3LDMuNzMgMTcsMy41QTEuNSwxLjUgMCAwLDEgMTguNSwyTTExLDlBMiwyIDAgMCwwIDksMTFBMiwyIDAgMCwwIDExLDEzQTIsMiAwIDAsMCAxMywxMUEyLDIgMCAwLDAgMTEsOVpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JEaWZmZXJlbmNlID0gXCJNMywxQzEuODksMSAxLDEuODkgMSwzVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2SDVWMTRIM1YzSDE0VjVIMTZWM0MxNiwxLjg5IDE1LjExLDEgMTQsMUgzTTksN0M3Ljg5LDcgNyw3Ljg5IDcsOVYxMUg5VjlIMTFWN0g5TTEzLDdWOUgxNFYxMEgxNlY3SDEzTTE4LDdWOUgyMFYyMEg5VjE4SDdWMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0gxOE0xNCwxMlYxNEgxMlYxNkgxNEMxNS4xMSwxNiAxNiwxNS4xMSAxNiwxNFYxMkgxNE03LDEzVjE2SDEwVjE0SDlWMTNIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JEaWZmZXJlbmNlQWIgPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWNUgzVjNINVYxSDNNNywxVjNIMTBWMUg3TTEyLDFWM0gxNFY1SDE2VjNDMTYsMS44OSAxNS4xMSwxIDE0LDFIMTJNMSw3VjEwSDNWN0gxTTE0LDdDMTQsNyAxNCwxMS42NyAxNCwxNEMxMS42NywxNCA3LDE0IDcsMTRDNywxNCA3LDE4IDcsMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMjBDMjEuMTEsMjIgMjIsMjEuMTEgMjIsMjBWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0MxOCw3IDE0LDcgMTQsN00xNiw5SDIwVjIwSDlWMTZIMTRDMTUuMTEsMTYgMTYsMTUuMTEgMTYsMTRWOU0xLDEyVjE0QzEsMTUuMTEgMS44OSwxNiAzLDE2SDVWMTRIM1YxMkgxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckRpZmZlcmVuY2VCYSA9IFwiTTIwLDIyQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjE4SDIwVjIwSDE4VjIySDIwTTE2LDIyVjIwSDEzVjIySDE2TTExLDIyVjIwSDlWMThIN1YyMEM3LDIxLjExIDcuODksMjIgOSwyMkgxMU0yMiwxNlYxM0gyMFYxNkgyMk05LDE2QzksMTYgOSwxMS4zMyA5LDlDMTEuMzMsOSAxNiw5IDE2LDlDMTYsOSAxNiw1IDE2LDNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM0MxLjg5LDEgMSwxLjg5IDEsM1YxNEMxLDE1LjExIDEuODksMTYgMywxNkM1LDE2IDksMTYgOSwxNk03LDE0SDNWM0gxNFY3SDlDNy44OSw3IDcsNy44OSA3LDlWMTRNMjIsMTFWOUMyMiw3Ljg5IDIxLjExLDcgMjAsN0gxOFY5SDIwVjExSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckVsbGlwc2UgPSBcIk0yMyw5VjE1SDIwLjM1QzE5LjM4LDE3LjEyIDE3LjQzLDE4Ljc4IDE1LDE5LjU0VjIySDlWMTkuNTRDNS41LDE4LjQ1IDMsMTUuNSAzLDEyQzMsNy41OCA3LjAzLDQgMTIsNEMxNS43OCw0IDE5LDYuMDcgMjAuMzUsOUgyM00xNywxNVY5SDE4LjA2QzE2Ljg1LDcuMjEgMTQuNTksNiAxMiw2QzguMTMsNiA1LDguNjkgNSwxMkM1LDE0LjM5IDYuNjQsMTYuNDYgOSwxNy40MlYxNkgxNVYxNy40MkMxNi4yOSwxNi45IDE3LjM1LDE2LjA1IDE4LjA2LDE1SDE3TTE5LDEzSDIxVjExSDE5VjEzTTExLDIwSDEzVjE4SDExVjIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckludGVyc2VjdGlvbiA9IFwiTTMuMTQsMUEyLjE0LDIuMTQgMCAwLDAgMSwzLjE0VjVIM1YzSDVWMUgzLjE0TTcsMVYzSDEwVjFIN00xMiwxVjNIMTRWNUgxNlYzLjE0QzE2LDEuOTYgMTUuMDQsMSAxMy44NiwxSDEyTTEsN1YxMEgzVjdIMU05LDdDNy44OSw3IDcsNy44OSA3LDlDNywxMS4zMyA3LDE2IDcsMTZDNywxNiAxMS41NywxNiAxMy44NiwxNkEyLjE0LDIuMTQgMCAwLDAgMTYsMTMuODZDMTYsMTEuNTcgMTYsNyAxNiw3QzE2LDcgMTEuMzMsNyA5LDdNMTgsN1Y5SDIwVjExSDIyVjlDMjIsNy44OSAyMS4xMSw3IDIwLDdIMThNOSw5SDE0VjE0SDlWOU0xLDEyVjEzLjg2QzEsMTUuMDQgMS45NiwxNiAzLjE0LDE2SDVWMTRIM1YxMkgxTTIwLDEzVjE2SDIyVjEzSDIwTTcsMThWMjBDNywyMS4xMSA3Ljg5LDIyIDksMjJIMTFWMjBIOVYxOEg3TTIwLDE4VjIwSDE4VjIySDIwQzIxLjExLDIyIDIyLDIxLjExIDIyLDIwVjE4SDIwTTEzLDIwVjIySDE2VjIwSDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckxpbmUgPSBcIk0xNSwzVjcuNTlMNy41OSwxNUgzVjIxSDlWMTYuNDJMMTYuNDIsOUgyMVYzTTE3LDVIMTlWN0gxN001LDE3SDdWMTlINVwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvckxpbmsgPSBcIk0zIDFDMS44OSAxIDEgMS44OSAxIDNWMTRDMSAxNS4xMSAxLjg5IDE2IDMgMTZIMTRDMTUuMTEgMTYgMTYgMTUuMTEgMTYgMTRWMTFIMTRWMTRIM1YzSDE0VjVIMTZWM0MxNiAxLjg5IDE1LjExIDEgMTQgMU05IDdDNy44OSA3IDcgNy44OSA3IDlWMTJIOVY5SDIwVjIwSDlWMThIN1YyMEM3IDIxLjExIDcuODkgMjIgOSAyMkgyMEMyMS4xMSAyMiAyMiAyMS4xMSAyMiAyMFY5QzIyIDcuODkgMjEuMTEgNyAyMCA3SDlcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JQb2ludCA9IFwiTTEyLDIwTDcsMjJMMTIsMTFMMTcsMjJMMTIsMjBNOCwySDE2VjVIMjJWN0gxNlYxMEg4VjdIMlY1SDhWMk0xMCw0VjhIMTRWNEgxMFpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JQb2x5Z29uID0gXCJNMiwyVjhINC4yOEw1LjU3LDE2SDRWMjJIMTBWMjAuMDZMMTUsMjAuMDVWMjJIMjFWMTZIMTkuMTdMMjAsOUgyMlYzSDE2VjYuNTNMMTQuOCw4SDkuNTlMOCw1LjgyVjJNNCw0SDZWNkg0TTE4LDVIMjBWN0gxOE02LjMxLDhINy4xMUw5LDEwLjU5VjE0SDE1VjEwLjkxTDE2LjU3LDlIMThMMTcuMTYsMTZIMTVWMTguMDZIMTBWMTZINy42TTExLDEwSDEzVjEySDExTTYsMThIOFYyMEg2TTE3LDE4SDE5VjIwSDE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUG9seWxpbmUgPSBcIk0yIDNWOUg0Ljk1TDYuOTUgMTVINlYyMUgxMlYxNi40MUwxNy40MSAxMUgyMlY1SDE2VjkuNTdMMTAuNTkgMTVIOS4wNkw3LjA2IDlIOFYzTTQgNUg2VjdINE0xOCA3SDIwVjlIMThNOCAxN0gxMFYxOUg4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvclBvbHlsaW5lRWRpdCA9IFwiTTIgM1Y5SDQuOTVMNi45NSAxNUg2VjIxSDEyVjE2LjQxTDE3LjQxIDExSDIyVjVIMTZWOS41N0wxMC41OSAxNUg5LjA2TDcuMDYgOUg4VjNIMk00IDVINlY3SDRWNU0xOCA3SDIwVjlIMThWN00yMS4xNSAxM0MyMSAxMyAyMC44NyAxMy4wNSAyMC43NiAxMy4xNkwxOS43NSAxNC4xOEwyMS44MiAxNi4yNUwyMi44NCAxNS4yNEMyMy4wNSAxNS4wMyAyMy4wNSAxNC42NyAyMi44NCAxNC40NkwyMS41NCAxMy4xNkMyMS40MyAxMy4wNSAyMS4yOSAxMyAyMS4xNSAxM00xOS4xNSAxNC43NkwxMyAyMC45MVYyM0gxNS4wOUwyMS4yMyAxNi44NEwxOS4xNSAxNC43Nk04IDE3SDEwVjE5SDhWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUG9seWxpbmVNaW51cyA9IFwiTTIgM1Y5SDQuOTVMNi45NSAxNUg2VjIxSDEyVjE2LjQxTDE3LjQxIDExSDIyVjVIMTZWOS41N0wxMC41OSAxNUg5LjA2TDcuMDYgOUg4VjNIMk00IDVINlY3SDRWNU0xOCA3SDIwVjlIMThWN004IDE3SDEwVjE5SDhWMTdNMTUgMThWMjBIMjNWMThIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUG9seWxpbmVQbHVzID0gXCJNMiAzVjlINC45NUw2Ljk1IDE1SDZWMjFIMTJWMTYuNDFMMTcuNDEgMTFIMjJWNUgxNlY5LjU3TDEwLjU5IDE1SDkuMDZMNy4wNiA5SDhWM0gyTTQgNUg2VjdINFY1TTE4IDdIMjBWOUgxOFY3TTE4IDE1VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwVjE1SDE4TTggMTdIMTBWMTlIOFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JQb2x5bGluZVJlbW92ZSA9IFwiTTIxLjEgMTUuNUwxOSAxNy42TDE2LjkgMTUuNUwxNS41IDE2LjlMMTcuNiAxOUwxNS41IDIxLjFMMTYuOSAyMi41TDE5IDIwLjRMMjEuMSAyMi41TDIyLjUgMjEuMUwyMC40IDE5TDIyLjUgMTYuOUwyMS4xIDE1LjVNMTYgNVY5LjZMMTAuNiAxNUg5LjFMNy4xIDlIOFYzSDJWOUg1TDcgMTVINlYyMUgxMlYxNi40TDE3LjQgMTFIMjJWNUgxNk02IDdINFY1SDZWN00xMCAxOUg4VjE3SDEwVjE5TTIwIDlIMThWN0gyMFY5XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yUmFkaXVzID0gXCJNMiw0SDRWMkgxMFY0QTEwLDEwIDAgMCwxIDIwLDE0SDIyVjIwSDIwVjIySDE4VjIwSDE2VjE0SDE4QTgsOCAwIDAsMCAxMCw2VjhINFY2SDJWNE0xOCwxNlYxOEgyMFYxNkgxOE02LDRWNkg4VjRINlpcIjtcclxuZXhwb3J0IHZhciBtZGlWZWN0b3JSZWN0YW5nbGUgPSBcIk0yLDRIOFY2SDE2VjRIMjJWMTBIMjBWMTRIMjJWMjBIMTZWMThIOFYyMEgyVjE0SDRWMTBIMlY0TTE2LDEwVjhIOFYxMEg2VjE0SDhWMTZIMTZWMTRIMThWMTBIMTZNNCw2VjhINlY2SDRNMTgsNlY4SDIwVjZIMThNNCwxNlYxOEg2VjE2SDRNMTgsMTZWMThIMjBWMTZIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yU2VsZWN0aW9uID0gXCJNMywxSDVWM0gzVjVIMVYzQTIsMiAwIDAsMSAzLDFNMTQsMUEyLDIgMCAwLDEgMTYsM1Y1SDE0VjNIMTJWMUgxNE0yMCw3QTIsMiAwIDAsMSAyMiw5VjExSDIwVjlIMThWN0gyME0yMiwyMEEyLDIgMCAwLDEgMjAsMjJIMThWMjBIMjBWMThIMjJWMjBNMjAsMTNIMjJWMTZIMjBWMTNNMTMsOVY3SDE2VjEwSDE0VjlIMTNNMTMsMjJWMjBIMTZWMjJIMTNNOSwyMkEyLDIgMCAwLDEgNywyMFYxOEg5VjIwSDExVjIySDlNNywxNlYxM0g5VjE0SDEwVjE2SDdNNywzVjFIMTBWM0g3TTMsMTZBMiwyIDAgMCwxIDEsMTRWMTJIM1YxNEg1VjE2SDNNMSw3SDNWMTBIMVY3TTksN0gxMVY5SDlWMTFIN1Y5QTIsMiAwIDAsMSA5LDdNMTYsMTRBMiwyIDAgMCwxIDE0LDE2SDEyVjE0SDE0VjEySDE2VjE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZlY3RvclNxdWFyZSA9IFwiTTIsMkg4VjRIMTZWMkgyMlY4SDIwVjE2SDIyVjIySDE2VjIwSDhWMjJIMlYxNkg0VjhIMlYyTTE2LDhWNkg4VjhINlYxNkg4VjE4SDE2VjE2SDE4VjhIMTZNNCw0VjZINlY0SDRNMTgsNFY2SDIwVjRIMThNNCwxOFYyMEg2VjE4SDRNMTgsMThWMjBIMjBWMThIMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yVHJpYW5nbGUgPSBcIk05LDNWOUg5LjczTDUuNzksMTZIMlYyMkg4VjIwSDE2VjIySDIyVjE2SDE4LjIxTDE0LjI3LDlIMTVWM00xMSw1SDEzVjdIMTFNMTIsOS4wNEwxNiwxNi4xNVYxOEg4VjE2LjE1TTQsMThINlYyMEg0TTE4LDE4SDIwVjIwSDE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmVjdG9yVW5pb24gPSBcIk0zLDFDMS44OSwxIDEsMS44OSAxLDNWMTRDMSwxNS4xMSAxLjg5LDE2IDMsMTZIN1YyMEM3LDIxLjExIDcuODksMjIgOSwyMkgyMEMyMS4xMSwyMiAyMiwyMS4xMSAyMiwyMFY5QzIyLDcuODkgMjEuMTEsNyAyMCw3SDE2VjNDMTYsMS44OSAxNS4xMSwxIDE0LDFIM00zLDNIMTRWOUgyMFYyMEg5VjE0SDNWM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaHMgPSBcIk00LDZBMiwyIDAgMCwwIDIsOFYxNkEyLDIgMCAwLDAgNCwxOEgyMEEyLDIgMCAwLDAgMjIsMTZWOEEyLDIgMCAwLDAgMjAsNkg0TTQuNTQsMTBIN1YxNEg0LjU0QzQuMTksMTMuMzkgNCwxMi43IDQsMTJDNCwxMS4zIDQuMTksMTAuNjEgNC41NCwxME05LDEwSDE1VjE0SDlWMTBNMTcsMTBIMTkuNDZDMTkuODEsMTAuNjEgMjAsMTEuMyAyMCwxMkMyMCwxMi43IDE5LjgxLDEzLjM5IDE5LjQ2LDE0SDE3VjEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpYnJhdGUgPSBcIk0xNiwxOUg4VjVIMTZNMTYuNSwzSDcuNUExLjUsMS41IDAgMCwwIDYsNC41VjE5LjVBMS41LDEuNSAwIDAsMCA3LjUsMjFIMTYuNUExLjUsMS41IDAgMCwwIDE4LDE5LjVWNC41QTEuNSwxLjUgMCAwLDAgMTYuNSwzTTE5LDE3SDIxVjdIMTlNMjIsOVYxNUgyNFY5TTMsMTdINVY3SDNNMCwxNUgyVjlIMFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWJyYXRlT2ZmID0gXCJNOC4yLDVMNi41NSwzLjM1QzYuODEsMy4xMiA3LjE1LDMgNy41LDNIMTYuNUExLjUsMS41IDAgMCwxIDE4LDQuNVYxNC44TDE2LDEyLjhWNUg4LjJNMCwxNUgyVjlIMFYxNU0yMSwxN1Y3SDE5VjE1LjhMMjAuMiwxN0gyMU0zLDE3SDVWN0gzVjE3TTE4LDE3LjM1TDIyLjExLDIxLjQ2TDIwLjg0LDIyLjczTDE4LDE5Ljg1QzE3LjgzLDIwLjU0IDE3LjIxLDIxIDE2LjUsMjFINy41QTEuNSwxLjUgMCAwLDEgNiwxOS41VjcuODlMMS4xMSwzTDIuMzksMS43M0w2LjA5LDUuNDRMOCw3LjM0TDE2LDE1LjM0TDE4LDE3LjM0VjE3LjM1TTE2LDE3Ljg5TDgsOS44OVYxOUgxNlYxNy44OU0yMiw5VjE1SDI0VjlIMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW8gPSBcIk0xNywxMC41VjdBMSwxIDAgMCwwIDE2LDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QTEsMSAwIDAsMCAxNywxN1YxMy41TDIxLDE3LjVWNi41TDE3LDEwLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW8zZCA9IFwiTTUsN0g5QTIsMiAwIDAsMSAxMSw5VjE1QTIsMiAwIDAsMSA5LDE3SDVWMTVIOVYxM0g2VjExSDlWOUg1VjdNMTMsN0gxNkEzLDMgMCAwLDEgMTksMTBWMTRBMywzIDAgMCwxIDE2LDE3SDEzVjdNMTYsMTVBMSwxIDAgMCwwIDE3LDE0VjEwQTEsMSAwIDAsMCAxNiw5SDE1VjE1SDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvM2RPZmYgPSBcIk0yLjYxIDJMMjEuMzUgMjAuNzRMMTkuOTQgMjIuMTVMMTQuOCAxN0gxM1YxNS4yTDExIDEzLjIzVjE1LjIxQzEwLjkzIDE1LjY4IDEwLjc0IDE2LjA4IDEwLjQxIDE2LjQxQzEwLjA4IDE2LjczIDkuNjggMTYuOTMgOS4yMSAxN0g1VjE1SDlWMTNINlYxMUg4LjhMNi43OSA5SDVWNy4yM0wxLjIgMy40MUwyLjYxIDJNMTYgN0gxNi4yMkMxNyA3LjA3IDE3LjYzIDcuMzYgMTguMTQgNy44OEMxOC42NSA4LjM5IDE4LjkzIDkgMTkgOS43NlYxNC4yNEMxOC45NSAxNC42MyAxOC44NyAxNSAxOC43MiAxNS4zTDE3IDEzLjZWOS44NUMxNi45NSA5LjYzIDE2Ljg0IDkuNDQgMTYuNjkgOS4yOEMxNi41MyA5LjEzIDE2LjM0IDkuMDMgMTYuMTIgOUgxNVYxMS41OUwxMyA5LjU3VjdIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW8zZFZhcmlhbnQgPSBcIk0xNCwxMFYxNEEwLjUsMC41IDAgMCwxIDEzLjUsMTQuNUgxMi41VjkuNUgxMy41QTAuNSwwLjUgMCAwLDEgMTQsMTBNMjEsNi41VjE3LjVMMTcsMTMuNVYxN0ExLDEgMCAwLDEgMTYsMThINEExLDEgMCAwLDEgMywxN1Y3QTEsMSAwIDAsMSA0LDZIMTZBMSwxIDAgMCwxIDE3LDdWMTAuNU05LjUsOS41QTEuNSwxLjUgMCAwLDAgOCw4SDQuNVY5LjVIOFYxMS4yNUg1LjVWMTIuNzVIOFYxNC41SDQuNVYxNkg4QTEuNSwxLjUgMCAwLDAgOS41LDE0LjVNMTUuNSw5LjVBMS41LDEuNSAwIDAsMCAxNCw4SDExVjE2SDE0QTEuNSwxLjUgMCAwLDAgMTUuNSwxNC41XCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW80a0JveCA9IFwiTTE5LDNINUEyLDIgMCAwLDAgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QTIsMiAwIDAsMCAxOSwzTTEyLDEzLjVIMTFWMTVIOS41VjEzLjVINi41VjlIOFYxMkg5LjVWOUgxMVYxMkgxMlYxMy41TTE4LDE1SDE2LjJMMTQuNCwxMi44VjE1SDEzVjlIMTQuNVYxMS4yTDE2LjIsOUgxOEwxNS44LDEyTDE4LDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvQWNjb3VudCA9IFwiTTE3LDEwLjVMMjEsNi41VjE3LjVMMTcsMTMuNVYxN0ExLDEgMCAwLDEgMTYsMThINEExLDEgMCAwLDEgMywxN1Y3QTEsMSAwIDAsMSA0LDZIMTZBMSwxIDAgMCwxIDE3LDdWMTAuNU0xNCwxNlYxNUMxNCwxMy42NyAxMS4zMywxMyAxMCwxM0M4LjY3LDEzIDYsMTMuNjcgNiwxNVYxNkgxNE0xMCw4QTIsMiAwIDAsMCA4LDEwQTIsMiAwIDAsMCAxMCwxMkEyLDIgMCAwLDAgMTIsMTBBMiwyIDAgMCwwIDEwLDhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9Cb3ggPSBcIk0xOCwxNkwxNCwxMi44VjE2SDZWOEgxNFYxMS4yTDE4LDhNMjAsNEg0QTIsMiAwIDAsMCAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMjBBMiwyIDAgMCwwIDIyLDE4VjZDMjIsNC44OSAyMS4xLDQgMjAsNFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0JveE9mZiA9IFwiTTYsOEg2LjczTDE0LDE1LjI3VjE2SDZNMi4yNywxTDEsMi4yN0wzLDQuMjhDMi40MSw0LjYyIDIsNS4yNiAyLDZWMThBMiwyIDAgMCwwIDQsMjBIMTguNzNMMjAuNzMsMjJMMjIsMjAuNzNNMjAsNEg3LjgyTDExLjgyLDhIMTRWMTAuMThMMTQuNTcsMTAuNzVMMTgsOFYxNC4xOEwyMiwxOC4xN0MyMiwxOC4xMSAyMiwxOC4wNiAyMiwxOFY2QTIsMiAwIDAsMCAyMCw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvQ2hlY2sgPSBcIk0xNyAxMC41VjdDMTcgNi40NSAxNi41NSA2IDE2IDZINEMzLjQ1IDYgMyA2LjQ1IDMgN1YxN0MzIDE3LjU1IDMuNDUgMTggNCAxOEgxNkMxNi41NSAxOCAxNyAxNy41NSAxNyAxN1YxMy41TDIxIDE3LjVWNi41TDE3IDEwLjVNOC45MyAxNUw2IDExLjhMNy4yNCAxMC41Nkw4LjkzIDEyLjI2TDEyLjc2IDguNDNMMTQgOS45M0w4LjkzIDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvQ2hlY2tPdXRsaW5lID0gXCJNMTUgOFYxNkg1VjhIMTVNMTYgNkg0QzMuNDUgNiAzIDYuNDUgMyA3VjE3QzMgMTcuNTUgMy40NSAxOCA0IDE4SDE2QzE2LjU1IDE4IDE3IDE3LjU1IDE3IDE3VjEzLjVMMjEgMTcuNVY2LjVMMTcgMTAuNVY3QzE3IDYuNDUgMTYuNTUgNiAxNiA2TTYuMzUgMTIuMDhMNy41IDEwLjk1TDkgMTIuNUwxMi41IDlMMTMuNjUgMTAuMzdMOSAxNUw2LjM1IDEyLjA4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvSGlnaERlZmluaXRpb24gPSBcIk0xNCAxMFYxNEMxNCAxNC4zIDEzLjggMTQuNSAxMy41IDE0LjVIMTIuNVY5LjVIMTMuNUMxMy44IDkuNSAxNCA5LjcgMTQgMTBNMTcgMTAuNVY3QzE3IDYuNCAxNi42IDYgMTYgNkg0QzMuNCA2IDMgNi40IDMgN1YxN0MzIDE3LjYgMy40IDE4IDQgMThIMTZDMTYuNiAxOCAxNyAxNy42IDE3IDE3VjEzLjVMMjEgMTcuNVY2LjVMMTcgMTAuNU05LjUgMTZIOFYxMi44SDZWMTZINC41VjhINlYxMS4ySDhWOEg5LjVWMTZNMTUuNSAxNC41QzE1LjUgMTUuMyAxNC44IDE2IDE0IDE2SDExVjhIMTRDMTQuOCA4IDE1LjUgOC43IDE1LjUgOS41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9JbWFnZSA9IFwiTTE3LDEwLjVMMjEsNi41VjE3LjVMMTcsMTMuNVYxN0ExLDEgMCAwLDEgMTYsMThINEExLDEgMCAwLDEgMywxN1Y3QTEsMSAwIDAsMSA0LDZIMTZBMSwxIDAgMCwxIDE3LDdWMTAuNU0xMC45MSw5LjU1TDkuMiwxMS44MkwxMC41LDEzLjU1TDkuNzcsMTQuMDlMNy43MywxMS4zNkw1LDE1SDE1TDEwLjkxLDkuNTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9JbnB1dEFudGVubmEgPSBcIk0xMiw1QTcsNyAwIDAsMCA1LDEySDdBNSw1IDAgMCwxIDEyLDdBNSw1IDAgMCwxIDE3LDEySDE5QTcsNyAwIDAsMCAxMiw1TTEzLDE0LjI5QzEzLjg4LDEzLjkgMTQuNSwxMy4wMyAxNC41LDEyQTIuNSwyLjUgMCAwLDAgMTIsOS41QTIuNSwyLjUgMCAwLDAgOS41LDEyQzkuNSwxMyAxMC4xMiwxMy45IDExLDE0LjI5VjE3LjU5TDcuNTksMjFMOSwyMi40MUwxMiwxOS40MUwxNSwyMi40MUwxNi40MSwyMUwxMywxNy41OVYxNC4yOU0xMiwxQTExLDExIDAgMCwwIDEsMTJIM0E5LDkgMCAwLDEgMTIsM0E5LDkgMCAwLDEgMjEsMTJIMjNBMTEsMTEgMCAwLDAgMTIsMVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0lucHV0Q29tcG9uZW50ID0gXCJNNSwyQTEsMSAwIDAsMCA0LDFBMSwxIDAgMCwwIDMsMlY2SDFWMTJIN1Y2SDVWMk05LDE2QzksMTcuMyA5Ljg0LDE4LjQgMTEsMTguODJWMjNIMTNWMTguODJDMTQuMTYsMTguNDEgMTUsMTcuMzEgMTUsMTZWMTRIOVYxNk0xLDE2QzEsMTcuMyAxLjg0LDE4LjQgMywxOC44MlYyM0g1VjE4LjgyQzYuMTYsMTguNCA3LDE3LjMgNywxNlYxNEgxVjE2TTIxLDZWMkExLDEgMCAwLDAgMjAsMUExLDEgMCAwLDAgMTksMlY2SDE3VjEySDIzVjZIMjFNMTMsMkExLDEgMCAwLDAgMTIsMUExLDEgMCAwLDAgMTEsMlY2SDlWMTJIMTVWNkgxM1YyTTE3LDE2QzE3LDE3LjMgMTcuODQsMTguNCAxOSwxOC44MlYyM0gyMVYxOC44MkMyMi4xNiwxOC40MSAyMywxNy4zMSAyMywxNlYxNEgxN1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0lucHV0SGRtaSA9IFwiTTE4LDdWNEEyLDIgMCAwLDAgMTYsMkg4QTIsMiAwIDAsMCA2LDRWN0g1VjEzTDgsMTlWMjJIMTZWMTlMMTksMTNWN0gxOE04LDRIMTZWN0gxNFY1SDEzVjdIMTFWNUgxMFY3SDhWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb0lucHV0U2NhcnQgPSBcIk0yMC42IDIuMkwxNy4zIDIuNEwxMy44IDQuNEwxMy4zIDMuNUwyIDEwVjE3SDNWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE1QzE2LjEgMjEgMTcgMjAuMSAxNyAxOVYxN0gxOFYxMEgxN0wxNi44IDkuNkwyMC4zIDcuNkwyMi4xIDQuOEwyMC42IDIuMk0xNSAxN1YxOUg1VjE3SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvSW5wdXRTdmlkZW8gPSBcIk04LDExLjVBMS41LDEuNSAwIDAsMCA2LjUsMTBBMS41LDEuNSAwIDAsMCA1LDExLjVBMS41LDEuNSAwIDAsMCA2LjUsMTNBMS41LDEuNSAwIDAsMCA4LDExLjVNMTUsNi41QTEuNSwxLjUgMCAwLDAgMTMuNSw1SDEwLjVBMS41LDEuNSAwIDAsMCA5LDYuNUExLjUsMS41IDAgMCwwIDEwLjUsOEgxMy41QTEuNSwxLjUgMCAwLDAgMTUsNi41TTguNSwxNUExLjUsMS41IDAgMCwwIDcsMTYuNUExLjUsMS41IDAgMCwwIDguNSwxOEExLjUsMS41IDAgMCwwIDEwLDE2LjVBMS41LDEuNSAwIDAsMCA4LjUsMTVNMTIsMUExMSwxMSAwIDAsMCAxLDEyQTExLDExIDAgMCwwIDEyLDIzQTExLDExIDAgMCwwIDIzLDEyQTExLDExIDAgMCwwIDEyLDFNMTIsMjFDNy4wNCwyMSAzLDE2Ljk2IDMsMTJDMyw3LjA0IDcuMDQsMyAxMiwzQzE2Ljk2LDMgMjEsNy4wNCAyMSwxMkMyMSwxNi45NiAxNi45NiwyMSAxMiwyMU0xNy41LDEwQTEuNSwxLjUgMCAwLDAgMTYsMTEuNUExLjUsMS41IDAgMCwwIDE3LjUsMTNBMS41LDEuNSAwIDAsMCAxOSwxMS41QTEuNSwxLjUgMCAwLDAgMTcuNSwxME0xNS41LDE1QTEuNSwxLjUgMCAwLDAgMTQsMTYuNUExLjUsMS41IDAgMCwwIDE1LjUsMThBMS41LDEuNSAwIDAsMCAxNywxNi41QTEuNSwxLjUgMCAwLDAgMTUuNSwxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb01pbnVzID0gXCJNMTcsMTAuNVY3QTEsMSAwIDAsMCAxNiw2SDRBMSwxIDAgMCwwIDMsN1YxN0ExLDEgMCAwLDAgNCwxOEgxNkExLDEgMCAwLDAgMTcsMTdWMTMuNUwyMSwxNy41VjYuNUwxNywxMC41TTE0LDEzSDZWMTFIMTRWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9NaW51c091dGxpbmUgPSBcIk0xNSA4VjE2SDVWOEgxNU0xNiA2SDRDMy40NSA2IDMgNi40NSAzIDdWMTdDMyAxNy41NSAzLjQ1IDE4IDQgMThIMTZDMTYuNTUgMTggMTcgMTcuNTUgMTcgMTdWMTMuNUwyMSAxNy41VjYuNUwxNyAxMC41VjdDMTcgNi40NSAxNi41NSA2IDE2IDZNMTMgMTNIN1YxMUgxM1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb09mZiA9IFwiTTMuMjcsMkwyLDMuMjdMNC43Myw2SDRBMSwxIDAgMCwwIDMsN1YxN0ExLDEgMCAwLDAgNCwxOEgxNkMxNi4yLDE4IDE2LjM5LDE3LjkyIDE2LjU0LDE3LjgyTDE5LjczLDIxTDIxLDE5LjczTTIxLDYuNUwxNywxMC41VjdBMSwxIDAgMCwwIDE2LDZIOS44MkwyMSwxNy4xOFY2LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9PZmZPdXRsaW5lID0gXCJNMy40MSwxLjg2TDIsMy4yN0w0LjczLDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QzE2LjIxLDE4IDE2LjM5LDE3LjkyIDE2LjU1LDE3LjgyTDE5LjczLDIxTDIxLjE0LDE5LjU5TDEyLjI4LDEwLjczTDMuNDEsMS44Nk01LDE2VjhINi43M0wxNC43MywxNkg1TTE1LDhWMTAuNjFMMjEsMTYuNjFWNi41TDE3LDEwLjVWN0ExLDEgMCAwLDAgMTYsNkgxMC4zOUwxMi4zOSw4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvT3V0bGluZSA9IFwiTTE1LDhWMTZINVY4SDE1TTE2LDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QTEsMSAwIDAsMCAxNywxN1YxMy41TDIxLDE3LjVWNi41TDE3LDEwLjVWN0ExLDEgMCAwLDAgMTYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb1BsdXMgPSBcIk0xNywxMC41VjdBMSwxIDAgMCwwIDE2LDZINEExLDEgMCAwLDAgMyw3VjE3QTEsMSAwIDAsMCA0LDE4SDE2QTEsMSAwIDAsMCAxNywxN1YxMy41TDIxLDE3LjVWNi41TDE3LDEwLjVNMTQsMTNIMTFWMTZIOVYxM0g2VjExSDlWOEgxMVYxMUgxNFYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb1BsdXNPdXRsaW5lID0gXCJNMTUgOFYxNkg1VjhIMTVNMTYgNkg0QzMuNDUgNiAzIDYuNDUgMyA3VjE3QzMgMTcuNTUgMy40NSAxOCA0IDE4SDE2QzE2LjU1IDE4IDE3IDE3LjU1IDE3IDE3VjEzLjVMMjEgMTcuNVY2LjVMMTcgMTAuNVY3QzE3IDYuNDUgMTYuNTUgNiAxNiA2TTEzIDEzSDExVjE1SDlWMTNIN1YxMUg5VjlIMTFWMTFIMTNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9TdGFiaWxpemF0aW9uID0gXCJNNCw0SDIwQTIsMiAwIDAsMSAyMiw2VjE4QTIsMiAwIDAsMSAyMCwyMEg0QTIsMiAwIDAsMSAyLDE4VjZBMiwyIDAgMCwxIDQsNE00LDZWMThIMjBWNkg0TTcuMjQsNi41OEwxOC44Myw5LjY5TDE2Ljc2LDE3LjQyTDUuMTcsMTQuMzFMNy4yNCw2LjU4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvU3dpdGNoID0gXCJNMTMsMTUuNVYxM0g3VjE1LjVMMy41LDEyTDcsOC41VjExSDEzVjguNUwxNi41LDEyTTE4LDkuNVY2QTEsMSAwIDAsMCAxNyw1SDNBMSwxIDAgMCwwIDIsNlYxOEExLDEgMCAwLDAgMywxOUgxN0ExLDEgMCAwLDAgMTgsMThWMTQuNUwyMiwxOC41VjUuNUwxOCw5LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9Td2l0Y2hPdXRsaW5lID0gXCJNOCAxM0gxMlYxNUwxNSAxMkwxMiA5VjExSDhWOUw1IDEyTDggMTVWMTNNMTggOS41VjZDMTggNS40IDE3LjUgNSAxNyA1SDNDMi41IDUgMiA1LjQgMiA2VjE4QzIgMTguNSAyLjUgMTkgMyAxOUgxN0MxNy41IDE5IDE4IDE4LjUgMTggMThWMTQuNUwyMiAxOC41VjUuNUwxOCA5LjVNMTYgMTdINFY3SDE2VjE3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZGVvVmludGFnZSA9IFwiTTE4LDE0LjVWMTFBMSwxIDAgMCwwIDE3LDEwSDE2QzE4LjI0LDguMzkgMTguNzYsNS4yNyAxNy4xNSwzQzE1LjU0LDAuNzggMTIuNDIsMC4yNiAxMC4xNywxLjg3QzkuNSwyLjM1IDguOTYsMyA4LjYsMy43M0M2LjI1LDIuMjggMy4xNywzIDEuNzIsNS4zN0MwLjI4LDcuNzIgMSwxMC44IDMuMzYsMTIuMjVDMy41NywxMi4zNyAzLjc4LDEyLjUgNCwxMi41OFYyMUExLDEgMCAwLDAgNSwyMkgxN0ExLDEgMCAwLDAgMTgsMjFWMTcuNUwyMiwyMS41VjEwLjVMMTgsMTQuNU0xMyw0QTIsMiAwIDAsMSAxNSw2QTIsMiAwIDAsMSAxMyw4QTIsMiAwIDAsMSAxMSw2QTIsMiAwIDAsMSAxMyw0TTYsNkEyLDIgMCAwLDEgOCw4QTIsMiAwIDAsMSA2LDEwQTIsMiAwIDAsMSA0LDhBMiwyIDAgMCwxIDYsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWRlb1dpcmVsZXNzID0gXCJNMTcsMTQuNVYxMUExLDEgMCAwLDAgMTYsMTBINEExLDEgMCAwLDAgMywxMVYyMUExLDEgMCAwLDAgNCwyMkgxNkExLDEgMCAwLDAgMTcsMjFWMTcuNUwyMSwyMS41VjEwLjVNMywzLjg2TDQuNCw1LjI0QzcuNSwyLjE5IDEyLjUsMi4xOSAxNS42LDUuMjRMMTcsMy44NkMxMy4xNCwwLjA1IDYuODcsMC4wNSAzLDMuODZNNS44LDYuNjJMNy4yLDhDOC43NSw2LjUgMTEuMjUsNi41IDEyLjgsOEwxNC4yLDYuNjJDMTEuODgsNC4zNCA4LjEyLDQuMzQgNS44LDYuNjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlkZW9XaXJlbGVzc091dGxpbmUgPSBcIk0xNSwxMlYyMEg1VjEySDE1TTE2LDEwSDRBMSwxIDAgMCwwIDMsMTFWMjFBMSwxIDAgMCwwIDQsMjJIMTZBMSwxIDAgMCwwIDE3LDIxVjE3LjVMMjEsMjEuNVYxMC41TDE3LDE0LjVWMTFBMSwxIDAgMCwwIDE2LDEwTTMsMy44Nkw0LjQsNS4yNEM3LjUsMi4xOSAxMi41LDIuMTkgMTUuNiw1LjI0TDE3LDMuODZDMTMuMTQsMC4wNSA2Ljg3LDAuMDUgMywzLjg2TTUuOCw2LjYzTDcuMiw4QzguNzUsNi41IDExLjI1LDYuNSAxMi44LDhMMTQuMiw2LjYzQzExLjg4LDQuMzQgOC4xMiw0LjM0IDUuOCw2LjYzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdBZ2VuZGEgPSBcIk0yMSAzSDNDMi40IDMgMiAzLjQgMiA0VjEwQzIgMTAuNiAyLjQgMTEgMyAxMUgyMUMyMS42IDExIDIyIDEwLjYgMjIgMTBWNEMyMiAzLjQgMjEuNiAzIDIxIDNNMjEgMTNIM0MyLjQgMTMgMiAxMy40IDIgMTRWMjBDMiAyMC42IDIuNCAyMSAzIDIxSDIxQzIxLjYgMjEgMjIgMjAuNiAyMiAyMFYxNEMyMiAxMy40IDIxLjYgMTMgMjEgMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0FnZW5kYU91dGxpbmUgPSBcIk0yMSAxM0gzQTEgMSAwIDAgMCAyIDE0VjIwQTEgMSAwIDAgMCAzIDIxSDIxQTEgMSAwIDAgMCAyMiAyMFYxNEExIDEgMCAwIDAgMjEgMTNNMjAgMTlINFYxNUgyME0yMSAzSDNBMSAxIDAgMCAwIDIgNFYxMEExIDEgMCAwIDAgMyAxMUgyMUExIDEgMCAwIDAgMjIgMTBWNEExIDEgMCAwIDAgMjEgM00yMCA5SDRWNUgyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3QXJyYXkgPSBcIk04LDE4SDE3VjVIOE0xOCw1VjE4SDIxVjVNNCwxOEg3VjVINFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3QXJyYXlPdXRsaW5lID0gXCJNMTUgN1YxNkgxMFY3SDE1TTIxIDVIMThWMThIMjFWNU0xNyA1SDhWMThIMTdWNU03IDVINFYxOEg3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0Nhcm91c2VsID0gXCJNMTgsNlYxN0gyMlY2TTIsMTdINlY2SDJNNywxOUgxN1Y0SDdWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0Nhcm91c2VsT3V0bGluZSA9IFwiTTIgNkg2VjE3SDJWNk03IDE5SDE3VjRIN1YxOU05IDZIMTVWMTdIOVY2TTE4IDZIMjJWMTdIMThWNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3Q29sdW1uID0gXCJNMTYsNVYxOEgyMVY1TTQsMThIOVY1SDRNMTAsMThIMTVWNUgxMFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3Q29sdW1uT3V0bGluZSA9IFwiTTQgNVYxOEgyMVY1SDRNMTQgN1YxNkgxMVY3SDE0TTYgN0g5VjE2SDZWN00xOSAxNkgxNlY3SDE5VjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdDb21meSA9IFwiTTMsOUg3VjVIM1Y5TTMsMTRIN1YxMEgzVjE0TTgsMTRIMTJWMTBIOFYxNE0xMywxNEgxN1YxMEgxM1YxNE04LDlIMTJWNUg4VjlNMTMsNVY5SDE3VjVIMTNNMTgsMTRIMjJWMTBIMThWMTRNMywxOUg3VjE1SDNWMTlNOCwxOUgxMlYxNUg4VjE5TTEzLDE5SDE3VjE1SDEzVjE5TTE4LDE5SDIyVjE1SDE4VjE5TTE4LDVWOUgyMlY1SDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdDb21meU91dGxpbmUgPSBcIk0zIDVWMTlIMjJWNUgzTTIwIDlIMTcuNzVWN0gyMFY5TTkuMjUgMTFIMTEuNVYxM0g5LjI1VjExTTcuMjUgMTNINVYxMUg3LjI1VjEzTTExLjUgOUg5LjI1VjdIMTEuNVY5TTEzLjUgN0gxNS43NVY5SDEzLjVWN00xMS41IDE1VjE3SDkuMjVWMTVIMTEuNU0xMy41IDE1SDE1Ljc1VjE3SDEzLjVWMTVNMTMuNSAxM1YxMUgxNS43NVYxM0gxMy41TTE3Ljc1IDExSDIwVjEzSDE3Ljc1VjExTTcuMjUgN1Y5SDVWN0g3LjI1TTUgMTVINy4yNVYxN0g1VjE1TTE3Ljc1IDE3VjE1SDIwVjE3SDE3Ljc1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdDb21wYWN0ID0gXCJNMywxOUg5VjEySDNWMTlNMTAsMTlIMjJWMTJIMTBWMTlNMyw1VjExSDIyVjVIM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3Q29tcGFjdE91dGxpbmUgPSBcIk0zLDVWMTlIMjJWNUgzTTUsN0gyMFYxMUg1VjdNNSwxN1YxM0g5VjE3SDVNMTEsMTdWMTNIMjBWMTdIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0Rhc2hib2FyZCA9IFwiTTEzLDNWOUgyMVYzTTEzLDIxSDIxVjExSDEzTTMsMjFIMTFWMTVIM00zLDEzSDExVjNIM1YxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3RGFzaGJvYXJkT3V0bGluZSA9IFwiTTE5LDVWN0gxNVY1SDE5TTksNVYxMUg1VjVIOU0xOSwxM1YxOUgxNVYxM0gxOU05LDE3VjE5SDVWMTdIOU0yMSwzSDEzVjlIMjFWM00xMSwzSDNWMTNIMTFWM00yMSwxMUgxM1YyMUgyMVYxMU0xMSwxNUgzVjIxSDExVjE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdEYXNoYm9hcmRWYXJpYW50ID0gXCJNMiw1VjE5SDhWNUgyTTksNVYxMEgxNVY1SDlNMTYsNVYxNEgyMlY1SDE2TTksMTFWMTlIMTVWMTFIOU0xNiwxNVYxOUgyMlYxNUgxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3RGFzaGJvYXJkVmFyaWFudE91dGxpbmUgPSBcIk0yIDVWMTlIMjJWNUgyTTIwIDEySDE2VjdIMjBWMTJNMTQgMTBIMTBWN0gxNFYxME0xMCAxMkgxNFYxN0gxMFYxMk00IDdIOFYxN0g0VjdNMTYgMTdWMTRIMjBWMTdIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0RheSA9IFwiTTIsM1Y2SDIxVjNNMjAsOEgzQTEsMSAwIDAsMCAyLDlWMTVBMSwxIDAgMCwwIDMsMTZIMjBBMSwxIDAgMCwwIDIxLDE1VjlBMSwxIDAgMCwwIDIwLDhNMiwyMUgyMVYxOEgyVjIxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdEYXlPdXRsaW5lID0gXCJNMjEgMThIMlYyMEgyMVYxOE0xOSAxMFYxNEg0VjEwSDE5TTIwIDhIM0MyLjQ1IDggMiA4LjQ1IDIgOVYxNUMyIDE1LjU1IDIuNDUgMTYgMyAxNkgyMEMyMC41NSAxNiAyMSAxNS41NSAyMSAxNVY5QzIxIDguNDUgMjAuNTUgOCAyMCA4TTIxIDRIMlY2SDIxVjRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0dyaWQgPSBcIk0zLDExSDExVjNIM00zLDIxSDExVjEzSDNNMTMsMjFIMjFWMTNIMTNNMTMsM1YxMUgyMVYzXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0dyaWRPdXRsaW5lID0gXCJNMyAxMUgxMVYzSDNNNSA1SDlWOUg1TTEzIDIxSDIxVjEzSDEzTTE1IDE1SDE5VjE5SDE1TTMgMjFIMTFWMTNIM001IDE1SDlWMTlINU0xMyAzVjExSDIxVjNNMTkgOUgxNVY1SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdHcmlkUGx1cyA9IFwiTTEzIDNWMTFIMjFWM0gxM00zIDIxSDExVjEzSDNWMjFNMyAzVjExSDExVjNIM00xMyAxNkgxNlYxM0gxOFYxNkgyMVYxOEgxOFYyMUgxNlYxOEgxM1YxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3R3JpZFBsdXNPdXRsaW5lID0gXCJNMyAyMUgxMVYxM0gzTTUgMTVIOVYxOUg1TTMgMTFIMTFWM0gzTTUgNUg5VjlINU0xMyAzVjExSDIxVjNNMTkgOUgxNVY1SDE5TTE4IDE2SDIxVjE4SDE4VjIxSDE2VjE4SDEzVjE2SDE2VjEzSDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpZXdIZWFkbGluZSA9IFwiTTQsNVY3SDIxVjVNNCwxMUgyMVY5SDRNNCwxOUgyMVYxN0g0TTQsMTVIMjFWMTNINFYxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3TGlzdCA9IFwiTTksNVY5SDIxVjVNOSwxOUgyMVYxNUg5TTksMTRIMjFWMTBIOU00LDlIOFY1SDRNNCwxOUg4VjE1SDRNNCwxNEg4VjEwSDRWMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld0xpc3RPdXRsaW5lID0gXCJNMyA1VjE5SDIwVjVIM003IDdWOUg1VjdIN001IDEzVjExSDdWMTNINU01IDE1SDdWMTdINVYxNU0xOCAxN0g5VjE1SDE4VjE3TTE4IDEzSDlWMTFIMThWMTNNMTggOUg5VjdIMThWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3TW9kdWxlID0gXCJNMTYsNVYxMUgyMVY1TTEwLDExSDE1VjVIMTBNMTYsMThIMjFWMTJIMTZNMTAsMThIMTVWMTJIMTBNNCwxOEg5VjEySDRNNCwxMUg5VjVINFYxMVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3TW9kdWxlT3V0bGluZSA9IFwiTTQgNVYxOEgyMVY1SDRNMTQgN1YxMC41SDExVjdIMTRNNiA3SDlWMTAuNUg2VjdNNiAxNlYxMi41SDlWMTZINk0xMSAxNlYxMi41SDE0VjE2SDExTTE5IDE2SDE2VjEyLjVIMTlWMTZNMTYgMTAuNVY3SDE5VjEwLjVIMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1BhcmFsbGVsID0gXCJNMTkgM1YyMUgxNVYzSDE5TTE0IDNWMjFIMTBWM0gxNE05IDNWMjFINVYzSDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1BhcmFsbGVsT3V0bGluZSA9IFwiTTE5IDNINVYyMUgxOVYzTTE3IDE5SDE1VjVIMTdWMTlNMTMgMTlIMTFWNUgxM1YxOU03IDVIOVYxOUg3VjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1F1aWx0ID0gXCJNMTAsNVYxMUgyMVY1TTE2LDE4SDIxVjEySDE2TTQsMThIOVY1SDRNMTAsMThIMTVWMTJIMTBWMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1F1aWx0T3V0bGluZSA9IFwiTTQgNVYxOEgyMVY1SDRNNiAxNlY3SDlWMTZINk0xMSAxNlYxMi41SDE0VjE2SDExTTE5IDE2SDE2VjEyLjVIMTlWMTZNMTEgMTAuNVY3SDE5VjEwLjVIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1NlcXVlbnRpYWwgPSBcIk0zIDVIMjFWOUgzVjVNMyAxMEgyMVYxNEgzVjEwTTMgMTVIMjFWMTlIM1YxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3U2VxdWVudGlhbE91dGxpbmUgPSBcIk0zIDVWMTlIMjFWNUgzTTE5IDdWOUg1VjdIMTlNMTkgMTFWMTNINVYxMUgxOU01IDE3VjE1SDE5VjE3SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1NwbGl0SG9yaXpvbnRhbCA9IFwiTTMsNUgyMVY3SDNWNU0zLDExVjlIMjFWMTFIM00zLDE5VjEzSDIxVjE5SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1NwbGl0VmVydGljYWwgPSBcIk0xMyw1SDIxVjE5SDEzVjVNMyw1SDExVjdIM1Y1TTMsMTFWOUgxMVYxMUgzTTMsMTlWMTdIMTFWMTlIM00zLDE1VjEzSDExVjE1SDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlld1N0cmVhbSA9IFwiTTQsNVYxMUgyMVY1TTQsMThIMjFWMTJINFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3U3RyZWFtT3V0bGluZSA9IFwiTTQgNlYxOEgyMVY2SDRNMTkgMTZINlYxM0gxOVYxNk02IDExVjhIMTlWMTFINlpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3V2VlayA9IFwiTTEzLDVIMTBBMSwxIDAgMCwwIDksNlYxOEExLDEgMCAwLDAgMTAsMTlIMTNBMSwxIDAgMCwwIDE0LDE4VjZBMSwxIDAgMCwwIDEzLDVNMjAsNUgxN0ExLDEgMCAwLDAgMTYsNlYxOEExLDEgMCAwLDAgMTcsMTlIMjBBMSwxIDAgMCwwIDIxLDE4VjZBMSwxIDAgMCwwIDIwLDVNNiw1SDNBMSwxIDAgMCwwIDIsNlYxOEExLDEgMCAwLDAgMywxOUg2QTEsMSAwIDAsMCA3LDE4VjZBMSwxIDAgMCwwIDYsNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaWV3V2Vla091dGxpbmUgPSBcIk0yMSA0SDNDMi40NSA0IDIgNC40NSAyIDVWMTlDMiAxOS41NSAyLjQ1IDIwIDMgMjBIMjFDMjEuNTUgMjAgMjIgMTkuNTUgMjIgMTlWNUMyMiA0LjQ1IDIxLjU1IDQgMjEgNE04IDE4SDRWNkg4VjE4TTE0IDE4SDEwVjZIMTRWMThNMjAgMThIMTZWNkgyMFYxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlWaW1lbyA9IFwiTTIyLDcuNDJDMjEuOTEsOS4zNyAyMC41NSwxMi4wNCAxNy45MiwxNS40NEMxNS4yLDE5IDEyLjksMjAuNzUgMTEsMjAuNzVDOS44NSwyMC43NSA4Ljg2LDE5LjY3IDguMDUsMTcuNUM3LjUsMTUuNTQgNywxMy41NiA2LjQ0LDExLjU4QzUuODQsOS40MiA1LjIsOC4zNCA0LjUsOC4zNEM0LjM2LDguMzQgMy44NCw4LjY2IDIuOTQsOS4yOUwyLDguMDdDMyw3LjIgMy45Niw2LjMzIDQuOTIsNS40NkM2LjI0LDQuMzIgNy4yMywzLjcyIDcuODgsMy42NkM5LjQ0LDMuNSAxMC40LDQuNTggMTAuNzYsNi44NkMxMS4xNSw5LjMzIDExLjQyLDEwLjg2IDExLjU3LDExLjQ2QzEyLDEzLjUgMTIuNSwxNC41IDEzLjA1LDE0LjVDMTMuNDcsMTQuNSAxNC4xLDEzLjg2IDE0Ljk0LDEyLjUzQzE1Ljc4LDExLjIxIDE2LjIzLDEwLjIgMTYuMjksOS41QzE2LjQxLDguMzYgMTUuOTYsNy43OSAxNC45NCw3Ljc5QzE0LjQ2LDcuNzkgMTMuOTcsNy45IDEzLjQ2LDguMTJDMTQuNDQsNC44OSAxNi4zMiwzLjMyIDE5LjA5LDMuNDFDMjEuMTUsMy40NyAyMi4xMiw0LjgxIDIyLDcuNDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlvbGluID0gXCJNMTEsMkExLDEgMCAwLDAgMTAsM1Y1TDEwLDlBMC41LDAuNSAwIDAsMCAxMC41LDkuNUgxMkEwLjUsMC41IDAgMCwxIDEyLjUsMTBBMC41LDAuNSAwIDAsMSAxMiwxMC41SDEwLjVDOS43MywxMC41IDksOS43NyA5LDlWNS4xNkM3LjI3LDUuNiA2LDcuMTMgNiw5VjEwLjVBMi41LDIuNSAwIDAsMSA4LjUsMTNBMi41LDIuNSAwIDAsMSA2LDE1LjVWMTdDNiwxOS43NyA4LjIzLDIyIDExLDIySDEzQzE1Ljc3LDIyIDE4LDE5Ljc3IDE4LDE3VjE1LjVBMi41LDIuNSAwIDAsMSAxNS41LDEzQTIuNSwyLjUgMCAwLDEgMTgsMTAuNVY5QzE4LDYuNzggMTYuMjIsNSAxNCw1VjNBMSwxIDAgMCwwIDEzLDJIMTFNMTAuNzUsMTYuNUgxMy4yNUwxMi43NSwyMEgxMS4yNUwxMC43NSwxNi41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZpcnR1YWxSZWFsaXR5ID0gXCJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVBMiwyIDAgMCwwIDE5LDNINU02LDlINy41TDguNSwxMi40M0w5LjUsOUgxMUw5LjI1LDE1SDcuNzVMNiw5TTEzLDlIMTYuNUMxNy4zNSw5IDE4LDkuNjUgMTgsMTAuNVYxMS41QzE4LDEyLjEgMTcuNiwxMi42NSAxNy4xLDEyLjlMMTgsMTVIMTYuNUwxNS42NSwxM0gxNC41VjE1SDEzVjlNMTQuNSwxMC41VjExLjVIMTYuNVYxMC41SDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVmlydXMgPSBcIk0xOS44MiAxNEMyMC4xMyAxNC40NSAyMC42NiAxNC43NSAyMS4yNSAxNC43NUMyMi4yMiAxNC43NSAyMyAxMy45NyAyMyAxM1MyMi4yMiAxMS4yNSAyMS4yNSAxMS4yNUMyMC42NiAxMS4yNSAyMC4xMyAxMS41NSAxOS44MiAxMkgxOUMxOSAxMC40MyAxOC41IDkgMTcuNiA3LjgxTDE4Ljk0IDYuNDdDMTkuNSA2LjU3IDIwLjA3IDYuNDEgMjAuNSA2QzIxLjE3IDUuMzEgMjEuMTcgNC4yIDIwLjUgMy41QzE5LjgxIDIuODMgMTguNyAyLjgzIDE4IDMuNUMxNy41OSAzLjkzIDE3LjQzIDQuNSAxNy41MyA1LjA2TDE2LjE5IDYuNEMxNS4yNyA1LjcxIDE0LjE5IDUuMjUgMTMgNS4wOFYzLjY4QzEzLjQ1IDMuMzcgMTMuNzUgMi44NCAxMy43NSAyLjI1QzEzLjc1IDEuMjggMTIuOTcgLjUgMTIgLjVTMTAuMjUgMS4yOCAxMC4yNSAyLjI1QzEwLjI1IDIuODQgMTAuNTUgMy4zNyAxMSAzLjY4VjUuMDhDMTAuMSA1LjIxIDkuMjYgNS41IDguNSA1Ljk0TDcuMzkgNC4zNUM3LjU4IDMuODMgNy41MyAzLjIzIDcuMTkgMi43NUM2LjYzIDEuOTYgNS41NCAxLjc2IDQuNzUgMi4zMkMzLjk2IDIuODcgMy43NiAzLjk2IDQuMzIgNC43NUM0LjY2IDUuMjQgNS4yIDUuNSA1Ljc1IDUuNUw2LjkzIDcuMThDNi41IDcuNjEgNi4xNiA4LjA5IDUuODcgOC42MkM1LjI1IDguMzggNC41IDguNSA0IDlDMy4zMyA5LjcgMy4zMyAxMC44IDQgMTEuNUM0LjI5IDExLjc3IDQuNjQgMTEuOTMgNSAxMkw1IDEyQzUgMTIuNTQgNS4wNyAxMy4wNiA1LjE4IDEzLjU2TDMuODcgMTMuOTFDMy40NSAxMy41NiAyLjg3IDEzLjQxIDIuMjkgMTMuNTZDMS4zNiAxMy44MSAuODA4IDE0Ljc3IDEuMDYgMTUuNzFDMS4zMSAxNi42NCAyLjI4IDE3LjE5IDMuMjEgMTYuOTRDMy43OCAxNi43OCA0LjIxIDE2LjM2IDQuMzkgMTUuODRMNS45IDE1LjQzQzYuMzUgMTYuMjIgNi45NSAxNi45MiA3LjY1IDE3LjVMNi41NSAxOS41QzYgMTkuNTggNS41IDE5Ljg5IDUuMjEgMjAuNDJDNC43NSAyMS4yNyA1LjA3IDIyLjMzIDUuOTIgMjIuNzlDNi43NyAyMy4yNSA3LjgzIDIyLjkzIDguMjkgMjIuMDhDOC41NyAyMS41NiA4LjU2IDIwLjk2IDguMzEgMjAuNDdMOS4zOCAxOC41QzEwLjE5IDE4LjgyIDExLjA3IDE5IDEyIDE5QzEyLjA2IDE5IDEyLjEyIDE5IDEyLjE4IDE5QzEyLjA1IDE5LjI2IDEyIDE5LjU2IDEyIDE5Ljg4QzEyLjA4IDIwLjg1IDEyLjkyIDIxLjU3IDEzLjg4IDIxLjVTMTUuNTcgMjAuNTggMTUuNSAxOS42MkMxNS40NiAxOS4xMiAxNS4yMSAxOC42OCAxNC44NSAxOC4zOUMxNS4zMiAxOC4xOCAxNS43NyAxNy45MSAxNi4xOSAxNy42TDE4LjUzIDE5Ljk0QzE4LjQzIDIwLjUgMTguNTkgMjEuMDcgMTkgMjEuNUMxOS43IDIyLjE3IDIwLjggMjIuMTcgMjEuNSAyMS41UzIyLjE3IDE5LjcgMjEuNSAxOUMyMS4wNyAxOC41OSAyMC41IDE4LjQzIDE5Ljk0IDE4LjUzTDE3LjYgMTYuMTlDMTguMDkgMTUuNTQgMTguNDcgMTQuOCAxOC43MSAxNEgxOS44Mk0xMC41IDEyQzkuNjcgMTIgOSAxMS4zMyA5IDEwLjVTOS42NyA5IDEwLjUgOSAxMiA5LjY3IDEyIDEwLjUgMTEuMzMgMTIgMTAuNSAxMk0xNCAxNUMxMy40NSAxNSAxMyAxNC41NSAxMyAxNEMxMyAxMy40NSAxMy40NSAxMyAxNCAxM1MxNSAxMy40NSAxNSAxNEMxNSAxNC41NSAxNC41NSAxNSAxNCAxNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWaXJ1c091dGxpbmUgPSBcIk0xMiAuNUMxMS4wMyAuNSAxMC4yNSAxLjI4IDEwLjI1IDIuMjVDMTAuMjUgMi44NCAxMC41NSAzLjM3IDExIDMuNjhWNS4wOEMxMC4xIDUuMjEgOS4yNiA1LjUgOC41IDUuOTRMNy4zOSA0LjM1QzcuNTggMy44MyA3LjUzIDMuMjMgNy4xOSAyLjc1QzYuODQgMi4yNiA2LjMgMiA1Ljc1IDJDNS40IDIgNS4wNSAyLjEgNC43NSAyLjMyQzMuOTYgMi44NyAzLjc2IDMuOTYgNC4zMiA0Ljc1QzQuNjYgNS4yNCA1LjIgNS41IDUuNzUgNS41TDYuOTMgNy4xOEM2LjUgNy42MSA2LjE2IDguMDkgNS44NyA4LjYyQzUuNjcgOC41NCA1LjQ2IDguNSA1LjI1IDguNUM0LjggOC41IDQuMzUgOC42NyA0IDlDMy4zMyA5LjcgMy4zMyAxMC44IDQgMTEuNUM0LjI5IDExLjc3IDQuNjQgMTEuOTIgNSAxMkw1IDEyQzUgMTIuNTQgNS4wNyAxMy4wNiA1LjE4IDEzLjU2TDMuODcgMTMuOTFDMy41NiAxMy42NSAzLjE2IDEzLjUgMi43NSAxMy41QzIuNiAxMy41IDIuNDQgMTMuNSAyLjI5IDEzLjU2QzEuMzYgMTMuODEgLjgwOSAxNC43NyAxLjA2IDE1LjcxQzEuMjcgMTYuNSAyIDE3IDIuNzUgMTdDMi45IDE3IDMuMDUgMTcgMy4yMSAxNi45NEMzLjc4IDE2Ljc4IDQuMjEgMTYuMzYgNC4zOSAxNS44NEw1LjkgMTUuNDNDNi4zNSAxNi4yMiA2Ljk1IDE2LjkyIDcuNjUgMTcuNUw2LjU1IDE5LjVDNiAxOS41OCA1LjUgMTkuODkgNS4yMSAyMC40MkM0Ljc1IDIxLjI3IDUuMDcgMjIuMzMgNS45MiAyMi43OUM2LjE4IDIyLjkzIDYuNDcgMjMgNi43NSAyM0M3LjM3IDIzIDcuOTcgMjIuNjcgOC4yOSAyMi4wOEM4LjU3IDIxLjU2IDguNTYgMjAuOTYgOC4zMSAyMC40N0w5LjM4IDE4LjVDMTAuMTkgMTguODIgMTEuMDcgMTkgMTIgMTlDMTIuMDYgMTkgMTIuMTIgMTkgMTIuMTggMTlDMTIuMDUgMTkuMjYgMTIgMTkuNTYgMTIgMTkuODhDMTIuMDggMjAuOCAxMi44NCAyMS41IDEzLjc1IDIxLjVDMTMuNzkgMjEuNSAxMy44NCAyMS41IDEzLjg4IDIxLjVDMTQuODUgMjEuNDIgMTUuNTcgMjAuNTggMTUuNSAxOS42MkMxNS40NiAxOS4xMiAxNS4yMSAxOC42OCAxNC44NSAxOC4zOUMxNS4zMiAxOC4xOCAxNS43NyAxNy45MSAxNi4xOSAxNy42TDE4LjUzIDE5Ljk0QzE4LjQzIDIwLjUgMTguNTkgMjEuMDcgMTkgMjEuNUMxOS4zNSAyMS44MyAxOS44IDIyIDIwLjI1IDIyUzIxLjE1IDIxLjgzIDIxLjUgMjEuNUMyMi4xNyAyMC44IDIyLjE3IDE5LjcgMjEuNSAxOUMyMS4xNSAxOC42NyAyMC43IDE4LjUgMjAuMjUgMTguNUMyMC4xNSAxOC41IDIwLjA1IDE4LjUgMTkuOTQgMTguNTNMMTcuNiAxNi4xOUMxOC4wOSAxNS41NCAxOC40NyAxNC44IDE4LjcxIDE0SDE5LjgyQzIwLjEzIDE0LjQ1IDIwLjY2IDE0Ljc1IDIxLjI1IDE0Ljc1QzIyLjIyIDE0Ljc1IDIzIDEzLjk3IDIzIDEzUzIyLjIyIDExLjI1IDIxLjI1IDExLjI1QzIwLjY2IDExLjI1IDIwLjEzIDExLjU1IDE5LjgyIDEySDE5QzE5IDEwLjQzIDE4LjUgOSAxNy42IDcuODFMMTguOTQgNi40N0MxOS4wNSA2LjUgMTkuMTUgNi41IDE5LjI1IDYuNUMxOS43IDYuNSAyMC4xNSA2LjMzIDIwLjUgNkMyMS4xNyA1LjMxIDIxLjE3IDQuMiAyMC41IDMuNUMyMC4xNSAzLjE3IDE5LjcgMyAxOS4yNSAzUzE4LjM1IDMuMTcgMTggMy41QzE3LjU5IDMuOTMgMTcuNDMgNC41IDE3LjUzIDUuMDZMMTYuMTkgNi40QzE1LjI3IDUuNzEgMTQuMTkgNS4yNSAxMyA1LjA4VjMuNjhDMTMuNDUgMy4zNyAxMy43NSAyLjg0IDEzLjc1IDIuMjVDMTMuNzUgMS4yOCAxMi45NyAuNSAxMiAuNU0xMiAxN0M5LjI0IDE3IDcgMTQuNzYgNyAxMlM5LjI0IDcgMTIgNyAxNyA5LjI0IDE3IDEyIDE0Ljc2IDE3IDEyIDE3TTEwLjUgOUM5LjY3IDkgOSA5LjY3IDkgMTAuNVM5LjY3IDEyIDEwLjUgMTIgMTIgMTEuMzMgMTIgMTAuNSAxMS4zMyA5IDEwLjUgOU0xNCAxM0MxMy40NSAxMyAxMyAxMy40NSAxMyAxNEMxMyAxNC41NSAxMy40NSAxNSAxNCAxNUMxNC41NSAxNSAxNSAxNC41NSAxNSAxNEMxNSAxMy40NSAxNC41NSAxMyAxNCAxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWayA9IFwiTTE1LjA3IDJIOC45M0MzLjMzIDIgMiAzLjMzIDIgOC45M1YxNS4wN0MyIDIwLjY3IDMuMzMgMjIgOC45MyAyMkgxNS4wN0MyMC42NyAyMiAyMiAyMC42NyAyMiAxNS4wN1Y4LjkzQzIyIDMuMzMgMjAuNjcgMiAxNS4wNyAyTTE4LjE1IDE2LjI3SDE2LjY5QzE2LjE0IDE2LjI3IDE1Ljk3IDE1LjgyIDE1IDE0LjgzQzE0LjEyIDE0IDEzLjc0IDEzLjg4IDEzLjUzIDEzLjg4QzEzLjI0IDEzLjg4IDEzLjE1IDEzLjk2IDEzLjE1IDE0LjM4VjE1LjY5QzEzLjE1IDE2LjA0IDEzLjA0IDE2LjI2IDEyLjExIDE2LjI2QzEwLjU3IDE2LjI2IDguODYgMTUuMzIgNy42NiAxMy41OUM1Ljg1IDExLjA1IDUuMzYgOS4xMyA1LjM2IDguNzVDNS4zNiA4LjU0IDUuNDMgOC4zNCA1Ljg1IDguMzRINy4zMkM3LjY5IDguMzQgNy44MyA4LjUgNy45NyA4LjlDOC42OSAxMSA5Ljg5IDEyLjggMTAuMzggMTIuOEMxMC41NyAxMi44IDEwLjY1IDEyLjcxIDEwLjY1IDEyLjI1VjEwLjFDMTAuNiA5LjEyIDEwLjA3IDkuMDMgMTAuMDcgOC42OEMxMC4wNyA4LjUgMTAuMjEgOC4zNCAxMC40NCA4LjM0SDEyLjczQzEzLjA0IDguMzQgMTMuMTUgOC41IDEzLjE1IDguODhWMTEuNzdDMTMuMTUgMTIuMDggMTMuMjggMTIuMTkgMTMuMzggMTIuMTlDMTMuNTYgMTIuMTkgMTMuNzIgMTIuMDggMTQuMDUgMTEuNzRDMTUuMSAxMC41NyAxNS44NSA4Ljc2IDE1Ljg1IDguNzZDMTUuOTUgOC41NSAxNi4xMSA4LjM1IDE2LjUgOC4zNUgxNy45M0MxOC4zNyA4LjM1IDE4LjQ3IDguNTggMTguMzcgOC44OUMxOC4xOSA5Ljc0IDE2LjQxIDEyLjI1IDE2LjQzIDEyLjI1QzE2LjI3IDEyLjUgMTYuMjEgMTIuNjEgMTYuNDMgMTIuOUMxNi41OCAxMy4xMSAxNy4wOSAxMy41NSAxNy40MyAxMy45NEMxOC4wNSAxNC42NSAxOC41MyAxNS4yNCAxOC42NiAxNS42NUMxOC43NyAxNi4wNiAxOC41NyAxNi4yNyAxOC4xNSAxNi4yN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWbGMgPSBcIk0xMiwxQzExLjU4LDEgMTEuMTksMS4yMyAxMSwxLjc1TDkuODgsNC44OEMxMC4zNiw1LjQgMTEuMjgsNS41IDEyLDUuNUMxMi43Miw1LjUgMTMuNjQsNS40IDE0LjEzLDQuODhMMTMsMS43NUMxMi44MiwxLjI1IDEyLjQyLDEgMTIsMU04LjQ0LDguOTFMNywxMi45MUM4LjA3LDE0LjI3IDEwLjI2LDE0LjUgMTIsMTQuNUMxMy43NCwxNC41IDE1LjkzLDE0LjI3IDE3LDEyLjkxTDE1LjU2LDguOTFDMTQuNzYsOS44MyAxMy4yNCwxMCAxMiwxMEMxMC43NiwxMCA5LjI0LDkuODMgOC40NCw4LjkxTTUuNDQsMTVDNC42MiwxNSAzLjc2LDE1LjY1IDMuNTMsMTYuNDRMMi4wNiwyMS41NkMxLjg0LDIyLjM1IDIuMywyMyAzLjEzLDIzSDIwLjg4QzIxLjcsMjMgMjIuMTYsMjIuMzUgMjEuOTQsMjEuNTZMMjAuNDcsMTYuNDRDMjAuMjQsMTUuNjUgMTkuMzgsMTUgMTguNTYsMTVIMTcuNzVMMTguMDksMTUuOTdDMTguMjEsMTYuMjkgMTguMjksMTYuNjkgMTguMDksMTYuOTdDMTYuODQsMTguNyAxNC4xNCwxOSAxMiwxOUM5Ljg2LDE5IDcuMTYsMTguNyA1LjkxLDE2Ljk3QzUuNzEsMTYuNjkgNS43OSwxNi4yOSA1LjkxLDE1Ljk3TDYuMjUsMTVINS40NFpcIjtcclxuZXhwb3J0IHZhciBtZGlWb2ljZU9mZiA9IFwiTTIsMy4yN0wzLjI4LDJMMjIsMjAuNzJMMjAuNzMsMjJMMTYuNzMsMThDMTYuOSwxOC4zMSAxNywxOC42NCAxNywxOVYyMUgxVjE5QzEsMTYuMzQgNi4zMywxNSA5LDE1QzEwLjc3LDE1IDEzLjcyLDE1LjU5IDE1LjUsMTYuNzdMMTEuMTIsMTIuMzlDMTAuNSwxMi43OCA5Ljc4LDEzIDksMTNBNCw0IDAgMCwxIDUsOUM1LDguMjIgNS4yMiw3LjUgNS42MSw2Ljg4TDIsMy4yN005LDVBNCw0IDAgMCwxIDEzLDlWOS4xN0w4LjgzLDVIOU0xNi43Niw1LjM2QzE4Ljc4LDcuNTYgMTguNzgsMTAuNjEgMTYuNzYsMTIuNjNMMTUuMDgsMTAuOTRDMTUuOTIsOS43NiAxNS45Miw4LjIzIDE1LjA4LDcuMDVMMTYuNzYsNS4zNk0yMC4wNywyQzI0LDYuMDUgMjMuOTcsMTIuMTEgMjAuMDcsMTZMMTguNDQsMTQuMzdDMjEuMjEsMTEuMTkgMjEuMjEsNi42NSAxOC40NCwzLjYzTDIwLjA3LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9pY2VtYWlsID0gXCJNMTguNSwxNUEzLjUsMy41IDAgMCwxIDE1LDExLjVBMy41LDMuNSAwIDAsMSAxOC41LDhBMy41LDMuNSAwIDAsMSAyMiwxMS41QTMuNSwzLjUgMCAwLDEgMTguNSwxNU01LjUsMTVBMy41LDMuNSAwIDAsMSAyLDExLjVBMy41LDMuNSAwIDAsMSA1LjUsOEEzLjUsMy41IDAgMCwxIDksMTEuNUEzLjUsMy41IDAgMCwxIDUuNSwxNU0xOC41LDZBNS41LDUuNSAwIDAsMCAxMywxMS41QzEzLDEyLjgzIDEzLjQ3LDE0LjA1IDE0LjI2LDE1SDkuNzRDMTAuNTMsMTQuMDUgMTEsMTIuODMgMTEsMTEuNUE1LjUsNS41IDAgMCwwIDUuNSw2QTUuNSw1LjUgMCAwLDAgMCwxMS41QTUuNSw1LjUgMCAwLDAgNS41LDE3SDE4LjVBNS41LDUuNSAwIDAsMCAyNCwxMS41QTUuNSw1LjUgMCAwLDAgMTguNSw2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbGxleWJhbGwgPSBcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMy42LDIwLjM1QzE1Ljk2LDE4LjA0IDE3LjY5LDE1LjA4IDE4LjUsMTEuNzZDMTcuODQsMTEuNjIgMTcuMTgsMTEuNTQgMTYuNSwxMS41QzE1LjU2LDE1LjExIDEzLjQxLDE4LjIyIDEwLjUsMjAuMzdDMTEsMjAuNDUgMTEuNSwyMC41IDEyLDIwLjVDMTIuNTUsMjAuNSAxMy4wOCwyMC40NSAxMy42LDIwLjM1TTkuMjMsMjAuMDRDMTIuMjMsMTguMDcgMTQuNSwxNS4wNSAxNS40NiwxMS41QzE0LjcxLDExLjU1IDEzLjk3LDExLjY1IDEzLjI3LDExLjgxQzEyLjE4LDE0Ljg5IDkuOTcsMTcuNDQgNy4xMywxOC45N0M3Ljc3LDE5LjQyIDguNSwxOS43OCA5LjIzLDIwLjA0TTIwLjUsMTIuMzdDMjAuMTYsMTIuMjMgMTkuODEsMTIuMTEgMTkuNDYsMTJDMTguNzYsMTQuOSAxNy4zOSwxNy41MyAxNS41NCwxOS43M0MxOC4zNiwxOC40NCAyMC4zNSwxNS42NCAyMC41LDEyLjM3TTMuNTYsMTEuMDRDMy41LDExLjM1IDMuNSwxMS42OCAzLjUsMTJDMy41LDE0LjUgNC41NywxNi43MyA2LjI3LDE4LjI4QzYuODYsMTggNy40MSwxNy42NiA3Ljk0LDE3LjI5QzYuMDgsMTUuNTQgNC41OCwxMy40MSAzLjU2LDExLjA0TTUuMzMsNi43NEM0LjczLDcuNSA0LjI2LDguMzUgMy45NSw5LjI4QzQuOTIsMTIuMTMgNi41OCwxNC42NiA4Ljc0LDE2LjY3QzkuMjUsMTYuMjQgOS43MiwxNS43NyAxMC4xNSwxNS4yNkM3Ljc0LDEzLjAzIDYsMTAuMDggNS4zMyw2Ljc0TTguMDQsNC41QzcuMzYsNC44NSA2LjczLDUuMyA2LjE4LDUuODJDNi43MSw5LjIxIDguMzcsMTIuMjMgMTAuNzcsMTQuNDdDMTEuMTcsMTMuOTEgMTEuNSwxMy4zMiAxMS44MiwxMi43QzkuNjgsMTAuNTYgOC4yOCw3LjY5IDguMDQsNC41TTE5Ljk2LDkuMDNDMTguNyw4LjY4IDE3LjM3LDguNSAxNiw4LjVDMTQuMSw4LjUgMTIuMjgsOC44NSAxMC42MSw5LjVDMTAuOTYsMTAuMSAxMS4zNSwxMC42NyAxMS44LDExLjJDMTMuMTIsMTAuNzUgMTQuNTMsMTAuNSAxNiwxMC41QzE3LjU3LDEwLjUgMTkuMDgsMTAuNzggMjAuNDcsMTEuMjlDMjAuNCwxMC41IDIwLjIzLDkuNzQgMTkuOTYsOS4wM00xNy41NCw1LjU3QzE3LjAzLDUuNSAxNi41LDUuNSAxNiw1LjVDMTMuNjksNS41IDExLjQ3LDUuOTQgOS40NCw2LjczQzkuNjIsNy4zOCA5Ljg2LDggMTAuMTQsOC42MUMxMS45Niw3Ljg5IDEzLjkzLDcuNSAxNiw3LjVDMTcuMTgsNy41IDE4LjMyLDcuNjMgMTkuNDIsNy44N0MxOC45Myw3IDE4LjI5LDYuMjEgMTcuNTQsNS41N00xNiw0LjVDMTQuNzksMy44NyAxMy40NCwzLjUgMTIsMy41QzEwLjk1LDMuNSA5Ljk0LDMuNyA5LDQuMDVDOS4wNCw0LjYzIDkuMTEsNS4yIDkuMjEsNS43NUMxMS4zMSw0Ljk1IDEzLjYsNC41IDE2LDQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlWb2x1bWVIaWdoID0gXCJNMTQsMy4yM1Y1LjI5QzE2Ljg5LDYuMTUgMTksOC44MyAxOSwxMkMxOSwxNS4xNyAxNi44OSwxNy44NCAxNCwxOC43VjIwLjc3QzE4LDE5Ljg2IDIxLDE2LjI4IDIxLDEyQzIxLDcuNzIgMTgsNC4xNCAxNCwzLjIzTTE2LjUsMTJDMTYuNSwxMC4yMyAxNS41LDguNzEgMTQsNy45N1YxNkMxNS41LDE1LjI5IDE2LjUsMTMuNzYgMTYuNSwxMk0zLDlWMTVIN0wxMiwyMFY0TDcsOUgzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZUxvdyA9IFwiTTcsOVYxNUgxMUwxNiwyMFY0TDExLDlIN1pcIjtcclxuZXhwb3J0IHZhciBtZGlWb2x1bWVNZWRpdW0gPSBcIk01LDlWMTVIOUwxNCwyMFY0TDksOU0xOC41LDEyQzE4LjUsMTAuMjMgMTcuNSw4LjcxIDE2LDcuOTdWMTZDMTcuNSwxNS4yOSAxOC41LDEzLjc2IDE4LjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lTWludXMgPSBcIk0zLDlIN0wxMiw0VjIwTDcsMTVIM1Y5TTE0LDExSDIyVjEzSDE0VjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZU11dGUgPSBcIk0zLDlIN0wxMiw0VjIwTDcsMTVIM1Y5TTE2LjU5LDEyTDE0LDkuNDFMMTUuNDEsOEwxOCwxMC41OUwyMC41OSw4TDIyLDkuNDFMMTkuNDEsMTJMMjIsMTQuNTlMMjAuNTksMTZMMTgsMTMuNDFMMTUuNDEsMTZMMTQsMTQuNTlMMTYuNTksMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lT2ZmID0gXCJNMTIsNEw5LjkxLDYuMDlMMTIsOC4xOE00LjI3LDNMMyw0LjI3TDcuNzMsOUgzVjE1SDdMMTIsMjBWMTMuMjdMMTYuMjUsMTcuNTNDMTUuNTgsMTguMDQgMTQuODMsMTguNDYgMTQsMTguN1YyMC43N0MxNS4zOCwyMC40NSAxNi42MywxOS44MiAxNy42OCwxOC45NkwxOS43MywyMUwyMSwxOS43M0wxMiwxMC43M00xOSwxMkMxOSwxMi45NCAxOC44LDEzLjgyIDE4LjQ2LDE0LjY0TDE5Ljk3LDE2LjE1QzIwLjYyLDE0LjkxIDIxLDEzLjUgMjEsMTJDMjEsNy43MiAxOCw0LjE0IDE0LDMuMjNWNS4yOUMxNi44OSw2LjE1IDE5LDguODMgMTksMTJNMTYuNSwxMkMxNi41LDEwLjIzIDE1LjUsOC43MSAxNCw3Ljk3VjEwLjE4TDE2LjQ1LDEyLjYzQzE2LjUsMTIuNDMgMTYuNSwxMi4yMSAxNi41LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZVBsdXMgPSBcIk0zLDlIN0wxMiw0VjIwTDcsMTVIM1Y5TTE0LDExSDE3VjhIMTlWMTFIMjJWMTNIMTlWMTZIMTdWMTNIMTRWMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lU291cmNlID0gXCJNMyA5VjE1SDdMMTIgMjBWNEw3IDlIM00xNiAxNUgxNFY5SDE2VjE1TTIwIDE5SDE4VjVIMjBWMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpVm9sdW1lVmFyaWFudE9mZiA9IFwiTTUuNjQsMy42NEwyMS4zNiwxOS4zNkwxOS45NSwyMC43OEwxNiwxNi44M1YyMEwxMSwxNUg3VjlIOC4xN0w0LjIyLDUuMDVMNS42NCwzLjY0TTE2LDRWMTEuMTdMMTIuNDEsNy41OEwxNiw0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvbHVtZVZpYnJhdGUgPSBcIk00IDlWMTVIOEwxMyAyMFY0TDggOUg0TTE2LjU1IDIuNDdMMTUuNSAzLjUzTDE3LjkzIDZMMTUgOUwxNy45MyAxMkwxNSAxNUwxNy45MyAxOEwxNS41IDIwLjQ3TDE2LjU1IDIxLjUzTDIwIDE4TDE3LjA3IDE1TDIwIDEyTDE3LjA3IDlMMjAgNkwxNi41NSAyLjQ3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVZvdGUgPSBcIk0xOCwxM0gxNy4zMkwxNS4zMiwxNUgxNy4yM0wxOSwxN0g1TDYuNzgsMTVIOC44M0w2LjgzLDEzSDZMMywxNlYyMEEyLDIgMCAwLDAgNSwyMkgxOUEyLDIgMCAwLDAgMjEsMjBWMTZMMTgsMTNNMTcsNy45NUwxMi4wNSwxMi45TDguNSw5LjM2TDEzLjQ2LDQuNDFMMTcsNy45NU0xMi43NiwyLjI5TDYuMzksOC42NkM2LDkuMDUgNiw5LjY4IDYuMzksMTAuMDdMMTEuMzQsMTVDMTEuNzMsMTUuNDEgMTIuMzYsMTUuNDEgMTIuNzUsMTVMMTkuMTEsOC42NkMxOS41LDguMjcgMTkuNSw3LjY0IDE5LjExLDcuMjVMMTQuMTYsMi4zQzEzLjc4LDEuOSAxMy4xNSwxLjkgMTIuNzYsMi4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlWb3RlT3V0bGluZSA9IFwiTTE4LDEzTDIxLDE2VjIwQzIxLDIxLjExIDIwLjEsMjIgMTksMjJINUMzLjg5LDIyIDMsMjEuMSAzLDIwVjE2TDYsMTNINi44M0w4LjgzLDE1SDYuNzhMNSwxN0gxOUwxNy4yMywxNUgxNS4zMkwxNy4zMiwxM0gxOE0xOSwyMFYxOUg1VjIwSDE5TTExLjM0LDE1TDYuMzksMTAuMDdDNiw5LjY4IDYsOS4wNSA2LjM5LDguNjZMMTIuNzYsMi4yOUMxMy4xNSwxLjkgMTMuNzgsMS45IDE0LjE2LDIuM0wxOS4xMSw3LjI1QzE5LjUsNy42NCAxOS41LDguMjcgMTkuMTEsOC42NkwxMi43NSwxNUMxMi4zNiwxNS40MSAxMS43MywxNS40MSAxMS4zNCwxNU0xMy40Niw0LjQxTDguNSw5LjM2TDEyLjA1LDEyLjlMMTcsNy45NUwxMy40Niw0LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVZwbiA9IFwiTTksNUgxNUwxMiw4TDksNU0xMC41LDE0LjY2QzEwLjIsMTUgMTAsMTUuNSAxMCwxNkEyLDIgMCAwLDAgMTIsMThBMiwyIDAgMCwwIDE0LDE2QzE0LDE1LjQ1IDEzLjc4LDE0Ljk1IDEzLjQxLDE0LjU5TDE0LjgzLDEzLjE3QzE1LjU1LDEzLjkgMTYsMTQuOSAxNiwxNkE0LDQgMCAwLDEgMTIsMjBBNCw0IDAgMCwxIDgsMTZDOCwxNC45MyA4LjQyLDEzLjk2IDkuMSwxMy4yNUw5LjA5LDEzLjI0TDE2LjE3LDYuMTdWNi4xN0MxNi44OSw1LjQ1IDE3Ljg5LDUgMTksNUE0LDQgMCAwLDEgMjMsOUE0LDQgMCAwLDEgMTksMTNDMTcuOSwxMyAxNi45LDEyLjU1IDE2LjE3LDExLjgzTDE3LjU5LDEwLjQxQzE3Ljk1LDEwLjc4IDE4LjQ1LDExIDE5LDExQTIsMiAwIDAsMCAyMSw5QTIsMiAwIDAsMCAxOSw3QzE4LjQ1LDcgMTcuOTUsNy4yMiAxNy41OSw3LjU5TDEwLjUsMTQuNjZNNi40MSw3LjU5QzYuMDUsNy4yMiA1LjU1LDcgNSw3QTIsMiAwIDAsMCAzLDlBMiwyIDAgMCwwIDUsMTFDNS41NSwxMSA2LjA1LDEwLjc4IDYuNDEsMTAuNDFMNy44MywxMS44M0M3LjEsMTIuNTUgNi4xLDEzIDUsMTNBNCw0IDAgMCwxIDEsOUE0LDQgMCAwLDEgNSw1QzYuMTEsNSA3LjExLDUuNDUgNy44Myw2LjE3VjYuMTdMMTAuNTksOC45M0w5LjE3LDEwLjM1TDYuNDEsNy41OVpcIjtcclxuZXhwb3J0IHZhciBtZGlWdWVqcyA9IFwiTTIsM0g1LjVMMTIsMTVMMTguNSwzSDIyTDEyLDIxTDIsM002LjUsM0g5LjVMMTIsNy41OEwxNC41LDNIMTcuNUwxMiwxMy4wOEw2LjUsM1pcIjtcclxuZXhwb3J0IHZhciBtZGlWdWV0aWZ5ID0gXCJNMTIsMTEuNjRMNy45MiwySDE2LjA4TDEyLDExLjY0TTEyLDIxLjk1TDMuMjcsNC45MUg3Ljg0TDEyLDE0LjQ3TDE2LjE2LDQuOTFIMjAuNzNMMTIsMjEuOTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsayA9IFwiTTE0LjEyLDEwSDE5VjguMkgxNS4zOEwxMy4zOCw0Ljg3QzEzLjA4LDQuMzcgMTIuNTQsNC4wMyAxMS45Miw0LjAzQzExLjc0LDQuMDMgMTEuNTgsNC4wNiAxMS40Miw0LjExTDYsNS44VjExSDcuOFY3LjMzTDkuOTEsNi42N0w2LDIySDcuOEwxMC42NywxMy44OUwxMywxN1YyMkgxNC44VjE1LjU5TDEyLjMxLDExLjA1TDEzLjA0LDguMThNMTQsMy44QzE1LDMuOCAxNS44LDMgMTUuOCwyQzE1LjgsMSAxNSwwLjIgMTQsMC4yQzEzLDAuMiAxMi4yLDEgMTIuMiwyQzEyLjIsMyAxMywzLjggMTQsMy44WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbGwgPSBcIk0zLDE2SDEyVjIxSDNWMTZNMiwxMEg4VjE1SDJWMTBNOSwxMEgxNVYxNUg5VjEwTTE2LDEwSDIyVjE1SDE2VjEwTTEzLDE2SDIxVjIxSDEzVjE2TTMsNEgxMVY5SDNWNE0xMiw0SDIxVjlIMTJWNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsU2NvbmNlID0gXCJNMTEsNEw3LDEzSDE5TDE1LDRIMTFNNCwxNFYyMkg2VjE5SDE0VjE0SDEyVjE3SDZWMTRINFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsU2NvbmNlRmxhdCA9IFwiTTUsNVYxMUgxOVY1SDVNNS4yNywxMy4zMkwzLjUsMTUuMDlMNC45MSwxNi41TDYuNjgsMTQuNzNMNS4yNywxMy4zMk0xOC43MywxMy4zMkwxNy4zMiwxNC43M0wxOS4wOSwxNi41TDIwLjUsMTUuMDlMMTguNzMsMTMuMzJNMTEsMTZWMTlIMTNWMTZIMTFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsbFNjb25jZUZsYXRWYXJpYW50ID0gXCJNMTkgMTlWMTNINVYxOUgxOU0xOC43MyAxMC42OEwyMC41IDguOTFMMTkuMDkgNy41TDE3LjMyIDkuMjdMMTguNzMgMTAuNjhNNS4yNyAxMC42OEw2LjY4IDkuMjdMNC45MSA3LjVMMy41IDguOTFMNS4yNyAxMC42OE0xMyA4VjVIMTFWOEgxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsU2NvbmNlUm91bmQgPSBcIk0xMyAxOVYxNkgxMVYxOUgxM00xOS4wOSAxNi41TDIwLjUgMTUuMDlMMTguNzMgMTMuMzJMMTcuMzIgMTQuNzNMMTkuMDkgMTYuNU00LjkxIDE2LjVMNi42OCAxNC43M0w1LjI3IDEzLjMyTDMuNSAxNS4wOUw0LjkxIDE2LjVNMjAgMTJDMjAgOS4xNCAxOC41IDYuNSAxNiA1LjA3UzEwLjUgMy42NCA4IDUuMDcgNCA5LjE0IDQgMTJIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsbFNjb25jZVJvdW5kVmFyaWFudCA9IFwiTTExIDVWOEgxM1Y1SDExTTQuOTEgNy41TDMuNSA4LjkxTDUuMjcgMTAuNjhMNi42OCA5LjI3TDQuOTEgNy41TTE5LjA5IDcuNUwxNy4zMiA5LjI3TDE4LjczIDEwLjY4TDIwLjUgOC45MUwxOS4wOSA3LjVNNCAxMkM0IDE0Ljg2IDUuNSAxNy41IDggMTguOTNTMTMuNSAyMC4zNiAxNiAxOC45MyAyMCAxNC44NiAyMCAxMkg0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbGxldCA9IFwiTTIxLDE4VjE5QTIsMiAwIDAsMSAxOSwyMUg1QzMuODksMjEgMywyMC4xIDMsMTlWNUEyLDIgMCAwLDEgNSwzSDE5QTIsMiAwIDAsMSAyMSw1VjZIMTJDMTAuODksNiAxMCw2LjkgMTAsOFYxNkEyLDIgMCAwLDAgMTIsMThNMTIsMTZIMjJWOEgxMk0xNiwxMy41QTEuNSwxLjUgMCAwLDEgMTQuNSwxMkExLjUsMS41IDAgMCwxIDE2LDEwLjVBMS41LDEuNSAwIDAsMSAxNy41LDEyQTEuNSwxLjUgMCAwLDEgMTYsMTMuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRHaWZ0Y2FyZCA9IFwiTTIwLDE0SDRWOEg5LjA4TDcsMTAuODNMOC42MiwxMkwxMSw4Ljc2TDEyLDcuNEwxMyw4Ljc2TDE1LjM4LDEyTDE3LDEwLjgzTDE0LjkyLDhIMjBNMjAsMTlINFYxN0gyME05LDRBMSwxIDAgMCwxIDEwLDVBMSwxIDAgMCwxIDksNkExLDEgMCAwLDEgOCw1QTEsMSAwIDAsMSA5LDRNMTUsNEExLDEgMCAwLDEgMTYsNUExLDEgMCAwLDEgMTUsNkExLDEgMCAwLDEgMTQsNUExLDEgMCAwLDEgMTUsNE0yMCw2SDE3LjgyQzE3LjkzLDUuNjkgMTgsNS4zNSAxOCw1QTMsMyAwIDAsMCAxNSwyQzEzLjk1LDIgMTMuMDQsMi41NCAxMi41LDMuMzVMMTIsNEwxMS41LDMuMzRDMTAuOTYsMi41NCAxMC4wNSwyIDksMkEzLDMgMCAwLDAgNiw1QzYsNS4zNSA2LjA3LDUuNjkgNi4xOCw2SDRDMi44OSw2IDIsNi44OSAyLDhWMTlDMiwyMC4xMSAyLjg5LDIxIDQsMjFIMjBDMjEuMTEsMjEgMjIsMjAuMTEgMjIsMTlWOEMyMiw2Ljg5IDIxLjExLDYgMjAsNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRNZW1iZXJzaGlwID0gXCJNMjAsMTBINFY0SDIwTTIwLDE1SDRWMTNIMjBNMjAsMkg0QzIuODksMiAyLDIuODkgMiw0VjE1QzIsMTYuMTEgMi44OSwxNyA0LDE3SDhWMjJMMTIsMjBMMTYsMjJWMTdIMjBDMjEuMTEsMTcgMjIsMTYuMTEgMjIsMTVWNEMyMiwyLjg5IDIxLjExLDIgMjAsMlpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRPdXRsaW5lID0gXCJNNSwzQzMuODksMyAzLDMuOSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjE2LjcyQzIxLjU5LDE2LjM3IDIyLDE1Ljc0IDIyLDE1VjlDMjIsOC4yNiAyMS41OSw3LjYzIDIxLDcuMjhWNUEyLDIgMCAwLDAgMTksM0g1TTUsNUgxOVY3SDEzQTIsMiAwIDAsMCAxMSw5VjE1QTIsMiAwIDAsMCAxMywxN0gxOVYxOUg1VjVNMTMsOUgyMFYxNUgxM1Y5TTE2LDEwLjVBMS41LDEuNSAwIDAsMCAxNC41LDEyQTEuNSwxLjUgMCAwLDAgMTYsMTMuNUExLjUsMS41IDAgMCwwIDE3LjUsMTJBMS41LDEuNSAwIDAsMCAxNiwxMC41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbGxldFBsdXMgPSBcIk0zIDBWM0gwVjVIM1Y4SDVWNUg4VjNINVYwSDNNOSAzVjZINlY5SDNWMTlDMyAyMC4xIDMuODkgMjEgNSAyMUgxOUMyMC4xMSAyMSAyMSAyMC4xMSAyMSAxOVYxOEgxMkMxMC45IDE4IDEwIDE3LjExIDEwIDE2VjhDMTAgNi45IDEwLjg5IDYgMTIgNkgyMVY1QzIxIDMuOSAyMC4xMSAzIDE5IDNIOU0xMiA4VjE2SDIyVjhIMTJNMTYgMTAuNUMxNi44MyAxMC41IDE3LjUgMTEuMTcgMTcuNSAxMkMxNy41IDEyLjgzIDE2LjgzIDEzLjUgMTYgMTMuNUMxNS4xNyAxMy41IDE0LjUgMTIuODMgMTQuNSAxMkMxNC41IDExLjE3IDE1LjE3IDEwLjUgMTYgMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRQbHVzT3V0bGluZSA9IFwiTTMgMFYzSDBWNUgzVjhINVY1SDhWM0g1VjBIM00xMCAzVjVIMTlWN0gxM0MxMS45IDcgMTEgNy45IDExIDlWMTVDMTEgMTYuMSAxMS45IDE3IDEzIDE3SDE5VjE5SDVWMTBIM1YxOUMzIDIwLjEgMy44OSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVYxNi43MkMyMS41OSAxNi4zNyAyMiAxNS43NCAyMiAxNVY5QzIyIDguMjYgMjEuNTkgNy42MyAyMSA3LjI4VjVDMjEgMy45IDIwLjEgMyAxOSAzSDEwTTEzIDlIMjBWMTVIMTNWOU0xNiAxMC41QTEuNSAxLjUgMCAwIDAgMTQuNSAxMkExLjUgMS41IDAgMCAwIDE2IDEzLjVBMS41IDEuNSAwIDAgMCAxNy41IDEyQTEuNSAxLjUgMCAwIDAgMTYgMTAuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYWxsZXRUcmF2ZWwgPSBcIk0yMCwxNEg0VjhIN1YxMEg5VjhIMTVWMTBIMTdWOEgyME0yMCwxOUg0VjE3SDIwTTksNEgxNVY2SDlNMjAsNkgxN1Y0QzE3LDIuODkgMTYuMTEsMiAxNSwySDlDNy44OSwyIDcsMi44OSA3LDRWNkg0QzIuODksNiAyLDYuODkgMiw4VjE5QzIsMjAuMTEgMi44OSwyMSA0LDIxSDIwQzIxLjExLDIxIDIyLDIwLjExIDIyLDE5VjhDMjIsNi44OSAyMS4xMSw2IDIwLDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2FsbHBhcGVyID0gXCJNNCw0SDExVjJINEEyLDIgMCAwLDAgMiw0VjExSDRWNE0xMCwxM0w2LDE4SDE4TDE1LDE0TDEyLjk3LDE2LjcxTDEwLDEzTTE3LDguNUExLjUsMS41IDAgMCwwIDE1LjUsN0ExLjUsMS41IDAgMCwwIDE0LDguNUExLjUsMS41IDAgMCwwIDE1LjUsMTBBMS41LDEuNSAwIDAsMCAxNyw4LjVNMjAsMkgxM1Y0SDIwVjExSDIyVjRBMiwyIDAgMCwwIDIwLDJNMjAsMjBIMTNWMjJIMjBBMiwyIDAgMCwwIDIyLDIwVjEzSDIwVjIwTTQsMTNIMlYyMEEyLDIgMCAwLDAgNCwyMkgxMVYyMEg0VjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhbiA9IFwiTTEyLDJBOCw4IDAgMCwwIDQsMTBDNCwxNC4wMyA3LDE3LjQyIDExLDE3LjkzVjE5SDEwQTEsMSAwIDAsMCA5LDIwSDJWMjJIOUExLDEgMCAwLDAgMTAsMjNIMTRBMSwxIDAgMCwwIDE1LDIySDIyVjIwSDE1QTEsMSAwIDAsMCAxNCwxOUgxM1YxNy45M0MxNywxNy40MyAyMCwxNC4wMyAyMCwxMEE4LDggMCAwLDAgMTIsMk0xMiw0QzEyLDQgMTIuNzQsNS4yOCAxMy4yNiw3SDEwLjc0QzExLjI2LDUuMjggMTIsNCAxMiw0TTkuNzcsNC40M0M5LjUsNC45MyA5LjA5LDUuODQgOC43NCw3SDYuODFDNy41LDUuODQgOC41LDQuOTMgOS43Nyw0LjQzTTE0LjIzLDQuNDRDMTUuNSw0Ljk0IDE2LjUsNS44NCAxNy4xOSw3SDE1LjI2QzE0LjkxLDUuODQgMTQuNSw0LjkzIDE0LjIzLDQuNDRNNi4wOSw5SDguMzJDOC4yOCw5LjMzIDguMjUsOS42NiA4LjI1LDEwQzguMjUsMTAuMzQgOC4yOCwxMC42NyA4LjMyLDExSDYuMDlDNi4wMywxMC42NyA2LDEwLjM0IDYsMTBDNiw5LjY2IDYuMDMsOS4zMyA2LjA5LDlNMTAuMzIsOUgxMy42OEMxMy43Miw5LjMzIDEzLjc1LDkuNjYgMTMuNzUsMTBDMTMuNzUsMTAuMzQgMTMuNzIsMTAuNjcgMTMuNjgsMTFIMTAuMzJDMTAuMjgsMTAuNjcgMTAuMjUsMTAuMzQgMTAuMjUsMTBDMTAuMjUsOS42NiAxMC4yOCw5LjMzIDEwLjMyLDlNMTUuNjgsOUgxNy45MUMxNy45Nyw5LjMzIDE4LDkuNjYgMTgsMTBDMTgsMTAuMzQgMTcuOTcsMTAuNjcgMTcuOTEsMTFIMTUuNjhDMTUuNzIsMTAuNjcgMTUuNzUsMTAuMzQgMTUuNzUsMTBDMTUuNzUsOS42NiAxNS43Miw5LjMzIDE1LjY4LDlNNi44MSwxM0g4Ljc0QzkuMDksMTQuMTYgOS41LDE1LjA3IDkuNzcsMTUuNTZDOC41LDE1LjA2IDcuNSwxNC4xNiA2LjgxLDEzTTEwLjc0LDEzSDEzLjI2QzEyLjc0LDE0LjcyIDEyLDE2IDEyLDE2QzEyLDE2IDExLjI2LDE0LjcyIDEwLjc0LDEzTTE1LjI2LDEzSDE3LjE5QzE2LjUsMTQuMTYgMTUuNSwxNS4wNyAxNC4yMywxNS41N0MxNC41LDE1LjA3IDE0LjkxLDE0LjE2IDE1LjI2LDEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhcmRyb2JlID0gXCJNNCA0VjE5QzQgMjAuMSA0LjkgMjEgNiAyMVYyMkg4VjIxSDExLjVWMkg2QzQuOSAyIDQgMi45IDQgNE04IDEwSDEwVjEzSDhWMTBNMTggMkgxMi41VjIxSDE2VjIySDE4VjIxQzE5LjEgMjEgMjAgMjAuMSAyMCAxOVY0QzIwIDIuOSAxOS4xIDIgMTggMk0xNiAxM0gxNFYxMEgxNlYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXJkcm9iZU91dGxpbmUgPSBcIk02IDJDNC44OSAyIDQgMi45IDQgNFYxOUM0IDIwLjExIDQuODkgMjEgNiAyMVYyMkg4VjIxSDE2VjIySDE4VjIxQzE5LjExIDIxIDIwIDIwLjExIDIwIDE5VjRDMjAgMi45IDE5LjExIDIgMTggMkg2TTYgNEgxMVYxOUg2VjRNMTMgNEgxOFYxOUgxM1Y0TTggMTBWMTNIMTBWMTBIOE0xNCAxMFYxM0gxNlYxMEgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXJlaG91c2UgPSBcIk02IDE5SDhWMjFINlYxOU0xMiAzTDIgOFYyMUg0VjEzSDIwVjIxSDIyVjhMMTIgM004IDExSDRWOUg4VjExTTE0IDExSDEwVjlIMTRWMTFNMjAgMTFIMTZWOUgyMFYxMU02IDE1SDhWMTdINlYxNU0xMCAxNUgxMlYxN0gxMFYxNU0xMCAxOUgxMlYyMUgxMFYxOU0xNCAxOUgxNlYyMUgxNFYxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXNoaW5nTWFjaGluZSA9IFwiTTE0LjgzLDExLjE3QzE2LjM5LDEyLjczIDE2LjM5LDE1LjI3IDE0LjgzLDE2LjgzQzEzLjI3LDE4LjM5IDEwLjczLDE4LjM5IDkuMTcsMTYuODNMMTQuODMsMTEuMTdNNiwySDE4QTIsMiAwIDAsMSAyMCw0VjIwQTIsMiAwIDAsMSAxOCwyMkg2QTIsMiAwIDAsMSA0LDIwVjRBMiwyIDAgMCwxIDYsMk03LDRBMSwxIDAgMCwwIDYsNUExLDEgMCAwLDAgNyw2QTEsMSAwIDAsMCA4LDVBMSwxIDAgMCwwIDcsNE0xMCw0QTEsMSAwIDAsMCA5LDVBMSwxIDAgMCwwIDEwLDZBMSwxIDAgMCwwIDExLDVBMSwxIDAgMCwwIDEwLDRNMTIsOEE2LDYgMCAwLDAgNiwxNEE2LDYgMCAwLDAgMTIsMjBBNiw2IDAgMCwwIDE4LDE0QTYsNiAwIDAsMCAxMiw4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhc2hpbmdNYWNoaW5lQWxlcnQgPSBcIk0xMi44MyAxMS4xN0MxNC4zOSAxMi43MyAxNC4zOSAxNS4yNyAxMi44MyAxNi44M1M4LjczIDE4LjM5IDcuMTcgMTYuODNMMTIuODMgMTEuMTdNNCAySDE2QzE3LjExIDIgMTggMi45IDE4IDRWMjBDMTggMjEuMTEgMTcuMTEgMjIgMTYgMjJINEMyLjkgMjIgMiAyMS4xMSAyIDIwVjRDMiAyLjkgMi45IDIgNCAyTTUgNEM0LjQ1IDQgNCA0LjQ1IDQgNVM0LjQ1IDYgNSA2IDYgNS41NSA2IDUgNS41NSA0IDUgNE04IDRDNy40NSA0IDcgNC40NSA3IDVTNy40NSA2IDggNiA5IDUuNTUgOSA1IDguNTUgNCA4IDRNMTAgOEM2LjY5IDggNCAxMC42OSA0IDE0UzYuNjkgMjAgMTAgMjAgMTYgMTcuMzEgMTYgMTQgMTMuMzEgOCAxMCA4TTIwIDE1SDIyVjE3SDIwVjE1TTIwIDdIMjJWMTNIMjBWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXNoaW5nTWFjaGluZU9mZiA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNCA1Ljg5VjIwQzQgMjEuMTEgNC44OSAyMiA2IDIySDE4QzE4LjU4IDIyIDE5LjEgMjEuNzUgMTkuNDYgMjEuMzVMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMjBDOC42OSAyMCA2IDE3LjMxIDYgMTRDNiAxMi4zMiA2LjcgMTAuOCA3LjgyIDkuNzFMMTIuMDYgMTMuOTVMOS4xNyAxNi44M0MxMC43MyAxOC4zOSAxMy4yNyAxOC4zOSAxNC44MyAxNi44M0MxNC44NSAxNi44MSAxNC44NiAxNi43OSAxNC44OCAxNi43N0wxNi4yOSAxOC4xOEMxNS4yIDE5LjMgMTMuNjkgMjAgMTIgMjBNMTEuMjUgOC4wNUMxMS41IDggMTEuNzUgOCAxMiA4QzE1LjMxIDggMTggMTAuNjkgMTggMTRDMTggMTQuMjUgMTggMTQuNSAxNy45NSAxNC43NUwyMCAxNi44VjRDMjAgMi45IDE5LjExIDIgMTggMkg2QzUuNzYgMiA1LjU0IDIuMDUgNS4zMyAyLjEzTDExLjI1IDguMDVNMTAgNEMxMC41NSA0IDExIDQuNDUgMTEgNVMxMC41NSA2IDEwIDYgOSA1LjU1IDkgNSA5LjQ1IDQgMTAgNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaCA9IFwiTTYsMTJBNiw2IDAgMCwxIDEyLDZBNiw2IDAgMCwxIDE4LDEyQTYsNiAwIDAsMSAxMiwxOEE2LDYgMCAwLDEgNiwxMk0yMCwxMkMyMCw5LjQ1IDE4LjgxLDcuMTkgMTYuOTUsNS43M0wxNiwwSDhMNy4wNSw1LjczQzUuMTksNy4xOSA0LDkuNDUgNCwxMkM0LDE0LjU0IDUuMTksMTYuODEgNy4wNSwxOC4yN0w4LDI0SDE2TDE2Ljk1LDE4LjI3QzE4LjgxLDE2LjgxIDIwLDE0LjU0IDIwLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGNoRXhwb3J0ID0gXCJNMTQsMTFIMTlMMTYuNSw4LjVMMTcuOTIsNy4wOEwyMi44NCwxMkwxNy45MiwxNi45MkwxNi41LDE1LjVMMTksMTNIMTRWMTFNMTIsMThBNiw2IDAgMCwxIDYsMTJBNiw2IDAgMCwxIDEyLDZDMTMuNCw2IDE0LjY5LDYuNSAxNS43MSw3LjI5TDE3LjEzLDUuODdMMTYuOTUsNS43M0wxNiwwSDhMNy4wNSw1LjczQzUuMTksNy4xOSA0LDkuNDYgNCwxMkM0LDE0LjU1IDUuMTksMTYuODEgNy4wNSwxOC4yN0w4LDI0SDE2TDE2Ljk1LDE4LjI3TDE3LjEzLDE4LjEzTDE1LjcxLDE2LjcxQzE0LjY5LDE3LjUgMTMuNCwxOCAxMiwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaEV4cG9ydFZhcmlhbnQgPSBcIk0xNCwxMUgxOUwxNi41LDguNUwxNy45Miw3LjA4TDIyLjg0LDEyTDE3LjkyLDE2LjkyTDE2LjUsMTUuNUwxOSwxM0gxNFYxMU04LDBIMTZMMTYuODMsNUgxN0MxNy4yOCw1IDE3LjU0LDUuMDYgMTcuNzgsNS4xNkwxNS45NCw3SDdWMTdIMTUuOTRMMTcuNzgsMTguODRDMTcuNTQsMTguOTQgMTcuMjgsMTkgMTcsMTlIMTYuODNMMTYsMjRIOEw3LjE3LDE5SDdBMiwyIDAgMCwxIDUsMTdWN0M1LDUuODkgNS45LDUgNyw1SDcuMTdMOCwwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGNoSW1wb3J0ID0gXCJNMiwxMUg3TDQuNSw4LjVMNS45Miw3LjA4TDEwLjg0LDEyTDUuOTIsMTYuOTJMNC41LDE1LjVMNywxM0gyVjExTTEyLDE4QTYsNiAwIDAsMCAxOCwxMkE2LDYgMCAwLDAgMTIsNkMxMC42LDYgOS4zMSw2LjUgOC4yOSw3LjI5TDYuODcsNS44N0w3LjA1LDUuNzNMOCwwSDE2TDE2Ljk1LDUuNzNDMTguODEsNy4xOSAyMCw5LjQ1IDIwLDEyQzIwLDE0LjU0IDE4LjgxLDE2LjgxIDE2Ljk1LDE4LjI3TDE2LDI0SDhMNy4wNSwxOC4yN0w2Ljg3LDE4LjEzTDguMjksMTYuNzFDOS4zMSwxNy41IDEwLjYsMTggMTIsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0Y2hJbXBvcnRWYXJpYW50ID0gXCJNMSwxMUg2TDMuNSw4LjVMNC45Miw3LjA4TDkuODQsMTJMNC45MiwxNi45MkwzLjUsMTUuNUw2LDEzSDFWMTFNOCwwSDE2TDE2LjgzLDVIMTdBMiwyIDAgMCwxIDE5LDdWMTdDMTksMTguMTEgMTguMSwxOSAxNywxOUgxNi44M0wxNiwyNEg4TDcuMTcsMTlIN0M2LjQ2LDE5IDYsMTguNzkgNS42MiwxOC40NEw3LjA2LDE3SDE3VjdINy4wNkw1LjYyLDUuNTZDNiw1LjIxIDYuNDYsNSA3LDVINy4xN0w4LDBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0Y2hWYXJpYW50ID0gXCJNOCwwTDcuMTcsNUg3QTIsMiAwIDAsMCA1LDdWMTdDNSwxOC4xMSA1LjksMTkgNywxOUg3LjE3TDgsMjRIMTZMMTYuODMsMTlIMTdBMiwyIDAgMCwwIDE5LDE3VjdDMTksNS44OSAxOC4xLDUgMTcsNUgxNi44M0wxNiwwSDhNNyw3SDE3VjE3SDdWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaFZpYnJhdGUgPSBcIk0zLDE3VjdINVYxN0gzTTE5LDE3VjdIMjFWMTdIMTlNMjIsOUgyNFYxNUgyMlY5TTAsMTVWOUgyVjE1SDBNMTcuOTYsMTEuOTdDMTcuOTYsMTMuODcgMTcuMDcsMTUuNTcgMTUuNjgsMTYuNjdMMTQuOTcsMjAuOTVIOUw4LjI3LDE2LjY3QzYuODgsMTUuNTcgNiwxMy44NyA2LDExLjk3QzYsMTAuMDcgNi44OCw4LjM3IDguMjcsNy4yOEw5LDNIMTQuOTdMMTUuNjgsNy4yOEMxNy4wNyw4LjM3IDE3Ljk2LDEwLjA3IDE3Ljk2LDExLjk3TTcuNSwxMS45N0M3LjUsMTQuNDUgOS41LDE2LjQ2IDExLjk3LDE2LjQ2QTQuNSw0LjUgMCAwLDAgMTYuNDYsMTEuOTdDMTYuNDYsOS41IDE0LjQ1LDcuNSAxMS45Nyw3LjVBNC40Nyw0LjQ3IDAgMCwwIDcuNSwxMS45N1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRjaFZpYnJhdGVPZmYgPSBcIk0wLDlIMlYxNUgwVjlNMTIsNy41QzE0LjQ3LDcuNSAxNi40Nyw5LjUzIDE2LjQ2LDEyQzE2LjQ1LDEyLjM4IDE2LjQsMTIuNzYgMTYuMywxMy4xM0wxNy41LDE0LjMxQzE3LjgxLDEzLjU4IDE4LDEyLjggMTgsMTJDMTgsMTAuMTcgMTcuMTYsOC40NCAxNS43Miw3LjMxTDE1LDNIOUw4LjU5LDUuMzlMMTAuODYsNy42NkMxMS4yMyw3LjU1IDExLjYxLDcuNSAxMiw3LjVNMjEsMTdWN0gxOVYxNS44TDIwLjIsMTdIMjFNMTYuNSwxNS44NkwyMi4xMSwyMS40NkwyMC44NCwyMi43M0wxNS41NSwxNy40NEwxNSwyMUg5TDguMjcsMTYuNzJDNS44NSwxNC44MiA1LjI3LDExLjQgNi45MSw4LjhMMS4xMSwzTDIuMzksMS43M0w4LjA5LDcuNDRMOS4xNyw4LjVMMTUuNDQsMTQuNzlMMTYuNSwxNS44Nk0xNC4wNSwxNS45NEw4LjA1LDkuOTRDNy43LDEwLjU3IDcuNSwxMS4yOCA3LjUsMTJDNy41LDE0LjQ3IDkuNTMsMTYuNDcgMTIsMTYuNDZDMTIuNzIsMTYuNDYgMTMuNDIsMTYuMjggMTQuMDUsMTUuOTRNMjIsOVYxNUgyNFY5SDIyTTMsMTdINVY3SDNWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXIgPSBcIk0xMiwyMEE2LDYgMCAwLDEgNiwxNEM2LDEwIDEyLDMuMjUgMTIsMy4yNUMxMiwzLjI1IDE4LDEwIDE4LDE0QTYsNiAwIDAsMSAxMiwyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckFsZXJ0ID0gXCJNMTAgMy4yNUMxMCAzLjI1IDE2IDEwIDE2IDE0QzE2IDE3LjMxIDEzLjMxIDIwIDEwIDIwUzQgMTcuMzEgNCAxNEM0IDEwIDEwIDMuMjUgMTAgMy4yNU0yMCA3VjEzSDE4VjdIMjBNMTggMTdIMjBWMTVIMThWMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJBbGVydE91dGxpbmUgPSBcIk0xMCAzLjI1QzEwIDMuMjUgNCAxMCA0IDE0QzQgMTcuMzEgNi42OSAyMCAxMCAyMFMxNiAxNy4zMSAxNiAxNEMxNiAxMCAxMCAzLjI1IDEwIDMuMjVNMTAgMThDNy43OSAxOCA2IDE2LjIxIDYgMTRDNiAxMi4yMyA4IDguOTYgMTAgNi4zOUMxMiA4Ljk1IDE0IDEyLjIzIDE0IDE0QzE0IDE2LjIxIDEyLjIxIDE4IDEwIDE4TTIwIDdWMTNIMThWN0gyME0xOCAxN0gyMFYxNUgxOFYxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckJvaWxlciA9IFwiTTggMkM2Ljg5IDIgNiAyLjg5IDYgNFYxNkM2IDE3LjExIDYuODkgMTggOCAxOEg5VjIwSDZWMjJIOUMxMC4xMSAyMiAxMSAyMS4xMSAxMSAyMFYxOEgxM1YyMEMxMyAyMS4xMSAxMy44OSAyMiAxNSAyMkgxOFYyMEgxNVYxOEgxNkMxNy4xMSAxOCAxOCAxNy4xMSAxOCAxNlY0QzE4IDIuODkgMTcuMTEgMiAxNiAySDhNMTIgNC45N0EyIDIgMCAwIDEgMTQgNi45N0EyIDIgMCAwIDEgMTIgOC45N0EyIDIgMCAwIDEgMTAgNi45N0EyIDIgMCAwIDEgMTIgNC45N00xMCAxNC41SDE0VjE2SDEwVjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJCb2lsZXJBbGVydCA9IFwiTTYgMkM0Ljg5IDIgNCAyLjg5IDQgNFYxNkM0IDE3LjExIDQuODkgMTggNiAxOEg3VjIwSDRWMjJIN0M4LjExIDIyIDkgMjEuMTEgOSAyMFYxOEgxMVYyMEMxMSAyMS4xMSAxMS44OSAyMiAxMyAyMkgxNlYyMEgxM1YxOEgxNEMxNS4xMSAxOCAxNiAxNy4xMSAxNiAxNlY0QzE2IDIuODkgMTUuMTEgMiAxNCAySDZNMTAgNC45N0MxMS4xMSA0Ljk3IDEyIDUuODcgMTIgNi45N1MxMS4xMSA4Ljk3IDEwIDguOTdDOC45IDguOTcgOCA4LjA3IDggNi45N0M4IDUuODcgOC45IDQuOTcgMTAgNC45N004IDE0LjVIMTJWMTZIOFYxNC41TTE4IDE1SDIwVjE3SDE4VjE1TTE4IDdIMjBWMTNIMThWN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckJvaWxlck9mZiA9IFwiTTEwIDYuODJMNi4yNSAzLjA1QzYuNTkgMi40MiA3LjI0IDIgOCAySDE2QzE3LjExIDIgMTggMi44OSAxOCA0VjE0LjhMMTIuMTYgOC45NkMxMy4xOSA4Ljg3IDE0IDggMTQgNi45N0MxNCA1Ljg3IDEzLjExIDQuOTcgMTIgNC45N0MxMC45NSA0Ljk3IDEwLjEgNS43OCAxMCA2LjgyTTE1IDE4VjIwSDE4VjIySDE1QzEzLjg5IDIyIDEzIDIxLjExIDEzIDIwVjE4SDExVjIwQzExIDIxLjExIDEwLjExIDIyIDkgMjJINlYyMEg5VjE4SDhDNi44OSAxOCA2IDE3LjExIDYgMTZWNy44OUwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE2LjEgMThDMTYuMDYgMTggMTYuMDMgMTggMTYgMThIMTVNMTQgMTZWMTUuODlMMTIuNjEgMTQuNUgxMFYxNkgxNFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckNoZWNrID0gXCJNMjEuNzUgMTYuMjVMMTcgMjFMMTQuMjUgMThMMTUuNDEgMTYuODRMMTcgMTguNDNMMjAuNTkgMTQuODRMMjEuNzUgMTYuMjVNMTcuNjIgMTJDMTYuMzEgOC4xIDEyIDMuMjUgMTIgMy4yNVM2IDEwIDYgMTRDNiAxNy4zMSA4LjY5IDIwIDEyIDIwSDEyLjM0QzEyLjEyIDE5LjM2IDEyIDE4LjcgMTIgMThDMTIgMTQuODIgMTQuNSAxMi4yMiAxNy42MiAxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlckNoZWNrT3V0bGluZSA9IFwiTTIxLjc1IDE2LjI1TDE3IDIxTDE0LjI1IDE4TDE1LjQxIDE2Ljg0TDE3IDE4LjQzTDIwLjU5IDE0Ljg0TDIxLjc1IDE2LjI1TTggMTRDOCAxMi4yMyAxMCA4Ljk2IDEyIDYuMzlDMTMuNSA4LjMzIDE1IDEwLjY3IDE1LjY3IDEyLjQ3QzE2LjI3IDEyLjIxIDE2LjkzIDEyLjA2IDE3LjYyIDEyQzE2LjMxIDguMSAxMiAzLjI1IDEyIDMuMjVTNiAxMCA2IDE0QzYgMTcuMzEgOC42OSAyMCAxMiAyMEMxMi4xMiAyMCAxMi4yMyAyMCAxMi4zNCAyMEMxMi4xMiAxOS4zNiAxMiAxOC43IDEyIDE4QzkuNzkgMTggOCAxNi4yMSA4IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyTWludXMgPSBcIk0yMiAxN1YxOUgxNFYxN0gyMk0xNy42MiAxMkMxNi4zMSA4LjEgMTIgMy4yNSAxMiAzLjI1UzYgMTAgNiAxNEM2IDE3LjMxIDguNjkgMjAgMTIgMjBDMTIuMTIgMjAgMTIuMjMgMjAgMTIuMzQgMjBDMTIuMTIgMTkuMzYgMTIgMTguNyAxMiAxOEMxMiAxNC44MiAxNC41IDEyLjIyIDE3LjYyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyTWludXNPdXRsaW5lID0gXCJNMjIgMTdWMTlIMTRWMTdIMjJNOCAxNEM4IDEyLjIzIDEwIDguOTYgMTIgNi4zOUMxMy41IDguMzMgMTUgMTAuNjcgMTUuNjcgMTIuNDdDMTYuMjcgMTIuMjEgMTYuOTMgMTIuMDYgMTcuNjIgMTJDMTYuMzEgOC4xIDEyIDMuMjUgMTIgMy4yNVM2IDEwIDYgMTRDNiAxNy4zMSA4LjY5IDIwIDEyIDIwQzEyLjEyIDIwIDEyLjIzIDIwIDEyLjM0IDIwQzEyLjEyIDE5LjM2IDEyIDE4LjcgMTIgMThDOS43OSAxOCA4IDE2LjIxIDggMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJPZmYgPSBcIk0yMC44NCAyMi43M0wxNi4yOSAxOC4xOEMxNS4yIDE5LjMgMTMuNjkgMjAgMTIgMjBDOC42OSAyMCA2IDE3LjMxIDYgMTRDNiAxMi42NyA2LjY3IDExLjAzIDcuNTUgOS40NEwxLjExIDNMMi4zOSAxLjczTDIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTTE4IDE0QzE4IDEwIDEyIDMuMjUgMTIgMy4yNVMxMC44NCA0LjU1IDkuNTUgNi4zNUwxNy45NSAxNC43NUMxOCAxNC41IDE4IDE0LjI1IDE4IDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyT2ZmT3V0bGluZSA9IFwiTTIyLjExIDIxLjQ2TDIuMzkgMS43M0wxLjExIDNMNy42NSA5LjU0QzYuNzQgMTEuMDMgNiAxMi42NSA2IDE0LjIzQzYgMTcuNTQgOC42OSAyMC4yMyAxMiAyMC4yM0MxMy43NCAyMC4yMyAxNS4zIDE5LjUgMTYuNCAxOC4yOUwyMC44NCAyMi43M0wyMi4xMSAyMS40Nk0xMiAxOC4yM0M5Ljc4IDE4LjIzIDggMTYuNDUgOCAxNC4yM0M4IDEzLjUgOC41IDEyLjI3IDkuMTQgMTEuMDNMMTUgMTYuODhDMTQuMjYgMTcuNzEgMTMuMiAxOC4yMyAxMiAxOC4yM00xMS4xNCA3Ljk0TDkuNzEgNi41QzEwLjU3IDUuMzggMTEuMjUgNC42MSAxMS4yNSA0LjYxTDEyIDMuNzdMMTIuNzUgNC42MUMxMi43NSA0LjYxIDE0LjAzIDYuMDYgMTUuMzIgNy45NFMxOCAxMi4wNyAxOCAxNC4yM0MxOCAxNC40MSAxOCAxNC41OSAxNy45NyAxNC43N0wxNS40NiAxMi4yNkMxNSAxMS4yMyAxNC4zNyAxMC4wNyAxMy42OCA5LjA3QzEyLjg0IDcuODUgMTIuNDQgNy40MiAxMiA2LjlDMTEuNzMgNy4yMSAxMS41IDcuNSAxMS4xNCA3Ljk0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyT3V0bGluZSA9IFwiTTEyLDMuNzdMMTEuMjUsNC42MUMxMS4yNSw0LjYxIDkuOTcsNi4wNiA4LjY4LDcuOTRDNy4zOSw5LjgyIDYsMTIuMDcgNiwxNC4yM0E2LDYgMCAwLDAgMTIsMjAuMjNBNiw2IDAgMCwwIDE4LDE0LjIzQzE4LDEyLjA3IDE2LjYxLDkuODIgMTUuMzIsNy45NEMxNC4wMyw2LjA2IDEyLjc1LDQuNjEgMTIuNzUsNC42MUwxMiwzLjc3TTEyLDYuOUMxMi40NCw3LjQyIDEyLjg0LDcuODUgMTMuNjgsOS4wN0MxNC44OSwxMC44MyAxNiwxMy4wNyAxNiwxNC4yM0MxNiwxNi40NSAxNC4yMiwxOC4yMyAxMiwxOC4yM0M5Ljc4LDE4LjIzIDgsMTYuNDUgOCwxNC4yM0M4LDEzLjA3IDkuMTEsMTAuODMgMTAuMzIsOS4wN0MxMS4xNiw3Ljg1IDExLjU2LDcuNDIgMTIsNi45WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyUGVyY2VudCA9IFwiTTEyLDMuMjVDMTIsMy4yNSA2LDEwIDYsMTRDNiwxNy4zMiA4LjY5LDIwIDEyLDIwQTYsNiAwIDAsMCAxOCwxNEMxOCwxMCAxMiwzLjI1IDEyLDMuMjVNMTQuNDcsOS45N0wxNS41MywxMS4wM0w5LjUzLDE3LjAzTDguNDcsMTUuOTdNOS43NSwxMEExLjI1LDEuMjUgMCAwLDEgMTEsMTEuMjVBMS4yNSwxLjI1IDAgMCwxIDkuNzUsMTIuNUExLjI1LDEuMjUgMCAwLDEgOC41LDExLjI1QTEuMjUsMS4yNSAwIDAsMSA5Ljc1LDEwTTE0LjI1LDE0LjVBMS4yNSwxLjI1IDAgMCwxIDE1LjUsMTUuNzVBMS4yNSwxLjI1IDAgMCwxIDE0LjI1LDE3QTEuMjUsMS4yNSAwIDAsMSAxMywxNS43NUExLjI1LDEuMjUgMCAwLDEgMTQuMjUsMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlclBlcmNlbnRBbGVydCA9IFwiTTIwIDdWMTNIMThWN0gyME0xOCAxN0gyMFYxNUgxOFYxN00xMCAzLjI1QzEwIDMuMjUgNCAxMCA0IDE0QzQgMTcuMzIgNi42OSAyMCAxMCAyMFMxNiAxNy4zMSAxNiAxNEMxNiAxMCAxMCAzLjI1IDEwIDMuMjVNNy43NSAxMEM4LjQ0IDEwIDkgMTAuNTYgOSAxMS4yNVM4LjQ0IDEyLjUgNy43NSAxMi41IDYuNSAxMS45NCA2LjUgMTEuMjUgNy4wNiAxMCA3Ljc1IDEwTTEyLjI1IDE3QzExLjU2IDE3IDExIDE2LjQ0IDExIDE1Ljc1UzExLjU2IDE0LjUgMTIuMjUgMTQuNSAxMy41IDE1LjA2IDEzLjUgMTUuNzUgMTIuOTQgMTcgMTIuMjUgMTdNNy41MyAxNy4wM0w2LjQ3IDE1Ljk3TDEyLjQ3IDkuOTdMMTMuNTMgMTEuMDNMNy41MyAxNy4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlclBsdXMgPSBcIk0xMiAxOEMxMiAxOC43IDEyLjEyIDE5LjM2IDEyLjM0IDIwQzEyLjIzIDIwIDEyLjEyIDIwIDEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTAgMTIgMy4yNSAxMiAzLjI1UzE2LjMxIDguMSAxNy42MiAxMkMxNC41IDEyLjIyIDEyIDE0LjgyIDEyIDE4TTE5IDE3VjE0SDE3VjE3SDE0VjE5SDE3VjIySDE5VjE5SDIyVjE3SDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyUGx1c091dGxpbmUgPSBcIk0xMiAxOEMxMiAxOC43IDEyLjEyIDE5LjM2IDEyLjM0IDIwQzEyLjIzIDIwIDEyLjEyIDIwIDEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTAgMTIgMy4yNSAxMiAzLjI1UzE2LjMxIDguMSAxNy42MiAxMkMxNi45MyAxMi4wNiAxNi4yOCAxMi4yMiAxNS42NyAxMi40N0MxNSAxMC42OCAxMy41IDguMzMgMTIgNi4zOUMxMCA4Ljk2IDggMTIuMjMgOCAxNEM4IDE2LjIxIDkuNzkgMTggMTIgMThNMTkgMTdWMTRIMTdWMTdIMTRWMTlIMTdWMjJIMTlWMTlIMjJWMTdIMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJQb2xvID0gXCJNMjAgMTZIMjJWMThIMjBDMTguNiAxOCAxNy4yIDE3LjYgMTYgMTdDMTMuNSAxOC4zIDEwLjUgMTguMyA4IDE3QzYuOCAxNy42IDUuNCAxOCA0IDE4SDJWMTZINEM1LjQgMTYgNi44IDE1LjUgOCAxNC43QzEwLjQgMTYuNCAxMy42IDE2LjQgMTYgMTQuN0MxNy4yIDE1LjUgMTguNiAxNiAyMCAxNk0xMyAxMC42QzEzLjYgMTAuMyAxNC4zIDEwIDE1IDkuOVYxMC4yQzE1LjMgMTEuMiAxNS4zIDEyLjEgMTUuMiAxMy4xQzE0LjMgMTMuNiAxMy4yIDEzLjkgMTIuMiAxMy45QzEyLjcgMTIuOSAxMyAxMS43IDEzIDEwLjZNMTIuOSAzLjZDMTEuNSA0IDEwLjMgNC43IDkuMyA1LjdDOC45IDQuNyA4LjcgMy43IDguNyAyLjdDMTAuOSAxLjcgMTMuNCAxLjggMTUuNiAyLjlDMTUuOSAzIDE2LjIgMy4xIDE2LjQgMy4zQzE1LjIgMy4yIDE0IDMuMyAxMi45IDMuNk02LjggMTMuM0M2LjIgMTMuNiA1LjYgMTMuOCA1IDEzLjlDNC4zIDEyLjYgNCAxMS4yIDQgOS44QzQuNSAxMC44IDUuMiAxMS44IDYgMTIuNkM2LjMgMTIuOCA2LjUgMTMuMSA2LjggMTMuM00xOSAxMy45QzE4LjQgMTMuOCAxNy44IDEzLjYgMTcuMyAxMy40QzE3LjUgMTIuMiAxNy40IDExIDE3LjEgOS44QzE4LjIgOS45IDE5LjIgMTAuMiAyMC4xIDEwLjhDMjAgMTEuOCAxOS43IDEyLjcgMTkuMiAxMy42TDE5IDEzLjlNNy40IDExLjJDNi4yIDEwLjEgNS41IDguNSA1LjIgNi45TDUuMSA2QzUuNiA1LjIgNi4xIDQuNiA2LjggNEM2LjkgNS40IDcuNCA2LjcgOC4yIDcuOEM4LjkgOC45IDkuOSA5LjkgMTEgMTAuNUMxMSAxMS4zIDEwLjggMTIuMSAxMC41IDEyLjlDOS4zIDEyLjYgOC4zIDEyIDcuNCAxMS4yTTEzLjUgNS41QzE1IDUuMSAxNi43IDUuMiAxOC4yIDUuN0wxOSA2LjFDMTkuNCA2LjggMTkuNiA3LjYgMTkuOCA4LjRDMTcuMyA3LjMgMTQuNCA3LjUgMTIgOC44QzExLjMgOC41IDEwLjggOCAxMC4zIDcuNEwxMC40IDcuM0MxMS4zIDYuNSAxMi4zIDUuOCAxMy41IDUuNU0xNiAxOC43QzE3LjIgMTkuNSAxOC42IDIwIDIwIDIwSDIyVjIySDIwQzE4LjYgMjIgMTcuMiAyMS42IDE2IDIxQzEzLjUgMjIuMyAxMC41IDIyLjMgOCAyMUM2LjggMjEuNiA1LjQgMjIgNCAyMkgyVjIwSDRDNS40IDIwIDYuOCAxOS41IDggMTguN0MxMC40IDIwLjQgMTMuNiAyMC40IDE2IDE4LjdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJQdW1wID0gXCJNMTksMTQuNUMxOSwxNC41IDIxLDE2LjY3IDIxLDE4QTIsMiAwIDAsMSAxOSwyMEEyLDIgMCAwLDEgMTcsMThDMTcsMTYuNjcgMTksMTQuNSAxOSwxNC41TTUsMThWOUEyLDIgMCAwLDEgMyw3QTIsMiAwIDAsMSA1LDVWNEEyLDIgMCAwLDEgNywySDlBMiwyIDAgMCwxIDExLDRWNUgxOUEyLDIgMCAwLDEgMjEsN1Y5TDIxLDExQTEsMSAwIDAsMSAyMiwxMkExLDEgMCAwLDEgMjEsMTNIMTdBMSwxIDAgMCwxIDE2LDEyQTEsMSAwIDAsMSAxNywxMVY5SDExVjE4SDEyQTIsMiAwIDAsMSAxNCwyMFYyMkgyVjIwQTIsMiAwIDAsMSA0LDE4SDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJQdW1wT2ZmID0gXCJNNS43IDIuNUEyIDIgMCAwIDEgNyAySDlBMiAyIDAgMCAxIDExIDRWNUgxOUEyIDIgMCAwIDEgMjEgN1YxMUExIDEgMCAwIDEgMjEgMTNIMTdBMSAxIDAgMCAxIDE3IDExVjlIMTIuMk0yMC44NCAyMi43M0wyMi4xMSAyMS40NkwxMSAxMC4zNEwyLjM5IDEuNzNMMS4xMSAzTDMuNjUgNS41NEEyIDIgMCAwIDAgNSA5VjE4SDRBMiAyIDAgMCAwIDIgMjBWMjJIMTRWMjBBMiAyIDAgMCAwIDEyIDE4SDExVjEyLjg5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyUmVtb3ZlID0gXCJNMTIgMThDMTIgMTguNyAxMi4xMiAxOS4zNiAxMi4zNCAyMEMxMi4yMyAyMCAxMi4xMiAyMCAxMiAyMEM4LjY5IDIwIDYgMTcuMzEgNiAxNEM2IDEwIDEyIDMuMjUgMTIgMy4yNVMxNi4zMSA4LjEgMTcuNjIgMTJDMTQuNSAxMi4yMiAxMiAxNC44MiAxMiAxOE0yMS41NCAxNS44OEwyMC4xMyAxNC40N0wxOCAxNi41OUwxNS44OCAxNC40N0wxNC40NyAxNS44OEwxNi41OSAxOEwxNC40NyAyMC4xMkwxNS44OCAyMS41M0wxOCAxOS40MUwyMC4xMiAyMS41M0wyMS41MyAyMC4xMkwxOS40MSAxOEwyMS41NCAxNS44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlclJlbW92ZU91dGxpbmUgPSBcIk0xMiAxOEMxMiAxOC43IDEyLjEyIDE5LjM2IDEyLjM0IDIwQzEyLjIzIDIwIDEyLjEyIDIwIDEyIDIwQzguNjkgMjAgNiAxNy4zMSA2IDE0QzYgMTAgMTIgMy4yNSAxMiAzLjI1UzE2LjMxIDguMSAxNy42MiAxMkMxNi45MyAxMi4wNiAxNi4yOCAxMi4yMiAxNS42NyAxMi40N0MxNSAxMC42OCAxMy41IDguMzMgMTIgNi4zOUMxMCA4Ljk2IDggMTIuMjMgOCAxNEM4IDE2LjIxIDkuNzkgMTggMTIgMThNMjEuNTQgMTUuODhMMjAuMTMgMTQuNDdMMTggMTYuNTlMMTUuODggMTQuNDdMMTQuNDcgMTUuODhMMTYuNTkgMThMMTQuNDcgMjAuMTJMMTUuODggMjEuNTNMMTggMTkuNDFMMjAuMTIgMjEuNTNMMjEuNTMgMjAuMTJMMTkuNDEgMThMMjEuNTQgMTUuODhaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F0ZXJXZWxsID0gXCJNMjIgMTZIMlYxOEg0VjIySDIwVjE4SDIyVjE2TTEwLjQ0IDE1QzEwLjE5IDE1IDEwIDE0LjgxIDkuOTUgMTQuNTZMOS41NyAxMS41NkM5LjU3IDExLjU0IDkuNTcgMTEuNSA5LjU3IDExLjVDOS41NyAxMS4yMiA5Ljc5IDExIDEwLjA3IDExSDEzLjkzQzEzLjk1IDExIDEzLjk3IDExIDE0IDExQzE0LjI3IDExLjA0IDE0LjQ2IDExLjI5IDE0LjQzIDExLjU2TDE0LjA1IDE0LjU2QzE0IDE0LjgxIDEzLjgxIDE1IDEzLjU2IDE1SDEwLjQ0TTE5IDJMMjEuNTYgNi42OEMyMS42IDYuNzggMjEuNjEgNi44OSAyMS42MSA3QzIxLjYxIDcuNTYgMjEuMTYgOCAyMC42MSA4SDE5VjE1SDE3VjhIMTNWMTBIMTFWOEg3VjE1SDVWOEgzLjYyQzMuNDYgOCAzLjMxIDcuOTYgMy4xNiA3Ljg5QzIuNjcgNy42NCAyLjQ3IDcuMDQgMi43MiA2LjU1TDUgMkgxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlcldlbGxPdXRsaW5lID0gXCJNMy42MiA4SDVWMTVIN1Y4SDExVjEwSDEzVjhIMTdWMTVIMTlWOEgyMC42MUMyMS4xNiA4IDIxLjYxIDcuNTYgMjEuNjEgN0MyMS42MSA2Ljg5IDIxLjYgNi43OCAyMS41NiA2LjY4TDE5IDJINUwyLjcyIDYuNTVDMi40NyA3LjA0IDIuNjcgNy42NCAzLjE2IDcuODlDMy4zMSA3Ljk2IDMuNDYgOCAzLjYyIDhNNi4yNCA0SDE3Ljc2TDE4Ljc2IDZINS4yNEw2LjI0IDRNMiAxNlYxOEg0VjIySDIwVjE4SDIyVjE2SDJNMTggMjBINlYxOEgxOFYyME0xMy45MyAxMUMxNC4yMSAxMSAxNC40MyAxMS4yMiAxNC40MyAxMS41QzE0LjQzIDExLjUgMTQuNDMgMTEuNTQgMTQuNDMgMTEuNTZMMTQuMDUgMTQuNTZDMTQgMTQuODEgMTMuODEgMTUgMTMuNTYgMTVIMTAuNDRDMTAuMTkgMTUgMTAgMTQuODEgOS45NSAxNC41Nkw5LjU3IDExLjU2QzkuNTQgMTEuMjkgOS43MyAxMS4wNCAxMCAxMUMxMC4wMyAxMSAxMC4wNSAxMSAxMC4wNyAxMUgxMy45M1pcIjtcclxuZXhwb3J0IHZhciBtZGlXYXRlcmluZ0NhbiA9IFwiTTE4LjUgNy40N0MxNy43NiA4LjIgMTcuNTcgOS4yNSAxNy45MiAxMC4xNUwxNSAxMy4wN1YxMUMxNSAxMC40NSAxNC41NSAxMCAxNCAxMEgxMi45N0MxMyA5LjgzIDEzIDkuNjcgMTMgOS41QzEzIDYuNDYgMTAuNTQgNCA3LjUgNFMyIDYuNDYgMiA5LjVDMiAxMS4yMSAyLjc4IDEyLjczIDQgMTMuNzRWMjBDNCAyMC41NSA0LjQ1IDIxIDUgMjFIMTRDMTQuNTUgMjEgMTUgMjAuNTUgMTUgMjBWMTUuODlMMTkuMzMgMTEuNTZDMjAuMjMgMTEuOTEgMjEuMjggMTEuNzMgMjIgMTFMMTguNSA3LjQ3TTQuMDUgMTBDNC4wMyA5LjgzIDQgOS42NyA0IDkuNUM0IDcuNTcgNS41NyA2IDcuNSA2UzExIDcuNTcgMTEgOS41QzExIDkuNjcgMTAuOTcgOS44MyAxMC45NSAxMEg0LjA1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVyaW5nQ2FuT3V0bGluZSA9IFwiTTE4LjUgNy40N0MxNy43NiA4LjIgMTcuNTcgOS4yNSAxNy45MiAxMC4xNUwxNSAxMy4wN1YxMUMxNSAxMC40NSAxNC41NSAxMCAxNCAxMEgxMi45N0MxMyA5LjgzIDEzIDkuNjcgMTMgOS41QzEzIDYuNDYgMTAuNTQgNCA3LjUgNFMyIDYuNDYgMiA5LjVDMiAxMS4yMSAyLjc4IDEyLjczIDQgMTMuNzRWMjBDNCAyMC41NSA0LjQ1IDIxIDUgMjFIMTRDMTQuNTUgMjEgMTUgMjAuNTUgMTUgMjBWMTUuODlMMTkuMzMgMTEuNTZDMjAuMjMgMTEuOTEgMjEuMjggMTEuNzMgMjIgMTFMMTguNSA3LjQ3TTQuMDUgMTBDNC4wMyA5LjgzIDQgOS42NyA0IDkuNUM0IDcuNTcgNS41NyA2IDcuNSA2UzExIDcuNTcgMTEgOS41QzExIDkuNjcgMTAuOTcgOS44MyAxMC45NSAxME0xMyAxOUg2VjEySDEzVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdGVybWFyayA9IFwiTTIxLDNIM0EyLDIgMCAwLDAgMSw1VjE5QTIsMiAwIDAsMCAzLDIxSDIxQTIsMiAwIDAsMCAyMywxOVY1QTIsMiAwIDAsMCAyMSwzTTIxLDE5SDEyVjEzSDIxVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdmUgPSBcIk0yMCwxMkMxOC42MSwxMiAxNy4yMiwxMS41MyAxNiwxMC42N0MxMy41NiwxMi4zOCAxMC40NCwxMi4zOCA4LDEwLjY3QzYuNzgsMTEuNTMgNS4zOSwxMiA0LDEySDJWMTRINEM1LjM3LDE0IDYuNzQsMTMuNjUgOCwxM0MxMC41LDE0LjMgMTMuNSwxNC4zIDE2LDEzQzE3LjI2LDEzLjY1IDE4LjYyLDE0IDIwLDE0SDIyVjEyXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F2ZWZvcm0gPSBcIk0yMiAxMkwyMCAxM0wxOSAxNEwxOCAxM0wxNyAxNkwxNiAxM0wxNSAyMUwxNCAxM0wxMyAxNUwxMiAxM0wxMSAxN0wxMCAxM0w5IDIyTDggMTNMNyAxOUw2IDEzTDUgMTRMNCAxM0wyIDEyTDQgMTFMNSAxMEw2IDExTDcgNUw4IDExTDkgMkwxMCAxMUwxMSA3TDEyIDExTDEzIDlMMTQgMTFMMTUgM0wxNiAxMUwxNyA4TDE4IDExTDE5IDEwTDIwIDExTDIyIDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdhdmVzID0gXCJNMjAsMTJIMjJWMTRIMjBDMTguNjIsMTQgMTcuMjYsMTMuNjUgMTYsMTNDMTMuNSwxNC4zIDEwLjUsMTQuMyA4LDEzQzYuNzQsMTMuNjUgNS4zNywxNCA0LDE0SDJWMTJINEM1LjM5LDEyIDYuNzgsMTEuNTMgOCwxMC42N0MxMC40NCwxMi4zOCAxMy41NiwxMi4zOCAxNiwxMC42N0MxNy4yMiwxMS41MyAxOC42MSwxMiAyMCwxMk0yMCw2SDIyVjhIMjBDMTguNjIsOCAxNy4yNiw3LjY1IDE2LDdDMTMuNSw4LjMgMTAuNSw4LjMgOCw3QzYuNzQsNy42NSA1LjM3LDggNCw4SDJWNkg0QzUuMzksNiA2Ljc4LDUuNTMgOCw0LjY3QzEwLjQ0LDYuMzggMTMuNTYsNi4zOCAxNiw0LjY3QzE3LjIyLDUuNTMgMTguNjEsNiAyMCw2TTIwLDE4SDIyVjIwSDIwQzE4LjYyLDIwIDE3LjI2LDE5LjY1IDE2LDE5QzEzLjUsMjAuMyAxMC41LDIwLjMgOCwxOUM2Ljc0LDE5LjY1IDUuMzcsMjAgNCwyMEgyVjE4SDRDNS4zOSwxOCA2Ljc4LDE3LjUzIDgsMTYuNjdDMTAuNDQsMTguMzggMTMuNTYsMTguMzggMTYsMTYuNjdDMTcuMjIsMTcuNTMgMTguNjEsMTggMjAsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2F6ZSA9IFwiTTIwLjU0LDYuNjNDMjEuMjMsNy41NyAyMS42OSw4LjY3IDIxLjg5LDkuODJDMjIuMSwxMS4wNyAyMiwxMi4zNCAyMS41OCwxMy41NEMyMS4xOCwxNC43MSAyMC41LDE1Ljc2IDE5LjU4LDE2LjZDMTguOTEsMTcuMjQgMTguMTUsMTcuNzcgMTcuMzIsMTguMThDMTcuNzMsMTkuMjUgMTcuMTksMjAuNDUgMTYuMTIsMjAuODZDMTUuODgsMjAuOTUgMTUuNjMsMjEgMTUuMzgsMjFDMTQuMjcsMjEgMTMuMzUsMjAuMTEgMTMuMzEsMTlDMTMuMDUsMTkgMTAuNzMsMTkgMTAuMjQsMTlDMTAuMTMsMjAuMTQgOS4xMSwyMSA3Ljk3LDIwLjg3QzYuOTEsMjAuNzcgNi4xMSwxOS44OSA2LjA5LDE4LjgzQzYuMSwxOC42NCA2LjEzLDE4LjQ0IDYuMTksMTguMjZDNC42LDE3LjczIDMuMjEsMTYuNzQgMi4xOSwxNS40MUMxLjg2LDE0Ljk3IDEuOTYsMTQuMzQgMi40MiwxNEMyLjYsMTMuODYgMi44MiwxMy43OCAzLjA1LDEzLjc4QzMuNzcsMTMuNzggNC4wNSwxMy41MyA0LjIyLDEzLjE1QzQuNDYsMTIuNDMgNC42LDExLjY4IDQuNjEsMTAuOTJDNC42NCwxMC4zOSA0LjcsOS44NyA0Ljc4LDkuMzVDNS4xMyw3LjYyIDYuMSw2LjA3IDcuNSw1QzkuMTYsMy43IDExLjE5LDMgMTMuMjksM0MxNC43MiwzIDE2LjEzLDMuMzUgMTcuNCw0QzE4LjY0LDQuNjIgMTkuNzEsNS41IDIwLjU0LDYuNjNNMTYuNzIsMTcuMzFDMTguNSwxNi41IDE5LjksMTUuMDQgMjAuNTksMTMuMjFDMjIuMjEsOC4yNyAxOCw0LjA1IDEzLjI5LDQuMDVDMTIuOTQsNC4wNSAxMi41OCw0LjA3IDEyLjIzLDQuMTJDOS4zNiw0LjUgNi40LDYuNSA1LjgxLDkuNUM1LjQzLDExLjUgNiwxNC43OSAzLjA1LDE0Ljc5QzQsMTYgNS4zMiwxNi45MyA2LjgxLDE3LjM3QzcuNjYsMTYuNjEgOC45NywxNi42OSA5Ljc0LDE3LjU1QzkuODUsMTcuNjcgOS45NCwxNy44IDEwLDE3Ljk0QzEwLjU5LDE3Ljk0IDEzLjIsMTcuOTQgMTMuNTUsMTcuOTRDMTQuMDcsMTYuOTIgMTUuMzMsMTYuNSAxNi4zNSwxNy4wNEMxNi41LDE3LjEyIDE2LjYsMTcuMjEgMTYuNzIsMTcuMzFNMTAuOTcsMTAuMzFDMTAuMzksMTAuMzQgOS44OCw5LjkgOS44NSw5LjMxQzkuODIsOC43MyAxMC4yNyw4LjIzIDEwLjg1LDguMTlDMTEuNDMsOC4xNiAxMS45NCw4LjYxIDExLjk3LDkuMjVDMTIsOS44IDExLjU2LDEwLjI3IDExLDEwLjI5TDEwLjk3LDEwLjMxTTE1LjY2LDEwLjMxQzE1LjA4LDEwLjM0IDE0LjU3LDkuOSAxNC41NCw5LjMxQzE0LjUsOC43MyAxNC45Niw4LjIzIDE1LjU0LDguMTlDMTYuMTIsOC4xNiAxNi42Myw4LjYxIDE2LjY2LDkuMjVDMTYuNjgsOS44IDE2LjI1LDEwLjI3IDE1LjY2LDEwLjI5VjEwLjMxTTkuNzEsMTIuMDdDOS42NSwxMS43OSA5Ljg0LDExLjUgMTAuMTIsMTEuNDVDMTAuNCwxMS40IDEwLjY4LDExLjU4IDEwLjc0LDExLjg2VjExLjg2QzExLjA5LDEyLjk3IDEyLjE2LDEzLjY5IDEzLjMyLDEzLjZDMTQuNDYsMTMuNjYgMTUuNSwxMi45NiAxNS44OSwxMS44OEMxNi4wMywxMS42MiAxNi4zNSwxMS41IDE2LjYsMTEuNjVDMTYuNzgsMTEuNzUgMTYuODksMTEuOTIgMTYuODksMTIuMTJDMTYuNywxMi44MyAxNi4yNiwxMy40NSAxNS42NiwxMy44OEMxNC45NywxNC4zNiAxNC4xNiwxNC42MyAxMy4zMiwxNC42NEgxMy4yMUMxMS41OCwxNC43MSAxMC4xMSwxMy42NCA5LjY4LDEyLjA2TDkuNzEsMTIuMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlckNsb3VkeSA9IFwiTTYsMTlBNSw1IDAgMCwxIDEsMTRBNSw1IDAgMCwxIDYsOUM3LDYuNjUgOS4zLDUgMTIsNUMxNS40Myw1IDE4LjI0LDcuNjYgMTguNSwxMS4wM0wxOSwxMUE0LDQgMCAwLDEgMjMsMTVBNCw0IDAgMCwxIDE5LDE5SDZNMTksMTNIMTdWMTJBNSw1IDAgMCwwIDEyLDdDOS41LDcgNy40NSw4LjgyIDcuMDYsMTEuMTlDNi43MywxMS4wNyA2LjM3LDExIDYsMTFBMywzIDAgMCwwIDMsMTRBMywzIDAgMCwwIDYsMTdIMTlBMiwyIDAgMCwwIDIxLDE1QTIsMiAwIDAsMCAxOSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyQ2xvdWR5QWxlcnQgPSBcIk02LDE5QTUsNSAwIDAsMSAxLDE0QTUsNSAwIDAsMSA2LDlDNyw2LjY1IDkuMyw1IDEyLDVDMTUuNDMsNSAxOC4yNCw3LjY2IDE4LjUsMTEuMDNMMTksMTFBNCw0IDAgMCwxIDIzLDE1QTQsNCAwIDAsMSAxOSwxOUg2TTE5LDEzSDE3VjEyQTUsNSAwIDAsMCAxMiw3QzkuNSw3IDcuNDUsOC44MiA3LjA2LDExLjE5QzYuNzMsMTEuMDcgNi4zNywxMSA2LDExQTMsMyAwIDAsMCAzLDE0QTMsMyAwIDAsMCA2LDE3SDE5QTIsMiAwIDAsMCAyMSwxNUEyLDIgMCAwLDAgMTksMTNNMTMsMTJIMTFWOEgxM1YxMk0xMywxNkgxMVYxNEgxM1wiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJDbG91ZHlBcnJvd1JpZ2h0ID0gXCJNNiw3TDYuNjksNy4wNkM3LjMyLDQuNzIgOS40NiwzIDEyLDNBNS41LDUuNSAwIDAsMSAxNy41LDguNUwxNy40Miw5LjQ1QzE3Ljg4LDkuMTYgMTguNDIsOSAxOSw5QTMsMyAwIDAsMSAyMiwxMkEzLDMgMCAwLDEgMTksMTVINkE0LDQgMCAwLDEgMiwxMUE0LDQgMCAwLDEgNiw3TTYsOUEyLDIgMCAwLDAgNCwxMUEyLDIgMCAwLDAgNiwxM0gxOUExLDEgMCAwLDAgMjAsMTJBMSwxIDAgMCwwIDE5LDExSDE1LjVWOC41QTMuNSwzLjUgMCAwLDAgMTIsNUEzLjUsMy41IDAgMCwwIDguNSw4LjVWOUg2TTIyLDE5TDE5LDIyVjIwSDJWMThIMTlWMTZMMjIsMTlcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyRm9nID0gXCJNMywxNUgxM0ExLDEgMCAwLDEgMTQsMTZBMSwxIDAgMCwxIDEzLDE3SDNBMSwxIDAgMCwxIDIsMTZBMSwxIDAgMCwxIDMsMTVNMTYsMTVIMjFBMSwxIDAgMCwxIDIyLDE2QTEsMSAwIDAsMSAyMSwxN0gxNkExLDEgMCAwLDEgMTUsMTZBMSwxIDAgMCwxIDE2LDE1TTEsMTJBNSw1IDAgMCwxIDYsN0M3LDQuNjUgOS4zLDMgMTIsM0MxNS40MywzIDE4LjI0LDUuNjYgMTguNSw5LjAzTDE5LDlDMjEuMTksOSAyMi45NywxMC43NiAyMywxM0gyMUEyLDIgMCAwLDAgMTksMTFIMTdWMTBBNSw1IDAgMCwwIDEyLDVDOS41LDUgNy40NSw2LjgyIDcuMDYsOS4xOUM2LjczLDkuMDcgNi4zNyw5IDYsOUEzLDMgMCAwLDAgMywxMkMzLDEyLjM1IDMuMDYsMTIuNjkgMy4xNywxM0gxLjFMMSwxMk0zLDE5SDVBMSwxIDAgMCwxIDYsMjBBMSwxIDAgMCwxIDUsMjFIM0ExLDEgMCAwLDEgMiwyMEExLDEgMCAwLDEgMywxOU04LDE5SDIxQTEsMSAwIDAsMSAyMiwyMEExLDEgMCAwLDEgMjEsMjFIOEExLDEgMCAwLDEgNywyMEExLDEgMCAwLDEgOCwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVySGFpbCA9IFwiTTYsMTRBMSwxIDAgMCwxIDcsMTVBMSwxIDAgMCwxIDYsMTZBNSw1IDAgMCwxIDEsMTFBNSw1IDAgMCwxIDYsNkM3LDMuNjUgOS4zLDIgMTIsMkMxNS40MywyIDE4LjI0LDQuNjYgMTguNSw4LjAzTDE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkgxOEExLDEgMCAwLDEgMTcsMTVBMSwxIDAgMCwxIDE4LDE0SDE5QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBIMTdWOUE1LDUgMCAwLDAgMTIsNEM5LjUsNCA3LjQ1LDUuODIgNy4wNiw4LjE5QzYuNzMsOC4wNyA2LjM3LDggNiw4QTMsMyAwIDAsMCAzLDExQTMsMyAwIDAsMCA2LDE0TTEwLDE4QTIsMiAwIDAsMSAxMiwyMEEyLDIgMCAwLDEgMTAsMjJBMiwyIDAgMCwxIDgsMjBBMiwyIDAgMCwxIDEwLDE4TTE0LjUsMTZBMS41LDEuNSAwIDAsMSAxNiwxNy41QTEuNSwxLjUgMCAwLDEgMTQuNSwxOUExLjUsMS41IDAgMCwxIDEzLDE3LjVBMS41LDEuNSAwIDAsMSAxNC41LDE2TTEwLjUsMTJBMS41LDEuNSAwIDAsMSAxMiwxMy41QTEuNSwxLjUgMCAwLDEgMTAuNSwxNUExLjUsMS41IDAgMCwxIDksMTMuNUExLjUsMS41IDAgMCwxIDEwLjUsMTJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlckhhenkgPSBcIk0xMiwyTDE0LjM5LDUuNDJDMTMuNjUsNS4xNSAxMi44NCw1IDEyLDVDMTEuMTYsNSAxMC4zNSw1LjE1IDkuNjEsNS40MkwxMiwyTTMuMzQsN0w3LjUsNi42NUM2LjksNy4xNiA2LjM2LDcuNzggNS45NCw4LjVDNS41LDkuMjQgNS4yNSwxMCA1LjExLDEwLjc5TDMuMzQsN00yMC42NSw3TDE4Ljg4LDEwLjc5QzE4Ljc0LDEwIDE4LjQ3LDkuMjMgMTguMDUsOC41QzE3LjYzLDcuNzggMTcuMSw3LjE1IDE2LjUsNi42NE0xNCwxNUExLDEgMCAwLDAgMTMsMTRIM0ExLDEgMCAwLDAgMiwxNUExLDEgMCAwLDAgMywxNkgxM0ExLDEgMCAwLDAgMTQsMTVNMjIsMTVBMSwxIDAgMCwwIDIxLDE0SDE3QTEsMSAwIDAsMCAxNiwxNUExLDEgMCAwLDAgMTcsMTZIMjFBMSwxIDAgMCwwIDIyLDE1TTEwLDE5QTEsMSAwIDAsMCAxMSwyMEgyMEExLDEgMCAwLDAgMjEsMTlBMSwxIDAgMCwwIDIwLDE4SDExQTEsMSAwIDAsMCAxMCwxOU0zLDE5QTEsMSAwIDAsMCA0LDIwSDdBMSwxIDAgMCwwIDgsMTlBMSwxIDAgMCwwIDcsMThINEExLDEgMCAwLDAgMywxOU0xMiw5QTMsMyAwIDAsMSAxNSwxMkgxN0E1LDUgMCAwLDAgMTIsN0E1LDUgMCAwLDAgNywxMkg5QTMsMyAwIDAsMSAxMiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJIdXJyaWNhbmUgPSBcIk0xNSw2Ljc5QzE2Ljg2LDcuODYgMTgsOS44NSAxOCwxMkMxOCwyMiA2LDIyIDYsMjJDNy4yNSwyMS4wNiA4LjM4LDE5Ljk1IDkuMzQsMTguNzFDOS4zOCwxOC42NiA5LjQxLDE4LjYxIDkuNDQsMTguNTVDOS42OSwxOC4wNiA5LjUsMTcuNDYgOSwxNy4yMUM3LjE0LDE2LjE0IDYsMTQuMTUgNiwxMkM2LDIgMTgsMiAxOCwyQzE2Ljc1LDIuOTQgMTUuNjIsNC4wNSAxNC42Niw1LjI5QzE0LjYyLDUuMzQgMTQuNTksNS4zOSAxNC41Niw1LjQ1QzE0LjMxLDUuOTQgMTQuNSw2LjU0IDE1LDYuNzlNMTIsMTRBMiwyIDAgMCwwIDE0LDEyQTIsMiAwIDAsMCAxMiwxMEEyLDIgMCAwLDAgMTAsMTJBMiwyIDAgMCwwIDEyLDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJMaWdodG5pbmcgPSBcIk02LDE2QTUsNSAwIDAsMSAxLDExQTUsNSAwIDAsMSA2LDZDNywzLjY1IDkuMywyIDEyLDJDMTUuNDMsMiAxOC4yNCw0LjY2IDE4LjUsOC4wM0wxOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZIMThBMSwxIDAgMCwxIDE3LDE1QTEsMSAwIDAsMSAxOCwxNEgxOUEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwSDE3VjlBNSw1IDAgMCwwIDEyLDRDOS41LDQgNy40NSw1LjgyIDcuMDYsOC4xOUM2LjczLDguMDcgNi4zNyw4IDYsOEEzLDMgMCAwLDAgMywxMUEzLDMgMCAwLDAgNiwxNEg3QTEsMSAwIDAsMSA4LDE1QTEsMSAwIDAsMSA3LDE2SDZNMTIsMTFIMTVMMTMsMTVIMTVMMTEuMjUsMjJMMTIsMTdIOS41TDEyLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJMaWdodG5pbmdSYWlueSA9IFwiTTQuNSwxMy41OUM1LDEzLjg3IDUuMTQsMTQuNSA0Ljg3LDE0Ljk2QzQuNTksMTUuNDQgNCwxNS42IDMuNSwxNS4zM1YxNS4zM0MyLDE0LjQ3IDEsMTIuODUgMSwxMUE1LDUgMCAwLDEgNiw2QzcsMy42NSA5LjMsMiAxMiwyQzE1LjQzLDIgMTguMjQsNC42NiAxOC41LDguMDNMMTksOEE0LDQgMCAwLDEgMjMsMTJBNCw0IDAgMCwxIDE5LDE2QTEsMSAwIDAsMSAxOCwxNUExLDEgMCAwLDEgMTksMTRBMiwyIDAgMCwwIDIxLDEyQTIsMiAwIDAsMCAxOSwxMEgxN1Y5QTUsNSAwIDAsMCAxMiw0QzkuNSw0IDcuNDUsNS44MiA3LjA2LDguMTlDNi43Myw4LjA3IDYuMzcsOCA2LDhBMywzIDAgMCwwIDMsMTFDMywxMi4xMSAzLjYsMTMuMDggNC41LDEzLjZWMTMuNTlNOS41LDExSDEyLjVMMTAuNSwxNUgxMi41TDguNzUsMjJMOS41LDE3SDdMOS41LDExTTE3LjUsMTguNjdDMTcuNSwxOS45NiAxNi41LDIxIDE1LjI1LDIxQzE0LDIxIDEzLDE5Ljk2IDEzLDE4LjY3QzEzLDE3LjEyIDE1LjI1LDE0LjUgMTUuMjUsMTQuNUMxNS4yNSwxNC41IDE3LjUsMTcuMTIgMTcuNSwxOC42N1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyTmlnaHQgPSBcIk0xNy43NSw0LjA5TDE1LjIyLDYuMDNMMTYuMTMsOS4wOUwxMy41LDcuMjhMMTAuODcsOS4wOUwxMS43OCw2LjAzTDkuMjUsNC4wOUwxMi40NCw0TDEzLjUsMUwxNC41Niw0TDE3Ljc1LDQuMDlNMjEuMjUsMTFMMTkuNjEsMTIuMjVMMjAuMiwxNC4yM0wxOC41LDEzLjA2TDE2LjgsMTQuMjNMMTcuMzksMTIuMjVMMTUuNzUsMTFMMTcuODEsMTAuOTVMMTguNSw5TDE5LjE5LDEwLjk1TDIxLjI1LDExTTE4Ljk3LDE1Ljk1QzE5LjgsMTUuODcgMjAuNjksMTcuMDUgMjAuMTYsMTcuOEMxOS44NCwxOC4yNSAxOS41LDE4LjY3IDE5LjA4LDE5LjA3QzE1LjE3LDIzIDguODQsMjMgNC45NCwxOS4wN0MxLjAzLDE1LjE3IDEuMDMsOC44MyA0Ljk0LDQuOTNDNS4zNCw0LjUzIDUuNzYsNC4xNyA2LjIxLDMuODVDNi45NiwzLjMyIDguMTQsNC4yMSA4LjA2LDUuMDRDNy43OSw3LjkgOC43NSwxMC44NyAxMC45NSwxMy4wNkMxMy4xNCwxNS4yNiAxNi4xLDE2LjIyIDE4Ljk3LDE1Ljk1TTE3LjMzLDE3Ljk3QzE0LjUsMTcuODEgMTEuNywxNi42NCA5LjUzLDE0LjVDNy4zNiwxMi4zMSA2LjIsOS41IDYuMDQsNi42OEMzLjIzLDkuODIgMy4zNCwxNC42NCA2LjM1LDE3LjY2QzkuMzcsMjAuNjcgMTQuMTksMjAuNzggMTcuMzMsMTcuOTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlck5pZ2h0UGFydGx5Q2xvdWR5ID0gXCJNMjIsMTAuMjhDMjEuNzQsMTAuMyAyMS41LDEwLjMxIDIxLjI2LDEwLjMxQzE5LjMyLDEwLjMxIDE3LjM5LDkuNTcgMTUuOTEsOC4wOUMxNC4yNSw2LjQ0IDEzLjUsNC4xOSAxMy43MiwyQzEzLjc3LDEuNTMgMTMuMjIsMSAxMi43MSwxQzEyLjU3LDEgMTIuNDQsMS4wNCAxMi4zMiwxLjEyQzEyLDEuMzYgMTEuNjYsMS42NCAxMS4zNiwxLjk0QzkuMDUsNC4yNCA4LjU1LDcuNjYgOS44NCwxMC40NkM4LjMxLDExLjExIDcuMTMsMTIuNDMgNi42OSwxNC4wNkw2LDE0QTQsNCAwIDAsMCAyLDE4QTQsNCAwIDAsMCA2LDIySDE5QTMsMyAwIDAsMCAyMiwxOUEzLDMgMCAwLDAgMTksMTZDMTguNDIsMTYgMTcuODgsMTYuMTYgMTcuNDIsMTYuNDVMMTcuNSwxNS41QzE3LjUsMTUuMjggMTcuNSwxNS4wNSAxNy40NiwxNC44M0MxOS4xNCwxNC42NyAyMC43NywxMy45NCAyMi4wNiwxMi42NEMyMi4zOCwxMi4zNCAyMi42NCwxMiAyMi44OCwxMS42OEMyMy4yNywxMS4xMyAyMi42NSwxMC4yOCAyMi4wNCwxMC4yOE0xOSwxOEExLDEgMCAwLDEgMjAsMTlBMSwxIDAgMCwxIDE5LDIwSDZBMiwyIDAgMCwxIDQsMThBMiwyIDAgMCwxIDYsMTZIOC41VjE1LjVDOC41LDEzLjk0IDkuNTMsMTIuNjQgMTAuOTQsMTIuMThDMTEuMSwxMi4xMyAxMS4yNiwxMi4wOSAxMS40MywxMi4wNkMxMS42MSwxMi4wMyAxMS44LDEyIDEyLDEyQzEyLjIzLDEyIDEyLjQ1LDEyLjAzIDEyLjY2LDEyLjA3QzEyLjczLDEyLjA4IDEyLjgsMTIuMSAxMi44NywxMi4xM0MxMywxMi4xNiAxMy4xNSwxMi4yIDEzLjI4LDEyLjI1QzEzLjM2LDEyLjI4IDEzLjQ0LDEyLjMyIDEzLjUsMTIuMzZDMTMuNjMsMTIuNDEgMTMuNzQsMTIuNDcgMTMuODQsMTIuNTRDMTMuOTIsMTIuNTkgMTQsMTIuNjQgMTQuMDcsMTIuN0MxNC4xNywxMi43NyAxNC4yNSwxMi44NCAxNC4zNCwxMi45MkMxNC40MSwxMyAxNC41LDEzLjA1IDE0LjU1LDEzLjEyQzE0LjYzLDEzLjIgMTQuNjksMTMuMjkgMTQuNzYsMTMuMzdDMTQuODIsMTMuNDUgMTQuODksMTMuNTMgMTQuOTQsMTMuNjJDMTUsMTMuNzEgMTUuMDQsMTMuOCAxNS4wOSwxMy45QzE1LjE0LDE0IDE1LjIsMTQuMDggMTUuMjQsMTQuMThDMTUuNDEsMTQuNTkgMTUuNSwxNS4wMyAxNS41LDE1LjVWMThNMTYuODMsMTIuODZDMTUuOSwxMS4xNiAxNC4wOCwxMCAxMiwxMEgxMS44N0MxMS40MSw5LjE5IDExLjE0LDguMjYgMTEuMTQsNy4yOUMxMS4xNCw2LjMxIDExLjM5LDUuMzcgMTEuODYsNC41NUMxMi4yMSw2LjQxIDEzLjEyLDguMTQgMTQuNSw5LjVDMTUuODYsMTAuODggMTcuNTgsMTEuNzkgMTkuNDUsMTIuMTRDMTguNjYsMTIuNiAxNy43NiwxMi44NCAxNi44MywxMi44NlpcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUGFydGx5Q2xvdWR5ID0gXCJNMTIuNzQsNS40N0MxNS4xLDYuNSAxNi4zNSw5LjAzIDE1LjkyLDExLjQ2QzE3LjE5LDEyLjU2IDE4LDE0LjE5IDE4LDE2VjE2LjE3QzE4LjMxLDE2LjA2IDE4LjY1LDE2IDE5LDE2QTMsMyAwIDAsMSAyMiwxOUEzLDMgMCAwLDEgMTksMjJINkE0LDQgMCAwLDEgMiwxOEE0LDQgMCAwLDEgNiwxNEg2LjI3QzUsMTIuNDUgNC42LDEwLjI0IDUuNSw4LjI2QzYuNzIsNS41IDkuOTcsNC4yNCAxMi43NCw1LjQ3TTExLjkzLDcuM0MxMC4xNiw2LjUgOC4wOSw3LjMxIDcuMzEsOS4wN0M2Ljg1LDEwLjA5IDYuOTMsMTEuMjIgNy40MSwxMi4xM0M4LjUsMTAuODMgMTAuMTYsMTAgMTIsMTBDMTIuNywxMCAxMy4zOCwxMC4xMiAxNCwxMC4zNEMxMy45NCw5LjA2IDEzLjE4LDcuODYgMTEuOTMsNy4zTTEzLjU1LDMuNjRDMTMsMy40IDEyLjQ1LDMuMjMgMTEuODgsMy4xMkwxNC4zNywxLjgyTDE1LjI3LDQuNzFDMTQuNzYsNC4yOSAxNC4xOSwzLjkzIDEzLjU1LDMuNjRNNi4wOSw0LjQ0QzUuNiw0Ljc5IDUuMTcsNS4xOSA0LjgsNS42M0w0LjkxLDIuODJMNy44NywzLjVDNy4yNSwzLjcxIDYuNjUsNC4wMyA2LjA5LDQuNDRNMTgsOS43MUMxNy45MSw5LjEyIDE3Ljc4LDguNTUgMTcuNTksOEwxOS45Nyw5LjVMMTcuOTIsMTEuNzNDMTguMDMsMTEuMDggMTguMDUsMTAuNCAxOCw5LjcxTTMuMDQsMTEuM0MzLjExLDExLjkgMy4yNCwxMi40NyAzLjQzLDEzTDEuMDYsMTEuNUwzLjEsOS4yOEMzLDkuOTMgMi45NywxMC42MSAzLjA0LDExLjNNMTksMThIMTZWMTZBNCw0IDAgMCwwIDEyLDEyQTQsNCAwIDAsMCA4LDE2SDZBMiwyIDAgMCwwIDQsMThBMiwyIDAgMCwwIDYsMjBIMTlBMSwxIDAgMCwwIDIwLDE5QTEsMSAwIDAsMCAxOSwxOFpcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUGFydGx5TGlnaHRuaW5nID0gXCJNMTksMTVDMTguNjUsMTUgMTguMzEsMTUuMDYgMTgsMTUuMTdWMTVDMTgsMTMuMTkgMTcuMTksMTEuNTYgMTUuOTIsMTAuNDZDMTYuMzUsOC4wMyAxNS4xLDUuNSAxMi43NSw0LjQ3QzkuOTcsMy4yNCA2LjcyLDQuNSA1LjUsNy4yNUM0LjYsOS4yNCA1LDExLjQ1IDYuMjcsMTNINkE0LDQgMCAwLDAgMiwxN0E0LDQgMCAwLDAgNiwyMUg3QzcsMjEgOCwyMSA4LDIwQzgsMTkgNywxOSA3LDE5SDZBMiwyIDAgMCwxIDQsMTdBMiwyIDAgMCwxIDYsMTVIOEE0LDQgMCAwLDEgMTIsMTFBNCw0IDAgMCwxIDE2LDE1VjE3SDE5QTEsMSAwIDAsMSAyMCwxOEExLDEgMCAwLDEgMTksMTlIMTdDMTcsMTkgMTYsMTkgMTYsMjBDMTYsMjEgMTcsMjEgMTcsMjFIMTlBMywzIDAgMCwwIDIyLDE4QTMsMyAwIDAsMCAxOSwxNU0xMiw5QzEwLjE2LDkgOC41LDkuODMgNy40MSwxMS4xM0M2LjkzLDEwLjIyIDYuODUsOS4wOSA3LjMxLDguMDdDOC4wOSw2LjMxIDEwLjE2LDUuNSAxMS45Myw2LjNDMTMuMTgsNi44NiAxMy45NCw4LjA2IDE0LDkuMzRDMTMuMzgsOS4xMiAxMi43LDkgMTIsOU0xMy41NSwyLjYzQzEzLDIuNCAxMi40NSwyLjIzIDExLjg4LDIuMTJMMTQuMzcsMC44MkwxNS4yNywzLjcxQzE0Ljc2LDMuMjkgMTQuMTksMi45MyAxMy41NSwyLjYzTTYuMDksMy40NEM1LjYsMy43OSA1LjE3LDQuMTkgNC44LDQuNjNMNC45MSwxLjgyTDcuODcsMi41QzcuMjUsMi43MSA2LjY1LDMuMDMgNi4wOSwzLjQ0TTE4LDguNzFDMTcuOTEsOC4xMiAxNy43OCw3LjU1IDE3LjU5LDdMMTkuOTcsOC41TDE3LjkyLDEwLjczQzE4LjAzLDEwLjA4IDE4LjA1LDkuNCAxOCw4LjcxTTMuMDQsMTAuM0MzLjExLDEwLjkgMy4yNSwxMS40NyAzLjQzLDEyTDEuMDYsMTAuNUwzLjEsOC4yOEMzLDguOTMgMi45Nyw5LjYxIDMuMDQsMTAuM00xMS44LDE1SDE0LjI1TDEyLjYxLDE4LjI3SDE0LjI1TDExLjE4LDI0TDExLjgsMTkuOTFIOS43NVwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJQYXJ0bHlSYWlueSA9IFwiTTEyLjc1LDQuNDdDMTUuMSw1LjUgMTYuMzUsOC4wMyAxNS45MiwxMC40NkMxNy4xOSwxMS41NiAxOCwxMy4xOSAxOCwxNVYxNS4xN0MxOC4zMSwxNS4wNiAxOC42NSwxNSAxOSwxNUEzLDMgMCAwLDEgMjIsMThBMywzIDAgMCwxIDE5LDIxSDE3QzE3LDIxIDE2LDIxIDE2LDIwQzE2LDE5IDE3LDE5IDE3LDE5SDE5QTEsMSAwIDAsMCAyMCwxOEExLDEgMCAwLDAgMTksMTdIMTZWMTVBNCw0IDAgMCwwIDEyLDExQTQsNCAwIDAsMCA4LDE1SDZBMiwyIDAgMCwwIDQsMTdBMiwyIDAgMCwwIDYsMTlIN0M3LDE5IDgsMTkgOCwyMEM4LDIxIDcsMjEgNywyMUg2QTQsNCAwIDAsMSAyLDE3QTQsNCAwIDAsMSA2LDEzSDYuMjdDNSwxMS40NSA0LjYsOS4yNCA1LjUsNy4yNUM2LjcyLDQuNSA5Ljk3LDMuMjQgMTIuNzUsNC40N00xMS45Myw2LjNDMTAuMTYsNS41IDguMDksNi4zMSA3LjMxLDguMDdDNi44NSw5LjA5IDYuOTMsMTAuMjIgNy40MSwxMS4xM0M4LjUsOS44MyAxMC4xNiw5IDEyLDlDMTIuNyw5IDEzLjM4LDkuMTIgMTQsOS4zNEMxMy45NCw4LjA2IDEzLjE4LDYuODYgMTEuOTMsNi4zTTEzLjU1LDIuNjNDMTMsMi40IDEyLjQ1LDIuMjMgMTEuODgsMi4xMkwxNC4zNywwLjgyTDE1LjI3LDMuNzFDMTQuNzYsMy4yOSAxNC4xOSwyLjkzIDEzLjU1LDIuNjNNNi4wOSwzLjQ0QzUuNiwzLjc5IDUuMTcsNC4xOSA0LjgsNC42M0w0LjkxLDEuODJMNy44NywyLjVDNy4yNSwyLjcxIDYuNjUsMy4wMyA2LjA5LDMuNDRNMTgsOC43MUMxNy45MSw4LjEyIDE3Ljc4LDcuNTUgMTcuNTksN0wxOS45Nyw4LjVMMTcuOTIsMTAuNzNDMTguMDMsMTAuMDggMTguMDUsOS40IDE4LDguNzFNMy4wNCwxMC4zQzMuMTEsMTAuOSAzLjI1LDExLjQ3IDMuNDMsMTJMMS4wNiwxMC41TDMuMSw4LjI4QzMsOC45MyAyLjk3LDkuNjEgMy4wNCwxMC4zTTEyLDE4LjkxQzEyLjU5LDE5LjgyIDEzLDIwLjYzIDEzLDIxQTEsMSAwIDAsMSAxMiwyMkExLDEgMCAwLDEgMTEsMjFDMTEsMjAuNjMgMTEuNDEsMTkuODIgMTIsMTguOTFNMTIsMTUuNjJDMTIsMTUuNjIgOSwxOSA5LDIxQTMsMyAwIDAsMCAxMiwyNEEzLDMgMCAwLDAgMTUsMjFDMTUsMTkgMTIsMTUuNjIgMTIsMTUuNjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclBhcnRseVNub3d5ID0gXCJNNiwxOS4wM0EyLDIgMCAwLDEgNCwxNy4wM0M0LDE1LjkyIDQuOSwxNS4wMyA2LDE1LjAzSDhDOCwxMi44MSA5Ljc5LDExLjAzIDEyLDExLjAzQTQsNCAwIDAsMSAxNiwxNS4wM1YxNy4wM0gxOUExLDEgMCAwLDEgMjAsMTguMDNDMjAsMTguNTcgMTkuNTUsMTkuMDMgMTksMTkuMDNIMTdDMTcsMTkuMDMgMTYsMTkuMDMgMTYsMjAuMDNDMTYsMjEuMDMgMTcsMjEuMDMgMTcsMjEuMDNIMTlBMywzIDAgMCwwIDIyLDE4LjAzQzIyLDE2LjM3IDIwLjY2LDE1LjAzIDE5LDE1LjAzQzE4LjY1LDE1LjAzIDE4LjMxLDE1LjA4IDE4LDE1LjE5VjE1LjAzQzE4LDEzLjIxIDE3LjE5LDExLjU4IDE1LjkyLDEwLjVDMTYuMzUsOC4wNSAxNS4xLDUuNTMgMTIuNzUsNC41QzkuOTcsMy4yNyA2LjcyLDQuNTMgNS41LDcuMjhDNC42LDkuMjcgNSwxMS40NyA2LjI3LDEzLjAzSDZDMy43OSwxMy4wMyAyLDE0LjgxIDIsMTcuMDNBNCw0IDAgMCwwIDYsMjEuMDNDNiwyMS4wMyA3LDIxLjAzIDcsMjAuMDNDNywxOS4wMyA2LDE5LjAzIDYsMTkuMDNNMTIsOS4wM0MxMC4xNiw5LjAzIDguNSw5Ljg1IDcuNDEsMTEuMTZDNi45MywxMC4yNSA2Ljg1LDkuMTEgNy4zMSw4LjA5QzguMDksNi4zMyAxMC4xNiw1LjUzIDExLjkzLDYuMzJDMTMuMTgsNi44OSAxMy45NCw4LjA4IDE0LDkuMzdDMTMuMzgsOS4xNSAxMi43LDkuMDMgMTIsOS4wM00xMy41NSwyLjY2QzEzLDIuNDIgMTIuNDUsMi4yNiAxMS44OCwyLjE1TDE0LjM3LDAuODRMMTUuMjcsMy43M0MxNC43NiwzLjMxIDE0LjE5LDIuOTUgMTMuNTUsMi42Nk02LjA5LDMuNDZDNS42LDMuODEgNS4xNyw0LjIxIDQuOCw0LjY2TDQuOTEsMS44NEw3Ljg3LDIuNTNDNy4yNSwyLjczIDYuNjUsMy4wNSA2LjA5LDMuNDZNMTgsOC43M0MxNy45MSw4LjE1IDE3Ljc4LDcuNTcgMTcuNTksNy4wM0wxOS45Nyw4LjUzTDE3LjkyLDEwLjc2QzE4LjAzLDEwLjEgMTguMDUsOS40MiAxOCw4LjczTTMuMDQsMTAuMzJDMy4xMSwxMC45MiAzLjI1LDExLjUgMy40MywxMi4wM0wxLjA2LDEwLjUzTDMuMSw4LjNDMyw4Ljk1IDIuOTcsOS42NCAzLjA0LDEwLjMyTTguMDMsMjEuNDVDOC4xMywyMS44NCA4LjUzLDIyLjA2IDguOTEsMjEuOTZMMTAuNSwyMS41NEwxMC4wNiwyMy4xMUM5Ljk2LDIzLjUgMTAuMTksMjMuOSAxMC41NywyNEMxMC45NSwyNC4xIDExLjM1LDIzLjg3IDExLjQ1LDIzLjVMMTEuODcsMjEuOTFMMTMuMDMsMjMuMDdDMTMuMywyMy4zNSAxMy43NywyMy4zNSAxNC4wNSwyMy4wN0MxNC4zMywyMi43OSAxNC4zMywyMi4zMiAxNC4wNSwyMi4wNUwxMi44OSwyMC44OEwxNC40NywyMC40N0MxNC44NSwyMC4zNyAxNS4wOCwxOS45NyAxNSwxOS41OUMxNC44OCwxOS4yMSAxNC41LDE5IDE0LjA5LDE5LjA4TDEyLjUsMTkuNUwxMi45NCwxNy45M0MxMy4wNCwxNy41NCAxMi44MiwxNy4xNSAxMi40MywxNy4wNUMxMi4wNSwxNi45NSAxMS42NiwxNy4xNyAxMS41NSwxNy41NkwxMS4xNCwxOS4xNEwxMCwxNy45N0M5LjcsMTcuNjkgOS4yMywxNy42OSA4Ljk1LDE3Ljk3QzguNjgsMTguMjcgOC42OCwxOC43MiA4Ljk1LDE5TDEwLjExLDIwLjE2TDguNTQsMjAuNTdDOC4xNSwyMC42OCA3LjkzLDIxLjA3IDguMDMsMjEuNDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclBhcnRseVNub3d5UmFpbnkgPSBcIk0xMy41NSwyLjY2QzEzLDIuNDIgMTIuNDUsMi4yNiAxMS44OCwyLjE1TDE0LjM3LDAuODRMMTUuMjcsMy43M0MxNC43NiwzLjMxIDE0LjE5LDIuOTUgMTMuNTUsMi42Nk02LjA5LDMuNDZDNS42LDMuODEgNS4xNyw0LjIxIDQuOCw0LjY2TDQuOTEsMS44NEw3Ljg3LDIuNTNDNy4yNSwyLjczIDYuNjUsMy4wNSA2LjA5LDMuNDZNMTgsOC43M0MxNy45MSw4LjE1IDE3Ljc4LDcuNTcgMTcuNTksNy4wM0wxOS45Nyw4LjUzTDE3LjkyLDEwLjc2QzE4LjAzLDEwLjEgMTguMDUsOS40MiAxOCw4LjczTTMuMDQsMTAuMzJDMy4xMSwxMC45MiAzLjI1LDExLjUgMy40MywxMi4wM0wxLjA2LDEwLjUzTDMuMSw4LjNDMyw4Ljk1IDIuOTcsOS42NCAzLjA0LDEwLjMyTTE2LjY4LDIyLjIxQzE2LjY4LDIzLjIgMTUuOTEsMjQgMTQuOTUsMjRDMTQsMjQgMTMuMjMsMjMuMiAxMy4yMywyMi4yMUMxMy4yMywyMS4wMyAxNC45NSwxOS4wMyAxNC45NSwxOS4wM0MxNC45NSwxOS4wMyAxNi42OCwyMS4wMyAxNi42OCwyMi4yMU02LjAzLDIxLjQ1QzUuOTMsMjEuMDcgNi4xNSwyMC42OCA2LjU0LDIwLjU4TDguMTMsMjAuMTVMNi45NiwxOUM2LjY4LDE4LjcyIDYuNjgsMTguMjcgNi45NiwxOEM3LjIzLDE3LjcgNy43LDE3LjcgOCwxOEw5LjE0LDE5LjE0TDkuNTUsMTcuNTZDOS42NSwxNy4xNyAxMC4wNSwxNi45NCAxMC40MywxNy4wNUMxMC44MiwxNy4xNSAxMS4wNSwxNy41NSAxMC45MywxNy45M0wxMC41LDE5LjVMMTIuMSwxOS4xQzEyLjUsMTkgMTIuODgsMTkuMjEgMTMsMTkuNkMxMy4wOCwxOS45NyAxMi44NiwyMC4zNyAxMi40NywyMC40N0wxMC44OSwyMC44OUwxMi4wNSwyMi4wNUMxMi4zMywyMi4zMiAxMi4zMywyMi43OSAxMi4wNSwyMy4wN0MxMS43NywyMy4zNSAxMS4zMSwyMy4zNSAxMS4wMywyMy4wN0w5Ljg3LDIxLjlMOS40NSwyMy41QzkuMzUsMjMuODggOC45NSwyNC4xIDguNTcsMjRDOC4xOCwyMy45IDcuOTcsMjMuNSA4LjA2LDIzLjEyTDguNSwyMS41NUw2LjkxLDIxLjk2QzYuNSwyMi4wNiA2LjEzLDIxLjg0IDYuMDMsMjEuNDVNMTksMTUuMDNDMTguNjUsMTUuMDMgMTguMzEsMTUuMDggMTgsMTUuMTlWMTUuMDNDMTgsMTMuMjEgMTcuMTksMTEuNTggMTUuOTIsMTAuNUMxNi4zNSw4LjA1IDE1LjEsNS41MyAxMi43NSw0LjVDOS45NywzLjI3IDYuNzIsNC41MyA1LjUsNy4yOEM0LjYsOS4yNyA1LDExLjQ3IDYuMjcsMTMuMDNINkMzLjc5LDEzLjAzIDIsMTQuODEgMiwxNy4wM0MyLDE4LjE3IDIuNSwxOS4yIDMuMjcsMTkuOTNWMTkuOTNDMy4yNywxOS45MyAzLjk3LDIwLjY0IDQuNjgsMTkuOTNDNS4zOSwxOS4yMiA0LjY4LDE4LjUgNC42OCwxOC41QzQuMjcsMTguMTUgNCwxNy42MiA0LDE3LjAzQzQsMTUuOTIgNC45LDE1LjAzIDYsMTUuMDNIOEM4LDEyLjgxIDkuNzksMTEuMDMgMTIsMTEuMDNBNCw0IDAgMCwxIDE2LDE1LjAzVjE3LjAzSDE5QTEsMSAwIDAsMSAyMCwxOC4wM0MyMCwxOC41NyAxOS41NSwxOS4wMyAxOSwxOS4wM0gxOEMxOCwxOS4wMyAxNywxOS4wMyAxNywyMC4wM0MxNywyMS4wMyAxOCwyMS4wMyAxOCwyMS4wM0gxOUEzLDMgMCAwLDAgMjIsMTguMDNDMjIsMTYuMzcgMjAuNjYsMTUuMDMgMTksMTUuMDNNMTIsOS4wM0MxMC4xNiw5LjAzIDguNSw5Ljg1IDcuNDEsMTEuMTZDNi45MywxMC4yNSA2Ljg1LDkuMTEgNy4zMSw4LjA5QzguMDksNi4zMyAxMC4xNiw1LjUzIDExLjkzLDYuMzJDMTMuMTgsNi44OSAxMy45NCw4LjA4IDE0LDkuMzdDMTMuMzgsOS4xNSAxMi43LDkuMDMgMTIsOS4wM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUG91cmluZyA9IFwiTTksMTJDOS41MywxMi4xNCA5Ljg1LDEyLjY5IDkuNzEsMTMuMjJMOC40MSwxOC4wNUM4LjI3LDE4LjU5IDcuNzIsMTguOSA3LjE5LDE4Ljc2QzYuNjUsMTguNjIgNi4zNCwxOC4wNyA2LjUsMTcuNTRMNy43OCwxMi43MUM3LjkyLDEyLjE3IDguNDcsMTEuODYgOSwxMk0xMywxMkMxMy41MywxMi4xNCAxMy44NSwxMi42OSAxMy43MSwxMy4yMkwxMS42NCwyMC45NUMxMS41LDIxLjUgMTAuOTUsMjEuOCAxMC40MSwyMS42NkM5Ljg4LDIxLjUgOS41NiwyMC45NyA5LjcsMjAuNDNMMTEuNzgsMTIuNzFDMTEuOTIsMTIuMTcgMTIuNDcsMTEuODYgMTMsMTJNMTcsMTJDMTcuNTMsMTIuMTQgMTcuODUsMTIuNjkgMTcuNzEsMTMuMjJMMTYuNDEsMTguMDVDMTYuMjcsMTguNTkgMTUuNzIsMTguOSAxNS4xOSwxOC43NkMxNC42NSwxOC42MiAxNC4zNCwxOC4wNyAxNC41LDE3LjU0TDE1Ljc4LDEyLjcxQzE1LjkyLDEyLjE3IDE2LjQ3LDExLjg2IDE3LDEyTTE3LDEwVjlBNSw1IDAgMCwwIDEyLDRDOS41LDQgNy40NSw1LjgyIDcuMDYsOC4xOUM2LjczLDguMDcgNi4zNyw4IDYsOEEzLDMgMCAwLDAgMywxMUMzLDEyLjExIDMuNiwxMy4wOCA0LjUsMTMuNlYxMy41OUM1LDEzLjg3IDUuMTQsMTQuNSA0Ljg3LDE0Ljk2QzQuNTksMTUuNDMgNCwxNS42IDMuNSwxNS4zMlYxNS4zM0MyLDE0LjQ3IDEsMTIuODUgMSwxMUE1LDUgMCAwLDEgNiw2QzcsMy42NSA5LjMsMiAxMiwyQzE1LjQzLDIgMTguMjQsNC42NiAxOC41LDguMDNMMTksOEE0LDQgMCAwLDEgMjMsMTJDMjMsMTMuNSAyMi4yLDE0Ljc3IDIxLDE1LjQ2VjE1LjQ2QzIwLjUsMTUuNzMgMTkuOTEsMTUuNTcgMTkuNjMsMTUuMDlDMTkuMzYsMTQuNjEgMTkuNSwxNCAyMCwxMy43MlYxMy43M0MyMC42LDEzLjM5IDIxLDEyLjc0IDIxLDEyQTIsMiAwIDAsMCAxOSwxMEgxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyUmFpbnkgPSBcIk02LDE0LjAzQTEsMSAwIDAsMSA3LDE1LjAzQzcsMTUuNTggNi41NSwxNi4wMyA2LDE2LjAzQzMuMjQsMTYuMDMgMSwxMy43OSAxLDExLjAzQzEsOC4yNyAzLjI0LDYuMDMgNiw2LjAzQzcsMy42OCA5LjMsMi4wMyAxMiwyLjAzQzE1LjQzLDIuMDMgMTguMjQsNC42OSAxOC41LDguMDZMMTksOC4wM0E0LDQgMCAwLDEgMjMsMTIuMDNDMjMsMTQuMjMgMjEuMjEsMTYuMDMgMTksMTYuMDNIMThDMTcuNDUsMTYuMDMgMTcsMTUuNTggMTcsMTUuMDNDMTcsMTQuNDcgMTcuNDUsMTQuMDMgMTgsMTQuMDNIMTlBMiwyIDAgMCwwIDIxLDEyLjAzQTIsMiAwIDAsMCAxOSwxMC4wM0gxN1Y5LjAzQzE3LDYuMjcgMTQuNzYsNC4wMyAxMiw0LjAzQzkuNSw0LjAzIDcuNDUsNS44NCA3LjA2LDguMjFDNi43Myw4LjA5IDYuMzcsOC4wMyA2LDguMDNBMywzIDAgMCwwIDMsMTEuMDNBMywzIDAgMCwwIDYsMTQuMDNNMTIsMTQuMTVDMTIuMTgsMTQuMzkgMTIuMzcsMTQuNjYgMTIuNTYsMTQuOTRDMTMsMTUuNTYgMTQsMTcuMDMgMTQsMThDMTQsMTkuMTEgMTMuMSwyMCAxMiwyMEEyLDIgMCAwLDEgMTAsMThDMTAsMTcuMDMgMTEsMTUuNTYgMTEuNDQsMTQuOTRDMTEuNjMsMTQuNjYgMTEuODIsMTQuNCAxMiwxNC4xNU0xMiwxMS4wM0wxMS41LDExLjU5QzExLjUsMTEuNTkgMTAuNjUsMTIuNTUgOS43OSwxMy44MUM4LjkzLDE1LjA2IDgsMTYuNTYgOCwxOEE0LDQgMCAwLDAgMTIsMjJBNCw0IDAgMCwwIDE2LDE4QzE2LDE2LjU2IDE1LjA3LDE1LjA2IDE0LjIxLDEzLjgxQzEzLjM1LDEyLjU1IDEyLjUsMTEuNTkgMTIuNSwxMS41OVwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJTbm93eSA9IFwiTTYsMTRBMSwxIDAgMCwxIDcsMTVBMSwxIDAgMCwxIDYsMTZBNSw1IDAgMCwxIDEsMTFBNSw1IDAgMCwxIDYsNkM3LDMuNjUgOS4zLDIgMTIsMkMxNS40MywyIDE4LjI0LDQuNjYgMTguNSw4LjAzTDE5LDhBNCw0IDAgMCwxIDIzLDEyQTQsNCAwIDAsMSAxOSwxNkgxOEExLDEgMCAwLDEgMTcsMTVBMSwxIDAgMCwxIDE4LDE0SDE5QTIsMiAwIDAsMCAyMSwxMkEyLDIgMCAwLDAgMTksMTBIMTdWOUE1LDUgMCAwLDAgMTIsNEM5LjUsNCA3LjQ1LDUuODIgNy4wNiw4LjE5QzYuNzMsOC4wNyA2LjM3LDggNiw4QTMsMyAwIDAsMCAzLDExQTMsMyAwIDAsMCA2LDE0TTcuODgsMTguMDdMMTAuMDcsMTcuNUw4LjQ2LDE1Ljg4QzguMDcsMTUuNSA4LjA3LDE0Ljg2IDguNDYsMTQuNDZDOC44NSwxNC4wNyA5LjUsMTQuMDcgOS44OCwxNC40NkwxMS41LDE2LjA3TDEyLjA3LDEzLjg4QzEyLjIxLDEzLjM0IDEyLjc2LDEzLjAzIDEzLjI5LDEzLjE3QzEzLjgzLDEzLjMxIDE0LjE0LDEzLjg2IDE0LDE0LjRMMTMuNDEsMTYuNTlMMTUuNiwxNkMxNi4xNCwxNS44NiAxNi42OSwxNi4xNyAxNi44MywxNi43MUMxNi45NywxNy4yNCAxNi42NiwxNy43OSAxNi4xMiwxNy45M0wxMy45MywxOC41TDE1LjU0LDIwLjEyQzE1LjkzLDIwLjUgMTUuOTMsMjEuMTUgMTUuNTQsMjEuNTRDMTUuMTUsMjEuOTMgMTQuNSwyMS45MyAxNC4xMiwyMS41NEwxMi41LDE5LjkzTDExLjkzLDIyLjEyQzExLjc5LDIyLjY2IDExLjI0LDIyLjk3IDEwLjcxLDIyLjgzQzEwLjE3LDIyLjY5IDkuODYsMjIuMTQgMTAsMjEuNkwxMC41OSwxOS40MUw4LjQsMjBDNy44NiwyMC4xNCA3LjMxLDE5LjgzIDcuMTcsMTkuMjlDNy4wMywxOC43NiA3LjM0LDE4LjIxIDcuODgsMTguMDdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclNub3d5SGVhdnkgPSBcIk00LDE2LjM2QzMuODYsMTUuODIgNC4xOCwxNS4yNSA0LjczLDE1LjExTDcsMTQuNUw1LjMzLDEyLjg2QzQuOTMsMTIuNDYgNC45MywxMS44MSA1LjMzLDExLjRDNS43MywxMSA2LjQsMTEgNi43OSwxMS40TDguNDUsMTMuMDVMOS4wNCwxMC44QzkuMTgsMTAuMjQgOS43NSw5LjkyIDEwLjI5LDEwLjA3QzEwLjg1LDEwLjIxIDExLjE3LDEwLjc4IDExLDExLjMzTDEwLjQyLDEzLjU4TDEyLjY3LDEzQzEzLjIyLDEyLjgzIDEzLjc5LDEzLjE1IDEzLjkzLDEzLjcxQzE0LjA4LDE0LjI1IDEzLjc2LDE0LjgyIDEzLjIsMTQuOTZMMTAuOTUsMTUuNTVMMTIuNiwxNy4yMUMxMywxNy42IDEzLDE4LjI3IDEyLjYsMTguNjdDMTIuMiwxOS4wNyAxMS41NCwxOS4wNyAxMS4xNSwxOC42N0w5LjUsMTdMOC44OSwxOS4yN0M4Ljc1LDE5LjgzIDguMTgsMjAuMTQgNy42NCwyMEM3LjA4LDE5Ljg2IDYuNzcsMTkuMjkgNi45MSwxOC43NEw3LjUsMTYuNUw1LjI2LDE3LjA5QzQuNzEsMTcuMjMgNC4xNCwxNi45MiA0LDE2LjM2TTEsMTBBNSw1IDAgMCwxIDYsNUM3LDIuNjUgOS4zLDEgMTIsMUMxNS40MywxIDE4LjI0LDMuNjYgMTguNSw3LjAzTDE5LDdBNCw0IDAgMCwxIDIzLDExQTQsNCAwIDAsMSAxOSwxNUExLDEgMCAwLDEgMTgsMTRBMSwxIDAgMCwxIDE5LDEzQTIsMiAwIDAsMCAyMSwxMUEyLDIgMCAwLDAgMTksOUgxN1Y4QTUsNSAwIDAsMCAxMiwzQzkuNSwzIDcuNDUsNC44MiA3LjA2LDcuMTlDNi43Myw3LjA3IDYuMzcsNyA2LDdBMywzIDAgMCwwIDMsMTBDMywxMC44NSAzLjM1LDExLjYxIDMuOTEsMTIuMTZDNC4yNywxMi41NSA0LjI2LDEzLjE2IDMuODgsMTMuNTRDMy41LDEzLjkzIDIuODUsMTMuOTMgMi40NywxMy41NEMxLjU2LDEyLjYzIDEsMTEuMzggMSwxME0xNC4wMywyMC40M0MxNC4xMywyMC44MiAxNC41LDIxLjA0IDE0LjkxLDIwLjk0TDE2LjUsMjAuNUwxNi4wNiwyMi4wOUMxNS45NiwyMi41IDE2LjE4LDIyLjg3IDE2LjU3LDIyLjk3QzE2Ljk1LDIzLjA4IDE3LjM1LDIyLjg1IDE3LjQ1LDIyLjQ2TDE3Ljg2LDIwLjg5TDE5LjAzLDIyLjA1QzE5LjMsMjIuMzMgMTkuNzcsMjIuMzMgMjAuMDUsMjIuMDVDMjAuMzMsMjEuNzcgMjAuMzMsMjEuMyAyMC4wNSwyMS4wM0wxOC44OSwxOS44NkwyMC40NiwxOS40NUMyMC44NSwxOS4zNSAyMS4wOCwxOC45NSAyMC45NywxOC41N0MyMC44NywxOC4xOCAyMC41LDE3Ljk2IDIwLjA5LDE4LjA2TDE4LjUsMTguNUwxOC45NCwxNi45MUMxOS4wNCwxNi41IDE4LjgyLDE2LjEzIDE4LjQzLDE2LjAzQzE4LjA1LDE1LjkyIDE3LjY1LDE2LjE1IDE3LjU1LDE2LjU0TDE3LjE0LDE4LjExTDE1Ljk3LDE2Ljk1QzE1LjcsMTYuNjcgMTUuMjMsMTYuNjcgMTQuOTUsMTYuOTVDMTQuNjcsMTcuMjQgMTQuNjcsMTcuNyAxNC45NSwxNy45N0wxNi4xMSwxOS4xNEwxNC41NCwxOS41NUMxNC4xNSwxOS42NSAxMy45MiwyMC4wNSAxNC4wMywyMC40M1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyU25vd3lSYWlueSA9IFwiTTE4LjUsMTguNjdDMTguNSwxOS45NiAxNy41LDIxIDE2LjI1LDIxQzE1LDIxIDE0LDE5Ljk2IDE0LDE4LjY3QzE0LDE3LjEyIDE2LjI1LDE0LjUgMTYuMjUsMTQuNUMxNi4yNSwxNC41IDE4LjUsMTcuMTIgMTguNSwxOC42N000LDE3LjM2QzMuODYsMTYuODIgNC4xOCwxNi4yNSA0LjczLDE2LjExTDcsMTUuNUw1LjMzLDEzLjg2QzQuOTMsMTMuNDYgNC45MywxMi44MSA1LjMzLDEyLjRDNS43MywxMiA2LjQsMTIgNi43OSwxMi40TDguNDUsMTQuMDVMOS4wNCwxMS44QzkuMTgsMTEuMjQgOS43NSwxMC45MiAxMC4yOSwxMS4wN0MxMC44NSwxMS4yMSAxMS4xNywxMS43OCAxMSwxMi4zM0wxMC40MiwxNC41OEwxMi42NywxNEMxMy4yMiwxMy44MyAxMy43OSwxNC4xNSAxMy45MywxNC43MUMxNC4wOCwxNS4yNSAxMy43NiwxNS44MiAxMy4yLDE1Ljk2TDEwLjk1LDE2LjU1TDEyLjYsMTguMjFDMTMsMTguNiAxMywxOS4yNyAxMi42LDE5LjY3QzEyLjIsMjAuMDcgMTEuNTQsMjAuMDcgMTEuMTUsMTkuNjdMOS41LDE4TDguODksMjAuMjdDOC43NSwyMC44MyA4LjE4LDIxLjE0IDcuNjQsMjFDNy4wOCwyMC44NiA2Ljc3LDIwLjI5IDYuOTEsMTkuNzRMNy41LDE3LjVMNS4yNiwxOC4wOUM0LjcxLDE4LjIzIDQuMTQsMTcuOTIgNCwxNy4zNk0xLDExQTUsNSAwIDAsMSA2LDZDNywzLjY1IDkuMywyIDEyLDJDMTUuNDMsMiAxOC4yNCw0LjY2IDE4LjUsOC4wM0wxOSw4QTQsNCAwIDAsMSAyMywxMkE0LDQgMCAwLDEgMTksMTZBMSwxIDAgMCwxIDE4LDE1QTEsMSAwIDAsMSAxOSwxNEEyLDIgMCAwLDAgMjEsMTJBMiwyIDAgMCwwIDE5LDEwSDE3VjlBNSw1IDAgMCwwIDEyLDRDOS41LDQgNy40NSw1LjgyIDcuMDYsOC4xOUM2LjczLDguMDcgNi4zNyw4IDYsOEEzLDMgMCAwLDAgMywxMUMzLDExLjg1IDMuMzUsMTIuNjEgMy45MSwxMy4xNkM0LjI3LDEzLjU1IDQuMjYsMTQuMTYgMy44OCwxNC41NEMzLjUsMTQuOTMgMi44NSwxNC45MyAyLjQ3LDE0LjU0QzEuNTYsMTMuNjMgMSwxMi4zOCAxLDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJTdW5ueSA9IFwiTTEyLDdBNSw1IDAgMCwxIDE3LDEyQTUsNSAwIDAsMSAxMiwxN0E1LDUgMCAwLDEgNywxMkE1LDUgMCAwLDEgMTIsN00xMiw5QTMsMyAwIDAsMCA5LDEyQTMsMyAwIDAsMCAxMiwxNUEzLDMgMCAwLDAgMTUsMTJBMywzIDAgMCwwIDEyLDlNMTIsMkwxNC4zOSw1LjQyQzEzLjY1LDUuMTUgMTIuODQsNSAxMiw1QzExLjE2LDUgMTAuMzUsNS4xNSA5LjYxLDUuNDJMMTIsMk0zLjM0LDdMNy41LDYuNjVDNi45LDcuMTYgNi4zNiw3Ljc4IDUuOTQsOC41QzUuNSw5LjI0IDUuMjUsMTAgNS4xMSwxMC43OUwzLjM0LDdNMy4zNiwxN0w1LjEyLDEzLjIzQzUuMjYsMTQgNS41MywxNC43OCA1Ljk1LDE1LjVDNi4zNywxNi4yNCA2LjkxLDE2Ljg2IDcuNSwxNy4zN0wzLjM2LDE3TTIwLjY1LDdMMTguODgsMTAuNzlDMTguNzQsMTAgMTguNDcsOS4yMyAxOC4wNSw4LjVDMTcuNjMsNy43OCAxNy4xLDcuMTUgMTYuNSw2LjY0TDIwLjY1LDdNMjAuNjQsMTdMMTYuNSwxNy4zNkMxNy4wOSwxNi44NSAxNy42MiwxNi4yMiAxOC4wNCwxNS41QzE4LjQ2LDE0Ljc3IDE4LjczLDE0IDE4Ljg3LDEzLjIxTDIwLjY0LDE3TTEyLDIyTDkuNTksMTguNTZDMTAuMzMsMTguODMgMTEuMTQsMTkgMTIsMTlDMTIuODIsMTkgMTMuNjMsMTguODMgMTQuMzcsMTguNTZMMTIsMjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclN1bm55QWxlcnQgPSBcIk0xMiw3QTUsNSAwIDAsMCA3LDEyQTUsNSAwIDAsMCAxMiwxN0E1LDUgMCAwLDAgMTcsMTJBNSw1IDAgMCwwIDEyLDdNMTIsMTVBMywzIDAgMCwxIDksMTJBMywzIDAgMCwxIDEyLDlBMywzIDAgMCwxIDE1LDEyQTMsMyAwIDAsMSAxMiwxNU0xMiwyTDE0LjM5LDUuNDJDMTMuNjUsNS4xNSAxMi44NCw1IDEyLDVDMTEuMTYsNSAxMC4zNSw1LjE1IDkuNjEsNS40MkwxMiwyTTMuMzQsN0w3LjUsNi42NUM2LjksNy4xNiA2LjM2LDcuNzggNS45NCw4LjVDNS41LDkuMjQgNS4yNSwxMCA1LjExLDEwLjc5TDMuMzQsN00zLjM2LDE3TDUuMTIsMTMuMjNDNS4yNiwxNCA1LjUzLDE0Ljc4IDUuOTUsMTUuNUM2LjM3LDE2LjI0IDYuOTEsMTYuODYgNy41LDE3LjM3TDMuMzYsMTdNMTIsMjJMOS41OSwxOC41NkMxMC4zMywxOC44MyAxMS4xNCwxOSAxMiwxOUMxMi44MiwxOSAxMy42MywxOC44MyAxNC4zNywxOC41Nk0xOSwxM1Y3SDIxVjEzSDE5TTE5LDE3VjE1SDIxVjE3XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclN1bm55T2ZmID0gXCJNMjIuMTEgMjEuNDZMMi4zOSAxLjczTDEuMTEgM0w0Ljk3IDYuODZMMy4zNCA3TDUuMTEgMTAuNzlDNS4yNSAxMCA1LjUgOS4yNCA1Ljk0IDguNUM2IDguMzYgNi4xMyA4LjI0IDYuMjIgOC4xMUw3LjY2IDkuNTVDNy4yNSAxMC4yNyA3IDExLjExIDcgMTJDNyAxNC43NiA5LjI0IDE3IDEyIDE3QzEyLjkgMTcgMTMuNzMgMTYuNzUgMTQuNDUgMTYuMzRMMjAuODQgMjIuNzNMMjIuMTEgMjEuNDZNMTIgMTVDMTAuMzQgMTUgOSAxMy42NiA5IDEyQzkgMTEuNjcgOS4wNyAxMS4zNiA5LjE3IDExLjA2TDEyLjk0IDE0LjgzQzEyLjY0IDE0LjkzIDEyLjMzIDE1IDEyIDE1TTE4LjA1IDguNUMxNy42MyA3Ljc4IDE3LjEgNy4xNSAxNi41IDYuNjRMMjAuNjUgN0wxOC44OCAxMC43OUMxOC43NCAxMCAxOC40NyA5LjIzIDE4LjA1IDguNU0xMiA3QzE0Ljc2IDcgMTcgOS4yNCAxNyAxMkMxNyAxMi41NCAxNi44OSAxMy4wNSAxNi43NCAxMy41NEwxNSAxMS43OEMxNC44NyAxMC4zIDEzLjcgOS4xMyAxMi4yMiA5TDEwLjQ3IDcuMjdDMTAuOTUgNy4xMSAxMS40NiA3IDEyIDdNMTIgNUMxMS4xNiA1IDEwLjM1IDUuMTUgOS42MSA1LjQyTDEyIDJMMTQuMzkgNS40MkMxMy42NSA1LjE1IDEyLjg0IDUgMTIgNU0xOC44NyAxMy4yMUwyMC42NCAxN0wyMC4yNCAxNy4wNEwxOC4yNSAxNS4wNUMxOC41NCAxNC40NSAxOC43NiAxMy44NCAxOC44NyAxMy4yMU0xMiAxOUMxMi44MiAxOSAxMy42MyAxOC44MyAxNC4zNyAxOC41NkwxMiAyMkw5LjU5IDE4LjU2QzEwLjMzIDE4LjgzIDExLjE0IDE5IDEyIDE5TTUuOTUgMTUuNUM2LjM3IDE2LjI0IDYuOTEgMTYuODYgNy41IDE3LjM3TDMuMzYgMTdMNS4xMiAxMy4yM0M1LjI2IDE0IDUuNTMgMTQuNzggNS45NSAxNS41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYXRoZXJTdW5zZXQgPSBcIk0zLDEySDdBNSw1IDAgMCwxIDEyLDdBNSw1IDAgMCwxIDE3LDEySDIxQTEsMSAwIDAsMSAyMiwxM0ExLDEgMCAwLDEgMjEsMTRIM0ExLDEgMCAwLDEgMiwxM0ExLDEgMCAwLDEgMywxMk01LDE2SDE5QTEsMSAwIDAsMSAyMCwxN0ExLDEgMCAwLDEgMTksMThINUExLDEgMCAwLDEgNCwxN0ExLDEgMCAwLDEgNSwxNk0xNywyMEExLDEgMCAwLDEgMTgsMjFBMSwxIDAgMCwxIDE3LDIySDdBMSwxIDAgMCwxIDYsMjFBMSwxIDAgMCwxIDcsMjBIMTdNMTUsMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksMTJIMTVNMTIsMkwxNC4zOSw1LjQyQzEzLjY1LDUuMTUgMTIuODQsNSAxMiw1QzExLjE2LDUgMTAuMzUsNS4xNSA5LjYxLDUuNDJMMTIsMk0zLjM0LDdMNy41LDYuNjVDNi45LDcuMTYgNi4zNiw3Ljc4IDUuOTQsOC41QzUuNSw5LjI0IDUuMjUsMTAgNS4xMSwxMC43OUwzLjM0LDdNMjAuNjUsN0wxOC44OCwxMC43OUMxOC43NCwxMCAxOC40Nyw5LjIzIDE4LjA1LDguNUMxNy42Myw3Ljc4IDE3LjEsNy4xNSAxNi41LDYuNjRMMjAuNjUsN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyU3Vuc2V0RG93biA9IFwiTTMsMTJIN0E1LDUgMCAwLDEgMTIsN0E1LDUgMCAwLDEgMTcsMTJIMjFBMSwxIDAgMCwxIDIyLDEzQTEsMSAwIDAsMSAyMSwxNEgzQTEsMSAwIDAsMSAyLDEzQTEsMSAwIDAsMSAzLDEyTTE1LDEyQTMsMyAwIDAsMCAxMiw5QTMsMyAwIDAsMCA5LDEySDE1TTEyLDJMMTQuMzksNS40MkMxMy42NSw1LjE1IDEyLjg0LDUgMTIsNUMxMS4xNiw1IDEwLjM1LDUuMTUgOS42MSw1LjQyTDEyLDJNMy4zNCw3TDcuNSw2LjY1QzYuOSw3LjE2IDYuMzYsNy43OCA1Ljk0LDguNUM1LjUsOS4yNCA1LjI1LDEwIDUuMTEsMTAuNzlMMy4zNCw3TTIwLjY1LDdMMTguODgsMTAuNzlDMTguNzQsMTAgMTguNDcsOS4yMyAxOC4wNSw4LjVDMTcuNjMsNy43OCAxNy4xLDcuMTUgMTYuNSw2LjY0TDIwLjY1LDdNMTIuNzEsMjAuNzFMMTUuODIsMTcuNkMxNi4yMSwxNy4yMSAxNi4yMSwxNi41NyAxNS44MiwxNi4xOEMxNS40MywxNS43OSAxNC44LDE1Ljc5IDE0LjQxLDE2LjE4TDEyLDE4LjU5TDkuNTksMTYuMThDOS4yLDE1Ljc5IDguNTcsMTUuNzkgOC4xOCwxNi4xOEM3Ljc5LDE2LjU3IDcuNzksMTcuMjEgOC4xOCwxNy42TDExLjI5LDIwLjcxQzExLjUsMjAuOSAxMS43NCwyMSAxMiwyMUMxMi4yNiwyMSAxMi41LDIwLjkgMTIuNzEsMjAuNzFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlclN1bnNldFVwID0gXCJNMywxMkg3QTUsNSAwIDAsMSAxMiw3QTUsNSAwIDAsMSAxNywxMkgyMUExLDEgMCAwLDEgMjIsMTNBMSwxIDAgMCwxIDIxLDE0SDNBMSwxIDAgMCwxIDIsMTNBMSwxIDAgMCwxIDMsMTJNMTUsMTJBMywzIDAgMCwwIDEyLDlBMywzIDAgMCwwIDksMTJIMTVNMTIsMkwxNC4zOSw1LjQyQzEzLjY1LDUuMTUgMTIuODQsNSAxMiw1QzExLjE2LDUgMTAuMzUsNS4xNSA5LjYxLDUuNDJMMTIsMk0zLjM0LDdMNy41LDYuNjVDNi45LDcuMTYgNi4zNiw3Ljc4IDUuOTQsOC41QzUuNSw5LjI0IDUuMjUsMTAgNS4xMSwxMC43OUwzLjM0LDdNMjAuNjUsN0wxOC44OCwxMC43OUMxOC43NCwxMCAxOC40Nyw5LjIzIDE4LjA1LDguNUMxNy42Myw3Ljc4IDE3LjEsNy4xNSAxNi41LDYuNjRMMjAuNjUsN00xMi43MSwxNi4zTDE1LjgyLDE5LjQxQzE2LjIxLDE5LjggMTYuMjEsMjAuNDMgMTUuODIsMjAuODJDMTUuNDMsMjEuMjEgMTQuOCwyMS4yMSAxNC40MSwyMC44MkwxMiwxOC40MUw5LjU5LDIwLjgyQzkuMiwyMS4yMSA4LjU3LDIxLjIxIDguMTgsMjAuODJDNy43OSwyMC40MyA3Ljc5LDE5LjggOC4xOCwxOS40MUwxMS4yOSwxNi4zQzExLjUsMTYuMSAxMS43NCwxNiAxMiwxNkMxMi4yNiwxNiAxMi41LDE2LjEgMTIuNzEsMTYuM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWF0aGVyVG9ybmFkbyA9IFwiTTIxLDVIM0ExLDEgMCAwLDEgMiw0QTEsMSAwIDAsMSAzLDNIMjFBMSwxIDAgMCwxIDIyLDRBMSwxIDAgMCwxIDIxLDVNMjAsOEExLDEgMCAwLDAgMTksN0g1QTEsMSAwIDAsMCA0LDhBMSwxIDAgMCwwIDUsOUgxOUExLDEgMCAwLDAgMjAsOE0yMSwxMkExLDEgMCAwLDAgMjAsMTFIMTBBMSwxIDAgMCwwIDksMTJBMSwxIDAgMCwwIDEwLDEzSDIwQTEsMSAwIDAsMCAyMSwxMk0xNiwxNkExLDEgMCAwLDAgMTUsMTVIOUExLDEgMCAwLDAgOCwxNkExLDEgMCAwLDAgOSwxN0gxNUExLDEgMCAwLDAgMTYsMTZNMTMsMjBBMSwxIDAgMCwwIDEyLDE5SDEwQTEsMSAwIDAsMCA5LDIwQTEsMSAwIDAsMCAxMCwyMUgxMkExLDEgMCAwLDAgMTMsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlcldpbmR5ID0gXCJNNCwxMEExLDEgMCAwLDEgMyw5QTEsMSAwIDAsMSA0LDhIMTJBMiwyIDAgMCwwIDE0LDZBMiwyIDAgMCwwIDEyLDRDMTEuNDUsNCAxMC45NSw0LjIyIDEwLjU5LDQuNTlDMTAuMiw1IDkuNTYsNSA5LjE3LDQuNTlDOC43OCw0LjIgOC43OCwzLjU2IDkuMTcsMy4xN0M5LjksMi40NSAxMC45LDIgMTIsMkE0LDQgMCAwLDEgMTYsNkE0LDQgMCAwLDEgMTIsMTBINE0xOSwxMkExLDEgMCAwLDAgMjAsMTFBMSwxIDAgMCwwIDE5LDEwQzE4LjcyLDEwIDE4LjQ3LDEwLjExIDE4LjI5LDEwLjI5QzE3LjksMTAuNjggMTcuMjcsMTAuNjggMTYuODgsMTAuMjlDMTYuNSw5LjkgMTYuNSw5LjI3IDE2Ljg4LDguODhDMTcuNDIsOC4zNCAxOC4xNyw4IDE5LDhBMywzIDAgMCwxIDIyLDExQTMsMyAwIDAsMSAxOSwxNEg1QTEsMSAwIDAsMSA0LDEzQTEsMSAwIDAsMSA1LDEySDE5TTE4LDE4SDRBMSwxIDAgMCwxIDMsMTdBMSwxIDAgMCwxIDQsMTZIMThBMywzIDAgMCwxIDIxLDE5QTMsMyAwIDAsMSAxOCwyMkMxNy4xNywyMiAxNi40MiwyMS42NiAxNS44OCwyMS4xMkMxNS41LDIwLjczIDE1LjUsMjAuMSAxNS44OCwxOS43MUMxNi4yNywxOS4zMiAxNi45LDE5LjMyIDE3LjI5LDE5LjcxQzE3LjQ3LDE5Ljg5IDE3LjcyLDIwIDE4LDIwQTEsMSAwIDAsMCAxOSwxOUExLDEgMCAwLDAgMTgsMThaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VhdGhlcldpbmR5VmFyaWFudCA9IFwiTTYsNkw2LjY5LDYuMDZDNy4zMiwzLjcyIDkuNDYsMiAxMiwyQTUuNSw1LjUgMCAwLDEgMTcuNSw3LjVMMTcuNDIsOC40NUMxNy44OCw4LjE2IDE4LjQyLDggMTksOEEzLDMgMCAwLDEgMjIsMTFBMywzIDAgMCwxIDE5LDE0SDZBNCw0IDAgMCwxIDIsMTBBNCw0IDAgMCwxIDYsNk02LDhBMiwyIDAgMCwwIDQsMTBBMiwyIDAgMCwwIDYsMTJIMTlBMSwxIDAgMCwwIDIwLDExQTEsMSAwIDAsMCAxOSwxMEgxNS41VjcuNUEzLjUsMy41IDAgMCwwIDEyLDRBMy41LDMuNSAwIDAsMCA4LjUsNy41VjhINk0xOCwxOEg0QTEsMSAwIDAsMSAzLDE3QTEsMSAwIDAsMSA0LDE2SDE4QTMsMyAwIDAsMSAyMSwxOUEzLDMgMCAwLDEgMTgsMjJDMTcuMTcsMjIgMTYuNDIsMjEuNjYgMTUuODgsMjEuMTJDMTUuNSwyMC43MyAxNS41LDIwLjEgMTUuODgsMTkuNzFDMTYuMjcsMTkuMzIgMTYuOSwxOS4zMiAxNy4yOSwxOS43MUMxNy40NywxOS44OSAxNy43MiwyMCAxOCwyMEExLDEgMCAwLDAgMTksMTlBMSwxIDAgMCwwIDE4LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYiA9IFwiTTE2LjM2LDE0QzE2LjQ0LDEzLjM0IDE2LjUsMTIuNjggMTYuNSwxMkMxNi41LDExLjMyIDE2LjQ0LDEwLjY2IDE2LjM2LDEwSDE5Ljc0QzE5LjksMTAuNjQgMjAsMTEuMzEgMjAsMTJDMjAsMTIuNjkgMTkuOSwxMy4zNiAxOS43NCwxNE0xNC41OSwxOS41NkMxNS4xOSwxOC40NSAxNS42NSwxNy4yNSAxNS45NywxNkgxOC45MkMxNy45NiwxNy42NSAxNi40MywxOC45MyAxNC41OSwxOS41Nk0xNC4zNCwxNEg5LjY2QzkuNTYsMTMuMzQgOS41LDEyLjY4IDkuNSwxMkM5LjUsMTEuMzIgOS41NiwxMC42NSA5LjY2LDEwSDE0LjM0QzE0LjQzLDEwLjY1IDE0LjUsMTEuMzIgMTQuNSwxMkMxNC41LDEyLjY4IDE0LjQzLDEzLjM0IDE0LjM0LDE0TTEyLDE5Ljk2QzExLjE3LDE4Ljc2IDEwLjUsMTcuNDMgMTAuMDksMTZIMTMuOTFDMTMuNSwxNy40MyAxMi44MywxOC43NiAxMiwxOS45Nk04LDhINS4wOEM2LjAzLDYuMzQgNy41Nyw1LjA2IDkuNCw0LjQ0QzguOCw1LjU1IDguMzUsNi43NSA4LDhNNS4wOCwxNkg4QzguMzUsMTcuMjUgOC44LDE4LjQ1IDkuNCwxOS41NkM3LjU3LDE4LjkzIDYuMDMsMTcuNjUgNS4wOCwxNk00LjI2LDE0QzQuMSwxMy4zNiA0LDEyLjY5IDQsMTJDNCwxMS4zMSA0LjEsMTAuNjQgNC4yNiwxMEg3LjY0QzcuNTYsMTAuNjYgNy41LDExLjMyIDcuNSwxMkM3LjUsMTIuNjggNy41NiwxMy4zNCA3LjY0LDE0TTEyLDQuMDNDMTIuODMsNS4yMyAxMy41LDYuNTcgMTMuOTEsOEgxMC4wOUMxMC41LDYuNTcgMTEuMTcsNS4yMyAxMiw0LjAzTTE4LjkyLDhIMTUuOTdDMTUuNjUsNi43NSAxNS4xOSw1LjU1IDE0LjU5LDQuNDRDMTYuNDMsNS4wNyAxNy45Niw2LjM0IDE4LjkyLDhNMTIsMkM2LjQ3LDIgMiw2LjUgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYkJveCA9IFwiTTguOTUgMTMuNEg2LjU4QTUuNSA1LjUgMCAwIDEgNi41OCAxMC42SDguOTVBMTEuNTYgMTEuNTYgMCAwIDAgOC44NSAxMkExMS41NiAxMS41NiAwIDAgMCA4Ljk1IDEzLjRNNy4xNiA5LjJIOS4yQTEyLjA2IDEyLjA2IDAgMCAxIDEwLjE4IDYuNzFBNS41NSA1LjU1IDAgMCAwIDcuMTYgOS4yTTE2Ljg0IDkuMkE1LjU5IDUuNTkgMCAwIDAgMTMuODEgNi43MUExMC45NSAxMC45NSAwIDAgMSAxNC43OCA5LjJNMTIgMTcuNTdBOS41IDkuNSAwIDAgMCAxMy4zNCAxNC44SDEwLjY2QTkuNSA5LjUgMCAwIDAgMTIgMTcuNTdNMTIgNi40MkE5LjUzIDkuNTMgMCAwIDAgMTAuNjYgOS4ySDEzLjM0QTkuNTMgOS41MyAwIDAgMCAxMiA2LjQyTTcuMTYgMTQuOEE1LjYxIDUuNjEgMCAwIDAgMTAuMTggMTcuMjlBMTIuMDYgMTIuMDYgMCAwIDEgOS4yIDE0LjhNMjEgNVYxOUEyIDIgMCAwIDEgMTkgMjFINUEyIDIgMCAwIDEgMyAxOVY1QTIgMiAwIDAgMSA1IDNIMTlBMiAyIDAgMCAxIDIxIDVNMTkgMTJBNyA3IDAgMSAwIDEyIDE5QTcgNyAwIDAgMCAxOSAxMk0xNS4xNSAxMkExMS41NiAxMS41NiAwIDAgMSAxNS4wNSAxMy40SDE3LjQyQTUuNSA1LjUgMCAwIDAgMTcuNDIgMTAuNkgxNS4wNUExMS41NiAxMS41NiAwIDAgMSAxNS4xNSAxMk0xMy44MSAxNy4yOUE1LjYyIDUuNjIgMCAwIDAgMTYuODQgMTQuOEgxNC43OEExMC45NSAxMC45NSAwIDAgMSAxMy44MSAxNy4yOU0xMC4zNiAxMC42QTguODEgOC44MSAwIDAgMCAxMC4zNiAxMy40SDEzLjY0QTEwLjMgMTAuMyAwIDAgMCAxMy43NSAxMkExMC4yMSAxMC4yMSAwIDAgMCAxMy42NCAxMC42WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYkNsb2NrID0gXCJNMTUgMTIuNVYxNi41TDE4IDE4LjVMMTguNzUgMTcuMjVMMTYuNSAxNS43NVYxMi41SDE1TTIyIDEyLjM5QzIyIDEyLjI2IDIyIDEyLjEzIDIyIDEyQzIyIDYuNSAxNy41IDIgMTIgMkM2LjQ3IDIgMiA2LjUgMiAxMkMyIDE3LjUgNi41IDIyIDEyIDIyQzEyLjEzIDIyIDEyLjI0IDIyIDEyLjM3IDIxLjk3QzEzLjQzIDIyLjYyIDE0LjY3IDIzIDE2IDIzQzE5Ljg2IDIzIDIzIDE5Ljg2IDIzIDE2QzIzIDE0LjY4IDIyLjYyIDEzLjQ0IDIyIDEyLjM5TTE5Ljc2IDEwLjExQzE5LjcgMTAuMDcgMTkuNjUgMTAuMDQgMTkuNTkgMTBIMTkuNzRDMTkuNzUgMTAuMDMgMTkuNzUgMTAuMDcgMTkuNzYgMTAuMTFNMTguOTIgOEgxNS45N0MxNS42NSA2Ljc1IDE1LjE5IDUuNTUgMTQuNTkgNC40NEMxNi40MyA1LjA3IDE3Ljk2IDYuMzQgMTguOTIgOE0xMiA0LjAzQzEyLjgzIDUuMjMgMTMuNSA2LjU3IDEzLjkxIDhIMTAuMDlDMTAuNSA2LjU3IDExLjE3IDUuMjMgMTIgNC4wM005LjY2IDEwSDEyLjQxQzExLjE2IDEwLjc1IDEwLjE1IDExLjg4IDkuNTcgMTMuMjRDOS41MyAxMi44MyA5LjUgMTIuNDIgOS41IDEyQzkuNSAxMS4zMiA5LjU2IDEwLjY1IDkuNjYgMTBNOS40IDQuNDRDOC44IDUuNTUgOC4zNSA2Ljc1IDggOEg1LjA4QzYuMDMgNi4zNCA3LjU3IDUuMDYgOS40IDQuNDRNNC4yNiAxNEM0LjEgMTMuMzYgNCAxMi42OSA0IDEyUzQuMSAxMC42NCA0LjI2IDEwSDcuNjRDNy41NiAxMC42NiA3LjUgMTEuMzIgNy41IDEyUzcuNTYgMTMuMzQgNy42NCAxNEg0LjI2TTUuMDggMTZIOEM4LjM1IDE3LjI1IDguOCAxOC40NSA5LjQgMTkuNTZDNy41NyAxOC45MyA2LjAzIDE3LjY1IDUuMDggMTZNMTYgMjFDMTMuMjQgMjEgMTEgMTguNzYgMTEgMTZTMTMuMjQgMTEgMTYgMTEgMjEgMTMuMjQgMjEgMTYgMTguNzYgMjEgMTYgMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2ViY2FtID0gXCJNMTIsMkE3LDcgMCAwLDEgMTksOUE3LDcgMCAwLDEgMTIsMTZBNyw3IDAgMCwxIDUsOUE3LDcgMCAwLDEgMTIsMk0xMiw0QTUsNSAwIDAsMCA3LDlBNSw1IDAgMCwwIDEyLDE0QTUsNSAwIDAsMCAxNyw5QTUsNSAwIDAsMCAxMiw0TTEyLDZBMywzIDAgMCwxIDE1LDlBMywzIDAgMCwxIDEyLDEyQTMsMyAwIDAsMSA5LDlBMywzIDAgMCwxIDEyLDZNNiwyMkEyLDIgMCAwLDEgNCwyMEM0LDE5LjYyIDQuMSwxOS4yNyA0LjI5LDE4Ljk3TDYuMTEsMTUuODFDNy42OSwxNy4xNyA5Ljc1LDE4IDEyLDE4QzE0LjI1LDE4IDE2LjMxLDE3LjE3IDE3Ljg5LDE1LjgxTDE5LjcxLDE4Ljk3QzE5LjksMTkuMjcgMjAsMTkuNjIgMjAsMjBBMiwyIDAgMCwxIDE4LDIySDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2ViY2FtT2ZmID0gXCJNMTIgNkMxMy42NiA2IDE1IDcuMzQgMTUgOUMxNSA5Ljc4IDE0LjcgMTAuNSAxNC4yMSAxMUwxMCA2Ljc5QzEwLjUgNi4zIDExLjIyIDYgMTIgNk0xMiA0QzE0Ljc2IDQgMTcgNi4yNCAxNyA5QzE3IDEwLjMzIDE2LjQ3IDExLjUzIDE1LjYyIDEyLjQyTDE3LjA0IDEzLjg0QzE4LjI1IDEyLjU5IDE5IDEwLjg4IDE5IDlDMTkgNS4xMyAxNS44NyAyIDEyIDJDMTAuMTIgMiA4LjQxIDIuNzUgNy4xNiAzLjk2TDguNTggNS4zOEM5LjQ3IDQuNTMgMTAuNjcgNCAxMiA0TTIyLjExIDIxLjQ2TDIwLjg0IDIyLjczTDE5LjQ2IDIxLjM1QzE5LjEgMjEuNzUgMTguNTggMjIgMTggMjJINkM0Ljg5IDIyIDQgMjEuMTEgNCAyMEM0IDE5LjYyIDQuMSAxOS4yNyA0LjI5IDE4Ljk3TDYuMTEgMTUuODFDNy42OSAxNy4xNyA5Ljc1IDE4IDEyIDE4QzEzLjIxIDE4IDE0LjM3IDE3Ljc1IDE1LjQzIDE3LjMyTDEzLjg1IDE1Ljc0QzEzLjI2IDE1LjkxIDEyLjY0IDE2IDEyIDE2QzguMTMgMTYgNSAxMi44NyA1IDlDNSA4LjM2IDUuMDkgNy43NCA1LjI2IDcuMTVMMS4xMSAzTDIuMzkgMS43M0wyMi4xMSAyMS40Nk0xMi4xIDE0TDcgOC45QzcgOC45MyA3IDguOTcgNyA5QzcgMTEuNzYgOS4yNCAxNCAxMiAxNEMxMi4wMyAxNCAxMi4wNyAxNCAxMi4xIDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlYmhvb2sgPSBcIk0xMC40NiwxOUM5LDIxLjA3IDYuMTUsMjEuNTkgNC4wOSwyMC4xNUMyLjA0LDE4LjcxIDEuNTYsMTUuODQgMywxMy43NUMzLjg3LDEyLjUgNS4yMSwxMS44MyA2LjU4LDExLjc3TDYuNjMsMTMuMkM1LjcyLDEzLjI3IDQuODQsMTMuNzQgNC4yNywxNC41NkMzLjI3LDE2IDMuNTgsMTcuOTQgNC45NSwxOC45MUM2LjMzLDE5Ljg3IDguMjYsMTkuNSA5LjI2LDE4LjA3QzkuNTcsMTcuNjIgOS43NSwxNy4xMyA5LjgyLDE2LjYzVjE1LjYyTDE1LjQsMTUuNThMMTUuNDcsMTUuNDdDMTYsMTQuNTUgMTcuMTUsMTQuMjMgMTguMDUsMTQuNzVDMTguOTUsMTUuMjcgMTkuMjYsMTYuNDMgMTguNzMsMTcuMzVDMTguMiwxOC4yNiAxNy4wNCwxOC41OCAxNi4xNCwxOC4wNkMxNS43MywxNy44MyAxNS40NCwxNy40NiAxNS4zMSwxNy4wNEwxMS4yNCwxNy4wNkMxMS4xMywxNy43MyAxMC44NywxOC4zOCAxMC40NiwxOU0xNy43NCwxMS44NkMyMC4yNywxMi4xNyAyMi4wNywxNC40NCAyMS43NiwxNi45M0MyMS40NSwxOS40MyAxOS4xNSwyMS4yIDE2LjYyLDIwLjg5QzE1LjEzLDIwLjcxIDEzLjksMTkuODYgMTMuMTksMTguNjhMMTQuNDMsMTcuOTZDMTQuOTIsMTguNzMgMTUuNzUsMTkuMjggMTYuNzUsMTkuNDFDMTguNSwxOS42MiAyMC4wNSwxOC40MyAyMC4yNiwxNi43NkMyMC40NywxNS4wOSAxOS4yMywxMy41NiAxNy41LDEzLjM1QzE2Ljk2LDEzLjI5IDE2LjQ0LDEzLjM2IDE1Ljk3LDEzLjUzTDE1LjEyLDEzLjk3TDEyLjU0LDkuMkgxMi4zMkMxMS4yNiw5LjE2IDEwLjQ0LDguMjkgMTAuNDcsNy4yNUMxMC41LDYuMjEgMTEuNCw1LjQgMTIuNDUsNS40NEMxMy41LDUuNSAxNC4zMyw2LjM1IDE0LjMsNy4zOUMxNC4yOCw3LjgzIDE0LjExLDguMjMgMTMuODQsOC41NEwxNS43NCwxMi4wNUMxNi4zNiwxMS44NSAxNy4wNCwxMS43OCAxNy43NCwxMS44Nk04LjI1LDkuMTRDNy4yNSw2Ljc5IDguMzEsNC4xIDEwLjYyLDMuMTJDMTIuOTQsMi4xNCAxNS42MiwzLjI1IDE2LjYyLDUuNkMxNy4yMSw2Ljk3IDE3LjA5LDguNDcgMTYuNDIsOS42N0wxNS4xOCw4Ljk1QzE1LjYsOC4xNCAxNS42Nyw3LjE1IDE1LjI3LDYuMjJDMTQuNTksNC42MiAxMi43OCwzLjg1IDExLjIzLDQuNUM5LjY3LDUuMTYgOC45Nyw3IDkuNjUsOC42QzkuOTMsOS4yNiAxMC40LDkuNzcgMTAuOTcsMTAuMTFMMTEuMzYsMTAuMzJMOC4yOSwxNS4zMUM4LjMyLDE1LjM2IDguMzYsMTUuNDIgOC4zOSwxNS41QzguODgsMTYuNDEgOC41NCwxNy41NiA3LjYyLDE4LjA1QzYuNzEsMTguNTQgNS41NiwxOC4xOCA1LjA2LDE3LjI0QzQuNTcsMTYuMzEgNC45MSwxNS4xNiA1LjgzLDE0LjY3QzYuMjIsMTQuNDYgNi42NSwxNC40MSA3LjA2LDE0LjVMOS4zNywxMC43M0M4LjksMTAuMyA4LjUsOS43NiA4LjI1LDkuMTRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VicGFjayA9IFwiTTIwLjQ1IDE3LjM5TDEyLjM2IDIxLjk3VjE4LjRMMTcuNCAxNS42M0wyMC40NSAxNy4zOU0yMSAxNi44OVY3LjMxTDE4LjA0IDlWMTUuMThMMjEgMTYuODlNMy41NSAxNy4zOUwxMS42NCAyMS45NlYxOC40TDYuNiAxNS42M0wzLjU1IDE3LjM5TTMgMTYuODlWNy4zMUw1Ljk2IDlWMTUuMThMMyAxNi44OU0zLjM1IDYuNjlMMTEuNjQgMlY1LjQ1TDYuMzMgOC4zN0w2LjI4IDguMzlMMy4zNSA2LjY5TTIwLjY1IDYuNjlMMTIuMzYgMlY1LjQ1TDE3LjY3IDguMzhMMTcuNzEgOC40TDIwLjY1IDYuNjlNMTEuNjQgMTcuNTlMNi42NyAxNC44NVY5LjQ0TDExLjY0IDEyLjMxVjE3LjU5TTEyLjM2IDE3LjU5TDE3LjMzIDE0Ljg2VjkuNDRMMTIuMzYgMTIuMzFWMTcuNTlNNyA4LjgxTDEyIDYuMDZMMTcgOC44MUwxMiAxMS42OUw3IDguODFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VicnRjID0gXCJNMTIgMkMxNC40NCAyIDE2LjUgMy43NSAxNi45MSA2LjA3TDE3Ljc1IDZDMjAuNSA2IDIyLjc1IDguMjQgMjIuNzUgMTFDMjIuNzUgMTIuODkgMjEuNyAxNC41MyAyMC4xNiAxNS4zOEMyMC41NCAxNi4wOSAyMC43NSAxNi44OSAyMC43NSAxNy43NUMyMC43NSAyMC41IDE4LjUgMjIuNzUgMTUuNzUgMjIuNzVDMTQuMjYgMjIuNzUgMTIuOTIgMjIuMSAxMiAyMS4wNkMxMS4wOCAyMi4xIDkuNzQgMjIuNzUgOC4yNSAyMi43NUM1LjUgMjIuNzUgMy4yNSAyMC41IDMuMjUgMTcuNzVDMy4yNSAxNi44OSAzLjQ3IDE2LjA5IDMuODQgMTUuMzhDMi4zIDE0LjUzIDEuMjUgMTIuODkgMS4yNSAxMUMxLjI1IDguMjQgMy41IDYgNi4yNSA2TDcuMDkgNi4wN0M3LjUgMy43NSA5LjU2IDIgMTIgMk02Ljc1IDIwLjI1TDEzLjY2IDE3SDE3QzE3LjU1IDE3IDE4IDE2LjU1IDE4IDE2VjlDMTggOC40NSAxNy41NSA4IDE3IDhIN0M2LjQ1IDggNiA4LjQ1IDYgOVYxNkM2IDE2LjU1IDYuNDUgMTcgNyAxN0g3Ljc3TDYuNzUgMjAuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VjaGF0ID0gXCJNOS41LDRDNS4zNiw0IDIsNi42OSAyLDEwQzIsMTEuODkgMy4wOCwxMy41NiA0Ljc4LDE0LjY2TDQsMTdMNi41LDE1LjVDNy4zOSwxNS44MSA4LjM3LDE2IDkuNDEsMTZDOS4xNSwxNS4zNyA5LDE0LjcgOSwxNEM5LDEwLjY5IDEyLjEzLDggMTYsOEMxNi4xOSw4IDE2LjM4LDggMTYuNTYsOC4wM0MxNS41NCw1LjY5IDEyLjc4LDQgOS41LDRNNi41LDYuNUExLDEgMCAwLDEgNy41LDcuNUExLDEgMCAwLDEgNi41LDguNUExLDEgMCAwLDEgNS41LDcuNUExLDEgMCAwLDEgNi41LDYuNU0xMS41LDYuNUExLDEgMCAwLDEgMTIuNSw3LjVBMSwxIDAgMCwxIDExLjUsOC41QTEsMSAwIDAsMSAxMC41LDcuNUExLDEgMCAwLDEgMTEuNSw2LjVNMTYsOUMxMi42OSw5IDEwLDExLjI0IDEwLDE0QzEwLDE2Ljc2IDEyLjY5LDE5IDE2LDE5QzE2LjY3LDE5IDE3LjMxLDE4LjkyIDE3LjkxLDE4Ljc1TDIwLDIwTDE5LjM4LDE4LjEzQzIwLjk1LDE3LjIyIDIyLDE1LjcxIDIyLDE0QzIyLDExLjI0IDE5LjMxLDkgMTYsOU0xNCwxMS41QTEsMSAwIDAsMSAxNSwxMi41QTEsMSAwIDAsMSAxNCwxMy41QTEsMSAwIDAsMSAxMywxMi41QTEsMSAwIDAsMSAxNCwxMS41TTE4LDExLjVBMSwxIDAgMCwxIDE5LDEyLjVBMSwxIDAgMCwxIDE4LDEzLjVBMSwxIDAgMCwxIDE3LDEyLjVBMSwxIDAgMCwxIDE4LDExLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VpZ2h0ID0gXCJNMTIsM0E0LDQgMCAwLDEgMTYsN0MxNiw3LjczIDE1LjgxLDguNDEgMTUuNDYsOUgxOEMxOC45NSw5IDE5Ljc1LDkuNjcgMTkuOTUsMTAuNTZDMjEuOTYsMTguNTcgMjIsMTguNzggMjIsMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlDMiwxOC43OCAyLjA0LDE4LjU3IDQuMDUsMTAuNTZDNC4yNSw5LjY3IDUuMDUsOSA2LDlIOC41NEM4LjE5LDguNDEgOCw3LjczIDgsN0E0LDQgMCAwLDEgMTIsM00xMiw1QTIsMiAwIDAsMCAxMCw3QTIsMiAwIDAsMCAxMiw5QTIsMiAwIDAsMCAxNCw3QTIsMiAwIDAsMCAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlaWdodEdyYW0gPSBcIk0xOS45NSwxMC41NkMxOS43NSw5LjY3IDE4Ljk1LDkgMTgsOUgxNS40NkMxNS44MSw4LjQxIDE2LDcuNzMgMTYsN0E0LDQgMCAwLDAgMTIsM0E0LDQgMCAwLDAgOCw3QzgsNy43MyA4LjE5LDguNDEgOC41NCw5SDZDNS4wNSw5IDQuMjUsOS42NyA0LjA1LDEwLjU2QzIuMDQsMTguNTcgMiwxOC43OCAyLDE5QTIsMiAwIDAsMCA0LDIxSDIwQTIsMiAwIDAsMCAyMiwxOUMyMiwxOC43OCAyMS45NiwxOC41NyAxOS45NSwxMC41Nk0xMiw1QTIsMiAwIDAsMSAxNCw3QTIsMiAwIDAsMSAxMiw5QTIsMiAwIDAsMSAxMCw3QTIsMiAwIDAsMSAxMiw1TTE1LDEzSDExVjE3SDEzVjE0SDE1VjE5SDExQzkuODksMTkgOSwxOC4xMSA5LDE3VjEzQzksMTEuODkgOS44OSwxMSAxMSwxMUgxNVYxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXZWlnaHRLaWxvZ3JhbSA9IFwiTTEyLDNBNCw0IDAgMCwxIDE2LDdDMTYsNy43MyAxNS44MSw4LjQxIDE1LjQ2LDlIMThDMTguOTUsOSAxOS43NSw5LjY3IDE5Ljk1LDEwLjU2QzIxLjk2LDE4LjU3IDIyLDE4Ljc4IDIyLDE5QTIsMiAwIDAsMSAyMCwyMUg0QTIsMiAwIDAsMSAyLDE5QzIsMTguNzggMi4wNCwxOC41NyA0LjA1LDEwLjU2QzQuMjUsOS42NyA1LjA1LDkgNiw5SDguNTRDOC4xOSw4LjQxIDgsNy43MyA4LDdBNCw0IDAgMCwxIDEyLDNNMTIsNUEyLDIgMCAwLDAgMTAsN0EyLDIgMCAwLDAgMTIsOUEyLDIgMCAwLDAgMTQsN0EyLDIgMCAwLDAgMTIsNU02LDExVjE5SDhWMTYuNUw5LDE3LjVWMTlIMTFWMTdMOSwxNUwxMSwxM1YxMUg5VjEyLjVMOCwxMy41VjExSDZNMTUsMTFDMTMuODksMTEgMTMsMTEuODkgMTMsMTNWMTdDMTMsMTguMTEgMTMuODksMTkgMTUsMTlIMThWMTRIMTZWMTdIMTVWMTNIMThWMTFIMTVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2VpZ2h0TGlmdGVyID0gXCJNMTIgNUMxMC44OSA1IDEwIDUuODkgMTAgN1MxMC44OSA5IDEyIDkgMTQgOC4xMSAxNCA3IDEzLjExIDUgMTIgNU0yMiAxVjZIMjBWNEg0VjZIMlYxSDRWM0gyMFYxSDIyTTE1IDExLjI2VjIzSDEzVjE4SDExVjIzSDlWMTEuMjZDNi45MyAxMC4xNyA1LjUgOCA1LjUgNS41TDUuNSA1SDcuNUw3LjUgNS41QzcuNSA4IDkuNSAxMCAxMiAxMFMxNi41IDggMTYuNSA1LjVMMTYuNSA1SDE4LjVMMTguNSA1LjVDMTguNSA4IDE3LjA3IDEwLjE3IDE1IDExLjI2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdlaWdodFBvdW5kID0gXCJNMTIsM0E0LDQgMCAwLDEgMTYsN0MxNiw3LjczIDE1LjgxLDguNDEgMTUuNDYsOUgxOEMxOC45NSw5IDE5Ljc1LDkuNjcgMTkuOTUsMTAuNTZDMjEuOTYsMTguNTcgMjIsMTguNzggMjIsMTlBMiwyIDAgMCwxIDIwLDIxSDRBMiwyIDAgMCwxIDIsMTlDMiwxOC43OCAyLjA0LDE4LjU3IDQuMDUsMTAuNTZDNC4yNSw5LjY3IDUuMDUsOSA2LDlIOC41NEM4LjE5LDguNDEgOCw3LjczIDgsN0E0LDQgMCAwLDEgMTIsM00xMiw1QTIsMiAwIDAsMCAxMCw3QTIsMiAwIDAsMCAxMiw5QTIsMiAwIDAsMCAxNCw3QTIsMiAwIDAsMCAxMiw1TTYsMTFWMTlIMTFWMTdIOFYxMUg2TTEzLDExVjE5SDE2QzE3LjExLDE5IDE4LDE4LjExIDE4LDE3VjE2LjVDMTgsMTUuOTMgMTcuNzUsMTUuMzggMTcuMzIsMTVDMTcuNzUsMTQuNjIgMTgsMTQuMDcgMTgsMTMuNVYxM0MxOCwxMS44OSAxNy4xMSwxMSAxNiwxMUgxM00xNSwxM0gxNlYxNEgxNVYxM00xNSwxNkgxNlYxN0gxNVYxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGF0c2FwcCA9IFwiTTEyLjA0IDJDNi41OCAyIDIuMTMgNi40NSAyLjEzIDExLjkxQzIuMTMgMTMuNjYgMi41OSAxNS4zNiAzLjQ1IDE2Ljg2TDIuMDUgMjJMNy4zIDIwLjYyQzguNzUgMjEuNDEgMTAuMzggMjEuODMgMTIuMDQgMjEuODNDMTcuNSAyMS44MyAyMS45NSAxNy4zOCAyMS45NSAxMS45MkMyMS45NSA5LjI3IDIwLjkyIDYuNzggMTkuMDUgNC45MUMxNy4xOCAzLjAzIDE0LjY5IDIgMTIuMDQgMk0xMi4wNSAzLjY3QzE0LjI1IDMuNjcgMTYuMzEgNC41MyAxNy44NyA2LjA5QzE5LjQyIDcuNjUgMjAuMjggOS43MiAyMC4yOCAxMS45MkMyMC4yOCAxNi40NiAxNi41OCAyMC4xNSAxMi4wNCAyMC4xNUMxMC41NiAyMC4xNSA5LjExIDE5Ljc2IDcuODUgMTlMNy41NSAxOC44M0w0LjQzIDE5LjY1TDUuMjYgMTYuNjFMNS4wNiAxNi4yOUM0LjI0IDE1IDMuOCAxMy40NyAzLjggMTEuOTFDMy44MSA3LjM3IDcuNSAzLjY3IDEyLjA1IDMuNjdNOC41MyA3LjMzQzguMzcgNy4zMyA4LjEgNy4zOSA3Ljg3IDcuNjRDNy42NSA3Ljg5IDcgOC41IDcgOS43MUM3IDEwLjkzIDcuODkgMTIuMSA4IDEyLjI3QzguMTQgMTIuNDQgOS43NiAxNC45NCAxMi4yNSAxNkMxMi44NCAxNi4yNyAxMy4zIDE2LjQyIDEzLjY2IDE2LjUzQzE0LjI1IDE2LjcyIDE0Ljc5IDE2LjY5IDE1LjIyIDE2LjYzQzE1LjcgMTYuNTYgMTYuNjggMTYuMDMgMTYuODkgMTUuNDVDMTcuMSAxNC44NyAxNy4xIDE0LjM4IDE3LjA0IDE0LjI3QzE2Ljk3IDE0LjE3IDE2LjgxIDE0LjExIDE2LjU2IDE0QzE2LjMxIDEzLjg2IDE1LjA5IDEzLjI2IDE0Ljg3IDEzLjE4QzE0LjY0IDEzLjEgMTQuNSAxMy4wNiAxNC4zMSAxMy4zQzE0LjE1IDEzLjU1IDEzLjY3IDE0LjExIDEzLjUzIDE0LjI3QzEzLjM4IDE0LjQ0IDEzLjI0IDE0LjQ2IDEzIDE0LjM0QzEyLjc0IDE0LjIxIDExLjk0IDEzLjk1IDExIDEzLjExQzEwLjI2IDEyLjQ1IDkuNzcgMTEuNjQgOS42MiAxMS4zOUM5LjUgMTEuMTUgOS42MSAxMSA5LjczIDEwLjg5QzkuODQgMTAuNzggMTAgMTAuNiAxMC4xIDEwLjQ1QzEwLjIzIDEwLjMxIDEwLjI3IDEwLjIgMTAuMzUgMTAuMDRDMTAuNDMgOS44NyAxMC4zOSA5LjczIDEwLjMzIDkuNjFDMTAuMjcgOS41IDkuNzcgOC4yNiA5LjU2IDcuNzdDOS4zNiA3LjI5IDkuMTYgNy4zNSA5IDcuMzRDOC44NiA3LjM0IDguNyA3LjMzIDguNTMgNy4zM1pcIjtcclxuZXhwb3J0IHZhciBtZGlXaGVlbEJhcnJvdyA9IFwiTTE4IDE1LjVDMTguODMgMTUuNSAxOS41IDE2LjE3IDE5LjUgMTdTMTguODMgMTguNSAxOCAxOC41IDE2LjUgMTcuODMgMTYuNSAxNyAxNy4xNyAxNS41IDE4IDE1LjVNMTggMTRDMTYuMzQgMTQgMTUgMTUuMzQgMTUgMTdTMTYuMzQgMjAgMTggMjBDMTkuNjYgMjAgMjEgMTguNjYgMjEgMTdTMTkuNjYgMTQgMTggMTRNNyA4TDUgNUgyVjdINS4xM0w4IDExLjNWMjBIMTBMMTIuNTcgMTVIMTQuNTVDMTUuMjUgMTMuODEgMTYuNSAxMyAxOCAxM0MxOC44OCAxMyAxOS42OSAxMy4yOSAyMC4zNSAxMy43OEwyMiA4SDdNOS4zOSAxOUg5VjEyLjhMOS44NyAxNC4xMUMxMC4yMyAxNC42NCAxMC44MiAxNC45NiAxMS40NSAxNUw5LjM5IDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdoZWVsY2hhaXJBY2Nlc3NpYmlsaXR5ID0gXCJNMTguNCwxMS4yTDE0LjMsMTEuNEwxNi42LDguOEMxNi44LDguNSAxNi45LDggMTYuOCw3LjVDMTYuNyw3LjIgMTYuNiw2LjkgMTYuMyw2LjdMMTAuOSwzLjVDMTAuNSwzLjIgOS45LDMuMyA5LjUsMy42TDYuOCw2LjFDNi4zLDYuNiA2LjIsNy4zIDYuNyw3LjhDNy4xLDguMyA3LjksOC4zIDguNCw3LjlMMTAuNCw2LjFMMTIuMyw3LjJMOC4xLDExLjVDOCwxMS42IDgsMTEuNyA3LjksMTEuN0M3LjQsMTEuOSA2LjksMTIuMSA2LjUsMTIuNEw4LDEzLjlDOC41LDEzLjcgOSwxMy41IDkuNSwxMy41QzExLjQsMTMuNSAxMywxNS4xIDEzLDE3QzEzLDE3LjYgMTIuOSwxOC4xIDEyLjYsMTguNUwxNC4xLDIwQzE0LjcsMTkuMSAxNSwxOC4xIDE1LDE3QzE1LDE1LjggMTQuNiwxNC42IDEzLjksMTMuN0wxNy4yLDEzLjRMMTcsMTguMkMxNi45LDE4LjkgMTcuNCwxOS40IDE4LjEsMTkuNUgxOC4yQzE4LjgsMTkuNSAxOS4zLDE5IDE5LjQsMTguNEwxOS42LDEyLjVDMTkuNiwxMi4yIDE5LjUsMTEuOCAxOS4zLDExLjZDMTksMTEuMyAxOC43LDExLjIgMTguNCwxMS4yTTE4LDUuNUEyLDIgMCAwLDAgMjAsMy41QTIsMiAwIDAsMCAxOCwxLjVBMiwyIDAgMCwwIDE2LDMuNUEyLDIgMCAwLDAgMTgsNS41TTEyLjUsMjEuNkMxMS42LDIyLjIgMTAuNiwyMi41IDkuNSwyMi41QzYuNSwyMi41IDQsMjAgNCwxN0M0LDE1LjkgNC4zLDE0LjkgNC45LDE0TDYuNCwxNS41QzYuMiwxNiA2LDE2LjUgNiwxN0M2LDE4LjkgNy42LDIwLjUgOS41LDIwLjVDMTAuMSwyMC41IDEwLjYsMjAuNCAxMSwyMC4xTDEyLjUsMjEuNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGlzdGxlID0gXCJNOC41LDlBNi41LDYuNSAwIDAsMCAyLDE1LjVBNi41LDYuNSAwIDAsMCA4LjUsMjJBNi41LDYuNSAwIDAsMCAxNSwxNS41VjEzLjkxTDIyLDEyVjlIMTFWMTFIOVY5SDguNU0xMSwyVjdIOVYySDExTTYuMzUsNy4yOEM1LjY4LDcuNDQgNS4wNCw3LjY4IDQuNDMsOEwyLjE0LDQuODhMMy43NiwzLjdMNi4zNSw3LjI4TTE3Ljg2LDQuODhMMTYuMzIsN0gxMy44NUwxNi4yNCwzLjdMMTcuODYsNC44OFpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGlzdGxlT3V0bGluZSA9IFwiTTMuNzYgMy43TDIuMTQgNC44OEw0LjQzIDhBOC4yMyA4LjIzIDAgMCAxIDYuMzUgNy4yOE0xMSA5VjExSDE4VjExLjI5TDEzIDEyLjcxVjE1LjVBNC41IDQuNSAwIDEgMSA4LjUgMTFIOVY5SDguNUE2LjUgNi41IDAgMSAwIDE1IDE1LjVWMTMuOTFMMjIgMTJWOU0xNi4yNCAzLjdMMTMuODUgN0gxNi4zMkwxNy44NiA0Ljg4TTkgMlY3SDExVjJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2hpdGVCYWxhbmNlQXV0byA9IFwiTTEwLjMsMTZMOS42LDE0SDYuNEw1LjcsMTZIMy44TDcsN0g5TDEyLjIsMTZNMjIsN0wyMC44LDEzLjI5TDE5LjMsN0gxNy43TDE2LjIxLDEzLjI5TDE1LDdIMTQuMjRDMTIuNzcsNS4xNyAxMC41LDQgOCw0QTgsOCAwIDAsMCAwLDEyQTgsOCAwIDAsMCA4LDIwQzExLjEzLDIwIDEzLjg0LDE4LjE5IDE1LjE1LDE1LjU3TDE1LjI1LDE2SDE3TDE4LjUsOS45TDIwLDE2SDIxLjc1TDIzLjgsN002Ljg1LDEyLjY1SDkuMTVMOCw5TDYuODUsMTIuNjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2hpdGVCYWxhbmNlSW5jYW5kZXNjZW50ID0gXCJNMTcuMjQsMTguMTVMMTkuMDQsMTkuOTVMMjAuNDUsMTguNTNMMTguNjYsMTYuNzRNMjAsMTIuNUgyM1YxMC41SDIwTTE1LDYuMzFWMS41SDlWNi4zMUM3LjIxLDcuMzUgNiw5LjI4IDYsMTEuNUE2LDYgMCAwLDAgMTIsMTcuNUE2LDYgMCAwLDAgMTgsMTEuNUMxOCw5LjI4IDE2Ljc5LDcuMzUgMTUsNi4zMU00LDEwLjVIMVYxMi41SDRNMTEsMjIuNDVDMTEuMzIsMjIuNDUgMTMsMjIuNDUgMTMsMjIuNDVWMTkuNUgxMU0zLjU1LDE4LjUzTDQuOTYsMTkuOTVMNi43NiwxOC4xNUw1LjM0LDE2Ljc0TDMuNTUsMTguNTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2hpdGVCYWxhbmNlSXJpZGVzY2VudCA9IFwiTTQuOTYsMTkuOTVMNi43NiwxOC4xNUw1LjM0LDE2Ljc0TDMuNTUsMTguNTNNMy41NSw0LjQ2TDUuMzQsNi4yNkw2Ljc2LDQuODRMNC45NiwzLjA1TTIwLjQ1LDE4LjUzTDE4LjY2LDE2Ljc0TDE3LjI0LDE4LjE1TDE5LjA0LDE5Ljk1TTEzLDIyLjQ1VjE5LjVIMTFWMjIuNDVDMTEuMzIsMjIuNDUgMTMsMjIuNDUgMTMsMjIuNDVNMTkuMDQsMy4wNUwxNy4yNCw0Ljg0TDE4LjY2LDYuMjZMMjAuNDUsNC40Nk0xMSwzLjVIMTNWMC41NUgxMU01LDE0LjVIMTlWOC41SDVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaGl0ZUJhbGFuY2VTdW5ueSA9IFwiTTMuNTUsMTguNTRMNC45NiwxOS45NUw2Ljc2LDE4LjE2TDUuMzQsMTYuNzRNMTEsMjIuNDVDMTEuMzIsMjIuNDUgMTMsMjIuNDUgMTMsMjIuNDVWMTkuNUgxMU0xMiw1LjVBNiw2IDAgMCwwIDYsMTEuNUE2LDYgMCAwLDAgMTIsMTcuNUE2LDYgMCAwLDAgMTgsMTEuNUMxOCw4LjE4IDE1LjMxLDUuNSAxMiw1LjVNMjAsMTIuNUgyM1YxMC41SDIwTTE3LjI0LDE4LjE2TDE5LjA0LDE5Ljk1TDIwLjQ1LDE4LjU0TDE4LjY2LDE2Ljc0TTIwLjQ1LDQuNDZMMTkuMDQsMy4wNUwxNy4yNCw0Ljg0TDE4LjY2LDYuMjZNMTMsMC41NUgxMVYzLjVIMTNNNCwxMC41SDFWMTIuNUg0TTYuNzYsNC44NEw0Ljk2LDMuMDVMMy41NSw0LjQ2TDUuMzQsNi4yNkw2Ljc2LDQuODRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lkZ2V0cyA9IFwiTTMsM0gxMVY3LjM0TDE2LjY2LDEuNjlMMjIuMzEsNy4zNEwxNi42NiwxM0gyMVYyMUgxM1YxM0gxNi42NkwxMSw3LjM0VjExSDNWM00zLDEzSDExVjIxSDNWMTNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lkZ2V0c091dGxpbmUgPSBcIk0xNi43IDQuNUwxOS41IDcuM0wxNi43IDEwLjFMMTMuOSA3LjNMMTYuNyA0LjVNOSA1VjlINVY1SDlNMTkgMTVWMTlIMTVWMTVIMTlNMTYuNyAxLjdMMTEgNy4zTDE2LjcgMTNIMTNWMjFIMjFWMTNIMTYuN0wyMi4zIDcuM0wxNi43IDEuN00xMSAzSDNWMTFIMTFWM005IDE1VjE5SDVWMTVIOU0xMSAxM0gzVjIxSDExVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmkgPSBcIk0xMiwyMUwxNS42LDE2LjJDMTQuNiwxNS40NSAxMy4zNSwxNSAxMiwxNUMxMC42NSwxNSA5LjQsMTUuNDUgOC40LDE2LjJMMTIsMjFNMTIsM0M3Ljk1LDMgNC4yMSw0LjM0IDEuMiw2LjZMMyw5QzUuNSw3LjEyIDguNjIsNiAxMiw2QzE1LjM4LDYgMTguNSw3LjEyIDIxLDlMMjIuOCw2LjZDMTkuNzksNC4zNCAxNi4wNSwzIDEyLDNNMTIsOUM5LjMsOSA2LjgxLDkuODkgNC44LDExLjRMNi42LDEzLjhDOC4xLDEyLjY3IDkuOTcsMTIgMTIsMTJDMTQuMDMsMTIgMTUuOSwxMi42NyAxNy40LDEzLjhMMTkuMiwxMS40QzE3LjE5LDkuODkgMTQuNyw5IDEyLDlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUFsZXJ0ID0gXCJNMjAuMjQgNUgxOFY3LjI1QzE2LjE2IDYuNDUgMTQuMTMgNiAxMiA2QzguNjIgNiA1LjUgNy4xMiAzIDlMMS4yIDYuNkM0LjIxIDQuMzQgNy45NSAzIDEyIDNDMTQuOTcgMyAxNy43NyAzLjczIDIwLjI0IDVNOC40IDE2LjJMMTIgMjFMMTUuNiAxNi4yQzE0LjYgMTUuNDUgMTMuMzUgMTUgMTIgMTVTOS40IDE1LjQ1IDguNCAxNi4yTTQuOCAxMS40TDYuNiAxMy44QzguMSAxMi42NyA5Ljk3IDEyIDEyIDEyUzE1LjkgMTIuNjcgMTcuNCAxMy44TDE4IDEzVjEwLjYyQzE2LjIzIDkuNTkgMTQuMTkgOSAxMiA5QzkuMyA5IDYuODEgOS44OSA0LjggMTEuNE0yMCAxN0gyMlYxNUgyMFYxN00yMCA3VjEzSDIyVjdIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUFycm93RG93biA9IFwiTTEyIDZDOC42MiA2IDUuNSA3LjEyIDMgOUwxLjIgNi42QzQuMjEgNC4zNCA3Ljk1IDMgMTIgM1MxOS43OSA0LjM0IDIyLjggNi42TDIxIDlDMTguNSA3LjEyIDE1LjM4IDYgMTIgNk0xMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJMMTIgMjFMMTMuMDQgMTkuNjFDMTMgMTkuNDEgMTMgMTkuMjEgMTMgMTlDMTMgMTcuNjYgMTMuNDQgMTYuNDMgMTQuMTkgMTUuNDNDMTMuNSAxNS4xNiAxMi43NyAxNSAxMiAxNU0xNi44NCAxMy40MUMxNy4xOCAxMy4yNyAxNy41NSAxMy4xNyAxNy45MiAxMy4xTDE5LjIgMTEuNEMxNy4xOSA5Ljg5IDE0LjcgOSAxMiA5UzYuODEgOS44OSA0LjggMTEuNEw2LjYgMTMuOEM4LjEgMTIuNjcgOS45NyAxMiAxMiAxMkMxMy43OCAxMiAxNS40NCAxMi41IDE2Ljg0IDEzLjQxTTIwIDE2SDE4VjIwSDE2TDE5IDIzTDIyIDIwSDIwVjE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlBcnJvd0xlZnQgPSBcIk0xMiAxMkM5Ljk3IDEyIDguMSAxMi42NyA2LjYgMTMuOEw0LjggMTEuNEM2LjgxIDkuODkgOS4zIDkgMTIgOVMxNy4xOSA5Ljg5IDE5LjIgMTEuNEwxNy45MiAxMy4xQzE3LjU1IDEzLjE3IDE3LjE4IDEzLjI3IDE2Ljg0IDEzLjQxQzE1LjQ0IDEyLjUgMTMuNzggMTIgMTIgMTJNMjEgOUwyMi44IDYuNkMxOS43OSA0LjM0IDE2LjA1IDMgMTIgM1M0LjIxIDQuMzQgMS4yIDYuNkwzIDlDNS41IDcuMTIgOC42MiA2IDEyIDZTMTguNSA3LjEyIDIxIDlNMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTDEyIDIxTDEzLjA0IDE5LjYxQzEzIDE5LjQxIDEzIDE5LjIxIDEzIDE5QzEzIDE3LjY2IDEzLjQ0IDE2LjQzIDE0LjE5IDE1LjQzQzEzLjUgMTUuMTYgMTIuNzcgMTUgMTIgMTVNMTggMTZMMTUgMTlMMTggMjJWMjBIMjJWMThIMThWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUFycm93TGVmdFJpZ2h0ID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE4IDE4LjVMMTUgMjFMMTggMjMuNVYyMkgyMlYyMEgxOFYxOC41TTIzIDE3TDIwIDE0LjVWMTZIMTZWMThIMjBWMTkuNUwyMyAxN1pcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpQXJyb3dSaWdodCA9IFwiTTEyIDZDOC42MiA2IDUuNSA3LjEyIDMgOUwxLjIgNi42QzQuMjEgNC4zNCA3Ljk1IDMgMTIgM1MxOS43OSA0LjM0IDIyLjggNi42TDIxIDlDMTguNSA3LjEyIDE1LjM4IDYgMTIgNk0xNi44NCAxMy40MUMxNy4xOCAxMy4yNyAxNy41NSAxMy4xNyAxNy45MiAxMy4xTDE5LjIgMTEuNEMxNy4xOSA5Ljg5IDE0LjcgOSAxMiA5UzYuODEgOS44OSA0LjggMTEuNEw2LjYgMTMuOEM4LjEgMTIuNjcgOS45NyAxMiAxMiAxMkMxMy43OCAxMiAxNS40NCAxMi41IDE2Ljg0IDEzLjQxTTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTIzIDE5TDIwIDE2VjE4SDE2VjIwSDIwVjIyTDIzIDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlBcnJvd1VwID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE2IDE4SDE4VjIySDIwVjE4SDIyTDE5IDE1TDE2IDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlBcnJvd1VwRG93biA9IFwiTTEyIDEyQzkuOTcgMTIgOC4xIDEyLjY3IDYuNiAxMy44TDQuOCAxMS40QzYuODEgOS44OSA5LjMgOSAxMiA5UzE3LjE5IDkuODkgMTkuMiAxMS40TDE3LjkyIDEzLjFDMTcuNTUgMTMuMTcgMTcuMTggMTMuMjcgMTYuODQgMTMuNDFDMTUuNDQgMTIuNSAxMy43OCAxMiAxMiAxMk0yMSA5TDIyLjggNi42QzE5Ljc5IDQuMzQgMTYuMDUgMyAxMiAzUzQuMjEgNC4zNCAxLjIgNi42TDMgOUM1LjUgNy4xMiA4LjYyIDYgMTIgNlMxOC41IDcuMTIgMjEgOU0xMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJMMTIgMjFMMTMuMDQgMTkuNjFDMTMgMTkuNDEgMTMgMTkuMjEgMTMgMTlDMTMgMTcuNjYgMTMuNDQgMTYuNDMgMTQuMTkgMTUuNDNDMTMuNSAxNS4xNiAxMi43NyAxNSAxMiAxNU0xNyAxNUwxNC41IDE4SDE2VjIySDE4VjE4SDE5LjVMMTcgMTVNMjIgMjBWMTZIMjBWMjBIMTguNUwyMSAyM0wyMy41IDIwSDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlDYW5jZWwgPSBcIk0xMiA2QzguNjIgNiA1LjUgNy4xMiAzIDlMMS4yIDYuNkM0LjIxIDQuMzQgNy45NSAzIDEyIDNTMTkuNzkgNC4zNCAyMi44IDYuNkwyMSA5QzE4LjUgNy4xMiAxNS4zOCA2IDEyIDZNMTUuNTMgMTIuNzJDMTYuNDIgMTIuMjYgMTcuNDMgMTIgMTguNSAxMkMxOC41OCAxMiAxOC42NiAxMiAxOC43NCAxMkwxOS4yIDExLjRDMTcuMTkgOS44OSAxNC43IDkgMTIgOVM2LjgxIDkuODkgNC44IDExLjRMNi42IDEzLjhDOC4xIDEyLjY3IDkuOTcgMTIgMTIgMTJDMTMuMjYgMTIgMTQuNDUgMTIuMjYgMTUuNTMgMTIuNzJNMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTDEyIDIxTDEyLjM0IDIwLjU0QzEyLjEzIDE5LjkgMTIgMTkuMjIgMTIgMTguNUMxMiAxNy4yNCAxMi4zNiAxNi4wOCAxMyAxNS4wOEMxMi42NiAxNS4wMyAxMi4zMyAxNSAxMiAxNU0yMyAxOC41QzIzIDIxIDIxIDIzIDE4LjUgMjNTMTQgMjEgMTQgMTguNSAxNiAxNCAxOC41IDE0IDIzIDE2IDIzIDE4LjVNMjAgMjEuMDhMMTUuOTIgMTdDMTUuNjUgMTcuNDIgMTUuNSAxNy45NCAxNS41IDE4LjVDMTUuNSAyMC4xNiAxNi44NCAyMS41IDE4LjUgMjEuNUMxOS4wNiAyMS41IDE5LjU4IDIxLjM1IDIwIDIxLjA4TTIxLjUgMTguNUMyMS41IDE2Ljg0IDIwLjE2IDE1LjUgMTguNSAxNS41QzE3Ljk0IDE1LjUgMTcuNDIgMTUuNjUgMTcgMTUuOTJMMjEuMDggMjBDMjEuMzUgMTkuNTggMjEuNSAxOS4wNiAyMS41IDE4LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUNoZWNrID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE3Ljc1IDE5LjQzTDE2LjE2IDE3Ljg0TDE1IDE5TDE3Ljc1IDIyTDIyLjUgMTcuMjVMMjEuMzQgMTUuODRMMTcuNzUgMTkuNDNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUNvZyA9IFwiTTEyIDEyQzkuOTcgMTIgOC4xIDEyLjY3IDYuNiAxMy44TDQuOCAxMS40QzYuODEgOS44OSA5LjMgOSAxMiA5UzE3LjE5IDkuODkgMTkuMiAxMS40TDE4Ljc0IDEyQzE3LjY2IDEyLjA1IDE2LjYzIDEyLjMzIDE1LjczIDEyLjgxQzE0LjYgMTIuMjkgMTMuMzMgMTIgMTIgMTJNMjEgOUwyMi44IDYuNkMxOS43OSA0LjM0IDE2LjA1IDMgMTIgM1M0LjIxIDQuMzQgMS4yIDYuNkwzIDlDNS41IDcuMTIgOC42MiA2IDEyIDZTMTguNSA3LjEyIDIxIDlNMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTDEyIDIxTDEyLjIyIDIwLjcxQzEyLjA4IDIwLjE2IDEyIDE5LjU5IDEyIDE5QzEyIDE3LjU3IDEyLjQzIDE2LjI0IDEzLjE3IDE1LjEzQzEyLjc5IDE1LjA1IDEyLjQgMTUgMTIgMTVNMjMuOCAyMC40QzIzLjkgMjAuNCAyMy45IDIwLjUgMjMuOCAyMC42TDIyLjggMjIuM0MyMi43IDIyLjQgMjIuNiAyMi40IDIyLjUgMjIuNEwyMS4zIDIyQzIxIDIyLjIgMjAuOCAyMi4zIDIwLjUgMjIuNUwyMC4zIDIzLjhDMjAuMyAyMy45IDIwLjIgMjQgMjAuMSAyNEgxOC4xQzE4IDI0IDE3LjkgMjMuOSAxNy44IDIzLjhMMTcuNiAyMi41QzE3LjMgMjIuNCAxNyAyMi4yIDE2LjggMjJMMTUuNiAyMi41QzE1LjUgMjIuNSAxNS40IDIyLjUgMTUuMyAyMi40TDE0LjMgMjAuN0MxNC4yIDIwLjYgMTQuMyAyMC41IDE0LjQgMjAuNEwxNS41IDE5LjZWMTguNkwxNC40IDE3LjhDMTQuMyAxNy43IDE0LjMgMTcuNiAxNC4zIDE3LjVMMTUuMyAxNS44QzE1LjQgMTUuNyAxNS41IDE1LjcgMTUuNiAxNS43TDE2LjggMTYuMkMxNy4xIDE2IDE3LjMgMTUuOSAxNy42IDE1LjdMMTcuOCAxNC40QzE3LjggMTQuMyAxNy45IDE0LjIgMTguMSAxNC4ySDIwLjFDMjAuMiAxNC4yIDIwLjMgMTQuMyAyMC4zIDE0LjRMMjAuNSAxNS43QzIwLjggMTUuOCAyMS4xIDE2IDIxLjQgMTYuMkwyMi42IDE1LjdDMjIuNyAxNS43IDIyLjkgMTUuNyAyMi45IDE1LjhMMjMuOSAxNy41QzI0IDE3LjYgMjMuOSAxNy43IDIzLjggMTcuOEwyMi43IDE4LjZWMTkuNkwyMy44IDIwLjRNMjAuNSAxOUMyMC41IDE4LjIgMTkuOCAxNy41IDE5IDE3LjVTMTcuNSAxOC4yIDE3LjUgMTkgMTguMiAyMC41IDE5IDIwLjUgMjAuNSAxOS44IDIwLjUgMTlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUxvY2sgPSBcIk0xMiA2QzguNjIgNiA1LjUgNy4xMiAzIDlMMS4yIDYuNkM0LjIxIDQuMzQgNy45NSAzIDEyIDNTMTkuNzkgNC4zNCAyMi44IDYuNkwyMSA5QzE4LjUgNy4xMiAxNS4zOCA2IDEyIDZNMTcuNCAxMC4yOUMxNS43NyA5LjQ3IDEzLjk0IDkgMTIgOUM5LjMgOSA2LjgxIDkuODkgNC44IDExLjRMNi42IDEzLjhDOC4xIDEyLjY3IDkuOTcgMTIgMTIgMTJDMTIuOTcgMTIgMTMuOSAxMi4xNiAxNC43OCAxMi40NEMxNS4zNCAxMS40NSAxNi4yNyAxMC42OCAxNy40IDEwLjI5TTguNCAxNi4yTDEyIDIxTDEzIDE5LjY3VjE3LjJDMTMgMTYuNSAxMy4yNyAxNS44MSAxMy43IDE1LjI2QzEzLjE2IDE1LjEgMTIuNTkgMTUgMTIgMTVDMTAuNjUgMTUgOS40IDE1LjQ1IDguNCAxNi4yTTIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTQuNUMxNi4yIDEzLjEgMTcuNiAxMiAxOSAxMlMyMS44IDEzLjEgMjEuOCAxNC41VjE2QzIyLjQgMTYgMjMgMTYuNiAyMyAxNy4zTTIwLjUgMTQuNUMyMC41IDEzLjcgMTkuOCAxMy4yIDE5IDEzLjJTMTcuNSAxMy43IDE3LjUgMTQuNVYxNkgyMC41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaUxvY2tPcGVuID0gXCJNMTIgNkM4LjYyIDYgNS41IDcuMTIgMyA5TDEuMiA2LjZDNC4yMSA0LjM0IDcuOTUgMyAxMiAzUzE5Ljc5IDQuMzQgMjIuOCA2LjZMMjEgOUMxOC41IDcuMTIgMTUuMzggNiAxMiA2TTE2LjMxIDkuODFDMTQuOTcgOS4yOSAxMy41IDkgMTIgOUM5LjMgOSA2LjgxIDkuODkgNC44IDExLjRMNi42IDEzLjhDOC4xIDEyLjY3IDkuOTcgMTIgMTIgMTJDMTIuODMgMTIgMTMuNjMgMTIuMTIgMTQuMzkgMTIuMzNDMTQuNyAxMS4zIDE1LjM4IDEwLjQxIDE2LjMxIDkuODFNOC40IDE2LjJMMTIgMjFMMTMgMTkuNjdWMTcuMkMxMyAxNi41IDEzLjI3IDE1LjgxIDEzLjcgMTUuMjZDMTMuMTYgMTUuMSAxMi41OSAxNSAxMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaU1hcmtlciA9IFwiTTEyIDZDOC42MiA2IDUuNSA3LjEyIDMgOUwxLjIgNi42QzQuMjEgNC4zNCA3Ljk1IDMgMTIgM1MxOS43OSA0LjM0IDIyLjggNi42TDIxIDlDMTguNSA3LjEyIDE1LjM4IDYgMTIgNk0xMyAxNS4wOUMxMi42OSAxNS4wMyAxMi4zNSAxNSAxMiAxNUMxMC42NSAxNSA5LjQgMTUuNDUgOC40IDE2LjJMMTIgMjFMMTMuOCAxOC42QzEzLjMzIDE3LjU4IDEzIDE2LjUgMTMgMTUuNUMxMyAxNS4zNiAxMyAxNS4yMyAxMyAxNS4wOU0xMiA5QzkuMyA5IDYuODEgOS44OSA0LjggMTEuNEw2LjYgMTMuOEM4LjEgMTIuNjcgOS45NyAxMiAxMiAxMkMxMi43MyAxMiAxMy40MyAxMi4wOSAxNC4xIDEyLjI1QzE0Ljg2IDExLjI1IDE1LjkzIDEwLjUgMTcuMTcgMTAuMThDMTUuNiA5LjQzIDEzLjg1IDkgMTIgOU0yMiAxNS41QzIyIDE4LjEgMTguNSAyMiAxOC41IDIyUzE1IDE4LjEgMTUgMTUuNUMxNSAxMy42IDE2LjYgMTIgMTguNSAxMlMyMiAxMy42IDIyIDE1LjVNMTkuNyAxNS42QzE5LjcgMTUgMTkuMSAxNC40IDE4LjUgMTQuNFMxNy4zIDE0LjkgMTcuMyAxNS42QzE3LjMgMTYuMiAxNy44IDE2LjggMTguNSAxNi44UzE5LjggMTYuMiAxOS43IDE1LjZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaU1pbnVzID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE1IDE4VjIwSDIzVjE4SDE1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlPZmYgPSBcIk0yLjI4LDNMMSw0LjI3TDIuNDcsNS43NEMyLjA0LDYgMS42MSw2LjI5IDEuMiw2LjZMMyw5QzMuNTMsOC42IDQuMDgsOC4yNSA0LjY2LDcuOTNMNi44OSwxMC4xNkM2LjE1LDEwLjUgNS40NCwxMC45MSA0LjgsMTEuNEw2LjYsMTMuOEM3LjM4LDEzLjIyIDguMjYsMTIuNzcgOS4yLDEyLjQ3TDExLjc1LDE1QzEwLjUsMTUuMDcgOS4zNCwxNS41IDguNCwxNi4yTDEyLDIxTDE0LjQ2LDE3LjczTDE3Ljc0LDIxTDE5LDE5LjcyTTEyLDNDOS44NSwzIDcuOCwzLjM4IDUuOSw0LjA3TDguMjksNi40N0M5LjUsNi4xNiAxMC43Miw2IDEyLDZDMTUuMzgsNiAxOC41LDcuMTEgMjEsOUwyMi44LDYuNkMxOS43OSw0LjM0IDE2LjA2LDMgMTIsM00xMiw5QzExLjYyLDkgMTEuMjUsOSAxMC44OCw5LjA1TDE0LjA3LDEyLjI1QzE1LjI5LDEyLjUzIDE2LjQzLDEzLjA3IDE3LjQsMTMuOEwxOS4yLDExLjRDMTcuMiw5Ljg5IDE0LjcsOSAxMiw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlQbHVzID0gXCJNMTIgNkM4LjYyIDYgNS41IDcuMTIgMyA5TDEuMiA2LjZDNC4yMSA0LjM0IDcuOTUgMyAxMiAzUzE5Ljc5IDQuMzQgMjIuOCA2LjZMMjEgOUMxOC41IDcuMTIgMTUuMzggNiAxMiA2TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTE2Ljg0IDEzLjQxQzE3LjE4IDEzLjI3IDE3LjU1IDEzLjE3IDE3LjkyIDEzLjFMMTkuMiAxMS40QzE3LjE5IDkuODkgMTQuNyA5IDEyIDlTNi44MSA5Ljg5IDQuOCAxMS40TDYuNiAxMy44QzguMSAxMi42NyA5Ljk3IDEyIDEyIDEyQzEzLjc4IDEyIDE1LjQ0IDEyLjUgMTYuODQgMTMuNDFNMjAgMThWMTVIMThWMThIMTVWMjBIMThWMjNIMjBWMjBIMjNWMThIMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVJlZnJlc2ggPSBcIk0xMiAxMkM5Ljk3IDEyIDguMSAxMi42NyA2LjYgMTMuOEw0LjggMTEuNEM2LjgxIDkuODkgOS4zIDkgMTIgOVMxNy4xOSA5Ljg5IDE5LjIgMTEuNEwxOC43NCAxMkMxOC42NiAxMiAxOC41OCAxMiAxOC41IDEyQzE3LjQzIDEyIDE2LjQyIDEyLjI2IDE1LjUzIDEyLjcyQzE0LjQ1IDEyLjI2IDEzLjI2IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMi4zNCAyMC41NEMxMi4xMyAxOS45IDEyIDE5LjIyIDEyIDE4LjVDMTIgMTcuMjQgMTIuMzYgMTYuMDggMTMgMTUuMDhDMTIuNjYgMTUuMDMgMTIuMzMgMTUgMTIgMTVNMTggMTQuNUMxNS43OSAxNC41IDE0IDE2LjI5IDE0IDE4LjVTMTUuNzkgMjIuNSAxOCAyMi41QzE5LjY4IDIyLjUgMjEuMTIgMjEuNDcgMjEuNzEgMjBIMjBDMTkuNTQgMjAuNjEgMTguODIgMjEgMTggMjFDMTYuNjIgMjEgMTUuNSAxOS44OCAxNS41IDE4LjVTMTYuNjIgMTYgMTggMTZDMTguNjkgMTYgMTkuMzIgMTYuMjggMTkuNzcgMTYuNzNMMTggMTguNUgyMlYxNC41TDIwLjgzIDE1LjY3QzIwLjExIDE0Ljk1IDE5LjExIDE0LjUgMTggMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpUmVtb3ZlID0gXCJNMTIgMTJDOS45NyAxMiA4LjEgMTIuNjcgNi42IDEzLjhMNC44IDExLjRDNi44MSA5Ljg5IDkuMyA5IDEyIDlTMTcuMTkgOS44OSAxOS4yIDExLjRMMTcuOTIgMTMuMUMxNy41NSAxMy4xNyAxNy4xOCAxMy4yNyAxNi44NCAxMy40MUMxNS40NCAxMi41IDEzLjc4IDEyIDEyIDEyTTIxIDlMMjIuOCA2LjZDMTkuNzkgNC4zNCAxNi4wNSAzIDEyIDNTNC4yMSA0LjM0IDEuMiA2LjZMMyA5QzUuNSA3LjEyIDguNjIgNiAxMiA2UzE4LjUgNy4xMiAyMSA5TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4wNCAxOS42MUMxMyAxOS40MSAxMyAxOS4yMSAxMyAxOUMxMyAxNy42NiAxMy40NCAxNi40MyAxNC4xOSAxNS40M0MxMy41IDE1LjE2IDEyLjc3IDE1IDEyIDE1TTIxLjEyIDE1LjQ2TDE5IDE3LjU5TDE2Ljg4IDE1LjQ3TDE1LjQ3IDE2Ljg4TDE3LjU5IDE5TDE1LjQ3IDIxLjEyTDE2Ljg4IDIyLjU0TDE5IDIwLjQxTDIxLjEyIDIyLjU0TDIyLjU0IDIxLjEyTDIwLjQxIDE5TDIyLjU0IDE2Ljg4TDIxLjEyIDE1LjQ2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTZXR0aW5ncyA9IFwiTTEyIDIwTDguNCAxNS4yQzkuNCAxNC40NSAxMC42NSAxNCAxMiAxNFMxNC42IDE0LjQ1IDE1LjYgMTUuMkwxMiAyME00LjggMTAuNEw2LjYgMTIuOEM4LjEgMTEuNjcgOS45NyAxMSAxMiAxMVMxNS45IDExLjY3IDE3LjQgMTIuOEwxOS4yIDEwLjRDMTcuMTkgOC44OSAxNC43IDggMTIgOFM2LjgxIDguODkgNC44IDEwLjRNMTIgMkM3Ljk1IDIgNC4yMSAzLjM0IDEuMiA1LjZMMyA4QzUuNSA2LjEyIDguNjIgNSAxMiA1UzE4LjUgNi4xMiAyMSA4TDIyLjggNS42QzE5Ljc5IDMuMzQgMTYuMDUgMiAxMiAyTTcgMjRIOVYyMkg3VjI0TTE1IDI0SDE3VjIySDE1VjI0TTExIDI0SDEzVjIySDExVjI0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdGFyID0gXCJNMTIsNkM4LjYsNiA1LjUsNy4xIDMsOUwxLjIsNi42QzQuMiw0LjMgOCwzIDEyLDNDMTYsMyAxOS44LDQuMyAyMi44LDYuNkwyMSw5QzE4LjUsNy4xIDE1LjQsNiAxMiw2TTEzLDE5QzEzLDE3LjcgMTMuNCwxNi40IDE0LjIsMTUuNEMxMy41LDE1LjIgMTIuOCwxNSAxMiwxNUMxMC43LDE1IDkuNCwxNS41IDguNCwxNi4yTDEyLDIxTDEzLDE5LjZDMTMsMTkuNCAxMywxOS4yIDEzLDE5TTE2LjgsMTMuNEMxNy4xLDEzLjMgMTcuNSwxMy4yIDE3LjksMTMuMUwxOS4yLDExLjRDMTcuMiw5LjkgMTQuNyw5IDEyLDlDOS4zLDkgNi44LDkuOSA0LjgsMTEuNEw2LjYsMTMuOEM4LjEsMTIuNyAxMCwxMiAxMiwxMkMxMy44LDEyIDE1LjQsMTIuNSAxNi44LDEzLjRNMTYuNSwyMi42TDE3LjIsMTkuOEwxNSwxNy45TDE3LjksMTcuN0wxOSwxNUwyMC4xLDE3LjZMMjMsMTcuOEwyMC44LDE5LjdMMjEuNSwyMi41TDE5LDIxLjFMMTYuNSwyMi42WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aDEgPSBcIk0xMiwzQzcuNzksMyAzLjcsNC40MSAwLjM4LDdDNC40MSwxMi4wNiA3Ljg5LDE2LjM3IDEyLDIxLjVDMTYuMDgsMTYuNDIgMjAuMjQsMTEuMjQgMjMuNjUsN0MyMC4zMiw0LjQxIDE2LjIyLDMgMTIsM00xMiw1QzE1LjA3LDUgMTguMDksNS44NiAyMC43MSw3LjQ1TDE1LjYxLDEzLjgxQzE0LjUsMTMuMjggMTMuMjUsMTMgMTIsMTNDMTAuNzUsMTMgOS41LDEzLjI4IDguMzksMTMuOEwzLjI3LDcuNDRDNS45MSw1Ljg1IDguOTMsNSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aDFBbGVydCA9IFwiTTEyIDNDNy44IDMgMy43IDQuNCAuNCA3QzQuNCAxMi4xIDcuOSAxNi40IDEyIDIxLjVDMTQuNCAxOC41IDE2LjcgMTUuNyAxOSAxMi44VjkuNkwxNS42IDEzLjhDMTQuNSAxMy4zIDEzLjIgMTMgMTIgMTNTOS41IDEzLjMgOC40IDEzLjhMMy4zIDcuNEM1LjkgNS44IDguOSA1IDEyIDVTMTguMSA1LjkgMjAuNyA3LjRMMjAuMyA4SDIyLjlDMjMuMSA3LjcgMjMuNSA3LjMgMjMuNyA3QzIwLjMgNC40IDE2LjIgMyAxMiAzTTIxIDEwVjE2SDIzVjEwTTIxIDE4VjIwSDIzVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMUxvY2sgPSBcIk0xMiAxM0MxMi44IDEzIDEzLjYxIDEzLjEzIDE0LjM4IDEzLjM2QzE0LjI4IDEzLjczIDE0LjIgMTQuMTEgMTQuMiAxNC41VjE0Ljc0QzEzLjUgMTUuMzQgMTMgMTYuMjQgMTMgMTcuMlYyMC4yNEwxMiAyMS41QzcuODggMTYuMzcgNC4zOSAxMi4wNiAuMzY1IDdDMy42OSA0LjQxIDcuNzggMyAxMiAzQzE2LjIgMyAyMC4zMSA0LjQxIDIzLjY0IDdMMjAuOTEgMTAuMzlDMjAuMzIgMTAuMTQgMTkuNjggMTAgMTkgMTBDMTguODcgMTAgMTguNzUgMTAuMDMgMTguNjIgMTAuMDRMMjAuNyA3LjQ1QzE4LjA4IDUuODYgMTUuMDYgNSAxMiA1UzUuOSA1Ljg1IDMuMjYgNy40NEw4LjM4IDEzLjhDOS41IDEzLjI4IDEwLjc0IDEzIDEyIDEzTTIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTQuNUMxNi4yIDEzLjEgMTcuNiAxMiAxOSAxMlMyMS44IDEzLjEgMjEuOCAxNC41VjE2QzIyLjQgMTYgMjMgMTYuNiAyMyAxNy4zTTIwLjUgMTQuNUMyMC41IDEzLjcgMTkuOCAxMy4yIDE5IDEzLjJTMTcuNSAxMy43IDE3LjUgMTQuNVYxNkgyMC41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMUxvY2tPcGVuID0gXCJNMTIgMTNDMTIuNzQgMTMgMTMuNSAxMy4xMiAxNC4yMiAxMy4zMUMxNC4yMiAxMy4zOCAxNC4yIDEzLjQ0IDE0LjIgMTMuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuMjRMMTIgMjEuNUM3Ljg4IDE2LjM3IDQuMzkgMTIuMDYgLjM2NSA3QzMuNjkgNC40MSA3Ljc4IDMgMTIgM0MxNi4yIDMgMjAuMzEgNC40MSAyMy42NCA3TDIxLjUgOS42OUMyMC44NiA5LjMzIDIwLjE2IDkuMTEgMTkuNDIgOS4wNEwyMC43IDcuNDVDMTguMDggNS44NiAxNS4wNiA1IDEyIDVTNS45IDUuODUgMy4yNiA3LjQ0TDguMzggMTMuOEM5LjUgMTMuMjggMTAuNzQgMTMgMTIgMTNNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMiA9IFwiTTEyLDNDNy43OSwzIDMuNyw0LjQxIDAuMzgsN0M0LjQxLDEyLjA2IDcuODksMTYuMzcgMTIsMjEuNUMxNi4wOCwxNi40MiAyMC4yNCwxMS4yNCAyMy42NSw3QzIwLjMyLDQuNDEgMTYuMjIsMyAxMiwzTTEyLDVDMTUuMDcsNSAxOC4wOSw1Ljg2IDIwLjcxLDcuNDVMMTcuNSwxMS40M0MxNi4yNiwxMC43NCAxNC4zNywxMCAxMiwxMEM5LjYyLDEwIDcuNzQsMTAuNzUgNi41LDExLjQzTDMuMjcsNy40NEM1LjkxLDUuODUgOC45Myw1IDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMkFsZXJ0ID0gXCJNMTIgM0M3LjggMyAzLjcgNC40IC40IDdDNC40IDEyLjEgNy45IDE2LjQgMTIgMjEuNUMxNC40IDE4LjUgMTYuNyAxNS43IDE5IDEyLjhWOS42TDE3LjUgMTEuNEMxNi4zIDEwLjcgMTQuNCAxMCAxMiAxMEM5LjYgMTAgNy43IDEwLjggNi41IDExLjRMMy4zIDcuNEM1LjkgNS44IDguOSA1IDEyIDVTMTguMSA1LjkgMjAuNyA3LjRMMjAuMyA4SDIyLjlDMjMuMSA3LjcgMjMuNSA3LjMgMjMuNyA3QzIwLjMgNC40IDE2LjIgMyAxMiAzTTIxIDEwVjE2SDIzVjEwTTIxIDE4VjIwSDIzVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoMkxvY2sgPSBcIk0xNC4yIDE0LjVWMTQuNzRDMTMuNSAxNS4zNCAxMyAxNi4yNCAxMyAxNy4yVjIwLjI0TDEyIDIxLjVDNy44OCAxNi4zNyA0LjM5IDEyLjA2IC4zNjUgN0MzLjY5IDQuNDEgNy43OCAzIDEyIDNDMTYuMiAzIDIwLjMxIDQuNDEgMjMuNjQgN0wyMC45MSAxMC4zOUMyMC4zMiAxMC4xNCAxOS42OCAxMCAxOSAxMEMxOC44NyAxMCAxOC43NCAxMC4wMyAxOC42MSAxMC4wNEwyMC43IDcuNDVDMTguMDggNS44NiAxNS4wNiA1IDEyIDVTNS45IDUuODUgMy4yNiA3LjQ0TDYuNSAxMS40M0M3LjczIDEwLjc1IDkuNjEgMTAgMTIgMTBDMTMuNjggMTAgMTUuMTIgMTAuMzggMTYuMjYgMTAuODRDMTUuMDMgMTEuNjcgMTQuMiAxMyAxNC4yIDE0LjVNMjMgMTcuM1YyMC44QzIzIDIxLjQgMjIuNCAyMiAyMS43IDIySDE2LjJDMTUuNiAyMiAxNSAyMS40IDE1IDIwLjdWMTcuMkMxNSAxNi42IDE1LjYgMTYgMTYuMiAxNlYxNC41QzE2LjIgMTMuMSAxNy42IDEyIDE5IDEyUzIxLjggMTMuMSAyMS44IDE0LjVWMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNNMjAuNSAxNC41QzIwLjUgMTMuNyAxOS44IDEzLjIgMTkgMTMuMlMxNy41IDEzLjcgMTcuNSAxNC41VjE2SDIwLjVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGgyTG9ja09wZW4gPSBcIk0xNS40NCAxMC41NUMxNC42OCAxMS4zNSAxNC4yIDEyLjM4IDE0LjIgMTMuNVYxNC43NEMxMy41IDE1LjM0IDEzIDE2LjI0IDEzIDE3LjJWMjAuMjRMMTIgMjEuNUM3Ljg4IDE2LjM3IDQuMzkgMTIuMDYgLjM2NSA3QzMuNjkgNC40MSA3Ljc4IDMgMTIgM0MxNi4yIDMgMjAuMzEgNC40MSAyMy42NCA3TDIxLjUgOS42OUMyMC44NiA5LjMzIDIwLjE2IDkuMSAxOS40MSA5LjA0TDIwLjcgNy40NUMxOC4wOCA1Ljg2IDE1LjA2IDUgMTIgNVM1LjkgNS44NSAzLjI2IDcuNDRMNi41IDExLjQzQzcuNzMgMTAuNzUgOS42MSAxMCAxMiAxMEMxMy4yOSAxMCAxNC40NSAxMC4yMyAxNS40NCAxMC41NU0yMS44IDE2SDE3LjVWMTMuNUMxNy41IDEyLjcgMTguMiAxMi4yIDE5IDEyLjJTMjAuNSAxMi43IDIwLjUgMTMuNVYxNEgyMS44VjEzLjVDMjEuOCAxMi4xIDIwLjQgMTEgMTkgMTFTMTYuMiAxMi4xIDE2LjIgMTMuNVYxNkMxNS42IDE2IDE1IDE2LjYgMTUgMTcuMlYyMC43QzE1IDIxLjQgMTUuNiAyMiAxNi4yIDIySDIxLjdDMjIuNCAyMiAyMyAyMS40IDIzIDIwLjhWMTcuM0MyMyAxNi42IDIyLjQgMTYgMjEuOCAxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGgzID0gXCJNMTIsM0M3Ljc5LDMgMy43LDQuNDEgMC4zOCw3QzQuNDEsMTIuMDYgNy44OSwxNi4zNyAxMiwyMS41QzE2LjA4LDE2LjQyIDIwLjI0LDExLjI0IDIzLjY1LDdDMjAuMzIsNC40MSAxNi4yMiwzIDEyLDNNMTIsNUMxNS4wNyw1IDE4LjA5LDUuODYgMjAuNzEsNy40NUwxOC43Nyw5Ljg4QzE3LjI2LDkgMTQuODgsOCAxMiw4QzksOCA2LjY4LDkgNS4yMSw5Ljg0TDMuMjcsNy40NEM1LjkxLDUuODUgOC45Myw1IDEyLDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoM0FsZXJ0ID0gXCJNMTIgM0M3LjggMyAzLjcgNC40IC40IDdDNC40IDEyLjEgNy45IDE2LjQgMTIgMjEuNUMxNC40IDE4LjUgMTYuNyAxNS43IDE5IDEyLjhWOS42TDE4LjggOS45QzE3LjMgOSAxNC45IDggMTIgOEM5IDggNi43IDkgNS4yIDkuOEwzLjMgNy40QzUuOSA1LjggOC45IDUgMTIgNVMxOC4xIDUuOSAyMC43IDcuNEwyMC4zIDhIMjIuOUMyMy4xIDcuNyAyMy41IDcuMyAyMy43IDdDMjAuMyA0LjQgMTYuMiAzIDEyIDNNMjEgMTBWMTZIMjNWMTBNMjEgMThWMjBIMjNWMThcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGgzTG9jayA9IFwiTTE5IDEwQzE5LjY4IDEwIDIwLjMyIDEwLjE0IDIwLjkxIDEwLjM5TDIzLjY0IDdDMjAuMzEgNC40MSAxNi4yIDMgMTIgM0M3Ljc4IDMgMy42OSA0LjQxIC4zNjUgN0M0LjM5IDEyLjA2IDcuODggMTYuMzcgMTIgMjEuNUwxMyAyMC4yNFYxNy4yQzEzIDE2LjI0IDEzLjUgMTUuMzQgMTQuMiAxNC43NFYxNC41QzE0LjIgMTIuMDYgMTYuNCAxMCAxOSAxME0xMiA4QzkgOCA2LjY3IDkgNS4yIDkuODRMMy4yNiA3LjQ0QzUuOSA1Ljg1IDguOTEgNSAxMiA1UzE4LjA4IDUuODYgMjAuNyA3LjQ1TDE4Ljc2IDkuODhDMTcuMjUgOSAxNC44NyA4IDEyIDhNMjEuOCAxNlYxNC41QzIxLjggMTMuMSAyMC40IDEyIDE5IDEyUzE2LjIgMTMuMSAxNi4yIDE0LjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZNMjAuNSAxNkgxNy41VjE0LjVDMTcuNSAxMy43IDE4LjIgMTMuMiAxOSAxMy4yUzIwLjUgMTMuNyAyMC41IDE0LjVWMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoM0xvY2tPcGVuID0gXCJNMTQuMiAxMy41VjE0Ljc0QzEzLjUgMTUuMzQgMTMgMTYuMjQgMTMgMTcuMlYyMC4yNEwxMiAyMS41QzcuODggMTYuMzcgNC4zOSAxMi4wNiAuMzY1IDdDMy42OSA0LjQxIDcuNzggMyAxMiAzQzE2LjIgMyAyMC4zMSA0LjQxIDIzLjY0IDdMMjEuNSA5LjY5QzIwLjg2IDkuMzMgMjAuMTcgOS4xMSAxOS40MiA5LjA0TDIwLjcgNy40NUMxOC4wOCA1Ljg2IDE1LjA2IDUgMTIgNVM1LjkgNS44NSAzLjI2IDcuNDRMNS4yIDkuODRDNi42NyA5IDkgOCAxMiA4QzE0LjE4IDggMTYuMDggOC41OCAxNy41MyA5LjI1QzE1LjYzIDkuODUgMTQuMiAxMS41NCAxNC4yIDEzLjVNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoNCA9IFwiTTEyLDNDNy43OSwzIDMuNyw0LjQxIDAuMzgsN0M0LjQxLDEyLjA2IDcuODksMTYuMzcgMTIsMjEuNUMxNi4wOCwxNi40MiAyMC4yNCwxMS4yNCAyMy42NSw3QzIwLjMyLDQuNDEgMTYuMjIsMyAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aDRBbGVydCA9IFwiTTEyIDNDNy44IDMgMy43IDQuNCAuNCA3QzQuNCAxMi4xIDcuOSAxNi40IDEyIDIxLjVDMTQuNCAxOC41IDE2LjcgMTUuNyAxOSAxMi44VjhIMjIuOEMyMyA3LjcgMjMuNCA3LjMgMjMuNiA3QzIwLjMgNC40IDE2LjIgMyAxMiAzTTIxIDEwVjE2SDIzVjEwTTIxIDE4VjIwSDIzVjE4XCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoNExvY2sgPSBcIk0xNC4yIDE0LjVWMTQuNzRDMTMuNSAxNS4zNCAxMyAxNi4yNCAxMyAxNy4yVjIwLjI0TDEyIDIxLjVDNy44OCAxNi4zNyA0LjM5IDEyLjA2IC4zNjUgN0MzLjY5IDQuNDEgNy43OCAzIDEyIDNDMTYuMiAzIDIwLjMxIDQuNDEgMjMuNjQgN0wyMC45MSAxMC4zOUMyMC4zMiAxMC4xNCAxOS42OCAxMCAxOSAxMEMxNi40IDEwIDE0LjIgMTIuMDYgMTQuMiAxNC41TTIzIDE3LjNWMjAuOEMyMyAyMS40IDIyLjQgMjIgMjEuNyAyMkgxNi4yQzE1LjYgMjIgMTUgMjEuNCAxNSAyMC43VjE3LjJDMTUgMTYuNiAxNS42IDE2IDE2LjIgMTZWMTQuNUMxNi4yIDEzLjEgMTcuNiAxMiAxOSAxMlMyMS44IDEzLjEgMjEuOCAxNC41VjE2QzIyLjQgMTYgMjMgMTYuNiAyMyAxNy4zTTIwLjUgMTQuNUMyMC41IDEzLjcgMTkuOCAxMy4yIDE5IDEzLjJTMTcuNSAxMy43IDE3LjUgMTQuNVYxNkgyMC41VjE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoNExvY2tPcGVuID0gXCJNMTQuMiAxMy41VjE0Ljc0QzEzLjUgMTUuMzQgMTMgMTYuMjQgMTMgMTcuMlYyMC4yNEwxMiAyMS41QzcuODggMTYuMzcgNC4zOSAxMi4wNiAuMzY1IDdDMy42OSA0LjQxIDcuNzggMyAxMiAzQzE2LjIgMyAyMC4zMSA0LjQxIDIzLjY0IDdMMjEuNSA5LjY5QzIwLjc1IDkuMjYgMTkuOSA5IDE5IDlDMTYuNCA5IDE0LjIgMTEuMDYgMTQuMiAxMy41TTIxLjggMTZIMTcuNVYxMy41QzE3LjUgMTIuNyAxOC4yIDEyLjIgMTkgMTIuMlMyMC41IDEyLjcgMjAuNSAxMy41VjE0SDIxLjhWMTMuNUMyMS44IDEyLjEgMjAuNCAxMSAxOSAxMVMxNi4yIDEyLjEgMTYuMiAxMy41VjE2QzE1LjYgMTYgMTUgMTYuNiAxNSAxNy4yVjIwLjdDMTUgMjEuNCAxNS42IDIyIDE2LjIgMjJIMjEuN0MyMi40IDIyIDIzIDIxLjQgMjMgMjAuOFYxNy4zQzIzIDE2LjYgMjIuNCAxNiAyMS44IDE2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aEFsZXJ0T3V0bGluZSA9IFwiTTEyIDNDNy44IDMgMy43IDQuNCAuNCA3QzQuMyAxMS44IDguMiAxNi43IDEyIDIxLjVDMTQuMyAxOC42IDE2LjcgMTUuNyAxOSAxMi44VjkuNkwxMiAxOC4zTDMuMyA3LjRDNS45IDUuOCA4LjkgNSAxMiA1QzE1LjEgNSAxOC4xIDUuOSAyMC43IDcuNEwyMC4zIDhIMjIuOUMyMy4yIDcuNyAyMy40IDcuMyAyMy43IDdDMjAuMyA0LjQgMTYuMiAzIDEyIDNNMjEgMTBWMTZIMjNWMTBNMjEgMThWMjBIMjNWMThcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGhMb2NrT3Blbk91dGxpbmUgPSBcIk0yMy42NSA3SDIzLjY0QzIyLjkyIDcuOSAyMi4yIDguNzkgMjEuNSA5LjY5QzIwLjg3IDkuMzMgMjAuMTcgOS4xMSAxOS40MyA5LjA0TDIwLjcxIDcuNDVDMTguMDkgNS44NiAxNS4wNyA1IDEyIDVDOC45MSA1IDUuOSA1Ljg1IDMuMjcgNy40NEwxMiAxOC4zTDEzIDE3QzEzIDE3LjA4IDEzIDE3LjE0IDEzIDE3LjJWMjAuMjVMMTIgMjEuNUM4LjEzIDE2LjY2IDQuMjQgMTEuODMgLjM1NSA3SC4zNzVDMy43IDQuNDEgNy43OSAzIDEyIDNDMTYuMjIgMyAyMC4zMiA0LjQxIDIzLjY1IDdNMjEuOCAxNkgxNy41VjEzLjVDMTcuNSAxMi43IDE4LjIgMTIuMiAxOSAxMi4yUzIwLjUgMTIuNyAyMC41IDEzLjVWMTRIMjEuOFYxMy41QzIxLjggMTIuMSAyMC40IDExIDE5IDExUzE2LjIgMTIuMSAxNi4yIDEzLjVWMTZDMTUuNiAxNiAxNSAxNi42IDE1IDE3LjJWMjAuN0MxNSAyMS40IDE1LjYgMjIgMTYuMiAyMkgyMS43QzIyLjQgMjIgMjMgMjEuNCAyMyAyMC44VjE3LjNDMjMgMTYuNiAyMi40IDE2IDIxLjggMTZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lmaVN0cmVuZ3RoTG9ja091dGxpbmUgPSBcIk0yMy42NSA3SDIzLjY0TDIwLjkxIDEwLjM5QzIwLjMyIDEwLjE0IDE5LjY4IDEwIDE5IDEwQzE4Ljg3IDEwIDE4Ljc1IDEwLjAzIDE4LjYzIDEwLjA0TDIwLjcxIDcuNDVDMTguMDkgNS44NiAxNS4wNyA1IDEyIDVDOC45MSA1IDUuOSA1Ljg1IDMuMjcgNy40NEwxMiAxOC4zTDEzIDE3QzEzIDE3LjA4IDEzIDE3LjE0IDEzIDE3LjJWMjAuMjVMMTIgMjEuNUM4LjEzIDE2LjY2IDQuMjQgMTEuODMgLjM1NSA3SC4zNzVDMy43IDQuNDEgNy43OSAzIDEyIDNDMTYuMjIgMyAyMC4zMiA0LjQxIDIzLjY1IDdNMjMgMTcuM1YyMC44QzIzIDIxLjQgMjIuNCAyMiAyMS43IDIySDE2LjJDMTUuNiAyMiAxNSAyMS40IDE1IDIwLjdWMTcuMkMxNSAxNi42IDE1LjYgMTYgMTYuMiAxNlYxNC41QzE2LjIgMTMuMSAxNy42IDEyIDE5IDEyUzIxLjggMTMuMSAyMS44IDE0LjVWMTZDMjIuNCAxNiAyMyAxNi42IDIzIDE3LjNNMjAuNSAxNC41QzIwLjUgMTMuNyAxOS44IDEzLjIgMTkgMTMuMlMxNy41IDEzLjcgMTcuNSAxNC41VjE2SDIwLjVWMTQuNVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGhPZmYgPSBcIk0zLjI3LDEuNDRMMiwyLjcyTDQuMDUsNC43N0MyLjc1LDUuMzcgMS41LDYuMTEgMC4zOCw3QzQuNDEsMTIuMDYgMTIsMjEuNSAxMiwyMS41TDE1LjkxLDE2LjYzTDE5LjIzLDE5Ljk1TDIwLjUsMTguNjhNMTIsM0MxMC42LDMgOS4yMSwzLjE3IDcuODYsMy41TDE4LjE4LDEzLjgxQzIwLDExLjUgMjIuMDUsOSAyMy42NSw3QzIwLjMyLDQuNDEgMTYuMjIsMyAxMiwzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTdHJlbmd0aE9mZk91dGxpbmUgPSBcIk0zLjI3LDEuNDRMMiwyLjcyTDQuMDUsNC43N0MyLjc1LDUuMzcgMS41LDYuMTEgMC4zOCw3QzQuMiwxMS44IDguMTQsMTYuNjcgMTIsMjEuNUwxNS45MSwxNi42M0wxOS4yMywxOS45NUwyMC41LDE4LjY4QzE0Ljg3LDEzLjA0IDMuMjcsMS40NCAzLjI3LDEuNDRNMTIsM0MxMC42LDMgOS4yMSwzLjE3IDcuODYsMy41TDkuNTYsNS4xOUMxMC4zNyw1LjA3IDExLjE4LDUgMTIsNUMxNS4wNyw1IDE4LjA5LDUuODYgMjAuNzEsNy40NUwxNi43NiwxMi4zOEwxOC4xOCwxMy44QzIwLjA4LDExLjQzIDIyLDkgMjMuNjUsN0MyMC4zMiw0LjQxIDE2LjIyLDMgMTIsM001LjU3LDYuMjlMMTQuNSwxNS4yMUwxMiwxOC4zTDMuMjcsNy40NEM0LDcgNC43OCw2LjYxIDUuNTcsNi4yOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaWZpU3RyZW5ndGhPdXRsaW5lID0gXCJNMTIsM0M3Ljc5LDMgMy43LDQuNDEgMC4zOCw3SDAuMzZDNC4yNCwxMS44MyA4LjEzLDE2LjY2IDEyLDIxLjVDMTUuODksMTYuNjYgMTkuNzcsMTEuODMgMjMuNjQsN0gyMy42NUMyMC4zMiw0LjQxIDE2LjIyLDMgMTIsM00xMiw1QzE1LjA3LDUgMTguMDksNS44NiAyMC43MSw3LjQ1TDEyLDE4LjNMMy4yNyw3LjQ0QzUuOSw1Ljg1IDguOTIsNSAxMiw1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpZmlTeW5jID0gXCJNMTIgNkM4LjYyIDYgNS41IDcuMTIgMyA5TDEuMiA2LjZDNC4yMSA0LjM0IDcuOTUgMyAxMiAzUzE5Ljc5IDQuMzQgMjIuOCA2LjZMMjEgOUMxOC41IDcuMTIgMTUuMzggNiAxMiA2TTEyIDE1QzEwLjY1IDE1IDkuNCAxNS40NSA4LjQgMTYuMkwxMiAyMUwxMy4yNiAxOS4zMkMxMy4xIDE4Ljc0IDEzIDE4LjEzIDEzIDE3LjVDMTMgMTYuNjkgMTMuMTYgMTUuOTEgMTMuNDMgMTUuMTlDMTIuOTcgMTUuMDggMTIuNSAxNSAxMiAxNU0xNS4yMyAxMi42MUMxNi4xOSAxMS43NyAxNy4zOCAxMS4yMiAxOC43IDExLjA1QzE2Ljc4IDkuNzYgMTQuNSA5IDEyIDlDOS4zIDkgNi44MSA5Ljg5IDQuOCAxMS40TDYuNiAxMy44QzguMSAxMi42NyA5Ljk3IDEyIDEyIDEyQzEzLjE0IDEyIDE0LjIzIDEyLjIyIDE1LjIzIDEyLjYxTTE5IDIwQzE3LjYyIDIwIDE2LjUgMTguODggMTYuNSAxNy41QzE2LjUgMTcuMSAxNi41OSAxNi43MiAxNi43NiAxNi4zOEwxNS42NyAxNS4yOUMxNS4yNSAxNS45MiAxNSAxNi42OCAxNSAxNy41QzE1IDE5LjcxIDE2Ljc5IDIxLjUgMTkgMjEuNVYyM0wyMS4yNSAyMC43NUwxOSAxOC41VjIwTTE5IDEzLjVWMTJMMTYuNzUgMTQuMjVMMTkgMTYuNVYxNUMyMC4zOCAxNSAyMS41IDE2LjEyIDIxLjUgMTcuNUMyMS41IDE3LjkgMjEuNDEgMTguMjggMjEuMjQgMTguNjJMMjIuMzMgMTkuNzFDMjIuNzUgMTkuMDggMjMgMTguMzIgMjMgMTcuNUMyMyAxNS4yOSAyMS4yMSAxMy41IDE5IDEzLjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lraXBlZGlhID0gXCJNMTQuOTcsMTguOTVMMTIuNDEsMTIuOTJDMTEuMzksMTQuOTEgMTAuMjcsMTcgOS4zMSwxOC45NUM5LjMsMTguOTYgOC44NCwxOC45NSA4Ljg0LDE4Ljk1QzcuMzcsMTUuNSA1Ljg1LDEyLjEgNC4zNyw4LjY4QzQuMDMsNy44NCAyLjgzLDYuNSAyLDYuNUMyLDYuNCAyLDYuMTggMiw2LjA1SDcuMDZWNi41QzYuNDYsNi41IDUuNDQsNi45IDUuNyw3LjU1QzYuNDIsOS4wOSA4Ljk0LDE1LjA2IDkuNjMsMTYuNThDMTAuMSwxNS42NCAxMS40MywxMy4xNiAxMiwxMi4xMUMxMS41NSwxMS4yMyAxMC4xMyw3LjkzIDkuNzEsNy4xMUM5LjM5LDYuNTcgOC41OCw2LjUgNy45Niw2LjVDNy45Niw2LjM1IDcuOTcsNi4yNSA3Ljk2LDYuMDZMMTIuNDIsNi4wN1Y2LjQ3QzExLjgxLDYuNSAxMS4yNCw2LjcxIDExLjUsNy4yOUMxMi4xLDguNTMgMTIuNDUsOS40MiAxMywxMC41N0MxMy4xNywxMC4yMyAxNC4wNyw4LjM4IDE0LjUsNy40MUMxNC43Niw2Ljc2IDE0LjM3LDYuNSAxMy4yOSw2LjVDMTMuMyw2LjM4IDEzLjMsNi4xNyAxMy4zLDYuMDdDMTQuNjksNi4wNiAxNi43OCw2LjA2IDE3LjE1LDYuMDVWNi40N0MxNi40NCw2LjUgMTUuNzEsNi44OCAxNS4zMyw3LjQ2TDEzLjUsMTEuM0MxMy42OCwxMS44MSAxNS40NiwxNS43NiAxNS42NSwxNi4yTDE5LjUsNy4zN0MxOS4yLDYuNjUgMTguMzQsNi41IDE4LDYuNUMxOCw2LjM3IDE4LDYuMiAxOCw2LjA1TDIyLDYuMDhWNi4xTDIyLDYuNUMyMS4xMiw2LjUgMjAuNTcsNyAyMC4yNSw3Ljc1QzE5LjQ1LDkuNTQgMTcsMTUuMjQgMTUuNCwxOC45NUMxNS40LDE4Ljk1IDE0Ljk3LDE4Ljk1IDE0Ljk3LDE4Ljk1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRUdXJiaW5lID0gXCJNMTMuMzMsMTEuNjdMMTYuMjEsMTQuNThDMTcuNjIsMTMuMTYgMTYuMjEsMTEuNzUgMTYuMjEsMTEuNzVMMTQuNzIsMTAuMjRDMTQuOSw5Ljg2IDE1LDkuNDQgMTUsOUMxNSw3Ljk1IDE0LjQ2LDcuMDMgMTMuNjQsNi41TDE1LDIuMTFDMTMuMDksMS41MyAxMi41LDMuNDQgMTIuNSwzLjQ0TDExLjY5LDYuMDNDMTAuNDYsNi4xNiA5LjQ2LDcgOS4xMyw4LjE4TDQuNjcsOS42M0M1LjMxLDExLjUzIDcuMiwxMC45IDcuMiwxMC45TDkuMjcsMTAuMjNDOS42MSwxMC45NyAxMC4yMywxMS41NCAxMSwxMS44MlYxOUMxMSwxOSA5LDE5IDksMjFDOSwyMS41IDksMjEuODEgOSwyMkgxNVYyMUMxNSwyMSAxNSwxOSAxMywxOVYxMS44MkMxMy4xMiwxMS43OCAxMy4yMywxMS43MiAxMy4zMywxMS42N00xMC41LDlBMS41LDEuNSAwIDAsMSAxMiw3LjVBMS41LDEuNSAwIDAsMSAxMy41LDlBMS41LDEuNSAwIDAsMSAxMiwxMC41QTEuNSwxLjUgMCAwLDEgMTAuNSw5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd0Nsb3NlID0gXCJNMTMuNDYsMTJMMTksMTcuNTRWMTlIMTcuNTRMMTIsMTMuNDZMNi40NiwxOUg1VjE3LjU0TDEwLjU0LDEyTDUsNi40NlY1SDYuNDZMMTIsMTAuNTRMMTcuNTQsNUgxOVY2LjQ2TDEzLjQ2LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd0Nsb3NlZCA9IFwiTTYsMTFIMTBWOUgxNFYxMUgxOFY0SDZWMTFNMTgsMTNINlYyMEgxOFYxM002LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd0Nsb3NlZFZhcmlhbnQgPSBcIk0yMSAyMFYySDNWMjBIMVYyM0gyM1YyME0xOSA0VjExSDEzVjRNNSA0SDExVjExSDVNNSAyMFYxM0gxMVYyME0xMyAyMFYxM0gxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dNYXhpbWl6ZSA9IFwiTTQsNEgyMFYyMEg0VjRNNiw4VjE4SDE4VjhINlpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dNaW5pbWl6ZSA9IFwiTTIwLDE0SDRWMTBIMjBcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dPcGVuID0gXCJNNiw4SDEwVjZIMTRWOEgxOFY0SDZWOE0xOCwxMEg2VjE1SDE4VjEwTTYsMjBIMThWMTdINlYyME02LDJIMThBMiwyIDAgMCwxIDIwLDRWMjBBMiwyIDAgMCwxIDE4LDIySDZBMiwyIDAgMCwxIDQsMjBWNEEyLDIgMCAwLDEgNiwyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd09wZW5WYXJpYW50ID0gXCJNMjEgMjBWMkgzVjIwSDFWMjNIMjNWMjBNMTkgNFYxMUgxN1Y0TTUgNEg3VjExSDVNNSAyMFYxM0g3VjIwTTkgMjBWNEgxNVYyME0xNyAyMFYxM0gxOVYyMFpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kb3dSZXN0b3JlID0gXCJNNCw4SDhWNEgyMFYxNkgxNlYyMEg0VjhNMTYsOFYxNEgxOFY2SDEwVjhIMTZNNiwxMlYxOEgxNFYxMkg2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd1NodXR0ZXIgPSBcIk0zIDRIMjFWOEgxOVYyMEgxN1Y4SDdWMjBINVY4SDNWNE04IDlIMTZWMTFIOFY5TTggMTJIMTZWMTRIOFYxMk04IDE1SDE2VjE3SDhWMTVNOCAxOEgxNlYyMEg4VjE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd1NodXR0ZXJBbGVydCA9IFwiTTIgNEgyMFY4SDE4VjIwSDE2VjhINlYyMEg0VjhIMlY0TTcgOUgxNVYxMUg3VjlNNyAxMkgxNVYxNEg3VjEyTTIwIDE5VjE3SDIyVjE5SDIwTTIwIDE1VjEwSDIyVjE1SDIwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpbmRvd1NodXR0ZXJPcGVuID0gXCJNMyA0SDIxVjhIMTlWMjBIMTdWOEg3VjIwSDVWOEgzVjRNOCA5SDE2VjExSDhWOVpcIjtcclxuZXhwb3J0IHZhciBtZGlXaW5kc29jayA9IFwiTTcgNVYxM0wyMiAxMVY3TDcgNU0xMCA2LjkxTDEzIDcuMzFWMTAuNjlMMTAgMTEuMDlWNi45MU0xNiA3LjcxTDE5IDguMTFWOS44OUwxNiAxMC4yOVY3LjcxTTUgMTBWMTFINlYxMkg1VjIxSDNWNEMzIDMuNDUgMy40NSAzIDQgM1M1IDMuNDUgNSA0VjZINlY3SDVWMTBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2lwZXIgPSBcIk0xMiw0QzUsNCAyLDkgMiw5TDksMTZDOSwxNiA5LjUsMTUuMSAxMC40LDE0LjVMMTAuNywxNi41QzEwLjMsMTYuOCAxMCwxNy40IDEwLDE4QTIsMiAwIDAsMCAxMiwyMEEyLDIgMCAwLDAgMTQsMThDMTQsMTcuMSAxMy41LDE2LjQgMTIuNywxNi4xTDEyLjMsMTRDMTQuMSwxNC4yIDE1LDE2IDE1LDE2TDIyLDlDMjIsOSAxOSw0IDEyLDRNMTUuMSwxMy4xQzE0LjMsMTIuNSAxMy4zLDEyIDEyLDEyTDExLDYuMUMxMS4zLDYgMTEuNyw2IDEyLDZDMTUuNyw2IDE4LjEsNy43IDE5LjMsOC45TDE1LjEsMTMuMU04LjksMTMuMUw0LjcsOC45QzUuNSw4IDcsNyA5LDYuNEwxMCwxMi40QzkuNiwxMi42IDkuMiwxMi44IDguOSwxMy4xWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdpcGVyV2FzaCA9IFwiTTEzLDZDMTMsNS43IDEzLjEsNC42IDEzLjgsMy44TDEyLDIuNEwxMC4yLDMuOUMxMC45LDQuNiAxMSw1LjcgMTEsNkM0LjcsNi40IDIsMTEgMiwxMUw5LDE4QzksMTggOS43LDE2LjcgMTEsMTYuMlYxOC4zQzEwLjQsMTguNiAxMCwxOS4zIDEwLDIwQTIsMiAwIDAsMCAxMiwyMkEyLDIgMCAwLDAgMTQsMjBDMTQsMTkuMyAxMy42LDE4LjYgMTMsMTguM1YxNi4yQzE0LjMsMTYuNyAxNSwxOCAxNSwxOEwyMiwxMUMyMiwxMSAxOS4zLDYuNSAxMyw2TTExLDE0LjFDMTAuMiwxNC4zIDkuNSwxNC42IDguOSwxNS4xTDQuNywxMC45QzUuOCw5LjggNy44LDguMyAxMSw4LjFWMTQuMU0xNS4xLDE1LjFDMTQuNSwxNC43IDEzLjgsMTQuMyAxMywxNC4xVjguMUMxNi4yLDguNCAxOC4yLDkuOCAxOS4zLDEwLjlMMTUuMSwxNS4xTTE4LDEuM0wxNy4zLDMuMkMxNi42LDIuOSAxNS41LDIuOSAxNC43LDMuMkwxNCwxLjNDMTUuMiwwLjkgMTYuOCwwLjkgMTgsMS4zTTIxLDZIMTlDMTksNiAxOSw0LjcgMTguMiwzLjlMMTkuNywyLjZDMjEsNCAyMSw1LjkgMjEsNk00LjIsMi42TDUuNywzLjlDNSw0LjcgNSw2IDUsNkgzQzMsNS45IDMsNCA0LjIsMi42TTEwLDEuM0w5LjMsMy4yQzguNiwyLjkgNy41LDIuOSA2LjcsMy4yTDYsMS4zQzcuMiwwLjkgOC44LDAuOSAxMCwxLjNaXCI7XHJcbmV4cG9ydCB2YXIgbWRpV2l6YXJkSGF0ID0gXCJNMjEgMjJIM1YyMEgyMVYyMk0xOSAxOUg1TDExLjEgMi42QzExLjMgMi4yIDExLjYgMiAxMiAyTDE4IDVIMTMuOUwxOSAxOU0xMCA3LjVMMTEuMDQgNy45N0wxMS41IDlMMTEuOTcgNy45N0wxMyA3LjVMMTEuOTcgNy4wM0wxMS41IDZMMTEuMDQgNy4wM0wxMCA3LjVNMTMgMTVMMTAuOTQgMTQuMDdMMTAgMTJMOS4wNyAxNC4wN0w3IDE1TDkuMDcgMTUuOTNMMTAgMThMMTAuOTQgMTUuOTNMMTMgMTVNMTMuOTcgMTEuOTdMMTUgMTEuNUwxMy45NyAxMS4wM0wxMy41IDEwTDEzLjA0IDExLjAzTDEyIDExLjVMMTMuMDQgMTEuOTdMMTMuNSAxM0wxMy45NyAxMS45N00xNS45NyAxNS45N0wxNyAxNS41TDE1Ljk3IDE1LjAzTDE1LjUgMTRMMTUuMDQgMTUuMDNMMTQgMTUuNUwxNS4wNCAxNS45N0wxNS41IDE3TDE1Ljk3IDE1Ljk3WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdvcmRwcmVzcyA9IFwiTTMuNDIsMTJDMy40MiwxMC43NiAzLjY5LDkuNTggNC4xNiw4LjVMOC4yNiwxOS43MkM1LjM5LDE4LjMzIDMuNDIsMTUuNCAzLjQyLDEyTTE3Ljc5LDExLjU3QzE3Ljc5LDEyLjMgMTcuNSwxMy4xNSAxNy4xNCwxNC4zNEwxNi4yOCwxNy4yTDEzLjE4LDhMMTQuMTYsNy45QzE0LjYzLDcuODQgMTQuNTcsNy4xNiAxNC4xMSw3LjE5QzE0LjExLDcuMTkgMTIuNzIsNy4zIDExLjgyLDcuM0w5LjU2LDcuMTlDOS4xLDcuMTYgOS4wNSw3Ljg3IDkuNSw3LjlMMTAuNDEsOEwxMS43NSwxMS42NEw5Ljg3LDE3LjI3TDYuNzQsOEw3LjczLDcuOUM4LjE5LDcuODQgOC4xMyw3LjE2IDcuNjcsNy4xOUM3LjY3LDcuMTkgNi4yOCw3LjMgNS4zOCw3LjNMNC44Myw3LjI5QzYuMzcsNC45NiA5LDMuNDIgMTIsMy40MkMxNC4yMywzLjQyIDE2LjI3LDQuMjggMTcuNzksNS42N0gxNy42OEMxNi44NCw1LjY3IDE2LjI0LDYuNCAxNi4yNCw3LjE5QzE2LjI0LDcuOSAxNi42NSw4LjUgMTcuMDgsOS4yQzE3LjQxLDkuNzcgMTcuNzksMTAuNSAxNy43OSwxMS41N00xMi4xNSwxMi43NUwxNC43OSwxOS45N0wxNC44NSwyMC4wOUMxMy45NiwyMC40MSAxMywyMC41OCAxMiwyMC41OEMxMS4xNiwyMC41OCAxMC4zNSwyMC40NiA5LjU4LDIwLjIzTDEyLjE1LDEyLjc1TTE5LjUzLDcuODhDMjAuMiw5LjExIDIwLjU4LDEwLjUgMjAuNTgsMTJDMjAuNTgsMTUuMTYgMTguODYsMTcuOTMgMTYuMzEsMTkuNDFMMTguOTMsMTEuODRDMTkuNDIsMTAuNjIgMTkuNTksOS42NCAxOS41OSw4Ljc3TDE5LjUzLDcuODhNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTIsMjEuNTRDMTcuMjYsMjEuNTQgMjEuNTQsMTcuMjYgMjEuNTQsMTJDMjEuNTQsNi43NCAxNy4yNiwyLjQ2IDEyLDIuNDZDNi43NCwyLjQ2IDIuNDYsNi43NCAyLjQ2LDEyQzIuNDYsMTcuMjYgNi43NCwyMS41NCAxMiwyMS41NFpcIjtcclxuZXhwb3J0IHZhciBtZGlXcmFwID0gXCJNMjEsNUgzVjdIMjFWNU0zLDE5SDEwVjE3SDNWMTlNMywxM0gxOEMxOSwxMyAyMCwxMy40MyAyMCwxNUMyMCwxNi41NyAxOSwxNyAxOCwxN0gxNlYxNUwxMiwxOEwxNiwyMVYxOUgxOEMyMC45NSwxOSAyMiwxNy43MyAyMiwxNUMyMiwxMi4yOCAyMSwxMSAxOCwxMUgzVjEzWlwiO1xyXG5leHBvcnQgdmFyIG1kaVdyYXBEaXNhYmxlZCA9IFwiTTE2LDdIM1Y1SDE2VjdNMywxOUgxNlYxN0gzVjE5TTIyLDEyTDE4LDlWMTFIM1YxM0gxOFYxNUwyMiwxMlpcIjtcclxuZXhwb3J0IHZhciBtZGlXcmVuY2ggPSBcIk0yMi43LDE5TDEzLjYsOS45QzE0LjUsNy42IDE0LDQuOSAxMi4xLDNDMTAuMSwxIDcuMSwwLjYgNC43LDEuN0w5LDZMNiw5TDEuNiw0LjdDMC40LDcuMSAwLjksMTAuMSAyLjksMTIuMUM0LjgsMTQgNy41LDE0LjUgOS44LDEzLjZMMTguOSwyMi43QzE5LjMsMjMuMSAxOS45LDIzLjEgMjAuMywyMi43TDIyLjYsMjAuNEMyMy4xLDIwIDIzLjEsMTkuMyAyMi43LDE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVdyZW5jaE91dGxpbmUgPSBcIk0yMi42MSwxOUwxMy41Myw5LjkxQzE0LjQ2LDcuNTcgMTQsNC44MSAxMi4wOSwyLjkxQzkuNzksMC42MSA2LjIxLDAuNCAzLjY2LDIuMjZMNy41LDYuMTFMNi4wOCw3LjVMMi4yNSwzLjY5QzAuMzksNi4yMyAwLjYsOS44MiAyLjksMTIuMTFDNC43NiwxMy45NyA3LjQ3LDE0LjQ2IDkuNzksMTMuNTlMMTguOSwyMi43QzE5LjI5LDIzLjA5IDE5LjkyLDIzLjA5IDIwLjMxLDIyLjdMMjIuNjEsMjAuNEMyMywyMCAyMywxOS4zOSAyMi42MSwxOU0xOS42MSwyMC41OUwxMC4xNSwxMS4xM0M5LjU0LDExLjU4IDguODYsMTEuODUgOC4xNSwxMS45NUM2Ljc5LDEyLjE1IDUuMzYsMTEuNzQgNC4zMiwxMC43QzMuMzcsOS43NiAyLjkzLDguNSAzLDcuMjZMNi4wOSwxMC4zNUwxMC4zMyw2LjExTDcuMjQsM0M4LjUsMi45NSA5LjczLDMuMzkgMTAuNjgsNC4zM0MxMS43Niw1LjQxIDEyLjE3LDYuOSAxMS45Miw4LjI5QzExLjgsOSAxMS41LDkuNjYgMTEuMDQsMTAuMjVMMjAuNSwxOS43TDE5LjYxLDIwLjU5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVhhbWFyaW4gPSBcIk0yMi43NSwxMS4wN0MyMi45MSwxMS4zNSAyMywxMS42NyAyMywxMkMyMywxMi4zMyAyMi45MSwxMi42NSAyMi43NSwxMi45M0wxOC4wOCwyMUMxNy43MiwyMS42MiAxNy4wNiwyMiAxNi4zNSwyMkg3LjY1QzYuOTQsMjIgNi4yOCwyMS42MiA1LjkyLDIxTDEuMjUsMTIuOTNDMS4wOSwxMi42NSAxLDEyLjMzIDEsMTJDMSwxMS42NyAxLjA5LDExLjM1IDEuMjUsMTEuMDdMNS45MiwzQzYuMjgsMi4zOCA2Ljk0LDIgNy42NSwySDE2LjM1QzE3LjA2LDIgMTcuNzIsMi4zOCAxOC4wOCwzTDIyLjc1LDExLjA3TTEyLDEyVjExLjlMOS40Miw3LjFMOS4yNSw3SDcuNjZMNy41LDcuMVY3LjNMMTAsMTJMNy41LDE2LjdWMTYuOUw3LjY2LDE3SDkuMjVMOS40MiwxNi45TDEyLDEyLjFWMTJMMTIuMDMsMTIuMUwxNC41OCwxNi45TDE0Ljc1LDE3SDE2LjM0TDE2LjUsMTYuOVYxNi43TDE0LDEyTDE2LjUsNy4zVjcuMUwxNi4zNCw3SDE0Ljc1TDE0LjU4LDcuMUwxMi4wMywxMS45TDEyLDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVhhbWFyaW5PdXRsaW5lID0gXCJNMTIsMTJMMTIuMDMsMTEuOUwxNC41OCw3LjFMMTQuNzUsN0gxNi4zNEwxNi41LDcuMVY3LjNMMTQsMTJMMTYuNSwxNi43VjE2LjlMMTYuMzQsMTdIMTQuNzVMMTQuNTgsMTYuOUwxMi4wMywxMi4xTDEyLDEyVjEyLjFMOS40MiwxNi45TDkuMjUsMTdINy42Nkw3LjUsMTYuOVYxNi43TDEwLDEyTDcuNSw3LjNWNy4xTDcuNjYsN0g5LjI1TDkuNDIsNy4xTDEyLDExLjlWMTJNMjIuNzUsMTEuMDdDMjIuOTEsMTEuMzUgMjMsMTEuNjcgMjMsMTJDMjMsMTIuMzMgMjIuOTEsMTIuNjUgMjIuNzUsMTIuOTNMMTguMDgsMjFDMTcuNzIsMjEuNjIgMTcuMDYsMjIgMTYuMzUsMjJINy42NUM2Ljk0LDIyIDYuMjgsMjEuNjIgNS45MiwyMUwxLjI1LDEyLjkzQzEuMDksMTIuNjUgMSwxMi4zMyAxLDEyQzEsMTEuNjcgMS4wOSwxMS4zNSAxLjI1LDExLjA3TDUuOTIsM0M2LjI4LDIuMzggNi45NCwyIDcuNjUsMkgxNi4zNUMxNy4wNiwyIDE3LjcyLDIuMzggMTguMDgsM0wyMi43NSwxMS4wN00yMC44LDExLjI1TDE2Ljk3LDQuOEMxNi42OCw0LjMgMTYuMTQsNCAxNS41Niw0SDguNDRDNy44Niw0IDcuMzIsNC4zIDcuMDMsNC44TDMuMiwxMS4yNUMzLjA3LDExLjUgMywxMS43NCAzLDEyQzMsMTIuMjYgMy4wNywxMi41IDMuMiwxMi43NUw3LjAzLDE5LjJDNy4zMiwxOS43IDcuODYsMjAgOC40NCwyMEgxNS41NkMxNi4xNCwyMCAxNi42OCwxOS43IDE2Ljk3LDE5LjJMMjAuOCwxMi43NUMyMC45MywxMi41IDIxLDEyLjI2IDIxLDEyQzIxLDExLjc0IDIwLjkzLDExLjUgMjAuOCwxMS4yNVpcIjtcclxuZXhwb3J0IHZhciBtZGlYaW5nID0gXCJNNC44LDNDMy44LDMgMywzLjggMyw0LjhWMTkuMkMzLDIwLjIgMy44LDIxIDQuOCwyMUgxOS4yQzIwLjIsMjEgMjEsMjAuMiAyMSwxOS4yVjQuOEMyMSwzLjggMjAuMiwzIDE5LjIsM00xNi4wNyw1SDE4LjExQzE4LjIzLDUgMTguMzMsNS4wNCAxOC4zNyw1LjEzQzE4LjQzLDUuMjIgMTguNDMsNS4zMyAxOC4zNyw1LjQ0TDEzLjksMTMuMzZMMTYuNzUsMTguNTZDMTYuODEsMTguNjcgMTYuODEsMTguNzggMTYuNzUsMTguODdDMTYuNywxOC45NSAxNi42MSwxOSAxNi41LDE5SDE0LjQ3QzE0LjE2LDE5IDE0LDE4Ljc5IDEzLjkxLDE4LjYxTDExLjA0LDEzLjM1QzExLjE4LDEzLjEgMTUuNTMsNS4zOSAxNS41Myw1LjM5QzE1LjY0LDUuMTkgMTUuNzcsNSAxNi4wNyw1TTcuMDksNy43Nkg5LjFDOS40MSw3Ljc2IDkuNTcsNy45NiA5LjY3LDguMTVMMTEuMDYsMTAuNTdDMTAuOTcsMTAuNzEgOC44OCwxNC40MiA4Ljg4LDE0LjQyQzguNzcsMTQuNjEgOC42MywxNC44MSA4LjMyLDE0LjgxSDYuM0M2LjE4LDE0LjgxIDYuMDksMTQuNzYgNi4wNCwxNC42N0M2LDE0LjU5IDYsMTQuNDcgNi4wNCwxNC4zNkw4LjE4LDEwLjU3TDYuODIsOC4yQzYuNzcsOC4wOSA2Ljc1LDggNi44MSw3Ljg5QzYuODYsNy44MSA2Ljk2LDcuNzYgNy4wOSw3Ljc2WlwiO1xyXG5leHBvcnQgdmFyIG1kaVhtbCA9IFwiTTEyLjg5LDNMMTQuODUsMy40TDExLjExLDIxTDkuMTUsMjAuNkwxMi44OSwzTTE5LjU5LDEyTDE2LDguNDFWNS41OEwyMi40MiwxMkwxNiwxOC40MVYxNS41OEwxOS41OSwxMk0xLjU4LDEyTDgsNS41OFY4LjQxTDQuNDEsMTJMOCwxNS41OFYxOC40MUwxLjU4LDEyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVhtcHAgPSBcIk0xMiwxNS40QzkuNzUsMTMuMDkgOCw5LjU0IDgsNkMyLDQgOCw2IDIsNEMyLDkuNjUgNi4zMywxNC4xMSAxMC41NSwxNi42NkM5LjM4LDE3LjUgOC4xNSwxOCA3LDE4QzcsMTkgNywxOCA3LDE5QzguMiwxOSAxMC4wMywxOC40NiAxMiwxNy40NkMxMy45NywxOC40NiAxNS44LDE5IDE3LDE5QzE3LDE4IDE3LDE5IDE3LDE4QzE1Ljg1LDE4IDE0LjYyLDE3LjUgMTMuNDUsMTYuNjZDMTcuNjYsMTQuMTEgMjIsOS42NSAyMiw0QzE2LDYgMjIsNCAxNiw2QzE2LDkuNTQgMTQuMjUsMTMuMDkgMTIsMTUuNFpcIjtcclxuZXhwb3J0IHZhciBtZGlZQ29tYmluYXRvciA9IFwiTTIsMkgyMlYyMkgyVjJNMTEuMjUsMTcuNUgxMi43NVYxMy4wNkwxNiw3SDE0LjVMMTIsMTEuNjZMOS41LDdIOEwxMS4yNSwxMy4wNlYxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVlhaG9vID0gXCJNMTAuNSA3LjU5TDguMTYgMTMuMkw1Ljg1IDcuNTlIMkw2LjI5IDE3LjIzTDQuNzUgMjAuN0g4LjVMMTQuMjQgNy41OUgxMC41TTE1IDEyLjczQzEzLjYzIDEyLjczIDEyLjU5IDEzLjc3IDEyLjU5IDE1QzEyLjU5IDE2LjE3IDEzLjU5IDE3LjE2IDE0LjkzIDE3LjE2QzE2LjMyIDE3LjE2IDE3LjM2IDE2LjEzIDE3LjM2IDE0LjlDMTcuMzYgMTMuNjkgMTYuMzYgMTIuNzMgMTUgMTIuNzNNMTcuNzIgMy4zTDEzLjg5IDExLjg5SDE4LjE3TDIyIDMuM0gxNy43MlpcIjtcclxuZXhwb3J0IHZhciBtZGlZZWFzdCA9IFwiTTE4LDE0QTQsNCAwIDAsMSAyMiwxOEE0LDQgMCAwLDEgMTgsMjJBNCw0IDAgMCwxIDE0LDE4TDE0LjA5LDE3LjE1QzE0LjA1LDE2LjQ1IDEzLjkyLDE1Ljg0IDEzLjU1LDE1LjVDMTMuMzUsMTUuMyAxMy4wNywxNS4xOSAxMi43NSwxNS4xM0MxMS43OSwxNS42OCAxMC42OCwxNiA5LjUsMTZBNi41LDYuNSAwIDAsMSAzLDkuNUE2LjUsNi41IDAgMCwxIDkuNSwzQTYuNSw2LjUgMCAwLDEgMTYsOS41QzE2LDEwLjY4IDE1LjY4LDExLjc5IDE1LjEzLDEyLjc1QzE1LjE5LDEzLjA3IDE1LjMsMTMuMzUgMTUuNSwxMy41NUMxNS44NCwxMy45MiAxNi40NSwxNC4wNSAxNy4xNSwxNC4wOUwxOCwxNE03LjUsMTBBMS41LDEuNSAwIDAsMSA5LDExLjVBMS41LDEuNSAwIDAsMSA3LjUsMTNBMS41LDEuNSAwIDAsMSA2LDExLjVBMS41LDEuNSAwIDAsMSA3LjUsMTBNOS41LDVDNyw1IDUsNyA1LDkuNUM1LDEyIDcsMTQgOS41LDE0QzEyLDE0IDE0LDEyIDE0LDkuNUMxNCw3IDEyLDUgOS41LDVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWWluWWFuZyA9IFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwQTQsNCAwIDAsMSA4LDE2QTQsNCAwIDAsMSAxMiwxMkE0LDQgMCAwLDAgMTYsOEE0LDQgMCAwLDAgMTIsNE0xMiw2LjVBMS41LDEuNSAwIDAsMSAxMy41LDhBMS41LDEuNSAwIDAsMSAxMiw5LjVBMS41LDEuNSAwIDAsMSAxMC41LDhBMS41LDEuNSAwIDAsMSAxMiw2LjVNMTIsMTQuNUExLjUsMS41IDAgMCwwIDEwLjUsMTZBMS41LDEuNSAwIDAsMCAxMiwxNy41QTEuNSwxLjUgMCAwLDAgMTMuNSwxNkExLjUsMS41IDAgMCwwIDEyLDE0LjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWW9nYSA9IFwiTTEzIDJDMTEuOSAyIDExIDIuOSAxMSA0QzExIDUuMTEgMTEuOSA2IDEzIDZDMTQuMTEgNiAxNSA1LjExIDE1IDRDMTUgMi45IDE0LjExIDIgMTMgMk00IDdWOUgxMFYxNUw0LjkzIDIwLjA3TDYuMzQgMjEuNUwxMy4wNiAxNC43N0wxNyAxNy4xM1YyMUgxOVYxNi41N0MxOSAxNi4yMSAxOC44MiAxNS44OSAxOC41IDE1LjcxTDE1IDEzLjZWOUgyMVY3SDRaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWW91dHViZSA9IFwiTTEwLDE1TDE1LjE5LDEyTDEwLDlWMTVNMjEuNTYsNy4xN0MyMS42OSw3LjY0IDIxLjc4LDguMjcgMjEuODQsOS4wN0MyMS45MSw5Ljg3IDIxLjk0LDEwLjU2IDIxLjk0LDExLjE2TDIyLDEyQzIyLDE0LjE5IDIxLjg0LDE1LjggMjEuNTYsMTYuODNDMjEuMzEsMTcuNzMgMjAuNzMsMTguMzEgMTkuODMsMTguNTZDMTkuMzYsMTguNjkgMTguNSwxOC43OCAxNy4xOCwxOC44NEMxNS44OCwxOC45MSAxNC42OSwxOC45NCAxMy41OSwxOC45NEwxMiwxOUM3LjgxLDE5IDUuMiwxOC44NCA0LjE3LDE4LjU2QzMuMjcsMTguMzEgMi42OSwxNy43MyAyLjQ0LDE2LjgzQzIuMzEsMTYuMzYgMi4yMiwxNS43MyAyLjE2LDE0LjkzQzIuMDksMTQuMTMgMi4wNiwxMy40NCAyLjA2LDEyLjg0TDIsMTJDMiw5LjgxIDIuMTYsOC4yIDIuNDQsNy4xN0MyLjY5LDYuMjcgMy4yNyw1LjY5IDQuMTcsNS40NEM0LjY0LDUuMzEgNS41LDUuMjIgNi44Miw1LjE2QzguMTIsNS4wOSA5LjMxLDUuMDYgMTAuNDEsNS4wNkwxMiw1QzE2LjE5LDUgMTguOCw1LjE2IDE5LjgzLDUuNDRDMjAuNzMsNS42OSAyMS4zMSw2LjI3IDIxLjU2LDcuMTdaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWW91dHViZUdhbWluZyA9IFwiTTIyIDEzVjhMMTcgNUwxMiA4TDcgNUwyIDhWMTNMMTIgMTlMMjIgMTNNOSAxMUg3VjEzSDZWMTFINFYxMEg2VjhIN1YxMEg5VjExTTE1IDEzQzE0LjQ1IDEzIDE0IDEyLjU1IDE0IDEyUzE0LjQ1IDExIDE1IDExIDE2IDExLjQ1IDE2IDEyIDE1LjU1IDEzIDE1IDEzTTE4IDExQzE3LjQ1IDExIDE3IDEwLjU1IDE3IDEwUzE3LjQ1IDkgMTggOSAxOSA5LjQ1IDE5IDEwIDE4LjU1IDExIDE4IDExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVlvdXR1YmVTdHVkaW8gPSBcIk0xMCwxNUwxNSwxMkwxMCw5VjE1TTE5LjQ1LDEzTDIxLjU2LDE0LjYzQzIxLjc4LDE0Ljc4IDIxLjgxLDE1IDIxLjY2LDE1LjI4TDE5LjY0LDE4Ljc1QzE5LjUsMTguOTcgMTkuMzEsMTkuMDMgMTkuMDMsMTguOTRMMTYuNTUsMTcuOTVDMTUuODksMTguNDIgMTUuMzMsMTguNzUgMTQuODYsMTguOTRMMTQuNSwyMS41NkMxNC40MiwyMS44NCAxNC4yNywyMiAxNCwyMkgxMEM5LjczLDIyIDkuNTgsMjEuODQgOS41LDIxLjU2TDkuMTQsMTguOTRDOC41NSwxOC42OSA4LDE4LjM2IDcuNDUsMTcuOTVMNC45NywxOC45NEM0LjY5LDE5LjAzIDQuNSwxOC45NyA0LjM2LDE4Ljc1TDIuMzQsMTUuMjhDMi4xOSwxNSAyLjIyLDE0Ljc4IDIuNDQsMTQuNjNMNC41NSwxM0M0LjUsMTIuNzcgNC41LDEyLjQ0IDQuNSwxMkM0LjUsMTEuNTYgNC41LDExLjIzIDQuNTUsMTFMMi40NCw5LjM4QzIuMjIsOS4yMiAyLjE5LDkgMi4zNCw4LjcyTDQuMzYsNS4yNUM0LjUsNS4wMyA0LjY5LDQuOTcgNC45Nyw1LjA2TDcuNDUsNi4wNUM4LjExLDUuNTggOC42Nyw1LjI1IDkuMTQsNS4wNkw5LjUsMi40NEM5LjU4LDIuMTYgOS43MywyIDEwLDJIMTRDMTQuMjcsMiAxNC40MiwyLjE2IDE0LjUsMi40NEwxNC44Niw1LjA2QzE1LjQ1LDUuMzEgMTYsNS42NCAxNi41NSw2LjA1TDE5LjAzLDUuMDZDMTkuMzEsNC45NyAxOS41LDUuMDMgMTkuNjQsNS4yNUwyMS42Niw4LjcyQzIxLjgxLDkgMjEuNzgsOS4yMiAyMS41Niw5LjM4TDE5LjQ1LDExQzE5LjUsMTEuMjMgMTkuNSwxMS41NiAxOS41LDEyQzE5LjUsMTIuNDQgMTkuNSwxMi43NyAxOS40NSwxM1pcIjtcclxuZXhwb3J0IHZhciBtZGlZb3V0dWJlU3Vic2NyaXB0aW9uID0gXCJNMjAsOEg0VjZIMjBWOE0xOCwySDZWNEgxOFYyTTIyLDEyVjIwQTIsMiAwIDAsMSAyMCwyMkg0QTIsMiAwIDAsMSAyLDIwVjEyQTIsMiAwIDAsMSA0LDEwSDIwQTIsMiAwIDAsMSAyMiwxMk0xNiwxNkwxMCwxMi43M1YxOS4yNkwxNiwxNlpcIjtcclxuZXhwb3J0IHZhciBtZGlZb3V0dWJlVHYgPSBcIk0yLjUsNC41SDIxLjVDMjIuMzQsNC41IDIzLDUuMTUgMjMsNlYxNy41QzIzLDE4LjM1IDIyLjM0LDE5IDIxLjUsMTlIMi41QzEuNjUsMTkgMSwxOC4zNSAxLDE3LjVWNkMxLDUuMTUgMS42NSw0LjUgMi41LDQuNU05LjcxLDguNVYxNUwxNS40MiwxMS43TDkuNzEsOC41TTE3LjI1LDIxSDYuNjVDNi4zNSwyMSA2LjE1LDIwLjggNi4xNSwyMC41QzYuMTUsMjAuMiA2LjM1LDIwIDYuNjUsMjBIMTcuMzVDMTcuNjUsMjAgMTcuODUsMjAuMiAxNy44NSwyMC41QzE3Ljg1LDIwLjggMTcuNTUsMjEgMTcuMjUsMjFaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWXVydCA9IFwiTTIyIDE0Ljg3VjIySDE0VjE2SDEwVjIySDJWMTQuODdDMiAxNC4zMyAyLjI5IDEzLjgzIDIuNzYgMTMuNTdMOC42NiAxMC4yQzguODggMTAuMDcgOS4xNCAxMCA5LjQgMTBIMTIuNVY5SDE0VjEwSDE0LjU5QzE0Ljg1IDEwIDE1LjExIDEwLjA3IDE1LjMzIDEwLjJMMjEuMjMgMTMuNTdDMjEuNzEgMTMuODQgMjIgMTQuMzMgMjIgMTQuODdNNy44NiA2LjI1SDkuNEMxMC43MyA2LjI1IDExLjkyIDYuOTUgMTIuNSA4SDE0QzEzLjYgNi4yIDEyIDQuODUgMTAuMSA0Ljg1VjMuMzVDMTEuMSAzLjM1IDExLjk1IDIuNSAxMS45NSAxLjVWMUg3Ljg2VjIuNUM2Ljg2IDIuNSA2IDMuMjMgNiA0LjI1UzYuODYgNi4yNSA3Ljg2IDYuMjVaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWldhdmUgPSBcIk0xNi4zLDEwLjU4QzEzLjE0LDEwLjU4IDEwLjYsMTMuMTMgMTAuNiwxNi4yOEMxMC42LDE5LjQzIDEzLjE1LDIyIDE2LjMsMjJDMTkuNDUsMjIgMjIsMTkuNDMgMjIsMTYuMjhDMjIsMTMuMTMgMTkuNDUsMTAuNTggMTYuMywxMC41OE0xOCwxOS4wOEgxMy4xOUwxNS44MSwxNUgxMy4zMUwxNC40LDEzLjIzSDE5LjE4TDE2LjYzLDE3LjI4SDE5LjE4TDE4LDE5LjA4TTE2LjMsMy45M1YyQzguNDEsMiAyLDguNDIgMiwxNi4zMUgzLjkyQzMuOTQsOS40NiA5LjUsMy45MyAxNi4zLDMuOTNNMTYuMyw3Ljc0VjUuODJDMTAuNSw1LjgyIDUuODEsMTAuNTMgNS44MSwxNi4zMUg3LjczQzcuNzUsMTEuNTggMTEuNTksNy43NCAxNi4zLDcuNzRcIjtcclxuZXhwb3J0IHZhciBtZGlaZW5kID0gXCJNMTEuMjgsOS44MUMxMS4yOCw5LjgxIDExLjI4LDcgMTQuMDksN0gyMi41QzIyLjUsNyAyMi41LDkuODEgMTkuNzEsOS44MUgxMS4yOE0xMS4yOCwxMy40MUMxMS4yOCwxMy40MSAxMS4yOCwxMC42IDE0LjA5LDEwLjZIMTguMzFDMTguMzEsMTAuNiAxOC4zMSwxMy40MSAxNS41LDEzLjQxSDExLjI4TTExLjI4LDE3QzExLjI4LDE3IDExLjI4LDE0LjE5IDE0LjA5LDE0LjE5SDE1LjVDMTUuNSwxNC4xOSAxNS41LDE3IDEyLjY4LDE3SDExLjI4TTEwLjQ2LDE0LjhWMTdIMS41OEw3LjMsOS4yMUgyLjRWN0gxMS42Nkw1Ljk2LDE0LjhIMTAuNDZaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWmlnYmVlID0gXCJNNC4wNiw2LjE1QzMuOTcsNi4xNyAzLjg4LDYuMjIgMy44LDYuMjhDMi42Niw3LjkgMiw5Ljg3IDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJDMTUsMjIgMTcuNjgsMjAuNjggMTkuNSwxOC42TDE3LDE4Ljg1QzE0LjI1LDE5LjE1IDExLjQ1LDE5LjE5IDguNjYsMTguOTZDNy45NSwxOC45NCA3LjI0LDE4Ljc2IDYuNTksMTguNDVDNS43MywxOC4wNiA1LjE1LDE3LjIzIDUuMDcsMTYuMjlDNS4wNiwxNi4xMyA1LjEyLDE2IDUuMjMsMTUuODdMNy40MiwxMy42TDE1LjAzLDUuN1Y1LjZIMTAuODRDOC41Nyw1LjY0IDYuMzEsNS44MiA0LjA2LDYuMTVNMjAuMTcsMTcuNUMyMC4yNiwxNy40NyAyMC4zNSwxNy40NCAyMC40MywxNy4zOUMyMS40MiwxNS44MyAyMiwxNCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyQzkuMjIsMiA2LjcsMy4xMyA0Ljg5LDQuOTdINS4xN0M4LjI4LDQuNTcgMTEuNDMsNC40NyAxNC41Niw0LjY1QzE1LjUsNC42NCAxNi40NSw0LjgyIDE3LjMzLDUuMTdDMTguMjUsNS41MyAxOC44OSw2LjM4IDE5LDcuMzdDMTksNy41MyAxOC45Myw3LjcgMTguODIsNy44Mkw5LjcxLDE3LjE5TDksMTcuOTVWMTguMDZIMTMuMTRDMTUuNSwxOCAxNy44NCwxNy44MSAyMC4xNywxNy41WlwiO1xyXG5leHBvcnQgdmFyIG1kaVppcEJveCA9IFwiTTE0LDE3SDEyVjE1SDEwVjEzSDEyVjE1SDE0TTE0LDlIMTJWMTFIMTRWMTNIMTJWMTFIMTBWOUgxMlY3SDEwVjVIMTJWN0gxNE0xOSwzSDVDMy44OSwzIDMsMy44OSAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM1pcIjtcclxuZXhwb3J0IHZhciBtZGlaaXBCb3hPdXRsaW5lID0gXCJNMTIgMTdWMTVIMTRWMTdIMTJNMTQgMTNWMTFIMTJWMTNIMTRNMTQgOVY3SDEyVjlIMTRNMTAgMTFIMTJWOUgxMFYxMU0xMCAxNUgxMlYxM0gxMFYxNU0yMSA1VjE5QzIxIDIwLjEgMjAuMSAyMSAxOSAyMUg1QzMuOSAyMSAzIDIwLjEgMyAxOVY1QzMgMy45IDMuOSAzIDUgM0gxOUMyMC4xIDMgMjEgMy45IDIxIDVNMTkgNUgxMlY3SDEwVjVINVYxOUgxOVY1WlwiO1xyXG5leHBvcnQgdmFyIG1kaVppcERpc2sgPSBcIk03LDNMMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1TDE3LDNWNUExLDEgMCAwLDEgMTYsNkgxMEExLDEgMCAwLDEgOSw1VjNIN004LDEwSDE2QTEsMSAwIDAsMSAxNywxMVYxOUg3VjExQTEsMSAwIDAsMSA4LDEwWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0FxdWFyaXVzID0gXCJNMTUsMTIuNDFMMTIsOS40MUw5LDEyLjQxTDYsOS40MUwzLjcxLDExLjcxTDIuMjksMTAuMjlMNiw2LjU5TDksOS41OUwxMiw2LjU5TDE1LDkuNTlMMTgsNi41OUwyMS43MSwxMC4yOUwyMC4yOSwxMS43MUwxOCw5LjQxTDE1LDEyLjQxTTE4LDE1LjQxTDIwLjI5LDE3LjcxTDIxLjcxLDE2LjI5TDE4LDEyLjU5TDE1LDE1LjU5TDEyLDEyLjU5TDksMTUuNTlMNiwxMi41OUwyLjI5LDE2LjI5TDMuNzEsMTcuNzFMNiwxNS40MUw5LDE4LjQxTDEyLDE1LjQxTDE1LDE4LjQxTDE4LDE1LjQxWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0FyaWVzID0gXCJNMTYsMkMxNC45NSwyIDEzLjkxLDIuMjcgMTMsMi44MUMxMi42NCwzIDEyLjMsMy4yNiAxMiwzLjU0QzExLjcsMy4yNiAxMS4zNiwzIDExLDIuODFDMTAuMDksMi4yNyA5LjA1LDIgOCwyQTYsNiAwIDAsMCAyLDhBNiw2IDAgMCwwIDgsMTRWMTJBNCw0IDAgMCwxIDQsOEE0LDQgMCAwLDEgOCw0QzksNCAxMCw0LjM5IDEwLjc1LDUuMUMxMC44NCw1LjE4IDEwLjkyLDUuMjcgMTEsNS4zNlYyMkgxM1Y1LjM2QzEzLjA4LDUuMjcgMTMuMTYsNS4xOCAxMy4yNSw1LjFDMTQuODUsMy41OCAxNy4zOCwzLjY0IDE4LjkxLDUuMjVDMjAuNDMsNi44NSAyMC4zNiw5LjM4IDE4Ljc2LDEwLjlDMTgsMTEuNjEgMTcuMDMsMTIgMTYsMTJWMTRBNiw2IDAgMCwwIDIyLDhBNiw2IDAgMCwwIDE2LDJaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWm9kaWFjQ2FuY2VyID0gXCJNMTIsNEM2LjUsNCAyLDcuNTggMiwxMkMyLDE0LjEyIDMuNjUsMTUuODcgNS43NiwxNkg2QTQsNCAwIDAsMCAxMCwxMkE0LDQgMCAwLDAgNiw4SDUuNzZDNy40NCw2LjQxIDkuNjksNS41NSAxMiw1LjZDMTMuNzcsNS41OCAxNS41LDYuMDcgMTcsN0wxOC4yNSw1Ljc1QzE2LjM4LDQuNTggMTQuMjEsMy45NyAxMiw0TTYsMTBBMiwyIDAgMCwxIDgsMTJDOCwxMy4xMSA3LjA4LDE0IDYsMTRDNC45NiwxNCA0LjEsMTMuMjIgNCwxMi4yQzQsMTIuMDcgNCwxMS45MyA0LDExLjhDNC4xLDEwLjc3IDQuOTcsMTAgNiwxME0xOC4yNCw4SDE4QTQsNCAwIDAsMCAxNCwxMkE0LDQgMCAwLDAgMTgsMTZIMTguMjRDMTYuNTYsMTcuNTkgMTQuMzEsMTguNDUgMTIsMTguNEMxMC4yMywxOC40MiA4LjUsMTcuOTMgNywxN0w1Ljc2LDE4LjI0QzcuNjMsMTkuNDEgOS43OSwyMCAxMiwyMEMxNy41LDIwIDIyLDE2LjQyIDIyLDEyQzIyLDkuODggMjAuMzUsOC4xMyAxOC4yNCw4TTE4LDE0QTIsMiAwIDAsMSAxNiwxMkMxNiwxMC44OSAxNi45MiwxMCAxOCwxMEMxOS4wNCwxMCAxOS45LDEwLjc4IDIwLDExLjhDMjAsMTEuOTMgMjAsMTIuMDcgMjAsMTIuMkMxOS45LDEzLjIzIDE5LjAzLDE0IDE4LDE0WlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0NhcHJpY29ybiA9IFwiTTE1LDEzQzE0LjMsMTMgMTMuNjEsMTMuMTkgMTMsMTMuNTVWNkEzLDMgMCAwLDAgMTAsM0M5LjI1LDMgOC41NSwzLjI5IDgsMy43OEM3LjQ1LDMuMjggNi43NCwzIDYsM1Y1QTEsMSAwIDAsMSA3LDZWMTZIOVY2QTEsMSAwIDAsMSAxMCw1QTEsMSAwIDAsMSAxMSw2VjE3QTIsMiAwIDAsMSA5LDE5VjIxQzEwLjE1LDIxIDExLjI1LDIwLjUgMTIsMTkuNjJDMTMuNDUsMjEuMjkgMTUuOTcsMjEuNDcgMTcuNjQsMjBDMTkuMzEsMTguNTggMTkuNSwxNi4wNSAxOC4wNCwxNC4zOEMxNy4yOCwxMy41IDE2LjE3LDEzIDE1LDEzTTE1LDE5QTIsMiAwIDAsMSAxMywxN0EyLDIgMCAwLDEgMTUsMTVBMiwyIDAgMCwxIDE3LDE3QTIsMiAwIDAsMSAxNSwxOVpcIjtcclxuZXhwb3J0IHZhciBtZGlab2RpYWNHZW1pbmkgPSBcIk0xOCw1LjNDMTkuMzUsNC45NyAyMC42Niw0LjU0IDIxLjk0LDRMMjEuMTgsMi4xNEMxOC4yNywzLjM2IDE1LjE1LDQgMTIsNEM4Ljg1LDQgNS43MywzLjM4IDIuODIsMi4xN0wyLjA2LDRDMy4zNCw0LjU0IDQuNjUsNC45NyA2LDUuM1YxOC43QzQuNjUsMTkuMDMgMy4zNCwxOS40NiAyLjA2LDIwTDIuODIsMjEuODZDOC43LDE5LjQyIDE1LjMsMTkuNDIgMjEuMTgsMjEuODZMMjEuOTQsMjBDMjAuNjYsMTkuNDYgMTkuMzUsMTkuMDMgMTgsMTguN1Y1LjNNOCwxOC4zVjUuNjlDOS4zMiw1Ljg5IDEwLjY2LDYgMTIsNkMxMy4zNCw2IDE0LjY4LDUuODkgMTYsNS42OVYxOC4zMUMxMy4zNSwxNy45IDEwLjY1LDE3LjkgOCwxOC4zMVYxOC4zWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0xlbyA9IFwiTTIwLDE3QTMsMyAwIDAsMSAxNywyMEMxNS4zOCwxOS45MiAxNC4wOCwxOC42MiAxNCwxN0MxNC4xNiwxNS4zOSAxNC41LDEzLjggMTUsMTIuMjZDMTUuNTQsMTAuNTUgMTUuODcsOC43OSAxNiw3QzE1LjkzLDQuMjcgMTMuNzMsMi4wNyAxMSwyQzguMjcsMi4wNyA2LjA3LDQuMjcgNiw3QzYuMTUsOC41MyA2LjUsMTAuMDMgNywxMS41TDcuMjEsMTIuMkM1LjEsMTEuNTMgMi44NiwxMi43IDIuMTksMTQuOEMxLjUsMTYuOTEgMi42OCwxOS4xNiA0Ljc5LDE5LjgzQzYuOSwyMC41IDkuMTQsMTkuMzMgOS44MSwxNy4yMkM5Ljk0LDE2LjgzIDEwLDE2LjQxIDEwLDE2QzkuODQsMTQuMjcgOS41LDEyLjU2IDguOTEsMTAuOTJDOC40Nyw5LjY1IDguMTYsOC4zNCA4LDdDOC4wOCw1LjM4IDkuMzgsNC4wOCAxMSw0QzEyLjYyLDQuMDggMTMuOTIsNS4zOCAxNCw3QzEzLjg0LDguNjEgMTMuNSwxMC4yIDEzLDExLjc0QzEyLjQ2LDEzLjQ1IDEyLjEzLDE1LjIxIDEyLDE3QzEyLjA3LDE5LjczIDE0LjI3LDIxLjkzIDE3LDIyQTUsNSAwIDAsMCAyMiwxN0gyME02LDE4QTIsMiAwIDAsMSA0LDE2QTIsMiAwIDAsMSA2LDE0QTIsMiAwIDAsMSA4LDE2QTIsMiAwIDAsMSA2LDE4WlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY0xpYnJhID0gXCJNMjAsMTZWMThIMTNWMTUuOTFDMTYsMTUuMzYgMTcuOTYsMTIuNSAxNy40MSw5LjVDMTYuODYsNi41IDE0LDQuNTQgMTEsNS4wOUM4LDUuNjUgNi4wNCw4LjUgNi41OSwxMS41QzcsMTMuNzQgOC43NiwxNS41IDExLDE1LjkxVjE4SDRWMTZINi45MkM1LjM3LDE0LjU5IDQuNSwxMi41OSA0LjUsMTAuNUE3LjUsNy41IDAgMCwxIDEyLDNBNy41LDcuNSAwIDAsMSAxOS41LDEwLjVDMTkuNSwxMi41OSAxOC42MywxNC41OSAxNy4wOCwxNkgyME0yMCwxOUg0VjIxSDIwVjE5WlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY1Bpc2NlcyA9IFwiTTIwLDExSDE4QzE4LjExLDguMTkgMTguNzMsNS40MiAxOS44MSwyLjgyTDE4LDIuMDZDMTYuODEsNC45IDE2LjEzLDcuOTIgMTYsMTFIOEM3Ljg3LDcuOTIgNy4xOSw0LjkgNiwyLjA2TDQuMTQsMi44MkM1LjI0LDUuNDEgNS44Nyw4LjE4IDYsMTFINFYxM0g2QzUuODksMTUuODEgNS4yNywxOC41OCA0LjE5LDIxLjE4TDYsMjEuOTRDNy4xOSwxOS4xIDcuODcsMTYuMDggOCwxM0gxNkMxNi4xMywxNi4wOCAxNi44MSwxOS4xIDE4LDIxLjk0TDE5Ljg2LDIxLjE4QzE4Ljc2LDE4LjU5IDE4LjEzLDE1LjgyIDE4LDEzSDIwVjExWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY1NhZ2l0dGFyaXVzID0gXCJNMjIsMlYxMkgyMFY1LjQxTDEwLjQxLDE1TDEyLjcxLDE3LjI5TDExLjI5LDE4LjcxTDksMTYuNDFMMy43MSwyMS43MUwyLjI5LDIwLjI5TDcuNTksMTVMNS4yOSwxMi43MUw2LjcxLDExLjI5TDksMTMuNTlMMTguNTksNEgxMlYySDIyWlwiO1xyXG5leHBvcnQgdmFyIG1kaVpvZGlhY1Njb3JwaW8gPSBcIk0xNy43MSwxNS4yOUwxNi4yOSwxNi43MUwxNy41OSwxOEgxNkEyLDIgMCAwLDEgMTQsMTZWNkEzLDMgMCAwLDAgMTEsM0MxMC4yNSwzIDkuNTUsMy4yOSA5LDMuNzhDNy44NiwyLjc2IDYuMTQsMi43NiA1LDMuNzhDNC40NSwzLjI4IDMuNzQsMyAzLDNWNUExLDEgMCAwLDEgNCw2VjE2SDZWNkExLDEgMCAwLDEgNyw1QTEsMSAwIDAsMSA4LDZWMTZIMTBWNkExLDEgMCAwLDEgMTEsNUExLDEgMCAwLDEgMTIsNlYxNkE0LDQgMCAwLDAgMTYsMjBIMTcuNTlMMTYuMjksMjEuMjlMMTcuNzEsMjIuNzFMMjEuNDEsMTlMMTcuNzEsMTUuMjlaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWm9kaWFjVGF1cnVzID0gXCJNMTUuNTksOUMxNy43LDcuNzQgMTksNS40NiAxOSwzSDE3QTUsNSAwIDAsMSAxMiw4QTUsNSAwIDAsMSA3LDNINUM1LDUuNDYgNi4zLDcuNzQgOC40MSw5QzUuMDksMTEgNCwxNS4yOCA2LDE4LjZDNy45NywyMS45MiAxMi4yNywyMyAxNS41OSwyMUMxOC45MSwxOS4wNCAyMCwxNC43NCAxOCwxMS40MkMxNy40MiwxMC40MyAxNi41OCw5LjU5IDE1LjU5LDlNMTIsMjBBNSw1IDAgMCwxIDcsMTVBNSw1IDAgMCwxIDEyLDEwQTUsNSAwIDAsMSAxNywxNUE1LDUgMCAwLDEgMTIsMjBaXCI7XHJcbmV4cG9ydCB2YXIgbWRpWm9kaWFjVmlyZ28gPSBcIk0xOC41LDE5LjEzQzIwLDE3Ljc3IDIwLDE1LjE4IDIwLDE0QTQsNCAwIDAsMCAxNiwxMEMxNS4zLDEwIDE0LjYsMTAuMiAxNCwxMC41NlY2QTMsMyAwIDAsMCAxMSwzQzEwLjI1LDMgOS41NSwzLjI5IDksMy43OEM3Ljg2LDIuNzYgNi4xNCwyLjc2IDUsMy43OEM0LjQ1LDMuMjggMy43NCwzIDMsM1Y1QTEsMSAwIDAsMSA0LDZWMTZINlY2QTEsMSAwIDAsMSA3LDVBMSwxIDAgMCwxIDgsNlYxNkgxMFY2QTEsMSAwIDAsMSAxMSw1QTEsMSAwIDAsMSAxMiw2VjE0QzEyLDE1LjE4IDEyLDE3Ljc3IDEzLjUsMTkuMTNDMTIuNzIsMTkuNTQgMTEuODgsMTkuODQgMTEsMjBWMjJDMTIuMjksMjIgMTQuODQsMjAuNzQgMTYsMjAuMTNDMTcuMTYsMjAuNzQgMTkuNzEsMjIgMjEsMjJWMjBDMjAuMTIsMTkuODQgMTkuMjgsMTkuNTQgMTguNSwxOS4xM00xNiwxMkEyLDIgMCAwLDEgMTgsMTRDMTgsMTYuOTIgMTcuNDYsMTggMTYsMThDMTQuNTQsMTggMTQsMTYuOTIgMTQsMTRBMiwyIDAgMCwxIDE2LDEyWlwiO1xyXG4iLG51bGwsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgZXhwb3J0IGxldCBpY29uO1xuICAgIGV4cG9ydCBsZXQgb25DbGljaztcbiAgICBleHBvcnQgbGV0IGRpc2FibGVkID0gZmFsc2U7XG4gICAgZXhwb3J0IGxldCB0aXRsZTtcbjwvc2NyaXB0PlxuXG5cbjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwianVnZ2wtYnV0dG9uXCIgb246Y2xpY2s9e29uQ2xpY2t9IGFyaWEtbGFiZWw9e3RpdGxlfSB7ZGlzYWJsZWR9PlxuICAgIDxzdmcgc3R5bGU9IFwid2lkdGg6MTdweDtoZWlnaHQ6MTdweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9e2ljb259IC8+XG4gICAgPC9zdmc+XG48L2J1dHRvbj4iLG51bGwsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgaW1wb3J0IFRvb2xiYXJCdXR0b24gZnJvbSBcIi4vVG9vbGJhckJ1dHRvbi5zdmVsdGVcIjtcbiAgICBpbXBvcnQge2ljb25zfSBmcm9tIFwiLi4vaWNvbnNcIjtcbiAgICBpbXBvcnQge1dvcmtzcGFjZX0gZnJvbSBcIm9ic2lkaWFuXCI7XG4gICAgaW1wb3J0IHtKdWdnbEhlbHBWaWV3fSBmcm9tIFwiLi4vaGVscC12aWV3XCI7XG4gICAgZXhwb3J0IGxldCB3b3Jrc3BhY2U6IFdvcmtzcGFjZTtcbiAgICBsZXQgb3BlbkhlbHAgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgbGV0IGxlYWYgPSB3b3Jrc3BhY2UuZ2V0TGVhZih0cnVlKTtcbiAgICAgICAgbGV0IHZpZXcgPSBuZXcgSnVnZ2xIZWxwVmlldyhsZWFmKTtcbiAgICAgICAgbGVhZi5vcGVuKHZpZXcpO1xuICAgIH1cbjwvc2NyaXB0PlxuXG48VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19oZWxwfSB0aXRsZT1cIkhlbHBcIiBvbkNsaWNrPXtvcGVuSGVscH0gLz4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAgIGltcG9ydCB7aWNvbnN9IGZyb20gXCIuLi9pY29uc1wiO1xuICAgIGltcG9ydCB7Q29yZX0gZnJvbSBcImN5dG9zY2FwZVwiO1xuICAgIGltcG9ydCBUb29sYmFyQnV0dG9uIGZyb20gXCIuL1Rvb2xiYXJCdXR0b24uc3ZlbHRlXCI7XG4gICAgaW1wb3J0IHtkZWJvdW5jZSwgV29ya3NwYWNlfSBmcm9tIFwib2JzaWRpYW5cIjtcbiAgICBpbXBvcnQgSGVscEJ1dHRvbiBmcm9tIFwiLi9IZWxwQnV0dG9uLnN2ZWx0ZVwiO1xuXG4gICAgZXhwb3J0IGxldCB2aXo6IENvcmU7XG4gICAgZXhwb3J0IGxldCBmaWx0ZXJWYWx1ZTogc3RyaW5nO1xuICAgIGV4cG9ydCBsZXQgZmRnZENsaWNrO1xuICAgIGV4cG9ydCBsZXQgY29uY2VudHJpY0NsaWNrO1xuICAgIGV4cG9ydCBsZXQgZ3JpZENsaWNrO1xuICAgIGV4cG9ydCBsZXQgaGllcmFyY2h5Q2xpY2s7XG4gICAgZXhwb3J0IGxldCBleHBhbmRDbGljaztcbiAgICBleHBvcnQgbGV0IGNvbGxhcHNlQ2xpY2s7XG4gICAgZXhwb3J0IGxldCBoaWRlQ2xpY2s7XG4gICAgZXhwb3J0IGxldCBzZWxlY3RBbGxDbGljaztcbiAgICBleHBvcnQgbGV0IHNlbGVjdEludmVydENsaWNrO1xuICAgIGV4cG9ydCBsZXQgc2VsZWN0TmVpZ2hib3JDbGljaztcbiAgICBleHBvcnQgbGV0IGxvY2tDbGljaztcbiAgICBleHBvcnQgbGV0IHVubG9ja0NsaWNrO1xuICAgIGV4cG9ydCBsZXQgZml0Q2xpY2s7XG4gICAgZXhwb3J0IGxldCBsb2NhbE1vZGVDbGljaztcbiAgICBleHBvcnQgbGV0IGZpbHRlcklucHV0O1xuICAgIGV4cG9ydCBsZXQgc2F2ZUNsaWNrO1xuICAgIGV4cG9ydCBsZXQgd29ya3NwYWNlOiBXb3Jrc3BhY2U7XG5cbiAgICBmaWx0ZXJJbnB1dCA9IGRlYm91bmNlKGZpbHRlcklucHV0LCA1MDAsIHRydWUpO1xuXG4gICAgbGV0IGRpc2FibGVPbk5vbmVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIGxldCBkaXNhYmxlT25BbGxQaW5uZWQgPSBmYWxzZTtcbiAgICBsZXQgZGlzYWJsZU9uTm9uZVBpbm5lZCA9IHRydWU7XG5cbiAgICBleHBvcnQgY29uc3Qgb25TZWxlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZCA9IHZpei5ub2RlcyhcIjpzZWxlY3RlZFwiKTtcbiAgICAgICAgZGlzYWJsZU9uTm9uZVNlbGVjdGVkID0gc2VsZWN0ZWQubGVuZ3RoID09PSAwO1xuICAgICAgICAvLyBUT0RPOiBIYXJkY29kZWQgY2xhc3NcbiAgICAgICAgbGV0IHBpbm5lZCA9IHZpei5ub2RlcyhcIi5waW5uZWRcIik7XG4gICAgICAgIGxldCBhbnlVbnBpbm5lZCA9IHNlbGVjdGVkLmRpZmZlcmVuY2UocGlubmVkKS5sZW5ndGggPiAwXG4gICAgICAgIGxldCBhbnlQaW5uZWQgPSBzZWxlY3RlZC5pbnRlcnNlY3Rpb24ocGlubmVkKTtcbiAgICAgICAgZGlzYWJsZU9uQWxsUGlubmVkID0gIWFueVVucGlubmVkIHx8IGRpc2FibGVPbk5vbmVTZWxlY3RlZDtcbiAgICAgICAgZGlzYWJsZU9uTm9uZVBpbm5lZCA9ICFhbnlQaW5uZWQgfHwgZGlzYWJsZU9uTm9uZVNlbGVjdGVkO1xuICAgIH1cblxuPC9zY3JpcHQ+XG5cblxuPCEtLTxkaXYgY2xhc3M9XCJjeS10b29sYmFyXCI+LS0+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfZmRnZH0gb25DbGljaz17ZmRnZENsaWNrfSB0aXRsZT1cIkZvcmNlIGRpcmVjdGVkIGxheW91dFwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19jb25jZW50cmljfSBvbkNsaWNrPXtjb25jZW50cmljQ2xpY2t9IHRpdGxlPVwiQ2lyY2xlIGxheW91dFwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19ncmlkfSBvbkNsaWNrPXtncmlkQ2xpY2t9IHRpdGxlPVwiR3JpZCBsYXlvdXRcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfaGllcmFyY2h5fSBvbkNsaWNrPXtoaWVyYXJjaHlDbGlja30gdGl0bGU9XCJIaWVyYXJjaGljYWwgbGF5b3V0XCIvPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfZml0fSBvbkNsaWNrPXtmaXRDbGlja30gdGl0bGU9XCJGaXQgdmlld1wiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19sb2NhbH0gb25DbGljaz17bG9jYWxNb2RlQ2xpY2t9IHRpdGxlPVwiTG9jYWwgbW9kZVwiLz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImN5LXRvb2xiYXItc2VjdGlvblwiPlxuICAgIDxIZWxwQnV0dG9uIHt3b3Jrc3BhY2V9IC8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfc2F2ZX0gb25DbGljaz17c2F2ZUNsaWNrfSB0aXRsZT1cIk1hbmFnZSB3b3Jrc3BhY2UgZ3JhcGhzXCIgLz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImN5LXRvb2xiYXItc2VjdGlvblwiPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX2V4cGFuZH0gb25DbGljaz17ZXhwYW5kQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7ZGlzYWJsZU9uTm9uZVNlbGVjdGVkfVwiIHRpdGxlPVwiRXhwYW5kIHNlbGVjdGVkIG5vZGVzIChFKVwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19jb2xsYXBzZX0gb25DbGljaz17Y29sbGFwc2VDbGlja31cbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD1cIntkaXNhYmxlT25Ob25lU2VsZWN0ZWR9XCIgdGl0bGU9XCJDb2xsYXBzZSBleHBhbmRlZCBub2RlcyAoQylcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfaGlkZX0gb25DbGljaz17aGlkZUNsaWNrfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPVwie2Rpc2FibGVPbk5vbmVTZWxlY3RlZH1cIiB0aXRsZT1cIkhpZGUgc2VsZWN0ZWQgbm9kZXMgKEgpXCIvPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfc2VsZWN0X2FsbH0gb25DbGljaz17c2VsZWN0QWxsQ2xpY2t9IHRpdGxlPVwiU2VsZWN0IGFsbCBub2RlcyAoQSlcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfc2VsZWN0X2ludmVyc2V9IG9uQ2xpY2s9e3NlbGVjdEludmVydENsaWNrfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPVwie2Rpc2FibGVPbk5vbmVTZWxlY3RlZH1cIiB0aXRsZT1cIkludmVydCBzZWxlY3Rpb24gKEkpXCIvPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX3NlbGVjdF9uZWlnaGJvcnN9IG9uQ2xpY2s9e3NlbGVjdE5laWdoYm9yQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7ZGlzYWJsZU9uTm9uZVNlbGVjdGVkfVwiIHRpdGxlPVwiU2VsZWN0IG5laWdoYm9ycyAoTilcIi8+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjeS10b29sYmFyLXNlY3Rpb25cIj5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19sb2NrfSBvbkNsaWNrPXtsb2NrQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ7ZGlzYWJsZU9uQWxsUGlubmVkfVwiIHRpdGxlPVwiTG9jayBzZWxlY3RlZCBub2RlcyBpbiBwbGFjZSAoUClcIi8+XG4gICAgPFRvb2xiYXJCdXR0b24gaWNvbj17aWNvbnMuYWdfdW5sb2NrfSBvbkNsaWNrPXt1bmxvY2tDbGlja31cbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD1cIntkaXNhYmxlT25Ob25lUGlubmVkfVwiIHRpdGxlPVwiVW5sb2NrIHNlbGVjdGVkIG5vZGVzIGluIHBsYWNlIChVKVwiLz5cbjwvZGl2PlxuPCEtLTwvZGl2Pi0tPlxuPGJyIC8+PGxhYmVsIGZvcj1cImFnLWZpbHRlclwiPkZpbHRlcjogPC9sYWJlbD48aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImFnLWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFnLWZpbHRlclwiIG9uOmlucHV0PXtmaWx0ZXJJbnB1dH0gdmFsdWU9e2ZpbHRlclZhbHVlfT4iLG51bGwsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgZXhwb3J0IGxldCBuYW1lO1xuICAgIGV4cG9ydCBsZXQgb25DbGljaztcbiAgICBleHBvcnQgbGV0IG9uRGVsZXRlO1xuPC9zY3JpcHQ+XG48ZGl2IGNsYXNzPVwibGlzdC1pdGVtXCI+XG4gICAgPGRpdiBjbGFzcz1cImxpc3QtaXRlbS1wYXJ0IG1vZC1leHRlbmRlZFwiPlxuICAgICAgICB7bmFtZX1cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibGlzdC1pdGVtLXBhcnRcIiBvbjpjbGljaz17b25DbGljayhuYW1lKX0+TG9hZDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0tcGFydCBjbGlja2FibGUtaWNvblwiIGFyaWEtbGFiZWw9XCJEZWxldGUgZ3JhcGhcIiBvbjpjbGljaz17b25EZWxldGUobmFtZSl9PlxuICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIGNsYXNzPVwiY3Jvc3NcIj5cbiAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE1LjQsMTIuNmwtMi45LDIuOUw0Ny4xLDUwTDEyLjYsODQuNmwyLjksMi45TDUwLDUyLjlsMzQuNiwzNC42bDIuOS0yLjlMNTIuOSw1MGwzNC42LTM0LjZsLTIuOS0yLjlMNTAsNDcuMUwxNS40LDEyLjZ6IFwiPlxuXG4gICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuPC9kaXY+IiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBpbXBvcnQgU2F2ZVdvcmtzcGFjZUl0ZW0gZnJvbSBcIi4vU2F2ZVdvcmtzcGFjZUl0ZW0uc3ZlbHRlXCI7XG4gICAgZXhwb3J0IGxldCBvbkxvYWQ7XG4gICAgZXhwb3J0IGxldCBvblNhdmU7XG4gICAgZXhwb3J0IGxldCBvbkRlbGV0ZTtcbiAgICBleHBvcnQgbGV0IHNhdmVkR3JhcGhzOiBzdHJpbmdbXTtcbiAgICBsZXQgc2F2ZU5hbWUgPSAnJztcbiAgICBsZXQgX29uU2F2ZSA9IGFzeW5jIChzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgYXdhaXQgb25TYXZlKHMpO1xuICAgICAgICAvLyBFbnN1cmVzIHN2ZWx0ZSByZWFjdHMuXG4gICAgICAgIHNhdmVkR3JhcGhzID0gc2F2ZWRHcmFwaHM7XG4gICAgfVxuICAgIGxldCBfb25EZWxldGUgPSBhc3luYyhzOiBzdHJpbmcpID0+ICB7XG4gICAgICAgIGF3YWl0IG9uRGVsZXRlKHMpO1xuICAgICAgICBzYXZlZEdyYXBocyA9IHNhdmVkR3JhcGhzO1xuICAgIH1cbiAgICBsZXQgZmlsdGVySW5wdXQgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpPT4ge1xuICAgICAgICBpZihldmVudC5rZXkgPT09ICcvJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG48L3NjcmlwdD5cbjxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgPGlucHV0IGNsYXNzPVwibGlzdC1pdGVtLXBhcnQgbW9kLWV4dGVuZGVkXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNhdmUgY3VycmVudCBncmFwaCBhcy4uLlwiIGJpbmQ6dmFsdWU9e3NhdmVOYW1lfVxuICAgIG9uOmtleWRvd249e2ZpbHRlcklucHV0fSAvPlxuICAgIDxidXR0b24gY2xhc3M9XCJsaXN0LWl0ZW0tcGFydFwiIG9uOmNsaWNrPXtfb25TYXZlKHNhdmVOYW1lKX0+U2F2ZTwvYnV0dG9uPlxuPC9kaXY+XG48aHI+XG48ZGl2PlxuICAgIHsjZWFjaCBzYXZlZEdyYXBocyBhcyBncmFwaE5hbWV9XG4gICAgICAgIDxTYXZlV29ya3NwYWNlSXRlbSBuYW1lPXtncmFwaE5hbWV9IG9uQ2xpY2s9e29uTG9hZH0gb25EZWxldGU9e19vbkRlbGV0ZX0+XG4gICAgICAgIDwvU2F2ZVdvcmtzcGFjZUl0ZW0+XG4gICAgey9lYWNofVxuPC9kaXY+IixudWxsLG51bGwsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gICAgaW1wb3J0IHtpY29uc30gZnJvbSBcIi4uL2ljb25zXCI7XG4gICAgLy8gaW1wb3J0IHtDb3JlfSBmcm9tIFwiY3l0b3NjYXBlXCI7XG4gICAgaW1wb3J0IFRvb2xiYXJCdXR0b24gZnJvbSBcIi4vVG9vbGJhckJ1dHRvbi5zdmVsdGVcIjtcbiAgICBpbXBvcnQgSGVscEJ1dHRvbiBmcm9tIFwiLi9IZWxwQnV0dG9uLnN2ZWx0ZVwiO1xuICAgIGltcG9ydCB7ZGVib3VuY2UsIFdvcmtzcGFjZX0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbiAgICBleHBvcnQgbGV0IGZkZ2RDbGljaztcbiAgICBleHBvcnQgbGV0IGNvbmNlbnRyaWNDbGljaztcbiAgICBleHBvcnQgbGV0IGdyaWRDbGljaztcbiAgICBleHBvcnQgbGV0IGhpZXJhcmNoeUNsaWNrO1xuICAgIGV4cG9ydCBsZXQgZml0Q2xpY2s7XG4gICAgZXhwb3J0IGxldCB3b3Jrc3BhY2VNb2RlQ2xpY2s7XG4gICAgZXhwb3J0IGxldCBmaWx0ZXJJbnB1dDtcbiAgICBleHBvcnQgbGV0IGZpbHRlclZhbHVlO1xuICAgIGV4cG9ydCBsZXQgd29ya3NwYWNlOiBXb3Jrc3BhY2U7XG4gICAgZmlsdGVySW5wdXQgPSBkZWJvdW5jZShmaWx0ZXJJbnB1dCwgNTAwLCB0cnVlKTtcblxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJjeS10b29sYmFyLXNlY3Rpb25cIj5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19mZGdkfSBvbkNsaWNrPXtmZGdkQ2xpY2t9IHRpdGxlPVwiRm9yY2UgZGlyZWN0ZWQgbGF5b3V0XCIvPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX2NvbmNlbnRyaWN9IG9uQ2xpY2s9e2NvbmNlbnRyaWNDbGlja30gdGl0bGU9XCJDaXJjbGUgbGF5b3V0XCIvPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX2dyaWR9IG9uQ2xpY2s9e2dyaWRDbGlja30gdGl0bGU9XCJHcmlkIGxheW91dFwiLz5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19oaWVyYXJjaHl9IG9uQ2xpY2s9e2hpZXJhcmNoeUNsaWNrfSB0aXRsZT1cIkhpZXJhcmNoaWNhbCBsYXlvdXRcIi8+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjeS10b29sYmFyLXNlY3Rpb25cIj5cbiAgICA8VG9vbGJhckJ1dHRvbiBpY29uPXtpY29ucy5hZ19maXR9IG9uQ2xpY2s9e2ZpdENsaWNrfSB0aXRsZT1cIkZpdCB2aWV3XCIvPlxuICAgIDxUb29sYmFyQnV0dG9uIGljb249e2ljb25zLmFnX3dvcmtzcGFjZX0gb25DbGljaz17d29ya3NwYWNlTW9kZUNsaWNrfSB0aXRsZT1cIldvcmtzcGFjZSBtb2RlXCIvPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY3ktdG9vbGJhci1zZWN0aW9uXCI+XG4gICAgPEhlbHBCdXR0b24ge3dvcmtzcGFjZX0vPlxuPC9kaXY+XG48YnIgLz48bGFiZWwgZm9yPVwiYWctZmlsdGVyXCI+RmlsdGVyOiA8L2xhYmVsPjxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiYWctZmlsdGVyXCIgbmFtZT1cImFnLWZpbHRlclwiIG9uOmlucHV0PXtmaWx0ZXJJbnB1dH0gdmFsdWU9e2ZpbHRlclZhbHVlfT4iLG51bGwsIi8qIVxuICogc2VhcmNoLXF1ZXJ5LXBhcnNlci5qc1xuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxOVxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuZXhwb3J0cy5wYXJzZSA9IGZ1bmN0aW9uIChzdHJpbmcsIG9wdGlvbnMpIHtcblxuICAvLyBTZXQgYSBkZWZhdWx0IG9wdGlvbnMgb2JqZWN0IHdoZW4gbm9uZSBpcyBwcm92aWRlZFxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge29mZnNldHM6IHRydWV9O1xuICB9IGVsc2Uge1xuICAgIC8vIElmIG9wdGlvbnMgb2Zmc2V0cyB3YXMndCBwYXNzZWQsIHNldCBpdCB0byB0cnVlXG4gICAgb3B0aW9ucy5vZmZzZXRzID0gKHR5cGVvZiBvcHRpb25zLm9mZnNldHMgPT09ICd1bmRlZmluZWQnID8gdHJ1ZSA6IG9wdGlvbnMub2Zmc2V0cylcbiAgfVxuXG4gIGlmICghc3RyaW5nKSB7XG4gICAgc3RyaW5nID0gJyc7XG4gIH1cblxuICAvLyBXaGVuIGEgc2ltcGxlIHN0cmluZywgcmV0dXJuIGl0XG4gIGlmICgtMSA9PT0gc3RyaW5nLmluZGV4T2YoJzonKSAmJiAhb3B0aW9ucy50b2tlbml6ZSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgLy8gV2hlbiBubyBrZXl3b3JkcyBvciByYW5nZXMgc2V0LCB0cmVhdCBhcyBhIHNpbXBsZSBzdHJpbmdcbiAgZWxzZSBpZiAoIW9wdGlvbnMua2V5d29yZHMgJiYgIW9wdGlvbnMucmFuZ2VzICYmICFvcHRpb25zLnRva2VuaXplKXtcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG4gIC8vIE90aGVyd2lzZSBwYXJzZSB0aGUgYWR2YW5jZWQgcXVlcnkgc3ludGF4XG4gIGVsc2Uge1xuICAgIC8vIE91ciBvYmplY3QgdG8gc3RvcmUgdGhlIHF1ZXJ5IG9iamVjdFxuICAgIHZhciBxdWVyeSA9IHt0ZXh0OiBbXX07XG4gICAgLy8gV2hlbiBvZmZzZXRzIGlzIHRydWUsIGNyZWF0ZSB0aGVpciBhcnJheVxuICAgIGlmIChvcHRpb25zLm9mZnNldHMpIHtcbiAgICAgIHF1ZXJ5Lm9mZnNldHMgPSBbXTtcbiAgICB9XG4gICAgdmFyIGV4Y2x1c2lvbiA9IHt9O1xuICAgIHZhciB0ZXJtcyA9IFtdO1xuICAgIC8vIEdldCBhIGxpc3Qgb2Ygc2VhcmNoIHRlcm1zIHJlc3BlY3Rpbmcgc2luZ2xlIGFuZCBkb3VibGUgcXVvdGVzXG4gICAgdmFyIHJlZ2V4ID0gLyhcXFMrOicoPzpbXidcXFxcXXxcXFxcLikqJyl8KFxcUys6XCIoPzpbXlwiXFxcXF18XFxcXC4pKlwiKXwoLT9cIig/OlteXCJcXFxcXXxcXFxcLikqXCIpfCgtPycoPzpbXidcXFxcXXxcXFxcLikqJyl8XFxTK3xcXFMrOlxcUysvZztcbiAgICB2YXIgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMoc3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIHZhciB0ZXJtID0gbWF0Y2hbMF07XG4gICAgICB2YXIgc2VwSW5kZXggPSB0ZXJtLmluZGV4T2YoJzonKTtcbiAgICAgIGlmIChzZXBJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gdGVybS5zcGxpdCgnOicpLFxuICAgICAgICAgICAga2V5ID0gdGVybS5zbGljZSgwLCBzZXBJbmRleCksXG4gICAgICAgICAgICB2YWwgPSB0ZXJtLnNsaWNlKHNlcEluZGV4ICsgMSk7XG4gICAgICAgIC8vIFN0cmlwIHN1cnJvdW5kaW5nIHF1b3Rlc1xuICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvXlxcXCJ8XFxcIiR8XlxcJ3xcXCckL2csICcnKTtcbiAgICAgICAgLy8gU3RyaXAgYmFja3NsYXNoZXMgcmVzcGVjdGluZyBlc2NhcGVzXG4gICAgICAgIHZhbCA9ICh2YWwgKyAnJykucmVwbGFjZSgvXFxcXCguPykvZywgZnVuY3Rpb24gKHMsIG4xKSB7XG4gICAgICAgICAgc3dpdGNoIChuMSkge1xuICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgcmV0dXJuICdcXFxcJztcbiAgICAgICAgICBjYXNlICcwJzpcbiAgICAgICAgICAgIHJldHVybiAnXFx1MDAwMCc7XG4gICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG4xO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRlcm1zLnB1c2goe1xuICAgICAgICAgIGtleXdvcmQ6IGtleSxcbiAgICAgICAgICB2YWx1ZTogdmFsLFxuICAgICAgICAgIG9mZnNldFN0YXJ0OiBtYXRjaC5pbmRleCxcbiAgICAgICAgICBvZmZzZXRFbmQ6IG1hdGNoLmluZGV4ICsgdGVybS5sZW5ndGhcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaXNFeGNsdWRlZFRlcm0gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRlcm1bMF0gPT09ICctJykge1xuICAgICAgICAgIGlzRXhjbHVkZWRUZXJtID0gdHJ1ZTtcbiAgICAgICAgICB0ZXJtID0gdGVybS5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0cmlwIHN1cnJvdW5kaW5nIHF1b3Rlc1xuICAgICAgICB0ZXJtID0gdGVybS5yZXBsYWNlKC9eXFxcInxcXFwiJHxeXFwnfFxcJyQvZywgJycpO1xuICAgICAgICAvLyBTdHJpcCBiYWNrc2xhc2hlcyByZXNwZWN0aW5nIGVzY2FwZXNcbiAgICAgICAgdGVybSA9ICh0ZXJtICsgJycpLnJlcGxhY2UoL1xcXFwoLj8pL2csIGZ1bmN0aW9uIChzLCBuMSkge1xuICAgICAgICAgIHN3aXRjaCAobjEpIHtcbiAgICAgICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgICAgIHJldHVybiAnXFxcXCc7XG4gICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICByZXR1cm4gJ1xcdTAwMDAnO1xuICAgICAgICAgIGNhc2UgJyc6XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBuMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpc0V4Y2x1ZGVkVGVybSkge1xuICAgICAgICAgIGlmIChleGNsdXNpb25bJ3RleHQnXSkge1xuICAgICAgICAgICAgaWYgKGV4Y2x1c2lvblsndGV4dCddIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgICAgZXhjbHVzaW9uWyd0ZXh0J10ucHVzaCh0ZXJtKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGV4Y2x1c2lvblsndGV4dCddID0gW2V4Y2x1c2lvblsndGV4dCddXTtcbiAgICAgICAgICAgICAgZXhjbHVzaW9uWyd0ZXh0J10ucHVzaCh0ZXJtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmlyc3QgdGltZSBzZWVpbmcgYW4gZXhjbHVkZWQgdGV4dCB0ZXJtXG4gICAgICAgICAgICBleGNsdXNpb25bJ3RleHQnXSA9IHRlcm07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRlcm1zLnB1c2goe1xuICAgICAgICAgICAgdGV4dDogdGVybSxcbiAgICAgICAgICAgIG9mZnNldFN0YXJ0OiBtYXRjaC5pbmRleCxcbiAgICAgICAgICAgIG9mZnNldEVuZDogbWF0Y2guaW5kZXggKyB0ZXJtLmxlbmd0aFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJldmVyc2UgdG8gZW5zdXJlIHByb3BlciBvcmRlciB3aGVuIHBvcCgpJ2luZy5cbiAgICB0ZXJtcy5yZXZlcnNlKCk7XG4gICAgLy8gRm9yIGVhY2ggc2VhcmNoIHRlcm1cbiAgICB2YXIgdGVybTtcbiAgICB3aGlsZSAodGVybSA9IHRlcm1zLnBvcCgpKSB7XG4gICAgICAvLyBXaGVuIGp1c3QgYSBzaW1wbGUgdGVybVxuICAgICAgaWYgKHRlcm0udGV4dCkge1xuICAgICAgICAvLyBXZSBhZGQgaXQgYXMgcHVyZSB0ZXh0XG4gICAgICAgIHF1ZXJ5LnRleHQucHVzaCh0ZXJtLnRleHQpO1xuICAgICAgICAvLyBXaGVuIG9mZnNldHMgaXMgdHJ1ZSwgcHVzaCBhIG5ldyBvZmZzZXRcbiAgICAgICAgaWYgKG9wdGlvbnMub2Zmc2V0cykge1xuICAgICAgICAgIHF1ZXJ5Lm9mZnNldHMucHVzaCh0ZXJtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gV2UgZ290IGFuIGFkdmFuY2VkIHNlYXJjaCBzeW50YXhcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIga2V5ID0gdGVybS5rZXl3b3JkO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUga2V5IGlzIGEgcmVnaXN0ZXJlZCBrZXl3b3JkXG4gICAgICAgIG9wdGlvbnMua2V5d29yZHMgPSBvcHRpb25zLmtleXdvcmRzIHx8IFtdO1xuICAgICAgICB2YXIgaXNLZXl3b3JkID0gZmFsc2U7XG4gICAgICAgIHZhciBpc0V4Y2x1c2lvbiA9IGZhbHNlO1xuICAgICAgICBpZiAoIS9eLS8udGVzdChrZXkpKSB7XG4gICAgICAgICAgICBpc0tleXdvcmQgPSAhKC0xID09PSBvcHRpb25zLmtleXdvcmRzLmluZGV4T2Yoa2V5KSk7XG4gICAgICAgIH0gZWxzZSAgaWYgKGtleVswXSA9PT0gJy0nKSB7XG4gICAgICAgICAgICB2YXIgX2tleSA9IGtleS5zbGljZSgxKTtcbiAgICAgICAgICAgIGlzS2V5d29yZCA9ICEoLTEgPT09IG9wdGlvbnMua2V5d29yZHMuaW5kZXhPZihfa2V5KSlcbiAgICAgICAgICAgIGlmIChpc0tleXdvcmQpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBfa2V5O1xuICAgICAgICAgICAgICAgIGlzRXhjbHVzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBrZXkgaXMgYSByZWdpc3RlcmVkIHJhbmdlXG4gICAgICAgIG9wdGlvbnMucmFuZ2VzID0gb3B0aW9ucy5yYW5nZXMgfHwgW107XG4gICAgICAgIHZhciBpc1JhbmdlID0gISgtMSA9PT0gb3B0aW9ucy5yYW5nZXMuaW5kZXhPZihrZXkpKTtcbiAgICAgICAgLy8gV2hlbiB0aGUga2V5IG1hdGNoZXMgYSBrZXl3b3JkXG4gICAgICAgIGlmIChpc0tleXdvcmQpIHtcbiAgICAgICAgICAvLyBXaGVuIG9mZnNldHMgaXMgdHJ1ZSwgcHVzaCBhIG5ldyBvZmZzZXRcbiAgICAgICAgICBpZiAob3B0aW9ucy5vZmZzZXRzKSB7XG4gICAgICAgICAgICBxdWVyeS5vZmZzZXRzLnB1c2goe1xuICAgICAgICAgICAgICBrZXl3b3JkOiBrZXksXG4gICAgICAgICAgICAgIHZhbHVlOiB0ZXJtLnZhbHVlLFxuICAgICAgICAgICAgICBvZmZzZXRTdGFydDogaXNFeGNsdXNpb24gPyB0ZXJtLm9mZnNldFN0YXJ0ICsgMSA6IHRlcm0ub2Zmc2V0U3RhcnQsXG4gICAgICAgICAgICAgIG9mZnNldEVuZDogdGVybS5vZmZzZXRFbmRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB2YWx1ZSA9IHRlcm0udmFsdWU7XG4gICAgICAgICAgLy8gV2hlbiB2YWx1ZSBpcyBhIHRoaW5nXG4gICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gR2V0IGFuIGFycmF5IG9mIHZhbHVlcyB3aGVuIHNldmVyYWwgYXJlIHRoZXJlXG4gICAgICAgICAgICB2YXIgdmFsdWVzID0gdmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgICAgIGlmIChpc0V4Y2x1c2lvbikge1xuICAgICAgICAgICAgICBpZiAoZXhjbHVzaW9uW2tleV0pIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5tYW55IHRpbWVzLi4uXG4gICAgICAgICAgICAgICAgaWYgKGV4Y2x1c2lvbltrZXldIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgIC8vIC4uLmFuZCBnb3Qgc2V2ZXJhbCB2YWx1ZXMgdGhpcyB0aW1lLi4uXG4gICAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIGNvbmNhdGVuYXRlIGJvdGggYXJyYXlzLlxuICAgICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XSA9IGV4Y2x1c2lvbltrZXldLmNvbmNhdCh2YWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiBhcHBlbmQgdGhlIGN1cnJlbnQgc2luZ2xlIHZhbHVlLlxuICAgICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2Ugc2F3IHRoYXQga2V5d29yZCBvbmx5IG9uY2UgYmVmb3JlXG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBQdXQgYm90aCB0aGUgY3VycmVudCB2YWx1ZSBhbmQgdGhlIG5ld1xuICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgaW4gYW4gYXJyYXlcbiAgICAgICAgICAgICAgICAgIGV4Y2x1c2lvbltrZXldID0gW2V4Y2x1c2lvbltrZXldXTtcbiAgICAgICAgICAgICAgICAgIGV4Y2x1c2lvbltrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBGaXJzdCB0aW1lIHdlIHNlZSB0aGF0IGtleXdvcmRcbiAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gLi4uYW5kIGdvdCBzZXZlcmFsIHZhbHVlcyB0aGlzIHRpbWUuLi5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIC8vIC4uLmFkZCBhbGwgdmFsdWVzIHNlZW4uXG4gICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XSA9IHZhbHVlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gR290IG9ubHkgYSBzaW5nbGUgdmFsdWUgdGhpcyB0aW1lXG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgaXRzIHZhbHVlIGFzIGEgc3RyaW5nXG4gICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5hbHdheXNBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAuLi5idXQgd2UgYWx3YXlzIHJldHVybiBhbiBhcnJheSBpZiBvcHRpb24gYWx3YXlzQXJyYXkgaXMgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBleGNsdXNpb25ba2V5XSA9IFt2YWx1ZV07XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgaXRzIHZhbHVlIGFzIGEgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1c2lvbltrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgc2VlbiB0aGF0IGtleXdvcmQuLi5cbiAgICAgICAgICAgICAgaWYgKHF1ZXJ5W2tleV0pIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5tYW55IHRpbWVzLi4uXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5W2tleV0gaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgLy8gLi4uYW5kIGdvdCBzZXZlcmFsIHZhbHVlcyB0aGlzIHRpbWUuLi5cbiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAuLi4gY29uY2F0ZW5hdGUgYm90aCBhcnJheXMuXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0gPSBxdWVyeVtrZXldLmNvbmNhdCh2YWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiBhcHBlbmQgdGhlIGN1cnJlbnQgc2luZ2xlIHZhbHVlLlxuICAgICAgICAgICAgICAgICAgICBxdWVyeVtrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXZSBzYXcgdGhhdCBrZXl3b3JkIG9ubHkgb25jZSBiZWZvcmVcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIFB1dCBib3RoIHRoZSBjdXJyZW50IHZhbHVlIGFuZCB0aGUgbmV3XG4gICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBpbiBhbiBhcnJheVxuICAgICAgICAgICAgICAgICAgcXVlcnlba2V5XSA9IFtxdWVyeVtrZXldXTtcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIEZpcnN0IHRpbWUgd2Ugc2VlIHRoYXQga2V5d29yZFxuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyAuLi5hbmQgZ290IHNldmVyYWwgdmFsdWVzIHRoaXMgdGltZS4uLlxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgLy8gLi4uYWRkIGFsbCB2YWx1ZXMgc2Vlbi5cbiAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0gPSB2YWx1ZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEdvdCBvbmx5IGEgc2luZ2xlIHZhbHVlIHRoaXMgdGltZVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWx3YXlzQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uYnV0IHdlIGFsd2F5cyByZXR1cm4gYW4gYXJyYXkgaWYgb3B0aW9uIGFsd2F5c0FycmF5IGlzIHRydWVcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlba2V5XSA9IFt2YWx1ZV07XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgaXRzIHZhbHVlIGFzIGEgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIGtleSBhbGxvd3MgYSByYW5nZVxuICAgICAgICBlbHNlIGlmIChpc1JhbmdlKSB7XG4gICAgICAgICAgLy8gV2hlbiBvZmZzZXRzIGlzIHRydWUsIHB1c2ggYSBuZXcgb2Zmc2V0XG4gICAgICAgICAgaWYgKG9wdGlvbnMub2Zmc2V0cykge1xuICAgICAgICAgICAgcXVlcnkub2Zmc2V0cy5wdXNoKHRlcm0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB2YWx1ZSA9IHRlcm0udmFsdWU7XG4gICAgICAgICAgLy8gUmFuZ2UgYXJlIHNlcGFyYXRlZCB3aXRoIGEgZGFzaFxuICAgICAgICAgIHZhciByYW5nZVZhbHVlcyA9IHZhbHVlLnNwbGl0KCctJyk7XG4gICAgICAgICAgLy8gV2hlbiBib3RoIGVuZCBvZiB0aGUgcmFuZ2UgYXJlIHNwZWNpZmllZFxuICAgICAgICAgIC8vIGtleXdvcmQ6WFhYWC1ZWVlZXG4gICAgICAgICAgcXVlcnlba2V5XSA9IHt9O1xuICAgICAgICAgIGlmICgyID09PSByYW5nZVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHF1ZXJ5W2tleV0uZnJvbSA9IHJhbmdlVmFsdWVzWzBdO1xuICAgICAgICAgICAgcXVlcnlba2V5XS50byA9IHJhbmdlVmFsdWVzWzFdO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBXaGVuIHBhaXJzIG9mIHJhbmdlcyBhcmUgc3BlY2lmaWVkXG4gICAgICAgICAgLy8ga2V5d29yZDpYWFhYLVlZWVksQUFBQS1CQkJCXG4gICAgICAgICAgZWxzZSBpZiAoIXJhbmdlVmFsdWVzLmxlbmd0aCAlIDIpIHtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gV2hlbiBvbmx5IGdldHRpbmcgYSBzaW5nbGUgdmFsdWUsXG4gICAgICAgICAgLy8gb3IgYW4gb2RkIG51bWJlciBvZiB2YWx1ZXNcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHF1ZXJ5W2tleV0uZnJvbSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAvLyBXZSBhZGQgaXQgYXMgcHVyZSB0ZXh0XG4gICAgICAgICAgdmFyIHRleHQgPSB0ZXJtLmtleXdvcmQgKyAnOicgKyB0ZXJtLnZhbHVlO1xuICAgICAgICAgIHF1ZXJ5LnRleHQucHVzaCh0ZXh0KTtcblxuICAgICAgICAgIC8vIFdoZW4gb2Zmc2V0cyBpcyB0cnVlLCBwdXNoIGEgbmV3IG9mZnNldFxuICAgICAgICAgIGlmIChvcHRpb25zLm9mZnNldHMpIHtcbiAgICAgICAgICAgIHF1ZXJ5Lm9mZnNldHMucHVzaCh7XG4gICAgICAgICAgICAgIHRleHQ6IHRleHQsXG4gICAgICAgICAgICAgIG9mZnNldFN0YXJ0OiB0ZXJtLm9mZnNldFN0YXJ0LFxuICAgICAgICAgICAgICBvZmZzZXRFbmQ6IHRlcm0ub2Zmc2V0RW5kXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb25jYXRlbmF0ZSBhbGwgdGV4dCB0ZXJtcyBpZiBhbnlcbiAgICBpZiAocXVlcnkudGV4dC5sZW5ndGgpIHtcbiAgICAgIGlmICghb3B0aW9ucy50b2tlbml6ZSkge1xuICAgICAgICBxdWVyeS50ZXh0ID0gcXVlcnkudGV4dC5qb2luKCcgJykudHJpbSgpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBKdXN0IHJlbW92ZSB0aGUgYXR0cmlidXRlIHRleHQgd2hlbiBpdCdzIGVtcHR5XG4gICAgZWxzZSB7XG4gICAgICBkZWxldGUgcXVlcnkudGV4dDtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gZm9yZ2VkIHF1ZXJ5IG9iamVjdFxuICAgIHF1ZXJ5LmV4Y2x1ZGUgPSBleGNsdXNpb247XG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbn07XG5cbmV4cG9ydHMuc3RyaW5naWZ5ID0gZnVuY3Rpb24gKHF1ZXJ5T2JqZWN0LCBvcHRpb25zLCBwcmVmaXgpIHtcblxuICAvLyBTZXQgYSBkZWZhdWx0IG9wdGlvbnMgb2JqZWN0IHdoZW4gbm9uZSBpcyBwcm92aWRlZFxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge29mZnNldHM6IHRydWV9O1xuICB9XG5cbiAgLy8gSWYgdGhlIHF1ZXJ5IG9iamVjdCBpcyBmYWxzeSB3ZSBjYW4ganVzdCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nXG4gIGlmICghcXVlcnlPYmplY3QpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyBJZiB0aGUgcXVlcnkgb2JqZWN0IGlzIGFscmVhZHkgYSBzdHJpbmcsIHdlIGNhbiByZXR1cm4gaXQgaW1tZWRpYXRlbHlcbiAgaWYgKHR5cGVvZiBxdWVyeU9iamVjdCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcXVlcnlPYmplY3Q7XG4gIH1cblxuICAvLyBJZiB0aGUgcXVlcnkgb2JqZWN0IGlzIGFuIGFycmF5LCB3ZSBjYW4gcmV0dXJuIGl0IGNvbmNhdGVuYXRlZCB3aXRoIGEgc3BhY2VcbiAgaWYgKEFycmF5LmlzQXJyYXkocXVlcnlPYmplY3QpKSB7XG4gICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8vIElmIHRoZSBxdWVyeSBvYmplY3QgZG9lcyBub3QgaGF2ZSBhbnkga2V5cywgd2UgY2FuIHJldHVybiBhbiBlbXB0eSBzdHJpbmdcbiAgaWYgKCFPYmplY3Qua2V5cyhxdWVyeU9iamVjdCkubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8gSWYgdGhlIHF1ZXJ5IG9iamVjdCBjb250YWlucyBvbmx5IHRleHQgd2hpY2ggaXMgYSBzdHJpbmcsIHdlIGNhbiByZXR1cm4gaXQgaW1tZWRpYXRlbHlcbiAgaWYgKE9iamVjdC5rZXlzKHF1ZXJ5T2JqZWN0KS5sZW5ndGggPT09IDMgJiYgISFxdWVyeU9iamVjdC50ZXh0ICYmICEhcXVlcnlPYmplY3Qub2Zmc2V0cyAmJiAhIXF1ZXJ5T2JqZWN0LmV4Y2x1ZGUgJiYgdHlwZW9mIHF1ZXJ5T2JqZWN0LnRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LnRleHQ7XG4gIH1cblxuICAvLyBXZSB3aWxsIHVzZSBhIHByZWZpeCBmb3IgdGhlIGV4Y2x1ZGUgc3ludGF4IGxhdGVyIG9uZVxuICBpZiAoIXByZWZpeCkge1xuICAgIHByZWZpeCA9ICcnXG4gIH1cblxuICAvLyBIZWxwZXJzXG4gIHZhciBhZGRRdW90ZXMgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5pbmRleE9mKCcgJykgPiAtIDEgPyBKU09OLnN0cmluZ2lmeShzdHJpbmcpIDogc3RyaW5nO1xuICB9O1xuICB2YXIgYWRkUHJlZml4ID0gZnVuY3Rpb24gKHN0cmluZykge1xuICAgIHJldHVybiBwcmVmaXggKyBzdHJpbmc7XG4gIH07XG5cbiAgLy8gS2VlcCB0cmFjayBvZiBhbGwgc2luZ2xlIHBhcnRzIGluIHRoaXMgYXJyYXlcbiAgdmFyIHBhcnRzID0gW107XG5cbiAgLy8gVGV4dFxuICBpZiAocXVlcnlPYmplY3QudGV4dCkge1xuICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgIGlmICh0eXBlb2YgcXVlcnlPYmplY3QudGV4dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlLnB1c2gocXVlcnlPYmplY3QudGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlLnB1c2guYXBwbHkodmFsdWUsIHF1ZXJ5T2JqZWN0LnRleHQpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJ0cy5wdXNoKHZhbHVlLm1hcChhZGRRdW90ZXMpLm1hcChhZGRQcmVmaXgpLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gS2V5d29yZHNcbiAgaWYgKG9wdGlvbnMua2V5d29yZHMpIHtcbiAgICBvcHRpb25zLmtleXdvcmRzLmZvckVhY2goZnVuY3Rpb24gKGtleXdvcmQpIHtcbiAgICAgIGlmICghcXVlcnlPYmplY3Rba2V5d29yZF0pIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgICAgaWYgKHR5cGVvZiBxdWVyeU9iamVjdFtrZXl3b3JkXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFsdWUucHVzaChxdWVyeU9iamVjdFtrZXl3b3JkXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZS5wdXNoLmFwcGx5KHZhbHVlLCBxdWVyeU9iamVjdFtrZXl3b3JkXSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkUHJlZml4KGtleXdvcmQgKyAnOicgKyB2YWx1ZS5tYXAoYWRkUXVvdGVzKS5qb2luKCcsJykpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJhbmdlc1xuICBpZiAob3B0aW9ucy5yYW5nZXMpIHtcbiAgICBvcHRpb25zLnJhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uIChyYW5nZSkge1xuICAgICAgaWYgKCFxdWVyeU9iamVjdFtyYW5nZV0pIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IHF1ZXJ5T2JqZWN0W3JhbmdlXS5mcm9tO1xuICAgICAgdmFyIHRvID0gcXVlcnlPYmplY3RbcmFuZ2VdLnRvO1xuICAgICAgaWYgKHRvKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUgKyAnLScgKyB0bztcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkUHJlZml4KHJhbmdlICsgJzonICsgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIEV4Y2x1ZGVcbiAgaWYgKHF1ZXJ5T2JqZWN0LmV4Y2x1ZGUpIHtcbiAgICBpZiAoT2JqZWN0LmtleXMocXVlcnlPYmplY3QuZXhjbHVkZSkubGVuZ3RoID4gMCkge1xuICAgICAgcGFydHMucHVzaChleHBvcnRzLnN0cmluZ2lmeShxdWVyeU9iamVjdC5leGNsdWRlLCBvcHRpb25zLCAnLScpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignICcpO1xuXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9zZWFyY2gtcXVlcnktcGFyc2VyJyk7XG4iLG51bGwsbnVsbCxudWxsLCI7KGZ1bmN0aW9uKCl7ICd1c2Ugc3RyaWN0JztcblxuICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICBjb250YWluZXI6IGZhbHNlIC8vIGNhbiBiZSBhIEhUTUwgb3IgalF1ZXJ5IGVsZW1lbnQgb3IgalF1ZXJ5IHNlbGVjdG9yXG4gICAgLCB2aWV3TGl2ZUZyYW1lcmF0ZTogMCAvLyBzZXQgZmFsc2UgdG8gdXBkYXRlIGdyYXBoIHBhbiBvbmx5IG9uIGRyYWcgZW5kOyBzZXQgMCB0byBkbyBpdCBpbnN0YW50bHk7IHNldCBhIG51bWJlciAoZnJhbWVzIHBlciBzZWNvbmQpIHRvIHVwZGF0ZSBub3QgbW9yZSB0aGFuIE4gdGltZXMgcGVyIHNlY29uZFxuICAgICwgZGJsQ2xpY2tEZWxheTogMjAwIC8vIG1pbGxpc2Vjb25kc1xuICAgICwgcmVtb3ZlQ3VzdG9tQ29udGFpbmVyOiB0cnVlIC8vIGRlc3Ryb3kgdGhlIGNvbnRhaW5lciBzcGVjaWZpZWQgYnkgdXNlciBvbiBwbHVnaW4gZGVzdHJveVxuICAgICwgcmVyZW5kZXJEZWxheTogNTAwIC8vIG1zIHRvIHRocm90dGxlIHJlcmVuZGVyIHVwZGF0ZXMgdG8gdGhlIHBhbnpvb20gZm9yIHBlcmZvcm1hbmNlXG4gIH07XG5cbiAgdmFyIGRlYm91bmNlID0gKGZ1bmN0aW9uKCl7XG4gICAgLyoqXG4gICAgICogbG9kYXNoIDMuMS4xIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICAgICAqIEJ1aWxkOiBgbG9kYXNoIG1vZGVybiBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAgICAgKiBDb3B5cmlnaHQgMjAxMi0yMDE1IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICAgICAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gICAgICogQ29weXJpZ2h0IDIwMDktMjAxNSBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICAgICAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gICAgICovXG4gICAgLyoqIFVzZWQgYXMgdGhlIGBUeXBlRXJyb3JgIG1lc3NhZ2UgZm9yIFwiRnVuY3Rpb25zXCIgbWV0aG9kcy4gKi9cbiAgICB2YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4gICAgLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbiAgICB2YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICAgIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgVW5peCBlcG9jaFxuICAgICAqICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IERhdGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICAgICAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAgICAgKiB9LCBfLm5vdygpKTtcbiAgICAgKiAvLyA9PiBsb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBmdW5jdGlvbiB0byBiZSBpbnZva2VkXG4gICAgICovXG4gICAgdmFyIG5vdyA9IG5hdGl2ZU5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAgICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gICAgICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICAgICAqIGRlbGF5ZWQgaW52b2NhdGlvbnMuIFByb3ZpZGUgYW4gb3B0aW9ucyBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBgZnVuY2BcbiAgICAgKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICogU3Vic2VxdWVudCBjYWxscyB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0XG4gICAgICogYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzIGludm9rZWRcbiAgICAgKiBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIGlzXG4gICAgICogaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHA6Ly9kcnVwYWxtb3Rpb24uY29tL2FydGljbGUvZGVib3VuY2UtYW5kLXRocm90dGxlLXZpc3VhbC1leHBsYW5hdGlvbilcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV0gU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZ1xuICAgICAqICBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XSBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlXG4gICAgICogIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nXG4gICAgICogIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBhdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4XG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAgICAgKlxuICAgICAqIC8vIGludm9rZSBgc2VuZE1haWxgIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHNcbiAgICAgKiBqUXVlcnkoJyNwb3N0Ym94Jykub24oJ2NsaWNrJywgXy5kZWJvdW5jZShzZW5kTWFpbCwgMzAwLCB7XG4gICAgICogICAnbGVhZGluZyc6IHRydWUsXG4gICAgICogICAndHJhaWxpbmcnOiBmYWxzZVxuICAgICAqIH0pKTtcbiAgICAgKlxuICAgICAqIC8vIGVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHNcbiAgICAgKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gICAgICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHtcbiAgICAgKiAgICdtYXhXYWl0JzogMTAwMFxuICAgICAqIH0pKTtcbiAgICAgKlxuICAgICAqIC8vIGNhbmNlbCBhIGRlYm91bmNlZCBjYWxsXG4gICAgICogdmFyIHRvZG9DaGFuZ2VzID0gXy5kZWJvdW5jZShiYXRjaExvZywgMTAwMCk7XG4gICAgICogT2JqZWN0Lm9ic2VydmUobW9kZWxzLnRvZG8sIHRvZG9DaGFuZ2VzKTtcbiAgICAgKlxuICAgICAqIE9iamVjdC5vYnNlcnZlKG1vZGVscywgZnVuY3Rpb24oY2hhbmdlcykge1xuICAgICAqICAgaWYgKF8uZmluZChjaGFuZ2VzLCB7ICd1c2VyJzogJ3RvZG8nLCAndHlwZSc6ICdkZWxldGUnfSkpIHtcbiAgICAgKiAgICAgdG9kb0NoYW5nZXMuY2FuY2VsKCk7XG4gICAgICogICB9XG4gICAgICogfSwgWydkZWxldGUnXSk7XG4gICAgICpcbiAgICAgKiAvLyAuLi5hdCBzb21lIHBvaW50IGBtb2RlbHMudG9kb2AgaXMgY2hhbmdlZFxuICAgICAqIG1vZGVscy50b2RvLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICpcbiAgICAgKiAvLyAuLi5iZWZvcmUgMSBzZWNvbmQgaGFzIHBhc3NlZCBgbW9kZWxzLnRvZG9gIGlzIGRlbGV0ZWRcbiAgICAgKiAvLyB3aGljaCBjYW5jZWxzIHRoZSBkZWJvdW5jZWQgYHRvZG9DaGFuZ2VzYCBjYWxsXG4gICAgICogZGVsZXRlIG1vZGVscy50b2RvO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBhcmdzLFxuICAgICAgICAgIG1heFRpbWVvdXRJZCxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgc3RhbXAsXG4gICAgICAgICAgdGhpc0FyZyxcbiAgICAgICAgICB0aW1lb3V0SWQsXG4gICAgICAgICAgdHJhaWxpbmdDYWxsLFxuICAgICAgICAgIGxhc3RDYWxsZWQgPSAwLFxuICAgICAgICAgIG1heFdhaXQgPSBmYWxzZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHdhaXQgPSB3YWl0IDwgMCA/IDAgOiAoK3dhaXQgfHwgMCk7XG4gICAgICBpZiAob3B0aW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgICB2YXIgbGVhZGluZyA9IHRydWU7XG4gICAgICAgIHRyYWlsaW5nID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICAgICAgbWF4V2FpdCA9ICdtYXhXYWl0JyBpbiBvcHRpb25zICYmIG5hdGl2ZU1heCgrb3B0aW9ucy5tYXhXYWl0IHx8IDAsIHdhaXQpO1xuICAgICAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgIGlmICh0aW1lb3V0SWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF4VGltZW91dElkKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KG1heFRpbWVvdXRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdENhbGxlZCA9IDA7XG4gICAgICAgIG1heFRpbWVvdXRJZCA9IHRpbWVvdXRJZCA9IHRyYWlsaW5nQ2FsbCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gY29tcGxldGUoaXNDYWxsZWQsIGlkKSB7XG4gICAgICAgIGlmIChpZCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICAgIH1cbiAgICAgICAgbWF4VGltZW91dElkID0gdGltZW91dElkID0gdHJhaWxpbmdDYWxsID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoaXNDYWxsZWQpIHtcbiAgICAgICAgICBsYXN0Q2FsbGVkID0gbm93KCk7XG4gICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgICBpZiAoIXRpbWVvdXRJZCAmJiAhbWF4VGltZW91dElkKSB7XG4gICAgICAgICAgICBhcmdzID0gdGhpc0FyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVsYXllZCgpIHtcbiAgICAgICAgdmFyIHJlbWFpbmluZyA9IHdhaXQgLSAobm93KCkgLSBzdGFtcCk7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPD0gMCB8fCByZW1haW5pbmcgPiB3YWl0KSB7XG4gICAgICAgICAgY29tcGxldGUodHJhaWxpbmdDYWxsLCBtYXhUaW1lb3V0SWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZGVsYXllZCwgcmVtYWluaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBtYXhEZWxheWVkKCkge1xuICAgICAgICBjb21wbGV0ZSh0cmFpbGluZywgdGltZW91dElkKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVib3VuY2VkKCkge1xuICAgICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzdGFtcCA9IG5vdygpO1xuICAgICAgICB0aGlzQXJnID0gdGhpcztcbiAgICAgICAgdHJhaWxpbmdDYWxsID0gdHJhaWxpbmcgJiYgKHRpbWVvdXRJZCB8fCAhbGVhZGluZyk7XG5cbiAgICAgICAgaWYgKG1heFdhaXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgdmFyIGxlYWRpbmdDYWxsID0gbGVhZGluZyAmJiAhdGltZW91dElkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghbWF4VGltZW91dElkICYmICFsZWFkaW5nKSB7XG4gICAgICAgICAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciByZW1haW5pbmcgPSBtYXhXYWl0IC0gKHN0YW1wIC0gbGFzdENhbGxlZCksXG4gICAgICAgICAgICAgIGlzQ2FsbGVkID0gcmVtYWluaW5nIDw9IDAgfHwgcmVtYWluaW5nID4gbWF4V2FpdDtcblxuICAgICAgICAgIGlmIChpc0NhbGxlZCkge1xuICAgICAgICAgICAgaWYgKG1heFRpbWVvdXRJZCkge1xuICAgICAgICAgICAgICBtYXhUaW1lb3V0SWQgPSBjbGVhclRpbWVvdXQobWF4VGltZW91dElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKCFtYXhUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgIG1heFRpbWVvdXRJZCA9IHNldFRpbWVvdXQobWF4RGVsYXllZCwgcmVtYWluaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ2FsbGVkICYmIHRpbWVvdXRJZCkge1xuICAgICAgICAgIHRpbWVvdXRJZCA9IGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF0aW1lb3V0SWQgJiYgd2FpdCAhPT0gbWF4V2FpdCkge1xuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZGVsYXllZCwgd2FpdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlYWRpbmdDYWxsKSB7XG4gICAgICAgICAgaXNDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ2FsbGVkICYmICF0aW1lb3V0SWQgJiYgIW1heFRpbWVvdXRJZCkge1xuICAgICAgICAgIGFyZ3MgPSB0aGlzQXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICAgICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGUgW2xhbmd1YWdlIHR5cGVdKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDgpIG9mIGBPYmplY3RgLlxuICAgICAqIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdCh7fSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QoMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgICAgLy8gQXZvaWQgYSBWOCBKSVQgYnVnIGluIENocm9tZSAxOS0yMC5cbiAgICAgIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWJvdW5jZTtcblxuICB9KSgpO1xuXG4gIC8vIHBvcnRlZCBsb2Rhc2ggdGhyb3R0bGUgZnVuY3Rpb25cbiAgdmFyIHRocm90dGxlID0gZnVuY3Rpb24oIGZ1bmMsIHdhaXQsIG9wdGlvbnMgKXtcbiAgICB2YXIgbGVhZGluZyA9IHRydWUsXG4gICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgIGlmKCBvcHRpb25zID09PSBmYWxzZSApe1xuICAgICAgbGVhZGluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiggdHlwZW9mIG9wdGlvbnMgPT09IHR5cGVvZiB7fSApe1xuICAgICAgbGVhZGluZyA9ICdsZWFkaW5nJyBpbiBvcHRpb25zID8gb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLmxlYWRpbmcgPSBsZWFkaW5nO1xuICAgIG9wdGlvbnMubWF4V2FpdCA9IHdhaXQ7XG4gICAgb3B0aW9ucy50cmFpbGluZyA9IHRyYWlsaW5nO1xuXG4gICAgcmV0dXJuIGRlYm91bmNlKCBmdW5jLCB3YWl0LCBvcHRpb25zICk7XG4gIH07XG5cbiAgdmFyIE5hdmlnYXRvciA9IGZ1bmN0aW9uICggZWxlbWVudCwgb3B0aW9ucyApIHtcbiAgICB0aGlzLl9pbml0KGVsZW1lbnQsIG9wdGlvbnMpXG4gIH07XG5cbiAgdmFyIGV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvcih2YXIga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgICBpZihhcmd1bWVudHNbaV0uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIGFyZ3VtZW50c1swXVtrZXldID0gYXJndW1lbnRzW2ldW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgfTtcblxuICB2YXIgd2lkID0gZnVuY3Rpb24oZWxlbSkge1xuICAgIHJldHVybiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICB9O1xuXG4gIHZhciBoZWkgPSBmdW5jdGlvbihlbGVtKSB7XG4gICAgcmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICB9O1xuXG4gIE5hdmlnYXRvci5wcm90b3R5cGUgPSB7XG5cbiAgICBjb25zdHJ1Y3RvcjogTmF2aWdhdG9yXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICBNYWluIGZ1bmN0aW9uc1xuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICwgYmI6IGZ1bmN0aW9uKCl7XG4gICAgdmFyIGJiID0gdGhpcy5jeS5lbGVtZW50cygpLmJvdW5kaW5nQm94KClcblxuICAgIGlmKCBiYi53ID09PSAwIHx8IGJiLmggPT09IDAgKXtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHgxOiAwLFxuICAgICAgICB4MjogSW5maW5pdHksXG4gICAgICAgIHkxOiAwLFxuICAgICAgICB5MjogSW5maW5pdHksXG4gICAgICAgIHc6IEluZmluaXR5LFxuICAgICAgICBoOiBJbmZpbml0eVxuICAgICAgfSAvLyA9PiBoaWRlIGludGVyYWN0aXZlIG92ZXJsYXlcbiAgICB9XG5cbiAgICByZXR1cm4gYmJcbiAgfVxuXG4gICwgX2FkZEN5TGlzdGVuZXI6IGZ1bmN0aW9uKGV2ZW50cywgaGFuZGxlcil7XG4gICAgdGhpcy5fY3lMaXN0ZW5lcnMucHVzaCh7XG4gICAgICBldmVudHM6IGV2ZW50cyxcbiAgICAgIGhhbmRsZXI6IGhhbmRsZXJcbiAgICB9KVxuXG4gICAgdGhpcy5jeS5vbihldmVudHMsIGhhbmRsZXIpXG4gIH1cblxuICAsIF9yZW1vdmVDeUxpc3RlbmVyczogZnVuY3Rpb24oKXtcbiAgICB2YXIgY3kgPSB0aGlzLmN5XG5cbiAgICB0aGlzLl9jeUxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKGwpe1xuICAgICAgY3kub2ZmKGwuZXZlbnRzLCBsLmhhbmRsZXIpXG4gICAgfSlcblxuICAgIGN5Lm9mZlJlbmRlcih0aGlzLl9vblJlbmRlckhhbmRsZXIpXG4gIH1cblxuICAsIF9pbml0OiBmdW5jdGlvbiAoIGN5LCBvcHRpb25zICkge1xuICAgICAgdGhpcy5fY3lMaXN0ZW5lcnMgPSBbXVxuXG4gICAgICB0aGlzLiRlbGVtZW50ID0gY3kuY29udGFpbmVyKClcbiAgICAgIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIG9wdGlvbnMpXG5cbiAgICAgIHRoaXMuY3kgPSBjeVxuXG4gICAgICAvLyBDYWNoZSBib3VuZGluZyBib3hcbiAgICAgIHRoaXMuYm91bmRpbmdCb3ggPSB0aGlzLmJiKClcblxuICAgICAgLy8gQ2FjaGUgc2l6ZXNcbiAgICAgIHRoaXMud2lkdGggPSB3aWQodGhpcy4kZWxlbWVudCk7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaSh0aGlzLiRlbGVtZW50KVxuXG4gICAgICAvLyBJbml0IGNvbXBvbmVudHNcbiAgICAgIHRoaXMuX2luaXRQYW5lbCgpXG4gICAgICB0aGlzLl9pbml0VGh1bWJuYWlsKClcbiAgICAgIHRoaXMuX2luaXRWaWV3KClcbiAgICAgIHRoaXMuX2luaXRPdmVybGF5KClcbiAgICB9XG5cbiAgLCBkZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLl9yZW1vdmVFdmVudHNIYW5kbGluZygpO1xuXG4gICAgICAvLyBJZiBjb250YWluZXIgaXMgbm90IGNyZWF0ZWQgYnkgbmF2aWdhdG9yIGFuZCBpdHMgcmVtb3ZhbCBpcyBwcm9oaWJpdGVkXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRhaW5lciAmJiAhdGhpcy5vcHRpb25zLnJlbW92ZUN1c3RvbUNvbnRhaW5lcikge1xuICAgICAgICB0aGlzLiRwYW5lbC5pbm5lckhUTUwgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHBhbmVsLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy4kcGFuZWwpO1xuICAgICAgfVxuICAgIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIE5hdmlnYXRvciBlbGVtZW50cyBmdW5jdGlvbnNcbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qXG4gICAgICogVXNlZCBpbm5lciBhdHRyaWJ1dGVzXG4gICAgICpcbiAgICAgKiB3IHtudW1iZXJ9IHdpZHRoXG4gICAgICogaCB7bnVtYmVyfSBoZWlnaHRcbiAgICAgKi9cbiAgLCBfaW5pdFBhbmVsOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuICAgICAgaWYob3B0aW9ucy5jb250YWluZXIgJiYgdHlwZW9mIG9wdGlvbnMuY29udGFpbmVyID09PSAnc3RyaW5nJyAmJiBvcHRpb25zLmNvbnRhaW5lci5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIHRvIG5vdCBicmVhayB1c2VycyB3aGljaCBnaXZlcyBhIGpxdWVyeSBzdHJpbmcgc2VsZWN0b3JcbiAgICAgICAgaWYgKG9wdGlvbnMuY29udGFpbmVyLmluZGV4T2YoJyMnKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLiRwYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9wdGlvbnMuY29udGFpbmVyLnJlcGxhY2UoJyMnLCAnJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuJHBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShvcHRpb25zLmNvbnRhaW5lci5yZXBsYWNlKCcuJywgJycpKVswXTtcbiAgICAgICAgfSBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMuJHBhbmVsLmNsYXNzTmFtZSA9ICdjeXRvc2NhcGUtbmF2aWdhdG9yJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLiRwYW5lbCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9zZXR1cFBhbmVsKClcbiAgICAgIHRoaXMuX2FkZEN5TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplLmJpbmQodGhpcykpXG4gICAgfVxuXG4gICwgX3NldHVwUGFuZWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIENhY2hlIHNpemVzXG4gICAgICB0aGlzLnBhbmVsV2lkdGggPSB3aWQodGhpcy4kcGFuZWwpO1xuICAgICAgdGhpcy5wYW5lbEhlaWdodCA9IGhlaSh0aGlzLiRwYW5lbCk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBVc2VkIGlubmVyIGF0dHJpYnV0ZXNcbiAgICAgKlxuICAgICAqIHpvb20ge251bWJlcn1cbiAgICAgKiBwYW4ge29iamVjdH0gLSB7eDogMCwgeTogMH1cbiAgICAgKi9cbiAgLCBfaW5pdFRodW1ibmFpbDogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQ3JlYXRlIHRodW1ibmFpbFxuICAgICAgdGhpcy4kdGh1bWJuYWlsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG5cbiAgICAgIC8vIEFkZCB0aHVtYm5haWwgY2FudmFzIHRvIHRoZSBET01cbiAgICAgIHRoaXMuJHBhbmVsLmFwcGVuZENoaWxkKHRoaXMuJHRodW1ibmFpbCk7XG5cbiAgICAgIC8vIFNldHVwIHRodW1ibmFpbFxuICAgICAgdGhpcy5fc2V0dXBUaHVtYm5haWxTaXplcygpXG4gICAgICB0aGlzLl9zZXR1cFRodW1ibmFpbCgpXG4gICAgfVxuXG4gICwgX3NldHVwVGh1bWJuYWlsOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLl91cGRhdGVUaHVtYm5haWxJbWFnZSgpXG4gICAgfVxuXG4gICwgX3NldHVwVGh1bWJuYWlsU2l6ZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFVwZGF0ZSBib3VuZGluZyBib3ggY2FjaGVcbiAgICAgIHRoaXMuYm91bmRpbmdCb3ggPSB0aGlzLmJiKClcblxuICAgICAgdGhpcy50aHVtYm5haWxab29tID0gTWF0aC5taW4odGhpcy5wYW5lbEhlaWdodCAvIHRoaXMuYm91bmRpbmdCb3guaCwgdGhpcy5wYW5lbFdpZHRoIC8gdGhpcy5ib3VuZGluZ0JveC53KVxuXG4gICAgICAvLyBVc2VkIG9uIHRodW1ibmFpbCBnZW5lcmF0aW9uXG4gICAgICB0aGlzLnRodW1ibmFpbFBhbiA9IHtcbiAgICAgICAgeDogKHRoaXMucGFuZWxXaWR0aCAtIHRoaXMudGh1bWJuYWlsWm9vbSAqICh0aGlzLmJvdW5kaW5nQm94LngxICsgdGhpcy5ib3VuZGluZ0JveC54MikpLzJcbiAgICAgICwgeTogKHRoaXMucGFuZWxIZWlnaHQgLSB0aGlzLnRodW1ibmFpbFpvb20gKiAodGhpcy5ib3VuZGluZ0JveC55MSArIHRoaXMuYm91bmRpbmdCb3gueTIpKS8yXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgYm91bmRpbmcgYm94IGhhcyBjaGFuZ2VkIHRoZW4gdXBkYXRlIHNpemVzXG4gICAgLy8gT3RoZXJ3aXNlIGp1c3QgdXBkYXRlIHRoZSB0aHVtYm5haWxcbiAgLCBfY2hlY2tUaHVtYm5haWxTaXplc0FuZFVwZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQ2FjaGUgcHJldmlvdXMgdmFsdWVzXG4gICAgICB2YXIgX3pvb20gPSB0aGlzLnRodW1ibmFpbFpvb21cbiAgICAgICAgLCBfcGFuX3ggPSB0aGlzLnRodW1ibmFpbFBhbi54XG4gICAgICAgICwgX3Bhbl95ID0gdGhpcy50aHVtYm5haWxQYW4ueVxuXG4gICAgICB0aGlzLl9zZXR1cFRodW1ibmFpbFNpemVzKClcblxuICAgICAgaWYgKF96b29tICE9IHRoaXMudGh1bWJuYWlsWm9vbSB8fCBfcGFuX3ggIT0gdGhpcy50aHVtYm5haWxQYW4ueCB8fCBfcGFuX3kgIT0gdGhpcy50aHVtYm5haWxQYW4ueSkge1xuICAgICAgICB0aGlzLl9zZXR1cFRodW1ibmFpbCgpXG4gICAgICAgIHRoaXMuX3NldHVwVmlldygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl91cGRhdGVUaHVtYm5haWxJbWFnZSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBVc2VkIGlubmVyIGF0dHJpYnV0ZXNcbiAgICAgKlxuICAgICAqIHcge251bWJlcn0gd2lkdGhcbiAgICAgKiBoIHtudW1iZXJ9IGhlaWdodFxuICAgICAqIHgge251bWJlcn1cbiAgICAgKiB5IHtudW1iZXJ9XG4gICAgICogYm9yZGVyV2lkdGgge251bWJlcn1cbiAgICAgKiBsb2NrZWQge2Jvb2xlYW59XG4gICAgICovXG4gICwgX2luaXRWaWV3OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLiR2aWV3ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0aGlzLiR2aWV3LmNsYXNzTmFtZSA9ICdjeXRvc2NhcGUtbmF2aWdhdG9yVmlldyc7XG4gICAgICB0aGlzLiRwYW5lbC5hcHBlbmRDaGlsZCh0aGlzLiR2aWV3KVxuICAgICAgLy8gQ29tcHV0ZSBib3JkZXJzXG4gICAgICB0aGlzLnZpZXdCb3JkZXJUb3AgPSBwYXJzZUludCh0aGlzLiR2aWV3LnN0eWxlWydib3JkZXItdG9wLXdpZHRoJ10sIDEwKSB8fCAwO1xuICAgICAgdGhpcy52aWV3Qm9yZGVyUmlnaHQgPSBwYXJzZUludCh0aGlzLiR2aWV3LnN0eWxlWydib3JkZXItcmlnaHQtd2lkdGgnXSwgMTApIHx8IDA7XG4gICAgICB0aGlzLnZpZXdCb3JkZXJCb3R0b20gPSBwYXJzZUludCh0aGlzLiR2aWV3LnN0eWxlWydib3JkZXItYm90dG9tLXdpZHRoJ10sIDEwKSB8fCAwO1xuICAgICAgdGhpcy52aWV3Qm9yZGVyTGVmdCA9IHBhcnNlSW50KHRoaXMuJHZpZXcuc3R5bGVbJ2JvcmRlci1sZWZ0LXdpZHRoJ10sIDEwKSB8fCAwO1xuICAgICAgXG4gICAgICAvLyBBYnN0cmFjdCBib3JkZXJzXG4gICAgICB0aGlzLnZpZXdCb3JkZXJIb3Jpem9udGFsID0gdGhpcy52aWV3Qm9yZGVyTGVmdCArIHRoaXMudmlld0JvcmRlclJpZ2h0XG4gICAgICB0aGlzLnZpZXdCb3JkZXJWZXJ0aWNhbCA9IHRoaXMudmlld0JvcmRlclRvcCArIHRoaXMudmlld0JvcmRlckJvdHRvbVxuXG4gICAgICB0aGlzLl9zZXR1cFZpZXcoKVxuXG4gICAgICAvLyBIb29rIGdyYXBoIHpvb20gYW5kIHBhblxuICAgICAgdGhpcy5fYWRkQ3lMaXN0ZW5lcignem9vbSBwYW4nLCB0aGlzLl9zZXR1cFZpZXcuYmluZCh0aGlzKSlcbiAgICB9XG5cbiAgLCBfc2V0dXBWaWV3OiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcy52aWV3TG9ja2VkKVxuICAgICAgICByZXR1cm5cblxuICAgICAgdmFyIGN5Wm9vbSA9IHRoaXMuY3kuem9vbSgpXG4gICAgICAgICwgY3lQYW4gPSB0aGlzLmN5LnBhbigpXG5cbiAgICAgIC8vIEhvcml6b250YWwgY29tcHV0YXRpb25cbiAgICAgIHRoaXMudmlld1cgPSB0aGlzLndpZHRoIC8gY3lab29tICogdGhpcy50aHVtYm5haWxab29tXG4gICAgICB0aGlzLnZpZXdYID0gLWN5UGFuLnggKiB0aGlzLnZpZXdXIC8gdGhpcy53aWR0aCArIHRoaXMudGh1bWJuYWlsUGFuLnggLSB0aGlzLnZpZXdCb3JkZXJMZWZ0XG5cbiAgICAgIC8vIFZlcnRpY2FsIGNvbXB1dGF0aW9uXG4gICAgICB0aGlzLnZpZXdIID0gdGhpcy5oZWlnaHQgLyBjeVpvb20gKiB0aGlzLnRodW1ibmFpbFpvb21cbiAgICAgIHRoaXMudmlld1kgPSAtY3lQYW4ueSAqIHRoaXMudmlld0ggLyB0aGlzLmhlaWdodCArIHRoaXMudGh1bWJuYWlsUGFuLnkgLSB0aGlzLnZpZXdCb3JkZXJUb3BcblxuICAgICAgLy8gQ1NTIHZpZXdcbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ3dpZHRoJ10gPSB0aGlzLnZpZXdXICsgJ3B4JztcbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ2hlaWdodCddID0gdGhpcy52aWV3SCArICdweCc7XG4gICAgICB0aGlzLiR2aWV3LnN0eWxlWydwb3NpdGlvbiddID0gJ2Fic29sdXRlJztcbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ2xlZnQnXSA9IHRoaXMudmlld1ggKyAncHgnO1xuICAgICAgdGhpcy4kdmlldy5zdHlsZVsndG9wJ10gPSB0aGlzLnZpZXdZICsgJ3B4JztcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIFVzZWQgaW5uZXIgYXR0cmlidXRlc1xuICAgICAqXG4gICAgICogdGltZW91dCB7bnVtYmVyfSB1c2VkIHRvIGtlZXAgc3RhYmxlIGZyYW1lIHJhdGVcbiAgICAgKiBsYXN0TW92ZVN0YXJ0VGltZSB7bnVtYmVyfVxuICAgICAqIGluTW92ZW1lbnQge2Jvb2xlYW59XG4gICAgICogaG9va1BvaW50IHtvYmplY3R9IHt4OiAwLCB5OiAwfVxuICAgICAqL1xuICAsIF9pbml0T3ZlcmxheTogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVXNlZCB0byBjYXB0dXJlIG1vdXNlIGV2ZW50c1xuICAgICAgdGhpcy4kb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy4kb3ZlcmxheS5jbGFzc05hbWUgPSAnY3l0b3NjYXBlLW5hdmlnYXRvck92ZXJsYXknO1xuXG4gICAgICAvLyBBZGQgb3ZlcmxheSB0byB0aGUgRE9NXG4gICAgICB0aGlzLiRwYW5lbC5hcHBlbmRDaGlsZCh0aGlzLiRvdmVybGF5KVxuXG4gICAgICAvLyBJbml0IHNvbWUgYXR0cmlidXRlc1xuICAgICAgdGhpcy5vdmVybGF5SG9va1BvaW50WCA9IDA7XG4gICAgICB0aGlzLm92ZXJsYXlIb29rUG9pbnRZID0gMDtcblxuICAgICAgLy8gTGlzdGVuIGZvciBldmVudHNcbiAgICAgIHRoaXMuX2luaXRFdmVudHNIYW5kbGluZygpXG4gICAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgRXZlbnQgaGFuZGxpbmcgZnVuY3Rpb25zXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLCByZXNpemU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIENhY2hlIHNpemVzXG4gICAgICB0aGlzLndpZHRoID0gd2lkKHRoaXMuJGVsZW1lbnQpO1xuICAgICAgdGhpcy5oZWlnaHQgPSBoZWkodGhpcy4kZWxlbWVudCk7XG4gICAgICB0aGlzLl90aHVtYm5haWxTZXR1cCA9IGZhbHNlXG4gICAgICB0aGlzLl9zZXR1cFBhbmVsKClcbiAgICAgIHRoaXMuX2NoZWNrVGh1bWJuYWlsU2l6ZXNBbmRVcGRhdGUoKVxuICAgICAgdGhpcy5fc2V0dXBWaWV3KClcbiAgICB9XG5cbiAgLCBfaW5pdEV2ZW50c0hhbmRsaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICAgICAgLCBldmVudHNMb2NhbCA9IFtcbiAgICAgICAgLy8gTW91c2UgZXZlbnRzXG4gICAgICAgICAgJ21vdXNlZG93bidcbiAgICAgICAgLCAnbW91c2V3aGVlbCdcbiAgICAgICAgLCAnRE9NTW91c2VTY3JvbGwnIC8vIE1vemlsbGEgc3BlY2lmaWMgZXZlbnRcbiAgICAgICAgLy8gVG91Y2ggZXZlbnRzXG4gICAgICAgICwgJ3RvdWNoc3RhcnQnXG4gICAgICAgIF1cbiAgICAgICAgLCBldmVudHNHbG9iYWwgPSBbXG4gICAgICAgICAgJ21vdXNldXAnXG4gICAgICAgICwgJ21vdXNlb3V0J1xuICAgICAgICAsICdtb3VzZW1vdmUnXG4gICAgICAgIC8vIFRvdWNoIGV2ZW50c1xuICAgICAgICAsICd0b3VjaG1vdmUnXG4gICAgICAgICwgJ3RvdWNoZW5kJ1xuICAgICAgICBdXG5cbiAgICAgIC8vIGhhbmRsZSBldmVudHMgYW5kIHN0b3AgdGhlaXIgcHJvcGFnYXRpb25cbiAgICAgIHZhciBvdmVybGF5TGlzdGVuZXIgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgLy8gVG91Y2ggZXZlbnRzXG4gICAgICAgIGlmIChldi50eXBlID09ICd0b3VjaHN0YXJ0Jykge1xuICAgICAgICAgIC8vIFdpbGwgY291bnQgYXMgbWlkZGxlIG9mIFZpZXdcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXYsICdvZmZzZXRYJywge1xuICAgICAgICAgICAgdmFsdWU6IHRoYXQudmlld1ggKyB0aGF0LnZpZXdXIC8gMixcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2LCAnb2Zmc2V0WScsIHtcbiAgICAgICAgICAgIHZhbHVlOiB0aGF0LnZpZXdZICsgdGhhdC52aWV3SCAvIDIsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm9ybWFsaXplIG9mZnNldCBmb3IgYnJvd3NlcnMgd2hpY2ggZG8gbm90IHByb3ZpZGUgdGhhdCB2YWx1ZVxuICAgICAgICBpZiAoZXYub2Zmc2V0WCA9PT0gdW5kZWZpbmVkIHx8IGV2Lm9mZnNldFkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciByZWN0ID0gZXYudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIHZhciB0YXJnZXRPZmZzZXQgPSB7IFxuICAgICAgICAgICAgdG9wOiByZWN0LnRvcCArIHdpbmRvdy5zY3JvbGxZLCBcbiAgICAgICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYLCBcbiAgICAgICAgICB9O1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFgnLCB7XG4gICAgICAgICAgICB2YWx1ZTogZXYucGFnZVggLSB0YXJnZXRPZmZzZXQubGVmdCxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2LCAnb2Zmc2V0WScsIHtcbiAgICAgICAgICAgIHZhbHVlOiBldi5wYWdlWSAtIHRhcmdldE9mZnNldC50b3AsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2LnR5cGUgPT0gJ21vdXNlZG93bicgfHwgZXYudHlwZSA9PSAndG91Y2hzdGFydCcpIHtcbiAgICAgICAgICB0aGF0Ll9ldmVudE1vdmVTdGFydChldilcbiAgICAgICAgfSBlbHNlIGlmIChldi50eXBlID09ICdtb3VzZXdoZWVsJyB8fCBldi50eXBlID09ICdET01Nb3VzZVNjcm9sbCcpIHtcbiAgICAgICAgICB0aGF0Ll9ldmVudFpvb20oZXYpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmV2ZW50IGRlZmF1bHQgYW5kIHByb3BhZ2F0aW9uXG4gICAgICAgIC8vIERvbid0IHVzZSBwZXZlbnRQcm9wYWdhdGlvbiBhcyBpdCBicmVha3MgbW91c2UgZXZlbnRzXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEhvb2sgZ2xvYmFsIGV2ZW50c1xuICAgICAgdmFyIGdsb2JhbExpc3RlbmVyID0gZnVuY3Rpb24gKGV2KSB7XG5cbiAgICAgICAgLy8gRG8gbm90IG1ha2UgYW55IGNvbXB1dGF0aW9ucyBpZiBpdCBpcyBoYXMgbm8gZWZmZWN0IG9uIE5hdmlnYXRvclxuICAgICAgICBpZiAoIXRoYXQub3ZlcmxheUluTW92ZW1lbnQpXG4gICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIC8vIFRvdWNoIGV2ZW50c1xuICAgICAgICBpZiAoZXYudHlwZSA9PSAndG91Y2hlbmQnKSB7XG4gICAgICAgICAgLy8gV2lsbCBjb3VudCBhcyBtaWRkbGUgb2YgVmlld1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFgnLCB7XG4gICAgICAgICAgICB2YWx1ZTogdGhhdC52aWV3WCArIHRoYXQudmlld1cgLyAyLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXYsICdvZmZzZXRZJywge1xuICAgICAgICAgICAgdmFsdWU6IHRoYXQudmlld1kgKyB0aGF0LnZpZXdIIC8gMixcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXYudHlwZSA9PSAndG91Y2htb3ZlJykge1xuICAgICAgICAgIC8vIEhhY2sgLSB3ZSB0YWtlIGluIGFjY291bnQgb25seSBmaXJzdCB0b3VjaFxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ3BhZ2VYJywge1xuICAgICAgICAgICAgdmFsdWU6IGV2Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWCxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2LCAncGFnZVknLCB7XG4gICAgICAgICAgICB2YWx1ZTogZXYub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VZLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vcm1hbGl6ZSBvZmZzZXQgZm9yIGJyb3dzZXJzIHdoaWNoIGRvIG5vdCBwcm92aWRlIHRoYXQgdmFsdWVcbiAgICAgICAgaWYgKGV2Lm9mZnNldFggPT09IHVuZGVmaW5lZCB8fCBldi5vZmZzZXRZID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YXIgcmVjdCA9IGV2LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICB2YXIgdGFyZ2V0T2Zmc2V0ID0geyBcbiAgICAgICAgICAgIHRvcDogcmVjdC50b3AgKyB3aW5kb3cuc2Nyb2xsWSwgXG4gICAgICAgICAgICBsZWZ0OiByZWN0LmxlZnQgKyB3aW5kb3cuc2Nyb2xsWCwgXG4gICAgICAgICAgfTtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXYsICdvZmZzZXRYJywge1xuICAgICAgICAgICAgdmFsdWU6IGV2LnBhZ2VYIC0gdGFyZ2V0T2Zmc2V0LmxlZnQsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFknLCB7XG4gICAgICAgICAgICB2YWx1ZTogZXYucGFnZVkgLSB0YXJnZXRPZmZzZXQudG9wLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyYW5zbGF0ZSBnbG9iYWwgZXZlbnRzIGludG8gbG9jYWwgY29vcmRpbmF0ZXNcbiAgICAgICAgaWYgKGV2LnRhcmdldCAhPT0gdGhhdC4kb3ZlcmxheSkge1xuICAgICAgICAgIHZhciByZWN0ID0gZXYudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIHZhciByZWN0MiA9IHRoYXQuJG92ZXJsYXkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgdmFyIHRhcmdldE9mZnNldCA9IHsgXG4gICAgICAgICAgICB0b3A6IHJlY3QudG9wICsgd2luZG93LnNjcm9sbFksIFxuICAgICAgICAgICAgbGVmdDogcmVjdC5sZWZ0ICsgd2luZG93LnNjcm9sbFgsIFxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIG92ZXJsYXlPZmZzZXQgPSB7IFxuICAgICAgICAgICAgdG9wOiByZWN0Mi50b3AgKyB3aW5kb3cuc2Nyb2xsWSwgXG4gICAgICAgICAgICBsZWZ0OiByZWN0Mi5sZWZ0ICsgd2luZG93LnNjcm9sbFgsIFxuICAgICAgICAgIH07XG4gICAgICAgICAgXG4gICAgICAgICAgaWYodGFyZ2V0T2Zmc2V0ICYmIG92ZXJsYXlPZmZzZXQpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFgnLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiBldi5vZmZzZXRYIC0gb3ZlcmxheU9mZnNldC5sZWZ0ICsgdGFyZ2V0T2Zmc2V0LmxlZnQsXG4gICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldiwgJ29mZnNldFknLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiBldi5vZmZzZXRZIC0gb3ZlcmxheU9mZnNldC50b3AgKyB0YXJnZXRPZmZzZXQudG9wLFxuICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXYudHlwZSA9PSAnbW91c2Vtb3ZlJyB8fCBldi50eXBlID09ICd0b3VjaG1vdmUnKSB7XG4gICAgICAgICAgdGhhdC5fZXZlbnRNb3ZlKGV2KVxuICAgICAgICB9IGVsc2UgaWYgKGV2LnR5cGUgPT0gJ21vdXNldXAnIHx8IGV2LnR5cGUgPT0gJ3RvdWNoZW5kJykge1xuICAgICAgICAgIHRoYXQuX2V2ZW50TW92ZUVuZChldilcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByZXZlbnQgZGVmYXVsdCBhbmQgcHJvcGFnYXRpb25cbiAgICAgICAgLy8gRG9uJ3QgdXNlIHBldmVudFByb3BhZ2F0aW9uIGFzIGl0IGJyZWFrcyBtb3VzZSBldmVudHNcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudHNMb2NhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLiRvdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRzTG9jYWxbaV0sIG92ZXJsYXlMaXN0ZW5lciwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50c0dsb2JhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldmVudHNHbG9iYWxbaV0sIGdsb2JhbExpc3RlbmVyLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlbW92ZUV2ZW50c0hhbmRsaW5nID0gZnVuY3Rpb24oKXtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50c0xvY2FsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy4kb3ZlcmxheS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50c0xvY2FsW2ldLCBvdmVybGF5TGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudHNHbG9iYWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudHNHbG9iYWxbaV0sIGdsb2JhbExpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAsIF9ldmVudE1vdmVTdGFydDogZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcblxuICAgICAgLy8gQ2hlY2sgaWYgaXQgd2FzIGRvdWJsZSBjbGlja1xuICAgICAgaWYgKHRoaXMub3ZlcmxheUxhc3RNb3ZlU3RhcnRUaW1lXG4gICAgICAgICYmIHRoaXMub3ZlcmxheUxhc3RNb3ZlU3RhcnRUaW1lICsgdGhpcy5vcHRpb25zLmRibENsaWNrRGVsYXkgPiBub3cpIHtcbiAgICAgICAgLy8gUmVzZXQgbGFzdE1vdmVTdGFydFRpbWVcbiAgICAgICAgdGhpcy5vdmVybGF5TGFzdE1vdmVTdGFydFRpbWUgPSAwXG4gICAgICAgIC8vIEVuYWJsZSBWaWV3IGluIG9yZGVyIHRvIG1vdmUgaXQgdG8gdGhlIGNlbnRlclxuICAgICAgICB0aGlzLm92ZXJsYXlJbk1vdmVtZW50ID0gdHJ1ZVxuXG4gICAgICAgIC8vIFNldCBob29rIHBvaW50IGFzIFZpZXcgY2VudGVyXG4gICAgICAgIHRoaXMub3ZlcmxheUhvb2tQb2ludFggPSB0aGlzLnZpZXdXIC8gMlxuICAgICAgICB0aGlzLm92ZXJsYXlIb29rUG9pbnRZID0gdGhpcy52aWV3SCAvIDJcblxuICAgICAgICAvLyBNb3ZlIFZpZXcgdG8gc3RhcnQgcG9pbnRcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLl9ldmVudE1vdmUoe1xuICAgICAgICAgICAgb2Zmc2V0WDogdGhpcy5wYW5lbFdpZHRoIC8gMlxuICAgICAgICAgICwgb2Zmc2V0WTogdGhpcy5wYW5lbEhlaWdodCAvIDJcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2V2ZW50TW92ZUVuZCh7XG4gICAgICAgICAgICBvZmZzZXRYOiB0aGlzLnBhbmVsV2lkdGggLyAyXG4gICAgICAgICAgLCBvZmZzZXRZOiB0aGlzLnBhbmVsSGVpZ2h0IC8gMlxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBWaWV3IHNob3VsZCBiZSBpbmFjdGl2ZSBhcyB3ZSBkb24ndCB3YW50IHRvIG1vdmUgaXQgcmlnaHQgYWZ0ZXIgZG91YmxlIGNsaWNrXG4gICAgICAgIHRoaXMub3ZlcmxheUluTW92ZW1lbnQgPSBmYWxzZVxuICAgICAgfVxuICAgICAgLy8gVGhpcyBpcyBhIHNpbmdsZSBjbGlja1xuICAgICAgLy8gVGFrZSBjYXJlIGFzIHNpbmdsZSBjbGljayBoYXBwZW5zIGJlZm9yZSBkb3VibGUgY2xpY2sgMiB0aW1lc1xuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMub3ZlcmxheUxhc3RNb3ZlU3RhcnRUaW1lID0gbm93XG4gICAgICAgIHRoaXMub3ZlcmxheUluTW92ZW1lbnQgPSB0cnVlXG4gICAgICAgIC8vIExvY2sgdmlldyBtb3ZpbmcgY2F1c2VkIGJ5IGN5IGV2ZW50c1xuICAgICAgICB0aGlzLnZpZXdMb2NrZWQgPSB0cnVlXG5cbiAgICAgICAgLy8gaWYgZXZlbnQgc3RhcnRlZCBpbiBWaWV3XG4gICAgICAgIGlmIChldi5vZmZzZXRYID49IHRoaXMudmlld1ggJiYgZXYub2Zmc2V0WCA8PSB0aGlzLnZpZXdYICsgdGhpcy52aWV3V1xuICAgICAgICAgICYmIGV2Lm9mZnNldFkgPj0gdGhpcy52aWV3WSAmJiBldi5vZmZzZXRZIDw9IHRoaXMudmlld1kgKyB0aGlzLnZpZXdIXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub3ZlcmxheUhvb2tQb2ludFggPSBldi5vZmZzZXRYIC0gdGhpcy52aWV3WFxuICAgICAgICAgIHRoaXMub3ZlcmxheUhvb2tQb2ludFkgPSBldi5vZmZzZXRZIC0gdGhpcy52aWV3WVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIGV2ZW50IHN0YXJ0ZWQgaW4gVGh1bWJuYWlsIChvdXRzaWRlIG9mIFZpZXcpXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIC8vIFNldCBob29rIHBvaW50IGFzIFZpZXcgY2VudGVyXG4gICAgICAgICAgdGhpcy5vdmVybGF5SG9va1BvaW50WCA9IHRoaXMudmlld1cgLyAyXG4gICAgICAgICAgdGhpcy5vdmVybGF5SG9va1BvaW50WSA9IHRoaXMudmlld0ggLyAyXG5cbiAgICAgICAgICAvLyBNb3ZlIFZpZXcgdG8gc3RhcnQgcG9pbnRcbiAgICAgICAgICB0aGlzLl9ldmVudE1vdmUoZXYpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgLCBfZXZlbnRNb3ZlOiBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpc1xuXG4gICAgICB0aGlzLl9jaGVja01vdXNlUG9zaXRpb24oZXYpXG5cbiAgICAgIC8vIGJyZWFrIGlmIGl0IGlzIHVzZWxlc3MgZXZlbnRcbiAgICAgIGlmICghdGhpcy5vdmVybGF5SW5Nb3ZlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjYWNoZVxuICAgICAgdGhpcy52aWV3WCA9IGV2Lm9mZnNldFggLSB0aGlzLm92ZXJsYXlIb29rUG9pbnRYXG4gICAgICB0aGlzLnZpZXdZID0gZXYub2Zmc2V0WSAtIHRoaXMub3ZlcmxheUhvb2tQb2ludFlcblxuICAgICAgLy8gVXBkYXRlIHZpZXcgcG9zaXRpb25cbiAgICAgIHRoaXMuJHZpZXcuc3R5bGVbJ2xlZnQnXSA9IHRoaXMudmlld1ggKyAncHgnO1xuICAgICAgdGhpcy4kdmlldy5zdHlsZVsndG9wJ10gPSB0aGlzLnZpZXdZICsgJ3B4JztcblxuICAgICAgLy8gTW92ZSBDeVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgLy8gdHJpZ2dlciBpbnN0YW50bHlcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSA9PSAwKSB7XG4gICAgICAgICAgdGhpcy5fbW92ZUN5KClcbiAgICAgICAgfVxuICAgICAgICAvLyB0cmlnZ2VyIGxlc3Mgb2Z0ZW4gdGhhbiBmcmFtZSByYXRlXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLm92ZXJsYXlUaW1lb3V0KSB7XG4gICAgICAgICAgLy8gU2V0IGEgdGltZW91dCBmb3IgZ3JhcGggbW92ZW1lbnRcbiAgICAgICAgICB0aGlzLm92ZXJsYXlUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGF0Ll9tb3ZlQ3koKVxuICAgICAgICAgICAgdGhhdC5vdmVybGF5VGltZW91dCA9IGZhbHNlXG4gICAgICAgICAgfSwgMTAwMCAvIHRoaXMub3B0aW9ucy52aWV3TGl2ZUZyYW1lcmF0ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAsIF9jaGVja01vdXNlUG9zaXRpb246IGZ1bmN0aW9uIChldikge1xuICAgICAgLy8gSWYgbW91c2UgaW4gb3ZlciBWaWV3XG4gICAgICBpZihldi5vZmZzZXRYID4gdGhpcy52aWV3WCAmJiBldi5vZmZzZXRYIDwgdGhpcy52aWV3WCArIHRoaXMudmlld0JvcmRlckhvcml6b250YWwgKyB0aGlzLnZpZXdXXG4gICAgICAgICYmIGV2Lm9mZnNldFkgPiB0aGlzLnZpZXdZICYmIGV2Lm9mZnNldFkgPCB0aGlzLnZpZXdZICsgdGhpcy52aWV3Qm9yZGVyVmVydGljYWwgKyB0aGlzLnZpZXdIKSB7XG4gICAgICAgIHRoaXMuJHBhbmVsLmNsYXNzTGlzdC5hZGQoJ21vdXNlb3Zlci12aWV3JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJHBhbmVsLmNsYXNzTGlzdC5yZW1vdmUoJ21vdXNlb3Zlci12aWV3JylcbiAgICAgIH1cbiAgICB9XG5cbiAgLCBfZXZlbnRNb3ZlRW5kOiBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIC8vIFVubG9jayB2aWV3IGNoYW5naW5nIGNhdXNlZCBieSBncmFwaCBldmVudHNcbiAgICAgIHRoaXMudmlld0xvY2tlZCA9IGZhbHNlXG5cbiAgICAgIC8vIFJlbW92ZSBjbGFzcyB3aGVuIG1vdXNlIGlzIG5vdCBvdmVyIE5hdmlnYXRvclxuICAgICAgdGhpcy4kcGFuZWwuY2xhc3NMaXN0LnJlbW92ZSgnbW91c2VvdmVyLXZpZXcnKVxuXG4gICAgICBpZiAoIXRoaXMub3ZlcmxheUluTW92ZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBUcmlnZ2VyIG9uZSBsYXN0IG1vdmVcbiAgICAgIHRoaXMuX2V2ZW50TW92ZShldilcblxuICAgICAgLy8gSWYgbW9kZSBpcyBub3QgbGl2ZSB0aGVuIG1vdmUgZ3JhcGggb24gZHJhZyBlbmRcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmlld0xpdmVGcmFtZXJhdGUgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX21vdmVDeSgpXG4gICAgICB9XG5cbiAgICAgIC8vIFN0b3AgbW92ZW1lbnQgcGVybWlzc2lvblxuICAgICAgdGhpcy5vdmVybGF5SW5Nb3ZlbWVudCA9IGZhbHNlXG4gICAgfVxuXG4gICwgX2V2ZW50Wm9vbTogZnVuY3Rpb24gKGV2KSB7XG4gICAgICB2YXIgZXYyID0gZXh0ZW5kKHt9LCBldi5vcmlnaW5hbEV2ZW50KTtcbiAgICAgIHZhciBkZWx0YSA9IGV2LndoZWVsRGVsdGFZIC8gMTAwMCB8fCBldi53aGVlbERlbHRhIC8gMTAwMCB8fCBldi5kZXRhaWwgLyAtMzIgfHwgZXYyLndoZWVsRGVsdGFZIC8gMTAwMCB8fCBldjIud2hlZWxEZWx0YSAvIDEwMDAgfHwgZXYyLmRldGFpbCAvIC0zMjtcbiAgICAgIHZhciB6b29tUmF0ZSA9IE1hdGgucG93KDEwLCBkZWx0YSlcbiAgICAgICAgLCBtb3VzZVBvc2l0aW9uID0ge1xuICAgICAgICAgICAgbGVmdDogZXYub2Zmc2V0WFxuICAgICAgICAgICwgdG9wOiBldi5vZmZzZXRZXG4gICAgICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jeS56b29taW5nRW5hYmxlZCgpKSB7XG4gICAgICAgIHRoaXMuX3pvb21DeSh6b29tUmF0ZSwgbW91c2VQb3NpdGlvbilcbiAgICAgIH1cbiAgICB9XG5cbiAgLCBfdXBkYXRlVGh1bWJuYWlsSW1hZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICBpZiggdGhpcy5fdGh1bWJuYWlsVXBkYXRpbmcgKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90aHVtYm5haWxVcGRhdGluZyA9IHRydWU7XG5cbiAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGF0Ll9jaGVja1RodW1ibmFpbFNpemVzQW5kVXBkYXRlKCk7XG4gICAgICB0aGF0Ll9zZXR1cFZpZXcoKTtcblxuICAgICAgdmFyICRpbWcgPSB0aGF0LiR0aHVtYm5haWw7XG4gICAgICB2YXIgaW1nID0gJGltZztcblxuICAgICAgdmFyIHcgPSB0aGF0LnBhbmVsV2lkdGg7XG4gICAgICB2YXIgaCA9IHRoYXQucGFuZWxIZWlnaHQ7XG4gICAgICB2YXIgYmIgPSB0aGF0LmJvdW5kaW5nQm94O1xuICAgICAgdmFyIHpvb20gPSBNYXRoLm1pbiggdy9iYi53LCBoL2JiLmggKTtcblxuICAgICAgdmFyIHBuZyA9IHRoYXQuY3kucG5nKHtcbiAgICAgICAgZnVsbDogdHJ1ZSxcbiAgICAgICAgc2NhbGU6IHpvb20sXG4gICAgICAgIG1heEhlaWdodDogaCxcbiAgICAgICAgbWF4V2lkdGg6IHdcbiAgICAgIH0pO1xuICAgICAgaWYoIHBuZy5pbmRleE9mKCdpbWFnZS9wbmcnKSA8IDAgKXtcbiAgICAgICAgaW1nLnJlbW92ZUF0dHJpYnV0ZSggJ3NyYycgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoICdzcmMnLCBwbmcgKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRyYW5zbGF0ZSA9IHtcbiAgICAgICAgeDogKHcgLSB6b29tKiggYmIudyApKS8yLFxuICAgICAgICB5OiAoaCAtIHpvb20qKCBiYi5oICkpLzJcbiAgICAgIH07XG5cbiAgICAgICRpbWcuc3R5bGVbJ3Bvc2l0aW9uJ10gPSAnYWJzb2x1dGUnO1xuICAgICAgJGltZy5zdHlsZVsnbGVmdCddID0gdHJhbnNsYXRlLnggKyAncHgnO1xuICAgICAgJGltZy5zdHlsZVsndG9wJ10gPSB0cmFuc2xhdGUueSArICdweCc7XG5cbiAgICB9XG5cbiAgICB0aGlzLl9vblJlbmRlckhhbmRsZXIgPSB0aHJvdHRsZShyZW5kZXIsIHRoYXQub3B0aW9ucy5yZXJlbmRlckRlbGF5KVxuXG4gICAgdGhpcy5jeS5vblJlbmRlciggdGhpcy5fb25SZW5kZXJIYW5kbGVyIClcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgTmF2aWdhdG9yIHZpZXcgbW92aW5nXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLCBfbW92ZUN5OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmN5LnBhbih7XG4gICAgICAgIHg6IC0odGhpcy52aWV3WCArIHRoaXMudmlld0JvcmRlckxlZnQgLSB0aGlzLnRodW1ibmFpbFBhbi54KSAqIHRoaXMud2lkdGggLyB0aGlzLnZpZXdXXG4gICAgICAsIHk6IC0odGhpcy52aWV3WSArIHRoaXMudmlld0JvcmRlckxlZnQgLSB0aGlzLnRodW1ibmFpbFBhbi55KSAqIHRoaXMuaGVpZ2h0IC8gdGhpcy52aWV3SFxuICAgICAgfSlcbiAgICB9XG5cbiAgLyoqXG4gICAqIFpvb21zIGdyYXBoLlxuICAgKlxuICAgKiBAdGhpcyB7Y3l0b3NjYXBlTmF2aWdhdG9yfVxuICAgKiBAcGFyYW0ge251bWJlcn0gem9vbVJhdGUgVGhlIHpvb20gcmF0ZSB2YWx1ZS4gMSBpcyAxMDAlLlxuICAgKi9cbiAgLCBfem9vbUN5OiBmdW5jdGlvbiAoem9vbVJhdGUsIHpvb21DZW50ZXJSYXcpIHtcbiAgICAgIHZhciB6b29tQ2VudGVyXG4gICAgICAgICwgaXNab29tQ2VudGVySW5WaWV3ID0gZmFsc2VcblxuICAgICAgem9vbUNlbnRlciA9IHtcbiAgICAgICAgeDogdGhpcy53aWR0aCAvIDJcbiAgICAgICwgeTogdGhpcy5oZWlnaHQgLyAyXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmN5Lnpvb20oe1xuICAgICAgICBsZXZlbDogdGhpcy5jeS56b29tKCkgKiB6b29tUmF0ZVxuICAgICAgLCByZW5kZXJlZFBvc2l0aW9uOiB6b29tQ2VudGVyXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbiAgdmFyIHJlZ2lzdGVyID0gZnVuY3Rpb24oIGN5dG9zY2FwZSApe1xuXG4gICAgaWYgKCFjeXRvc2NhcGUpeyByZXR1cm47IH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cbiAgICBjeXRvc2NhcGUoICdjb3JlJywgJ25hdmlnYXRvcicsIGZ1bmN0aW9uKCBvcHRpb25zICl7XG4gICAgICB2YXIgY3kgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gbmV3IE5hdmlnYXRvciggY3ksIG9wdGlvbnMgKTtcbiAgICB9ICk7XG5cbiAgfTtcblxuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsgLy8gZXhwb3NlIGFzIGEgY29tbW9uanMgbW9kdWxlXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiggY3l0b3NjYXBlICl7XG4gICAgICByZWdpc3RlciggY3l0b3NjYXBlICk7XG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lICE9PSAndW5kZWZpbmVkJyAmJiBkZWZpbmUuYW1kKSB7IC8vIGV4cG9zZSBhcyBhbiBhbWQvcmVxdWlyZWpzIG1vZHVsZVxuICAgIGRlZmluZSgnY3l0b3NjYXBlLW5hdmlnYXRvcicsIGZ1bmN0aW9uKCl7XG4gICAgICByZXR1cm4gcmVnaXN0ZXI7XG4gICAgfSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGN5dG9zY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gZXhwb3NlIHRvIGdsb2JhbCBjeXRvc2NhcGUgKGkuZS4gd2luZG93LmN5dG9zY2FwZSlcbiAgICByZWdpc3RlcihjeXRvc2NhcGUpO1xuICB9XG5cbn0pKCk7XG4iLCJleHBvcnQgdmFyIHRvcCA9ICd0b3AnO1xuZXhwb3J0IHZhciBib3R0b20gPSAnYm90dG9tJztcbmV4cG9ydCB2YXIgcmlnaHQgPSAncmlnaHQnO1xuZXhwb3J0IHZhciBsZWZ0ID0gJ2xlZnQnO1xuZXhwb3J0IHZhciBhdXRvID0gJ2F1dG8nO1xuZXhwb3J0IHZhciBiYXNlUGxhY2VtZW50cyA9IFt0b3AsIGJvdHRvbSwgcmlnaHQsIGxlZnRdO1xuZXhwb3J0IHZhciBzdGFydCA9ICdzdGFydCc7XG5leHBvcnQgdmFyIGVuZCA9ICdlbmQnO1xuZXhwb3J0IHZhciBjbGlwcGluZ1BhcmVudHMgPSAnY2xpcHBpbmdQYXJlbnRzJztcbmV4cG9ydCB2YXIgdmlld3BvcnQgPSAndmlld3BvcnQnO1xuZXhwb3J0IHZhciBwb3BwZXIgPSAncG9wcGVyJztcbmV4cG9ydCB2YXIgcmVmZXJlbmNlID0gJ3JlZmVyZW5jZSc7XG5leHBvcnQgdmFyIHZhcmlhdGlvblBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovYmFzZVBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTtcbmV4cG9ydCB2YXIgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9bXS5jb25jYXQoYmFzZVBsYWNlbWVudHMsIFthdXRvXSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50LCBwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pOyAvLyBtb2RpZmllcnMgdGhhdCBuZWVkIHRvIHJlYWQgdGhlIERPTVxuXG5leHBvcnQgdmFyIGJlZm9yZVJlYWQgPSAnYmVmb3JlUmVhZCc7XG5leHBvcnQgdmFyIHJlYWQgPSAncmVhZCc7XG5leHBvcnQgdmFyIGFmdGVyUmVhZCA9ICdhZnRlclJlYWQnOyAvLyBwdXJlLWxvZ2ljIG1vZGlmaWVyc1xuXG5leHBvcnQgdmFyIGJlZm9yZU1haW4gPSAnYmVmb3JlTWFpbic7XG5leHBvcnQgdmFyIG1haW4gPSAnbWFpbic7XG5leHBvcnQgdmFyIGFmdGVyTWFpbiA9ICdhZnRlck1haW4nOyAvLyBtb2RpZmllciB3aXRoIHRoZSBwdXJwb3NlIHRvIHdyaXRlIHRvIHRoZSBET00gKG9yIHdyaXRlIGludG8gYSBmcmFtZXdvcmsgc3RhdGUpXG5cbmV4cG9ydCB2YXIgYmVmb3JlV3JpdGUgPSAnYmVmb3JlV3JpdGUnO1xuZXhwb3J0IHZhciB3cml0ZSA9ICd3cml0ZSc7XG5leHBvcnQgdmFyIGFmdGVyV3JpdGUgPSAnYWZ0ZXJXcml0ZSc7XG5leHBvcnQgdmFyIG1vZGlmaWVyUGhhc2VzID0gW2JlZm9yZVJlYWQsIHJlYWQsIGFmdGVyUmVhZCwgYmVmb3JlTWFpbiwgbWFpbiwgYWZ0ZXJNYWluLCBiZWZvcmVXcml0ZSwgd3JpdGUsIGFmdGVyV3JpdGVdOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBUaGlzIG1vZGlmaWVyIHRha2VzIHRoZSBzdHlsZXMgcHJlcGFyZWQgYnkgdGhlIGBjb21wdXRlU3R5bGVzYCBtb2RpZmllclxuLy8gYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgSFRNTEVsZW1lbnRzIHN1Y2ggYXMgcG9wcGVyIGFuZCBhcnJvd1xuXG5mdW5jdGlvbiBhcHBseVN0eWxlcyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGU7XG4gIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHN0eWxlID0gc3RhdGUuc3R5bGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEZsb3cgZG9lc24ndCBzdXBwb3J0IHRvIGV4dGVuZCB0aGlzIHByb3BlcnR5LCBidXQgaXQncyB0aGUgbW9zdFxuICAgIC8vIGVmZmVjdGl2ZSB3YXkgdG8gYXBwbHkgc3R5bGVzIHRvIGFuIEhUTUxFbGVtZW50XG4gICAgLy8gJEZsb3dGaXhNZVtjYW5ub3Qtd3JpdGVdXG5cblxuICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXNbbmFtZV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSA9PT0gdHJ1ZSA/ICcnIDogdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlO1xuICB2YXIgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICBwb3BwZXI6IHtcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCcsXG4gICAgICBtYXJnaW46ICcwJ1xuICAgIH0sXG4gICAgYXJyb3c6IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgfSxcbiAgICByZWZlcmVuY2U6IHt9XG4gIH07XG4gIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMucG9wcGVyLnN0eWxlLCBpbml0aWFsU3R5bGVzLnBvcHBlcik7XG4gIHN0YXRlLnN0eWxlcyA9IGluaXRpYWxTdHlsZXM7XG5cbiAgaWYgKHN0YXRlLmVsZW1lbnRzLmFycm93KSB7XG4gICAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5hcnJvdy5zdHlsZSwgaW5pdGlhbFN0eWxlcy5hcnJvdyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdO1xuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgICAgdmFyIHN0eWxlUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHN0YXRlLnN0eWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHN0YXRlLnN0eWxlc1tuYW1lXSA6IGluaXRpYWxTdHlsZXNbbmFtZV0pOyAvLyBTZXQgYWxsIHZhbHVlcyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gdW5zZXQgdGhlbVxuXG4gICAgICB2YXIgc3R5bGUgPSBzdHlsZVByb3BlcnRpZXMucmVkdWNlKGZ1bmN0aW9uIChzdHlsZSwgcHJvcGVydHkpIHtcbiAgICAgICAgc3R5bGVbcHJvcGVydHldID0gJyc7XG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH0sIHt9KTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogYXBwbHlTdHlsZXMsXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ11cbn07IiwiaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaXNIVE1MRWxlbWVudChlbGVtZW50KSAmJiBpbmNsdWRlU2NhbGUpIHtcbiAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgdmFyIG9mZnNldFdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDsgLy8gRG8gbm90IGF0dGVtcHQgdG8gZGl2aWRlIGJ5IDAsIG90aGVyd2lzZSB3ZSBnZXQgYEluZmluaXR5YCBhcyBzY2FsZVxuICAgIC8vIEZhbGxiYWNrIHRvIDEgaW4gY2FzZSBib3RoIHZhbHVlcyBhcmUgYDBgXG5cbiAgICBpZiAob2Zmc2V0V2lkdGggPiAwKSB7XG4gICAgICBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIG9mZnNldFdpZHRoIHx8IDE7XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldEhlaWdodCA+IDApIHtcbiAgICAgIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIG9mZnNldEhlaWdodCB8fCAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggLyBzY2FsZVgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAvIHNjYWxlWSxcbiAgICB0b3A6IHJlY3QudG9wIC8gc2NhbGVZLFxuICAgIHJpZ2h0OiByZWN0LnJpZ2h0IC8gc2NhbGVYLFxuICAgIGJvdHRvbTogcmVjdC5ib3R0b20gLyBzY2FsZVksXG4gICAgbGVmdDogcmVjdC5sZWZ0IC8gc2NhbGVYLFxuICAgIHg6IHJlY3QubGVmdCAvIHNjYWxlWCxcbiAgICB5OiByZWN0LnRvcCAvIHNjYWxlWVxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpID49IDA7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICByZXR1cm4gKChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgZWxlbWVudC5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IHsgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSB7XG4gIGlmIChnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gKC8vIHRoaXMgaXMgYSBxdWlja2VyIChidXQgbGVzcyB0eXBlIHNhZmUpIHdheSB0byBzYXZlIHF1aXRlIHNvbWUgYnl0ZXMgZnJvbSB0aGUgYnVuZGxlXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXVxuICAgIC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgIGVsZW1lbnQuYXNzaWduZWRTbG90IHx8IC8vIHN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlXG4gICAgZWxlbWVudC5wYXJlbnROb2RlIHx8ICggLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWRcbiAgICBpc1NoYWRvd1Jvb3QoZWxlbWVudCkgPyBlbGVtZW50Lmhvc3QgOiBudWxsKSB8fCAvLyBTaGFkb3dSb290IGRldGVjdGVkXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IEhUTUxFbGVtZW50IGlzIGEgTm9kZVxuICAgIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSAvLyBmYWxsYmFja1xuXG4gICk7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBpc1RhYmxlRWxlbWVudCBmcm9tIFwiLi9pc1RhYmxlRWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvODM3XG4gIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbn0gLy8gYC5vZmZzZXRQYXJlbnRgIHJlcG9ydHMgYG51bGxgIGZvciBmaXhlZCBlbGVtZW50cywgd2hpbGUgYWJzb2x1dGUgZWxlbWVudHNcbi8vIHJldHVybiB0aGUgY29udGFpbmluZyBibG9ja1xuXG5cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIHZhciBpc0ZpcmVmb3ggPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpICE9PSAtMTtcbiAgdmFyIGlzSUUgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQnKSAhPT0gLTE7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgWydodG1sJywgJ2JvZHknXS5pbmRleE9mKGdldE5vZGVOYW1lKGN1cnJlbnROb2RlKSkgPCAwKSB7XG4gICAgdmFyIGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpOyAvLyBUaGlzIGlzIG5vbi1leGhhdXN0aXZlIGJ1dCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIENTUyBwcm9wZXJ0aWVzIHRoYXRcbiAgICAvLyBjcmVhdGUgYSBjb250YWluaW5nIGJsb2NrLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG5cbiAgICBpZiAoY3NzLnRyYW5zZm9ybSAhPT0gJ25vbmUnIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gJ25vbmUnIHx8IGNzcy5jb250YWluID09PSAncGFpbnQnIHx8IFsndHJhbnNmb3JtJywgJ3BlcnNwZWN0aXZlJ10uaW5kZXhPZihjc3Mud2lsbENoYW5nZSkgIT09IC0xIHx8IGlzRmlyZWZveCAmJiBjc3Mud2lsbENoYW5nZSA9PT0gJ2ZpbHRlcicgfHwgaXNGaXJlZm94ICYmIGNzcy5maWx0ZXIgJiYgY3NzLmZpbHRlciAhPT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn0gLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KTtcblxuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdodG1sJyB8fCBnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnYm9keScgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luZG93O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSA+PSAwID8gJ3gnIDogJ3knO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXhwYW5kVG9IYXNoTWFwKHZhbHVlLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoaGFzaE1hcCwga2V5KSB7XG4gICAgaGFzaE1hcFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGhhc2hNYXA7XG4gIH0sIHt9KTtcbn0iLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4uL2RvbS11dGlscy9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4gfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuLi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4uL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qc1wiO1xuaW1wb3J0IHsgbGVmdCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB0b3AsIGJvdHRvbSB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB0b1BhZGRpbmdPYmplY3QgPSBmdW5jdGlvbiB0b1BhZGRpbmdPYmplY3QocGFkZGluZywgc3RhdGUpIHtcbiAgcGFkZGluZyA9IHR5cGVvZiBwYWRkaW5nID09PSAnZnVuY3Rpb24nID8gcGFkZGluZyhPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHBhZGRpbmc7XG4gIHJldHVybiBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xufTtcblxuZnVuY3Rpb24gYXJyb3coX3JlZikge1xuICB2YXIgX3N0YXRlJG1vZGlmaWVyc0RhdGEkO1xuXG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgaXNWZXJ0aWNhbCA9IFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwO1xuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICBpZiAoIWFycm93RWxlbWVudCB8fCAhcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gdG9QYWRkaW5nT2JqZWN0KG9wdGlvbnMucGFkZGluZywgc3RhdGUpO1xuICB2YXIgYXJyb3dSZWN0ID0gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpO1xuICB2YXIgbWluUHJvcCA9IGF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gIHZhciBtYXhQcm9wID0gYXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gIHZhciBlbmREaWZmID0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2xlbl0gKyBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucG9wcGVyW2xlbl07XG4gIHZhciBzdGFydERpZmYgPSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQoYXJyb3dFbGVtZW50KTtcbiAgdmFyIGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudEhlaWdodCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggfHwgMCA6IDA7XG4gIHZhciBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjsgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBwb3BwZXIgaWYgdGhlIGNlbnRlciBwb2ludCBpc1xuICAvLyBvdXRzaWRlIG9mIHRoZSBwb3BwZXIgYm91bmRzXG5cbiAgdmFyIG1pbiA9IHBhZGRpbmdPYmplY3RbbWluUHJvcF07XG4gIHZhciBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dSZWN0W2xlbl0gLSBwYWRkaW5nT2JqZWN0W21heFByb3BdO1xuICB2YXIgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd1JlY3RbbGVuXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgdmFyIG9mZnNldCA9IHdpdGhpbihtaW4sIGNlbnRlciwgbWF4KTsgLy8gUHJldmVudHMgYnJlYWtpbmcgc3ludGF4IGhpZ2hsaWdodGluZy4uLlxuXG4gIHZhciBheGlzUHJvcCA9IGF4aXM7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSAoX3N0YXRlJG1vZGlmaWVyc0RhdGEkID0ge30sIF9zdGF0ZSRtb2RpZmllcnNEYXRhJFtheGlzUHJvcF0gPSBvZmZzZXQsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJC5jZW50ZXJPZmZzZXQgPSBvZmZzZXQgLSBjZW50ZXIsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJCk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGFycm93RWxlbWVudCA9IF9vcHRpb25zJGVsZW1lbnQgPT09IHZvaWQgMCA/ICdbZGF0YS1wb3BwZXItYXJyb3ddJyA6IF9vcHRpb25zJGVsZW1lbnQ7XG5cbiAgaWYgKGFycm93RWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIENTUyBzZWxlY3RvclxuXG5cbiAgaWYgKHR5cGVvZiBhcnJvd0VsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoYXJyb3dFbGVtZW50KTtcblxuICAgIGlmICghYXJyb3dFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmICghaXNIVE1MRWxlbWVudChhcnJvd0VsZW1lbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgZWxlbWVudCBtdXN0IGJlIGFuIEhUTUxFbGVtZW50IChub3QgYW4gU1ZHRWxlbWVudCkuJywgJ1RvIHVzZSBhbiBTVkcgYXJyb3csIHdyYXAgaXQgaW4gYW4gSFRNTEVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMnLCAndGhlIGFycm93LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb250YWlucyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIsIGFycm93RWxlbWVudCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgbW9kaWZpZXJcXCdzIGBlbGVtZW50YCBtdXN0IGJlIGEgY2hpbGQgb2YgdGhlIHBvcHBlcicsICdlbGVtZW50LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUuZWxlbWVudHMuYXJyb3cgPSBhcnJvd0VsZW1lbnQ7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcnJvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBhcnJvdyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn0iLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHVuc2V0U2lkZXMgPSB7XG4gIHRvcDogJ2F1dG8nLFxuICByaWdodDogJ2F1dG8nLFxuICBib3R0b206ICdhdXRvJyxcbiAgbGVmdDogJ2F1dG8nXG59OyAvLyBSb3VuZCB0aGUgb2Zmc2V0cyB0byB0aGUgbmVhcmVzdCBzdWl0YWJsZSBzdWJwaXhlbCBiYXNlZCBvbiB0aGUgRFBSLlxuLy8gWm9vbWluZyBjYW4gY2hhbmdlIHRoZSBEUFIsIGJ1dCBpdCBzZWVtcyB0byByZXBvcnQgYSB2YWx1ZSB0aGF0IHdpbGxcbi8vIGNsZWFubHkgZGl2aWRlIHRoZSB2YWx1ZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgc3VicGl4ZWxzLlxuXG5mdW5jdGlvbiByb3VuZE9mZnNldHNCeURQUihfcmVmKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIHdpbiA9IHdpbmRvdztcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmNC54O1xuICB5ID0gX3JlZjQueTtcblxuICBpZiAoZ3B1QWNjZWxlcmF0aW9uKSB7XG4gICAgdmFyIF9PYmplY3QkYXNzaWduO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduID0ge30sIF9PYmplY3QkYXNzaWduW3NpZGVZXSA9IGhhc1kgPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ25bc2lkZVhdID0gaGFzWCA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbi50cmFuc2Zvcm0gPSAod2luLmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNSkge1xuICB2YXIgc3RhdGUgPSBfcmVmNS5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNS5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgdmFyIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IGdldENvbXB1dGVkU3R5bGUoc3RhdGUuZWxlbWVudHMucG9wcGVyKS50cmFuc2l0aW9uUHJvcGVydHkgfHwgJyc7XG5cbiAgICBpZiAoYWRhcHRpdmUgJiYgWyd0cmFuc2Zvcm0nLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uc29tZShmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uUHJvcGVydHkuaW5kZXhPZihwcm9wZXJ0eSkgPj0gMDtcbiAgICB9KSkge1xuICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBEZXRlY3RlZCBDU1MgdHJhbnNpdGlvbnMgb24gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcnLCAnQ1NTIHByb3BlcnRpZXM6IFwidHJhbnNmb3JtXCIsIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJsZWZ0XCIuJywgJ1xcblxcbicsICdEaXNhYmxlIHRoZSBcImNvbXB1dGVTdHlsZXNcIiBtb2RpZmllclxcJ3MgYGFkYXB0aXZlYCBvcHRpb24gdG8gYWxsb3cnLCAnZm9yIHNtb290aCB0cmFuc2l0aW9ucywgb3IgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgZnJvbSB0aGUgQ1NTJywgJ3RyYW5zaXRpb24gZGVjbGFyYXRpb24gb24gdGhlIHBvcHBlciBlbGVtZW50IGlmIG9ubHkgdHJhbnNpdGlvbmluZycsICdvcGFjaXR5IG9yIGJhY2tncm91bmQtY29sb3IgZm9yIGV4YW1wbGUuJywgJ1xcblxcbicsICdXZSByZWNvbW1lbmQgdXNpbmcgdGhlIHBvcHBlciBlbGVtZW50IGFzIGEgd3JhcHBlciBhcm91bmQgYW4gaW5uZXInLCAnZWxlbWVudCB0aGF0IGNhbiBoYXZlIGFueSBDU1MgcHJvcGVydHkgdHJhbnNpdGlvbmVkIGZvciBhbmltYXRpb25zLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICB2YXJpYXRpb246IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHBvcHBlcjogc3RhdGUuZWxlbWVudHMucG9wcGVyLFxuICAgIHBvcHBlclJlY3Q6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBncHVBY2NlbGVyYXRpb246IGdwdUFjY2VsZXJhdGlvbixcbiAgICBpc0ZpeGVkOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnXG4gIH07XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5wb3BwZXIsIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLFxuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBhZGFwdGl2ZTogYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLmFycm93LCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3csXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGFkYXB0aXZlOiBmYWxzZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcGxhY2VtZW50Jzogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICBmbjogY29tcHV0ZVN0eWxlcyxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciBwYXNzaXZlID0ge1xuICBwYXNzaXZlOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJHNjcm9sbCA9IG9wdGlvbnMuc2Nyb2xsLFxuICAgICAgc2Nyb2xsID0gX29wdGlvbnMkc2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkc2Nyb2xsLFxuICAgICAgX29wdGlvbnMkcmVzaXplID0gb3B0aW9ucy5yZXNpemUsXG4gICAgICByZXNpemUgPSBfb3B0aW9ucyRyZXNpemUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyZXNpemU7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coc3RhdGUuZWxlbWVudHMucG9wcGVyKTtcbiAgdmFyIHNjcm9sbFBhcmVudHMgPSBbXS5jb25jYXQoc3RhdGUuc2Nyb2xsUGFyZW50cy5yZWZlcmVuY2UsIHN0YXRlLnNjcm9sbFBhcmVudHMucG9wcGVyKTtcblxuICBpZiAoc2Nyb2xsKSB7XG4gICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHJlc2l6ZSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXNpemUpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH1cbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2V2ZW50TGlzdGVuZXJzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBmdW5jdGlvbiBmbigpIHt9LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgZGF0YToge31cbn07IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGwobm9kZSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KG5vZGUpO1xuICB2YXIgc2Nyb2xsTGVmdCA9IHdpbi5wYWdlWE9mZnNldDtcbiAgdmFyIHNjcm9sbFRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBzY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogc2Nyb2xsVG9wXG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIC8vIFBvcHBlciAxIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UgYW5kIG5ldmVyIGhhZCBhIGJ1ZyByZXBvcnQgc28gbGV0J3MgYXNzdW1lXG4gIC8vIGl0J3Mgbm90IGFuIGlzc3VlLiBJIGRvbid0IHRoaW5rIGFueW9uZSBldmVyIHNwZWNpZmllcyB3aWR0aCBvbiA8aHRtbD5cbiAgLy8gYW55d2F5LlxuICAvLyBCcm93c2VycyB3aGVyZSB0aGUgbGVmdCBzY3JvbGxiYXIgZG9lc24ndCBjYXVzZSBhbiBpc3N1ZSByZXBvcnQgYDBgIGZvclxuICAvLyB0aGlzIChlLmcuIEVkZ2UgMjAxOSwgSUUxMSwgU2FmYXJpKVxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldFdpbmRvd1Njcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgdmFyIHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDsgLy8gTkI6IFRoaXMgaXNuJ3Qgc3VwcG9ydGVkIG9uIGlPUyA8PSAxMi4gSWYgdGhlIGtleWJvYXJkIGlzIG9wZW4sIHRoZSBwb3BwZXJcbiAgLy8gY2FuIGJlIG9ic2N1cmVkIHVuZGVybmVhdGggaXQuXG4gIC8vIEFsc28sIGBodG1sLmNsaWVudEhlaWdodGAgYWRkcyB0aGUgYm90dG9tIGJhciBoZWlnaHQgaW4gU2FmYXJpIGlPUywgZXZlblxuICAvLyBpZiBpdCBpc24ndCBvcGVuLCBzbyBpZiB0aGlzIGlzbid0IGF2YWlsYWJsZSwgdGhlIHBvcHBlciB3aWxsIGJlIGRldGVjdGVkXG4gIC8vIHRvIG92ZXJmbG93IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbiB0b28gZWFybHkuXG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7IC8vIFVzZXMgTGF5b3V0IFZpZXdwb3J0IChsaWtlIENocm9tZTsgU2FmYXJpIGRvZXMgbm90IGN1cnJlbnRseSlcbiAgICAvLyBJbiBDaHJvbWUsIGl0IHJldHVybnMgYSB2YWx1ZSB2ZXJ5IGNsb3NlIHRvIDAgKCsvLSkgYnV0IGNvbnRhaW5zIHJvdW5kaW5nXG4gICAgLy8gZXJyb3JzIGR1ZSB0byBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIHByZWNpc2lvbi5cbiAgICAvLyBTYWZhcmkgcmV0dXJucyBhIG51bWJlciA8PSAwLCB1c3VhbGx5IDwgLTEgd2hlbiBwaW5jaC16b29tZWRcbiAgICAvLyBGZWF0dXJlIGRldGVjdGlvbiBmYWlscyBpbiBtb2JpbGUgZW11bGF0aW9uIG1vZGUgaW4gQ2hyb21lLlxuICAgIC8vIE1hdGguYWJzKHdpbi5pbm5lcldpZHRoIC8gdmlzdWFsVmlld3BvcnQuc2NhbGUgLSB2aXN1YWxWaWV3cG9ydC53aWR0aCkgPFxuICAgIC8vIDAuMDAxXG4gICAgLy8gRmFsbGJhY2sgaGVyZTogXCJOb3QgU2FmYXJpXCIgdXNlckFnZW50XG5cbiAgICBpZiAoIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgeyBtYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB3aW5TY3JvbGwgPSBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCk7XG4gIHZhciBib2R5ID0gKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5O1xuICB2YXIgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuc2Nyb2xsV2lkdGggOiAwLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApO1xuICB2YXIgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keSA/IGJvZHkuc2Nyb2xsSGVpZ2h0IDogMCwgYm9keSA/IGJvZHkuY2xpZW50SGVpZ2h0IDogMCk7XG4gIHZhciB4ID0gLXdpblNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgdmFyIHkgPSAtd2luU2Nyb2xsLnNjcm9sbFRvcDtcblxuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5IHx8IGh0bWwpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApIC0gd2lkdGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgcmV0dXJuIGNsaXBwaW5nUGFyZW50ID09PSB2aWV3cG9ydCA/IHJlY3RUb0NsaWVudFJlY3QoZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQpKSA6IGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgPyBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ1BhcmVudCkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnkpIHtcbiAgdmFyIG1haW5DbGlwcGluZ1BhcmVudHMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nUGFyZW50cycgPyBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gW10uY29uY2F0KG1haW5DbGlwcGluZ1BhcmVudHMsIFtyb290Qm91bmRhcnldKTtcbiAgdmFyIGZpcnN0Q2xpcHBpbmdQYXJlbnQgPSBjbGlwcGluZ1BhcmVudHNbMF07XG4gIHZhciBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ1BhcmVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2NSZWN0LCBjbGlwcGluZ1BhcmVudCkge1xuICAgIHZhciByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdQYXJlbnQpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJpbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgdmFyaWF0aW9uUGxhY2VtZW50cywgYmFzZVBsYWNlbWVudHMsIHBsYWNlbWVudHMgYXMgYWxsUGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPSBfb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPT09IHZvaWQgMCA/IGFsbFBsYWNlbWVudHMgOiBfb3B0aW9ucyRhbGxvd2VkQXV0b1A7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KTtcbiAgdmFyIHBsYWNlbWVudHMgPSB2YXJpYXRpb24gPyBmbGlwVmFyaWF0aW9ucyA/IHZhcmlhdGlvblBsYWNlbWVudHMgOiB2YXJpYXRpb25QbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSB2YXJpYXRpb247XG4gIH0pIDogYmFzZVBsYWNlbWVudHM7XG4gIHZhciBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWxsb3dlZEF1dG9QbGFjZW1lbnRzLmluZGV4T2YocGxhY2VtZW50KSA+PSAwO1xuICB9KTtcblxuICBpZiAoYWxsb3dlZFBsYWNlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogVGhlIGBhbGxvd2VkQXV0b1BsYWNlbWVudHNgIG9wdGlvbiBkaWQgbm90IGFsbG93IGFueScsICdwbGFjZW1lbnRzLiBFbnN1cmUgdGhlIGBwbGFjZW1lbnRgIG9wdGlvbiBtYXRjaGVzIHRoZSB2YXJpYXRpb24nLCAnb2YgdGhlIGFsbG93ZWQgcGxhY2VtZW50cy4nLCAnRm9yIGV4YW1wbGUsIFwiYXV0b1wiIGNhbm5vdCBiZSB1c2VkIHRvIGFsbG93IFwiYm90dG9tLXN0YXJ0XCIuJywgJ1VzZSBcImF1dG8tc3RhcnRcIiBpbnN0ZWFkLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdOiBGbG93IHNlZW1zIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCB0d28gYXJyYXkgdW5pb25zLi4uXG5cblxuICB2YXIgb3ZlcmZsb3dzID0gYWxsb3dlZFBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSlbZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvdmVyZmxvd3MpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dzW2FdIC0gb3ZlcmZsb3dzW2JdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChzdHIpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChhcmdzKS5yZWR1Y2UoZnVuY3Rpb24gKHAsIGMpIHtcbiAgICByZXR1cm4gcC5yZXBsYWNlKC8lcy8sIGMpO1xuICB9LCBzdHIpO1xufSIsImltcG9ydCBmb3JtYXQgZnJvbSBcIi4vZm9ybWF0LmpzXCI7XG5pbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfTU9ESUZJRVJfRVJST1IgPSAnUG9wcGVyOiBtb2RpZmllciBcIiVzXCIgcHJvdmlkZWQgYW4gaW52YWxpZCAlcyBwcm9wZXJ0eSwgZXhwZWN0ZWQgJXMgYnV0IGdvdCAlcyc7XG52YXIgTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHJlcXVpcmVzIFwiJXNcIiwgYnV0IFwiJXNcIiBtb2RpZmllciBpcyBub3QgYXZhaWxhYmxlJztcbnZhciBWQUxJRF9QUk9QRVJUSUVTID0gWyduYW1lJywgJ2VuYWJsZWQnLCAncGhhc2UnLCAnZm4nLCAnZWZmZWN0JywgJ3JlcXVpcmVzJywgJ29wdGlvbnMnXTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBbXS5jb25jYXQoT2JqZWN0LmtleXMobW9kaWZpZXIpLCBWQUxJRF9QUk9QRVJUSUVTKSAvLyBJRTExLWNvbXBhdGlibGUgcmVwbGFjZW1lbnQgZm9yIGBuZXcgU2V0KGl0ZXJhYmxlKWBcbiAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHtcbiAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcbiAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIubmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIFN0cmluZyhtb2RpZmllci5uYW1lKSwgJ1wibmFtZVwiJywgJ1wic3RyaW5nXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5uYW1lKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZW5hYmxlZCc6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5lbmFibGVkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVuYWJsZWRcIicsICdcImJvb2xlYW5cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmVuYWJsZWQpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdwaGFzZSc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyUGhhc2VzLmluZGV4T2YobW9kaWZpZXIucGhhc2UpIDwgMCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicGhhc2VcIicsIFwiZWl0aGVyIFwiICsgbW9kaWZpZXJQaGFzZXMuam9pbignLCAnKSwgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucGhhc2UpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdmbic6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5mbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wiZm5cIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VmZmVjdCc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyLmVmZmVjdCAhPSBudWxsICYmIHR5cGVvZiBtb2RpZmllci5lZmZlY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVmZmVjdFwiJywgJ1wiZnVuY3Rpb25cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmZuKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmVxdWlyZXMnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5yZXF1aXJlcyAhPSBudWxsICYmICFBcnJheS5pc0FycmF5KG1vZGlmaWVyLnJlcXVpcmVzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlcykgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzSWZFeGlzdHMnOlxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNJZkV4aXN0c1wiJywgJ1wiYXJyYXlcIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdvcHRpb25zJzpcbiAgICAgICAgY2FzZSAnZGF0YSc6XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUG9wcGVySlM6IGFuIGludmFsaWQgcHJvcGVydHkgaGFzIGJlZW4gcHJvdmlkZWQgdG8gdGhlIFxcXCJcIiArIG1vZGlmaWVyLm5hbWUgKyBcIlxcXCIgbW9kaWZpZXIsIHZhbGlkIHByb3BlcnRpZXMgYXJlIFwiICsgVkFMSURfUFJPUEVSVElFUy5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlxcXCJcIiArIHMgKyBcIlxcXCJcIjtcbiAgICAgICAgICB9KS5qb2luKCcsICcpICsgXCI7IGJ1dCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgd2FzIHByb3ZpZGVkLlwiKTtcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZXIucmVxdWlyZXMgJiYgbW9kaWZpZXIucmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAocmVxdWlyZW1lbnQpIHtcbiAgICAgICAgaWYgKG1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChtb2QpIHtcbiAgICAgICAgICByZXR1cm4gbW9kLm5hbWUgPT09IHJlcXVpcmVtZW50O1xuICAgICAgICB9KSA9PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksIHJlcXVpcmVtZW50LCByZXF1aXJlbWVudCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5pcXVlQnkoYXJyLCBmbikge1xuICB2YXIgaWRlbnRpZmllcnMgPSBuZXcgU2V0KCk7XG4gIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBmbihpdGVtKTtcblxuICAgIGlmICghaWRlbnRpZmllcnMuaGFzKGlkZW50aWZpZXIpKSB7XG4gICAgICBpZGVudGlmaWVycy5hZGQoaWRlbnRpZmllcik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCBnZXRDb21wb3NpdGVSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IG9yZGVyTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcIi4vdXRpbHMvZGVib3VuY2UuanNcIjtcbmltcG9ydCB2YWxpZGF0ZU1vZGlmaWVycyBmcm9tIFwiLi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IHVuaXF1ZUJ5IGZyb20gXCIuL3V0aWxzL3VuaXF1ZUJ5LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgbWVyZ2VCeU5hbWUgZnJvbSBcIi4vdXRpbHMvbWVyZ2VCeU5hbWUuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfRUxFTUVOVF9FUlJPUiA9ICdQb3BwZXI6IEludmFsaWQgcmVmZXJlbmNlIG9yIHBvcHBlciBhcmd1bWVudCBwcm92aWRlZC4gVGhleSBtdXN0IGJlIGVpdGhlciBhIERPTSBlbGVtZW50IG9yIHZpcnR1YWwgZWxlbWVudC4nO1xudmFyIElORklOSVRFX0xPT1BfRVJST1IgPSAnUG9wcGVyOiBBbiBpbmZpbml0ZSBsb29wIGluIHRoZSBtb2RpZmllcnMgY3ljbGUgaGFzIGJlZW4gZGV0ZWN0ZWQhIFRoZSBjeWNsZSBoYXMgYmVlbiBpbnRlcnJ1cHRlZCB0byBwcmV2ZW50IGEgYnJvd3NlciBjcmFzaC4nO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3BwZXJHZW5lcmF0b3IoZ2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoZ2VuZXJhdG9yT3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgZ2VuZXJhdG9yT3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9nZW5lcmF0b3JPcHRpb25zID0gZ2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRNb2RpZmllcnMsXG4gICAgICBkZWZhdWx0TW9kaWZpZXJzID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmID09PSB2b2lkIDAgPyBbXSA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZixcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHRPcHRpb25zID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9PT0gdm9pZCAwID8gREVGQVVMVF9PUFRJT05TIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmMjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlcihyZWZlcmVuY2UsIHBvcHBlciwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICB2YXIgc3RhdGUgPSB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgb3JkZXJlZE1vZGlmaWVyczogW10sXG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIGRlZmF1bHRPcHRpb25zKSxcbiAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlOiByZWZlcmVuY2UsXG4gICAgICAgIHBvcHBlcjogcG9wcGVyXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBzdHlsZXM6IHt9XG4gICAgfTtcbiAgICB2YXIgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIHZhciBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHZhciBpbnN0YW5jZSA9IHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIHNldE9wdGlvbnMoc2V0T3B0aW9uc0FjdGlvbikge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzZXRPcHRpb25zQWN0aW9uID09PSAnZnVuY3Rpb24nID8gc2V0T3B0aW9uc0FjdGlvbihzdGF0ZS5vcHRpb25zKSA6IHNldE9wdGlvbnNBY3Rpb247XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgc3RhdGUub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBzdGF0ZS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgc3RhdGUuc2Nyb2xsUGFyZW50cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGlzRWxlbWVudChyZWZlcmVuY2UpID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlKSA6IHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkgOiBbXSxcbiAgICAgICAgICBwb3BwZXI6IGxpc3RTY3JvbGxQYXJlbnRzKHBvcHBlcilcbiAgICAgICAgfTsgLy8gT3JkZXJzIHRoZSBtb2RpZmllcnMgYmFzZWQgb24gdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCBgcGhhc2VgXG4gICAgICAgIC8vIHByb3BlcnRpZXNcblxuICAgICAgICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyTW9kaWZpZXJzKG1lcmdlQnlOYW1lKFtdLmNvbmNhdChkZWZhdWx0TW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycykpKTsgLy8gU3RyaXAgb3V0IGRpc2FibGVkIG1vZGlmaWVyc1xuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobSkge1xuICAgICAgICAgIHJldHVybiBtLmVuYWJsZWQ7XG4gICAgICAgIH0pOyAvLyBWYWxpZGF0ZSB0aGUgcHJvdmlkZWQgbW9kaWZpZXJzIHNvIHRoYXQgdGhlIGNvbnN1bWVyIHdpbGwgZ2V0IHdhcm5lZFxuICAgICAgICAvLyBpZiBvbmUgb2YgdGhlIG1vZGlmaWVycyBpcyBpbnZhbGlkIGZvciBhbnkgcmVhc29uXG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgIHZhciBtb2RpZmllcnMgPSB1bmlxdWVCeShbXS5jb25jYXQob3JkZXJlZE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpLCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpO1xuXG4gICAgICAgICAgaWYgKGdldEJhc2VQbGFjZW1lbnQoc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgICAgICAgICB2YXIgZmxpcE1vZGlmaWVyID0gc3RhdGUub3JkZXJlZE1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYyLm5hbWU7XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSAnZmxpcCc7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFmbGlwTW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhdXRvXCIgcGxhY2VtZW50cyByZXF1aXJlIHRoZSBcImZsaXBcIiBtb2RpZmllciBiZScsICdwcmVzZW50IGFuZCBlbmFibGVkIHRvIHdvcmsuJ10uam9pbignICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBvcHBlciksXG4gICAgICAgICAgICAgIG1hcmdpblRvcCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblRvcCxcbiAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5SaWdodCxcbiAgICAgICAgICAgICAgbWFyZ2luQm90dG9tID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luTGVmdDsgLy8gV2Ugbm8gbG9uZ2VyIHRha2UgaW50byBhY2NvdW50IGBtYXJnaW5zYCBvbiB0aGUgcG9wcGVyLCBhbmQgaXQgY2FuXG4gICAgICAgICAgLy8gY2F1c2UgYnVncyB3aXRoIHBvc2l0aW9uaW5nLCBzbyB3ZSdsbCB3YXJuIHRoZSBjb25zdW1lclxuXG5cbiAgICAgICAgICBpZiAoW21hcmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdF0uc29tZShmdW5jdGlvbiAobWFyZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChtYXJnaW4pO1xuICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IENTUyBcIm1hcmdpblwiIHN0eWxlcyBjYW5ub3QgYmUgdXNlZCB0byBhcHBseSBwYWRkaW5nJywgJ2JldHdlZW4gdGhlIHBvcHBlciBhbmQgaXRzIHJlZmVyZW5jZSBlbGVtZW50IG9yIGJvdW5kYXJ5LicsICdUbyByZXBsaWNhdGUgbWFyZ2luLCB1c2UgdGhlIGBvZmZzZXRgIG1vZGlmaWVyLCBhcyB3ZWxsIGFzJywgJ3RoZSBgcGFkZGluZ2Agb3B0aW9uIGluIHRoZSBgcHJldmVudE92ZXJmbG93YCBhbmQgYGZsaXBgJywgJ21vZGlmaWVycy4nXS5qb2luKCcgJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bk1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICB9LFxuICAgICAgLy8gU3luYyB1cGRhdGUg4oCTIGl0IHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkLCBldmVuIGlmIG5vdCBuZWNlc3NhcnkuIFRoaXNcbiAgICAgIC8vIGlzIHVzZWZ1bCBmb3IgbG93IGZyZXF1ZW5jeSB1cGRhdGVzIHdoZXJlIHN5bmMgYmVoYXZpb3Igc2ltcGxpZmllcyB0aGVcbiAgICAgIC8vIGxvZ2ljLlxuICAgICAgLy8gRm9yIGhpZ2ggZnJlcXVlbmN5IHVwZGF0ZXMgKGUuZy4gYHJlc2l6ZWAgYW5kIGBzY3JvbGxgIGV2ZW50cyksIGFsd2F5c1xuICAgICAgLy8gcHJlZmVyIHRoZSBhc3luYyBQb3BwZXIjdXBkYXRlIG1ldGhvZFxuICAgICAgZm9yY2VVcGRhdGU6IGZ1bmN0aW9uIGZvcmNlVXBkYXRlKCkge1xuICAgICAgICBpZiAoaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3N0YXRlJGVsZW1lbnRzID0gc3RhdGUuZWxlbWVudHMsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBfc3RhdGUkZWxlbWVudHMucmVmZXJlbmNlLFxuICAgICAgICAgICAgcG9wcGVyID0gX3N0YXRlJGVsZW1lbnRzLnBvcHBlcjsgLy8gRG9uJ3QgcHJvY2VlZCBpZiBgcmVmZXJlbmNlYCBvciBgcG9wcGVyYCBhcmUgbm90IHZhbGlkIGVsZW1lbnRzXG4gICAgICAgIC8vIGFueW1vcmVcblxuICAgICAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBTdG9yZSB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXIgcmVjdHMgdG8gYmUgcmVhZCBieSBtb2RpZmllcnNcblxuXG4gICAgICAgIHN0YXRlLnJlY3RzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogZ2V0Q29tcG9zaXRlUmVjdChyZWZlcmVuY2UsIGdldE9mZnNldFBhcmVudChwb3BwZXIpLCBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnKSxcbiAgICAgICAgICBwb3BwZXI6IGdldExheW91dFJlY3QocG9wcGVyKVxuICAgICAgICB9OyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXNldCB0aGUgY3VycmVudCB1cGRhdGUgY3ljbGUuIFRoZVxuICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgdGhpcyBpcyB0aGUgYGZsaXBgIG1vZGlmaWVyIGNoYW5naW5nIHRoZVxuICAgICAgICAvLyBwbGFjZW1lbnQsIHdoaWNoIHRoZW4gbmVlZHMgdG8gcmUtcnVuIGFsbCB0aGUgbW9kaWZpZXJzLCBiZWNhdXNlIHRoZVxuICAgICAgICAvLyBsb2dpYyB3YXMgcHJldmlvdXNseSByYW4gZm9yIHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgYW5kIGlzIHRoZXJlZm9yZVxuICAgICAgICAvLyBzdGFsZS9pbmNvcnJlY3RcblxuICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5wbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDsgLy8gT24gZWFjaCB1cGRhdGUgY3ljbGUsIHRoZSBgbW9kaWZpZXJzRGF0YWAgcHJvcGVydHkgZm9yIGVhY2ggbW9kaWZpZXJcbiAgICAgICAgLy8gaXMgZmlsbGVkIHdpdGggdGhlIGluaXRpYWwgZGF0YSBzcGVjaWZpZWQgYnkgdGhlIG1vZGlmaWVyLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIGl0IGRvZXNuJ3QgcGVyc2lzdCBhbmQgaXMgZnJlc2ggb24gZWFjaCB1cGRhdGUuXG4gICAgICAgIC8vIFRvIGVuc3VyZSBwZXJzaXN0ZW50IGRhdGEsIHVzZSBgJHtuYW1lfSNwZXJzaXN0ZW50YFxuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGUubW9kaWZpZXJzRGF0YVttb2RpZmllci5uYW1lXSA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVyLmRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fZGVidWdfbG9vcHNfXyA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgX19kZWJ1Z19sb29wc19fICs9IDE7XG5cbiAgICAgICAgICAgIGlmIChfX2RlYnVnX2xvb3BzX18gPiAxMDApIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTkZJTklURV9MT09QX0VSUk9SKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0YXRlLnJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfc3RhdGUkb3JkZXJlZE1vZGlmaWUgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzW2luZGV4XSxcbiAgICAgICAgICAgICAgZm4gPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUuZm4sXG4gICAgICAgICAgICAgIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgX29wdGlvbnMgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID09PSB2b2lkIDAgPyB7fSA6IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIsXG4gICAgICAgICAgICAgIG5hbWUgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUubmFtZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZm4oe1xuICAgICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF9vcHRpb25zLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pIHx8IHN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzeW5jIGFuZCBvcHRpbWlzdGljYWxseSBvcHRpbWl6ZWQgdXBkYXRlIOKAkyBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpZlxuICAgICAgLy8gbm90IG5lY2Vzc2FyeSAoZGVib3VuY2VkIHRvIHJ1biBhdCBtb3N0IG9uY2UtcGVyLXRpY2spXG4gICAgICB1cGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICByZXNvbHZlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoSU5WQUxJRF9FTEVNRU5UX0VSUk9SKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnNldE9wdGlvbnMob3B0aW9ucykudGhlbihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICghaXNEZXN0cm95ZWQgJiYgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIG9wdGlvbnMub25GaXJzdFVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgYmVmb3JlIHRoZSBmaXJzdFxuICAgIC8vIHVwZGF0ZSBjeWNsZSBydW5zLiBUaGV5IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHVwZGF0ZVxuICAgIC8vIGN5Y2xlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgbW9kaWZpZXIgYWRkcyBzb21lIHBlcnNpc3RlbnQgZGF0YSB0aGF0XG4gICAgLy8gb3RoZXIgbW9kaWZpZXJzIG5lZWQgdG8gdXNlLCBidXQgdGhlIG1vZGlmaWVyIGlzIHJ1biBhZnRlciB0aGUgZGVwZW5kZW50XG4gICAgLy8gb25lLlxuXG4gICAgZnVuY3Rpb24gcnVuTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYzLm5hbWUsXG4gICAgICAgICAgICBfcmVmMyRvcHRpb25zID0gX3JlZjMub3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBfcmVmMyRvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IF9yZWYzJG9wdGlvbnMsXG4gICAgICAgICAgICBlZmZlY3QgPSBfcmVmMy5lZmZlY3Q7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlZmZlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YXIgY2xlYW51cEZuID0gZWZmZWN0KHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB2YXIgbm9vcEZuID0gZnVuY3Rpb24gbm9vcEZuKCkge307XG5cbiAgICAgICAgICBlZmZlY3RDbGVhbnVwRm5zLnB1c2goY2xlYW51cEZuIHx8IG5vb3BGbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgICAgfSk7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuZXhwb3J0IHZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgZGV0ZWN0T3ZlcmZsb3cgfTsiLCJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlc107XG52YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcih7XG4gIGRlZmF1bHRNb2RpZmllcnM6IGRlZmF1bHRNb2RpZmllcnNcbn0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciwgcG9wcGVyR2VuZXJhdG9yLCBkZWZhdWx0TW9kaWZpZXJzLCBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiQHBvcHBlcmpzL2NvcmVcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiQHBvcHBlcmpzL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlUG9wcGVyXCJdID0gZmFjdG9yeShyZXF1aXJlKFwiQHBvcHBlcmpzL2NvcmVcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImN5dG9zY2FwZVBvcHBlclwiXSA9IGZhY3Rvcnkocm9vdFtcIlBvcHBlclwiXSk7XG59KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzhfXykge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDcpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vLyBTaW1wbGUsIGludGVybmFsIE9iamVjdC5hc3NpZ24oKSBwb2x5ZmlsbCBmb3Igb3B0aW9ucyBvYmplY3RzIGV0Yy5cblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuYXNzaWduICE9IG51bGwgPyBPYmplY3QuYXNzaWduLmJpbmQoT2JqZWN0KSA6IGZ1bmN0aW9uICh0Z3QpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHNyY3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc3Jjc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBzcmNzLmZvckVhY2goZnVuY3Rpb24gKHNyYykge1xuICAgIGlmIChzcmMgIT09IG51bGwgJiYgc3JjICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIE9iamVjdC5rZXlzKHNyYykuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICByZXR1cm4gdGd0W2tdID0gc3JjW2tdO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGd0O1xufTtcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSksXG4gICAgZ2V0Qm91bmRpbmdCb3ggPSBfcmVxdWlyZS5nZXRCb3VuZGluZ0JveDtcblxuLy8gQ3JlYXRlIGEgcG9wcGVyIHZpcnR1YWwgZWxlbWVudCAoYWthIHBvcHBlciB2MSByZWZlcmVuY2Ugb2JqZWN0KVxuLy8gaHR0cHM6Ly9wb3BwZXIuanMub3JnL2RvY3MvdjIvdmlydHVhbC1lbGVtZW50cy9cblxuXG5mdW5jdGlvbiBnZXRSZWYodGFyZ2V0LCBvcHRzKSB7XG5cbiAgLy9EZWZpbmUgcG9wcGVyIHJlZmVyZW5jZSBvYmplY3QgYW5kIGN5IHJlZmVyZW5jZSAgb2JqZWN0XG4gIHZhciByZWZPYmplY3QgPSB7XG4gICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0OiBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICByZXR1cm4gZ2V0Qm91bmRpbmdCb3godGFyZ2V0LCBvcHRzKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHJlZk9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGdldFJlZjogZ2V0UmVmIH07XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKSxcbiAgICBnZXRSZWYgPSBfcmVxdWlyZS5nZXRSZWY7XG5cbnZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpLFxuICAgIGdldENvbnRlbnQgPSBfcmVxdWlyZTIuZ2V0Q29udGVudDtcblxudmFyIHBvcHBlckRlZmF1bHRzID0ge307XG5cbnZhciBfcmVxdWlyZTMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpLFxuICAgIGNyZWF0ZVBvcHBlciA9IF9yZXF1aXJlMy5jcmVhdGVQb3BwZXI7XG5cbi8vIENyZWF0ZSBhIG5ldyBwb3BwZXIgb2JqZWN0IGZvciBhIGNvcmUgb3IgZWxlbWVudCB0YXJnZXRcblxuXG5mdW5jdGlvbiBnZXRQb3BwZXIodGFyZ2V0LCBvcHRzKSB7XG4gIHZhciByZWZPYmplY3QgPSBnZXRSZWYodGFyZ2V0LCBvcHRzKTtcbiAgdmFyIGNvbnRlbnQgPSBnZXRDb250ZW50KHRhcmdldCwgb3B0cy5jb250ZW50KTtcbiAgdmFyIHBvcHBlck9wdHMgPSBhc3NpZ24oe30sIHBvcHBlckRlZmF1bHRzLCBvcHRzLnBvcHBlcik7XG5cbiAgcmV0dXJuIGNyZWF0ZVBvcHBlcihyZWZPYmplY3QsIGNvbnRlbnQsIHBvcHBlck9wdHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgZ2V0UG9wcGVyOiBnZXRQb3BwZXIgfTtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG52YXIgX3JlcXVpcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpLFxuICAgIGdldFBvcHBlciA9IF9yZXF1aXJlLmdldFBvcHBlcjtcblxudmFyIF9yZXF1aXJlMiA9IF9fd2VicGFja19yZXF1aXJlX18oMSksXG4gICAgZ2V0UmVmID0gX3JlcXVpcmUyLmdldFJlZjtcblxuZnVuY3Rpb24gcG9wcGVyKG9wdHMpIHtcbiAgY2hlY2tGb3JXYXJuaW5nKHRoaXMpO1xuXG4gIHJldHVybiBnZXRQb3BwZXIodGhpc1swXSwgY3JlYXRlT3B0aW9uc09iamVjdCh0aGlzWzBdLCBvcHRzKSk7XG59XG5cbmZ1bmN0aW9uIHBvcHBlclJlZihvcHRzKSB7XG4gIGNoZWNrRm9yV2FybmluZyh0aGlzKTtcblxuICByZXR1cm4gZ2V0UmVmKHRoaXNbMF0sIGNyZWF0ZU9wdGlvbnNPYmplY3QodGhpc1swXSwgb3B0cykpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zT2JqZWN0KHRhcmdldCwgb3B0cykge1xuICB2YXIgcmVuZGVyZWREaW1lbnNpb25zID0gZnVuY3Rpb24gcmVuZGVyZWREaW1lbnNpb25zKGVsKSB7XG4gICAgcmV0dXJuIGVsLmlzTm9kZSgpID8geyB3OiBlbC5yZW5kZXJlZFdpZHRoKCksIGg6IGVsLnJlbmRlcmVkSGVpZ2h0KCkgfSA6IHsgdzogMywgaDogMyB9O1xuICB9O1xuICB2YXIgcmVuZGVyZWRQb3NpdGlvbiA9IGZ1bmN0aW9uIHJlbmRlcmVkUG9zaXRpb24oZWwpIHtcbiAgICByZXR1cm4gZWwuaXNOb2RlKCkgPyBnZXRSZW5kZXJlZENlbnRlcihlbCwgcmVuZGVyZWREaW1lbnNpb25zKSA6IGdldFJlbmRlcmVkTWlkcG9pbnQoZWwpO1xuICB9O1xuICB2YXIgcG9wcGVyID0ge307XG4gIHZhciBjeSA9IHRhcmdldC5jeSgpO1xuXG4gIHZhciBkZWZhdWx0cyA9IHsgcmVuZGVyZWREaW1lbnNpb25zOiByZW5kZXJlZERpbWVuc2lvbnMsIHJlbmRlcmVkUG9zaXRpb246IHJlbmRlcmVkUG9zaXRpb24sIHBvcHBlcjogcG9wcGVyLCBjeTogY3kgfTtcblxuICByZXR1cm4gYXNzaWduKHt9LCBkZWZhdWx0cywgb3B0cyk7XG59XG5cbi8vR2V0IHRoZSByZW5kZXJlZCBjZW50ZXJcbmZ1bmN0aW9uIGdldFJlbmRlcmVkQ2VudGVyKHRhcmdldCwgcmVuZGVyZWREaW1lbnNpb25zKSB7XG4gIHZhciBwb3MgPSB0YXJnZXQucmVuZGVyZWRQb3NpdGlvbigpO1xuICB2YXIgZGltZW5zaW9ucyA9IHJlbmRlcmVkRGltZW5zaW9ucyh0YXJnZXQpO1xuICB2YXIgb2Zmc2V0WCA9IGRpbWVuc2lvbnMudyAvIDI7XG4gIHZhciBvZmZzZXRZID0gZGltZW5zaW9ucy5oIC8gMjtcblxuICByZXR1cm4ge1xuICAgIHg6IHBvcy54IC0gb2Zmc2V0WCxcbiAgICB5OiBwb3MueSAtIG9mZnNldFlcbiAgfTtcbn1cblxuLy9HZXQgdGhlIHJlbmRlcmVkIHBvc2l0aW9uIG9mIHRoZSBtaWRwb2ludFxuZnVuY3Rpb24gZ2V0UmVuZGVyZWRNaWRwb2ludCh0YXJnZXQpIHtcbiAgdmFyIHAgPSB0YXJnZXQubWlkcG9pbnQoKTtcbiAgdmFyIHBhbiA9IHRhcmdldC5jeSgpLnBhbigpO1xuICB2YXIgem9vbSA9IHRhcmdldC5jeSgpLnpvb20oKTtcblxuICByZXR1cm4ge1xuICAgIHg6IHAueCAqIHpvb20gKyBwYW4ueCxcbiAgICB5OiBwLnkgKiB6b29tICsgcGFuLnlcbiAgfTtcbn1cblxuLy9XYXJuIHVzZXIgYWJvdXQgbWlzdXNlIG9mIHRoZSBwbHVnaW5cbmZ1bmN0aW9uIGNoZWNrRm9yV2FybmluZyhlbGVtZW50cykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5cbiAgLy9Qb3BwZXIuanMgU2hvdWxkIG9ubHkgYmUgdXNlZCBvbiAxIGVsZW1lbnRcbiAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICBjb25zb2xlLndhcm4oXCJQb3BwZXIuanMgRXh0ZW5zaW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgb24gb25lIGVsZW1lbnQuXCIpO1xuICAgIGNvbnNvbGUud2FybihcIklnbm9yaW5nIGFsbCBzdWJzZXF1ZW50IGVsZW1lbnRzXCIpO1xuICB9XG5cbiAgLyogZXNsaW50LWVuYWJsZSAqL1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgcG9wcGVyOiBwb3BwZXIsIHBvcHBlclJlZjogcG9wcGVyUmVmIH07XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKSxcbiAgICBnZXRQb3BwZXIgPSBfcmVxdWlyZS5nZXRQb3BwZXI7XG5cbnZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLFxuICAgIGdldFJlZiA9IF9yZXF1aXJlMi5nZXRSZWY7XG5cbmZ1bmN0aW9uIHBvcHBlcihvcHRzKSB7XG4gIHJldHVybiBnZXRQb3BwZXIodGhpcywgY3JlYXRlT3B0aW9uc09iamVjdCh0aGlzLCBvcHRzKSk7XG59XG5cbmZ1bmN0aW9uIHBvcHBlclJlZihvcHRzKSB7XG4gIHJldHVybiBnZXRSZWYodGhpcywgY3JlYXRlT3B0aW9uc09iamVjdCh0aGlzLCBvcHRzKSk7XG59XG5cbi8vQ3JlYXRlIGEgb3B0aW9ucyBvYmplY3Qgd2l0aCByZXF1aXJlZCBkZWZhdWx0IHZhbHVlc1xuZnVuY3Rpb24gY3JlYXRlT3B0aW9uc09iamVjdCh0YXJnZXQsIG9wdHMpIHtcbiAgdmFyIGRlZmF1bHRzID0ge1xuICAgIGJvdW5kaW5nQm94OiB7XG4gICAgICB0b3A6IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICBib3R0b206IDAsXG4gICAgICB3OiAzLFxuICAgICAgaDogM1xuICAgIH0sXG4gICAgcmVuZGVyZWREaW1lbnNpb25zOiBmdW5jdGlvbiByZW5kZXJlZERpbWVuc2lvbnMoKSB7XG4gICAgICByZXR1cm4geyB3OiAzLCBoOiAzIH07XG4gICAgfSxcbiAgICByZW5kZXJlZFBvc2l0aW9uOiBmdW5jdGlvbiByZW5kZXJlZFBvc2l0aW9uKCkge1xuICAgICAgcmV0dXJuIHsgeDogMCwgeTogMCB9O1xuICAgIH0sXG4gICAgcG9wcGVyOiB7fSxcbiAgICBjeTogdGFyZ2V0XG4gIH07XG5cbiAgcmV0dXJuIGFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgcG9wcGVyOiBwb3BwZXIsIHBvcHBlclJlZjogcG9wcGVyUmVmIH07XG5cbi8qKiovIH0pLFxuLyogNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0JveCh0YXJnZXQsIG9wdHMpIHtcbiAgdmFyIHJlbmRlcmVkUG9zaXRpb24gPSBvcHRzLnJlbmRlcmVkUG9zaXRpb24sXG4gICAgICBjeSA9IG9wdHMuY3ksXG4gICAgICByZW5kZXJlZERpbWVuc2lvbnMgPSBvcHRzLnJlbmRlcmVkRGltZW5zaW9ucztcblxuICB2YXIgb2Zmc2V0ID0gY3kuY29udGFpbmVyKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBkaW1zID0gcmVuZGVyZWREaW1lbnNpb25zKHRhcmdldCk7XG4gIHZhciBwb3MgPSByZW5kZXJlZFBvc2l0aW9uKHRhcmdldCk7XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IHBvcy55ICsgb2Zmc2V0LnRvcCxcbiAgICBsZWZ0OiBwb3MueCArIG9mZnNldC5sZWZ0LFxuICAgIHJpZ2h0OiBwb3MueCArIGRpbXMudyArIG9mZnNldC5sZWZ0LFxuICAgIGJvdHRvbTogcG9zLnkgKyBkaW1zLmggKyBvZmZzZXQudG9wLFxuICAgIHdpZHRoOiBkaW1zLncsXG4gICAgaGVpZ2h0OiBkaW1zLmhcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGdldEJvdW5kaW5nQm94OiBnZXRCb3VuZGluZ0JveCB9O1xuXG4vKioqLyB9KSxcbi8qIDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gZ2V0Q29udGVudCh0YXJnZXQsIGNvbnRlbnQpIHtcbiAgdmFyIGNvbnRlbnRPYmplY3QgPSBudWxsO1xuXG4gIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgLy9FeGVjdXRlIGZ1bmN0aW9uIGlmIHVzZXIgb3B0ZWQgZm9yIGEgZHlhbmFtaWMgdGFyZ2V0XG4gICAgY29udGVudE9iamVjdCA9IGNvbnRlbnQodGFyZ2V0KTtcbiAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAvL1RhcmdldCBvcHRpb24gaXMgYW4gSFRNTCBlbGVtZW50XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuIG5vdCBjcmVhdGUgcG9wcGVyIGZyb20gJ3RhcmdldCcgd2l0aCB1bmtub3duIHR5cGVcIik7XG4gIH1cblxuICAvLyBDaGVjayB2YWxpZGl0eSBvZiBwYXJzZWQgdGFyZ2V0XG4gIGlmIChjb250ZW50T2JqZWN0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gJ3RhcmdldCcgc3BlY2lmaWVkIHRvIGNyZWF0ZSBwb3BwZXJcIik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbnRlbnRPYmplY3Q7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGdldENvbnRlbnQ6IGdldENvbnRlbnQgfTtcblxuLyoqKi8gfSksXG4vKiA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qIGdsb2JhbCBjeXRvc2NhcGUgKi9cblxudmFyIGNvcmVJbXBsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbnZhciBjb2xsZWN0aW9uSW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbi8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbnZhciByZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGN5dG9zY2FwZSkge1xuICBpZiAoIWN5dG9zY2FwZSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBjYW4ndCByZWdpc3RlciBpZiBjeXRvc2NhcGUgdW5zcGVjaWZpZWRcblxuICAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xuICBjeXRvc2NhcGUoJ2NvcmUnLCAncG9wcGVyJywgY29yZUltcGwucG9wcGVyKTsgLy9DeXRvc2NhcGUgQ29yZVxuICBjeXRvc2NhcGUoJ2NvbGxlY3Rpb24nLCAncG9wcGVyJywgY29sbGVjdGlvbkltcGwucG9wcGVyKTsgLy9DeXRvc2NhcGUgQ29sbGVjdGlvbnNcbiAgY3l0b3NjYXBlKCdjb3JlJywgJ3BvcHBlclJlZicsIGNvcmVJbXBsLnBvcHBlclJlZik7IC8vQ3l0b3NjYXBlIENvcmUgZm9yIFJlZmVyZW5jZXNcbiAgY3l0b3NjYXBlKCdjb2xsZWN0aW9uJywgJ3BvcHBlclJlZicsIGNvbGxlY3Rpb25JbXBsLnBvcHBlclJlZik7IC8vQ3l0b3NjYXBlIENvbGxlY3Rpb25zIGZvciBSZWZlcmVuY2VzXG59O1xuXG5pZiAodHlwZW9mIGN5dG9zY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZXhwb3NlIHRvIGdsb2JhbCBjeXRvc2NhcGUgKGkuZS4gd2luZG93LmN5dG9zY2FwZSlcbiAgcmVnaXN0ZXIoY3l0b3NjYXBlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWdpc3RlcjtcblxuLyoqKi8gfSksXG4vKiA4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV84X187XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBQb3dlckVkZ2UgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gUG93ZXJFZGdlKHNvdXJjZSwgdGFyZ2V0LCB0eXBlKSB7XHJcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIH1cclxuICAgIHJldHVybiBQb3dlckVkZ2U7XHJcbn0oKSk7XHJcbmV4cG9ydHMuUG93ZXJFZGdlID0gUG93ZXJFZGdlO1xyXG52YXIgQ29uZmlndXJhdGlvbiA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBDb25maWd1cmF0aW9uKG4sIGVkZ2VzLCBsaW5rQWNjZXNzb3IsIHJvb3RHcm91cCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5saW5rQWNjZXNzb3IgPSBsaW5rQWNjZXNzb3I7XHJcbiAgICAgICAgdGhpcy5tb2R1bGVzID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgIHRoaXMucm9vdHMgPSBbXTtcclxuICAgICAgICBpZiAocm9vdEdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdE1vZHVsZXNGcm9tR3JvdXAocm9vdEdyb3VwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChuZXcgTW9kdWxlU2V0KCkpO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSlcclxuICAgICAgICAgICAgICAgIHRoaXMucm9vdHNbMF0uYWRkKHRoaXMubW9kdWxlc1tpXSA9IG5ldyBNb2R1bGUoaSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlIgPSBlZGdlcy5sZW5ndGg7XHJcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICB2YXIgcyA9IF90aGlzLm1vZHVsZXNbbGlua0FjY2Vzc29yLmdldFNvdXJjZUluZGV4KGUpXSwgdCA9IF90aGlzLm1vZHVsZXNbbGlua0FjY2Vzc29yLmdldFRhcmdldEluZGV4KGUpXSwgdHlwZSA9IGxpbmtBY2Nlc3Nvci5nZXRUeXBlKGUpO1xyXG4gICAgICAgICAgICBzLm91dGdvaW5nLmFkZCh0eXBlLCB0KTtcclxuICAgICAgICAgICAgdC5pbmNvbWluZy5hZGQodHlwZSwgcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBDb25maWd1cmF0aW9uLnByb3RvdHlwZS5pbml0TW9kdWxlc0Zyb21Hcm91cCA9IGZ1bmN0aW9uIChncm91cCkge1xyXG4gICAgICAgIHZhciBtb2R1bGVTZXQgPSBuZXcgTW9kdWxlU2V0KCk7XHJcbiAgICAgICAgdGhpcy5yb290cy5wdXNoKG1vZHVsZVNldCk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cC5sZWF2ZXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgdmFyIG5vZGUgPSBncm91cC5sZWF2ZXNbaV07XHJcbiAgICAgICAgICAgIHZhciBtb2R1bGUgPSBuZXcgTW9kdWxlKG5vZGUuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZHVsZXNbbm9kZS5pZF0gPSBtb2R1bGU7XHJcbiAgICAgICAgICAgIG1vZHVsZVNldC5hZGQobW9kdWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGdyb3VwLmdyb3Vwcykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGdyb3VwLmdyb3Vwcy5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gZ3JvdXAuZ3JvdXBzW2pdO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRlZmluaXRpb24gPSB7fTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gY2hpbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgIT09IFwibGVhdmVzXCIgJiYgcHJvcCAhPT0gXCJncm91cHNcIiAmJiBjaGlsZC5oYXNPd25Qcm9wZXJ0eShwcm9wKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbltwcm9wXSA9IGNoaWxkW3Byb3BdO1xyXG4gICAgICAgICAgICAgICAgbW9kdWxlU2V0LmFkZChuZXcgTW9kdWxlKC0xIC0gaiwgbmV3IExpbmtTZXRzKCksIG5ldyBMaW5rU2V0cygpLCB0aGlzLmluaXRNb2R1bGVzRnJvbUdyb3VwKGNoaWxkKSwgZGVmaW5pdGlvbikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtb2R1bGVTZXQ7XHJcbiAgICB9O1xyXG4gICAgQ29uZmlndXJhdGlvbi5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbiAoYSwgYiwgaykge1xyXG4gICAgICAgIGlmIChrID09PSB2b2lkIDApIHsgayA9IDA7IH1cclxuICAgICAgICB2YXIgaW5JbnQgPSBhLmluY29taW5nLmludGVyc2VjdGlvbihiLmluY29taW5nKSwgb3V0SW50ID0gYS5vdXRnb2luZy5pbnRlcnNlY3Rpb24oYi5vdXRnb2luZyk7XHJcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gbmV3IE1vZHVsZVNldCgpO1xyXG4gICAgICAgIGNoaWxkcmVuLmFkZChhKTtcclxuICAgICAgICBjaGlsZHJlbi5hZGQoYik7XHJcbiAgICAgICAgdmFyIG0gPSBuZXcgTW9kdWxlKHRoaXMubW9kdWxlcy5sZW5ndGgsIG91dEludCwgaW5JbnQsIGNoaWxkcmVuKTtcclxuICAgICAgICB0aGlzLm1vZHVsZXMucHVzaChtKTtcclxuICAgICAgICB2YXIgdXBkYXRlID0gZnVuY3Rpb24gKHMsIGksIG8pIHtcclxuICAgICAgICAgICAgcy5mb3JBbGwoZnVuY3Rpb24gKG1zLCBsaW5rdHlwZSkge1xyXG4gICAgICAgICAgICAgICAgbXMuZm9yQWxsKGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5scyA9IG5baV07XHJcbiAgICAgICAgICAgICAgICAgICAgbmxzLmFkZChsaW5rdHlwZSwgbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmxzLnJlbW92ZShsaW5rdHlwZSwgYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmxzLnJlbW92ZShsaW5rdHlwZSwgYik7XHJcbiAgICAgICAgICAgICAgICAgICAgYVtvXS5yZW1vdmUobGlua3R5cGUsIG4pO1xyXG4gICAgICAgICAgICAgICAgICAgIGJbb10ucmVtb3ZlKGxpbmt0eXBlLCBuKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHVwZGF0ZShvdXRJbnQsIFwiaW5jb21pbmdcIiwgXCJvdXRnb2luZ1wiKTtcclxuICAgICAgICB1cGRhdGUoaW5JbnQsIFwib3V0Z29pbmdcIiwgXCJpbmNvbWluZ1wiKTtcclxuICAgICAgICB0aGlzLlIgLT0gaW5JbnQuY291bnQoKSArIG91dEludC5jb3VudCgpO1xyXG4gICAgICAgIHRoaXMucm9vdHNba10ucmVtb3ZlKGEpO1xyXG4gICAgICAgIHRoaXMucm9vdHNba10ucmVtb3ZlKGIpO1xyXG4gICAgICAgIHRoaXMucm9vdHNba10uYWRkKG0pO1xyXG4gICAgICAgIHJldHVybiBtO1xyXG4gICAgfTtcclxuICAgIENvbmZpZ3VyYXRpb24ucHJvdG90eXBlLnJvb3RNZXJnZXMgPSBmdW5jdGlvbiAoaykge1xyXG4gICAgICAgIGlmIChrID09PSB2b2lkIDApIHsgayA9IDA7IH1cclxuICAgICAgICB2YXIgcnMgPSB0aGlzLnJvb3RzW2tdLm1vZHVsZXMoKTtcclxuICAgICAgICB2YXIgbiA9IHJzLmxlbmd0aDtcclxuICAgICAgICB2YXIgbWVyZ2VzID0gbmV3IEFycmF5KG4gKiAobiAtIDEpKTtcclxuICAgICAgICB2YXIgY3RyID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgaV8gPSBuIC0gMTsgaSA8IGlfOyArK2kpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyBqIDwgbjsgKytqKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYSA9IHJzW2ldLCBiID0gcnNbal07XHJcbiAgICAgICAgICAgICAgICBtZXJnZXNbY3RyXSA9IHsgaWQ6IGN0ciwgbkVkZ2VzOiB0aGlzLm5FZGdlcyhhLCBiKSwgYTogYSwgYjogYiB9O1xyXG4gICAgICAgICAgICAgICAgY3RyKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1lcmdlcztcclxuICAgIH07XHJcbiAgICBDb25maWd1cmF0aW9uLnByb3RvdHlwZS5ncmVlZHlNZXJnZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucm9vdHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucm9vdHNbaV0ubW9kdWxlcygpLmxlbmd0aCA8IDIpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgdmFyIG1zID0gdGhpcy5yb290TWVyZ2VzKGkpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEubkVkZ2VzID09IGIubkVkZ2VzID8gYS5pZCAtIGIuaWQgOiBhLm5FZGdlcyAtIGIubkVkZ2VzOyB9KTtcclxuICAgICAgICAgICAgdmFyIG0gPSBtc1swXTtcclxuICAgICAgICAgICAgaWYgKG0ubkVkZ2VzID49IHRoaXMuUilcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB0aGlzLm1lcmdlKG0uYSwgbS5iLCBpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIENvbmZpZ3VyYXRpb24ucHJvdG90eXBlLm5FZGdlcyA9IGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICAgICAgdmFyIGluSW50ID0gYS5pbmNvbWluZy5pbnRlcnNlY3Rpb24oYi5pbmNvbWluZyksIG91dEludCA9IGEub3V0Z29pbmcuaW50ZXJzZWN0aW9uKGIub3V0Z29pbmcpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLlIgLSBpbkludC5jb3VudCgpIC0gb3V0SW50LmNvdW50KCk7XHJcbiAgICB9O1xyXG4gICAgQ29uZmlndXJhdGlvbi5wcm90b3R5cGUuZ2V0R3JvdXBIaWVyYXJjaHkgPSBmdW5jdGlvbiAocmV0YXJnZXRlZEVkZ2VzKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgZ3JvdXBzID0gW107XHJcbiAgICAgICAgdmFyIHJvb3QgPSB7fTtcclxuICAgICAgICB0b0dyb3Vwcyh0aGlzLnJvb3RzWzBdLCByb290LCBncm91cHMpO1xyXG4gICAgICAgIHZhciBlcyA9IHRoaXMuYWxsRWRnZXMoKTtcclxuICAgICAgICBlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIHZhciBhID0gX3RoaXMubW9kdWxlc1tlLnNvdXJjZV07XHJcbiAgICAgICAgICAgIHZhciBiID0gX3RoaXMubW9kdWxlc1tlLnRhcmdldF07XHJcbiAgICAgICAgICAgIHJldGFyZ2V0ZWRFZGdlcy5wdXNoKG5ldyBQb3dlckVkZ2UodHlwZW9mIGEuZ2lkID09PSBcInVuZGVmaW5lZFwiID8gZS5zb3VyY2UgOiBncm91cHNbYS5naWRdLCB0eXBlb2YgYi5naWQgPT09IFwidW5kZWZpbmVkXCIgPyBlLnRhcmdldCA6IGdyb3Vwc1tiLmdpZF0sIGUudHlwZSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBncm91cHM7XHJcbiAgICB9O1xyXG4gICAgQ29uZmlndXJhdGlvbi5wcm90b3R5cGUuYWxsRWRnZXMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGVzID0gW107XHJcbiAgICAgICAgQ29uZmlndXJhdGlvbi5nZXRFZGdlcyh0aGlzLnJvb3RzWzBdLCBlcyk7XHJcbiAgICAgICAgcmV0dXJuIGVzO1xyXG4gICAgfTtcclxuICAgIENvbmZpZ3VyYXRpb24uZ2V0RWRnZXMgPSBmdW5jdGlvbiAobW9kdWxlcywgZXMpIHtcclxuICAgICAgICBtb2R1bGVzLmZvckFsbChmdW5jdGlvbiAobSkge1xyXG4gICAgICAgICAgICBtLmdldEVkZ2VzKGVzKTtcclxuICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5nZXRFZGdlcyhtLmNoaWxkcmVuLCBlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb247XHJcbn0oKSk7XHJcbmV4cG9ydHMuQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb247XHJcbmZ1bmN0aW9uIHRvR3JvdXBzKG1vZHVsZXMsIGdyb3VwLCBncm91cHMpIHtcclxuICAgIG1vZHVsZXMuZm9yQWxsKGZ1bmN0aW9uIChtKSB7XHJcbiAgICAgICAgaWYgKG0uaXNMZWFmKCkpIHtcclxuICAgICAgICAgICAgaWYgKCFncm91cC5sZWF2ZXMpXHJcbiAgICAgICAgICAgICAgICBncm91cC5sZWF2ZXMgPSBbXTtcclxuICAgICAgICAgICAgZ3JvdXAubGVhdmVzLnB1c2gobS5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgZyA9IGdyb3VwO1xyXG4gICAgICAgICAgICBtLmdpZCA9IGdyb3Vwcy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGlmICghbS5pc0lzbGFuZCgpIHx8IG0uaXNQcmVkZWZpbmVkKCkpIHtcclxuICAgICAgICAgICAgICAgIGcgPSB7IGlkOiBtLmdpZCB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKG0uaXNQcmVkZWZpbmVkKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBtLmRlZmluaXRpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdbcHJvcF0gPSBtLmRlZmluaXRpb25bcHJvcF07XHJcbiAgICAgICAgICAgICAgICBpZiAoIWdyb3VwLmdyb3VwcylcclxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncm91cHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGdyb3VwLmdyb3Vwcy5wdXNoKG0uZ2lkKTtcclxuICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKGcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvR3JvdXBzKG0uY2hpbGRyZW4sIGcsIGdyb3Vwcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxudmFyIE1vZHVsZSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBNb2R1bGUoaWQsIG91dGdvaW5nLCBpbmNvbWluZywgY2hpbGRyZW4sIGRlZmluaXRpb24pIHtcclxuICAgICAgICBpZiAob3V0Z29pbmcgPT09IHZvaWQgMCkgeyBvdXRnb2luZyA9IG5ldyBMaW5rU2V0cygpOyB9XHJcbiAgICAgICAgaWYgKGluY29taW5nID09PSB2b2lkIDApIHsgaW5jb21pbmcgPSBuZXcgTGlua1NldHMoKTsgfVxyXG4gICAgICAgIGlmIChjaGlsZHJlbiA9PT0gdm9pZCAwKSB7IGNoaWxkcmVuID0gbmV3IE1vZHVsZVNldCgpOyB9XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMub3V0Z29pbmcgPSBvdXRnb2luZztcclxuICAgICAgICB0aGlzLmluY29taW5nID0gaW5jb21pbmc7XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XHJcbiAgICB9XHJcbiAgICBNb2R1bGUucHJvdG90eXBlLmdldEVkZ2VzID0gZnVuY3Rpb24gKGVzKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB0aGlzLm91dGdvaW5nLmZvckFsbChmdW5jdGlvbiAobXMsIGVkZ2V0eXBlKSB7XHJcbiAgICAgICAgICAgIG1zLmZvckFsbChmdW5jdGlvbiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBlcy5wdXNoKG5ldyBQb3dlckVkZ2UoX3RoaXMuaWQsIHRhcmdldC5pZCwgZWRnZXR5cGUpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlLnByb3RvdHlwZS5pc0xlYWYgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uY291bnQoKSA9PT0gMDtcclxuICAgIH07XHJcbiAgICBNb2R1bGUucHJvdG90eXBlLmlzSXNsYW5kID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm91dGdvaW5nLmNvdW50KCkgPT09IDAgJiYgdGhpcy5pbmNvbWluZy5jb3VudCgpID09PSAwO1xyXG4gICAgfTtcclxuICAgIE1vZHVsZS5wcm90b3R5cGUuaXNQcmVkZWZpbmVkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5kZWZpbml0aW9uICE9PSBcInVuZGVmaW5lZFwiO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBNb2R1bGU7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTW9kdWxlID0gTW9kdWxlO1xyXG5mdW5jdGlvbiBpbnRlcnNlY3Rpb24obSwgbikge1xyXG4gICAgdmFyIGkgPSB7fTtcclxuICAgIGZvciAodmFyIHYgaW4gbSlcclxuICAgICAgICBpZiAodiBpbiBuKVxyXG4gICAgICAgICAgICBpW3ZdID0gbVt2XTtcclxuICAgIHJldHVybiBpO1xyXG59XHJcbnZhciBNb2R1bGVTZXQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTW9kdWxlU2V0KCkge1xyXG4gICAgICAgIHRoaXMudGFibGUgPSB7fTtcclxuICAgIH1cclxuICAgIE1vZHVsZVNldC5wcm90b3R5cGUuY291bnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudGFibGUpLmxlbmd0aDtcclxuICAgIH07XHJcbiAgICBNb2R1bGVTZXQucHJvdG90eXBlLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChvdGhlcikge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTW9kdWxlU2V0KCk7XHJcbiAgICAgICAgcmVzdWx0LnRhYmxlID0gaW50ZXJzZWN0aW9uKHRoaXMudGFibGUsIG90aGVyLnRhYmxlKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIE1vZHVsZVNldC5wcm90b3R5cGUuaW50ZXJzZWN0aW9uQ291bnQgPSBmdW5jdGlvbiAob3RoZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnNlY3Rpb24ob3RoZXIpLmNvdW50KCk7XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlU2V0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgICAgIHJldHVybiBpZCBpbiB0aGlzLnRhYmxlO1xyXG4gICAgfTtcclxuICAgIE1vZHVsZVNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG0pIHtcclxuICAgICAgICB0aGlzLnRhYmxlW20uaWRdID0gbTtcclxuICAgIH07XHJcbiAgICBNb2R1bGVTZXQucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChtKSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMudGFibGVbbS5pZF07XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlU2V0LnByb3RvdHlwZS5mb3JBbGwgPSBmdW5jdGlvbiAoZikge1xyXG4gICAgICAgIGZvciAodmFyIG1pZCBpbiB0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIGYodGhpcy50YWJsZVttaWRdKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTW9kdWxlU2V0LnByb3RvdHlwZS5tb2R1bGVzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB2cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZm9yQWxsKGZ1bmN0aW9uIChtKSB7XHJcbiAgICAgICAgICAgIGlmICghbS5pc1ByZWRlZmluZWQoKSlcclxuICAgICAgICAgICAgICAgIHZzLnB1c2gobSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHZzO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBNb2R1bGVTZXQ7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTW9kdWxlU2V0ID0gTW9kdWxlU2V0O1xyXG52YXIgTGlua1NldHMgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTGlua1NldHMoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRzID0ge307XHJcbiAgICAgICAgdGhpcy5uID0gMDtcclxuICAgIH1cclxuICAgIExpbmtTZXRzLnByb3RvdHlwZS5jb3VudCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uO1xyXG4gICAgfTtcclxuICAgIExpbmtTZXRzLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZvckFsbE1vZHVsZXMoZnVuY3Rpb24gKG0pIHtcclxuICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgbS5pZCA9PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChsaW5rdHlwZSwgbSkge1xyXG4gICAgICAgIHZhciBzID0gbGlua3R5cGUgaW4gdGhpcy5zZXRzID8gdGhpcy5zZXRzW2xpbmt0eXBlXSA6IHRoaXMuc2V0c1tsaW5rdHlwZV0gPSBuZXcgTW9kdWxlU2V0KCk7XHJcbiAgICAgICAgcy5hZGQobSk7XHJcbiAgICAgICAgKyt0aGlzLm47XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChsaW5rdHlwZSwgbSkge1xyXG4gICAgICAgIHZhciBtcyA9IHRoaXMuc2V0c1tsaW5rdHlwZV07XHJcbiAgICAgICAgbXMucmVtb3ZlKG0pO1xyXG4gICAgICAgIGlmIChtcy5jb3VudCgpID09PSAwKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnNldHNbbGlua3R5cGVdO1xyXG4gICAgICAgIH1cclxuICAgICAgICAtLXRoaXMubjtcclxuICAgIH07XHJcbiAgICBMaW5rU2V0cy5wcm90b3R5cGUuZm9yQWxsID0gZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICBmb3IgKHZhciBsaW5rdHlwZSBpbiB0aGlzLnNldHMpIHtcclxuICAgICAgICAgICAgZih0aGlzLnNldHNbbGlua3R5cGVdLCBOdW1iZXIobGlua3R5cGUpKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLmZvckFsbE1vZHVsZXMgPSBmdW5jdGlvbiAoZikge1xyXG4gICAgICAgIHRoaXMuZm9yQWxsKGZ1bmN0aW9uIChtcywgbHQpIHsgcmV0dXJuIG1zLmZvckFsbChmKTsgfSk7XHJcbiAgICB9O1xyXG4gICAgTGlua1NldHMucHJvdG90eXBlLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChvdGhlcikge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGlua1NldHMoKTtcclxuICAgICAgICB0aGlzLmZvckFsbChmdW5jdGlvbiAobXMsIGx0KSB7XHJcbiAgICAgICAgICAgIGlmIChsdCBpbiBvdGhlci5zZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaSA9IG1zLmludGVyc2VjdGlvbihvdGhlci5zZXRzW2x0XSksIG4gPSBpLmNvdW50KCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobiA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0c1tsdF0gPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uICs9IG47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBMaW5rU2V0cztcclxufSgpKTtcclxuZXhwb3J0cy5MaW5rU2V0cyA9IExpbmtTZXRzO1xyXG5mdW5jdGlvbiBpbnRlcnNlY3Rpb25Db3VudChtLCBuKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoaW50ZXJzZWN0aW9uKG0sIG4pKS5sZW5ndGg7XHJcbn1cclxuZnVuY3Rpb24gZ2V0R3JvdXBzKG5vZGVzLCBsaW5rcywgbGEsIHJvb3RHcm91cCkge1xyXG4gICAgdmFyIG4gPSBub2Rlcy5sZW5ndGgsIGMgPSBuZXcgQ29uZmlndXJhdGlvbihuLCBsaW5rcywgbGEsIHJvb3RHcm91cCk7XHJcbiAgICB3aGlsZSAoYy5ncmVlZHlNZXJnZSgpKVxyXG4gICAgICAgIDtcclxuICAgIHZhciBwb3dlckVkZ2VzID0gW107XHJcbiAgICB2YXIgZyA9IGMuZ2V0R3JvdXBIaWVyYXJjaHkocG93ZXJFZGdlcyk7XHJcbiAgICBwb3dlckVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uIChlbmQpIHtcclxuICAgICAgICAgICAgdmFyIGcgPSBlW2VuZF07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZyA9PSBcIm51bWJlclwiKVxyXG4gICAgICAgICAgICAgICAgZVtlbmRdID0gbm9kZXNbZ107XHJcbiAgICAgICAgfTtcclxuICAgICAgICBmKFwic291cmNlXCIpO1xyXG4gICAgICAgIGYoXCJ0YXJnZXRcIik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7IGdyb3VwczogZywgcG93ZXJFZGdlczogcG93ZXJFZGdlcyB9O1xyXG59XHJcbmV4cG9ydHMuZ2V0R3JvdXBzID0gZ2V0R3JvdXBzO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljRzkzWlhKbmNtRndhQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDFkbFlrTnZiR0V2YzNKakwzQnZkMlZ5WjNKaGNHZ3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGUFNUdEpRVU5KTEcxQ1FVTlhMRTFCUVZjc1JVRkRXQ3hOUVVGWExFVkJRMWdzU1VGQldUdFJRVVphTEZkQlFVMHNSMEZCVGl4TlFVRk5MRU5CUVVzN1VVRkRXQ3hYUVVGTkxFZEJRVTRzVFVGQlRTeERRVUZMTzFGQlExZ3NVMEZCU1N4SFFVRktMRWxCUVVrc1EwRkJVVHRKUVVGSkxFTkJRVU03U1VGRGFFTXNaMEpCUVVNN1FVRkJSQ3hEUVVGRExFRkJURVFzU1VGTFF6dEJRVXhaTERoQ1FVRlRPMEZCVDNSQ08wbEJVMGtzZFVKQlFWa3NRMEZCVXl4RlFVRkZMRXRCUVdFc1JVRkJWU3haUVVGdlF5eEZRVUZGTEZOQlFXbENPMUZCUVhKSExHbENRV3RDUXp0UlFXeENOa01zYVVKQlFWa3NSMEZCV2l4WlFVRlpMRU5CUVhkQ08xRkJRemxGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVJc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEYUVJc1NVRkJTU3hUUVVGVExFVkJRVVU3V1VGRFdDeEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdVMEZEZUVNN1lVRkJUVHRaUVVOSUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1UwRkJVeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU5xUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJRenRuUWtGRGRFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRekZFTzFGQlEwUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlEzUkNMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETzFsQlExZ3NTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMmhFTEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRhRVFzU1VGQlNTeEhRVUZITEZsQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGJrTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0xUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlR5dzBRMEZCYjBJc1IwRkJOVUlzVlVGQk5rSXNTMEZCU3p0UlFVTTVRaXhKUVVGSkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEZOQlFWTXNSVUZCUlN4RFFVRkRPMUZCUTJoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRek5DTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU14UXl4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpOQ0xFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU5xUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNN1dVRkRMMElzVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRUUVVONlFqdFJRVU5FTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVOa0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGRE1VTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkZOVUlzU1VGQlNTeFZRVUZWTEVkQlFVY3NSVUZCUlN4RFFVRkRPMmRDUVVOd1FpeExRVUZMTEVsQlFVa3NTVUZCU1N4SlFVRkpMRXRCUVVzN2IwSkJRMnhDTEVsQlFVa3NTVUZCU1N4TFFVRkxMRkZCUVZFc1NVRkJTU3hKUVVGSkxFdEJRVXNzVVVGQlVTeEpRVUZKTEV0QlFVc3NRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRE8zZENRVU53UlN4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVWMlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRkZCUVZFc1JVRkJSU3hGUVVGRkxFbEJRVWtzVVVGQlVTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGFrZzdVMEZEU2p0UlFVTkVMRTlCUVU4c1UwRkJVeXhEUVVGRE8wbEJRM0JDTEVOQlFVTTdTVUZIUml3MlFrRkJTeXhIUVVGTUxGVkJRVTBzUTBGQlV5eEZRVUZGTEVOQlFWTXNSVUZCUlN4RFFVRmhPMUZCUVdJc2EwSkJRVUVzUlVGQlFTeExRVUZoTzFGQlEzSkRMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGRE0wTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRSUVVOcVJDeEpRVUZKTEZGQlFWRXNSMEZCUnl4SlFVRkpMRk5CUVZNc1JVRkJSU3hEUVVGRE8xRkJReTlDTEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGFFSXNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUTJwRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NUVUZCVFN4SFFVRkhMRlZCUVVNc1EwRkJWeXhGUVVGRkxFTkJRVk1zUlVGQlJTeERRVUZUTzFsQlF6TkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlF5eEZRVUZGTEVWQlFVVXNVVUZCVVR0blFrRkRiRUlzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkJMRU5CUVVNN2IwSkJRMUFzU1VGQlNTeEhRVUZITEVkQlFXRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU42UWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRja0lzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzaENMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOaUxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTXhRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZWtNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRFVDeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTlFMRU5CUVVNc1EwRkJRenRSUVVOR0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNWVUZCVlN4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRM1pETEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFJRVU42UXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU55UWl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRlR5eHJRMEZCVlN4SFFVRnNRaXhWUVVGdFFpeERRVUZoTzFGQlFXSXNhMEpCUVVFc1JVRkJRU3hMUVVGaE8xRkJUVFZDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1VVRkRha01zU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOc1FpeEpRVUZKTEUxQlFVMHNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1F5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRXaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM0pETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU14UWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZWtJc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEycEZMRWRCUVVjc1JVRkJSU3hEUVVGRE8yRkJRMVE3VTBGRFNqdFJRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeHRRMEZCVnl4SFFVRllPMUZCUTBrc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUlhoRExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXp0blFrRkJSU3hUUVVGVE8xbEJSMnBFTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlN5eFBRVUZCTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFYaEVMRU5CUVhkRUxFTkJRVU1zUTBGQlF6dFpRVU55Unl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEWkN4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUVVVc1UwRkJVenRaUVVOcVF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVONFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTm1PMGxCUTB3c1EwRkJRenRKUVVWUExEaENRVUZOTEVkQlFXUXNWVUZCWlN4RFFVRlRMRVZCUVVVc1EwRkJVenRSUVVNdlFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUXpORExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEYWtRc1QwRkJUeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1IwRkJSeXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdTVUZEYmtRc1EwRkJRenRKUVVWRUxIbERRVUZwUWl4SFFVRnFRaXhWUVVGclFpeGxRVUUwUWp0UlFVRTVReXhwUWtGbFF6dFJRV1JITEVsQlFVa3NUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOb1FpeEpRVUZKTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRaQ3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZEVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMUZCUTNwQ0xFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTFJc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGREwwSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRMMElzWlVGQlpTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRk5CUVZNc1EwRkRPVUlzVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZEZGtRc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGRGRrUXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkRWQ3hEUVVGRExFTkJRVU03VVVGRFVDeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4blEwRkJVU3hIUVVGU08xRkJRMGtzU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTFvc1lVRkJZU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlF6RkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZOTEhOQ1FVRlJMRWRCUVdZc1ZVRkJaMElzVDBGQmEwSXNSVUZCUlN4RlFVRmxPMUZCUXk5RExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTFvc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVTm1MR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVNelF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTlFMRU5CUVVNN1NVRkRUQ3h2UWtGQlF6dEJRVUZFTEVOQlFVTXNRVUY0U2tRc1NVRjNTa003UVVGNFNsa3NjME5CUVdFN1FVRXdTakZDTEZOQlFWTXNVVUZCVVN4RFFVRkRMRTlCUVd0Q0xFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMDdTVUZETDBNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZCTEVOQlFVTTdVVUZEV2l4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJUdFpRVU5hTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUVHRuUWtGQlJTeExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVOeVF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVMEZETTBJN1lVRkJUVHRaUVVOSUxFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0WlFVTmtMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0WlFVTjBRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhaUVVGWkxFVkJRVVVzUlVGQlJUdG5Ra0ZEYmtNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRuUWtGRGJFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1dVRkJXU3hGUVVGRk8yOUNRVVZvUWl4TFFVRkxMRWxCUVVrc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eFZRVUZWTzNkQ1FVTjZRaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTzI5Q1FVRkZMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlJTeERRVUZETzJkQ1FVTnlReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzcENMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYkVJN1dVRkRSQ3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VTBGRGJrTTdTVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOUUxFTkJRVU03UVVGRlJEdEpRVWRKTEdkQ1FVTlhMRVZCUVZVc1JVRkRWaXhSUVVGdFF5eEZRVU51UXl4UlFVRnRReXhGUVVOdVF5eFJRVUZ4UXl4RlFVTnlReXhWUVVGblFqdFJRVWhvUWl4NVFrRkJRU3hGUVVGQkxHVkJRWGxDTEZGQlFWRXNSVUZCUlR0UlFVTnVReXg1UWtGQlFTeEZRVUZCTEdWQlFYbENMRkZCUVZFc1JVRkJSVHRSUVVOdVF5eDVRa0ZCUVN4RlFVRkJMR1ZCUVRCQ0xGTkJRVk1zUlVGQlJUdFJRVWh5UXl4UFFVRkZMRWRCUVVZc1JVRkJSU3hEUVVGUk8xRkJRMVlzWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCTWtJN1VVRkRia01zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCTWtJN1VVRkRia01zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCTmtJN1VVRkRja01zWlVGQlZTeEhRVUZXTEZWQlFWVXNRMEZCVFR0SlFVRkpMRU5CUVVNN1NVRkZhRU1zZVVKQlFWRXNSMEZCVWl4VlFVRlRMRVZCUVdVN1VVRkJlRUlzYVVKQlRVTTdVVUZNUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJPMWxCUXpsQ0xFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUVN4TlFVRk5PMmRDUVVOYUxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VFFVRlRMRU5CUVVNc1MwRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRVQ3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5RTEVOQlFVTTdTVUZGUkN4MVFrRkJUU3hIUVVGT08xRkJRMGtzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU4yUXl4RFFVRkRPMGxCUlVRc2VVSkJRVkVzUjBGQlVqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdTVUZEZEVVc1EwRkJRenRKUVVWRUxEWkNRVUZaTEVkQlFWbzdVVUZEU1N4UFFVRlBMRTlCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUzBGQlN5eFhRVUZYTEVOQlFVTTdTVUZEYkVRc1EwRkJRenRKUVVOTUxHRkJRVU03UVVGQlJDeERRVUZETEVGQk4wSkVMRWxCTmtKRE8wRkJOMEpaTEhkQ1FVRk5PMEZCSzBKdVFpeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRk5MRVZCUVVVc1EwRkJUVHRKUVVOb1F5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRXQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdVVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU42UXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOaUxFTkJRVU03UVVGRlJEdEpRVUZCTzFGQlEwa3NWVUZCU3l4SFFVRlJMRVZCUVVVc1EwRkJRenRKUVd0RGNFSXNRMEZCUXp0SlFXcERSeXg1UWtGQlN5eEhRVUZNTzFGQlEwa3NUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRNVU1zUTBGQlF6dEpRVU5FTEdkRFFVRlpMRWRCUVZvc1ZVRkJZU3hMUVVGblFqdFJRVU42UWl4SlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxGTkJRVk1zUlVGQlJTeERRVUZETzFGQlF6ZENMRTFCUVUwc1EwRkJReXhMUVVGTExFZEJRVWNzV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzSkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZEUkN4eFEwRkJhVUlzUjBGQmFrSXNWVUZCYTBJc1MwRkJaMEk3VVVGRE9VSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMGxCUXpWRExFTkJRVU03U1VGRFJDdzBRa0ZCVVN4SFFVRlNMRlZCUVZNc1JVRkJWVHRSUVVObUxFOUJRVThzUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1NVRkROVUlzUTBGQlF6dEpRVU5FTEhWQ1FVRkhMRWRCUVVnc1ZVRkJTU3hEUVVGVE8xRkJRMVFzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkRSQ3d3UWtGQlRTeEhRVUZPTEZWQlFVOHNRMEZCVXp0UlFVTmFMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkROVUlzUTBGQlF6dEpRVU5FTERCQ1FVRk5MRWRCUVU0c1ZVRkJUeXhEUVVGelFqdFJRVU42UWl4TFFVRkxMRWxCUVVrc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZEZUVJc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOMFFqdEpRVU5NTEVOQlFVTTdTVUZEUkN3eVFrRkJUeXhIUVVGUU8xRkJRMGtzU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTFvc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEVkN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExGbEJRVmtzUlVGQlJUdG5Ra0ZEYWtJc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnVRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5JTEU5QlFVOHNSVUZCUlN4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVOTUxHZENRVUZETzBGQlFVUXNRMEZCUXl4QlFXNURSQ3hKUVcxRFF6dEJRVzVEV1N3NFFrRkJVenRCUVhGRGRFSTdTVUZCUVR0UlFVTkpMRk5CUVVrc1IwRkJVU3hGUVVGRkxFTkJRVU03VVVGRFppeE5RVUZETEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCWjBSc1FpeERRVUZETzBsQkwwTkhMSGRDUVVGTExFZEJRVXc3VVVGRFNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVU5FTERKQ1FVRlJMRWRCUVZJc1ZVRkJVeXhGUVVGVk8xRkJRMllzU1VGQlNTeE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTJoQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3WjBKQlEzWkNMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU03WVVGRGFrSTdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOSUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkRSQ3h6UWtGQlJ5eEhRVUZJTEZWQlFVa3NVVUZCWjBJc1JVRkJSU3hEUVVGVE8xRkJRek5DTEVsQlFVa3NRMEZCUXl4SFFVRmpMRkZCUVZFc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVsQlFVa3NVMEZCVXl4RlFVRkZMRU5CUVVNN1VVRkRka2NzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOVUxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRkRSQ3g1UWtGQlRTeEhRVUZPTEZWQlFVOHNVVUZCWjBJc1JVRkJSU3hEUVVGVE8xRkJRemxDTEVsQlFVa3NSVUZCUlN4SFFVRmpMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEZUVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTmlMRWxCUVVrc1JVRkJSU3hEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNSVUZCUlR0WlFVTnNRaXhQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRPVUk3VVVGRFJDeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRZaXhEUVVGRE8wbEJRMFFzZVVKQlFVMHNSMEZCVGl4VlFVRlBMRU5CUVRSRE8xRkJReTlETEV0QlFVc3NTVUZCU1N4UlFVRlJMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJUdFpRVU0xUWl4RFFVRkRMRU5CUVZrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU4yUkR0SlFVTk1MRU5CUVVNN1NVRkRSQ3huUTBGQllTeEhRVUZpTEZWQlFXTXNRMEZCYzBJN1VVRkRhRU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFbEJRVXNzVDBGQlFTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGYUxFTkJRVmtzUTBGQlF5eERRVUZETzBsQlF6RkRMRU5CUVVNN1NVRkRSQ3dyUWtGQldTeEhRVUZhTEZWQlFXRXNTMEZCWlR0UlFVTjRRaXhKUVVGSkxFMUJRVTBzUjBGQllTeEpRVUZKTEZGQlFWRXNSVUZCUlN4RFFVRkRPMUZCUTNSRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSVHRaUVVObUxFbEJRVWtzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRVZCUVVVN1owSkJRMnhDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhaUVVGWkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVOdVF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8yZENRVU5zUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3YjBKQlExQXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdiMEpCUTNCQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVOcVFqdGhRVU5LTzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5zUWl4RFFVRkRPMGxCUTB3c1pVRkJRenRCUVVGRUxFTkJRVU1zUVVGc1JFUXNTVUZyUkVNN1FVRnNSRmtzTkVKQlFWRTdRVUZ2UkhKQ0xGTkJRVk1zYVVKQlFXbENMRU5CUVVNc1EwRkJUU3hGUVVGRkxFTkJRVTA3U1VGRGNrTXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVUU3UVVGRGFrUXNRMEZCUXp0QlFVVkVMRk5CUVdkQ0xGTkJRVk1zUTBGQlR5eExRVUZaTEVWQlFVVXNTMEZCWVN4RlFVRkZMRVZCUVRCQ0xFVkJRVVVzVTBGQmFVSTdTVUZEZEVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZEYUVJc1EwRkJReXhIUVVGSExFbEJRVWtzWVVGQllTeERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBsQlEyNUVMRTlCUVU4c1EwRkJReXhEUVVGRExGZEJRVmNzUlVGQlJUdFJRVUZETEVOQlFVTTdTVUZEZUVJc1NVRkJTU3hWUVVGVkxFZEJRV2RDTEVWQlFVVXNRMEZCUXp0SlFVTnFReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdTVUZEZUVNc1ZVRkJWU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFZEJRVWNzVlVGQlF5eEhRVUZITzFsQlExSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyWXNTVUZCU1N4UFFVRlBMRU5CUVVNc1NVRkJTU3hSUVVGUk8yZENRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYUVRc1EwRkJReXhEUVVGRE8xRkJRMFlzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUTFvc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlEyaENMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMGdzVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUlVGQlJTeERRVUZETzBGQlEycEVMRU5CUVVNN1FVRm1SQ3c0UWtGbFF5SjkiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5mdW5jdGlvbiB1bmlvbkNvdW50KGEsIGIpIHtcclxuICAgIHZhciB1ID0ge307XHJcbiAgICBmb3IgKHZhciBpIGluIGEpXHJcbiAgICAgICAgdVtpXSA9IHt9O1xyXG4gICAgZm9yICh2YXIgaSBpbiBiKVxyXG4gICAgICAgIHVbaV0gPSB7fTtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh1KS5sZW5ndGg7XHJcbn1cclxuZnVuY3Rpb24gaW50ZXJzZWN0aW9uQ291bnQoYSwgYikge1xyXG4gICAgdmFyIG4gPSAwO1xyXG4gICAgZm9yICh2YXIgaSBpbiBhKVxyXG4gICAgICAgIGlmICh0eXBlb2YgYltpXSAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgICsrbjtcclxuICAgIHJldHVybiBuO1xyXG59XHJcbmZ1bmN0aW9uIGdldE5laWdoYm91cnMobGlua3MsIGxhKSB7XHJcbiAgICB2YXIgbmVpZ2hib3VycyA9IHt9O1xyXG4gICAgdmFyIGFkZE5laWdoYm91cnMgPSBmdW5jdGlvbiAodSwgdikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgbmVpZ2hib3Vyc1t1XSA9PT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgIG5laWdoYm91cnNbdV0gPSB7fTtcclxuICAgICAgICBuZWlnaGJvdXJzW3VdW3ZdID0ge307XHJcbiAgICB9O1xyXG4gICAgbGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciB1ID0gbGEuZ2V0U291cmNlSW5kZXgoZSksIHYgPSBsYS5nZXRUYXJnZXRJbmRleChlKTtcclxuICAgICAgICBhZGROZWlnaGJvdXJzKHUsIHYpO1xyXG4gICAgICAgIGFkZE5laWdoYm91cnModiwgdSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZWlnaGJvdXJzO1xyXG59XHJcbmZ1bmN0aW9uIGNvbXB1dGVMaW5rTGVuZ3RocyhsaW5rcywgdywgZiwgbGEpIHtcclxuICAgIHZhciBuZWlnaGJvdXJzID0gZ2V0TmVpZ2hib3VycyhsaW5rcywgbGEpO1xyXG4gICAgbGlua3MuZm9yRWFjaChmdW5jdGlvbiAobCkge1xyXG4gICAgICAgIHZhciBhID0gbmVpZ2hib3Vyc1tsYS5nZXRTb3VyY2VJbmRleChsKV07XHJcbiAgICAgICAgdmFyIGIgPSBuZWlnaGJvdXJzW2xhLmdldFRhcmdldEluZGV4KGwpXTtcclxuICAgICAgICBsYS5zZXRMZW5ndGgobCwgMSArIHcgKiBmKGEsIGIpKTtcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZMaW5rTGVuZ3RocyhsaW5rcywgbGEsIHcpIHtcclxuICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgIGNvbXB1dGVMaW5rTGVuZ3RocyhsaW5rcywgdywgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIE1hdGguc3FydCh1bmlvbkNvdW50KGEsIGIpIC0gaW50ZXJzZWN0aW9uQ291bnQoYSwgYikpOyB9LCBsYSk7XHJcbn1cclxuZXhwb3J0cy5zeW1tZXRyaWNEaWZmTGlua0xlbmd0aHMgPSBzeW1tZXRyaWNEaWZmTGlua0xlbmd0aHM7XHJcbmZ1bmN0aW9uIGphY2NhcmRMaW5rTGVuZ3RocyhsaW5rcywgbGEsIHcpIHtcclxuICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgIGNvbXB1dGVMaW5rTGVuZ3RocyhsaW5rcywgdywgZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5taW4oT2JqZWN0LmtleXMoYSkubGVuZ3RoLCBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIDwgMS4xID8gMCA6IGludGVyc2VjdGlvbkNvdW50KGEsIGIpIC8gdW5pb25Db3VudChhLCBiKTtcclxuICAgIH0sIGxhKTtcclxufVxyXG5leHBvcnRzLmphY2NhcmRMaW5rTGVuZ3RocyA9IGphY2NhcmRMaW5rTGVuZ3RocztcclxuZnVuY3Rpb24gZ2VuZXJhdGVEaXJlY3RlZEVkZ2VDb25zdHJhaW50cyhuLCBsaW5rcywgYXhpcywgbGEpIHtcclxuICAgIHZhciBjb21wb25lbnRzID0gc3Ryb25nbHlDb25uZWN0ZWRDb21wb25lbnRzKG4sIGxpbmtzLCBsYSk7XHJcbiAgICB2YXIgbm9kZXMgPSB7fTtcclxuICAgIGNvbXBvbmVudHMuZm9yRWFjaChmdW5jdGlvbiAoYywgaSkge1xyXG4gICAgICAgIHJldHVybiBjLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5vZGVzW3ZdID0gaTsgfSk7XHJcbiAgICB9KTtcclxuICAgIHZhciBjb25zdHJhaW50cyA9IFtdO1xyXG4gICAgbGlua3MuZm9yRWFjaChmdW5jdGlvbiAobCkge1xyXG4gICAgICAgIHZhciB1aSA9IGxhLmdldFNvdXJjZUluZGV4KGwpLCB2aSA9IGxhLmdldFRhcmdldEluZGV4KGwpLCB1ID0gbm9kZXNbdWldLCB2ID0gbm9kZXNbdmldO1xyXG4gICAgICAgIGlmICh1ICE9PSB2KSB7XHJcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgYXhpczogYXhpcyxcclxuICAgICAgICAgICAgICAgIGxlZnQ6IHVpLFxyXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHZpLFxyXG4gICAgICAgICAgICAgICAgZ2FwOiBsYS5nZXRNaW5TZXBhcmF0aW9uKGwpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbnN0cmFpbnRzO1xyXG59XHJcbmV4cG9ydHMuZ2VuZXJhdGVEaXJlY3RlZEVkZ2VDb25zdHJhaW50cyA9IGdlbmVyYXRlRGlyZWN0ZWRFZGdlQ29uc3RyYWludHM7XHJcbmZ1bmN0aW9uIHN0cm9uZ2x5Q29ubmVjdGVkQ29tcG9uZW50cyhudW1WZXJ0aWNlcywgZWRnZXMsIGxhKSB7XHJcbiAgICB2YXIgbm9kZXMgPSBbXTtcclxuICAgIHZhciBpbmRleCA9IDA7XHJcbiAgICB2YXIgc3RhY2sgPSBbXTtcclxuICAgIHZhciBjb21wb25lbnRzID0gW107XHJcbiAgICBmdW5jdGlvbiBzdHJvbmdDb25uZWN0KHYpIHtcclxuICAgICAgICB2LmluZGV4ID0gdi5sb3dsaW5rID0gaW5kZXgrKztcclxuICAgICAgICBzdGFjay5wdXNoKHYpO1xyXG4gICAgICAgIHYub25TdGFjayA9IHRydWU7XHJcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IHYub3V0OyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICB2YXIgdyA9IF9hW19pXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3LmluZGV4ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgc3Ryb25nQ29ubmVjdCh3KTtcclxuICAgICAgICAgICAgICAgIHYubG93bGluayA9IE1hdGgubWluKHYubG93bGluaywgdy5sb3dsaW5rKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh3Lm9uU3RhY2spIHtcclxuICAgICAgICAgICAgICAgIHYubG93bGluayA9IE1hdGgubWluKHYubG93bGluaywgdy5pbmRleCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHYubG93bGluayA9PT0gdi5pbmRleCkge1xyXG4gICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gW107XHJcbiAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHcgPSBzdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgIHcub25TdGFjayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50LnB1c2godyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodyA9PT0gdilcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb21wb25lbnRzLnB1c2goY29tcG9uZW50Lm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi5pZDsgfSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtVmVydGljZXM7IGkrKykge1xyXG4gICAgICAgIG5vZGVzLnB1c2goeyBpZDogaSwgb3V0OiBbXSB9KTtcclxuICAgIH1cclxuICAgIGZvciAodmFyIF9pID0gMCwgZWRnZXNfMSA9IGVkZ2VzOyBfaSA8IGVkZ2VzXzEubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgdmFyIGUgPSBlZGdlc18xW19pXTtcclxuICAgICAgICB2YXIgdl8xID0gbm9kZXNbbGEuZ2V0U291cmNlSW5kZXgoZSldLCB3ID0gbm9kZXNbbGEuZ2V0VGFyZ2V0SW5kZXgoZSldO1xyXG4gICAgICAgIHZfMS5vdXQucHVzaCh3KTtcclxuICAgIH1cclxuICAgIGZvciAodmFyIF9hID0gMCwgbm9kZXNfMSA9IG5vZGVzOyBfYSA8IG5vZGVzXzEubGVuZ3RoOyBfYSsrKSB7XHJcbiAgICAgICAgdmFyIHYgPSBub2Rlc18xW19hXTtcclxuICAgICAgICBpZiAodHlwZW9mIHYuaW5kZXggPT09ICd1bmRlZmluZWQnKVxyXG4gICAgICAgICAgICBzdHJvbmdDb25uZWN0KHYpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XHJcbn1cclxuZXhwb3J0cy5zdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHMgPSBzdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHM7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHbHVhMnhsYm1kMGFITXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTlYWldKRGIyeGhMM055WXk5c2FXNXJiR1Z1WjNSb2N5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVZWSkxGTkJRVk1zVlVGQlZTeERRVUZETEVOQlFVMHNSVUZCUlN4RFFVRk5PMGxCUXpsQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTllMRXRCUVVzc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dFJRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRE0wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8xRkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVNelFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzBGQlEycERMRU5CUVVNN1FVRkhSQ3hUUVVGVExHbENRVUZwUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJReTlETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOV0xFdEJRVXNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0UlFVRkZMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NWMEZCVnp0WlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRM1JFTEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUTJJc1EwRkJRenRCUVVWRUxGTkJRVk1zWVVGQllTeERRVUZQTEV0QlFXRXNSVUZCUlN4RlFVRnpRanRKUVVNNVJDeEpRVUZKTEZWQlFWVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRjRUlzU1VGQlNTeGhRVUZoTEVkQlFVY3NWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRSUVVOeVFpeEpRVUZKTEU5QlFVOHNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExGZEJRVmM3V1VGRGNFTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU4yUWl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUXpGQ0xFTkJRVU1zUTBGQlF6dEpRVU5HTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hEUVVGRE8xRkJRMWdzU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUkN4aFFVRmhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkNMR0ZCUVdFc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVJc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFNDeFBRVUZQTEZWQlFWVXNRMEZCUXp0QlFVTjBRaXhEUVVGRE8wRkJSMFFzVTBGQlV5eHJRa0ZCYTBJc1EwRkJUeXhMUVVGaExFVkJRVVVzUTBGQlV5eEZRVUZGTEVOQlFUWkNMRVZCUVVVc1JVRkJORUk3U1VGRGJrZ3NTVUZCU1N4VlFVRlZMRWRCUVVjc1lVRkJZU3hEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0UlFVTllMRWxCUVVrc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGVrTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFVkJRVVVzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlF5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55UXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOUUxFTkJRVU03UVVGTFJDeFRRVUZuUWl4M1FrRkJkMElzUTBGQlR5eExRVUZoTEVWQlFVVXNSVUZCTkVJc1JVRkJSU3hEUVVGaE8wbEJRV0lzYTBKQlFVRXNSVUZCUVN4TFFVRmhPMGxCUTNKSExHdENRVUZyUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkxMRTlCUVVFc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZ5UkN4RFFVRnhSQ3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzUkhMRU5CUVVNN1FVRkdSQ3cwUkVGRlF6dEJRVXRFTEZOQlFXZENMR3RDUVVGclFpeERRVUZQTEV0QlFXRXNSVUZCUlN4RlFVRTBRaXhGUVVGRkxFTkJRV0U3U1VGQllpeHJRa0ZCUVN4RlFVRkJMRXRCUVdFN1NVRkRMMFlzYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMUZCUXpsQ0xFOUJRVUVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZCTjBjc1EwRkJOa2NzUlVGRE0wY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJTa1FzWjBSQlNVTTdRVUZ2UWtRc1UwRkJaMElzSzBKQlFTdENMRU5CUVU4c1EwRkJVeXhGUVVGRkxFdEJRV0VzUlVGQlJTeEpRVUZaTEVWQlEzaEdMRVZCUVhsQ08wbEJSWHBDTEVsQlFVa3NWVUZCVlN4SFFVRkhMREpDUVVFeVFpeERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRE0wUXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJRMllzVlVGQlZTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRE8xRkJRMjVDTEU5QlFVRXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVm9zUTBGQldTeERRVUZETzBsQlFUVkNMRU5CUVRSQ0xFTkJReTlDTEVOQlFVTTdTVUZEUml4SlFVRkpMRmRCUVZjc1IwRkJWU3hGUVVGRkxFTkJRVU03U1VGRE5VSXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03VVVGRFdDeEpRVUZKTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU53UkN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGFrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMVFzVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXp0blFrRkRZaXhKUVVGSkxFVkJRVVVzU1VGQlNUdG5Ra0ZEVml4SlFVRkpMRVZCUVVVc1JVRkJSVHRuUWtGRFVpeExRVUZMTEVWQlFVVXNSVUZCUlR0blFrRkRWQ3hIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU01UWl4RFFVRkRMRU5CUVVNN1UwRkRUanRKUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEwZ3NUMEZCVHl4WFFVRlhMRU5CUVVNN1FVRkRka0lzUTBGQlF6dEJRWFJDUkN3d1JVRnpRa003UVVGUlJDeFRRVUZuUWl3eVFrRkJNa0lzUTBGQlR5eFhRVUZ0UWl4RlFVRkZMRXRCUVdFc1JVRkJSU3hGUVVGelFqdEpRVU40Unl4SlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRFppeEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRaQ3hKUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTVUZEWml4SlFVRkpMRlZCUVZVc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGNFSXNVMEZCVXl4aFFVRmhMRU5CUVVNc1EwRkJRenRSUVVWd1FpeERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhQUVVGUExFZEJRVWNzUzBGQlN5eEZRVUZGTEVOQlFVTTdVVUZET1VJc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTmtMRU5CUVVNc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlIycENMRXRCUVdNc1ZVRkJTeXhGUVVGTUxFdEJRVUVzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCVEN4alFVRkxMRVZCUVV3c1NVRkJTeXhGUVVGRk8xbEJRV2hDTEVsQlFVa3NRMEZCUXl4VFFVRkJPMWxCUTA0c1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eExRVUZMTEV0QlFVc3NWMEZCVnl4RlFVRkZPMmRDUVVWb1F5eGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMnBDTEVOQlFVTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dGhRVU01UXp0cFFrRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVWQlFVVTdaMEpCUld4Q0xFTkJRVU1zUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRoUVVNMVF6dFRRVU5LTzFGQlIwUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1QwRkJUeXhMUVVGTExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZGZGtJc1NVRkJTU3hUUVVGVExFZEJRVWNzUlVGQlJTeERRVUZETzFsQlEyNUNMRTlCUVU4c1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJUdG5Ra0ZEYWtJc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0blFrRkRhRUlzUTBGQlF5eERRVUZETEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNN1owSkJSV3hDTEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyeENMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU03YjBKQlFVVXNUVUZCVFR0aFFVTjBRanRaUVVWRUxGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVvc1EwRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU0zUXp0SlFVTk1MRU5CUVVNN1NVRkRSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1YwRkJWeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFGQlEyeERMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETzB0QlEyaERPMGxCUTBRc1MwRkJZeXhWUVVGTExFVkJRVXdzWlVGQlN5eEZRVUZNTEcxQ1FVRkxMRVZCUVV3c1NVRkJTeXhGUVVGRk8xRkJRV2hDTEVsQlFVa3NRMEZCUXl4alFVRkJPMUZCUTA0c1NVRkJTU3hIUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGREwwSXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRjRU1zUjBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGFrSTdTVUZEUkN4TFFVRmpMRlZCUVVzc1JVRkJUQ3hsUVVGTExFVkJRVXdzYlVKQlFVc3NSVUZCVEN4SlFVRkxPMUZCUVdRc1NVRkJTU3hEUVVGRExHTkJRVUU3VVVGQlZ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRXRCUVVzc1MwRkJTeXhYUVVGWE8xbEJRVVVzWVVGQllTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUVVFN1NVRkRNVVVzVDBGQlR5eFZRVUZWTEVOQlFVTTdRVUZEZEVJc1EwRkJRenRCUVdoRVJDeHJSVUZuUkVNaWZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgTG9ja3MgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTG9ja3MoKSB7XHJcbiAgICAgICAgdGhpcy5sb2NrcyA9IHt9O1xyXG4gICAgfVxyXG4gICAgTG9ja3MucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChpZCwgeCkge1xyXG4gICAgICAgIHRoaXMubG9ja3NbaWRdID0geDtcclxuICAgIH07XHJcbiAgICBMb2Nrcy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5sb2NrcyA9IHt9O1xyXG4gICAgfTtcclxuICAgIExvY2tzLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGZvciAodmFyIGwgaW4gdGhpcy5sb2NrcylcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICAgIExvY2tzLnByb3RvdHlwZS5hcHBseSA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgZm9yICh2YXIgbCBpbiB0aGlzLmxvY2tzKSB7XHJcbiAgICAgICAgICAgIGYoTnVtYmVyKGwpLCB0aGlzLmxvY2tzW2xdKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIExvY2tzO1xyXG59KCkpO1xyXG5leHBvcnRzLkxvY2tzID0gTG9ja3M7XHJcbnZhciBEZXNjZW50ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIERlc2NlbnQoeCwgRCwgRykge1xyXG4gICAgICAgIGlmIChHID09PSB2b2lkIDApIHsgRyA9IG51bGw7IH1cclxuICAgICAgICB0aGlzLkQgPSBEO1xyXG4gICAgICAgIHRoaXMuRyA9IEc7XHJcbiAgICAgICAgdGhpcy50aHJlc2hvbGQgPSAwLjAwMDE7XHJcbiAgICAgICAgdGhpcy5udW1HcmlkU25hcE5vZGVzID0gMDtcclxuICAgICAgICB0aGlzLnNuYXBHcmlkU2l6ZSA9IDEwMDtcclxuICAgICAgICB0aGlzLnNuYXBTdHJlbmd0aCA9IDEwMDA7XHJcbiAgICAgICAgdGhpcy5zY2FsZVNuYXBCeU1heEggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJhbmRvbSA9IG5ldyBQc2V1ZG9SYW5kb20oKTtcclxuICAgICAgICB0aGlzLnByb2plY3QgPSBudWxsO1xyXG4gICAgICAgIHRoaXMueCA9IHg7XHJcbiAgICAgICAgdGhpcy5rID0geC5sZW5ndGg7XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLm4gPSB4WzBdLmxlbmd0aDtcclxuICAgICAgICB0aGlzLkggPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLmcgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLkhkID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5hID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5iID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5jID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5kID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5lID0gbmV3IEFycmF5KHRoaXMuayk7XHJcbiAgICAgICAgdGhpcy5pYSA9IG5ldyBBcnJheSh0aGlzLmspO1xyXG4gICAgICAgIHRoaXMuaWIgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLnh0bXAgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB0aGlzLmxvY2tzID0gbmV3IExvY2tzKCk7XHJcbiAgICAgICAgdGhpcy5taW5EID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuICAgICAgICB2YXIgaSA9IG4sIGo7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICBqID0gbjtcclxuICAgICAgICAgICAgd2hpbGUgKC0taiA+IGkpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkID0gRFtpXVtqXTtcclxuICAgICAgICAgICAgICAgIGlmIChkID4gMCAmJiBkIDwgdGhpcy5taW5EKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5taW5EID0gZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5taW5EID09PSBOdW1iZXIuTUFYX1ZBTFVFKVxyXG4gICAgICAgICAgICB0aGlzLm1pbkQgPSAxO1xyXG4gICAgICAgIGkgPSB0aGlzLms7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICB0aGlzLmdbaV0gPSBuZXcgQXJyYXkobik7XHJcbiAgICAgICAgICAgIHRoaXMuSFtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgaiA9IG47XHJcbiAgICAgICAgICAgIHdoaWxlIChqLS0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuSFtpXVtqXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLkhkW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgICAgICB0aGlzLmFbaV0gPSBuZXcgQXJyYXkobik7XHJcbiAgICAgICAgICAgIHRoaXMuYltpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy5jW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgICAgICB0aGlzLmRbaV0gPSBuZXcgQXJyYXkobik7XHJcbiAgICAgICAgICAgIHRoaXMuZVtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy5pYVtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy5pYltpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgdGhpcy54dG1wW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIERlc2NlbnQuY3JlYXRlU3F1YXJlTWF0cml4ID0gZnVuY3Rpb24gKG4sIGYpIHtcclxuICAgICAgICB2YXIgTSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICBNW2ldID0gbmV3IEFycmF5KG4pO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47ICsraikge1xyXG4gICAgICAgICAgICAgICAgTVtpXVtqXSA9IGYoaSwgaik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIE07XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUub2Zmc2V0RGlyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHUgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB2YXIgbCA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLms7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgeCA9IHVbaV0gPSB0aGlzLnJhbmRvbS5nZXROZXh0QmV0d2VlbigwLjAxLCAxKSAtIDAuNTtcclxuICAgICAgICAgICAgbCArPSB4ICogeDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbCA9IE1hdGguc3FydChsKTtcclxuICAgICAgICByZXR1cm4gdS5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggKj0gX3RoaXMubWluRCAvIGw7IH0pO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLmNvbXB1dGVEZXJpdmF0aXZlcyA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgbiA9IHRoaXMubjtcclxuICAgICAgICBpZiAobiA8IDEpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB2YXIgaTtcclxuICAgICAgICB2YXIgZCA9IG5ldyBBcnJheSh0aGlzLmspO1xyXG4gICAgICAgIHZhciBkMiA9IG5ldyBBcnJheSh0aGlzLmspO1xyXG4gICAgICAgIHZhciBIdXUgPSBuZXcgQXJyYXkodGhpcy5rKTtcclxuICAgICAgICB2YXIgbWF4SCA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgdSA9IDA7IHUgPCBuOyArK3UpIHtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKVxyXG4gICAgICAgICAgICAgICAgSHV1W2ldID0gdGhpcy5nW2ldW3VdID0gMDtcclxuICAgICAgICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBuOyArK3YpIHtcclxuICAgICAgICAgICAgICAgIGlmICh1ID09PSB2KVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1heERpc3BsYWNlcyA9IG47XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAobWF4RGlzcGxhY2VzLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2QyID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5rOyArK2kpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGR4ID0gZFtpXSA9IHhbaV1bdV0gLSB4W2ldW3ZdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZDIgKz0gZDJbaV0gPSBkeCAqIGR4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2QyID4gMWUtOSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJkID0gdGhpcy5vZmZzZXREaXIoKTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5rOyArK2kpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhbaV1bdl0gKz0gcmRbaV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgbCA9IE1hdGguc3FydChzZDIpO1xyXG4gICAgICAgICAgICAgICAgdmFyIEQgPSB0aGlzLkRbdV1bdl07XHJcbiAgICAgICAgICAgICAgICB2YXIgd2VpZ2h0ID0gdGhpcy5HICE9IG51bGwgPyB0aGlzLkdbdV1bdl0gOiAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdlaWdodCA+IDEgJiYgbCA+IEQgfHwgIWlzRmluaXRlKEQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkhbaV1bdV1bdl0gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHdlaWdodCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB3ZWlnaHQgPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIEQyID0gRCAqIEQ7XHJcbiAgICAgICAgICAgICAgICB2YXIgZ3MgPSAyICogd2VpZ2h0ICogKGwgLSBEKSAvIChEMiAqIGwpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGwzID0gbCAqIGwgKiBsO1xyXG4gICAgICAgICAgICAgICAgdmFyIGhzID0gMiAqIC13ZWlnaHQgLyAoRDIgKiBsMyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKGdzKSlcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhncyk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5rOyArK2kpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdbaV1bdV0gKz0gZFtpXSAqIGdzO1xyXG4gICAgICAgICAgICAgICAgICAgIEh1dVtpXSAtPSB0aGlzLkhbaV1bdV1bdl0gPSBocyAqIChsMyArIEQgKiAoZDJbaV0gLSBzZDIpICsgbCAqIHNkMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKVxyXG4gICAgICAgICAgICAgICAgbWF4SCA9IE1hdGgubWF4KG1heEgsIHRoaXMuSFtpXVt1XVt1XSA9IEh1dVtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciByID0gdGhpcy5zbmFwR3JpZFNpemUgLyAyO1xyXG4gICAgICAgIHZhciBnID0gdGhpcy5zbmFwR3JpZFNpemU7XHJcbiAgICAgICAgdmFyIHcgPSB0aGlzLnNuYXBTdHJlbmd0aDtcclxuICAgICAgICB2YXIgayA9IHcgLyAociAqIHIpO1xyXG4gICAgICAgIHZhciBudW1Ob2RlcyA9IHRoaXMubnVtR3JpZFNuYXBOb2RlcztcclxuICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IG51bU5vZGVzOyArK3UpIHtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgeGl1ID0gdGhpcy54W2ldW3VdO1xyXG4gICAgICAgICAgICAgICAgdmFyIG0gPSB4aXUgLyBnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGYgPSBtICUgMTtcclxuICAgICAgICAgICAgICAgIHZhciBxID0gbSAtIGY7XHJcbiAgICAgICAgICAgICAgICB2YXIgYSA9IE1hdGguYWJzKGYpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGR4ID0gKGEgPD0gMC41KSA/IHhpdSAtIHEgKiBnIDpcclxuICAgICAgICAgICAgICAgICAgICAoeGl1ID4gMCkgPyB4aXUgLSAocSArIDEpICogZyA6IHhpdSAtIChxIC0gMSkgKiBnO1xyXG4gICAgICAgICAgICAgICAgaWYgKC1yIDwgZHggJiYgZHggPD0gcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjYWxlU25hcEJ5TWF4SCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdbaV1bdV0gKz0gbWF4SCAqIGsgKiBkeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5IW2ldW3VdW3VdICs9IG1heEggKiBrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nW2ldW3VdICs9IGsgKiBkeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5IW2ldW3VdW3VdICs9IGs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5sb2Nrcy5pc0VtcHR5KCkpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2Nrcy5hcHBseShmdW5jdGlvbiAodSwgcCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IF90aGlzLms7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLkhbaV1bdV1bdV0gKz0gbWF4SDtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5nW2ldW3VdIC09IG1heEggKiAocFtpXSAtIHhbaV1bdV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5kb3RQcm9kID0gZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICB2YXIgeCA9IDAsIGkgPSBhLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKVxyXG4gICAgICAgICAgICB4ICs9IGFbaV0gKiBiW2ldO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQucmlnaHRNdWx0aXBseSA9IGZ1bmN0aW9uIChtLCB2LCByKSB7XHJcbiAgICAgICAgdmFyIGkgPSBtLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKVxyXG4gICAgICAgICAgICByW2ldID0gRGVzY2VudC5kb3RQcm9kKG1baV0sIHYpO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLmNvbXB1dGVTdGVwU2l6ZSA9IGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgdmFyIG51bWVyYXRvciA9IDAsIGRlbm9taW5hdG9yID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgIG51bWVyYXRvciArPSBEZXNjZW50LmRvdFByb2QodGhpcy5nW2ldLCBkW2ldKTtcclxuICAgICAgICAgICAgRGVzY2VudC5yaWdodE11bHRpcGx5KHRoaXMuSFtpXSwgZFtpXSwgdGhpcy5IZFtpXSk7XHJcbiAgICAgICAgICAgIGRlbm9taW5hdG9yICs9IERlc2NlbnQuZG90UHJvZChkW2ldLCB0aGlzLkhkW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlbm9taW5hdG9yID09PSAwIHx8ICFpc0Zpbml0ZShkZW5vbWluYXRvcikpXHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIHJldHVybiAxICogbnVtZXJhdG9yIC8gZGVub21pbmF0b3I7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUucmVkdWNlU3RyZXNzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZURlcml2YXRpdmVzKHRoaXMueCk7XHJcbiAgICAgICAgdmFyIGFscGhhID0gdGhpcy5jb21wdXRlU3RlcFNpemUodGhpcy5nKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFrZURlc2NlbnRTdGVwKHRoaXMueFtpXSwgdGhpcy5nW2ldLCBhbHBoYSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVTdHJlc3MoKTtcclxuICAgIH07XHJcbiAgICBEZXNjZW50LmNvcHkgPSBmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICAgIHZhciBtID0gYS5sZW5ndGgsIG4gPSBiWzBdLmxlbmd0aDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG07ICsraSkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47ICsraikge1xyXG4gICAgICAgICAgICAgICAgYltpXVtqXSA9IGFbaV1bal07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUuc3RlcEFuZFByb2plY3QgPSBmdW5jdGlvbiAoeDAsIHIsIGQsIHN0ZXBTaXplKSB7XHJcbiAgICAgICAgRGVzY2VudC5jb3B5KHgwLCByKTtcclxuICAgICAgICB0aGlzLnRha2VEZXNjZW50U3RlcChyWzBdLCBkWzBdLCBzdGVwU2l6ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvamVjdClcclxuICAgICAgICAgICAgdGhpcy5wcm9qZWN0WzBdKHgwWzBdLCB4MFsxXSwgclswXSk7XHJcbiAgICAgICAgdGhpcy50YWtlRGVzY2VudFN0ZXAoclsxXSwgZFsxXSwgc3RlcFNpemUpO1xyXG4gICAgICAgIGlmICh0aGlzLnByb2plY3QpXHJcbiAgICAgICAgICAgIHRoaXMucHJvamVjdFsxXShyWzBdLCB4MFsxXSwgclsxXSk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCB0aGlzLms7IGkrKylcclxuICAgICAgICAgICAgdGhpcy50YWtlRGVzY2VudFN0ZXAocltpXSwgZFtpXSwgc3RlcFNpemUpO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQubUFwcGx5ID0gZnVuY3Rpb24gKG0sIG4sIGYpIHtcclxuICAgICAgICB2YXIgaSA9IG07XHJcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcclxuICAgICAgICAgICAgdmFyIGogPSBuO1xyXG4gICAgICAgICAgICB3aGlsZSAoai0tID4gMClcclxuICAgICAgICAgICAgICAgIGYoaSwgaik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLm1hdHJpeEFwcGx5ID0gZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICBEZXNjZW50Lm1BcHBseSh0aGlzLmssIHRoaXMubiwgZik7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUuY29tcHV0ZU5leHRQb3NpdGlvbiA9IGZ1bmN0aW9uICh4MCwgcikge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5jb21wdXRlRGVyaXZhdGl2ZXMoeDApO1xyXG4gICAgICAgIHZhciBhbHBoYSA9IHRoaXMuY29tcHV0ZVN0ZXBTaXplKHRoaXMuZyk7XHJcbiAgICAgICAgdGhpcy5zdGVwQW5kUHJvamVjdCh4MCwgciwgdGhpcy5nLCBhbHBoYSk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvamVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLm1hdHJpeEFwcGx5KGZ1bmN0aW9uIChpLCBqKSB7IHJldHVybiBfdGhpcy5lW2ldW2pdID0geDBbaV1bal0gLSByW2ldW2pdOyB9KTtcclxuICAgICAgICAgICAgdmFyIGJldGEgPSB0aGlzLmNvbXB1dGVTdGVwU2l6ZSh0aGlzLmUpO1xyXG4gICAgICAgICAgICBiZXRhID0gTWF0aC5tYXgoMC4yLCBNYXRoLm1pbihiZXRhLCAxKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcEFuZFByb2plY3QoeDAsIHIsIHRoaXMuZSwgYmV0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIERlc2NlbnQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChpdGVyYXRpb25zKSB7XHJcbiAgICAgICAgdmFyIHN0cmVzcyA9IE51bWJlci5NQVhfVkFMVUUsIGNvbnZlcmdlZCA9IGZhbHNlO1xyXG4gICAgICAgIHdoaWxlICghY29udmVyZ2VkICYmIGl0ZXJhdGlvbnMtLSA+IDApIHtcclxuICAgICAgICAgICAgdmFyIHMgPSB0aGlzLnJ1bmdlS3V0dGEoKTtcclxuICAgICAgICAgICAgY29udmVyZ2VkID0gTWF0aC5hYnMoc3RyZXNzIC8gcyAtIDEpIDwgdGhpcy50aHJlc2hvbGQ7XHJcbiAgICAgICAgICAgIHN0cmVzcyA9IHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHJlc3M7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUucnVuZ2VLdXR0YSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZU5leHRQb3NpdGlvbih0aGlzLngsIHRoaXMuYSk7XHJcbiAgICAgICAgRGVzY2VudC5taWQodGhpcy54LCB0aGlzLmEsIHRoaXMuaWEpO1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZU5leHRQb3NpdGlvbih0aGlzLmlhLCB0aGlzLmIpO1xyXG4gICAgICAgIERlc2NlbnQubWlkKHRoaXMueCwgdGhpcy5iLCB0aGlzLmliKTtcclxuICAgICAgICB0aGlzLmNvbXB1dGVOZXh0UG9zaXRpb24odGhpcy5pYiwgdGhpcy5jKTtcclxuICAgICAgICB0aGlzLmNvbXB1dGVOZXh0UG9zaXRpb24odGhpcy5jLCB0aGlzLmQpO1xyXG4gICAgICAgIHZhciBkaXNwID0gMDtcclxuICAgICAgICB0aGlzLm1hdHJpeEFwcGx5KGZ1bmN0aW9uIChpLCBqKSB7XHJcbiAgICAgICAgICAgIHZhciB4ID0gKF90aGlzLmFbaV1bal0gKyAyLjAgKiBfdGhpcy5iW2ldW2pdICsgMi4wICogX3RoaXMuY1tpXVtqXSArIF90aGlzLmRbaV1bal0pIC8gNi4wLCBkID0gX3RoaXMueFtpXVtqXSAtIHg7XHJcbiAgICAgICAgICAgIGRpc3AgKz0gZCAqIGQ7XHJcbiAgICAgICAgICAgIF90aGlzLnhbaV1bal0gPSB4O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBkaXNwO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQubWlkID0gZnVuY3Rpb24gKGEsIGIsIG0pIHtcclxuICAgICAgICBEZXNjZW50Lm1BcHBseShhLmxlbmd0aCwgYVswXS5sZW5ndGgsIGZ1bmN0aW9uIChpLCBqKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtW2ldW2pdID0gYVtpXVtqXSArIChiW2ldW2pdIC0gYVtpXVtqXSkgLyAyLjA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUudGFrZURlc2NlbnRTdGVwID0gZnVuY3Rpb24gKHgsIGQsIHN0ZXBTaXplKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm47ICsraSkge1xyXG4gICAgICAgICAgICB4W2ldID0geFtpXSAtIHN0ZXBTaXplICogZFtpXTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgRGVzY2VudC5wcm90b3R5cGUuY29tcHV0ZVN0cmVzcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgc3RyZXNzID0gMDtcclxuICAgICAgICBmb3IgKHZhciB1ID0gMCwgbk1pbnVzMSA9IHRoaXMubiAtIDE7IHUgPCBuTWludXMxOyArK3UpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgdiA9IHUgKyAxLCBuID0gdGhpcy5uOyB2IDwgbjsgKyt2KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbCA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuazsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR4ID0gdGhpcy54W2ldW3VdIC0gdGhpcy54W2ldW3ZdO1xyXG4gICAgICAgICAgICAgICAgICAgIGwgKz0gZHggKiBkeDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGwgPSBNYXRoLnNxcnQobCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuRFt1XVt2XTtcclxuICAgICAgICAgICAgICAgIGlmICghaXNGaW5pdGUoZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmwgPSBkIC0gbDtcclxuICAgICAgICAgICAgICAgIHZhciBkMiA9IGQgKiBkO1xyXG4gICAgICAgICAgICAgICAgc3RyZXNzICs9IHJsICogcmwgLyBkMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyZXNzO1xyXG4gICAgfTtcclxuICAgIERlc2NlbnQuemVyb0Rpc3RhbmNlID0gMWUtMTA7XHJcbiAgICByZXR1cm4gRGVzY2VudDtcclxufSgpKTtcclxuZXhwb3J0cy5EZXNjZW50ID0gRGVzY2VudDtcclxudmFyIFBzZXVkb1JhbmRvbSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQc2V1ZG9SYW5kb20oc2VlZCkge1xyXG4gICAgICAgIGlmIChzZWVkID09PSB2b2lkIDApIHsgc2VlZCA9IDE7IH1cclxuICAgICAgICB0aGlzLnNlZWQgPSBzZWVkO1xyXG4gICAgICAgIHRoaXMuYSA9IDIxNDAxMztcclxuICAgICAgICB0aGlzLmMgPSAyNTMxMDExO1xyXG4gICAgICAgIHRoaXMubSA9IDIxNDc0ODM2NDg7XHJcbiAgICAgICAgdGhpcy5yYW5nZSA9IDMyNzY3O1xyXG4gICAgfVxyXG4gICAgUHNldWRvUmFuZG9tLnByb3RvdHlwZS5nZXROZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuc2VlZCA9ICh0aGlzLnNlZWQgKiB0aGlzLmEgKyB0aGlzLmMpICUgdGhpcy5tO1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWVkID4+IDE2KSAvIHRoaXMucmFuZ2U7XHJcbiAgICB9O1xyXG4gICAgUHNldWRvUmFuZG9tLnByb3RvdHlwZS5nZXROZXh0QmV0d2VlbiA9IGZ1bmN0aW9uIChtaW4sIG1heCkge1xyXG4gICAgICAgIHJldHVybiBtaW4gKyB0aGlzLmdldE5leHQoKSAqIChtYXggLSBtaW4pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBQc2V1ZG9SYW5kb207XHJcbn0oKSk7XHJcbmV4cG9ydHMuUHNldWRvUmFuZG9tID0gUHNldWRvUmFuZG9tO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR1Z6WTJWdWRDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDJSbGMyTmxiblF1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkpTVHRKUVVGQk8xRkJRMGtzVlVGQlN5eEhRVUUyUWl4RlFVRkZMRU5CUVVNN1NVRnZRM3BETEVOQlFVTTdTVUUzUWtjc2JVSkJRVWNzUjBGQlNDeFZRVUZKTEVWQlFWVXNSVUZCUlN4RFFVRlhPMUZCU1haQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRM1pDTEVOQlFVTTdTVUZKUkN4eFFrRkJTeXhIUVVGTU8xRkJRMGtzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRjRUlzUTBGQlF6dEpRVXRFTEhWQ1FVRlBMRWRCUVZBN1VVRkRTU3hMUVVGTExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxPMWxCUVVVc1QwRkJUeXhMUVVGTExFTkJRVU03VVVGRGRrTXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRhRUlzUTBGQlF6dEpRVXRFTEhGQ1FVRkxMRWRCUVV3c1ZVRkJUU3hEUVVGdlF6dFJRVU4wUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZEZEVJc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZETDBJN1NVRkRUQ3hEUVVGRE8wbEJRMHdzV1VGQlF6dEJRVUZFTEVOQlFVTXNRVUZ5UTBRc1NVRnhRME03UVVGeVExa3NjMEpCUVVzN1FVRnBSR3hDTzBsQk5rUkpMR2xDUVVGWkxFTkJRV0VzUlVGQlV5eERRVUZoTEVWQlFWTXNRMEZCYlVJN1VVRkJia0lzYTBKQlFVRXNSVUZCUVN4UlFVRnRRanRSUVVGNlF5eE5RVUZETEVkQlFVUXNRMEZCUXl4RFFVRlpPMUZCUVZNc1RVRkJReXhIUVVGRUxFTkJRVU1zUTBGQmEwSTdVVUUxUkhCRkxHTkJRVk1zUjBGQlZ5eE5RVUZOTEVOQlFVTTdVVUV5UXpOQ0xIRkNRVUZuUWl4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVNM1FpeHBRa0ZCV1N4SFFVRlhMRWRCUVVjc1EwRkJRenRSUVVNelFpeHBRa0ZCV1N4SFFVRlhMRWxCUVVrc1EwRkJRenRSUVVNMVFpeHZRa0ZCWlN4SFFVRlpMRXRCUVVzc1EwRkJRenRSUVVWb1F5eFhRVUZOTEVkQlFVY3NTVUZCU1N4WlFVRlpMRVZCUVVVc1EwRkJRenRSUVVVM1FpeFpRVUZQTEVkQlFUQkVMRWxCUVVrc1EwRkJRenRSUVZkNlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOWUxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkROMElzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE0wSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROVUlzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE0wSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNMElzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE0wSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROVUlzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE9VSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFdEJRVXNzUlVGQlJTeERRVUZETzFGQlEzcENMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXp0UlFVTTNRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTJJc1QwRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5TTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRUaXhQUVVGUExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0blFrRkRXaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyaENMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSVHR2UWtGRGVFSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU03YVVKQlEycENPMkZCUTBvN1UwRkRTanRSUVVORUxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTMEZCU3l4TlFVRk5MRU5CUVVNc1UwRkJVenRaUVVGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFnc1QwRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5TTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRla0lzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEwNHNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRFVpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJReTlDTzFsQlEwUXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNeFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZWtJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42UWl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM3BDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRla0lzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTXhRaXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGREwwSTdTVUZEVEN4RFFVRkRPMGxCUldFc01FSkJRV3RDTEVkQlFXaERMRlZCUVdsRExFTkJRVk1zUlVGQlJTeERRVUZ0UXp0UlFVTXpSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOeVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNoQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU53UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU40UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU55UWp0VFFVTktPMUZCUTBRc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVOHNNa0pCUVZNc1IwRkJha0k3VVVGQlFTeHBRa0ZUUXp0UlFWSkhMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRWaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTTNRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dFpRVU42UkN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU5rTzFGQlEwUXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtJc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1EwRkJReXhKUVVGSkxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRnNRaXhEUVVGclFpeERRVUZETEVOQlFVTTdTVUZEZWtNc1EwRkJRenRKUVVkTkxHOURRVUZyUWl4SFFVRjZRaXhWUVVFd1FpeERRVUZoTzFGQlFYWkRMR2xDUVdkSFF6dFJRUzlHUnl4SlFVRkpMRU5CUVVNc1IwRkJWeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzWkNMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU03V1VGQlJTeFBRVUZQTzFGQlEyeENMRWxCUVVrc1EwRkJVeXhEUVVGRE8xRkJUV1FzU1VGQlNTeERRVUZETEVkQlFXRXNTVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRWxCUVVrc1JVRkJSU3hIUVVGaExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOeVF5eEpRVUZKTEVkQlFVY3NSMEZCWVN4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZEVNc1NVRkJTU3hKUVVGSkxFZEJRVmNzUTBGQlF5eERRVUZETzFGQlEzSkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVmNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGFFTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJRenRuUWtGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGRrUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGRGVFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenR2UWtGQlJTeFRRVUZUTzJkQ1FVZDBRaXhKUVVGSkxGbEJRVmtzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUTNKQ0xFOUJRVThzV1VGQldTeEZRVUZGTEVWQlFVVTdiMEpCUTI1Q0xFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRXaXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdkMEpCUTNwQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVOc1F5eEhRVUZITEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdjVUpCUXpGQ08yOUNRVU5FTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrN2QwSkJRVVVzVFVGQlRUdHZRa0ZEZEVJc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMjlDUVVNeFFpeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRPM2RDUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdhVUpCUTJwRU8yZENRVU5FTEVsQlFVa3NRMEZCUXl4SFFVRlhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUXk5Q0xFbEJRVWtzUTBGQlF5eEhRVUZYTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpkQ0xFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJReTlETEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8yOUNRVU55UXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRE8zZENRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU5xUkN4VFFVRlRPMmxDUVVOYU8yZENRVU5FTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHR2UWtGRFdpeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMmxDUVVOa08yZENRVU5FTEVsQlFVa3NSVUZCUlN4SFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzWkNMRWxCUVVrc1JVRkJSU3hIUVVGWExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMnBFTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTnVRaXhKUVVGSkxFVkJRVVVzUjBGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdaMEpCUTNwRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlN4RFFVRkRPMjlDUVVOaUxFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1owSkJRM0JDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHR2UWtGRGVrSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTXhRaXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dHBRa0ZEZGtVN1lVRkRTanRaUVVORUxFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdaMEpCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRhRVk3VVVGRlJDeEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0xUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETzFGQlF6RkNMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0JDTEVsQlFVa3NVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXp0UlFVVnlReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZYTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzWkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdG5Ra0ZEZWtJc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRhRUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFpDeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU5rTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNCQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU12UWl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRGRFUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlR0dlFrRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNaVUZCWlN4RlFVRkZPM2RDUVVOMFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8zZENRVU01UWl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdjVUpCUXk5Q08zbENRVUZOTzNkQ1FVTklMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dDNRa0ZEZGtJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdjVUpCUTNoQ08ybENRVU5LTzJGQlEwbzdVMEZEU2p0UlFVTkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEyeENMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTMEZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdHZRa0ZEZWtJc1MwRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTTdiMEpCUTNoQ0xFdEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU16UXp0WlFVTk1MRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMDQ3U1VGVFRDeERRVUZETzBsQlJXTXNaVUZCVHl4SFFVRjBRaXhWUVVGMVFpeERRVUZYTEVWQlFVVXNRMEZCVnp0UlFVTXpReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGVFSXNUMEZCVHl4RFFVRkRMRVZCUVVVN1dVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0zUWl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGSFl5eHhRa0ZCWVN4SFFVRTFRaXhWUVVFMlFpeERRVUZoTEVWQlFVVXNRMEZCVnl4RlFVRkZMRU5CUVZjN1VVRkRhRVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOcVFpeFBRVUZQTEVOQlFVTXNSVUZCUlR0WlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTm9SQ3hEUVVGRE8wbEJTMDBzYVVOQlFXVXNSMEZCZEVJc1ZVRkJkVUlzUTBGQllUdFJRVU5vUXl4SlFVRkpMRk5CUVZNc1IwRkJSeXhEUVVGRExFVkJRVVVzVjBGQlZ5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnVReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTTNRaXhUUVVGVExFbEJRVWtzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemxETEU5QlFVOHNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMjVFTEZkQlFWY3NTVUZCU1N4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEY0VRN1VVRkRSQ3hKUVVGSkxGZEJRVmNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhEUVVGRE8xbEJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZETVVRc1QwRkJUeXhEUVVGRExFZEJRVWNzVTBGQlV5eEhRVUZITEZkQlFWY3NRMEZCUXp0SlFVTjJReXhEUVVGRE8wbEJSVTBzT0VKQlFWa3NSMEZCYmtJN1VVRkRTU3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyaERMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM3BETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRemRDTEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUTNKRU8xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RlFVRkZMRU5CUVVNN1NVRkRhRU1zUTBGQlF6dEpRVVZqTEZsQlFVa3NSMEZCYmtJc1ZVRkJiMElzUTBGQllTeEZRVUZGTEVOQlFXRTdVVUZETlVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnNReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzaENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3WjBKQlEzaENMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEY2tJN1UwRkRTanRKUVVOTUxFTkJRVU03U1VGUlR5eG5RMEZCWXl4SFFVRjBRaXhWUVVGMVFpeEZRVUZqTEVWQlFVVXNRMEZCWVN4RlFVRkZMRU5CUVdFc1JVRkJSU3hSUVVGblFqdFJRVU5xUml4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTndRaXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkRNME1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHp0WlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4wUkN4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETTBNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR6dFpRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVkeVJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRNMElzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE8wbEJWVzVFTEVOQlFVTTdTVUZGWXl4alFVRk5MRWRCUVhKQ0xGVkJRWE5DTEVOQlFWTXNSVUZCUlN4RFFVRlRMRVZCUVVVc1EwRkJaME03VVVGRGVFVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVN1dVRkRka0lzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETzJkQ1FVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEZEVNN1NVRkRUQ3hEUVVGRE8wbEJRMDhzTmtKQlFWY3NSMEZCYmtJc1ZVRkJiMElzUTBGQlowTTdVVUZEYUVRc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZEVNc1EwRkJRenRKUVVWUExIRkRRVUZ0UWl4SFFVRXpRaXhWUVVFMFFpeEZRVUZqTEVWQlFVVXNRMEZCWVR0UlFVRjZSQ3hwUWtGbFF6dFJRV1JITEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTTFRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU42UXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVTB4UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3V1VGRFpDeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlN5eFBRVUZCTEV0QlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQmFrTXNRMEZCYVVNc1EwRkJReXhEUVVGRE8xbEJRemxFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM2hETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRelZETzBsQlEwd3NRMEZCUXp0SlFVVk5MSEZDUVVGSExFZEJRVllzVlVGQlZ5eFZRVUZyUWp0UlFVTjZRaXhKUVVGSkxFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RlFVRkZMRk5CUVZNc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRGFrUXNUMEZCVHl4RFFVRkRMRk5CUVZNc1NVRkJTU3hWUVVGVkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVTdXVUZEYmtNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMWxCUXpGQ0xGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJRenRaUVVOMFJDeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJRN1VVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5zUWl4RFFVRkRPMGxCUlUwc05FSkJRVlVzUjBGQmFrSTdVVUZCUVN4cFFrRmxRenRSUVdSSExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGNrTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTnlReXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNVU1zU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM3BETEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOaUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEV0QlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkRha1lzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJRc1MwRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGNrSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCUldNc1YwRkJSeXhIUVVGc1FpeFZRVUZ0UWl4RFFVRmhMRVZCUVVVc1EwRkJZU3hGUVVGRkxFTkJRV0U3VVVGRE1VUXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTjJReXhQUVVGQkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSenRSUVVFM1F5eERRVUUyUXl4RFFVRkRMRU5CUVVNN1NVRkRka1FzUTBGQlF6dEpRVVZOTEdsRFFVRmxMRWRCUVhSQ0xGVkJRWFZDTEVOQlFWY3NSVUZCUlN4RFFVRlhMRVZCUVVVc1VVRkJaMEk3VVVGRE4wUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRE4wSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UlFVRlJMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEycERPMGxCUTB3c1EwRkJRenRKUVVWTkxDdENRVUZoTEVkQlFYQkNPMUZCUTBrc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyWXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFBRVUZQTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRjRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdaMEpCUTNoRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRWaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0dlFrRkROMElzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOeVF5eERRVUZETEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJRenRwUWtGRGFFSTdaMEpCUTBRc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMnBDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM0pDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVUZGTEZOQlFWTTdaMEpCUXpOQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRMllzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFppeE5RVUZOTEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU03WVVGRE1VSTdVMEZEU2p0UlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZ5VjJNc2IwSkJRVmtzUjBGQlZ5eExRVUZMTEVOQlFVTTdTVUZ6VjJoRUxHTkJRVU03UTBGQlFTeEJRV2haUkN4SlFXZFpRenRCUVdoWldTd3dRa0ZCVHp0QlFXMVpjRUk3U1VGTlNTeHpRa0ZCYlVJc1NVRkJaMEk3VVVGQmFFSXNjVUpCUVVFc1JVRkJRU3hSUVVGblFqdFJRVUZvUWl4VFFVRkpMRWRCUVVvc1NVRkJTU3hEUVVGWk8xRkJURE5DTEUxQlFVTXNSMEZCVnl4TlFVRk5MRU5CUVVNN1VVRkRia0lzVFVGQlF5eEhRVUZYTEU5QlFVOHNRMEZCUXp0UlFVTndRaXhOUVVGRExFZEJRVmNzVlVGQlZTeERRVUZETzFGQlEzWkNMRlZCUVVzc1IwRkJWeXhMUVVGTExFTkJRVU03U1VGRlV5eERRVUZETzBsQlIzaERMRGhDUVVGUExFZEJRVkE3VVVGRFNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1RUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdTVUZETVVNc1EwRkJRenRKUVVkRUxIRkRRVUZqTEVkQlFXUXNWVUZCWlN4SFFVRlhMRVZCUVVVc1IwRkJWenRSUVVOdVF5eFBRVUZQTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRPVU1zUTBGQlF6dEpRVU5NTEcxQ1FVRkRPMEZCUVVRc1EwRkJReXhCUVd4Q1JDeEpRV3RDUXp0QlFXeENXU3h2UTBGQldTSjkiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgUG9zaXRpb25TdGF0cyA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQb3NpdGlvblN0YXRzKHNjYWxlKSB7XHJcbiAgICAgICAgdGhpcy5zY2FsZSA9IHNjYWxlO1xyXG4gICAgICAgIHRoaXMuQUIgPSAwO1xyXG4gICAgICAgIHRoaXMuQUQgPSAwO1xyXG4gICAgICAgIHRoaXMuQTIgPSAwO1xyXG4gICAgfVxyXG4gICAgUG9zaXRpb25TdGF0cy5wcm90b3R5cGUuYWRkVmFyaWFibGUgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBhaSA9IHRoaXMuc2NhbGUgLyB2LnNjYWxlO1xyXG4gICAgICAgIHZhciBiaSA9IHYub2Zmc2V0IC8gdi5zY2FsZTtcclxuICAgICAgICB2YXIgd2kgPSB2LndlaWdodDtcclxuICAgICAgICB0aGlzLkFCICs9IHdpICogYWkgKiBiaTtcclxuICAgICAgICB0aGlzLkFEICs9IHdpICogYWkgKiB2LmRlc2lyZWRQb3NpdGlvbjtcclxuICAgICAgICB0aGlzLkEyICs9IHdpICogYWkgKiBhaTtcclxuICAgIH07XHJcbiAgICBQb3NpdGlvblN0YXRzLnByb3RvdHlwZS5nZXRQb3NuID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5BRCAtIHRoaXMuQUIpIC8gdGhpcy5BMjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUG9zaXRpb25TdGF0cztcclxufSgpKTtcclxuZXhwb3J0cy5Qb3NpdGlvblN0YXRzID0gUG9zaXRpb25TdGF0cztcclxudmFyIENvbnN0cmFpbnQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQ29uc3RyYWludChsZWZ0LCByaWdodCwgZ2FwLCBlcXVhbGl0eSkge1xyXG4gICAgICAgIGlmIChlcXVhbGl0eSA9PT0gdm9pZCAwKSB7IGVxdWFsaXR5ID0gZmFsc2U7IH1cclxuICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0O1xyXG4gICAgICAgIHRoaXMucmlnaHQgPSByaWdodDtcclxuICAgICAgICB0aGlzLmdhcCA9IGdhcDtcclxuICAgICAgICB0aGlzLmVxdWFsaXR5ID0gZXF1YWxpdHk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVuc2F0aXNmaWFibGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0O1xyXG4gICAgICAgIHRoaXMucmlnaHQgPSByaWdodDtcclxuICAgICAgICB0aGlzLmdhcCA9IGdhcDtcclxuICAgICAgICB0aGlzLmVxdWFsaXR5ID0gZXF1YWxpdHk7XHJcbiAgICB9XHJcbiAgICBDb25zdHJhaW50LnByb3RvdHlwZS5zbGFjayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51bnNhdGlzZmlhYmxlID8gTnVtYmVyLk1BWF9WQUxVRVxyXG4gICAgICAgICAgICA6IHRoaXMucmlnaHQuc2NhbGUgKiB0aGlzLnJpZ2h0LnBvc2l0aW9uKCkgLSB0aGlzLmdhcFxyXG4gICAgICAgICAgICAgICAgLSB0aGlzLmxlZnQuc2NhbGUgKiB0aGlzLmxlZnQucG9zaXRpb24oKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gQ29uc3RyYWludDtcclxufSgpKTtcclxuZXhwb3J0cy5Db25zdHJhaW50ID0gQ29uc3RyYWludDtcclxudmFyIFZhcmlhYmxlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZhcmlhYmxlKGRlc2lyZWRQb3NpdGlvbiwgd2VpZ2h0LCBzY2FsZSkge1xyXG4gICAgICAgIGlmICh3ZWlnaHQgPT09IHZvaWQgMCkgeyB3ZWlnaHQgPSAxOyB9XHJcbiAgICAgICAgaWYgKHNjYWxlID09PSB2b2lkIDApIHsgc2NhbGUgPSAxOyB9XHJcbiAgICAgICAgdGhpcy5kZXNpcmVkUG9zaXRpb24gPSBkZXNpcmVkUG9zaXRpb247XHJcbiAgICAgICAgdGhpcy53ZWlnaHQgPSB3ZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5zY2FsZSA9IHNjYWxlO1xyXG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcclxuICAgIH1cclxuICAgIFZhcmlhYmxlLnByb3RvdHlwZS5kZmR2ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAyLjAgKiB0aGlzLndlaWdodCAqICh0aGlzLnBvc2l0aW9uKCkgLSB0aGlzLmRlc2lyZWRQb3NpdGlvbik7XHJcbiAgICB9O1xyXG4gICAgVmFyaWFibGUucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5ibG9jay5wcy5zY2FsZSAqIHRoaXMuYmxvY2sucG9zbiArIHRoaXMub2Zmc2V0KSAvIHRoaXMuc2NhbGU7XHJcbiAgICB9O1xyXG4gICAgVmFyaWFibGUucHJvdG90eXBlLnZpc2l0TmVpZ2hib3VycyA9IGZ1bmN0aW9uIChwcmV2LCBmKSB7XHJcbiAgICAgICAgdmFyIGZmID0gZnVuY3Rpb24gKGMsIG5leHQpIHsgcmV0dXJuIGMuYWN0aXZlICYmIHByZXYgIT09IG5leHQgJiYgZihjLCBuZXh0KTsgfTtcclxuICAgICAgICB0aGlzLmNPdXQuZm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gZmYoYywgYy5yaWdodCk7IH0pO1xyXG4gICAgICAgIHRoaXMuY0luLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGZmKGMsIGMubGVmdCk7IH0pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBWYXJpYWJsZTtcclxufSgpKTtcclxuZXhwb3J0cy5WYXJpYWJsZSA9IFZhcmlhYmxlO1xyXG52YXIgQmxvY2sgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQmxvY2sodikge1xyXG4gICAgICAgIHRoaXMudmFycyA9IFtdO1xyXG4gICAgICAgIHYub2Zmc2V0ID0gMDtcclxuICAgICAgICB0aGlzLnBzID0gbmV3IFBvc2l0aW9uU3RhdHModi5zY2FsZSk7XHJcbiAgICAgICAgdGhpcy5hZGRWYXJpYWJsZSh2KTtcclxuICAgIH1cclxuICAgIEJsb2NrLnByb3RvdHlwZS5hZGRWYXJpYWJsZSA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdi5ibG9jayA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy52YXJzLnB1c2godik7XHJcbiAgICAgICAgdGhpcy5wcy5hZGRWYXJpYWJsZSh2KTtcclxuICAgICAgICB0aGlzLnBvc24gPSB0aGlzLnBzLmdldFBvc24oKTtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUudXBkYXRlV2VpZ2h0ZWRQb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLnBzLkFCID0gdGhpcy5wcy5BRCA9IHRoaXMucHMuQTIgPSAwO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdGhpcy52YXJzLmxlbmd0aDsgaSA8IG47ICsraSlcclxuICAgICAgICAgICAgdGhpcy5wcy5hZGRWYXJpYWJsZSh0aGlzLnZhcnNbaV0pO1xyXG4gICAgICAgIHRoaXMucG9zbiA9IHRoaXMucHMuZ2V0UG9zbigpO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnByb3RvdHlwZS5jb21wdXRlX2xtID0gZnVuY3Rpb24gKHYsIHUsIHBvc3RBY3Rpb24pIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciBkZmR2ID0gdi5kZmR2KCk7XHJcbiAgICAgICAgdi52aXNpdE5laWdoYm91cnModSwgZnVuY3Rpb24gKGMsIG5leHQpIHtcclxuICAgICAgICAgICAgdmFyIF9kZmR2ID0gX3RoaXMuY29tcHV0ZV9sbShuZXh0LCB2LCBwb3N0QWN0aW9uKTtcclxuICAgICAgICAgICAgaWYgKG5leHQgPT09IGMucmlnaHQpIHtcclxuICAgICAgICAgICAgICAgIGRmZHYgKz0gX2RmZHYgKiBjLmxlZnQuc2NhbGU7XHJcbiAgICAgICAgICAgICAgICBjLmxtID0gX2RmZHY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkZmR2ICs9IF9kZmR2ICogYy5yaWdodC5zY2FsZTtcclxuICAgICAgICAgICAgICAgIGMubG0gPSAtX2RmZHY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcG9zdEFjdGlvbihjKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZGZkdiAvIHYuc2NhbGU7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLnBvcHVsYXRlU3BsaXRCbG9jayA9IGZ1bmN0aW9uICh2LCBwcmV2KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2LnZpc2l0TmVpZ2hib3VycyhwcmV2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBuZXh0Lm9mZnNldCA9IHYub2Zmc2V0ICsgKG5leHQgPT09IGMucmlnaHQgPyBjLmdhcCA6IC1jLmdhcCk7XHJcbiAgICAgICAgICAgIF90aGlzLmFkZFZhcmlhYmxlKG5leHQpO1xyXG4gICAgICAgICAgICBfdGhpcy5wb3B1bGF0ZVNwbGl0QmxvY2sobmV4dCwgdik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24gKHZpc2l0LCBhY2MsIHYsIHByZXYpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmICh2ID09PSB2b2lkIDApIHsgdiA9IHRoaXMudmFyc1swXTsgfVxyXG4gICAgICAgIGlmIChwcmV2ID09PSB2b2lkIDApIHsgcHJldiA9IG51bGw7IH1cclxuICAgICAgICB2LnZpc2l0TmVpZ2hib3VycyhwcmV2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBhY2MucHVzaCh2aXNpdChjKSk7XHJcbiAgICAgICAgICAgIF90aGlzLnRyYXZlcnNlKHZpc2l0LCBhY2MsIG5leHQsIHYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnByb3RvdHlwZS5maW5kTWluTE0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIG0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY29tcHV0ZV9sbSh0aGlzLnZhcnNbMF0sIG51bGwsIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgICAgIGlmICghYy5lcXVhbGl0eSAmJiAobSA9PT0gbnVsbCB8fCBjLmxtIDwgbS5sbSkpXHJcbiAgICAgICAgICAgICAgICBtID0gYztcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbTtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUuZmluZE1pbkxNQmV0d2VlbiA9IGZ1bmN0aW9uIChsdiwgcnYpIHtcclxuICAgICAgICB0aGlzLmNvbXB1dGVfbG0obHYsIG51bGwsIGZ1bmN0aW9uICgpIHsgfSk7XHJcbiAgICAgICAgdmFyIG0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZmluZFBhdGgobHYsIG51bGwsIHJ2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBpZiAoIWMuZXF1YWxpdHkgJiYgYy5yaWdodCA9PT0gbmV4dCAmJiAobSA9PT0gbnVsbCB8fCBjLmxtIDwgbS5sbSkpXHJcbiAgICAgICAgICAgICAgICBtID0gYztcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbTtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUuZmluZFBhdGggPSBmdW5jdGlvbiAodiwgcHJldiwgdG8sIHZpc2l0KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgZW5kRm91bmQgPSBmYWxzZTtcclxuICAgICAgICB2LnZpc2l0TmVpZ2hib3VycyhwcmV2LCBmdW5jdGlvbiAoYywgbmV4dCkge1xyXG4gICAgICAgICAgICBpZiAoIWVuZEZvdW5kICYmIChuZXh0ID09PSB0byB8fCBfdGhpcy5maW5kUGF0aChuZXh0LCB2LCB0bywgdmlzaXQpKSkge1xyXG4gICAgICAgICAgICAgICAgZW5kRm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdmlzaXQoYywgbmV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZW5kRm91bmQ7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLmlzQWN0aXZlRGlyZWN0ZWRQYXRoQmV0d2VlbiA9IGZ1bmN0aW9uICh1LCB2KSB7XHJcbiAgICAgICAgaWYgKHUgPT09IHYpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHZhciBpID0gdS5jT3V0Lmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gdS5jT3V0W2ldO1xyXG4gICAgICAgICAgICBpZiAoYy5hY3RpdmUgJiYgdGhpcy5pc0FjdGl2ZURpcmVjdGVkUGF0aEJldHdlZW4oYy5yaWdodCwgdikpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnNwbGl0ID0gZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICBjLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBbQmxvY2suY3JlYXRlU3BsaXRCbG9jayhjLmxlZnQpLCBCbG9jay5jcmVhdGVTcGxpdEJsb2NrKGMucmlnaHQpXTtcclxuICAgIH07XHJcbiAgICBCbG9jay5jcmVhdGVTcGxpdEJsb2NrID0gZnVuY3Rpb24gKHN0YXJ0VmFyKSB7XHJcbiAgICAgICAgdmFyIGIgPSBuZXcgQmxvY2soc3RhcnRWYXIpO1xyXG4gICAgICAgIGIucG9wdWxhdGVTcGxpdEJsb2NrKHN0YXJ0VmFyLCBudWxsKTtcclxuICAgICAgICByZXR1cm4gYjtcclxuICAgIH07XHJcbiAgICBCbG9jay5wcm90b3R5cGUuc3BsaXRCZXR3ZWVuID0gZnVuY3Rpb24gKHZsLCB2cikge1xyXG4gICAgICAgIHZhciBjID0gdGhpcy5maW5kTWluTE1CZXR3ZWVuKHZsLCB2cik7XHJcbiAgICAgICAgaWYgKGMgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIGJzID0gQmxvY2suc3BsaXQoYyk7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGNvbnN0cmFpbnQ6IGMsIGxiOiBic1swXSwgcmI6IGJzWzFdIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICAgIEJsb2NrLnByb3RvdHlwZS5tZXJnZUFjcm9zcyA9IGZ1bmN0aW9uIChiLCBjLCBkaXN0KSB7XHJcbiAgICAgICAgYy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gYi52YXJzLmxlbmd0aDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgdiA9IGIudmFyc1tpXTtcclxuICAgICAgICAgICAgdi5vZmZzZXQgKz0gZGlzdDtcclxuICAgICAgICAgICAgdGhpcy5hZGRWYXJpYWJsZSh2KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3NuID0gdGhpcy5wcy5nZXRQb3NuKCk7XHJcbiAgICB9O1xyXG4gICAgQmxvY2sucHJvdG90eXBlLmNvc3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHN1bSA9IDAsIGkgPSB0aGlzLnZhcnMubGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgdmFyIHYgPSB0aGlzLnZhcnNbaV0sIGQgPSB2LnBvc2l0aW9uKCkgLSB2LmRlc2lyZWRQb3NpdGlvbjtcclxuICAgICAgICAgICAgc3VtICs9IGQgKiBkICogdi53ZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEJsb2NrO1xyXG59KCkpO1xyXG5leHBvcnRzLkJsb2NrID0gQmxvY2s7XHJcbnZhciBCbG9ja3MgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQmxvY2tzKHZzKSB7XHJcbiAgICAgICAgdGhpcy52cyA9IHZzO1xyXG4gICAgICAgIHZhciBuID0gdnMubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMubGlzdCA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICB3aGlsZSAobi0tKSB7XHJcbiAgICAgICAgICAgIHZhciBiID0gbmV3IEJsb2NrKHZzW25dKTtcclxuICAgICAgICAgICAgdGhpcy5saXN0W25dID0gYjtcclxuICAgICAgICAgICAgYi5ibG9ja0luZCA9IG47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQmxvY2tzLnByb3RvdHlwZS5jb3N0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzdW0gPSAwLCBpID0gdGhpcy5saXN0Lmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAoaS0tKVxyXG4gICAgICAgICAgICBzdW0gKz0gdGhpcy5saXN0W2ldLmNvc3QoKTtcclxuICAgICAgICByZXR1cm4gc3VtO1xyXG4gICAgfTtcclxuICAgIEJsb2Nrcy5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24gKGIpIHtcclxuICAgICAgICBiLmJsb2NrSW5kID0gdGhpcy5saXN0Lmxlbmd0aDtcclxuICAgICAgICB0aGlzLmxpc3QucHVzaChiKTtcclxuICAgIH07XHJcbiAgICBCbG9ja3MucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChiKSB7XHJcbiAgICAgICAgdmFyIGxhc3QgPSB0aGlzLmxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgICB2YXIgc3dhcEJsb2NrID0gdGhpcy5saXN0W2xhc3RdO1xyXG4gICAgICAgIHRoaXMubGlzdC5sZW5ndGggPSBsYXN0O1xyXG4gICAgICAgIGlmIChiICE9PSBzd2FwQmxvY2spIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0W2IuYmxvY2tJbmRdID0gc3dhcEJsb2NrO1xyXG4gICAgICAgICAgICBzd2FwQmxvY2suYmxvY2tJbmQgPSBiLmJsb2NrSW5kO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBCbG9ja3MucHJvdG90eXBlLm1lcmdlID0gZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICB2YXIgbCA9IGMubGVmdC5ibG9jaywgciA9IGMucmlnaHQuYmxvY2s7XHJcbiAgICAgICAgdmFyIGRpc3QgPSBjLnJpZ2h0Lm9mZnNldCAtIGMubGVmdC5vZmZzZXQgLSBjLmdhcDtcclxuICAgICAgICBpZiAobC52YXJzLmxlbmd0aCA8IHIudmFycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgci5tZXJnZUFjcm9zcyhsLCBjLCBkaXN0KTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmUobCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsLm1lcmdlQWNyb3NzKHIsIGMsIC1kaXN0KTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmUocik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEJsb2Nrcy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgdGhpcy5saXN0LmZvckVhY2goZik7XHJcbiAgICB9O1xyXG4gICAgQmxvY2tzLnByb3RvdHlwZS51cGRhdGVCbG9ja1Bvc2l0aW9ucyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaChmdW5jdGlvbiAoYikgeyByZXR1cm4gYi51cGRhdGVXZWlnaHRlZFBvc2l0aW9uKCk7IH0pO1xyXG4gICAgfTtcclxuICAgIEJsb2Nrcy5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiAoaW5hY3RpdmUpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQmxvY2tQb3NpdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaChmdW5jdGlvbiAoYikge1xyXG4gICAgICAgICAgICB2YXIgdiA9IGIuZmluZE1pbkxNKCk7XHJcbiAgICAgICAgICAgIGlmICh2ICE9PSBudWxsICYmIHYubG0gPCBTb2x2ZXIuTEFHUkFOR0lBTl9UT0xFUkFOQ0UpIHtcclxuICAgICAgICAgICAgICAgIGIgPSB2LmxlZnQuYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBCbG9jay5zcGxpdCh2KS5mb3JFYWNoKGZ1bmN0aW9uIChuYikgeyByZXR1cm4gX3RoaXMuaW5zZXJ0KG5iKTsgfSk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5yZW1vdmUoYik7XHJcbiAgICAgICAgICAgICAgICBpbmFjdGl2ZS5wdXNoKHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEJsb2NrcztcclxufSgpKTtcclxuZXhwb3J0cy5CbG9ja3MgPSBCbG9ja3M7XHJcbnZhciBTb2x2ZXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gU29sdmVyKHZzLCBjcykge1xyXG4gICAgICAgIHRoaXMudnMgPSB2cztcclxuICAgICAgICB0aGlzLmNzID0gY3M7XHJcbiAgICAgICAgdGhpcy52cyA9IHZzO1xyXG4gICAgICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgdi5jSW4gPSBbXSwgdi5jT3V0ID0gW107XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jcyA9IGNzO1xyXG4gICAgICAgIGNzLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICAgICAgYy5sZWZ0LmNPdXQucHVzaChjKTtcclxuICAgICAgICAgICAgYy5yaWdodC5jSW4ucHVzaChjKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmluYWN0aXZlID0gY3MubWFwKGZ1bmN0aW9uIChjKSB7IGMuYWN0aXZlID0gZmFsc2U7IHJldHVybiBjOyB9KTtcclxuICAgICAgICB0aGlzLmJzID0gbnVsbDtcclxuICAgIH1cclxuICAgIFNvbHZlci5wcm90b3R5cGUuY29zdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5icy5jb3N0KCk7XHJcbiAgICB9O1xyXG4gICAgU29sdmVyLnByb3RvdHlwZS5zZXRTdGFydGluZ1Bvc2l0aW9ucyA9IGZ1bmN0aW9uIChwcykge1xyXG4gICAgICAgIHRoaXMuaW5hY3RpdmUgPSB0aGlzLmNzLm1hcChmdW5jdGlvbiAoYykgeyBjLmFjdGl2ZSA9IGZhbHNlOyByZXR1cm4gYzsgfSk7XHJcbiAgICAgICAgdGhpcy5icyA9IG5ldyBCbG9ja3ModGhpcy52cyk7XHJcbiAgICAgICAgdGhpcy5icy5mb3JFYWNoKGZ1bmN0aW9uIChiLCBpKSB7IHJldHVybiBiLnBvc24gPSBwc1tpXTsgfSk7XHJcbiAgICB9O1xyXG4gICAgU29sdmVyLnByb3RvdHlwZS5zZXREZXNpcmVkUG9zaXRpb25zID0gZnVuY3Rpb24gKHBzKSB7XHJcbiAgICAgICAgdGhpcy52cy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiB2LmRlc2lyZWRQb3NpdGlvbiA9IHBzW2ldOyB9KTtcclxuICAgIH07XHJcbiAgICBTb2x2ZXIucHJvdG90eXBlLm1vc3RWaW9sYXRlZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgbWluU2xhY2sgPSBOdW1iZXIuTUFYX1ZBTFVFLCB2ID0gbnVsbCwgbCA9IHRoaXMuaW5hY3RpdmUsIG4gPSBsLmxlbmd0aCwgZGVsZXRlUG9pbnQgPSBuO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gbFtpXTtcclxuICAgICAgICAgICAgaWYgKGMudW5zYXRpc2ZpYWJsZSlcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB2YXIgc2xhY2sgPSBjLnNsYWNrKCk7XHJcbiAgICAgICAgICAgIGlmIChjLmVxdWFsaXR5IHx8IHNsYWNrIDwgbWluU2xhY2spIHtcclxuICAgICAgICAgICAgICAgIG1pblNsYWNrID0gc2xhY2s7XHJcbiAgICAgICAgICAgICAgICB2ID0gYztcclxuICAgICAgICAgICAgICAgIGRlbGV0ZVBvaW50ID0gaTtcclxuICAgICAgICAgICAgICAgIGlmIChjLmVxdWFsaXR5KVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZWxldGVQb2ludCAhPT0gbiAmJlxyXG4gICAgICAgICAgICAobWluU2xhY2sgPCBTb2x2ZXIuWkVST19VUFBFUkJPVU5EICYmICF2LmFjdGl2ZSB8fCB2LmVxdWFsaXR5KSkge1xyXG4gICAgICAgICAgICBsW2RlbGV0ZVBvaW50XSA9IGxbbiAtIDFdO1xyXG4gICAgICAgICAgICBsLmxlbmd0aCA9IG4gLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdjtcclxuICAgIH07XHJcbiAgICBTb2x2ZXIucHJvdG90eXBlLnNhdGlzZnkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYnMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmJzID0gbmV3IEJsb2Nrcyh0aGlzLnZzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5icy5zcGxpdCh0aGlzLmluYWN0aXZlKTtcclxuICAgICAgICB2YXIgdiA9IG51bGw7XHJcbiAgICAgICAgd2hpbGUgKCh2ID0gdGhpcy5tb3N0VmlvbGF0ZWQoKSkgJiYgKHYuZXF1YWxpdHkgfHwgdi5zbGFjaygpIDwgU29sdmVyLlpFUk9fVVBQRVJCT1VORCAmJiAhdi5hY3RpdmUpKSB7XHJcbiAgICAgICAgICAgIHZhciBsYiA9IHYubGVmdC5ibG9jaywgcmIgPSB2LnJpZ2h0LmJsb2NrO1xyXG4gICAgICAgICAgICBpZiAobGIgIT09IHJiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJzLm1lcmdlKHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxiLmlzQWN0aXZlRGlyZWN0ZWRQYXRoQmV0d2Vlbih2LnJpZ2h0LCB2LmxlZnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdi51bnNhdGlzZmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBzcGxpdCA9IGxiLnNwbGl0QmV0d2Vlbih2LmxlZnQsIHYucmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNwbGl0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icy5pbnNlcnQoc3BsaXQubGIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnMuaW5zZXJ0KHNwbGl0LnJiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJzLnJlbW92ZShsYik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmFjdGl2ZS5wdXNoKHNwbGl0LmNvbnN0cmFpbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdi51bnNhdGlzZmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh2LnNsYWNrKCkgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5hY3RpdmUucHVzaCh2KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnMubWVyZ2Uodik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgU29sdmVyLnByb3RvdHlwZS5zb2x2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLnNhdGlzZnkoKTtcclxuICAgICAgICB2YXIgbGFzdGNvc3QgPSBOdW1iZXIuTUFYX1ZBTFVFLCBjb3N0ID0gdGhpcy5icy5jb3N0KCk7XHJcbiAgICAgICAgd2hpbGUgKE1hdGguYWJzKGxhc3Rjb3N0IC0gY29zdCkgPiAwLjAwMDEpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXRpc2Z5KCk7XHJcbiAgICAgICAgICAgIGxhc3Rjb3N0ID0gY29zdDtcclxuICAgICAgICAgICAgY29zdCA9IHRoaXMuYnMuY29zdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29zdDtcclxuICAgIH07XHJcbiAgICBTb2x2ZXIuTEFHUkFOR0lBTl9UT0xFUkFOQ0UgPSAtMWUtNDtcclxuICAgIFNvbHZlci5aRVJPX1VQUEVSQk9VTkQgPSAtMWUtMTA7XHJcbiAgICByZXR1cm4gU29sdmVyO1xyXG59KCkpO1xyXG5leHBvcnRzLlNvbHZlciA9IFNvbHZlcjtcclxuZnVuY3Rpb24gcmVtb3ZlT3ZlcmxhcEluT25lRGltZW5zaW9uKHNwYW5zLCBsb3dlckJvdW5kLCB1cHBlckJvdW5kKSB7XHJcbiAgICB2YXIgdnMgPSBzcGFucy5tYXAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIG5ldyBWYXJpYWJsZShzLmRlc2lyZWRDZW50ZXIpOyB9KTtcclxuICAgIHZhciBjcyA9IFtdO1xyXG4gICAgdmFyIG4gPSBzcGFucy5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHtcclxuICAgICAgICB2YXIgbGVmdCA9IHNwYW5zW2ldLCByaWdodCA9IHNwYW5zW2kgKyAxXTtcclxuICAgICAgICBjcy5wdXNoKG5ldyBDb25zdHJhaW50KHZzW2ldLCB2c1tpICsgMV0sIChsZWZ0LnNpemUgKyByaWdodC5zaXplKSAvIDIpKTtcclxuICAgIH1cclxuICAgIHZhciBsZWZ0TW9zdCA9IHZzWzBdLCByaWdodE1vc3QgPSB2c1tuIC0gMV0sIGxlZnRNb3N0U2l6ZSA9IHNwYW5zWzBdLnNpemUgLyAyLCByaWdodE1vc3RTaXplID0gc3BhbnNbbiAtIDFdLnNpemUgLyAyO1xyXG4gICAgdmFyIHZMb3dlciA9IG51bGwsIHZVcHBlciA9IG51bGw7XHJcbiAgICBpZiAobG93ZXJCb3VuZCkge1xyXG4gICAgICAgIHZMb3dlciA9IG5ldyBWYXJpYWJsZShsb3dlckJvdW5kLCBsZWZ0TW9zdC53ZWlnaHQgKiAxMDAwKTtcclxuICAgICAgICB2cy5wdXNoKHZMb3dlcik7XHJcbiAgICAgICAgY3MucHVzaChuZXcgQ29uc3RyYWludCh2TG93ZXIsIGxlZnRNb3N0LCBsZWZ0TW9zdFNpemUpKTtcclxuICAgIH1cclxuICAgIGlmICh1cHBlckJvdW5kKSB7XHJcbiAgICAgICAgdlVwcGVyID0gbmV3IFZhcmlhYmxlKHVwcGVyQm91bmQsIHJpZ2h0TW9zdC53ZWlnaHQgKiAxMDAwKTtcclxuICAgICAgICB2cy5wdXNoKHZVcHBlcik7XHJcbiAgICAgICAgY3MucHVzaChuZXcgQ29uc3RyYWludChyaWdodE1vc3QsIHZVcHBlciwgcmlnaHRNb3N0U2l6ZSkpO1xyXG4gICAgfVxyXG4gICAgdmFyIHNvbHZlciA9IG5ldyBTb2x2ZXIodnMsIGNzKTtcclxuICAgIHNvbHZlci5zb2x2ZSgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXdDZW50ZXJzOiB2cy5zbGljZSgwLCBzcGFucy5sZW5ndGgpLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi5wb3NpdGlvbigpOyB9KSxcclxuICAgICAgICBsb3dlckJvdW5kOiB2TG93ZXIgPyB2TG93ZXIucG9zaXRpb24oKSA6IGxlZnRNb3N0LnBvc2l0aW9uKCkgLSBsZWZ0TW9zdFNpemUsXHJcbiAgICAgICAgdXBwZXJCb3VuZDogdlVwcGVyID8gdlVwcGVyLnBvc2l0aW9uKCkgOiByaWdodE1vc3QucG9zaXRpb24oKSArIHJpZ2h0TW9zdFNpemVcclxuICAgIH07XHJcbn1cclxuZXhwb3J0cy5yZW1vdmVPdmVybGFwSW5PbmVEaW1lbnNpb24gPSByZW1vdmVPdmVybGFwSW5PbmVEaW1lbnNpb247XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRuQnpZeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDFkbFlrTnZiR0V2YzNKakwzWndjMk11ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJTVHRKUVV0SkxIVkNRVUZ0UWl4TFFVRmhPMUZCUVdJc1ZVRkJTeXhIUVVGTUxFdEJRVXNzUTBGQlVUdFJRVXBvUXl4UFFVRkZMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRMllzVDBGQlJTeEhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTm1MRTlCUVVVc1IwRkJWeXhEUVVGRExFTkJRVU03U1VGRmIwSXNRMEZCUXp0SlFVVndReXh0UTBGQlZ5eEhRVUZZTEZWQlFWa3NRMEZCVnp0UlFVTnVRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRE9VSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUXpWQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRiRUlzU1VGQlNTeERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU40UWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMR1ZCUVdVc1EwRkJRenRSUVVOMlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlF6VkNMRU5CUVVNN1NVRkZSQ3dyUWtGQlR5eEhRVUZRTzFGQlEwa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRGVrTXNRMEZCUXp0SlFVTk1MRzlDUVVGRE8wRkJRVVFzUTBGQlF5eEJRVzVDUkN4SlFXMUNRenRCUVc1Q1dTeHpRMEZCWVR0QlFYRkNNVUk3U1VGTFNTeHZRa0ZCYlVJc1NVRkJZeXhGUVVGVExFdEJRV1VzUlVGQlV5eEhRVUZYTEVWQlFWTXNVVUZCZVVJN1VVRkJla0lzZVVKQlFVRXNSVUZCUVN4blFrRkJlVUk3VVVGQk5VWXNVMEZCU1N4SFFVRktMRWxCUVVrc1EwRkJWVHRSUVVGVExGVkJRVXNzUjBGQlRDeExRVUZMTEVOQlFWVTdVVUZCVXl4UlFVRkhMRWRCUVVnc1IwRkJSeXhEUVVGUk8xRkJRVk1zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCYVVJN1VVRklMMGNzVjBGQlRTeEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVTjRRaXhyUWtGQllTeEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVY3pRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnFRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVTnVRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVTm1MRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVVVGQlVTeERRVUZETzBsQlF6ZENMRU5CUVVNN1NVRkZSQ3d3UWtGQlN5eEhRVUZNTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNVMEZCVXp0WlFVTjRReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSenRyUWtGRGJrUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRKUVVOcVJDeERRVUZETzBsQlEwd3NhVUpCUVVNN1FVRkJSQ3hEUVVGRExFRkJha0pFTEVsQmFVSkRPMEZCYWtKWkxHZERRVUZWTzBGQmJVSjJRanRKUVUxSkxHdENRVUZ0UWl4bFFVRjFRaXhGUVVGVExFMUJRV3RDTEVWQlFWTXNTMEZCYVVJN1VVRkJOVU1zZFVKQlFVRXNSVUZCUVN4VlFVRnJRanRSUVVGVExITkNRVUZCTEVWQlFVRXNVMEZCYVVJN1VVRkJOVVVzYjBKQlFXVXNSMEZCWml4bFFVRmxMRU5CUVZFN1VVRkJVeXhYUVVGTkxFZEJRVTRzVFVGQlRTeERRVUZaTzFGQlFWTXNWVUZCU3l4SFFVRk1MRXRCUVVzc1EwRkJXVHRSUVV3dlJpeFhRVUZOTEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCU3l0RkxFTkJRVU03U1VGRmJrY3NkVUpCUVVrc1IwRkJTanRSUVVOSkxFOUJRVThzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8wbEJRM2hGTEVOQlFVTTdTVUZGUkN3eVFrRkJVU3hIUVVGU08xRkJRMGtzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenRKUVVNNVJTeERRVUZETzBsQlIwUXNhME5CUVdVc1IwRkJaaXhWUVVGblFpeEpRVUZqTEVWQlFVVXNRMEZCTUVNN1VVRkRkRVVzU1VGQlNTeEZRVUZGTEVkQlFVY3NWVUZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRXRCUVVzc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRVZCUVhaRExFTkJRWFZETEVOQlFVTTdVVUZET1VRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJaQ3hEUVVGakxFTkJRVU1zUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRmlMRU5CUVdFc1EwRkJReXhEUVVGRE8wbEJRM2hETEVOQlFVTTdTVUZEVEN4bFFVRkRPMEZCUVVRc1EwRkJReXhCUVhSQ1JDeEpRWE5DUXp0QlFYUkNXU3cwUWtGQlVUdEJRWGRDY2tJN1NVRk5TU3hsUVVGWkxFTkJRVmM3VVVGTWRrSXNVMEZCU1N4SFFVRmxMRVZCUVVVc1EwRkJRenRSUVUxc1FpeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOaUxFbEJRVWtzUTBGQlF5eEZRVUZGTEVkQlFVY3NTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzSkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVJc1EwRkJRenRKUVVWUExESkNRVUZYTEVkQlFXNUNMRlZCUVc5Q0xFTkJRVmM3VVVGRE0wSXNRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRFppeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03U1VGRGJFTXNRMEZCUXp0SlFVZEVMSE5EUVVGelFpeEhRVUYwUWp0UlFVTkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVONlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdXVUZETlVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOc1F5eERRVUZETzBsQlJVOHNNRUpCUVZVc1IwRkJiRUlzVlVGQmJVSXNRMEZCVnl4RlFVRkZMRU5CUVZjc1JVRkJSU3hWUVVGcFF6dFJRVUU1UlN4cFFrRmpRenRSUVdKSExFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRSUVVOd1FpeERRVUZETEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hWUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTzFsQlEzcENMRWxCUVVrc1MwRkJTeXhIUVVGSExFdEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dFpRVU5xUkN4SlFVRkpMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTzJkQ1FVTnNRaXhKUVVGSkxFbEJRVWtzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8yZENRVU0zUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF6dGhRVU5vUWp0cFFrRkJUVHRuUWtGRFNDeEpRVUZKTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETzJkQ1FVTTVRaXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRPMkZCUTJwQ08xbEJRMFFzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJ4Q0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NUMEZCVHl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dEpRVU14UWl4RFFVRkRPMGxCUlU4c2EwTkJRV3RDTEVkQlFURkNMRlZCUVRKQ0xFTkJRVmNzUlVGQlJTeEpRVUZqTzFGQlFYUkVMR2xDUVUxRE8xRkJURWNzUTBGQlF5eERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJReXhEUVVGRExFVkJRVVVzU1VGQlNUdFpRVU0xUWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkROMFFzUzBGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVOMlFpeExRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlExQXNRMEZCUXp0SlFVZEVMSGRDUVVGUkxFZEJRVklzVlVGQlV5eExRVUUyUWl4RlFVRkZMRWRCUVZVc1JVRkJSU3hEUVVFd1FpeEZRVUZGTEVsQlFXMUNPMUZCUVc1SExHbENRVXRETzFGQlRHMUVMR3RDUVVGQkxFVkJRVUVzU1VGQll5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVGRkxIRkNRVUZCTEVWQlFVRXNWMEZCYlVJN1VVRkRMMFlzUTBGQlF5eERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJReXhEUVVGRExFVkJRVVVzU1VGQlNUdFpRVU0xUWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTI1Q0xFdEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFVDeERRVUZETzBsQlMwUXNlVUpCUVZNc1IwRkJWRHRSUVVOSkxFbEJRVWtzUTBGQlF5eEhRVUZsTEVsQlFVa3NRMEZCUXp0UlFVTjZRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeEZRVUZGTEZWQlFVRXNRMEZCUXp0WlFVTnFReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNTVUZCU1N4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8yZENRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRNVVFzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRlR5eG5RMEZCWjBJc1IwRkJlRUlzVlVGQmVVSXNSVUZCV1N4RlFVRkZMRVZCUVZrN1VVRkRMME1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1NVRkJTU3hGUVVGRkxHTkJRVThzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY0VNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEySXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4VlFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSk8xbEJRMmhETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hKUVVGSkxFTkJRVU1zUTBGQlF5eExRVUZMTEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNNVJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRMklzUTBGQlF6dEpRVVZQTEhkQ1FVRlJMRWRCUVdoQ0xGVkJRV2xDTEVOQlFWY3NSVUZCUlN4SlFVRmpMRVZCUVVVc1JVRkJXU3hGUVVGRkxFdEJRVEpETzFGQlFYWkhMR2xDUVZWRE8xRkJWRWNzU1VGQlNTeFJRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTNKQ0xFTkJRVU1zUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RlFVRkZMRlZCUVVNc1EwRkJReXhGUVVGRkxFbEJRVWs3V1VGRE5VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eEZRVUZGTEVsQlFVa3NTMEZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVOdVJUdG5Ra0ZEU1N4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRE8yZENRVU5vUWl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEyeENPMUZCUTB3c1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEZGQlFWRXNRMEZCUXp0SlFVTndRaXhEUVVGRE8wbEJTVVFzTWtOQlFUSkNMRWRCUVROQ0xGVkJRVFJDTEVOQlFWY3NSVUZCUlN4RFFVRlhPMUZCUTJoRUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenRSUVVONlFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU4wUWl4UFFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRMUFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5zUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETERKQ1FVRXlRaXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RFFVRkRPMmRDUVVONFJDeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTnVRanRSUVVORUxFOUJRVThzUzBGQlN5eERRVUZETzBsQlEycENMRU5CUVVNN1NVRkhUU3hYUVVGTExFZEJRVm9zVlVGQllTeERRVUZoTzFGQlMzUkNMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEycENMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNM1JTeERRVUZETzBsQlJXTXNjMEpCUVdkQ0xFZEJRUzlDTEZWQlFXZERMRkZCUVd0Q08xRkJRemxETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFGQlF6VkNMRU5CUVVNc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGNrTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRZaXhEUVVGRE8wbEJSMFFzTkVKQlFWa3NSMEZCV2l4VlFVRmhMRVZCUVZrc1JVRkJSU3hGUVVGWk8xRkJTMjVETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGRFTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hGUVVGRk8xbEJRMW9zU1VGQlNTeEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU40UWl4UFFVRlBMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRUUVVOc1JEdFJRVVZFTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGRlJDd3lRa0ZCVnl4SFFVRllMRlZCUVZrc1EwRkJVU3hGUVVGRkxFTkJRV0VzUlVGQlJTeEpRVUZaTzFGQlF6ZERMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyaENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRek5ETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYkVJc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTTdXVUZEYWtJc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTjJRanRSUVVORUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEpRVU5zUXl4RFFVRkRPMGxCUlVRc2IwSkJRVWtzUjBGQlNqdFJRVU5KTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRiRU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTlNMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTJoQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExHVkJRV1VzUTBGQlF6dFpRVU42UXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMU5CUXpOQ08xRkJRMFFzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWml4RFFVRkRPMGxCVTB3c1dVRkJRenRCUVVGRUxFTkJRVU1zUVVGc1MwUXNTVUZyUzBNN1FVRnNTMWtzYzBKQlFVczdRVUZ2UzJ4Q08wbEJSMGtzWjBKQlFXMUNMRVZCUVdNN1VVRkJaQ3hQUVVGRkxFZEJRVVlzUlVGQlJTeERRVUZaTzFGQlF6ZENMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYkVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlFpeFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTFJc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYWtJc1EwRkJReXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEYkVJN1NVRkRUQ3hEUVVGRE8wbEJSVVFzY1VKQlFVa3NSMEZCU2p0UlFVTkpMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGJFTXNUMEZCVHl4RFFVRkRMRVZCUVVVN1dVRkJSU3hIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFJRVU4yUXl4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVObUxFTkJRVU03U1VGRlJDeDFRa0ZCVFN4SFFVRk9MRlZCUVU4c1EwRkJVVHRSUVVsWUxFTkJRVU1zUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRE9VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZMZEVJc1EwRkJRenRKUVVWRUxIVkNRVUZOTEVkQlFVNHNWVUZCVHl4RFFVRlJPMUZCUzFnc1NVRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMmhETEVsQlFVa3NVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEYUVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNoQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEZOQlFWTXNSVUZCUlR0WlFVTnFRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU03V1VGRGJFTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETzFOQlNXNURPMGxCUTB3c1EwRkJRenRKUVVsRUxITkNRVUZMTEVkQlFVd3NWVUZCVFN4RFFVRmhPMUZCUTJZc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCU1hoRExFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03VVVGRGJFUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVNdlFpeERRVUZETEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTnNRanRoUVVGTk8xbEJRMGdzUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETTBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTnNRanRKUVV0TUxFTkJRVU03U1VGRlJDeDNRa0ZCVHl4SFFVRlFMRlZCUVZFc1EwRkJaME03VVVGRGNFTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZWtJc1EwRkJRenRKUVVkRUxIRkRRVUZ2UWl4SFFVRndRanRSUVVOSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEhOQ1FVRnpRaXhGUVVGRkxFVkJRVEZDTEVOQlFUQkNMRU5CUVVNc1EwRkJRenRKUVVOMFJDeERRVUZETzBsQlIwUXNjMEpCUVVzc1IwRkJUQ3hWUVVGTkxGRkJRWE5DTzFGQlFUVkNMR2xDUVdWRE8xRkJaRWNzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhGUVVGRkxFTkJRVU03VVVGRE5VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETzFsQlEyWXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzFsQlEzUkNMRWxCUVVrc1EwRkJReXhMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJReXh2UWtGQmIwSXNSVUZCUlR0blFrRkRiRVFzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8yZENRVU5xUWl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRVZCUVVVc1NVRkJSU3hQUVVGQkxFdEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVdZc1EwRkJaU3hEUVVGRExFTkJRVU03WjBKQlF6VkRMRXRCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTJZc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVdHdRanRSUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlExQXNRMEZCUXp0SlFXOUNUQ3hoUVVGRE8wRkJRVVFzUTBGQlF5eEJRV3hJUkN4SlFXdElRenRCUVd4SVdTeDNRa0ZCVFR0QlFXOUlia0k3U1VGUFNTeG5Ra0ZCYlVJc1JVRkJZeXhGUVVGVExFVkJRV2RDTzFGQlFYWkRMRTlCUVVVc1IwRkJSaXhGUVVGRkxFTkJRVms3VVVGQlV5eFBRVUZGTEVkQlFVWXNSVUZCUlN4RFFVRmpPMUZCUTNSRUxFbEJRVWtzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJJc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEVWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVrMVFpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEySXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03V1VGRFVpeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY0VJc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJTWGhDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGTExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTFSQ3hKUVVGSkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVVFzY1VKQlFVa3NSMEZCU2p0UlFVTkpMRTlCUVU4c1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJTVVFzY1VOQlFXOUNMRWRCUVhCQ0xGVkJRWEZDTEVWQlFWazdVVUZETjBJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlN5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha1VzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZET1VJc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRV1FzUTBGQll5eERRVUZETEVOQlFVTTdTVUZET1VNc1EwRkJRenRKUVVWRUxHOURRVUZ0UWl4SFFVRnVRaXhWUVVGdlFpeEZRVUZaTzFGQlF6VkNMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTeXhQUVVGQkxFTkJRVU1zUTBGQlF5eGxRVUZsTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGNlFpeERRVUY1UWl4RFFVRkRMRU5CUVVNN1NVRkRla1FzUTBGQlF6dEpRVEpDVHl3MlFrRkJXU3hIUVVGd1FqdFJRVU5KTEVsQlFVa3NVVUZCVVN4SFFVRkhMRTFCUVUwc1EwRkJReXhUUVVGVExFVkJRek5DTEVOQlFVTXNSMEZCWlN4SlFVRkpMRVZCUTNCQ0xFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVTnFRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZEV2l4WFFVRlhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM0JDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRlRUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMklzU1VGQlNTeERRVUZETEVOQlFVTXNZVUZCWVR0blFrRkJSU3hUUVVGVE8xbEJRemxDTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU4wUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhSUVVGUkxFbEJRVWtzUzBGQlN5eEhRVUZITEZGQlFWRXNSVUZCUlR0blFrRkRhRU1zVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXp0blFrRkRha0lzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRUaXhYUVVGWExFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTm9RaXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTzI5Q1FVRkZMRTFCUVUwN1lVRkRla0k3VTBGRFNqdFJRVU5FTEVsQlFVa3NWMEZCVnl4TFFVRkxMRU5CUVVNN1dVRkRha0lzUTBGQlF5eFJRVUZSTEVkQlFVY3NUVUZCVFN4RFFVRkRMR1ZCUVdVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVOc1JUdFpRVU5KTEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpGQ0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVOd1FqdFJRVU5FTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJJc1EwRkJRenRKUVVsRUxIZENRVUZQTEVkQlFWQTdVVUZEU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEycENMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xTkJRMnBETzFGQlNVUXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMUZCUXpkQ0xFbEJRVWtzUTBGQlF5eEhRVUZsTEVsQlFVa3NRMEZCUXp0UlFVTjZRaXhQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNTVUZCU1N4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFZEJRVWNzVFVGQlRTeERRVUZETEdWQlFXVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdFpRVU5xUnl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTTdXVUZOTVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTzJkQ1FVTllMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNCQ08ybENRVUZOTzJkQ1FVTklMRWxCUVVrc1JVRkJSU3hEUVVGRExESkNRVUV5UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMjlDUVVWcVJDeERRVUZETEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJRenR2UWtGRGRrSXNVMEZCVXp0cFFrRkRXanRuUWtGRlJDeEpRVUZKTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8yZENRVU0zUXl4SlFVRkpMRXRCUVVzc1MwRkJTeXhKUVVGSkxFVkJRVVU3YjBKQlEyaENMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenR2UWtGRGVrSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMjlDUVVONlFpeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dHZRa0ZEYmtJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8ybENRVU40UXp0eFFrRkJUVHR2UWtGSlNDeERRVUZETEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJRenR2UWtGRGRrSXNVMEZCVXp0cFFrRkRXanRuUWtGRFJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFVkJRVVU3YjBKQlMyaENMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVONlFqdHhRa0ZCVFR0dlFrRkpTQ3hKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRGNFSTdZVUZEU2p0VFFVMUtPMGxCU1V3c1EwRkJRenRKUVVkRUxITkNRVUZMTEVkQlFVdzdVVUZEU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03VVVGRFppeEpRVUZKTEZGQlFWRXNSMEZCUnl4TlFVRk5MRU5CUVVNc1UwRkJVeXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8xRkJRM1pFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RlFVRkZPMWxCUTNaRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0WlFVTm1MRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRGFFSXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdVMEZEZWtJN1VVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCY0V0TkxESkNRVUZ2UWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRemRDTEhOQ1FVRmxMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU03U1VGdlMzQkRMR0ZCUVVNN1EwRkJRU3hCUVhwTFJDeEpRWGxMUXp0QlFYcExXU3gzUWtGQlRUdEJRV2xNYmtJc1UwRkJaMElzTWtKQlFUSkNMRU5CUVVNc1MwRkJaMFFzUlVGQlJTeFZRVUZ0UWl4RlFVRkZMRlZCUVcxQ08wbEJSMnhKTEVsQlFVMHNSVUZCUlN4SFFVRmxMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4SlFVRkpMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zWVVGQllTeERRVUZETEVWQlFUZENMRU5CUVRaQ0xFTkJRVU1zUTBGQlF6dEpRVU55UlN4SlFVRk5MRVZCUVVVc1IwRkJhVUlzUlVGQlJTeERRVUZETzBsQlF6VkNMRWxCUVUwc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZETlVJc1NVRkJUU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpWRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VlFVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUXpORk8wbEJRMFFzU1VGQlRTeFJRVUZSTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVOc1FpeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGRGNrSXNXVUZCV1N4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVTm9ReXhoUVVGaExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlF6RkRMRWxCUVVrc1RVRkJUU3hIUVVGaExFbEJRVWtzUlVGQlJTeE5RVUZOTEVkQlFXRXNTVUZCU1N4RFFVRkRPMGxCUTNKRUxFbEJRVWtzVlVGQlZTeEZRVUZGTzFGQlExb3NUVUZCVFN4SFFVRkhMRWxCUVVrc1VVRkJVU3hEUVVGRExGVkJRVlVzUlVGQlJTeFJRVUZSTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRekZFTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGFFSXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRE0wUTdTVUZEUkN4SlFVRkpMRlZCUVZVc1JVRkJSVHRSUVVOYUxFMUJRVTBzUjBGQlJ5eEpRVUZKTEZGQlFWRXNRMEZCUXl4VlFVRlZMRVZCUVVVc1UwRkJVeXhEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTXpSQ3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTJoQ0xFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VlFVRlZMRU5CUVVNc1UwRkJVeXhGUVVGRkxFMUJRVTBzUlVGQlJTeGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUXpkRU8wbEJRMFFzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEyaERMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dEpRVU5tTEU5QlFVODdVVUZEU0N4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRVVVzUlVGQldpeERRVUZaTEVOQlFVTTdVVUZETlVRc1ZVRkJWU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1dVRkJXVHRSUVVNelJTeFZRVUZWTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFVkJRVVVzUjBGQlJ5eGhRVUZoTzB0QlEyaEdMRU5CUVVNN1FVRkRUaXhEUVVGRE8wRkJhRU5FTEd0RlFXZERReUo5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbiAgICB9O1xyXG59KSgpO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBUcmVlQmFzZSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBUcmVlQmFzZSgpIHtcclxuICAgICAgICB0aGlzLmZpbmRJdGVyID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgdmFyIHJlcyA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgICAgIHZhciBpdGVyID0gdGhpcy5pdGVyYXRvcigpO1xyXG4gICAgICAgICAgICB3aGlsZSAocmVzICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYyA9IHRoaXMuX2NvbXBhcmF0b3IoZGF0YSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVyLl9jdXJzb3IgPSByZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVyLl9hbmNlc3RvcnMucHVzaChyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5nZXRfY2hpbGQoYyA+IDApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5fcm9vdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zaXplID0gMDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgd2hpbGUgKHJlcyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgYyA9IHRoaXMuX2NvbXBhcmF0b3IoZGF0YSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5kYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzID0gcmVzLmdldF9jaGlsZChjID4gMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgO1xyXG4gICAgVHJlZUJhc2UucHJvdG90eXBlLmxvd2VyQm91bmQgPSBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ib3VuZChkYXRhLCB0aGlzLl9jb21wYXJhdG9yKTtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUudXBwZXJCb3VuZCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdmFyIGNtcCA9IHRoaXMuX2NvbXBhcmF0b3I7XHJcbiAgICAgICAgZnVuY3Rpb24gcmV2ZXJzZV9jbXAoYSwgYikge1xyXG4gICAgICAgICAgICByZXR1cm4gY21wKGIsIGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fYm91bmQoZGF0YSwgcmV2ZXJzZV9jbXApO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5taW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgaWYgKHJlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKHJlcy5sZWZ0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJlcyA9IHJlcy5sZWZ0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzLmRhdGE7XHJcbiAgICB9O1xyXG4gICAgO1xyXG4gICAgVHJlZUJhc2UucHJvdG90eXBlLm1heCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgcmVzID0gdGhpcy5fcm9vdDtcclxuICAgICAgICBpZiAocmVzID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3aGlsZSAocmVzLnJpZ2h0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJlcyA9IHJlcy5yaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcy5kYXRhO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5pdGVyYXRvciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMpO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5lYWNoID0gZnVuY3Rpb24gKGNiKSB7XHJcbiAgICAgICAgdmFyIGl0ID0gdGhpcy5pdGVyYXRvcigpLCBkYXRhO1xyXG4gICAgICAgIHdoaWxlICgoZGF0YSA9IGl0Lm5leHQoKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgY2IoZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIDtcclxuICAgIFRyZWVCYXNlLnByb3RvdHlwZS5yZWFjaCA9IGZ1bmN0aW9uIChjYikge1xyXG4gICAgICAgIHZhciBpdCA9IHRoaXMuaXRlcmF0b3IoKSwgZGF0YTtcclxuICAgICAgICB3aGlsZSAoKGRhdGEgPSBpdC5wcmV2KCkpICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNiKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBUcmVlQmFzZS5wcm90b3R5cGUuX2JvdW5kID0gZnVuY3Rpb24gKGRhdGEsIGNtcCkge1xyXG4gICAgICAgIHZhciBjdXIgPSB0aGlzLl9yb290O1xyXG4gICAgICAgIHZhciBpdGVyID0gdGhpcy5pdGVyYXRvcigpO1xyXG4gICAgICAgIHdoaWxlIChjdXIgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIGMgPSB0aGlzLl9jb21wYXJhdG9yKGRhdGEsIGN1ci5kYXRhKTtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGl0ZXIuX2N1cnNvciA9IGN1cjtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGl0ZXIuX2FuY2VzdG9ycy5wdXNoKGN1cik7XHJcbiAgICAgICAgICAgIGN1ciA9IGN1ci5nZXRfY2hpbGQoYyA+IDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKHZhciBpID0gaXRlci5fYW5jZXN0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgICAgICAgIGN1ciA9IGl0ZXIuX2FuY2VzdG9yc1tpXTtcclxuICAgICAgICAgICAgaWYgKGNtcChkYXRhLCBjdXIuZGF0YSkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVyLl9jdXJzb3IgPSBjdXI7XHJcbiAgICAgICAgICAgICAgICBpdGVyLl9hbmNlc3RvcnMubGVuZ3RoID0gaTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGl0ZXIuX2FuY2VzdG9ycy5sZW5ndGggPSAwO1xyXG4gICAgICAgIHJldHVybiBpdGVyO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIHJldHVybiBUcmVlQmFzZTtcclxufSgpKTtcclxuZXhwb3J0cy5UcmVlQmFzZSA9IFRyZWVCYXNlO1xyXG52YXIgSXRlcmF0b3IgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gSXRlcmF0b3IodHJlZSkge1xyXG4gICAgICAgIHRoaXMuX3RyZWUgPSB0cmVlO1xyXG4gICAgICAgIHRoaXMuX2FuY2VzdG9ycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2N1cnNvciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBJdGVyYXRvci5wcm90b3R5cGUuZGF0YSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY3Vyc29yICE9PSBudWxsID8gdGhpcy5fY3Vyc29yLmRhdGEgOiBudWxsO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIEl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jdXJzb3IgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIHJvb3QgPSB0aGlzLl90cmVlLl9yb290O1xyXG4gICAgICAgICAgICBpZiAocm9vdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWluTm9kZShyb290KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnNvci5yaWdodCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNhdmU7XHJcbiAgICAgICAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2F2ZSA9IHRoaXMuX2N1cnNvcjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYW5jZXN0b3JzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJzb3IgPSB0aGlzLl9hbmNlc3RvcnMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJzb3IgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IHdoaWxlICh0aGlzLl9jdXJzb3IucmlnaHQgPT09IHNhdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYW5jZXN0b3JzLnB1c2godGhpcy5fY3Vyc29yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21pbk5vZGUodGhpcy5fY3Vyc29yLnJpZ2h0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fY3Vyc29yICE9PSBudWxsID8gdGhpcy5fY3Vyc29yLmRhdGEgOiBudWxsO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIEl0ZXJhdG9yLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jdXJzb3IgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIHJvb3QgPSB0aGlzLl90cmVlLl9yb290O1xyXG4gICAgICAgICAgICBpZiAocm9vdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWF4Tm9kZShyb290KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnNvci5sZWZ0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2F2ZTtcclxuICAgICAgICAgICAgICAgIGRvIHtcclxuICAgICAgICAgICAgICAgICAgICBzYXZlID0gdGhpcy5fY3Vyc29yO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hbmNlc3RvcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnNvciA9IHRoaXMuX2FuY2VzdG9ycy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnNvciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHRoaXMuX2N1cnNvci5sZWZ0ID09PSBzYXZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FuY2VzdG9ycy5wdXNoKHRoaXMuX2N1cnNvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhOb2RlKHRoaXMuX2N1cnNvci5sZWZ0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fY3Vyc29yICE9PSBudWxsID8gdGhpcy5fY3Vyc29yLmRhdGEgOiBudWxsO1xyXG4gICAgfTtcclxuICAgIDtcclxuICAgIEl0ZXJhdG9yLnByb3RvdHlwZS5fbWluTm9kZSA9IGZ1bmN0aW9uIChzdGFydCkge1xyXG4gICAgICAgIHdoaWxlIChzdGFydC5sZWZ0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FuY2VzdG9ycy5wdXNoKHN0YXJ0KTtcclxuICAgICAgICAgICAgc3RhcnQgPSBzdGFydC5sZWZ0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jdXJzb3IgPSBzdGFydDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBJdGVyYXRvci5wcm90b3R5cGUuX21heE5vZGUgPSBmdW5jdGlvbiAoc3RhcnQpIHtcclxuICAgICAgICB3aGlsZSAoc3RhcnQucmlnaHQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fYW5jZXN0b3JzLnB1c2goc3RhcnQpO1xyXG4gICAgICAgICAgICBzdGFydCA9IHN0YXJ0LnJpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jdXJzb3IgPSBzdGFydDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICByZXR1cm4gSXRlcmF0b3I7XHJcbn0oKSk7XHJcbmV4cG9ydHMuSXRlcmF0b3IgPSBJdGVyYXRvcjtcclxudmFyIE5vZGUgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTm9kZShkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmxlZnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmlnaHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIE5vZGUucHJvdG90eXBlLmdldF9jaGlsZCA9IGZ1bmN0aW9uIChkaXIpIHtcclxuICAgICAgICByZXR1cm4gZGlyID8gdGhpcy5yaWdodCA6IHRoaXMubGVmdDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBOb2RlLnByb3RvdHlwZS5zZXRfY2hpbGQgPSBmdW5jdGlvbiAoZGlyLCB2YWwpIHtcclxuICAgICAgICBpZiAoZGlyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmlnaHQgPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxlZnQgPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIDtcclxuICAgIHJldHVybiBOb2RlO1xyXG59KCkpO1xyXG52YXIgUkJUcmVlID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhSQlRyZWUsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBSQlRyZWUoY29tcGFyYXRvcikge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XHJcbiAgICAgICAgX3RoaXMuX3Jvb3QgPSBudWxsO1xyXG4gICAgICAgIF90aGlzLl9jb21wYXJhdG9yID0gY29tcGFyYXRvcjtcclxuICAgICAgICBfdGhpcy5zaXplID0gMDtcclxuICAgICAgICByZXR1cm4gX3RoaXM7XHJcbiAgICB9XHJcbiAgICBSQlRyZWUucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdmFyIHJldCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLl9yb290ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSBuZXcgTm9kZShkYXRhKTtcclxuICAgICAgICAgICAgcmV0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zaXplKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgaGVhZCA9IG5ldyBOb2RlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgIHZhciBkaXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIGxhc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIGdwID0gbnVsbDtcclxuICAgICAgICAgICAgdmFyIGdncCA9IGhlYWQ7XHJcbiAgICAgICAgICAgIHZhciBwID0gbnVsbDtcclxuICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9yb290O1xyXG4gICAgICAgICAgICBnZ3AucmlnaHQgPSB0aGlzLl9yb290O1xyXG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlID0gbmV3IE5vZGUoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcC5zZXRfY2hpbGQoZGlyLCBub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l6ZSsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoUkJUcmVlLmlzX3JlZChub2RlLmxlZnQpICYmIFJCVHJlZS5pc19yZWQobm9kZS5yaWdodCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5sZWZ0LnJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmlnaHQucmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoUkJUcmVlLmlzX3JlZChub2RlKSAmJiBSQlRyZWUuaXNfcmVkKHApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpcjIgPSBnZ3AucmlnaHQgPT09IGdwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlID09PSBwLmdldF9jaGlsZChsYXN0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZ3Auc2V0X2NoaWxkKGRpcjIsIFJCVHJlZS5zaW5nbGVfcm90YXRlKGdwLCAhbGFzdCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2dwLnNldF9jaGlsZChkaXIyLCBSQlRyZWUuZG91YmxlX3JvdGF0ZShncCwgIWxhc3QpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgY21wID0gdGhpcy5fY29tcGFyYXRvcihub2RlLmRhdGEsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNtcCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGFzdCA9IGRpcjtcclxuICAgICAgICAgICAgICAgIGRpciA9IGNtcCA8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3AgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBnZ3AgPSBncDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGdwID0gcDtcclxuICAgICAgICAgICAgICAgIHAgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUuZ2V0X2NoaWxkKGRpcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fcm9vdCA9IGhlYWQucmlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Jvb3QucmVkID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH07XHJcbiAgICA7XHJcbiAgICBSQlRyZWUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3QgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaGVhZCA9IG5ldyBOb2RlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdmFyIG5vZGUgPSBoZWFkO1xyXG4gICAgICAgIG5vZGUucmlnaHQgPSB0aGlzLl9yb290O1xyXG4gICAgICAgIHZhciBwID0gbnVsbDtcclxuICAgICAgICB2YXIgZ3AgPSBudWxsO1xyXG4gICAgICAgIHZhciBmb3VuZCA9IG51bGw7XHJcbiAgICAgICAgdmFyIGRpciA9IHRydWU7XHJcbiAgICAgICAgd2hpbGUgKG5vZGUuZ2V0X2NoaWxkKGRpcikgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdmFyIGxhc3QgPSBkaXI7XHJcbiAgICAgICAgICAgIGdwID0gcDtcclxuICAgICAgICAgICAgcCA9IG5vZGU7XHJcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLmdldF9jaGlsZChkaXIpO1xyXG4gICAgICAgICAgICB2YXIgY21wID0gdGhpcy5fY29tcGFyYXRvcihkYXRhLCBub2RlLmRhdGEpO1xyXG4gICAgICAgICAgICBkaXIgPSBjbXAgPiAwO1xyXG4gICAgICAgICAgICBpZiAoY21wID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3VuZCA9IG5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFSQlRyZWUuaXNfcmVkKG5vZGUpICYmICFSQlRyZWUuaXNfcmVkKG5vZGUuZ2V0X2NoaWxkKGRpcikpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoUkJUcmVlLmlzX3JlZChub2RlLmdldF9jaGlsZCghZGlyKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc3IgPSBSQlRyZWUuc2luZ2xlX3JvdGF0ZShub2RlLCBkaXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHAuc2V0X2NoaWxkKGxhc3QsIHNyKTtcclxuICAgICAgICAgICAgICAgICAgICBwID0gc3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghUkJUcmVlLmlzX3JlZChub2RlLmdldF9jaGlsZCghZGlyKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2libGluZyA9IHAuZ2V0X2NoaWxkKCFsYXN0KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVJCVHJlZS5pc19yZWQoc2libGluZy5nZXRfY2hpbGQoIWxhc3QpKSAmJiAhUkJUcmVlLmlzX3JlZChzaWJsaW5nLmdldF9jaGlsZChsYXN0KSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAucmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlyMiA9IGdwLnJpZ2h0ID09PSBwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJCVHJlZS5pc19yZWQoc2libGluZy5nZXRfY2hpbGQobGFzdCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Auc2V0X2NoaWxkKGRpcjIsIFJCVHJlZS5kb3VibGVfcm90YXRlKHAsIGxhc3QpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFJCVHJlZS5pc19yZWQoc2libGluZy5nZXRfY2hpbGQoIWxhc3QpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwLnNldF9jaGlsZChkaXIyLCBSQlRyZWUuc2luZ2xlX3JvdGF0ZShwLCBsYXN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3BjID0gZ3AuZ2V0X2NoaWxkKGRpcjIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BjLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGMubGVmdC5yZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwYy5yaWdodC5yZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZm91bmQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgZm91bmQuZGF0YSA9IG5vZGUuZGF0YTtcclxuICAgICAgICAgICAgcC5zZXRfY2hpbGQocC5yaWdodCA9PT0gbm9kZSwgbm9kZS5nZXRfY2hpbGQobm9kZS5sZWZ0ID09PSBudWxsKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2l6ZS0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9yb290ID0gaGVhZC5yaWdodDtcclxuICAgICAgICBpZiAodGhpcy5fcm9vdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yb290LnJlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZm91bmQgIT09IG51bGw7XHJcbiAgICB9O1xyXG4gICAgO1xyXG4gICAgUkJUcmVlLmlzX3JlZCA9IGZ1bmN0aW9uIChub2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUgIT09IG51bGwgJiYgbm9kZS5yZWQ7XHJcbiAgICB9O1xyXG4gICAgUkJUcmVlLnNpbmdsZV9yb3RhdGUgPSBmdW5jdGlvbiAocm9vdCwgZGlyKSB7XHJcbiAgICAgICAgdmFyIHNhdmUgPSByb290LmdldF9jaGlsZCghZGlyKTtcclxuICAgICAgICByb290LnNldF9jaGlsZCghZGlyLCBzYXZlLmdldF9jaGlsZChkaXIpKTtcclxuICAgICAgICBzYXZlLnNldF9jaGlsZChkaXIsIHJvb3QpO1xyXG4gICAgICAgIHJvb3QucmVkID0gdHJ1ZTtcclxuICAgICAgICBzYXZlLnJlZCA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBzYXZlO1xyXG4gICAgfTtcclxuICAgIFJCVHJlZS5kb3VibGVfcm90YXRlID0gZnVuY3Rpb24gKHJvb3QsIGRpcikge1xyXG4gICAgICAgIHJvb3Quc2V0X2NoaWxkKCFkaXIsIFJCVHJlZS5zaW5nbGVfcm90YXRlKHJvb3QuZ2V0X2NoaWxkKCFkaXIpLCAhZGlyKSk7XHJcbiAgICAgICAgcmV0dXJuIFJCVHJlZS5zaW5nbGVfcm90YXRlKHJvb3QsIGRpcik7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFJCVHJlZTtcclxufShUcmVlQmFzZSkpO1xyXG5leHBvcnRzLlJCVHJlZSA9IFJCVHJlZTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21KMGNtVmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2VjJWaVEyOXNZUzl6Y21NdmNtSjBjbVZsTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdPenRCUVhWQ1NUdEpRVUZCTzFGQk5FSkpMR0ZCUVZFc1IwRkJSeXhWUVVGVkxFbEJRVWs3V1VGRGNrSXNTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFpRVU55UWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdXVUZGTTBJc1QwRkJUeXhIUVVGSExFdEJRVXNzU1VGQlNTeEZRVUZGTzJkQ1FVTnFRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTNwRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlR0dlFrRkRWQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVkQlFVY3NRMEZCUXp0dlFrRkRia0lzVDBGQlR5eEpRVUZKTEVOQlFVTTdhVUpCUTJZN2NVSkJRMGs3YjBKQlEwUXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdiMEpCUXpGQ0xFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZET1VJN1lVRkRTanRaUVVWRUxFOUJRVThzU1VGQlNTeERRVUZETzFGQlEyaENMRU5CUVVNc1EwRkJRenRKUVN0R1RpeERRVUZETzBsQmRrbEhMSGRDUVVGTExFZEJRVXc3VVVGRFNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlFVRXNRMEZCUXp0SlFVZEdMSFZDUVVGSkxFZEJRVW9zVlVGQlN5eEpRVUZKTzFGQlEwd3NTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVVZ5UWl4UFFVRlBMRWRCUVVjc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGFrSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRM3BETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRuUWtGRFZDeFBRVUZQTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNN1lVRkRia0k3YVVKQlEwazdaMEpCUTBRc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRemxDTzFOQlEwbzdVVUZGUkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlFVRXNRMEZCUXp0SlFYVkNSaXcyUWtGQlZTeEhRVUZXTEZWQlFWY3NTVUZCU1R0UlFVTllMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wbEJReTlETEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUjBZc05rSkJRVlVzUjBGQlZpeFZRVUZYTEVsQlFVazdVVUZEV0N4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlJUTkNMRk5CUVZNc1YwRkJWeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEzSkNMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnlRaXhEUVVGRE8xRkJSVVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEpRVU14UXl4RFFVRkRPMGxCUVVFc1EwRkJRenRKUVVkR0xITkNRVUZITEVkQlFVZzdVVUZEU1N4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzFGQlEzSkNMRWxCUVVrc1IwRkJSeXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU5rTEU5QlFVOHNTVUZCU1N4RFFVRkRPMU5CUTJZN1VVRkZSQ3hQUVVGUExFZEJRVWNzUTBGQlF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTNSQ0xFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRPMU5CUTJ4Q08xRkJSVVFzVDBGQlR5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGQlFTeERRVUZETzBsQlIwWXNjMEpCUVVjc1IwRkJTRHRSUVVOSkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkRja0lzU1VGQlNTeEhRVUZITEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTJRc1QwRkJUeXhKUVVGSkxFTkJRVU03VTBGRFpqdFJRVVZFTEU5QlFVOHNSMEZCUnl4RFFVRkRMRXRCUVVzc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGRrSXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU03VTBGRGJrSTdVVUZGUkN4UFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRGNFSXNRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkpSaXd5UWtGQlVTeEhRVUZTTzFGQlEwa3NUMEZCVHl4SlFVRkpMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU01UWl4RFFVRkRPMGxCUVVFc1EwRkJRenRKUVVkR0xIVkNRVUZKTEVkQlFVb3NWVUZCU3l4RlFVRkZPMUZCUTBnc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJRenRSUVVNdlFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eExRVUZMTEVsQlFVa3NSVUZCUlR0WlFVTm9ReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEV2p0SlFVTk1MRU5CUVVNN1NVRkJRU3hEUVVGRE8wbEJSMFlzZDBKQlFVc3NSMEZCVEN4VlFVRk5MRVZCUVVVN1VVRkRTaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRE8xRkJReTlDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTJoRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTmFPMGxCUTB3c1EwRkJRenRKUVVGQkxFTkJRVU03U1VGSFJpeDVRa0ZCVFN4SFFVRk9MRlZCUVU4c1NVRkJTU3hGUVVGRkxFZEJRVWM3VVVGRFdpeEpRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFJRVVV6UWl4UFFVRlBMRWRCUVVjc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGFrSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRM3BETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRuUWtGRFZDeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWRCUVVjc1EwRkJRenRuUWtGRGJrSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1lVRkRaanRaUVVORUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRekZDTEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTTVRanRSUVVWRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGJFUXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZWtJc1NVRkJTU3hIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3WjBKQlEzcENMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETzJkQ1FVTnVRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRek5DTEU5QlFVOHNTVUZCU1N4RFFVRkRPMkZCUTJZN1UwRkRTanRSUVVWRUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNelFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVU5PTEdWQlFVTTdRVUZCUkN4RFFVRkRMRUZCTlVsRUxFbEJORWxETzBGQk5VbFpMRFJDUVVGUk8wRkJOa2x5UWp0SlFVbEpMR3RDUVVGWkxFbEJRVWs3VVVGRFdpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJRenRKUVVONFFpeERRVUZETzBsQlJVUXNkVUpCUVVrc1IwRkJTanRSUVVOSkxFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNTMEZCU3l4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRE5VUXNRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkpSaXgxUWtGQlNTeEhRVUZLTzFGQlEwa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU4yUWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXp0WlFVTTFRaXhKUVVGSkxFbEJRVWtzUzBGQlN5eEpRVUZKTEVWQlFVVTdaMEpCUTJZc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0aFFVTjJRanRUUVVOS08yRkJRMGs3V1VGRFJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhMUVVGTExFbEJRVWtzUlVGQlJUdG5Ra0ZITjBJc1NVRkJTU3hKUVVGSkxFTkJRVU03WjBKQlExUXNSMEZCUnp0dlFrRkRReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0dlFrRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1JVRkJSVHQzUWtGRGVFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPM0ZDUVVONFF6dDVRa0ZEU1R0M1FrRkRSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXp0M1FrRkRjRUlzVFVGQlRUdHhRa0ZEVkR0cFFrRkRTaXhSUVVGUkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrc1JVRkJSVHRoUVVONlF6dHBRa0ZEU1R0blFrRkZSQ3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03WjBKQlEyNURMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRoUVVOeVF6dFRRVU5LTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1QwRkJUeXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0SlFVTTFSQ3hEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVWxHTEhWQ1FVRkpMRWRCUVVvN1VVRkRTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRelZDTEVsQlFVa3NTVUZCU1N4TFFVRkxMRWxCUVVrc1JVRkJSVHRuUWtGRFppeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yRkJRM1pDTzFOQlEwbzdZVUZEU1R0WlFVTkVMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RlFVRkZPMmRDUVVNMVFpeEpRVUZKTEVsQlFVa3NRMEZCUXp0blFrRkRWQ3hIUVVGSE8yOUNRVU5ETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8yOUNRVU53UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTzNkQ1FVTjRRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03Y1VKQlEzaERPM2xDUVVOSk8zZENRVU5FTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRE8zZENRVU53UWl4TlFVRk5PM0ZDUVVOVU8ybENRVU5LTEZGQlFWRXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFdEJRVXNzU1VGQlNTeEZRVUZGTzJGQlEzaERPMmxDUVVOSk8yZENRVU5FTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0blFrRkRia01zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEzQkRPMU5CUTBvN1VVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFBRVUZQTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRelZFTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUlVZc01rSkJRVkVzUjBGQlVpeFZRVUZUTEV0QlFVczdVVUZEVml4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlEzaENMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUXpWQ0xFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPMU5CUTNSQ08xRkJRMFFzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkRla0lzUTBGQlF6dEpRVUZCTEVOQlFVTTdTVUZGUml3eVFrRkJVU3hIUVVGU0xGVkJRVk1zUzBGQlN6dFJRVU5XTEU5QlFVOHNTMEZCU3l4RFFVRkRMRXRCUVVzc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGVrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdXVUZETlVJc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTTdVMEZEZGtJN1VVRkRSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTjZRaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVU5PTEdWQlFVTTdRVUZCUkN4RFFVRkRMRUZCT1VaRUxFbEJPRVpETzBGQk9VWlpMRFJDUVVGUk8wRkJaMGR5UWp0SlFVdEpMR05CUVZrc1NVRkJTVHRSUVVOYUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJ4Q0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGRlJDeDNRa0ZCVXl4SFFVRlVMRlZCUVZVc1IwRkJSenRSUVVOVUxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTNoRExFTkJRVU03U1VGQlFTeERRVUZETzBsQlJVWXNkMEpCUVZNc1IwRkJWQ3hWUVVGVkxFZEJRVWNzUlVGQlJTeEhRVUZITzFGQlEyUXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRUQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXp0VFFVTndRanRoUVVOSk8xbEJRMFFzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1UwRkRia0k3U1VGRFRDeERRVUZETzBsQlFVRXNRMEZCUXp0SlFVTk9MRmRCUVVNN1FVRkJSQ3hEUVVGRExFRkJlRUpFTEVsQmQwSkRPMEZCUlVRN1NVRkJLMElzTUVKQlFWRTdTVUZMYmtNc1owSkJRVmtzVlVGQmEwTTdVVUZCT1VNc1dVRkRTU3hwUWtGQlR5eFRRVWxXTzFGQlNFY3NTMEZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRGJFSXNTMEZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhWUVVGVkxFTkJRVU03VVVGRE9VSXNTMEZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU03TzBsQlEyeENMRU5CUVVNN1NVRkhSQ3gxUWtGQlRTeEhRVUZPTEZWQlFVOHNTVUZCU1R0UlFVTlFMRWxCUVVrc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVVZvUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlJYSkNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTllMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFRRVU5tTzJGQlEwazdXVUZEUkN4SlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0WlFVVXZRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEYUVJc1NVRkJTU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETzFsQlIycENMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU5rTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJRenRaUVVObUxFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTmlMRWxCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdXVUZEZEVJc1IwRkJSeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRPMWxCUjNaQ0xFOUJRVThzU1VGQlNTeEZRVUZGTzJkQ1FVTlVMRWxCUVVrc1NVRkJTU3hMUVVGTExFbEJRVWtzUlVGQlJUdHZRa0ZGWml4SlFVRkpMRWRCUVVjc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdiMEpCUTNSQ0xFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8yOUNRVU4yUWl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVU5ZTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRwUWtGRFpqdHhRa0ZEU1N4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMjlDUVVVMVJDeEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJRenR2UWtGRGFFSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETzI5Q1FVTjBRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNN2FVSkJRekZDTzJkQ1FVZEVMRWxCUVVrc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzI5Q1FVTjZReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNTMEZCU3l4TFFVRkxMRVZCUVVVc1EwRkJRenR2UWtGRk5VSXNTVUZCU1N4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0M1FrRkROVUlzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8zRkNRVU40UkR0NVFrRkRTVHQzUWtGRFJDeEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03Y1VKQlEzaEVPMmxDUVVOS08yZENRVVZFTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGSE5VTXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhGUVVGRk8yOUNRVU5ZTEUxQlFVMDdhVUpCUTFRN1owSkJSVVFzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXp0blFrRkRXQ3hIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkhaQ3hKUVVGSkxFVkJRVVVzUzBGQlN5eEpRVUZKTEVWQlFVVTdiMEpCUTJJc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF6dHBRa0ZEV2p0blFrRkRSQ3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTlFMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU03WjBKQlExUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZET1VJN1dVRkhSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNN1UwRkRNMEk3VVVGSFJDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRmRrSXNUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRaaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVWRHTEhWQ1FVRk5MRWRCUVU0c1ZVRkJUeXhKUVVGSk8xRkJRMUFzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrc1JVRkJSVHRaUVVOeVFpeFBRVUZQTEV0QlFVc3NRMEZCUXp0VFFVTm9RanRSUVVWRUxFbEJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJReTlDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOb1FpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRGVFSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRMklzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJRc1NVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVZtTEU5QlFVOHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eEpRVUZKTEVWQlFVVTdXVUZEYWtNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETzFsQlIyWXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOUUxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdXVUZEVkN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVXpRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZGTlVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZIWkN4SlFVRkpMRWRCUVVjc1MwRkJTeXhEUVVGRExFVkJRVVU3WjBKQlExZ3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRoUVVOb1FqdFpRVWRFTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVN1owSkJRemRFTEVsQlFVa3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSVHR2UWtGRGNrTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN2IwSkJRM3BETEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzI5Q1FVTjBRaXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzJsQ1FVTldPM0ZDUVVOSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZPMjlDUVVNelF5eEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdiMEpCUTJwRExFbEJRVWtzVDBGQlR5eExRVUZMTEVsQlFVa3NSVUZCUlR0M1FrRkRiRUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJUczBRa0ZGY2tZc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTTdORUpCUTJRc1QwRkJUeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdORUpCUTI1Q0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRPM2xDUVVOdVFqczJRa0ZEU1RzMFFrRkRSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4TFFVRkxMRU5CUVVNc1EwRkJRenMwUWtGRk1VSXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSVHRuUTBGRGVFTXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6czJRa0ZEY2tRN2FVTkJRMGtzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZPMmREUVVNNVF5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE96WkNRVU55UkRzMFFrRkhSQ3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE96UkNRVU0zUWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6czBRa0ZEWml4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF6czBRa0ZEYUVJc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRPelJDUVVOeVFpeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU03ZVVKQlEzcENPM0ZDUVVOS08ybENRVU5LTzJGQlEwbzdVMEZEU2p0UlFVZEVMRWxCUVVrc1MwRkJTeXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU5vUWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEZGtJc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5zUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03VTBGRFpqdFJRVWRFTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU40UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlEzSkNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTXhRanRSUVVWRUxFOUJRVThzUzBGQlN5eExRVUZMTEVsQlFVa3NRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVVZMTEdGQlFVMHNSMEZCWWl4VlFVRmpMRWxCUVVrN1VVRkRaQ3hQUVVGUExFbEJRVWtzUzBGQlN5eEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJRenRKUVVOeVF5eERRVUZETzBsQlJVMHNiMEpCUVdFc1IwRkJjRUlzVlVGQmNVSXNTVUZCU1N4RlFVRkZMRWRCUVVjN1VVRkRNVUlzU1VGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlJXaERMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlRGQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJoQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUldwQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRkZUU3h2UWtGQllTeEhRVUZ3UWl4VlFVRnhRaXhKUVVGSkxFVkJRVVVzUjBGQlJ6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEUxQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUlN4UFFVRlBMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpORExFTkJRVU03U1VGRFRDeGhRVUZETzBGQlFVUXNRMEZCUXl4QlFYSk5SQ3hEUVVFclFpeFJRVUZSTEVkQmNVMTBRenRCUVhKTldTeDNRa0ZCVFNKOSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgdnBzY18xID0gcmVxdWlyZShcIi4vdnBzY1wiKTtcclxudmFyIHJidHJlZV8xID0gcmVxdWlyZShcIi4vcmJ0cmVlXCIpO1xyXG5mdW5jdGlvbiBjb21wdXRlR3JvdXBCb3VuZHMoZykge1xyXG4gICAgZy5ib3VuZHMgPSB0eXBlb2YgZy5sZWF2ZXMgIT09IFwidW5kZWZpbmVkXCIgP1xyXG4gICAgICAgIGcubGVhdmVzLnJlZHVjZShmdW5jdGlvbiAociwgYykgeyByZXR1cm4gYy5ib3VuZHMudW5pb24ocik7IH0sIFJlY3RhbmdsZS5lbXB0eSgpKSA6XHJcbiAgICAgICAgUmVjdGFuZ2xlLmVtcHR5KCk7XHJcbiAgICBpZiAodHlwZW9mIGcuZ3JvdXBzICE9PSBcInVuZGVmaW5lZFwiKVxyXG4gICAgICAgIGcuYm91bmRzID0gZy5ncm91cHMucmVkdWNlKGZ1bmN0aW9uIChyLCBjKSB7IHJldHVybiBjb21wdXRlR3JvdXBCb3VuZHMoYykudW5pb24ocik7IH0sIGcuYm91bmRzKTtcclxuICAgIGcuYm91bmRzID0gZy5ib3VuZHMuaW5mbGF0ZShnLnBhZGRpbmcpO1xyXG4gICAgcmV0dXJuIGcuYm91bmRzO1xyXG59XHJcbmV4cG9ydHMuY29tcHV0ZUdyb3VwQm91bmRzID0gY29tcHV0ZUdyb3VwQm91bmRzO1xyXG52YXIgUmVjdGFuZ2xlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFJlY3RhbmdsZSh4LCBYLCB5LCBZKSB7XHJcbiAgICAgICAgdGhpcy54ID0geDtcclxuICAgICAgICB0aGlzLlggPSBYO1xyXG4gICAgICAgIHRoaXMueSA9IHk7XHJcbiAgICAgICAgdGhpcy5ZID0gWTtcclxuICAgIH1cclxuICAgIFJlY3RhbmdsZS5lbXB0eSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBSZWN0YW5nbGUoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTsgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUuY3ggPSBmdW5jdGlvbiAoKSB7IHJldHVybiAodGhpcy54ICsgdGhpcy5YKSAvIDI7IH07XHJcbiAgICBSZWN0YW5nbGUucHJvdG90eXBlLmN5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRoaXMueSArIHRoaXMuWSkgLyAyOyB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5vdmVybGFwWCA9IGZ1bmN0aW9uIChyKSB7XHJcbiAgICAgICAgdmFyIHV4ID0gdGhpcy5jeCgpLCB2eCA9IHIuY3goKTtcclxuICAgICAgICBpZiAodXggPD0gdnggJiYgci54IDwgdGhpcy5YKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5YIC0gci54O1xyXG4gICAgICAgIGlmICh2eCA8PSB1eCAmJiB0aGlzLnggPCByLlgpXHJcbiAgICAgICAgICAgIHJldHVybiByLlggLSB0aGlzLng7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5vdmVybGFwWSA9IGZ1bmN0aW9uIChyKSB7XHJcbiAgICAgICAgdmFyIHV5ID0gdGhpcy5jeSgpLCB2eSA9IHIuY3koKTtcclxuICAgICAgICBpZiAodXkgPD0gdnkgJiYgci55IDwgdGhpcy5ZKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ZIC0gci55O1xyXG4gICAgICAgIGlmICh2eSA8PSB1eSAmJiB0aGlzLnkgPCByLlkpXHJcbiAgICAgICAgICAgIHJldHVybiByLlkgLSB0aGlzLnk7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5zZXRYQ2VudHJlID0gZnVuY3Rpb24gKGN4KSB7XHJcbiAgICAgICAgdmFyIGR4ID0gY3ggLSB0aGlzLmN4KCk7XHJcbiAgICAgICAgdGhpcy54ICs9IGR4O1xyXG4gICAgICAgIHRoaXMuWCArPSBkeDtcclxuICAgIH07XHJcbiAgICBSZWN0YW5nbGUucHJvdG90eXBlLnNldFlDZW50cmUgPSBmdW5jdGlvbiAoY3kpIHtcclxuICAgICAgICB2YXIgZHkgPSBjeSAtIHRoaXMuY3koKTtcclxuICAgICAgICB0aGlzLnkgKz0gZHk7XHJcbiAgICAgICAgdGhpcy5ZICs9IGR5O1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUud2lkdGggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuWCAtIHRoaXMueDtcclxuICAgIH07XHJcbiAgICBSZWN0YW5nbGUucHJvdG90eXBlLmhlaWdodCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ZIC0gdGhpcy55O1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUudW5pb24gPSBmdW5jdGlvbiAocikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKE1hdGgubWluKHRoaXMueCwgci54KSwgTWF0aC5tYXgodGhpcy5YLCByLlgpLCBNYXRoLm1pbih0aGlzLnksIHIueSksIE1hdGgubWF4KHRoaXMuWSwgci5ZKSk7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5saW5lSW50ZXJzZWN0aW9ucyA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5Mikge1xyXG4gICAgICAgIHZhciBzaWRlcyA9IFtbdGhpcy54LCB0aGlzLnksIHRoaXMuWCwgdGhpcy55XSxcclxuICAgICAgICAgICAgW3RoaXMuWCwgdGhpcy55LCB0aGlzLlgsIHRoaXMuWV0sXHJcbiAgICAgICAgICAgIFt0aGlzLlgsIHRoaXMuWSwgdGhpcy54LCB0aGlzLlldLFxyXG4gICAgICAgICAgICBbdGhpcy54LCB0aGlzLlksIHRoaXMueCwgdGhpcy55XV07XHJcbiAgICAgICAgdmFyIGludGVyc2VjdGlvbnMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgciA9IFJlY3RhbmdsZS5saW5lSW50ZXJzZWN0aW9uKHgxLCB5MSwgeDIsIHkyLCBzaWRlc1tpXVswXSwgc2lkZXNbaV1bMV0sIHNpZGVzW2ldWzJdLCBzaWRlc1tpXVszXSk7XHJcbiAgICAgICAgICAgIGlmIChyICE9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9ucy5wdXNoKHsgeDogci54LCB5OiByLnkgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnRlcnNlY3Rpb25zO1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5wcm90b3R5cGUucmF5SW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHgyLCB5Mikge1xyXG4gICAgICAgIHZhciBpbnRzID0gdGhpcy5saW5lSW50ZXJzZWN0aW9ucyh0aGlzLmN4KCksIHRoaXMuY3koKSwgeDIsIHkyKTtcclxuICAgICAgICByZXR1cm4gaW50cy5sZW5ndGggPiAwID8gaW50c1swXSA6IG51bGw7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS52ZXJ0aWNlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7IHg6IHRoaXMueCwgeTogdGhpcy55IH0sXHJcbiAgICAgICAgICAgIHsgeDogdGhpcy5YLCB5OiB0aGlzLnkgfSxcclxuICAgICAgICAgICAgeyB4OiB0aGlzLlgsIHk6IHRoaXMuWSB9LFxyXG4gICAgICAgICAgICB7IHg6IHRoaXMueCwgeTogdGhpcy5ZIH1cclxuICAgICAgICBdO1xyXG4gICAgfTtcclxuICAgIFJlY3RhbmdsZS5saW5lSW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCkge1xyXG4gICAgICAgIHZhciBkeDEyID0geDIgLSB4MSwgZHgzNCA9IHg0IC0geDMsIGR5MTIgPSB5MiAtIHkxLCBkeTM0ID0geTQgLSB5MywgZGVub21pbmF0b3IgPSBkeTM0ICogZHgxMiAtIGR4MzQgKiBkeTEyO1xyXG4gICAgICAgIGlmIChkZW5vbWluYXRvciA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB2YXIgZHgzMSA9IHgxIC0geDMsIGR5MzEgPSB5MSAtIHkzLCBudW1hID0gZHgzNCAqIGR5MzEgLSBkeTM0ICogZHgzMSwgYSA9IG51bWEgLyBkZW5vbWluYXRvciwgbnVtYiA9IGR4MTIgKiBkeTMxIC0gZHkxMiAqIGR4MzEsIGIgPSBudW1iIC8gZGVub21pbmF0b3I7XHJcbiAgICAgICAgaWYgKGEgPj0gMCAmJiBhIDw9IDEgJiYgYiA+PSAwICYmIGIgPD0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgeDogeDEgKyBhICogZHgxMixcclxuICAgICAgICAgICAgICAgIHk6IHkxICsgYSAqIGR5MTJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5pbmZsYXRlID0gZnVuY3Rpb24gKHBhZCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKHRoaXMueCAtIHBhZCwgdGhpcy5YICsgcGFkLCB0aGlzLnkgLSBwYWQsIHRoaXMuWSArIHBhZCk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFJlY3RhbmdsZTtcclxufSgpKTtcclxuZXhwb3J0cy5SZWN0YW5nbGUgPSBSZWN0YW5nbGU7XHJcbmZ1bmN0aW9uIG1ha2VFZGdlQmV0d2Vlbihzb3VyY2UsIHRhcmdldCwgYWgpIHtcclxuICAgIHZhciBzaSA9IHNvdXJjZS5yYXlJbnRlcnNlY3Rpb24odGFyZ2V0LmN4KCksIHRhcmdldC5jeSgpKSB8fCB7IHg6IHNvdXJjZS5jeCgpLCB5OiBzb3VyY2UuY3koKSB9LCB0aSA9IHRhcmdldC5yYXlJbnRlcnNlY3Rpb24oc291cmNlLmN4KCksIHNvdXJjZS5jeSgpKSB8fCB7IHg6IHRhcmdldC5jeCgpLCB5OiB0YXJnZXQuY3koKSB9LCBkeCA9IHRpLnggLSBzaS54LCBkeSA9IHRpLnkgLSBzaS55LCBsID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KSwgYWwgPSBsIC0gYWg7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHNvdXJjZUludGVyc2VjdGlvbjogc2ksXHJcbiAgICAgICAgdGFyZ2V0SW50ZXJzZWN0aW9uOiB0aSxcclxuICAgICAgICBhcnJvd1N0YXJ0OiB7IHg6IHNpLnggKyBhbCAqIGR4IC8gbCwgeTogc2kueSArIGFsICogZHkgLyBsIH1cclxuICAgIH07XHJcbn1cclxuZXhwb3J0cy5tYWtlRWRnZUJldHdlZW4gPSBtYWtlRWRnZUJldHdlZW47XHJcbmZ1bmN0aW9uIG1ha2VFZGdlVG8ocywgdGFyZ2V0LCBhaCkge1xyXG4gICAgdmFyIHRpID0gdGFyZ2V0LnJheUludGVyc2VjdGlvbihzLngsIHMueSk7XHJcbiAgICBpZiAoIXRpKVxyXG4gICAgICAgIHRpID0geyB4OiB0YXJnZXQuY3goKSwgeTogdGFyZ2V0LmN5KCkgfTtcclxuICAgIHZhciBkeCA9IHRpLnggLSBzLngsIGR5ID0gdGkueSAtIHMueSwgbCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XHJcbiAgICByZXR1cm4geyB4OiB0aS54IC0gYWggKiBkeCAvIGwsIHk6IHRpLnkgLSBhaCAqIGR5IC8gbCB9O1xyXG59XHJcbmV4cG9ydHMubWFrZUVkZ2VUbyA9IG1ha2VFZGdlVG87XHJcbnZhciBOb2RlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIE5vZGUodiwgciwgcG9zKSB7XHJcbiAgICAgICAgdGhpcy52ID0gdjtcclxuICAgICAgICB0aGlzLnIgPSByO1xyXG4gICAgICAgIHRoaXMucG9zID0gcG9zO1xyXG4gICAgICAgIHRoaXMucHJldiA9IG1ha2VSQlRyZWUoKTtcclxuICAgICAgICB0aGlzLm5leHQgPSBtYWtlUkJUcmVlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTm9kZTtcclxufSgpKTtcclxudmFyIEV2ZW50ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEV2ZW50KGlzT3BlbiwgdiwgcG9zKSB7XHJcbiAgICAgICAgdGhpcy5pc09wZW4gPSBpc09wZW47XHJcbiAgICAgICAgdGhpcy52ID0gdjtcclxuICAgICAgICB0aGlzLnBvcyA9IHBvcztcclxuICAgIH1cclxuICAgIHJldHVybiBFdmVudDtcclxufSgpKTtcclxuZnVuY3Rpb24gY29tcGFyZUV2ZW50cyhhLCBiKSB7XHJcbiAgICBpZiAoYS5wb3MgPiBiLnBvcykge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gICAgaWYgKGEucG9zIDwgYi5wb3MpIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcbiAgICBpZiAoYS5pc09wZW4pIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcbiAgICBpZiAoYi5pc09wZW4pIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG59XHJcbmZ1bmN0aW9uIG1ha2VSQlRyZWUoKSB7XHJcbiAgICByZXR1cm4gbmV3IHJidHJlZV8xLlJCVHJlZShmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5wb3MgLSBiLnBvczsgfSk7XHJcbn1cclxudmFyIHhSZWN0ID0ge1xyXG4gICAgZ2V0Q2VudHJlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5jeCgpOyB9LFxyXG4gICAgZ2V0T3BlbjogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIueTsgfSxcclxuICAgIGdldENsb3NlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5ZOyB9LFxyXG4gICAgZ2V0U2l6ZTogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIud2lkdGgoKTsgfSxcclxuICAgIG1ha2VSZWN0OiBmdW5jdGlvbiAob3BlbiwgY2xvc2UsIGNlbnRlciwgc2l6ZSkgeyByZXR1cm4gbmV3IFJlY3RhbmdsZShjZW50ZXIgLSBzaXplIC8gMiwgY2VudGVyICsgc2l6ZSAvIDIsIG9wZW4sIGNsb3NlKTsgfSxcclxuICAgIGZpbmROZWlnaGJvdXJzOiBmaW5kWE5laWdoYm91cnNcclxufTtcclxudmFyIHlSZWN0ID0ge1xyXG4gICAgZ2V0Q2VudHJlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5jeSgpOyB9LFxyXG4gICAgZ2V0T3BlbjogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIueDsgfSxcclxuICAgIGdldENsb3NlOiBmdW5jdGlvbiAocikgeyByZXR1cm4gci5YOyB9LFxyXG4gICAgZ2V0U2l6ZTogZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIuaGVpZ2h0KCk7IH0sXHJcbiAgICBtYWtlUmVjdDogZnVuY3Rpb24gKG9wZW4sIGNsb3NlLCBjZW50ZXIsIHNpemUpIHsgcmV0dXJuIG5ldyBSZWN0YW5nbGUob3BlbiwgY2xvc2UsIGNlbnRlciAtIHNpemUgLyAyLCBjZW50ZXIgKyBzaXplIC8gMik7IH0sXHJcbiAgICBmaW5kTmVpZ2hib3VyczogZmluZFlOZWlnaGJvdXJzXHJcbn07XHJcbmZ1bmN0aW9uIGdlbmVyYXRlR3JvdXBDb25zdHJhaW50cyhyb290LCBmLCBtaW5TZXAsIGlzQ29udGFpbmVkKSB7XHJcbiAgICBpZiAoaXNDb250YWluZWQgPT09IHZvaWQgMCkgeyBpc0NvbnRhaW5lZCA9IGZhbHNlOyB9XHJcbiAgICB2YXIgcGFkZGluZyA9IHJvb3QucGFkZGluZywgZ24gPSB0eXBlb2Ygcm9vdC5ncm91cHMgIT09ICd1bmRlZmluZWQnID8gcm9vdC5ncm91cHMubGVuZ3RoIDogMCwgbG4gPSB0eXBlb2Ygcm9vdC5sZWF2ZXMgIT09ICd1bmRlZmluZWQnID8gcm9vdC5sZWF2ZXMubGVuZ3RoIDogMCwgY2hpbGRDb25zdHJhaW50cyA9ICFnbiA/IFtdXHJcbiAgICAgICAgOiByb290Lmdyb3Vwcy5yZWR1Y2UoZnVuY3Rpb24gKGNjcywgZykgeyByZXR1cm4gY2NzLmNvbmNhdChnZW5lcmF0ZUdyb3VwQ29uc3RyYWludHMoZywgZiwgbWluU2VwLCB0cnVlKSk7IH0sIFtdKSwgbiA9IChpc0NvbnRhaW5lZCA/IDIgOiAwKSArIGxuICsgZ24sIHZzID0gbmV3IEFycmF5KG4pLCBycyA9IG5ldyBBcnJheShuKSwgaSA9IDAsIGFkZCA9IGZ1bmN0aW9uIChyLCB2KSB7IHJzW2ldID0gcjsgdnNbaSsrXSA9IHY7IH07XHJcbiAgICBpZiAoaXNDb250YWluZWQpIHtcclxuICAgICAgICB2YXIgYiA9IHJvb3QuYm91bmRzLCBjID0gZi5nZXRDZW50cmUoYiksIHMgPSBmLmdldFNpemUoYikgLyAyLCBvcGVuID0gZi5nZXRPcGVuKGIpLCBjbG9zZSA9IGYuZ2V0Q2xvc2UoYiksIG1pbiA9IGMgLSBzICsgcGFkZGluZyAvIDIsIG1heCA9IGMgKyBzIC0gcGFkZGluZyAvIDI7XHJcbiAgICAgICAgcm9vdC5taW5WYXIuZGVzaXJlZFBvc2l0aW9uID0gbWluO1xyXG4gICAgICAgIGFkZChmLm1ha2VSZWN0KG9wZW4sIGNsb3NlLCBtaW4sIHBhZGRpbmcpLCByb290Lm1pblZhcik7XHJcbiAgICAgICAgcm9vdC5tYXhWYXIuZGVzaXJlZFBvc2l0aW9uID0gbWF4O1xyXG4gICAgICAgIGFkZChmLm1ha2VSZWN0KG9wZW4sIGNsb3NlLCBtYXgsIHBhZGRpbmcpLCByb290Lm1heFZhcik7XHJcbiAgICB9XHJcbiAgICBpZiAobG4pXHJcbiAgICAgICAgcm9vdC5sZWF2ZXMuZm9yRWFjaChmdW5jdGlvbiAobCkgeyByZXR1cm4gYWRkKGwuYm91bmRzLCBsLnZhcmlhYmxlKTsgfSk7XHJcbiAgICBpZiAoZ24pXHJcbiAgICAgICAgcm9vdC5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgYiA9IGcuYm91bmRzO1xyXG4gICAgICAgICAgICBhZGQoZi5tYWtlUmVjdChmLmdldE9wZW4oYiksIGYuZ2V0Q2xvc2UoYiksIGYuZ2V0Q2VudHJlKGIpLCBmLmdldFNpemUoYikpLCBnLm1pblZhcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB2YXIgY3MgPSBnZW5lcmF0ZUNvbnN0cmFpbnRzKHJzLCB2cywgZiwgbWluU2VwKTtcclxuICAgIGlmIChnbikge1xyXG4gICAgICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgdi5jT3V0ID0gW10sIHYuY0luID0gW107IH0pO1xyXG4gICAgICAgIGNzLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgYy5sZWZ0LmNPdXQucHVzaChjKSwgYy5yaWdodC5jSW4ucHVzaChjKTsgfSk7XHJcbiAgICAgICAgcm9vdC5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgZ2FwQWRqdXN0bWVudCA9IChnLnBhZGRpbmcgLSBmLmdldFNpemUoZy5ib3VuZHMpKSAvIDI7XHJcbiAgICAgICAgICAgIGcubWluVmFyLmNJbi5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLmdhcCArPSBnYXBBZGp1c3RtZW50OyB9KTtcclxuICAgICAgICAgICAgZy5taW5WYXIuY091dC5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IGMubGVmdCA9IGcubWF4VmFyOyBjLmdhcCArPSBnYXBBZGp1c3RtZW50OyB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBjaGlsZENvbnN0cmFpbnRzLmNvbmNhdChjcyk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGVDb25zdHJhaW50cyhycywgdmFycywgcmVjdCwgbWluU2VwKSB7XHJcbiAgICB2YXIgaSwgbiA9IHJzLmxlbmd0aDtcclxuICAgIHZhciBOID0gMiAqIG47XHJcbiAgICBjb25zb2xlLmFzc2VydCh2YXJzLmxlbmd0aCA+PSBuKTtcclxuICAgIHZhciBldmVudHMgPSBuZXcgQXJyYXkoTik7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgdmFyIHIgPSByc1tpXTtcclxuICAgICAgICB2YXIgdiA9IG5ldyBOb2RlKHZhcnNbaV0sIHIsIHJlY3QuZ2V0Q2VudHJlKHIpKTtcclxuICAgICAgICBldmVudHNbaV0gPSBuZXcgRXZlbnQodHJ1ZSwgdiwgcmVjdC5nZXRPcGVuKHIpKTtcclxuICAgICAgICBldmVudHNbaSArIG5dID0gbmV3IEV2ZW50KGZhbHNlLCB2LCByZWN0LmdldENsb3NlKHIpKTtcclxuICAgIH1cclxuICAgIGV2ZW50cy5zb3J0KGNvbXBhcmVFdmVudHMpO1xyXG4gICAgdmFyIGNzID0gbmV3IEFycmF5KCk7XHJcbiAgICB2YXIgc2NhbmxpbmUgPSBtYWtlUkJUcmVlKCk7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgTjsgKytpKSB7XHJcbiAgICAgICAgdmFyIGUgPSBldmVudHNbaV07XHJcbiAgICAgICAgdmFyIHYgPSBlLnY7XHJcbiAgICAgICAgaWYgKGUuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHNjYW5saW5lLmluc2VydCh2KTtcclxuICAgICAgICAgICAgcmVjdC5maW5kTmVpZ2hib3Vycyh2LCBzY2FubGluZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzY2FubGluZS5yZW1vdmUodik7XHJcbiAgICAgICAgICAgIHZhciBtYWtlQ29uc3RyYWludCA9IGZ1bmN0aW9uIChsLCByKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VwID0gKHJlY3QuZ2V0U2l6ZShsLnIpICsgcmVjdC5nZXRTaXplKHIucikpIC8gMiArIG1pblNlcDtcclxuICAgICAgICAgICAgICAgIGNzLnB1c2gobmV3IHZwc2NfMS5Db25zdHJhaW50KGwudiwgci52LCBzZXApKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmFyIHZpc2l0TmVpZ2hib3VycyA9IGZ1bmN0aW9uIChmb3J3YXJkLCByZXZlcnNlLCBta2Nvbikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHUsIGl0ID0gdltmb3J3YXJkXS5pdGVyYXRvcigpO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKCh1ID0gaXRbZm9yd2FyZF0oKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBta2Nvbih1LCB2KTtcclxuICAgICAgICAgICAgICAgICAgICB1W3JldmVyc2VdLnJlbW92ZSh2KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmlzaXROZWlnaGJvdXJzKFwicHJldlwiLCBcIm5leHRcIiwgZnVuY3Rpb24gKHUsIHYpIHsgcmV0dXJuIG1ha2VDb25zdHJhaW50KHUsIHYpOyB9KTtcclxuICAgICAgICAgICAgdmlzaXROZWlnaGJvdXJzKFwibmV4dFwiLCBcInByZXZcIiwgZnVuY3Rpb24gKHUsIHYpIHsgcmV0dXJuIG1ha2VDb25zdHJhaW50KHYsIHUpOyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmFzc2VydChzY2FubGluZS5zaXplID09PSAwKTtcclxuICAgIHJldHVybiBjcztcclxufVxyXG5mdW5jdGlvbiBmaW5kWE5laWdoYm91cnModiwgc2NhbmxpbmUpIHtcclxuICAgIHZhciBmID0gZnVuY3Rpb24gKGZvcndhcmQsIHJldmVyc2UpIHtcclxuICAgICAgICB2YXIgaXQgPSBzY2FubGluZS5maW5kSXRlcih2KTtcclxuICAgICAgICB2YXIgdTtcclxuICAgICAgICB3aGlsZSAoKHUgPSBpdFtmb3J3YXJkXSgpKSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgdW92ZXJ2WCA9IHUuci5vdmVybGFwWCh2LnIpO1xyXG4gICAgICAgICAgICBpZiAodW92ZXJ2WCA8PSAwIHx8IHVvdmVydlggPD0gdS5yLm92ZXJsYXBZKHYucikpIHtcclxuICAgICAgICAgICAgICAgIHZbZm9yd2FyZF0uaW5zZXJ0KHUpO1xyXG4gICAgICAgICAgICAgICAgdVtyZXZlcnNlXS5pbnNlcnQodik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHVvdmVydlggPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZihcIm5leHRcIiwgXCJwcmV2XCIpO1xyXG4gICAgZihcInByZXZcIiwgXCJuZXh0XCIpO1xyXG59XHJcbmZ1bmN0aW9uIGZpbmRZTmVpZ2hib3Vycyh2LCBzY2FubGluZSkge1xyXG4gICAgdmFyIGYgPSBmdW5jdGlvbiAoZm9yd2FyZCwgcmV2ZXJzZSkge1xyXG4gICAgICAgIHZhciB1ID0gc2NhbmxpbmUuZmluZEl0ZXIodilbZm9yd2FyZF0oKTtcclxuICAgICAgICBpZiAodSAhPT0gbnVsbCAmJiB1LnIub3ZlcmxhcFgodi5yKSA+IDApIHtcclxuICAgICAgICAgICAgdltmb3J3YXJkXS5pbnNlcnQodSk7XHJcbiAgICAgICAgICAgIHVbcmV2ZXJzZV0uaW5zZXJ0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmKFwibmV4dFwiLCBcInByZXZcIik7XHJcbiAgICBmKFwicHJldlwiLCBcIm5leHRcIik7XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGVYQ29uc3RyYWludHMocnMsIHZhcnMpIHtcclxuICAgIHJldHVybiBnZW5lcmF0ZUNvbnN0cmFpbnRzKHJzLCB2YXJzLCB4UmVjdCwgMWUtNik7XHJcbn1cclxuZXhwb3J0cy5nZW5lcmF0ZVhDb25zdHJhaW50cyA9IGdlbmVyYXRlWENvbnN0cmFpbnRzO1xyXG5mdW5jdGlvbiBnZW5lcmF0ZVlDb25zdHJhaW50cyhycywgdmFycykge1xyXG4gICAgcmV0dXJuIGdlbmVyYXRlQ29uc3RyYWludHMocnMsIHZhcnMsIHlSZWN0LCAxZS02KTtcclxufVxyXG5leHBvcnRzLmdlbmVyYXRlWUNvbnN0cmFpbnRzID0gZ2VuZXJhdGVZQ29uc3RyYWludHM7XHJcbmZ1bmN0aW9uIGdlbmVyYXRlWEdyb3VwQ29uc3RyYWludHMocm9vdCkge1xyXG4gICAgcmV0dXJuIGdlbmVyYXRlR3JvdXBDb25zdHJhaW50cyhyb290LCB4UmVjdCwgMWUtNik7XHJcbn1cclxuZXhwb3J0cy5nZW5lcmF0ZVhHcm91cENvbnN0cmFpbnRzID0gZ2VuZXJhdGVYR3JvdXBDb25zdHJhaW50cztcclxuZnVuY3Rpb24gZ2VuZXJhdGVZR3JvdXBDb25zdHJhaW50cyhyb290KSB7XHJcbiAgICByZXR1cm4gZ2VuZXJhdGVHcm91cENvbnN0cmFpbnRzKHJvb3QsIHlSZWN0LCAxZS02KTtcclxufVxyXG5leHBvcnRzLmdlbmVyYXRlWUdyb3VwQ29uc3RyYWludHMgPSBnZW5lcmF0ZVlHcm91cENvbnN0cmFpbnRzO1xyXG5mdW5jdGlvbiByZW1vdmVPdmVybGFwcyhycykge1xyXG4gICAgdmFyIHZzID0gcnMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiBuZXcgdnBzY18xLlZhcmlhYmxlKHIuY3goKSk7IH0pO1xyXG4gICAgdmFyIGNzID0gZ2VuZXJhdGVYQ29uc3RyYWludHMocnMsIHZzKTtcclxuICAgIHZhciBzb2x2ZXIgPSBuZXcgdnBzY18xLlNvbHZlcih2cywgY3MpO1xyXG4gICAgc29sdmVyLnNvbHZlKCk7XHJcbiAgICB2cy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiByc1tpXS5zZXRYQ2VudHJlKHYucG9zaXRpb24oKSk7IH0pO1xyXG4gICAgdnMgPSBycy5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIG5ldyB2cHNjXzEuVmFyaWFibGUoci5jeSgpKTsgfSk7XHJcbiAgICBjcyA9IGdlbmVyYXRlWUNvbnN0cmFpbnRzKHJzLCB2cyk7XHJcbiAgICBzb2x2ZXIgPSBuZXcgdnBzY18xLlNvbHZlcih2cywgY3MpO1xyXG4gICAgc29sdmVyLnNvbHZlKCk7XHJcbiAgICB2cy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiByc1tpXS5zZXRZQ2VudHJlKHYucG9zaXRpb24oKSk7IH0pO1xyXG59XHJcbmV4cG9ydHMucmVtb3ZlT3ZlcmxhcHMgPSByZW1vdmVPdmVybGFwcztcclxudmFyIEluZGV4ZWRWYXJpYWJsZSA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoSW5kZXhlZFZhcmlhYmxlLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gSW5kZXhlZFZhcmlhYmxlKGluZGV4LCB3KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgMCwgdykgfHwgdGhpcztcclxuICAgICAgICBfdGhpcy5pbmRleCA9IGluZGV4O1xyXG4gICAgICAgIHJldHVybiBfdGhpcztcclxuICAgIH1cclxuICAgIHJldHVybiBJbmRleGVkVmFyaWFibGU7XHJcbn0odnBzY18xLlZhcmlhYmxlKSk7XHJcbmV4cG9ydHMuSW5kZXhlZFZhcmlhYmxlID0gSW5kZXhlZFZhcmlhYmxlO1xyXG52YXIgUHJvamVjdGlvbiA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQcm9qZWN0aW9uKG5vZGVzLCBncm91cHMsIHJvb3RHcm91cCwgY29uc3RyYWludHMsIGF2b2lkT3ZlcmxhcHMpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmIChyb290R3JvdXAgPT09IHZvaWQgMCkgeyByb290R3JvdXAgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGNvbnN0cmFpbnRzID09PSB2b2lkIDApIHsgY29uc3RyYWludHMgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGF2b2lkT3ZlcmxhcHMgPT09IHZvaWQgMCkgeyBhdm9pZE92ZXJsYXBzID0gZmFsc2U7IH1cclxuICAgICAgICB0aGlzLm5vZGVzID0gbm9kZXM7XHJcbiAgICAgICAgdGhpcy5ncm91cHMgPSBncm91cHM7XHJcbiAgICAgICAgdGhpcy5yb290R3JvdXAgPSByb290R3JvdXA7XHJcbiAgICAgICAgdGhpcy5hdm9pZE92ZXJsYXBzID0gYXZvaWRPdmVybGFwcztcclxuICAgICAgICB0aGlzLnZhcmlhYmxlcyA9IG5vZGVzLm1hcChmdW5jdGlvbiAodiwgaSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdi52YXJpYWJsZSA9IG5ldyBJbmRleGVkVmFyaWFibGUoaSwgMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGNvbnN0cmFpbnRzKVxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTtcclxuICAgICAgICBpZiAoYXZvaWRPdmVybGFwcyAmJiByb290R3JvdXAgJiYgdHlwZW9mIHJvb3RHcm91cC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdi53aWR0aCB8fCAhdi5oZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB2LmJvdW5kcyA9IG5ldyBSZWN0YW5nbGUodi54LCB2LngsIHYueSwgdi55KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgdzIgPSB2LndpZHRoIC8gMiwgaDIgPSB2LmhlaWdodCAvIDI7XHJcbiAgICAgICAgICAgICAgICB2LmJvdW5kcyA9IG5ldyBSZWN0YW5nbGUodi54IC0gdzIsIHYueCArIHcyLCB2LnkgLSBoMiwgdi55ICsgaDIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29tcHV0ZUdyb3VwQm91bmRzKHJvb3RHcm91cCk7XHJcbiAgICAgICAgICAgIHZhciBpID0gbm9kZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICBncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMudmFyaWFibGVzW2ldID0gZy5taW5WYXIgPSBuZXcgSW5kZXhlZFZhcmlhYmxlKGkrKywgdHlwZW9mIGcuc3RpZmZuZXNzICE9PSBcInVuZGVmaW5lZFwiID8gZy5zdGlmZm5lc3MgOiAwLjAxKTtcclxuICAgICAgICAgICAgICAgIF90aGlzLnZhcmlhYmxlc1tpXSA9IGcubWF4VmFyID0gbmV3IEluZGV4ZWRWYXJpYWJsZShpKyssIHR5cGVvZiBnLnN0aWZmbmVzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IGcuc3RpZmZuZXNzIDogMC4wMSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLmNyZWF0ZVNlcGFyYXRpb24gPSBmdW5jdGlvbiAoYykge1xyXG4gICAgICAgIHJldHVybiBuZXcgdnBzY18xLkNvbnN0cmFpbnQodGhpcy5ub2Rlc1tjLmxlZnRdLnZhcmlhYmxlLCB0aGlzLm5vZGVzW2MucmlnaHRdLnZhcmlhYmxlLCBjLmdhcCwgdHlwZW9mIGMuZXF1YWxpdHkgIT09IFwidW5kZWZpbmVkXCIgPyBjLmVxdWFsaXR5IDogZmFsc2UpO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLm1ha2VGZWFzaWJsZSA9IGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoIXRoaXMuYXZvaWRPdmVybGFwcylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHZhciBheGlzID0gJ3gnLCBkaW0gPSAnd2lkdGgnO1xyXG4gICAgICAgIGlmIChjLmF4aXMgPT09ICd4JylcclxuICAgICAgICAgICAgYXhpcyA9ICd5JywgZGltID0gJ2hlaWdodCc7XHJcbiAgICAgICAgdmFyIHZzID0gYy5vZmZzZXRzLm1hcChmdW5jdGlvbiAobykgeyByZXR1cm4gX3RoaXMubm9kZXNbby5ub2RlXTsgfSkuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYVtheGlzXSAtIGJbYXhpc107IH0pO1xyXG4gICAgICAgIHZhciBwID0gbnVsbDtcclxuICAgICAgICB2cy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV4dFBvcyA9IHBbYXhpc10gKyBwW2RpbV07XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dFBvcyA+IHZbYXhpc10pIHtcclxuICAgICAgICAgICAgICAgICAgICB2W2F4aXNdID0gbmV4dFBvcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwID0gdjtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbiAgICBQcm9qZWN0aW9uLnByb3RvdHlwZS5jcmVhdGVBbGlnbm1lbnQgPSBmdW5jdGlvbiAoYykge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHUgPSB0aGlzLm5vZGVzW2Mub2Zmc2V0c1swXS5ub2RlXS52YXJpYWJsZTtcclxuICAgICAgICB0aGlzLm1ha2VGZWFzaWJsZShjKTtcclxuICAgICAgICB2YXIgY3MgPSBjLmF4aXMgPT09ICd4JyA/IHRoaXMueENvbnN0cmFpbnRzIDogdGhpcy55Q29uc3RyYWludHM7XHJcbiAgICAgICAgYy5vZmZzZXRzLnNsaWNlKDEpLmZvckVhY2goZnVuY3Rpb24gKG8pIHtcclxuICAgICAgICAgICAgdmFyIHYgPSBfdGhpcy5ub2Rlc1tvLm5vZGVdLnZhcmlhYmxlO1xyXG4gICAgICAgICAgICBjcy5wdXNoKG5ldyB2cHNjXzEuQ29uc3RyYWludCh1LCB2LCBvLm9mZnNldCwgdHJ1ZSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLmNyZWF0ZUNvbnN0cmFpbnRzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnRzKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB2YXIgaXNTZXAgPSBmdW5jdGlvbiAoYykgeyByZXR1cm4gdHlwZW9mIGMudHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgYy50eXBlID09PSAnc2VwYXJhdGlvbic7IH07XHJcbiAgICAgICAgdGhpcy54Q29uc3RyYWludHMgPSBjb25zdHJhaW50c1xyXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLmF4aXMgPT09IFwieFwiICYmIGlzU2VwKGMpOyB9KVxyXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBfdGhpcy5jcmVhdGVTZXBhcmF0aW9uKGMpOyB9KTtcclxuICAgICAgICB0aGlzLnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMuYXhpcyA9PT0gXCJ5XCIgJiYgaXNTZXAoYyk7IH0pXHJcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIF90aGlzLmNyZWF0ZVNlcGFyYXRpb24oYyk7IH0pO1xyXG4gICAgICAgIGNvbnN0cmFpbnRzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMudHlwZSA9PT0gJ2FsaWdubWVudCc7IH0pXHJcbiAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBfdGhpcy5jcmVhdGVBbGlnbm1lbnQoYyk7IH0pO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLnNldHVwVmFyaWFibGVzQW5kQm91bmRzID0gZnVuY3Rpb24gKHgwLCB5MCwgZGVzaXJlZCwgZ2V0RGVzaXJlZCkge1xyXG4gICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkge1xyXG4gICAgICAgICAgICBpZiAodi5maXhlZCkge1xyXG4gICAgICAgICAgICAgICAgdi52YXJpYWJsZS53ZWlnaHQgPSB2LmZpeGVkV2VpZ2h0ID8gdi5maXhlZFdlaWdodCA6IDEwMDA7XHJcbiAgICAgICAgICAgICAgICBkZXNpcmVkW2ldID0gZ2V0RGVzaXJlZCh2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHYudmFyaWFibGUud2VpZ2h0ID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgdyA9ICh2LndpZHRoIHx8IDApIC8gMiwgaCA9ICh2LmhlaWdodCB8fCAwKSAvIDI7XHJcbiAgICAgICAgICAgIHZhciBpeCA9IHgwW2ldLCBpeSA9IHkwW2ldO1xyXG4gICAgICAgICAgICB2LmJvdW5kcyA9IG5ldyBSZWN0YW5nbGUoaXggLSB3LCBpeCArIHcsIGl5IC0gaCwgaXkgKyBoKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbiAgICBQcm9qZWN0aW9uLnByb3RvdHlwZS54UHJvamVjdCA9IGZ1bmN0aW9uICh4MCwgeTAsIHgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucm9vdEdyb3VwICYmICEodGhpcy5hdm9pZE92ZXJsYXBzIHx8IHRoaXMueENvbnN0cmFpbnRzKSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucHJvamVjdCh4MCwgeTAsIHgwLCB4LCBmdW5jdGlvbiAodikgeyByZXR1cm4gdi5weDsgfSwgdGhpcy54Q29uc3RyYWludHMsIGdlbmVyYXRlWEdyb3VwQ29uc3RyYWludHMsIGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LmJvdW5kcy5zZXRYQ2VudHJlKHhbdi52YXJpYWJsZS5pbmRleF0gPSB2LnZhcmlhYmxlLnBvc2l0aW9uKCkpOyB9LCBmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgeG1pbiA9IHhbZy5taW5WYXIuaW5kZXhdID0gZy5taW5WYXIucG9zaXRpb24oKTtcclxuICAgICAgICAgICAgdmFyIHhtYXggPSB4W2cubWF4VmFyLmluZGV4XSA9IGcubWF4VmFyLnBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHZhciBwMiA9IGcucGFkZGluZyAvIDI7XHJcbiAgICAgICAgICAgIGcuYm91bmRzLnggPSB4bWluIC0gcDI7XHJcbiAgICAgICAgICAgIGcuYm91bmRzLlggPSB4bWF4ICsgcDI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgUHJvamVjdGlvbi5wcm90b3R5cGUueVByb2plY3QgPSBmdW5jdGlvbiAoeDAsIHkwLCB5KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvb3RHcm91cCAmJiAhdGhpcy55Q29uc3RyYWludHMpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb2plY3QoeDAsIHkwLCB5MCwgeSwgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYucHk7IH0sIHRoaXMueUNvbnN0cmFpbnRzLCBnZW5lcmF0ZVlHcm91cENvbnN0cmFpbnRzLCBmdW5jdGlvbiAodikgeyByZXR1cm4gdi5ib3VuZHMuc2V0WUNlbnRyZSh5W3YudmFyaWFibGUuaW5kZXhdID0gdi52YXJpYWJsZS5wb3NpdGlvbigpKTsgfSwgZnVuY3Rpb24gKGcpIHtcclxuICAgICAgICAgICAgdmFyIHltaW4gPSB5W2cubWluVmFyLmluZGV4XSA9IGcubWluVmFyLnBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHZhciB5bWF4ID0geVtnLm1heFZhci5pbmRleF0gPSBnLm1heFZhci5wb3NpdGlvbigpO1xyXG4gICAgICAgICAgICB2YXIgcDIgPSBnLnBhZGRpbmcgLyAyO1xyXG4gICAgICAgICAgICBnLmJvdW5kcy55ID0geW1pbiAtIHAyO1xyXG4gICAgICAgICAgICA7XHJcbiAgICAgICAgICAgIGcuYm91bmRzLlkgPSB5bWF4ICsgcDI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgUHJvamVjdGlvbi5wcm90b3R5cGUucHJvamVjdEZ1bmN0aW9ucyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICh4MCwgeTAsIHgpIHsgcmV0dXJuIF90aGlzLnhQcm9qZWN0KHgwLCB5MCwgeCk7IH0sXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICh4MCwgeTAsIHkpIHsgcmV0dXJuIF90aGlzLnlQcm9qZWN0KHgwLCB5MCwgeSk7IH1cclxuICAgICAgICBdO1xyXG4gICAgfTtcclxuICAgIFByb2plY3Rpb24ucHJvdG90eXBlLnByb2plY3QgPSBmdW5jdGlvbiAoeDAsIHkwLCBzdGFydCwgZGVzaXJlZCwgZ2V0RGVzaXJlZCwgY3MsIGdlbmVyYXRlQ29uc3RyYWludHMsIHVwZGF0ZU5vZGVCb3VuZHMsIHVwZGF0ZUdyb3VwQm91bmRzKSB7XHJcbiAgICAgICAgdGhpcy5zZXR1cFZhcmlhYmxlc0FuZEJvdW5kcyh4MCwgeTAsIGRlc2lyZWQsIGdldERlc2lyZWQpO1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3RHcm91cCAmJiB0aGlzLmF2b2lkT3ZlcmxhcHMpIHtcclxuICAgICAgICAgICAgY29tcHV0ZUdyb3VwQm91bmRzKHRoaXMucm9vdEdyb3VwKTtcclxuICAgICAgICAgICAgY3MgPSBjcy5jb25jYXQoZ2VuZXJhdGVDb25zdHJhaW50cyh0aGlzLnJvb3RHcm91cCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNvbHZlKHRoaXMudmFyaWFibGVzLCBjcywgc3RhcnQsIGRlc2lyZWQpO1xyXG4gICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaCh1cGRhdGVOb2RlQm91bmRzKTtcclxuICAgICAgICBpZiAodGhpcy5yb290R3JvdXAgJiYgdGhpcy5hdm9pZE92ZXJsYXBzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2godXBkYXRlR3JvdXBCb3VuZHMpO1xyXG4gICAgICAgICAgICBjb21wdXRlR3JvdXBCb3VuZHModGhpcy5yb290R3JvdXApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBQcm9qZWN0aW9uLnByb3RvdHlwZS5zb2x2ZSA9IGZ1bmN0aW9uICh2cywgY3MsIHN0YXJ0aW5nLCBkZXNpcmVkKSB7XHJcbiAgICAgICAgdmFyIHNvbHZlciA9IG5ldyB2cHNjXzEuU29sdmVyKHZzLCBjcyk7XHJcbiAgICAgICAgc29sdmVyLnNldFN0YXJ0aW5nUG9zaXRpb25zKHN0YXJ0aW5nKTtcclxuICAgICAgICBzb2x2ZXIuc2V0RGVzaXJlZFBvc2l0aW9ucyhkZXNpcmVkKTtcclxuICAgICAgICBzb2x2ZXIuc29sdmUoKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUHJvamVjdGlvbjtcclxufSgpKTtcclxuZXhwb3J0cy5Qcm9qZWN0aW9uID0gUHJvamVjdGlvbjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21WamRHRnVaMnhsTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dlYyVmlRMjlzWVM5emNtTXZjbVZqZEdGdVoyeGxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenM3T3pzN096dEJRVUZCTEN0Q1FVRnRSRHRCUVVOdVJDeHRRMEZCSzBJN1FVRnJRak5DTEZOQlFXZENMR3RDUVVGclFpeERRVUZETEVOQlFXdENPMGxCUTJwRUxFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlEzaERMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFVTXNRMEZCV1N4RlFVRkZMRU5CUVVNc1NVRkJTeXhQUVVGQkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGcVFpeERRVUZwUWl4RlFVRkZMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVVc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzBsQlEzUkNMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWYzdVVUZETDBJc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQll5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGRExFTkJRVmtzUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4clFrRkJhMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVGxDTEVOQlFUaENMRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEzcEhMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlEzWkRMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU53UWl4RFFVRkRPMEZCVWtRc1owUkJVVU03UVVGRlJEdEpRVU5KTEcxQ1FVTlhMRU5CUVZNc1JVRkRWQ3hEUVVGVExFVkJRMVFzUTBGQlV5eEZRVU5VTEVOQlFWTTdVVUZJVkN4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGUk8xRkJRMVFzVFVGQlF5eEhRVUZFTEVOQlFVTXNRMEZCVVR0UlFVTlVMRTFCUVVNc1IwRkJSQ3hEUVVGRExFTkJRVkU3VVVGRFZDeE5RVUZETEVkQlFVUXNRMEZCUXl4RFFVRlJPMGxCUVVrc1EwRkJRenRKUVVWc1FpeGxRVUZMTEVkQlFWb3NZMEZCTkVJc1QwRkJUeXhKUVVGSkxGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhGUVVGRkxFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hOUVVGTkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRk0wb3NjMEpCUVVVc1IwRkJSaXhqUVVGbExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlRsRExITkNRVUZGTEVkQlFVWXNZMEZCWlN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVU1UXl3MFFrRkJVU3hIUVVGU0xGVkJRVk1zUTBGQldUdFJRVU5xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU5vUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMnhFTEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRiRVFzVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlVRc05FSkJRVkVzUjBGQlVpeFZRVUZUTEVOQlFWazdVVUZEYWtJc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdVVUZEYUVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUkN4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMnhFTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJJc1EwRkJRenRKUVVWRUxEaENRVUZWTEVkQlFWWXNWVUZCVnl4RlFVRlZPMUZCUTJwQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGVFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGRFlpeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRKUVVOcVFpeERRVUZETzBsQlJVUXNPRUpCUVZVc1IwRkJWaXhWUVVGWExFVkJRVlU3VVVGRGFrSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0UlFVTmlMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzBsQlEycENMRU5CUVVNN1NVRkZSQ3g1UWtGQlN5eEhRVUZNTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETTBJc1EwRkJRenRKUVVWRUxEQkNRVUZOTEVkQlFVNDdVVUZEU1N4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTXpRaXhEUVVGRE8wbEJSVVFzZVVKQlFVc3NSMEZCVEN4VlFVRk5MRU5CUVZrN1VVRkRaQ3hQUVVGUExFbEJRVWtzVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55U0N4RFFVRkRPMGxCVjBRc2NVTkJRV2xDTEVkQlFXcENMRlZCUVd0Q0xFVkJRVlVzUlVGQlJTeEZRVUZWTEVWQlFVVXNSVUZCVlN4RlFVRkZMRVZCUVZVN1VVRkROVVFzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY2tNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTJoRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1lVRkJZU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU4yUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGRrY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTVHRuUWtGQlJTeGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFOQlF6RkVPMUZCUTBRc1QwRkJUeXhoUVVGaExFTkJRVU03U1VGRGVrSXNRMEZCUXp0SlFWVkVMRzFEUVVGbExFZEJRV1lzVlVGQlowSXNSVUZCVlN4RlFVRkZMRVZCUVZVN1VVRkRiRU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMmhGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzBsQlF6VkRMRU5CUVVNN1NVRkZSQ3cwUWtGQlVTeEhRVUZTTzFGQlEwa3NUMEZCVHp0WlFVTklMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVU3V1VGRGVFSXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSVHRaUVVONFFpeEZRVUZGTEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZPMWxCUTNoQ0xFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVTdVMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGRlRTd3dRa0ZCWjBJc1IwRkJka0lzVlVGRFNTeEZRVUZWTEVWQlFVVXNSVUZCVlN4RlFVTjBRaXhGUVVGVkxFVkJRVVVzUlVGQlZTeEZRVU4wUWl4RlFVRlZMRVZCUVVVc1JVRkJWU3hGUVVOMFFpeEZRVUZWTEVWQlFVVXNSVUZCVlR0UlFVTjBRaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRWxCUVVrc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVU01UWl4SlFVRkpMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJTeEpRVUZKTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkRPVUlzVjBGQlZ5eEhRVUZITEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU0xUXl4SlFVRkpMRmRCUVZjc1NVRkJTU3hEUVVGRE8xbEJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTTdVVUZEYkVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlN4SlFVRkpMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGRE9VSXNTVUZCU1N4SFFVRkhMRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVsQlFVa3NSVUZEYUVNc1EwRkJReXhIUVVGSExFbEJRVWtzUjBGQlJ5eFhRVUZYTEVWQlEzUkNMRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVsQlFVa3NSMEZCUnl4SlFVRkpMRVZCUTJoRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NWMEZCVnl4RFFVRkRPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRaUVVOMFF5eFBRVUZQTzJkQ1FVTklMRU5CUVVNc1JVRkJSU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVsQlFVazdaMEpCUTJoQ0xFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrN1lVRkRia0lzUTBGQlF6dFRRVU5NTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRhRUlzUTBGQlF6dEpRVVZFTERKQ1FVRlBMRWRCUVZBc1ZVRkJVU3hIUVVGWE8xRkJRMllzVDBGQlR5eEpRVUZKTEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEycEdMRU5CUVVNN1NVRkRUQ3huUWtGQlF6dEJRVUZFTEVOQlFVTXNRVUY0U0VRc1NVRjNTRU03UVVGNFNGa3NPRUpCUVZNN1FVRnhTWFJDTEZOQlFXZENMR1ZCUVdVc1EwRkJReXhOUVVGcFFpeEZRVUZGTEUxQlFXbENMRVZCUVVVc1JVRkJWVHRKUVVVMVJTeEpRVUZOTEVWQlFVVXNSMEZCUnl4TlFVRk5MRU5CUVVNc1pVRkJaU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVNM1JpeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1JVRkRNMFlzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGRGFFSXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZEYUVJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGJFUXNUMEZCVHp0UlFVTklMR3RDUVVGclFpeEZRVUZGTEVWQlFVVTdVVUZEZEVJc2EwSkJRV3RDTEVWQlFVVXNSVUZCUlR0UlFVTjBRaXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSVHRMUVVNdlJDeERRVUZCTzBGQlEwd3NRMEZCUXp0QlFWcEVMREJEUVZsRE8wRkJWMFFzVTBGQlowSXNWVUZCVlN4RFFVRkRMRU5CUVRKQ0xFVkJRVVVzVFVGQmFVSXNSVUZCUlN4RlFVRlZPMGxCUTJwR0xFbEJRVWtzUlVGQlJTeEhRVUZITEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVU1zU1VGQlNTeERRVUZETEVWQlFVVTdVVUZCUlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0SlFVTnFSQ3hKUVVGSkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMllzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRFppeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJRenRKUVVOeVF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF6dEJRVU0xUkN4RFFVRkRPMEZCVUVRc1owTkJUME03UVVGRlJEdEpRVWxKTEdOQlFXMUNMRU5CUVZjc1JVRkJVeXhEUVVGWkxFVkJRVk1zUjBGQlZ6dFJRVUZ3UkN4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGVk8xRkJRVk1zVFVGQlF5eEhRVUZFTEVOQlFVTXNRMEZCVnp0UlFVRlRMRkZCUVVjc1IwRkJTQ3hIUVVGSExFTkJRVkU3VVVGRGJrVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhWUVVGVkxFVkJRVVVzUTBGQlF6dFJRVU42UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExGVkJRVlVzUlVGQlJTeERRVUZETzBsQlF6ZENMRU5CUVVNN1NVRkRUQ3hYUVVGRE8wRkJRVVFzUTBGQlF5eEJRVkpFTEVsQlVVTTdRVUZGUkR0SlFVTkpMR1ZCUVcxQ0xFMUJRV1VzUlVGQlV5eERRVUZQTEVWQlFWTXNSMEZCVnp0UlFVRnVSQ3hYUVVGTkxFZEJRVTRzVFVGQlRTeERRVUZUTzFGQlFWTXNUVUZCUXl4SFFVRkVMRU5CUVVNc1EwRkJUVHRSUVVGVExGRkJRVWNzUjBGQlNDeEhRVUZITEVOQlFWRTdTVUZCUnl4RFFVRkRPMGxCUXpsRkxGbEJRVU03UVVGQlJDeERRVUZETEVGQlJrUXNTVUZGUXp0QlFVVkVMRk5CUVZNc1lVRkJZU3hEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTzBsQlEzSkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZPMUZCUTJZc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRFdqdEpRVU5FTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTzFGQlEyWXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOaU8wbEJRMFFzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZPMUZCUlZZc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU5pTzBsQlEwUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8xRkJSVllzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZEV2p0SlFVTkVMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRMklzUTBGQlF6dEJRVVZFTEZOQlFWTXNWVUZCVlR0SlFVTm1MRTlCUVU4c1NVRkJTU3hsUVVGTkxFTkJRVThzVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkxMRTlCUVVFc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRmlMRU5CUVdFc1EwRkJReXhEUVVGRE8wRkJRM0pFTEVOQlFVTTdRVUZYUkN4SlFVRkpMRXRCUVVzc1IwRkJhMEk3U1VGRGRrSXNVMEZCVXl4RlFVRkZMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRk9MRU5CUVUwN1NVRkRja0lzVDBGQlR5eEZRVUZGTEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlNDeERRVUZITzBsQlEyaENMRkZCUVZFc1JVRkJSU3hWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVnc1EwRkJSenRKUVVOcVFpeFBRVUZQTEVWQlFVVXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFWUXNRMEZCVXp0SlFVTjBRaXhSUVVGUkxFVkJRVVVzVlVGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFbEJRVXNzVDBGQlFTeEpRVUZKTEZOQlFWTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEVWQlFXaEZMRU5CUVdkRk8wbEJRM3BITEdOQlFXTXNSVUZCUlN4bFFVRmxPME5CUTJ4RExFTkJRVU03UVVGRlJpeEpRVUZKTEV0QlFVc3NSMEZCYTBJN1NVRkRka0lzVTBGQlV5eEZRVUZGTEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZPTEVOQlFVMDdTVUZEY2tJc1QwRkJUeXhGUVVGRkxGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJTQ3hEUVVGSE8wbEJRMmhDTEZGQlFWRXNSVUZCUlN4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVZ3NRMEZCUnp0SlFVTnFRaXhQUVVGUExFVkJRVVVzVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVllzUTBGQlZUdEpRVU4yUWl4UlFVRlJMRVZCUVVVc1ZVRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRWxCUVVzc1QwRkJRU3hKUVVGSkxGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEUxQlFVMHNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRV2hGTEVOQlFXZEZPMGxCUTNwSExHTkJRV01zUlVGQlJTeGxRVUZsTzBOQlEyeERMRU5CUVVNN1FVRkZSaXhUUVVGVExIZENRVUYzUWl4RFFVRkRMRWxCUVhGQ0xFVkJRVVVzUTBGQlowSXNSVUZCUlN4TlFVRmpMRVZCUVVVc1YwRkJORUk3U1VGQk5VSXNORUpCUVVFc1JVRkJRU3h0UWtGQk5FSTdTVUZGYmtnc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZEZEVJc1JVRkJSU3hIUVVGSExFOUJRVThzU1VGQlNTeERRVUZETEUxQlFVMHNTMEZCU3l4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMmhGTEVWQlFVVXNSMEZCUnl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVTm9SU3huUWtGQlowSXNSMEZCYVVJc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdVVUZEZWtNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVVNc1IwRkJhVUlzUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExIZENRVUYzUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVhoRUxFTkJRWGRFTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUXpWSExFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVOdVF5eEZRVUZGTEVkQlFXVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRemRDTEVWQlFVVXNSMEZCWjBJc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlF6bENMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRMHdzUjBGQlJ5eEhRVUZITEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJUeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkJMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJReTlETEVsQlFVa3NWMEZCVnl4RlFVRkZPMUZCUldJc1NVRkJTU3hEUVVGRExFZEJRV01zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZETVVJc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVONFF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRE1VTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzVDBGQlR5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNwRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNaVUZCWlN4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVOc1F5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlN4UFFVRlBMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVRc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGxRVUZsTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTJ4RExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU16UkR0SlFVTkVMRWxCUVVrc1JVRkJSVHRSUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUY2UWl4RFFVRjVRaXhEUVVGRExFTkJRVU03U1VGRE5VUXNTVUZCU1N4RlFVRkZPMUZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzUTBGQlF5eEhRVUZqTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1dVRkROVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTjZSaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5JTEVsQlFVa3NSVUZCUlN4SFFVRkhMRzFDUVVGdFFpeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEyaEVMRWxCUVVrc1JVRkJSU3hGUVVGRk8xRkJRMG9zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlFTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlFTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpsRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenRaUVVOcVFpeEpRVUZKTEdGQlFXRXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZETVVRc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4aFFVRmhMRVZCUVhSQ0xFTkJRWE5DTEVOQlFVTXNRMEZCUXp0WlFVTnNSQ3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UlN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOT08wbEJRMFFzVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZGtNc1EwRkJRenRCUVVWRUxGTkJRVk1zYlVKQlFXMUNMRU5CUVVNc1JVRkJaU3hGUVVGRkxFbEJRV2RDTEVWQlF6RkVMRWxCUVcxQ0xFVkJRVVVzVFVGQll6dEpRVVZ1UXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVTnlRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJRc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnBETEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEycERMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM0JDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5rTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJoRUxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5vUkN4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRM3BFTzBsQlEwUXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dEpRVU16UWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUlVGQll5eERRVUZETzBsQlEycERMRWxCUVVrc1VVRkJVU3hIUVVGSExGVkJRVlVzUlVGQlJTeERRVUZETzBsQlF6VkNMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM0JDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExb3NTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRMVlzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFRRVU53UXp0aFFVRk5PMWxCUlVnc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnVRaXhKUVVGSkxHTkJRV01zUjBGQlJ5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMmRDUVVOMFFpeEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF6dG5Ra0ZETDBRc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEdsQ1FVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE0wTXNRMEZCUXl4RFFVRkRPMWxCUTBZc1NVRkJTU3hsUVVGbExFZEJRVWNzVlVGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRXRCUVVzN1owSkJRekZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1owSkJRMnhETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4SlFVRkpMRVZCUVVVN2IwSkJRMnBETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlExb3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRlRUk3V1VGRFRDeERRVUZETEVOQlFVTTdXVUZEUml4bFFVRmxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hqUVVGakxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRndRaXhEUVVGdlFpeERRVUZETEVOQlFVTTdXVUZEYUVVc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzWTBGQll5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJjRUlzUTBGQmIwSXNRMEZCUXl4RFFVRkRPMU5CUTI1Rk8wdEJRMG83U1VGRFJDeFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEY0VNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRFpDeERRVUZETzBGQlJVUXNVMEZCVXl4bFFVRmxMRU5CUVVNc1EwRkJUeXhGUVVGRkxGRkJRWE5DTzBsQlEzQkVMRWxCUVVrc1EwRkJReXhIUVVGSExGVkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVODdVVUZEY2tJc1NVRkJTU3hGUVVGRkxFZEJRVWNzVVVGQlVTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNNVFpeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTk9MRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGFrTXNTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMmhETEVsQlFVa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTTVReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU55UWl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNoQ08xbEJRMFFzU1VGQlNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RlFVRkZPMmRDUVVOa0xFMUJRVTA3WVVGRFZEdFRRVU5LTzBsQlEwd3NRMEZCUXl4RFFVRkJPMGxCUTBRc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTnNRaXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTNSQ0xFTkJRVU03UVVGRlJDeFRRVUZUTEdWQlFXVXNRMEZCUXl4RFFVRlBMRVZCUVVVc1VVRkJjMEk3U1VGRGNFUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1ZVRkJReXhQUVVGUExFVkJRVVVzVDBGQlR6dFJRVU55UWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGVFTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdXVUZEY2tNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOeVFpeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzaENPMGxCUTB3c1EwRkJReXhEUVVGQk8wbEJRMFFzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOc1FpeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRM1JDTEVOQlFVTTdRVUZGUkN4VFFVRm5RaXh2UWtGQmIwSXNRMEZCUXl4RlFVRmxMRVZCUVVVc1NVRkJaMEk3U1VGRGJFVXNUMEZCVHl4dFFrRkJiVUlzUTBGQlF5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU4wUkN4RFFVRkRPMEZCUmtRc2IwUkJSVU03UVVGRlJDeFRRVUZuUWl4dlFrRkJiMElzUTBGQlF5eEZRVUZsTEVWQlFVVXNTVUZCWjBJN1NVRkRiRVVzVDBGQlR5eHRRa0ZCYlVJc1EwRkJReXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOMFJDeERRVUZETzBGQlJrUXNiMFJCUlVNN1FVRkZSQ3hUUVVGblFpeDVRa0ZCZVVJc1EwRkJReXhKUVVGeFFqdEpRVU16UkN4UFFVRlBMSGRDUVVGM1FpeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGRrUXNRMEZCUXp0QlFVWkVMRGhFUVVWRE8wRkJSVVFzVTBGQlowSXNlVUpCUVhsQ0xFTkJRVU1zU1VGQmNVSTdTVUZETTBRc1QwRkJUeXgzUWtGQmQwSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzWkVMRU5CUVVNN1FVRkdSQ3c0UkVGRlF6dEJRVVZFTEZOQlFXZENMR05CUVdNc1EwRkJReXhGUVVGbE8wbEJRekZETEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4SlFVRkpMR1ZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCY0VJc1EwRkJiMElzUTBGQlF5eERRVUZETzBsQlF6TkRMRWxCUVVrc1JVRkJSU3hIUVVGSExHOUNRVUZ2UWl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEpRVU4wUXl4SlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxHRkJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRhRU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMGxCUTJZc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eEZRVUU1UWl4RFFVRTRRaXhEUVVGRExFTkJRVU03U1VGRGNrUXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4SlFVRkpMR1ZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCY0VJc1EwRkJiMElzUTBGQlF5eERRVUZETzBsQlEzUkRMRVZCUVVVc1IwRkJSeXh2UWtGQmIwSXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGJFTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1lVRkJUU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTTFRaXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdTVUZEWml4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU3l4UFFVRkJMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFVkJRVGxDTEVOQlFUaENMRU5CUVVNc1EwRkJRenRCUVVONlJDeERRVUZETzBGQldFUXNkME5CVjBNN1FVRmhSRHRKUVVGeFF5eHRRMEZCVVR0SlFVTjZReXg1UWtGQmJVSXNTMEZCWVN4RlFVRkZMRU5CUVZNN1VVRkJNME1zV1VGRFNTeHJRa0ZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRMlE3VVVGR2EwSXNWMEZCU3l4SFFVRk1MRXRCUVVzc1EwRkJVVHM3U1VGRmFFTXNRMEZCUXp0SlFVTk1MSE5DUVVGRE8wRkJRVVFzUTBGQlF5eEJRVXBFTEVOQlFYRkRMR1ZCUVZFc1IwRkpOVU03UVVGS1dTd3dRMEZCWlR0QlFVMDFRanRKUVV0SkxHOUNRVUZ2UWl4TFFVRnJRaXhGUVVNeFFpeE5RVUY1UWl4RlFVTjZRaXhUUVVGcFF5eEZRVU42UXl4WFFVRjNRaXhGUVVOb1FpeGhRVUU0UWp0UlFVb3hReXhwUWtFNFFrTTdVVUUxUWxjc01FSkJRVUVzUlVGQlFTeG5Ra0ZCYVVNN1VVRkRla01zTkVKQlFVRXNSVUZCUVN4clFrRkJkMEk3VVVGRGFFSXNPRUpCUVVFc1JVRkJRU3h4UWtGQk9FSTdVVUZLZEVJc1ZVRkJTeXhIUVVGTUxFdEJRVXNzUTBGQllUdFJRVU14UWl4WFFVRk5MRWRCUVU0c1RVRkJUU3hEUVVGdFFqdFJRVU42UWl4alFVRlRMRWRCUVZRc1UwRkJVeXhEUVVGM1FqdFJRVVZxUXl4clFrRkJZU3hIUVVGaUxHRkJRV0VzUTBGQmFVSTdVVUZGZEVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRE5VSXNUMEZCVHl4RFFVRkRMRU5CUVVNc1VVRkJVU3hIUVVGSExFbEJRVWtzWlVGQlpTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOc1JDeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRWxCUVVrc1YwRkJWenRaUVVGRkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVVZ5UkN4SlFVRkpMR0ZCUVdFc1NVRkJTU3hUUVVGVExFbEJRVWtzVDBGQlR5eFRRVUZUTEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjc1JVRkJSVHRaUVVOMlJTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenRuUWtGRE1VSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVTjZRanR2UWtGRlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRE4wTXNUMEZCVHp0cFFrRkRVRHRuUWtGRFl5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzaERMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU55UlN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOSUxHdENRVUZyUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xbEJRemxDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU03V1VGRGNrSXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03WjBKQlExb3NTMEZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1pVRkJaU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRMRk5CUVZNc1MwRkJTeXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnFTQ3hMUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeGxRVUZsTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zVTBGQlV5eExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRja2dzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEVGp0SlFVTk1MRU5CUVVNN1NVRkhUeXh4UTBGQlowSXNSMEZCZUVJc1ZVRkJlVUlzUTBGQlRUdFJRVU16UWl4UFFVRlBMRWxCUVVrc2FVSkJRVlVzUTBGRGFrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4RlFVTXpRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRelZDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUTB3c1QwRkJUeXhEUVVGRExFTkJRVU1zVVVGQlVTeExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRhRVVzUTBGQlF6dEpRVWRQTEdsRFFVRlpMRWRCUVhCQ0xGVkJRWEZDTEVOQlFVMDdVVUZCTTBJc2FVSkJhVUpETzFGQmFFSkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllUdFpRVUZGTEU5QlFVODdVVUZGYUVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSMEZCUnl4UFFVRlBMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRWRCUVVjN1dVRkJSU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSMEZCUnl4UlFVRlJMRU5CUVVNN1VVRkRMME1zU1VGQlNTeEZRVUZGTEVkQlFXZENMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1MwRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVd4Q0xFTkJRV3RDTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCYWtJc1EwRkJhVUlzUTBGQlF5eERRVUZETzFGQlF5OUdMRWxCUVVrc1EwRkJReXhIUVVGakxFbEJRVWtzUTBGQlF6dFJRVU40UWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dFpRVVZTTEVsQlFVa3NRMEZCUXl4RlFVRkZPMmRDUVVOSUxFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUXk5Q0xFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHR2UWtGRGJrSXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFOUJRVThzUTBGQlF6dHBRa0ZEY2tJN1lVRkRTanRaUVVORUxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEVml4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlR5eHZRMEZCWlN4SFFVRjJRaXhWUVVGM1FpeERRVUZOTzFGQlFUbENMR2xDUVZGRE8xRkJVRWNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF6dFJRVU12UXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkNMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRMmhGTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1dVRkRlRUlzU1VGQlNTeERRVUZETEVkQlFVY3NTMEZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRPMWxCUTNCRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4cFFrRkJWU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyeEVMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMUFzUTBGQlF6dEpRVVZQTEhORFFVRnBRaXhIUVVGNlFpeFZRVUV3UWl4WFFVRnJRanRSUVVFMVF5eHBRa0ZYUXp0UlFWWkhMRWxCUVVrc1MwRkJTeXhIUVVGSExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1NVRkJTU3hMUVVGTExGZEJRVmNzU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRmxCUVZrc1JVRkJlRVFzUTBGQmQwUXNRMEZCUXp0UlFVTXhSU3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEZkQlFWYzdZVUZETVVJc1RVRkJUU3hEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRXhRaXhEUVVFd1FpeERRVUZETzJGQlEzWkRMRWRCUVVjc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEV0QlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzFGQlEzaERMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzVjBGQlZ6dGhRVU14UWl4TlFVRk5MRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFURkNMRU5CUVRCQ0xFTkJRVU03WVVGRGRrTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUzBGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUY0UWl4RFFVRjNRaXhEUVVGRExFTkJRVU03VVVGRGVFTXNWMEZCVnp0aFFVTk9MRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzc1YwRkJWeXhGUVVGMFFpeERRVUZ6UWl4RFFVRkRPMkZCUTI1RExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRXRCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFYWkNMRU5CUVhWQ0xFTkJRVU1zUTBGQlF6dEpRVU12UXl4RFFVRkRPMGxCUlU4c05FTkJRWFZDTEVkQlFTOUNMRlZCUVdkRExFVkJRVmtzUlVGQlJTeEZRVUZaTEVWQlFVVXNUMEZCYVVJc1JVRkJSU3hWUVVGdlF6dFJRVU12Unl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTNCQ0xFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlR0blFrRkRWQ3hEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03WjBKQlEzcEVMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRPVUk3YVVKQlFVMDdaMEpCUTBnc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTNwQ08xbEJRMFFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOd1JDeEpRVUZKTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNelFpeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1UwRkJVeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1JDeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTlFMRU5CUVVNN1NVRkZSQ3cyUWtGQlVTeEhRVUZTTEZWQlFWTXNSVUZCV1N4RlFVRkZMRVZCUVZrc1JVRkJSU3hEUVVGWE8xRkJRelZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03V1VGQlJTeFBRVUZQTzFGQlF6RkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJTaXhEUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4NVFrRkJlVUlzUlVGRE9VVXNWVUZCUVN4RFFVRkRMRWxCUVVrc1QwRkJRU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVcxQ0xFTkJRVU1zUTBGQlF5eFJRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RlFVRnVSaXhEUVVGdFJpeEZRVU40Uml4VlFVRkJMRU5CUVVNN1dVRkRSeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFXMUNMRU5CUVVNc1EwRkJReXhOUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFpRVU4wUlN4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVzFDTEVOQlFVTXNRMEZCUXl4TlFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRaUVVOMFJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU4yUWl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTNaQ0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRE0wSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRXQ3hEUVVGRE8wbEJSVVFzTmtKQlFWRXNSMEZCVWl4VlFVRlRMRVZCUVZrc1JVRkJSU3hGUVVGWkxFVkJRVVVzUTBGQlZ6dFJRVU0xUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpPMWxCUVVVc1QwRkJUenRSUVVOc1JDeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVb3NRMEZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzZVVKQlFYbENMRVZCUXpsRkxGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZ0UWl4RFFVRkRMRU5CUVVNc1VVRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUlVGQmJrWXNRMEZCYlVZc1JVRkRlRVlzVlVGQlFTeERRVUZETzFsQlEwY3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGdFFpeERRVUZETEVOQlFVTXNUVUZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1dVRkRkRVVzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRnRRaXhEUVVGRExFTkJRVU1zVFVGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdXVUZEZEVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRka0lzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dFpRVUZCTEVOQlFVTTdXVUZEZUVJc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVNelFpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTllMRU5CUVVNN1NVRkZSQ3h4UTBGQlowSXNSMEZCYUVJN1VVRkJRU3hwUWtGTFF6dFJRVXBITEU5QlFVODdXVUZEU0N4VlFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNTMEZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRjRRaXhEUVVGM1FqdFpRVU4yUXl4VlFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNTMEZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRjRRaXhEUVVGM1FqdFRRVU14UXl4RFFVRkRPMGxCUTA0c1EwRkJRenRKUVVWUExEUkNRVUZQTEVkQlFXWXNWVUZCWjBJc1JVRkJXU3hGUVVGRkxFVkJRVmtzUlVGQlJTeExRVUZsTEVWQlFVVXNUMEZCYVVJc1JVRkRNVVVzVlVGQmIwTXNSVUZEY0VNc1JVRkJaMElzUlVGRGFFSXNiVUpCUVhsRUxFVkJRM3BFTEdkQ1FVRjFReXhGUVVOMlF5eHBRa0ZCT0VNN1VVRkZPVU1zU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNUMEZCVHl4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRekZFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTzFsQlEzUkRMR3RDUVVGclFpeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRaUVVOdVF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU4yUkR0UlFVTkVMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlF5OURMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU03VVVGRGNrTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVTdXVUZEZEVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF6dFpRVU4yUXl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1UwRkRkRU03U1VGRFRDeERRVUZETzBsQlJVOHNNRUpCUVVzc1IwRkJZaXhWUVVGakxFVkJRV01zUlVGQlJTeEZRVUZuUWl4RlFVRkZMRkZCUVd0Q0xFVkJRVVVzVDBGQmFVSTdVVUZEYWtZc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeGhRVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMmhETEUxQlFVMHNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVTjBReXhOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRGNFTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8wbEJRMjVDTEVOQlFVTTdTVUZEVEN4cFFrRkJRenRCUVVGRUxFTkJRVU1zUVVGc1MwUXNTVUZyUzBNN1FVRnNTMWtzWjBOQlFWVWlmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIFBhaXJpbmdIZWFwID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFBhaXJpbmdIZWFwKGVsZW0pIHtcclxuICAgICAgICB0aGlzLmVsZW0gPSBlbGVtO1xyXG4gICAgICAgIHRoaXMuc3ViaGVhcHMgPSBbXTtcclxuICAgIH1cclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChzZWxlY3Rvcikge1xyXG4gICAgICAgIHZhciBzdHIgPSBcIlwiLCBuZWVkQ29tbWEgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3ViaGVhcHMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgdmFyIHN1YmhlYXAgPSB0aGlzLnN1YmhlYXBzW2ldO1xyXG4gICAgICAgICAgICBpZiAoIXN1YmhlYXAuZWxlbSkge1xyXG4gICAgICAgICAgICAgICAgbmVlZENvbW1hID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobmVlZENvbW1hKSB7XHJcbiAgICAgICAgICAgICAgICBzdHIgPSBzdHIgKyBcIixcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdHIgPSBzdHIgKyBzdWJoZWFwLnRvU3RyaW5nKHNlbGVjdG9yKTtcclxuICAgICAgICAgICAgbmVlZENvbW1hID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN0ciAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICBzdHIgPSBcIihcIiArIHN0ciArIFwiKVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKHRoaXMuZWxlbSA/IHNlbGVjdG9yKHRoaXMuZWxlbSkgOiBcIlwiKSArIHN0cjtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVtcHR5KCkpIHtcclxuICAgICAgICAgICAgZih0aGlzLmVsZW0sIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLnN1YmhlYXBzLmZvckVhY2goZnVuY3Rpb24gKHMpIHsgcmV0dXJuIHMuZm9yRWFjaChmKTsgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5jb3VudCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbXB0eSgpID8gMCA6IDEgKyB0aGlzLnN1YmhlYXBzLnJlZHVjZShmdW5jdGlvbiAobiwgaCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbiArIGguY291bnQoKTtcclxuICAgICAgICB9LCAwKTtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUubWluID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW07XHJcbiAgICB9O1xyXG4gICAgUGFpcmluZ0hlYXAucHJvdG90eXBlLmVtcHR5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW0gPT0gbnVsbDtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiAoaCkge1xyXG4gICAgICAgIGlmICh0aGlzID09PSBoKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3ViaGVhcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3ViaGVhcHNbaV0uY29udGFpbnMoaCkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5pc0hlYXAgPSBmdW5jdGlvbiAobGVzc1RoYW4pIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN1YmhlYXBzLmV2ZXJ5KGZ1bmN0aW9uIChoKSB7IHJldHVybiBsZXNzVGhhbihfdGhpcy5lbGVtLCBoLmVsZW0pICYmIGguaXNIZWFwKGxlc3NUaGFuKTsgfSk7XHJcbiAgICB9O1xyXG4gICAgUGFpcmluZ0hlYXAucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uIChvYmosIGxlc3NUaGFuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2UobmV3IFBhaXJpbmdIZWFwKG9iaiksIGxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICBQYWlyaW5nSGVhcC5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbiAoaGVhcDIsIGxlc3NUaGFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1wdHkoKSlcclxuICAgICAgICAgICAgcmV0dXJuIGhlYXAyO1xyXG4gICAgICAgIGVsc2UgaWYgKGhlYXAyLmVtcHR5KCkpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIGVsc2UgaWYgKGxlc3NUaGFuKHRoaXMuZWxlbSwgaGVhcDIuZWxlbSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJoZWFwcy5wdXNoKGhlYXAyKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoZWFwMi5zdWJoZWFwcy5wdXNoKHRoaXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gaGVhcDI7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5yZW1vdmVNaW4gPSBmdW5jdGlvbiAobGVzc1RoYW4pIHtcclxuICAgICAgICBpZiAodGhpcy5lbXB0eSgpKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlUGFpcnMobGVzc1RoYW4pO1xyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5tZXJnZVBhaXJzID0gZnVuY3Rpb24gKGxlc3NUaGFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3ViaGVhcHMubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUGFpcmluZ0hlYXAobnVsbCk7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zdWJoZWFwcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJoZWFwc1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBmaXJzdFBhaXIgPSB0aGlzLnN1YmhlYXBzLnBvcCgpLm1lcmdlKHRoaXMuc3ViaGVhcHMucG9wKCksIGxlc3NUaGFuKTtcclxuICAgICAgICAgICAgdmFyIHJlbWFpbmluZyA9IHRoaXMubWVyZ2VQYWlycyhsZXNzVGhhbik7XHJcbiAgICAgICAgICAgIHJldHVybiBmaXJzdFBhaXIubWVyZ2UocmVtYWluaW5nLCBsZXNzVGhhbik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFBhaXJpbmdIZWFwLnByb3RvdHlwZS5kZWNyZWFzZUtleSA9IGZ1bmN0aW9uIChzdWJoZWFwLCBuZXdWYWx1ZSwgc2V0SGVhcE5vZGUsIGxlc3NUaGFuKSB7XHJcbiAgICAgICAgdmFyIG5ld0hlYXAgPSBzdWJoZWFwLnJlbW92ZU1pbihsZXNzVGhhbik7XHJcbiAgICAgICAgc3ViaGVhcC5lbGVtID0gbmV3SGVhcC5lbGVtO1xyXG4gICAgICAgIHN1YmhlYXAuc3ViaGVhcHMgPSBuZXdIZWFwLnN1YmhlYXBzO1xyXG4gICAgICAgIGlmIChzZXRIZWFwTm9kZSAhPT0gbnVsbCAmJiBuZXdIZWFwLmVsZW0gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgc2V0SGVhcE5vZGUoc3ViaGVhcC5lbGVtLCBzdWJoZWFwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHBhaXJpbmdOb2RlID0gbmV3IFBhaXJpbmdIZWFwKG5ld1ZhbHVlKTtcclxuICAgICAgICBpZiAoc2V0SGVhcE5vZGUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgc2V0SGVhcE5vZGUobmV3VmFsdWUsIHBhaXJpbmdOb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2UocGFpcmluZ05vZGUsIGxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUGFpcmluZ0hlYXA7XHJcbn0oKSk7XHJcbmV4cG9ydHMuUGFpcmluZ0hlYXAgPSBQYWlyaW5nSGVhcDtcclxudmFyIFByaW9yaXR5UXVldWUgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gUHJpb3JpdHlRdWV1ZShsZXNzVGhhbikge1xyXG4gICAgICAgIHRoaXMubGVzc1RoYW4gPSBsZXNzVGhhbjtcclxuICAgIH1cclxuICAgIFByaW9yaXR5UXVldWUucHJvdG90eXBlLnRvcCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5lbXB0eSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5yb290LmVsZW07XHJcbiAgICB9O1xyXG4gICAgUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgYXJncyA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHBhaXJpbmdOb2RlO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBhcmc7IGFyZyA9IGFyZ3NbaV07ICsraSkge1xyXG4gICAgICAgICAgICBwYWlyaW5nTm9kZSA9IG5ldyBQYWlyaW5nSGVhcChhcmcpO1xyXG4gICAgICAgICAgICB0aGlzLnJvb3QgPSB0aGlzLmVtcHR5KCkgP1xyXG4gICAgICAgICAgICAgICAgcGFpcmluZ05vZGUgOiB0aGlzLnJvb3QubWVyZ2UocGFpcmluZ05vZGUsIHRoaXMubGVzc1RoYW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFpcmluZ05vZGU7XHJcbiAgICB9O1xyXG4gICAgUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuZW1wdHkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnJvb3QgfHwgIXRoaXMucm9vdC5lbGVtO1xyXG4gICAgfTtcclxuICAgIFByaW9yaXR5UXVldWUucHJvdG90eXBlLmlzSGVhcCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yb290LmlzSGVhcCh0aGlzLmxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICBQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gKGYpIHtcclxuICAgICAgICB0aGlzLnJvb3QuZm9yRWFjaChmKTtcclxuICAgIH07XHJcbiAgICBQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1wdHkoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG9iaiA9IHRoaXMucm9vdC5taW4oKTtcclxuICAgICAgICB0aGlzLnJvb3QgPSB0aGlzLnJvb3QucmVtb3ZlTWluKHRoaXMubGVzc1RoYW4pO1xyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9O1xyXG4gICAgUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucmVkdWNlS2V5ID0gZnVuY3Rpb24gKGhlYXBOb2RlLCBuZXdLZXksIHNldEhlYXBOb2RlKSB7XHJcbiAgICAgICAgaWYgKHNldEhlYXBOb2RlID09PSB2b2lkIDApIHsgc2V0SGVhcE5vZGUgPSBudWxsOyB9XHJcbiAgICAgICAgdGhpcy5yb290ID0gdGhpcy5yb290LmRlY3JlYXNlS2V5KGhlYXBOb2RlLCBuZXdLZXksIHNldEhlYXBOb2RlLCB0aGlzLmxlc3NUaGFuKTtcclxuICAgIH07XHJcbiAgICBQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChzZWxlY3Rvcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvb3QudG9TdHJpbmcoc2VsZWN0b3IpO1xyXG4gICAgfTtcclxuICAgIFByaW9yaXR5UXVldWUucHJvdG90eXBlLmNvdW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvb3QuY291bnQoKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUHJpb3JpdHlRdWV1ZTtcclxufSgpKTtcclxuZXhwb3J0cy5Qcmlvcml0eVF1ZXVlID0gUHJpb3JpdHlRdWV1ZTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY0hGMVpYVmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2VjJWaVEyOXNZUzl6Y21NdmNIRjFaWFZsTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRMEU3U1VGSlNTeHhRa0ZCYlVJc1NVRkJUenRSUVVGUUxGTkJRVWtzUjBGQlNpeEpRVUZKTEVOQlFVYzdVVUZEZEVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTVUZEZGtJc1EwRkJRenRKUVVWTkxEaENRVUZSTEVkQlFXWXNWVUZCWjBJc1VVRkJVVHRSUVVOd1FpeEpRVUZKTEVkQlFVY3NSMEZCUnl4RlFVRkZMRVZCUVVVc1UwRkJVeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU5vUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZETTBNc1NVRkJTU3hQUVVGUExFZEJRVzFDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGREwwTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVU3WjBKQlEyWXNVMEZCVXl4SFFVRkhMRXRCUVVzc1EwRkJRenRuUWtGRGJFSXNVMEZCVXp0aFFVTmFPMWxCUTBRc1NVRkJTU3hUUVVGVExFVkJRVVU3WjBKQlExZ3NSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU03WVVGRGJrSTdXVUZEUkN4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1dVRkRka01zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXp0VFFVTndRanRSUVVORUxFbEJRVWtzUjBGQlJ5eExRVUZMTEVWQlFVVXNSVUZCUlR0WlFVTmFMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0VFFVTjZRanRSUVVORUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZEZUVRc1EwRkJRenRKUVVWTkxEWkNRVUZQTEVkQlFXUXNWVUZCWlN4RFFVRkRPMUZCUTFvc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlR0WlFVTm1MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTI1Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSkxFOUJRVUVzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJXaXhEUVVGWkxFTkJRVU1zUTBGQlF6dFRRVU0xUXp0SlFVTk1MRU5CUVVNN1NVRkZUU3d5UWtGQlN5eEhRVUZhTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVVNc1EwRkJVeXhGUVVGRkxFTkJRV2xDTzFsQlF6VkZMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0UlFVTjZRaXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEVml4RFFVRkRPMGxCUlUwc2VVSkJRVWNzUjBGQlZqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVOeVFpeERRVUZETzBsQlJVMHNNa0pCUVVzc1IwRkJXanRSUVVOSkxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNN1NVRkROMElzUTBGQlF6dEpRVVZOTERoQ1FVRlJMRWRCUVdZc1ZVRkJaMElzUTBGQmFVSTdVVUZETjBJc1NVRkJTU3hKUVVGSkxFdEJRVXNzUTBGQlF6dFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRPMUZCUXpWQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNelF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF6dFRRVU5xUkR0UlFVTkVMRTlCUVU4c1MwRkJTeXhEUVVGRE8wbEJRMnBDTEVOQlFVTTdTVUZGVFN3MFFrRkJUU3hIUVVGaUxGVkJRV01zVVVGQmFVTTdVVUZCTDBNc2FVSkJSVU03VVVGRVJ5eFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNVVUZCVVN4RFFVRkRMRXRCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFXcEVMRU5CUVdsRUxFTkJRVU1zUTBGQlF6dEpRVU4wUml4RFFVRkRPMGxCUlUwc05FSkJRVTBzUjBGQllpeFZRVUZqTEVkQlFVOHNSVUZCUlN4UlFVRlJPMUZCUXpOQ0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRmRCUVZjc1EwRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0SlFVTjZSQ3hEUVVGRE8wbEJSVTBzTWtKQlFVc3NSMEZCV2l4VlFVRmhMRXRCUVhGQ0xFVkJRVVVzVVVGQlVUdFJRVU40UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVU3V1VGQlJTeFBRVUZQTEV0QlFVc3NRMEZCUXp0aFFVTXhRaXhKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenRoUVVNdlFpeEpRVUZKTEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTjBReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVNeFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTm1PMkZCUVUwN1dVRkRTQ3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVNeFFpeFBRVUZQTEV0QlFVc3NRMEZCUXp0VFFVTm9RanRKUVVOTUxFTkJRVU03U1VGRlRTd3JRa0ZCVXl4SFFVRm9RaXhWUVVGcFFpeFJRVUZwUXp0UlFVTTVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenM3V1VGRGVrSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlF6RkRMRU5CUVVNN1NVRkZUU3huUTBGQlZTeEhRVUZxUWl4VlFVRnJRaXhSUVVGcFF6dFJRVU12UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTTdXVUZCUlN4UFFVRlBMRWxCUVVrc1YwRkJWeXhEUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlF6RkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RlFVRkZPMWxCUVVVc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUVVVN1lVRkRNMFE3V1VGRFJDeEpRVUZKTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRPMWxCUTNwRkxFbEJRVWtzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03V1VGRE1VTXNUMEZCVHl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0VFFVTXZRenRKUVVOTUxFTkJRVU03U1VGRFRTeHBRMEZCVnl4SFFVRnNRaXhWUVVGdFFpeFBRVUYxUWl4RlFVRkZMRkZCUVZjc1JVRkJSU3hYUVVFMFF5eEZRVUZGTEZGQlFXbERPMUZCUTNCSkxFbEJRVWtzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRk1VTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETzFGQlF6VkNMRTlCUVU4c1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXp0UlFVTndReXhKUVVGSkxGZEJRVmNzUzBGQlN5eEpRVUZKTEVsQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGREwwTXNWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVMEZEZEVNN1VVRkRSQ3hKUVVGSkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRSUVVNMVF5eEpRVUZKTEZkQlFWY3NTMEZCU3l4SlFVRkpMRVZCUVVVN1dVRkRkRUlzVjBGQlZ5eERRVUZETEZGQlFWRXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRUUVVOMFF6dFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVOTUxHdENRVUZETzBGQlFVUXNRMEZCUXl4QlFYcEhSQ3hKUVhsSFF6dEJRWHBIV1N4clEwRkJWenRCUVRoSGVFSTdTVUZGU1N4MVFrRkJiMElzVVVGQmFVTTdVVUZCYWtNc1lVRkJVU3hIUVVGU0xGRkJRVkVzUTBGQmVVSTdTVUZCU1N4RFFVRkRPMGxCUzI1RUxESkNRVUZITEVkQlFWWTdVVUZEU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJUdFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRPMU5CUVVVN1VVRkRiRU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVNeFFpeERRVUZETzBsQlMwMHNORUpCUVVrc1IwRkJXRHRSUVVGWkxHTkJRVms3WVVGQldpeFZRVUZaTEVWQlFWb3NjVUpCUVZrc1JVRkJXaXhKUVVGWk8xbEJRVm9zZVVKQlFWazdPMUZCUTNCQ0xFbEJRVWtzVjBGQlZ5eERRVUZETzFGQlEyaENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRWRCUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTI1RExGZEJRVmNzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOdVF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETzJkQ1FVTjBRaXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRha1U3VVVGRFJDeFBRVUZQTEZkQlFWY3NRMEZCUXp0SlFVTjJRaXhEUVVGRE8wbEJTMDBzTmtKQlFVc3NSMEZCV2p0UlFVTkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRGVrTXNRMEZCUXp0SlFVdE5MRGhDUVVGTkxFZEJRV0k3VVVGRFNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhEUVVGRE8wbEJTMDBzSzBKQlFVOHNSMEZCWkN4VlFVRmxMRU5CUVVNN1VVRkRXaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONlFpeERRVUZETzBsQlNVMHNNa0pCUVVjc1IwRkJWanRSUVVOSkxFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZPMWxCUTJRc1QwRkJUeXhKUVVGSkxFTkJRVU03VTBGRFpqdFJRVU5FTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETDBNc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFppeERRVUZETzBsQlNVMHNhVU5CUVZNc1IwRkJhRUlzVlVGQmFVSXNVVUZCZDBJc1JVRkJSU3hOUVVGVExFVkJRVVVzVjBGQmJVUTdVVUZCYmtRc05FSkJRVUVzUlVGQlFTeHJRa0ZCYlVRN1VVRkRja2NzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFJRVUZSTEVWQlFVVXNUVUZCVFN4RlFVRkZMRmRCUVZjc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdTVUZEY0VZc1EwRkJRenRKUVVOTkxHZERRVUZSTEVkQlFXWXNWVUZCWjBJc1VVRkJVVHRSUVVOd1FpeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlEzaERMRU5CUVVNN1NVRkxUU3cyUWtGQlN5eEhRVUZhTzFGQlEwa3NUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzBsQlF6ZENMRU5CUVVNN1NVRkRUQ3h2UWtGQlF6dEJRVUZFTEVOQlFVTXNRVUY0UlVRc1NVRjNSVU03UVVGNFJWa3NjME5CUVdFaWZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgcHF1ZXVlXzEgPSByZXF1aXJlKFwiLi9wcXVldWVcIik7XHJcbnZhciBOZWlnaGJvdXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTmVpZ2hib3VyKGlkLCBkaXN0YW5jZSkge1xyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLmRpc3RhbmNlID0gZGlzdGFuY2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTmVpZ2hib3VyO1xyXG59KCkpO1xyXG52YXIgTm9kZSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBOb2RlKGlkKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMubmVpZ2hib3VycyA9IFtdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE5vZGU7XHJcbn0oKSk7XHJcbnZhciBRdWV1ZUVudHJ5ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFF1ZXVlRW50cnkobm9kZSwgcHJldiwgZCkge1xyXG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XHJcbiAgICAgICAgdGhpcy5wcmV2ID0gcHJldjtcclxuICAgICAgICB0aGlzLmQgPSBkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFF1ZXVlRW50cnk7XHJcbn0oKSk7XHJcbnZhciBDYWxjdWxhdG9yID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIENhbGN1bGF0b3IobiwgZXMsIGdldFNvdXJjZUluZGV4LCBnZXRUYXJnZXRJbmRleCwgZ2V0TGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5uID0gbjtcclxuICAgICAgICB0aGlzLmVzID0gZXM7XHJcbiAgICAgICAgdGhpcy5uZWlnaGJvdXJzID0gbmV3IEFycmF5KHRoaXMubik7XHJcbiAgICAgICAgdmFyIGkgPSB0aGlzLm47XHJcbiAgICAgICAgd2hpbGUgKGktLSlcclxuICAgICAgICAgICAgdGhpcy5uZWlnaGJvdXJzW2ldID0gbmV3IE5vZGUoaSk7XHJcbiAgICAgICAgaSA9IHRoaXMuZXMubGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmVzW2ldO1xyXG4gICAgICAgICAgICB2YXIgdSA9IGdldFNvdXJjZUluZGV4KGUpLCB2ID0gZ2V0VGFyZ2V0SW5kZXgoZSk7XHJcbiAgICAgICAgICAgIHZhciBkID0gZ2V0TGVuZ3RoKGUpO1xyXG4gICAgICAgICAgICB0aGlzLm5laWdoYm91cnNbdV0ubmVpZ2hib3Vycy5wdXNoKG5ldyBOZWlnaGJvdXIodiwgZCkpO1xyXG4gICAgICAgICAgICB0aGlzLm5laWdoYm91cnNbdl0ubmVpZ2hib3Vycy5wdXNoKG5ldyBOZWlnaGJvdXIodSwgZCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIENhbGN1bGF0b3IucHJvdG90eXBlLkRpc3RhbmNlTWF0cml4ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBEID0gbmV3IEFycmF5KHRoaXMubik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm47ICsraSkge1xyXG4gICAgICAgICAgICBEW2ldID0gdGhpcy5kaWprc3RyYU5laWdoYm91cnMoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBEO1xyXG4gICAgfTtcclxuICAgIENhbGN1bGF0b3IucHJvdG90eXBlLkRpc3RhbmNlc0Zyb21Ob2RlID0gZnVuY3Rpb24gKHN0YXJ0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlqa3N0cmFOZWlnaGJvdXJzKHN0YXJ0KTtcclxuICAgIH07XHJcbiAgICBDYWxjdWxhdG9yLnByb3RvdHlwZS5QYXRoRnJvbU5vZGVUb05vZGUgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpamtzdHJhTmVpZ2hib3VycyhzdGFydCwgZW5kKTtcclxuICAgIH07XHJcbiAgICBDYWxjdWxhdG9yLnByb3RvdHlwZS5QYXRoRnJvbU5vZGVUb05vZGVXaXRoUHJldkNvc3QgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCwgcHJldkNvc3QpIHtcclxuICAgICAgICB2YXIgcSA9IG5ldyBwcXVldWVfMS5Qcmlvcml0eVF1ZXVlKGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmQgPD0gYi5kOyB9KSwgdSA9IHRoaXMubmVpZ2hib3Vyc1tzdGFydF0sIHF1ID0gbmV3IFF1ZXVlRW50cnkodSwgbnVsbCwgMCksIHZpc2l0ZWRGcm9tID0ge307XHJcbiAgICAgICAgcS5wdXNoKHF1KTtcclxuICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkge1xyXG4gICAgICAgICAgICBxdSA9IHEucG9wKCk7XHJcbiAgICAgICAgICAgIHUgPSBxdS5ub2RlO1xyXG4gICAgICAgICAgICBpZiAodS5pZCA9PT0gZW5kKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgaSA9IHUubmVpZ2hib3Vycy5sZW5ndGg7XHJcbiAgICAgICAgICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICAgICAgICAgIHZhciBuZWlnaGJvdXIgPSB1Lm5laWdoYm91cnNbaV0sIHYgPSB0aGlzLm5laWdoYm91cnNbbmVpZ2hib3VyLmlkXTtcclxuICAgICAgICAgICAgICAgIGlmIChxdS5wcmV2ICYmIHYuaWQgPT09IHF1LnByZXYubm9kZS5pZClcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIHZhciB2aWR1aWQgPSB2LmlkICsgJywnICsgdS5pZDtcclxuICAgICAgICAgICAgICAgIGlmICh2aWR1aWQgaW4gdmlzaXRlZEZyb20gJiYgdmlzaXRlZEZyb21bdmlkdWlkXSA8PSBxdS5kKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNjID0gcXUucHJldiA/IHByZXZDb3N0KHF1LnByZXYubm9kZS5pZCwgdS5pZCwgdi5pZCkgOiAwLCB0ID0gcXUuZCArIG5laWdoYm91ci5kaXN0YW5jZSArIGNjO1xyXG4gICAgICAgICAgICAgICAgdmlzaXRlZEZyb21bdmlkdWlkXSA9IHQ7XHJcbiAgICAgICAgICAgICAgICBxLnB1c2gobmV3IFF1ZXVlRW50cnkodiwgcXUsIHQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgcGF0aCA9IFtdO1xyXG4gICAgICAgIHdoaWxlIChxdS5wcmV2KSB7XHJcbiAgICAgICAgICAgIHF1ID0gcXUucHJldjtcclxuICAgICAgICAgICAgcGF0aC5wdXNoKHF1Lm5vZGUuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgIH07XHJcbiAgICBDYWxjdWxhdG9yLnByb3RvdHlwZS5kaWprc3RyYU5laWdoYm91cnMgPSBmdW5jdGlvbiAoc3RhcnQsIGRlc3QpIHtcclxuICAgICAgICBpZiAoZGVzdCA9PT0gdm9pZCAwKSB7IGRlc3QgPSAtMTsgfVxyXG4gICAgICAgIHZhciBxID0gbmV3IHBxdWV1ZV8xLlByaW9yaXR5UXVldWUoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuZCA8PSBiLmQ7IH0pLCBpID0gdGhpcy5uZWlnaGJvdXJzLmxlbmd0aCwgZCA9IG5ldyBBcnJheShpKTtcclxuICAgICAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5uZWlnaGJvdXJzW2ldO1xyXG4gICAgICAgICAgICBub2RlLmQgPSBpID09PSBzdGFydCA/IDAgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XHJcbiAgICAgICAgICAgIG5vZGUucSA9IHEucHVzaChub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKCFxLmVtcHR5KCkpIHtcclxuICAgICAgICAgICAgdmFyIHUgPSBxLnBvcCgpO1xyXG4gICAgICAgICAgICBkW3UuaWRdID0gdS5kO1xyXG4gICAgICAgICAgICBpZiAodS5pZCA9PT0gZGVzdCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHBhdGggPSBbXTtcclxuICAgICAgICAgICAgICAgIHZhciB2ID0gdTtcclxuICAgICAgICAgICAgICAgIHdoaWxlICh0eXBlb2Ygdi5wcmV2ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGgucHVzaCh2LnByZXYuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHYgPSB2LnByZXY7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpID0gdS5uZWlnaGJvdXJzLmxlbmd0aDtcclxuICAgICAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG5laWdoYm91ciA9IHUubmVpZ2hib3Vyc1tpXTtcclxuICAgICAgICAgICAgICAgIHZhciB2ID0gdGhpcy5uZWlnaGJvdXJzW25laWdoYm91ci5pZF07XHJcbiAgICAgICAgICAgICAgICB2YXIgdCA9IHUuZCArIG5laWdoYm91ci5kaXN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGlmICh1LmQgIT09IE51bWJlci5NQVhfVkFMVUUgJiYgdi5kID4gdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHYuZCA9IHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5wcmV2ID0gdTtcclxuICAgICAgICAgICAgICAgICAgICBxLnJlZHVjZUtleSh2LnEsIHYsIGZ1bmN0aW9uIChlLCBxKSB7IHJldHVybiBlLnEgPSBxOyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gQ2FsY3VsYXRvcjtcclxufSgpKTtcclxuZXhwb3J0cy5DYWxjdWxhdG9yID0gQ2FsY3VsYXRvcjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJodmNuUmxjM1J3WVhSb2N5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDNOb2IzSjBaWE4wY0dGMGFITXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTeHRRMEZCYlVRN1FVRkZia1E3U1VGRFNTeHRRa0ZCYlVJc1JVRkJWU3hGUVVGVExGRkJRV2RDTzFGQlFXNURMRTlCUVVVc1IwRkJSaXhGUVVGRkxFTkJRVkU3VVVGQlV5eGhRVUZSTEVkQlFWSXNVVUZCVVN4RFFVRlJPMGxCUVVrc1EwRkJRenRKUVVNdlJDeG5Ra0ZCUXp0QlFVRkVMRU5CUVVNc1FVRkdSQ3hKUVVWRE8wRkJSVVE3U1VGRFNTeGpRVUZ0UWl4RlFVRlZPMUZCUVZZc1QwRkJSU3hIUVVGR0xFVkJRVVVzUTBGQlVUdFJRVU42UWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU42UWl4RFFVRkRPMGxCUzB3c1YwRkJRenRCUVVGRUxFTkJRVU1zUVVGU1JDeEpRVkZETzBGQlJVUTdTVUZEU1N4dlFrRkJiVUlzU1VGQlZTeEZRVUZUTEVsQlFXZENMRVZCUVZNc1EwRkJVenRSUVVGeVJDeFRRVUZKTEVkQlFVb3NTVUZCU1N4RFFVRk5PMUZCUVZNc1UwRkJTU3hIUVVGS0xFbEJRVWtzUTBGQldUdFJRVUZUTEUxQlFVTXNSMEZCUkN4RFFVRkRMRU5CUVZFN1NVRkJSeXhEUVVGRE8wbEJRMmhHTEdsQ1FVRkRPMEZCUVVRc1EwRkJReXhCUVVaRUxFbEJSVU03UVVGVFJEdEpRVWRKTEc5Q1FVRnRRaXhEUVVGVExFVkJRVk1zUlVGQlZTeEZRVUZGTEdOQlFXMURMRVZCUVVVc1kwRkJiVU1zUlVGQlJTeFRRVUU0UWp0UlFVRjBTU3hOUVVGRExFZEJRVVFzUTBGQlF5eERRVUZSTzFGQlFWTXNUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVNelF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTndReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVU3V1VGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlRkRUxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETlVJc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeEpRVUZKTEVOQlFVTXNSMEZCVnl4alFVRmpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZYTEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOcVJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoRUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU16UkR0SlFVTk1MRU5CUVVNN1NVRlZSQ3h0UTBGQll5eEhRVUZrTzFGQlEwa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpGQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUXpkQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRja003VVVGRFJDeFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRlJSQ3h6UTBGQmFVSXNSMEZCYWtJc1ZVRkJhMElzUzBGQllUdFJRVU16UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVNeFF5eERRVUZETzBsQlJVUXNkVU5CUVd0Q0xFZEJRV3hDTEZWQlFXMUNMRXRCUVdFc1JVRkJSU3hIUVVGWE8xRkJRM3BETEU5QlFVOHNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVNdlF5eERRVUZETzBsQlMwUXNiVVJCUVRoQ0xFZEJRVGxDTEZWQlEwa3NTMEZCWVN4RlFVTmlMRWRCUVZjc1JVRkRXQ3hSUVVFNFF6dFJRVVU1UXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxITkNRVUZoTEVOQlFXRXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGV0xFTkJRVlVzUTBGQlF5eEZRVU4yUkN4RFFVRkRMRWRCUVZNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZEYUVNc1JVRkJSU3hIUVVGbExFbEJRVWtzVlVGQlZTeERRVUZETEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRM3BETEZkQlFWY3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRja0lzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVOWUxFOUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVN1dVRkRaQ3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTJJc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEV2l4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFdEJRVXNzUjBGQlJ5eEZRVUZGTzJkQ1FVTmtMRTFCUVUwN1lVRkRWRHRaUVVORUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRja01zU1VGQlNTeFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRE0wSXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMmRDUVVkMFF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8yOUNRVUZGTEZOQlFWTTdaMEpCU1d4RUxFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdaMEpCUXk5Q0xFbEJRVWNzVFVGQlRTeEpRVUZKTEZkQlFWY3NTVUZCU1N4WFFVRlhMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdiMEpCUTI1RUxGTkJRVk03WjBKQlJXSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVONFJDeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zVVVGQlVTeEhRVUZITEVWQlFVVXNRMEZCUXp0blFrRkhka01zVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRGVFSXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGNFTTdVMEZEU2p0UlFVTkVMRWxCUVVrc1NVRkJTU3hIUVVGWkxFVkJRVVVzUTBGQlF6dFJRVU4yUWl4UFFVRlBMRVZCUVVVc1EwRkJReXhKUVVGSkxFVkJRVVU3V1VGRFdpeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVOaUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFRRVU42UWp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMmhDTEVOQlFVTTdTVUZGVHl4MVEwRkJhMElzUjBGQk1VSXNWVUZCTWtJc1MwRkJZU3hGUVVGRkxFbEJRV2xDTzFGQlFXcENMSEZDUVVGQkxFVkJRVUVzVVVGQlowSXNRMEZCUXp0UlFVTjJSQ3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEhOQ1FVRmhMRU5CUVU4c1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZXTEVOQlFWVXNRMEZCUXl4RlFVTnFSQ3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUXpGQ0xFTkJRVU1zUjBGQllTeEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNdlFpeFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTFJc1NVRkJTU3hKUVVGSkxFZEJRVk1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RFFVRkRPMWxCUTNCRUxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFRRVU42UWp0UlFVTkVMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVTdXVUZGWml4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEYUVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMlFzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRWxCUVVrc1JVRkJSVHRuUWtGRFppeEpRVUZKTEVsQlFVa3NSMEZCWVN4RlFVRkZMRU5CUVVNN1owSkJRM2hDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFZpeFBRVUZQTEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhYUVVGWExFVkJRVVU3YjBKQlEyeERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenR2UWtGRGNrSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03YVVKQlEyUTdaMEpCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU03WVVGRFpqdFpRVU5FTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRMnBETEVsQlFVa3NVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTJoRExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzJkQ1FVTjBReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU03WjBKQlEycERMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eE5RVUZOTEVOQlFVTXNVMEZCVXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzI5Q1FVTnlReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRVaXhEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRXQ3hEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxGVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZRTEVOQlFVOHNRMEZCUXl4RFFVRkRPMmxDUVVOMlF6dGhRVU5LTzFOQlEwbzdVVUZEUkN4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRFRDeHBRa0ZCUXp0QlFVRkVMRU5CUVVNc1FVRnFTVVFzU1VGcFNVTTdRVUZxU1Zrc1owTkJRVlVpZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgcmVjdGFuZ2xlXzEgPSByZXF1aXJlKFwiLi9yZWN0YW5nbGVcIik7XHJcbnZhciBQb2ludCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQb2ludCgpIHtcclxuICAgIH1cclxuICAgIHJldHVybiBQb2ludDtcclxufSgpKTtcclxuZXhwb3J0cy5Qb2ludCA9IFBvaW50O1xyXG52YXIgTGluZVNlZ21lbnQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTGluZVNlZ21lbnQoeDEsIHkxLCB4MiwgeTIpIHtcclxuICAgICAgICB0aGlzLngxID0geDE7XHJcbiAgICAgICAgdGhpcy55MSA9IHkxO1xyXG4gICAgICAgIHRoaXMueDIgPSB4MjtcclxuICAgICAgICB0aGlzLnkyID0geTI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTGluZVNlZ21lbnQ7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTGluZVNlZ21lbnQgPSBMaW5lU2VnbWVudDtcclxudmFyIFBvbHlQb2ludCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoUG9seVBvaW50LCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gUG9seVBvaW50KCkge1xyXG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcclxuICAgIH1cclxuICAgIHJldHVybiBQb2x5UG9pbnQ7XHJcbn0oUG9pbnQpKTtcclxuZXhwb3J0cy5Qb2x5UG9pbnQgPSBQb2x5UG9pbnQ7XHJcbmZ1bmN0aW9uIGlzTGVmdChQMCwgUDEsIFAyKSB7XHJcbiAgICByZXR1cm4gKFAxLnggLSBQMC54KSAqIChQMi55IC0gUDAueSkgLSAoUDIueCAtIFAwLngpICogKFAxLnkgLSBQMC55KTtcclxufVxyXG5leHBvcnRzLmlzTGVmdCA9IGlzTGVmdDtcclxuZnVuY3Rpb24gYWJvdmUocCwgdmksIHZqKSB7XHJcbiAgICByZXR1cm4gaXNMZWZ0KHAsIHZpLCB2aikgPiAwO1xyXG59XHJcbmZ1bmN0aW9uIGJlbG93KHAsIHZpLCB2aikge1xyXG4gICAgcmV0dXJuIGlzTGVmdChwLCB2aSwgdmopIDwgMDtcclxufVxyXG5mdW5jdGlvbiBDb252ZXhIdWxsKFMpIHtcclxuICAgIHZhciBQID0gUy5zbGljZSgwKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLnggIT09IGIueCA/IGIueCAtIGEueCA6IGIueSAtIGEueTsgfSk7XHJcbiAgICB2YXIgbiA9IFMubGVuZ3RoLCBpO1xyXG4gICAgdmFyIG1pbm1pbiA9IDA7XHJcbiAgICB2YXIgeG1pbiA9IFBbMF0ueDtcclxuICAgIGZvciAoaSA9IDE7IGkgPCBuOyArK2kpIHtcclxuICAgICAgICBpZiAoUFtpXS54ICE9PSB4bWluKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHZhciBtaW5tYXggPSBpIC0gMTtcclxuICAgIHZhciBIID0gW107XHJcbiAgICBILnB1c2goUFttaW5taW5dKTtcclxuICAgIGlmIChtaW5tYXggPT09IG4gLSAxKSB7XHJcbiAgICAgICAgaWYgKFBbbWlubWF4XS55ICE9PSBQW21pbm1pbl0ueSlcclxuICAgICAgICAgICAgSC5wdXNoKFBbbWlubWF4XSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YXIgbWF4bWluLCBtYXhtYXggPSBuIC0gMTtcclxuICAgICAgICB2YXIgeG1heCA9IFBbbiAtIDFdLng7XHJcbiAgICAgICAgZm9yIChpID0gbiAtIDI7IGkgPj0gMDsgaS0tKVxyXG4gICAgICAgICAgICBpZiAoUFtpXS54ICE9PSB4bWF4KVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgbWF4bWluID0gaSArIDE7XHJcbiAgICAgICAgaSA9IG1pbm1heDtcclxuICAgICAgICB3aGlsZSAoKytpIDw9IG1heG1pbikge1xyXG4gICAgICAgICAgICBpZiAoaXNMZWZ0KFBbbWlubWluXSwgUFttYXhtaW5dLCBQW2ldKSA+PSAwICYmIGkgPCBtYXhtaW4pXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgd2hpbGUgKEgubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTGVmdChIW0gubGVuZ3RoIC0gMl0sIEhbSC5sZW5ndGggLSAxXSwgUFtpXSkgPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIEgubGVuZ3RoIC09IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGkgIT0gbWlubWluKVxyXG4gICAgICAgICAgICAgICAgSC5wdXNoKFBbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobWF4bWF4ICE9IG1heG1pbilcclxuICAgICAgICAgICAgSC5wdXNoKFBbbWF4bWF4XSk7XHJcbiAgICAgICAgdmFyIGJvdCA9IEgubGVuZ3RoO1xyXG4gICAgICAgIGkgPSBtYXhtaW47XHJcbiAgICAgICAgd2hpbGUgKC0taSA+PSBtaW5tYXgpIHtcclxuICAgICAgICAgICAgaWYgKGlzTGVmdChQW21heG1heF0sIFBbbWlubWF4XSwgUFtpXSkgPj0gMCAmJiBpID4gbWlubWF4KVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIHdoaWxlIChILmxlbmd0aCA+IGJvdCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTGVmdChIW0gubGVuZ3RoIC0gMl0sIEhbSC5sZW5ndGggLSAxXSwgUFtpXSkgPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIEgubGVuZ3RoIC09IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGkgIT0gbWlubWluKVxyXG4gICAgICAgICAgICAgICAgSC5wdXNoKFBbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBIO1xyXG59XHJcbmV4cG9ydHMuQ29udmV4SHVsbCA9IENvbnZleEh1bGw7XHJcbmZ1bmN0aW9uIGNsb2Nrd2lzZVJhZGlhbFN3ZWVwKHAsIFAsIGYpIHtcclxuICAgIFAuc2xpY2UoMCkuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gTWF0aC5hdGFuMihhLnkgLSBwLnksIGEueCAtIHAueCkgLSBNYXRoLmF0YW4yKGIueSAtIHAueSwgYi54IC0gcC54KTsgfSkuZm9yRWFjaChmKTtcclxufVxyXG5leHBvcnRzLmNsb2Nrd2lzZVJhZGlhbFN3ZWVwID0gY2xvY2t3aXNlUmFkaWFsU3dlZXA7XHJcbmZ1bmN0aW9uIG5leHRQb2x5UG9pbnQocCwgcHMpIHtcclxuICAgIGlmIChwLnBvbHlJbmRleCA9PT0gcHMubGVuZ3RoIC0gMSlcclxuICAgICAgICByZXR1cm4gcHNbMF07XHJcbiAgICByZXR1cm4gcHNbcC5wb2x5SW5kZXggKyAxXTtcclxufVxyXG5mdW5jdGlvbiBwcmV2UG9seVBvaW50KHAsIHBzKSB7XHJcbiAgICBpZiAocC5wb2x5SW5kZXggPT09IDApXHJcbiAgICAgICAgcmV0dXJuIHBzW3BzLmxlbmd0aCAtIDFdO1xyXG4gICAgcmV0dXJuIHBzW3AucG9seUluZGV4IC0gMV07XHJcbn1cclxuZnVuY3Rpb24gdGFuZ2VudF9Qb2ludFBvbHlDKFAsIFYpIHtcclxuICAgIHZhciBWY2xvc2VkID0gVi5zbGljZSgwKTtcclxuICAgIFZjbG9zZWQucHVzaChWWzBdKTtcclxuICAgIHJldHVybiB7IHJ0YW46IFJ0YW5nZW50X1BvaW50UG9seUMoUCwgVmNsb3NlZCksIGx0YW46IEx0YW5nZW50X1BvaW50UG9seUMoUCwgVmNsb3NlZCkgfTtcclxufVxyXG5mdW5jdGlvbiBSdGFuZ2VudF9Qb2ludFBvbHlDKFAsIFYpIHtcclxuICAgIHZhciBuID0gVi5sZW5ndGggLSAxO1xyXG4gICAgdmFyIGEsIGIsIGM7XHJcbiAgICB2YXIgdXBBLCBkbkM7XHJcbiAgICBpZiAoYmVsb3coUCwgVlsxXSwgVlswXSkgJiYgIWFib3ZlKFAsIFZbbiAtIDFdLCBWWzBdKSlcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIGZvciAoYSA9IDAsIGIgPSBuOzspIHtcclxuICAgICAgICBpZiAoYiAtIGEgPT09IDEpXHJcbiAgICAgICAgICAgIGlmIChhYm92ZShQLCBWW2FdLCBWW2JdKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBhO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYjtcclxuICAgICAgICBjID0gTWF0aC5mbG9vcigoYSArIGIpIC8gMik7XHJcbiAgICAgICAgZG5DID0gYmVsb3coUCwgVltjICsgMV0sIFZbY10pO1xyXG4gICAgICAgIGlmIChkbkMgJiYgIWFib3ZlKFAsIFZbYyAtIDFdLCBWW2NdKSlcclxuICAgICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgdXBBID0gYWJvdmUoUCwgVlthICsgMV0sIFZbYV0pO1xyXG4gICAgICAgIGlmICh1cEEpIHtcclxuICAgICAgICAgICAgaWYgKGRuQylcclxuICAgICAgICAgICAgICAgIGIgPSBjO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChhYm92ZShQLCBWW2FdLCBWW2NdKSlcclxuICAgICAgICAgICAgICAgICAgICBiID0gYztcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBhID0gYztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCFkbkMpXHJcbiAgICAgICAgICAgICAgICBhID0gYztcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYmVsb3coUCwgVlthXSwgVltjXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgYiA9IGM7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgYSA9IGM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gTHRhbmdlbnRfUG9pbnRQb2x5QyhQLCBWKSB7XHJcbiAgICB2YXIgbiA9IFYubGVuZ3RoIC0gMTtcclxuICAgIHZhciBhLCBiLCBjO1xyXG4gICAgdmFyIGRuQSwgZG5DO1xyXG4gICAgaWYgKGFib3ZlKFAsIFZbbiAtIDFdLCBWWzBdKSAmJiAhYmVsb3coUCwgVlsxXSwgVlswXSkpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICBmb3IgKGEgPSAwLCBiID0gbjs7KSB7XHJcbiAgICAgICAgaWYgKGIgLSBhID09PSAxKVxyXG4gICAgICAgICAgICBpZiAoYmVsb3coUCwgVlthXSwgVltiXSkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGI7XHJcbiAgICAgICAgYyA9IE1hdGguZmxvb3IoKGEgKyBiKSAvIDIpO1xyXG4gICAgICAgIGRuQyA9IGJlbG93KFAsIFZbYyArIDFdLCBWW2NdKTtcclxuICAgICAgICBpZiAoYWJvdmUoUCwgVltjIC0gMV0sIFZbY10pICYmICFkbkMpXHJcbiAgICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgIGRuQSA9IGJlbG93KFAsIFZbYSArIDFdLCBWW2FdKTtcclxuICAgICAgICBpZiAoZG5BKSB7XHJcbiAgICAgICAgICAgIGlmICghZG5DKVxyXG4gICAgICAgICAgICAgICAgYiA9IGM7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGJlbG93KFAsIFZbYV0sIFZbY10pKVxyXG4gICAgICAgICAgICAgICAgICAgIGIgPSBjO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGEgPSBjO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZG5DKVxyXG4gICAgICAgICAgICAgICAgYSA9IGM7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFib3ZlKFAsIFZbYV0sIFZbY10pKVxyXG4gICAgICAgICAgICAgICAgICAgIGIgPSBjO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGEgPSBjO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRhbmdlbnRfUG9seVBvbHlDKFYsIFcsIHQxLCB0MiwgY21wMSwgY21wMikge1xyXG4gICAgdmFyIGl4MSwgaXgyO1xyXG4gICAgaXgxID0gdDEoV1swXSwgVik7XHJcbiAgICBpeDIgPSB0MihWW2l4MV0sIFcpO1xyXG4gICAgdmFyIGRvbmUgPSBmYWxzZTtcclxuICAgIHdoaWxlICghZG9uZSkge1xyXG4gICAgICAgIGRvbmUgPSB0cnVlO1xyXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgIGlmIChpeDEgPT09IFYubGVuZ3RoIC0gMSlcclxuICAgICAgICAgICAgICAgIGl4MSA9IDA7XHJcbiAgICAgICAgICAgIGlmIChjbXAxKFdbaXgyXSwgVltpeDFdLCBWW2l4MSArIDFdKSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICArK2l4MTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgaWYgKGl4MiA9PT0gMClcclxuICAgICAgICAgICAgICAgIGl4MiA9IFcubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgaWYgKGNtcDIoVltpeDFdLCBXW2l4Ml0sIFdbaXgyIC0gMV0pKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIC0taXgyO1xyXG4gICAgICAgICAgICBkb25lID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgdDE6IGl4MSwgdDI6IGl4MiB9O1xyXG59XHJcbmV4cG9ydHMudGFuZ2VudF9Qb2x5UG9seUMgPSB0YW5nZW50X1BvbHlQb2x5QztcclxuZnVuY3Rpb24gTFJ0YW5nZW50X1BvbHlQb2x5QyhWLCBXKSB7XHJcbiAgICB2YXIgcmwgPSBSTHRhbmdlbnRfUG9seVBvbHlDKFcsIFYpO1xyXG4gICAgcmV0dXJuIHsgdDE6IHJsLnQyLCB0MjogcmwudDEgfTtcclxufVxyXG5leHBvcnRzLkxSdGFuZ2VudF9Qb2x5UG9seUMgPSBMUnRhbmdlbnRfUG9seVBvbHlDO1xyXG5mdW5jdGlvbiBSTHRhbmdlbnRfUG9seVBvbHlDKFYsIFcpIHtcclxuICAgIHJldHVybiB0YW5nZW50X1BvbHlQb2x5QyhWLCBXLCBSdGFuZ2VudF9Qb2ludFBvbHlDLCBMdGFuZ2VudF9Qb2ludFBvbHlDLCBhYm92ZSwgYmVsb3cpO1xyXG59XHJcbmV4cG9ydHMuUkx0YW5nZW50X1BvbHlQb2x5QyA9IFJMdGFuZ2VudF9Qb2x5UG9seUM7XHJcbmZ1bmN0aW9uIExMdGFuZ2VudF9Qb2x5UG9seUMoViwgVykge1xyXG4gICAgcmV0dXJuIHRhbmdlbnRfUG9seVBvbHlDKFYsIFcsIEx0YW5nZW50X1BvaW50UG9seUMsIEx0YW5nZW50X1BvaW50UG9seUMsIGJlbG93LCBiZWxvdyk7XHJcbn1cclxuZXhwb3J0cy5MTHRhbmdlbnRfUG9seVBvbHlDID0gTEx0YW5nZW50X1BvbHlQb2x5QztcclxuZnVuY3Rpb24gUlJ0YW5nZW50X1BvbHlQb2x5QyhWLCBXKSB7XHJcbiAgICByZXR1cm4gdGFuZ2VudF9Qb2x5UG9seUMoViwgVywgUnRhbmdlbnRfUG9pbnRQb2x5QywgUnRhbmdlbnRfUG9pbnRQb2x5QywgYWJvdmUsIGFib3ZlKTtcclxufVxyXG5leHBvcnRzLlJSdGFuZ2VudF9Qb2x5UG9seUMgPSBSUnRhbmdlbnRfUG9seVBvbHlDO1xyXG52YXIgQmlUYW5nZW50ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJpVGFuZ2VudCh0MSwgdDIpIHtcclxuICAgICAgICB0aGlzLnQxID0gdDE7XHJcbiAgICAgICAgdGhpcy50MiA9IHQyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEJpVGFuZ2VudDtcclxufSgpKTtcclxuZXhwb3J0cy5CaVRhbmdlbnQgPSBCaVRhbmdlbnQ7XHJcbnZhciBCaVRhbmdlbnRzID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJpVGFuZ2VudHMoKSB7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gQmlUYW5nZW50cztcclxufSgpKTtcclxuZXhwb3J0cy5CaVRhbmdlbnRzID0gQmlUYW5nZW50cztcclxudmFyIFRWR1BvaW50ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhUVkdQb2ludCwgX3N1cGVyKTtcclxuICAgIGZ1bmN0aW9uIFRWR1BvaW50KCkge1xyXG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcclxuICAgIH1cclxuICAgIHJldHVybiBUVkdQb2ludDtcclxufShQb2ludCkpO1xyXG5leHBvcnRzLlRWR1BvaW50ID0gVFZHUG9pbnQ7XHJcbnZhciBWaXNpYmlsaXR5VmVydGV4ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZpc2liaWxpdHlWZXJ0ZXgoaWQsIHBvbHlpZCwgcG9seXZlcnRpZCwgcCkge1xyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLnBvbHlpZCA9IHBvbHlpZDtcclxuICAgICAgICB0aGlzLnBvbHl2ZXJ0aWQgPSBwb2x5dmVydGlkO1xyXG4gICAgICAgIHRoaXMucCA9IHA7XHJcbiAgICAgICAgcC52diA9IHRoaXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gVmlzaWJpbGl0eVZlcnRleDtcclxufSgpKTtcclxuZXhwb3J0cy5WaXNpYmlsaXR5VmVydGV4ID0gVmlzaWJpbGl0eVZlcnRleDtcclxudmFyIFZpc2liaWxpdHlFZGdlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZpc2liaWxpdHlFZGdlKHNvdXJjZSwgdGFyZ2V0KSB7XHJcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICBWaXNpYmlsaXR5RWRnZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBkeCA9IHRoaXMuc291cmNlLnAueCAtIHRoaXMudGFyZ2V0LnAueDtcclxuICAgICAgICB2YXIgZHkgPSB0aGlzLnNvdXJjZS5wLnkgLSB0aGlzLnRhcmdldC5wLnk7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFZpc2liaWxpdHlFZGdlO1xyXG59KCkpO1xyXG5leHBvcnRzLlZpc2liaWxpdHlFZGdlID0gVmlzaWJpbGl0eUVkZ2U7XHJcbnZhciBUYW5nZW50VmlzaWJpbGl0eUdyYXBoID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFRhbmdlbnRWaXNpYmlsaXR5R3JhcGgoUCwgZzApIHtcclxuICAgICAgICB0aGlzLlAgPSBQO1xyXG4gICAgICAgIHRoaXMuViA9IFtdO1xyXG4gICAgICAgIHRoaXMuRSA9IFtdO1xyXG4gICAgICAgIGlmICghZzApIHtcclxuICAgICAgICAgICAgdmFyIG4gPSBQLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBwID0gUFtpXTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcC5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwaiA9IHBbal0sIHZ2ID0gbmV3IFZpc2liaWxpdHlWZXJ0ZXgodGhpcy5WLmxlbmd0aCwgaSwgaiwgcGopO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuVi5wdXNoKHZ2KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaiA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRS5wdXNoKG5ldyBWaXNpYmlsaXR5RWRnZShwW2ogLSAxXS52diwgdnYpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5FLnB1c2gobmV3IFZpc2liaWxpdHlFZGdlKHBbMF0udnYsIHBbcC5sZW5ndGggLSAxXS52dikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAtIDE7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIFBpID0gUFtpXTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBpICsgMTsgaiA8IG47IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBQaiA9IFBbal0sIHQgPSB0YW5nZW50cyhQaSwgUGopO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHEgaW4gdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHRbcV0sIHNvdXJjZSA9IFBpW2MudDFdLCB0YXJnZXQgPSBQaltjLnQyXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFZGdlSWZWaXNpYmxlKHNvdXJjZSwgdGFyZ2V0LCBpLCBqKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuViA9IGcwLlYuc2xpY2UoMCk7XHJcbiAgICAgICAgICAgIHRoaXMuRSA9IGcwLkUuc2xpY2UoMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgVGFuZ2VudFZpc2liaWxpdHlHcmFwaC5wcm90b3R5cGUuYWRkRWRnZUlmVmlzaWJsZSA9IGZ1bmN0aW9uICh1LCB2LCBpMSwgaTIpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaW50ZXJzZWN0c1BvbHlzKG5ldyBMaW5lU2VnbWVudCh1LngsIHUueSwgdi54LCB2LnkpLCBpMSwgaTIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRS5wdXNoKG5ldyBWaXNpYmlsaXR5RWRnZSh1LnZ2LCB2LnZ2KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFRhbmdlbnRWaXNpYmlsaXR5R3JhcGgucHJvdG90eXBlLmFkZFBvaW50ID0gZnVuY3Rpb24gKHAsIGkxKSB7XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLlAubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMuVi5wdXNoKG5ldyBWaXNpYmlsaXR5VmVydGV4KHRoaXMuVi5sZW5ndGgsIG4sIDAsIHApKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gaTEpXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgdmFyIHBvbHkgPSB0aGlzLlBbaV0sIHQgPSB0YW5nZW50X1BvaW50UG9seUMocCwgcG9seSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRWRnZUlmVmlzaWJsZShwLCBwb2x5W3QubHRhbl0sIGkxLCBpKTtcclxuICAgICAgICAgICAgdGhpcy5hZGRFZGdlSWZWaXNpYmxlKHAsIHBvbHlbdC5ydGFuXSwgaTEsIGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcC52djtcclxuICAgIH07XHJcbiAgICBUYW5nZW50VmlzaWJpbGl0eUdyYXBoLnByb3RvdHlwZS5pbnRlcnNlY3RzUG9seXMgPSBmdW5jdGlvbiAobCwgaTEsIGkyKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0aGlzLlAubGVuZ3RoOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgICAgIGlmIChpICE9IGkxICYmIGkgIT0gaTIgJiYgaW50ZXJzZWN0cyhsLCB0aGlzLlBbaV0pLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gVGFuZ2VudFZpc2liaWxpdHlHcmFwaDtcclxufSgpKTtcclxuZXhwb3J0cy5UYW5nZW50VmlzaWJpbGl0eUdyYXBoID0gVGFuZ2VudFZpc2liaWxpdHlHcmFwaDtcclxuZnVuY3Rpb24gaW50ZXJzZWN0cyhsLCBQKSB7XHJcbiAgICB2YXIgaW50cyA9IFtdO1xyXG4gICAgZm9yICh2YXIgaSA9IDEsIG4gPSBQLmxlbmd0aDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgIHZhciBpbnQgPSByZWN0YW5nbGVfMS5SZWN0YW5nbGUubGluZUludGVyc2VjdGlvbihsLngxLCBsLnkxLCBsLngyLCBsLnkyLCBQW2kgLSAxXS54LCBQW2kgLSAxXS55LCBQW2ldLngsIFBbaV0ueSk7XHJcbiAgICAgICAgaWYgKGludClcclxuICAgICAgICAgICAgaW50cy5wdXNoKGludCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW50cztcclxufVxyXG5mdW5jdGlvbiB0YW5nZW50cyhWLCBXKSB7XHJcbiAgICB2YXIgbSA9IFYubGVuZ3RoIC0gMSwgbiA9IFcubGVuZ3RoIC0gMTtcclxuICAgIHZhciBidCA9IG5ldyBCaVRhbmdlbnRzKCk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG07ICsraSkge1xyXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgKytqKSB7XHJcbiAgICAgICAgICAgIHZhciB2MSA9IFZbaSA9PSAwID8gbSAtIDEgOiBpIC0gMV07XHJcbiAgICAgICAgICAgIHZhciB2MiA9IFZbaV07XHJcbiAgICAgICAgICAgIHZhciB2MyA9IFZbaSArIDFdO1xyXG4gICAgICAgICAgICB2YXIgdzEgPSBXW2ogPT0gMCA/IG4gLSAxIDogaiAtIDFdO1xyXG4gICAgICAgICAgICB2YXIgdzIgPSBXW2pdO1xyXG4gICAgICAgICAgICB2YXIgdzMgPSBXW2ogKyAxXTtcclxuICAgICAgICAgICAgdmFyIHYxdjJ3MiA9IGlzTGVmdCh2MSwgdjIsIHcyKTtcclxuICAgICAgICAgICAgdmFyIHYydzF3MiA9IGlzTGVmdCh2MiwgdzEsIHcyKTtcclxuICAgICAgICAgICAgdmFyIHYydzJ3MyA9IGlzTGVmdCh2MiwgdzIsIHczKTtcclxuICAgICAgICAgICAgdmFyIHcxdzJ2MiA9IGlzTGVmdCh3MSwgdzIsIHYyKTtcclxuICAgICAgICAgICAgdmFyIHcydjF2MiA9IGlzTGVmdCh3MiwgdjEsIHYyKTtcclxuICAgICAgICAgICAgdmFyIHcydjJ2MyA9IGlzTGVmdCh3MiwgdjIsIHYzKTtcclxuICAgICAgICAgICAgaWYgKHYxdjJ3MiA+PSAwICYmIHYydzF3MiA+PSAwICYmIHYydzJ3MyA8IDBcclxuICAgICAgICAgICAgICAgICYmIHcxdzJ2MiA+PSAwICYmIHcydjF2MiA+PSAwICYmIHcydjJ2MyA8IDApIHtcclxuICAgICAgICAgICAgICAgIGJ0LmxsID0gbmV3IEJpVGFuZ2VudChpLCBqKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh2MXYydzIgPD0gMCAmJiB2MncxdzIgPD0gMCAmJiB2MncydzMgPiAwXHJcbiAgICAgICAgICAgICAgICAmJiB3MXcydjIgPD0gMCAmJiB3MnYxdjIgPD0gMCAmJiB3MnYydjMgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBidC5yciA9IG5ldyBCaVRhbmdlbnQoaSwgaik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodjF2MncyIDw9IDAgJiYgdjJ3MXcyID4gMCAmJiB2MncydzMgPD0gMFxyXG4gICAgICAgICAgICAgICAgJiYgdzF3MnYyID49IDAgJiYgdzJ2MXYyIDwgMCAmJiB3MnYydjMgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgYnQucmwgPSBuZXcgQmlUYW5nZW50KGksIGopO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHYxdjJ3MiA+PSAwICYmIHYydzF3MiA8IDAgJiYgdjJ3MnczID49IDBcclxuICAgICAgICAgICAgICAgICYmIHcxdzJ2MiA8PSAwICYmIHcydjF2MiA+IDAgJiYgdzJ2MnYzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIGJ0LmxyID0gbmV3IEJpVGFuZ2VudChpLCBqKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBidDtcclxufVxyXG5leHBvcnRzLnRhbmdlbnRzID0gdGFuZ2VudHM7XHJcbmZ1bmN0aW9uIGlzUG9pbnRJbnNpZGVQb2x5KHAsIHBvbHkpIHtcclxuICAgIGZvciAodmFyIGkgPSAxLCBuID0gcG9seS5sZW5ndGg7IGkgPCBuOyArK2kpXHJcbiAgICAgICAgaWYgKGJlbG93KHBvbHlbaSAtIDFdLCBwb2x5W2ldLCBwKSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuZnVuY3Rpb24gaXNBbnlQSW5RKHAsIHEpIHtcclxuICAgIHJldHVybiAhcC5ldmVyeShmdW5jdGlvbiAodikgeyByZXR1cm4gIWlzUG9pbnRJbnNpZGVQb2x5KHYsIHEpOyB9KTtcclxufVxyXG5mdW5jdGlvbiBwb2x5c092ZXJsYXAocCwgcSkge1xyXG4gICAgaWYgKGlzQW55UEluUShwLCBxKSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIGlmIChpc0FueVBJblEocSwgcCkpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICBmb3IgKHZhciBpID0gMSwgbiA9IHAubGVuZ3RoOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgdmFyIHYgPSBwW2ldLCB1ID0gcFtpIC0gMV07XHJcbiAgICAgICAgaWYgKGludGVyc2VjdHMobmV3IExpbmVTZWdtZW50KHUueCwgdS55LCB2LngsIHYueSksIHEpLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmV4cG9ydHMucG9seXNPdmVybGFwID0gcG9seXNPdmVybGFwO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laMlZ2YlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwxZGxZa052YkdFdmMzSmpMMmRsYjIwdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3TzBGQlFVRXNlVU5CUVhGRE8wRkJRMnBETzBsQlFVRTdTVUZIUVN4RFFVRkRPMGxCUVVRc1dVRkJRenRCUVVGRUxFTkJRVU1zUVVGSVJDeEpRVWRETzBGQlNGa3NjMEpCUVVzN1FVRkxiRUk3U1VGRFNTeHhRa0ZCYlVJc1JVRkJWU3hGUVVGVExFVkJRVlVzUlVGQlV5eEZRVUZWTEVWQlFWTXNSVUZCVlR0UlFVRnVSU3hQUVVGRkxFZEJRVVlzUlVGQlJTeERRVUZSTzFGQlFWTXNUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVGVExFOUJRVVVzUjBGQlJpeEZRVUZGTEVOQlFWRTdVVUZCVXl4UFFVRkZMRWRCUVVZc1JVRkJSU3hEUVVGUk8wbEJRVWtzUTBGQlF6dEpRVU12Uml4clFrRkJRenRCUVVGRUxFTkJRVU1zUVVGR1JDeEpRVVZETzBGQlJsa3NhME5CUVZjN1FVRkplRUk3U1VGQkswSXNOa0pCUVVzN1NVRkJjRU03TzBsQlJVRXNRMEZCUXp0SlFVRkVMR2RDUVVGRE8wRkJRVVFzUTBGQlF5eEJRVVpFTEVOQlFTdENMRXRCUVVzc1IwRkZia003UVVGR1dTdzRRa0ZCVXp0QlFWVjBRaXhUUVVGblFpeE5RVUZOTEVOQlFVTXNSVUZCVXl4RlFVRkZMRVZCUVZNc1JVRkJSU3hGUVVGVE8wbEJRMnhFTEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONlJTeERRVUZETzBGQlJrUXNkMEpCUlVNN1FVRkZSQ3hUUVVGVExFdEJRVXNzUTBGQlF5eERRVUZSTEVWQlFVVXNSVUZCVXl4RlFVRkZMRVZCUVZNN1NVRkRla01zVDBGQlR5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEYWtNc1EwRkJRenRCUVVWRUxGTkJRVk1zUzBGQlN5eERRVUZETEVOQlFWRXNSVUZCUlN4RlFVRlRMRVZCUVVVc1JVRkJVenRKUVVONlF5eFBRVUZQTEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTnFReXhEUVVGRE8wRkJVMFFzVTBGQlowSXNWVUZCVlN4RFFVRkRMRU5CUVZVN1NVRkRha01zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQmJrTXNRMEZCYlVNc1EwRkJReXhEUVVGRE8wbEJRM1pGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEzQkNMRWxCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU5tTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYkVJc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRGNFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVazdXVUZCUlN4TlFVRk5PMHRCUXpsQ08wbEJRMFFzU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOdVFpeEpRVUZKTEVOQlFVTXNSMEZCV1N4RlFVRkZMRU5CUVVNN1NVRkRjRUlzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5zUWl4SlFVRkpMRTFCUVUwc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEyeENMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU16UWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNwQ08xTkJRVTA3VVVGRlNDeEpRVUZKTEUxQlFVMHNSVUZCUlN4TlFVRk5MRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU16UWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMFFpeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSk8yZENRVUZGTEUxQlFVMDdVVUZETDBJc1RVRkJUU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZIWml4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRMWdzVDBGQlR5eEZRVUZGTEVOQlFVTXNTVUZCU1N4TlFVRk5MRVZCUVVVN1dVRkZiRUlzU1VGQlNTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRTFCUVUwN1owSkJRM0pFTEZOQlFWTTdXVUZGWWl4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVU51UWp0blFrRkZTU3hKUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRE8yOUNRVU5zUkN4TlFVRk5PenR2UWtGRlRpeERRVUZETEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1EwRkJRenRoUVVOeVFqdFpRVU5FTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwN1owSkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU5xUXp0UlFVZEVMRWxCUVVrc1RVRkJUU3hKUVVGSkxFMUJRVTA3V1VGRGFFSXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTI1Q0xFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTTdVVUZEV0N4UFFVRlBMRVZCUVVVc1EwRkJReXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVVZzUWl4SlFVRkpMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzVFVGQlRUdG5Ra0ZEY2tRc1UwRkJVenRaUVVWaUxFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRVZCUTNKQ08yZENRVVZKTEVsQlFVa3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTTdiMEpCUTJ4RUxFMUJRVTA3TzI5Q1FVVk9MRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEzSkNPMWxCUTBRc1NVRkJTU3hEUVVGRExFbEJRVWtzVFVGQlRUdG5Ra0ZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTJwRE8wdEJRMG83U1VGRFJDeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTmlMRU5CUVVNN1FVRTVSRVFzWjBOQk9FUkRPMEZCUjBRc1UwRkJaMElzYjBKQlFXOUNMRU5CUVVNc1EwRkJVU3hGUVVGRkxFTkJRVlVzUlVGQlJTeERRVUZ4UWp0SlFVTTFSU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkRXQ3hWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQmJrVXNRMEZCYlVVc1EwRkROVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRja0lzUTBGQlF6dEJRVXBFTEc5RVFVbERPMEZCUlVRc1UwRkJVeXhoUVVGaExFTkJRVU1zUTBGQldTeEZRVUZGTEVWQlFXVTdTVUZEYUVRc1NVRkJTU3hEUVVGRExFTkJRVU1zVTBGQlV5eExRVUZMTEVWQlFVVXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJRenRSUVVGRkxFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJoRUxFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVMRk5CUVZNc1lVRkJZU3hEUVVGRExFTkJRVmtzUlVGQlJTeEZRVUZsTzBsQlEyaEVMRWxCUVVrc1EwRkJReXhEUVVGRExGTkJRVk1zUzBGQlN5eERRVUZETzFGQlFVVXNUMEZCVHl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTm9SQ3hQUVVGUExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJReTlDTEVOQlFVTTdRVUZSUkN4VFFVRlRMR3RDUVVGclFpeERRVUZETEVOQlFWRXNSVUZCUlN4RFFVRlZPMGxCUnpWRExFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVnVRaXhQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU1zUlVGQlJTeFBRVUZQTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRTlCUVU4c1EwRkJReXhGUVVGRkxFTkJRVU03UVVGRE5VWXNRMEZCUXp0QlFWTkVMRk5CUVZNc2JVSkJRVzFDTEVOQlFVTXNRMEZCVVN4RlFVRkZMRU5CUVZVN1NVRkROME1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGSGNrSXNTVUZCU1N4RFFVRlRMRVZCUVVVc1EwRkJVeXhGUVVGRkxFTkJRVk1zUTBGQlF6dEpRVU53UXl4SlFVRkpMRWRCUVZrc1JVRkJSU3hIUVVGWkxFTkJRVU03U1VGSkwwSXNTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGFrUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkZZaXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJRenRaUVVOWUxFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOd1FpeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1owSkJSVlFzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZGYWtJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVJc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNdlFpeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYUVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGSllpeEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUNMRWxCUVVrc1IwRkJSeXhGUVVGRk8xbEJRMHdzU1VGQlNTeEhRVUZITzJkQ1FVTklMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03YVVKQlEwdzdaMEpCUTBRc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTNCQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdPMjlDUVVWT0xFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZEWWp0VFFVTktPMkZCUTBrN1dVRkRSQ3hKUVVGSkxFTkJRVU1zUjBGQlJ6dG5Ra0ZEU2l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8ybENRVU5NTzJkQ1FVTkVMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTndRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZET3p0dlFrRkZUaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEySTdVMEZEU2p0TFFVTktPMEZCUTB3c1EwRkJRenRCUVZGRUxGTkJRVk1zYlVKQlFXMUNMRU5CUVVNc1EwRkJVU3hGUVVGRkxFTkJRVlU3U1VGRE4wTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGY2tJc1NVRkJTU3hEUVVGVExFVkJRVVVzUTBGQlV5eEZRVUZGTEVOQlFWTXNRMEZCUXp0SlFVTndReXhKUVVGSkxFZEJRVmtzUlVGQlJTeEhRVUZaTEVOQlFVTTdTVUZKTDBJc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtRc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRllpeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlN6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF6dFpRVU5ZTEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU53UWl4UFFVRlBMRU5CUVVNc1EwRkJRenM3WjBKQlJWUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZha0lzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROVUlzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UWl4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjN1dVRkRhRU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZKWWl4SFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXk5Q0xFbEJRVWtzUjBGQlJ5eEZRVUZGTzFsQlEwd3NTVUZCU1N4RFFVRkRMRWRCUVVjN1owSkJRMG9zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0cFFrRkRURHRuUWtGRFJDeEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGNFSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenM3YjBKQlJVNHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVOaU8xTkJRMG83WVVGRFNUdFpRVU5FTEVsQlFVa3NSMEZCUnp0blFrRkRTQ3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJsQ1FVTk1PMmRDUVVORUxFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOd1FpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPenR2UWtGRlRpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTJJN1UwRkRTanRMUVVOS08wRkJRMHdzUTBGQlF6dEJRVk5FTEZOQlFXZENMR2xDUVVGcFFpeERRVUZETEVOQlFWVXNSVUZCUlN4RFFVRlZMRVZCUVVVc1JVRkJiME1zUlVGQlJTeEZRVUZ2UXl4RlFVRkZMRWxCUVN0RExFVkJRVVVzU1VGQkswTTdTVUZEYkU4c1NVRkJTU3hIUVVGWExFVkJRVVVzUjBGQlZ5eERRVUZETzBsQlJ6ZENMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnhDTEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUjNCQ0xFbEJRVWtzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTnFRaXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTzFGQlExWXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOYUxFOUJRVThzU1VGQlNTeEZRVUZGTzFsQlExUXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzJkQ1FVRkZMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVGRkxFMUJRVTA3V1VGRE5VTXNSVUZCUlN4SFFVRkhMRU5CUVVNN1UwRkRWRHRSUVVORUxFOUJRVThzU1VGQlNTeEZRVUZGTzFsQlExUXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJRenRuUWtGQlJTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVGRkxFMUJRVTA3V1VGRE5VTXNSVUZCUlN4SFFVRkhMRU5CUVVNN1dVRkRUaXhKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETzFOQlEyaENPMHRCUTBvN1NVRkRSQ3hQUVVGUExFVkJRVVVzUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGFFTXNRMEZCUXp0QlFYaENSQ3c0UTBGM1FrTTdRVUZGUkN4VFFVRm5RaXh0UWtGQmJVSXNRMEZCUXl4RFFVRlZMRVZCUVVVc1EwRkJWVHRKUVVOMFJDeEpRVUZKTEVWQlFVVXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRia01zVDBGQlR5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNN1FVRkRjRU1zUTBGQlF6dEJRVWhFTEd0RVFVZERPMEZCUlVRc1UwRkJaMElzYlVKQlFXMUNMRU5CUVVNc1EwRkJWU3hGUVVGRkxFTkJRVlU3U1VGRGRFUXNUMEZCVHl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRzFDUVVGdFFpeEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTXpSaXhEUVVGRE8wRkJSa1FzYTBSQlJVTTdRVUZGUkN4VFFVRm5RaXh0UWtGQmJVSXNRMEZCUXl4RFFVRlZMRVZCUVVVc1EwRkJWVHRKUVVOMFJDeFBRVUZQTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNiVUpCUVcxQ0xFVkJRVVVzYlVKQlFXMUNMRVZCUVVVc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBGQlF6TkdMRU5CUVVNN1FVRkdSQ3hyUkVGRlF6dEJRVVZFTEZOQlFXZENMRzFDUVVGdFFpeERRVUZETEVOQlFWVXNSVUZCUlN4RFFVRlZPMGxCUTNSRUxFOUJRVThzYVVKQlFXbENMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeHRRa0ZCYlVJc1JVRkJSU3h0UWtGQmJVSXNSVUZCUlN4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRE0wWXNRMEZCUXp0QlFVWkVMR3RFUVVWRE8wRkJSVVE3U1VGRFNTeHRRa0ZCYlVJc1JVRkJWU3hGUVVGVExFVkJRVlU3VVVGQk4wSXNUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVGVExFOUJRVVVzUjBGQlJpeEZRVUZGTEVOQlFWRTdTVUZCU1N4RFFVRkRPMGxCUTNwRUxHZENRVUZETzBGQlFVUXNRMEZCUXl4QlFVWkVMRWxCUlVNN1FVRkdXU3c0UWtGQlV6dEJRVWwwUWp0SlFVRkJPMGxCUzBFc1EwRkJRenRKUVVGRUxHbENRVUZETzBGQlFVUXNRMEZCUXl4QlFVeEVMRWxCUzBNN1FVRk1XU3huUTBGQlZUdEJRVTkyUWp0SlFVRTRRaXcwUWtGQlN6dEpRVUZ1UXpzN1NVRkZRU3hEUVVGRE8wbEJRVVFzWlVGQlF6dEJRVUZFTEVOQlFVTXNRVUZHUkN4RFFVRTRRaXhMUVVGTExFZEJSV3hETzBGQlJsa3NORUpCUVZFN1FVRkpja0k3U1VGRFNTd3dRa0ZEVnl4RlFVRlZMRVZCUTFZc1RVRkJZeXhGUVVOa0xGVkJRV3RDTEVWQlEyeENMRU5CUVZjN1VVRklXQ3hQUVVGRkxFZEJRVVlzUlVGQlJTeERRVUZSTzFGQlExWXNWMEZCVFN4SFFVRk9MRTFCUVUwc1EwRkJVVHRSUVVOa0xHVkJRVlVzUjBGQlZpeFZRVUZWTEVOQlFWRTdVVUZEYkVJc1RVRkJReXhIUVVGRUxFTkJRVU1zUTBGQlZUdFJRVVZzUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCUTB3c2RVSkJRVU03UVVGQlJDeERRVUZETEVGQlZFUXNTVUZUUXp0QlFWUlpMRFJEUVVGblFqdEJRVmMzUWp0SlFVTkpMSGRDUVVOWExFMUJRWGRDTEVWQlEzaENMRTFCUVhkQ08xRkJSSGhDTEZkQlFVMHNSMEZCVGl4TlFVRk5MRU5CUVd0Q08xRkJRM2hDTEZkQlFVMHNSMEZCVGl4TlFVRk5MRU5CUVd0Q08wbEJRVWtzUTBGQlF6dEpRVU40UXl3clFrRkJUU3hIUVVGT08xRkJRMGtzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU16UXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpORExFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTjRReXhEUVVGRE8wbEJRMHdzY1VKQlFVTTdRVUZCUkN4RFFVRkRMRUZCVkVRc1NVRlRRenRCUVZSWkxIZERRVUZqTzBGQlZ6TkNPMGxCUjBrc1owTkJRVzFDTEVOQlFXVXNSVUZCUlN4RlFVRnRSRHRSUVVGd1JTeE5RVUZETEVkQlFVUXNRMEZCUXl4RFFVRmpPMUZCUm14RExFMUJRVU1zUjBGQmRVSXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFMUJRVU1zUjBGQmNVSXNSVUZCUlN4RFFVRkRPMUZCUlhKQ0xFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEVEN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzFsQlJXcENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlEzaENMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkZZaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0dlFrRkRMMElzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVOVUxFVkJRVVVzUjBGQlJ5eEpRVUZKTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdiMEpCUTNaRUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8yOUNRVWxvUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8zZENRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN2FVSkJReTlFTzJkQ1FVVkVMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzI5Q1FVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVOc1JqdFpRVU5FTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU0xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTJRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdiMEpCUXpWQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRWQ3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenR2UWtGRGVrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3ZDBKQlEySXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU5TTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzNkQ1FVTjZReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN2NVSkJReTlETzJsQ1FVTktPMkZCUTBvN1UwRkRTanRoUVVGTk8xbEJRMGdzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjJRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF6RkNPMGxCUTB3c1EwRkJRenRKUVVORUxHbEVRVUZuUWl4SFFVRm9RaXhWUVVGcFFpeERRVUZYTEVWQlFVVXNRMEZCVnl4RlFVRkZMRVZCUVZVc1JVRkJSU3hGUVVGVk8xRkJRemRFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFbEJRVWtzVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRjRVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hqUVVGakxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12UXp0SlFVTk1MRU5CUVVNN1NVRkRSQ3g1UTBGQlVTeEhRVUZTTEZWQlFWTXNRMEZCVnl4RlFVRkZMRVZCUVZVN1VVRkROVUlzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGRFSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETVVRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRk8yZENRVUZGTEZOQlFWTTdXVUZEZGtJc1NVRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRhRUlzUTBGQlF5eEhRVUZITEd0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTndReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6bERMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRGFrUTdVVUZEUkN4UFFVRlBMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFVTlBMR2RFUVVGbExFZEJRWFpDTEZWQlFYZENMRU5CUVdNc1JVRkJSU3hGUVVGVkxFVkJRVVVzUlVGQlZUdFJRVU14UkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVNelF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeFZRVUZWTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU16UkN4UFFVRlBMRWxCUVVrc1EwRkJRenRoUVVObU8xTkJRMG83VVVGRFJDeFBRVUZQTEV0QlFVc3NRMEZCUXp0SlFVTnFRaXhEUVVGRE8wbEJRMHdzTmtKQlFVTTdRVUZCUkN4RFFVRkRMRUZCYUVWRUxFbEJaMFZETzBGQmFFVlpMSGRFUVVGelFqdEJRV3RGYmtNc1UwRkJVeXhWUVVGVkxFTkJRVU1zUTBGQll5eEZRVUZGTEVOQlFWVTdTVUZETVVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlEyUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjBReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eHhRa0ZCVXl4RFFVRkRMR2RDUVVGblFpeERRVU5vUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlExWXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVU5XTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU4wUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRMklzUTBGQlF6dFJRVU5PTEVsQlFVa3NSMEZCUnp0WlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZETTBJN1NVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRc1UwRkJaMElzVVVGQlVTeERRVUZETEVOQlFWVXNSVUZCUlN4RFFVRlZPMGxCUlRORExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOMlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4SlFVRkpMRlZCUVZVc1JVRkJSU3hEUVVGRE8wbEJRekZDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRlRUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyNURMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTmtMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRiRUlzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnVReXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRaQ3hKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnhDTEVsQlFVa3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUTJoRExFbEJRVWtzVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFsQlEyaERMRWxCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRMmhETEVsQlFVa3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUTJoRExFbEJRVWtzVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFsQlEyaERMRWxCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRMmhETEVsQlFVa3NUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRPMjFDUVVOeVF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlR0blFrRkRla01zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYmtNN2FVSkJRVTBzU1VGQlNTeE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTTdiVUpCUXpWRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzJkQ1FVTjZReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU51UXp0cFFrRkJUU3hKUVVGSkxFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1NVRkJTU3hOUVVGTkxFbEJRVWtzUTBGQlF6dHRRa0ZETlVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRExFVkJRVVU3WjBKQlEzcERMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMjVETzJsQ1FVRk5MRWxCUVVrc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRTFCUVUwc1NVRkJTU3hEUVVGRE8yMUNRVU0xUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhKUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEVsQlFVa3NUVUZCVFN4SlFVRkpMRU5CUVVNc1JVRkJSVHRuUWtGRGVrTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRia003VTBGRFNqdExRVU5LTzBsQlEwUXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJiRU5FTERSQ1FXdERRenRCUVVWRUxGTkJRVk1zYVVKQlFXbENMRU5CUVVNc1EwRkJVU3hGUVVGRkxFbEJRV0U3U1VGRE9VTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdVVUZEZGtNc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUeXhMUVVGTExFTkJRVU03U1VGRGNrUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRhRUlzUTBGQlF6dEJRVVZFTEZOQlFWTXNVMEZCVXl4RFFVRkRMRU5CUVZVc1JVRkJSU3hEUVVGVk8wbEJRM0pETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVhoQ0xFTkJRWGRDTEVOQlFVTXNRMEZCUXp0QlFVTnVSQ3hEUVVGRE8wRkJSVVFzVTBGQlowSXNXVUZCV1N4RFFVRkRMRU5CUVZVc1JVRkJSU3hEUVVGVk8wbEJReTlETEVsQlFVa3NVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTnFReXhKUVVGSkxGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUVVVc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRGFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjBReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNMElzU1VGQlNTeFZRVUZWTEVOQlFVTXNTVUZCU1N4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1MwRkRiRVk3U1VGRFJDeFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTnFRaXhEUVVGRE8wRkJVa1FzYjBOQlVVTWlmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIHBhY2tpbmdPcHRpb25zID0ge1xyXG4gICAgUEFERElORzogMTAsXHJcbiAgICBHT0xERU5fU0VDVElPTjogKDEgKyBNYXRoLnNxcnQoNSkpIC8gMixcclxuICAgIEZMT0FUX0VQU0lMT046IDAuMDAwMSxcclxuICAgIE1BWF9JTkVSQVRJT05TOiAxMDBcclxufTtcclxuZnVuY3Rpb24gYXBwbHlQYWNraW5nKGdyYXBocywgdywgaCwgbm9kZV9zaXplLCBkZXNpcmVkX3JhdGlvLCBjZW50ZXJHcmFwaCkge1xyXG4gICAgaWYgKGRlc2lyZWRfcmF0aW8gPT09IHZvaWQgMCkgeyBkZXNpcmVkX3JhdGlvID0gMTsgfVxyXG4gICAgaWYgKGNlbnRlckdyYXBoID09PSB2b2lkIDApIHsgY2VudGVyR3JhcGggPSB0cnVlOyB9XHJcbiAgICB2YXIgaW5pdF94ID0gMCwgaW5pdF95ID0gMCwgc3ZnX3dpZHRoID0gdywgc3ZnX2hlaWdodCA9IGgsIGRlc2lyZWRfcmF0aW8gPSB0eXBlb2YgZGVzaXJlZF9yYXRpbyAhPT0gJ3VuZGVmaW5lZCcgPyBkZXNpcmVkX3JhdGlvIDogMSwgbm9kZV9zaXplID0gdHlwZW9mIG5vZGVfc2l6ZSAhPT0gJ3VuZGVmaW5lZCcgPyBub2RlX3NpemUgOiAwLCByZWFsX3dpZHRoID0gMCwgcmVhbF9oZWlnaHQgPSAwLCBtaW5fd2lkdGggPSAwLCBnbG9iYWxfYm90dG9tID0gMCwgbGluZSA9IFtdO1xyXG4gICAgaWYgKGdyYXBocy5sZW5ndGggPT0gMClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBjYWxjdWxhdGVfYmIoZ3JhcGhzKTtcclxuICAgIGFwcGx5KGdyYXBocywgZGVzaXJlZF9yYXRpbyk7XHJcbiAgICBpZiAoY2VudGVyR3JhcGgpIHtcclxuICAgICAgICBwdXRfbm9kZXNfdG9fcmlnaHRfcG9zaXRpb25zKGdyYXBocyk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVfYmIoZ3JhcGhzKSB7XHJcbiAgICAgICAgZ3JhcGhzLmZvckVhY2goZnVuY3Rpb24gKGcpIHtcclxuICAgICAgICAgICAgY2FsY3VsYXRlX3NpbmdsZV9iYihnKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGVfc2luZ2xlX2JiKGdyYXBoKSB7XHJcbiAgICAgICAgICAgIHZhciBtaW5feCA9IE51bWJlci5NQVhfVkFMVUUsIG1pbl95ID0gTnVtYmVyLk1BWF9WQUxVRSwgbWF4X3ggPSAwLCBtYXhfeSA9IDA7XHJcbiAgICAgICAgICAgIGdyYXBoLmFycmF5LmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgIHZhciB3ID0gdHlwZW9mIHYud2lkdGggIT09ICd1bmRlZmluZWQnID8gdi53aWR0aCA6IG5vZGVfc2l6ZTtcclxuICAgICAgICAgICAgICAgIHZhciBoID0gdHlwZW9mIHYuaGVpZ2h0ICE9PSAndW5kZWZpbmVkJyA/IHYuaGVpZ2h0IDogbm9kZV9zaXplO1xyXG4gICAgICAgICAgICAgICAgdyAvPSAyO1xyXG4gICAgICAgICAgICAgICAgaCAvPSAyO1xyXG4gICAgICAgICAgICAgICAgbWF4X3ggPSBNYXRoLm1heCh2LnggKyB3LCBtYXhfeCk7XHJcbiAgICAgICAgICAgICAgICBtaW5feCA9IE1hdGgubWluKHYueCAtIHcsIG1pbl94KTtcclxuICAgICAgICAgICAgICAgIG1heF95ID0gTWF0aC5tYXgodi55ICsgaCwgbWF4X3kpO1xyXG4gICAgICAgICAgICAgICAgbWluX3kgPSBNYXRoLm1pbih2LnkgLSBoLCBtaW5feSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBncmFwaC53aWR0aCA9IG1heF94IC0gbWluX3g7XHJcbiAgICAgICAgICAgIGdyYXBoLmhlaWdodCA9IG1heF95IC0gbWluX3k7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gcHV0X25vZGVzX3RvX3JpZ2h0X3Bvc2l0aW9ucyhncmFwaHMpIHtcclxuICAgICAgICBncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICB2YXIgY2VudGVyID0geyB4OiAwLCB5OiAwIH07XHJcbiAgICAgICAgICAgIGcuYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xyXG4gICAgICAgICAgICAgICAgY2VudGVyLnggKz0gbm9kZS54O1xyXG4gICAgICAgICAgICAgICAgY2VudGVyLnkgKz0gbm9kZS55O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY2VudGVyLnggLz0gZy5hcnJheS5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNlbnRlci55IC89IGcuYXJyYXkubGVuZ3RoO1xyXG4gICAgICAgICAgICB2YXIgY29ybmVyID0geyB4OiBjZW50ZXIueCAtIGcud2lkdGggLyAyLCB5OiBjZW50ZXIueSAtIGcuaGVpZ2h0IC8gMiB9O1xyXG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0geyB4OiBnLnggLSBjb3JuZXIueCArIHN2Z193aWR0aCAvIDIgLSByZWFsX3dpZHRoIC8gMiwgeTogZy55IC0gY29ybmVyLnkgKyBzdmdfaGVpZ2h0IC8gMiAtIHJlYWxfaGVpZ2h0IC8gMiB9O1xyXG4gICAgICAgICAgICBnLmFycmF5LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUueCArPSBvZmZzZXQueDtcclxuICAgICAgICAgICAgICAgIG5vZGUueSArPSBvZmZzZXQueTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBhcHBseShkYXRhLCBkZXNpcmVkX3JhdGlvKSB7XHJcbiAgICAgICAgdmFyIGN1cnJfYmVzdF9mID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xyXG4gICAgICAgIHZhciBjdXJyX2Jlc3QgPSAwO1xyXG4gICAgICAgIGRhdGEuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYi5oZWlnaHQgLSBhLmhlaWdodDsgfSk7XHJcbiAgICAgICAgbWluX3dpZHRoID0gZGF0YS5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGEud2lkdGggPCBiLndpZHRoID8gYS53aWR0aCA6IGIud2lkdGg7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIGxlZnQgPSB4MSA9IG1pbl93aWR0aDtcclxuICAgICAgICB2YXIgcmlnaHQgPSB4MiA9IGdldF9lbnRpcmVfd2lkdGgoZGF0YSk7XHJcbiAgICAgICAgdmFyIGl0ZXJhdGlvbkNvdW50ZXIgPSAwO1xyXG4gICAgICAgIHZhciBmX3gxID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuICAgICAgICB2YXIgZl94MiA9IE51bWJlci5NQVhfVkFMVUU7XHJcbiAgICAgICAgdmFyIGZsYWcgPSAtMTtcclxuICAgICAgICB2YXIgZHggPSBOdW1iZXIuTUFYX1ZBTFVFO1xyXG4gICAgICAgIHZhciBkZiA9IE51bWJlci5NQVhfVkFMVUU7XHJcbiAgICAgICAgd2hpbGUgKChkeCA+IG1pbl93aWR0aCkgfHwgZGYgPiBwYWNraW5nT3B0aW9ucy5GTE9BVF9FUFNJTE9OKSB7XHJcbiAgICAgICAgICAgIGlmIChmbGFnICE9IDEpIHtcclxuICAgICAgICAgICAgICAgIHZhciB4MSA9IHJpZ2h0IC0gKHJpZ2h0IC0gbGVmdCkgLyBwYWNraW5nT3B0aW9ucy5HT0xERU5fU0VDVElPTjtcclxuICAgICAgICAgICAgICAgIHZhciBmX3gxID0gc3RlcChkYXRhLCB4MSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGZsYWcgIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHgyID0gbGVmdCArIChyaWdodCAtIGxlZnQpIC8gcGFja2luZ09wdGlvbnMuR09MREVOX1NFQ1RJT047XHJcbiAgICAgICAgICAgICAgICB2YXIgZl94MiA9IHN0ZXAoZGF0YSwgeDIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGR4ID0gTWF0aC5hYnMoeDEgLSB4Mik7XHJcbiAgICAgICAgICAgIGRmID0gTWF0aC5hYnMoZl94MSAtIGZfeDIpO1xyXG4gICAgICAgICAgICBpZiAoZl94MSA8IGN1cnJfYmVzdF9mKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3RfZiA9IGZfeDE7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3QgPSB4MTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZl94MiA8IGN1cnJfYmVzdF9mKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3RfZiA9IGZfeDI7XHJcbiAgICAgICAgICAgICAgICBjdXJyX2Jlc3QgPSB4MjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZl94MSA+IGZfeDIpIHtcclxuICAgICAgICAgICAgICAgIGxlZnQgPSB4MTtcclxuICAgICAgICAgICAgICAgIHgxID0geDI7XHJcbiAgICAgICAgICAgICAgICBmX3gxID0gZl94MjtcclxuICAgICAgICAgICAgICAgIGZsYWcgPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmlnaHQgPSB4MjtcclxuICAgICAgICAgICAgICAgIHgyID0geDE7XHJcbiAgICAgICAgICAgICAgICBmX3gyID0gZl94MTtcclxuICAgICAgICAgICAgICAgIGZsYWcgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVyYXRpb25Db3VudGVyKysgPiAxMDApIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0ZXAoZGF0YSwgY3Vycl9iZXN0KTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAoZGF0YSwgbWF4X3dpZHRoKSB7XHJcbiAgICAgICAgbGluZSA9IFtdO1xyXG4gICAgICAgIHJlYWxfd2lkdGggPSAwO1xyXG4gICAgICAgIHJlYWxfaGVpZ2h0ID0gMDtcclxuICAgICAgICBnbG9iYWxfYm90dG9tID0gaW5pdF95O1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgbyA9IGRhdGFbaV07XHJcbiAgICAgICAgICAgIHB1dF9yZWN0KG8sIG1heF93aWR0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhnZXRfcmVhbF9yYXRpbygpIC0gZGVzaXJlZF9yYXRpbyk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwdXRfcmVjdChyZWN0LCBtYXhfd2lkdGgpIHtcclxuICAgICAgICB2YXIgcGFyZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoKGxpbmVbaV0uc3BhY2VfbGVmdCA+PSByZWN0LmhlaWdodCkgJiYgKGxpbmVbaV0ueCArIGxpbmVbaV0ud2lkdGggKyByZWN0LndpZHRoICsgcGFja2luZ09wdGlvbnMuUEFERElORyAtIG1heF93aWR0aCkgPD0gcGFja2luZ09wdGlvbnMuRkxPQVRfRVBTSUxPTikge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50ID0gbGluZVtpXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpbmUucHVzaChyZWN0KTtcclxuICAgICAgICBpZiAocGFyZW50ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmVjdC54ID0gcGFyZW50LnggKyBwYXJlbnQud2lkdGggKyBwYWNraW5nT3B0aW9ucy5QQURESU5HO1xyXG4gICAgICAgICAgICByZWN0LnkgPSBwYXJlbnQuYm90dG9tO1xyXG4gICAgICAgICAgICByZWN0LnNwYWNlX2xlZnQgPSByZWN0LmhlaWdodDtcclxuICAgICAgICAgICAgcmVjdC5ib3R0b20gPSByZWN0Lnk7XHJcbiAgICAgICAgICAgIHBhcmVudC5zcGFjZV9sZWZ0IC09IHJlY3QuaGVpZ2h0ICsgcGFja2luZ09wdGlvbnMuUEFERElORztcclxuICAgICAgICAgICAgcGFyZW50LmJvdHRvbSArPSByZWN0LmhlaWdodCArIHBhY2tpbmdPcHRpb25zLlBBRERJTkc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZWN0LnkgPSBnbG9iYWxfYm90dG9tO1xyXG4gICAgICAgICAgICBnbG9iYWxfYm90dG9tICs9IHJlY3QuaGVpZ2h0ICsgcGFja2luZ09wdGlvbnMuUEFERElORztcclxuICAgICAgICAgICAgcmVjdC54ID0gaW5pdF94O1xyXG4gICAgICAgICAgICByZWN0LmJvdHRvbSA9IHJlY3QueTtcclxuICAgICAgICAgICAgcmVjdC5zcGFjZV9sZWZ0ID0gcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWN0LnkgKyByZWN0LmhlaWdodCAtIHJlYWxfaGVpZ2h0ID4gLXBhY2tpbmdPcHRpb25zLkZMT0FUX0VQU0lMT04pXHJcbiAgICAgICAgICAgIHJlYWxfaGVpZ2h0ID0gcmVjdC55ICsgcmVjdC5oZWlnaHQgLSBpbml0X3k7XHJcbiAgICAgICAgaWYgKHJlY3QueCArIHJlY3Qud2lkdGggLSByZWFsX3dpZHRoID4gLXBhY2tpbmdPcHRpb25zLkZMT0FUX0VQU0lMT04pXHJcbiAgICAgICAgICAgIHJlYWxfd2lkdGggPSByZWN0LnggKyByZWN0LndpZHRoIC0gaW5pdF94O1xyXG4gICAgfVxyXG4gICAgO1xyXG4gICAgZnVuY3Rpb24gZ2V0X2VudGlyZV93aWR0aChkYXRhKSB7XHJcbiAgICAgICAgdmFyIHdpZHRoID0gMDtcclxuICAgICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKGQpIHsgcmV0dXJuIHdpZHRoICs9IGQud2lkdGggKyBwYWNraW5nT3B0aW9ucy5QQURESU5HOyB9KTtcclxuICAgICAgICByZXR1cm4gd2lkdGg7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZXRfcmVhbF9yYXRpbygpIHtcclxuICAgICAgICByZXR1cm4gKHJlYWxfd2lkdGggLyByZWFsX2hlaWdodCk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5hcHBseVBhY2tpbmcgPSBhcHBseVBhY2tpbmc7XHJcbmZ1bmN0aW9uIHNlcGFyYXRlR3JhcGhzKG5vZGVzLCBsaW5rcykge1xyXG4gICAgdmFyIG1hcmtzID0ge307XHJcbiAgICB2YXIgd2F5cyA9IHt9O1xyXG4gICAgdmFyIGdyYXBocyA9IFtdO1xyXG4gICAgdmFyIGNsdXN0ZXJzID0gMDtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgbGluayA9IGxpbmtzW2ldO1xyXG4gICAgICAgIHZhciBuMSA9IGxpbmsuc291cmNlO1xyXG4gICAgICAgIHZhciBuMiA9IGxpbmsudGFyZ2V0O1xyXG4gICAgICAgIGlmICh3YXlzW24xLmluZGV4XSlcclxuICAgICAgICAgICAgd2F5c1tuMS5pbmRleF0ucHVzaChuMik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB3YXlzW24xLmluZGV4XSA9IFtuMl07XHJcbiAgICAgICAgaWYgKHdheXNbbjIuaW5kZXhdKVxyXG4gICAgICAgICAgICB3YXlzW24yLmluZGV4XS5wdXNoKG4xKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHdheXNbbjIuaW5kZXhdID0gW24xXTtcclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xyXG4gICAgICAgIGlmIChtYXJrc1tub2RlLmluZGV4XSlcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgZXhwbG9yZV9ub2RlKG5vZGUsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZXhwbG9yZV9ub2RlKG4sIGlzX25ldykge1xyXG4gICAgICAgIGlmIChtYXJrc1tuLmluZGV4XSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKGlzX25ldykge1xyXG4gICAgICAgICAgICBjbHVzdGVycysrO1xyXG4gICAgICAgICAgICBncmFwaHMucHVzaCh7IGFycmF5OiBbXSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWFya3Nbbi5pbmRleF0gPSBjbHVzdGVycztcclxuICAgICAgICBncmFwaHNbY2x1c3RlcnMgLSAxXS5hcnJheS5wdXNoKG4pO1xyXG4gICAgICAgIHZhciBhZGphY2VudCA9IHdheXNbbi5pbmRleF07XHJcbiAgICAgICAgaWYgKCFhZGphY2VudClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYWRqYWNlbnQubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgZXhwbG9yZV9ub2RlKGFkamFjZW50W2pdLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyYXBocztcclxufVxyXG5leHBvcnRzLnNlcGFyYXRlR3JhcGhzID0gc2VwYXJhdGVHcmFwaHM7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFHRnVaR3hsWkdselkyOXVibVZqZEdWa0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZWMlZpUTI5c1lTOXpjbU12YUdGdVpHeGxaR2x6WTI5dWJtVmpkR1ZrTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVWtzU1VGQlNTeGpRVUZqTEVkQlFVYzdTVUZEYWtJc1QwRkJUeXhGUVVGRkxFVkJRVVU3U1VGRFdDeGpRVUZqTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNN1NVRkRkRU1zWVVGQllTeEZRVUZGTEUxQlFVMDdTVUZEY2tJc1kwRkJZeXhGUVVGRkxFZEJRVWM3UTBGRGRFSXNRMEZCUXp0QlFVZEdMRk5CUVdkQ0xGbEJRVmtzUTBGQlF5eE5RVUZwUWl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVTBGQlV5eEZRVUZGTEdGQlFXbENMRVZCUVVVc1YwRkJhMEk3U1VGQmNrTXNPRUpCUVVFc1JVRkJRU3hwUWtGQmFVSTdTVUZCUlN3MFFrRkJRU3hGUVVGQkxHdENRVUZyUWp0SlFVVnNSeXhKUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlExWXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkZWaXhUUVVGVExFZEJRVWNzUTBGQlF5eEZRVU5pTEZWQlFWVXNSMEZCUnl4RFFVRkRMRVZCUldRc1lVRkJZU3hIUVVGSExFOUJRVThzWVVGQllTeExRVUZMTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlEzaEZMRk5CUVZNc1IwRkJSeXhQUVVGUExGTkJRVk1zUzBGQlN5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVVUxUkN4VlFVRlZMRWRCUVVjc1EwRkJReXhGUVVOa0xGZEJRVmNzUjBGQlJ5eERRVUZETEVWQlEyWXNVMEZCVXl4SFFVRkhMRU5CUVVNc1JVRkZZaXhoUVVGaExFZEJRVWNzUTBGQlF5eEZRVU5xUWl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJSV1FzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNN1VVRkRiRUlzVDBGQlR6dEpRVlZZTEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOeVFpeExRVUZMTEVOQlFVTXNUVUZCVFN4RlFVRkZMR0ZCUVdFc1EwRkJReXhEUVVGRE8wbEJRemRDTEVsQlFVY3NWMEZCVnl4RlFVRkZPMUZCUTFvc05FSkJRVFJDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRlRU03U1VGSFJDeFRRVUZUTEZsQlFWa3NRMEZCUXl4TlFVRk5PMUZCUlhoQ0xFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTNSQ0xHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGQk8xRkJRekZDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1UwRkJVeXh0UWtGQmJVSXNRMEZCUXl4TFFVRkxPMWxCUXpsQ0xFbEJRVWtzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRVZCUVVVc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF5eFRRVUZUTEVWQlEyeEVMRXRCUVVzc1IwRkJSeXhEUVVGRExFVkJRVVVzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVjZRaXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNN1owSkJRek5DTEVsQlFVa3NRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFdEJRVXNzUzBGQlN5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXp0blFrRkROMFFzU1VGQlNTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETzJkQ1FVTXZSQ3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTlFMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlExQXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03WjBKQlEycERMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzJkQ1FVTnFReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0blFrRkRha01zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1dVRkRja01zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGU0N4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZETlVJc1MwRkJTeXhEUVVGRExFMUJRVTBzUjBGQlJ5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTJwRExFTkJRVU03U1VGRFRDeERRVUZETzBsQmRVTkVMRk5CUVZNc05FSkJRVFJDTEVOQlFVTXNUVUZCVFR0UlFVTjRReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXp0WlFVVjBRaXhKUVVGSkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlJUVkNMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNTVUZCU1R0blFrRkRNVUlzVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU51UWl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZGtJc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRlNDeE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETzFsQlF6TkNMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1dVRkhNMElzU1VGQlNTeE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEzWkZMRWxCUVVrc1RVRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVkQlFVY3NRMEZCUXl4SFFVRkhMRlZCUVZVc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVkQlFVY3NRMEZCUXl4SFFVRkhMRmRCUVZjc1IwRkJSeXhEUVVGRExFVkJRVU1zUTBGQlF6dFpRVWQ2U0N4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVsQlFVazdaMEpCUXpGQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGJrSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzWkNMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMUFzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEVUN4RFFVRkRPMGxCU1VRc1UwRkJVeXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEdGQlFXRTdVVUZET1VJc1NVRkJTU3hYUVVGWExFZEJRVWNzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhEUVVGRE8xRkJRek5ETEVsQlFVa3NVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlRORUxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRGJFTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkRha1FzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGU0N4SlFVRkpMRWxCUVVrc1IwRkJSeXhGUVVGRkxFZEJRVWNzVTBGQlV5eERRVUZETzFGQlF6RkNMRWxCUVVrc1MwRkJTeXhIUVVGSExFVkJRVVVzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU40UXl4SlFVRkpMR2RDUVVGblFpeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVjZRaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUXpWQ0xFbEJRVWtzU1VGQlNTeEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNN1VVRkROVUlzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkhaQ3hKUVVGSkxFVkJRVVVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUXpGQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNN1VVRkZNVUlzVDBGQlR5eERRVUZETEVWQlFVVXNSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzWTBGQll5eERRVUZETEdGQlFXRXNSVUZCUlR0WlFVVXhSQ3hKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdaMEpCUTFnc1NVRkJTU3hGUVVGRkxFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExHTkJRV01zUTBGQlF5eGpRVUZqTEVOQlFVTTdaMEpCUTJoRkxFbEJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03WVVGRE4wSTdXVUZEUkN4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFVkJRVVU3WjBKQlExZ3NTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMR05CUVdNc1EwRkJReXhqUVVGakxFTkJRVU03WjBKQlF5OUVMRWxCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1lVRkROMEk3V1VGRlJDeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdXVUZEZGtJc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJSVE5DTEVsQlFVa3NTVUZCU1N4SFFVRkhMRmRCUVZjc1JVRkJSVHRuUWtGRGNFSXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGJrSXNVMEZCVXl4SFFVRkhMRVZCUVVVc1EwRkJRenRoUVVOc1FqdFpRVVZFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRmRCUVZjc1JVRkJSVHRuUWtGRGNFSXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGJrSXNVMEZCVXl4SFFVRkhMRVZCUVVVc1EwRkJRenRoUVVOc1FqdFpRVVZFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1JVRkJSVHRuUWtGRFlpeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMmRDUVVOV0xFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdaMEpCUTFJc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dG5Ra0ZEV2l4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMW83YVVKQlFVMDdaMEpCUTBnc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dG5Ra0ZEV0N4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRE8yZENRVU5TTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1owSkJRMW9zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTmFPMWxCUlVRc1NVRkJTU3huUWtGQlowSXNSVUZCUlN4SFFVRkhMRWRCUVVjc1JVRkJSVHRuUWtGRE1VSXNUVUZCVFR0aFFVTlVPMU5CUTBvN1VVRkZSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUXpGQ0xFTkJRVU03U1VGSlJDeFRRVUZUTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1UwRkJVenRSUVVONlFpeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTFZc1ZVRkJWU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5tTEZkQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRhRUlzWVVGQllTeEhRVUZITEUxQlFVMHNRMEZCUXp0UlFVVjJRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTnNReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRhRUlzVVVGQlVTeERRVUZETEVOQlFVTXNSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJRenRUUVVNeFFqdFJRVVZFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhqUVVGakxFVkJRVVVzUjBGQlJ5eGhRVUZoTEVOQlFVTXNRMEZCUXp0SlFVTjBSQ3hEUVVGRE8wbEJSMFFzVTBGQlV5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRk5CUVZNN1VVRkhOMElzU1VGQlNTeE5RVUZOTEVkQlFVY3NVMEZCVXl4RFFVRkRPMUZCUlhaQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTJ4RExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMR05CUVdNc1EwRkJReXhQUVVGUExFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NZMEZCWXl4RFFVRkRMR0ZCUVdFc1JVRkJSVHRuUWtGRGRFb3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtJc1RVRkJUVHRoUVVOVU8xTkJRMG83VVVGRlJDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSV2hDTEVsQlFVa3NUVUZCVFN4TFFVRkxMRk5CUVZNc1JVRkJSVHRaUVVOMFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRE8xbEJRekZFTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU4yUWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdXVUZET1VJc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xFMUJRVTBzUTBGQlF5eFZRVUZWTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhqUVVGakxFTkJRVU1zVDBGQlR5eERRVUZETzFsQlF6RkVMRTFCUVUwc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRE8xTkJRM3BFTzJGQlFVMDdXVUZEU0N4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExHRkJRV0VzUTBGQlF6dFpRVU4yUWl4aFFVRmhMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eGpRVUZqTEVOQlFVTXNUMEZCVHl4RFFVRkRPMWxCUTNSRUxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRPMWxCUTJoQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOeVFpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VTBGRGFrTTdVVUZGUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4WFFVRlhMRWRCUVVjc1EwRkJReXhqUVVGakxFTkJRVU1zWVVGQllUdFpRVUZGTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUTNCSUxFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExGVkJRVlVzUjBGQlJ5eERRVUZETEdOQlFXTXNRMEZCUXl4aFFVRmhPMWxCUVVVc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU03U1VGRGNFZ3NRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkZSaXhUUVVGVExHZENRVUZuUWl4RFFVRkRMRWxCUVVrN1VVRkRNVUlzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4UFFVRlBMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEdOQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUml4UFFVRlBMRXRCUVVzc1EwRkJRenRKUVVOcVFpeERRVUZETzBsQlJVUXNVMEZCVXl4alFVRmpPMUZCUTI1Q0xFOUJRVThzUTBGQlF5eFZRVUZWTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEJRVU5NTEVOQlFVTTdRVUV4VUVRc2IwTkJNRkJETzBGQlRVUXNVMEZCWjBJc1kwRkJZeXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTzBsQlEzWkRMRWxCUVVrc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU5tTEVsQlFVa3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOa0xFbEJRVWtzVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTm9RaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGYWtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEYmtNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRja0lzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRMlFzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdPMWxCUlhoQ0xFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVVV4UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETzFsQlEyUXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN08xbEJSWGhDTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0TFFVTTNRanRKUVVWRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUTI1RExFbEJRVWtzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1FpeEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRVVVzVTBGQlV6dFJRVU5vUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6VkNPMGxCUlVRc1UwRkJVeXhaUVVGWkxFTkJRVU1zUTBGQlF5eEZRVUZGTEUxQlFVMDdVVUZETTBJc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRk5CUVZNN1dVRkJSU3hQUVVGUE8xRkJRM3BETEVsQlFVa3NUVUZCVFN4RlFVRkZPMWxCUTFJc1VVRkJVU3hGUVVGRkxFTkJRVU03V1VGRFdDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVMEZET1VJN1VVRkRSQ3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJRenRSUVVNeFFpeE5RVUZOTEVOQlFVTXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRia01zU1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU0zUWl4SlFVRkpMRU5CUVVNc1VVRkJVVHRaUVVGRkxFOUJRVTg3VVVGRmRFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGRFTXNXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0VFFVTndRenRKUVVOTUxFTkJRVU03U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTnNRaXhEUVVGRE8wRkJOVU5FTEhkRFFUUkRReUo5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIHBvd2VyZ3JhcGggPSByZXF1aXJlKFwiLi9wb3dlcmdyYXBoXCIpO1xyXG52YXIgbGlua2xlbmd0aHNfMSA9IHJlcXVpcmUoXCIuL2xpbmtsZW5ndGhzXCIpO1xyXG52YXIgZGVzY2VudF8xID0gcmVxdWlyZShcIi4vZGVzY2VudFwiKTtcclxudmFyIHJlY3RhbmdsZV8xID0gcmVxdWlyZShcIi4vcmVjdGFuZ2xlXCIpO1xyXG52YXIgc2hvcnRlc3RwYXRoc18xID0gcmVxdWlyZShcIi4vc2hvcnRlc3RwYXRoc1wiKTtcclxudmFyIGdlb21fMSA9IHJlcXVpcmUoXCIuL2dlb21cIik7XHJcbnZhciBoYW5kbGVkaXNjb25uZWN0ZWRfMSA9IHJlcXVpcmUoXCIuL2hhbmRsZWRpc2Nvbm5lY3RlZFwiKTtcclxudmFyIEV2ZW50VHlwZTtcclxuKGZ1bmN0aW9uIChFdmVudFR5cGUpIHtcclxuICAgIEV2ZW50VHlwZVtFdmVudFR5cGVbXCJzdGFydFwiXSA9IDBdID0gXCJzdGFydFwiO1xyXG4gICAgRXZlbnRUeXBlW0V2ZW50VHlwZVtcInRpY2tcIl0gPSAxXSA9IFwidGlja1wiO1xyXG4gICAgRXZlbnRUeXBlW0V2ZW50VHlwZVtcImVuZFwiXSA9IDJdID0gXCJlbmRcIjtcclxufSkoRXZlbnRUeXBlID0gZXhwb3J0cy5FdmVudFR5cGUgfHwgKGV4cG9ydHMuRXZlbnRUeXBlID0ge30pKTtcclxuO1xyXG5mdW5jdGlvbiBpc0dyb3VwKGcpIHtcclxuICAgIHJldHVybiB0eXBlb2YgZy5sZWF2ZXMgIT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBnLmdyb3VwcyAhPT0gJ3VuZGVmaW5lZCc7XHJcbn1cclxudmFyIExheW91dCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBMYXlvdXQoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICB0aGlzLl9jYW52YXNTaXplID0gWzEsIDFdO1xyXG4gICAgICAgIHRoaXMuX2xpbmtEaXN0YW5jZSA9IDIwO1xyXG4gICAgICAgIHRoaXMuX2RlZmF1bHROb2RlU2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMuX2xpbmtMZW5ndGhDYWxjdWxhdG9yID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9saW5rVHlwZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fYXZvaWRPdmVybGFwcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZURpc2Nvbm5lY3RlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fcnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX25vZGVzID0gW107XHJcbiAgICAgICAgdGhpcy5fZ3JvdXBzID0gW107XHJcbiAgICAgICAgdGhpcy5fcm9vdEdyb3VwID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9saW5rcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2NvbnN0cmFpbnRzID0gW107XHJcbiAgICAgICAgdGhpcy5fZGlzdGFuY2VNYXRyaXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2Rlc2NlbnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2RpcmVjdGVkTGlua0NvbnN0cmFpbnRzID0gbnVsbDtcclxuICAgICAgICB0aGlzLl90aHJlc2hvbGQgPSAwLjAxO1xyXG4gICAgICAgIHRoaXMuX3Zpc2liaWxpdHlHcmFwaCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fZ3JvdXBDb21wYWN0bmVzcyA9IDFlLTY7XHJcbiAgICAgICAgdGhpcy5ldmVudCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5saW5rQWNjZXNzb3IgPSB7XHJcbiAgICAgICAgICAgIGdldFNvdXJjZUluZGV4OiBMYXlvdXQuZ2V0U291cmNlSW5kZXgsXHJcbiAgICAgICAgICAgIGdldFRhcmdldEluZGV4OiBMYXlvdXQuZ2V0VGFyZ2V0SW5kZXgsXHJcbiAgICAgICAgICAgIHNldExlbmd0aDogTGF5b3V0LnNldExpbmtMZW5ndGgsXHJcbiAgICAgICAgICAgIGdldFR5cGU6IGZ1bmN0aW9uIChsKSB7IHJldHVybiB0eXBlb2YgX3RoaXMuX2xpbmtUeXBlID09PSBcImZ1bmN0aW9uXCIgPyBfdGhpcy5fbGlua1R5cGUobCkgOiAwOyB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIExheW91dC5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZSwgbGlzdGVuZXIpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZXZlbnQpXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQgPSB7fTtcclxuICAgICAgICBpZiAodHlwZW9mIGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRbRXZlbnRUeXBlW2VdXSA9IGxpc3RlbmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudFtlXSA9IGxpc3RlbmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGlmICh0aGlzLmV2ZW50ICYmIHR5cGVvZiB0aGlzLmV2ZW50W2UudHlwZV0gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRbZS50eXBlXShlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5raWNrID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHdoaWxlICghdGhpcy50aWNrKCkpXHJcbiAgICAgICAgICAgIDtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnRpY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FscGhhIDwgdGhpcy5fdGhyZXNob2xkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyKHsgdHlwZTogRXZlbnRUeXBlLmVuZCwgYWxwaGE6IHRoaXMuX2FscGhhID0gMCwgc3RyZXNzOiB0aGlzLl9sYXN0U3RyZXNzIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLl9ub2Rlcy5sZW5ndGgsIG0gPSB0aGlzLl9saW5rcy5sZW5ndGg7XHJcbiAgICAgICAgdmFyIG8sIGk7XHJcbiAgICAgICAgdGhpcy5fZGVzY2VudC5sb2Nrcy5jbGVhcigpO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcclxuICAgICAgICAgICAgbyA9IHRoaXMuX25vZGVzW2ldO1xyXG4gICAgICAgICAgICBpZiAoby5maXhlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvLnB4ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2Ygby5weSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBvLnB4ID0gby54O1xyXG4gICAgICAgICAgICAgICAgICAgIG8ucHkgPSBvLnk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IFtvLnB4LCBvLnB5XTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQubG9ja3MuYWRkKGksIHApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzMSA9IHRoaXMuX2Rlc2NlbnQucnVuZ2VLdXR0YSgpO1xyXG4gICAgICAgIGlmIChzMSA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hbHBoYSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9sYXN0U3RyZXNzICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLl9hbHBoYSA9IHMxO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9sYXN0U3RyZXNzID0gczE7XHJcbiAgICAgICAgdGhpcy51cGRhdGVOb2RlUG9zaXRpb25zKCk7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyKHsgdHlwZTogRXZlbnRUeXBlLnRpY2ssIGFscGhhOiB0aGlzLl9hbHBoYSwgc3RyZXNzOiB0aGlzLl9sYXN0U3RyZXNzIH0pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnVwZGF0ZU5vZGVQb3NpdGlvbnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHggPSB0aGlzLl9kZXNjZW50LnhbMF0sIHkgPSB0aGlzLl9kZXNjZW50LnhbMV07XHJcbiAgICAgICAgdmFyIG8sIGkgPSB0aGlzLl9ub2Rlcy5sZW5ndGg7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICBvID0gdGhpcy5fbm9kZXNbaV07XHJcbiAgICAgICAgICAgIG8ueCA9IHhbaV07XHJcbiAgICAgICAgICAgIG8ueSA9IHlbaV07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUubm9kZXMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIGlmICghdikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fbm9kZXMubGVuZ3RoID09PSAwICYmIHRoaXMuX2xpbmtzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHZhciBuID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xpbmtzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5tYXgobiwgbC5zb3VyY2UsIGwudGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZXMgPSBuZXcgQXJyYXkoKytuKTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9kZXNbaV0gPSB7fTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX25vZGVzID0gdjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmdyb3VwcyA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoIXgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ncm91cHM7XHJcbiAgICAgICAgdGhpcy5fZ3JvdXBzID0geDtcclxuICAgICAgICB0aGlzLl9yb290R3JvdXAgPSB7fTtcclxuICAgICAgICB0aGlzLl9ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZykge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGcucGFkZGluZyA9PT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgICAgICAgICAgIGcucGFkZGluZyA9IDE7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZy5sZWF2ZXMgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgIGcubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZy5sZWF2ZXNbaV0gPSBfdGhpcy5fbm9kZXNbdl0pLnBhcmVudCA9IGc7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGcuZ3JvdXBzICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgICAgICBnLmdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnaSwgaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZ2kgPT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZy5ncm91cHNbaV0gPSBfdGhpcy5fZ3JvdXBzW2dpXSkucGFyZW50ID0gZztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fcm9vdEdyb3VwLmxlYXZlcyA9IHRoaXMuX25vZGVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gdHlwZW9mIHYucGFyZW50ID09PSAndW5kZWZpbmVkJzsgfSk7XHJcbiAgICAgICAgdGhpcy5fcm9vdEdyb3VwLmdyb3VwcyA9IHRoaXMuX2dyb3Vwcy5maWx0ZXIoZnVuY3Rpb24gKGcpIHsgcmV0dXJuIHR5cGVvZiBnLnBhcmVudCA9PT0gJ3VuZGVmaW5lZCc7IH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUucG93ZXJHcmFwaEdyb3VwcyA9IGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgdmFyIGcgPSBwb3dlcmdyYXBoLmdldEdyb3Vwcyh0aGlzLl9ub2RlcywgdGhpcy5fbGlua3MsIHRoaXMubGlua0FjY2Vzc29yLCB0aGlzLl9yb290R3JvdXApO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzKGcuZ3JvdXBzKTtcclxuICAgICAgICBmKGcpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuYXZvaWRPdmVybGFwcyA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYXZvaWRPdmVybGFwcztcclxuICAgICAgICB0aGlzLl9hdm9pZE92ZXJsYXBzID0gdjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmhhbmRsZURpc2Nvbm5lY3RlZCA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faGFuZGxlRGlzY29ubmVjdGVkO1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZURpc2Nvbm5lY3RlZCA9IHY7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5mbG93TGF5b3V0ID0gZnVuY3Rpb24gKGF4aXMsIG1pblNlcGFyYXRpb24pIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpXHJcbiAgICAgICAgICAgIGF4aXMgPSAneSc7XHJcbiAgICAgICAgdGhpcy5fZGlyZWN0ZWRMaW5rQ29uc3RyYWludHMgPSB7XHJcbiAgICAgICAgICAgIGF4aXM6IGF4aXMsXHJcbiAgICAgICAgICAgIGdldE1pblNlcGFyYXRpb246IHR5cGVvZiBtaW5TZXBhcmF0aW9uID09PSAnbnVtYmVyJyA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1pblNlcGFyYXRpb247IH0gOiBtaW5TZXBhcmF0aW9uXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmxpbmtzID0gZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5rcztcclxuICAgICAgICB0aGlzLl9saW5rcyA9IHg7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5jb25zdHJhaW50cyA9IGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RyYWludHM7XHJcbiAgICAgICAgdGhpcy5fY29uc3RyYWludHMgPSBjO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuZGlzdGFuY2VNYXRyaXggPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3RhbmNlTWF0cml4O1xyXG4gICAgICAgIHRoaXMuX2Rpc3RhbmNlTWF0cml4ID0gZDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgIGlmICgheClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbnZhc1NpemU7XHJcbiAgICAgICAgdGhpcy5fY2FudmFzU2l6ZSA9IHg7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5kZWZhdWx0Tm9kZVNpemUgPSBmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgIGlmICgheClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHROb2RlU2l6ZTtcclxuICAgICAgICB0aGlzLl9kZWZhdWx0Tm9kZVNpemUgPSB4O1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuZ3JvdXBDb21wYWN0bmVzcyA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgaWYgKCF4KVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ3JvdXBDb21wYWN0bmVzcztcclxuICAgICAgICB0aGlzLl9ncm91cENvbXBhY3RuZXNzID0geDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmxpbmtEaXN0YW5jZSA9IGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgaWYgKCF4KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9saW5rRGlzdGFuY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2xpbmtEaXN0YW5jZSA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogK3g7XHJcbiAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IgPSBudWxsO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUubGlua1R5cGUgPSBmdW5jdGlvbiAoZikge1xyXG4gICAgICAgIHRoaXMuX2xpbmtUeXBlID0gZjtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmNvbnZlcmdlbmNlVGhyZXNob2xkID0gZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICBpZiAoIXgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XHJcbiAgICAgICAgdGhpcy5fdGhyZXNob2xkID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiAreDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmFscGhhID0gZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hbHBoYTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgeCA9ICt4O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fYWxwaGEpIHtcclxuICAgICAgICAgICAgICAgIGlmICh4ID4gMClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbHBoYSA9IHg7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxwaGEgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3J1bm5pbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ydW5uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoeyB0eXBlOiBFdmVudFR5cGUuc3RhcnQsIGFscGhhOiB0aGlzLl9hbHBoYSA9IHggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5raWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5wcm90b3R5cGUuZ2V0TGlua0xlbmd0aCA9IGZ1bmN0aW9uIChsaW5rKSB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9saW5rRGlzdGFuY2UgPT09IFwiZnVuY3Rpb25cIiA/ICsodGhpcy5fbGlua0Rpc3RhbmNlKGxpbmspKSA6IHRoaXMuX2xpbmtEaXN0YW5jZTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQuc2V0TGlua0xlbmd0aCA9IGZ1bmN0aW9uIChsaW5rLCBsZW5ndGgpIHtcclxuICAgICAgICBsaW5rLmxlbmd0aCA9IGxlbmd0aDtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmdldExpbmtUeXBlID0gZnVuY3Rpb24gKGxpbmspIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX2xpbmtUeXBlID09PSBcImZ1bmN0aW9uXCIgPyB0aGlzLl9saW5rVHlwZShsaW5rKSA6IDA7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5zeW1tZXRyaWNEaWZmTGlua0xlbmd0aHMgPSBmdW5jdGlvbiAoaWRlYWxMZW5ndGgsIHcpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZShmdW5jdGlvbiAobCkgeyByZXR1cm4gaWRlYWxMZW5ndGggKiBsLmxlbmd0aDsgfSk7XHJcbiAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBsaW5rbGVuZ3Roc18xLnN5bW1ldHJpY0RpZmZMaW5rTGVuZ3RocyhfdGhpcy5fbGlua3MsIF90aGlzLmxpbmtBY2Nlc3Nvciwgdyk7IH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5qYWNjYXJkTGlua0xlbmd0aHMgPSBmdW5jdGlvbiAoaWRlYWxMZW5ndGgsIHcpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IDE7IH1cclxuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZShmdW5jdGlvbiAobCkgeyByZXR1cm4gaWRlYWxMZW5ndGggKiBsLmxlbmd0aDsgfSk7XHJcbiAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBsaW5rbGVuZ3Roc18xLmphY2NhcmRMaW5rTGVuZ3RocyhfdGhpcy5fbGlua3MsIF90aGlzLmxpbmtBY2Nlc3Nvciwgdyk7IH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uIChpbml0aWFsVW5jb25zdHJhaW5lZEl0ZXJhdGlvbnMsIGluaXRpYWxVc2VyQ29uc3RyYWludEl0ZXJhdGlvbnMsIGluaXRpYWxBbGxDb25zdHJhaW50c0l0ZXJhdGlvbnMsIGdyaWRTbmFwSXRlcmF0aW9ucywga2VlcFJ1bm5pbmcsIGNlbnRlckdyYXBoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoaW5pdGlhbFVuY29uc3RyYWluZWRJdGVyYXRpb25zID09PSB2b2lkIDApIHsgaW5pdGlhbFVuY29uc3RyYWluZWRJdGVyYXRpb25zID0gMDsgfVxyXG4gICAgICAgIGlmIChpbml0aWFsVXNlckNvbnN0cmFpbnRJdGVyYXRpb25zID09PSB2b2lkIDApIHsgaW5pdGlhbFVzZXJDb25zdHJhaW50SXRlcmF0aW9ucyA9IDA7IH1cclxuICAgICAgICBpZiAoaW5pdGlhbEFsbENvbnN0cmFpbnRzSXRlcmF0aW9ucyA9PT0gdm9pZCAwKSB7IGluaXRpYWxBbGxDb25zdHJhaW50c0l0ZXJhdGlvbnMgPSAwOyB9XHJcbiAgICAgICAgaWYgKGdyaWRTbmFwSXRlcmF0aW9ucyA9PT0gdm9pZCAwKSB7IGdyaWRTbmFwSXRlcmF0aW9ucyA9IDA7IH1cclxuICAgICAgICBpZiAoa2VlcFJ1bm5pbmcgPT09IHZvaWQgMCkgeyBrZWVwUnVubmluZyA9IHRydWU7IH1cclxuICAgICAgICBpZiAoY2VudGVyR3JhcGggPT09IHZvaWQgMCkgeyBjZW50ZXJHcmFwaCA9IHRydWU7IH1cclxuICAgICAgICB2YXIgaSwgaiwgbiA9IHRoaXMubm9kZXMoKS5sZW5ndGgsIE4gPSBuICsgMiAqIHRoaXMuX2dyb3Vwcy5sZW5ndGgsIG0gPSB0aGlzLl9saW5rcy5sZW5ndGgsIHcgPSB0aGlzLl9jYW52YXNTaXplWzBdLCBoID0gdGhpcy5fY2FudmFzU2l6ZVsxXTtcclxuICAgICAgICB2YXIgeCA9IG5ldyBBcnJheShOKSwgeSA9IG5ldyBBcnJheShOKTtcclxuICAgICAgICB2YXIgRyA9IG51bGw7XHJcbiAgICAgICAgdmFyIGFvID0gdGhpcy5fYXZvaWRPdmVybGFwcztcclxuICAgICAgICB0aGlzLl9ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBpKSB7XHJcbiAgICAgICAgICAgIHYuaW5kZXggPSBpO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYueCA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIHYueCA9IHcgLyAyLCB2LnkgPSBoIC8gMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB4W2ldID0gdi54LCB5W2ldID0gdi55O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLl9saW5rTGVuZ3RoQ2FsY3VsYXRvcilcclxuICAgICAgICAgICAgdGhpcy5fbGlua0xlbmd0aENhbGN1bGF0b3IoKTtcclxuICAgICAgICB2YXIgZGlzdGFuY2VzO1xyXG4gICAgICAgIGlmICh0aGlzLl9kaXN0YW5jZU1hdHJpeCkge1xyXG4gICAgICAgICAgICBkaXN0YW5jZXMgPSB0aGlzLl9kaXN0YW5jZU1hdHJpeDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGRpc3RhbmNlcyA9IChuZXcgc2hvcnRlc3RwYXRoc18xLkNhbGN1bGF0b3IoTiwgdGhpcy5fbGlua3MsIExheW91dC5nZXRTb3VyY2VJbmRleCwgTGF5b3V0LmdldFRhcmdldEluZGV4LCBmdW5jdGlvbiAobCkgeyByZXR1cm4gX3RoaXMuZ2V0TGlua0xlbmd0aChsKTsgfSkpLkRpc3RhbmNlTWF0cml4KCk7XHJcbiAgICAgICAgICAgIEcgPSBkZXNjZW50XzEuRGVzY2VudC5jcmVhdGVTcXVhcmVNYXRyaXgoTiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gMjsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xpbmtzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbC5zb3VyY2UgPT0gXCJudW1iZXJcIilcclxuICAgICAgICAgICAgICAgICAgICBsLnNvdXJjZSA9IF90aGlzLl9ub2Rlc1tsLnNvdXJjZV07XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGwudGFyZ2V0ID09IFwibnVtYmVyXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgbC50YXJnZXQgPSBfdGhpcy5fbm9kZXNbbC50YXJnZXRdO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5fbGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHUgPSBMYXlvdXQuZ2V0U291cmNlSW5kZXgoZSksIHYgPSBMYXlvdXQuZ2V0VGFyZ2V0SW5kZXgoZSk7XHJcbiAgICAgICAgICAgICAgICBHW3VdW3ZdID0gR1t2XVt1XSA9IGUud2VpZ2h0IHx8IDE7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgRCA9IGRlc2NlbnRfMS5EZXNjZW50LmNyZWF0ZVNxdWFyZU1hdHJpeChOLCBmdW5jdGlvbiAoaSwgaikge1xyXG4gICAgICAgICAgICByZXR1cm4gZGlzdGFuY2VzW2ldW2pdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLl9yb290R3JvdXAgJiYgdHlwZW9mIHRoaXMuX3Jvb3RHcm91cC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHZhciBpID0gbjtcclxuICAgICAgICAgICAgdmFyIGFkZEF0dHJhY3Rpb24gPSBmdW5jdGlvbiAoaSwgaiwgc3RyZW5ndGgsIGlkZWFsRGlzdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIEdbaV1bal0gPSBHW2pdW2ldID0gc3RyZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBEW2ldW2pdID0gRFtqXVtpXSA9IGlkZWFsRGlzdGFuY2U7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnKSB7XHJcbiAgICAgICAgICAgICAgICBhZGRBdHRyYWN0aW9uKGksIGkgKyAxLCBfdGhpcy5fZ3JvdXBDb21wYWN0bmVzcywgMC4xKTtcclxuICAgICAgICAgICAgICAgIHhbaV0gPSAwLCB5W2krK10gPSAwO1xyXG4gICAgICAgICAgICAgICAgeFtpXSA9IDAsIHlbaSsrXSA9IDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3RHcm91cCA9IHsgbGVhdmVzOiB0aGlzLl9ub2RlcywgZ3JvdXBzOiBbXSB9O1xyXG4gICAgICAgIHZhciBjdXJDb25zdHJhaW50cyA9IHRoaXMuX2NvbnN0cmFpbnRzIHx8IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLl9kaXJlY3RlZExpbmtDb25zdHJhaW50cykge1xyXG4gICAgICAgICAgICB0aGlzLmxpbmtBY2Nlc3Nvci5nZXRNaW5TZXBhcmF0aW9uID0gdGhpcy5fZGlyZWN0ZWRMaW5rQ29uc3RyYWludHMuZ2V0TWluU2VwYXJhdGlvbjtcclxuICAgICAgICAgICAgY3VyQ29uc3RyYWludHMgPSBjdXJDb25zdHJhaW50cy5jb25jYXQobGlua2xlbmd0aHNfMS5nZW5lcmF0ZURpcmVjdGVkRWRnZUNvbnN0cmFpbnRzKG4sIHRoaXMuX2xpbmtzLCB0aGlzLl9kaXJlY3RlZExpbmtDb25zdHJhaW50cy5heGlzLCAodGhpcy5saW5rQWNjZXNzb3IpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXZvaWRPdmVybGFwcyhmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5fZGVzY2VudCA9IG5ldyBkZXNjZW50XzEuRGVzY2VudChbeCwgeV0sIEQpO1xyXG4gICAgICAgIHRoaXMuX2Rlc2NlbnQubG9ja3MuY2xlYXIoKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xyXG4gICAgICAgICAgICB2YXIgbyA9IHRoaXMuX25vZGVzW2ldO1xyXG4gICAgICAgICAgICBpZiAoby5maXhlZCkge1xyXG4gICAgICAgICAgICAgICAgby5weCA9IG8ueDtcclxuICAgICAgICAgICAgICAgIG8ucHkgPSBvLnk7XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IFtvLngsIG8ueV07XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZXNjZW50LmxvY2tzLmFkZChpLCBwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9kZXNjZW50LnRocmVzaG9sZCA9IHRoaXMuX3RocmVzaG9sZDtcclxuICAgICAgICB0aGlzLmluaXRpYWxMYXlvdXQoaW5pdGlhbFVuY29uc3RyYWluZWRJdGVyYXRpb25zLCB4LCB5KTtcclxuICAgICAgICBpZiAoY3VyQ29uc3RyYWludHMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5wcm9qZWN0ID0gbmV3IHJlY3RhbmdsZV8xLlByb2plY3Rpb24odGhpcy5fbm9kZXMsIHRoaXMuX2dyb3VwcywgdGhpcy5fcm9vdEdyb3VwLCBjdXJDb25zdHJhaW50cykucHJvamVjdEZ1bmN0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuX2Rlc2NlbnQucnVuKGluaXRpYWxVc2VyQ29uc3RyYWludEl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuc2VwYXJhdGVPdmVybGFwcGluZ0NvbXBvbmVudHModywgaCwgY2VudGVyR3JhcGgpO1xyXG4gICAgICAgIHRoaXMuYXZvaWRPdmVybGFwcyhhbyk7XHJcbiAgICAgICAgaWYgKGFvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHsgdi54ID0geFtpXSwgdi55ID0geVtpXTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQucHJvamVjdCA9IG5ldyByZWN0YW5nbGVfMS5Qcm9qZWN0aW9uKHRoaXMuX25vZGVzLCB0aGlzLl9ncm91cHMsIHRoaXMuX3Jvb3RHcm91cCwgY3VyQ29uc3RyYWludHMsIHRydWUpLnByb2plY3RGdW5jdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5fbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkgeyB4W2ldID0gdi54LCB5W2ldID0gdi55OyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZGVzY2VudC5HID0gRztcclxuICAgICAgICB0aGlzLl9kZXNjZW50LnJ1bihpbml0aWFsQWxsQ29uc3RyYWludHNJdGVyYXRpb25zKTtcclxuICAgICAgICBpZiAoZ3JpZFNuYXBJdGVyYXRpb25zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQuc25hcFN0cmVuZ3RoID0gMTAwMDtcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5zbmFwR3JpZFNpemUgPSB0aGlzLl9ub2Rlc1swXS53aWR0aDtcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5udW1HcmlkU25hcE5vZGVzID0gbjtcclxuICAgICAgICAgICAgdGhpcy5fZGVzY2VudC5zY2FsZVNuYXBCeU1heEggPSBuICE9IE47XHJcbiAgICAgICAgICAgIHZhciBHMCA9IGRlc2NlbnRfMS5EZXNjZW50LmNyZWF0ZVNxdWFyZU1hdHJpeChOLCBmdW5jdGlvbiAoaSwgaikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGkgPj0gbiB8fCBqID49IG4pXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdbaV1bal07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQuRyA9IEcwO1xyXG4gICAgICAgICAgICB0aGlzLl9kZXNjZW50LnJ1bihncmlkU25hcEl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZU5vZGVQb3NpdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNlcGFyYXRlT3ZlcmxhcHBpbmdDb21wb25lbnRzKHcsIGgsIGNlbnRlckdyYXBoKTtcclxuICAgICAgICByZXR1cm4ga2VlcFJ1bm5pbmcgPyB0aGlzLnJlc3VtZSgpIDogdGhpcztcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLmluaXRpYWxMYXlvdXQgPSBmdW5jdGlvbiAoaXRlcmF0aW9ucywgeCwgeSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9ncm91cHMubGVuZ3RoID4gMCAmJiBpdGVyYXRpb25zID4gMCkge1xyXG4gICAgICAgICAgICB2YXIgbiA9IHRoaXMuX25vZGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgdmFyIGVkZ2VzID0gdGhpcy5fbGlua3MubWFwKGZ1bmN0aW9uIChlKSB7IHJldHVybiAoeyBzb3VyY2U6IGUuc291cmNlLmluZGV4LCB0YXJnZXQ6IGUudGFyZ2V0LmluZGV4IH0pOyB9KTtcclxuICAgICAgICAgICAgdmFyIHZzID0gdGhpcy5fbm9kZXMubWFwKGZ1bmN0aW9uICh2KSB7IHJldHVybiAoeyBpbmRleDogdi5pbmRleCB9KTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnLCBpKSB7XHJcbiAgICAgICAgICAgICAgICB2cy5wdXNoKHsgaW5kZXg6IGcuaW5kZXggPSBuICsgaSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2dyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnLCBpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGcubGVhdmVzICE9PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgICAgICAgICBnLmxlYXZlcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7IHJldHVybiBlZGdlcy5wdXNoKHsgc291cmNlOiBnLmluZGV4LCB0YXJnZXQ6IHYuaW5kZXggfSk7IH0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBnLmdyb3VwcyAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgICAgICAgICAgZy5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZ2cpIHsgcmV0dXJuIGVkZ2VzLnB1c2goeyBzb3VyY2U6IGcuaW5kZXgsIHRhcmdldDogZ2cuaW5kZXggfSk7IH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbmV3IExheW91dCgpXHJcbiAgICAgICAgICAgICAgICAuc2l6ZSh0aGlzLnNpemUoKSlcclxuICAgICAgICAgICAgICAgIC5ub2Rlcyh2cylcclxuICAgICAgICAgICAgICAgIC5saW5rcyhlZGdlcylcclxuICAgICAgICAgICAgICAgIC5hdm9pZE92ZXJsYXBzKGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgLmxpbmtEaXN0YW5jZSh0aGlzLmxpbmtEaXN0YW5jZSgpKVxyXG4gICAgICAgICAgICAgICAgLnN5bW1ldHJpY0RpZmZMaW5rTGVuZ3Rocyg1KVxyXG4gICAgICAgICAgICAgICAgLmNvbnZlcmdlbmNlVGhyZXNob2xkKDFlLTQpXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoaXRlcmF0aW9ucywgMCwgMCwgMCwgZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLl9ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgICAgICB4W3YuaW5kZXhdID0gdnNbdi5pbmRleF0ueDtcclxuICAgICAgICAgICAgICAgIHlbdi5pbmRleF0gPSB2c1t2LmluZGV4XS55O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rlc2NlbnQucnVuKGl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnNlcGFyYXRlT3ZlcmxhcHBpbmdDb21wb25lbnRzID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIGNlbnRlckdyYXBoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoY2VudGVyR3JhcGggPT09IHZvaWQgMCkgeyBjZW50ZXJHcmFwaCA9IHRydWU7IH1cclxuICAgICAgICBpZiAoIXRoaXMuX2Rpc3RhbmNlTWF0cml4ICYmIHRoaXMuX2hhbmRsZURpc2Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICB2YXIgeF8xID0gdGhpcy5fZGVzY2VudC54WzBdLCB5XzEgPSB0aGlzLl9kZXNjZW50LnhbMV07XHJcbiAgICAgICAgICAgIHRoaXMuX25vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHsgdi54ID0geF8xW2ldLCB2LnkgPSB5XzFbaV07IH0pO1xyXG4gICAgICAgICAgICB2YXIgZ3JhcGhzID0gaGFuZGxlZGlzY29ubmVjdGVkXzEuc2VwYXJhdGVHcmFwaHModGhpcy5fbm9kZXMsIHRoaXMuX2xpbmtzKTtcclxuICAgICAgICAgICAgaGFuZGxlZGlzY29ubmVjdGVkXzEuYXBwbHlQYWNraW5nKGdyYXBocywgd2lkdGgsIGhlaWdodCwgdGhpcy5fZGVmYXVsdE5vZGVTaXplLCAxLCBjZW50ZXJHcmFwaCk7XHJcbiAgICAgICAgICAgIHRoaXMuX25vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLl9kZXNjZW50LnhbMF1baV0gPSB2LngsIF90aGlzLl9kZXNjZW50LnhbMV1baV0gPSB2Lnk7XHJcbiAgICAgICAgICAgICAgICBpZiAodi5ib3VuZHMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2LmJvdW5kcy5zZXRYQ2VudHJlKHYueCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5ib3VuZHMuc2V0WUNlbnRyZSh2LnkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxwaGEoMC4xKTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxwaGEoMCk7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnByb3RvdHlwZS5wcmVwYXJlRWRnZVJvdXRpbmcgPSBmdW5jdGlvbiAobm9kZU1hcmdpbikge1xyXG4gICAgICAgIGlmIChub2RlTWFyZ2luID09PSB2b2lkIDApIHsgbm9kZU1hcmdpbiA9IDA7IH1cclxuICAgICAgICB0aGlzLl92aXNpYmlsaXR5R3JhcGggPSBuZXcgZ2VvbV8xLlRhbmdlbnRWaXNpYmlsaXR5R3JhcGgodGhpcy5fbm9kZXMubWFwKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2LmJvdW5kcy5pbmZsYXRlKC1ub2RlTWFyZ2luKS52ZXJ0aWNlcygpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQucHJvdG90eXBlLnJvdXRlRWRnZSA9IGZ1bmN0aW9uIChlZGdlLCBhaCwgZHJhdykge1xyXG4gICAgICAgIGlmIChhaCA9PT0gdm9pZCAwKSB7IGFoID0gNTsgfVxyXG4gICAgICAgIHZhciBsaW5lRGF0YSA9IFtdO1xyXG4gICAgICAgIHZhciB2ZzIgPSBuZXcgZ2VvbV8xLlRhbmdlbnRWaXNpYmlsaXR5R3JhcGgodGhpcy5fdmlzaWJpbGl0eUdyYXBoLlAsIHsgVjogdGhpcy5fdmlzaWJpbGl0eUdyYXBoLlYsIEU6IHRoaXMuX3Zpc2liaWxpdHlHcmFwaC5FIH0pLCBwb3J0MSA9IHsgeDogZWRnZS5zb3VyY2UueCwgeTogZWRnZS5zb3VyY2UueSB9LCBwb3J0MiA9IHsgeDogZWRnZS50YXJnZXQueCwgeTogZWRnZS50YXJnZXQueSB9LCBzdGFydCA9IHZnMi5hZGRQb2ludChwb3J0MSwgZWRnZS5zb3VyY2UuaW5kZXgpLCBlbmQgPSB2ZzIuYWRkUG9pbnQocG9ydDIsIGVkZ2UudGFyZ2V0LmluZGV4KTtcclxuICAgICAgICB2ZzIuYWRkRWRnZUlmVmlzaWJsZShwb3J0MSwgcG9ydDIsIGVkZ2Uuc291cmNlLmluZGV4LCBlZGdlLnRhcmdldC5pbmRleCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBkcmF3ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBkcmF3KHZnMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzb3VyY2VJbmQgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zb3VyY2UuaWQ7IH0sIHRhcmdldEluZCA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRhcmdldC5pZDsgfSwgbGVuZ3RoID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUubGVuZ3RoKCk7IH0sIHNwQ2FsYyA9IG5ldyBzaG9ydGVzdHBhdGhzXzEuQ2FsY3VsYXRvcih2ZzIuVi5sZW5ndGgsIHZnMi5FLCBzb3VyY2VJbmQsIHRhcmdldEluZCwgbGVuZ3RoKSwgc2hvcnRlc3RQYXRoID0gc3BDYWxjLlBhdGhGcm9tTm9kZVRvTm9kZShzdGFydC5pZCwgZW5kLmlkKTtcclxuICAgICAgICBpZiAoc2hvcnRlc3RQYXRoLmxlbmd0aCA9PT0gMSB8fCBzaG9ydGVzdFBhdGgubGVuZ3RoID09PSB2ZzIuVi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdmFyIHJvdXRlID0gcmVjdGFuZ2xlXzEubWFrZUVkZ2VCZXR3ZWVuKGVkZ2Uuc291cmNlLmlubmVyQm91bmRzLCBlZGdlLnRhcmdldC5pbm5lckJvdW5kcywgYWgpO1xyXG4gICAgICAgICAgICBsaW5lRGF0YSA9IFtyb3V0ZS5zb3VyY2VJbnRlcnNlY3Rpb24sIHJvdXRlLmFycm93U3RhcnRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIG4gPSBzaG9ydGVzdFBhdGgubGVuZ3RoIC0gMiwgcCA9IHZnMi5WW3Nob3J0ZXN0UGF0aFtuXV0ucCwgcSA9IHZnMi5WW3Nob3J0ZXN0UGF0aFswXV0ucCwgbGluZURhdGEgPSBbZWRnZS5zb3VyY2UuaW5uZXJCb3VuZHMucmF5SW50ZXJzZWN0aW9uKHAueCwgcC55KV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBuOyBpID49IDA7IC0taSlcclxuICAgICAgICAgICAgICAgIGxpbmVEYXRhLnB1c2godmcyLlZbc2hvcnRlc3RQYXRoW2ldXS5wKTtcclxuICAgICAgICAgICAgbGluZURhdGEucHVzaChyZWN0YW5nbGVfMS5tYWtlRWRnZVRvKHEsIGVkZ2UudGFyZ2V0LmlubmVyQm91bmRzLCBhaCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGluZURhdGE7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmdldFNvdXJjZUluZGV4ID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIGUuc291cmNlID09PSAnbnVtYmVyJyA/IGUuc291cmNlIDogZS5zb3VyY2UuaW5kZXg7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmdldFRhcmdldEluZGV4ID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIGUudGFyZ2V0ID09PSAnbnVtYmVyJyA/IGUudGFyZ2V0IDogZS50YXJnZXQuaW5kZXg7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmxpbmtJZCA9IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgcmV0dXJuIExheW91dC5nZXRTb3VyY2VJbmRleChlKSArIFwiLVwiICsgTGF5b3V0LmdldFRhcmdldEluZGV4KGUpO1xyXG4gICAgfTtcclxuICAgIExheW91dC5kcmFnU3RhcnQgPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmIChpc0dyb3VwKGQpKSB7XHJcbiAgICAgICAgICAgIExheW91dC5zdG9yZU9mZnNldChkLCBMYXlvdXQuZHJhZ09yaWdpbihkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBMYXlvdXQuc3RvcE5vZGUoZCk7XHJcbiAgICAgICAgICAgIGQuZml4ZWQgfD0gMjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnN0b3BOb2RlID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2LnB4ID0gdi54O1xyXG4gICAgICAgIHYucHkgPSB2Lnk7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LnN0b3JlT2Zmc2V0ID0gZnVuY3Rpb24gKGQsIG9yaWdpbikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZC5sZWF2ZXMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGQubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgIHYuZml4ZWQgfD0gMjtcclxuICAgICAgICAgICAgICAgIExheW91dC5zdG9wTm9kZSh2KTtcclxuICAgICAgICAgICAgICAgIHYuX2RyYWdHcm91cE9mZnNldFggPSB2LnggLSBvcmlnaW4ueDtcclxuICAgICAgICAgICAgICAgIHYuX2RyYWdHcm91cE9mZnNldFkgPSB2LnkgLSBvcmlnaW4ueTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgZC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGQuZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGcpIHsgcmV0dXJuIExheW91dC5zdG9yZU9mZnNldChnLCBvcmlnaW4pOyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0LmRyYWdPcmlnaW4gPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmIChpc0dyb3VwKGQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB4OiBkLmJvdW5kcy5jeCgpLFxyXG4gICAgICAgICAgICAgICAgeTogZC5ib3VuZHMuY3koKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGQ7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5kcmFnID0gZnVuY3Rpb24gKGQsIHBvc2l0aW9uKSB7XHJcbiAgICAgICAgaWYgKGlzR3JvdXAoZCkpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkLmxlYXZlcyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIGQubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgICAgICBkLmJvdW5kcy5zZXRYQ2VudHJlKHBvc2l0aW9uLngpO1xyXG4gICAgICAgICAgICAgICAgICAgIGQuYm91bmRzLnNldFlDZW50cmUocG9zaXRpb24ueSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5weCA9IHYuX2RyYWdHcm91cE9mZnNldFggKyBwb3NpdGlvbi54O1xyXG4gICAgICAgICAgICAgICAgICAgIHYucHkgPSB2Ll9kcmFnR3JvdXBPZmZzZXRZICsgcG9zaXRpb24ueTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZC5ncm91cHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICBkLmdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uIChnKSB7IHJldHVybiBMYXlvdXQuZHJhZyhnLCBwb3NpdGlvbik7IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBkLnB4ID0gcG9zaXRpb24ueDtcclxuICAgICAgICAgICAgZC5weSA9IHBvc2l0aW9uLnk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIExheW91dC5kcmFnRW5kID0gZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBpZiAoaXNHcm91cChkKSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGQubGVhdmVzICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgZC5sZWF2ZXMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICAgICAgICAgIExheW91dC5kcmFnRW5kKHYpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2Ll9kcmFnR3JvdXBPZmZzZXRYO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2Ll9kcmFnR3JvdXBPZmZzZXRZO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkLmdyb3VwcyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIGQuZ3JvdXBzLmZvckVhY2goTGF5b3V0LmRyYWdFbmQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBkLmZpeGVkICY9IH42O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBMYXlvdXQubW91c2VPdmVyID0gZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBkLmZpeGVkIHw9IDQ7XHJcbiAgICAgICAgZC5weCA9IGQueCwgZC5weSA9IGQueTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQubW91c2VPdXQgPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGQuZml4ZWQgJj0gfjQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIExheW91dDtcclxufSgpKTtcclxuZXhwb3J0cy5MYXlvdXQgPSBMYXlvdXQ7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHRjViM1YwTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dlYyVmlRMjlzWVM5emNtTXZiR0Y1YjNWMExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPMEZCUVVFc2VVTkJRVEJETzBGQlF6RkRMRFpEUVVFclNEdEJRVU12U0N4eFEwRkJhVU03UVVGRGFrTXNlVU5CUVRoRk8wRkJRemxGTEdsRVFVRXdRenRCUVVNeFF5d3JRa0ZCZFVRN1FVRkRka1FzTWtSQlFXbEZPMEZCVHpkRUxFbEJRVmtzVTBGQk9FSTdRVUZCTVVNc1YwRkJXU3hUUVVGVE8wbEJRVWNzTWtOQlFVc3NRMEZCUVR0SlFVRkZMSGxEUVVGSkxFTkJRVUU3U1VGQlJTeDFRMEZCUnl4RFFVRkJPMEZCUVVNc1EwRkJReXhGUVVFNVFpeFRRVUZUTEVkQlFWUXNhVUpCUVZNc1MwRkJWQ3hwUWtGQlV5eFJRVUZ4UWp0QlFVRkJMRU5CUVVNN1FVRXJRek5ETEZOQlFWTXNUMEZCVHl4RFFVRkRMRU5CUVUwN1NVRkRia0lzVDBGQlR5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWeXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNTMEZCU3l4WFFVRlhMRU5CUVVNN1FVRkRPVVVzUTBGQlF6dEJRWGRDUkR0SlFVRkJPMUZCUVVFc2FVSkJhM2xDUXp0UlFXcDVRbGNzWjBKQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU55UWl4clFrRkJZU3hIUVVGNVF5eEZRVUZGTEVOQlFVTTdVVUZEZWtRc2NVSkJRV2RDTEVkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUXpsQ0xEQkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVNM1FpeGpRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xHMUNRVUZqTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTNaQ0xIZENRVUZ0UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVjelFpeGhRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTJwQ0xGZEJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEV2l4WlFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMklzWlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnNRaXhYUVVGTkxFZEJRVEJDTEVWQlFVVXNRMEZCUXp0UlFVTnVReXhwUWtGQldTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTnNRaXh2UWtGQlpTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTjJRaXhoUVVGUkxFZEJRVmtzU1VGQlNTeERRVUZETzFGQlEzcENMRFpDUVVGM1FpeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTm9ReXhsUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyeENMSEZDUVVGblFpeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTjRRaXh6UWtGQmFVSXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkhka0lzVlVGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXp0UlFXdFdka0lzYVVKQlFWa3NSMEZCTWtJN1dVRkRia01zWTBGQll5eEZRVUZGTEUxQlFVMHNRMEZCUXl4alFVRmpPMWxCUTNKRExHTkJRV01zUlVGQlJTeE5RVUZOTEVOQlFVTXNZMEZCWXp0WlFVTnlReXhUUVVGVExFVkJRVVVzVFVGQlRTeERRVUZETEdGQlFXRTdXVUZETDBJc1QwRkJUeXhGUVVGRkxGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNUMEZCVHl4TFFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRTFSQ3hEUVVFMFJEdFRRVU0zUlN4RFFVRkRPMGxCYldKT0xFTkJRVU03U1VGMGQwSlZMRzFDUVVGRkxFZEJRVlFzVlVGQlZTeERRVUZ4UWl4RlFVRkZMRkZCUVdsRE8xRkJSVGxFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTenRaUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJwRExFbEJRVWtzVDBGQlR5eERRVUZETEV0QlFVc3NVVUZCVVN4RlFVRkZPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETzFOQlEzWkRPMkZCUVUwN1dVRkRTQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJRenRUUVVNMVFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGSlV5eDNRa0ZCVHl4SFFVRnFRaXhWUVVGclFpeERRVUZSTzFGQlEzUkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEZkQlFWY3NSVUZCUlR0WlFVTjZSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU42UWp0SlFVTk1MRU5CUVVNN1NVRkxVeXh4UWtGQlNTeEhRVUZrTzFGQlEwa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVU3V1VGQlF5eERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkxVeXh4UWtGQlNTeEhRVUZrTzFGQlEwa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVTdXVUZETDBJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEZEVJc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRlRVlzVDBGQlR5eEpRVUZKTEVOQlFVTTdVMEZEWmp0UlFVTkVMRWxCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVTjBRaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkROMElzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUlZRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1VVRkROVUlzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEY0VJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRia0lzU1VGQlNTeERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZPMmRDUVVOVUxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRmRCUVZjc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NWMEZCVnl4RlFVRkZPMjlDUVVNMVJDeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlExZ3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTmtPMmRDUVVORUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdaMEpCUTNKQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYWtNN1UwRkRTanRSUVVWRUxFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03VVVGRmNFTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMVlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRia0k3WVVGQlRTeEpRVUZKTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmRCUVZjc1MwRkJTeXhYUVVGWExFVkJRVVU3V1VGRGFFUXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03VTBGRGNFSTdVVUZEUkN4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVVYwUWl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNRMEZCUXp0UlFVVXpRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNKR0xFOUJRVThzUzBGQlN5eERRVUZETzBsQlEycENMRU5CUVVNN1NVRkhUeXh2UTBGQmJVSXNSMEZCTTBJN1VVRkRTU3hKUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY2tRc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRemxDTEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRVaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5ZTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEyUTdTVUZEVEN4RFFVRkRPMGxCVjBRc2MwSkJRVXNzUjBGQlRDeFZRVUZOTEVOQlFVODdVVUZEVkN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRk8xbEJRMG9zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVWR3UkN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlExWXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETzI5Q1FVTXpRaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVZVc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlZTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRM2hFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOSUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdHZRa0ZEZUVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN2FVSkJRM1pDTzJGQlEwbzdXVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VTBGRGRFSTdVVUZEUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlUwUXNkVUpCUVUwc1IwRkJUaXhWUVVGUExFTkJRV2RDTzFGQlFYWkNMR2xDUVhWQ1F6dFJRWFJDUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVTTFRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnFRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTnlRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1dVRkRiRUlzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4UFFVRlBMRXRCUVVzc1YwRkJWenRuUWtGRGFFTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJFSXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFdEJRVXNzVjBGQlZ5eEZRVUZGTzJkQ1FVTnFReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8yOUNRVU5zUWl4SlFVRkpMRTlCUVU4c1EwRkJReXhMUVVGTExGRkJRVkU3ZDBKQlEzSkNMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRVHRuUWtGRGFrUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRUanRaUVVORUxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjc1JVRkJSVHRuUWtGRGFrTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXp0dlFrRkRia0lzU1VGQlNTeFBRVUZQTEVWQlFVVXNTMEZCU3l4UlFVRlJPM2RDUVVOMFFpeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVRTdaMEpCUTI1RUxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEwNDdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOSUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWY3NSVUZCTDBJc1EwRkJLMElzUTBGQlF5eERRVUZETzFGQlEyeEdMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZKTEU5QlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmNzUlVGQkwwSXNRMEZCSzBJc1EwRkJReXhEUVVGRE8xRkJRMjVHTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGRlJDeHBRMEZCWjBJc1IwRkJhRUlzVlVGQmFVSXNRMEZCVnp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVTXpSaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVOMFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRUQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCVlVRc09FSkJRV0VzUjBGQllpeFZRVUZqTEVOQlFWYzdVVUZEY2tJc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRE8xRkJRMnhFTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGWlJDeHRRMEZCYTBJc1IwRkJiRUlzVlVGQmJVSXNRMEZCVnp0UlFVTXhRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMDdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXp0UlFVTjJSQ3hKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRemRDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGUlJDd3lRa0ZCVlN4SFFVRldMRlZCUVZjc1NVRkJXU3hGUVVGRkxHRkJRWGRETzFGQlF6ZEVMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRUdFpRVUZGTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRiRU1zU1VGQlNTeERRVUZETEhkQ1FVRjNRaXhIUVVGSE8xbEJRelZDTEVsQlFVa3NSVUZCUlN4SlFVRkpPMWxCUTFZc1owSkJRV2RDTEVWQlFVVXNUMEZCVHl4aFFVRmhMRXRCUVVzc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eGpRVUZqTEU5QlFVOHNZVUZCWVN4RFFVRkJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eGhRVUZoTzFOQlF6ZEhMRU5CUVVNN1VVRkRSaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCVTBRc2MwSkJRVXNzUjBGQlRDeFZRVUZOTEVOQlFUUkNPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFR0WlFVRkZMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU14UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlZVUXNORUpCUVZjc1IwRkJXQ3hWUVVGWkxFTkJRV003VVVGRGRFSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTk8xbEJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUTJoRUxFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNSQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRlhSQ3dyUWtGQll5eEhRVUZrTEZWQlFXVXNRMEZCVHp0UlFVTnNRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMDdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU03VVVGRGJrUXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGVrSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRhRUlzUTBGQlF6dEpRVlZFTEhGQ1FVRkpMRWRCUVVvc1ZVRkJTeXhEUVVGcFFqdFJRVU5zUWl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVThzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXp0UlFVTm9ReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnlRaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCVTBRc1owTkJRV1VzUjBGQlppeFZRVUZuUWl4RFFVRlBPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eERRVUZETzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdVVUZEY2tNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNeFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJVMFFzYVVOQlFXZENMRWRCUVdoQ0xGVkJRV2xDTEVOQlFVODdVVUZEY0VJc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpOQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRlRSQ3cyUWtGQldTeEhRVUZhTEZWQlFXRXNRMEZCVHp0UlFVTm9RaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTzFsQlEwb3NUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRE8xTkJRemRDTzFGQlEwUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhQUVVGUExFTkJRVU1zUzBGQlN5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1F5eFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJSVVFzZVVKQlFWRXNSMEZCVWl4VlFVRlRMRU5CUVc5Q08xRkJRM3BDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMjVDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGSlJDeHhRMEZCYjBJc1IwRkJjRUlzVlVGQmNVSXNRMEZCVlR0UlFVTXpRaXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVNdlFpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRTlCUVU4c1EwRkJReXhMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU51UkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlNVUXNjMEpCUVVzc1IwRkJUQ3hWUVVGTkxFTkJRVlU3VVVGRFdpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwN1dVRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdZVUZEY2tNN1dVRkRSQ3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEVUN4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3WjBKQlEySXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJRenR2UWtGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenM3YjBKQlEzUkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEzaENPMmxDUVVGTkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0blFrRkRaQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlR0dlFrRkRhRUlzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNN2IwSkJRM0pDTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVNdlJDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMlk3WVVGRFNqdFpRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMU5CUTJZN1NVRkRUQ3hEUVVGRE8wbEJSVVFzT0VKQlFXRXNSMEZCWWl4VlFVRmpMRWxCUVhsQ08xRkJRMjVETEU5QlFVOHNUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRXJRaXhKUVVGSkxFTkJRVU1zWVVGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGVExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTTdTVUZET1Vrc1EwRkJRenRKUVVWTkxHOUNRVUZoTEVkQlFYQkNMRlZCUVhGQ0xFbEJRWFZDTEVWQlFVVXNUVUZCWXp0UlFVTjRSQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0SlFVTjZRaXhEUVVGRE8wbEJSVVFzTkVKQlFWY3NSMEZCV0N4VlFVRlpMRWxCUVhsQ08xRkJRMnBETEU5QlFVOHNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpORkxFTkJRVU03U1VGdFFrUXNlVU5CUVhkQ0xFZEJRWGhDTEZWQlFYbENMRmRCUVcxQ0xFVkJRVVVzUTBGQllUdFJRVUV6UkN4cFFrRkpRenRSUVVvMlF5eHJRa0ZCUVN4RlFVRkJMRXRCUVdFN1VVRkRka1FzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJTU3hQUVVGQkxGZEJRVmNzUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRjBRaXhEUVVGelFpeERRVUZETEVOQlFVTTdVVUZETDBNc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMR05CUVUwc1QwRkJRU3h6UTBGQmQwSXNRMEZCUXl4TFFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFdEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVRORUxFTkJRVEpFTEVOQlFVTTdVVUZETDBZc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFWbEVMRzFEUVVGclFpeEhRVUZzUWl4VlFVRnRRaXhYUVVGdFFpeEZRVUZGTEVOQlFXRTdVVUZCY2tRc2FVSkJTVU03VVVGS2RVTXNhMEpCUVVFc1JVRkJRU3hMUVVGaE8xRkJRMnBFTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJkRUlzUTBGQmMwSXNRMEZCUXl4RFFVRkRPMUZCUXk5RExFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1IwRkJSeXhqUVVGTkxFOUJRVUVzWjBOQlFXdENMRU5CUVVNc1MwRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeExRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGeVJDeERRVUZ4UkN4RFFVRkRPMUZCUTNwR0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRlpSQ3h6UWtGQlN5eEhRVUZNTEZWQlEwa3NPRUpCUVRCRExFVkJRekZETEN0Q1FVRXlReXhGUVVNelF5d3JRa0ZCTWtNc1JVRkRNME1zYTBKQlFUaENMRVZCUXpsQ0xGZEJRV3RDTEVWQlEyeENMRmRCUVd0Q08xRkJUblJDTEdsQ1FYTktRenRSUVhKS1J5d3JRMEZCUVN4RlFVRkJMR3REUVVFd1F6dFJRVU14UXl4blJFRkJRU3hGUVVGQkxHMURRVUV5UXp0UlFVTXpReXhuUkVGQlFTeEZRVUZCTEcxRFFVRXlRenRSUVVNelF5eHRRMEZCUVN4RlFVRkJMSE5DUVVFNFFqdFJRVU01UWl3MFFrRkJRU3hGUVVGQkxHdENRVUZyUWp0UlFVTnNRaXcwUWtGQlFTeEZRVUZCTEd0Q1FVRnJRanRSUVVWc1FpeEpRVUZKTEVOQlFWTXNSVUZEVkN4RFFVRlRMRVZCUTFRc1EwRkJReXhIUVVGblFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkhMRU5CUVVNc1RVRkJUU3hGUVVOeVF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZETDBJc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVTjBRaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRka0lzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk5VSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYWkRMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVZpTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU03VVVGRk4wSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTnlRaXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTmFMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEZkQlFWY3NSVUZCUlR0blFrRkROVUlzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVNMVFqdFpRVU5FTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6TkNMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzU1VGQlNTeEpRVUZKTEVOQlFVTXNjVUpCUVhGQ08xbEJRVVVzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhGUVVGRkxFTkJRVU03VVVGTE4wUXNTVUZCU1N4VFFVRlRMRU5CUVVNN1VVRkRaQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVWQlFVVTdXVUZGZEVJc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTTdVMEZEY0VNN1lVRkJUVHRaUVVWSUxGTkJRVk1zUjBGQlJ5eERRVUZETEVsQlFVa3NNRUpCUVZVc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1kwRkJZeXhGUVVGRkxFMUJRVTBzUTBGQlF5eGpRVUZqTEVWQlFVVXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hMUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRnlRaXhEUVVGeFFpeERRVUZETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRaUVVsMlNTeERRVUZETEVkQlFVY3NhVUpCUVU4c1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1kwRkJUU3hQUVVGQkxFTkJRVU1zUlVGQlJDeERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTXpReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1owSkJRMnBDTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hKUVVGSkxGRkJRVkU3YjBKQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhMUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZUTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRE1VVXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzVVVGQlVUdHZRa0ZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFWTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xbEJRemxGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBnc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMmRDUVVOcVFpeEpRVUZOTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTnFSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRlJDeEpRVUZKTEVOQlFVTXNSMEZCUnl4cFFrRkJUeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEyaEVMRTlCUVU4c1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpOQ0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NTVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFOUJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWeXhGUVVGRk8xbEJRMnhGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOV0xFbEJRVWtzWVVGQllTeEhRVUZITEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzWVVGQllUdG5Ra0ZET1VNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNN1owSkJRemRDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzWVVGQllTeERRVUZETzFsQlEzUkRMRU5CUVVNc1EwRkJRenRaUVVOR0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenRuUWtGRGJFSXNZVUZCWVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEV0QlFVa3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRnBRbkpFTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU55UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU42UWl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOT096dFpRVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRk4wUXNTVUZCU1N4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZETjBNc1NVRkJTU3hKUVVGSkxFTkJRVU1zZDBKQlFYZENMRVZCUVVVN1dVRkRla0lzU1VGQlNTeERRVUZETEZsQlFXRXNRMEZCUXl4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1dVRkRNMFlzWTBGQll5eEhRVUZITEdOQlFXTXNRMEZCUXl4TlFVRk5MRU5CUVVNc05rTkJRU3RDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEhkQ1FVRjNRaXhEUVVGRExFbEJRVWtzUlVGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGSGVrbzdVVUZGUkN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlF6RkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeHBRa0ZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhaRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8xRkJRelZDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRlRUlzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4yUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVU3WjBKQlExUXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTllMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRXQ3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTnVRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEycERPMU5CUTBvN1VVRkRSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJTekZETEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc09FSkJRVGhDTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSM3BFTEVsQlFVa3NZMEZCWXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRE8xbEJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3h6UWtGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RlFVRkZMRU5CUVVNN1VVRkRja29zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc0swSkJRU3RDTEVOQlFVTXNRMEZCUXp0UlFVTnVSQ3hKUVVGSkxFTkJRVU1zTmtKQlFUWkNMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVZDBSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNaQ0xFbEJRVWtzUlVGQlJTeEZRVUZGTzFsQlEwb3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGFrVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeHpRa0ZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxHTkJRV01zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeERRVUZETzFsQlF6VklMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzQkZPMUZCUjBRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMQ3RDUVVFclFpeERRVUZETEVOQlFVTTdVVUZGYmtRc1NVRkJTU3hyUWtGQmEwSXNSVUZCUlR0WlFVTndRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1dVRkRiRU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1dVRkRiRVFzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4blFrRkJaMElzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYmtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eGxRVUZsTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVOMlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4cFFrRkJUeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1JVRkJReXhWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzJkQ1FVTjJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN2IwSkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzSkRMRTlCUVU4c1EwRkJReXhEUVVGQk8xbEJRMW9zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEU0N4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEY2tJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFRRVU42UXp0UlFVVkVMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5dzJRa0ZCTmtJc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRPMUZCUTNSRUxFOUJRVThzVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0SlFVTTVReXhEUVVGRE8wbEJSVThzT0VKQlFXRXNSMEZCY2tJc1ZVRkJjMElzVlVGQmEwSXNSVUZCUlN4RFFVRlhMRVZCUVVVc1EwRkJWenRSUVVNNVJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zU1VGQlNTeFZRVUZWTEVkQlFVY3NRMEZCUXl4RlFVRkZPMWxCUnpORExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRek5DTEVsQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1EwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlV5eERRVUZETEVOQlFVTXNUVUZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVk1zUTBGQlF5eERRVUZETEUxQlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRU3hGUVVGMlJTeERRVUYxUlN4RFFVRkRMRU5CUVVNN1dVRkRNVWNzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4RFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUVN4RlFVRjJRaXhEUVVGMVFpeERRVUZETEVOQlFVTTdXVUZEZGtRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRuUWtGRGRFSXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJUU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFsQlF6ZERMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMGdzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6dG5Ra0ZEZEVJc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnp0dlFrRkRMMElzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZvUkN4RFFVRm5SQ3hEUVVGRExFTkJRVU03WjBKQlF6VkZMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWYzdiMEpCUXk5Q0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1JVRkJSU3hKUVVGSkxFOUJRVUVzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQmFrUXNRMEZCYVVRc1EwRkJReXhEUVVGRE8xbEJRMnhHTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUjBnc1NVRkJTU3hOUVVGTkxFVkJRVVU3YVVKQlExQXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dHBRa0ZEYWtJc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dHBRa0ZEVkN4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRE8ybENRVU5hTEdGQlFXRXNRMEZCUXl4TFFVRkxMRU5CUVVNN2FVSkJRM0JDTEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03YVVKQlEycERMSGRDUVVGM1FpeERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRNMElzYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRE8ybENRVU14UWl4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJSWFpETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dG5Ra0ZEYWtJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRNMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNdlFpeERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTk9PMkZCUVUwN1dVRkRTQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRUUVVOcVF6dEpRVU5NTEVOQlFVTTdTVUZIVHl3NFEwRkJOa0lzUjBGQmNrTXNWVUZCYzBNc1MwRkJZU3hGUVVGRkxFMUJRV01zUlVGQlJTeFhRVUV5UWp0UlFVRm9SeXhwUWtGbFF6dFJRV1p2UlN3MFFrRkJRU3hGUVVGQkxHdENRVUV5UWp0UlFVVTFSaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdWQlFXVXNTVUZCU1N4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVWQlFVVTdXVUZEYmtRc1NVRkJTU3hIUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyNUVMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEycEZMRWxCUVVrc1RVRkJUU3hIUVVGSExHMURRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZEZEVRc2FVTkJRVmtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzFsQlF6TkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1owSkJRM0pDTEV0QlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGVrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8yOUNRVU5XTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRla0lzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTTFRanRaUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEwNDdTVUZEVEN4RFFVRkRPMGxCUlVRc2RVSkJRVTBzUjBGQlRqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU16UWl4RFFVRkRPMGxCUlVRc2NVSkJRVWtzUjBGQlNqdFJRVU5KTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU42UWl4RFFVRkRPMGxCU1VRc2JVTkJRV3RDTEVkQlFXeENMRlZCUVcxQ0xGVkJRWE5DTzFGQlFYUkNMREpDUVVGQkxFVkJRVUVzWTBGQmMwSTdVVUZEY2tNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRWxCUVVrc05rSkJRWE5DTEVOQlF6bERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXp0WlFVTjJRaXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdVVUZEY0VRc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5hTEVOQlFVTTdTVUZYUkN3d1FrRkJVeXhIUVVGVUxGVkJRVlVzU1VGQlNTeEZRVUZGTEVWQlFXTXNSVUZCUlN4SlFVRkpPMUZCUVhCQ0xHMUNRVUZCTEVWQlFVRXNUVUZCWXp0UlFVTXhRaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZKYkVJc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTdzJRa0ZCYzBJc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVOeVNDeExRVUZMTEVkQlFXRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlEzaEVMRXRCUVVzc1IwRkJZU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkRlRVFzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUXpsRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTJwRUxFZEJRVWNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRla1VzU1VGQlNTeFBRVUZQTEVsQlFVa3NTMEZCU3l4WFFVRlhMRVZCUVVVN1dVRkROMElzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJJN1VVRkRSQ3hKUVVGSkxGTkJRVk1zUjBGQlJ5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZZTEVOQlFWY3NSVUZCUlN4VFFVRlRMRWRCUVVjc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJXQ3hEUVVGWExFVkJRVVVzVFVGQlRTeEhRVUZITEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZXTEVOQlFWVXNSVUZEY0VZc1RVRkJUU3hIUVVGSExFbEJRVWtzTUVKQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRk5CUVZNc1JVRkJSU3hUUVVGVExFVkJRVVVzVFVGQlRTeERRVUZETEVWQlF6RkZMRmxCUVZrc1IwRkJSeXhOUVVGTkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRMMFFzU1VGQlNTeFpRVUZaTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1NVRkJTU3haUVVGWkxFTkJRVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRMjVGTEVsQlFVa3NTMEZCU3l4SFFVRkhMREpDUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRiRVlzVVVGQlVTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRUUVVNelJEdGhRVUZOTzFsQlEwZ3NTVUZCU1N4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlF6TkNMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGRE5VSXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVNMVFpeFJRVUZSTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnVSU3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpWRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNjMEpCUVZVc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU0zUkR0UlFXRkVMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRM0JDTEVOQlFVTTdTVUZIVFN4eFFrRkJZeXhIUVVGeVFpeFZRVUZ6UWl4RFFVRnpRanRSUVVONFF5eFBRVUZQTEU5QlFVOHNRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZUTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGUkxFTkJRVU1zUTBGQlF5eE5RVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRPMGxCUTNCR0xFTkJRVU03U1VGSFRTeHhRa0ZCWXl4SFFVRnlRaXhWUVVGelFpeERRVUZ6UWp0UlFVTjRReXhQUVVGUExFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNTMEZCU3l4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGVExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRlJMRU5CUVVNc1EwRkJReXhOUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkdMRU5CUVVNN1NVRkhUU3hoUVVGTkxFZEJRV0lzVlVGQll5eERRVUZ6UWp0UlFVTm9ReXhQUVVGUExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRja1VzUTBGQlF6dEpRVTFOTEdkQ1FVRlRMRWRCUVdoQ0xGVkJRV2xDTEVOQlFXVTdVVUZETlVJc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZEV2l4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGREwwTTdZVUZCVFR0WlFVTklMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYmtJc1EwRkJReXhEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEYUVJN1NVRkRUQ3hEUVVGRE8wbEJTV01zWlVGQlVTeEhRVUYyUWl4VlFVRjNRaXhEUVVGUE8xRkJRM0pDTEVOQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5hTEVOQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4wUWl4RFFVRkRPMGxCU1dNc2EwSkJRVmNzUjBGQk1VSXNWVUZCTWtJc1EwRkJVU3hGUVVGRkxFMUJRV2RETzFGQlEycEZMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeExRVUZMTEZkQlFWY3NSVUZCUlR0WlFVTnFReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNN1owSkJRMlFzUTBGQlF5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMklzVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRFlpeERRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUXl4RFFVRkZMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyaEVMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRFJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhYUVVGWExFVkJRVVU3V1VGRGFrTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCTjBJc1EwRkJOa0lzUTBGQlF5eERRVUZETzFOQlEzaEVPMGxCUTB3c1EwRkJRenRKUVVkTkxHbENRVUZWTEVkQlFXcENMRlZCUVd0Q0xFTkJRV1U3VVVGRE4wSXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3V1VGRFdpeFBRVUZQTzJkQ1FVTklMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRhRUlzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRk8yRkJRMjVDTEVOQlFVTTdVMEZEVER0aFFVRk5PMWxCUTBnc1QwRkJUeXhEUVVGRExFTkJRVU03VTBGRFdqdEpRVU5NTEVOQlFVTTdTVUZKVFN4WFFVRkpMRWRCUVZnc1ZVRkJXU3hEUVVGbExFVkJRVVVzVVVGQmEwTTdVVUZETTBRc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZEV2l4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eFhRVUZYTEVWQlFVVTdaMEpCUTJwRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVFc1EwRkJRenR2UWtGRFpDeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTJoRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETVVJc1EwRkJSU3hEUVVGRExFVkJRVVVzUjBGQlV5eERRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFZEJRVWNzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRhRVFzUTBGQlJTeERRVUZETEVWQlFVVXNSMEZCVXl4RFFVRkZMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE1VUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRUanRaUVVORUxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjc1JVRkJSVHRuUWtGRGFrTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzJGQlEyNUVPMU5CUTBvN1lVRkJUVHRaUVVOSExFTkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOdVFpeERRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRE5VSTdTVUZEVEN4RFFVRkRPMGxCU1Uwc1kwRkJUeXhIUVVGa0xGVkJRV1VzUTBGQlF6dFJRVU5hTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8xbEJRMW9zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWeXhGUVVGRk8yZENRVU5xUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTTdiMEpCUTJRc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRiRUlzVDBGQllTeERRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU03YjBKQlEyeERMRTlCUVdFc1EwRkJSU3hEUVVGRExHbENRVUZwUWl4RFFVRkRPMmRDUVVOMFF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTk9PMWxCUTBRc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnl4RlFVRkZPMmRDUVVOcVF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdZVUZEY0VNN1UwRkRTanRoUVVGTk8xbEJRMGdzUTBGQlF5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVWcVFqdEpRVU5NTEVOQlFVTTdTVUZIVFN4blFrRkJVeXhIUVVGb1FpeFZRVUZwUWl4RFFVRkRPMUZCUTJRc1EwRkJReXhEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEWWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6TkNMRU5CUVVNN1NVRkhUU3hsUVVGUkxFZEJRV1lzVlVGQlowSXNRMEZCUXp0UlFVTmlMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYkVJc1EwRkJRenRKUVVOTUxHRkJRVU03UVVGQlJDeERRVUZETEVGQmJIbENSQ3hKUVd0NVFrTTdRVUZzZVVKWkxIZENRVUZOSW4wPSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbGF5b3V0XzEgPSByZXF1aXJlKFwiLi9sYXlvdXRcIik7XHJcbnZhciBMYXlvdXRBZGFwdG9yID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhMYXlvdXRBZGFwdG9yLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gTGF5b3V0QWRhcHRvcihvcHRpb25zKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcclxuICAgICAgICB2YXIgc2VsZiA9IF90aGlzO1xyXG4gICAgICAgIHZhciBvID0gb3B0aW9ucztcclxuICAgICAgICBpZiAoby50cmlnZ2VyKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnRyaWdnZXIgPSBvLnRyaWdnZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvLmtpY2spIHtcclxuICAgICAgICAgICAgX3RoaXMua2ljayA9IG8ua2ljaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG8uZHJhZykge1xyXG4gICAgICAgICAgICBfdGhpcy5kcmFnID0gby5kcmFnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoby5vbikge1xyXG4gICAgICAgICAgICBfdGhpcy5vbiA9IG8ub247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF90aGlzLmRyYWdzdGFydCA9IF90aGlzLmRyYWdTdGFydCA9IGxheW91dF8xLkxheW91dC5kcmFnU3RhcnQ7XHJcbiAgICAgICAgX3RoaXMuZHJhZ2VuZCA9IF90aGlzLmRyYWdFbmQgPSBsYXlvdXRfMS5MYXlvdXQuZHJhZ0VuZDtcclxuICAgICAgICByZXR1cm4gX3RoaXM7XHJcbiAgICB9XHJcbiAgICBMYXlvdXRBZGFwdG9yLnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24gKGUpIHsgfTtcclxuICAgIDtcclxuICAgIExheW91dEFkYXB0b3IucHJvdG90eXBlLmtpY2sgPSBmdW5jdGlvbiAoKSB7IH07XHJcbiAgICA7XHJcbiAgICBMYXlvdXRBZGFwdG9yLnByb3RvdHlwZS5kcmFnID0gZnVuY3Rpb24gKCkgeyB9O1xyXG4gICAgO1xyXG4gICAgTGF5b3V0QWRhcHRvci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZlbnRUeXBlLCBsaXN0ZW5lcikgeyByZXR1cm4gdGhpczsgfTtcclxuICAgIDtcclxuICAgIHJldHVybiBMYXlvdXRBZGFwdG9yO1xyXG59KGxheW91dF8xLkxheW91dCkpO1xyXG5leHBvcnRzLkxheW91dEFkYXB0b3IgPSBMYXlvdXRBZGFwdG9yO1xyXG5mdW5jdGlvbiBhZGFwdG9yKG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBuZXcgTGF5b3V0QWRhcHRvcihvcHRpb25zKTtcclxufVxyXG5leHBvcnRzLmFkYXB0b3IgPSBhZGFwdG9yO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZV1JoY0hSdmNpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDJGa1lYQjBiM0l1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPMEZCUVVFc2JVTkJRV2xFTzBGQlJUZERPMGxCUVcxRExHbERRVUZOTzBsQllYSkRMSFZDUVVGaExFOUJRVTg3VVVGQmNFSXNXVUZEU1N4cFFrRkJUeXhUUVhsQ1ZqdFJRWEpDUnl4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGSkxFTkJRVU03VVVGRGFFSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRE8xRkJSV2hDTEVsQlFVc3NRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSenRaUVVOaUxFdEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJRenRUUVVNMVFqdFJRVVZFTEVsQlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSVHRaUVVOVUxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRUUVVOMFFqdFJRVVZFTEVsQlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSVHRaUVVOVUxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRUUVVOMFFqdFJRVVZFTEVsQlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOUUxFdEJRVWtzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRUUVVOc1FqdFJRVVZFTEV0QlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1MwRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eGxRVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUTI1RUxFdEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTMEZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhsUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZET3p0SlFVTnFSQ3hEUVVGRE8wbEJjRU5FTEN0Q1FVRlBMRWRCUVZBc1ZVRkJVU3hEUVVGUkxFbEJRVWNzUTBGQlF6dEpRVUZCTEVOQlFVTTdTVUZEY2tJc05FSkJRVWtzUjBGQlNpeGpRVUZSTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUTFZc05FSkJRVWtzUjBGQlNpeGpRVUZSTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUTFZc01FSkJRVVVzUjBGQlJpeFZRVUZITEZOQlFUWkNMRVZCUVVVc1VVRkJiMElzU1VGQlZ5eFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkJRU3hEUVVGRE8wbEJhME53Uml4dlFrRkJRenRCUVVGRUxFTkJRVU1zUVVGNFEwUXNRMEZCYlVNc1pVRkJUU3hIUVhkRGVFTTdRVUY0UTFrc2MwTkJRV0U3UVVFMlF6RkNMRk5CUVdkQ0xFOUJRVThzUTBGQlJTeFBRVUZQTzBsQlF6VkNMRTlCUVU4c1NVRkJTU3hoUVVGaExFTkJRVVVzVDBGQlR5eERRVUZGTEVOQlFVTTdRVUZEZUVNc1EwRkJRenRCUVVaRUxEQkNRVVZESW4wPSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbGF5b3V0XzEgPSByZXF1aXJlKFwiLi9sYXlvdXRcIik7XHJcbnZhciBEM1N0eWxlTGF5b3V0QWRhcHRvciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoRDNTdHlsZUxheW91dEFkYXB0b3IsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBEM1N0eWxlTGF5b3V0QWRhcHRvcigpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xyXG4gICAgICAgIF90aGlzLmV2ZW50ID0gZDMuZGlzcGF0Y2gobGF5b3V0XzEuRXZlbnRUeXBlW2xheW91dF8xLkV2ZW50VHlwZS5zdGFydF0sIGxheW91dF8xLkV2ZW50VHlwZVtsYXlvdXRfMS5FdmVudFR5cGUudGlja10sIGxheW91dF8xLkV2ZW50VHlwZVtsYXlvdXRfMS5FdmVudFR5cGUuZW5kXSk7XHJcbiAgICAgICAgdmFyIGQzbGF5b3V0ID0gX3RoaXM7XHJcbiAgICAgICAgdmFyIGRyYWc7XHJcbiAgICAgICAgX3RoaXMuZHJhZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKCFkcmFnKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZHJhZyA9IGQzLmJlaGF2aW9yLmRyYWcoKVxyXG4gICAgICAgICAgICAgICAgICAgIC5vcmlnaW4obGF5b3V0XzEuTGF5b3V0LmRyYWdPcmlnaW4pXHJcbiAgICAgICAgICAgICAgICAgICAgLm9uKFwiZHJhZ3N0YXJ0LmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ1N0YXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgIC5vbihcImRyYWcuZDNhZGFwdG9yXCIsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0XzEuTGF5b3V0LmRyYWcoZCwgZDMuZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGQzbGF5b3V0LnJlc3VtZSgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAub24oXCJkcmFnZW5kLmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ0VuZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyYWc7XHJcbiAgICAgICAgICAgIHRoaXNcclxuICAgICAgICAgICAgICAgIC5jYWxsKGRyYWcpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4gICAgRDNTdHlsZUxheW91dEFkYXB0b3IucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciBkM2V2ZW50ID0geyB0eXBlOiBsYXlvdXRfMS5FdmVudFR5cGVbZS50eXBlXSwgYWxwaGE6IGUuYWxwaGEsIHN0cmVzczogZS5zdHJlc3MgfTtcclxuICAgICAgICB0aGlzLmV2ZW50W2QzZXZlbnQudHlwZV0oZDNldmVudCk7XHJcbiAgICB9O1xyXG4gICAgRDNTdHlsZUxheW91dEFkYXB0b3IucHJvdG90eXBlLmtpY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBkMy50aW1lcihmdW5jdGlvbiAoKSB7IHJldHVybiBfc3VwZXIucHJvdG90eXBlLnRpY2suY2FsbChfdGhpcyk7IH0pO1xyXG4gICAgfTtcclxuICAgIEQzU3R5bGVMYXlvdXRBZGFwdG9yLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldmVudFR5cGUsIGxpc3RlbmVyKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudFR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnQub24oZXZlbnRUeXBlLCBsaXN0ZW5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm9uKGxheW91dF8xLkV2ZW50VHlwZVtldmVudFR5cGVdLCBsaXN0ZW5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBEM1N0eWxlTGF5b3V0QWRhcHRvcjtcclxufShsYXlvdXRfMS5MYXlvdXQpKTtcclxuZXhwb3J0cy5EM1N0eWxlTGF5b3V0QWRhcHRvciA9IEQzU3R5bGVMYXlvdXRBZGFwdG9yO1xyXG5mdW5jdGlvbiBkM2FkYXB0b3IoKSB7XHJcbiAgICByZXR1cm4gbmV3IEQzU3R5bGVMYXlvdXRBZGFwdG9yKCk7XHJcbn1cclxuZXhwb3J0cy5kM2FkYXB0b3IgPSBkM2FkYXB0b3I7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpETjJNMkZrWVhCMGIzSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTlYWldKRGIyeGhMM055WXk5a00zWXpZV1JoY0hSdmNpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdPenM3T3pzN1FVRk5RU3h0UTBGQmEwUTdRVUZIT1VNN1NVRkJNRU1zZDBOQlFVMDdTVUZuUWpWRE8xRkJRVUVzV1VGRFNTeHBRa0ZCVHl4VFFYVkNWanRSUVhaRFJDeFhRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhyUWtGQlV5eERRVUZETEd0Q1FVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzYTBKQlFWTXNRMEZCUXl4clFrRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEd0Q1FVRlRMRU5CUVVNc2EwSkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCYTBKcVJ5eEpRVUZKTEZGQlFWRXNSMEZCUnl4TFFVRkpMRU5CUVVNN1VVRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTTdVVUZEVkN4TFFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSE8xbEJRMUlzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlR0blFrRkRVQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSVHR4UWtGRGVFSXNUVUZCVFN4RFFVRkRMR1ZCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU03Y1VKQlEzcENMRVZCUVVVc1EwRkJReXh4UWtGQmNVSXNSVUZCUlN4bFFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRE8zRkNRVU16UXl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNWVUZCUVN4RFFVRkRPMjlDUVVOdVFpeGxRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJUeXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdiMEpCUXpsQ0xGRkJRVkVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0blFrRkRkRUlzUTBGQlF5eERRVUZETzNGQ1FVTkVMRVZCUVVVc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4bFFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03WVVGRGFFUTdXVUZGUkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTA3WjBKQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1dVRkhia01zU1VGQlNUdHBRa0ZGUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGNFSXNRMEZCUXl4RFFVRkJPenRKUVVOTUxFTkJRVU03U1VGeVEwUXNjME5CUVU4c1IwRkJVQ3hWUVVGUkxFTkJRVkU3VVVGRFdpeEpRVUZKTEU5QlFVOHNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hyUWtGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzFGQlF6VkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM1JETEVOQlFVTTdTVUZIUkN4dFEwRkJTU3hIUVVGS08xRkJRVUVzYVVKQlJVTTdVVUZFUnl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExHTkJRVTBzVDBGQlFTeHBRa0ZCVFN4SlFVRkpMRmxCUVVVc1JVRkJXaXhEUVVGWkxFTkJRVU1zUTBGQlF6dEpRVU5xUXl4RFFVRkRPMGxCWjBORUxHbERRVUZGTEVkQlFVWXNWVUZCUnl4VFFVRTJRaXhGUVVGRkxGRkJRVzlDTzFGQlEyeEVMRWxCUVVrc1QwRkJUeXhUUVVGVExFdEJRVXNzVVVGQlVTeEZRVUZGTzFsQlF5OUNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeERRVUZETEZOQlFWTXNSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJRenRUUVVOMFF6dGhRVUZOTzFsQlEwZ3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zYTBKQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFRRVU5xUkR0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMmhDTEVOQlFVTTdTVUZEVEN3eVFrRkJRenRCUVVGRUxFTkJRVU1zUVVGdVJFUXNRMEZCTUVNc1pVRkJUU3hIUVcxRUwwTTdRVUZ1UkZrc2IwUkJRVzlDTzBGQmFVVnFReXhUUVVGblFpeFRRVUZUTzBsQlEzSkNMRTlCUVU4c1NVRkJTU3h2UWtGQmIwSXNSVUZCUlN4RFFVRkRPMEZCUTNSRExFTkJRVU03UVVGR1JDdzRRa0ZGUXlKOSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG4gICAgfTtcclxufSkoKTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbGF5b3V0XzEgPSByZXF1aXJlKFwiLi9sYXlvdXRcIik7XHJcbnZhciBEM1N0eWxlTGF5b3V0QWRhcHRvciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoRDNTdHlsZUxheW91dEFkYXB0b3IsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBEM1N0eWxlTGF5b3V0QWRhcHRvcihkM0NvbnRleHQpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xyXG4gICAgICAgIF90aGlzLmQzQ29udGV4dCA9IGQzQ29udGV4dDtcclxuICAgICAgICBfdGhpcy5ldmVudCA9IGQzQ29udGV4dC5kaXNwYXRjaChsYXlvdXRfMS5FdmVudFR5cGVbbGF5b3V0XzEuRXZlbnRUeXBlLnN0YXJ0XSwgbGF5b3V0XzEuRXZlbnRUeXBlW2xheW91dF8xLkV2ZW50VHlwZS50aWNrXSwgbGF5b3V0XzEuRXZlbnRUeXBlW2xheW91dF8xLkV2ZW50VHlwZS5lbmRdKTtcclxuICAgICAgICB2YXIgZDNsYXlvdXQgPSBfdGhpcztcclxuICAgICAgICB2YXIgZHJhZztcclxuICAgICAgICBfdGhpcy5kcmFnID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAoIWRyYWcpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkcmFnID0gZDNDb250ZXh0LmRyYWcoKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zdWJqZWN0KGxheW91dF8xLkxheW91dC5kcmFnT3JpZ2luKVxyXG4gICAgICAgICAgICAgICAgICAgIC5vbihcInN0YXJ0LmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ1N0YXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgIC5vbihcImRyYWcuZDNhZGFwdG9yXCIsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0XzEuTGF5b3V0LmRyYWcoZCwgZDNDb250ZXh0LmV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICBkM2xheW91dC5yZXN1bWUoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLm9uKFwiZW5kLmQzYWRhcHRvclwiLCBsYXlvdXRfMS5MYXlvdXQuZHJhZ0VuZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyYWc7XHJcbiAgICAgICAgICAgIGFyZ3VtZW50c1swXS5jYWxsKGRyYWcpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4gICAgRDNTdHlsZUxheW91dEFkYXB0b3IucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIHZhciBkM2V2ZW50ID0geyB0eXBlOiBsYXlvdXRfMS5FdmVudFR5cGVbZS50eXBlXSwgYWxwaGE6IGUuYWxwaGEsIHN0cmVzczogZS5zdHJlc3MgfTtcclxuICAgICAgICB0aGlzLmV2ZW50LmNhbGwoZDNldmVudC50eXBlLCBkM2V2ZW50KTtcclxuICAgIH07XHJcbiAgICBEM1N0eWxlTGF5b3V0QWRhcHRvci5wcm90b3R5cGUua2ljayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciB0ID0gdGhpcy5kM0NvbnRleHQudGltZXIoZnVuY3Rpb24gKCkgeyByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS50aWNrLmNhbGwoX3RoaXMpICYmIHQuc3RvcCgpOyB9KTtcclxuICAgIH07XHJcbiAgICBEM1N0eWxlTGF5b3V0QWRhcHRvci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZlbnRUeXBlLCBsaXN0ZW5lcikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnRUeXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50Lm9uKGV2ZW50VHlwZSwgbGlzdGVuZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudC5vbihsYXlvdXRfMS5FdmVudFR5cGVbZXZlbnRUeXBlXSwgbGlzdGVuZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH07XHJcbiAgICByZXR1cm4gRDNTdHlsZUxheW91dEFkYXB0b3I7XHJcbn0obGF5b3V0XzEuTGF5b3V0KSk7XHJcbmV4cG9ydHMuRDNTdHlsZUxheW91dEFkYXB0b3IgPSBEM1N0eWxlTGF5b3V0QWRhcHRvcjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkROMk5HRmtZWEIwYjNJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOVhaV0pEYjJ4aEwzTnlZeTlrTTNZMFlXUmhjSFJ2Y2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN096czdPenM3UVVGSFFTeHRRMEZCYVVRN1FVRlZha1E3U1VGQk1FTXNkME5CUVUwN1NVRnBRalZETERoQ1FVRnZRaXhUUVVGdlFqdFJRVUY0UXl4WlFVTkpMR2xDUVVGUExGTkJlVUpXTzFGQk1VSnRRaXhsUVVGVExFZEJRVlFzVTBGQlV5eERRVUZYTzFGQlJYQkRMRXRCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzVTBGQlV5eERRVUZETEZGQlFWRXNRMEZCUXl4clFrRkJVeXhEUVVGRExHdENRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc2EwSkJRVk1zUTBGQlF5eHJRa0ZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxHdENRVUZUTEVOQlFVTXNhMEpCUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlIycElMRWxCUVVrc1VVRkJVU3hIUVVGSExFdEJRVWtzUTBGQlF6dFJRVU53UWl4SlFVRkpMRWxCUVVrc1EwRkJRenRSUVVOVUxFdEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVYzdXVUZEVWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRk8yZENRVU5RTEVsQlFVa3NTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVU3Y1VKQlEzUkNMRTlCUVU4c1EwRkJReXhsUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETzNGQ1FVTXhRaXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc1pVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF6dHhRa0ZEZGtNc1JVRkJSU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRlZCUVVFc1EwRkJRenR2UWtGRGJrSXNaVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJUU3hEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMjlDUVVOeVF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1owSkJRM1JDTEVOQlFVTXNRMEZCUXp0eFFrRkRSQ3hGUVVGRkxFTkJRVU1zWlVGQlpTeEZRVUZGTEdWQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRoUVVNMVF6dFpRVVZFTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUVHRuUWtGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0WlFVdHVReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRelZDTEVOQlFVTXNRMEZCUVRzN1NVRkRUQ3hEUVVGRE8wbEJla05FTEhORFFVRlBMRWRCUVZBc1ZVRkJVU3hEUVVGUk8xRkJRMW9zU1VGQlNTeFBRVUZQTEVkQlFVY3NSVUZCUlN4SlFVRkpMRVZCUVVVc2EwSkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFJRVWMxUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRlBMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRMmhFTEVOQlFVTTdTVUZIUkN4dFEwRkJTU3hIUVVGS08xRkJRVUVzYVVKQlJVTTdVVUZFUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4alFVRk5MRTlCUVVFc2FVSkJRVTBzU1VGQlNTeFpRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGNFFpeERRVUYzUWl4RFFVRkRMRU5CUVVNN1NVRkRha1VzUTBGQlF6dEpRV3REUkN4cFEwRkJSU3hIUVVGR0xGVkJRVWNzVTBGQk5rSXNSVUZCUlN4UlFVRnZRanRSUVVOc1JDeEpRVUZKTEU5QlFVOHNVMEZCVXl4TFFVRkxMRkZCUVZFc1JVRkJSVHRaUVVNdlFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJReXhUUVVGVExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdVMEZEZEVNN1lVRkJUVHRaUVVOSUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMR3RDUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRha1E3VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJRMHdzTWtKQlFVTTdRVUZCUkN4RFFVRkRMRUZCZEVSRUxFTkJRVEJETEdWQlFVMHNSMEZ6UkM5RE8wRkJkRVJaTEc5RVFVRnZRaUo5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIGQzdjMgPSByZXF1aXJlKFwiLi9kM3YzYWRhcHRvclwiKTtcclxudmFyIGQzdjQgPSByZXF1aXJlKFwiLi9kM3Y0YWRhcHRvclwiKTtcclxuO1xyXG5mdW5jdGlvbiBkM2FkYXB0b3IoZDNDb250ZXh0KSB7XHJcbiAgICBpZiAoIWQzQ29udGV4dCB8fCBpc0QzVjMoZDNDb250ZXh0KSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgZDN2My5EM1N0eWxlTGF5b3V0QWRhcHRvcigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBkM3Y0LkQzU3R5bGVMYXlvdXRBZGFwdG9yKGQzQ29udGV4dCk7XHJcbn1cclxuZXhwb3J0cy5kM2FkYXB0b3IgPSBkM2FkYXB0b3I7XHJcbmZ1bmN0aW9uIGlzRDNWMyhkM0NvbnRleHQpIHtcclxuICAgIHZhciB2M2V4cCA9IC9eM1xcLi87XHJcbiAgICByZXR1cm4gZDNDb250ZXh0LnZlcnNpb24gJiYgZDNDb250ZXh0LnZlcnNpb24ubWF0Y2godjNleHApICE9PSBudWxsO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpETmhaR0Z3ZEc5eUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZWMlZpUTI5c1lTOXpjbU12WkROaFpHRndkRzl5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzYjBOQlFYRkRPMEZCUTNKRExHOURRVUZ4UXp0QlFVZFZMRU5CUVVNN1FVRTBRbWhFTEZOQlFXZENMRk5CUVZNc1EwRkJReXhUUVVGM1F6dEpRVU01UkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZCUlR0UlFVTnFReXhQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZETEc5Q1FVRnZRaXhGUVVGRkxFTkJRVU03UzBGRE1VTTdTVUZEUkN4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRM0JFTEVOQlFVTTdRVUZNUkN3NFFrRkxRenRCUVVWRUxGTkJRVk1zVFVGQlRTeERRVUZETEZOQlFYVkRPMGxCUTI1RUxFbEJRVTBzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXp0SlFVTnlRaXhQUVVGaExGTkJRVlVzUTBGQlF5eFBRVUZQTEVsQlFWVXNVMEZCVlN4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRPMEZCUTNSR0xFTkJRVU1pZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciByZWN0YW5nbGVfMSA9IHJlcXVpcmUoXCIuL3JlY3RhbmdsZVwiKTtcclxudmFyIHZwc2NfMSA9IHJlcXVpcmUoXCIuL3Zwc2NcIik7XHJcbnZhciBzaG9ydGVzdHBhdGhzXzEgPSByZXF1aXJlKFwiLi9zaG9ydGVzdHBhdGhzXCIpO1xyXG52YXIgTm9kZVdyYXBwZXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTm9kZVdyYXBwZXIoaWQsIHJlY3QsIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMucmVjdCA9IHJlY3Q7XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMubGVhZiA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3VuZGVmaW5lZCcgfHwgY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE5vZGVXcmFwcGVyO1xyXG59KCkpO1xyXG5leHBvcnRzLk5vZGVXcmFwcGVyID0gTm9kZVdyYXBwZXI7XHJcbnZhciBWZXJ0ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFZlcnQoaWQsIHgsIHksIG5vZGUsIGxpbmUpIHtcclxuICAgICAgICBpZiAobm9kZSA9PT0gdm9pZCAwKSB7IG5vZGUgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGxpbmUgPT09IHZvaWQgMCkgeyBsaW5lID0gbnVsbDsgfVxyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLnggPSB4O1xyXG4gICAgICAgIHRoaXMueSA9IHk7XHJcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcclxuICAgICAgICB0aGlzLmxpbmUgPSBsaW5lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFZlcnQ7XHJcbn0oKSk7XHJcbmV4cG9ydHMuVmVydCA9IFZlcnQ7XHJcbnZhciBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlKHMsIHQpIHtcclxuICAgICAgICB0aGlzLnMgPSBzO1xyXG4gICAgICAgIHRoaXMudCA9IHQ7XHJcbiAgICAgICAgdmFyIG1mID0gTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlLmZpbmRNYXRjaChzLCB0KTtcclxuICAgICAgICB2YXIgdHIgPSB0LnNsaWNlKDApLnJldmVyc2UoKTtcclxuICAgICAgICB2YXIgbXIgPSBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UuZmluZE1hdGNoKHMsIHRyKTtcclxuICAgICAgICBpZiAobWYubGVuZ3RoID49IG1yLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmxlbmd0aCA9IG1mLmxlbmd0aDtcclxuICAgICAgICAgICAgdGhpcy5zaSA9IG1mLnNpO1xyXG4gICAgICAgICAgICB0aGlzLnRpID0gbWYudGk7XHJcbiAgICAgICAgICAgIHRoaXMucmV2ZXJzZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gbXIubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aGlzLnNpID0gbXIuc2k7XHJcbiAgICAgICAgICAgIHRoaXMudGkgPSB0Lmxlbmd0aCAtIG1yLnRpIC0gbXIubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aGlzLnJldmVyc2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UuZmluZE1hdGNoID0gZnVuY3Rpb24gKHMsIHQpIHtcclxuICAgICAgICB2YXIgbSA9IHMubGVuZ3RoO1xyXG4gICAgICAgIHZhciBuID0gdC5sZW5ndGg7XHJcbiAgICAgICAgdmFyIG1hdGNoID0geyBsZW5ndGg6IDAsIHNpOiAtMSwgdGk6IC0xIH07XHJcbiAgICAgICAgdmFyIGwgPSBuZXcgQXJyYXkobSk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtOyBpKyspIHtcclxuICAgICAgICAgICAgbFtpXSA9IG5ldyBBcnJheShuKTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyBqKyspXHJcbiAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PT0gdFtqXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB2ID0gbFtpXVtqXSA9IChpID09PSAwIHx8IGogPT09IDApID8gMSA6IGxbaSAtIDFdW2ogLSAxXSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPiBtYXRjaC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gubGVuZ3RoID0gdjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2guc2kgPSBpIC0gdiArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLnRpID0gaiAtIHYgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgbFtpXVtqXSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXRjaDtcclxuICAgIH07XHJcbiAgICBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UucHJvdG90eXBlLmdldFNlcXVlbmNlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCA+PSAwID8gdGhpcy5zLnNsaWNlKHRoaXMuc2ksIHRoaXMuc2kgKyB0aGlzLmxlbmd0aCkgOiBbXTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlO1xyXG59KCkpO1xyXG5leHBvcnRzLkxvbmdlc3RDb21tb25TdWJzZXF1ZW5jZSA9IExvbmdlc3RDb21tb25TdWJzZXF1ZW5jZTtcclxudmFyIEdyaWRSb3V0ZXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gR3JpZFJvdXRlcihvcmlnaW5hbG5vZGVzLCBhY2Nlc3NvciwgZ3JvdXBQYWRkaW5nKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoZ3JvdXBQYWRkaW5nID09PSB2b2lkIDApIHsgZ3JvdXBQYWRkaW5nID0gMTI7IH1cclxuICAgICAgICB0aGlzLm9yaWdpbmFsbm9kZXMgPSBvcmlnaW5hbG5vZGVzO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBQYWRkaW5nID0gZ3JvdXBQYWRkaW5nO1xyXG4gICAgICAgIHRoaXMubGVhdmVzID0gbnVsbDtcclxuICAgICAgICB0aGlzLm5vZGVzID0gb3JpZ2luYWxub2Rlcy5tYXAoZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIG5ldyBOb2RlV3JhcHBlcihpLCBhY2Nlc3Nvci5nZXRCb3VuZHModiksIGFjY2Vzc29yLmdldENoaWxkcmVuKHYpKTsgfSk7XHJcbiAgICAgICAgdGhpcy5sZWF2ZXMgPSB0aGlzLm5vZGVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gdi5sZWFmOyB9KTtcclxuICAgICAgICB0aGlzLmdyb3VwcyA9IHRoaXMubm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChnKSB7IHJldHVybiAhZy5sZWFmOyB9KTtcclxuICAgICAgICB0aGlzLmNvbHMgPSB0aGlzLmdldEdyaWRMaW5lcygneCcpO1xyXG4gICAgICAgIHRoaXMucm93cyA9IHRoaXMuZ2V0R3JpZExpbmVzKCd5Jyk7XHJcbiAgICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICByZXR1cm4gdi5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7IHJldHVybiBfdGhpcy5ub2Rlc1tjXS5wYXJlbnQgPSB2OyB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnJvb3QgPSB7IGNoaWxkcmVuOiBbXSB9O1xyXG4gICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYucGFyZW50ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgdi5wYXJlbnQgPSBfdGhpcy5yb290O1xyXG4gICAgICAgICAgICAgICAgX3RoaXMucm9vdC5jaGlsZHJlbi5wdXNoKHYuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHYucG9ydHMgPSBbXTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmJhY2tUb0Zyb250ID0gdGhpcy5ub2Rlcy5zbGljZSgwKTtcclxuICAgICAgICB0aGlzLmJhY2tUb0Zyb250LnNvcnQoZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIF90aGlzLmdldERlcHRoKHgpIC0gX3RoaXMuZ2V0RGVwdGgoeSk7IH0pO1xyXG4gICAgICAgIHZhciBmcm9udFRvQmFja0dyb3VwcyA9IHRoaXMuYmFja1RvRnJvbnQuc2xpY2UoMCkucmV2ZXJzZSgpLmZpbHRlcihmdW5jdGlvbiAoZykgeyByZXR1cm4gIWcubGVhZjsgfSk7XHJcbiAgICAgICAgZnJvbnRUb0JhY2tHcm91cHMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICB2YXIgciA9IHJlY3RhbmdsZV8xLlJlY3RhbmdsZS5lbXB0eSgpO1xyXG4gICAgICAgICAgICB2LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGMpIHsgcmV0dXJuIHIgPSByLnVuaW9uKF90aGlzLm5vZGVzW2NdLnJlY3QpOyB9KTtcclxuICAgICAgICAgICAgdi5yZWN0ID0gci5pbmZsYXRlKF90aGlzLmdyb3VwUGFkZGluZyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIGNvbE1pZHMgPSB0aGlzLm1pZFBvaW50cyh0aGlzLmNvbHMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnBvczsgfSkpO1xyXG4gICAgICAgIHZhciByb3dNaWRzID0gdGhpcy5taWRQb2ludHModGhpcy5yb3dzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5wb3M7IH0pKTtcclxuICAgICAgICB2YXIgcm93eCA9IGNvbE1pZHNbMF0sIHJvd1ggPSBjb2xNaWRzW2NvbE1pZHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgdmFyIGNvbHkgPSByb3dNaWRzWzBdLCBjb2xZID0gcm93TWlkc1tyb3dNaWRzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIHZhciBobGluZXMgPSB0aGlzLnJvd3MubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiAoeyB4MTogcm93eCwgeDI6IHJvd1gsIHkxOiByLnBvcywgeTI6IHIucG9zIH0pOyB9KVxyXG4gICAgICAgICAgICAuY29uY2F0KHJvd01pZHMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiAoeyB4MTogcm93eCwgeDI6IHJvd1gsIHkxOiBtLCB5MjogbSB9KTsgfSkpO1xyXG4gICAgICAgIHZhciB2bGluZXMgPSB0aGlzLmNvbHMubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiAoeyB4MTogYy5wb3MsIHgyOiBjLnBvcywgeTE6IGNvbHksIHkyOiBjb2xZIH0pOyB9KVxyXG4gICAgICAgICAgICAuY29uY2F0KGNvbE1pZHMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiAoeyB4MTogbSwgeDI6IG0sIHkxOiBjb2x5LCB5MjogY29sWSB9KTsgfSkpO1xyXG4gICAgICAgIHZhciBsaW5lcyA9IGhsaW5lcy5jb25jYXQodmxpbmVzKTtcclxuICAgICAgICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uIChsKSB7IHJldHVybiBsLnZlcnRzID0gW107IH0pO1xyXG4gICAgICAgIHRoaXMudmVydHMgPSBbXTtcclxuICAgICAgICB0aGlzLmVkZ2VzID0gW107XHJcbiAgICAgICAgaGxpbmVzLmZvckVhY2goZnVuY3Rpb24gKGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcCA9IG5ldyBWZXJ0KF90aGlzLnZlcnRzLmxlbmd0aCwgdi54MSwgaC55MSk7XHJcbiAgICAgICAgICAgICAgICBoLnZlcnRzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICB2LnZlcnRzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy52ZXJ0cy5wdXNoKHApO1xyXG4gICAgICAgICAgICAgICAgdmFyIGkgPSBfdGhpcy5iYWNrVG9Gcm9udC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gX3RoaXMuYmFja1RvRnJvbnRbaV0sIHIgPSBub2RlLnJlY3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR4ID0gTWF0aC5hYnMocC54IC0gci5jeCgpKSwgZHkgPSBNYXRoLmFicyhwLnkgLSByLmN5KCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkeCA8IHIud2lkdGgoKSAvIDIgJiYgZHkgPCByLmhlaWdodCgpIC8gMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLm5vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxpbmVzLmZvckVhY2goZnVuY3Rpb24gKGwsIGxpKSB7XHJcbiAgICAgICAgICAgIF90aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgICAgIHYucmVjdC5saW5lSW50ZXJzZWN0aW9ucyhsLngxLCBsLnkxLCBsLngyLCBsLnkyKS5mb3JFYWNoKGZ1bmN0aW9uIChpbnRlcnNlY3QsIGopIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IG5ldyBWZXJ0KF90aGlzLnZlcnRzLmxlbmd0aCwgaW50ZXJzZWN0LngsIGludGVyc2VjdC55LCB2LCBsKTtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy52ZXJ0cy5wdXNoKHApO1xyXG4gICAgICAgICAgICAgICAgICAgIGwudmVydHMucHVzaChwKTtcclxuICAgICAgICAgICAgICAgICAgICB2LnBvcnRzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHZhciBpc0hvcml6ID0gTWF0aC5hYnMobC55MSAtIGwueTIpIDwgMC4xO1xyXG4gICAgICAgICAgICB2YXIgZGVsdGEgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gaXNIb3JpeiA/IGIueCAtIGEueCA6IGIueSAtIGEueTsgfTtcclxuICAgICAgICAgICAgbC52ZXJ0cy5zb3J0KGRlbHRhKTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBsLnZlcnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdSA9IGwudmVydHNbaSAtIDFdLCB2ID0gbC52ZXJ0c1tpXTtcclxuICAgICAgICAgICAgICAgIGlmICh1Lm5vZGUgJiYgdS5ub2RlID09PSB2Lm5vZGUgJiYgdS5ub2RlLmxlYWYpXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5lZGdlcy5wdXNoKHsgc291cmNlOiB1LmlkLCB0YXJnZXQ6IHYuaWQsIGxlbmd0aDogTWF0aC5hYnMoZGVsdGEodSwgdikpIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBHcmlkUm91dGVyLnByb3RvdHlwZS5hdmcgPSBmdW5jdGlvbiAoYSkgeyByZXR1cm4gYS5yZWR1Y2UoZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHggKyB5OyB9KSAvIGEubGVuZ3RoOyB9O1xyXG4gICAgR3JpZFJvdXRlci5wcm90b3R5cGUuZ2V0R3JpZExpbmVzID0gZnVuY3Rpb24gKGF4aXMpIHtcclxuICAgICAgICB2YXIgY29sdW1ucyA9IFtdO1xyXG4gICAgICAgIHZhciBscyA9IHRoaXMubGVhdmVzLnNsaWNlKDAsIHRoaXMubGVhdmVzLmxlbmd0aCk7XHJcbiAgICAgICAgd2hpbGUgKGxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdmFyIG92ZXJsYXBwaW5nID0gbHMuZmlsdGVyKGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LnJlY3RbJ292ZXJsYXAnICsgYXhpcy50b1VwcGVyQ2FzZSgpXShsc1swXS5yZWN0KTsgfSk7XHJcbiAgICAgICAgICAgIHZhciBjb2wgPSB7XHJcbiAgICAgICAgICAgICAgICBub2Rlczogb3ZlcmxhcHBpbmcsXHJcbiAgICAgICAgICAgICAgICBwb3M6IHRoaXMuYXZnKG92ZXJsYXBwaW5nLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi5yZWN0WydjJyArIGF4aXNdKCk7IH0pKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgICAgICAgY29sLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIGxzLnNwbGljZShscy5pbmRleE9mKHYpLCAxKTsgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbHVtbnMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5wb3MgLSBiLnBvczsgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbHVtbnM7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5wcm90b3R5cGUuZ2V0RGVwdGggPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBkZXB0aCA9IDA7XHJcbiAgICAgICAgd2hpbGUgKHYucGFyZW50ICE9PSB0aGlzLnJvb3QpIHtcclxuICAgICAgICAgICAgZGVwdGgrKztcclxuICAgICAgICAgICAgdiA9IHYucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGVwdGg7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5wcm90b3R5cGUubWlkUG9pbnRzID0gZnVuY3Rpb24gKGEpIHtcclxuICAgICAgICB2YXIgZ2FwID0gYVsxXSAtIGFbMF07XHJcbiAgICAgICAgdmFyIG1pZHMgPSBbYVswXSAtIGdhcCAvIDJdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBtaWRzLnB1c2goKGFbaV0gKyBhW2kgLSAxXSkgLyAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWlkcy5wdXNoKGFbYS5sZW5ndGggLSAxXSArIGdhcCAvIDIpO1xyXG4gICAgICAgIHJldHVybiBtaWRzO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLmZpbmRMaW5lYWdlID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbGluZWFnZSA9IFt2XTtcclxuICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIHYgPSB2LnBhcmVudDtcclxuICAgICAgICAgICAgbGluZWFnZS5wdXNoKHYpO1xyXG4gICAgICAgIH0gd2hpbGUgKHYgIT09IHRoaXMucm9vdCk7XHJcbiAgICAgICAgcmV0dXJuIGxpbmVhZ2UucmV2ZXJzZSgpO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLmZpbmRBbmNlc3RvclBhdGhCZXR3ZWVuID0gZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICB2YXIgYWEgPSB0aGlzLmZpbmRMaW5lYWdlKGEpLCBiYSA9IHRoaXMuZmluZExpbmVhZ2UoYiksIGkgPSAwO1xyXG4gICAgICAgIHdoaWxlIChhYVtpXSA9PT0gYmFbaV0pXHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICByZXR1cm4geyBjb21tb25BbmNlc3RvcjogYWFbaSAtIDFdLCBsaW5lYWdlczogYWEuc2xpY2UoaSkuY29uY2F0KGJhLnNsaWNlKGkpKSB9O1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLnNpYmxpbmdPYnN0YWNsZXMgPSBmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHBhdGggPSB0aGlzLmZpbmRBbmNlc3RvclBhdGhCZXR3ZWVuKGEsIGIpO1xyXG4gICAgICAgIHZhciBsaW5lYWdlTG9va3VwID0ge307XHJcbiAgICAgICAgcGF0aC5saW5lYWdlcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7IHJldHVybiBsaW5lYWdlTG9va3VwW3YuaWRdID0ge307IH0pO1xyXG4gICAgICAgIHZhciBvYnN0YWNsZXMgPSBwYXRoLmNvbW1vbkFuY2VzdG9yLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gISh2IGluIGxpbmVhZ2VMb29rdXApOyB9KTtcclxuICAgICAgICBwYXRoLmxpbmVhZ2VzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYucGFyZW50ICE9PSBwYXRoLmNvbW1vbkFuY2VzdG9yOyB9KVxyXG4gICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAodikgeyByZXR1cm4gb2JzdGFjbGVzID0gb2JzdGFjbGVzLmNvbmNhdCh2LnBhcmVudC5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMgIT09IHYuaWQ7IH0pKTsgfSk7XHJcbiAgICAgICAgcmV0dXJuIG9ic3RhY2xlcy5tYXAoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIF90aGlzLm5vZGVzW3ZdOyB9KTtcclxuICAgIH07XHJcbiAgICBHcmlkUm91dGVyLmdldFNlZ21lbnRTZXRzID0gZnVuY3Rpb24gKHJvdXRlcywgeCwgeSkge1xyXG4gICAgICAgIHZhciB2c2VnbWVudHMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBlaSA9IDA7IGVpIDwgcm91dGVzLmxlbmd0aDsgZWkrKykge1xyXG4gICAgICAgICAgICB2YXIgcm91dGUgPSByb3V0ZXNbZWldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBzaSA9IDA7IHNpIDwgcm91dGUubGVuZ3RoOyBzaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcyA9IHJvdXRlW3NpXTtcclxuICAgICAgICAgICAgICAgIHMuZWRnZWlkID0gZWk7XHJcbiAgICAgICAgICAgICAgICBzLmkgPSBzaTtcclxuICAgICAgICAgICAgICAgIHZhciBzZHggPSBzWzFdW3hdIC0gc1swXVt4XTtcclxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzZHgpIDwgMC4xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdnNlZ21lbnRzLnB1c2gocyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdnNlZ21lbnRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGFbMF1beF0gLSBiWzBdW3hdOyB9KTtcclxuICAgICAgICB2YXIgdnNlZ21lbnRzZXRzID0gW107XHJcbiAgICAgICAgdmFyIHNlZ21lbnRzZXQgPSBudWxsO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdnNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gdnNlZ21lbnRzW2ldO1xyXG4gICAgICAgICAgICBpZiAoIXNlZ21lbnRzZXQgfHwgTWF0aC5hYnMoc1swXVt4XSAtIHNlZ21lbnRzZXQucG9zKSA+IDAuMSkge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudHNldCA9IHsgcG9zOiBzWzBdW3hdLCBzZWdtZW50czogW10gfTtcclxuICAgICAgICAgICAgICAgIHZzZWdtZW50c2V0cy5wdXNoKHNlZ21lbnRzZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNlZ21lbnRzZXQuc2VnbWVudHMucHVzaChzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZzZWdtZW50c2V0cztcclxuICAgIH07XHJcbiAgICBHcmlkUm91dGVyLm51ZGdlU2VncyA9IGZ1bmN0aW9uICh4LCB5LCByb3V0ZXMsIHNlZ21lbnRzLCBsZWZ0T2YsIGdhcCkge1xyXG4gICAgICAgIHZhciBuID0gc2VnbWVudHMubGVuZ3RoO1xyXG4gICAgICAgIGlmIChuIDw9IDEpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB2YXIgdnMgPSBzZWdtZW50cy5tYXAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIG5ldyB2cHNjXzEuVmFyaWFibGUoc1swXVt4XSk7IH0pO1xyXG4gICAgICAgIHZhciBjcyA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gailcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIHZhciBzMSA9IHNlZ21lbnRzW2ldLCBzMiA9IHNlZ21lbnRzW2pdLCBlMSA9IHMxLmVkZ2VpZCwgZTIgPSBzMi5lZGdlaWQsIGxpbmQgPSAtMSwgcmluZCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgaWYgKHggPT0gJ3gnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRPZihlMSwgZTIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMVswXVt5XSA8IHMxWzFdW3ldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5kID0gaiwgcmluZCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5kID0gaSwgcmluZCA9IGo7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGVmdE9mKGUxLCBlMikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxWzBdW3ldIDwgczFbMV1beV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmQgPSBpLCByaW5kID0gajtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmQgPSBqLCByaW5kID0gaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChsaW5kID49IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBjcy5wdXNoKG5ldyB2cHNjXzEuQ29uc3RyYWludCh2c1tsaW5kXSwgdnNbcmluZF0sIGdhcCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzb2x2ZXIgPSBuZXcgdnBzY18xLlNvbHZlcih2cywgY3MpO1xyXG4gICAgICAgIHNvbHZlci5zb2x2ZSgpO1xyXG4gICAgICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcclxuICAgICAgICAgICAgdmFyIHMgPSBzZWdtZW50c1tpXTtcclxuICAgICAgICAgICAgdmFyIHBvcyA9IHYucG9zaXRpb24oKTtcclxuICAgICAgICAgICAgc1swXVt4XSA9IHNbMV1beF0gPSBwb3M7XHJcbiAgICAgICAgICAgIHZhciByb3V0ZSA9IHJvdXRlc1tzLmVkZ2VpZF07XHJcbiAgICAgICAgICAgIGlmIChzLmkgPiAwKVxyXG4gICAgICAgICAgICAgICAgcm91dGVbcy5pIC0gMV1bMV1beF0gPSBwb3M7XHJcbiAgICAgICAgICAgIGlmIChzLmkgPCByb3V0ZS5sZW5ndGggLSAxKVxyXG4gICAgICAgICAgICAgICAgcm91dGVbcy5pICsgMV1bMF1beF0gPSBwb3M7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5udWRnZVNlZ21lbnRzID0gZnVuY3Rpb24gKHJvdXRlcywgeCwgeSwgbGVmdE9mLCBnYXApIHtcclxuICAgICAgICB2YXIgdnNlZ21lbnRzZXRzID0gR3JpZFJvdXRlci5nZXRTZWdtZW50U2V0cyhyb3V0ZXMsIHgsIHkpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdnNlZ21lbnRzZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBzcyA9IHZzZWdtZW50c2V0c1tpXTtcclxuICAgICAgICAgICAgdmFyIGV2ZW50cyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNzLnNlZ21lbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcyA9IHNzLnNlZ21lbnRzW2pdO1xyXG4gICAgICAgICAgICAgICAgZXZlbnRzLnB1c2goeyB0eXBlOiAwLCBzOiBzLCBwb3M6IE1hdGgubWluKHNbMF1beV0sIHNbMV1beV0pIH0pO1xyXG4gICAgICAgICAgICAgICAgZXZlbnRzLnB1c2goeyB0eXBlOiAxLCBzOiBzLCBwb3M6IE1hdGgubWF4KHNbMF1beV0sIHNbMV1beV0pIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGV2ZW50cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLnBvcyAtIGIucG9zICsgYS50eXBlIC0gYi50eXBlOyB9KTtcclxuICAgICAgICAgICAgdmFyIG9wZW4gPSBbXTtcclxuICAgICAgICAgICAgdmFyIG9wZW5Db3VudCA9IDA7XHJcbiAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZS50eXBlID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3Blbi5wdXNoKGUucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgb3BlbkNvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvcGVuQ291bnQtLTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChvcGVuQ291bnQgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIEdyaWRSb3V0ZXIubnVkZ2VTZWdzKHgsIHksIHJvdXRlcywgb3BlbiwgbGVmdE9mLCBnYXApO1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZW4gPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLnJvdXRlRWRnZXMgPSBmdW5jdGlvbiAoZWRnZXMsIG51ZGdlR2FwLCBzb3VyY2UsIHRhcmdldCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHJvdXRlUGF0aHMgPSBlZGdlcy5tYXAoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF90aGlzLnJvdXRlKHNvdXJjZShlKSwgdGFyZ2V0KGUpKTsgfSk7XHJcbiAgICAgICAgdmFyIG9yZGVyID0gR3JpZFJvdXRlci5vcmRlckVkZ2VzKHJvdXRlUGF0aHMpO1xyXG4gICAgICAgIHZhciByb3V0ZXMgPSByb3V0ZVBhdGhzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gR3JpZFJvdXRlci5tYWtlU2VnbWVudHMoZSk7IH0pO1xyXG4gICAgICAgIEdyaWRSb3V0ZXIubnVkZ2VTZWdtZW50cyhyb3V0ZXMsICd4JywgJ3knLCBvcmRlciwgbnVkZ2VHYXApO1xyXG4gICAgICAgIEdyaWRSb3V0ZXIubnVkZ2VTZWdtZW50cyhyb3V0ZXMsICd5JywgJ3gnLCBvcmRlciwgbnVkZ2VHYXApO1xyXG4gICAgICAgIEdyaWRSb3V0ZXIudW5yZXZlcnNlRWRnZXMocm91dGVzLCByb3V0ZVBhdGhzKTtcclxuICAgICAgICByZXR1cm4gcm91dGVzO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIudW5yZXZlcnNlRWRnZXMgPSBmdW5jdGlvbiAocm91dGVzLCByb3V0ZVBhdGhzKSB7XHJcbiAgICAgICAgcm91dGVzLmZvckVhY2goZnVuY3Rpb24gKHNlZ21lbnRzLCBpKSB7XHJcbiAgICAgICAgICAgIHZhciBwYXRoID0gcm91dGVQYXRoc1tpXTtcclxuICAgICAgICAgICAgaWYgKHBhdGgucmV2ZXJzZWQpIHtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnRzLnJldmVyc2UoKTtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnRzLmZvckVhY2goZnVuY3Rpb24gKHNlZ21lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LnJldmVyc2UoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5hbmdsZUJldHdlZW4yTGluZXMgPSBmdW5jdGlvbiAobGluZTEsIGxpbmUyKSB7XHJcbiAgICAgICAgdmFyIGFuZ2xlMSA9IE1hdGguYXRhbjIobGluZTFbMF0ueSAtIGxpbmUxWzFdLnksIGxpbmUxWzBdLnggLSBsaW5lMVsxXS54KTtcclxuICAgICAgICB2YXIgYW5nbGUyID0gTWF0aC5hdGFuMihsaW5lMlswXS55IC0gbGluZTJbMV0ueSwgbGluZTJbMF0ueCAtIGxpbmUyWzFdLngpO1xyXG4gICAgICAgIHZhciBkaWZmID0gYW5nbGUxIC0gYW5nbGUyO1xyXG4gICAgICAgIGlmIChkaWZmID4gTWF0aC5QSSB8fCBkaWZmIDwgLU1hdGguUEkpIHtcclxuICAgICAgICAgICAgZGlmZiA9IGFuZ2xlMiAtIGFuZ2xlMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRpZmY7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5pc0xlZnQgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xyXG4gICAgICAgIHJldHVybiAoKGIueCAtIGEueCkgKiAoYy55IC0gYS55KSAtIChiLnkgLSBhLnkpICogKGMueCAtIGEueCkpIDw9IDA7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5nZXRPcmRlciA9IGZ1bmN0aW9uIChwYWlycykge1xyXG4gICAgICAgIHZhciBvdXRnb2luZyA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFpcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIHAgPSBwYWlyc1tpXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvdXRnb2luZ1twLmxdID09PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgICAgIG91dGdvaW5nW3AubF0gPSB7fTtcclxuICAgICAgICAgICAgb3V0Z29pbmdbcC5sXVtwLnJdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChsLCByKSB7IHJldHVybiB0eXBlb2Ygb3V0Z29pbmdbbF0gIT09ICd1bmRlZmluZWQnICYmIG91dGdvaW5nW2xdW3JdOyB9O1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIub3JkZXJFZGdlcyA9IGZ1bmN0aW9uIChlZGdlcykge1xyXG4gICAgICAgIHZhciBlZGdlT3JkZXIgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBlZGdlcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGUgPSBlZGdlc1tpXSwgZiA9IGVkZ2VzW2pdLCBsY3MgPSBuZXcgTG9uZ2VzdENvbW1vblN1YnNlcXVlbmNlKGUsIGYpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHUsIHZpLCB2ajtcclxuICAgICAgICAgICAgICAgIGlmIChsY3MubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxjcy5yZXZlcnNlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGYucmV2ZXJzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGYucmV2ZXJzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxjcyA9IG5ldyBMb25nZXN0Q29tbW9uU3Vic2VxdWVuY2UoZSwgZik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKGxjcy5zaSA8PSAwIHx8IGxjcy50aSA8PSAwKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChsY3Muc2kgKyBsY3MubGVuZ3RoID49IGUubGVuZ3RoIHx8IGxjcy50aSArIGxjcy5sZW5ndGggPj0gZi5sZW5ndGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZU9yZGVyLnB1c2goeyBsOiBpLCByOiBqIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGxjcy5zaSArIGxjcy5sZW5ndGggPj0gZS5sZW5ndGggfHwgbGNzLnRpICsgbGNzLmxlbmd0aCA+PSBmLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHUgPSBlW2xjcy5zaSArIDFdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZqID0gZVtsY3Muc2kgLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICB2aSA9IGZbbGNzLnRpIC0gMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB1ID0gZVtsY3Muc2kgKyBsY3MubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgICAgICAgICAgICAgdmkgPSBlW2xjcy5zaSArIGxjcy5sZW5ndGhdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZqID0gZltsY3MudGkgKyBsY3MubGVuZ3RoXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChHcmlkUm91dGVyLmlzTGVmdCh1LCB2aSwgdmopKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZU9yZGVyLnB1c2goeyBsOiBqLCByOiBpIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWRnZU9yZGVyLnB1c2goeyBsOiBpLCByOiBqIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBHcmlkUm91dGVyLmdldE9yZGVyKGVkZ2VPcmRlcik7XHJcbiAgICB9O1xyXG4gICAgR3JpZFJvdXRlci5tYWtlU2VnbWVudHMgPSBmdW5jdGlvbiAocGF0aCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGNvcHlQb2ludChwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHg6IHAueCwgeTogcC55IH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBpc1N0cmFpZ2h0ID0gZnVuY3Rpb24gKGEsIGIsIGMpIHsgcmV0dXJuIE1hdGguYWJzKChiLnggLSBhLngpICogKGMueSAtIGEueSkgLSAoYi55IC0gYS55KSAqIChjLnggLSBhLngpKSA8IDAuMDAxOyB9O1xyXG4gICAgICAgIHZhciBzZWdtZW50cyA9IFtdO1xyXG4gICAgICAgIHZhciBhID0gY29weVBvaW50KHBhdGhbMF0pO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgYiA9IGNvcHlQb2ludChwYXRoW2ldKSwgYyA9IGkgPCBwYXRoLmxlbmd0aCAtIDEgPyBwYXRoW2kgKyAxXSA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmICghYyB8fCAhaXNTdHJhaWdodChhLCBiLCBjKSkge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudHMucHVzaChbYSwgYl0pO1xyXG4gICAgICAgICAgICAgICAgYSA9IGI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlZ21lbnRzO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIucHJvdG90eXBlLnJvdXRlID0gZnVuY3Rpb24gKHMsIHQpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciBzb3VyY2UgPSB0aGlzLm5vZGVzW3NdLCB0YXJnZXQgPSB0aGlzLm5vZGVzW3RdO1xyXG4gICAgICAgIHRoaXMub2JzdGFjbGVzID0gdGhpcy5zaWJsaW5nT2JzdGFjbGVzKHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICB2YXIgb2JzdGFjbGVMb29rdXAgPSB7fTtcclxuICAgICAgICB0aGlzLm9ic3RhY2xlcy5mb3JFYWNoKGZ1bmN0aW9uIChvKSB7IHJldHVybiBvYnN0YWNsZUxvb2t1cFtvLmlkXSA9IG87IH0pO1xyXG4gICAgICAgIHRoaXMucGFzc2FibGVFZGdlcyA9IHRoaXMuZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIHZhciB1ID0gX3RoaXMudmVydHNbZS5zb3VyY2VdLCB2ID0gX3RoaXMudmVydHNbZS50YXJnZXRdO1xyXG4gICAgICAgICAgICByZXR1cm4gISh1Lm5vZGUgJiYgdS5ub2RlLmlkIGluIG9ic3RhY2xlTG9va3VwXHJcbiAgICAgICAgICAgICAgICB8fCB2Lm5vZGUgJiYgdi5ub2RlLmlkIGluIG9ic3RhY2xlTG9va3VwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNvdXJjZS5wb3J0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgdSA9IHNvdXJjZS5wb3J0c1swXS5pZDtcclxuICAgICAgICAgICAgdmFyIHYgPSBzb3VyY2UucG9ydHNbaV0uaWQ7XHJcbiAgICAgICAgICAgIHRoaXMucGFzc2FibGVFZGdlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHNvdXJjZTogdSxcclxuICAgICAgICAgICAgICAgIHRhcmdldDogdixcclxuICAgICAgICAgICAgICAgIGxlbmd0aDogMFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0YXJnZXQucG9ydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIHUgPSB0YXJnZXQucG9ydHNbMF0uaWQ7XHJcbiAgICAgICAgICAgIHZhciB2ID0gdGFyZ2V0LnBvcnRzW2ldLmlkO1xyXG4gICAgICAgICAgICB0aGlzLnBhc3NhYmxlRWRnZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHUsXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHYsXHJcbiAgICAgICAgICAgICAgICBsZW5ndGg6IDBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBnZXRTb3VyY2UgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zb3VyY2U7IH0sIGdldFRhcmdldCA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRhcmdldDsgfSwgZ2V0TGVuZ3RoID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUubGVuZ3RoOyB9O1xyXG4gICAgICAgIHZhciBzaG9ydGVzdFBhdGhDYWxjdWxhdG9yID0gbmV3IHNob3J0ZXN0cGF0aHNfMS5DYWxjdWxhdG9yKHRoaXMudmVydHMubGVuZ3RoLCB0aGlzLnBhc3NhYmxlRWRnZXMsIGdldFNvdXJjZSwgZ2V0VGFyZ2V0LCBnZXRMZW5ndGgpO1xyXG4gICAgICAgIHZhciBiZW5kUGVuYWx0eSA9IGZ1bmN0aW9uICh1LCB2LCB3KSB7XHJcbiAgICAgICAgICAgIHZhciBhID0gX3RoaXMudmVydHNbdV0sIGIgPSBfdGhpcy52ZXJ0c1t2XSwgYyA9IF90aGlzLnZlcnRzW3ddO1xyXG4gICAgICAgICAgICB2YXIgZHggPSBNYXRoLmFicyhjLnggLSBhLngpLCBkeSA9IE1hdGguYWJzKGMueSAtIGEueSk7XHJcbiAgICAgICAgICAgIGlmIChhLm5vZGUgPT09IHNvdXJjZSAmJiBhLm5vZGUgPT09IGIubm9kZSB8fCBiLm5vZGUgPT09IHRhcmdldCAmJiBiLm5vZGUgPT09IGMubm9kZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICByZXR1cm4gZHggPiAxICYmIGR5ID4gMSA/IDEwMDAgOiAwO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdmFyIHNob3J0ZXN0UGF0aCA9IHNob3J0ZXN0UGF0aENhbGN1bGF0b3IuUGF0aEZyb21Ob2RlVG9Ob2RlV2l0aFByZXZDb3N0KHNvdXJjZS5wb3J0c1swXS5pZCwgdGFyZ2V0LnBvcnRzWzBdLmlkLCBiZW5kUGVuYWx0eSk7XHJcbiAgICAgICAgdmFyIHBhdGhQb2ludHMgPSBzaG9ydGVzdFBhdGgucmV2ZXJzZSgpLm1hcChmdW5jdGlvbiAodmkpIHsgcmV0dXJuIF90aGlzLnZlcnRzW3ZpXTsgfSk7XHJcbiAgICAgICAgcGF0aFBvaW50cy5wdXNoKHRoaXMubm9kZXNbdGFyZ2V0LmlkXS5wb3J0c1swXSk7XHJcbiAgICAgICAgcmV0dXJuIHBhdGhQb2ludHMuZmlsdGVyKGZ1bmN0aW9uICh2LCBpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhKGkgPCBwYXRoUG9pbnRzLmxlbmd0aCAtIDEgJiYgcGF0aFBvaW50c1tpICsgMV0ubm9kZSA9PT0gc291cmNlICYmIHYubm9kZSA9PT0gc291cmNlXHJcbiAgICAgICAgICAgICAgICB8fCBpID4gMCAmJiB2Lm5vZGUgPT09IHRhcmdldCAmJiBwYXRoUG9pbnRzW2kgLSAxXS5ub2RlID09PSB0YXJnZXQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIEdyaWRSb3V0ZXIuZ2V0Um91dGVQYXRoID0gZnVuY3Rpb24gKHJvdXRlLCBjb3JuZXJyYWRpdXMsIGFycm93d2lkdGgsIGFycm93aGVpZ2h0KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgcm91dGVwYXRoOiAnTSAnICsgcm91dGVbMF1bMF0ueCArICcgJyArIHJvdXRlWzBdWzBdLnkgKyAnICcsXHJcbiAgICAgICAgICAgIGFycm93cGF0aDogJydcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChyb3V0ZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm91dGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBsaSA9IHJvdXRlW2ldO1xyXG4gICAgICAgICAgICAgICAgdmFyIHggPSBsaVsxXS54LCB5ID0gbGlbMV0ueTtcclxuICAgICAgICAgICAgICAgIHZhciBkeCA9IHggLSBsaVswXS54O1xyXG4gICAgICAgICAgICAgICAgdmFyIGR5ID0geSAtIGxpWzBdLnk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaSA8IHJvdXRlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoZHgpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4IC09IGR4IC8gTWF0aC5hYnMoZHgpICogY29ybmVycmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeSAtPSBkeSAvIE1hdGguYWJzKGR5KSAqIGNvcm5lcnJhZGl1cztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJvdXRlcGF0aCArPSAnTCAnICsgeCArICcgJyArIHkgKyAnICc7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSByb3V0ZVtpICsgMV07XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHgwID0gbFswXS54LCB5MCA9IGxbMF0ueTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgeDEgPSBsWzFdLng7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHkxID0gbFsxXS55O1xyXG4gICAgICAgICAgICAgICAgICAgIGR4ID0geDEgLSB4MDtcclxuICAgICAgICAgICAgICAgICAgICBkeSA9IHkxIC0geTA7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFuZ2xlID0gR3JpZFJvdXRlci5hbmdsZUJldHdlZW4yTGluZXMobGksIGwpIDwgMCA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB4MiwgeTI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGR4KSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDIgPSB4MCArIGR4IC8gTWF0aC5hYnMoZHgpICogY29ybmVycmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB5MiA9IHkwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDIgPSB4MDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeTIgPSB5MCArIGR5IC8gTWF0aC5hYnMoZHkpICogY29ybmVycmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB2YXIgY3ggPSBNYXRoLmFicyh4MiAtIHgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjeSA9IE1hdGguYWJzKHkyIC0geSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJvdXRlcGF0aCArPSAnQSAnICsgY3ggKyAnICcgKyBjeSArICcgMCAwICcgKyBhbmdsZSArICcgJyArIHgyICsgJyAnICsgeTIgKyAnICc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYXJyb3d0aXAgPSBbeCwgeV07XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFycm93Y29ybmVyMSwgYXJyb3djb3JuZXIyO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhkeCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHggLT0gZHggLyBNYXRoLmFicyhkeCkgKiBhcnJvd2hlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIxID0gW3gsIHkgKyBhcnJvd3dpZHRoXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIyID0gW3gsIHkgLSBhcnJvd3dpZHRoXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgLT0gZHkgLyBNYXRoLmFicyhkeSkgKiBhcnJvd2hlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIxID0gW3ggKyBhcnJvd3dpZHRoLCB5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3djb3JuZXIyID0gW3ggLSBhcnJvd3dpZHRoLCB5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJvdXRlcGF0aCArPSAnTCAnICsgeCArICcgJyArIHkgKyAnICc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFycm93aGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXJyb3dwYXRoID0gJ00gJyArIGFycm93dGlwWzBdICsgJyAnICsgYXJyb3d0aXBbMV0gKyAnIEwgJyArIGFycm93Y29ybmVyMVswXSArICcgJyArIGFycm93Y29ybmVyMVsxXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnIEwgJyArIGFycm93Y29ybmVyMlswXSArICcgJyArIGFycm93Y29ybmVyMlsxXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBsaSA9IHJvdXRlWzBdO1xyXG4gICAgICAgICAgICB2YXIgeCA9IGxpWzFdLngsIHkgPSBsaVsxXS55O1xyXG4gICAgICAgICAgICB2YXIgZHggPSB4IC0gbGlbMF0ueDtcclxuICAgICAgICAgICAgdmFyIGR5ID0geSAtIGxpWzBdLnk7XHJcbiAgICAgICAgICAgIHZhciBhcnJvd3RpcCA9IFt4LCB5XTtcclxuICAgICAgICAgICAgdmFyIGFycm93Y29ybmVyMSwgYXJyb3djb3JuZXIyO1xyXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMoZHgpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgeCAtPSBkeCAvIE1hdGguYWJzKGR4KSAqIGFycm93aGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgYXJyb3djb3JuZXIxID0gW3gsIHkgKyBhcnJvd3dpZHRoXTtcclxuICAgICAgICAgICAgICAgIGFycm93Y29ybmVyMiA9IFt4LCB5IC0gYXJyb3d3aWR0aF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB5IC09IGR5IC8gTWF0aC5hYnMoZHkpICogYXJyb3doZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBhcnJvd2Nvcm5lcjEgPSBbeCArIGFycm93d2lkdGgsIHldO1xyXG4gICAgICAgICAgICAgICAgYXJyb3djb3JuZXIyID0gW3ggLSBhcnJvd3dpZHRoLCB5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQucm91dGVwYXRoICs9ICdMICcgKyB4ICsgJyAnICsgeSArICcgJztcclxuICAgICAgICAgICAgaWYgKGFycm93aGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LmFycm93cGF0aCA9ICdNICcgKyBhcnJvd3RpcFswXSArICcgJyArIGFycm93dGlwWzFdICsgJyBMICcgKyBhcnJvd2Nvcm5lcjFbMF0gKyAnICcgKyBhcnJvd2Nvcm5lcjFbMV1cclxuICAgICAgICAgICAgICAgICAgICArICcgTCAnICsgYXJyb3djb3JuZXIyWzBdICsgJyAnICsgYXJyb3djb3JuZXIyWzFdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEdyaWRSb3V0ZXI7XHJcbn0oKSk7XHJcbmV4cG9ydHMuR3JpZFJvdXRlciA9IEdyaWRSb3V0ZXI7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVozSnBaSEp2ZFhSbGNpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMMWRsWWtOdmJHRXZjM0pqTDJkeWFXUnliM1YwWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZEUVN4NVEwRkJjVU03UVVGRGNrTXNLMEpCUVcxRU8wRkJRMjVFTEdsRVFVRXdRenRCUVV0MFF6dEpRVWxKTEhGQ1FVRnRRaXhGUVVGVkxFVkJRVk1zU1VGQlpTeEZRVUZUTEZGQlFXdENPMUZCUVRkRUxFOUJRVVVzUjBGQlJpeEZRVUZGTEVOQlFWRTdVVUZCVXl4VFFVRkpMRWRCUVVvc1NVRkJTU3hEUVVGWE8xRkJRVk1zWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCVlR0UlFVTTFSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEU5QlFVOHNVVUZCVVN4TFFVRkxMRmRCUVZjc1NVRkJTU3hSUVVGUkxFTkJRVU1zVFVGQlRTeExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTjZSU3hEUVVGRE8wbEJRMHdzYTBKQlFVTTdRVUZCUkN4RFFVRkRMRUZCVUVRc1NVRlBRenRCUVZCWkxHdERRVUZYTzBGQlVYaENPMGxCUTBrc1kwRkJiVUlzUlVGQlZTeEZRVUZUTEVOQlFWRXNSVUZCVXl4RFFVRlRMRVZCUVZNc1NVRkJkMElzUlVGQlV5eEpRVUZYTzFGQlFUVkRMSEZDUVVGQkxFVkJRVUVzVjBGQmQwSTdVVUZCVXl4eFFrRkJRU3hGUVVGQkxGZEJRVmM3VVVGQmJFY3NUMEZCUlN4SFFVRkdMRVZCUVVVc1EwRkJVVHRSUVVGVExFMUJRVU1zUjBGQlJDeERRVUZETEVOQlFVODdVVUZCVXl4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGUk8xRkJRVk1zVTBGQlNTeEhRVUZLTEVsQlFVa3NRMEZCYjBJN1VVRkJVeXhUUVVGSkxFZEJRVW9zU1VGQlNTeERRVUZQTzBsQlFVY3NRMEZCUXp0SlFVTTNTQ3hYUVVGRE8wRkJRVVFzUTBGQlF5eEJRVVpFTEVsQlJVTTdRVUZHV1N4dlFrRkJTVHRCUVVscVFqdEpRVXRKTEd0RFFVRnRRaXhEUVVGTkxFVkJRVk1zUTBGQlRUdFJRVUZ5UWl4TlFVRkRMRWRCUVVRc1EwRkJReXhEUVVGTE8xRkJRVk1zVFVGQlF5eEhRVUZFTEVOQlFVTXNRMEZCU3p0UlFVTndReXhKUVVGSkxFVkJRVVVzUjBGQlJ5eDNRa0ZCZDBJc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdVVUZET1VJc1NVRkJTU3hGUVVGRkxFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTnVSQ3hKUVVGSkxFVkJRVVVzUTBGQlF5eE5RVUZOTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVONFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU03V1VGRGVFSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEyaENMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTm9RaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTjZRanRoUVVGTk8xbEJRMGdzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU5vUWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETzFsQlEzWkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFOQlEzaENPMGxCUTB3c1EwRkJRenRKUVVOakxHdERRVUZUTEVkQlFYaENMRlZCUVRSQ0xFTkJRVTBzUlVGQlJTeERRVUZOTzFGQlEzUkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYWtJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnFRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRekZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGVFSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNCQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTjBRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3YjBKQlEyWXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU5xUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTzNkQ1FVTnNRaXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0M1FrRkRha0lzUzBGQlN5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dDNRa0ZEY2tJc1MwRkJTeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR4UWtGRGVFSTdiMEpCUVVFc1EwRkJRenRwUWtGRFREczdiMEpCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVNeFFqdFJRVU5FTEU5QlFVOHNTMEZCU3l4RFFVRkRPMGxCUTJwQ0xFTkJRVU03U1VGRFJDdzRRMEZCVnl4SFFVRllPMUZCUTBrc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hKUVVGSkxFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzBsQlEyaEdMRU5CUVVNN1NVRkRUQ3dyUWtGQlF6dEJRVUZFTEVOQlFVTXNRVUV6UTBRc1NVRXlRME03UVVFelExa3NORVJCUVhkQ08wRkJhVVJ5UXp0SlFYTkVTU3h2UWtGQmJVSXNZVUZCY1VJc1JVRkJSU3hSUVVFMFFpeEZRVUZUTEZsQlFYbENPMUZCUVhoSExHbENRV3RJUXp0UlFXeElPRVVzTmtKQlFVRXNSVUZCUVN4cFFrRkJlVUk3VVVGQmNrWXNhMEpCUVdFc1IwRkJZaXhoUVVGaExFTkJRVkU3VVVGQmRVTXNhVUpCUVZrc1IwRkJXaXhaUVVGWkxFTkJRV0U3VVVGeVJIaEhMRmRCUVUwc1IwRkJhMElzU1VGQlNTeERRVUZETzFGQmMwUjZRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEdGQlFXRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNTVUZCU1N4WFFVRlhMRU5CUVVNc1EwRkJReXhGUVVGRkxGRkJRVkVzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRnNSU3hEUVVGclJTeERRVUZETEVOQlFVTTdVVUZETjBjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVU0c1EwRkJUU3hEUVVGRExFTkJRVU03VVVGRE5VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCVUN4RFFVRlBMRU5CUVVNc1EwRkJRenRSUVVNM1F5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYmtNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSMjVETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dFpRVU5xUWl4UFFVRkJMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkhMRTlCUVVFc1MwRkJTU3hEUVVGRExFdEJRVXNzUTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGb1F5eERRVUZuUXl4RFFVRkRPMUZCUVhoRUxFTkJRWGRFTEVOQlFVTXNRMEZCUXp0UlFVYzVSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNVVUZCVVN4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRemRDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF6dFpRVU5vUWl4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eFhRVUZYTEVWQlFVVTdaMEpCUTJwRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRuUWtGRGNrSXNTMEZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRoUVVOcVF6dFpRVTlFTEVOQlFVTXNRMEZCUXl4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGQk8xRkJRMmhDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUjBnc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hMUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFXNURMRU5CUVcxRExFTkJRVU1zUTBGQlF6dFJRVXR5UlN4SlFVRkpMR2xDUVVGcFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJVQ3hEUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5vUml4cFFrRkJhVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEhGQ1FVRlRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03V1VGRE1VSXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUV2UWl4RFFVRXJRaXhEUVVGRExFTkJRVU03V1VGRGVFUXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVNeFF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRWxCUVVrc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGTUxFTkJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtRc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVXdzUTBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVZDJSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRekZFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZITVVRc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWNzVDBGQlFTeERRVUZMTEVWQlFVVXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVFc1JVRkJha1FzUTBGQmFVUXNRMEZCUXp0aFFVTTFSU3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVXNzUlVGQlJTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVUVzUlVGQmVrTXNRMEZCZVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGSGVFVXNTVUZCU1N4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGTExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVRXNSVUZCYWtRc1EwRkJhVVFzUTBGQlF6dGhRVU0xUlN4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVzc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVFc1JVRkJla01zUTBGQmVVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkhlRVVzU1VGQlNTeExRVUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVWRzUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUTBGQlF5eEpRVUZITEU5QlFVRXNRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhGUVVGRkxFVkJRVm9zUTBGQldTeERRVUZETEVOQlFVTTdVVUZIYUVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEYUVJc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZIYUVJc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEV2l4UFFVRkJMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETzJkQ1FVTmFMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8yZENRVU5vUkN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRhRUlzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyaENMRXRCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVkdVFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF6dG5Ra0ZEYUVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVTdiMEpCUTFvc1NVRkJTU3hKUVVGSkxFZEJRVWNzUzBGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRNVUlzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN2IwSkJRMnhDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGRE0wSXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dHZRa0ZEYUVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSVHQzUWtGRGNrTXNRMEZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU03ZDBKQlEzSkNMRTFCUVUwN2NVSkJRMVE3YVVKQlEwbzdXVUZEVEN4RFFVRkRMRU5CUVVNN1VVRnNRa1lzUTBGclFrVXNRMEZEUkN4RFFVRkRPMUZCUlU0c1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUldoQ0xFdEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEzQkNMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzI5Q1FVVnNSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOd1JTeExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZEYmtJc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRMmhDTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTndRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5RTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUjBnc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRNVU1zU1VGQlNTeExRVUZMTEVkQlFVY3NWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCTDBJc1EwRkJLMElzUTBGQlF6dFpRVU4wUkN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTndRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRM0pETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOMlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNUdHZRa0ZCUlN4VFFVRlRPMmRDUVVONlJDeExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03WVVGRGJFWTdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVsUUxFTkJRVU03U1VFMVNrOHNkMEpCUVVjc1IwRkJXQ3hWUVVGWkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJUQ3hEUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkJMRU5CUVVNc1EwRkJRenRKUVVsMFJDeHBRMEZCV1N4SFFVRndRaXhWUVVGeFFpeEpRVUZKTzFGQlEzSkNMRWxCUVVrc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTnNSQ3hQUVVGUExFVkJRVVVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMWxCUld4Q0xFbEJRVWtzVjBGQlZ5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJRU3hEUVVGRExFbEJRVWNzVDBGQlFTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFXeEVMRU5CUVd0RUxFTkJRVU1zUTBGQlF6dFpRVU53Uml4SlFVRkpMRWRCUVVjc1IwRkJSenRuUWtGRFRpeExRVUZMTEVWQlFVVXNWMEZCVnp0blFrRkRiRUlzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVhCQ0xFTkJRVzlDTEVOQlFVTXNRMEZCUXp0aFFVTXpSQ3hEUVVGRE8xbEJRMFlzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOc1FpeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJNMElzUTBGQk1rSXNRMEZCUXl4RFFVRkRPMU5CUTNSRU8xRkJRMFFzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVXNzVDBGQlFTeERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRV0lzUTBGQllTeERRVUZETEVOQlFVRTdVVUZEY2tNc1QwRkJUeXhQUVVGUExFTkJRVU03U1VGRGJrSXNRMEZCUXp0SlFVZFBMRFpDUVVGUkxFZEJRV2hDTEZWQlFXbENMRU5CUVVNN1VVRkRaQ3hKUVVGSkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWkN4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFdEJRVXNzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlR0WlFVTXpRaXhMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU5TTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRE8xTkJRMmhDTzFGQlEwUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1NVRkRha0lzUTBGQlF6dEpRVWRQTERoQ1FVRlRMRWRCUVdwQ0xGVkJRV3RDTEVOQlFVTTdVVUZEWml4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM1JDTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNMVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNdlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTndRenRSUVVORUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pETEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGMVNFOHNaME5CUVZjc1IwRkJia0lzVlVGQmIwSXNRMEZCUXp0UlFVTnFRaXhKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJ4Q0xFZEJRVWM3V1VGRFF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVOaUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRia0lzVVVGQlVTeERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSVHRSUVVNeFFpeFBRVUZQTEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVNM1FpeERRVUZETzBsQlIwOHNORU5CUVhWQ0xFZEJRUzlDTEZWQlFXZERMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRMmhETEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNNVJDeFBRVUZQTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkZOVUlzVDBGQlR5eEZRVUZGTEdOQlFXTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEZGQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTndSaXhEUVVGRE8wbEJTVVFzY1VOQlFXZENMRWRCUVdoQ0xGVkJRV2xDTEVOQlFVTXNSVUZCUlN4RFFVRkRPMUZCUVhKQ0xHbENRVmRETzFGQlZrY3NTVUZCU1N4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU01UXl4SlFVRkpMR0ZCUVdFc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGRrSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzFGQlEzQkVMRWxCUVVrc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1lVRkJZU3hEUVVGRExFVkJRWEpDTEVOQlFYRkNMRU5CUVVNc1EwRkJRenRSUVVVdlJTeEpRVUZKTEVOQlFVTXNVVUZCVVR0aFFVTlNMRTFCUVUwc1EwRkJReXhWUVVGQkxFTkJRVU1zU1VGQlJ5eFBRVUZCTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQmFFTXNRMEZCWjBNc1EwRkJRenRoUVVNMVF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hUUVVGVExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCVml4RFFVRlZMRU5CUVVNc1EwRkJReXhGUVVGMFJTeERRVUZ6UlN4RFFVRkRMRU5CUVVNN1VVRkZla1lzVDBGQlR5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUzBGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJZaXhEUVVGaExFTkJRVU1zUTBGQlF6dEpRVU0xUXl4RFFVRkRPMGxCU1Uwc2VVSkJRV01zUjBGQmNrSXNWVUZCYzBJc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzFGQlJUbENMRWxCUVVrc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU51UWl4TFFVRkxMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJUdFpRVU4yUXl4SlFVRkpMRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdXVUZEZGtJc1MwRkJTeXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVTdaMEpCUTNSRExFbEJRVWtzUTBGQlF5eEhRVUZSTEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRuUWtGRGRrSXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlExUXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJUdHZRa0ZEY2tJc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRja0k3WVVGRFNqdFRRVU5LTzFGQlEwUXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVc3NUMEZCUVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZxUWl4RFFVRnBRaXhEUVVGRExFTkJRVU03VVVGSE5VTXNTVUZCU1N4WlFVRlpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRM1JDTEVsQlFVa3NWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOMFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOMlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1NVRkJTU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRk8yZENRVU42UkN4VlFVRlZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGRkJRVkVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0blFrRkROVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRoUVVOcVF6dFpRVU5FTEZWQlFWVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF5OUNPMUZCUTBRc1QwRkJUeXhaUVVGWkxFTkJRVU03U1VGRGVFSXNRMEZCUXp0SlFWTk5MRzlDUVVGVExFZEJRV2hDTEZWQlFXbENMRU5CUVZNc1JVRkJSU3hEUVVGVExFVkJRVVVzVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4TlFVRk5MRVZCUVVVc1IwRkJWenRSUVVONFJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRM2hDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkJSU3hQUVVGUE8xRkJRMjVDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlFTeERRVUZETEVsQlFVa3NUMEZCUVN4SlFVRkpMR1ZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJja0lzUTBGQmNVSXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTmFMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGVFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGVFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenR2UWtGQlJTeFRRVUZUTzJkQ1FVTjBRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTJoQ0xFVkJRVVVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTJoQ0xFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVTmtMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVU5rTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkRWQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCVFdRc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTzI5Q1FVTldMRWxCUVVrc1RVRkJUU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0M1FrRkZhRUlzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk96UkNRVU55UWl4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdlVUpCUTNSQ096WkNRVUZOT3pSQ1FVTklMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0NVFrRkRkRUk3Y1VKQlEwbzdhVUpCUTBvN2NVSkJRVTA3YjBKQlEwZ3NTVUZCU1N4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzNkQ1FVTm9RaXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN05FSkJRM0pDTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF6dDVRa0ZEZEVJN05rSkJRVTA3TkVKQlEwZ3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzNsQ1FVTjBRanR4UWtGRFNqdHBRa0ZEU2p0blFrRkRSQ3hKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdiMEpCUlZnc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEdsQ1FVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTndSRHRoUVVOS08xTkJRMG83VVVGRFJDeEpRVUZKTEUxQlFVMHNSMEZCUnl4SlFVRkpMR0ZCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEYUVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzFGQlEyWXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlExb3NTVUZCU1N4RFFVRkRMRWRCUVVjc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzQkNMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0WlFVTjJRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJRenRaUVVONFFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFsQlF6ZENMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETzJkQ1FVRkZMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0WlFVTjRReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRE8yZENRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dFJRVU16UkN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlRTeDNRa0ZCWVN4SFFVRndRaXhWUVVGeFFpeE5RVUZOTEVWQlFVVXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hOUVVFeVF5eEZRVUZGTEVkQlFWYzdVVUZEZGtjc1NVRkJTU3haUVVGWkxFZEJRVWNzVlVGQlZTeERRVUZETEdOQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJUTkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlF6RkRMRWxCUVVrc1JVRkJSU3hIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhKUVVGSkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEYUVJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVONlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTjJRaXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03WjBKQlEyaEZMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRoUVVOdVJUdFpRVU5FTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZMTEU5QlFVRXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQkwwSXNRMEZCSzBJc1EwRkJReXhEUVVGRE8xbEJRM1pFTEVsQlFVa3NTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVOa0xFbEJRVWtzVTBGQlV5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTnNRaXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0blFrRkRXaXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RlFVRkZPMjlDUVVOa0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU5tTEZOQlFWTXNSVUZCUlN4RFFVRkRPMmxDUVVObU8zRkNRVUZOTzI5Q1FVTklMRk5CUVZNc1JVRkJSU3hEUVVGRE8ybENRVU5tTzJkQ1FVTkVMRWxCUVVrc1UwRkJVeXhKUVVGSkxFTkJRVU1zUlVGQlJUdHZRa0ZEYUVJc1ZVRkJWU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOMFJDeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMmxDUVVOaU8xbEJRMHdzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEVGp0SlFVTk1MRU5CUVVNN1NVRlRSQ3dyUWtGQlZTeEhRVUZXTEZWQlFXbENMRXRCUVdFc1JVRkJSU3hSUVVGblFpeEZRVUZGTEUxQlFUSkNMRVZCUVVVc1RVRkJNa0k3VVVGQk1VY3NhVUpCVVVNN1VVRlFSeXhKUVVGSkxGVkJRVlVzUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUzBGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVdoRExFTkJRV2RETEVOQlFVTXNRMEZCUXp0UlFVTnFSU3hKUVVGSkxFdEJRVXNzUjBGQlJ5eFZRVUZWTEVOQlFVTXNWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRemxETEVsQlFVa3NUVUZCVFN4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NUMEZCVHl4VlFVRlZMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha1lzVlVGQlZTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeExRVUZMTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkROVVFzVlVGQlZTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeExRVUZMTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkROVVFzVlVGQlZTeERRVUZETEdOQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRE9VTXNUMEZCVHl4TlFVRk5MRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVWxOTEhsQ1FVRmpMRWRCUVhKQ0xGVkJRWE5DTEUxQlFVMHNSVUZCUlN4VlFVRlZPMUZCUTNCRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRaUVVOMlFpeEpRVUZKTEVsQlFVa3NSMEZCUnl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrSXNTVUZCVlN4SlFVRkxMRU5CUVVNc1VVRkJVU3hGUVVGRk8yZENRVU4wUWl4UlFVRlJMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03WjBKQlEyNUNMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeFBRVUZQTzI5Q1FVTTVRaXhQUVVGUExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdaMEpCUTNSQ0xFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEwNDdVVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOUUxFTkJRVU03U1VGRlRTdzJRa0ZCYTBJc1IwRkJla0lzVlVGQk1FSXNTMEZCWXl4RlFVRkZMRXRCUVdNN1VVRkRjRVFzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlF6TkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6ZENMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVNelF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1FpeEpRVUZKTEVsQlFVa3NSMEZCUnl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRek5DTEVsQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFbEJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOdVF5eEpRVUZKTEVkQlFVY3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRUUVVNeFFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGSFl5eHBRa0ZCVFN4SFFVRnlRaXhWUVVGelFpeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkRla0lzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGVFVXNRMEZCUXp0SlFVbGpMRzFDUVVGUkxFZEJRWFpDTEZWQlFYZENMRXRCUVdsRE8xRkJRM0pFTEVsQlFVa3NVVUZCVVN4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOc1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOdVF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGFrSXNTVUZCU1N4UFFVRlBMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NWMEZCVnp0blFrRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVNM1JDeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1UwRkROMEk3VVVGRFJDeFBRVUZQTEZWQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTeXhQUVVGQkxFOUJRVThzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRmRCUVZjc1NVRkJTU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVhCRUxFTkJRVzlFTEVOQlFVTTdTVUZETVVVc1EwRkJRenRKUVVsTkxIRkNRVUZWTEVkQlFXcENMRlZCUVd0Q0xFdEJRVXM3VVVGRGJrSXNTVUZCU1N4VFFVRlRMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMjVDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU4yUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTNaRExFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRXaXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVTmFMRWRCUVVjc1IwRkJSeXhKUVVGSkxIZENRVUYzUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBNc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0blFrRkRaQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEV0QlFVc3NRMEZCUXp0dlFrRkRhRUlzVTBGQlV6dG5Ra0ZEWWl4SlFVRkpMRWRCUVVjc1EwRkJReXhSUVVGUkxFVkJRVVU3YjBKQlIyUXNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8yOUNRVU5hTEVOQlFVTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVU5zUWl4SFFVRkhMRWRCUVVjc1NVRkJTU3gzUWtGQmQwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03YVVKQlF6VkRPMmRDUVVORUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0dlFrRkROVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRk8yOUNRVVYwUlN4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dHZRa0ZETDBJc1UwRkJVenRwUWtGRFdqdG5Ra0ZEUkN4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTzI5Q1FVMXdSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyeENMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGJrSXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOMFFqdHhRa0ZCVFR0dlFrRkRTQ3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMElzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0dlFrRkROVUlzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0cFFrRkRMMEk3WjBKQlEwUXNTVUZCU1N4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN2IwSkJRemxDTEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8ybENRVU5zUXp0eFFrRkJUVHR2UWtGRFNDeFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRwUWtGRGJFTTdZVUZEU2p0VFFVTktPMUZCUlVRc1QwRkJUeXhWUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUXpGRExFTkJRVU03U1VGTFRTeDFRa0ZCV1N4SFFVRnVRaXhWUVVGdlFpeEpRVUZoTzFGQlF6ZENMRk5CUVZNc1UwRkJVeXhEUVVGRExFTkJRVkU3V1VGRGRrSXNUMEZCWXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGNrTXNRMEZCUXp0UlFVTkVMRWxCUVVrc1ZVRkJWU3hIUVVGSExGVkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJRU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExFVkJRWFpGTEVOQlFYVkZMRU5CUVVNN1VVRkRkRWNzU1VGQlNTeFJRVUZSTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJ4Q0xFbEJRVWtzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU16UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5zUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzFsQlEzcEZMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJUdG5Ra0ZETlVJc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMVE3VTBGRFNqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGSlJDd3dRa0ZCU3l4SFFVRk1MRlZCUVUwc1EwRkJVeXhGUVVGRkxFTkJRVk03VVVGQk1VSXNhVUpCTkVSRE8xRkJNMFJITEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYmtVc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUlhaRUxFbEJRVWtzWTBGQll5eEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTjRRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJTU3hQUVVGQkxHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGNFFpeERRVUYzUWl4RFFVRkRMRU5CUVVNN1VVRkRkRVFzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZCTEVOQlFVTTdXVUZEY0VNc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRM2hDTEVOQlFVTXNSMEZCUnl4TFFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0WlFVTTNRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEpRVUZKTEdOQlFXTTdiVUpCUTNaRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFbEJRVWtzWTBGQll5eERRVUZETEVOQlFVTTdVVUZEYkVRc1EwRkJReXhEUVVGRExFTkJRVU03VVVGSFNDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE1VTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRNMElzU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZETTBJc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTTdaMEpCUTNCQ0xFMUJRVTBzUlVGQlJTeERRVUZETzJkQ1FVTlVMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU5VTEUxQlFVMHNSVUZCUlN4RFFVRkRPMkZCUTFvc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRFJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE1VTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRNMElzU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZETTBJc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTTdaMEpCUTNCQ0xFMUJRVTBzUlVGQlJTeERRVUZETzJkQ1FVTlVMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU5VTEUxQlFVMHNSVUZCUlN4RFFVRkRPMkZCUTFvc1EwRkJReXhEUVVGRE8xTkJRMDQ3VVVGRlJDeEpRVUZKTEZOQlFWTXNSMEZCUnl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFWSXNRMEZCVVN4RlFVTjRRaXhUUVVGVExFZEJRVWNzVlVGQlFTeERRVUZETEVsQlFVY3NUMEZCUVN4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGU0xFTkJRVkVzUlVGRGVFSXNVMEZCVXl4SFFVRkhMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCVWl4RFFVRlJMRU5CUVVNN1VVRkZOMElzU1VGQlNTeHpRa0ZCYzBJc1IwRkJSeXhKUVVGSkxEQkNRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEdGQlFXRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1UwRkJVeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEzQklMRWxCUVVrc1YwRkJWeXhIUVVGSExGVkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE5VUXNTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWMlJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZMTEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTzJkQ1FVTm9SaXhQUVVGUExFTkJRVU1zUTBGQlF6dFpRVU5pTEU5QlFVOHNSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUXl4RFFVRkRMRU5CUVVNN1VVRkhSaXhKUVVGSkxGbEJRVmtzUjBGQlJ5eHpRa0ZCYzBJc1EwRkJReXc0UWtGQk9FSXNRMEZEY0VVc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUTNSRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlIycENMRWxCUVVrc1ZVRkJWU3hIUVVGSExGbEJRVmtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJRU3hGUVVGRkxFbEJRVWtzVDBGQlFTeExRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGa0xFTkJRV01zUTBGQlF5eERRVUZETzFGQlEyeEZMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkhhRVFzVDBGQlR5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRE1VSXNUMEZCUVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZMTEUxQlFVMDdiVUpCUXpsRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhOUVVGTkxFbEJRVWtzVlVGQlZTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFdEJRVXNzVFVGQlRTeERRVUZETzFGQlJIWkZMRU5CUTNWRkxFTkJRVU1zUTBGQlF6dEpRVU5xUml4RFFVRkRPMGxCUlUwc2RVSkJRVmtzUjBGQmJrSXNWVUZCYjBJc1MwRkJaMElzUlVGQlJTeFpRVUZ2UWl4RlFVRkZMRlZCUVd0Q0xFVkJRVVVzVjBGQmJVSTdVVUZETDBZc1NVRkJTU3hOUVVGTkxFZEJRVWM3V1VGRFZDeFRRVUZUTEVWQlFVVXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ6dFpRVU16UkN4VFFVRlRMRVZCUVVVc1JVRkJSVHRUUVVOb1FpeERRVUZETzFGQlEwWXNTVUZCU1N4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJUdFpRVU5zUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZEYmtNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTTNRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tJc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzSkNMRWxCUVVrc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMjlDUVVOMFFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzNkQ1FVTnNRaXhEUVVGRExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETzNGQ1FVTjZRenQ1UWtGQlRUdDNRa0ZEU0N4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRE8zRkNRVU42UXp0dlFrRkRSQ3hOUVVGTkxFTkJRVU1zVTBGQlV5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdiMEpCUXpkRExFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzSkNMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRemRDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTJoQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyaENMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTmlMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTmlMRWxCUVVrc1MwRkJTeXhIUVVGSExGVkJRVlVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkZOMFFzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRPMjlDUVVOWUxFbEJRVWtzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3ZDBKQlEyeENMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETzNkQ1FVTXpReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzNGQ1FVTllPM2xDUVVGTk8zZENRVU5JTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNN2QwSkJRMUlzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNN2NVSkJRemxETzI5Q1FVTkVMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU14UWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRE1VSXNUVUZCVFN4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUlVGQlJTeEhRVUZITEVkQlFVY3NSMEZCUnl4RlFVRkZMRWRCUVVjc1QwRkJUeXhIUVVGSExFdEJRVXNzUjBGQlJ5eEhRVUZITEVkQlFVY3NSVUZCUlN4SFFVRkhMRWRCUVVjc1IwRkJSeXhGUVVGRkxFZEJRVWNzUjBGQlJ5eERRVUZETzJsQ1FVTXhSanR4UWtGQlRUdHZRa0ZEU0N4SlFVRkpMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRkRUlzU1VGQlNTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RFFVRkRPMjlDUVVNdlFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTzNkQ1FVTnNRaXhEUVVGRExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVjBGQlZ5eERRVUZETzNkQ1FVTnlReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRE8zZENRVU51UXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRPM0ZDUVVOMFF6dDVRa0ZCVFR0M1FrRkRTQ3hEUVVGRExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVjBGQlZ5eERRVUZETzNkQ1FVTnlReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NWVUZCVlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8zZENRVU51UXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPM0ZDUVVOMFF6dHZRa0ZEUkN4TlFVRk5MRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03YjBKQlF6ZERMRWxCUVVrc1YwRkJWeXhIUVVGSExFTkJRVU1zUlVGQlJUdDNRa0ZEYWtJc1RVRkJUU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF6czRRa0ZEZWtjc1MwRkJTeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTnlSRHRwUWtGRFNqdGhRVU5LTzFOQlEwbzdZVUZCVFR0WlFVTklMRWxCUVVrc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnNRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemRDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkNMRWxCUVVrc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzV1VGQldTeEZRVUZGTEZsQlFWa3NRMEZCUXp0WlFVTXZRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU5zUWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRE8yZENRVU55UXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRPMmRDUVVOdVF5eFpRVUZaTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETzJGQlEzUkRPMmxDUVVGTk8yZENRVU5JTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNN1owSkJRM0pETEZsQlFWa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTI1RExGbEJRVmtzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGRFTTdXVUZEUkN4TlFVRk5MRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03V1VGRE4wTXNTVUZCU1N4WFFVRlhMRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU5xUWl4TlFVRk5MRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRE8zTkNRVU42Unl4TFFVRkxMRWRCUVVjc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGNrUTdVMEZEU2p0UlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZEVEN4cFFrRkJRenRCUVVGRUxFTkJRVU1zUVVGNmJFSkVMRWxCZVd4Q1F6dEJRWHBzUWxrc1owTkJRVlVpZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBzaG9ydGVzdHBhdGhzXzEgPSByZXF1aXJlKFwiLi9zaG9ydGVzdHBhdGhzXCIpO1xyXG52YXIgZGVzY2VudF8xID0gcmVxdWlyZShcIi4vZGVzY2VudFwiKTtcclxudmFyIHJlY3RhbmdsZV8xID0gcmVxdWlyZShcIi4vcmVjdGFuZ2xlXCIpO1xyXG52YXIgbGlua2xlbmd0aHNfMSA9IHJlcXVpcmUoXCIuL2xpbmtsZW5ndGhzXCIpO1xyXG52YXIgTGluazNEID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIExpbmszRChzb3VyY2UsIHRhcmdldCkge1xyXG4gICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgTGluazNELnByb3RvdHlwZS5hY3R1YWxMZW5ndGggPSBmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydCh4LnJlZHVjZShmdW5jdGlvbiAoYywgdikge1xyXG4gICAgICAgICAgICB2YXIgZHggPSB2W190aGlzLnRhcmdldF0gLSB2W190aGlzLnNvdXJjZV07XHJcbiAgICAgICAgICAgIHJldHVybiBjICsgZHggKiBkeDtcclxuICAgICAgICB9LCAwKSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIExpbmszRDtcclxufSgpKTtcclxuZXhwb3J0cy5MaW5rM0QgPSBMaW5rM0Q7XHJcbnZhciBOb2RlM0QgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTm9kZTNEKHgsIHksIHopIHtcclxuICAgICAgICBpZiAoeCA9PT0gdm9pZCAwKSB7IHggPSAwOyB9XHJcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0gMDsgfVxyXG4gICAgICAgIGlmICh6ID09PSB2b2lkIDApIHsgeiA9IDA7IH1cclxuICAgICAgICB0aGlzLnggPSB4O1xyXG4gICAgICAgIHRoaXMueSA9IHk7XHJcbiAgICAgICAgdGhpcy56ID0gejtcclxuICAgIH1cclxuICAgIHJldHVybiBOb2RlM0Q7XHJcbn0oKSk7XHJcbmV4cG9ydHMuTm9kZTNEID0gTm9kZTNEO1xyXG52YXIgTGF5b3V0M0QgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gTGF5b3V0M0Qobm9kZXMsIGxpbmtzLCBpZGVhbExpbmtMZW5ndGgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmIChpZGVhbExpbmtMZW5ndGggPT09IHZvaWQgMCkgeyBpZGVhbExpbmtMZW5ndGggPSAxOyB9XHJcbiAgICAgICAgdGhpcy5ub2RlcyA9IG5vZGVzO1xyXG4gICAgICAgIHRoaXMubGlua3MgPSBsaW5rcztcclxuICAgICAgICB0aGlzLmlkZWFsTGlua0xlbmd0aCA9IGlkZWFsTGlua0xlbmd0aDtcclxuICAgICAgICB0aGlzLmNvbnN0cmFpbnRzID0gbnVsbDtcclxuICAgICAgICB0aGlzLnVzZUphY2NhcmRMaW5rTGVuZ3RocyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXN1bHQgPSBuZXcgQXJyYXkoTGF5b3V0M0Quayk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBMYXlvdXQzRC5rOyArK2kpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXN1bHRbaV0gPSBuZXcgQXJyYXkobm9kZXMubGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gTGF5b3V0M0QuZGltczsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBkaW0gPSBfYVtfaV07XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZbZGltXSA9PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgICAgICAgICB2W2RpbV0gPSBNYXRoLnJhbmRvbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF90aGlzLnJlc3VsdFswXVtpXSA9IHYueDtcclxuICAgICAgICAgICAgX3RoaXMucmVzdWx0WzFdW2ldID0gdi55O1xyXG4gICAgICAgICAgICBfdGhpcy5yZXN1bHRbMl1baV0gPSB2Lno7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICA7XHJcbiAgICBMYXlvdXQzRC5wcm90b3R5cGUubGlua0xlbmd0aCA9IGZ1bmN0aW9uIChsKSB7XHJcbiAgICAgICAgcmV0dXJuIGwuYWN0dWFsTGVuZ3RoKHRoaXMucmVzdWx0KTtcclxuICAgIH07XHJcbiAgICBMYXlvdXQzRC5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbiAoaXRlcmF0aW9ucykge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgaWYgKGl0ZXJhdGlvbnMgPT09IHZvaWQgMCkgeyBpdGVyYXRpb25zID0gMTAwOyB9XHJcbiAgICAgICAgdmFyIG4gPSB0aGlzLm5vZGVzLmxlbmd0aDtcclxuICAgICAgICB2YXIgbGlua0FjY2Vzc29yID0gbmV3IExpbmtBY2Nlc3NvcigpO1xyXG4gICAgICAgIGlmICh0aGlzLnVzZUphY2NhcmRMaW5rTGVuZ3RocylcclxuICAgICAgICAgICAgbGlua2xlbmd0aHNfMS5qYWNjYXJkTGlua0xlbmd0aHModGhpcy5saW5rcywgbGlua0FjY2Vzc29yLCAxLjUpO1xyXG4gICAgICAgIHRoaXMubGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5sZW5ndGggKj0gX3RoaXMuaWRlYWxMaW5rTGVuZ3RoOyB9KTtcclxuICAgICAgICB2YXIgZGlzdGFuY2VNYXRyaXggPSAobmV3IHNob3J0ZXN0cGF0aHNfMS5DYWxjdWxhdG9yKG4sIHRoaXMubGlua3MsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnNvdXJjZTsgfSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUudGFyZ2V0OyB9LCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5sZW5ndGg7IH0pKS5EaXN0YW5jZU1hdHJpeCgpO1xyXG4gICAgICAgIHZhciBEID0gZGVzY2VudF8xLkRlc2NlbnQuY3JlYXRlU3F1YXJlTWF0cml4KG4sIGZ1bmN0aW9uIChpLCBqKSB7IHJldHVybiBkaXN0YW5jZU1hdHJpeFtpXVtqXTsgfSk7XHJcbiAgICAgICAgdmFyIEcgPSBkZXNjZW50XzEuRGVzY2VudC5jcmVhdGVTcXVhcmVNYXRyaXgobiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gMjsgfSk7XHJcbiAgICAgICAgdGhpcy5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xyXG4gICAgICAgICAgICB2YXIgc291cmNlID0gX2Euc291cmNlLCB0YXJnZXQgPSBfYS50YXJnZXQ7XHJcbiAgICAgICAgICAgIHJldHVybiBHW3NvdXJjZV1bdGFyZ2V0XSA9IEdbdGFyZ2V0XVtzb3VyY2VdID0gMTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmRlc2NlbnQgPSBuZXcgZGVzY2VudF8xLkRlc2NlbnQodGhpcy5yZXN1bHQsIEQpO1xyXG4gICAgICAgIHRoaXMuZGVzY2VudC50aHJlc2hvbGQgPSAxZS0zO1xyXG4gICAgICAgIHRoaXMuZGVzY2VudC5HID0gRztcclxuICAgICAgICBpZiAodGhpcy5jb25zdHJhaW50cylcclxuICAgICAgICAgICAgdGhpcy5kZXNjZW50LnByb2plY3QgPSBuZXcgcmVjdGFuZ2xlXzEuUHJvamVjdGlvbih0aGlzLm5vZGVzLCBudWxsLCBudWxsLCB0aGlzLmNvbnN0cmFpbnRzKS5wcm9qZWN0RnVuY3Rpb25zKCk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciB2ID0gdGhpcy5ub2Rlc1tpXTtcclxuICAgICAgICAgICAgaWYgKHYuZml4ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVzY2VudC5sb2Nrcy5hZGQoaSwgW3YueCwgdi55LCB2LnpdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRlc2NlbnQucnVuKGl0ZXJhdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIExheW91dDNELnByb3RvdHlwZS50aWNrID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuZGVzY2VudC5sb2Nrcy5jbGVhcigpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgdiA9IHRoaXMubm9kZXNbaV07XHJcbiAgICAgICAgICAgIGlmICh2LmZpeGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NlbnQubG9ja3MuYWRkKGksIFt2LngsIHYueSwgdi56XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVzY2VudC5ydW5nZUt1dHRhKCk7XHJcbiAgICB9O1xyXG4gICAgTGF5b3V0M0QuZGltcyA9IFsneCcsICd5JywgJ3onXTtcclxuICAgIExheW91dDNELmsgPSBMYXlvdXQzRC5kaW1zLmxlbmd0aDtcclxuICAgIHJldHVybiBMYXlvdXQzRDtcclxufSgpKTtcclxuZXhwb3J0cy5MYXlvdXQzRCA9IExheW91dDNEO1xyXG52YXIgTGlua0FjY2Vzc29yID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIExpbmtBY2Nlc3NvcigpIHtcclxuICAgIH1cclxuICAgIExpbmtBY2Nlc3Nvci5wcm90b3R5cGUuZ2V0U291cmNlSW5kZXggPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5zb3VyY2U7IH07XHJcbiAgICBMaW5rQWNjZXNzb3IucHJvdG90eXBlLmdldFRhcmdldEluZGV4ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUudGFyZ2V0OyB9O1xyXG4gICAgTGlua0FjY2Vzc29yLnByb3RvdHlwZS5nZXRMZW5ndGggPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5sZW5ndGg7IH07XHJcbiAgICBMaW5rQWNjZXNzb3IucHJvdG90eXBlLnNldExlbmd0aCA9IGZ1bmN0aW9uIChlLCBsKSB7IGUubGVuZ3RoID0gbDsgfTtcclxuICAgIHJldHVybiBMaW5rQWNjZXNzb3I7XHJcbn0oKSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHRjViM1YwTTJRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOVhaV0pEYjJ4aEwzTnlZeTlzWVhsdmRYUXpaQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMR2xFUVVFd1F6dEJRVU14UXl4eFEwRkJhVU03UVVGRGFrTXNlVU5CUVRSRU8wRkJSVFZFTERaRFFVRnZSVHRCUVVWd1JUdEpRVVZSTEdkQ1FVRnRRaXhOUVVGakxFVkJRVk1zVFVGQll6dFJRVUZ5UXl4WFFVRk5MRWRCUVU0c1RVRkJUU3hEUVVGUk8xRkJRVk1zVjBGQlRTeEhRVUZPTEUxQlFVMHNRMEZCVVR0SlFVRkpMRU5CUVVNN1NVRkROMFFzTmtKQlFWa3NSMEZCV2l4VlFVRmhMRU5CUVdFN1VVRkJNVUlzYVVKQlRVTTdVVUZNUnl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRMW9zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGWE8xbEJRelZDTEVsQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFpRVU16UXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEzWkNMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyWXNRMEZCUXp0SlFVTk1MR0ZCUVVNN1FVRkJSQ3hEUVVGRExFRkJWa3dzU1VGVlN6dEJRVlpSTEhkQ1FVRk5PMEZCVjJZN1NVRlRTU3huUWtGRFZ5eERRVUZoTEVWQlEySXNRMEZCWVN4RlFVTmlMRU5CUVdFN1VVRkdZaXhyUWtGQlFTeEZRVUZCTEV0QlFXRTdVVUZEWWl4clFrRkJRU3hGUVVGQkxFdEJRV0U3VVVGRFlpeHJRa0ZCUVN4RlFVRkJMRXRCUVdFN1VVRkdZaXhOUVVGRExFZEJRVVFzUTBGQlF5eERRVUZaTzFGQlEySXNUVUZCUXl4SFFVRkVMRU5CUVVNc1EwRkJXVHRSUVVOaUxFMUJRVU1zUjBGQlJDeERRVUZETEVOQlFWazdTVUZCU1N4RFFVRkRPMGxCUTJwRExHRkJRVU03UVVGQlJDeERRVUZETEVGQllrUXNTVUZoUXp0QlFXSlpMSGRDUVVGTk8wRkJZMjVDTzBsQlRVa3NhMEpCUVcxQ0xFdEJRV1VzUlVGQlV5eExRVUZsTEVWQlFWTXNaVUZCTWtJN1VVRkJPVVlzYVVKQllVTTdVVUZpYTBVc1owTkJRVUVzUlVGQlFTeHRRa0ZCTWtJN1VVRkJNMFVzVlVGQlN5eEhRVUZNTEV0QlFVc3NRMEZCVlR0UlFVRlRMRlZCUVVzc1IwRkJUQ3hMUVVGTExFTkJRVlU3VVVGQlV5eHZRa0ZCWlN4SFFVRm1MR1ZCUVdVc1EwRkJXVHRSUVVZNVJpeG5Ra0ZCVnl4SFFVRlZMRWxCUVVrc1EwRkJRenRSUVhGQ01VSXNNRUpCUVhGQ0xFZEJRVmtzU1VGQlNTeERRVUZETzFGQmJFSnNReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU53UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU5xUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFRRVU0xUXp0UlFVTkVMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTm1MRXRCUVdkQ0xGVkJRV0VzUlVGQllpeExRVUZCTEZGQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVdJc1kwRkJZU3hGUVVGaUxFbEJRV0VzUlVGQlJUdG5Ra0ZCTVVJc1NVRkJTU3hIUVVGSExGTkJRVUU3WjBKQlExSXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeFhRVUZYTzI5Q1FVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1lVRkROVVE3V1VGRFJDeExRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRlRUlzUzBGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFdEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTFRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5RTEVOQlFVTTdTVUZCUVN4RFFVRkRPMGxCUlVZc05rSkJRVlVzUjBGQlZpeFZRVUZYTEVOQlFWTTdVVUZEYUVJc1QwRkJUeXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOMlF5eERRVUZETzBsQlMwUXNkMEpCUVVzc1IwRkJUQ3hWUVVGTkxGVkJRWGRDTzFGQlFUbENMR2xDUVhWRFF6dFJRWFpEU3l3eVFrRkJRU3hGUVVGQkxHZENRVUYzUWp0UlFVTXhRaXhKUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVVMVFpeEpRVUZKTEZsQlFWa3NSMEZCUnl4SlFVRkpMRmxCUVZrc1JVRkJSU3hEUVVGRE8xRkJSWFJETEVsQlFVa3NTVUZCU1N4RFFVRkRMSEZDUVVGeFFqdFpRVU14UWl4blEwRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRmxCUVZrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVYwUkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZCTEVOQlFVTXNTVUZCU1N4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUzBGQlNTeERRVUZETEdWQlFXVXNSVUZCYUVNc1EwRkJaME1zUTBGQlF5eERRVUZETzFGQlJ6RkVMRWxCUVUwc1kwRkJZeXhIUVVGSExFTkJRVU1zU1VGQlNTd3dRa0ZCVlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVU5vUkN4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFWSXNRMEZCVVN4RlFVRkZMRlZCUVVFc1EwRkJReXhKUVVGSExFOUJRVUVzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCVWl4RFFVRlJMRVZCUVVVc1ZVRkJRU3hEUVVGRExFbEJRVWtzVDBGQlFTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRlNMRU5CUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdVVUZGYWtVc1NVRkJUU3hEUVVGRExFZEJRVWNzYVVKQlFVOHNRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVWQlFVVXNWVUZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGTExFOUJRVUVzWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGd1FpeERRVUZ2UWl4RFFVRkRMRU5CUVVNN1VVRkplRVVzU1VGQlNTeERRVUZETEVkQlFVY3NhVUpCUVU4c1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1kwRkJZeXhQUVVGUExFTkJRVU1zUTBGQlFTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJoRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVVNc1JVRkJhMEk3WjBKQlFXaENMR3RDUVVGTkxFVkJRVVVzYTBKQlFVMDdXVUZCVHl4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXp0UlFVRjZReXhEUVVGNVF5eERRVUZETEVOQlFVTTdVVUZGZEVZc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEdsQ1FVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXpReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJTVzVDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjN1dVRkRhRUlzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3h6UWtGQlZTeERRVUZqTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNRMEZCUXp0UlFVVndTQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRlRU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4wUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVU3WjBKQlExUXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU01UXp0VFFVTktPMUZCUlVRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkROMElzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEYUVJc1EwRkJRenRKUVVWRUxIVkNRVUZKTEVkQlFVbzdVVUZEU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0UlFVTXpRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRlRU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4wUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVU3WjBKQlExUXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU01UXp0VFFVTktPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMGxCUTNKRExFTkJRVU03U1VFM1JVMHNZVUZCU1N4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTjJRaXhWUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRTJSWEJETEdWQlFVTTdRMEZCUVN4QlFTOUZSQ3hKUVN0RlF6dEJRUzlGV1N3MFFrRkJVVHRCUVdsR2NrSTdTVUZCUVR0SlFVdEJMRU5CUVVNN1NVRktSeXh4UTBGQll5eEhRVUZrTEZWQlFXVXNRMEZCVFN4SlFVRlpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYmtRc2NVTkJRV01zUjBGQlpDeFZRVUZsTEVOQlFVMHNTVUZCV1N4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyNUVMR2REUVVGVExFZEJRVlFzVlVGQlZTeERRVUZOTEVsQlFWa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU01UXl4blEwRkJVeXhIUVVGVUxGVkJRVlVzUTBGQlRTeEZRVUZGTEVOQlFWTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYkVRc2JVSkJRVU03UVVGQlJDeERRVUZETEVGQlRFUXNTVUZMUXlKOSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBsYXlvdXRfMSA9IHJlcXVpcmUoXCIuL2xheW91dFwiKTtcclxudmFyIGdyaWRyb3V0ZXJfMSA9IHJlcXVpcmUoXCIuL2dyaWRyb3V0ZXJcIik7XHJcbmZ1bmN0aW9uIGdyaWRpZnkocGdMYXlvdXQsIG51ZGdlR2FwLCBtYXJnaW4sIGdyb3VwTWFyZ2luKSB7XHJcbiAgICBwZ0xheW91dC5jb2xhLnN0YXJ0KDAsIDAsIDAsIDEwLCBmYWxzZSk7XHJcbiAgICB2YXIgZ3JpZHJvdXRlciA9IHJvdXRlKHBnTGF5b3V0LmNvbGEubm9kZXMoKSwgcGdMYXlvdXQuY29sYS5ncm91cHMoKSwgbWFyZ2luLCBncm91cE1hcmdpbik7XHJcbiAgICByZXR1cm4gZ3JpZHJvdXRlci5yb3V0ZUVkZ2VzKHBnTGF5b3V0LnBvd2VyR3JhcGgucG93ZXJFZGdlcywgbnVkZ2VHYXAsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnNvdXJjZS5yb3V0ZXJOb2RlLmlkOyB9LCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS50YXJnZXQucm91dGVyTm9kZS5pZDsgfSk7XHJcbn1cclxuZXhwb3J0cy5ncmlkaWZ5ID0gZ3JpZGlmeTtcclxuZnVuY3Rpb24gcm91dGUobm9kZXMsIGdyb3VwcywgbWFyZ2luLCBncm91cE1hcmdpbikge1xyXG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGQucm91dGVyTm9kZSA9IHtcclxuICAgICAgICAgICAgbmFtZTogZC5uYW1lLFxyXG4gICAgICAgICAgICBib3VuZHM6IGQuYm91bmRzLmluZmxhdGUoLW1hcmdpbilcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGQucm91dGVyTm9kZSA9IHtcclxuICAgICAgICAgICAgYm91bmRzOiBkLmJvdW5kcy5pbmZsYXRlKC1ncm91cE1hcmdpbiksXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiAodHlwZW9mIGQuZ3JvdXBzICE9PSAndW5kZWZpbmVkJyA/IGQuZ3JvdXBzLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gbm9kZXMubGVuZ3RoICsgYy5pZDsgfSkgOiBbXSlcclxuICAgICAgICAgICAgICAgIC5jb25jYXQodHlwZW9mIGQubGVhdmVzICE9PSAndW5kZWZpbmVkJyA/IGQubGVhdmVzLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gYy5pbmRleDsgfSkgOiBbXSlcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICB2YXIgZ3JpZFJvdXRlck5vZGVzID0gbm9kZXMuY29uY2F0KGdyb3VwcykubWFwKGZ1bmN0aW9uIChkLCBpKSB7XHJcbiAgICAgICAgZC5yb3V0ZXJOb2RlLmlkID0gaTtcclxuICAgICAgICByZXR1cm4gZC5yb3V0ZXJOb2RlO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3IGdyaWRyb3V0ZXJfMS5HcmlkUm91dGVyKGdyaWRSb3V0ZXJOb2Rlcywge1xyXG4gICAgICAgIGdldENoaWxkcmVuOiBmdW5jdGlvbiAodikgeyByZXR1cm4gdi5jaGlsZHJlbjsgfSxcclxuICAgICAgICBnZXRCb3VuZHM6IGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LmJvdW5kczsgfVxyXG4gICAgfSwgbWFyZ2luIC0gZ3JvdXBNYXJnaW4pO1xyXG59XHJcbmZ1bmN0aW9uIHBvd2VyR3JhcGhHcmlkTGF5b3V0KGdyYXBoLCBzaXplLCBncm91cHBhZGRpbmcpIHtcclxuICAgIHZhciBwb3dlckdyYXBoO1xyXG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodiwgaSkgeyByZXR1cm4gdi5pbmRleCA9IGk7IH0pO1xyXG4gICAgbmV3IGxheW91dF8xLkxheW91dCgpXHJcbiAgICAgICAgLmF2b2lkT3ZlcmxhcHMoZmFsc2UpXHJcbiAgICAgICAgLm5vZGVzKGdyYXBoLm5vZGVzKVxyXG4gICAgICAgIC5saW5rcyhncmFwaC5saW5rcylcclxuICAgICAgICAucG93ZXJHcmFwaEdyb3VwcyhmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIHBvd2VyR3JhcGggPSBkO1xyXG4gICAgICAgIHBvd2VyR3JhcGguZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYucGFkZGluZyA9IGdyb3VwcGFkZGluZzsgfSk7XHJcbiAgICB9KTtcclxuICAgIHZhciBuID0gZ3JhcGgubm9kZXMubGVuZ3RoO1xyXG4gICAgdmFyIGVkZ2VzID0gW107XHJcbiAgICB2YXIgdnMgPSBncmFwaC5ub2Rlcy5zbGljZSgwKTtcclxuICAgIHZzLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIHYuaW5kZXggPSBpOyB9KTtcclxuICAgIHBvd2VyR3JhcGguZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGcpIHtcclxuICAgICAgICB2YXIgc291cmNlSW5kID0gZy5pbmRleCA9IGcuaWQgKyBuO1xyXG4gICAgICAgIHZzLnB1c2goZyk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBnLmxlYXZlcyAhPT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgICAgIGcubGVhdmVzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsgcmV0dXJuIGVkZ2VzLnB1c2goeyBzb3VyY2U6IHNvdXJjZUluZCwgdGFyZ2V0OiB2LmluZGV4IH0pOyB9KTtcclxuICAgICAgICBpZiAodHlwZW9mIGcuZ3JvdXBzICE9PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgICAgZy5ncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZ2cpIHsgcmV0dXJuIGVkZ2VzLnB1c2goeyBzb3VyY2U6IHNvdXJjZUluZCwgdGFyZ2V0OiBnZy5pZCArIG4gfSk7IH0pO1xyXG4gICAgfSk7XHJcbiAgICBwb3dlckdyYXBoLnBvd2VyRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgIGVkZ2VzLnB1c2goeyBzb3VyY2U6IGUuc291cmNlLmluZGV4LCB0YXJnZXQ6IGUudGFyZ2V0LmluZGV4IH0pO1xyXG4gICAgfSk7XHJcbiAgICBuZXcgbGF5b3V0XzEuTGF5b3V0KClcclxuICAgICAgICAuc2l6ZShzaXplKVxyXG4gICAgICAgIC5ub2Rlcyh2cylcclxuICAgICAgICAubGlua3MoZWRnZXMpXHJcbiAgICAgICAgLmF2b2lkT3ZlcmxhcHMoZmFsc2UpXHJcbiAgICAgICAgLmxpbmtEaXN0YW5jZSgzMClcclxuICAgICAgICAuc3ltbWV0cmljRGlmZkxpbmtMZW5ndGhzKDUpXHJcbiAgICAgICAgLmNvbnZlcmdlbmNlVGhyZXNob2xkKDFlLTQpXHJcbiAgICAgICAgLnN0YXJ0KDEwMCwgMCwgMCwgMCwgZmFsc2UpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb2xhOiBuZXcgbGF5b3V0XzEuTGF5b3V0KClcclxuICAgICAgICAgICAgLmNvbnZlcmdlbmNlVGhyZXNob2xkKDFlLTMpXHJcbiAgICAgICAgICAgIC5zaXplKHNpemUpXHJcbiAgICAgICAgICAgIC5hdm9pZE92ZXJsYXBzKHRydWUpXHJcbiAgICAgICAgICAgIC5ub2RlcyhncmFwaC5ub2RlcylcclxuICAgICAgICAgICAgLmxpbmtzKGdyYXBoLmxpbmtzKVxyXG4gICAgICAgICAgICAuZ3JvdXBDb21wYWN0bmVzcygxZS00KVxyXG4gICAgICAgICAgICAubGlua0Rpc3RhbmNlKDMwKVxyXG4gICAgICAgICAgICAuc3ltbWV0cmljRGlmZkxpbmtMZW5ndGhzKDUpXHJcbiAgICAgICAgICAgIC5wb3dlckdyYXBoR3JvdXBzKGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgICAgIHBvd2VyR3JhcGggPSBkO1xyXG4gICAgICAgICAgICBwb3dlckdyYXBoLmdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgICAgICAgICB2LnBhZGRpbmcgPSBncm91cHBhZGRpbmc7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pLnN0YXJ0KDUwLCAwLCAxMDAsIDAsIGZhbHNlKSxcclxuICAgICAgICBwb3dlckdyYXBoOiBwb3dlckdyYXBoXHJcbiAgICB9O1xyXG59XHJcbmV4cG9ydHMucG93ZXJHcmFwaEdyaWRMYXlvdXQgPSBwb3dlckdyYXBoR3JpZExheW91dDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWW1GMFkyZ3Vhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTlYWldKRGIyeGhMM055WXk5aVlYUmphQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMRzFEUVVFeVF6dEJRVU16UXl3eVEwRkJkVU03UVVGUmRrTXNVMEZCWjBJc1QwRkJUeXhEUVVGRExGRkJRVkVzUlVGQlJTeFJRVUZuUWl4RlFVRkZMRTFCUVdNc1JVRkJSU3hYUVVGdFFqdEpRVU51Uml4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdTVUZEZUVNc1NVRkJTU3hWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hOUVVGTkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTTdTVUZETTBZc1QwRkJUeXhWUVVGVkxFTkJRVU1zVlVGQlZTeERRVUZOTEZGQlFWRXNRMEZCUXl4VlFVRlZMRU5CUVVNc1ZVRkJWU3hGUVVGRkxGRkJRVkVzUlVGQlJTeFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNSVUZCZEVJc1EwRkJjMElzUlVGQlJTeFZRVUZCTEVOQlFVTXNTVUZCUnl4UFFVRkJMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNSVUZCZEVJc1EwRkJjMElzUTBGQlF5eERRVUZETzBGQlEzaEpMRU5CUVVNN1FVRktSQ3d3UWtGSlF6dEJRVVZFTEZOQlFWTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQll5eEZRVUZGTEZkQlFXMUNPMGxCUXpkRUxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRPMUZCUTFnc1EwRkJReXhEUVVGRExGVkJRVlVzUjBGQlVUdFpRVU5vUWl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWs3V1VGRFdpeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZEY0VNc1EwRkJRenRKUVVOT0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEwZ3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGQkxFTkJRVU03VVVGRFdpeERRVUZETEVOQlFVTXNWVUZCVlN4SFFVRlJPMWxCUTJoQ0xFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF6dFpRVU4wUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJia0lzUTBGQmJVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03YVVKQlEyNUdMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkJMRU5CUVVNc1NVRkJSeXhQUVVGQkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFWQXNRMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6dFRRVU5vUml4RFFVRkRPMGxCUTA0c1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFNDeEpRVUZKTEdWQlFXVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRMmhFTEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU53UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU03U1VGRGVFSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRTQ3hQUVVGUExFbEJRVWtzZFVKQlFWVXNRMEZCUXl4bFFVRmxMRVZCUVVVN1VVRkRia01zVjBGQlZ5eEZRVUZGTEZWQlFVTXNRMEZCVFN4SlFVRkxMRTlCUVVFc1EwRkJReXhEUVVGRExGRkJRVkVzUlVGQlZpeERRVUZWTzFGQlEyNURMRk5CUVZNc1JVRkJSU3hWUVVGQkxFTkJRVU1zU1VGQlNTeFBRVUZCTEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVZJc1EwRkJVVHRMUVVNelFpeEZRVUZGTEUxQlFVMHNSMEZCUnl4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVNM1FpeERRVUZETzBGQlJVUXNVMEZCWjBJc2IwSkJRVzlDTEVOQlEyaERMRXRCUVRaRExFVkJRemRETEVsQlFXTXNSVUZEWkN4WlFVRnZRanRKUVVkd1FpeEpRVUZKTEZWQlFWVXNRMEZCUXp0SlFVTm1MRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1NVRkJTeXhQUVVGTkxFTkJRVVVzUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RlFVRnNRaXhEUVVGclFpeERRVUZETEVOQlFVTTdTVUZEYWtRc1NVRkJTU3hsUVVGTkxFVkJRVVU3VTBGRFVDeGhRVUZoTEVOQlFVTXNTMEZCU3l4RFFVRkRPMU5CUTNCQ0xFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRPMU5CUTJ4Q0xFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRPMU5CUTJ4Q0xHZENRVUZuUWl4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVONlFpeFZRVUZWTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJZc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4RFFVRkRMRWxCUVVjc1QwRkJRU3hEUVVGRExFTkJRVU1zVDBGQlR5eEhRVUZITEZsQlFWa3NSVUZCZUVJc1EwRkJkMElzUTBGQlF5eERRVUZETzBsQlF6VkVMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJTVkFzU1VGQlNTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJRMllzU1VGQlNTeEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZET1VJc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVzc1QwRkJUU3hEUVVGRkxFTkJRVU1zUzBGQlN5eEhRVUZITEVOQlFVTXNSVUZCYkVJc1EwRkJhMElzUTBGQlF5eERRVUZETzBsQlEzcERMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxGTkJRVk1zUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyNURMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEV0N4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eFhRVUZYTzFsQlF5OUNMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXl4SlFVRkpMRTlCUVVFc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RlFVRnNSQ3hEUVVGclJDeERRVUZETEVOQlFVTTdVVUZET1VVc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NWMEZCVnp0WlFVTXZRaXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkJMRVZCUVVVc1NVRkJTU3hQUVVGQkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRWEJFTEVOQlFXOUVMRU5CUVVNc1EwRkJRenRKUVVOeVJpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTklMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFVRXNRMEZCUXp0UlFVTXpRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGSFNDeEpRVUZKTEdWQlFVMHNSVUZCUlR0VFFVTlFMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03VTBGRFZpeExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRPMU5CUTFRc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dFRRVU5hTEdGQlFXRXNRMEZCUXl4TFFVRkxMRU5CUVVNN1UwRkRjRUlzV1VGQldTeERRVUZETEVWQlFVVXNRMEZCUXp0VFFVTm9RaXgzUWtGQmQwSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRNMElzYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRE8xTkJRekZDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkxhRU1zVDBGQlR6dFJRVU5JTEVsQlFVa3NSVUZEUVN4SlFVRkpMR1ZCUVUwc1JVRkJSVHRoUVVOWUxHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJRenRoUVVNeFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMkZCUTFZc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF6dGhRVU51UWl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dGhRVU5zUWl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF6dGhRVVZzUWl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTTdZVUZEZEVJc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF6dGhRVU5vUWl4M1FrRkJkMElzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZETTBJc1owSkJRV2RDTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTNwQ0xGVkJRVlVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEWml4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTTdaMEpCUTJwRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVkQlFVY3NXVUZCV1N4RFFVRkJPMWxCUXpWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU03VVVGRGJFTXNWVUZCVlN4RlFVRkZMRlZCUVZVN1MwRkRla0lzUTBGQlF6dEJRVU5PTEVOQlFVTTdRVUZ5UlVRc2IwUkJjVVZESW4wPSIsIlwidXNlIHN0cmljdFwiO1xyXG5mdW5jdGlvbiBfX2V4cG9ydChtKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmICghZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgZXhwb3J0c1twXSA9IG1bcF07XHJcbn1cclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvYWRhcHRvclwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9kM2FkYXB0b3JcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvZGVzY2VudFwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9nZW9tXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL2dyaWRyb3V0ZXJcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvaGFuZGxlZGlzY29ubmVjdGVkXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL2xheW91dFwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9sYXlvdXQzZFwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9saW5rbGVuZ3Roc1wiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9wb3dlcmdyYXBoXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL3BxdWV1ZVwiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9yYnRyZWVcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvcmVjdGFuZ2xlXCIpKTtcclxuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL3Nob3J0ZXN0cGF0aHNcIikpO1xyXG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvdnBzY1wiKSk7XHJcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9iYXRjaFwiKSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTlYWldKRGIyeGhMMmx1WkdWNExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3TzBGQlFVRXNiVU5CUVRaQ08wRkJRemRDTEhGRFFVRXJRanRCUVVNdlFpeHRRMEZCTmtJN1FVRkROMElzWjBOQlFUQkNPMEZCUXpGQ0xITkRRVUZuUXp0QlFVTm9ReXc0UTBGQmQwTTdRVUZEZUVNc2EwTkJRVFJDTzBGQlF6VkNMRzlEUVVFNFFqdEJRVU01UWl4MVEwRkJhVU03UVVGRGFrTXNjME5CUVdkRE8wRkJRMmhETEd0RFFVRTBRanRCUVVNMVFpeHJRMEZCTkVJN1FVRkROVUlzY1VOQlFTdENPMEZCUXk5Q0xIbERRVUZ0UXp0QlFVTnVReXhuUTBGQk1FSTdRVUZETVVJc2FVTkJRVEpDSW4wPSIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIndlYmNvbGFcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wid2ViY29sYVwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJjeXRvc2NhcGVDb2xhXCJdID0gZmFjdG9yeShyZXF1aXJlKFwid2ViY29sYVwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1wiY3l0b3NjYXBlQ29sYVwiXSA9IGZhY3Rvcnkocm9vdFtcIndlYmNvbGFcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV81X18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAzKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbnZhciBkZWZhdWx0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgY29sYSA9IF9fd2VicGFja19yZXF1aXJlX18oNSkgfHwgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmNvbGEgOiBudWxsKTtcbnZhciByYWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIGlzU3RyaW5nID0gZnVuY3Rpb24gaXNTdHJpbmcobykge1xuICByZXR1cm4gKHR5cGVvZiBvID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvKSkgPT09IF90eXBlb2YoJycpO1xufTtcbnZhciBpc051bWJlciA9IGZ1bmN0aW9uIGlzTnVtYmVyKG8pIHtcbiAgcmV0dXJuICh0eXBlb2YgbyA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YobykpID09PSBfdHlwZW9mKDApO1xufTtcbnZhciBpc09iamVjdCA9IGZ1bmN0aW9uIGlzT2JqZWN0KG8pIHtcbiAgcmV0dXJuIG8gIT0gbnVsbCAmJiAodHlwZW9mIG8gPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKG8pKSA9PT0gX3R5cGVvZih7fSk7XG59O1xudmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBpc0Z1bmN0aW9uKG8pIHtcbiAgcmV0dXJuIG8gIT0gbnVsbCAmJiAodHlwZW9mIG8gPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKG8pKSA9PT0gX3R5cGVvZihmdW5jdGlvbiAoKSB7fSk7XG59O1xudmFyIG5vcCA9IGZ1bmN0aW9uIG5vcCgpIHt9O1xuXG52YXIgZ2V0T3B0VmFsID0gZnVuY3Rpb24gZ2V0T3B0VmFsKHZhbCwgZWxlKSB7XG4gIGlmIChpc0Z1bmN0aW9uKHZhbCkpIHtcbiAgICB2YXIgZm4gPSB2YWw7XG4gICAgcmV0dXJuIGZuLmFwcGx5KGVsZSwgW2VsZV0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbn07XG5cbi8vIGNvbnN0cnVjdG9yXG4vLyBvcHRpb25zIDogb2JqZWN0IGNvbnRhaW5pbmcgbGF5b3V0IG9wdGlvbnNcbmZ1bmN0aW9uIENvbGFMYXlvdXQob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBhc3NpZ24oe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbn1cblxuLy8gcnVucyB0aGUgbGF5b3V0XG5Db2xhTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsYXlvdXQgPSB0aGlzO1xuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICBsYXlvdXQubWFudWFsbHlTdG9wcGVkID0gZmFsc2U7XG5cbiAgdmFyIGN5ID0gb3B0aW9ucy5jeTsgLy8gY3kgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgZm9yIHVzIGluIHRoZSBjb25zdHJ1Y3RvclxuICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgdmFyIG5vZGVzID0gZWxlcy5ub2RlcygpO1xuICB2YXIgZWRnZXMgPSBlbGVzLmVkZ2VzKCk7XG4gIHZhciByZWFkeSA9IGZhbHNlO1xuXG4gIHZhciBpc1BhcmVudCA9IGZ1bmN0aW9uIGlzUGFyZW50KGVsZSkge1xuICAgIHJldHVybiBlbGUuaXNQYXJlbnQoKTtcbiAgfTtcblxuICB2YXIgcGFyZW50Tm9kZXMgPSBub2Rlcy5maWx0ZXIoaXNQYXJlbnQpO1xuXG4gIHZhciBub25wYXJlbnROb2RlcyA9IG5vZGVzLnN1YnRyYWN0KHBhcmVudE5vZGVzKTtcblxuICB2YXIgYmIgPSBvcHRpb25zLmJvdW5kaW5nQm94IHx8IHsgeDE6IDAsIHkxOiAwLCB3OiBjeS53aWR0aCgpLCBoOiBjeS5oZWlnaHQoKSB9O1xuICBpZiAoYmIueDIgPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLngyID0gYmIueDEgKyBiYi53O1xuICB9XG4gIGlmIChiYi53ID09PSB1bmRlZmluZWQpIHtcbiAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgfVxuICBpZiAoYmIueTIgPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLnkyID0gYmIueTEgKyBiYi5oO1xuICB9XG4gIGlmIChiYi5oID09PSB1bmRlZmluZWQpIHtcbiAgICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgfVxuXG4gIHZhciB1cGRhdGVOb2RlUG9zaXRpb25zID0gZnVuY3Rpb24gdXBkYXRlTm9kZVBvc2l0aW9ucygpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgdmFyIGRpbWVuc2lvbnMgPSBub2RlLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaCgnY29sYScpO1xuXG4gICAgICAvLyB1cGRhdGUgbm9kZSBkaW1zXG4gICAgICBpZiAoIXNjcmF0Y2gudXBkYXRlZERpbXMpIHtcbiAgICAgICAgdmFyIHBhZGRpbmcgPSBnZXRPcHRWYWwob3B0aW9ucy5ub2RlU3BhY2luZywgbm9kZSk7XG5cbiAgICAgICAgc2NyYXRjaC53aWR0aCA9IGRpbWVuc2lvbnMudyArIDIgKiBwYWRkaW5nO1xuICAgICAgICBzY3JhdGNoLmhlaWdodCA9IGRpbWVuc2lvbnMuaCArIDIgKiBwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgIG5vZGVzLnBvc2l0aW9ucyhmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIHNjcmF0Y2ggPSBub2RlLnNjcmF0Y2goKS5jb2xhO1xuICAgICAgdmFyIHJldFBvcyA9IHZvaWQgMDtcblxuICAgICAgaWYgKCFub2RlLmdyYWJiZWQoKSAmJiBub25wYXJlbnROb2Rlcy5jb250YWlucyhub2RlKSkge1xuICAgICAgICByZXRQb3MgPSB7XG4gICAgICAgICAgeDogYmIueDEgKyBzY3JhdGNoLngsXG4gICAgICAgICAgeTogYmIueTEgKyBzY3JhdGNoLnlcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIWlzTnVtYmVyKHJldFBvcy54KSB8fCAhaXNOdW1iZXIocmV0UG9zLnkpKSB7XG4gICAgICAgICAgcmV0UG9zID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXRQb3M7XG4gICAgfSk7XG5cbiAgICBub2Rlcy51cGRhdGVDb21wb3VuZEJvdW5kcygpOyAvLyBiZWNhdXNlIHRoZSB3YXkgdGhpcyBsYXlvdXQgc2V0cyBwb3NpdGlvbnMgaXMgYnVnZ3kgZm9yIHNvbWUgcmVhc29uOyByZWYgIzg3OFxuXG4gICAgaWYgKCFyZWFkeSkge1xuICAgICAgb25SZWFkeSgpO1xuICAgICAgcmVhZHkgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmZpdCkge1xuICAgICAgY3kuZml0KG9wdGlvbnMucGFkZGluZyk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBvbkRvbmUgPSBmdW5jdGlvbiBvbkRvbmUoKSB7XG4gICAgaWYgKG9wdGlvbnMudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgICBncmFiYmFibGVOb2Rlcy5ncmFiaWZ5KCk7XG4gICAgfVxuXG4gICAgY3kub2ZmKCdkZXN0cm95JywgZGVzdHJveUhhbmRsZXIpO1xuXG4gICAgbm9kZXMub2ZmKCdncmFiIGZyZWUgcG9zaXRpb24nLCBncmFiSGFuZGxlcik7XG4gICAgbm9kZXMub2ZmKCdsb2NrIHVubG9jaycsIGxvY2tIYW5kbGVyKTtcblxuICAgIC8vIHRyaWdnZXIgbGF5b3V0c3RvcCB3aGVuIHRoZSBsYXlvdXQgc3RvcHMgKGUuZy4gZmluaXNoZXMpXG4gICAgbGF5b3V0Lm9uZSgnbGF5b3V0c3RvcCcsIG9wdGlvbnMuc3RvcCk7XG4gICAgbGF5b3V0LnRyaWdnZXIoeyB0eXBlOiAnbGF5b3V0c3RvcCcsIGxheW91dDogbGF5b3V0IH0pO1xuICB9O1xuXG4gIHZhciBvblJlYWR5ID0gZnVuY3Rpb24gb25SZWFkeSgpIHtcbiAgICAvLyB0cmlnZ2VyIGxheW91dHJlYWR5IHdoZW4gZWFjaCBub2RlIGhhcyBoYWQgaXRzIHBvc2l0aW9uIHNldCBhdCBsZWFzdCBvbmNlXG4gICAgbGF5b3V0Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICBsYXlvdXQudHJpZ2dlcih7IHR5cGU6ICdsYXlvdXRyZWFkeScsIGxheW91dDogbGF5b3V0IH0pO1xuICB9O1xuXG4gIHZhciB0aWNrc1BlckZyYW1lID0gb3B0aW9ucy5yZWZyZXNoO1xuXG4gIGlmIChvcHRpb25zLnJlZnJlc2ggPCAwKSB7XG4gICAgdGlja3NQZXJGcmFtZSA9IDE7XG4gIH0gZWxzZSB7XG4gICAgdGlja3NQZXJGcmFtZSA9IE1hdGgubWF4KDEsIHRpY2tzUGVyRnJhbWUpOyAvLyBhdCBsZWFzdCAxXG4gIH1cblxuICB2YXIgYWRhcHRvciA9IGxheW91dC5hZGFwdG9yID0gY29sYS5hZGFwdG9yKHtcbiAgICB0cmlnZ2VyOiBmdW5jdGlvbiB0cmlnZ2VyKGUpIHtcbiAgICAgIC8vIG9uIHNpbSBldmVudFxuICAgICAgdmFyIFRJQ0sgPSBjb2xhLkV2ZW50VHlwZSA/IGNvbGEuRXZlbnRUeXBlLnRpY2sgOiBudWxsO1xuICAgICAgdmFyIEVORCA9IGNvbGEuRXZlbnRUeXBlID8gY29sYS5FdmVudFR5cGUuZW5kIDogbnVsbDtcblxuICAgICAgc3dpdGNoIChlLnR5cGUpIHtcbiAgICAgICAgY2FzZSAndGljayc6XG4gICAgICAgIGNhc2UgVElDSzpcbiAgICAgICAgICBpZiAob3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICAgICAgICB1cGRhdGVOb2RlUG9zaXRpb25zKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgIGNhc2UgRU5EOlxuICAgICAgICAgIHVwZGF0ZU5vZGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuaW5maW5pdGUpIHtcbiAgICAgICAgICAgIG9uRG9uZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAga2ljazogZnVuY3Rpb24ga2ljaygpIHtcbiAgICAgIC8vIGtpY2sgb2ZmIHRoZSBzaW11bGF0aW9uXG4gICAgICAvL2xldCBza2lwID0gMDtcblxuICAgICAgdmFyIGZpcnN0VGljayA9IHRydWU7XG5cbiAgICAgIHZhciBpbmZ0aWNrID0gZnVuY3Rpb24gaW5mdGljaygpIHtcbiAgICAgICAgaWYgKGxheW91dC5tYW51YWxseVN0b3BwZWQpIHtcbiAgICAgICAgICBvbkRvbmUoKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJldCA9IGFkYXB0b3IudGljaygpO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5pbmZpbml0ZSAmJiAhZmlyc3RUaWNrKSB7XG4gICAgICAgICAgYWRhcHRvci5jb252ZXJnZW5jZVRocmVzaG9sZChvcHRpb25zLmNvbnZlcmdlbmNlVGhyZXNob2xkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpcnN0VGljayA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChyZXQgJiYgb3B0aW9ucy5pbmZpbml0ZSkge1xuICAgICAgICAgIC8vIHJlc3VtZSBsYXlvdXQgaWYgZG9uZVxuICAgICAgICAgIGFkYXB0b3IucmVzdW1lKCk7IC8vIHJlc3VtZSA9PiBuZXcga2lja1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDsgLy8gYWxsb3cgcmVndWxhciBmaW5pc2ggYi9jIG9mIG5ldyBraWNrXG4gICAgICB9O1xuXG4gICAgICB2YXIgbXVsdGl0aWNrID0gZnVuY3Rpb24gbXVsdGl0aWNrKCkge1xuICAgICAgICAvLyBtdWx0aXBsZSB0aWNrcyBpbiBhIHJvd1xuICAgICAgICB2YXIgcmV0ID0gdm9pZCAwO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGlja3NQZXJGcmFtZSAmJiAhcmV0OyBpKyspIHtcbiAgICAgICAgICByZXQgPSByZXQgfHwgaW5mdGljaygpOyAvLyBwaWNrIHVwIHRydWUgcmV0IHZhbHMgPT4gc2ltIGRvbmVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9O1xuXG4gICAgICBpZiAob3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICAgIHZhciBmcmFtZSA9IGZ1bmN0aW9uIGZyYW1lKCkge1xuICAgICAgICAgIGlmIChtdWx0aXRpY2soKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJhZihmcmFtZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmFmKGZyYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdoaWxlICghaW5mdGljaygpKSB7XG4gICAgICAgICAgLy8ga2VlcCBnb2luZy4uLlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uOiBub3AsIC8vIGR1bW15OyBub3QgbmVlZGVkXG5cbiAgICBkcmFnOiBub3AgLy8gbm90IG5lZWRlZCBmb3Igb3VyIGNhc2VcbiAgfSk7XG4gIGxheW91dC5hZGFwdG9yID0gYWRhcHRvcjtcblxuICAvLyBpZiBzZXQgbm8gZ3JhYmJpbmcgZHVyaW5nIGxheW91dFxuICB2YXIgZ3JhYmJhYmxlTm9kZXMgPSBub2Rlcy5maWx0ZXIoJzpncmFiYmFibGUnKTtcbiAgaWYgKG9wdGlvbnMudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgZ3JhYmJhYmxlTm9kZXMudW5ncmFiaWZ5KCk7XG4gIH1cblxuICB2YXIgZGVzdHJveUhhbmRsZXIgPSB2b2lkIDA7XG4gIGN5Lm9uZSgnZGVzdHJveScsIGRlc3Ryb3lIYW5kbGVyID0gZnVuY3Rpb24gZGVzdHJveUhhbmRsZXIoKSB7XG4gICAgbGF5b3V0LnN0b3AoKTtcbiAgfSk7XG5cbiAgLy8gaGFuZGxlIG5vZGUgZHJhZ2dpbmdcbiAgdmFyIGdyYWJIYW5kbGVyID0gdm9pZCAwO1xuICBub2Rlcy5vbignZ3JhYiBmcmVlIHBvc2l0aW9uJywgZ3JhYkhhbmRsZXIgPSBmdW5jdGlvbiBncmFiSGFuZGxlcihlKSB7XG4gICAgdmFyIG5vZGUgPSB0aGlzO1xuICAgIHZhciBzY3JDb2xhID0gbm9kZS5zY3JhdGNoKCkuY29sYTtcbiAgICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuICAgIHZhciBub2RlSXNUYXJnZXQgPSBlLmN5VGFyZ2V0ID09PSBub2RlIHx8IGUudGFyZ2V0ID09PSBub2RlO1xuXG4gICAgaWYgKCFub2RlSXNUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGUudHlwZSkge1xuICAgICAgY2FzZSAnZ3JhYic6XG4gICAgICAgIGFkYXB0b3IuZHJhZ3N0YXJ0KHNjckNvbGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ZyZWUnOlxuICAgICAgICBhZGFwdG9yLmRyYWdlbmQoc2NyQ29sYSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncG9zaXRpb24nOlxuICAgICAgICAvLyBvbmx5IHVwZGF0ZSB3aGVuIGRpZmZlcmVudCAoaS5lLiBtYW51YWwgLnBvc2l0aW9uKCkgY2FsbCBvciBkcmFnKSBzbyB3ZSBkb24ndCBsb29wIG5lZWRsZXNzbHlcbiAgICAgICAgaWYgKHNjckNvbGEucHggIT09IHBvcy54IC0gYmIueDEgfHwgc2NyQ29sYS5weSAhPT0gcG9zLnkgLSBiYi55MSkge1xuICAgICAgICAgIHNjckNvbGEucHggPSBwb3MueCAtIGJiLngxO1xuICAgICAgICAgIHNjckNvbGEucHkgPSBwb3MueSAtIGJiLnkxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGxvY2tIYW5kbGVyID0gdm9pZCAwO1xuICBub2Rlcy5vbignbG9jayB1bmxvY2snLCBsb2NrSGFuZGxlciA9IGZ1bmN0aW9uIGxvY2tIYW5kbGVyKCkge1xuICAgIHZhciBub2RlID0gdGhpcztcbiAgICB2YXIgc2NyQ29sYSA9IG5vZGUuc2NyYXRjaCgpLmNvbGE7XG5cbiAgICBzY3JDb2xhLmZpeGVkID0gbm9kZS5sb2NrZWQoKTtcblxuICAgIGlmIChub2RlLmxvY2tlZCgpKSB7XG4gICAgICBhZGFwdG9yLmRyYWdzdGFydChzY3JDb2xhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWRhcHRvci5kcmFnZW5kKHNjckNvbGEpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gYWRkIG5vZGVzIHRvIGNvbGFcbiAgYWRhcHRvci5ub2Rlcyhub25wYXJlbnROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICB2YXIgcGFkZGluZyA9IGdldE9wdFZhbChvcHRpb25zLm5vZGVTcGFjaW5nLCBub2RlKTtcbiAgICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuICAgIHZhciBkaW1lbnNpb25zID0gbm9kZS5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuXG4gICAgdmFyIHN0cnVjdCA9IG5vZGUuc2NyYXRjaCgpLmNvbGEgPSB7XG4gICAgICB4OiBvcHRpb25zLnJhbmRvbWl6ZSAmJiAhbm9kZS5sb2NrZWQoKSB8fCBwb3MueCA9PT0gdW5kZWZpbmVkID8gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogYmIudykgOiBwb3MueCxcbiAgICAgIHk6IG9wdGlvbnMucmFuZG9taXplICYmICFub2RlLmxvY2tlZCgpIHx8IHBvcy55ID09PSB1bmRlZmluZWQgPyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiBiYi5oKSA6IHBvcy55LFxuICAgICAgd2lkdGg6IGRpbWVuc2lvbnMudyArIDIgKiBwYWRkaW5nLFxuICAgICAgaGVpZ2h0OiBkaW1lbnNpb25zLmggKyAyICogcGFkZGluZyxcbiAgICAgIGluZGV4OiBpLFxuICAgICAgZml4ZWQ6IG5vZGUubG9ja2VkKClcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN0cnVjdDtcbiAgfSkpO1xuXG4gIC8vIHRoZSBjb25zdHJhaW50cyB0byBiZSBhZGRlZCBvbiBub2Rlc1xuICB2YXIgY29uc3RyYWludHMgPSBbXTtcblxuICBpZiAob3B0aW9ucy5hbGlnbm1lbnQpIHtcbiAgICAvLyB0aGVuIHNldCBhbGlnbm1lbnQgY29uc3RyYWludHNcblxuICAgIGlmIChvcHRpb25zLmFsaWdubWVudC52ZXJ0aWNhbCkge1xuICAgICAgdmFyIHZlcnRpY2FsQWxpZ25tZW50cyA9IG9wdGlvbnMuYWxpZ25tZW50LnZlcnRpY2FsO1xuICAgICAgdmVydGljYWxBbGlnbm1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGFsaWdubWVudCkge1xuICAgICAgICB2YXIgb2Zmc2V0c1ggPSBbXTtcbiAgICAgICAgYWxpZ25tZW50LmZvckVhY2goZnVuY3Rpb24gKG5vZGVEYXRhKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBub2RlRGF0YS5ub2RlO1xuICAgICAgICAgIHZhciBzY3JDb2xhID0gbm9kZS5zY3JhdGNoKCkuY29sYTtcbiAgICAgICAgICB2YXIgaW5kZXggPSBzY3JDb2xhLmluZGV4O1xuICAgICAgICAgIG9mZnNldHNYLnB1c2goe1xuICAgICAgICAgICAgbm9kZTogaW5kZXgsXG4gICAgICAgICAgICBvZmZzZXQ6IG5vZGVEYXRhLm9mZnNldCA/IG5vZGVEYXRhLm9mZnNldCA6IDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdhbGlnbm1lbnQnLFxuICAgICAgICAgIGF4aXM6ICd4JyxcbiAgICAgICAgICBvZmZzZXRzOiBvZmZzZXRzWFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmFsaWdubWVudC5ob3Jpem9udGFsKSB7XG4gICAgICB2YXIgaG9yaXpvbnRhbEFsaWdubWVudHMgPSBvcHRpb25zLmFsaWdubWVudC5ob3Jpem9udGFsO1xuICAgICAgaG9yaXpvbnRhbEFsaWdubWVudHMuZm9yRWFjaChmdW5jdGlvbiAoYWxpZ25tZW50KSB7XG4gICAgICAgIHZhciBvZmZzZXRzWSA9IFtdO1xuICAgICAgICBhbGlnbm1lbnQuZm9yRWFjaChmdW5jdGlvbiAobm9kZURhdGEpIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVEYXRhLm5vZGU7XG4gICAgICAgICAgdmFyIHNjckNvbGEgPSBub2RlLnNjcmF0Y2goKS5jb2xhO1xuICAgICAgICAgIHZhciBpbmRleCA9IHNjckNvbGEuaW5kZXg7XG4gICAgICAgICAgb2Zmc2V0c1kucHVzaCh7XG4gICAgICAgICAgICBub2RlOiBpbmRleCxcbiAgICAgICAgICAgIG9mZnNldDogbm9kZURhdGEub2Zmc2V0ID8gbm9kZURhdGEub2Zmc2V0IDogMFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2FsaWdubWVudCcsXG4gICAgICAgICAgYXhpczogJ3knLFxuICAgICAgICAgIG9mZnNldHM6IG9mZnNldHNZXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgZ2FwSW5lcXVhbGl0aWVzIHZhcmlhYmxlIGlzIHNldCBhZGQgZWFjaCBpbmVxdWFsaXR5IGNvbnN0cmFpbnQgdG8gbGlzdCBvZiBjb25zdHJhaW50c1xuICBpZiAob3B0aW9ucy5nYXBJbmVxdWFsaXRpZXMpIHtcbiAgICBvcHRpb25zLmdhcEluZXF1YWxpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChpbmVxdWFsaXR5KSB7XG5cbiAgICAgIC8vIGZvciB0aGUgY29uc3RyYWludHMgdG8gYmUgcGFzc2VkIHRvIGNvbGEgbGF5b3V0IGFkYXB0b3IgdXNlIGluZGljZXMgb2Ygbm9kZXMsXG4gICAgICAvLyBub3QgdGhlIG5vZGVzIHRoZW1zZWx2ZXNcbiAgICAgIHZhciBsZWZ0SW5kZXggPSBpbmVxdWFsaXR5LmxlZnQuc2NyYXRjaCgpLmNvbGEuaW5kZXg7XG4gICAgICB2YXIgcmlnaHRJbmRleCA9IGluZXF1YWxpdHkucmlnaHQuc2NyYXRjaCgpLmNvbGEuaW5kZXg7XG5cbiAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICBheGlzOiBpbmVxdWFsaXR5LmF4aXMsXG4gICAgICAgIGxlZnQ6IGxlZnRJbmRleCxcbiAgICAgICAgcmlnaHQ6IHJpZ2h0SW5kZXgsXG4gICAgICAgIGdhcDogaW5lcXVhbGl0eS5nYXAsXG4gICAgICAgIGVxdWFsaXR5OiBpbmVxdWFsaXR5LmVxdWFsaXR5XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGFkZCBjb25zdHJhaW50cyBpZiBhbnlcbiAgaWYgKGNvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHtcbiAgICBhZGFwdG9yLmNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTtcbiAgfVxuXG4gIC8vIGFkZCBjb21wb3VuZCBub2RlcyB0byBjb2xhXG4gIGFkYXB0b3IuZ3JvdXBzKHBhcmVudE5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIC8vIGFkZCBiYXNpYyBncm91cCBpbmNsIGxlYWYgbm9kZXNcbiAgICB2YXIgb3B0UGFkZGluZyA9IGdldE9wdFZhbChvcHRpb25zLm5vZGVTcGFjaW5nLCBub2RlKTtcbiAgICB2YXIgZ2V0UGFkZGluZyA9IGZ1bmN0aW9uIGdldFBhZGRpbmcoZCkge1xuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobm9kZS5zdHlsZSgncGFkZGluZy0nICsgZCkpO1xuICAgIH07XG5cbiAgICB2YXIgcGxlZnQgPSBnZXRQYWRkaW5nKCdsZWZ0JykgKyBvcHRQYWRkaW5nO1xuICAgIHZhciBwcmlnaHQgPSBnZXRQYWRkaW5nKCdyaWdodCcpICsgb3B0UGFkZGluZztcbiAgICB2YXIgcHRvcCA9IGdldFBhZGRpbmcoJ3RvcCcpICsgb3B0UGFkZGluZztcbiAgICB2YXIgcGJvdHRvbSA9IGdldFBhZGRpbmcoJ2JvdHRvbScpICsgb3B0UGFkZGluZztcblxuICAgIG5vZGUuc2NyYXRjaCgpLmNvbGEgPSB7XG4gICAgICBpbmRleDogaSxcblxuICAgICAgcGFkZGluZzogTWF0aC5tYXgocGxlZnQsIHByaWdodCwgcHRvcCwgcGJvdHRvbSksXG5cbiAgICAgIC8vIGxlYXZlcyBzaG91bGQgb25seSBjb250YWluIGRpcmVjdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4pLFxuICAgICAgLy8gbm90IHRoZSBsZWF2ZXMgb2YgbmVzdGVkIGNvbXBvdW5kIG5vZGVzIG9yIGFueSBub2RlcyB0aGF0IGFyZSBjb21wb3VuZHMgdGhlbXNlbHZlc1xuICAgICAgbGVhdmVzOiBub2RlLmNoaWxkcmVuKCkuaW50ZXJzZWN0aW9uKG5vbnBhcmVudE5vZGVzKS5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHJldHVybiBjaGlsZFswXS5zY3JhdGNoKCkuY29sYS5pbmRleDtcbiAgICAgIH0pLFxuXG4gICAgICBmaXhlZDogbm9kZS5sb2NrZWQoKVxuICAgIH07XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfSkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgLy8gYWRkIHN1Ymdyb3Vwc1xuICAgIG5vZGUuc2NyYXRjaCgpLmNvbGEuZ3JvdXBzID0gbm9kZS5jaGlsZHJlbigpLmludGVyc2VjdGlvbihwYXJlbnROb2RlcykubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgcmV0dXJuIGNoaWxkLnNjcmF0Y2goKS5jb2xhLmluZGV4O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5vZGUuc2NyYXRjaCgpLmNvbGE7XG4gIH0pKTtcblxuICAvLyBnZXQgdGhlIGVkZ2UgbGVuZ3RoIHNldHRpbmcgbWVjaGFuaXNtXG4gIHZhciBsZW5ndGggPSB2b2lkIDA7XG4gIHZhciBsZW5ndGhGbk5hbWUgPSB2b2lkIDA7XG4gIGlmIChvcHRpb25zLmVkZ2VMZW5ndGggIT0gbnVsbCkge1xuICAgIGxlbmd0aCA9IG9wdGlvbnMuZWRnZUxlbmd0aDtcbiAgICBsZW5ndGhGbk5hbWUgPSAnbGlua0Rpc3RhbmNlJztcbiAgfSBlbHNlIGlmIChvcHRpb25zLmVkZ2VTeW1EaWZmTGVuZ3RoICE9IG51bGwpIHtcbiAgICBsZW5ndGggPSBvcHRpb25zLmVkZ2VTeW1EaWZmTGVuZ3RoO1xuICAgIGxlbmd0aEZuTmFtZSA9ICdzeW1tZXRyaWNEaWZmTGlua0xlbmd0aHMnO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuZWRnZUphY2NhcmRMZW5ndGggIT0gbnVsbCkge1xuICAgIGxlbmd0aCA9IG9wdGlvbnMuZWRnZUphY2NhcmRMZW5ndGg7XG4gICAgbGVuZ3RoRm5OYW1lID0gJ2phY2NhcmRMaW5rTGVuZ3Rocyc7XG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gMTAwO1xuICAgIGxlbmd0aEZuTmFtZSA9ICdsaW5rRGlzdGFuY2UnO1xuICB9XG5cbiAgdmFyIGxlbmd0aEdldHRlciA9IGZ1bmN0aW9uIGxlbmd0aEdldHRlcihsaW5rKSB7XG4gICAgcmV0dXJuIGxpbmsuY2FsY0xlbmd0aDtcbiAgfTtcblxuICAvLyBhZGQgdGhlIGVkZ2VzIHRvIGNvbGFcbiAgYWRhcHRvci5saW5rcyhlZGdlcy5zdGRGaWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gbm9ucGFyZW50Tm9kZXMuY29udGFpbnMoZWRnZS5zb3VyY2UoKSkgJiYgbm9ucGFyZW50Tm9kZXMuY29udGFpbnMoZWRnZS50YXJnZXQoKSk7XG4gIH0pLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBjID0gZWRnZS5zY3JhdGNoKCkuY29sYSA9IHtcbiAgICAgIHNvdXJjZTogZWRnZS5zb3VyY2UoKVswXS5zY3JhdGNoKCkuY29sYS5pbmRleCxcbiAgICAgIHRhcmdldDogZWRnZS50YXJnZXQoKVswXS5zY3JhdGNoKCkuY29sYS5pbmRleFxuICAgIH07XG5cbiAgICBpZiAobGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIGMuY2FsY0xlbmd0aCA9IGdldE9wdFZhbChsZW5ndGgsIGVkZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBjO1xuICB9KSk7XG5cbiAgYWRhcHRvci5zaXplKFtiYi53LCBiYi5oXSk7XG5cbiAgaWYgKGxlbmd0aCAhPSBudWxsKSB7XG4gICAgYWRhcHRvcltsZW5ndGhGbk5hbWVdKGxlbmd0aEdldHRlcik7XG4gIH1cblxuICAvLyBzZXQgdGhlIGZsb3cgb2YgY29sYVxuICBpZiAob3B0aW9ucy5mbG93KSB7XG4gICAgdmFyIGZsb3cgPSB2b2lkIDA7XG4gICAgdmFyIGRlZkF4aXMgPSAneSc7XG4gICAgdmFyIGRlZk1pblNlcCA9IDUwO1xuXG4gICAgaWYgKGlzU3RyaW5nKG9wdGlvbnMuZmxvdykpIHtcbiAgICAgIGZsb3cgPSB7XG4gICAgICAgIGF4aXM6IG9wdGlvbnMuZmxvdyxcbiAgICAgICAgbWluU2VwYXJhdGlvbjogZGVmTWluU2VwXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIob3B0aW9ucy5mbG93KSkge1xuICAgICAgZmxvdyA9IHtcbiAgICAgICAgYXhpczogZGVmQXhpcyxcbiAgICAgICAgbWluU2VwYXJhdGlvbjogb3B0aW9ucy5mbG93XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3Qob3B0aW9ucy5mbG93KSkge1xuICAgICAgZmxvdyA9IG9wdGlvbnMuZmxvdztcblxuICAgICAgZmxvdy5heGlzID0gZmxvdy5heGlzIHx8IGRlZkF4aXM7XG4gICAgICBmbG93Lm1pblNlcGFyYXRpb24gPSBmbG93Lm1pblNlcGFyYXRpb24gIT0gbnVsbCA/IGZsb3cubWluU2VwYXJhdGlvbiA6IGRlZk1pblNlcDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZS5nLiBvcHRpb25zLmZsb3c6IHRydWVcbiAgICAgIGZsb3cgPSB7XG4gICAgICAgIGF4aXM6IGRlZkF4aXMsXG4gICAgICAgIG1pblNlcGFyYXRpb246IGRlZk1pblNlcFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBhZGFwdG9yLmZsb3dMYXlvdXQoZmxvdy5heGlzLCBmbG93Lm1pblNlcGFyYXRpb24pO1xuICB9XG5cbiAgbGF5b3V0LnRyaWdnZXIoeyB0eXBlOiAnbGF5b3V0c3RhcnQnLCBsYXlvdXQ6IGxheW91dCB9KTtcblxuICBhZGFwdG9yLmF2b2lkT3ZlcmxhcHMob3B0aW9ucy5hdm9pZE92ZXJsYXApLmhhbmRsZURpc2Nvbm5lY3RlZChvcHRpb25zLmhhbmRsZURpc2Nvbm5lY3RlZCkuc3RhcnQob3B0aW9ucy51bmNvbnN0ckl0ZXIsIG9wdGlvbnMudXNlckNvbnN0SXRlciwgb3B0aW9ucy5hbGxDb25zdEl0ZXIsIHVuZGVmaW5lZCwgLy8gZ3JpZFNuYXBJdGVyYXRpb25zID0gMFxuICB1bmRlZmluZWQsIC8vIGtlZXBSdW5uaW5nID0gdHJ1ZVxuICBvcHRpb25zLmNlbnRlckdyYXBoKTtcblxuICBpZiAoIW9wdGlvbnMuaW5maW5pdGUpIHtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghbGF5b3V0Lm1hbnVhbGx5U3RvcHBlZCkge1xuICAgICAgICBhZGFwdG9yLnN0b3AoKTtcbiAgICAgIH1cbiAgICB9LCBvcHRpb25zLm1heFNpbXVsYXRpb25UaW1lKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuLy8gY2FsbGVkIG9uIGNvbnRpbnVvdXMgbGF5b3V0cyB0byBzdG9wIHRoZW0gYmVmb3JlIHRoZXkgZmluaXNoXG5Db2xhTGF5b3V0LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5hZGFwdG9yKSB7XG4gICAgdGhpcy5tYW51YWxseVN0b3BwZWQgPSB0cnVlO1xuICAgIHRoaXMuYWRhcHRvci5zdG9wKCk7XG4gIH1cblxuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ29sYUxheW91dDtcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8vIFNpbXBsZSwgaW50ZXJuYWwgT2JqZWN0LmFzc2lnbigpIHBvbHlmaWxsIGZvciBvcHRpb25zIG9iamVjdHMgZXRjLlxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24gIT0gbnVsbCA/IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpIDogZnVuY3Rpb24gKHRndCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgc3JjcyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBzcmNzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHNyY3MuZmlsdGVyKGZ1bmN0aW9uIChzcmMpIHtcbiAgICByZXR1cm4gc3JjICE9IG51bGw7XG4gIH0pLmZvckVhY2goZnVuY3Rpb24gKHNyYykge1xuICAgIE9iamVjdC5rZXlzKHNyYykuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgcmV0dXJuIHRndFtrXSA9IHNyY1trXTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRndDtcbn07XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vLyBkZWZhdWx0IGxheW91dCBvcHRpb25zXG52YXIgZGVmYXVsdHMgPSB7XG4gIGFuaW1hdGU6IHRydWUsIC8vIHdoZXRoZXIgdG8gc2hvdyB0aGUgbGF5b3V0IGFzIGl0J3MgcnVubmluZ1xuICByZWZyZXNoOiAxLCAvLyBudW1iZXIgb2YgdGlja3MgcGVyIGZyYW1lOyBoaWdoZXIgaXMgZmFzdGVyIGJ1dCBtb3JlIGplcmt5XG4gIG1heFNpbXVsYXRpb25UaW1lOiA0MDAwLCAvLyBtYXggbGVuZ3RoIGluIG1zIHRvIHJ1biB0aGUgbGF5b3V0XG4gIHVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZzogZmFsc2UsIC8vIHNvIHlvdSBjYW4ndCBkcmFnIG5vZGVzIGR1cmluZyBsYXlvdXRcbiAgZml0OiB0cnVlLCAvLyBvbiBldmVyeSBsYXlvdXQgcmVwb3NpdGlvbiBvZiBub2RlcywgZml0IHRoZSB2aWV3cG9ydFxuICBwYWRkaW5nOiAzMCwgLy8gcGFkZGluZyBhcm91bmQgdGhlIHNpbXVsYXRpb25cbiAgYm91bmRpbmdCb3g6IHVuZGVmaW5lZCwgLy8gY29uc3RyYWluIGxheW91dCBib3VuZHM7IHsgeDEsIHkxLCB4MiwgeTIgfSBvciB7IHgxLCB5MSwgdywgaCB9XG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsIC8vIHdoZXRoZXIgbGFiZWxzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkZXRlcm1pbmluZyB0aGUgc3BhY2UgdXNlZCBieSBhIG5vZGVcblxuICAvLyBsYXlvdXQgZXZlbnQgY2FsbGJhY2tzXG4gIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHt9LCAvLyBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge30sIC8vIG9uIGxheW91dHN0b3BcblxuICAvLyBwb3NpdGlvbmluZyBvcHRpb25zXG4gIHJhbmRvbWl6ZTogZmFsc2UsIC8vIHVzZSByYW5kb20gbm9kZSBwb3NpdGlvbnMgYXQgYmVnaW5uaW5nIG9mIGxheW91dFxuICBhdm9pZE92ZXJsYXA6IHRydWUsIC8vIGlmIHRydWUsIHByZXZlbnRzIG92ZXJsYXAgb2Ygbm9kZSBib3VuZGluZyBib3hlc1xuICBoYW5kbGVEaXNjb25uZWN0ZWQ6IHRydWUsIC8vIGlmIHRydWUsIGF2b2lkcyBkaXNjb25uZWN0ZWQgY29tcG9uZW50cyBmcm9tIG92ZXJsYXBwaW5nXG4gIGNvbnZlcmdlbmNlVGhyZXNob2xkOiAwLjAxLCAvLyB3aGVuIHRoZSBhbHBoYSB2YWx1ZSAoc3lzdGVtIGVuZXJneSkgZmFsbHMgYmVsb3cgdGhpcyB2YWx1ZSwgdGhlIGxheW91dCBzdG9wc1xuICBub2RlU3BhY2luZzogZnVuY3Rpb24gbm9kZVNwYWNpbmcobm9kZSkge1xuICAgIHJldHVybiAxMDtcbiAgfSwgLy8gZXh0cmEgc3BhY2luZyBhcm91bmQgbm9kZXNcbiAgZmxvdzogdW5kZWZpbmVkLCAvLyB1c2UgREFHL3RyZWUgZmxvdyBsYXlvdXQgaWYgc3BlY2lmaWVkLCBlLmcuIHsgYXhpczogJ3knLCBtaW5TZXBhcmF0aW9uOiAzMCB9XG4gIGFsaWdubWVudDogdW5kZWZpbmVkLCAvLyByZWxhdGl2ZSBhbGlnbm1lbnQgY29uc3RyYWludHMgb24gbm9kZXMsIGUuZy4gZnVuY3Rpb24oIG5vZGUgKXsgcmV0dXJuIHsgeDogMCwgeTogMSB9IH1cbiAgZ2FwSW5lcXVhbGl0aWVzOiB1bmRlZmluZWQsIC8vIGxpc3Qgb2YgaW5lcXVhbGl0eSBjb25zdHJhaW50cyBmb3IgdGhlIGdhcCBiZXR3ZWVuIHRoZSBub2RlcywgZS5nLiBbe1wiYXhpc1wiOlwieVwiLCBcImxlZnRcIjpub2RlMSwgXCJyaWdodFwiOm5vZGUyLCBcImdhcFwiOjI1fV1cbiAgY2VudGVyR3JhcGg6IHRydWUsIC8vIGFkanVzdHMgdGhlIG5vZGUgcG9zaXRpb25zIGluaXRpYWxseSB0byBjZW50ZXIgdGhlIGdyYXBoIChwYXNzIGZhbHNlIGlmIHlvdSB3YW50IHRvIHN0YXJ0IHRoZSBsYXlvdXQgZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbilcblxuXG4gIC8vIGRpZmZlcmVudCBtZXRob2RzIG9mIHNwZWNpZnlpbmcgZWRnZSBsZW5ndGhcbiAgLy8gZWFjaCBjYW4gYmUgYSBjb25zdGFudCBudW1lcmljYWwgdmFsdWUgb3IgYSBmdW5jdGlvbiBsaWtlIGBmdW5jdGlvbiggZWRnZSApeyByZXR1cm4gMjsgfWBcbiAgZWRnZUxlbmd0aDogdW5kZWZpbmVkLCAvLyBzZXRzIGVkZ2UgbGVuZ3RoIGRpcmVjdGx5IGluIHNpbXVsYXRpb25cbiAgZWRnZVN5bURpZmZMZW5ndGg6IHVuZGVmaW5lZCwgLy8gc3ltbWV0cmljIGRpZmYgZWRnZSBsZW5ndGggaW4gc2ltdWxhdGlvblxuICBlZGdlSmFjY2FyZExlbmd0aDogdW5kZWZpbmVkLCAvLyBqYWNjYXJkIGVkZ2UgbGVuZ3RoIGluIHNpbXVsYXRpb25cblxuICAvLyBpdGVyYXRpb25zIG9mIGNvbGEgYWxnb3JpdGhtOyB1c2VzIGRlZmF1bHQgdmFsdWVzIG9uIHVuZGVmaW5lZFxuICB1bmNvbnN0ckl0ZXI6IHVuZGVmaW5lZCwgLy8gdW5jb25zdHJhaW5lZCBpbml0aWFsIGxheW91dCBpdGVyYXRpb25zXG4gIHVzZXJDb25zdEl0ZXI6IHVuZGVmaW5lZCwgLy8gaW5pdGlhbCBsYXlvdXQgaXRlcmF0aW9ucyB3aXRoIHVzZXItc3BlY2lmaWVkIGNvbnN0cmFpbnRzXG4gIGFsbENvbnN0SXRlcjogdW5kZWZpbmVkLCAvLyBpbml0aWFsIGxheW91dCBpdGVyYXRpb25zIHdpdGggYWxsIGNvbnN0cmFpbnRzIGluY2x1ZGluZyBub24tb3ZlcmxhcFxuXG4gIC8vIGluZmluaXRlIGxheW91dCBvcHRpb25zXG4gIGluZmluaXRlOiBmYWxzZSAvLyBvdmVycmlkZXMgYWxsIG90aGVyIG9wdGlvbnMgZm9yIGEgZm9yY2VzLWFsbC10aGUtdGltZSBtb2RlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIGltcGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vLyByZWdpc3RlcnMgdGhlIGV4dGVuc2lvbiBvbiBhIGN5dG9zY2FwZSBsaWIgcmVmXG52YXIgcmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3RlcihjeXRvc2NhcGUpIHtcbiAgaWYgKCFjeXRvc2NhcGUpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cbiAgY3l0b3NjYXBlKCdsYXlvdXQnLCAnY29sYScsIGltcGwpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbnZhciByYWYgPSB2b2lkIDA7XG5cbmlmICgodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKHdpbmRvdykpICE9PSAoIHRydWUgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZih1bmRlZmluZWQpKSkge1xuICByYWYgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoZm4sIDE2KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIGlmIG5vdCBhdmFpbGFibGUsIGFsbCB5b3UgZ2V0IGlzIGltbWVkaWF0ZSBjYWxsc1xuICByYWYgPSBmdW5jdGlvbiByYWYoY2IpIHtcbiAgICBjYigpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJhZjtcblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV81X187XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImxheW91dEJhc2VcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibGF5b3V0QmFzZVwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDI2KTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gTGF5b3V0Q29uc3RhbnRzKCkge31cblxuLyoqXHJcbiAqIExheW91dCBRdWFsaXR5OiAwOmRyYWZ0LCAxOmRlZmF1bHQsIDI6cHJvb2ZcclxuICovXG5MYXlvdXRDb25zdGFudHMuUVVBTElUWSA9IDE7XG5cbi8qKlxyXG4gKiBEZWZhdWx0IHBhcmFtZXRlcnNcclxuICovXG5MYXlvdXRDb25zdGFudHMuREVGQVVMVF9DUkVBVEVfQkVORFNfQVNfTkVFREVEID0gZmFsc2U7XG5MYXlvdXRDb25zdGFudHMuREVGQVVMVF9JTkNSRU1FTlRBTCA9IGZhbHNlO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX09OX0xBWU9VVCA9IHRydWU7XG5MYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fRFVSSU5HX0xBWU9VVCA9IGZhbHNlO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX1BFUklPRCA9IDUwO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVU5JRk9STV9MRUFGX05PREVfU0laRVMgPSBmYWxzZTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEdlbmVyYWwgb3RoZXIgY29uc3RhbnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLypcclxuICogTWFyZ2lucyBvZiBhIGdyYXBoIHRvIGJlIGFwcGxpZWQgb24gYm91ZGluZyByZWN0YW5nbGUgb2YgaXRzIGNvbnRlbnRzLiBXZVxyXG4gKiBhc3N1bWUgbWFyZ2lucyBvbiBhbGwgZm91ciBzaWRlcyB0byBiZSB1bmlmb3JtLlxyXG4gKi9cbkxheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVBIX01BUkdJTiA9IDE1O1xuXG4vKlxyXG4gKiBXaGV0aGVyIHRvIGNvbnNpZGVyIGxhYmVscyBpbiBub2RlIGRpbWVuc2lvbnMgb3Igbm90XHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLk5PREVfRElNRU5TSU9OU19JTkNMVURFX0xBQkVMUyA9IGZhbHNlO1xuXG4vKlxyXG4gKiBEZWZhdWx0IGRpbWVuc2lvbiBvZiBhIG5vbi1jb21wb3VuZCBub2RlLlxyXG4gKi9cbkxheW91dENvbnN0YW50cy5TSU1QTEVfTk9ERV9TSVpFID0gNDA7XG5cbi8qXHJcbiAqIERlZmF1bHQgZGltZW5zaW9uIG9mIGEgbm9uLWNvbXBvdW5kIG5vZGUuXHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLlNJTVBMRV9OT0RFX0hBTEZfU0laRSA9IExheW91dENvbnN0YW50cy5TSU1QTEVfTk9ERV9TSVpFIC8gMjtcblxuLypcclxuICogRW1wdHkgY29tcG91bmQgbm9kZSBzaXplLiBXaGVuIGEgY29tcG91bmQgbm9kZSBpcyBlbXB0eSwgaXRzIGJvdGhcclxuICogZGltZW5zaW9ucyBzaG91bGQgYmUgb2YgdGhpcyB2YWx1ZS5cclxuICovXG5MYXlvdXRDb25zdGFudHMuRU1QVFlfQ09NUE9VTkRfTk9ERV9TSVpFID0gNDA7XG5cbi8qXHJcbiAqIE1pbmltdW0gbGVuZ3RoIHRoYXQgYW4gZWRnZSBzaG91bGQgdGFrZSBkdXJpbmcgbGF5b3V0XHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLk1JTl9FREdFX0xFTkdUSCA9IDE7XG5cbi8qXHJcbiAqIFdvcmxkIGJvdW5kYXJpZXMgdGhhdCBsYXlvdXQgb3BlcmF0ZXMgb25cclxuICovXG5MYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlkgPSAxMDAwMDAwO1xuXG4vKlxyXG4gKiBXb3JsZCBib3VuZGFyaWVzIHRoYXQgcmFuZG9tIHBvc2l0aW9uaW5nIGNhbiBiZSBwZXJmb3JtZWQgd2l0aFxyXG4gKi9cbkxheW91dENvbnN0YW50cy5JTklUSUFMX1dPUkxEX0JPVU5EQVJZID0gTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZIC8gMTAwMDtcblxuLypcclxuICogQ29vcmRpbmF0ZXMgb2YgdGhlIHdvcmxkIGNlbnRlclxyXG4gKi9cbkxheW91dENvbnN0YW50cy5XT1JMRF9DRU5URVJfWCA9IDEyMDA7XG5MYXlvdXRDb25zdGFudHMuV09STERfQ0VOVEVSX1kgPSA5MDA7XG5cbm1vZHVsZS5leHBvcnRzID0gTGF5b3V0Q29uc3RhbnRzO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgSUdlb21ldHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbnZhciBJTWF0aCA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cbmZ1bmN0aW9uIExFZGdlKHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSkge1xuICBMR3JhcGhPYmplY3QuY2FsbCh0aGlzLCB2RWRnZSk7XG5cbiAgdGhpcy5pc092ZXJsYXBpbmdTb3VyY2VBbmRUYXJnZXQgPSBmYWxzZTtcbiAgdGhpcy52R3JhcGhPYmplY3QgPSB2RWRnZTtcbiAgdGhpcy5iZW5kcG9pbnRzID0gW107XG4gIHRoaXMuc291cmNlID0gc291cmNlO1xuICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbn1cblxuTEVkZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMR3JhcGhPYmplY3QucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcCBpbiBMR3JhcGhPYmplY3QpIHtcbiAgTEVkZ2VbcHJvcF0gPSBMR3JhcGhPYmplY3RbcHJvcF07XG59XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRTb3VyY2UgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnNvdXJjZTtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRUYXJnZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnRhcmdldDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5pc0ludGVyR3JhcGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmlzSW50ZXJHcmFwaDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxlbmd0aDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5pc092ZXJsYXBpbmdTb3VyY2VBbmRUYXJnZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmlzT3ZlcmxhcGluZ1NvdXJjZUFuZFRhcmdldDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRCZW5kcG9pbnRzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5iZW5kcG9pbnRzO1xufTtcblxuTEVkZ2UucHJvdG90eXBlLmdldExjYSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGNhO1xufTtcblxuTEVkZ2UucHJvdG90eXBlLmdldFNvdXJjZUluTGNhID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5zb3VyY2VJbkxjYTtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRUYXJnZXRJbkxjYSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMudGFyZ2V0SW5MY2E7XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuZ2V0T3RoZXJFbmQgPSBmdW5jdGlvbiAobm9kZSkge1xuICBpZiAodGhpcy5zb3VyY2UgPT09IG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy50YXJnZXQ7XG4gIH0gZWxzZSBpZiAodGhpcy50YXJnZXQgPT09IG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2U7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgXCJOb2RlIGlzIG5vdCBpbmNpZGVudCB3aXRoIHRoaXMgZWRnZVwiO1xuICB9XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuZ2V0T3RoZXJFbmRJbkdyYXBoID0gZnVuY3Rpb24gKG5vZGUsIGdyYXBoKSB7XG4gIHZhciBvdGhlckVuZCA9IHRoaXMuZ2V0T3RoZXJFbmQobm9kZSk7XG4gIHZhciByb290ID0gZ3JhcGguZ2V0R3JhcGhNYW5hZ2VyKCkuZ2V0Um9vdCgpO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKG90aGVyRW5kLmdldE93bmVyKCkgPT0gZ3JhcGgpIHtcbiAgICAgIHJldHVybiBvdGhlckVuZDtcbiAgICB9XG5cbiAgICBpZiAob3RoZXJFbmQuZ2V0T3duZXIoKSA9PSByb290KSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBvdGhlckVuZCA9IG90aGVyRW5kLmdldE93bmVyKCkuZ2V0UGFyZW50KCk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS51cGRhdGVMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBjbGlwUG9pbnRDb29yZGluYXRlcyA9IG5ldyBBcnJheSg0KTtcblxuICB0aGlzLmlzT3ZlcmxhcGluZ1NvdXJjZUFuZFRhcmdldCA9IElHZW9tZXRyeS5nZXRJbnRlcnNlY3Rpb24odGhpcy50YXJnZXQuZ2V0UmVjdCgpLCB0aGlzLnNvdXJjZS5nZXRSZWN0KCksIGNsaXBQb2ludENvb3JkaW5hdGVzKTtcblxuICBpZiAoIXRoaXMuaXNPdmVybGFwaW5nU291cmNlQW5kVGFyZ2V0KSB7XG4gICAgdGhpcy5sZW5ndGhYID0gY2xpcFBvaW50Q29vcmRpbmF0ZXNbMF0gLSBjbGlwUG9pbnRDb29yZGluYXRlc1syXTtcbiAgICB0aGlzLmxlbmd0aFkgPSBjbGlwUG9pbnRDb29yZGluYXRlc1sxXSAtIGNsaXBQb2ludENvb3JkaW5hdGVzWzNdO1xuXG4gICAgaWYgKE1hdGguYWJzKHRoaXMubGVuZ3RoWCkgPCAxLjApIHtcbiAgICAgIHRoaXMubGVuZ3RoWCA9IElNYXRoLnNpZ24odGhpcy5sZW5ndGhYKTtcbiAgICB9XG5cbiAgICBpZiAoTWF0aC5hYnModGhpcy5sZW5ndGhZKSA8IDEuMCkge1xuICAgICAgdGhpcy5sZW5ndGhZID0gSU1hdGguc2lnbih0aGlzLmxlbmd0aFkpO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5zcXJ0KHRoaXMubGVuZ3RoWCAqIHRoaXMubGVuZ3RoWCArIHRoaXMubGVuZ3RoWSAqIHRoaXMubGVuZ3RoWSk7XG4gIH1cbn07XG5cbkxFZGdlLnByb3RvdHlwZS51cGRhdGVMZW5ndGhTaW1wbGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubGVuZ3RoWCA9IHRoaXMudGFyZ2V0LmdldENlbnRlclgoKSAtIHRoaXMuc291cmNlLmdldENlbnRlclgoKTtcbiAgdGhpcy5sZW5ndGhZID0gdGhpcy50YXJnZXQuZ2V0Q2VudGVyWSgpIC0gdGhpcy5zb3VyY2UuZ2V0Q2VudGVyWSgpO1xuXG4gIGlmIChNYXRoLmFicyh0aGlzLmxlbmd0aFgpIDwgMS4wKSB7XG4gICAgdGhpcy5sZW5ndGhYID0gSU1hdGguc2lnbih0aGlzLmxlbmd0aFgpO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKHRoaXMubGVuZ3RoWSkgPCAxLjApIHtcbiAgICB0aGlzLmxlbmd0aFkgPSBJTWF0aC5zaWduKHRoaXMubGVuZ3RoWSk7XG4gIH1cblxuICB0aGlzLmxlbmd0aCA9IE1hdGguc3FydCh0aGlzLmxlbmd0aFggKiB0aGlzLmxlbmd0aFggKyB0aGlzLmxlbmd0aFkgKiB0aGlzLmxlbmd0aFkpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBMRWRnZTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIExHcmFwaE9iamVjdCh2R3JhcGhPYmplY3QpIHtcbiAgdGhpcy52R3JhcGhPYmplY3QgPSB2R3JhcGhPYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTEdyYXBoT2JqZWN0O1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xudmFyIFJlY3RhbmdsZUQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIFJhbmRvbVNlZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcbnZhciBQb2ludEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXG5mdW5jdGlvbiBMTm9kZShnbSwgbG9jLCBzaXplLCB2Tm9kZSkge1xuICAvL0FsdGVybmF0aXZlIGNvbnN0cnVjdG9yIDEgOiBMTm9kZShMR3JhcGhNYW5hZ2VyIGdtLCBQb2ludCBsb2MsIERpbWVuc2lvbiBzaXplLCBPYmplY3Qgdk5vZGUpXG4gIGlmIChzaXplID09IG51bGwgJiYgdk5vZGUgPT0gbnVsbCkge1xuICAgIHZOb2RlID0gbG9jO1xuICB9XG5cbiAgTEdyYXBoT2JqZWN0LmNhbGwodGhpcywgdk5vZGUpO1xuXG4gIC8vQWx0ZXJuYXRpdmUgY29uc3RydWN0b3IgMiA6IExOb2RlKExheW91dCBsYXlvdXQsIE9iamVjdCB2Tm9kZSlcbiAgaWYgKGdtLmdyYXBoTWFuYWdlciAhPSBudWxsKSBnbSA9IGdtLmdyYXBoTWFuYWdlcjtcblxuICB0aGlzLmVzdGltYXRlZFNpemUgPSBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgdGhpcy5pbmNsdXNpb25UcmVlRGVwdGggPSBJbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdGhpcy52R3JhcGhPYmplY3QgPSB2Tm9kZTtcbiAgdGhpcy5lZGdlcyA9IFtdO1xuICB0aGlzLmdyYXBoTWFuYWdlciA9IGdtO1xuXG4gIGlmIChzaXplICE9IG51bGwgJiYgbG9jICE9IG51bGwpIHRoaXMucmVjdCA9IG5ldyBSZWN0YW5nbGVEKGxvYy54LCBsb2MueSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO2Vsc2UgdGhpcy5yZWN0ID0gbmV3IFJlY3RhbmdsZUQoKTtcbn1cblxuTE5vZGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMR3JhcGhPYmplY3QucHJvdG90eXBlKTtcbmZvciAodmFyIHByb3AgaW4gTEdyYXBoT2JqZWN0KSB7XG4gIExOb2RlW3Byb3BdID0gTEdyYXBoT2JqZWN0W3Byb3BdO1xufVxuXG5MTm9kZS5wcm90b3R5cGUuZ2V0RWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmVkZ2VzO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldENoaWxkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5jaGlsZDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRPd25lciA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gIGlmICh0aGlzLm93bmVyICE9IG51bGwpIHtcbiAgLy8gICAgaWYgKCEodGhpcy5vd25lciA9PSBudWxsIHx8IHRoaXMub3duZXIuZ2V0Tm9kZXMoKS5pbmRleE9mKHRoaXMpID4gLTEpKSB7XG4gIC8vICAgICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIC8vICAgIH1cbiAgLy8gIH1cblxuICByZXR1cm4gdGhpcy5vd25lcjtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdC53aWR0aDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5zZXRXaWR0aCA9IGZ1bmN0aW9uICh3aWR0aCkge1xuICB0aGlzLnJlY3Qud2lkdGggPSB3aWR0aDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJlY3QuaGVpZ2h0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uIChoZWlnaHQpIHtcbiAgdGhpcy5yZWN0LmhlaWdodCA9IGhlaWdodDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRDZW50ZXJYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LnggKyB0aGlzLnJlY3Qud2lkdGggLyAyO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldENlbnRlclkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJlY3QueSArIHRoaXMucmVjdC5oZWlnaHQgLyAyO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldENlbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludEQodGhpcy5yZWN0LnggKyB0aGlzLnJlY3Qud2lkdGggLyAyLCB0aGlzLnJlY3QueSArIHRoaXMucmVjdC5oZWlnaHQgLyAyKTtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRMb2NhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludEQodGhpcy5yZWN0LngsIHRoaXMucmVjdC55KTtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRSZWN0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldERpYWdvbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gTWF0aC5zcXJ0KHRoaXMucmVjdC53aWR0aCAqIHRoaXMucmVjdC53aWR0aCArIHRoaXMucmVjdC5oZWlnaHQgKiB0aGlzLnJlY3QuaGVpZ2h0KTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBoYWxmIHRoZSBkaWFnb25hbCBsZW5ndGggb2YgdGhpcyBub2RlLlxuICovXG5MTm9kZS5wcm90b3R5cGUuZ2V0SGFsZlRoZURpYWdvbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gTWF0aC5zcXJ0KHRoaXMucmVjdC5oZWlnaHQgKiB0aGlzLnJlY3QuaGVpZ2h0ICsgdGhpcy5yZWN0LndpZHRoICogdGhpcy5yZWN0LndpZHRoKSAvIDI7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuc2V0UmVjdCA9IGZ1bmN0aW9uICh1cHBlckxlZnQsIGRpbWVuc2lvbikge1xuICB0aGlzLnJlY3QueCA9IHVwcGVyTGVmdC54O1xuICB0aGlzLnJlY3QueSA9IHVwcGVyTGVmdC55O1xuICB0aGlzLnJlY3Qud2lkdGggPSBkaW1lbnNpb24ud2lkdGg7XG4gIHRoaXMucmVjdC5oZWlnaHQgPSBkaW1lbnNpb24uaGVpZ2h0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLnNldENlbnRlciA9IGZ1bmN0aW9uIChjeCwgY3kpIHtcbiAgdGhpcy5yZWN0LnggPSBjeCAtIHRoaXMucmVjdC53aWR0aCAvIDI7XG4gIHRoaXMucmVjdC55ID0gY3kgLSB0aGlzLnJlY3QuaGVpZ2h0IC8gMjtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5zZXRMb2NhdGlvbiA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gIHRoaXMucmVjdC54ID0geDtcbiAgdGhpcy5yZWN0LnkgPSB5O1xufTtcblxuTE5vZGUucHJvdG90eXBlLm1vdmVCeSA9IGZ1bmN0aW9uIChkeCwgZHkpIHtcbiAgdGhpcy5yZWN0LnggKz0gZHg7XG4gIHRoaXMucmVjdC55ICs9IGR5O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEVkZ2VMaXN0VG9Ob2RlID0gZnVuY3Rpb24gKHRvKSB7XG4gIHZhciBlZGdlTGlzdCA9IFtdO1xuICB2YXIgZWRnZTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHNlbGYuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuXG4gICAgaWYgKGVkZ2UudGFyZ2V0ID09IHRvKSB7XG4gICAgICBpZiAoZWRnZS5zb3VyY2UgIT0gc2VsZikgdGhyb3cgXCJJbmNvcnJlY3QgZWRnZSBzb3VyY2UhXCI7XG5cbiAgICAgIGVkZ2VMaXN0LnB1c2goZWRnZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWRnZUxpc3Q7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0RWRnZXNCZXR3ZWVuID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gIHZhciBlZGdlTGlzdCA9IFtdO1xuICB2YXIgZWRnZTtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHNlbGYuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuXG4gICAgaWYgKCEoZWRnZS5zb3VyY2UgPT0gc2VsZiB8fCBlZGdlLnRhcmdldCA9PSBzZWxmKSkgdGhyb3cgXCJJbmNvcnJlY3QgZWRnZSBzb3VyY2UgYW5kL29yIHRhcmdldFwiO1xuXG4gICAgaWYgKGVkZ2UudGFyZ2V0ID09IG90aGVyIHx8IGVkZ2Uuc291cmNlID09IG90aGVyKSB7XG4gICAgICBlZGdlTGlzdC5wdXNoKGVkZ2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVkZ2VMaXN0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldE5laWdoYm9yc0xpc3QgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBuZWlnaGJvcnMgPSBuZXcgU2V0KCk7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzZWxmLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcblxuICAgIGlmIChlZGdlLnNvdXJjZSA9PSBzZWxmKSB7XG4gICAgICBuZWlnaGJvcnMuYWRkKGVkZ2UudGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGVkZ2UudGFyZ2V0ICE9IHNlbGYpIHtcbiAgICAgICAgdGhyb3cgXCJJbmNvcnJlY3QgaW5jaWRlbmN5IVwiO1xuICAgICAgfVxuXG4gICAgICBuZWlnaGJvcnMuYWRkKGVkZ2Uuc291cmNlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBuZWlnaGJvcnM7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUud2l0aENoaWxkcmVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgd2l0aE5laWdoYm9yc0xpc3QgPSBuZXcgU2V0KCk7XG4gIHZhciBjaGlsZE5vZGU7XG4gIHZhciBjaGlsZHJlbjtcblxuICB3aXRoTmVpZ2hib3JzTGlzdC5hZGQodGhpcyk7XG5cbiAgaWYgKHRoaXMuY2hpbGQgIT0gbnVsbCkge1xuICAgIHZhciBub2RlcyA9IHRoaXMuY2hpbGQuZ2V0Tm9kZXMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZE5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIGNoaWxkcmVuID0gY2hpbGROb2RlLndpdGhDaGlsZHJlbigpO1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB3aXRoTmVpZ2hib3JzTGlzdC5hZGQobm9kZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gd2l0aE5laWdoYm9yc0xpc3Q7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0Tm9PZkNoaWxkcmVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbm9PZkNoaWxkcmVuID0gMDtcbiAgdmFyIGNoaWxkTm9kZTtcblxuICBpZiAodGhpcy5jaGlsZCA9PSBudWxsKSB7XG4gICAgbm9PZkNoaWxkcmVuID0gMTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLmNoaWxkLmdldE5vZGVzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGROb2RlID0gbm9kZXNbaV07XG5cbiAgICAgIG5vT2ZDaGlsZHJlbiArPSBjaGlsZE5vZGUuZ2V0Tm9PZkNoaWxkcmVuKCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG5vT2ZDaGlsZHJlbiA9PSAwKSB7XG4gICAgbm9PZkNoaWxkcmVuID0gMTtcbiAgfVxuICByZXR1cm4gbm9PZkNoaWxkcmVuO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEVzdGltYXRlZFNpemUgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmVzdGltYXRlZFNpemUgPT0gSW50ZWdlci5NSU5fVkFMVUUpIHtcbiAgICB0aHJvdyBcImFzc2VydCBmYWlsZWRcIjtcbiAgfVxuICByZXR1cm4gdGhpcy5lc3RpbWF0ZWRTaXplO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmNhbGNFc3RpbWF0ZWRTaXplID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jaGlsZCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZXN0aW1hdGVkU2l6ZSA9ICh0aGlzLnJlY3Qud2lkdGggKyB0aGlzLnJlY3QuaGVpZ2h0KSAvIDI7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5lc3RpbWF0ZWRTaXplID0gdGhpcy5jaGlsZC5jYWxjRXN0aW1hdGVkU2l6ZSgpO1xuICAgIHRoaXMucmVjdC53aWR0aCA9IHRoaXMuZXN0aW1hdGVkU2l6ZTtcbiAgICB0aGlzLnJlY3QuaGVpZ2h0ID0gdGhpcy5lc3RpbWF0ZWRTaXplO1xuXG4gICAgcmV0dXJuIHRoaXMuZXN0aW1hdGVkU2l6ZTtcbiAgfVxufTtcblxuTE5vZGUucHJvdG90eXBlLnNjYXR0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciByYW5kb21DZW50ZXJYO1xuICB2YXIgcmFuZG9tQ2VudGVyWTtcblxuICB2YXIgbWluWCA9IC1MYXlvdXRDb25zdGFudHMuSU5JVElBTF9XT1JMRF9CT1VOREFSWTtcbiAgdmFyIG1heFggPSBMYXlvdXRDb25zdGFudHMuSU5JVElBTF9XT1JMRF9CT1VOREFSWTtcbiAgcmFuZG9tQ2VudGVyWCA9IExheW91dENvbnN0YW50cy5XT1JMRF9DRU5URVJfWCArIFJhbmRvbVNlZWQubmV4dERvdWJsZSgpICogKG1heFggLSBtaW5YKSArIG1pblg7XG5cbiAgdmFyIG1pblkgPSAtTGF5b3V0Q29uc3RhbnRzLklOSVRJQUxfV09STERfQk9VTkRBUlk7XG4gIHZhciBtYXhZID0gTGF5b3V0Q29uc3RhbnRzLklOSVRJQUxfV09STERfQk9VTkRBUlk7XG4gIHJhbmRvbUNlbnRlclkgPSBMYXlvdXRDb25zdGFudHMuV09STERfQ0VOVEVSX1kgKyBSYW5kb21TZWVkLm5leHREb3VibGUoKSAqIChtYXhZIC0gbWluWSkgKyBtaW5ZO1xuXG4gIHRoaXMucmVjdC54ID0gcmFuZG9tQ2VudGVyWDtcbiAgdGhpcy5yZWN0LnkgPSByYW5kb21DZW50ZXJZO1xufTtcblxuTE5vZGUucHJvdG90eXBlLnVwZGF0ZUJvdW5kcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuZ2V0Q2hpbGQoKSA9PSBudWxsKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cbiAgaWYgKHRoaXMuZ2V0Q2hpbGQoKS5nZXROb2RlcygpLmxlbmd0aCAhPSAwKSB7XG4gICAgLy8gd3JhcCB0aGUgY2hpbGRyZW4gbm9kZXMgYnkgcmUtYXJyYW5naW5nIHRoZSBib3VuZGFyaWVzXG4gICAgdmFyIGNoaWxkR3JhcGggPSB0aGlzLmdldENoaWxkKCk7XG4gICAgY2hpbGRHcmFwaC51cGRhdGVCb3VuZHModHJ1ZSk7XG5cbiAgICB0aGlzLnJlY3QueCA9IGNoaWxkR3JhcGguZ2V0TGVmdCgpO1xuICAgIHRoaXMucmVjdC55ID0gY2hpbGRHcmFwaC5nZXRUb3AoKTtcblxuICAgIHRoaXMuc2V0V2lkdGgoY2hpbGRHcmFwaC5nZXRSaWdodCgpIC0gY2hpbGRHcmFwaC5nZXRMZWZ0KCkpO1xuICAgIHRoaXMuc2V0SGVpZ2h0KGNoaWxkR3JhcGguZ2V0Qm90dG9tKCkgLSBjaGlsZEdyYXBoLmdldFRvcCgpKTtcblxuICAgIC8vIFVwZGF0ZSBjb21wb3VuZCBib3VuZHMgY29uc2lkZXJpbmcgaXRzIGxhYmVsIHByb3BlcnRpZXMgICAgXG4gICAgaWYgKExheW91dENvbnN0YW50cy5OT0RFX0RJTUVOU0lPTlNfSU5DTFVERV9MQUJFTFMpIHtcblxuICAgICAgdmFyIHdpZHRoID0gY2hpbGRHcmFwaC5nZXRSaWdodCgpIC0gY2hpbGRHcmFwaC5nZXRMZWZ0KCk7XG4gICAgICB2YXIgaGVpZ2h0ID0gY2hpbGRHcmFwaC5nZXRCb3R0b20oKSAtIGNoaWxkR3JhcGguZ2V0VG9wKCk7XG5cbiAgICAgIGlmICh0aGlzLmxhYmVsV2lkdGggPiB3aWR0aCkge1xuICAgICAgICB0aGlzLnJlY3QueCAtPSAodGhpcy5sYWJlbFdpZHRoIC0gd2lkdGgpIC8gMjtcbiAgICAgICAgdGhpcy5zZXRXaWR0aCh0aGlzLmxhYmVsV2lkdGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5sYWJlbEhlaWdodCA+IGhlaWdodCkge1xuICAgICAgICBpZiAodGhpcy5sYWJlbFBvcyA9PSBcImNlbnRlclwiKSB7XG4gICAgICAgICAgdGhpcy5yZWN0LnkgLT0gKHRoaXMubGFiZWxIZWlnaHQgLSBoZWlnaHQpIC8gMjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxhYmVsUG9zID09IFwidG9wXCIpIHtcbiAgICAgICAgICB0aGlzLnJlY3QueSAtPSB0aGlzLmxhYmVsSGVpZ2h0IC0gaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0SGVpZ2h0KHRoaXMubGFiZWxIZWlnaHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEluY2x1c2lvblRyZWVEZXB0aCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaW5jbHVzaW9uVHJlZURlcHRoID09IEludGVnZXIuTUFYX1ZBTFVFKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cbiAgcmV0dXJuIHRoaXMuaW5jbHVzaW9uVHJlZURlcHRoO1xufTtcblxuTE5vZGUucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uICh0cmFucykge1xuICB2YXIgbGVmdCA9IHRoaXMucmVjdC54O1xuXG4gIGlmIChsZWZ0ID4gTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZKSB7XG4gICAgbGVmdCA9IExheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWTtcbiAgfSBlbHNlIGlmIChsZWZ0IDwgLUxheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWSkge1xuICAgIGxlZnQgPSAtTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZO1xuICB9XG5cbiAgdmFyIHRvcCA9IHRoaXMucmVjdC55O1xuXG4gIGlmICh0b3AgPiBMYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlkpIHtcbiAgICB0b3AgPSBMYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlk7XG4gIH0gZWxzZSBpZiAodG9wIDwgLUxheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWSkge1xuICAgIHRvcCA9IC1MYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlk7XG4gIH1cblxuICB2YXIgbGVmdFRvcCA9IG5ldyBQb2ludEQobGVmdCwgdG9wKTtcbiAgdmFyIHZMZWZ0VG9wID0gdHJhbnMuaW52ZXJzZVRyYW5zZm9ybVBvaW50KGxlZnRUb3ApO1xuXG4gIHRoaXMuc2V0TG9jYXRpb24odkxlZnRUb3AueCwgdkxlZnRUb3AueSk7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0TGVmdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdC54O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldFJpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LnggKyB0aGlzLnJlY3Qud2lkdGg7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0VG9wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0Lnk7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0Qm90dG9tID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LnkgKyB0aGlzLnJlY3QuaGVpZ2h0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMub3duZXIgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMub3duZXIuZ2V0UGFyZW50KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExOb2RlO1xuXG4vKioqLyB9KSxcbi8qIDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gUG9pbnREKHgsIHkpIHtcbiAgaWYgKHggPT0gbnVsbCAmJiB5ID09IG51bGwpIHtcbiAgICB0aGlzLnggPSAwO1xuICAgIHRoaXMueSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG59XG5cblBvaW50RC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueDtcbn07XG5cblBvaW50RC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueTtcbn07XG5cblBvaW50RC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gIHRoaXMueCA9IHg7XG59O1xuXG5Qb2ludEQucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICB0aGlzLnkgPSB5O1xufTtcblxuUG9pbnRELnByb3RvdHlwZS5nZXREaWZmZXJlbmNlID0gZnVuY3Rpb24gKHB0KSB7XG4gIHJldHVybiBuZXcgRGltZW5zaW9uRCh0aGlzLnggLSBwdC54LCB0aGlzLnkgLSBwdC55KTtcbn07XG5cblBvaW50RC5wcm90b3R5cGUuZ2V0Q29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludEQodGhpcy54LCB0aGlzLnkpO1xufTtcblxuUG9pbnRELnByb3RvdHlwZS50cmFuc2xhdGUgPSBmdW5jdGlvbiAoZGltKSB7XG4gIHRoaXMueCArPSBkaW0ud2lkdGg7XG4gIHRoaXMueSArPSBkaW0uaGVpZ2h0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUG9pbnREO1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xudmFyIExheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgTEdyYXBoTWFuYWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG52YXIgTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xudmFyIExFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbnZhciBSZWN0YW5nbGVEID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG52YXIgUG9pbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbnZhciBMaW5rZWRMaXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbmZ1bmN0aW9uIExHcmFwaChwYXJlbnQsIG9iajIsIHZHcmFwaCkge1xuICBMR3JhcGhPYmplY3QuY2FsbCh0aGlzLCB2R3JhcGgpO1xuICB0aGlzLmVzdGltYXRlZFNpemUgPSBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgdGhpcy5tYXJnaW4gPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9HUkFQSF9NQVJHSU47XG4gIHRoaXMuZWRnZXMgPSBbXTtcbiAgdGhpcy5ub2RlcyA9IFtdO1xuICB0aGlzLmlzQ29ubmVjdGVkID0gZmFsc2U7XG4gIHRoaXMucGFyZW50ID0gcGFyZW50O1xuXG4gIGlmIChvYmoyICE9IG51bGwgJiYgb2JqMiBpbnN0YW5jZW9mIExHcmFwaE1hbmFnZXIpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlciA9IG9iajI7XG4gIH0gZWxzZSBpZiAob2JqMiAhPSBudWxsICYmIG9iajIgaW5zdGFuY2VvZiBMYXlvdXQpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlciA9IG9iajIuZ3JhcGhNYW5hZ2VyO1xuICB9XG59XG5cbkxHcmFwaC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExHcmFwaE9iamVjdC5wcm90b3R5cGUpO1xuZm9yICh2YXIgcHJvcCBpbiBMR3JhcGhPYmplY3QpIHtcbiAgTEdyYXBoW3Byb3BdID0gTEdyYXBoT2JqZWN0W3Byb3BdO1xufVxuXG5MR3JhcGgucHJvdG90eXBlLmdldE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ub2Rlcztcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0RWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmVkZ2VzO1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRHcmFwaE1hbmFnZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdyYXBoTWFuYWdlcjtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0UGFyZW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5wYXJlbnQ7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldExlZnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxlZnQ7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldFJpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yaWdodDtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0VG9wID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy50b3A7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldEJvdHRvbSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuYm90dG9tO1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5pc0Nvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuaXNDb25uZWN0ZWQ7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChvYmoxLCBzb3VyY2VOb2RlLCB0YXJnZXROb2RlKSB7XG4gIGlmIChzb3VyY2VOb2RlID09IG51bGwgJiYgdGFyZ2V0Tm9kZSA9PSBudWxsKSB7XG4gICAgdmFyIG5ld05vZGUgPSBvYmoxO1xuICAgIGlmICh0aGlzLmdyYXBoTWFuYWdlciA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkdyYXBoIGhhcyBubyBncmFwaCBtZ3IhXCI7XG4gICAgfVxuICAgIGlmICh0aGlzLmdldE5vZGVzKCkuaW5kZXhPZihuZXdOb2RlKSA+IC0xKSB7XG4gICAgICB0aHJvdyBcIk5vZGUgYWxyZWFkeSBpbiBncmFwaCFcIjtcbiAgICB9XG4gICAgbmV3Tm9kZS5vd25lciA9IHRoaXM7XG4gICAgdGhpcy5nZXROb2RlcygpLnB1c2gobmV3Tm9kZSk7XG5cbiAgICByZXR1cm4gbmV3Tm9kZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbmV3RWRnZSA9IG9iajE7XG4gICAgaWYgKCEodGhpcy5nZXROb2RlcygpLmluZGV4T2Yoc291cmNlTm9kZSkgPiAtMSAmJiB0aGlzLmdldE5vZGVzKCkuaW5kZXhPZih0YXJnZXROb2RlKSA+IC0xKSkge1xuICAgICAgdGhyb3cgXCJTb3VyY2Ugb3IgdGFyZ2V0IG5vdCBpbiBncmFwaCFcIjtcbiAgICB9XG5cbiAgICBpZiAoIShzb3VyY2VOb2RlLm93bmVyID09IHRhcmdldE5vZGUub3duZXIgJiYgc291cmNlTm9kZS5vd25lciA9PSB0aGlzKSkge1xuICAgICAgdGhyb3cgXCJCb3RoIG93bmVycyBtdXN0IGJlIHRoaXMgZ3JhcGghXCI7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZU5vZGUub3duZXIgIT0gdGFyZ2V0Tm9kZS5vd25lcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gc2V0IHNvdXJjZSBhbmQgdGFyZ2V0XG4gICAgbmV3RWRnZS5zb3VyY2UgPSBzb3VyY2VOb2RlO1xuICAgIG5ld0VkZ2UudGFyZ2V0ID0gdGFyZ2V0Tm9kZTtcblxuICAgIC8vIHNldCBhcyBpbnRyYS1ncmFwaCBlZGdlXG4gICAgbmV3RWRnZS5pc0ludGVyR3JhcGggPSBmYWxzZTtcblxuICAgIC8vIGFkZCB0byBncmFwaCBlZGdlIGxpc3RcbiAgICB0aGlzLmdldEVkZ2VzKCkucHVzaChuZXdFZGdlKTtcblxuICAgIC8vIGFkZCB0byBpbmNpZGVuY3kgbGlzdHNcbiAgICBzb3VyY2VOb2RlLmVkZ2VzLnB1c2gobmV3RWRnZSk7XG5cbiAgICBpZiAodGFyZ2V0Tm9kZSAhPSBzb3VyY2VOb2RlKSB7XG4gICAgICB0YXJnZXROb2RlLmVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0VkZ2U7XG4gIH1cbn07XG5cbkxHcmFwaC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgbm9kZSA9IG9iajtcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIExOb2RlKSB7XG4gICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgXCJOb2RlIGlzIG51bGwhXCI7XG4gICAgfVxuICAgIGlmICghKG5vZGUub3duZXIgIT0gbnVsbCAmJiBub2RlLm93bmVyID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIk93bmVyIGdyYXBoIGlzIGludmFsaWQhXCI7XG4gICAgfVxuICAgIGlmICh0aGlzLmdyYXBoTWFuYWdlciA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBcIk93bmVyIGdyYXBoIG1hbmFnZXIgaXMgaW52YWxpZCFcIjtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIGluY2lkZW50IGVkZ2VzIGZpcnN0IChtYWtlIGEgY29weSB0byBkbyBpdCBzYWZlbHkpXG4gICAgdmFyIGVkZ2VzVG9CZVJlbW92ZWQgPSBub2RlLmVkZ2VzLnNsaWNlKCk7XG4gICAgdmFyIGVkZ2U7XG4gICAgdmFyIHMgPSBlZGdlc1RvQmVSZW1vdmVkLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgZWRnZSA9IGVkZ2VzVG9CZVJlbW92ZWRbaV07XG5cbiAgICAgIGlmIChlZGdlLmlzSW50ZXJHcmFwaCkge1xuICAgICAgICB0aGlzLmdyYXBoTWFuYWdlci5yZW1vdmUoZWRnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlLnNvdXJjZS5vd25lci5yZW1vdmUoZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbm93IHRoZSBub2RlIGl0c2VsZlxuICAgIHZhciBpbmRleCA9IHRoaXMubm9kZXMuaW5kZXhPZihub2RlKTtcbiAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgIHRocm93IFwiTm9kZSBub3QgaW4gb3duZXIgbm9kZSBsaXN0IVwiO1xuICAgIH1cblxuICAgIHRoaXMubm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBMRWRnZSkge1xuICAgIHZhciBlZGdlID0gb2JqO1xuICAgIGlmIChlZGdlID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiRWRnZSBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoIShlZGdlLnNvdXJjZSAhPSBudWxsICYmIGVkZ2UudGFyZ2V0ICE9IG51bGwpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IGlzIG51bGwhXCI7XG4gICAgfVxuICAgIGlmICghKGVkZ2Uuc291cmNlLm93bmVyICE9IG51bGwgJiYgZWRnZS50YXJnZXQub3duZXIgIT0gbnVsbCAmJiBlZGdlLnNvdXJjZS5vd25lciA9PSB0aGlzICYmIGVkZ2UudGFyZ2V0Lm93bmVyID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IG93bmVyIGlzIGludmFsaWQhXCI7XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZUluZGV4ID0gZWRnZS5zb3VyY2UuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICB2YXIgdGFyZ2V0SW5kZXggPSBlZGdlLnRhcmdldC5lZGdlcy5pbmRleE9mKGVkZ2UpO1xuICAgIGlmICghKHNvdXJjZUluZGV4ID4gLTEgJiYgdGFyZ2V0SW5kZXggPiAtMSkpIHtcbiAgICAgIHRocm93IFwiU291cmNlIGFuZC9vciB0YXJnZXQgZG9lc24ndCBrbm93IHRoaXMgZWRnZSFcIjtcbiAgICB9XG5cbiAgICBlZGdlLnNvdXJjZS5lZGdlcy5zcGxpY2Uoc291cmNlSW5kZXgsIDEpO1xuXG4gICAgaWYgKGVkZ2UudGFyZ2V0ICE9IGVkZ2Uuc291cmNlKSB7XG4gICAgICBlZGdlLnRhcmdldC5lZGdlcy5zcGxpY2UodGFyZ2V0SW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IGVkZ2Uuc291cmNlLm93bmVyLmdldEVkZ2VzKCkuaW5kZXhPZihlZGdlKTtcbiAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgIHRocm93IFwiTm90IGluIG93bmVyJ3MgZWRnZSBsaXN0IVwiO1xuICAgIH1cblxuICAgIGVkZ2Uuc291cmNlLm93bmVyLmdldEVkZ2VzKCkuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxufTtcblxuTEdyYXBoLnByb3RvdHlwZS51cGRhdGVMZWZ0VG9wID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdG9wID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciBsZWZ0ID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciBub2RlVG9wO1xuICB2YXIgbm9kZUxlZnQ7XG4gIHZhciBtYXJnaW47XG5cbiAgdmFyIG5vZGVzID0gdGhpcy5nZXROb2RlcygpO1xuICB2YXIgcyA9IG5vZGVzLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIHZhciBsTm9kZSA9IG5vZGVzW2ldO1xuICAgIG5vZGVUb3AgPSBsTm9kZS5nZXRUb3AoKTtcbiAgICBub2RlTGVmdCA9IGxOb2RlLmdldExlZnQoKTtcblxuICAgIGlmICh0b3AgPiBub2RlVG9wKSB7XG4gICAgICB0b3AgPSBub2RlVG9wO1xuICAgIH1cblxuICAgIGlmIChsZWZ0ID4gbm9kZUxlZnQpIHtcbiAgICAgIGxlZnQgPSBub2RlTGVmdDtcbiAgICB9XG4gIH1cblxuICAvLyBEbyB3ZSBoYXZlIGFueSBub2RlcyBpbiB0aGlzIGdyYXBoP1xuICBpZiAodG9wID09IEludGVnZXIuTUFYX1ZBTFVFKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAobm9kZXNbMF0uZ2V0UGFyZW50KCkucGFkZGluZ0xlZnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgbWFyZ2luID0gbm9kZXNbMF0uZ2V0UGFyZW50KCkucGFkZGluZ0xlZnQ7XG4gIH0gZWxzZSB7XG4gICAgbWFyZ2luID0gdGhpcy5tYXJnaW47XG4gIH1cblxuICB0aGlzLmxlZnQgPSBsZWZ0IC0gbWFyZ2luO1xuICB0aGlzLnRvcCA9IHRvcCAtIG1hcmdpbjtcblxuICAvLyBBcHBseSB0aGUgbWFyZ2lucyBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLmxlZnQsIHRoaXMudG9wKTtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUudXBkYXRlQm91bmRzID0gZnVuY3Rpb24gKHJlY3Vyc2l2ZSkge1xuICAvLyBjYWxjdWxhdGUgYm91bmRzXG4gIHZhciBsZWZ0ID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciByaWdodCA9IC1JbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIHRvcCA9IEludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgYm90dG9tID0gLUludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgbm9kZUxlZnQ7XG4gIHZhciBub2RlUmlnaHQ7XG4gIHZhciBub2RlVG9wO1xuICB2YXIgbm9kZUJvdHRvbTtcbiAgdmFyIG1hcmdpbjtcblxuICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzO1xuICB2YXIgcyA9IG5vZGVzLmxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICB2YXIgbE5vZGUgPSBub2Rlc1tpXTtcblxuICAgIGlmIChyZWN1cnNpdmUgJiYgbE5vZGUuY2hpbGQgIT0gbnVsbCkge1xuICAgICAgbE5vZGUudXBkYXRlQm91bmRzKCk7XG4gICAgfVxuICAgIG5vZGVMZWZ0ID0gbE5vZGUuZ2V0TGVmdCgpO1xuICAgIG5vZGVSaWdodCA9IGxOb2RlLmdldFJpZ2h0KCk7XG4gICAgbm9kZVRvcCA9IGxOb2RlLmdldFRvcCgpO1xuICAgIG5vZGVCb3R0b20gPSBsTm9kZS5nZXRCb3R0b20oKTtcblxuICAgIGlmIChsZWZ0ID4gbm9kZUxlZnQpIHtcbiAgICAgIGxlZnQgPSBub2RlTGVmdDtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQgPCBub2RlUmlnaHQpIHtcbiAgICAgIHJpZ2h0ID0gbm9kZVJpZ2h0O1xuICAgIH1cblxuICAgIGlmICh0b3AgPiBub2RlVG9wKSB7XG4gICAgICB0b3AgPSBub2RlVG9wO1xuICAgIH1cblxuICAgIGlmIChib3R0b20gPCBub2RlQm90dG9tKSB7XG4gICAgICBib3R0b20gPSBub2RlQm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIHZhciBib3VuZGluZ1JlY3QgPSBuZXcgUmVjdGFuZ2xlRChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTtcbiAgaWYgKGxlZnQgPT0gSW50ZWdlci5NQVhfVkFMVUUpIHtcbiAgICB0aGlzLmxlZnQgPSB0aGlzLnBhcmVudC5nZXRMZWZ0KCk7XG4gICAgdGhpcy5yaWdodCA9IHRoaXMucGFyZW50LmdldFJpZ2h0KCk7XG4gICAgdGhpcy50b3AgPSB0aGlzLnBhcmVudC5nZXRUb3AoKTtcbiAgICB0aGlzLmJvdHRvbSA9IHRoaXMucGFyZW50LmdldEJvdHRvbSgpO1xuICB9XG5cbiAgaWYgKG5vZGVzWzBdLmdldFBhcmVudCgpLnBhZGRpbmdMZWZ0ICE9IHVuZGVmaW5lZCkge1xuICAgIG1hcmdpbiA9IG5vZGVzWzBdLmdldFBhcmVudCgpLnBhZGRpbmdMZWZ0O1xuICB9IGVsc2Uge1xuICAgIG1hcmdpbiA9IHRoaXMubWFyZ2luO1xuICB9XG5cbiAgdGhpcy5sZWZ0ID0gYm91bmRpbmdSZWN0LnggLSBtYXJnaW47XG4gIHRoaXMucmlnaHQgPSBib3VuZGluZ1JlY3QueCArIGJvdW5kaW5nUmVjdC53aWR0aCArIG1hcmdpbjtcbiAgdGhpcy50b3AgPSBib3VuZGluZ1JlY3QueSAtIG1hcmdpbjtcbiAgdGhpcy5ib3R0b20gPSBib3VuZGluZ1JlY3QueSArIGJvdW5kaW5nUmVjdC5oZWlnaHQgKyBtYXJnaW47XG59O1xuXG5MR3JhcGguY2FsY3VsYXRlQm91bmRzID0gZnVuY3Rpb24gKG5vZGVzKSB7XG4gIHZhciBsZWZ0ID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciByaWdodCA9IC1JbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIHRvcCA9IEludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgYm90dG9tID0gLUludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgbm9kZUxlZnQ7XG4gIHZhciBub2RlUmlnaHQ7XG4gIHZhciBub2RlVG9wO1xuICB2YXIgbm9kZUJvdHRvbTtcblxuICB2YXIgcyA9IG5vZGVzLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIHZhciBsTm9kZSA9IG5vZGVzW2ldO1xuICAgIG5vZGVMZWZ0ID0gbE5vZGUuZ2V0TGVmdCgpO1xuICAgIG5vZGVSaWdodCA9IGxOb2RlLmdldFJpZ2h0KCk7XG4gICAgbm9kZVRvcCA9IGxOb2RlLmdldFRvcCgpO1xuICAgIG5vZGVCb3R0b20gPSBsTm9kZS5nZXRCb3R0b20oKTtcblxuICAgIGlmIChsZWZ0ID4gbm9kZUxlZnQpIHtcbiAgICAgIGxlZnQgPSBub2RlTGVmdDtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQgPCBub2RlUmlnaHQpIHtcbiAgICAgIHJpZ2h0ID0gbm9kZVJpZ2h0O1xuICAgIH1cblxuICAgIGlmICh0b3AgPiBub2RlVG9wKSB7XG4gICAgICB0b3AgPSBub2RlVG9wO1xuICAgIH1cblxuICAgIGlmIChib3R0b20gPCBub2RlQm90dG9tKSB7XG4gICAgICBib3R0b20gPSBub2RlQm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIHZhciBib3VuZGluZ1JlY3QgPSBuZXcgUmVjdGFuZ2xlRChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTtcblxuICByZXR1cm4gYm91bmRpbmdSZWN0O1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRJbmNsdXNpb25UcmVlRGVwdGggPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzID09IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKSkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRJbmNsdXNpb25UcmVlRGVwdGgoKTtcbiAgfVxufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRFc3RpbWF0ZWRTaXplID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5lc3RpbWF0ZWRTaXplID09IEludGVnZXIuTUlOX1ZBTFVFKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cbiAgcmV0dXJuIHRoaXMuZXN0aW1hdGVkU2l6ZTtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuY2FsY0VzdGltYXRlZFNpemUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzaXplID0gMDtcbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcztcbiAgdmFyIHMgPSBub2Rlcy5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICB2YXIgbE5vZGUgPSBub2Rlc1tpXTtcbiAgICBzaXplICs9IGxOb2RlLmNhbGNFc3RpbWF0ZWRTaXplKCk7XG4gIH1cblxuICBpZiAoc2l6ZSA9PSAwKSB7XG4gICAgdGhpcy5lc3RpbWF0ZWRTaXplID0gTGF5b3V0Q29uc3RhbnRzLkVNUFRZX0NPTVBPVU5EX05PREVfU0laRTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmVzdGltYXRlZFNpemUgPSBzaXplIC8gTWF0aC5zcXJ0KHRoaXMubm9kZXMubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmVzdGltYXRlZFNpemU7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLnVwZGF0ZUNvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAodGhpcy5ub2Rlcy5sZW5ndGggPT0gMCkge1xuICAgIHRoaXMuaXNDb25uZWN0ZWQgPSB0cnVlO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBxdWV1ZSA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLm5vZGVzWzBdO1xuICB2YXIgbmVpZ2hib3JFZGdlcztcbiAgdmFyIGN1cnJlbnROZWlnaGJvcjtcbiAgdmFyIGNoaWxkcmVuT2ZOb2RlID0gY3VycmVudE5vZGUud2l0aENoaWxkcmVuKCk7XG4gIGNoaWxkcmVuT2ZOb2RlLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBxdWV1ZS5wdXNoKG5vZGUpO1xuICAgIHZpc2l0ZWQuYWRkKG5vZGUpO1xuICB9KTtcblxuICB3aGlsZSAocXVldWUubGVuZ3RoICE9PSAwKSB7XG4gICAgY3VycmVudE5vZGUgPSBxdWV1ZS5zaGlmdCgpO1xuXG4gICAgLy8gVHJhdmVyc2UgYWxsIG5laWdoYm9ycyBvZiB0aGlzIG5vZGVcbiAgICBuZWlnaGJvckVkZ2VzID0gY3VycmVudE5vZGUuZ2V0RWRnZXMoKTtcbiAgICB2YXIgc2l6ZSA9IG5laWdoYm9yRWRnZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICB2YXIgbmVpZ2hib3JFZGdlID0gbmVpZ2hib3JFZGdlc1tpXTtcbiAgICAgIGN1cnJlbnROZWlnaGJvciA9IG5laWdoYm9yRWRnZS5nZXRPdGhlckVuZEluR3JhcGgoY3VycmVudE5vZGUsIHRoaXMpO1xuXG4gICAgICAvLyBBZGQgdW52aXNpdGVkIG5laWdoYm9ycyB0byB0aGUgbGlzdCB0byB2aXNpdFxuICAgICAgaWYgKGN1cnJlbnROZWlnaGJvciAhPSBudWxsICYmICF2aXNpdGVkLmhhcyhjdXJyZW50TmVpZ2hib3IpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbk9mTmVpZ2hib3IgPSBjdXJyZW50TmVpZ2hib3Iud2l0aENoaWxkcmVuKCk7XG5cbiAgICAgICAgY2hpbGRyZW5PZk5laWdoYm9yLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICBxdWV1ZS5wdXNoKG5vZGUpO1xuICAgICAgICAgIHZpc2l0ZWQuYWRkKG5vZGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLmlzQ29ubmVjdGVkID0gZmFsc2U7XG5cbiAgaWYgKHZpc2l0ZWQuc2l6ZSA+PSB0aGlzLm5vZGVzLmxlbmd0aCkge1xuICAgIHZhciBub09mVmlzaXRlZEluVGhpc0dyYXBoID0gMDtcblxuICAgIHZpc2l0ZWQuZm9yRWFjaChmdW5jdGlvbiAodmlzaXRlZE5vZGUpIHtcbiAgICAgIGlmICh2aXNpdGVkTm9kZS5vd25lciA9PSBzZWxmKSB7XG4gICAgICAgIG5vT2ZWaXNpdGVkSW5UaGlzR3JhcGgrKztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChub09mVmlzaXRlZEluVGhpc0dyYXBoID09IHRoaXMubm9kZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlzQ29ubmVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTEdyYXBoO1xuXG4vKioqLyB9KSxcbi8qIDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaDtcbnZhciBMRWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbmZ1bmN0aW9uIExHcmFwaE1hbmFnZXIobGF5b3V0KSB7XG4gIExHcmFwaCA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7IC8vIEl0IG1heSBiZSBiZXR0ZXIgdG8gaW5pdGlsaXplIHRoaXMgb3V0IG9mIHRoaXMgZnVuY3Rpb24gYnV0IGl0IGdpdmVzIGFuIGVycm9yIChSaWdodC1oYW5kIHNpZGUgb2YgJ2luc3RhbmNlb2YnIGlzIG5vdCBjYWxsYWJsZSkgbm93LlxuICB0aGlzLmxheW91dCA9IGxheW91dDtcblxuICB0aGlzLmdyYXBocyA9IFtdO1xuICB0aGlzLmVkZ2VzID0gW107XG59XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmFkZFJvb3QgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBuZ3JhcGggPSB0aGlzLmxheW91dC5uZXdHcmFwaCgpO1xuICB2YXIgbm5vZGUgPSB0aGlzLmxheW91dC5uZXdOb2RlKG51bGwpO1xuICB2YXIgcm9vdCA9IHRoaXMuYWRkKG5ncmFwaCwgbm5vZGUpO1xuICB0aGlzLnNldFJvb3RHcmFwaChyb290KTtcbiAgcmV0dXJuIHRoaXMucm9vdEdyYXBoO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG5ld0dyYXBoLCBwYXJlbnROb2RlLCBuZXdFZGdlLCBzb3VyY2VOb2RlLCB0YXJnZXROb2RlKSB7XG4gIC8vdGhlcmUgYXJlIGp1c3QgMiBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdGhlbiBpdCBhZGRzIGFuIExHcmFwaCBlbHNlIGl0IGFkZHMgYW4gTEVkZ2VcbiAgaWYgKG5ld0VkZ2UgPT0gbnVsbCAmJiBzb3VyY2VOb2RlID09IG51bGwgJiYgdGFyZ2V0Tm9kZSA9PSBudWxsKSB7XG4gICAgaWYgKG5ld0dyYXBoID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiR3JhcGggaXMgbnVsbCFcIjtcbiAgICB9XG4gICAgaWYgKHBhcmVudE5vZGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgXCJQYXJlbnQgbm9kZSBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAodGhpcy5ncmFwaHMuaW5kZXhPZihuZXdHcmFwaCkgPiAtMSkge1xuICAgICAgdGhyb3cgXCJHcmFwaCBhbHJlYWR5IGluIHRoaXMgZ3JhcGggbWdyIVwiO1xuICAgIH1cblxuICAgIHRoaXMuZ3JhcGhzLnB1c2gobmV3R3JhcGgpO1xuXG4gICAgaWYgKG5ld0dyYXBoLnBhcmVudCAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkFscmVhZHkgaGFzIGEgcGFyZW50IVwiO1xuICAgIH1cbiAgICBpZiAocGFyZW50Tm9kZS5jaGlsZCAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkFscmVhZHkgaGFzIGEgY2hpbGQhXCI7XG4gICAgfVxuXG4gICAgbmV3R3JhcGgucGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICBwYXJlbnROb2RlLmNoaWxkID0gbmV3R3JhcGg7XG5cbiAgICByZXR1cm4gbmV3R3JhcGg7XG4gIH0gZWxzZSB7XG4gICAgLy9jaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBwYXJhbWV0ZXJzXG4gICAgdGFyZ2V0Tm9kZSA9IG5ld0VkZ2U7XG4gICAgc291cmNlTm9kZSA9IHBhcmVudE5vZGU7XG4gICAgbmV3RWRnZSA9IG5ld0dyYXBoO1xuICAgIHZhciBzb3VyY2VHcmFwaCA9IHNvdXJjZU5vZGUuZ2V0T3duZXIoKTtcbiAgICB2YXIgdGFyZ2V0R3JhcGggPSB0YXJnZXROb2RlLmdldE93bmVyKCk7XG5cbiAgICBpZiAoIShzb3VyY2VHcmFwaCAhPSBudWxsICYmIHNvdXJjZUdyYXBoLmdldEdyYXBoTWFuYWdlcigpID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBub3QgaW4gdGhpcyBncmFwaCBtZ3IhXCI7XG4gICAgfVxuICAgIGlmICghKHRhcmdldEdyYXBoICE9IG51bGwgJiYgdGFyZ2V0R3JhcGguZ2V0R3JhcGhNYW5hZ2VyKCkgPT0gdGhpcykpIHtcbiAgICAgIHRocm93IFwiVGFyZ2V0IG5vdCBpbiB0aGlzIGdyYXBoIG1nciFcIjtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlR3JhcGggPT0gdGFyZ2V0R3JhcGgpIHtcbiAgICAgIG5ld0VkZ2UuaXNJbnRlckdyYXBoID0gZmFsc2U7XG4gICAgICByZXR1cm4gc291cmNlR3JhcGguYWRkKG5ld0VkZ2UsIHNvdXJjZU5vZGUsIHRhcmdldE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdFZGdlLmlzSW50ZXJHcmFwaCA9IHRydWU7XG5cbiAgICAgIC8vIHNldCBzb3VyY2UgYW5kIHRhcmdldFxuICAgICAgbmV3RWRnZS5zb3VyY2UgPSBzb3VyY2VOb2RlO1xuICAgICAgbmV3RWRnZS50YXJnZXQgPSB0YXJnZXROb2RlO1xuXG4gICAgICAvLyBhZGQgZWRnZSB0byBpbnRlci1ncmFwaCBlZGdlIGxpc3RcbiAgICAgIGlmICh0aGlzLmVkZ2VzLmluZGV4T2YobmV3RWRnZSkgPiAtMSkge1xuICAgICAgICB0aHJvdyBcIkVkZ2UgYWxyZWFkeSBpbiBpbnRlci1ncmFwaCBlZGdlIGxpc3QhXCI7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZWRnZXMucHVzaChuZXdFZGdlKTtcblxuICAgICAgLy8gYWRkIGVkZ2UgdG8gc291cmNlIGFuZCB0YXJnZXQgaW5jaWRlbmN5IGxpc3RzXG4gICAgICBpZiAoIShuZXdFZGdlLnNvdXJjZSAhPSBudWxsICYmIG5ld0VkZ2UudGFyZ2V0ICE9IG51bGwpKSB7XG4gICAgICAgIHRocm93IFwiRWRnZSBzb3VyY2UgYW5kL29yIHRhcmdldCBpcyBudWxsIVwiO1xuICAgICAgfVxuXG4gICAgICBpZiAoIShuZXdFZGdlLnNvdXJjZS5lZGdlcy5pbmRleE9mKG5ld0VkZ2UpID09IC0xICYmIG5ld0VkZ2UudGFyZ2V0LmVkZ2VzLmluZGV4T2YobmV3RWRnZSkgPT0gLTEpKSB7XG4gICAgICAgIHRocm93IFwiRWRnZSBhbHJlYWR5IGluIHNvdXJjZSBhbmQvb3IgdGFyZ2V0IGluY2lkZW5jeSBsaXN0IVwiO1xuICAgICAgfVxuXG4gICAgICBuZXdFZGdlLnNvdXJjZS5lZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgICAgbmV3RWRnZS50YXJnZXQuZWRnZXMucHVzaChuZXdFZGdlKTtcblxuICAgICAgcmV0dXJuIG5ld0VkZ2U7XG4gICAgfVxuICB9XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAobE9iaikge1xuICBpZiAobE9iaiBpbnN0YW5jZW9mIExHcmFwaCkge1xuICAgIHZhciBncmFwaCA9IGxPYmo7XG4gICAgaWYgKGdyYXBoLmdldEdyYXBoTWFuYWdlcigpICE9IHRoaXMpIHtcbiAgICAgIHRocm93IFwiR3JhcGggbm90IGluIHRoaXMgZ3JhcGggbWdyXCI7XG4gICAgfVxuICAgIGlmICghKGdyYXBoID09IHRoaXMucm9vdEdyYXBoIHx8IGdyYXBoLnBhcmVudCAhPSBudWxsICYmIGdyYXBoLnBhcmVudC5ncmFwaE1hbmFnZXIgPT0gdGhpcykpIHtcbiAgICAgIHRocm93IFwiSW52YWxpZCBwYXJlbnQgbm9kZSFcIjtcbiAgICB9XG5cbiAgICAvLyBmaXJzdCB0aGUgZWRnZXMgKG1ha2UgYSBjb3B5IHRvIGRvIGl0IHNhZmVseSlcbiAgICB2YXIgZWRnZXNUb0JlUmVtb3ZlZCA9IFtdO1xuXG4gICAgZWRnZXNUb0JlUmVtb3ZlZCA9IGVkZ2VzVG9CZVJlbW92ZWQuY29uY2F0KGdyYXBoLmdldEVkZ2VzKCkpO1xuXG4gICAgdmFyIGVkZ2U7XG4gICAgdmFyIHMgPSBlZGdlc1RvQmVSZW1vdmVkLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgZWRnZSA9IGVkZ2VzVG9CZVJlbW92ZWRbaV07XG4gICAgICBncmFwaC5yZW1vdmUoZWRnZSk7XG4gICAgfVxuXG4gICAgLy8gdGhlbiB0aGUgbm9kZXMgKG1ha2UgYSBjb3B5IHRvIGRvIGl0IHNhZmVseSlcbiAgICB2YXIgbm9kZXNUb0JlUmVtb3ZlZCA9IFtdO1xuXG4gICAgbm9kZXNUb0JlUmVtb3ZlZCA9IG5vZGVzVG9CZVJlbW92ZWQuY29uY2F0KGdyYXBoLmdldE5vZGVzKCkpO1xuXG4gICAgdmFyIG5vZGU7XG4gICAgcyA9IG5vZGVzVG9CZVJlbW92ZWQubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICBub2RlID0gbm9kZXNUb0JlUmVtb3ZlZFtpXTtcbiAgICAgIGdyYXBoLnJlbW92ZShub2RlKTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiBncmFwaCBpcyB0aGUgcm9vdFxuICAgIGlmIChncmFwaCA9PSB0aGlzLnJvb3RHcmFwaCkge1xuICAgICAgdGhpcy5zZXRSb290R3JhcGgobnVsbCk7XG4gICAgfVxuXG4gICAgLy8gbm93IHJlbW92ZSB0aGUgZ3JhcGggaXRzZWxmXG4gICAgdmFyIGluZGV4ID0gdGhpcy5ncmFwaHMuaW5kZXhPZihncmFwaCk7XG4gICAgdGhpcy5ncmFwaHMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIC8vIGFsc28gcmVzZXQgdGhlIHBhcmVudCBvZiB0aGUgZ3JhcGhcbiAgICBncmFwaC5wYXJlbnQgPSBudWxsO1xuICB9IGVsc2UgaWYgKGxPYmogaW5zdGFuY2VvZiBMRWRnZSkge1xuICAgIGVkZ2UgPSBsT2JqO1xuICAgIGlmIChlZGdlID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiRWRnZSBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoIWVkZ2UuaXNJbnRlckdyYXBoKSB7XG4gICAgICB0aHJvdyBcIk5vdCBhbiBpbnRlci1ncmFwaCBlZGdlIVwiO1xuICAgIH1cbiAgICBpZiAoIShlZGdlLnNvdXJjZSAhPSBudWxsICYmIGVkZ2UudGFyZ2V0ICE9IG51bGwpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IGlzIG51bGwhXCI7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGVkZ2UgZnJvbSBzb3VyY2UgYW5kIHRhcmdldCBub2RlcycgaW5jaWRlbmN5IGxpc3RzXG5cbiAgICBpZiAoIShlZGdlLnNvdXJjZS5lZGdlcy5pbmRleE9mKGVkZ2UpICE9IC0xICYmIGVkZ2UudGFyZ2V0LmVkZ2VzLmluZGV4T2YoZWRnZSkgIT0gLTEpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IGRvZXNuJ3Qga25vdyB0aGlzIGVkZ2UhXCI7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZWRnZS5zb3VyY2UuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICBlZGdlLnNvdXJjZS5lZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGluZGV4ID0gZWRnZS50YXJnZXQuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICBlZGdlLnRhcmdldC5lZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgLy8gcmVtb3ZlIGVkZ2UgZnJvbSBvd25lciBncmFwaCBtYW5hZ2VyJ3MgaW50ZXItZ3JhcGggZWRnZSBsaXN0XG5cbiAgICBpZiAoIShlZGdlLnNvdXJjZS5vd25lciAhPSBudWxsICYmIGVkZ2Uuc291cmNlLm93bmVyLmdldEdyYXBoTWFuYWdlcigpICE9IG51bGwpKSB7XG4gICAgICB0aHJvdyBcIkVkZ2Ugb3duZXIgZ3JhcGggb3Igb3duZXIgZ3JhcGggbWFuYWdlciBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoZWRnZS5zb3VyY2Uub3duZXIuZ2V0R3JhcGhNYW5hZ2VyKCkuZWRnZXMuaW5kZXhPZihlZGdlKSA9PSAtMSkge1xuICAgICAgdGhyb3cgXCJOb3QgaW4gb3duZXIgZ3JhcGggbWFuYWdlcidzIGVkZ2UgbGlzdCFcIjtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBlZGdlLnNvdXJjZS5vd25lci5nZXRHcmFwaE1hbmFnZXIoKS5lZGdlcy5pbmRleE9mKGVkZ2UpO1xuICAgIGVkZ2Uuc291cmNlLm93bmVyLmdldEdyYXBoTWFuYWdlcigpLmVkZ2VzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLnVwZGF0ZUJvdW5kcyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5yb290R3JhcGgudXBkYXRlQm91bmRzKHRydWUpO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0R3JhcGhzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaHM7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5nZXRBbGxOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuYWxsTm9kZXMgPT0gbnVsbCkge1xuICAgIHZhciBub2RlTGlzdCA9IFtdO1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdldEdyYXBocygpO1xuICAgIHZhciBzID0gZ3JhcGhzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgbm9kZUxpc3QgPSBub2RlTGlzdC5jb25jYXQoZ3JhcGhzW2ldLmdldE5vZGVzKCkpO1xuICAgIH1cbiAgICB0aGlzLmFsbE5vZGVzID0gbm9kZUxpc3Q7XG4gIH1cbiAgcmV0dXJuIHRoaXMuYWxsTm9kZXM7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5yZXNldEFsbE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmFsbE5vZGVzID0gbnVsbDtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLnJlc2V0QWxsRWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYWxsRWRnZXMgPSBudWxsO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUucmVzZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5hbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IG51bGw7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5nZXRBbGxFZGdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuYWxsRWRnZXMgPT0gbnVsbCkge1xuICAgIHZhciBlZGdlTGlzdCA9IFtdO1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdldEdyYXBocygpO1xuICAgIHZhciBzID0gZ3JhcGhzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBocy5sZW5ndGg7IGkrKykge1xuICAgICAgZWRnZUxpc3QgPSBlZGdlTGlzdC5jb25jYXQoZ3JhcGhzW2ldLmdldEVkZ2VzKCkpO1xuICAgIH1cblxuICAgIGVkZ2VMaXN0ID0gZWRnZUxpc3QuY29uY2F0KHRoaXMuZWRnZXMpO1xuXG4gICAgdGhpcy5hbGxFZGdlcyA9IGVkZ2VMaXN0O1xuICB9XG4gIHJldHVybiB0aGlzLmFsbEVkZ2VzO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0QWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuc2V0QWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gPSBmdW5jdGlvbiAobm9kZUxpc3QpIHtcbiAgaWYgKHRoaXMuYWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gIT0gbnVsbCkge1xuICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICB9XG5cbiAgdGhpcy5hbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IG5vZGVMaXN0O1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0Um9vdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucm9vdEdyYXBoO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuc2V0Um9vdEdyYXBoID0gZnVuY3Rpb24gKGdyYXBoKSB7XG4gIGlmIChncmFwaC5nZXRHcmFwaE1hbmFnZXIoKSAhPSB0aGlzKSB7XG4gICAgdGhyb3cgXCJSb290IG5vdCBpbiB0aGlzIGdyYXBoIG1nciFcIjtcbiAgfVxuXG4gIHRoaXMucm9vdEdyYXBoID0gZ3JhcGg7XG4gIC8vIHJvb3QgZ3JhcGggbXVzdCBoYXZlIGEgcm9vdCBub2RlIGFzc29jaWF0ZWQgd2l0aCBpdCBmb3IgY29udmVuaWVuY2VcbiAgaWYgKGdyYXBoLnBhcmVudCA9PSBudWxsKSB7XG4gICAgZ3JhcGgucGFyZW50ID0gdGhpcy5sYXlvdXQubmV3Tm9kZShcIlJvb3Qgbm9kZVwiKTtcbiAgfVxufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0TGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sYXlvdXQ7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5pc09uZUFuY2VzdG9yT2ZPdGhlciA9IGZ1bmN0aW9uIChmaXJzdE5vZGUsIHNlY29uZE5vZGUpIHtcbiAgaWYgKCEoZmlyc3ROb2RlICE9IG51bGwgJiYgc2Vjb25kTm9kZSAhPSBudWxsKSkge1xuICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICB9XG5cbiAgaWYgKGZpcnN0Tm9kZSA9PSBzZWNvbmROb2RlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gSXMgc2Vjb25kIG5vZGUgYW4gYW5jZXN0b3Igb2YgdGhlIGZpcnN0IG9uZT9cbiAgdmFyIG93bmVyR3JhcGggPSBmaXJzdE5vZGUuZ2V0T3duZXIoKTtcbiAgdmFyIHBhcmVudE5vZGU7XG5cbiAgZG8ge1xuICAgIHBhcmVudE5vZGUgPSBvd25lckdyYXBoLmdldFBhcmVudCgpO1xuXG4gICAgaWYgKHBhcmVudE5vZGUgPT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudE5vZGUgPT0gc2Vjb25kTm9kZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgb3duZXJHcmFwaCA9IHBhcmVudE5vZGUuZ2V0T3duZXIoKTtcbiAgICBpZiAob3duZXJHcmFwaCA9PSBudWxsKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH0gd2hpbGUgKHRydWUpO1xuICAvLyBJcyBmaXJzdCBub2RlIGFuIGFuY2VzdG9yIG9mIHRoZSBzZWNvbmQgb25lP1xuICBvd25lckdyYXBoID0gc2Vjb25kTm9kZS5nZXRPd25lcigpO1xuXG4gIGRvIHtcbiAgICBwYXJlbnROb2RlID0gb3duZXJHcmFwaC5nZXRQYXJlbnQoKTtcblxuICAgIGlmIChwYXJlbnROb2RlID09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnROb2RlID09IGZpcnN0Tm9kZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgb3duZXJHcmFwaCA9IHBhcmVudE5vZGUuZ2V0T3duZXIoKTtcbiAgICBpZiAob3duZXJHcmFwaCA9PSBudWxsKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH0gd2hpbGUgKHRydWUpO1xuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmNhbGNMb3dlc3RDb21tb25BbmNlc3RvcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlZGdlO1xuICB2YXIgc291cmNlTm9kZTtcbiAgdmFyIHRhcmdldE5vZGU7XG4gIHZhciBzb3VyY2VBbmNlc3RvckdyYXBoO1xuICB2YXIgdGFyZ2V0QW5jZXN0b3JHcmFwaDtcblxuICB2YXIgZWRnZXMgPSB0aGlzLmdldEFsbEVkZ2VzKCk7XG4gIHZhciBzID0gZWRnZXMubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIGVkZ2UgPSBlZGdlc1tpXTtcblxuICAgIHNvdXJjZU5vZGUgPSBlZGdlLnNvdXJjZTtcbiAgICB0YXJnZXROb2RlID0gZWRnZS50YXJnZXQ7XG4gICAgZWRnZS5sY2EgPSBudWxsO1xuICAgIGVkZ2Uuc291cmNlSW5MY2EgPSBzb3VyY2VOb2RlO1xuICAgIGVkZ2UudGFyZ2V0SW5MY2EgPSB0YXJnZXROb2RlO1xuXG4gICAgaWYgKHNvdXJjZU5vZGUgPT0gdGFyZ2V0Tm9kZSkge1xuICAgICAgZWRnZS5sY2EgPSBzb3VyY2VOb2RlLmdldE93bmVyKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBzb3VyY2VBbmNlc3RvckdyYXBoID0gc291cmNlTm9kZS5nZXRPd25lcigpO1xuXG4gICAgd2hpbGUgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgIGVkZ2UudGFyZ2V0SW5MY2EgPSB0YXJnZXROb2RlO1xuICAgICAgdGFyZ2V0QW5jZXN0b3JHcmFwaCA9IHRhcmdldE5vZGUuZ2V0T3duZXIoKTtcblxuICAgICAgd2hpbGUgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgICAgaWYgKHRhcmdldEFuY2VzdG9yR3JhcGggPT0gc291cmNlQW5jZXN0b3JHcmFwaCkge1xuICAgICAgICAgIGVkZ2UubGNhID0gdGFyZ2V0QW5jZXN0b3JHcmFwaDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXRBbmNlc3RvckdyYXBoID09IHRoaXMucm9vdEdyYXBoKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZWRnZS5sY2EgIT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICAgICAgICB9XG4gICAgICAgIGVkZ2UudGFyZ2V0SW5MY2EgPSB0YXJnZXRBbmNlc3RvckdyYXBoLmdldFBhcmVudCgpO1xuICAgICAgICB0YXJnZXRBbmNlc3RvckdyYXBoID0gZWRnZS50YXJnZXRJbkxjYS5nZXRPd25lcigpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc291cmNlQW5jZXN0b3JHcmFwaCA9PSB0aGlzLnJvb3RHcmFwaCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgICAgZWRnZS5zb3VyY2VJbkxjYSA9IHNvdXJjZUFuY2VzdG9yR3JhcGguZ2V0UGFyZW50KCk7XG4gICAgICAgIHNvdXJjZUFuY2VzdG9yR3JhcGggPSBlZGdlLnNvdXJjZUluTGNhLmdldE93bmVyKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVkZ2UubGNhID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICAgIH1cbiAgfVxufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuY2FsY0xvd2VzdENvbW1vbkFuY2VzdG9yID0gZnVuY3Rpb24gKGZpcnN0Tm9kZSwgc2Vjb25kTm9kZSkge1xuICBpZiAoZmlyc3ROb2RlID09IHNlY29uZE5vZGUpIHtcbiAgICByZXR1cm4gZmlyc3ROb2RlLmdldE93bmVyKCk7XG4gIH1cbiAgdmFyIGZpcnN0T3duZXJHcmFwaCA9IGZpcnN0Tm9kZS5nZXRPd25lcigpO1xuXG4gIGRvIHtcbiAgICBpZiAoZmlyc3RPd25lckdyYXBoID09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgc2Vjb25kT3duZXJHcmFwaCA9IHNlY29uZE5vZGUuZ2V0T3duZXIoKTtcblxuICAgIGRvIHtcbiAgICAgIGlmIChzZWNvbmRPd25lckdyYXBoID09IG51bGwpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWNvbmRPd25lckdyYXBoID09IGZpcnN0T3duZXJHcmFwaCkge1xuICAgICAgICByZXR1cm4gc2Vjb25kT3duZXJHcmFwaDtcbiAgICAgIH1cbiAgICAgIHNlY29uZE93bmVyR3JhcGggPSBzZWNvbmRPd25lckdyYXBoLmdldFBhcmVudCgpLmdldE93bmVyKCk7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICBmaXJzdE93bmVyR3JhcGggPSBmaXJzdE93bmVyR3JhcGguZ2V0UGFyZW50KCkuZ2V0T3duZXIoKTtcbiAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgcmV0dXJuIGZpcnN0T3duZXJHcmFwaDtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmNhbGNJbmNsdXNpb25UcmVlRGVwdGhzID0gZnVuY3Rpb24gKGdyYXBoLCBkZXB0aCkge1xuICBpZiAoZ3JhcGggPT0gbnVsbCAmJiBkZXB0aCA9PSBudWxsKSB7XG4gICAgZ3JhcGggPSB0aGlzLnJvb3RHcmFwaDtcbiAgICBkZXB0aCA9IDE7XG4gIH1cbiAgdmFyIG5vZGU7XG5cbiAgdmFyIG5vZGVzID0gZ3JhcGguZ2V0Tm9kZXMoKTtcbiAgdmFyIHMgPSBub2Rlcy5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgIG5vZGUuaW5jbHVzaW9uVHJlZURlcHRoID0gZGVwdGg7XG5cbiAgICBpZiAobm9kZS5jaGlsZCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmNhbGNJbmNsdXNpb25UcmVlRGVwdGhzKG5vZGUuY2hpbGQsIGRlcHRoICsgMSk7XG4gICAgfVxuICB9XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5pbmNsdWRlc0ludmFsaWRFZGdlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWRnZTtcblxuICB2YXIgcyA9IHRoaXMuZWRnZXMubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIGVkZ2UgPSB0aGlzLmVkZ2VzW2ldO1xuXG4gICAgaWYgKHRoaXMuaXNPbmVBbmNlc3Rvck9mT3RoZXIoZWRnZS5zb3VyY2UsIGVkZ2UudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTEdyYXBoTWFuYWdlcjtcblxuLyoqKi8gfSksXG4vKiA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5mdW5jdGlvbiBGRExheW91dENvbnN0YW50cygpIHt9XG5cbi8vRkRMYXlvdXRDb25zdGFudHMgaW5oZXJpdHMgc3RhdGljIHByb3BzIGluIExheW91dENvbnN0YW50c1xuZm9yICh2YXIgcHJvcCBpbiBMYXlvdXRDb25zdGFudHMpIHtcbiAgRkRMYXlvdXRDb25zdGFudHNbcHJvcF0gPSBMYXlvdXRDb25zdGFudHNbcHJvcF07XG59XG5cbkZETGF5b3V0Q29uc3RhbnRzLk1BWF9JVEVSQVRJT05TID0gMjUwMDtcblxuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCA9IDUwO1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9TUFJJTkdfU1RSRU5HVEggPSAwLjQ1O1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9SRVBVTFNJT05fU1RSRU5HVEggPSA0NTAwLjA7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfU1RSRU5HVEggPSAwLjQ7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPTVBPVU5EX0dSQVZJVFlfU1RSRU5HVEggPSAxLjA7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfUkFOR0VfRkFDVE9SID0gMy44O1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DT01QT1VORF9HUkFWSVRZX1JBTkdFX0ZBQ1RPUiA9IDEuNTtcbkZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVVNFX1NNQVJUX0lERUFMX0VER0VfTEVOR1RIX0NBTENVTEFUSU9OID0gdHJ1ZTtcbkZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVVNFX1NNQVJUX1JFUFVMU0lPTl9SQU5HRV9DQUxDVUxBVElPTiA9IHRydWU7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPT0xJTkdfRkFDVE9SX0lOQ1JFTUVOVEFMID0gMC4zO1xuRkRMYXlvdXRDb25zdGFudHMuQ09PTElOR19BREFQVEFUSU9OX0ZBQ1RPUiA9IDAuMzM7XG5GRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX0xPV0VSX05PREVfTElNSVQgPSAxMDAwO1xuRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9VUFBFUl9OT0RFX0xJTUlUID0gNTAwMDtcbkZETGF5b3V0Q29uc3RhbnRzLk1BWF9OT0RFX0RJU1BMQUNFTUVOVF9JTkNSRU1FTlRBTCA9IDEwMC4wO1xuRkRMYXlvdXRDb25zdGFudHMuTUFYX05PREVfRElTUExBQ0VNRU5UID0gRkRMYXlvdXRDb25zdGFudHMuTUFYX05PREVfRElTUExBQ0VNRU5UX0lOQ1JFTUVOVEFMICogMztcbkZETGF5b3V0Q29uc3RhbnRzLk1JTl9SRVBVTFNJT05fRElTVCA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggLyAxMC4wO1xuRkRMYXlvdXRDb25zdGFudHMuQ09OVkVSR0VOQ0VfQ0hFQ0tfUEVSSU9EID0gMTAwO1xuRkRMYXlvdXRDb25zdGFudHMuUEVSX0xFVkVMX0lERUFMX0VER0VfTEVOR1RIX0ZBQ1RPUiA9IDAuMTtcbkZETGF5b3V0Q29uc3RhbnRzLk1JTl9FREdFX0xFTkdUSCA9IDE7XG5GRExheW91dENvbnN0YW50cy5HUklEX0NBTENVTEFUSU9OX0NIRUNLX1BFUklPRCA9IDEwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZETGF5b3V0Q29uc3RhbnRzO1xuXG4vKioqLyB9KSxcbi8qIDggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKiBUaGlzIGNsYXNzIG1haW50YWlucyBhIGxpc3Qgb2Ygc3RhdGljIGdlb21ldHJ5IHJlbGF0ZWQgdXRpbGl0eSBtZXRob2RzLlxuICpcbiAqXG4gKiBDb3B5cmlnaHQ6IGktVmlzIFJlc2VhcmNoIEdyb3VwLCBCaWxrZW50IFVuaXZlcnNpdHksIDIwMDcgLSBwcmVzZW50XG4gKi9cblxudmFyIFBvaW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cbmZ1bmN0aW9uIElHZW9tZXRyeSgpIHt9XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2FsY3VsYXRlcyAqaGFsZiogdGhlIGFtb3VudCBpbiB4IGFuZCB5IGRpcmVjdGlvbnMgb2YgdGhlIHR3b1xuICogaW5wdXQgcmVjdGFuZ2xlcyBuZWVkZWQgdG8gc2VwYXJhdGUgdGhlbSBrZWVwaW5nIHRoZWlyIHJlc3BlY3RpdmVcbiAqIHBvc2l0aW9uaW5nLCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGluIHRoZSBpbnB1dCBhcnJheS4gQW4gaW5wdXRcbiAqIHNlcGFyYXRpb24gYnVmZmVyIGFkZGVkIHRvIHRoZSBhbW91bnQgaW4gYm90aCBkaXJlY3Rpb25zLiBXZSBhc3N1bWUgdGhhdFxuICogdGhlIHR3byByZWN0YW5nbGVzIGRvIGludGVyc2VjdC5cbiAqL1xuSUdlb21ldHJ5LmNhbGNTZXBhcmF0aW9uQW1vdW50ID0gZnVuY3Rpb24gKHJlY3RBLCByZWN0Qiwgb3ZlcmxhcEFtb3VudCwgc2VwYXJhdGlvbkJ1ZmZlcikge1xuICBpZiAoIXJlY3RBLmludGVyc2VjdHMocmVjdEIpKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cblxuICB2YXIgZGlyZWN0aW9ucyA9IG5ldyBBcnJheSgyKTtcblxuICB0aGlzLmRlY2lkZURpcmVjdGlvbnNGb3JPdmVybGFwcGluZ05vZGVzKHJlY3RBLCByZWN0QiwgZGlyZWN0aW9ucyk7XG5cbiAgb3ZlcmxhcEFtb3VudFswXSA9IE1hdGgubWluKHJlY3RBLmdldFJpZ2h0KCksIHJlY3RCLmdldFJpZ2h0KCkpIC0gTWF0aC5tYXgocmVjdEEueCwgcmVjdEIueCk7XG4gIG92ZXJsYXBBbW91bnRbMV0gPSBNYXRoLm1pbihyZWN0QS5nZXRCb3R0b20oKSwgcmVjdEIuZ2V0Qm90dG9tKCkpIC0gTWF0aC5tYXgocmVjdEEueSwgcmVjdEIueSk7XG5cbiAgLy8gdXBkYXRlIHRoZSBvdmVybGFwcGluZyBhbW91bnRzIGZvciB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICBpZiAocmVjdEEuZ2V0WCgpIDw9IHJlY3RCLmdldFgoKSAmJiByZWN0QS5nZXRSaWdodCgpID49IHJlY3RCLmdldFJpZ2h0KCkpIHtcbiAgICAvKiBDYXNlIHguMTpcbiAgICAqXG4gICAgKiByZWN0QVxuICAgICogXHR8ICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgKiBcdHwgICAgICAgIF9fX19fX19fXyAgICAgIHxcbiAgICAqIFx0fCAgICAgICAgfCAgICAgICB8ICAgICAgfFxuICAgICogXHR8X19fX19fX198X19fX19fX3xfX19fX198XG4gICAgKiBcdFx0XHQgfCAgICAgICB8XG4gICAgKiAgICAgICAgICAgfCAgICAgICB8XG4gICAgKiAgICAgICAgcmVjdEJcbiAgICAqL1xuICAgIG92ZXJsYXBBbW91bnRbMF0gKz0gTWF0aC5taW4ocmVjdEIuZ2V0WCgpIC0gcmVjdEEuZ2V0WCgpLCByZWN0QS5nZXRSaWdodCgpIC0gcmVjdEIuZ2V0UmlnaHQoKSk7XG4gIH0gZWxzZSBpZiAocmVjdEIuZ2V0WCgpIDw9IHJlY3RBLmdldFgoKSAmJiByZWN0Qi5nZXRSaWdodCgpID49IHJlY3RBLmdldFJpZ2h0KCkpIHtcbiAgICAvKiBDYXNlIHguMjpcbiAgICAqXG4gICAgKiByZWN0QlxuICAgICogXHR8ICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgKiBcdHwgICAgICAgIF9fX19fX19fXyAgICAgIHxcbiAgICAqIFx0fCAgICAgICAgfCAgICAgICB8ICAgICAgfFxuICAgICogXHR8X19fX19fX198X19fX19fX3xfX19fX198XG4gICAgKiBcdFx0XHQgfCAgICAgICB8XG4gICAgKiAgICAgICAgICAgfCAgICAgICB8XG4gICAgKiAgICAgICAgcmVjdEFcbiAgICAqL1xuICAgIG92ZXJsYXBBbW91bnRbMF0gKz0gTWF0aC5taW4ocmVjdEEuZ2V0WCgpIC0gcmVjdEIuZ2V0WCgpLCByZWN0Qi5nZXRSaWdodCgpIC0gcmVjdEEuZ2V0UmlnaHQoKSk7XG4gIH1cbiAgaWYgKHJlY3RBLmdldFkoKSA8PSByZWN0Qi5nZXRZKCkgJiYgcmVjdEEuZ2V0Qm90dG9tKCkgPj0gcmVjdEIuZ2V0Qm90dG9tKCkpIHtcbiAgICAvKiBDYXNlIHkuMTpcbiAgICAgKiAgICAgICAgICBfX19fX19fXyByZWN0QVxuICAgICAqICAgICAgICAgfFxuICAgICAqICAgICAgICAgfFxuICAgICAqICAgX19fX19ffF9fX18gIHJlY3RCXG4gICAgICogICAgICAgICB8ICAgIHxcbiAgICAgKiAgICAgICAgIHwgICAgfFxuICAgICAqICAgX19fX19ffF9fX198XG4gICAgICogICAgICAgICB8XG4gICAgICogICAgICAgICB8XG4gICAgICogICAgICAgICB8X19fX19fX19cbiAgICAgKlxuICAgICAqL1xuICAgIG92ZXJsYXBBbW91bnRbMV0gKz0gTWF0aC5taW4ocmVjdEIuZ2V0WSgpIC0gcmVjdEEuZ2V0WSgpLCByZWN0QS5nZXRCb3R0b20oKSAtIHJlY3RCLmdldEJvdHRvbSgpKTtcbiAgfSBlbHNlIGlmIChyZWN0Qi5nZXRZKCkgPD0gcmVjdEEuZ2V0WSgpICYmIHJlY3RCLmdldEJvdHRvbSgpID49IHJlY3RBLmdldEJvdHRvbSgpKSB7XG4gICAgLyogQ2FzZSB5LjI6XG4gICAgKiAgICAgICAgICBfX19fX19fXyByZWN0QlxuICAgICogICAgICAgICB8XG4gICAgKiAgICAgICAgIHxcbiAgICAqICAgX19fX19ffF9fX18gIHJlY3RBXG4gICAgKiAgICAgICAgIHwgICAgfFxuICAgICogICAgICAgICB8ICAgIHxcbiAgICAqICAgX19fX19ffF9fX198XG4gICAgKiAgICAgICAgIHxcbiAgICAqICAgICAgICAgfFxuICAgICogICAgICAgICB8X19fX19fX19cbiAgICAqXG4gICAgKi9cbiAgICBvdmVybGFwQW1vdW50WzFdICs9IE1hdGgubWluKHJlY3RBLmdldFkoKSAtIHJlY3RCLmdldFkoKSwgcmVjdEIuZ2V0Qm90dG9tKCkgLSByZWN0QS5nZXRCb3R0b20oKSk7XG4gIH1cblxuICAvLyBmaW5kIHNsb3BlIG9mIHRoZSBsaW5lIHBhc3NlcyB0d28gY2VudGVyc1xuICB2YXIgc2xvcGUgPSBNYXRoLmFicygocmVjdEIuZ2V0Q2VudGVyWSgpIC0gcmVjdEEuZ2V0Q2VudGVyWSgpKSAvIChyZWN0Qi5nZXRDZW50ZXJYKCkgLSByZWN0QS5nZXRDZW50ZXJYKCkpKTtcbiAgLy8gaWYgY2VudGVycyBhcmUgb3ZlcmxhcHBlZFxuICBpZiAocmVjdEIuZ2V0Q2VudGVyWSgpID09PSByZWN0QS5nZXRDZW50ZXJZKCkgJiYgcmVjdEIuZ2V0Q2VudGVyWCgpID09PSByZWN0QS5nZXRDZW50ZXJYKCkpIHtcbiAgICAvLyBhc3N1bWUgdGhlIHNsb3BlIGlzIDEgKDQ1IGRlZ3JlZSlcbiAgICBzbG9wZSA9IDEuMDtcbiAgfVxuXG4gIHZhciBtb3ZlQnlZID0gc2xvcGUgKiBvdmVybGFwQW1vdW50WzBdO1xuICB2YXIgbW92ZUJ5WCA9IG92ZXJsYXBBbW91bnRbMV0gLyBzbG9wZTtcbiAgaWYgKG92ZXJsYXBBbW91bnRbMF0gPCBtb3ZlQnlYKSB7XG4gICAgbW92ZUJ5WCA9IG92ZXJsYXBBbW91bnRbMF07XG4gIH0gZWxzZSB7XG4gICAgbW92ZUJ5WSA9IG92ZXJsYXBBbW91bnRbMV07XG4gIH1cbiAgLy8gcmV0dXJuIGhhbGYgdGhlIGFtb3VudCBzbyB0aGF0IGlmIGVhY2ggcmVjdGFuZ2xlIGlzIG1vdmVkIGJ5IHRoZXNlXG4gIC8vIGFtb3VudHMgaW4gb3Bwb3NpdGUgZGlyZWN0aW9ucywgb3ZlcmxhcCB3aWxsIGJlIHJlc29sdmVkXG4gIG92ZXJsYXBBbW91bnRbMF0gPSAtMSAqIGRpcmVjdGlvbnNbMF0gKiAobW92ZUJ5WCAvIDIgKyBzZXBhcmF0aW9uQnVmZmVyKTtcbiAgb3ZlcmxhcEFtb3VudFsxXSA9IC0xICogZGlyZWN0aW9uc1sxXSAqIChtb3ZlQnlZIC8gMiArIHNlcGFyYXRpb25CdWZmZXIpO1xufTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBkZWNpZGVzIHRoZSBzZXBhcmF0aW9uIGRpcmVjdGlvbiBvZiBvdmVybGFwcGluZyBub2Rlc1xuICpcbiAqIGlmIGRpcmVjdGlvbnNbMF0gPSAtMSwgdGhlbiByZWN0QSBnb2VzIGxlZnRcbiAqIGlmIGRpcmVjdGlvbnNbMF0gPSAxLCAgdGhlbiByZWN0QSBnb2VzIHJpZ2h0XG4gKiBpZiBkaXJlY3Rpb25zWzFdID0gLTEsIHRoZW4gcmVjdEEgZ29lcyB1cFxuICogaWYgZGlyZWN0aW9uc1sxXSA9IDEsICB0aGVuIHJlY3RBIGdvZXMgZG93blxuICovXG5JR2VvbWV0cnkuZGVjaWRlRGlyZWN0aW9uc0Zvck92ZXJsYXBwaW5nTm9kZXMgPSBmdW5jdGlvbiAocmVjdEEsIHJlY3RCLCBkaXJlY3Rpb25zKSB7XG4gIGlmIChyZWN0QS5nZXRDZW50ZXJYKCkgPCByZWN0Qi5nZXRDZW50ZXJYKCkpIHtcbiAgICBkaXJlY3Rpb25zWzBdID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgZGlyZWN0aW9uc1swXSA9IDE7XG4gIH1cblxuICBpZiAocmVjdEEuZ2V0Q2VudGVyWSgpIDwgcmVjdEIuZ2V0Q2VudGVyWSgpKSB7XG4gICAgZGlyZWN0aW9uc1sxXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIGRpcmVjdGlvbnNbMV0gPSAxO1xuICB9XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGNhbGN1bGF0ZXMgdGhlIGludGVyc2VjdGlvbiAoY2xpcHBpbmcpIHBvaW50cyBvZiB0aGUgdHdvXG4gKiBpbnB1dCByZWN0YW5nbGVzIHdpdGggbGluZSBzZWdtZW50IGRlZmluZWQgYnkgdGhlIGNlbnRlcnMgb2YgdGhlc2UgdHdvXG4gKiByZWN0YW5nbGVzLiBUaGUgY2xpcHBpbmcgcG9pbnRzIGFyZSBzYXZlZCBpbiB0aGUgaW5wdXQgZG91YmxlIGFycmF5IGFuZFxuICogd2hldGhlciBvciBub3QgdGhlIHR3byByZWN0YW5nbGVzIG92ZXJsYXAgaXMgcmV0dXJuZWQuXG4gKi9cbklHZW9tZXRyeS5nZXRJbnRlcnNlY3Rpb24yID0gZnVuY3Rpb24gKHJlY3RBLCByZWN0QiwgcmVzdWx0KSB7XG4gIC8vcmVzdWx0WzAtMV0gd2lsbCBjb250YWluIGNsaXBQb2ludCBvZiByZWN0QSwgcmVzdWx0WzItM10gd2lsbCBjb250YWluIGNsaXBQb2ludCBvZiByZWN0QlxuICB2YXIgcDF4ID0gcmVjdEEuZ2V0Q2VudGVyWCgpO1xuICB2YXIgcDF5ID0gcmVjdEEuZ2V0Q2VudGVyWSgpO1xuICB2YXIgcDJ4ID0gcmVjdEIuZ2V0Q2VudGVyWCgpO1xuICB2YXIgcDJ5ID0gcmVjdEIuZ2V0Q2VudGVyWSgpO1xuXG4gIC8vaWYgdHdvIHJlY3RhbmdsZXMgaW50ZXJzZWN0LCB0aGVuIGNsaXBwaW5nIHBvaW50cyBhcmUgY2VudGVyc1xuICBpZiAocmVjdEEuaW50ZXJzZWN0cyhyZWN0QikpIHtcbiAgICByZXN1bHRbMF0gPSBwMXg7XG4gICAgcmVzdWx0WzFdID0gcDF5O1xuICAgIHJlc3VsdFsyXSA9IHAyeDtcbiAgICByZXN1bHRbM10gPSBwMnk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy92YXJpYWJsZXMgZm9yIHJlY3RBXG4gIHZhciB0b3BMZWZ0QXggPSByZWN0QS5nZXRYKCk7XG4gIHZhciB0b3BMZWZ0QXkgPSByZWN0QS5nZXRZKCk7XG4gIHZhciB0b3BSaWdodEF4ID0gcmVjdEEuZ2V0UmlnaHQoKTtcbiAgdmFyIGJvdHRvbUxlZnRBeCA9IHJlY3RBLmdldFgoKTtcbiAgdmFyIGJvdHRvbUxlZnRBeSA9IHJlY3RBLmdldEJvdHRvbSgpO1xuICB2YXIgYm90dG9tUmlnaHRBeCA9IHJlY3RBLmdldFJpZ2h0KCk7XG4gIHZhciBoYWxmV2lkdGhBID0gcmVjdEEuZ2V0V2lkdGhIYWxmKCk7XG4gIHZhciBoYWxmSGVpZ2h0QSA9IHJlY3RBLmdldEhlaWdodEhhbGYoKTtcbiAgLy92YXJpYWJsZXMgZm9yIHJlY3RCXG4gIHZhciB0b3BMZWZ0QnggPSByZWN0Qi5nZXRYKCk7XG4gIHZhciB0b3BMZWZ0QnkgPSByZWN0Qi5nZXRZKCk7XG4gIHZhciB0b3BSaWdodEJ4ID0gcmVjdEIuZ2V0UmlnaHQoKTtcbiAgdmFyIGJvdHRvbUxlZnRCeCA9IHJlY3RCLmdldFgoKTtcbiAgdmFyIGJvdHRvbUxlZnRCeSA9IHJlY3RCLmdldEJvdHRvbSgpO1xuICB2YXIgYm90dG9tUmlnaHRCeCA9IHJlY3RCLmdldFJpZ2h0KCk7XG4gIHZhciBoYWxmV2lkdGhCID0gcmVjdEIuZ2V0V2lkdGhIYWxmKCk7XG4gIHZhciBoYWxmSGVpZ2h0QiA9IHJlY3RCLmdldEhlaWdodEhhbGYoKTtcblxuICAvL2ZsYWcgd2hldGhlciBjbGlwcGluZyBwb2ludHMgYXJlIGZvdW5kXG4gIHZhciBjbGlwUG9pbnRBRm91bmQgPSBmYWxzZTtcbiAgdmFyIGNsaXBQb2ludEJGb3VuZCA9IGZhbHNlO1xuXG4gIC8vIGxpbmUgaXMgdmVydGljYWxcbiAgaWYgKHAxeCA9PT0gcDJ4KSB7XG4gICAgaWYgKHAxeSA+IHAyeSkge1xuICAgICAgcmVzdWx0WzBdID0gcDF4O1xuICAgICAgcmVzdWx0WzFdID0gdG9wTGVmdEF5O1xuICAgICAgcmVzdWx0WzJdID0gcDJ4O1xuICAgICAgcmVzdWx0WzNdID0gYm90dG9tTGVmdEJ5O1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAocDF5IDwgcDJ5KSB7XG4gICAgICByZXN1bHRbMF0gPSBwMXg7XG4gICAgICByZXN1bHRbMV0gPSBib3R0b21MZWZ0QXk7XG4gICAgICByZXN1bHRbMl0gPSBwMng7XG4gICAgICByZXN1bHRbM10gPSB0b3BMZWZ0Qnk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vbm90IGxpbmUsIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICAvLyBsaW5lIGlzIGhvcml6b250YWxcbiAgZWxzZSBpZiAocDF5ID09PSBwMnkpIHtcbiAgICAgIGlmIChwMXggPiBwMngpIHtcbiAgICAgICAgcmVzdWx0WzBdID0gdG9wTGVmdEF4O1xuICAgICAgICByZXN1bHRbMV0gPSBwMXk7XG4gICAgICAgIHJlc3VsdFsyXSA9IHRvcFJpZ2h0Qng7XG4gICAgICAgIHJlc3VsdFszXSA9IHAyeTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChwMXggPCBwMngpIHtcbiAgICAgICAgcmVzdWx0WzBdID0gdG9wUmlnaHRBeDtcbiAgICAgICAgcmVzdWx0WzFdID0gcDF5O1xuICAgICAgICByZXN1bHRbMl0gPSB0b3BMZWZ0Qng7XG4gICAgICAgIHJlc3VsdFszXSA9IHAyeTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy9ub3QgdmFsaWQgbGluZSwgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vc2xvcGVzIG9mIHJlY3RBJ3MgYW5kIHJlY3RCJ3MgZGlhZ29uYWxzXG4gICAgICB2YXIgc2xvcGVBID0gcmVjdEEuaGVpZ2h0IC8gcmVjdEEud2lkdGg7XG4gICAgICB2YXIgc2xvcGVCID0gcmVjdEIuaGVpZ2h0IC8gcmVjdEIud2lkdGg7XG5cbiAgICAgIC8vc2xvcGUgb2YgbGluZSBiZXR3ZWVuIGNlbnRlciBvZiByZWN0QSBhbmQgY2VudGVyIG9mIHJlY3RCXG4gICAgICB2YXIgc2xvcGVQcmltZSA9IChwMnkgLSBwMXkpIC8gKHAyeCAtIHAxeCk7XG4gICAgICB2YXIgY2FyZGluYWxEaXJlY3Rpb25BID0gdm9pZCAwO1xuICAgICAgdmFyIGNhcmRpbmFsRGlyZWN0aW9uQiA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRBeCA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRBeSA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRCeCA9IHZvaWQgMDtcbiAgICAgIHZhciB0ZW1wUG9pbnRCeSA9IHZvaWQgMDtcblxuICAgICAgLy9kZXRlcm1pbmUgd2hldGhlciBjbGlwcGluZyBwb2ludCBpcyB0aGUgY29ybmVyIG9mIG5vZGVBXG4gICAgICBpZiAoLXNsb3BlQSA9PT0gc2xvcGVQcmltZSkge1xuICAgICAgICBpZiAocDF4ID4gcDJ4KSB7XG4gICAgICAgICAgcmVzdWx0WzBdID0gYm90dG9tTGVmdEF4O1xuICAgICAgICAgIHJlc3VsdFsxXSA9IGJvdHRvbUxlZnRBeTtcbiAgICAgICAgICBjbGlwUG9pbnRBRm91bmQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFswXSA9IHRvcFJpZ2h0QXg7XG4gICAgICAgICAgcmVzdWx0WzFdID0gdG9wTGVmdEF5O1xuICAgICAgICAgIGNsaXBQb2ludEFGb3VuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc2xvcGVBID09PSBzbG9wZVByaW1lKSB7XG4gICAgICAgIGlmIChwMXggPiBwMngpIHtcbiAgICAgICAgICByZXN1bHRbMF0gPSB0b3BMZWZ0QXg7XG4gICAgICAgICAgcmVzdWx0WzFdID0gdG9wTGVmdEF5O1xuICAgICAgICAgIGNsaXBQb2ludEFGb3VuZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0WzBdID0gYm90dG9tUmlnaHRBeDtcbiAgICAgICAgICByZXN1bHRbMV0gPSBib3R0b21MZWZ0QXk7XG4gICAgICAgICAgY2xpcFBvaW50QUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvL2RldGVybWluZSB3aGV0aGVyIGNsaXBwaW5nIHBvaW50IGlzIHRoZSBjb3JuZXIgb2Ygbm9kZUJcbiAgICAgIGlmICgtc2xvcGVCID09PSBzbG9wZVByaW1lKSB7XG4gICAgICAgIGlmIChwMnggPiBwMXgpIHtcbiAgICAgICAgICByZXN1bHRbMl0gPSBib3R0b21MZWZ0Qng7XG4gICAgICAgICAgcmVzdWx0WzNdID0gYm90dG9tTGVmdEJ5O1xuICAgICAgICAgIGNsaXBQb2ludEJGb3VuZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0WzJdID0gdG9wUmlnaHRCeDtcbiAgICAgICAgICByZXN1bHRbM10gPSB0b3BMZWZ0Qnk7XG4gICAgICAgICAgY2xpcFBvaW50QkZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzbG9wZUIgPT09IHNsb3BlUHJpbWUpIHtcbiAgICAgICAgaWYgKHAyeCA+IHAxeCkge1xuICAgICAgICAgIHJlc3VsdFsyXSA9IHRvcExlZnRCeDtcbiAgICAgICAgICByZXN1bHRbM10gPSB0b3BMZWZ0Qnk7XG4gICAgICAgICAgY2xpcFBvaW50QkZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRbMl0gPSBib3R0b21SaWdodEJ4O1xuICAgICAgICAgIHJlc3VsdFszXSA9IGJvdHRvbUxlZnRCeTtcbiAgICAgICAgICBjbGlwUG9pbnRCRm91bmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vaWYgYm90aCBjbGlwcGluZyBwb2ludHMgYXJlIGNvcm5lcnNcbiAgICAgIGlmIChjbGlwUG9pbnRBRm91bmQgJiYgY2xpcFBvaW50QkZvdW5kKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy9kZXRlcm1pbmUgQ2FyZGluYWwgRGlyZWN0aW9uIG9mIHJlY3RhbmdsZXNcbiAgICAgIGlmIChwMXggPiBwMngpIHtcbiAgICAgICAgaWYgKHAxeSA+IHAyeSkge1xuICAgICAgICAgIGNhcmRpbmFsRGlyZWN0aW9uQSA9IHRoaXMuZ2V0Q2FyZGluYWxEaXJlY3Rpb24oc2xvcGVBLCBzbG9wZVByaW1lLCA0KTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKHNsb3BlQiwgc2xvcGVQcmltZSwgMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FyZGluYWxEaXJlY3Rpb25BID0gdGhpcy5nZXRDYXJkaW5hbERpcmVjdGlvbigtc2xvcGVBLCBzbG9wZVByaW1lLCAzKTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKC1zbG9wZUIsIHNsb3BlUHJpbWUsIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocDF5ID4gcDJ5KSB7XG4gICAgICAgICAgY2FyZGluYWxEaXJlY3Rpb25BID0gdGhpcy5nZXRDYXJkaW5hbERpcmVjdGlvbigtc2xvcGVBLCBzbG9wZVByaW1lLCAxKTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKC1zbG9wZUIsIHNsb3BlUHJpbWUsIDMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhcmRpbmFsRGlyZWN0aW9uQSA9IHRoaXMuZ2V0Q2FyZGluYWxEaXJlY3Rpb24oc2xvcGVBLCBzbG9wZVByaW1lLCAyKTtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkIgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKHNsb3BlQiwgc2xvcGVQcmltZSwgNCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vY2FsY3VsYXRlIGNsaXBwaW5nIFBvaW50IGlmIGl0IGlzIG5vdCBmb3VuZCBiZWZvcmVcbiAgICAgIGlmICghY2xpcFBvaW50QUZvdW5kKSB7XG4gICAgICAgIHN3aXRjaCAoY2FyZGluYWxEaXJlY3Rpb25BKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdGVtcFBvaW50QXkgPSB0b3BMZWZ0QXk7XG4gICAgICAgICAgICB0ZW1wUG9pbnRBeCA9IHAxeCArIC1oYWxmSGVpZ2h0QSAvIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMF0gPSB0ZW1wUG9pbnRBeDtcbiAgICAgICAgICAgIHJlc3VsdFsxXSA9IHRlbXBQb2ludEF5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGVtcFBvaW50QXggPSBib3R0b21SaWdodEF4O1xuICAgICAgICAgICAgdGVtcFBvaW50QXkgPSBwMXkgKyBoYWxmV2lkdGhBICogc2xvcGVQcmltZTtcbiAgICAgICAgICAgIHJlc3VsdFswXSA9IHRlbXBQb2ludEF4O1xuICAgICAgICAgICAgcmVzdWx0WzFdID0gdGVtcFBvaW50QXk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICB0ZW1wUG9pbnRBeSA9IGJvdHRvbUxlZnRBeTtcbiAgICAgICAgICAgIHRlbXBQb2ludEF4ID0gcDF4ICsgaGFsZkhlaWdodEEgLyBzbG9wZVByaW1lO1xuICAgICAgICAgICAgcmVzdWx0WzBdID0gdGVtcFBvaW50QXg7XG4gICAgICAgICAgICByZXN1bHRbMV0gPSB0ZW1wUG9pbnRBeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHRlbXBQb2ludEF4ID0gYm90dG9tTGVmdEF4O1xuICAgICAgICAgICAgdGVtcFBvaW50QXkgPSBwMXkgKyAtaGFsZldpZHRoQSAqIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMF0gPSB0ZW1wUG9pbnRBeDtcbiAgICAgICAgICAgIHJlc3VsdFsxXSA9IHRlbXBQb2ludEF5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghY2xpcFBvaW50QkZvdW5kKSB7XG4gICAgICAgIHN3aXRjaCAoY2FyZGluYWxEaXJlY3Rpb25CKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdGVtcFBvaW50QnkgPSB0b3BMZWZ0Qnk7XG4gICAgICAgICAgICB0ZW1wUG9pbnRCeCA9IHAyeCArIC1oYWxmSGVpZ2h0QiAvIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMl0gPSB0ZW1wUG9pbnRCeDtcbiAgICAgICAgICAgIHJlc3VsdFszXSA9IHRlbXBQb2ludEJ5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGVtcFBvaW50QnggPSBib3R0b21SaWdodEJ4O1xuICAgICAgICAgICAgdGVtcFBvaW50QnkgPSBwMnkgKyBoYWxmV2lkdGhCICogc2xvcGVQcmltZTtcbiAgICAgICAgICAgIHJlc3VsdFsyXSA9IHRlbXBQb2ludEJ4O1xuICAgICAgICAgICAgcmVzdWx0WzNdID0gdGVtcFBvaW50Qnk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICB0ZW1wUG9pbnRCeSA9IGJvdHRvbUxlZnRCeTtcbiAgICAgICAgICAgIHRlbXBQb2ludEJ4ID0gcDJ4ICsgaGFsZkhlaWdodEIgLyBzbG9wZVByaW1lO1xuICAgICAgICAgICAgcmVzdWx0WzJdID0gdGVtcFBvaW50Qng7XG4gICAgICAgICAgICByZXN1bHRbM10gPSB0ZW1wUG9pbnRCeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHRlbXBQb2ludEJ4ID0gYm90dG9tTGVmdEJ4O1xuICAgICAgICAgICAgdGVtcFBvaW50QnkgPSBwMnkgKyAtaGFsZldpZHRoQiAqIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMl0gPSB0ZW1wUG9pbnRCeDtcbiAgICAgICAgICAgIHJlc3VsdFszXSA9IHRlbXBQb2ludEJ5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBpbiB3aGljaCBjYXJkaW5hbCBkaXJlY3Rpb24gZG9lcyBpbnB1dCBwb2ludCBzdGF5c1xuICogMTogTm9ydGhcbiAqIDI6IEVhc3RcbiAqIDM6IFNvdXRoXG4gKiA0OiBXZXN0XG4gKi9cbklHZW9tZXRyeS5nZXRDYXJkaW5hbERpcmVjdGlvbiA9IGZ1bmN0aW9uIChzbG9wZSwgc2xvcGVQcmltZSwgbGluZSkge1xuICBpZiAoc2xvcGUgPiBzbG9wZVByaW1lKSB7XG4gICAgcmV0dXJuIGxpbmU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDEgKyBsaW5lICUgNDtcbiAgfVxufTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBjYWxjdWxhdGVzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHR3byBsaW5lcyBkZWZpbmVkIGJ5XG4gKiBwb2ludCBwYWlycyAoczEsczIpIGFuZCAoZjEsZjIpLlxuICovXG5JR2VvbWV0cnkuZ2V0SW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHMxLCBzMiwgZjEsIGYyKSB7XG4gIGlmIChmMiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SW50ZXJzZWN0aW9uMihzMSwgczIsIGYxKTtcbiAgfVxuXG4gIHZhciB4MSA9IHMxLng7XG4gIHZhciB5MSA9IHMxLnk7XG4gIHZhciB4MiA9IHMyLng7XG4gIHZhciB5MiA9IHMyLnk7XG4gIHZhciB4MyA9IGYxLng7XG4gIHZhciB5MyA9IGYxLnk7XG4gIHZhciB4NCA9IGYyLng7XG4gIHZhciB5NCA9IGYyLnk7XG4gIHZhciB4ID0gdm9pZCAwLFxuICAgICAgeSA9IHZvaWQgMDsgLy8gaW50ZXJzZWN0aW9uIHBvaW50XG4gIHZhciBhMSA9IHZvaWQgMCxcbiAgICAgIGEyID0gdm9pZCAwLFxuICAgICAgYjEgPSB2b2lkIDAsXG4gICAgICBiMiA9IHZvaWQgMCxcbiAgICAgIGMxID0gdm9pZCAwLFxuICAgICAgYzIgPSB2b2lkIDA7IC8vIGNvZWZmaWNpZW50cyBvZiBsaW5lIGVxbnMuXG4gIHZhciBkZW5vbSA9IHZvaWQgMDtcblxuICBhMSA9IHkyIC0geTE7XG4gIGIxID0geDEgLSB4MjtcbiAgYzEgPSB4MiAqIHkxIC0geDEgKiB5MjsgLy8geyBhMSp4ICsgYjEqeSArIGMxID0gMCBpcyBsaW5lIDEgfVxuXG4gIGEyID0geTQgLSB5MztcbiAgYjIgPSB4MyAtIHg0O1xuICBjMiA9IHg0ICogeTMgLSB4MyAqIHk0OyAvLyB7IGEyKnggKyBiMip5ICsgYzIgPSAwIGlzIGxpbmUgMiB9XG5cbiAgZGVub20gPSBhMSAqIGIyIC0gYTIgKiBiMTtcblxuICBpZiAoZGVub20gPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHggPSAoYjEgKiBjMiAtIGIyICogYzEpIC8gZGVub207XG4gIHkgPSAoYTIgKiBjMSAtIGExICogYzIpIC8gZGVub207XG5cbiAgcmV0dXJuIG5ldyBQb2ludCh4LCB5KTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgZmluZHMgYW5kIHJldHVybnMgdGhlIGFuZ2xlIG9mIHRoZSB2ZWN0b3IgZnJvbSB0aGUgKyB4LWF4aXNcbiAqIGluIGNsb2Nrd2lzZSBkaXJlY3Rpb24gKGNvbXBhdGlibGUgdy8gSmF2YSBjb29yZGluYXRlIHN5c3RlbSEpLlxuICovXG5JR2VvbWV0cnkuYW5nbGVPZlZlY3RvciA9IGZ1bmN0aW9uIChDeCwgQ3ksIE54LCBOeSkge1xuICB2YXIgQ19hbmdsZSA9IHZvaWQgMDtcblxuICBpZiAoQ3ggIT09IE54KSB7XG4gICAgQ19hbmdsZSA9IE1hdGguYXRhbigoTnkgLSBDeSkgLyAoTnggLSBDeCkpO1xuXG4gICAgaWYgKE54IDwgQ3gpIHtcbiAgICAgIENfYW5nbGUgKz0gTWF0aC5QSTtcbiAgICB9IGVsc2UgaWYgKE55IDwgQ3kpIHtcbiAgICAgIENfYW5nbGUgKz0gdGhpcy5UV09fUEk7XG4gICAgfVxuICB9IGVsc2UgaWYgKE55IDwgQ3kpIHtcbiAgICBDX2FuZ2xlID0gdGhpcy5PTkVfQU5EX0hBTEZfUEk7IC8vIDI3MCBkZWdyZWVzXG4gIH0gZWxzZSB7XG4gICAgQ19hbmdsZSA9IHRoaXMuSEFMRl9QSTsgLy8gOTAgZGVncmVlc1xuICB9XG5cbiAgcmV0dXJuIENfYW5nbGU7XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGNoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiB0d28gbGluZSBzZWdtZW50cyAob25lIHdpdGggcG9pbnRcbiAqIHAxIGFuZCBwMiwgdGhlIG90aGVyIHdpdGggcG9pbnQgcDMgYW5kIHA0KSBpbnRlcnNlY3QgYXQgYSBwb2ludCBvdGhlclxuICogdGhhbiB0aGVzZSBwb2ludHMuXG4gKi9cbklHZW9tZXRyeS5kb0ludGVyc2VjdCA9IGZ1bmN0aW9uIChwMSwgcDIsIHAzLCBwNCkge1xuICB2YXIgYSA9IHAxLng7XG4gIHZhciBiID0gcDEueTtcbiAgdmFyIGMgPSBwMi54O1xuICB2YXIgZCA9IHAyLnk7XG4gIHZhciBwID0gcDMueDtcbiAgdmFyIHEgPSBwMy55O1xuICB2YXIgciA9IHA0Lng7XG4gIHZhciBzID0gcDQueTtcbiAgdmFyIGRldCA9IChjIC0gYSkgKiAocyAtIHEpIC0gKHIgLSBwKSAqIChkIC0gYik7XG5cbiAgaWYgKGRldCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbGFtYmRhID0gKChzIC0gcSkgKiAociAtIGEpICsgKHAgLSByKSAqIChzIC0gYikpIC8gZGV0O1xuICAgIHZhciBnYW1tYSA9ICgoYiAtIGQpICogKHIgLSBhKSArIChjIC0gYSkgKiAocyAtIGIpKSAvIGRldDtcbiAgICByZXR1cm4gMCA8IGxhbWJkYSAmJiBsYW1iZGEgPCAxICYmIDAgPCBnYW1tYSAmJiBnYW1tYSA8IDE7XG4gIH1cbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBDbGFzcyBDb25zdGFudHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKipcbiAqIFNvbWUgdXNlZnVsIHByZS1jYWxjdWxhdGVkIGNvbnN0YW50c1xuICovXG5JR2VvbWV0cnkuSEFMRl9QSSA9IDAuNSAqIE1hdGguUEk7XG5JR2VvbWV0cnkuT05FX0FORF9IQUxGX1BJID0gMS41ICogTWF0aC5QSTtcbklHZW9tZXRyeS5UV09fUEkgPSAyLjAgKiBNYXRoLlBJO1xuSUdlb21ldHJ5LlRIUkVFX1BJID0gMy4wICogTWF0aC5QSTtcblxubW9kdWxlLmV4cG9ydHMgPSBJR2VvbWV0cnk7XG5cbi8qKiovIH0pLFxuLyogOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBJTWF0aCgpIHt9XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2lnbiBvZiB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbklNYXRoLnNpZ24gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKHZhbHVlID4gMCkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2UgaWYgKHZhbHVlIDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufTtcblxuSU1hdGguZmxvb3IgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIDwgMCA/IE1hdGguY2VpbCh2YWx1ZSkgOiBNYXRoLmZsb29yKHZhbHVlKTtcbn07XG5cbklNYXRoLmNlaWwgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIDwgMCA/IE1hdGguZmxvb3IodmFsdWUpIDogTWF0aC5jZWlsKHZhbHVlKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSU1hdGg7XG5cbi8qKiovIH0pLFxuLyogMTAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gSW50ZWdlcigpIHt9XG5cbkludGVnZXIuTUFYX1ZBTFVFID0gMjE0NzQ4MzY0NztcbkludGVnZXIuTUlOX1ZBTFVFID0gLTIxNDc0ODM2NDg7XG5cbm1vZHVsZS5leHBvcnRzID0gSW50ZWdlcjtcblxuLyoqKi8gfSksXG4vKiAxMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgbm9kZUZyb20gPSBmdW5jdGlvbiBub2RlRnJvbSh2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIG5leHQ6IG51bGwsIHByZXY6IG51bGwgfTtcbn07XG5cbnZhciBhZGQgPSBmdW5jdGlvbiBhZGQocHJldiwgbm9kZSwgbmV4dCwgbGlzdCkge1xuICBpZiAocHJldiAhPT0gbnVsbCkge1xuICAgIHByZXYubmV4dCA9IG5vZGU7XG4gIH0gZWxzZSB7XG4gICAgbGlzdC5oZWFkID0gbm9kZTtcbiAgfVxuXG4gIGlmIChuZXh0ICE9PSBudWxsKSB7XG4gICAgbmV4dC5wcmV2ID0gbm9kZTtcbiAgfSBlbHNlIHtcbiAgICBsaXN0LnRhaWwgPSBub2RlO1xuICB9XG5cbiAgbm9kZS5wcmV2ID0gcHJldjtcbiAgbm9kZS5uZXh0ID0gbmV4dDtcblxuICBsaXN0Lmxlbmd0aCsrO1xuXG4gIHJldHVybiBub2RlO1xufTtcblxudmFyIF9yZW1vdmUgPSBmdW5jdGlvbiBfcmVtb3ZlKG5vZGUsIGxpc3QpIHtcbiAgdmFyIHByZXYgPSBub2RlLnByZXYsXG4gICAgICBuZXh0ID0gbm9kZS5uZXh0O1xuXG5cbiAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICBwcmV2Lm5leHQgPSBuZXh0O1xuICB9IGVsc2Uge1xuICAgIGxpc3QuaGVhZCA9IG5leHQ7XG4gIH1cblxuICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgIG5leHQucHJldiA9IHByZXY7XG4gIH0gZWxzZSB7XG4gICAgbGlzdC50YWlsID0gcHJldjtcbiAgfVxuXG4gIG5vZGUucHJldiA9IG5vZGUubmV4dCA9IG51bGw7XG5cbiAgbGlzdC5sZW5ndGgtLTtcblxuICByZXR1cm4gbm9kZTtcbn07XG5cbnZhciBMaW5rZWRMaXN0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMaW5rZWRMaXN0KHZhbHMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExpbmtlZExpc3QpO1xuXG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgdGhpcy50YWlsID0gbnVsbDtcblxuICAgIGlmICh2YWxzICE9IG51bGwpIHtcbiAgICAgIHZhbHMuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gX3RoaXMucHVzaCh2KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMaW5rZWRMaXN0LCBbe1xuICAgIGtleTogXCJzaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sZW5ndGg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluc2VydEJlZm9yZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnNlcnRCZWZvcmUodmFsLCBvdGhlck5vZGUpIHtcbiAgICAgIHJldHVybiBhZGQob3RoZXJOb2RlLnByZXYsIG5vZGVGcm9tKHZhbCksIG90aGVyTm9kZSwgdGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluc2VydEFmdGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluc2VydEFmdGVyKHZhbCwgb3RoZXJOb2RlKSB7XG4gICAgICByZXR1cm4gYWRkKG90aGVyTm9kZSwgbm9kZUZyb20odmFsKSwgb3RoZXJOb2RlLm5leHQsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbnNlcnROb2RlQmVmb3JlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluc2VydE5vZGVCZWZvcmUobmV3Tm9kZSwgb3RoZXJOb2RlKSB7XG4gICAgICByZXR1cm4gYWRkKG90aGVyTm9kZS5wcmV2LCBuZXdOb2RlLCBvdGhlck5vZGUsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbnNlcnROb2RlQWZ0ZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5zZXJ0Tm9kZUFmdGVyKG5ld05vZGUsIG90aGVyTm9kZSkge1xuICAgICAgcmV0dXJuIGFkZChvdGhlck5vZGUsIG5ld05vZGUsIG90aGVyTm9kZS5uZXh0LCB0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHVzaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXNoKHZhbCkge1xuICAgICAgcmV0dXJuIGFkZCh0aGlzLnRhaWwsIG5vZGVGcm9tKHZhbCksIG51bGwsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnNoaWZ0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuc2hpZnQodmFsKSB7XG4gICAgICByZXR1cm4gYWRkKG51bGwsIG5vZGVGcm9tKHZhbCksIHRoaXMuaGVhZCwgdGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmUobm9kZSkge1xuICAgICAgcmV0dXJuIF9yZW1vdmUobm9kZSwgdGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBvcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3AoKSB7XG4gICAgICByZXR1cm4gX3JlbW92ZSh0aGlzLnRhaWwsIHRoaXMpLnZhbHVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3BOb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBvcE5vZGUoKSB7XG4gICAgICByZXR1cm4gX3JlbW92ZSh0aGlzLnRhaWwsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzaGlmdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICAgIHJldHVybiBfcmVtb3ZlKHRoaXMuaGVhZCwgdGhpcykudmFsdWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNoaWZ0Tm9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdE5vZGUoKSB7XG4gICAgICByZXR1cm4gX3JlbW92ZSh0aGlzLmhlYWQsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRfb2JqZWN0X2F0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldF9vYmplY3RfYXQoaW5kZXgpIHtcbiAgICAgIGlmIChpbmRleCA8PSB0aGlzLmxlbmd0aCgpKSB7XG4gICAgICAgIHZhciBpID0gMTtcbiAgICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmhlYWQ7XG4gICAgICAgIHdoaWxlIChpIDwgaW5kZXgpIHtcbiAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0X29iamVjdF9hdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRfb2JqZWN0X2F0KGluZGV4LCB2YWx1ZSkge1xuICAgICAgaWYgKGluZGV4IDw9IHRoaXMubGVuZ3RoKCkpIHtcbiAgICAgICAgdmFyIGkgPSAxO1xuICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMuaGVhZDtcbiAgICAgICAgd2hpbGUgKGkgPCBpbmRleCkge1xuICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGlua2VkTGlzdDtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRMaXN0O1xuXG4vKioqLyB9KSxcbi8qIDEyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qXHJcbiAqVGhpcyBjbGFzcyBpcyB0aGUgamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9pbnQuamF2YSBjbGFzcyBpbiBqZGtcclxuICovXG5mdW5jdGlvbiBQb2ludCh4LCB5LCBwKSB7XG4gIHRoaXMueCA9IG51bGw7XG4gIHRoaXMueSA9IG51bGw7XG4gIGlmICh4ID09IG51bGwgJiYgeSA9PSBudWxsICYmIHAgPT0gbnVsbCkge1xuICAgIHRoaXMueCA9IDA7XG4gICAgdGhpcy55ID0gMDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PSAnbnVtYmVyJyAmJiB0eXBlb2YgeSA9PSAnbnVtYmVyJyAmJiBwID09IG51bGwpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH0gZWxzZSBpZiAoeC5jb25zdHJ1Y3Rvci5uYW1lID09ICdQb2ludCcgJiYgeSA9PSBudWxsICYmIHAgPT0gbnVsbCkge1xuICAgIHAgPSB4O1xuICAgIHRoaXMueCA9IHAueDtcbiAgICB0aGlzLnkgPSBwLnk7XG4gIH1cbn1cblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLng7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRMb2NhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLngsIHRoaXMueSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuc2V0TG9jYXRpb24gPSBmdW5jdGlvbiAoeCwgeSwgcCkge1xuICBpZiAoeC5jb25zdHJ1Y3Rvci5uYW1lID09ICdQb2ludCcgJiYgeSA9PSBudWxsICYmIHAgPT0gbnVsbCkge1xuICAgIHAgPSB4O1xuICAgIHRoaXMuc2V0TG9jYXRpb24ocC54LCBwLnkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB4ID09ICdudW1iZXInICYmIHR5cGVvZiB5ID09ICdudW1iZXInICYmIHAgPT0gbnVsbCkge1xuICAgIC8vaWYgYm90aCBwYXJhbWV0ZXJzIGFyZSBpbnRlZ2VyIGp1c3QgbW92ZSAoeCx5KSBsb2NhdGlvblxuICAgIGlmIChwYXJzZUludCh4KSA9PSB4ICYmIHBhcnNlSW50KHkpID09IHkpIHtcbiAgICAgIHRoaXMubW92ZSh4LCB5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy54ID0gTWF0aC5mbG9vcih4ICsgMC41KTtcbiAgICAgIHRoaXMueSA9IE1hdGguZmxvb3IoeSArIDAuNSk7XG4gICAgfVxuICB9XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubW92ZSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gIHRoaXMueCA9IHg7XG4gIHRoaXMueSA9IHk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKGR4LCBkeSkge1xuICB0aGlzLnggKz0gZHg7XG4gIHRoaXMueSArPSBkeTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGlmIChvYmouY29uc3RydWN0b3IubmFtZSA9PSBcIlBvaW50XCIpIHtcbiAgICB2YXIgcHQgPSBvYmo7XG4gICAgcmV0dXJuIHRoaXMueCA9PSBwdC54ICYmIHRoaXMueSA9PSBwdC55O1xuICB9XG4gIHJldHVybiB0aGlzID09IG9iajtcbn07XG5cblBvaW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCgpLmNvbnN0cnVjdG9yLm5hbWUgKyBcIlt4PVwiICsgdGhpcy54ICsgXCIseT1cIiArIHRoaXMueSArIFwiXVwiO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb2ludDtcblxuLyoqKi8gfSksXG4vKiAxMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBSZWN0YW5nbGVEKHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgdGhpcy54ID0gMDtcbiAgdGhpcy55ID0gMDtcbiAgdGhpcy53aWR0aCA9IDA7XG4gIHRoaXMuaGVpZ2h0ID0gMDtcblxuICBpZiAoeCAhPSBudWxsICYmIHkgIT0gbnVsbCAmJiB3aWR0aCAhPSBudWxsICYmIGhlaWdodCAhPSBudWxsKSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxufVxuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy54O1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gIHRoaXMueCA9IHg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy55O1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuc2V0WSA9IGZ1bmN0aW9uICh5KSB7XG4gIHRoaXMueSA9IHk7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMud2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5zZXRXaWR0aCA9IGZ1bmN0aW9uICh3aWR0aCkge1xuICB0aGlzLndpZHRoID0gd2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmhlaWdodDtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uIChoZWlnaHQpIHtcbiAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRSaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueCArIHRoaXMud2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRCb3R0b20gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnkgKyB0aGlzLmhlaWdodDtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmludGVyc2VjdHMgPSBmdW5jdGlvbiAoYSkge1xuICBpZiAodGhpcy5nZXRSaWdodCgpIDwgYS54KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHRoaXMuZ2V0Qm90dG9tKCkgPCBhLnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYS5nZXRSaWdodCgpIDwgdGhpcy54KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGEuZ2V0Qm90dG9tKCkgPCB0aGlzLnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldENlbnRlclggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnggKyB0aGlzLndpZHRoIC8gMjtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldE1pblggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKTtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldE1heFggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKSArIHRoaXMud2lkdGg7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRDZW50ZXJZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy55ICsgdGhpcy5oZWlnaHQgLyAyO1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0TWluWSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WSgpO1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0TWF4WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WSgpICsgdGhpcy5oZWlnaHQ7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRXaWR0aEhhbGYgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLndpZHRoIC8gMjtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldEhlaWdodEhhbGYgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmhlaWdodCAvIDI7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlY3RhbmdsZUQ7XG5cbi8qKiovIH0pLFxuLyogMTQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5mdW5jdGlvbiBVbmlxdWVJREdlbmVyZXRvcigpIHt9XG5cblVuaXF1ZUlER2VuZXJldG9yLmxhc3RJRCA9IDA7XG5cblVuaXF1ZUlER2VuZXJldG9yLmNyZWF0ZUlEID0gZnVuY3Rpb24gKG9iaikge1xuICBpZiAoVW5pcXVlSURHZW5lcmV0b3IuaXNQcmltaXRpdmUob2JqKSkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cbiAgaWYgKG9iai51bmlxdWVJRCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIG9iai51bmlxdWVJRDtcbiAgfVxuICBvYmoudW5pcXVlSUQgPSBVbmlxdWVJREdlbmVyZXRvci5nZXRTdHJpbmcoKTtcbiAgVW5pcXVlSURHZW5lcmV0b3IubGFzdElEKys7XG4gIHJldHVybiBvYmoudW5pcXVlSUQ7XG59O1xuXG5VbmlxdWVJREdlbmVyZXRvci5nZXRTdHJpbmcgPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWYgKGlkID09IG51bGwpIGlkID0gVW5pcXVlSURHZW5lcmV0b3IubGFzdElEO1xuICByZXR1cm4gXCJPYmplY3QjXCIgKyBpZCArIFwiXCI7XG59O1xuXG5VbmlxdWVJREdlbmVyZXRvci5pc1ByaW1pdGl2ZSA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgYXJnID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoYXJnKTtcbiAgcmV0dXJuIGFyZyA9PSBudWxsIHx8IHR5cGUgIT0gXCJvYmplY3RcIiAmJiB0eXBlICE9IFwiZnVuY3Rpb25cIjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVW5pcXVlSURHZW5lcmV0b3I7XG5cbi8qKiovIH0pLFxuLyogMTUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSBlbHNlIHsgcmV0dXJuIEFycmF5LmZyb20oYXJyKTsgfSB9XG5cbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIExHcmFwaE1hbmFnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xudmFyIExOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbnZhciBMRWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG52YXIgTEdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbnZhciBQb2ludEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIFRyYW5zZm9ybSA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xudmFyIEVtaXR0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblxuZnVuY3Rpb24gTGF5b3V0KGlzUmVtb3RlVXNlKSB7XG4gIEVtaXR0ZXIuY2FsbCh0aGlzKTtcblxuICAvL0xheW91dCBRdWFsaXR5OiAwOmRyYWZ0LCAxOmRlZmF1bHQsIDI6cHJvb2ZcbiAgdGhpcy5sYXlvdXRRdWFsaXR5ID0gTGF5b3V0Q29uc3RhbnRzLlFVQUxJVFk7XG4gIC8vV2hldGhlciBsYXlvdXQgc2hvdWxkIGNyZWF0ZSBiZW5kcG9pbnRzIGFzIG5lZWRlZCBvciBub3RcbiAgdGhpcy5jcmVhdGVCZW5kc0FzTmVlZGVkID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ1JFQVRFX0JFTkRTX0FTX05FRURFRDtcbiAgLy9XaGV0aGVyIGxheW91dCBzaG91bGQgYmUgaW5jcmVtZW50YWwgb3Igbm90XG4gIHRoaXMuaW5jcmVtZW50YWwgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9JTkNSRU1FTlRBTDtcbiAgLy9XaGV0aGVyIHdlIGFuaW1hdGUgZnJvbSBiZWZvcmUgdG8gYWZ0ZXIgbGF5b3V0IG5vZGUgcG9zaXRpb25zXG4gIHRoaXMuYW5pbWF0aW9uT25MYXlvdXQgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fT05fTEFZT1VUO1xuICAvL1doZXRoZXIgd2UgYW5pbWF0ZSB0aGUgbGF5b3V0IHByb2Nlc3Mgb3Igbm90XG4gIHRoaXMuYW5pbWF0aW9uRHVyaW5nTGF5b3V0ID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX0RVUklOR19MQVlPVVQ7XG4gIC8vTnVtYmVyIGl0ZXJhdGlvbnMgdGhhdCBzaG91bGQgYmUgZG9uZSBiZXR3ZWVuIHR3byBzdWNjZXNzaXZlIGFuaW1hdGlvbnNcbiAgdGhpcy5hbmltYXRpb25QZXJpb2QgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fUEVSSU9EO1xuICAvKipcclxuICAgKiBXaGV0aGVyIG9yIG5vdCBsZWFmIG5vZGVzIChub24tY29tcG91bmQgbm9kZXMpIGFyZSBvZiB1bmlmb3JtIHNpemVzLiBXaGVuXHJcbiAgICogdGhleSBhcmUsIGJvdGggc3ByaW5nIGFuZCByZXB1bHNpb24gZm9yY2VzIGJldHdlZW4gdHdvIGxlYWYgbm9kZXMgY2FuIGJlXHJcbiAgICogY2FsY3VsYXRlZCB3aXRob3V0IHRoZSBleHBlbnNpdmUgY2xpcHBpbmcgcG9pbnQgY2FsY3VsYXRpb25zLCByZXN1bHRpbmdcclxuICAgKiBpbiBtYWpvciBzcGVlZC11cC5cclxuICAgKi9cbiAgdGhpcy51bmlmb3JtTGVhZk5vZGVTaXplcyA9IExheW91dENvbnN0YW50cy5ERUZBVUxUX1VOSUZPUk1fTEVBRl9OT0RFX1NJWkVTO1xuICAvKipcclxuICAgKiBUaGlzIGlzIHVzZWQgZm9yIGNyZWF0aW9uIG9mIGJlbmRwb2ludHMgYnkgdXNpbmcgZHVtbXkgbm9kZXMgYW5kIGVkZ2VzLlxyXG4gICAqIE1hcHMgYW4gTEVkZ2UgdG8gaXRzIGR1bW15IGJlbmRwb2ludCBwYXRoLlxyXG4gICAqL1xuICB0aGlzLmVkZ2VUb0R1bW15Tm9kZXMgPSBuZXcgTWFwKCk7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyID0gbmV3IExHcmFwaE1hbmFnZXIodGhpcyk7XG4gIHRoaXMuaXNMYXlvdXRGaW5pc2hlZCA9IGZhbHNlO1xuICB0aGlzLmlzU3ViTGF5b3V0ID0gZmFsc2U7XG4gIHRoaXMuaXNSZW1vdGVVc2UgPSBmYWxzZTtcblxuICBpZiAoaXNSZW1vdGVVc2UgIT0gbnVsbCkge1xuICAgIHRoaXMuaXNSZW1vdGVVc2UgPSBpc1JlbW90ZVVzZTtcbiAgfVxufVxuXG5MYXlvdXQuUkFORE9NX1NFRUQgPSAxO1xuXG5MYXlvdXQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFbWl0dGVyLnByb3RvdHlwZSk7XG5cbkxheW91dC5wcm90b3R5cGUuZ2V0R3JhcGhNYW5hZ2VyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXI7XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLmdldEFsbE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0QWxsTm9kZXMoKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUuZ2V0QWxsRWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdyYXBoTWFuYWdlci5nZXRBbGxFZGdlcygpO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5nZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uKCk7XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLm5ld0dyYXBoTWFuYWdlciA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGdtID0gbmV3IExHcmFwaE1hbmFnZXIodGhpcyk7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyID0gZ207XG4gIHJldHVybiBnbTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUubmV3R3JhcGggPSBmdW5jdGlvbiAodkdyYXBoKSB7XG4gIHJldHVybiBuZXcgTEdyYXBoKG51bGwsIHRoaXMuZ3JhcGhNYW5hZ2VyLCB2R3JhcGgpO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5uZXdOb2RlID0gZnVuY3Rpb24gKHZOb2RlKSB7XG4gIHJldHVybiBuZXcgTE5vZGUodGhpcy5ncmFwaE1hbmFnZXIsIHZOb2RlKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUubmV3RWRnZSA9IGZ1bmN0aW9uICh2RWRnZSkge1xuICByZXR1cm4gbmV3IExFZGdlKG51bGwsIG51bGwsIHZFZGdlKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUuY2hlY2tMYXlvdXRTdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpID09IG51bGwgfHwgdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpLmdldE5vZGVzKCkubGVuZ3RoID09IDAgfHwgdGhpcy5ncmFwaE1hbmFnZXIuaW5jbHVkZXNJbnZhbGlkRWRnZSgpO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5ydW5MYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaXNMYXlvdXRGaW5pc2hlZCA9IGZhbHNlO1xuXG4gIGlmICh0aGlzLnRpbGluZ1ByZUxheW91dCkge1xuICAgIHRoaXMudGlsaW5nUHJlTGF5b3V0KCk7XG4gIH1cblxuICB0aGlzLmluaXRQYXJhbWV0ZXJzKCk7XG4gIHZhciBpc0xheW91dFN1Y2Nlc3NmdWxsO1xuXG4gIGlmICh0aGlzLmNoZWNrTGF5b3V0U3VjY2VzcygpKSB7XG4gICAgaXNMYXlvdXRTdWNjZXNzZnVsbCA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIGlzTGF5b3V0U3VjY2Vzc2Z1bGwgPSB0aGlzLmxheW91dCgpO1xuICB9XG5cbiAgaWYgKExheW91dENvbnN0YW50cy5BTklNQVRFID09PSAnZHVyaW5nJykge1xuICAgIC8vIElmIHRoaXMgaXMgYSAnZHVyaW5nJyBsYXlvdXQgYW5pbWF0aW9uLiBMYXlvdXQgaXMgbm90IGZpbmlzaGVkIHlldC4gXG4gICAgLy8gV2UgbmVlZCB0byBwZXJmb3JtIHRoZXNlIGluIGluZGV4LmpzIHdoZW4gbGF5b3V0IGlzIHJlYWxseSBmaW5pc2hlZC5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNMYXlvdXRTdWNjZXNzZnVsbCkge1xuICAgIGlmICghdGhpcy5pc1N1YkxheW91dCkge1xuICAgICAgdGhpcy5kb1Bvc3RMYXlvdXQoKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy50aWxpbmdQb3N0TGF5b3V0KSB7XG4gICAgdGhpcy50aWxpbmdQb3N0TGF5b3V0KCk7XG4gIH1cblxuICB0aGlzLmlzTGF5b3V0RmluaXNoZWQgPSB0cnVlO1xuXG4gIHJldHVybiBpc0xheW91dFN1Y2Nlc3NmdWxsO1xufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIHRoZSBvcGVyYXRpb25zIHJlcXVpcmVkIGFmdGVyIGxheW91dC5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLmRvUG9zdExheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgLy9hc3NlcnQgIWlzU3ViTGF5b3V0IDogXCJTaG91bGQgbm90IGJlIGNhbGxlZCBvbiBzdWItbGF5b3V0IVwiO1xuICAvLyBQcm9wYWdhdGUgZ2VvbWV0cmljIGNoYW5nZXMgdG8gdi1sZXZlbCBvYmplY3RzXG4gIGlmICghdGhpcy5pbmNyZW1lbnRhbCkge1xuICAgIHRoaXMudHJhbnNmb3JtKCk7XG4gIH1cbiAgdGhpcy51cGRhdGUoKTtcbn07XG5cbi8qKlxyXG4gKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBnZW9tZXRyeSBvZiB0aGUgdGFyZ2V0IGdyYXBoIGFjY29yZGluZyB0b1xyXG4gKiBjYWxjdWxhdGVkIGxheW91dC5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLnVwZGF0ZTIgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIHVwZGF0ZSBiZW5kIHBvaW50c1xuICBpZiAodGhpcy5jcmVhdGVCZW5kc0FzTmVlZGVkKSB7XG4gICAgdGhpcy5jcmVhdGVCZW5kcG9pbnRzRnJvbUR1bW15Tm9kZXMoKTtcblxuICAgIC8vIHJlc2V0IGFsbCBlZGdlcywgc2luY2UgdGhlIHRvcG9sb2d5IGhhcyBjaGFuZ2VkXG4gICAgdGhpcy5ncmFwaE1hbmFnZXIucmVzZXRBbGxFZGdlcygpO1xuICB9XG5cbiAgLy8gcGVyZm9ybSBlZGdlLCBub2RlIGFuZCByb290IHVwZGF0ZXMgaWYgbGF5b3V0IGlzIG5vdCBjYWxsZWRcbiAgLy8gcmVtb3RlbHlcbiAgaWYgKCF0aGlzLmlzUmVtb3RlVXNlKSB7XG4gICAgLy8gdXBkYXRlIGFsbCBlZGdlc1xuICAgIHZhciBlZGdlO1xuICAgIHZhciBhbGxFZGdlcyA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbEVkZ2VzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgZWRnZSA9IGFsbEVkZ2VzW2ldO1xuICAgICAgLy8gICAgICB0aGlzLnVwZGF0ZShlZGdlKTtcbiAgICB9XG5cbiAgICAvLyByZWN1cnNpdmVseSB1cGRhdGUgbm9kZXNcbiAgICB2YXIgbm9kZTtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuZ2V0Tm9kZXMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAvLyAgICAgIHRoaXMudXBkYXRlKG5vZGUpO1xuICAgIH1cblxuICAgIC8vIHVwZGF0ZSByb290IGdyYXBoXG4gICAgdGhpcy51cGRhdGUodGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpKTtcbiAgfVxufTtcblxuTGF5b3V0LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGlmIChvYmogPT0gbnVsbCkge1xuICAgIHRoaXMudXBkYXRlMigpO1xuICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIExOb2RlKSB7XG4gICAgdmFyIG5vZGUgPSBvYmo7XG4gICAgaWYgKG5vZGUuZ2V0Q2hpbGQoKSAhPSBudWxsKSB7XG4gICAgICAvLyBzaW5jZSBub2RlIGlzIGNvbXBvdW5kLCByZWN1cnNpdmVseSB1cGRhdGUgY2hpbGQgbm9kZXNcbiAgICAgIHZhciBub2RlcyA9IG5vZGUuZ2V0Q2hpbGQoKS5nZXROb2RlcygpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB1cGRhdGUobm9kZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIHRoZSBsLWxldmVsIG5vZGUgaXMgYXNzb2NpYXRlZCB3aXRoIGEgdi1sZXZlbCBncmFwaCBvYmplY3QsXG4gICAgLy8gdGhlbiBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHYtbGV2ZWwgbm9kZSBpbXBsZW1lbnRzIHRoZVxuICAgIC8vIGludGVyZmFjZSBVcGRhdGFibGUuXG4gICAgaWYgKG5vZGUudkdyYXBoT2JqZWN0ICE9IG51bGwpIHtcbiAgICAgIC8vIGNhc3QgdG8gVXBkYXRhYmxlIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tcbiAgICAgIHZhciB2Tm9kZSA9IG5vZGUudkdyYXBoT2JqZWN0O1xuXG4gICAgICAvLyBjYWxsIHRoZSB1cGRhdGUgbWV0aG9kIG9mIHRoZSBpbnRlcmZhY2VcbiAgICAgIHZOb2RlLnVwZGF0ZShub2RlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgTEVkZ2UpIHtcbiAgICB2YXIgZWRnZSA9IG9iajtcbiAgICAvLyBpZiB0aGUgbC1sZXZlbCBlZGdlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHYtbGV2ZWwgZ3JhcGggb2JqZWN0LFxuICAgIC8vIHRoZW4gaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB2LWxldmVsIGVkZ2UgaW1wbGVtZW50cyB0aGVcbiAgICAvLyBpbnRlcmZhY2UgVXBkYXRhYmxlLlxuXG4gICAgaWYgKGVkZ2UudkdyYXBoT2JqZWN0ICE9IG51bGwpIHtcbiAgICAgIC8vIGNhc3QgdG8gVXBkYXRhYmxlIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tcbiAgICAgIHZhciB2RWRnZSA9IGVkZ2UudkdyYXBoT2JqZWN0O1xuXG4gICAgICAvLyBjYWxsIHRoZSB1cGRhdGUgbWV0aG9kIG9mIHRoZSBpbnRlcmZhY2VcbiAgICAgIHZFZGdlLnVwZGF0ZShlZGdlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgTEdyYXBoKSB7XG4gICAgdmFyIGdyYXBoID0gb2JqO1xuICAgIC8vIGlmIHRoZSBsLWxldmVsIGdyYXBoIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHYtbGV2ZWwgZ3JhcGggb2JqZWN0LFxuICAgIC8vIHRoZW4gaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB2LWxldmVsIG9iamVjdCBpbXBsZW1lbnRzIHRoZVxuICAgIC8vIGludGVyZmFjZSBVcGRhdGFibGUuXG5cbiAgICBpZiAoZ3JhcGgudkdyYXBoT2JqZWN0ICE9IG51bGwpIHtcbiAgICAgIC8vIGNhc3QgdG8gVXBkYXRhYmxlIHdpdGhvdXQgYW55IHR5cGUgY2hlY2tcbiAgICAgIHZhciB2R3JhcGggPSBncmFwaC52R3JhcGhPYmplY3Q7XG5cbiAgICAgIC8vIGNhbGwgdGhlIHVwZGF0ZSBtZXRob2Qgb2YgdGhlIGludGVyZmFjZVxuICAgICAgdkdyYXBoLnVwZGF0ZShncmFwaCk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcclxuICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBzZXQgYWxsIGxheW91dCBwYXJhbWV0ZXJzIHRvIGRlZmF1bHQgdmFsdWVzXHJcbiAqIGRldGVybWluZWQgYXQgY29tcGlsZSB0aW1lLlxyXG4gKi9cbkxheW91dC5wcm90b3R5cGUuaW5pdFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5pc1N1YkxheW91dCkge1xuICAgIHRoaXMubGF5b3V0UXVhbGl0eSA9IExheW91dENvbnN0YW50cy5RVUFMSVRZO1xuICAgIHRoaXMuYW5pbWF0aW9uRHVyaW5nTGF5b3V0ID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX0RVUklOR19MQVlPVVQ7XG4gICAgdGhpcy5hbmltYXRpb25QZXJpb2QgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fUEVSSU9EO1xuICAgIHRoaXMuYW5pbWF0aW9uT25MYXlvdXQgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9BTklNQVRJT05fT05fTEFZT1VUO1xuICAgIHRoaXMuaW5jcmVtZW50YWwgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9JTkNSRU1FTlRBTDtcbiAgICB0aGlzLmNyZWF0ZUJlbmRzQXNOZWVkZWQgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DUkVBVEVfQkVORFNfQVNfTkVFREVEO1xuICAgIHRoaXMudW5pZm9ybUxlYWZOb2RlU2l6ZXMgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9VTklGT1JNX0xFQUZfTk9ERV9TSVpFUztcbiAgfVxuXG4gIGlmICh0aGlzLmFuaW1hdGlvbkR1cmluZ0xheW91dCkge1xuICAgIHRoaXMuYW5pbWF0aW9uT25MYXlvdXQgPSBmYWxzZTtcbiAgfVxufTtcblxuTGF5b3V0LnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiAobmV3TGVmdFRvcCkge1xuICBpZiAobmV3TGVmdFRvcCA9PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnRyYW5zZm9ybShuZXcgUG9pbnREKDAsIDApKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBjcmVhdGUgYSB0cmFuc2Zvcm1hdGlvbiBvYmplY3QgKGZyb20gRWNsaXBzZSB0byBsYXlvdXQpLiBXaGVuIGFuXG4gICAgLy8gaW52ZXJzZSB0cmFuc2Zvcm0gaXMgYXBwbGllZCwgd2UgZ2V0IHVwcGVyLWxlZnQgY29vcmRpbmF0ZSBvZiB0aGVcbiAgICAvLyBkcmF3aW5nIG9yIHRoZSByb290IGdyYXBoIGF0IGdpdmVuIGlucHV0IGNvb3JkaW5hdGUgKHNvbWUgbWFyZ2luc1xuICAgIC8vIGFscmVhZHkgaW5jbHVkZWQgaW4gY2FsY3VsYXRpb24gb2YgbGVmdC10b3ApLlxuXG4gICAgdmFyIHRyYW5zID0gbmV3IFRyYW5zZm9ybSgpO1xuICAgIHZhciBsZWZ0VG9wID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpLnVwZGF0ZUxlZnRUb3AoKTtcblxuICAgIGlmIChsZWZ0VG9wICE9IG51bGwpIHtcbiAgICAgIHRyYW5zLnNldFdvcmxkT3JnWChuZXdMZWZ0VG9wLngpO1xuICAgICAgdHJhbnMuc2V0V29ybGRPcmdZKG5ld0xlZnRUb3AueSk7XG5cbiAgICAgIHRyYW5zLnNldERldmljZU9yZ1gobGVmdFRvcC54KTtcbiAgICAgIHRyYW5zLnNldERldmljZU9yZ1kobGVmdFRvcC55KTtcblxuICAgICAgdmFyIG5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcygpO1xuICAgICAgdmFyIG5vZGU7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBub2RlLnRyYW5zZm9ybSh0cmFucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLnBvc2l0aW9uTm9kZXNSYW5kb21seSA9IGZ1bmN0aW9uIChncmFwaCkge1xuXG4gIGlmIChncmFwaCA9PSB1bmRlZmluZWQpIHtcbiAgICAvL2Fzc2VydCAhdGhpcy5pbmNyZW1lbnRhbDtcbiAgICB0aGlzLnBvc2l0aW9uTm9kZXNSYW5kb21seSh0aGlzLmdldEdyYXBoTWFuYWdlcigpLmdldFJvb3QoKSk7XG4gICAgdGhpcy5nZXRHcmFwaE1hbmFnZXIoKS5nZXRSb290KCkudXBkYXRlQm91bmRzKHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBsTm9kZTtcbiAgICB2YXIgY2hpbGRHcmFwaDtcblxuICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbE5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIGNoaWxkR3JhcGggPSBsTm9kZS5nZXRDaGlsZCgpO1xuXG4gICAgICBpZiAoY2hpbGRHcmFwaCA9PSBudWxsKSB7XG4gICAgICAgIGxOb2RlLnNjYXR0ZXIoKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hpbGRHcmFwaC5nZXROb2RlcygpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGxOb2RlLnNjYXR0ZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25Ob2Rlc1JhbmRvbWx5KGNoaWxkR3JhcGgpO1xuICAgICAgICBsTm9kZS51cGRhdGVCb3VuZHMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxyXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiB0cmVlcyB3aGVyZSBlYWNoIHRyZWUgaXMgcmVwcmVzZW50ZWQgYXMgYVxyXG4gKiBsaXN0IG9mIGwtbm9kZXMuIFRoZSBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2Ygc2l6ZSAwIHdoZW46XHJcbiAqIC0gVGhlIGdyYXBoIGlzIG5vdCBmbGF0IG9yXHJcbiAqIC0gT25lIG9mIHRoZSBjb21wb25lbnQocykgb2YgdGhlIGdyYXBoIGlzIG5vdCBhIHRyZWUuXHJcbiAqL1xuTGF5b3V0LnByb3RvdHlwZS5nZXRGbGF0Rm9yZXN0ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZmxhdEZvcmVzdCA9IFtdO1xuICB2YXIgaXNGb3Jlc3QgPSB0cnVlO1xuXG4gIC8vIFF1aWNrIHJlZmVyZW5jZSBmb3IgYWxsIG5vZGVzIGluIHRoZSBncmFwaCBtYW5hZ2VyIGFzc29jaWF0ZWQgd2l0aFxuICAvLyB0aGlzIGxheW91dC4gVGhlIGxpc3Qgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLlxuICB2YXIgYWxsTm9kZXMgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuZ2V0Tm9kZXMoKTtcblxuICAvLyBGaXJzdCBiZSBzdXJlIHRoYXQgdGhlIGdyYXBoIGlzIGZsYXRcbiAgdmFyIGlzRmxhdCA9IHRydWU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhbGxOb2Rlc1tpXS5nZXRDaGlsZCgpICE9IG51bGwpIHtcbiAgICAgIGlzRmxhdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiBlbXB0eSBmb3Jlc3QgaWYgdGhlIGdyYXBoIGlzIG5vdCBmbGF0LlxuICBpZiAoIWlzRmxhdCkge1xuICAgIHJldHVybiBmbGF0Rm9yZXN0O1xuICB9XG5cbiAgLy8gUnVuIEJGUyBmb3IgZWFjaCBjb21wb25lbnQgb2YgdGhlIGdyYXBoLlxuXG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgdG9CZVZpc2l0ZWQgPSBbXTtcbiAgdmFyIHBhcmVudHMgPSBuZXcgTWFwKCk7XG4gIHZhciB1blByb2Nlc3NlZE5vZGVzID0gW107XG5cbiAgdW5Qcm9jZXNzZWROb2RlcyA9IHVuUHJvY2Vzc2VkTm9kZXMuY29uY2F0KGFsbE5vZGVzKTtcblxuICAvLyBFYWNoIGl0ZXJhdGlvbiBvZiB0aGlzIGxvb3AgZmluZHMgYSBjb21wb25lbnQgb2YgdGhlIGdyYXBoIGFuZFxuICAvLyBkZWNpZGVzIHdoZXRoZXIgaXQgaXMgYSB0cmVlIG9yIG5vdC4gSWYgaXQgaXMgYSB0cmVlLCBhZGRzIGl0IHRvIHRoZVxuICAvLyBmb3Jlc3QgYW5kIGNvbnRpbnVlZCB3aXRoIHRoZSBuZXh0IGNvbXBvbmVudC5cblxuICB3aGlsZSAodW5Qcm9jZXNzZWROb2Rlcy5sZW5ndGggPiAwICYmIGlzRm9yZXN0KSB7XG4gICAgdG9CZVZpc2l0ZWQucHVzaCh1blByb2Nlc3NlZE5vZGVzWzBdKTtcblxuICAgIC8vIFN0YXJ0IHRoZSBCRlMuIEVhY2ggaXRlcmF0aW9uIG9mIHRoaXMgbG9vcCB2aXNpdHMgYSBub2RlIGluIGFcbiAgICAvLyBCRlMgbWFubmVyLlxuICAgIHdoaWxlICh0b0JlVmlzaXRlZC5sZW5ndGggPiAwICYmIGlzRm9yZXN0KSB7XG4gICAgICAvL3Bvb2wgb3BlcmF0aW9uXG4gICAgICB2YXIgY3VycmVudE5vZGUgPSB0b0JlVmlzaXRlZFswXTtcbiAgICAgIHRvQmVWaXNpdGVkLnNwbGljZSgwLCAxKTtcbiAgICAgIHZpc2l0ZWQuYWRkKGN1cnJlbnROb2RlKTtcblxuICAgICAgLy8gVHJhdmVyc2UgYWxsIG5laWdoYm9ycyBvZiB0aGlzIG5vZGVcbiAgICAgIHZhciBuZWlnaGJvckVkZ2VzID0gY3VycmVudE5vZGUuZ2V0RWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvckVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjdXJyZW50TmVpZ2hib3IgPSBuZWlnaGJvckVkZ2VzW2ldLmdldE90aGVyRW5kKGN1cnJlbnROb2RlKTtcblxuICAgICAgICAvLyBJZiBCRlMgaXMgbm90IGdyb3dpbmcgZnJvbSB0aGlzIG5laWdoYm9yLlxuICAgICAgICBpZiAocGFyZW50cy5nZXQoY3VycmVudE5vZGUpICE9IGN1cnJlbnROZWlnaGJvcikge1xuICAgICAgICAgIC8vIFdlIGhhdmVuJ3QgcHJldmlvdXNseSB2aXNpdGVkIHRoaXMgbmVpZ2hib3IuXG4gICAgICAgICAgaWYgKCF2aXNpdGVkLmhhcyhjdXJyZW50TmVpZ2hib3IpKSB7XG4gICAgICAgICAgICB0b0JlVmlzaXRlZC5wdXNoKGN1cnJlbnROZWlnaGJvcik7XG4gICAgICAgICAgICBwYXJlbnRzLnNldChjdXJyZW50TmVpZ2hib3IsIGN1cnJlbnROb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgaGF2ZSBwcmV2aW91c2x5IHZpc2l0ZWQgdGhpcyBuZWlnaGJvciBhbmRcbiAgICAgICAgICAvLyB0aGlzIG5laWdoYm9yIGlzIG5vdCBwYXJlbnQgb2YgY3VycmVudE5vZGUsIGdpdmVuXG4gICAgICAgICAgLy8gZ3JhcGggY29udGFpbnMgYSBjb21wb25lbnQgdGhhdCBpcyBub3QgdHJlZSwgaGVuY2VcbiAgICAgICAgICAvLyBpdCBpcyBub3QgYSBmb3Jlc3QuXG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGlzRm9yZXN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlIGdyYXBoIGNvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaXMgbm90IGEgdHJlZS4gRW1wdHlcbiAgICAvLyBwcmV2aW91c2x5IGZvdW5kIHRyZWVzLiBUaGUgbWV0aG9kIHdpbGwgZW5kLlxuICAgIGlmICghaXNGb3Jlc3QpIHtcbiAgICAgIGZsYXRGb3Jlc3QgPSBbXTtcbiAgICB9XG4gICAgLy8gU2F2ZSBjdXJyZW50bHkgdmlzaXRlZCBub2RlcyBhcyBhIHRyZWUgaW4gb3VyIGZvcmVzdC4gUmVzZXRcbiAgICAvLyB2aXNpdGVkIGFuZCBwYXJlbnRzIGxpc3RzLiBDb250aW51ZSB3aXRoIHRoZSBuZXh0IGNvbXBvbmVudCBvZlxuICAgIC8vIHRoZSBncmFwaCwgaWYgYW55LlxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgdGVtcCA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodmlzaXRlZCkpO1xuICAgICAgICBmbGF0Rm9yZXN0LnB1c2godGVtcCk7XG4gICAgICAgIC8vZmxhdEZvcmVzdCA9IGZsYXRGb3Jlc3QuY29uY2F0KHRlbXApO1xuICAgICAgICAvL3VuUHJvY2Vzc2VkTm9kZXMucmVtb3ZlQWxsKHZpc2l0ZWQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlbXAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0ZW1wW2ldO1xuICAgICAgICAgIHZhciBpbmRleCA9IHVuUHJvY2Vzc2VkTm9kZXMuaW5kZXhPZih2YWx1ZSk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHVuUHJvY2Vzc2VkTm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgcGFyZW50cyA9IG5ldyBNYXAoKTtcbiAgICAgIH1cbiAgfVxuXG4gIHJldHVybiBmbGF0Rm9yZXN0O1xufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgZHVtbXkgbm9kZXMgKGFuIGwtbGV2ZWwgbm9kZSB3aXRoIG1pbmltYWwgZGltZW5zaW9ucylcclxuICogZm9yIHRoZSBnaXZlbiBlZGdlIChvbmUgcGVyIGJlbmRwb2ludCkuIFRoZSBleGlzdGluZyBsLWxldmVsIHN0cnVjdHVyZVxyXG4gKiBpcyB1cGRhdGVkIGFjY29yZGluZ2x5LlxyXG4gKi9cbkxheW91dC5wcm90b3R5cGUuY3JlYXRlRHVtbXlOb2Rlc0ZvckJlbmRwb2ludHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICB2YXIgZHVtbXlOb2RlcyA9IFtdO1xuICB2YXIgcHJldiA9IGVkZ2Uuc291cmNlO1xuXG4gIHZhciBncmFwaCA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmNhbGNMb3dlc3RDb21tb25BbmNlc3RvcihlZGdlLnNvdXJjZSwgZWRnZS50YXJnZXQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZS5iZW5kcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgLy8gY3JlYXRlIG5ldyBkdW1teSBub2RlXG4gICAgdmFyIGR1bW15Tm9kZSA9IHRoaXMubmV3Tm9kZShudWxsKTtcbiAgICBkdW1teU5vZGUuc2V0UmVjdChuZXcgUG9pbnQoMCwgMCksIG5ldyBEaW1lbnNpb24oMSwgMSkpO1xuXG4gICAgZ3JhcGguYWRkKGR1bW15Tm9kZSk7XG5cbiAgICAvLyBjcmVhdGUgbmV3IGR1bW15IGVkZ2UgYmV0d2VlbiBwcmV2IGFuZCBkdW1teSBub2RlXG4gICAgdmFyIGR1bW15RWRnZSA9IHRoaXMubmV3RWRnZShudWxsKTtcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5hZGQoZHVtbXlFZGdlLCBwcmV2LCBkdW1teU5vZGUpO1xuXG4gICAgZHVtbXlOb2Rlcy5hZGQoZHVtbXlOb2RlKTtcbiAgICBwcmV2ID0gZHVtbXlOb2RlO1xuICB9XG5cbiAgdmFyIGR1bW15RWRnZSA9IHRoaXMubmV3RWRnZShudWxsKTtcbiAgdGhpcy5ncmFwaE1hbmFnZXIuYWRkKGR1bW15RWRnZSwgcHJldiwgZWRnZS50YXJnZXQpO1xuXG4gIHRoaXMuZWRnZVRvRHVtbXlOb2Rlcy5zZXQoZWRnZSwgZHVtbXlOb2Rlcyk7XG5cbiAgLy8gcmVtb3ZlIHJlYWwgZWRnZSBmcm9tIGdyYXBoIG1hbmFnZXIgaWYgaXQgaXMgaW50ZXItZ3JhcGhcbiAgaWYgKGVkZ2UuaXNJbnRlckdyYXBoKCkpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5yZW1vdmUoZWRnZSk7XG4gIH1cbiAgLy8gZWxzZSwgcmVtb3ZlIHRoZSBlZGdlIGZyb20gdGhlIGN1cnJlbnQgZ3JhcGhcbiAgZWxzZSB7XG4gICAgICBncmFwaC5yZW1vdmUoZWRnZSk7XG4gICAgfVxuXG4gIHJldHVybiBkdW1teU5vZGVzO1xufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYmVuZHBvaW50cyBmb3IgZWRnZXMgZnJvbSB0aGUgZHVtbXkgbm9kZXNcclxuICogYXQgbC1sZXZlbC5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLmNyZWF0ZUJlbmRwb2ludHNGcm9tRHVtbXlOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVkZ2VzID0gW107XG4gIGVkZ2VzID0gZWRnZXMuY29uY2F0KHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbEVkZ2VzKCkpO1xuICBlZGdlcyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGhpcy5lZGdlVG9EdW1teU5vZGVzLmtleXMoKSkpLmNvbmNhdChlZGdlcyk7XG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBlZGdlcy5sZW5ndGg7IGsrKykge1xuICAgIHZhciBsRWRnZSA9IGVkZ2VzW2tdO1xuXG4gICAgaWYgKGxFZGdlLmJlbmRwb2ludHMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIHBhdGggPSB0aGlzLmVkZ2VUb0R1bW15Tm9kZXMuZ2V0KGxFZGdlKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBkdW1teU5vZGUgPSBwYXRoW2ldO1xuICAgICAgICB2YXIgcCA9IG5ldyBQb2ludEQoZHVtbXlOb2RlLmdldENlbnRlclgoKSwgZHVtbXlOb2RlLmdldENlbnRlclkoKSk7XG5cbiAgICAgICAgLy8gdXBkYXRlIGJlbmRwb2ludCdzIGxvY2F0aW9uIGFjY29yZGluZyB0byBkdW1teSBub2RlXG4gICAgICAgIHZhciBlYnAgPSBsRWRnZS5iZW5kcG9pbnRzLmdldChpKTtcbiAgICAgICAgZWJwLnggPSBwLng7XG4gICAgICAgIGVicC55ID0gcC55O1xuXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgZHVtbXkgbm9kZSwgZHVtbXkgZWRnZXMgaW5jaWRlbnQgd2l0aCB0aGlzXG4gICAgICAgIC8vIGR1bW15IG5vZGUgaXMgYWxzbyByZW1vdmVkICh3aXRoaW4gdGhlIHJlbW92ZSBtZXRob2QpXG4gICAgICAgIGR1bW15Tm9kZS5nZXRPd25lcigpLnJlbW92ZShkdW1teU5vZGUpO1xuICAgICAgfVxuXG4gICAgICAvLyBhZGQgdGhlIHJlYWwgZWRnZSB0byBncmFwaFxuICAgICAgdGhpcy5ncmFwaE1hbmFnZXIuYWRkKGxFZGdlLCBsRWRnZS5zb3VyY2UsIGxFZGdlLnRhcmdldCk7XG4gICAgfVxuICB9XG59O1xuXG5MYXlvdXQudHJhbnNmb3JtID0gZnVuY3Rpb24gKHNsaWRlclZhbHVlLCBkZWZhdWx0VmFsdWUsIG1pbkRpdiwgbWF4TXVsKSB7XG4gIGlmIChtaW5EaXYgIT0gdW5kZWZpbmVkICYmIG1heE11bCAhPSB1bmRlZmluZWQpIHtcbiAgICB2YXIgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG5cbiAgICBpZiAoc2xpZGVyVmFsdWUgPD0gNTApIHtcbiAgICAgIHZhciBtaW5WYWx1ZSA9IGRlZmF1bHRWYWx1ZSAvIG1pbkRpdjtcbiAgICAgIHZhbHVlIC09IChkZWZhdWx0VmFsdWUgLSBtaW5WYWx1ZSkgLyA1MCAqICg1MCAtIHNsaWRlclZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG1heFZhbHVlID0gZGVmYXVsdFZhbHVlICogbWF4TXVsO1xuICAgICAgdmFsdWUgKz0gKG1heFZhbHVlIC0gZGVmYXVsdFZhbHVlKSAvIDUwICogKHNsaWRlclZhbHVlIC0gNTApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYSwgYjtcblxuICAgIGlmIChzbGlkZXJWYWx1ZSA8PSA1MCkge1xuICAgICAgYSA9IDkuMCAqIGRlZmF1bHRWYWx1ZSAvIDUwMC4wO1xuICAgICAgYiA9IGRlZmF1bHRWYWx1ZSAvIDEwLjA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSA5LjAgKiBkZWZhdWx0VmFsdWUgLyA1MC4wO1xuICAgICAgYiA9IC04ICogZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBhICogc2xpZGVyVmFsdWUgKyBiO1xuICB9XG59O1xuXG4vKipcclxuICogVGhpcyBtZXRob2QgZmluZHMgYW5kIHJldHVybnMgdGhlIGNlbnRlciBvZiB0aGUgZ2l2ZW4gbm9kZXMsIGFzc3VtaW5nXHJcbiAqIHRoYXQgdGhlIGdpdmVuIG5vZGVzIGZvcm0gYSB0cmVlIGluIHRoZW1zZWx2ZXMuXHJcbiAqL1xuTGF5b3V0LmZpbmRDZW50ZXJPZlRyZWUgPSBmdW5jdGlvbiAobm9kZXMpIHtcbiAgdmFyIGxpc3QgPSBbXTtcbiAgbGlzdCA9IGxpc3QuY29uY2F0KG5vZGVzKTtcblxuICB2YXIgcmVtb3ZlZE5vZGVzID0gW107XG4gIHZhciByZW1haW5pbmdEZWdyZWVzID0gbmV3IE1hcCgpO1xuICB2YXIgZm91bmRDZW50ZXIgPSBmYWxzZTtcbiAgdmFyIGNlbnRlck5vZGUgPSBudWxsO1xuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PSAxIHx8IGxpc3QubGVuZ3RoID09IDIpIHtcbiAgICBmb3VuZENlbnRlciA9IHRydWU7XG4gICAgY2VudGVyTm9kZSA9IGxpc3RbMF07XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IGxpc3RbaV07XG4gICAgdmFyIGRlZ3JlZSA9IG5vZGUuZ2V0TmVpZ2hib3JzTGlzdCgpLnNpemU7XG4gICAgcmVtYWluaW5nRGVncmVlcy5zZXQobm9kZSwgbm9kZS5nZXROZWlnaGJvcnNMaXN0KCkuc2l6ZSk7XG5cbiAgICBpZiAoZGVncmVlID09IDEpIHtcbiAgICAgIHJlbW92ZWROb2Rlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciB0ZW1wTGlzdCA9IFtdO1xuICB0ZW1wTGlzdCA9IHRlbXBMaXN0LmNvbmNhdChyZW1vdmVkTm9kZXMpO1xuXG4gIHdoaWxlICghZm91bmRDZW50ZXIpIHtcbiAgICB2YXIgdGVtcExpc3QyID0gW107XG4gICAgdGVtcExpc3QyID0gdGVtcExpc3QyLmNvbmNhdCh0ZW1wTGlzdCk7XG4gICAgdGVtcExpc3QgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBsaXN0W2ldO1xuXG4gICAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2Yobm9kZSk7XG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBuZWlnaGJvdXJzID0gbm9kZS5nZXROZWlnaGJvcnNMaXN0KCk7XG5cbiAgICAgIG5laWdoYm91cnMuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3VyKSB7XG4gICAgICAgIGlmIChyZW1vdmVkTm9kZXMuaW5kZXhPZihuZWlnaGJvdXIpIDwgMCkge1xuICAgICAgICAgIHZhciBvdGhlckRlZ3JlZSA9IHJlbWFpbmluZ0RlZ3JlZXMuZ2V0KG5laWdoYm91cik7XG4gICAgICAgICAgdmFyIG5ld0RlZ3JlZSA9IG90aGVyRGVncmVlIC0gMTtcblxuICAgICAgICAgIGlmIChuZXdEZWdyZWUgPT0gMSkge1xuICAgICAgICAgICAgdGVtcExpc3QucHVzaChuZWlnaGJvdXIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlbWFpbmluZ0RlZ3JlZXMuc2V0KG5laWdoYm91ciwgbmV3RGVncmVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlZE5vZGVzID0gcmVtb3ZlZE5vZGVzLmNvbmNhdCh0ZW1wTGlzdCk7XG5cbiAgICBpZiAobGlzdC5sZW5ndGggPT0gMSB8fCBsaXN0Lmxlbmd0aCA9PSAyKSB7XG4gICAgICBmb3VuZENlbnRlciA9IHRydWU7XG4gICAgICBjZW50ZXJOb2RlID0gbGlzdFswXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2VudGVyTm9kZTtcbn07XG5cbi8qKlxyXG4gKiBEdXJpbmcgdGhlIGNvYXJzZW5pbmcgcHJvY2VzcywgdGhpcyBsYXlvdXQgbWF5IGJlIHJlZmVyZW5jZWQgYnkgdHdvIGdyYXBoIG1hbmFnZXJzXHJcbiAqIHRoaXMgc2V0dGVyIGZ1bmN0aW9uIGdyYW50cyBhY2Nlc3MgdG8gY2hhbmdlIHRoZSBjdXJyZW50bHkgYmVpbmcgdXNlZCBncmFwaCBtYW5hZ2VyXHJcbiAqL1xuTGF5b3V0LnByb3RvdHlwZS5zZXRHcmFwaE1hbmFnZXIgPSBmdW5jdGlvbiAoZ20pIHtcbiAgdGhpcy5ncmFwaE1hbmFnZXIgPSBnbTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTGF5b3V0O1xuXG4vKioqLyB9KSxcbi8qIDE2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIFJhbmRvbVNlZWQoKSB7fVxuLy8gYWRhcHRlZCBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTkzMDM3MjVcblJhbmRvbVNlZWQuc2VlZCA9IDE7XG5SYW5kb21TZWVkLnggPSAwO1xuXG5SYW5kb21TZWVkLm5leHREb3VibGUgPSBmdW5jdGlvbiAoKSB7XG4gIFJhbmRvbVNlZWQueCA9IE1hdGguc2luKFJhbmRvbVNlZWQuc2VlZCsrKSAqIDEwMDAwO1xuICByZXR1cm4gUmFuZG9tU2VlZC54IC0gTWF0aC5mbG9vcihSYW5kb21TZWVkLngpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSYW5kb21TZWVkO1xuXG4vKioqLyB9KSxcbi8qIDE3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBQb2ludEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXG5mdW5jdGlvbiBUcmFuc2Zvcm0oeCwgeSkge1xuICB0aGlzLmx3b3JsZE9yZ1ggPSAwLjA7XG4gIHRoaXMubHdvcmxkT3JnWSA9IDAuMDtcbiAgdGhpcy5sZGV2aWNlT3JnWCA9IDAuMDtcbiAgdGhpcy5sZGV2aWNlT3JnWSA9IDAuMDtcbiAgdGhpcy5sd29ybGRFeHRYID0gMS4wO1xuICB0aGlzLmx3b3JsZEV4dFkgPSAxLjA7XG4gIHRoaXMubGRldmljZUV4dFggPSAxLjA7XG4gIHRoaXMubGRldmljZUV4dFkgPSAxLjA7XG59XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRPcmdYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRPcmdYO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZE9yZ1ggPSBmdW5jdGlvbiAod294KSB7XG4gIHRoaXMubHdvcmxkT3JnWCA9IHdveDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRPcmdZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRPcmdZO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZE9yZ1kgPSBmdW5jdGlvbiAod295KSB7XG4gIHRoaXMubHdvcmxkT3JnWSA9IHdveTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRFeHRYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRFeHRYO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZEV4dFggPSBmdW5jdGlvbiAod2V4KSB7XG4gIHRoaXMubHdvcmxkRXh0WCA9IHdleDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0V29ybGRFeHRZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sd29ybGRFeHRZO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXRXb3JsZEV4dFkgPSBmdW5jdGlvbiAod2V5KSB7XG4gIHRoaXMubHdvcmxkRXh0WSA9IHdleTtcbn07XG5cbi8qIERldmljZSByZWxhdGVkICovXG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0RGV2aWNlT3JnWCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGRldmljZU9yZ1g7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnNldERldmljZU9yZ1ggPSBmdW5jdGlvbiAoZG94KSB7XG4gIHRoaXMubGRldmljZU9yZ1ggPSBkb3g7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLmdldERldmljZU9yZ1kgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxkZXZpY2VPcmdZO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXREZXZpY2VPcmdZID0gZnVuY3Rpb24gKGRveSkge1xuICB0aGlzLmxkZXZpY2VPcmdZID0gZG95O1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5nZXREZXZpY2VFeHRYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sZGV2aWNlRXh0WDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuc2V0RGV2aWNlRXh0WCA9IGZ1bmN0aW9uIChkZXgpIHtcbiAgdGhpcy5sZGV2aWNlRXh0WCA9IGRleDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0RGV2aWNlRXh0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGRldmljZUV4dFk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnNldERldmljZUV4dFkgPSBmdW5jdGlvbiAoZGV5KSB7XG4gIHRoaXMubGRldmljZUV4dFkgPSBkZXk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnRyYW5zZm9ybVggPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgeERldmljZSA9IDAuMDtcbiAgdmFyIHdvcmxkRXh0WCA9IHRoaXMubHdvcmxkRXh0WDtcbiAgaWYgKHdvcmxkRXh0WCAhPSAwLjApIHtcbiAgICB4RGV2aWNlID0gdGhpcy5sZGV2aWNlT3JnWCArICh4IC0gdGhpcy5sd29ybGRPcmdYKSAqIHRoaXMubGRldmljZUV4dFggLyB3b3JsZEV4dFg7XG4gIH1cblxuICByZXR1cm4geERldmljZTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUudHJhbnNmb3JtWSA9IGZ1bmN0aW9uICh5KSB7XG4gIHZhciB5RGV2aWNlID0gMC4wO1xuICB2YXIgd29ybGRFeHRZID0gdGhpcy5sd29ybGRFeHRZO1xuICBpZiAod29ybGRFeHRZICE9IDAuMCkge1xuICAgIHlEZXZpY2UgPSB0aGlzLmxkZXZpY2VPcmdZICsgKHkgLSB0aGlzLmx3b3JsZE9yZ1kpICogdGhpcy5sZGV2aWNlRXh0WSAvIHdvcmxkRXh0WTtcbiAgfVxuXG4gIHJldHVybiB5RGV2aWNlO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5pbnZlcnNlVHJhbnNmb3JtWCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciB4V29ybGQgPSAwLjA7XG4gIHZhciBkZXZpY2VFeHRYID0gdGhpcy5sZGV2aWNlRXh0WDtcbiAgaWYgKGRldmljZUV4dFggIT0gMC4wKSB7XG4gICAgeFdvcmxkID0gdGhpcy5sd29ybGRPcmdYICsgKHggLSB0aGlzLmxkZXZpY2VPcmdYKSAqIHRoaXMubHdvcmxkRXh0WCAvIGRldmljZUV4dFg7XG4gIH1cblxuICByZXR1cm4geFdvcmxkO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5pbnZlcnNlVHJhbnNmb3JtWSA9IGZ1bmN0aW9uICh5KSB7XG4gIHZhciB5V29ybGQgPSAwLjA7XG4gIHZhciBkZXZpY2VFeHRZID0gdGhpcy5sZGV2aWNlRXh0WTtcbiAgaWYgKGRldmljZUV4dFkgIT0gMC4wKSB7XG4gICAgeVdvcmxkID0gdGhpcy5sd29ybGRPcmdZICsgKHkgLSB0aGlzLmxkZXZpY2VPcmdZKSAqIHRoaXMubHdvcmxkRXh0WSAvIGRldmljZUV4dFk7XG4gIH1cbiAgcmV0dXJuIHlXb3JsZDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuaW52ZXJzZVRyYW5zZm9ybVBvaW50ID0gZnVuY3Rpb24gKGluUG9pbnQpIHtcbiAgdmFyIG91dFBvaW50ID0gbmV3IFBvaW50RCh0aGlzLmludmVyc2VUcmFuc2Zvcm1YKGluUG9pbnQueCksIHRoaXMuaW52ZXJzZVRyYW5zZm9ybVkoaW5Qb2ludC55KSk7XG4gIHJldHVybiBvdXRQb2ludDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVHJhbnNmb3JtO1xuXG4vKioqLyB9KSxcbi8qIDE4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gZWxzZSB7IHJldHVybiBBcnJheS5mcm9tKGFycik7IH0gfVxuXG52YXIgTGF5b3V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG52YXIgRkRMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xudmFyIExheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgSUdlb21ldHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbnZhciBJTWF0aCA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cbmZ1bmN0aW9uIEZETGF5b3V0KCkge1xuICBMYXlvdXQuY2FsbCh0aGlzKTtcblxuICB0aGlzLnVzZVNtYXJ0SWRlYWxFZGdlTGVuZ3RoQ2FsY3VsYXRpb24gPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX1VTRV9TTUFSVF9JREVBTF9FREdFX0xFTkdUSF9DQUxDVUxBVElPTjtcbiAgdGhpcy5pZGVhbEVkZ2VMZW5ndGggPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0VER0VfTEVOR1RIO1xuICB0aGlzLnNwcmluZ0NvbnN0YW50ID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9TUFJJTkdfU1RSRU5HVEg7XG4gIHRoaXMucmVwdWxzaW9uQ29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX1JFUFVMU0lPTl9TVFJFTkdUSDtcbiAgdGhpcy5ncmF2aXR5Q29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfU1RSRU5HVEg7XG4gIHRoaXMuY29tcG91bmRHcmF2aXR5Q29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPTVBPVU5EX0dSQVZJVFlfU1RSRU5HVEg7XG4gIHRoaXMuZ3Jhdml0eVJhbmdlRmFjdG9yID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9HUkFWSVRZX1JBTkdFX0ZBQ1RPUjtcbiAgdGhpcy5jb21wb3VuZEdyYXZpdHlSYW5nZUZhY3RvciA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ09NUE9VTkRfR1JBVklUWV9SQU5HRV9GQUNUT1I7XG4gIHRoaXMuZGlzcGxhY2VtZW50VGhyZXNob2xkUGVyTm9kZSA9IDMuMCAqIEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggLyAxMDA7XG4gIHRoaXMuY29vbGluZ0ZhY3RvciA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ09PTElOR19GQUNUT1JfSU5DUkVNRU5UQUw7XG4gIHRoaXMuaW5pdGlhbENvb2xpbmdGYWN0b3IgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPT0xJTkdfRkFDVE9SX0lOQ1JFTUVOVEFMO1xuICB0aGlzLnRvdGFsRGlzcGxhY2VtZW50ID0gMC4wO1xuICB0aGlzLm9sZFRvdGFsRGlzcGxhY2VtZW50ID0gMC4wO1xuICB0aGlzLm1heEl0ZXJhdGlvbnMgPSBGRExheW91dENvbnN0YW50cy5NQVhfSVRFUkFUSU9OUztcbn1cblxuRkRMYXlvdXQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMYXlvdXQucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcCBpbiBMYXlvdXQpIHtcbiAgRkRMYXlvdXRbcHJvcF0gPSBMYXlvdXRbcHJvcF07XG59XG5cbkZETGF5b3V0LnByb3RvdHlwZS5pbml0UGFyYW1ldGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgTGF5b3V0LnByb3RvdHlwZS5pbml0UGFyYW1ldGVycy5jYWxsKHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgdGhpcy50b3RhbEl0ZXJhdGlvbnMgPSAwO1xuICB0aGlzLm5vdEFuaW1hdGVkSXRlcmF0aW9ucyA9IDA7XG5cbiAgdGhpcy51c2VGUkdyaWRWYXJpYW50ID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9VU0VfU01BUlRfUkVQVUxTSU9OX1JBTkdFX0NBTENVTEFUSU9OO1xuXG4gIHRoaXMuZ3JpZCA9IFtdO1xufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNJZGVhbEVkZ2VMZW5ndGhzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWRnZTtcbiAgdmFyIGxjYURlcHRoO1xuICB2YXIgc291cmNlO1xuICB2YXIgdGFyZ2V0O1xuICB2YXIgc2l6ZU9mU291cmNlSW5MY2E7XG4gIHZhciBzaXplT2ZUYXJnZXRJbkxjYTtcblxuICB2YXIgYWxsRWRnZXMgPSB0aGlzLmdldEdyYXBoTWFuYWdlcigpLmdldEFsbEVkZ2VzKCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICBlZGdlID0gYWxsRWRnZXNbaV07XG5cbiAgICBlZGdlLmlkZWFsTGVuZ3RoID0gdGhpcy5pZGVhbEVkZ2VMZW5ndGg7XG5cbiAgICBpZiAoZWRnZS5pc0ludGVyR3JhcGgpIHtcbiAgICAgIHNvdXJjZSA9IGVkZ2UuZ2V0U291cmNlKCk7XG4gICAgICB0YXJnZXQgPSBlZGdlLmdldFRhcmdldCgpO1xuXG4gICAgICBzaXplT2ZTb3VyY2VJbkxjYSA9IGVkZ2UuZ2V0U291cmNlSW5MY2EoKS5nZXRFc3RpbWF0ZWRTaXplKCk7XG4gICAgICBzaXplT2ZUYXJnZXRJbkxjYSA9IGVkZ2UuZ2V0VGFyZ2V0SW5MY2EoKS5nZXRFc3RpbWF0ZWRTaXplKCk7XG5cbiAgICAgIGlmICh0aGlzLnVzZVNtYXJ0SWRlYWxFZGdlTGVuZ3RoQ2FsY3VsYXRpb24pIHtcbiAgICAgICAgZWRnZS5pZGVhbExlbmd0aCArPSBzaXplT2ZTb3VyY2VJbkxjYSArIHNpemVPZlRhcmdldEluTGNhIC0gMiAqIExheW91dENvbnN0YW50cy5TSU1QTEVfTk9ERV9TSVpFO1xuICAgICAgfVxuXG4gICAgICBsY2FEZXB0aCA9IGVkZ2UuZ2V0TGNhKCkuZ2V0SW5jbHVzaW9uVHJlZURlcHRoKCk7XG5cbiAgICAgIGVkZ2UuaWRlYWxMZW5ndGggKz0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCAqIEZETGF5b3V0Q29uc3RhbnRzLlBFUl9MRVZFTF9JREVBTF9FREdFX0xFTkdUSF9GQUNUT1IgKiAoc291cmNlLmdldEluY2x1c2lvblRyZWVEZXB0aCgpICsgdGFyZ2V0LmdldEluY2x1c2lvblRyZWVEZXB0aCgpIC0gMiAqIGxjYURlcHRoKTtcbiAgICB9XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5pbml0U3ByaW5nRW1iZWRkZXIgPSBmdW5jdGlvbiAoKSB7XG5cbiAgdmFyIHMgPSB0aGlzLmdldEFsbE5vZGVzKCkubGVuZ3RoO1xuICBpZiAodGhpcy5pbmNyZW1lbnRhbCkge1xuICAgIGlmIChzID4gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSB7XG4gICAgICB0aGlzLmNvb2xpbmdGYWN0b3IgPSBNYXRoLm1heCh0aGlzLmNvb2xpbmdGYWN0b3IgKiBGRExheW91dENvbnN0YW50cy5DT09MSU5HX0FEQVBUQVRJT05fRkFDVE9SLCB0aGlzLmNvb2xpbmdGYWN0b3IgLSAocyAtIEZETGF5b3V0Q29uc3RhbnRzLkFEQVBUQVRJT05fTE9XRVJfTk9ERV9MSU1JVCkgLyAoRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9VUFBFUl9OT0RFX0xJTUlUIC0gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSAqIHRoaXMuY29vbGluZ0ZhY3RvciAqICgxIC0gRkRMYXlvdXRDb25zdGFudHMuQ09PTElOR19BREFQVEFUSU9OX0ZBQ1RPUikpO1xuICAgIH1cbiAgICB0aGlzLm1heE5vZGVEaXNwbGFjZW1lbnQgPSBGRExheW91dENvbnN0YW50cy5NQVhfTk9ERV9ESVNQTEFDRU1FTlRfSU5DUkVNRU5UQUw7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHMgPiBGRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX0xPV0VSX05PREVfTElNSVQpIHtcbiAgICAgIHRoaXMuY29vbGluZ0ZhY3RvciA9IE1hdGgubWF4KEZETGF5b3V0Q29uc3RhbnRzLkNPT0xJTkdfQURBUFRBVElPTl9GQUNUT1IsIDEuMCAtIChzIC0gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSAvIChGRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX1VQUEVSX05PREVfTElNSVQgLSBGRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX0xPV0VSX05PREVfTElNSVQpICogKDEgLSBGRExheW91dENvbnN0YW50cy5DT09MSU5HX0FEQVBUQVRJT05fRkFDVE9SKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29vbGluZ0ZhY3RvciA9IDEuMDtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsQ29vbGluZ0ZhY3RvciA9IHRoaXMuY29vbGluZ0ZhY3RvcjtcbiAgICB0aGlzLm1heE5vZGVEaXNwbGFjZW1lbnQgPSBGRExheW91dENvbnN0YW50cy5NQVhfTk9ERV9ESVNQTEFDRU1FTlQ7XG4gIH1cblxuICB0aGlzLm1heEl0ZXJhdGlvbnMgPSBNYXRoLm1heCh0aGlzLmdldEFsbE5vZGVzKCkubGVuZ3RoICogNSwgdGhpcy5tYXhJdGVyYXRpb25zKTtcblxuICB0aGlzLnRvdGFsRGlzcGxhY2VtZW50VGhyZXNob2xkID0gdGhpcy5kaXNwbGFjZW1lbnRUaHJlc2hvbGRQZXJOb2RlICogdGhpcy5nZXRBbGxOb2RlcygpLmxlbmd0aDtcblxuICB0aGlzLnJlcHVsc2lvblJhbmdlID0gdGhpcy5jYWxjUmVwdWxzaW9uUmFuZ2UoKTtcbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5jYWxjU3ByaW5nRm9yY2VzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbEVkZ2VzID0gdGhpcy5nZXRBbGxFZGdlcygpO1xuICB2YXIgZWRnZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgIGVkZ2UgPSBsRWRnZXNbaV07XG5cbiAgICB0aGlzLmNhbGNTcHJpbmdGb3JjZShlZGdlLCBlZGdlLmlkZWFsTGVuZ3RoKTtcbiAgfVxufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNSZXB1bHNpb25Gb3JjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBncmlkVXBkYXRlQWxsb3dlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcbiAgdmFyIGZvcmNlVG9Ob2RlU3Vycm91bmRpbmdVcGRhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuXG4gIHZhciBpLCBqO1xuICB2YXIgbm9kZUEsIG5vZGVCO1xuICB2YXIgbE5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcygpO1xuICB2YXIgcHJvY2Vzc2VkTm9kZVNldDtcblxuICBpZiAodGhpcy51c2VGUkdyaWRWYXJpYW50KSB7XG4gICAgaWYgKHRoaXMudG90YWxJdGVyYXRpb25zICUgRkRMYXlvdXRDb25zdGFudHMuR1JJRF9DQUxDVUxBVElPTl9DSEVDS19QRVJJT0QgPT0gMSAmJiBncmlkVXBkYXRlQWxsb3dlZCkge1xuICAgICAgdGhpcy51cGRhdGVHcmlkKCk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc2VkTm9kZVNldCA9IG5ldyBTZXQoKTtcblxuICAgIC8vIGNhbGN1bGF0ZSByZXB1bHNpb24gZm9yY2VzIGJldHdlZW4gZWFjaCBub2RlcyBhbmQgaXRzIHN1cnJvdW5kaW5nXG4gICAgZm9yIChpID0gMDsgaSA8IGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZUEgPSBsTm9kZXNbaV07XG4gICAgICB0aGlzLmNhbGN1bGF0ZVJlcHVsc2lvbkZvcmNlT2ZBTm9kZShub2RlQSwgcHJvY2Vzc2VkTm9kZVNldCwgZ3JpZFVwZGF0ZUFsbG93ZWQsIGZvcmNlVG9Ob2RlU3Vycm91bmRpbmdVcGRhdGUpO1xuICAgICAgcHJvY2Vzc2VkTm9kZVNldC5hZGQobm9kZUEpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub2RlQSA9IGxOb2Rlc1tpXTtcblxuICAgICAgZm9yIChqID0gaSArIDE7IGogPCBsTm9kZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgbm9kZUIgPSBsTm9kZXNbal07XG5cbiAgICAgICAgLy8gSWYgYm90aCBub2RlcyBhcmUgbm90IG1lbWJlcnMgb2YgdGhlIHNhbWUgZ3JhcGgsIHNraXAuXG4gICAgICAgIGlmIChub2RlQS5nZXRPd25lcigpICE9IG5vZGVCLmdldE93bmVyKCkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FsY1JlcHVsc2lvbkZvcmNlKG5vZGVBLCBub2RlQik7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY0dyYXZpdGF0aW9uYWxGb3JjZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub2RlO1xuICB2YXIgbE5vZGVzID0gdGhpcy5nZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbigpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZSA9IGxOb2Rlc1tpXTtcbiAgICB0aGlzLmNhbGNHcmF2aXRhdGlvbmFsRm9yY2Uobm9kZSk7XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5tb3ZlTm9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsTm9kZXMgPSB0aGlzLmdldEFsbE5vZGVzKCk7XG4gIHZhciBub2RlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZSA9IGxOb2Rlc1tpXTtcbiAgICBub2RlLm1vdmUoKTtcbiAgfVxufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNTcHJpbmdGb3JjZSA9IGZ1bmN0aW9uIChlZGdlLCBpZGVhbExlbmd0aCkge1xuICB2YXIgc291cmNlTm9kZSA9IGVkZ2UuZ2V0U291cmNlKCk7XG4gIHZhciB0YXJnZXROb2RlID0gZWRnZS5nZXRUYXJnZXQoKTtcblxuICB2YXIgbGVuZ3RoO1xuICB2YXIgc3ByaW5nRm9yY2U7XG4gIHZhciBzcHJpbmdGb3JjZVg7XG4gIHZhciBzcHJpbmdGb3JjZVk7XG5cbiAgLy8gVXBkYXRlIGVkZ2UgbGVuZ3RoXG4gIGlmICh0aGlzLnVuaWZvcm1MZWFmTm9kZVNpemVzICYmIHNvdXJjZU5vZGUuZ2V0Q2hpbGQoKSA9PSBudWxsICYmIHRhcmdldE5vZGUuZ2V0Q2hpbGQoKSA9PSBudWxsKSB7XG4gICAgZWRnZS51cGRhdGVMZW5ndGhTaW1wbGUoKTtcbiAgfSBlbHNlIHtcbiAgICBlZGdlLnVwZGF0ZUxlbmd0aCgpO1xuXG4gICAgaWYgKGVkZ2UuaXNPdmVybGFwaW5nU291cmNlQW5kVGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgbGVuZ3RoID0gZWRnZS5nZXRMZW5ndGgoKTtcblxuICBpZiAobGVuZ3RoID09IDApIHJldHVybjtcblxuICAvLyBDYWxjdWxhdGUgc3ByaW5nIGZvcmNlc1xuICBzcHJpbmdGb3JjZSA9IHRoaXMuc3ByaW5nQ29uc3RhbnQgKiAobGVuZ3RoIC0gaWRlYWxMZW5ndGgpO1xuXG4gIC8vIFByb2plY3QgZm9yY2Ugb250byB4IGFuZCB5IGF4ZXNcbiAgc3ByaW5nRm9yY2VYID0gc3ByaW5nRm9yY2UgKiAoZWRnZS5sZW5ndGhYIC8gbGVuZ3RoKTtcbiAgc3ByaW5nRm9yY2VZID0gc3ByaW5nRm9yY2UgKiAoZWRnZS5sZW5ndGhZIC8gbGVuZ3RoKTtcblxuICAvLyBBcHBseSBmb3JjZXMgb24gdGhlIGVuZCBub2Rlc1xuICBzb3VyY2VOb2RlLnNwcmluZ0ZvcmNlWCArPSBzcHJpbmdGb3JjZVg7XG4gIHNvdXJjZU5vZGUuc3ByaW5nRm9yY2VZICs9IHNwcmluZ0ZvcmNlWTtcbiAgdGFyZ2V0Tm9kZS5zcHJpbmdGb3JjZVggLT0gc3ByaW5nRm9yY2VYO1xuICB0YXJnZXROb2RlLnNwcmluZ0ZvcmNlWSAtPSBzcHJpbmdGb3JjZVk7XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY1JlcHVsc2lvbkZvcmNlID0gZnVuY3Rpb24gKG5vZGVBLCBub2RlQikge1xuICB2YXIgcmVjdEEgPSBub2RlQS5nZXRSZWN0KCk7XG4gIHZhciByZWN0QiA9IG5vZGVCLmdldFJlY3QoKTtcbiAgdmFyIG92ZXJsYXBBbW91bnQgPSBuZXcgQXJyYXkoMik7XG4gIHZhciBjbGlwUG9pbnRzID0gbmV3IEFycmF5KDQpO1xuICB2YXIgZGlzdGFuY2VYO1xuICB2YXIgZGlzdGFuY2VZO1xuICB2YXIgZGlzdGFuY2VTcXVhcmVkO1xuICB2YXIgZGlzdGFuY2U7XG4gIHZhciByZXB1bHNpb25Gb3JjZTtcbiAgdmFyIHJlcHVsc2lvbkZvcmNlWDtcbiAgdmFyIHJlcHVsc2lvbkZvcmNlWTtcblxuICBpZiAocmVjdEEuaW50ZXJzZWN0cyhyZWN0QikpIC8vIHR3byBub2RlcyBvdmVybGFwXG4gICAge1xuICAgICAgLy8gY2FsY3VsYXRlIHNlcGFyYXRpb24gYW1vdW50IGluIHggYW5kIHkgZGlyZWN0aW9uc1xuICAgICAgSUdlb21ldHJ5LmNhbGNTZXBhcmF0aW9uQW1vdW50KHJlY3RBLCByZWN0Qiwgb3ZlcmxhcEFtb3VudCwgRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCAvIDIuMCk7XG5cbiAgICAgIHJlcHVsc2lvbkZvcmNlWCA9IDIgKiBvdmVybGFwQW1vdW50WzBdO1xuICAgICAgcmVwdWxzaW9uRm9yY2VZID0gMiAqIG92ZXJsYXBBbW91bnRbMV07XG5cbiAgICAgIHZhciBjaGlsZHJlbkNvbnN0YW50ID0gbm9kZUEubm9PZkNoaWxkcmVuICogbm9kZUIubm9PZkNoaWxkcmVuIC8gKG5vZGVBLm5vT2ZDaGlsZHJlbiArIG5vZGVCLm5vT2ZDaGlsZHJlbik7XG5cbiAgICAgIC8vIEFwcGx5IGZvcmNlcyBvbiB0aGUgdHdvIG5vZGVzXG4gICAgICBub2RlQS5yZXB1bHNpb25Gb3JjZVggLT0gY2hpbGRyZW5Db25zdGFudCAqIHJlcHVsc2lvbkZvcmNlWDtcbiAgICAgIG5vZGVBLnJlcHVsc2lvbkZvcmNlWSAtPSBjaGlsZHJlbkNvbnN0YW50ICogcmVwdWxzaW9uRm9yY2VZO1xuICAgICAgbm9kZUIucmVwdWxzaW9uRm9yY2VYICs9IGNoaWxkcmVuQ29uc3RhbnQgKiByZXB1bHNpb25Gb3JjZVg7XG4gICAgICBub2RlQi5yZXB1bHNpb25Gb3JjZVkgKz0gY2hpbGRyZW5Db25zdGFudCAqIHJlcHVsc2lvbkZvcmNlWTtcbiAgICB9IGVsc2UgLy8gbm8gb3ZlcmxhcFxuICAgIHtcbiAgICAgIC8vIGNhbGN1bGF0ZSBkaXN0YW5jZVxuXG4gICAgICBpZiAodGhpcy51bmlmb3JtTGVhZk5vZGVTaXplcyAmJiBub2RlQS5nZXRDaGlsZCgpID09IG51bGwgJiYgbm9kZUIuZ2V0Q2hpbGQoKSA9PSBudWxsKSAvLyBzaW1wbHkgYmFzZSByZXB1bHNpb24gb24gZGlzdGFuY2Ugb2Ygbm9kZSBjZW50ZXJzXG4gICAgICAgIHtcbiAgICAgICAgICBkaXN0YW5jZVggPSByZWN0Qi5nZXRDZW50ZXJYKCkgLSByZWN0QS5nZXRDZW50ZXJYKCk7XG4gICAgICAgICAgZGlzdGFuY2VZID0gcmVjdEIuZ2V0Q2VudGVyWSgpIC0gcmVjdEEuZ2V0Q2VudGVyWSgpO1xuICAgICAgICB9IGVsc2UgLy8gdXNlIGNsaXBwaW5nIHBvaW50c1xuICAgICAgICB7XG4gICAgICAgICAgSUdlb21ldHJ5LmdldEludGVyc2VjdGlvbihyZWN0QSwgcmVjdEIsIGNsaXBQb2ludHMpO1xuXG4gICAgICAgICAgZGlzdGFuY2VYID0gY2xpcFBvaW50c1syXSAtIGNsaXBQb2ludHNbMF07XG4gICAgICAgICAgZGlzdGFuY2VZID0gY2xpcFBvaW50c1szXSAtIGNsaXBQb2ludHNbMV07XG4gICAgICAgIH1cblxuICAgICAgLy8gTm8gcmVwdWxzaW9uIHJhbmdlLiBGUiBncmlkIHZhcmlhbnQgc2hvdWxkIHRha2UgY2FyZSBvZiB0aGlzLlxuICAgICAgaWYgKE1hdGguYWJzKGRpc3RhbmNlWCkgPCBGRExheW91dENvbnN0YW50cy5NSU5fUkVQVUxTSU9OX0RJU1QpIHtcbiAgICAgICAgZGlzdGFuY2VYID0gSU1hdGguc2lnbihkaXN0YW5jZVgpICogRkRMYXlvdXRDb25zdGFudHMuTUlOX1JFUFVMU0lPTl9ESVNUO1xuICAgICAgfVxuXG4gICAgICBpZiAoTWF0aC5hYnMoZGlzdGFuY2VZKSA8IEZETGF5b3V0Q29uc3RhbnRzLk1JTl9SRVBVTFNJT05fRElTVCkge1xuICAgICAgICBkaXN0YW5jZVkgPSBJTWF0aC5zaWduKGRpc3RhbmNlWSkgKiBGRExheW91dENvbnN0YW50cy5NSU5fUkVQVUxTSU9OX0RJU1Q7XG4gICAgICB9XG5cbiAgICAgIGRpc3RhbmNlU3F1YXJlZCA9IGRpc3RhbmNlWCAqIGRpc3RhbmNlWCArIGRpc3RhbmNlWSAqIGRpc3RhbmNlWTtcbiAgICAgIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGRpc3RhbmNlU3F1YXJlZCk7XG5cbiAgICAgIHJlcHVsc2lvbkZvcmNlID0gdGhpcy5yZXB1bHNpb25Db25zdGFudCAqIG5vZGVBLm5vT2ZDaGlsZHJlbiAqIG5vZGVCLm5vT2ZDaGlsZHJlbiAvIGRpc3RhbmNlU3F1YXJlZDtcblxuICAgICAgLy8gUHJvamVjdCBmb3JjZSBvbnRvIHggYW5kIHkgYXhlc1xuICAgICAgcmVwdWxzaW9uRm9yY2VYID0gcmVwdWxzaW9uRm9yY2UgKiBkaXN0YW5jZVggLyBkaXN0YW5jZTtcbiAgICAgIHJlcHVsc2lvbkZvcmNlWSA9IHJlcHVsc2lvbkZvcmNlICogZGlzdGFuY2VZIC8gZGlzdGFuY2U7XG5cbiAgICAgIC8vIEFwcGx5IGZvcmNlcyBvbiB0aGUgdHdvIG5vZGVzICAgIFxuICAgICAgbm9kZUEucmVwdWxzaW9uRm9yY2VYIC09IHJlcHVsc2lvbkZvcmNlWDtcbiAgICAgIG5vZGVBLnJlcHVsc2lvbkZvcmNlWSAtPSByZXB1bHNpb25Gb3JjZVk7XG4gICAgICBub2RlQi5yZXB1bHNpb25Gb3JjZVggKz0gcmVwdWxzaW9uRm9yY2VYO1xuICAgICAgbm9kZUIucmVwdWxzaW9uRm9yY2VZICs9IHJlcHVsc2lvbkZvcmNlWTtcbiAgICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY0dyYXZpdGF0aW9uYWxGb3JjZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIHZhciBvd25lckdyYXBoO1xuICB2YXIgb3duZXJDZW50ZXJYO1xuICB2YXIgb3duZXJDZW50ZXJZO1xuICB2YXIgZGlzdGFuY2VYO1xuICB2YXIgZGlzdGFuY2VZO1xuICB2YXIgYWJzRGlzdGFuY2VYO1xuICB2YXIgYWJzRGlzdGFuY2VZO1xuICB2YXIgZXN0aW1hdGVkU2l6ZTtcbiAgb3duZXJHcmFwaCA9IG5vZGUuZ2V0T3duZXIoKTtcblxuICBvd25lckNlbnRlclggPSAob3duZXJHcmFwaC5nZXRSaWdodCgpICsgb3duZXJHcmFwaC5nZXRMZWZ0KCkpIC8gMjtcbiAgb3duZXJDZW50ZXJZID0gKG93bmVyR3JhcGguZ2V0VG9wKCkgKyBvd25lckdyYXBoLmdldEJvdHRvbSgpKSAvIDI7XG4gIGRpc3RhbmNlWCA9IG5vZGUuZ2V0Q2VudGVyWCgpIC0gb3duZXJDZW50ZXJYO1xuICBkaXN0YW5jZVkgPSBub2RlLmdldENlbnRlclkoKSAtIG93bmVyQ2VudGVyWTtcbiAgYWJzRGlzdGFuY2VYID0gTWF0aC5hYnMoZGlzdGFuY2VYKSArIG5vZGUuZ2V0V2lkdGgoKSAvIDI7XG4gIGFic0Rpc3RhbmNlWSA9IE1hdGguYWJzKGRpc3RhbmNlWSkgKyBub2RlLmdldEhlaWdodCgpIC8gMjtcblxuICBpZiAobm9kZS5nZXRPd25lcigpID09IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKSkgLy8gaW4gdGhlIHJvb3QgZ3JhcGhcbiAgICB7XG4gICAgICBlc3RpbWF0ZWRTaXplID0gb3duZXJHcmFwaC5nZXRFc3RpbWF0ZWRTaXplKCkgKiB0aGlzLmdyYXZpdHlSYW5nZUZhY3RvcjtcblxuICAgICAgaWYgKGFic0Rpc3RhbmNlWCA+IGVzdGltYXRlZFNpemUgfHwgYWJzRGlzdGFuY2VZID4gZXN0aW1hdGVkU2l6ZSkge1xuICAgICAgICBub2RlLmdyYXZpdGF0aW9uRm9yY2VYID0gLXRoaXMuZ3Jhdml0eUNvbnN0YW50ICogZGlzdGFuY2VYO1xuICAgICAgICBub2RlLmdyYXZpdGF0aW9uRm9yY2VZID0gLXRoaXMuZ3Jhdml0eUNvbnN0YW50ICogZGlzdGFuY2VZO1xuICAgICAgfVxuICAgIH0gZWxzZSAvLyBpbnNpZGUgYSBjb21wb3VuZFxuICAgIHtcbiAgICAgIGVzdGltYXRlZFNpemUgPSBvd25lckdyYXBoLmdldEVzdGltYXRlZFNpemUoKSAqIHRoaXMuY29tcG91bmRHcmF2aXR5UmFuZ2VGYWN0b3I7XG5cbiAgICAgIGlmIChhYnNEaXN0YW5jZVggPiBlc3RpbWF0ZWRTaXplIHx8IGFic0Rpc3RhbmNlWSA+IGVzdGltYXRlZFNpemUpIHtcbiAgICAgICAgbm9kZS5ncmF2aXRhdGlvbkZvcmNlWCA9IC10aGlzLmdyYXZpdHlDb25zdGFudCAqIGRpc3RhbmNlWCAqIHRoaXMuY29tcG91bmRHcmF2aXR5Q29uc3RhbnQ7XG4gICAgICAgIG5vZGUuZ3Jhdml0YXRpb25Gb3JjZVkgPSAtdGhpcy5ncmF2aXR5Q29uc3RhbnQgKiBkaXN0YW5jZVkgKiB0aGlzLmNvbXBvdW5kR3Jhdml0eUNvbnN0YW50O1xuICAgICAgfVxuICAgIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5pc0NvbnZlcmdlZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNvbnZlcmdlZDtcbiAgdmFyIG9zY2lsYXRpbmcgPSBmYWxzZTtcblxuICBpZiAodGhpcy50b3RhbEl0ZXJhdGlvbnMgPiB0aGlzLm1heEl0ZXJhdGlvbnMgLyAzKSB7XG4gICAgb3NjaWxhdGluZyA9IE1hdGguYWJzKHRoaXMudG90YWxEaXNwbGFjZW1lbnQgLSB0aGlzLm9sZFRvdGFsRGlzcGxhY2VtZW50KSA8IDI7XG4gIH1cblxuICBjb252ZXJnZWQgPSB0aGlzLnRvdGFsRGlzcGxhY2VtZW50IDwgdGhpcy50b3RhbERpc3BsYWNlbWVudFRocmVzaG9sZDtcblxuICB0aGlzLm9sZFRvdGFsRGlzcGxhY2VtZW50ID0gdGhpcy50b3RhbERpc3BsYWNlbWVudDtcblxuICByZXR1cm4gY29udmVyZ2VkIHx8IG9zY2lsYXRpbmc7XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuYW5pbWF0aW9uRHVyaW5nTGF5b3V0ICYmICF0aGlzLmlzU3ViTGF5b3V0KSB7XG4gICAgaWYgKHRoaXMubm90QW5pbWF0ZWRJdGVyYXRpb25zID09IHRoaXMuYW5pbWF0aW9uUGVyaW9kKSB7XG4gICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgdGhpcy5ub3RBbmltYXRlZEl0ZXJhdGlvbnMgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdEFuaW1hdGVkSXRlcmF0aW9ucysrO1xuICAgIH1cbiAgfVxufTtcblxuLy9UaGlzIG1ldGhvZCBjYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gKHdlaWdodCkgZm9yIGFsbCBub2Rlc1xuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNOb09mQ2hpbGRyZW5Gb3JBbGxOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5vZGU7XG4gIHZhciBhbGxOb2RlcyA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbE5vZGVzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIG5vZGUgPSBhbGxOb2Rlc1tpXTtcbiAgICBub2RlLm5vT2ZDaGlsZHJlbiA9IG5vZGUuZ2V0Tm9PZkNoaWxkcmVuKCk7XG4gIH1cbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBGUi1HcmlkIFZhcmlhbnQgUmVwdWxzaW9uIEZvcmNlIENhbGN1bGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY0dyaWQgPSBmdW5jdGlvbiAoZ3JhcGgpIHtcblxuICB2YXIgc2l6ZVggPSAwO1xuICB2YXIgc2l6ZVkgPSAwO1xuXG4gIHNpemVYID0gcGFyc2VJbnQoTWF0aC5jZWlsKChncmFwaC5nZXRSaWdodCgpIC0gZ3JhcGguZ2V0TGVmdCgpKSAvIHRoaXMucmVwdWxzaW9uUmFuZ2UpKTtcbiAgc2l6ZVkgPSBwYXJzZUludChNYXRoLmNlaWwoKGdyYXBoLmdldEJvdHRvbSgpIC0gZ3JhcGguZ2V0VG9wKCkpIC8gdGhpcy5yZXB1bHNpb25SYW5nZSkpO1xuXG4gIHZhciBncmlkID0gbmV3IEFycmF5KHNpemVYKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemVYOyBpKyspIHtcbiAgICBncmlkW2ldID0gbmV3IEFycmF5KHNpemVZKTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZVg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZVk7IGorKykge1xuICAgICAgZ3JpZFtpXVtqXSA9IG5ldyBBcnJheSgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBncmlkO1xufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmFkZE5vZGVUb0dyaWQgPSBmdW5jdGlvbiAodiwgbGVmdCwgdG9wKSB7XG5cbiAgdmFyIHN0YXJ0WCA9IDA7XG4gIHZhciBmaW5pc2hYID0gMDtcbiAgdmFyIHN0YXJ0WSA9IDA7XG4gIHZhciBmaW5pc2hZID0gMDtcblxuICBzdGFydFggPSBwYXJzZUludChNYXRoLmZsb29yKCh2LmdldFJlY3QoKS54IC0gbGVmdCkgLyB0aGlzLnJlcHVsc2lvblJhbmdlKSk7XG4gIGZpbmlzaFggPSBwYXJzZUludChNYXRoLmZsb29yKCh2LmdldFJlY3QoKS53aWR0aCArIHYuZ2V0UmVjdCgpLnggLSBsZWZ0KSAvIHRoaXMucmVwdWxzaW9uUmFuZ2UpKTtcbiAgc3RhcnRZID0gcGFyc2VJbnQoTWF0aC5mbG9vcigodi5nZXRSZWN0KCkueSAtIHRvcCkgLyB0aGlzLnJlcHVsc2lvblJhbmdlKSk7XG4gIGZpbmlzaFkgPSBwYXJzZUludChNYXRoLmZsb29yKCh2LmdldFJlY3QoKS5oZWlnaHQgKyB2LmdldFJlY3QoKS55IC0gdG9wKSAvIHRoaXMucmVwdWxzaW9uUmFuZ2UpKTtcblxuICBmb3IgKHZhciBpID0gc3RhcnRYOyBpIDw9IGZpbmlzaFg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSBzdGFydFk7IGogPD0gZmluaXNoWTsgaisrKSB7XG4gICAgICB0aGlzLmdyaWRbaV1bal0ucHVzaCh2KTtcbiAgICAgIHYuc2V0R3JpZENvb3JkaW5hdGVzKHN0YXJ0WCwgZmluaXNoWCwgc3RhcnRZLCBmaW5pc2hZKTtcbiAgICB9XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS51cGRhdGVHcmlkID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaTtcbiAgdmFyIG5vZGVBO1xuICB2YXIgbE5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcygpO1xuXG4gIHRoaXMuZ3JpZCA9IHRoaXMuY2FsY0dyaWQodGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpKTtcblxuICAvLyBwdXQgYWxsIG5vZGVzIHRvIHByb3BlciBncmlkIGNlbGxzXG4gIGZvciAoaSA9IDA7IGkgPCBsTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBub2RlQSA9IGxOb2Rlc1tpXTtcbiAgICB0aGlzLmFkZE5vZGVUb0dyaWQobm9kZUEsIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKS5nZXRMZWZ0KCksIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKS5nZXRUb3AoKSk7XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5jYWxjdWxhdGVSZXB1bHNpb25Gb3JjZU9mQU5vZGUgPSBmdW5jdGlvbiAobm9kZUEsIHByb2Nlc3NlZE5vZGVTZXQsIGdyaWRVcGRhdGVBbGxvd2VkLCBmb3JjZVRvTm9kZVN1cnJvdW5kaW5nVXBkYXRlKSB7XG5cbiAgaWYgKHRoaXMudG90YWxJdGVyYXRpb25zICUgRkRMYXlvdXRDb25zdGFudHMuR1JJRF9DQUxDVUxBVElPTl9DSEVDS19QRVJJT0QgPT0gMSAmJiBncmlkVXBkYXRlQWxsb3dlZCB8fCBmb3JjZVRvTm9kZVN1cnJvdW5kaW5nVXBkYXRlKSB7XG4gICAgdmFyIHN1cnJvdW5kaW5nID0gbmV3IFNldCgpO1xuICAgIG5vZGVBLnN1cnJvdW5kaW5nID0gbmV3IEFycmF5KCk7XG4gICAgdmFyIG5vZGVCO1xuICAgIHZhciBncmlkID0gdGhpcy5ncmlkO1xuXG4gICAgZm9yICh2YXIgaSA9IG5vZGVBLnN0YXJ0WCAtIDE7IGkgPCBub2RlQS5maW5pc2hYICsgMjsgaSsrKSB7XG4gICAgICBmb3IgKHZhciBqID0gbm9kZUEuc3RhcnRZIC0gMTsgaiA8IG5vZGVBLmZpbmlzaFkgKyAyOyBqKyspIHtcbiAgICAgICAgaWYgKCEoaSA8IDAgfHwgaiA8IDAgfHwgaSA+PSBncmlkLmxlbmd0aCB8fCBqID49IGdyaWRbMF0ubGVuZ3RoKSkge1xuICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgZ3JpZFtpXVtqXS5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgbm9kZUIgPSBncmlkW2ldW2pdW2tdO1xuXG4gICAgICAgICAgICAvLyBJZiBib3RoIG5vZGVzIGFyZSBub3QgbWVtYmVycyBvZiB0aGUgc2FtZSBncmFwaCwgXG4gICAgICAgICAgICAvLyBvciBib3RoIG5vZGVzIGFyZSB0aGUgc2FtZSwgc2tpcC5cbiAgICAgICAgICAgIGlmIChub2RlQS5nZXRPd25lcigpICE9IG5vZGVCLmdldE93bmVyKCkgfHwgbm9kZUEgPT0gbm9kZUIpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSByZXB1bHNpb24gZm9yY2UgYmV0d2VlblxuICAgICAgICAgICAgLy8gbm9kZUEgYW5kIG5vZGVCIGhhcyBhbHJlYWR5IGJlZW4gY2FsY3VsYXRlZFxuICAgICAgICAgICAgaWYgKCFwcm9jZXNzZWROb2RlU2V0Lmhhcyhub2RlQikgJiYgIXN1cnJvdW5kaW5nLmhhcyhub2RlQikpIHtcbiAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlWCA9IE1hdGguYWJzKG5vZGVBLmdldENlbnRlclgoKSAtIG5vZGVCLmdldENlbnRlclgoKSkgLSAobm9kZUEuZ2V0V2lkdGgoKSAvIDIgKyBub2RlQi5nZXRXaWR0aCgpIC8gMik7XG4gICAgICAgICAgICAgIHZhciBkaXN0YW5jZVkgPSBNYXRoLmFicyhub2RlQS5nZXRDZW50ZXJZKCkgLSBub2RlQi5nZXRDZW50ZXJZKCkpIC0gKG5vZGVBLmdldEhlaWdodCgpIC8gMiArIG5vZGVCLmdldEhlaWdodCgpIC8gMik7XG5cbiAgICAgICAgICAgICAgLy8gaWYgdGhlIGRpc3RhbmNlIGJldHdlZW4gbm9kZUEgYW5kIG5vZGVCIFxuICAgICAgICAgICAgICAvLyBpcyBsZXNzIHRoZW4gY2FsY3VsYXRpb24gcmFuZ2VcbiAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlWCA8PSB0aGlzLnJlcHVsc2lvblJhbmdlICYmIGRpc3RhbmNlWSA8PSB0aGlzLnJlcHVsc2lvblJhbmdlKSB7XG4gICAgICAgICAgICAgICAgLy90aGVuIGFkZCBub2RlQiB0byBzdXJyb3VuZGluZyBvZiBub2RlQVxuICAgICAgICAgICAgICAgIHN1cnJvdW5kaW5nLmFkZChub2RlQik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBub2RlQS5zdXJyb3VuZGluZyA9IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoc3Vycm91bmRpbmcpKTtcbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgbm9kZUEuc3Vycm91bmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLmNhbGNSZXB1bHNpb25Gb3JjZShub2RlQSwgbm9kZUEuc3Vycm91bmRpbmdbaV0pO1xuICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY1JlcHVsc2lvblJhbmdlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gMC4wO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGRExheW91dDtcblxuLyoqKi8gfSksXG4vKiAxOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTEVkZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIEZETGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblxuZnVuY3Rpb24gRkRMYXlvdXRFZGdlKHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSkge1xuICBMRWRnZS5jYWxsKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSk7XG4gIHRoaXMuaWRlYWxMZW5ndGggPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0VER0VfTEVOR1RIO1xufVxuXG5GRExheW91dEVkZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMRWRnZS5wcm90b3R5cGUpO1xuXG5mb3IgKHZhciBwcm9wIGluIExFZGdlKSB7XG4gIEZETGF5b3V0RWRnZVtwcm9wXSA9IExFZGdlW3Byb3BdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEZETGF5b3V0RWRnZTtcblxuLyoqKi8gfSksXG4vKiAyMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG5mdW5jdGlvbiBGRExheW91dE5vZGUoZ20sIGxvYywgc2l6ZSwgdk5vZGUpIHtcbiAgLy8gYWx0ZXJuYXRpdmUgY29uc3RydWN0b3IgaXMgaGFuZGxlZCBpbnNpZGUgTE5vZGVcbiAgTE5vZGUuY2FsbCh0aGlzLCBnbSwgbG9jLCBzaXplLCB2Tm9kZSk7XG4gIC8vU3ByaW5nLCByZXB1bHNpb24gYW5kIGdyYXZpdGF0aW9uYWwgZm9yY2VzIGFjdGluZyBvbiB0aGlzIG5vZGVcbiAgdGhpcy5zcHJpbmdGb3JjZVggPSAwO1xuICB0aGlzLnNwcmluZ0ZvcmNlWSA9IDA7XG4gIHRoaXMucmVwdWxzaW9uRm9yY2VYID0gMDtcbiAgdGhpcy5yZXB1bHNpb25Gb3JjZVkgPSAwO1xuICB0aGlzLmdyYXZpdGF0aW9uRm9yY2VYID0gMDtcbiAgdGhpcy5ncmF2aXRhdGlvbkZvcmNlWSA9IDA7XG4gIC8vQW1vdW50IGJ5IHdoaWNoIHRoaXMgbm9kZSBpcyB0byBiZSBtb3ZlZCBpbiB0aGlzIGl0ZXJhdGlvblxuICB0aGlzLmRpc3BsYWNlbWVudFggPSAwO1xuICB0aGlzLmRpc3BsYWNlbWVudFkgPSAwO1xuXG4gIC8vU3RhcnQgYW5kIGZpbmlzaCBncmlkIGNvb3JkaW5hdGVzIHRoYXQgdGhpcyBub2RlIGlzIGZhbGxlbiBpbnRvXG4gIHRoaXMuc3RhcnRYID0gMDtcbiAgdGhpcy5maW5pc2hYID0gMDtcbiAgdGhpcy5zdGFydFkgPSAwO1xuICB0aGlzLmZpbmlzaFkgPSAwO1xuXG4gIC8vR2VvbWV0cmljIG5laWdoYm9ycyBvZiB0aGlzIG5vZGVcbiAgdGhpcy5zdXJyb3VuZGluZyA9IFtdO1xufVxuXG5GRExheW91dE5vZGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMTm9kZS5wcm90b3R5cGUpO1xuXG5mb3IgKHZhciBwcm9wIGluIExOb2RlKSB7XG4gIEZETGF5b3V0Tm9kZVtwcm9wXSA9IExOb2RlW3Byb3BdO1xufVxuXG5GRExheW91dE5vZGUucHJvdG90eXBlLnNldEdyaWRDb29yZGluYXRlcyA9IGZ1bmN0aW9uIChfc3RhcnRYLCBfZmluaXNoWCwgX3N0YXJ0WSwgX2ZpbmlzaFkpIHtcbiAgdGhpcy5zdGFydFggPSBfc3RhcnRYO1xuICB0aGlzLmZpbmlzaFggPSBfZmluaXNoWDtcbiAgdGhpcy5zdGFydFkgPSBfc3RhcnRZO1xuICB0aGlzLmZpbmlzaFkgPSBfZmluaXNoWTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRkRMYXlvdXROb2RlO1xuXG4vKioqLyB9KSxcbi8qIDIxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIERpbWVuc2lvbkQod2lkdGgsIGhlaWdodCkge1xuICB0aGlzLndpZHRoID0gMDtcbiAgdGhpcy5oZWlnaHQgPSAwO1xuICBpZiAod2lkdGggIT09IG51bGwgJiYgaGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICB9XG59XG5cbkRpbWVuc2lvbkQucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy53aWR0aDtcbn07XG5cbkRpbWVuc2lvbkQucHJvdG90eXBlLnNldFdpZHRoID0gZnVuY3Rpb24gKHdpZHRoKSB7XG4gIHRoaXMud2lkdGggPSB3aWR0aDtcbn07XG5cbkRpbWVuc2lvbkQucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuaGVpZ2h0O1xufTtcblxuRGltZW5zaW9uRC5wcm90b3R5cGUuc2V0SGVpZ2h0ID0gZnVuY3Rpb24gKGhlaWdodCkge1xuICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRGltZW5zaW9uRDtcblxuLyoqKi8gfSksXG4vKiAyMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgVW5pcXVlSURHZW5lcmV0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxuZnVuY3Rpb24gSGFzaE1hcCgpIHtcbiAgdGhpcy5tYXAgPSB7fTtcbiAgdGhpcy5rZXlzID0gW107XG59XG5cbkhhc2hNYXAucHJvdG90eXBlLnB1dCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHZhciB0aGVJZCA9IFVuaXF1ZUlER2VuZXJldG9yLmNyZWF0ZUlEKGtleSk7XG4gIGlmICghdGhpcy5jb250YWlucyh0aGVJZCkpIHtcbiAgICB0aGlzLm1hcFt0aGVJZF0gPSB2YWx1ZTtcbiAgICB0aGlzLmtleXMucHVzaChrZXkpO1xuICB9XG59O1xuXG5IYXNoTWFwLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgdmFyIHRoZUlkID0gVW5pcXVlSURHZW5lcmV0b3IuY3JlYXRlSUQoa2V5KTtcbiAgcmV0dXJuIHRoaXMubWFwW2tleV0gIT0gbnVsbDtcbn07XG5cbkhhc2hNYXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgdmFyIHRoZUlkID0gVW5pcXVlSURHZW5lcmV0b3IuY3JlYXRlSUQoa2V5KTtcbiAgcmV0dXJuIHRoaXMubWFwW3RoZUlkXTtcbn07XG5cbkhhc2hNYXAucHJvdG90eXBlLmtleVNldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMua2V5cztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaE1hcDtcblxuLyoqKi8gfSksXG4vKiAyMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgVW5pcXVlSURHZW5lcmV0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxuZnVuY3Rpb24gSGFzaFNldCgpIHtcbiAgdGhpcy5zZXQgPSB7fTtcbn1cbjtcblxuSGFzaFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG9iaikge1xuICB2YXIgdGhlSWQgPSBVbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRChvYmopO1xuICBpZiAoIXRoaXMuY29udGFpbnModGhlSWQpKSB0aGlzLnNldFt0aGVJZF0gPSBvYmo7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGRlbGV0ZSB0aGlzLnNldFtVbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRChvYmopXTtcbn07XG5cbkhhc2hTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnNldCA9IHt9O1xufTtcblxuSGFzaFNldC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0aGlzLnNldFtVbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRChvYmopXSA9PSBvYmo7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5zaXplKCkgPT09IDA7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zZXQpLmxlbmd0aDtcbn07XG5cbi8vY29uY2F0cyB0aGlzLnNldCB0byB0aGUgZ2l2ZW4gbGlzdFxuSGFzaFNldC5wcm90b3R5cGUuYWRkQWxsVG8gPSBmdW5jdGlvbiAobGlzdCkge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuc2V0KTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgbGlzdC5wdXNoKHRoaXMuc2V0W2tleXNbaV1dKTtcbiAgfVxufTtcblxuSGFzaFNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuc2V0KS5sZW5ndGg7XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5hZGRBbGwgPSBmdW5jdGlvbiAobGlzdCkge1xuICB2YXIgcyA9IGxpc3QubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIHZhciB2ID0gbGlzdFtpXTtcbiAgICB0aGlzLmFkZCh2KTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoU2V0O1xuXG4vKioqLyB9KSxcbi8qIDI0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbi8qKlxuICogQSBjbGFzc2ljIFF1aWNrc29ydCBhbGdvcml0aG0gd2l0aCBIb2FyZSdzIHBhcnRpdGlvblxuICogLSBXb3JrcyBhbHNvIG9uIExpbmtlZExpc3Qgb2JqZWN0c1xuICpcbiAqIENvcHlyaWdodDogaS1WaXMgUmVzZWFyY2ggR3JvdXAsIEJpbGtlbnQgVW5pdmVyc2l0eSwgMjAwNyAtIHByZXNlbnRcbiAqL1xuXG52YXIgTGlua2VkTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXG52YXIgUXVpY2tzb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFF1aWNrc29ydChBLCBjb21wYXJlRnVuY3Rpb24pIHtcbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFF1aWNrc29ydCk7XG5cbiAgICAgICAgaWYgKGNvbXBhcmVGdW5jdGlvbiAhPT0gbnVsbCB8fCBjb21wYXJlRnVuY3Rpb24gIT09IHVuZGVmaW5lZCkgdGhpcy5jb21wYXJlRnVuY3Rpb24gPSB0aGlzLl9kZWZhdWx0Q29tcGFyZUZ1bmN0aW9uO1xuXG4gICAgICAgIHZhciBsZW5ndGggPSB2b2lkIDA7XG4gICAgICAgIGlmIChBIGluc3RhbmNlb2YgTGlua2VkTGlzdCkgbGVuZ3RoID0gQS5zaXplKCk7ZWxzZSBsZW5ndGggPSBBLmxlbmd0aDtcblxuICAgICAgICB0aGlzLl9xdWlja3NvcnQoQSwgMCwgbGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKFF1aWNrc29ydCwgW3tcbiAgICAgICAga2V5OiAnX3F1aWNrc29ydCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfcXVpY2tzb3J0KEEsIHAsIHIpIHtcbiAgICAgICAgICAgIGlmIChwIDwgcikge1xuICAgICAgICAgICAgICAgIHZhciBxID0gdGhpcy5fcGFydGl0aW9uKEEsIHAsIHIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3F1aWNrc29ydChBLCBwLCBxKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9xdWlja3NvcnQoQSwgcSArIDEsIHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfcGFydGl0aW9uJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9wYXJ0aXRpb24oQSwgcCwgcikge1xuICAgICAgICAgICAgdmFyIHggPSB0aGlzLl9nZXQoQSwgcCk7XG4gICAgICAgICAgICB2YXIgaSA9IHA7XG4gICAgICAgICAgICB2YXIgaiA9IHI7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLmNvbXBhcmVGdW5jdGlvbih4LCB0aGlzLl9nZXQoQSwgaikpKSB7XG4gICAgICAgICAgICAgICAgICAgIGotLTtcbiAgICAgICAgICAgICAgICB9d2hpbGUgKHRoaXMuY29tcGFyZUZ1bmN0aW9uKHRoaXMuX2dldChBLCBpKSwgeCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIH1pZiAoaSA8IGopIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3dhcChBLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiBqO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfZ2V0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXQob2JqZWN0LCBpbmRleCkge1xuICAgICAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIExpbmtlZExpc3QpIHJldHVybiBvYmplY3QuZ2V0X29iamVjdF9hdChpbmRleCk7ZWxzZSByZXR1cm4gb2JqZWN0W2luZGV4XTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX3NldCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfc2V0KG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgTGlua2VkTGlzdCkgb2JqZWN0LnNldF9vYmplY3RfYXQoaW5kZXgsIHZhbHVlKTtlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX3N3YXAnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3N3YXAoQSwgaSwgaikge1xuICAgICAgICAgICAgdmFyIHRlbXAgPSB0aGlzLl9nZXQoQSwgaSk7XG4gICAgICAgICAgICB0aGlzLl9zZXQoQSwgaSwgdGhpcy5fZ2V0KEEsIGopKTtcbiAgICAgICAgICAgIHRoaXMuX3NldChBLCBqLCB0ZW1wKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX2RlZmF1bHRDb21wYXJlRnVuY3Rpb24nLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX2RlZmF1bHRDb21wYXJlRnVuY3Rpb24oYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGIgPiBhO1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIFF1aWNrc29ydDtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBRdWlja3NvcnQ7XG5cbi8qKiovIH0pLFxuLyogMjUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuLyoqXG4gKiAgIE5lZWRsZW1hbi1XdW5zY2ggYWxnb3JpdGhtIGlzIGFuIHByb2NlZHVyZSB0byBjb21wdXRlIHRoZSBvcHRpbWFsIGdsb2JhbCBhbGlnbm1lbnQgb2YgdHdvIHN0cmluZ1xuICogICBzZXF1ZW5jZXMgYnkgUy5CLk5lZWRsZW1hbiBhbmQgQy5ELld1bnNjaCAoMTk3MCkuXG4gKlxuICogICBBc2lkZSBmcm9tIHRoZSBpbnB1dHMsIHlvdSBjYW4gYXNzaWduIHRoZSBzY29yZXMgZm9yLFxuICogICAtIE1hdGNoOiBUaGUgdHdvIGNoYXJhY3RlcnMgYXQgdGhlIGN1cnJlbnQgaW5kZXggYXJlIHNhbWUuXG4gKiAgIC0gTWlzbWF0Y2g6IFRoZSB0d28gY2hhcmFjdGVycyBhdCB0aGUgY3VycmVudCBpbmRleCBhcmUgZGlmZmVyZW50LlxuICogICAtIEluc2VydGlvbi9EZWxldGlvbihnYXBzKTogVGhlIGJlc3QgYWxpZ25tZW50IGludm9sdmVzIG9uZSBsZXR0ZXIgYWxpZ25pbmcgdG8gYSBnYXAgaW4gdGhlIG90aGVyIHN0cmluZy5cbiAqL1xuXG52YXIgTmVlZGxlbWFuV3Vuc2NoID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5lZWRsZW1hbld1bnNjaChzZXF1ZW5jZTEsIHNlcXVlbmNlMikge1xuICAgICAgICB2YXIgbWF0Y2hfc2NvcmUgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDE7XG4gICAgICAgIHZhciBtaXNtYXRjaF9wZW5hbHR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAtMTtcbiAgICAgICAgdmFyIGdhcF9wZW5hbHR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAtMTtcblxuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTmVlZGxlbWFuV3Vuc2NoKTtcblxuICAgICAgICB0aGlzLnNlcXVlbmNlMSA9IHNlcXVlbmNlMTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZTIgPSBzZXF1ZW5jZTI7XG4gICAgICAgIHRoaXMubWF0Y2hfc2NvcmUgPSBtYXRjaF9zY29yZTtcbiAgICAgICAgdGhpcy5taXNtYXRjaF9wZW5hbHR5ID0gbWlzbWF0Y2hfcGVuYWx0eTtcbiAgICAgICAgdGhpcy5nYXBfcGVuYWx0eSA9IGdhcF9wZW5hbHR5O1xuXG4gICAgICAgIC8vIEp1c3QgdGhlIHJlbW92ZSByZWR1bmRhbmN5XG4gICAgICAgIHRoaXMuaU1heCA9IHNlcXVlbmNlMS5sZW5ndGggKyAxO1xuICAgICAgICB0aGlzLmpNYXggPSBzZXF1ZW5jZTIubGVuZ3RoICsgMTtcblxuICAgICAgICAvLyBHcmlkIG1hdHJpeCBvZiBzY29yZXNcbiAgICAgICAgdGhpcy5ncmlkID0gbmV3IEFycmF5KHRoaXMuaU1heCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pTWF4OyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZFtpXSA9IG5ldyBBcnJheSh0aGlzLmpNYXgpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuak1heDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkW2ldW2pdID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyYWNlYmFjayBtYXRyaXggKDJEIGFycmF5LCBlYWNoIGNlbGwgaXMgYW4gYXJyYXkgb2YgYm9vbGVhbiB2YWx1ZXMgZm9yIFtgRGlhZ2AsIGBVcGAsIGBMZWZ0YF0gcG9zaXRpb25zKVxuICAgICAgICB0aGlzLnRyYWNlYmFja0dyaWQgPSBuZXcgQXJyYXkodGhpcy5pTWF4KTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHRoaXMuaU1heDsgX2krKykge1xuICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkW19pXSA9IG5ldyBBcnJheSh0aGlzLmpNYXgpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgdGhpcy5qTWF4OyBfaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkW19pXVtfal0gPSBbbnVsbCwgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgYWxpZ25lZCBzZXF1ZW5jZXMgKHJldHVybiBtdWx0aXBsZSBwb3NzaWJpbGl0aWVzKVxuICAgICAgICB0aGlzLmFsaWdubWVudHMgPSBbXTtcblxuICAgICAgICAvLyBGaW5hbCBhbGlnbm1lbnQgc2NvcmVcbiAgICAgICAgdGhpcy5zY29yZSA9IC0xO1xuXG4gICAgICAgIC8vIENhbGN1bGF0ZSBzY29yZXMgYW5kIHRyYWNlYmFja3NcbiAgICAgICAgdGhpcy5jb21wdXRlR3JpZHMoKTtcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2xhc3MoTmVlZGxlbWFuV3Vuc2NoLCBbe1xuICAgICAgICBrZXk6IFwiZ2V0U2NvcmVcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjb3JlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NvcmU7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJnZXRBbGlnbm1lbnRzXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRBbGlnbm1lbnRzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxpZ25tZW50cztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1haW4gZHluYW1pYyBwcm9ncmFtbWluZyBwcm9jZWR1cmVcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImNvbXB1dGVHcmlkc1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcHV0ZUdyaWRzKCkge1xuICAgICAgICAgICAgLy8gRmlsbCBpbiB0aGUgZmlyc3Qgcm93XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IHRoaXMuak1heDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkWzBdW2pdID0gdGhpcy5ncmlkWzBdW2ogLSAxXSArIHRoaXMuZ2FwX3BlbmFsdHk7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkWzBdW2pdID0gW2ZhbHNlLCBmYWxzZSwgdHJ1ZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEZpbGwgaW4gdGhlIGZpcnN0IGNvbHVtblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLmlNYXg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFtpXVswXSA9IHRoaXMuZ3JpZFtpIC0gMV1bMF0gKyB0aGlzLmdhcF9wZW5hbHR5O1xuICAgICAgICAgICAgICAgIHRoaXMudHJhY2ViYWNrR3JpZFtpXVswXSA9IFtmYWxzZSwgdHJ1ZSwgZmFsc2VdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBGaWxsIHRoZSByZXN0IG9mIHRoZSBncmlkXG4gICAgICAgICAgICBmb3IgKHZhciBfaTIgPSAxOyBfaTIgPCB0aGlzLmlNYXg7IF9pMisrKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2oyID0gMTsgX2oyIDwgdGhpcy5qTWF4OyBfajIrKykge1xuICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBtYXggc2NvcmUocykgYW1vbmcgW2BEaWFnYCwgYFVwYCwgYExlZnRgXVxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlhZyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VxdWVuY2UxW19pMiAtIDFdID09PSB0aGlzLnNlcXVlbmNlMltfajIgLSAxXSkgZGlhZyA9IHRoaXMuZ3JpZFtfaTIgLSAxXVtfajIgLSAxXSArIHRoaXMubWF0Y2hfc2NvcmU7ZWxzZSBkaWFnID0gdGhpcy5ncmlkW19pMiAtIDFdW19qMiAtIDFdICsgdGhpcy5taXNtYXRjaF9wZW5hbHR5O1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cCA9IHRoaXMuZ3JpZFtfaTIgLSAxXVtfajJdICsgdGhpcy5nYXBfcGVuYWx0eTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlZnQgPSB0aGlzLmdyaWRbX2kyXVtfajIgLSAxXSArIHRoaXMuZ2FwX3BlbmFsdHk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgZXhpc3RzIG11bHRpcGxlIG1heCB2YWx1ZXMsIGNhcHR1cmUgdGhlbSBmb3IgbXVsdGlwbGUgcGF0aHNcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heE9mID0gW2RpYWcsIHVwLCBsZWZ0XTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGljZXMgPSB0aGlzLmFycmF5QWxsTWF4SW5kZXhlcyhtYXhPZik7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIEdyaWRzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFtfaTJdW19qMl0gPSBtYXhPZltpbmRpY2VzWzBdXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkW19pMl1bX2oyXSA9IFtpbmRpY2VzLmluY2x1ZGVzKDApLCBpbmRpY2VzLmluY2x1ZGVzKDEpLCBpbmRpY2VzLmluY2x1ZGVzKDIpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBhbGlnbm1lbnQgc2NvcmVcbiAgICAgICAgICAgIHRoaXMuc2NvcmUgPSB0aGlzLmdyaWRbdGhpcy5pTWF4IC0gMV1bdGhpcy5qTWF4IC0gMV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXRzIGFsbCBwb3NzaWJsZSB2YWxpZCBzZXF1ZW5jZSBjb21iaW5hdGlvbnNcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImFsaWdubWVudFRyYWNlYmFja1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gYWxpZ25tZW50VHJhY2ViYWNrKCkge1xuICAgICAgICAgICAgdmFyIGluUHJvY2Vzc0FsaWdubWVudHMgPSBbXTtcblxuICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5wdXNoKHsgcG9zOiBbdGhpcy5zZXF1ZW5jZTEubGVuZ3RoLCB0aGlzLnNlcXVlbmNlMi5sZW5ndGhdLFxuICAgICAgICAgICAgICAgIHNlcTE6IFwiXCIsXG4gICAgICAgICAgICAgICAgc2VxMjogXCJcIlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHdoaWxlIChpblByb2Nlc3NBbGlnbm1lbnRzWzBdKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBpblByb2Nlc3NBbGlnbm1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIHZhciBkaXJlY3Rpb25zID0gdGhpcy50cmFjZWJhY2tHcmlkW2N1cnJlbnQucG9zWzBdXVtjdXJyZW50LnBvc1sxXV07XG5cbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uc1swXSkge1xuICAgICAgICAgICAgICAgICAgICBpblByb2Nlc3NBbGlnbm1lbnRzLnB1c2goeyBwb3M6IFtjdXJyZW50LnBvc1swXSAtIDEsIGN1cnJlbnQucG9zWzFdIC0gMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXExOiB0aGlzLnNlcXVlbmNlMVtjdXJyZW50LnBvc1swXSAtIDFdICsgY3VycmVudC5zZXExLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VxMjogdGhpcy5zZXF1ZW5jZTJbY3VycmVudC5wb3NbMV0gLSAxXSArIGN1cnJlbnQuc2VxMlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbnNbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5wdXNoKHsgcG9zOiBbY3VycmVudC5wb3NbMF0gLSAxLCBjdXJyZW50LnBvc1sxXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXExOiB0aGlzLnNlcXVlbmNlMVtjdXJyZW50LnBvc1swXSAtIDFdICsgY3VycmVudC5zZXExLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VxMjogJy0nICsgY3VycmVudC5zZXEyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uc1syXSkge1xuICAgICAgICAgICAgICAgICAgICBpblByb2Nlc3NBbGlnbm1lbnRzLnB1c2goeyBwb3M6IFtjdXJyZW50LnBvc1swXSwgY3VycmVudC5wb3NbMV0gLSAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcTE6ICctJyArIGN1cnJlbnQuc2VxMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcTI6IHRoaXMuc2VxdWVuY2UyW2N1cnJlbnQucG9zWzFdIC0gMV0gKyBjdXJyZW50LnNlcTJcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQucG9zWzBdID09PSAwICYmIGN1cnJlbnQucG9zWzFdID09PSAwKSB0aGlzLmFsaWdubWVudHMucHVzaCh7IHNlcXVlbmNlMTogY3VycmVudC5zZXExLFxuICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZTI6IGN1cnJlbnQuc2VxMlxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbGlnbm1lbnRzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGVscGVyIEZ1bmN0aW9uc1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiZ2V0QWxsSW5kZXhlc1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWxsSW5kZXhlcyhhcnIsIHZhbCkge1xuICAgICAgICAgICAgdmFyIGluZGV4ZXMgPSBbXSxcbiAgICAgICAgICAgICAgICBpID0gLTE7XG4gICAgICAgICAgICB3aGlsZSAoKGkgPSBhcnIuaW5kZXhPZih2YWwsIGkgKyAxKSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaW5kZXhlcy5wdXNoKGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJhcnJheUFsbE1heEluZGV4ZXNcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGFycmF5QWxsTWF4SW5kZXhlcyhhcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsSW5kZXhlcyhhcnJheSwgTWF0aC5tYXguYXBwbHkobnVsbCwgYXJyYXkpKTtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBOZWVkbGVtYW5XdW5zY2g7XG59KCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTmVlZGxlbWFuV3Vuc2NoO1xuXG4vKioqLyB9KSxcbi8qIDI2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBsYXlvdXRCYXNlID0gZnVuY3Rpb24gbGF5b3V0QmFzZSgpIHtcbiAgcmV0dXJuO1xufTtcblxubGF5b3V0QmFzZS5GRExheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpO1xubGF5b3V0QmFzZS5GRExheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5sYXlvdXRCYXNlLkZETGF5b3V0RWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xubGF5b3V0QmFzZS5GRExheW91dE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcbmxheW91dEJhc2UuRGltZW5zaW9uRCA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpO1xubGF5b3V0QmFzZS5IYXNoTWFwID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7XG5sYXlvdXRCYXNlLkhhc2hTZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcbmxheW91dEJhc2UuSUdlb21ldHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbmxheW91dEJhc2UuSU1hdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xubGF5b3V0QmFzZS5JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5sYXlvdXRCYXNlLlBvaW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5sYXlvdXRCYXNlLlBvaW50RCA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5sYXlvdXRCYXNlLlJhbmRvbVNlZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcbmxheW91dEJhc2UuUmVjdGFuZ2xlRCA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xubGF5b3V0QmFzZS5UcmFuc2Zvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcbmxheW91dEJhc2UuVW5pcXVlSURHZW5lcmV0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcbmxheW91dEJhc2UuUXVpY2tzb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG5sYXlvdXRCYXNlLkxpbmtlZExpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcbmxheW91dEJhc2UuTEdyYXBoT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbmxheW91dEJhc2UuTEdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbmxheW91dEJhc2UuTEVkZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xubGF5b3V0QmFzZS5MR3JhcGhNYW5hZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbmxheW91dEJhc2UuTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xubGF5b3V0QmFzZS5MYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcbmxheW91dEJhc2UuTGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbmxheW91dEJhc2UuTmVlZGxlbWFuV3Vuc2NoID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbGF5b3V0QmFzZTtcblxuLyoqKi8gfSksXG4vKiAyNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBFbWl0dGVyKCkge1xuICB0aGlzLmxpc3RlbmVycyA9IFtdO1xufVxuXG52YXIgcCA9IEVtaXR0ZXIucHJvdG90eXBlO1xuXG5wLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50LCBjYWxsYmFjaykge1xuICB0aGlzLmxpc3RlbmVycy5wdXNoKHtcbiAgICBldmVudDogZXZlbnQsXG4gICAgY2FsbGJhY2s6IGNhbGxiYWNrXG4gIH0pO1xufTtcblxucC5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHtcbiAgZm9yICh2YXIgaSA9IHRoaXMubGlzdGVuZXJzLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbCA9IHRoaXMubGlzdGVuZXJzW2ldO1xuXG4gICAgaWYgKGwuZXZlbnQgPT09IGV2ZW50ICYmIGwuY2FsbGJhY2sgPT09IGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9XG59O1xuXG5wLmVtaXQgPSBmdW5jdGlvbiAoZXZlbnQsIGRhdGEpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBsID0gdGhpcy5saXN0ZW5lcnNbaV07XG5cbiAgICBpZiAoZXZlbnQgPT09IGwuZXZlbnQpIHtcbiAgICAgIGwuY2FsbGJhY2soZGF0YSk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVtaXR0ZXI7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImxheW91dC1iYXNlXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcImxheW91dC1iYXNlXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImF2c2RmQmFzZVwiXSA9IGZhY3RvcnkocmVxdWlyZShcImxheW91dC1iYXNlXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJhdnNkZkJhc2VcIl0gPSBmYWN0b3J5KHJvb3RbXCJsYXlvdXRCYXNlXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMF9fKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNik7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8wX187XG5cbi8qKiovIH0pLFxuLyogMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vKipcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBkYXRhIGFuZCBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGZvciBBVlNERiBsYXlvdXQgcGVyXG4gKiBjaXJjbGUuXG4gKlxuICpcbiAqIENvcHlyaWdodDogaS1WaXMgUmVzZWFyY2ggR3JvdXAsIEJpbGtlbnQgVW5pdmVyc2l0eSwgMjAwNyAtIHByZXNlbnRcbiAqL1xuXG52YXIgTEdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5MR3JhcGg7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBJbml0aWFsaXphdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIEFWU0RGQ2lyY2xlKHBhcmVudCwgZ3JhcGhNZ3IsIHZPYmplY3QpIHtcbiAgICBMR3JhcGguY2FsbCh0aGlzLCBwYXJlbnQsIGdyYXBoTWdyLCB2T2JqZWN0KTtcbiAgICB0aGlzLmluT3JkZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50SW5kZXggPSAwO1xuICAgIHRoaXMubm9kZVNlcGFyYXRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zdGFjayA9IFtdO1xuICAgIHRoaXMucGVyaW1ldGVyID0gMDtcbiAgICB0aGlzLmNlbnRlclggPSAwO1xuICAgIHRoaXMuY2VudGVyWSA9IDA7XG4gICAgdGhpcy5yYWRpdXMgPSAwO1xufVxuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExHcmFwaC5wcm90b3R5cGUpO1xuXG5mb3IgKHZhciBwcm9wZXJ0eSBpbiBMR3JhcGgpIHtcbiAgICBBVlNERkNpcmNsZVtwcm9wZXJ0eV0gPSBMR3JhcGhbcHJvcGVydHldO1xufVxuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuaW5pdE9yZGVyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaW5PcmRlciA9IFtdO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEFjY2Vzc29yIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBhcnJheSBpbiB3aGljaCB0aGUgbm9kZXMgb2YgdGhpcyBjaXJjbGUgYXJlIGtlcHQgaW4gb3JkZXIuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZ2V0T3JkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5PcmRlcjtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgeC1jb29yZGluYXRlIG9mIHRoZSBjZW50ZXIgb2YgdGhpcyBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZ2V0Q2VudGVyWCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5jZW50ZXJYO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIGNlbnRlciBvZiB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXRDZW50ZXJZID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmNlbnRlclk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJhZGl1cyBvZiB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXRSYWRpdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmFkaXVzO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgdmVydGljZXMgb2YgdGhpcyBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZ2V0U2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXROb2RlcygpLmxlbmd0aDtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGNyb3NzaW5ncyBpbiB0aGlzXG4vLyBjaXJjbGUgYnkgYWRkaW5nIHVwIHRoZSBjcm9zc2luZyBudW1iZXIgb2YgaW5kaXZpZHVhbCBub2RlcyBvbiBpdC5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXRUb3RhbENyb3NzaW5nT2ZDaXJjbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjcm9zc2luZ051bWJlciA9IDA7XG5cbiAgICBmb3IgKHZhciBub2RlIGluIHNlbGYuaW5PcmRlcikge1xuICAgICAgICB2YXIgbm9kZUNyb3NzaW5nID0gbm9kZS5nZXRUb3RhbENyb3NzaW5nT2ZFZGdlcygpO1xuICAgICAgICBpZiAobm9kZUNyb3NzaW5nID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGNyb3NzaW5nTnVtYmVyICs9IG5vZGVDcm9zc2luZztcbiAgICB9XG5cbiAgICByZXR1cm4gY3Jvc3NpbmdOdW1iZXIgLyA0O1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciBvciBub3QgYWxsIG9mIHRoZSB2ZXJ0aWNlcyBvZiB0aGlzIGNpcmNsZSBhcmVcbi8vIGFzc2lnbmVkIGFuIGluZGV4IG9uIHRoZSBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuaGFzRmluaXNoZWRPcmRlcmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5kZXggPT09IHRoaXMuZ2V0Tm9kZXMoKS5sZW5ndGg7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG5vZGUgc2VwYXJhdGlvbiBvZiB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5nZXROb2RlU2VwYXJhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlU2VwYXJhdGlvbjtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbm9kZSBzZXBhcmF0aW9uIG9mIHRoaXMgY2lyY2xlLlxuQVZTREZDaXJjbGUucHJvdG90eXBlLnNldE5vZGVTZXBhcmF0aW9uID0gZnVuY3Rpb24gKG5vZGVTZXBhcmF0aW9uKSB7XG4gICAgdGhpcy5ub2RlU2VwYXJhdGlvbiA9IG5vZGVTZXBhcmF0aW9uO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFJlbWFpbmluZyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFRoaXMgZnVuY3Rpb24gdHJhdmVyc2VzIHRoZSB2ZXJ0aWNlcyBvZiB0aGlzIGNpcmNsZSBhbmQgY29ycmVjdHMgdGhlIGFuZ2xlXG4vLyBvZiB0aGUgdmVydGljZXMgd2l0aCByZXNwZWN0IHRvIHRoZWlyIGNpcmNsZSBpbmRpY2VzLlxuQVZTREZDaXJjbGUucHJvdG90eXBlLmNvcnJlY3RBbmdsZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuY3VycmVudEluZGV4ID0gMDtcblxuICAgIHNlbGYuaW5PcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBzZWxmLnB1dEluT3JkZXIobm9kZSk7XG4gICAgfSk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHB1dHMgdGhlIGdpdmVuIG5vZGUgb24gdGhlIGNpcmNsZSBpbiB0aGUgY3VycmVudCBvcmRlciBhbmRcbi8vIHNldHMgaXRzIGFuZ2xlIGFwcHJvcHJpYXRlbHkuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUucHV0SW5PcmRlciA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIG5vZGVzID0gc2VsZi5nZXROb2RlcygpO1xuXG4gICAgLy8gTm90ZSB0aGF0IGlkIGF0dHJpYnV0ZSBvZiBhIG5vZGUgaXMgYWRkZWQgYmVmb3JlXG4gICAgLy8gQVZTREZMYXlvdXQgaXMgY2FsbGVkXG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAobm9kZXNbaV0uaWQgPT0gbm9kZS5pZCkge1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgIHRocm93IFwiVGhlIG5vZGUgbXVzdCBiZSBhIG1lbWJlciBvZiBMR3JhcGhcIjtcbiAgICB9XG5cbiAgICBzZWxmLmluT3JkZXJbc2VsZi5jdXJyZW50SW5kZXhdID0gbm9kZTtcbiAgICBub2RlLnNldEluZGV4KHNlbGYuY3VycmVudEluZGV4KTtcblxuICAgIGlmIChzZWxmLmN1cnJlbnRJbmRleCA9PT0gMCkge1xuICAgICAgICBub2RlLnNldEFuZ2xlKDAuMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5zZXRBbmdsZShzZWxmLmluT3JkZXJbc2VsZi5jdXJyZW50SW5kZXggLSAxXS5nZXRBbmdsZSgpICsgMiAqIE1hdGguUEkgKiAobm9kZS5nZXREaWFnb25hbCgpIC8gMiArIHNlbGYubm9kZVNlcGFyYXRpb24gKyBzZWxmLmluT3JkZXJbc2VsZi5jdXJyZW50SW5kZXggLSAxXS5nZXREaWFnb25hbCgpIC8gMikgLyBzZWxmLnBlcmltZXRlcik7XG4gICAgfVxuXG4gICAgc2VsZi5jdXJyZW50SW5kZXgrKztcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbmV4dCBub2RlIHRvIGJlIHBsYWNlZCBvbiB0aGlzIGNpcmNsZSB3aXRoXG4vLyByZXNwZWN0IHRvIHRoZSBBVlNERiBhbGdvcml0aG0uXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZmluZE5vZGVUb1BsYWNlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc0RlZ3JlZU5vZGUgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBGaW5kIHRoZSBzbWFsbGVzdCBkZWdyZWUgdmVydGV4IGlmIHRoZSBzdGFjayBpcyBlbXB0eVxuICAgIGlmIChzZWxmLnN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBzRGVncmVlTm9kZSA9IHNlbGYuZmluZFVub3JkZXJlZFNtYWxsZXN0RGVncmVlTm9kZSgpO1xuICAgIH1cbiAgICAvLyBGaW5kIHRoZSBmaXJzdCB2ZXJ0ZXggaW4gdGhlIHN0YWNrIG5vdCB5ZXQgcGxhY2VkXG4gICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgZm91bmRVbm9yZGVyTm9kZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICB3aGlsZSAoIWZvdW5kVW5vcmRlck5vZGUgJiYgIShzZWxmLnN0YWNrLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICBzRGVncmVlTm9kZSA9IHNlbGYuc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgZm91bmRVbm9yZGVyTm9kZSA9ICFzRGVncmVlTm9kZS5pc09yZGVyZWQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFmb3VuZFVub3JkZXJOb2RlKSB7XG4gICAgICAgICAgICAgICAgc0RlZ3JlZU5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIC8vIElmIG5vIHVub3JkZXJlZCB2ZXJ0ZXggaXMgZm91bmQgaW4gdGhlIHN0YWNrLCBmaW5kIG9uZVxuICAgIC8vIGZyb20gdGhlIHJlbWFpbmluZyBvbmVzXG4gICAgaWYgKHNEZWdyZWVOb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc0RlZ3JlZU5vZGUgPSBzZWxmLmZpbmRVbm9yZGVyZWRTbWFsbGVzdERlZ3JlZU5vZGUoKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIHVub3JkZXJlZCBuZWlnaGJvcnMgb2YgdGhpcyBub2RlIHRvIHRoZSBzdGFja1xuICAgIGlmIChzRGVncmVlTm9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBuZWlnaGJvcnMgPSBzRGVncmVlTm9kZS5nZXROZWlnaGJvcnNTb3J0ZWRCeURlZ3JlZSgpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSBuZWlnaGJvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhciBuZWlnaGJvciA9IG5laWdoYm9yc1tpXTtcblxuICAgICAgICAgICAgaWYgKCFuZWlnaGJvci5pc09yZGVyZWQoKSkgLy8gQ2hlY2sgaGVyZSBmb3IgcG9zc2libGUgZXJyb3JcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNEZWdyZWVOb2RlO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSByYWRpdXMgb2YgdGhpcyBjaXJjbGUgd2l0aCByZXNwZWN0IHRvIHRoZSBzaXplc1xuLy8gb2YgdGhlIHZlcnRpY2VzIGFuZCB0aGUgbm9kZSBzZXBhcmF0aW9uIHBhcmFtZXRlci5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5jYWxjdWxhdGVSYWRpdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b3RhbERpYWdvbmFsID0gMDtcblxuICAgIHNlbGYuZ2V0Tm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiB0b3RhbERpYWdvbmFsICs9IE1hdGguc3FydChub2RlLmdldFdpZHRoKCkgKiBub2RlLmdldFdpZHRoKCkgKyBub2RlLmdldEhlaWdodCgpICogbm9kZS5nZXRIZWlnaHQoKSk7XG4gICAgfSk7XG5cbiAgICBzZWxmLnBlcmltZXRlciA9IHRvdGFsRGlhZ29uYWwgKyBzZWxmLmdldE5vZGVzKCkubGVuZ3RoICogc2VsZi5ub2RlU2VwYXJhdGlvbjtcbiAgICB2YXIgcmFkaXVzID0gc2VsZi5wZXJpbWV0ZXIgLyAoMiAqIE1hdGguUEkpO1xuXG4gICAgLy8gQ2hlY2sgaGVyZSBmb3IgcG9zc2libGUgZXJyb3JcblxuICAgIHNlbGYuZ2V0UGFyZW50KCkuc2V0V2lkdGgoMiAqIHJhZGl1cyk7XG4gICAgc2VsZi5nZXRQYXJlbnQoKS5zZXRIZWlnaHQoMiAqIHJhZGl1cyk7XG4gICAgc2VsZi5nZXRQYXJlbnQoKS5zZXRDZW50ZXIoc2VsZi5nZXRQYXJlbnQoKS5nZXRXaWR0aCgpLCBzZWxmLmdldFBhcmVudCgpLmdldEhlaWdodCgpKTtcblxuICAgIHNlbGYuY2VudGVyWCA9IHNlbGYuZ2V0UGFyZW50KCkuZ2V0Q2VudGVyWCgpO1xuICAgIHNlbGYuY2VudGVyWSA9IHNlbGYuZ2V0UGFyZW50KCkuZ2V0Q2VudGVyWSgpO1xuICAgIHNlbGYucmFkaXVzID0gc2VsZi5nZXRQYXJlbnQoKS5nZXRIZWlnaHQoKSAvIDI7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjcm9zc2luZ3Mgb2YgYWxsIHZlcnRpY2VzIG9mXG4vLyB0aGlzIGNpcmNsZS5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5jYWxjdWxhdGVFZGdlQ3Jvc3NpbmdzT2ZOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdldE5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5jYWxjdWxhdGVUb3RhbENyb3NzaW5nKCk7XG4gICAgfSk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGluZGV4IG9mIGVhY2ggdmVydGV4IHRvIGl0cyBwb3NpdGlvbiBpbiBpbk9yZGVyXG4vLyBhcnJheS4gTm90ZSB0aGF0IGluZGV4IG9mIGEgbm9kZSBjYW4gYmUgZGlmZmVyZW50IGZyb20gaXRzIHBsYWNlIGluIHRoZVxuLy8gYXJyYXkgZHVlIHRvIGNyb3NzaW5nIHJlZHVjdGlvbiBwaGFzZSBvZiB0aGUgQVZTREYgYWxnb3JpdGhtLiBJdCBsb2Fkc1xuLy8gb2xkIGluZGV4IHZhbHVlcyB0byB2ZXJ0aWNlcyBkdWUgdG8gYW4gaW5jcmVhc2UgaW4gdGhlIG51bWJlciBvZlxuLy8gY3Jvc3NpbmdzIHdpdGggdGhlIG5ldyBpbmRpY2VzLlxuQVZTREZDaXJjbGUucHJvdG90eXBlLmxvYWRPbGRJbmRpY2VzT2ZOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAvL3RoaXMuaW5PcmRlci5mb3JFYWNoKCAobm9kZSxpbmRleCkgPT4gbm9kZS5zZXRJbmRleChpbmRleCkpO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaW5PcmRlci5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZWxmLmluT3JkZXJbaV0uc2V0SW5kZXgoaSk7XG4gICAgfVxufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBwb3NpdGlvbiBvZiBlYWNoIG5vZGUgaW4gaW5PcmRlciBhcnJheSB0byBpdHMgaW5kZXguXG4vLyBOb3RlIHRoYXQgaW5kZXggb2YgYSBub2RlIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSBpdHMgcGxhY2UgaW4gdGhlIGluT3JkZXJcbi8vIGFycmF5IGR1ZSB0byBjcm9zc2luZyByZWR1Y3Rpb24gcGhhc2Ugb2YgdGhlIEFWU0RGIGFsZ29yaXRobS4gVGhpcyBmdW5jdGlvblxuLy8gcHV0cyB0aGUgbm9kZXMgdG8gdGhlaXIgbmV3IGluZGV4IHZhbHVlcyBpbiBpbk9yZGVyIGFycmF5IGR1ZSB0byBhXG4vLyBkZWNyZWFzZSBpbiB0aGUgbnVtYmVyIG9mIGNyb3NzaW5ncyB3aXRoIHRoZSBuZXcgaW5kaWNlcy5cbkFWU0RGQ2lyY2xlLnByb3RvdHlwZS5yZU9yZGVyVmVydGljZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuZ2V0Tm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBzZWxmLmluT3JkZXJbbm9kZS5nZXRJbmRleCgpXSA9IG5vZGU7XG4gICAgfSk7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIGZpbmRzIGFuZCByZXR1cm5zIHRoZSB1bm9yZGVyZWQgc21hbGxlc3QgZGVncmVlIHZlcnRleCBvblxuLy8gdGhpcyBjaXJjbGUuXG5BVlNERkNpcmNsZS5wcm90b3R5cGUuZmluZFVub3JkZXJlZFNtYWxsZXN0RGVncmVlTm9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWluRGVncmVlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgdmFyIHNEZWdyZWVOb2RlID0gdm9pZCAwO1xuXG4gICAgdGhpcy5nZXROb2RlcygpLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuZ2V0RGVncmVlKCkgPCBtaW5EZWdyZWUgJiYgIW5vZGUuaXNPcmRlcmVkKCkpIHtcbiAgICAgICAgICAgIG1pbkRlZ3JlZSA9IG5vZGUuZ2V0RGVncmVlKCk7XG4gICAgICAgICAgICBzRGVncmVlTm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzRGVncmVlTm9kZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZDaXJjbGU7XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5MYXlvdXRDb25zdGFudHM7XG5cbmZ1bmN0aW9uIEFWU0RGQ29uc3RhbnRzKCkge31cblxuLy8gQVZTREZDb25zdGFudHMgaW5oZXJpdHMgcHJvcGVydGllcyBpbiBMYXlvdXRDb25zdGFudHNcbmZvciAodmFyIHByb3AgaW4gTGF5b3V0Q29uc3RhbnRzKSB7XG4gICAgQVZTREZDb25zdGFudHNbcHJvcF0gPSBMYXlvdXRDb25zdGFudHNbcHJvcF07XG59XG5cbkFWU0RGQ29uc3RhbnRzLkRFRkFVTFRfTk9ERV9TRVBBUkFUSU9OID0gNjA7XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZDb25zdGFudHM7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vKipcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBkYXRhIGFuZCBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGZvciBBVlNERiBsYXlvdXQgcGVyXG4gKiBlZGdlLlxuICpcblxuICogQ29weXJpZ2h0OiBpLVZpcyBSZXNlYXJjaCBHcm91cCwgQmlsa2VudCBVbml2ZXJzaXR5LCAyMDA3IC0gcHJlc2VudFxuICovXG5cbnZhciBMRWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuTEVkZ2U7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBJbml0aWFsaXphdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIEFWU0RGRWRnZShzb3VyY2UsIHRhcmdldCwgdkVkZ2UpIHtcbiAgICBMRWRnZS5jYWxsKHRoaXMsIHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSk7XG59XG5cbkFWU0RGRWRnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKExFZGdlLnByb3RvdHlwZSk7XG5cbmZvciAodmFyIHByb3BlcnRpZXMgaW4gTEVkZ2UpIHtcbiAgICBBVlNERkVkZ2VbcHJvcGVydGllc10gPSBMRWRnZVtwcm9wZXJ0aWVzXTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEFjY2Vzc29yIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gVGhlIGZ1bmN0aW9uIGdldE90aGVyRW5kIHJldHVybnMgdGhlIG90aGVyIGVuZCBvZiB0aGlzIGVkZ2UuXG5BVlNERkVkZ2UucHJvdG90eXBlLmdldE90aGVyRW5kID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gTEVkZ2UucHJvdG90eXBlLmdldE90aGVyRW5kKG5vZGUpO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFJlbWFpbmluZyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgdGhpcyBlZGdlIGNyb3NzZXMgd2l0aCB0aGUgaW5wdXQgZWRnZS4gSXRcbi8vIHJldHVybnMgZmFsc2UsIGlmIGFueSBvZiB0aGUgdmVydGljZXMgdGhvc2UgZWRnZXMgYXJlIGluY2lkZW50IHRvIGFyZSBub3Rcbi8vIHlldCBwbGFjZWQgb24gdGhlIGNpcmNsZS5cbkFWU0RGRWRnZS5wcm90b3R5cGUuY3Jvc3Nlc1dpdGhFZGdlID0gZnVuY3Rpb24gKG90aGVyRWRnZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc291cmNlUG9zID0gc2VsZi5nZXRTb3VyY2UoKS5nZXRJbmRleCgpO1xuICAgIHZhciB0YXJnZXRQb3MgPSBzZWxmLmdldFRhcmdldCgpLmdldEluZGV4KCk7XG4gICAgdmFyIG90aGVyU291cmNlUG9zID0gb3RoZXJFZGdlLmdldFNvdXJjZSgpLmdldEluZGV4KCk7XG4gICAgdmFyIG90aGVyVGFyZ2V0UG9zID0gb3RoZXJFZGdlLmdldFRhcmdldCgpLmdldEluZGV4KCk7XG5cbiAgICAvLyBpZiBhbnkgb2YgdGhlIHZlcnRpY2VzIHRob3NlIHR3byBlZGdlcyBhcmUgbm90IHlldCBwbGFjZWRcbiAgICBpZiAoc291cmNlUG9zID09PSAtMSB8fCB0YXJnZXRQb3MgPT09IC0xIHx8IG90aGVyU291cmNlUG9zID09PSAtMSB8fCBvdGhlclRhcmdldFBvcyA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBvdGhlclNvdXJjZURpc3QgPSBvdGhlckVkZ2UuZ2V0U291cmNlKCkuZ2V0Q2lyY0Rpc3RXaXRoVGhlTm9kZShzZWxmLmdldFNvdXJjZSgpKTtcbiAgICB2YXIgb3RoZXJUYXJnZXREaXN0ID0gb3RoZXJFZGdlLmdldFRhcmdldCgpLmdldENpcmNEaXN0V2l0aFRoZU5vZGUoc2VsZi5nZXRTb3VyY2UoKSk7XG4gICAgdmFyIHRoaXNUYXJnZXREaXN0ID0gc2VsZi5nZXRUYXJnZXQoKS5nZXRDaXJjRGlzdFdpdGhUaGVOb2RlKHNlbGYuZ2V0U291cmNlKCkpO1xuXG4gICAgaWYgKHRoaXNUYXJnZXREaXN0IDwgTWF0aC5tYXgob3RoZXJTb3VyY2VEaXN0LCBvdGhlclRhcmdldERpc3QpICYmIHRoaXNUYXJnZXREaXN0ID4gTWF0aC5taW4ob3RoZXJTb3VyY2VEaXN0LCBvdGhlclRhcmdldERpc3QpICYmIG90aGVyVGFyZ2V0RGlzdCAhPT0gMCAmJiBvdGhlclNvdXJjZURpc3QgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIDEgaWYgdGhpcyBlZGdlIGNyb3NzZXMgd2l0aCB0aGUgaW5wdXQgZWRnZSwgMFxuLy8gb3RoZXJ3aXNlLlxuQVZTREZFZGdlLnByb3RvdHlwZS5jcm9zc2luZ1dpdGhFZGdlID0gZnVuY3Rpb24gKG90aGVyRWRnZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcmVzdWx0ID0gc2VsZi5jcm9zc2VzV2l0aEVkZ2Uob3RoZXJFZGdlKTtcblxuICAgIHJldHVybiByZXN1bHQgPyAxIDogMDtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGNyb3NzaW5ncyBvZiB0aGlzIGVkZ2Ugd2l0aFxuLy8gYWxsIHRoZSBlZGdlcyBnaXZlbiBpbiB0aGUgaW5wdXQgbGlzdC5cbkFWU0RGRWRnZS5wcm90b3R5cGUuY2FsY3VsYXRlVG90YWxDcm9zc2luZ1dpdGhMaXN0ID0gZnVuY3Rpb24gKGVkZ2VMaXN0KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b3RhbENyb3NzaW5nID0gMDtcblxuICAgIGVkZ2VMaXN0LmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRvdGFsQ3Jvc3NpbmcgKz0gc2VsZi5jcm9zc2luZ1dpdGhFZGdlKGVkZ2UpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRvdGFsQ3Jvc3Npbmc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFWU0RGRWRnZTtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qKlxuICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGRhdGEgYW5kIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZWQgZm9yIEFWU0RGIGxheW91dCBwZXJcbiAqIG5vZGUuXG4gKlxuICpcbiAqIENvcHlyaWdodDogaS1WaXMgUmVzZWFyY2ggR3JvdXAsIEJpbGtlbnQgVW5pdmVyc2l0eSwgMjAwNyAtIHByZXNlbnRcbiAqL1xuXG52YXIgTE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkxOb2RlO1xudmFyIFF1aWNrc29ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuUXVpY2tzb3J0O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VjdGlvbjogSW5pdGlhbGl6YXRpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBBVlNERk5vZGUoZ20sIHZOb2RlLCBsb2MsIHNpemUpIHtcbiAgICAvLyBDb25zdHJ1Y3RvciAxOiBBVlNERk5vZGUoZ20sIHZOb2RlLCBsb2MsIHNpemUpXG4gICAgaWYgKGxvYyAhPT0gdW5kZWZpbmVkICYmIHNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBMTm9kZS5jYWxsKHRoaXMsIGdtLCB2Tm9kZSwgbG9jLCBzaXplKTtcbiAgICB9XG4gICAgLy8gQ29uc3RydWN0b3IgMjogQVZTREZOb2RlKGdtLCB2Tm9kZSlcbiAgICBlbHNlIHtcbiAgICAgICAgICAgIExOb2RlLmNhbGwodGhpcywgZ20sIHZOb2RlKTtcbiAgICAgICAgfVxuXG4gICAgLy8gQW5nbGUgb2YgdGhpcyBub2RlIG9uIHRoZSBvd25lciBjaXJjbGUgaW4gcmFkaWFuc1xuICAgIHRoaXMuYW5nbGUgPSAwO1xuXG4gICAgLy8gSW5kZXggb2YgdGhpcyBub2RlIG9uIHRoZSBvd25lciBjaXJjbGVcbiAgICB0aGlzLmNpcmNsZUluZGV4ID0gLTE7XG5cbiAgICAvLyBUb3RhbCBudW1iZXIgb2YgY3Jvc3NpbmdzIG9mIHRoZSBlZGdlcyB0aGlzIG5vZGUgaXMgaW5jaWRlbnQgdG9cbiAgICB0aGlzLnRvdGFsQ3Jvc3NpbmdPZkVkZ2VzID0gLTE7XG5cbiAgICAvLyBXaGV0aGVyIHRoZSBjdXJyZW50IGVkZ2UgY3Jvc3NpbmcgbnVtYmVyIGlzIHZhbGlkIG9yIGl0IG5lZWRzIHRvIGJlXG4gICAgLy8gcmVjYWxjdWxhdGVkXG4gICAgdGhpcy5pc0Nyb3NzaW5nTnVtYmVyVmFsaWQgPSBmYWxzZTtcbn1cblxuQVZTREZOb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTE5vZGUucHJvdG90eXBlKTtcbmZvciAodmFyIHByb3BlcnRpZXMgaW4gTE5vZGUpIHtcbiAgICBBVlNERk5vZGVbcHJvcGVydGllc10gPSBMTm9kZVtwcm9wZXJ0aWVzXTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEFjY2Vzc29yIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjaXJjbGUgdGhpcyBub2RlIGlzIG93bmVkIGJ5LlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXRDaXJjbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3duZXIoKTtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgaW5kZXggb2YgdGhpcyBub2RlIG9uIHRoZSBjaXJjbGUsIGFuZCBzZXRzIHRoZVxuLy8gY3Jvc3NpbmcgbnVtYmVyIGludmFsaWQuIER1ZSB0byB0aGUgaW5kZXggY2hhbmdlIG9mIHRoZSBub2RlOyBpdCBuZWVkcyB0b1xuLy8gYmUgcmVjYWxjdWxhdGVkLlxuQVZTREZOb2RlLnByb3RvdHlwZS5zZXRJbmRleCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHRoaXMuY2lyY2xlSW5kZXggPSBpbmRleDtcbiAgICB0aGlzLmlzQ3Jvc3NpbmdOdW1iZXJWYWxpZCA9IGZhbHNlO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGlzIG5vZGUgaW4gdGhlIG9yZGVyaW5nIG9mIGl0cyBvd25lclxuLy8gY2lyY2xlLiBIZXJlIC0xIG1lYW5zIHRoYXQgdGhlIHZlcnRleCBpcyBub3QgeWV0IHBsYWNlZCBvbiBpdHMgb3duZXJcbi8vY2lyY2xlLlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXRJbmRleCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5jaXJjbGVJbmRleDtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYXJyYXkgb2YgdGhlIG5laWdib3JzIG9mIHRoaXMgbm9kZSBzb3J0ZWQgaW5cbi8vIGFzY2VuZGluZyBvcmRlci5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0TmVpZ2hib3JzU29ydGVkQnlEZWdyZWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdCA9IEFycmF5LmZyb20oc2VsZi5nZXROZWlnaGJvcnNMaXN0KCkpO1xuICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuZ2V0SW5kZXgoKSA9PT0gLTE7XG4gICAgfSk7XG5cbiAgICByZXN1bHQuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5nZXREZWdyZWUoKSAtIGIuZ2V0RGVncmVlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBkZWdyZWUgb2YgdGhpcyBub2RlLlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXREZWdyZWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RWRnZXMoKS5sZW5ndGg7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciBvciBub3QgdGhpcyBub2RlIGlzIGN1cnJlbnRseSBwbGFjZWQgb24gaXRzXG4vLyBvd25lciBjaXJjbGUuXG5BVlNERk5vZGUucHJvdG90eXBlLmlzT3JkZXJlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJbmRleCgpID4gLTE7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGFuZ2xlIG9mIHRoaXMgbm9kZSB3LnIudC4gaXRzIG93bmVyIGNpcmNsZS4gSGVyZVxuLy8gdGhlIGFuZ2xlIHZhbHVlIGlzIGluIHJhZGlhbi5cbkFWU0RGTm9kZS5wcm90b3R5cGUuc2V0QW5nbGUgPSBmdW5jdGlvbiAoYW5nbGUpIHtcbiAgICB0aGlzLmFuZ2xlID0gYW5nbGU7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFuZ2xlIG9mIHRoaXMgbm9kZSB3LnIudC4gaXRzIG93bmVyIGNpcmNsZS4gSGVyZVxuLy8gdGhlIGFuZ2xlIHZhbHVlIGlzIGluIHJhZGlhbi5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0QW5nbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYW5nbGU7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGluZGV4IGRpZmZlcmVuY2Ugb2YgdGhpcyBub2RlIHdpdGggdGhlIGlucHV0XG4vLyBub2RlLiBOb3RlIHRoYXQgdGhlIGluZGV4IGRpZmZlcmVuY2UgY2Fubm90IGJlIG5lZ2F0aXZlIGlmIGJvdGggbm9kZXMgYXJlXG4vLyBwbGFjZWQgb24gdGhlIGNpcmNsZS4gSGVyZSAtMSBtZWFucyBhdCBsZWFzdCBvbmUgb2YgdGhlIG5vZGVzIGFyZSBub3QgeWV0XG4vLyBwbGFjZWQgb24gdGhlIGNpcmNsZS5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0Q2lyY0Rpc3RXaXRoVGhlTm9kZSA9IGZ1bmN0aW9uIChyZWZOb2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBvdGhlckluZGV4ID0gcmVmTm9kZS5nZXRJbmRleCgpO1xuXG4gICAgaWYgKG90aGVySW5kZXggPT09IC0xIHx8IHNlbGYuZ2V0SW5kZXgoKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHZhciBkaWZmID0gc2VsZi5nZXRJbmRleCgpIC0gb3RoZXJJbmRleDtcblxuICAgIGlmIChkaWZmIDwgMCkge1xuICAgICAgICBkaWZmICs9IHNlbGYuZ2V0Q2lyY2xlKCkuZ2V0U2l6ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBkaWZmO1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgbnVtYmVyIG9mIGVkZ2UgY3Jvc3NpbmdzIGJldHdlZW4gdGhlIGVkZ2VzIG9mXG4vLyB0aGlzIG5vZGUgYW5kIHRoZSBlZGdlcyBvZiB0aGUgaW5wdXQgb25lLlxuQVZTREZOb2RlLnByb3RvdHlwZS5nZXRDcm9zc2luZ051bWJlcldpdGhOb2RlID0gZnVuY3Rpb24gKG90aGVyTm9kZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgdG90YWxDcm9zc2luZyA9IDA7XG5cbiAgICBzZWxmLmdldEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICBvdGhlck5vZGUuZ2V0RWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChvdGhlckVkZ2UpIHtcbiAgICAgICAgICAgIHRvdGFsQ3Jvc3NpbmcgKz0gZWRnZS5jcm9zc2luZ1dpdGhFZGdlKG90aGVyRWRnZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRvdGFsQ3Jvc3Npbmc7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBlZGdlIGNyb3NzaW5ncy4gSWYgdGhlIHByZXZpb3VzbHlcbi8vIGNhbGN1bGF0ZWQgdmFsdWUgaXMgbm90IHZhbGlkIGR1ZSB0byBhbiBpbmRleCBjaGFuZ2Ugb24gdGhlIGNpcmNsZSwgdGhlblxuLy8gYSByZWNhbGN1bGF0aW9uIGlzIHBlcmZvcm1lZC5cbkFWU0RGTm9kZS5wcm90b3R5cGUuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKCFzZWxmLmlzQ3Jvc3NpbmdOdW1iZXJWYWxpZCkge1xuICAgICAgICBzZWxmLmNhbGN1bGF0ZVRvdGFsQ3Jvc3NpbmcoKTtcbiAgICAgICAgc2VsZi5pc0Nyb3NzaW5nTnVtYmVyVmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxmLnRvdGFsQ3Jvc3NpbmdPZkVkZ2VzO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFJlbWFpbmluZyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGNyb3NzaW5ncyB0aGUgZWRnZXMgb2YgdGhpc1xuLy8gbm9kZSBjYXVzZS5cbkFWU0RGTm9kZS5wcm90b3R5cGUuY2FsY3VsYXRlVG90YWxDcm9zc2luZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHRlbXBfY3Jvc3NpbmdfY291bnQgPSAwO1xuICAgIHZhciB0ZW1wX2VkZ2VfbGlzdCA9IFtdO1xuICAgIHRlbXBfZWRnZV9saXN0LnB1c2guYXBwbHkodGVtcF9lZGdlX2xpc3QsIHNlbGYuZ2V0Q2lyY2xlKCkuZ2V0RWRnZXMoKSk7XG4gICAgdGVtcF9lZGdlX2xpc3QgPSB0ZW1wX2VkZ2VfbGlzdC5maWx0ZXIoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gc2VsZi5nZXRFZGdlcygpLmluZGV4T2YoZWxlKSA8IDA7XG4gICAgfSk7XG5cbiAgICBzZWxmLmdldEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICByZXR1cm4gdGVtcF9jcm9zc2luZ19jb3VudCArPSBlZGdlLmNhbGN1bGF0ZVRvdGFsQ3Jvc3NpbmdXaXRoTGlzdCh0ZW1wX2VkZ2VfbGlzdCk7XG4gICAgfSk7XG5cbiAgICBzZWxmLnRvdGFsQ3Jvc3NpbmdPZkVkZ2VzID0gdGVtcF9jcm9zc2luZ19jb3VudDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZOb2RlO1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIG92ZXJhbGwgbGF5b3V0IHByb2Nlc3MgZm9yIHRoZSBBVlNERiBhbGdvcml0aG1cbiAqIChDaXJjdWxhciBEcmF3aW5nIEFsZ29yaXRobSBieSBIZSBhbmQgU3lrb3JhKS5cbiAqXG4gKlxuICogQ29weXJpZ2h0OiBpLVZpcyBSZXNlYXJjaCBHcm91cCwgQmlsa2VudCBVbml2ZXJzaXR5LCAyMDA3IC0gcHJlc2VudFxuICovXG5cbnZhciBMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkxheW91dDtcbnZhciBBVlNERkNvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgQVZTREZDaXJjbGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIEFWU0RGTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG52YXIgQVZTREZFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IEluaXRpYWxpemF0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gQ29uc3RydWN0b3JcbmZ1bmN0aW9uIEFWU0RGTGF5b3V0KCkge1xuICAgIExheW91dC5jYWxsKHRoaXMpO1xuICAgIHRoaXMubm9kZVNlcGFyYXRpb24gPSBBVlNERkNvbnN0YW50cy5ERUZBVUxUX05PREVfU0VQQVJBVElPTjtcbn1cblxuQVZTREZMYXlvdXQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMYXlvdXQucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcGVydHkgaW4gTGF5b3V0KSB7XG4gICAgQVZTREZMYXlvdXRbcHJvcGVydHldID0gTGF5b3V0W3Byb3BlcnR5XTtcbn1cblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm5ld0dyYXBoID0gZnVuY3Rpb24gKHZPYmplY3QpIHtcbiAgICB0aGlzLmF2c2RmQ2lyY2xlID0gbmV3IEFWU0RGQ2lyY2xlKG51bGwsIHRoaXMuZ3JhcGhNYW5hZ2VyLCB2T2JqZWN0KTtcblxuICAgIHJldHVybiB0aGlzLmF2c2RmQ2lyY2xlO1xufTtcblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm5ld05vZGUgPSBmdW5jdGlvbiAodk5vZGUpIHtcbiAgICByZXR1cm4gbmV3IEFWU0RGTm9kZSh0aGlzLmdyYXBoTWFuYWdlciwgdk5vZGUpO1xufTtcblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm5ld0VkZ2UgPSBmdW5jdGlvbiAodkVkZ2UpIHtcbiAgICByZXR1cm4gbmV3IEFWU0RGRWRnZShudWxsLCBudWxsLCB2RWRnZSk7XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VjdGlvbjogQWNjZXNzb3IgRnVuY3Rpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHBvc2l0aW9uIGRhdGEgZm9yIGFsbCBub2Rlc1xuQVZTREZMYXlvdXQucHJvdG90eXBlLmdldFBvc2l0aW9uc0RhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFsbE5vZGVzID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0QWxsTm9kZXMoKTtcbiAgICB2YXIgcERhdGEgPSB7fTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJlY3QgPSBhbGxOb2Rlc1tpXS5yZWN0O1xuICAgICAgICB2YXIgaWQgPSBhbGxOb2Rlc1tpXS5pZDtcblxuICAgICAgICBwRGF0YVtpZF0gPSB7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB4OiByZWN0LmdldENlbnRlclgoKSxcbiAgICAgICAgICAgIHk6IHJlY3QuZ2V0Q2VudGVyWSgpLFxuICAgICAgICAgICAgdzogcmVjdC53aWR0aCxcbiAgICAgICAgICAgIGg6IHJlY3QuaGVpZ2h0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHBEYXRhO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IExheW91dCBSZWxhdGVkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgbGF5b3V0IG9uIGNvbnN0cnVjdGVkIGwtbGV2ZWwgZ3JhcGguXG4gKiBJdCByZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogSW1wb3J0YW50ITogSWYgeW91IHdhbnQgdG8gc2VlIHRoZSByZXN1bHRzIG9mIHRoaXMgZnVuY3Rpb24gdGhlbiwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIHlvdSBoYXZlIHRvIGNhbGN1bGF0ZVxuICogYW5kIHNldCB0aGUgcG9zaXRpb25zIG9mIGV2ZXJ5IG5vZGUuIFRvIGRvIHRoaXMgY2FsbCB1cGRhdGVOb2RlQ29vcmRpbmF0ZXMuIEhvd2V2ZXIsIHVwZGF0ZU5vZGVBbmdsZXMgb24gdGhlIG90aGVyXG4gKiBoYW5kIGlzIG5vdCBuZWVkZWQgKHJlZHVuZGFudCkgZm9yIHRoaXMgZnVuY3Rpb24uXG4gKi9cbkFWU0RGTGF5b3V0LnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgLy8gQ2hlY2sgaWYgZ3JhcGggY29udGFpbnMgYW55IGNvbXBvdW5kIHN0cnVjdHVyZXNcbiAgICBpZiAoc2VsZi5ncmFwaE1hbmFnZXIuZ2V0R3JhcGhzKCkubGVuZ3RoID4gMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIGNsdXN0ZXJHcmFwaCA9IHRoaXMuYXZzZGZDaXJjbGU7IC8vIEZpeGVkIHJlZmVyZW5jZSwgYnV0IG5vdyBpdCBpcyBhIGJpdCByZWR1bmRhbnRcblxuICAgIGNsdXN0ZXJHcmFwaC5zZXROb2RlU2VwYXJhdGlvbih0aGlzLm5vZGVTZXBhcmF0aW9uKTtcbiAgICBjbHVzdGVyR3JhcGguY2FsY3VsYXRlUmFkaXVzKCk7XG4gICAgY2x1c3RlckdyYXBoLmluaXRPcmRlcmluZygpO1xuXG4gICAgd2hpbGUgKCFjbHVzdGVyR3JhcGguaGFzRmluaXNoZWRPcmRlcmluZygpKSB7XG4gICAgICAgIHZhciBub2RlID0gY2x1c3RlckdyYXBoLmZpbmROb2RlVG9QbGFjZSgpO1xuICAgICAgICBjbHVzdGVyR3JhcGgucHV0SW5PcmRlcihub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gdXBkYXRlcyB0aGUgYW5nbGUgKGluIHJhZGlhbnMpIHByb3BlcnR5IG9mIEFWU0RGTm9kZSBlbGVtZW50cyBpbiB0aGUgY2lyY2xlXG5BVlNERkxheW91dC5wcm90b3R5cGUudXBkYXRlTm9kZUFuZ2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuY29ycmVjdEFuZ2xlcygpOyAvL0FWU0RGQ2lyY2xlIG9iamVjdFxufTtcblxuLy8gVGhpcyBmdW5jdGlvbiB0cmF2ZXJzZXMgdGhlIHZlcnRpY2VzIG9mIHRoZSBncmFwaCBhbmQgc2V0cyB0aGVpciBjb3JyZWN0IGNvb3JkaW5hdGVzIHdpdGggcmVzcGVjdCB0byB0aGUgb3duZXIgY2lyY2xlLlxuQVZTREZMYXlvdXQucHJvdG90eXBlLnVwZGF0ZU5vZGVDb29yZGluYXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY2x1c3RlckdyYXBoID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpO1xuXG4gICAgY2x1c3RlckdyYXBoLmdldE5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBub2RlLnNldENlbnRlcihjbHVzdGVyR3JhcGguZ2V0Q2VudGVyWCgpICsgY2x1c3RlckdyYXBoLmdldFJhZGl1cygpICogTWF0aC5jb3Mobm9kZS5nZXRBbmdsZSgpKSwgY2x1c3RlckdyYXBoLmdldENlbnRlclkoKSArIGNsdXN0ZXJHcmFwaC5nZXRSYWRpdXMoKSAqIE1hdGguc2luKG5vZGUuZ2V0QW5nbGUoKSkpO1xuICAgIH0pO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlY3Rpb246IFBvc3QgUHJvY2Vzc2luZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSBwb3N0IHByb2Nlc3Npbmcgc3RlcCBvZiB0aGUgYWxnb3JpdGhtLCB3aGljaFxuICogdHJpZXMgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiBlZGdlcyBmdXJ0aGVyIHdpdGggcmVzcGVjdCB0byB0aGUgbG9jYWxcbiAqIGFkanVzdGluZyBhbGdvcml0aG0gZGVzY3JpYmVkIGJ5IEhlIGFuZCBTeWtvcmEuXG4gKi9cbkFWU0RGTGF5b3V0LnByb3RvdHlwZS5pbml0UG9zdFByb2Nlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5hdnNkZkNpcmNsZS5jYWxjdWxhdGVFZGdlQ3Jvc3NpbmdzT2ZOb2RlcygpO1xuXG4gICAgdmFyIGxpc3QgPSB0aGlzLmF2c2RmQ2lyY2xlLmdldE5vZGVzKCk7XG5cbiAgICBsaXN0LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGIuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMoKSAtIGEuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBsaXN0O1xufTtcblxuQVZTREZMYXlvdXQucHJvdG90eXBlLm9uZVN0ZXBQb3N0UHJvY2VzcyA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIGN1cnJlbnRDcm9zc2luZ051bWJlciA9IG5vZGUuZ2V0VG90YWxDcm9zc2luZ09mRWRnZXMoKTtcbiAgICB2YXIgbmV3Q3Jvc3NpbmdOdW1iZXIgPSB2b2lkIDA7XG5cbiAgICB2YXIgbmVpZ2hib3VycyA9IEFycmF5LmZyb20obm9kZS5nZXROZWlnaGJvcnNMaXN0KCkpO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBuZWlnaGJvdXJzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBuZWlnaGJvdXIgPSBuZWlnaGJvdXJzW2pdO1xuXG4gICAgICAgIHZhciBvbGRJbmRleCA9IG5vZGUuZ2V0SW5kZXgoKTtcbiAgICAgICAgdmFyIG5ld0luZGV4ID0gKG5laWdoYm91ci5nZXRJbmRleCgpICsgMSkgJSBzZWxmLmF2c2RmQ2lyY2xlLmdldFNpemUoKTtcblxuICAgICAgICBpZiAob2xkSW5kZXggIT09IG5ld0luZGV4KSB7XG4gICAgICAgICAgICBub2RlLnNldEluZGV4KG5ld0luZGV4KTtcblxuICAgICAgICAgICAgaWYgKG9sZEluZGV4IDwgbm9kZS5nZXRJbmRleCgpKSB7XG4gICAgICAgICAgICAgICAgb2xkSW5kZXggKz0gc2VsZi5hdnNkZkNpcmNsZS5nZXRTaXplKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBpbmRleCA9IG5vZGUuZ2V0SW5kZXgoKTtcblxuICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgb2xkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IHNlbGYuYXZzZGZDaXJjbGUuZ2V0T3JkZXIoKVtpbmRleCAlIHNlbGYuYXZzZGZDaXJjbGUuZ2V0U2l6ZSgpXTtcbiAgICAgICAgICAgICAgICB0ZW1wLnNldEluZGV4KCh0ZW1wLmdldEluZGV4KCkgKyAxKSAlIHNlbGYuYXZzZGZDaXJjbGUuZ2V0U2l6ZSgpKTtcbiAgICAgICAgICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlLmNhbGN1bGF0ZVRvdGFsQ3Jvc3NpbmcoKTtcbiAgICAgICAgICAgIG5ld0Nyb3NzaW5nTnVtYmVyID0gbm9kZS5nZXRUb3RhbENyb3NzaW5nT2ZFZGdlcygpO1xuXG4gICAgICAgICAgICBpZiAobmV3Q3Jvc3NpbmdOdW1iZXIgPj0gY3VycmVudENyb3NzaW5nTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5hdnNkZkNpcmNsZS5sb2FkT2xkSW5kaWNlc09mTm9kZXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5hdnNkZkNpcmNsZS5yZU9yZGVyVmVydGljZXMoKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50Q3Jvc3NpbmdOdW1iZXIgPSBuZXdDcm9zc2luZ051bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVZTREZMYXlvdXQ7XG5cbi8qKiovIH0pLFxuLyogNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgYXZzZGZCYXNlID0ge307XG5cbmF2c2RmQmFzZS5sYXlvdXRCYXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbmF2c2RmQmFzZS5BVlNERkNvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5hdnNkZkJhc2UuQVZTREZFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbmF2c2RmQmFzZS5BVlNERkNpcmNsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5hdnNkZkJhc2UuQVZTREZMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuYXZzZGZCYXNlLkFWU0RGTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXZzZGZCYXNlO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiLCIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJhdnNkZi1iYXNlXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcImF2c2RmLWJhc2VcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlQXZzZGZcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJhdnNkZi1iYXNlXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJjeXRvc2NhcGVBdnNkZlwiXSA9IGZhY3Rvcnkocm9vdFtcImF2c2RmQmFzZVwiXSk7XG59KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzBfXykge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDMpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMF9fO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLy8gU2ltcGxlLCBpbnRlcm5hbCBPYmplY3QuYXNzaWduKCkgcG9seWZpbGwgZm9yIG9wdGlvbnMgb2JqZWN0cyBldGMuXG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmFzc2lnbiAhPSBudWxsID8gT2JqZWN0LmFzc2lnbi5iaW5kKE9iamVjdCkgOiBmdW5jdGlvbiAodGd0KSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzcmNzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHNyY3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgc3Jjcy5mb3JFYWNoKGZ1bmN0aW9uIChzcmMpIHtcbiAgICBPYmplY3Qua2V5cyhzcmMpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiB0Z3Rba10gPSBzcmNba107XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB0Z3Q7XG59O1xuXG4vKioqLyB9KSxcbi8qIDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKlxuICogQ2hvb3NlIHRoZSB0eXBlIG9mIGxheW91dCB0aGF0IGJlc3Qgc3VpdHMgeW91ciB1c2VjYXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXG4gKlxuICogQSBkaXNjcmV0ZSBsYXlvdXQgaXMgb25lIHRoYXQgYWxnb3JpdGhtaWNhbGx5IHNldHMgcmVzdWx0YW50IHBvc2l0aW9ucy4gIEl0XG4gKiBkb2VzIG5vdCBoYXZlIGludGVybWVkaWF0ZSBwb3NpdGlvbnMuXG4gKlxuICogQSBjb250aW51b3VzIGxheW91dCBpcyBvbmUgdGhhdCB1cGRhdGVzIHBvc2l0aW9ucyBjb250aW51b3VzbHksIGxpa2UgYSBmb3JjZS1cbiAqIGRpcmVjdGVkIC8gcGh5c2ljcyBzaW11bGF0aW9uIGxheW91dC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgaW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbi8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbnZhciByZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGN5dG9zY2FwZSkge1xuICBpZiAoIWN5dG9zY2FwZSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBjYW4ndCByZWdpc3RlciBpZiBjeXRvc2NhcGUgdW5zcGVjaWZpZWRcblxuICBjeXRvc2NhcGUoJ2xheW91dCcsICdhdnNkZicsIGltcGwpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChvYmplY3QsIHByb3BlcnR5LCByZWNlaXZlcikgeyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgcmV0dXJuIGdldChwYXJlbnQsIHByb3BlcnR5LCByZWNlaXZlcik7IH0gfSBlbHNlIGlmIChcInZhbHVlXCIgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH07XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIG92ZXJhbGwgbGF5b3V0IHByb2Nlc3MgZm9yIHRoZVxuICogQWRqYWNlbnQgVmVydGV4IHdpdGggU21hbGxlc3QgRGVncmVlIEZpcnN0IChBVlNERikgYWxnb3JpdGhtLlxuICogKENpcmN1bGFyIERyYXdpbmcgQWxnb3JpdGhtIGJ5IEhvbmdtZWkgSGUgJiBPbmRyZWogU8O9a29yYSkuXG4gKlxuICogQGF1dGhvciBEb3J1ayDDh2FrbWFrw6fEsVxuICogQGF1dGhvciBBbGloYW4gT2trYVxuICpcbiAqIENvcHlyaWdodDogaS1WaXMgKEluZm9ybWF0aW9uIFZpc3VhbGl6YXRpb24pIFJlc2VhcmNoIExhYiwgQmlsa2VudCBVbml2ZXJzaXR5LCAyMDE5IC0gcHJlc2VudFxuKi9cblxuLy8gY3l0b3NzY2FwZS5qcy1hdnNkZiBSRVFVSVJFUyBhdnNkZi1iYXNlIGxpYnJhcnkgZWxlbWVudHNcbnZhciBBVlNERkxheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuQVZTREZMYXlvdXQ7XG52YXIgQVZTREZOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5BVlNERk5vZGU7XG52YXIgQVZTREZDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkFWU0RGQ29uc3RhbnRzO1xudmFyIFBvaW50RCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkubGF5b3V0QmFzZS5Qb2ludEQ7XG52YXIgRGltZW5zaW9uRCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkubGF5b3V0QmFzZS5EaW1lbnNpb25EO1xuXG4vLyBDeXRvc2NhcGUtZXh0ZW50aW9uIHRlbXBsYXRlIHJlcXVpcmVtZW50c1xuLy8gTW9yZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiBOUE0gJ3NsdXNoLWN5dG9zY2FwZS1leHRlbnNpb24nIHBhY2thZ2VcbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIENvbnRpbnVvdXNMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXG52YXIgaXNGbiA9IGZ1bmN0aW9uIGlzRm4oZm4pIHtcbiAgcmV0dXJuIHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJztcbn07XG52YXIgb3B0Rm4gPSBmdW5jdGlvbiBvcHRGbihvcHQsIGVsZSkge1xuICBpZiAoaXNGbihvcHQpKSB7XG4gICAgcmV0dXJuIG9wdChlbGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvcHQ7XG4gIH1cbn07XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge30sIC8vIENhbGxlZCBvbiBgbGF5b3V0cmVhZHlgXG4gIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7fSwgLy8gQ2FsbGVkIG9uIGBsYXlvdXRzdG9wYFxuICByZWZyZXNoOiAzMCwgLy8gbnVtYmVyIG9mIHRpY2tzIHBlciBmcmFtZTsgaGlnaGVyIGlzIGZhc3RlciBidXQgbW9yZSBqZXJreVxuICBmaXQ6IHRydWUsIC8vIFdoZXRoZXIgdG8gZml0IHRoZSBuZXR3b3JrIHZpZXcgYWZ0ZXIgd2hlbiBkb25lXG4gIHBhZGRpbmc6IDEwLCAvLyBQYWRkaW5nIG9uIGZpdFxuICByYW5kb21pemU6IGZhbHNlLCAvLyBXaGV0aGVyIHRvIGVuYWJsZSBpbmNyZW1lbnRhbCBtb2RlXG4gIGFuaW1hdGU6ICdlbmQnLCAvLyBUeXBlIG9mIGxheW91dCBhbmltYXRpb24uIFRoZSBvcHRpb24gc2V0IGlzIHsnZHVyaW5nJywgJ2VuZCcsIGZhbHNlfVxuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLCAvLyBEdXJhdGlvbiBmb3IgYW5pbWF0ZTplbmRcbiAgbm9kZVNlcGFyYXRpb246IDYwIC8vIEhvdyBhcGFydCB0aGUgbm9kZXMgYXJlXG59O1xuXG4vKipcbiAqICBUaGlzIGlzIHRoZSBtYWluIGNsYXNzIHRoYXQgZG9lcyBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkuXG4gKiAgVGhlIGNsYXNzIGlzIHV0aWxpemVkIGJ5IGZ1bmN0aW9ucyBpbiB0aGUgY29udGludW91cy1iYXNlIGZvbGRlci5cbiAqL1xuXG52YXIgQVZTREYgPSBmdW5jdGlvbiAoX0NvbnRpbnVvdXNMYXlvdXQpIHtcbiAgX2luaGVyaXRzKEFWU0RGLCBfQ29udGludW91c0xheW91dCk7XG5cbiAgZnVuY3Rpb24gQVZTREYob3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBVlNERik7XG5cbiAgICAvLyBXaGV0aGVyIG5vZGUgc2VwYXJhdGlvbiB2YWx1ZSBpcyB1c2VkXG4gICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKEFWU0RGLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoQVZTREYpKS5jYWxsKHRoaXMsIGFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdGlvbnMpKSk7XG5cbiAgICBpZiAob3B0aW9ucy5ub2RlU2VwYXJhdGlvbiAhPSBudWxsKSBBVlNERkNvbnN0YW50cy5ERUZBVUxUX05PREVfU0VQQVJBVElPTiA9IG9wdGlvbnMubm9kZVNlcGFyYXRpb247ZWxzZSBBVlNERkNvbnN0YW50cy5ERUZBVUxUX05PREVfU0VQQVJBVElPTiA9IGRlZmF1bHRzLm5vZGVTZXBhcmF0aW9uO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgSW5pdGlhbGl6aW5nIEFWU0RGIGVsZW1lbnRzIGFuZCBhcnJhbmdpbmcgdGhlIG5vZGVzIG9mIHRoZSBncmFwaCBhcm91bmQgdGhlIGNpcmNsZVxuICAgKi9cblxuXG4gIF9jcmVhdGVDbGFzcyhBVlNERiwgW3tcbiAgICBrZXk6ICdwcmVydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcmVydW4oKSB7XG4gICAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlOyAvLyBvcHRpb25zIG9iamVjdCBjb21iaW5lZCB3aXRoIGN1cnJlbnQgc3RhdGVcblxuICAgICAgLy8gSW5pdGlhbGl6ZSBBVlNERiBlbGVtZW50cyBhbmQgdGhlaXIgcmVxdWlyZW1lbnRzXG4gICAgICB2YXIgYXZzZGZMYXlvdXQgPSB0aGlzLmF2c2RmTGF5b3V0ID0gbmV3IEFWU0RGTGF5b3V0KCk7XG4gICAgICB2YXIgZ3JhcGhNYW5hZ2VyID0gdGhpcy5ncmFwaE1hbmFnZXIgPSBhdnNkZkxheW91dC5uZXdHcmFwaE1hbmFnZXIoKTtcbiAgICAgIHZhciByb290ID0gdGhpcy5yb290ID0gZ3JhcGhNYW5hZ2VyLmFkZFJvb3QoKTtcbiAgICAgIHZhciBub2RlcyA9IHN0YXRlLm5vZGVzO1xuICAgICAgdmFyIGVkZ2VzID0gc3RhdGUuZWRnZXM7XG5cbiAgICAgIC8vIEdldHRpbmcgbm9kZXMgb2YgY3l0b3NjYXBlIGFuZCBjb252ZXJ0aW5nIGl0IHRvIEFWU0RGIHN0cnVjdHVyZVxuICAgICAgdGhpcy5pZFRvTE5vZGUgPSB7fTtcbiAgICAgIHRoaXMucHJvY2Vzc0NoaWxkcmVuTGlzdChyb290LCBub2RlcywgYXZzZGZMYXlvdXQpO1xuXG4gICAgICAvLyBHZXR0aW5nIGVkZ2VzIG9mIGN5dG9zY2FwZSBhbmQgdHJhbnNmZXJpbmcgaXQgdG8gR3JhcGhNYW5hZ2VyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICAgIHZhciBzb3VyY2VOb2RlID0gdGhpcy5pZFRvTE5vZGVbZWRnZS5kYXRhKFwic291cmNlXCIpXTtcbiAgICAgICAgdmFyIHRhcmdldE5vZGUgPSB0aGlzLmlkVG9MTm9kZVtlZGdlLmRhdGEoXCJ0YXJnZXRcIildO1xuICAgICAgICBpZiAoc291cmNlTm9kZSAhPT0gdGFyZ2V0Tm9kZSAmJiBzb3VyY2VOb2RlLmdldEVkZ2VzQmV0d2Vlbih0YXJnZXROb2RlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB2YXIgZTEgPSBncmFwaE1hbmFnZXIuYWRkKGF2c2RmTGF5b3V0Lm5ld0VkZ2UoKSwgc291cmNlTm9kZSwgdGFyZ2V0Tm9kZSk7XG4gICAgICAgICAgZTEuaWQgPSBlZGdlLmlkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUnVubmluZyB0aGUgQVZTREYgbGF5b3V0LlxuICAgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvIHBvc3QtcHJvY2Vzc2luZy4gUGx1cywgbm9kZXMgaGF2ZSB0byBiZSBwb3NpdGlvbmVkLlxuICAgICAgLy8gU2VlIEFWU0RGTGF5b3V0IGZvciBkZXRhaWxzLlxuICAgICAgYXZzZGZMYXlvdXQubGF5b3V0KCk7XG5cbiAgICAgIC8vIFdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBpbml0aWFsIGNpcmNsZSBwb3NpdGlvbiBpZiB3ZSB3YW50IHRvIHJlbmRlciBpdFxuICAgICAgYXZzZGZMYXlvdXQudXBkYXRlTm9kZUNvb3JkaW5hdGVzKCk7XG5cbiAgICAgIC8vIFBvc3QgcHJvY2VzcyBpcyBpdGVyYXRlZCBvdmVyIHRoZSBzb3J0ZWQgbGlzdCBvZiB2ZXJ0ZXggZGVncmVlcyAoZGVzY2VuZGluZylcbiAgICAgIHRoaXMuc29ydGVkQnlEZWdyZWVMaXN0ID0gYXZzZGZMYXlvdXQuaW5pdFBvc3RQcm9jZXNzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJ1bnMgdGhpcyBpbiBlYWNoIGl0ZXJhdGlvblxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICd0aWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGljaygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIGdldHRpbmcgY29vcmRpbmF0ZXMgZnJvbSBBVlNERiBlbGVtZW50cyBhbmQgcGFzc2luZyBpdCB0byBjeXRvc2NhcGVcbiAgICAgIHZhciBwb3NpdGlvbnMgPSB0aGlzLmF2c2RmTGF5b3V0LmdldFBvc2l0aW9uc0RhdGEoKTtcbiAgICAgIHN0YXRlLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgdmFyIHMgPSBfdGhpczIuZ2V0U2NyYXRjaChuKTtcblxuICAgICAgICAvLyBleGFtcGxlIDogcHV0IG5vZGUgYXQgcmFuZG9tIHBvc2l0aW9uXG4gICAgICAgIHMueCA9IHBvc2l0aW9uc1tuLmRhdGEoJ2lkJyldLng7XG4gICAgICAgIHMueSA9IHBvc2l0aW9uc1tuLmRhdGEoJ2lkJyldLnk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHN0YXRlLnRpY2tJbmRleCA+PSBzdGF0ZS5ub2Rlcy5zaXplKCkpIHJldHVybiB0cnVlO1xuXG4gICAgICB0aGlzLmF2c2RmTGF5b3V0Lm9uZVN0ZXBQb3N0UHJvY2Vzcyh0aGlzLnNvcnRlZEJ5RGVncmVlTGlzdFtzdGF0ZS50aWNrSW5kZXhdKTtcbiAgICAgIHRoaXMuYXZzZGZMYXlvdXQudXBkYXRlTm9kZUFuZ2xlcygpO1xuICAgICAgdGhpcy5hdnNkZkxheW91dC51cGRhdGVOb2RlQ29vcmRpbmF0ZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUnVucyB0aGlzIGZ1bmN0aW9uIGFmdGVyIHRoZSBsYXlvdXQgaXMgZG9uZSB0aWNraW5nXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3Bvc3RydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3N0cnVuKCkge31cblxuICAgIC8qKlxuICAgICAqICBDbGVhbiB1cCBhbnkgb2JqZWN0IHJlZnMgdGhhdCBjb3VsZCBwcmV2ZW50IGdhcmJhZ2UgY29sbGVjdGlvbiwgZXRjLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdkZXN0cm95JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIF9nZXQoQVZTREYucHJvdG90eXBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoQVZTREYucHJvdG90eXBlKSwgJ2Rlc3Ryb3knLCB0aGlzKS5jYWxsKHRoaXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFRyYW5zaXRpb24gZnJvbSBjeXRvc2NhcGUgbm9kZXMgdG8gQVZTREYgZWxlbWVudHNcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAncHJvY2Vzc0NoaWxkcmVuTGlzdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByb2Nlc3NDaGlsZHJlbkxpc3QocGFyZW50LCBjaGlsZHJlbiwgbGF5b3V0KSB7XG4gICAgICB2YXIgc2l6ZSA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIHZhciB0aGVDaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgdGhlTm9kZSA9IHZvaWQgMDtcblxuICAgICAgICAvL0xhYmVsIGRpbWVuc2lvbnMgYXJlIE5PVCBpbmNsdWRlZCB3aGVuIGNhbGN1bGF0aW5nIG5vZGUgZGltZW5zaW9uc1xuICAgICAgICB2YXIgZGltZW5zaW9ucyA9IHRoZUNoaWxkLmxheW91dERpbWVuc2lvbnMoe1xuICAgICAgICAgIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoZUNoaWxkLm91dGVyV2lkdGgoKSAhPSBudWxsICYmIHRoZUNoaWxkLm91dGVySGVpZ2h0KCkgIT0gbnVsbCkge1xuICAgICAgICAgIHRoZU5vZGUgPSBwYXJlbnQuYWRkKG5ldyBBVlNERk5vZGUobGF5b3V0LmdyYXBoTWFuYWdlciwgbnVsbCwgbmV3IFBvaW50RCh0aGVDaGlsZC5wb3NpdGlvbigneCcpIC0gZGltZW5zaW9ucy53IC8gMiwgdGhlQ2hpbGQucG9zaXRpb24oJ3knKSAtIGRpbWVuc2lvbnMuaCAvIDIpLCBuZXcgRGltZW5zaW9uRChwYXJzZUZsb2F0KGRpbWVuc2lvbnMudyksIHBhcnNlRmxvYXQoZGltZW5zaW9ucy5oKSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGVOb2RlID0gcGFyZW50LmFkZChuZXcgQVZTREZOb2RlKHRoaXMuZ3JhcGhNYW5hZ2VyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdHRhY2ggaWQgdG8gdGhlIGxheW91dCBub2RlXG4gICAgICAgIHRoZU5vZGUuaWQgPSB0aGVDaGlsZC5kYXRhKFwiaWRcIik7XG5cbiAgICAgICAgLy8gQXR0YWNoIHRoZSBwYWRkaW5ncyBvZiBjeSBub2RlIHRvIGxheW91dCBub2RlXG4gICAgICAgIHRoZU5vZGUucGFkZGluZ0xlZnQgPSBwYXJzZUludCh0aGVDaGlsZC5jc3MoJ3BhZGRpbmcnKSk7XG4gICAgICAgIHRoZU5vZGUucGFkZGluZ1RvcCA9IHBhcnNlSW50KHRoZUNoaWxkLmNzcygncGFkZGluZycpKTtcbiAgICAgICAgdGhlTm9kZS5wYWRkaW5nUmlnaHQgPSBwYXJzZUludCh0aGVDaGlsZC5jc3MoJ3BhZGRpbmcnKSk7XG4gICAgICAgIHRoZU5vZGUucGFkZGluZ0JvdHRvbSA9IHBhcnNlSW50KHRoZUNoaWxkLmNzcygncGFkZGluZycpKTtcblxuICAgICAgICAvLyBNYXAgdGhlIGxheW91dCBub2RlXG4gICAgICAgIHRoaXMuaWRUb0xOb2RlW3RoZUNoaWxkLmRhdGEoXCJpZFwiKV0gPSB0aGVOb2RlO1xuXG4gICAgICAgIGlmIChpc05hTih0aGVOb2RlLnJlY3QueCkpIHtcbiAgICAgICAgICB0aGVOb2RlLnJlY3QueCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOYU4odGhlTm9kZS5yZWN0LnkpKSB7XG4gICAgICAgICAgdGhlTm9kZS5yZWN0LnkgPSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFWU0RGO1xufShDb250aW51b3VzTGF5b3V0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBVlNERjtcblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8vIGdlbmVyYWwgZGVmYXVsdCBvcHRpb25zIGZvciBmb3JjZS1kaXJlY3RlZCBsYXlvdXRcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZnJlZXplKHtcbiAgYW5pbWF0ZTogdHJ1ZSwgLy8gd2hldGhlciB0byBzaG93IHRoZSBsYXlvdXQgYXMgaXQncyBydW5uaW5nOyBzcGVjaWFsICdlbmQnIHZhbHVlIG1ha2VzIHRoZSBsYXlvdXQgYW5pbWF0ZSBsaWtlIGEgZGlzY3JldGUgbGF5b3V0XG4gIHJlZnJlc2g6IDEwLCAvLyBudW1iZXIgb2YgdGlja3MgcGVyIGZyYW1lOyBoaWdoZXIgaXMgZmFzdGVyIGJ1dCBtb3JlIGplcmt5XG4gIG1heEl0ZXJhdGlvbnM6IDEwMDAsIC8vIG1heCBpdGVyYXRpb25zIGJlZm9yZSB0aGUgbGF5b3V0IHdpbGwgYmFpbCBvdXRcbiAgdW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nOiBmYWxzZSwgLy8gc28geW91IGNhbid0IGRyYWcgbm9kZXMgZHVyaW5nIGxheW91dFxuICBmaXQ6IHRydWUsIC8vIG9uIGV2ZXJ5IGxheW91dCByZXBvc2l0aW9uIG9mIG5vZGVzLCBmaXQgdGhlIHZpZXdwb3J0XG4gIHBhZGRpbmc6IDMwLCAvLyBwYWRkaW5nIGFyb3VuZCB0aGUgc2ltdWxhdGlvblxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLCAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cblxuICAvLyBsYXlvdXQgZXZlbnQgY2FsbGJhY2tzXG4gIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHt9LCAvLyBvbiBsYXlvdXRyZWFkeVxuICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge30sIC8vIG9uIGxheW91dHN0b3BcblxuICAvLyBwb3NpdGlvbmluZyBvcHRpb25zXG4gIHJhbmRvbWl6ZTogZmFsc2UsIC8vIHVzZSByYW5kb20gbm9kZSBwb3NpdGlvbnMgYXQgYmVnaW5uaW5nIG9mIGxheW91dFxuXG4gIC8vIGluZmluaXRlIGxheW91dCBvcHRpb25zXG4gIGluZmluaXRlOiBmYWxzZSAvLyBvdmVycmlkZXMgYWxsIG90aGVyIG9wdGlvbnMgZm9yIGEgZm9yY2VzLWFsbC10aGUtdGltZSBtb2RlXG59KTtcblxuLyoqKi8gfSksXG4vKiA2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbi8qKlxuIEEgZ2VuZXJpYyBjb250aW51b3VzIGxheW91dCBjbGFzc1xuICovXG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIGRlZmF1bHRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbnZhciBtYWtlQm91bmRpbmdCb3ggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG52YXIgX3JlcXVpcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpLFxuICAgIHNldEluaXRpYWxQb3NpdGlvblN0YXRlID0gX3JlcXVpcmUuc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUsXG4gICAgcmVmcmVzaFBvc2l0aW9ucyA9IF9yZXF1aXJlLnJlZnJlc2hQb3NpdGlvbnMsXG4gICAgZ2V0Tm9kZVBvc2l0aW9uRGF0YSA9IF9yZXF1aXJlLmdldE5vZGVQb3NpdGlvbkRhdGE7XG5cbnZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpLFxuICAgIG11bHRpdGljayA9IF9yZXF1aXJlMi5tdWx0aXRpY2s7XG5cbnZhciBMYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExheW91dChvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExheW91dCk7XG5cbiAgICB2YXIgbyA9IHRoaXMub3B0aW9ucyA9IGFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdGlvbnMpO1xuXG4gICAgdmFyIHMgPSB0aGlzLnN0YXRlID0gYXNzaWduKHt9LCBvLCB7XG4gICAgICBsYXlvdXQ6IHRoaXMsXG4gICAgICBub2Rlczogby5lbGVzLm5vZGVzKCksXG4gICAgICBlZGdlczogby5lbGVzLmVkZ2VzKCksXG4gICAgICB0aWNrSW5kZXg6IDAsXG4gICAgICBmaXJzdFVwZGF0ZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgcy5hbmltYXRlRW5kID0gby5hbmltYXRlICYmIG8uYW5pbWF0ZSA9PT0gJ2VuZCc7XG4gICAgcy5hbmltYXRlQ29udGludW91c2x5ID0gby5hbmltYXRlICYmICFzLmFuaW1hdGVFbmQ7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTGF5b3V0LCBbe1xuICAgIGtleTogJ2dldFNjcmF0Y2gnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTY3JhdGNoKGVsKSB7XG4gICAgICB2YXIgbmFtZSA9IHRoaXMuc3RhdGUubmFtZTtcbiAgICAgIHZhciBzY3JhdGNoID0gZWwuc2NyYXRjaChuYW1lKTtcblxuICAgICAgaWYgKCFzY3JhdGNoKSB7XG4gICAgICAgIHNjcmF0Y2ggPSB7fTtcblxuICAgICAgICBlbC5zY3JhdGNoKG5hbWUsIHNjcmF0Y2gpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2NyYXRjaDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oKSB7XG4gICAgICB2YXIgbCA9IHRoaXM7XG4gICAgICB2YXIgcyA9IHRoaXMuc3RhdGU7XG5cbiAgICAgIHMudGlja0luZGV4ID0gMDtcbiAgICAgIHMuZmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgICAgcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgcy5ydW5uaW5nID0gdHJ1ZTtcblxuICAgICAgcy5jdXJyZW50Qm91bmRpbmdCb3ggPSBtYWtlQm91bmRpbmdCb3gocy5ib3VuZGluZ0JveCwgcy5jeSk7XG5cbiAgICAgIGlmIChzLnJlYWR5KSB7XG4gICAgICAgIGwub25lKCdyZWFkeScsIHMucmVhZHkpO1xuICAgICAgfVxuICAgICAgaWYgKHMuc3RvcCkge1xuICAgICAgICBsLm9uZSgnc3RvcCcsIHMuc3RvcCk7XG4gICAgICB9XG5cbiAgICAgIHMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUobiwgcyk7XG4gICAgICB9KTtcblxuICAgICAgbC5wcmVydW4ocyk7XG5cbiAgICAgIGlmIChzLmFuaW1hdGVDb250aW51b3VzbHkpIHtcbiAgICAgICAgdmFyIHVuZ3JhYmlmeSA9IGZ1bmN0aW9uIHVuZ3JhYmlmeShub2RlKSB7XG4gICAgICAgICAgaWYgKCFzLnVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBncmFiYmFibGUgPSBnZXROb2RlUG9zaXRpb25EYXRhKG5vZGUsIHMpLmdyYWJiYWJsZSA9IG5vZGUuZ3JhYmJhYmxlKCk7XG5cbiAgICAgICAgICBpZiAoZ3JhYmJhYmxlKSB7XG4gICAgICAgICAgICBub2RlLnVuZ3JhYmlmeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgcmVncmFiaWZ5ID0gZnVuY3Rpb24gcmVncmFiaWZ5KG5vZGUpIHtcbiAgICAgICAgICBpZiAoIXMudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGdyYWJiYWJsZSA9IGdldE5vZGVQb3NpdGlvbkRhdGEobm9kZSwgcykuZ3JhYmJhYmxlO1xuXG4gICAgICAgICAgaWYgKGdyYWJiYWJsZSkge1xuICAgICAgICAgICAgbm9kZS5ncmFiaWZ5KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciB1cGRhdGVHcmFiU3RhdGUgPSBmdW5jdGlvbiB1cGRhdGVHcmFiU3RhdGUobm9kZSkge1xuICAgICAgICAgIHJldHVybiBnZXROb2RlUG9zaXRpb25EYXRhKG5vZGUsIHMpLmdyYWJiZWQgPSBub2RlLmdyYWJiZWQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgb25HcmFiID0gZnVuY3Rpb24gb25HcmFiKF9yZWYpIHtcbiAgICAgICAgICB2YXIgdGFyZ2V0ID0gX3JlZi50YXJnZXQ7XG5cbiAgICAgICAgICB1cGRhdGVHcmFiU3RhdGUodGFyZ2V0KTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgb25GcmVlID0gb25HcmFiO1xuXG4gICAgICAgIHZhciBvbkRyYWcgPSBmdW5jdGlvbiBvbkRyYWcoX3JlZjIpIHtcbiAgICAgICAgICB2YXIgdGFyZ2V0ID0gX3JlZjIudGFyZ2V0O1xuXG4gICAgICAgICAgdmFyIHAgPSBnZXROb2RlUG9zaXRpb25EYXRhKHRhcmdldCwgcyk7XG4gICAgICAgICAgdmFyIHRwID0gdGFyZ2V0LnBvc2l0aW9uKCk7XG5cbiAgICAgICAgICBwLnggPSB0cC54O1xuICAgICAgICAgIHAueSA9IHRwLnk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGxpc3RlblRvR3JhYiA9IGZ1bmN0aW9uIGxpc3RlblRvR3JhYihub2RlKSB7XG4gICAgICAgICAgbm9kZS5vbignZ3JhYicsIG9uR3JhYik7XG4gICAgICAgICAgbm9kZS5vbignZnJlZScsIG9uRnJlZSk7XG4gICAgICAgICAgbm9kZS5vbignZHJhZycsIG9uRHJhZyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIHVubGlzdGVuVG9HcmFiID0gZnVuY3Rpb24gdW5saXN0ZW5Ub0dyYWIobm9kZSkge1xuICAgICAgICAgIG5vZGUucmVtb3ZlTGlzdGVuZXIoJ2dyYWInLCBvbkdyYWIpO1xuICAgICAgICAgIG5vZGUucmVtb3ZlTGlzdGVuZXIoJ2ZyZWUnLCBvbkZyZWUpO1xuICAgICAgICAgIG5vZGUucmVtb3ZlTGlzdGVuZXIoJ2RyYWcnLCBvbkRyYWcpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBmaXQgPSBmdW5jdGlvbiBmaXQoKSB7XG4gICAgICAgICAgaWYgKHMuZml0ICYmIHMuYW5pbWF0ZUNvbnRpbnVvdXNseSkge1xuICAgICAgICAgICAgcy5jeS5maXQocy5wYWRkaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIG9uTm90RG9uZSA9IGZ1bmN0aW9uIG9uTm90RG9uZSgpIHtcbiAgICAgICAgICByZWZyZXNoUG9zaXRpb25zKHMubm9kZXMsIHMpO1xuICAgICAgICAgIGZpdCgpO1xuXG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKF9mcmFtZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIF9mcmFtZSA9IGZ1bmN0aW9uIF9mcmFtZSgpIHtcbiAgICAgICAgICBtdWx0aXRpY2socywgb25Ob3REb25lLCBfb25Eb25lKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgX29uRG9uZSA9IGZ1bmN0aW9uIF9vbkRvbmUoKSB7XG4gICAgICAgICAgcmVmcmVzaFBvc2l0aW9ucyhzLm5vZGVzLCBzKTtcbiAgICAgICAgICBmaXQoKTtcblxuICAgICAgICAgIHMubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgcmVncmFiaWZ5KG4pO1xuICAgICAgICAgICAgdW5saXN0ZW5Ub0dyYWIobik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBzLnJ1bm5pbmcgPSBmYWxzZTtcblxuICAgICAgICAgIGwuZW1pdCgnbGF5b3V0c3RvcCcpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGwuZW1pdCgnbGF5b3V0c3RhcnQnKTtcblxuICAgICAgICBzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICB1bmdyYWJpZnkobik7XG4gICAgICAgICAgbGlzdGVuVG9HcmFiKG4pO1xuICAgICAgICB9KTtcblxuICAgICAgICBfZnJhbWUoKTsgLy8ga2ljayBvZmZcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICAgIHZhciBfb25Ob3REb25lID0gZnVuY3Rpb24gX29uTm90RG9uZSgpIHt9O1xuICAgICAgICB2YXIgX29uRG9uZTIgPSBmdW5jdGlvbiBfb25Eb25lMigpIHtcbiAgICAgICAgICByZXR1cm4gZG9uZSA9IHRydWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgbXVsdGl0aWNrKHMsIF9vbk5vdERvbmUsIF9vbkRvbmUyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHMuZWxlcy5sYXlvdXRQb3NpdGlvbnModGhpcywgcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICB2YXIgcGQgPSBnZXROb2RlUG9zaXRpb25EYXRhKG5vZGUsIHMpO1xuXG4gICAgICAgICAgcmV0dXJuIHsgeDogcGQueCwgeTogcGQueSB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgbC5wb3N0cnVuKHMpO1xuXG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwcmVydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcmVydW4oKSB7fVxuICB9LCB7XG4gICAga2V5OiAncG9zdHJ1bicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBvc3RydW4oKSB7fVxuICB9LCB7XG4gICAga2V5OiAndGljaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRpY2soKSB7fVxuICB9LCB7XG4gICAga2V5OiAnc3RvcCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICB0aGlzLnN0YXRlLnJ1bm5pbmcgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZGVzdHJveScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGF5b3V0O1xufSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IExheW91dDtcblxuLyoqKi8gfSksXG4vKiA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJiLCBjeSkge1xuICBpZiAoYmIgPT0gbnVsbCkge1xuICAgIGJiID0geyB4MTogMCwgeTE6IDAsIHc6IGN5LndpZHRoKCksIGg6IGN5LmhlaWdodCgpIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gY29weVxuICAgIGJiID0geyB4MTogYmIueDEsIHgyOiBiYi54MiwgeTE6IGJiLnkxLCB5MjogYmIueTIsIHc6IGJiLncsIGg6IGJiLmggfTtcbiAgfVxuXG4gIGlmIChiYi54MiA9PSBudWxsKSB7XG4gICAgYmIueDIgPSBiYi54MSArIGJiLnc7XG4gIH1cbiAgaWYgKGJiLncgPT0gbnVsbCkge1xuICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICB9XG4gIGlmIChiYi55MiA9PSBudWxsKSB7XG4gICAgYmIueTIgPSBiYi55MSArIGJiLmg7XG4gIH1cbiAgaWYgKGJiLmggPT0gbnVsbCkge1xuICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICB9XG5cbiAgcmV0dXJuIGJiO1xufTtcblxuLyoqKi8gfSksXG4vKiA4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG52YXIgc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUgPSBmdW5jdGlvbiBzZXRJbml0aWFsUG9zaXRpb25TdGF0ZShub2RlLCBzdGF0ZSkge1xuICB2YXIgcCA9IG5vZGUucG9zaXRpb24oKTtcbiAgdmFyIGJiID0gc3RhdGUuY3VycmVudEJvdW5kaW5nQm94O1xuICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaChzdGF0ZS5uYW1lKTtcblxuICBpZiAoc2NyYXRjaCA9PSBudWxsKSB7XG4gICAgc2NyYXRjaCA9IHt9O1xuXG4gICAgbm9kZS5zY3JhdGNoKHN0YXRlLm5hbWUsIHNjcmF0Y2gpO1xuICB9XG5cbiAgYXNzaWduKHNjcmF0Y2gsIHN0YXRlLnJhbmRvbWl6ZSA/IHtcbiAgICB4OiBiYi54MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLncpLFxuICAgIHk6IGJiLnkxICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogYmIuaClcbiAgfSA6IHtcbiAgICB4OiBwLngsXG4gICAgeTogcC55XG4gIH0pO1xuXG4gIHNjcmF0Y2gubG9ja2VkID0gbm9kZS5sb2NrZWQoKTtcbn07XG5cbnZhciBnZXROb2RlUG9zaXRpb25EYXRhID0gZnVuY3Rpb24gZ2V0Tm9kZVBvc2l0aW9uRGF0YShub2RlLCBzdGF0ZSkge1xuICByZXR1cm4gbm9kZS5zY3JhdGNoKHN0YXRlLm5hbWUpO1xufTtcblxudmFyIHJlZnJlc2hQb3NpdGlvbnMgPSBmdW5jdGlvbiByZWZyZXNoUG9zaXRpb25zKG5vZGVzLCBzdGF0ZSkge1xuICBub2Rlcy5wb3NpdGlvbnMoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaChzdGF0ZS5uYW1lKTtcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBzY3JhdGNoLngsXG4gICAgICB5OiBzY3JhdGNoLnlcbiAgICB9O1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0geyBzZXRJbml0aWFsUG9zaXRpb25TdGF0ZTogc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUsIGdldE5vZGVQb3NpdGlvbkRhdGE6IGdldE5vZGVQb3NpdGlvbkRhdGEsIHJlZnJlc2hQb3NpdGlvbnM6IHJlZnJlc2hQb3NpdGlvbnMgfTtcblxuLyoqKi8gfSksXG4vKiA5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBub3AgPSBmdW5jdGlvbiBub3AoKSB7fTtcblxudmFyIHRpY2sgPSBmdW5jdGlvbiB0aWNrKHN0YXRlKSB7XG4gIHZhciBzID0gc3RhdGU7XG4gIHZhciBsID0gc3RhdGUubGF5b3V0O1xuXG4gIHZhciB0aWNrSW5kaWNhdGVzRG9uZSA9IGwudGljayhzKTtcblxuICBpZiAocy5maXJzdFVwZGF0ZSkge1xuICAgIGlmIChzLmFuaW1hdGVDb250aW51b3VzbHkpIHtcbiAgICAgIC8vIGluZGljYXRlIHRoZSBpbml0aWFsIHBvc2l0aW9ucyBoYXZlIGJlZW4gc2V0XG4gICAgICBzLmxheW91dC5lbWl0KCdsYXlvdXRyZWFkeScpO1xuICAgIH1cbiAgICBzLmZpcnN0VXBkYXRlID0gZmFsc2U7XG4gIH1cblxuICBzLnRpY2tJbmRleCsrO1xuXG4gIHZhciBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzLnN0YXJ0VGltZTtcblxuICByZXR1cm4gIXMuaW5maW5pdGUgJiYgdGlja0luZGljYXRlc0RvbmU7XG59O1xuXG52YXIgbXVsdGl0aWNrID0gZnVuY3Rpb24gbXVsdGl0aWNrKHN0YXRlKSB7XG4gIHZhciBvbk5vdERvbmUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG5vcDtcbiAgdmFyIG9uRG9uZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogbm9wO1xuXG4gIHZhciBkb25lID0gZmFsc2U7XG4gIHZhciBzID0gc3RhdGU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLnJlZnJlc2g7IGkrKykge1xuICAgIGRvbmUgPSAhcy5ydW5uaW5nIHx8IHRpY2socyk7XG5cbiAgICBpZiAoZG9uZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFkb25lKSB7XG4gICAgb25Ob3REb25lKCk7XG4gIH0gZWxzZSB7XG4gICAgb25Eb25lKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0geyB0aWNrOiB0aWNrLCBtdWx0aXRpY2s6IG11bHRpdGljayB9O1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiLCIvKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gW107XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlQ2xlYXI7XG4iLCIvKipcbiAqIFBlcmZvcm1zIGFcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcTtcbiIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgaWYgKGluZGV4ID09IGxhc3RJbmRleCkge1xuICAgIGRhdGEucG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgc3BsaWNlLmNhbGwoZGF0YSwgaW5kZXgsIDEpO1xuICB9XG4gIC0tdGhpcy5zaXplO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVEZWxldGU7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlR2V0O1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVIYXM7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgKyt0aGlzLnNpemU7XG4gICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0gZWxzZSB7XG4gICAgZGF0YVtpbmRleF1bMV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVTZXQ7XG4iLCJ2YXIgbGlzdENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVDbGVhcicpLFxuICAgIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLFxuICAgIGxpc3RDYWNoZUdldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUdldCcpLFxuICAgIGxpc3RDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUhhcycpLFxuICAgIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlzdENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxubW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xuIiwidmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcmVKc0RhdGE7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hHZXQ7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgSGFzaCA9IHJlcXVpcmUoJy4vX0hhc2gnKSxcbiAgICBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgdGhpcy5zaXplID0gMDtcbiAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlQ2xlYXI7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCJ2YXIgbWFwQ2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX21hcENhY2hlQ2xlYXInKSxcbiAgICBtYXBDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX21hcENhY2hlRGVsZXRlJyksXG4gICAgbWFwQ2FjaGVHZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZUdldCcpLFxuICAgIG1hcENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVIYXMnKSxcbiAgICBtYXBDYWNoZVNldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgc3RhY2tDbGVhciA9IHJlcXVpcmUoJy4vX3N0YWNrQ2xlYXInKSxcbiAgICBzdGFja0RlbGV0ZSA9IHJlcXVpcmUoJy4vX3N0YWNrRGVsZXRlJyksXG4gICAgc3RhY2tHZXQgPSByZXF1aXJlKCcuL19zdGFja0dldCcpLFxuICAgIHN0YWNrSGFzID0gcmVxdWlyZSgnLi9fc3RhY2tIYXMnKSxcbiAgICBzdGFja1NldCA9IHJlcXVpcmUoJy4vX3N0YWNrU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuU3RhY2sucHJvdG90eXBlLmNsZWFyID0gc3RhY2tDbGVhcjtcblN0YWNrLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBzdGFja0RlbGV0ZTtcblN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcblN0YWNrLnByb3RvdHlwZS5oYXMgPSBzdGFja0hhcztcblN0YWNrLnByb3RvdHlwZS5zZXQgPSBzdGFja1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBTdGFjaztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUVhY2g7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnR5O1xuIiwidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduVmFsdWU7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduVmFsdWU7XG4iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpO1xuXG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5T2JqZWN0O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FyZ3VtZW50cztcbiIsInZhciBiYXNlSXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL19iYXNlSXNBcmd1bWVudHMnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FyZ3VtZW50cztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkZhbHNlO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzVHlwZWRBcnJheTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5hcnk7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiIsInZhciBiYXNlSXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fYmFzZUlzVHlwZWRBcnJheScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUHJvdG90eXBlO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5cztcbiIsInZhciBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXMnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2U7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c0luO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25JbjtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQnVmZmVyO1xuIiwiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXMpO1xuICogLy8gPT4gW1tdLCBbXV1cbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXNbMF0gPT09IGFycmF5c1sxXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBzdHViQXJyYXkoKSB7XG4gIHJldHVybiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViQXJyYXk7XG4iLCJ2YXIgYXJyYXlGaWx0ZXIgPSByZXF1aXJlKCcuL19hcnJheUZpbHRlcicpLFxuICAgIHN0dWJBcnJheSA9IHJlcXVpcmUoJy4vc3R1YkFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzO1xuIiwiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UHVzaDtcbiIsInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpO1xuXG4vKipcbiAqIENvcGllcyBvd24gYW5kIGluaGVyaXRlZCBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHNJbjtcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0QWxsS2V5cztcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5cztcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzSW47XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBXZWFrTWFwO1xuIiwidmFyIERhdGFWaWV3ID0gcmVxdWlyZSgnLi9fRGF0YVZpZXcnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLFxuICAgIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIFdlYWtNYXAgPSByZXF1aXJlKCcuL19XZWFrTWFwJyksXG4gICAgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xudmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbi8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbmlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGFnO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVBcnJheTtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVpbnQ4QXJyYXk7XG4iLCJ2YXIgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikge1xuICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQXJyYXlCdWZmZXI7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURhdGFWaWV3O1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVJlZ0V4cDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBgc3ltYm9sYCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzeW1ib2wgVGhlIHN5bWJvbCBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVTeW1ib2woc3ltYm9sKSB7XG4gIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lU3ltYm9sO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVUeXBlZEFycmF5O1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyksXG4gICAgY2xvbmVEYXRhVmlldyA9IHJlcXVpcmUoJy4vX2Nsb25lRGF0YVZpZXcnKSxcbiAgICBjbG9uZVJlZ0V4cCA9IHJlcXVpcmUoJy4vX2Nsb25lUmVnRXhwJyksXG4gICAgY2xvbmVTeW1ib2wgPSByZXF1aXJlKCcuL19jbG9uZVN5bWJvbCcpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjbG9uaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgcmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVCeVRhZztcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xudmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgIH1cbiAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuIiwidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIiwidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gbWFwVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hcDtcbiIsInZhciBiYXNlSXNNYXAgPSByZXF1aXJlKCcuL19iYXNlSXNNYXAnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzTWFwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNNYXA7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTWFwKG5ldyBNYXApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXA7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzU2V0O1xuIiwidmFyIGJhc2VJc1NldCA9IHJlcXVpcmUoJy4vX2Jhc2VJc1NldCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFNldGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTZXQobmV3IFNldCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNTZXQgPSBub2RlSXNTZXQgPyBiYXNlVW5hcnkobm9kZUlzU2V0KSA6IGJhc2VJc1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1NldDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ24gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduJyksXG4gICAgYmFzZUFzc2lnbkluID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbkluJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBjb3B5U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHNJbicpLFxuICAgIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaW5pdENsb25lQXJyYXkgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVBcnJheScpLFxuICAgIGluaXRDbG9uZUJ5VGFnID0gcmVxdWlyZSgnLi9faW5pdENsb25lQnlUYWcnKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNNYXAgPSByZXF1aXJlKCcuL2lzTWFwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTZXQgPSByZXF1aXJlKCcuL2lzU2V0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbnZhciBjbG9uZWFibGVUYWdzID0ge307XG5jbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG5jbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbmNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbmNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG5jbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICogdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBEZWVwIGNsb25lXG4gKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdCxcbiAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICBpZiAoY3VzdG9taXplcikge1xuICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgfVxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICBpZiAoaXNBcnIpIHtcbiAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgaWYgKCFpc0RlZXApIHtcbiAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgIH1cbiAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlXG4gKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICogbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcywgc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkXG4gKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICogYXMgZXJyb3Igb2JqZWN0cywgZnVuY3Rpb25zLCBET00gbm9kZXMsIGFuZCBXZWFrTWFwcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZTtcbiIsIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYCBhbmQgYF8uZm9yT3duYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgaXRlcmFibGUgPSBPYmplY3Qob2JqZWN0KSxcbiAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUZvcjtcbiIsInZhciBjcmVhdGVCYXNlRm9yID0gcmVxdWlyZSgnLi9fY3JlYXRlQmFzZUZvcicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvcjtcbiIsInZhciBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3JPd247XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUVhY2g7XG4iLCJ2YXIgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBjcmVhdGVCYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VFYWNoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKi9cbnZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VFYWNoO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqXG4gKiBjb25zb2xlLmxvZyhfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpZGVudGl0eTtcbiIsInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBjYXN0IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nID8gdmFsdWUgOiBpZGVudGl0eTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0RnVuY3Rpb247XG4iLCJ2YXIgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGNhc3RGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2Nhc3RGdW5jdGlvbicpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuXG4gKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqICoqTm90ZToqKiBBcyB3aXRoIG90aGVyIFwiQ29sbGVjdGlvbnNcIiBtZXRob2RzLCBvYmplY3RzIHdpdGggYSBcImxlbmd0aFwiXG4gKiBwcm9wZXJ0eSBhcmUgaXRlcmF0ZWQgbGlrZSBhcnJheXMuIFRvIGF2b2lkIHRoaXMgYmVoYXZpb3IgdXNlIGBfLmZvckluYFxuICogb3IgYF8uZm9yT3duYCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAYWxpYXMgZWFjaFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKiBAc2VlIF8uZm9yRWFjaFJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZm9yRWFjaChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyBgMWAgdGhlbiBgMmAuXG4gKlxuICogXy5mb3JFYWNoKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICogICBjb25zb2xlLmxvZyhrZXkpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2ggOiBiYXNlRWFjaDtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgY2FzdEZ1bmN0aW9uKGl0ZXJhdGVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9yRWFjaDtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mb3JFYWNoJyk7XG4iLCJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZpbHRlcjtcbiIsIi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBhZGRcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQGFsaWFzIHB1c2hcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlQWRkO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlSGFzO1xuIiwidmFyIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKSxcbiAgICBzZXRDYWNoZUFkZCA9IHJlcXVpcmUoJy4vX3NldENhY2hlQWRkJyksXG4gICAgc2V0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19zZXRDYWNoZUhhcycpO1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0Q2FjaGU7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5U29tZTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICB9XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKHNlZW4pIHtcbiAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEFycmF5cztcbiIsIi8qKlxuICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAqL1xuZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVG9BcnJheTtcbiIsIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBtYXBUb0FycmF5ID0gcmVxdWlyZSgnLi9fbWFwVG9BcnJheScpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgIChvYmplY3QuYnl0ZU9mZnNldCAhPSBvdGhlci5ieXRlT2Zmc2V0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBvYmplY3QuYnVmZmVyO1xuICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgY2FzZSBlcnJvclRhZzpcbiAgICAgIHJldHVybiBvYmplY3QubmFtZSA9PSBvdGhlci5uYW1lICYmIG9iamVjdC5tZXNzYWdlID09IG90aGVyLm1lc3NhZ2U7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIC8vIENvZXJjZSByZWdleGVzIHRvIHN0cmluZ3MgYW5kIHRyZWF0IHN0cmluZ3MsIHByaW1pdGl2ZXMgYW5kIG9iamVjdHMsXG4gICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdCA9PSAob3RoZXIgKyAnJyk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgaWYgKG9iamVjdC5zaXplICE9IG90aGVyLnNpemUgJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICBpZiAoc3ltYm9sVmFsdWVPZikge1xuICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxCeVRhZztcbiIsInZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbE9iamVjdHM7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBlcXVhbEJ5VGFnID0gcmVxdWlyZSgnLi9fZXF1YWxCeVRhZycpLFxuICAgIGVxdWFsT2JqZWN0cyA9IHJlcXVpcmUoJy4vX2VxdWFsT2JqZWN0cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgIG9iaklzT2JqID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgfVxuICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbERlZXA7XG4iLCJ2YXIgYmFzZUlzRXF1YWxEZWVwID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWxEZWVwJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gIH1cbiAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWw7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIEdldHMgdGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgcmVzdWx0W2xlbmd0aF0gPSBba2V5LCB2YWx1ZSwgaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXRjaERhdGE7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLFxuICAgIGdldE1hdGNoRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hdGNoRGF0YScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXM7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTeW1ib2w7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXk7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiIsInZhciBtZW1vaXplID0gcmVxdWlyZSgnLi9tZW1vaXplJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbnZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tZW1vaXplYCB3aGljaCBjbGVhcnMgdGhlIG1lbW9pemVkIGZ1bmN0aW9uJ3NcbiAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKGNhY2hlLnNpemUgPT09IE1BWF9NRU1PSVpFX1NJWkUpIHtcbiAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH0pO1xuXG4gIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplQ2FwcGVkO1xuIiwidmFyIG1lbW9pemVDYXBwZWQgPSByZXF1aXJlKCcuL19tZW1vaXplQ2FwcGVkJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICovXG52YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICByZXN1bHQucHVzaCgnJyk7XG4gIH1cbiAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb1BhdGg7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRvU3RyaW5nO1xuIiwidmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9TdHJpbmc7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICBzdHJpbmdUb1BhdGggPSByZXF1aXJlKCcuL19zdHJpbmdUb1BhdGgnKSxcbiAgICB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0UGF0aDtcbiIsInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9LZXk7XG4iLCJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IDAsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICB9XG4gIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0O1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICogLy8gPT4gJ2RlZmF1bHQnXG4gKi9cbmZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXQ7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzSW47XG4iLCJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGV4aXN0cyBvbiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYXNGdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjayBwcm9wZXJ0aWVzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzUGF0aChvYmplY3QsIHBhdGgsIGhhc0Z1bmMpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKTtcbiAgICBpZiAoIShyZXN1bHQgPSBvYmplY3QgIT0gbnVsbCAmJiBoYXNGdW5jKG9iamVjdCwga2V5KSkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBvYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgfVxuICBpZiAocmVzdWx0IHx8ICsraW5kZXggIT0gbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBsZW5ndGggPSBvYmplY3QgPT0gbnVsbCA/IDAgOiBvYmplY3QubGVuZ3RoO1xuICByZXR1cm4gISFsZW5ndGggJiYgaXNMZW5ndGgobGVuZ3RoKSAmJiBpc0luZGV4KGtleSwgbGVuZ3RoKSAmJlxuICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzUGF0aDtcbiIsInZhciBiYXNlSGFzSW4gPSByZXF1aXJlKCcuL19iYXNlSGFzSW4nKSxcbiAgICBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzSW47XG4iLCJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpLFxuICAgIGdldCA9IHJlcXVpcmUoJy4vZ2V0JyksXG4gICAgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlc1Byb3BlcnR5O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHk7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VQcm9wZXJ0eWAgd2hpY2ggc3VwcG9ydHMgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5RGVlcDtcbiIsInZhciBiYXNlUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHknKSxcbiAgICBiYXNlUHJvcGVydHlEZWVwID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5RGVlcCcpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW1xuICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gKiBdO1xuICpcbiAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAqIC8vID0+IFsyLCAxXVxuICpcbiAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqL1xuZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICByZXR1cm4gaXNLZXkocGF0aCkgPyBiYXNlUHJvcGVydHkodG9LZXkocGF0aCkpIDogYmFzZVByb3BlcnR5RGVlcChwYXRoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwcm9wZXJ0eTtcbiIsInZhciBiYXNlTWF0Y2hlcyA9IHJlcXVpcmUoJy4vX2Jhc2VNYXRjaGVzJyksXG4gICAgYmFzZU1hdGNoZXNQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VNYXRjaGVzUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgcHJvcGVydHkgPSByZXF1aXJlKCcuL3Byb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXRlcmF0ZWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IFt2YWx1ZT1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgaXRlcmF0ZWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSkge1xuICAvLyBEb24ndCBzdG9yZSB0aGUgYHR5cGVvZmAgcmVzdWx0IGluIGEgdmFyaWFibGUgdG8gYXZvaWQgYSBKSVQgYnVnIGluIFNhZmFyaSA5LlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gaWRlbnRpdHk7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBpc0FycmF5KHZhbHVlKVxuICAgICAgPyBiYXNlTWF0Y2hlc1Byb3BlcnR5KHZhbHVlWzBdLCB2YWx1ZVsxXSlcbiAgICAgIDogYmFzZU1hdGNoZXModmFsdWUpO1xuICB9XG4gIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUl0ZXJhdGVlO1xuIiwidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBiYXNlRmlsdGVyID0gcmVxdWlyZSgnLi9fYmFzZUZpbHRlcicpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqIEBzZWUgXy5yZWplY3RcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gKiBdO1xuICpcbiAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gQ29tYmluaW5nIHNldmVyYWwgcHJlZGljYXRlcyB1c2luZyBgXy5vdmVyRXZlcnlgIG9yIGBfLm92ZXJTb21lYC5cbiAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICovXG5mdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbHRlcjtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzO1xuIiwidmFyIGJhc2VIYXMgPSByZXF1aXJlKCcuL19iYXNlSGFzJyksXG4gICAgaGFzUGF0aCA9IHJlcXVpcmUoJy4vX2hhc1BhdGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXMob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob3RoZXIsICdhJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzO1xuIiwidmFyIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBlbXB0eSBvYmplY3QsIGNvbGxlY3Rpb24sIG1hcCwgb3Igc2V0LlxuICpcbiAqIE9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIG5vIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZFxuICogcHJvcGVydGllcy5cbiAqXG4gKiBBcnJheS1saWtlIHZhbHVlcyBzdWNoIGFzIGBhcmd1bWVudHNgIG9iamVjdHMsIGFycmF5cywgYnVmZmVycywgc3RyaW5ncywgb3JcbiAqIGpRdWVyeS1saWtlIGNvbGxlY3Rpb25zIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBsZW5ndGhgIG9mIGAwYC5cbiAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGVtcHR5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNFbXB0eShudWxsKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkodHJ1ZSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KDEpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eShbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzRW1wdHkoeyAnYSc6IDEgfSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgaXNCdWZmZXIodmFsdWUpIHx8IGlzVHlwZWRBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpKSkge1xuICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpO1xuICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICB9XG4gIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFbXB0eTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1VuZGVmaW5lZDtcbiIsInZhciBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hcDtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZU1hcCA9IHJlcXVpcmUoJy4vX2Jhc2VNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnVcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICpcbiAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICogYF8uZXZlcnlgLCBgXy5maWx0ZXJgLCBgXy5tYXBgLCBgXy5tYXBWYWx1ZXNgLCBgXy5yZWplY3RgLCBhbmQgYF8uc29tZWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXJ5YCwgYGNodW5rYCwgYGN1cnJ5YCwgYGN1cnJ5UmlnaHRgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZXZlcnlgLFxuICogYGZpbGxgLCBgaW52ZXJ0YCwgYHBhcnNlSW50YCwgYHJhbmRvbWAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlcGVhdGAsXG4gKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gKiBgdGVtcGxhdGVgLCBgdHJpbWAsIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGFuZCBgd29yZHNgXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICogICByZXR1cm4gbiAqIG47XG4gKiB9XG4gKlxuICogXy5tYXAoWzQsIDhdLCBzcXVhcmUpO1xuICogLy8gPT4gWzE2LCA2NF1cbiAqXG4gKiBfLm1hcCh7ICdhJzogNCwgJ2InOiA4IH0sIHNxdWFyZSk7XG4gKiAvLyA9PiBbMTYsIDY0XSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICogXTtcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8ubWFwKHVzZXJzLCAndXNlcicpO1xuICogLy8gPT4gWydiYXJuZXknLCAnZnJlZCddXG4gKi9cbmZ1bmN0aW9uIG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheU1hcCA6IGJhc2VNYXA7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcDtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnJlZHVjZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGFycmF5WysraW5kZXhdO1xuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpdGVyYXRlZShhY2N1bXVsYXRvciwgYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVJlZHVjZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVkdWNlYCBhbmQgYF8ucmVkdWNlUmlnaHRgLCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlUmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBlYWNoRnVuYykge1xuICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgPyAoaW5pdEFjY3VtID0gZmFsc2UsIHZhbHVlKVxuICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVkdWNlO1xuIiwidmFyIGFycmF5UmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXlSZWR1Y2UnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZVJlZHVjZSA9IHJlcXVpcmUoJy4vX2Jhc2VSZWR1Y2UnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAqIGFuZCBgc29ydEJ5YFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICogICByZXR1cm4gc3VtICsgbjtcbiAqIH0sIDApO1xuICogLy8gPT4gM1xuICpcbiAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAqICAgcmV0dXJuIHJlc3VsdDtcbiAqIH0sIHt9KTtcbiAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVkdWNlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIiwidmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpO1xuXG4vKipcbiAqIEdldHMgdGhlIHNpemUgb2YgYW4gQVNDSUkgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gKi9cbnZhciBhc2NpaVNpemUgPSBiYXNlUHJvcGVydHkoJ2xlbmd0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFzY2lpU2l6ZTtcbiIsIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbnZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9SYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1VuaWNvZGU7XG4iLCIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgcnNNb2RpZmllciA9ICcoPzonICsgcnNDb21ibyArICd8JyArIHJzRml0eiArICcpJyxcbiAgICByc05vbkFzdHJhbCA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgcnNTdXJyUGFpciA9ICdbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0nLFxuICAgIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSByZWdleGVzLiAqL1xudmFyIHJlT3B0TW9kID0gcnNNb2RpZmllciArICc/JyxcbiAgICByc09wdFZhciA9ICdbJyArIHJzVmFyUmFuZ2UgKyAnXT8nLFxuICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luLFxuICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4vKiogVXNlZCB0byBtYXRjaCBbc3RyaW5nIHN5bWJvbHNdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LXVuaWNvZGUpLiAqL1xudmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4vKipcbiAqIEdldHMgdGhlIHNpemUgb2YgYSBVbmljb2RlIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICovXG5mdW5jdGlvbiB1bmljb2RlU2l6ZShzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9IHJlVW5pY29kZS5sYXN0SW5kZXggPSAwO1xuICB3aGlsZSAocmVVbmljb2RlLnRlc3Qoc3RyaW5nKSkge1xuICAgICsrcmVzdWx0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pY29kZVNpemU7XG4iLCJ2YXIgYXNjaWlTaXplID0gcmVxdWlyZSgnLi9fYXNjaWlTaXplJyksXG4gICAgaGFzVW5pY29kZSA9IHJlcXVpcmUoJy4vX2hhc1VuaWNvZGUnKSxcbiAgICB1bmljb2RlU2l6ZSA9IHJlcXVpcmUoJy4vX3VuaWNvZGVTaXplJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKSB7XG4gIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICA/IHVuaWNvZGVTaXplKHN0cmluZylcbiAgICA6IGFzY2lpU2l6ZShzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ1NpemU7XG4iLCJ2YXIgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzU3RyaW5nID0gcmVxdWlyZSgnLi9pc1N0cmluZycpLFxuICAgIHN0cmluZ1NpemUgPSByZXF1aXJlKCcuL19zdHJpbmdTaXplJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqXG4gKiBHZXRzIHRoZSBzaXplIG9mIGBjb2xsZWN0aW9uYCBieSByZXR1cm5pbmcgaXRzIGxlbmd0aCBmb3IgYXJyYXktbGlrZVxuICogdmFsdWVzIG9yIHRoZSBudW1iZXIgb2Ygb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgZm9yIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29sbGVjdGlvbiBzaXplLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnNpemUoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnNpemUoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAqIC8vID0+IDJcbiAqXG4gKiBfLnNpemUoJ3BlYmJsZXMnKTtcbiAqIC8vID0+IDdcbiAqL1xuZnVuY3Rpb24gc2l6ZShjb2xsZWN0aW9uKSB7XG4gIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAoaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbikgPyBzdHJpbmdTaXplKGNvbGxlY3Rpb24pIDogY29sbGVjdGlvbi5sZW5ndGg7XG4gIH1cbiAgdmFyIHRhZyA9IGdldFRhZyhjb2xsZWN0aW9uKTtcbiAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgIHJldHVybiBjb2xsZWN0aW9uLnNpemU7XG4gIH1cbiAgcmV0dXJuIGJhc2VLZXlzKGNvbGxlY3Rpb24pLmxlbmd0aDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaXplO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKlxuICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gKiB9LCBbXSk7XG4gKiAvLyA9PiBbNCwgOV1cbiAqXG4gKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICB9XG4gIH1cbiAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm07XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAhIShzcHJlYWRhYmxlU3ltYm9sICYmIHZhbHVlICYmIHZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZsYXR0ZW5hYmxlO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIiwiLyoqXG4gKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5O1xuIiwidmFyIGFwcGx5ID0gcmVxdWlyZSgnLi9fYXBwbHknKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyUmVzdDtcbiIsInZhciBjb25zdGFudCA9IHJlcXVpcmUoJy4vY29uc3RhbnQnKSxcbiAgICBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCAndG9TdHJpbmcnLCB7XG4gICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAndmFsdWUnOiBjb25zdGFudChzdHJpbmcpLFxuICAgICd3cml0YWJsZSc6IHRydWVcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXRUb1N0cmluZztcbiIsIi8qKiBVc2VkIHRvIGRldGVjdCBob3QgZnVuY3Rpb25zIGJ5IG51bWJlciBvZiBjYWxscyB3aXRoaW4gYSBzcGFuIG9mIG1pbGxpc2Vjb25kcy4gKi9cbnZhciBIT1RfQ09VTlQgPSA4MDAsXG4gICAgSE9UX1NQQU4gPSAxNjtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0J2xsIHNob3J0IG91dCBhbmQgaW52b2tlIGBpZGVudGl0eWAgaW5zdGVhZFxuICogb2YgYGZ1bmNgIHdoZW4gaXQncyBjYWxsZWQgYEhPVF9DT1VOVGAgb3IgbW9yZSB0aW1lcyBpbiBgSE9UX1NQQU5gXG4gKiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc2hvcnRhYmxlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBzaG9ydE91dChmdW5jKSB7XG4gIHZhciBjb3VudCA9IDAsXG4gICAgICBsYXN0Q2FsbGVkID0gMDtcblxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0YW1wID0gbmF0aXZlTm93KCksXG4gICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7XG5cbiAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgaWYgKHJlbWFpbmluZyA+IDApIHtcbiAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkge1xuICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb3VudCA9IDA7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG9ydE91dDtcbiIsInZhciBiYXNlU2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19iYXNlU2V0VG9TdHJpbmcnKSxcbiAgICBzaG9ydE91dCA9IHJlcXVpcmUoJy4vX3Nob3J0T3V0Jyk7XG5cbi8qKlxuICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9TdHJpbmc7XG4iLCJ2YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgb3ZlclJlc3QgPSByZXF1aXJlKCcuL19vdmVyUmVzdCcpLFxuICAgIHNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fc2V0VG9TdHJpbmcnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlc3Q7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmluZEluZGV4O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYU47XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaWN0SW5kZXhPZjtcbiIsInZhciBiYXNlRmluZEluZGV4ID0gcmVxdWlyZSgnLi9fYmFzZUZpbmRJbmRleCcpLFxuICAgIGJhc2VJc05hTiA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hTicpLFxuICAgIHN0cmljdEluZGV4T2YgPSByZXF1aXJlKCcuL19zdHJpY3RJbmRleE9mJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICA/IHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpXG4gICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUluZGV4T2Y7XG4iLCJ2YXIgYmFzZUluZGV4T2YgPSByZXF1aXJlKCcuL19iYXNlSW5kZXhPZicpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmNsdWRlc2AgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBzcGVjaWZ5aW5nIGFuIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlJbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gISFsZW5ndGggJiYgYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCAwKSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5SW5jbHVkZXM7XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXJyYXlJbmNsdWRlc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChjb21wYXJhdG9yKHZhbHVlLCBhcnJheVtpbmRleF0pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi4zLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAqIC8vID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAqL1xuZnVuY3Rpb24gbm9vcCgpIHtcbiAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBub29wO1xuIiwidmFyIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIG5vb3AgPSByZXF1aXJlKCcuL25vb3AnKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzZXQgb2JqZWN0IG9mIGB2YWx1ZXNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBzZXQuXG4gKi9cbnZhciBjcmVhdGVTZXQgPSAhKFNldCAmJiAoMSAvIHNldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24odmFsdWVzKSB7XG4gIHJldHVybiBuZXcgU2V0KHZhbHVlcyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVNldDtcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlJbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXMnKSxcbiAgICBhcnJheUluY2x1ZGVzV2l0aCA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXNXaXRoJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpLFxuICAgIGNyZWF0ZVNldCA9IHJlcXVpcmUoJy4vX2NyZWF0ZVNldCcpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmlxKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgc2VlbiA9IHJlc3VsdDtcblxuICBpZiAoY29tcGFyYXRvcikge1xuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgfVxuICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgIGlmIChzZXQpIHtcbiAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgfVxuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICBzZWVuID0gbmV3IFNldENhY2hlO1xuICB9XG4gIGVsc2Uge1xuICAgIHNlZW4gPSBpdGVyYXRlZSA/IFtdIDogcmVzdWx0O1xuICB9XG4gIG91dGVyOlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuaXE7XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgYmFzZVVuaXEgPSByZXF1aXJlKCcuL19iYXNlVW5pcScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcywgaW4gb3JkZXIsIGZyb20gYWxsIGdpdmVuIGFycmF5cyB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlvbihbMl0sIFsxLCAyXSk7XG4gKiAvLyA9PiBbMiwgMV1cbiAqL1xudmFyIHVuaW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmlvbjtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7XG4iLCJ2YXIgYmFzZVZhbHVlcyA9IHJlcXVpcmUoJy4vX2Jhc2VWYWx1ZXMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy52YWx1ZXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLnZhbHVlcygnaGknKTtcbiAqIC8vID0+IFsnaCcsICdpJ11cbiAqL1xuZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlcztcbiIsIi8qIGdsb2JhbCB3aW5kb3cgKi9cblxudmFyIGxvZGFzaDtcblxuaWYgKHR5cGVvZiByZXF1aXJlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgdHJ5IHtcbiAgICBsb2Rhc2ggPSB7XG4gICAgICBjbG9uZTogcmVxdWlyZShcImxvZGFzaC9jbG9uZVwiKSxcbiAgICAgIGNvbnN0YW50OiByZXF1aXJlKFwibG9kYXNoL2NvbnN0YW50XCIpLFxuICAgICAgZWFjaDogcmVxdWlyZShcImxvZGFzaC9lYWNoXCIpLFxuICAgICAgZmlsdGVyOiByZXF1aXJlKFwibG9kYXNoL2ZpbHRlclwiKSxcbiAgICAgIGhhczogIHJlcXVpcmUoXCJsb2Rhc2gvaGFzXCIpLFxuICAgICAgaXNBcnJheTogcmVxdWlyZShcImxvZGFzaC9pc0FycmF5XCIpLFxuICAgICAgaXNFbXB0eTogcmVxdWlyZShcImxvZGFzaC9pc0VtcHR5XCIpLFxuICAgICAgaXNGdW5jdGlvbjogcmVxdWlyZShcImxvZGFzaC9pc0Z1bmN0aW9uXCIpLFxuICAgICAgaXNVbmRlZmluZWQ6IHJlcXVpcmUoXCJsb2Rhc2gvaXNVbmRlZmluZWRcIiksXG4gICAgICBrZXlzOiByZXF1aXJlKFwibG9kYXNoL2tleXNcIiksXG4gICAgICBtYXA6IHJlcXVpcmUoXCJsb2Rhc2gvbWFwXCIpLFxuICAgICAgcmVkdWNlOiByZXF1aXJlKFwibG9kYXNoL3JlZHVjZVwiKSxcbiAgICAgIHNpemU6IHJlcXVpcmUoXCJsb2Rhc2gvc2l6ZVwiKSxcbiAgICAgIHRyYW5zZm9ybTogcmVxdWlyZShcImxvZGFzaC90cmFuc2Zvcm1cIiksXG4gICAgICB1bmlvbjogcmVxdWlyZShcImxvZGFzaC91bmlvblwiKSxcbiAgICAgIHZhbHVlczogcmVxdWlyZShcImxvZGFzaC92YWx1ZXNcIilcbiAgICB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gY29udGludWUgcmVnYXJkbGVzcyBvZiBlcnJvclxuICB9XG59XG5cbmlmICghbG9kYXNoKSB7XG4gIGxvZGFzaCA9IHdpbmRvdy5fO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxvZGFzaDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBHcmFwaDtcblxudmFyIERFRkFVTFRfRURHRV9OQU1FID0gXCJcXHgwMFwiO1xudmFyIEdSQVBIX05PREUgPSBcIlxceDAwXCI7XG52YXIgRURHRV9LRVlfREVMSU0gPSBcIlxceDAxXCI7XG5cbi8vIEltcGxlbWVudGF0aW9uIG5vdGVzOlxuLy9cbi8vICAqIE5vZGUgaWQgcXVlcnkgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gc3RyaW5nIGlkcyBmb3IgdGhlIG5vZGVzXG4vLyAgKiBFZGdlIGlkIHF1ZXJ5IGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIFwiZWRnZU9ialwiLCBlZGdlIG9iamVjdCwgdGhhdCBpc1xuLy8gICAgY29tcG9zZWQgb2YgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGFuIGVkZ2U6IHt2LCB3LCBuYW1lfS5cbi8vICAqIEludGVybmFsbHkgd2UgdXNlIGFuIFwiZWRnZUlkXCIsIGEgc3RyaW5naWZpZWQgZm9ybSBvZiB0aGUgZWRnZU9iaiwgdG9cbi8vICAgIHJlZmVyZW5jZSBlZGdlcy4gVGhpcyBpcyBiZWNhdXNlIHdlIG5lZWQgYSBwZXJmb3JtYW50IHdheSB0byBsb29rIHRoZXNlXG4vLyAgICBlZGdlcyB1cCBhbmQsIG9iamVjdCBwcm9wZXJ0aWVzLCB3aGljaCBoYXZlIHN0cmluZyBrZXlzLCBhcmUgdGhlIGNsb3Nlc3Rcbi8vICAgIHdlJ3JlIGdvaW5nIHRvIGdldCB0byBhIHBlcmZvcm1hbnQgaGFzaHRhYmxlIGluIEphdmFTY3JpcHQuXG5cbmZ1bmN0aW9uIEdyYXBoKG9wdHMpIHtcbiAgdGhpcy5faXNEaXJlY3RlZCA9IF8uaGFzKG9wdHMsIFwiZGlyZWN0ZWRcIikgPyBvcHRzLmRpcmVjdGVkIDogdHJ1ZTtcbiAgdGhpcy5faXNNdWx0aWdyYXBoID0gXy5oYXMob3B0cywgXCJtdWx0aWdyYXBoXCIpID8gb3B0cy5tdWx0aWdyYXBoIDogZmFsc2U7XG4gIHRoaXMuX2lzQ29tcG91bmQgPSBfLmhhcyhvcHRzLCBcImNvbXBvdW5kXCIpID8gb3B0cy5jb21wb3VuZCA6IGZhbHNlO1xuXG4gIC8vIExhYmVsIGZvciB0aGUgZ3JhcGggaXRzZWxmXG4gIHRoaXMuX2xhYmVsID0gdW5kZWZpbmVkO1xuXG4gIC8vIERlZmF1bHRzIHRvIGJlIHNldCB3aGVuIGNyZWF0aW5nIGEgbmV3IG5vZGVcbiAgdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuID0gXy5jb25zdGFudCh1bmRlZmluZWQpO1xuXG4gIC8vIERlZmF1bHRzIHRvIGJlIHNldCB3aGVuIGNyZWF0aW5nIGEgbmV3IGVkZ2VcbiAgdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuID0gXy5jb25zdGFudCh1bmRlZmluZWQpO1xuXG4gIC8vIHYgLT4gbGFiZWxcbiAgdGhpcy5fbm9kZXMgPSB7fTtcblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIC8vIHYgLT4gcGFyZW50XG4gICAgdGhpcy5fcGFyZW50ID0ge307XG5cbiAgICAvLyB2IC0+IGNoaWxkcmVuXG4gICAgdGhpcy5fY2hpbGRyZW4gPSB7fTtcbiAgICB0aGlzLl9jaGlsZHJlbltHUkFQSF9OT0RFXSA9IHt9O1xuICB9XG5cbiAgLy8gdiAtPiBlZGdlT2JqXG4gIHRoaXMuX2luID0ge307XG5cbiAgLy8gdSAtPiB2IC0+IE51bWJlclxuICB0aGlzLl9wcmVkcyA9IHt9O1xuXG4gIC8vIHYgLT4gZWRnZU9ialxuICB0aGlzLl9vdXQgPSB7fTtcblxuICAvLyB2IC0+IHcgLT4gTnVtYmVyXG4gIHRoaXMuX3N1Y3MgPSB7fTtcblxuICAvLyBlIC0+IGVkZ2VPYmpcbiAgdGhpcy5fZWRnZU9ianMgPSB7fTtcblxuICAvLyBlIC0+IGxhYmVsXG4gIHRoaXMuX2VkZ2VMYWJlbHMgPSB7fTtcbn1cblxuLyogTnVtYmVyIG9mIG5vZGVzIGluIHRoZSBncmFwaC4gU2hvdWxkIG9ubHkgYmUgY2hhbmdlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uICovXG5HcmFwaC5wcm90b3R5cGUuX25vZGVDb3VudCA9IDA7XG5cbi8qIE51bWJlciBvZiBlZGdlcyBpbiB0aGUgZ3JhcGguIFNob3VsZCBvbmx5IGJlIGNoYW5nZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uLiAqL1xuR3JhcGgucHJvdG90eXBlLl9lZGdlQ291bnQgPSAwO1xuXG5cbi8qID09PSBHcmFwaCBmdW5jdGlvbnMgPT09PT09PT09ICovXG5cbkdyYXBoLnByb3RvdHlwZS5pc0RpcmVjdGVkID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9pc0RpcmVjdGVkO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmlzTXVsdGlncmFwaCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5faXNNdWx0aWdyYXBoO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmlzQ29tcG91bmQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2lzQ29tcG91bmQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0R3JhcGggPSBmdW5jdGlvbihsYWJlbCkge1xuICB0aGlzLl9sYWJlbCA9IGxhYmVsO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ncmFwaCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fbGFiZWw7XG59O1xuXG5cbi8qID09PSBOb2RlIGZ1bmN0aW9ucyA9PT09PT09PT09ICovXG5cbkdyYXBoLnByb3RvdHlwZS5zZXREZWZhdWx0Tm9kZUxhYmVsID0gZnVuY3Rpb24obmV3RGVmYXVsdCkge1xuICBpZiAoIV8uaXNGdW5jdGlvbihuZXdEZWZhdWx0KSkge1xuICAgIG5ld0RlZmF1bHQgPSBfLmNvbnN0YW50KG5ld0RlZmF1bHQpO1xuICB9XG4gIHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbiA9IG5ld0RlZmF1bHQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGVDb3VudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fbm9kZUNvdW50O1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGVzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBfLmtleXModGhpcy5fbm9kZXMpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNvdXJjZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gXy5maWx0ZXIodGhpcy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uaXNFbXB0eShzZWxmLl9pblt2XSk7XG4gIH0pO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNpbmtzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgcmV0dXJuIF8uZmlsdGVyKHRoaXMubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHJldHVybiBfLmlzRW1wdHkoc2VsZi5fb3V0W3ZdKTtcbiAgfSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0Tm9kZXMgPSBmdW5jdGlvbih2cywgdmFsdWUpIHtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgXy5lYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgc2VsZi5zZXROb2RlKHYsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5zZXROb2RlKHYpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldE5vZGUgPSBmdW5jdGlvbih2LCB2YWx1ZSkge1xuICBpZiAoXy5oYXModGhpcy5fbm9kZXMsIHYpKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLl9ub2Rlc1t2XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX25vZGVzW3ZdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyB2YWx1ZSA6IHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbih2KTtcbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB0aGlzLl9wYXJlbnRbdl0gPSBHUkFQSF9OT0RFO1xuICAgIHRoaXMuX2NoaWxkcmVuW3ZdID0ge307XG4gICAgdGhpcy5fY2hpbGRyZW5bR1JBUEhfTk9ERV1bdl0gPSB0cnVlO1xuICB9XG4gIHRoaXMuX2luW3ZdID0ge307XG4gIHRoaXMuX3ByZWRzW3ZdID0ge307XG4gIHRoaXMuX291dFt2XSA9IHt9O1xuICB0aGlzLl9zdWNzW3ZdID0ge307XG4gICsrdGhpcy5fbm9kZUNvdW50O1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlID0gZnVuY3Rpb24odikge1xuICByZXR1cm4gdGhpcy5fbm9kZXNbdl07XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaGFzTm9kZSA9IGZ1bmN0aW9uKHYpIHtcbiAgcmV0dXJuIF8uaGFzKHRoaXMuX25vZGVzLCB2KTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5yZW1vdmVOb2RlID0gIGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAoXy5oYXModGhpcy5fbm9kZXMsIHYpKSB7XG4gICAgdmFyIHJlbW92ZUVkZ2UgPSBmdW5jdGlvbihlKSB7IHNlbGYucmVtb3ZlRWRnZShzZWxmLl9lZGdlT2Jqc1tlXSk7IH07XG4gICAgZGVsZXRlIHRoaXMuX25vZGVzW3ZdO1xuICAgIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgICB0aGlzLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdCh2KTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9wYXJlbnRbdl07XG4gICAgICBfLmVhY2godGhpcy5jaGlsZHJlbih2KSwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgICAgc2VsZi5zZXRQYXJlbnQoY2hpbGQpO1xuICAgICAgfSk7XG4gICAgICBkZWxldGUgdGhpcy5fY2hpbGRyZW5bdl07XG4gICAgfVxuICAgIF8uZWFjaChfLmtleXModGhpcy5faW5bdl0pLCByZW1vdmVFZGdlKTtcbiAgICBkZWxldGUgdGhpcy5faW5bdl07XG4gICAgZGVsZXRlIHRoaXMuX3ByZWRzW3ZdO1xuICAgIF8uZWFjaChfLmtleXModGhpcy5fb3V0W3ZdKSwgcmVtb3ZlRWRnZSk7XG4gICAgZGVsZXRlIHRoaXMuX291dFt2XTtcbiAgICBkZWxldGUgdGhpcy5fc3Vjc1t2XTtcbiAgICAtLXRoaXMuX25vZGVDb3VudDtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRQYXJlbnQgPSBmdW5jdGlvbih2LCBwYXJlbnQpIHtcbiAgaWYgKCF0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHNldCBwYXJlbnQgaW4gYSBub24tY29tcG91bmQgZ3JhcGhcIik7XG4gIH1cblxuICBpZiAoXy5pc1VuZGVmaW5lZChwYXJlbnQpKSB7XG4gICAgcGFyZW50ID0gR1JBUEhfTk9ERTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDb2VyY2UgcGFyZW50IHRvIHN0cmluZ1xuICAgIHBhcmVudCArPSBcIlwiO1xuICAgIGZvciAodmFyIGFuY2VzdG9yID0gcGFyZW50O1xuICAgICAgIV8uaXNVbmRlZmluZWQoYW5jZXN0b3IpO1xuICAgICAgYW5jZXN0b3IgPSB0aGlzLnBhcmVudChhbmNlc3RvcikpIHtcbiAgICAgIGlmIChhbmNlc3RvciA9PT0gdikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZXR0aW5nIFwiICsgcGFyZW50KyBcIiBhcyBwYXJlbnQgb2YgXCIgKyB2ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0Tm9kZShwYXJlbnQpO1xuICB9XG5cbiAgdGhpcy5zZXROb2RlKHYpO1xuICB0aGlzLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdCh2KTtcbiAgdGhpcy5fcGFyZW50W3ZdID0gcGFyZW50O1xuICB0aGlzLl9jaGlsZHJlbltwYXJlbnRdW3ZdID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0ID0gZnVuY3Rpb24odikge1xuICBkZWxldGUgdGhpcy5fY2hpbGRyZW5bdGhpcy5fcGFyZW50W3ZdXVt2XTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5wYXJlbnQgPSBmdW5jdGlvbih2KSB7XG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuX3BhcmVudFt2XTtcbiAgICBpZiAocGFyZW50ICE9PSBHUkFQSF9OT0RFKSB7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH1cbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLmNoaWxkcmVuID0gZnVuY3Rpb24odikge1xuICBpZiAoXy5pc1VuZGVmaW5lZCh2KSkge1xuICAgIHYgPSBHUkFQSF9OT0RFO1xuICB9XG5cbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLl9jaGlsZHJlblt2XTtcbiAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBfLmtleXMoY2hpbGRyZW4pO1xuICAgIH1cbiAgfSBlbHNlIGlmICh2ID09PSBHUkFQSF9OT0RFKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMoKTtcbiAgfSBlbHNlIGlmICh0aGlzLmhhc05vZGUodikpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5wcmVkZWNlc3NvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBwcmVkc1YgPSB0aGlzLl9wcmVkc1t2XTtcbiAgaWYgKHByZWRzVikge1xuICAgIHJldHVybiBfLmtleXMocHJlZHNWKTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLnN1Y2Nlc3NvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBzdWNzViA9IHRoaXMuX3N1Y3Nbdl07XG4gIGlmIChzdWNzVikge1xuICAgIHJldHVybiBfLmtleXMoc3Vjc1YpO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubmVpZ2hib3JzID0gZnVuY3Rpb24odikge1xuICB2YXIgcHJlZHMgPSB0aGlzLnByZWRlY2Vzc29ycyh2KTtcbiAgaWYgKHByZWRzKSB7XG4gICAgcmV0dXJuIF8udW5pb24ocHJlZHMsIHRoaXMuc3VjY2Vzc29ycyh2KSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pc0xlYWYgPSBmdW5jdGlvbiAodikge1xuICB2YXIgbmVpZ2hib3JzO1xuICBpZiAodGhpcy5pc0RpcmVjdGVkKCkpIHtcbiAgICBuZWlnaGJvcnMgPSB0aGlzLnN1Y2Nlc3NvcnModik7XG4gIH0gZWxzZSB7XG4gICAgbmVpZ2hib3JzID0gdGhpcy5uZWlnaGJvcnModik7XG4gIH1cbiAgcmV0dXJuIG5laWdoYm9ycy5sZW5ndGggPT09IDA7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZmlsdGVyTm9kZXMgPSBmdW5jdGlvbihmaWx0ZXIpIHtcbiAgdmFyIGNvcHkgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih7XG4gICAgZGlyZWN0ZWQ6IHRoaXMuX2lzRGlyZWN0ZWQsXG4gICAgbXVsdGlncmFwaDogdGhpcy5faXNNdWx0aWdyYXBoLFxuICAgIGNvbXBvdW5kOiB0aGlzLl9pc0NvbXBvdW5kXG4gIH0pO1xuXG4gIGNvcHkuc2V0R3JhcGgodGhpcy5ncmFwaCgpKTtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIF8uZWFjaCh0aGlzLl9ub2RlcywgZnVuY3Rpb24odmFsdWUsIHYpIHtcbiAgICBpZiAoZmlsdGVyKHYpKSB7XG4gICAgICBjb3B5LnNldE5vZGUodiwgdmFsdWUpO1xuICAgIH1cbiAgfSk7XG5cbiAgXy5lYWNoKHRoaXMuX2VkZ2VPYmpzLCBmdW5jdGlvbihlKSB7XG4gICAgaWYgKGNvcHkuaGFzTm9kZShlLnYpICYmIGNvcHkuaGFzTm9kZShlLncpKSB7XG4gICAgICBjb3B5LnNldEVkZ2UoZSwgc2VsZi5lZGdlKGUpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBwYXJlbnRzID0ge307XG4gIGZ1bmN0aW9uIGZpbmRQYXJlbnQodikge1xuICAgIHZhciBwYXJlbnQgPSBzZWxmLnBhcmVudCh2KTtcbiAgICBpZiAocGFyZW50ID09PSB1bmRlZmluZWQgfHwgY29weS5oYXNOb2RlKHBhcmVudCkpIHtcbiAgICAgIHBhcmVudHNbdl0gPSBwYXJlbnQ7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH0gZWxzZSBpZiAocGFyZW50IGluIHBhcmVudHMpIHtcbiAgICAgIHJldHVybiBwYXJlbnRzW3BhcmVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmaW5kUGFyZW50KHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICBfLmVhY2goY29weS5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgICBjb3B5LnNldFBhcmVudCh2LCBmaW5kUGFyZW50KHYpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBjb3B5O1xufTtcblxuLyogPT09IEVkZ2UgZnVuY3Rpb25zID09PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLnNldERlZmF1bHRFZGdlTGFiZWwgPSBmdW5jdGlvbihuZXdEZWZhdWx0KSB7XG4gIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgbmV3RGVmYXVsdCA9IF8uY29uc3RhbnQobmV3RGVmYXVsdCk7XG4gIH1cbiAgdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZWRnZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9lZGdlQ291bnQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZWRnZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIF8udmFsdWVzKHRoaXMuX2VkZ2VPYmpzKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRQYXRoID0gZnVuY3Rpb24odnMsIHZhbHVlKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gIF8ucmVkdWNlKHZzLCBmdW5jdGlvbih2LCB3KSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgc2VsZi5zZXRFZGdlKHYsIHcsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5zZXRFZGdlKHYsIHcpO1xuICAgIH1cbiAgICByZXR1cm4gdztcbiAgfSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLypcbiAqIHNldEVkZ2UodiwgdywgW3ZhbHVlLCBbbmFtZV1dKVxuICogc2V0RWRnZSh7IHYsIHcsIFtuYW1lXSB9LCBbdmFsdWVdKVxuICovXG5HcmFwaC5wcm90b3R5cGUuc2V0RWRnZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdiwgdywgbmFtZSwgdmFsdWU7XG4gIHZhciB2YWx1ZVNwZWNpZmllZCA9IGZhbHNlO1xuICB2YXIgYXJnMCA9IGFyZ3VtZW50c1swXTtcblxuICBpZiAodHlwZW9mIGFyZzAgPT09IFwib2JqZWN0XCIgJiYgYXJnMCAhPT0gbnVsbCAmJiBcInZcIiBpbiBhcmcwKSB7XG4gICAgdiA9IGFyZzAudjtcbiAgICB3ID0gYXJnMC53O1xuICAgIG5hbWUgPSBhcmcwLm5hbWU7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHZhbHVlID0gYXJndW1lbnRzWzFdO1xuICAgICAgdmFsdWVTcGVjaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2ID0gYXJnMDtcbiAgICB3ID0gYXJndW1lbnRzWzFdO1xuICAgIG5hbWUgPSBhcmd1bWVudHNbM107XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICB2YWx1ZSA9IGFyZ3VtZW50c1syXTtcbiAgICAgIHZhbHVlU3BlY2lmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB2ID0gXCJcIiArIHY7XG4gIHcgPSBcIlwiICsgdztcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgbmFtZSA9IFwiXCIgKyBuYW1lO1xuICB9XG5cbiAgdmFyIGUgPSBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSk7XG4gIGlmIChfLmhhcyh0aGlzLl9lZGdlTGFiZWxzLCBlKSkge1xuICAgIGlmICh2YWx1ZVNwZWNpZmllZCkge1xuICAgICAgdGhpcy5fZWRnZUxhYmVsc1tlXSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChuYW1lKSAmJiAhdGhpcy5faXNNdWx0aWdyYXBoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHNldCBhIG5hbWVkIGVkZ2Ugd2hlbiBpc011bHRpZ3JhcGggPSBmYWxzZVwiKTtcbiAgfVxuXG4gIC8vIEl0IGRpZG4ndCBleGlzdCwgc28gd2UgbmVlZCB0byBjcmVhdGUgaXQuXG4gIC8vIEZpcnN0IGVuc3VyZSB0aGUgbm9kZXMgZXhpc3QuXG4gIHRoaXMuc2V0Tm9kZSh2KTtcbiAgdGhpcy5zZXROb2RlKHcpO1xuXG4gIHRoaXMuX2VkZ2VMYWJlbHNbZV0gPSB2YWx1ZVNwZWNpZmllZCA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuKHYsIHcsIG5hbWUpO1xuXG4gIHZhciBlZGdlT2JqID0gZWRnZUFyZ3NUb09iaih0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKTtcbiAgLy8gRW5zdXJlIHdlIGFkZCB1bmRpcmVjdGVkIGVkZ2VzIGluIGEgY29uc2lzdGVudCB3YXkuXG4gIHYgPSBlZGdlT2JqLnY7XG4gIHcgPSBlZGdlT2JqLnc7XG5cbiAgT2JqZWN0LmZyZWV6ZShlZGdlT2JqKTtcbiAgdGhpcy5fZWRnZU9ianNbZV0gPSBlZGdlT2JqO1xuICBpbmNyZW1lbnRPckluaXRFbnRyeSh0aGlzLl9wcmVkc1t3XSwgdik7XG4gIGluY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3N1Y3Nbdl0sIHcpO1xuICB0aGlzLl9pblt3XVtlXSA9IGVkZ2VPYmo7XG4gIHRoaXMuX291dFt2XVtlXSA9IGVkZ2VPYmo7XG4gIHRoaXMuX2VkZ2VDb3VudCsrO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICByZXR1cm4gdGhpcy5fZWRnZUxhYmVsc1tlXTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5oYXNFZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICByZXR1cm4gXy5oYXModGhpcy5fZWRnZUxhYmVscywgZSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUucmVtb3ZlRWRnZSA9IGZ1bmN0aW9uKHYsIHcsIG5hbWUpIHtcbiAgdmFyIGUgPSAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgID8gZWRnZU9ialRvSWQodGhpcy5faXNEaXJlY3RlZCwgYXJndW1lbnRzWzBdKVxuICAgIDogZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpKTtcbiAgdmFyIGVkZ2UgPSB0aGlzLl9lZGdlT2Jqc1tlXTtcbiAgaWYgKGVkZ2UpIHtcbiAgICB2ID0gZWRnZS52O1xuICAgIHcgPSBlZGdlLnc7XG4gICAgZGVsZXRlIHRoaXMuX2VkZ2VMYWJlbHNbZV07XG4gICAgZGVsZXRlIHRoaXMuX2VkZ2VPYmpzW2VdO1xuICAgIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkodGhpcy5fcHJlZHNbd10sIHYpO1xuICAgIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkodGhpcy5fc3Vjc1t2XSwgdyk7XG4gICAgZGVsZXRlIHRoaXMuX2luW3ddW2VdO1xuICAgIGRlbGV0ZSB0aGlzLl9vdXRbdl1bZV07XG4gICAgdGhpcy5fZWRnZUNvdW50LS07XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaW5FZGdlcyA9IGZ1bmN0aW9uKHYsIHUpIHtcbiAgdmFyIGluViA9IHRoaXMuX2luW3ZdO1xuICBpZiAoaW5WKSB7XG4gICAgdmFyIGVkZ2VzID0gXy52YWx1ZXMoaW5WKTtcbiAgICBpZiAoIXUpIHtcbiAgICAgIHJldHVybiBlZGdlcztcbiAgICB9XG4gICAgcmV0dXJuIF8uZmlsdGVyKGVkZ2VzLCBmdW5jdGlvbihlZGdlKSB7IHJldHVybiBlZGdlLnYgPT09IHU7IH0pO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUub3V0RWRnZXMgPSBmdW5jdGlvbih2LCB3KSB7XG4gIHZhciBvdXRWID0gdGhpcy5fb3V0W3ZdO1xuICBpZiAob3V0Vikge1xuICAgIHZhciBlZGdlcyA9IF8udmFsdWVzKG91dFYpO1xuICAgIGlmICghdykge1xuICAgICAgcmV0dXJuIGVkZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gXy5maWx0ZXIoZWRnZXMsIGZ1bmN0aW9uKGVkZ2UpIHsgcmV0dXJuIGVkZ2UudyA9PT0gdzsgfSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlRWRnZXMgPSBmdW5jdGlvbih2LCB3KSB7XG4gIHZhciBpbkVkZ2VzID0gdGhpcy5pbkVkZ2VzKHYsIHcpO1xuICBpZiAoaW5FZGdlcykge1xuICAgIHJldHVybiBpbkVkZ2VzLmNvbmNhdCh0aGlzLm91dEVkZ2VzKHYsIHcpKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gaW5jcmVtZW50T3JJbml0RW50cnkobWFwLCBrKSB7XG4gIGlmIChtYXBba10pIHtcbiAgICBtYXBba10rKztcbiAgfSBlbHNlIHtcbiAgICBtYXBba10gPSAxO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkobWFwLCBrKSB7XG4gIGlmICghLS1tYXBba10pIHsgZGVsZXRlIG1hcFtrXTsgfVxufVxuXG5mdW5jdGlvbiBlZGdlQXJnc1RvSWQoaXNEaXJlY3RlZCwgdl8sIHdfLCBuYW1lKSB7XG4gIHZhciB2ID0gXCJcIiArIHZfO1xuICB2YXIgdyA9IFwiXCIgKyB3XztcbiAgaWYgKCFpc0RpcmVjdGVkICYmIHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuICByZXR1cm4gdiArIEVER0VfS0VZX0RFTElNICsgdyArIEVER0VfS0VZX0RFTElNICtcbiAgICAgICAgICAgICAoXy5pc1VuZGVmaW5lZChuYW1lKSA/IERFRkFVTFRfRURHRV9OQU1FIDogbmFtZSk7XG59XG5cbmZ1bmN0aW9uIGVkZ2VBcmdzVG9PYmooaXNEaXJlY3RlZCwgdl8sIHdfLCBuYW1lKSB7XG4gIHZhciB2ID0gXCJcIiArIHZfO1xuICB2YXIgdyA9IFwiXCIgKyB3XztcbiAgaWYgKCFpc0RpcmVjdGVkICYmIHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuICB2YXIgZWRnZU9iaiA9ICB7IHY6IHYsIHc6IHcgfTtcbiAgaWYgKG5hbWUpIHtcbiAgICBlZGdlT2JqLm5hbWUgPSBuYW1lO1xuICB9XG4gIHJldHVybiBlZGdlT2JqO1xufVxuXG5mdW5jdGlvbiBlZGdlT2JqVG9JZChpc0RpcmVjdGVkLCBlZGdlT2JqKSB7XG4gIHJldHVybiBlZGdlQXJnc1RvSWQoaXNEaXJlY3RlZCwgZWRnZU9iai52LCBlZGdlT2JqLncsIGVkZ2VPYmoubmFtZSk7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICcyLjEuOCc7XG4iLCIvLyBJbmNsdWRlcyBvbmx5IHRoZSBcImNvcmVcIiBvZiBncmFwaGxpYlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEdyYXBoOiByZXF1aXJlKFwiLi9ncmFwaFwiKSxcbiAgdmVyc2lvbjogcmVxdWlyZShcIi4vdmVyc2lvblwiKVxufTtcbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB3cml0ZTogd3JpdGUsXG4gIHJlYWQ6IHJlYWRcbn07XG5cbmZ1bmN0aW9uIHdyaXRlKGcpIHtcbiAgdmFyIGpzb24gPSB7XG4gICAgb3B0aW9uczoge1xuICAgICAgZGlyZWN0ZWQ6IGcuaXNEaXJlY3RlZCgpLFxuICAgICAgbXVsdGlncmFwaDogZy5pc011bHRpZ3JhcGgoKSxcbiAgICAgIGNvbXBvdW5kOiBnLmlzQ29tcG91bmQoKVxuICAgIH0sXG4gICAgbm9kZXM6IHdyaXRlTm9kZXMoZyksXG4gICAgZWRnZXM6IHdyaXRlRWRnZXMoZylcbiAgfTtcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKGcuZ3JhcGgoKSkpIHtcbiAgICBqc29uLnZhbHVlID0gXy5jbG9uZShnLmdyYXBoKCkpO1xuICB9XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiB3cml0ZU5vZGVzKGcpIHtcbiAgcmV0dXJuIF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlVmFsdWUgPSBnLm5vZGUodik7XG4gICAgdmFyIHBhcmVudCA9IGcucGFyZW50KHYpO1xuICAgIHZhciBub2RlID0geyB2OiB2IH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKG5vZGVWYWx1ZSkpIHtcbiAgICAgIG5vZGUudmFsdWUgPSBub2RlVmFsdWU7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJlbnQpKSB7XG4gICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZUVkZ2VzKGcpIHtcbiAgcmV0dXJuIF8ubWFwKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlVmFsdWUgPSBnLmVkZ2UoZSk7XG4gICAgdmFyIGVkZ2UgPSB7IHY6IGUudiwgdzogZS53IH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGUubmFtZSkpIHtcbiAgICAgIGVkZ2UubmFtZSA9IGUubmFtZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVkZ2VWYWx1ZSkpIHtcbiAgICAgIGVkZ2UudmFsdWUgPSBlZGdlVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBlZGdlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZChqc29uKSB7XG4gIHZhciBnID0gbmV3IEdyYXBoKGpzb24ub3B0aW9ucykuc2V0R3JhcGgoanNvbi52YWx1ZSk7XG4gIF8uZWFjaChqc29uLm5vZGVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGcuc2V0Tm9kZShlbnRyeS52LCBlbnRyeS52YWx1ZSk7XG4gICAgaWYgKGVudHJ5LnBhcmVudCkge1xuICAgICAgZy5zZXRQYXJlbnQoZW50cnkudiwgZW50cnkucGFyZW50KTtcbiAgICB9XG4gIH0pO1xuICBfLmVhY2goanNvbi5lZGdlcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICBnLnNldEVkZ2UoeyB2OiBlbnRyeS52LCB3OiBlbnRyeS53LCBuYW1lOiBlbnRyeS5uYW1lIH0sIGVudHJ5LnZhbHVlKTtcbiAgfSk7XG4gIHJldHVybiBnO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBvbmVudHM7XG5cbmZ1bmN0aW9uIGNvbXBvbmVudHMoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgY21wdHMgPSBbXTtcbiAgdmFyIGNtcHQ7XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHJldHVybjtcbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcbiAgICBjbXB0LnB1c2godik7XG4gICAgXy5lYWNoKGcuc3VjY2Vzc29ycyh2KSwgZGZzKTtcbiAgICBfLmVhY2goZy5wcmVkZWNlc3NvcnModiksIGRmcyk7XG4gIH1cblxuICBfLmVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgY21wdCA9IFtdO1xuICAgIGRmcyh2KTtcbiAgICBpZiAoY21wdC5sZW5ndGgpIHtcbiAgICAgIGNtcHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY21wdHM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJpb3JpdHlRdWV1ZTtcblxuLyoqXG4gKiBBIG1pbi1wcmlvcml0eSBxdWV1ZSBkYXRhIHN0cnVjdHVyZS4gVGhpcyBhbGdvcml0aG0gaXMgZGVyaXZlZCBmcm9tIENvcm1lbixcbiAqIGV0IGFsLiwgXCJJbnRyb2R1Y3Rpb24gdG8gQWxnb3JpdGhtc1wiLiBUaGUgYmFzaWMgaWRlYSBvZiBhIG1pbi1wcmlvcml0eVxuICogcXVldWUgaXMgdGhhdCB5b3UgY2FuIGVmZmljaWVudGx5IChpbiBPKDEpIHRpbWUpIGdldCB0aGUgc21hbGxlc3Qga2V5IGluXG4gKiB0aGUgcXVldWUuIEFkZGluZyBhbmQgcmVtb3ZpbmcgZWxlbWVudHMgdGFrZXMgTyhsb2cgbikgdGltZS4gQSBrZXkgY2FuXG4gKiBoYXZlIGl0cyBwcmlvcml0eSBkZWNyZWFzZWQgaW4gTyhsb2cgbikgdGltZS5cbiAqL1xuZnVuY3Rpb24gUHJpb3JpdHlRdWV1ZSgpIHtcbiAgdGhpcy5fYXJyID0gW107XG4gIHRoaXMuX2tleUluZGljZXMgPSB7fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiBUYWtlcyBgTygxKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fYXJyLmxlbmd0aDtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUga2V5cyB0aGF0IGFyZSBpbiB0aGUgcXVldWUuIFRha2VzIGBPKG4pYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9hcnIubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgua2V5OyB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgKiprZXkqKiBpcyBpbiB0aGUgcXVldWUgYW5kIGBmYWxzZWAgaWYgbm90LlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihrZXkpIHtcbiAgcmV0dXJuIF8uaGFzKHRoaXMuX2tleUluZGljZXMsIGtleSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHByaW9yaXR5IGZvciAqKmtleSoqLiBJZiAqKmtleSoqIGlzIG5vdCBwcmVzZW50IGluIHRoZSBxdWV1ZVxuICogdGhlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYHVuZGVmaW5lZGAuIFRha2VzIGBPKDEpYCB0aW1lLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBrZXlcbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucHJpb3JpdHkgPSBmdW5jdGlvbihrZXkpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fa2V5SW5kaWNlc1trZXldO1xuICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5O1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGtleSBmb3IgdGhlIG1pbmltdW0gZWxlbWVudCBpbiB0aGlzIHF1ZXVlLiBJZiB0aGUgcXVldWUgaXNcbiAqIGVtcHR5IHRoaXMgZnVuY3Rpb24gdGhyb3dzIGFuIEVycm9yLiBUYWtlcyBgTygxKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUubWluID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnNpemUoKSA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlF1ZXVlIHVuZGVyZmxvd1wiKTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyWzBdLmtleTtcbn07XG5cbi8qKlxuICogSW5zZXJ0cyBhIG5ldyBrZXkgaW50byB0aGUgcHJpb3JpdHkgcXVldWUuIElmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMgaW5cbiAqIHRoZSBxdWV1ZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYDsgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIGB0cnVlYC5cbiAqIFRha2VzIGBPKG4pYCB0aW1lLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBrZXkgdGhlIGtleSB0byBhZGRcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcmlvcml0eSB0aGUgaW5pdGlhbCBwcmlvcml0eSBmb3IgdGhlIGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihrZXksIHByaW9yaXR5KSB7XG4gIHZhciBrZXlJbmRpY2VzID0gdGhpcy5fa2V5SW5kaWNlcztcbiAga2V5ID0gU3RyaW5nKGtleSk7XG4gIGlmICghXy5oYXMoa2V5SW5kaWNlcywga2V5KSkge1xuICAgIHZhciBhcnIgPSB0aGlzLl9hcnI7XG4gICAgdmFyIGluZGV4ID0gYXJyLmxlbmd0aDtcbiAgICBrZXlJbmRpY2VzW2tleV0gPSBpbmRleDtcbiAgICBhcnIucHVzaCh7a2V5OiBrZXksIHByaW9yaXR5OiBwcmlvcml0eX0pO1xuICAgIHRoaXMuX2RlY3JlYXNlKGluZGV4KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgYW5kIHJldHVybnMgdGhlIHNtYWxsZXN0IGtleSBpbiB0aGUgcXVldWUuIFRha2VzIGBPKGxvZyBuKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucmVtb3ZlTWluID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX3N3YXAoMCwgdGhpcy5fYXJyLmxlbmd0aCAtIDEpO1xuICB2YXIgbWluID0gdGhpcy5fYXJyLnBvcCgpO1xuICBkZWxldGUgdGhpcy5fa2V5SW5kaWNlc1ttaW4ua2V5XTtcbiAgdGhpcy5faGVhcGlmeSgwKTtcbiAgcmV0dXJuIG1pbi5rZXk7XG59O1xuXG4vKipcbiAqIERlY3JlYXNlcyB0aGUgcHJpb3JpdHkgZm9yICoqa2V5KiogdG8gKipwcmlvcml0eSoqLiBJZiB0aGUgbmV3IHByaW9yaXR5IGlzXG4gKiBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIHByaW9yaXR5LCB0aGlzIGZ1bmN0aW9uIHdpbGwgdGhyb3cgYW4gRXJyb3IuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleSB0aGUga2V5IGZvciB3aGljaCB0byByYWlzZSBwcmlvcml0eVxuICogQHBhcmFtIHtOdW1iZXJ9IHByaW9yaXR5IHRoZSBuZXcgcHJpb3JpdHkgZm9yIHRoZSBrZXlcbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuZGVjcmVhc2UgPSBmdW5jdGlvbihrZXksIHByaW9yaXR5KSB7XG4gIHZhciBpbmRleCA9IHRoaXMuX2tleUluZGljZXNba2V5XTtcbiAgaWYgKHByaW9yaXR5ID4gdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gXCIgK1xuICAgICAgICBcIktleTogXCIgKyBrZXkgKyBcIiBPbGQ6IFwiICsgdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSArIFwiIE5ldzogXCIgKyBwcmlvcml0eSk7XG4gIH1cbiAgdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSA9IHByaW9yaXR5O1xuICB0aGlzLl9kZWNyZWFzZShpbmRleCk7XG59O1xuXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5faGVhcGlmeSA9IGZ1bmN0aW9uKGkpIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIGwgPSAyICogaTtcbiAgdmFyIHIgPSBsICsgMTtcbiAgdmFyIGxhcmdlc3QgPSBpO1xuICBpZiAobCA8IGFyci5sZW5ndGgpIHtcbiAgICBsYXJnZXN0ID0gYXJyW2xdLnByaW9yaXR5IDwgYXJyW2xhcmdlc3RdLnByaW9yaXR5ID8gbCA6IGxhcmdlc3Q7XG4gICAgaWYgKHIgPCBhcnIubGVuZ3RoKSB7XG4gICAgICBsYXJnZXN0ID0gYXJyW3JdLnByaW9yaXR5IDwgYXJyW2xhcmdlc3RdLnByaW9yaXR5ID8gciA6IGxhcmdlc3Q7XG4gICAgfVxuICAgIGlmIChsYXJnZXN0ICE9PSBpKSB7XG4gICAgICB0aGlzLl9zd2FwKGksIGxhcmdlc3QpO1xuICAgICAgdGhpcy5faGVhcGlmeShsYXJnZXN0KTtcbiAgICB9XG4gIH1cbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9kZWNyZWFzZSA9IGZ1bmN0aW9uKGluZGV4KSB7XG4gIHZhciBhcnIgPSB0aGlzLl9hcnI7XG4gIHZhciBwcmlvcml0eSA9IGFycltpbmRleF0ucHJpb3JpdHk7XG4gIHZhciBwYXJlbnQ7XG4gIHdoaWxlIChpbmRleCAhPT0gMCkge1xuICAgIHBhcmVudCA9IGluZGV4ID4+IDE7XG4gICAgaWYgKGFycltwYXJlbnRdLnByaW9yaXR5IDwgcHJpb3JpdHkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl9zd2FwKGluZGV4LCBwYXJlbnQpO1xuICAgIGluZGV4ID0gcGFyZW50O1xuICB9XG59O1xuXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5fc3dhcCA9IGZ1bmN0aW9uKGksIGopIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIGtleUluZGljZXMgPSB0aGlzLl9rZXlJbmRpY2VzO1xuICB2YXIgb3JpZ0FyckkgPSBhcnJbaV07XG4gIHZhciBvcmlnQXJySiA9IGFycltqXTtcbiAgYXJyW2ldID0gb3JpZ0Fycko7XG4gIGFycltqXSA9IG9yaWdBcnJJO1xuICBrZXlJbmRpY2VzW29yaWdBcnJKLmtleV0gPSBpO1xuICBrZXlJbmRpY2VzW29yaWdBcnJJLmtleV0gPSBqO1xufTtcbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBQcmlvcml0eVF1ZXVlID0gcmVxdWlyZShcIi4uL2RhdGEvcHJpb3JpdHktcXVldWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmE7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZGlqa3N0cmEoZywgc291cmNlLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5EaWprc3RyYShnLCBTdHJpbmcoc291cmNlKSxcbiAgICB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GVU5DLFxuICAgIGVkZ2VGbiB8fCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm91dEVkZ2VzKHYpOyB9KTtcbn1cblxuZnVuY3Rpb24gcnVuRGlqa3N0cmEoZywgc291cmNlLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge307XG4gIHZhciBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCk7XG4gIHZhciB2LCB2RW50cnk7XG5cbiAgdmFyIHVwZGF0ZU5laWdoYm9ycyA9IGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgdyA9IGVkZ2UudiAhPT0gdiA/IGVkZ2UudiA6IGVkZ2UudztcbiAgICB2YXIgd0VudHJ5ID0gcmVzdWx0c1t3XTtcbiAgICB2YXIgd2VpZ2h0ID0gd2VpZ2h0Rm4oZWRnZSk7XG4gICAgdmFyIGRpc3RhbmNlID0gdkVudHJ5LmRpc3RhbmNlICsgd2VpZ2h0O1xuXG4gICAgaWYgKHdlaWdodCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImRpamtzdHJhIGRvZXMgbm90IGFsbG93IG5lZ2F0aXZlIGVkZ2Ugd2VpZ2h0cy4gXCIgK1xuICAgICAgICAgICAgICAgICAgICAgIFwiQmFkIGVkZ2U6IFwiICsgZWRnZSArIFwiIFdlaWdodDogXCIgKyB3ZWlnaHQpO1xuICAgIH1cblxuICAgIGlmIChkaXN0YW5jZSA8IHdFbnRyeS5kaXN0YW5jZSkge1xuICAgICAgd0VudHJ5LmRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICB3RW50cnkucHJlZGVjZXNzb3IgPSB2O1xuICAgICAgcHEuZGVjcmVhc2UodywgZGlzdGFuY2UpO1xuICAgIH1cbiAgfTtcblxuICBnLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgdmFyIGRpc3RhbmNlID0gdiA9PT0gc291cmNlID8gMCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICByZXN1bHRzW3ZdID0geyBkaXN0YW5jZTogZGlzdGFuY2UgfTtcbiAgICBwcS5hZGQodiwgZGlzdGFuY2UpO1xuICB9KTtcblxuICB3aGlsZSAocHEuc2l6ZSgpID4gMCkge1xuICAgIHYgPSBwcS5yZW1vdmVNaW4oKTtcbiAgICB2RW50cnkgPSByZXN1bHRzW3ZdO1xuICAgIGlmICh2RW50cnkuZGlzdGFuY2UgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZWRnZUZuKHYpLmZvckVhY2godXBkYXRlTmVpZ2hib3JzKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIGRpamtzdHJhID0gcmVxdWlyZShcIi4vZGlqa3N0cmFcIik7XG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmFBbGw7XG5cbmZ1bmN0aW9uIGRpamtzdHJhQWxsKGcsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKSB7XG4gIHJldHVybiBfLnRyYW5zZm9ybShnLm5vZGVzKCksIGZ1bmN0aW9uKGFjYywgdikge1xuICAgIGFjY1t2XSA9IGRpamtzdHJhKGcsIHYsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKTtcbiAgfSwge30pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRhcmphbjtcblxuZnVuY3Rpb24gdGFyamFuKGcpIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciB2aXNpdGVkID0ge307IC8vIG5vZGUgaWQgLT4geyBvblN0YWNrLCBsb3dsaW5rLCBpbmRleCB9XG4gIHZhciByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgZW50cnkgPSB2aXNpdGVkW3ZdID0ge1xuICAgICAgb25TdGFjazogdHJ1ZSxcbiAgICAgIGxvd2xpbms6IGluZGV4LFxuICAgICAgaW5kZXg6IGluZGV4KytcbiAgICB9O1xuICAgIHN0YWNrLnB1c2godik7XG5cbiAgICBnLnN1Y2Nlc3NvcnModikuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgICAgZW50cnkubG93bGluayA9IE1hdGgubWluKGVudHJ5Lmxvd2xpbmssIHZpc2l0ZWRbd10ubG93bGluayk7XG4gICAgICB9IGVsc2UgaWYgKHZpc2l0ZWRbd10ub25TdGFjaykge1xuICAgICAgICBlbnRyeS5sb3dsaW5rID0gTWF0aC5taW4oZW50cnkubG93bGluaywgdmlzaXRlZFt3XS5pbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZW50cnkubG93bGluayA9PT0gZW50cnkuaW5kZXgpIHtcbiAgICAgIHZhciBjbXB0ID0gW107XG4gICAgICB2YXIgdztcbiAgICAgIGRvIHtcbiAgICAgICAgdyA9IHN0YWNrLnBvcCgpO1xuICAgICAgICB2aXNpdGVkW3ddLm9uU3RhY2sgPSBmYWxzZTtcbiAgICAgICAgY21wdC5wdXNoKHcpO1xuICAgICAgfSB3aGlsZSAodiAhPT0gdyk7XG4gICAgICByZXN1bHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9XG5cbiAgZy5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIGRmcyh2KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIHRhcmphbiA9IHJlcXVpcmUoXCIuL3RhcmphblwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kQ3ljbGVzO1xuXG5mdW5jdGlvbiBmaW5kQ3ljbGVzKGcpIHtcbiAgcmV0dXJuIF8uZmlsdGVyKHRhcmphbihnKSwgZnVuY3Rpb24oY21wdCkge1xuICAgIHJldHVybiBjbXB0Lmxlbmd0aCA+IDEgfHwgKGNtcHQubGVuZ3RoID09PSAxICYmIGcuaGFzRWRnZShjbXB0WzBdLCBjbXB0WzBdKSk7XG4gIH0pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZsb3lkV2Fyc2hhbGw7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5GbG95ZFdhcnNoYWxsKGcsXG4gICAgd2VpZ2h0Rm4gfHwgREVGQVVMVF9XRUlHSFRfRlVOQyxcbiAgICBlZGdlRm4gfHwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5vdXRFZGdlcyh2KTsgfSk7XG59XG5cbmZ1bmN0aW9uIHJ1bkZsb3lkV2Fyc2hhbGwoZywgd2VpZ2h0Rm4sIGVkZ2VGbikge1xuICB2YXIgcmVzdWx0cyA9IHt9O1xuICB2YXIgbm9kZXMgPSBnLm5vZGVzKCk7XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgcmVzdWx0c1t2XSA9IHt9O1xuICAgIHJlc3VsdHNbdl1bdl0gPSB7IGRpc3RhbmNlOiAwIH07XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAodiAhPT0gdykge1xuICAgICAgICByZXN1bHRzW3ZdW3ddID0geyBkaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWRnZUZuKHYpLmZvckVhY2goZnVuY3Rpb24oZWRnZSkge1xuICAgICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnY7XG4gICAgICB2YXIgZCA9IHdlaWdodEZuKGVkZ2UpO1xuICAgICAgcmVzdWx0c1t2XVt3XSA9IHsgZGlzdGFuY2U6IGQsIHByZWRlY2Vzc29yOiB2IH07XG4gICAgfSk7XG4gIH0pO1xuXG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgIHZhciByb3dLID0gcmVzdWx0c1trXTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGkpIHtcbiAgICAgIHZhciByb3dJID0gcmVzdWx0c1tpXTtcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaikge1xuICAgICAgICB2YXIgaWsgPSByb3dJW2tdO1xuICAgICAgICB2YXIga2ogPSByb3dLW2pdO1xuICAgICAgICB2YXIgaWogPSByb3dJW2pdO1xuICAgICAgICB2YXIgYWx0RGlzdGFuY2UgPSBpay5kaXN0YW5jZSArIGtqLmRpc3RhbmNlO1xuICAgICAgICBpZiAoYWx0RGlzdGFuY2UgPCBpai5kaXN0YW5jZSkge1xuICAgICAgICAgIGlqLmRpc3RhbmNlID0gYWx0RGlzdGFuY2U7XG4gICAgICAgICAgaWoucHJlZGVjZXNzb3IgPSBrai5wcmVkZWNlc3NvcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRvcHNvcnQ7XG50b3Bzb3J0LkN5Y2xlRXhjZXB0aW9uID0gQ3ljbGVFeGNlcHRpb247XG5cbmZ1bmN0aW9uIHRvcHNvcnQoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgc3RhY2sgPSB7fTtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICBmdW5jdGlvbiB2aXNpdChub2RlKSB7XG4gICAgaWYgKF8uaGFzKHN0YWNrLCBub2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEN5Y2xlRXhjZXB0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCBub2RlKSkge1xuICAgICAgc3RhY2tbbm9kZV0gPSB0cnVlO1xuICAgICAgdmlzaXRlZFtub2RlXSA9IHRydWU7XG4gICAgICBfLmVhY2goZy5wcmVkZWNlc3NvcnMobm9kZSksIHZpc2l0KTtcbiAgICAgIGRlbGV0ZSBzdGFja1tub2RlXTtcbiAgICAgIHJlc3VsdHMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cblxuICBfLmVhY2goZy5zaW5rcygpLCB2aXNpdCk7XG5cbiAgaWYgKF8uc2l6ZSh2aXNpdGVkKSAhPT0gZy5ub2RlQ291bnQoKSkge1xuICAgIHRocm93IG5ldyBDeWNsZUV4Y2VwdGlvbigpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIEN5Y2xlRXhjZXB0aW9uKCkge31cbkN5Y2xlRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOyAvLyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEVycm9yIHRvIHBhc3MgdGVzdGluZyIsInZhciB0b3Bzb3J0ID0gcmVxdWlyZShcIi4vdG9wc29ydFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FjeWNsaWM7XG5cbmZ1bmN0aW9uIGlzQWN5Y2xpYyhnKSB7XG4gIHRyeSB7XG4gICAgdG9wc29ydChnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgdG9wc29ydC5DeWNsZUV4Y2VwdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRmcztcblxuLypcbiAqIEEgaGVscGVyIHRoYXQgcHJlZm9ybXMgYSBwcmUtIG9yIHBvc3Qtb3JkZXIgdHJhdmVyc2FsIG9uIHRoZSBpbnB1dCBncmFwaFxuICogYW5kIHJldHVybnMgdGhlIG5vZGVzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgdmlzaXRlZC4gSWYgdGhlIGdyYXBoIGlzXG4gKiB1bmRpcmVjdGVkIHRoZW4gdGhpcyBhbGdvcml0aG0gd2lsbCBuYXZpZ2F0ZSB1c2luZyBuZWlnaGJvcnMuIElmIHRoZSBncmFwaFxuICogaXMgZGlyZWN0ZWQgdGhlbiB0aGlzIGFsZ29yaXRobSB3aWxsIG5hdmlnYXRlIHVzaW5nIHN1Y2Nlc3NvcnMuXG4gKlxuICogT3JkZXIgbXVzdCBiZSBvbmUgb2YgXCJwcmVcIiBvciBcInBvc3RcIi5cbiAqL1xuZnVuY3Rpb24gZGZzKGcsIHZzLCBvcmRlcikge1xuICBpZiAoIV8uaXNBcnJheSh2cykpIHtcbiAgICB2cyA9IFt2c107XG4gIH1cblxuICB2YXIgbmF2aWdhdGlvbiA9IChnLmlzRGlyZWN0ZWQoKSA/IGcuc3VjY2Vzc29ycyA6IGcubmVpZ2hib3JzKS5iaW5kKGcpO1xuXG4gIHZhciBhY2MgPSBbXTtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcbiAgXy5lYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKCFnLmhhc05vZGUodikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkdyYXBoIGRvZXMgbm90IGhhdmUgbm9kZTogXCIgKyB2KTtcbiAgICB9XG5cbiAgICBkb0RmcyhnLCB2LCBvcmRlciA9PT0gXCJwb3N0XCIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYyk7XG4gIH0pO1xuICByZXR1cm4gYWNjO1xufVxuXG5mdW5jdGlvbiBkb0RmcyhnLCB2LCBwb3N0b3JkZXIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYykge1xuICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG5cbiAgICBpZiAoIXBvc3RvcmRlcikgeyBhY2MucHVzaCh2KTsgfVxuICAgIF8uZWFjaChuYXZpZ2F0aW9uKHYpLCBmdW5jdGlvbih3KSB7XG4gICAgICBkb0RmcyhnLCB3LCBwb3N0b3JkZXIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYyk7XG4gICAgfSk7XG4gICAgaWYgKHBvc3RvcmRlcikgeyBhY2MucHVzaCh2KTsgfVxuICB9XG59XG4iLCJ2YXIgZGZzID0gcmVxdWlyZShcIi4vZGZzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvc3RvcmRlcjtcblxuZnVuY3Rpb24gcG9zdG9yZGVyKGcsIHZzKSB7XG4gIHJldHVybiBkZnMoZywgdnMsIFwicG9zdFwiKTtcbn1cbiIsInZhciBkZnMgPSByZXF1aXJlKFwiLi9kZnNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJlb3JkZXI7XG5cbmZ1bmN0aW9uIHByZW9yZGVyKGcsIHZzKSB7XG4gIHJldHVybiBkZnMoZywgdnMsIFwicHJlXCIpO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBoXCIpO1xudmFyIFByaW9yaXR5UXVldWUgPSByZXF1aXJlKFwiLi4vZGF0YS9wcmlvcml0eS1xdWV1ZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwcmltO1xuXG5mdW5jdGlvbiBwcmltKGcsIHdlaWdodEZ1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBHcmFwaCgpO1xuICB2YXIgcGFyZW50cyA9IHt9O1xuICB2YXIgcHEgPSBuZXcgUHJpb3JpdHlRdWV1ZSgpO1xuICB2YXIgdjtcblxuICBmdW5jdGlvbiB1cGRhdGVOZWlnaGJvcnMoZWRnZSkge1xuICAgIHZhciB3ID0gZWRnZS52ID09PSB2ID8gZWRnZS53IDogZWRnZS52O1xuICAgIHZhciBwcmkgPSBwcS5wcmlvcml0eSh3KTtcbiAgICBpZiAocHJpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBlZGdlV2VpZ2h0ID0gd2VpZ2h0RnVuYyhlZGdlKTtcbiAgICAgIGlmIChlZGdlV2VpZ2h0IDwgcHJpKSB7XG4gICAgICAgIHBhcmVudHNbd10gPSB2O1xuICAgICAgICBwcS5kZWNyZWFzZSh3LCBlZGdlV2VpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZy5ub2RlQ291bnQoKSA9PT0gMCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBfLmVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcHEuYWRkKHYsIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gICAgcmVzdWx0LnNldE5vZGUodik7XG4gIH0pO1xuXG4gIC8vIFN0YXJ0IGZyb20gYW4gYXJiaXRyYXJ5IG5vZGVcbiAgcHEuZGVjcmVhc2UoZy5ub2RlcygpWzBdLCAwKTtcblxuICB2YXIgaW5pdCA9IGZhbHNlO1xuICB3aGlsZSAocHEuc2l6ZSgpID4gMCkge1xuICAgIHYgPSBwcS5yZW1vdmVNaW4oKTtcbiAgICBpZiAoXy5oYXMocGFyZW50cywgdikpIHtcbiAgICAgIHJlc3VsdC5zZXRFZGdlKHYsIHBhcmVudHNbdl0pO1xuICAgIH0gZWxzZSBpZiAoaW5pdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgZ3JhcGggaXMgbm90IGNvbm5lY3RlZDogXCIgKyBnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdCA9IHRydWU7XG4gICAgfVxuXG4gICAgZy5ub2RlRWRnZXModikuZm9yRWFjaCh1cGRhdGVOZWlnaGJvcnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBjb21wb25lbnRzOiByZXF1aXJlKFwiLi9jb21wb25lbnRzXCIpLFxuICBkaWprc3RyYTogcmVxdWlyZShcIi4vZGlqa3N0cmFcIiksXG4gIGRpamtzdHJhQWxsOiByZXF1aXJlKFwiLi9kaWprc3RyYS1hbGxcIiksXG4gIGZpbmRDeWNsZXM6IHJlcXVpcmUoXCIuL2ZpbmQtY3ljbGVzXCIpLFxuICBmbG95ZFdhcnNoYWxsOiByZXF1aXJlKFwiLi9mbG95ZC13YXJzaGFsbFwiKSxcbiAgaXNBY3ljbGljOiByZXF1aXJlKFwiLi9pcy1hY3ljbGljXCIpLFxuICBwb3N0b3JkZXI6IHJlcXVpcmUoXCIuL3Bvc3RvcmRlclwiKSxcbiAgcHJlb3JkZXI6IHJlcXVpcmUoXCIuL3ByZW9yZGVyXCIpLFxuICBwcmltOiByZXF1aXJlKFwiLi9wcmltXCIpLFxuICB0YXJqYW46IHJlcXVpcmUoXCIuL3RhcmphblwiKSxcbiAgdG9wc29ydDogcmVxdWlyZShcIi4vdG9wc29ydFwiKVxufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LCBDaHJpcyBQZXR0aXR0XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzXG4gKiBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gKiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9yc1xuICogbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXRcbiAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkRcbiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1JcbiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLFxuICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGxpYiA9IHJlcXVpcmUoXCIuL2xpYlwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEdyYXBoOiBsaWIuR3JhcGgsXG4gIGpzb246IHJlcXVpcmUoXCIuL2xpYi9qc29uXCIpLFxuICBhbGc6IHJlcXVpcmUoXCIuL2xpYi9hbGdcIiksXG4gIHZlcnNpb246IGxpYi52ZXJzaW9uXG59O1xuIiwiLyogZ2xvYmFsIHdpbmRvdyAqL1xuXG52YXIgZ3JhcGhsaWI7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgZ3JhcGhsaWIgPSByZXF1aXJlKFwiZ3JhcGhsaWJcIik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBjb250aW51ZSByZWdhcmRsZXNzIG9mIGVycm9yXG4gIH1cbn1cblxuaWYgKCFncmFwaGxpYikge1xuICBncmFwaGxpYiA9IHdpbmRvdy5ncmFwaGxpYjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBncmFwaGxpYjtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICpcbiAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhkZWVwWzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGVlcDtcbiIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgKSB7XG4gICAgcmV0dXJuIGVxKG9iamVjdFtpbmRleF0sIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJdGVyYXRlZUNhbGw7XG4iLCJ2YXIgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAqIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXMgdGhhdFxuICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgbGVuZ3RoID0gMTtcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgIHZhciBwcm9wc0luZGV4ID0gLTE7XG4gICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbcHJvcHNJbmRleF07XG4gICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEodmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCJ2YXIgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBgXy5maW5kYCBvciBgXy5maW5kTGFzdGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZpbmRJbmRleEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbGxlY3Rpb24gaW5kZXguXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmaW5kIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVGaW5kKGZpbmRJbmRleEZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgY29sbGVjdGlvbiA9IGtleXMoY29sbGVjdGlvbik7XG4gICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpOyB9O1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXhGdW5jKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KTtcbiAgICByZXR1cm4gaW5kZXggPiAtMSA/IGl0ZXJhYmxlW2l0ZXJhdGVlID8gY29sbGVjdGlvbltpbmRleF0gOiBpbmRleF0gOiB1bmRlZmluZWQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlRmluZDtcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iLCJ2YXIgdHJpbW1lZEVuZEluZGV4ID0gcmVxdWlyZSgnLi9fdHJpbW1lZEVuZEluZGV4Jyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udHJpbWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byB0cmltLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUcmltKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nXG4gICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVHJpbTtcbiIsInZhciBiYXNlVHJpbSA9IHJlcXVpcmUoJy4vX2Jhc2VUcmltJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuIiwidmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0Zpbml0ZTtcbiIsInZhciB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0ludGVnZXI7XG4iLCJ2YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICogXTtcbiAqXG4gKiBfLmZpbmRJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdiYXJuZXknOyB9KTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnZnJlZCcsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAqIC8vID0+IDFcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gMFxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAqIC8vID0+IDJcbiAqL1xuZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICB9XG4gIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRJbmRleDtcbiIsInZhciBjcmVhdGVGaW5kID0gcmVxdWlyZSgnLi9fY3JlYXRlRmluZCcpLFxuICAgIGZpbmRJbmRleCA9IHJlcXVpcmUoJy4vZmluZEluZGV4Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyB0aGUgZmlyc3QgZWxlbWVudFxuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gKiBdO1xuICpcbiAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdwZWJibGVzJ1xuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICovXG52YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kO1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKTtcblxuLyoqXG4gKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIDEpIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbjtcbiIsInZhciBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGNhc3RGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2Nhc3RGdW5jdGlvbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuXG4gKiBvYmplY3QgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0XG4gKiBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmZvckluUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5mb3JJbihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICovXG5mdW5jdGlvbiBmb3JJbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgID8gb2JqZWN0XG4gICAgOiBiYXNlRm9yKG9iamVjdCwgY2FzdEZ1bmN0aW9uKGl0ZXJhdGVlKSwga2V5c0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JJbjtcbiIsIi8qKlxuICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubGFzdChbMSwgMiwgM10pO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxhc3Q7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYG9iamVjdGAgYW5kIHZhbHVlcyBnZW5lcmF0ZWRcbiAqIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydVxuICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gKiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAqIEBzZWUgXy5tYXBLZXlzXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IHtcbiAqICAgJ2ZyZWQnOiAgICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAgfSxcbiAqICAgJ3BlYmJsZXMnOiB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gKiB9O1xuICpcbiAqIF8ubWFwVmFsdWVzKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZTsgfSk7XG4gKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1hcFZhbHVlcyh1c2VycywgJ2FnZScpO1xuICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBtYXBWYWx1ZXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVmFsdWVzO1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5tYXhgIGFuZCBgXy5taW5gIHdoaWNoIGFjY2VwdHMgYVxuICogYGNvbXBhcmF0b3JgIHRvIGRldGVybWluZSB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciB1c2VkIHRvIGNvbXBhcmUgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlRXh0cmVtdW0oYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgaWYgKGN1cnJlbnQgIT0gbnVsbCAmJiAoY29tcHV0ZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKGN1cnJlbnQgPT09IGN1cnJlbnQgJiYgIWlzU3ltYm9sKGN1cnJlbnQpKVxuICAgICAgICAgIDogY29tcGFyYXRvcihjdXJyZW50LCBjb21wdXRlZClcbiAgICAgICAgKSkge1xuICAgICAgdmFyIGNvbXB1dGVkID0gY3VycmVudCxcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRXh0cmVtdW07XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA+IG90aGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHdDtcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlR3QgPSByZXF1aXJlKCcuL19iYXNlR3QnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBNYXRoXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubWF4KFs0LCAyLCA4LCA2XSk7XG4gKiAvLyA9PiA4XG4gKlxuICogXy5tYXgoW10pO1xuICogLy8gPT4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIG1heChhcnJheSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXg7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduTWVyZ2VWYWx1ZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuIiwiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2FmZUdldDtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHBsYWluIG9iamVjdCBmbGF0dGVuaW5nIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZ1xuICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfVxuICovXG5mdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHZhbHVlLCBrZXlzSW4odmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1BsYWluT2JqZWN0O1xuIiwidmFyIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGluaXRDbG9uZU9iamVjdCA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZU9iamVjdCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vaXNQbGFpbk9iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5JyksXG4gICAgc2FmZUdldCA9IHJlcXVpcmUoJy4vX3NhZmVHZXQnKSxcbiAgICB0b1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi90b1BsYWluT2JqZWN0Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgbWVyZ2VzIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgIHNyY1ZhbHVlID0gc2FmZUdldChzb3VyY2UsIGtleSksXG4gICAgICBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcblxuICBpZiAoc3RhY2tlZCkge1xuICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHN0YWNrZWQpO1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgPyBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIHZhciBpc0NvbW1vbiA9IG5ld1ZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiBpc0J1ZmZlcihzcmNWYWx1ZSksXG4gICAgICAgIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuXG4gICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICBpZiAoaXNBcnIgfHwgaXNCdWZmIHx8IGlzVHlwZWQpIHtcbiAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzQnVmZikge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lQnVmZmVyKHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpIHx8IGlzQXJndW1lbnRzKHNyY1ZhbHVlKSkge1xuICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgIGlmIChpc0FyZ3VtZW50cyhvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKCFpc09iamVjdChvYmpWYWx1ZSkgfHwgaXNGdW5jdGlvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBpbml0Q2xvbmVPYmplY3Qoc3JjVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChpc0NvbW1vbikge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgbmV3VmFsdWUpO1xuICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgfVxuICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlRGVlcDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGJhc2VNZXJnZURlZXAgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2VEZWVwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIGtleXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlO1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXNzaWduZXI7XG4iLCJ2YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksXG4gICAgY3JlYXRlQXNzaWduZXIgPSByZXF1aXJlKCcuL19jcmVhdGVBc3NpZ25lcicpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC41LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHtcbiAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAqIH07XG4gKlxuICogdmFyIG90aGVyID0ge1xuICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICogfTtcbiAqXG4gKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubHRgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VMdCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlIDwgb3RoZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUx0O1xuIiwidmFyIGJhc2VFeHRyZW11bSA9IHJlcXVpcmUoJy4vX2Jhc2VFeHRyZW11bScpLFxuICAgIGJhc2VMdCA9IHJlcXVpcmUoJy4vX2Jhc2VMdCcpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICogYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE1hdGhcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAqIC8vID0+IDJcbiAqXG4gKiBfLm1pbihbXSk7XG4gKiAvLyA9PiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBpZGVudGl0eSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbjtcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTHQgPSByZXF1aXJlKCcuL19iYXNlTHQnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1pbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTWF0aFxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAqXG4gKiBfLm1pbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKi9cbmZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbkJ5O1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgd2hpbGUgKG5lc3RlZCAhPSBudWxsICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycgfHwga2V5ID09PSAnY29uc3RydWN0b3InIHx8IGtleSA9PT0gJ3Byb3RvdHlwZScpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ICE9IGxhc3RJbmRleCkge1xuICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICA6IChpc0luZGV4KHBhdGhbaW5kZXggKyAxXSkgPyBbXSA6IHt9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXNzaWduVmFsdWUobmVzdGVkLCBrZXksIG5ld1ZhbHVlKTtcbiAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXQ7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlU2V0ID0gcmVxdWlyZSgnLi9fYmFzZVNldCcpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHBhdGggPSBwYXRoc1tpbmRleF0sXG4gICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgIGJhc2VTZXQocmVzdWx0LCBjYXN0UGF0aChwYXRoLCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2tCeTtcbiIsInZhciBiYXNlUGlja0J5ID0gcmVxdWlyZSgnLi9fYmFzZVBpY2tCeScpLFxuICAgIGhhc0luID0gcmVxdWlyZSgnLi9oYXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICogcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpIHtcbiAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICByZXR1cm4gaGFzSW4ob2JqZWN0LCBwYXRoKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2s7XG4iLCJ2YXIgZmxhdHRlbiA9IHJlcXVpcmUoJy4vZmxhdHRlbicpLFxuICAgIG92ZXJSZXN0ID0gcmVxdWlyZSgnLi9fb3ZlclJlc3QnKSxcbiAgICBzZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX3NldFRvU3RyaW5nJyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggZmxhdHRlbnMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gZmxhdFJlc3QoZnVuYykge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0UmVzdDtcbiIsInZhciBiYXNlUGljayA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrJyksXG4gICAgZmxhdFJlc3QgPSByZXF1aXJlKCcuL19mbGF0UmVzdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gKi9cbnZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB7fSA6IGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGljaztcbiIsIi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICogY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAqL1xuZnVuY3Rpb24gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICBzdGFydCArPSBzdGVwO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJhbmdlO1xuIiwidmFyIGJhc2VSYW5nZSA9IHJlcXVpcmUoJy4vX2Jhc2VSYW5nZScpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKSxcbiAgICB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJhbmdlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIHN0ZXApIHtcbiAgICBpZiAoc3RlcCAmJiB0eXBlb2Ygc3RlcCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdGFydCwgZW5kLCBzdGVwKSkge1xuICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgfVxuICAgIHN0ZXAgPSBzdGVwID09PSB1bmRlZmluZWQgPyAoc3RhcnQgPCBlbmQgPyAxIDogLTEpIDogdG9GaW5pdGUoc3RlcCk7XG4gICAgcmV0dXJuIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVJhbmdlO1xuIiwidmFyIGNyZWF0ZVJhbmdlID0gcmVxdWlyZSgnLi9fY3JlYXRlUmFuZ2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAqIGBzdGFydGAgaXMgc3BlY2lmaWVkIHdpdGhvdXQgYW4gYGVuZGAgb3IgYHN0ZXBgLiBJZiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLFxuICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICpcbiAqICoqTm90ZToqKiBKYXZhU2NyaXB0IGZvbGxvd3MgdGhlIElFRUUtNzU0IHN0YW5kYXJkIGZvciByZXNvbHZpbmdcbiAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ucmFuZ2UoNCk7XG4gKiAvLyA9PiBbMCwgMSwgMiwgM11cbiAqXG4gKiBfLnJhbmdlKC00KTtcbiAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICpcbiAqIF8ucmFuZ2UoMSwgNSk7XG4gKiAvLyA9PiBbMSwgMiwgMywgNF1cbiAqXG4gKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAqIC8vID0+IFswLCA1LCAxMCwgMTVdXG4gKlxuICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gKlxuICogXy5yYW5nZSgxLCA0LCAwKTtcbiAqIC8vID0+IFsxLCAxLCAxXVxuICpcbiAqIF8ucmFuZ2UoMCk7XG4gKiAvLyA9PiBbXVxuICovXG52YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhbmdlO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0QnlgIHdoaWNoIHVzZXMgYGNvbXBhcmVyYCB0byBkZWZpbmUgdGhlXG4gKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gKiB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyZXIgVGhlIGZ1bmN0aW9uIHRvIGRlZmluZSBzb3J0IG9yZGVyLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksIGNvbXBhcmVyKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU29ydEJ5O1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUFzY2VuZGluZztcbiIsInZhciBjb21wYXJlQXNjZW5kaW5nID0gcmVxdWlyZSgnLi9fY29tcGFyZUFzY2VuZGluZycpO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICogYW5kIHN0YWJsZSBzb3J0IHRoZW0uXG4gKlxuICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAqIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXJcbiAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW5bXXxzdHJpbmdbXX0gb3JkZXJzIFRoZSBvcmRlciB0byBzb3J0IGJ5IGZvciBlYWNoIHByb3BlcnR5LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICBvdGhDcml0ZXJpYSA9IG90aGVyLmNyaXRlcmlhLFxuICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBpZiAoaW5kZXggPj0gb3JkZXJzTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgb3JkZXIgPSBvcmRlcnNbaW5kZXhdO1xuICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgIH1cbiAgfVxuICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gIC8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAvL1xuICAvLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVNdWx0aXBsZTtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTWFwID0gcmVxdWlyZSgnLi9fYmFzZU1hcCcpLFxuICAgIGJhc2VTb3J0QnkgPSByZXF1aXJlKCcuL19iYXNlU29ydEJ5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgY29tcGFyZU11bHRpcGxlID0gcmVxdWlyZSgnLi9fY29tcGFyZU11bHRpcGxlJyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm9yZGVyQnlgIHdpdGhvdXQgcGFyYW0gZ3VhcmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IGl0ZXJhdGVlcyBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICBpZiAoaXRlcmF0ZWVzLmxlbmd0aCkge1xuICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gYmFzZUdldCh2YWx1ZSwgaXRlcmF0ZWUubGVuZ3RoID09PSAxID8gaXRlcmF0ZWVbMF0gOiBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVyYXRlZTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyYXRlZXMgPSBbaWRlbnRpdHldO1xuICB9XG5cbiAgdmFyIGluZGV4ID0gLTE7XG4gIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGJhc2VJdGVyYXRlZSkpO1xuXG4gIHZhciByZXN1bHQgPSBiYXNlTWFwKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICB9KTtcblxuICByZXR1cm4gYmFzZVNvcnRCeShyZXN1bHQsIGZ1bmN0aW9uKG9iamVjdCwgb3RoZXIpIHtcbiAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VPcmRlckJ5O1xuIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlT3JkZXJCeSA9IHJlcXVpcmUoJy4vX2Jhc2VPcmRlckJ5JyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gKiBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24gdGhydSBlYWNoIGl0ZXJhdGVlLiBUaGlzIG1ldGhvZFxuICogcGVyZm9ybXMgYSBzdGFibGUgc29ydCwgdGhhdCBpcywgaXQgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBzb3J0IG9yZGVyIG9mXG4gKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiAzMCB9LFxuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9XG4gKiBdO1xuICpcbiAqIF8uc29ydEJ5KHVzZXJzLCBbZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyOyB9XSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDMwXV1cbiAqXG4gKiBfLnNvcnRCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM0XSwgWydiYXJuZXknLCAzNl0sIFsnZnJlZCcsIDMwXSwgWydmcmVkJywgNDhdXVxuICovXG52YXIgc29ydEJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWVzKSB7XG4gIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGg7XG4gIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgIGl0ZXJhdGVlcyA9IFtdO1xuICB9IGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaXNJdGVyYXRlZUNhbGwoaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0sIGl0ZXJhdGVlc1syXSkpIHtcbiAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgfVxuICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgYmFzZUZsYXR0ZW4oaXRlcmF0ZWVzLCAxKSwgW10pO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydEJ5O1xuIiwidmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xudmFyIGlkQ291bnRlciA9IDA7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElELiBJZiBgcHJlZml4YCBpcyBnaXZlbiwgdGhlIElEIGlzIGFwcGVuZGVkIHRvIGl0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD0nJ10gVGhlIHZhbHVlIHRvIHByZWZpeCB0aGUgSUQgd2l0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAqXG4gKiBfLnVuaXF1ZUlkKCk7XG4gKiAvLyA9PiAnMTA1J1xuICovXG5mdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gIHJldHVybiB0b1N0cmluZyhwcmVmaXgpICsgaWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pcXVlSWQ7XG4iLCIvKipcbiAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25GdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVppcE9iamVjdChwcm9wcywgdmFsdWVzLCBhc3NpZ25GdW5jKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgdmFsc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGluZGV4IDwgdmFsc0xlbmd0aCA/IHZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVppcE9iamVjdDtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZVppcE9iamVjdCA9IHJlcXVpcmUoJy4vX2Jhc2VaaXBPYmplY3QnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICogb25lIG9mIHByb3BlcnR5IGlkZW50aWZpZXJzIGFuZCBvbmUgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjQuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbmZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGFzc2lnblZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB6aXBPYmplY3Q7XG4iLCIvKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBsb2Rhc2g7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgbG9kYXNoID0ge1xuICAgICAgY2xvbmVEZWVwOiByZXF1aXJlKFwibG9kYXNoL2Nsb25lRGVlcFwiKSxcbiAgICAgIGNvbnN0YW50OiByZXF1aXJlKFwibG9kYXNoL2NvbnN0YW50XCIpLFxuICAgICAgZGVmYXVsdHM6IHJlcXVpcmUoXCJsb2Rhc2gvZGVmYXVsdHNcIiksXG4gICAgICBlYWNoOiByZXF1aXJlKFwibG9kYXNoL2VhY2hcIiksXG4gICAgICBmaWx0ZXI6IHJlcXVpcmUoXCJsb2Rhc2gvZmlsdGVyXCIpLFxuICAgICAgZmluZDogcmVxdWlyZShcImxvZGFzaC9maW5kXCIpLFxuICAgICAgZmxhdHRlbjogcmVxdWlyZShcImxvZGFzaC9mbGF0dGVuXCIpLFxuICAgICAgZm9yRWFjaDogcmVxdWlyZShcImxvZGFzaC9mb3JFYWNoXCIpLFxuICAgICAgZm9ySW46IHJlcXVpcmUoXCJsb2Rhc2gvZm9ySW5cIiksXG4gICAgICBoYXM6ICByZXF1aXJlKFwibG9kYXNoL2hhc1wiKSxcbiAgICAgIGlzVW5kZWZpbmVkOiByZXF1aXJlKFwibG9kYXNoL2lzVW5kZWZpbmVkXCIpLFxuICAgICAgbGFzdDogcmVxdWlyZShcImxvZGFzaC9sYXN0XCIpLFxuICAgICAgbWFwOiByZXF1aXJlKFwibG9kYXNoL21hcFwiKSxcbiAgICAgIG1hcFZhbHVlczogcmVxdWlyZShcImxvZGFzaC9tYXBWYWx1ZXNcIiksXG4gICAgICBtYXg6IHJlcXVpcmUoXCJsb2Rhc2gvbWF4XCIpLFxuICAgICAgbWVyZ2U6IHJlcXVpcmUoXCJsb2Rhc2gvbWVyZ2VcIiksXG4gICAgICBtaW46IHJlcXVpcmUoXCJsb2Rhc2gvbWluXCIpLFxuICAgICAgbWluQnk6IHJlcXVpcmUoXCJsb2Rhc2gvbWluQnlcIiksXG4gICAgICBub3c6IHJlcXVpcmUoXCJsb2Rhc2gvbm93XCIpLFxuICAgICAgcGljazogcmVxdWlyZShcImxvZGFzaC9waWNrXCIpLFxuICAgICAgcmFuZ2U6IHJlcXVpcmUoXCJsb2Rhc2gvcmFuZ2VcIiksXG4gICAgICByZWR1Y2U6IHJlcXVpcmUoXCJsb2Rhc2gvcmVkdWNlXCIpLFxuICAgICAgc29ydEJ5OiByZXF1aXJlKFwibG9kYXNoL3NvcnRCeVwiKSxcbiAgICAgIHVuaXF1ZUlkOiByZXF1aXJlKFwibG9kYXNoL3VuaXF1ZUlkXCIpLFxuICAgICAgdmFsdWVzOiByZXF1aXJlKFwibG9kYXNoL3ZhbHVlc1wiKSxcbiAgICAgIHppcE9iamVjdDogcmVxdWlyZShcImxvZGFzaC96aXBPYmplY3RcIiksXG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWxvZGFzaCkge1xuICBsb2Rhc2ggPSB3aW5kb3cuXztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsb2Rhc2g7XG4iLCIvKlxuICogU2ltcGxlIGRvdWJseSBsaW5rZWQgbGlzdCBpbXBsZW1lbnRhdGlvbiBkZXJpdmVkIGZyb20gQ29ybWVuLCBldCBhbC4sXG4gKiBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0O1xuXG5mdW5jdGlvbiBMaXN0KCkge1xuICB2YXIgc2VudGluZWwgPSB7fTtcbiAgc2VudGluZWwuX25leHQgPSBzZW50aW5lbC5fcHJldiA9IHNlbnRpbmVsO1xuICB0aGlzLl9zZW50aW5lbCA9IHNlbnRpbmVsO1xufVxuXG5MaXN0LnByb3RvdHlwZS5kZXF1ZXVlID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgZW50cnkgPSBzZW50aW5lbC5fcHJldjtcbiAgaWYgKGVudHJ5ICE9PSBzZW50aW5lbCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9XG59O1xuXG5MaXN0LnByb3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24oZW50cnkpIHtcbiAgdmFyIHNlbnRpbmVsID0gdGhpcy5fc2VudGluZWw7XG4gIGlmIChlbnRyeS5fcHJldiAmJiBlbnRyeS5fbmV4dCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gIH1cbiAgZW50cnkuX25leHQgPSBzZW50aW5lbC5fbmV4dDtcbiAgc2VudGluZWwuX25leHQuX3ByZXYgPSBlbnRyeTtcbiAgc2VudGluZWwuX25leHQgPSBlbnRyeTtcbiAgZW50cnkuX3ByZXYgPSBzZW50aW5lbDtcbn07XG5cbkxpc3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdHJzID0gW107XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgY3VyciA9IHNlbnRpbmVsLl9wcmV2O1xuICB3aGlsZSAoY3VyciAhPT0gc2VudGluZWwpIHtcbiAgICBzdHJzLnB1c2goSlNPTi5zdHJpbmdpZnkoY3VyciwgZmlsdGVyT3V0TGlua3MpKTtcbiAgICBjdXJyID0gY3Vyci5fcHJldjtcbiAgfVxuICByZXR1cm4gXCJbXCIgKyBzdHJzLmpvaW4oXCIsIFwiKSArIFwiXVwiO1xufTtcblxuZnVuY3Rpb24gdW5saW5rKGVudHJ5KSB7XG4gIGVudHJ5Ll9wcmV2Ll9uZXh0ID0gZW50cnkuX25leHQ7XG4gIGVudHJ5Ll9uZXh0Ll9wcmV2ID0gZW50cnkuX3ByZXY7XG4gIGRlbGV0ZSBlbnRyeS5fbmV4dDtcbiAgZGVsZXRlIGVudHJ5Ll9wcmV2O1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJPdXRMaW5rcyhrLCB2KSB7XG4gIGlmIChrICE9PSBcIl9uZXh0XCIgJiYgayAhPT0gXCJfcHJldlwiKSB7XG4gICAgcmV0dXJuIHY7XG4gIH1cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhsaWJcIikuR3JhcGg7XG52YXIgTGlzdCA9IHJlcXVpcmUoXCIuL2RhdGEvbGlzdFwiKTtcblxuLypcbiAqIEEgZ3JlZWR5IGhldXJpc3RpYyBmb3IgZmluZGluZyBhIGZlZWRiYWNrIGFyYyBzZXQgZm9yIGEgZ3JhcGguIEEgZmVlZGJhY2tcbiAqIGFyYyBzZXQgaXMgYSBzZXQgb2YgZWRnZXMgdGhhdCBjYW4gYmUgcmVtb3ZlZCB0byBtYWtlIGEgZ3JhcGggYWN5Y2xpYy5cbiAqIFRoZSBhbGdvcml0aG0gY29tZXMgZnJvbTogUC4gRWFkZXMsIFguIExpbiwgYW5kIFcuIEYuIFNteXRoLCBcIkEgZmFzdCBhbmRcbiAqIGVmZmVjdGl2ZSBoZXVyaXN0aWMgZm9yIHRoZSBmZWVkYmFjayBhcmMgc2V0IHByb2JsZW0uXCIgVGhpcyBpbXBsZW1lbnRhdGlvblxuICogYWRqdXN0cyB0aGF0IGZyb20gdGhlIHBhcGVyIHRvIGFsbG93IGZvciB3ZWlnaHRlZCBlZGdlcy5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBncmVlZHlGQVM7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GTiA9IF8uY29uc3RhbnQoMSk7XG5cbmZ1bmN0aW9uIGdyZWVkeUZBUyhnLCB3ZWlnaHRGbikge1xuICBpZiAoZy5ub2RlQ291bnQoKSA8PSAxKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBzdGF0ZSA9IGJ1aWxkU3RhdGUoZywgd2VpZ2h0Rm4gfHwgREVGQVVMVF9XRUlHSFRfRk4pO1xuICB2YXIgcmVzdWx0cyA9IGRvR3JlZWR5RkFTKHN0YXRlLmdyYXBoLCBzdGF0ZS5idWNrZXRzLCBzdGF0ZS56ZXJvSWR4KTtcblxuICAvLyBFeHBhbmQgbXVsdGktZWRnZXNcbiAgcmV0dXJuIF8uZmxhdHRlbihfLm1hcChyZXN1bHRzLCBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIGcub3V0RWRnZXMoZS52LCBlLncpO1xuICB9KSwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGRvR3JlZWR5RkFTKGcsIGJ1Y2tldHMsIHplcm9JZHgpIHtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgdmFyIHNvdXJjZXMgPSBidWNrZXRzW2J1Y2tldHMubGVuZ3RoIC0gMV07XG4gIHZhciBzaW5rcyA9IGJ1Y2tldHNbMF07XG5cbiAgdmFyIGVudHJ5O1xuICB3aGlsZSAoZy5ub2RlQ291bnQoKSkge1xuICAgIHdoaWxlICgoZW50cnkgPSBzaW5rcy5kZXF1ZXVlKCkpKSAgIHsgcmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSk7IH1cbiAgICB3aGlsZSAoKGVudHJ5ID0gc291cmNlcy5kZXF1ZXVlKCkpKSB7IHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnkpOyB9XG4gICAgaWYgKGcubm9kZUNvdW50KCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSBidWNrZXRzLmxlbmd0aCAtIDI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgZW50cnkgPSBidWNrZXRzW2ldLmRlcXVldWUoKTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuY29uY2F0KHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnksIHRydWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiByZW1vdmVOb2RlKGcsIGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5LCBjb2xsZWN0UHJlZGVjZXNzb3JzKSB7XG4gIHZhciByZXN1bHRzID0gY29sbGVjdFByZWRlY2Vzc29ycyA/IFtdIDogdW5kZWZpbmVkO1xuXG4gIF8uZm9yRWFjaChnLmluRWRnZXMoZW50cnkudiksIGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgd2VpZ2h0ID0gZy5lZGdlKGVkZ2UpO1xuICAgIHZhciB1RW50cnkgPSBnLm5vZGUoZWRnZS52KTtcblxuICAgIGlmIChjb2xsZWN0UHJlZGVjZXNzb3JzKSB7XG4gICAgICByZXN1bHRzLnB1c2goeyB2OiBlZGdlLnYsIHc6IGVkZ2UudyB9KTtcbiAgICB9XG5cbiAgICB1RW50cnkub3V0IC09IHdlaWdodDtcbiAgICBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgdUVudHJ5KTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcub3V0RWRnZXMoZW50cnkudiksIGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgd2VpZ2h0ID0gZy5lZGdlKGVkZ2UpO1xuICAgIHZhciB3ID0gZWRnZS53O1xuICAgIHZhciB3RW50cnkgPSBnLm5vZGUodyk7XG4gICAgd0VudHJ5W1wiaW5cIl0gLT0gd2VpZ2h0O1xuICAgIGFzc2lnbkJ1Y2tldChidWNrZXRzLCB6ZXJvSWR4LCB3RW50cnkpO1xuICB9KTtcblxuICBnLnJlbW92ZU5vZGUoZW50cnkudik7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkU3RhdGUoZywgd2VpZ2h0Rm4pIHtcbiAgdmFyIGZhc0dyYXBoID0gbmV3IEdyYXBoKCk7XG4gIHZhciBtYXhJbiA9IDA7XG4gIHZhciBtYXhPdXQgPSAwO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBmYXNHcmFwaC5zZXROb2RlKHYsIHsgdjogdiwgXCJpblwiOiAwLCBvdXQ6IDAgfSk7XG4gIH0pO1xuXG4gIC8vIEFnZ3JlZ2F0ZSB3ZWlnaHRzIG9uIG5vZGVzLCBidXQgYWxzbyBzdW0gdGhlIHdlaWdodHMgYWNyb3NzIG11bHRpLWVkZ2VzXG4gIC8vIGludG8gYSBzaW5nbGUgZWRnZSBmb3IgdGhlIGZhc0dyYXBoLlxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHByZXZXZWlnaHQgPSBmYXNHcmFwaC5lZGdlKGUudiwgZS53KSB8fCAwO1xuICAgIHZhciB3ZWlnaHQgPSB3ZWlnaHRGbihlKTtcbiAgICB2YXIgZWRnZVdlaWdodCA9IHByZXZXZWlnaHQgKyB3ZWlnaHQ7XG4gICAgZmFzR3JhcGguc2V0RWRnZShlLnYsIGUudywgZWRnZVdlaWdodCk7XG4gICAgbWF4T3V0ID0gTWF0aC5tYXgobWF4T3V0LCBmYXNHcmFwaC5ub2RlKGUudikub3V0ICs9IHdlaWdodCk7XG4gICAgbWF4SW4gID0gTWF0aC5tYXgobWF4SW4sICBmYXNHcmFwaC5ub2RlKGUudylbXCJpblwiXSAgKz0gd2VpZ2h0KTtcbiAgfSk7XG5cbiAgdmFyIGJ1Y2tldHMgPSBfLnJhbmdlKG1heE91dCArIG1heEluICsgMykubWFwKGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IExpc3QoKTsgfSk7XG4gIHZhciB6ZXJvSWR4ID0gbWF4SW4gKyAxO1xuXG4gIF8uZm9yRWFjaChmYXNHcmFwaC5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIGZhc0dyYXBoLm5vZGUodikpO1xuICB9KTtcblxuICByZXR1cm4geyBncmFwaDogZmFzR3JhcGgsIGJ1Y2tldHM6IGJ1Y2tldHMsIHplcm9JZHg6IHplcm9JZHggfTtcbn1cblxuZnVuY3Rpb24gYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5KSB7XG4gIGlmICghZW50cnkub3V0KSB7XG4gICAgYnVja2V0c1swXS5lbnF1ZXVlKGVudHJ5KTtcbiAgfSBlbHNlIGlmICghZW50cnlbXCJpblwiXSkge1xuICAgIGJ1Y2tldHNbYnVja2V0cy5sZW5ndGggLSAxXS5lbnF1ZXVlKGVudHJ5KTtcbiAgfSBlbHNlIHtcbiAgICBidWNrZXRzW2VudHJ5Lm91dCAtIGVudHJ5W1wiaW5cIl0gKyB6ZXJvSWR4XS5lbnF1ZXVlKGVudHJ5KTtcbiAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIGdyZWVkeUZBUyA9IHJlcXVpcmUoXCIuL2dyZWVkeS1mYXNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgdW5kbzogdW5kb1xufTtcblxuZnVuY3Rpb24gcnVuKGcpIHtcbiAgdmFyIGZhcyA9IChnLmdyYXBoKCkuYWN5Y2xpY2VyID09PSBcImdyZWVkeVwiXG4gICAgPyBncmVlZHlGQVMoZywgd2VpZ2h0Rm4oZykpXG4gICAgOiBkZnNGQVMoZykpO1xuICBfLmZvckVhY2goZmFzLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGxhYmVsID0gZy5lZGdlKGUpO1xuICAgIGcucmVtb3ZlRWRnZShlKTtcbiAgICBsYWJlbC5mb3J3YXJkTmFtZSA9IGUubmFtZTtcbiAgICBsYWJlbC5yZXZlcnNlZCA9IHRydWU7XG4gICAgZy5zZXRFZGdlKGUudywgZS52LCBsYWJlbCwgXy51bmlxdWVJZChcInJldlwiKSk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHdlaWdodEZuKGcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIGcuZWRnZShlKS53ZWlnaHQ7XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZnNGQVMoZykge1xuICB2YXIgZmFzID0gW107XG4gIHZhciBzdGFjayA9IHt9O1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgaWYgKF8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIHN0YWNrW3ZdID0gdHJ1ZTtcbiAgICBfLmZvckVhY2goZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgaWYgKF8uaGFzKHN0YWNrLCBlLncpKSB7XG4gICAgICAgIGZhcy5wdXNoKGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGZzKGUudyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGVsZXRlIHN0YWNrW3ZdO1xuICB9XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZGZzKTtcbiAgcmV0dXJuIGZhcztcbn1cblxuZnVuY3Rpb24gdW5kbyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGxhYmVsLnJldmVyc2VkKSB7XG4gICAgICBnLnJlbW92ZUVkZ2UoZSk7XG5cbiAgICAgIHZhciBmb3J3YXJkTmFtZSA9IGxhYmVsLmZvcndhcmROYW1lO1xuICAgICAgZGVsZXRlIGxhYmVsLnJldmVyc2VkO1xuICAgICAgZGVsZXRlIGxhYmVsLmZvcndhcmROYW1lO1xuICAgICAgZy5zZXRFZGdlKGUudywgZS52LCBsYWJlbCwgZm9yd2FyZE5hbWUpO1xuICAgIH1cbiAgfSk7XG59XG4iLCIvKiBlc2xpbnQgXCJuby1jb25zb2xlXCI6IG9mZiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaGxpYlwiKS5HcmFwaDtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFkZER1bW15Tm9kZTogYWRkRHVtbXlOb2RlLFxuICBzaW1wbGlmeTogc2ltcGxpZnksXG4gIGFzTm9uQ29tcG91bmRHcmFwaDogYXNOb25Db21wb3VuZEdyYXBoLFxuICBzdWNjZXNzb3JXZWlnaHRzOiBzdWNjZXNzb3JXZWlnaHRzLFxuICBwcmVkZWNlc3NvcldlaWdodHM6IHByZWRlY2Vzc29yV2VpZ2h0cyxcbiAgaW50ZXJzZWN0UmVjdDogaW50ZXJzZWN0UmVjdCxcbiAgYnVpbGRMYXllck1hdHJpeDogYnVpbGRMYXllck1hdHJpeCxcbiAgbm9ybWFsaXplUmFua3M6IG5vcm1hbGl6ZVJhbmtzLFxuICByZW1vdmVFbXB0eVJhbmtzOiByZW1vdmVFbXB0eVJhbmtzLFxuICBhZGRCb3JkZXJOb2RlOiBhZGRCb3JkZXJOb2RlLFxuICBtYXhSYW5rOiBtYXhSYW5rLFxuICBwYXJ0aXRpb246IHBhcnRpdGlvbixcbiAgdGltZTogdGltZSxcbiAgbm90aW1lOiBub3RpbWVcbn07XG5cbi8qXG4gKiBBZGRzIGEgZHVtbXkgbm9kZSB0byB0aGUgZ3JhcGggYW5kIHJldHVybiB2LlxuICovXG5mdW5jdGlvbiBhZGREdW1teU5vZGUoZywgdHlwZSwgYXR0cnMsIG5hbWUpIHtcbiAgdmFyIHY7XG4gIGRvIHtcbiAgICB2ID0gXy51bmlxdWVJZChuYW1lKTtcbiAgfSB3aGlsZSAoZy5oYXNOb2RlKHYpKTtcblxuICBhdHRycy5kdW1teSA9IHR5cGU7XG4gIGcuc2V0Tm9kZSh2LCBhdHRycyk7XG4gIHJldHVybiB2O1xufVxuXG4vKlxuICogUmV0dXJucyBhIG5ldyBncmFwaCB3aXRoIG9ubHkgc2ltcGxlIGVkZ2VzLiBIYW5kbGVzIGFnZ3JlZ2F0aW9uIG9mIGRhdGFcbiAqIGFzc29jaWF0ZWQgd2l0aCBtdWx0aS1lZGdlcy5cbiAqL1xuZnVuY3Rpb24gc2ltcGxpZnkoZykge1xuICB2YXIgc2ltcGxpZmllZCA9IG5ldyBHcmFwaCgpLnNldEdyYXBoKGcuZ3JhcGgoKSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgc2ltcGxpZmllZC5zZXROb2RlKHYsIGcubm9kZSh2KSk7IH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHNpbXBsZUxhYmVsID0gc2ltcGxpZmllZC5lZGdlKGUudiwgZS53KSB8fCB7IHdlaWdodDogMCwgbWlubGVuOiAxIH07XG4gICAgdmFyIGxhYmVsID0gZy5lZGdlKGUpO1xuICAgIHNpbXBsaWZpZWQuc2V0RWRnZShlLnYsIGUudywge1xuICAgICAgd2VpZ2h0OiBzaW1wbGVMYWJlbC53ZWlnaHQgKyBsYWJlbC53ZWlnaHQsXG4gICAgICBtaW5sZW46IE1hdGgubWF4KHNpbXBsZUxhYmVsLm1pbmxlbiwgbGFiZWwubWlubGVuKVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHNpbXBsaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIGFzTm9uQ29tcG91bmRHcmFwaChnKSB7XG4gIHZhciBzaW1wbGlmaWVkID0gbmV3IEdyYXBoKHsgbXVsdGlncmFwaDogZy5pc011bHRpZ3JhcGgoKSB9KS5zZXRHcmFwaChnLmdyYXBoKCkpO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKCFnLmNoaWxkcmVuKHYpLmxlbmd0aCkge1xuICAgICAgc2ltcGxpZmllZC5zZXROb2RlKHYsIGcubm9kZSh2KSk7XG4gICAgfVxuICB9KTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHNpbXBsaWZpZWQuc2V0RWRnZShlLCBnLmVkZ2UoZSkpO1xuICB9KTtcbiAgcmV0dXJuIHNpbXBsaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHN1Y2Nlc3NvcldlaWdodHMoZykge1xuICB2YXIgd2VpZ2h0TWFwID0gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHN1Y3MgPSB7fTtcbiAgICBfLmZvckVhY2goZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgc3Vjc1tlLnddID0gKHN1Y3NbZS53XSB8fCAwKSArIGcuZWRnZShlKS53ZWlnaHQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN1Y3M7XG4gIH0pO1xuICByZXR1cm4gXy56aXBPYmplY3QoZy5ub2RlcygpLCB3ZWlnaHRNYXApO1xufVxuXG5mdW5jdGlvbiBwcmVkZWNlc3NvcldlaWdodHMoZykge1xuICB2YXIgd2VpZ2h0TWFwID0gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHByZWRzID0ge307XG4gICAgXy5mb3JFYWNoKGcuaW5FZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgcHJlZHNbZS52XSA9IChwcmVkc1tlLnZdIHx8IDApICsgZy5lZGdlKGUpLndlaWdodDtcbiAgICB9KTtcbiAgICByZXR1cm4gcHJlZHM7XG4gIH0pO1xuICByZXR1cm4gXy56aXBPYmplY3QoZy5ub2RlcygpLCB3ZWlnaHRNYXApO1xufVxuXG4vKlxuICogRmluZHMgd2hlcmUgYSBsaW5lIHN0YXJ0aW5nIGF0IHBvaW50ICh7eCwgeX0pIHdvdWxkIGludGVyc2VjdCBhIHJlY3RhbmdsZVxuICogKHt4LCB5LCB3aWR0aCwgaGVpZ2h0fSkgaWYgaXQgd2VyZSBwb2ludGluZyBhdCB0aGUgcmVjdGFuZ2xlJ3MgY2VudGVyLlxuICovXG5mdW5jdGlvbiBpbnRlcnNlY3RSZWN0KHJlY3QsIHBvaW50KSB7XG4gIHZhciB4ID0gcmVjdC54O1xuICB2YXIgeSA9IHJlY3QueTtcblxuICAvLyBSZWN0YW5nbGUgaW50ZXJzZWN0aW9uIGFsZ29yaXRobSBmcm9tOlxuICAvLyBodHRwOi8vbWF0aC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTA4MTEzL2ZpbmQtZWRnZS1iZXR3ZWVuLXR3by1ib3hlc1xuICB2YXIgZHggPSBwb2ludC54IC0geDtcbiAgdmFyIGR5ID0gcG9pbnQueSAtIHk7XG4gIHZhciB3ID0gcmVjdC53aWR0aCAvIDI7XG4gIHZhciBoID0gcmVjdC5oZWlnaHQgLyAyO1xuXG4gIGlmICghZHggJiYgIWR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IHBvc3NpYmxlIHRvIGZpbmQgaW50ZXJzZWN0aW9uIGluc2lkZSBvZiB0aGUgcmVjdGFuZ2xlXCIpO1xuICB9XG5cbiAgdmFyIHN4LCBzeTtcbiAgaWYgKE1hdGguYWJzKGR5KSAqIHcgPiBNYXRoLmFicyhkeCkgKiBoKSB7XG4gICAgLy8gSW50ZXJzZWN0aW9uIGlzIHRvcCBvciBib3R0b20gb2YgcmVjdC5cbiAgICBpZiAoZHkgPCAwKSB7XG4gICAgICBoID0gLWg7XG4gICAgfVxuICAgIHN4ID0gaCAqIGR4IC8gZHk7XG4gICAgc3kgPSBoO1xuICB9IGVsc2Uge1xuICAgIC8vIEludGVyc2VjdGlvbiBpcyBsZWZ0IG9yIHJpZ2h0IG9mIHJlY3QuXG4gICAgaWYgKGR4IDwgMCkge1xuICAgICAgdyA9IC13O1xuICAgIH1cbiAgICBzeCA9IHc7XG4gICAgc3kgPSB3ICogZHkgLyBkeDtcbiAgfVxuXG4gIHJldHVybiB7IHg6IHggKyBzeCwgeTogeSArIHN5IH07XG59XG5cbi8qXG4gKiBHaXZlbiBhIERBRyB3aXRoIGVhY2ggbm9kZSBhc3NpZ25lZCBcInJhbmtcIiBhbmQgXCJvcmRlclwiIHByb3BlcnRpZXMsIHRoaXNcbiAqIGZ1bmN0aW9uIHdpbGwgcHJvZHVjZSBhIG1hdHJpeCB3aXRoIHRoZSBpZHMgb2YgZWFjaCBub2RlLlxuICovXG5mdW5jdGlvbiBidWlsZExheWVyTWF0cml4KGcpIHtcbiAgdmFyIGxheWVyaW5nID0gXy5tYXAoXy5yYW5nZShtYXhSYW5rKGcpICsgMSksIGZ1bmN0aW9uKCkgeyByZXR1cm4gW107IH0pO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIHJhbmsgPSBub2RlLnJhbms7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHJhbmspKSB7XG4gICAgICBsYXllcmluZ1tyYW5rXVtub2RlLm9yZGVyXSA9IHY7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGxheWVyaW5nO1xufVxuXG4vKlxuICogQWRqdXN0cyB0aGUgcmFua3MgZm9yIGFsbCBub2RlcyBpbiB0aGUgZ3JhcGggc3VjaCB0aGF0IGFsbCBub2RlcyB2IGhhdmVcbiAqIHJhbmsodikgPj0gMCBhbmQgYXQgbGVhc3Qgb25lIG5vZGUgdyBoYXMgcmFuayh3KSA9IDAuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJhbmtzKGcpIHtcbiAgdmFyIG1pbiA9IF8ubWluKF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLnJhbms7IH0pKTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChfLmhhcyhub2RlLCBcInJhbmtcIikpIHtcbiAgICAgIG5vZGUucmFuayAtPSBtaW47XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRW1wdHlSYW5rcyhnKSB7XG4gIC8vIFJhbmtzIG1heSBub3Qgc3RhcnQgYXQgMCwgc28gd2UgbmVlZCB0byBvZmZzZXQgdGhlbVxuICB2YXIgb2Zmc2V0ID0gXy5taW4oXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSkpO1xuXG4gIHZhciBsYXllcnMgPSBbXTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciByYW5rID0gZy5ub2RlKHYpLnJhbmsgLSBvZmZzZXQ7XG4gICAgaWYgKCFsYXllcnNbcmFua10pIHtcbiAgICAgIGxheWVyc1tyYW5rXSA9IFtdO1xuICAgIH1cbiAgICBsYXllcnNbcmFua10ucHVzaCh2KTtcbiAgfSk7XG5cbiAgdmFyIGRlbHRhID0gMDtcbiAgdmFyIG5vZGVSYW5rRmFjdG9yID0gZy5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yO1xuICBfLmZvckVhY2gobGF5ZXJzLCBmdW5jdGlvbih2cywgaSkge1xuICAgIGlmIChfLmlzVW5kZWZpbmVkKHZzKSAmJiBpICUgbm9kZVJhbmtGYWN0b3IgIT09IDApIHtcbiAgICAgIC0tZGVsdGE7XG4gICAgfSBlbHNlIGlmIChkZWx0YSkge1xuICAgICAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbih2KSB7IGcubm9kZSh2KS5yYW5rICs9IGRlbHRhOyB9KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRCb3JkZXJOb2RlKGcsIHByZWZpeCwgcmFuaywgb3JkZXIpIHtcbiAgdmFyIG5vZGUgPSB7XG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH07XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDQpIHtcbiAgICBub2RlLnJhbmsgPSByYW5rO1xuICAgIG5vZGUub3JkZXIgPSBvcmRlcjtcbiAgfVxuICByZXR1cm4gYWRkRHVtbXlOb2RlKGcsIFwiYm9yZGVyXCIsIG5vZGUsIHByZWZpeCk7XG59XG5cbmZ1bmN0aW9uIG1heFJhbmsoZykge1xuICByZXR1cm4gXy5tYXgoXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHJhbmsgPSBnLm5vZGUodikucmFuaztcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmFuaykpIHtcbiAgICAgIHJldHVybiByYW5rO1xuICAgIH1cbiAgfSkpO1xufVxuXG4vKlxuICogUGFydGl0aW9uIGEgY29sbGVjdGlvbiBpbnRvIHR3byBncm91cHM6IGBsaHNgIGFuZCBgcmhzYC4gSWYgdGhlIHN1cHBsaWVkXG4gKiBmdW5jdGlvbiByZXR1cm5zIHRydWUgZm9yIGFuIGVudHJ5IGl0IGdvZXMgaW50byBgbGhzYC4gT3RoZXJ3aXNlIGl0IGdvZXNcbiAqIGludG8gYHJocy5cbiAqL1xuZnVuY3Rpb24gcGFydGl0aW9uKGNvbGxlY3Rpb24sIGZuKSB7XG4gIHZhciByZXN1bHQgPSB7IGxoczogW10sIHJoczogW10gfTtcbiAgXy5mb3JFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKGZuKHZhbHVlKSkge1xuICAgICAgcmVzdWx0Lmxocy5wdXNoKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnJocy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKlxuICogUmV0dXJucyBhIG5ldyBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmbmAgd2l0aCBhIHRpbWVyLiBUaGUgd3JhcHBlciBsb2dzIHRoZVxuICogdGltZSBpdCB0YWtlcyB0byBleGVjdXRlIHRoZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gdGltZShuYW1lLCBmbikge1xuICB2YXIgc3RhcnQgPSBfLm5vdygpO1xuICB0cnkge1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIGNvbnNvbGUubG9nKG5hbWUgKyBcIiB0aW1lOiBcIiArIChfLm5vdygpIC0gc3RhcnQpICsgXCJtc1wiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3RpbWUobmFtZSwgZm4pIHtcbiAgcmV0dXJuIGZuKCk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgdW5kbzogdW5kb1xufTtcblxuLypcbiAqIEJyZWFrcyBhbnkgbG9uZyBlZGdlcyBpbiB0aGUgZ3JhcGggaW50byBzaG9ydCBzZWdtZW50cyB0aGF0IHNwYW4gMSBsYXllclxuICogZWFjaC4gVGhpcyBvcGVyYXRpb24gaXMgdW5kb2FibGUgd2l0aCB0aGUgZGVub3JtYWxpemUgZnVuY3Rpb24uXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGlucHV0IGdyYXBoIGlzIGEgREFHLlxuICogICAgMi4gRWFjaCBub2RlIGluIHRoZSBncmFwaCBoYXMgYSBcInJhbmtcIiBwcm9wZXJ0eS5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbjpcbiAqXG4gKiAgICAxLiBBbGwgZWRnZXMgaW4gdGhlIGdyYXBoIGhhdmUgYSBsZW5ndGggb2YgMS5cbiAqICAgIDIuIER1bW15IG5vZGVzIGFyZSBhZGRlZCB3aGVyZSBlZGdlcyBoYXZlIGJlZW4gc3BsaXQgaW50byBzZWdtZW50cy5cbiAqICAgIDMuIFRoZSBncmFwaCBpcyBhdWdtZW50ZWQgd2l0aCBhIFwiZHVtbXlDaGFpbnNcIiBhdHRyaWJ1dGUgd2hpY2ggY29udGFpbnNcbiAqICAgICAgIHRoZSBmaXJzdCBkdW1teSBpbiBlYWNoIGNoYWluIG9mIGR1bW15IG5vZGVzIHByb2R1Y2VkLlxuICovXG5mdW5jdGlvbiBydW4oZykge1xuICBnLmdyYXBoKCkuZHVtbXlDaGFpbnMgPSBbXTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZWRnZSkgeyBub3JtYWxpemVFZGdlKGcsIGVkZ2UpOyB9KTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplRWRnZShnLCBlKSB7XG4gIHZhciB2ID0gZS52O1xuICB2YXIgdlJhbmsgPSBnLm5vZGUodikucmFuaztcbiAgdmFyIHcgPSBlLnc7XG4gIHZhciB3UmFuayA9IGcubm9kZSh3KS5yYW5rO1xuICB2YXIgbmFtZSA9IGUubmFtZTtcbiAgdmFyIGVkZ2VMYWJlbCA9IGcuZWRnZShlKTtcbiAgdmFyIGxhYmVsUmFuayA9IGVkZ2VMYWJlbC5sYWJlbFJhbms7XG5cbiAgaWYgKHdSYW5rID09PSB2UmFuayArIDEpIHJldHVybjtcblxuICBnLnJlbW92ZUVkZ2UoZSk7XG5cbiAgdmFyIGR1bW15LCBhdHRycywgaTtcbiAgZm9yIChpID0gMCwgKyt2UmFuazsgdlJhbmsgPCB3UmFuazsgKytpLCArK3ZSYW5rKSB7XG4gICAgZWRnZUxhYmVsLnBvaW50cyA9IFtdO1xuICAgIGF0dHJzID0ge1xuICAgICAgd2lkdGg6IDAsIGhlaWdodDogMCxcbiAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLCBlZGdlT2JqOiBlLFxuICAgICAgcmFuazogdlJhbmtcbiAgICB9O1xuICAgIGR1bW15ID0gdXRpbC5hZGREdW1teU5vZGUoZywgXCJlZGdlXCIsIGF0dHJzLCBcIl9kXCIpO1xuICAgIGlmICh2UmFuayA9PT0gbGFiZWxSYW5rKSB7XG4gICAgICBhdHRycy53aWR0aCA9IGVkZ2VMYWJlbC53aWR0aDtcbiAgICAgIGF0dHJzLmhlaWdodCA9IGVkZ2VMYWJlbC5oZWlnaHQ7XG4gICAgICBhdHRycy5kdW1teSA9IFwiZWRnZS1sYWJlbFwiO1xuICAgICAgYXR0cnMubGFiZWxwb3MgPSBlZGdlTGFiZWwubGFiZWxwb3M7XG4gICAgfVxuICAgIGcuc2V0RWRnZSh2LCBkdW1teSwgeyB3ZWlnaHQ6IGVkZ2VMYWJlbC53ZWlnaHQgfSwgbmFtZSk7XG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGcuZ3JhcGgoKS5kdW1teUNoYWlucy5wdXNoKGR1bW15KTtcbiAgICB9XG4gICAgdiA9IGR1bW15O1xuICB9XG5cbiAgZy5zZXRFZGdlKHYsIHcsIHsgd2VpZ2h0OiBlZGdlTGFiZWwud2VpZ2h0IH0sIG5hbWUpO1xufVxuXG5mdW5jdGlvbiB1bmRvKGcpIHtcbiAgXy5mb3JFYWNoKGcuZ3JhcGgoKS5kdW1teUNoYWlucywgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIHZhciBvcmlnTGFiZWwgPSBub2RlLmVkZ2VMYWJlbDtcbiAgICB2YXIgdztcbiAgICBnLnNldEVkZ2Uobm9kZS5lZGdlT2JqLCBvcmlnTGFiZWwpO1xuICAgIHdoaWxlIChub2RlLmR1bW15KSB7XG4gICAgICB3ID0gZy5zdWNjZXNzb3JzKHYpWzBdO1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgICAgb3JpZ0xhYmVsLnBvaW50cy5wdXNoKHsgeDogbm9kZS54LCB5OiBub2RlLnkgfSk7XG4gICAgICBpZiAobm9kZS5kdW1teSA9PT0gXCJlZGdlLWxhYmVsXCIpIHtcbiAgICAgICAgb3JpZ0xhYmVsLnggPSBub2RlLng7XG4gICAgICAgIG9yaWdMYWJlbC55ID0gbm9kZS55O1xuICAgICAgICBvcmlnTGFiZWwud2lkdGggPSBub2RlLndpZHRoO1xuICAgICAgICBvcmlnTGFiZWwuaGVpZ2h0ID0gbm9kZS5oZWlnaHQ7XG4gICAgICB9XG4gICAgICB2ID0gdztcbiAgICAgIG5vZGUgPSBnLm5vZGUodik7XG4gICAgfVxuICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBsb25nZXN0UGF0aDogbG9uZ2VzdFBhdGgsXG4gIHNsYWNrOiBzbGFja1xufTtcblxuLypcbiAqIEluaXRpYWxpemVzIHJhbmtzIGZvciB0aGUgaW5wdXQgZ3JhcGggdXNpbmcgdGhlIGxvbmdlc3QgcGF0aCBhbGdvcml0aG0uIFRoaXNcbiAqIGFsZ29yaXRobSBzY2FsZXMgd2VsbCBhbmQgaXMgZmFzdCBpbiBwcmFjdGljZSwgaXQgeWllbGRzIHJhdGhlciBwb29yXG4gKiBzb2x1dGlvbnMuIE5vZGVzIGFyZSBwdXNoZWQgdG8gdGhlIGxvd2VzdCBsYXllciBwb3NzaWJsZSwgbGVhdmluZyB0aGUgYm90dG9tXG4gKiByYW5rcyB3aWRlIGFuZCBsZWF2aW5nIGVkZ2VzIGxvbmdlciB0aGFuIG5lY2Vzc2FyeS4gSG93ZXZlciwgZHVlIHRvIGl0c1xuICogc3BlZWQsIHRoaXMgYWxnb3JpdGhtIGlzIGdvb2QgZm9yIGdldHRpbmcgYW4gaW5pdGlhbCByYW5raW5nIHRoYXQgY2FuIGJlIGZlZFxuICogaW50byBvdGhlciBhbGdvcml0aG1zLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGRvZXMgbm90IG5vcm1hbGl6ZSBsYXllcnMgYmVjYXVzZSBpdCB3aWxsIGJlIHVzZWQgYnkgb3RoZXJcbiAqIGFsZ29yaXRobXMgaW4gbW9zdCBjYXNlcy4gSWYgdXNpbmcgdGhpcyBhbGdvcml0aG0gZGlyZWN0bHksIGJlIHN1cmUgdG9cbiAqIHJ1biBub3JtYWxpemUgYXQgdGhlIGVuZC5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBRy5cbiAqICAgIDIuIElucHV0IGdyYXBoIG5vZGUgbGFiZWxzIGNhbiBiZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBFYWNoIG5vZGUgd2lsbCBiZSBhc3NpZ24gYW4gKHVubm9ybWFsaXplZCkgXCJyYW5rXCIgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGxvbmdlc3RQYXRoKGcpIHtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBsYWJlbCA9IGcubm9kZSh2KTtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIHJldHVybiBsYWJlbC5yYW5rO1xuICAgIH1cbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcblxuICAgIHZhciByYW5rID0gXy5taW4oXy5tYXAoZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIGRmcyhlLncpIC0gZy5lZGdlKGUpLm1pbmxlbjtcbiAgICB9KSk7XG5cbiAgICBpZiAocmFuayA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIHx8IC8vIHJldHVybiB2YWx1ZSBvZiBfLm1hcChbXSkgZm9yIExvZGFzaCAzXG4gICAgICAgIHJhbmsgPT09IHVuZGVmaW5lZCB8fCAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW10pIGZvciBMb2Rhc2ggNFxuICAgICAgICByYW5rID09PSBudWxsKSB7IC8vIHJldHVybiB2YWx1ZSBvZiBfLm1hcChbbnVsbF0pXG4gICAgICByYW5rID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gKGxhYmVsLnJhbmsgPSByYW5rKTtcbiAgfVxuXG4gIF8uZm9yRWFjaChnLnNvdXJjZXMoKSwgZGZzKTtcbn1cblxuLypcbiAqIFJldHVybnMgdGhlIGFtb3VudCBvZiBzbGFjayBmb3IgdGhlIGdpdmVuIGVkZ2UuIFRoZSBzbGFjayBpcyBkZWZpbmVkIGFzIHRoZVxuICogZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsZW5ndGggb2YgdGhlIGVkZ2UgYW5kIGl0cyBtaW5pbXVtIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gc2xhY2soZywgZSkge1xuICByZXR1cm4gZy5ub2RlKGUudykucmFuayAtIGcubm9kZShlLnYpLnJhbmsgLSBnLmVkZ2UoZSkubWlubGVuO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciBzbGFjayA9IHJlcXVpcmUoXCIuL3V0aWxcIikuc2xhY2s7XG5cbm1vZHVsZS5leHBvcnRzID0gZmVhc2libGVUcmVlO1xuXG4vKlxuICogQ29uc3RydWN0cyBhIHNwYW5uaW5nIHRyZWUgd2l0aCB0aWdodCBlZGdlcyBhbmQgYWRqdXN0ZWQgdGhlIGlucHV0IG5vZGUnc1xuICogcmFua3MgdG8gYWNoaWV2ZSB0aGlzLiBBIHRpZ2h0IGVkZ2UgaXMgb25lIHRoYXQgaXMgaGFzIGEgbGVuZ3RoIHRoYXQgbWF0Y2hlc1xuICogaXRzIFwibWlubGVuXCIgYXR0cmlidXRlLlxuICpcbiAqIFRoZSBiYXNpYyBzdHJ1Y3R1cmUgZm9yIHRoaXMgZnVuY3Rpb24gaXMgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBXG4gKiBUZWNobmlxdWUgZm9yIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbXVzdCBiZSBhIERBRy5cbiAqICAgIDIuIEdyYXBoIG11c3QgYmUgY29ubmVjdGVkLlxuICogICAgMy4gR3JhcGggbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBub2RlLlxuICogICAgNS4gR3JhcGggbm9kZXMgbXVzdCBoYXZlIGJlZW4gcHJldmlvdXNseSBhc3NpZ25lZCBhIFwicmFua1wiIHByb3BlcnR5IHRoYXRcbiAqICAgICAgIHJlc3BlY3RzIHRoZSBcIm1pbmxlblwiIHByb3BlcnR5IG9mIGluY2lkZW50IGVkZ2VzLlxuICogICAgNi4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIGEgXCJtaW5sZW5cIiBwcm9wZXJ0eS5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgLSBHcmFwaCBub2RlcyB3aWxsIGhhdmUgdGhlaXIgcmFuayBhZGp1c3RlZCB0byBlbnN1cmUgdGhhdCBhbGwgZWRnZXMgYXJlXG4gKiAgICAgIHRpZ2h0LlxuICpcbiAqIFJldHVybnMgYSB0cmVlICh1bmRpcmVjdGVkIGdyYXBoKSB0aGF0IGlzIGNvbnN0cnVjdGVkIHVzaW5nIG9ubHkgXCJ0aWdodFwiXG4gKiBlZGdlcy5cbiAqL1xuZnVuY3Rpb24gZmVhc2libGVUcmVlKGcpIHtcbiAgdmFyIHQgPSBuZXcgR3JhcGgoeyBkaXJlY3RlZDogZmFsc2UgfSk7XG5cbiAgLy8gQ2hvb3NlIGFyYml0cmFyeSBub2RlIGZyb20gd2hpY2ggdG8gc3RhcnQgb3VyIHRyZWVcbiAgdmFyIHN0YXJ0ID0gZy5ub2RlcygpWzBdO1xuICB2YXIgc2l6ZSA9IGcubm9kZUNvdW50KCk7XG4gIHQuc2V0Tm9kZShzdGFydCwge30pO1xuXG4gIHZhciBlZGdlLCBkZWx0YTtcbiAgd2hpbGUgKHRpZ2h0VHJlZSh0LCBnKSA8IHNpemUpIHtcbiAgICBlZGdlID0gZmluZE1pblNsYWNrRWRnZSh0LCBnKTtcbiAgICBkZWx0YSA9IHQuaGFzTm9kZShlZGdlLnYpID8gc2xhY2soZywgZWRnZSkgOiAtc2xhY2soZywgZWRnZSk7XG4gICAgc2hpZnRSYW5rcyh0LCBnLCBkZWx0YSk7XG4gIH1cblxuICByZXR1cm4gdDtcbn1cblxuLypcbiAqIEZpbmRzIGEgbWF4aW1hbCB0cmVlIG9mIHRpZ2h0IGVkZ2VzIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gdGhlXG4gKiB0cmVlLlxuICovXG5mdW5jdGlvbiB0aWdodFRyZWUodCwgZykge1xuICBmdW5jdGlvbiBkZnModikge1xuICAgIF8uZm9yRWFjaChnLm5vZGVFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgdmFyIGVkZ2VWID0gZS52LFxuICAgICAgICB3ID0gKHYgPT09IGVkZ2VWKSA/IGUudyA6IGVkZ2VWO1xuICAgICAgaWYgKCF0Lmhhc05vZGUodykgJiYgIXNsYWNrKGcsIGUpKSB7XG4gICAgICAgIHQuc2V0Tm9kZSh3LCB7fSk7XG4gICAgICAgIHQuc2V0RWRnZSh2LCB3LCB7fSk7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIF8uZm9yRWFjaCh0Lm5vZGVzKCksIGRmcyk7XG4gIHJldHVybiB0Lm5vZGVDb3VudCgpO1xufVxuXG4vKlxuICogRmluZHMgdGhlIGVkZ2Ugd2l0aCB0aGUgc21hbGxlc3Qgc2xhY2sgdGhhdCBpcyBpbmNpZGVudCBvbiB0cmVlIGFuZCByZXR1cm5zXG4gKiBpdC5cbiAqL1xuZnVuY3Rpb24gZmluZE1pblNsYWNrRWRnZSh0LCBnKSB7XG4gIHJldHVybiBfLm1pbkJ5KGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIGlmICh0Lmhhc05vZGUoZS52KSAhPT0gdC5oYXNOb2RlKGUudykpIHtcbiAgICAgIHJldHVybiBzbGFjayhnLCBlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzaGlmdFJhbmtzKHQsIGcsIGRlbHRhKSB7XG4gIF8uZm9yRWFjaCh0Lm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBnLm5vZGUodikucmFuayArPSBkZWx0YTtcbiAgfSk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIGZlYXNpYmxlVHJlZSA9IHJlcXVpcmUoXCIuL2ZlYXNpYmxlLXRyZWVcIik7XG52YXIgc2xhY2sgPSByZXF1aXJlKFwiLi91dGlsXCIpLnNsYWNrO1xudmFyIGluaXRSYW5rID0gcmVxdWlyZShcIi4vdXRpbFwiKS5sb25nZXN0UGF0aDtcbnZhciBwcmVvcmRlciA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5hbGcucHJlb3JkZXI7XG52YXIgcG9zdG9yZGVyID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLmFsZy5wb3N0b3JkZXI7XG52YXIgc2ltcGxpZnkgPSByZXF1aXJlKFwiLi4vdXRpbFwiKS5zaW1wbGlmeTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXR3b3JrU2ltcGxleDtcblxuLy8gRXhwb3NlIHNvbWUgaW50ZXJuYWxzIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG5uZXR3b3JrU2ltcGxleC5pbml0TG93TGltVmFsdWVzID0gaW5pdExvd0xpbVZhbHVlcztcbm5ldHdvcmtTaW1wbGV4LmluaXRDdXRWYWx1ZXMgPSBpbml0Q3V0VmFsdWVzO1xubmV0d29ya1NpbXBsZXguY2FsY0N1dFZhbHVlID0gY2FsY0N1dFZhbHVlO1xubmV0d29ya1NpbXBsZXgubGVhdmVFZGdlID0gbGVhdmVFZGdlO1xubmV0d29ya1NpbXBsZXguZW50ZXJFZGdlID0gZW50ZXJFZGdlO1xubmV0d29ya1NpbXBsZXguZXhjaGFuZ2VFZGdlcyA9IGV4Y2hhbmdlRWRnZXM7XG5cbi8qXG4gKiBUaGUgbmV0d29yayBzaW1wbGV4IGFsZ29yaXRobSBhc3NpZ25zIHJhbmtzIHRvIGVhY2ggbm9kZSBpbiB0aGUgaW5wdXQgZ3JhcGhcbiAqIGFuZCBpdGVyYXRpdmVseSBpbXByb3ZlcyB0aGUgcmFua2luZyB0byByZWR1Y2UgdGhlIGxlbmd0aCBvZiBlZGdlcy5cbiAqXG4gKiBQcmVjb25kaXRpb25zOlxuICpcbiAqICAgIDEuIFRoZSBpbnB1dCBncmFwaCBtdXN0IGJlIGEgREFHLlxuICogICAgMi4gQWxsIG5vZGVzIGluIHRoZSBncmFwaCBtdXN0IGhhdmUgYW4gb2JqZWN0IHZhbHVlLlxuICogICAgMy4gQWxsIGVkZ2VzIGluIHRoZSBncmFwaCBtdXN0IGhhdmUgXCJtaW5sZW5cIiBhbmQgXCJ3ZWlnaHRcIiBhdHRyaWJ1dGVzLlxuICpcbiAqIFBvc3Rjb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEFsbCBub2RlcyBpbiB0aGUgZ3JhcGggd2lsbCBoYXZlIGFuIGFzc2lnbmVkIFwicmFua1wiIGF0dHJpYnV0ZSB0aGF0IGhhc1xuICogICAgICAgYmVlbiBvcHRpbWl6ZWQgYnkgdGhlIG5ldHdvcmsgc2ltcGxleCBhbGdvcml0aG0uIFJhbmtzIHN0YXJ0IGF0IDAuXG4gKlxuICpcbiAqIEEgcm91Z2ggc2tldGNoIG9mIHRoZSBhbGdvcml0aG0gaXMgYXMgZm9sbG93czpcbiAqXG4gKiAgICAxLiBBc3NpZ24gaW5pdGlhbCByYW5rcyB0byBlYWNoIG5vZGUuIFdlIHVzZSB0aGUgbG9uZ2VzdCBwYXRoIGFsZ29yaXRobSxcbiAqICAgICAgIHdoaWNoIGFzc2lnbnMgcmFua3MgdG8gdGhlIGxvd2VzdCBwb3NpdGlvbiBwb3NzaWJsZS4gSW4gZ2VuZXJhbCB0aGlzXG4gKiAgICAgICBsZWFkcyB0byB2ZXJ5IHdpZGUgYm90dG9tIHJhbmtzIGFuZCB1bm5lY2Vzc2FyaWx5IGxvbmcgZWRnZXMuXG4gKiAgICAyLiBDb25zdHJ1Y3QgYSBmZWFzaWJsZSB0aWdodCB0cmVlLiBBIHRpZ2h0IHRyZWUgaXMgb25lIHN1Y2ggdGhhdCBhbGxcbiAqICAgICAgIGVkZ2VzIGluIHRoZSB0cmVlIGhhdmUgbm8gc2xhY2sgKGRpZmZlcmVuY2UgYmV0d2VlbiBsZW5ndGggb2YgZWRnZVxuICogICAgICAgYW5kIG1pbmxlbiBmb3IgdGhlIGVkZ2UpLiBUaGlzIGJ5IGl0c2VsZiBncmVhdGx5IGltcHJvdmVzIHRoZSBhc3NpZ25lZFxuICogICAgICAgcmFua2luZ3MgYnkgc2hvcnRpbmcgZWRnZXMuXG4gKiAgICAzLiBJdGVyYXRpdmVseSBmaW5kIGVkZ2VzIHRoYXQgaGF2ZSBuZWdhdGl2ZSBjdXQgdmFsdWVzLiBHZW5lcmFsbHkgYVxuICogICAgICAgbmVnYXRpdmUgY3V0IHZhbHVlIGluZGljYXRlcyB0aGF0IHRoZSBlZGdlIGNvdWxkIGJlIHJlbW92ZWQgYW5kIGEgbmV3XG4gKiAgICAgICB0cmVlIGVkZ2UgY291bGQgYmUgYWRkZWQgdG8gcHJvZHVjZSBhIG1vcmUgY29tcGFjdCBncmFwaC5cbiAqXG4gKiBNdWNoIG9mIHRoZSBhbGdvcml0aG1zIGhlcmUgYXJlIGRlcml2ZWQgZnJvbSBHYW5zbmVyLCBldCBhbC4sIFwiQSBUZWNobmlxdWVcbiAqIGZvciBEcmF3aW5nIERpcmVjdGVkIEdyYXBocy5cIiBUaGUgc3RydWN0dXJlIG9mIHRoZSBmaWxlIHJvdWdobHkgZm9sbG93cyB0aGVcbiAqIHN0cnVjdHVyZSBvZiB0aGUgb3ZlcmFsbCBhbGdvcml0aG0uXG4gKi9cbmZ1bmN0aW9uIG5ldHdvcmtTaW1wbGV4KGcpIHtcbiAgZyA9IHNpbXBsaWZ5KGcpO1xuICBpbml0UmFuayhnKTtcbiAgdmFyIHQgPSBmZWFzaWJsZVRyZWUoZyk7XG4gIGluaXRMb3dMaW1WYWx1ZXModCk7XG4gIGluaXRDdXRWYWx1ZXModCwgZyk7XG5cbiAgdmFyIGUsIGY7XG4gIHdoaWxlICgoZSA9IGxlYXZlRWRnZSh0KSkpIHtcbiAgICBmID0gZW50ZXJFZGdlKHQsIGcsIGUpO1xuICAgIGV4Y2hhbmdlRWRnZXModCwgZywgZSwgZik7XG4gIH1cbn1cblxuLypcbiAqIEluaXRpYWxpemVzIGN1dCB2YWx1ZXMgZm9yIGFsbCBlZGdlcyBpbiB0aGUgdHJlZS5cbiAqL1xuZnVuY3Rpb24gaW5pdEN1dFZhbHVlcyh0LCBnKSB7XG4gIHZhciB2cyA9IHBvc3RvcmRlcih0LCB0Lm5vZGVzKCkpO1xuICB2cyA9IHZzLnNsaWNlKDAsIHZzLmxlbmd0aCAtIDEpO1xuICBfLmZvckVhY2godnMsIGZ1bmN0aW9uKHYpIHtcbiAgICBhc3NpZ25DdXRWYWx1ZSh0LCBnLCB2KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkN1dFZhbHVlKHQsIGcsIGNoaWxkKSB7XG4gIHZhciBjaGlsZExhYiA9IHQubm9kZShjaGlsZCk7XG4gIHZhciBwYXJlbnQgPSBjaGlsZExhYi5wYXJlbnQ7XG4gIHQuZWRnZShjaGlsZCwgcGFyZW50KS5jdXR2YWx1ZSA9IGNhbGNDdXRWYWx1ZSh0LCBnLCBjaGlsZCk7XG59XG5cbi8qXG4gKiBHaXZlbiB0aGUgdGlnaHQgdHJlZSwgaXRzIGdyYXBoLCBhbmQgYSBjaGlsZCBpbiB0aGUgZ3JhcGggY2FsY3VsYXRlIGFuZFxuICogcmV0dXJuIHRoZSBjdXQgdmFsdWUgZm9yIHRoZSBlZGdlIGJldHdlZW4gdGhlIGNoaWxkIGFuZCBpdHMgcGFyZW50LlxuICovXG5mdW5jdGlvbiBjYWxjQ3V0VmFsdWUodCwgZywgY2hpbGQpIHtcbiAgdmFyIGNoaWxkTGFiID0gdC5ub2RlKGNoaWxkKTtcbiAgdmFyIHBhcmVudCA9IGNoaWxkTGFiLnBhcmVudDtcbiAgLy8gVHJ1ZSBpZiB0aGUgY2hpbGQgaXMgb24gdGhlIHRhaWwgZW5kIG9mIHRoZSBlZGdlIGluIHRoZSBkaXJlY3RlZCBncmFwaFxuICB2YXIgY2hpbGRJc1RhaWwgPSB0cnVlO1xuICAvLyBUaGUgZ3JhcGgncyB2aWV3IG9mIHRoZSB0cmVlIGVkZ2Ugd2UncmUgaW5zcGVjdGluZ1xuICB2YXIgZ3JhcGhFZGdlID0gZy5lZGdlKGNoaWxkLCBwYXJlbnQpO1xuICAvLyBUaGUgYWNjdW11bGF0ZWQgY3V0IHZhbHVlIGZvciB0aGUgZWRnZSBiZXR3ZWVuIHRoaXMgbm9kZSBhbmQgaXRzIHBhcmVudFxuICB2YXIgY3V0VmFsdWUgPSAwO1xuXG4gIGlmICghZ3JhcGhFZGdlKSB7XG4gICAgY2hpbGRJc1RhaWwgPSBmYWxzZTtcbiAgICBncmFwaEVkZ2UgPSBnLmVkZ2UocGFyZW50LCBjaGlsZCk7XG4gIH1cblxuICBjdXRWYWx1ZSA9IGdyYXBoRWRnZS53ZWlnaHQ7XG5cbiAgXy5mb3JFYWNoKGcubm9kZUVkZ2VzKGNoaWxkKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBpc091dEVkZ2UgPSBlLnYgPT09IGNoaWxkLFxuICAgICAgb3RoZXIgPSBpc091dEVkZ2UgPyBlLncgOiBlLnY7XG5cbiAgICBpZiAob3RoZXIgIT09IHBhcmVudCkge1xuICAgICAgdmFyIHBvaW50c1RvSGVhZCA9IGlzT3V0RWRnZSA9PT0gY2hpbGRJc1RhaWwsXG4gICAgICAgIG90aGVyV2VpZ2h0ID0gZy5lZGdlKGUpLndlaWdodDtcblxuICAgICAgY3V0VmFsdWUgKz0gcG9pbnRzVG9IZWFkID8gb3RoZXJXZWlnaHQgOiAtb3RoZXJXZWlnaHQ7XG4gICAgICBpZiAoaXNUcmVlRWRnZSh0LCBjaGlsZCwgb3RoZXIpKSB7XG4gICAgICAgIHZhciBvdGhlckN1dFZhbHVlID0gdC5lZGdlKGNoaWxkLCBvdGhlcikuY3V0dmFsdWU7XG4gICAgICAgIGN1dFZhbHVlICs9IHBvaW50c1RvSGVhZCA/IC1vdGhlckN1dFZhbHVlIDogb3RoZXJDdXRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjdXRWYWx1ZTtcbn1cblxuZnVuY3Rpb24gaW5pdExvd0xpbVZhbHVlcyh0cmVlLCByb290KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHJvb3QgPSB0cmVlLm5vZGVzKClbMF07XG4gIH1cbiAgZGZzQXNzaWduTG93TGltKHRyZWUsIHt9LCAxLCByb290KTtcbn1cblxuZnVuY3Rpb24gZGZzQXNzaWduTG93TGltKHRyZWUsIHZpc2l0ZWQsIG5leHRMaW0sIHYsIHBhcmVudCkge1xuICB2YXIgbG93ID0gbmV4dExpbTtcbiAgdmFyIGxhYmVsID0gdHJlZS5ub2RlKHYpO1xuXG4gIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICBfLmZvckVhY2godHJlZS5uZWlnaGJvcnModiksIGZ1bmN0aW9uKHcpIHtcbiAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICBuZXh0TGltID0gZGZzQXNzaWduTG93TGltKHRyZWUsIHZpc2l0ZWQsIG5leHRMaW0sIHcsIHYpO1xuICAgIH1cbiAgfSk7XG5cbiAgbGFiZWwubG93ID0gbG93O1xuICBsYWJlbC5saW0gPSBuZXh0TGltKys7XG4gIGlmIChwYXJlbnQpIHtcbiAgICBsYWJlbC5wYXJlbnQgPSBwYXJlbnQ7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETyBzaG91bGQgYmUgYWJsZSB0byByZW1vdmUgdGhpcyB3aGVuIHdlIGluY3JlbWVudGFsbHkgdXBkYXRlIGxvdyBsaW1cbiAgICBkZWxldGUgbGFiZWwucGFyZW50O1xuICB9XG5cbiAgcmV0dXJuIG5leHRMaW07XG59XG5cbmZ1bmN0aW9uIGxlYXZlRWRnZSh0cmVlKSB7XG4gIHJldHVybiBfLmZpbmQodHJlZS5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIHRyZWUuZWRnZShlKS5jdXR2YWx1ZSA8IDA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlbnRlckVkZ2UodCwgZywgZWRnZSkge1xuICB2YXIgdiA9IGVkZ2UudjtcbiAgdmFyIHcgPSBlZGdlLnc7XG5cbiAgLy8gRm9yIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gd2UgYXNzdW1lIHRoYXQgdiBpcyB0aGUgdGFpbCBhbmQgdyBpcyB0aGVcbiAgLy8gaGVhZCwgc28gaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIGVkZ2UgaW4gdGhlIGdyYXBoIHdlIHNob3VsZCBmbGlwIGl0IHRvXG4gIC8vIG1hdGNoIHRoZSBjb3JyZWN0IG9yaWVudGF0aW9uLlxuICBpZiAoIWcuaGFzRWRnZSh2LCB3KSkge1xuICAgIHYgPSBlZGdlLnc7XG4gICAgdyA9IGVkZ2UudjtcbiAgfVxuXG4gIHZhciB2TGFiZWwgPSB0Lm5vZGUodik7XG4gIHZhciB3TGFiZWwgPSB0Lm5vZGUodyk7XG4gIHZhciB0YWlsTGFiZWwgPSB2TGFiZWw7XG4gIHZhciBmbGlwID0gZmFsc2U7XG5cbiAgLy8gSWYgdGhlIHJvb3QgaXMgaW4gdGhlIHRhaWwgb2YgdGhlIGVkZ2UgdGhlbiB3ZSBuZWVkIHRvIGZsaXAgdGhlIGxvZ2ljIHRoYXRcbiAgLy8gY2hlY2tzIGZvciB0aGUgaGVhZCBhbmQgdGFpbCBub2RlcyBpbiB0aGUgY2FuZGlkYXRlcyBmdW5jdGlvbiBiZWxvdy5cbiAgaWYgKHZMYWJlbC5saW0gPiB3TGFiZWwubGltKSB7XG4gICAgdGFpbExhYmVsID0gd0xhYmVsO1xuICAgIGZsaXAgPSB0cnVlO1xuICB9XG5cbiAgdmFyIGNhbmRpZGF0ZXMgPSBfLmZpbHRlcihnLmVkZ2VzKCksIGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICByZXR1cm4gZmxpcCA9PT0gaXNEZXNjZW5kYW50KHQsIHQubm9kZShlZGdlLnYpLCB0YWlsTGFiZWwpICYmXG4gICAgICAgICAgIGZsaXAgIT09IGlzRGVzY2VuZGFudCh0LCB0Lm5vZGUoZWRnZS53KSwgdGFpbExhYmVsKTtcbiAgfSk7XG5cbiAgcmV0dXJuIF8ubWluQnkoY2FuZGlkYXRlcywgZnVuY3Rpb24oZWRnZSkgeyByZXR1cm4gc2xhY2soZywgZWRnZSk7IH0pO1xufVxuXG5mdW5jdGlvbiBleGNoYW5nZUVkZ2VzKHQsIGcsIGUsIGYpIHtcbiAgdmFyIHYgPSBlLnY7XG4gIHZhciB3ID0gZS53O1xuICB0LnJlbW92ZUVkZ2Uodiwgdyk7XG4gIHQuc2V0RWRnZShmLnYsIGYudywge30pO1xuICBpbml0TG93TGltVmFsdWVzKHQpO1xuICBpbml0Q3V0VmFsdWVzKHQsIGcpO1xuICB1cGRhdGVSYW5rcyh0LCBnKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlUmFua3ModCwgZykge1xuICB2YXIgcm9vdCA9IF8uZmluZCh0Lm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgcmV0dXJuICFnLm5vZGUodikucGFyZW50OyB9KTtcbiAgdmFyIHZzID0gcHJlb3JkZXIodCwgcm9vdCk7XG4gIHZzID0gdnMuc2xpY2UoMSk7XG4gIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIHZhciBwYXJlbnQgPSB0Lm5vZGUodikucGFyZW50LFxuICAgICAgZWRnZSA9IGcuZWRnZSh2LCBwYXJlbnQpLFxuICAgICAgZmxpcHBlZCA9IGZhbHNlO1xuXG4gICAgaWYgKCFlZGdlKSB7XG4gICAgICBlZGdlID0gZy5lZGdlKHBhcmVudCwgdik7XG4gICAgICBmbGlwcGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnLm5vZGUodikucmFuayA9IGcubm9kZShwYXJlbnQpLnJhbmsgKyAoZmxpcHBlZCA/IGVkZ2UubWlubGVuIDogLWVkZ2UubWlubGVuKTtcbiAgfSk7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGVkZ2UgaXMgaW4gdGhlIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGlzVHJlZUVkZ2UodHJlZSwgdSwgdikge1xuICByZXR1cm4gdHJlZS5oYXNFZGdlKHUsIHYpO1xufVxuXG4vKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgbm9kZSBpcyBkZXNjZW5kYW50IG9mIHRoZSByb290IG5vZGUgcGVyIHRoZVxuICogYXNzaWduZWQgbG93IGFuZCBsaW0gYXR0cmlidXRlcyBpbiB0aGUgdHJlZS5cbiAqL1xuZnVuY3Rpb24gaXNEZXNjZW5kYW50KHRyZWUsIHZMYWJlbCwgcm9vdExhYmVsKSB7XG4gIHJldHVybiByb290TGFiZWwubG93IDw9IHZMYWJlbC5saW0gJiYgdkxhYmVsLmxpbSA8PSByb290TGFiZWwubGltO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciByYW5rVXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgbG9uZ2VzdFBhdGggPSByYW5rVXRpbC5sb25nZXN0UGF0aDtcbnZhciBmZWFzaWJsZVRyZWUgPSByZXF1aXJlKFwiLi9mZWFzaWJsZS10cmVlXCIpO1xudmFyIG5ldHdvcmtTaW1wbGV4ID0gcmVxdWlyZShcIi4vbmV0d29yay1zaW1wbGV4XCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhbms7XG5cbi8qXG4gKiBBc3NpZ25zIGEgcmFuayB0byBlYWNoIG5vZGUgaW4gdGhlIGlucHV0IGdyYXBoIHRoYXQgcmVzcGVjdHMgdGhlIFwibWlubGVuXCJcbiAqIGNvbnN0cmFpbnQgc3BlY2lmaWVkIG9uIGVkZ2VzIGJldHdlZW4gbm9kZXMuXG4gKlxuICogVGhpcyBiYXNpYyBzdHJ1Y3R1cmUgaXMgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZSBmb3JcbiAqIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbXVzdCBiZSBhIGNvbm5lY3RlZCBEQUdcbiAqICAgIDIuIEdyYXBoIG5vZGVzIG11c3QgYmUgb2JqZWN0c1xuICogICAgMy4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIFwid2VpZ2h0XCIgYW5kIFwibWlubGVuXCIgYXR0cmlidXRlc1xuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBub2RlcyB3aWxsIGhhdmUgYSBcInJhbmtcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlXG4gKiAgICAgICBhbGdvcml0aG0uIFJhbmtzIGNhbiBzdGFydCBhdCBhbnkgaW5kZXggKGluY2x1ZGluZyBuZWdhdGl2ZSksIHdlJ2xsXG4gKiAgICAgICBmaXggdGhlbSB1cCBsYXRlci5cbiAqL1xuZnVuY3Rpb24gcmFuayhnKSB7XG4gIHN3aXRjaChnLmdyYXBoKCkucmFua2VyKSB7XG4gIGNhc2UgXCJuZXR3b3JrLXNpbXBsZXhcIjogbmV0d29ya1NpbXBsZXhSYW5rZXIoZyk7IGJyZWFrO1xuICBjYXNlIFwidGlnaHQtdHJlZVwiOiB0aWdodFRyZWVSYW5rZXIoZyk7IGJyZWFrO1xuICBjYXNlIFwibG9uZ2VzdC1wYXRoXCI6IGxvbmdlc3RQYXRoUmFua2VyKGcpOyBicmVhaztcbiAgZGVmYXVsdDogbmV0d29ya1NpbXBsZXhSYW5rZXIoZyk7XG4gIH1cbn1cblxuLy8gQSBmYXN0IGFuZCBzaW1wbGUgcmFua2VyLCBidXQgcmVzdWx0cyBhcmUgZmFyIGZyb20gb3B0aW1hbC5cbnZhciBsb25nZXN0UGF0aFJhbmtlciA9IGxvbmdlc3RQYXRoO1xuXG5mdW5jdGlvbiB0aWdodFRyZWVSYW5rZXIoZykge1xuICBsb25nZXN0UGF0aChnKTtcbiAgZmVhc2libGVUcmVlKGcpO1xufVxuXG5mdW5jdGlvbiBuZXR3b3JrU2ltcGxleFJhbmtlcihnKSB7XG4gIG5ldHdvcmtTaW1wbGV4KGcpO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50RHVtbXlDaGFpbnM7XG5cbmZ1bmN0aW9uIHBhcmVudER1bW15Q2hhaW5zKGcpIHtcbiAgdmFyIHBvc3RvcmRlck51bXMgPSBwb3N0b3JkZXIoZyk7XG5cbiAgXy5mb3JFYWNoKGcuZ3JhcGgoKS5kdW1teUNoYWlucywgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIHZhciBlZGdlT2JqID0gbm9kZS5lZGdlT2JqO1xuICAgIHZhciBwYXRoRGF0YSA9IGZpbmRQYXRoKGcsIHBvc3RvcmRlck51bXMsIGVkZ2VPYmoudiwgZWRnZU9iai53KTtcbiAgICB2YXIgcGF0aCA9IHBhdGhEYXRhLnBhdGg7XG4gICAgdmFyIGxjYSA9IHBhdGhEYXRhLmxjYTtcbiAgICB2YXIgcGF0aElkeCA9IDA7XG4gICAgdmFyIHBhdGhWID0gcGF0aFtwYXRoSWR4XTtcbiAgICB2YXIgYXNjZW5kaW5nID0gdHJ1ZTtcblxuICAgIHdoaWxlICh2ICE9PSBlZGdlT2JqLncpIHtcbiAgICAgIG5vZGUgPSBnLm5vZGUodik7XG5cbiAgICAgIGlmIChhc2NlbmRpbmcpIHtcbiAgICAgICAgd2hpbGUgKChwYXRoViA9IHBhdGhbcGF0aElkeF0pICE9PSBsY2EgJiZcbiAgICAgICAgICAgICAgIGcubm9kZShwYXRoVikubWF4UmFuayA8IG5vZGUucmFuaykge1xuICAgICAgICAgIHBhdGhJZHgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoViA9PT0gbGNhKSB7XG4gICAgICAgICAgYXNjZW5kaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFhc2NlbmRpbmcpIHtcbiAgICAgICAgd2hpbGUgKHBhdGhJZHggPCBwYXRoLmxlbmd0aCAtIDEgJiZcbiAgICAgICAgICAgICAgIGcubm9kZShwYXRoViA9IHBhdGhbcGF0aElkeCArIDFdKS5taW5SYW5rIDw9IG5vZGUucmFuaykge1xuICAgICAgICAgIHBhdGhJZHgrKztcbiAgICAgICAgfVxuICAgICAgICBwYXRoViA9IHBhdGhbcGF0aElkeF07XG4gICAgICB9XG5cbiAgICAgIGcuc2V0UGFyZW50KHYsIHBhdGhWKTtcbiAgICAgIHYgPSBnLnN1Y2Nlc3NvcnModilbMF07XG4gICAgfVxuICB9KTtcbn1cblxuLy8gRmluZCBhIHBhdGggZnJvbSB2IHRvIHcgdGhyb3VnaCB0aGUgbG93ZXN0IGNvbW1vbiBhbmNlc3RvciAoTENBKS4gUmV0dXJuIHRoZVxuLy8gZnVsbCBwYXRoIGFuZCB0aGUgTENBLlxuZnVuY3Rpb24gZmluZFBhdGgoZywgcG9zdG9yZGVyTnVtcywgdiwgdykge1xuICB2YXIgdlBhdGggPSBbXTtcbiAgdmFyIHdQYXRoID0gW107XG4gIHZhciBsb3cgPSBNYXRoLm1pbihwb3N0b3JkZXJOdW1zW3ZdLmxvdywgcG9zdG9yZGVyTnVtc1t3XS5sb3cpO1xuICB2YXIgbGltID0gTWF0aC5tYXgocG9zdG9yZGVyTnVtc1t2XS5saW0sIHBvc3RvcmRlck51bXNbd10ubGltKTtcbiAgdmFyIHBhcmVudDtcbiAgdmFyIGxjYTtcblxuICAvLyBUcmF2ZXJzZSB1cCBmcm9tIHYgdG8gZmluZCB0aGUgTENBXG4gIHBhcmVudCA9IHY7XG4gIGRvIHtcbiAgICBwYXJlbnQgPSBnLnBhcmVudChwYXJlbnQpO1xuICAgIHZQYXRoLnB1c2gocGFyZW50KTtcbiAgfSB3aGlsZSAocGFyZW50ICYmXG4gICAgICAgICAgIChwb3N0b3JkZXJOdW1zW3BhcmVudF0ubG93ID4gbG93IHx8IGxpbSA+IHBvc3RvcmRlck51bXNbcGFyZW50XS5saW0pKTtcbiAgbGNhID0gcGFyZW50O1xuXG4gIC8vIFRyYXZlcnNlIGZyb20gdyB0byBMQ0FcbiAgcGFyZW50ID0gdztcbiAgd2hpbGUgKChwYXJlbnQgPSBnLnBhcmVudChwYXJlbnQpKSAhPT0gbGNhKSB7XG4gICAgd1BhdGgucHVzaChwYXJlbnQpO1xuICB9XG5cbiAgcmV0dXJuIHsgcGF0aDogdlBhdGguY29uY2F0KHdQYXRoLnJldmVyc2UoKSksIGxjYTogbGNhIH07XG59XG5cbmZ1bmN0aW9uIHBvc3RvcmRlcihnKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgdmFyIGxpbSA9IDA7XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgbG93ID0gbGltO1xuICAgIF8uZm9yRWFjaChnLmNoaWxkcmVuKHYpLCBkZnMpO1xuICAgIHJlc3VsdFt2XSA9IHsgbG93OiBsb3csIGxpbTogbGltKysgfTtcbiAgfVxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBkZnMpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHJ1bjogcnVuLFxuICBjbGVhbnVwOiBjbGVhbnVwXG59O1xuXG4vKlxuICogQSBuZXN0aW5nIGdyYXBoIGNyZWF0ZXMgZHVtbXkgbm9kZXMgZm9yIHRoZSB0b3BzIGFuZCBib3R0b21zIG9mIHN1YmdyYXBocyxcbiAqIGFkZHMgYXBwcm9wcmlhdGUgZWRnZXMgdG8gZW5zdXJlIHRoYXQgYWxsIGNsdXN0ZXIgbm9kZXMgYXJlIHBsYWNlZCBiZXR3ZWVuXG4gKiB0aGVzZSBib3VuZHJpZXMsIGFuZCBlbnN1cmVzIHRoYXQgdGhlIGdyYXBoIGlzIGNvbm5lY3RlZC5cbiAqXG4gKiBJbiBhZGRpdGlvbiB3ZSBlbnN1cmUsIHRocm91Z2ggdGhlIHVzZSBvZiB0aGUgbWlubGVuIHByb3BlcnR5LCB0aGF0IG5vZGVzXG4gKiBhbmQgc3ViZ3JhcGggYm9yZGVyIG5vZGVzIHRvIG5vdCBlbmQgdXAgb24gdGhlIHNhbWUgcmFuay5cbiAqXG4gKiBQcmVjb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIGlzIGEgREFHXG4gKiAgICAyLiBOb2RlcyBpbiB0aGUgaW5wdXQgZ3JhcGggaGFzIGEgbWlubGVuIGF0dHJpYnV0ZVxuICpcbiAqIFBvc3Rjb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIGlzIGNvbm5lY3RlZC5cbiAqICAgIDIuIER1bW15IG5vZGVzIGFyZSBhZGRlZCBmb3IgdGhlIHRvcHMgYW5kIGJvdHRvbXMgb2Ygc3ViZ3JhcGhzLlxuICogICAgMy4gVGhlIG1pbmxlbiBhdHRyaWJ1dGUgZm9yIG5vZGVzIGlzIGFkanVzdGVkIHRvIGVuc3VyZSBub2RlcyBkbyBub3RcbiAqICAgICAgIGdldCBwbGFjZWQgb24gdGhlIHNhbWUgcmFuayBhcyBzdWJncmFwaCBib3JkZXIgbm9kZXMuXG4gKlxuICogVGhlIG5lc3RpbmcgZ3JhcGggaWRlYSBjb21lcyBmcm9tIFNhbmRlciwgXCJMYXlvdXQgb2YgQ29tcG91bmQgRGlyZWN0ZWRcbiAqIEdyYXBocy5cIlxuICovXG5mdW5jdGlvbiBydW4oZykge1xuICB2YXIgcm9vdCA9IHV0aWwuYWRkRHVtbXlOb2RlKGcsIFwicm9vdFwiLCB7fSwgXCJfcm9vdFwiKTtcbiAgdmFyIGRlcHRocyA9IHRyZWVEZXB0aHMoZyk7XG4gIHZhciBoZWlnaHQgPSBfLm1heChfLnZhbHVlcyhkZXB0aHMpKSAtIDE7IC8vIE5vdGU6IGRlcHRocyBpcyBhbiBPYmplY3Qgbm90IGFuIGFycmF5XG4gIHZhciBub2RlU2VwID0gMiAqIGhlaWdodCArIDE7XG5cbiAgZy5ncmFwaCgpLm5lc3RpbmdSb290ID0gcm9vdDtcblxuICAvLyBNdWx0aXBseSBtaW5sZW4gYnkgbm9kZVNlcCB0byBhbGlnbiBub2RlcyBvbiBub24tYm9yZGVyIHJhbmtzLlxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7IGcuZWRnZShlKS5taW5sZW4gKj0gbm9kZVNlcDsgfSk7XG5cbiAgLy8gQ2FsY3VsYXRlIGEgd2VpZ2h0IHRoYXQgaXMgc3VmZmljaWVudCB0byBrZWVwIHN1YmdyYXBocyB2ZXJ0aWNhbGx5IGNvbXBhY3RcbiAgdmFyIHdlaWdodCA9IHN1bVdlaWdodHMoZykgKyAxO1xuXG4gIC8vIENyZWF0ZSBib3JkZXIgbm9kZXMgYW5kIGxpbmsgdGhlbSB1cFxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBmdW5jdGlvbihjaGlsZCkge1xuICAgIGRmcyhnLCByb290LCBub2RlU2VwLCB3ZWlnaHQsIGhlaWdodCwgZGVwdGhzLCBjaGlsZCk7XG4gIH0pO1xuXG4gIC8vIFNhdmUgdGhlIG11bHRpcGxpZXIgZm9yIG5vZGUgbGF5ZXJzIGZvciBsYXRlciByZW1vdmFsIG9mIGVtcHR5IGJvcmRlclxuICAvLyBsYXllcnMuXG4gIGcuZ3JhcGgoKS5ub2RlUmFua0ZhY3RvciA9IG5vZGVTZXA7XG59XG5cbmZ1bmN0aW9uIGRmcyhnLCByb290LCBub2RlU2VwLCB3ZWlnaHQsIGhlaWdodCwgZGVwdGhzLCB2KSB7XG4gIHZhciBjaGlsZHJlbiA9IGcuY2hpbGRyZW4odik7XG4gIGlmICghY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgaWYgKHYgIT09IHJvb3QpIHtcbiAgICAgIGcuc2V0RWRnZShyb290LCB2LCB7IHdlaWdodDogMCwgbWlubGVuOiBub2RlU2VwIH0pO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgdG9wID0gdXRpbC5hZGRCb3JkZXJOb2RlKGcsIFwiX2J0XCIpO1xuICB2YXIgYm90dG9tID0gdXRpbC5hZGRCb3JkZXJOb2RlKGcsIFwiX2JiXCIpO1xuICB2YXIgbGFiZWwgPSBnLm5vZGUodik7XG5cbiAgZy5zZXRQYXJlbnQodG9wLCB2KTtcbiAgbGFiZWwuYm9yZGVyVG9wID0gdG9wO1xuICBnLnNldFBhcmVudChib3R0b20sIHYpO1xuICBsYWJlbC5ib3JkZXJCb3R0b20gPSBib3R0b207XG5cbiAgXy5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbihjaGlsZCkge1xuICAgIGRmcyhnLCByb290LCBub2RlU2VwLCB3ZWlnaHQsIGhlaWdodCwgZGVwdGhzLCBjaGlsZCk7XG5cbiAgICB2YXIgY2hpbGROb2RlID0gZy5ub2RlKGNoaWxkKTtcbiAgICB2YXIgY2hpbGRUb3AgPSBjaGlsZE5vZGUuYm9yZGVyVG9wID8gY2hpbGROb2RlLmJvcmRlclRvcCA6IGNoaWxkO1xuICAgIHZhciBjaGlsZEJvdHRvbSA9IGNoaWxkTm9kZS5ib3JkZXJCb3R0b20gPyBjaGlsZE5vZGUuYm9yZGVyQm90dG9tIDogY2hpbGQ7XG4gICAgdmFyIHRoaXNXZWlnaHQgPSBjaGlsZE5vZGUuYm9yZGVyVG9wID8gd2VpZ2h0IDogMiAqIHdlaWdodDtcbiAgICB2YXIgbWlubGVuID0gY2hpbGRUb3AgIT09IGNoaWxkQm90dG9tID8gMSA6IGhlaWdodCAtIGRlcHRoc1t2XSArIDE7XG5cbiAgICBnLnNldEVkZ2UodG9wLCBjaGlsZFRvcCwge1xuICAgICAgd2VpZ2h0OiB0aGlzV2VpZ2h0LFxuICAgICAgbWlubGVuOiBtaW5sZW4sXG4gICAgICBuZXN0aW5nRWRnZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgZy5zZXRFZGdlKGNoaWxkQm90dG9tLCBib3R0b20sIHtcbiAgICAgIHdlaWdodDogdGhpc1dlaWdodCxcbiAgICAgIG1pbmxlbjogbWlubGVuLFxuICAgICAgbmVzdGluZ0VkZ2U6IHRydWVcbiAgICB9KTtcbiAgfSk7XG5cbiAgaWYgKCFnLnBhcmVudCh2KSkge1xuICAgIGcuc2V0RWRnZShyb290LCB0b3AsIHsgd2VpZ2h0OiAwLCBtaW5sZW46IGhlaWdodCArIGRlcHRoc1t2XSB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmVlRGVwdGhzKGcpIHtcbiAgdmFyIGRlcHRocyA9IHt9O1xuICBmdW5jdGlvbiBkZnModiwgZGVwdGgpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIF8uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgICAgZGZzKGNoaWxkLCBkZXB0aCArIDEpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGRlcHRoc1t2XSA9IGRlcHRoO1xuICB9XG4gIF8uZm9yRWFjaChnLmNoaWxkcmVuKCksIGZ1bmN0aW9uKHYpIHsgZGZzKHYsIDEpOyB9KTtcbiAgcmV0dXJuIGRlcHRocztcbn1cblxuZnVuY3Rpb24gc3VtV2VpZ2h0cyhnKSB7XG4gIHJldHVybiBfLnJlZHVjZShnLmVkZ2VzKCksIGZ1bmN0aW9uKGFjYywgZSkge1xuICAgIHJldHVybiBhY2MgKyBnLmVkZ2UoZSkud2VpZ2h0O1xuICB9LCAwKTtcbn1cblxuZnVuY3Rpb24gY2xlYW51cChnKSB7XG4gIHZhciBncmFwaExhYmVsID0gZy5ncmFwaCgpO1xuICBnLnJlbW92ZU5vZGUoZ3JhcGhMYWJlbC5uZXN0aW5nUm9vdCk7XG4gIGRlbGV0ZSBncmFwaExhYmVsLm5lc3RpbmdSb290O1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGVkZ2UubmVzdGluZ0VkZ2UpIHtcbiAgICAgIGcucmVtb3ZlRWRnZShlKTtcbiAgICB9XG4gIH0pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gYWRkQm9yZGVyU2VnbWVudHM7XG5cbmZ1bmN0aW9uIGFkZEJvcmRlclNlZ21lbnRzKGcpIHtcbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIF8uZm9yRWFjaChjaGlsZHJlbiwgZGZzKTtcbiAgICB9XG5cbiAgICBpZiAoXy5oYXMobm9kZSwgXCJtaW5SYW5rXCIpKSB7XG4gICAgICBub2RlLmJvcmRlckxlZnQgPSBbXTtcbiAgICAgIG5vZGUuYm9yZGVyUmlnaHQgPSBbXTtcbiAgICAgIGZvciAodmFyIHJhbmsgPSBub2RlLm1pblJhbmssIG1heFJhbmsgPSBub2RlLm1heFJhbmsgKyAxO1xuICAgICAgICByYW5rIDwgbWF4UmFuaztcbiAgICAgICAgKytyYW5rKSB7XG4gICAgICAgIGFkZEJvcmRlck5vZGUoZywgXCJib3JkZXJMZWZ0XCIsIFwiX2JsXCIsIHYsIG5vZGUsIHJhbmspO1xuICAgICAgICBhZGRCb3JkZXJOb2RlKGcsIFwiYm9yZGVyUmlnaHRcIiwgXCJfYnJcIiwgdiwgbm9kZSwgcmFuayk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZGZzKTtcbn1cblxuZnVuY3Rpb24gYWRkQm9yZGVyTm9kZShnLCBwcm9wLCBwcmVmaXgsIHNnLCBzZ05vZGUsIHJhbmspIHtcbiAgdmFyIGxhYmVsID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwLCByYW5rOiByYW5rLCBib3JkZXJUeXBlOiBwcm9wIH07XG4gIHZhciBwcmV2ID0gc2dOb2RlW3Byb3BdW3JhbmsgLSAxXTtcbiAgdmFyIGN1cnIgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcImJvcmRlclwiLCBsYWJlbCwgcHJlZml4KTtcbiAgc2dOb2RlW3Byb3BdW3JhbmtdID0gY3VycjtcbiAgZy5zZXRQYXJlbnQoY3Vyciwgc2cpO1xuICBpZiAocHJldikge1xuICAgIGcuc2V0RWRnZShwcmV2LCBjdXJyLCB7IHdlaWdodDogMSB9KTtcbiAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWRqdXN0OiBhZGp1c3QsXG4gIHVuZG86IHVuZG9cbn07XG5cbmZ1bmN0aW9uIGFkanVzdChnKSB7XG4gIHZhciByYW5rRGlyID0gZy5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTtcbiAgaWYgKHJhbmtEaXIgPT09IFwibHJcIiB8fCByYW5rRGlyID09PSBcInJsXCIpIHtcbiAgICBzd2FwV2lkdGhIZWlnaHQoZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5kbyhnKSB7XG4gIHZhciByYW5rRGlyID0gZy5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTtcbiAgaWYgKHJhbmtEaXIgPT09IFwiYnRcIiB8fCByYW5rRGlyID09PSBcInJsXCIpIHtcbiAgICByZXZlcnNlWShnKTtcbiAgfVxuXG4gIGlmIChyYW5rRGlyID09PSBcImxyXCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgc3dhcFhZKGcpO1xuICAgIHN3YXBXaWR0aEhlaWdodChnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzd2FwV2lkdGhIZWlnaHQoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHN3YXBXaWR0aEhlaWdodE9uZShnLm5vZGUodikpOyB9KTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkgeyBzd2FwV2lkdGhIZWlnaHRPbmUoZy5lZGdlKGUpKTsgfSk7XG59XG5cbmZ1bmN0aW9uIHN3YXBXaWR0aEhlaWdodE9uZShhdHRycykge1xuICB2YXIgdyA9IGF0dHJzLndpZHRoO1xuICBhdHRycy53aWR0aCA9IGF0dHJzLmhlaWdodDtcbiAgYXR0cnMuaGVpZ2h0ID0gdztcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVkoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHJldmVyc2VZT25lKGcubm9kZSh2KSk7IH0pO1xuXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBfLmZvckVhY2goZWRnZS5wb2ludHMsIHJldmVyc2VZT25lKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ5XCIpKSB7XG4gICAgICByZXZlcnNlWU9uZShlZGdlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXZlcnNlWU9uZShhdHRycykge1xuICBhdHRycy55ID0gLWF0dHJzLnk7XG59XG5cbmZ1bmN0aW9uIHN3YXBYWShnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgc3dhcFhZT25lKGcubm9kZSh2KSk7IH0pO1xuXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBfLmZvckVhY2goZWRnZS5wb2ludHMsIHN3YXBYWU9uZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieFwiKSkge1xuICAgICAgc3dhcFhZT25lKGVkZ2UpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN3YXBYWU9uZShhdHRycykge1xuICB2YXIgeCA9IGF0dHJzLng7XG4gIGF0dHJzLnggPSBhdHRycy55O1xuICBhdHRycy55ID0geDtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdE9yZGVyO1xuXG4vKlxuICogQXNzaWducyBhbiBpbml0aWFsIG9yZGVyIHZhbHVlIGZvciBlYWNoIG5vZGUgYnkgcGVyZm9ybWluZyBhIERGUyBzZWFyY2hcbiAqIHN0YXJ0aW5nIGZyb20gbm9kZXMgaW4gdGhlIGZpcnN0IHJhbmsuIE5vZGVzIGFyZSBhc3NpZ25lZCBhbiBvcmRlciBpbiB0aGVpclxuICogcmFuayBhcyB0aGV5IGFyZSBmaXJzdCB2aXNpdGVkLlxuICpcbiAqIFRoaXMgYXBwcm9hY2ggY29tZXMgZnJvbSBHYW5zbmVyLCBldCBhbC4sIFwiQSBUZWNobmlxdWUgZm9yIERyYXdpbmcgRGlyZWN0ZWRcbiAqIEdyYXBocy5cIlxuICpcbiAqIFJldHVybnMgYSBsYXllcmluZyBtYXRyaXggd2l0aCBhbiBhcnJheSBwZXIgbGF5ZXIgYW5kIGVhY2ggbGF5ZXIgc29ydGVkIGJ5XG4gKiB0aGUgb3JkZXIgb2YgaXRzIG5vZGVzLlxuICovXG5mdW5jdGlvbiBpbml0T3JkZXIoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgc2ltcGxlTm9kZXMgPSBfLmZpbHRlcihnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gIWcuY2hpbGRyZW4odikubGVuZ3RoO1xuICB9KTtcbiAgdmFyIG1heFJhbmsgPSBfLm1heChfLm1hcChzaW1wbGVOb2RlcywgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLnJhbms7IH0pKTtcbiAgdmFyIGxheWVycyA9IF8ubWFwKF8ucmFuZ2UobWF4UmFuayArIDEpLCBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9KTtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkgcmV0dXJuO1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGxheWVyc1tub2RlLnJhbmtdLnB1c2godik7XG4gICAgXy5mb3JFYWNoKGcuc3VjY2Vzc29ycyh2KSwgZGZzKTtcbiAgfVxuXG4gIHZhciBvcmRlcmVkVnMgPSBfLnNvcnRCeShzaW1wbGVOb2RlcywgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLnJhbms7IH0pO1xuICBfLmZvckVhY2gob3JkZXJlZFZzLCBkZnMpO1xuXG4gIHJldHVybiBsYXllcnM7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyb3NzQ291bnQ7XG5cbi8qXG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBsYXllcmluZyAoYW4gYXJyYXkgb2YgbGF5ZXJzLCBlYWNoIHdpdGggYW4gYXJyYXkgb2ZcbiAqIG9yZGVyZXJkIG5vZGVzKSBhbmQgYSBncmFwaCBhbmQgcmV0dXJucyBhIHdlaWdodGVkIGNyb3NzaW5nIGNvdW50LlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIG11c3QgYmUgc2ltcGxlIChub3QgYSBtdWx0aWdyYXBoKSwgZGlyZWN0ZWQsIGFuZCBpbmNsdWRlXG4gKiAgICAgICBvbmx5IHNpbXBsZSBlZGdlcy5cbiAqICAgIDIuIEVkZ2VzIGluIHRoZSBpbnB1dCBncmFwaCBtdXN0IGhhdmUgYXNzaWduZWQgd2VpZ2h0cy5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGdyYXBoIGFuZCBsYXllcmluZyBtYXRyaXggYXJlIGxlZnQgdW5jaGFuZ2VkLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGlzIGRlcml2ZWQgZnJvbSBCYXJ0aCwgZXQgYWwuLCBcIkJpbGF5ZXIgQ3Jvc3MgQ291bnRpbmcuXCJcbiAqL1xuZnVuY3Rpb24gY3Jvc3NDb3VudChnLCBsYXllcmluZykge1xuICB2YXIgY2MgPSAwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxheWVyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgY2MgKz0gdHdvTGF5ZXJDcm9zc0NvdW50KGcsIGxheWVyaW5nW2ktMV0sIGxheWVyaW5nW2ldKTtcbiAgfVxuICByZXR1cm4gY2M7XG59XG5cbmZ1bmN0aW9uIHR3b0xheWVyQ3Jvc3NDb3VudChnLCBub3J0aExheWVyLCBzb3V0aExheWVyKSB7XG4gIC8vIFNvcnQgYWxsIG9mIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBub3J0aCBhbmQgc291dGggbGF5ZXJzIGJ5IHRoZWlyIHBvc2l0aW9uXG4gIC8vIGluIHRoZSBub3J0aCBsYXllciBhbmQgdGhlbiB0aGUgc291dGguIE1hcCB0aGVzZSBlZGdlcyB0byB0aGUgcG9zaXRpb24gb2ZcbiAgLy8gdGhlaXIgaGVhZCBpbiB0aGUgc291dGggbGF5ZXIuXG4gIHZhciBzb3V0aFBvcyA9IF8uemlwT2JqZWN0KHNvdXRoTGF5ZXIsXG4gICAgXy5tYXAoc291dGhMYXllciwgZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIGk7IH0pKTtcbiAgdmFyIHNvdXRoRW50cmllcyA9IF8uZmxhdHRlbihfLm1hcChub3J0aExheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uc29ydEJ5KF8ubWFwKGcub3V0RWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiB7IHBvczogc291dGhQb3NbZS53XSwgd2VpZ2h0OiBnLmVkZ2UoZSkud2VpZ2h0IH07XG4gICAgfSksIFwicG9zXCIpO1xuICB9KSwgdHJ1ZSk7XG5cbiAgLy8gQnVpbGQgdGhlIGFjY3VtdWxhdG9yIHRyZWVcbiAgdmFyIGZpcnN0SW5kZXggPSAxO1xuICB3aGlsZSAoZmlyc3RJbmRleCA8IHNvdXRoTGF5ZXIubGVuZ3RoKSBmaXJzdEluZGV4IDw8PSAxO1xuICB2YXIgdHJlZVNpemUgPSAyICogZmlyc3RJbmRleCAtIDE7XG4gIGZpcnN0SW5kZXggLT0gMTtcbiAgdmFyIHRyZWUgPSBfLm1hcChuZXcgQXJyYXkodHJlZVNpemUpLCBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH0pO1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgd2VpZ2h0ZWQgY3Jvc3NpbmdzXG4gIHZhciBjYyA9IDA7XG4gIF8uZm9yRWFjaChzb3V0aEVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbnRyeSkge1xuICAgIHZhciBpbmRleCA9IGVudHJ5LnBvcyArIGZpcnN0SW5kZXg7XG4gICAgdHJlZVtpbmRleF0gKz0gZW50cnkud2VpZ2h0O1xuICAgIHZhciB3ZWlnaHRTdW0gPSAwO1xuICAgIHdoaWxlIChpbmRleCA+IDApIHtcbiAgICAgIGlmIChpbmRleCAlIDIpIHtcbiAgICAgICAgd2VpZ2h0U3VtICs9IHRyZWVbaW5kZXggKyAxXTtcbiAgICAgIH1cbiAgICAgIGluZGV4ID0gKGluZGV4IC0gMSkgPj4gMTtcbiAgICAgIHRyZWVbaW5kZXhdICs9IGVudHJ5LndlaWdodDtcbiAgICB9XG4gICAgY2MgKz0gZW50cnkud2VpZ2h0ICogd2VpZ2h0U3VtO1xuICB9KSk7XG5cbiAgcmV0dXJuIGNjO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhcnljZW50ZXI7XG5cbmZ1bmN0aW9uIGJhcnljZW50ZXIoZywgbW92YWJsZSkge1xuICByZXR1cm4gXy5tYXAobW92YWJsZSwgZnVuY3Rpb24odikge1xuICAgIHZhciBpblYgPSBnLmluRWRnZXModik7XG4gICAgaWYgKCFpblYubGVuZ3RoKSB7XG4gICAgICByZXR1cm4geyB2OiB2IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQgPSBfLnJlZHVjZShpblYsIGZ1bmN0aW9uKGFjYywgZSkge1xuICAgICAgICB2YXIgZWRnZSA9IGcuZWRnZShlKSxcbiAgICAgICAgICBub2RlVSA9IGcubm9kZShlLnYpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1bTogYWNjLnN1bSArIChlZGdlLndlaWdodCAqIG5vZGVVLm9yZGVyKSxcbiAgICAgICAgICB3ZWlnaHQ6IGFjYy53ZWlnaHQgKyBlZGdlLndlaWdodFxuICAgICAgICB9O1xuICAgICAgfSwgeyBzdW06IDAsIHdlaWdodDogMCB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdjogdixcbiAgICAgICAgYmFyeWNlbnRlcjogcmVzdWx0LnN1bSAvIHJlc3VsdC53ZWlnaHQsXG4gICAgICAgIHdlaWdodDogcmVzdWx0LndlaWdodFxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuXG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlc29sdmVDb25mbGljdHM7XG5cbi8qXG4gKiBHaXZlbiBhIGxpc3Qgb2YgZW50cmllcyBvZiB0aGUgZm9ybSB7diwgYmFyeWNlbnRlciwgd2VpZ2h0fSBhbmQgYVxuICogY29uc3RyYWludCBncmFwaCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmVzb2x2ZSBhbnkgY29uZmxpY3RzIGJldHdlZW4gdGhlXG4gKiBjb25zdHJhaW50IGdyYXBoIGFuZCB0aGUgYmFyeWNlbnRlcnMgZm9yIHRoZSBlbnRyaWVzLiBJZiB0aGUgYmFyeWNlbnRlcnMgZm9yXG4gKiBhbiBlbnRyeSB3b3VsZCB2aW9sYXRlIGEgY29uc3RyYWludCBpbiB0aGUgY29uc3RyYWludCBncmFwaCB0aGVuIHdlIGNvYWxlc2NlXG4gKiB0aGUgbm9kZXMgaW4gdGhlIGNvbmZsaWN0IGludG8gYSBuZXcgbm9kZSB0aGF0IHJlc3BlY3RzIHRoZSBjb250cmFpbnQgYW5kXG4gKiBhZ2dyZWdhdGVzIGJhcnljZW50ZXIgYW5kIHdlaWdodCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBpbiBGb3JzdGVyLCBcIkEgRmFzdCBhbmRcbiAqIFNpbXBsZSBIdWVyaXN0aWMgZm9yIENvbnN0cmFpbmVkIFR3by1MZXZlbCBDcm9zc2luZyBSZWR1Y3Rpb24sXCIgdGhvdWdodCBpdFxuICogZGlmZmVycyBpbiBzb21lIHNwZWNpZmljIGRldGFpbHMuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gRWFjaCBlbnRyeSBoYXMgdGhlIGZvcm0ge3YsIGJhcnljZW50ZXIsIHdlaWdodH0sIG9yIGlmIHRoZSBub2RlIGhhc1xuICogICAgICAgbm8gYmFyeWNlbnRlciwgdGhlbiB7dn0uXG4gKlxuICogUmV0dXJuczpcbiAqXG4gKiAgICBBIG5ldyBsaXN0IG9mIGVudHJpZXMgb2YgdGhlIGZvcm0ge3ZzLCBpLCBiYXJ5Y2VudGVyLCB3ZWlnaHR9LiBUaGUgbGlzdFxuICogICAgYHZzYCBtYXkgZWl0aGVyIGJlIGEgc2luZ2xldG9uIG9yIGl0IG1heSBiZSBhbiBhZ2dyZWdhdGlvbiBvZiBub2Rlc1xuICogICAgb3JkZXJlZCBzdWNoIHRoYXQgdGhleSBkbyBub3QgdmlvbGF0ZSBjb25zdHJhaW50cyBmcm9tIHRoZSBjb25zdHJhaW50XG4gKiAgICBncmFwaC4gVGhlIHByb3BlcnR5IGBpYCBpcyB0aGUgbG93ZXN0IG9yaWdpbmFsIGluZGV4IG9mIGFueSBvZiB0aGVcbiAqICAgIGVsZW1lbnRzIGluIGB2c2AuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVDb25mbGljdHMoZW50cmllcywgY2cpIHtcbiAgdmFyIG1hcHBlZEVudHJpZXMgPSB7fTtcbiAgXy5mb3JFYWNoKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5LCBpKSB7XG4gICAgdmFyIHRtcCA9IG1hcHBlZEVudHJpZXNbZW50cnkudl0gPSB7XG4gICAgICBpbmRlZ3JlZTogMCxcbiAgICAgIFwiaW5cIjogW10sXG4gICAgICBvdXQ6IFtdLFxuICAgICAgdnM6IFtlbnRyeS52XSxcbiAgICAgIGk6IGlcbiAgICB9O1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChlbnRyeS5iYXJ5Y2VudGVyKSkge1xuICAgICAgdG1wLmJhcnljZW50ZXIgPSBlbnRyeS5iYXJ5Y2VudGVyO1xuICAgICAgdG1wLndlaWdodCA9IGVudHJ5LndlaWdodDtcbiAgICB9XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChjZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVudHJ5ViA9IG1hcHBlZEVudHJpZXNbZS52XTtcbiAgICB2YXIgZW50cnlXID0gbWFwcGVkRW50cmllc1tlLnddO1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChlbnRyeVYpICYmICFfLmlzVW5kZWZpbmVkKGVudHJ5VykpIHtcbiAgICAgIGVudHJ5Vy5pbmRlZ3JlZSsrO1xuICAgICAgZW50cnlWLm91dC5wdXNoKG1hcHBlZEVudHJpZXNbZS53XSk7XG4gICAgfVxuICB9KTtcblxuICB2YXIgc291cmNlU2V0ID0gXy5maWx0ZXIobWFwcGVkRW50cmllcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICByZXR1cm4gIWVudHJ5LmluZGVncmVlO1xuICB9KTtcblxuICByZXR1cm4gZG9SZXNvbHZlQ29uZmxpY3RzKHNvdXJjZVNldCk7XG59XG5cbmZ1bmN0aW9uIGRvUmVzb2x2ZUNvbmZsaWN0cyhzb3VyY2VTZXQpIHtcbiAgdmFyIGVudHJpZXMgPSBbXTtcblxuICBmdW5jdGlvbiBoYW5kbGVJbih2RW50cnkpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24odUVudHJ5KSB7XG4gICAgICBpZiAodUVudHJ5Lm1lcmdlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZCh1RW50cnkuYmFyeWNlbnRlcikgfHxcbiAgICAgICAgICBfLmlzVW5kZWZpbmVkKHZFbnRyeS5iYXJ5Y2VudGVyKSB8fFxuICAgICAgICAgIHVFbnRyeS5iYXJ5Y2VudGVyID49IHZFbnRyeS5iYXJ5Y2VudGVyKSB7XG4gICAgICAgIG1lcmdlRW50cmllcyh2RW50cnksIHVFbnRyeSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU91dCh2RW50cnkpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24od0VudHJ5KSB7XG4gICAgICB3RW50cnlbXCJpblwiXS5wdXNoKHZFbnRyeSk7XG4gICAgICBpZiAoLS13RW50cnkuaW5kZWdyZWUgPT09IDApIHtcbiAgICAgICAgc291cmNlU2V0LnB1c2god0VudHJ5KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgd2hpbGUgKHNvdXJjZVNldC5sZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBzb3VyY2VTZXQucG9wKCk7XG4gICAgZW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICBfLmZvckVhY2goZW50cnlbXCJpblwiXS5yZXZlcnNlKCksIGhhbmRsZUluKGVudHJ5KSk7XG4gICAgXy5mb3JFYWNoKGVudHJ5Lm91dCwgaGFuZGxlT3V0KGVudHJ5KSk7XG4gIH1cblxuICByZXR1cm4gXy5tYXAoXy5maWx0ZXIoZW50cmllcywgZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuICFlbnRyeS5tZXJnZWQ7IH0pLFxuICAgIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICByZXR1cm4gXy5waWNrKGVudHJ5LCBbXCJ2c1wiLCBcImlcIiwgXCJiYXJ5Y2VudGVyXCIsIFwid2VpZ2h0XCJdKTtcbiAgICB9KTtcblxufVxuXG5mdW5jdGlvbiBtZXJnZUVudHJpZXModGFyZ2V0LCBzb3VyY2UpIHtcbiAgdmFyIHN1bSA9IDA7XG4gIHZhciB3ZWlnaHQgPSAwO1xuXG4gIGlmICh0YXJnZXQud2VpZ2h0KSB7XG4gICAgc3VtICs9IHRhcmdldC5iYXJ5Y2VudGVyICogdGFyZ2V0LndlaWdodDtcbiAgICB3ZWlnaHQgKz0gdGFyZ2V0LndlaWdodDtcbiAgfVxuXG4gIGlmIChzb3VyY2Uud2VpZ2h0KSB7XG4gICAgc3VtICs9IHNvdXJjZS5iYXJ5Y2VudGVyICogc291cmNlLndlaWdodDtcbiAgICB3ZWlnaHQgKz0gc291cmNlLndlaWdodDtcbiAgfVxuXG4gIHRhcmdldC52cyA9IHNvdXJjZS52cy5jb25jYXQodGFyZ2V0LnZzKTtcbiAgdGFyZ2V0LmJhcnljZW50ZXIgPSBzdW0gLyB3ZWlnaHQ7XG4gIHRhcmdldC53ZWlnaHQgPSB3ZWlnaHQ7XG4gIHRhcmdldC5pID0gTWF0aC5taW4oc291cmNlLmksIHRhcmdldC5pKTtcbiAgc291cmNlLm1lcmdlZCA9IHRydWU7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnQ7XG5cbmZ1bmN0aW9uIHNvcnQoZW50cmllcywgYmlhc1JpZ2h0KSB7XG4gIHZhciBwYXJ0cyA9IHV0aWwucGFydGl0aW9uKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgcmV0dXJuIF8uaGFzKGVudHJ5LCBcImJhcnljZW50ZXJcIik7XG4gIH0pO1xuICB2YXIgc29ydGFibGUgPSBwYXJ0cy5saHMsXG4gICAgdW5zb3J0YWJsZSA9IF8uc29ydEJ5KHBhcnRzLnJocywgZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuIC1lbnRyeS5pOyB9KSxcbiAgICB2cyA9IFtdLFxuICAgIHN1bSA9IDAsXG4gICAgd2VpZ2h0ID0gMCxcbiAgICB2c0luZGV4ID0gMDtcblxuICBzb3J0YWJsZS5zb3J0KGNvbXBhcmVXaXRoQmlhcyghIWJpYXNSaWdodCkpO1xuXG4gIHZzSW5kZXggPSBjb25zdW1lVW5zb3J0YWJsZSh2cywgdW5zb3J0YWJsZSwgdnNJbmRleCk7XG5cbiAgXy5mb3JFYWNoKHNvcnRhYmxlLCBmdW5jdGlvbiAoZW50cnkpIHtcbiAgICB2c0luZGV4ICs9IGVudHJ5LnZzLmxlbmd0aDtcbiAgICB2cy5wdXNoKGVudHJ5LnZzKTtcbiAgICBzdW0gKz0gZW50cnkuYmFyeWNlbnRlciAqIGVudHJ5LndlaWdodDtcbiAgICB3ZWlnaHQgKz0gZW50cnkud2VpZ2h0O1xuICAgIHZzSW5kZXggPSBjb25zdW1lVW5zb3J0YWJsZSh2cywgdW5zb3J0YWJsZSwgdnNJbmRleCk7XG4gIH0pO1xuXG4gIHZhciByZXN1bHQgPSB7IHZzOiBfLmZsYXR0ZW4odnMsIHRydWUpIH07XG4gIGlmICh3ZWlnaHQpIHtcbiAgICByZXN1bHQuYmFyeWNlbnRlciA9IHN1bSAvIHdlaWdodDtcbiAgICByZXN1bHQud2VpZ2h0ID0gd2VpZ2h0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCBpbmRleCkge1xuICB2YXIgbGFzdDtcbiAgd2hpbGUgKHVuc29ydGFibGUubGVuZ3RoICYmIChsYXN0ID0gXy5sYXN0KHVuc29ydGFibGUpKS5pIDw9IGluZGV4KSB7XG4gICAgdW5zb3J0YWJsZS5wb3AoKTtcbiAgICB2cy5wdXNoKGxhc3QudnMpO1xuICAgIGluZGV4Kys7XG4gIH1cbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlV2l0aEJpYXMoYmlhcykge1xuICByZXR1cm4gZnVuY3Rpb24oZW50cnlWLCBlbnRyeVcpIHtcbiAgICBpZiAoZW50cnlWLmJhcnljZW50ZXIgPCBlbnRyeVcuYmFyeWNlbnRlcikge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSBpZiAoZW50cnlWLmJhcnljZW50ZXIgPiBlbnRyeVcuYmFyeWNlbnRlcikge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuICFiaWFzID8gZW50cnlWLmkgLSBlbnRyeVcuaSA6IGVudHJ5Vy5pIC0gZW50cnlWLmk7XG4gIH07XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgYmFyeWNlbnRlciA9IHJlcXVpcmUoXCIuL2JhcnljZW50ZXJcIik7XG52YXIgcmVzb2x2ZUNvbmZsaWN0cyA9IHJlcXVpcmUoXCIuL3Jlc29sdmUtY29uZmxpY3RzXCIpO1xudmFyIHNvcnQgPSByZXF1aXJlKFwiLi9zb3J0XCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnRTdWJncmFwaDtcblxuZnVuY3Rpb24gc29ydFN1YmdyYXBoKGcsIHYsIGNnLCBiaWFzUmlnaHQpIHtcbiAgdmFyIG1vdmFibGUgPSBnLmNoaWxkcmVuKHYpO1xuICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgdmFyIGJsID0gbm9kZSA/IG5vZGUuYm9yZGVyTGVmdCA6IHVuZGVmaW5lZDtcbiAgdmFyIGJyID0gbm9kZSA/IG5vZGUuYm9yZGVyUmlnaHQ6IHVuZGVmaW5lZDtcbiAgdmFyIHN1YmdyYXBocyA9IHt9O1xuXG4gIGlmIChibCkge1xuICAgIG1vdmFibGUgPSBfLmZpbHRlcihtb3ZhYmxlLCBmdW5jdGlvbih3KSB7XG4gICAgICByZXR1cm4gdyAhPT0gYmwgJiYgdyAhPT0gYnI7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgYmFyeWNlbnRlcnMgPSBiYXJ5Y2VudGVyKGcsIG1vdmFibGUpO1xuICBfLmZvckVhY2goYmFyeWNlbnRlcnMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgaWYgKGcuY2hpbGRyZW4oZW50cnkudikubGVuZ3RoKSB7XG4gICAgICB2YXIgc3ViZ3JhcGhSZXN1bHQgPSBzb3J0U3ViZ3JhcGgoZywgZW50cnkudiwgY2csIGJpYXNSaWdodCk7XG4gICAgICBzdWJncmFwaHNbZW50cnkudl0gPSBzdWJncmFwaFJlc3VsdDtcbiAgICAgIGlmIChfLmhhcyhzdWJncmFwaFJlc3VsdCwgXCJiYXJ5Y2VudGVyXCIpKSB7XG4gICAgICAgIG1lcmdlQmFyeWNlbnRlcnMoZW50cnksIHN1YmdyYXBoUmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHZhciBlbnRyaWVzID0gcmVzb2x2ZUNvbmZsaWN0cyhiYXJ5Y2VudGVycywgY2cpO1xuICBleHBhbmRTdWJncmFwaHMoZW50cmllcywgc3ViZ3JhcGhzKTtcblxuICB2YXIgcmVzdWx0ID0gc29ydChlbnRyaWVzLCBiaWFzUmlnaHQpO1xuXG4gIGlmIChibCkge1xuICAgIHJlc3VsdC52cyA9IF8uZmxhdHRlbihbYmwsIHJlc3VsdC52cywgYnJdLCB0cnVlKTtcbiAgICBpZiAoZy5wcmVkZWNlc3NvcnMoYmwpLmxlbmd0aCkge1xuICAgICAgdmFyIGJsUHJlZCA9IGcubm9kZShnLnByZWRlY2Vzc29ycyhibClbMF0pLFxuICAgICAgICBiclByZWQgPSBnLm5vZGUoZy5wcmVkZWNlc3NvcnMoYnIpWzBdKTtcbiAgICAgIGlmICghXy5oYXMocmVzdWx0LCBcImJhcnljZW50ZXJcIikpIHtcbiAgICAgICAgcmVzdWx0LmJhcnljZW50ZXIgPSAwO1xuICAgICAgICByZXN1bHQud2VpZ2h0ID0gMDtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5iYXJ5Y2VudGVyID0gKHJlc3VsdC5iYXJ5Y2VudGVyICogcmVzdWx0LndlaWdodCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBibFByZWQub3JkZXIgKyBiclByZWQub3JkZXIpIC8gKHJlc3VsdC53ZWlnaHQgKyAyKTtcbiAgICAgIHJlc3VsdC53ZWlnaHQgKz0gMjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBleHBhbmRTdWJncmFwaHMoZW50cmllcywgc3ViZ3JhcGhzKSB7XG4gIF8uZm9yRWFjaChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGVudHJ5LnZzID0gXy5mbGF0dGVuKGVudHJ5LnZzLm1hcChmdW5jdGlvbih2KSB7XG4gICAgICBpZiAoc3ViZ3JhcGhzW3ZdKSB7XG4gICAgICAgIHJldHVybiBzdWJncmFwaHNbdl0udnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gdjtcbiAgICB9KSwgdHJ1ZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtZXJnZUJhcnljZW50ZXJzKHRhcmdldCwgb3RoZXIpIHtcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHRhcmdldC5iYXJ5Y2VudGVyKSkge1xuICAgIHRhcmdldC5iYXJ5Y2VudGVyID0gKHRhcmdldC5iYXJ5Y2VudGVyICogdGFyZ2V0LndlaWdodCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuYmFyeWNlbnRlciAqIG90aGVyLndlaWdodCkgL1xuICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldC53ZWlnaHQgKyBvdGhlci53ZWlnaHQpO1xuICAgIHRhcmdldC53ZWlnaHQgKz0gb3RoZXIud2VpZ2h0O1xuICB9IGVsc2Uge1xuICAgIHRhcmdldC5iYXJ5Y2VudGVyID0gb3RoZXIuYmFyeWNlbnRlcjtcbiAgICB0YXJnZXQud2VpZ2h0ID0gb3RoZXIud2VpZ2h0O1xuICB9XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuR3JhcGg7XG5cbm1vZHVsZS5leHBvcnRzID0gYnVpbGRMYXllckdyYXBoO1xuXG4vKlxuICogQ29uc3RydWN0cyBhIGdyYXBoIHRoYXQgY2FuIGJlIHVzZWQgdG8gc29ydCBhIGxheWVyIG9mIG5vZGVzLiBUaGUgZ3JhcGggd2lsbFxuICogY29udGFpbiBhbGwgYmFzZSBhbmQgc3ViZ3JhcGggbm9kZXMgZnJvbSB0aGUgcmVxdWVzdCBsYXllciBpbiB0aGVpciBvcmlnaW5hbFxuICogaGllcmFyY2h5IGFuZCBhbnkgZWRnZXMgdGhhdCBhcmUgaW5jaWRlbnQgb24gdGhlc2Ugbm9kZXMgYW5kIGFyZSBvZiB0aGUgdHlwZVxuICogcmVxdWVzdGVkIGJ5IHRoZSBcInJlbGF0aW9uc2hpcFwiIHBhcmFtZXRlci5cbiAqXG4gKiBOb2RlcyBmcm9tIHRoZSByZXF1ZXN0ZWQgcmFuayB0aGF0IGRvIG5vdCBoYXZlIHBhcmVudHMgYXJlIGFzc2lnbmVkIGEgcm9vdFxuICogbm9kZSBpbiB0aGUgb3V0cHV0IGdyYXBoLCB3aGljaCBpcyBzZXQgaW4gdGhlIHJvb3QgZ3JhcGggYXR0cmlidXRlLiBUaGlzXG4gKiBtYWtlcyBpdCBlYXN5IHRvIHdhbGsgdGhlIGhpZXJhcmNoeSBvZiBtb3ZhYmxlIG5vZGVzIGR1cmluZyBvcmRlcmluZy5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBR1xuICogICAgMi4gQmFzZSBub2RlcyBpbiB0aGUgaW5wdXQgZ3JhcGggaGF2ZSBhIHJhbmsgYXR0cmlidXRlXG4gKiAgICAzLiBTdWJncmFwaCBub2RlcyBpbiB0aGUgaW5wdXQgZ3JhcGggaGFzIG1pblJhbmsgYW5kIG1heFJhbmsgYXR0cmlidXRlc1xuICogICAgNC4gRWRnZXMgaGF2ZSBhbiBhc3NpZ25lZCB3ZWlnaHRcbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gT3V0cHV0IGdyYXBoIGhhcyBhbGwgbm9kZXMgaW4gdGhlIG1vdmFibGUgcmFuayB3aXRoIHByZXNlcnZlZFxuICogICAgICAgaGllcmFyY2h5LlxuICogICAgMi4gUm9vdCBub2RlcyBpbiB0aGUgbW92YWJsZSBsYXllciBhcmUgbWFkZSBjaGlsZHJlbiBvZiB0aGUgbm9kZVxuICogICAgICAgaW5kaWNhdGVkIGJ5IHRoZSByb290IGF0dHJpYnV0ZSBvZiB0aGUgZ3JhcGguXG4gKiAgICAzLiBOb24tbW92YWJsZSBub2RlcyBpbmNpZGVudCBvbiBtb3ZhYmxlIG5vZGVzLCBzZWxlY3RlZCBieSB0aGVcbiAqICAgICAgIHJlbGF0aW9uc2hpcCBwYXJhbWV0ZXIsIGFyZSBpbmNsdWRlZCBpbiB0aGUgZ3JhcGggKHdpdGhvdXQgaGllcmFyY2h5KS5cbiAqICAgIDQuIEVkZ2VzIGluY2lkZW50IG9uIG1vdmFibGUgbm9kZXMsIHNlbGVjdGVkIGJ5IHRoZSByZWxhdGlvbnNoaXBcbiAqICAgICAgIHBhcmFtZXRlciwgYXJlIGFkZGVkIHRvIHRoZSBvdXRwdXQgZ3JhcGguXG4gKiAgICA1LiBUaGUgd2VpZ2h0cyBmb3IgY29waWVkIGVkZ2VzIGFyZSBhZ2dyZWdhdGVkIGFzIG5lZWQsIHNpbmNlIHRoZSBvdXRwdXRcbiAqICAgICAgIGdyYXBoIGlzIG5vdCBhIG11bHRpLWdyYXBoLlxuICovXG5mdW5jdGlvbiBidWlsZExheWVyR3JhcGgoZywgcmFuaywgcmVsYXRpb25zaGlwKSB7XG4gIHZhciByb290ID0gY3JlYXRlUm9vdE5vZGUoZyksXG4gICAgcmVzdWx0ID0gbmV3IEdyYXBoKHsgY29tcG91bmQ6IHRydWUgfSkuc2V0R3JhcGgoeyByb290OiByb290IH0pXG4gICAgICAuc2V0RGVmYXVsdE5vZGVMYWJlbChmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodik7IH0pO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KSxcbiAgICAgIHBhcmVudCA9IGcucGFyZW50KHYpO1xuXG4gICAgaWYgKG5vZGUucmFuayA9PT0gcmFuayB8fCBub2RlLm1pblJhbmsgPD0gcmFuayAmJiByYW5rIDw9IG5vZGUubWF4UmFuaykge1xuICAgICAgcmVzdWx0LnNldE5vZGUodik7XG4gICAgICByZXN1bHQuc2V0UGFyZW50KHYsIHBhcmVudCB8fCByb290KTtcblxuICAgICAgLy8gVGhpcyBhc3N1bWVzIHdlIGhhdmUgb25seSBzaG9ydCBlZGdlcyFcbiAgICAgIF8uZm9yRWFjaChnW3JlbGF0aW9uc2hpcF0odiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgdmFyIHUgPSBlLnYgPT09IHYgPyBlLncgOiBlLnYsXG4gICAgICAgICAgZWRnZSA9IHJlc3VsdC5lZGdlKHUsIHYpLFxuICAgICAgICAgIHdlaWdodCA9ICFfLmlzVW5kZWZpbmVkKGVkZ2UpID8gZWRnZS53ZWlnaHQgOiAwO1xuICAgICAgICByZXN1bHQuc2V0RWRnZSh1LCB2LCB7IHdlaWdodDogZy5lZGdlKGUpLndlaWdodCArIHdlaWdodCB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoXy5oYXMobm9kZSwgXCJtaW5SYW5rXCIpKSB7XG4gICAgICAgIHJlc3VsdC5zZXROb2RlKHYsIHtcbiAgICAgICAgICBib3JkZXJMZWZ0OiBub2RlLmJvcmRlckxlZnRbcmFua10sXG4gICAgICAgICAgYm9yZGVyUmlnaHQ6IG5vZGUuYm9yZGVyUmlnaHRbcmFua11cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSb290Tm9kZShnKSB7XG4gIHZhciB2O1xuICB3aGlsZSAoZy5oYXNOb2RlKCh2ID0gXy51bmlxdWVJZChcIl9yb290XCIpKSkpO1xuICByZXR1cm4gdjtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBhZGRTdWJncmFwaENvbnN0cmFpbnRzO1xuXG5mdW5jdGlvbiBhZGRTdWJncmFwaENvbnN0cmFpbnRzKGcsIGNnLCB2cykge1xuICB2YXIgcHJldiA9IHt9LFxuICAgIHJvb3RQcmV2O1xuXG4gIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIHZhciBjaGlsZCA9IGcucGFyZW50KHYpLFxuICAgICAgcGFyZW50LFxuICAgICAgcHJldkNoaWxkO1xuICAgIHdoaWxlIChjaGlsZCkge1xuICAgICAgcGFyZW50ID0gZy5wYXJlbnQoY2hpbGQpO1xuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBwcmV2Q2hpbGQgPSBwcmV2W3BhcmVudF07XG4gICAgICAgIHByZXZbcGFyZW50XSA9IGNoaWxkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldkNoaWxkID0gcm9vdFByZXY7XG4gICAgICAgIHJvb3RQcmV2ID0gY2hpbGQ7XG4gICAgICB9XG4gICAgICBpZiAocHJldkNoaWxkICYmIHByZXZDaGlsZCAhPT0gY2hpbGQpIHtcbiAgICAgICAgY2cuc2V0RWRnZShwcmV2Q2hpbGQsIGNoaWxkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2hpbGQgPSBwYXJlbnQ7XG4gICAgfVxuICB9KTtcblxuICAvKlxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBjaGlsZHJlbiA9IHYgPyBnLmNoaWxkcmVuKHYpIDogZy5jaGlsZHJlbigpO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHZhciBtaW4gPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgICAgICAgc3ViZ3JhcGhzID0gW107XG4gICAgICBfLmVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIHZhciBjaGlsZE1pbiA9IGRmcyhjaGlsZCk7XG4gICAgICAgIGlmIChnLmNoaWxkcmVuKGNoaWxkKS5sZW5ndGgpIHtcbiAgICAgICAgICBzdWJncmFwaHMucHVzaCh7IHY6IGNoaWxkLCBvcmRlcjogY2hpbGRNaW4gfSk7XG4gICAgICAgIH1cbiAgICAgICAgbWluID0gTWF0aC5taW4obWluLCBjaGlsZE1pbik7XG4gICAgICB9KTtcbiAgICAgIF8ucmVkdWNlKF8uc29ydEJ5KHN1YmdyYXBocywgXCJvcmRlclwiKSwgZnVuY3Rpb24ocHJldiwgY3Vycikge1xuICAgICAgICBjZy5zZXRFZGdlKHByZXYudiwgY3Vyci52KTtcbiAgICAgICAgcmV0dXJuIGN1cnI7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIHJldHVybiBnLm5vZGUodikub3JkZXI7XG4gIH1cbiAgZGZzKHVuZGVmaW5lZCk7XG4gICovXG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIGluaXRPcmRlciA9IHJlcXVpcmUoXCIuL2luaXQtb3JkZXJcIik7XG52YXIgY3Jvc3NDb3VudCA9IHJlcXVpcmUoXCIuL2Nyb3NzLWNvdW50XCIpO1xudmFyIHNvcnRTdWJncmFwaCA9IHJlcXVpcmUoXCIuL3NvcnQtc3ViZ3JhcGhcIik7XG52YXIgYnVpbGRMYXllckdyYXBoID0gcmVxdWlyZShcIi4vYnVpbGQtbGF5ZXItZ3JhcGhcIik7XG52YXIgYWRkU3ViZ3JhcGhDb25zdHJhaW50cyA9IHJlcXVpcmUoXCIuL2FkZC1zdWJncmFwaC1jb25zdHJhaW50c1wiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gb3JkZXI7XG5cbi8qXG4gKiBBcHBsaWVzIGhldXJpc3RpY3MgdG8gbWluaW1pemUgZWRnZSBjcm9zc2luZ3MgaW4gdGhlIGdyYXBoIGFuZCBzZXRzIHRoZSBiZXN0XG4gKiBvcmRlciBzb2x1dGlvbiBhcyBhbiBvcmRlciBhdHRyaWJ1dGUgb24gZWFjaCBub2RlLlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEdyYXBoIG11c3QgYmUgREFHXG4gKiAgICAyLiBHcmFwaCBub2RlcyBtdXN0IGJlIG9iamVjdHMgd2l0aCBhIFwicmFua1wiIGF0dHJpYnV0ZVxuICogICAgMy4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIHRoZSBcIndlaWdodFwiIGF0dHJpYnV0ZVxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBub2RlcyB3aWxsIGhhdmUgYW4gXCJvcmRlclwiIGF0dHJpYnV0ZSBiYXNlZCBvbiB0aGUgcmVzdWx0cyBvZiB0aGVcbiAqICAgICAgIGFsZ29yaXRobS5cbiAqL1xuZnVuY3Rpb24gb3JkZXIoZykge1xuICB2YXIgbWF4UmFuayA9IHV0aWwubWF4UmFuayhnKSxcbiAgICBkb3duTGF5ZXJHcmFwaHMgPSBidWlsZExheWVyR3JhcGhzKGcsIF8ucmFuZ2UoMSwgbWF4UmFuayArIDEpLCBcImluRWRnZXNcIiksXG4gICAgdXBMYXllckdyYXBocyA9IGJ1aWxkTGF5ZXJHcmFwaHMoZywgXy5yYW5nZShtYXhSYW5rIC0gMSwgLTEsIC0xKSwgXCJvdXRFZGdlc1wiKTtcblxuICB2YXIgbGF5ZXJpbmcgPSBpbml0T3JkZXIoZyk7XG4gIGFzc2lnbk9yZGVyKGcsIGxheWVyaW5nKTtcblxuICB2YXIgYmVzdENDID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIGJlc3Q7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxhc3RCZXN0ID0gMDsgbGFzdEJlc3QgPCA0OyArK2ksICsrbGFzdEJlc3QpIHtcbiAgICBzd2VlcExheWVyR3JhcGhzKGkgJSAyID8gZG93bkxheWVyR3JhcGhzIDogdXBMYXllckdyYXBocywgaSAlIDQgPj0gMik7XG5cbiAgICBsYXllcmluZyA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcbiAgICB2YXIgY2MgPSBjcm9zc0NvdW50KGcsIGxheWVyaW5nKTtcbiAgICBpZiAoY2MgPCBiZXN0Q0MpIHtcbiAgICAgIGxhc3RCZXN0ID0gMDtcbiAgICAgIGJlc3QgPSBfLmNsb25lRGVlcChsYXllcmluZyk7XG4gICAgICBiZXN0Q0MgPSBjYztcbiAgICB9XG4gIH1cblxuICBhc3NpZ25PcmRlcihnLCBiZXN0KTtcbn1cblxuZnVuY3Rpb24gYnVpbGRMYXllckdyYXBocyhnLCByYW5rcywgcmVsYXRpb25zaGlwKSB7XG4gIHJldHVybiBfLm1hcChyYW5rcywgZnVuY3Rpb24ocmFuaykge1xuICAgIHJldHVybiBidWlsZExheWVyR3JhcGgoZywgcmFuaywgcmVsYXRpb25zaGlwKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN3ZWVwTGF5ZXJHcmFwaHMobGF5ZXJHcmFwaHMsIGJpYXNSaWdodCkge1xuICB2YXIgY2cgPSBuZXcgR3JhcGgoKTtcbiAgXy5mb3JFYWNoKGxheWVyR3JhcGhzLCBmdW5jdGlvbihsZykge1xuICAgIHZhciByb290ID0gbGcuZ3JhcGgoKS5yb290O1xuICAgIHZhciBzb3J0ZWQgPSBzb3J0U3ViZ3JhcGgobGcsIHJvb3QsIGNnLCBiaWFzUmlnaHQpO1xuICAgIF8uZm9yRWFjaChzb3J0ZWQudnMsIGZ1bmN0aW9uKHYsIGkpIHtcbiAgICAgIGxnLm5vZGUodikub3JkZXIgPSBpO1xuICAgIH0pO1xuICAgIGFkZFN1YmdyYXBoQ29uc3RyYWludHMobGcsIGNnLCBzb3J0ZWQudnMpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzaWduT3JkZXIoZywgbGF5ZXJpbmcpIHtcbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odiwgaSkge1xuICAgICAgZy5ub2RlKHYpLm9yZGVyID0gaTtcbiAgICB9KTtcbiAgfSk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcblxuLypcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGNvb3JkaW5hdGUgYXNzaWdubWVudCBiYXNlZCBvbiBCcmFuZGVzIGFuZCBLw7ZwZiwgXCJGYXN0XG4gKiBhbmQgU2ltcGxlIEhvcml6b250YWwgQ29vcmRpbmF0ZSBBc3NpZ25tZW50LlwiXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHBvc2l0aW9uWDogcG9zaXRpb25YLFxuICBmaW5kVHlwZTFDb25mbGljdHM6IGZpbmRUeXBlMUNvbmZsaWN0cyxcbiAgZmluZFR5cGUyQ29uZmxpY3RzOiBmaW5kVHlwZTJDb25mbGljdHMsXG4gIGFkZENvbmZsaWN0OiBhZGRDb25mbGljdCxcbiAgaGFzQ29uZmxpY3Q6IGhhc0NvbmZsaWN0LFxuICB2ZXJ0aWNhbEFsaWdubWVudDogdmVydGljYWxBbGlnbm1lbnQsXG4gIGhvcml6b250YWxDb21wYWN0aW9uOiBob3Jpem9udGFsQ29tcGFjdGlvbixcbiAgYWxpZ25Db29yZGluYXRlczogYWxpZ25Db29yZGluYXRlcyxcbiAgZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQ6IGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50LFxuICBiYWxhbmNlOiBiYWxhbmNlXG59O1xuXG4vKlxuICogTWFya3MgYWxsIGVkZ2VzIGluIHRoZSBncmFwaCB3aXRoIGEgdHlwZS0xIGNvbmZsaWN0IHdpdGggdGhlIFwidHlwZTFDb25mbGljdFwiXG4gKiBwcm9wZXJ0eS4gQSB0eXBlLTEgY29uZmxpY3QgaXMgb25lIHdoZXJlIGEgbm9uLWlubmVyIHNlZ21lbnQgY3Jvc3NlcyBhblxuICogaW5uZXIgc2VnbWVudC4gQW4gaW5uZXIgc2VnbWVudCBpcyBhbiBlZGdlIHdpdGggYm90aCBpbmNpZGVudCBub2RlcyBtYXJrZWRcbiAqIHdpdGggdGhlIFwiZHVtbXlcIiBwcm9wZXJ0eS5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSBzY2FucyBsYXllciBieSBsYXllciwgc3RhcnRpbmcgd2l0aCB0aGUgc2Vjb25kLCBmb3IgdHlwZS0xXG4gKiBjb25mbGljdHMgYmV0d2VlbiB0aGUgY3VycmVudCBsYXllciBhbmQgdGhlIHByZXZpb3VzIGxheWVyLiBGb3IgZWFjaCBsYXllclxuICogaXQgc2NhbnMgdGhlIG5vZGVzIGZyb20gbGVmdCB0byByaWdodCB1bnRpbCBpdCByZWFjaGVzIG9uZSB0aGF0IGlzIGluY2lkZW50XG4gKiBvbiBhbiBpbm5lciBzZWdtZW50LiBJdCB0aGVuIHNjYW5zIHByZWRlY2Vzc29ycyB0byBkZXRlcm1pbmUgaWYgdGhleSBoYXZlXG4gKiBlZGdlcyB0aGF0IGNyb3NzIHRoYXQgaW5uZXIgc2VnbWVudC4gQXQgdGhlIGVuZCBhIGZpbmFsIHNjYW4gaXMgZG9uZSBmb3IgYWxsXG4gKiBub2RlcyBvbiB0aGUgY3VycmVudCByYW5rIHRvIHNlZSBpZiB0aGV5IGNyb3NzIHRoZSBsYXN0IHZpc2l0ZWQgaW5uZXJcbiAqIHNlZ21lbnQuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gKHNhZmVseSkgYXNzdW1lcyB0aGF0IGEgZHVtbXkgbm9kZSB3aWxsIG9ubHkgYmUgaW5jaWRlbnQgb24gYVxuICogc2luZ2xlIG5vZGUgaW4gdGhlIGxheWVycyBiZWluZyBzY2FubmVkLlxuICovXG5mdW5jdGlvbiBmaW5kVHlwZTFDb25mbGljdHMoZywgbGF5ZXJpbmcpIHtcbiAgdmFyIGNvbmZsaWN0cyA9IHt9O1xuXG4gIGZ1bmN0aW9uIHZpc2l0TGF5ZXIocHJldkxheWVyLCBsYXllcikge1xuICAgIHZhclxuICAgICAgLy8gbGFzdCB2aXNpdGVkIG5vZGUgaW4gdGhlIHByZXZpb3VzIGxheWVyIHRoYXQgaXMgaW5jaWRlbnQgb24gYW4gaW5uZXJcbiAgICAgIC8vIHNlZ21lbnQuXG4gICAgICBrMCA9IDAsXG4gICAgICAvLyBUcmFja3MgdGhlIGxhc3Qgbm9kZSBpbiB0aGlzIGxheWVyIHNjYW5uZWQgZm9yIGNyb3NzaW5ncyB3aXRoIGEgdHlwZS0xXG4gICAgICAvLyBzZWdtZW50LlxuICAgICAgc2NhblBvcyA9IDAsXG4gICAgICBwcmV2TGF5ZXJMZW5ndGggPSBwcmV2TGF5ZXIubGVuZ3RoLFxuICAgICAgbGFzdE5vZGUgPSBfLmxhc3QobGF5ZXIpO1xuXG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2LCBpKSB7XG4gICAgICB2YXIgdyA9IGZpbmRPdGhlcklubmVyU2VnbWVudE5vZGUoZywgdiksXG4gICAgICAgIGsxID0gdyA/IGcubm9kZSh3KS5vcmRlciA6IHByZXZMYXllckxlbmd0aDtcblxuICAgICAgaWYgKHcgfHwgdiA9PT0gbGFzdE5vZGUpIHtcbiAgICAgICAgXy5mb3JFYWNoKGxheWVyLnNsaWNlKHNjYW5Qb3MsIGkgKzEpLCBmdW5jdGlvbihzY2FuTm9kZSkge1xuICAgICAgICAgIF8uZm9yRWFjaChnLnByZWRlY2Vzc29ycyhzY2FuTm9kZSksIGZ1bmN0aW9uKHUpIHtcbiAgICAgICAgICAgIHZhciB1TGFiZWwgPSBnLm5vZGUodSksXG4gICAgICAgICAgICAgIHVQb3MgPSB1TGFiZWwub3JkZXI7XG4gICAgICAgICAgICBpZiAoKHVQb3MgPCBrMCB8fCBrMSA8IHVQb3MpICYmXG4gICAgICAgICAgICAgICAgISh1TGFiZWwuZHVtbXkgJiYgZy5ub2RlKHNjYW5Ob2RlKS5kdW1teSkpIHtcbiAgICAgICAgICAgICAgYWRkQ29uZmxpY3QoY29uZmxpY3RzLCB1LCBzY2FuTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBzY2FuUG9zID0gaSArIDE7XG4gICAgICAgIGswID0gazE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGF5ZXI7XG4gIH1cblxuICBfLnJlZHVjZShsYXllcmluZywgdmlzaXRMYXllcik7XG4gIHJldHVybiBjb25mbGljdHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRUeXBlMkNvbmZsaWN0cyhnLCBsYXllcmluZykge1xuICB2YXIgY29uZmxpY3RzID0ge307XG5cbiAgZnVuY3Rpb24gc2Nhbihzb3V0aCwgc291dGhQb3MsIHNvdXRoRW5kLCBwcmV2Tm9ydGhCb3JkZXIsIG5leHROb3J0aEJvcmRlcikge1xuICAgIHZhciB2O1xuICAgIF8uZm9yRWFjaChfLnJhbmdlKHNvdXRoUG9zLCBzb3V0aEVuZCksIGZ1bmN0aW9uKGkpIHtcbiAgICAgIHYgPSBzb3V0aFtpXTtcbiAgICAgIGlmIChnLm5vZGUodikuZHVtbXkpIHtcbiAgICAgICAgXy5mb3JFYWNoKGcucHJlZGVjZXNzb3JzKHYpLCBmdW5jdGlvbih1KSB7XG4gICAgICAgICAgdmFyIHVOb2RlID0gZy5ub2RlKHUpO1xuICAgICAgICAgIGlmICh1Tm9kZS5kdW1teSAmJlxuICAgICAgICAgICAgICAodU5vZGUub3JkZXIgPCBwcmV2Tm9ydGhCb3JkZXIgfHwgdU5vZGUub3JkZXIgPiBuZXh0Tm9ydGhCb3JkZXIpKSB7XG4gICAgICAgICAgICBhZGRDb25mbGljdChjb25mbGljdHMsIHUsIHYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIGZ1bmN0aW9uIHZpc2l0TGF5ZXIobm9ydGgsIHNvdXRoKSB7XG4gICAgdmFyIHByZXZOb3J0aFBvcyA9IC0xLFxuICAgICAgbmV4dE5vcnRoUG9zLFxuICAgICAgc291dGhQb3MgPSAwO1xuXG4gICAgXy5mb3JFYWNoKHNvdXRoLCBmdW5jdGlvbih2LCBzb3V0aExvb2thaGVhZCkge1xuICAgICAgaWYgKGcubm9kZSh2KS5kdW1teSA9PT0gXCJib3JkZXJcIikge1xuICAgICAgICB2YXIgcHJlZGVjZXNzb3JzID0gZy5wcmVkZWNlc3NvcnModik7XG4gICAgICAgIGlmIChwcmVkZWNlc3NvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgbmV4dE5vcnRoUG9zID0gZy5ub2RlKHByZWRlY2Vzc29yc1swXSkub3JkZXI7XG4gICAgICAgICAgc2Nhbihzb3V0aCwgc291dGhQb3MsIHNvdXRoTG9va2FoZWFkLCBwcmV2Tm9ydGhQb3MsIG5leHROb3J0aFBvcyk7XG4gICAgICAgICAgc291dGhQb3MgPSBzb3V0aExvb2thaGVhZDtcbiAgICAgICAgICBwcmV2Tm9ydGhQb3MgPSBuZXh0Tm9ydGhQb3M7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aC5sZW5ndGgsIG5leHROb3J0aFBvcywgbm9ydGgubGVuZ3RoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzb3V0aDtcbiAgfVxuXG4gIF8ucmVkdWNlKGxheWVyaW5nLCB2aXNpdExheWVyKTtcbiAgcmV0dXJuIGNvbmZsaWN0cztcbn1cblxuZnVuY3Rpb24gZmluZE90aGVySW5uZXJTZWdtZW50Tm9kZShnLCB2KSB7XG4gIGlmIChnLm5vZGUodikuZHVtbXkpIHtcbiAgICByZXR1cm4gXy5maW5kKGcucHJlZGVjZXNzb3JzKHYpLCBmdW5jdGlvbih1KSB7XG4gICAgICByZXR1cm4gZy5ub2RlKHUpLmR1bW15O1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZENvbmZsaWN0KGNvbmZsaWN0cywgdiwgdykge1xuICBpZiAodiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG5cbiAgdmFyIGNvbmZsaWN0c1YgPSBjb25mbGljdHNbdl07XG4gIGlmICghY29uZmxpY3RzVikge1xuICAgIGNvbmZsaWN0c1t2XSA9IGNvbmZsaWN0c1YgPSB7fTtcbiAgfVxuICBjb25mbGljdHNWW3ddID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaGFzQ29uZmxpY3QoY29uZmxpY3RzLCB2LCB3KSB7XG4gIGlmICh2ID4gdykge1xuICAgIHZhciB0bXAgPSB2O1xuICAgIHYgPSB3O1xuICAgIHcgPSB0bXA7XG4gIH1cbiAgcmV0dXJuIF8uaGFzKGNvbmZsaWN0c1t2XSwgdyk7XG59XG5cbi8qXG4gKiBUcnkgdG8gYWxpZ24gbm9kZXMgaW50byB2ZXJ0aWNhbCBcImJsb2Nrc1wiIHdoZXJlIHBvc3NpYmxlLiBUaGlzIGFsZ29yaXRobVxuICogYXR0ZW1wdHMgdG8gYWxpZ24gYSBub2RlIHdpdGggb25lIG9mIGl0cyBtZWRpYW4gbmVpZ2hib3JzLiBJZiB0aGUgZWRnZVxuICogY29ubmVjdGluZyBhIG5laWdoYm9yIGlzIGEgdHlwZS0xIGNvbmZsaWN0IHRoZW4gd2UgaWdub3JlIHRoYXQgcG9zc2liaWxpdHkuXG4gKiBJZiBhIHByZXZpb3VzIG5vZGUgaGFzIGFscmVhZHkgZm9ybWVkIGEgYmxvY2sgd2l0aCBhIG5vZGUgYWZ0ZXIgdGhlIG5vZGVcbiAqIHdlJ3JlIHRyeWluZyB0byBmb3JtIGEgYmxvY2sgd2l0aCwgd2UgYWxzbyBpZ25vcmUgdGhhdCBwb3NzaWJpbGl0eSAtIG91clxuICogYmxvY2tzIHdvdWxkIGJlIHNwbGl0IGluIHRoYXQgc2NlbmFyaW8uXG4gKi9cbmZ1bmN0aW9uIHZlcnRpY2FsQWxpZ25tZW50KGcsIGxheWVyaW5nLCBjb25mbGljdHMsIG5laWdoYm9yRm4pIHtcbiAgdmFyIHJvb3QgPSB7fSxcbiAgICBhbGlnbiA9IHt9LFxuICAgIHBvcyA9IHt9O1xuXG4gIC8vIFdlIGNhY2hlIHRoZSBwb3NpdGlvbiBoZXJlIGJhc2VkIG9uIHRoZSBsYXllcmluZyBiZWNhdXNlIHRoZSBncmFwaCBhbmRcbiAgLy8gbGF5ZXJpbmcgbWF5IGJlIG91dCBvZiBzeW5jLiBUaGUgbGF5ZXJpbmcgbWF0cml4IGlzIG1hbmlwdWxhdGVkIHRvXG4gIC8vIGdlbmVyYXRlIGRpZmZlcmVudCBleHRyZW1lIGFsaWdubWVudHMuXG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYsIG9yZGVyKSB7XG4gICAgICByb290W3ZdID0gdjtcbiAgICAgIGFsaWduW3ZdID0gdjtcbiAgICAgIHBvc1t2XSA9IG9yZGVyO1xuICAgIH0pO1xuICB9KTtcblxuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgdmFyIHByZXZJZHggPSAtMTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYpIHtcbiAgICAgIHZhciB3cyA9IG5laWdoYm9yRm4odik7XG4gICAgICBpZiAod3MubGVuZ3RoKSB7XG4gICAgICAgIHdzID0gXy5zb3J0Qnkod3MsIGZ1bmN0aW9uKHcpIHsgcmV0dXJuIHBvc1t3XTsgfSk7XG4gICAgICAgIHZhciBtcCA9ICh3cy5sZW5ndGggLSAxKSAvIDI7XG4gICAgICAgIGZvciAodmFyIGkgPSBNYXRoLmZsb29yKG1wKSwgaWwgPSBNYXRoLmNlaWwobXApOyBpIDw9IGlsOyArK2kpIHtcbiAgICAgICAgICB2YXIgdyA9IHdzW2ldO1xuICAgICAgICAgIGlmIChhbGlnblt2XSA9PT0gdiAmJlxuICAgICAgICAgICAgICBwcmV2SWR4IDwgcG9zW3ddICYmXG4gICAgICAgICAgICAgICFoYXNDb25mbGljdChjb25mbGljdHMsIHYsIHcpKSB7XG4gICAgICAgICAgICBhbGlnblt3XSA9IHY7XG4gICAgICAgICAgICBhbGlnblt2XSA9IHJvb3Rbdl0gPSByb290W3ddO1xuICAgICAgICAgICAgcHJldklkeCA9IHBvc1t3XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgcm9vdDogcm9vdCwgYWxpZ246IGFsaWduIH07XG59XG5cbmZ1bmN0aW9uIGhvcml6b250YWxDb21wYWN0aW9uKGcsIGxheWVyaW5nLCByb290LCBhbGlnbiwgcmV2ZXJzZVNlcCkge1xuICAvLyBUaGlzIHBvcnRpb24gb2YgdGhlIGFsZ29yaXRobSBkaWZmZXJzIGZyb20gQksgZHVlIHRvIGEgbnVtYmVyIG9mIHByb2JsZW1zLlxuICAvLyBJbnN0ZWFkIG9mIHRoZWlyIGFsZ29yaXRobSB3ZSBjb25zdHJ1Y3QgYSBuZXcgYmxvY2sgZ3JhcGggYW5kIGRvIHR3b1xuICAvLyBzd2VlcHMuIFRoZSBmaXJzdCBzd2VlcCBwbGFjZXMgYmxvY2tzIHdpdGggdGhlIHNtYWxsZXN0IHBvc3NpYmxlXG4gIC8vIGNvb3JkaW5hdGVzLiBUaGUgc2Vjb25kIHN3ZWVwIHJlbW92ZXMgdW51c2VkIHNwYWNlIGJ5IG1vdmluZyBibG9ja3MgdG8gdGhlXG4gIC8vIGdyZWF0ZXN0IGNvb3JkaW5hdGVzIHdpdGhvdXQgdmlvbGF0aW5nIHNlcGFyYXRpb24uXG4gIHZhciB4cyA9IHt9LFxuICAgIGJsb2NrRyA9IGJ1aWxkQmxvY2tHcmFwaChnLCBsYXllcmluZywgcm9vdCwgcmV2ZXJzZVNlcCksXG4gICAgYm9yZGVyVHlwZSA9IHJldmVyc2VTZXAgPyBcImJvcmRlckxlZnRcIiA6IFwiYm9yZGVyUmlnaHRcIjtcblxuICBmdW5jdGlvbiBpdGVyYXRlKHNldFhzRnVuYywgbmV4dE5vZGVzRnVuYykge1xuICAgIHZhciBzdGFjayA9IGJsb2NrRy5ub2RlcygpO1xuICAgIHZhciBlbGVtID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHZpc2l0ZWQgPSB7fTtcbiAgICB3aGlsZSAoZWxlbSkge1xuICAgICAgaWYgKHZpc2l0ZWRbZWxlbV0pIHtcbiAgICAgICAgc2V0WHNGdW5jKGVsZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmlzaXRlZFtlbGVtXSA9IHRydWU7XG4gICAgICAgIHN0YWNrLnB1c2goZWxlbSk7XG4gICAgICAgIHN0YWNrID0gc3RhY2suY29uY2F0KG5leHROb2Rlc0Z1bmMoZWxlbSkpO1xuICAgICAgfVxuXG4gICAgICBlbGVtID0gc3RhY2sucG9wKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRmlyc3QgcGFzcywgYXNzaWduIHNtYWxsZXN0IGNvb3JkaW5hdGVzXG4gIGZ1bmN0aW9uIHBhc3MxKGVsZW0pIHtcbiAgICB4c1tlbGVtXSA9IGJsb2NrRy5pbkVkZ2VzKGVsZW0pLnJlZHVjZShmdW5jdGlvbihhY2MsIGUpIHtcbiAgICAgIHJldHVybiBNYXRoLm1heChhY2MsIHhzW2Uudl0gKyBibG9ja0cuZWRnZShlKSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvLyBTZWNvbmQgcGFzcywgYXNzaWduIGdyZWF0ZXN0IGNvb3JkaW5hdGVzXG4gIGZ1bmN0aW9uIHBhc3MyKGVsZW0pIHtcbiAgICB2YXIgbWluID0gYmxvY2tHLm91dEVkZ2VzKGVsZW0pLnJlZHVjZShmdW5jdGlvbihhY2MsIGUpIHtcbiAgICAgIHJldHVybiBNYXRoLm1pbihhY2MsIHhzW2Uud10gLSBibG9ja0cuZWRnZShlKSk7XG4gICAgfSwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcblxuICAgIHZhciBub2RlID0gZy5ub2RlKGVsZW0pO1xuICAgIGlmIChtaW4gIT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSAmJiBub2RlLmJvcmRlclR5cGUgIT09IGJvcmRlclR5cGUpIHtcbiAgICAgIHhzW2VsZW1dID0gTWF0aC5tYXgoeHNbZWxlbV0sIG1pbik7XG4gICAgfVxuICB9XG5cbiAgaXRlcmF0ZShwYXNzMSwgYmxvY2tHLnByZWRlY2Vzc29ycy5iaW5kKGJsb2NrRykpO1xuICBpdGVyYXRlKHBhc3MyLCBibG9ja0cuc3VjY2Vzc29ycy5iaW5kKGJsb2NrRykpO1xuXG4gIC8vIEFzc2lnbiB4IGNvb3JkaW5hdGVzIHRvIGFsbCBub2Rlc1xuICBfLmZvckVhY2goYWxpZ24sIGZ1bmN0aW9uKHYpIHtcbiAgICB4c1t2XSA9IHhzW3Jvb3Rbdl1dO1xuICB9KTtcblxuICByZXR1cm4geHM7XG59XG5cblxuZnVuY3Rpb24gYnVpbGRCbG9ja0dyYXBoKGcsIGxheWVyaW5nLCByb290LCByZXZlcnNlU2VwKSB7XG4gIHZhciBibG9ja0dyYXBoID0gbmV3IEdyYXBoKCksXG4gICAgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKSxcbiAgICBzZXBGbiA9IHNlcChncmFwaExhYmVsLm5vZGVzZXAsIGdyYXBoTGFiZWwuZWRnZXNlcCwgcmV2ZXJzZVNlcCk7XG5cbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciB1O1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odikge1xuICAgICAgdmFyIHZSb290ID0gcm9vdFt2XTtcbiAgICAgIGJsb2NrR3JhcGguc2V0Tm9kZSh2Um9vdCk7XG4gICAgICBpZiAodSkge1xuICAgICAgICB2YXIgdVJvb3QgPSByb290W3VdLFxuICAgICAgICAgIHByZXZNYXggPSBibG9ja0dyYXBoLmVkZ2UodVJvb3QsIHZSb290KTtcbiAgICAgICAgYmxvY2tHcmFwaC5zZXRFZGdlKHVSb290LCB2Um9vdCwgTWF0aC5tYXgoc2VwRm4oZywgdiwgdSksIHByZXZNYXggfHwgMCkpO1xuICAgICAgfVxuICAgICAgdSA9IHY7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBibG9ja0dyYXBoO1xufVxuXG4vKlxuICogUmV0dXJucyB0aGUgYWxpZ25tZW50IHRoYXQgaGFzIHRoZSBzbWFsbGVzdCB3aWR0aCBvZiB0aGUgZ2l2ZW4gYWxpZ25tZW50cy5cbiAqL1xuZnVuY3Rpb24gZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQoZywgeHNzKSB7XG4gIHJldHVybiBfLm1pbkJ5KF8udmFsdWVzKHhzcyksIGZ1bmN0aW9uICh4cykge1xuICAgIHZhciBtYXggPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gICAgdmFyIG1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcblxuICAgIF8uZm9ySW4oeHMsIGZ1bmN0aW9uICh4LCB2KSB7XG4gICAgICB2YXIgaGFsZldpZHRoID0gd2lkdGgoZywgdikgLyAyO1xuXG4gICAgICBtYXggPSBNYXRoLm1heCh4ICsgaGFsZldpZHRoLCBtYXgpO1xuICAgICAgbWluID0gTWF0aC5taW4oeCAtIGhhbGZXaWR0aCwgbWluKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXggLSBtaW47XG4gIH0pO1xufVxuXG4vKlxuICogQWxpZ24gdGhlIGNvb3JkaW5hdGVzIG9mIGVhY2ggb2YgdGhlIGxheW91dCBhbGlnbm1lbnRzIHN1Y2ggdGhhdFxuICogbGVmdC1iaWFzZWQgYWxpZ25tZW50cyBoYXZlIHRoZWlyIG1pbmltdW0gY29vcmRpbmF0ZSBhdCB0aGUgc2FtZSBwb2ludCBhc1xuICogdGhlIG1pbmltdW0gY29vcmRpbmF0ZSBvZiB0aGUgc21hbGxlc3Qgd2lkdGggYWxpZ25tZW50IGFuZCByaWdodC1iaWFzZWRcbiAqIGFsaWdubWVudHMgaGF2ZSB0aGVpciBtYXhpbXVtIGNvb3JkaW5hdGUgYXQgdGhlIHNhbWUgcG9pbnQgYXMgdGhlIG1heGltdW1cbiAqIGNvb3JkaW5hdGUgb2YgdGhlIHNtYWxsZXN0IHdpZHRoIGFsaWdubWVudC5cbiAqL1xuZnVuY3Rpb24gYWxpZ25Db29yZGluYXRlcyh4c3MsIGFsaWduVG8pIHtcbiAgdmFyIGFsaWduVG9WYWxzID0gXy52YWx1ZXMoYWxpZ25UbyksXG4gICAgYWxpZ25Ub01pbiA9IF8ubWluKGFsaWduVG9WYWxzKSxcbiAgICBhbGlnblRvTWF4ID0gXy5tYXgoYWxpZ25Ub1ZhbHMpO1xuXG4gIF8uZm9yRWFjaChbXCJ1XCIsIFwiZFwiXSwgZnVuY3Rpb24odmVydCkge1xuICAgIF8uZm9yRWFjaChbXCJsXCIsIFwiclwiXSwgZnVuY3Rpb24oaG9yaXopIHtcbiAgICAgIHZhciBhbGlnbm1lbnQgPSB2ZXJ0ICsgaG9yaXosXG4gICAgICAgIHhzID0geHNzW2FsaWdubWVudF0sXG4gICAgICAgIGRlbHRhO1xuICAgICAgaWYgKHhzID09PSBhbGlnblRvKSByZXR1cm47XG5cbiAgICAgIHZhciB4c1ZhbHMgPSBfLnZhbHVlcyh4cyk7XG4gICAgICBkZWx0YSA9IGhvcml6ID09PSBcImxcIiA/IGFsaWduVG9NaW4gLSBfLm1pbih4c1ZhbHMpIDogYWxpZ25Ub01heCAtIF8ubWF4KHhzVmFscyk7XG5cbiAgICAgIGlmIChkZWx0YSkge1xuICAgICAgICB4c3NbYWxpZ25tZW50XSA9IF8ubWFwVmFsdWVzKHhzLCBmdW5jdGlvbih4KSB7IHJldHVybiB4ICsgZGVsdGE7IH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYmFsYW5jZSh4c3MsIGFsaWduKSB7XG4gIHJldHVybiBfLm1hcFZhbHVlcyh4c3MudWwsIGZ1bmN0aW9uKGlnbm9yZSwgdikge1xuICAgIGlmIChhbGlnbikge1xuICAgICAgcmV0dXJuIHhzc1thbGlnbi50b0xvd2VyQ2FzZSgpXVt2XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHhzID0gXy5zb3J0QnkoXy5tYXAoeHNzLCB2KSk7XG4gICAgICByZXR1cm4gKHhzWzFdICsgeHNbMl0pIC8gMjtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvblgoZykge1xuICB2YXIgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gIHZhciBjb25mbGljdHMgPSBfLm1lcmdlKFxuICAgIGZpbmRUeXBlMUNvbmZsaWN0cyhnLCBsYXllcmluZyksXG4gICAgZmluZFR5cGUyQ29uZmxpY3RzKGcsIGxheWVyaW5nKSk7XG5cbiAgdmFyIHhzcyA9IHt9O1xuICB2YXIgYWRqdXN0ZWRMYXllcmluZztcbiAgXy5mb3JFYWNoKFtcInVcIiwgXCJkXCJdLCBmdW5jdGlvbih2ZXJ0KSB7XG4gICAgYWRqdXN0ZWRMYXllcmluZyA9IHZlcnQgPT09IFwidVwiID8gbGF5ZXJpbmcgOiBfLnZhbHVlcyhsYXllcmluZykucmV2ZXJzZSgpO1xuICAgIF8uZm9yRWFjaChbXCJsXCIsIFwiclwiXSwgZnVuY3Rpb24oaG9yaXopIHtcbiAgICAgIGlmIChob3JpeiA9PT0gXCJyXCIpIHtcbiAgICAgICAgYWRqdXN0ZWRMYXllcmluZyA9IF8ubWFwKGFkanVzdGVkTGF5ZXJpbmcsIGZ1bmN0aW9uKGlubmVyKSB7XG4gICAgICAgICAgcmV0dXJuIF8udmFsdWVzKGlubmVyKS5yZXZlcnNlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmVpZ2hib3JGbiA9ICh2ZXJ0ID09PSBcInVcIiA/IGcucHJlZGVjZXNzb3JzIDogZy5zdWNjZXNzb3JzKS5iaW5kKGcpO1xuICAgICAgdmFyIGFsaWduID0gdmVydGljYWxBbGlnbm1lbnQoZywgYWRqdXN0ZWRMYXllcmluZywgY29uZmxpY3RzLCBuZWlnaGJvckZuKTtcbiAgICAgIHZhciB4cyA9IGhvcml6b250YWxDb21wYWN0aW9uKGcsIGFkanVzdGVkTGF5ZXJpbmcsXG4gICAgICAgIGFsaWduLnJvb3QsIGFsaWduLmFsaWduLCBob3JpeiA9PT0gXCJyXCIpO1xuICAgICAgaWYgKGhvcml6ID09PSBcInJcIikge1xuICAgICAgICB4cyA9IF8ubWFwVmFsdWVzKHhzLCBmdW5jdGlvbih4KSB7IHJldHVybiAteDsgfSk7XG4gICAgICB9XG4gICAgICB4c3NbdmVydCArIGhvcml6XSA9IHhzO1xuICAgIH0pO1xuICB9KTtcblxuICB2YXIgc21hbGxlc3RXaWR0aCA9IGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50KGcsIHhzcyk7XG4gIGFsaWduQ29vcmRpbmF0ZXMoeHNzLCBzbWFsbGVzdFdpZHRoKTtcbiAgcmV0dXJuIGJhbGFuY2UoeHNzLCBnLmdyYXBoKCkuYWxpZ24pO1xufVxuXG5mdW5jdGlvbiBzZXAobm9kZVNlcCwgZWRnZVNlcCwgcmV2ZXJzZVNlcCkge1xuICByZXR1cm4gZnVuY3Rpb24oZywgdiwgdykge1xuICAgIHZhciB2TGFiZWwgPSBnLm5vZGUodik7XG4gICAgdmFyIHdMYWJlbCA9IGcubm9kZSh3KTtcbiAgICB2YXIgc3VtID0gMDtcbiAgICB2YXIgZGVsdGE7XG5cbiAgICBzdW0gKz0gdkxhYmVsLndpZHRoIC8gMjtcbiAgICBpZiAoXy5oYXModkxhYmVsLCBcImxhYmVscG9zXCIpKSB7XG4gICAgICBzd2l0Y2ggKHZMYWJlbC5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIFwibFwiOiBkZWx0YSA9IC12TGFiZWwud2lkdGggLyAyOyBicmVhaztcbiAgICAgIGNhc2UgXCJyXCI6IGRlbHRhID0gdkxhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkZWx0YSkge1xuICAgICAgc3VtICs9IHJldmVyc2VTZXAgPyBkZWx0YSA6IC1kZWx0YTtcbiAgICB9XG4gICAgZGVsdGEgPSAwO1xuXG4gICAgc3VtICs9ICh2TGFiZWwuZHVtbXkgPyBlZGdlU2VwIDogbm9kZVNlcCkgLyAyO1xuICAgIHN1bSArPSAod0xhYmVsLmR1bW15ID8gZWRnZVNlcCA6IG5vZGVTZXApIC8gMjtcblxuICAgIHN1bSArPSB3TGFiZWwud2lkdGggLyAyO1xuICAgIGlmIChfLmhhcyh3TGFiZWwsIFwibGFiZWxwb3NcIikpIHtcbiAgICAgIHN3aXRjaCAod0xhYmVsLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgXCJsXCI6IGRlbHRhID0gd0xhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICBjYXNlIFwiclwiOiBkZWx0YSA9IC13TGFiZWwud2lkdGggLyAyOyBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRlbHRhKSB7XG4gICAgICBzdW0gKz0gcmV2ZXJzZVNlcCA/IGRlbHRhIDogLWRlbHRhO1xuICAgIH1cbiAgICBkZWx0YSA9IDA7XG5cbiAgICByZXR1cm4gc3VtO1xuICB9O1xufVxuXG5mdW5jdGlvbiB3aWR0aChnLCB2KSB7XG4gIHJldHVybiBnLm5vZGUodikud2lkdGg7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcbnZhciBwb3NpdGlvblggPSByZXF1aXJlKFwiLi9ia1wiKS5wb3NpdGlvblg7XG5cbm1vZHVsZS5leHBvcnRzID0gcG9zaXRpb247XG5cbmZ1bmN0aW9uIHBvc2l0aW9uKGcpIHtcbiAgZyA9IHV0aWwuYXNOb25Db21wb3VuZEdyYXBoKGcpO1xuXG4gIHBvc2l0aW9uWShnKTtcbiAgXy5mb3JFYWNoKHBvc2l0aW9uWChnKSwgZnVuY3Rpb24oeCwgdikge1xuICAgIGcubm9kZSh2KS54ID0geDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBvc2l0aW9uWShnKSB7XG4gIHZhciBsYXllcmluZyA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcbiAgdmFyIHJhbmtTZXAgPSBnLmdyYXBoKCkucmFua3NlcDtcbiAgdmFyIHByZXZZID0gMDtcbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBtYXhIZWlnaHQgPSBfLm1heChfLm1hcChsYXllciwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLmhlaWdodDsgfSkpO1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odikge1xuICAgICAgZy5ub2RlKHYpLnkgPSBwcmV2WSArIG1heEhlaWdodCAvIDI7XG4gICAgfSk7XG4gICAgcHJldlkgKz0gbWF4SGVpZ2h0ICsgcmFua1NlcDtcbiAgfSk7XG59XG5cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciBhY3ljbGljID0gcmVxdWlyZShcIi4vYWN5Y2xpY1wiKTtcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKFwiLi9ub3JtYWxpemVcIik7XG52YXIgcmFuayA9IHJlcXVpcmUoXCIuL3JhbmtcIik7XG52YXIgbm9ybWFsaXplUmFua3MgPSByZXF1aXJlKFwiLi91dGlsXCIpLm5vcm1hbGl6ZVJhbmtzO1xudmFyIHBhcmVudER1bW15Q2hhaW5zID0gcmVxdWlyZShcIi4vcGFyZW50LWR1bW15LWNoYWluc1wiKTtcbnZhciByZW1vdmVFbXB0eVJhbmtzID0gcmVxdWlyZShcIi4vdXRpbFwiKS5yZW1vdmVFbXB0eVJhbmtzO1xudmFyIG5lc3RpbmdHcmFwaCA9IHJlcXVpcmUoXCIuL25lc3RpbmctZ3JhcGhcIik7XG52YXIgYWRkQm9yZGVyU2VnbWVudHMgPSByZXF1aXJlKFwiLi9hZGQtYm9yZGVyLXNlZ21lbnRzXCIpO1xudmFyIGNvb3JkaW5hdGVTeXN0ZW0gPSByZXF1aXJlKFwiLi9jb29yZGluYXRlLXN5c3RlbVwiKTtcbnZhciBvcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyXCIpO1xudmFyIHBvc2l0aW9uID0gcmVxdWlyZShcIi4vcG9zaXRpb25cIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaGxpYlwiKS5HcmFwaDtcblxubW9kdWxlLmV4cG9ydHMgPSBsYXlvdXQ7XG5cbmZ1bmN0aW9uIGxheW91dChnLCBvcHRzKSB7XG4gIHZhciB0aW1lID0gb3B0cyAmJiBvcHRzLmRlYnVnVGltaW5nID8gdXRpbC50aW1lIDogdXRpbC5ub3RpbWU7XG4gIHRpbWUoXCJsYXlvdXRcIiwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxheW91dEdyYXBoID0gXG4gICAgICB0aW1lKFwiICBidWlsZExheW91dEdyYXBoXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gYnVpbGRMYXlvdXRHcmFwaChnKTsgfSk7XG4gICAgdGltZShcIiAgcnVuTGF5b3V0XCIsICAgICAgICBmdW5jdGlvbigpIHsgcnVuTGF5b3V0KGxheW91dEdyYXBoLCB0aW1lKTsgfSk7XG4gICAgdGltZShcIiAgdXBkYXRlSW5wdXRHcmFwaFwiLCBmdW5jdGlvbigpIHsgdXBkYXRlSW5wdXRHcmFwaChnLCBsYXlvdXRHcmFwaCk7IH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcnVuTGF5b3V0KGcsIHRpbWUpIHtcbiAgdGltZShcIiAgICBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzXCIsIGZ1bmN0aW9uKCkgeyBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzKGcpOyB9KTtcbiAgdGltZShcIiAgICByZW1vdmVTZWxmRWRnZXNcIiwgICAgICAgIGZ1bmN0aW9uKCkgeyByZW1vdmVTZWxmRWRnZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFjeWNsaWNcIiwgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGFjeWNsaWMucnVuKGcpOyB9KTtcbiAgdGltZShcIiAgICBuZXN0aW5nR3JhcGgucnVuXCIsICAgICAgIGZ1bmN0aW9uKCkgeyBuZXN0aW5nR3JhcGgucnVuKGcpOyB9KTtcbiAgdGltZShcIiAgICByYW5rXCIsICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByYW5rKHV0aWwuYXNOb25Db21wb3VuZEdyYXBoKGcpKTsgfSk7XG4gIHRpbWUoXCIgICAgaW5qZWN0RWRnZUxhYmVsUHJveGllc1wiLCBmdW5jdGlvbigpIHsgaW5qZWN0RWRnZUxhYmVsUHJveGllcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmVtb3ZlRW1wdHlSYW5rc1wiLCAgICAgICBmdW5jdGlvbigpIHsgcmVtb3ZlRW1wdHlSYW5rcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgbmVzdGluZ0dyYXBoLmNsZWFudXBcIiwgICBmdW5jdGlvbigpIHsgbmVzdGluZ0dyYXBoLmNsZWFudXAoZyk7IH0pO1xuICB0aW1lKFwiICAgIG5vcm1hbGl6ZVJhbmtzXCIsICAgICAgICAgZnVuY3Rpb24oKSB7IG5vcm1hbGl6ZVJhbmtzKGcpOyB9KTtcbiAgdGltZShcIiAgICBhc3NpZ25SYW5rTWluTWF4XCIsICAgICAgIGZ1bmN0aW9uKCkgeyBhc3NpZ25SYW5rTWluTWF4KGcpOyB9KTtcbiAgdGltZShcIiAgICByZW1vdmVFZGdlTGFiZWxQcm94aWVzXCIsIGZ1bmN0aW9uKCkgeyByZW1vdmVFZGdlTGFiZWxQcm94aWVzKGcpOyB9KTtcbiAgdGltZShcIiAgICBub3JtYWxpemUucnVuXCIsICAgICAgICAgIGZ1bmN0aW9uKCkgeyBub3JtYWxpemUucnVuKGcpOyB9KTtcbiAgdGltZShcIiAgICBwYXJlbnREdW1teUNoYWluc1wiLCAgICAgIGZ1bmN0aW9uKCkgeyBwYXJlbnREdW1teUNoYWlucyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYWRkQm9yZGVyU2VnbWVudHNcIiwgICAgICBmdW5jdGlvbigpIHsgYWRkQm9yZGVyU2VnbWVudHMoZyk7IH0pO1xuICB0aW1lKFwiICAgIG9yZGVyXCIsICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IG9yZGVyKGcpOyB9KTtcbiAgdGltZShcIiAgICBpbnNlcnRTZWxmRWRnZXNcIiwgICAgICAgIGZ1bmN0aW9uKCkgeyBpbnNlcnRTZWxmRWRnZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFkanVzdENvb3JkaW5hdGVTeXN0ZW1cIiwgZnVuY3Rpb24oKSB7IGNvb3JkaW5hdGVTeXN0ZW0uYWRqdXN0KGcpOyB9KTtcbiAgdGltZShcIiAgICBwb3NpdGlvblwiLCAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBwb3NpdGlvbihnKTsgfSk7XG4gIHRpbWUoXCIgICAgcG9zaXRpb25TZWxmRWRnZXNcIiwgICAgICBmdW5jdGlvbigpIHsgcG9zaXRpb25TZWxmRWRnZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIHJlbW92ZUJvcmRlck5vZGVzXCIsICAgICAgZnVuY3Rpb24oKSB7IHJlbW92ZUJvcmRlck5vZGVzKGcpOyB9KTtcbiAgdGltZShcIiAgICBub3JtYWxpemUudW5kb1wiLCAgICAgICAgIGZ1bmN0aW9uKCkgeyBub3JtYWxpemUudW5kbyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgZml4dXBFZGdlTGFiZWxDb29yZHNcIiwgICBmdW5jdGlvbigpIHsgZml4dXBFZGdlTGFiZWxDb29yZHMoZyk7IH0pO1xuICB0aW1lKFwiICAgIHVuZG9Db29yZGluYXRlU3lzdGVtXCIsICAgZnVuY3Rpb24oKSB7IGNvb3JkaW5hdGVTeXN0ZW0udW5kbyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgdHJhbnNsYXRlR3JhcGhcIiwgICAgICAgICBmdW5jdGlvbigpIHsgdHJhbnNsYXRlR3JhcGgoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzXCIsICAgZnVuY3Rpb24oKSB7IGFzc2lnbk5vZGVJbnRlcnNlY3RzKGcpOyB9KTtcbiAgdGltZShcIiAgICByZXZlcnNlUG9pbnRzXCIsICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXZlcnNlUG9pbnRzRm9yUmV2ZXJzZWRFZGdlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYWN5Y2xpYy51bmRvXCIsICAgICAgICAgICBmdW5jdGlvbigpIHsgYWN5Y2xpYy51bmRvKGcpOyB9KTtcbn1cblxuLypcbiAqIENvcGllcyBmaW5hbCBsYXlvdXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbGF5b3V0IGdyYXBoIGJhY2sgdG8gdGhlIGlucHV0XG4gKiBncmFwaC4gVGhpcyBwcm9jZXNzIG9ubHkgY29waWVzIHdoaXRlbGlzdGVkIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbGF5b3V0IGdyYXBoXG4gKiB0byB0aGUgaW5wdXQgZ3JhcGgsIHNvIGl0IHNlcnZlcyBhcyBhIGdvb2QgcGxhY2UgdG8gZGV0ZXJtaW5lIHdoYXRcbiAqIGF0dHJpYnV0ZXMgY2FuIGluZmx1ZW5jZSBsYXlvdXQuXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZUlucHV0R3JhcGgoaW5wdXRHcmFwaCwgbGF5b3V0R3JhcGgpIHtcbiAgXy5mb3JFYWNoKGlucHV0R3JhcGgubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBpbnB1dExhYmVsID0gaW5wdXRHcmFwaC5ub2RlKHYpO1xuICAgIHZhciBsYXlvdXRMYWJlbCA9IGxheW91dEdyYXBoLm5vZGUodik7XG5cbiAgICBpZiAoaW5wdXRMYWJlbCkge1xuICAgICAgaW5wdXRMYWJlbC54ID0gbGF5b3V0TGFiZWwueDtcbiAgICAgIGlucHV0TGFiZWwueSA9IGxheW91dExhYmVsLnk7XG5cbiAgICAgIGlmIChsYXlvdXRHcmFwaC5jaGlsZHJlbih2KS5sZW5ndGgpIHtcbiAgICAgICAgaW5wdXRMYWJlbC53aWR0aCA9IGxheW91dExhYmVsLndpZHRoO1xuICAgICAgICBpbnB1dExhYmVsLmhlaWdodCA9IGxheW91dExhYmVsLmhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgaW5wdXRMYWJlbCA9IGlucHV0R3JhcGguZWRnZShlKTtcbiAgICB2YXIgbGF5b3V0TGFiZWwgPSBsYXlvdXRHcmFwaC5lZGdlKGUpO1xuXG4gICAgaW5wdXRMYWJlbC5wb2ludHMgPSBsYXlvdXRMYWJlbC5wb2ludHM7XG4gICAgaWYgKF8uaGFzKGxheW91dExhYmVsLCBcInhcIikpIHtcbiAgICAgIGlucHV0TGFiZWwueCA9IGxheW91dExhYmVsLng7XG4gICAgICBpbnB1dExhYmVsLnkgPSBsYXlvdXRMYWJlbC55O1xuICAgIH1cbiAgfSk7XG5cbiAgaW5wdXRHcmFwaC5ncmFwaCgpLndpZHRoID0gbGF5b3V0R3JhcGguZ3JhcGgoKS53aWR0aDtcbiAgaW5wdXRHcmFwaC5ncmFwaCgpLmhlaWdodCA9IGxheW91dEdyYXBoLmdyYXBoKCkuaGVpZ2h0O1xufVxuXG52YXIgZ3JhcGhOdW1BdHRycyA9IFtcIm5vZGVzZXBcIiwgXCJlZGdlc2VwXCIsIFwicmFua3NlcFwiLCBcIm1hcmdpbnhcIiwgXCJtYXJnaW55XCJdO1xudmFyIGdyYXBoRGVmYXVsdHMgPSB7IHJhbmtzZXA6IDUwLCBlZGdlc2VwOiAyMCwgbm9kZXNlcDogNTAsIHJhbmtkaXI6IFwidGJcIiB9O1xudmFyIGdyYXBoQXR0cnMgPSBbXCJhY3ljbGljZXJcIiwgXCJyYW5rZXJcIiwgXCJyYW5rZGlyXCIsIFwiYWxpZ25cIl07XG52YXIgbm9kZU51bUF0dHJzID0gW1wid2lkdGhcIiwgXCJoZWlnaHRcIl07XG52YXIgbm9kZURlZmF1bHRzID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XG52YXIgZWRnZU51bUF0dHJzID0gW1wibWlubGVuXCIsIFwid2VpZ2h0XCIsIFwid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJsYWJlbG9mZnNldFwiXTtcbnZhciBlZGdlRGVmYXVsdHMgPSB7XG4gIG1pbmxlbjogMSwgd2VpZ2h0OiAxLCB3aWR0aDogMCwgaGVpZ2h0OiAwLFxuICBsYWJlbG9mZnNldDogMTAsIGxhYmVscG9zOiBcInJcIlxufTtcbnZhciBlZGdlQXR0cnMgPSBbXCJsYWJlbHBvc1wiXTtcblxuLypcbiAqIENvbnN0cnVjdHMgYSBuZXcgZ3JhcGggZnJvbSB0aGUgaW5wdXQgZ3JhcGgsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBsYXlvdXQuXG4gKiBUaGlzIHByb2Nlc3MgY29waWVzIG9ubHkgd2hpdGVsaXN0ZWQgYXR0cmlidXRlcyBmcm9tIHRoZSBpbnB1dCBncmFwaCB0byB0aGVcbiAqIGxheW91dCBncmFwaC4gVGh1cyB0aGlzIGZ1bmN0aW9uIHNlcnZlcyBhcyBhIGdvb2QgcGxhY2UgdG8gZGV0ZXJtaW5lIHdoYXRcbiAqIGF0dHJpYnV0ZXMgY2FuIGluZmx1ZW5jZSBsYXlvdXQuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTGF5b3V0R3JhcGgoaW5wdXRHcmFwaCkge1xuICB2YXIgZyA9IG5ldyBHcmFwaCh7IG11bHRpZ3JhcGg6IHRydWUsIGNvbXBvdW5kOiB0cnVlIH0pO1xuICB2YXIgZ3JhcGggPSBjYW5vbmljYWxpemUoaW5wdXRHcmFwaC5ncmFwaCgpKTtcblxuICBnLnNldEdyYXBoKF8ubWVyZ2Uoe30sXG4gICAgZ3JhcGhEZWZhdWx0cyxcbiAgICBzZWxlY3ROdW1iZXJBdHRycyhncmFwaCwgZ3JhcGhOdW1BdHRycyksXG4gICAgXy5waWNrKGdyYXBoLCBncmFwaEF0dHJzKSkpO1xuXG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGNhbm9uaWNhbGl6ZShpbnB1dEdyYXBoLm5vZGUodikpO1xuICAgIGcuc2V0Tm9kZSh2LCBfLmRlZmF1bHRzKHNlbGVjdE51bWJlckF0dHJzKG5vZGUsIG5vZGVOdW1BdHRycyksIG5vZGVEZWZhdWx0cykpO1xuICAgIGcuc2V0UGFyZW50KHYsIGlucHV0R3JhcGgucGFyZW50KHYpKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGlucHV0R3JhcGguZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGguZWRnZShlKSk7XG4gICAgZy5zZXRFZGdlKGUsIF8ubWVyZ2Uoe30sXG4gICAgICBlZGdlRGVmYXVsdHMsXG4gICAgICBzZWxlY3ROdW1iZXJBdHRycyhlZGdlLCBlZGdlTnVtQXR0cnMpLFxuICAgICAgXy5waWNrKGVkZ2UsIGVkZ2VBdHRycykpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGc7XG59XG5cbi8qXG4gKiBUaGlzIGlkZWEgY29tZXMgZnJvbSB0aGUgR2Fuc25lciBwYXBlcjogdG8gYWNjb3VudCBmb3IgZWRnZSBsYWJlbHMgaW4gb3VyXG4gKiBsYXlvdXQgd2Ugc3BsaXQgZWFjaCByYW5rIGluIGhhbGYgYnkgZG91YmxpbmcgbWlubGVuIGFuZCBoYWx2aW5nIHJhbmtzZXAuXG4gKiBUaGVuIHdlIGNhbiBwbGFjZSBsYWJlbHMgYXQgdGhlc2UgbWlkLXBvaW50cyBiZXR3ZWVuIG5vZGVzLlxuICpcbiAqIFdlIGFsc28gYWRkIHNvbWUgbWluaW1hbCBwYWRkaW5nIHRvIHRoZSB3aWR0aCB0byBwdXNoIHRoZSBsYWJlbCBmb3IgdGhlIGVkZ2VcbiAqIGF3YXkgZnJvbSB0aGUgZWRnZSBpdHNlbGYgYSBiaXQuXG4gKi9cbmZ1bmN0aW9uIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMoZykge1xuICB2YXIgZ3JhcGggPSBnLmdyYXBoKCk7XG4gIGdyYXBoLnJhbmtzZXAgLz0gMjtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGVkZ2UubWlubGVuICo9IDI7XG4gICAgaWYgKGVkZ2UubGFiZWxwb3MudG9Mb3dlckNhc2UoKSAhPT0gXCJjXCIpIHtcbiAgICAgIGlmIChncmFwaC5yYW5rZGlyID09PSBcIlRCXCIgfHwgZ3JhcGgucmFua2RpciA9PT0gXCJCVFwiKSB7XG4gICAgICAgIGVkZ2Uud2lkdGggKz0gZWRnZS5sYWJlbG9mZnNldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVkZ2UuaGVpZ2h0ICs9IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLypcbiAqIENyZWF0ZXMgdGVtcG9yYXJ5IGR1bW15IG5vZGVzIHRoYXQgY2FwdHVyZSB0aGUgcmFuayBpbiB3aGljaCBlYWNoIGVkZ2Unc1xuICogbGFiZWwgaXMgZ29pbmcgdG8sIGlmIGl0IGhhcyBvbmUgb2Ygbm9uLXplcm8gd2lkdGggYW5kIGhlaWdodC4gV2UgZG8gdGhpc1xuICogc28gdGhhdCB3ZSBjYW4gc2FmZWx5IHJlbW92ZSBlbXB0eSByYW5rcyB3aGlsZSBwcmVzZXJ2aW5nIGJhbGFuY2UgZm9yIHRoZVxuICogbGFiZWwncyBwb3NpdGlvbi5cbiAqL1xuZnVuY3Rpb24gaW5qZWN0RWRnZUxhYmVsUHJveGllcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoZWRnZS53aWR0aCAmJiBlZGdlLmhlaWdodCkge1xuICAgICAgdmFyIHYgPSBnLm5vZGUoZS52KTtcbiAgICAgIHZhciB3ID0gZy5ub2RlKGUudyk7XG4gICAgICB2YXIgbGFiZWwgPSB7IHJhbms6ICh3LnJhbmsgLSB2LnJhbmspIC8gMiArIHYucmFuaywgZTogZSB9O1xuICAgICAgdXRpbC5hZGREdW1teU5vZGUoZywgXCJlZGdlLXByb3h5XCIsIGxhYmVsLCBcIl9lcFwiKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25SYW5rTWluTWF4KGcpIHtcbiAgdmFyIG1heFJhbmsgPSAwO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKG5vZGUuYm9yZGVyVG9wKSB7XG4gICAgICBub2RlLm1pblJhbmsgPSBnLm5vZGUobm9kZS5ib3JkZXJUb3ApLnJhbms7XG4gICAgICBub2RlLm1heFJhbmsgPSBnLm5vZGUobm9kZS5ib3JkZXJCb3R0b20pLnJhbms7XG4gICAgICBtYXhSYW5rID0gXy5tYXgobWF4UmFuaywgbm9kZS5tYXhSYW5rKTtcbiAgICB9XG4gIH0pO1xuICBnLmdyYXBoKCkubWF4UmFuayA9IG1heFJhbms7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUVkZ2VMYWJlbFByb3hpZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKG5vZGUuZHVtbXkgPT09IFwiZWRnZS1wcm94eVwiKSB7XG4gICAgICBnLmVkZ2Uobm9kZS5lKS5sYWJlbFJhbmsgPSBub2RlLnJhbms7XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNsYXRlR3JhcGgoZykge1xuICB2YXIgbWluWCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIG1heFggPSAwO1xuICB2YXIgbWluWSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIG1heFkgPSAwO1xuICB2YXIgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKTtcbiAgdmFyIG1hcmdpblggPSBncmFwaExhYmVsLm1hcmdpbnggfHwgMDtcbiAgdmFyIG1hcmdpblkgPSBncmFwaExhYmVsLm1hcmdpbnkgfHwgMDtcblxuICBmdW5jdGlvbiBnZXRFeHRyZW1lcyhhdHRycykge1xuICAgIHZhciB4ID0gYXR0cnMueDtcbiAgICB2YXIgeSA9IGF0dHJzLnk7XG4gICAgdmFyIHcgPSBhdHRycy53aWR0aDtcbiAgICB2YXIgaCA9IGF0dHJzLmhlaWdodDtcbiAgICBtaW5YID0gTWF0aC5taW4obWluWCwgeCAtIHcgLyAyKTtcbiAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgeCArIHcgLyAyKTtcbiAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeSAtIGggLyAyKTtcbiAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgeSArIGggLyAyKTtcbiAgfVxuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgZ2V0RXh0cmVtZXMoZy5ub2RlKHYpKTsgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ4XCIpKSB7XG4gICAgICBnZXRFeHRyZW1lcyhlZGdlKTtcbiAgICB9XG4gIH0pO1xuXG4gIG1pblggLT0gbWFyZ2luWDtcbiAgbWluWSAtPSBtYXJnaW5ZO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBub2RlLnggLT0gbWluWDtcbiAgICBub2RlLnkgLT0gbWluWTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIF8uZm9yRWFjaChlZGdlLnBvaW50cywgZnVuY3Rpb24ocCkge1xuICAgICAgcC54IC09IG1pblg7XG4gICAgICBwLnkgLT0gbWluWTtcbiAgICB9KTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ4XCIpKSB7IGVkZ2UueCAtPSBtaW5YOyB9XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieVwiKSkgeyBlZGdlLnkgLT0gbWluWTsgfVxuICB9KTtcblxuICBncmFwaExhYmVsLndpZHRoID0gbWF4WCAtIG1pblggKyBtYXJnaW5YO1xuICBncmFwaExhYmVsLmhlaWdodCA9IG1heFkgLSBtaW5ZICsgbWFyZ2luWTtcbn1cblxuZnVuY3Rpb24gYXNzaWduTm9kZUludGVyc2VjdHMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgdmFyIG5vZGVWID0gZy5ub2RlKGUudik7XG4gICAgdmFyIG5vZGVXID0gZy5ub2RlKGUudyk7XG4gICAgdmFyIHAxLCBwMjtcbiAgICBpZiAoIWVkZ2UucG9pbnRzKSB7XG4gICAgICBlZGdlLnBvaW50cyA9IFtdO1xuICAgICAgcDEgPSBub2RlVztcbiAgICAgIHAyID0gbm9kZVY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHAxID0gZWRnZS5wb2ludHNbMF07XG4gICAgICBwMiA9IGVkZ2UucG9pbnRzW2VkZ2UucG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICBlZGdlLnBvaW50cy51bnNoaWZ0KHV0aWwuaW50ZXJzZWN0UmVjdChub2RlViwgcDEpKTtcbiAgICBlZGdlLnBvaW50cy5wdXNoKHV0aWwuaW50ZXJzZWN0UmVjdChub2RlVywgcDIpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZpeHVwRWRnZUxhYmVsQ29vcmRzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChfLmhhcyhlZGdlLCBcInhcIikpIHtcbiAgICAgIGlmIChlZGdlLmxhYmVscG9zID09PSBcImxcIiB8fCBlZGdlLmxhYmVscG9zID09PSBcInJcIikge1xuICAgICAgICBlZGdlLndpZHRoIC09IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKGVkZ2UubGFiZWxwb3MpIHtcbiAgICAgIGNhc2UgXCJsXCI6IGVkZ2UueCAtPSBlZGdlLndpZHRoIC8gMiArIGVkZ2UubGFiZWxvZmZzZXQ7IGJyZWFrO1xuICAgICAgY2FzZSBcInJcIjogZWRnZS54ICs9IGVkZ2Uud2lkdGggLyAyICsgZWRnZS5sYWJlbG9mZnNldDsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVBvaW50c0ZvclJldmVyc2VkRWRnZXMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGVkZ2UucmV2ZXJzZWQpIHtcbiAgICAgIGVkZ2UucG9pbnRzLnJldmVyc2UoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVCb3JkZXJOb2RlcyhnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoZy5jaGlsZHJlbih2KS5sZW5ndGgpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgICAgdmFyIHQgPSBnLm5vZGUobm9kZS5ib3JkZXJUb3ApO1xuICAgICAgdmFyIGIgPSBnLm5vZGUobm9kZS5ib3JkZXJCb3R0b20pO1xuICAgICAgdmFyIGwgPSBnLm5vZGUoXy5sYXN0KG5vZGUuYm9yZGVyTGVmdCkpO1xuICAgICAgdmFyIHIgPSBnLm5vZGUoXy5sYXN0KG5vZGUuYm9yZGVyUmlnaHQpKTtcblxuICAgICAgbm9kZS53aWR0aCA9IE1hdGguYWJzKHIueCAtIGwueCk7XG4gICAgICBub2RlLmhlaWdodCA9IE1hdGguYWJzKGIueSAtIHQueSk7XG4gICAgICBub2RlLnggPSBsLnggKyBub2RlLndpZHRoIC8gMjtcbiAgICAgIG5vZGUueSA9IHQueSArIG5vZGUuaGVpZ2h0IC8gMjtcbiAgICB9XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoZy5ub2RlKHYpLmR1bW15ID09PSBcImJvcmRlclwiKSB7XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU2VsZkVkZ2VzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIGlmIChlLnYgPT09IGUudykge1xuICAgICAgdmFyIG5vZGUgPSBnLm5vZGUoZS52KTtcbiAgICAgIGlmICghbm9kZS5zZWxmRWRnZXMpIHtcbiAgICAgICAgbm9kZS5zZWxmRWRnZXMgPSBbXTtcbiAgICAgIH1cbiAgICAgIG5vZGUuc2VsZkVkZ2VzLnB1c2goeyBlOiBlLCBsYWJlbDogZy5lZGdlKGUpIH0pO1xuICAgICAgZy5yZW1vdmVFZGdlKGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydFNlbGZFZGdlcyhnKSB7XG4gIHZhciBsYXllcnMgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gIF8uZm9yRWFjaChsYXllcnMsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgdmFyIG9yZGVyU2hpZnQgPSAwO1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odiwgaSkge1xuICAgICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgICBub2RlLm9yZGVyID0gaSArIG9yZGVyU2hpZnQ7XG4gICAgICBfLmZvckVhY2gobm9kZS5zZWxmRWRnZXMsIGZ1bmN0aW9uKHNlbGZFZGdlKSB7XG4gICAgICAgIHV0aWwuYWRkRHVtbXlOb2RlKGcsIFwic2VsZmVkZ2VcIiwge1xuICAgICAgICAgIHdpZHRoOiBzZWxmRWRnZS5sYWJlbC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHNlbGZFZGdlLmxhYmVsLmhlaWdodCxcbiAgICAgICAgICByYW5rOiBub2RlLnJhbmssXG4gICAgICAgICAgb3JkZXI6IGkgKyAoKytvcmRlclNoaWZ0KSxcbiAgICAgICAgICBlOiBzZWxmRWRnZS5lLFxuICAgICAgICAgIGxhYmVsOiBzZWxmRWRnZS5sYWJlbFxuICAgICAgICB9LCBcIl9zZVwiKTtcbiAgICAgIH0pO1xuICAgICAgZGVsZXRlIG5vZGUuc2VsZkVkZ2VzO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb25TZWxmRWRnZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKG5vZGUuZHVtbXkgPT09IFwic2VsZmVkZ2VcIikge1xuICAgICAgdmFyIHNlbGZOb2RlID0gZy5ub2RlKG5vZGUuZS52KTtcbiAgICAgIHZhciB4ID0gc2VsZk5vZGUueCArIHNlbGZOb2RlLndpZHRoIC8gMjtcbiAgICAgIHZhciB5ID0gc2VsZk5vZGUueTtcbiAgICAgIHZhciBkeCA9IG5vZGUueCAtIHg7XG4gICAgICB2YXIgZHkgPSBzZWxmTm9kZS5oZWlnaHQgLyAyO1xuICAgICAgZy5zZXRFZGdlKG5vZGUuZSwgbm9kZS5sYWJlbCk7XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgICBub2RlLmxhYmVsLnBvaW50cyA9IFtcbiAgICAgICAgeyB4OiB4ICsgMiAqIGR4IC8gMywgeTogeSAtIGR5IH0sXG4gICAgICAgIHsgeDogeCArIDUgKiBkeCAvIDYsIHk6IHkgLSBkeSB9LFxuICAgICAgICB7IHg6IHggKyAgICAgZHggICAgLCB5OiB5IH0sXG4gICAgICAgIHsgeDogeCArIDUgKiBkeCAvIDYsIHk6IHkgKyBkeSB9LFxuICAgICAgICB7IHg6IHggKyAyICogZHggLyAzLCB5OiB5ICsgZHkgfVxuICAgICAgXTtcbiAgICAgIG5vZGUubGFiZWwueCA9IG5vZGUueDtcbiAgICAgIG5vZGUubGFiZWwueSA9IG5vZGUueTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZWxlY3ROdW1iZXJBdHRycyhvYmosIGF0dHJzKSB7XG4gIHJldHVybiBfLm1hcFZhbHVlcyhfLnBpY2sob2JqLCBhdHRycyksIE51bWJlcik7XG59XG5cbmZ1bmN0aW9uIGNhbm9uaWNhbGl6ZShhdHRycykge1xuICB2YXIgbmV3QXR0cnMgPSB7fTtcbiAgXy5mb3JFYWNoKGF0dHJzLCBmdW5jdGlvbih2LCBrKSB7XG4gICAgbmV3QXR0cnNbay50b0xvd2VyQ2FzZSgpXSA9IHY7XG4gIH0pO1xuICByZXR1cm4gbmV3QXR0cnM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVidWdPcmRlcmluZzogZGVidWdPcmRlcmluZ1xufTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGRlYnVnT3JkZXJpbmcoZykge1xuICB2YXIgbGF5ZXJNYXRyaXggPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG5cbiAgdmFyIGggPSBuZXcgR3JhcGgoeyBjb21wb3VuZDogdHJ1ZSwgbXVsdGlncmFwaDogdHJ1ZSB9KS5zZXRHcmFwaCh7fSk7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGguc2V0Tm9kZSh2LCB7IGxhYmVsOiB2IH0pO1xuICAgIGguc2V0UGFyZW50KHYsIFwibGF5ZXJcIiArIGcubm9kZSh2KS5yYW5rKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIGguc2V0RWRnZShlLnYsIGUudywge30sIGUubmFtZSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChsYXllck1hdHJpeCwgZnVuY3Rpb24obGF5ZXIsIGkpIHtcbiAgICB2YXIgbGF5ZXJWID0gXCJsYXllclwiICsgaTtcbiAgICBoLnNldE5vZGUobGF5ZXJWLCB7IHJhbms6IFwic2FtZVwiIH0pO1xuICAgIF8ucmVkdWNlKGxheWVyLCBmdW5jdGlvbih1LCB2KSB7XG4gICAgICBoLnNldEVkZ2UodSwgdiwgeyBzdHlsZTogXCJpbnZpc1wiIH0pO1xuICAgICAgcmV0dXJuIHY7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBoO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBcIjAuOC41XCI7XG4iLCIvKlxuQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQ2hyaXMgUGV0dGl0dFxuXG5QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG5vZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG5pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG50byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG5jb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cblRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG5hbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG5GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG5PVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG5USEUgU09GVFdBUkUuXG4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ3JhcGhsaWI6IHJlcXVpcmUoXCIuL2xpYi9ncmFwaGxpYlwiKSxcblxuICBsYXlvdXQ6IHJlcXVpcmUoXCIuL2xpYi9sYXlvdXRcIiksXG4gIGRlYnVnOiByZXF1aXJlKFwiLi9saWIvZGVidWdcIiksXG4gIHV0aWw6IHtcbiAgICB0aW1lOiByZXF1aXJlKFwiLi9saWIvdXRpbFwiKS50aW1lLFxuICAgIG5vdGltZTogcmVxdWlyZShcIi4vbGliL3V0aWxcIikubm90aW1lXG4gIH0sXG4gIHZlcnNpb246IHJlcXVpcmUoXCIuL2xpYi92ZXJzaW9uXCIpXG59O1xuIiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiZGFncmVcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiZGFncmVcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlRGFncmVcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJkYWdyZVwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1wiY3l0b3NjYXBlRGFncmVcIl0gPSBmYWN0b3J5KHJvb3RbXCJkYWdyZVwiXSk7XG59KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX180X18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuLyoqKioqKi8gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7IC8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcblxuXG52YXIgcmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3RlcihjeXRvc2NhcGUpIHtcbiAgaWYgKCFjeXRvc2NhcGUpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cblxuICBjeXRvc2NhcGUoJ2xheW91dCcsICdkYWdyZScsIGltcGwpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pLFxuLyogMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbihvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cbnZhciBkZWZhdWx0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG52YXIgZGFncmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOyAvLyBjb25zdHJ1Y3RvclxuLy8gb3B0aW9ucyA6IG9iamVjdCBjb250YWluaW5nIGxheW91dCBvcHRpb25zXG5cblxuZnVuY3Rpb24gRGFncmVMYXlvdXQob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBhc3NpZ24oe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbn0gLy8gcnVucyB0aGUgbGF5b3V0XG5cblxuRGFncmVMYXlvdXQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gIHZhciBsYXlvdXQgPSB0aGlzO1xuICB2YXIgY3kgPSBvcHRpb25zLmN5OyAvLyBjeSBpcyBhdXRvbWF0aWNhbGx5IHBvcHVsYXRlZCBmb3IgdXMgaW4gdGhlIGNvbnN0cnVjdG9yXG5cbiAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7XG5cbiAgdmFyIGdldFZhbCA9IGZ1bmN0aW9uIGdldFZhbChlbGUsIHZhbCkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKHZhbCkgPyB2YWwuYXBwbHkoZWxlLCBbZWxlXSkgOiB2YWw7XG4gIH07XG5cbiAgdmFyIGJiID0gb3B0aW9ucy5ib3VuZGluZ0JveCB8fCB7XG4gICAgeDE6IDAsXG4gICAgeTE6IDAsXG4gICAgdzogY3kud2lkdGgoKSxcbiAgICBoOiBjeS5oZWlnaHQoKVxuICB9O1xuXG4gIGlmIChiYi54MiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYmIueDIgPSBiYi54MSArIGJiLnc7XG4gIH1cblxuICBpZiAoYmIudyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYmIudyA9IGJiLngyIC0gYmIueDE7XG4gIH1cblxuICBpZiAoYmIueTIgPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLnkyID0gYmIueTEgKyBiYi5oO1xuICB9XG5cbiAgaWYgKGJiLmggPT09IHVuZGVmaW5lZCkge1xuICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICB9XG5cbiAgdmFyIGcgPSBuZXcgZGFncmUuZ3JhcGhsaWIuR3JhcGgoe1xuICAgIG11bHRpZ3JhcGg6IHRydWUsXG4gICAgY29tcG91bmQ6IHRydWVcbiAgfSk7XG4gIHZhciBnT2JqID0ge307XG5cbiAgdmFyIHNldEdPYmogPSBmdW5jdGlvbiBzZXRHT2JqKG5hbWUsIHZhbCkge1xuICAgIGlmICh2YWwgIT0gbnVsbCkge1xuICAgICAgZ09ialtuYW1lXSA9IHZhbDtcbiAgICB9XG4gIH07XG5cbiAgc2V0R09iaignbm9kZXNlcCcsIG9wdGlvbnMubm9kZVNlcCk7XG4gIHNldEdPYmooJ2VkZ2VzZXAnLCBvcHRpb25zLmVkZ2VTZXApO1xuICBzZXRHT2JqKCdyYW5rc2VwJywgb3B0aW9ucy5yYW5rU2VwKTtcbiAgc2V0R09iaigncmFua2RpcicsIG9wdGlvbnMucmFua0Rpcik7XG4gIHNldEdPYmooJ3JhbmtlcicsIG9wdGlvbnMucmFua2VyKTtcbiAgZy5zZXRHcmFwaChnT2JqKTtcbiAgZy5zZXREZWZhdWx0RWRnZUxhYmVsKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge307XG4gIH0pO1xuICBnLnNldERlZmF1bHROb2RlTGFiZWwoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7fTtcbiAgfSk7IC8vIGFkZCBub2RlcyB0byBkYWdyZVxuXG4gIHZhciBub2RlcyA9IGVsZXMubm9kZXMoKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgbmJiID0gbm9kZS5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuICAgIGcuc2V0Tm9kZShub2RlLmlkKCksIHtcbiAgICAgIHdpZHRoOiBuYmIudyxcbiAgICAgIGhlaWdodDogbmJiLmgsXG4gICAgICBuYW1lOiBub2RlLmlkKClcbiAgICB9KTsgLy8gY29uc29sZS5sb2coIGcubm9kZShub2RlLmlkKCkpICk7XG4gIH0gLy8gc2V0IGNvbXBvdW5kIHBhcmVudHNcblxuXG4gIGZvciAodmFyIF9pID0gMDsgX2kgPCBub2Rlcy5sZW5ndGg7IF9pKyspIHtcbiAgICB2YXIgX25vZGUgPSBub2Rlc1tfaV07XG5cbiAgICBpZiAoX25vZGUuaXNDaGlsZCgpKSB7XG4gICAgICBnLnNldFBhcmVudChfbm9kZS5pZCgpLCBfbm9kZS5wYXJlbnQoKS5pZCgpKTtcbiAgICB9XG4gIH0gLy8gYWRkIGVkZ2VzIHRvIGRhZ3JlXG5cblxuICB2YXIgZWRnZXMgPSBlbGVzLmVkZ2VzKCkuc3RkRmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuICFlZGdlLnNvdXJjZSgpLmlzUGFyZW50KCkgJiYgIWVkZ2UudGFyZ2V0KCkuaXNQYXJlbnQoKTsgLy8gZGFncmUgY2FuJ3QgaGFuZGxlIGVkZ2VzIG9uIGNvbXBvdW5kIG5vZGVzXG4gIH0pO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGVkZ2VzLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW19pMl07XG4gICAgZy5zZXRFZGdlKGVkZ2Uuc291cmNlKCkuaWQoKSwgZWRnZS50YXJnZXQoKS5pZCgpLCB7XG4gICAgICBtaW5sZW46IGdldFZhbChlZGdlLCBvcHRpb25zLm1pbkxlbiksXG4gICAgICB3ZWlnaHQ6IGdldFZhbChlZGdlLCBvcHRpb25zLmVkZ2VXZWlnaHQpLFxuICAgICAgbmFtZTogZWRnZS5pZCgpXG4gICAgfSwgZWRnZS5pZCgpKTsgLy8gY29uc29sZS5sb2coIGcuZWRnZShlZGdlLnNvdXJjZSgpLmlkKCksIGVkZ2UudGFyZ2V0KCkuaWQoKSwgZWRnZS5pZCgpKSApO1xuICB9XG5cbiAgZGFncmUubGF5b3V0KGcpO1xuICB2YXIgZ05vZGVJZHMgPSBnLm5vZGVzKCk7XG5cbiAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgZ05vZGVJZHMubGVuZ3RoOyBfaTMrKykge1xuICAgIHZhciBpZCA9IGdOb2RlSWRzW19pM107XG4gICAgdmFyIG4gPSBnLm5vZGUoaWQpO1xuICAgIGN5LmdldEVsZW1lbnRCeUlkKGlkKS5zY3JhdGNoKCkuZGFncmUgPSBuO1xuICB9XG5cbiAgdmFyIGRhZ3JlQkI7XG5cbiAgaWYgKG9wdGlvbnMuYm91bmRpbmdCb3gpIHtcbiAgICBkYWdyZUJCID0ge1xuICAgICAgeDE6IEluZmluaXR5LFxuICAgICAgeDI6IC1JbmZpbml0eSxcbiAgICAgIHkxOiBJbmZpbml0eSxcbiAgICAgIHkyOiAtSW5maW5pdHlcbiAgICB9O1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBkTW9kZWwgPSBub2RlLnNjcmF0Y2goKS5kYWdyZTtcbiAgICAgIGRhZ3JlQkIueDEgPSBNYXRoLm1pbihkYWdyZUJCLngxLCBkTW9kZWwueCk7XG4gICAgICBkYWdyZUJCLngyID0gTWF0aC5tYXgoZGFncmVCQi54MiwgZE1vZGVsLngpO1xuICAgICAgZGFncmVCQi55MSA9IE1hdGgubWluKGRhZ3JlQkIueTEsIGRNb2RlbC55KTtcbiAgICAgIGRhZ3JlQkIueTIgPSBNYXRoLm1heChkYWdyZUJCLnkyLCBkTW9kZWwueSk7XG4gICAgfSk7XG4gICAgZGFncmVCQi53ID0gZGFncmVCQi54MiAtIGRhZ3JlQkIueDE7XG4gICAgZGFncmVCQi5oID0gZGFncmVCQi55MiAtIGRhZ3JlQkIueTE7XG4gIH0gZWxzZSB7XG4gICAgZGFncmVCQiA9IGJiO1xuICB9XG5cbiAgdmFyIGNvbnN0cmFpblBvcyA9IGZ1bmN0aW9uIGNvbnN0cmFpblBvcyhwKSB7XG4gICAgaWYgKG9wdGlvbnMuYm91bmRpbmdCb3gpIHtcbiAgICAgIHZhciB4UGN0ID0gZGFncmVCQi53ID09PSAwID8gMCA6IChwLnggLSBkYWdyZUJCLngxKSAvIGRhZ3JlQkIudztcbiAgICAgIHZhciB5UGN0ID0gZGFncmVCQi5oID09PSAwID8gMCA6IChwLnkgLSBkYWdyZUJCLnkxKSAvIGRhZ3JlQkIuaDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJiLngxICsgeFBjdCAqIGJiLncsXG4gICAgICAgIHk6IGJiLnkxICsgeVBjdCAqIGJiLmhcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwO1xuICAgIH1cbiAgfTtcblxuICBub2Rlcy5sYXlvdXRQb3NpdGlvbnMobGF5b3V0LCBvcHRpb25zLCBmdW5jdGlvbiAoZWxlKSB7XG4gICAgZWxlID0gX3R5cGVvZihlbGUpID09PSBcIm9iamVjdFwiID8gZWxlIDogdGhpcztcbiAgICB2YXIgZE1vZGVsID0gZWxlLnNjcmF0Y2goKS5kYWdyZTtcbiAgICByZXR1cm4gY29uc3RyYWluUG9zKHtcbiAgICAgIHg6IGRNb2RlbC54LFxuICAgICAgeTogZE1vZGVsLnlcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYWdyZUxheW91dDtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgLy8gZGFncmUgYWxnbyBvcHRpb25zLCB1c2VzIGRlZmF1bHQgdmFsdWUgb24gdW5kZWZpbmVkXG4gIG5vZGVTZXA6IHVuZGVmaW5lZCxcbiAgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBub2RlcyBpbiB0aGUgc2FtZSByYW5rXG4gIGVkZ2VTZXA6IHVuZGVmaW5lZCxcbiAgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBlZGdlcyBpbiB0aGUgc2FtZSByYW5rXG4gIHJhbmtTZXA6IHVuZGVmaW5lZCxcbiAgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBub2RlcyBpbiB0aGUgc2FtZSByYW5rXG4gIHJhbmtEaXI6IHVuZGVmaW5lZCxcbiAgLy8gJ1RCJyBmb3IgdG9wIHRvIGJvdHRvbSBmbG93LCAnTFInIGZvciBsZWZ0IHRvIHJpZ2h0LFxuICByYW5rZXI6IHVuZGVmaW5lZCxcbiAgLy8gVHlwZSBvZiBhbGdvcml0aG0gdG8gYXNzaWducyBhIHJhbmsgdG8gZWFjaCBub2RlIGluIHRoZSBpbnB1dCBncmFwaC5cbiAgLy8gUG9zc2libGUgdmFsdWVzOiBuZXR3b3JrLXNpbXBsZXgsIHRpZ2h0LXRyZWUgb3IgbG9uZ2VzdC1wYXRoXG4gIG1pbkxlbjogZnVuY3Rpb24gbWluTGVuKGVkZ2UpIHtcbiAgICByZXR1cm4gMTtcbiAgfSxcbiAgLy8gbnVtYmVyIG9mIHJhbmtzIHRvIGtlZXAgYmV0d2VlbiB0aGUgc291cmNlIGFuZCB0YXJnZXQgb2YgdGhlIGVkZ2VcbiAgZWRnZVdlaWdodDogZnVuY3Rpb24gZWRnZVdlaWdodChlZGdlKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0sXG4gIC8vIGhpZ2hlciB3ZWlnaHQgZWRnZXMgYXJlIGdlbmVyYWxseSBtYWRlIHNob3J0ZXIgYW5kIHN0cmFpZ2h0ZXIgdGhhbiBsb3dlciB3ZWlnaHQgZWRnZXNcbiAgLy8gZ2VuZXJhbCBsYXlvdXQgb3B0aW9uc1xuICBmaXQ6IHRydWUsXG4gIC8vIHdoZXRoZXIgdG8gZml0IHRvIHZpZXdwb3J0XG4gIHBhZGRpbmc6IDMwLFxuICAvLyBmaXQgcGFkZGluZ1xuICBzcGFjaW5nRmFjdG9yOiB1bmRlZmluZWQsXG4gIC8vIEFwcGxpZXMgYSBtdWx0aXBsaWNhdGl2ZSBmYWN0b3IgKD4wKSB0byBleHBhbmQgb3IgY29tcHJlc3MgdGhlIG92ZXJhbGwgYXJlYSB0aGF0IHRoZSBub2RlcyB0YWtlIHVwXG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsXG4gIC8vIHdoZXRoZXIgbGFiZWxzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkZXRlcm1pbmluZyB0aGUgc3BhY2UgdXNlZCBieSBhIG5vZGVcbiAgYW5pbWF0ZTogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIC8vIHdoZXRoZXIgdG8gYW5pbWF0ZSBzcGVjaWZpYyBub2RlcyB3aGVuIGFuaW1hdGlvbiBpcyBvbjsgbm9uLWFuaW1hdGVkIG5vZGVzIGltbWVkaWF0ZWx5IGdvIHRvIHRoZWlyIGZpbmFsIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsXG4gIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3MpIHtcbiAgICByZXR1cm4gcG9zO1xuICB9LFxuICAvLyBhIGZ1bmN0aW9uIHRoYXQgYXBwbGllcyBhIHRyYW5zZm9ybSB0byB0aGUgZmluYWwgbm9kZSBwb3NpdGlvblxuICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7fSxcbiAgLy8gb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9IC8vIG9uIGxheW91dHN0b3BcblxufTtcbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBTaW1wbGUsIGludGVybmFsIE9iamVjdC5hc3NpZ24oKSBwb2x5ZmlsbCBmb3Igb3B0aW9ucyBvYmplY3RzIGV0Yy5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmFzc2lnbiAhPSBudWxsID8gT2JqZWN0LmFzc2lnbi5iaW5kKE9iamVjdCkgOiBmdW5jdGlvbiAodGd0KSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzcmNzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBzcmNzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHNyY3MuZm9yRWFjaChmdW5jdGlvbiAoc3JjKSB7XG4gICAgT2JqZWN0LmtleXMoc3JjKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICByZXR1cm4gdGd0W2tdID0gc3JjW2tdO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHRndDtcbn07XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzRfXztcblxuLyoqKi8gfSlcbi8qKioqKiovIF0pO1xufSk7IiwiLy8gaHR0cHM6Ly9kM2pzLm9yZy9kMy1xdWFkdHJlZS8gdjIuMC4wIENvcHlyaWdodCAyMDIwIE1pa2UgQm9zdG9ja1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbnR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IGZhY3RvcnkoZXhwb3J0cykgOlxudHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0b3J5KSA6XG4oZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIGZhY3RvcnkoZ2xvYmFsLmQzID0gZ2xvYmFsLmQzIHx8IHt9KSk7XG59KHRoaXMsIGZ1bmN0aW9uIChleHBvcnRzKSB7ICd1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gdHJlZV9hZGQoZCkge1xuICBjb25zdCB4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkKSxcbiAgICAgIHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpO1xuICByZXR1cm4gYWRkKHRoaXMuY292ZXIoeCwgeSksIHgsIHksIGQpO1xufVxuXG5mdW5jdGlvbiBhZGQodHJlZSwgeCwgeSwgZCkge1xuICBpZiAoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiB0cmVlOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgcGFyZW50LFxuICAgICAgbm9kZSA9IHRyZWUuX3Jvb3QsXG4gICAgICBsZWFmID0ge2RhdGE6IGR9LFxuICAgICAgeDAgPSB0cmVlLl94MCxcbiAgICAgIHkwID0gdHJlZS5feTAsXG4gICAgICB4MSA9IHRyZWUuX3gxLFxuICAgICAgeTEgPSB0cmVlLl95MSxcbiAgICAgIHhtLFxuICAgICAgeW0sXG4gICAgICB4cCxcbiAgICAgIHlwLFxuICAgICAgcmlnaHQsXG4gICAgICBib3R0b20sXG4gICAgICBpLFxuICAgICAgajtcblxuICAvLyBJZiB0aGUgdHJlZSBpcyBlbXB0eSwgaW5pdGlhbGl6ZSB0aGUgcm9vdCBhcyBhIGxlYWYuXG4gIGlmICghbm9kZSkgcmV0dXJuIHRyZWUuX3Jvb3QgPSBsZWFmLCB0cmVlO1xuXG4gIC8vIEZpbmQgdGhlIGV4aXN0aW5nIGxlYWYgZm9yIHRoZSBuZXcgcG9pbnQsIG9yIGFkZCBpdC5cbiAgd2hpbGUgKG5vZGUubGVuZ3RoKSB7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gICAgaWYgKHBhcmVudCA9IG5vZGUsICEobm9kZSA9IG5vZGVbaSA9IGJvdHRvbSA8PCAxIHwgcmlnaHRdKSkgcmV0dXJuIHBhcmVudFtpXSA9IGxlYWYsIHRyZWU7XG4gIH1cblxuICAvLyBJcyB0aGUgbmV3IHBvaW50IGlzIGV4YWN0bHkgY29pbmNpZGVudCB3aXRoIHRoZSBleGlzdGluZyBwb2ludD9cbiAgeHAgPSArdHJlZS5feC5jYWxsKG51bGwsIG5vZGUuZGF0YSk7XG4gIHlwID0gK3RyZWUuX3kuY2FsbChudWxsLCBub2RlLmRhdGEpO1xuICBpZiAoeCA9PT0geHAgJiYgeSA9PT0geXApIHJldHVybiBsZWFmLm5leHQgPSBub2RlLCBwYXJlbnQgPyBwYXJlbnRbaV0gPSBsZWFmIDogdHJlZS5fcm9vdCA9IGxlYWYsIHRyZWU7XG5cbiAgLy8gT3RoZXJ3aXNlLCBzcGxpdCB0aGUgbGVhZiBub2RlIHVudGlsIHRoZSBvbGQgYW5kIG5ldyBwb2ludCBhcmUgc2VwYXJhdGVkLlxuICBkbyB7XG4gICAgcGFyZW50ID0gcGFyZW50ID8gcGFyZW50W2ldID0gbmV3IEFycmF5KDQpIDogdHJlZS5fcm9vdCA9IG5ldyBBcnJheSg0KTtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgfSB3aGlsZSAoKGkgPSBib3R0b20gPDwgMSB8IHJpZ2h0KSA9PT0gKGogPSAoeXAgPj0geW0pIDw8IDEgfCAoeHAgPj0geG0pKSk7XG4gIHJldHVybiBwYXJlbnRbal0gPSBub2RlLCBwYXJlbnRbaV0gPSBsZWFmLCB0cmVlO1xufVxuXG5mdW5jdGlvbiBhZGRBbGwoZGF0YSkge1xuICB2YXIgZCwgaSwgbiA9IGRhdGEubGVuZ3RoLFxuICAgICAgeCxcbiAgICAgIHksXG4gICAgICB4eiA9IG5ldyBBcnJheShuKSxcbiAgICAgIHl6ID0gbmV3IEFycmF5KG4pLFxuICAgICAgeDAgPSBJbmZpbml0eSxcbiAgICAgIHkwID0gSW5maW5pdHksXG4gICAgICB4MSA9IC1JbmZpbml0eSxcbiAgICAgIHkxID0gLUluZmluaXR5O1xuXG4gIC8vIENvbXB1dGUgdGhlIHBvaW50cyBhbmQgdGhlaXIgZXh0ZW50LlxuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKGlzTmFOKHggPSArdGhpcy5feC5jYWxsKG51bGwsIGQgPSBkYXRhW2ldKSkgfHwgaXNOYU4oeSA9ICt0aGlzLl95LmNhbGwobnVsbCwgZCkpKSBjb250aW51ZTtcbiAgICB4eltpXSA9IHg7XG4gICAgeXpbaV0gPSB5O1xuICAgIGlmICh4IDwgeDApIHgwID0geDtcbiAgICBpZiAoeCA+IHgxKSB4MSA9IHg7XG4gICAgaWYgKHkgPCB5MCkgeTAgPSB5O1xuICAgIGlmICh5ID4geTEpIHkxID0geTtcbiAgfVxuXG4gIC8vIElmIHRoZXJlIHdlcmUgbm8gKHZhbGlkKSBwb2ludHMsIGFib3J0LlxuICBpZiAoeDAgPiB4MSB8fCB5MCA+IHkxKSByZXR1cm4gdGhpcztcblxuICAvLyBFeHBhbmQgdGhlIHRyZWUgdG8gY292ZXIgdGhlIG5ldyBwb2ludHMuXG4gIHRoaXMuY292ZXIoeDAsIHkwKS5jb3Zlcih4MSwgeTEpO1xuXG4gIC8vIEFkZCB0aGUgbmV3IHBvaW50cy5cbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGFkZCh0aGlzLCB4eltpXSwgeXpbaV0sIGRhdGFbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHRyZWVfY292ZXIoeCwgeSkge1xuICBpZiAoaXNOYU4oeCA9ICt4KSB8fCBpc05hTih5ID0gK3kpKSByZXR1cm4gdGhpczsgLy8gaWdub3JlIGludmFsaWQgcG9pbnRzXG5cbiAgdmFyIHgwID0gdGhpcy5feDAsXG4gICAgICB5MCA9IHRoaXMuX3kwLFxuICAgICAgeDEgPSB0aGlzLl94MSxcbiAgICAgIHkxID0gdGhpcy5feTE7XG5cbiAgLy8gSWYgdGhlIHF1YWR0cmVlIGhhcyBubyBleHRlbnQsIGluaXRpYWxpemUgdGhlbS5cbiAgLy8gSW50ZWdlciBleHRlbnQgYXJlIG5lY2Vzc2FyeSBzbyB0aGF0IGlmIHdlIGxhdGVyIGRvdWJsZSB0aGUgZXh0ZW50LFxuICAvLyB0aGUgZXhpc3RpbmcgcXVhZHJhbnQgYm91bmRhcmllcyBkb27igJl0IGNoYW5nZSBkdWUgdG8gZmxvYXRpbmcgcG9pbnQgZXJyb3IhXG4gIGlmIChpc05hTih4MCkpIHtcbiAgICB4MSA9ICh4MCA9IE1hdGguZmxvb3IoeCkpICsgMTtcbiAgICB5MSA9ICh5MCA9IE1hdGguZmxvb3IoeSkpICsgMTtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSwgZG91YmxlIHJlcGVhdGVkbHkgdG8gY292ZXIuXG4gIGVsc2Uge1xuICAgIHZhciB6ID0geDEgLSB4MCB8fCAxLFxuICAgICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgICAgcGFyZW50LFxuICAgICAgICBpO1xuXG4gICAgd2hpbGUgKHgwID4geCB8fCB4ID49IHgxIHx8IHkwID4geSB8fCB5ID49IHkxKSB7XG4gICAgICBpID0gKHkgPCB5MCkgPDwgMSB8ICh4IDwgeDApO1xuICAgICAgcGFyZW50ID0gbmV3IEFycmF5KDQpLCBwYXJlbnRbaV0gPSBub2RlLCBub2RlID0gcGFyZW50LCB6ICo9IDI7XG4gICAgICBzd2l0Y2ggKGkpIHtcbiAgICAgICAgY2FzZSAwOiB4MSA9IHgwICsgeiwgeTEgPSB5MCArIHo7IGJyZWFrO1xuICAgICAgICBjYXNlIDE6IHgwID0geDEgLSB6LCB5MSA9IHkwICsgejsgYnJlYWs7XG4gICAgICAgIGNhc2UgMjogeDEgPSB4MCArIHosIHkwID0geTEgLSB6OyBicmVhaztcbiAgICAgICAgY2FzZSAzOiB4MCA9IHgxIC0geiwgeTAgPSB5MSAtIHo7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9yb290ICYmIHRoaXMuX3Jvb3QubGVuZ3RoKSB0aGlzLl9yb290ID0gbm9kZTtcbiAgfVxuXG4gIHRoaXMuX3gwID0geDA7XG4gIHRoaXMuX3kwID0geTA7XG4gIHRoaXMuX3gxID0geDE7XG4gIHRoaXMuX3kxID0geTE7XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB0cmVlX2RhdGEoKSB7XG4gIHZhciBkYXRhID0gW107XG4gIHRoaXMudmlzaXQoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5sZW5ndGgpIGRvIGRhdGEucHVzaChub2RlLmRhdGEpOyB3aGlsZSAobm9kZSA9IG5vZGUubmV4dClcbiAgfSk7XG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiB0cmVlX2V4dGVudChfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuY292ZXIoK19bMF1bMF0sICtfWzBdWzFdKS5jb3ZlcigrX1sxXVswXSwgK19bMV1bMV0pXG4gICAgICA6IGlzTmFOKHRoaXMuX3gwKSA/IHVuZGVmaW5lZCA6IFtbdGhpcy5feDAsIHRoaXMuX3kwXSwgW3RoaXMuX3gxLCB0aGlzLl95MV1dO1xufVxuXG5mdW5jdGlvbiBRdWFkKG5vZGUsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHRoaXMubm9kZSA9IG5vZGU7XG4gIHRoaXMueDAgPSB4MDtcbiAgdGhpcy55MCA9IHkwO1xuICB0aGlzLngxID0geDE7XG4gIHRoaXMueTEgPSB5MTtcbn1cblxuZnVuY3Rpb24gdHJlZV9maW5kKHgsIHksIHJhZGl1cykge1xuICB2YXIgZGF0YSxcbiAgICAgIHgwID0gdGhpcy5feDAsXG4gICAgICB5MCA9IHRoaXMuX3kwLFxuICAgICAgeDEsXG4gICAgICB5MSxcbiAgICAgIHgyLFxuICAgICAgeTIsXG4gICAgICB4MyA9IHRoaXMuX3gxLFxuICAgICAgeTMgPSB0aGlzLl95MSxcbiAgICAgIHF1YWRzID0gW10sXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIHEsXG4gICAgICBpO1xuXG4gIGlmIChub2RlKSBxdWFkcy5wdXNoKG5ldyBRdWFkKG5vZGUsIHgwLCB5MCwgeDMsIHkzKSk7XG4gIGlmIChyYWRpdXMgPT0gbnVsbCkgcmFkaXVzID0gSW5maW5pdHk7XG4gIGVsc2Uge1xuICAgIHgwID0geCAtIHJhZGl1cywgeTAgPSB5IC0gcmFkaXVzO1xuICAgIHgzID0geCArIHJhZGl1cywgeTMgPSB5ICsgcmFkaXVzO1xuICAgIHJhZGl1cyAqPSByYWRpdXM7XG4gIH1cblxuICB3aGlsZSAocSA9IHF1YWRzLnBvcCgpKSB7XG5cbiAgICAvLyBTdG9wIHNlYXJjaGluZyBpZiB0aGlzIHF1YWRyYW50IGNhbuKAmXQgY29udGFpbiBhIGNsb3NlciBub2RlLlxuICAgIGlmICghKG5vZGUgPSBxLm5vZGUpXG4gICAgICAgIHx8ICh4MSA9IHEueDApID4geDNcbiAgICAgICAgfHwgKHkxID0gcS55MCkgPiB5M1xuICAgICAgICB8fCAoeDIgPSBxLngxKSA8IHgwXG4gICAgICAgIHx8ICh5MiA9IHEueTEpIDwgeTApIGNvbnRpbnVlO1xuXG4gICAgLy8gQmlzZWN0IHRoZSBjdXJyZW50IHF1YWRyYW50LlxuICAgIGlmIChub2RlLmxlbmd0aCkge1xuICAgICAgdmFyIHhtID0gKHgxICsgeDIpIC8gMixcbiAgICAgICAgICB5bSA9ICh5MSArIHkyKSAvIDI7XG5cbiAgICAgIHF1YWRzLnB1c2goXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbM10sIHhtLCB5bSwgeDIsIHkyKSxcbiAgICAgICAgbmV3IFF1YWQobm9kZVsyXSwgeDEsIHltLCB4bSwgeTIpLFxuICAgICAgICBuZXcgUXVhZChub2RlWzFdLCB4bSwgeTEsIHgyLCB5bSksXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbMF0sIHgxLCB5MSwgeG0sIHltKVxuICAgICAgKTtcblxuICAgICAgLy8gVmlzaXQgdGhlIGNsb3Nlc3QgcXVhZHJhbnQgZmlyc3QuXG4gICAgICBpZiAoaSA9ICh5ID49IHltKSA8PCAxIHwgKHggPj0geG0pKSB7XG4gICAgICAgIHEgPSBxdWFkc1txdWFkcy5sZW5ndGggLSAxXTtcbiAgICAgICAgcXVhZHNbcXVhZHMubGVuZ3RoIC0gMV0gPSBxdWFkc1txdWFkcy5sZW5ndGggLSAxIC0gaV07XG4gICAgICAgIHF1YWRzW3F1YWRzLmxlbmd0aCAtIDEgLSBpXSA9IHE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmlzaXQgdGhpcyBwb2ludC4gKFZpc2l0aW5nIGNvaW5jaWRlbnQgcG9pbnRzIGlzbuKAmXQgbmVjZXNzYXJ5ISlcbiAgICBlbHNlIHtcbiAgICAgIHZhciBkeCA9IHggLSArdGhpcy5feC5jYWxsKG51bGwsIG5vZGUuZGF0YSksXG4gICAgICAgICAgZHkgPSB5IC0gK3RoaXMuX3kuY2FsbChudWxsLCBub2RlLmRhdGEpLFxuICAgICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgICBpZiAoZDIgPCByYWRpdXMpIHtcbiAgICAgICAgdmFyIGQgPSBNYXRoLnNxcnQocmFkaXVzID0gZDIpO1xuICAgICAgICB4MCA9IHggLSBkLCB5MCA9IHkgLSBkO1xuICAgICAgICB4MyA9IHggKyBkLCB5MyA9IHkgKyBkO1xuICAgICAgICBkYXRhID0gbm9kZS5kYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiB0cmVlX3JlbW92ZShkKSB7XG4gIGlmIChpc05hTih4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkKSkgfHwgaXNOYU4oeSA9ICt0aGlzLl95LmNhbGwobnVsbCwgZCkpKSByZXR1cm4gdGhpczsgLy8gaWdub3JlIGludmFsaWQgcG9pbnRzXG5cbiAgdmFyIHBhcmVudCxcbiAgICAgIG5vZGUgPSB0aGlzLl9yb290LFxuICAgICAgcmV0YWluZXIsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIG5leHQsXG4gICAgICB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxID0gdGhpcy5feDEsXG4gICAgICB5MSA9IHRoaXMuX3kxLFxuICAgICAgeCxcbiAgICAgIHksXG4gICAgICB4bSxcbiAgICAgIHltLFxuICAgICAgcmlnaHQsXG4gICAgICBib3R0b20sXG4gICAgICBpLFxuICAgICAgajtcblxuICAvLyBJZiB0aGUgdHJlZSBpcyBlbXB0eSwgaW5pdGlhbGl6ZSB0aGUgcm9vdCBhcyBhIGxlYWYuXG4gIGlmICghbm9kZSkgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRmluZCB0aGUgbGVhZiBub2RlIGZvciB0aGUgcG9pbnQuXG4gIC8vIFdoaWxlIGRlc2NlbmRpbmcsIGFsc28gcmV0YWluIHRoZSBkZWVwZXN0IHBhcmVudCB3aXRoIGEgbm9uLXJlbW92ZWQgc2libGluZy5cbiAgaWYgKG5vZGUubGVuZ3RoKSB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChyaWdodCA9IHggPj0gKHhtID0gKHgwICsgeDEpIC8gMikpIHgwID0geG07IGVsc2UgeDEgPSB4bTtcbiAgICBpZiAoYm90dG9tID0geSA+PSAoeW0gPSAoeTAgKyB5MSkgLyAyKSkgeTAgPSB5bTsgZWxzZSB5MSA9IHltO1xuICAgIGlmICghKHBhcmVudCA9IG5vZGUsIG5vZGUgPSBub2RlW2kgPSBib3R0b20gPDwgMSB8IHJpZ2h0XSkpIHJldHVybiB0aGlzO1xuICAgIGlmICghbm9kZS5sZW5ndGgpIGJyZWFrO1xuICAgIGlmIChwYXJlbnRbKGkgKyAxKSAmIDNdIHx8IHBhcmVudFsoaSArIDIpICYgM10gfHwgcGFyZW50WyhpICsgMykgJiAzXSkgcmV0YWluZXIgPSBwYXJlbnQsIGogPSBpO1xuICB9XG5cbiAgLy8gRmluZCB0aGUgcG9pbnQgdG8gcmVtb3ZlLlxuICB3aGlsZSAobm9kZS5kYXRhICE9PSBkKSBpZiAoIShwcmV2aW91cyA9IG5vZGUsIG5vZGUgPSBub2RlLm5leHQpKSByZXR1cm4gdGhpcztcbiAgaWYgKG5leHQgPSBub2RlLm5leHQpIGRlbGV0ZSBub2RlLm5leHQ7XG5cbiAgLy8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvaW5jaWRlbnQgcG9pbnRzLCByZW1vdmUganVzdCB0aGUgcG9pbnQuXG4gIGlmIChwcmV2aW91cykgcmV0dXJuIChuZXh0ID8gcHJldmlvdXMubmV4dCA9IG5leHQgOiBkZWxldGUgcHJldmlvdXMubmV4dCksIHRoaXM7XG5cbiAgLy8gSWYgdGhpcyBpcyB0aGUgcm9vdCBwb2ludCwgcmVtb3ZlIGl0LlxuICBpZiAoIXBhcmVudCkgcmV0dXJuIHRoaXMuX3Jvb3QgPSBuZXh0LCB0aGlzO1xuXG4gIC8vIFJlbW92ZSB0aGlzIGxlYWYuXG4gIG5leHQgPyBwYXJlbnRbaV0gPSBuZXh0IDogZGVsZXRlIHBhcmVudFtpXTtcblxuICAvLyBJZiB0aGUgcGFyZW50IG5vdyBjb250YWlucyBleGFjdGx5IG9uZSBsZWFmLCBjb2xsYXBzZSBzdXBlcmZsdW91cyBwYXJlbnRzLlxuICBpZiAoKG5vZGUgPSBwYXJlbnRbMF0gfHwgcGFyZW50WzFdIHx8IHBhcmVudFsyXSB8fCBwYXJlbnRbM10pXG4gICAgICAmJiBub2RlID09PSAocGFyZW50WzNdIHx8IHBhcmVudFsyXSB8fCBwYXJlbnRbMV0gfHwgcGFyZW50WzBdKVxuICAgICAgJiYgIW5vZGUubGVuZ3RoKSB7XG4gICAgaWYgKHJldGFpbmVyKSByZXRhaW5lcltqXSA9IG5vZGU7XG4gICAgZWxzZSB0aGlzLl9yb290ID0gbm9kZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiByZW1vdmVBbGwoZGF0YSkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGRhdGEubGVuZ3RoOyBpIDwgbjsgKytpKSB0aGlzLnJlbW92ZShkYXRhW2ldKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHRyZWVfcm9vdCgpIHtcbiAgcmV0dXJuIHRoaXMuX3Jvb3Q7XG59XG5cbmZ1bmN0aW9uIHRyZWVfc2l6ZSgpIHtcbiAgdmFyIHNpemUgPSAwO1xuICB0aGlzLnZpc2l0KGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBkbyArK3NpemU7IHdoaWxlIChub2RlID0gbm9kZS5uZXh0KVxuICB9KTtcbiAgcmV0dXJuIHNpemU7XG59XG5cbmZ1bmN0aW9uIHRyZWVfdmlzaXQoY2FsbGJhY2spIHtcbiAgdmFyIHF1YWRzID0gW10sIHEsIG5vZGUgPSB0aGlzLl9yb290LCBjaGlsZCwgeDAsIHkwLCB4MSwgeTE7XG4gIGlmIChub2RlKSBxdWFkcy5wdXNoKG5ldyBRdWFkKG5vZGUsIHRoaXMuX3gwLCB0aGlzLl95MCwgdGhpcy5feDEsIHRoaXMuX3kxKSk7XG4gIHdoaWxlIChxID0gcXVhZHMucG9wKCkpIHtcbiAgICBpZiAoIWNhbGxiYWNrKG5vZGUgPSBxLm5vZGUsIHgwID0gcS54MCwgeTAgPSBxLnkwLCB4MSA9IHEueDEsIHkxID0gcS55MSkgJiYgbm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MCArIHgxKSAvIDIsIHltID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbM10pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5bSwgeDEsIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzJdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeW0sIHhtLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsxXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHkwLCB4MSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMF0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5MCwgeG0sIHltKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB0cmVlX3Zpc2l0QWZ0ZXIoY2FsbGJhY2spIHtcbiAgdmFyIHF1YWRzID0gW10sIG5leHQgPSBbXSwgcTtcbiAgaWYgKHRoaXMuX3Jvb3QpIHF1YWRzLnB1c2gobmV3IFF1YWQodGhpcy5fcm9vdCwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpKTtcbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuICAgIHZhciBub2RlID0gcS5ub2RlO1xuICAgIGlmIChub2RlLmxlbmd0aCkge1xuICAgICAgdmFyIGNoaWxkLCB4MCA9IHEueDAsIHkwID0gcS55MCwgeDEgPSBxLngxLCB5MSA9IHEueTEsIHhtID0gKHgwICsgeDEpIC8gMiwgeW0gPSAoeTAgKyB5MSkgLyAyO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVswXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeDAsIHkwLCB4bSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMV0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5MCwgeDEsIHltKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzJdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeW0sIHhtLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVszXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHltLCB4MSwgeTEpKTtcbiAgICB9XG4gICAgbmV4dC5wdXNoKHEpO1xuICB9XG4gIHdoaWxlIChxID0gbmV4dC5wb3AoKSkge1xuICAgIGNhbGxiYWNrKHEubm9kZSwgcS54MCwgcS55MCwgcS54MSwgcS55MSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRYKGQpIHtcbiAgcmV0dXJuIGRbMF07XG59XG5cbmZ1bmN0aW9uIHRyZWVfeChfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3ggPSBfLCB0aGlzKSA6IHRoaXMuX3g7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRZKGQpIHtcbiAgcmV0dXJuIGRbMV07XG59XG5cbmZ1bmN0aW9uIHRyZWVfeShfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3kgPSBfLCB0aGlzKSA6IHRoaXMuX3k7XG59XG5cbmZ1bmN0aW9uIHF1YWR0cmVlKG5vZGVzLCB4LCB5KSB7XG4gIHZhciB0cmVlID0gbmV3IFF1YWR0cmVlKHggPT0gbnVsbCA/IGRlZmF1bHRYIDogeCwgeSA9PSBudWxsID8gZGVmYXVsdFkgOiB5LCBOYU4sIE5hTiwgTmFOLCBOYU4pO1xuICByZXR1cm4gbm9kZXMgPT0gbnVsbCA/IHRyZWUgOiB0cmVlLmFkZEFsbChub2Rlcyk7XG59XG5cbmZ1bmN0aW9uIFF1YWR0cmVlKHgsIHksIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHRoaXMuX3ggPSB4O1xuICB0aGlzLl95ID0geTtcbiAgdGhpcy5feDAgPSB4MDtcbiAgdGhpcy5feTAgPSB5MDtcbiAgdGhpcy5feDEgPSB4MTtcbiAgdGhpcy5feTEgPSB5MTtcbiAgdGhpcy5fcm9vdCA9IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbGVhZl9jb3B5KGxlYWYpIHtcbiAgdmFyIGNvcHkgPSB7ZGF0YTogbGVhZi5kYXRhfSwgbmV4dCA9IGNvcHk7XG4gIHdoaWxlIChsZWFmID0gbGVhZi5uZXh0KSBuZXh0ID0gbmV4dC5uZXh0ID0ge2RhdGE6IGxlYWYuZGF0YX07XG4gIHJldHVybiBjb3B5O1xufVxuXG52YXIgdHJlZVByb3RvID0gcXVhZHRyZWUucHJvdG90eXBlID0gUXVhZHRyZWUucHJvdG90eXBlO1xuXG50cmVlUHJvdG8uY29weSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgY29weSA9IG5ldyBRdWFkdHJlZSh0aGlzLl94LCB0aGlzLl95LCB0aGlzLl94MCwgdGhpcy5feTAsIHRoaXMuX3gxLCB0aGlzLl95MSksXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIG5vZGVzLFxuICAgICAgY2hpbGQ7XG5cbiAgaWYgKCFub2RlKSByZXR1cm4gY29weTtcblxuICBpZiAoIW5vZGUubGVuZ3RoKSByZXR1cm4gY29weS5fcm9vdCA9IGxlYWZfY29weShub2RlKSwgY29weTtcblxuICBub2RlcyA9IFt7c291cmNlOiBub2RlLCB0YXJnZXQ6IGNvcHkuX3Jvb3QgPSBuZXcgQXJyYXkoNCl9XTtcbiAgd2hpbGUgKG5vZGUgPSBub2Rlcy5wb3AoKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlLnNvdXJjZVtpXSkge1xuICAgICAgICBpZiAoY2hpbGQubGVuZ3RoKSBub2Rlcy5wdXNoKHtzb3VyY2U6IGNoaWxkLCB0YXJnZXQ6IG5vZGUudGFyZ2V0W2ldID0gbmV3IEFycmF5KDQpfSk7XG4gICAgICAgIGVsc2Ugbm9kZS50YXJnZXRbaV0gPSBsZWFmX2NvcHkoY2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb3B5O1xufTtcblxudHJlZVByb3RvLmFkZCA9IHRyZWVfYWRkO1xudHJlZVByb3RvLmFkZEFsbCA9IGFkZEFsbDtcbnRyZWVQcm90by5jb3ZlciA9IHRyZWVfY292ZXI7XG50cmVlUHJvdG8uZGF0YSA9IHRyZWVfZGF0YTtcbnRyZWVQcm90by5leHRlbnQgPSB0cmVlX2V4dGVudDtcbnRyZWVQcm90by5maW5kID0gdHJlZV9maW5kO1xudHJlZVByb3RvLnJlbW92ZSA9IHRyZWVfcmVtb3ZlO1xudHJlZVByb3RvLnJlbW92ZUFsbCA9IHJlbW92ZUFsbDtcbnRyZWVQcm90by5yb290ID0gdHJlZV9yb290O1xudHJlZVByb3RvLnNpemUgPSB0cmVlX3NpemU7XG50cmVlUHJvdG8udmlzaXQgPSB0cmVlX3Zpc2l0O1xudHJlZVByb3RvLnZpc2l0QWZ0ZXIgPSB0cmVlX3Zpc2l0QWZ0ZXI7XG50cmVlUHJvdG8ueCA9IHRyZWVfeDtcbnRyZWVQcm90by55ID0gdHJlZV95O1xuXG5leHBvcnRzLnF1YWR0cmVlID0gcXVhZHRyZWU7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbn0pKTtcbiIsIi8vIGh0dHBzOi8vZDNqcy5vcmcvZDMtZGlzcGF0Y2gvIHYyLjAuMCBDb3B5cmlnaHQgMjAyMCBNaWtlIEJvc3RvY2tcbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG50eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBmYWN0b3J5KGV4cG9ydHMpIDpcbnR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSkgOlxuKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBmYWN0b3J5KGdsb2JhbC5kMyA9IGdsb2JhbC5kMyB8fCB7fSkpO1xufSh0aGlzLCBmdW5jdGlvbiAoZXhwb3J0cykgeyAndXNlIHN0cmljdCc7XG5cbnZhciBub29wID0ge3ZhbHVlOiAoKSA9PiB7fX07XG5cbmZ1bmN0aW9uIGRpc3BhdGNoKCkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGFyZ3VtZW50cy5sZW5ndGgsIF8gPSB7fSwgdDsgaSA8IG47ICsraSkge1xuICAgIGlmICghKHQgPSBhcmd1bWVudHNbaV0gKyBcIlwiKSB8fCAodCBpbiBfKSB8fCAvW1xccy5dLy50ZXN0KHQpKSB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIHR5cGU6IFwiICsgdCk7XG4gICAgX1t0XSA9IFtdO1xuICB9XG4gIHJldHVybiBuZXcgRGlzcGF0Y2goXyk7XG59XG5cbmZ1bmN0aW9uIERpc3BhdGNoKF8pIHtcbiAgdGhpcy5fID0gXztcbn1cblxuZnVuY3Rpb24gcGFyc2VUeXBlbmFtZXModHlwZW5hbWVzLCB0eXBlcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgaWYgKHQgJiYgIXR5cGVzLmhhc093blByb3BlcnR5KHQpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdCk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbkRpc3BhdGNoLnByb3RvdHlwZSA9IGRpc3BhdGNoLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IERpc3BhdGNoLFxuICBvbjogZnVuY3Rpb24odHlwZW5hbWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIF8gPSB0aGlzLl8sXG4gICAgICAgIFQgPSBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZSArIFwiXCIsIF8pLFxuICAgICAgICB0LFxuICAgICAgICBpID0gLTEsXG4gICAgICAgIG4gPSBULmxlbmd0aDtcblxuICAgIC8vIElmIG5vIGNhbGxiYWNrIHdhcyBzcGVjaWZpZWQsIHJldHVybiB0aGUgY2FsbGJhY2sgb2YgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICB3aGlsZSAoKytpIDwgbikgaWYgKCh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgJiYgKHQgPSBnZXQoX1t0XSwgdHlwZW5hbWUubmFtZSkpKSByZXR1cm4gdDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBhIHR5cGUgd2FzIHNwZWNpZmllZCwgc2V0IHRoZSBjYWxsYmFjayBmb3IgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgLy8gT3RoZXJ3aXNlLCBpZiBhIG51bGwgY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgcmVtb3ZlIGNhbGxiYWNrcyBvZiB0aGUgZ2l2ZW4gbmFtZS5cbiAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCAmJiB0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjYWxsYmFjazogXCIgKyBjYWxsYmFjayk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIGlmICh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBjYWxsYmFjayk7XG4gICAgICBlbHNlIGlmIChjYWxsYmFjayA9PSBudWxsKSBmb3IgKHQgaW4gXykgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgY29weTogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNvcHkgPSB7fSwgXyA9IHRoaXMuXztcbiAgICBmb3IgKHZhciB0IGluIF8pIGNvcHlbdF0gPSBfW3RdLnNsaWNlKCk7XG4gICAgcmV0dXJuIG5ldyBEaXNwYXRjaChjb3B5KTtcbiAgfSxcbiAgY2FsbDogZnVuY3Rpb24odHlwZSwgdGhhdCkge1xuICAgIGlmICgobiA9IGFyZ3VtZW50cy5sZW5ndGggLSAyKSA+IDApIGZvciAodmFyIGFyZ3MgPSBuZXcgQXJyYXkobiksIGkgPSAwLCBuLCB0OyBpIDwgbjsgKytpKSBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodCA9IHRoaXMuX1t0eXBlXSwgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgdFtpXS52YWx1ZS5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uKHR5cGUsIHRoYXQsIGFyZ3MpIHtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodmFyIHQgPSB0aGlzLl9bdHlwZV0sIGkgPSAwLCBuID0gdC5sZW5ndGg7IGkgPCBuOyArK2kpIHRbaV0udmFsdWUuYXBwbHkodGhhdCwgYXJncyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldCh0eXBlLCBuYW1lKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGgsIGM7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoKGMgPSB0eXBlW2ldKS5uYW1lID09PSBuYW1lKSB7XG4gICAgICByZXR1cm4gYy52YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0KHR5cGUsIG5hbWUsIGNhbGxiYWNrKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAodHlwZVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICB0eXBlW2ldID0gbm9vcCwgdHlwZSA9IHR5cGUuc2xpY2UoMCwgaSkuY29uY2F0KHR5cGUuc2xpY2UoaSArIDEpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkgdHlwZS5wdXNoKHtuYW1lOiBuYW1lLCB2YWx1ZTogY2FsbGJhY2t9KTtcbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydHMuZGlzcGF0Y2ggPSBkaXNwYXRjaDtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxufSkpO1xuIiwiLy8gaHR0cHM6Ly9kM2pzLm9yZy9kMy10aW1lci8gdjIuMC4wIENvcHlyaWdodCAyMDIwIE1pa2UgQm9zdG9ja1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbnR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IGZhY3RvcnkoZXhwb3J0cykgOlxudHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0b3J5KSA6XG4oZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIGZhY3RvcnkoZ2xvYmFsLmQzID0gZ2xvYmFsLmQzIHx8IHt9KSk7XG59KHRoaXMsIGZ1bmN0aW9uIChleHBvcnRzKSB7ICd1c2Ugc3RyaWN0JztcblxudmFyIGZyYW1lID0gMCwgLy8gaXMgYW4gYW5pbWF0aW9uIGZyYW1lIHBlbmRpbmc/XG4gICAgdGltZW91dCA9IDAsIC8vIGlzIGEgdGltZW91dCBwZW5kaW5nP1xuICAgIGludGVydmFsID0gMCwgLy8gYXJlIGFueSB0aW1lcnMgYWN0aXZlP1xuICAgIHBva2VEZWxheSA9IDEwMDAsIC8vIGhvdyBmcmVxdWVudGx5IHdlIGNoZWNrIGZvciBjbG9jayBza2V3XG4gICAgdGFza0hlYWQsXG4gICAgdGFza1RhaWwsXG4gICAgY2xvY2tMYXN0ID0gMCxcbiAgICBjbG9ja05vdyA9IDAsXG4gICAgY2xvY2tTa2V3ID0gMCxcbiAgICBjbG9jayA9IHR5cGVvZiBwZXJmb3JtYW5jZSA9PT0gXCJvYmplY3RcIiAmJiBwZXJmb3JtYW5jZS5ub3cgPyBwZXJmb3JtYW5jZSA6IERhdGUsXG4gICAgc2V0RnJhbWUgPSB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KSA6IGZ1bmN0aW9uKGYpIHsgc2V0VGltZW91dChmLCAxNyk7IH07XG5cbmZ1bmN0aW9uIG5vdygpIHtcbiAgcmV0dXJuIGNsb2NrTm93IHx8IChzZXRGcmFtZShjbGVhck5vdyksIGNsb2NrTm93ID0gY2xvY2subm93KCkgKyBjbG9ja1NrZXcpO1xufVxuXG5mdW5jdGlvbiBjbGVhck5vdygpIHtcbiAgY2xvY2tOb3cgPSAwO1xufVxuXG5mdW5jdGlvbiBUaW1lcigpIHtcbiAgdGhpcy5fY2FsbCA9XG4gIHRoaXMuX3RpbWUgPVxuICB0aGlzLl9uZXh0ID0gbnVsbDtcbn1cblxuVGltZXIucHJvdG90eXBlID0gdGltZXIucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVGltZXIsXG4gIHJlc3RhcnQ6IGZ1bmN0aW9uKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgIHRpbWUgPSAodGltZSA9PSBudWxsID8gbm93KCkgOiArdGltZSkgKyAoZGVsYXkgPT0gbnVsbCA/IDAgOiArZGVsYXkpO1xuICAgIGlmICghdGhpcy5fbmV4dCAmJiB0YXNrVGFpbCAhPT0gdGhpcykge1xuICAgICAgaWYgKHRhc2tUYWlsKSB0YXNrVGFpbC5fbmV4dCA9IHRoaXM7XG4gICAgICBlbHNlIHRhc2tIZWFkID0gdGhpcztcbiAgICAgIHRhc2tUYWlsID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5fY2FsbCA9IGNhbGxiYWNrO1xuICAgIHRoaXMuX3RpbWUgPSB0aW1lO1xuICAgIHNsZWVwKCk7XG4gIH0sXG4gIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9jYWxsKSB7XG4gICAgICB0aGlzLl9jYWxsID0gbnVsbDtcbiAgICAgIHRoaXMuX3RpbWUgPSBJbmZpbml0eTtcbiAgICAgIHNsZWVwKCk7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiB0aW1lcihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgdmFyIHQgPSBuZXcgVGltZXI7XG4gIHQucmVzdGFydChjYWxsYmFjaywgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gdGltZXJGbHVzaCgpIHtcbiAgbm93KCk7IC8vIEdldCB0aGUgY3VycmVudCB0aW1lLCBpZiBub3QgYWxyZWFkeSBzZXQuXG4gICsrZnJhbWU7IC8vIFByZXRlbmQgd2XigJl2ZSBzZXQgYW4gYWxhcm0sIGlmIHdlIGhhdmVu4oCZdCBhbHJlYWR5LlxuICB2YXIgdCA9IHRhc2tIZWFkLCBlO1xuICB3aGlsZSAodCkge1xuICAgIGlmICgoZSA9IGNsb2NrTm93IC0gdC5fdGltZSkgPj0gMCkgdC5fY2FsbC5jYWxsKG51bGwsIGUpO1xuICAgIHQgPSB0Ll9uZXh0O1xuICB9XG4gIC0tZnJhbWU7XG59XG5cbmZ1bmN0aW9uIHdha2UoKSB7XG4gIGNsb2NrTm93ID0gKGNsb2NrTGFzdCA9IGNsb2NrLm5vdygpKSArIGNsb2NrU2tldztcbiAgZnJhbWUgPSB0aW1lb3V0ID0gMDtcbiAgdHJ5IHtcbiAgICB0aW1lckZsdXNoKCk7XG4gIH0gZmluYWxseSB7XG4gICAgZnJhbWUgPSAwO1xuICAgIG5hcCgpO1xuICAgIGNsb2NrTm93ID0gMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBwb2tlKCkge1xuICB2YXIgbm93ID0gY2xvY2subm93KCksIGRlbGF5ID0gbm93IC0gY2xvY2tMYXN0O1xuICBpZiAoZGVsYXkgPiBwb2tlRGVsYXkpIGNsb2NrU2tldyAtPSBkZWxheSwgY2xvY2tMYXN0ID0gbm93O1xufVxuXG5mdW5jdGlvbiBuYXAoKSB7XG4gIHZhciB0MCwgdDEgPSB0YXNrSGVhZCwgdDIsIHRpbWUgPSBJbmZpbml0eTtcbiAgd2hpbGUgKHQxKSB7XG4gICAgaWYgKHQxLl9jYWxsKSB7XG4gICAgICBpZiAodGltZSA+IHQxLl90aW1lKSB0aW1lID0gdDEuX3RpbWU7XG4gICAgICB0MCA9IHQxLCB0MSA9IHQxLl9uZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0MiA9IHQxLl9uZXh0LCB0MS5fbmV4dCA9IG51bGw7XG4gICAgICB0MSA9IHQwID8gdDAuX25leHQgPSB0MiA6IHRhc2tIZWFkID0gdDI7XG4gICAgfVxuICB9XG4gIHRhc2tUYWlsID0gdDA7XG4gIHNsZWVwKHRpbWUpO1xufVxuXG5mdW5jdGlvbiBzbGVlcCh0aW1lKSB7XG4gIGlmIChmcmFtZSkgcmV0dXJuOyAvLyBTb29uZXN0IGFsYXJtIGFscmVhZHkgc2V0LCBvciB3aWxsIGJlLlxuICBpZiAodGltZW91dCkgdGltZW91dCA9IGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgdmFyIGRlbGF5ID0gdGltZSAtIGNsb2NrTm93OyAvLyBTdHJpY3RseSBsZXNzIHRoYW4gaWYgd2UgcmVjb21wdXRlZCBjbG9ja05vdy5cbiAgaWYgKGRlbGF5ID4gMjQpIHtcbiAgICBpZiAodGltZSA8IEluZmluaXR5KSB0aW1lb3V0ID0gc2V0VGltZW91dCh3YWtlLCB0aW1lIC0gY2xvY2subm93KCkgLSBjbG9ja1NrZXcpO1xuICAgIGlmIChpbnRlcnZhbCkgaW50ZXJ2YWwgPSBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWludGVydmFsKSBjbG9ja0xhc3QgPSBjbG9jay5ub3coKSwgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChwb2tlLCBwb2tlRGVsYXkpO1xuICAgIGZyYW1lID0gMSwgc2V0RnJhbWUod2FrZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdGltZW91dCQxKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICB2YXIgdCA9IG5ldyBUaW1lcjtcbiAgZGVsYXkgPSBkZWxheSA9PSBudWxsID8gMCA6ICtkZWxheTtcbiAgdC5yZXN0YXJ0KGVsYXBzZWQgPT4ge1xuICAgIHQuc3RvcCgpO1xuICAgIGNhbGxiYWNrKGVsYXBzZWQgKyBkZWxheSk7XG4gIH0sIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG5cbmZ1bmN0aW9uIGludGVydmFsJDEoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyLCB0b3RhbCA9IGRlbGF5O1xuICBpZiAoZGVsYXkgPT0gbnVsbCkgcmV0dXJuIHQucmVzdGFydChjYWxsYmFjaywgZGVsYXksIHRpbWUpLCB0O1xuICB0Ll9yZXN0YXJ0ID0gdC5yZXN0YXJ0O1xuICB0LnJlc3RhcnQgPSBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgICBkZWxheSA9ICtkZWxheSwgdGltZSA9IHRpbWUgPT0gbnVsbCA/IG5vdygpIDogK3RpbWU7XG4gICAgdC5fcmVzdGFydChmdW5jdGlvbiB0aWNrKGVsYXBzZWQpIHtcbiAgICAgIGVsYXBzZWQgKz0gdG90YWw7XG4gICAgICB0Ll9yZXN0YXJ0KHRpY2ssIHRvdGFsICs9IGRlbGF5LCB0aW1lKTtcbiAgICAgIGNhbGxiYWNrKGVsYXBzZWQpO1xuICAgIH0sIGRlbGF5LCB0aW1lKTtcbiAgfTtcbiAgdC5yZXN0YXJ0KGNhbGxiYWNrLCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnRzLmludGVydmFsID0gaW50ZXJ2YWwkMTtcbmV4cG9ydHMubm93ID0gbm93O1xuZXhwb3J0cy50aW1lb3V0ID0gdGltZW91dCQxO1xuZXhwb3J0cy50aW1lciA9IHRpbWVyO1xuZXhwb3J0cy50aW1lckZsdXNoID0gdGltZXJGbHVzaDtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxufSkpO1xuIiwiLy8gaHR0cHM6Ly9kM2pzLm9yZy9kMy1mb3JjZS8gdjIuMS4xIENvcHlyaWdodCAyMDIwIE1pa2UgQm9zdG9ja1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbnR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IGZhY3RvcnkoZXhwb3J0cywgcmVxdWlyZSgnZDMtcXVhZHRyZWUnKSwgcmVxdWlyZSgnZDMtZGlzcGF0Y2gnKSwgcmVxdWlyZSgnZDMtdGltZXInKSkgOlxudHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnZXhwb3J0cycsICdkMy1xdWFkdHJlZScsICdkMy1kaXNwYXRjaCcsICdkMy10aW1lciddLCBmYWN0b3J5KSA6XG4oZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIGZhY3RvcnkoZ2xvYmFsLmQzID0gZ2xvYmFsLmQzIHx8IHt9LCBnbG9iYWwuZDMsIGdsb2JhbC5kMywgZ2xvYmFsLmQzKSk7XG59KHRoaXMsIGZ1bmN0aW9uIChleHBvcnRzLCBkM1F1YWR0cmVlLCBkM0Rpc3BhdGNoLCBkM1RpbWVyKSB7ICd1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gY2VudGVyKHgsIHkpIHtcbiAgdmFyIG5vZGVzLCBzdHJlbmd0aCA9IDE7XG5cbiAgaWYgKHggPT0gbnVsbCkgeCA9IDA7XG4gIGlmICh5ID09IG51bGwpIHkgPSAwO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKCkge1xuICAgIHZhciBpLFxuICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBub2RlLFxuICAgICAgICBzeCA9IDAsXG4gICAgICAgIHN5ID0gMDtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tpXSwgc3ggKz0gbm9kZS54LCBzeSArPSBub2RlLnk7XG4gICAgfVxuXG4gICAgZm9yIChzeCA9IChzeCAvIG4gLSB4KSAqIHN0cmVuZ3RoLCBzeSA9IChzeSAvIG4gLSB5KSAqIHN0cmVuZ3RoLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLnggLT0gc3gsIG5vZGUueSAtPSBzeTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXztcbiAgfTtcblxuICBmb3JjZS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSArXywgZm9yY2UpIDogeDtcbiAgfTtcblxuICBmb3JjZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSArXywgZm9yY2UpIDogeTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9ICtfLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG5cbmZ1bmN0aW9uIGNvbnN0YW50KHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuXG5mdW5jdGlvbiBqaWdnbGUocmFuZG9tKSB7XG4gIHJldHVybiAocmFuZG9tKCkgLSAwLjUpICogMWUtNjtcbn1cblxuZnVuY3Rpb24geChkKSB7XG4gIHJldHVybiBkLnggKyBkLnZ4O1xufVxuXG5mdW5jdGlvbiB5KGQpIHtcbiAgcmV0dXJuIGQueSArIGQudnk7XG59XG5cbmZ1bmN0aW9uIGNvbGxpZGUocmFkaXVzKSB7XG4gIHZhciBub2RlcyxcbiAgICAgIHJhZGlpLFxuICAgICAgcmFuZG9tLFxuICAgICAgc3RyZW5ndGggPSAxLFxuICAgICAgaXRlcmF0aW9ucyA9IDE7XG5cbiAgaWYgKHR5cGVvZiByYWRpdXMgIT09IFwiZnVuY3Rpb25cIikgcmFkaXVzID0gY29uc3RhbnQocmFkaXVzID09IG51bGwgPyAxIDogK3JhZGl1cyk7XG5cbiAgZnVuY3Rpb24gZm9yY2UoKSB7XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIHRyZWUsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIHhpLFxuICAgICAgICB5aSxcbiAgICAgICAgcmksXG4gICAgICAgIHJpMjtcblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaXRlcmF0aW9uczsgKytrKSB7XG4gICAgICB0cmVlID0gZDNRdWFkdHJlZS5xdWFkdHJlZShub2RlcywgeCwgeSkudmlzaXRBZnRlcihwcmVwYXJlKTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICByaSA9IHJhZGlpW25vZGUuaW5kZXhdLCByaTIgPSByaSAqIHJpO1xuICAgICAgICB4aSA9IG5vZGUueCArIG5vZGUudng7XG4gICAgICAgIHlpID0gbm9kZS55ICsgbm9kZS52eTtcbiAgICAgICAgdHJlZS52aXNpdChhcHBseSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHkocXVhZCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgICAgIHZhciBkYXRhID0gcXVhZC5kYXRhLCByaiA9IHF1YWQuciwgciA9IHJpICsgcmo7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YS5pbmRleCA+IG5vZGUuaW5kZXgpIHtcbiAgICAgICAgICB2YXIgeCA9IHhpIC0gZGF0YS54IC0gZGF0YS52eCxcbiAgICAgICAgICAgICAgeSA9IHlpIC0gZGF0YS55IC0gZGF0YS52eSxcbiAgICAgICAgICAgICAgbCA9IHggKiB4ICsgeSAqIHk7XG4gICAgICAgICAgaWYgKGwgPCByICogcikge1xuICAgICAgICAgICAgaWYgKHggPT09IDApIHggPSBqaWdnbGUocmFuZG9tKSwgbCArPSB4ICogeDtcbiAgICAgICAgICAgIGlmICh5ID09PSAwKSB5ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geSAqIHk7XG4gICAgICAgICAgICBsID0gKHIgLSAobCA9IE1hdGguc3FydChsKSkpIC8gbCAqIHN0cmVuZ3RoO1xuICAgICAgICAgICAgbm9kZS52eCArPSAoeCAqPSBsKSAqIChyID0gKHJqICo9IHJqKSAvIChyaTIgKyByaikpO1xuICAgICAgICAgICAgbm9kZS52eSArPSAoeSAqPSBsKSAqIHI7XG4gICAgICAgICAgICBkYXRhLnZ4IC09IHggKiAociA9IDEgLSByKTtcbiAgICAgICAgICAgIGRhdGEudnkgLT0geSAqIHI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB4MCA+IHhpICsgciB8fCB4MSA8IHhpIC0gciB8fCB5MCA+IHlpICsgciB8fCB5MSA8IHlpIC0gcjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwcmVwYXJlKHF1YWQpIHtcbiAgICBpZiAocXVhZC5kYXRhKSByZXR1cm4gcXVhZC5yID0gcmFkaWlbcXVhZC5kYXRhLmluZGV4XTtcbiAgICBmb3IgKHZhciBpID0gcXVhZC5yID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgaWYgKHF1YWRbaV0gJiYgcXVhZFtpXS5yID4gcXVhZC5yKSB7XG4gICAgICAgIHF1YWQuciA9IHF1YWRbaV0ucjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTtcbiAgICByYWRpaSA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBub2RlID0gbm9kZXNbaV0sIHJhZGlpW25vZGUuaW5kZXhdID0gK3JhZGl1cyhub2RlLCBpLCBub2Rlcyk7XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oX25vZGVzLCBfcmFuZG9tKSB7XG4gICAgbm9kZXMgPSBfbm9kZXM7XG4gICAgcmFuZG9tID0gX3JhbmRvbTtcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2UuaXRlcmF0aW9ucyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpdGVyYXRpb25zID0gK18sIGZvcmNlKSA6IGl0ZXJhdGlvbnM7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSArXywgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UucmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHJhZGl1cztcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG5cbmZ1bmN0aW9uIGluZGV4KGQpIHtcbiAgcmV0dXJuIGQuaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGZpbmQobm9kZUJ5SWQsIG5vZGVJZCkge1xuICB2YXIgbm9kZSA9IG5vZGVCeUlkLmdldChub2RlSWQpO1xuICBpZiAoIW5vZGUpIHRocm93IG5ldyBFcnJvcihcIm5vZGUgbm90IGZvdW5kOiBcIiArIG5vZGVJZCk7XG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiBsaW5rKGxpbmtzKSB7XG4gIHZhciBpZCA9IGluZGV4LFxuICAgICAgc3RyZW5ndGggPSBkZWZhdWx0U3RyZW5ndGgsXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICBkaXN0YW5jZSA9IGNvbnN0YW50KDMwKSxcbiAgICAgIGRpc3RhbmNlcyxcbiAgICAgIG5vZGVzLFxuICAgICAgY291bnQsXG4gICAgICBiaWFzLFxuICAgICAgcmFuZG9tLFxuICAgICAgaXRlcmF0aW9ucyA9IDE7XG5cbiAgaWYgKGxpbmtzID09IG51bGwpIGxpbmtzID0gW107XG5cbiAgZnVuY3Rpb24gZGVmYXVsdFN0cmVuZ3RoKGxpbmspIHtcbiAgICByZXR1cm4gMSAvIE1hdGgubWluKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSwgY291bnRbbGluay50YXJnZXQuaW5kZXhdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcmNlKGFscGhhKSB7XG4gICAgZm9yICh2YXIgayA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGsgPCBpdGVyYXRpb25zOyArK2spIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsaW5rLCBzb3VyY2UsIHRhcmdldCwgeCwgeSwgbCwgYjsgaSA8IG47ICsraSkge1xuICAgICAgICBsaW5rID0gbGlua3NbaV0sIHNvdXJjZSA9IGxpbmsuc291cmNlLCB0YXJnZXQgPSBsaW5rLnRhcmdldDtcbiAgICAgICAgeCA9IHRhcmdldC54ICsgdGFyZ2V0LnZ4IC0gc291cmNlLnggLSBzb3VyY2UudnggfHwgamlnZ2xlKHJhbmRvbSk7XG4gICAgICAgIHkgPSB0YXJnZXQueSArIHRhcmdldC52eSAtIHNvdXJjZS55IC0gc291cmNlLnZ5IHx8IGppZ2dsZShyYW5kb20pO1xuICAgICAgICBsID0gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkpO1xuICAgICAgICBsID0gKGwgLSBkaXN0YW5jZXNbaV0pIC8gbCAqIGFscGhhICogc3RyZW5ndGhzW2ldO1xuICAgICAgICB4ICo9IGwsIHkgKj0gbDtcbiAgICAgICAgdGFyZ2V0LnZ4IC09IHggKiAoYiA9IGJpYXNbaV0pO1xuICAgICAgICB0YXJnZXQudnkgLT0geSAqIGI7XG4gICAgICAgIHNvdXJjZS52eCArPSB4ICogKGIgPSAxIC0gYik7XG4gICAgICAgIHNvdXJjZS52eSArPSB5ICogYjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcblxuICAgIHZhciBpLFxuICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBtID0gbGlua3MubGVuZ3RoLFxuICAgICAgICBub2RlQnlJZCA9IG5ldyBNYXAobm9kZXMubWFwKChkLCBpKSA9PiBbaWQoZCwgaSwgbm9kZXMpLCBkXSkpLFxuICAgICAgICBsaW5rO1xuXG4gICAgZm9yIChpID0gMCwgY291bnQgPSBuZXcgQXJyYXkobik7IGkgPCBtOyArK2kpIHtcbiAgICAgIGxpbmsgPSBsaW5rc1tpXSwgbGluay5pbmRleCA9IGk7XG4gICAgICBpZiAodHlwZW9mIGxpbmsuc291cmNlICE9PSBcIm9iamVjdFwiKSBsaW5rLnNvdXJjZSA9IGZpbmQobm9kZUJ5SWQsIGxpbmsuc291cmNlKTtcbiAgICAgIGlmICh0eXBlb2YgbGluay50YXJnZXQgIT09IFwib2JqZWN0XCIpIGxpbmsudGFyZ2V0ID0gZmluZChub2RlQnlJZCwgbGluay50YXJnZXQpO1xuICAgICAgY291bnRbbGluay5zb3VyY2UuaW5kZXhdID0gKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSB8fCAwKSArIDE7XG4gICAgICBjb3VudFtsaW5rLnRhcmdldC5pbmRleF0gPSAoY291bnRbbGluay50YXJnZXQuaW5kZXhdIHx8IDApICsgMTtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwLCBiaWFzID0gbmV3IEFycmF5KG0pOyBpIDwgbTsgKytpKSB7XG4gICAgICBsaW5rID0gbGlua3NbaV0sIGJpYXNbaV0gPSBjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0gLyAoY291bnRbbGluay5zb3VyY2UuaW5kZXhdICsgY291bnRbbGluay50YXJnZXQuaW5kZXhdKTtcbiAgICB9XG5cbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobSksIGluaXRpYWxpemVTdHJlbmd0aCgpO1xuICAgIGRpc3RhbmNlcyA9IG5ldyBBcnJheShtKSwgaW5pdGlhbGl6ZURpc3RhbmNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplU3RyZW5ndGgoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHN0cmVuZ3Roc1tpXSA9ICtzdHJlbmd0aChsaW5rc1tpXSwgaSwgbGlua3MpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVEaXN0YW5jZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IGxpbmtzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgZGlzdGFuY2VzW2ldID0gK2Rpc3RhbmNlKGxpbmtzW2ldLCBpLCBsaW5rcyk7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF9ub2RlcywgX3JhbmRvbSkge1xuICAgIG5vZGVzID0gX25vZGVzO1xuICAgIHJhbmRvbSA9IF9yYW5kb207XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLmxpbmtzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGxpbmtzID0gXywgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBsaW5rcztcbiAgfTtcblxuICBmb3JjZS5pZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpZCA9IF8sIGZvcmNlKSA6IGlkO1xuICB9O1xuXG4gIGZvcmNlLml0ZXJhdGlvbnMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaXRlcmF0aW9ucyA9ICtfLCBmb3JjZSkgOiBpdGVyYXRpb25zO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemVTdHJlbmd0aCgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5kaXN0YW5jZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkaXN0YW5jZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplRGlzdGFuY2UoKSwgZm9yY2UpIDogZGlzdGFuY2U7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5lYXJfY29uZ3J1ZW50aWFsX2dlbmVyYXRvciNQYXJhbWV0ZXJzX2luX2NvbW1vbl91c2VcbmNvbnN0IGEgPSAxNjY0NTI1O1xuY29uc3QgYyA9IDEwMTM5MDQyMjM7XG5jb25zdCBtID0gNDI5NDk2NzI5NjsgLy8gMl4zMlxuXG5mdW5jdGlvbiBsY2coKSB7XG4gIGxldCBzID0gMTtcbiAgcmV0dXJuICgpID0+IChzID0gKGEgKiBzICsgYykgJSBtKSAvIG07XG59XG5cbmZ1bmN0aW9uIHgkMShkKSB7XG4gIHJldHVybiBkLng7XG59XG5cbmZ1bmN0aW9uIHkkMShkKSB7XG4gIHJldHVybiBkLnk7XG59XG5cbnZhciBpbml0aWFsUmFkaXVzID0gMTAsXG4gICAgaW5pdGlhbEFuZ2xlID0gTWF0aC5QSSAqICgzIC0gTWF0aC5zcXJ0KDUpKTtcblxuZnVuY3Rpb24gc2ltdWxhdGlvbihub2Rlcykge1xuICB2YXIgc2ltdWxhdGlvbixcbiAgICAgIGFscGhhID0gMSxcbiAgICAgIGFscGhhTWluID0gMC4wMDEsXG4gICAgICBhbHBoYURlY2F5ID0gMSAtIE1hdGgucG93KGFscGhhTWluLCAxIC8gMzAwKSxcbiAgICAgIGFscGhhVGFyZ2V0ID0gMCxcbiAgICAgIHZlbG9jaXR5RGVjYXkgPSAwLjYsXG4gICAgICBmb3JjZXMgPSBuZXcgTWFwKCksXG4gICAgICBzdGVwcGVyID0gZDNUaW1lci50aW1lcihzdGVwKSxcbiAgICAgIGV2ZW50ID0gZDNEaXNwYXRjaC5kaXNwYXRjaChcInRpY2tcIiwgXCJlbmRcIiksXG4gICAgICByYW5kb20gPSBsY2coKTtcblxuICBpZiAobm9kZXMgPT0gbnVsbCkgbm9kZXMgPSBbXTtcblxuICBmdW5jdGlvbiBzdGVwKCkge1xuICAgIHRpY2soKTtcbiAgICBldmVudC5jYWxsKFwidGlja1wiLCBzaW11bGF0aW9uKTtcbiAgICBpZiAoYWxwaGEgPCBhbHBoYU1pbikge1xuICAgICAgc3RlcHBlci5zdG9wKCk7XG4gICAgICBldmVudC5jYWxsKFwiZW5kXCIsIHNpbXVsYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRpY2soaXRlcmF0aW9ucykge1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlO1xuXG4gICAgaWYgKGl0ZXJhdGlvbnMgPT09IHVuZGVmaW5lZCkgaXRlcmF0aW9ucyA9IDE7XG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IGl0ZXJhdGlvbnM7ICsraykge1xuICAgICAgYWxwaGEgKz0gKGFscGhhVGFyZ2V0IC0gYWxwaGEpICogYWxwaGFEZWNheTtcblxuICAgICAgZm9yY2VzLmZvckVhY2goZnVuY3Rpb24oZm9yY2UpIHtcbiAgICAgICAgZm9yY2UoYWxwaGEpO1xuICAgICAgfSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBpZiAobm9kZS5meCA9PSBudWxsKSBub2RlLnggKz0gbm9kZS52eCAqPSB2ZWxvY2l0eURlY2F5O1xuICAgICAgICBlbHNlIG5vZGUueCA9IG5vZGUuZngsIG5vZGUudnggPSAwO1xuICAgICAgICBpZiAobm9kZS5meSA9PSBudWxsKSBub2RlLnkgKz0gbm9kZS52eSAqPSB2ZWxvY2l0eURlY2F5O1xuICAgICAgICBlbHNlIG5vZGUueSA9IG5vZGUuZnksIG5vZGUudnkgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzaW11bGF0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZU5vZGVzKCkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUuaW5kZXggPSBpO1xuICAgICAgaWYgKG5vZGUuZnggIT0gbnVsbCkgbm9kZS54ID0gbm9kZS5meDtcbiAgICAgIGlmIChub2RlLmZ5ICE9IG51bGwpIG5vZGUueSA9IG5vZGUuZnk7XG4gICAgICBpZiAoaXNOYU4obm9kZS54KSB8fCBpc05hTihub2RlLnkpKSB7XG4gICAgICAgIHZhciByYWRpdXMgPSBpbml0aWFsUmFkaXVzICogTWF0aC5zcXJ0KDAuNSArIGkpLCBhbmdsZSA9IGkgKiBpbml0aWFsQW5nbGU7XG4gICAgICAgIG5vZGUueCA9IHJhZGl1cyAqIE1hdGguY29zKGFuZ2xlKTtcbiAgICAgICAgbm9kZS55ID0gcmFkaXVzICogTWF0aC5zaW4oYW5nbGUpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTmFOKG5vZGUudngpIHx8IGlzTmFOKG5vZGUudnkpKSB7XG4gICAgICAgIG5vZGUudnggPSBub2RlLnZ5ID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplRm9yY2UoZm9yY2UpIHtcbiAgICBpZiAoZm9yY2UuaW5pdGlhbGl6ZSkgZm9yY2UuaW5pdGlhbGl6ZShub2RlcywgcmFuZG9tKTtcbiAgICByZXR1cm4gZm9yY2U7XG4gIH1cblxuICBpbml0aWFsaXplTm9kZXMoKTtcblxuICByZXR1cm4gc2ltdWxhdGlvbiA9IHtcbiAgICB0aWNrOiB0aWNrLFxuXG4gICAgcmVzdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gc3RlcHBlci5yZXN0YXJ0KHN0ZXApLCBzaW11bGF0aW9uO1xuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBzdGVwcGVyLnN0b3AoKSwgc2ltdWxhdGlvbjtcbiAgICB9LFxuXG4gICAgbm9kZXM6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVzID0gXywgaW5pdGlhbGl6ZU5vZGVzKCksIGZvcmNlcy5mb3JFYWNoKGluaXRpYWxpemVGb3JjZSksIHNpbXVsYXRpb24pIDogbm9kZXM7XG4gICAgfSxcblxuICAgIGFscGhhOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChhbHBoYSA9ICtfLCBzaW11bGF0aW9uKSA6IGFscGhhO1xuICAgIH0sXG5cbiAgICBhbHBoYU1pbjogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGFNaW4gPSArXywgc2ltdWxhdGlvbikgOiBhbHBoYU1pbjtcbiAgICB9LFxuXG4gICAgYWxwaGFEZWNheTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGFEZWNheSA9ICtfLCBzaW11bGF0aW9uKSA6ICthbHBoYURlY2F5O1xuICAgIH0sXG5cbiAgICBhbHBoYVRhcmdldDogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGFUYXJnZXQgPSArXywgc2ltdWxhdGlvbikgOiBhbHBoYVRhcmdldDtcbiAgICB9LFxuXG4gICAgdmVsb2NpdHlEZWNheTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodmVsb2NpdHlEZWNheSA9IDEgLSBfLCBzaW11bGF0aW9uKSA6IDEgLSB2ZWxvY2l0eURlY2F5O1xuICAgIH0sXG5cbiAgICByYW5kb21Tb3VyY2U6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhbmRvbSA9IF8sIGZvcmNlcy5mb3JFYWNoKGluaXRpYWxpemVGb3JjZSksIHNpbXVsYXRpb24pIDogcmFuZG9tO1xuICAgIH0sXG5cbiAgICBmb3JjZTogZnVuY3Rpb24obmFtZSwgXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gKChfID09IG51bGwgPyBmb3JjZXMuZGVsZXRlKG5hbWUpIDogZm9yY2VzLnNldChuYW1lLCBpbml0aWFsaXplRm9yY2UoXykpKSwgc2ltdWxhdGlvbikgOiBmb3JjZXMuZ2V0KG5hbWUpO1xuICAgIH0sXG5cbiAgICBmaW5kOiBmdW5jdGlvbih4LCB5LCByYWRpdXMpIHtcbiAgICAgIHZhciBpID0gMCxcbiAgICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICAgIGR4LFxuICAgICAgICAgIGR5LFxuICAgICAgICAgIGQyLFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgY2xvc2VzdDtcblxuICAgICAgaWYgKHJhZGl1cyA9PSBudWxsKSByYWRpdXMgPSBJbmZpbml0eTtcbiAgICAgIGVsc2UgcmFkaXVzICo9IHJhZGl1cztcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIGR4ID0geCAtIG5vZGUueDtcbiAgICAgICAgZHkgPSB5IC0gbm9kZS55O1xuICAgICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgICAgICBpZiAoZDIgPCByYWRpdXMpIGNsb3Nlc3QgPSBub2RlLCByYWRpdXMgPSBkMjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb3Nlc3Q7XG4gICAgfSxcblxuICAgIG9uOiBmdW5jdGlvbihuYW1lLCBfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyAoZXZlbnQub24obmFtZSwgXyksIHNpbXVsYXRpb24pIDogZXZlbnQub24obmFtZSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBtYW55Qm9keSgpIHtcbiAgdmFyIG5vZGVzLFxuICAgICAgbm9kZSxcbiAgICAgIHJhbmRvbSxcbiAgICAgIGFscGhhLFxuICAgICAgc3RyZW5ndGggPSBjb25zdGFudCgtMzApLFxuICAgICAgc3RyZW5ndGhzLFxuICAgICAgZGlzdGFuY2VNaW4yID0gMSxcbiAgICAgIGRpc3RhbmNlTWF4MiA9IEluZmluaXR5LFxuICAgICAgdGhldGEyID0gMC44MTtcblxuICBmdW5jdGlvbiBmb3JjZShfKSB7XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsIHRyZWUgPSBkM1F1YWR0cmVlLnF1YWR0cmVlKG5vZGVzLCB4JDEsIHkkMSkudmlzaXRBZnRlcihhY2N1bXVsYXRlKTtcbiAgICBmb3IgKGFscGhhID0gXywgaSA9IDA7IGkgPCBuOyArK2kpIG5vZGUgPSBub2Rlc1tpXSwgdHJlZS52aXNpdChhcHBseSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTtcbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgbm9kZSA9IG5vZGVzW2ldLCBzdHJlbmd0aHNbbm9kZS5pbmRleF0gPSArc3RyZW5ndGgobm9kZSwgaSwgbm9kZXMpO1xuICB9XG5cbiAgZnVuY3Rpb24gYWNjdW11bGF0ZShxdWFkKSB7XG4gICAgdmFyIHN0cmVuZ3RoID0gMCwgcSwgYywgd2VpZ2h0ID0gMCwgeCwgeSwgaTtcblxuICAgIC8vIEZvciBpbnRlcm5hbCBub2RlcywgYWNjdW11bGF0ZSBmb3JjZXMgZnJvbSBjaGlsZCBxdWFkcmFudHMuXG4gICAgaWYgKHF1YWQubGVuZ3RoKSB7XG4gICAgICBmb3IgKHggPSB5ID0gaSA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICAgICAgaWYgKChxID0gcXVhZFtpXSkgJiYgKGMgPSBNYXRoLmFicyhxLnZhbHVlKSkpIHtcbiAgICAgICAgICBzdHJlbmd0aCArPSBxLnZhbHVlLCB3ZWlnaHQgKz0gYywgeCArPSBjICogcS54LCB5ICs9IGMgKiBxLnk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1YWQueCA9IHggLyB3ZWlnaHQ7XG4gICAgICBxdWFkLnkgPSB5IC8gd2VpZ2h0O1xuICAgIH1cblxuICAgIC8vIEZvciBsZWFmIG5vZGVzLCBhY2N1bXVsYXRlIGZvcmNlcyBmcm9tIGNvaW5jaWRlbnQgcXVhZHJhbnRzLlxuICAgIGVsc2Uge1xuICAgICAgcSA9IHF1YWQ7XG4gICAgICBxLnggPSBxLmRhdGEueDtcbiAgICAgIHEueSA9IHEuZGF0YS55O1xuICAgICAgZG8gc3RyZW5ndGggKz0gc3RyZW5ndGhzW3EuZGF0YS5pbmRleF07XG4gICAgICB3aGlsZSAocSA9IHEubmV4dCk7XG4gICAgfVxuXG4gICAgcXVhZC52YWx1ZSA9IHN0cmVuZ3RoO1xuICB9XG5cbiAgZnVuY3Rpb24gYXBwbHkocXVhZCwgeDEsIF8sIHgyKSB7XG4gICAgaWYgKCFxdWFkLnZhbHVlKSByZXR1cm4gdHJ1ZTtcblxuICAgIHZhciB4ID0gcXVhZC54IC0gbm9kZS54LFxuICAgICAgICB5ID0gcXVhZC55IC0gbm9kZS55LFxuICAgICAgICB3ID0geDIgLSB4MSxcbiAgICAgICAgbCA9IHggKiB4ICsgeSAqIHk7XG5cbiAgICAvLyBBcHBseSB0aGUgQmFybmVzLUh1dCBhcHByb3hpbWF0aW9uIGlmIHBvc3NpYmxlLlxuICAgIC8vIExpbWl0IGZvcmNlcyBmb3IgdmVyeSBjbG9zZSBub2RlczsgcmFuZG9taXplIGRpcmVjdGlvbiBpZiBjb2luY2lkZW50LlxuICAgIGlmICh3ICogdyAvIHRoZXRhMiA8IGwpIHtcbiAgICAgIGlmIChsIDwgZGlzdGFuY2VNYXgyKSB7XG4gICAgICAgIGlmICh4ID09PSAwKSB4ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geCAqIHg7XG4gICAgICAgIGlmICh5ID09PSAwKSB5ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geSAqIHk7XG4gICAgICAgIGlmIChsIDwgZGlzdGFuY2VNaW4yKSBsID0gTWF0aC5zcXJ0KGRpc3RhbmNlTWluMiAqIGwpO1xuICAgICAgICBub2RlLnZ4ICs9IHggKiBxdWFkLnZhbHVlICogYWxwaGEgLyBsO1xuICAgICAgICBub2RlLnZ5ICs9IHkgKiBxdWFkLnZhbHVlICogYWxwaGEgLyBsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCBwcm9jZXNzIHBvaW50cyBkaXJlY3RseS5cbiAgICBlbHNlIGlmIChxdWFkLmxlbmd0aCB8fCBsID49IGRpc3RhbmNlTWF4MikgcmV0dXJuO1xuXG4gICAgLy8gTGltaXQgZm9yY2VzIGZvciB2ZXJ5IGNsb3NlIG5vZGVzOyByYW5kb21pemUgZGlyZWN0aW9uIGlmIGNvaW5jaWRlbnQuXG4gICAgaWYgKHF1YWQuZGF0YSAhPT0gbm9kZSB8fCBxdWFkLm5leHQpIHtcbiAgICAgIGlmICh4ID09PSAwKSB4ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geCAqIHg7XG4gICAgICBpZiAoeSA9PT0gMCkgeSA9IGppZ2dsZShyYW5kb20pLCBsICs9IHkgKiB5O1xuICAgICAgaWYgKGwgPCBkaXN0YW5jZU1pbjIpIGwgPSBNYXRoLnNxcnQoZGlzdGFuY2VNaW4yICogbCk7XG4gICAgfVxuXG4gICAgZG8gaWYgKHF1YWQuZGF0YSAhPT0gbm9kZSkge1xuICAgICAgdyA9IHN0cmVuZ3Roc1txdWFkLmRhdGEuaW5kZXhdICogYWxwaGEgLyBsO1xuICAgICAgbm9kZS52eCArPSB4ICogdztcbiAgICAgIG5vZGUudnkgKz0geSAqIHc7XG4gICAgfSB3aGlsZSAocXVhZCA9IHF1YWQubmV4dCk7XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oX25vZGVzLCBfcmFuZG9tKSB7XG4gICAgbm9kZXMgPSBfbm9kZXM7XG4gICAgcmFuZG9tID0gX3JhbmRvbTtcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5kaXN0YW5jZU1pbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkaXN0YW5jZU1pbjIgPSBfICogXywgZm9yY2UpIDogTWF0aC5zcXJ0KGRpc3RhbmNlTWluMik7XG4gIH07XG5cbiAgZm9yY2UuZGlzdGFuY2VNYXggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGlzdGFuY2VNYXgyID0gXyAqIF8sIGZvcmNlKSA6IE1hdGguc3FydChkaXN0YW5jZU1heDIpO1xuICB9O1xuXG4gIGZvcmNlLnRoZXRhID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoZXRhMiA9IF8gKiBfLCBmb3JjZSkgOiBNYXRoLnNxcnQodGhldGEyKTtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG5cbmZ1bmN0aW9uIHJhZGlhbChyYWRpdXMsIHgsIHkpIHtcbiAgdmFyIG5vZGVzLFxuICAgICAgc3RyZW5ndGggPSBjb25zdGFudCgwLjEpLFxuICAgICAgc3RyZW5ndGhzLFxuICAgICAgcmFkaXVzZXM7XG5cbiAgaWYgKHR5cGVvZiByYWRpdXMgIT09IFwiZnVuY3Rpb25cIikgcmFkaXVzID0gY29uc3RhbnQoK3JhZGl1cyk7XG4gIGlmICh4ID09IG51bGwpIHggPSAwO1xuICBpZiAoeSA9PSBudWxsKSB5ID0gMDtcblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldLFxuICAgICAgICAgIGR4ID0gbm9kZS54IC0geCB8fCAxZS02LFxuICAgICAgICAgIGR5ID0gbm9kZS55IC0geSB8fCAxZS02LFxuICAgICAgICAgIHIgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpLFxuICAgICAgICAgIGsgPSAocmFkaXVzZXNbaV0gLSByKSAqIHN0cmVuZ3Roc1tpXSAqIGFscGhhIC8gcjtcbiAgICAgIG5vZGUudnggKz0gZHggKiBrO1xuICAgICAgbm9kZS52eSArPSBkeSAqIGs7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGg7XG4gICAgc3RyZW5ndGhzID0gbmV3IEFycmF5KG4pO1xuICAgIHJhZGl1c2VzID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHJhZGl1c2VzW2ldID0gK3JhZGl1cyhub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgICAgc3RyZW5ndGhzW2ldID0gaXNOYU4ocmFkaXVzZXNbaV0pID8gMCA6ICtzdHJlbmd0aChub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfLCBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5yYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFkaXVzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogcmFkaXVzO1xuICB9O1xuXG4gIGZvcmNlLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9ICtfLCBmb3JjZSkgOiB4O1xuICB9O1xuXG4gIGZvcmNlLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9ICtfLCBmb3JjZSkgOiB5O1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cblxuZnVuY3Rpb24geCQyKHgpIHtcbiAgdmFyIHN0cmVuZ3RoID0gY29uc3RhbnQoMC4xKSxcbiAgICAgIG5vZGVzLFxuICAgICAgc3RyZW5ndGhzLFxuICAgICAgeHo7XG5cbiAgaWYgKHR5cGVvZiB4ICE9PSBcImZ1bmN0aW9uXCIpIHggPSBjb25zdGFudCh4ID09IG51bGwgPyAwIDogK3gpO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKGFscGhhKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGU7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tpXSwgbm9kZS52eCArPSAoeHpbaV0gLSBub2RlLngpICogc3RyZW5ndGhzW2ldICogYWxwaGE7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGg7XG4gICAgc3RyZW5ndGhzID0gbmV3IEFycmF5KG4pO1xuICAgIHh6ID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHN0cmVuZ3Roc1tpXSA9IGlzTmFOKHh6W2ldID0gK3gobm9kZXNbaV0sIGksIG5vZGVzKSkgPyAwIDogK3N0cmVuZ3RoKG5vZGVzW2ldLCBpLCBub2Rlcyk7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICBub2RlcyA9IF87XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UueCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogeDtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG5cbmZ1bmN0aW9uIHkkMih5KSB7XG4gIHZhciBzdHJlbmd0aCA9IGNvbnN0YW50KDAuMSksXG4gICAgICBub2RlcyxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIHl6O1xuXG4gIGlmICh0eXBlb2YgeSAhPT0gXCJmdW5jdGlvblwiKSB5ID0gY29uc3RhbnQoeSA9PSBudWxsID8gMCA6ICt5KTtcblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUudnkgKz0gKHl6W2ldIC0gbm9kZS55KSAqIHN0cmVuZ3Roc1tpXSAqIGFscGhhO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICB5eiA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBzdHJlbmd0aHNbaV0gPSBpc05hTih5eltpXSA9ICt5KG5vZGVzW2ldLCBpLCBub2RlcykpID8gMCA6ICtzdHJlbmd0aChub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHk7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuXG5leHBvcnRzLmZvcmNlQ2VudGVyID0gY2VudGVyO1xuZXhwb3J0cy5mb3JjZUNvbGxpZGUgPSBjb2xsaWRlO1xuZXhwb3J0cy5mb3JjZUxpbmsgPSBsaW5rO1xuZXhwb3J0cy5mb3JjZU1hbnlCb2R5ID0gbWFueUJvZHk7XG5leHBvcnRzLmZvcmNlUmFkaWFsID0gcmFkaWFsO1xuZXhwb3J0cy5mb3JjZVNpbXVsYXRpb24gPSBzaW11bGF0aW9uO1xuZXhwb3J0cy5mb3JjZVggPSB4JDI7XG5leHBvcnRzLmZvcmNlWSA9IHkkMjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxufSkpO1xuIiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiZDMtZm9yY2VcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiZDMtZm9yY2VcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlRDNGb3JjZVwiXSA9IGZhY3RvcnkocmVxdWlyZShcImQzLWZvcmNlXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJjeXRvc2NhcGVEM0ZvcmNlXCJdID0gZmFjdG9yeShyb290W1wiZDMtZm9yY2VcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV80X18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAzKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuLyoqXG4qIGN5dG9zY2FwZS1kMy1mb3JjZVxuKi9cblxudmFyIGRlZmF1bHRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbnZhciBkMyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxudmFyIENvbnRpbnVvdXNMYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENvbnRpbnVvdXNMYXlvdXQob3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb250aW51b3VzTGF5b3V0KTtcblxuICAgIHZhciBvID0gdGhpcy5vcHRpb25zID0gYXNzaWduKHt9LCBkZWZhdWx0cywgb3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZSA9IGFzc2lnbih7fSwgbywge1xuICAgICAgbGF5b3V0OiB0aGlzLFxuICAgICAgbm9kZXM6IG8uZWxlcy5ub2RlcygpLFxuICAgICAgZWRnZXM6IG8uZWxlcy5lZGdlcygpLFxuICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICBpdGVyYXRpb25zOiAwLFxuICAgICAgc3RhcnRUaW1lOiAwXG4gICAgfSk7XG4gICAgdGhpcy5zaW11bGF0aW9uID0gbnVsbDtcbiAgICB0aGlzLnJlbW92ZUN5dG9zY2FwZUV2ZW50cyA9IG51bGw7XG4gICAgdGhpcy5kZXN0cm95ZWRFdmVudCA9IG51bGw7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ29udGludW91c0xheW91dCwgW3tcbiAgICBrZXk6ICdtYWtlQm91bmRpbmdCb3gnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtYWtlQm91bmRpbmdCb3goYmIsIGN5KSB7XG4gICAgICBpZiAoYmIgPT0gbnVsbCkge1xuICAgICAgICBiYiA9IHsgeDE6IDAsIHkxOiAwLCB3OiBjeS53aWR0aCgpLCBoOiBjeS5oZWlnaHQoKSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmIgPSB7IHgxOiBiYi54MSwgeDI6IGJiLngyLCB5MTogYmIueTEsIHkyOiBiYi55MiwgdzogYmIudywgaDogYmIuaCB9O1xuICAgICAgfVxuICAgICAgaWYgKGJiLngyID09IG51bGwpIHtcbiAgICAgICAgYmIueDIgPSBiYi54MSArIGJiLnc7XG4gICAgICB9XG4gICAgICBpZiAoYmIudyA9PSBudWxsKSB7XG4gICAgICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICAgICAgfVxuICAgICAgaWYgKGJiLnkyID09IG51bGwpIHtcbiAgICAgICAgYmIueTIgPSBiYi55MSArIGJiLmg7XG4gICAgICB9XG4gICAgICBpZiAoYmIuaCA9PSBudWxsKSB7XG4gICAgICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYmI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0SW5pdGlhbFBvc2l0aW9uU3RhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRJbml0aWFsUG9zaXRpb25TdGF0ZShub2RlLCBzdGF0ZSkge1xuICAgICAgdmFyIHAgPSBub2RlLnBvc2l0aW9uKCk7XG4gICAgICB2YXIgYmIgPSBzdGF0ZS5jdXJyZW50Qm91bmRpbmdCb3g7XG4gICAgICB2YXIgc2NyYXRjaCA9IG5vZGUuc2NyYXRjaChzdGF0ZS5uYW1lKTtcblxuICAgICAgaWYgKHNjcmF0Y2ggPT0gbnVsbCkge1xuICAgICAgICBzY3JhdGNoID0ge307XG5cbiAgICAgICAgbm9kZS5zY3JhdGNoKHN0YXRlLm5hbWUsIHNjcmF0Y2gpO1xuICAgICAgfVxuXG4gICAgICBhc3NpZ24oc2NyYXRjaCwgc3RhdGUucmFuZG9taXplID8ge1xuICAgICAgICB4OiBiYi54MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLncpLFxuICAgICAgICB5OiBiYi55MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLmgpXG4gICAgICB9IDoge1xuICAgICAgICB4OiBwLngsXG4gICAgICAgIHk6IHAueVxuICAgICAgfSk7XG4gICAgICBpZiAobm9kZS5sb2NrZWQoKSkge1xuICAgICAgICBhc3NpZ24oc2NyYXRjaCwge1xuICAgICAgICAgIGZ4OiBwLngsXG4gICAgICAgICAgZnk6IHAueVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZWZyZXNoUG9zaXRpb25zJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVmcmVzaFBvc2l0aW9ucyhub2Rlcywgc3RhdGUsIGZpdCkge1xuICAgICAgbm9kZXMucG9zaXRpb25zKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBzY3JhdGNoID0gbm9kZS5zY3JhdGNoKHN0YXRlLm5hbWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IHNjcmF0Y2gueCxcbiAgICAgICAgICB5OiBzY3JhdGNoLnlcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgZml0ICYmIHN0YXRlLmN5LmZpdChzdGF0ZS5wYWRkaW5nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRTY3JhdGNoJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2NyYXRjaChlbCkge1xuICAgICAgdmFyIG5hbWUgPSB0aGlzLnN0YXRlLm5hbWU7XG4gICAgICB2YXIgc2NyYXRjaCA9IGVsLnNjcmF0Y2gobmFtZSk7XG5cbiAgICAgIGlmICghc2NyYXRjaCkge1xuICAgICAgICBzY3JhdGNoID0ge307XG5cbiAgICAgICAgZWwuc2NyYXRjaChuYW1lLCBzY3JhdGNoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzY3JhdGNoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3VuZ3JhYmlmeScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuZ3JhYmlmeShub2Rlcykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKCF0aGlzLnN0YXRlLnVuZ3JhYmlmeVdoaWxlU2ltdWxhdGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIG5vZGVHcmFiYmFibGUgPSBfdGhpcy5nZXRTY3JhdGNoKG5vZGUpLmdyYWJiYWJsZSA9IG5vZGUuZ3JhYmJhYmxlKCk7XG4gICAgICAgIHJldHVybiBub2RlR3JhYmJhYmxlO1xuICAgICAgfSk7XG4gICAgICBub2Rlcy51bmdyYWJpZnkoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZWdyYWJpZnknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWdyYWJpZnkobm9kZXMpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMuc3RhdGUudW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgbm9kZUdyYWJiYWJsZSA9IF90aGlzMi5nZXRTY3JhdGNoKG5vZGUpLmdyYWJiYWJsZTtcbiAgICAgICAgcmV0dXJuIG5vZGVHcmFiYmFibGU7XG4gICAgICB9KTtcbiAgICAgIG5vZGVzLmdyYWJpZnkoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0aWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGljaygpIHtcbiAgICAgIHZhciBzID0gdGhpcy5zdGF0ZTtcbiAgICAgIHMucHJvZ3Jlc3MgKz0gMSAvIE1hdGguY2VpbChNYXRoLmxvZyh0aGlzLnNpbXVsYXRpb24uYWxwaGFNaW4oKSkgLyBNYXRoLmxvZygxIC0gdGhpcy5zaW11bGF0aW9uLmFscGhhRGVjYXkoKSkpO1xuICAgICAgcy5pdGVyYXRpb25zKys7XG4gICAgICB2YXIgX2l0ZXJhdGlvbnMgPSBzLm1heEl0ZXJhdGlvbnMgJiYgIXMuaW5maW5pdGUgPyBzLml0ZXJhdGlvbnMgLyBzLm1heEl0ZXJhdGlvbnMgOiAwO1xuICAgICAgdmFyIF90aW1lUnVubmluZyA9IERhdGUubm93KCkgLSBzLnN0YXJ0VGltZTtcbiAgICAgIHZhciBfdGltZUl0ZXJhdGlvbnMgPSBzLm1heFNpbXVsYXRpb25UaW1lICYmICFzLmluZmluaXRlID8gX3RpbWVSdW5uaW5nIC8gcy5tYXhTaW11bGF0aW9uVGltZSA6IDA7XG4gICAgICB2YXIgX3Byb2dyZXNzID0gTWF0aC5tYXgoX2l0ZXJhdGlvbnMsIF90aW1lSXRlcmF0aW9ucywgcy5wcm9ncmVzcyk7XG4gICAgICBfcHJvZ3Jlc3MgPSBfcHJvZ3Jlc3MgPiAxID8gMSA6IF9wcm9ncmVzcztcbiAgICAgIGlmIChfcHJvZ3Jlc3MgPj0gMSkge1xuICAgICAgICB0aGlzLmVuZCghcy5pbmZpbml0ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHMudGljayAmJiBzLnRpY2soX3Byb2dyZXNzKTtcbiAgICAgIGlmIChzLmFuaW1hdGUpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoUG9zaXRpb25zKHMubm9kZXMsIHMsIHMuZml0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdlbmQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmQoZGVzdHJveWVkKSB7XG4gICAgICB2YXIgcyA9IHRoaXMuc3RhdGU7XG4gICAgICB0aGlzLnJlZnJlc2hQb3NpdGlvbnMocy5ub2Rlcywgcywgcy5maXQpO1xuICAgICAgdGhpcy5lbWl0KCdsYXlvdXRzdG9wJywgcy5jeSk7XG4gICAgICB0aGlzLnJlc2V0KGRlc3Ryb3llZCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVzZXQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldChkZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMuc2ltdWxhdGlvbiAmJiB0aGlzLnNpbXVsYXRpb24uc3RvcCgpO1xuICAgICAgdmFyIHMgPSB0aGlzLnN0YXRlO1xuICAgICAgdGhpcy5kZXN0cm95ZWRFdmVudCAmJiB0aGlzLmRlc3Ryb3llZEV2ZW50KCk7XG4gICAgICAoZGVzdHJveWVkIHx8ICFzLmluZmluaXRlKSAmJiB0aGlzLnJlbW92ZUN5dG9zY2FwZUV2ZW50cyAmJiB0aGlzLnJlbW92ZUN5dG9zY2FwZUV2ZW50cygpO1xuICAgICAgcy5hbmltYXRlICYmIHRoaXMucmVncmFiaWZ5KHMubm9kZXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncnVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgIHZhciBsID0gdGhpcztcbiAgICAgIHZhciBzID0gdGhpcy5zdGF0ZTtcbiAgICAgIHZhciByZWFkeSA9IGZhbHNlO1xuICAgICAgcy5jdXJyZW50Qm91bmRpbmdCb3ggPSB0aGlzLm1ha2VCb3VuZGluZ0JveChzLmJvdW5kaW5nQm94LCBzLmN5KTtcbiAgICAgIGlmIChzLnJlYWR5KSB7XG4gICAgICAgIGwub25lKCdsYXlvdXRyZWFkeScsIHMucmVhZHkpO1xuICAgICAgfVxuICAgICAgaWYgKHMuc3RvcCkge1xuICAgICAgICBsLm9uZSgnbGF5b3V0c3RvcCcsIHMuc3RvcCk7XG4gICAgICB9XG4gICAgICBzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMy5zZXRJbml0aWFsUG9zaXRpb25TdGF0ZShuLCBzKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKCFyZWFkeSkge1xuICAgICAgICByZWFkeSA9IHRydWU7XG4gICAgICAgIGwuZW1pdCgnbGF5b3V0cmVhZHknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFsLnNpbXVsYXRpb24pIHtcbiAgICAgICAgdmFyIF9mb3JjZW5vZGVzID0gcy5ub2Rlcy5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICByZXR1cm4gYXNzaWduKGwuZ2V0U2NyYXRjaChuKSwgbi5kYXRhKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9mb3JjZWVkZ2VzID0gcy5lZGdlcy5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICByZXR1cm4gYXNzaWduKHt9LCBlLmRhdGEoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBsLnNpbXVsYXRpb24gPSBkMy5mb3JjZVNpbXVsYXRpb24oX2ZvcmNlbm9kZXMpO1xuICAgICAgICBzLmFscGhhICYmIGwuc2ltdWxhdGlvbi5hbHBoYShzLmFscGhhKTtcbiAgICAgICAgcy5hbHBoYU1pbiAmJiBsLnNpbXVsYXRpb24uYWxwaGFNaW4ocy5hbHBoYU1pbik7XG4gICAgICAgIHMuYWxwaGFEZWNheSAmJiBsLnNpbXVsYXRpb24uYWxwaGFEZWNheShzLmFscGhhRGVjYXkpO1xuICAgICAgICBzLmFscGhhVGFyZ2V0ICYmIGwuc2ltdWxhdGlvbi5hbHBoYVRhcmdldChzLmFscGhhVGFyZ2V0KTtcbiAgICAgICAgcy52ZWxvY2l0eURlY2F5ICYmIGwuc2ltdWxhdGlvbi52ZWxvY2l0eURlY2F5KHMudmVsb2NpdHlEZWNheSk7XG4gICAgICAgIHZhciBfY29sbGlkZSA9IGQzLmZvcmNlQ29sbGlkZSgpO1xuICAgICAgICBzLmNvbGxpZGVSYWRpdXMgJiYgX2NvbGxpZGUucmFkaXVzKHMuY29sbGlkZVJhZGl1cyk7XG4gICAgICAgIHMuY29sbGlkZVN0cmVuZ3RoICYmIF9jb2xsaWRlLnN0cmVuZ3RoKHMuY29sbGlkZVN0cmVuZ3RoKTtcbiAgICAgICAgcy5jb2xsaWRlSXRlcmF0aW9ucyAmJiBfY29sbGlkZS5pdGVyYXRpb25zKHMuY29sbGlkZUl0ZXJhdGlvbnMpO1xuICAgICAgICB2YXIgX2xpbmsgPSBkMy5mb3JjZUxpbmsoX2ZvcmNlZWRnZXMpO1xuICAgICAgICBzLmxpbmtJZCAmJiBfbGluay5pZChzLmxpbmtJZCk7XG4gICAgICAgIHMubGlua0Rpc3RhbmNlICYmIF9saW5rLmRpc3RhbmNlKHMubGlua0Rpc3RhbmNlKTtcbiAgICAgICAgcy5saW5rU3RyZW5ndGggJiYgX2xpbmsuc3RyZW5ndGgocy5saW5rU3RyZW5ndGgpO1xuICAgICAgICBzLmxpbmtJdGVyYXRpb25zICYmIF9saW5rLml0ZXJhdGlvbnMocy5saW5rSXRlcmF0aW9ucyk7XG4gICAgICAgIHZhciBfbWFueUJvZHkgPSBkMy5mb3JjZU1hbnlCb2R5KCk7XG4gICAgICAgIHMubWFueUJvZHlTdHJlbmd0aCAmJiBfbWFueUJvZHkuc3RyZW5ndGgocy5tYW55Qm9keVN0cmVuZ3RoKTtcbiAgICAgICAgcy5tYW55Qm9keVRoZXRhICYmIF9tYW55Qm9keS50aGV0YShzLm1hbnlCb2R5VGhldGEpO1xuICAgICAgICBzLm1hbnlCb2R5RGlzdGFuY2VNaW4gJiYgX21hbnlCb2R5LmRpc3RhbmNlTWluKHMubWFueUJvZHlEaXN0YW5jZU1pbik7XG4gICAgICAgIHMubWFueUJvZHlEaXN0YW5jZU1heCAmJiBfbWFueUJvZHkuZGlzdGFuY2VNYXgocy5tYW55Qm9keURpc3RhbmNlTWF4KTtcbiAgICAgICAgdmFyIF94ID0gZDMuZm9yY2VYKCk7XG4gICAgICAgIHMueFggJiYgX3gueChzLnhYKTtcbiAgICAgICAgcy54U3RyZW5ndGggJiYgX3guc3RyZW5ndGgocy54U3RyZW5ndGgpO1xuICAgICAgICB2YXIgX3kgPSBkMy5mb3JjZVkoKTtcbiAgICAgICAgcy55WSAmJiBfeS55KHMueVkpO1xuICAgICAgICBzLnlTdHJlbmd0aCAmJiBfeS5zdHJlbmd0aChzLnlTdHJlbmd0aCk7XG4gICAgICAgIHZhciBfcmFkaXVzID0gbnVsbDtcbiAgICAgICAgaWYgKHMucmFkaWFsUmFkaXVzIHx8IHMucmFkaWFsU3RyZW5ndGggfHwgcy5yYWRpYWxYIHx8IHMucmFkaWFsWSkge1xuICAgICAgICAgIF9yYWRpdXMgPSBkMy5mb3JjZVJhZGlhbCgpO1xuICAgICAgICAgIHMucmFkaWFsUmFkaXVzICYmIF9yYWRpdXMucmFkaXVzKHMucmFkaWFsUmFkaXVzKTtcbiAgICAgICAgICBzLnJhZGlhbFN0cmVuZ3RoICYmIF9yYWRpdXMuc3RyZW5ndGgocy5yYWRpYWxTdHJlbmd0aCk7XG4gICAgICAgICAgcy5yYWRpYWxYICYmIF9yYWRpdXMueChzLnJhZGlhbFgpO1xuICAgICAgICAgIHMucmFkaWFsWSAmJiBfcmFkaXVzLnkocy5yYWRpYWxZKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2NlbnRlciA9IGQzLmZvcmNlQ2VudGVyKHMuY3VycmVudEJvdW5kaW5nQm94LncgLyAyLCBzLmN1cnJlbnRCb3VuZGluZ0JveC5oIC8gMik7XG4gICAgICAgIGwuc2ltdWxhdGlvbi5mb3JjZSgnY29sbGlkZScsIF9jb2xsaWRlKS5mb3JjZSgnbGluaycsIF9saW5rKS5mb3JjZSgnbWFueS1ib2R5JywgX21hbnlCb2R5KS5mb3JjZSgneCcsIF94KS5mb3JjZSgneScsIF95KS5mb3JjZShcImNlbnRlclwiLCBfY2VudGVyKTtcbiAgICAgICAgX3JhZGl1cyAmJiBsLnNpbXVsYXRpb24uZm9yY2UoJ3JhZGl1cycsIF9yYWRpdXMpO1xuICAgICAgICBsLnNpbXVsYXRpb24ub24oXCJ0aWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsLnRpY2soKTtcbiAgICAgICAgfSkub24oXCJlbmRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGwuZW5kKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFsLmRlc3Ryb3llZEV2ZW50KSB7XG4gICAgICAgIHZhciBkZXN0cm95SGFuZGxlciA9IHZvaWQgMDtcbiAgICAgICAgcy5jeS5vbmUoJ2Rlc3Ryb3knLCBkZXN0cm95SGFuZGxlciA9IGZ1bmN0aW9uIGRlc3Ryb3lIYW5kbGVyKCkge1xuICAgICAgICAgIGwuc3RvcCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgbC5kZXN0cm95ZWRFdmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzLmN5Lm9mZignZGVzdHJveScsIGRlc3Ryb3lIYW5kbGVyKTtcbiAgICAgICAgICBsLmRlc3Ryb3llZEV2ZW50ID0gbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGwucHJlcnVuKHMpO1xuICAgICAgbC5lbWl0KCdsYXlvdXRzdGFydCcpO1xuICAgICAgcy5wcm9ncmVzcyA9IDA7XG4gICAgICBzLml0ZXJhdGlvbnMgPSAwO1xuICAgICAgcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICBpZiAocy5hbmltYXRlKSB7XG4gICAgICAgIHZhciByZXN0YXJ0QWxwaGFUYXJnZXQgPSBNYXRoLmFicygocy5hbHBoYSB8fCAxKSAtIChzLmFscGhhVGFyZ2V0IHx8IDApKSAvIDM7XG4gICAgICAgIGlmICghbC5yZW1vdmVDeXRvc2NhcGVFdmVudHMpIHtcbiAgICAgICAgICB2YXIgX2N5dG9zY2FwZUV2ZW50ID0gZnVuY3Rpb24gX2N5dG9zY2FwZUV2ZW50KGUpIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gdGhpcztcbiAgICAgICAgICAgIHZhciBwb3MgPSBub2RlLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICB2YXIgbm9kZUlzVGFyZ2V0ID0gZS5jeVRhcmdldCA9PT0gbm9kZSB8fCBlLnRhcmdldCA9PT0gbm9kZTtcbiAgICAgICAgICAgIGlmICghbm9kZUlzVGFyZ2V0KSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBfc2NyYXRjaCA9IGwuZ2V0U2NyYXRjaChub2RlKTtcbiAgICAgICAgICAgIHMucHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgICAgcy5pdGVyYXRpb25zID0gMDtcbiAgICAgICAgICAgIHMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIF9zY3JhdGNoLnggPSBwb3MueDtcbiAgICAgICAgICAgIF9zY3JhdGNoLnkgPSBwb3MueTtcbiAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdncmFiJykge1xuICAgICAgICAgICAgICBsLnNpbXVsYXRpb24uYWxwaGFUYXJnZXQocmVzdGFydEFscGhhVGFyZ2V0KS5yZXN0YXJ0KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGUudHlwZSA9PT0gJ3VubG9jaycgfHwgZS50eXBlID09PSAnZnJlZScpIHtcbiAgICAgICAgICAgICAgaWYgKCFzLmZpeGVkQWZ0ZXJEcmFnZ2luZykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBfc2NyYXRjaC5meDtcbiAgICAgICAgICAgICAgICBkZWxldGUgX3NjcmF0Y2guZnk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgX3NjcmF0Y2guZnggPSBwb3MueDtcbiAgICAgICAgICAgICAgICBfc2NyYXRjaC5meSA9IHBvcy55O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGwuc2ltdWxhdGlvbi5hbHBoYVRhcmdldChyZXN0YXJ0QWxwaGFUYXJnZXQpLnJlc3RhcnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIF9zY3JhdGNoLmZ4ID0gcG9zLng7XG4gICAgICAgICAgICAgIF9zY3JhdGNoLmZ5ID0gcG9zLnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBsLnJlbW92ZUN5dG9zY2FwZUV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHMubm9kZXMub2ZmKCdncmFiIGZyZWUgZHJhZyBsb2NrIHVubG9jaycsIF9jeXRvc2NhcGVFdmVudCk7XG4gICAgICAgICAgICBsLnJlbW92ZUN5dG9zY2FwZUV2ZW50cyA9IG51bGw7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBzLm5vZGVzLm9uKCdncmFiIGZyZWUgZHJhZyBsb2NrIHVubG9jaycsIF9jeXRvc2NhcGVFdmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgbC51bmdyYWJpZnkocy5ub2Rlcyk7XG4gICAgICB9XG4gICAgICBsLnBvc3RydW4ocyk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwcmVydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcmVydW4oKSB7fVxuICB9LCB7XG4gICAga2V5OiAncG9zdHJ1bicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBvc3RydW4oKSB7fVxuICB9LCB7XG4gICAga2V5OiAnc3RvcCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNldCh0cnVlKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ29udGludW91c0xheW91dDtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDb250aW51b3VzTGF5b3V0O1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLy8gU2ltcGxlLCBpbnRlcm5hbCBPYmplY3QuYXNzaWduKCkgcG9seWZpbGwgZm9yIG9wdGlvbnMgb2JqZWN0cyBldGMuXG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmFzc2lnbiAhPSBudWxsID8gT2JqZWN0LmFzc2lnbi5iaW5kKE9iamVjdCkgOiBmdW5jdGlvbiAodGd0KSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzcmNzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHNyY3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgc3Jjcy5mb3JFYWNoKGZ1bmN0aW9uIChzcmMpIHtcbiAgICBPYmplY3Qua2V5cyhzcmMpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiB0Z3Rba10gPSBzcmNba107XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB0Z3Q7XG59O1xuXG4vKioqLyB9KSxcbi8qIDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZnJlZXplKHtcbiAgYW5pbWF0ZTogdHJ1ZSwgLy8gd2hldGhlciB0byBzaG93IHRoZSBsYXlvdXQgYXMgaXQncyBydW5uaW5nOyBzcGVjaWFsICdlbmQnIHZhbHVlIG1ha2VzIHRoZSBsYXlvdXQgYW5pbWF0ZSBsaWtlIGEgZGlzY3JldGUgbGF5b3V0XG4gIG1heEl0ZXJhdGlvbnM6IDAsIC8vIG1heCBpdGVyYXRpb25zIGJlZm9yZSB0aGUgbGF5b3V0IHdpbGwgYmFpbCBvdXRcbiAgbWF4U2ltdWxhdGlvblRpbWU6IDAsIC8vIG1heCBsZW5ndGggaW4gbXMgdG8gcnVuIHRoZSBsYXlvdXRcbiAgdW5ncmFiaWZ5V2hpbGVTaW11bGF0aW5nOiBmYWxzZSwgLy8gc28geW91IGNhbid0IGRyYWcgbm9kZXMgZHVyaW5nIGxheW91dFxuICBmaXhlZEFmdGVyRHJhZ2dpbmc6IGZhbHNlLCAvLyBmaXhlZCBub2RlIGFmdGVyIGRyYWdnaW5nXG4gIGZpdDogZmFsc2UsIC8vIG9uIGV2ZXJ5IGxheW91dCByZXBvc2l0aW9uIG9mIG5vZGVzLCBmaXQgdGhlIHZpZXdwb3J0XG4gIHBhZGRpbmc6IDMwLCAvLyBwYWRkaW5nIGFyb3VuZCB0aGUgc2ltdWxhdGlvblxuICBib3VuZGluZ0JveDogdW5kZWZpbmVkLCAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cbiAgLyoqZDMtZm9yY2UgQVBJKiovXG4gIGFscGhhOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIGN1cnJlbnQgYWxwaGEgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDFdXG4gIGFscGhhTWluOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIG1pbmltdW0gYWxwaGEgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDFdXG4gIGFscGhhRGVjYXk6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgYWxwaGEgZGVjYXkgcmF0ZSB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsMV1cbiAgYWxwaGFUYXJnZXQ6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgY3VycmVudCB0YXJnZXQgYWxwaGEgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDFdXG4gIHZlbG9jaXR5RGVjYXk6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgdmVsb2NpdHkgZGVjYXkgZmFjdG9yIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGluIHRoZSByYW5nZSBbMCwxXVxuICBjb2xsaWRlUmFkaXVzOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIHJhZGl1cyBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvciBmdW5jdGlvblxuICBjb2xsaWRlU3RyZW5ndGg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgZm9yY2Ugc3RyZW5ndGggdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDFdXG4gIGNvbGxpZGVJdGVyYXRpb25zOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHBlciBhcHBsaWNhdGlvbiB0byB0aGUgc3BlY2lmaWVkIG51bWJlclxuICBsaW5rSWQ6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgbm9kZSBpZCBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uXG4gIGxpbmtEaXN0YW5jZTogMzAsIC8vIHNldHMgdGhlIGRpc3RhbmNlIGFjY2Vzc29yIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9yIGZ1bmN0aW9uXG4gIGxpbmtTdHJlbmd0aDogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBzdHJlbmd0aCBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvciBmdW5jdGlvblxuICBsaW5rSXRlcmF0aW9uczogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBwZXIgYXBwbGljYXRpb24gdG8gdGhlIHNwZWNpZmllZCBudW1iZXJcbiAgbWFueUJvZHlTdHJlbmd0aDogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBzdHJlbmd0aCBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvciBmdW5jdGlvblxuICBtYW55Qm9keVRoZXRhOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIEJhcm5lc+KAk0h1dCBhcHByb3hpbWF0aW9uIGNyaXRlcmlvbiB0byB0aGUgc3BlY2lmaWVkIG51bWJlclxuICBtYW55Qm9keURpc3RhbmNlTWluOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIG1pbmltdW0gZGlzdGFuY2UgYmV0d2VlbiBub2RlcyBvdmVyIHdoaWNoIHRoaXMgZm9yY2UgaXMgY29uc2lkZXJlZFxuICBtYW55Qm9keURpc3RhbmNlTWF4OiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIG1heGltdW0gZGlzdGFuY2UgYmV0d2VlbiBub2RlcyBvdmVyIHdoaWNoIHRoaXMgZm9yY2UgaXMgY29uc2lkZXJlZFxuICB4U3RyZW5ndGg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgc3RyZW5ndGggYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgeFg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgeC1jb29yZGluYXRlIGFjY2Vzc29yIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9yIGZ1bmN0aW9uXG4gIHlTdHJlbmd0aDogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSBzdHJlbmd0aCBhY2Nlc3NvciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvciBmdW5jdGlvblxuICB5WTogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSB5LWNvb3JkaW5hdGUgYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgcmFkaWFsU3RyZW5ndGg6IHVuZGVmaW5lZCwgLy8gc2V0cyB0aGUgc3RyZW5ndGggYWNjZXNzb3IgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgcmFkaWFsUmFkaXVzOiB1bmRlZmluZWQsIC8vIHNldHMgdGhlIGNpcmNsZSByYWRpdXMgdG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb3IgZnVuY3Rpb25cbiAgcmFkaWFsWDogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGNpcmNsZSBjZW50ZXIgdG8gdGhlIHNwZWNpZmllZCBudW1iZXJcbiAgcmFkaWFsWTogdW5kZWZpbmVkLCAvLyBzZXRzIHRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIGNpcmNsZSBjZW50ZXIgdG8gdGhlIHNwZWNpZmllZCBudW1iZXJcbiAgLy8gbGF5b3V0IGV2ZW50IGNhbGxiYWNrc1xuICByZWFkeTogZnVuY3Rpb24gcmVhZHkoKSB7fSwgLy8gb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9LCAvLyBvbiBsYXlvdXRzdG9wXG4gIHRpY2s6IGZ1bmN0aW9uIHRpY2soKSB7fSwgLy8gb24gZXZlcnkgaXRlcmF0aW9uXG4gIC8vIHBvc2l0aW9uaW5nIG9wdGlvbnNcbiAgcmFuZG9taXplOiBmYWxzZSwgLy8gdXNlIHJhbmRvbSBub2RlIHBvc2l0aW9ucyBhdCBiZWdpbm5pbmcgb2YgbGF5b3V0XG4gIC8vIGluZmluaXRlIGxheW91dCBvcHRpb25zXG4gIGluZmluaXRlOiBmYWxzZSAvLyBvdmVycmlkZXMgYWxsIG90aGVyIG9wdGlvbnMgZm9yIGEgZm9yY2VzLWFsbC10aGUtdGltZSBtb2RlXG59KTtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBpbXBsID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLy8gcmVnaXN0ZXJzIHRoZSBleHRlbnNpb24gb24gYSBjeXRvc2NhcGUgbGliIHJlZlxudmFyIHJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIoY3l0b3NjYXBlKSB7XG4gIGlmICghY3l0b3NjYXBlKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIGNhbid0IHJlZ2lzdGVyIGlmIGN5dG9zY2FwZSB1bnNwZWNpZmllZFxuXG4gIGN5dG9zY2FwZSgnbGF5b3V0JywgJ2QzLWZvcmNlJywgaW1wbCk7IC8vIHJlZ2lzdGVyIHdpdGggY3l0b3NjYXBlLmpzXG59O1xuXG5pZiAodHlwZW9mIGN5dG9zY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZXhwb3NlIHRvIGdsb2JhbCBjeXRvc2NhcGUgKGkuZS4gd2luZG93LmN5dG9zY2FwZSlcbiAgcmVnaXN0ZXIoY3l0b3NjYXBlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWdpc3RlcjtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV80X187XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsImltcG9ydCAnY3l0b3NjYXBlJztcblxuLy8gaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9kZXNrdG9wL2FwaS93aW51c2VyL25mLXdpbnVzZXItc2V0ZG91YmxlY2xpY2t0aW1lXHJcbnZhciBJTlRFUlZBTCA9IDUwMDtcclxuZnVuY3Rpb24gZXh0ZW5zaW9uKGludGVydmFsKSB7XHJcbiAgICBpZiAoaW50ZXJ2YWwgPT09IHZvaWQgMCkgeyBpbnRlcnZhbCA9IElOVEVSVkFMOyB9XHJcbiAgICB2YXIgY2xpY2tlZCA9IG51bGw7XHJcbiAgICB0aGlzLm9uKCdjbGljaycsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgICBpZiAoY2xpY2tlZCAmJiBjbGlja2VkID09PSBldnQudGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGNsaWNrZWQgPSBudWxsO1xyXG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBldnQudGFyZ2V0LmVtaXQoJ2RibGNsaWNrJywgW2V2dF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY2xpY2tlZCA9IGV2dC50YXJnZXQ7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsaWNrZWQgJiYgY2xpY2tlZCA9PT0gZXZ0LnRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsaWNrZWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGV2dC50YXJnZXQuZW1pdCgnZGJsY2xpY2s6dGltZW91dCcsIFtldnRdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgaW50ZXJ2YWwpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluYWJpbGl0eVxyXG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKGN5KSB7XHJcbiAgICBpZiAoIWN5KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gSW5pdGlhbGl6ZSBleHRlbnNpb25cclxuICAgIC8vIFJlZ2lzdGVyIGV4dGVuc2lvblxyXG4gICAgdmFyIGV4dGVuc2lvbk5hbWUgPSAnZGJsY2xpY2snO1xyXG4gICAgY3koJ2NvcmUnLCBleHRlbnNpb25OYW1lLCBleHRlbnNpb24pO1xyXG4gICAgLy8gY3koJ2NvbGxlY3Rpb24nLCBleHRlbnNpb25OYW1lLCBleHRlbnNpb24pO1xyXG4gICAgLy8gY3koJ2xheW91dCcsIGV4dGVuc2lvbk5hbWUsIGV4dGVuc2lvbik7XHJcbiAgICAvLyBjeSgncmVuZGVyZXInLCBleHRlbnNpb25OYW1lLCBleHRlbnNpb24pO1xyXG59XHJcbmlmICh0eXBlb2Ygd2luZG93LmN5dG9zY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIHJlZ2lzdGVyKHdpbmRvdy5jeXRvc2NhcGUpO1xyXG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZXNtLmpzLm1hcFxuIiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlQ3h0bWVudVwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJjeXRvc2NhcGVDeHRtZW51XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNCk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBkZWZhdWx0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKSxcbiAgICByZW1vdmVFbGVzID0gX3JlcXVpcmUucmVtb3ZlRWxlcyxcbiAgICBzZXRTdHlsZXMgPSBfcmVxdWlyZS5zZXRTdHlsZXMsXG4gICAgY3JlYXRlRWxlbWVudCA9IF9yZXF1aXJlLmNyZWF0ZUVsZW1lbnQsXG4gICAgZ2V0UGl4ZWxSYXRpbyA9IF9yZXF1aXJlLmdldFBpeGVsUmF0aW8sXG4gICAgZ2V0T2Zmc2V0ID0gX3JlcXVpcmUuZ2V0T2Zmc2V0O1xuXG52YXIgY3h0bWVudSA9IGZ1bmN0aW9uIGN4dG1lbnUocGFyYW1zKSB7XG4gIHZhciBvcHRpb25zID0gYXNzaWduKHt9LCBkZWZhdWx0cywgcGFyYW1zKTtcbiAgdmFyIGN5ID0gdGhpcztcbiAgdmFyIGNvbnRhaW5lciA9IGN5LmNvbnRhaW5lcigpO1xuICB2YXIgdGFyZ2V0ID0gdm9pZCAwO1xuXG4gIHZhciBkYXRhID0ge1xuICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgaGFuZGxlcnM6IFtdLFxuICAgIGNvbnRhaW5lcjogY3JlYXRlRWxlbWVudCh7IGNsYXNzOiAnY3h0bWVudScgfSlcbiAgfTtcblxuICB2YXIgd3JhcHBlciA9IGRhdGEuY29udGFpbmVyO1xuICB2YXIgcGFyZW50ID0gY3JlYXRlRWxlbWVudCgpO1xuICB2YXIgY2FudmFzID0gY3JlYXRlRWxlbWVudCh7IHRhZzogJ2NhbnZhcycgfSk7XG4gIHZhciBjb21tYW5kcyA9IFtdO1xuICB2YXIgYzJkID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgdmFyIHIgPSAxMDA7IC8vIGRlZmFpbHQgcmFkaXVzO1xuICB2YXIgY29udGFpbmVyU2l6ZSA9IChyICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nKSAqIDI7XG4gIHZhciBhY3RpdmVDb21tYW5kSSA9IHZvaWQgMDtcbiAgdmFyIG9mZnNldCA9IHZvaWQgMDtcblxuICBjb250YWluZXIuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIGNvbnRhaW5lci5maXJzdENoaWxkKTtcbiAgd3JhcHBlci5hcHBlbmRDaGlsZChwYXJlbnQpO1xuICBwYXJlbnQuYXBwZW5kQ2hpbGQoY2FudmFzKTtcblxuICBzZXRTdHlsZXMod3JhcHBlciwge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHpJbmRleDogb3B0aW9ucy56SW5kZXgsXG4gICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyAvLyBwcmV2ZW50IGV2ZW50cyBvbiBtZW51IGluIG1vZGVybiBicm93c2Vyc1xuICB9KTtcblxuICAvLyBwcmV2ZW50IGV2ZW50cyBvbiBtZW51IGluIGxlZ2FjeSBicm93c2Vyc1xuICBbJ21vdXNlZG93bicsICdtb3VzZW1vdmUnLCAnbW91c2V1cCcsICdjb250ZXh0bWVudSddLmZvckVhY2goZnVuY3Rpb24gKGV2dCkge1xuICAgIHdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcihldnQsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc2V0U3R5bGVzKHBhcmVudCwge1xuICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB3aWR0aDogY29udGFpbmVyU2l6ZSArICdweCcsXG4gICAgaGVpZ2h0OiBjb250YWluZXJTaXplICsgJ3B4JyxcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB6SW5kZXg6IDEsXG4gICAgbWFyZ2luTGVmdDogLW9wdGlvbnMuYWN0aXZlUGFkZGluZyArICdweCcsXG4gICAgbWFyZ2luVG9wOiAtb3B0aW9ucy5hY3RpdmVQYWRkaW5nICsgJ3B4JyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZSdcbiAgfSk7XG5cbiAgY2FudmFzLndpZHRoID0gY29udGFpbmVyU2l6ZTtcbiAgY2FudmFzLmhlaWdodCA9IGNvbnRhaW5lclNpemU7XG5cbiAgZnVuY3Rpb24gY3JlYXRlTWVudUl0ZW1zKHIsIHJzKSB7XG4gICAgcmVtb3ZlRWxlcygnLmN4dG1lbnUtaXRlbScsIHBhcmVudCk7XG4gICAgdmFyIGR0aGV0YSA9IDIgKiBNYXRoLlBJIC8gY29tbWFuZHMubGVuZ3RoO1xuICAgIHZhciB0aGV0YTEgPSBNYXRoLlBJIC8gMjtcbiAgICB2YXIgdGhldGEyID0gdGhldGExICsgZHRoZXRhO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21tYW5kcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kc1tpXTtcblxuICAgICAgdmFyIG1pZHRoZXRhID0gKHRoZXRhMSArIHRoZXRhMikgLyAyO1xuICAgICAgdmFyIHJ4MSA9IChyICsgcnMpIC8gMiAqIE1hdGguY29zKG1pZHRoZXRhKTtcbiAgICAgIHZhciByeTEgPSAociArIHJzKSAvIDIgKiBNYXRoLnNpbihtaWR0aGV0YSk7XG5cbiAgICAgIC8vIEFyYml0cmFyeSBtdWx0aXBsaWVyIHRvIGluY3JlYXNlIHRoZSBzaXppbmcgb2YgdGhlIHNwYWNlIFxuICAgICAgLy8gYXZhaWxhYmxlIGZvciB0aGUgaXRlbS5cbiAgICAgIHZhciB3aWR0aCA9IDEgKiBNYXRoLmFicygociAtIHJzKSAqIE1hdGguY29zKG1pZHRoZXRhKSk7XG4gICAgICB2YXIgaGVpZ2h0ID0gMSAqIE1hdGguYWJzKChyIC0gcnMpICogTWF0aC5zaW4obWlkdGhldGEpKTtcbiAgICAgIHdpZHRoID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7XG5cbiAgICAgIHZhciBpdGVtID0gY3JlYXRlRWxlbWVudCh7IGNsYXNzOiAnY3h0bWVudS1pdGVtJyB9KTtcbiAgICAgIHNldFN0eWxlcyhpdGVtLCB7XG4gICAgICAgIGNvbG9yOiBvcHRpb25zLml0ZW1Db2xvcixcbiAgICAgICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRpc3BsYXk6ICd0YWJsZScsXG4gICAgICAgICd0ZXh0LWFsaWduJzogJ2NlbnRlcicsXG4gICAgICAgIC8vYmFja2dyb3VuZDogJ3JlZCcsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAndGV4dC1zaGFkb3cnOiAnLTFweCAtMXB4IDJweCAnICsgb3B0aW9ucy5pdGVtVGV4dFNoYWRvd0NvbG9yICsgJywgMXB4IC0xcHggMnB4ICcgKyBvcHRpb25zLml0ZW1UZXh0U2hhZG93Q29sb3IgKyAnLCAtMXB4IDFweCAycHggJyArIG9wdGlvbnMuaXRlbVRleHRTaGFkb3dDb2xvciArICcsIDFweCAxcHggMXB4ICcgKyBvcHRpb25zLml0ZW1UZXh0U2hhZG93Q29sb3IsXG4gICAgICAgIGxlZnQ6ICc1MCUnLFxuICAgICAgICB0b3A6ICc1MCUnLFxuICAgICAgICAnbWluLWhlaWdodCc6IHdpZHRoICsgJ3B4JyxcbiAgICAgICAgd2lkdGg6IHdpZHRoICsgJ3B4JyxcbiAgICAgICAgaGVpZ2h0OiB3aWR0aCArICdweCcsXG4gICAgICAgIG1hcmdpbkxlZnQ6IHJ4MSAtIHdpZHRoIC8gMiArICdweCcsXG4gICAgICAgIG1hcmdpblRvcDogLXJ5MSAtIHdpZHRoIC8gMiArICdweCdcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgY29udGVudCA9IGNyZWF0ZUVsZW1lbnQoeyBjbGFzczogJ2N4dG1lbnUtY29udGVudCcgfSk7XG5cbiAgICAgIGlmIChjb21tYW5kLmNvbnRlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGNvbW1hbmQuY29udGVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZW50LmlubmVySFRNTCA9IGNvbW1hbmQuY29udGVudDtcbiAgICAgIH1cblxuICAgICAgc2V0U3R5bGVzKGNvbnRlbnQsIHtcbiAgICAgICAgJ3dpZHRoJzogd2lkdGggKyAncHgnLFxuICAgICAgICAnaGVpZ2h0Jzogd2lkdGggKyAncHgnLFxuICAgICAgICAndmVydGljYWwtYWxpZ24nOiAnbWlkZGxlJyxcbiAgICAgICAgJ2Rpc3BsYXknOiAndGFibGUtY2VsbCdcbiAgICAgIH0pO1xuXG4gICAgICBzZXRTdHlsZXMoY29udGVudCwgY29tbWFuZC5jb250ZW50U3R5bGUgfHwge30pO1xuXG4gICAgICBpZiAoY29tbWFuZC5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCBjb21tYW5kLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnRlbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsICdjeHRtZW51LWNvbnRlbnQgY3h0bWVudS1kaXNhYmxlZCcpO1xuICAgICAgfVxuXG4gICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoaXRlbSk7XG4gICAgICBpdGVtLmFwcGVuZENoaWxkKGNvbnRlbnQpO1xuXG4gICAgICB0aGV0YTEgKz0gZHRoZXRhO1xuICAgICAgdGhldGEyICs9IGR0aGV0YTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBxdWV1ZURyYXdCZyhyYWRpdXMsIHJzcG90bGlnaHQpIHtcbiAgICByZWRyYXdRdWV1ZS5kcmF3QmcgPSBbcmFkaXVzLCByc3BvdGxpZ2h0XTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRyYXdCZyhyYWRpdXMsIHJzcG90bGlnaHQpIHtcbiAgICBjMmQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcblxuICAgIGMyZC5jbGVhclJlY3QoMCwgMCwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyU2l6ZSk7XG5cbiAgICAvLyBkcmF3IGJhY2tncm91bmQgaXRlbXNcbiAgICBjMmQuZmlsbFN0eWxlID0gb3B0aW9ucy5maWxsQ29sb3I7XG4gICAgdmFyIGR0aGV0YSA9IDIgKiBNYXRoLlBJIC8gY29tbWFuZHMubGVuZ3RoO1xuICAgIHZhciB0aGV0YTEgPSBNYXRoLlBJIC8gMjtcbiAgICB2YXIgdGhldGEyID0gdGhldGExICsgZHRoZXRhO1xuXG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvbW1hbmRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kc1tpbmRleF07XG5cbiAgICAgIGlmIChjb21tYW5kLmZpbGxDb2xvcikge1xuICAgICAgICBjMmQuZmlsbFN0eWxlID0gY29tbWFuZC5maWxsQ29sb3I7XG4gICAgICB9XG4gICAgICBjMmQuYmVnaW5QYXRoKCk7XG4gICAgICBjMmQubW92ZVRvKHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nKTtcbiAgICAgIGMyZC5hcmMocmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIHJhZGl1cywgMiAqIE1hdGguUEkgLSB0aGV0YTEsIDIgKiBNYXRoLlBJIC0gdGhldGEyLCB0cnVlKTtcbiAgICAgIGMyZC5jbG9zZVBhdGgoKTtcbiAgICAgIGMyZC5maWxsKCk7XG5cbiAgICAgIHRoZXRhMSArPSBkdGhldGE7XG4gICAgICB0aGV0YTIgKz0gZHRoZXRhO1xuXG4gICAgICBjMmQuZmlsbFN0eWxlID0gb3B0aW9ucy5maWxsQ29sb3I7XG4gICAgfVxuXG4gICAgLy8gZHJhdyBzZXBhcmF0b3JzIGJldHdlZW4gaXRlbXNcbiAgICBjMmQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgYzJkLnN0cm9rZVN0eWxlID0gJ3doaXRlJztcbiAgICBjMmQubGluZVdpZHRoID0gb3B0aW9ucy5zZXBhcmF0b3JXaWR0aDtcbiAgICB0aGV0YTEgPSBNYXRoLlBJIC8gMjtcbiAgICB0aGV0YTIgPSB0aGV0YTEgKyBkdGhldGE7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1hbmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcngxID0gcmFkaXVzICogTWF0aC5jb3ModGhldGExKTtcbiAgICAgIHZhciByeTEgPSByYWRpdXMgKiBNYXRoLnNpbih0aGV0YTEpO1xuICAgICAgYzJkLmJlZ2luUGF0aCgpO1xuICAgICAgYzJkLm1vdmVUbyhyYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZyk7XG4gICAgICBjMmQubGluZVRvKHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZyArIHJ4MSwgcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nIC0gcnkxKTtcbiAgICAgIGMyZC5jbG9zZVBhdGgoKTtcbiAgICAgIGMyZC5zdHJva2UoKTtcblxuICAgICAgdGhldGExICs9IGR0aGV0YTtcbiAgICAgIHRoZXRhMiArPSBkdGhldGE7XG4gICAgfVxuXG4gICAgYzJkLmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgYzJkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdXQnO1xuICAgIGMyZC5iZWdpblBhdGgoKTtcbiAgICBjMmQuYXJjKHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByc3BvdGxpZ2h0ICsgb3B0aW9ucy5zcG90bGlnaHRQYWRkaW5nLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7XG4gICAgYzJkLmNsb3NlUGF0aCgpO1xuICAgIGMyZC5maWxsKCk7XG5cbiAgICBjMmQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcbiAgfVxuXG4gIGZ1bmN0aW9uIHF1ZXVlRHJhd0NvbW1hbmRzKHJ4LCByeSwgcmFkaXVzLCB0aGV0YSwgcnNwb3RsaWdodCkge1xuICAgIHJlZHJhd1F1ZXVlLmRyYXdDb21tYW5kcyA9IFtyeCwgcnksIHJhZGl1cywgdGhldGEsIHJzcG90bGlnaHRdO1xuICB9XG5cbiAgZnVuY3Rpb24gZHJhd0NvbW1hbmRzKHJ4LCByeSwgcmFkaXVzLCB0aGV0YSwgcnMpIHtcbiAgICB2YXIgZHRoZXRhID0gMiAqIE1hdGguUEkgLyBjb21tYW5kcy5sZW5ndGg7XG4gICAgdmFyIHRoZXRhMSA9IE1hdGguUEkgLyAyO1xuICAgIHZhciB0aGV0YTIgPSB0aGV0YTEgKyBkdGhldGE7XG5cbiAgICB0aGV0YTEgKz0gZHRoZXRhICogYWN0aXZlQ29tbWFuZEk7XG4gICAgdGhldGEyICs9IGR0aGV0YSAqIGFjdGl2ZUNvbW1hbmRJO1xuXG4gICAgYzJkLmZpbGxTdHlsZSA9IG9wdGlvbnMuYWN0aXZlRmlsbENvbG9yO1xuICAgIGMyZC5zdHJva2VTdHlsZSA9ICdibGFjayc7XG4gICAgYzJkLmxpbmVXaWR0aCA9IDE7XG4gICAgYzJkLmJlZ2luUGF0aCgpO1xuICAgIGMyZC5tb3ZlVG8ocmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcpO1xuICAgIGMyZC5hcmMocmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZywgMiAqIE1hdGguUEkgLSB0aGV0YTEsIDIgKiBNYXRoLlBJIC0gdGhldGEyLCB0cnVlKTtcbiAgICBjMmQuY2xvc2VQYXRoKCk7XG4gICAgYzJkLmZpbGwoKTtcblxuICAgIGMyZC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgIGMyZC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3V0JztcblxuICAgIHZhciB0eCA9IHJhZGl1cyArIG9wdGlvbnMuYWN0aXZlUGFkZGluZyArIHJ4IC8gcmFkaXVzICogKHJzICsgb3B0aW9ucy5zcG90bGlnaHRQYWRkaW5nIC0gb3B0aW9ucy5pbmRpY2F0b3JTaXplIC8gNCk7XG4gICAgdmFyIHR5ID0gcmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nICsgcnkgLyByYWRpdXMgKiAocnMgKyBvcHRpb25zLnNwb3RsaWdodFBhZGRpbmcgLSBvcHRpb25zLmluZGljYXRvclNpemUgLyA0KTtcbiAgICB2YXIgcm90ID0gTWF0aC5QSSAvIDQgLSB0aGV0YTtcblxuICAgIGMyZC50cmFuc2xhdGUodHgsIHR5KTtcbiAgICBjMmQucm90YXRlKHJvdCk7XG5cbiAgICAvLyBjbGVhciB0aGUgaW5kaWNhdG9yXG4gICAgLy8gVGhlIGluZGljYXRvciBzaXplIChhcnJvdykgZGVwZW5kcyBvbiB0aGUgbm9kZSBzaXplIGFzIHdlbGwuIElmIHRoZSBpbmRpY2F0b3Igc2l6ZSBpcyBiaWdnZXIgYW5kIHRoZSByZW5kZXJlZCBub2RlIHNpemUgKyBwYWRkaW5nLCBcbiAgICAvLyB1c2UgdGhlIHJlbmRlcmVkIG5vZGUgc2l6ZSArIHBhZGRpbmcgYXMgdGhlIGluZGljYXRvciBzaXplLlxuICAgIHZhciBpbmRpY2F0b3JTaXplID0gb3B0aW9ucy5pbmRpY2F0b3JTaXplID4gcnMgKyBvcHRpb25zLnNwb3RsaWdodFBhZGRpbmcgPyBycyArIG9wdGlvbnMuc3BvdGxpZ2h0UGFkZGluZyA6IG9wdGlvbnMuaW5kaWNhdG9yU2l6ZTtcbiAgICBjMmQuYmVnaW5QYXRoKCk7XG4gICAgYzJkLmZpbGxSZWN0KC1pbmRpY2F0b3JTaXplIC8gMiwgLWluZGljYXRvclNpemUgLyAyLCBpbmRpY2F0b3JTaXplLCBpbmRpY2F0b3JTaXplKTtcbiAgICBjMmQuY2xvc2VQYXRoKCk7XG4gICAgYzJkLmZpbGwoKTtcblxuICAgIGMyZC5yb3RhdGUoLXJvdCk7XG4gICAgYzJkLnRyYW5zbGF0ZSgtdHgsIC10eSk7XG5cbiAgICAvLyBjMmQuc2V0VHJhbnNmb3JtKCAxLCAwLCAwLCAxLCAwLCAwICk7XG5cbiAgICAvLyBjbGVhciB0aGUgc3BvdGxpZ2h0XG4gICAgYzJkLmJlZ2luUGF0aCgpO1xuICAgIGMyZC5hcmMocmFkaXVzICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nLCByYWRpdXMgKyBvcHRpb25zLmFjdGl2ZVBhZGRpbmcsIHJzICsgb3B0aW9ucy5zcG90bGlnaHRQYWRkaW5nLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7XG4gICAgYzJkLmNsb3NlUGF0aCgpO1xuICAgIGMyZC5maWxsKCk7XG5cbiAgICBjMmQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJztcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZVBpeGVsUmF0aW8oKSB7XG4gICAgdmFyIHB4ciA9IGdldFBpeGVsUmF0aW8oKTtcbiAgICB2YXIgdyA9IGNvbnRhaW5lclNpemU7XG4gICAgdmFyIGggPSBjb250YWluZXJTaXplO1xuXG4gICAgY2FudmFzLndpZHRoID0gdyAqIHB4cjtcbiAgICBjYW52YXMuaGVpZ2h0ID0gaCAqIHB4cjtcblxuICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IHcgKyAncHgnO1xuICAgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSBoICsgJ3B4JztcblxuICAgIGMyZC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG4gICAgYzJkLnNjYWxlKHB4ciwgcHhyKTtcbiAgfVxuXG4gIHZhciByZWRyYXdpbmcgPSB0cnVlO1xuICB2YXIgcmVkcmF3UXVldWUgPSB7fTtcblxuICB2YXIgcmFmID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IGZ1bmN0aW9uIChmbikge1xuICAgIHJldHVybiBzZXRUaW1lb3V0KGZuLCAxNik7XG4gIH07XG5cbiAgdmFyIHJlZHJhdyA9IGZ1bmN0aW9uIHJlZHJhdygpIHtcbiAgICBpZiAocmVkcmF3UXVldWUuZHJhd0JnKSB7XG4gICAgICBkcmF3QmcuYXBwbHkobnVsbCwgcmVkcmF3UXVldWUuZHJhd0JnKTtcbiAgICB9XG5cbiAgICBpZiAocmVkcmF3UXVldWUuZHJhd0NvbW1hbmRzKSB7XG4gICAgICBkcmF3Q29tbWFuZHMuYXBwbHkobnVsbCwgcmVkcmF3UXVldWUuZHJhd0NvbW1hbmRzKTtcbiAgICB9XG5cbiAgICByZWRyYXdRdWV1ZSA9IHt9O1xuXG4gICAgaWYgKHJlZHJhd2luZykge1xuICAgICAgcmFmKHJlZHJhdyk7XG4gICAgfVxuICB9O1xuXG4gIC8vIGtpY2sgb2ZmXG4gIHVwZGF0ZVBpeGVsUmF0aW8oKTtcbiAgcmVkcmF3KCk7XG5cbiAgdmFyIGN0cnggPSB2b2lkIDAsXG4gICAgICBjdHJ5ID0gdm9pZCAwLFxuICAgICAgcnMgPSB2b2lkIDA7XG5cbiAgdmFyIGJpbmRpbmdzID0ge1xuICAgIG9uOiBmdW5jdGlvbiBvbihldmVudHMsIHNlbGVjdG9yLCBmbikge1xuXG4gICAgICB2YXIgX2ZuID0gZm47XG4gICAgICBpZiAoc2VsZWN0b3IgPT09ICdjb3JlJykge1xuICAgICAgICBfZm4gPSBmdW5jdGlvbiBfZm4oZSkge1xuICAgICAgICAgIGlmIChlLmN5VGFyZ2V0ID09PSBjeSB8fCBlLnRhcmdldCA9PT0gY3kpIHtcbiAgICAgICAgICAgIC8vIG9ubHkgaWYgZXZlbnQgdGFyZ2V0IGlzIGRpcmVjdGx5IGNvcmVcbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBbZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgZGF0YS5oYW5kbGVycy5wdXNoKHtcbiAgICAgICAgZXZlbnRzOiBldmVudHMsXG4gICAgICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICAgICAgZm46IF9mblxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzZWxlY3RvciA9PT0gJ2NvcmUnKSB7XG4gICAgICAgIGN5Lm9uKGV2ZW50cywgX2ZuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN5Lm9uKGV2ZW50cywgc2VsZWN0b3IsIF9mbik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVycygpIHtcbiAgICB2YXIgZ3JhYmJhYmxlID0gdm9pZCAwO1xuICAgIHZhciBpbkdlc3R1cmUgPSBmYWxzZTtcbiAgICB2YXIgZHJhZ0hhbmRsZXIgPSB2b2lkIDA7XG4gICAgdmFyIHpvb21FbmFibGVkID0gdm9pZCAwO1xuICAgIHZhciBwYW5FbmFibGVkID0gdm9pZCAwO1xuICAgIHZhciBib3hFbmFibGVkID0gdm9pZCAwO1xuICAgIHZhciBnZXN0dXJlU3RhcnRFdmVudCA9IHZvaWQgMDtcblxuICAgIHZhciByZXN0b3JlWm9vbSA9IGZ1bmN0aW9uIHJlc3RvcmVab29tKCkge1xuICAgICAgaWYgKHpvb21FbmFibGVkKSB7XG4gICAgICAgIGN5LnVzZXJab29taW5nRW5hYmxlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHJlc3RvcmVHcmFiID0gZnVuY3Rpb24gcmVzdG9yZUdyYWIoKSB7XG4gICAgICBpZiAoZ3JhYmJhYmxlKSB7XG4gICAgICAgIHRhcmdldC5ncmFiaWZ5KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciByZXN0b3JlUGFuID0gZnVuY3Rpb24gcmVzdG9yZVBhbigpIHtcbiAgICAgIGlmIChwYW5FbmFibGVkKSB7XG4gICAgICAgIGN5LnVzZXJQYW5uaW5nRW5hYmxlZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHJlc3RvcmVCb3hTZWxuID0gZnVuY3Rpb24gcmVzdG9yZUJveFNlbG4oKSB7XG4gICAgICBpZiAoYm94RW5hYmxlZCkge1xuICAgICAgICBjeS5ib3hTZWxlY3Rpb25FbmFibGVkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgcmVzdG9yZUdlc3R1cmVzID0gZnVuY3Rpb24gcmVzdG9yZUdlc3R1cmVzKCkge1xuICAgICAgcmVzdG9yZUdyYWIoKTtcbiAgICAgIHJlc3RvcmVab29tKCk7XG4gICAgICByZXN0b3JlUGFuKCk7XG4gICAgICByZXN0b3JlQm94U2VsbigpO1xuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlUGl4ZWxSYXRpbyk7XG5cbiAgICBiaW5kaW5ncy5vbigncmVzaXplJywgZnVuY3Rpb24gKCkge1xuICAgICAgdXBkYXRlUGl4ZWxSYXRpbygpO1xuICAgIH0pLm9uKG9wdGlvbnMub3Blbk1lbnVFdmVudHMsIG9wdGlvbnMuc2VsZWN0b3IsIGZ1bmN0aW9uIChlKSB7XG4gICAgICB0YXJnZXQgPSB0aGlzOyAvLyBSZW1lbWJlciB3aGljaCBub2RlIHRoZSBjb250ZXh0IG1lbnUgaXMgZm9yXG4gICAgICB2YXIgZWxlID0gdGhpcztcbiAgICAgIHZhciBpc0N5ID0gdGhpcyA9PT0gY3k7XG5cbiAgICAgIGlmIChpbkdlc3R1cmUpIHtcbiAgICAgICAgcGFyZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cbiAgICAgICAgaW5HZXN0dXJlID0gZmFsc2U7XG5cbiAgICAgICAgcmVzdG9yZUdlc3R1cmVzKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5jb21tYW5kcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgcmVzID0gb3B0aW9ucy5jb21tYW5kcyh0YXJnZXQpO1xuICAgICAgICBpZiAocmVzLnRoZW4pIHtcbiAgICAgICAgICByZXMudGhlbihmdW5jdGlvbiAoX2NvbW1hbmRzKSB7XG4gICAgICAgICAgICBjb21tYW5kcyA9IF9jb21tYW5kcztcbiAgICAgICAgICAgIG9wZW5NZW51KCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tbWFuZHMgPSByZXM7XG4gICAgICAgICAgb3Blbk1lbnUoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tbWFuZHMgPSBvcHRpb25zLmNvbW1hbmRzO1xuICAgICAgICBvcGVuTWVudSgpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBvcGVuTWVudSgpIHtcbiAgICAgICAgaWYgKCFjb21tYW5kcyB8fCBjb21tYW5kcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB6b29tRW5hYmxlZCA9IGN5LnVzZXJab29taW5nRW5hYmxlZCgpO1xuICAgICAgICBjeS51c2VyWm9vbWluZ0VuYWJsZWQoZmFsc2UpO1xuXG4gICAgICAgIHBhbkVuYWJsZWQgPSBjeS51c2VyUGFubmluZ0VuYWJsZWQoKTtcbiAgICAgICAgY3kudXNlclBhbm5pbmdFbmFibGVkKGZhbHNlKTtcblxuICAgICAgICBib3hFbmFibGVkID0gY3kuYm94U2VsZWN0aW9uRW5hYmxlZCgpO1xuICAgICAgICBjeS5ib3hTZWxlY3Rpb25FbmFibGVkKGZhbHNlKTtcblxuICAgICAgICBncmFiYmFibGUgPSB0YXJnZXQuZ3JhYmJhYmxlICYmIHRhcmdldC5ncmFiYmFibGUoKTtcbiAgICAgICAgaWYgKGdyYWJiYWJsZSkge1xuICAgICAgICAgIHRhcmdldC51bmdyYWJpZnkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBycCA9IHZvaWQgMCxcbiAgICAgICAgICAgIHJ3ID0gdm9pZCAwLFxuICAgICAgICAgICAgcmggPSB2b2lkIDAsXG4gICAgICAgICAgICBycyA9IHZvaWQgMDtcbiAgICAgICAgaWYgKCFpc0N5ICYmIGVsZSAmJiBlbGUuaXNOb2RlIGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgZWxlLmlzTm9kZSgpICYmICFlbGUuaXNQYXJlbnQoKSAmJiAhb3B0aW9ucy5hdE1vdXNlKSB7XG4gICAgICAgICAgLy8gSWYgaXQncyBhIG5vZGUsIHRoZSBkZWZhdWx0IHNwb3RsaWdodCByYWRpdXMgZm9yIGEgbm9kZSBpcyB0aGUgbm9kZSB3aWR0aFxuICAgICAgICAgIHJwID0gZWxlLnJlbmRlcmVkUG9zaXRpb24oKTtcbiAgICAgICAgICBydyA9IGVsZS5yZW5kZXJlZE91dGVyV2lkdGgoKTtcbiAgICAgICAgICByaCA9IGVsZS5yZW5kZXJlZE91dGVySGVpZ2h0KCk7XG4gICAgICAgICAgcnMgPSBydyAvIDI7XG4gICAgICAgICAgLy8gSWYgYWRhcHRhdGl2ZU5vZGVzcG90bGlnaHRSYWRpdXMgaXMgbm90IGVuYWJsZWQgYW5kIG1pbnxtYXhTcG90bGlnaHJSYWRpdXMgaXMgZGVmaW5lZCwgdXNlIHRob3NlIGluc3RlYWRcbiAgICAgICAgICBycyA9ICFvcHRpb25zLmFkYXB0YXRpdmVOb2RlU3BvdGxpZ2h0UmFkaXVzICYmIG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5tYXgocnMsIG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgICAgIHJzID0gIW9wdGlvbnMuYWRhcHRhdGl2ZU5vZGVTcG90bGlnaHRSYWRpdXMgJiYgb3B0aW9ucy5tYXhTcG90bGlnaHRSYWRpdXMgPyBNYXRoLm1pbihycywgb3B0aW9ucy5tYXhTcG90bGlnaHRSYWRpdXMpIDogcnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgaXQncyB0aGUgYmFja2dyb3VuZCBvciBhbiBlZGdlLCB0aGUgc3BvdGxpZ2h0IHJhZGl1cyBpcyB0aGUgbWlufG1heFNwb3RsaWdodFJhZGl1c1xuICAgICAgICAgIHJwID0gZS5yZW5kZXJlZFBvc2l0aW9uIHx8IGUuY3lSZW5kZXJlZFBvc2l0aW9uO1xuICAgICAgICAgIHJ3ID0gMTtcbiAgICAgICAgICByaCA9IDE7XG4gICAgICAgICAgcnMgPSBydyAvIDI7XG4gICAgICAgICAgcnMgPSBvcHRpb25zLm1pblNwb3RsaWdodFJhZGl1cyA/IE1hdGgubWF4KHJzLCBvcHRpb25zLm1pblNwb3RsaWdodFJhZGl1cykgOiBycztcbiAgICAgICAgICBycyA9IG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5taW4ocnMsIG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgICB9XG5cbiAgICAgICAgb2Zmc2V0ID0gZ2V0T2Zmc2V0KGNvbnRhaW5lcik7XG5cbiAgICAgICAgY3RyeCA9IHJwLng7XG4gICAgICAgIGN0cnkgPSBycC55O1xuICAgICAgICByID0gcncgLyAyICsgKG9wdGlvbnMubWVudVJhZGl1cyBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gb3B0aW9ucy5tZW51UmFkaXVzKHRhcmdldCkgOiBOdW1iZXIob3B0aW9ucy5tZW51UmFkaXVzKSk7XG4gICAgICAgIGNvbnRhaW5lclNpemUgPSAociArIG9wdGlvbnMuYWN0aXZlUGFkZGluZykgKiAyO1xuICAgICAgICB1cGRhdGVQaXhlbFJhdGlvKCk7XG5cbiAgICAgICAgc2V0U3R5bGVzKHBhcmVudCwge1xuICAgICAgICAgIHdpZHRoOiBjb250YWluZXJTaXplICsgJ3B4JyxcbiAgICAgICAgICBoZWlnaHQ6IGNvbnRhaW5lclNpemUgKyAncHgnLFxuICAgICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgICAgbGVmdDogcnAueCAtIHIgKyAncHgnLFxuICAgICAgICAgIHRvcDogcnAueSAtIHIgKyAncHgnXG4gICAgICAgIH0pO1xuICAgICAgICBjcmVhdGVNZW51SXRlbXMociwgcnMpO1xuICAgICAgICBxdWV1ZURyYXdCZyhyLCBycyk7XG5cbiAgICAgICAgYWN0aXZlQ29tbWFuZEkgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaW5HZXN0dXJlID0gdHJ1ZTtcbiAgICAgICAgZ2VzdHVyZVN0YXJ0RXZlbnQgPSBlO1xuICAgICAgfVxuICAgIH0pLm9uKCdjeHRkcmFnIHRhcGRyYWcnLCBvcHRpb25zLnNlbGVjdG9yLCBkcmFnSGFuZGxlciA9IGZ1bmN0aW9uIGRyYWdIYW5kbGVyKGUpIHtcblxuICAgICAgaWYgKCFpbkdlc3R1cmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOyAvLyBPdGhlcndpc2UsIG9uIG1vYmlsZSwgdGhlIHB1bGwtZG93biByZWZyZXNoIGdlc3R1cmUgZ2V0cyBhY3RpdmF0ZWRcblxuICAgICAgdmFyIG9yaWdFID0gZS5vcmlnaW5hbEV2ZW50O1xuICAgICAgdmFyIGlzVG91Y2ggPSBvcmlnRS50b3VjaGVzICYmIG9yaWdFLnRvdWNoZXMubGVuZ3RoID4gMDtcblxuICAgICAgdmFyIHBhZ2VYID0gKGlzVG91Y2ggPyBvcmlnRS50b3VjaGVzWzBdLnBhZ2VYIDogb3JpZ0UucGFnZVgpIC0gd2luZG93LnBhZ2VYT2Zmc2V0O1xuICAgICAgdmFyIHBhZ2VZID0gKGlzVG91Y2ggPyBvcmlnRS50b3VjaGVzWzBdLnBhZ2VZIDogb3JpZ0UucGFnZVkpIC0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuXG4gICAgICBhY3RpdmVDb21tYW5kSSA9IHVuZGVmaW5lZDtcblxuICAgICAgdmFyIGR4ID0gcGFnZVggLSBvZmZzZXQubGVmdCAtIGN0cng7XG4gICAgICB2YXIgZHkgPSBwYWdlWSAtIG9mZnNldC50b3AgLSBjdHJ5O1xuXG4gICAgICBpZiAoZHggPT09IDApIHtcbiAgICAgICAgZHggPSAwLjAxO1xuICAgICAgfVxuXG4gICAgICB2YXIgZCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gICAgICB2YXIgY29zVGhldGEgPSAoZHkgKiBkeSAtIGQgKiBkIC0gZHggKiBkeCkgLyAoLTIgKiBkICogZHgpO1xuICAgICAgdmFyIHRoZXRhID0gTWF0aC5hY29zKGNvc1RoZXRhKTtcblxuICAgICAgdmFyIHJ3ID0gdm9pZCAwO1xuICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuaXNOb2RlIGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgdGFyZ2V0LmlzTm9kZSgpICYmICF0YXJnZXQuaXNQYXJlbnQoKSAmJiAhb3B0aW9ucy5hdE1vdXNlKSB7XG4gICAgICAgIC8vIElmIGl0J3MgYSBub2RlLCB0aGUgZGVmYXVsdCBzcG90bGlnaHQgcmFkaXVzIGZvciBhIG5vZGUgaXMgdGhlIG5vZGUgd2lkdGhcbiAgICAgICAgcncgPSB0YXJnZXQucmVuZGVyZWRPdXRlcldpZHRoKCk7XG4gICAgICAgIHJzID0gcncgLyAyO1xuICAgICAgICAvLyBJZiBhZGFwdGF0aXZlTm9kZXNwb3RsaWdodFJhZGl1cyBpcyBub3QgZW5hYmxlZCBhbmQgbWlufG1heFNwb3RsaWdoclJhZGl1cyBpcyBkZWZpbmVkLCB1c2UgdGhvc2UgaW5zdGVhZFxuICAgICAgICBycyA9ICFvcHRpb25zLmFkYXB0YXRpdmVOb2RlU3BvdGxpZ2h0UmFkaXVzICYmIG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5tYXgocnMsIG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgICBycyA9ICFvcHRpb25zLmFkYXB0YXRpdmVOb2RlU3BvdGxpZ2h0UmFkaXVzICYmIG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5taW4ocnMsIG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgaXQncyB0aGUgYmFja2dyb3VuZCBvciBhbiBlZGdlLCB0aGUgc3BvdGxpZ2h0IHJhZGl1cyBpcyB0aGUgbWlufG1heFNwb3RsaWdodFJhZGl1c1xuICAgICAgICBydyA9IDE7XG4gICAgICAgIHJzID0gcncgLyAyO1xuICAgICAgICBycyA9IG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5tYXgocnMsIG9wdGlvbnMubWluU3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgICBycyA9IG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzID8gTWF0aC5taW4ocnMsIG9wdGlvbnMubWF4U3BvdGxpZ2h0UmFkaXVzKSA6IHJzO1xuICAgICAgfVxuXG4gICAgICByID0gcncgLyAyICsgKG9wdGlvbnMubWVudVJhZGl1cyBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gb3B0aW9ucy5tZW51UmFkaXVzKHRhcmdldCkgOiBOdW1iZXIob3B0aW9ucy5tZW51UmFkaXVzKSk7XG4gICAgICBpZiAoZCA8IHJzICsgb3B0aW9ucy5zcG90bGlnaHRQYWRkaW5nIHx8IHR5cGVvZiBvcHRpb25zLm91dHNpZGVNZW51Q2FuY2VsID09PSBcIm51bWJlclwiICYmIGQgPiByICsgb3B0aW9ucy5hY3RpdmVQYWRkaW5nICsgb3B0aW9ucy5vdXRzaWRlTWVudUNhbmNlbCkge1xuICAgICAgICAvL1xuXG4gICAgICAgIHF1ZXVlRHJhd0JnKHIsIHJzKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcXVldWVEcmF3QmcociwgcnMpO1xuXG4gICAgICB2YXIgcnggPSBkeCAqIHIgLyBkO1xuICAgICAgdmFyIHJ5ID0gZHkgKiByIC8gZDtcblxuICAgICAgaWYgKGR5ID4gMCkge1xuICAgICAgICB0aGV0YSA9IE1hdGguUEkgKyBNYXRoLmFicyh0aGV0YSAtIE1hdGguUEkpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZHRoZXRhID0gMiAqIE1hdGguUEkgLyBjb21tYW5kcy5sZW5ndGg7XG4gICAgICB2YXIgdGhldGExID0gTWF0aC5QSSAvIDI7XG4gICAgICB2YXIgdGhldGEyID0gdGhldGExICsgZHRoZXRhO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1hbmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjb21tYW5kID0gY29tbWFuZHNbaV07XG5cbiAgICAgICAgdmFyIGluVGhpc0NvbW1hbmQgPSB0aGV0YTEgPD0gdGhldGEgJiYgdGhldGEgPD0gdGhldGEyIHx8IHRoZXRhMSA8PSB0aGV0YSArIDIgKiBNYXRoLlBJICYmIHRoZXRhICsgMiAqIE1hdGguUEkgPD0gdGhldGEyO1xuXG4gICAgICAgIGlmIChjb21tYW5kLmRpc2FibGVkID09PSB0cnVlIHx8IGNvbW1hbmQuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpblRoaXNDb21tYW5kID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5UaGlzQ29tbWFuZCkge1xuICAgICAgICAgIGFjdGl2ZUNvbW1hbmRJID0gaTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoZXRhMSArPSBkdGhldGE7XG4gICAgICAgIHRoZXRhMiArPSBkdGhldGE7XG4gICAgICB9XG4gICAgICBxdWV1ZURyYXdDb21tYW5kcyhyeCwgcnksIHIsIHRoZXRhLCBycyk7XG4gICAgfSkub24oJ3RhcGRyYWcnLCBkcmFnSGFuZGxlcikub24oJ2N4dHRhcGVuZCB0YXBlbmQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgcGFyZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBpZiAoYWN0aXZlQ29tbWFuZEkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgc2VsZWN0ID0gY29tbWFuZHNbYWN0aXZlQ29tbWFuZEldLnNlbGVjdDtcblxuICAgICAgICBpZiAoc2VsZWN0KSB7XG4gICAgICAgICAgc2VsZWN0LmFwcGx5KHRhcmdldCwgW3RhcmdldCwgZ2VzdHVyZVN0YXJ0RXZlbnQsIGVdKTtcbiAgICAgICAgICBhY3RpdmVDb21tYW5kSSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpbkdlc3R1cmUgPSBmYWxzZTtcblxuICAgICAgcmVzdG9yZUdlc3R1cmVzKCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycygpIHtcbiAgICB2YXIgaGFuZGxlcnMgPSBkYXRhLmhhbmRsZXJzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5kbGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGggPSBoYW5kbGVyc1tpXTtcblxuICAgICAgaWYgKGguc2VsZWN0b3IgPT09ICdjb3JlJykge1xuICAgICAgICBjeS5vZmYoaC5ldmVudHMsIGguZm4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3kub2ZmKGguZXZlbnRzLCBoLnNlbGVjdG9yLCBoLmZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlUGl4ZWxSYXRpbyk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95SW5zdGFuY2UoKSB7XG4gICAgcmVkcmF3aW5nID0gZmFsc2U7XG5cbiAgICByZW1vdmVFdmVudExpc3RlbmVycygpO1xuXG4gICAgd3JhcHBlci5yZW1vdmUoKTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgZGVzdHJveUluc3RhbmNlKCk7XG4gICAgfVxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjeHRtZW51O1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLy8gU2ltcGxlLCBpbnRlcm5hbCBPYmplY3QuYXNzaWduKCkgcG9seWZpbGwgZm9yIG9wdGlvbnMgb2JqZWN0cyBldGMuXG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmFzc2lnbiAhPSBudWxsID8gT2JqZWN0LmFzc2lnbi5iaW5kKE9iamVjdCkgOiBmdW5jdGlvbiAodGd0KSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzcmNzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHNyY3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgc3Jjcy5maWx0ZXIoZnVuY3Rpb24gKHNyYykge1xuICAgIHJldHVybiBzcmMgIT0gbnVsbDtcbiAgfSkuZm9yRWFjaChmdW5jdGlvbiAoc3JjKSB7XG4gICAgT2JqZWN0LmtleXMoc3JjKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICByZXR1cm4gdGd0W2tdID0gc3JjW2tdO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gdGd0O1xufTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgbWVudVJhZGl1czogZnVuY3Rpb24gbWVudVJhZGl1cyhlbGUpIHtcbiAgICByZXR1cm4gMTAwO1xuICB9LCAvLyB0aGUgcmFkaXVzIG9mIHRoZSBjaXJjdWxhciBtZW51IGluIHBpeGVsc1xuICBzZWxlY3RvcjogJ25vZGUnLCAvLyBlbGVtZW50cyBtYXRjaGluZyB0aGlzIEN5dG9zY2FwZS5qcyBzZWxlY3RvciB3aWxsIHRyaWdnZXIgY3h0bWVudXNcbiAgY29tbWFuZHM6IFsvLyBhbiBhcnJheSBvZiBjb21tYW5kcyB0byBsaXN0IGluIHRoZSBtZW51IG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBhcnJheVxuICAgIC8qXG4gICAgeyAvLyBleGFtcGxlIGNvbW1hbmRcbiAgICAgIGZpbGxDb2xvcjogJ3JnYmEoMjAwLCAyMDAsIDIwMCwgMC43NSknLCAvLyBvcHRpb25hbDogY3VzdG9tIGJhY2tncm91bmQgY29sb3IgZm9yIGl0ZW1cbiAgICAgIGNvbnRlbnQ6ICdhIGNvbW1hbmQgbmFtZScgLy8gaHRtbC90ZXh0IGNvbnRlbnQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBtZW51XG4gICAgICBjb250ZW50U3R5bGU6IHt9LCAvLyBjc3Mga2V5OnZhbHVlIHBhaXJzIHRvIHNldCB0aGUgY29tbWFuZCdzIGNzcyBpbiBqcyBpZiB5b3Ugd2FudFxuICAgICAgc2VsZWN0OiBmdW5jdGlvbihlbGUpeyAvLyBhIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgd2hlbiB0aGUgY29tbWFuZCBpcyBzZWxlY3RlZFxuICAgICAgICBjb25zb2xlLmxvZyggZWxlLmlkKCkgKSAvLyBgZWxlYCBob2xkcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgZWxlbWVudFxuICAgICAgfSxcbiAgICAgIGVuYWJsZWQ6IHRydWUgLy8gd2hldGhlciB0aGUgY29tbWFuZCBpcyBzZWxlY3RhYmxlXG4gICAgfVxuICAgICovXG4gIF0sIC8vIGZ1bmN0aW9uKCBlbGUgKXsgcmV0dXJuIFsgLyouLi4qLyBdIH0sIC8vIGV4YW1wbGUgZnVuY3Rpb24gZm9yIGNvbW1hbmRzXG4gIGZpbGxDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC43NSknLCAvLyB0aGUgYmFja2dyb3VuZCBjb2xvdXIgb2YgdGhlIG1lbnVcbiAgYWN0aXZlRmlsbENvbG9yOiAncmdiYSgxLCAxMDUsIDIxNywgMC43NSknLCAvLyB0aGUgY29sb3VyIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHNlbGVjdGVkIGNvbW1hbmRcbiAgYWN0aXZlUGFkZGluZzogMjAsIC8vIGFkZGl0aW9uYWwgc2l6ZSBpbiBwaXhlbHMgZm9yIHRoZSBhY3RpdmUgY29tbWFuZFxuICBpbmRpY2F0b3JTaXplOiAyNCwgLy8gdGhlIHNpemUgaW4gcGl4ZWxzIG9mIHRoZSBwb2ludGVyIHRvIHRoZSBhY3RpdmUgY29tbWFuZCwgd2lsbCBkZWZhdWx0IHRvIHRoZSBub2RlIHNpemUgaWYgdGhlIG5vZGUgc2l6ZSBpcyBzbWFsbGVyIHRoYW4gdGhlIGluZGljYXRvciBzaXplLCBcbiAgc2VwYXJhdG9yV2lkdGg6IDMsIC8vIHRoZSBlbXB0eSBzcGFjaW5nIGluIHBpeGVscyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgY29tbWFuZHNcbiAgc3BvdGxpZ2h0UGFkZGluZzogNCwgLy8gZXh0cmEgc3BhY2luZyBpbiBwaXhlbHMgYmV0d2VlbiB0aGUgZWxlbWVudCBhbmQgdGhlIHNwb3RsaWdodFxuICBhZGFwdGF0aXZlTm9kZVNwb3RsaWdodFJhZGl1czogZmFsc2UsIC8vIHNwZWNpZnkgd2hldGhlciB0aGUgc3BvdGxpZ2h0IHJhZGl1cyBzaG91bGQgYWRhcHQgdG8gdGhlIG5vZGUgc2l6ZVxuICBtaW5TcG90bGlnaHRSYWRpdXM6IDI0LCAvLyB0aGUgbWluaW11bSByYWRpdXMgaW4gcGl4ZWxzIG9mIHRoZSBzcG90bGlnaHQgKGlnbm9yZWQgZm9yIHRoZSBub2RlIGlmIGFkYXB0YXRpdmVOb2RlU3BvdGxpZ2h0UmFkaXVzIGlzIGVuYWJsZWQgYnV0IHN0aWxsIHVzZWQgZm9yIHRoZSBlZGdlICYgYmFja2dyb3VuZClcbiAgbWF4U3BvdGxpZ2h0UmFkaXVzOiAzOCwgLy8gdGhlIG1heGltdW0gcmFkaXVzIGluIHBpeGVscyBvZiB0aGUgc3BvdGxpZ2h0IChpZ25vcmVkIGZvciB0aGUgbm9kZSBpZiBhZGFwdGF0aXZlTm9kZVNwb3RsaWdodFJhZGl1cyBpcyBlbmFibGVkIGJ1dCBzdGlsbCB1c2VkIGZvciB0aGUgZWRnZSAmIGJhY2tncm91bmQpXG4gIG9wZW5NZW51RXZlbnRzOiAnY3h0dGFwc3RhcnQgdGFwaG9sZCcsIC8vIHNwYWNlLXNlcGFyYXRlZCBjeXRvc2NhcGUgZXZlbnRzIHRoYXQgd2lsbCBvcGVuIHRoZSBtZW51OyBvbmx5IGBjeHR0YXBzdGFydGAgYW5kL29yIGB0YXBob2xkYCB3b3JrIGhlcmVcbiAgaXRlbUNvbG9yOiAnd2hpdGUnLCAvLyB0aGUgY29sb3VyIG9mIHRleHQgaW4gdGhlIGNvbW1hbmQncyBjb250ZW50XG4gIGl0ZW1UZXh0U2hhZG93Q29sb3I6ICd0cmFuc3BhcmVudCcsIC8vIHRoZSB0ZXh0IHNoYWRvdyBjb2xvdXIgb2YgdGhlIGNvbW1hbmQncyBjb250ZW50XG4gIHpJbmRleDogOTk5OSwgLy8gdGhlIHotaW5kZXggb2YgdGhlIHVpIGRpdlxuICBhdE1vdXNlOiBmYWxzZSwgLy8gZHJhdyBtZW51IGF0IG1vdXNlIHBvc2l0aW9uXG4gIG91dHNpZGVNZW51Q2FuY2VsOiBmYWxzZSAvLyBpZiBzZXQgdG8gYSBudW1iZXIsIHRoaXMgd2lsbCBjYW5jZWwgdGhlIGNvbW1hbmQgaWYgdGhlIHBvaW50ZXIgaXMgcmVsZWFzZWQgb3V0c2lkZSBvZiB0aGUgc3BvdGxpZ2h0LCBwYWRkZWQgYnkgdGhlIG51bWJlciBnaXZlblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciByZW1vdmVFbGVzID0gZnVuY3Rpb24gcmVtb3ZlRWxlcyhxdWVyeSkge1xuICB2YXIgYW5jZXN0b3IgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGRvY3VtZW50O1xuXG4gIHZhciBlbHMgPSBhbmNlc3Rvci5xdWVyeVNlbGVjdG9yQWxsKHF1ZXJ5KTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVscy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbCA9IGVsc1tpXTtcblxuICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpO1xuICB9XG59O1xuXG52YXIgc2V0U3R5bGVzID0gZnVuY3Rpb24gc2V0U3R5bGVzKGVsLCBzdHlsZSkge1xuICB2YXIgcHJvcHMgPSBPYmplY3Qua2V5cyhzdHlsZSk7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBwcm9wcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBlbC5zdHlsZVtwcm9wc1tpXV0gPSBzdHlsZVtwcm9wc1tpXV07XG4gIH1cbn07XG5cbnZhciBjcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudChvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQob3B0aW9ucy50YWcgfHwgJ2RpdicpO1xuXG4gIGVsLmNsYXNzTmFtZSA9IG9wdGlvbnMuY2xhc3MgfHwgJyc7XG5cbiAgaWYgKG9wdGlvbnMuc3R5bGUpIHtcbiAgICBzZXRTdHlsZXMoZWwsIG9wdGlvbnMuc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIGVsO1xufTtcblxudmFyIGdldFBpeGVsUmF0aW8gPSBmdW5jdGlvbiBnZXRQaXhlbFJhdGlvKCkge1xuICByZXR1cm4gd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn07XG5cbnZhciBnZXRPZmZzZXQgPSBmdW5jdGlvbiBnZXRPZmZzZXQoZWwpIHtcbiAgdmFyIG9mZnNldCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gIHJldHVybiB7XG4gICAgbGVmdDogb2Zmc2V0LmxlZnQgKyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgKyBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSlbJ3BhZGRpbmctbGVmdCddKSArIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KVsnYm9yZGVyLWxlZnQtd2lkdGgnXSksXG4gICAgdG9wOiBvZmZzZXQudG9wICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgKyBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSlbJ3BhZGRpbmctdG9wJ10pICsgcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpWydib3JkZXItdG9wLXdpZHRoJ10pXG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHsgcmVtb3ZlRWxlczogcmVtb3ZlRWxlcywgc2V0U3R5bGVzOiBzZXRTdHlsZXMsIGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQsIGdldFBpeGVsUmF0aW86IGdldFBpeGVsUmF0aW8sIGdldE9mZnNldDogZ2V0T2Zmc2V0IH07XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgY3h0bWVudSA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8vIHJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9uIG9uIGEgY3l0b3NjYXBlIGxpYiByZWZcbnZhciByZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGN5dG9zY2FwZSkge1xuICBpZiAoIWN5dG9zY2FwZSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBjYW4ndCByZWdpc3RlciBpZiBjeXRvc2NhcGUgdW5zcGVjaWZpZWRcblxuICBjeXRvc2NhcGUoJ2NvcmUnLCAnY3h0bWVudScsIGN4dG1lbnUpOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYgKHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKGN5dG9zY2FwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXI7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyIsbnVsbCwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBpbXBvcnQge05vZGVDb2xsZWN0aW9uLCBOb2RlU2luZ3VsYXJ9IGZyb20gXCJjeXRvc2NhcGVcIjtcblxuICAgIGV4cG9ydCBsZXQgbmFtZTogc3RyaW5nO1xuICAgIGV4cG9ydCBsZXQgbm9kZXM6IE5vZGVDb2xsZWN0aW9uO1xuICAgIGV4cG9ydCBsZXQgb25DbGlja1RleHQ7XG4gICAgZXhwb3J0IGxldCBvbkNsaWNrQnV0dG9uO1xuICAgIGV4cG9ydCBsZXQgaWNvbiA9IG51bGw7XG4gICAgZXhwb3J0IGxldCBpY29uX3Rvb2x0aXAgPSBudWxsO1xuICAgIGV4cG9ydCBsZXQgY3R4bWVudTtcbiAgICBsZXQgZGlzcGxheUxpc3QgPSB0cnVlO1xuXG4gICAgbGV0IHNldERpc3BsYXlMaXN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGRpc3BsYXlMaXN0ID0gIWRpc3BsYXlMaXN0O1xuICAgIH1cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwianVnZ2wtbGlzdC1oZWFkZXJcIiBvbjpjbGljaz17c2V0RGlzcGxheUxpc3R9PlxuICAgIHtuYW1lfVxuPC9kaXY+XG57I2lmIGRpc3BsYXlMaXN0fVxuICAgIHsjZWFjaCBub2Rlcy5zb3J0KChhLCBiKSA9PiBhLmRhdGEoXCJuYW1lXCIpLmxvY2FsZUNvbXBhcmUoYi5kYXRhKFwibmFtZVwiKSkpIGFzIHZ9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLWl0ZW1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLWl0ZW0tc2VsZiBpcy1jbGlja2FibGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZS1pdGVtLWlubmVyIGp1Z2dsLWxpc3QtdGV4dFwiIG9uOmNsaWNrPXsoZSkgPT4gb25DbGlja1RleHQodiwgZSl9XG4gICAgICAgICAgICAgICAgICAgICBvbjpjb250ZXh0bWVudT17KGUpID0+IGN0eG1lbnUodiwgZSl9XG4gICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiB7di5zdHlsZSgnYmFja2dyb3VuZC1jb2xvcicpfVwiPlxuICAgICAgICAgICAgICAgICAgICB7di5kYXRhKFwibmFtZVwiKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7I2lmIGljb259XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwianVnZ2wtYnV0dG9uIGp1Z2dsLWJ1dHRvbi1wYW5lXCIgb246Y2xpY2s9e29uQ2xpY2tCdXR0b24odil9IGFyaWEtbGFiZWw9e2ljb25fdG9vbHRpcH0gPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT0gXCJ3aWR0aDoxNHB4O2hlaWdodDoxNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPXtpY29ufSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgey9lYWNofVxuey9pZn0iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAgIGltcG9ydCB7SnVnZ2x9IGZyb20gXCIuLi92aXovdmlzdWFsaXphdGlvblwiO1xuICAgIGltcG9ydCB7Tm9kZUNvbGxlY3Rpb24sIE5vZGVTaW5ndWxhcn0gZnJvbSBcImN5dG9zY2FwZVwiO1xuICAgIGltcG9ydCBjeXRvc2NhcGUgZnJvbSBcImN5dG9zY2FwZVwiO1xuICAgIGltcG9ydCB7Q0xBU1NfSEFSRF9GSUxURVJFRH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuICAgIGltcG9ydCBOb2Rlc0xpc3QgZnJvbSBcIi4vTm9kZXNMaXN0LnN2ZWx0ZVwiO1xuICAgIGltcG9ydCB7TWVudX0gZnJvbSBcIm9ic2lkaWFuXCI7XG4gICAgaW1wb3J0IHtWaXpJZH0gZnJvbSBcImp1Z2dsLWFwaVwiO1xuICAgIGltcG9ydCB7aWNvbnN9IGZyb20gJy4uL3VpL2ljb25zJztcblxuICAgIGxldCB2aXo6IEp1Z2dsID0gbnVsbDtcbiAgICBsZXQgdmlzaWJsZTogTm9kZUNvbGxlY3Rpb24gPSBjeXRvc2NhcGUoKS5jb2xsZWN0aW9uKCk7XG4gICAgbGV0IGhpZGRlbjogTm9kZUNvbGxlY3Rpb24gPSBjeXRvc2NhcGUoKS5jb2xsZWN0aW9uKCk7XG4gICAgZXhwb3J0IGNvbnN0IHNldFZpeiA9IGZ1bmN0aW9uIChqdWdnbDogSnVnZ2wpIHtcbiAgICAgICAgaWYgKCFqdWdnbCkge1xuICAgICAgICAgICAgdml6ID0gbnVsbDtcbiAgICAgICAgICAgIHZpc2libGUgPSBjeXRvc2NhcGUoKS5jb2xsZWN0aW9uKCk7XG4gICAgICAgICAgICBoaWRkZW4gPSBjeXRvc2NhcGUoKS5jb2xsZWN0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdml6ID0ganVnZ2w7XG4gICAgICAgIC8vIFRPRE86IENhbiBwcm9iYWJseSBkbyBzb21ldGhpbmcgbGlrZSBub3QgSEFSRCBGSUxURVJFRCwgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBzdHlsaW5nLlxuICAgICAgICB2aXNpYmxlID0gdml6LnZpei5ub2RlcyhcIjp2aXNpYmxlXCIpO1xuICAgICAgICBoaWRkZW4gPSB2aXoudml6Lm5vZGVzKGAuJHtDTEFTU19IQVJEX0ZJTFRFUkVEfWApO1xuICAgIH1cbiAgICBsZXQgY3R4TWVudSA9IGZ1bmN0aW9uKG5vZGU6IE5vZGVTaW5ndWxhciwgZTogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCBmaWxlTWVudSA9IG5ldyBNZW51KCk7IC8vIENyZWF0ZXMgZW1wdHkgZmlsZSBtZW51XG4gICAgICAgIGNvbnN0IGlkID0gVml6SWQuZnJvbU5vZGUobm9kZSk7XG4gICAgICAgIGNvbnN0IGZpbGUgPSB2aXoucGx1Z2luLm1ldGFkYXRhLmdldEZpcnN0TGlua3BhdGhEZXN0KGlkLmlkLCAnJyk7XG4gICAgICAgIGlmICghKGZpbGUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIC8vIGhvb2sgZm9yIHBsdWdpbnMgdG8gcG9wdWxhdGUgbWVudSB3aXRoIFwiZmlsZS1hd2FyZVwiIG1lbnUgaXRlbXNcbiAgICAgICAgICAgIHZpei5wbHVnaW4uYXBwLndvcmtzcGFjZS50cmlnZ2VyKCdmaWxlLW1lbnUnLCBmaWxlTWVudSwgZmlsZSwgJ215LWNvbnRleHQtbWVudScsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHZpei5tb2RlLmZpbGxNZW51KGZpbGVNZW51LCBub2RlKTtcbiAgICAgICAgZmlsZU1lbnUuc2hvd0F0UG9zaXRpb24oe3g6IGUueCwgeTogZS55fSk7XG4gICAgfVxuICAgIGxldCBjbGlja1R4dCA9IGZ1bmN0aW9uKG5vZGU6IE5vZGVTaW5ndWxhciwgZTogTW91c2VFdmVudCkge1xuICAgICAgICB2aXoucGx1Z2luLm9wZW5GaWxlRnJvbU5vZGUobm9kZSwgZS5tZXRhS2V5KTtcbiAgICB9XG4gICAgbGV0IGZpbHRlckJ1dHRvbkNsaWNrID0gZnVuY3Rpb24obm9kZTogTm9kZVNpbmd1bGFyKSB7XG4gICAgICAgIG5vZGUucmVtb3ZlQ2xhc3MoQ0xBU1NfSEFSRF9GSUxURVJFRCk7XG4gICAgICAgIHZpei5vbkdyYXBoQ2hhbmdlZCh0cnVlLCB0cnVlKTtcbiAgICB9XG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImp1Z2dsLW5vZGVzLXBhbmVcIj5cbiAgICA8Tm9kZXNMaXN0IG5vZGVzPXt2aXNpYmxlfSBuYW1lPVwiTm9kZXMgaW4gZ3JhcGhcIiBjdHhtZW51PXtjdHhNZW51fSBvbkNsaWNrVGV4dD17Y2xpY2tUeHR9Lz5cblxuICAgIDxOb2Rlc0xpc3Qgbm9kZXM9e2hpZGRlbn0gbmFtZT1cIkhpZGRlbiBub2Rlc1wiIGN0eG1lbnU9e2N0eE1lbnV9IG9uQ2xpY2tUZXh0PXtjbGlja1R4dH0gaWNvbj17aWNvbnMuYWdfdW5oaWRlfVxuICAgIGljb25fdG9vbHRpcD1cIlNob3cgaW4gZ3JhcGhcIiBvbkNsaWNrQnV0dG9uPXtmaWx0ZXJCdXR0b25DbGlja30gLz5cbjwvZGl2PiIsbnVsbCwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBpbXBvcnQge1NIQVBFU30gZnJvbSBcIi4uL3Zpei9zdHlsZXNoZWV0XCI7XG4gICAgaW1wb3J0IHR5cGUge1N0eWxlR3JvdXAsIEljb24sIElKdWdnbFBsdWdpbn0gZnJvbSBcImp1Z2dsLWFwaVwiO1xuICAgIGltcG9ydCB7SWNvbk1vZGFsfSBmcm9tIFwiLi9pY29uLW1vZGFsXCI7XG4gICAgLy8gaW1wb3J0IEp1Z2dsUGx1Z2luIGZyb20gXCIuLi9tYWluXCI7XG4gICAgaW1wb3J0IHtlbXB0eVN0eWxlR3JvdXB9IGZyb20gXCIuLi9zZXR0aW5nc1wiO1xuICAgIGltcG9ydCB7aWNvbnN9IGZyb20gXCIuLi91aS9pY29uc1wiO1xuXG4gICAgZXhwb3J0IGxldCBncm91cHM6IFN0eWxlR3JvdXBbXTtcbiAgICBleHBvcnQgbGV0IHRpdGxlOiBzdHJpbmc7Ly9cbiAgICBleHBvcnQgbGV0IG9uQ2hhbmdlRmlsdGVyO1xuICAgIGV4cG9ydCBsZXQgb25DaGFuZ2VHcm91cHM7XG4gICAgZXhwb3J0IGxldCBwbHVnaW46IElKdWdnbFBsdWdpbjtcbiAgICBsZXQgb25OZXdHcm91cCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBncm91cHMucHVzaCh7Li4uZW1wdHlTdHlsZUdyb3VwfSk7XG4gICAgICAgIGdyb3VwcyA9IGdyb3VwcztcbiAgICAgICAgb25DaGFuZ2VHcm91cHMoKTtcbiAgICB9XG4gICAgbGV0IG9uRGVsZXRlR3JvdXAgPSBmdW5jdGlvbihncm91cDogU3R5bGVHcm91cCkge1xuICAgICAgICBncm91cHMucmVtb3ZlKGdyb3VwKTtcbiAgICAgICAgZ3JvdXBzID0gZ3JvdXBzO1xuICAgICAgICBvbkNoYW5nZUZpbHRlcigpO1xuICAgICAgICBvbkNoYW5nZUdyb3VwcygpO1xuICAgIH1cbiAgICBsZXQgb25JY29uQnV0dG9uID0gZnVuY3Rpb24oZ3JvdXA6IFN0eWxlR3JvdXApIHtcbiAgICAgICAgbGV0IGNhbGxiYWNrID0gZnVuY3Rpb24oaWNvbjogSWNvbikge1xuICAgICAgICAgICAgZ3JvdXAuaWNvbiA9IGljb247XG4gICAgICAgICAgICBvbkNoYW5nZUdyb3VwcygpO1xuICAgICAgICAgICAgZ3JvdXBzID0gZ3JvdXBzO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpY29uTW9kYWwgPSBuZXcgSWNvbk1vZGFsKHBsdWdpbi5hcHAsIGNhbGxiYWNrLCBncm91cC5pY29uLmNvbG9yKTtcbiAgICAgICAgaWNvbk1vZGFsLm9wZW4oKTtcbiAgICB9XG4gICAgbGV0IHNob3dHcm91cCA9IGZ1bmN0aW9uKGdyb3VwOiBTdHlsZUdyb3VwLCBzaG93OiBib29sZWFuKSB7XG4gICAgICAgIGdyb3VwLnNob3dJblBhbmUgPSBzaG93O1xuICAgICAgICBncm91cHMgPSBncm91cHM7XG4gICAgfVxuXG4gICAgbGV0IGNoYW5nZVNob3cgPSBmdW5jdGlvbihncm91cDogU3R5bGVHcm91cCkge1xuICAgICAgICBncm91cC5zaG93ID0gIWdyb3VwLnNob3c7XG4gICAgICAgIG9uQ2hhbmdlR3JvdXBzKCk7XG4gICAgICAgIGdyb3VwcyA9IGdyb3VwcztcbiAgICB9XG5cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwianVnZ2wtbGlzdC1oZWFkZXJcIj5cbiAgICB7dGl0bGV9XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJqdWdnbC1zdHlsZS1ncm91cC1jb250YWluZXJcIj5cbiAgICB7I2VhY2ggZ3JvdXBzIGFzIGdyb3VwfVxuICAgICAgICB7I2lmIGdyb3VwLnNob3dJblBhbmV9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJqdWdnbC1zdHlsZS1ncm91cFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImp1Z2dsLXN0eWxlLXBhbmUtbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrYWJsZS1pY29uXCIgYXJpYS1sYWJlbD1cIkhpZGUgZ3JvdXAgb3B0aW9uc1wiIG9uOmNsaWNrPXtzaG93R3JvdXAoZ3JvdXAsIGZhbHNlKX0gZmxleC1iYXNpcz1cIjEwMCVcIiA+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgY2xhc3M9XCJyaWdodC10cmlhbmdsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05NC45LDIwLjhjLTEuNC0yLjUtNC4xLTQuMS03LjEtNC4xSDEyLjJjLTMsMC01LjcsMS42LTcuMSw0LjFjLTEuMywyLjQtMS4yLDUuMiwwLjIsNy42TDQzLjEsODhjMS41LDIuMyw0LDMuNyw2LjksMy43IHM1LjQtMS40LDYuOS0zLjdsMzcuOC01OS42Qzk2LjEsMjYsOTYuMiwyMy4yLDk0LjksMjAuOEw5NC45LDIwLjh6XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrYWJsZS1pY29uXCIgYXJpYS1sYWJlbD17Z3JvdXAuc2hvdyA/IFwiSGlkZSBncm91cFwiIDogXCJTaG93IGdyb3VwXCJ9IG9uOmNsaWNrPXtjaGFuZ2VTaG93KGdyb3VwKX0gZmxleC1iYXNpcz1cIjEwMCVcIiA+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgY2xhc3M9XCJyaWdodC10cmlhbmdsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD17Z3JvdXAuc2hvdyA/IGljb25zLmFnX3VuaGlkZSA6IGljb25zLmFnX2hpZGV9PlxuICAgICAgICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBmaWx0ZXIuLi5cIiBiaW5kOnZhbHVlPXtncm91cC5maWx0ZXJ9IG9uOmNoYW5nZT17b25DaGFuZ2VGaWx0ZXJ9Lz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2FibGUtaWNvblwiIGFyaWEtbGFiZWw9XCJEZWxldGUgZ3JvdXBcIiBvbjpjbGljaz17b25EZWxldGVHcm91cChncm91cCl9IGZsZXgtYmFzaXM9XCIxMDAlXCIgPlxuICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxMDAgMTAwXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgY2xhc3M9XCJjcm9zc1wiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS40LDEyLjZsLTIuOSwyLjlMNDcuMSw1MEwxMi42LDg0LjZsMi45LDIuOUw1MCw1Mi45bDM0LjYsMzQuNmwyLjktMi45TDUyLjksNTBsMzQuNi0zNC42bC0yLjktMi45TDUwLDQ3LjFMMTUuNCwxMi42eiBcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdWdnbC1zdHlsZS1wYW5lLWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgYXJpYS1sYWJlbD1cIkNsaWNrIHRvIGNoYW5nZSBjb2xvclwiIGJpbmQ6dmFsdWU9e2dyb3VwLmNvbG9yfSBmbGV4LWJhc2lzPVwiMTAwJVwiIG9uOmNoYW5nZT17b25DaGFuZ2VHcm91cHN9Lz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNlbGVjdCBiaW5kOnZhbHVlPXtncm91cC5zaGFwZX0gY2xhc3M9XCJkcm9wZG93blwiIG9uOmJsdXI9e29uQ2hhbmdlR3JvdXBzfT5cbiAgICAgICAgICAgICAgICB7I2VhY2ggU0hBUEVTIGFzIHNoYXBlfVxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPXtzaGFwZX0+e3NoYXBlfTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIHsvZWFjaH1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVnZ2wtc3R5bGUtcGFuZS1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgeyNpZiBncm91cC5pY29uLnBhdGh9XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBhcmlhLWxhYmVsPVwiQ2xpY2sgdG8gY2hhbmdlIGljb24gY29sb3JcIiBiaW5kOnZhbHVlPXtncm91cC5pY29uLmNvbG9yfSBmbGV4LWJhc2lzPVwiMTAwJVwiIG9uOmNoYW5nZT17b25DaGFuZ2VHcm91cHN9Lz5cbiAgICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwianVnZ2wtaWNvbi1idXR0b25cIiBvbjpjbGljaz17b25JY29uQnV0dG9uKGdyb3VwKX0+XG4gICAgICAgICAgICAgICAgeyNpZiBncm91cC5pY29uLnBhdGh9XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9IFwid2lkdGg6MjRweDtoZWlnaHQ6MjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudGNvbG9yXCIgZD17Z3JvdXAuaWNvbi5wYXRofSAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICAgICAgICAgIHtncm91cC5pY29uLm5hbWV9XG4gICAgICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVnZ2wtc3R5bGUtcGFuZS1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICB7TWF0aC5yb3VuZChncm91cC5zaXplKiAxMDApIC8gMTAwfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzbGlkZXJcIiB0eXBlPVwicmFuZ2VcIiBtaW49XCIwLjAxXCIgbWF4PVwiMTBcIiBzdGVwPVwiYW55XCIgYmluZDp2YWx1ZT17Z3JvdXAuc2l6ZX0gYXJpYS1sYWJlbD1cIlNpemVcIiBvbjpjaGFuZ2U9e29uQ2hhbmdlR3JvdXBzfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgezplbHNlfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImp1Z2dsLXN0eWxlLWdyb3VwLWhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2FibGUtaWNvblwiIHN0eWxlPVwiZGlzcGxheTogaW5saW5lXCIgYXJpYS1sYWJlbD1cIlNob3cgZ3JvdXAgb3B0aW9uc1wiIG9uOmNsaWNrPXtzaG93R3JvdXAoZ3JvdXAsIHRydWUpfSA+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxMDAgMTAwXCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIGNsYXNzPVwicmlnaHQtdHJpYW5nbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB0cmFuc2Zvcm09XCJyb3RhdGUoMjcwIDUwIDUwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTk0LjksMjAuOGMtMS40LTIuNS00LjEtNC4xLTcuMS00LjFIMTIuMmMtMywwLTUuNywxLjYtNy4xLDQuMWMtMS4zLDIuNC0xLjIsNS4yLDAuMiw3LjZMNDMuMSw4OGMxLjUsMi4zLDQsMy43LDYuOSwzLjcgczUuNC0xLjQsNi45LTMuN2wzNy44LTU5LjZDOTYuMSwyNiw5Ni4yLDIzLjIsOTQuOSwyMC44TDk0LjksMjAuOHpcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgIHsvaWZ9XG4gICAgey9lYWNofVxuICAgIDxkaXYgY2xhc3M9XCJncmFwaC1jb2xvci1idXR0b24tY29udGFpbmVyXCIgb246Y2xpY2s9e29uTmV3R3JvdXB9PlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibW9kLWN0YVwiPlxuICAgICAgICAgICAgTmV3IGdyb3VwXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAgIGltcG9ydCB7SnVnZ2x9IGZyb20gXCIuLi92aXovdmlzdWFsaXphdGlvblwiO1xuICAgIGltcG9ydCBTdHlsZUdyb3VwcyBmcm9tIFwiLi9TdHlsZUdyb3Vwcy5zdmVsdGVcIjtcbiAgICBpbXBvcnQgdHlwZSB7SUp1Z2dsUGx1Z2lufSBmcm9tIFwianVnZ2wtYXBpXCI7XG5cbiAgICBleHBvcnQgbGV0IHZpejogSnVnZ2w7XG4gICAgZXhwb3J0IGxldCBwbHVnaW46IElKdWdnbFBsdWdpbjtcbiAgICBsZXQgc2V0dGluZ3MgPSBwbHVnaW4/LnNldHRpbmdzO1xuXG4gICAgZXhwb3J0IGNvbnN0IHNldFZpeiA9IGZ1bmN0aW9uIChfdml6OiBKdWdnbCkge1xuICAgICAgICB2aXogPSBfdml6O1xuICAgICAgICBpZiAodml6KSB7XG4gICAgICAgICAgICBsb2NhbEdyb3VwcyA9IHZpei5zZXR0aW5ncy5zdHlsZUdyb3VwcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvY2FsR3JvdXBzID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbG9jYWxHcm91cHMgPSBbXTtcbiAgICBsZXQgZ2xvYmFsR3JvdXBzID0gc2V0dGluZ3MuZ2xvYmFsU3R5bGVHcm91cHM7XG4gICAgbGV0IG9uQ2hhbmdlR3JvdXBzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh2aXopIHtcbiAgICAgICAgICAgIHZpei51cGRhdGVTdHlsZXNoZWV0KClcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgb25DaGFuZ2VHcm91cHNHbG9iYWwgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcGx1Z2luLnNhdmVEYXRhKHNldHRpbmdzKTtcbiAgICAgICAgcGx1Z2luLmFjdGl2ZUdyYXBocygpLmZvckVhY2goaiA9PiBqLnVwZGF0ZVN0eWxlc2hlZXQoKSk7XG4gICAgfVxuICAgIGxldCBvbkNoYW5nZUZpbHRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodml6KSB7XG4gICAgICAgICAgICB2aXouYXNzaWduU3R5bGVHcm91cHMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgb25DaGFuZ2VGaWx0ZXJHbG9iYWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHBsdWdpbi5zYXZlRGF0YShzZXR0aW5ncyk7XG4gICAgICAgIHBsdWdpbi5hY3RpdmVHcmFwaHMoKS5mb3JFYWNoKGogPT4gai5hc3NpZ25TdHlsZUdyb3VwcygpKTtcbiAgICB9XG5cbjwvc2NyaXB0PlxuPGRpdiBjbGFzcz1cImp1Z2dsLXN0eWxlLXBhbmVcIj5cbiAgICA8U3R5bGVHcm91cHMgZ3JvdXBzPXtsb2NhbEdyb3Vwc30gdGl0bGU9XCJMb2NhbCBzdHlsZSBncm91cHNcIiBvbkNoYW5nZUdyb3Vwcz17b25DaGFuZ2VHcm91cHN9IG9uQ2hhbmdlRmlsdGVyPXtvbkNoYW5nZUZpbHRlcn0gcGx1Z2luPXtwbHVnaW59IC8+XG4gICAgPFN0eWxlR3JvdXBzIGdyb3Vwcz17Z2xvYmFsR3JvdXBzfSB0aXRsZT1cIkdsb2JhbCBzdHlsZSBncm91cHNcIiBvbkNoYW5nZUdyb3Vwcz17b25DaGFuZ2VHcm91cHNHbG9iYWx9IG9uQ2hhbmdlRmlsdGVyPXtvbkNoYW5nZUZpbHRlckdsb2JhbH0gcGx1Z2luPXtwbHVnaW59IC8+XG48L2Rpdj4iLG51bGwsbnVsbCwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgICBleHBvcnQgbGV0IGNhbmNlbENhbGxiYWNrO1xuICAgIGV4cG9ydCBsZXQgY29udGludWVDYWxsYmFjaztcbjwvc2NyaXB0PlxuXG5XYXJuaW5nOiBKdWdnbCBpcyBub3Qgb3B0aW1pemVkIGZvciBsYXJnZSBncmFwaHMuIFdlIGFkdmlzZSBub3QgdG8gdXNlIHRoZSBnbG9iYWwgZ3JhcGggaWYgeW91ciB2YXVsdFxuY29udGFpbnMgbW9yZSB0aGFuIDI1MCBub3RlcyB0byBwcmV2ZW50IE9ic2lkaWFuIGZyb20gZnJlZXppbmcuIDxiciAvPlxuXG48YnV0dG9uIGNsYXNzPSdtb2QtY3RhJyBvbjpjbGljaz17Y2FuY2VsQ2FsbGJhY2t9PkNhbmNlbDwvYnV0dG9uPlxuPGJ1dHRvbiBjbGFzcz1cIm1vZC1jdGFcIiBvbjpjbGljaz17Y29udGludWVDYWxsYmFja30+VW5kZXJzdG9vZCwgY29udGludWU8L2J1dHRvbj4iLG51bGwsbnVsbF0sIm5hbWVzIjpbIkV2ZW50cyIsInBhcnNlRnJvbnRNYXR0ZXJUYWdzIiwicGFyc2VGcm9udE1hdHRlclN0cmluZ0FycmF5IiwiQ29tcG9uZW50IiwiaXRlcmF0ZUNhY2hlUmVmcyIsImdldExpbmtwYXRoIiwiVEZpbGUiLCJub29wIiwicnVuIiwiZWxlbWVudCIsInVwZGF0ZSIsImZzIiwiUGx1Z2luU2V0dGluZ1RhYiIsIlNldHRpbmciLCJGVU5DX0VSUk9SX1RFWFQiLCJOQU4iLCJzeW1ib2xUYWciLCJyZUlzQmFkSGV4IiwicmVJc0JpbmFyeSIsInJlSXNPY3RhbCIsImZyZWVQYXJzZUludCIsImZyZWVHbG9iYWwiLCJnbG9iYWwiLCJmcmVlU2VsZiIsInJvb3QiLCJvYmplY3RQcm90byIsIm9iamVjdFRvU3RyaW5nIiwibmF0aXZlTWF4Iiwibm93IiwiZGVib3VuY2UiLCJ0b051bWJlciIsImlzT2JqZWN0IiwiaXNPYmplY3RMaWtlIiwiaXNTeW1ib2wiLCJ0aGlzIiwicmVxdWlyZSQkMCIsIl9pbnRlcm9wRGVmYXVsdCIsInV0aWwiLCJyZXF1aXJlJCQxIiwiX2RlZmluZVByb3BlcnR5IiwibmF2aWdhdG9yIiwibWVtb2l6ZSIsInBlcmZvcm1hbmNlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2xvbmUiLCJjb3B5QXJyYXkiLCJkZWZhdWx0cyIsIk1hcCQxIiwiU2V0JDEiLCJFbGVtZW50IiwibWluIiwibWF4IiwiZGlzdCIsImRlZmF1bHRzJDEiLCJub3JtYWxpemUiLCJpZGVudGl0eSIsIlByb21pc2UkMSIsInRvU3RyaW5nIiwiZmlsdGVyIiwicG9zaXRpb24iLCJFdmVudCIsImdldFZhbHVlIiwiQ29uY2VudHJpY0xheW91dCIsImxheW91dCIsIm5vb3AkMSIsImV4dGVuc2lvbiIsInZlcnNpb24iLCJjeXRvc2NhcGUiLCJtZGlJY29ucy5tZGlBcnJvd0V4cGFuZEFsbCIsIm1kaUljb25zLm1kaUFycm93Q29sbGFwc2VBbGwiLCJtZGlJY29ucy5tZGlTZWxlY3RBbGwiLCJtZGlJY29ucy5tZGlTZWxlY3RDb21wYXJlIiwibWRpSWNvbnMubWRpU2VsZWN0R3JvdXAiLCJtZGlJY29ucy5tZGlMb2NrIiwibWRpSWNvbnMubWRpTG9ja09wZW5WYXJpYW50T3V0bGluZSIsIm1kaUljb25zLm1kaUV5ZU9mZiIsIm1kaUljb25zLm1kaUV5ZSIsIm1kaUljb25zLm1kaUZpdFRvUGFnZU91dGxpbmUiLCJtZGlJY29ucy5tZGlJbWFnZSIsIm1kaUljb25zLm1kaVRvb2xib3hPdXRsaW5lIiwibWRpSWNvbnMubWRpRmxhcmUiLCJtZGlJY29ucy5tZGlHcmFpbiIsIm1kaUljb25zLm1kaUdyYXBocWwiLCJtZGlJY29ucy5tZGlEb3RzR3JpZCIsIm1kaUljb25zLm1kaUdyYXBoIiwibWRpSWNvbnMubWRpRmlsZU91dGxpbmUiLCJtZGlJY29ucy5tZGlGaWx0ZXJPdXRsaW5lIiwibWRpSWNvbnMubWRpQ29udGVudFNhdmUiLCJtZGlJY29ucy5tZGlGb3JtYXRMaXN0QnVsbGV0ZWRUeXBlIiwibWRpSWNvbnMubWRpUGFsZXR0ZU91dGxpbmUiLCJtZGlJY29ucy5tZGlIZWxwIiwiYWRkSWNvbiIsIkl0ZW1WaWV3IiwiTW9kYWwiLCJzZWFyY2hRdWVyeSIsIk1lbnUiLCJNYXJrZG93blJlbmRlcmVyIiwiTm90aWNlIiwicG9wcGVyIiwicmVhZCIsIndyaXRlIiwiZWZmZWN0IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIm1hdGhNYXgiLCJtYXRoTWluIiwiaGFzaCIsImFsbFBsYWNlbWVudHMiLCJwbGFjZW1lbnRzIiwib3JkZXIiLCJjcmVhdGVQb3BwZXIiLCJkZWZhdWx0TW9kaWZpZXJzIiwicG9wcGVyT2Zmc2V0cyIsImNvbXB1dGVTdHlsZXMiLCJhcHBseVN0eWxlcyIsIm9mZnNldCIsImZsaXAiLCJwcmV2ZW50T3ZlcmZsb3ciLCJhcnJvdyIsImhpZGUiLCJfX2V4dGVuZHMiLCJOb2RlIiwicmJ0cmVlXzEiLCJ2cHNjXzEiLCJQcmlvcml0eVF1ZXVlIiwicHF1ZXVlXzEiLCJQb2ludCIsInJlY3RhbmdsZV8xIiwibGlua2xlbmd0aHNfMSIsInNob3J0ZXN0cGF0aHNfMSIsImRlc2NlbnRfMSIsImhhbmRsZWRpc2Nvbm5lY3RlZF8xIiwiZ2VvbV8xIiwibGF5b3V0XzEiLCJEM1N0eWxlTGF5b3V0QWRhcHRvciIsImQzYWRhcHRvciIsImQzdjMiLCJkM3Y0IiwiZ3JpZHJvdXRlcl8xIiwicmVxdWlyZSQkMiIsInJlcXVpcmUkJDMiLCJyZXF1aXJlJCQ0IiwicmVxdWlyZSQkNSIsInJlcXVpcmUkJDYiLCJyZXF1aXJlJCQ3IiwicmVxdWlyZSQkOCIsInJlcXVpcmUkJDkiLCJyZXF1aXJlJCQxMCIsInJlcXVpcmUkJDExIiwicmVxdWlyZSQkMTIiLCJyZXF1aXJlJCQxMyIsInJlcXVpcmUkJDE0IiwicmVxdWlyZSQkMTUiLCJlcSIsImFzc29jSW5kZXhPZiIsImxpc3RDYWNoZUNsZWFyIiwibGlzdENhY2hlRGVsZXRlIiwibGlzdENhY2hlR2V0IiwibGlzdENhY2hlSGFzIiwibGlzdENhY2hlU2V0IiwiTGlzdENhY2hlIiwiU3ltYm9sIiwiaGFzT3duUHJvcGVydHkiLCJuYXRpdmVPYmplY3RUb1N0cmluZyIsInN5bVRvU3RyaW5nVGFnIiwiZ2V0UmF3VGFnIiwiZnVuY1RhZyIsImdlblRhZyIsImJhc2VHZXRUYWciLCJjb3JlSnNEYXRhIiwiZnVuY1Byb3RvIiwiZnVuY1RvU3RyaW5nIiwiaXNNYXNrZWQiLCJpc0Z1bmN0aW9uIiwidG9Tb3VyY2UiLCJiYXNlSXNOYXRpdmUiLCJNYXAiLCJnZXROYXRpdmUiLCJuYXRpdmVDcmVhdGUiLCJIQVNIX1VOREVGSU5FRCIsImhhc2hDbGVhciIsImhhc2hEZWxldGUiLCJoYXNoR2V0IiwiaGFzaEhhcyIsImhhc2hTZXQiLCJIYXNoIiwiaXNLZXlhYmxlIiwiZ2V0TWFwRGF0YSIsIm1hcENhY2hlQ2xlYXIiLCJtYXBDYWNoZURlbGV0ZSIsIm1hcENhY2hlR2V0IiwibWFwQ2FjaGVIYXMiLCJtYXBDYWNoZVNldCIsIkxBUkdFX0FSUkFZX1NJWkUiLCJNYXBDYWNoZSIsInN0YWNrQ2xlYXIiLCJzdGFja0RlbGV0ZSIsInN0YWNrR2V0Iiwic3RhY2tIYXMiLCJzdGFja1NldCIsImRlZmluZVByb3BlcnR5IiwiYmFzZUFzc2lnblZhbHVlIiwiYXNzaWduVmFsdWUiLCJhcmdzVGFnIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJiYXNlSXNBcmd1bWVudHMiLCJzdHViRmFsc2UiLCJNQVhfU0FGRV9JTlRFR0VSIiwiYXJyYXlUYWciLCJib29sVGFnIiwiZGF0ZVRhZyIsImVycm9yVGFnIiwibWFwVGFnIiwibnVtYmVyVGFnIiwib2JqZWN0VGFnIiwicmVnZXhwVGFnIiwic2V0VGFnIiwic3RyaW5nVGFnIiwid2Vha01hcFRhZyIsImFycmF5QnVmZmVyVGFnIiwiZGF0YVZpZXdUYWciLCJmbG9hdDMyVGFnIiwiZmxvYXQ2NFRhZyIsImludDhUYWciLCJpbnQxNlRhZyIsImludDMyVGFnIiwidWludDhUYWciLCJ1aW50OENsYW1wZWRUYWciLCJ1aW50MTZUYWciLCJ1aW50MzJUYWciLCJpc0xlbmd0aCIsIm5vZGVVdGlsIiwiYmFzZVVuYXJ5IiwiYmFzZUlzVHlwZWRBcnJheSIsImlzQXJyYXkiLCJpc0FyZ3VtZW50cyIsImlzQnVmZmVyIiwiaXNUeXBlZEFycmF5IiwiYmFzZVRpbWVzIiwiaXNJbmRleCIsIm92ZXJBcmciLCJpc1Byb3RvdHlwZSIsIm5hdGl2ZUtleXMiLCJpc0FycmF5TGlrZSIsImFycmF5TGlrZUtleXMiLCJiYXNlS2V5cyIsImNvcHlPYmplY3QiLCJrZXlzIiwibmF0aXZlS2V5c0luIiwiYmFzZUtleXNJbiIsImtleXNJbiIsIm5hdGl2ZUdldFN5bWJvbHMiLCJzdHViQXJyYXkiLCJhcnJheUZpbHRlciIsImdldFN5bWJvbHMiLCJhcnJheVB1c2giLCJnZXRQcm90b3R5cGUiLCJnZXRTeW1ib2xzSW4iLCJiYXNlR2V0QWxsS2V5cyIsIlByb21pc2UiLCJTZXQiLCJEYXRhVmlldyIsIldlYWtNYXAiLCJVaW50OEFycmF5IiwiY2xvbmVBcnJheUJ1ZmZlciIsInN5bWJvbFByb3RvIiwic3ltYm9sVmFsdWVPZiIsImNsb25lRGF0YVZpZXciLCJjbG9uZVR5cGVkQXJyYXkiLCJjbG9uZVJlZ0V4cCIsImNsb25lU3ltYm9sIiwiYmFzZUNyZWF0ZSIsImdldFRhZyIsImJhc2VJc01hcCIsImJhc2VJc1NldCIsIkNMT05FX0RFRVBfRkxBRyIsIkNMT05FX1NZTUJPTFNfRkxBRyIsImluaXRDbG9uZUFycmF5IiwiY2xvbmVCdWZmZXIiLCJpbml0Q2xvbmVPYmplY3QiLCJjb3B5U3ltYm9sc0luIiwiYmFzZUFzc2lnbkluIiwiY29weVN5bWJvbHMiLCJiYXNlQXNzaWduIiwiaW5pdENsb25lQnlUYWciLCJTdGFjayIsImlzU2V0IiwiaXNNYXAiLCJnZXRBbGxLZXlzSW4iLCJnZXRBbGxLZXlzIiwiYXJyYXlFYWNoIiwiYmFzZUNsb25lIiwiY3JlYXRlQmFzZUZvciIsImJhc2VGb3IiLCJjcmVhdGVCYXNlRWFjaCIsImJhc2VGb3JPd24iLCJiYXNlRWFjaCIsImNhc3RGdW5jdGlvbiIsInNldENhY2hlQWRkIiwic2V0Q2FjaGVIYXMiLCJDT01QQVJFX1BBUlRJQUxfRkxBRyIsIkNPTVBBUkVfVU5PUkRFUkVEX0ZMQUciLCJTZXRDYWNoZSIsImFycmF5U29tZSIsImNhY2hlSGFzIiwibWFwVG9BcnJheSIsInNldFRvQXJyYXkiLCJlcXVhbEFycmF5cyIsImVxdWFsQnlUYWciLCJlcXVhbE9iamVjdHMiLCJiYXNlSXNFcXVhbERlZXAiLCJiYXNlSXNFcXVhbCIsImlzU3RyaWN0Q29tcGFyYWJsZSIsImdldE1hdGNoRGF0YSIsIm1hdGNoZXNTdHJpY3RDb21wYXJhYmxlIiwiYmFzZUlzTWF0Y2giLCJtZW1vaXplQ2FwcGVkIiwiSU5GSU5JVFkiLCJhcnJheU1hcCIsImJhc2VUb1N0cmluZyIsImlzS2V5Iiwic3RyaW5nVG9QYXRoIiwiY2FzdFBhdGgiLCJ0b0tleSIsImJhc2VHZXQiLCJoYXNQYXRoIiwiYmFzZUhhc0luIiwiZ2V0IiwiaGFzSW4iLCJiYXNlUHJvcGVydHkiLCJiYXNlUHJvcGVydHlEZWVwIiwiYmFzZU1hdGNoZXNQcm9wZXJ0eSIsImJhc2VNYXRjaGVzIiwicHJvcGVydHkiLCJiYXNlRmlsdGVyIiwiYmFzZUl0ZXJhdGVlIiwiYmFzZUhhcyIsImJhc2VNYXAiLCJhcnJheVJlZHVjZSIsImJhc2VSZWR1Y2UiLCJyc0FzdHJhbFJhbmdlIiwicnNDb21ib01hcmtzUmFuZ2UiLCJyZUNvbWJvSGFsZk1hcmtzUmFuZ2UiLCJyc0NvbWJvU3ltYm9sc1JhbmdlIiwicnNDb21ib1JhbmdlIiwicnNWYXJSYW5nZSIsInJzWldKIiwiaGFzVW5pY29kZSIsInVuaWNvZGVTaXplIiwiYXNjaWlTaXplIiwiaXNTdHJpbmciLCJzdHJpbmdTaXplIiwiaXNGbGF0dGVuYWJsZSIsImFwcGx5IiwiY29uc3RhbnQiLCJzaG9ydE91dCIsImJhc2VTZXRUb1N0cmluZyIsInNldFRvU3RyaW5nIiwib3ZlclJlc3QiLCJzdHJpY3RJbmRleE9mIiwiYmFzZUZpbmRJbmRleCIsImJhc2VJc05hTiIsImJhc2VJbmRleE9mIiwiYXJyYXlJbmNsdWRlcyIsImFycmF5SW5jbHVkZXNXaXRoIiwiY3JlYXRlU2V0IiwiYmFzZVJlc3QiLCJiYXNlVW5pcSIsImJhc2VGbGF0dGVuIiwiaXNBcnJheUxpa2VPYmplY3QiLCJiYXNlVmFsdWVzIiwibG9kYXNoIiwicmVxdWlyZSIsIkdyYXBoIiwiXyIsIkRFRkFVTFRfV0VJR0hUX0ZVTkMiLCJkaWprc3RyYSIsInRhcmphbiIsInRvcHNvcnQiLCJkZnMiLCJwb3N0b3JkZXIiLCJwcmVvcmRlciIsImlzSXRlcmF0ZWVDYWxsIiwidHJpbW1lZEVuZEluZGV4IiwiYmFzZVRyaW0iLCJ0b0Zpbml0ZSIsInRvSW50ZWdlciIsImNyZWF0ZUZpbmQiLCJmaW5kSW5kZXgiLCJiYXNlRXh0cmVtdW0iLCJiYXNlR3QiLCJzYWZlR2V0IiwiYXNzaWduTWVyZ2VWYWx1ZSIsImlzUGxhaW5PYmplY3QiLCJ0b1BsYWluT2JqZWN0IiwiYmFzZU1lcmdlRGVlcCIsImNyZWF0ZUFzc2lnbmVyIiwiYmFzZU1lcmdlIiwiYmFzZUx0IiwiYmFzZVNldCIsImJhc2VQaWNrQnkiLCJmbGF0dGVuIiwiZmxhdFJlc3QiLCJiYXNlUGljayIsImJhc2VSYW5nZSIsImNyZWF0ZVJhbmdlIiwiY29tcGFyZUFzY2VuZGluZyIsImJhc2VTb3J0QnkiLCJjb21wYXJlTXVsdGlwbGUiLCJiYXNlT3JkZXJCeSIsImJhc2VaaXBPYmplY3QiLCJyZXF1aXJlJCQxNiIsInJlcXVpcmUkJDE3IiwicmVxdWlyZSQkMTgiLCJyZXF1aXJlJCQxOSIsInJlcXVpcmUkJDIwIiwicmVxdWlyZSQkMjEiLCJyZXF1aXJlJCQyMiIsInJlcXVpcmUkJDIzIiwicmVxdWlyZSQkMjQiLCJyZXF1aXJlJCQyNSIsIkxpc3QiLCJ1bmRvIiwiZ3JlZWR5RkFTIiwic2ltcGxpZnkiLCJub3JtYWxpemVSYW5rcyIsInJlbW92ZUVtcHR5UmFua3MiLCJhZGRCb3JkZXJOb2RlIiwibG9uZ2VzdFBhdGgiLCJzbGFjayIsImZlYXNpYmxlVHJlZSIsInJhbmtVdGlsIiwibmV0d29ya1NpbXBsZXgiLCJiYXJ5Y2VudGVyIiwicmVzb2x2ZUNvbmZsaWN0cyIsInNvcnQiLCJpbml0T3JkZXIiLCJjcm9zc0NvdW50IiwiYnVpbGRMYXllckdyYXBoIiwic29ydFN1YmdyYXBoIiwiYWRkU3ViZ3JhcGhDb25zdHJhaW50cyIsInBvc2l0aW9uWCIsInJhbmsiLCJwYXJlbnREdW1teUNoYWlucyIsImFkZEJvcmRlclNlZ21lbnRzIiwiRnV6enlTdWdnZXN0TW9kYWwiLCJQbHVnaW4iLCJkYmxjbGljayIsInBhcnNlWWFtbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7TUFFYSxlQUFnQixTQUFRQSxlQUFNO0lBS3pDLE9BQU8sQ0FBQyxJQUFZLEVBQUUsR0FBRyxJQUFXO1FBQ2xDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDOUI7SUFNRCxFQUFFLENBQUMsSUFBWSxFQUFFLFFBQWlDLEVBQUUs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LEVBQUU7WUFDRCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7U0FDVixFQUFFO1lBQ0QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1YsRUFBRTtZQUNELFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztTQUNWLEVBQUU7WUFDRCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7U0FDVixFQUFFO1lBQ0QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQy9CLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7S0FDRjtJQUNELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtRQUNsRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDZixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQVU7Z0JBQzVCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FB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LEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUN6SSxNQUFNLE9BQU8sU0FBUyxDQUFDO0FBQ3ZCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDN0IsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLElBQUksS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdkQsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLEtBQUs7QUFDTCxJQUFJLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLEdBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxVQUFVLEdBQUcsU0FBUyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtBQUMxQyxJQUFJLElBQUksR0FBRyxDQUFDO0FBQ1osSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7QUFDckIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBQ3ZCLEtBQUs7QUFDTCxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDcEIsTUFBTSxPQUFPO0FBQ2IsS0FBSztBQUNMLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwQyxHQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFFBQVEsR0FBRyxTQUFTLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQ3JDLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3JDLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQ3JCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztBQUN2QixLQUFLO0FBQ0wsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUN4QixNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDekIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixJQUFJLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0QixNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLEtBQUs7QUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN0QyxHQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxTQUFTLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQ3RDLFFBQVEsSUFBSSxFQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTO0FBQ2xFLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQ3JCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztBQUN2QixLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtBQUNoQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUMxQixRQUFRLE9BQU8sTUFBTSxDQUFDO0FBQ3RCLE9BQU87QUFDUCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLE1BQU0sS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDeEQsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNoQyxVQUFVLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0MsVUFBVSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdkIsVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDMUMsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDeEIsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLElBQUksS0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBTSxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO0FBQ3ZILE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekMsS0FBSztBQUNMLElBQUksT0FBTyxRQUFRLENBQUM7QUFDcEIsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLFNBQVMsR0FBRyxTQUFTLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNsRCxJQUFJLElBQUksT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUM7QUFDbkMsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7QUFDckIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBQ3ZCLEtBQUs7QUFDTCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsSUFBSSxPQUFPLEdBQUcsR0FBRyxRQUFRLEVBQUU7QUFDM0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3BDLFFBQVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUM1QixRQUFRLEdBQUcsR0FBRyxTQUFTLENBQUM7QUFDeEIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUCxNQUFNLE1BQU07QUFDWixLQUFLO0FBQ0wsSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDaEMsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLE9BQU8sR0FBRyxTQUFTLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ3RDLElBQUksSUFBSSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO0FBQ3RELElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQ3JCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztBQUN2QixLQUFLO0FBQ0wsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUMxQixJQUFJLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDbkIsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLElBQUksUUFBUSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLElBQUksT0FBTyxRQUFRLEdBQUcsTUFBTSxFQUFFO0FBQzlCLE1BQU0sUUFBUSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDOUIsTUFBTSxJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQzdFLFFBQVEsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM1QixPQUFPO0FBQ1AsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQztBQUNyQixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUM3QixLQUFLO0FBQ0wsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQ3pCLElBQUksT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDaEQsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksR0FBRyxDQUFDLFdBQVc7QUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztBQUN6QjtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDdkI7QUFDQSxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDO0FBQy9CO0FBQ0EsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQztBQUMvQjtBQUNBLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDM0I7QUFDQSxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0FBQ2pDO0FBQ0EsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM3QjtBQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDL0I7QUFDQSxJQUFJLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUN2QixNQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsVUFBVSxDQUFDO0FBQ2hELE1BQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDdEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsRUFBRTtBQUN0QyxNQUFNLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsV0FBVztBQUNwQyxNQUFNLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxXQUFXO0FBQ3JDLE1BQU0sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsRUFBRTtBQUMxQyxNQUFNLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDMUMsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxFQUFFO0FBQ3pDLE1BQU0sT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsRUFBRTtBQUN6QyxNQUFNLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsV0FBVztBQUN4QyxNQUFNLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsRUFBRTtBQUM1QyxNQUFNLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqRCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsV0FBVztBQUN0QyxNQUFNLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDN0IsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFdBQVc7QUFDdEMsTUFBTSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUNyQyxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsV0FBVztBQUNyQyxNQUFNLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDL0IsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFdBQVc7QUFDdEMsTUFBTSxJQUFJLElBQUksQ0FBQztBQUNmLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7QUFDeEIsTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sT0FBTyxJQUFJLENBQUM7QUFDbEIsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFdBQVc7QUFDeEMsTUFBTSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztBQUNoRDtBQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDN0M7QUFDQSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQy9DO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztBQUNqRDtBQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDL0M7QUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCO0FBQ0EsR0FBRyxHQUFHLENBQUM7QUFDUDtBQUNBLEVBQUUsQ0FBQyxTQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDM0IsSUFFNEM7QUFDNUMsTUFBTSxPQUFPLGlCQUFpQixPQUFPLEVBQUUsQ0FBQztBQUN4QyxLQUVLO0FBQ0wsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXO0FBQ3RCLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLENBQUMsRUFBRSxJQUFJLENBQUNLLGNBQUksQ0FBQzs7O0FDdFhiLFFBQWMsR0FBR0MsTUFBcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdUJ0QztBQUNBLFNBQVNDLGlCQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxRQUFRLENBQUMsSUFBSSxTQUFTLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRTtBQUNsSDtBQUNBLElBQUlDLE1BQUksR0FBR0QsaUJBQWUsQ0FBQ0QsZUFBMEIsQ0FBQyxDQUFDO0FBQ3ZELElBQUksSUFBSSxHQUFHQyxpQkFBZSxDQUFDRSxJQUFlLENBQUMsQ0FBQztBQUM1QztBQUNBLFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUN0QixFQUFFLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE9BQU8sTUFBTSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7QUFDM0UsSUFBSSxPQUFPLEdBQUcsVUFBVSxHQUFHLEVBQUU7QUFDN0IsTUFBTSxPQUFPLE9BQU8sR0FBRyxDQUFDO0FBQ3hCLEtBQUssQ0FBQztBQUNOLEdBQUcsTUFBTTtBQUNULElBQUksT0FBTyxHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLEdBQUcsQ0FBQyxXQUFXLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLENBQUMsU0FBUyxHQUFHLFFBQVEsR0FBRyxPQUFPLEdBQUcsQ0FBQztBQUNuSSxLQUFLLENBQUM7QUFDTixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFDRDtBQUNBLFNBQVMsZUFBZSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUU7QUFDaEQsRUFBRSxJQUFJLEVBQUUsUUFBUSxZQUFZLFdBQVcsQ0FBQyxFQUFFO0FBQzFDLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBQzdELEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDMUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxJQUFJLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixJQUFJLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7QUFDM0QsSUFBSSxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUNuQyxJQUFJLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUMxRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDOUQsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO0FBQzVELEVBQUUsSUFBSSxVQUFVLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksV0FBVyxFQUFFLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFDRDtBQUNBLFNBQVNDLGlCQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDMUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDbEIsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDcEMsTUFBTSxLQUFLLEVBQUUsS0FBSztBQUNsQixNQUFNLFVBQVUsRUFBRSxJQUFJO0FBQ3RCLE1BQU0sWUFBWSxFQUFFLElBQUk7QUFDeEIsTUFBTSxRQUFRLEVBQUUsSUFBSTtBQUNwQixLQUFLLENBQUMsQ0FBQztBQUNQLEdBQUcsTUFBTTtBQUNULElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNyQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUNEO0FBQ0EsU0FBUyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRTtBQUNoQyxFQUFFLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3JGLENBQUM7QUFDRDtBQUNBLFNBQVMsZUFBZSxDQUFDLEdBQUcsRUFBRTtBQUM5QixFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNyQyxDQUFDO0FBQ0Q7QUFDQSxTQUFTLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFDdkMsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDaEIsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDaEIsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFDakIsRUFBRSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUM7QUFDckI7QUFDQSxFQUFFLElBQUk7QUFDTixJQUFJLEtBQUssSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRTtBQUN4RixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFCO0FBQ0EsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxNQUFNO0FBQ3hDLEtBQUs7QUFDTCxHQUFHLENBQUMsT0FBTyxHQUFHLEVBQUU7QUFDaEIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2QsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ2IsR0FBRyxTQUFTO0FBQ1osSUFBSSxJQUFJO0FBQ1IsTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDdEQsS0FBSyxTQUFTO0FBQ2QsTUFBTSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUN2QixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRDtBQUNBLFNBQVMsZ0JBQWdCLEdBQUc7QUFDNUIsRUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUNEO0FBQ0EsSUFBSSxRQUFRLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxHQUFHLElBQUksR0FBRyxNQUFNLENBQUM7QUFDN0Q7QUFDQSxJQUFJQyxXQUFTLEdBQUcsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxHQUFHLEtBQUs7QUFDckQ7QUFDQSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUI7QUFDQSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUI7QUFDQSxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUN2QztBQUNBLElBQUksYUFBYSxHQUFHLE9BQU8sV0FBVyxLQUFLLFdBQVcsR0FBRyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzVGO0FBQ0EsSUFBSSxXQUFXLEdBQUcsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQzVDLEVBQUUsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDM0YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLE1BQU0sR0FBRyxTQUFTLE1BQU0sQ0FBQyxHQUFHLEVBQUU7QUFDbEMsRUFBRSxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQztBQUNsRCxDQUFDLENBQUM7QUFDRixJQUFJLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUU7QUFDMUIsRUFBRSxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsQ0FBQztBQUNsRCxDQUFDLENBQUM7QUFDRixJQUFJLEtBQUssR0FBRyxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUU7QUFDaEMsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDO0FBQ2pILENBQUMsQ0FBQztBQUNGLElBQUksV0FBVyxHQUFHLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUM1QyxFQUFFLE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFDO0FBQ2hHLENBQUMsQ0FBQztBQUNGLElBQUksTUFBTSxHQUFHLFNBQVMsTUFBTSxDQUFDLEdBQUcsRUFBRTtBQUNsQyxFQUFFLE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUNGLElBQUksTUFBTSxHQUFHLFNBQVMsTUFBTSxDQUFDLEdBQUcsRUFBRTtBQUNsQyxFQUFFLE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLENBQUMsQ0FBQztBQUNGLElBQUksT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNwQyxFQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUNGLElBQUksV0FBVyxHQUFHLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUM1QyxFQUFFLElBQUksV0FBVyxLQUFLLGFBQWEsRUFBRTtBQUNyQyxJQUFJLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLEdBQUcsTUFBTTtBQUNULElBQUksT0FBTyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsWUFBWSxXQUFXLENBQUM7QUFDckQsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGLElBQUksbUJBQW1CLEdBQUcsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7QUFDNUQsRUFBRSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxPQUFPLEdBQUcsU0FBUyxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQ3BDLEVBQUUsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssWUFBWSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2xFLENBQUMsQ0FBQztBQUNGLElBQUksVUFBVSxHQUFHLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUMxQyxFQUFFLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ25FLENBQUMsQ0FBQztBQUNGLElBQUksSUFBSSxHQUFHLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUM5QixFQUFFLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQztBQUNyQyxDQUFDLENBQUM7QUFDRixJQUFJLFVBQVUsR0FBRyxTQUFTLFVBQVUsQ0FBQyxHQUFHLEVBQUU7QUFDMUMsRUFBRSxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxZQUFZLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxLQUFLLEdBQUcsU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ2hDLEVBQUUsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTyxDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUNGLElBQUksV0FBVyxHQUFHLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUM1QyxFQUFFLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO0FBQ3pDO0FBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDL0MsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFO0FBQzFDLEVBQUUsSUFBSSxPQUFPLFdBQVcsS0FBSyxXQUFXLEVBQUU7QUFDMUMsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sR0FBRyxZQUFZLFdBQVcsQ0FBQztBQUN0QyxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxXQUFXLEdBQUcsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQzVDLEVBQUUsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRyxDQUFDLENBQUM7QUFDRixJQUFJLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDcEMsRUFBRSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUNGLElBQUksRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHO0FBQ3ZCLEVBQUUsT0FBT0EsV0FBUyxJQUFJQSxXQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3RFLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSUMsU0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUU7QUFDMUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ2QsSUFBSSxLQUFLLEdBQUcsU0FBUyxLQUFLLEdBQUc7QUFDN0IsTUFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ2xDLFFBQVEsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsT0FBTyxNQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDekMsUUFBUSxPQUFPLFdBQVcsQ0FBQztBQUMzQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNwQjtBQUNBLE1BQU0sS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDakQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLE9BQU87QUFDUDtBQUNBLE1BQU0sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxVQUFVLEdBQUcsU0FBUyxVQUFVLEdBQUc7QUFDekMsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxJQUFJLElBQUksR0FBRyxTQUFTLENBQUM7QUFDekIsSUFBSSxJQUFJLEdBQUcsQ0FBQztBQUNaLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEMsSUFBSSxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0FBQ2pDO0FBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzNCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1QyxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLEVBQUUsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLFVBQVUsR0FBR0EsU0FBTyxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQ3hDLEVBQUUsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTtBQUM5QyxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNqQyxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0gsSUFBSSxVQUFVLEdBQUdBLFNBQU8sQ0FBQyxVQUFVLEdBQUcsRUFBRTtBQUN4QyxFQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUU7QUFDNUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM5QixHQUFHLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0gsSUFBSSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxVQUFVLE1BQU0sRUFBRSxHQUFHLEVBQUU7QUFDbEQsRUFBRSxPQUFPLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDLEVBQUUsVUFBVSxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQzFCLEVBQUUsT0FBTyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUM1QixDQUFDLENBQUMsQ0FBQztBQUNILElBQUksVUFBVSxHQUFHLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUMxQyxFQUFFLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3hCLElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxRQUFRLEdBQUcscURBQXFELENBQUM7QUFDckUsSUFBSSxJQUFJLEdBQUcsYUFBYSxHQUFHLFFBQVEsR0FBRyxpQkFBaUIsR0FBRyxRQUFRLEdBQUcsaUJBQWlCLEdBQUcsUUFBUSxHQUFHLG9CQUFvQixHQUFHLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDL0ksSUFBSSxjQUFjLEdBQUcsZUFBZSxHQUFHLFFBQVEsR0FBRyxtQkFBbUIsR0FBRyxRQUFRLEdBQUcsbUJBQW1CLEdBQUcsUUFBUSxHQUFHLHNCQUFzQixHQUFHLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDakssSUFBSSxJQUFJLEdBQUcsYUFBYSxHQUFHLFFBQVEsR0FBRyxhQUFhLEdBQUcsUUFBUSxHQUFHLGdCQUFnQixHQUFHLFFBQVEsR0FBRyxtQkFBbUIsR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pJLElBQUksY0FBYyxHQUFHLGVBQWUsR0FBRyxRQUFRLEdBQUcsZUFBZSxHQUFHLFFBQVEsR0FBRyxrQkFBa0IsR0FBRyxRQUFRLEdBQUcscUJBQXFCLEdBQUcsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUMzSixJQUFJLElBQUksR0FBRyxtQkFBbUIsQ0FBQztBQUMvQixJQUFJLElBQUksR0FBRyxtQkFBbUIsQ0FBQztBQUMvQjtBQUNBLElBQUksU0FBUyxHQUFHLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDekMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDYixJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDZCxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3BCLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGLElBQUksVUFBVSxHQUFHLFNBQVMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDM0MsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxVQUFVLEdBQUcsRUFBRTtBQUNqRixFQUFFLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQztBQUN2QjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEI7QUFDQSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtBQUNyQixNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEM7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsR0FBRyxFQUFFO0FBQ3hDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUNqRSxJQUFJLE9BQU87QUFDWCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNkLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hCO0FBQ0EsRUFBRSxJQUFJLFFBQVEsRUFBRTtBQUNoQixJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxHQUFHLE1BQU07QUFDVCxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsR0FBRyxFQUFFO0FBQ3hDLEVBQUUsSUFBSSxHQUFHLENBQUM7QUFDVixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFCO0FBQ0EsRUFBRSxTQUFTLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUM1QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FB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QUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDekIsRUFBRSxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUMvQixFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDeEIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUMzQixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUMvQixFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzNCLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0QixFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzdCLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDL0IsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUM5QixFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzdCLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDN0IsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM5QixFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDMUIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzFCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDMUIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzFCLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDOUIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUM1QixFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQ3hCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM3QixFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3JCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDM0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN2QixFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDcEIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUM3QixFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDMUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUMxQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQ3RCLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDeEIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN4QixFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsYUFBYSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDaEMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUMxQixFQUFFLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQy9CLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM3QixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN2QyxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDN0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDOUIsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUMvQixFQUFFLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQy9CLEVBQUUsY0FBYyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDakMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNqQyxFQUFFLGNBQWMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ2pDLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDOUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNuQixFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQzFCLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDeEIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztBQUN4QixFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDOUIsRUFBRSxZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUMvQixFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ2hDLEVBQUUsZUFBZSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbEMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ2xDLEVBQUUsZUFBZSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDakMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNqQyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQzdCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDOUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztBQUNuQixFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzFCLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDdEIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUMzQixFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN6QixFQUFFLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ2hDLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDNUIsRUFBRSxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNoQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ2hDLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDN0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3RCLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDdkIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN2QixFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzdCLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDdkIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDM0IsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUM1QixFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDNUIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN6QixFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDdkIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN6QixFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzFCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDM0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM1QixFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FB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QU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLEtBQUssQ0FBQztBQUNOO0FBQ0E7QUFDQSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2xDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQixNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUI7QUFDQSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNuQixRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEIsT0FBTyxNQUFNO0FBQ2IsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzNCLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixJQUFJLElBQUksUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDO0FBQ0EsSUFBSSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUM5QyxNQUFNLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQixNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQztBQUNBLE1BQU0sSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFO0FBQ3ZCLFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQTtBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekI7QUFDQSxNQUFNLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQztBQUNBO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUU7QUFDOUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzNCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQixRQUFRLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDNUIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDckIsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQjtBQUNBLFFBQVEsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFO0FBQzdDLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUM3QixVQUFVLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsVUFBVSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzlCLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEMsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLFFBQVEsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0I7QUFDQSxRQUFRLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdkMsVUFBVSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxVQUFVLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzlCO0FBQ0EsVUFBVSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzlDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0MsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsR0FBRyxFQUFFO0FBQzVDLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksSUFBSSxhQUFhLEdBQUcsU0FBUyxhQUFhLENBQUMsR0FBRyxFQUFFO0FBQ3BELE1BQU0sT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckMsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLElBQUksR0FBRyxHQUFHO0FBQ2QsTUFBTSxRQUFRLEVBQUUsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUM1QyxRQUFRLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQyxRQUFRLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQyxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0IsT0FBTztBQUNQLE1BQU0sSUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBUSxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsUUFBUSxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEMsUUFBUSxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEM7QUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNyQixVQUFVLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3ZDLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7QUFDckMsVUFBVSxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNuQyxRQUFRLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNyQixRQUFRLElBQUksSUFBSSxDQUFDO0FBQ2pCLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM3QjtBQUNBLFFBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3hCLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNuQixVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QixVQUFVLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN4QyxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixHQUFHO0FBQ0g7QUFDQSxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksbUJBQW1CLEdBQUdBLFVBQVEsQ0FBQztBQUNuQyxFQUFFLE1BQU0sRUFBRSxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUU7QUFDaEMsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLEdBQUc7QUFDSCxFQUFFLFFBQVEsRUFBRSxLQUFLO0FBQ2pCLEVBQUUsSUFBSSxFQUFFLElBQUk7QUFDWixDQUFDLENBQUMsQ0FBQztBQUNILElBQUksUUFBUSxHQUFHO0FBQ2Y7QUFDQSxFQUFFLFdBQVcsRUFBRSxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDN0MsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckI7QUFDQSxJQUFJLElBQUksb0JBQW9CLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDO0FBQzNELFFBQVEsTUFBTSxHQUFHLG9CQUFvQixDQUFDLE1BQU07QUFDNUMsUUFBUSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsUUFBUTtBQUNoRCxRQUFRLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7QUFDekM7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUMxQixJQUFJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNwQixJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QjtBQUNBLElBQUksSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUN0QyxRQUFRLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSztBQUNuQyxRQUFRLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO0FBQ3BDO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDLElBQUksSUFBSSxPQUFPLEdBQUcsSUFBSUMsT0FBSyxFQUFFLENBQUM7QUFDOUIsSUFBSSxJQUFJLHNCQUFzQixHQUFHLEtBQUssQ0FBQztBQUN2QyxJQUFJLElBQUksb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEM7QUFDQSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxJQUFJLEVBQUU7QUFDcEMsTUFBTSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUMzQixLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNoQztBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsU0FBUyxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ3pDLE1BQU0sSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN2QztBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNoQixRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDakIsUUFBUSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwQyxPQUFPO0FBQ1A7QUFDQSxNQUFNLE9BQU8sR0FBRyxDQUFDO0FBQ2pCLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxJQUFJLGFBQWEsR0FBRyxTQUFTLGFBQWEsQ0FBQyxFQUFFLEVBQUU7QUFDbkQsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdDLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxJQUFJLFVBQVUsR0FBRyxTQUFTLFVBQVUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsTUFBTSxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDN0MsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLElBQUksTUFBTSxHQUFHLFNBQVMsTUFBTSxDQUFDLEVBQUUsRUFBRTtBQUNyQyxNQUFNLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMvRixNQUFNLElBQUksR0FBRyxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNwQixNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNyQjtBQUNBLE1BQU0sU0FBUztBQUNmLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO0FBQzFCLFVBQVUsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3BDLFlBQVksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJO0FBQ2hDLFlBQVksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDakM7QUFDQSxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUI7QUFDQSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUNyRCxVQUFVLE1BQU07QUFDaEIsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7QUFDMUIsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNwQixPQUFPO0FBQ1A7QUFDQSxNQUFNLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixLQUFLLENBQUM7QUFDTjtBQUNBO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLE1BQU0sSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDM0IsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUN0QixPQUFPLE1BQU07QUFDYixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBQzdCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDdkIsTUFBTSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBQzdCO0FBQ0EsSUFBSSxJQUFJLHVCQUF1QixHQUFHLFNBQVMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDN0csTUFBTSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNyQztBQUNBLE1BQU0sSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3ZELFFBQVEsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUIsUUFBUSxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztBQUMzQixRQUFRLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCLFFBQVEsWUFBWSxHQUFHLElBQUksQ0FBQztBQUM1QixPQUFPO0FBQ1AsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDMUMsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBQzNCO0FBQ0EsTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLFFBQVEsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFFBQVEsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2hDO0FBQ0EsUUFBUSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckM7QUFDQSxRQUFRLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQyxRQUFRLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDM0U7QUFDQSxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDdkIsVUFBVSx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdFLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUU7QUFDekIsUUFBUSxNQUFNO0FBQ2QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxZQUFZLEVBQUU7QUFDdEI7QUFDQSxNQUFNLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDNUMsUUFBUSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDOUI7QUFDQSxRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQztBQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xDO0FBQ0EsUUFBUSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkM7QUFDQSxRQUFRLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDekMsUUFBUSxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3pDO0FBQ0EsUUFBUSxJQUFJLE9BQU8sR0FBRyxRQUFRLEdBQUcsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sR0FBRyxRQUFRLEdBQUcsT0FBTyxFQUFFO0FBQ3ZGLFVBQVUsSUFBSSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7QUFDMUUsVUFBVSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFDeEMsVUFBVSxNQUFNO0FBQ2hCLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPO0FBQ1gsTUFBTSxVQUFVLEVBQUUsVUFBVTtBQUM1QixNQUFNLE1BQU0sRUFBRSxNQUFNO0FBQ3BCLE1BQU0sc0JBQXNCLEVBQUUsc0JBQXNCO0FBQ3BELE1BQU0sb0JBQW9CLEVBQUUsb0JBQW9CO0FBQ2hELEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSDtBQUNBLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QjtBQUNBO0FBQ0E7QUFDQSxJQUFJLFFBQVEsR0FBRyxTQUFTLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtBQUNyRSxFQUFFLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDbkMsSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztBQUNoRSxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksUUFBUSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQyxFQUFFLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixFQUFFLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixFQUFFLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxFQUFFLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxFQUFFLElBQUksUUFBUSxHQUFHLGNBQWMsQ0FBQztBQUNoQztBQUNBO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDakQsSUFBSSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEI7QUFDQSxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUNsSSxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDL0MsSUFBSSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0I7QUFDQSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUNqQztBQUNBLE1BQU0sUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNuQztBQUNBLE1BQU0sUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUNuQyxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3hDO0FBQ0EsTUFBTSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25DO0FBQ0EsTUFBTSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ25DLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDakQsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDckMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ2hDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQSxJQUFJLGFBQWEsR0FBRyxTQUFTLGFBQWEsQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7QUFDekYsRUFBRSxPQUFPLElBQUksR0FBRyxTQUFTLEVBQUU7QUFDM0I7QUFDQSxJQUFJLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0RTtBQUNBLElBQUksY0FBYyxHQUFHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3RFLElBQUksSUFBSSxFQUFFLENBQUM7QUFDWCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxRQUFRLEdBQUc7QUFDZjtBQUNBO0FBQ0EsRUFBRSxXQUFXLEVBQUUsU0FBUyxXQUFXLEdBQUc7QUFDdEMsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckI7QUFDQSxJQUFJLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDdEMsUUFBUSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUs7QUFDbkMsUUFBUSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUNwQztBQUNBLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksRUFBRTtBQUNwQyxNQUFNLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzNCLEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDLElBQUksSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNoQyxJQUFJLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RSxJQUFJLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ2hEO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUU7QUFDdEIsTUFBTSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztBQUN4RSxNQUFNLE9BQU8sU0FBUyxDQUFDO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN6QjtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRixLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDO0FBQzlCLElBQUksSUFBSSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFDL0IsSUFBSSxJQUFJLGFBQWEsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1QztBQUNBLElBQUksSUFBSSxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUMsSUFBSSxJQUFJLFlBQVksR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMzQztBQUNBLElBQUksSUFBSSxZQUFZLEdBQUcsU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUN2RCxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDL0MsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBO0FBQ0EsSUFBSSxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFO0FBQ2hEO0FBQ0EsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQy9DLFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMvQixPQUFPO0FBQ1A7QUFDQTtBQUNBLE1BQU0sSUFBSSxVQUFVLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzNGLE1BQU0sSUFBSSxXQUFXLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNDO0FBQ0E7QUFDQSxNQUFNLFlBQVksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDOUM7QUFDQSxNQUFNLElBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRSxNQUFNLElBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RTtBQUNBLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLEVBQUU7QUFDbEUsUUFBUSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUNqQyxRQUFRLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUNqQyxRQUFRLFlBQVksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDakQsT0FBTyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFO0FBQ3pFLFFBQVEsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDakMsUUFBUSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDakMsUUFBUSxZQUFZLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ2xELE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUM1RCxNQUFNLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDUixJQUFJLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQyxJQUFJLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQztBQUNBLElBQUksSUFBSSxvQkFBb0IsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQ7QUFDQSxJQUFJLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3pELE1BQU0sSUFBSSxXQUFXLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLE1BQU0sSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsTUFBTSxJQUFJLFdBQVcsS0FBSyxvQkFBb0IsRUFBRTtBQUNoRCxRQUFRLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsT0FBTyxNQUFNO0FBQ2IsUUFBUSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxrQkFBa0IsR0FBRyxTQUFTLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtBQUNqRSxNQUFNLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNwQztBQUNBLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksRUFBRTtBQUNyQyxRQUFRLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsUUFBUSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFO0FBQ3REO0FBQ0EsVUFBVSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzNELFlBQVksU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxXQUFXO0FBQ1gsU0FBUyxDQUFDLENBQUM7QUFDWCxPQUFPLENBQUMsQ0FBQztBQUNULE1BQU0sT0FBTyxTQUFTLENBQUM7QUFDdkIsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLElBQUksVUFBVSxHQUFHLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN0RixJQUFJLElBQUksR0FBRyxHQUFHO0FBQ2QsTUFBTSxHQUFHLEVBQUUsR0FBRztBQUNkLE1BQU0sVUFBVSxFQUFFLFVBQVU7QUFDNUI7QUFDQTtBQUNBLE1BQU0sVUFBVSxFQUFFLFVBQVU7QUFDNUIsTUFBTSxVQUFVLEVBQUUsVUFBVTtBQUM1QixLQUFLLENBQUM7QUFDTixJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxZQUFZLEdBQUcsU0FBUyxZQUFZLENBQUMsQ0FBQyxFQUFFO0FBQzVDLEVBQUUsT0FBTztBQUNULElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ1YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDVixHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixJQUFJLHVCQUF1QixHQUFHLFNBQVMsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDN0UsRUFBRSxPQUFPO0FBQ1QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDekIsR0FBRyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0YsSUFBSSx1QkFBdUIsR0FBRyxTQUFTLHVCQUF1QixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO0FBQzdFLEVBQUUsT0FBTztBQUNULElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUk7QUFDM0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSTtBQUMzQixHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixJQUFJLFdBQVcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUU7QUFDNUMsRUFBRSxPQUFPO0FBQ1QsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNiLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDYixHQUFHLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixJQUFJRyxLQUFHLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFO0FBQzVCLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BGLEVBQUUsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUMzRixFQUFFLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQztBQUNyQjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwQyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQjtBQUNBLElBQUksSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0IsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFDRixJQUFJQyxLQUFHLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFO0FBQzVCLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BGLEVBQUUsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUMzRixFQUFFLElBQUksR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO0FBQ3RCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsSUFBSSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMvQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUNGLElBQUksSUFBSSxHQUFHLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUM5QixFQUFFLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRixFQUFFLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDM0YsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDaEIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDWjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwQyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQjtBQUNBLElBQUksSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDdkIsTUFBTSxLQUFLLElBQUksR0FBRyxDQUFDO0FBQ25CLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDVixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxNQUFNLEdBQUcsU0FBUyxNQUFNLENBQUMsR0FBRyxFQUFFO0FBQ2xDLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BGLEVBQUUsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUMzRixFQUFFLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0RixFQUFFLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0RixFQUFFLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUM5RjtBQUNBLEVBQUUsSUFBSSxJQUFJLEVBQUU7QUFDWixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNoQyxHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ25CLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDM0IsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDZDtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxJQUFJLFlBQVksRUFBRTtBQUN0QixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFD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QUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDWixFQUFFLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQixFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ2xCO0FBQ0EsRUFBRSxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUU7QUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNsRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUMzQixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDbkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUI7QUFDQSxFQUFFLElBQUksWUFBWSxLQUFLLENBQUMsRUFBRTtBQUMxQixJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3BFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDbkMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzNDLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ1QsRUFBRSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNsRCxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNwRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNwRSxFQUFFLE9BQU87QUFDVCxDQUFDLENBQUM7QUFDRixJQUFJLHVCQUF1QixHQUFHLFNBQVMsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN0SyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUMxSixFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwTCxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENB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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUMzRSxFQUFFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDaEMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELEVBQUUsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELEVBQUUsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdELEVBQUUsSUFBSSxLQUFLLEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFDL0M7QUFDQSxFQUFFLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRTtBQUN0QixJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQ3RCLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDckQsR0FBRztBQUNI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Q0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2xELElBQUksSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDdkMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsS0FBSztBQUNMO0FBQ0EsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxJQUFJLEVBQUUsR0FBRyxPQUFPLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsSUFBSSxJQUFJLEVBQUUsR0FBRyxPQUFPLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JELElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsSCxJQUFJLElBQUksTUFBTSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRCxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsVUFB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RSxDQUFDLENBQUM7QUFDN0I7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDdkMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUN0RCxFQUFFLElBQUksWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkM7QUFDQSxFQUFFLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRTtBQUN4QixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ2QsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BELEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwRCxFQUFFLElBQUksSUFBSSxHQUFH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LENBQUM7QUFDakQsSUFBSSxJQUFJLEVBQUUsR0FBRyxPQUFPLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JELElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsSCxJQUFJLElBQUksTUFBTSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRCxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsTUFBTSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDMUMsTUFBTSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDMUMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FB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QyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzdCLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztBQUM3QjtBQUNBLEVBQUUsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN4QyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQy9DLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN2RCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxD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QUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDMUMsTUFBTSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0IsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0QztBQUNBLE1BQU0sSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFO0FBQzNCLFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsTUFBTSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNCO0FBQ0EsTUFBTSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNoQztBQUNBO0FBQ0EsTUFBTSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsY0FBYyxDQUFDO0FBQzVDO0FBQ0E7QUFDQSxJQUFJLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDMUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDL0I7QUFDQSxRQUFRLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxF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QUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUMvQixFQUFFLElBQUksR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsRUFBRSxJQUFJLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixFQUFFLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNqQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM1QyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM1QyxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM5QixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDbEI7QUFDQSxJQUFJLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdEMsTUFBTSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkUsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFD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RUFBRTtBQUN2QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQztBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMzRCxRQUFRLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxPQUFPO0FBQ1AsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7QUFDdkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEM7QUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDM0QsUUFBUSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsT0FBTztBQUNQLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFO0FBQ3hDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxF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QUFJLFlBQVksSUFBSSxRQUFRLEVBQUU7QUFDeEQsVUFBVSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsVUFBVSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQzVCLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUU7QUFDdkMsVUFBVSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLFVBQVUsVUFBVSxHQUFHLElBQUksQ0FBQztBQUM1QixTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUM1QixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RELEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNILEVBQUUsV0FBVyxFQUFFLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUM3QyxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUMsR0FBRztBQUNILEVBQUUsVUFBVSxFQUFFLFNBQVMsVUFBVSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDckQsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEI7QUFDQSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtBQUMxQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckIsS0FBSyxNQUFNLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRTtBQUMvQixNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQixJQUFJLFVBQVUsQ0FB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QU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNsRjtBQUNBLElBQUksSUFBSSxhQUFhLEVBQUU7QUFDdkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRCxLQUFLLE1BQU07QUFDWCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsS0FBSztBQUNMO0FBQ0EsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUN0QixNQUFNLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWTtBQUM3QixNQUFNLEtBQUssRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDO0FBQ3JDLE1BQU0sUUFBUSxFQUFFLFlBQVk7QUFDNUIsTUFBTSxLQUFLLEVBQUUsS0FBSztBQUNsQixLQUFLLENBQUMsQ0FBQztBQUNQLEdBQUc7QUFDSCxDQUFDLEVBQUU7QUFDSCxFQUFFLElBQUksRUFBRSxVQUFVO0FBQ2xCLEVBQUUsS0FBSyxFQUFFLElBQUk7QUFDYixFQUFFLEtBQUssRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxVQUFVO0FBQzdFLEVBQUUsUUFBUSxFQUFFLFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ3ZELElBQUksSUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDMUMsUUFBUSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMxQixRQUFRLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0I7QUFDQSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxT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USxLQUFLLFNBQVMsQ0FBQztBQUNoQyxDQUFDLENBQUM7QUFDRixJQUFJLElBQUksR0FBRyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ3JDLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUNGLElBQUksSUFBSSxHQUFHLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDckMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDM0MsRUFBRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxFQUFFO0FBQzNDLElBQUksT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyQyxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDMUMsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQzFCLEVBQUUsT0FBTyxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFVBQVUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMxQyxFQUFFLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDbEMs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S0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUM3RSxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEMsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQzdDLEVBQUUsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzdFLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4QyxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxVQUFVLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDbkQsRUFBRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzlGLENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZO0FBQy9CLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxLQUFLLEVBQUUsR0FBRyxF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QUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFO0FBQ25DLFNBQVMsQ0FBQztBQUNWLE9BQU8sQ0FBQztBQUNSO0FBQ0EsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNuQyxNQUFNLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxXQUFXLEdBQUcsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN2QyxJ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RyxLQUFLLENBQUM7QUFDdEIsTUFBTSxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLEtBQUssTUFBTSxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO0FBQy9DLE1BQU0sSUFBSSxZQUFZLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDckMsUUFBUSxJQUFJLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUM1RDtBQUNBO0FBQ0EsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlELFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5RCxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlEO0FBQ0EsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3JCLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNyQixRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDckIsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3JCLFFBQVEsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNqRDtBQUNB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O0FBQ2xDLFFBQVEsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzlCLFFBQVEsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2xDLFFBQVEsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEIsUUFBUSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0QixRQUFRLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLFFBQVEsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEI7QUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRTtBQUN2QixVQUFVLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUMzQixVQUFVLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDcEIsVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDO0FBQ3ZCLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO0FBQ3ZCLFVBQVUsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQzNCLFVBQVUsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNwQixVQUFVLEdBQUcsR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDckIsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3JCLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNyQixRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDckIsUUFBUSxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxZQUFZLElBQUksT0FBTyxDQUFDLFlBQVksSUFBSSxNQUFNLEVBQUU7QUFDeEQsTUFBTSxxQkFBcUIsQ0FBQyxN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LElBQUksR0FBRyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRixNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLEdBQUc7QUFDSCxFQUFFLE1BQU0sRUFBRSxTQUFTLE1BQU0sQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFO0FBQzVDLElBQUksSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDO0FBQzNCLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEMsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLEdBQUc7QUFDSCxFQUFFLEdBQUcsRUFBRSxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ3BDLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDeEIsSUFBSSxJQUFJLE1BQU0sQ0FBQztBQUNmLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQyxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FB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b0IsQ0FBQyxNQUFNLEVBQUU7QUFDdEMsRUFBRSxPQUFPLFlBQVk7QUFDckIsSUFBSSxJQUFJLElBQUksR0FBRyxTQUFTLENBQUM7QUFDekIsSUFBSSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDekI7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDM0IsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsTUFBTSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzNDLEtBQUs7QUFDTCxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQy9DLFFBQVEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLE9BQU87QUFDUDtBQUNBLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDekUsVUFBVSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzlEO0FBQ0EsVUFBVSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxZQUFZLElBQUksR0FBRyxHQUFHLElBQUksQ0FB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QUFDLE9BQU8sQ0FBQyxVQUFVLEtBQUssRUFBRTtBQUMxTCxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDLENBQUM7QUFDSDtBQUNBLElBQUksTUFBTSxHQUFHO0FBQ2IsRUFBRSxHQUFHLEVBQUUsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFO0FBQzFCLElBQUksSUFBSSxRQUFRLENBQUM7QUFDakIsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDbEI7QUFDQSxJQUFJLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkMsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDdEI7QUFDQSxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQ25DO0FBQ0EsUUFBUSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2xDLE9BQU8sTUFBTTtBQUNiO0FBQ0EsUUFBUSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDdkI7QUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlDLFVBQVUsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFVBQVUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0MsT0FBTztBQUNQLEtBQUs7QUFDTCxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzFCLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQzFCLFFBQVEsUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsRUFB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Q3hCLFVBQVUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxVQUFVLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsVUFBVSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLFVBQVUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxVQUFVLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsVUFBVSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLFVBQVUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsVUFBVSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxVQUFVLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLE9BQU8sQ0FB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QUMsT0FBTyxDQUFDLENBQUM7QUFDMUMsSUFBSSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDdEIsSUFBSSxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNuQyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixJQUFJLFFBQVEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLElBQUksUUFBUSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDM0IsSUFBSSxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsSUFBSSxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsSUFBSSxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUN6QixJQUFJLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVCLElBQUksUUFBUSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNCLElBQUksUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzVELElBQUksUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzVELElBQUksUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdB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LFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRixNQUFNLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2RCxNQUFNLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2RCxNQUFNLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2RCxNQUFNLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2RCxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUNyQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sVUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0FBQzNCLElBQUksSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFO0FBQ0EsSUFBSSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7QUFDN0I7QUFDQSxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFD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SUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDM0IsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMxQixFQUFFLElBQUksUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDekIsRUFBRSxJQUFJLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNmO0FBQ0EsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUMxQixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2Q7QUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEIsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUMxQixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksU0FBUyxFQUFFO0FBQ3JFLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQztBQUNBLElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLFNBQVMsSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLFNBQVMsRUFBRTtBQUNyRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEIsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEM7QUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLFFBQVEsSUFBSSxTQUFTLENBQUMsRUFBRTtBQUN2RSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEI7QUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLFFBQVEsSUFBSSxTQUFTLENBQUMsRUFBRTtBQUN2RSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEI7QUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxtQkFBbUIsR0FBRyxTQUFTLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUU7QUFDNUU7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2hEO0FBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLElBQUksSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkQsSUFBSSxJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xELElBQUksSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkQsSUFBSSxJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xEO0FBQ0EsSUFBSSxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7QUFDekQsSUFBSSxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7QUFDekQ7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLEtBQUssVUFBVSxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDOUMsTUFBTSxTQUFTO0FBQ2YsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksTUFBTSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbkUsSUFBSSxJQUFJLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQzdFLElBQUksSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLElBQUksSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN6QyxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNwRTtBQUNBLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2pCLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbEMsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNsQyxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNyQixNQUFNLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7QUFDMUIsTUFBTSxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQztBQUMvQixNQUFNLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDO0FBQy9CLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7QUFDMUIsTUFBTSxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQztBQUMvQixNQUFNLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksc0JBQXNCLEdBQUcsU0FBUyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFO0FBQ2xGLEVBQUUsSUFBSSxPQUFPLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRTtBQUM3QixJQUFJLE9BQU87QUFDWCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztBQUN4QjtBQUNBO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdkQsSUFBSSxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLElBQUksSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNoQztBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNqQixNQUFNLElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ2hELE1BQU0sSUFBSSxPQUFPLEdBQUcsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDL0MsS0FBSyxNQUFNO0FBQ1g7QUFDQSxNQUFNLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLE1BQU0sSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQy9FLE1BQU0sSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztBQUNyQyxNQUFNLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7QUFDckMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLE1BQU0sSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7QUFDQSxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUN6QixRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLEVBQUUsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUN4QyxNQUFNLElBQUksRUFBRSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3hDLE1BQU0sSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUMzQztBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsYUFBYSxFQUFFO0FBQzdCLFFBQVEsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLFFBQVEsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDM0IsUUFBUSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztBQUMzQixPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxlQUFlLEdBQUcsU0FBUyxlQUFlLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRTtBQUNwRTtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCO0FBQ0EsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNmO0FBQ0E7QUFDQTtBQUNBLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN2QztBQUNBLEVBQUUsT0FBTyxLQUFLLElBQUksR0FBRyxFQUFFO0FBQ3ZCO0FBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNoQyxJQUFJLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakQsSUFBSSxJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pELElBQUksSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNqQztBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDL0MsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzlCLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEQsUUFBUSxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRjtBQUNBLFFBQVEsU0FBUyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7QUFDbEMsUUFBUSxTQUFTLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztBQUNsQztBQUNBLFFBQVEsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLE9BQU87QUFDUDtBQUNBO0FBQ0EsTUFBTSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFNLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxlQUFlLEdBQUcsU0FBUyxlQUFlLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRTtBQUNwRTtBQUNBO0FBQ0E7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2hELElBQUksSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QztBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7QUFDL0I7QUFDQSxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7QUFDekIsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztBQUN6QixNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBQ3pCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2hELElBQUksSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QztBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtBQUM3QztBQUNBO0FBQ0EsTUFBTSxTQUFTO0FBQ2YsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM3RSxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMvQixJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMvQixJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDbEIsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ25DLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDcEMsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNwQztBQUNBO0FBQ0E7QUFDQSxJQUFJLHdCQUF3QixDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM1QyxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEQsSUFBSSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7QUFDOUMsTUFBTSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUMxQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQzFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUU7QUFDMUQ7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDM0Q7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtBQUNuQixJQUFJLElBQUksR0FBRyxHQUFHO0FBQ2QsTUFB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QUMsQ0FBQyxDQUFDLENBQUM7QUFDbkIsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkQsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkQsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEQsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEQsS0FBSztBQUNMO0FBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RCLElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixHQUFHO0FBQ0g7QUFDQSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3BDLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDWixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztBQUNyRjtBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUMsSUFBSSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUI7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDWixNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CO0FBQ0EsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtBQUN2QixRQUFRLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEMsUUFBUSxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2hDLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUM1QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0I7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLE9BQU8sRUFBRTtBQUN6QixNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0FBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNoQixNQUFNLElBQUksR0FBRyxDQUFDLENBQUM7QUFDZixLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxVQUFVLEdBQUc7QUFDakIsRUFBRSxHQUFHLEVBQUUsSUFBSTtBQUNYO0FBQ0EsRUFBRSxPQUFPLEVBQUUsRUFBRTtBQUNiO0FBQ0EsRUFBRSxXQUFXLEVBQUUsU0FBUztBQUN4QjtBQUNBLEVBQUUsWUFBWSxFQUFFLElBQUk7QUFDcEI7QUFDQSxFQUFFLG1CQUFtQixFQUFFLEVBQUU7QUFDekI7QUFDQSxFQUFFLDJCQUEyQixFQUFFLEtBQUs7QUFDcEM7QUFDQSxFQUFFLGFBQWEsRUFBRSxTQUFTO0FBQzFCO0FBQ0EsRUFBRSxRQUFRLEVBQUUsS0FBSztBQUNqQjtBQUNBLEVBQUUsSUFBSSxFQUFFLFNBQVM7QUFDakI7QUFDQSxFQUFFLElBQUksRUFBRSxTQUFTO0FBQ2pCO0FBQ0EsRUFBRSxRQUFRLEVBQUUsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUU7QUFDdEM7QUFDQSxFQUFFLElBQUksRUFBRSxTQUFTO0FBQ2pCO0FBQ0EsRUFBRSxPQUFPLEVBQUUsS0FBSztBQUNoQjtBQUNBLEVBQUUsaUJBQWlCLEVBQUUsR0FBRztBQUN4QjtBQUNBLEVBQUUsZUFBZSxFQUFFLFNBQVM7QUFDNUI7QUFDQSxFQUFFLGFBQWEsRUFBRSxTQUFTLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQ2pELElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLEVBQUUsU0FBUztBQUNsQjtBQUNBLEVBQUUsSUFBSSxFQUFFLFNBQVM7QUFDakI7QUFDQSxFQUFFLFNBQVMsRUFBRSxTQUFTLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO0FBQ2hELElBQUksT0FBTyxRQUFRLENBQUM7QUFDcEIsR0FBRztBQUNIO0FBQ0EsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxTQUFTLFVBQVUsQ0FBQyxPQUFPLEVBQUU7QUFDN0IsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFDRDtBQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFlBQVk7QUFDdkMsRUFBRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQ3ZCLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUNyQixFQUFFLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDMUIsRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDcEIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHO0FBQ3ZFLElBQUksRUFBRSxFQUFFLENBQUM7QUFDVCxJQUFJLEVBQUUsRUFBRSxDQUFDO0FBQ1QsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRTtBQUNqQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFO0FBQ2xCLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDaEMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxHQUFHLEVBQUU7QUFDL0QsTUFBTSxPQUFPO0FBQ2IsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDaEIsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDaEIsT0FBTyxDQUFDO0FBQ1IsS0FBSyxDQUFDLENBQUM7QUFDUCxHQUFHLE1BQU07QUFDVDtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdCLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDaEQ7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRTtBQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtBQUN2QixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEMsT0FBTyxNQUFNO0FBQ2IsUUFBUSxJQUFJLEdBQUcsR0FBRyxJ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QUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN0RCxJQUFJLElBQUksYUFBYSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQztBQUNyRTtBQUNBLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNqQyxNQUFNLE9BQU87QUFDYixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRCxJQUFJLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRCxJQUFJLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzRCxJQUFJLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUM5RCxJQUFJLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUM5RCxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUM5QjtBQUNBLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDOUIsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDOUI7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LElBQUksRUFBRTtBQUM3QyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQ2xDLEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7QUFDOUMsRUFBRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQztBQUMxQyxFQUFFLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEtBQUssYUFBYSxDQUFDO0FBQ3BELEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7QUFDOUMsRUFBRSxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQztBQUM5QyxFQUFFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDO0FBQ3RDO0FBQ0EsRUFBRSxJQUFJLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDbkIsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQzdDO0FBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLEdBQUcsTUFBTTtBQUNULElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFDNUIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztBQUM1QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0FBQ3hCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztBQUNqQixFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ2pCO0FBQ0E7QUFDQSxFQUFFLElBQUksVUFBVSxFQUFFO0FBQ2xCLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLEdBQUcsTUFBTSxJQUFJLGFBQWEsSUFBSSxVQUFVLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtBQUNoRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEQsSUFBSSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEQsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUN4QixJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLEdBQUcsTUFBTTtBQUNULElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDMUIsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQztBQUMxQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BEO0FBQ0E7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDckIsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3JCO0FBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQy9CLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUM7QUFDL0IsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUN4QixFQUFFLEtBQUssR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ3hCO0FBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEI7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQyxNQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQU0sSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN4QyxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLEtBQUs7QUFDTCxHQUFHLE1BQU0sSUFBSSxhQUFhLElBQUksVUFBVSxJQUFJLE1BQU0sRUFBRTtBQUNwRCxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO0FBQzFCLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ25CLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbkMsTUFBTSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEM7QUFDQSxNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2RCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkUsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzFELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0RSxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQztBQUNBLE1BQU0sSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0QjtBQUNBLE1BQU0sSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0QjtBQUNBLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdEUsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNuRSxLQUFLO0FBQ0w7QUFDQSxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZELEVBQUUsRUFBRSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDdEIsRUFBRSxFQUFFLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN0QjtBQUNBO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDZCxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNkO0FBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEI7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU07QUFDekMsTUFBTSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEMsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0MsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2RDtBQUNBO0FBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRCxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRCxHQUFHLE1BQU0sSUFBSSxhQUFhLElBQUksVUFBVSxJQUFJLE1BQU0sSUFBSSxRQUFRLEVBQUU7QUFDaEUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUN2QixJQUFJLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNoRSxJQUFJLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNoRSxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDdEIsR0FBRyxNQUFNO0FBQ1QsSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN4QixJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEdBQUc7QUFDSDtBQUNBLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxjQUFjLEdBQUcsVUFBVSxTQUFTLEVBQUUsS0FBSyxFQUFFO0FBQ3pFLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztBQUNoRSxFQUFFLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ2xEO0FBQ0EsRUFBRSxJQUFJLFNBQVMsRUFBRTtBQUNqQixJQUFJLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNyRSxFQUFFLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUM5QyxFQUFFLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUNGO0FBQ0EsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2Y7QUFDQSxLQUFLLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxLQUFLLEVBQUU7QUFDNUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDM0IsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO0FBQ3pCO0FBQ0EsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRTtBQUN0QixNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUM5QyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEdBQUc7QUFDbEIsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDMUIsT0FBTyxDQUFDO0FBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sR0FBRztBQUNsQixRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUMxQixRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUMxQixPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ3hCLElBQUksSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2hDLElBQUksSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2hDLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVCLElBQUksSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVCLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN0RCxJQUFJLElBQUksVUFBVSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDaEM7QUFDQSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xOLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEQsSUFBSSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoRDtBQUNBLElBQUksRUFBRSxDQUFDLFFBQVEs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QVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLEdBQUcsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdFEsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUU7QUFDN0U7QUFDQSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQ2xDLEVBQUUsRUFBRSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDM0IsRUFBRSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTTtBQUM5QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTTtBQUM5QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSTtBQUMxQixNQUFNLElB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QyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRTtBQUNBLE1BQU0sSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLEVBQUU7QUFDekIsVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUMxQixNQUFNLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0EsS0FBSyxDQUFDLHlCQUF5QixHQUFHLFVBQVUsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUM1RCxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQ2xDO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO0FBQ2hDLElBQUksSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU07QUFDaEMsUUFBUSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU07QUFDaEMsUUFBUSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7QUFDNUIsUUFBUSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7QUFDNUIsUUFBUSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7QUFDNUIsUUFBUSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7QUFDNUIsUUFBUSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVE7QUFDcEMsUUFBUSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUNyQyxJQUFJLElBQUksUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUQsSUFBSSxJQUFJLFNBQVMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcs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RyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNO0FBQzdDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTTtBQUM3QyxPQUFPLENBQUM7QUFDUixNQUFNLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hHO0FBQ0EsTUFBTSxJQUFJLGFBQWEsRUFBRTtBQUN6QixRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQztBQUM1RSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQztBQUM1RSxPQUFPLE1BQU07QUFDYixRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQzlELFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDOUQsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxNQUFNLElBQUksT0FBTyxJQUFJLFdBQVcsRUFBRTtBQUMxQyxNQUFNLFdBQVcsR0FBRyxJQUFJ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QU0sSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRTtBQUN6SCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ25CLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekM7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN2RDtBQUNBLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZEO0FBQ0EsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7QUFDckMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0csT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDZDtBQUNBLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN6QyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqQyxLQUFLLE1BQU07QUFDWCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRixNQUFNLEVBQUUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BGLEtBQUs7QUFDTCxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRTtBQUN6QztBQUNBLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6RDtBQUNBLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO0FBQ3hFLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO0FBQ3hFLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFO0FBQ3pDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDbkIsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDO0FBQ0EsSUFBSSxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDcEMsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDcEMsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMs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LENBQUMsTUFBTSxFQUFFLENBQUM7QUFDakMsSUFBSSxJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDakM7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRTtBQUMzQyxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNyQixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDbEQsSUFBSSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNsRCxJQUFJLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDakQsSUFBSSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNoRCxJQUFJLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2pEO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdFO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxD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QSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUNuQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUNuQyxNQUFNLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEI7QUFDQSxNQUFNLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtBQUNyRSxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRCxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRCxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkQsUUFBUSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZELE9BQU8sTUFBTTtBQUNiLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25ELFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25ELE9BQU87QUFDUDtBQUNBLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDakIsS0FBSyxNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVM7QUFDaEUsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO0FBQ3pHO0FBQ0EsTUFBTSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDekIsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztBQUMzQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25DLE1BQU0sSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7QUFDakQ7QUFDQSxNQUFNLElBQUksV0FBVyxFQUFFO0FBQ3ZCLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkM7QUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3JELFVBQVUsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUM3QyxVQUFVLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQy9CLFVBQVUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQzVDLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQ3JDO0FBQ0EsTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxVQUFVO0FBQ2xELFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUNsRCxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLFVBQVU7QUFDbEQsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO0FBQ2xELE1BQU0sSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZEO0FBQ0E7QUFDQSxNQUFNLElBQUksTUFBTSxHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDekM7QUFDQSxNQUFNLElBQUkscUJBQXFCLEVBQUU7QUFDakM7QUFDQSxRQUFRLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDL0IsUUFBUSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQy9CO0FBQ0EsUUFBUSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQy9CLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMvQjtBQUNBO0FBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ25DLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUNuQztBQUNBLFFBQVEsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLFFBQVEsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUNuQyxRQUFRLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM1QjtBQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFFBQVEsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFFBQVEsSUFBSSxJQUFJLEdBQUc7QUFDbkIsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUk7QUFDekQsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUk7QUFDekQsU0FBUyxDQUFDO0FBQ1Y7QUFDQSxRQUFRLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRTtBQUN2QyxVQUFVLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO0FBQ3JELFVBQVUsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0MsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyQyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JDO0FB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RSxLQUFLLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQzNHLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQzlILFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQzlILFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQzlILFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8s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QUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDO0FBQ3pCLEVBQUUsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QztBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO0FBQ3pCLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3hCLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGNBQWMsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzVELEVBQUUsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO0FBQ3pCLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3hCLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENB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QUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRSxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUMzRCxJQUFJLElBQUksWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5RSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN4QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0UsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3hCLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ25CLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxjQUFjLEdBQUcsVUFBVSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUN6RCxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQ2xDLEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7QUFDOUM7QUFDQSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7QUFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzNHLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xHLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xHO0FBQ0EsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN2RyxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsYUFBYSxHQUFHLFVBQVUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQzdFLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtBQUN2RixJQUFJLE9BQU87QUFDWCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM5RDtBQUNBLEVBQUUsSUFBSSxVQUFVLEtBQUssTUFBTSxFQUFFO0FBQzdCLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsS0FBSyxLQUFLLFFBQVEsR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xHLEVBQUUsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVELEVBQUUsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDL0MsRUFBRSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqRDtBQUNBLEVBQUUsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQzdCLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQztBQUMxQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztBQUM3QztBQUNBLEVBQUUsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxRQUFRLEVBQUU7QUFDL0M7QUFDQSxJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQztBQUN6RCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25ELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNGLElBQUksT0FBTyxDQUFDLHdCQUF3QixHQUFHLEdBQUcsQ0FBQztBQUMzQyxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3pELEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdEUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEYsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsY0FBYyxHQUFHLFVBQVUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRTtBQUNyRixFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNmLEVBQUUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQztBQUMvRCxFQUFFLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztBQUMzQixFQUFFLElBQUksSUFBSSxDQUFDO0FBQ1gsRUFBRSxJQUFJLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDOUIsRUFBRSxJQUFJLFdBQVcsR0FBRztBQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUNSLEdBQUcsQ0FBQztBQUNKLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDL0MsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsRCxFQUFFLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkM7QUFDQSxFQUFFLElBQUksUUFBUSxFQUFFO0FBQ2hCLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztBQUMxRCxJQUFJLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxJQUFJLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQztBQUNBLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFO0FBQzVCLE1BQU0sSUFBSSxHQUFHLE9BQU8sR0FBRyxVQUFVLENBQUM7QUFDbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzFCLEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxHQUFHLE9BQU8sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO0FBQ3BDLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN4QixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO0FBQ3JCLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO0FBQzNCLE1BQU0sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQzFCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxRQUFRLEVBQUU7QUFDbEI7QUFDQSxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDcEMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNaLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDWixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDWixLQUFLLE1BQU07QUFDWCxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25FLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO0FBQzNCLE1BQU0sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQzFCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sR0FBRyxhQUFhLENBQUM7QUFDMUI7QUFDQSxFQUFFLElBQUksUUFBUSxFQUFFO0FBQ2hCO0FBQ0EsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUIsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO0FBQzVDLElBQUksSUFBSSxRQUFRLEVBQUU7QUFDbEIsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLEtBQUssTUFBTTtBQUNYLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3JCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO0FBQzVDLElBQUksT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsU0FBUyxHQUFHLENBQUMsS0FBSyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNGLElBQUksT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7QUFDL0I7QUFDQSxJQUFJLElBQUksUUFBUSxFQUFFO0FBQ2xCLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixLQUFLLE1BQU07QUFDWCxNQUFNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUN2QixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFFBQVEsRUFBRTtBQUNoQjtBQUNBLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN0QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDZjtBQUNBLEtBQUssQ0FBQyxhQUFhLEdBQUcsVUFBVSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDMUU7QUFDQSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM5QyxJQUFJLE9BQU87QUFDWCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7QUFDN0UsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDZixFQUFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM1QixFQUFFLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEIsRUFBRSxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25DLEVBQUUsSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEUsRUFBRSxJQUFJLEdBQUcsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRSxFQUFFLElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFFLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVCLEVBQUUsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyQyxFQUFFLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLDhCQUE4QixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0FBQzNILEVBQUUsSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsK0JBQStCLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLE9BQU8sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7QUFDNUgsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUNsQyxFQUFFLElBQUksSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RFLEVBQUUsSUFBSSxVQUFVLEdBQUcsSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUNuQyxFQUFFLElBQUksVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUNuRyxFQUFFLElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25GLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDO0FBQ3RDLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDO0FBQ3ZDO0FBQ0EsRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtBQUNwQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DO0FBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUM7QUFDdEQsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUM7QUFDeEQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2Y7QUFDQSxFQUFFLElBQUksZUFBZSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssTUFBTSxFQUFFO0FBQzVFLElBQUksSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDM0UsTUFBTSxDQUFDLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQy9FLEtBQUssTUFBTTtBQUNYLE1BQU0sQ0FBQyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RFLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksZUFBZSxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssTUFBTSxFQUFFO0FBQzdFLElBQUksSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDNUUsTUFBTSxDQUFDLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ2hGLEtBQUssTUFBTTtBQUNYLE1BQU0sQ0FBQyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZFLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzFCLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO0FBQ3pCLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqRCxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDZixJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDZixHQUFHLE1BQU0sSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFO0FBQzlCLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqRCxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDZixJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDZixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsRUFBRSxJQUFJLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqRixFQUFFLElBQUksU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25GO0FBQ0EsRUFBRSxJQUFJLFNBQVMsS0FBSyxHQUFHLEVBQUU7QUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQztBQUNsQyxHQUFHLE1BQU07QUFDVCxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUM7QUFDbkIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvRSxFQUFFLElBQUksU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pGO0FBQ0EsRUFBRSxJQUFJLFNBQVMsS0FBSyxHQUFHLEVBQUU7QUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQztBQUNsQyxHQUFHLE1BQU07QUFDVCxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUM7QUFDbkIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM3QjtBQUNBLEVBQUUsSUFBSSxTQUFTLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDakYsRUFBRSxJQUFJLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuRjtBQUNBLEVBQUUsSUFBSSxTQUFTLEtBQUssR0FBRyxFQUFFO0FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUM7QUFDbEMsR0FBRyxNQUFNO0FBQ1QsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDO0FBQ25CLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxTQUFTLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0UsRUFBRSxJQUFJLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqRjtBQUNBLEVBQUUsSUFBSSxTQUFTLEtBQUssR0FBRyxFQUFFO0FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUM7QUFDbEMsR0FBRyxNQUFNO0FBQ1QsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDO0FBQ25CLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFO0FBQ3BCLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUNmLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUNmLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNkLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNkLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNuQyxFQUFFLE9BQU8sQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO0FBQ25DLEVBQUUsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BELEVBQUUsSUFBSSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7QUFDbEM7QUFDQSxFQUFFLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxnQkFBZ0IsRUFBRTtBQUMzQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLElBQUksbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQy9CLEdBQUcsTUFBTSxJQUFJLE1BQU0sS0FBSyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtBQUNwRCxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JDLElBQUksbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxNQUFNLEtBQUssV0FBVyxFQUFFO0FBQzlCLElBQUksSUFBSSxVQUFVLEVBQUU7QUFDcEIsTUFBTSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDckI7QUFDQSxNQUFNLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRTtBQUN4QixRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLE9BQU8sTUFBTTtBQUNiLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RixRQUFRLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN2QixPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFO0FBQ0EsSUFBSSxJQUFJLFVBQVUsRUFBRTtBQUNwQixNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN4QixLQUFLO0FBQ0wsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0FBQ2hDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNuRixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVCLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ25CLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7QUFDL0I7QUFDQSxFQUFFLElBQUksbUJBQW1CLEVBQUU7QUFDM0IsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2pELEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNmO0FBQ0EsS0FBSyxDQUFDLG9CQUFvQixHQUFHLFVBQVUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUNuRCxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDZCxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMvQixJQUFJLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUN2QyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzlDO0FBQ0EsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0IsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDN0QsRUFBRSxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzNEO0FBQ0EsRUFBRSxJQUFJLFlBQVksR0FBRyxPQUFPLEVBQUU7QUFDOUIsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxLQUFLLENBQUMsZUFBZSxHQUFHLFVBQVUsT0FBTyxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ3BGLEVBQUUsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQy9GLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2Y7QUFDQSxFQUFFLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtBQUNyQixJQUFJLElBQUksYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3ZELE1BQU0sT0FBTztBQUNiLEtBQUs7QUFDTCxHQUFHLE1BQU0sSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFO0FBQzlCLElBQUksT0FBTztBQUNYLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7QUFDcEIsSUFBSSxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDO0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtBQUNoQyxNQUFNLE9BQU87QUFDYixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDO0FBQ3RDLElBQUksT0FBTyxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7QUFDcEMsR0FBRyxNQUFNO0FBQ1QsSUFBSSxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFDMUQ7QUFDQSxJQUFJLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckM7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDOUMsSUFBSSxJQUFJLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzlDO0FBQ0EsSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNuSCxNQUFNLE9BQU87QUFDYixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0FBQ2pDLElBQUksT0FBTyxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7QUFDcEMsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLGFBQWEsR0FBRyxDQUFDLG1CQUFtQixDQUFDO0FBQzNDLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDVDtBQUNBLEVBQUUsSUFBSSxtQkFBbUIsRUFBRTtBQUMzQixJQUFJLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQztBQUM3QixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3RCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDakU7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0FBQ3RCLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDdkUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUN2RSxLQUFLO0FBQ0wsR0FBRyxNQUFNO0FBQ1QsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNuRSxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksbUJBQW1CLEVBQUU7QUFDM0IsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxZQUFZLEdBQUcsVUFBVSxPQUFPLEVBQUU7QUFDeEMsRUFBRSxJQUFJLEtBQUssQ0FBQztBQUNaLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztBQUMxQztBQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ25ELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0I7QUFDQSxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7QUFDbkMsTUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLEdBQUc7QUFDVixJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3BCLEdBQUcsQ0FBQztBQUNKLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUIsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBLEtBQUssQ0FBQyxjQUFjLEdBQUcsVUFBVSxPQUFPLEVBQUUsR0FBRyxFQUFFO0FBQy9DLEVBQUUsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQy9GO0FBQ0EsRUFBRSxJQUFJLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNyRCxFQUFFLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUN6RCxFQUFFLElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ3ZELEVBQUUsSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDdkQsRUFBRSxJQUFJLE9BQU8sR0FBRyxhQUFhLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzlGLEVBQUUsSUFBSSxjQUFjLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDMUUsRUFBRSxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN4QyxFQUFFLElBQUksWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDNUQsRUFBRSxPQUFPLENBQUMsSUFBSSxHQUFHLFVBQVUsR0FBRyxHQUFHLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxTQUFTLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQztBQUN0RixFQUFFLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQzdCO0FBQ0EsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0RSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDcEcsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBLFNBQVMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDN0MsRUFBRSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckYsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDbEIsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUIsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQzVELEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDN0MsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM5RSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDckMsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDOUQsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDNUIsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxD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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekg7QUFDQSxNQUFNLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRTtBQUMzQixRQUFRLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ3RRLFFBQVEsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdILE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7QUFDMUQs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TUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbkMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsS0FBSztBQUNMO0FBQ0EsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsSUFBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsSUFBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRyxJQUFJLElBQUksTUFBTSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEUsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM5QyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRCxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hE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LEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDL0QsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDO0FBQy9ELEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsWUFBWSxDQUFDLENBQUM7QUFDL0QsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQy9ELEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsWUFBWSxDQUFDLENBQUM7QUFDL0QsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQztBQUMvRCxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFDRjtBQUNBLEtBQUssQ0FBQyxjQUFjLEdBQUcsVUFBVSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQy9ELEVBQUUsSUFBSSxTQUFTLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUM1QixFQUFFLElBQUksVUFBVSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDOUIsRUFBRSxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDbEMsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0FBQ2xDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QixRQUFRLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztBQUM3QyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDM0MsWUFBWSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDekMsZ0JBQWdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDaEMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsZ0JBQWdCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDakQsb0JBQW9CLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RSxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFB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LENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdILFlBQVksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSyxDQUFDO0FBQ04sSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckMsUUFBUSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDOUQsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNqRSxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdB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RyxDQUFDLENBQUM7QUFDeEMsUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQzdCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQzlDLFlBQVksU0FBUyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzVDLFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQzFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ2hELFFBQVEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMxRCxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDM0MsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEMsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsU0FBUztBQUNU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LEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SCxLQUFLLENBQUM7QUFDTixJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdEUsUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyRCxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1QyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1QyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsUUFBUSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDL0IsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3BDLFlBQVksSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVB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QUFNLEtBQUssV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQy9MLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM5UCxJQUFJLElBQUksV0FBVyxFQUFFO0FBQ3JCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFH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RSxFQUFFLEVBQUU7QUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBQ0QsU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBQ0QsU0FBUyxVQUFVLENBQUMsQ0FBQyxFQUFFO0FBQ3ZCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3RixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLElBQUksSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzVCLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUk7QUFDM0IsWUFBWSxNQUFNO0FBQ2xCLEtBQUs7QUFDTCxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDZixJQUFJLENBQUMs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LENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsS0FBSztBQUNMLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUNELFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDM0MsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBQzlCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNoQyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDcEMsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvQyxZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUIsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvQyxZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixZQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUIsWUFBWSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztB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QUFVLEdBQUcsV0FBVyxFQUFFO0FBQzFDLEtBQUs7QUFDTCxDQUFDO0FBQ0Qsa0JBQW9CLEdBQUcsWUFBWSxDQUFDO0FBQ3BDLFNBQVMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDdEMsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDbkIsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDbEIsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDcEIsSUFBSSxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDckIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDN0IsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzdCLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUMxQixZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDO0FBQ0EsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEMsUUFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQzFCLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEM7QUFDQSxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQyxLQUFLO0FBQ0wsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixRQUFRLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDN0IsWUFBWSxTQUFTO0FBQ3JCLFFBQVEsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxLQUFLO0FBQ0wsSUFBSSxTQUFTLFlBQVksQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0FBQ3JDLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVM7QUFDeEMsWUFBWSxPQUFPO0FBQ25CLFFBQVEsSUFBSSxNQUFNLEVBQUU7QUFDcEIsWUFBWSxRQUFRLEVBQUUsQ0FBQztBQUN2QixZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN2QyxTQUFTO0FBQ1QsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUNsQyxRQUFRLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxRQUFRLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsUUFBUSxJQUFJLENBQUMsUUFBUTtBQUNyQixZQUFZLE9BQU87QUFDbkIsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsRCxZQUFZLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0MsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFDRCxvQkFBc0IsR0FBRyxjQUFjLENBQUM7Ozs7Ozs7OztBQ3hNeEMsTUFBTSxDQUFDLGNBQWMsVUFBVSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyQjtBQUNJO0FBQ1I7QUFDSTtBQUNRO0FBQ2xCO0FBQzRCO0FBQzNELElBQUksU0FBUyxDQUFDO0FBQ2QsQ0FBQyxVQUFVLFNBQVMsRUFBRTtBQUN0QixJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQ2hELElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDOUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM1QyxDQUFDLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEtBQUssb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFOUQsU0FBUyxPQUFPLENBQUMsQ0FBQyxFQUFFO0FBQ3BCLElBQUksT0FBTyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFDOUUsQ0FBQztBQUNELElBQUksTUFBTSxJQUFJLFlBQVk7QUFDMUIsSUFBSSxTQUFTLE1BQU0sR0FBRztBQUN0QixRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUN6QixRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsUUFBUSxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUNoQyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDbkMsUUFBUSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO0FBQzFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDOUIsUUFBUSxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztBQUNwQyxRQUFRLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFDeEMsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUM5QixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDMUIsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUMvQixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLFFBQVEsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDL0IsUUFBUSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztBQUNwQyxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzdCLFFBQVEsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUM3QyxRQUFRLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztBQUNyQyxRQUFRLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDdEMsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUMxQixRQUFRLElBQUksQ0FBQyxZQUFZLEdBQUc7QUFDNUIsWUFBWSxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWM7QUFDakQsWUFBWSxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWM7QUFDakQsWUFBWSxTQUFTLEVBQUUsTUFBTSxDQUFDLGFBQWE7QUFDM0MsWUFBWSxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLE9BQU8sS0FBSyxDQUFDLFNBQVMsS0FBSyxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUM1RyxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUU7QUFDakQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7QUFDdkIsWUFBWSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUM1QixRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO0FBQ25DLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDaEQsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQ3JDLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDNUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXLEVBQUU7QUFDckUsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQ3hDLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDM0IsWUFBWSxDQUFDO0FBQ2IsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQ3hDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7QUFDM0MsWUFBWSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUNsQyxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3BHLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztBQUMzRCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqQixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BDLFFBQVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDaEMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixZQUFZLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUN6QixnQkFBZ0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssV0FBVyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxXQUFXLEVBQUU7QUFDaEYsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyQyxnQkFBZ0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QyxhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUM1QyxRQUFRLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtBQUN0QixZQUFZLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLFNBQVM7QUFDVCxhQUFhLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFdBQVcsRUFBRTtBQUMxRCxZQUFZLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQzdCLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQzlCLFFBQVEsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDbkMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzdGLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLG1CQUFtQixHQUFHLFlBQVk7QUFDdkQsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDdEMsUUFBUSxPQUFPLENBQUMsRUFBRSxFQUFFO0FBQ3BCLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQzFDLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNoQixZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUNwRSxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLGdCQUFnQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUNqRCxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hELGlCQUFpQixDQUFDLENBQUM7QUFDbkIsZ0JBQWdCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUM1QyxvQkFBb0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDeEMsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUMvQixTQUFTO0FBQ1QsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN4QixRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDM0MsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBUSxJQUFJLENBQUMsQ0FBQztBQUNkLFlBQVksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDekIsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUM3QixRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzFDLFlBQVksSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssV0FBVztBQUNoRCxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDOUIsWUFBWSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUU7QUFDakQsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNqRCxvQkFBb0IsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRO0FBQzdDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLGlCQUFpQixDQUFDLENBQUM7QUFDbkIsYUFBYTtBQUNiLFlBQVksSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFO0FBQ2pELGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDbEQsb0JBQW9CLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUTtBQUM5Qyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNyRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDOUcsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvRyxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUNyRCxRQUFRLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25HLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDYixRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDbEQsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDN0IsWUFBWSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7QUFDdkMsUUFBUSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztBQUNoQyxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUN2RCxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtBQUM3QixZQUFZLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0FBQzVDLFFBQVEsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUNyQyxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsYUFBYSxFQUFFO0FBQ2pFLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO0FBQzdCLFlBQVksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUN2QixRQUFRLElBQUksQ0FBQyx3QkFBd0IsR0FBRztBQUN4QyxZQUFZLElBQUksRUFBRSxJQUFJO0FBQ3RCLFlBQVksZ0JBQWdCLEVBQUUsT0FBTyxhQUFhLEtBQUssUUFBUSxHQUFHLFlBQVksRUFBRSxPQUFPLGFBQWEsQ0FBQyxFQUFFLEdBQUcsYUFBYTtBQUN2SCxTQUFTLENBQUM7QUFDVixRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDMUMsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDN0IsWUFBWSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDL0IsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN4QixRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDaEQsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDN0IsWUFBWSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDckMsUUFBUSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztBQUM5QixRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDbkQsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDN0IsWUFBWSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7QUFDeEMsUUFBUSxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztBQUNqQyxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDekMsUUFBUSxJQUFJLENBQUMsQ0FBQztBQUNkLFlBQVksT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQ3BDLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDN0IsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ3BELFFBQVEsSUFBSSxDQUFDLENBQUM7QUFDZCxZQUFZLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0FBQ3pDLFFBQVEsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUNsQyxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUNyRCxRQUFRLElBQUksQ0FBQyxDQUFDO0FBQ2QsWUFBWSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztBQUMxQyxRQUFRLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFDbkMsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ2pELFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNoQixZQUFZLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztBQUN0QyxTQUFTO0FBQ1QsUUFBUSxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUQsUUFBUSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO0FBQzFDLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUM3QyxRQUFRLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxFQUFFO0FBQ3pELFFBQVEsSUFBSSxDQUFDLENBQUM7QUFDZCxZQUFZLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzRCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDMUMsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDN0IsWUFBWSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDL0IsYUFBYTtBQUNiLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFlBQVksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzdCLGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3pCLG9CQUFvQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNwQztBQUNBLG9CQUFvQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNwQyxhQUFhO0FBQ2IsaUJBQWlCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUM1QixnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDcEMsb0JBQW9CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3pDLG9CQUFvQixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNwRixvQkFBb0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hDLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxPQUFPLElBQUksQ0FBQztBQUN4QixTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUFVLElBQUksRUFBRTtBQUNyRCxRQUFRLE9BQU8sT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFVBQVUsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQzNHLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLGFBQWEsR0FBRyxVQUFVLElBQUksRUFBRSxNQUFNLEVBQUU7QUFDbkQsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUM3QixLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsSUFBSSxFQUFFO0FBQ25ELFFBQVEsT0FBTyxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9FLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsR0FBRyxVQUFVLFdBQVcsRUFBRSxDQUFDLEVBQUU7QUFDMUUsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBUSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUNwQyxRQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLFdBQVcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNFLFFBQVEsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFlBQVksRUFBRSxPQUFPQyxXQUFhLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN6SSxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLFdBQVcsRUFBRSxDQUFDLEVBQUU7QUFDcEUsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBUSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUNwQyxRQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLFdBQVcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNFLFFBQVEsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFlBQVksRUFBRSxPQUFPQSxXQUFhLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNuSSxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRSwrQkFBK0IsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFO0FBQ3ZMLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLFFBQVEsSUFBSSw4QkFBOEIsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLDhCQUE4QixHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQzlGLFFBQVEsSUFBSSwrQkFBK0IsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLCtCQUErQixHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ2hHLFFBQVEsSUFBSSwrQkFBK0IsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLCtCQUErQixHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ2hHLFFBQVEsSUFBSSxrQkFBa0IsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ3RFLFFBQVEsSUFBSSxXQUFXLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDM0QsUUFBUSxJQUFJLFdBQVcsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRTtBQUMzRCxZQUFZLENBQUMsRUFBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sTUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUU7QUFDckosUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckIsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0FBQ3JDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzVDLFlBQVksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDeEIsWUFBWSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUU7QUFDNUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsYUFBYTtBQUNiLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLElBQUksSUFBSSxDQUFDLHFCQUFxQjtBQUN0QyxZQUFZLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ3pDLFFBQVEsSUFBSSxTQUFTLENBQUM7QUFDdEIsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7QUFDbEMsWUFBWSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztBQUM3QyxTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksU0FBUyxHQUFHLENBQUMsSUFBSUMsYUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUM7QUFDekwsWUFBWSxDQUFDLEdBQUdDLE9BQVMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuRixZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzdDLGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxRQUFRO0FBQy9DLG9CQUFvQixDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxRQUFRO0FBQy9DLG9CQUFvQixDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELGFBQWEsQ0FBQyxDQUFDO0FBQ2YsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUM3QyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUNsRCxhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxHQUFHQSxPQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDeEUsWUFBWSxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFO0FBQzlFLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLFlBQVksSUFBSSxhQUFhLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7QUFDekUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQztBQUNsRCxhQUFhLENBQUM7QUFDZCxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzlDLGdCQUFnQixhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckMsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTO0FBQ1Q7QUFDQSxZQUFZLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEUsUUFBUSxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztBQUNyRCxRQUFRLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO0FBQzNDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLENBQUM7QUFDaEcsWUFBWSxjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQ0YsV0FBYSxDQUFDLCtCQUErQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDM0ssU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSUUsT0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RCxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNwQyxZQUFZLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsWUFBWSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDekIsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlDLGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ2xELFFBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakUsUUFBUSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztBQUNyQyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUlILFNBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUM5SSxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFDM0QsUUFBUSxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM5RCxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0IsUUFBUSxJQUFJLEVBQUUsRUFBRTtBQUNoQixZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSUEsU0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUNwSixZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFDM0QsUUFBUSxJQUFJLGtCQUFrQixFQUFFO0FBQ2hDLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzlDLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDOUQsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUMvQyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsWUFBWSxJQUFJLEVBQUUsR0FBR0csT0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzdFLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDcEMsb0JBQW9CLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLGdCQUFnQixPQUFPLENBQUMsQ0FBQztBQUN6QixhQUFhLENBQUMsQ0FBQztBQUNmLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNsRCxTQUFTO0FBQ1QsUUFBUSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzlELFFBQVEsT0FBTyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQUNsRCxLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFVBQVUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDakUsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFO0FBQ3ZELFlBQVksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDdkMsWUFBWSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkgsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BGLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2pELGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEQsYUFBYSxDQUFDLENBQUM7QUFDZixZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNqRCxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVztBQUNuRCxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEgsZ0JBQWdCLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVc7QUFDbkQsb0JBQW9CLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xILGFBQWEsQ0FBQyxDQUFDO0FBQ2YsWUFBWSxJQUFJLE1BQU0sRUFBRTtBQUN4QixpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNsQyxpQkFBaUIsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUMxQixpQkFBaUIsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUM3QixpQkFBaUIsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUNyQyxpQkFBaUIsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUNsRCxpQkFBaUIsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO0FBQzVDLGlCQUFpQixvQkFBb0IsQ0FBQyxJQUFJLENBQUM7QUFDM0MsaUJBQWlCLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkQsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUM3QyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxQyxTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLDZCQUE2QixHQUFHLFVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUU7QUFDM0YsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBUSxJQUFJLFdBQVcsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRTtBQUMzRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtBQUMvRCxZQUFZLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pGLFlBQVksSUFBSSxNQUFNLEdBQUdDLGtCQUFvQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2RixZQUFZQSxrQkFBb0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM1RyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNoRCxnQkFBZ0IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDOUIsb0JBQW9CLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLGlCQUFpQjtBQUNqQixhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFlBQVk7QUFDMUMsUUFBUSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQ3hDLFFBQVEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLFVBQVUsRUFBRTtBQUNoRSxRQUFRLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ3RELFFBQVEsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUlDLElBQU0sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUMvRixZQUFZLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM1RCxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ1osS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFO0FBQzNELFFBQVEsSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDdEMsUUFBUSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDMUIsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJQSxJQUFNLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZVLFFBQVEsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqRixRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFO0FBQ3pDLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLFNBQVM7QUFDVCxRQUFRLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxJQUFJSCxhQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxZ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WUFBWSxDQUFDLENBQUM7QUFDbkQsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRixRQUFRLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRixRQUFRLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEUsUUFBUSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzNHLGFBQWEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFD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QUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlDLEtBQUssQ0FBQztBQUNOLElBQUksVUFBVSxDQUFDLFlBQVksR0FBRyxVQUFVLElBQUksRUFBRTtBQUM5QyxRQUFRLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRTtBQUM5QixZQUFZLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RDLFNBQVM7QUFDVCxRQUFRLElBQUksVUFBVSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ2hJLFFBQVEsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQzFCLFFBQVEsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUMsWUFBWSxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyRixZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENB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dEIsRUFBRSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQzFCLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLEVBQUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLEVBQUUsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3BCO0FBQ0EsRUFBRSxJQUFJLFFBQVEsR0FBRyxTQUFTLFFBQVEsQ0FBQyxHQUFHLEVBQUU7QUFDeEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMxQixHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMzQztBQUNBLEVBQUUsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNuRDtBQUNBLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUNsRixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUU7QUFDM0IsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0gsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekIsR0FBRztBQUNILEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRTtBQUMz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SztBQUNMLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUU7QUFDdkQsTUFBTSxNQUFNLCtCQUErQixDQUFDO0FBQzVDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDM0YsTUFBTSxNQUFNLDhDQUE4QyxDQUFDO0FBQzNELEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRTtBQUNyRixNQUFNLE1BQU0sa0RBQWtELENBQUM7QUFDL0QsS0FBSztBQUNMLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLLENB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QUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ25HLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRTtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUNuRyxHQUFHO0FBQ0gsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRTtBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDckcsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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LENBQUMsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2YsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEQ7QUFDQSxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtBQUNqQixJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQy9ELElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQzlELElBQUksT0FBTyxDQUFDLEdBQUcsTUFBTSxJQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzlELEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFD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QyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsTUFBTSxFQUFFO0FBQ25ELEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxZQUFZO0FBQzVDLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZO0FBQzdDLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUMvQyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDN0IsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDOUIsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDN0IsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDOUIsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQzlDLEVBQUUsT0FBTyxJQUFJLENB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T0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNqRSxRQUFRLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxRSxVQUFVLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RELFlBQVksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQztBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxLQUFLLElBQUksS0FBSyxFQUFFO0FBQ3hFLGNBQWMsU0FBUztBQUN2QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsWUFBWSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN6RSxjQUFjLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hJLGNBQWMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMs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QUd0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDMUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFDRDtBQUNBLFNBQVMsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckQ7QUFDQSxLQUFLLElBQUksVUFBVSxJQUFJLEtBQUssRUFBRTtBQUM5QixJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsSUFBSSxFQUFFO0FBQ2xELElBQUksT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxTQUFTLEVBQUU7QUFDM0QsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEQsSUFBSSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEQsSUFBSSxJQUFJLGNBQWMsR0FBRyxT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QUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFDRjtBQUNBRCxPQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsRUFBRTtBQUMxQyxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsQixFQUFFLElBQUlDLFVBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRTtBQUM3QixJQUFJLElBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3pFLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQzFCLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLE1BQU1BLFVBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEtBQUssRUFBRTtBQUMvQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUIsT0FBTyxDQUFDLENBQUM7QUFDVCxNQUFNLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixLQUFLO0FBQ0wsSUFBSUEsVUFBQyxDQUFDLElBQUksQ0FBQ0EsVUFBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDNUMsSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMs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O0FBQ1QsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRTtBQUNqQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFO0FBQ2xCLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFO0FBQzNCLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFO0FBQzNCLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQ25DLElBQUksVUFBVSxFQUFFLElBQUk7QUFDcEIsSUFBSSxRQUFRLEVBQUUsSUFBSTtBQUNsQixHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hCO0FBQ0EsRUFBRSxJQUFJLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO0FBQzVDLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFF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SUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztBQUN4QyxNQUFNLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFNLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFNLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFNLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDeEMsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUN4QyxHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFlBQVksR0FBRyxTQUFTLFlBQVksQ0FBQyxDQUFDLEVBQUU7QUFDOUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7QUFDN0IsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN0RSxNQUFNLElBQUksSUFBSSxHQUFH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QUNSO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUM7QUFDNUM7QUFDQTtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3RCLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDakUsSUFBSSxJQUFJLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNsRSxJQUFJLElBQUksTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQzlGLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3pHO0FBQ0E7QUFDQSxFQUFFLEdBQUc7QUFDTCxJQUFJLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0UsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNqRSxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2xFLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtBQUM3RSxFQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNsRCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUU7QUFDdEIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNO0FBQzNCLE1BQU0sQ0FBQztBQUNQLE1BQU0sQ0FBQztBQUNQLE1BQU0sRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN2QixNQUFNLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkIsTUFBTSxFQUFFLEdBQUcsUUFBUTtBQUNuQixNQUFNLEVBQUUsR0FBRyxRQUFRO0FBQ25CLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUTtBQUNwQixNQUFNLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUNyQjtBQUNBO0FBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUMxQixJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUztBQUNuRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQztBQUN0QztBQUNBO0FBQ0EsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25DO0FBQ0E7QUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzFCLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzFCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2xEO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRztBQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNqQixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxHQUFHO0FBQ0g7QUFDQTtBQUNBLE9BQU87QUFDUCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztBQUN4QixRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSztBQUN6QixRQUFRLE1BQU07QUFDZCxRQUFRLENBQUMsQ0FBQztBQUNWO0FBQ0EsSUFBSSxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7QUFDbkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckUsTUFBTSxRQUFRLENBQUM7QUFDZixRQUFRLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNoRCxRQUFRLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNoRCxRQUFRLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNoRCxRQUFRLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNoRCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENB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LE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDeEMsT0FBTztBQUNQLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDckMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUNyQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUM7QUFDckIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUU7QUFDMUI7QUFDQTtBQUNBLElBQUksSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3hCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzNCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzNCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzNCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUztBQUN0QztBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsTUFBTSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztBQUM1QixVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsTUFBTSxLQUFLLENBQUMsSUFBSTtBQUNoQixRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDekMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFF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LEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztBQUNwQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNmLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRTtBQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN6RCxHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUU7QUFDOUIsRUFBRSxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDOUQsRUFBRSxJQUFJLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUMxQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzdGLE1BQU0sSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkUsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RSxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRDtBQUNBLFNBQVMsZUFBZSxDQUFDLFFBQVEsRUFBRTtBQUNuQyxFQUFFLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvQixFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0YsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUU7QUFDMUIsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RCLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3JCLE1BQU0sSUFBSSxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEcsTUFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RSxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMs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RSxJQUFJLEVBQUUsV0FBVztBQUNuQixJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM5QixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDNUMsSUFBSSxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDN0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFILElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDL0UsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekYsR0FBRztBQUNILEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDcEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMvRSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdGLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDekIsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNsRCxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDckMsTUFBTSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDckIsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUNuQyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDL0MsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENB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QUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUUsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUU7QUFDeEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzNELE1BQU0sS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDcEUsUUFBUSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3BFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFFLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLFFBQVEsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLFFBQVEsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLFFBQVEsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQyxRQUFRLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxVQUFVLEdBQUc7QUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU87QUFDdkI7QUFDQSxJQUFJLElBQUksQ0FBQztBQUNULFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQ3hCLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQ3hCLFFBQVEsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRSxRQUFRLElBQUksQ0FBQztBQUNiO0FBQ0EsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDbEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckYsTUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyRixNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRSxLQUFLO0FBQ0w7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNqRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEgsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztBQUNuRCxJQUFJLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0FBQ25ELEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxrQkFBa0IsR0FBRztBQUNoQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTztBQUN2QjtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNsRCxNQUFNLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25ELEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLFNBQVMsa0JBQWtCLEdBQUc7QUFDaEMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU87QUFDdkI7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDbEQsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuRCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsTUFBTSxFQUFFLE9BQU8sRUFBRTtBQUMvQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7QUFDbkIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBQ3JCLElBQUksVUFBVSxFQUFFLENBQUM7QUFDakIsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEVBQUU7QUFDNUIsSUFBSSxPQUFPLFNBQVMsQ0FBQyxNQUFNLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLElBQUksS0FBSyxDQUFDO0FBQ3ZFLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFO0FBQ3pCLElBQUksT0FBTyxTQUFTLENBQUMsTUFBTSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUNuRCxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsRUFBRTtBQUNqQyxJQUFJLE9BQU8sU0FBUyxDQUFDLE1BQU0sSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLFVBQVUsQ0FBQztBQUNwRSxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsS0FBSyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsRUFBRTtBQUMvQixJQUFJLE9BQU8sU0FBUyxDQUFDLE1BQU0sSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEtBQUssSUFBSSxRQUFRLENBQUM7QUFDOUgsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLEtBQUssQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLEVBQUU7QUFDL0IsSUFBSSxPQUFPLFNBQVMsQ0FBQyxNQUFNLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxLQUFLLElBQUksUUFBUSxDQUFDO0FBQzlILEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFDRDtBQUNBO0FBQ0EsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQ2xCLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUNyQixNQUFNLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDckI7QUFDQSxTQUFTLEdBQUcsR0FBRztBQUNmLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osRUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFDRDtBQUNBLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUNoQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNiLENBQUM7QUFDRDtBQUNBLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUNoQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNiLENBQUM7QUFDRDtBQUNBLElBQUksYUFBYSxHQUFHLEVBQUU7QUFDdEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hEO0FBQ0EsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0FBQzNCLEVBQUUsSUFBSSxVQUFVO0FBQ2hCLE1BQU0sS0FBSyxHQUFHLENBQUM7QUFDZixNQUFNLFFBQVEsR0FBRyxLQUFLO0FBQ3RCLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ2xELE1BQU0sV0FBVyxHQUFHLENBQUM7QUFDckIsTUFBTSxhQUFhLEdBQUcsR0FBRztBQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRTtBQUN4QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUNuQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7QUFDaEQsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDckI7QUFDQSxFQUFFLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2hDO0FBQ0EsRUFBRSxTQUFTLElBQUksR0FBRztBQUNsQixJQUFJLElBQUksRUFBRSxDQUFDO0FBQ1gsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuQyxJQUFJLElBQUksS0FBSyxHQUFHLFFBQVEsRUFBRTtBQUMxQixNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNyQixNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3BDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLFNBQVMsSUFBSSxDQUFDLFVBQVUsRUFBRTtBQUM1QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztBQUNsQztBQUNBLElBQUksSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDakQ7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDekMsTUFBTSxLQUFLLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxJQUFJLFVBQVUsQ0FBQztBQUNsRDtBQUNBLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssRUFBRTtBQUNyQyxRQUFRLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQixPQUFPLENBQUMsQ0FBQztBQUNUO0FBQ0EsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUM5QixRQUFRLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsUUFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQUM7QUFDaEUsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsUUFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQUM7QUFDaEUsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxVQUFVLENBQUM7QUFDdEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLGVBQWUsR0FBRztBQUM3QixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3hELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUN0QyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzVDLE1BQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMxQyxRQUFRLElBQUksTUFBTSxHQUFHLGFBQWEs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LEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUUsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLFVBQVUsR0FBRztBQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTztBQUN2QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztBQUNsQyxJQUFJLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9GLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFO0FBQzVCLElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3RDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDdEQsVUFBVSxRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkUsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMxQixNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMxQixLQUFLO0FBQ0w7QUFDQTtBQUNBLFNBQVM7QUFDVCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDZixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLE1BQU0sR0FBRyxRQUFRLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0MsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRTtBQUN6QixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO0FBQzFCLEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0FBQ2xDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDakM7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDM0IsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMzQixRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNuQixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUM1QixNQUFNLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRTtBQUM1QixRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BELFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsUUFBUSxJQUFJLENBQUMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlELFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLE9BQU87QUFDUCxNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLFlBQVksRUFBRSxPQUFPO0FBQ3REO0FBQ0E7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtBQUN6QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sSUFB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